ZGlmZiAtLWdpdCBhLy5jbGFzc3BhdGggYi8uY2xhc3NwYXRoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2NjU3MTMKLS0tIC9kZXYvbnVsbAorKysgYi8uY2xhc3NwYXRoCkBAIC0wLDAgKzEsMzMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorIC0tPgorPGNsYXNzcGF0aD4KKwk8Y2xhc3NwYXRoZW50cnkga2luZD0ic3JjIiBwYXRoPSJXZWJDb250ZW50L1dFQi1JTkYiLz4KKwk8Y2xhc3NwYXRoZW50cnkga2luZD0ic3JjIiBwYXRoPSJzcmMiLz4KKwk8Y2xhc3NwYXRoZW50cnkga2luZD0ic3JjIiBwYXRoPSJXZWJDb250ZW50L29wZW5tZWV0aW5ncy9XRUItSU5GL2NsYXNzZXMiLz4KKwk8Y2xhc3NwYXRoZW50cnkgZXhwb3J0ZWQ9InRydWUiIGtpbmQ9ImNvbiIgcGF0aD0ib3JnLmVjbGlwc2UuanN0LmoyZWUuaW50ZXJuYWwubW9kdWxlLmNvbnRhaW5lciIvPgorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJjb24iIHBhdGg9Im9yZy5lY2xpcHNlLmpkdC5qdW5pdC5KVU5JVF9DT05UQUlORVIvNCI+CisJCTxhdHRyaWJ1dGVzPgorCQkJPGF0dHJpYnV0ZSBuYW1lPSJvcmcuZWNsaXBzZS5qc3QuY29tcG9uZW50Lm5vbmRlcGVuZGVuY3kiIHZhbHVlPSIiLz4KKwkJPC9hdHRyaWJ1dGVzPgorCTwvY2xhc3NwYXRoZW50cnk+CisJPGNsYXNzcGF0aGVudHJ5IGV4cG9ydGVkPSJ0cnVlIiBraW5kPSJjb24iIHBhdGg9Im9yZy5lY2xpcHNlLmpkdC5sYXVuY2hpbmcuSlJFX0NPTlRBSU5FUiIvPgorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJjb24iIHBhdGg9Im9yZy5hcGFjaGUuaXZ5ZGUuZWNsaXBzZS5jcGNvbnRhaW5lci5JVllERV9DT05UQUlORVIvP3Byb2plY3Q9T3Blbm1lZXRpbmdzKzIuMSZhbXA7aXZ5WG1sUGF0aD1pdnkueG1sJmFtcDtjb25mcz0qJmFtcDtpdnlTZXR0aW5nc1BhdGg9JTI0JTdCd29ya3NwYWNlX2xvYyUzQU9wZW5tZWV0aW5ncysyLjElMkZpdnlzZXR0aW5ncy54bWwlN0QmYW1wO2xvYWRTZXR0aW5nc09uRGVtYW5kPWZhbHNlJmFtcDtwcm9wZXJ0eUZpbGVzPSIvPgorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJjb24iIHBhdGg9Im9yZy5hcGFjaGUuaXZ5ZGUuZWNsaXBzZS5jcGNvbnRhaW5lci5JVllERV9DT05UQUlORVIvP3Byb2plY3Q9T3Blbm1lZXRpbmdzKzIuMSZhbXA7aXZ5WG1sUGF0aD1idWlsZCUyRnJlZDUlMkZzZXJ2ZXIlMkZpdnkueG1sJmFtcDtjb25mcz1kZWZhdWx0JTJDamF2YTYmYW1wO2l2eVNldHRpbmdzUGF0aD0lMjQlN0J3b3Jrc3BhY2VfbG9jJTNBT3Blbm1lZXRpbmdzKzIuMSUyRmJ1aWxkJTJGcmVkNSUyRnNlcnZlciUyRml2eXNldHRpbmdzLnhtbCU3RCZhbXA7bG9hZFNldHRpbmdzT25EZW1hbmQ9ZmFsc2UmYW1wO3Byb3BlcnR5RmlsZXM9Ii8+CisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iYnVpbGQvcmVkNS9zZXJ2ZXIvZGlzdC9yZWQ1LmphciIgc291cmNlcGF0aD0iYnVpbGQvcmVkNS9zZXJ2ZXIvc3JjIi8+CisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImxpYiIgcGF0aD0iYnVpbGQvcmVkNS9jbGllbnQvZGlzdC9yZWQ1LWNsaWVudC5qYXIiIHNvdXJjZXBhdGg9ImJ1aWxkL3JlZDUvY2xpZW50L3NyYyIvPgorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJsaWIiIHBhdGg9ImJ1aWxkL2xpYi9qYXZhXzE2X3Rvb2xzLmphciIvPgorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJsaWIiIHBhdGg9IldlYkNvbnRlbnQvc2NyZWVuc2hhcmluZyIvPgorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJvdXRwdXQiIHBhdGg9ImJ1aWxkL2NsYXNzZXMvZWNsaXBzZSIvPgorPC9jbGFzc3BhdGg+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvLnByb2plY3QgYi8ucHJvamVjdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYmI4ZGJhCi0tLSAvZGV2L251bGwKKysrIGIvLnByb2plY3QKQEAgLTAsMCArMSwxMzMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorIC0tPgorPHByb2plY3REZXNjcmlwdGlvbj4KKwk8bmFtZT5PcGVubWVldGluZ3MgMi4xPC9uYW1lPgorCTxjb21tZW50PjwvY29tbWVudD4KKwk8cHJvamVjdHM+CisJPC9wcm9qZWN0cz4KKwk8YnVpbGRTcGVjPgorCQk8YnVpbGRDb21tYW5kPgorCQkJPG5hbWU+b3JnLmVjbGlwc2Uud3N0LmpzZHQuY29yZS5qYXZhc2NyaXB0VmFsaWRhdG9yPC9uYW1lPgorCQkJPGFyZ3VtZW50cz4KKwkJCTwvYXJndW1lbnRzPgorCQk8L2J1aWxkQ29tbWFuZD4KKwkJPGJ1aWxkQ29tbWFuZD4KKwkJCTxuYW1lPm9yZy5lY2xpcHNlLmpkdC5jb3JlLmphdmFidWlsZGVyPC9uYW1lPgorCQkJPGFyZ3VtZW50cz4KKwkJCTwvYXJndW1lbnRzPgorCQk8L2J1aWxkQ29tbWFuZD4KKwkJPGJ1aWxkQ29tbWFuZD4KKwkJCTxuYW1lPm9yZy5lY2xpcHNlLndzdC5jb21tb24ucHJvamVjdC5mYWNldC5jb3JlLmJ1aWxkZXI8L25hbWU+CisJCQk8YXJndW1lbnRzPgorCQkJPC9hcmd1bWVudHM+CisJCTwvYnVpbGRDb21tYW5kPgorCQk8YnVpbGRDb21tYW5kPgorCQkJPG5hbWU+b3JnLmVjbGlwc2Uud3N0LnZhbGlkYXRpb24udmFsaWRhdGlvbmJ1aWxkZXI8L25hbWU+CisJCQk8YXJndW1lbnRzPgorCQkJPC9hcmd1bWVudHM+CisJCTwvYnVpbGRDb21tYW5kPgorCQk8YnVpbGRDb21tYW5kPgorCQkJPG5hbWU+b3JnLnNwcmluZ2ZyYW1ld29yay5pZGUuZWNsaXBzZS5jb3JlLnNwcmluZ2J1aWxkZXI8L25hbWU+CisJCQk8YXJndW1lbnRzPgorCQkJPC9hcmd1bWVudHM+CisJCTwvYnVpbGRDb21tYW5kPgorCQk8YnVpbGRDb21tYW5kPgorCQkJPG5hbWU+b3JnLnplcm90dXJuYXJvdW5kLmVjbGlwc2UucmVtb3RpbmcucmVtb3RpbmdCdWlsZGVyPC9uYW1lPgorCQkJPGFyZ3VtZW50cz4KKwkJCTwvYXJndW1lbnRzPgorCQk8L2J1aWxkQ29tbWFuZD4KKwkJPGJ1aWxkQ29tbWFuZD4KKwkJCTxuYW1lPm9yZy56ZXJvdHVybmFyb3VuZC5lY2xpcHNlLnJlYmVsWG1sQnVpbGRlcjwvbmFtZT4KKwkJCTxhcmd1bWVudHM+CisJCQk8L2FyZ3VtZW50cz4KKwkJPC9idWlsZENvbW1hbmQ+CisJPC9idWlsZFNwZWM+CisJPG5hdHVyZXM+CisJCTxuYXR1cmU+b3JnLnNwcmluZ2ZyYW1ld29yay5pZGUuZWNsaXBzZS5jb3JlLnNwcmluZ25hdHVyZTwvbmF0dXJlPgorCQk8bmF0dXJlPm9yZy5lY2xpcHNlLmplbS53b3JrYmVuY2guSmF2YUVNRk5hdHVyZTwvbmF0dXJlPgorCQk8bmF0dXJlPm9yZy5lY2xpcHNlLndzdC5jb21tb24ubW9kdWxlY29yZS5Nb2R1bGVDb3JlTmF0dXJlPC9uYXR1cmU+CisJCTxuYXR1cmU+b3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5wcm9qZWN0LmZhY2V0LmNvcmUubmF0dXJlPC9uYXR1cmU+CisJCTxuYXR1cmU+b3JnLmVjbGlwc2UuamR0LmNvcmUuamF2YW5hdHVyZTwvbmF0dXJlPgorCQk8bmF0dXJlPm9yZy5lY2xpcHNlLndzdC5qc2R0LmNvcmUuanNOYXR1cmU8L25hdHVyZT4KKwkJPG5hdHVyZT5vcmcuYXBhY2hlLml2eWRlLmVjbGlwc2UuaXZ5bmF0dXJlPC9uYXR1cmU+CisJCTxuYXR1cmU+b3JnLnplcm90dXJuYXJvdW5kLmVjbGlwc2UucmVtb3RpbmcucmVtb3RpbmdOYXR1cmU8L25hdHVyZT4KKwkJPG5hdHVyZT5vcmcuemVyb3R1cm5hcm91bmQuZWNsaXBzZS5qcmViZWxOYXR1cmU8L25hdHVyZT4KKwk8L25hdHVyZXM+CisJPGZpbHRlcmVkUmVzb3VyY2VzPgorCQk8ZmlsdGVyPgorCQkJPGlkPjEzNjEwODkxNjkwMDI8L2lkPgorCQkJPG5hbWU+PC9uYW1lPgorCQkJPHR5cGU+MjY8L3R5cGU+CisJCQk8bWF0Y2hlcj4KKwkJCQk8aWQ+b3JnLmVjbGlwc2UudWkuaWRlLm11bHRpRmlsdGVyPC9pZD4KKwkJCQk8YXJndW1lbnRzPjEuMC1uYW1lLW1hdGNoZXMtZmFsc2UtZmFsc2UtLnN2bjwvYXJndW1lbnRzPgorCQkJPC9tYXRjaGVyPgorCQk8L2ZpbHRlcj4KKwkJPGZpbHRlcj4KKwkJCTxpZD4xMzYxMDg5MTY5MDA1PC9pZD4KKwkJCTxuYW1lPjwvbmFtZT4KKwkJCTx0eXBlPjEwPC90eXBlPgorCQkJPG1hdGNoZXI+CisJCQkJPGlkPm9yZy5lY2xpcHNlLnVpLmlkZS5tdWx0aUZpbHRlcjwvaWQ+CisJCQkJPGFyZ3VtZW50cz4xLjAtcHJvamVjdFJlbGF0aXZlUGF0aC1tYXRjaGVzLWZhbHNlLWZhbHNlLWRpc3Q8L2FyZ3VtZW50cz4KKwkJCTwvbWF0Y2hlcj4KKwkJPC9maWx0ZXI+CisJCTxmaWx0ZXI+CisJCQk8aWQ+MTM2MTA4OTE2OTAwODwvaWQ+CisJCQk8bmFtZT48L25hbWU+CisJCQk8dHlwZT4yNjwvdHlwZT4KKwkJCTxtYXRjaGVyPgorCQkJCTxpZD5vcmcuZWNsaXBzZS51aS5pZGUubXVsdGlGaWx0ZXI8L2lkPgorCQkJCTxhcmd1bWVudHM+MS4wLXByb2plY3RSZWxhdGl2ZVBhdGgtbWF0Y2hlcy1mYWxzZS1mYWxzZS1idWlsZC9jbGFzc2VzL29wZW5tZWV0aW5nczwvYXJndW1lbnRzPgorCQkJPC9tYXRjaGVyPgorCQk8L2ZpbHRlcj4KKwkJPGZpbHRlcj4KKwkJCTxpZD4xMzYxMDg5MTY5MDEwPC9pZD4KKwkJCTxuYW1lPjwvbmFtZT4KKwkJCTx0eXBlPjI2PC90eXBlPgorCQkJPG1hdGNoZXI+CisJCQkJPGlkPm9yZy5lY2xpcHNlLnVpLmlkZS5tdWx0aUZpbHRlcjwvaWQ+CisJCQkJPGFyZ3VtZW50cz4xLjAtcHJvamVjdFJlbGF0aXZlUGF0aC1tYXRjaGVzLWZhbHNlLWZhbHNlLWJ1aWxkL29wZW5sYXN6bG8qPC9hcmd1bWVudHM+CisJCQk8L21hdGNoZXI+CisJCTwvZmlsdGVyPgorCQk8ZmlsdGVyPgorCQkJPGlkPjEzNjEwODkxNjkwMTM8L2lkPgorCQkJPG5hbWU+PC9uYW1lPgorCQkJPHR5cGU+MzA8L3R5cGU+CisJCQk8bWF0Y2hlcj4KKwkJCQk8aWQ+b3JnLmVjbGlwc2UudWkuaWRlLm11bHRpRmlsdGVyPC9pZD4KKwkJCQk8YXJndW1lbnRzPjEuMC1wcm9qZWN0UmVsYXRpdmVQYXRoLW1hdGNoZXMtZmFsc2UtZmFsc2UtYnVpbGQvcmVkNS9zZXJ2ZXIvYmluPC9hcmd1bWVudHM+CisJCQk8L21hdGNoZXI+CisJCTwvZmlsdGVyPgorCQk8ZmlsdGVyPgorCQkJPGlkPjEzNjEwODkxNjkwMjQ8L2lkPgorCQkJPG5hbWU+PC9uYW1lPgorCQkJPHR5cGU+MzA8L3R5cGU+CisJCQk8bWF0Y2hlcj4KKwkJCQk8aWQ+b3JnLmVjbGlwc2UudWkuaWRlLm11bHRpRmlsdGVyPC9pZD4KKwkJCQk8YXJndW1lbnRzPjEuMC1wcm9qZWN0UmVsYXRpdmVQYXRoLW1hdGNoZXMtZmFsc2UtZmFsc2UtYnVpbGQvcmVkNS9jbGllbnQvYmluPC9hcmd1bWVudHM+CisJCQk8L21hdGNoZXI+CisJCTwvZmlsdGVyPgorCQk8ZmlsdGVyPgorCQkJPGlkPjEzNjEwODkxNjkwMjc8L2lkPgorCQkJPG5hbWU+PC9uYW1lPgorCQkJPHR5cGU+NjwvdHlwZT4KKwkJCTxtYXRjaGVyPgorCQkJCTxpZD5vcmcuZWNsaXBzZS51aS5pZGUubXVsdGlGaWx0ZXI8L2lkPgorCQkJCTxhcmd1bWVudHM+MS4wLW5hbWUtbWF0Y2hlcy1mYWxzZS1mYWxzZS0uYW50LXRhcmdldHMtYnVpbGQueG1sPC9hcmd1bWVudHM+CisJCQk8L21hdGNoZXI+CisJCTwvZmlsdGVyPgorCTwvZmlsdGVyZWRSZXNvdXJjZXM+Cis8L3Byb2plY3REZXNjcmlwdGlvbj4KZGlmZiAtLWdpdCBhLy5zZXR0aW5ncy8uanNkdHNjb3BlIGIvLnNldHRpbmdzLy5qc2R0c2NvcGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQwZGQ5OAotLS0gL2Rldi9udWxsCisrKyBiLy5zZXR0aW5ncy8uanNkdHNjb3BlCkBAIC0wLDAgKzEsMTEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPGNsYXNzcGF0aD4NCisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImNvbiIgcGF0aD0ib3JnLmVjbGlwc2Uud3N0LmpzZHQubGF1bmNoaW5nLkpSRV9DT05UQUlORVIiLz4NCisJPGNsYXNzcGF0aGVudHJ5IGtpbmQ9ImNvbiIgcGF0aD0ib3JnLmVjbGlwc2Uud3N0LmpzZHQubGF1bmNoaW5nLldlYlByb2plY3QiPg0KKwkJPGF0dHJpYnV0ZXM+DQorCQkJPGF0dHJpYnV0ZSBuYW1lPSJoaWRlIiB2YWx1ZT0idHJ1ZSIvPg0KKwkJPC9hdHRyaWJ1dGVzPg0KKwk8L2NsYXNzcGF0aGVudHJ5Pg0KKwk8Y2xhc3NwYXRoZW50cnkga2luZD0iY29uIiBwYXRoPSJvcmcuZWNsaXBzZS53c3QuanNkdC5sYXVuY2hpbmcuYmFzZUJyb3dzZXJMaWJyYXJ5Ii8+DQorCTxjbGFzc3BhdGhlbnRyeSBraW5kPSJvdXRwdXQiIHBhdGg9IiIvPg0KKzwvY2xhc3NwYXRoPg0KZGlmZiAtLWdpdCBhLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5wcmVmcyBiLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5jb3JlLnJlc291cmNlcy5wcmVmcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMDAxYmJiCi0tLSAvZGV2L251bGwKKysrIGIvLnNldHRpbmdzL29yZy5lY2xpcHNlLmNvcmUucmVzb3VyY2VzLnByZWZzCkBAIC0wLDAgKzEsMTQgQEAKKyMgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisjICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyMgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisjDQorIyAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisjDQorIyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisjICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisjICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorIyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisjICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorZWNsaXBzZS5wcmVmZXJlbmNlcy52ZXJzaW9uPTENCitlbmNvZGluZy8vV2ViQ29udGVudC9vcGVubWVldGluZ3MvV0VCLUlORi9jbGFzc2VzL3JlYmVsLXJlbW90ZS54bWw9VVRGLTgNCitlbmNvZGluZy8vV2ViQ29udGVudC9vcGVubWVldGluZ3MvV0VCLUlORi9jbGFzc2VzL3JlYmVsLnhtbD1VVEYtOA0KZGlmZiAtLWdpdCBhLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5wcmVmcyBiLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQuY29yZS5wcmVmcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mM2EyZmI4Ci0tLSAvZGV2L251bGwKKysrIGIvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC5jb3JlLnByZWZzCkBAIC0wLDAgKzEsMTIgQEAKKyNTdW4gTm92IDA2IDEyOjExOjI3IENFVCAyMDExDQorZWNsaXBzZS5wcmVmZXJlbmNlcy52ZXJzaW9uPTENCitvcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb2RlZ2VuLmlubGluZUpzckJ5dGVjb2RlPWVuYWJsZWQNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb2RlZ2VuLnRhcmdldFBsYXRmb3JtPTEuNQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmNvZGVnZW4udW51c2VkTG9jYWw9cHJlc2VydmUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5jb21wbGlhbmNlPTEuNQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLmRlYnVnLmxpbmVOdW1iZXI9Z2VuZXJhdGUNCitvcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5kZWJ1Zy5sb2NhbFZhcmlhYmxlPWdlbmVyYXRlDQorb3JnLmVjbGlwc2UuamR0LmNvcmUuY29tcGlsZXIuZGVidWcuc291cmNlRmlsZT1nZW5lcmF0ZQ0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uYXNzZXJ0SWRlbnRpZmllcj1lcnJvcg0KK29yZy5lY2xpcHNlLmpkdC5jb3JlLmNvbXBpbGVyLnByb2JsZW0uZW51bUlkZW50aWZpZXI9ZXJyb3INCitvcmcuZWNsaXBzZS5qZHQuY29yZS5jb21waWxlci5zb3VyY2U9MS41DQpkaWZmIC0tZ2l0IGEvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpkdC51aS5wcmVmcyBiLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQudWkucHJlZnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjc4YTAxMAotLS0gL2Rldi9udWxsCisrKyBiLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qZHQudWkucHJlZnMKQEAgLTAsMCArMSw1NCBAQAorZWNsaXBzZS5wcmVmZXJlbmNlcy52ZXJzaW9uPTEKK2VkaXRvcl9zYXZlX3BhcnRpY2lwYW50X29yZy5lY2xpcHNlLmpkdC51aS5wb3N0c2F2ZWxpc3RlbmVyLmNsZWFudXA9dHJ1ZQorc3BfY2xlYW51cC5hZGRfZGVmYXVsdF9zZXJpYWxfdmVyc2lvbl9pZD10cnVlCitzcF9jbGVhbnVwLmFkZF9nZW5lcmF0ZWRfc2VyaWFsX3ZlcnNpb25faWQ9ZmFsc2UKK3NwX2NsZWFudXAuYWRkX21pc3NpbmdfYW5ub3RhdGlvbnM9dHJ1ZQorc3BfY2xlYW51cC5hZGRfbWlzc2luZ19kZXByZWNhdGVkX2Fubm90YXRpb25zPXRydWUKK3NwX2NsZWFudXAuYWRkX21pc3NpbmdfbWV0aG9kcz1mYWxzZQorc3BfY2xlYW51cC5hZGRfbWlzc2luZ19ubHNfdGFncz1mYWxzZQorc3BfY2xlYW51cC5hZGRfbWlzc2luZ19vdmVycmlkZV9hbm5vdGF0aW9ucz10cnVlCitzcF9jbGVhbnVwLmFkZF9taXNzaW5nX292ZXJyaWRlX2Fubm90YXRpb25zX2ludGVyZmFjZV9tZXRob2RzPXRydWUKK3NwX2NsZWFudXAuYWRkX3NlcmlhbF92ZXJzaW9uX2lkPWZhbHNlCitzcF9jbGVhbnVwLmFsd2F5c191c2VfYmxvY2tzPXRydWUKK3NwX2NsZWFudXAuYWx3YXlzX3VzZV9wYXJlbnRoZXNlc19pbl9leHByZXNzaW9ucz1mYWxzZQorc3BfY2xlYW51cC5hbHdheXNfdXNlX3RoaXNfZm9yX25vbl9zdGF0aWNfZmllbGRfYWNjZXNzPWZhbHNlCitzcF9jbGVhbnVwLmFsd2F5c191c2VfdGhpc19mb3Jfbm9uX3N0YXRpY19tZXRob2RfYWNjZXNzPWZhbHNlCitzcF9jbGVhbnVwLmNvbnZlcnRfdG9fZW5oYW5jZWRfZm9yX2xvb3A9ZmFsc2UKK3NwX2NsZWFudXAuY29ycmVjdF9pbmRlbnRhdGlvbj1mYWxzZQorc3BfY2xlYW51cC5mb3JtYXRfc291cmNlX2NvZGU9ZmFsc2UKK3NwX2NsZWFudXAuZm9ybWF0X3NvdXJjZV9jb2RlX2NoYW5nZXNfb25seT10cnVlCitzcF9jbGVhbnVwLm1ha2VfbG9jYWxfdmFyaWFibGVfZmluYWw9ZmFsc2UKK3NwX2NsZWFudXAubWFrZV9wYXJhbWV0ZXJzX2ZpbmFsPWZhbHNlCitzcF9jbGVhbnVwLm1ha2VfcHJpdmF0ZV9maWVsZHNfZmluYWw9dHJ1ZQorc3BfY2xlYW51cC5tYWtlX3R5cGVfYWJzdHJhY3RfaWZfbWlzc2luZ19tZXRob2Q9ZmFsc2UKK3NwX2NsZWFudXAubWFrZV92YXJpYWJsZV9kZWNsYXJhdGlvbnNfZmluYWw9dHJ1ZQorc3BfY2xlYW51cC5uZXZlcl91c2VfYmxvY2tzPWZhbHNlCitzcF9jbGVhbnVwLm5ldmVyX3VzZV9wYXJlbnRoZXNlc19pbl9leHByZXNzaW9ucz10cnVlCitzcF9jbGVhbnVwLm9uX3NhdmVfdXNlX2FkZGl0aW9uYWxfYWN0aW9ucz1mYWxzZQorc3BfY2xlYW51cC5vcmdhbml6ZV9pbXBvcnRzPXRydWUKK3NwX2NsZWFudXAucXVhbGlmeV9zdGF0aWNfZmllbGRfYWNjZXNzZXNfd2l0aF9kZWNsYXJpbmdfY2xhc3M9ZmFsc2UKK3NwX2NsZWFudXAucXVhbGlmeV9zdGF0aWNfbWVtYmVyX2FjY2Vzc2VzX3Rocm91Z2hfaW5zdGFuY2VzX3dpdGhfZGVjbGFyaW5nX2NsYXNzPXRydWUKK3NwX2NsZWFudXAucXVhbGlmeV9zdGF0aWNfbWVtYmVyX2FjY2Vzc2VzX3Rocm91Z2hfc3VidHlwZXNfd2l0aF9kZWNsYXJpbmdfY2xhc3M9dHJ1ZQorc3BfY2xlYW51cC5xdWFsaWZ5X3N0YXRpY19tZW1iZXJfYWNjZXNzZXNfd2l0aF9kZWNsYXJpbmdfY2xhc3M9ZmFsc2UKK3NwX2NsZWFudXAucXVhbGlmeV9zdGF0aWNfbWV0aG9kX2FjY2Vzc2VzX3dpdGhfZGVjbGFyaW5nX2NsYXNzPWZhbHNlCitzcF9jbGVhbnVwLnJlbW92ZV9wcml2YXRlX2NvbnN0cnVjdG9ycz10cnVlCitzcF9jbGVhbnVwLnJlbW92ZV90cmFpbGluZ193aGl0ZXNwYWNlcz1mYWxzZQorc3BfY2xlYW51cC5yZW1vdmVfdHJhaWxpbmdfd2hpdGVzcGFjZXNfYWxsPXRydWUKK3NwX2NsZWFudXAucmVtb3ZlX3RyYWlsaW5nX3doaXRlc3BhY2VzX2lnbm9yZV9lbXB0eT1mYWxzZQorc3BfY2xlYW51cC5yZW1vdmVfdW5uZWNlc3NhcnlfY2FzdHM9dHJ1ZQorc3BfY2xlYW51cC5yZW1vdmVfdW5uZWNlc3NhcnlfbmxzX3RhZ3M9ZmFsc2UKK3NwX2NsZWFudXAucmVtb3ZlX3VudXNlZF9pbXBvcnRzPWZhbHNlCitzcF9jbGVhbnVwLnJlbW92ZV91bnVzZWRfbG9jYWxfdmFyaWFibGVzPWZhbHNlCitzcF9jbGVhbnVwLnJlbW92ZV91bnVzZWRfcHJpdmF0ZV9maWVsZHM9dHJ1ZQorc3BfY2xlYW51cC5yZW1vdmVfdW51c2VkX3ByaXZhdGVfbWVtYmVycz1mYWxzZQorc3BfY2xlYW51cC5yZW1vdmVfdW51c2VkX3ByaXZhdGVfbWV0aG9kcz10cnVlCitzcF9jbGVhbnVwLnJlbW92ZV91bnVzZWRfcHJpdmF0ZV90eXBlcz10cnVlCitzcF9jbGVhbnVwLnNvcnRfbWVtYmVycz1mYWxzZQorc3BfY2xlYW51cC5zb3J0X21lbWJlcnNfYWxsPWZhbHNlCitzcF9jbGVhbnVwLnVzZV9ibG9ja3M9ZmFsc2UKK3NwX2NsZWFudXAudXNlX2Jsb2Nrc19vbmx5X2Zvcl9yZXR1cm5fYW5kX3Rocm93PWZhbHNlCitzcF9jbGVhbnVwLnVzZV9wYXJlbnRoZXNlc19pbl9leHByZXNzaW9ucz1mYWxzZQorc3BfY2xlYW51cC51c2VfdGhpc19mb3Jfbm9uX3N0YXRpY19maWVsZF9hY2Nlc3M9ZmFsc2UKK3NwX2NsZWFudXAudXNlX3RoaXNfZm9yX25vbl9zdGF0aWNfZmllbGRfYWNjZXNzX29ubHlfaWZfbmVjZXNzYXJ5PXRydWUKK3NwX2NsZWFudXAudXNlX3RoaXNfZm9yX25vbl9zdGF0aWNfbWV0aG9kX2FjY2Vzcz1mYWxzZQorc3BfY2xlYW51cC51c2VfdGhpc19mb3Jfbm9uX3N0YXRpY19tZXRob2RfYWNjZXNzX29ubHlfaWZfbmVjZXNzYXJ5PXRydWUKZGlmZiAtLWdpdCBhLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qc3QuY29tbW9uLnByb2plY3QuZmFjZXQuY29yZS5wcmVmcyBiLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS5qc3QuY29tbW9uLnByb2plY3QuZmFjZXQuY29yZS5wcmVmcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YzhhZDFkCi0tLSAvZGV2L251bGwKKysrIGIvLnNldHRpbmdzL29yZy5lY2xpcHNlLmpzdC5jb21tb24ucHJvamVjdC5mYWNldC5jb3JlLnByZWZzCkBAIC0wLDAgKzEsMyBAQAorI1dlZCBPY3QgMTQgMTk6MjI6MjkgQ0VTVCAyMDA5DQorY2xhc3NwYXRoLmhlbHBlci9vcmcuZWNsaXBzZS5qZHQubGF1bmNoaW5nLkpSRV9DT05UQUlORVJcOlw6b3JnLmVjbGlwc2UuamR0LmludGVybmFsLmRlYnVnLnVpLmxhdW5jaGVyLlN0YW5kYXJkVk1UeXBlXDpcOmpyZTYvb3duZXJzPWpzdC5qYXZhXDo1LjANCitlY2xpcHNlLnByZWZlcmVuY2VzLnZlcnNpb249MQ0KZGlmZiAtLWdpdCBhLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS53c3QuY29tbW9uLmNvbXBvbmVudCBiLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS53c3QuY29tbW9uLmNvbXBvbmVudApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYmE2ZDUxCi0tLSAvZGV2L251bGwKKysrIGIvLnNldHRpbmdzL29yZy5lY2xpcHNlLndzdC5jb21tb24uY29tcG9uZW50CkBAIC0wLDAgKzEsMjggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPCEtLQ0KKyAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisNCisgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorDQorICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAtLT4NCis8cHJvamVjdC1tb2R1bGVzIGlkPSJtb2R1bGVDb3JlSWQiIHByb2plY3QtdmVyc2lvbj0iMS41LjAiPg0KKyAgICA8d2ItbW9kdWxlIGRlcGxveS1uYW1lPSJST09UIj4NCisgICAgICAgIDx3Yi1yZXNvdXJjZSBkZXBsb3ktcGF0aD0iLyIgc291cmNlLXBhdGg9Ii9XZWJDb250ZW50Ii8+DQorICAgICAgICA8d2ItcmVzb3VyY2UgZGVwbG95LXBhdGg9Ii9XRUItSU5GL2NsYXNzZXMiIHNvdXJjZS1wYXRoPSIvc3JjL2NsaWVudCIvPg0KKyAgICAgICAgPHdiLXJlc291cmNlIGRlcGxveS1wYXRoPSIvV0VCLUlORi9jbGFzc2VzIiBzb3VyY2UtcGF0aD0iL3NyYy9zY3JlZW52aWV3ZXIiLz4NCisJCTx3Yi1yZXNvdXJjZSBkZXBsb3ktcGF0aD0iL1dFQi1JTkYvY2xhc3NlcyIgc291cmNlLXBhdGg9Ii9zY3JlZW5zaGFyaW5nIi8+DQorICAgICAgICA8d2ItcmVzb3VyY2UgZGVwbG95LXBhdGg9Ii9XRUItSU5GL2NsYXNzZXMiIHNvdXJjZS1wYXRoPSIvc3JjL3NlcnZlciIvPg0KKyAgICAgICAgPHdiLXJlc291cmNlIGRlcGxveS1wYXRoPSIvV0VCLUlORi9jbGFzc2VzIiBzb3VyY2UtcGF0aD0iL1dlYkNvbnRlbnQvV0VCLUlORiIvPg0KKyAgICAgICAgPHdiLXJlc291cmNlIGRlcGxveS1wYXRoPSIvV0VCLUlORi9jbGFzc2VzIiBzb3VyY2UtcGF0aD0iL3NyYyIvPg0KKyAgICAgICAgPHdiLXJlc291cmNlIGRlcGxveS1wYXRoPSIvV0VCLUlORi9jbGFzc2VzIiBzb3VyY2UtcGF0aD0iL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL1dFQi1JTkYvY2xhc3NlcyIvPg0KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9ImphdmEtb3V0cHV0LXBhdGgiLz4NCisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjb250ZXh0LXJvb3QiIHZhbHVlPSIvIi8+DQorICAgIDwvd2ItbW9kdWxlPg0KKzwvcHJvamVjdC1tb2R1bGVzPg0KZGlmZiAtLWdpdCBhLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS53c3QuY29tbW9uLnByb2plY3QuZmFjZXQuY29yZS54bWwgYi8uc2V0dGluZ3Mvb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5wcm9qZWN0LmZhY2V0LmNvcmUueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyNGE3MzMKLS0tIC9kZXYvbnVsbAorKysgYi8uc2V0dGluZ3Mvb3JnLmVjbGlwc2Uud3N0LmNvbW1vbi5wcm9qZWN0LmZhY2V0LmNvcmUueG1sCkBAIC0wLDAgKzEsNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxmYWNldGVkLXByb2plY3Q+CisgIDxmaXhlZCBmYWNldD0ianN0LndlYiIvPgorICA8Zml4ZWQgZmFjZXQ9ImpzdC5qYXZhIi8+CisgIDxpbnN0YWxsZWQgZmFjZXQ9ImpzdC5qYXZhIiB2ZXJzaW9uPSI1LjAiLz4KKyAgPGluc3RhbGxlZCBmYWNldD0ianN0LndlYiIgdmVyc2lvbj0iMi41Ii8+Cis8L2ZhY2V0ZWQtcHJvamVjdD4KZGlmZiAtLWdpdCBhLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS53c3QuanNkdC51aS5zdXBlclR5cGUuY29udGFpbmVyIGIvLnNldHRpbmdzL29yZy5lY2xpcHNlLndzdC5qc2R0LnVpLnN1cGVyVHlwZS5jb250YWluZXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2JkNWQwYQotLS0gL2Rldi9udWxsCisrKyBiLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS53c3QuanNkdC51aS5zdXBlclR5cGUuY29udGFpbmVyCkBAIC0wLDAgKzEgQEAKK29yZy5lY2xpcHNlLndzdC5qc2R0LmxhdW5jaGluZy5iYXNlQnJvd3NlckxpYnJhcnkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS8uc2V0dGluZ3Mvb3JnLmVjbGlwc2Uud3N0LmpzZHQudWkuc3VwZXJUeXBlLm5hbWUgYi8uc2V0dGluZ3Mvb3JnLmVjbGlwc2Uud3N0LmpzZHQudWkuc3VwZXJUeXBlLm5hbWUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDViZDcxYgotLS0gL2Rldi9udWxsCisrKyBiLy5zZXR0aW5ncy9vcmcuZWNsaXBzZS53c3QuanNkdC51aS5zdXBlclR5cGUubmFtZQpAQCAtMCwwICsxIEBACitXaW5kb3cKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS8uc2V0dGluZ3Mvb3JnLnNwcmluZ2ZyYW1ld29yay5pZGUuZWNsaXBzZS5iZWFucy5jb3JlLnByZWZzIGIvLnNldHRpbmdzL29yZy5zcHJpbmdmcmFtZXdvcmsuaWRlLmVjbGlwc2UuYmVhbnMuY29yZS5wcmVmcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYWY4Y2U1Ci0tLSAvZGV2L251bGwKKysrIGIvLnNldHRpbmdzL29yZy5zcHJpbmdmcmFtZXdvcmsuaWRlLmVjbGlwc2UuYmVhbnMuY29yZS5wcmVmcwpAQCAtMCwwICsxLDMgQEAKKyNTdW4gQXVnIDI4IDE4OjE3OjQwIENFU1QgMjAxMQ0KK2VjbGlwc2UucHJlZmVyZW5jZXMudmVyc2lvbj0xDQorb3JnLnNwcmluZ2ZyYW1ld29yay5pZGUuZWNsaXBzZS5iZWFucy5jb3JlLmlnbm9yZU1pc3NpbmdOYW1lc3BhY2VIYW5kbGVyPWZhbHNlDQpkaWZmIC0tZ2l0IGEvLnNwcmluZ0JlYW5zIGIvLnNwcmluZ0JlYW5zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0YzRjZGYKLS0tIC9kZXYvbnVsbAorKysgYi8uc3ByaW5nQmVhbnMKQEAgLTAsMCArMSwzNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8IS0tDQorICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKw0KKyAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisNCisgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorIC0tPg0KKzxiZWFuc1Byb2plY3REZXNjcmlwdGlvbj4NCisJPHZlcnNpb24+MTwvdmVyc2lvbj4NCisJPHBsdWdpblZlcnNpb24+PCFbQ0RBVEFbMi44LjEuMjAxMTExMjIwMTE1LVJFTEVBU0VdXT48L3BsdWdpblZlcnNpb24+DQorCTxjb25maWdTdWZmaXhlcz4NCisJCTxjb25maWdTdWZmaXg+PCFbQ0RBVEFbeG1sXV0+PC9jb25maWdTdWZmaXg+DQorCTwvY29uZmlnU3VmZml4ZXM+DQorCTxlbmFibGVJbXBvcnRzPjwhW0NEQVRBW2ZhbHNlXV0+PC9lbmFibGVJbXBvcnRzPg0KKwk8Y29uZmlncz4NCisJCTxjb25maWc+V2ViQ29udGVudC9XRUItSU5GL29wZW5tZWV0aW5ncy1hcHBsaWNhdGlvbkNvbnRleHQueG1sPC9jb25maWc+DQorCTwvY29uZmlncz4NCisJPGNvbmZpZ1NldHM+DQorCQk8Y29uZmlnU2V0Pg0KKwkJCTxuYW1lPjwhW0NEQVRBW29wZW5tZWV0aW5nc19jb25maWddXT48L25hbWU+DQorCQkJPGFsbG93QmVhbkRlZmluaXRpb25PdmVycmlkaW5nPnRydWU8L2FsbG93QmVhbkRlZmluaXRpb25PdmVycmlkaW5nPg0KKwkJCTxpbmNvbXBsZXRlPmZhbHNlPC9pbmNvbXBsZXRlPg0KKwkJCTxjb25maWdzPg0KKwkJCQk8Y29uZmlnPldlYkNvbnRlbnQvV0VCLUlORi9vcGVubWVldGluZ3MtYXBwbGljYXRpb25Db250ZXh0LnhtbDwvY29uZmlnPg0KKwkJCTwvY29uZmlncz4NCisJCQk8cHJvZmlsZXM+DQorCQkJPC9wcm9maWxlcz4NCisJCTwvY29uZmlnU2V0Pg0KKwk8L2NvbmZpZ1NldHM+DQorPC9iZWFuc1Byb2plY3REZXNjcmlwdGlvbj4NCmRpZmYgLS1naXQgYS9DSEFOR0VMT0cgYi9DSEFOR0VMT0cKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQzMTkxOAotLS0gL2Rldi9udWxsCisrKyBiL0NIQU5HRUxPRwpAQCAtMCwwICsxLDQ3NiBAQAorQXBhY2hlIE9wZW5NZWV0aW5ncyBDaGFuZ2UgTG9nCisKK1NlZSBodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTLSogKHdoZXJlICogaXMgdGhlIG51bWJlciBvZiB0aGUgaXNzdWUgYmVsb3cpCisKKworUmVsZWFzZSBOb3RlcyAtIE9wZW5tZWV0aW5ncyAtIFZlcnNpb24gMi4xLjEgQXBhY2hlIFJlbGVhc2UKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKiogQnVnCisgICAgKiBbT1BFTk1FRVRJTkdTLTQzMl0gLSB2aWRlbyBvbmx5IHJvb20gaXMgY29taW5nIHdpdGggd2hpdGUgYm9hcmQgYWxzbworICAgICogW09QRU5NRUVUSU5HUy00MzldIC0gQW4gTERBUCB1c2VyIGNhbid0IGNoYW5nZSB0aGVpciBvd24gcHJvZmlsZSBwaWN0dXJlLgorICAgICogW09QRU5NRUVUSU5HUy00ODFdIC0gV2hlbiBJIHJlc2VydmUgYSByb29tIGJ5IHNlbmRpbmcgYW4gZW1haWwsIHVzZXJzIHdobyBjb25uZWN0ZWQgdG8gdGhpcyBsaW5rIGZyb20gYW4gZW1haWwgaGF2ZSB0aGUgc2FtZSBlbWFpbCBhZGRyZXNzIGFzIG1lCisgICAgKiBbT1BFTk1FRVRJTkdTLTUwM10gLSBPcGVubWVldGluZ3MgZG9lcyBub3QgbG9nb3V0IG9uIHRoZSBSZWNvcmRpbmcgcGFuZWwKKyAgICAqIFtPUEVOTUVFVElOR1MtNTA3XSAtIEVycm9yIG1lc3NhZ2UgaXMgc2hvd24gd2hlbiB1c2VyIHNhdmUgdGhlIFByb2ZpbGUgc2V0dGluZ3MgCisgICAgKiBbT1BFTk1FRVRJTkdTLTUzN10gLSBQb3AgbWVudSAgaW4gY29uZmVyZW5jZSBmb3IgZmlsZXMgc2hvd3MgIkRlbGV0ZSBmb2xkZXIiCisgICAgKiBbT1BFTk1FRVRJTkdTLTU4Nl0gLSBGaWxlSXRlbSBvd25lcl9pZCBpcyBub3QgcmVwbGFjZWQgd2l0aCBuZXcgaWQgd2hpbGUgc3lzdGVtIGltcG9ydAorICAgICogW09QRU5NRUVUSU5HUy01ODddIC0gRXhjbHVzaXZlIGF1ZGlvIGJ5IGhvdGtleSBpcyBicm9rZW4KKyAgICAqIFtPUEVOTUVFVElOR1MtNTk4XSAtIGRvbnQgYnVpbGQgdHJ1bmsgb24gSkRLIDEuNyB4NjQKKyAgICAqIFtPUEVOTUVFVElOR1MtNjA4XSAtIE9mZmljZSBmaWxlIGFyZSB1cGxvYWRlZCBidXQgbm90IGRpc3BsYXllZAorICAgICogW09QRU5NRUVUSU5HUy02MDldIC0gVGhlIGVuZCB0aW1lIHNob3duIHVuZGVyIHRoZSBCb29rIENvbmZlcmVuY2UgUm9vbSBvcHRpb24gaW4gTmV3IE1lc3NhZ2UgaXMgSW5jb3JyZWN0CisgICAgKiBbT1BFTk1FRVRJTkdTLTYxOF0gLSBJbmNvcnJlY3QgdHJhbnNsYXRpb24KKyAgICAqIFtPUEVOTUVFVElOR1MtNjI1XSAtIFByb2ZpbGUgUGljdHVyZXMgbm90IHdvcmtpbmcgb24gTERBUCBBY2NvdW50cworICAgICogW09QRU5NRUVUSU5HUy02MzRdIC0gTm8gbWVudSBhY2Nlc3NhYmxlIGFmdGVyIGZpbGUgdXBsb2FkLCBpbiBhIHNwZWNpYWwgY29uZGl0aW9uCisgICAgKiBbT1BFTk1FRVRJTkdTLTYzNV0gLSBBZG1pbmlzdHJhdGlvbiAvIENvbmZpZ3VyYXRpb24gOiBkZWZhdWx0X2xhbmdfaWQgZG9jdW1lbnRhdGlvbgorICAgICogW09QRU5NRUVUSU5HUy02NTRdIC0gSW50ZXJ2aWV3IHJvb20gaXMgYnJva2VuCisKKyoqIEltcHJvdmVtZW50CisgICAgKiBbT1BFTk1FRVRJTkdTLTU4OV0gLSBDb25maWd1cmFibGUgaG90IGtleSBmb3IgTXV0ZS9Vbm11dGUgc2hvdWxkIGJlIGFkZGVkCisKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisKKworUmVsZWFzZSBOb3RlcyAtIE9wZW5tZWV0aW5ncyAtIFZlcnNpb24gMi4xIEFwYWNoZSBSZWxlYXNlCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyoqIFN1Yi10YXNrCisgICAgKiBbT1BFTk1FRVRJTkdTLTQ0OF0gLSBUZXN0IGFuZCBmaXggbGF0ZXN0IHRydW5rIHRvIGJlIGFibGUgdG8gaW1wb3J0IGFsbCBvbGQgZG93bmxvYWQgemlwJ3MKKworCisKKyoqIEJ1ZworICAgICogW09QRU5NRUVUSU5HUy0zNF0gLSBtaXNzaW5nIGVudHJpZXMgaW4gWE1MIGxhbmd1YWdlIGZpbGVzCisgICAgKiBbT1BFTk1FRVRJTkdTLTQ5XSAtIFN5bmNocm9uaXNhdGlvbiBiZXR3ZWVuIENhbGVuZGFyIGFuZCBEYXNoYm9hcmQKKyAgICAqIFtPUEVOTUVFVElOR1MtOTJdIC0gVGhlIGRvY3VtZW50cyBhcmUgbm90IGRlbGV0ZWQgZnJvbSB0aGUgc2VydmVyIGFmdGVyIHJlbW92aW5nIHRoZW0gZnJvbSB0aGUgc3lzdGVtCisgICAgKiBbT1BFTk1FRVRJTkdTLTk0XSAtIFJlZmVyZW5jZXMgdG8gdGhlIGNvZGUuZ29vZ2xlLmNvbSBuZWVkIHRvIGJlIHVwZGF0ZWQKKyAgICAqIFtPUEVOTUVFVElOR1MtMTU3XSAtIFJlZ2lzdHJhdGlvbiBidWcKKyAgICAqIFtPUEVOTUVFVElOR1MtMTY2XSAtIE1lZXRpbmcgaXMgY3JlYXRlZCB3aXRoIGluY29ycmVjdCBzdGFydCB0aW1lIGluIHRoZSBjYWxlbmRhci4KKyAgICAqIFtPUEVOTUVFVElOR1MtMTgwXSAtIGJ1ZyBzZW5kaW5nIGludml0YXRpb24KKyAgICAqIFtPUEVOTUVFVElOR1MtMTk2XSAtIENhbGVuZGFyIEljYWwgLyBTaW1wbGUgTWFpbCAtIGRvdWJsZSBpbnZpdGF0aW9uIG1haWwKKyAgICAqIFtPUEVOTUVFVElOR1MtMjEyXSAtIEFjdGl2aXRpZXMgYW5kIGFjdGlvbnM6ICJEZW55IGFuZCByZW1vdmUgbWVzc2FnZSAiIGJ1dHRvbiBpcyBub3Qgd29ya2VkCisgICAgKiBbT1BFTk1FRVRJTkdTLTI0M10gLSAiVXBkYXRlZCIgZmllbGQgaW4gQWRtaW5pc3RyYXRpb24gLT4gTERBUCBwYW5lbCBjb250YWlucyAibnVsbCIgZm9yIHN0cmluZyBmb3IgZW1wdHkgdmFsdWUuCisgICAgKiBbT1BFTk1FRVRJTkdTLTI1MV0gLSBNaW5vcnMgbGF5b3V0IHByb2JsZW1zIHdoZW4gdHJhbnNsYXRpbmcKKyAgICAqIFtPUEVOTUVFVElOR1MtMjY3XSAtIG1pc3NpbmcgdHJhbnNsYXRpb24KKyAgICAqIFtPUEVOTUVFVElOR1MtMjkxXSAtIGxpZ2h0IGRvZXMgbm90IGluZGljYXRlIHdoZW4gdGhlIHVzZXIgaXMgc3BlYWtpbmcKKyAgICAqIFtPUEVOTUVFVElOR1MtMzEwXSAtIE1vb2RsZSBwbHVnaW4gdmVyc2lvbgorICAgICogW09QRU5NRUVUSU5HUy0zMTFdIC0gTGFuZ3VhZ2UgcHJvYmxlbSBhZnRlciBPcGVubWVldGluZ3MgdXBkYXRlIChhY2Nlc3NpbmcgZnJvbSBNb29kbGUgb25seSkKKyAgICAqIFtPUEVOTUVFVElOR1MtMzEyXSAtIEZpbGUgd2FzIG51bGwgb3IgZGlkIG5vdCBleGlzdDogVEVTVF9TRVRVUF8xMzM4OTQ1MjQ0MjQwLmZsdgorICAgICogW09QRU5NRUVUSU5HUy0zMTRdIC0gV2ViY2FtIFRpdGxlIG9mIHVzZXIgaXMgdXNlcm5hbWUgb2YgZGVmYXVsdCBPTSB1c2VyCisgICAgKiBbT1BFTk1FRVRJTkdTLTMxNl0gLSBJQ1MgYXR0YWNobWVudHMgZm9yIGVtYWlscyBub3Qgd29ya2luZyB3aXRoIEV4Y2hhbmdlIDIwMDMvMjAwNyBhbmQgT3V0bG9vayAyMDAzLzIwMDcKKyAgICAqIFtPUEVOTUVFVElOR1MtMzIwXSAtIEV4Y2VwdGlvbiBhbmQgbGF5b3V0IGZvciBzY3JlZW5zaGFyaW5nL3JlY29yZGluZyBjbGllbnQKKyAgICAqIFtPUEVOTUVFVElOR1MtMzIyXSAtIFNldmVyYWwgRXhjZXB0aW9uIGluIExvZworICAgICogW09QRU5NRUVUSU5HUy0zMjddIC0gQWRkIFJlc3RhcnQgU2F2ZSBNYWlsLVF1ZXVlCisgICAgKiBbT1BFTk1FRVRJTkdTLTMyOF0gLSBzY3JlZW4gc2hhcmluZyBpcyBub3QgY2xvc2luZyBhdXRvbWF0aWNhbGx5CisgICAgKiBbT1BFTk1FRVRJTkdTLTMzMV0gLSB0b29sdGlwIGZvciBjbWRfYXBwbHlmb3JXaGl0ZUJvYXJkIHJvb20gYWN0aW9uIGlzIG5vdCBzZXQKKyAgICAqIFtPUEVOTUVFVElOR1MtMzQzXSAtIE9NIGNyYXNoZXMgaWYgSW52aXRl0LIgZ3Vlc3Qgd2l0aCBzY3JlZW4gc2hhcmluZyByaWdodHMgdHJpZXMgdG8gc3RhcnQgc2NyZWVuIHNoYXJpbmcKKyAgICAqIFtPUEVOTUVFVElOR1MtMzQ2XSAtIFNjcmVlbiBTaGFyaW5nIGRvZXMgbm90IGVuZCB3aXRoIGVuZCBvZiBtZWV0aW5nCisgICAgKiBbT1BFTk1FRVRJTkdTLTM2Ml0gLSBEb3dubG9hZCBvZiBwcm9maWxlIGltYWdlcyBicm9rZW4KKyAgICAqIFtPUEVOTUVFVElOR1MtMzYzXSAtIFNvbWUgbWlub3IgYnVncyBpbiBwcml2YXRlIGNoYXQKKyAgICAqIFtPUEVOTUVFVElOR1MtMzY0XSAtIFVzZXIgaXMgbm90IHJlbW92ZWQgZnJvbSB1c2VyIGxpc3Qgd2hlbiBoZSBsZWF2ZXMgdGhlIHJvb20KKyAgICAqIFtPUEVOTUVFVElOR1MtMzY2XSAtIEZpbGUgdXBsb2FkIGRvZXMgbm90IHNob3cgaW1hZ2VzIGFzIG9wdGlvbnMgd2hlbiBkb2luZyBmaWxlIHVwbG9hZAorICAgICogW09QRU5NRUVUSU5HUy0zNzZdIC0g4oCcTm90aWZpY2F0aW9uIHR5cGXigJ0gdGV4dCBvdmVyZmxvd3MgdGhlIGRyb3AgZG93biBkYXRhIHNlbGVjdGlvbiBhcmVhIGFuZCBpcyBwYXJ0bHkgY292ZXJlZAorICAgICogW09QRU5NRUVUSU5HUy0zNzhdIC0gVXBkYXRlIENhbGVuZGFyIGVtYWlsIG5vdGlmaWNhdGlvbiBydWxlcyB0byBzZW5kIG5vdGlmaWNhdGlvbiBvbmx5IHdoZW4gZGF0YSByZWxldmFudCB0byB0aGUgdXNlcnMgaGFzIGJlZW4gY2hhbmdlZAorICAgICogW09QRU5NRUVUSU5HUy0zNzldIC0gVGhlIENhbGVuZGFyIGljcyBmb3JtYXQgZW1haWwgbm90aWZpY2F0aW9uIGlzIGluY29ycmVjdGx5IGZvcm1lZAorICAgICogW09QRU5NRUVUSU5HUy0zODBdIC0gQ2FsZW5kYXIgIkFkZCBhdHRlbmRlZSIgb3B0aW9uIGhhcyBhIHNlY29uZCBvcHRpb24gb2YgaXRzZWxmIHRvICJBZGQgZXh0ZXJuYWwiIGJ1dCBhZGRpbmcgYW4gZXh0ZXJuYWwgYXR0ZW5kZWUgZG9lcyBub3QgY2xvc2UgdGhpcyBkaWFsb2cKKyAgICAqIFtPUEVOTUVFVElOR1MtMzgxXSAtIGl2eSBqYXIgaW4gb3VyIHJlcG9zaXRvcnkKKyAgICAqIFtPUEVOTUVFVElOR1MtMzgyXSAtIExJQ0VOU0UgZmlsZSBtZW50aW9ucyBib3RoIENEREwgYW5kIEdQTAorICAgICogW09QRU5NRUVUSU5HUy0zODVdIC0gY29udGV4dG1lbnUgIGNvbnRleHRtZW51aXRlbQorICAgICogW09QRU5NRUVUSU5HUy0zODldIC0gQ3JlYXRlIERydXBhbCBwbHVnaW4gZm9yIE9wZW5NZWV0aW5ncworICAgICogW09QRU5NRUVUSU5HUy0zOTFdIC0gUHJpdmF0ZSBhbmQgcHVibGljIGZvbGRlciBkb2VzIG5vdCBhcHBlYXIKKyAgICAqIFtPUEVOTUVFVElOR1MtMzkyXSAtIHByaXZhdGVDaGF0VGFiQm90dG9tCisgICAgKiBbT1BFTk1FRVRJTkdTLTM5M10gLSBOdW1iZXJGb3JtYXRFeGNlcHRpb24gd2hpbGUgY3JlYXRpbmcgdXNlciBvciByb29tCisgICAgKiBbT1BFTk1FRVRJTkdTLTM5NF0gLSBzYXZlIGFuZCBsb2FkIHdoaXRlYm9hcmQgZG9lcyBub3Qgd29yaworICAgICogW09QRU5NRUVUSU5HUy0zOTZdIC0gSUNTIGF0dGFjaG1lbnRzIG5vdCByZWNvZ25pc2VkIGluIE91dGxvb2sgMjAwMworICAgICogW09QRU5NRUVUSU5HUy00MDJdIC0gSSBjYW5ub3Qgb3BlbiBJbnRlcnZpZXcgcmVjb3JkZWQKKyAgICAqIFtPUEVOTUVFVElOR1MtNDAzXSAtIE1pc3Npbmcgcm9vbXMKKyAgICAqIFtPUEVOTUVFVElOR1MtNDA4XSAtIEludGVydmlldyBSb29tICgxKQorICAgICogW09QRU5NRUVUSU5HUy00MTVdIC0gTmV0U3RyZWFtIE5ldFN0YXR1cyBldmVudCBkb2VzIG5vdCB3b3JrIHdoZW4gYXR0YWNoZWQgdG8gY2xpZW50IG9iamVjdAorICAgICogW09QRU5NRUVUSU5HUy00MThdIC0gU2NyZWVuU2hhcmUgcnVzc2lhbiBjaGFyc2V0CisgICAgKiBbT1BFTk1FRVRJTkdTLTQyMF0gLSBzbWFsbCBwcm9ibGVtcyBpbiB0aGUgY3VycmVudCB2ZXJzaW9uCisgICAgKiBbT1BFTk1FRVRJTkdTLTQyMl0gLSBKYXZhIGVycm9yOiBURVNUX1NFVFVQX3h4eC5mbHYgZG9lcyBub3QgZXhpc3Q7IGphdmF4IGVycm9yIDogQ2xpZW50QnJvYWRDYXN0IFN0cmVhbTsgcHVibGlzaGVkIG5hbWU9bnVsbAorICAgICogW09QRU5NRUVUSU5HUy00MjNdIC0gSW5zdGFsbGF0aW9uIE9NMi4wCisgICAgKiBbT1BFTk1FRVRJTkdTLTQyNF0gLSBBZGp1c3QgU3RyZWFtIFZvbHVtZQorICAgICogW09QRU5NRUVUSU5HUy00MjhdIC0gUmVmYWN0b3IgVXNlciBhZG1pbmlzdHJhdGlvbiB0byBXaWNrZXQKKyAgICAqIFtPUEVOTUVFVElOR1MtNDMxXSAtIE9wZW5NZWV0aW5ncyBiZWhpbmQgYSBwcm94eSBkb2Vzbid0IHdvcmsgZm9yIHNjcmVlbiBzaGFyaW5nCisgICAgKiBbT1BFTk1FRVRJTkdTLTQzM10gLSBBZGQgV2lja2V0IGVuYWJsZWQgcm9vbSBhZG1pbmlzdHJhdGlvbgorICAgICogW09QRU5NRUVUSU5HUy00MzRdIC0gQ3JlYXRlIGFkbWluIGFyZWEgZm9yIGdyb3VwcywgY29uZmlndXJhdGlvbnMsIGxkYXBzLCBzZXJ2ZXJzCisgICAgKiBbT1BFTk1FRVRJTkdTLTQzOF0gLSBTb21lIGJ1Z3MKKyAgICAqIFtPUEVOTUVFVElOR1MtNDQwXSAtIFByb2JsZW0gaW4gaW5zdGFsbGF0aW9uIHByb2Nlc3MKKyAgICAqIFtPUEVOTUVFVElOR1MtNDQxXSAtIENhbid0IGJhY2t1cAorICAgICogW09QRU5NRUVUSU5HUy00NDVdIC0gQmFja3VwIEV4cG9ydCBkb2VzIG5vdCB3b3JrIGF0IGFsbAorICAgICogW09QRU5NRUVUSU5HUy00NDldIC0gQ2Fubm90IGltcG9ydCBiYWNrdXAgZmlsZQorICAgICogW09QRU5NRUVUSU5HUy00NTBdIC0gV2lja2V0IFVJIGxvY2tlZCBhZnRlciBhY2NlcHRpbmcgZG93bmxvYWQgb2YgYmFja3VwCisgICAgKiBbT1BFTk1FRVRJTkdTLTQ1MV0gLSBTZWFyY2ggaW4gdXNlciBncm91cHMgV2lja2V0IFVJIGRvZXMgbm90IHdvcmsKKyAgICAqIFtPUEVOTUVFVElOR1MtNDUzXSAtIFJlY29yZGluZ3MgYXNzb2NpYXRlZCB3aXRoIHdyb25nIHVzZXIgYWZ0ZXIgaW1wb3J0IGlmIGFscmVhZHkgYSB1c2VyIHdhcyBpbiB0aGUgZGF0YWJhc2UKKyAgICAqIFtPUEVOTUVFVElOR1MtNDU0XSAtIFNjcmVubnNoYXJpbmcgaW5pdGlhdGVkIGJ5IGludml0ZWQgdXNlciBlbmRzIHVwIGluIGV4Y2VwdGlvbiByZXBvcnQKKyAgICAqIFtPUEVOTUVFVElOR1MtNDU1XSAtIENyZWF0ZSBSVE1QQ2xpZW50IHRvIGRvIGEgbG9hZCB0ZXN0CisgICAgKiBbT1BFTk1FRVRJTkdTLTQ1OF0gLSBNaXNzaW5nIGxhbmd1YWdlIHN0cmluZyAicGx1Z2lubmFtZSIKKyAgICAqIFtPUEVOTUVFVElOR1MtNDU5XSAtIFJlbW92ZSBSb29tQ2xpZW50IGZyb20gZGF0YWJhc2UKKyAgICAqIFtPUEVOTUVFVElOR1MtNDY2XSAtIFNjcmVlbiBTaGFyaW5nIHdpbmRvdywgQ2hpbmVzZSBTaW1wbGlmaWVkIChsYW5nX2lkPTExKSB0ZXh0IGRpc3BsYXkgIj8/Pz8/IgorICAgICogW09QRU5NRUVUSU5HUy00NjddIC0gTm8gaW50ZXJuYWwgdXNlciBjYW4gYmUgc2VsZWN0ZWQgd2hlbiBwbGFubmluZyBhIG1lZXRpbmcKKyAgICAqIFtPUEVOTUVFVElOR1MtNDY5XSAtIERlbGV0ZWQgbWVldGluZyBkYXRhIHJlbWFpbnMgaW4gU0lQIGRiIHRhYmxlcworICAgICogW09QRU5NRUVUSU5HUy00NzJdIC0gcmVkNXNpcCByZXY2OCB3aWxsIG5vdCBydW4KKyAgICAqIFtPUEVOTUVFVElOR1MtNDc0XSAtIExpbmtzIHRvIHJvb21zIHNlbnQgdmlhIGVtYWlsIGRvIG5vdCB3b3JrCisgICAgKiBbT1BFTk1FRVRJTkdTLTQ4Ml0gLSBOZXR3b3JrIGNoZWNrIHNjcmlwdCBoYW5ncyBhZnRlciB0aGUgc2Vjb25kICJQb3J0IiBidXR0b24gY2xpY2sgCisgICAgKiBbT1BFTk1FRVRJTkdTLTQ4OV0gLSBTdGFydCByZWNvcmRpbmcgdGVzdCBoYW5ncyBpZiBubyB3ZWJjYW1lcmEgY29ubmVjdGVkCisgICAgKiBbT1BFTk1FRVRJTkdTLTQ5MF0gLSBXcm9uZyBkaXJlY3RvcnkgZm9yIHRlc3QgZmlsZSBpbiAiQ2hvb3NlIGRldmljZSIgd2luZG93CisgICAgKiBbT1BFTk1FRVRJTkdTLTQ5Ml0gLSBSZXN0b3JhdGlvbiBvZiBiYWNrdXAgZmFpbGVkCisgICAgKiBbT1BFTk1FRVRJTkdTLTQ5M10gLSBVcGxvYWRpbmcgTGlicmVvZmZpY2UtZm9ybWF0IGZpbGVzIG9ubHkgcmVzdWx0cyBpbiAiRGVsZXRlZCIKKyAgICAqIFtPUEVOTUVFVElOR1MtNDk2XSAtIEl0J3MgdW5hYmxlIHRvIHNlbmQgbG9jYWxpemVkIFNNUyBtZXNzYWdlLgorICAgICogW09QRU5NRUVUSU5HUy00OThdIC0gQmFja3VwIGZhaWxzIHdpdGggRXhjZXB0aW9uCisgICAgKiBbT1BFTk1FRVRJTkdTLTUwMl0gLSBTb21lIGxhYmVscyBhcmUgaGFyZGNvZGVkIG9uIHRoZSBTeXN0ZW0gYmFja3VwIHRhYiAKKyAgICAqIFtPUEVOTUVFVElOR1MtNTA0XSAtIFNvbWUgbGFiZWxzIGFyZSBub3QgdHJhbnNsYXRlZCB0byBydXNzaWFuIGxhbmd1YWdlCisgICAgKiBbT1BFTk1FRVRJTkdTLTUwNV0gLSBWYWx1ZXMgb2YgdGhlICJVbmVyb2xlIFVzZXIiIGFuZCAiU2VydmVyIEFkZHJlc3MiIGZpZWxkcyBhcmUgbWl4ZWQgb24gdGhlIEFkbWluaXN0cmF0b3IgLT4gQ29ubmVjdGlvbnMgdGFiLgorICAgICogW09QRU5NRUVUSU5HUy01MDZdIC0gTG9jYWxpemVkIChydXNzaWFuKSBmaWxlIG5hbWUgaXMgbm90IHVwbG9hZGVkIG9uIHRoZSBQcm9maWxlIHRhYgorICAgICogW09QRU5NRUVUSU5HUy01MDldIC0gQ29tbWVudCBpcyBzaG93biBpbmNvcnJlY3RseSBpbiB0aGUgQ2hvb3NlIGRldmljZSBkaWFsb2cKKyAgICAqIFtPUEVOTUVFVElOR1MtNTEyXSAtIEZpbGVzIGFyZSBub3QgdXBsb2FkZWQgaW4gdGhlIHJvb21zCisgICAgKiBbT1BFTk1FRVRJTkdTLTUxNV0gLSBWaWRlbyByZWNvcmRpbmcgYXJ0aWZhY3RzIGF0IHRoZSBiZWdpbiBvZiB0aGUgZmlsZQorICAgICogW09QRU5NRUVUSU5HUy01MTZdIC0gQWZ0ZXIgZ3JhZHVhdGlvbiB0YXNrcworICAgICogW09QRU5NRUVUSU5HUy01MTddIC0gc2Vuc1NNUyBmbGFnIGlzIG5vdCBpbXBvcnRlZC9leHBvcnRlZCBieSBhZG1pbi4KKyAgICAqIFtPUEVOTUVFVElOR1MtNTE5XSAtIE5lZWQgdG8gdXBkYXRlIENvbmZpZ3VyYXRpb24gcGFnZSBvbiBPcGVubWVldGluZ3Mgc2l0ZS4KKyAgICAqIFtPUEVOTUVFVElOR1MtNTIwXSAtIE1pc3NpbmcgYXJlYXMgb24gdGhlIHJlY29yZGVkIHZpZGVvCisgICAgKiBbT1BFTk1FRVRJTkdTLTUyMV0gLSBUaGUgIlNob3cvQ29weSBjaGF0IGxvZyIgYW5kICJEZWxldGUgc2VydmVyIGNoYXQgbG9nIiBidXR0b25zIGFyZSBub3QgYXZhaWxhYmxlIGZvciB0aGUgUHRpdmF0ZSBDaGF0CisgICAgKiBbT1BFTk1FRVRJTkdTLTUyM10gLSBkb3dubG9hZCBtYW51YWwgZ2hvc3RjcmlwdCBkb3dubG9hZCBsaW5rIGlzIGRlYWQKKyAgICAqIFtPUEVOTUVFVElOR1MtNTI0XSAtIFVuZW5yb2xlZCB1c2VyIGlzIG5vdCB0aHJvd24gZnJvbSB0aGUgY29uZmVyZW5jZSByb29tIAorICAgICogW09QRU5NRUVUSU5HUy01MjVdIC0gRm9udCBzdHlsZXMgaWNvbiBpcyBlbmFibGVkIGZvciBQdGl2YXRlIENoYXQgaWYgdGhlICJBbGxvdyBmb250IHN0eWxlcyIgaXMgbm90IGVuYWJsZWQgZm9yIGNvbmZlcmVuY2Ugcm9vbQorICAgICogW09QRU5NRUVUSU5HUy01MjZdIC0gTm90IGVub3VnaCBjaGVja2luZyBpbiB0aGUgc2NyZWVuc2hhcmluZy9yZWNvcmRpbmcKKyAgICAqIFtPUEVOTUVFVElOR1MtNTMwXSAtIE5ldHdvcmsgdGVzdGluZyB0b29sIG9uIGxvZ2luIHBhZ2UgZG9lcyBub3Qgd29yayB3aGVuIGhhdmluZyBPTSBjb25maWd1cmVkIGZvciBIVFRQUyBhbmQgUlRNUFMKKyAgICAqIFtPUEVOTUVFVElOR1MtNTMxXSAtIEVycm9yIE1pc3NpbmdbWFhYWF0KKyAgICAqIFtPUEVOTUVFVElOR1MtNTM2XSAtIEluIHVwbG9hZCBkaWFsb2cgIlNlbGVjdCBmaWxlIiBkb2VzIG5vdCB3b3JrCisgICAgKiBbT1BFTk1FRVRJTkdTLTU0MF0gLSBVcGxvYWRpbmcgb2YgLm9kdCBmaWxlcworICAgICogW09QRU5NRUVUSU5HUy01NTJdIC0gUmVsZWFzZSBibG9ja2luZyBVSSBpc3N1ZXMKKyAgICAqIFtPUEVOTUVFVElOR1MtNTYxXSAtIFZpZGVvIGlzIG5vdCByZW1vdmVkIG9uIFdoaXRlYm9hcmQgY2xvc2luZworICAgICogW09QRU5NRUVUSU5HUy01NjNdIC0gIkJsYWNrIGJveCIgaXMgZGlzcGxheWVkIG9uIHRlc3QgYXVkaW8vdmlkZW8gc2V0dXAgZGlhbG9nCisgICAgKiBbT1BFTk1FRVRJTkdTLTU2NV0gLSBTdGFja292ZXJmbG93IEV4Y2VwdGlvbiB3aGVuIHlvdSBnb3RvIHlvdXIgdXNlciBwcm9maWxlIGFuZCB0cnkgdG8gc2F2ZSBpdC4KKyAgICAqIFtPUEVOTUVFVElOR1MtNTY2XSAtIE5vIGRlZmF1bHQgdGltZXpvbmUgc2VsZWN0aW9uIGluIHJlZ2lzdHJhdGlvbi9zaWduIHVwIHdoZW4gdXNlciBpcyBpbiB0aW1lem9uZSArMTIKKyAgICAqIFtPUEVOTUVFVElOR1MtNTY3XSAtIElmIHlvdSBoaXQgdGhlICJzdGFydCB1cGxvYWQiIGJ1dHRvbiB0d2ljZSwgd2hpbGUgdGhlIGNvbnZlcnNpb24gaXMgcnVubmluZywgT3Blbm1lZXRpbmdzIHdpbGwgcnVuIGludG8gYW4gZXJyb3IKKyAgICAqIFtPUEVOTUVFVElOR1MtNTY4XSAtIE9wZW5NZWV0aW5ncyByZXF1ZXN0cyBhY2Nlc3MgdG8gQ2FtIGV2ZW4gaWYgdGhlcmUgaXMgbm9uZQorICAgICogW09QRU5NRUVUSU5HUy01NjldIC0gRmF1bHR5IGhpZ2hwZXJmIHNldHRpbmdzIGluIGJhdCBzY3JpcHQKKyAgICAqIFtPUEVOTUVFVElOR1MtNTcyXSAtIEVtcHR5IGZpZWxkcyBhcmUgcmVwbGFjZWQgd2l0aCBzdHJpbmcgIm51bGwiIGFmdGVyIGV4cG9ydCZpbXBvcnQKKyAgICAqIFtPUEVOTUVFVElOR1MtNTgwXSAtIFNtc2xpYiAzLjUuMyBzaG91bGQgYmUgdXNlZC4KKyAgICAqIFtPUEVOTUVFVElOR1MtNTgyXSAtIDIuMCBSb29tUG9sbCBhbmQgQ29uZmlncyByZXN0b3JlIGZhaWxlZAorCisKKworCisqKiBJbXByb3ZlbWVudAorICAgICogW09QRU5NRUVUSU5HUy05M10gLSBDcmVhdGUgT3Blbm1lZXRpbmdzIHBsdWctaW4KKyAgICAqIFtPUEVOTUVFVElOR1MtMTE5XSAtIE5ldyB1c2VycyBmcmVuY2ggbWFudWFsCisgICAgKiBbT1BFTk1FRVRJTkdTLTI5OV0gLSBMYW5ndWFnZSBpbXBvcnQgc2hvdWxkIGJlIGltcHJvdmVkIHRvIHRha2UgbGVzcyB0aW1lCisgICAgKiBbT1BFTk1FRVRJTkdTLTMzOV0gLSBGaWxlIGxvY2F0aW9uIGRldGVjdGlvbiBzaG91bGQgYmUgY2VudHJhbGl6ZWQKKyAgICAqIFtPUEVOTUVFVElOR1MtMzQ5XSAtIE9NIHNob3VsZCBiZSBzY2FsYWJsZSAKKyAgICAqIFtPUEVOTUVFVElOR1MtMzU2XSAtIE1vZGlmeSBSb29tcyBtZW51IHRvIGhhdmUgdGhyZWUgb3B0aW9ucyBmb3IgZWFjaCBvZiB0aGUgcm9vbSB0eXBlcworICAgICogW09QRU5NRUVUSU5HUy0zNTddIC0gVXNlcnMgc2hvdWxkIGZpcnN0IGxvZyBpbnRvICJQcml2YXRlIHJvb21zIiwgaGF2ZSBhcyBhIEFkbWluIHNlbGVjdGFibGUgb3B0aW9uIGZvciB3aGVyZSB1c2VycyBmaXJzdCBsb2cgaW50bworICAgICogW09QRU5NRUVUSU5HUy0zNjFdIC0gSXQgc2hvdWxkIGJlIGF2YWlsYWJsZSB0byBzZXQgbG9nbyBpbiBPTQorICAgICogW09QRU5NRUVUSU5HUy0zODRdIC0gTWVudGlvbiB0aGF0IHRoZSBmaWxlIHBhcmFtZXRlciBpcyBvcHRpb25hbCBmb3IgdGhlIGFkbWluIHNldHVwIHNjcmlwdAorICAgICogW09QRU5NRUVUSU5HUy0zODZdIC0gSW1wb3J0L0V4cG9ydCBzaG91bGQgYmUgYXV0b21hdGljIGJhc2VkIG9uIEFubm90YXRpb25zCisgICAgKiBbT1BFTk1FRVRJTkdTLTM4N10gLSBJdCBzaG91bGQgYmUgcG9zc2libGUgdG8gY3JlYXRlIEFwcG9pbnRtZW50IGFuZCB1c2UgZXhpc3RlbnQgcm9vbQorICAgICogW09QRU5NRUVUSU5HUy0zOTBdIC0gT3Blbm1lZXRpbmdzIFBsdWdpbiBmb3IgQml0cml4IG5lZWQgdG8gYmUgaW1wbGVtZW50ZWQKKyAgICAqIFtPUEVOTUVFVElOR1MtMzk1XSAtIEFiaWxpdHkgdG8gYWRkIG11bHRpcGxlIGV4dGVybmFsIGF0dGVuZGVlcyBzaG91bGQgYmUgYWRkZWQgdG8gdGhlIGNhbGVuZGFyCisgICAgKiBbT1BFTk1FRVRJTkdTLTM5N10gLSBQcml2YXRlIGNoYXQgd2l0aCBjaGF0IGRpc2FibGVkCisgICAgKiBbT1BFTk1FRVRJTkdTLTM5OF0gLSBVcGRhdGVkIGZyZW5jaCB0cmFuc2xhdGlvbiBmb3IgT00gMi4xCisgICAgKiBbT1BFTk1FRVRJTkdTLTM5OV0gLSBqaXRzaSBvcGVubWVldGluZ3MgcGx1Z2luCisgICAgKiBbT1BFTk1FRVRJTkdTLTQwMF0gLSBJbXByb3ZlIHZvbHVtZSBzbGlkZXIKKyAgICAqIFtPUEVOTUVFVElOR1MtNDM2XSAtIEFiaWxpdHkgdG8gbW9kZXJhdGUgcm9vbSBjaGF0IHNob3VsZCBiZSBhZGRlZAorICAgICogW09QRU5NRUVUSU5HUy00NzBdIC0gU0lQIG1lZXRpbmcgZXh0ZW5zaW9ucworICAgICogW09QRU5NRUVUSU5HUy00NzddIC0gUG9zc2liaWxpdHkgdG8gY29weSBpbnZpdGF0aW9uIGxpbmsgdG8gdGhlIGNsaXBib2FyZCBzaG91bGQgYmUgYWRkZWQKKyAgICAqIFtPUEVOTUVFVElOR1MtNDc4XSAtIEl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBlbmFibGUgYXV0byB2aWRlb3BvZCBzZWxlY3Rpb24KKyAgICAqIFtPUEVOTUVFVElOR1MtNDgwXSAtIEl0IHdvdWxkIGJlIGJldHRlciB0byByZW1vdmUgY29uZmlybWF0aW9uIGRpYWxvZyB3aGVuIHVzZXIgdHVybnMgbWljcm8gb24vb2ZmLgorICAgICogW09QRU5NRUVUSU5HUy00OTddIC0gQ29uZmlybWF0aW9uIGRpb2xvZyBmb3IgdGhlIHR1cm5pbmcgbWljcm8gb24vb2ZmIGlzIGluY29udmVuaWVudC4KKyAgICAqIFtPUEVOTUVFVElOR1MtNTAxXSAtIGZyZXNoIGJ1aWxkIGZhaWxzIHdpdGggY2xhc3Mgb3JnL2pkb20vSkRPTUV4Y2VwdGlvbiBub3QgZm91bmQgaW4gYW5ha2lhIGJ1aWxkIHNlY3Rpb24KKyAgICAqIFtPUEVOTUVFVElOR1MtNTE4XSAtIFNtcyB0ZXh0IHNlbnQgYXMgYSBtZWV0aW5nIHJlbWluZGVyIGlzIHRvbyBsb25nIHNvbWV0aW1lLgorICAgICogW09QRU5NRUVUSU5HUy01MjddIC0gQ29uZmlybSBhbiBleGNsdXNpdmUgYXVkaW8KKyAgICAqIFtPUEVOTUVFVElOR1MtNTI5XSAtIEFFQyBzaG91bGQgYmUgdXRpbGl6ZWQgaW4gT00KKyAgICAqIFtPUEVOTUVFVElOR1MtNTM1XSAtIGFuIHVwZGF0ZSBvZiB0aGUgZ2VybWFuIGxhbmd1YWdlIGZpbGUKKyAgICAqIFtPUEVOTUVFVElOR1MtNTQxXSAtIFVwZGF0ZWQgdmVyc2lvbiBvZiBGcmVuY2ggbGFuZ3VhZ2UgZmlsZQorICAgICogW09QRU5NRUVUSU5HUy01NjJdIC0gVG8gaW1wb3J0IHBwdCBwcmVzZW50YXRpb24gZGVsZXRlIHBhZ2UKKyAgICAqIFtPUEVOTUVFVElOR1MtNTgzXSAtIEFiaWxpdHkgdG8gZGlzYWJsZSBlbmhhbmNlZCBtaWNyb3Bob25lIHNob3VsZCBiZSBhZGRlZAorCisqKiBOZXcgRmVhdHVyZQorICAgICogW09QRU5NRUVUSU5HUy0xMTFdIC0gQ29tbWFuZCBsaW5lIGFkbWluIG5lZWQgdG8gYmUgY3JlYXRlZAorICAgICogW09QRU5NRUVUSU5HUy0zNDJdIC0gUHJpdmF0ZSBDaGF0IHNob3VsZCBiZSBhdmFpbGFibGUgaW4gdGhlIHJvb20KKyAgICAqIFtPUEVOTUVFVElOR1MtMzUwXSAtIEhvdCBrZXkgc2hvdWxkIGJlIGFkZGVkIHRvIGJlIGFibGUgdG8gInJlYXJyYW5nZSIgdmlkZW8gd2luZG93cyBpbiB0aGUgcm9vbQorICAgICogW09QRU5NRUVUSU5HUy0zNTFdIC0gQWRkIGEgcG9zc2liaWxpdHkgdG8gc2VuZCBzbXMgYXMgYW4gYXBwb2ludG1lbnQgcmVtaW5kZXIKKyAgICAqIFtPUEVOTUVFVElOR1MtMzU0XSAtIFZvbHVtZSBzbGlkZXIKKyAgICAqIFtPUEVOTUVFVElOR1MtMzgzXSAtIFBsdWdpbiBmb3IgSm9vbWxhIHNob3VsZCBiZSBhZGRlZCB0byBPcGVubWVldGluZ3MKKworCisKKworCisKKyoqIFRhc2sKKyAgICAqIFtPUEVOTUVFVElOR1MtNDFdIC0gT00gd2l0aG91dCBwcml2YXRlIHN0b3JhZ2UgYXJlYQorICAgICogW09QRU5NRUVUSU5HUy0xMDddIC0gVW5pZnkgZGF0YWJhc2Ugc2NoZW1hCisgICAgKiBbT1BFTk1FRVRJTkdTLTI0OF0gLSBSZW1vdmUgTEdQTCBJY29ucyBmcm9tIFN5bWJvbC9DbGlwYXJ0cyBhbmQgRW1vdGljb25zCisgICAgKiBbT1BFTk1FRVRJTkdTLTMwNl0gLSBJbml0aWFsIG5ldHdvcmsgcXVhbGl0eSB0ZXN0CisgICAgKiBbT1BFTk1FRVRJTkdTLTM0MV0gLSBVcGRhdGUgdG8gcG9ydHVndWVzIGJyYXNpbCBMYW5ndWFnZQorICAgICogW09QRU5NRUVUSU5HUy00MTRdIC0gRGVsZXRlIFNJUCBBcHBsZXQgZnJvbSBzdGFjaworICAgICogW09QRU5NRUVUSU5HUy00MTddIC0gSG93IHRvIGFkZC9yZWdpc3RlciBTSVAgZXh0ZW5zaW9uIGluIE9wZW5NZWV0aW5nID8KKyAgICAqIFtPUEVOTUVFVElOR1MtNDQ2XSAtIENyZWF0ZSBhIE1hc3RlciBiYWNrdXAgRmlsZSBmb3IgbGFzdCB2ZXJzaW9ucyAoaW5jbHVkaW5nIGFsbCBnZW5lcmF0ZWQgZGF0YSkKKyAgICAqIFtPUEVOTUVFVElOR1MtNTIyXSAtIGFkZCBSZWRtaW5lIFBsdWdpbiBMaW5rIHRvIEhvbWVQYWdlCisgICAgKiBbT1BFTk1FRVRJTkdTLTU4NV0gLSBDbHVzdGVyaW5nIGRvY3VtZW50YXRpb24KKworCisKKyoqIFRlc3QKKyAgICAqIFtPUEVOTUVFVElOR1MtNTBdIC0gY29udGVudCBvZiB3aGl0ZWJvYXJkcworCisKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCitSZWxlYXNlIE5vdGVzIC0gT3Blbk1lZXRpbmdzIC0gVmVyc2lvbiAyLjAtSU5DVUJBVElORworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorU3ViLXRhc2sKKworICAgIFtPUEVOTUVFVElOR1MtOF0gLSBHZW5lcmF0ZSBDYWxlbmRhckFQSSBmb3IgU09BUC9SRVNUIFdlYlNlcnZpY2VzCisgICAgW09QRU5NRUVUSU5HUy05XSAtIERlc2lnbiBNb2NrVXAgZm9yIG5ldyBDYWxlbmRhciBVSQorICAgIFtPUEVOTUVFVElOR1MtNDBdIC0gTWVyZ2UgQXVkaW8vVmlkZW8gY29tcG9uZW50cyB0byB0cnVuaworICAgIFtPUEVOTUVFVElOR1MtNDRdIC0gcmVtb3ZlIGFsbCBvbGQgYXVkaW8vdmlkZW8gY29tcG9uZW50cworICAgIFtPUEVOTUVFVElOR1MtNDddIC0gZml4IFNjb3BlQXBwbGljYXRpb25BZGFwdGVyIC8gc3luYyBhbmQgbWVzc2FnZSBicm9hZGNhc3RpbmcgbWVjaGFuaXNtIHRvIG5vdCBzZW5kIG1lc3NhZ2VzIHRvIFNXRjEwIGNsaWVudAorICAgIFtPUEVOTUVFVElOR1MtNTFdIC0gZml4IHVybCBwYXJhbXMgKGludml0YXRpb25IYXNoIC8gc2VjdXJlSGFzaCAvIGxhbmd1YWdlX2lkIC8gcm9vbVNjb3BlSWQgLyBldCBjZXRlcmEgKSB0byBiZSBmb3J3YXJkZWQgdG8gaW5uZXIgU1dGIGNvbXBvbmVudHMKKyAgICBbT1BFTk1FRVRJTkdTLTUyXSAtIGZpeCBpY29uIHN0YXR1cyBpbiBuZXcgdmlkZW8gY29tcG9uZW50cworICAgIFtPUEVOTUVFVElOR1MtNTNdIC0gQWRkIHNlY3VyaXR5IG1lY2hhbmlzbSB0byBMb2NhbENvbm5lY3Rpb24gc3Vic2NyaWJlcnMKKyAgICBbT1BFTk1FRVRJTkdTLTU0XSAtIGZpeCByZWNvcmRlciB0byB1c2UgbmV3IGF1ZGlvL3ZpZGVvIGNvbXBvbmVudHMgYW5kIGZpeCByZWNvcmRpbmcgaXRzZWxmIHRvIHJlZmVyZW5jZSBjb3JyZWN0IHN0cmVhbXMKKyAgICBbT1BFTk1FRVRJTkdTLTU1XSAtIGZpeCB0ZXN0aW5nIGFwcGxpY2F0aW9uICg1IHNlY29uZCB2aWRlbyByZWNvcmRpbmcgb24gcm9vbSBlbnRlcikgdG8gdXNlIG5ldyBhL3YgY29tcG9uZW50cworICAgIFtPUEVOTUVFVElOR1MtNjFdIC0gZml4IHNjcmVlbnNoYXJpbmcgcGxheWVyIHRvIHVzZSB0aGUgbmV3IGF1ZGlvL3ZpZGVvIGNvbXBvbmVudHMKKyAgICBbT1BFTk1FRVRJTkdTLTYyXSAtIENsZWFuIHVwIDUtc2Vjb25kIHJlY29yZGluZ3MgdXNpbmcgYSBzY2hlZHVsZXIKKyAgICBbT1BFTk1FRVRJTkdTLTY1XSAtIGZpeCB3aGl0ZWJvYXJkIHZpZGVvIHBsYXllciB0byB1c2UgdGhlIG5ldyBhdWRpby92aWRlbyBjb21wb25lbnRzCisgICAgW09QRU5NRUVUSU5HUy03MV0gLSBmaXggaW50ZXJ2aWV3IHJvb20gdHlwZSB0byB1c2UgbmV3IGF1ZGlvL3ZpZGVvIGNvbXBvbmVudHMKKyAgICBbT1BFTk1FRVRJTkdTLTczXSAtIGZpeCBtdXRlIGZ1bmN0aW9uYWxpdHkgaW4gbmV3IHZpZGVvIGNvbXBvbmVudHMKKyAgICBbT1BFTk1FRVRJTkdTLTc3XSAtIGNoYW5nZURldmljZS5senggbXVzdCBiZSB0cmFuc2Zvcm1lZCB0byBTV0YxMAorICAgIFtPUEVOTUVFVElOR1MtNzldIC0gU2hhcmVkT2JqZWN0IGluIFNXRjEwIGRvZXMgbm90IHN0b3JlIHNldHRpbmdzCisgICAgW09QRU5NRUVUSU5HUy04MF0gLSBTb21lIG5vdGlmaWNhdGlvbiB3aW5kb3dzIG5lZWQgdG8gYmUgbW92ZWQgdG8gU1dGMTAKKyAgICBbT1BFTk1FRVRJTkdTLTg5XSAtIEZpeCBuZXcgb3B0aW9uICJoaWRlV2hpdGVib2FyZCIgd2l0aCBsYXlvdXQgb2YgdmlkZW8gcG9kcworICAgIFtPUEVOTUVFVElOR1MtOTddIC0gUlRQTVNDbGllbnQgZm9yIFNjcmVlblNoYXJpbmcgc2hvdWxkIGJlIGNyZWF0ZWQvdGVzdGVkCisgICAgW09QRU5NRUVUSU5HUy05OF0gLSAiQm9ycm93ZWQiIGNvZGUgc2hvdWxkIGJlIHJlbW92ZWQgZnJvbSBTY3JlZW5TaGFyaW5nIGNsaWVudAorICAgIFtPUEVOTUVFVElOR1MtMTA1XSAtIEFkZCB0aGUgbGljZW5zZSBoZWFkZXIgdG8gYWxsIFNXRjEwIGZpbGVzCisgICAgW09QRU5NRUVUSU5HUy0xNzBdIC0gV2hlbiB5b3UgcmVwdWJsaXNoIHlvdXIgc3RyZWFtIHdoaWxlIHJlY29yZGluZyBvciBzdWRkZW5seSBsZWF2ZSB0aGUgbWVldGluZywgdGhlIHJlY29yZGluZyBoYXMgbm8gYXVkaW8KKworQnVnCisKKyAgICBbT1BFTk1FRVRJTkdTLTVdIC0gSW52aXRhdGlvbiBkZWZhdWx0IGxhbmd1YWdlCisgICAgW09QRU5NRUVUSU5HUy0xNV0gLSBVc2FiaWxpdHkgcHJvYmxlbSB3aXRoIGxvZ2luIGF0IGh0dHA6Ly9kZW1vLm9wZW5tZWV0aW5ncy5kZS9vcGVubWVldGluZ3MvCisgICAgW09QRU5NRUVUSU5HUy0xOF0gLSBGaWxlIHVwbG9hZCBubyB3b3JrCisgICAgW09QRU5NRUVUSU5HUy0yNl0gLSBXaGl0ZWJvYXJkIGVycm9yICJhcnJvdyB0b29sIiBkcmFnZ2luZyBmcm9tIHJpZ2h0IHRvIGxlZnQgaW4gYW55IGFuZ2xlLgorICAgIFtPUEVOTUVFVElOR1MtMjhdIC0gTERBUCB3cm9uZyBkZWZhdWx0IG1hcHBpbmcgZm9yIGZpcnN0bmFtZQorICAgIFtPUEVOTUVFVElOR1MtMzFdIC0gVXBsb2FkIGZpbGVzIHdpbGwgbm90IGNvbnZlcnQgdG8gU1dGLgorICAgIFtPUEVOTUVFVElOR1MtNDhdIC0gTG9nIGFyZSBlaXRoZXIgbm90IHdyaXR0ZW4gb3IgaW4gdGhlIHdyb25nIGxvZ2ZpbGUKKyAgICBbT1BFTk1FRVRJTkdTLTU2XSAtIExEQVAgYXV0aGVudGljYXRpb24gaXMgbm90IGNvcnJlY3QKKyAgICBbT1BFTk1FRVRJTkdTLTY0XSAtIHdoaXRlYm9hcmQgaWQKKyAgICBbT1BFTk1FRVRJTkdTLTg3XSAtIEFsbCBEQiByZWxhdGVkIEpVbml0IHRlc3RzIGFyZSBmYWlsZWQKKyAgICBbT1BFTk1FRVRJTkdTLTkxXSAtIEZpeCBmaWVsZCB0eXBlJ3Mgb2YgY29tbWVudC9kZXNjcmlwdGlvbiBmaWVsZHMgdG8gdXNlIGRhdGF0eXBlIFRleHQgKGluc3RlYWQgb2YgVkFSQ0hBUigyNTUpKQorICAgIFtPUEVOTUVFVElOR1MtMTE0XSAtIFdpdGggdHJ1bmsgc3ZuIDEzMDcyMjE6IExEQVAgYXV0aGVudGljYXRpb24gZmFpbHMgYmVjYXVzZSB1c2VyIGNhbid0IGJlIGltcG9ydGVkIGludG8gbG9jYWwgREIKKyAgICBbT1BFTk1FRVRJTkdTLTExNl0gLSBNZW51IGJhciBzaG9ydGN1dHMgZG8gbm90IHdvcmsKKyAgICBbT1BFTk1FRVRJTkdTLTExOF0gLSBBY3Rpdml0eSBVSTogRml4IGR1cGxpY2F0ZWQgY2FsbHMsIHJlbW92YWwgb2YgaXRlbXMgZG9lcyBub3Qgd29yaworICAgIFtPUEVOTUVFVElOR1MtMTIyXSAtIEZpeCBKVW5pdCB0ZXN0cworICAgIFtPUEVOTUVFVElOR1MtMTIzXSAtIFdpbGRjYXJkIG9uIGNyZWF0aW5nIFdlYlNlcnZpY2UgZG9jcyBkb2Vzbid0IHdvcmsKKyAgICBbT1BFTk1FRVRJTkdTLTEyN10gLSBCYWNrdXBcSW1wb3J0IEFzdGVyaXNrIHJlbGF0ZWQgdGFibGVzCisgICAgW09QRU5NRUVUSU5HUy0xMzNdIC0gU291cmNlcyBwcm9kdWNlZCBieSBuaWdodGx5IGJ1aWxkIHNob3VsZCBiZSBidWlsZGFibGUgd2l0aCBhbnQKKyAgICBbT1BFTk1FRVRJTkdTLTEzNV0gLSBWaWRlbyB3aW5kb3cgY2FuJ3QgYmUgbWF4aW1pemVkCisgICAgW09QRU5NRUVUSU5HUy0xMzddIC0gTG9hZGluZyBvZiBzdG9yZWQgd2hpdGVib2FyZHMgZG9lc24ndCB3b3JrIChlcnJvciBpbiBsb2FkaW5nIHBhdGgpCisgICAgW09QRU5NRUVUSU5HUy0xMzhdIC0gRXJyb3JzIGFuZCBxdWFsaXR5IG9mIFJlY29yZGluZyB3aXRoIHNjcmVlbnNoYXJpbmcgYXBwbGljYXRpb24KKyAgICBbT1BFTk1FRVRJTkdTLTEzOV0gLSBVbmFibGUgdG8gQWRkIFVzZXIgaW50byBVc2VyZ3JvdXBzCisgICAgW09QRU5NRUVUSU5HUy0xNDBdIC0gTG9naW4gb3B0aW9ucy9mZWF0dXJlcyBiZWVuIHJlZHVjZWQgaW4gY3VycmVudCB1cGRhdGUKKyAgICBbT1BFTk1FRVRJTkdTLTE0MV0gLSBvbk1ldGFEYXRhIEV2ZW50IG5vdCB0aHJvd24gaW4gQVMzIE5vbi1EZWJ1ZyB2ZXJzaW9uCisgICAgW09QRU5NRUVUSU5HUy0xNDJdIC0gMS0yLTMtNCBidXR0b25zIG9uIGRhc2hib2FyZCBkb24ndCBkbyBhbnl0aGluZworICAgIFtPUEVOTUVFVElOR1MtMTQ0XSAtIFdoZW4gdXNpbmcgb3BlbkxEQVAgYXV0aGVudGljYXRpb24sIHRoZSBzb3VyY2UgY29kZSB1c2VzIHRoZSBoYXJkY29kZWQgJ3VpZCcgYXR0cmlidXRlIHRvIG1hcCBsb2dpbnMgYW5kIHVzZXIgRE5zIGluc3RlYWQgb2YgdGhlIGZpZWxkX3VzZXJfcHJpbmNpcGFsIHBhcmFtZXRlcgorICAgIFtPUEVOTUVFVElOR1MtMTQ1XSAtIFVubXV0aW5nL2V4Y2x1c2l2ZSBhdWRpbyBkb2Vzbid0IHdvcmsgYW5kIGljb25zIHNob3cgd3Jvbmcgc3RhdHVzIGluIHZpZGVvIHBvZCBhZnRlciBlbnRlcmluZyBhIHJvb20KKyAgICBbT1BFTk1FRVRJTkdTLTE0OV0gLSBFcnJvciB3aGlsZSBpbnN0YWxsaW5nIG9uIE15U1FMIERCIG9wZW5tZWV0aW5ncy0yLjAuMC5yMTMxMTExNS0wOC0wNC0yMDEyXzIzMDcKKyAgICBbT1BFTk1FRVRJTkdTLTE1MF0gLSBFcnJvciByZXN0b3JpbmcgcGFzc3dvcmQKKyAgICBbT1BFTk1FRVRJTkdTLTE1Nl0gLSBVSSBCVUdTPworICAgIFtPUEVOTUVFVElOR1MtMTU4XSAtIERlZ3JhZGF0aW9uIG9mIHRoZSBzb3VuZCBxdWFsaXR5IGluIHJlY29yZGluZ3MgaW4gdGhlIHJlY2VudCByZWxlYXNlCisgICAgW09QRU5NRUVUSU5HUy0xNjFdIC0gVUkgQnVncyBpbiBwcml2YXRlIG1lc3NhZ2VzCisgICAgW09QRU5NRUVUSU5HUy0xNjJdIC0gRXhjZXB0aW9uIGluIFNjcmVlbnNoYXJpbmcKKyAgICBbT1BFTk1FRVRJTkdTLTE2M10gLSBSZWNvcmRpbmcgZG9lcyBubyBtb3JlIHdvcmsgaWYgeW91IHN0YXJ0IHRvIHNoYXJlIGF1ZGlvL3ZpZGVvIEFGVEVSIHN0YXJ0aW5nIHRoZSByZWNvcmRpbmcKKyAgICBbT1BFTk1FRVRJTkdTLTE2NF0gLSBqYXZhLmxhbmcuQXJyYXlJbmRleE91dE9mQm91bmRzRXhjZXB0aW9uOiA1IGluIFJlY29yZGluZyBDb252ZXJzaW9uCisgICAgW09QRU5NRUVUSU5HUy0xNjVdIC0gVmlkZW8gZnJlZXplcyBhcyBzb29uIGFzIHR3byBwZW9wbGUgaGF2ZSBhdWRpby92aWRlbyB0dXJuZWQgb24gYW5kIHlvdSBzdGFydCB0byByZWNvcmQgdGhlIG1lZXRpbmcgPT4gQ29udmVydCBGTFYgd3JpdGVycyB0byBhY3QgYXN5bmMKKyAgICBbT1BFTk1FRVRJTkdTLTE3MV0gLSBTY3JlZW5zaGFyaW5nIG5vdGlmaWNhdGlvbiBub3Qgc2hvd2luZyB3aGVuIGFscmVhZHkgcnVubmluZworICAgIFtPUEVOTUVFVElOR1MtMTcyXSAtIEhvbWUgZHJpdmUgaW4gcmVjb3JkZXIgVUksIG1pbmltaXplIHRoZSBob21lIGRyaXZlIG1ha2VzIHRoZSBsaXN0IG9mIGZpbGVzIGVtcHR5LCBkcmFnIGFuZCByb3AgZmlsZSBmcm9tIGhvbWUgZHJpdmUgdG8gcHVibGljIGRyaXZlCisgICAgW09QRU5NRUVUSU5HUy0xNzRdIC0gQ0xJIGltcG9ydCBvZiBiYWNrdXAgZG9lcyBub3Qgd29yaworICAgIFtPUEVOTUVFVElOR1MtMTc1XSAtIENMSSBpbnN0YWxsZXIgZG9lcyBub3QgY3JlYXRlIGluc3RhbGwueG1sCisgICAgW09QRU5NRUVUSU5HUy0xNzZdIC0gSW1wb3J0IG9mIEJhY2t1cCBmcm9tIHZlcnNpb24gMS45LnggZmFpbHMgdG8gaW1wb3J0IGNvbmZlcmVuY2Ugcm9vbXMKKyAgICBbT1BFTk1FRVRJTkdTLTE3N10gLSBNZWV0aW5nIFJvb20gSW52aXRhdGlvbiBMaW5rIE5vdCB3b3JraW5nCisgICAgW09QRU5NRUVUSU5HUy0xNzhdIC0gSW52aXRlZCB1c2VyIGhhcyBhY2Nlc3MgdG8gYWRtaW5zdHJhdGlvbiBwYW5lbAorICAgIFtPUEVOTUVFVElOR1MtMTc5XSAtIFVzZXIgTm90IFJlbW92ZWQgZnJvbSBjaGF0IHBhcnRpY2lwYW50cyB3aW5kb3cgYWZ0ZXIgbG9nb3V0Li4KKyAgICBbT1BFTk1FRVRJTkdTLTE4MV0gLSBWaWRlbyBXaW5kb3csIENvbmZlcmVuY2Ugcm9vbQorICAgIFtPUEVOTUVFVElOR1MtMTgyXSAtIE9NIG5lZWQgdG8gYmUgcmVzdGFydGVkIGFmdGVyIGZyZXNoIGluc3RhbGxhdGlvbiB0byBnZXQgbWVudSBsaXN0CisgICAgW09QRU5NRUVUSU5HUy0xODddIC0gTW9kZXJhdG9yIGFuZCBoaXMgcm9vbQorICAgIFtPUEVOTUVFVElOR1MtMTg4XSAtIEluc2VydGluZyByb29tLCBob3Jpem9udGFsIGJhciBkb2VzIG5vdCBhcHBlYXIKKyAgICBbT1BFTk1FRVRJTkdTLTE5MF0gLSBQcm9ibGVtIHdpdGggbGFuZ3VhZ2Ugd2hlbiBpbnZva2luZyBPTSBmcm9tIE1vb2RsZSBtb2R1bGUKKyAgICBbT1BFTk1FRVRJTkdTLTE5MV0gLSBXaGVuIEkgZW5hYmxlIEhUVFBTIGFuZCBSVE1QUyB0aGUgc2NyZWVuIHNoYXJpbmcgcmVzdWx0YW50IEpOTFAgZmlsZSBoYXMgdGhlIHdyb25nIGFkZHJlc3MgPSBodHRwOi8vc2VydmVybmFtZTo0NDMvLi4uLiBpbnN0ZWFkIG9mIGh0dHBzOi8vc2VydmVybmFtZS8uLi4uLiBpZiBJIGVkaXQgdGhlIEpOTFAgZmlsZSBieSBoYW5kIG9uIHRoZSBjbGllbnQgbGV2ZWwgYW5kIGNoYW5nZSB0aGUgYWRkcmVzcyBpdCB3b3JrcworICAgIFtPUEVOTUVFVElOR1MtMTkzXSAtIEZpeCB0aW1lem9uZXMgdGhhdCBhcmUgbWlzc2luZworICAgIFtPUEVOTUVFVElOR1MtMTk1XSAtIFNlbmQgcHJpdmF0ZSBtZXNzYWdlIC8gU2hvdyB1c2VyIHByb2ZpbGUgYnV0dG9ucworICAgIFtPUEVOTUVFVElOR1MtMTk2XSAtIENhbGVuZGFyIEljYWwgLyBTaW1wbGUgTWFpbCAtIGRvdWJsZSBpbnZpdGF0aW9uIG1haWwKKyAgICBbT1BFTk1FRVRJTkdTLTE5N10gLSBDYWxlbmRhciBJY2FsIC8gU2ltcGxlIE1haWwgLSByb29tIGxhbmd1YWdlCisgICAgW09QRU5NRUVUSU5HUy0xOThdIC0gUGFzc3dvcmQgYW5kIGRhc2hib2FyZCBjYWxlbmRhciBldmVudCBsaXN0CisgICAgW09QRU5NRUVUSU5HUy0xOTldIC0gU2NyZWVuc2hhcmluZyBhbmQgcmVjb3JkaW5nIGRvZXMgbm90IHdvcmsgdW5kZXIgT1NYIHdpdGggSmF2YSA2NEJpdAorICAgIFtPUEVOTUVFVElOR1MtMjAwXSAtIEludml0YXRpb24gbGluayBkb2VzIG5vdCBhcnJpdmUKKyAgICBbT1BFTk1FRVRJTkdTLTIwM10gLSB0d28gbGFuZ3VhZ2VzIGFyZSBzaG93bgorICAgIFtPUEVOTUVFVElOR1MtMjA1XSAtIFJlcGx5VG8gRmllbGQgbGVhZHMgdG8gZXhjZXB0aW9uIHdoZW4gc2VuZGluZyBlbWFpbHMgdG8gZXh0ZXJuYWwgdXNlcnMKKyAgICBbT1BFTk1FRVRJTkdTLTIwNl0gLSB3cm9uZyBtZWV0aW5nIHRpbWVzCisgICAgW09QRU5NRUVUSU5HUy0yMDhdIC0gSW5jb3JyZWN0bHkgZmlsbGVkICJMYXN0IG5hbWUiIGZpZWxkIG9uIHRoZSBVc2VyIGRldGFpbHMgZm9ybSB3aGVuIGNyZWF0ZWQgdXNlciB3aXRoICJTaWduIGluIiBmb3JtCisgICAgW09QRU5NRUVUSU5HUy0yMDldIC0gRW5jb2RpbmcgYXQgaW5zdGFsbCBPcGVuTWVldGluZ3MKKyAgICBbT1BFTk1FRVRJTkdTLTIxMF0gLSBDYWxlbmRhciBldmVudAorICAgIFtPUEVOTUVFVElOR1MtMjExXSAtIE51bGxQb2ludGVyRXhjZXB0aW9uIGluIEZMVlJlY29yZGVyU2VydmljZS5zdG9wUmVjb3JkaW5nU2hvdworICAgIFtPUEVOTUVFVElOR1MtMjE0XSAtIFdoZW4gY2FsZW5kYXIgZXZlbnQgaW52aXRhdGlvbiBpcyBzZW50LCBpbnZpdGF0aW9uX3RleHRfZnJvbSB2YWx1ZSBkaXNwbGF5cyB3aXRoIHRoZSBuYW1lIG9mIHRoZSBwZXJzb24gZm9yIHdob20gdGhlIGludml0YXRpb24gaXMgYmVpbmcgc2VudCB0byBidXQgc2hvdWxkIGJlIHNob3dpbmcgdGhlIHNlbmRlcidzIG5hbWUKKyAgICBbT1BFTk1FRVRJTkdTLTIxNV0gLSBDcmVhdGVkIGRhdGUgaXMgZHVwbGljYXRlZCB3aGVyZSByZXN0b3JpbmcgYmFzZSBmcm9tIGJhY2t1cAorICAgIFtPUEVOTUVFVElOR1MtMjE2XSAtIFVJIHByb2JsZW0KKyAgICBbT1BFTk1FRVRJTkdTLTIxOV0gLSDvv71EZWxldGXvv70gYnV0dG9uIGlzIG5vdCB2aXNpYmxlCisgICAgW09QRU5NRUVUSU5HUy0yMjVdIC0gSWYgb2JqZWN0IG9uIHdoaXRlYm9hcmQgb2YgdHlwZSAiZnJlZWRyYXciICgicGFpbnQiKSBpcyBkcmFnZ2VkL21vdmVkLCB0aGUgb2JqZWN0IGlzIGdvbmUgd2hlbiB5b3UgcmUtZW50ZXIgdGhlIHJvb20KKyAgICBbT1BFTk1FRVRJTkdTLTIyOV0gLSAiRXhpdCJidXR0b24gaXMgbm90IHNob3duIGZvciBpbnZpdGluZyB1c2VycyBmcm9tIHJvb20KKyAgICBbT1BFTk1FRVRJTkdTLTIzMF0gLSBFcnJvciBpbiB0aGUgZmllbGQgbmFtZSBvbiB0aGUgZm9ybSAiQWRkIGV4dGVybmFsIgorICAgIFtPUEVOTUVFVElOR1MtMjMyXSAtIFJvb21zIGFyZSBpbXBvcnRlZCB3aXRoIGludmFsaWQgcm9vbSB0eXBlcworICAgIFtPUEVOTUVFVElOR1MtMjMzXSAtIEZvbnQgc3R5bGVzIGluIHByb3BlcnR5UGFuZWwgYXJlIGdldHRpbmcgZGlzYWJsZWQuCisgICAgW09QRU5NRUVUSU5HUy0yMzRdIC0gVmlkZW8gYW5kIFNjcmVlbiBzaGFyaW5nIG5vdCB3b3JraW5nIHdpdGggSFRUUFMgYW5kIFJUTVBTIC0gSmF2YSBBcHBsaWNhdGlvbiBzdGFydHMgYnV0IGRvZXNudCBjb25uZWN0IC0gamF2YSB0cmFjZSBsb2dzIHNob3dzICJbV0FSTl0gW05pb1Byb2Nlc3Nvci0yXSBvcmcucmVkNS5zZXJ2ZXIubmV0LnJ0bXBzLlJUTVBTTWluYUlvSGFuZGxlciAtIEV4Y2VwdGlvbiBjYXVnaHQgS2V5c3RvcmUgb3IgcGFzc3dvcmQgYXJlIG51bGwiCisgICAgW09QRU5NRUVUSU5HUy0yMzddIC0gQ2FsZW5kZXIgcmVtaW5kZXIgZW1haWwgaW52aXRhdGlvbiBsaW5rIGZhaWxzIGR1ZSB0byBsaW5rIG1pc3NpbmcgIiZsYW5ndWFnZT14IiBpbiBVUkwKKyAgICBbT1BFTk1FRVRJTkdTLTIzOF0gLSBDYWxlbmRhciBzaG93cyBpbmNvcnJlY3QgZGF5IG9mIHdlZWsgZm9yIHRoZSBhY3R1YWwgZGF0ZSB3aGVuIHRpbWV6b25lIGlzIEdNVCsxMAorICAgIFtPUEVOTUVFVElOR1MtMjM5XSAtIENhbGVuZGFyIEV2ZW50IGRldGFpbHMgQ29tbWVudC9EZXNjcmlwdGlvbiBmaWVsZCB0ZXh0IGNhbiBvdmVyZmxvdyB0aGUgYm91bmRhcnkgb2YgdGhlIERlc2NyaXB0aW9uIGZpZWxkIG9mIHRoZSBNZWV0aW5nIFJvb20ncyBFdmVudCBkZXRhaWxzIGRpYWxvZyBib3gKKyAgICBbT1BFTk1FRVRJTkdTLTI0MV0gLSBDYW5ub3Qgc2VuZCBlbWFpbGVkIEludml0YXRpb25zIGZyb20gYSBNZWV0aW5nIHJvb20KKyAgICBbT1BFTk1FRVRJTkdTLTI0Ml0gLSBNb29kbGUgUGx1Z2luCisgICAgW09QRU5NRUVUSU5HUy0yNDRdIC0gQ2FsZW5kYXIgZG9lc24ndCBzaG93IERheSAvIFdlZWsgLyBNb250aAorICAgIFtPUEVOTUVFVElOR1MtMjQ2XSAtIFJlbW90ZSBDdXJzb3IgaXMgbm8gbW9yZSB2aXNpYmxlCisgICAgW09QRU5NRUVUSU5HUy0yNDldIC0gVXNpbmcgTERBUCB3aXRoIGxhdGVzdCBidWlsZCBmYWlscyB0byBsb2dpbiwgLSBhZnRlciBsb2dpbiBzY3JlZW4gaW0gcHJvbXB0ZWQgd2l0aCAiWW91IGFjY291bnQgaXMgYXNzaWduZWQgdG8gbXVsdGlwbGUgdXNlcmdyb3Vwcy4uLiAiIFRoZSBkcm9wIGRvd24gbGlzdCBpcyBlbXB0eSAtIEkgaGF2ZSBjaGVja2VkIHRoZSBNWVNRTCBEQiB0YWJsZSAib3JhZ2FuaXNhdGlvbnMiIGFuZCB0aGVyZSBhcmUgdHdvIGVudHJpZXMgdGhlcmUKKyAgICBbT1BFTk1FRVRJTkdTLTI1MF0gLSBNb2RlcmF0b3IgbG9zZXMgTW9kZXJhdGlvbgorICAgIFtPUEVOTUVFVElOR1MtMjUyXSAtIEZpeCBJbXBvcnRJbml0VmFsdWVzLmphdmEgZGVmYXVsdC50aW1lem9uZSBub3QgdGFrZW4gZnJvbSBpbnN0YWxsIGNvbmZpZyBhbmQgYWRkIChvcHRpb25hbCkgbWFwcGluZyAibGRhcF91c2VyX2F0dHJfdGltZXpvbmUiIGluIHRoZSBsZGFwIGNvbmZpZworICAgIFtPUEVOTUVFVElOR1MtMjU3XSAtIEV4Y2VwdGlvbiBpbiBDTEkgSW5zdGFsbGVyIHdoZW4gaW5zdGFsbGluZyBpbiBhIG5ldyBkYXRhYmFzZQorICAgIFtPUEVOTUVFVElOR1MtMjYzXSAtIE1pc3NpbmcgaW52aXRhdGlvbiBmcm9tIGNhbGVuZGFyCisgICAgW09QRU5NRUVUSU5HUy0yNjRdIC0gU3Bpbm5lcnMgaW4gU2NyZWVuU2hhcmluZyBhcHBsZXQgd29ya3MgaW1wcm9wZXJseQorICAgIFtPUEVOTUVFVElOR1MtMjY5XSAtIEltYWdlIERvd25sb2FkIElzc3VlIGZyb20gdGhlIFdoaXRlYm9hcmQgLSBOYW1pbmcgcHJvYmxlbSBhbmQgRGVsZXRpb24uanBnIGZpbGUgLSBSZXBvcnRlZCBieSBHZW9yZ2UgS2lya2hhbQorICAgIFtPUEVOTUVFVElOR1MtMjcwXSAtIE1lbW9yeUxlYWsgLyBEZWFkLUxvY2sgaW4gRmx2UmVjb3JkZXJDb252ZXJ0ZXIKKyAgICBbT1BFTk1FRVRJTkdTLTI3MV0gLSBXaGl0ZWJvYWQgVW5kbyB0b29sIGRvZXMgbm90IHJlbW92ZSBhbGwgb2JqZWN0cyBmcm9tIHRoZSBXaGl0ZWJvYXJkCisgICAgW09QRU5NRUVUSU5HUy0yNzJdIC0gV2hlbiBlbnRlcmluZyBhIHJvb20sIHRoZSAiQ2hvb3NlIGRldmljZXMiIHdpbmRvdyBpcyBiZWhpbmQgYW55IGF0dGVuZGVlIHZpZGVvIHdpbmRvd3MuCisgICAgW09QRU5NRUVUSU5HUy0yNzVdIC0gIlVzZXIgU3BlYWtzIiBpY29uIGluIFVzZXJzIGxpc3QgZG9lcyBub3QgaW5kaWNhdGUgd2hlbiB0aGUgcGVyc29uIGlzIHNwZWFraW5nCisgICAgW09QRU5NRUVUSU5HUy0yNzddIC0gTGF0ZXN0IGJ1aWxkIGZhaWxzIHRvIHN0YXJ0IHVzaW5nIFJUTVBTCisgICAgW09QRU5NRUVUSU5HUy0yNzhdIC0gV2hlbiBJIGVudGVyIGEgcm9vbSBhbmQgY2hvb3NlIGEgbG93ZXIgcmVzb2x1dGlvbiB0aGUgIkNob29zZSBEZXZpY2VzIiB3aW5kb3cgc2hyaW5rcyBidXQgdGhlIHRleHQgYXQgdGhlIHRvcCBkb2Vzbid0IHdyYXAgdG8gcmUtc2l6ZQorICAgIFtPUEVOTUVFVElOR1MtMjc5XSAtIE1pbmltaXplIFZpZGVvIGJ1dHRvbiB3b3JrcyBpbXByb3Blcmx5CisgICAgW09QRU5NRUVUSU5HUy0yODFdIC0gRW5oYW5jZSBMYW5ndWFnZSBFZGl0b3Igd2l0aCBzZWFyY2ggZmllbGRzCisgICAgW09QRU5NRUVUSU5HUy0yODJdIC0gVmlkZW8gd2luZG93ICJFeGNsdXNpdmUgQXVkaW8iIGNhdXNlcyB0b29sIHRpcHMgbWVzc2FnZSBib3hlcyB0byBiZSBsZWZ0IG9uIHRoZSBzY3JlZW4KKyAgICBbT1BFTk1FRVRJTkdTLTI4M10gLSBDaG9vc2UgZGV2aWNlcyAtIFN0YXJ0IHRlc3QgcmVjb3JkaW5nIC0gbm8gbG9uZ2VyIHBsYXlzIGJhY2sgdGhlIHJlY29yZGVkIGNsaXAKKyAgICBbT1BFTk1FRVRJTkdTLTI4NF0gLSBBdWRpbyBpcyBub3Qgd29ya2luZworICAgIFtPUEVOTUVFVElOR1MtMjg2XSAtIHZpZGVvL2F1ZGlvIGJyb2FkY2FzdCBwcm9ibGVtIHdpdGggbGFuZ3VhZ2Ugb2YgamFwYW5lc2UKKyAgICBbT1BFTk1FRVRJTkdTLTI4N10gLSBVbmFibGUgdG8gY29ubmVjdCBmcm9tIG1vb2RsZS4gQnVpbGRlIDIuMC4wLnIxMzQxNjc1LTIyLTA1LTIwMTJfMjMxOQorICAgIFtPUEVOTUVFVElOR1MtMjg4XSAtIFVuYWJsZSB0byBjb25uZWN0IGZyb20gbW9vZGxlLiBCdWlsZGUgMi4wLjAucjEzNDE2NzUtMjItMDUtMjAxMl8yMzE5CisgICAgW09QRU5NRUVUSU5HUy0yODldIC0gVW5hYmxlIHRvIGNvbm5lY3QgZnJvbSBtb29kbGUuIEJ1aWxkZSAyLjAuMC5yMTM0MTY3NS0yMi0wNS0yMDEyXzIzMTkKKyAgICBbT1BFTk1FRVRJTkdTLTI5NF0gLSBDYW5ub3QgaW5zdGFsbCBPcGVubWVldGluZ3Mgd2l0aCBteXNxbAorICAgIFtPUEVOTUVFVElOR1MtMjk1XSAtIE9wZW5NZWV0aW5ncyB3aXRoIHJ0bXAgb3ZlciBIVFRQIFR1bm5lbGluZyBkb2VzIG5vdCB3b3JrIGFueW1vcmUgd2l0aCBSZWQ1IHI0Mzc0CisgICAgW09QRU5NRUVUSU5HUy0yOTZdIC0gTGFuZ3VhZ2UgZXhwb3J0IHdvcmtzIG9ubHkgaW4gZW5nbGlzaAorICAgIFtPUEVOTUVFVElOR1MtMjk3XSAtIFVzZXJzIGFyZSBpbXBvcnRlZCB3aXRoIGludmFsaWQgY291bnRyeQorICAgIFtPUEVOTUVFVElOR1MtMjk4XSAtIFByb2JsZW1zIHdpdGggc2hvcnRjdXQta2V5ICdDdHJsICsgU2hpZnQgKyBtJywgQ2FtZXJhL01pYyBzZXR0aW5ncy1zY3JlZW4gcG9wcy11cCB3aGVuIHR5cGluZyAnTScgKFNoaWZ0K20pCisgICAgW09QRU5NRUVUSU5HUy0zMDBdIC0gJEFQUF9OQU1FIHBsYWNlaG9sZGVyIGlzIG5vdCBjb3JyZWN0bHkgaGFuZGxlZCBpbiBzb21lIGVtYWlsIHRlbXBsYXRlcworICAgIFtPUEVOTUVFVElOR1MtMzAyXSAtIERlbGV0ZSBtYXNzZ2VzIGluIFRyYXNoCisgICAgW09QRU5NRUVUSU5HUy0zMDRdIC0gQ2FuIG5vdCBkZWxldGUgbWFpbCBpbiBUcmFzaAorICAgIFtPUEVOTUVFVElOR1MtMzA3XSAtIExhbmd1YWdlIGRvZXMgbm90IGxvYWQgYXQgbG9naW4KKyAgICBbT1BFTk1FRVRJTkdTLTMxMl0gLSBGaWxlIHdhcyBudWxsIG9yIGRpZCBub3QgZXhpc3Q6IFRFU1RfU0VUVVBfMTMzODk0NTI0NDI0MC5mbHYKKyAgICBbT1BFTk1FRVRJTkdTLTMxNF0gLSBXZWJjYW0gVGl0bGUgb2YgdXNlciBpcyB1c2VybmFtZSBvZiBkZWZhdWx0IE9NIHVzZXIKKyAgICBbT1BFTk1FRVRJTkdTLTMxNl0gLSBJQ1MgYXR0YWNobWVudHMgZm9yIGVtYWlscyBub3Qgd29ya2luZyB3aXRoIEV4Y2hhbmdlIDIwMDMvMjAwNyBhbmQgT3V0bG9vayAyMDAzLzIwMDcKKyAgICBbT1BFTk1FRVRJTkdTLTMxN10gLSBNdWx0aXBsZSBhcHBvaW50bWVudHMgZ2VuZXJhdGVkIHdoZW4gY2xpY2tpbmcgc2F2ZSBtb3JlIHRoYW4gb25jZQorICAgIFtPUEVOTUVFVElOR1MtMzE5XSAtIFJlY29yZGluZ3MgYXQgZGVtby5vcGVubWVldGluZ3MuY29tIGFyZSBub3QgZG93bmxvYWRibGUKKyAgICBbT1BFTk1FRVRJTkdTLTMyMF0gLSBFeGNlcHRpb24gYW5kIGxheW91dCBmb3Igc2NyZWVuc2hhcmluZy9yZWNvcmRpbmcgY2xpZW50CisgICAgW09QRU5NRUVUSU5HUy0zMjNdIC0gVXBkYXRlIFJlZDUgdG8gbGF0ZXN0IHZlcnNpb24gKHI0MzgwKSBpbiBib3RoIHNlcnZlciBhbmQgY2xpZW50IGxpYnJhcnkgdG8gdGVzdCBSVE1QVCBhbmQgZmlsZSBub3QgZm91bmQgZXhjZXB0aW9ucworICAgIFtPUEVOTUVFVElOR1MtMzI0XSAtIExpbWl0IGxvZ2luCisKK0ltcHJvdmVtZW50CisKKyAgICBbT1BFTk1FRVRJTkdTLTJdIC0gTW9kaWZ5IEFOVCBCdWlsZCBzY3JpcHQgdG8gY3JlYXRlIGNvcnJlY3QgQnVpbGQgQXJ0ZWZhY3RzIC8gSW50ZWdyYXRlIGludG8gaHR0cHM6Ly9idWlsZHMuYXBhY2hlLm9yZy8KKyAgICBbT1BFTk1FRVRJTkdTLTRdIC0gTWljcm9waG9uZSByb29tcworICAgIFtPUEVOTUVFVElOR1MtMTBdIC0gb3Blbm1lZXRpbmdzXzFfOV8xX3I0NzA3IERlZmF1bHQgTGFuZ3VhZ2UgRXJyb3IKKyAgICBbT1BFTk1FRVRJTkdTLTQ1XSAtIE5ldyBBdWRpby9WaWRlbyBDb21wb25lbnRzCisgICAgW09QRU5NRUVUSU5HUy00Nl0gLSBVcGRhdGVkIEdlcm1hbiBsYW5nIGZpbGUKKyAgICBbT1BFTk1FRVRJTkdTLTU5XSAtIEphcGFuZXNlIHRyYW5zbGF0aW9uIHVwZGF0ZQorICAgIFtPUEVOTUVFVElOR1MtNjNdIC0gVXBkYXRlIFNoYXJpbmcgUlRNUENsaWVudCB3aXRoIGxhdGVzdCBSZWQ1IHZlcnNpb24gYW5kIHRlc3QgaWYgaXQgd29ya3Mgbm93CisgICAgW09QRU5NRUVUSU5HUy02Nl0gLSBXaGl0ZWJvYXJkIFBsYXllciBzaG91bGQgYXNwZWN0IHJhdGlvIHdoZW4gaW1wb3J0aW5nIGEgdmlkZW8gdG8gdGhlIHdoaXRlYm9hcmQKKyAgICBbT1BFTk1FRVRJTkdTLTgzXSAtIG11bHRpcGFydC5qYXIgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggaW1wbGVtZW50YXRpb24gY29tcGF0aWJsZSB3aXRoIEFTRiBsaWNlbmNlCisgICAgW09QRU5NRUVUSU5HUy04Nl0gLSBTVk4gZGlyZWN0b3J5IHN0cnVjdHVyZSBuZWVkIHRvIGJlIG9wdGltaXplZAorICAgIFtPUEVOTUVFVElOR1MtMTAxXSAtIExpbmtpbmcgT3Blbk1lZXRpbmdzIHR1dG9yaWFscyBhbmQgbWFudWFscworICAgIFtPUEVOTUVFVElOR1MtMTEzXSAtIERlZmluZSBhIGRlZmF1bHQgTG9naW4tRG9tYWluIChpZSBhbiBMZGFwIGRvbWFpbikgdG8gYmUgYXV0b21hdGljYWxseSBzZWxlY3RlZCBpbiB0aGUgZnJvbnRlbmQgbG9naW4gd2luZG93CisgICAgW09QRU5NRUVUSU5HUy0xMjVdIC0gVGV4dCBkb2VzIG5vdCBmaXQgaW4gdGhlIGJ1dHRvbi4KKyAgICBbT1BFTk1FRVRJTkdTLTE0Nl0gLSBBZGQgbWVjaGFuaXNtIHRvIGRlYnVnIExvY2FsQ29ubmVjdGlvbiBiZXR0ZXIKKyAgICBbT1BFTk1FRVRJTkdTLTE4NF0gLSBXaGVuIHdlIG1ha2UgYSBtaXN0YWtlIG9yIHdlIHVzZSB0aGUgc2FtZSBJRCBpbiB1c2VycyBhZGQgYWRtaW5pc3RyYXRpb24gbWVudSA9PiBhbGwgZmllbGRzIGJlY29tZSBlbXB0eSAhCisgICAgW09QRU5NRUVUSU5HUy0xODVdIC0gVGhlcmUgaXMgbm8gc2Vuc2UgdG8gaGF2ZSB0d28gdXNlcnMgLyBtb2RlcmF0b3IgLyBhZG1pbmlzdHJhdG9yIHdpdGggdGhlIHNhbWUgZW1haWwKKyAgICBbT1BFTk1FRVRJTkdTLTE5NF0gLSBDb21tYW5kIGxpbmUgYWRtaW46IGFkZGVkIHBhcmFtZXRlciAiLS1kcm9wIiwgdG8gZHJvcCBkYXRhYmFzZSBiZWZvcmUgaW5zdGFsbAorICAgIFtPUEVOTUVFVElOR1MtMjAyXSAtIENhbGVuZGFyIGV2ZW50CisgICAgW09QRU5NRUVUSU5HUy0yMjZdIC0gSXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIGNvbmZpZ3VyZSBPcGVuT2ZmaWNlIGxvY2F0aW9uIHZpYSBPTSBjb25maWcKKyAgICBbT1BFTk1FRVRJTkdTLTI0NV0gLSBjb25maWd1cmF0aW9uIHRhYmxlIGlzIG5vdCBiYWNrdXAvcmVzdG9yZWQKKyAgICBbT1BFTk1FRVRJTkdTLTI0N10gLSBNYWtlIGRvY3VtZW50IGNvbnZlcnNpb24gcXVhbGl0eSBhbiBhZG1pbmlzdHJhdG9yIGNoYW5nZWFibGUgb3B0aW9uCisgICAgW09QRU5NRUVUSU5HUy0yNTNdIC0gTWFkZSBzb21lIGNoYW5nZXMgdG8gdGhlIGdlcm1hbiBsYW5ndWFnZSBkZXV0c2NoLnhtbAorICAgIFtPUEVOTUVFVElOR1MtMjU5XSAtIEVuZ2xpc2ggTGFuZ3VhZ2UgVGV4dCBpbXByb3ZlbWVudHMKKyAgICBbT1BFTk1FRVRJTkdTLTI2OF0gLSBJbXByb3ZlbWVudHMgZm9yIGVuZ2xpc2ggdGV4dCBmb3IgNTA2LCAicmVnaXN0ZXJpbmdfbWFpbF90ZXh0X2hlYWQiLCA1MDcsICJyZWdpc3RlcmluZ19tYWlsX3RleHRfaGVhZDIiLCA1MTIsICJyZWdpc3Rlcl9tYWlsX3N1YmplY3QiCisgICAgW09QRU5NRUVUSU5HUy0yNzZdIC0gTmVlZCBhIHdheSB0byBzZWxlY3QgIkV4Y2x1c2l2ZSBBdWRpbyIgZm9yIGF0dGVuZWVzIHdobyBoYXZlIHNlbGVjdGVkICJBdWRvIE9ubHkiCisgICAgW09QRU5NRUVUSU5HUy0yODVdIC0gVXBkYXRlIGZvciBDaGluZXNlIExhbmd1YWdlIHRleHQKKyAgICBbT1BFTk1FRVRJTkdTLTMwOV0gLSBDb21wbGV0ZSBGcmVuY2ggdHJhbnNsYXRpb24KKyAgICBbT1BFTk1FRVRJTkdTLTMxM10gLSBFcnJvcnMgd2l0aCBpdCdzIHR5cGVzIGFuZCBkZXNjcmlwdGlvbnMgc2hvdWxkIGJlIGxpc3RlZCBvbiB0aGUgc2l0ZQorCitOZXcgRmVhdHVyZQorCisgICAgW09QRU5NRUVUSU5HUy0xMjldIC0gTG9hZCBJY29ucyBkeW5hbWljYWxseSBhdCBydW50aW1lIGFuZCByZXBsYWNlIExHUEwgbGljZW5zZWQgaWNvbnMKKyAgICBbT1BFTk1FRVRJTkdTLTEzMF0gLSBBZGQgbWVjaGFuaXNtIGZvciBhZHZhbmNlZCBydW50aW1lIHRoZW1pbmcKKyAgICBbT1BFTk1FRVRJTkdTLTEzNF0gLSBUaGVtZXM6IEFkZCBDb2xvciBkZWZpbml0aW9ucyB0byBkZWZhdWx0LXRoZW1lLnhtbCBmaWxlIGFuZCBlbmhhbmNlIHdpdGggbW9yZSBjb2xvciBkZWZpbml0aW9ucworICAgIFtPUEVOTUVFVElOR1MtMTg2XSAtIFJlcGx5VG8gZW1haWwgYWRkcmVzcyBzaG91bGQgYmUgc2V0IHRvIHVzZXIgZW1haWwgYWRkcmVzcy4KKyAgICBbT1BFTk1FRVRJTkdTLTI2Nl0gLSBTY3JlZW5TaGFyaW5nIG5lZWQgdG8gYmUgZW5oYW5jZWQgdG8gZW5hYmxlIHNjcmVlbiBwdWJsaXNoaW5nCisKK1Rhc2sKKworICAgIFtPUEVOTUVFVElOR1MtN10gLSBSZXBsYWNlIGx6Q2FsZW5kYXIgd2l0aCBub24gQ1BMIGltcGxlbWVudGF0aW9uCisgICAgW09QRU5NRUVUSU5HUy0zMl0gLSBSZXBsYWNlIEpPRCBMaWJyYXJ5IHdpdGggb3duIGltcGxlbWVudGF0aW9uCisgICAgW09QRU5NRUVUSU5HUy02MF0gLSBPcGVuTWVldGluZ3MgUGx1Z2luIGZvciBBdGxhc3NpYW4gSklSQQorICAgIFtPUEVOTUVFVElOR1MtNzBdIC0gVGhlcmUgc2hvdWxkIGJlIGEgc2NoZWR1bGVyIHRoZSBkb2VzIGEgY2hlY2sgZm9yIHRlc3QtcmVjb3JkaW5ncyBvbGRlciB0aGVuIDEgaG91ciBhbmQgZGVsZXRlIHRoZW0uCisgICAgW09QRU5NRUVUSU5HUy03NF0gLSBJbnRlZ3JhdGUgQXBhY2hlIEl2eSBmb3IgZGVwZW5kZW5jeSBtYW5hZ2VtZW50IG9mIExpYnJhcmllcworICAgIFtPUEVOTUVFVElOR1MtNzVdIC0gUmVtb3ZlIHJvb210eXBlIGF1ZGllbmNlCisgICAgW09QRU5NRUVUSU5HUy03Nl0gLSBSZW1vdmUgRXZlbnQgUmVjb3JkaW5nCisgICAgW09QRU5NRUVUSU5HUy04Ml0gLSBBdGxhc3NpYW4gQ29uZmx1ZW5jZSBJbnRlZ3JhdGlvbiBQbHVnaW4KKyAgICBbT1BFTk1FRVRJTkdTLTg1XSAtIEZpeCBhbmQgaW1wcm92ZSBDaGF0IExheW91dAorICAgIFtPUEVOTUVFVElOR1MtODhdIC0gRml4IGNsaWVudCBzaWRlIG1vZHVsZXMgc3RydWN0dXJlIChkZWxldGUgIlBsdWdpbnMiIGRpcmVjdG9yeSkKKyAgICBbT1BFTk1FRVRJTkdTLTk5XSAtIFByb2plY3QgcmVzdHJ1Y3R1cmluZyAoc291cmNlcywgYmVhbnMsIGVjbGlwc2UpCisgICAgW09QRU5NRUVUSU5HUy0xMDBdIC0gSmFiYmVyU2VydmljZSBzaG91bGQgYmUgYWRkZWQgdG8gQXhpczIgc2VydmljZXMKKyAgICBbT1BFTk1FRVRJTkdTLTEwNl0gLSBKYWJiZXJTZXJ2aWNlIGlzIG1pc3NpbmcgaW4gdGhlIEFQSSBEb2NsZXQgdGFzayB0aGF0IGdlbmVyYXRlcyB0aGUgU09BUC9SRVNUIEFQSSBEb2N1bWVudGF0aW9uCisgICAgW09QRU5NRUVUSU5HUy0xMDldIC0gU2hvdyBOdW1iZXIgb2YgVW5yZWFkIHByaXZhdGUgbWVzc2FnZXMgaW4gdGhlIGRhc2hib2FyZCBhbmQgdXBncmFkZSBsYXlvdXQKKyAgICBbT1BFTk1FRVRJTkdTLTExMF0gLSBSZWZhY3RvciBtZW51YmFyIGxheW91dCBhbmQgdGFiYnV0dG9ucyBpbiBkYXNoYm9hcmQvcm9vbXMvc2V0dGluZ3Mgc2VjdGlvbiArIHJlbW92ZSAibmF2aXN1YiIgdGFibGUgKyBGaXggdG8gdXNlICJOYW1lZFF1ZXJ5IiBmb3IgbWFpbiBuYXZpZ2F0aW9uIHRvIGVuYWJsZS9kaXNhYmxlIGVudHJpZXMgaW4gdGhlIG1haW5uYXZpCisgICAgW09QRU5NRUVUSU5HUy0xMTddIC0gUmVmYWN0b3IgQ29uZmVyZW5jZSBDb2xvcmluZyBhbmQgTGF5b3V0CisgICAgW09QRU5NRUVUSU5HUy0xMjRdIC0gQ2xlYW4gVXAgU3BsYXNoIFNjcmVlbiBhbmQgdW51c2VkIHJlc291cmNlcyBpbiBpbml0CisgICAgW09QRU5NRUVUSU5HUy0xMjhdIC0gUmVtb3ZlICJkb2MiIGZvbGRlciB3aXRoIHBhcnRseSBkb2N1bWVudGF0ZWQgamFwYW5lc2UgZG9jdW1lbnRpb24gYW5kIGZpeCBpY29uIHJlc291cmNlcyB0aGF0IGFyZSBub3QgbmVlZGVkCisgICAgW09QRU5NRUVUSU5HUy0xNDddIC0gVGhlIGdyZWVuIGRvdCB0aGF0IGluZGljYXRlcyBzb21lYm9keSBlbHNlIGlzIHNwZWFraW5nIHByb2R1Y2VzIHRvbyBtYW55IGV2ZW50cyBhbmQgaXMgYmFkbHkgcGVyZm9ybWluZworICAgIFtPUEVOTUVFVElOR1MtMTYwXSAtIEVuYWJsZSBzZW5kaW5nIG1lc3NhZ2VzIHRvIGV4dGVybmFsIHVzZXJzIGZyb20gdGhlIHByaXZhdGUgbWVzc2FnZXMgaW5jbHVkaW5nIGludml0YXRpb25zIHRvIGNvbmZlcmVuY2Ugcm9vbXMgYW5kIGV2ZW50cworICAgIFtPUEVOTUVFVElOR1MtMTY5XSAtIENsZWFuIHVwIFdoaXRlQm9hcmRTZXJ2aWNlIHRvIHVzZSBwcm9wZXIgc3luYyBtZXRob2RzCisgICAgW09QRU5NRUVUSU5HUy0xNzNdIC0gQ0xJIG5lZWRzIGEgY2hlY2sgb24gdGhvc2UgcGFyYW1zIHRoYXQgYXJlICJtdXN0IGhhdmVzIiBmb3IgaW5zdGFsbGF0aW9uCisgICAgW09QRU5NRUVUSU5HUy0yMjJdIC0gRW5hYmxlIEtleWJvYXJkIGFjdGlvbnMgdG8gd2hpdGVib2FyZCAoQXJyb3cgRG93bnxMZWZ0fFJpZ2h0fFVwIFsrU2hpZnRdIGFuZCBEZWxldGUpIHdoZW4gb2JqZWN0IGlzIHNlbGVjdGVkCisgICAgW09QRU5NRUVUSU5HUy0yMjNdIC0gSGFyZGx5IGFueWJvZHkga25vd3MgdGhhdCB5b3UgY2FuIGRvdWJsZSBjbGljayB0byByZS1lZGl0IHRoZSB0ZXh0CisgICAgW09QRU5NRUVUSU5HUy0yMzFdIC0gVXBkYXRlIHdlYnNpdGUgd2l0aCBuZXcgc2NyZWVuc2hvdHMKKyAgICBbT1BFTk1FRVRJTkdTLTIzNl0gLSBXaGVyZSB0byBwdXQgcG9ydHVndWVzZSBCcmFzaWwueG1sLgorCitUZXN0CisKKyAgICBbT1BFTk1FRVRJTkdTLTEwNF0gLSBFcnJvciBpbiBjeXJpbGxpYyBmaWxlbmFtZXMKKyAgICBbT1BFTk1FRVRJTkdTLTExNV0gLSBJbnN0YWxsYXRpb24gZXJyb3IKKyAgICBbT1BFTk1FRVRJTkdTLTEyMF0gLSBCbGFuayBzY3JlZW4gb24gQmFja3VwCisgICAgW09QRU5NRUVUSU5HUy0xMjFdIC0gU2hhcmUvcmVjb3JkIHNjcmVlbiBkb2Vzbid0IHdvcmsKKyAgICBbT1BFTk1FRVRJTkdTLTEzNl0gLSBEdXBsaWNhdGUgbWVzc2FnZSBpbiBBY3Rpdml0eSBzZWN0aW9uCisgICAgW09QRU5NRUVUSU5HUy0xNDhdIC0gd2hlbiBJIGNsaWNrIHRvIGJ1dHRvbiBvZiBwYWdlLCB0aGF0IGhhdmVuJ3QgYW55dGhpbmcgY29udGVudAorICAgIFtPUEVOTUVFVElOR1MtMTU1XSAtIHJlY29yZCBub3QgcGxheWluZworICAgIFtPUEVOTUVFVElOR1MtMjIwXSAtIG1haW4ubHp4IGNoYW5nZXMgKGJhY2tncm91bmQpCisgICAgW09QRU5NRUVUSU5HUy0yMjFdIC0gcHJvYmxlbTogcmVjb3JkaW5ncyB3aXRoIDEgZnJhbWUvc2VjCisgICAgW09QRU5NRUVUSU5HUy0yNDBdIC0gam9kIGNvbnZlcnRlciBlcnJvcgorICAgIFtPUEVOTUVFVElOR1MtMzAzXSAtIENhbiBub3QgRXhwb3J0IG5ldyBsYW5ndWFnZQorCitXaXNoCisKKyAgICBbT1BFTk1FRVRJTkdTLTExXSAtIE9wZW5tZWV0aW5nIHVzZSBMREFQIGFzIGRlZmF1bHQgZG9tYWluCisgICAgW09QRU5NRUVUSU5HUy0yMF0gLSBBZGQgaGlkZVdoaXRlYm9hcmQgYXR0cmlidXRlcyBpbiBSb29tIE9iamVjdCBhbmQgbWFrZSBpdCBwb3NzaWJsZSB0byBjb25maWd1cmUgLyBlZGl0YWJsZSB2aWEgQWRtaW5pc3RyYXRpb24gPiBSb29tcworICAgIFtPUEVOTUVFVElOR1MtMjFdIC0gQWRkIGhpZGVDaGF0IGF0dHJpYnV0ZXMgaW4gUm9vbSBPYmplY3QgYW5kIG1ha2UgaXQgcG9zc2libGUgdG8gY29uZmlndXJlIC8gZWRpdGFibGUgdmlhIEFkbWluaXN0cmF0aW9uID4gUm9vbXMKKyAgICBbT1BFTk1FRVRJTkdTLTIyXSAtIEFkZCBoaWRlQWN0aXZpdGllc0FuZEFjdGlvbnMgYXR0cmlidXRlcyBpbiBSb29tIE9iamVjdCBhbmQgbWFrZSBpdCBwb3NzaWJsZSB0byBjb25maWd1cmUgLyBlZGl0YWJsZSB2aWEgQWRtaW5pc3RyYXRpb24gPiBSb29tcworICAgIFtPUEVOTUVFVElOR1MtMjNdIC0gQWRkIGhpZGVGaWxlc0V4cGxvcmVyIGF0dHJpYnV0ZXMgaW4gUm9vbSBPYmplY3QgYW5kIG1ha2UgaXQgcG9zc2libGUgdG8gY29uZmlndXJlIC8gZWRpdGFibGUgdmlhIEFkbWluaXN0cmF0aW9uID4gUm9vbXMKKyAgICBbT1BFTk1FRVRJTkdTLTI0XSAtIEFkZCBoaWRlU2NyZWVuU2hhcmluZyBhdHRyaWJ1dGVzIGluIFJvb20gT2JqZWN0IGFuZCBtYWtlIGl0IHBvc3NpYmxlIHRvIGNvbmZpZ3VyZSAvIGVkaXRhYmxlIHZpYSBBZG1pbmlzdHJhdGlvbiA+IFJvb21zCisgICAgW09QRU5NRUVUSU5HUy0yNV0gLSBBZGQgU09BUC9SRVNUIENhbGwKKyAgICBbT1BFTk1FRVRJTkdTLTc4XSAtIGRhdGF0eXBlIG9mIGV4dGVybmFsVXNlcklkCisgICAgW09QRU5NRUVUSU5HUy0yNTRdIC0gR2VybWFuIFN5c3RlbSBCYWNrdXAgZ2FyYmxlZCB0ZXh0CisgICAgW09QRU5NRUVUSU5HUy0yNTVdIC0gUG9zc2liaWxpdHkgdG8gZGlzYWJsZSBTaG93IFNpcCBEaWFsZXIgaW4gTWVldGluZyBSb29tCisgICAgW09QRU5NRUVUSU5HUy0yNThdIC0gQ29tYmluZSBkZXZpY2Ugc2V0dGluZ3MgYW5kIGF1ZGlvL3ZpZGVvIHRlc3QgaW4gc2luZ2xlIFVJCisgICAgW09QRU5NRUVUSU5HUy0yNjJdIC0gRG9jdW1lbnQgY29udmVyc2lvbiBXaW5kb3dzIC8gTGludXggZGlmZmVyZW50CisKZGlmZiAtLWdpdCBhL0xJQ0VOU0UgYi9MSUNFTlNFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0YzhlZWQKLS0tIC9kZXYvbnVsbAorKysgYi9MSUNFTlNFCkBAIC0wLDAgKzEsMTc5NyBAQAorCitBcGFjaGUgT3Blbk1lZXRpbmdzIExpY2Vuc2U6CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFwYWNoZSBMaWNlbnNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uIDIuMCwgSmFudWFyeSAyMDA0CisgICAgICAgICAgICAgICAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvCisKKyAgIFRFUk1TIEFORCBDT05ESVRJT05TIEZPUiBVU0UsIFJFUFJPRFVDVElPTiwgQU5EIERJU1RSSUJVVElPTgorCisgICAxLiBEZWZpbml0aW9ucy4KKworICAgICAgIkxpY2Vuc2UiIHNoYWxsIG1lYW4gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciB1c2UsIHJlcHJvZHVjdGlvbiwKKyAgICAgIGFuZCBkaXN0cmlidXRpb24gYXMgZGVmaW5lZCBieSBTZWN0aW9ucyAxIHRocm91Z2ggOSBvZiB0aGlzIGRvY3VtZW50LgorCisgICAgICAiTGljZW5zb3IiIHNoYWxsIG1lYW4gdGhlIGNvcHlyaWdodCBvd25lciBvciBlbnRpdHkgYXV0aG9yaXplZCBieQorICAgICAgdGhlIGNvcHlyaWdodCBvd25lciB0aGF0IGlzIGdyYW50aW5nIHRoZSBMaWNlbnNlLgorCisgICAgICAiTGVnYWwgRW50aXR5IiBzaGFsbCBtZWFuIHRoZSB1bmlvbiBvZiB0aGUgYWN0aW5nIGVudGl0eSBhbmQgYWxsCisgICAgICBvdGhlciBlbnRpdGllcyB0aGF0IGNvbnRyb2wsIGFyZSBjb250cm9sbGVkIGJ5LCBvciBhcmUgdW5kZXIgY29tbW9uCisgICAgICBjb250cm9sIHdpdGggdGhhdCBlbnRpdHkuIEZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLAorICAgICAgImNvbnRyb2wiIG1lYW5zIChpKSB0aGUgcG93ZXIsIGRpcmVjdCBvciBpbmRpcmVjdCwgdG8gY2F1c2UgdGhlCisgICAgICBkaXJlY3Rpb24gb3IgbWFuYWdlbWVudCBvZiBzdWNoIGVudGl0eSwgd2hldGhlciBieSBjb250cmFjdCBvcgorICAgICAgb3RoZXJ3aXNlLCBvciAoaWkpIG93bmVyc2hpcCBvZiBmaWZ0eSBwZXJjZW50ICg1MCUpIG9yIG1vcmUgb2YgdGhlCisgICAgICBvdXRzdGFuZGluZyBzaGFyZXMsIG9yIChpaWkpIGJlbmVmaWNpYWwgb3duZXJzaGlwIG9mIHN1Y2ggZW50aXR5LgorCisgICAgICAiWW91IiAob3IgIllvdXIiKSBzaGFsbCBtZWFuIGFuIGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5CisgICAgICBleGVyY2lzaW5nIHBlcm1pc3Npb25zIGdyYW50ZWQgYnkgdGhpcyBMaWNlbnNlLgorCisgICAgICAiU291cmNlIiBmb3JtIHNoYWxsIG1lYW4gdGhlIHByZWZlcnJlZCBmb3JtIGZvciBtYWtpbmcgbW9kaWZpY2F0aW9ucywKKyAgICAgIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gc29mdHdhcmUgc291cmNlIGNvZGUsIGRvY3VtZW50YXRpb24KKyAgICAgIHNvdXJjZSwgYW5kIGNvbmZpZ3VyYXRpb24gZmlsZXMuCisKKyAgICAgICJPYmplY3QiIGZvcm0gc2hhbGwgbWVhbiBhbnkgZm9ybSByZXN1bHRpbmcgZnJvbSBtZWNoYW5pY2FsCisgICAgICB0cmFuc2Zvcm1hdGlvbiBvciB0cmFuc2xhdGlvbiBvZiBhIFNvdXJjZSBmb3JtLCBpbmNsdWRpbmcgYnV0CisgICAgICBub3QgbGltaXRlZCB0byBjb21waWxlZCBvYmplY3QgY29kZSwgZ2VuZXJhdGVkIGRvY3VtZW50YXRpb24sCisgICAgICBhbmQgY29udmVyc2lvbnMgdG8gb3RoZXIgbWVkaWEgdHlwZXMuCisKKyAgICAgICJXb3JrIiBzaGFsbCBtZWFuIHRoZSB3b3JrIG9mIGF1dGhvcnNoaXAsIHdoZXRoZXIgaW4gU291cmNlIG9yCisgICAgICBPYmplY3QgZm9ybSwgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIExpY2Vuc2UsIGFzIGluZGljYXRlZCBieSBhCisgICAgICBjb3B5cmlnaHQgbm90aWNlIHRoYXQgaXMgaW5jbHVkZWQgaW4gb3IgYXR0YWNoZWQgdG8gdGhlIHdvcmsKKyAgICAgIChhbiBleGFtcGxlIGlzIHByb3ZpZGVkIGluIHRoZSBBcHBlbmRpeCBiZWxvdykuCisKKyAgICAgICJEZXJpdmF0aXZlIFdvcmtzIiBzaGFsbCBtZWFuIGFueSB3b3JrLCB3aGV0aGVyIGluIFNvdXJjZSBvciBPYmplY3QKKyAgICAgIGZvcm0sIHRoYXQgaXMgYmFzZWQgb24gKG9yIGRlcml2ZWQgZnJvbSkgdGhlIFdvcmsgYW5kIGZvciB3aGljaCB0aGUKKyAgICAgIGVkaXRvcmlhbCByZXZpc2lvbnMsIGFubm90YXRpb25zLCBlbGFib3JhdGlvbnMsIG9yIG90aGVyIG1vZGlmaWNhdGlvbnMKKyAgICAgIHJlcHJlc2VudCwgYXMgYSB3aG9sZSwgYW4gb3JpZ2luYWwgd29yayBvZiBhdXRob3JzaGlwLiBGb3IgdGhlIHB1cnBvc2VzCisgICAgICBvZiB0aGlzIExpY2Vuc2UsIERlcml2YXRpdmUgV29ya3Mgc2hhbGwgbm90IGluY2x1ZGUgd29ya3MgdGhhdCByZW1haW4KKyAgICAgIHNlcGFyYWJsZSBmcm9tLCBvciBtZXJlbHkgbGluayAob3IgYmluZCBieSBuYW1lKSB0byB0aGUgaW50ZXJmYWNlcyBvZiwKKyAgICAgIHRoZSBXb3JrIGFuZCBEZXJpdmF0aXZlIFdvcmtzIHRoZXJlb2YuCisKKyAgICAgICJDb250cmlidXRpb24iIHNoYWxsIG1lYW4gYW55IHdvcmsgb2YgYXV0aG9yc2hpcCwgaW5jbHVkaW5nCisgICAgICB0aGUgb3JpZ2luYWwgdmVyc2lvbiBvZiB0aGUgV29yayBhbmQgYW55IG1vZGlmaWNhdGlvbnMgb3IgYWRkaXRpb25zCisgICAgICB0byB0aGF0IFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mLCB0aGF0IGlzIGludGVudGlvbmFsbHkKKyAgICAgIHN1Ym1pdHRlZCB0byBMaWNlbnNvciBmb3IgaW5jbHVzaW9uIGluIHRoZSBXb3JrIGJ5IHRoZSBjb3B5cmlnaHQgb3duZXIKKyAgICAgIG9yIGJ5IGFuIGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5IGF1dGhvcml6ZWQgdG8gc3VibWl0IG9uIGJlaGFsZiBvZgorICAgICAgdGhlIGNvcHlyaWdodCBvd25lci4gRm9yIHRoZSBwdXJwb3NlcyBvZiB0aGlzIGRlZmluaXRpb24sICJzdWJtaXR0ZWQiCisgICAgICBtZWFucyBhbnkgZm9ybSBvZiBlbGVjdHJvbmljLCB2ZXJiYWwsIG9yIHdyaXR0ZW4gY29tbXVuaWNhdGlvbiBzZW50CisgICAgICB0byB0aGUgTGljZW5zb3Igb3IgaXRzIHJlcHJlc2VudGF0aXZlcywgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0bworICAgICAgY29tbXVuaWNhdGlvbiBvbiBlbGVjdHJvbmljIG1haWxpbmcgbGlzdHMsIHNvdXJjZSBjb2RlIGNvbnRyb2wgc3lzdGVtcywKKyAgICAgIGFuZCBpc3N1ZSB0cmFja2luZyBzeXN0ZW1zIHRoYXQgYXJlIG1hbmFnZWQgYnksIG9yIG9uIGJlaGFsZiBvZiwgdGhlCisgICAgICBMaWNlbnNvciBmb3IgdGhlIHB1cnBvc2Ugb2YgZGlzY3Vzc2luZyBhbmQgaW1wcm92aW5nIHRoZSBXb3JrLCBidXQKKyAgICAgIGV4Y2x1ZGluZyBjb21tdW5pY2F0aW9uIHRoYXQgaXMgY29uc3BpY3VvdXNseSBtYXJrZWQgb3Igb3RoZXJ3aXNlCisgICAgICBkZXNpZ25hdGVkIGluIHdyaXRpbmcgYnkgdGhlIGNvcHlyaWdodCBvd25lciBhcyAiTm90IGEgQ29udHJpYnV0aW9uLiIKKworICAgICAgIkNvbnRyaWJ1dG9yIiBzaGFsbCBtZWFuIExpY2Vuc29yIGFuZCBhbnkgaW5kaXZpZHVhbCBvciBMZWdhbCBFbnRpdHkKKyAgICAgIG9uIGJlaGFsZiBvZiB3aG9tIGEgQ29udHJpYnV0aW9uIGhhcyBiZWVuIHJlY2VpdmVkIGJ5IExpY2Vuc29yIGFuZAorICAgICAgc3Vic2VxdWVudGx5IGluY29ycG9yYXRlZCB3aXRoaW4gdGhlIFdvcmsuCisKKyAgIDIuIEdyYW50IG9mIENvcHlyaWdodCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgorICAgICAgdGhpcyBMaWNlbnNlLCBlYWNoIENvbnRyaWJ1dG9yIGhlcmVieSBncmFudHMgdG8gWW91IGEgcGVycGV0dWFsLAorICAgICAgd29ybGR3aWRlLCBub24tZXhjbHVzaXZlLCBuby1jaGFyZ2UsIHJveWFsdHktZnJlZSwgaXJyZXZvY2FibGUKKyAgICAgIGNvcHlyaWdodCBsaWNlbnNlIHRvIHJlcHJvZHVjZSwgcHJlcGFyZSBEZXJpdmF0aXZlIFdvcmtzIG9mLAorICAgICAgcHVibGljbHkgZGlzcGxheSwgcHVibGljbHkgcGVyZm9ybSwgc3VibGljZW5zZSwgYW5kIGRpc3RyaWJ1dGUgdGhlCisgICAgICBXb3JrIGFuZCBzdWNoIERlcml2YXRpdmUgV29ya3MgaW4gU291cmNlIG9yIE9iamVjdCBmb3JtLgorCisgICAzLiBHcmFudCBvZiBQYXRlbnQgTGljZW5zZS4gU3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YKKyAgICAgIHRoaXMgTGljZW5zZSwgZWFjaCBDb250cmlidXRvciBoZXJlYnkgZ3JhbnRzIHRvIFlvdSBhIHBlcnBldHVhbCwKKyAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCisgICAgICAoZXhjZXB0IGFzIHN0YXRlZCBpbiB0aGlzIHNlY3Rpb24pIHBhdGVudCBsaWNlbnNlIHRvIG1ha2UsIGhhdmUgbWFkZSwKKyAgICAgIHVzZSwgb2ZmZXIgdG8gc2VsbCwgc2VsbCwgaW1wb3J0LCBhbmQgb3RoZXJ3aXNlIHRyYW5zZmVyIHRoZSBXb3JrLAorICAgICAgd2hlcmUgc3VjaCBsaWNlbnNlIGFwcGxpZXMgb25seSB0byB0aG9zZSBwYXRlbnQgY2xhaW1zIGxpY2Vuc2FibGUKKyAgICAgIGJ5IHN1Y2ggQ29udHJpYnV0b3IgdGhhdCBhcmUgbmVjZXNzYXJpbHkgaW5mcmluZ2VkIGJ5IHRoZWlyCisgICAgICBDb250cmlidXRpb24ocykgYWxvbmUgb3IgYnkgY29tYmluYXRpb24gb2YgdGhlaXIgQ29udHJpYnV0aW9uKHMpCisgICAgICB3aXRoIHRoZSBXb3JrIHRvIHdoaWNoIHN1Y2ggQ29udHJpYnV0aW9uKHMpIHdhcyBzdWJtaXR0ZWQuIElmIFlvdQorICAgICAgaW5zdGl0dXRlIHBhdGVudCBsaXRpZ2F0aW9uIGFnYWluc3QgYW55IGVudGl0eSAoaW5jbHVkaW5nIGEKKyAgICAgIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1aXQpIGFsbGVnaW5nIHRoYXQgdGhlIFdvcmsKKyAgICAgIG9yIGEgQ29udHJpYnV0aW9uIGluY29ycG9yYXRlZCB3aXRoaW4gdGhlIFdvcmsgY29uc3RpdHV0ZXMgZGlyZWN0CisgICAgICBvciBjb250cmlidXRvcnkgcGF0ZW50IGluZnJpbmdlbWVudCwgdGhlbiBhbnkgcGF0ZW50IGxpY2Vuc2VzCisgICAgICBncmFudGVkIHRvIFlvdSB1bmRlciB0aGlzIExpY2Vuc2UgZm9yIHRoYXQgV29yayBzaGFsbCB0ZXJtaW5hdGUKKyAgICAgIGFzIG9mIHRoZSBkYXRlIHN1Y2ggbGl0aWdhdGlvbiBpcyBmaWxlZC4KKworICAgNC4gUmVkaXN0cmlidXRpb24uIFlvdSBtYXkgcmVwcm9kdWNlIGFuZCBkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUKKyAgICAgIFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mIGluIGFueSBtZWRpdW0sIHdpdGggb3Igd2l0aG91dAorICAgICAgbW9kaWZpY2F0aW9ucywgYW5kIGluIFNvdXJjZSBvciBPYmplY3QgZm9ybSwgcHJvdmlkZWQgdGhhdCBZb3UKKyAgICAgIG1lZXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorCisgICAgICAoYSkgWW91IG11c3QgZ2l2ZSBhbnkgb3RoZXIgcmVjaXBpZW50cyBvZiB0aGUgV29yayBvcgorICAgICAgICAgIERlcml2YXRpdmUgV29ya3MgYSBjb3B5IG9mIHRoaXMgTGljZW5zZTsgYW5kCisKKyAgICAgIChiKSBZb3UgbXVzdCBjYXVzZSBhbnkgbW9kaWZpZWQgZmlsZXMgdG8gY2FycnkgcHJvbWluZW50IG5vdGljZXMKKyAgICAgICAgICBzdGF0aW5nIHRoYXQgWW91IGNoYW5nZWQgdGhlIGZpbGVzOyBhbmQKKworICAgICAgKGMpIFlvdSBtdXN0IHJldGFpbiwgaW4gdGhlIFNvdXJjZSBmb3JtIG9mIGFueSBEZXJpdmF0aXZlIFdvcmtzCisgICAgICAgICAgdGhhdCBZb3UgZGlzdHJpYnV0ZSwgYWxsIGNvcHlyaWdodCwgcGF0ZW50LCB0cmFkZW1hcmssIGFuZAorICAgICAgICAgIGF0dHJpYnV0aW9uIG5vdGljZXMgZnJvbSB0aGUgU291cmNlIGZvcm0gb2YgdGhlIFdvcmssCisgICAgICAgICAgZXhjbHVkaW5nIHRob3NlIG5vdGljZXMgdGhhdCBkbyBub3QgcGVydGFpbiB0byBhbnkgcGFydCBvZgorICAgICAgICAgIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyBhbmQKKworICAgICAgKGQpIElmIHRoZSBXb3JrIGluY2x1ZGVzIGEgIk5PVElDRSIgdGV4dCBmaWxlIGFzIHBhcnQgb2YgaXRzCisgICAgICAgICAgZGlzdHJpYnV0aW9uLCB0aGVuIGFueSBEZXJpdmF0aXZlIFdvcmtzIHRoYXQgWW91IGRpc3RyaWJ1dGUgbXVzdAorICAgICAgICAgIGluY2x1ZGUgYSByZWFkYWJsZSBjb3B5IG9mIHRoZSBhdHRyaWJ1dGlvbiBub3RpY2VzIGNvbnRhaW5lZAorICAgICAgICAgIHdpdGhpbiBzdWNoIE5PVElDRSBmaWxlLCBleGNsdWRpbmcgdGhvc2Ugbm90aWNlcyB0aGF0IGRvIG5vdAorICAgICAgICAgIHBlcnRhaW4gdG8gYW55IHBhcnQgb2YgdGhlIERlcml2YXRpdmUgV29ya3MsIGluIGF0IGxlYXN0IG9uZQorICAgICAgICAgIG9mIHRoZSBmb2xsb3dpbmcgcGxhY2VzOiB3aXRoaW4gYSBOT1RJQ0UgdGV4dCBmaWxlIGRpc3RyaWJ1dGVkCisgICAgICAgICAgYXMgcGFydCBvZiB0aGUgRGVyaXZhdGl2ZSBXb3Jrczsgd2l0aGluIHRoZSBTb3VyY2UgZm9ybSBvcgorICAgICAgICAgIGRvY3VtZW50YXRpb24sIGlmIHByb3ZpZGVkIGFsb25nIHdpdGggdGhlIERlcml2YXRpdmUgV29ya3M7IG9yLAorICAgICAgICAgIHdpdGhpbiBhIGRpc3BsYXkgZ2VuZXJhdGVkIGJ5IHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpZiBhbmQKKyAgICAgICAgICB3aGVyZXZlciBzdWNoIHRoaXJkLXBhcnR5IG5vdGljZXMgbm9ybWFsbHkgYXBwZWFyLiBUaGUgY29udGVudHMKKyAgICAgICAgICBvZiB0aGUgTk9USUNFIGZpbGUgYXJlIGZvciBpbmZvcm1hdGlvbmFsIHB1cnBvc2VzIG9ubHkgYW5kCisgICAgICAgICAgZG8gbm90IG1vZGlmeSB0aGUgTGljZW5zZS4gWW91IG1heSBhZGQgWW91ciBvd24gYXR0cmlidXRpb24KKyAgICAgICAgICBub3RpY2VzIHdpdGhpbiBEZXJpdmF0aXZlIFdvcmtzIHRoYXQgWW91IGRpc3RyaWJ1dGUsIGFsb25nc2lkZQorICAgICAgICAgIG9yIGFzIGFuIGFkZGVuZHVtIHRvIHRoZSBOT1RJQ0UgdGV4dCBmcm9tIHRoZSBXb3JrLCBwcm92aWRlZAorICAgICAgICAgIHRoYXQgc3VjaCBhZGRpdGlvbmFsIGF0dHJpYnV0aW9uIG5vdGljZXMgY2Fubm90IGJlIGNvbnN0cnVlZAorICAgICAgICAgIGFzIG1vZGlmeWluZyB0aGUgTGljZW5zZS4KKworICAgICAgWW91IG1heSBhZGQgWW91ciBvd24gY29weXJpZ2h0IHN0YXRlbWVudCB0byBZb3VyIG1vZGlmaWNhdGlvbnMgYW5kCisgICAgICBtYXkgcHJvdmlkZSBhZGRpdGlvbmFsIG9yIGRpZmZlcmVudCBsaWNlbnNlIHRlcm1zIGFuZCBjb25kaXRpb25zCisgICAgICBmb3IgdXNlLCByZXByb2R1Y3Rpb24sIG9yIGRpc3RyaWJ1dGlvbiBvZiBZb3VyIG1vZGlmaWNhdGlvbnMsIG9yCisgICAgICBmb3IgYW55IHN1Y2ggRGVyaXZhdGl2ZSBXb3JrcyBhcyBhIHdob2xlLCBwcm92aWRlZCBZb3VyIHVzZSwKKyAgICAgIHJlcHJvZHVjdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGUgV29yayBvdGhlcndpc2UgY29tcGxpZXMgd2l0aAorICAgICAgdGhlIGNvbmRpdGlvbnMgc3RhdGVkIGluIHRoaXMgTGljZW5zZS4KKworICAgNS4gU3VibWlzc2lvbiBvZiBDb250cmlidXRpb25zLiBVbmxlc3MgWW91IGV4cGxpY2l0bHkgc3RhdGUgb3RoZXJ3aXNlLAorICAgICAgYW55IENvbnRyaWJ1dGlvbiBpbnRlbnRpb25hbGx5IHN1Ym1pdHRlZCBmb3IgaW5jbHVzaW9uIGluIHRoZSBXb3JrCisgICAgICBieSBZb3UgdG8gdGhlIExpY2Vuc29yIHNoYWxsIGJlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgorICAgICAgdGhpcyBMaWNlbnNlLCB3aXRob3V0IGFueSBhZGRpdGlvbmFsIHRlcm1zIG9yIGNvbmRpdGlvbnMuCisgICAgICBOb3R3aXRoc3RhbmRpbmcgdGhlIGFib3ZlLCBub3RoaW5nIGhlcmVpbiBzaGFsbCBzdXBlcnNlZGUgb3IgbW9kaWZ5CisgICAgICB0aGUgdGVybXMgb2YgYW55IHNlcGFyYXRlIGxpY2Vuc2UgYWdyZWVtZW50IHlvdSBtYXkgaGF2ZSBleGVjdXRlZAorICAgICAgd2l0aCBMaWNlbnNvciByZWdhcmRpbmcgc3VjaCBDb250cmlidXRpb25zLgorCisgICA2LiBUcmFkZW1hcmtzLiBUaGlzIExpY2Vuc2UgZG9lcyBub3QgZ3JhbnQgcGVybWlzc2lvbiB0byB1c2UgdGhlIHRyYWRlCisgICAgICBuYW1lcywgdHJhZGVtYXJrcywgc2VydmljZSBtYXJrcywgb3IgcHJvZHVjdCBuYW1lcyBvZiB0aGUgTGljZW5zb3IsCisgICAgICBleGNlcHQgYXMgcmVxdWlyZWQgZm9yIHJlYXNvbmFibGUgYW5kIGN1c3RvbWFyeSB1c2UgaW4gZGVzY3JpYmluZyB0aGUKKyAgICAgIG9yaWdpbiBvZiB0aGUgV29yayBhbmQgcmVwcm9kdWNpbmcgdGhlIGNvbnRlbnQgb2YgdGhlIE5PVElDRSBmaWxlLgorCisgICA3LiBEaXNjbGFpbWVyIG9mIFdhcnJhbnR5LiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IKKyAgICAgIGFncmVlZCB0byBpbiB3cml0aW5nLCBMaWNlbnNvciBwcm92aWRlcyB0aGUgV29yayAoYW5kIGVhY2gKKyAgICAgIENvbnRyaWJ1dG9yIHByb3ZpZGVzIGl0cyBDb250cmlidXRpb25zKSBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCisgICAgICBpbXBsaWVkLCBpbmNsdWRpbmcsIHdpdGhvdXQgbGltaXRhdGlvbiwgYW55IHdhcnJhbnRpZXMgb3IgY29uZGl0aW9ucworICAgICAgb2YgVElUTEUsIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSwgb3IgRklUTkVTUyBGT1IgQQorICAgICAgUEFSVElDVUxBUiBQVVJQT1NFLiBZb3UgYXJlIHNvbGVseSByZXNwb25zaWJsZSBmb3IgZGV0ZXJtaW5pbmcgdGhlCisgICAgICBhcHByb3ByaWF0ZW5lc3Mgb2YgdXNpbmcgb3IgcmVkaXN0cmlidXRpbmcgdGhlIFdvcmsgYW5kIGFzc3VtZSBhbnkKKyAgICAgIHJpc2tzIGFzc29jaWF0ZWQgd2l0aCBZb3VyIGV4ZXJjaXNlIG9mIHBlcm1pc3Npb25zIHVuZGVyIHRoaXMgTGljZW5zZS4KKworICAgOC4gTGltaXRhdGlvbiBvZiBMaWFiaWxpdHkuIEluIG5vIGV2ZW50IGFuZCB1bmRlciBubyBsZWdhbCB0aGVvcnksCisgICAgICB3aGV0aGVyIGluIHRvcnQgKGluY2x1ZGluZyBuZWdsaWdlbmNlKSwgY29udHJhY3QsIG9yIG90aGVyd2lzZSwKKyAgICAgIHVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyAoc3VjaCBhcyBkZWxpYmVyYXRlIGFuZCBncm9zc2x5CisgICAgICBuZWdsaWdlbnQgYWN0cykgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNoYWxsIGFueSBDb250cmlidXRvciBiZQorICAgICAgbGlhYmxlIHRvIFlvdSBmb3IgZGFtYWdlcywgaW5jbHVkaW5nIGFueSBkaXJlY3QsIGluZGlyZWN0LCBzcGVjaWFsLAorICAgICAgaW5jaWRlbnRhbCwgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9mIGFueSBjaGFyYWN0ZXIgYXJpc2luZyBhcyBhCisgICAgICByZXN1bHQgb2YgdGhpcyBMaWNlbnNlIG9yIG91dCBvZiB0aGUgdXNlIG9yIGluYWJpbGl0eSB0byB1c2UgdGhlCisgICAgICBXb3JrIChpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIGRhbWFnZXMgZm9yIGxvc3Mgb2YgZ29vZHdpbGwsCisgICAgICB3b3JrIHN0b3BwYWdlLCBjb21wdXRlciBmYWlsdXJlIG9yIG1hbGZ1bmN0aW9uLCBvciBhbnkgYW5kIGFsbAorICAgICAgb3RoZXIgY29tbWVyY2lhbCBkYW1hZ2VzIG9yIGxvc3NlcyksIGV2ZW4gaWYgc3VjaCBDb250cmlidXRvcgorICAgICAgaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2Ygc3VjaCBkYW1hZ2VzLgorCisgICA5LiBBY2NlcHRpbmcgV2FycmFudHkgb3IgQWRkaXRpb25hbCBMaWFiaWxpdHkuIFdoaWxlIHJlZGlzdHJpYnV0aW5nCisgICAgICB0aGUgV29yayBvciBEZXJpdmF0aXZlIFdvcmtzIHRoZXJlb2YsIFlvdSBtYXkgY2hvb3NlIHRvIG9mZmVyLAorICAgICAgYW5kIGNoYXJnZSBhIGZlZSBmb3IsIGFjY2VwdGFuY2Ugb2Ygc3VwcG9ydCwgd2FycmFudHksIGluZGVtbml0eSwKKyAgICAgIG9yIG90aGVyIGxpYWJpbGl0eSBvYmxpZ2F0aW9ucyBhbmQvb3IgcmlnaHRzIGNvbnNpc3RlbnQgd2l0aCB0aGlzCisgICAgICBMaWNlbnNlLiBIb3dldmVyLCBpbiBhY2NlcHRpbmcgc3VjaCBvYmxpZ2F0aW9ucywgWW91IG1heSBhY3Qgb25seQorICAgICAgb24gWW91ciBvd24gYmVoYWxmIGFuZCBvbiBZb3VyIHNvbGUgcmVzcG9uc2liaWxpdHksIG5vdCBvbiBiZWhhbGYKKyAgICAgIG9mIGFueSBvdGhlciBDb250cmlidXRvciwgYW5kIG9ubHkgaWYgWW91IGFncmVlIHRvIGluZGVtbmlmeSwKKyAgICAgIGRlZmVuZCwgYW5kIGhvbGQgZWFjaCBDb250cmlidXRvciBoYXJtbGVzcyBmb3IgYW55IGxpYWJpbGl0eQorICAgICAgaW5jdXJyZWQgYnksIG9yIGNsYWltcyBhc3NlcnRlZCBhZ2FpbnN0LCBzdWNoIENvbnRyaWJ1dG9yIGJ5IHJlYXNvbgorICAgICAgb2YgeW91ciBhY2NlcHRpbmcgYW55IHN1Y2ggd2FycmFudHkgb3IgYWRkaXRpb25hbCBsaWFiaWxpdHkuCisKKyAgIEVORCBPRiBURVJNUyBBTkQgQ09ORElUSU9OUworCisgICBBUFBFTkRJWDogSG93IHRvIGFwcGx5IHRoZSBBcGFjaGUgTGljZW5zZSB0byB5b3VyIHdvcmsuCisKKyAgICAgIFRvIGFwcGx5IHRoZSBBcGFjaGUgTGljZW5zZSB0byB5b3VyIHdvcmssIGF0dGFjaCB0aGUgZm9sbG93aW5nCisgICAgICBib2lsZXJwbGF0ZSBub3RpY2UsIHdpdGggdGhlIGZpZWxkcyBlbmNsb3NlZCBieSBicmFja2V0cyAiW10iCisgICAgICByZXBsYWNlZCB3aXRoIHlvdXIgb3duIGlkZW50aWZ5aW5nIGluZm9ybWF0aW9uLiAoRG9uJ3QgaW5jbHVkZQorICAgICAgdGhlIGJyYWNrZXRzISkgIFRoZSB0ZXh0IHNob3VsZCBiZSBlbmNsb3NlZCBpbiB0aGUgYXBwcm9wcmlhdGUKKyAgICAgIGNvbW1lbnQgc3ludGF4IGZvciB0aGUgZmlsZSBmb3JtYXQuIFdlIGFsc28gcmVjb21tZW5kIHRoYXQgYQorICAgICAgZmlsZSBvciBjbGFzcyBuYW1lIGFuZCBkZXNjcmlwdGlvbiBvZiBwdXJwb3NlIGJlIGluY2x1ZGVkIG9uIHRoZQorICAgICAgc2FtZSAicHJpbnRlZCBwYWdlIiBhcyB0aGUgY29weXJpZ2h0IG5vdGljZSBmb3IgZWFzaWVyCisgICAgICBpZGVudGlmaWNhdGlvbiB3aXRoaW4gdGhpcmQtcGFydHkgYXJjaGl2ZXMuCisKKyAgIENvcHlyaWdodCBbeXl5eV0gW25hbWUgb2YgY29weXJpZ2h0IG93bmVyXQorCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICAgCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ZvbGxvd2luZyBjb21wb25lbnRzIGFyZSBkaXJlY3Qgd29yayBmcm9tIHRoZSBBcGFjaGUgT3Blbk1lZXRpbmdzIHByb2plY3Q6CisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworYWRtaW4uYmF0CithZG1pbi5zaAorbmV0d29ya190ZXN0LnNoIAord2ViYXBwcy9vcGVubWVldGluZ3MvY29uZmlnLioKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL2Nzcy9vcGVubWVldGluZ3MtZm9ybXMuY3NzCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9jc3MvdGhlbWUuY3NzCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9kZWZhdWx0LXRoZW1lLnhtbAord2ViYXBwcy9vcGVubWVldGluZ3MvZG9jcy8qCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9mYXZpY29uLmljbword2ViYXBwcy9vcGVubWVldGluZ3MvbGFuZ3VhZ2VzLyoKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL21haW4uYXMzLnN3ZjExLnN3Zgord2ViYXBwcy9vcGVubWVldGluZ3MvbWFpbi5zd2Y4LnN3Zgord2ViYXBwcy9vcGVubWVldGluZ3MvbWFpbmRlYnVnLmFzMy5zd2YxMS5zd2YKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL21haW5kZWJ1Zy5zd2Y4LnN3Zgord2ViYXBwcy9vcGVubWVldGluZ3MvbmV0d29ya3Rlc3Rpbmcuc3dmMTAuc3dmCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9uZXR3b3JrdGVzdGluZ2RlYnVnLnN3ZjEwLnN3ZiAKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL29wZW5tZWV0aW5nc19mdW5jdGlvbnMuanMKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL3NjcmVlbnNoYXJpbmcKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL3NpcGluZGV4Lmh0bWwKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL3N0cmVhbXMvKgord2ViYXBwcy9vcGVubWVldGluZ3MvdGhlbWUueHNkCit3ZWJhcHBzL29wZW5tZWV0aW5ncy91cGxvYWQvKgorCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL29wZW5tZWV0aW5ncy1hcHBsaWNhdGlvbkNvbnRleHQueG1sCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL3JlZDUtd2ViLnByb3BlcnRpZXMKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvcmVkNS13ZWIueG1sCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL3NwcmluZy1tdmMtc2VydmxldC54bWwKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvdmVsb2NpdHkucHJvcGVydGllcword2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi93ZWIueG1sCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL2NsYXNzZXMvbG9nYmFjay54c2QKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvY2xhc3Nlcy9sb2diYWNrLWNvbmZpZy54bWwKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvY2xhc3Nlcy9NRVRBLUlORi9kYjJfcGVyc2lzdGVuY2UueG1sCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL2NsYXNzZXMvTUVUQS1JTkYvZGVyYnlfcGVyc2lzdGVuY2UueG1sCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL2NsYXNzZXMvTUVUQS1JTkYvbXlzcWxfcGVyc2lzdGVuY2UueG1sCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL2NsYXNzZXMvTUVUQS1JTkYvb3JhY2xlX3BlcnNpc3RlbmNlLnhtbAord2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9jbGFzc2VzL01FVEEtSU5GL3BlcnNpc3RlbmNlLnhtbAord2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9jbGFzc2VzL01FVEEtSU5GL3Bvc3RncmVzX3BlcnNpc3RlbmNlLnhtbAord2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9jb25mL2F4aXMyLnhtbAord2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9jb25mL2F4aXMyLnhzZAord2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9zZXJ2aWNlcy9vcGVubWVldGluZ3MtMi4xLjAtU05BUFNIT1QuYWFyCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL3NlcnZpY2VzL3NlcnZpY2VzLmxpc3QKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvc2VydmljZXMvdmVyc2lvbi5hYXIKKword2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9saWIvb3Blbm1lZXRpbmdzLTIuMS4wLVNOQVBTSE9ULmphcgord2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9saWIvb3Blbm1lZXRpbmdzLXRlbXBsYXRlcy0yLjEuMC1TTkFQU0hPVC5qYXIKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvbGliL29wZW5tZWV0aW5ncy1XZWJTZXJ2aWNlLTIuMS4wLVNOQVBTSE9ULmphcgorCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9zY3JlZW5zaGFyaW5nL2ljb24uanBnCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9zY3JlZW5zaGFyaW5nL3NwbGFzaGljb24uanBnCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9zY3JlZW5zaGFyaW5nL29wZW5tZWV0aW5ncy1zY3JlZW5zaGFyZS0yLjEuMC1TTkFQU0hPVC5qYXIKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitGdXJ0aGVyIHRob3NlIGNvbXBvbmVudHMgYXJlIGVpdGhlciBpdHNlbGYgb3IgZGVyaXZhdGUgd29yayBmcm9tIAorcHJvamVjdHMgbGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlIDIuMDoKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCityZWQ1Lmphcgord2ViYXBwcy9vcGVubWVldGluZ3Mvc2NyZWVuc2hhcmluZy9yZWQ1LWNsaWVudC5qYXIKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL3NjcmVlbnNoYXJpbmcvcmVkNS5qYXIKK2Jvb3QuamFyCitjb21tb25zLWNsaS1qYXItMS4yLmphcgorcmVkNS5iYXQKK3JlZDUuc2gKK3JlZDUtaGlnaHBlcmYuc2gKK3JlZDUtaGlnaHBlcmYuYmF0CityZWQ1LWRlYnVnLnNoCityZWQ1LWRlYnVnLmJhdAorcmVkNS1zaHV0ZG93bi5zaAorcmVkNS1zaHV0ZG93bi5iYXQKK2NvbmYvYWNjZXNzLnByb3BlcnRpZXMKK2NvbmYvYnVpbGRfc3RhbmRhbG9uZS5wcm9wZXJ0aWVzCitjb25mL2NhdGFsaW5hLnBvbGljeQorY29uZi9jb250ZXh0LnhtbAorY29uZi9laGNhY2hlLnhtbAorY29uZi9qZWUtY29udGFpbmVyLXNzbC54bWwKK2NvbmYvamVlLWNvbnRhaW5lci54bWwKK2NvbmYva2V5c3RvcmUKK2NvbmYva2V5c3RvcmUuam14Citjb25mL2xvZ2JhY2sueG1sCitjb25mL25vLWplZS1jb250YWluZXIueG1sCitjb25mL3Bhc3N3b3JkLnByb3BlcnRpZXMKK2NvbmYvcXVhcnR6LnByb3BlcnRpZXMKK2NvbmYvcmVhbG0ucHJvcGVydGllcworY29uZi9yZWQ1LWNvbW1vbi54bWwKK2NvbmYvcmVkNS1jb3JlLnhtbAorY29uZi9yZWQ1Lmdsb2JhbHMKK2NvbmYvcmVkNS5wb2xpY3kKK2NvbmYvcmVkNS5wcm9wZXJ0aWVzCitjb25mL3JlZDUueG1sCitjb25mL3RvbWNhdC11c2Vycy54bWwKK2NvbmYvdHJ1c3RzdG9yZS5qbXgKK2NvbmYvd2ViLnhtbAord2ViYXBwcy9yZWQ1LWRlZmF1bHQueG1sCit3ZWJhcHBzL3Jvb3QvYmlnbG9nby5wbmcKK3dlYmFwcHMvcm9vdC9jcm9zc2RvbWFpbi54bWwKK3dlYmFwcHMvcm9vdC9mYXZpY29uLmljbword2ViYXBwcy9yb290L2Zhdmljb24ucG5nCit3ZWJhcHBzL3Jvb3QvZmx2ZGVtby5odG1sCit3ZWJhcHBzL3Jvb3QvZ2MuanNwCit3ZWJhcHBzL3Jvb3QvaW5kZXguaHRtbAord2ViYXBwcy9yb290L2xvZ28ucG5nCit3ZWJhcHBzL3Jvb3QvV0VCLUlORi9yZWQ1LXdlYi5wcm9wZXJ0aWVzCit3ZWJhcHBzL3Jvb3QvV0VCLUlORi9yZWQ1LXdlYi54bWwKK3dlYmFwcHMvcm9vdC9XRUItSU5GL3dlYi54bWwKKworCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL2xpYi9hcGFjaGUtbWltZTRqLWNvcmUtamFyLTAuOC1TTkFQU0hPVC5qYXIKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvbGliL2FzdGVyaXNrLWphdmEtamFyLTEuMC4wLkNJLTIwMTMwMTAyLjIxNDUyOC0xMTM0Lmphcgord2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9saWIvYXhpb20tYXBpLWJ1bmRsZS0xLjIuMTUtU05BUFNIT1QuamFyCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL2xpYi9heGlvbS1kb20tYnVuZGxlLTEuMi4xNS1TTkFQU0hPVC5qYXIKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvbGliL2F4aW9tLWltcGwtYnVuZGxlLTEuMi4xNS1TTkFQU0hPVC5qYXIKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvbGliL2F4aXMyLWphci0xLjcuMC1TTkFQU0hPVC5qYXIKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvbGliL2F4aXMyLWpheHdzLWphci0xLjcuMC1TTkFQU0hPVC5qYXIKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvbGliL2F4aXMyLWtlcm5lbC1qYXItMS43LjAtU05BUFNIT1QuamFyCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL2xpYi9heGlzMi1tZXRhZGF0YS1qYXItMS43LjAtU05BUFNIT1QuamFyCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL2xpYi9heGlzMi1zYWFqLWphci0xLjcuMC1TTkFQU0hPVC5qYXIKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvbGliL2F4aXMyLXRyYW5zcG9ydC1odHRwLWJ1bmRsZS0xLjcuMC1TTkFQU0hPVC5qYXIKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvbGliL2F4aXMyLXRyYW5zcG9ydC1sb2NhbC1idW5kbGUtMS43LjAtU05BUFNIT1QuamFyCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL2xpYi9iYXRpay1hbmltLWphci0xLjcuamFyCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL2xpYi9iYXRpay1hd3QtdXRpbC1qYXItMS43Lmphcgord2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9saWIvYmF0aWstYnJpZGdlLWphci0xLjcuamFyCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL2xpYi9iYXRpay1jb2RlYy1qYXItMS43Lmphcgord2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9saWIvYmF0aWstY3NzLWphci0xLjcuamFyCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL2xpYi9iYXRpay1kb20tamFyLTEuNy5qYXIKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvbGliL2JhdGlrLWV4dC1qYXItMS43Lmphcgord2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9saWIvYmF0aWstZXh0ZW5zaW9uLWphci0xLjcuamFyCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL2xpYi9iYXRpay1ndWktdXRpbC1qYXItMS43Lmphcgord2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9saWIvYmF0aWstZ3Z0LWphci0xLjcuamFyCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL2xpYi9iYXRpay1wYXJzZXItamFyLTEuNy5qYXIKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvbGliL2JhdGlrLXJhc3Rlcml6ZXItamFyLTEuNy5qYXIKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvbGliL2JhdGlrLXNjcmlwdC1qYXItMS43Lmphcgord2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9saWIvYmF0aWstc2xpZGVzaG93LWphci0xLjcuamFyCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL2xpYi9iYXRpay1zcXVpZ2dsZS1qYXItMS43Lmphcgord2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9saWIvYmF0aWstc3ZnLWRvbS1qYXItMS43Lmphcgord2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9saWIvYmF0aWstc3ZnZ2VuLWphci0xLjcuamFyCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL2xpYi9iYXRpay1zdmdwcC1qYXItMS43Lmphcgord2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9saWIvYmF0aWstc3dpbmctamFyLTEuNy5qYXIKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvbGliL2JhdGlrLXRyYW5zY29kZXItamFyLTEuNy5qYXIKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvbGliL2JhdGlrLXR0ZjJzdmctamFyLTEuNy5qYXIKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvbGliL2JhdGlrLXV0aWwtamFyLTEuNy5qYXIKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvbGliL2JhdGlrLXhtbC1qYXItMS43Lmphcgord2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9saWIvY29tbW9ucy1kYmNwLWphci0xLjQuamFyCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL2xpYi9jb21tb25zLWRpZ2VzdGVyLWphci0yLjEuamFyCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL2xpYi9jb21tb25zLWh0dHBjbGllbnQtamFyLTMuMS5qYXIKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvbGliL2NvbW1vbnMtbGFuZy1qYXItMi42Lmphcgord2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9saWIvY29tbW9ucy1uZXQtamFyLTMuMS5qYXIKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvbGliL2NvbW1vbnMtdHJhbnNhY3Rpb24tamFyLTEuMi5qYXIKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvbGliL2RlcmJ5LWphci0xMC44LjIuMi5qYXIKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvbGliL2RlcmJ5Y2xpZW50LWphci0xMC44LjIuMi5qYXIKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvbGliL2ZvcC1qYXItMS4wLmphcgord2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9saWIvZ2Vyb25pbW8tYWN0aXZhdGlvbl8xLjFfc3BlYy1idW5kbGUtMS4xLmphcgord2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9saWIvZ2Vyb25pbW8tYW5ub3RhdGlvbl8xLjBfc3BlYy1qYXItMS4xLmphcgord2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9saWIvZ2Vyb25pbW8tamF2YW1haWxfMS40X3NwZWMtYnVuZGxlLTEuNy4xLmphcgord2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9saWIvZ2Vyb25pbW8tamF4d3NfMi4yX3NwZWMtYnVuZGxlLTEuMC5qYXIKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvbGliL2dlcm9uaW1vLWp0YV8xLjFfc3BlYy1qYXItMS4xLmphcgord2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9saWIvZ2Vyb25pbW8tc2Fhal8xLjNfc3BlYy1qYXItMS4wLjEuamFyCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL2xpYi9nZXJvbmltby1zdGF4LWFwaV8xLjBfc3BlYy1idW5kbGUtMS4wLjEuamFyCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL2xpYi9nZXJvbmltby13cy1tZXRhZGF0YV8yLjBfc3BlYy1qYXItMS4xLjIuamFyCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL2xpYi9qc21wcC1qYXItMi4xLjAuamFyCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL2xpYi9uZWV0aGktYnVuZGxlLTMuMC4zLVNOQVBTSE9ULmphcgord2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9saWIvb3BlbmpwYS1idW5kbGUtMi4yLjEuamFyCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL2xpYi9zaW1wbGUteG1sLWphci0yLjYuOS5qYXIKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvbGliL3Ntc2xpYi1qYXItMy41LjMuMS5qYXIKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvbGliL3N0YXgtYXBpLWphci0xLjAtMi5qYXIKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvbGliL3N0YXgyLWFwaS1qYXItMy4xLjEuamFyCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL2xpYi92ZWxvY2l0eS1qYXItMS43Lmphcgord2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9saWIvdmVsb2NpdHktdG9vbHMtamFyLTIuMC5qYXIKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvbGliL3dpY2tldC1hdXRoLXJvbGVzLWphci02LjUuMC5qYXIKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvbGliL3dpY2tldC1jb3JlLWphci02LjUuMC5qYXIKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvbGliL3dpY2tldC1kYXRldGltZS1qYXItNi41LjAuamFyCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL2xpYi93aWNrZXQtZXh0ZW5zaW9ucy1qYXItNi41LjAuamFyCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL2xpYi93aWNrZXQtaW9jLWphci02LjUuMC5qYXIKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvbGliL3dpY2tldC1uYXRpdmUtd2Vic29ja2V0LWNvcmUtamFyLTAuNi5qYXIKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvbGliL3dpY2tldC1uYXRpdmUtd2Vic29ja2V0LXRvbWNhdC1qYXItMC42Lmphcgord2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9saWIvd2lja2V0LXJlcXVlc3QtamFyLTYuNS4wLmphcgord2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9saWIvd2lja2V0LXV0aWwtamFyLTYuNS4wLmphciAKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvbGliL3dvZGVuLWNvcmUtYnVuZGxlLTEuMC1TTkFQU0hPVC5qYXIKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvbGliL3dvb2RzdG94LWNvcmUtYXNsLWphci00LjEuNC5qYXIKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvbGliL3dzLWNvbW1vbnMtdXRpbC1qYXItMS4wLjIuamFyCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL2xpYi93c2RsNGotamFyLTEuNi4yLmphcgord2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9saWIveGFsYW4tamFyLTIuNy4wLmphcgord2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9saWIveG1sLWFwaXMtZXh0LWphci0xLjMuMDQuamFyCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL2xpYi94bWwtcmVzb2x2ZXItamFyLTEuMi5qYXIKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvbGliL3htbGdyYXBoaWNzLWNvbW1vbnMtamFyLTEuNC5qYXIKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvbGliL3htbHJwYy1jbGllbnQtamFyLTMuMS4zLmphcgord2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9saWIveG1scnBjLWNvbW1vbi1qYXItMy4xLjMuamFyCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL2xpYi9YbWxTY2hlbWEtYnVuZGxlLTEuNC44LVNOQVBTSE9ULmphcgorCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9zY3JlZW5zaGFyaW5nL2NvbW1vbnMtYmVhbnV0aWxzLTEuOC4zLmphcgord2ViYXBwcy9vcGVubWVldGluZ3Mvc2NyZWVuc2hhcmluZy9jb21tb25zLWNvZGVjLTEuNi5qYXIKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL3NjcmVlbnNoYXJpbmcvY29tbW9ucy1jb2xsZWN0aW9ucy0zLjIuMS5qYXIKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL3NjcmVlbnNoYXJpbmcvZWhjYWNoZS1jb3JlLTIuNS4wLmphcgord2ViYXBwcy9vcGVubWVldGluZ3Mvc2NyZWVuc2hhcmluZy9odHRwY2xpZW50LTQuMi5qYXIKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL3NjcmVlbnNoYXJpbmcvaHR0cGNvcmUtNC4yLjEuamFyCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9zY3JlZW5zaGFyaW5nL21pbmEtY29yZS0yLjAuNC5qYXIKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL3NjcmVlbnNoYXJpbmcvc3ByaW5nLWJlYW5zLTMuMS4xLlJFTEVBU0UuamFyCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9zY3JlZW5zaGFyaW5nL3NwcmluZy1jb250ZXh0LTMuMS4xLlJFTEVBU0UuamFyCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9zY3JlZW5zaGFyaW5nL3NwcmluZy1jb3JlLTMuMS4xLlJFTEVBU0UuamFyCisKK2xpYi9jZ2xpYi1qYXItMi4yLjIuamFyCitsaWIvY29tLnNwcmluZ3NvdXJjZS5qYXZheC54bWwuc3RyZWFtLTEuMC4xLmphcgorbGliL2NvbS5zcHJpbmdzb3VyY2UubmV0LnNmLmNnbGliLTIuMi4wLmphcgorbGliL2NvbS5zcHJpbmdzb3VyY2Uub3JnLmFudGxyLTMuMS4zLmphcgorbGliL2NvbS5zcHJpbmdzb3VyY2Uub3JnLmFvcGFsbGlhbmNlLTEuMC4wLmphcgorbGliL2NvbS5zcHJpbmdzb3VyY2Uub3JnLmFwYWNoZS54ZXJjZXMtMi45LjEuamFyCitsaWIvY29tLnNwcmluZ3NvdXJjZS5vcmcuY29kZWhhdXMuZ3Jvb3Z5LTEuNy4wLmphcgorbGliL2NvbS5zcHJpbmdzb3VyY2Uub3JnLm1vemlsbGEuamF2YXNjcmlwdC0xLjcuMC5SMi5qYXIKK2xpYi9jb20uc3ByaW5nc291cmNlLm9yZy5vYmplY3R3ZWIuYXNtLTMuMi4wLmphcgorbGliL2NvbS5zcHJpbmdzb3VyY2Uub3JnLm9iamVjdHdlYi5hc20uY29tbW9ucy0zLjIuMC5qYXIKK2xpYi9jb21tb25zLWJlYW51dGlscy0xLjguMy5qYXIKK2xpYi9jb21tb25zLWNvZGVjLTEuNi5qYXIKK2xpYi9jb21tb25zLWNvbGxlY3Rpb25zLTMuMi4xLmphcgorbGliL2NvbW1vbnMtZmlsZXVwbG9hZC1qYXItMS4yLjIuamFyCitsaWIvY29tbW9ucy1pby1qYXItMi4xLmphcgorbGliL2NvbW1vbnMtbGFuZzMtMy4xLmphcgorbGliL2NvbW1vbnMtbW9kZWxlci0yLjAuMS5qYXIKK2xpYi9jb21tb25zLXBvb2wtMS41LjYuamFyCitsaWIvZWhjYWNoZS1jb3JlLTIuNS4wLmphcgorbGliL2dlcm9uaW1vLWpwYV8yLjBfc3BlYy1idW5kbGUtMS4xLmphcgorbGliL2h0dHBjbGllbnQtNC4yLmphcgorbGliL2h0dHBjb3JlLTQuMi4xLmphcgorbGliL21pbmEtY29yZS0yLjAuNC5qYXIKK2xpYi9taW5hLWludGVncmF0aW9uLWJlYW5zLTIuMC40LmphcgorbGliL21pbmEtaW50ZWdyYXRpb24tam14LTIuMC40LmphcgorbGliL29yZy5zcHJpbmdmcmFtZXdvcmsuYXNwZWN0cy1qYXItMy4xLjEuUkVMRUFTRS5qYXIKK2xpYi9vcmcuc3ByaW5nZnJhbWV3b3JrLmpkYmMtamFyLTMuMS4xLlJFTEVBU0UuamFyCitsaWIvb3JnLnNwcmluZ2ZyYW1ld29yay5vcm0tamFyLTMuMS4xLlJFTEVBU0UuamFyCitsaWIvb3JnLnNwcmluZ2ZyYW1ld29yay50cmFuc2FjdGlvbi1qYXItMy4xLjEuUkVMRUFTRS5qYXIKK2xpYi9vcmcuc3ByaW5nZnJhbWV3b3JrLndlYi5zZXJ2bGV0LWphci0zLjEuMS5SRUxFQVNFLmphcgorbGliL3F1YXJ0ei0xLjguNS5qYXIKK2xpYi9yZWQ1LWNsaWVudC5qYXIKK2xpYi9zcHJpbmctYW9wLTMuMS4xLlJFTEVBU0UuamFyCitsaWIvc3ByaW5nLWFzbS0zLjEuMS5SRUxFQVNFLmphcgorbGliL3NwcmluZy1iZWFucy0zLjEuMS5SRUxFQVNFLmphcgorbGliL3NwcmluZy1jb250ZXh0LTMuMS4xLlJFTEVBU0UuamFyCitsaWIvc3ByaW5nLWNvbnRleHQtc3VwcG9ydC0zLjEuMS5SRUxFQVNFLmphcgorbGliL3NwcmluZy1jb3JlLTMuMS4xLlJFTEVBU0UuamFyCitsaWIvc3ByaW5nLWV4cHJlc3Npb24tMy4xLjEuUkVMRUFTRS5qYXIKK2xpYi9zcHJpbmctd2ViLTMuMS4xLlJFTEVBU0UuamFyCitsaWIveG1scnBjLTIuMC4xLmphcgorCitwbHVnaW5zL3RvbWNhdC1lbWJlZC1jb3JlLWphci03LjAuMzQuamFyCitwbHVnaW5zL3RvbWNhdC1lbWJlZC1qYXNwZXItamFyLTcuMC4zNC5qYXIKK3BsdWdpbnMvdG9tY2F0LWVtYmVkLWxvZ2dpbmctanVsaS1qYXItNy4wLjM0LmphcgorcGx1Z2lucy90b21jYXQtZW1iZWQtbG9nZ2luZy1sb2c0ai1qYXItNy4wLjM0LmphcgorcGx1Z2lucy90b21jYXRwbHVnaW4tamFyLTEuNC5qYXIKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgICAKK0FQQUNIRSBPUEVOTUVFVElOR1MgU1VCQ09NUE9ORU5UUzoKKworQXBhY2hlIE9wZW5NZWV0aW5ncyBpbmNsdWRlcyBhIG51bWJlciBvZiBzdWJjb21wb25lbnRzIHdpdGggc2VwYXJhdGUgY29weXJpZ2h0IG5vdGljZXMKK2FuZCBsaWNlbnNlIHRlcm1zLiBZb3VyIHVzZSBvZiB0aGVzZSBzdWJjb21wb25lbnRzIGlzIHN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZAorY29uZGl0aW9ucyBvZiB0aGUgZm9sbG93aW5nIGxpY2Vuc2VzLiAgIAorICAgCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ZvciBHbGFzc0Zpc2ggY29tcG9uZW50cworCithY3RpdmF0aW9uLWphci0xLjEuamFyCitqc3IzMTEtYXBpLWphci0xLjEuMS5qYXIKKworQ09NTU9OIERFVkVMT1BNRU5UIEFORCBESVNUUklCVVRJT04gTElDRU5TRSAoQ0RETCkgVmVyc2lvbiAxLjAKKworMS4gRGVmaW5pdGlvbnMuCisKKzEuMS4gQ29udHJpYnV0b3IgbWVhbnMgZWFjaCBpbmRpdmlkdWFsIG9yIGVudGl0eSB0aGF0IGNyZWF0ZXMgb3IgY29udHJpYnV0ZXMgdG8gdGhlIGNyZWF0aW9uIG9mIE1vZGlmaWNhdGlvbnMuCisKKzEuMi4gQ29udHJpYnV0b3IgVmVyc2lvbiBtZWFucyB0aGUgY29tYmluYXRpb24gb2YgdGhlIE9yaWdpbmFsIFNvZnR3YXJlLCBwcmlvciBNb2RpZmljYXRpb25zIHVzZWQgYnkgYSBDb250cmlidXRvciAoaWYgYW55KSwgYW5kIHRoZSBNb2RpZmljYXRpb25zIG1hZGUgYnkgdGhhdCBwYXJ0aWN1bGFyIENvbnRyaWJ1dG9yLgorCisxLjMuIENvdmVyZWQgU29mdHdhcmUgbWVhbnMgKGEpIHRoZSBPcmlnaW5hbCBTb2Z0d2FyZSwgb3IgKGIpIE1vZGlmaWNhdGlvbnMsIG9yIChjKSB0aGUgY29tYmluYXRpb24gb2YgZmlsZXMgY29udGFpbmluZyBPcmlnaW5hbCBTb2Z0d2FyZSB3aXRoIGZpbGVzIGNvbnRhaW5pbmcgTW9kaWZpY2F0aW9ucywgaW4gZWFjaCBjYXNlIGluY2x1ZGluZyBwb3J0aW9ucyB0aGVyZW9mLgorCisxLjQuIEV4ZWN1dGFibGUgbWVhbnMgdGhlIENvdmVyZWQgU29mdHdhcmUgaW4gYW55IGZvcm0gb3RoZXIgdGhhbiBTb3VyY2UgQ29kZS4KKworMS41LiBJbml0aWFsIERldmVsb3BlciBtZWFucyB0aGUgaW5kaXZpZHVhbCBvciBlbnRpdHkgdGhhdCBmaXJzdCBtYWtlcyBPcmlnaW5hbCBTb2Z0d2FyZSBhdmFpbGFibGUgdW5kZXIgdGhpcyBMaWNlbnNlLgorCisxLjYuIExhcmdlciBXb3JrIG1lYW5zIGEgd29yayB3aGljaCBjb21iaW5lcyBDb3ZlcmVkIFNvZnR3YXJlIG9yIHBvcnRpb25zIHRoZXJlb2Ygd2l0aCBjb2RlIG5vdCBnb3Zlcm5lZCBieSB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLgorCisxLjcuIExpY2Vuc2UgbWVhbnMgdGhpcyBkb2N1bWVudC4KKworMS44LiBMaWNlbnNhYmxlIG1lYW5zIGhhdmluZyB0aGUgcmlnaHQgdG8gZ3JhbnQsIHRvIHRoZSBtYXhpbXVtIGV4dGVudCBwb3NzaWJsZSwgd2hldGhlciBhdCB0aGUgdGltZSBvZiB0aGUgaW5pdGlhbCBncmFudCBvciBzdWJzZXF1ZW50bHkgYWNxdWlyZWQsIGFueSBhbmQgYWxsIG9mIHRoZSByaWdodHMgY29udmV5ZWQgaGVyZWluLgorCisxLjkuIE1vZGlmaWNhdGlvbnMgbWVhbnMgdGhlIFNvdXJjZSBDb2RlIGFuZCBFeGVjdXRhYmxlIGZvcm0gb2YgYW55IG9mIHRoZSBmb2xsb3dpbmc6CisKK0EuIEFueSBmaWxlIHRoYXQgcmVzdWx0cyBmcm9tIGFuIGFkZGl0aW9uIHRvLCBkZWxldGlvbiBmcm9tIG9yIG1vZGlmaWNhdGlvbiBvZiB0aGUgY29udGVudHMgb2YgYSBmaWxlIGNvbnRhaW5pbmcgT3JpZ2luYWwgU29mdHdhcmUgb3IgcHJldmlvdXMgTW9kaWZpY2F0aW9uczsKKworQi4gQW55IG5ldyBmaWxlIHRoYXQgY29udGFpbnMgYW55IHBhcnQgb2YgdGhlIE9yaWdpbmFsIFNvZnR3YXJlIG9yIHByZXZpb3VzIE1vZGlmaWNhdGlvbjsgb3IKKworQy4gQW55IG5ldyBmaWxlIHRoYXQgaXMgY29udHJpYnV0ZWQgb3Igb3RoZXJ3aXNlIG1hZGUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UuCisKKzEuMTAuIE9yaWdpbmFsIFNvZnR3YXJlIG1lYW5zIHRoZSBTb3VyY2UgQ29kZSBhbmQgRXhlY3V0YWJsZSBmb3JtIG9mIGNvbXB1dGVyIHNvZnR3YXJlIGNvZGUgdGhhdCBpcyBvcmlnaW5hbGx5IHJlbGVhc2VkIHVuZGVyIHRoaXMgTGljZW5zZS4KKworMS4xMS4gUGF0ZW50IENsYWltcyBtZWFucyBhbnkgcGF0ZW50IGNsYWltKHMpLCBub3cgb3duZWQgb3IgaGVyZWFmdGVyIGFjcXVpcmVkLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uLCBtZXRob2QsIHByb2Nlc3MsIGFuZCBhcHBhcmF0dXMgY2xhaW1zLCBpbiBhbnkgcGF0ZW50IExpY2Vuc2FibGUgYnkgZ3JhbnRvci4KKworMS4xMi4gU291cmNlIENvZGUgbWVhbnMgKGEpIHRoZSBjb21tb24gZm9ybSBvZiBjb21wdXRlciBzb2Z0d2FyZSBjb2RlIGluIHdoaWNoIG1vZGlmaWNhdGlvbnMgYXJlIG1hZGUgYW5kIChiKSBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gaW5jbHVkZWQgaW4gb3Igd2l0aCBzdWNoIGNvZGUuCisKKzEuMTMuIFlvdSAob3IgWW91cikgbWVhbnMgYW4gaW5kaXZpZHVhbCBvciBhIGxlZ2FsIGVudGl0eSBleGVyY2lzaW5nIHJpZ2h0cyB1bmRlciwgYW5kIGNvbXBseWluZyB3aXRoIGFsbCBvZiB0aGUgdGVybXMgb2YsIHRoaXMgTGljZW5zZS4gRm9yIGxlZ2FsIGVudGl0aWVzLCBZb3UgaW5jbHVkZXMgYW55IGVudGl0eSB3aGljaCBjb250cm9scywgaXMgY29udHJvbGxlZCBieSwgb3IgaXMgdW5kZXIgY29tbW9uIGNvbnRyb2wgd2l0aCBZb3UuIEZvciBwdXJwb3NlcyBvZiB0aGlzIGRlZmluaXRpb24sIGNvbnRyb2wgbWVhbnMgKGEp4XRoZSBwb3dlciwgZGlyZWN0IG9yIGluZGlyZWN0LCB0byBjYXVzZSB0aGUgZGlyZWN0aW9uIG9yIG1hbmFnZW1lbnQgb2Ygc3VjaCBlbnRpdHksIHdoZXRoZXIgYnkgY29udHJhY3Qgb3Igb3RoZXJ3aXNlLCBvciAoYinhb3duZXJzaGlwIG9mIG1vcmUgdGhhbiBmaWZ0eSBwZXJjZW50ICg1MCUpIG9mIHRoZSBvdXRzdGFuZGluZyBzaGFyZXMgb3IgYmVuZWZpY2lhbCBvd25lcnNoaXAgb2Ygc3VjaCBlbnRpdHkuCisKKzIuIExpY2Vuc2UgR3JhbnRzLgorCisyLjEuIFRoZSBJbml0aWFsIERldmVsb3BlciBHcmFudC4KK0NvbmRpdGlvbmVkIHVwb24gWW91ciBjb21wbGlhbmNlIHdpdGggU2VjdGlvbiAzLjEgYmVsb3cgYW5kIHN1YmplY3QgdG8gdGhpcmQgcGFydHkgaW50ZWxsZWN0dWFsIHByb3BlcnR5IGNsYWltcywgdGhlIEluaXRpYWwgRGV2ZWxvcGVyIGhlcmVieSBncmFudHMgWW91IGEgd29ybGQtd2lkZSwgcm95YWx0eS1mcmVlLCBub24tZXhjbHVzaXZlIGxpY2Vuc2U6CisoYSkgdW5kZXIgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyAob3RoZXIgdGhhbiBwYXRlbnQgb3IgdHJhZGVtYXJrKSBMaWNlbnNhYmxlIGJ5IEluaXRpYWwgRGV2ZWxvcGVyLCB0byB1c2UsIHJlcHJvZHVjZSwgbW9kaWZ5LCBkaXNwbGF5LCBwZXJmb3JtLCBzdWJsaWNlbnNlIGFuZCBkaXN0cmlidXRlIHRoZSBPcmlnaW5hbCBTb2Z0d2FyZSAob3IgcG9ydGlvbnMgdGhlcmVvZiksIHdpdGggb3Igd2l0aG91dCBNb2RpZmljYXRpb25zLCBhbmQvb3IgYXMgcGFydCBvZiBhIExhcmdlciBXb3JrOyBhbmQKKyhiKSB1bmRlciBQYXRlbnQgQ2xhaW1zIGluZnJpbmdlZCBieSB0aGUgbWFraW5nLCB1c2luZyBvciBzZWxsaW5nIG9mIE9yaWdpbmFsIFNvZnR3YXJlLCB0byBtYWtlLCBoYXZlIG1hZGUsIHVzZSwgcHJhY3RpY2UsIHNlbGwsIGFuZCBvZmZlciBmb3Igc2FsZSwgYW5kL29yIG90aGVyd2lzZSBkaXNwb3NlIG9mIHRoZSBPcmlnaW5hbCBTb2Z0d2FyZSAob3IgcG9ydGlvbnMgdGhlcmVvZikuCisoYykgVGhlIGxpY2Vuc2VzIGdyYW50ZWQgaW4gU2VjdGlvbnPhMi4xKGEpIGFuZCAoYikgYXJlIGVmZmVjdGl2ZSBvbiB0aGUgZGF0ZSBJbml0aWFsIERldmVsb3BlciBmaXJzdCBkaXN0cmlidXRlcyBvciBvdGhlcndpc2UgbWFrZXMgdGhlIE9yaWdpbmFsIFNvZnR3YXJlIGF2YWlsYWJsZSB0byBhIHRoaXJkIHBhcnR5IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UuCisoZCkgTm90d2l0aHN0YW5kaW5nIFNlY3Rpb27hMi4xKGIpIGFib3ZlLCBubyBwYXRlbnQgbGljZW5zZSBpcyBncmFudGVkOiAoMSnhZm9yIGNvZGUgdGhhdCBZb3UgZGVsZXRlIGZyb20gdGhlIE9yaWdpbmFsIFNvZnR3YXJlLCBvciAoMinhZm9yIGluZnJpbmdlbWVudHMgY2F1c2VkIGJ5OiAoaSnhdGhlIG1vZGlmaWNhdGlvbiBvZiB0aGUgT3JpZ2luYWwgU29mdHdhcmUsIG9yIChpaSnhdGhlIGNvbWJpbmF0aW9uIG9mIHRoZSBPcmlnaW5hbCBTb2Z0d2FyZSB3aXRoIG90aGVyIHNvZnR3YXJlIG9yIGRldmljZXMuCisKKzIuMi4gQ29udHJpYnV0b3IgR3JhbnQuCitDb25kaXRpb25lZCB1cG9uIFlvdXIgY29tcGxpYW5jZSB3aXRoIFNlY3Rpb24gMy4xIGJlbG93IGFuZCBzdWJqZWN0IHRvIHRoaXJkIHBhcnR5IGludGVsbGVjdHVhbCBwcm9wZXJ0eSBjbGFpbXMsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyBZb3UgYSB3b3JsZC13aWRlLCByb3lhbHR5LWZyZWUsIG5vbi1leGNsdXNpdmUgbGljZW5zZToKKyhhKSB1bmRlciBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIChvdGhlciB0aGFuIHBhdGVudCBvciB0cmFkZW1hcmspIExpY2Vuc2FibGUgYnkgQ29udHJpYnV0b3IgdG8gdXNlLCByZXByb2R1Y2UsIG1vZGlmeSwgZGlzcGxheSwgcGVyZm9ybSwgc3VibGljZW5zZSBhbmQgZGlzdHJpYnV0ZSB0aGUgTW9kaWZpY2F0aW9ucyBjcmVhdGVkIGJ5IHN1Y2ggQ29udHJpYnV0b3IgKG9yIHBvcnRpb25zIHRoZXJlb2YpLCBlaXRoZXIgb24gYW4gdW5tb2RpZmllZCBiYXNpcywgd2l0aCBvdGhlciBNb2RpZmljYXRpb25zLCBhcyBDb3ZlcmVkIFNvZnR3YXJlIGFuZC9vciBhcyBwYXJ0IG9mIGEgTGFyZ2VyIFdvcms7IGFuZAorKGIpIHVuZGVyIFBhdGVudCBDbGFpbXMgaW5mcmluZ2VkIGJ5IHRoZSBtYWtpbmcsIHVzaW5nLCBvciBzZWxsaW5nIG9mIE1vZGlmaWNhdGlvbnMgbWFkZSBieSB0aGF0IENvbnRyaWJ1dG9yIGVpdGhlciBhbG9uZSBhbmQvb3IgaW4gY29tYmluYXRpb24gd2l0aCBpdHMgQ29udHJpYnV0b3IgVmVyc2lvbiAob3IgcG9ydGlvbnMgb2Ygc3VjaCBjb21iaW5hdGlvbiksIHRvIG1ha2UsIHVzZSwgc2VsbCwgb2ZmZXIgZm9yIHNhbGUsIGhhdmUgbWFkZSwgYW5kL29yIG90aGVyd2lzZSBkaXNwb3NlIG9mOiAoMSnhTW9kaWZpY2F0aW9ucyBtYWRlIGJ5IHRoYXQgQ29udHJpYnV0b3IgKG9yIHBvcnRpb25zIHRoZXJlb2YpOyBhbmQgKDIp4XRoZSBjb21iaW5hdGlvbiBvZiBNb2RpZmljYXRpb25zIG1hZGUgYnkgdGhhdCBDb250cmlidXRvciB3aXRoIGl0cyBDb250cmlidXRvciBWZXJzaW9uIChvciBwb3J0aW9ucyBvZiBzdWNoIGNvbWJpbmF0aW9uKS4KKyhjKSBUaGUgbGljZW5zZXMgZ3JhbnRlZCBpbiBTZWN0aW9uc+EyLjIoYSkgYW5kIDIuMihiKSBhcmUgZWZmZWN0aXZlIG9uIHRoZSBkYXRlIENvbnRyaWJ1dG9yIGZpcnN0IGRpc3RyaWJ1dGVzIG9yIG90aGVyd2lzZSBtYWtlcyB0aGUgTW9kaWZpY2F0aW9ucyBhdmFpbGFibGUgdG8gYSB0aGlyZCBwYXJ0eS4KKyhkKSBOb3R3aXRoc3RhbmRpbmcgU2VjdGlvbuEyLjIoYikgYWJvdmUsIG5vIHBhdGVudCBsaWNlbnNlIGlzIGdyYW50ZWQ6ICgxKeFmb3IgYW55IGNvZGUgdGhhdCBDb250cmlidXRvciBoYXMgZGVsZXRlZCBmcm9tIHRoZSBDb250cmlidXRvciBWZXJzaW9uOyAoMinhZm9yIGluZnJpbmdlbWVudHMgY2F1c2VkIGJ5OiAoaSnhdGhpcmQgcGFydHkgbW9kaWZpY2F0aW9ucyBvZiBDb250cmlidXRvciBWZXJzaW9uLCBvciAoaWkp4XRoZSBjb21iaW5hdGlvbiBvZiBNb2RpZmljYXRpb25zIG1hZGUgYnkgdGhhdCBDb250cmlidXRvciB3aXRoIG90aGVyIHNvZnR3YXJlIChleGNlcHQgYXMgcGFydCBvZiB0aGUgQ29udHJpYnV0b3IgVmVyc2lvbikgb3Igb3RoZXIgZGV2aWNlczsgb3IgKDMp4XVuZGVyIFBhdGVudCBDbGFpbXMgaW5mcmluZ2VkIGJ5IENvdmVyZWQgU29mdHdhcmUgaW4gdGhlIGFic2VuY2Ugb2YgTW9kaWZpY2F0aW9ucyBtYWRlIGJ5IHRoYXQgQ29udHJpYnV0b3IuCisKKzMuIERpc3RyaWJ1dGlvbiBPYmxpZ2F0aW9ucy4KKworMy4xLiBBdmFpbGFiaWxpdHkgb2YgU291cmNlIENvZGUuCisKK0FueSBDb3ZlcmVkIFNvZnR3YXJlIHRoYXQgWW91IGRpc3RyaWJ1dGUgb3Igb3RoZXJ3aXNlIG1ha2UgYXZhaWxhYmxlIGluIEV4ZWN1dGFibGUgZm9ybSBtdXN0IGFsc28gYmUgbWFkZSBhdmFpbGFibGUgaW4gU291cmNlIENvZGUgZm9ybSBhbmQgdGhhdCBTb3VyY2UgQ29kZSBmb3JtIG11c3QgYmUgZGlzdHJpYnV0ZWQgb25seSB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLiBZb3UgbXVzdCBpbmNsdWRlIGEgY29weSBvZiB0aGlzIExpY2Vuc2Ugd2l0aCBldmVyeSBjb3B5IG9mIHRoZSBTb3VyY2UgQ29kZSBmb3JtIG9mIHRoZSBDb3ZlcmVkIFNvZnR3YXJlIFlvdSBkaXN0cmlidXRlIG9yIG90aGVyd2lzZSBtYWtlIGF2YWlsYWJsZS4gWW91IG11c3QgaW5mb3JtIHJlY2lwaWVudHMgb2YgYW55IHN1Y2ggQ292ZXJlZCBTb2Z0d2FyZSBpbiBFeGVjdXRhYmxlIGZvcm0gYXMgdG8gaG93IHRoZXkgY2FuIG9idGFpbiBzdWNoIENvdmVyZWQgU29mdHdhcmUgaW4gU291cmNlIENvZGUgZm9ybSBpbiBhIHJlYXNvbmFibGUgbWFubmVyIG9uIG9yIHRocm91Z2ggYSBtZWRpdW0gY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgZXhjaGFuZ2UuCisKKzMuMi4gTW9kaWZpY2F0aW9ucy4KKworVGhlIE1vZGlmaWNhdGlvbnMgdGhhdCBZb3UgY3JlYXRlIG9yIHRvIHdoaWNoIFlvdSBjb250cmlidXRlIGFyZSBnb3Zlcm5lZCBieSB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLiBZb3UgcmVwcmVzZW50IHRoYXQgWW91IGJlbGlldmUgWW91ciBNb2RpZmljYXRpb25zIGFyZSBZb3VyIG9yaWdpbmFsIGNyZWF0aW9uKHMpIGFuZC9vciBZb3UgaGF2ZSBzdWZmaWNpZW50IHJpZ2h0cyB0byBncmFudCB0aGUgcmlnaHRzIGNvbnZleWVkIGJ5IHRoaXMgTGljZW5zZS4KKworMy4zLiBSZXF1aXJlZCBOb3RpY2VzLgorWW91IG11c3QgaW5jbHVkZSBhIG5vdGljZSBpbiBlYWNoIG9mIFlvdXIgTW9kaWZpY2F0aW9ucyB0aGF0IGlkZW50aWZpZXMgWW91IGFzIHRoZSBDb250cmlidXRvciBvZiB0aGUgTW9kaWZpY2F0aW9uLiBZb3UgbWF5IG5vdCByZW1vdmUgb3IgYWx0ZXIgYW55IGNvcHlyaWdodCwgcGF0ZW50IG9yIHRyYWRlbWFyayBub3RpY2VzIGNvbnRhaW5lZCB3aXRoaW4gdGhlIENvdmVyZWQgU29mdHdhcmUsIG9yIGFueSBub3RpY2VzIG9mIGxpY2Vuc2luZyBvciBhbnkgZGVzY3JpcHRpdmUgdGV4dCBnaXZpbmcgYXR0cmlidXRpb24gdG8gYW55IENvbnRyaWJ1dG9yIG9yIHRoZSBJbml0aWFsIERldmVsb3Blci4KKworMy40LiBBcHBsaWNhdGlvbiBvZiBBZGRpdGlvbmFsIFRlcm1zLgorWW91IG1heSBub3Qgb2ZmZXIgb3IgaW1wb3NlIGFueSB0ZXJtcyBvbiBhbnkgQ292ZXJlZCBTb2Z0d2FyZSBpbiBTb3VyY2UgQ29kZSBmb3JtIHRoYXQgYWx0ZXJzIG9yIHJlc3RyaWN0cyB0aGUgYXBwbGljYWJsZSB2ZXJzaW9uIG9mIHRoaXMgTGljZW5zZSBvciB0aGUgcmVjaXBpZW50cyByaWdodHMgaGVyZXVuZGVyLiBZb3UgbWF5IGNob29zZSB0byBvZmZlciwgYW5kIHRvIGNoYXJnZSBhIGZlZSBmb3IsIHdhcnJhbnR5LCBzdXBwb3J0LCBpbmRlbW5pdHkgb3IgbGlhYmlsaXR5IG9ibGlnYXRpb25zIHRvIG9uZSBvciBtb3JlIHJlY2lwaWVudHMgb2YgQ292ZXJlZCBTb2Z0d2FyZS4gSG93ZXZlciwgeW91IG1heSBkbyBzbyBvbmx5IG9uIFlvdXIgb3duIGJlaGFsZiwgYW5kIG5vdCBvbiBiZWhhbGYgb2YgdGhlIEluaXRpYWwgRGV2ZWxvcGVyIG9yIGFueSBDb250cmlidXRvci4gWW91IG11c3QgbWFrZSBpdCBhYnNvbHV0ZWx5IGNsZWFyIHRoYXQgYW55IHN1Y2ggd2FycmFudHksIHN1cHBvcnQsIGluZGVtbml0eSBvciBsaWFiaWxpdHkgb2JsaWdhdGlvbiBpcyBvZmZlcmVkIGJ5IFlvdSBhbG9uZSwgYW5kIFlvdSBoZXJlYnkgYWdyZWUgdG8gaW5kZW1uaWZ5IHRoZSBJbml0aWFsIERldmVsb3BlciBhbmQgZXZlcnkgQ29udHJpYnV0b3IgZm9yIGFueSBsaWFiaWxpdHkgaW5jdXJyZWQgYnkgdGhlIEluaXRpYWwgRGV2ZWxvcGVyIG9yIHN1Y2ggQ29udHJpYnV0b3IgYXMgYSByZXN1bHQgb2Ygd2FycmFudHksIHN1cHBvcnQsIGluZGVtbml0eSBvciBsaWFiaWxpdHkgdGVybXMgWW91IG9mZmVyLgorCiszLjUuIERpc3RyaWJ1dGlvbiBvZiBFeGVjdXRhYmxlIFZlcnNpb25zLgorWW91IG1heSBkaXN0cmlidXRlIHRoZSBFeGVjdXRhYmxlIGZvcm0gb2YgdGhlIENvdmVyZWQgU29mdHdhcmUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSBvciB1bmRlciB0aGUgdGVybXMgb2YgYSBsaWNlbnNlIG9mIFlvdXIgY2hvaWNlLCB3aGljaCBtYXkgY29udGFpbiB0ZXJtcyBkaWZmZXJlbnQgZnJvbSB0aGlzIExpY2Vuc2UsIHByb3ZpZGVkIHRoYXQgWW91IGFyZSBpbiBjb21wbGlhbmNlIHdpdGggdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSBhbmQgdGhhdCB0aGUgbGljZW5zZSBmb3IgdGhlIEV4ZWN1dGFibGUgZm9ybSBkb2VzIG5vdCBhdHRlbXB0IHRvIGxpbWl0IG9yIGFsdGVyIHRoZSByZWNpcGllbnRzIHJpZ2h0cyBpbiB0aGUgU291cmNlIENvZGUgZm9ybSBmcm9tIHRoZSByaWdodHMgc2V0IGZvcnRoIGluIHRoaXMgTGljZW5zZS4gSWYgWW91IGRpc3RyaWJ1dGUgdGhlIENvdmVyZWQgU29mdHdhcmUgaW4gRXhlY3V0YWJsZSBmb3JtIHVuZGVyIGEgZGlmZmVyZW50IGxpY2Vuc2UsIFlvdSBtdXN0IG1ha2UgaXQgYWJzb2x1dGVseSBjbGVhciB0aGF0IGFueSB0ZXJtcyB3aGljaCBkaWZmZXIgZnJvbSB0aGlzIExpY2Vuc2UgYXJlIG9mZmVyZWQgYnkgWW91IGFsb25lLCBub3QgYnkgdGhlIEluaXRpYWwgRGV2ZWxvcGVyIG9yIENvbnRyaWJ1dG9yLiBZb3UgaGVyZWJ5IGFncmVlIHRvIGluZGVtbmlmeSB0aGUgSW5pdGlhbCBEZXZlbG9wZXIgYW5kIGV2ZXJ5IENvbnRyaWJ1dG9yIGZvciBhbnkgbGlhYmlsaXR5IGluY3VycmVkIGJ5IHRoZSBJbml0aWFsIERldmVsb3BlciBvciBzdWNoIENvbnRyaWJ1dG9yIGFzIGEgcmVzdWx0IG9mIGFueSBzdWNoIHRlcm1zIFlvdSBvZmZlci4KKworMy42LiBMYXJnZXIgV29ya3MuCitZb3UgbWF5IGNyZWF0ZSBhIExhcmdlciBXb3JrIGJ5IGNvbWJpbmluZyBDb3ZlcmVkIFNvZnR3YXJlIHdpdGggb3RoZXIgY29kZSBub3QgZ292ZXJuZWQgYnkgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSBhbmQgZGlzdHJpYnV0ZSB0aGUgTGFyZ2VyIFdvcmsgYXMgYSBzaW5nbGUgcHJvZHVjdC4gSW4gc3VjaCBhIGNhc2UsIFlvdSBtdXN0IG1ha2Ugc3VyZSB0aGUgcmVxdWlyZW1lbnRzIG9mIHRoaXMgTGljZW5zZSBhcmUgZnVsZmlsbGVkIGZvciB0aGUgQ292ZXJlZCBTb2Z0d2FyZS4KKworNC4gVmVyc2lvbnMgb2YgdGhlIExpY2Vuc2UuCisKKzQuMS4gTmV3IFZlcnNpb25zLgorU3VuIE1pY3Jvc3lzdGVtcywgSW5jLiBpcyB0aGUgaW5pdGlhbCBsaWNlbnNlIHN0ZXdhcmQgYW5kIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldyB2ZXJzaW9ucyBvZiB0aGlzIExpY2Vuc2UgZnJvbSB0aW1lIHRvIHRpbWUuIEVhY2ggdmVyc2lvbiB3aWxsIGJlIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuIEV4Y2VwdCBhcyBwcm92aWRlZCBpbiBTZWN0aW9uIDQuMywgbm8gb25lIG90aGVyIHRoYW4gdGhlIGxpY2Vuc2Ugc3Rld2FyZCBoYXMgdGhlIHJpZ2h0IHRvIG1vZGlmeSB0aGlzIExpY2Vuc2UuCisKKzQuMi4gRWZmZWN0IG9mIE5ldyBWZXJzaW9ucy4KKworWW91IG1heSBhbHdheXMgY29udGludWUgdG8gdXNlLCBkaXN0cmlidXRlIG9yIG90aGVyd2lzZSBtYWtlIHRoZSBDb3ZlcmVkIFNvZnR3YXJlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIHZlcnNpb24gb2YgdGhlIExpY2Vuc2UgdW5kZXIgd2hpY2ggWW91IG9yaWdpbmFsbHkgcmVjZWl2ZWQgdGhlIENvdmVyZWQgU29mdHdhcmUuIElmIHRoZSBJbml0aWFsIERldmVsb3BlciBpbmNsdWRlcyBhIG5vdGljZSBpbiB0aGUgT3JpZ2luYWwgU29mdHdhcmUgcHJvaGliaXRpbmcgaXQgZnJvbSBiZWluZyBkaXN0cmlidXRlZCBvciBvdGhlcndpc2UgbWFkZSBhdmFpbGFibGUgdW5kZXIgYW55IHN1YnNlcXVlbnQgdmVyc2lvbiBvZiB0aGUgTGljZW5zZSwgWW91IG11c3QgZGlzdHJpYnV0ZSBhbmQgbWFrZSB0aGUgQ292ZXJlZCBTb2Z0d2FyZSBhdmFpbGFibGUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSB2ZXJzaW9uIG9mIHRoZSBMaWNlbnNlIHVuZGVyIHdoaWNoIFlvdSBvcmlnaW5hbGx5IHJlY2VpdmVkIHRoZSBDb3ZlcmVkIFNvZnR3YXJlLiBPdGhlcndpc2UsIFlvdSBtYXkgYWxzbyBjaG9vc2UgdG8gdXNlLCBkaXN0cmlidXRlIG9yIG90aGVyd2lzZSBtYWtlIHRoZSBDb3ZlcmVkIFNvZnR3YXJlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgYW55IHN1YnNlcXVlbnQgdmVyc2lvbiBvZiB0aGUgTGljZW5zZSBwdWJsaXNoZWQgYnkgdGhlIGxpY2Vuc2Ugc3Rld2FyZC4KKzQuMy4gTW9kaWZpZWQgVmVyc2lvbnMuCisKK1doZW4gWW91IGFyZSBhbiBJbml0aWFsIERldmVsb3BlciBhbmQgWW91IHdhbnQgdG8gY3JlYXRlIGEgbmV3IGxpY2Vuc2UgZm9yIFlvdXIgT3JpZ2luYWwgU29mdHdhcmUsIFlvdSBtYXkgY3JlYXRlIGFuZCB1c2UgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoaXMgTGljZW5zZSBpZiBZb3U6IChhKeFyZW5hbWUgdGhlIGxpY2Vuc2UgYW5kIHJlbW92ZSBhbnkgcmVmZXJlbmNlcyB0byB0aGUgbmFtZSBvZiB0aGUgbGljZW5zZSBzdGV3YXJkIChleGNlcHQgdG8gbm90ZSB0aGF0IHRoZSBsaWNlbnNlIGRpZmZlcnMgZnJvbSB0aGlzIExpY2Vuc2UpOyBhbmQgKGIp4W90aGVyd2lzZSBtYWtlIGl0IGNsZWFyIHRoYXQgdGhlIGxpY2Vuc2UgY29udGFpbnMgdGVybXMgd2hpY2ggZGlmZmVyIGZyb20gdGhpcyBMaWNlbnNlLgorCis1LiBESVNDTEFJTUVSIE9GIFdBUlJBTlRZLgorCitDT1ZFUkVEIFNPRlRXQVJFIElTIFBST1ZJREVEIFVOREVSIFRISVMgTElDRU5TRSBPTiBBTiBBUyBJUyBCQVNJUywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1NFRCBPUiBJTVBMSUVELCBJTkNMVURJTkcsIFdJVEhPVVQgTElNSVRBVElPTiwgV0FSUkFOVElFUyBUSEFUIFRIRSBDT1ZFUkVEIFNPRlRXQVJFIElTIEZSRUUgT0YgREVGRUNUUywgTUVSQ0hBTlRBQkxFLCBGSVQgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIE9SIE5PTi1JTkZSSU5HSU5HLiBUSEUgRU5USVJFIFJJU0sgQVMgVE8gVEhFIFFVQUxJVFkgQU5EIFBFUkZPUk1BTkNFIE9GIFRIRSBDT1ZFUkVEIFNPRlRXQVJFIElTIFdJVEggWU9VLiBTSE9VTEQgQU5ZIENPVkVSRUQgU09GVFdBUkUgUFJPVkUgREVGRUNUSVZFIElOIEFOWSBSRVNQRUNULCBZT1UgKE5PVCBUSEUgSU5JVElBTCBERVZFTE9QRVIgT1IgQU5ZIE9USEVSIENPTlRSSUJVVE9SKSBBU1NVTUUgVEhFIENPU1QgT0YgQU5ZIE5FQ0VTU0FSWSBTRVJWSUNJTkcsIFJFUEFJUiBPUiBDT1JSRUNUSU9OLiBUSElTIERJU0NMQUlNRVIgT0YgV0FSUkFOVFkgQ09OU1RJVFVURVMgQU4gRVNTRU5USUFMIFBBUlQgT0YgVEhJUyBMSUNFTlNFLiBOTyBVU0UgT0YgQU5ZIENPVkVSRUQgU09GVFdBUkUgSVMgQVVUSE9SSVpFRCBIRVJFVU5ERVIgRVhDRVBUIFVOREVSIFRISVMgRElTQ0xBSU1FUi4KKworNi4gVEVSTUlOQVRJT04uCisKKzYuMS4gVGhpcyBMaWNlbnNlIGFuZCB0aGUgcmlnaHRzIGdyYW50ZWQgaGVyZXVuZGVyIHdpbGwgdGVybWluYXRlIGF1dG9tYXRpY2FsbHkgaWYgWW91IGZhaWwgdG8gY29tcGx5IHdpdGggdGVybXMgaGVyZWluIGFuZCBmYWlsIHRvIGN1cmUgc3VjaCBicmVhY2ggd2l0aGluIDMwIGRheXMgb2YgYmVjb21pbmcgYXdhcmUgb2YgdGhlIGJyZWFjaC4gUHJvdmlzaW9ucyB3aGljaCwgYnkgdGhlaXIgbmF0dXJlLCBtdXN0IHJlbWFpbiBpbiBlZmZlY3QgYmV5b25kIHRoZSB0ZXJtaW5hdGlvbiBvZiB0aGlzIExpY2Vuc2Ugc2hhbGwgc3Vydml2ZS4KKworNi4yLiBJZiBZb3UgYXNzZXJ0IGEgcGF0ZW50IGluZnJpbmdlbWVudCBjbGFpbSAoZXhjbHVkaW5nIGRlY2xhcmF0b3J5IGp1ZGdtZW50IGFjdGlvbnMpIGFnYWluc3QgSW5pdGlhbCBEZXZlbG9wZXIgb3IgYSBDb250cmlidXRvciAodGhlIEluaXRpYWwgRGV2ZWxvcGVyIG9yIENvbnRyaWJ1dG9yIGFnYWluc3Qgd2hvbSBZb3UgYXNzZXJ0IHN1Y2ggY2xhaW0gaXMgcmVmZXJyZWQgdG8gYXMgUGFydGljaXBhbnQpIGFsbGVnaW5nIHRoYXQgdGhlIFBhcnRpY2lwYW50IFNvZnR3YXJlIChtZWFuaW5nIHRoZSBDb250cmlidXRvciBWZXJzaW9uIHdoZXJlIHRoZSBQYXJ0aWNpcGFudCBpcyBhIENvbnRyaWJ1dG9yIG9yIHRoZSBPcmlnaW5hbCBTb2Z0d2FyZSB3aGVyZSB0aGUgUGFydGljaXBhbnQgaXMgdGhlIEluaXRpYWwgRGV2ZWxvcGVyKSBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGluZnJpbmdlcyBhbnkgcGF0ZW50LCB0aGVuIGFueSBhbmQgYWxsIHJpZ2h0cyBncmFudGVkIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgdG8gWW91IGJ5IHN1Y2ggUGFydGljaXBhbnQsIHRoZSBJbml0aWFsIERldmVsb3BlciAoaWYgdGhlIEluaXRpYWwgRGV2ZWxvcGVyIGlzIG5vdCB0aGUgUGFydGljaXBhbnQpIGFuZCBhbGwgQ29udHJpYnV0b3JzIHVuZGVyIFNlY3Rpb25z4TIuMSBhbmQvb3IgMi4yIG9mIHRoaXMgTGljZW5zZSBzaGFsbCwgdXBvbiA2MCBkYXlzIG5vdGljZSBmcm9tIFBhcnRpY2lwYW50IHRlcm1pbmF0ZSBwcm9zcGVjdGl2ZWx5IGFuZCBhdXRvbWF0aWNhbGx5IGF0IHRoZSBleHBpcmF0aW9uIG9mIHN1Y2ggNjAgZGF5IG5vdGljZSBwZXJpb2QsIHVubGVzcyBpZiB3aXRoaW4gc3VjaCA2MCBkYXkgcGVyaW9kIFlvdSB3aXRoZHJhdyBZb3VyIGNsYWltIHdpdGggcmVzcGVjdCB0byB0aGUgUGFydGljaXBhbnQgU29mdHdhcmUgYWdhaW5zdCBzdWNoIFBhcnRpY2lwYW50IGVpdGhlciB1bmlsYXRlcmFsbHkgb3IgcHVyc3VhbnQgdG8gYSB3cml0dGVuIGFncmVlbWVudCB3aXRoIFBhcnRpY2lwYW50LgorCis2LjMuIEluIHRoZSBldmVudCBvZiB0ZXJtaW5hdGlvbiB1bmRlciBTZWN0aW9uc+E2LjEgb3IgNi4yIGFib3ZlLCBhbGwgZW5kIHVzZXIgbGljZW5zZXMgdGhhdCBoYXZlIGJlZW4gdmFsaWRseSBncmFudGVkIGJ5IFlvdSBvciBhbnkgZGlzdHJpYnV0b3IgaGVyZXVuZGVyIHByaW9yIHRvIHRlcm1pbmF0aW9uIChleGNsdWRpbmcgbGljZW5zZXMgZ3JhbnRlZCB0byBZb3UgYnkgYW55IGRpc3RyaWJ1dG9yKSBzaGFsbCBzdXJ2aXZlIHRlcm1pbmF0aW9uLgorCis3LiBMSU1JVEFUSU9OIE9GIExJQUJJTElUWS4KKworVU5ERVIgTk8gQ0lSQ1VNU1RBTkNFUyBBTkQgVU5ERVIgTk8gTEVHQUwgVEhFT1JZLCBXSEVUSEVSIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFKSwgQ09OVFJBQ1QsIE9SIE9USEVSV0lTRSwgU0hBTEwgWU9VLCBUSEUgSU5JVElBTCBERVZFTE9QRVIsIEFOWSBPVEhFUiBDT05UUklCVVRPUiwgT1IgQU5ZIERJU1RSSUJVVE9SIE9GIENPVkVSRUQgU09GVFdBUkUsIE9SIEFOWSBTVVBQTElFUiBPRiBBTlkgT0YgU1VDSCBQQVJUSUVTLCBCRSBMSUFCTEUgVE8gQU5ZIFBFUlNPTiBGT1IgQU5ZIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT0YgQU5ZIENIQVJBQ1RFUiBJTkNMVURJTkcsIFdJVEhPVVQgTElNSVRBVElPTiwgREFNQUdFUyBGT1IgTE9TVCBQUk9GSVRTLCBMT1NTIE9GIEdPT0RXSUxMLCBXT1JLIFNUT1BQQUdFLCBDT01QVVRFUiBGQUlMVVJFIE9SIE1BTEZVTkNUSU9OLCBPUiBBTlkgQU5EIEFMTCBPVEhFUiBDT01NRVJDSUFMIERBTUFHRVMgT1IgTE9TU0VTLCBFVkVOIElGIFNVQ0ggUEFSVFkgU0hBTEwgSEFWRSBCRUVOIElORk9STUVEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuIFRISVMgTElNSVRBVElPTiBPRiBMSUFCSUxJVFkgU0hBTEwgTk9UIEFQUExZIFRPIExJQUJJTElUWSBGT1IgREVBVEggT1IgUEVSU09OQUwgSU5KVVJZIFJFU1VMVElORyBGUk9NIFNVQ0ggUEFSVFlTIE5FR0xJR0VOQ0UgVE8gVEhFIEVYVEVOVCBBUFBMSUNBQkxFIExBVyBQUk9ISUJJVFMgU1VDSCBMSU1JVEFUSU9OLiBTT01FIEpVUklTRElDVElPTlMgRE8gTk9UIEFMTE9XIFRIRSBFWENMVVNJT04gT1IgTElNSVRBVElPTiBPRiBJTkNJREVOVEFMIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUywgU08gVEhJUyBFWENMVVNJT04gQU5EIExJTUlUQVRJT04gTUFZIE5PVCBBUFBMWSBUTyBZT1UuCisKKzguIFUuUy4gR09WRVJOTUVOVCBFTkQgVVNFUlMuCisKK1RoZSBDb3ZlcmVkIFNvZnR3YXJlIGlzIGEgY29tbWVyY2lhbCBpdGVtLCBhcyB0aGF0IHRlcm0gaXMgZGVmaW5lZCBpbiA0OOFDLkYuUi7hMi4xMDEgKE9jdC4gMTk5NSksIGNvbnNpc3Rpbmcgb2YgY29tbWVyY2lhbCBjb21wdXRlciBzb2Z0d2FyZSAoYXMgdGhhdCB0ZXJtIGlzIGRlZmluZWQgYXQgNDggQy5GLlIuIOEyNTIuMjI3LTcwMTQoYSkoMSkpIGFuZCBjb21tZXJjaWFsIGNvbXB1dGVyIHNvZnR3YXJlIGRvY3VtZW50YXRpb24gYXMgc3VjaCB0ZXJtcyBhcmUgdXNlZCBpbiA0OOFDLkYuUi7hMTIuMjEyIChTZXB0LiAxOTk1KS4gQ29uc2lzdGVudCB3aXRoIDQ4IEMuRi5SLiAxMi4yMTIgYW5kIDQ4IEMuRi5SLiAyMjcuNzIwMi0xIHRocm91Z2ggMjI3LjcyMDItNCAoSnVuZSAxOTk1KSwgYWxsIFUuUy4gR292ZXJubWVudCBFbmQgVXNlcnMgYWNxdWlyZSBDb3ZlcmVkIFNvZnR3YXJlIHdpdGggb25seSB0aG9zZSByaWdodHMgc2V0IGZvcnRoIGhlcmVpbi4gVGhpcyBVLlMuIEdvdmVybm1lbnQgUmlnaHRzIGNsYXVzZSBpcyBpbiBsaWV1IG9mLCBhbmQgc3VwZXJzZWRlcywgYW55IG90aGVyIEZBUiwgREZBUiwgb3Igb3RoZXIgY2xhdXNlIG9yIHByb3Zpc2lvbiB0aGF0IGFkZHJlc3NlcyBHb3Zlcm5tZW50IHJpZ2h0cyBpbiBjb21wdXRlciBzb2Z0d2FyZSB1bmRlciB0aGlzIExpY2Vuc2UuCisKKzkuIE1JU0NFTExBTkVPVVMuCisKK1RoaXMgTGljZW5zZSByZXByZXNlbnRzIHRoZSBjb21wbGV0ZSBhZ3JlZW1lbnQgY29uY2VybmluZyBzdWJqZWN0IG1hdHRlciBoZXJlb2YuIElmIGFueSBwcm92aXNpb24gb2YgdGhpcyBMaWNlbnNlIGlzIGhlbGQgdG8gYmUgdW5lbmZvcmNlYWJsZSwgc3VjaCBwcm92aXNpb24gc2hhbGwgYmUgcmVmb3JtZWQgb25seSB0byB0aGUgZXh0ZW50IG5lY2Vzc2FyeSB0byBtYWtlIGl0IGVuZm9yY2VhYmxlLiBUaGlzIExpY2Vuc2Ugc2hhbGwgYmUgZ292ZXJuZWQgYnkgdGhlIGxhdyBvZiB0aGUganVyaXNkaWN0aW9uIHNwZWNpZmllZCBpbiBhIG5vdGljZSBjb250YWluZWQgd2l0aGluIHRoZSBPcmlnaW5hbCBTb2Z0d2FyZSAoZXhjZXB0IHRvIHRoZSBleHRlbnQgYXBwbGljYWJsZSBsYXcsIGlmIGFueSwgcHJvdmlkZXMgb3RoZXJ3aXNlKSwgZXhjbHVkaW5nIHN1Y2gganVyaXNkaWN0aW9ucyBjb25mbGljdC1vZi1sYXcgcHJvdmlzaW9ucy4gQW55IGxpdGlnYXRpb24gcmVsYXRpbmcgdG8gdGhpcyBMaWNlbnNlIHNoYWxsIGJlIHN1YmplY3QgdG8gdGhlIGp1cmlzZGljdGlvbiBvZiB0aGUgY291cnRzIGxvY2F0ZWQgaW4gdGhlIGp1cmlzZGljdGlvbiBhbmQgdmVudWUgc3BlY2lmaWVkIGluIGEgbm90aWNlIGNvbnRhaW5lZCB3aXRoaW4gdGhlIE9yaWdpbmFsIFNvZnR3YXJlLCB3aXRoIHRoZSBsb3NpbmcgcGFydHkgcmVzcG9uc2libGUgZm9yIGNvc3RzLCBpbmNsdWRpbmcsIHdpdGhvdXQgbGltaXRhdGlvbiwgY291cnQgY29zdHMgYW5kIHJlYXNvbmFibGUgYXR0b3JuZXlzIGZlZXMgYW5kIGV4cGVuc2VzLiBUaGUgYXBwbGljYXRpb24gb2YgdGhlIFVuaXRlZCBOYXRpb25zIENvbnZlbnRpb24gb24gQ29udHJhY3RzIGZvciB0aGUgSW50ZXJuYXRpb25hbCBTYWxlIG9mIEdvb2RzIGlzIGV4cHJlc3NseSBleGNsdWRlZC4gQW55IGxhdyBvciByZWd1bGF0aW9uIHdoaWNoIHByb3ZpZGVzIHRoYXQgdGhlIGxhbmd1YWdlIG9mIGEgY29udHJhY3Qgc2hhbGwgYmUgY29uc3RydWVkIGFnYWluc3QgdGhlIGRyYWZ0ZXIgc2hhbGwgbm90IGFwcGx5IHRvIHRoaXMgTGljZW5zZS4gWW91IGFncmVlIHRoYXQgWW91IGFsb25lIGFyZSByZXNwb25zaWJsZSBmb3IgY29tcGxpYW5jZSB3aXRoIHRoZSBVbml0ZWQgU3RhdGVzIGV4cG9ydCBhZG1pbmlzdHJhdGlvbiByZWd1bGF0aW9ucyAoYW5kIHRoZSBleHBvcnQgY29udHJvbCBsYXdzIGFuZCByZWd1bGF0aW9uIG9mIGFueSBvdGhlciBjb3VudHJpZXMpIHdoZW4gWW91IHVzZSwgZGlzdHJpYnV0ZSBvciBvdGhlcndpc2UgbWFrZSBhdmFpbGFibGUgYW55IENvdmVyZWQgU29mdHdhcmUuCisKKzEwLiBSRVNQT05TSUJJTElUWSBGT1IgQ0xBSU1TLgorCitBcyBiZXR3ZWVuIEluaXRpYWwgRGV2ZWxvcGVyIGFuZCB0aGUgQ29udHJpYnV0b3JzLCBlYWNoIHBhcnR5IGlzIHJlc3BvbnNpYmxlIGZvciBjbGFpbXMgYW5kIGRhbWFnZXMgYXJpc2luZywgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSwgb3V0IG9mIGl0cyB1dGlsaXphdGlvbiBvZiByaWdodHMgdW5kZXIgdGhpcyBMaWNlbnNlIGFuZCBZb3UgYWdyZWUgdG8gd29yayB3aXRoIEluaXRpYWwgRGV2ZWxvcGVyIGFuZCBDb250cmlidXRvcnMgdG8gZGlzdHJpYnV0ZSBzdWNoIHJlc3BvbnNpYmlsaXR5IG9uIGFuIGVxdWl0YWJsZSBiYXNpcy4gTm90aGluZyBoZXJlaW4gaXMgaW50ZW5kZWQgb3Igc2hhbGwgYmUgZGVlbWVkIHRvIGNvbnN0aXR1dGUgYW55IGFkbWlzc2lvbiBvZiBsaWFiaWxpdHkuCisKK05PVElDRSBQVVJTVUFOVCBUTyBTRUNUSU9OIDkgT0YgVEhFIENPTU1PTiBERVZFTE9QTUVOVCBBTkQgRElTVFJJQlVUSU9OIExJQ0VOU0UgKENEREwpCitUaGUgR2xhc3NGaXNoIGNvZGUgcmVsZWFzZWQgdW5kZXIgdGhlIENEREwgc2hhbGwgYmUgZ292ZXJuZWQgYnkgdGhlIGxhd3Mgb2YgdGhlIFN0YXRlIG9mIENhbGlmb3JuaWEgKGV4Y2x1ZGluZyBjb25mbGljdC1vZi1sYXcgcHJvdmlzaW9ucykuIEFueSBsaXRpZ2F0aW9uIHJlbGF0aW5nIHRvIHRoaXMgTGljZW5zZSBzaGFsbCBiZSBzdWJqZWN0IHRvIHRoZSBqdXJpc2RpY3Rpb24gb2YgdGhlIEZlZGVyYWwgQ291cnRzIG9mIHRoZSBOb3J0aGVybiBEaXN0cmljdCBvZiBDYWxpZm9ybmlhIGFuZCB0aGUgc3RhdGUgY291cnRzIG9mIHRoZSBTdGF0ZSBvZiBDYWxpZm9ybmlhLCB3aXRoIHZlbnVlIGx5aW5nIGluIFNhbnRhIENsYXJhIENvdW50eSwgQ2FsaWZvcm5pYS4gCisgICAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRm9yIFNMRjRKOgorCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9zY3JlZW5zaGFyaW5nL2pjbC1vdmVyLXNsZjRqLTEuNi40Lmphcgord2ViYXBwcy9vcGVubWVldGluZ3Mvc2NyZWVuc2hhcmluZy9zbGY0ai1hcGktMS42LjQuamFyCitsaWIvamNsLW92ZXItc2xmNGotMS42LjQuamFyCitsaWIvanVsLXRvLXNsZjRqLTEuNi40LmphcgorbGliL2xvZzRqLW92ZXItc2xmNGotMS42LjQuamFyCitsaWIvc2xmNGotYXBpLTEuNi40LmphcgorbGliL3N5c291dC1vdmVyLXNsZjRqLTEuMC4yLmphcgorCitDb3B5cmlnaHQgKGMpIDIwMDQtMjAwOCBRT1MuY2gKKyBBbGwgcmlnaHRzIHJlc2VydmVkLgorCisgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSAgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZworIGEgIGNvcHkgIG9mIHRoaXMgIHNvZnR3YXJlICBhbmQgIGFzc29jaWF0ZWQgIGRvY3VtZW50YXRpb24gZmlsZXMgICh0aGUKKyAiU29mdHdhcmUiKSwgdG8gIGRlYWwgaW4gIHRoZSBTb2Z0d2FyZSB3aXRob3V0ICByZXN0cmljdGlvbiwgaW5jbHVkaW5nCisgd2l0aG91dCBsaW1pdGF0aW9uICB0aGUgcmlnaHRzIHRvICB1c2UsIGNvcHksIG1vZGlmeSwgIG1lcmdlLCBwdWJsaXNoLAorIGRpc3RyaWJ1dGUsICBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCAgY29waWVzIG9mICB0aGUgU29mdHdhcmUsICBhbmQgdG8KKyBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSAgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCisgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorCisgVGhlICBhYm92ZSAgY29weXJpZ2h0ICBub3RpY2UgIGFuZCAgdGhpcyBwZXJtaXNzaW9uICBub3RpY2UgIHNoYWxsICBiZQorIGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorCisgVEhFICBTT0ZUV0FSRSBJUyAgUFJPVklERUQgICJBUyAgSVMiLCBXSVRIT1VUICBXQVJSQU5UWSAgT0YgQU5ZICBLSU5ELAorIEVYUFJFU1MgT1IgIElNUExJRUQsIElOQ0xVRElORyAgQlVUIE5PVCBMSU1JVEVEICBUTyBUSEUgIFdBUlJBTlRJRVMgT0YKKyBNRVJDSEFOVEFCSUxJVFksICAgIEZJVE5FU1MgICAgRk9SICAgIEEgICBQQVJUSUNVTEFSICAgIFBVUlBPU0UgICAgQU5ECisgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRQorIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04KKyBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsICBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OCisgV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuCisgCisgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIAorIEZvciBiYWNrcG9ydC11dGlsLWNvbmN1cnJlbnQtamFyLTMuMS5qYXIKKyAKKyBUaGlzIHNvZnR3YXJlIGlzIHJlbGVhc2VkIHRvIHRoZSBwdWJsaWMgZG9tYWluLCBpbiB0aGUgc3Bpcml0IG9mIHRoZSBvcmlnaW5hbCBjb2RlIHdyaXR0ZW4gYnkgRG91ZyBMZWEuIAorIFRoZSBjb2RlIGNhbiBiZSB1c2VkIGZvciBhbnkgcHVycG9zZSwgbW9kaWZpZWQsIGFuZCByZWRpc3RyaWJ1dGVkIHdpdGhvdXQgYWNrbm93bGVkZ21lbnQuIAorIE5vIHdhcnJhbnR5IGlzIHByb3ZpZGVkLCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAKKyAgCisgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIAorIEZvciBKQVhCOgorIAoramF4Yi1hcGktamFyLTIuMi40LmphcgoramF4Yi1pbXBsLWphci0yLjIuNC5qYXIKK2pheGIteGpjLWphci0yLjIuNC5qYXIKK2pheHdzLXRvb2xzLWphci0yLjIuNS5qYXIKKyAKKyBDT01NT04gREVWRUxPUE1FTlQgQU5EIERJU1RSSUJVVElPTiBMSUNFTlNFIChDRERMKVZlcnNpb24gMS4xCisKKzEuIERlZmluaXRpb25zLgorCisgICAgIDEuMS4gIkNvbnRyaWJ1dG9yIiBtZWFucyBlYWNoIGluZGl2aWR1YWwgb3IgZW50aXR5IHRoYXQgY3JlYXRlcyBvciBjb250cmlidXRlcyB0byB0aGUgY3JlYXRpb24gb2YgTW9kaWZpY2F0aW9ucy4KKworICAgICAxLjIuICJDb250cmlidXRvciBWZXJzaW9uIiBtZWFucyB0aGUgY29tYmluYXRpb24gb2YgdGhlIE9yaWdpbmFsIFNvZnR3YXJlLCBwcmlvciBNb2RpZmljYXRpb25zIHVzZWQgYnkgYSBDb250cmlidXRvciAoaWYgYW55KSwgYW5kIHRoZSBNb2RpZmljYXRpb25zIG1hZGUgYnkgdGhhdCBwYXJ0aWN1bGFyIENvbnRyaWJ1dG9yLgorCisgICAgIDEuMy4gIkNvdmVyZWQgU29mdHdhcmUiIG1lYW5zIChhKSB0aGUgT3JpZ2luYWwgU29mdHdhcmUsIG9yIChiKSBNb2RpZmljYXRpb25zLCBvciAoYykgdGhlIGNvbWJpbmF0aW9uIG9mIGZpbGVzIGNvbnRhaW5pbmcgT3JpZ2luYWwgU29mdHdhcmUgd2l0aCBmaWxlcyBjb250YWluaW5nIE1vZGlmaWNhdGlvbnMsIGluIGVhY2ggY2FzZSBpbmNsdWRpbmcgcG9ydGlvbnMgdGhlcmVvZi4KKworICAgICAxLjQuICJFeGVjdXRhYmxlIiBtZWFucyB0aGUgQ292ZXJlZCBTb2Z0d2FyZSBpbiBhbnkgZm9ybSBvdGhlciB0aGFuIFNvdXJjZSBDb2RlLgorCisgICAgIDEuNS4gIkluaXRpYWwgRGV2ZWxvcGVyIiBtZWFucyB0aGUgaW5kaXZpZHVhbCBvciBlbnRpdHkgdGhhdCBmaXJzdCBtYWtlcyBPcmlnaW5hbCBTb2Z0d2FyZSBhdmFpbGFibGUgdW5kZXIgdGhpcyBMaWNlbnNlLgorCisgICAgIDEuNi4gIkxhcmdlciBXb3JrIiBtZWFucyBhIHdvcmsgd2hpY2ggY29tYmluZXMgQ292ZXJlZCBTb2Z0d2FyZSBvciBwb3J0aW9ucyB0aGVyZW9mIHdpdGggY29kZSBub3QgZ292ZXJuZWQgYnkgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZS4KKworICAgICAxLjcuICJMaWNlbnNlIiBtZWFucyB0aGlzIGRvY3VtZW50LgorCisgICAgIDEuOC4gIkxpY2Vuc2FibGUiIG1lYW5zIGhhdmluZyB0aGUgcmlnaHQgdG8gZ3JhbnQsIHRvIHRoZSBtYXhpbXVtIGV4dGVudCBwb3NzaWJsZSwgd2hldGhlciBhdCB0aGUgdGltZSBvZiB0aGUgaW5pdGlhbCBncmFudCBvciBzdWJzZXF1ZW50bHkgYWNxdWlyZWQsIGFueSBhbmQgYWxsIG9mIHRoZSByaWdodHMgY29udmV5ZWQgaGVyZWluLgorCisgICAgIDEuOS4gIk1vZGlmaWNhdGlvbnMiIG1lYW5zIHRoZSBTb3VyY2UgQ29kZSBhbmQgRXhlY3V0YWJsZSBmb3JtIG9mIGFueSBvZiB0aGUgZm9sbG93aW5nOgorCisgICAgIEEuIEFueSBmaWxlIHRoYXQgcmVzdWx0cyBmcm9tIGFuIGFkZGl0aW9uIHRvLCBkZWxldGlvbiBmcm9tIG9yIG1vZGlmaWNhdGlvbiBvZiB0aGUgY29udGVudHMgb2YgYSBmaWxlIGNvbnRhaW5pbmcgT3JpZ2luYWwgU29mdHdhcmUgb3IgcHJldmlvdXMgTW9kaWZpY2F0aW9uczsKKworICAgICBCLiBBbnkgbmV3IGZpbGUgdGhhdCBjb250YWlucyBhbnkgcGFydCBvZiB0aGUgT3JpZ2luYWwgU29mdHdhcmUgb3IgcHJldmlvdXMgTW9kaWZpY2F0aW9uOyBvcgorCisgICAgIEMuIEFueSBuZXcgZmlsZSB0aGF0IGlzIGNvbnRyaWJ1dGVkIG9yIG90aGVyd2lzZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLgorCisgICAgIDEuMTAuICJPcmlnaW5hbCBTb2Z0d2FyZSIgbWVhbnMgdGhlIFNvdXJjZSBDb2RlIGFuZCBFeGVjdXRhYmxlIGZvcm0gb2YgY29tcHV0ZXIgc29mdHdhcmUgY29kZSB0aGF0IGlzIG9yaWdpbmFsbHkgcmVsZWFzZWQgdW5kZXIgdGhpcyBMaWNlbnNlLgorCisgICAgIDEuMTEuICJQYXRlbnQgQ2xhaW1zIiBtZWFucyBhbnkgcGF0ZW50IGNsYWltKHMpLCBub3cgb3duZWQgb3IgaGVyZWFmdGVyIGFjcXVpcmVkLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uLCBtZXRob2QsIHByb2Nlc3MsIGFuZCBhcHBhcmF0dXMgY2xhaW1zLCBpbiBhbnkgcGF0ZW50IExpY2Vuc2FibGUgYnkgZ3JhbnRvci4KKworICAgICAxLjEyLiAiU291cmNlIENvZGUiIG1lYW5zIChhKSB0aGUgY29tbW9uIGZvcm0gb2YgY29tcHV0ZXIgc29mdHdhcmUgY29kZSBpbiB3aGljaCBtb2RpZmljYXRpb25zIGFyZSBtYWRlIGFuZCAoYikgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGluY2x1ZGVkIGluIG9yIHdpdGggc3VjaCBjb2RlLgorCisgICAgIDEuMTMuICJZb3UiIChvciAiWW91ciIpIG1lYW5zIGFuIGluZGl2aWR1YWwgb3IgYSBsZWdhbCBlbnRpdHkgZXhlcmNpc2luZyByaWdodHMgdW5kZXIsIGFuZCBjb21wbHlpbmcgd2l0aCBhbGwgb2YgdGhlIHRlcm1zIG9mLCB0aGlzIExpY2Vuc2UuIEZvciBsZWdhbCBlbnRpdGllcywgIllvdSIgaW5jbHVkZXMgYW55IGVudGl0eSB3aGljaCBjb250cm9scywgaXMgY29udHJvbGxlZCBieSwgb3IgaXMgdW5kZXIgY29tbW9uIGNvbnRyb2wgd2l0aCBZb3UuIEZvciBwdXJwb3NlcyBvZiB0aGlzIGRlZmluaXRpb24sICJjb250cm9sIiBtZWFucyAoYSkgdGhlIHBvd2VyLCBkaXJlY3Qgb3IgaW5kaXJlY3QsIHRvIGNhdXNlIHRoZSBkaXJlY3Rpb24gb3IgbWFuYWdlbWVudCBvZiBzdWNoIGVudGl0eSwgd2hldGhlciBieSBjb250cmFjdCBvciBvdGhlcndpc2UsIG9yIChiKSBvd25lcnNoaXAgb2YgbW9yZSB0aGFuIGZpZnR5IHBlcmNlbnQgKDUwJSkgb2YgdGhlIG91dHN0YW5kaW5nIHNoYXJlcyBvciBiZW5lZmljaWFsIG93bmVyc2hpcCBvZiBzdWNoIGVudGl0eS4KKworMi4gTGljZW5zZSBHcmFudHMuCisKKyAgICAgMi4xLiBUaGUgSW5pdGlhbCBEZXZlbG9wZXIgR3JhbnQuCisKKyAgICAgQ29uZGl0aW9uZWQgdXBvbiBZb3VyIGNvbXBsaWFuY2Ugd2l0aCBTZWN0aW9uIDMuMSBiZWxvdyBhbmQgc3ViamVjdCB0byB0aGlyZCBwYXJ0eSBpbnRlbGxlY3R1YWwgcHJvcGVydHkgY2xhaW1zLCB0aGUgSW5pdGlhbCBEZXZlbG9wZXIgaGVyZWJ5IGdyYW50cyBZb3UgYSB3b3JsZC13aWRlLCByb3lhbHR5LWZyZWUsIG5vbi1leGNsdXNpdmUgbGljZW5zZToKKworICAgICAoYSkgdW5kZXIgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyAob3RoZXIgdGhhbiBwYXRlbnQgb3IgdHJhZGVtYXJrKSBMaWNlbnNhYmxlIGJ5IEluaXRpYWwgRGV2ZWxvcGVyLCB0byB1c2UsIHJlcHJvZHVjZSwgbW9kaWZ5LCBkaXNwbGF5LCBwZXJmb3JtLCBzdWJsaWNlbnNlIGFuZCBkaXN0cmlidXRlIHRoZSBPcmlnaW5hbCBTb2Z0d2FyZSAob3IgcG9ydGlvbnMgdGhlcmVvZiksIHdpdGggb3Igd2l0aG91dCBNb2RpZmljYXRpb25zLCBhbmQvb3IgYXMgcGFydCBvZiBhIExhcmdlciBXb3JrOyBhbmQKKworICAgICAoYikgdW5kZXIgUGF0ZW50IENsYWltcyBpbmZyaW5nZWQgYnkgdGhlIG1ha2luZywgdXNpbmcgb3Igc2VsbGluZyBvZiBPcmlnaW5hbCBTb2Z0d2FyZSwgdG8gbWFrZSwgaGF2ZSBtYWRlLCB1c2UsIHByYWN0aWNlLCBzZWxsLCBhbmQgb2ZmZXIgZm9yIHNhbGUsIGFuZC9vciBvdGhlcndpc2UgZGlzcG9zZSBvZiB0aGUgT3JpZ2luYWwgU29mdHdhcmUgKG9yIHBvcnRpb25zIHRoZXJlb2YpLgorCisgICAgIChjKSBUaGUgbGljZW5zZXMgZ3JhbnRlZCBpbiBTZWN0aW9ucyAyLjEoYSkgYW5kIChiKSBhcmUgZWZmZWN0aXZlIG9uIHRoZSBkYXRlIEluaXRpYWwgRGV2ZWxvcGVyIGZpcnN0IGRpc3RyaWJ1dGVzIG9yIG90aGVyd2lzZSBtYWtlcyB0aGUgT3JpZ2luYWwgU29mdHdhcmUgYXZhaWxhYmxlIHRvIGEgdGhpcmQgcGFydHkgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZS4KKworICAgICAoZCkgTm90d2l0aHN0YW5kaW5nIFNlY3Rpb24gMi4xKGIpIGFib3ZlLCBubyBwYXRlbnQgbGljZW5zZSBpcyBncmFudGVkOiAoMSkgZm9yIGNvZGUgdGhhdCBZb3UgZGVsZXRlIGZyb20gdGhlIE9yaWdpbmFsIFNvZnR3YXJlLCBvciAoMikgZm9yIGluZnJpbmdlbWVudHMgY2F1c2VkIGJ5OiAoaSkgdGhlIG1vZGlmaWNhdGlvbiBvZiB0aGUgT3JpZ2luYWwgU29mdHdhcmUsIG9yIChpaSkgdGhlIGNvbWJpbmF0aW9uIG9mIHRoZSBPcmlnaW5hbCBTb2Z0d2FyZSB3aXRoIG90aGVyIHNvZnR3YXJlIG9yIGRldmljZXMuCisKKyAgICAgMi4yLiBDb250cmlidXRvciBHcmFudC4KKworICAgICBDb25kaXRpb25lZCB1cG9uIFlvdXIgY29tcGxpYW5jZSB3aXRoIFNlY3Rpb24gMy4xIGJlbG93IGFuZCBzdWJqZWN0IHRvIHRoaXJkIHBhcnR5IGludGVsbGVjdHVhbCBwcm9wZXJ0eSBjbGFpbXMsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyBZb3UgYSB3b3JsZC13aWRlLCByb3lhbHR5LWZyZWUsIG5vbi1leGNsdXNpdmUgbGljZW5zZToKKworICAgICAoYSkgdW5kZXIgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyAob3RoZXIgdGhhbiBwYXRlbnQgb3IgdHJhZGVtYXJrKSBMaWNlbnNhYmxlIGJ5IENvbnRyaWJ1dG9yIHRvIHVzZSwgcmVwcm9kdWNlLCBtb2RpZnksIGRpc3BsYXksIHBlcmZvcm0sIHN1YmxpY2Vuc2UgYW5kIGRpc3RyaWJ1dGUgdGhlIE1vZGlmaWNhdGlvbnMgY3JlYXRlZCBieSBzdWNoIENvbnRyaWJ1dG9yIChvciBwb3J0aW9ucyB0aGVyZW9mKSwgZWl0aGVyIG9uIGFuIHVubW9kaWZpZWQgYmFzaXMsIHdpdGggb3RoZXIgTW9kaWZpY2F0aW9ucywgYXMgQ292ZXJlZCBTb2Z0d2FyZSBhbmQvb3IgYXMgcGFydCBvZiBhIExhcmdlciBXb3JrOyBhbmQKKworICAgICAoYikgdW5kZXIgUGF0ZW50IENsYWltcyBpbmZyaW5nZWQgYnkgdGhlIG1ha2luZywgdXNpbmcsIG9yIHNlbGxpbmcgb2YgTW9kaWZpY2F0aW9ucyBtYWRlIGJ5IHRoYXQgQ29udHJpYnV0b3IgZWl0aGVyIGFsb25lIGFuZC9vciBpbiBjb21iaW5hdGlvbiB3aXRoIGl0cyBDb250cmlidXRvciBWZXJzaW9uIChvciBwb3J0aW9ucyBvZiBzdWNoIGNvbWJpbmF0aW9uKSwgdG8gbWFrZSwgdXNlLCBzZWxsLCBvZmZlciBmb3Igc2FsZSwgaGF2ZSBtYWRlLCBhbmQvb3Igb3RoZXJ3aXNlIGRpc3Bvc2Ugb2Y6ICgxKSBNb2RpZmljYXRpb25zIG1hZGUgYnkgdGhhdCBDb250cmlidXRvciAob3IgcG9ydGlvbnMgdGhlcmVvZik7IGFuZCAoMikgdGhlIGNvbWJpbmF0aW9uIG9mIE1vZGlmaWNhdGlvbnMgbWFkZSBieSB0aGF0IENvbnRyaWJ1dG9yIHdpdGggaXRzIENvbnRyaWJ1dG9yIFZlcnNpb24gKG9yIHBvcnRpb25zIG9mIHN1Y2ggY29tYmluYXRpb24pLgorCisgICAgIChjKSBUaGUgbGljZW5zZXMgZ3JhbnRlZCBpbiBTZWN0aW9ucyAyLjIoYSkgYW5kIDIuMihiKSBhcmUgZWZmZWN0aXZlIG9uIHRoZSBkYXRlIENvbnRyaWJ1dG9yIGZpcnN0IGRpc3RyaWJ1dGVzIG9yIG90aGVyd2lzZSBtYWtlcyB0aGUgTW9kaWZpY2F0aW9ucyBhdmFpbGFibGUgdG8gYSB0aGlyZCBwYXJ0eS4KKworICAgICAoZCkgTm90d2l0aHN0YW5kaW5nIFNlY3Rpb24gMi4yKGIpIGFib3ZlLCBubyBwYXRlbnQgbGljZW5zZSBpcyBncmFudGVkOiAoMSkgZm9yIGFueSBjb2RlIHRoYXQgQ29udHJpYnV0b3IgaGFzIGRlbGV0ZWQgZnJvbSB0aGUgQ29udHJpYnV0b3IgVmVyc2lvbjsgKDIpIGZvciBpbmZyaW5nZW1lbnRzIGNhdXNlZCBieTogKGkpIHRoaXJkIHBhcnR5IG1vZGlmaWNhdGlvbnMgb2YgQ29udHJpYnV0b3IgVmVyc2lvbiwgb3IgKGlpKSB0aGUgY29tYmluYXRpb24gb2YgTW9kaWZpY2F0aW9ucyBtYWRlIGJ5IHRoYXQgQ29udHJpYnV0b3Igd2l0aCBvdGhlciBzb2Z0d2FyZSAoZXhjZXB0IGFzIHBhcnQgb2YgdGhlIENvbnRyaWJ1dG9yIFZlcnNpb24pIG9yIG90aGVyIGRldmljZXM7IG9yICgzKSB1bmRlciBQYXRlbnQgQ2xhaW1zIGluZnJpbmdlZCBieSBDb3ZlcmVkIFNvZnR3YXJlIGluIHRoZSBhYnNlbmNlIG9mIE1vZGlmaWNhdGlvbnMgbWFkZSBieSB0aGF0IENvbnRyaWJ1dG9yLgorCiszLiBEaXN0cmlidXRpb24gT2JsaWdhdGlvbnMuCisKKyAgICAgMy4xLiBBdmFpbGFiaWxpdHkgb2YgU291cmNlIENvZGUuCisKKyAgICAgQW55IENvdmVyZWQgU29mdHdhcmUgdGhhdCBZb3UgZGlzdHJpYnV0ZSBvciBvdGhlcndpc2UgbWFrZSBhdmFpbGFibGUgaW4gRXhlY3V0YWJsZSBmb3JtIG11c3QgYWxzbyBiZSBtYWRlIGF2YWlsYWJsZSBpbiBTb3VyY2UgQ29kZSBmb3JtIGFuZCB0aGF0IFNvdXJjZSBDb2RlIGZvcm0gbXVzdCBiZSBkaXN0cmlidXRlZCBvbmx5IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UuIFlvdSBtdXN0IGluY2x1ZGUgYSBjb3B5IG9mIHRoaXMgTGljZW5zZSB3aXRoIGV2ZXJ5IGNvcHkgb2YgdGhlIFNvdXJjZSBDb2RlIGZvcm0gb2YgdGhlIENvdmVyZWQgU29mdHdhcmUgWW91IGRpc3RyaWJ1dGUgb3Igb3RoZXJ3aXNlIG1ha2UgYXZhaWxhYmxlLiBZb3UgbXVzdCBpbmZvcm0gcmVjaXBpZW50cyBvZiBhbnkgc3VjaCBDb3ZlcmVkIFNvZnR3YXJlIGluIEV4ZWN1dGFibGUgZm9ybSBhcyB0byBob3cgdGhleSBjYW4gb2J0YWluIHN1Y2ggQ292ZXJlZCBTb2Z0d2FyZSBpbiBTb3VyY2UgQ29kZSBmb3JtIGluIGEgcmVhc29uYWJsZSBtYW5uZXIgb24gb3IgdGhyb3VnaCBhIG1lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBleGNoYW5nZS4KKworICAgICAzLjIuIE1vZGlmaWNhdGlvbnMuCisKKyAgICAgVGhlIE1vZGlmaWNhdGlvbnMgdGhhdCBZb3UgY3JlYXRlIG9yIHRvIHdoaWNoIFlvdSBjb250cmlidXRlIGFyZSBnb3Zlcm5lZCBieSB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLiBZb3UgcmVwcmVzZW50IHRoYXQgWW91IGJlbGlldmUgWW91ciBNb2RpZmljYXRpb25zIGFyZSBZb3VyIG9yaWdpbmFsIGNyZWF0aW9uKHMpIGFuZC9vciBZb3UgaGF2ZSBzdWZmaWNpZW50IHJpZ2h0cyB0byBncmFudCB0aGUgcmlnaHRzIGNvbnZleWVkIGJ5IHRoaXMgTGljZW5zZS4KKworICAgICAzLjMuIFJlcXVpcmVkIE5vdGljZXMuCisKKyAgICAgWW91IG11c3QgaW5jbHVkZSBhIG5vdGljZSBpbiBlYWNoIG9mIFlvdXIgTW9kaWZpY2F0aW9ucyB0aGF0IGlkZW50aWZpZXMgWW91IGFzIHRoZSBDb250cmlidXRvciBvZiB0aGUgTW9kaWZpY2F0aW9uLiBZb3UgbWF5IG5vdCByZW1vdmUgb3IgYWx0ZXIgYW55IGNvcHlyaWdodCwgcGF0ZW50IG9yIHRyYWRlbWFyayBub3RpY2VzIGNvbnRhaW5lZCB3aXRoaW4gdGhlIENvdmVyZWQgU29mdHdhcmUsIG9yIGFueSBub3RpY2VzIG9mIGxpY2Vuc2luZyBvciBhbnkgZGVzY3JpcHRpdmUgdGV4dCBnaXZpbmcgYXR0cmlidXRpb24gdG8gYW55IENvbnRyaWJ1dG9yIG9yIHRoZSBJbml0aWFsIERldmVsb3Blci4KKworICAgICAzLjQuIEFwcGxpY2F0aW9uIG9mIEFkZGl0aW9uYWwgVGVybXMuCisKKyAgICAgWW91IG1heSBub3Qgb2ZmZXIgb3IgaW1wb3NlIGFueSB0ZXJtcyBvbiBhbnkgQ292ZXJlZCBTb2Z0d2FyZSBpbiBTb3VyY2UgQ29kZSBmb3JtIHRoYXQgYWx0ZXJzIG9yIHJlc3RyaWN0cyB0aGUgYXBwbGljYWJsZSB2ZXJzaW9uIG9mIHRoaXMgTGljZW5zZSBvciB0aGUgcmVjaXBpZW50cycgcmlnaHRzIGhlcmV1bmRlci4gWW91IG1heSBjaG9vc2UgdG8gb2ZmZXIsIGFuZCB0byBjaGFyZ2UgYSBmZWUgZm9yLCB3YXJyYW50eSwgc3VwcG9ydCwgaW5kZW1uaXR5IG9yIGxpYWJpbGl0eSBvYmxpZ2F0aW9ucyB0byBvbmUgb3IgbW9yZSByZWNpcGllbnRzIG9mIENvdmVyZWQgU29mdHdhcmUuIEhvd2V2ZXIsIHlvdSBtYXkgZG8gc28gb25seSBvbiBZb3VyIG93biBiZWhhbGYsIGFuZCBub3Qgb24gYmVoYWxmIG9mIHRoZSBJbml0aWFsIERldmVsb3BlciBvciBhbnkgQ29udHJpYnV0b3IuIFlvdSBtdXN0IG1ha2UgaXQgYWJzb2x1dGVseSBjbGVhciB0aGF0IGFueSBzdWNoIHdhcnJhbnR5LCBzdXBwb3J0LCBpbmRlbW5pdHkgb3IgbGlhYmlsaXR5IG9ibGlnYXRpb24gaXMgb2ZmZXJlZCBieSBZb3UgYWxvbmUsIGFuZCBZb3UgaGVyZWJ5IGFncmVlIHRvIGluZGVtbmlmeSB0aGUgSW5pdGlhbCBEZXZlbG9wZXIgYW5kIGV2ZXJ5IENvbnRyaWJ1dG9yIGZvciBhbnkgbGlhYmlsaXR5IGluY3VycmVkIGJ5IHRoZSBJbml0aWFsIERldmVsb3BlciBvciBzdWNoIENvbnRyaWJ1dG9yIGFzIGEgcmVzdWx0IG9mIHdhcnJhbnR5LCBzdXBwb3J0LCBpbmRlbW5pdHkgb3IgbGlhYmlsaXR5IHRlcm1zIFlvdSBvZmZlci4KKworICAgICAzLjUuIERpc3RyaWJ1dGlvbiBvZiBFeGVjdXRhYmxlIFZlcnNpb25zLgorCisgICAgIFlvdSBtYXkgZGlzdHJpYnV0ZSB0aGUgRXhlY3V0YWJsZSBmb3JtIG9mIHRoZSBDb3ZlcmVkIFNvZnR3YXJlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2Ugb3IgdW5kZXIgdGhlIHRlcm1zIG9mIGEgbGljZW5zZSBvZiBZb3VyIGNob2ljZSwgd2hpY2ggbWF5IGNvbnRhaW4gdGVybXMgZGlmZmVyZW50IGZyb20gdGhpcyBMaWNlbnNlLCBwcm92aWRlZCB0aGF0IFlvdSBhcmUgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UgYW5kIHRoYXQgdGhlIGxpY2Vuc2UgZm9yIHRoZSBFeGVjdXRhYmxlIGZvcm0gZG9lcyBub3QgYXR0ZW1wdCB0byBsaW1pdCBvciBhbHRlciB0aGUgcmVjaXBpZW50J3MgcmlnaHRzIGluIHRoZSBTb3VyY2UgQ29kZSBmb3JtIGZyb20gdGhlIHJpZ2h0cyBzZXQgZm9ydGggaW4gdGhpcyBMaWNlbnNlLiBJZiBZb3UgZGlzdHJpYnV0ZSB0aGUgQ292ZXJlZCBTb2Z0d2FyZSBpbiBFeGVjdXRhYmxlIGZvcm0gdW5kZXIgYSBkaWZmZXJlbnQgbGljZW5zZSwgWW91IG11c3QgbWFrZSBpdCBhYnNvbHV0ZWx5IGNsZWFyIHRoYXQgYW55IHRlcm1zIHdoaWNoIGRpZmZlciBmcm9tIHRoaXMgTGljZW5zZSBhcmUgb2ZmZXJlZCBieSBZb3UgYWxvbmUsIG5vdCBieSB0aGUgSW5pdGlhbCBEZXZlbG9wZXIgb3IgQ29udHJpYnV0b3IuIFlvdSBoZXJlYnkgYWdyZWUgdG8gaW5kZW1uaWZ5IHRoZSBJbml0aWFsIERldmVsb3BlciBhbmQgZXZlcnkgQ29udHJpYnV0b3IgZm9yIGFueSBsaWFiaWxpdHkgaW5jdXJyZWQgYnkgdGhlIEluaXRpYWwgRGV2ZWxvcGVyIG9yIHN1Y2ggQ29udHJpYnV0b3IgYXMgYSByZXN1bHQgb2YgYW55IHN1Y2ggdGVybXMgWW91IG9mZmVyLgorCisgICAgIDMuNi4gTGFyZ2VyIFdvcmtzLgorCisgICAgIFlvdSBtYXkgY3JlYXRlIGEgTGFyZ2VyIFdvcmsgYnkgY29tYmluaW5nIENvdmVyZWQgU29mdHdhcmUgd2l0aCBvdGhlciBjb2RlIG5vdCBnb3Zlcm5lZCBieSB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlIGFuZCBkaXN0cmlidXRlIHRoZSBMYXJnZXIgV29yayBhcyBhIHNpbmdsZSBwcm9kdWN0LiBJbiBzdWNoIGEgY2FzZSwgWW91IG11c3QgbWFrZSBzdXJlIHRoZSByZXF1aXJlbWVudHMgb2YgdGhpcyBMaWNlbnNlIGFyZSBmdWxmaWxsZWQgZm9yIHRoZSBDb3ZlcmVkIFNvZnR3YXJlLgorCis0LiBWZXJzaW9ucyBvZiB0aGUgTGljZW5zZS4KKworICAgICA0LjEuIE5ldyBWZXJzaW9ucy4KKworICAgICBPcmFjbGUgaXMgdGhlIGluaXRpYWwgbGljZW5zZSBzdGV3YXJkIGFuZCBtYXkgcHVibGlzaCByZXZpc2VkIGFuZC9vciBuZXcgdmVyc2lvbnMgb2YgdGhpcyBMaWNlbnNlIGZyb20gdGltZSB0byB0aW1lLiBFYWNoIHZlcnNpb24gd2lsbCBiZSBnaXZlbiBhIGRpc3Rpbmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLiBFeGNlcHQgYXMgcHJvdmlkZWQgaW4gU2VjdGlvbiA0LjMsIG5vIG9uZSBvdGhlciB0aGFuIHRoZSBsaWNlbnNlIHN0ZXdhcmQgaGFzIHRoZSByaWdodCB0byBtb2RpZnkgdGhpcyBMaWNlbnNlLgorCisgICAgIDQuMi4gRWZmZWN0IG9mIE5ldyBWZXJzaW9ucy4KKworICAgICBZb3UgbWF5IGFsd2F5cyBjb250aW51ZSB0byB1c2UsIGRpc3RyaWJ1dGUgb3Igb3RoZXJ3aXNlIG1ha2UgdGhlIENvdmVyZWQgU29mdHdhcmUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgdmVyc2lvbiBvZiB0aGUgTGljZW5zZSB1bmRlciB3aGljaCBZb3Ugb3JpZ2luYWxseSByZWNlaXZlZCB0aGUgQ292ZXJlZCBTb2Z0d2FyZS4gSWYgdGhlIEluaXRpYWwgRGV2ZWxvcGVyIGluY2x1ZGVzIGEgbm90aWNlIGluIHRoZSBPcmlnaW5hbCBTb2Z0d2FyZSBwcm9oaWJpdGluZyBpdCBmcm9tIGJlaW5nIGRpc3RyaWJ1dGVkIG9yIG90aGVyd2lzZSBtYWRlIGF2YWlsYWJsZSB1bmRlciBhbnkgc3Vic2VxdWVudCB2ZXJzaW9uIG9mIHRoZSBMaWNlbnNlLCBZb3UgbXVzdCBkaXN0cmlidXRlIGFuZCBtYWtlIHRoZSBDb3ZlcmVkIFNvZnR3YXJlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIHZlcnNpb24gb2YgdGhlIExpY2Vuc2UgdW5kZXIgd2hpY2ggWW91IG9yaWdpbmFsbHkgcmVjZWl2ZWQgdGhlIENvdmVyZWQgU29mdHdhcmUuIE90aGVyd2lzZSwgWW91IG1heSBhbHNvIGNob29zZSB0byB1c2UsIGRpc3RyaWJ1dGUgb3Igb3RoZXJ3aXNlIG1ha2UgdGhlIENvdmVyZWQgU29mdHdhcmUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiBhbnkgc3Vic2VxdWVudCB2ZXJzaW9uIG9mIHRoZSBMaWNlbnNlIHB1Ymxpc2hlZCBieSB0aGUgbGljZW5zZSBzdGV3YXJkLgorCisgICAgIDQuMy4gTW9kaWZpZWQgVmVyc2lvbnMuCisKKyAgICAgV2hlbiBZb3UgYXJlIGFuIEluaXRpYWwgRGV2ZWxvcGVyIGFuZCBZb3Ugd2FudCB0byBjcmVhdGUgYSBuZXcgbGljZW5zZSBmb3IgWW91ciBPcmlnaW5hbCBTb2Z0d2FyZSwgWW91IG1heSBjcmVhdGUgYW5kIHVzZSBhIG1vZGlmaWVkIHZlcnNpb24gb2YgdGhpcyBMaWNlbnNlIGlmIFlvdTogKGEpIHJlbmFtZSB0aGUgbGljZW5zZSBhbmQgcmVtb3ZlIGFueSByZWZlcmVuY2VzIHRvIHRoZSBuYW1lIG9mIHRoZSBsaWNlbnNlIHN0ZXdhcmQgKGV4Y2VwdCB0byBub3RlIHRoYXQgdGhlIGxpY2Vuc2UgZGlmZmVycyBmcm9tIHRoaXMgTGljZW5zZSk7IGFuZCAoYikgb3RoZXJ3aXNlIG1ha2UgaXQgY2xlYXIgdGhhdCB0aGUgbGljZW5zZSBjb250YWlucyB0ZXJtcyB3aGljaCBkaWZmZXIgZnJvbSB0aGlzIExpY2Vuc2UuCisKKzUuIERJU0NMQUlNRVIgT0YgV0FSUkFOVFkuCisKKyAgICAgQ09WRVJFRCBTT0ZUV0FSRSBJUyBQUk9WSURFRCBVTkRFUiBUSElTIExJQ0VOU0UgT04gQU4gIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1NFRCBPUiBJTVBMSUVELCBJTkNMVURJTkcsIFdJVEhPVVQgTElNSVRBVElPTiwgV0FSUkFOVElFUyBUSEFUIFRIRSBDT1ZFUkVEIFNPRlRXQVJFIElTIEZSRUUgT0YgREVGRUNUUywgTUVSQ0hBTlRBQkxFLCBGSVQgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIE9SIE5PTi1JTkZSSU5HSU5HLiBUSEUgRU5USVJFIFJJU0sgQVMgVE8gVEhFIFFVQUxJVFkgQU5EIFBFUkZPUk1BTkNFIE9GIFRIRSBDT1ZFUkVEIFNPRlRXQVJFIElTIFdJVEggWU9VLiBTSE9VTEQgQU5ZIENPVkVSRUQgU09GVFdBUkUgUFJPVkUgREVGRUNUSVZFIElOIEFOWSBSRVNQRUNULCBZT1UgKE5PVCBUSEUgSU5JVElBTCBERVZFTE9QRVIgT1IgQU5ZIE9USEVSIENPTlRSSUJVVE9SKSBBU1NVTUUgVEhFIENPU1QgT0YgQU5ZIE5FQ0VTU0FSWSBTRVJWSUNJTkcsIFJFUEFJUiBPUiBDT1JSRUNUSU9OLiBUSElTIERJU0NMQUlNRVIgT0YgV0FSUkFOVFkgQ09OU1RJVFVURVMgQU4gRVNTRU5USUFMIFBBUlQgT0YgVEhJUyBMSUNFTlNFLiBOTyBVU0UgT0YgQU5ZIENPVkVSRUQgU09GVFdBUkUgSVMgQVVUSE9SSVpFRCBIRVJFVU5ERVIgRVhDRVBUIFVOREVSIFRISVMgRElTQ0xBSU1FUi4KKworNi4gVEVSTUlOQVRJT04uCisKKyAgICAgNi4xLiBUaGlzIExpY2Vuc2UgYW5kIHRoZSByaWdodHMgZ3JhbnRlZCBoZXJldW5kZXIgd2lsbCB0ZXJtaW5hdGUgYXV0b21hdGljYWxseSBpZiBZb3UgZmFpbCB0byBjb21wbHkgd2l0aCB0ZXJtcyBoZXJlaW4gYW5kIGZhaWwgdG8gY3VyZSBzdWNoIGJyZWFjaCB3aXRoaW4gMzAgZGF5cyBvZiBiZWNvbWluZyBhd2FyZSBvZiB0aGUgYnJlYWNoLiBQcm92aXNpb25zIHdoaWNoLCBieSB0aGVpciBuYXR1cmUsIG11c3QgcmVtYWluIGluIGVmZmVjdCBiZXlvbmQgdGhlIHRlcm1pbmF0aW9uIG9mIHRoaXMgTGljZW5zZSBzaGFsbCBzdXJ2aXZlLgorCisgICAgIDYuMi4gSWYgWW91IGFzc2VydCBhIHBhdGVudCBpbmZyaW5nZW1lbnQgY2xhaW0gKGV4Y2x1ZGluZyBkZWNsYXJhdG9yeSBqdWRnbWVudCBhY3Rpb25zKSBhZ2FpbnN0IEluaXRpYWwgRGV2ZWxvcGVyIG9yIGEgQ29udHJpYnV0b3IgKHRoZSBJbml0aWFsIERldmVsb3BlciBvciBDb250cmlidXRvciBhZ2FpbnN0IHdob20gWW91IGFzc2VydCBzdWNoIGNsYWltIGlzIHJlZmVycmVkIHRvIGFzICJQYXJ0aWNpcGFudCIpIGFsbGVnaW5nIHRoYXQgdGhlIFBhcnRpY2lwYW50IFNvZnR3YXJlIChtZWFuaW5nIHRoZSBDb250cmlidXRvciBWZXJzaW9uIHdoZXJlIHRoZSBQYXJ0aWNpcGFudCBpcyBhIENvbnRyaWJ1dG9yIG9yIHRoZSBPcmlnaW5hbCBTb2Z0d2FyZSB3aGVyZSB0aGUgUGFydGljaXBhbnQgaXMgdGhlIEluaXRpYWwgRGV2ZWxvcGVyKSBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGluZnJpbmdlcyBhbnkgcGF0ZW50LCB0aGVuIGFueSBhbmQgYWxsIHJpZ2h0cyBncmFudGVkIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgdG8gWW91IGJ5IHN1Y2ggUGFydGljaXBhbnQsIHRoZSBJbml0aWFsIERldmVsb3BlciAoaWYgdGhlIEluaXRpYWwgRGV2ZWxvcGVyIGlzIG5vdCB0aGUgUGFydGljaXBhbnQpIGFuZCBhbGwgQ29udHJpYnV0b3JzIHVuZGVyIFNlY3Rpb25zIDIuMSBhbmQvb3IgMi4yIG9mIHRoaXMgTGljZW5zZSBzaGFsbCwgdXBvbiA2MCBkYXlzIG5vdGljZSBmcm9tIFBhcnRpY2lwYW50IHRlcm1pbmF0ZSBwcm9zcGVjdGl2ZWx5IGFuZCBhdXRvbWF0aWNhbGx5IGF0IHRoZSBleHBpcmF0aW9uIG9mIHN1Y2ggNjAgZGF5IG5vdGljZSBwZXJpb2QsIHVubGVzcyBpZiB3aXRoaW4gc3VjaCA2MCBkYXkgcGVyaW9kIFlvdSB3aXRoZHJhdyBZb3VyIGNsYWltIHdpdGggcmVzcGVjdCB0byB0aGUgUGFydGljaXBhbnQgU29mdHdhcmUgYWdhaW5zdCBzdWNoIFBhcnRpY2lwYW50IGVpdGhlciB1bmlsYXRlcmFsbHkgb3IgcHVyc3VhbnQgdG8gYSB3cml0dGVuIGFncmVlbWVudCB3aXRoIFBhcnRpY2lwYW50LgorCisgICAgIDYuMy4gSWYgWW91IGFzc2VydCBhIHBhdGVudCBpbmZyaW5nZW1lbnQgY2xhaW0gYWdhaW5zdCBQYXJ0aWNpcGFudCBhbGxlZ2luZyB0aGF0IHRoZSBQYXJ0aWNpcGFudCBTb2Z0d2FyZSBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGluZnJpbmdlcyBhbnkgcGF0ZW50IHdoZXJlIHN1Y2ggY2xhaW0gaXMgcmVzb2x2ZWQgKHN1Y2ggYXMgYnkgbGljZW5zZSBvciBzZXR0bGVtZW50KSBwcmlvciB0byB0aGUgaW5pdGlhdGlvbiBvZiBwYXRlbnQgaW5mcmluZ2VtZW50IGxpdGlnYXRpb24sIHRoZW4gdGhlIHJlYXNvbmFibGUgdmFsdWUgb2YgdGhlIGxpY2Vuc2VzIGdyYW50ZWQgYnkgc3VjaCBQYXJ0aWNpcGFudCB1bmRlciBTZWN0aW9ucyAyLjEgb3IgMi4yIHNoYWxsIGJlIHRha2VuIGludG8gYWNjb3VudCBpbiBkZXRlcm1pbmluZyB0aGUgYW1vdW50IG9yIHZhbHVlIG9mIGFueSBwYXltZW50IG9yIGxpY2Vuc2UuCisKKyAgICAgNi40LiBJbiB0aGUgZXZlbnQgb2YgdGVybWluYXRpb24gdW5kZXIgU2VjdGlvbnMgNi4xIG9yIDYuMiBhYm92ZSwgYWxsIGVuZCB1c2VyIGxpY2Vuc2VzIHRoYXQgaGF2ZSBiZWVuIHZhbGlkbHkgZ3JhbnRlZCBieSBZb3Ugb3IgYW55IGRpc3RyaWJ1dG9yIGhlcmV1bmRlciBwcmlvciB0byB0ZXJtaW5hdGlvbiAoZXhjbHVkaW5nIGxpY2Vuc2VzIGdyYW50ZWQgdG8gWW91IGJ5IGFueSBkaXN0cmlidXRvcikgc2hhbGwgc3Vydml2ZSB0ZXJtaW5hdGlvbi4KKworNy4gTElNSVRBVElPTiBPRiBMSUFCSUxJVFkuCisKKyAgICAgVU5ERVIgTk8gQ0lSQ1VNU1RBTkNFUyBBTkQgVU5ERVIgTk8gTEVHQUwgVEhFT1JZLCBXSEVUSEVSIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFKSwgQ09OVFJBQ1QsIE9SIE9USEVSV0lTRSwgU0hBTEwgWU9VLCBUSEUgSU5JVElBTCBERVZFTE9QRVIsIEFOWSBPVEhFUiBDT05UUklCVVRPUiwgT1IgQU5ZIERJU1RSSUJVVE9SIE9GIENPVkVSRUQgU09GVFdBUkUsIE9SIEFOWSBTVVBQTElFUiBPRiBBTlkgT0YgU1VDSCBQQVJUSUVTLCBCRSBMSUFCTEUgVE8gQU5ZIFBFUlNPTiBGT1IgQU5ZIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT0YgQU5ZIENIQVJBQ1RFUiBJTkNMVURJTkcsIFdJVEhPVVQgTElNSVRBVElPTiwgREFNQUdFUyBGT1IgTE9TUyBPRiBHT09EV0lMTCwgV09SSyBTVE9QUEFHRSwgQ09NUFVURVIgRkFJTFVSRSBPUiBNQUxGVU5DVElPTiwgT1IgQU5ZIEFORCBBTEwgT1RIRVIgQ09NTUVSQ0lBTCBEQU1BR0VTIE9SIExPU1NFUywgRVZFTiBJRiBTVUNIIFBBUlRZIFNIQUxMIEhBVkUgQkVFTiBJTkZPUk1FRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLiBUSElTIExJTUlUQVRJT04gT0YgTElBQklMSVRZIFNIQUxMIE5PVCBBUFBMWSBUTyBMSUFCSUxJVFkgRk9SIERFQVRIIE9SIFBFUlNPTkFMIElOSlVSWSBSRVNVTFRJTkcgRlJPTSBTVUNIIFBBUlRZJ1MgTkVHTElHRU5DRSBUTyBUSEUgRVhURU5UIEFQUExJQ0FCTEUgTEFXIFBST0hJQklUUyBTVUNIIExJTUlUQVRJT04uIFNPTUUgSlVSSVNESUNUSU9OUyBETyBOT1QgQUxMT1cgVEhFIEVYQ0xVU0lPTiBPUiBMSU1JVEFUSU9OIE9GIElOQ0lERU5UQUwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTLCBTTyBUSElTIEVYQ0xVU0lPTiBBTkQgTElNSVRBVElPTiBNQVkgTk9UIEFQUExZIFRPIFlPVS4KKworOC4gVS5TLiBHT1ZFUk5NRU5UIEVORCBVU0VSUy4KKworICAgICBUaGUgQ292ZXJlZCBTb2Z0d2FyZSBpcyBhICJjb21tZXJjaWFsIGl0ZW0sIiBhcyB0aGF0IHRlcm0gaXMgZGVmaW5lZCBpbiA0OCBDLkYuUi4gMi4xMDEgKE9jdC4gMTk5NSksIGNvbnNpc3Rpbmcgb2YgImNvbW1lcmNpYWwgY29tcHV0ZXIgc29mdHdhcmUiIChhcyB0aGF0IHRlcm0gaXMgZGVmaW5lZCBhdCA0OCBDLkYuUi4gPyAyNTIuMjI3LTcwMTQoYSkoMSkpIGFuZCAiY29tbWVyY2lhbCBjb21wdXRlciBzb2Z0d2FyZSBkb2N1bWVudGF0aW9uIiBhcyBzdWNoIHRlcm1zIGFyZSB1c2VkIGluIDQ4IEMuRi5SLiAxMi4yMTIgKFNlcHQuIDE5OTUpLiBDb25zaXN0ZW50IHdpdGggNDggQy5GLlIuIDEyLjIxMiBhbmQgNDggQy5GLlIuIDIyNy43MjAyLTEgdGhyb3VnaCAyMjcuNzIwMi00IChKdW5lIDE5OTUpLCBhbGwgVS5TLiBHb3Zlcm5tZW50IEVuZCBVc2VycyBhY3F1aXJlIENvdmVyZWQgU29mdHdhcmUgd2l0aCBvbmx5IHRob3NlIHJpZ2h0cyBzZXQgZm9ydGggaGVyZWluLiBUaGlzIFUuUy4gR292ZXJubWVudCBSaWdodHMgY2xhdXNlIGlzIGluIGxpZXUgb2YsIGFuZCBzdXBlcnNlZGVzLCBhbnkgb3RoZXIgRkFSLCBERkFSLCBvciBvdGhlciBjbGF1c2Ugb3IgcHJvdmlzaW9uIHRoYXQgYWRkcmVzc2VzIEdvdmVybm1lbnQgcmlnaHRzIGluIGNvbXB1dGVyIHNvZnR3YXJlIHVuZGVyIHRoaXMgTGljZW5zZS4KKworOS4gTUlTQ0VMTEFORU9VUy4KKworICAgICBUaGlzIExpY2Vuc2UgcmVwcmVzZW50cyB0aGUgY29tcGxldGUgYWdyZWVtZW50IGNvbmNlcm5pbmcgc3ViamVjdCBtYXR0ZXIgaGVyZW9mLiBJZiBhbnkgcHJvdmlzaW9uIG9mIHRoaXMgTGljZW5zZSBpcyBoZWxkIHRvIGJlIHVuZW5mb3JjZWFibGUsIHN1Y2ggcHJvdmlzaW9uIHNoYWxsIGJlIHJlZm9ybWVkIG9ubHkgdG8gdGhlIGV4dGVudCBuZWNlc3NhcnkgdG8gbWFrZSBpdCBlbmZvcmNlYWJsZS4gVGhpcyBMaWNlbnNlIHNoYWxsIGJlIGdvdmVybmVkIGJ5IHRoZSBsYXcgb2YgdGhlIGp1cmlzZGljdGlvbiBzcGVjaWZpZWQgaW4gYSBub3RpY2UgY29udGFpbmVkIHdpdGhpbiB0aGUgT3JpZ2luYWwgU29mdHdhcmUgKGV4Y2VwdCB0byB0aGUgZXh0ZW50IGFwcGxpY2FibGUgbGF3LCBpZiBhbnksIHByb3ZpZGVzIG90aGVyd2lzZSksIGV4Y2x1ZGluZyBzdWNoIGp1cmlzZGljdGlvbidzIGNvbmZsaWN0LW9mLWxhdyBwcm92aXNpb25zLiBBbnkgbGl0aWdhdGlvbiByZWxhdGluZyB0byB0aGlzIExpY2Vuc2Ugc2hhbGwgYmUgc3ViamVjdCB0byB0aGUganVyaXNkaWN0aW9uIG9mIHRoZSBjb3VydHMgbG9jYXRlZCBpbiB0aGUganVyaXNkaWN0aW9uIGFuZCB2ZW51ZSBzcGVjaWZpZWQgaW4gYSBub3RpY2UgY29udGFpbmVkIHdpdGhpbiB0aGUgT3JpZ2luYWwgU29mdHdhcmUsIHdpdGggdGhlIGxvc2luZyBwYXJ0eSByZXNwb25zaWJsZSBmb3IgY29zdHMsIGluY2x1ZGluZywgd2l0aG91dCBsaW1pdGF0aW9uLCBjb3VydCBjb3N0cyBhbmQgcmVhc29uYWJsZSBhdHRvcm5leXMnIGZlZXMgYW5kIGV4cGVuc2VzLiBUaGUgYXBwbGljYXRpb24gb2YgdGhlIFVuaXRlZCBOYXRpb25zIENvbnZlbnRpb24gb24gQ29udHJhY3RzIGZvciB0aGUgSW50ZXJuYXRpb25hbCBTYWxlIG9mIEdvb2RzIGlzIGV4cHJlc3NseSBleGNsdWRlZC4gQW55IGxhdyBvciByZWd1bGF0aW9uIHdoaWNoIHByb3ZpZGVzIHRoYXQgdGhlIGxhbmd1YWdlIG9mIGEgY29udHJhY3Qgc2hhbGwgYmUgY29uc3RydWVkIGFnYWluc3QgdGhlIGRyYWZ0ZXIgc2hhbGwgbm90IGFwcGx5IHRvIHRoaXMgTGljZW5zZS4gWW91IGFncmVlIHRoYXQgWW91IGFsb25lIGFyZSByZXNwb25zaWJsZSBmb3IgY29tcGxpYW5jZSB3aXRoIHRoZSBVbml0ZWQgU3RhdGVzIGV4cG9ydCBhZG1pbmlzdHJhdGlvbiByZWd1bGF0aW9ucyAoYW5kIHRoZSBleHBvcnQgY29udHJvbCBsYXdzIGFuZCByZWd1bGF0aW9uIG9mIGFueSBvdGhlciBjb3VudHJpZXMpIHdoZW4gWW91IHVzZSwgZGlzdHJpYnV0ZSBvciBvdGhlcndpc2UgbWFrZSBhdmFpbGFibGUgYW55IENvdmVyZWQgU29mdHdhcmUuCisKKzEwLiBSRVNQT05TSUJJTElUWSBGT1IgQ0xBSU1TLgorCisgICAgIEFzIGJldHdlZW4gSW5pdGlhbCBEZXZlbG9wZXIgYW5kIHRoZSBDb250cmlidXRvcnMsIGVhY2ggcGFydHkgaXMgcmVzcG9uc2libGUgZm9yIGNsYWltcyBhbmQgZGFtYWdlcyBhcmlzaW5nLCBkaXJlY3RseSBvciBpbmRpcmVjdGx5LCBvdXQgb2YgaXRzIHV0aWxpemF0aW9uIG9mIHJpZ2h0cyB1bmRlciB0aGlzIExpY2Vuc2UgYW5kIFlvdSBhZ3JlZSB0byB3b3JrIHdpdGggSW5pdGlhbCBEZXZlbG9wZXIgYW5kIENvbnRyaWJ1dG9ycyB0byBkaXN0cmlidXRlIHN1Y2ggcmVzcG9uc2liaWxpdHkgb24gYW4gZXF1aXRhYmxlIGJhc2lzLiBOb3RoaW5nIGhlcmVpbiBpcyBpbnRlbmRlZCBvciBzaGFsbCBiZSBkZWVtZWQgdG8gY29uc3RpdHV0ZSBhbnkgYWRtaXNzaW9uIG9mIGxpYWJpbGl0eS4KKworLS0tLS0tLS0tLQorTk9USUNFIFBVUlNVQU5UIFRPIFNFQ1RJT04gOSBPRiBUSEUgQ09NTU9OIERFVkVMT1BNRU5UIEFORCBESVNUUklCVVRJT04gTElDRU5TRSAoQ0RETCkKK1RoZSBjb2RlIHJlbGVhc2VkIHVuZGVyIHRoZSBDRERMIHNoYWxsIGJlIGdvdmVybmVkIGJ5IHRoZSBsYXdzIG9mIHRoZSBTdGF0ZSBvZiBDYWxpZm9ybmlhIChleGNsdWRpbmcgY29uZmxpY3Qtb2YtbGF3IHByb3Zpc2lvbnMpLiBBbnkgbGl0aWdhdGlvbiByZWxhdGluZyB0byB0aGlzIExpY2Vuc2Ugc2hhbGwgYmUgc3ViamVjdCB0byB0aGUganVyaXNkaWN0aW9uIG9mIHRoZSBGZWRlcmFsIENvdXJ0cyBvZiB0aGUgTm9ydGhlcm4gRGlzdHJpY3Qgb2YgQ2FsaWZvcm5pYSBhbmQgdGhlIHN0YXRlIGNvdXJ0cyBvZiB0aGUgU3RhdGUgb2YgQ2FsaWZvcm5pYSwgd2l0aCB2ZW51ZSBseWluZyBpbiBTYW50YSBDbGFyYSBDb3VudHksIENhbGlmb3JuaWEuCisKKworCisKK1RoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSAoR1BMKSBWZXJzaW9uIDIsIEp1bmUgMTk5MQorCisKK0NvcHlyaWdodCAoQykgMTk4OSwgMTk5MSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKKworRXZlcnlvbmUgaXMgcGVybWl0dGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzIG9mIHRoaXMgbGljZW5zZSBkb2N1bWVudCwgYnV0IGNoYW5naW5nIGl0IGlzIG5vdCBhbGxvd2VkLgorCitQcmVhbWJsZQorCitUaGUgbGljZW5zZXMgZm9yIG1vc3Qgc29mdHdhcmUgYXJlIGRlc2lnbmVkIHRvIHRha2UgYXdheSB5b3VyIGZyZWVkb20gdG8gc2hhcmUgYW5kIGNoYW5nZSBpdC4gQnkgY29udHJhc3QsIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBpcyBpbnRlbmRlZCB0byBndWFyYW50ZWUgeW91ciBmcmVlZG9tIHRvIHNoYXJlIGFuZCBjaGFuZ2UgZnJlZSBzb2Z0d2FyZS0tdG8gbWFrZSBzdXJlIHRoZSBzb2Z0d2FyZSBpcyBmcmVlIGZvciBhbGwgaXRzIHVzZXJzLiBUaGlzIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXBwbGllcyB0byBtb3N0IG9mIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24ncyBzb2Z0d2FyZSBhbmQgdG8gYW55IG90aGVyIHByb2dyYW0gd2hvc2UgYXV0aG9ycyBjb21taXQgdG8gdXNpbmcgaXQuIChTb21lIG90aGVyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBzb2Z0d2FyZSBpcyBjb3ZlcmVkIGJ5IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGluc3RlYWQuKSBZb3UgY2FuIGFwcGx5IGl0IHRvIHlvdXIgcHJvZ3JhbXMsIHRvby4KKworV2hlbiB3ZSBzcGVhayBvZiBmcmVlIHNvZnR3YXJlLCB3ZSBhcmUgcmVmZXJyaW5nIHRvIGZyZWVkb20sIG5vdCBwcmljZS4gT3VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VzIGFyZSBkZXNpZ25lZCB0byBtYWtlIHN1cmUgdGhhdCB5b3UgaGF2ZSB0aGUgZnJlZWRvbSB0byBkaXN0cmlidXRlIGNvcGllcyBvZiBmcmVlIHNvZnR3YXJlIChhbmQgY2hhcmdlIGZvciB0aGlzIHNlcnZpY2UgaWYgeW91IHdpc2gpLCB0aGF0IHlvdSByZWNlaXZlIHNvdXJjZSBjb2RlIG9yIGNhbiBnZXQgaXQgaWYgeW91IHdhbnQgaXQsIHRoYXQgeW91IGNhbiBjaGFuZ2UgdGhlIHNvZnR3YXJlIG9yIHVzZSBwaWVjZXMgb2YgaXQgaW4gbmV3IGZyZWUgcHJvZ3JhbXM7IGFuZCB0aGF0IHlvdSBrbm93IHlvdSBjYW4gZG8gdGhlc2UgdGhpbmdzLgorCitUbyBwcm90ZWN0IHlvdXIgcmlnaHRzLCB3ZSBuZWVkIHRvIG1ha2UgcmVzdHJpY3Rpb25zIHRoYXQgZm9yYmlkIGFueW9uZSB0byBkZW55IHlvdSB0aGVzZSByaWdodHMgb3IgdG8gYXNrIHlvdSB0byBzdXJyZW5kZXIgdGhlIHJpZ2h0cy4gVGhlc2UgcmVzdHJpY3Rpb25zIHRyYW5zbGF0ZSB0byBjZXJ0YWluIHJlc3BvbnNpYmlsaXRpZXMgZm9yIHlvdSBpZiB5b3UgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhlIHNvZnR3YXJlLCBvciBpZiB5b3UgbW9kaWZ5IGl0LgorCitGb3IgZXhhbXBsZSwgaWYgeW91IGRpc3RyaWJ1dGUgY29waWVzIG9mIHN1Y2ggYSBwcm9ncmFtLCB3aGV0aGVyIGdyYXRpcyBvciBmb3IgYSBmZWUsIHlvdSBtdXN0IGdpdmUgdGhlIHJlY2lwaWVudHMgYWxsIHRoZSByaWdodHMgdGhhdCB5b3UgaGF2ZS4gWW91IG11c3QgbWFrZSBzdXJlIHRoYXQgdGhleSwgdG9vLCByZWNlaXZlIG9yIGNhbiBnZXQgdGhlIHNvdXJjZSBjb2RlLiBBbmQgeW91IG11c3Qgc2hvdyB0aGVtIHRoZXNlIHRlcm1zIHNvIHRoZXkga25vdyB0aGVpciByaWdodHMuCisKK1dlIHByb3RlY3QgeW91ciByaWdodHMgd2l0aCB0d28gc3RlcHM6ICgxKSBjb3B5cmlnaHQgdGhlIHNvZnR3YXJlLCBhbmQgKDIpIG9mZmVyIHlvdSB0aGlzIGxpY2Vuc2Ugd2hpY2ggZ2l2ZXMgeW91IGxlZ2FsIHBlcm1pc3Npb24gdG8gY29weSwgZGlzdHJpYnV0ZSBhbmQvb3IgbW9kaWZ5IHRoZSBzb2Z0d2FyZS4KKworQWxzbywgZm9yIGVhY2ggYXV0aG9yJ3MgcHJvdGVjdGlvbiBhbmQgb3Vycywgd2Ugd2FudCB0byBtYWtlIGNlcnRhaW4gdGhhdCBldmVyeW9uZSB1bmRlcnN0YW5kcyB0aGF0IHRoZXJlIGlzIG5vIHdhcnJhbnR5IGZvciB0aGlzIGZyZWUgc29mdHdhcmUuIElmIHRoZSBzb2Z0d2FyZSBpcyBtb2RpZmllZCBieSBzb21lb25lIGVsc2UgYW5kIHBhc3NlZCBvbiwgd2Ugd2FudCBpdHMgcmVjaXBpZW50cyB0byBrbm93IHRoYXQgd2hhdCB0aGV5IGhhdmUgaXMgbm90IHRoZSBvcmlnaW5hbCwgc28gdGhhdCBhbnkgcHJvYmxlbXMgaW50cm9kdWNlZCBieSBvdGhlcnMgd2lsbCBub3QgcmVmbGVjdCBvbiB0aGUgb3JpZ2luYWwgYXV0aG9ycycgcmVwdXRhdGlvbnMuCisKK0ZpbmFsbHksIGFueSBmcmVlIHByb2dyYW0gaXMgdGhyZWF0ZW5lZCBjb25zdGFudGx5IGJ5IHNvZnR3YXJlIHBhdGVudHMuIFdlIHdpc2ggdG8gYXZvaWQgdGhlIGRhbmdlciB0aGF0IHJlZGlzdHJpYnV0b3JzIG9mIGEgZnJlZSBwcm9ncmFtIHdpbGwgaW5kaXZpZHVhbGx5IG9idGFpbiBwYXRlbnQgbGljZW5zZXMsIGluIGVmZmVjdCBtYWtpbmcgdGhlIHByb2dyYW0gcHJvcHJpZXRhcnkuIFRvIHByZXZlbnQgdGhpcywgd2UgaGF2ZSBtYWRlIGl0IGNsZWFyIHRoYXQgYW55IHBhdGVudCBtdXN0IGJlIGxpY2Vuc2VkIGZvciBldmVyeW9uZSdzIGZyZWUgdXNlIG9yIG5vdCBsaWNlbnNlZCBhdCBhbGwuCisKK1RoZSBwcmVjaXNlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciBjb3B5aW5nLCBkaXN0cmlidXRpb24gYW5kIG1vZGlmaWNhdGlvbiBmb2xsb3cuCisKKworVEVSTVMgQU5EIENPTkRJVElPTlMgRk9SIENPUFlJTkcsIERJU1RSSUJVVElPTiBBTkQgTU9ESUZJQ0FUSU9OCisKKzAuIFRoaXMgTGljZW5zZSBhcHBsaWVzIHRvIGFueSBwcm9ncmFtIG9yIG90aGVyIHdvcmsgd2hpY2ggY29udGFpbnMgYSBub3RpY2UgcGxhY2VkIGJ5IHRoZSBjb3B5cmlnaHQgaG9sZGVyIHNheWluZyBpdCBtYXkgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gVGhlICJQcm9ncmFtIiwgYmVsb3csIHJlZmVycyB0byBhbnkgc3VjaCBwcm9ncmFtIG9yIHdvcmssIGFuZCBhICJ3b3JrIGJhc2VkIG9uIHRoZSBQcm9ncmFtIiBtZWFucyBlaXRoZXIgdGhlIFByb2dyYW0gb3IgYW55IGRlcml2YXRpdmUgd29yayB1bmRlciBjb3B5cmlnaHQgbGF3OiB0aGF0IGlzIHRvIHNheSwgYSB3b3JrIGNvbnRhaW5pbmcgdGhlIFByb2dyYW0gb3IgYSBwb3J0aW9uIG9mIGl0LCBlaXRoZXIgdmVyYmF0aW0gb3Igd2l0aCBtb2RpZmljYXRpb25zIGFuZC9vciB0cmFuc2xhdGVkIGludG8gYW5vdGhlciBsYW5ndWFnZS4gKEhlcmVpbmFmdGVyLCB0cmFuc2xhdGlvbiBpcyBpbmNsdWRlZCB3aXRob3V0IGxpbWl0YXRpb24gaW4gdGhlIHRlcm0gIm1vZGlmaWNhdGlvbiIuKSBFYWNoIGxpY2Vuc2VlIGlzIGFkZHJlc3NlZCBhcyAieW91Ii4KKworQWN0aXZpdGllcyBvdGhlciB0aGFuIGNvcHlpbmcsIGRpc3RyaWJ1dGlvbiBhbmQgbW9kaWZpY2F0aW9uIGFyZSBub3QgY292ZXJlZCBieSB0aGlzIExpY2Vuc2U7IHRoZXkgYXJlIG91dHNpZGUgaXRzIHNjb3BlLiBUaGUgYWN0IG9mIHJ1bm5pbmcgdGhlIFByb2dyYW0gaXMgbm90IHJlc3RyaWN0ZWQsIGFuZCB0aGUgb3V0cHV0IGZyb20gdGhlIFByb2dyYW0gaXMgY292ZXJlZCBvbmx5IGlmIGl0cyBjb250ZW50cyBjb25zdGl0dXRlIGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSAoaW5kZXBlbmRlbnQgb2YgaGF2aW5nIGJlZW4gbWFkZSBieSBydW5uaW5nIHRoZSBQcm9ncmFtKS4gV2hldGhlciB0aGF0IGlzIHRydWUgZGVwZW5kcyBvbiB3aGF0IHRoZSBQcm9ncmFtIGRvZXMuCisKKzEuIFlvdSBtYXkgY29weSBhbmQgZGlzdHJpYnV0ZSB2ZXJiYXRpbSBjb3BpZXMgb2YgdGhlIFByb2dyYW0ncyBzb3VyY2UgY29kZSBhcyB5b3UgcmVjZWl2ZSBpdCwgaW4gYW55IG1lZGl1bSwgcHJvdmlkZWQgdGhhdCB5b3UgY29uc3BpY3VvdXNseSBhbmQgYXBwcm9wcmlhdGVseSBwdWJsaXNoIG9uIGVhY2ggY29weSBhbiBhcHByb3ByaWF0ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCBkaXNjbGFpbWVyIG9mIHdhcnJhbnR5OyBrZWVwIGludGFjdCBhbGwgdGhlIG5vdGljZXMgdGhhdCByZWZlciB0byB0aGlzIExpY2Vuc2UgYW5kIHRvIHRoZSBhYnNlbmNlIG9mIGFueSB3YXJyYW50eTsgYW5kIGdpdmUgYW55IG90aGVyIHJlY2lwaWVudHMgb2YgdGhlIFByb2dyYW0gYSBjb3B5IG9mIHRoaXMgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBQcm9ncmFtLgorCitZb3UgbWF5IGNoYXJnZSBhIGZlZSBmb3IgdGhlIHBoeXNpY2FsIGFjdCBvZiB0cmFuc2ZlcnJpbmcgYSBjb3B5LCBhbmQgeW91IG1heSBhdCB5b3VyIG9wdGlvbiBvZmZlciB3YXJyYW50eSBwcm90ZWN0aW9uIGluIGV4Y2hhbmdlIGZvciBhIGZlZS4KKworMi4gWW91IG1heSBtb2RpZnkgeW91ciBjb3B5IG9yIGNvcGllcyBvZiB0aGUgUHJvZ3JhbSBvciBhbnkgcG9ydGlvbiBvZiBpdCwgdGh1cyBmb3JtaW5nIGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSwgYW5kIGNvcHkgYW5kIGRpc3RyaWJ1dGUgc3VjaCBtb2RpZmljYXRpb25zIG9yIHdvcmsgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb24gMSBhYm92ZSwgcHJvdmlkZWQgdGhhdCB5b3UgYWxzbyBtZWV0IGFsbCBvZiB0aGVzZSBjb25kaXRpb25zOgorCisgICBhKSBZb3UgbXVzdCBjYXVzZSB0aGUgbW9kaWZpZWQgZmlsZXMgdG8gY2FycnkgcHJvbWluZW50IG5vdGljZXMgc3RhdGluZyB0aGF0IHlvdSBjaGFuZ2VkIHRoZSBmaWxlcyBhbmQgdGhlIGRhdGUgb2YgYW55IGNoYW5nZS4KKworICAgYikgWW91IG11c3QgY2F1c2UgYW55IHdvcmsgdGhhdCB5b3UgZGlzdHJpYnV0ZSBvciBwdWJsaXNoLCB0aGF0IGluIHdob2xlIG9yIGluIHBhcnQgY29udGFpbnMgb3IgaXMgZGVyaXZlZCBmcm9tIHRoZSBQcm9ncmFtIG9yIGFueSBwYXJ0IHRoZXJlb2YsIHRvIGJlIGxpY2Vuc2VkIGFzIGEgd2hvbGUgYXQgbm8gY2hhcmdlIHRvIGFsbCB0aGlyZCBwYXJ0aWVzIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UuCisKKyAgIGMpIElmIHRoZSBtb2RpZmllZCBwcm9ncmFtIG5vcm1hbGx5IHJlYWRzIGNvbW1hbmRzIGludGVyYWN0aXZlbHkgd2hlbiBydW4sIHlvdSBtdXN0IGNhdXNlIGl0LCB3aGVuIHN0YXJ0ZWQgcnVubmluZyBmb3Igc3VjaCBpbnRlcmFjdGl2ZSB1c2UgaW4gdGhlIG1vc3Qgb3JkaW5hcnkgd2F5LCB0byBwcmludCBvciBkaXNwbGF5IGFuIGFubm91bmNlbWVudCBpbmNsdWRpbmcgYW4gYXBwcm9wcmlhdGUgY29weXJpZ2h0IG5vdGljZSBhbmQgYSBub3RpY2UgdGhhdCB0aGVyZSBpcyBubyB3YXJyYW50eSAob3IgZWxzZSwgc2F5aW5nIHRoYXQgeW91IHByb3ZpZGUgYSB3YXJyYW50eSkgYW5kIHRoYXQgdXNlcnMgbWF5IHJlZGlzdHJpYnV0ZSB0aGUgcHJvZ3JhbSB1bmRlciB0aGVzZSBjb25kaXRpb25zLCBhbmQgdGVsbGluZyB0aGUgdXNlciBob3cgdG8gdmlldyBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlLiAoRXhjZXB0aW9uOiBpZiB0aGUgUHJvZ3JhbSBpdHNlbGYgaXMgaW50ZXJhY3RpdmUgYnV0IGRvZXMgbm90IG5vcm1hbGx5IHByaW50IHN1Y2ggYW4gYW5ub3VuY2VtZW50LCB5b3VyIHdvcmsgYmFzZWQgb24gdGhlIFByb2dyYW0gaXMgbm90IHJlcXVpcmVkIHRvIHByaW50IGFuIGFubm91bmNlbWVudC4pCisKK1RoZXNlIHJlcXVpcmVtZW50cyBhcHBseSB0byB0aGUgbW9kaWZpZWQgd29yayBhcyBhIHdob2xlLiBJZiBpZGVudGlmaWFibGUgc2VjdGlvbnMgb2YgdGhhdCB3b3JrIGFyZSBub3QgZGVyaXZlZCBmcm9tIHRoZSBQcm9ncmFtLCBhbmQgY2FuIGJlIHJlYXNvbmFibHkgY29uc2lkZXJlZCBpbmRlcGVuZGVudCBhbmQgc2VwYXJhdGUgd29ya3MgaW4gdGhlbXNlbHZlcywgdGhlbiB0aGlzIExpY2Vuc2UsIGFuZCBpdHMgdGVybXMsIGRvIG5vdCBhcHBseSB0byB0aG9zZSBzZWN0aW9ucyB3aGVuIHlvdSBkaXN0cmlidXRlIHRoZW0gYXMgc2VwYXJhdGUgd29ya3MuIEJ1dCB3aGVuIHlvdSBkaXN0cmlidXRlIHRoZSBzYW1lIHNlY3Rpb25zIGFzIHBhcnQgb2YgYSB3aG9sZSB3aGljaCBpcyBhIHdvcmsgYmFzZWQgb24gdGhlIFByb2dyYW0sIHRoZSBkaXN0cmlidXRpb24gb2YgdGhlIHdob2xlIG11c3QgYmUgb24gdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSwgd2hvc2UgcGVybWlzc2lvbnMgZm9yIG90aGVyIGxpY2Vuc2VlcyBleHRlbmQgdG8gdGhlIGVudGlyZSB3aG9sZSwgYW5kIHRodXMgdG8gZWFjaCBhbmQgZXZlcnkgcGFydCByZWdhcmRsZXNzIG9mIHdobyB3cm90ZSBpdC4KKworVGh1cywgaXQgaXMgbm90IHRoZSBpbnRlbnQgb2YgdGhpcyBzZWN0aW9uIHRvIGNsYWltIHJpZ2h0cyBvciBjb250ZXN0IHlvdXIgcmlnaHRzIHRvIHdvcmsgd3JpdHRlbiBlbnRpcmVseSBieSB5b3U7IHJhdGhlciwgdGhlIGludGVudCBpcyB0byBleGVyY2lzZSB0aGUgcmlnaHQgdG8gY29udHJvbCB0aGUgZGlzdHJpYnV0aW9uIG9mIGRlcml2YXRpdmUgb3IgY29sbGVjdGl2ZSB3b3JrcyBiYXNlZCBvbiB0aGUgUHJvZ3JhbS4KKworSW4gYWRkaXRpb24sIG1lcmUgYWdncmVnYXRpb24gb2YgYW5vdGhlciB3b3JrIG5vdCBiYXNlZCBvbiB0aGUgUHJvZ3JhbSB3aXRoIHRoZSBQcm9ncmFtIChvciB3aXRoIGEgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSkgb24gYSB2b2x1bWUgb2YgYSBzdG9yYWdlIG9yIGRpc3RyaWJ1dGlvbiBtZWRpdW0gZG9lcyBub3QgYnJpbmcgdGhlIG90aGVyIHdvcmsgdW5kZXIgdGhlIHNjb3BlIG9mIHRoaXMgTGljZW5zZS4KKworMy4gWW91IG1heSBjb3B5IGFuZCBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIChvciBhIHdvcmsgYmFzZWQgb24gaXQsIHVuZGVyIFNlY3Rpb24gMikgaW4gb2JqZWN0IGNvZGUgb3IgZXhlY3V0YWJsZSBmb3JtIHVuZGVyIHRoZSB0ZXJtcyBvZiBTZWN0aW9ucyAxIGFuZCAyIGFib3ZlIHByb3ZpZGVkIHRoYXQgeW91IGFsc28gZG8gb25lIG9mIHRoZSBmb2xsb3dpbmc6CisKKyAgIGEpIEFjY29tcGFueSBpdCB3aXRoIHRoZSBjb21wbGV0ZSBjb3JyZXNwb25kaW5nIG1hY2hpbmUtcmVhZGFibGUgc291cmNlIGNvZGUsIHdoaWNoIG11c3QgYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zIDEgYW5kIDIgYWJvdmUgb24gYSBtZWRpdW0gY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2U7IG9yLAorCisgICBiKSBBY2NvbXBhbnkgaXQgd2l0aCBhIHdyaXR0ZW4gb2ZmZXIsIHZhbGlkIGZvciBhdCBsZWFzdCB0aHJlZSB5ZWFycywgdG8gZ2l2ZSBhbnkgdGhpcmQgcGFydHksIGZvciBhIGNoYXJnZSBubyBtb3JlIHRoYW4geW91ciBjb3N0IG9mIHBoeXNpY2FsbHkgcGVyZm9ybWluZyBzb3VyY2UgZGlzdHJpYnV0aW9uLCBhIGNvbXBsZXRlIG1hY2hpbmUtcmVhZGFibGUgY29weSBvZiB0aGUgY29ycmVzcG9uZGluZyBzb3VyY2UgY29kZSwgdG8gYmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIFNlY3Rpb25zIDEgYW5kIDIgYWJvdmUgb24gYSBtZWRpdW0gY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgaW50ZXJjaGFuZ2U7IG9yLAorCisgICBjKSBBY2NvbXBhbnkgaXQgd2l0aCB0aGUgaW5mb3JtYXRpb24geW91IHJlY2VpdmVkIGFzIHRvIHRoZSBvZmZlciB0byBkaXN0cmlidXRlIGNvcnJlc3BvbmRpbmcgc291cmNlIGNvZGUuIChUaGlzIGFsdGVybmF0aXZlIGlzIGFsbG93ZWQgb25seSBmb3Igbm9uY29tbWVyY2lhbCBkaXN0cmlidXRpb24gYW5kIG9ubHkgaWYgeW91IHJlY2VpdmVkIHRoZSBwcm9ncmFtIGluIG9iamVjdCBjb2RlIG9yIGV4ZWN1dGFibGUgZm9ybSB3aXRoIHN1Y2ggYW4gb2ZmZXIsIGluIGFjY29yZCB3aXRoIFN1YnNlY3Rpb24gYiBhYm92ZS4pCisKK1RoZSBzb3VyY2UgY29kZSBmb3IgYSB3b3JrIG1lYW5zIHRoZSBwcmVmZXJyZWQgZm9ybSBvZiB0aGUgd29yayBmb3IgbWFraW5nIG1vZGlmaWNhdGlvbnMgdG8gaXQuIEZvciBhbiBleGVjdXRhYmxlIHdvcmssIGNvbXBsZXRlIHNvdXJjZSBjb2RlIG1lYW5zIGFsbCB0aGUgc291cmNlIGNvZGUgZm9yIGFsbCBtb2R1bGVzIGl0IGNvbnRhaW5zLCBwbHVzIGFueSBhc3NvY2lhdGVkIGludGVyZmFjZSBkZWZpbml0aW9uIGZpbGVzLCBwbHVzIHRoZSBzY3JpcHRzIHVzZWQgdG8gY29udHJvbCBjb21waWxhdGlvbiBhbmQgaW5zdGFsbGF0aW9uIG9mIHRoZSBleGVjdXRhYmxlLiBIb3dldmVyLCBhcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB0aGUgc291cmNlIGNvZGUgZGlzdHJpYnV0ZWQgbmVlZCBub3QgaW5jbHVkZSBhbnl0aGluZyB0aGF0IGlzIG5vcm1hbGx5IGRpc3RyaWJ1dGVkIChpbiBlaXRoZXIgc291cmNlIG9yIGJpbmFyeSBmb3JtKSB3aXRoIHRoZSBtYWpvciBjb21wb25lbnRzIChjb21waWxlciwga2VybmVsLCBhbmQgc28gb24pIG9mIHRoZSBvcGVyYXRpbmcgc3lzdGVtIG9uIHdoaWNoIHRoZSBleGVjdXRhYmxlIHJ1bnMsIHVubGVzcyB0aGF0IGNvbXBvbmVudCBpdHNlbGYgYWNjb21wYW5pZXMgdGhlIGV4ZWN1dGFibGUuCisKK0lmIGRpc3RyaWJ1dGlvbiBvZiBleGVjdXRhYmxlIG9yIG9iamVjdCBjb2RlIGlzIG1hZGUgYnkgb2ZmZXJpbmcgYWNjZXNzIHRvIGNvcHkgZnJvbSBhIGRlc2lnbmF0ZWQgcGxhY2UsIHRoZW4gb2ZmZXJpbmcgZXF1aXZhbGVudCBhY2Nlc3MgdG8gY29weSB0aGUgc291cmNlIGNvZGUgZnJvbSB0aGUgc2FtZSBwbGFjZSBjb3VudHMgYXMgZGlzdHJpYnV0aW9uIG9mIHRoZSBzb3VyY2UgY29kZSwgZXZlbiB0aG91Z2ggdGhpcmQgcGFydGllcyBhcmUgbm90IGNvbXBlbGxlZCB0byBjb3B5IHRoZSBzb3VyY2UgYWxvbmcgd2l0aCB0aGUgb2JqZWN0IGNvZGUuCisKKzQuIFlvdSBtYXkgbm90IGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSwgb3IgZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSBleGNlcHQgYXMgZXhwcmVzc2x5IHByb3ZpZGVkIHVuZGVyIHRoaXMgTGljZW5zZS4gQW55IGF0dGVtcHQgb3RoZXJ3aXNlIHRvIGNvcHksIG1vZGlmeSwgc3VibGljZW5zZSBvciBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIGlzIHZvaWQsIGFuZCB3aWxsIGF1dG9tYXRpY2FsbHkgdGVybWluYXRlIHlvdXIgcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZS4gSG93ZXZlciwgcGFydGllcyB3aG8gaGF2ZSByZWNlaXZlZCBjb3BpZXMsIG9yIHJpZ2h0cywgZnJvbSB5b3UgdW5kZXIgdGhpcyBMaWNlbnNlIHdpbGwgbm90IGhhdmUgdGhlaXIgbGljZW5zZXMgdGVybWluYXRlZCBzbyBsb25nIGFzIHN1Y2ggcGFydGllcyByZW1haW4gaW4gZnVsbCBjb21wbGlhbmNlLgorCis1LiBZb3UgYXJlIG5vdCByZXF1aXJlZCB0byBhY2NlcHQgdGhpcyBMaWNlbnNlLCBzaW5jZSB5b3UgaGF2ZSBub3Qgc2lnbmVkIGl0LiBIb3dldmVyLCBub3RoaW5nIGVsc2UgZ3JhbnRzIHlvdSBwZXJtaXNzaW9uIHRvIG1vZGlmeSBvciBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIG9yIGl0cyBkZXJpdmF0aXZlIHdvcmtzLiBUaGVzZSBhY3Rpb25zIGFyZSBwcm9oaWJpdGVkIGJ5IGxhdyBpZiB5b3UgZG8gbm90IGFjY2VwdCB0aGlzIExpY2Vuc2UuIFRoZXJlZm9yZSwgYnkgbW9kaWZ5aW5nIG9yIGRpc3RyaWJ1dGluZyB0aGUgUHJvZ3JhbSAob3IgYW55IHdvcmsgYmFzZWQgb24gdGhlIFByb2dyYW0pLCB5b3UgaW5kaWNhdGUgeW91ciBhY2NlcHRhbmNlIG9mIHRoaXMgTGljZW5zZSB0byBkbyBzbywgYW5kIGFsbCBpdHMgdGVybXMgYW5kIGNvbmRpdGlvbnMgZm9yIGNvcHlpbmcsIGRpc3RyaWJ1dGluZyBvciBtb2RpZnlpbmcgdGhlIFByb2dyYW0gb3Igd29ya3MgYmFzZWQgb24gaXQuCisKKzYuIEVhY2ggdGltZSB5b3UgcmVkaXN0cmlidXRlIHRoZSBQcm9ncmFtIChvciBhbnkgd29yayBiYXNlZCBvbiB0aGUgUHJvZ3JhbSksIHRoZSByZWNpcGllbnQgYXV0b21hdGljYWxseSByZWNlaXZlcyBhIGxpY2Vuc2UgZnJvbSB0aGUgb3JpZ2luYWwgbGljZW5zb3IgdG8gY29weSwgZGlzdHJpYnV0ZSBvciBtb2RpZnkgdGhlIFByb2dyYW0gc3ViamVjdCB0byB0aGVzZSB0ZXJtcyBhbmQgY29uZGl0aW9ucy4gWW91IG1heSBub3QgaW1wb3NlIGFueSBmdXJ0aGVyIHJlc3RyaWN0aW9ucyBvbiB0aGUgcmVjaXBpZW50cycgZXhlcmNpc2Ugb2YgdGhlIHJpZ2h0cyBncmFudGVkIGhlcmVpbi4gWW91IGFyZSBub3QgcmVzcG9uc2libGUgZm9yIGVuZm9yY2luZyBjb21wbGlhbmNlIGJ5IHRoaXJkIHBhcnRpZXMgdG8gdGhpcyBMaWNlbnNlLgorCis3LiBJZiwgYXMgYSBjb25zZXF1ZW5jZSBvZiBhIGNvdXJ0IGp1ZGdtZW50IG9yIGFsbGVnYXRpb24gb2YgcGF0ZW50IGluZnJpbmdlbWVudCBvciBmb3IgYW55IG90aGVyIHJlYXNvbiAobm90IGxpbWl0ZWQgdG8gcGF0ZW50IGlzc3VlcyksIGNvbmRpdGlvbnMgYXJlIGltcG9zZWQgb24geW91ICh3aGV0aGVyIGJ5IGNvdXJ0IG9yZGVyLCBhZ3JlZW1lbnQgb3Igb3RoZXJ3aXNlKSB0aGF0IGNvbnRyYWRpY3QgdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLCB0aGV5IGRvIG5vdCBleGN1c2UgeW91IGZyb20gdGhlIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlLiBJZiB5b3UgY2Fubm90IGRpc3RyaWJ1dGUgc28gYXMgdG8gc2F0aXNmeSBzaW11bHRhbmVvdXNseSB5b3VyIG9ibGlnYXRpb25zIHVuZGVyIHRoaXMgTGljZW5zZSBhbmQgYW55IG90aGVyIHBlcnRpbmVudCBvYmxpZ2F0aW9ucywgdGhlbiBhcyBhIGNvbnNlcXVlbmNlIHlvdSBtYXkgbm90IGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gYXQgYWxsLiBGb3IgZXhhbXBsZSwgaWYgYSBwYXRlbnQgbGljZW5zZSB3b3VsZCBub3QgcGVybWl0IHJveWFsdHktZnJlZSByZWRpc3RyaWJ1dGlvbiBvZiB0aGUgUHJvZ3JhbSBieSBhbGwgdGhvc2Ugd2hvIHJlY2VpdmUgY29waWVzIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgdGhyb3VnaCB5b3UsIHRoZW4gdGhlIG9ubHkgd2F5IHlvdSBjb3VsZCBzYXRpc2Z5IGJvdGggaXQgYW5kIHRoaXMgTGljZW5zZSB3b3VsZCBiZSB0byByZWZyYWluIGVudGlyZWx5IGZyb20gZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtLgorCitJZiBhbnkgcG9ydGlvbiBvZiB0aGlzIHNlY3Rpb24gaXMgaGVsZCBpbnZhbGlkIG9yIHVuZW5mb3JjZWFibGUgdW5kZXIgYW55IHBhcnRpY3VsYXIgY2lyY3Vtc3RhbmNlLCB0aGUgYmFsYW5jZSBvZiB0aGUgc2VjdGlvbiBpcyBpbnRlbmRlZCB0byBhcHBseSBhbmQgdGhlIHNlY3Rpb24gYXMgYSB3aG9sZSBpcyBpbnRlbmRlZCB0byBhcHBseSBpbiBvdGhlciBjaXJjdW1zdGFuY2VzLgorCitJdCBpcyBub3QgdGhlIHB1cnBvc2Ugb2YgdGhpcyBzZWN0aW9uIHRvIGluZHVjZSB5b3UgdG8gaW5mcmluZ2UgYW55IHBhdGVudHMgb3Igb3RoZXIgcHJvcGVydHkgcmlnaHQgY2xhaW1zIG9yIHRvIGNvbnRlc3QgdmFsaWRpdHkgb2YgYW55IHN1Y2ggY2xhaW1zOyB0aGlzIHNlY3Rpb24gaGFzIHRoZSBzb2xlIHB1cnBvc2Ugb2YgcHJvdGVjdGluZyB0aGUgaW50ZWdyaXR5IG9mIHRoZSBmcmVlIHNvZnR3YXJlIGRpc3RyaWJ1dGlvbiBzeXN0ZW0sIHdoaWNoIGlzIGltcGxlbWVudGVkIGJ5IHB1YmxpYyBsaWNlbnNlIHByYWN0aWNlcy4gTWFueSBwZW9wbGUgaGF2ZSBtYWRlIGdlbmVyb3VzIGNvbnRyaWJ1dGlvbnMgdG8gdGhlIHdpZGUgcmFuZ2Ugb2Ygc29mdHdhcmUgZGlzdHJpYnV0ZWQgdGhyb3VnaCB0aGF0IHN5c3RlbSBpbiByZWxpYW5jZSBvbiBjb25zaXN0ZW50IGFwcGxpY2F0aW9uIG9mIHRoYXQgc3lzdGVtOyBpdCBpcyB1cCB0byB0aGUgYXV0aG9yL2Rvbm9yIHRvIGRlY2lkZSBpZiBoZSBvciBzaGUgaXMgd2lsbGluZyB0byBkaXN0cmlidXRlIHNvZnR3YXJlIHRocm91Z2ggYW55IG90aGVyIHN5c3RlbSBhbmQgYSBsaWNlbnNlZSBjYW5ub3QgaW1wb3NlIHRoYXQgY2hvaWNlLgorCitUaGlzIHNlY3Rpb24gaXMgaW50ZW5kZWQgdG8gbWFrZSB0aG9yb3VnaGx5IGNsZWFyIHdoYXQgaXMgYmVsaWV2ZWQgdG8gYmUgYSBjb25zZXF1ZW5jZSBvZiB0aGUgcmVzdCBvZiB0aGlzIExpY2Vuc2UuCisKKzguIElmIHRoZSBkaXN0cmlidXRpb24gYW5kL29yIHVzZSBvZiB0aGUgUHJvZ3JhbSBpcyByZXN0cmljdGVkIGluIGNlcnRhaW4gY291bnRyaWVzIGVpdGhlciBieSBwYXRlbnRzIG9yIGJ5IGNvcHlyaWdodGVkIGludGVyZmFjZXMsIHRoZSBvcmlnaW5hbCBjb3B5cmlnaHQgaG9sZGVyIHdobyBwbGFjZXMgdGhlIFByb2dyYW0gdW5kZXIgdGhpcyBMaWNlbnNlIG1heSBhZGQgYW4gZXhwbGljaXQgZ2VvZ3JhcGhpY2FsIGRpc3RyaWJ1dGlvbiBsaW1pdGF0aW9uIGV4Y2x1ZGluZyB0aG9zZSBjb3VudHJpZXMsIHNvIHRoYXQgZGlzdHJpYnV0aW9uIGlzIHBlcm1pdHRlZCBvbmx5IGluIG9yIGFtb25nIGNvdW50cmllcyBub3QgdGh1cyBleGNsdWRlZC4gSW4gc3VjaCBjYXNlLCB0aGlzIExpY2Vuc2UgaW5jb3Jwb3JhdGVzIHRoZSBsaW1pdGF0aW9uIGFzIGlmIHdyaXR0ZW4gaW4gdGhlIGJvZHkgb2YgdGhpcyBMaWNlbnNlLgorCis5LiBUaGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIG1heSBwdWJsaXNoIHJldmlzZWQgYW5kL29yIG5ldyB2ZXJzaW9ucyBvZiB0aGUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmcm9tIHRpbWUgdG8gdGltZS4gU3VjaCBuZXcgdmVyc2lvbnMgd2lsbCBiZSBzaW1pbGFyIGluIHNwaXJpdCB0byB0aGUgcHJlc2VudCB2ZXJzaW9uLCBidXQgbWF5IGRpZmZlciBpbiBkZXRhaWwgdG8gYWRkcmVzcyBuZXcgcHJvYmxlbXMgb3IgY29uY2VybnMuCisKK0VhY2ggdmVyc2lvbiBpcyBnaXZlbiBhIGRpc3Rpbmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLiBJZiB0aGUgUHJvZ3JhbSBzcGVjaWZpZXMgYSB2ZXJzaW9uIG51bWJlciBvZiB0aGlzIExpY2Vuc2Ugd2hpY2ggYXBwbGllcyB0byBpdCBhbmQgImFueSBsYXRlciB2ZXJzaW9uIiwgeW91IGhhdmUgdGhlIG9wdGlvbiBvZiBmb2xsb3dpbmcgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGVpdGhlciBvZiB0aGF0IHZlcnNpb24gb3Igb2YgYW55IGxhdGVyIHZlcnNpb24gcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uIElmIHRoZSBQcm9ncmFtIGRvZXMgbm90IHNwZWNpZnkgYSB2ZXJzaW9uIG51bWJlciBvZiB0aGlzIExpY2Vuc2UsIHlvdSBtYXkgY2hvb3NlIGFueSB2ZXJzaW9uIGV2ZXIgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCisKKzEwLiBJZiB5b3Ugd2lzaCB0byBpbmNvcnBvcmF0ZSBwYXJ0cyBvZiB0aGUgUHJvZ3JhbSBpbnRvIG90aGVyIGZyZWUgcHJvZ3JhbXMgd2hvc2UgZGlzdHJpYnV0aW9uIGNvbmRpdGlvbnMgYXJlIGRpZmZlcmVudCwgd3JpdGUgdG8gdGhlIGF1dGhvciB0byBhc2sgZm9yIHBlcm1pc3Npb24uIEZvciBzb2Z0d2FyZSB3aGljaCBpcyBjb3B5cmlnaHRlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyB3ZSBzb21ldGltZXMgbWFrZSBleGNlcHRpb25zIGZvciB0aGlzLiBPdXIgZGVjaXNpb24gd2lsbCBiZSBndWlkZWQgYnkgdGhlIHR3byBnb2FscyBvZiBwcmVzZXJ2aW5nIHRoZSBmcmVlIHN0YXR1cyBvZiBhbGwgZGVyaXZhdGl2ZXMgb2Ygb3VyIGZyZWUgc29mdHdhcmUgYW5kIG9mIHByb21vdGluZyB0aGUgc2hhcmluZyBhbmQgcmV1c2Ugb2Ygc29mdHdhcmUgZ2VuZXJhbGx5LgorCitOTyBXQVJSQU5UWQorCisxMS4gQkVDQVVTRSBUSEUgUFJPR1JBTSBJUyBMSUNFTlNFRCBGUkVFIE9GIENIQVJHRSwgVEhFUkUgSVMgTk8gV0FSUkFOVFkgRk9SIFRIRSBQUk9HUkFNLCBUTyBUSEUgRVhURU5UIFBFUk1JVFRFRCBCWSBBUFBMSUNBQkxFIExBVy4gRVhDRVBUIFdIRU4gT1RIRVJXSVNFIFNUQVRFRCBJTiBXUklUSU5HIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQvT1IgT1RIRVIgUEFSVElFUyBQUk9WSURFIFRIRSBQUk9HUkFNICJBUyBJUyIgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1NFRCBPUiBJTVBMSUVELCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBUSEUgRU5USVJFIFJJU0sgQVMgVE8gVEhFIFFVQUxJVFkgQU5EIFBFUkZPUk1BTkNFIE9GIFRIRSBQUk9HUkFNIElTIFdJVEggWU9VLiBTSE9VTEQgVEhFIFBST0dSQU0gUFJPVkUgREVGRUNUSVZFLCBZT1UgQVNTVU1FIFRIRSBDT1NUIE9GIEFMTCBORUNFU1NBUlkgU0VSVklDSU5HLCBSRVBBSVIgT1IgQ09SUkVDVElPTi4KKworMTIuIElOIE5PIEVWRU5UIFVOTEVTUyBSRVFVSVJFRCBCWSBBUFBMSUNBQkxFIExBVyBPUiBBR1JFRUQgVE8gSU4gV1JJVElORyBXSUxMIEFOWSBDT1BZUklHSFQgSE9MREVSLCBPUiBBTlkgT1RIRVIgUEFSVFkgV0hPIE1BWSBNT0RJRlkgQU5EL09SIFJFRElTVFJJQlVURSBUSEUgUFJPR1JBTSBBUyBQRVJNSVRURUQgQUJPVkUsIEJFIExJQUJMRSBUTyBZT1UgRk9SIERBTUFHRVMsIElOQ0xVRElORyBBTlkgR0VORVJBTCwgU1BFQ0lBTCwgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgQVJJU0lORyBPVVQgT0YgVEhFIFVTRSBPUiBJTkFCSUxJVFkgVE8gVVNFIFRIRSBQUk9HUkFNIChJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIExPU1MgT0YgREFUQSBPUiBEQVRBIEJFSU5HIFJFTkRFUkVEIElOQUNDVVJBVEUgT1IgTE9TU0VTIFNVU1RBSU5FRCBCWSBZT1UgT1IgVEhJUkQgUEFSVElFUyBPUiBBIEZBSUxVUkUgT0YgVEhFIFBST0dSQU0gVE8gT1BFUkFURSBXSVRIIEFOWSBPVEhFUiBQUk9HUkFNUyksIEVWRU4gSUYgU1VDSCBIT0xERVIgT1IgT1RIRVIgUEFSVFkgSEFTIEJFRU4gQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0VTLgorCitFTkQgT0YgVEVSTVMgQU5EIENPTkRJVElPTlMKKworCitIb3cgdG8gQXBwbHkgVGhlc2UgVGVybXMgdG8gWW91ciBOZXcgUHJvZ3JhbXMKKworSWYgeW91IGRldmVsb3AgYSBuZXcgcHJvZ3JhbSwgYW5kIHlvdSB3YW50IGl0IHRvIGJlIG9mIHRoZSBncmVhdGVzdCBwb3NzaWJsZSB1c2UgdG8gdGhlIHB1YmxpYywgdGhlIGJlc3Qgd2F5IHRvIGFjaGlldmUgdGhpcyBpcyB0byBtYWtlIGl0IGZyZWUgc29mdHdhcmUgd2hpY2ggZXZlcnlvbmUgY2FuIHJlZGlzdHJpYnV0ZSBhbmQgY2hhbmdlIHVuZGVyIHRoZXNlIHRlcm1zLgorCitUbyBkbyBzbywgYXR0YWNoIHRoZSBmb2xsb3dpbmcgbm90aWNlcyB0byB0aGUgcHJvZ3JhbS4gSXQgaXMgc2FmZXN0IHRvIGF0dGFjaCB0aGVtIHRvIHRoZSBzdGFydCBvZiBlYWNoIHNvdXJjZSBmaWxlIHRvIG1vc3QgZWZmZWN0aXZlbHkgY29udmV5IHRoZSBleGNsdXNpb24gb2Ygd2FycmFudHk7IGFuZCBlYWNoIGZpbGUgc2hvdWxkIGhhdmUgYXQgbGVhc3QgdGhlICJjb3B5cmlnaHQiIGxpbmUgYW5kIGEgcG9pbnRlciB0byB3aGVyZSB0aGUgZnVsbCBub3RpY2UgaXMgZm91bmQuCisKKyAgIE9uZSBsaW5lIHRvIGdpdmUgdGhlIHByb2dyYW0ncyBuYW1lIGFuZCBhIGJyaWVmIGlkZWEgb2Ygd2hhdCBpdCBkb2VzLgorCisgICBDb3B5cmlnaHQgKEMpCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNyBVU0EKKworQWxzbyBhZGQgaW5mb3JtYXRpb24gb24gaG93IHRvIGNvbnRhY3QgeW91IGJ5IGVsZWN0cm9uaWMgYW5kIHBhcGVyIG1haWwuCisKK0lmIHRoZSBwcm9ncmFtIGlzIGludGVyYWN0aXZlLCBtYWtlIGl0IG91dHB1dCBhIHNob3J0IG5vdGljZSBsaWtlIHRoaXMgd2hlbiBpdCBzdGFydHMgaW4gYW4gaW50ZXJhY3RpdmUgbW9kZToKKworICAgR25vbW92aXNpb24gdmVyc2lvbiA2OSwgQ29weXJpZ2h0IChDKSB5ZWFyIG5hbWUgb2YgYXV0aG9yCisgICBHbm9tb3Zpc2lvbiBjb21lcyB3aXRoIEFCU09MVVRFTFkgTk8gV0FSUkFOVFk7IGZvciBkZXRhaWxzIHR5cGUgYHNob3cgdycuIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZSwgYW5kIHlvdSBhcmUgd2VsY29tZSB0byByZWRpc3RyaWJ1dGUgaXQgdW5kZXIgY2VydGFpbiBjb25kaXRpb25zOyB0eXBlIGBzaG93IGMnIGZvciBkZXRhaWxzLgorCitUaGUgaHlwb3RoZXRpY2FsIGNvbW1hbmRzIGBzaG93IHcnIGFuZCBgc2hvdyBjJyBzaG91bGQgc2hvdyB0aGUgYXBwcm9wcmlhdGUgcGFydHMgb2YgdGhlIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuIE9mIGNvdXJzZSwgdGhlIGNvbW1hbmRzIHlvdSB1c2UgbWF5IGJlIGNhbGxlZCBzb21ldGhpbmcgb3RoZXIgdGhhbiBgc2hvdyB3JyBhbmQgYHNob3cgYyc7IHRoZXkgY291bGQgZXZlbiBiZSBtb3VzZS1jbGlja3Mgb3IgbWVudSBpdGVtcy0td2hhdGV2ZXIgc3VpdHMgeW91ciBwcm9ncmFtLgorCitZb3Ugc2hvdWxkIGFsc28gZ2V0IHlvdXIgZW1wbG95ZXIgKGlmIHlvdSB3b3JrIGFzIGEgcHJvZ3JhbW1lcikgb3IgeW91ciBzY2hvb2wsIGlmIGFueSwgdG8gc2lnbiBhICJjb3B5cmlnaHQgZGlzY2xhaW1lciIgZm9yIHRoZSBwcm9ncmFtLCBpZiBuZWNlc3NhcnkuIEhlcmUgaXMgYSBzYW1wbGU7IGFsdGVyIHRoZSBuYW1lczoKKworICAgWW95b2R5bmUsIEluYy4sIGhlcmVieSBkaXNjbGFpbXMgYWxsIGNvcHlyaWdodCBpbnRlcmVzdCBpbiB0aGUgcHJvZ3JhbSBgR25vbW92aXNpb24nICh3aGljaCBtYWtlcyBwYXNzZXMgYXQgY29tcGlsZXJzKSB3cml0dGVuIGJ5IEphbWVzIEhhY2tlci4KKworICAgc2lnbmF0dXJlIG9mIFR5IENvb24sIDEgQXByaWwgMTk4OQorICAgVHkgQ29vbiwgUHJlc2lkZW50IG9mIFZpY2UKKworVGhpcyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGRvZXMgbm90IHBlcm1pdCBpbmNvcnBvcmF0aW5nIHlvdXIgcHJvZ3JhbSBpbnRvIHByb3ByaWV0YXJ5IHByb2dyYW1zLiBJZiB5b3VyIHByb2dyYW0gaXMgYSBzdWJyb3V0aW5lIGxpYnJhcnksIHlvdSBtYXkgY29uc2lkZXIgaXQgbW9yZSB1c2VmdWwgdG8gcGVybWl0IGxpbmtpbmcgcHJvcHJpZXRhcnkgYXBwbGljYXRpb25zIHdpdGggdGhlIGxpYnJhcnkuIElmIHRoaXMgaXMgd2hhdCB5b3Ugd2FudCB0byBkbywgdXNlIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGluc3RlYWQgb2YgdGhpcyBMaWNlbnNlLgorCisKKyJDTEFTU1BBVEgiIEVYQ0VQVElPTiBUTyBUSEUgR1BMIFZFUlNJT04gMgorCitDZXJ0YWluIHNvdXJjZSBmaWxlcyBkaXN0cmlidXRlZCBieSBPcmFjbGUgYXJlIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjbGFyaWZpY2F0aW9uIGFuZCBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR1BMIFZlcnNpb24gMiwgYnV0IG9ubHkgd2hlcmUgT3JhY2xlIGhhcyBleHByZXNzbHkgaW5jbHVkZWQgaW4gdGhlIHBhcnRpY3VsYXIgc291cmNlIGZpbGUncyBoZWFkZXIgdGhlIHdvcmRzICJPcmFjbGUgZGVzaWduYXRlcyB0aGlzIHBhcnRpY3VsYXIgZmlsZSBhcyBzdWJqZWN0IHRvIHRoZSAiQ2xhc3NwYXRoIiBleGNlcHRpb24gYXMgcHJvdmlkZWQgYnkgT3JhY2xlIGluIHRoZSBMaWNlbnNlIGZpbGUgdGhhdCBhY2NvbXBhbmllZCB0aGlzIGNvZGUuIgorCitMaW5raW5nIHRoaXMgbGlicmFyeSBzdGF0aWNhbGx5IG9yIGR5bmFtaWNhbGx5IHdpdGggb3RoZXIgbW9kdWxlcyBpcyBtYWtpbmcgYSBjb21iaW5lZCB3b3JrIGJhc2VkIG9uIHRoaXMgbGlicmFyeS4gIFRodXMsIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyIGNvdmVyIHRoZSB3aG9sZSBjb21iaW5hdGlvbi4KKworQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiwgdGhlIGNvcHlyaWdodCBob2xkZXJzIG9mIHRoaXMgbGlicmFyeSBnaXZlIHlvdSBwZXJtaXNzaW9uIHRvIGxpbmsgdGhpcyBsaWJyYXJ5IHdpdGggaW5kZXBlbmRlbnQgbW9kdWxlcyB0byBwcm9kdWNlIGFuIGV4ZWN1dGFibGUsIHJlZ2FyZGxlc3Mgb2YgdGhlIGxpY2Vuc2UgdGVybXMgb2YgdGhlc2UgaW5kZXBlbmRlbnQgbW9kdWxlcywgYW5kIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUgdGhlIHJlc3VsdGluZyBleGVjdXRhYmxlIHVuZGVyIHRlcm1zIG9mIHlvdXIgY2hvaWNlLCBwcm92aWRlZCB0aGF0IHlvdSBhbHNvIG1lZXQsIGZvciBlYWNoIGxpbmtlZCBpbmRlcGVuZGVudCBtb2R1bGUsIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgbGljZW5zZSBvZiB0aGF0IG1vZHVsZS4gIEFuIGluZGVwZW5kZW50IG1vZHVsZSBpcyBhIG1vZHVsZSB3aGljaCBpcyBub3QgZGVyaXZlZCBmcm9tIG9yIGJhc2VkIG9uIHRoaXMgbGlicmFyeS4gIElmIHlvdSBtb2RpZnkgdGhpcyBsaWJyYXJ5LCB5b3UgbWF5IGV4dGVuZCB0aGlzIGV4Y2VwdGlvbiB0byB5b3VyIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIGJ1dCB5b3UgYXJlIG5vdCBvYmxpZ2F0ZWQgdG8gZG8gc28uICBJZiB5b3UgZG8gbm90IHdpc2ggdG8gZG8gc28sIGRlbGV0ZSB0aGlzIGV4Y2VwdGlvbiBzdGF0ZW1lbnQgZnJvbSB5b3VyIHZlcnNpb24uCisgCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ZvciAKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvbGliL2pheGVuLWphci0xLjEuNC5qYXIKKworICRJZDogTElDRU5TRS50eHQsdiAxLjUgMjAwNi8wMi8wNSAyMTo0OTowNCBlbGhhcm8gRXhwICQKKworIENvcHlyaWdodCAyMDAzLTIwMDYgVGhlIFdlcmtlbiBDb21wYW55LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorIAorIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyBtZXQ6CisKKyAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKworICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisKKyAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBKYXhlbiBQcm9qZWN0IG5vciB0aGUgbmFtZXMgb2YgaXRzCisgICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIAorICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKworVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMKK0lTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRAorVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBCitQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIKK09SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCitQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GCitMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCitTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitGb3IgbWFpbC1qYXItMS40LjQuamFyCisKK0NPTU1PTiBERVZFTE9QTUVOVCBBTkQgRElTVFJJQlVUSU9OIExJQ0VOU0UgKENEREwpIFZlcnNpb24gMS4wCisKKzEuIERlZmluaXRpb25zLgorCisgICAxLjEuIENvbnRyaWJ1dG9yLiBtZWFucyBlYWNoIGluZGl2aWR1YWwgb3IgZW50aXR5IHRoYXQgY3JlYXRlcyBvciBjb250cmlidXRlcyB0byB0aGUgY3JlYXRpb24gb2YgTW9kaWZpY2F0aW9ucy4KKworICAgMS4yLiBDb250cmlidXRvciBWZXJzaW9uLiBtZWFucyB0aGUgY29tYmluYXRpb24gb2YgdGhlIE9yaWdpbmFsIFNvZnR3YXJlLCBwcmlvciBNb2RpZmljYXRpb25zIHVzZWQgYnkgYSBDb250cmlidXRvciAoaWYgYW55KSwgYW5kIHRoZSBNb2RpZmljYXRpb25zIG1hZGUgYnkgdGhhdCBwYXJ0aWN1bGFyIENvbnRyaWJ1dG9yLgorCisgICAxLjMuIENvdmVyZWQgU29mdHdhcmUuIG1lYW5zIChhKSB0aGUgT3JpZ2luYWwgU29mdHdhcmUsIG9yIChiKSBNb2RpZmljYXRpb25zLCBvciAoYykgdGhlIGNvbWJpbmF0aW9uIG9mIGZpbGVzIGNvbnRhaW5pbmcgT3JpZ2luYWwgU29mdHdhcmUgd2l0aCBmaWxlcyBjb250YWluaW5nIE1vZGlmaWNhdGlvbnMsIGluIGVhY2ggY2FzZSBpbmNsdWRpbmcgcG9ydGlvbnMgdGhlcmVvZi4KKworICAgMS40LiBFeGVjdXRhYmxlLiBtZWFucyB0aGUgQ292ZXJlZCBTb2Z0d2FyZSBpbiBhbnkgZm9ybSBvdGhlciB0aGFuIFNvdXJjZSBDb2RlLgorCisgICAxLjUuIEluaXRpYWwgRGV2ZWxvcGVyLiBtZWFucyB0aGUgaW5kaXZpZHVhbCBvciBlbnRpdHkgdGhhdCBmaXJzdCBtYWtlcyBPcmlnaW5hbCBTb2Z0d2FyZSBhdmFpbGFibGUgdW5kZXIgdGhpcyBMaWNlbnNlLgorCisgICAxLjYuIExhcmdlciBXb3JrLiBtZWFucyBhIHdvcmsgd2hpY2ggY29tYmluZXMgQ292ZXJlZCBTb2Z0d2FyZSBvciBwb3J0aW9ucyB0aGVyZW9mIHdpdGggY29kZSBub3QgZ292ZXJuZWQgYnkgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZS4KKworICAgMS43LiBMaWNlbnNlLiBtZWFucyB0aGlzIGRvY3VtZW50LgorCisgICAxLjguIExpY2Vuc2FibGUuIG1lYW5zIGhhdmluZyB0aGUgcmlnaHQgdG8gZ3JhbnQsIHRvIHRoZSBtYXhpbXVtIGV4dGVudCBwb3NzaWJsZSwgd2hldGhlciBhdCB0aGUgdGltZSBvZiB0aGUgaW5pdGlhbCBncmFudCBvciBzdWJzZXF1ZW50bHkgYWNxdWlyZWQsIGFueSBhbmQgYWxsIG9mIHRoZSByaWdodHMgY29udmV5ZWQgaGVyZWluLgorCisgICAxLjkuIE1vZGlmaWNhdGlvbnMuIG1lYW5zIHRoZSBTb3VyY2UgQ29kZSBhbmQgRXhlY3V0YWJsZSBmb3JtIG9mIGFueSBvZiB0aGUgZm9sbG93aW5nOgorCisgICAgICAgIEEuIEFueSBmaWxlIHRoYXQgcmVzdWx0cyBmcm9tIGFuIGFkZGl0aW9uIHRvLCBkZWxldGlvbiBmcm9tIG9yIG1vZGlmaWNhdGlvbiBvZiB0aGUgY29udGVudHMgb2YgYSBmaWxlIGNvbnRhaW5pbmcgT3JpZ2luYWwgU29mdHdhcmUgb3IgcHJldmlvdXMgTW9kaWZpY2F0aW9uczsKKworICAgICAgICBCLiBBbnkgbmV3IGZpbGUgdGhhdCBjb250YWlucyBhbnkgcGFydCBvZiB0aGUgT3JpZ2luYWwgU29mdHdhcmUgb3IgcHJldmlvdXMgTW9kaWZpY2F0aW9uOyBvcgorCisgICAgICAgIEMuIEFueSBuZXcgZmlsZSB0aGF0IGlzIGNvbnRyaWJ1dGVkIG9yIG90aGVyd2lzZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhpcyBMaWNlbnNlLgorCisgICAxLjEwLiBPcmlnaW5hbCBTb2Z0d2FyZS4gbWVhbnMgdGhlIFNvdXJjZSBDb2RlIGFuZCBFeGVjdXRhYmxlIGZvcm0gb2YgY29tcHV0ZXIgc29mdHdhcmUgY29kZSB0aGF0IGlzIG9yaWdpbmFsbHkgcmVsZWFzZWQgdW5kZXIgdGhpcyBMaWNlbnNlLgorCisgICAxLjExLiBQYXRlbnQgQ2xhaW1zLiBtZWFucyBhbnkgcGF0ZW50IGNsYWltKHMpLCBub3cgb3duZWQgb3IgaGVyZWFmdGVyIGFjcXVpcmVkLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uLCBtZXRob2QsIHByb2Nlc3MsIGFuZCBhcHBhcmF0dXMgY2xhaW1zLCBpbiBhbnkgcGF0ZW50IExpY2Vuc2FibGUgYnkgZ3JhbnRvci4KKworICAgMS4xMi4gU291cmNlIENvZGUuIG1lYW5zIChhKSB0aGUgY29tbW9uIGZvcm0gb2YgY29tcHV0ZXIgc29mdHdhcmUgY29kZSBpbiB3aGljaCBtb2RpZmljYXRpb25zIGFyZSBtYWRlIGFuZCAoYikgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGluY2x1ZGVkIGluIG9yIHdpdGggc3VjaCBjb2RlLgorCisgICAxLjEzLiBZb3UuIChvciAuWW91ci4pIG1lYW5zIGFuIGluZGl2aWR1YWwgb3IgYSBsZWdhbCBlbnRpdHkgZXhlcmNpc2luZyByaWdodHMgdW5kZXIsIGFuZCBjb21wbHlpbmcgd2l0aCBhbGwgb2YgdGhlIHRlcm1zIG9mLCB0aGlzIExpY2Vuc2UuIEZvciBsZWdhbCBlbnRpdGllcywgLllvdS4gaW5jbHVkZXMgYW55IGVudGl0eSB3aGljaCBjb250cm9scywgaXMgY29udHJvbGxlZCBieSwgb3IgaXMgdW5kZXIgY29tbW9uIGNvbnRyb2wgd2l0aCBZb3UuIEZvciBwdXJwb3NlcyBvZiB0aGlzIGRlZmluaXRpb24sIC5jb250cm9sLiBtZWFucyAoYSkgdGhlIHBvd2VyLCBkaXJlY3Qgb3IgaW5kaXJlY3QsIHRvIGNhdXNlIHRoZSBkaXJlY3Rpb24gb3IgbWFuYWdlbWVudCBvZiBzdWNoIGVudGl0eSwgd2hldGhlciBieSBjb250cmFjdCBvciBvdGhlcndpc2UsIG9yIChiKSBvd25lcnNoaXAgb2YgbW9yZSB0aGFuIGZpZnR5IHBlcmNlbnQgKDUwJSkgb2YgdGhlIG91dHN0YW5kaW5nIHNoYXJlcyBvciBiZW5lZmljaWFsIG93bmVyc2hpcCBvZiBzdWNoIGVudGl0eS4KKworMi4gTGljZW5zZSBHcmFudHMuCisKKyAgICAgIDIuMS4gVGhlIEluaXRpYWwgRGV2ZWxvcGVyIEdyYW50LgorCisgICAgICBDb25kaXRpb25lZCB1cG9uIFlvdXIgY29tcGxpYW5jZSB3aXRoIFNlY3Rpb24gMy4xIGJlbG93IGFuZCBzdWJqZWN0IHRvIHRoaXJkIHBhcnR5IGludGVsbGVjdHVhbCBwcm9wZXJ0eSBjbGFpbXMsIHRoZSBJbml0aWFsIERldmVsb3BlciBoZXJlYnkgZ3JhbnRzIFlvdSBhIHdvcmxkLXdpZGUsIHJveWFsdHktZnJlZSwgbm9uLWV4Y2x1c2l2ZSBsaWNlbnNlOgorCisgICAgICAgICAoYSkgdW5kZXIgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyAob3RoZXIgdGhhbiBwYXRlbnQgb3IgdHJhZGVtYXJrKSBMaWNlbnNhYmxlIGJ5IEluaXRpYWwgRGV2ZWxvcGVyLCB0byB1c2UsIHJlcHJvZHVjZSwgbW9kaWZ5LCBkaXNwbGF5LCBwZXJmb3JtLCBzdWJsaWNlbnNlIGFuZCBkaXN0cmlidXRlIHRoZSBPcmlnaW5hbCBTb2Z0d2FyZSAob3IgcG9ydGlvbnMgdGhlcmVvZiksIHdpdGggb3Igd2l0aG91dCBNb2RpZmljYXRpb25zLCBhbmQvb3IgYXMgcGFydCBvZiBhIExhcmdlciBXb3JrOyBhbmQKKworICAgICAgICAgKGIpIHVuZGVyIFBhdGVudCBDbGFpbXMgaW5mcmluZ2VkIGJ5IHRoZSBtYWtpbmcsIHVzaW5nIG9yIHNlbGxpbmcgb2YgT3JpZ2luYWwgU29mdHdhcmUsIHRvIG1ha2UsIGhhdmUgbWFkZSwgdXNlLCBwcmFjdGljZSwgc2VsbCwgYW5kIG9mZmVyIGZvciBzYWxlLCBhbmQvb3Igb3RoZXJ3aXNlIGRpc3Bvc2Ugb2YgdGhlIE9yaWdpbmFsIFNvZnR3YXJlIChvciBwb3J0aW9ucyB0aGVyZW9mKS4KKworICAgICAgICAoYykgVGhlIGxpY2Vuc2VzIGdyYW50ZWQgaW4gU2VjdGlvbnMgMi4xKGEpIGFuZCAoYikgYXJlIGVmZmVjdGl2ZSBvbiB0aGUgZGF0ZSBJbml0aWFsIERldmVsb3BlciBmaXJzdCBkaXN0cmlidXRlcyBvciBvdGhlcndpc2UgbWFrZXMgdGhlIE9yaWdpbmFsIFNvZnR3YXJlIGF2YWlsYWJsZSB0byBhIHRoaXJkIHBhcnR5IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UuCisKKyAgICAgICAgKGQpIE5vdHdpdGhzdGFuZGluZyBTZWN0aW9uIDIuMShiKSBhYm92ZSwgbm8gcGF0ZW50IGxpY2Vuc2UgaXMgZ3JhbnRlZDogKDEpIGZvciBjb2RlIHRoYXQgWW91IGRlbGV0ZSBmcm9tIHRoZSBPcmlnaW5hbCBTb2Z0d2FyZSwgb3IgKDIpIGZvciBpbmZyaW5nZW1lbnRzIGNhdXNlZCBieTogKGkpIHRoZSBtb2RpZmljYXRpb24gb2YgdGhlIE9yaWdpbmFsIFNvZnR3YXJlLCBvciAoaWkpIHRoZSBjb21iaW5hdGlvbiBvZiB0aGUgT3JpZ2luYWwgU29mdHdhcmUgd2l0aCBvdGhlciBzb2Z0d2FyZSBvciBkZXZpY2VzLgorCisgICAgMi4yLiBDb250cmlidXRvciBHcmFudC4KKworICAgIENvbmRpdGlvbmVkIHVwb24gWW91ciBjb21wbGlhbmNlIHdpdGggU2VjdGlvbiAzLjEgYmVsb3cgYW5kIHN1YmplY3QgdG8gdGhpcmQgcGFydHkgaW50ZWxsZWN0dWFsIHByb3BlcnR5IGNsYWltcywgZWFjaCBDb250cmlidXRvciBoZXJlYnkgZ3JhbnRzIFlvdSBhIHdvcmxkLXdpZGUsIHJveWFsdHktZnJlZSwgbm9uLWV4Y2x1c2l2ZSBsaWNlbnNlOgorCisgICAgICAgIChhKSB1bmRlciBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIChvdGhlciB0aGFuIHBhdGVudCBvciB0cmFkZW1hcmspIExpY2Vuc2FibGUgYnkgQ29udHJpYnV0b3IgdG8gdXNlLCByZXByb2R1Y2UsIG1vZGlmeSwgZGlzcGxheSwgcGVyZm9ybSwgc3VibGljZW5zZSBhbmQgZGlzdHJpYnV0ZSB0aGUgTW9kaWZpY2F0aW9ucyBjcmVhdGVkIGJ5IHN1Y2ggQ29udHJpYnV0b3IgKG9yIHBvcnRpb25zIHRoZXJlb2YpLCBlaXRoZXIgb24gYW4gdW5tb2RpZmllZCBiYXNpcywgd2l0aCBvdGhlciBNb2RpZmljYXRpb25zLCBhcyBDb3ZlcmVkIFNvZnR3YXJlIGFuZC9vciBhcyBwYXJ0IG9mIGEgTGFyZ2VyIFdvcms7IGFuZAorCisgICAgICAgIChiKSB1bmRlciBQYXRlbnQgQ2xhaW1zIGluZnJpbmdlZCBieSB0aGUgbWFraW5nLCB1c2luZywgb3Igc2VsbGluZyBvZiBNb2RpZmljYXRpb25zIG1hZGUgYnkgdGhhdCBDb250cmlidXRvciBlaXRoZXIgYWxvbmUgYW5kL29yIGluIGNvbWJpbmF0aW9uIHdpdGggaXRzIENvbnRyaWJ1dG9yIFZlcnNpb24gKG9yIHBvcnRpb25zIG9mIHN1Y2ggY29tYmluYXRpb24pLCB0byBtYWtlLCB1c2UsIHNlbGwsIG9mZmVyIGZvciBzYWxlLCBoYXZlIG1hZGUsIGFuZC9vciBvdGhlcndpc2UgZGlzcG9zZSBvZjogKDEpIE1vZGlmaWNhdGlvbnMgbWFkZSBieSB0aGF0IENvbnRyaWJ1dG9yIChvciBwb3J0aW9ucyB0aGVyZW9mKTsgYW5kICgyKSB0aGUgY29tYmluYXRpb24gb2YgTW9kaWZpY2F0aW9ucyBtYWRlIGJ5IHRoYXQgQ29udHJpYnV0b3Igd2l0aCBpdHMgQ29udHJpYnV0b3IgVmVyc2lvbiAob3IgcG9ydGlvbnMgb2Ygc3VjaCBjb21iaW5hdGlvbikuCisKKyAgICAgICAgKGMpIFRoZSBsaWNlbnNlcyBncmFudGVkIGluIFNlY3Rpb25zIDIuMihhKSBhbmQgMi4yKGIpIGFyZSBlZmZlY3RpdmUgb24gdGhlIGRhdGUgQ29udHJpYnV0b3IgZmlyc3QgZGlzdHJpYnV0ZXMgb3Igb3RoZXJ3aXNlIG1ha2VzIHRoZSBNb2RpZmljYXRpb25zIGF2YWlsYWJsZSB0byBhIHRoaXJkIHBhcnR5LgorCisgICAgICAgIChkKSBOb3R3aXRoc3RhbmRpbmcgU2VjdGlvbiAyLjIoYikgYWJvdmUsIG5vIHBhdGVudCBsaWNlbnNlIGlzIGdyYW50ZWQ6ICgxKSBmb3IgYW55IGNvZGUgdGhhdCBDb250cmlidXRvciBoYXMgZGVsZXRlZCBmcm9tIHRoZSBDb250cmlidXRvciBWZXJzaW9uOyAoMikgZm9yIGluZnJpbmdlbWVudHMgY2F1c2VkIGJ5OiAoaSkgdGhpcmQgcGFydHkgbW9kaWZpY2F0aW9ucyBvZiBDb250cmlidXRvciBWZXJzaW9uLCBvciAoaWkpIHRoZSBjb21iaW5hdGlvbiBvZiBNb2RpZmljYXRpb25zIG1hZGUgYnkgdGhhdCBDb250cmlidXRvciB3aXRoIG90aGVyIHNvZnR3YXJlIChleGNlcHQgYXMgcGFydCBvZiB0aGUgQ29udHJpYnV0b3IgVmVyc2lvbikgb3Igb3RoZXIgZGV2aWNlczsgb3IgKDMpIHVuZGVyIFBhdGVudCBDbGFpbXMgaW5mcmluZ2VkIGJ5IENvdmVyZWQgU29mdHdhcmUgaW4gdGhlIGFic2VuY2Ugb2YgTW9kaWZpY2F0aW9ucyBtYWRlIGJ5IHRoYXQgQ29udHJpYnV0b3IuCisKKzMuIERpc3RyaWJ1dGlvbiBPYmxpZ2F0aW9ucy4KKworICAgICAgMy4xLiBBdmFpbGFiaWxpdHkgb2YgU291cmNlIENvZGUuCisgICAgICBBbnkgQ292ZXJlZCBTb2Z0d2FyZSB0aGF0IFlvdSBkaXN0cmlidXRlIG9yIG90aGVyd2lzZSBtYWtlIGF2YWlsYWJsZSBpbiBFeGVjdXRhYmxlIGZvcm0gbXVzdCBhbHNvIGJlIG1hZGUgYXZhaWxhYmxlIGluIFNvdXJjZSBDb2RlIGZvcm0gYW5kIHRoYXQgU291cmNlIENvZGUgZm9ybSBtdXN0IGJlIGRpc3RyaWJ1dGVkIG9ubHkgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZS4gWW91IG11c3QgaW5jbHVkZSBhIGNvcHkgb2YgdGhpcyBMaWNlbnNlIHdpdGggZXZlcnkgY29weSBvZiB0aGUgU291cmNlIENvZGUgZm9ybSBvZiB0aGUgQ292ZXJlZCBTb2Z0d2FyZSBZb3UgZGlzdHJpYnV0ZSBvciBvdGhlcndpc2UgbWFrZSBhdmFpbGFibGUuIFlvdSBtdXN0IGluZm9ybSByZWNpcGllbnRzIG9mIGFueSBzdWNoIENvdmVyZWQgU29mdHdhcmUgaW4gRXhlY3V0YWJsZSBmb3JtIGFzIHRvIGhvdyB0aGV5IGNhbiBvYnRhaW4gc3VjaCBDb3ZlcmVkIFNvZnR3YXJlIGluIFNvdXJjZSBDb2RlIGZvcm0gaW4gYSByZWFzb25hYmxlIG1hbm5lciBvbiBvciB0aHJvdWdoIGEgbWVkaXVtIGN1c3RvbWFyaWx5IHVzZWQgZm9yIHNvZnR3YXJlIGV4Y2hhbmdlLgorCisgICAgICAzLjIuIE1vZGlmaWNhdGlvbnMuCisgICAgICBUaGUgTW9kaWZpY2F0aW9ucyB0aGF0IFlvdSBjcmVhdGUgb3IgdG8gd2hpY2ggWW91IGNvbnRyaWJ1dGUgYXJlIGdvdmVybmVkIGJ5IHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UuIFlvdSByZXByZXNlbnQgdGhhdCBZb3UgYmVsaWV2ZSBZb3VyIE1vZGlmaWNhdGlvbnMgYXJlIFlvdXIgb3JpZ2luYWwgY3JlYXRpb24ocykgYW5kL29yIFlvdSBoYXZlIHN1ZmZpY2llbnQgcmlnaHRzIHRvIGdyYW50IHRoZSByaWdodHMgY29udmV5ZWQgYnkgdGhpcyBMaWNlbnNlLgorCisgICAgICAzLjMuIFJlcXVpcmVkIE5vdGljZXMuCisgICAgICBZb3UgbXVzdCBpbmNsdWRlIGEgbm90aWNlIGluIGVhY2ggb2YgWW91ciBNb2RpZmljYXRpb25zIHRoYXQgaWRlbnRpZmllcyBZb3UgYXMgdGhlIENvbnRyaWJ1dG9yIG9mIHRoZSBNb2RpZmljYXRpb24uIFlvdSBtYXkgbm90IHJlbW92ZSBvciBhbHRlciBhbnkgY29weXJpZ2h0LCBwYXRlbnQgb3IgdHJhZGVtYXJrIG5vdGljZXMgY29udGFpbmVkIHdpdGhpbiB0aGUgQ292ZXJlZCBTb2Z0d2FyZSwgb3IgYW55IG5vdGljZXMgb2YgbGljZW5zaW5nIG9yIGFueSBkZXNjcmlwdGl2ZSB0ZXh0IGdpdmluZyBhdHRyaWJ1dGlvbiB0byBhbnkgQ29udHJpYnV0b3Igb3IgdGhlIEluaXRpYWwgRGV2ZWxvcGVyLgorCisgICAgICAzLjQuIEFwcGxpY2F0aW9uIG9mIEFkZGl0aW9uYWwgVGVybXMuCisgICAgICBZb3UgbWF5IG5vdCBvZmZlciBvciBpbXBvc2UgYW55IHRlcm1zIG9uIGFueSBDb3ZlcmVkIFNvZnR3YXJlIGluIFNvdXJjZSBDb2RlIGZvcm0gdGhhdCBhbHRlcnMgb3IgcmVzdHJpY3RzIHRoZSBhcHBsaWNhYmxlIHZlcnNpb24gb2YgdGhpcyBMaWNlbnNlIG9yIHRoZSByZWNpcGllbnRzLiByaWdodHMgaGVyZXVuZGVyLiBZb3UgbWF5IGNob29zZSB0byBvZmZlciwgYW5kIHRvIGNoYXJnZSBhIGZlZSBmb3IsIHdhcnJhbnR5LCBzdXBwb3J0LCBpbmRlbW5pdHkgb3IgbGlhYmlsaXR5IG9ibGlnYXRpb25zIHRvIG9uZSBvciBtb3JlIHJlY2lwaWVudHMgb2YgQ292ZXJlZCBTb2Z0d2FyZS4gSG93ZXZlciwgeW91IG1heSBkbyBzbyBvbmx5IG9uIFlvdXIgb3duIGJlaGFsZiwgYW5kIG5vdCBvbiBiZWhhbGYgb2YgdGhlIEluaXRpYWwgRGV2ZWxvcGVyIG9yIGFueSBDb250cmlidXRvci4gWW91IG11c3QgbWFrZSBpdCBhYnNvbHV0ZWx5IGNsZWFyIHRoYXQgYW55IHN1Y2ggd2FycmFudHksIHN1cHBvcnQsIGluZGVtbml0eSBvciBsaWFiaWxpdHkgb2JsaWdhdGlvbiBpcyBvZmZlcmVkIGJ5IFlvdSBhbG9uZSwgYW5kIFlvdSBoZXJlYnkgYWdyZWUgdG8gaW5kZW1uaWZ5IHRoZSBJbml0aWFsIERldmVsb3BlciBhbmQgZXZlcnkgQ29udHJpYnV0b3IgZm9yIGFueSBsaWFiaWxpdHkgaW5jdXJyZWQgYnkgdGhlIEluaXRpYWwgRGV2ZWxvcGVyIG9yIHN1Y2ggQ29udHJpYnV0b3IgYXMgYSByZXN1bHQgb2Ygd2FycmFudHksIHN1cHBvcnQsIGluZGVtbml0eSBvciBsaWFiaWxpdHkgdGVybXMgWW91IG9mZmVyLgorCisgICAgICAzLjUuIERpc3RyaWJ1dGlvbiBvZiBFeGVjdXRhYmxlIFZlcnNpb25zLgorICAgICAgWW91IG1heSBkaXN0cmlidXRlIHRoZSBFeGVjdXRhYmxlIGZvcm0gb2YgdGhlIENvdmVyZWQgU29mdHdhcmUgdW5kZXIgdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSBvciB1bmRlciB0aGUgdGVybXMgb2YgYSBsaWNlbnNlIG9mIFlvdXIgY2hvaWNlLCB3aGljaCBtYXkgY29udGFpbiB0ZXJtcyBkaWZmZXJlbnQgZnJvbSB0aGlzIExpY2Vuc2UsIHByb3ZpZGVkIHRoYXQgWW91IGFyZSBpbiBjb21wbGlhbmNlIHdpdGggdGhlIHRlcm1zIG9mIHRoaXMgTGljZW5zZSBhbmQgdGhhdCB0aGUgbGljZW5zZSBmb3IgdGhlIEV4ZWN1dGFibGUgZm9ybSBkb2VzIG5vdCBhdHRlbXB0IHRvIGxpbWl0IG9yIGFsdGVyIHRoZSByZWNpcGllbnQucyByaWdodHMgaW4gdGhlIFNvdXJjZSBDb2RlIGZvcm0gZnJvbSB0aGUgcmlnaHRzIHNldCBmb3J0aCBpbiB0aGlzIExpY2Vuc2UuIElmIFlvdSBkaXN0cmlidXRlIHRoZSBDb3ZlcmVkIFNvZnR3YXJlIGluIEV4ZWN1dGFibGUgZm9ybSB1bmRlciBhIGRpZmZlcmVudCBsaWNlbnNlLCBZb3UgbXVzdCBtYWtlIGl0IGFic29sdXRlbHkgY2xlYXIgdGhhdCBhbnkgdGVybXMgd2hpY2ggZGlmZmVyIGZyb20gdGhpcyBMaWNlbnNlIGFyZSBvZmZlcmVkIGJ5IFlvdSBhbG9uZSwgbm90IGJ5IHRoZSBJbml0aWFsIERldmVsb3BlciBvciBDb250cmlidXRvci4gWW91IGhlcmVieSBhZ3JlZSB0byBpbmRlbW5pZnkgdGhlIEluaXRpYWwgRGV2ZWxvcGVyIGFuZCBldmVyeSBDb250cmlidXRvciBmb3IgYW55IGxpYWJpbGl0eSBpbmN1cnJlZCBieSB0aGUgSW5pdGlhbCBEZXZlbG9wZXIgb3Igc3VjaCBDb250cmlidXRvciBhcyBhIHJlc3VsdCBvZiBhbnkgc3VjaCB0ZXJtcyBZb3Ugb2ZmZXIuCisKKyAgICAgIDMuNi4gTGFyZ2VyIFdvcmtzLgorICAgICAgWW91IG1heSBjcmVhdGUgYSBMYXJnZXIgV29yayBieSBjb21iaW5pbmcgQ292ZXJlZCBTb2Z0d2FyZSB3aXRoIG90aGVyIGNvZGUgbm90IGdvdmVybmVkIGJ5IHRoZSB0ZXJtcyBvZiB0aGlzIExpY2Vuc2UgYW5kIGRpc3RyaWJ1dGUgdGhlIExhcmdlciBXb3JrIGFzIGEgc2luZ2xlIHByb2R1Y3QuIEluIHN1Y2ggYSBjYXNlLCBZb3UgbXVzdCBtYWtlIHN1cmUgdGhlIHJlcXVpcmVtZW50cyBvZiB0aGlzIExpY2Vuc2UgYXJlIGZ1bGZpbGxlZCBmb3IgdGhlIENvdmVyZWQgU29mdHdhcmUuCisKKzQuIFZlcnNpb25zIG9mIHRoZSBMaWNlbnNlLgorCisgICAgICA0LjEuIE5ldyBWZXJzaW9ucy4KKyAgICAgIFN1biBNaWNyb3N5c3RlbXMsIEluYy4gaXMgdGhlIGluaXRpYWwgbGljZW5zZSBzdGV3YXJkIGFuZCBtYXkgcHVibGlzaCByZXZpc2VkIGFuZC9vciBuZXcgdmVyc2lvbnMgb2YgdGhpcyBMaWNlbnNlIGZyb20gdGltZSB0byB0aW1lLiBFYWNoIHZlcnNpb24gd2lsbCBiZSBnaXZlbiBhIGRpc3Rpbmd1aXNoaW5nIHZlcnNpb24gbnVtYmVyLiBFeGNlcHQgYXMgcHJvdmlkZWQgaW4gU2VjdGlvbiA0LjMsIG5vIG9uZSBvdGhlciB0aGFuIHRoZSBsaWNlbnNlIHN0ZXdhcmQgaGFzIHRoZSByaWdodCB0byBtb2RpZnkgdGhpcyBMaWNlbnNlLgorCisgICAgICA0LjIuIEVmZmVjdCBvZiBOZXcgVmVyc2lvbnMuCisgICAgICBZb3UgbWF5IGFsd2F5cyBjb250aW51ZSB0byB1c2UsIGRpc3RyaWJ1dGUgb3Igb3RoZXJ3aXNlIG1ha2UgdGhlIENvdmVyZWQgU29mdHdhcmUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgdmVyc2lvbiBvZiB0aGUgTGljZW5zZSB1bmRlciB3aGljaCBZb3Ugb3JpZ2luYWxseSByZWNlaXZlZCB0aGUgQ292ZXJlZCBTb2Z0d2FyZS4gSWYgdGhlIEluaXRpYWwgRGV2ZWxvcGVyIGluY2x1ZGVzIGEgbm90aWNlIGluIHRoZSBPcmlnaW5hbCBTb2Z0d2FyZSBwcm9oaWJpdGluZyBpdCBmcm9tIGJlaW5nIGRpc3RyaWJ1dGVkIG9yIG90aGVyd2lzZSBtYWRlIGF2YWlsYWJsZSB1bmRlciBhbnkgc3Vic2VxdWVudCB2ZXJzaW9uIG9mIHRoZSBMaWNlbnNlLCBZb3UgbXVzdCBkaXN0cmlidXRlIGFuZCBtYWtlIHRoZSBDb3ZlcmVkIFNvZnR3YXJlIGF2YWlsYWJsZSB1bmRlciB0aGUgdGVybXMgb2YgdGhlIHZlcnNpb24gb2YgdGhlIExpY2Vuc2UgdW5kZXIgd2hpY2ggWW91IG9yaWdpbmFsbHkgcmVjZWl2ZWQgdGhlIENvdmVyZWQgU29mdHdhcmUuIE90aGVyd2lzZSwgWW91IG1heSBhbHNvIGNob29zZSB0byB1c2UsIGRpc3RyaWJ1dGUgb3Igb3RoZXJ3aXNlIG1ha2UgdGhlIENvdmVyZWQgU29mdHdhcmUgYXZhaWxhYmxlIHVuZGVyIHRoZSB0ZXJtcyBvZiBhbnkgc3Vic2VxdWVudCB2ZXJzaW9uIG9mIHRoZSBMaWNlbnNlIHB1Ymxpc2hlZCBieSB0aGUgbGljZW5zZSBzdGV3YXJkLgorCisgICAgICA0LjMuIE1vZGlmaWVkIFZlcnNpb25zLgorICAgICAgV2hlbiBZb3UgYXJlIGFuIEluaXRpYWwgRGV2ZWxvcGVyIGFuZCBZb3Ugd2FudCB0byBjcmVhdGUgYSBuZXcgbGljZW5zZSBmb3IgWW91ciBPcmlnaW5hbCBTb2Z0d2FyZSwgWW91IG1heSBjcmVhdGUgYW5kIHVzZSBhIG1vZGlmaWVkIHZlcnNpb24gb2YgdGhpcyBMaWNlbnNlIGlmIFlvdTogKGEpIHJlbmFtZSB0aGUgbGljZW5zZSBhbmQgcmVtb3ZlIGFueSByZWZlcmVuY2VzIHRvIHRoZSBuYW1lIG9mIHRoZSBsaWNlbnNlIHN0ZXdhcmQgKGV4Y2VwdCB0byBub3RlIHRoYXQgdGhlIGxpY2Vuc2UgZGlmZmVycyBmcm9tIHRoaXMgTGljZW5zZSk7IGFuZCAoYikgb3RoZXJ3aXNlIG1ha2UgaXQgY2xlYXIgdGhhdCB0aGUgbGljZW5zZSBjb250YWlucyB0ZXJtcyB3aGljaCBkaWZmZXIgZnJvbSB0aGlzIExpY2Vuc2UuCisKKzUuIERJU0NMQUlNRVIgT0YgV0FSUkFOVFkuCisKKyAgIENPVkVSRUQgU09GVFdBUkUgSVMgUFJPVklERUQgVU5ERVIgVEhJUyBMSUNFTlNFIE9OIEFOIC5BUyBJUy4gQkFTSVMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTRUQgT1IgSU1QTElFRCwgSU5DTFVESU5HLCBXSVRIT1VUIExJTUlUQVRJT04sIFdBUlJBTlRJRVMgVEhBVCBUSEUgQ09WRVJFRCBTT0ZUV0FSRSBJUyBGUkVFIE9GIERFRkVDVFMsIE1FUkNIQU5UQUJMRSwgRklUIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBPUiBOT04tSU5GUklOR0lORy4gVEhFIEVOVElSRSBSSVNLIEFTIFRPIFRIRSBRVUFMSVRZIEFORCBQRVJGT1JNQU5DRSBPRiBUSEUgQ09WRVJFRCBTT0ZUV0FSRSBJUyBXSVRIIFlPVS4gU0hPVUxEIEFOWSBDT1ZFUkVEIFNPRlRXQVJFIFBST1ZFIERFRkVDVElWRSBJTiBBTlkgUkVTUEVDVCwgWU9VIChOT1QgVEhFIElOSVRJQUwgREVWRUxPUEVSIE9SIEFOWSBPVEhFUiBDT05UUklCVVRPUikgQVNTVU1FIFRIRSBDT1NUIE9GIEFOWSBORUNFU1NBUlkgU0VSVklDSU5HLCBSRVBBSVIgT1IgQ09SUkVDVElPTi4gVEhJUyBESVNDTEFJTUVSIE9GIFdBUlJBTlRZIENPTlNUSVRVVEVTIEFOIEVTU0VOVElBTCBQQVJUIE9GIFRISVMgTElDRU5TRS4gTk8gVVNFIE9GIEFOWSBDT1ZFUkVEIFNPRlRXQVJFIElTIEFVVEhPUklaRUQgSEVSRVVOREVSIEVYQ0VQVCBVTkRFUiBUSElTIERJU0NMQUlNRVIuCisKKzYuIFRFUk1JTkFUSU9OLgorCisgICAgICA2LjEuIFRoaXMgTGljZW5zZSBhbmQgdGhlIHJpZ2h0cyBncmFudGVkIGhlcmV1bmRlciB3aWxsIHRlcm1pbmF0ZSBhdXRvbWF0aWNhbGx5IGlmIFlvdSBmYWlsIHRvIGNvbXBseSB3aXRoIHRlcm1zIGhlcmVpbiBhbmQgZmFpbCB0byBjdXJlIHN1Y2ggYnJlYWNoIHdpdGhpbiAzMCBkYXlzIG9mIGJlY29taW5nIGF3YXJlIG9mIHRoZSBicmVhY2guIFByb3Zpc2lvbnMgd2hpY2gsIGJ5IHRoZWlyIG5hdHVyZSwgbXVzdCByZW1haW4gaW4gZWZmZWN0IGJleW9uZCB0aGUgdGVybWluYXRpb24gb2YgdGhpcyBMaWNlbnNlIHNoYWxsIHN1cnZpdmUuCisKKyAgICAgIDYuMi4gSWYgWW91IGFzc2VydCBhIHBhdGVudCBpbmZyaW5nZW1lbnQgY2xhaW0gKGV4Y2x1ZGluZyBkZWNsYXJhdG9yeSBqdWRnbWVudCBhY3Rpb25zKSBhZ2FpbnN0IEluaXRpYWwgRGV2ZWxvcGVyIG9yIGEgQ29udHJpYnV0b3IgKHRoZSBJbml0aWFsIERldmVsb3BlciBvciBDb250cmlidXRvciBhZ2FpbnN0IHdob20gWW91IGFzc2VydCBzdWNoIGNsYWltIGlzIHJlZmVycmVkIHRvIGFzIC5QYXJ0aWNpcGFudC4pIGFsbGVnaW5nIHRoYXQgdGhlIFBhcnRpY2lwYW50IFNvZnR3YXJlIChtZWFuaW5nIHRoZSBDb250cmlidXRvciBWZXJzaW9uIHdoZXJlIHRoZSBQYXJ0aWNpcGFudCBpcyBhIENvbnRyaWJ1dG9yIG9yIHRoZSBPcmlnaW5hbCBTb2Z0d2FyZSB3aGVyZSB0aGUgUGFydGljaXBhbnQgaXMgdGhlIEluaXRpYWwgRGV2ZWxvcGVyKSBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGluZnJpbmdlcyBhbnkgcGF0ZW50LCB0aGVuIGFueSBhbmQgYWxsIHJpZ2h0cyBncmFudGVkIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgdG8gWW91IGJ5IHN1Y2ggUGFydGljaXBhbnQsIHRoZSBJbml0aWFsIERldmVsb3BlciAoaWYgdGhlIEluaXRpYWwgRGV2ZWxvcGVyIGlzIG5vdCB0aGUgUGFydGljaXBhbnQpIGFuZCBhbGwgQ29udHJpYnV0b3JzIHVuZGVyIFNlY3Rpb25zIDIuMSBhbmQvb3IgMi4yIG9mIHRoaXMgTGljZW5zZSBzaGFsbCwgdXBvbiA2MCBkYXlzIG5vdGljZSBmcm9tIFBhcnRpY2lwYW50IHRlcm1pbmF0ZSBwcm9zcGVjdGl2ZWx5IGFuZCBhdXRvbWF0aWNhbGx5IGF0IHRoZSBleHBpcmF0aW9uIG9mIHN1Y2ggNjAgZGF5IG5vdGljZSBwZXJpb2QsIHVubGVzcyBpZiB3aXRoaW4gc3VjaCA2MCBkYXkgcGVyaW9kIFlvdSB3aXRoZHJhdyBZb3VyIGNsYWltIHdpdGggcmVzcGVjdCB0byB0aGUgUGFydGljaXBhbnQgU29mdHdhcmUgYWdhaW5zdCBzdWNoIFBhcnRpY2lwYW50IGVpdGhlciB1bmlsYXRlcmFsbHkgb3IgcHVyc3VhbnQgdG8gYSB3cml0dGVuIGFncmVlbWVudCB3aXRoIFBhcnRpY2lwYW50LgorCisgICAgICA2LjMuIEluIHRoZSBldmVudCBvZiB0ZXJtaW5hdGlvbiB1bmRlciBTZWN0aW9ucyA2LjEgb3IgNi4yIGFib3ZlLCBhbGwgZW5kIHVzZXIgbGljZW5zZXMgdGhhdCBoYXZlIGJlZW4gdmFsaWRseSBncmFudGVkIGJ5IFlvdSBvciBhbnkgZGlzdHJpYnV0b3IgaGVyZXVuZGVyIHByaW9yIHRvIHRlcm1pbmF0aW9uIChleGNsdWRpbmcgbGljZW5zZXMgZ3JhbnRlZCB0byBZb3UgYnkgYW55IGRpc3RyaWJ1dG9yKSBzaGFsbCBzdXJ2aXZlIHRlcm1pbmF0aW9uLgorCis3LiBMSU1JVEFUSU9OIE9GIExJQUJJTElUWS4KKworICAgVU5ERVIgTk8gQ0lSQ1VNU1RBTkNFUyBBTkQgVU5ERVIgTk8gTEVHQUwgVEhFT1JZLCBXSEVUSEVSIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFKSwgQ09OVFJBQ1QsIE9SIE9USEVSV0lTRSwgU0hBTEwgWU9VLCBUSEUgSU5JVElBTCBERVZFTE9QRVIsIEFOWSBPVEhFUiBDT05UUklCVVRPUiwgT1IgQU5ZIERJU1RSSUJVVE9SIE9GIENPVkVSRUQgU09GVFdBUkUsIE9SIEFOWSBTVVBQTElFUiBPRiBBTlkgT0YgU1VDSCBQQVJUSUVTLCBCRSBMSUFCTEUgVE8gQU5ZIFBFUlNPTiBGT1IgQU5ZIElORElSRUNULCBTUEVDSUFMLCBJTkNJREVOVEFMLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgT0YgQU5ZIENIQVJBQ1RFUiBJTkNMVURJTkcsIFdJVEhPVVQgTElNSVRBVElPTiwgREFNQUdFUyBGT1IgTE9TVCBQUk9GSVRTLCBMT1NTIE9GIEdPT0RXSUxMLCBXT1JLIFNUT1BQQUdFLCBDT01QVVRFUiBGQUlMVVJFIE9SIE1BTEZVTkNUSU9OLCBPUiBBTlkgQU5EIEFMTCBPVEhFUiBDT01NRVJDSUFMIERBTUFHRVMgT1IgTE9TU0VTLCBFVkVOIElGIFNVQ0ggUEFSVFkgU0hBTEwgSEFWRSBCRUVOIElORk9STUVEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuIFRISVMgTElNSVRBVElPTiBPRiBMSUFCSUxJVFkgU0hBTEwgTk9UIEFQUExZIFRPIExJQUJJTElUWSBGT1IgREVBVEggT1IgUEVSU09OQUwgSU5KVVJZIFJFU1VMVElORyBGUk9NIFNVQ0ggUEFSVFkuUyBORUdMSUdFTkNFIFRPIFRIRSBFWFRFTlQgQVBQTElDQUJMRSBMQVcgUFJPSElCSVRTIFNVQ0ggTElNSVRBVElPTi4gU09NRSBKVVJJU0RJQ1RJT05TIERPIE5PVCBBTExPVyBUSEUgRVhDTFVTSU9OIE9SIExJTUlUQVRJT04gT0YgSU5DSURFTlRBTCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMsIFNPIFRISVMgRVhDTFVTSU9OIEFORCBMSU1JVEFUSU9OIE1BWSBOT1QgQVBQTFkgVE8gWU9VLgorCis4LiBVLlMuIEdPVkVSTk1FTlQgRU5EIFVTRVJTLgorCisgICBUaGUgQ292ZXJlZCBTb2Z0d2FyZSBpcyBhIC5jb21tZXJjaWFsIGl0ZW0sLiBhcyB0aGF0IHRlcm0gaXMgZGVmaW5lZCBpbiA0OCBDLkYuUi4gMi4xMDEgKE9jdC4gMTk5NSksIGNvbnNpc3Rpbmcgb2YgLmNvbW1lcmNpYWwgY29tcHV0ZXIgc29mdHdhcmUuIChhcyB0aGF0IHRlcm0gaXMgZGVmaW5lZCBhdCA0OCBDLkYuUi4guiAyNTIuMjI3LTcwMTQoYSkoMSkpIGFuZCAuY29tbWVyY2lhbCBjb21wdXRlciBzb2Z0d2FyZSBkb2N1bWVudGF0aW9uLiBhcyBzdWNoIHRlcm1zIGFyZSB1c2VkIGluIDQ4IEMuRi5SLiAxMi4yMTIgKFNlcHQuIDE5OTUpLiBDb25zaXN0ZW50IHdpdGggNDggQy5GLlIuIDEyLjIxMiBhbmQgNDggQy5GLlIuIDIyNy43MjAyLTEgdGhyb3VnaCAyMjcuNzIwMi00IChKdW5lIDE5OTUpLCBhbGwgVS5TLiBHb3Zlcm5tZW50IEVuZCBVc2VycyBhY3F1aXJlIENvdmVyZWQgU29mdHdhcmUgd2l0aCBvbmx5IHRob3NlIHJpZ2h0cyBzZXQgZm9ydGggaGVyZWluLiBUaGlzIFUuUy4gR292ZXJubWVudCBSaWdodHMgY2xhdXNlIGlzIGluIGxpZXUgb2YsIGFuZCBzdXBlcnNlZGVzLCBhbnkgb3RoZXIgRkFSLCBERkFSLCBvciBvdGhlciBjbGF1c2Ugb3IgcHJvdmlzaW9uIHRoYXQgYWRkcmVzc2VzIEdvdmVybm1lbnQgcmlnaHRzIGluIGNvbXB1dGVyIHNvZnR3YXJlIHVuZGVyIHRoaXMgTGljZW5zZS4KKworOS4gTUlTQ0VMTEFORU9VUy4KKworICAgVGhpcyBMaWNlbnNlIHJlcHJlc2VudHMgdGhlIGNvbXBsZXRlIGFncmVlbWVudCBjb25jZXJuaW5nIHN1YmplY3QgbWF0dGVyIGhlcmVvZi4gSWYgYW55IHByb3Zpc2lvbiBvZiB0aGlzIExpY2Vuc2UgaXMgaGVsZCB0byBiZSB1bmVuZm9yY2VhYmxlLCBzdWNoIHByb3Zpc2lvbiBzaGFsbCBiZSByZWZvcm1lZCBvbmx5IHRvIHRoZSBleHRlbnQgbmVjZXNzYXJ5IHRvIG1ha2UgaXQgZW5mb3JjZWFibGUuIFRoaXMgTGljZW5zZSBzaGFsbCBiZSBnb3Zlcm5lZCBieSB0aGUgbGF3IG9mIHRoZSBqdXJpc2RpY3Rpb24gc3BlY2lmaWVkIGluIGEgbm90aWNlIGNvbnRhaW5lZCB3aXRoaW4gdGhlIE9yaWdpbmFsIFNvZnR3YXJlIChleGNlcHQgdG8gdGhlIGV4dGVudCBhcHBsaWNhYmxlIGxhdywgaWYgYW55LCBwcm92aWRlcyBvdGhlcndpc2UpLCBleGNsdWRpbmcgc3VjaCBqdXJpc2RpY3Rpb24ucyBjb25mbGljdC1vZi1sYXcgcHJvdmlzaW9ucy4gQW55IGxpdGlnYXRpb24gcmVsYXRpbmcgdG8gdGhpcyBMaWNlbnNlIHNoYWxsIGJlIHN1YmplY3QgdG8gdGhlIGp1cmlzZGljdGlvbiBvZiB0aGUgY291cnRzIGxvY2F0ZWQgaW4gdGhlIGp1cmlzZGljdGlvbiBhbmQgdmVudWUgc3BlY2lmaWVkIGluIGEgbm90aWNlIGNvbnRhaW5lZCB3aXRoaW4gdGhlIE9yaWdpbmFsIFNvZnR3YXJlLCB3aXRoIHRoZSBsb3NpbmcgcGFydHkgcmVzcG9uc2libGUgZm9yIGNvc3RzLCBpbmNsdWRpbmcsIHdpdGhvdXQgbGltaXRhdGlvbiwgY291cnQgY29zdHMgYW5kIHJlYXNvbmFibGUgYXR0b3JuZXlzLiBmZWVzIGFuZCBleHBlbnNlcy4gVGhlIGFwcGxpY2F0aW9uIG9mIHRoZSBVbml0ZWQgTmF0aW9ucyBDb252ZW50aW9uIG9uIENvbnRyYWN0cyBmb3IgdGhlIEludGVybmF0aW9uYWwgU2FsZSBvZiBHb29kcyBpcyBleHByZXNzbHkgZXhjbHVkZWQuIEFueSBsYXcgb3IgcmVndWxhdGlvbiB3aGljaCBwcm92aWRlcyB0aGF0IHRoZSBsYW5ndWFnZSBvZiBhIGNvbnRyYWN0IHNoYWxsIGJlIGNvbnN0cnVlZCBhZ2FpbnN0IHRoZSBkcmFmdGVyIHNoYWxsIG5vdCBhcHBseSB0byB0aGlzIExpY2Vuc2UuIFlvdSBhZ3JlZSB0aGF0IFlvdSBhbG9uZSBhcmUgcmVzcG9uc2libGUgZm9yIGNvbXBsaWFuY2Ugd2l0aCB0aGUgVW5pdGVkIFN0YXRlcyBleHBvcnQgYWRtaW5pc3RyYXRpb24gcmVndWxhdGlvbnMgKGFuZCB0aGUgZXhwb3J0IGNvbnRyb2wgbGF3cyBhbmQgcmVndWxhdGlvbiBvZiBhbnkgb3RoZXIgY291bnRyaWVzKSB3aGVuIFlvdSB1c2UsIGRpc3RyaWJ1dGUgb3Igb3RoZXJ3aXNlIG1ha2UgYXZhaWxhYmxlIGFueSBDb3ZlcmVkIFNvZnR3YXJlLgorCisxMC4gUkVTUE9OU0lCSUxJVFkgRk9SIENMQUlNUy4KKworICAgQXMgYmV0d2VlbiBJbml0aWFsIERldmVsb3BlciBhbmQgdGhlIENvbnRyaWJ1dG9ycywgZWFjaCBwYXJ0eSBpcyByZXNwb25zaWJsZSBmb3IgY2xhaW1zIGFuZCBkYW1hZ2VzIGFyaXNpbmcsIGRpcmVjdGx5IG9yIGluZGlyZWN0bHksIG91dCBvZiBpdHMgdXRpbGl6YXRpb24gb2YgcmlnaHRzIHVuZGVyIHRoaXMgTGljZW5zZSBhbmQgWW91IGFncmVlIHRvIHdvcmsgd2l0aCBJbml0aWFsIERldmVsb3BlciBhbmQgQ29udHJpYnV0b3JzIHRvIGRpc3RyaWJ1dGUgc3VjaCByZXNwb25zaWJpbGl0eSBvbiBhbiBlcXVpdGFibGUgYmFzaXMuIE5vdGhpbmcgaGVyZWluIGlzIGludGVuZGVkIG9yIHNoYWxsIGJlIGRlZW1lZCB0byBjb25zdGl0dXRlIGFueSBhZG1pc3Npb24gb2YgbGlhYmlsaXR5LgorCisgICBOT1RJQ0UgUFVSU1VBTlQgVE8gU0VDVElPTiA5IE9GIFRIRSBDT01NT04gREVWRUxPUE1FTlQgQU5EIERJU1RSSUJVVElPTiBMSUNFTlNFIChDRERMKQorCisgICBUaGUgY29kZSByZWxlYXNlZCB1bmRlciB0aGUgQ0RETCBzaGFsbCBiZSBnb3Zlcm5lZCBieSB0aGUgbGF3cyBvZiB0aGUgU3RhdGUgb2YgQ2FsaWZvcm5pYSAoZXhjbHVkaW5nIGNvbmZsaWN0LW9mLWxhdyBwcm92aXNpb25zKS4gQW55IGxpdGlnYXRpb24gcmVsYXRpbmcgdG8gdGhpcyBMaWNlbnNlIHNoYWxsIGJlIHN1YmplY3QgdG8gdGhlIGp1cmlzZGljdGlvbiBvZiB0aGUgRmVkZXJhbCBDb3VydHMgb2YgdGhlIE5vcnRoZXJuIERpc3RyaWN0IG9mIENhbGlmb3JuaWEgYW5kIHRoZSBzdGF0ZSBjb3VydHMgb2YgdGhlIFN0YXRlIG9mIENhbGlmb3JuaWEsIHdpdGggdmVudWUgbHlpbmcgaW4gU2FudGEgQ2xhcmEgQ291bnR5LCBDYWxpZm9ybmlhLgorICAgCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ZvciB3c2RsNGotamFyLTEuNi4yLmphcgorCitDb21tb24gUHVibGljIExpY2Vuc2UgLSB2IDEuMAorCitUSEUgQUNDT01QQU5ZSU5HIFBST0dSQU0gSVMgUFJPVklERUQgVU5ERVIgVEhFIFRFUk1TIE9GIFRISVMgQ09NTU9OIFBVQkxJQyBMSUNFTlNFICgiQUdSRUVNRU5UIikuIEFOWSBVU0UsIFJFUFJPRFVDVElPTiBPUiBESVNUUklCVVRJT04gT0YgVEhFIFBST0dSQU0gQ09OU1RJVFVURVMgUkVDSVBJRU5UJ1MgQUNDRVBUQU5DRSBPRiBUSElTIEFHUkVFTUVOVC4KKworMS4gREVGSU5JVElPTlMKKworIkNvbnRyaWJ1dGlvbiIgbWVhbnM6CisKKyAgICBhKSBpbiB0aGUgY2FzZSBvZiB0aGUgaW5pdGlhbCBDb250cmlidXRvciwgdGhlIGluaXRpYWwgY29kZSBhbmQgZG9jdW1lbnRhdGlvbiBkaXN0cmlidXRlZCB1bmRlciB0aGlzIEFncmVlbWVudCwgYW5kCisgICAgYikgaW4gdGhlIGNhc2Ugb2YgZWFjaCBzdWJzZXF1ZW50IENvbnRyaWJ1dG9yOgorCisgICAgaSkgY2hhbmdlcyB0byB0aGUgUHJvZ3JhbSwgYW5kCisKKyAgICBpaSkgYWRkaXRpb25zIHRvIHRoZSBQcm9ncmFtOworCisgICAgd2hlcmUgc3VjaCBjaGFuZ2VzIGFuZC9vciBhZGRpdGlvbnMgdG8gdGhlIFByb2dyYW0gb3JpZ2luYXRlIGZyb20gYW5kIGFyZSBkaXN0cmlidXRlZCBieSB0aGF0IHBhcnRpY3VsYXIgQ29udHJpYnV0b3IuIEEgQ29udHJpYnV0aW9uICdvcmlnaW5hdGVzJyBmcm9tIGEgQ29udHJpYnV0b3IgaWYgaXQgd2FzIGFkZGVkIHRvIHRoZSBQcm9ncmFtIGJ5IHN1Y2ggQ29udHJpYnV0b3IgaXRzZWxmIG9yIGFueW9uZSBhY3Rpbmcgb24gc3VjaCBDb250cmlidXRvcidzIGJlaGFsZi4gQ29udHJpYnV0aW9ucyBkbyBub3QgaW5jbHVkZSBhZGRpdGlvbnMgdG8gdGhlIFByb2dyYW0gd2hpY2g6IChpKSBhcmUgc2VwYXJhdGUgbW9kdWxlcyBvZiBzb2Z0d2FyZSBkaXN0cmlidXRlZCBpbiBjb25qdW5jdGlvbiB3aXRoIHRoZSBQcm9ncmFtIHVuZGVyIHRoZWlyIG93biBsaWNlbnNlIGFncmVlbWVudCwgYW5kIChpaSkgYXJlIG5vdCBkZXJpdmF0aXZlIHdvcmtzIG9mIHRoZSBQcm9ncmFtLiAKKworIkNvbnRyaWJ1dG9yIiBtZWFucyBhbnkgcGVyc29uIG9yIGVudGl0eSB0aGF0IGRpc3RyaWJ1dGVzIHRoZSBQcm9ncmFtLgorCisiTGljZW5zZWQgUGF0ZW50cyAiIG1lYW4gcGF0ZW50IGNsYWltcyBsaWNlbnNhYmxlIGJ5IGEgQ29udHJpYnV0b3Igd2hpY2ggYXJlIG5lY2Vzc2FyaWx5IGluZnJpbmdlZCBieSB0aGUgdXNlIG9yIHNhbGUgb2YgaXRzIENvbnRyaWJ1dGlvbiBhbG9uZSBvciB3aGVuIGNvbWJpbmVkIHdpdGggdGhlIFByb2dyYW0uCisKKyJQcm9ncmFtIiBtZWFucyB0aGUgQ29udHJpYnV0aW9ucyBkaXN0cmlidXRlZCBpbiBhY2NvcmRhbmNlIHdpdGggdGhpcyBBZ3JlZW1lbnQuCisKKyJSZWNpcGllbnQiIG1lYW5zIGFueW9uZSB3aG8gcmVjZWl2ZXMgdGhlIFByb2dyYW0gdW5kZXIgdGhpcyBBZ3JlZW1lbnQsIGluY2x1ZGluZyBhbGwgQ29udHJpYnV0b3JzLgorCisyLiBHUkFOVCBPRiBSSUdIVFMKKworICAgIGEpIFN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoaXMgQWdyZWVtZW50LCBlYWNoIENvbnRyaWJ1dG9yIGhlcmVieSBncmFudHMgUmVjaXBpZW50IGEgbm9uLWV4Y2x1c2l2ZSwgd29ybGR3aWRlLCByb3lhbHR5LWZyZWUgY29weXJpZ2h0IGxpY2Vuc2UgdG8gcmVwcm9kdWNlLCBwcmVwYXJlIGRlcml2YXRpdmUgd29ya3Mgb2YsIHB1YmxpY2x5IGRpc3BsYXksIHB1YmxpY2x5IHBlcmZvcm0sIGRpc3RyaWJ1dGUgYW5kIHN1YmxpY2Vuc2UgdGhlIENvbnRyaWJ1dGlvbiBvZiBzdWNoIENvbnRyaWJ1dG9yLCBpZiBhbnksIGFuZCBzdWNoIGRlcml2YXRpdmUgd29ya3MsIGluIHNvdXJjZSBjb2RlIGFuZCBvYmplY3QgY29kZSBmb3JtLgorCisgICAgYikgU3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhpcyBBZ3JlZW1lbnQsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyBSZWNpcGllbnQgYSBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsIHJveWFsdHktZnJlZSBwYXRlbnQgbGljZW5zZSB1bmRlciBMaWNlbnNlZCBQYXRlbnRzIHRvIG1ha2UsIHVzZSwgc2VsbCwgb2ZmZXIgdG8gc2VsbCwgaW1wb3J0IGFuZCBvdGhlcndpc2UgdHJhbnNmZXIgdGhlIENvbnRyaWJ1dGlvbiBvZiBzdWNoIENvbnRyaWJ1dG9yLCBpZiBhbnksIGluIHNvdXJjZSBjb2RlIGFuZCBvYmplY3QgY29kZSBmb3JtLiBUaGlzIHBhdGVudCBsaWNlbnNlIHNoYWxsIGFwcGx5IHRvIHRoZSBjb21iaW5hdGlvbiBvZiB0aGUgQ29udHJpYnV0aW9uIGFuZCB0aGUgUHJvZ3JhbSBpZiwgYXQgdGhlIHRpbWUgdGhlIENvbnRyaWJ1dGlvbiBpcyBhZGRlZCBieSB0aGUgQ29udHJpYnV0b3IsIHN1Y2ggYWRkaXRpb24gb2YgdGhlIENvbnRyaWJ1dGlvbiBjYXVzZXMgc3VjaCBjb21iaW5hdGlvbiB0byBiZSBjb3ZlcmVkIGJ5IHRoZSBMaWNlbnNlZCBQYXRlbnRzLiBUaGUgcGF0ZW50IGxpY2Vuc2Ugc2hhbGwgbm90IGFwcGx5IHRvIGFueSBvdGhlciBjb21iaW5hdGlvbnMgd2hpY2ggaW5jbHVkZSB0aGUgQ29udHJpYnV0aW9uLiBObyBoYXJkd2FyZSBwZXIgc2UgaXMgbGljZW5zZWQgaGVyZXVuZGVyLiAKKworICAgIGMpIFJlY2lwaWVudCB1bmRlcnN0YW5kcyB0aGF0IGFsdGhvdWdoIGVhY2ggQ29udHJpYnV0b3IgZ3JhbnRzIHRoZSBsaWNlbnNlcyB0byBpdHMgQ29udHJpYnV0aW9ucyBzZXQgZm9ydGggaGVyZWluLCBubyBhc3N1cmFuY2VzIGFyZSBwcm92aWRlZCBieSBhbnkgQ29udHJpYnV0b3IgdGhhdCB0aGUgUHJvZ3JhbSBkb2VzIG5vdCBpbmZyaW5nZSB0aGUgcGF0ZW50IG9yIG90aGVyIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgb2YgYW55IG90aGVyIGVudGl0eS4gRWFjaCBDb250cmlidXRvciBkaXNjbGFpbXMgYW55IGxpYWJpbGl0eSB0byBSZWNpcGllbnQgZm9yIGNsYWltcyBicm91Z2h0IGJ5IGFueSBvdGhlciBlbnRpdHkgYmFzZWQgb24gaW5mcmluZ2VtZW50IG9mIGludGVsbGVjdHVhbCBwcm9wZXJ0eSByaWdodHMgb3Igb3RoZXJ3aXNlLiBBcyBhIGNvbmRpdGlvbiB0byBleGVyY2lzaW5nIHRoZSByaWdodHMgYW5kIGxpY2Vuc2VzIGdyYW50ZWQgaGVyZXVuZGVyLCBlYWNoIFJlY2lwaWVudCBoZXJlYnkgYXNzdW1lcyBzb2xlIHJlc3BvbnNpYmlsaXR5IHRvIHNlY3VyZSBhbnkgb3RoZXIgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBuZWVkZWQsIGlmIGFueS4gRm9yIGV4YW1wbGUsIGlmIGEgdGhpcmQgcGFydHkgcGF0ZW50IGxpY2Vuc2UgaXMgcmVxdWlyZWQgdG8gYWxsb3cgUmVjaXBpZW50IHRvIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0sIGl0IGlzIFJlY2lwaWVudCdzIHJlc3BvbnNpYmlsaXR5IHRvIGFjcXVpcmUgdGhhdCBsaWNlbnNlIGJlZm9yZSBkaXN0cmlidXRpbmcgdGhlIFByb2dyYW0uCisKKyAgICBkKSBFYWNoIENvbnRyaWJ1dG9yIHJlcHJlc2VudHMgdGhhdCB0byBpdHMga25vd2xlZGdlIGl0IGhhcyBzdWZmaWNpZW50IGNvcHlyaWdodCByaWdodHMgaW4gaXRzIENvbnRyaWJ1dGlvbiwgaWYgYW55LCB0byBncmFudCB0aGUgY29weXJpZ2h0IGxpY2Vuc2Ugc2V0IGZvcnRoIGluIHRoaXMgQWdyZWVtZW50LiAKKworMy4gUkVRVUlSRU1FTlRTCisKK0EgQ29udHJpYnV0b3IgbWF5IGNob29zZSB0byBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIGluIG9iamVjdCBjb2RlIGZvcm0gdW5kZXIgaXRzIG93biBsaWNlbnNlIGFncmVlbWVudCwgcHJvdmlkZWQgdGhhdDoKKworICAgIGEpIGl0IGNvbXBsaWVzIHdpdGggdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoaXMgQWdyZWVtZW50OyBhbmQKKworICAgIGIpIGl0cyBsaWNlbnNlIGFncmVlbWVudDoKKworICAgIGkpIGVmZmVjdGl2ZWx5IGRpc2NsYWltcyBvbiBiZWhhbGYgb2YgYWxsIENvbnRyaWJ1dG9ycyBhbGwgd2FycmFudGllcyBhbmQgY29uZGl0aW9ucywgZXhwcmVzcyBhbmQgaW1wbGllZCwgaW5jbHVkaW5nIHdhcnJhbnRpZXMgb3IgY29uZGl0aW9ucyBvZiB0aXRsZSBhbmQgbm9uLWluZnJpbmdlbWVudCwgYW5kIGltcGxpZWQgd2FycmFudGllcyBvciBjb25kaXRpb25zIG9mIG1lcmNoYW50YWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2U7IAorCisgICAgaWkpIGVmZmVjdGl2ZWx5IGV4Y2x1ZGVzIG9uIGJlaGFsZiBvZiBhbGwgQ29udHJpYnV0b3JzIGFsbCBsaWFiaWxpdHkgZm9yIGRhbWFnZXMsIGluY2x1ZGluZyBkaXJlY3QsIGluZGlyZWN0LCBzcGVjaWFsLCBpbmNpZGVudGFsIGFuZCBjb25zZXF1ZW50aWFsIGRhbWFnZXMsIHN1Y2ggYXMgbG9zdCBwcm9maXRzOyAKKworICAgIGlpaSkgc3RhdGVzIHRoYXQgYW55IHByb3Zpc2lvbnMgd2hpY2ggZGlmZmVyIGZyb20gdGhpcyBBZ3JlZW1lbnQgYXJlIG9mZmVyZWQgYnkgdGhhdCBDb250cmlidXRvciBhbG9uZSBhbmQgbm90IGJ5IGFueSBvdGhlciBwYXJ0eTsgYW5kCisKKyAgICBpdikgc3RhdGVzIHRoYXQgc291cmNlIGNvZGUgZm9yIHRoZSBQcm9ncmFtIGlzIGF2YWlsYWJsZSBmcm9tIHN1Y2ggQ29udHJpYnV0b3IsIGFuZCBpbmZvcm1zIGxpY2Vuc2VlcyBob3cgdG8gb2J0YWluIGl0IGluIGEgcmVhc29uYWJsZSBtYW5uZXIgb24gb3IgdGhyb3VnaCBhIG1lZGl1bSBjdXN0b21hcmlseSB1c2VkIGZvciBzb2Z0d2FyZSBleGNoYW5nZS4gCisKK1doZW4gdGhlIFByb2dyYW0gaXMgbWFkZSBhdmFpbGFibGUgaW4gc291cmNlIGNvZGUgZm9ybToKKworICAgIGEpIGl0IG11c3QgYmUgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhpcyBBZ3JlZW1lbnQ7IGFuZCAKKworICAgIGIpIGEgY29weSBvZiB0aGlzIEFncmVlbWVudCBtdXN0IGJlIGluY2x1ZGVkIHdpdGggZWFjaCBjb3B5IG9mIHRoZSBQcm9ncmFtLiAKKworQ29udHJpYnV0b3JzIG1heSBub3QgcmVtb3ZlIG9yIGFsdGVyIGFueSBjb3B5cmlnaHQgbm90aWNlcyBjb250YWluZWQgd2l0aGluIHRoZSBQcm9ncmFtLgorCitFYWNoIENvbnRyaWJ1dG9yIG11c3QgaWRlbnRpZnkgaXRzZWxmIGFzIHRoZSBvcmlnaW5hdG9yIG9mIGl0cyBDb250cmlidXRpb24sIGlmIGFueSwgaW4gYSBtYW5uZXIgdGhhdCByZWFzb25hYmx5IGFsbG93cyBzdWJzZXF1ZW50IFJlY2lwaWVudHMgdG8gaWRlbnRpZnkgdGhlIG9yaWdpbmF0b3Igb2YgdGhlIENvbnRyaWJ1dGlvbi4KKworNC4gQ09NTUVSQ0lBTCBESVNUUklCVVRJT04KKworQ29tbWVyY2lhbCBkaXN0cmlidXRvcnMgb2Ygc29mdHdhcmUgbWF5IGFjY2VwdCBjZXJ0YWluIHJlc3BvbnNpYmlsaXRpZXMgd2l0aCByZXNwZWN0IHRvIGVuZCB1c2VycywgYnVzaW5lc3MgcGFydG5lcnMgYW5kIHRoZSBsaWtlLiBXaGlsZSB0aGlzIGxpY2Vuc2UgaXMgaW50ZW5kZWQgdG8gZmFjaWxpdGF0ZSB0aGUgY29tbWVyY2lhbCB1c2Ugb2YgdGhlIFByb2dyYW0sIHRoZSBDb250cmlidXRvciB3aG8gaW5jbHVkZXMgdGhlIFByb2dyYW0gaW4gYSBjb21tZXJjaWFsIHByb2R1Y3Qgb2ZmZXJpbmcgc2hvdWxkIGRvIHNvIGluIGEgbWFubmVyIHdoaWNoIGRvZXMgbm90IGNyZWF0ZSBwb3RlbnRpYWwgbGlhYmlsaXR5IGZvciBvdGhlciBDb250cmlidXRvcnMuIFRoZXJlZm9yZSwgaWYgYSBDb250cmlidXRvciBpbmNsdWRlcyB0aGUgUHJvZ3JhbSBpbiBhIGNvbW1lcmNpYWwgcHJvZHVjdCBvZmZlcmluZywgc3VjaCBDb250cmlidXRvciAoIkNvbW1lcmNpYWwgQ29udHJpYnV0b3IiKSBoZXJlYnkgYWdyZWVzIHRvIGRlZmVuZCBhbmQgaW5kZW1uaWZ5IGV2ZXJ5IG90aGVyIENvbnRyaWJ1dG9yICgiSW5kZW1uaWZpZWQgQ29udHJpYnV0b3IiKSBhZ2FpbnN0IGFueSBsb3NzZXMsIGRhbWFnZXMgYW5kIGNvc3RzIChjb2xsZWN0aXZlbHkgIkxvc3NlcyIpIGFyaXNpbmcgZnJvbSBjbGFpbXMsIGxhd3N1aXRzIGFuZCBvdGhlciBsZWdhbCBhY3Rpb25zIGJyb3VnaHQgYnkgYSB0aGlyZCBwYXJ0eSBhZ2FpbnN0IHRoZSBJbmRlbW5pZmllZCBDb250cmlidXRvciB0byB0aGUgZXh0ZW50IGNhdXNlZCBieSB0aGUgYWN0cyBvciBvbWlzc2lvbnMgb2Ygc3VjaCBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIGluIGNvbm5lY3Rpb24gd2l0aCBpdHMgZGlzdHJpYnV0aW9uIG9mIHRoZSBQcm9ncmFtIGluIGEgY29tbWVyY2lhbCBwcm9kdWN0IG9mZmVyaW5nLiBUaGUgb2JsaWdhdGlvbnMgaW4gdGhpcyBzZWN0aW9uIGRvIG5vdCBhcHBseSB0byBhbnkgY2xhaW1zIG9yIExvc3NlcyByZWxhdGluZyB0byBhbnkgYWN0dWFsIG9yIGFsbGVnZWQgaW50ZWxsZWN0dWFsIHByb3BlcnR5IGluZnJpbmdlbWVudC4gSW4gb3JkZXIgdG8gcXVhbGlmeSwgYW4gSW5kZW1uaWZpZWQgQ29udHJpYnV0b3IgbXVzdDogYSkgcHJvbXB0bHkgbm90aWZ5IHRoZSBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIGluIHdyaXRpbmcgb2Ygc3VjaCBjbGFpbSwgYW5kIGIpIGFsbG93IHRoZSBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIHRvIGNvbnRyb2wsIGFuZCBjb29wZXJhdGUgd2l0aCB0aGUgQ29tbWVyY2lhbCBDb250cmlidXRvciBpbiwgdGhlIGRlZmVuc2UgYW5kIGFueSByZWxhdGVkIHNldHRsZW1lbnQgbmVnb3RpYXRpb25zLiBUaGUgSW5kZW1uaWZpZWQgQ29udHJpYnV0b3IgbWF5IHBhcnRpY2lwYXRlIGluIGFueSBzdWNoIGNsYWltIGF0IGl0cyBvd24gZXhwZW5zZS4KKworRm9yIGV4YW1wbGUsIGEgQ29udHJpYnV0b3IgbWlnaHQgaW5jbHVkZSB0aGUgUHJvZ3JhbSBpbiBhIGNvbW1lcmNpYWwgcHJvZHVjdCBvZmZlcmluZywgUHJvZHVjdCBYLiBUaGF0IENvbnRyaWJ1dG9yIGlzIHRoZW4gYSBDb21tZXJjaWFsIENvbnRyaWJ1dG9yLiBJZiB0aGF0IENvbW1lcmNpYWwgQ29udHJpYnV0b3IgdGhlbiBtYWtlcyBwZXJmb3JtYW5jZSBjbGFpbXMsIG9yIG9mZmVycyB3YXJyYW50aWVzIHJlbGF0ZWQgdG8gUHJvZHVjdCBYLCB0aG9zZSBwZXJmb3JtYW5jZSBjbGFpbXMgYW5kIHdhcnJhbnRpZXMgYXJlIHN1Y2ggQ29tbWVyY2lhbCBDb250cmlidXRvcidzIHJlc3BvbnNpYmlsaXR5IGFsb25lLiBVbmRlciB0aGlzIHNlY3Rpb24sIHRoZSBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIHdvdWxkIGhhdmUgdG8gZGVmZW5kIGNsYWltcyBhZ2FpbnN0IHRoZSBvdGhlciBDb250cmlidXRvcnMgcmVsYXRlZCB0byB0aG9zZSBwZXJmb3JtYW5jZSBjbGFpbXMgYW5kIHdhcnJhbnRpZXMsIGFuZCBpZiBhIGNvdXJ0IHJlcXVpcmVzIGFueSBvdGhlciBDb250cmlidXRvciB0byBwYXkgYW55IGRhbWFnZXMgYXMgYSByZXN1bHQsIHRoZSBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIG11c3QgcGF5IHRob3NlIGRhbWFnZXMuCisKKzUuIE5PIFdBUlJBTlRZCisKK0VYQ0VQVCBBUyBFWFBSRVNTTFkgU0VUIEZPUlRIIElOIFRISVMgQUdSRUVNRU5ULCBUSEUgUFJPR1JBTSBJUyBQUk9WSURFRCBPTiBBTiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRCBJTkNMVURJTkcsIFdJVEhPVVQgTElNSVRBVElPTiwgQU5ZIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBUSVRMRSwgTk9OLUlORlJJTkdFTUVOVCwgTUVSQ0hBTlRBQklMSVRZIE9SIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBFYWNoIFJlY2lwaWVudCBpcyBzb2xlbHkgcmVzcG9uc2libGUgZm9yIGRldGVybWluaW5nIHRoZSBhcHByb3ByaWF0ZW5lc3Mgb2YgdXNpbmcgYW5kIGRpc3RyaWJ1dGluZyB0aGUgUHJvZ3JhbSBhbmQgYXNzdW1lcyBhbGwgcmlza3MgYXNzb2NpYXRlZCB3aXRoIGl0cyBleGVyY2lzZSBvZiByaWdodHMgdW5kZXIgdGhpcyBBZ3JlZW1lbnQsIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gdGhlIHJpc2tzIGFuZCBjb3N0cyBvZiBwcm9ncmFtIGVycm9ycywgY29tcGxpYW5jZSB3aXRoIGFwcGxpY2FibGUgbGF3cywgZGFtYWdlIHRvIG9yIGxvc3Mgb2YgZGF0YSwgcHJvZ3JhbXMgb3IgZXF1aXBtZW50LCBhbmQgdW5hdmFpbGFiaWxpdHkgb3IgaW50ZXJydXB0aW9uIG9mIG9wZXJhdGlvbnMuCisKKzYuIERJU0NMQUlNRVIgT0YgTElBQklMSVRZCisKK0VYQ0VQVCBBUyBFWFBSRVNTTFkgU0VUIEZPUlRIIElOIFRISVMgQUdSRUVNRU5ULCBORUlUSEVSIFJFQ0lQSUVOVCBOT1IgQU5ZIENPTlRSSUJVVE9SUyBTSEFMTCBIQVZFIEFOWSBMSUFCSUxJVFkgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiBMT1NUIFBST0ZJVFMpLCBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9SIERJU1RSSUJVVElPTiBPRiBUSEUgUFJPR1JBTSBPUiBUSEUgRVhFUkNJU0UgT0YgQU5ZIFJJR0hUUyBHUkFOVEVEIEhFUkVVTkRFUiwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuCisKKzcuIEdFTkVSQUwKKworSWYgYW55IHByb3Zpc2lvbiBvZiB0aGlzIEFncmVlbWVudCBpcyBpbnZhbGlkIG9yIHVuZW5mb3JjZWFibGUgdW5kZXIgYXBwbGljYWJsZSBsYXcsIGl0IHNoYWxsIG5vdCBhZmZlY3QgdGhlIHZhbGlkaXR5IG9yIGVuZm9yY2VhYmlsaXR5IG9mIHRoZSByZW1haW5kZXIgb2YgdGhlIHRlcm1zIG9mIHRoaXMgQWdyZWVtZW50LCBhbmQgd2l0aG91dCBmdXJ0aGVyIGFjdGlvbiBieSB0aGUgcGFydGllcyBoZXJldG8sIHN1Y2ggcHJvdmlzaW9uIHNoYWxsIGJlIHJlZm9ybWVkIHRvIHRoZSBtaW5pbXVtIGV4dGVudCBuZWNlc3NhcnkgdG8gbWFrZSBzdWNoIHByb3Zpc2lvbiB2YWxpZCBhbmQgZW5mb3JjZWFibGUuCisKK0lmIFJlY2lwaWVudCBpbnN0aXR1dGVzIHBhdGVudCBsaXRpZ2F0aW9uIGFnYWluc3QgYSBDb250cmlidXRvciB3aXRoIHJlc3BlY3QgdG8gYSBwYXRlbnQgYXBwbGljYWJsZSB0byBzb2Z0d2FyZSAoaW5jbHVkaW5nIGEgY3Jvc3MtY2xhaW0gb3IgY291bnRlcmNsYWltIGluIGEgbGF3c3VpdCksIHRoZW4gYW55IHBhdGVudCBsaWNlbnNlcyBncmFudGVkIGJ5IHRoYXQgQ29udHJpYnV0b3IgdG8gc3VjaCBSZWNpcGllbnQgdW5kZXIgdGhpcyBBZ3JlZW1lbnQgc2hhbGwgdGVybWluYXRlIGFzIG9mIHRoZSBkYXRlIHN1Y2ggbGl0aWdhdGlvbiBpcyBmaWxlZC4gSW4gYWRkaXRpb24sIGlmIFJlY2lwaWVudCBpbnN0aXR1dGVzIHBhdGVudCBsaXRpZ2F0aW9uIGFnYWluc3QgYW55IGVudGl0eSAoaW5jbHVkaW5nIGEgY3Jvc3MtY2xhaW0gb3IgY291bnRlcmNsYWltIGluIGEgbGF3c3VpdCkgYWxsZWdpbmcgdGhhdCB0aGUgUHJvZ3JhbSBpdHNlbGYgKGV4Y2x1ZGluZyBjb21iaW5hdGlvbnMgb2YgdGhlIFByb2dyYW0gd2l0aCBvdGhlciBzb2Z0d2FyZSBvciBoYXJkd2FyZSkgaW5mcmluZ2VzIHN1Y2ggUmVjaXBpZW50J3MgcGF0ZW50KHMpLCB0aGVuIHN1Y2ggUmVjaXBpZW50J3MgcmlnaHRzIGdyYW50ZWQgdW5kZXIgU2VjdGlvbiAyKGIpIHNoYWxsIHRlcm1pbmF0ZSBhcyBvZiB0aGUgZGF0ZSBzdWNoIGxpdGlnYXRpb24gaXMgZmlsZWQuCisKK0FsbCBSZWNpcGllbnQncyByaWdodHMgdW5kZXIgdGhpcyBBZ3JlZW1lbnQgc2hhbGwgdGVybWluYXRlIGlmIGl0IGZhaWxzIHRvIGNvbXBseSB3aXRoIGFueSBvZiB0aGUgbWF0ZXJpYWwgdGVybXMgb3IgY29uZGl0aW9ucyBvZiB0aGlzIEFncmVlbWVudCBhbmQgZG9lcyBub3QgY3VyZSBzdWNoIGZhaWx1cmUgaW4gYSByZWFzb25hYmxlIHBlcmlvZCBvZiB0aW1lIGFmdGVyIGJlY29taW5nIGF3YXJlIG9mIHN1Y2ggbm9uY29tcGxpYW5jZS4gSWYgYWxsIFJlY2lwaWVudCdzIHJpZ2h0cyB1bmRlciB0aGlzIEFncmVlbWVudCB0ZXJtaW5hdGUsIFJlY2lwaWVudCBhZ3JlZXMgdG8gY2Vhc2UgdXNlIGFuZCBkaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0gYXMgc29vbiBhcyByZWFzb25hYmx5IHByYWN0aWNhYmxlLiBIb3dldmVyLCBSZWNpcGllbnQncyBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzIEFncmVlbWVudCBhbmQgYW55IGxpY2Vuc2VzIGdyYW50ZWQgYnkgUmVjaXBpZW50IHJlbGF0aW5nIHRvIHRoZSBQcm9ncmFtIHNoYWxsIGNvbnRpbnVlIGFuZCBzdXJ2aXZlLgorCitFdmVyeW9uZSBpcyBwZXJtaXR0ZWQgdG8gY29weSBhbmQgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhpcyBBZ3JlZW1lbnQsIGJ1dCBpbiBvcmRlciB0byBhdm9pZCBpbmNvbnNpc3RlbmN5IHRoZSBBZ3JlZW1lbnQgaXMgY29weXJpZ2h0ZWQgYW5kIG1heSBvbmx5IGJlIG1vZGlmaWVkIGluIHRoZSBmb2xsb3dpbmcgbWFubmVyLiBUaGUgQWdyZWVtZW50IFN0ZXdhcmQgcmVzZXJ2ZXMgdGhlIHJpZ2h0IHRvIHB1Ymxpc2ggbmV3IHZlcnNpb25zIChpbmNsdWRpbmcgcmV2aXNpb25zKSBvZiB0aGlzIEFncmVlbWVudCBmcm9tIHRpbWUgdG8gdGltZS4gTm8gb25lIG90aGVyIHRoYW4gdGhlIEFncmVlbWVudCBTdGV3YXJkIGhhcyB0aGUgcmlnaHQgdG8gbW9kaWZ5IHRoaXMgQWdyZWVtZW50LiBJQk0gaXMgdGhlIGluaXRpYWwgQWdyZWVtZW50IFN0ZXdhcmQuIElCTSBtYXkgYXNzaWduIHRoZSByZXNwb25zaWJpbGl0eSB0byBzZXJ2ZSBhcyB0aGUgQWdyZWVtZW50IFN0ZXdhcmQgdG8gYSBzdWl0YWJsZSBzZXBhcmF0ZSBlbnRpdHkuIEVhY2ggbmV3IHZlcnNpb24gb2YgdGhlIEFncmVlbWVudCB3aWxsIGJlIGdpdmVuIGEgZGlzdGluZ3Vpc2hpbmcgdmVyc2lvbiBudW1iZXIuIFRoZSBQcm9ncmFtIChpbmNsdWRpbmcgQ29udHJpYnV0aW9ucykgbWF5IGFsd2F5cyBiZSBkaXN0cmlidXRlZCBzdWJqZWN0IHRvIHRoZSB2ZXJzaW9uIG9mIHRoZSBBZ3JlZW1lbnQgdW5kZXIgd2hpY2ggaXQgd2FzIHJlY2VpdmVkLiBJbiBhZGRpdGlvbiwgYWZ0ZXIgYSBuZXcgdmVyc2lvbiBvZiB0aGUgQWdyZWVtZW50IGlzIHB1Ymxpc2hlZCwgQ29udHJpYnV0b3IgbWF5IGVsZWN0IHRvIGRpc3RyaWJ1dGUgdGhlIFByb2dyYW0gKGluY2x1ZGluZyBpdHMgQ29udHJpYnV0aW9ucykgdW5kZXIgdGhlIG5ldyB2ZXJzaW9uLiBFeGNlcHQgYXMgZXhwcmVzc2x5IHN0YXRlZCBpbiBTZWN0aW9ucyAyKGEpIGFuZCAyKGIpIGFib3ZlLCBSZWNpcGllbnQgcmVjZWl2ZXMgbm8gcmlnaHRzIG9yIGxpY2Vuc2VzIHRvIHRoZSBpbnRlbGxlY3R1YWwgcHJvcGVydHkgb2YgYW55IENvbnRyaWJ1dG9yIHVuZGVyIHRoaXMgQWdyZWVtZW50LCB3aGV0aGVyIGV4cHJlc3NseSwgYnkgaW1wbGljYXRpb24sIGVzdG9wcGVsIG9yIG90aGVyd2lzZS4gQWxsIHJpZ2h0cyBpbiB0aGUgUHJvZ3JhbSBub3QgZXhwcmVzc2x5IGdyYW50ZWQgdW5kZXIgdGhpcyBBZ3JlZW1lbnQgYXJlIHJlc2VydmVkLgorCitUaGlzIEFncmVlbWVudCBpcyBnb3Zlcm5lZCBieSB0aGUgbGF3cyBvZiB0aGUgU3RhdGUgb2YgTmV3IFlvcmsgYW5kIHRoZSBpbnRlbGxlY3R1YWwgcHJvcGVydHkgbGF3cyBvZiB0aGUgVW5pdGVkIFN0YXRlcyBvZiBBbWVyaWNhLiBObyBwYXJ0eSB0byB0aGlzIEFncmVlbWVudCB3aWxsIGJyaW5nIGEgbGVnYWwgYWN0aW9uIHVuZGVyIHRoaXMgQWdyZWVtZW50IG1vcmUgdGhhbiBvbmUgeWVhciBhZnRlciB0aGUgY2F1c2Ugb2YgYWN0aW9uIGFyb3NlLiBFYWNoIHBhcnR5IHdhaXZlcyBpdHMgcmlnaHRzIHRvIGEganVyeSB0cmlhbCBpbiBhbnkgcmVzdWx0aW5nIGxpdGlnYXRpb24uCisgCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ZvciBsaWIvanl0aG9uLXN0YW5kYWxvbmUtMi41LjIuamFyCisKK1RoZSBKeXRob24gTGljZW5zZQorQS4gVEVSTVMgQU5EIENPTkRJVElPTlMgRk9SIEFDQ0VTU0lORyBPUiBPVEhFUldJU0UgVVNJTkcgSllUSE9OCitQWVRIT04gU09GVFdBUkUgRk9VTkRBVElPTiBMSUNFTlNFIFZFUlNJT04gMgorCisxLiBUaGlzIExJQ0VOU0UgQUdSRUVNRU5UIGlzIGJldHdlZW4gdGhlIFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uICgiUFNGIiksIGFuZCB0aGUgSW5kaXZpZHVhbCBvciBPcmdhbml6YXRpb24gKCJMaWNlbnNlZSIpIGFjY2Vzc2luZyBhbmQgb3RoZXJ3aXNlIHVzaW5nIHRoaXMgc29mdHdhcmUgKCJKeXRob24iKSBpbiBzb3VyY2Ugb3IgYmluYXJ5IGZvcm0gYW5kIGl0cyBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24uCisKKzIuIFN1YmplY3QgdG8gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoaXMgTGljZW5zZSBBZ3JlZW1lbnQsIFBTRiBoZXJlYnkgZ3JhbnRzIExpY2Vuc2VlIGEgbm9uZXhjbHVzaXZlLCByb3lhbHR5LWZyZWUsIHdvcmxkLXdpZGUgbGljZW5zZSB0byByZXByb2R1Y2UsIGFuYWx5emUsIHRlc3QsIHBlcmZvcm0gYW5kL29yIGRpc3BsYXkgcHVibGljbHksIHByZXBhcmUgZGVyaXZhdGl2ZSB3b3JrcywgZGlzdHJpYnV0ZSwgYW5kIG90aGVyd2lzZSB1c2UgSnl0aG9uIGFsb25lIG9yIGluIGFueSBkZXJpdmF0aXZlIHZlcnNpb24sIHByb3ZpZGVkLCBob3dldmVyLCB0aGF0IFBTRidzIExpY2Vuc2UgQWdyZWVtZW50IGFuZCBQU0YncyBub3RpY2Ugb2YgY29weXJpZ2h0LCBpLmUuLCAiQ29weXJpZ2h0IChjKSAyMDA3IFB5dGhvbiBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBBbGwgUmlnaHRzIFJlc2VydmVkIiBhcmUgcmV0YWluZWQgaW4gSnl0aG9uIGFsb25lIG9yIGluIGFueSBkZXJpdmF0aXZlIHZlcnNpb24gcHJlcGFyZWQgYnkgTGljZW5zZWUuCisKKzMuIEluIHRoZSBldmVudCBMaWNlbnNlZSBwcmVwYXJlcyBhIGRlcml2YXRpdmUgd29yayB0aGF0IGlzIGJhc2VkIG9uIG9yIGluY29ycG9yYXRlcyBKeXRob24gb3IgYW55IHBhcnQgdGhlcmVvZiwgYW5kIHdhbnRzIHRvIG1ha2UgdGhlIGRlcml2YXRpdmUgd29yayBhdmFpbGFibGUgdG8gb3RoZXJzIGFzIHByb3ZpZGVkIGhlcmVpbiwgdGhlbiBMaWNlbnNlZSBoZXJlYnkgYWdyZWVzIHRvIGluY2x1ZGUgaW4gYW55IHN1Y2ggd29yayBhIGJyaWVmIHN1bW1hcnkgb2YgdGhlIGNoYW5nZXMgbWFkZSB0byBKeXRob24uCisKKzQuIFBTRiBpcyBtYWtpbmcgSnl0aG9uIGF2YWlsYWJsZSB0byBMaWNlbnNlZSBvbiBhbiAiQVMgSVMiIGJhc2lzLiBQU0YgTUFLRVMgTk8gUkVQUkVTRU5UQVRJT05TIE9SIFdBUlJBTlRJRVMsIEVYUFJFU1MgT1IgSU1QTElFRC4gQlkgV0FZIE9GIEVYQU1QTEUsIEJVVCBOT1QgTElNSVRBVElPTiwgUFNGIE1BS0VTIE5PIEFORCBESVNDTEFJTVMgQU5ZIFJFUFJFU0VOVEFUSU9OIE9SIFdBUlJBTlRZIE9GIE1FUkNIQU5UQUJJTElUWSBPUiBGSVRORVNTIEZPUiBBTlkgUEFSVElDVUxBUiBQVVJQT1NFIE9SIFRIQVQgVEhFIFVTRSBPRiBKWVRIT04gV0lMTCBOT1QgSU5GUklOR0UgQU5ZIFRISVJEIFBBUlRZIFJJR0hUUy4KKworNS4gUFNGIFNIQUxMIE5PVCBCRSBMSUFCTEUgVE8gTElDRU5TRUUgT1IgQU5ZIE9USEVSIFVTRVJTIE9GIEpZVEhPTiBGT1IgQU5ZIElOQ0lERU5UQUwsIFNQRUNJQUwsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBMT1NTIEFTIEEgUkVTVUxUIE9GIE1PRElGWUlORywgRElTVFJJQlVUSU5HLCBPUiBPVEhFUldJU0UgVVNJTkcgSllUSE9OLCBPUiBBTlkgREVSSVZBVElWRSBUSEVSRU9GLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIFRIRVJFT0YuCisKKzYuIFRoaXMgTGljZW5zZSBBZ3JlZW1lbnQgd2lsbCBhdXRvbWF0aWNhbGx5IHRlcm1pbmF0ZSB1cG9uIGEgbWF0ZXJpYWwgYnJlYWNoIG9mIGl0cyB0ZXJtcyBhbmQgY29uZGl0aW9ucy4KKworNy4gTm90aGluZyBpbiB0aGlzIExpY2Vuc2UgQWdyZWVtZW50IHNoYWxsIGJlIGRlZW1lZCB0byBjcmVhdGUgYW55IHJlbGF0aW9uc2hpcCBvZiBhZ2VuY3ksIHBhcnRuZXJzaGlwLCBvciBqb2ludCB2ZW50dXJlIGJldHdlZW4gUFNGIGFuZCBMaWNlbnNlZS4gVGhpcyBMaWNlbnNlIEFncmVlbWVudCBkb2VzIG5vdCBncmFudCBwZXJtaXNzaW9uIHRvIHVzZSBQU0YgdHJhZGVtYXJrcyBvciB0cmFkZSBuYW1lIGluIGEgdHJhZGVtYXJrIHNlbnNlIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBvciBzZXJ2aWNlcyBvZiBMaWNlbnNlZSwgb3IgYW55IHRoaXJkIHBhcnR5LgorCis4LiBCeSBjb3B5aW5nLCBpbnN0YWxsaW5nIG9yIG90aGVyd2lzZSB1c2luZyBKeXRob24sIExpY2Vuc2VlIGFncmVlcyB0byBiZSBib3VuZCBieSB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhpcyBMaWNlbnNlIEFncmVlbWVudC4KK0p5dGhvbiAyLjAsIDIuMSBMaWNlbnNlCisKK0NvcHlyaWdodCAoYykgMjAwMCwgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyBKeXRob24gRGV2ZWxvcGVycyBBbGwgcmlnaHRzIHJlc2VydmVkLgorCitSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisKKyAgICAgICAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICAgICAgICBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgICAgICAgIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIEp5dGhvbiBEZXZlbG9wZXJzIG5vciB0aGUgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTJycgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIFJFR0VOVFMgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKyBGb3IgQm91bmN5IENhc3RsZToKKyAKKyBsaWIvYmNwcm92LWpkazE2LTEuNDUuamFyCisgd2ViYXBwcy9vcGVubWVldGluZ3Mvc2NyZWVuc2hhcmluZy9iY3Byb3YtamRrMTYtMS40NS5qYXIKKworIENvcHlyaWdodCAoYykgMjAwMCAtIDIwMTEgVGhlIExlZ2lvbiBPZiBUaGUgQm91bmN5IENhc3RsZSAoaHR0cDovL3d3dy5ib3VuY3ljYXN0bGUub3JnKQorCisgUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkCisgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQorIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQKKyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKKyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZQorIFNvZnR3YXJlLgorCisgVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUKKyBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IKKyBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SCisgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorIAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitGb3IgWFBQMzogeHBwMy1qYXItMS4xLjRjLmphcgorCitJbmRpYW5hIFVuaXZlcnNpdHkgRXh0cmVtZSEgTGFiIFNvZnR3YXJlIExpY2Vuc2UKKworVmVyc2lvbiAxLjEuMQorCitDb3B5cmlnaHQgKGMpIDIwMDIgRXh0cmVtZSEgTGFiLCBJbmRpYW5hIFVuaXZlcnNpdHkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCithcmUgbWV0OgorCisxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorCisyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluCisgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKworMy4gVGhlIGVuZC11c2VyIGRvY3VtZW50YXRpb24gaW5jbHVkZWQgd2l0aCB0aGUgcmVkaXN0cmlidXRpb24sIGlmIGFueSwKKyAgIG11c3QgaW5jbHVkZSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdtZW50OgorCisgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZSBJbmRpYW5hIFVuaXZlcnNpdHkKKyAgRXh0cmVtZSEgTGFiIChodHRwOi8vd3d3LmV4dHJlbWUuaW5kaWFuYS5lZHUvKS4iCisKK0FsdGVybmF0ZWx5LCB0aGlzIGFja25vd2xlZGdtZW50IG1heSBhcHBlYXIgaW4gdGhlIHNvZnR3YXJlIGl0c2VsZiwKK2lmIGFuZCB3aGVyZXZlciBzdWNoIHRoaXJkLXBhcnR5IGFja25vd2xlZGdtZW50cyBub3JtYWxseSBhcHBlYXIuCisKKzQuIFRoZSBuYW1lcyAiSW5kaWFuYSBVbml2ZXJpc3R5IiBhbmQgIkluZGlhbmEgVW5pdmVyaXN0eSBFeHRyZW1lISBMYWIiCittdXN0IG5vdCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcworc29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uIEZvciB3cml0dGVuIHBlcm1pc3Npb24sCitwbGVhc2UgY29udGFjdCBodHRwOi8vd3d3LmV4dHJlbWUuaW5kaWFuYS5lZHUvLgorCis1LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IHVzZSAiSW5kaWFuYSBVbml2ZXJpc3R5IgorbmFtZSBub3IgbWF5ICJJbmRpYW5hIFVuaXZlcmlzdHkiIGFwcGVhciBpbiB0aGVpciBuYW1lLCB3aXRob3V0IHByaW9yCit3cml0dGVuIHBlcm1pc3Npb24gb2YgdGhlIEluZGlhbmEgVW5pdmVyc2l0eS4KKworVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiIEFORCBBTlkgRVhQUkVTU0VEIE9SIElNUExJRUQKK1dBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCitNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELgorSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMsIENPUFlSSUdIVCBIT0xERVJTIE9SIElUUyBDT05UUklCVVRPUlMKK0JFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKK0NPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCitTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IKK0JVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLAorV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IKK09USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYKK0FEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ZvciBYU3RyZWFtIENvbXBvbmVudHM6IHhzdHJlYW0tamFyLTEuNC4yLmphcgorCitDb3B5cmlnaHQgKGMpIDIwMDMtMjAwNiwgSm9lIFdhbG5lcworQ29weXJpZ2h0IChjKSAyMDA2LTIwMDcsIFhTdHJlYW0gQ29tbWl0dGVycworQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cittb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKworUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YKK2NvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlCit0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgordGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisKK05laXRoZXIgdGhlIG5hbWUgb2YgWFN0cmVhbSBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZQorb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4KK3Blcm1pc3Npb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQgQU5ZCitFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMKK09GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UCitTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULAorSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVECitUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SCitCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkKK1dBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gKK0RBTUFHRS4KKyAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRm9yIElDQUw0SiBjb21wb25lbnRzOiBpY2FsNGotYnVuZGxlLTEuMC4zLmphcgorCitDb3B5cmlnaHQgKGMpIDIwMTIsIEJlbiBGb3J0dW5hCitBbGwgcmlnaHRzIHJlc2VydmVkLgorCitSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKK21vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworYXJlIG1ldDoKKworCW8gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKK25vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKworCW8gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKK25vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKK2RvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisKKwlvIE5laXRoZXIgdGhlIG5hbWUgb2YgQmVuIEZvcnR1bmEgbm9yIHRoZSBuYW1lcyBvZiBhbnkgb3RoZXIgY29udHJpYnV0b3JzCittYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKK3dpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCitBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKK0NPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCitQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GCitMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCitTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitGb3IgUmVkNSBDb21wb25lbnRzOgorCisgUkVENSBPcGVuIFNvdXJjZSBGbGFzaCBTZXJ2ZXIgLSBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvcmVkNS8KKyAKK0NvcHlyaWdodCAyMDA2LTIwMTIgYnkgcmVzcGVjdGl2ZSBhdXRob3JzIChzZWUgYmVsb3cpLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK3lvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorIAoraHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorIAorVGhlIFJlZDUgUHJvamVjdCAocmVkNUBvc2ZsYXNoLm9yZykKK0x1a2UgSHViYmFyZCAobHVrZUBjb2RlZ2VudC5jb20pCitEb21pbmljayBBY2NhdHRhdG8gKGRhY2NhdHRhdG9AZ21haWwuY29tKQorQ2hyaXMgQWxsZW4gKG1yY2hyaXNhbGxlbkBnbWFpbC5jb20pCitKb2FjaGltIEJhdWNoIChqb2pvQHN0cnVrdHVyLmRlKQorTWljayBIZXJyZXMgKG1pY2toZXJyZXNAaG90bWFpbC5jb20pCitKb2huIEdyZGVuIChqb2huZ0BhY21ld2Vid29ya3MuY29tKQorR3JhbnQgRGF2aWVzIChncmFudEBibHVldHViZS5jb20pCitTdGV2ZW4gRWxsaW90dCAoc3RldmVuLnMuZWxsaW90dEBnbWFpbC5jb20pCitKb2t1bCBUaWFuICh0aWFueHVlZmVuZ0BnbWFpbC5jb20pCitTdGV2ZW4gR29uZyAoc3RldmVuLmdvbmdAZ21haWwuY29tKQorUGF1bCBHcmVnb2lyZSAobW9uZGFpbkBnbWFpbC5jb20pCitNaWNoYWVsIEtsaXNoaW4gKG1pY2hhZWwucy5rbGlzaGluQGdtYWlsLmNvbSkKK1RoaWpzIFRyaWVtc3RyYSAoaW5mb0Bjb2xsYWIubmwpCitEYW4gUm9zc2kgKGVsZWN0cm90ZXF1ZUBnbWFpbC5jb20pCitBbnRvbiBMZWJlZGV2aWNoIChtYWJyZWtAZ21haWwuY29tKQorQXJ0IENsYXJrZSAoYWNsYXJrZUB4dWdnbGUuY29tKQorCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRm9yIEpET00KKyBDb3B5cmlnaHQgKEMpIDIwMDAtMjAwNCBKYXNvbiBIdW50ZXIgJiBCcmV0dCBNY0xhdWdobGluLgorIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisKKyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyBhcmUgbWV0OgorCisgMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zLCBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorCisgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zLCBhbmQgdGhlIGRpc2NsYWltZXIgdGhhdCBmb2xsb3dzCisgICAgdGhlc2UgY29uZGl0aW9ucyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzCisgICAgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorCisgMy4gVGhlIG5hbWUgIkpET00iIG11c3Qgbm90IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzCisgICAgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uICBGb3IKKyAgICB3cml0dGVuIHBlcm1pc3Npb24sIHBsZWFzZSBjb250YWN0IDxyZXF1ZXN0X0FUX2pkb21fRE9UX29yZz4uCisKKyA0LiBQcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSBtYXkgbm90IGJlIGNhbGxlZCAiSkRPTSIsIG5vcgorICAgIG1heSAiSkRPTSIgYXBwZWFyIGluIHRoZWlyIG5hbWUsIHdpdGhvdXQgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uCisgICAgZnJvbSB0aGUgSkRPTSBQcm9qZWN0IE1hbmFnZW1lbnQgPHJlcXVlc3RfQVRfamRvbV9ET1Rfb3JnPi4KKworIEluIGFkZGl0aW9uLCB3ZSByZXF1ZXN0IChidXQgZG8gbm90IHJlcXVpcmUpIHRoYXQgeW91IGluY2x1ZGUgaW4gdGhlCisgZW5kLXVzZXIgZG9jdW1lbnRhdGlvbiBwcm92aWRlZCB3aXRoIHRoZSByZWRpc3RyaWJ1dGlvbiBhbmQvb3IgaW4gdGhlCisgc29mdHdhcmUgaXRzZWxmIGFuIGFja25vd2xlZGdlbWVudCBlcXVpdmFsZW50IHRvIHRoZSBmb2xsb3dpbmc6CisgICAgICJUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IHRoZQorICAgICAgSkRPTSBQcm9qZWN0IChodHRwOi8vd3d3Lmpkb20ub3JnLykuIgorIEFsdGVybmF0aXZlbHksIHRoZSBhY2tub3dsZWRnbWVudCBtYXkgYmUgZ3JhcGhpY2FsIHVzaW5nIHRoZSBsb2dvcworIGF2YWlsYWJsZSBhdCBodHRwOi8vd3d3Lmpkb20ub3JnL2ltYWdlcy9sb2dvcy4KKworIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTU0VEIE9SIElNUExJRUQKKyBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUworIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCisgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBKRE9NIEFVVEhPUlMgT1IgVEhFIFBST0pFQ1QKKyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRgorIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQKKyBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwKKyBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQKKyBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyBTVUNIIERBTUFHRS4KKworIFRoaXMgc29mdHdhcmUgY29uc2lzdHMgb2Ygdm9sdW50YXJ5IGNvbnRyaWJ1dGlvbnMgbWFkZSBieSBtYW55CisgaW5kaXZpZHVhbHMgb24gYmVoYWxmIG9mIHRoZSBKRE9NIFByb2plY3QgYW5kIHdhcyBvcmlnaW5hbGx5CisgY3JlYXRlZCBieSBKYXNvbiBIdW50ZXIgPGpodW50ZXJfQVRfamRvbV9ET1Rfb3JnPiBhbmQKKyBCcmV0dCBNY0xhdWdobGluIDxicmV0dF9BVF9qZG9tX0RPVF9vcmc+LiAgRm9yIG1vcmUgaW5mb3JtYXRpb24KKyBvbiB0aGUgSkRPTSBQcm9qZWN0LCBwbGVhc2Ugc2VlIDxodHRwOi8vd3d3Lmpkb20ub3JnLz4uCisgCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitUaGUgZm9sbG93aW5nIGNvbXBvbmVudHMgYXJlIEJTRCBMaWNlbnNlZCAKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworRm9yOiBkb200ai1qYXItMS42LjEuamFyCisKKyAgICBDb250YWluaW5nIFByb2plY3QgVVJMOiBodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2RvbTRqLworICAgIAorQ29weXJpZ2h0IDIwMDEtMjAwNSAoQykgTWV0YVN0dWZmLCBMdGQuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2Ugb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uCisoIlNvZnR3YXJlIiksIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQKK3RoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CisKKzEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiBjb3B5cmlnaHQKKyAgIHN0YXRlbWVudHMgYW5kIG5vdGljZXMuICBSZWRpc3RyaWJ1dGlvbnMgbXVzdCBhbHNvIGNvbnRhaW4gYQorICAgY29weSBvZiB0aGlzIGRvY3VtZW50LgorIAorMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZQorICAgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZQorICAgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyCisgICBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorIAorMy4gVGhlIG5hbWUgIkRPTTRKIiBtdXN0IG5vdCBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZQorICAgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgU29mdHdhcmUgd2l0aG91dCBwcmlvciB3cml0dGVuCisgICBwZXJtaXNzaW9uIG9mIE1ldGFTdHVmZiwgTHRkLiAgRm9yIHdyaXR0ZW4gcGVybWlzc2lvbiwKKyAgIHBsZWFzZSBjb250YWN0IGRvbTRqLWluZm9AbWV0YXN0dWZmLmNvbS4KKyAKKzQuIFByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIFNvZnR3YXJlIG1heSBub3QgYmUgY2FsbGVkICJET000SiIKKyAgIG5vciBtYXkgIkRPTTRKIiBhcHBlYXIgaW4gdGhlaXIgbmFtZXMgd2l0aG91dCBwcmlvciB3cml0dGVuCisgICBwZXJtaXNzaW9uIG9mIE1ldGFTdHVmZiwgTHRkLiBET000SiBpcyBhIHJlZ2lzdGVyZWQKKyAgIHRyYWRlbWFyayBvZiBNZXRhU3R1ZmYsIEx0ZC4KKyAKKzUuIER1ZSBjcmVkaXQgc2hvdWxkIGJlIGdpdmVuIHRvIHRoZSBET000SiBQcm9qZWN0IC0gCisgICBodHRwOi8vd3d3LmRvbTRqLm9yZworIAorVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBNRVRBU1RVRkYsIExURC4gQU5EIENPTlRSSUJVVE9SUworYGBBUyBJUycnIEFORCBBTlkgRVhQUkVTU0VEIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQKK05PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQKK0ZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwKK01FVEFTVFVGRiwgTFRELiBPUiBJVFMgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwKK0lORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUworKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SCitTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKK0hPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwKK1NUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKK0FSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQKK09GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworcG9zdGdyZXNxbC1qYXItOS4xLTkwMS5qZGJjNC5qYXIKKwlDb250YWluaW5nIFByb2plY3QgVVJMOiBodHRwOi8vamRiYy5wb3N0Z3Jlc3FsLm9yZworCQorCVRoZSBQb3N0Z3JlU1FMIEpEQkMgZHJpdmVyIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBCU0QgbGljZW5zZSwgc2FtZSBhcyB0aGUgc2VydmVyLiBUaGUgc2ltcGxlc3QgZXhwbGFuYXRpb24gb2YgdGhlIGxpY2Vuc2luZyB0ZXJtcyBpcyB0aGF0IHlvdSBjYW4gZG8gd2hhdGV2ZXIgeW91IHdhbnQgd2l0aCB0aGUgcHJvZHVjdCBhbmQgc291cmNlIGNvZGUgYXMgbG9uZyBhcyB5b3UgZG9uJ3QgY2xhaW0geW91IHdyb3RlIGl0IG9yIHN1ZSB1cy4gWW91IHNob3VsZCBnaXZlIGl0IGEgcmVhZCB0aG91Z2gsIGl0J3Mgb25seSBoYWxmIGEgcGFnZS4KKworQ29weXJpZ2h0IChjKSAxOTk3LTIwMTAsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCitBbGwgcmlnaHRzIHJlc2VydmVkLgorCitSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKK21vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgorCisxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCisgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAorICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgorICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCiszLiBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cCBub3IgdGhlIG5hbWVzCisgICBvZiBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgorQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKK0FSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRQorTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKK1NVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KK0NPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCitBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQorUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworU0VSUCBMaWNlbnNlCisKK0ZpbGU6IHNlcnAtamFyLTEuMTMuMS5qYXIKKworQ29weXJpZ2h0IChjKSAyMDAyLTIwMDcsIEEuIEFicmFtIFdoaXRlCitBbGwgcmlnaHRzIHJlc2VydmVkLgorCitSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgCittb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKworKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgCisgIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIAorICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIAorICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyogTmVpdGhlciB0aGUgbmFtZSBvZiAnc2VycCcgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heQorICBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IAorICBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisKK1RISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiBBTkQKK0FOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIAorV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSAKK0RJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IKK0FOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAKKyhJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgCitMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gCitBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAKKyhJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIAorU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyBpQ2FsNGogLSBMaWNlbnNlCisgCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL2xpYi9pY2FsNGotYnVuZGxlLTEuMC4zLmphcgorIAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitDb3B5cmlnaHQgKGMpIDIwMTIsIEJlbiBGb3J0dW5hCitBbGwgcmlnaHRzIHJlc2VydmVkLgorCitSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKK21vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworYXJlIG1ldDoKKworCW8gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKK25vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKworCW8gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKK25vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKK2RvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisKKwlvIE5laXRoZXIgdGhlIG5hbWUgb2YgQmVuIEZvcnR1bmEgbm9yIHRoZSBuYW1lcyBvZiBhbnkgb3RoZXIgY29udHJpYnV0b3JzCittYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMgc29mdHdhcmUKK3dpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorCitUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCitBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IKK0NPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCitQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GCitMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORworTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTCitTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKworRm9yIHRoZSBjb21wb25lbnRzOgorCit3ZWJhcHBzL29wZW5tZWV0aW5ncy9lbWJlZC1jb21wcmVzc2VkLmpzCisKK3dlYmFwcHMvb3Blbm1lZXRpbmdzL3NjcmVlbnNoYXJpbmcvbG9nYmFjay1jbGFzc2ljLTEuMC4zLmphcgord2ViYXBwcy9vcGVubWVldGluZ3Mvc2NyZWVuc2hhcmluZy9sb2diYWNrLWNvcmUtMS4wLjMuamFyCitsaWIvbG9nYmFjay1jbGFzc2ljLTEuMC4zLmphcgorbGliL2xvZ2JhY2stY29yZS0xLjAuMy5qYXIKK2xpYi9qcnVieS0xLjYuNy4yLmphcgorCitFY2xpcHNlIFB1YmxpYyBMaWNlbnNlIC0gdiAxLjAKKworVEhFIEFDQ09NUEFOWUlORyBQUk9HUkFNIElTIFBST1ZJREVEIFVOREVSIFRIRSBURVJNUyBPRiBUSElTIEVDTElQU0UgUFVCTElDIExJQ0VOU0UgKCJBR1JFRU1FTlQiKS4gQU5ZIFVTRSwgUkVQUk9EVUNUSU9OIE9SIERJU1RSSUJVVElPTiBPRiBUSEUgUFJPR1JBTSBDT05TVElUVVRFUyBSRUNJUElFTlQnUyBBQ0NFUFRBTkNFIE9GIFRISVMgQUdSRUVNRU5ULgorCisxLiBERUZJTklUSU9OUworCisiQ29udHJpYnV0aW9uIiBtZWFuczoKKworYSkgaW4gdGhlIGNhc2Ugb2YgdGhlIGluaXRpYWwgQ29udHJpYnV0b3IsIHRoZSBpbml0aWFsIGNvZGUgYW5kIGRvY3VtZW50YXRpb24gZGlzdHJpYnV0ZWQgdW5kZXIgdGhpcyBBZ3JlZW1lbnQsIGFuZAorCitiKSBpbiB0aGUgY2FzZSBvZiBlYWNoIHN1YnNlcXVlbnQgQ29udHJpYnV0b3I6CisKK2kpIGNoYW5nZXMgdG8gdGhlIFByb2dyYW0sIGFuZAorCitpaSkgYWRkaXRpb25zIHRvIHRoZSBQcm9ncmFtOworCit3aGVyZSBzdWNoIGNoYW5nZXMgYW5kL29yIGFkZGl0aW9ucyB0byB0aGUgUHJvZ3JhbSBvcmlnaW5hdGUgZnJvbSBhbmQgYXJlIGRpc3RyaWJ1dGVkIGJ5IHRoYXQgcGFydGljdWxhciBDb250cmlidXRvci4gQSBDb250cmlidXRpb24gJ29yaWdpbmF0ZXMnIGZyb20gYSBDb250cmlidXRvciBpZiBpdCB3YXMgYWRkZWQgdG8gdGhlIFByb2dyYW0gYnkgc3VjaCBDb250cmlidXRvciBpdHNlbGYgb3IgYW55b25lIGFjdGluZyBvbiBzdWNoIENvbnRyaWJ1dG9yJ3MgYmVoYWxmLiBDb250cmlidXRpb25zIGRvIG5vdCBpbmNsdWRlIGFkZGl0aW9ucyB0byB0aGUgUHJvZ3JhbSB3aGljaDogKGkpIGFyZSBzZXBhcmF0ZSBtb2R1bGVzIG9mIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIGluIGNvbmp1bmN0aW9uIHdpdGggdGhlIFByb2dyYW0gdW5kZXIgdGhlaXIgb3duIGxpY2Vuc2UgYWdyZWVtZW50LCBhbmQgKGlpKSBhcmUgbm90IGRlcml2YXRpdmUgd29ya3Mgb2YgdGhlIFByb2dyYW0uCisKKyJDb250cmlidXRvciIgbWVhbnMgYW55IHBlcnNvbiBvciBlbnRpdHkgdGhhdCBkaXN0cmlidXRlcyB0aGUgUHJvZ3JhbS4KKworIkxpY2Vuc2VkIFBhdGVudHMiIG1lYW4gcGF0ZW50IGNsYWltcyBsaWNlbnNhYmxlIGJ5IGEgQ29udHJpYnV0b3Igd2hpY2ggYXJlIG5lY2Vzc2FyaWx5IGluZnJpbmdlZCBieSB0aGUgdXNlIG9yIHNhbGUgb2YgaXRzIENvbnRyaWJ1dGlvbiBhbG9uZSBvciB3aGVuIGNvbWJpbmVkIHdpdGggdGhlIFByb2dyYW0uCisKKyJQcm9ncmFtIiBtZWFucyB0aGUgQ29udHJpYnV0aW9ucyBkaXN0cmlidXRlZCBpbiBhY2NvcmRhbmNlIHdpdGggdGhpcyBBZ3JlZW1lbnQuCisKKyJSZWNpcGllbnQiIG1lYW5zIGFueW9uZSB3aG8gcmVjZWl2ZXMgdGhlIFByb2dyYW0gdW5kZXIgdGhpcyBBZ3JlZW1lbnQsIGluY2x1ZGluZyBhbGwgQ29udHJpYnV0b3JzLgorCisyLiBHUkFOVCBPRiBSSUdIVFMKKworYSkgU3ViamVjdCB0byB0aGUgdGVybXMgb2YgdGhpcyBBZ3JlZW1lbnQsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyBSZWNpcGllbnQgYSBub24tZXhjbHVzaXZlLCB3b3JsZHdpZGUsIHJveWFsdHktZnJlZSBjb3B5cmlnaHQgbGljZW5zZSB0byByZXByb2R1Y2UsIHByZXBhcmUgZGVyaXZhdGl2ZSB3b3JrcyBvZiwgcHVibGljbHkgZGlzcGxheSwgcHVibGljbHkgcGVyZm9ybSwgZGlzdHJpYnV0ZSBhbmQgc3VibGljZW5zZSB0aGUgQ29udHJpYnV0aW9uIG9mIHN1Y2ggQ29udHJpYnV0b3IsIGlmIGFueSwgYW5kIHN1Y2ggZGVyaXZhdGl2ZSB3b3JrcywgaW4gc291cmNlIGNvZGUgYW5kIG9iamVjdCBjb2RlIGZvcm0uCisKK2IpIFN1YmplY3QgdG8gdGhlIHRlcm1zIG9mIHRoaXMgQWdyZWVtZW50LCBlYWNoIENvbnRyaWJ1dG9yIGhlcmVieSBncmFudHMgUmVjaXBpZW50IGEgbm9uLWV4Y2x1c2l2ZSwgd29ybGR3aWRlLCByb3lhbHR5LWZyZWUgcGF0ZW50IGxpY2Vuc2UgdW5kZXIgTGljZW5zZWQgUGF0ZW50cyB0byBtYWtlLCB1c2UsIHNlbGwsIG9mZmVyIHRvIHNlbGwsIGltcG9ydCBhbmQgb3RoZXJ3aXNlIHRyYW5zZmVyIHRoZSBDb250cmlidXRpb24gb2Ygc3VjaCBDb250cmlidXRvciwgaWYgYW55LCBpbiBzb3VyY2UgY29kZSBhbmQgb2JqZWN0IGNvZGUgZm9ybS4gVGhpcyBwYXRlbnQgbGljZW5zZSBzaGFsbCBhcHBseSB0byB0aGUgY29tYmluYXRpb24gb2YgdGhlIENvbnRyaWJ1dGlvbiBhbmQgdGhlIFByb2dyYW0gaWYsIGF0IHRoZSB0aW1lIHRoZSBDb250cmlidXRpb24gaXMgYWRkZWQgYnkgdGhlIENvbnRyaWJ1dG9yLCBzdWNoIGFkZGl0aW9uIG9mIHRoZSBDb250cmlidXRpb24gY2F1c2VzIHN1Y2ggY29tYmluYXRpb24gdG8gYmUgY292ZXJlZCBieSB0aGUgTGljZW5zZWQgUGF0ZW50cy4gVGhlIHBhdGVudCBsaWNlbnNlIHNoYWxsIG5vdCBhcHBseSB0byBhbnkgb3RoZXIgY29tYmluYXRpb25zIHdoaWNoIGluY2x1ZGUgdGhlIENvbnRyaWJ1dGlvbi4gTm8gaGFyZHdhcmUgcGVyIHNlIGlzIGxpY2Vuc2VkIGhlcmV1bmRlci4KKworYykgUmVjaXBpZW50IHVuZGVyc3RhbmRzIHRoYXQgYWx0aG91Z2ggZWFjaCBDb250cmlidXRvciBncmFudHMgdGhlIGxpY2Vuc2VzIHRvIGl0cyBDb250cmlidXRpb25zIHNldCBmb3J0aCBoZXJlaW4sIG5vIGFzc3VyYW5jZXMgYXJlIHByb3ZpZGVkIGJ5IGFueSBDb250cmlidXRvciB0aGF0IHRoZSBQcm9ncmFtIGRvZXMgbm90IGluZnJpbmdlIHRoZSBwYXRlbnQgb3Igb3RoZXIgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBvZiBhbnkgb3RoZXIgZW50aXR5LiBFYWNoIENvbnRyaWJ1dG9yIGRpc2NsYWltcyBhbnkgbGlhYmlsaXR5IHRvIFJlY2lwaWVudCBmb3IgY2xhaW1zIGJyb3VnaHQgYnkgYW55IG90aGVyIGVudGl0eSBiYXNlZCBvbiBpbmZyaW5nZW1lbnQgb2YgaW50ZWxsZWN0dWFsIHByb3BlcnR5IHJpZ2h0cyBvciBvdGhlcndpc2UuIEFzIGEgY29uZGl0aW9uIHRvIGV4ZXJjaXNpbmcgdGhlIHJpZ2h0cyBhbmQgbGljZW5zZXMgZ3JhbnRlZCBoZXJldW5kZXIsIGVhY2ggUmVjaXBpZW50IGhlcmVieSBhc3N1bWVzIHNvbGUgcmVzcG9uc2liaWxpdHkgdG8gc2VjdXJlIGFueSBvdGhlciBpbnRlbGxlY3R1YWwgcHJvcGVydHkgcmlnaHRzIG5lZWRlZCwgaWYgYW55LiBGb3IgZXhhbXBsZSwgaWYgYSB0aGlyZCBwYXJ0eSBwYXRlbnQgbGljZW5zZSBpcyByZXF1aXJlZCB0byBhbGxvdyBSZWNpcGllbnQgdG8gZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSwgaXQgaXMgUmVjaXBpZW50J3MgcmVzcG9uc2liaWxpdHkgdG8gYWNxdWlyZSB0aGF0IGxpY2Vuc2UgYmVmb3JlIGRpc3RyaWJ1dGluZyB0aGUgUHJvZ3JhbS4KKworZCkgRWFjaCBDb250cmlidXRvciByZXByZXNlbnRzIHRoYXQgdG8gaXRzIGtub3dsZWRnZSBpdCBoYXMgc3VmZmljaWVudCBjb3B5cmlnaHQgcmlnaHRzIGluIGl0cyBDb250cmlidXRpb24sIGlmIGFueSwgdG8gZ3JhbnQgdGhlIGNvcHlyaWdodCBsaWNlbnNlIHNldCBmb3J0aCBpbiB0aGlzIEFncmVlbWVudC4KKworMy4gUkVRVUlSRU1FTlRTCisKK0EgQ29udHJpYnV0b3IgbWF5IGNob29zZSB0byBkaXN0cmlidXRlIHRoZSBQcm9ncmFtIGluIG9iamVjdCBjb2RlIGZvcm0gdW5kZXIgaXRzIG93biBsaWNlbnNlIGFncmVlbWVudCwgcHJvdmlkZWQgdGhhdDoKKworYSkgaXQgY29tcGxpZXMgd2l0aCB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhpcyBBZ3JlZW1lbnQ7IGFuZAorCitiKSBpdHMgbGljZW5zZSBhZ3JlZW1lbnQ6CisKK2kpIGVmZmVjdGl2ZWx5IGRpc2NsYWltcyBvbiBiZWhhbGYgb2YgYWxsIENvbnRyaWJ1dG9ycyBhbGwgd2FycmFudGllcyBhbmQgY29uZGl0aW9ucywgZXhwcmVzcyBhbmQgaW1wbGllZCwgaW5jbHVkaW5nIHdhcnJhbnRpZXMgb3IgY29uZGl0aW9ucyBvZiB0aXRsZSBhbmQgbm9uLWluZnJpbmdlbWVudCwgYW5kIGltcGxpZWQgd2FycmFudGllcyBvciBjb25kaXRpb25zIG9mIG1lcmNoYW50YWJpbGl0eSBhbmQgZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2U7CisKK2lpKSBlZmZlY3RpdmVseSBleGNsdWRlcyBvbiBiZWhhbGYgb2YgYWxsIENvbnRyaWJ1dG9ycyBhbGwgbGlhYmlsaXR5IGZvciBkYW1hZ2VzLCBpbmNsdWRpbmcgZGlyZWN0LCBpbmRpcmVjdCwgc3BlY2lhbCwgaW5jaWRlbnRhbCBhbmQgY29uc2VxdWVudGlhbCBkYW1hZ2VzLCBzdWNoIGFzIGxvc3QgcHJvZml0czsKKworaWlpKSBzdGF0ZXMgdGhhdCBhbnkgcHJvdmlzaW9ucyB3aGljaCBkaWZmZXIgZnJvbSB0aGlzIEFncmVlbWVudCBhcmUgb2ZmZXJlZCBieSB0aGF0IENvbnRyaWJ1dG9yIGFsb25lIGFuZCBub3QgYnkgYW55IG90aGVyIHBhcnR5OyBhbmQKKworaXYpIHN0YXRlcyB0aGF0IHNvdXJjZSBjb2RlIGZvciB0aGUgUHJvZ3JhbSBpcyBhdmFpbGFibGUgZnJvbSBzdWNoIENvbnRyaWJ1dG9yLCBhbmQgaW5mb3JtcyBsaWNlbnNlZXMgaG93IHRvIG9idGFpbiBpdCBpbiBhIHJlYXNvbmFibGUgbWFubmVyIG9uIG9yIHRocm91Z2ggYSBtZWRpdW0gY3VzdG9tYXJpbHkgdXNlZCBmb3Igc29mdHdhcmUgZXhjaGFuZ2UuCisKK1doZW4gdGhlIFByb2dyYW0gaXMgbWFkZSBhdmFpbGFibGUgaW4gc291cmNlIGNvZGUgZm9ybToKKworYSkgaXQgbXVzdCBiZSBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGlzIEFncmVlbWVudDsgYW5kCisKK2IpIGEgY29weSBvZiB0aGlzIEFncmVlbWVudCBtdXN0IGJlIGluY2x1ZGVkIHdpdGggZWFjaCBjb3B5IG9mIHRoZSBQcm9ncmFtLgorCitDb250cmlidXRvcnMgbWF5IG5vdCByZW1vdmUgb3IgYWx0ZXIgYW55IGNvcHlyaWdodCBub3RpY2VzIGNvbnRhaW5lZCB3aXRoaW4gdGhlIFByb2dyYW0uCisKK0VhY2ggQ29udHJpYnV0b3IgbXVzdCBpZGVudGlmeSBpdHNlbGYgYXMgdGhlIG9yaWdpbmF0b3Igb2YgaXRzIENvbnRyaWJ1dGlvbiwgaWYgYW55LCBpbiBhIG1hbm5lciB0aGF0IHJlYXNvbmFibHkgYWxsb3dzIHN1YnNlcXVlbnQgUmVjaXBpZW50cyB0byBpZGVudGlmeSB0aGUgb3JpZ2luYXRvciBvZiB0aGUgQ29udHJpYnV0aW9uLgorCis0LiBDT01NRVJDSUFMIERJU1RSSUJVVElPTgorCitDb21tZXJjaWFsIGRpc3RyaWJ1dG9ycyBvZiBzb2Z0d2FyZSBtYXkgYWNjZXB0IGNlcnRhaW4gcmVzcG9uc2liaWxpdGllcyB3aXRoIHJlc3BlY3QgdG8gZW5kIHVzZXJzLCBidXNpbmVzcyBwYXJ0bmVycyBhbmQgdGhlIGxpa2UuIFdoaWxlIHRoaXMgbGljZW5zZSBpcyBpbnRlbmRlZCB0byBmYWNpbGl0YXRlIHRoZSBjb21tZXJjaWFsIHVzZSBvZiB0aGUgUHJvZ3JhbSwgdGhlIENvbnRyaWJ1dG9yIHdobyBpbmNsdWRlcyB0aGUgUHJvZ3JhbSBpbiBhIGNvbW1lcmNpYWwgcHJvZHVjdCBvZmZlcmluZyBzaG91bGQgZG8gc28gaW4gYSBtYW5uZXIgd2hpY2ggZG9lcyBub3QgY3JlYXRlIHBvdGVudGlhbCBsaWFiaWxpdHkgZm9yIG90aGVyIENvbnRyaWJ1dG9ycy4gVGhlcmVmb3JlLCBpZiBhIENvbnRyaWJ1dG9yIGluY2x1ZGVzIHRoZSBQcm9ncmFtIGluIGEgY29tbWVyY2lhbCBwcm9kdWN0IG9mZmVyaW5nLCBzdWNoIENvbnRyaWJ1dG9yICgiQ29tbWVyY2lhbCBDb250cmlidXRvciIpIGhlcmVieSBhZ3JlZXMgdG8gZGVmZW5kIGFuZCBpbmRlbW5pZnkgZXZlcnkgb3RoZXIgQ29udHJpYnV0b3IgKCJJbmRlbW5pZmllZCBDb250cmlidXRvciIpIGFnYWluc3QgYW55IGxvc3NlcywgZGFtYWdlcyBhbmQgY29zdHMgKGNvbGxlY3RpdmVseSAiTG9zc2VzIikgYXJpc2luZyBmcm9tIGNsYWltcywgbGF3c3VpdHMgYW5kIG90aGVyIGxlZ2FsIGFjdGlvbnMgYnJvdWdodCBieSBhIHRoaXJkIHBhcnR5IGFnYWluc3QgdGhlIEluZGVtbmlmaWVkIENvbnRyaWJ1dG9yIHRvIHRoZSBleHRlbnQgY2F1c2VkIGJ5IHRoZSBhY3RzIG9yIG9taXNzaW9ucyBvZiBzdWNoIENvbW1lcmNpYWwgQ29udHJpYnV0b3IgaW4gY29ubmVjdGlvbiB3aXRoIGl0cyBkaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0gaW4gYSBjb21tZXJjaWFsIHByb2R1Y3Qgb2ZmZXJpbmcuIFRoZSBvYmxpZ2F0aW9ucyBpbiB0aGlzIHNlY3Rpb24gZG8gbm90IGFwcGx5IHRvIGFueSBjbGFpbXMgb3IgTG9zc2VzIHJlbGF0aW5nIHRvIGFueSBhY3R1YWwgb3IgYWxsZWdlZCBpbnRlbGxlY3R1YWwgcHJvcGVydHkgaW5mcmluZ2VtZW50LiBJbiBvcmRlciB0byBxdWFsaWZ5LCBhbiBJbmRlbW5pZmllZCBDb250cmlidXRvciBtdXN0OiBhKSBwcm9tcHRseSBub3RpZnkgdGhlIENvbW1lcmNpYWwgQ29udHJpYnV0b3IgaW4gd3JpdGluZyBvZiBzdWNoIGNsYWltLCBhbmQgYikgYWxsb3cgdGhlIENvbW1lcmNpYWwgQ29udHJpYnV0b3IgdG8gY29udHJvbCwgYW5kIGNvb3BlcmF0ZSB3aXRoIHRoZSBDb21tZXJjaWFsIENvbnRyaWJ1dG9yIGluLCB0aGUgZGVmZW5zZSBhbmQgYW55IHJlbGF0ZWQgc2V0dGxlbWVudCBuZWdvdGlhdGlvbnMuIFRoZSBJbmRlbW5pZmllZCBDb250cmlidXRvciBtYXkgcGFydGljaXBhdGUgaW4gYW55IHN1Y2ggY2xhaW0gYXQgaXRzIG93biBleHBlbnNlLgorCitGb3IgZXhhbXBsZSwgYSBDb250cmlidXRvciBtaWdodCBpbmNsdWRlIHRoZSBQcm9ncmFtIGluIGEgY29tbWVyY2lhbCBwcm9kdWN0IG9mZmVyaW5nLCBQcm9kdWN0IFguIFRoYXQgQ29udHJpYnV0b3IgaXMgdGhlbiBhIENvbW1lcmNpYWwgQ29udHJpYnV0b3IuIElmIHRoYXQgQ29tbWVyY2lhbCBDb250cmlidXRvciB0aGVuIG1ha2VzIHBlcmZvcm1hbmNlIGNsYWltcywgb3Igb2ZmZXJzIHdhcnJhbnRpZXMgcmVsYXRlZCB0byBQcm9kdWN0IFgsIHRob3NlIHBlcmZvcm1hbmNlIGNsYWltcyBhbmQgd2FycmFudGllcyBhcmUgc3VjaCBDb21tZXJjaWFsIENvbnRyaWJ1dG9yJ3MgcmVzcG9uc2liaWxpdHkgYWxvbmUuIFVuZGVyIHRoaXMgc2VjdGlvbiwgdGhlIENvbW1lcmNpYWwgQ29udHJpYnV0b3Igd291bGQgaGF2ZSB0byBkZWZlbmQgY2xhaW1zIGFnYWluc3QgdGhlIG90aGVyIENvbnRyaWJ1dG9ycyByZWxhdGVkIHRvIHRob3NlIHBlcmZvcm1hbmNlIGNsYWltcyBhbmQgd2FycmFudGllcywgYW5kIGlmIGEgY291cnQgcmVxdWlyZXMgYW55IG90aGVyIENvbnRyaWJ1dG9yIHRvIHBheSBhbnkgZGFtYWdlcyBhcyBhIHJlc3VsdCwgdGhlIENvbW1lcmNpYWwgQ29udHJpYnV0b3IgbXVzdCBwYXkgdGhvc2UgZGFtYWdlcy4KKworNS4gTk8gV0FSUkFOVFkKKworRVhDRVBUIEFTIEVYUFJFU1NMWSBTRVQgRk9SVEggSU4gVEhJUyBBR1JFRU1FTlQsIFRIRSBQUk9HUkFNIElTIFBST1ZJREVEIE9OIEFOICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBFSVRIRVIgRVhQUkVTUyBPUiBJTVBMSUVEIElOQ0xVRElORywgV0lUSE9VVCBMSU1JVEFUSU9OLCBBTlkgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIFRJVExFLCBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFkgT1IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIEVhY2ggUmVjaXBpZW50IGlzIHNvbGVseSByZXNwb25zaWJsZSBmb3IgZGV0ZXJtaW5pbmcgdGhlIGFwcHJvcHJpYXRlbmVzcyBvZiB1c2luZyBhbmQgZGlzdHJpYnV0aW5nIHRoZSBQcm9ncmFtIGFuZCBhc3N1bWVzIGFsbCByaXNrcyBhc3NvY2lhdGVkIHdpdGggaXRzIGV4ZXJjaXNlIG9mIHJpZ2h0cyB1bmRlciB0aGlzIEFncmVlbWVudCAsIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gdGhlIHJpc2tzIGFuZCBjb3N0cyBvZiBwcm9ncmFtIGVycm9ycywgY29tcGxpYW5jZSB3aXRoIGFwcGxpY2FibGUgbGF3cywgZGFtYWdlIHRvIG9yIGxvc3Mgb2YgZGF0YSwgcHJvZ3JhbXMgb3IgZXF1aXBtZW50LCBhbmQgdW5hdmFpbGFiaWxpdHkgb3IgaW50ZXJydXB0aW9uIG9mIG9wZXJhdGlvbnMuCisKKzYuIERJU0NMQUlNRVIgT0YgTElBQklMSVRZCisKK0VYQ0VQVCBBUyBFWFBSRVNTTFkgU0VUIEZPUlRIIElOIFRISVMgQUdSRUVNRU5ULCBORUlUSEVSIFJFQ0lQSUVOVCBOT1IgQU5ZIENPTlRSSUJVVE9SUyBTSEFMTCBIQVZFIEFOWSBMSUFCSUxJVFkgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiBMT1NUIFBST0ZJVFMpLCBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9SIERJU1RSSUJVVElPTiBPRiBUSEUgUFJPR1JBTSBPUiBUSEUgRVhFUkNJU0UgT0YgQU5ZIFJJR0hUUyBHUkFOVEVEIEhFUkVVTkRFUiwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRVMuCisKKzcuIEdFTkVSQUwKKworSWYgYW55IHByb3Zpc2lvbiBvZiB0aGlzIEFncmVlbWVudCBpcyBpbnZhbGlkIG9yIHVuZW5mb3JjZWFibGUgdW5kZXIgYXBwbGljYWJsZSBsYXcsIGl0IHNoYWxsIG5vdCBhZmZlY3QgdGhlIHZhbGlkaXR5IG9yIGVuZm9yY2VhYmlsaXR5IG9mIHRoZSByZW1haW5kZXIgb2YgdGhlIHRlcm1zIG9mIHRoaXMgQWdyZWVtZW50LCBhbmQgd2l0aG91dCBmdXJ0aGVyIGFjdGlvbiBieSB0aGUgcGFydGllcyBoZXJldG8sIHN1Y2ggcHJvdmlzaW9uIHNoYWxsIGJlIHJlZm9ybWVkIHRvIHRoZSBtaW5pbXVtIGV4dGVudCBuZWNlc3NhcnkgdG8gbWFrZSBzdWNoIHByb3Zpc2lvbiB2YWxpZCBhbmQgZW5mb3JjZWFibGUuCisKK0lmIFJlY2lwaWVudCBpbnN0aXR1dGVzIHBhdGVudCBsaXRpZ2F0aW9uIGFnYWluc3QgYW55IGVudGl0eSAoaW5jbHVkaW5nIGEgY3Jvc3MtY2xhaW0gb3IgY291bnRlcmNsYWltIGluIGEgbGF3c3VpdCkgYWxsZWdpbmcgdGhhdCB0aGUgUHJvZ3JhbSBpdHNlbGYgKGV4Y2x1ZGluZyBjb21iaW5hdGlvbnMgb2YgdGhlIFByb2dyYW0gd2l0aCBvdGhlciBzb2Z0d2FyZSBvciBoYXJkd2FyZSkgaW5mcmluZ2VzIHN1Y2ggUmVjaXBpZW50J3MgcGF0ZW50KHMpLCB0aGVuIHN1Y2ggUmVjaXBpZW50J3MgcmlnaHRzIGdyYW50ZWQgdW5kZXIgU2VjdGlvbiAyKGIpIHNoYWxsIHRlcm1pbmF0ZSBhcyBvZiB0aGUgZGF0ZSBzdWNoIGxpdGlnYXRpb24gaXMgZmlsZWQuCisKK0FsbCBSZWNpcGllbnQncyByaWdodHMgdW5kZXIgdGhpcyBBZ3JlZW1lbnQgc2hhbGwgdGVybWluYXRlIGlmIGl0IGZhaWxzIHRvIGNvbXBseSB3aXRoIGFueSBvZiB0aGUgbWF0ZXJpYWwgdGVybXMgb3IgY29uZGl0aW9ucyBvZiB0aGlzIEFncmVlbWVudCBhbmQgZG9lcyBub3QgY3VyZSBzdWNoIGZhaWx1cmUgaW4gYSByZWFzb25hYmxlIHBlcmlvZCBvZiB0aW1lIGFmdGVyIGJlY29taW5nIGF3YXJlIG9mIHN1Y2ggbm9uY29tcGxpYW5jZS4gSWYgYWxsIFJlY2lwaWVudCdzIHJpZ2h0cyB1bmRlciB0aGlzIEFncmVlbWVudCB0ZXJtaW5hdGUsIFJlY2lwaWVudCBhZ3JlZXMgdG8gY2Vhc2UgdXNlIGFuZCBkaXN0cmlidXRpb24gb2YgdGhlIFByb2dyYW0gYXMgc29vbiBhcyByZWFzb25hYmx5IHByYWN0aWNhYmxlLiBIb3dldmVyLCBSZWNpcGllbnQncyBvYmxpZ2F0aW9ucyB1bmRlciB0aGlzIEFncmVlbWVudCBhbmQgYW55IGxpY2Vuc2VzIGdyYW50ZWQgYnkgUmVjaXBpZW50IHJlbGF0aW5nIHRvIHRoZSBQcm9ncmFtIHNoYWxsIGNvbnRpbnVlIGFuZCBzdXJ2aXZlLgorCitFdmVyeW9uZSBpcyBwZXJtaXR0ZWQgdG8gY29weSBhbmQgZGlzdHJpYnV0ZSBjb3BpZXMgb2YgdGhpcyBBZ3JlZW1lbnQsIGJ1dCBpbiBvcmRlciB0byBhdm9pZCBpbmNvbnNpc3RlbmN5IHRoZSBBZ3JlZW1lbnQgaXMgY29weXJpZ2h0ZWQgYW5kIG1heSBvbmx5IGJlIG1vZGlmaWVkIGluIHRoZSBmb2xsb3dpbmcgbWFubmVyLiBUaGUgQWdyZWVtZW50IFN0ZXdhcmQgcmVzZXJ2ZXMgdGhlIHJpZ2h0IHRvIHB1Ymxpc2ggbmV3IHZlcnNpb25zIChpbmNsdWRpbmcgcmV2aXNpb25zKSBvZiB0aGlzIEFncmVlbWVudCBmcm9tIHRpbWUgdG8gdGltZS4gTm8gb25lIG90aGVyIHRoYW4gdGhlIEFncmVlbWVudCBTdGV3YXJkIGhhcyB0aGUgcmlnaHQgdG8gbW9kaWZ5IHRoaXMgQWdyZWVtZW50LiBUaGUgRWNsaXBzZSBGb3VuZGF0aW9uIGlzIHRoZSBpbml0aWFsIEFncmVlbWVudCBTdGV3YXJkLiBUaGUgRWNsaXBzZSBGb3VuZGF0aW9uIG1heSBhc3NpZ24gdGhlIHJlc3BvbnNpYmlsaXR5IHRvIHNlcnZlIGFzIHRoZSBBZ3JlZW1lbnQgU3Rld2FyZCB0byBhIHN1aXRhYmxlIHNlcGFyYXRlIGVudGl0eS4gRWFjaCBuZXcgdmVyc2lvbiBvZiB0aGUgQWdyZWVtZW50IHdpbGwgYmUgZ2l2ZW4gYSBkaXN0aW5ndWlzaGluZyB2ZXJzaW9uIG51bWJlci4gVGhlIFByb2dyYW0gKGluY2x1ZGluZyBDb250cmlidXRpb25zKSBtYXkgYWx3YXlzIGJlIGRpc3RyaWJ1dGVkIHN1YmplY3QgdG8gdGhlIHZlcnNpb24gb2YgdGhlIEFncmVlbWVudCB1bmRlciB3aGljaCBpdCB3YXMgcmVjZWl2ZWQuIEluIGFkZGl0aW9uLCBhZnRlciBhIG5ldyB2ZXJzaW9uIG9mIHRoZSBBZ3JlZW1lbnQgaXMgcHVibGlzaGVkLCBDb250cmlidXRvciBtYXkgZWxlY3QgdG8gZGlzdHJpYnV0ZSB0aGUgUHJvZ3JhbSAoaW5jbHVkaW5nIGl0cyBDb250cmlidXRpb25zKSB1bmRlciB0aGUgbmV3IHZlcnNpb24uIEV4Y2VwdCBhcyBleHByZXNzbHkgc3RhdGVkIGluIFNlY3Rpb25zIDIoYSkgYW5kIDIoYikgYWJvdmUsIFJlY2lwaWVudCByZWNlaXZlcyBubyByaWdodHMgb3IgbGljZW5zZXMgdG8gdGhlIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBvZiBhbnkgQ29udHJpYnV0b3IgdW5kZXIgdGhpcyBBZ3JlZW1lbnQsIHdoZXRoZXIgZXhwcmVzc2x5LCBieSBpbXBsaWNhdGlvbiwgZXN0b3BwZWwgb3Igb3RoZXJ3aXNlLiBBbGwgcmlnaHRzIGluIHRoZSBQcm9ncmFtIG5vdCBleHByZXNzbHkgZ3JhbnRlZCB1bmRlciB0aGlzIEFncmVlbWVudCBhcmUgcmVzZXJ2ZWQuCisKK1RoaXMgQWdyZWVtZW50IGlzIGdvdmVybmVkIGJ5IHRoZSBsYXdzIG9mIHRoZSBTdGF0ZSBvZiBOZXcgWW9yayBhbmQgdGhlIGludGVsbGVjdHVhbCBwcm9wZXJ0eSBsYXdzIG9mIHRoZSBVbml0ZWQgU3RhdGVzIG9mIEFtZXJpY2EuIE5vIHBhcnR5IHRvIHRoaXMgQWdyZWVtZW50IHdpbGwgYnJpbmcgYSBsZWdhbCBhY3Rpb24gdW5kZXIgdGhpcyBBZ3JlZW1lbnQgbW9yZSB0aGFuIG9uZSB5ZWFyIGFmdGVyIHRoZSBjYXVzZSBvZiBhY3Rpb24gYXJvc2UuIEVhY2ggcGFydHkgd2FpdmVzIGl0cyByaWdodHMgdG8gYSBqdXJ5IHRyaWFsIGluIGFueSByZXN1bHRpbmcgbGl0aWdhdGlvbi4KKworCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK0ZvciBjb21wb25lbnQ6CisKK2xpYi9qeXRob24tc3RhbmRhbG9uZS0yLjUuMi5qYXIKKworSnl0aG9uIDIuMCwgMi4xIExpY2Vuc2UKKworQ29weXJpZ2h0IChjKSAyMDAwLCAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3IEp5dGhvbiBEZXZlbG9wZXJzIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKworICAgICAgICBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgICAgICAgIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgSnl0aG9uIERldmVsb3BlcnMgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKworVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMnJyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgUkVHRU5UUyBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCitGb3IgY29tcG9uZW50czoKKworY29pbi1zbGlkZXItc3R5bGVzLmNzcworY29sb3Jib3guY3NzCitqcXVlcnktdWkuY3NzCitqcXVlcnkudWkubWVudWJhci5qcworanF1ZXJ5LnVpLm1lbnViYXIuY3NzCitqcXVlcnktdWktMS45LjAuY3VzdG9tLm1pbi5qcworanF1ZXJ5LXVpLTEuOS4wLmN1c3RvbS5taW4uY3NzCisKK2NvaW4tc2xpZGVyLm1pbi5qcwkKK2pxdWVyeS0xLjcuMS5taW4uanMJCitqcXVlcnkuY29sb3Jib3guanMJCitqcXVlcnkudWkuYWNjb3JkaW9uLmpzCQoranF1ZXJ5LnVpLmNvcmUuanMJCitqcXVlcnkudWkud2lkZ2V0LmpzCisKK2JvcmRlci5wbmcJCQkJCQordWktYmdfZmxhdF83NV9mZmZmZmZfNDB4MTAwLnBuZwkJCQordWktaWNvbnNfMjIyMjIyXzI1NngyNDAucG5nCitjb250cm9scy5wbmcJCQkJCQordWktYmdfZ2xhc3NfNTVfZmJmOWVlXzF4NDAwLnBuZwkJCQordWktaWNvbnNfMmU4M2ZmXzI1NngyNDAucG5nCit1aS1iZ19nbGFzc182NV9mZmZmZmZfMXg0MDAucG5nCQkJCit1aS1pY29uc180NTQ1NDVfMjU2eDI0MC5wbmcKK2xvYWRpbmcuZ2lmCQkJCQkKK3VpLWJnX2dsYXNzXzc1X2RhZGFkYV8xeDQwMC5wbmcJCQkKK3VpLWljb25zXzg4ODg4OF8yNTZ4MjQwLnBuZworbG9hZGluZ19iYWNrZ3JvdW5kLnBuZwkJCQkKK3VpLWJnX2dsYXNzXzc1X2U2ZTZlNl8xeDQwMC5wbmcJCQkKK3VpLWljb25zX2NkMGEwYV8yNTZ4MjQwLnBuZworb3ZlcmxheS5wbmcJCQkJCQordWktYmdfZ2xhc3NfOTVfZmVmMWVjXzF4NDAwLnBuZwordWktYmdfZmxhdF8wX2FhYWFhYV80MHgxMDAucG5nCQkJCit1aS1iZ19oaWdobGlnaHQtc29mdF83NV9jY2NjY2NfMXgxMDAucG5nCitib3JkZXJCb3R0b21DZW50ZXIucG5nCQorYm9yZGVyQm90dG9tUmlnaHQucG5nCQorYm9yZGVyTWlkZGxlUmlnaHQucG5nCQorYm9yZGVyVG9wTGVmdC5wbmcKK2JvcmRlckJvdHRvbUxlZnQucG5nCQorYm9yZGVyTWlkZGxlTGVmdC5wbmcJCitib3JkZXJUb3BDZW50ZXIucG5nCQorYm9yZGVyVG9wUmlnaHQucG5nCisKK0pRdWVyeTogaHR0cDovL2pxdWVyeS5jb20vCitKUXVlcnkgVUk6IGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9qcXVlcnktdWkvCitDb2xvcmJveCBQbHVnaW46IGh0dHA6Ly93d3cuamFja2xtb29yZS5jb20vY29sb3Jib3gKK0NvaW5zbGlkZXIgUGx1Z2luOiBodHRwczovL2NvZGUuZ29vZ2xlLmNvbS9wL2NvaW4tc2xpZGVyLworCitodHRwczovL2dpdGh1Yi5jb20vanF1ZXJ5L2pxdWVyeS9ibG9iL21hc3Rlci9NSVQtTElDRU5TRS50eHQKKworQ29weXJpZ2h0IChjKSAyMDEyIGpRdWVyeSBGb3VuZGF0aW9uIGFuZCBvdGhlciBjb250cmlidXRvcnMsCitodHRwOi8vanF1ZXJ5LmNvbS8KKworUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCithIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKKyJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKK3dpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwKK2Rpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0bworcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCit0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisKK1RoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlCitpbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKworVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCitFWFBSRVNTIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKK01FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECitOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFCitMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OCitPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04KK1dJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgorCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKK2Z1bGxjYWxlbmRhci5jc3MgCitmdWxsY2FsZW5kYXIucHJpbnQuY3NzIAorZnVsbGNhbGVuZGFyLm1pbi5qcworCisgQ29weXJpZ2h0IChjKSAyMDExIEFkYW0gU2hhdworIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgR1BMIGxpY2Vuc2VzLCBsb2NhdGVkIGluCisgTUlULUxJQ0VOU0UudHh0IGFuZCBHUEwtTElDRU5TRS50eHQgcmVzcGVjdGl2ZWx5LgorCmRpZmYgLS1naXQgYS9OT1RJQ0UgYi9OT1RJQ0UKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2JkZjI5YwotLS0gL2Rldi9udWxsCisrKyBiL05PVElDRQpAQCAtMCwwICsxLDExIEBACitBcGFjaGUgT3Blbk1lZXRpbmdzDQorQ29weXJpZ2h0IDIwMTEtMjAxMyBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24NCisNCitUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGF0DQorVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChodHRwOi8vd3d3LmFwYWNoZS5vcmcvKS4NCisNCitUaGlzIHByb2R1Y3QgaW5jbHVkZXMgaWNvbnMgZnJvbSBGYW1GYW1GYW0gSWNvbiBTZXQgU2lsay4NCitodHRwOi8vd3d3LmZhbWZhbWZhbS5jb20vbGFiL2ljb25zL3NpbGsvDQorDQorVGhpcyBwcm9kdWN0IGluY2x1ZGVzIGljb25zIGZyb20gWXVzdWtlIEthbWl5YW1hbmUuDQoraHR0cDovL3AueXVzdWtla2FtaXlhbWFuZS5jb20vDQpkaWZmIC0tZ2l0IGEvUkVBRE1FIGIvUkVBRE1FCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJiMGViMWQKLS0tIC9kZXYvbnVsbAorKysgYi9SRUFETUUKQEAgLTAsMCArMSwxMDkgQEAKK0FwYWNoZSBPcGVuTWVldGluZ3MgLSBSRUFETUUNCitMaWNlbnNlZCB1bmRlciBBcGFjaGUgTGljZW5zZSAyLjAgLSBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KKw0KK0Fib3V0DQorPT09PT0NCitBcGFjaGUgT3Blbm1lZXRpbmdzIHByb3ZpZGVzIHZpZGVvIGNvbmZlcmVuY2luZywgaW5zdGFudCBtZXNzYWdpbmcsIHdoaXRlIGJvYXJkLA0KK2NvbGxhYm9yYXRpdmUgZG9jdW1lbnQgZWRpdGluZyBhbmQgb3RoZXIgZ3JvdXB3YXJlIHRvb2xzIHVzaW5nIEFQSSBmdW5jdGlvbnMgb2YgDQordGhlIFJlZDUgU3RyZWFtaW5nIFNlcnZlciBmb3IgUmVtb3RpbmcgYW5kIFN0cmVhbWluZy4gDQorDQorDQorUmVsZWFzZSBOb3RlcyAyLjEuMQ0KKz09PT09PT09PT09PT0NCitzZWUgQ0hBTkdFTE9HIGZpbGUgZm9yIGRldGFpbGVkIGxvZw0KKw0KK0J1ZyBmaXggcmVsZWFzZSBmb3IgMi4xLjANCisNCitSZWxlYXNlIE5vdGVzIDIuMQ0KKz09PT09PT09PT09PT0NCitzZWUgQ0hBTkdFTE9HIGZpbGUgZm9yIGRldGFpbGVkIGxvZw0KKw0KK19JbnRlZ3JhdGlvbiB3aXRoIEFzdGVyaXNrXw0KK1NJUC9WT0lQIGludGVncmF0aW9uIHdpdGggQXN0ZXJpc2sgd2FzIHJlZmFjdG9yZWQuIA0KK0NvbmZicmlkZ2UgYXBwbGljYXRpb24gaXMgbm93IHVzZWQgaW5zdGVhZCBvZiBNZWV0bWUgZm9yIHRoZSBjb25mZXJlbmNlcy4NCitTb3VuZCBxdWFsaXR5IGFuZCBTSVAgdHJhbnNwb3J0IHN0YWJpbGl0eSB3YXMgc2lnbmlmaWNhbXRseSBpbXByb3ZlZC4NCitCYXNpYyBzdXBwb3J0IGZvciB2aWRlbyBpcyBhZGRlZCAoaXMgdW5zdGFibGUgYW5kIGluIGJldGEgdmVyc2lvbiBzdGFnZSBub3cpLg0KK1NlZSBhbHNvOiBodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvcmVkNXNpcC1pbnRlZ3JhdGlvbl8yLjEuaHRtbA0KKw0KK19JbXByb3ZpbmcgdGhlIHNvdW5kIGFuZCB2aWRlbyBxdWFsaXR5Xw0KK0FsbCB0aGUgYXVkaW8vdmlkZW8gcmVsYXRlZCBjb21wb25lbnRzIG5vdyB1c2UgU1dGMTEgZm9yIGJyb2FkY2FzdGluZyBhbmQgDQorcmVjZWl2aW5nIGF1ZGlvIGFuZCB2aWRlbyBzaWduYWxzLiANCitFY2hvIGNhbmNlbGxhdGlvbiBjYW4gYmUgZW5hYmxlZCBpbiB0aGUgY29uZmlnLiANCitIMjY0IHZpZGVvIGNvZGVjIGlzIG5vdyB1c2VkIGluc3RlYWQgb2YgSDI2MyB0byBlbmFibGUgU0lQIHZpZGVvIHN1cHBvcnQuDQorDQorX1ByaXZhdGUgYW5kIG1vZGVyYXRlZCBjaGF0Xw0KK0FiaWxpdHkgdG8gc2VuZCBwcml2YXRlIGNoYXQgbWVzc2FnZXMgaW4gdGhlIHJvb20gaXMgYWRkZWQgYXMgd2VsbCBhcyB0aGUgY2hhdCANCittb2RlcmF0aW9uIGZ1bm1jdGlvbmFsaXR5Lg0KKw0KK19TTVMgc2VuZGluZyBtb2R1bGVfDQorUG9zc2liaWxpdHkgdG8gc2VuZCBTTVMgbWVzc2FnZSBhcyBhIG1lZXRpbmcgcmVtaW5kZXIgaXMgYWRkZWQuDQorU2VlIGFsc286IGh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1NNUytTZW5kaW5nK01vZHVsZQ0KKw0KK19OZXR3b3JrIHRlc3RpbmcgdG9vbC9zY3JpcHRfDQorTmV0d29yayB0ZXN0aW5nIHRvb2wgaXMgaW1wbGVtZW50ZWQgYW5kIGl0cyBsaW5rIGlzIGFkZGVkIHRvIHRoZSBsb2dpbiBwYWdlLg0KK1NlZSBhbHNvOiBodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9Db25uZWN0aW9uK3Rlc3RpbmcrdG9vbA0KKw0KK19JbXByb3ZlbWVudHMgaW4gdGhlIG1haWwgc2VuZGluZyBwcm9jZXNzXw0KK05vdyBlLW1haWxzIGFyZSByZS1zZW5kIGFnYWluIGluIGNhc2Ugb2YgdW5zdWNjZXNzZnVsbCByZXN1bHQgYXQgdGhlIGZpcnN0IA0KK2F0dGVtcHQgb3IgT3Blbk1lZXRpbmdzIHJlLXN0YXJ0IGJlZm9yZSB0aGUgc2VuZGluZy4gDQorU01UUCBzZXR0aW5nIHVwZGF0ZXMgbm93IHRha2VzIGVmZmVjdCBqdXN0IGFmdGVyIHRoZXkgc2F2aW5nIHdoZXJlYXMgcHJldmlvdXNseSANCit0aGV5IHN0YXJ0ZWQgdG8gd29yayBhZnRlciB0aGUgT3Blbk1lZXRpbmdzIHJlLXN0YXJ0IG9ubHkuDQorDQorX0NhbGVuZGFyXw0KK01lc3NhZ2VzIGFib3V0IHRoZSBtZWV0aW5nIHVwZGF0ZXMgYXJlIHNlbnQgb25seSB3aGVuIHN1YnN0YW50aWFsIGNoYW5nZXMgd2VyZSBtYWRlLiANCitNdWx0aXBsZSBleHRlcm5hbCBhdHRlbmRlZXMgY2FuIGJlIGFkZGVkIGFzIG9uZSBvcGVyYXRpb24sIGl0J3Mgbm93IHBvc3NpYmxlIHRvIA0KK3NwZWNpZnkgdXNlciBuYW1lIGZvciBleHRlcm5hbCBndWVzdHMgKHVzZXIgd2lsbCBhcHBlYXIgd2l0aCB0aGlzIG5hbWUgaW4gdGhlIHVzZXIgDQorbGlzdCBpbiB0aGUgcm9vbSkuIA0KKw0KK19Sb29tIEludGVyZmFjZV8NCitQb3NzaWJpbGl0eSB0byBnZXQgaW52aXRhdGlvbiBsaW5rIHdpdGhvdXQgc2VuZGluZyBhbiBlLW1haWwgd2FzIGFkZGVkLiANCitDb25maXJtYXRpb24gZGlhbG9nIGZvciBleGNsdXNpdmUgYXVkaW8gbm8gbG9uZ2VyIGFwcGVhcnMuDQorSG90IGtleSBpcyBhZGRlZCB0byBiZSBhYmxlIHRvICJyZWFycmFuZ2UiIHZpZGVvIHdpbmRvd3MgaW4gdGhlIHJvb20uIA0KK1ZvbHVtZSBzbGlkZXIgb24gdGhlIHZpZGVvIHBvZCB0b29sYmFyIHdhcyBhZGRlZC4NCisNCitfUmVjb3JkaW5ncyBhbmQgc2NyZWVuIHNoYXJpbmcgaW1wcm92ZW1lbnRzXw0KK1NvbWUgaW1wcm92ZW1lbnRzIGZvciB0aGUgc2NyZWVuIHNoYXJpbmcgYW5kIHJlY29yZGluZ3MgcXVhbGl0eSBhbmQgc3RhYmlsaXR5IA0KK3dlcmUgbWFkZS4NCisNCitfQ2x1c3RlciBjYXBhYmlsaXRpZXNfDQorSW4gdGhlIGJldGEgc3RhZ2U6IE9wZW5NZWV0aW5ncyAgY2FuIGJlIGNvbmZpZ3VyZWQgaW4gdGhlIGNsdXN0ZXIgZW52aXJvbm1lbnQgYW5kIA0KK2lzIHJlYWR5IGZvciB0aGUgdGVzdGluZywgYnV0IGRldmVsb3BtZW50IGhhcyBub3QgYmVlbiBmbmlzaGVkIHlldC4gDQorU2VlIGFsc286IGh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9DbHVzdGVyaW5nLmh0bWwsDQoraHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvQ2x1c3RlcitNYXN0ZXItU2xhdmUrb3ZlcnZpZXcNCisNCitfQWRtaW4vQ2FsZW5kYXIgSFRNTDUgVUlfDQorQWRkaXRpb25hbCBIVE1MNSBXaWNrZXQgYmFzZWQgVUkgKGZ1bGx5IGN1c3RvbWl6YWJsZSB3aXRoIENTUykgaXMgYWRkZWQgZm9yIA0KK3N0YXRpYyBzY3JlZW5zIGFzIGEgcHJvb2Ygb2YgdGhlIGNvbmNlcHQuDQorDQorR2V0dGluZyBTdGFydGVkDQorPT09PT09PT09PT09PT09DQorUGxlYXNlIHZpc2l0IHRoZSBwcm9qZWN0IHdlYnNpdGUgZm9yIHRoZSBsYXRlc3QgaW5mb3JtYXRpb246DQorICAgIGh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy8NCisgICAgDQorRG9jdW1lbnRhdGlvbiBmb3IgSW5zdGFsbGF0aW9uIGFuZCBVcGdyYWRlOg0KKyAgICBodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvaW5zdGFsbGF0aW9uLmh0bWwNCisgICAgaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnL1VwZ3JhZGUuaHRtbA0KKw0KK0Fsb25nIHdpdGggdGhlIGRldmVsb3BlciBtYWlsaW5nIGxpc3QgYXJjaGl2ZToNCisgICAgaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnL21haWwtbGlzdHMuaHRtbA0KKyAgICANCisgICAgDQorU3lzdGVtIFJlcXVpcmVtZW50cw0KKz09PT09PT09PT09PT09PT09PT0NCitZb3UgbmVlZCBhIHBsYXRmb3JtIHRoYXQgc3VwcG9ydHMgU3VuIEphdmEgU0UgNi4NCisNCisNCitCdWlsZGluZyBhbmQgcnVubmluZw0KKz09PT09PT09PT09PT09PT09PT09DQorVG8gYnVpbGQgZnJvbSBzb3VyY2UgY29kZToNCisNCisgIC0gUmVxdWlyZW1lbnRzOg0KKyAgICBTb3VyY2VzIGNvbXBpbGF0aW9uIHJlcXVpcmUgU3VuIEphdmEgU0UgNi4NCisgICAgVGhlIHByb2plY3QgaXMgYnVpbHQgd2l0aCBBcGFjaGUgQU5UIDEuOC42IG9yIGxhdGVyLg0KKyAgDQorICAtIFRvIGJ1aWxkIHRoZSBPcGVuTWVldGluZ3MgcHJvamVjdCBydW4gYW50IGluIHRoZSByb290IGRpcmVjdG9yeToNCisgICAgIGFudA0KKyAgICANCitGb3IgYSBkZXRhaWxlZCBkb2N1bWVudGF0aW9uIG9uIGhvdyB0byBidWlsZCBmcm9tIHNvdXJjZSBhbmQgb3B0aW9ucyBzZWU6DQorICAgIGh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9CdWlsZEluc3RydWN0aW9ucy5odG1sDQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9XRUItSU5GL29wZW5tZWV0aW5ncy1hcHBsaWNhdGlvbkNvbnRleHQueG1sIGIvV2ViQ29udGVudC9XRUItSU5GL29wZW5tZWV0aW5ncy1hcHBsaWNhdGlvbkNvbnRleHQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4MWZiYWQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L1dFQi1JTkYvb3Blbm1lZXRpbmdzLWFwcGxpY2F0aW9uQ29udGV4dC54bWwKQEAgLTAsMCArMSwzMzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8YmVhbnMgeG1sbnM9Imh0dHA6Ly93d3cuc3ByaW5nZnJhbWV3b3JrLm9yZy9zY2hlbWEvYmVhbnMiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCisJeG1sbnM6dHg9Imh0dHA6Ly93d3cuc3ByaW5nZnJhbWV3b3JrLm9yZy9zY2hlbWEvdHgiIHhtbG5zOm12Yz0iaHR0cDovL3d3dy5zcHJpbmdmcmFtZXdvcmsub3JnL3NjaGVtYS9tdmMiCisJeG1sbnM6Y29udGV4dD0iaHR0cDovL3d3dy5zcHJpbmdmcmFtZXdvcmsub3JnL3NjaGVtYS9jb250ZXh0IgorCXhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL3d3dy5zcHJpbmdmcmFtZXdvcmsub3JnL3NjaGVtYS9iZWFucyBodHRwOi8vd3d3LnNwcmluZ2ZyYW1ld29yay5vcmcvc2NoZW1hL2JlYW5zL3NwcmluZy1iZWFucy0zLjAueHNkIAorCQlodHRwOi8vd3d3LnNwcmluZ2ZyYW1ld29yay5vcmcvc2NoZW1hL2NvbnRleHQgaHR0cDovL3d3dy5zcHJpbmdmcmFtZXdvcmsub3JnL3NjaGVtYS9jb250ZXh0L3NwcmluZy1jb250ZXh0LnhzZAorCQlodHRwOi8vd3d3LnNwcmluZ2ZyYW1ld29yay5vcmcvc2NoZW1hL3R4IGh0dHA6Ly93d3cuc3ByaW5nZnJhbWV3b3JrLm9yZy9zY2hlbWEvdHgvc3ByaW5nLXR4LTMuMC54c2QKKwkJaHR0cDovL3d3dy5zcHJpbmdmcmFtZXdvcmsub3JnL3NjaGVtYS9tdmMgaHR0cDovL3d3dy5zcHJpbmdmcmFtZXdvcmsub3JnL3NjaGVtYS9tdmMvc3ByaW5nLW12Yy0zLjAueHNkIj4KKwk8YmVhbiBpZD0iZW50aXR5TWFuYWdlckZhY3RvcnkiIGNsYXNzPSJvcmcuc3ByaW5nZnJhbWV3b3JrLm9ybS5qcGEuTG9jYWxFbnRpdHlNYW5hZ2VyRmFjdG9yeUJlYW4iPgorCQk8cHJvcGVydHkgbmFtZT0icGVyc2lzdGVuY2VVbml0TmFtZSIgdmFsdWU9Im9wZW5tZWV0aW5ncyIgLz4KKwk8L2JlYW4+CisJPGJlYW4gaWQ9InRyYW5zYWN0aW9uTWFuYWdlciIgY2xhc3M9Im9yZy5zcHJpbmdmcmFtZXdvcmsub3JtLmpwYS5KcGFUcmFuc2FjdGlvbk1hbmFnZXIiPgorCQk8cHJvcGVydHkgbmFtZT0iZW50aXR5TWFuYWdlckZhY3RvcnkiIHJlZj0iZW50aXR5TWFuYWdlckZhY3RvcnkiIC8+CisJPC9iZWFuPgorCisJPGJlYW4gY2xhc3M9Im9yZy5zcHJpbmdmcmFtZXdvcmsub3JtLmpwYS5zdXBwb3J0LlBlcnNpc3RlbmNlQW5ub3RhdGlvbkJlYW5Qb3N0UHJvY2Vzc29yIiAvPgorCisJPGJlYW4gaWQ9ImpwYVRyYW5zYWN0aW9uTWFuYWdlciIgY2xhc3M9Im9yZy5zcHJpbmdmcmFtZXdvcmsub3JtLmpwYS5KcGFUcmFuc2FjdGlvbk1hbmFnZXIiPgorCQk8cHJvcGVydHkgbmFtZT0iZW50aXR5TWFuYWdlckZhY3RvcnkiIHJlZj0iZW50aXR5TWFuYWdlckZhY3RvcnkiIC8+CisJPC9iZWFuPgorCTxiZWFuIGlkPSJtdWx0aXBhcnRSZXNvbHZlciIgY2xhc3M9Im9yZy5zcHJpbmdmcmFtZXdvcmsud2ViLm11bHRpcGFydC5jb21tb25zLkNvbW1vbnNNdWx0aXBhcnRSZXNvbHZlciIgLz4KKwk8IS0tIENvbmZpZ3VyZXMgdGhlIEBDb250cm9sbGVyIHByb2dyYW1taW5nIG1vZGVsIC0tPgorCTxtdmM6YW5ub3RhdGlvbi1kcml2ZW4gLz4KKworCTx0eDphbm5vdGF0aW9uLWRyaXZlbiB0cmFuc2FjdGlvbi1tYW5hZ2VyPSJqcGFUcmFuc2FjdGlvbk1hbmFnZXIiIHByb3h5LXRhcmdldC1jbGFzcz0idHJ1ZSIgLz4KKwk8Y29udGV4dDphbm5vdGF0aW9uLWNvbmZpZyAvPgorCTxjb250ZXh0OmNvbXBvbmVudC1zY2FuIGJhc2UtcGFja2FnZT0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MiIC8+CisKKwk8IS0tIE5ldyBDbGFzcyBmb3IgdGhlIFN0cmVhbWluZyBIYW5kbGVycyAtLT4KKwk8YmVhbiBpZD0id2ViLmhhbmRsZXIiIGNsYXNzPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5yZW1vdGUucmVkNS5TY29wZUFwcGxpY2F0aW9uQWRhcHRlciIgLz4KKworCTwhLS0gU2Vzc2lvbiBjb25maWd1cmF0aW9uIHN0YXJ0IC0tPgorCisJPGJlYW4gaWQ9Im9wZW5tZWV0aW5ncy5TZXNzaW9uTWFuYWdlciIgY2xhc3M9Im9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnNlc3Npb24uU2Vzc2lvbk1hbmFnZXIiPgorCQk8cHJvcGVydHkgbmFtZT0iY2FjaGUiPgorCQkJPHJlZiBiZWFuPSJvcGVubWVldGluZ3MuSGFzaE1hcFN0b3JlIiAvPiAgPCEtLSBNZW1vcnkgYmFzZWQgc2Vzc2lvbiBjYWNoZSBieSBkZWZhdWx0IC0tPgorCQkJPCEtLSBUaGUgZm9sbG93aW5nIHNlY3Rpb24gc2hvdWxkIGJlIHVzZWQgaW4gY2x1c3RlcmluZyBtb2RlCisJCQk8cmVmIGJlYW49Im9wZW5tZWV0aW5ncy5EYXRhYmFzZVN0b3JlIiAvPgorCQkJLS0+CisJCTwvcHJvcGVydHk+CisJPC9iZWFuPgorCTxiZWFuIGlkPSJvcGVubWVldGluZ3MuRW1vdGljb25zTWFuYWdlciIgY2xhc3M9Im9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEud2hpdGVib2FyZC5FbW90aWNvbnNNYW5hZ2VyIiAvPgorCisJPCEtLSBTaW5nbGV0b25zIGZvciBtZW1vcnkgYmFzZWQgY2FjaGUgLS0+CisJPGJlYW4gaWQ9Im9wZW5tZWV0aW5ncy5IYXNoTWFwU3RvcmUiIHNjb3BlPSJzaW5nbGV0b24iIGNsYXNzPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5zZXNzaW9uLnN0b3JlLkhhc2hNYXBTdG9yZSIgLz4KKwk8YmVhbiBpZD0id2hpdGVCb2FyZE9iamVjdExpc3RNYW5hZ2VyQnlJZCIgc2NvcGU9InNpbmdsZXRvbiIKKwkJY2xhc3M9Im9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEud2hpdGVib2FyZC5XaGl0ZUJvYXJkT2JqZWN0TGlzdE1hbmFnZXJCeUlkIiAvPgorCTwhLS0gV2hpdGVCb2FyZE9iamVjdFN5bmNNYW5hZ2VyIGNhbiBzdGF5IGluIHRoZSBtZW1vcnksIGV2ZW4gb24gY2x1c3RlciEgLS0+CisJPGJlYW4gaWQ9IndoaXRlQm9hcmRPYmplY3RTeW5jTWFuYWdlciIgc2NvcGU9InNpbmdsZXRvbiIgY2xhc3M9Im9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEud2hpdGVib2FyZC5XaGl0ZUJvYXJkT2JqZWN0U3luY01hbmFnZXIiIC8+CisKKwk8IS0tIERhdGFiYXNlIGNhY2hlIC0tPgorCTxiZWFuIGlkPSJvcGVubWVldGluZ3MuRGF0YWJhc2VTdG9yZSIgY2xhc3M9Im9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnNlc3Npb24uc3RvcmUuRGF0YWJhc2VTdG9yZSIgLz4KKworCTxiZWFuIGlkPSJvcGVubWVldGluZ3MuU2VydmVyVXRpbCIgc2NvcGU9InNpbmdsZXRvbiIgY2xhc3M9Im9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnNlc3Npb24uU2VydmVyVXRpbCI+CisJCTwhLS0gTmVlZCB0byBiZSB1bmNvbW1lbnRlZCBhbmQgc2V0IHRvIHRoZSByZWFsIElEIGlmIGluIGNsdXN0ZXIgbW9kZSA8cHJvcGVydHkgbmFtZT0ic2VydmVySWQiIHZhbHVlPSIxIiAvPiAtLT4KKwk8L2JlYW4+CisKKwk8IS0tIENsdXN0ZXIgcmVsYXRlZCBjb25maWcgc3RhcnQgLS0+CisKKwk8IS0tIFN0YXJ0IG9mIFNlcnZpY2VzIC0tPgorCTxiZWFuIGlkPSJ4bWxjcm0uc2VydmljZSIgY2xhc3M9Im9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnJlbW90ZS5NYWluU2VydmljZSIgLz4KKwk8YmVhbiBpZD0icHJpbnRzZXJ2aWNlLnNlcnZpY2UiIGNsYXNzPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5yZW1vdGUuUHJpbnRTZXJ2aWNlIiAvPgorCTxiZWFuIGlkPSJwb2xsc2VydmljZS5zZXJ2aWNlIiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MucmVtb3RlLlBvbGxTZXJ2aWNlIiAvPgorCTxiZWFuIGlkPSJvcmdhbmlzYXRpb25zZXJ2aWNlLnNlcnZpY2UiIGNsYXNzPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5yZW1vdGUuT3JnYW5pc2F0aW9uU2VydmljZSIgLz4KKwk8YmVhbiBpZD0ibWVldGluZ21lbWJlcnNlcnZpY2Uuc2VydmljZSIgY2xhc3M9Im9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnJlbW90ZS5NZWV0aW5nTWVtYmVyU2VydmljZSIgLz4KKwk8YmVhbiBpZD0ibGFuZ3VhZ2VzZXJ2aWNlLnNlcnZpY2UiIGNsYXNzPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5yZW1vdGUuTGFuZ3VhZ2VTZXJ2aWNlIiAvPgorCTxiZWFuIGlkPSJpbnZpdGF0aW9uc2VydmljZS5zZXJ2aWNlIiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MucmVtb3RlLkludml0YXRpb25TZXJ2aWNlIiAvPgorCTxiZWFuIGlkPSJsZGFwY29uZmlnc2VydmljZS5zZXJ2aWNlIiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MucmVtb3RlLkxkYXBDb25maWdTZXJ2aWNlIiAvPgorCTxiZWFuIGlkPSJ3aGl0ZWJvYXJkc2VydmljZS5zZXJ2aWNlIiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MucmVtb3RlLldoaXRlQm9hcmRTZXJ2aWNlIiAvPgorCTxiZWFuIGlkPSJ1c2Vyc2VydmljZS5zZXJ2aWNlIiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MucmVtb3RlLlVzZXJTZXJ2aWNlIiAvPgorCTxiZWFuIGlkPSJmaWxlc2VydmljZS5zZXJ2aWNlIiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MucmVtb3RlLkNvbmZlcmVuY2VMaWJyYXJ5IiAvPgorCTxiZWFuIGlkPSJvcGVubWVldGluZ3MuRmlsZVByb2Nlc3NvciIgY2xhc3M9Im9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuZmlsZS5GaWxlUHJvY2Vzc29yIiAvPgorCTxiZWFuIGlkPSJvcGVubWVldGluZ3MuRmx2RXhwbG9yZXJDb252ZXJ0ZXIiIGNsYXNzPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmZsdnJlY29yZC5jb252ZXJ0ZXIuRmx2RXhwbG9yZXJDb252ZXJ0ZXIiIC8+CisJPGJlYW4gaWQ9ImVycm9yc2VydmljZS5zZXJ2aWNlIiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MucmVtb3RlLkVycm9yU2VydmljZSIgLz4KKwk8YmVhbiBpZD0iY29uZmVyZW5jZXNlcnZpY2Uuc2VydmljZSIgY2xhc3M9Im9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnJlbW90ZS5Db25mZXJlbmNlU2VydmljZSIgLz4KKwk8YmVhbiBpZD0iY29uZmlnc2VydmljZS5zZXJ2aWNlIiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MucmVtb3RlLkNvbmZpZ3VyYXRpb25TZXJ2aWNlIiAvPgorCTxiZWFuIGlkPSJjaGF0c2VydmljZS5zZXJ2aWNlIiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MucmVtb3RlLkNoYXRTZXJ2aWNlIiAvPgorCTxiZWFuIGlkPSJjYWxlbmRhcnNlcnZpY2Uuc2VydmljZSIgY2xhc3M9Im9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnJlbW90ZS5DYWxlbmRhclNlcnZpY2UiIC8+CisJPGJlYW4gaWQ9ImZsdnJlY29yZGVyc2VydmljZS5zZXJ2aWNlIiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MucmVtb3RlLkZMVlJlY29yZGVyU2VydmljZSIgLz4KKwk8YmVhbiBpZD0ib3Blbm1lZXRpbmdzLkZsdlJlY29yZGVyQ29udmVydGVyVGFzayIgY2xhc3M9Im9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuZmx2cmVjb3JkLmNvbnZlcnRlci5GbHZSZWNvcmRlckNvbnZlcnRlclRhc2siIC8+CisJPGJlYW4gaWQ9Im9wZW5tZWV0aW5ncy5GbHZJbnRlcnZpZXdDb252ZXJ0ZXJUYXNrIiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5mbHZyZWNvcmQuY29udmVydGVyLkZsdkludGVydmlld0NvbnZlcnRlclRhc2siIC8+CisJPGJlYW4gaWQ9Im9wZW5tZWV0aW5ncy5GbHZJbnRlcnZpZXdSZUNvbnZlcnRlclRhc2siIGNsYXNzPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmZsdnJlY29yZC5jb252ZXJ0ZXIuRmx2SW50ZXJ2aWV3UmVDb252ZXJ0ZXJUYXNrIiAvPgorCTxiZWFuIGlkPSJvcGVubWVldGluZ3MuRmx2SW50ZXJ2aWV3Q29udmVydGVyIiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5mbHZyZWNvcmQuY29udmVydGVyLkZsdkludGVydmlld0NvbnZlcnRlciIgLz4KKwk8YmVhbiBpZD0ib3Blbm1lZXRpbmdzLkZsdlJlY29yZGVyQ29udmVydGVyIiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5mbHZyZWNvcmQuY29udmVydGVyLkZsdlJlY29yZGVyQ29udmVydGVyIiAvPgorCTxiZWFuIGlkPSJvcGVubWVldGluZ3MuU2xhdmVIVFRQQ29ubmVjdGlvbk1hbmFnZXIiIGNsYXNzPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5jbHVzdGVyLlNsYXZlSFRUUENvbm5lY3Rpb25NYW5hZ2VyIiAvPgorCisJPGJlYW4gaWQ9Im9wZW5tZWV0aW5ncy5TZXNzaW9uQ2xlYXJKb2IiIGNsYXNzPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5xdWFydHouc2NoZWR1bGVyLlNlc3Npb25DbGVhckpvYiIgLz4KKwk8YmVhbiBpZD0ic2Vzc2lvbkNsZWFySm9iIiBjbGFzcz0ib3JnLnNwcmluZ2ZyYW1ld29yay5zY2hlZHVsaW5nLnF1YXJ0ei5NZXRob2RJbnZva2luZ0pvYkRldGFpbEZhY3RvcnlCZWFuIj4KKwkJPHByb3BlcnR5IG5hbWU9InRhcmdldE9iamVjdCI+CisJCQk8cmVmIGJlYW49Im9wZW5tZWV0aW5ncy5TZXNzaW9uQ2xlYXJKb2IiIC8+CisJCTwvcHJvcGVydHk+CisJCTxwcm9wZXJ0eSBuYW1lPSJ0YXJnZXRNZXRob2QiPgorCQkJPHZhbHVlPmRvSXQ8L3ZhbHVlPgorCQk8L3Byb3BlcnR5PgorCQk8cHJvcGVydHkgbmFtZT0iY29uY3VycmVudCIgdmFsdWU9ImZhbHNlIiAvPgorCTwvYmVhbj4KKwk8YmVhbiBpZD0idHJpZ2dlclNlc3Npb25DbGVhciIgY2xhc3M9Im9yZy5zcHJpbmdmcmFtZXdvcmsuc2NoZWR1bGluZy5xdWFydHouU2ltcGxlVHJpZ2dlckJlYW4iPgorCQk8cHJvcGVydHkgbmFtZT0iam9iRGV0YWlsIj4KKwkJCTwhLS0gc2VlIHRoZSBleGFtcGxlIG9mIG1ldGhvZCBpbnZva2luZyBqb2IgYWJvdmUgLS0+CisJCQk8cmVmIGJlYW49InNlc3Npb25DbGVhckpvYiIgLz4KKwkJPC9wcm9wZXJ0eT4KKwkJPHByb3BlcnR5IG5hbWU9InN0YXJ0RGVsYXkiPgorCQkJPCEtLSA1IHNlY29uZHMgLS0+CisJCQk8dmFsdWU+NTAwMDwvdmFsdWU+CisJCTwvcHJvcGVydHk+CisJCTxwcm9wZXJ0eSBuYW1lPSJyZXBlYXRJbnRlcnZhbCI+CisJCQk8IS0tIHJlcGVhdCBldmVyeSAzMDAgc2Vjb25kcyA9PSA1IG1pbnV0ZXMgLS0+CisJCQk8dmFsdWU+MzAwMDAwPC92YWx1ZT4KKwkJPC9wcm9wZXJ0eT4KKwk8L2JlYW4+CisKKwk8YmVhbiBpZD0ib3Blbm1lZXRpbmdzLk1lZXRpbmdSZW1pbmRlckpvYiIgY2xhc3M9Im9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnF1YXJ0ei5zY2hlZHVsZXIuTWVldGluZ1JlbWluZGVySm9iIiAvPgorCTxiZWFuIGlkPSJtZWV0aW5nUmVtaW5kZXJDbGVhciIgY2xhc3M9Im9yZy5zcHJpbmdmcmFtZXdvcmsuc2NoZWR1bGluZy5xdWFydHouTWV0aG9kSW52b2tpbmdKb2JEZXRhaWxGYWN0b3J5QmVhbiI+CisJCTxwcm9wZXJ0eSBuYW1lPSJ0YXJnZXRPYmplY3QiPgorCQkJPHJlZiBiZWFuPSJvcGVubWVldGluZ3MuTWVldGluZ1JlbWluZGVySm9iIiAvPgorCQk8L3Byb3BlcnR5PgorCQk8cHJvcGVydHkgbmFtZT0idGFyZ2V0TWV0aG9kIj4KKwkJCTx2YWx1ZT5kb0l0PC92YWx1ZT4KKwkJPC9wcm9wZXJ0eT4KKwkJPHByb3BlcnR5IG5hbWU9ImNvbmN1cnJlbnQiIHZhbHVlPSJmYWxzZSIgLz4KKwk8L2JlYW4+CisJPGJlYW4gaWQ9InRyaWdnZXJNZWV0aW5nUmVtaW5kZXIiIGNsYXNzPSJvcmcuc3ByaW5nZnJhbWV3b3JrLnNjaGVkdWxpbmcucXVhcnR6LlNpbXBsZVRyaWdnZXJCZWFuIj4KKwkJPHByb3BlcnR5IG5hbWU9ImpvYkRldGFpbCI+CisJCQk8IS0tIHNlZSB0aGUgZXhhbXBsZSBvZiBtZXRob2QgaW52b2tpbmcgam9iIGFib3ZlIC0tPgorCQkJPHJlZiBiZWFuPSJtZWV0aW5nUmVtaW5kZXJDbGVhciIgLz4KKwkJPC9wcm9wZXJ0eT4KKwkJPHByb3BlcnR5IG5hbWU9InN0YXJ0RGVsYXkiPgorCQkJPCEtLSA1IHNlY29uZHMgLS0+CisJCQk8dmFsdWU+NTAwMDwvdmFsdWU+CisJCTwvcHJvcGVydHk+CisJCTxwcm9wZXJ0eSBuYW1lPSJyZXBlYXRJbnRlcnZhbCI+CisJCQk8IS0tIHJlcGVhdCBldmVyeSAxMDAgc2Vjb25kcyAtLT4KKwkJCTx2YWx1ZT4xMDAwMDA8L3ZhbHVlPgorCQk8L3Byb3BlcnR5PgorCTwvYmVhbj4KKwk8YmVhbiBpZD0idGVzdFNldHVwQ2xlYW51cEpvYiIgY2xhc3M9Im9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnF1YXJ0ei5zY2hlZHVsZXIuVGVzdFNldHVwQ2xlYW51cEpvYiIgLz4KKwk8YmVhbiBpZD0idGVzdFNldHVwQ2xlYW51cCIgY2xhc3M9Im9yZy5zcHJpbmdmcmFtZXdvcmsuc2NoZWR1bGluZy5xdWFydHouTWV0aG9kSW52b2tpbmdKb2JEZXRhaWxGYWN0b3J5QmVhbiI+CisJCTxwcm9wZXJ0eSBuYW1lPSJ0YXJnZXRPYmplY3QiPgorCQkJPHJlZiBiZWFuPSJ0ZXN0U2V0dXBDbGVhbnVwSm9iIiAvPgorCQk8L3Byb3BlcnR5PgorCQk8cHJvcGVydHkgbmFtZT0idGFyZ2V0TWV0aG9kIj4KKwkJCTx2YWx1ZT5kb0l0PC92YWx1ZT4KKwkJPC9wcm9wZXJ0eT4KKwkJPHByb3BlcnR5IG5hbWU9ImNvbmN1cnJlbnQiIHZhbHVlPSJmYWxzZSIgLz4KKwk8L2JlYW4+CisJPGJlYW4gaWQ9InRyaWdnZXJUZXN0U2V0dXBDbGVhbnVwIiBjbGFzcz0ib3JnLnNwcmluZ2ZyYW1ld29yay5zY2hlZHVsaW5nLnF1YXJ0ei5TaW1wbGVUcmlnZ2VyQmVhbiI+CisJCTxwcm9wZXJ0eSBuYW1lPSJqb2JEZXRhaWwiPgorCQkJPHJlZiBiZWFuPSJ0ZXN0U2V0dXBDbGVhbnVwIiAvPgorCQk8L3Byb3BlcnR5PgorCQk8cHJvcGVydHkgbmFtZT0ic3RhcnREZWxheSI+CisJCQk8dmFsdWU+MTgwMDAwMDwvdmFsdWU+IDwhLS0gMzAgbWludXRlcyAtLT4KKwkJPC9wcm9wZXJ0eT4KKwkJPHByb3BlcnR5IG5hbWU9InJlcGVhdEludGVydmFsIj4KKwkJCTx2YWx1ZT4xODAwMDAwPC92YWx1ZT4gPCEtLSAzMCBtaW51dGVzIC0tPgorCQk8L3Byb3BlcnR5PgorCTwvYmVhbj4KKworCTwhLS0gTWFpbCByZWxhdGVkIGpvYnMgLS0+CisJPGJlYW4gaWQ9Im1haWxIYW5kbGVyIiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMubWFpbC5NYWlsSGFuZGxlciIgLz4KKwk8YmVhbiBpZD0icmVzZXRTZW5kaW5nTWFpbFN0YXR1cyIgY2xhc3M9Im9yZy5zcHJpbmdmcmFtZXdvcmsuc2NoZWR1bGluZy5xdWFydHouTWV0aG9kSW52b2tpbmdKb2JEZXRhaWxGYWN0b3J5QmVhbiI+CisJCTxwcm9wZXJ0eSBuYW1lPSJ0YXJnZXRPYmplY3QiPgorCQkJPHJlZiBiZWFuPSJtYWlsSGFuZGxlciIgLz4KKwkJPC9wcm9wZXJ0eT4KKwkJPHByb3BlcnR5IG5hbWU9InRhcmdldE1ldGhvZCI+CisJCQk8dmFsdWU+cmVzZXRTZW5kaW5nU3RhdHVzPC92YWx1ZT4KKwkJPC9wcm9wZXJ0eT4KKwkJPHByb3BlcnR5IG5hbWU9ImNvbmN1cnJlbnQiIHZhbHVlPSJmYWxzZSIgLz4KKwk8L2JlYW4+CisJPGJlYW4gaWQ9InRyaWdnZXJSZXNldFNlbmRpbmdNYWlsU3RhdHVzIiBjbGFzcz0ib3JnLnNwcmluZ2ZyYW1ld29yay5zY2hlZHVsaW5nLnF1YXJ0ei5TaW1wbGVUcmlnZ2VyQmVhbiI+CisJCTxwcm9wZXJ0eSBuYW1lPSJqb2JEZXRhaWwiPgorCQkJPHJlZiBiZWFuPSJyZXNldFNlbmRpbmdNYWlsU3RhdHVzIiAvPgorCQk8L3Byb3BlcnR5PgorCQk8cHJvcGVydHkgbmFtZT0ic3RhcnREZWxheSI+CisJCQk8dmFsdWU+NjAwMDA8L3ZhbHVlPiA8IS0tIDEgbWludXRlIC0tPgorCQk8L3Byb3BlcnR5PgorCQk8cHJvcGVydHkgbmFtZT0icmVwZWF0SW50ZXJ2YWwiPgorCQkJPHZhbHVlPjkwMDAwMDwvdmFsdWU+IDwhLS0gMTUgbWludXRlcyAtLT4KKwkJPC9wcm9wZXJ0eT4KKwk8L2JlYW4+CisJPGJlYW4gaWQ9InNlbmRNYWlscyIgY2xhc3M9Im9yZy5zcHJpbmdmcmFtZXdvcmsuc2NoZWR1bGluZy5xdWFydHouTWV0aG9kSW52b2tpbmdKb2JEZXRhaWxGYWN0b3J5QmVhbiI+CisJCTxwcm9wZXJ0eSBuYW1lPSJ0YXJnZXRPYmplY3QiPgorCQkJPHJlZiBiZWFuPSJtYWlsSGFuZGxlciIgLz4KKwkJPC9wcm9wZXJ0eT4KKwkJPHByb3BlcnR5IG5hbWU9InRhcmdldE1ldGhvZCI+CisJCQk8dmFsdWU+c2VuZE1haWxzPC92YWx1ZT4KKwkJPC9wcm9wZXJ0eT4KKwkJPHByb3BlcnR5IG5hbWU9ImNvbmN1cnJlbnQiIHZhbHVlPSJmYWxzZSIgLz4KKwk8L2JlYW4+CisJPGJlYW4gaWQ9InRyaWdnZXJTZW5kTWFpbHMiIGNsYXNzPSJvcmcuc3ByaW5nZnJhbWV3b3JrLnNjaGVkdWxpbmcucXVhcnR6LlNpbXBsZVRyaWdnZXJCZWFuIj4KKwkJPHByb3BlcnR5IG5hbWU9ImpvYkRldGFpbCI+CisJCQk8cmVmIGJlYW49InNlbmRNYWlscyIgLz4KKwkJPC9wcm9wZXJ0eT4KKwkJPHByb3BlcnR5IG5hbWU9InN0YXJ0RGVsYXkiPgorCQkJPHZhbHVlPjE4MDAwMDwvdmFsdWU+IDwhLS0gMyBtaW51dGUgLS0+CisJCTwvcHJvcGVydHk+CisJCTxwcm9wZXJ0eSBuYW1lPSJyZXBlYXRJbnRlcnZhbCI+CisJCQk8dmFsdWU+MTgwMDAwPC92YWx1ZT4gPCEtLSAzIG1pbnV0ZXMgLS0+CisJCTwvcHJvcGVydHk+CisJPC9iZWFuPgorCQorCTxiZWFuIGNsYXNzPSJvcmcuc3ByaW5nZnJhbWV3b3JrLnNjaGVkdWxpbmcucXVhcnR6LlNjaGVkdWxlckZhY3RvcnlCZWFuIj4KKwkJPHByb3BlcnR5IG5hbWU9InRyaWdnZXJzIj4KKwkJCTxsaXN0PgorCQkJCTxyZWYgbG9jYWw9InRyaWdnZXJTZXNzaW9uQ2xlYXIiIC8+CisJCQkJPHJlZiBsb2NhbD0idHJpZ2dlck1lZXRpbmdSZW1pbmRlciIgLz4KKwkJCQk8cmVmIGxvY2FsPSJ0cmlnZ2VyVGVzdFNldHVwQ2xlYW51cCIgLz4KKwkJCQk8cmVmIGxvY2FsPSJ0cmlnZ2VyUmVzZXRTZW5kaW5nTWFpbFN0YXR1cyIgLz4KKwkJCQk8cmVmIGxvY2FsPSJ0cmlnZ2VyU2VuZE1haWxzIiAvPgorCQkJPC9saXN0PgorCQk8L3Byb3BlcnR5PgorCTwvYmVhbj4KKwk8IS0tIEVuZCBvZiBTZXJ2aWNlcyAtLT4KKworCTwhLS0gSW50ZXJmYWNlIFRyYW5zYWN0aW9uYWwgLS0+CisJPGJlYW4gaWQ9ImFwcG9pbnRtZW50UmVtaW5kZXJUeXBEYW9JbXBsIiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jYWxlbmRhci5kYW9zLkFwcG9pbnRtZW50UmVtaW5kZXJUeXBEYW8iIC8+CisJPGJlYW4gaWQ9ImFwcG9pbnRtZW50Q2F0ZWdvcnlEYW9JbXBsIiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jYWxlbmRhci5kYW9zLkFwcG9pbnRtZW50Q2F0ZWdvcnlEYW8iIC8+CisJPGJlYW4gaWQ9InJvb21tYW5hZ2VtZW50IiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jb25mZXJlbmNlLlJvb21NYW5hZ2VyIiAvPgorCTxiZWFuIGlkPSJyb29tRGFvIiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jb25mZXJlbmNlLmRhby5Sb29tRGFvIi8+CisJPGJlYW4gaWQ9InNpcERhbyIgY2xhc3M9Im9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY29uZmVyZW5jZS5kYW8uU2lwRGFvIj4KKwk8IS0tICBTaG91bGQgYmUgdW5jb21tZW50ZWQgYW5kIHVwZGF0ZWQgd2l0aCByZWFsIHZhbHVlcyBmb3IgQXN0ZXJpc2sKKwkJPGNvbnN0cnVjdG9yLWFyZz48dmFsdWU+MTI3LjAuMC4xPC92YWx1ZT48L2NvbnN0cnVjdG9yLWFyZz4KKwkJPGNvbnN0cnVjdG9yLWFyZz48dmFsdWU+NTAzODwvdmFsdWU+PC9jb25zdHJ1Y3Rvci1hcmc+CisJCTxjb25zdHJ1Y3Rvci1hcmc+PHZhbHVlPm9wZW5tZWV0aW5nczwvdmFsdWU+PC9jb25zdHJ1Y3Rvci1hcmc+CisJCTxjb25zdHJ1Y3Rvci1hcmc+PHZhbHVlPjEyMzQ1PC92YWx1ZT48L2NvbnN0cnVjdG9yLWFyZz4KKwkgLS0+CisJPC9iZWFuPgorCTxiZWFuIGlkPSJvcmdhbmlzYXRpb25tYW5hZ2VtZW50IiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLk9yZ2FuaXNhdGlvbk1hbmFnZXIiIC8+CisJPGJlYW4gaWQ9Im9yZ2FuaXNhdGlvbkRhbyIgY2xhc3M9Im9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEudXNlci5kYW8uT3JnYW5pc2F0aW9uRGFvIiAvPgorCTxiZWFuIGlkPSJvcmdhbmlzYXRpb25Vc2VyRGFvIiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLmRhby5PcmdhbmlzYXRpb25Vc2VyRGFvIiAvPgorCTxiZWFuIGlkPSJzYWx1dGF0aW9ubWFuYWdlbWVudCIgY2xhc3M9Im9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEudXNlci5kYW8uU2FsdXRhdGlvbkRhbyIgLz4KKwk8YmVhbiBpZD0iZXJyb3JNYW5hZ2VtZW50IiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5kYW8uRXJyb3JEYW8iIC8+CisJPGJlYW4gaWQ9Im5hdmltYW5hZ2VtZW50IiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5OYXZpQnVpbGRlciIgLz4KKwk8YmVhbiBpZD0icG9sbE1hbmFnZW1lbnQiIGNsYXNzPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNvbmZlcmVuY2UuUG9sbE1hbmFnZXIiIC8+CisJPGJlYW4gaWQ9Im9tVGltZVpvbmVEYW9JbXBsIiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5kYW8uT21UaW1lWm9uZURhbyIgLz4KKwk8YmVhbiBpZD0ic3RhdGVtYW5hZ2VtZW50IiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLmRhby5TdGF0ZURhbyIgLz4KKwk8YmVhbiBpZD0iZmllbGRMYW5ndWFnZURhb0ltcGwiIGNsYXNzPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLkZpZWxkTGFuZ3VhZ2VEYW8iIC8+CisJPGJlYW4gaWQ9ImZpZWxkVmFsdWVEYW9JbXBsIiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5GaWVsZFZhbHVlRGFvIiAvPgorCTxiZWFuIGlkPSJmaWVsZExhbmd1YWdlc1ZhbHVlc0RBTyIgY2xhc3M9Im9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuRmllbGRMYW5ndWFnZXNWYWx1ZXNEYW8iIC8+CisJPGJlYW4gaWQ9ImZpZWxkbWFuYWdtZW50IiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5GaWVsZE1hbmFnZXIiIC8+CisJPGJlYW4gaWQ9ImNvbmZpZ3VyYXRpb25EYW9JbXBsIiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5kYW8uQ29uZmlndXJhdGlvbkRhbyIgLz4KKwk8YmVhbiBpZD0iYXBwb2ludG1lbnREYW8iIGNsYXNzPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNhbGVuZGFyLmRhb3MuQXBwb2ludG1lbnREYW8iIC8+CisJPGJlYW4gaWQ9ImFwcG9pbnRtZW50TG9naWMiIGNsYXNzPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNhbGVuZGFyLm1hbmFnZW1lbnQuQXBwb2ludG1lbnRMb2dpYyIgLz4KKwk8YmVhbiBpZD0ibWVldGluZ01lbWJlckxvZ2ljIiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jYWxlbmRhci5tYW5hZ2VtZW50Lk1lZXRpbmdNZW1iZXJMb2dpYyIgLz4KKwk8YmVhbiBpZD0ic2Vzc2lvbk1hbmFnZW1lbnQiIGNsYXNzPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLlNlc3Npb25kYXRhRGFvIiAvPgorCTxiZWFuIGlkPSJ1c2VyTWFuYWdlbWVudCIgY2xhc3M9Im9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEudXNlci5Vc2VyTWFuYWdlciIgLz4KKwk8YmVhbiBpZD0icm9vbU1vZGVyYXRvcnNEYW8iIGNsYXNzPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNvbmZlcmVuY2UuZGFvLlJvb21Nb2RlcmF0b3JzRGFvIiAvPgorCTxiZWFuIGlkPSJjb25mZXJlbmNlTG9nRGFvIiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5sb2dzLkNvbmZlcmVuY2VMb2dEYW8iIC8+CisJPGJlYW4gaWQ9ImNvbmZlcmVuY2VMb2dUeXBlRGFvIiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5sb2dzLkNvbmZlcmVuY2VMb2dUeXBlRGFvIiAvPgorCTxiZWFuIGlkPSJlbWFpbE1hbmFnZW1lbnQiIGNsYXNzPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuRW1haWxNYW5hZ2VyIiAvPgorCTxiZWFuIGlkPSJmaWxlRXhwbG9yZXJJdGVtRGFvIiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5maWxlLmRhby5GaWxlRXhwbG9yZXJJdGVtRGFvIiAvPgorCTxiZWFuIGlkPSJmbHZSZWNvcmRpbmdEYW8iIGNsYXNzPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmZsdnJlY29yZC5GbHZSZWNvcmRpbmdEYW8iIC8+CisJPGJlYW4gaWQ9ImZsdlJlY29yZGluZ0xvZ0RhbyIgY2xhc3M9Im9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuZmx2cmVjb3JkLkZsdlJlY29yZGluZ0xvZ0RhbyIgLz4KKwk8YmVhbiBpZD0iZmx2UmVjb3JkaW5nTWV0YURhdGFEYW8iIGNsYXNzPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmZsdnJlY29yZC5GbHZSZWNvcmRpbmdNZXRhRGF0YURhbyIgLz4KKwk8YmVhbiBpZD0iZmx2UmVjb3JkaW5nTWV0YURlbHRhRGFvIiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5mbHZyZWNvcmQuRmx2UmVjb3JkaW5nTWV0YURlbHRhRGFvIiAvPgorCTxiZWFuIGlkPSJsZGFwQ29uZmlnRGFvIiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5kYW8uTGRhcENvbmZpZ0RhbyIgLz4KKwk8YmVhbiBpZD0iaW52aXRhdGlvbk1hbmFnZW1lbnQiIGNsYXNzPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNvbmZlcmVuY2UuSW52aXRhdGlvbk1hbmFnZXIiIC8+CisJPGJlYW4gaWQ9Im1lZXRpbmdNZW1iZXJEYW8iIGNsYXNzPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNhbGVuZGFyLmRhb3MuTWVldGluZ01lbWJlckRhbyIgLz4KKwk8YmVhbiBpZD0icHJpdmF0ZU1lc3NhZ2VGb2xkZXJEYW8iIGNsYXNzPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuZGFvLlByaXZhdGVNZXNzYWdlRm9sZGVyRGFvIiAvPgorCTxiZWFuIGlkPSJwcml2YXRlTWVzc2FnZXNEYW8iIGNsYXNzPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuZGFvLlByaXZhdGVNZXNzYWdlc0RhbyIgLz4KKwk8YmVhbiBpZD0ic29hcExvZ2luRGFvIiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5kYW8uU09BUExvZ2luRGFvIiAvPgorCTxiZWFuIGlkPSJ1c2VyQ29udGFjdHNEYW8iIGNsYXNzPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuZGFvLlVzZXJDb250YWN0c0RhbyIgLz4KKwk8YmVhbiBpZD0idXNlcnNEYW8iIGNsYXNzPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuZGFvLlVzZXJzRGFvIiAvPgorCTxiZWFuIGlkPSJzZXJ2ZXJEYW8iIGNsYXNzPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLmRhby5TZXJ2ZXJEYW8iIC8+CisJPGJlYW4gaWQ9ImNoYXREYW8iIGNsYXNzPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNoYXQuQ2hhdERhbyIgLz4KKwk8YmVhbiBpZD0iY2xpZW50RGFvIiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jb25mZXJlbmNlLmRhby5DbGllbnREYW8iIC8+CisJPGJlYW4gaWQ9Im1haWxNZXNzYWdlRGFvIiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5kYW8uTWFpbE1lc3NhZ2VEYW8iIC8+CisKKwk8IS0tIE5vIEludGVyZmFjZSAtLT4KKwk8YmVhbiBpZD0ibWFuYWdlQ3J5cHRTdHlsZSIgY2xhc3M9Im9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLmNyeXB0Lk1hbmFnZUNyeXB0U3R5bGUiIC8+CisJPGJlYW4gaWQ9ImdlbmVyYXRlSW1hZ2UiIGNsYXNzPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kb2N1bWVudHMuR2VuZXJhdGVJbWFnZSIgLz4KKwk8YmVhbiBpZD0iZ2VuZXJhdGVUaHVtYnMiIGNsYXNzPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kb2N1bWVudHMuR2VuZXJhdGVUaHVtYnMiIC8+CisJPGJlYW4gaWQ9ImdlbmVyYXRlUERGIiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZG9jdW1lbnRzLkdlbmVyYXRlUERGIiAvPgorCTxiZWFuIGlkPSJzbXNIYW5kbGVyIiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMuc21zLlNNU0hhbmRsZXIiIC8+CisJPGJlYW4gaWQ9ImZlZWRiYWNrTWFuYWdlbWVudCIgY2xhc3M9Im9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY29uZmVyZW5jZS5GZWVkYmFja01hbmFnZXIiIC8+CisJPGJlYW4gaWQ9ImltcG9ydEluaXR2YWx1ZXMiIGNsYXNzPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5pbnN0YWxsYXRpb24uSW1wb3J0SW5pdHZhbHVlcyIgLz4KKwk8YmVhbiBpZD0ibGFuZ3VhZ2VJbXBvcnQiIGNsYXNzPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy54bWxpbXBvcnQuTGFuZ3VhZ2VJbXBvcnQiIC8+CisJPGJlYW4gaWQ9InVzZXJJbXBvcnQiIGNsYXNzPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy54bWxpbXBvcnQuVXNlckltcG9ydCIgLz4KKwk8YmVhbiBpZD0ibGlicmFyeVdtbExvYWRlciIgY2xhc3M9Im9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRvY3VtZW50cy5MaWJyYXJ5V21sTG9hZGVyIiAvPgorCTxiZWFuIGlkPSJsb2FkQXRvbVJzc0ZlZWQiIGNsYXNzPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5yc3MuTG9hZEF0b21Sc3NGZWVkIiAvPgorCTxiZWFuIGlkPSJhdXRoTGV2ZWxNYW5hZ2VtZW50IiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5BdXRoTGV2ZWxVdGlsIiAvPgorCTxiZWFuIGlkPSJnZW5lcmF0ZVNXRiIgY2xhc3M9Im9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRvY3VtZW50cy5HZW5lcmF0ZVNXRiIgLz4KKwk8YmVhbiBpZD0iZmlsZVV0aWxzIiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5maWxlLkZpbGVVdGlscyIgLz4KKwk8YmVhbiBpZD0ibGRhcExvZ2luTWFuYWdlbWVudCIgY2xhc3M9Im9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmxkYXAuTGRhcExvZ2luTWFuYWdlbWVudCIgLz4KKwk8YmVhbiBpZD0idGltZXpvbmVVdGlsIiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMubWF0aC5UaW1lem9uZVV0aWwiIC8+CisJPGJlYW4gaWQ9IndoaXRlYm9hcmRNYW5hZ2VtZW50IiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS53aGl0ZWJvYXJkLldoaXRlYm9hcmRNYW5hZ2VyIiAvPgorCisJPCEtLSBUZW1wbGF0ZXMgLS0+CisJPGJlYW4gaWQ9InJlZ2lzdGVyVXNlclRlbXBsYXRlIiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MudGVtcGxhdGVzLlJlZ2lzdGVyVXNlclRlbXBsYXRlIiAvPgorCTxiZWFuIGlkPSJmZWVkYmFja1RlbXBsYXRlIiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MudGVtcGxhdGVzLkZlZWRiYWNrVGVtcGxhdGUiIC8+CisJPGJlYW4gaWQ9Imludml0YXRpb25UZW1wbGF0ZSIgY2xhc3M9Im9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnRlbXBsYXRlcy5JbnZpdGF0aW9uVGVtcGxhdGUiIC8+CisJPGJlYW4gaWQ9InJlcXVlc3RDb250YWN0VGVtcGxhdGUiIGNsYXNzPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy50ZW1wbGF0ZXMuUmVxdWVzdENvbnRhY3RUZW1wbGF0ZSIgLz4KKwk8YmVhbiBpZD0icmVxdWVzdENvbnRhY3RDb25maXJtVGVtcGxhdGUiIGNsYXNzPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy50ZW1wbGF0ZXMuUmVxdWVzdENvbnRhY3RDb25maXJtVGVtcGxhdGUiIC8+CisJPGJlYW4gaWQ9InJlc2V0UGFzc3dvcmRUZW1wbGF0ZSIgY2xhc3M9Im9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnRlbXBsYXRlcy5SZXNldFBhc3N3b3JkVGVtcGxhdGUiIC8+CisKKwk8IS0tIFRocmVhZCBFeGVjdXRvciAtLT4KKwk8YmVhbiBpZD0idGFza0V4ZWN1dG9yIiBjbGFzcz0ib3JnLnNwcmluZ2ZyYW1ld29yay5zY2hlZHVsaW5nLmNvbmN1cnJlbnQuVGhyZWFkUG9vbFRhc2tFeGVjdXRvciI+CisJCTxwcm9wZXJ0eSBuYW1lPSJjb3JlUG9vbFNpemUiIHZhbHVlPSI1IiAvPgorCQk8cHJvcGVydHkgbmFtZT0ibWF4UG9vbFNpemUiIHZhbHVlPSIxMCIgLz4KKwkJPHByb3BlcnR5IG5hbWU9InF1ZXVlQ2FwYWNpdHkiIHZhbHVlPSIyNSIgLz4KKwk8L2JlYW4+CisKKwk8IS0tIEF4aXMyIFNlcnZpY2UgUHJveHkncyAtLT4KKwk8YmVhbiBpZD0idXNlcldlYlNlcnZpY2UiIGNsYXNzPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5heGlzLnNlcnZpY2VzLlVzZXJXZWJTZXJ2aWNlIiAvPgorCTxiZWFuIGlkPSJyb29tV2ViU2VydmljZSIgY2xhc3M9Im9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmF4aXMuc2VydmljZXMuUm9vbVdlYlNlcnZpY2UiIC8+CisJPGJlYW4gaWQ9ImZpbGVXZWJTZXJ2aWNlIiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MuYXhpcy5zZXJ2aWNlcy5GaWxlV2ViU2VydmljZSIgLz4KKwk8YmVhbiBpZD0iY2FsZW5kYXJXZWJTZXJ2aWNlIiBjbGFzcz0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MuYXhpcy5zZXJ2aWNlcy5DYWxlbmRhcldlYlNlcnZpY2UiIC8+CisJPGJlYW4gaWQ9ImphYmJlcldlYlNlcnZpY2UiIGNsYXNzPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5heGlzLnNlcnZpY2VzLkphYmJlcldlYlNlcnZpY2UiIC8+CisJPGJlYW4gaWQ9InNlcnZlcldlYlNlcnZpY2UiIGNsYXNzPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5heGlzLnNlcnZpY2VzLlNlcnZlcldlYlNlcnZpY2UiIC8+CisKKwk8IS0tIFNlcnZsZXQgRmFjYWRlIEJlYW5zIC0tPgorCTxiZWFuIGlkPSJiYWNrdXBFeHBvcnQiIGNsYXNzPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5zZXJ2bGV0Lm91dHB1dGhhbmRsZXIuQmFja3VwRXhwb3J0IiAvPgorPC9iZWFucz4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvV0VCLUlORi9yZWQ1LXdlYi5wcm9wZXJ0aWVzIGIvV2ViQ29udGVudC9XRUItSU5GL3JlZDUtd2ViLnByb3BlcnRpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTE4MzAxZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvV0VCLUlORi9yZWQ1LXdlYi5wcm9wZXJ0aWVzCkBAIC0wLDAgKzEsMTcgQEAKKyMgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyMgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorIyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyMgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyMgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyMgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyMgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyMgIAorIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIyAgICAJICAKKyMgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyMgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisjICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyMgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorIyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworIyAgdW5kZXIgdGhlIExpY2Vuc2UuCit3ZWJhcHAudmlydHVhbEhvc3RzPSosbG9jYWxob3N0LCAxMjcuMC4wLjEKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvV0VCLUlORi9yZWQ1LXdlYi54bWwgYi9XZWJDb250ZW50L1dFQi1JTkYvcmVkNS13ZWIueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2NzAwOGEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L1dFQi1JTkYvcmVkNS13ZWIueG1sCkBAIC0wLDAgKzEsNDEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8IURPQ1RZUEUgYmVhbnMgUFVCTElDICItLy9TUFJJTkcvL0RURCBCRUFOLy9FTiIgImh0dHA6Ly93d3cuc3ByaW5nZnJhbWV3b3JrLm9yZy9kdGQvc3ByaW5nLWJlYW5zLmR0ZCI+Cis8YmVhbnM+CisgICAgCisgICAgPGJlYW4gaWQ9InJlZDVXZWJQbGFjZWhvbGRlckNvbmZpZyIgY2xhc3M9Im9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5jb25maWcuUHJvcGVydHlQbGFjZWhvbGRlckNvbmZpZ3VyZXIiPgorICAgIAk8cHJvcGVydHkgbmFtZT0ic3lzdGVtUHJvcGVydGllc01vZGVOYW1lIiB2YWx1ZT0iU1lTVEVNX1BST1BFUlRJRVNfTU9ERV9GQUxMQkFDSyIvPgorICAgICAgICA8cHJvcGVydHkgbmFtZT0ibG9jYXRpb24iIHZhbHVlPSIvV0VCLUlORi9yZWQ1LXdlYi5wcm9wZXJ0aWVzIiAvPgorICAgIDwvYmVhbj4KKyAgICAKKyAgICA8YmVhbiBpZD0id2ViLmNvbnRleHQiIGNsYXNzPSJvcmcucmVkNS5zZXJ2ZXIuQ29udGV4dCIgYXV0b3dpcmU9ImJ5VHlwZSIgLz4KKyAgICAKKyAgICA8YmVhbiBpZD0id2ViLnNjb3BlIiBjbGFzcz0ib3JnLnJlZDUuc2VydmVyLnNjb3BlLldlYlNjb3BlIiBpbml0LW1ldGhvZD0icmVnaXN0ZXIiPgorICAgICAgICA8cHJvcGVydHkgbmFtZT0ic2VydmVyIiByZWY9InJlZDUuc2VydmVyIiAvPgorICAgICAgICA8cHJvcGVydHkgbmFtZT0icGFyZW50IiByZWY9Imdsb2JhbC5zY29wZSIgLz4KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9ImNvbnRleHQiIHJlZj0id2ViLmNvbnRleHQiIC8+CisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJoYW5kbGVyIiByZWY9IndlYi5oYW5kbGVyIiAvPgorICAgICAgICA8cHJvcGVydHkgbmFtZT0iY29udGV4dFBhdGgiIHZhbHVlPSIke3dlYmFwcC5jb250ZXh0UGF0aH0iIC8+CisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2aXJ0dWFsSG9zdHMiIHZhbHVlPSIke3dlYmFwcC52aXJ0dWFsSG9zdHN9IiAvPgorICAgIDwvYmVhbj4KKyAgICAKKwk8aW1wb3J0IHJlc291cmNlPSJvcGVubWVldGluZ3MtYXBwbGljYXRpb25Db250ZXh0LnhtbCIgLz4KKzwvYmVhbnM+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L1dFQi1JTkYvc3ByaW5nLW12Yy1zZXJ2bGV0LnhtbCBiL1dlYkNvbnRlbnQvV0VCLUlORi9zcHJpbmctbXZjLXNlcnZsZXQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjOWU3ZTgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L1dFQi1JTkYvc3ByaW5nLW12Yy1zZXJ2bGV0LnhtbApAQCAtMCwwICsxLDI1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxiZWFucwl4bWxucz0iaHR0cDovL3d3dy5zcHJpbmdmcmFtZXdvcmsub3JnL3NjaGVtYS9iZWFucyIKKwkJeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKKwkJeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vd3d3LnNwcmluZ2ZyYW1ld29yay5vcmcvc2NoZW1hL2JlYW5zIGh0dHA6Ly93d3cuc3ByaW5nZnJhbWV3b3JrLm9yZy9zY2hlbWEvYmVhbnMvc3ByaW5nLWJlYW5zLTMuMC54c2QiIAorLz4KKwpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9XRUItSU5GL3ZlbG9jaXR5LnByb3BlcnRpZXMgYi9XZWJDb250ZW50L1dFQi1JTkYvdmVsb2NpdHkucHJvcGVydGllcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmY4NWYzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9XRUItSU5GL3ZlbG9jaXR5LnByb3BlcnRpZXMKQEAgLTAsMCArMSw0MCBAQAorIyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorIyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisjICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorIyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorIyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorIyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorIyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorIyAgCisjICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjICAgIAkgIAorIyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorIyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyMgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorIyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisjICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisjICB1bmRlciB0aGUgTGljZW5zZS4KKworIworIyBzcGVjaWZ5IHRocmVlIHJlc291cmNlIGxvYWRlcnMgdG8gdXNlCisjCityZXNvdXJjZS5sb2FkZXIgPSBmaWxlLCBjbGFzcworCisjCisjIGZvciB0aGUgbG9hZGVyIHdlIGNhbGwgJ2ZpbGUnLCBzZXQgdGhlIEZpbGVSZXNvdXJjZUxvYWRlciBhcyB0aGUKKyMgY2xhc3MgdG8gdXNlLCB0dXJuIG9mZiBjYWNoaW5nCisjCitmaWxlLnJlc291cmNlLmxvYWRlci5kZXNjcmlwdGlvbiA9IFZlbG9jaXR5IEZpbGUgUmVzb3VyY2UgTG9hZGVyCitmaWxlLnJlc291cmNlLmxvYWRlci5jbGFzcyA9IG9yZy5hcGFjaGUudmVsb2NpdHkucnVudGltZS5yZXNvdXJjZS5sb2FkZXIuRmlsZVJlc291cmNlTG9hZGVyCitmaWxlLnJlc291cmNlLmxvYWRlci5wYXRoID0gLi9jbGFzc2VzCitmaWxlLnJlc291cmNlLmxvYWRlci5jYWNoZSA9IGZhbHNlCitmaWxlLnJlc291cmNlLmxvYWRlci5tb2RpZmljYXRpb25DaGVja0ludGVydmFsID0gMAorCitpbnB1dC5lbmNvZGluZz1VVEYtOAorb3V0cHV0LmVuY29kaW5nPVVURi04CisKKyMKKyMgIGZvciB0aGUgbG9hZGVyIHdlIGNhbGwgJ2NsYXNzJywgdXNlIHRoZSBDbGFzc3BhdGhSZXNvdXJjZUxvYWRlcgorIworY2xhc3MucmVzb3VyY2UubG9hZGVyLmRlc2NyaXB0aW9uID0gVmVsb2NpdHkgQ2xhc3NwYXRoIFJlc291cmNlIExvYWRlcgorY2xhc3MucmVzb3VyY2UubG9hZGVyLmNsYXNzID0gb3JnLmFwYWNoZS52ZWxvY2l0eS5ydW50aW1lLnJlc291cmNlLmxvYWRlci5DbGFzc3BhdGhSZXNvdXJjZUxvYWRlcgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvV0VCLUlORi93ZWIueG1sIGIvV2ViQ29udGVudC9XRUItSU5GL3dlYi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmU0YTBjYQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvV0VCLUlORi93ZWIueG1sCkBAIC0wLDAgKzEsMjE3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPHdlYi1hcHAgdmVyc2lvbj0iMi40IiB4bWxucz0iaHR0cDovL2phdmEuc3VuLmNvbS94bWwvbnMvajJlZSIKKyAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly9qYXZhLnN1bi5jb20veG1sL25zL2oyZWUgaHR0cDovL2phdmEuc3VuLmNvbS94bWwvbnMvajJlZS93ZWItYXBwXzJfNC54c2QiPgorICAgIDxjb250ZXh0LXBhcmFtPgorICAgICAgICA8cGFyYW0tbmFtZT5nbG9iYWxTY29wZTwvcGFyYW0tbmFtZT4KKyAgICAgICAgPHBhcmFtLXZhbHVlPmRlZmF1bHQ8L3BhcmFtLXZhbHVlPgorICAgIDwvY29udGV4dC1wYXJhbT4KKyAgICAKKwk8d2VsY29tZS1maWxlLWxpc3Q+CisJCTx3ZWxjb21lLWZpbGU+c2lwaW5kZXguaHRtbDwvd2VsY29tZS1maWxlPgorCQk8d2VsY29tZS1maWxlPmxvZ2luLmh0bWw8L3dlbGNvbWUtZmlsZT4KKwkJPHdlbGNvbWUtZmlsZT5pbmRleC5odG1sPC93ZWxjb21lLWZpbGU+CisJCTx3ZWxjb21lLWZpbGU+aW5kZXguaHRtPC93ZWxjb21lLWZpbGU+CisJCTx3ZWxjb21lLWZpbGU+bmV0d29ya3Rlc3Rpbmcuc3dmMTAuc3dmPC93ZWxjb21lLWZpbGU+CisJPC93ZWxjb21lLWZpbGUtbGlzdD4KKyAgICAKKyAgICA8IS0tIEN1c3RvbSBsb2dnaW5nIGxpa2UgZGVzY3JpYmVkIGluIFBhdWwgR3JlZ29pcmUgUGF0Y2g6IAorICAgIGh0dHA6Ly9ncmVnb2lyZS5vcmcvMjAwOC8wOS8xOC9sb2dnaW5nLXdvcmstYXJvdW5kLworICAgIFRISVMgV0lMTCBOT1QgV09SSyBmb3IgdXMgYXMgd2UgY2FuIGhhcmRseSByZXdyaXRlIGFsbCBsb2dnaW5nIHN0YXRlbWVudHMgb2YgaGliZXJuYXRlCisgICAgCisgICAgLS0+CisgICAgPGxpc3RlbmVyPgorICAgICAgICA8bGlzdGVuZXItY2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMuT01Db250ZXh0TGlzdGVuZXI8L2xpc3RlbmVyLWNsYXNzPgorICAgIDwvbGlzdGVuZXI+CisgICAgCisgICAgPGZpbHRlcj4KKyAgICAgICAgPGZpbHRlci1uYW1lPkxvZ2dlckNvbnRleHRGaWx0ZXI8L2ZpbHRlci1uYW1lPgorICAgICAgICA8ZmlsdGVyLWNsYXNzPm9yZy5yZWQ1LmxvZ2dpbmcuTG9nZ2VyQ29udGV4dEZpbHRlcjwvZmlsdGVyLWNsYXNzPgorICAgIDwvZmlsdGVyPgorICAgIAorICAgIDxmaWx0ZXItbWFwcGluZz4KKyAgICAgICAgPGZpbHRlci1uYW1lPkxvZ2dlckNvbnRleHRGaWx0ZXI8L2ZpbHRlci1uYW1lPgorICAgICAgICA8dXJsLXBhdHRlcm4+Lyo8L3VybC1wYXR0ZXJuPgorICAgIDwvZmlsdGVyLW1hcHBpbmc+ICAgCisgICAgCisJPGZpbHRlcj4KKwkJPGZpbHRlci1uYW1lPk9wZW5tZWV0aW5nc0FwcGxpY2F0aW9uPC9maWx0ZXItbmFtZT4KKwkJPGZpbHRlci1jbGFzcz5vcmcuYXBhY2hlLndpY2tldC5wcm90b2NvbC53cy50b21jYXQ3LlRvbWNhdDdXZWJTb2NrZXRGaWx0ZXI8L2ZpbHRlci1jbGFzcz4KKwkJPGluaXQtcGFyYW0+CisJCQk8cGFyYW0tbmFtZT5hcHBsaWNhdGlvbkNsYXNzTmFtZTwvcGFyYW0tbmFtZT4KKwkJCTxwYXJhbS12YWx1ZT5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuYXBwLkFwcGxpY2F0aW9uPC9wYXJhbS12YWx1ZT4KKwkJPC9pbml0LXBhcmFtPgorCQk8aW5pdC1wYXJhbT4KKwkJCTxwYXJhbS1uYW1lPmNvbmZpZ3VyYXRpb248L3BhcmFtLW5hbWU+CisJCQk8cGFyYW0tdmFsdWU+QHdpY2tldC5tb2RlQDwvcGFyYW0tdmFsdWU+CisJCTwvaW5pdC1wYXJhbT4KKwk8L2ZpbHRlcj4KKwk8ZmlsdGVyLW1hcHBpbmc+CisJCTxmaWx0ZXItbmFtZT5PcGVubWVldGluZ3NBcHBsaWNhdGlvbjwvZmlsdGVyLW5hbWU+CisJCTx1cmwtcGF0dGVybj4vaHRtbC8qPC91cmwtcGF0dGVybj4KKwk8L2ZpbHRlci1tYXBwaW5nPgorCSAKKyAgICA8Y29udGV4dC1wYXJhbT4KKyAgICAgICAgPHBhcmFtLW5hbWU+Y29udGV4dENvbmZpZ0xvY2F0aW9uPC9wYXJhbS1uYW1lPgorICAgICAgICA8cGFyYW0tdmFsdWU+L1dFQi1JTkYvcmVkNS0qLnhtbDwvcGFyYW0tdmFsdWU+CisgICAgPC9jb250ZXh0LXBhcmFtPgorICAgIDxjb250ZXh0LXBhcmFtPgorICAgICAgICA8cGFyYW0tbmFtZT5sb2NhdG9yRmFjdG9yeVNlbGVjdG9yPC9wYXJhbS1uYW1lPgorICAgICAgICA8cGFyYW0tdmFsdWU+cmVkNS54bWw8L3BhcmFtLXZhbHVlPgorICAgIDwvY29udGV4dC1wYXJhbT4KKyAgICA8Y29udGV4dC1wYXJhbT4KKyAgICAgICAgPHBhcmFtLW5hbWU+cGFyZW50Q29udGV4dEtleTwvcGFyYW0tbmFtZT4KKyAgICAgICAgPHBhcmFtLXZhbHVlPmRlZmF1bHQuY29udGV4dDwvcGFyYW0tdmFsdWU+CisgICAgPC9jb250ZXh0LXBhcmFtPgorICAgIAorICAgIDwhLS0gcmVtb3ZlIHRoZSBmb2xsb3dpbmcgc2VydmxldCB0YWdzIGlmIHlvdSB3YW50IHRvIGRpc2FibGUgcmVtb3RpbmcgZm9yIHRoaXMgYXBwbGljYXRpb24gLS0+CisJPHNlcnZsZXQ+CisJCTxzZXJ2bGV0LW5hbWU+c3ByaW5nLW12Yzwvc2VydmxldC1uYW1lPgorCQk8c2VydmxldC1jbGFzcz5vcmcuc3ByaW5nZnJhbWV3b3JrLndlYi5zZXJ2bGV0LkRpc3BhdGNoZXJTZXJ2bGV0PC9zZXJ2bGV0LWNsYXNzPgorCTwvc2VydmxldD4KKyAgICA8c2VydmxldD4KKyAgICAgICAgPHNlcnZsZXQtbmFtZT5nYXRld2F5PC9zZXJ2bGV0LW5hbWU+CisgICAgICAgIDxzZXJ2bGV0LWNsYXNzPm9yZy5yZWQ1LnNlcnZlci5uZXQuc2VydmxldC5BTUZHYXRld2F5U2VydmxldDwvc2VydmxldC1jbGFzcz4KKyAgICA8L3NlcnZsZXQ+CisgICAgPHNlcnZsZXQ+CisgICAgICAgIDxzZXJ2bGV0LW5hbWU+RG93bmxvYWRIYW5kbGVyPC9zZXJ2bGV0LW5hbWU+CisgICAgICAgIDxzZXJ2bGV0LWNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnNlcnZsZXQub3V0cHV0aGFuZGxlci5Eb3dubG9hZEhhbmRsZXI8L3NlcnZsZXQtY2xhc3M+CisgICAgPC9zZXJ2bGV0PgorICAgIDxzZXJ2bGV0PgorICAgICAgICA8c2VydmxldC1uYW1lPkluc3RhbGw8L3NlcnZsZXQtbmFtZT4KKyAgICAgICAgPHNlcnZsZXQtY2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2VydmxldC5vdXRwdXRoYW5kbGVyLkluc3RhbGw8L3NlcnZsZXQtY2xhc3M+CisgICAgPC9zZXJ2bGV0PgorICAgIDxzZXJ2bGV0PgorICAgICAgICA8c2VydmxldC1uYW1lPkxhbmdFeHBvcnQ8L3NlcnZsZXQtbmFtZT4KKyAgICAgICAgPHNlcnZsZXQtY2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2VydmxldC5vdXRwdXRoYW5kbGVyLkxhbmdFeHBvcnQ8L3NlcnZsZXQtY2xhc3M+CisgICAgPC9zZXJ2bGV0PgorICAgIDxzZXJ2bGV0PgorICAgICAgICA8c2VydmxldC1uYW1lPkV4cG9ydDwvc2VydmxldC1uYW1lPgorICAgICAgICA8c2VydmxldC1jbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5zZXJ2bGV0Lm91dHB1dGhhbmRsZXIuRXhwb3J0PC9zZXJ2bGV0LWNsYXNzPgorICAgIDwvc2VydmxldD4KKyAgICA8c2VydmxldD4KKyAgICAgICAgPHNlcnZsZXQtbmFtZT5FeHBvcnRUb0ltYWdlPC9zZXJ2bGV0LW5hbWU+CisgICAgICAgIDxzZXJ2bGV0LWNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnNlcnZsZXQub3V0cHV0aGFuZGxlci5FeHBvcnRUb0ltYWdlPC9zZXJ2bGV0LWNsYXNzPgorICAgIDwvc2VydmxldD4KKyAgICA8c2VydmxldD4KKyAgICAgICAgPHNlcnZsZXQtbmFtZT5BY3RpdmF0ZVVzZXI8L3NlcnZsZXQtbmFtZT4KKyAgICAgICAgPHNlcnZsZXQtY2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2VydmxldC5vdXRwdXRoYW5kbGVyLkFjdGl2YXRlVXNlcjwvc2VydmxldC1jbGFzcz4KKyAgICA8L3NlcnZsZXQ+CisgICAgPCEtLSBBeGlzMiBTZXR0aW5ncyAtLT4KKyAgICA8c2VydmxldD4KKyAgICAgICAgPHNlcnZsZXQtbmFtZT5BeGlzU2VydmxldDwvc2VydmxldC1uYW1lPgorICAgICAgICA8c2VydmxldC1jbGFzcz5vcmcuYXBhY2hlLmF4aXMyLnRyYW5zcG9ydC5odHRwLkF4aXNTZXJ2bGV0PC9zZXJ2bGV0LWNsYXNzPgorICAgICAgICA8bG9hZC1vbi1zdGFydHVwPjE8L2xvYWQtb24tc3RhcnR1cD4KKyAgICA8L3NlcnZsZXQ+CisgICAgPHNlcnZsZXQ+CisJCTxzZXJ2bGV0LW5hbWU+Q2FsZW5kYXI8L3NlcnZsZXQtbmFtZT4KKwkJPHNlcnZsZXQtY2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2VydmxldC5vdXRwdXRoYW5kbGVyLkNhbGVuZGFyU2VydmxldDwvc2VydmxldC1jbGFzcz4KKwk8L3NlcnZsZXQ+CisgICAgPHNlcnZsZXQ+CisgICAgICAgIDxkZXNjcmlwdGlvbj5EZWZhdWx0SW5kZXg8L2Rlc2NyaXB0aW9uPgorICAgICAgICA8ZGlzcGxheS1uYW1lPkRlZmF1bHRJbmRleDwvZGlzcGxheS1uYW1lPgorICAgICAgICA8c2VydmxldC1uYW1lPkRlZmF1bHRJbmRleDwvc2VydmxldC1uYW1lPgorICAgICAgICA8c2VydmxldC1jbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5zZXJ2bGV0Lm91dHB1dGhhbmRsZXIuRGVmYXVsdEluZGV4PC9zZXJ2bGV0LWNsYXNzPgorICAgIDwvc2VydmxldD4gCisgICAgPHNlcnZsZXQ+CisgICAgICAgIDxkZXNjcmlwdGlvbj5CYWNrdXBFeHBvcnQ8L2Rlc2NyaXB0aW9uPgorICAgICAgICA8ZGlzcGxheS1uYW1lPkJhY2t1cEV4cG9ydDwvZGlzcGxheS1uYW1lPgorICAgICAgICA8c2VydmxldC1uYW1lPkJhY2t1cEV4cG9ydDwvc2VydmxldC1uYW1lPgorICAgICAgICA8c2VydmxldC1jbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5zZXJ2bGV0Lm91dHB1dGhhbmRsZXIuQmFja3VwRXhwb3J0RmFjYWRlPC9zZXJ2bGV0LWNsYXNzPgorICAgIDwvc2VydmxldD4KKwkKKwk8c2VydmxldC1tYXBwaW5nPgorCQk8c2VydmxldC1uYW1lPnNwcmluZy1tdmM8L3NlcnZsZXQtbmFtZT4KKwkJPHVybC1wYXR0ZXJuPioudXBsb2FkPC91cmwtcGF0dGVybj4KKwk8L3NlcnZsZXQtbWFwcGluZz4KKyAgICA8c2VydmxldC1tYXBwaW5nPgorICAgICAgICA8c2VydmxldC1uYW1lPkRvd25sb2FkSGFuZGxlcjwvc2VydmxldC1uYW1lPgorICAgICAgICA8dXJsLXBhdHRlcm4+L0Rvd25sb2FkSGFuZGxlcjwvdXJsLXBhdHRlcm4+CisgICAgPC9zZXJ2bGV0LW1hcHBpbmc+CisgICAgPHNlcnZsZXQtbWFwcGluZz4KKyAgICAgICAgPHNlcnZsZXQtbmFtZT5JbnN0YWxsPC9zZXJ2bGV0LW5hbWU+CisgICAgICAgIDx1cmwtcGF0dGVybj4vSW5zdGFsbDwvdXJsLXBhdHRlcm4+CisgICAgPC9zZXJ2bGV0LW1hcHBpbmc+CisgICAgPHNlcnZsZXQtbWFwcGluZz4KKyAgICAgICAgPHNlcnZsZXQtbmFtZT5JbnN0YWxsPC9zZXJ2bGV0LW5hbWU+CisgICAgICAgIDx1cmwtcGF0dGVybj4vaW5zdGFsbDwvdXJsLXBhdHRlcm4+CisgICAgPC9zZXJ2bGV0LW1hcHBpbmc+CisgICAgPHNlcnZsZXQtbWFwcGluZz4KKyAgICAgICAgPHNlcnZsZXQtbmFtZT5MYW5nRXhwb3J0PC9zZXJ2bGV0LW5hbWU+CisgICAgICAgIDx1cmwtcGF0dGVybj4vTGFuZ0V4cG9ydDwvdXJsLXBhdHRlcm4+CisgICAgPC9zZXJ2bGV0LW1hcHBpbmc+CisgICAgPHNlcnZsZXQtbWFwcGluZz4KKyAgICAgICAgPHNlcnZsZXQtbmFtZT5FeHBvcnQ8L3NlcnZsZXQtbmFtZT4KKyAgICAgICAgPHVybC1wYXR0ZXJuPi9FeHBvcnQ8L3VybC1wYXR0ZXJuPgorICAgIDwvc2VydmxldC1tYXBwaW5nPgorICAgIDxzZXJ2bGV0LW1hcHBpbmc+CisgICAgICAgIDxzZXJ2bGV0LW5hbWU+RXhwb3J0VG9JbWFnZTwvc2VydmxldC1uYW1lPgorICAgICAgICA8dXJsLXBhdHRlcm4+L0V4cG9ydFRvSW1hZ2U8L3VybC1wYXR0ZXJuPgorICAgIDwvc2VydmxldC1tYXBwaW5nPgorICAgIDxzZXJ2bGV0LW1hcHBpbmc+CisgICAgICAgIDxzZXJ2bGV0LW5hbWU+QWN0aXZhdGVVc2VyPC9zZXJ2bGV0LW5hbWU+CisgICAgICAgIDx1cmwtcGF0dGVybj4vYWN0aXZhdGVVc2VyPC91cmwtcGF0dGVybj4KKyAgICA8L3NlcnZsZXQtbWFwcGluZz4KKyAgICA8IS0tIEF4aXMyIC0tPgorICAgIDxzZXJ2bGV0LW1hcHBpbmc+CisgICAgICAgIDxzZXJ2bGV0LW5hbWU+QXhpc1NlcnZsZXQ8L3NlcnZsZXQtbmFtZT4KKyAgICAgICAgPHVybC1wYXR0ZXJuPi9zZXJ2aWNlcy8qPC91cmwtcGF0dGVybj4KKyAgICA8L3NlcnZsZXQtbWFwcGluZz4KKwk8c2VydmxldC1tYXBwaW5nPgorCQk8c2VydmxldC1uYW1lPkNhbGVuZGFyPC9zZXJ2bGV0LW5hbWU+CisJCTx1cmwtcGF0dGVybj4vQ2FsZW5kYXI8L3VybC1wYXR0ZXJuPgorCTwvc2VydmxldC1tYXBwaW5nPgorICAgIDxzZXJ2bGV0LW1hcHBpbmc+CisgICAgICAgIDxzZXJ2bGV0LW5hbWU+RGVmYXVsdEluZGV4PC9zZXJ2bGV0LW5hbWU+CisgICAgICAgIDx1cmwtcGF0dGVybj4vc2lwaW5kZXguaHRtbDwvdXJsLXBhdHRlcm4+CisgICAgPC9zZXJ2bGV0LW1hcHBpbmc+CisgICAgPHNlcnZsZXQtbWFwcGluZz4KKyAgICAgICAgPHNlcnZsZXQtbmFtZT5CYWNrdXBFeHBvcnQ8L3NlcnZsZXQtbmFtZT4KKyAgICAgICAgPHVybC1wYXR0ZXJuPi9CYWNrdXBFeHBvcnQ8L3VybC1wYXR0ZXJuPgorICAgIDwvc2VydmxldC1tYXBwaW5nPgorICAgIDxtaW1lLW1hcHBpbmc+CisgICAgICAgIDxleHRlbnNpb24+aW5jPC9leHRlbnNpb24+CisgICAgICAgIDxtaW1lLXR5cGU+dGV4dC9wbGFpbjwvbWltZS10eXBlPgorICAgIDwvbWltZS1tYXBwaW5nPgorICAgICAKKyAgICA8c2VjdXJpdHktY29uc3RyYWludD4KKyAgICAgICAgPHdlYi1yZXNvdXJjZS1jb2xsZWN0aW9uPgorICAgICAgICAgICAgPHdlYi1yZXNvdXJjZS1uYW1lPkZvcmJpZGRlbjwvd2ViLXJlc291cmNlLW5hbWU+CisgICAgICAgICAgICA8dXJsLXBhdHRlcm4+L3N0cmVhbXMvKjwvdXJsLXBhdHRlcm4+CisgICAgICAgIDwvd2ViLXJlc291cmNlLWNvbGxlY3Rpb24+CisgICAgICAgIDx3ZWItcmVzb3VyY2UtY29sbGVjdGlvbj4KKyAgICAgICAgICAgIDx3ZWItcmVzb3VyY2UtbmFtZT5Gb3JiaWRkZW48L3dlYi1yZXNvdXJjZS1uYW1lPgorICAgICAgICAgICAgPHVybC1wYXR0ZXJuPi9jb25mLyo8L3VybC1wYXR0ZXJuPgorICAgICAgICA8L3dlYi1yZXNvdXJjZS1jb2xsZWN0aW9uPgorICAgICAgICA8d2ViLXJlc291cmNlLWNvbGxlY3Rpb24+CisgICAgICAgICAgICA8d2ViLXJlc291cmNlLW5hbWU+Rm9yYmlkZGVuPC93ZWItcmVzb3VyY2UtbmFtZT4KKyAgICAgICAgICAgIDx1cmwtcGF0dGVybj4vdXBsb2FkLyo8L3VybC1wYXR0ZXJuPgorICAgICAgICA8L3dlYi1yZXNvdXJjZS1jb2xsZWN0aW9uPgorICAgICAgICA8d2ViLXJlc291cmNlLWNvbGxlY3Rpb24+CisgICAgICAgICAgICA8d2ViLXJlc291cmNlLW5hbWU+Rm9yYmlkZGVuPC93ZWItcmVzb3VyY2UtbmFtZT4KKyAgICAgICAgICAgIDx1cmwtcGF0dGVybj4vdXBsb2FkdGVtcC8qPC91cmwtcGF0dGVybj4KKyAgICAgICAgPC93ZWItcmVzb3VyY2UtY29sbGVjdGlvbj4KKyAgICAgICAgPGF1dGgtY29uc3RyYWludC8+CisgICAgPC9zZWN1cml0eS1jb25zdHJhaW50PgorICAgIDxsb2dpbi1jb25maWc+CisgICAgICAgIDxhdXRoLW1ldGhvZD5CQVNJQzwvYXV0aC1tZXRob2Q+CisgICAgPC9sb2dpbi1jb25maWc+Cis8L3dlYi1hcHA+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L2NvbmYvb21fbGRhcC5jZmcgYi9XZWJDb250ZW50L2NvbmYvb21fbGRhcC5jZmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY1YTBiZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvY29uZi9vbV9sZGFwLmNmZwpAQCAtMCwwICsxLDkxIEBACisjDQorIyBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorIyBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisjIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorIyByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorIyB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorIyAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorIyB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorIyANCisjICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisjICAgICAgICAgDQorIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorIyBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyMgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorIyBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisjIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisjIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyMgDQorI0NvbmZpZ3VyYXRpb25GaWxlIGZvciBMREFQIEF1dGgNCisjQ29uZmlnS2V5ICdsZGFwX2NvbmZpZ19wYXRoJyBtdXN0IGJlIHNldCBpbiBEYXRhQmFzZSBDb25maWdyYXRpb24gb2YgT00gYW5kIHBvaW50IHRvIHRoaXMgZmlsZQ0KKyNvLmJlY2hlcmVyLDE0LjAxLjIwMDkNCisNCisjc3BlY2lmeSB0aGUgTERBUCBTZXJ2ZXIgdHlwZQ0KKyMgVGhpcyBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIExEQVAgc2VydmVyIHlvdXIgYXJlIGRlZmluaW5nDQorIyANCisjIFN1cHBvcnRlZCB2YWx1ZXMgYXJlICJPcGVuTERBUCIgYW5kICJBRCIgZm9yIEFjdGl2ZSBEaXJlY3RvcnkgKGRlZmF1bHRzIHRvIEFEKS4NCitsZGFwX3NlcnZlcl90eXBlPU9wZW5MREFQDQorDQorI0xEQVAgVVJMDQorIyBUaGlzIGlzIHRoZSBVUkwgdXNlZCB0byBhY2Nlc3MgeW91ciBMREFQIHNlcnZlci4NCisNCisjIGNhbiBiZSBhIHNpbXBsZSBVUkwgbGlrZTogDQorIyAgIGxkYXBfY29ubl91cmw9bGRhcDovL215bGRhcC5teW9yZy5jb20NCisjIG9yIGEgbGlzdCBvZiBzaW1wbGUgVVJMIHNlcGFyYXRlZCBieSBhIHNwYWNlIGFzIGluOiANCisjICAgbGRhcF9jb25uX3VybD1sZGFwOi8vbXlsZGFwLm15b3JnLmNvbSBsZGFwOi8vbXlsZGFwMi5teW9yZy5jb20gDQorIyBpZiB5b3Ugd2FudCB0byB1c2UgImxkYXBzOi8vIiBsaW5rcywgcGxlYXNlIGJlIGF3YXJlIHRoYXQgeW91IG5lZWQgdG8gaW1wb3J0IHlvdXIgQ0EgY2VydGlmaWNhdGUNCisjICB0byBhIGphdmEga2V5c3RvcmUgYW5kIGFkZCB0aGUgLURqYXZheC5uZXQuc3NsLmtleVN0b3JlLCAtRGphdmF4Lm5ldC5zc2wua2V5U3RvcmVQYXNzd29yZCwNCisjICAtRGphdmF4Lm5ldC5zc2wudHJ1c3RTdG9yZSBhbmQgLURqYXZheC5uZXQuc3NsLnRydXN0U3RvcmVQYXNzd29yZCBwYXJhbWV0ZXJzIHRvIHlvdXIgDQorIyAgSkFWQV9PUFQgZW52aXJvbm1lbnQNCitsZGFwX2Nvbm5fdXJsPWxkYXA6Ly9kYzIubWVkaW50LmxvY2FsOjM4OQ0KKw0KKyNMb2dpbiBkaXN0aW5ndWlzaGVkIG5hbWUgKEROKSBmb3IgQXV0aGVudGlmaWNhdGlvbiBvbiBMREFQIFNlcnZlciAtIGtlZXAgZW10cHkgaWYgbm90IHJlcXVpZXJlZA0KKyMgVXNlIEROIHdpdGggd2l0aCAiOiIgaW5zdGVhZCBvZiAiPSIuIFRoZSBjb252ZXJzaW9uIHdpbGwgYmUgZG9uZSBpbiBPTQ0KK2xkYXBfYWRtaW5fZG49Q046ZHVtbXksT1U6ZXh0ZXJuYWwgdXNlcnMsT1U6T3RoZXIsREM6bWVkaW50LERDOmxvY2FsDQorDQorI0xvZ2lucGFzcyBmb3IgQXV0aGVudGlmaWNhdGlvbiBvbiBMREFQIFNlcnZlciAtIGtlZXAgZW10cHkgaWYgbm90IHJlcXVpZXJlZA0KK2xkYXBfcGFzc3dkPWR1bW15MDcNCisNCisjYmFzZSB0byBzZWFyY2ggZm9yIHVzZXJkYXRhKG9mIHVzZXIsIHRoYXQgd2FudHMgdG8gbG9naW4pDQorIyBVc2UgRE4gd2l0aCB3aXRoICI6IiBpbnN0ZWFkIG9mICI9Ii4gVGhlIGNvbnZlcnNpb24gd2lsbCBiZSBkb25lIGluIE9NDQorbGRhcF9zZWFyY2hfYmFzZT1PVTpDb21wYW55LERDOm1lZGludCxEQzpsb2NhbA0KKw0KKyMgRmllbGRuYW1lcyAoY2FuIGRpZmZlciBiZXR3ZWVuIExkYXAgc2VydmVycykgDQorZmllbGRfdXNlcl9wcmluY2lwYWw9dWlkDQorDQorIyBMZGFwIGF1dGggdHlwZShTSU1QTEUsTk9ORSkNCisjICBXaGVuIHVzaW5nIFNJTVBMRSBhIHNpbXBsZSBiaW5kIGlzIHBlcmZvcm1lZCBvbiB0aGUgTERBUCBzZXJ2ZXIgdG8gY2hlY2sgdXNlciBhdXRoZW50aWNhdGlvbg0KKyMgIFdoZW4gdXNpbmcgTk9ORSwgdGhlIExkYXAgc2VydmVyIGlzIG5vdCB1c2VkIGZvciBhdXRoZW50aWNhdGlvbg0KK2xkYXBfYXV0aF90eXBlPVNJTVBMRQ0KKw0KKyMgTGRhcC1wYXNzd29yZCBzeW5jaHJvbml6YXRpb24gdG8gT00gREINCisjICBTZXQgdGhpcyB0byAneWVzJyBpZiB5b3Ugd2FudCBPTSB0byBzeW5jaHJvbml6ZSB0aGUgdXNlciBMZGFwLXBhc3N3b3JkIHRvIE9NJ3MgaW50ZXJuYWwgREINCisjICBUaGlzIGVuYWJsZXMgbG9jYWwgbG9naW4gb2YgdXNlcnMgaWYgdGhlIGxkYXAgc2VydmVyIGlzIG9mZmxpbmUuDQorIyAgSWYgeW91IHdhbnQgdG8gZGlzYWJsZSB0aGUgZmVhdHVyZSwgc2V0IHRoaXMgdG8gJ25vJy4NCisjICBEZWZhdXRsIHZhbHVlIGlzICd5ZXMnDQorbGRhcF9zeW5jX3Bhc3N3b3JkX3RvX29tPXllcw0KKw0KKw0KKyMgTGRhcCB1c2VyIGF0dHJpYnV0ZXMgbWFwcGluZw0KKyMgU2V0IHRoZSBmb2xsb3dpbmcgaW50ZXJuYWwgT00gdXNlciBhdHRyaWJ1dGVzIHRvIHRoZWlyIGNvcnJlc3BvbmRpbmcgTGRhcC1hdHRyaWJ1dGUNCitsZGFwX3VzZXJfYXR0cl9sYXN0bmFtZT1zbg0KK2xkYXBfdXNlcl9hdHRyX2ZpcnN0bmFtZT1naXZlbk5hbWUNCitsZGFwX3VzZXJfYXR0cl9tYWlsPW1haWwNCitsZGFwX3VzZXJfYXR0cl9zdHJlZXQ9c3RyZWV0QWRkcmVzcw0KK2xkYXBfdXNlcl9hdHRyX2FkZGl0aW9uYWxuYW1lPWRlc2NyaXB0aW9uDQorbGRhcF91c2VyX2F0dHJfZmF4PWZhY3NpbWlsZVRlbGVwaG9uZU51bWJlcg0KK2xkYXBfdXNlcl9hdHRyX3ppcD1wb3N0YWxDb2RlDQorbGRhcF91c2VyX2F0dHJfY291bnRyeT1jbw0KK2xkYXBfdXNlcl9hdHRyX3Rvd249bA0KK2xkYXBfdXNlcl9hdHRyX3Bob25lPXRlbGVwaG9uZU51bWJlcg0KKw0KKyMgb3B0aW9uYWwsIG9ubHkgYWJzb2x1dGUgVVJMcyBtYWtlIHNlbnNlDQorI2xkYXBfdXNlcl9waWN0dXJlX3VyaT1waWN0dXJlX3VyaQ0KKw0KKyMgb3B0aW9uYWwNCisjIHRoZSB0aW1lem9uZSBoYXMgdG8gbWFjaCBhbiBlbnRyeSBpbiB0aGUgT3Blbk1lZXRpbmdzIHRhYmxlICJvbXRpbWV6b25lcyIgb3RoZXJ3aXNlIHRoZSB1c2VyIHdpbGwgZ2V0DQorIyB0aGUgdGltZXpvbmUgZGVmaW5lZCBpbiB0aGUgdmFsdWUgb2YgdGhlIGNvbmZfa2V5ICJkZWZhdWx0LnRpbWV6b25lIiBpbiBPcGVuTWVldGluZ3MgImNvbmZpZ3VyYXRpb25zIiB0YWJsZQ0KKyNsZGFwX3VzZXJfdGltZXpvbmU9dGltZXpvbmUNCisNCisjIExkYXAgaWdub3JlIHVwcGVyL2xvd2VyIGNhc2UsIGNvbnZlcnQgYWxsIGlucHV0IHRvIGxvd2VyIGNhc2UNCitsZGFwX3VzZV9sb3dlcl9jYXNlPWZhbHNlDQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9jb25mL3NhbXBsZV9vcGVubGRhcF9vbV9sZGFwLmNmZyBiL1dlYkNvbnRlbnQvY29uZi9zYW1wbGVfb3BlbmxkYXBfb21fbGRhcC5jZmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQ0OGM4ZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvY29uZi9zYW1wbGVfb3BlbmxkYXBfb21fbGRhcC5jZmcKQEAgLTAsMCArMSw1MyBAQAorIw0KKyMgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyMgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorIyBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyMgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyMgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyMgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyMgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyMgDQorIyAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorIyAgICAgICAgIA0KKyMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyMgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisjICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyMgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorIyBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorIyB1bmRlciB0aGUgTGljZW5zZS4NCisjIA0KKyNDb25maWd1cmF0aW9uRmlsZSBmb3IgTERBUCBBdXRoDQorI0NvbmZpZ0tleSAnbGRhcF9jb25maWdfcGF0aCcgbXVzdCBiZSBzZXQgaW4gRGF0YUJhc2UgQ29uZmlncmF0aW9uIG9mIE9NIGFuZCBwb2ludCB0byB0aGlzIGZpbGUNCisjby5iZWNoZXJlciwxNC4wMS4yMDA5DQorDQorI3NwZWNpZnkgdGhlIExEQVAgU2VydmVyIHR5cGUNCitsZGFwX3NlcnZlcl90eXBlPU9wZW5MREFQDQorDQorI0xEQVAgVVJMDQorbGRhcF9jb25uX3VybD1sZGFwOi8vZGMyLm1lZGludC5sb2NhbDozODkNCisNCisjTG9naW4gZGlzdGluZ3Vpc2hlZCBuYW1lIChETikgZm9yIEF1dGhlbnRpZmljYXRpb24gb24gTERBUCBTZXJ2ZXIgLSBrZWVwIGVtdHB5IGlmIG5vdCByZXF1aWVyZWQNCitsZGFwX2FkbWluX2RuPUNOOmR1bW15LE9VOmV4dGVybmFsIHVzZXJzLE9VOk90aGVyLERDOm1lZGludCxEQzpsb2NhbA0KKw0KKyNMb2dpbnBhc3MgZm9yIEF1dGhlbnRpZmljYXRpb24gb24gTERBUCBTZXJ2ZXIgLSBrZWVwIGVtdHB5IGlmIG5vdCByZXF1aWVyZWQNCitsZGFwX3Bhc3N3ZD1kdW1teTA3DQorDQorI2Jhc2UgdG8gc2VhcmNoIGZvciB1c2VyZGF0YShvZiB1c2VyLCB0aGF0IHdhbnRzIHRvIGxvZ2luDQorbGRhcF9zZWFyY2hfYmFzZT1PVTpDb21wYW55LERDOm1lZGludCxEQzpsb2NhbA0KKw0KKyMgRmllbGRuYW1lcyAoY2FuIGRpZmZlciBiZXR3ZWVuIExkYXAgc2VydmVycykgDQorZmllbGRfdXNlcl9wcmluY2lwYWw9dWlkDQorDQorIyBMZGFwIGF1dGggdHlwZShTSU1QTEUsTk9ORSkNCitsZGFwX2F1dGhfdHlwZT1TSU1QTEUNCisNCisjIExkYXAgaWdub3JlIHVwcGVyL2xvd2VyIGNhc2UsIGNvbnZlcnQgYWxsIGlucHV0IHRvIGxvd2VyIGNhc2UNCitsZGFwX3VzZV9sb3dlcl9jYXNlPWZhbHNlDQorDQorIyBvcHRpb25hbA0KKyMgdGhlIHRpbWV6b25lIGhhcyB0byBtYWNoIGFuIGVudHJ5IGluIHRoZSBPcGVuTWVldGluZ3MgdGFibGUgIm9tdGltZXpvbmVzIiBvdGhlcndpc2UgdGhlIHVzZXIgd2lsbCBnZXQNCisjIHRoZSB0aW1lem9uZSBkZWZpbmVkIGluIHRoZSB2YWx1ZSBvZiB0aGUgY29uZl9rZXkgImRlZmF1bHQudGltZXpvbmUiIGluIE9wZW5NZWV0aW5ncyAiY29uZmlndXJhdGlvbnMiIHRhYmxlDQorI2xkYXBfdXNlcl90aW1lem9uZT10aW1lem9uZQ0KKw0KKyMgb3B0aW9uYWwsIG9ubHkgYWJzb2x1dGUgVVJMcyBtYWtlIHNlbnNlDQorI2xkYXBfdXNlcl9waWN0dXJlX3VyaT1waWN0dXJlX3VyaQ0KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvY3Jvc3Nkb21haW4ueG1sIGIvV2ViQ29udGVudC9jcm9zc2RvbWFpbi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjg0NGYyMAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvY3Jvc3Nkb21haW4ueG1sCkBAIC0wLDAgKzEsMjYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCI/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgICAgICAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGNyb3NzLWRvbWFpbi1wb2xpY3kgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgCisgICAgeHNpOm5vTmFtZXNwYWNlU2NoZW1hTG9jYXRpb249ImNyb3NzZG9tYWluLnhzZCI+CisJPHNpdGUtY29udHJvbCBwZXJtaXR0ZWQtY3Jvc3MtZG9tYWluLXBvbGljaWVzPSJhbGwiLz4KKwk8YWxsb3ctYWNjZXNzLWZyb20gZG9tYWluPSJsb2NhbGhvc3QiIHRvLXBvcnRzPSIyMC02NTUzNSIvPgorCTxhbGxvdy1hY2Nlc3MtZnJvbSBkb21haW49IioubG9jYWwiIHRvLXBvcnRzPSIyMC02NTUzNSIvPgorPC9jcm9zcy1kb21haW4tcG9saWN5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9jcm9zc2RvbWFpbi54c2QgYi9XZWJDb250ZW50L2Nyb3NzZG9tYWluLnhzZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDczNTFkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9jcm9zc2RvbWFpbi54c2QKQEAgLTAsMCArMSw0MSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPHhzOnNjaGVtYSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIj4NCisgIDx4czplbGVtZW50IG5hbWU9ImNyb3NzLWRvbWFpbi1wb2xpY3kiPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOnNlcXVlbmNlPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzaXRlLWNvbnRyb2wiLz4NCisgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImFsbG93LWFjY2Vzcy1mcm9tIi8+DQorICAgICAgPC94czpzZXF1ZW5jZT4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9InNpdGUtY29udHJvbCI+DQorICAgIDx4czpjb21wbGV4VHlwZT4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBlcm1pdHRlZC1jcm9zcy1kb21haW4tcG9saWNpZXMiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOk5DTmFtZSIvPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0iYWxsb3ctYWNjZXNzLWZyb20iPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkb21haW4iIHVzZT0icmVxdWlyZWQiLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRvLXBvcnRzIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czpOTVRPS0VOIi8+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorPC94czpzY2hlbWE+DQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9qcmViZWwvcmVkNS1kZWJ1Zy5iYXQgYi9XZWJDb250ZW50L2pyZWJlbC9yZWQ1LWRlYnVnLmJhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDg3ZTllCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9qcmViZWwvcmVkNS1kZWJ1Zy5iYXQKQEAgLTAsMCArMSwxOSBAQAorUkVNICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KK1JFTSBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCitSRU0geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KK1JFTSBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCitSRU0NCitSRU0gICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KK1JFTQ0KK1JFTSBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorUkVNIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorUkVNIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KK1JFTSBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorUkVNIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KK1JFTSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCitAZWNobyBvZmYNCisNCitpZiBOT1QgREVGSU5FRCBSRUQ1X0hPTUUgc2V0IFJFRDVfSE9NRT0lfmRwMA0KKw0KK3NldCBKQVZBX09QVFM9LVhkZWJ1ZyAtWHJ1bmpkd3A6dHJhbnNwb3J0PWR0X3NvY2tldCxhZGRyZXNzPTg3ODcsc2VydmVyPXksc3VzcGVuZD1uIC1qYXZhYWdlbnQ6QGpyZWJlbC5ob21lQFxqcmViZWwuamFyIC1EcmViZWwucmVtb3RpbmdfcGx1Z2luPXRydWUgLURwcm9qZWN0LnJvb3Q9QHByb2plY3QuaG9tZUANCislUkVENV9IT01FJVxyZWQ1LmJhdA0KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvanJlYmVsL3JlZDUtZGVidWcuc2ggYi9XZWJDb250ZW50L2pyZWJlbC9yZWQ1LWRlYnVnLnNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0MDY1YjQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L2pyZWJlbC9yZWQ1LWRlYnVnLnNoCkBAIC0wLDAgKzEsMjIgQEAKKyMhL2Jpbi9iYXNoCisjICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyMKKyMgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorIworIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisjIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisjIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisjIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorIyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworaWYgWyAteiAiJFJFRDVfSE9NRSIgXTsgdGhlbiBleHBvcnQgUkVENV9IT01FPS47IGZpCisKKyMgRGVidWcgb3B0aW9ucworZXhwb3J0IEpBVkFfT1BUUz0iLVhkZWJ1ZyAtWHJ1bmpkd3A6dHJhbnNwb3J0PWR0X3NvY2tldCxhZGRyZXNzPTg3ODcsc2VydmVyPXksc3VzcGVuZD1uICRKQVZBX09QVFMgLWphdmFhZ2VudDpAanJlYmVsLmhvbWVAL2pyZWJlbC5qYXIgLURyZWJlbC5yZW1vdGluZ19wbHVnaW49dHJ1ZSAtRHByb2plY3Qucm9vdD1AcHJvamVjdC5ob21lQCIKKworIyBTdGFydCBSZWQ1CitleGVjICRSRUQ1X0hPTUUvcmVkNS5zaApkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9sYW5ndWFnZXMvYXJhYmljLnhtbCBiL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL2FyYWJpYy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjFkODcwMQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL2FyYWJpYy54bWwKQEAgLTAsMCArMSw0NjUyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorCis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitUaGlzIEZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgYnkgdGhlIExhbmd1YWdlRWRpdG9yIAordG8gYWRkIG5ldyBMYW5ndWFnZXMgb3IgbW9kaWZ5L2N1c3RvbWl6ZSBpdCB1c2UgdGhlIExhbmd1YWdlRWRpdG9yIAorc2VlIGh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9MYW5ndWFnZUVkaXRvci5odG1sIGZvciBEZXRhaWxzIAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMtLT4KKzxsYW5ndWFnZSB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczpub05hbWVzcGFjZVNjaGVtYUxvY2F0aW9uPSJsYW5ndWFnZS54c2QiPgorICA8c3RyaW5nIGlkPSIxIiBuYW1lPSJjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+2KfZhNmF2KTYqtmF2LE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMiIgbmFtZT0ibWVldGluZyI+CisgICAgPHZhbHVlPtin2KzYqtmF2KfYuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzIiBuYW1lPSJjbGFzc3Jvb20iPgorICAgIDx2YWx1ZT7Yp9mE2KfYrdiv2KfYqzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0IiBuYW1lPSJzZXR0aW5ncyI+CisgICAgPHZhbHVlPtij2YXYp9mD2YY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNSIgbmFtZT0iYmVudXR6ZXIiPgorICAgIDx2YWx1ZT7Zhtio2LDYqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2IiBuYW1lPSJhZG1pbiI+CisgICAgPHZhbHVlPtin2YTYp9iv2KfYsdipPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjciIG5hbWU9InN0b3AiPgorICAgIDx2YWx1ZT7YqtmI2YLZgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT7Ys9is2YQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOSIgbmFtZT0ibm9maWxlIj4KKyAgICA8dmFsdWU+2YTYpyDZhdmE2YEg2YXYqtin2K3YqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMCIgbmFtZT0icmVjb3JkYnl0ZWFjaGVyIj4KKyAgICA8dmFsdWU+2LPYrNmEINmC2KjZhCDYp9mE2YXYudmE2YXZitmGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExIiBuYW1lPSJjb25uZWN0ZWR1c2VycyI+CisgICAgPHZhbHVlPtiq2LHYqtio2Lcg2KfZhNmF2LPYqtiu2K/ZhdmK2YYgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMiIgbmFtZT0ic3RhcnRjb25mIj4KKyAgICA8dmFsdWU+2KjYr9ihINin2YTZhdik2KrZhdixPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzIiBuYW1lPSJteW5hbWUiPgorICAgIDx2YWx1ZT7Yp9iz2YXZijwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNCIgbmFtZT0idmlkZW9jb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+2KfZhNmB2YrYr9mK2Yg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUiIG5hbWU9ImltcG9ydCI+CisgICAgPHZhbHVlPtiq2K3ZhdmK2YQg2KfZhNmF2YTZgdin2Ko8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYiIG5hbWU9InJlZnJlc2hmaWxlcyI+CisgICAgPHZhbHVlPtiq2K3Yr9mK2Ksg2YLYp9im2YXYqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNyIgbmFtZT0idG9tYWluZmlsZSI+CisgICAgPHZhbHVlPtin2YTZiSDYp9mE2YXZhNmBINin2YTYsdim2YrYs9mKPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4IiBuYW1lPSJuZXdwb2xsIj4KKyAgICA8dmFsdWU+2KfYs9iq2LfZhNin2Lkg2KzYr9mK2K88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkiIG5hbWU9Im5ld3BvbGxoZWFkZXIiPgorICAgIDx2YWx1ZT7Yp9iz2KrYt9mE2KfYuSDYrNiv2YrYryDZhNmE2YXYpNiq2YXYsS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAiIG5hbWU9InF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+2KfZhNiz2KTYp9mEIDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEiIG5hbWU9InBvbGx0eXBlIj4KKyAgICA8dmFsdWU+2YbZiNi5INmF2YYg2KfYs9iq2LfZhNin2Lkg2YTZhNix2KPZiiDZitik2YPYryA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyIiBuYW1lPSJjcmVhdGUiPgorICAgIDx2YWx1ZT7YrtmE2YI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMiIG5hbWU9ImluZm9tZXNzYWdlIj4KKyAgICA8dmFsdWU+2YXYudmE2YjZhdin2KogOiDZg9mEINi12YTYqSDZitiq2YTZgtmJINin2YTZhdiz2KrYrtiv2YUg2LHYs9in2YTYqSDZhdi5INin2LPYqti32YTYp9i5INis2K/ZitivLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNCIgbmFtZT0iY3JlYXRwb2xsIj4KKyAgICA8dmFsdWU+2KfZhti02KfYoSDYp9iz2KrYt9mE2KfYuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNSIgbmFtZT0iY2FuY2VsIj4KKyAgICA8dmFsdWU+2KfZhNi62KfYoTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNiIgbmFtZT0ieWVzbm8iPgorICAgIDx2YWx1ZT7Zhti52YUgLyDZhNinPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3IiBuYW1lPSJudW1lcmljIj4KKyAgICA8dmFsdWU+2LnYr9iv2YogMS0xMDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOCIgbmFtZT0icG9sbCI+CisgICAgPHZhbHVlPtin2LPYqti32YTYp9i5INin2YTYsdij2Yk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkiIG5hbWU9Im1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT7ZhNinINio2K8g2YXZhiDZiNiz2YrYtyDZhNiq2YfZitim2Kkg2KfZhNiz2KTYp9mEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwIiBuYW1lPSJ2b3RlIj4KKyAgICA8dmFsdWU+2KrYtdmI2YrYqtmDINmF2LPYrNmE2KkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxIiBuYW1lPSJhbHJlYWR5dm90ZWQiPgorICAgIDx2YWx1ZT7Yrdiz2KfYqNmDINmC2K8g2LXZiNiq2Kog2KjYp9mE2YHYudmEINmB2Yog2YfYsNinINin2YTYp9iz2KrYt9mE2KfYuS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIiIG5hbWU9InZvdGluZyI+CisgICAgPHZhbHVlPtiq2LXZiNmK2KohPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzIiBuYW1lPSJhbnN3ZXIiPgorICAgIDx2YWx1ZT7Ysdiv2YPZhSA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0IiBuYW1lPSJ5ZXMiPgorICAgIDx2YWx1ZT7Zhti52YU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUiIG5hbWU9Im5vIj4KKyAgICA8dmFsdWU+2YTYpzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNiIgbmFtZT0icXVlc3Rpb253YW50Ij4KKyAgICA8dmFsdWU+2YjYs9mI2YEgd2lzc2VuIDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzciIG5hbWU9InBvbGxyZXN1bHRzIj4KKyAgICA8dmFsdWU+2YbYqtin2KbYrCDYp9mE2KfYs9iq2LfZhNin2Lk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgiIG5hbWU9InF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+2KfZhNiz2KTYp9mEIDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkiIG5hbWU9InJlc3VsdHMiPgorICAgIDx2YWx1ZT7Yp9mE2YbYqtin2KbYrCA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwIiBuYW1lPSJhbnN3ZXJzIj4KKyAgICA8dmFsdWU+2KfZhNin2KzZiNio2YcgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MSIgbmFtZT0ibm9wb2xsIj4KKyAgICA8dmFsdWU+2YTYpyDYp9mE2KfYs9iq2LfZhNin2LnYp9iqINmC2K8g2KjYr9ij2KouPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyIiBuYW1lPSJ2b3RpbmdzIj4KKyAgICA8dmFsdWU+2KrYtdmI2YrYqiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMiIG5hbWU9Im1lZXRpbmciPgorICAgIDx2YWx1ZT7Yp9mE2KfYrNiq2YXYp9i5ICjZhdin2YPYsyA0INmF2YLYp9i52K8pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0IiBuYW1lPSJjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+2KfZhNmF2KTYqtmF2LEgKNmF2KfZg9izIDUwINmF2YLYudiv2KcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1IiBuYW1lPSJ0eXBlIj4KKyAgICA8dmFsdWU+2KfZhNmG2YjYuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NiIgbmFtZT0icmVtYWluaW5nc2VhdHMiPgorICAgIDx2YWx1ZT7Yp9mE2YXZgtin2LnYryDYp9mE2KfYrtix2Yk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDciIG5hbWU9ImFscmVhZHljaG9zZW4iPgorICAgIDx2YWx1ZT7YqNin2YTZgdi52YQg2KfYrtiq2KfYsdiqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4IiBuYW1lPSJlbnRlciI+CisgICAgPHZhbHVlPtij2K/YrtmEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5IiBuYW1lPSJtb2RsZWF2ZSI+CisgICAgPHZhbHVlPtin2YTZiNiz2YrYtyDZgtivINi62KfYr9ixINin2YTYrNmE2LPYqS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAiIG5hbWU9InN5c3RlbW1lc3NhZ2UiPgorICAgIDx2YWx1ZT7Zhti42KfZhSDYp9mE2YXYudmE2YjZhdin2Ko8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTEiIG5hbWU9ImNob3NzZWRldmljZSI+CisgICAgPHZhbHVlPtin2K7YqtmK2KfYsSDYrNmH2KfYsjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MiIgbmFtZT0iY2hvb3NlY2FtIj4KKyAgICA8dmFsdWU+2KfYrtiq2YrYp9ixINmD2KfZhdmK2LHYpyDZiNmK2KggOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MyIgbmFtZT0iY2hvb3NlbWljIj4KKyAgICA8dmFsdWU+2KfYrtiq2YrYp9ixINin2YTYrNiy2KbZiiA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0IiBuYW1lPSJvayI+CisgICAgPHZhbHVlPtin2YTZhdmI2KfZgdmC2Kk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUiIG5hbWU9ImNhbmNlbDIiPgorICAgIDx2YWx1ZT7Yp9mE2LrYp9ihPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2IiBuYW1lPSJyZWNvbmVlY3RuZWVkZWQiPgorICAgIDx2YWx1ZT7Yp9mG2Kog2KjYrdin2KzYqSDYp9mE2Ykg2KfYudin2K/YqSDZiNi12YQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3IiBuYW1lPSJlZGl0c2V0dXAiPgorICAgIDx2YWx1ZT7Yqtit2LHZitixINin2YTYp9i52K/Yp9ivLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OCIgbmFtZT0iY291cnNlIj4KKyAgICA8dmFsdWU+2YjYqNi32KjZiti52Kkg2KfZhNit2KfZhCA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5IiBuYW1lPSJsYW5ndWFnZSI+CisgICAgPHZhbHVlPtin2YTZhNi62KkgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MCIgbmFtZT0ib2syIj4KKyAgICA8dmFsdWU+2KfZhNmF2YjYp9mB2YLYqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MSIgbmFtZT0iY2FuY2VsMyI+CisgICAgPHZhbHVlPtin2YTYutin2KE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIiIG5hbWU9ImNsZWFyd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPtio2YrYttin2KEg2YjYp9i22K3YqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MyIgbmFtZT0iY2xlYXJ3aGl0ZWJvYXJkcXVlc3Rpb24iPgorICAgIDx2YWx1ZT7Zh9mEINiq2LHZitivINij2YYg2KrZg9mI2YYg2YTZiNit2Kkg2KzYr9mK2K/YqSDZgtio2YQg2KfZhiDYp9mB2LHYutmI2Kcg2KfZhNi12YjYsdipINin2YTZhdi22KfZgdmH2J88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQiIG5hbWU9ImRvbnRhc2thZ2FpbiI+CisgICAgPHZhbHVlPtmE2Kcg2KPYs9ij2YQg2YXYsdipINin2K7YsdmJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1IiBuYW1lPSJubyI+CisgICAgPHZhbHVlPtmE2Kc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYiIG5hbWU9ImVkaXRzZXR1cDIiPgorICAgIDx2YWx1ZT7Yqtit2LHZitixINin2YTYp9i52K/Yp9ivPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3IiBuYW1lPSJuZWVkY29uZmlybWF0aW9ud2hpdGVib2FyZCI+CisgICAgPHZhbHVlPtiq2KPZg9mK2K8g2LfZhNioINmC2KjZhCDYp9mB2LHYp9i6INio2YrYttin2KEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4IiBuYW1lPSJ1c2VyaW5mbyI+CisgICAgPHZhbHVlPtmF2LnZhNmI2YXYp9iqINmF2LPYqtiu2K/ZhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OSIgbmFtZT0iY2xlYXJkcmF3YXJlYSI+CisgICAgPHZhbHVlPtmI2KfYttitIGRyYXdhcmVhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwIiBuYW1lPSJ1bmRvIj4KKyAgICA8dmFsdWU+2KfZhNi62KfYoTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MSIgbmFtZT0icmVkbyI+CisgICAgPHZhbHVlPtij2LnYp9iv2Kk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIiIG5hbWU9InNlbGVjdG9iamVjdCI+CisgICAgPHZhbHVlPtin2K7YqtixINis2LPZhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MyIgbmFtZT0idGV4dCI+CisgICAgPHZhbHVlPtin2YTZhti1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0IiBuYW1lPSJwYWludCI+CisgICAgPHZhbHVlPtin2YTYt9mE2KfYoTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NSIgbmFtZT0iZHJhd2xpbmUiPgorICAgIDx2YWx1ZT7Yp9iz2KrYsdi52Ykg2KfZhNiu2Lc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYiIG5hbWU9ImRyYXd1Ij4KKyAgICA8dmFsdWU+2KXYqNix2KfYsiDYo9mI2KzZhzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NyIgbmFtZT0icmVjdCI+CisgICAgPHZhbHVlPtmF2LPYqti32YrZhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OCIgbmFtZT0iZWxsaXBzZSI+CisgICAgPHZhbHVlPtio2YrYttmI2Yo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkiIG5hbWU9ImFycm93Ij4KKyAgICA8dmFsdWU+2KfZhNiz2YfZhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MCIgbmFtZT0iZGVsZXRlY2hvc2VuIj4KKyAgICA8dmFsdWU+2KfYrtiq2KfYsSDYrdiw2YEg2KfZhNio2YbYrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MSIgbmFtZT0iYXBwbGl5bW9kIj4KKyAgICA8dmFsdWU+2LfZhNioINmE2YTYrdi12YjZhCDYudmE2Ykg2KfZhNin2LnYqtiv2KfZhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MiIgbmFtZT0iYXBwbHkiPgorICAgIDx2YWx1ZT7Yqti32KjZitmCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzIiBuYW1lPSJjYW5jZWwiPgorICAgIDx2YWx1ZT7Yp9mE2LrYp9ihPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0IiBuYW1lPSJtb2QiPgorICAgIDx2YWx1ZT7ZhNiq2LXYqNitINmF2LTYsdmBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1IiBuYW1lPSJjbG9zZSI+CisgICAgPHZhbHVlPtmI2KvZitmCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2IiBuYW1lPSJpdGFsaWMiPgorICAgIDx2YWx1ZT7Zhdin2KbZhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NyIgbmFtZT0iYm9sZCI+CisgICAgPHZhbHVlPtin2KzYqtix2KY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgiIG5hbWU9IndhaXRpbmciPgorICAgIDx2YWx1ZT7Yp9mG2KrYuNin2LE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkiIG5hbWU9ImFwcGx5TWVzc2FnZSI+CisgICAgPHZhbHVlPtmF2LPYqtiu2K/ZhSDZitix2YrYryDYp9mGINmK2LfYqNmCINmE2KfZhNin2LnYqtiv2KfZhCA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwIiBuYW1lPSJhY2NlcHQiPgorICAgIDx2YWx1ZT7ZitmC2KjZhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MSIgbmFtZT0icmVqZWN0Ij4KKyAgICA8dmFsdWU+2YbYsdmB2LY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIiIG5hbWU9ImNhbmNlbCI+CisgICAgPHZhbHVlPtin2YTYutin2KE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMiIG5hbWU9InNlbmRtb2RyZXF1ZXN0bWVzc2FnZSI+CisgICAgPHZhbHVlPtil2LHYs9in2YQg2LfZhNioINin2YTZiSDYp9mE2YXYs9iq2K7Yr9mF2YrZhiDYp9mE2KrYp9mE2YrYqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NCIgbmFtZT0iYWNjZXB0Ij4KKyAgICA8dmFsdWU+2YXZgtio2YjZhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NSIgbmFtZT0icmVqZWN0Ij4KKyAgICA8dmFsdWU+2LHZgdi2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2IiBuYW1lPSJjaGFuZ2Vtb2QiPgorICAgIDx2YWx1ZT7Yqti62YrZitixINmI2LPZiti3PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3IiBuYW1lPSJub25tb2RlcnJvcm1lc3NhZ2UiPgorICAgIDx2YWx1ZT7Yp9mG2Kog2YTYpyDYp9i52KrYr9in2YQg2YfYsNinINio2KfZhNi32KjYuSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgiIG5hbWU9Im1vZGVyYXRvciI+CisgICAgPHZhbHVlPtix2KbZitizINin2YTYrNmE2LPYqSA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5IiBuYW1lPSJyb29tZnVsbG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7Zh9iw2Ycg2KfZhNi62LHZgdipINio2KfZhNmD2KfZhdmELiDYudmB2YjYpyDZitix2KzZiSDYp9i52KfYr9ipINin2YTZhdit2KfZiNmE2Ycg2YTYp9it2YLYpy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwIiBuYW1lPSJlbGxsaXBzZSI+CisgICAgPHZhbHVlPtio2YrYttmI2Yo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxIiBuYW1lPSJjbG9zZSI+CisgICAgPHZhbHVlPtmI2KvZitmCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMiIgbmFtZT0iQXV0aEVycm9yIj4KKyAgICA8dmFsdWU+2K7Yt9ijINmB2Yog2KfZhNio2YrYp9mG2KfYqiDYp9mE2YXYr9iu2YTZhzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMiIG5hbWU9Im1pbjR1c2VybmFtZSI+CisgICAgPHZhbHVlPtin2LPZhSDYp9mE2YXYs9iq2K7Yr9mFINmK2KzYqCDYp9mGINiq2YPZiNmGINi52YTZiSDYp9mE2KPZgtmEIDQg2KfYrdix2YE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0IiBuYW1lPSJtaW40cGFzcyI+CisgICAgPHZhbHVlPlVzZXJwYXNzINmK2KzYqCDYo9mGINiq2YPZiNmGINi52YTZiSDYp9mE2KPZgtmEIDQg2KfYrdix2YE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1IiBuYW1lPSJ1c2VybmFtZXRha2VuIj4KKyAgICA8dmFsdWU+2KfYs9mFINin2YTZhdiz2KrYrtiv2YUg2YXYo9iu2YjYsCDZhdmGINmC2KjZhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYiIG5hbWU9ImVtYWlsdGFrZW4iPgorICAgIDx2YWx1ZT7Yp9mE2KjYsdmK2K8g2KfZhNin2YTZg9iq2LHZiNmG2Yog2YfZiCDZhdinINiz2KjZgiDYqtiz2KzZitmE2Yc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3IiBuYW1lPSJlbWFpbHRha2VuIj4KKyAgICA8dmFsdWU+2K7Yt9ijINmB2Yog2KfZhNmG2LjYp9mFINin2YTYsdis2KfYoSDYp9mE2KfYqti12KfZhCDZhdmG2LjZiNmF2Kkg2KfZhNmF2LTYsdmB2YjZhjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgiIG5hbWU9IkF1dGhsb2dpbiI+CisgICAgPHZhbHVlPtiq2LPYrNmK2YQg2KfZhNiv2K7ZiNmEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOSIgbmFtZT0iQXV0aHVzZXIiPgorICAgIDx2YWx1ZT7Zhdiz2KrYrtiv2YUgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAiIG5hbWU9IkF1dGhwYXNzIj4KKyAgICA8dmFsdWU+2KfZhNmF2LHZiNixIDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExIiBuYW1lPSJBdXRobGFuZyI+CisgICAgPHZhbHVlPtin2YTZhNi62Kk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyIiBuYW1lPSJBdXRocmVnIj4KKyAgICA8dmFsdWU+2KrYs9is2YrZhCDYp9mE2K/YrtmI2YQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzIiBuYW1lPSJyZWdmb3JtaGVhZCI+CisgICAgPHZhbHVlPtin2LTYqtix2YM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0IiBuYW1lPSJyZWdmb3JtdXNlciI+CisgICAgPHZhbHVlPtmF2LPYqtiu2K/ZhSA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNSIgbmFtZT0icmVnZm9ybXBhc3MiPgorICAgIDx2YWx1ZT7Yp9mE2YXYsdmI2LEgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYiIG5hbWU9InJlZ2Zvcm1yZXR5cGUiPgorICAgIDx2YWx1ZT7ZgtmE2KogOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTciIG5hbWU9InJlZ2Zvcm1maXJzdG5hbWUiPgorICAgIDx2YWx1ZT5GaXJzdG5hbWUgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgiIG5hbWU9InJlZ2Zvcm1sYXN0bmFtZSI+CisgICAgPHZhbHVlPkxhc3RuYW1lIDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5IiBuYW1lPSJyZWdmb3JtbWFpbCI+CisgICAgPHZhbHVlPtin2YTYqNix2YrYryA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMCIgbmFtZT0icmVnZm9ybXN0YXRlIj4KKyAgICA8dmFsdWU+2KfZhNio2YTYryA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMSIgbmFtZT0icmVnZm9ybWJ0bjEiPgorICAgIDx2YWx1ZT7Ys9is2YQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyIiBuYW1lPSJyZWdmb3JtYnRuMiI+CisgICAgPHZhbHVlPtin2YTYutin2KE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzIiBuYW1lPSJBdXRoYnRuMiI+CisgICAgPHZhbHVlPtiz2KzZhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPtin2YTYqNmK2Ko8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1IiBuYW1lPSJ1c2VyYWRtaW4iPgorICAgIDx2YWx1ZT7Yp9mE2YXYs9iq2LnZhdmE2YjZhjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYiIG5hbWU9Imdyb3VwYWRtaW4iPgorICAgIDx2YWx1ZT7Yp9mE2YXYrNmF2YjYudin2Ko8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3IiBuYW1lPSJvcmdhZG1pbiI+CisgICAgPHZhbHVlPtin2YTZhdmG2LjZhdin2Ko8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4IiBuYW1lPSJoZWFkY29uZiI+CisgICAgPHZhbHVlPi0g2LrYsdmBINin2YTYp9is2KrZhdin2Lk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5IiBuYW1lPSJjb25mX3B1YiI+CisgICAgPHZhbHVlPtin2YTYrNmF2YfZiNixPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMCIgbmFtZT0iaGVhZF9vcmciPgorICAgIDx2YWx1ZT7ZhdmG2LjZhdipPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMSIgbmFtZT0iYnRuX2VudGVycm9vbSI+CisgICAgPHZhbHVlPtij2K/YrtmEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMiIgbmFtZT0idXNlcmFsdGVyc2VsZl9sb2dpbiI+CisgICAgPHZhbHVlPtiq2LPYrNmK2YQg2KfZhNiv2K7ZiNmEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMyIgbmFtZT0idXNlcmFsdGVyc2VsZl9wYXNzIj4KKyAgICA8dmFsdWU+2YPZhNmF2Kkg2KfZhNiz2LE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Bhc3NyZXR5cGUiPgorICAgIDx2YWx1ZT7Yrdix2YjZgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUiIG5hbWU9InVzZXJhbHRlcnNlbGZfZmlyc3RuYW1lIj4KKyAgICA8dmFsdWU+Rmlyc3RuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNiIgbmFtZT0idXNlcmFsdGVyc2VsZl9sYXN0bmFtZSI+CisgICAgPHZhbHVlPkxhc3RuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNyIgbmFtZT0idXNlcmFsdGVyc2VsZl9lbWFpbCI+CisgICAgPHZhbHVlPtio2LHZitivPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOCIgbmFtZT0idXNlcmFsdGVyc2VsZl9iaXJ0aCI+CisgICAgPHZhbHVlPti52YrYryDYp9mE2YXZitmE2KfYrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkiIG5hbWU9InVzZXJhbHRlcnNlbGZfc3RyZWV0bm8iPgorICAgIDx2YWx1ZT7Yp9mE2LTYp9ix2LkgLyDZhNinPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MCIgbmFtZT0idXNlcmFsdGVyc2VsZl90b3duIj4KKyAgICA8dmFsdWU+2KfZhNix2YXYsiDYp9mE2KjYsdmK2K/ZiiAvINin2YTZhdiv2YrZhtipPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MSIgbmFtZT0idXNlcmFsdGVyc2VsZl9zdGF0ZSI+CisgICAgPHZhbHVlPtin2YTYqNmE2KfYrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIiIG5hbWU9InVzZXJhbHRlcnNlbGZfYWRyZXNzY29tbWVudCI+CisgICAgPHZhbHVlPkFkcmVzcyAtINmF2LnZhNmI2YXYp9iqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MyIgbmFtZT0idXNlcmFsdGVyc2VsZl9oZWFkZXIiPgorICAgIDx2YWx1ZT5Vc2VyZGF0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQiIG5hbWU9InNhdmVtZW51YmFyX3NhdmVsYWJlbCI+CisgICAgPHZhbHVlPtin2YbZgtin2LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1IiBuYW1lPSJzYXZlbWVudWJhcl9zYXZlbGFiZWwiPgorICAgIDx2YWx1ZT7Yp9mG2YLYp9iwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NiIgbmFtZT0iYWRtaW5fdXNlcmxpc3RfdXNlcl9pZCI+CisgICAgPHZhbHVlPi0g2LHZgtmFINiq2LnYsdmK2YEg2KfZhNmF2LPYqtiu2K/ZhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDciIG5hbWU9ImFkbWluX3VzZXJsaXN0X2xvZ2luIj4KKyAgICA8dmFsdWU+2KrYs9is2YrZhCDYp9mE2K/YrtmI2YQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4IiBuYW1lPSJhZG1pbl91c2VybGlzdF9maXJzdG5hbSI+CisgICAgPHZhbHVlPkZpcnN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkiIG5hbWU9ImFkbWluX3VzZXJsaXN0X2xhc3RuYW1lIj4KKyAgICA8dmFsdWU+TGFzdG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwIiBuYW1lPSJ0dXJub3Zlcmxpc3RfbmV4dCI+CisgICAgPHZhbHVlPtmI2KrYqNmK2YYg2KfZhNmF2YLYqNmEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MSIgbmFtZT0idHVybm92ZXJsaXN0X3ByZSI+CisgICAgPHZhbHVlPtmI2KrYuNmH2LEg2YLYqNmEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MiIgbmFtZT0ic2F2ZWNvbnRlbnRfY29uZmlybSI+CisgICAgPHZhbHVlPtit2LDZgSDYs9is2YQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzIiBuYW1lPSJzYXZlY29udGVudF9jb25maXJtX2NhbmNlbF9idG4iPgorICAgIDx2YWx1ZT7Yp9mE2LrYp9ihPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NCIgbmFtZT0ic2F2ZWNvbnRlbnRfY29uZmlybV9jb25maXJtX2J0biI+CisgICAgPHZhbHVlPtit2LDZgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTUiIG5hbWU9InNhdmVtZW51YmFyX2FkZGxhYmVsIj4KKyAgICA8dmFsdWU+2YLZitin2LPZitmHINis2K/Zitiv2Kk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU2IiBuYW1lPSJzYXZlbWVudWJhcl9yZWxvYWRsYWJlbCI+CisgICAgPHZhbHVlPtiq2KzYr9mK2K8g2KfZhNiz2KzZhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTciIG5hbWU9InNhdmVtZW51YmFyX2RlbGV0ZWxhYmVsIj4KKyAgICA8dmFsdWU+2K3YsNmBINiz2KzZhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTgiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9zdGF0dXMiPgorICAgIDx2YWx1ZT7Yp9mE2YXYsdmD2LI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU5IiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fc3RhdHVzSXRlbSI+CisgICAgPHZhbHVlPtmB2KfZgtivINin2YTYp9mH2YTZitmHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2MCIgbmFtZT0idXNlcmFsdGVyX2FkbWluX3N0YXR1c0l0ZW0iPgorICAgIDx2YWx1ZT7ZhdmD2YY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYxIiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fb3JnYW5pc2F0aW9uIj4KKyAgICA8dmFsdWU+2KfZhNmF2YbYuNmF2KfYqjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjIiIG5hbWU9ImNhbGVuZGFyX2ljb25sYWJlbCI+CisgICAgPHZhbHVlPtin2YTYqtmC2YjZitmFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2MyIgbmFtZT0ic2F2ZXdpbmRvd19idG4iPgorICAgIDx2YWx1ZT7ZiNir2YrZgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjQiIG5hbWU9Im9yZ2FuaXNhdGlvbnRhYmxlbGlzdF9pZHJvdyI+CisgICAgPHZhbHVlPtmF2YbYuNmF2Kkg2YXYudix2YE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY1IiBuYW1lPSJvcmdhbmlzYXRpb250YWJsZWxpc3RfbmFtZXJvdyI+CisgICAgPHZhbHVlPtin2YTYp9iz2YU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY2IiBuYW1lPSJ1c2VydmFsdWVfbGV2ZWxpZDEiPgorICAgIDx2YWx1ZT7Zhdiz2KrYudmF2YQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY3IiBuYW1lPSJ1c2VydmFsdWVfbGV2ZWxpZDIiPgorICAgIDx2YWx1ZT7ZiNiy2KfYsdipINin2YTYr9mB2KfYuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjgiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGlkMyI+CisgICAgPHZhbHVlPtin2YTYp9iv2KfYsdipPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2OSIgbmFtZT0idXNlcnZhbHVlX2xldmVsbGFiZWwiPgorICAgIDx2YWx1ZT5Vc2VybGV2ZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTcwIiBuYW1lPSJvcmd2YWx1ZV9oZWFkZXIiPgorICAgIDx2YWx1ZT7ZhdmG2LjZhdipPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MSIgbmFtZT0ib3JndmFsdWVfb3JnbmFtZSI+CisgICAgPHZhbHVlPtin2YTYp9iz2YU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTcyIiBuYW1lPSJvcmd2YWx1ZV9vcmduYW1lIj4KKyAgICA8dmFsdWU+2KrYttmK2YEg2YXZhti42YXYqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzMiIG5hbWU9Im9yZ3ZhbHVlX29yZ25hbWUiPgorICAgIDx2YWx1ZT7Yqti22YrZgSDZhdmG2LjZhdipPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3NCIgbmFtZT0ib3JndmFsdWVfdXNlcndpbiI+CisgICAgPHZhbHVlPtin2YTYutin2KE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc1IiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luIj4KKyAgICA8dmFsdWU+2KfYttmBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3NiIgbmFtZT0ib3JndmFsdWVfdXNlcndpbiI+CisgICAgPHZhbHVlPtin2LLYp9mE2Kkg2YXZhti42YXYqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzciIG5hbWU9Im9yZ3ZhbHVlX3VzZXJsaXN0Ij4KKyAgICA8dmFsdWU+2YXYs9iq2LnZhdmEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3OCIgbmFtZT0ib3JndmFsdWVfdXNlcmxpc3RhZGQiPgorICAgIDx2YWx1ZT7Yp9i22KfZgdipINmF2LPYqtiu2K/ZhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzkiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJsaXN0ZGVsZXRlIj4KKyAgICA8dmFsdWU+2K3YsNmBINin2YTZhdiz2KrYrtiv2YU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgwIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luaGVhZGVyIj4KKyAgICA8dmFsdWU+2KfYttin2YHYqSDZhdiz2KrYrtiv2YU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgxIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luc2VhcmNoZmllbGQiPgorICAgIDx2YWx1ZT7Yp9mE2KjYrdirINin2YTZhdiz2KrYrtiv2YU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgyIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luc2VhcmNoYnRuIj4KKyAgICA8dmFsdWU+2KfZhNio2K3YqzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODMiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5zZWFyY2hyZXN1bHQiPgorICAgIDx2YWx1ZT7Zhdiz2KrYudmF2YQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg0IiBuYW1lPSJsb2dpbndpbl9jaG9vc2VvcmdhbmlzYXRpb24iPgorICAgIDx2YWx1ZT7ZhdmG2LjZhdipPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NSIgbmFtZT0ibG9naW53aW5fY2hvb3Nlb3JnYW5pc2F0aW9uYnRuIj4KKyAgICA8dmFsdWU+2KPYr9iu2YQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg2IiBuYW1lPSJuYXZpX3Jvb21hZG1pbiI+CisgICAgPHZhbHVlPkNvbmZlcmVuY2Vyb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODciIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5Db25mZXJlbmNlcm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg4IiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+2KfZhNmH2YjZitipPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4OSIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPtin2YTYp9iz2YU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkwIiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+2KfZhNis2YXZh9mI2LE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkxIiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+2KfZhNmF2YbYuNmF2KfYqjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTIiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5NZWV0aW5ncm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkzIiBuYW1lPSJyb29tdmFsdWVfbmFtZSI+CisgICAgPHZhbHVlPtin2YTYp9iz2YU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk0IiBuYW1lPSJyb29tdmFsdWVfdHlwZSI+CisgICAgPHZhbHVlPtin2YTZhtmI2Lk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk1IiBuYW1lPSJyb29tdmFsdWVfaXNwdWJsaWMiPgorICAgIDx2YWx1ZT7Yp9mE2KzZhdmH2YjYsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTYiIG5hbWU9InJvb212YWx1ZV9jb21tZW50Ij4KKyAgICA8dmFsdWU+2KfZhNiq2LnZhNmK2YI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk3IiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVpY29uIj4KKyAgICA8dmFsdWU+2KfZhtmC2KfYsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTgiIG5hbWU9IndoaXRlYm9hcmRfb3Blbmljb24iPgorICAgIDx2YWx1ZT7YrdmF2YQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk5IiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbmhlYWRlciI+CisgICAgPHZhbHVlPtio2KfYs9iq2KvZhtin2KEg2YXYpyDZiNix2K88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAwIiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbnRleHQiPgorICAgIDx2YWx1ZT7Yp9iz2YUg2KfZhNmF2YTZgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDEiIG5hbWU9ImZpbGVzIj4KKyAgICA8dmFsdWU+2KfYs9mFINin2YTZhdmE2YE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAyIiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbmJ0bjEiPgorICAgIDx2YWx1ZT7Yp9mE2LrYp9ihPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMyIgbmFtZT0id2hpdGVib2FyZF9zYXZlYXN3aW5idG4yIj4KKyAgICA8dmFsdWU+2KfZhtmC2KfYsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDQiIG5hbWU9InJwY2Vycm9yd2luX2hlYWRlciI+CisgICAgPHZhbHVlPtiu2LfYozwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDUiIG5hbWU9ImxvYWR3bWxfaGVhZGVyIj4KKyAgICA8dmFsdWU+2KfZhNiq2K3ZhdmK2YQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA2IiBuYW1lPSJsb2Fkd21sX21lc3NzbG9hZCI+CisgICAgPHZhbHVlPtin2YTYp9i02YrYp9ihINin2YTZhdit2YXZhNmHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNyIgbmFtZT0ibG9hZHdtbF9tZXNzc3luYyI+CisgICAgPHZhbHVlPlNueWNocm9uaXppbmcg2KfZhNi52YXZhNin2KEg2YjYp9mE2LLYqNin2KbZhiDYudmE2Ykg2KfZhNin2YbYqti42KfYsSA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwOCIgbmFtZT0ibG9hZGltYWdlX21lc3Nsb2FkIj4KKyAgICA8dmFsdWU+2KfZhNiq2K3ZhdmK2YQgaW1hZ2VkYXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwOSIgbmFtZT0ibG9hZGltYWdlX21lc3NzeW5jIj4KKyAgICA8dmFsdWU+U255Y2hyb25pemluZyDYp9mE2LnZhdmE2KfYoSDZiNin2YTYstio2KfYptmGINi52YTZiSDYp9mE2KfZhtiq2LjYp9ixIDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEwIiBuYW1lPSJsb2Fkd21sX2NvbmZpcm1oZWFkZXIiPgorICAgIDx2YWx1ZT7ZiNin2LbYrSBkcmF3YXJlYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTEiIG5hbWU9ImxvYWR3bWxfY29uZmlybW1lc3MiPgorICAgIDx2YWx1ZT5EcmF3YXJlYSDZiNin2LbYrdipINiMINmI2KzZhdmK2Lkg2KfZhNio2YrYp9mG2KfYqiDYp9mE2YXYqti52YTZgtipINmI2K3YqSDYs9iq2LbZiti5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMiIgbmFtZT0ibG9hZHdtbF9jb25maXJtbWVzczIiPgorICAgIDx2YWx1ZT7Yqtij2YPYryDZgtio2YQg2KfZhNiq2K3ZhdmK2YQg2KfZhNmF2YTZgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTMiIG5hbWU9InNlbmRfaW52aXRhdGlvbl9idG4iPgorICAgIDx2YWx1ZT7Yp9ix2LPYp9mEINiv2LnZiNipPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNCIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX2hlYWRlciI+CisgICAgPHZhbHVlPtin2LHYs9in2YQg2K/YudmI2Kk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE1IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fc3ViamVjdCI+CisgICAgPHZhbHVlPtin2YTZhdmI2LbZiNi5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNiIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX3JlY2lwaWVudCI+CisgICAgPHZhbHVlPtin2YTZhdiq2YTZgtmK2Yc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE3IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fbWVzc2FnZSI+CisgICAgPHZhbHVlPtix2LPYp9mE2Kk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE4IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fYnRuX2NvbmZpcm0iPgorICAgIDx2YWx1ZT7Yo9ix2LPZhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTkiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9idG5fY2FuY2VsIj4KKyAgICA8dmFsdWU+2KfZhNi62KfYoTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjAiIG5hbWU9InNlbmRfY2hhdF90ZXh0X2J0biI+CisgICAgPHZhbHVlPtij2LHYs9mEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyMSIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2hlYWRlciI+CisgICAgPHZhbHVlPlVzZXJkYXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyMiIgbmFtZT0iaW52aXRlZF91c2Vyd2luX3N1YmplY3QiPgorICAgIDx2YWx1ZT7Yp9mE2KfYs9mFINin2YTZhdiz2KrYudin2LEg2KfZhNiu2KfYtSDYqNmDINmE2YfYsNinINin2YTZhdik2KrZhdixPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyMyIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2xvZ2luIj4KKyAgICA8dmFsdWU+2YbZitmDPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNCIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2ZpcnN0bmFtZSI+CisgICAgPHZhbHVlPkZpcnN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjUiIG5hbWU9Imludml0ZWRfdXNlcndpbl9sYXN0bmFtZSI+CisgICAgPHZhbHVlPkxhc3RuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNiIgbmFtZT0iaW52aXRlZF91c2Vyd2luX21haWwiPgorICAgIDx2YWx1ZT7Yp9mE2KjYsdmK2K8g2KfZhNin2YTZg9iq2LHZiNmG2Yo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI3IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fbGFuZyI+CisgICAgPHZhbHVlPtin2YTZhNi62Kk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI4IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZW50ZXIiPgorICAgIDx2YWx1ZT7Yo9iv2K7ZhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjkiIG5hbWU9Imludml0ZWRfdXNlcndpbl9lbnRlciI+CisgICAgPHZhbHVlPtin2YTYqtit2YXZitmEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMCIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2VudGVyIj4KKyAgICA8dmFsdWU+2KjZitin2YbYp9iqINin2YTYqtit2YXZitmEINiMINmK2LHYrNmJINin2YTYp9mG2KrYuNin2LEhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMSIgbmFtZT0idXNlcl9yZWdpc3RlckZhbHNlUFdEIj4KKyAgICA8dmFsdWU+2K7Yt9ijINmD2YTZhdipINin2YTYs9ixPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMiIgbmFtZT0idXNlcl9yZWdpc3RlckZhbHNlUFdESGVhZGVyIj4KKyAgICA8dmFsdWU+2KfZhNix2KzYp9ihINin2K/Yrtin2YQg2YPZhNmF2KfYqiDYp9mE2LPYsSDZhdiq2LfYp9io2YLZhyDZhdi5INin2KvZhtmK2YYg2LnZhNmJINin2YTYp9mC2YQgNCDYp9it2LHZgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzMiIG5hbWU9InVzZXJfcmVnaXN0ZXJNYWlsRXJyb3IiPgorICAgIDx2YWx1ZT7Yp9mE2KjYsdmK2K8g2KfZhNiu2LfYozwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzQiIG5hbWU9InVzZXJfcmVnaXN0ZXJNYWlsRXJyb3JIZWFkZXIiPgorICAgIDx2YWx1ZT7ZhNmC2K8g2YLZhdiqINio2KfYr9iu2KfZhCDYutmK2LEg2LXYp9mE2K3YqSDZhNmE2KjYsdmK2K8gLSBBZHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM1IiBuYW1lPSJ1c2VyX3JlZ2lzdGVyU3VjY2VzcyI+CisgICAgPHZhbHVlPtin2YTYqtiz2KzZitmEINin2YTZg9in2YXZhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzYiIG5hbWU9InVzZXJfcmVnaXN0ZXJTdWNjZXNzSGVhZGVyIj4KKyAgICA8dmFsdWU+2YTZgtivINiq2YUg2KfZhti02KfYoSDYrdiz2KfYqNmDLiDZitmF2YPZhtmDINin2YTYp9mGINiq2LPYrNmK2YQg2KfZhNiv2K7ZiNmELjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzciIG5hbWU9InVzZXJfc2hhcmluZ19tZXNzYWdlIj4KKyAgICA8dmFsdWU+2YTYpyDZitmF2YPZhtmDINit2LXYqSDYp9mE2LTYp9i02Ycg2YHZiiDYqtmE2YMg2KfZhNmE2K3YuNipLiDYtNiu2LUg2KLYrtixINio2KfZhNmB2LnZhCDYp9mE2LPZh9mFINiv2YjYsdiq2Ycg2KfZhNi02KfYtNmHLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzgiIG5hbWU9InVzZXJfc2hhcmluZ19tZXNzYWdlSGVhZGVyIj4KKyAgICA8dmFsdWU+2KrZgtin2LPZhSDZhdmF2YbZiNi5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzOSIgbmFtZT0idXNlcl9kb1N0YXJ0U2NyZWVuVmlld2VyIj4KKyAgICA8dmFsdWU+2K3YtdipINin2YTYtNin2LTZhzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDAiIG5hbWU9InNjcmVlbl93YXJuQmFuZHdpZHRoIj4KKyAgICA8dmFsdWU+2LPZitim2Kkg2LnYsdi2INin2YTZhti32KfZgiDYp9mE2KrYsdiv2K/ZiSA6INin2YbZgyDZhNmFINiq2KrZhdmD2YYg2YXZhiBzeW5jcm9uaXplINin2YTYtNin2LTZhy4g2KfYt9ixINiz2YrYqtmFINi12LHZgSDYp9mE2YbYuNixINi52YbZh9inLiDYp9iw2Kcg2YPYp9mGINmH2LDYpyDYp9mE2KrYrdiw2YrYsSDZh9mIINmF2KjZitmGINmB2Yog2YPYq9mK2LEg2YXZhiDYp9mE2KfYrdmK2KfZhiDZitmF2YPZhiDZhNmDINin2YYg2KrYt9mE2Kgg2YXZhiDZiNiz2YrYtyDYp9mE2Ykg2K7Zgdi2INmG2YjYudmK2KkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0MSIgbmFtZT0ic2NyZWVuX3VzZXJsYWJlbCI+CisgICAgPHZhbHVlPtmF2YYg2KfZhNi02KfYtNmHIDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQyIiBuYW1lPSJ3aGl0ZWJvYXJkX3RhYl9wYWludCI+CisgICAgPHZhbHVlPtin2YTYt9mE2KfYoTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDMiIG5hbWU9IndoaXRlYm9hcmRfdGFiX2RvY3VtZW50Ij4KKyAgICA8dmFsdWU+2KfZhNmI2KvZitmC2Kk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ0IiBuYW1lPSJ0YWJiYXJfY2hhdGljb24iPgorICAgIDx2YWx1ZT7Yp9mE2K/Ysdiv2LTZhzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDUiIG5hbWU9InRhYmJhcl9maWxlc2ljb24iPgorICAgIDx2YWx1ZT7ZhdmE2YHYp9iqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0NiIgbmFtZT0idGFiYmFyX3BhcnRpY2lwYW50c2ljb24iPgorICAgIDx2YWx1ZT7Yp9mE2KfYudi22KfYoTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDciIG5hbWU9InN3ZnByZXNlbnRhdGlvbl9saXN0c2F2ZW9yaWciPgorICAgIDx2YWx1ZT7YqtmG2LLZitmEINin2YTZiNir2YrZgtipINin2YTYp9i12YTZitmHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0OCIgbmFtZT0ic3dmcHJlc2VudGF0aW9uX2xpc3RzYXZlcGRmIj4KKyAgICA8dmFsdWU+2KrZhtiy2YrZhCDZgtmI2KfYqiDYp9mE2K/Zgdin2Lkg2KfZhNi02LnYqNmKINmI2KvZitmC2Kk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ5IiBuYW1lPSJzd2ZwcmVzZW50YXRpb25fbGlzdGxvYWRzd2YiPgorICAgIDx2YWx1ZT7YrdmF2YQg2LnYsdi2INmE2YjYrdipPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MCIgbmFtZT0ibmF2aW1haW5fY29uZmlnIj4KKyAgICA8dmFsdWU+2KfZhNiq2LTZg9mK2YQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUxIiBuYW1lPSJ3aGl0ZWJvYXJkX2JvdW5kaW5nYm94X2RyYWciPgorICAgIDx2YWx1ZT7Yo9iz2K3YqCDZh9iw2Kcg2KfZhNmI2KzZhyDZhdmGINmI2KzZiNmHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MiIgbmFtZT0id2hpdGVib2FyZF9ib3VuZGluZ2JveF9yZXNpemUiPgorICAgIDx2YWx1ZT7ZhNiq2LrZitmK2LEg2YfYsNinINin2YTZiNis2Ycg2YXZhiDZiNis2YjZhzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTMiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3pvb20iPgorICAgIDx2YWx1ZT7ZqjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTQiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3NsaWRlIj4KKyAgICA8dmFsdWU+2YXZhjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTUiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX2ZpcnN0c2xpZGUiPgorICAgIDx2YWx1ZT7Yp9iw2YfYqCDYp9mE2Ykg2KfZhNi12YHYrdmHINin2YTYp9mI2YTZiTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTYiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3ByZXNsaWRlIj4KKyAgICA8dmFsdWU+2KfYsNmH2Kgg2KfZhNmJINin2YTYtdmB2K3ZhyDYp9mE2LPYp9io2YLYqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTciIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX25leHRzbGlkZSI+CisgICAgPHZhbHVlPtin2LDZh9ioINin2YTZiSDYp9mE2LXZgdit2Ycg2KfZhNiq2KfZhNmK2Kk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU4IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9sYXN0c2xpZGUiPgorICAgIDx2YWx1ZT7Yp9iw2YfYqCDYp9mE2Ykg2KfZhNi12YHYrdmHINin2YTYp9iu2YrYsdipPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1OSIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfem9vbW1pbnVzIj4KKyAgICA8dmFsdWU+2KrZg9io2YrYsSAtLTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjAiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3pvb21wbHVzIj4KKyAgICA8dmFsdWU+2KrZg9io2YrYsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjEiIG5hbWU9InNhbHV0YXRpb25fbXIiPgorICAgIDx2YWx1ZT7Yp9mE2LPZitivPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MiIgbmFtZT0ic2FsdXRhdGlvbl9taXNzIj4KKyAgICA8dmFsdWU+2KfZhNiz2YrYr9ipPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MyIgbmFtZT0ibmF2aW1haW5fY29uZmFkbWluIj4KKyAgICA8dmFsdWU+2KfZhNiq2LTZg9mK2YQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY0IiBuYW1lPSJjb25mdGFibGVfaGVhZGVySWQiPgorICAgIDx2YWx1ZT7Yp9mE2YfZiNmK2Kk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY1IiBuYW1lPSJjb25mdGFibGVfaGVhZGVya2V5Ij4KKyAgICA8dmFsdWU+2YXZgdiq2KfYrTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjYiIG5hbWU9ImNvbmZhZG1pbmZvcm1faGVhZGVyIj4KKyAgICA8dmFsdWU+2KfZhNiq2LTZg9mK2YQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY3IiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsa2V5Ij4KKyAgICA8dmFsdWU+2YXZgdiq2KfYrTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjgiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWx1cGRhdGVkIj4KKyAgICA8dmFsdWU+2KLYrtixINiq2K3Yr9mK2Ks8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY5IiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsdXBkYXRlZGJ5Ij4KKyAgICA8dmFsdWU+VXBkYXRlZGJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MCIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbGNvbW1lbnQiPgorICAgIDx2YWx1ZT7Yp9mE2KrYudmE2YrZgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzEiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWxrZXkiPgorICAgIDx2YWx1ZT7ZhdmB2KrYp9itPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MiIgbmFtZT0idHVybm92ZXJsaXN0X21heHJlc3VsdHMiPgorICAgIDx2YWx1ZT7ZhdmGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MyIgbmFtZT0ib3JnYW5pc2F0aW9uX3VzZXJzaGVhZGVyIj4KKyAgICA8dmFsdWU+2KfZhNmF2LPYqti52YXZhNmI2YY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc0IiBuYW1lPSJvcmdhbmlzYXRpb25fdXNlcnNpY29uZGVsZXRlIj4KKyAgICA8dmFsdWU+2K3YsNmBINin2YTZhdiz2KrYrtiv2YUg2YXZhiDYp9mE2YXZhti42YXZhzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzUiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2RlbGV0ZWRoZWFkIj4KKyAgICA8dmFsdWU+2K3YsNmBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NiIgbmFtZT0ib3JnYW5pc2F0aW9uX3VzZXJzYWxyZWFkYWRkZWQiPgorICAgIDx2YWx1ZT7Zh9iw2Kcg2KfZhNmF2LPYqtiu2K/ZhSDZh9mIINio2KfZhNmB2LnZhCDYudi22Ygg2YHZiiDZh9iw2Ycg2KfZhNmF2YbYuNmF2YcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NyIgbmFtZT0iZGFzaGJvYXJkX25ld3NoZWFkZXIiPgorICAgIDx2YWx1ZT7Yp9iu2KjYp9ixPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3OCIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua3NoZWFkZXIiPgorICAgIDx2YWx1ZT5RdWlja2xpbmtzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3OSIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua0NvbmYiPgorICAgIDx2YWx1ZT7YrNmI2KrZiCDYp9mE2YXYpNiq2YXYsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODAiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtBdWRpdCI+CisgICAgPHZhbHVlPtmC2KfYudipINis2YjYqtmIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MSIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua3N1cHBvcnQiPgorICAgIDx2YWx1ZT7Zhdiz2KfYudiv2Kkg2YjYr9i52YU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgyIiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tob21lcGFnZXVybCI+CisgICAgPHZhbHVlPmh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgzIiBuYW1lPSJkYXNoYm9hcmRfcXVpY2ttYWlsaW5nbGlzdHVybCI+CisgICAgPHZhbHVlPmh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9tYWlsLWxpc3RzLmh0bWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg0IiBuYW1lPSJkYXNoYm9hcmRfcmVwb3J0YnVncyI+CisgICAgPHZhbHVlPtiq2YLYsdmK2LEg2KMg2KjZgtipITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODUiIG5hbWU9ImRhc2hib2FyZF9yc3NsaXN0aXRlbWxpbmt0ZXh0Ij4KKyAgICA8dmFsdWU+2KPZg9ir2LE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg2IiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5raG9tZXBhZ2VsYWJlbCI+CisgICAgPHZhbHVlPtmF2LTYsdmI2Lkg2LTYqNmD2YkgKGh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg3IiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rbWFpbGluZ2xpc3RsYWJlbCI+CisgICAgPHZhbHVlPtmF2LPYqtiu2K/ZhSDZgtin2KbZhdipINio2LHZitiv2YrZhyAoaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnL21haWwtbGlzdHMuaHRtbCAtINmF2LPYqtiu2K/ZhSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg4IiBuYW1lPSJsb2dpbl9yZW1lbWJlcnVzZXIiPgorICAgIDx2YWx1ZT7Zhtiq2LDZg9ixINiq2LPYrNmK2YQg2KfZhNiv2K7ZiNmEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4OSIgbmFtZT0ibWFpbl9uYXZpIj4KKyAgICA8dmFsdWU+2KfZhNmF2K3YqtmI2Yk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkwIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+2LXZgdit2KrZiiDYp9mE2LHYptmK2LPZitipPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MSIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPtio2YTYr9mKINin2YTYrNmE2LPYp9iqINin2YTZhdmC2LHYsdipPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MiIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPtio2YTYp9iv2Yog2KfZhNmF2YLYsdixINin2YTYp9it2K/Yp9irPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MyIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPtin2YTYrNmE2LPYp9iqINin2YTYudmE2YbZitmHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPtin2YTYrNmE2LPYp9iqINin2YTYs9ix2YrYqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTUiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT7Yp9mE2YXZhtin2LPYqNin2Kog2KfZhNi52KfZhdipPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NiIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPtin2YTZhdmG2KfYs9io2KfYqiDYp9mE2K7Yp9i12Kk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk3IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+2KfZhNis2YXZh9mI2LEg2YXYrdiq2YjZiTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTgiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT7Yp9mE2YXYrdiq2YjZiSDYp9mE2K7Yp9i1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5OSIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPtin2YTYtNiu2LXZitmHINin2YTZhdit2KrZiNmJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDEiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT7Yp9mE2KfYudiq2K/Yp9mEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMiIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPti32YTYqCDZhNmE2K3YtdmI2YQg2LnZhNmJINin2YTYp9i52KrYr9in2YQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAzIiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+2KfYs9iq2LfZhNin2LnYp9iqINin2YTYsdij2Yo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA0IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+2KfYrtiq2LEg2YXZhNmBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNSIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPtij2YXYp9mD2YY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA2IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+2YPYo9mFINin2YTYqtin2KjYudipINmE2YfZitim2Kkg2KfZhNiq2LXZhtmK2Lkg2KfZhNi52LPZg9ix2Ykg2YjYp9mE2KfYudiv2KfYr9in2Ko8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA3IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+2YTZiNitINin2YTYp9i52K/Yp9iv2KfYqjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDgiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT7Yrtix2YjYrDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDkiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT7YudmI2K/YqSDYp9mE2Ykg2LrYsdmBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMCIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPtiu2LHZiNisPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5EZXNrdG9wIFZpZXdlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTIiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+c3RhcnQgRGVza3RvcCBWaWV3ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEzIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPti12YjYqiDZiCDYtdmI2LHYqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTQiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+2K/Ysdiv2LTYqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTUiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+2YTZiNitINij2KjZiti2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxNiIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT4o2KXYudin2K/YqSkg2KjYr9ihINi12YjYqiAvINi12YjYsdipINij2Ygg2KrYutmK2YrYsSDYpdi52K/Yp9iv2KfYqiDYp9mE2KzZh9in2LI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE3IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPtmF2YTZgdin2Ko8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE4IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPtmF2LPYqtiu2K/ZhdmK2YY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE5IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPtil2LPYqti32YTYp9i52KfYqjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjAiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+2YfYsNinINin2YTYpdiz2YUg2YTYpyDZiti52YjYryDYpdmE2Ykg2KPZiiDZhdiz2KrYrtiv2YU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIxIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPtmE2YLYryDYqtmFINil2LHYs9in2YQg2KjYsdmK2K8g2YrYqti22YXZhiDYsdin2KjYtyDYrtin2LUg2KXZhNmJINio2LHZitiv2YMg2KfZhNil2YTZg9iq2LHZiNmG2YrYjCDYp9mE2LHYrNin2KEg2KrZgdit2LUg2LXZhtiv2YjZgiDYp9mE2KjYsdmK2K8uINil2LDYpyDZhNmFINiq2K3YtdmEINio2LnYryDYudmE2Ykg2KjYsdmK2K8g2KXZhNmD2KrYsdmI2YbZitiMINin2YTYsdis2KfYoSDYqti52K/ZitmEINil2LnYr9in2K/Yp9iqINin2YTYqNix2YrYryDYp9mE2YXYsti52Kwg2Ygg2YLZhSDYqNil2LnYp9iv2Kkg2KXYsdiz2KfZhCDYp9mE2KjYsdmK2K8g2KfZhNil2YTZg9iq2LHZiNmG2Yog2KfZhNiu2KfYtSDYqNin2YTYqtij2YPZitivLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjIiIG5hbWU9ImVycm9ydHlwZSI+CisgICAgPHZhbHVlPtiu2LfYozwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjMiIG5hbWU9ImVycm9ydHlwZSI+CisgICAgPHZhbHVlPtix2LPYp9mE2Kk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI0IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT7Zhdiy2YrYrCDYutmK2LEg2LXYp9mE2K0uINmE2YrYsyDZh9mG2KfZgyDYo9mKINmF2LPYqtiu2K/ZhS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI1IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT7Ypdiz2KrYudin2K/YqSDZg9mE2YXYqSDYp9mE2YXYsdmI2LE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI2IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT7Yqtiz2KzZitmEINin2YTYr9iu2YjZhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjciIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPtiq2LrZitmK2LEg2YPZhNmF2Kkg2KfZhNmF2LHZiNixPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyOCIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+2YPZhNmF2Kkg2YXYsdmI2LEg2KzYr9mK2K/YqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjkiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPtil2LnYp9iv2Kkg2KXYr9iu2KfZhCDZg9mE2YXYqSDYp9mE2YXYsdmI2LE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMwIiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT7Zg9mE2YXYp9iqINin2YTZhdix2YjYsSDYp9mE2KrZiiDYo9iv2K7ZhNiq2YfYpyDZhNmK2LPYqiDZhdiq2LfYp9io2YLYqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzEiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPtij2LHYqNi5INij2K3YsdmBINij2Ygg2KPZg9ir2LE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMyIiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT7YqtmFINiq2LPYrNmK2YQg2YPZhNmF2Kkg2KfZhNmF2LHZiNixLiDZitmF2YPZhtmDINin2YTYotmGINiq2LPYrNmK2YQg2KfZhNiv2K7ZiNmEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzMyIgbmFtZT0icnBjY2FsbGJhY2siPgorICAgIDx2YWx1ZT5PSzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzQiIG5hbWU9InJwY2dlbmVyYWxlcnJvciI+CisgICAgPHZhbHVlPtiu2LfYoyDYutmK2LEg2YXYudix2YjZgS4g2KfZhNix2KzYp9ihINil2KjZhNin2Log2YHYsdmK2YIg2KfZhNiu2K/ZhdipPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7Ypdiz2YUg2KfZhNmF2LPYqtiu2K/ZhSDYutmK2LEg2YXZiNis2YjYrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzYiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+2YPZhNmF2Kkg2YXYsdmI2LEg2LrZitixINi12K3Zitit2Kk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM3IiBuYW1lPSJsb2dvdXQiPgorICAgIDx2YWx1ZT7YqtmFINiq2LPYrNmK2YQg2KfZhNiu2LHZiNisINio2YbYrNin2K08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM4IiBuYW1lPSJyZWdpc3RyYXRpb24iPgorICAgIDx2YWx1ZT7YqtmFINil2YTYutin2KEg2KfZhNiq2LPYrNmK2YQg2KfZhNiz2KfYqNmCLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzkiIG5hbWU9InJlZ2lzdHJhdGlvbiI+CisgICAgPHZhbHVlPtio2LHZitivINil2YTZg9iq2LHZiNmG2Yog2LrZitixINi12K3ZititPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MCIgbmFtZT0icmVnaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+2KXYs9mFINmF2YTZgSDZhdmD2LHYsS4g2KfZhNix2KzYp9ihINil2K7YqtmK2KfYsSDYpdiz2YXYp9mLINii2K7Ysdin2Ys8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQxIiBuYW1lPSJmaWxlYnJvd3NlciI+CisgICAgPHZhbHVlPtil2LPZhSDYp9mE2YXZhNmBINmC2LXZitixPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MiIgbmFtZT0iZmlsZWJyb3dzZXIiPgorICAgIDx2YWx1ZT7ZhNinINmK2YXZg9mGINit2YHYuCDYp9mE2LnZhtmI2KfZhjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDMiIG5hbWU9InVzZXJhZG1pbiI+CisgICAgPHZhbHVlPtiq2YXYqiDYpdi22KfZgdipINin2YTZhdiz2KrYrtiv2YUg2YTZg9mGINmK2KzYqCDYpdmG2LPYp9ioINmH2LDYpyDYp9mE2YXYs9iq2K7Yr9mFINil2YTZiSDYqtmG2LjZitmFINmIINil2YTYpyDZhNmGINmK2YXZg9mG2Ycg2KrYs9is2YrZhCDYp9mE2K/YrtmI2YQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NCIgbmFtZT0iYWRtaW5mb3JtcyI+CisgICAgPHZhbHVlPtiz2KzZhCDYrNiv2YrYrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDUiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPtmE2YrYsyDZh9mG2KfZgyDYo9mKINit2YLZhCDZitit2YXZhCDZh9iw2KcgSWQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+2YTZitizINmH2YbYp9mDINil2LPZhSDZhNmH2LDZhyDYp9mE2LHZgti52KkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NyIgbmFtZT0iZXJyb3JtZXNzYWdlIj4KKyAgICA8dmFsdWU+2KfZhNmF2LfZhNmI2Kgg2KXYsNmGINin2YTZhdi02LHZgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDgiIG5hbWU9Im1haW5uYXZpIj4KKyAgICA8dmFsdWU+2YXYrdix2LEg2KfZhNmE2LrYqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDkiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPtmE2LrYqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTAiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPtmF2LnYsdmBINin2YTYsdmC2LnYqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTEiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPtil2LPZhSDYp9mE2LHZgti52Kk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUyIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7ZgtmK2YXYqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTMiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPtit2YLZhCDYp9mE2YLZitmFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1NCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+2KXYs9mFINin2YTYsdmC2LnYqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTUiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPtmC2YrZhdipINin2YTYsdmC2LnYqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTYiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPtmF2LnYsdmBINin2YTYsdmC2LnYqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTciIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPtmE2YLYryDYrdiw2YHYqiDYp9mE2LHZgti52Kkg2YTZitizINin2YTYrdmC2YQhINmE2Kcg2YrZhdmD2YbZgyDYrdiw2YEg2KfZhNit2YLZhC4g2YrZhdmD2YYg2KPZhiDZitmD2YjZhiDZhNmHINix2YLYuSDZgdmKINmE2LrYp9iqINij2K7YsdmJLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTgiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPtix2YLYudipINi62YrYsSDYtdin2YTYrSDYqWlkLiDZhNinINmK2YXZg9mGINil2YrYrNin2K8gVGhlIEZpZWxkTGFuZ3VhZ2VzdmFsdWVzX0lkINmB2Yog2YLYp9i52K/YqSDYp9mE2KjZitin2YbYp9iqLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTkiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPtmE2Kcg2YrZhdmD2YbZgyDYrdiw2YEg2YfYsNinINin2YTYrdmC2YQuINmK2YXZg9mG2YMg2YHZgti3INit2LDZgSDYsdmC2LnYp9iqINmE2Kcg2K3ZhNmC2KfYqi4g2YTZitizINmH2YbYp9mDINij2Yog2LHZgti52KfYqiDZhdit2YXZhNipINmB2Yog2YfYsNmHINin2YTYo9ir2YbYp9ih2Iwg2LPZiNin2KEg2YTZhSDYqtiu2KrYsSDYo9mKINit2YLZhCDYo9mIINmE2YrYsyDZh9mG2KfZgyDYo9mKINix2YLYudipINmF2LnYsdmB2Kkg2YTZh9iw2Ycg2KfZhNmE2LrYqSDZhNmH2LDYpyDYp9mE2K3ZgtmELjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjAiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPtiq2LXYr9mK2LE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYxIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7Zitis2Kgg2KPZhiDYqtiu2LHYrCDZhNix2KTZitipINin2YTYqti62YrZitix2KfYqi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYyIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7Ypdi22KfZgdipINmE2LrYqSDYrNiv2YrYr9ipPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+ZGVsZXRlIGxhbmd1YWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+2K3YsNmBINmE2LrYqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjUiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPtil2LPZhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjYiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPtil2LbYp9mB2Kkg2YTYutipPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+2YbYs9iuINil2K3YqtmK2KfYt9mKPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2OCIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+2KfZhNmC2YHYsiDYpdmE2Ykg2KfZhNij2YjZhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjkiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPtin2YTZgtmB2LIg2KXZhNmJINin2YTYs9in2KjZgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzAiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPtin2YTZgtmB2LIg2KXZhNmJINin2YTYqtin2YTZijwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzEiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPtin2YTZgtmB2LIg2KXZhNmJINin2YTYo9iu2YrYsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzIiIG5hbWU9InZpZGVvYm94Ij4KKyAgICA8dmFsdWU+2KfZhNmF2LPYqtiu2K/ZhSDZitiq2YPZhNmFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MyIgbmFtZT0idmlkZW9ib3giPgorICAgIDx2YWx1ZT7Yqti02LrZitmEL9il2YrZgtin2YEg2KfZhNi12YjYqjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPtmG2LjYp9mFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3NSIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+2KXYudiv2KfYr9in2KrZgzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzYiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPtmF2LHYrdio2KfZi9iMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3NyIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+2KXYttin2YHYqSDZhdmE2YEg2KfZhNiq2LnYsdmK2YE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc4IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT7Ysdiz2KfYptmEINis2K/Zitiv2Kk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3OSIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+2KXZitiv2KfYuSDYtdmI2LEg2KzYr9mK2K/YqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODAiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+2KjZitin2YbYp9iqINin2YTZhdiz2KrYrtiv2YUgLSDYqti12K/ZitixPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4MSIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT7Zitis2Kgg2KPZhiDYqtmD2YjZhiDYp9mE2YXZhti42YXYp9iqINmF2YjYrNmI2K/YqSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgyIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPtio2K/YoSDYp9mE2KrYtdiv2YrYsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODMiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+2LnZhiDYt9ix2YrZgiDYp9mE2YXZhti42YXYqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODQiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+2KjYr9ihINin2YTYqti12K/ZitixPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NSIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT7YqNmK2KfZhtin2Kog2KfZhNmF2LPYqtiu2K/ZhSAtINil2LPYqtmK2LHYp9ivPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NiIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT7Ypdiu2KrYsSB1c2Vycy54bWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg3IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7Ypdiz2KrZitix2KfYrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODgiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkV4cG9ydCB0byBYTUwgLSBUaGVzZSBmaWxlcyBjYW4gYmUgdXNlZCB0bzogLSBDb250cmlidXRlIHRvIHRoZSBwcm9qZWN0IC0gSW1wb3J0IGludG8gYW5vdGhlciBTeXN0ZW0gLSBCYWNrdXAgLSBDdXN0b21pemF0aW9uIC0gUHV0IGl0IGludG8gdGhlIGxhbmd1YWdlLWRpcmVjdG9yeSBmb3IgeW91ciBuZXh0IGluc3RhbGxhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODkiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkNob29zZSBhIGxhbmd1YWdlIGZpbGUgdG8gaW1wb3J0LiBDaG9vc2UgdGhlIHJpZ2h0IExhbmdhdWdlIGZyb20gdGhlIENvbWJvYm94ISBObyBtYXR0ZXIgd2hhdCB0aGUgbmFtZSBvZiB0aGUgZmlsZSBpcywgaXQgd2lsbCBiZSBpbXBvcnRlZCBpbnRvIHRoaXMgbGFuZ3VhZ2UhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5MCIgbmFtZT0iaW1wb3J0d2luZG93Ij4KKyAgICA8dmFsdWU+2KXYs9iq2YrYsdin2K8gLSDYpdiu2KrYsSDZhdmE2YE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkxIiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+2K3Zgdi4INio2KXYs9mFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5MiIgbmFtZT0icmVjb3JkaW5nc2F2ZXdpbiI+CisgICAgPHZhbHVlPtil2LPZhTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkzIiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+2KrYudmE2YrZgjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk0IiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+2K3Zgdi4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+2KrYs9is2YrZhNin2Ko8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk2IiBuYW1lPSJyZWNvcmRlciI+CisgICAgPHZhbHVlPtmF2LTYp9mH2K/ZitmGINin2YTYqtiz2KzZitmE2KfYqjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTciIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPtiq2LPYrNmK2YTYp9iqINin2YTYutix2YEg2KfZhNi52KfZhdipINmIINin2YTYrtin2LXYqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTgiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPtmF2LPYqtiu2K/ZhdmK2YY6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5OSIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+2KXZhti22YU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMCIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMSIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+2KfZhNmF2LPYqtiu2K/ZhdmK2YYg2YHZiiDZh9iw2Ycg2KfZhNi62LHZgdipOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDIiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPtiq2K3Yr9mK2Ks8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAzIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT7Zh9iw2Ycg2KfZhNi62LHZgdipINmF2YXYqtmE2KbYqS4g2K3Yp9mI2YQg2KjYudivINio2LbYuSDYr9mC2KfYptmCINmF2LHYqSDYo9iu2LHZiS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA0IiBuYW1lPSJyb29tc0xpc3QiPgorICAgIDx2YWx1ZT7Ypdi22LrYtyDYudmE2Ykg2KfZhNi62LHZgdipINmE2YTYrdi12YjZhCDYudmE2Ykg2KrZgdin2LXZitmEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNSIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+2K/Ysdiv2LTYqSDZhdi5INin2YTZhdiz2KrYrtiv2YXZitmGINmB2Yog2YfYsNmHINin2YTYutix2YHYqTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA2IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT7Yutix2YHYqTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA3IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT7Zhdiz2KrYrtiv2YXZitmGINmB2Yog2YfYsNmHINin2YTYutix2YHYqTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA4IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT7ZhdmG2LA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwOSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+2LTYutmEINin2YTYqtiz2KzZitmEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMCIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+2KfZhNi32YjZhDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDExIiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT7Yp9mE2KrYp9ix2YrYrjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDEyIiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT7Yo9iz2YTZiNioINin2YTZhdiz2KzZhCEg2YTYpyDZitmF2YPZhtmDINiq2LrZitmK2LEg2KfZhNmC2YrZhdiMINmH2LDYpyDZhdmE2YEg2YXYs9is2YQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMyIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+2LTYutmEINmH2LDYpyDYp9mE2YXYs9is2YQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE0IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT7Yqti02LrZitmEL9il2YrZgtin2YE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE1IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT7YqNiv2KEg2KfZhNiq2LPYrNmK2YQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE2IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT7YpdmK2YLYp9mBINin2YTYqtiz2KzZitmEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxNyIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+2KrYs9is2YrZhDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE4IiBuYW1lPSJyZWNvcmRfZXJyb3JfbXNnIj4KKyAgICA8dmFsdWU+2YfZhtin2YMg2LTYrti1INii2K7YsSDZitmC2YjZhSDYqNin2YTYqtiz2KzZitmEINmB2Yog2YfYsNmHINin2YTYo9ir2YbYp9ihOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTkiIG5hbWU9InJlY29yZF9tZXNzYWdlIj4KKyAgICA8dmFsdWU+2KrYs9is2YrZhCEg2LnZhiDYt9ix2YrZgiDYp9mE2YXYs9iq2K7Yr9mFOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjAiIG5hbWU9InJlY29yZF9jYW5jZWwiPgorICAgIDx2YWx1ZT7YpdmE2LrYp9ihPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyMSIgbmFtZT0icmVjb3JkX2NhbmNhbF90b29sdGlwIj4KKyAgICA8dmFsdWU+2LPZitiq2YUg2KXZhNi62KfYoSDYp9mE2KrYs9is2YrZhCDYr9mI2YYg2K3Zgdi42YcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyMiIgbmFtZT0iY2FuY2VsX2RpYWxvZ19yZXN1bWUiPgorICAgIDx2YWx1ZT7Ypdiz2KrYptmG2KfZgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjMiIG5hbWU9ImNhbmNlbF9kaWFsb2dfcmVzdW1lX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT7Yp9mC2YHZhCDYp9mE2YbYp9mB2LDYqSDZiCDYpdiz2KrYo9mG2YEg2KfZhNiq2LPYrNmK2YQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI0IiBuYW1lPSJwYWludHRvb2xzX2VsbGlwc2VfY29sb3IiPgorICAgIDx2YWx1ZT7Yqti62YrZitixINmE2YjZhiDYp9mE2K7YtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjUiIG5hbWU9ImNvbG9ycGlja2VyX2hlYWQiPgorICAgIDx2YWx1ZT7Ypdiu2KrYsSDYp9mE2YTZiNmGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyNiIgbmFtZT0icGFpbnR0b29sc19saW5lX2Rpc2FibGUiPgorICAgIDx2YWx1ZT7YqtmF2YPZitmGL9iq2LnYt9mK2YQg2YTZiNmGINin2YTYrti3PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyNyIgbmFtZT0icGFpbnR0b29sc19maWxsX2Rpc2FibGUiPgorICAgIDx2YWx1ZT7Yqti62YrZitixINmF2YTYoSDYp9mE2YTZiNmGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyOCIgbmFtZT0icGFpbnR0b29sc19saW5lX2Rpc2FibGUiPgorICAgIDx2YWx1ZT7Yqti52LfZitmEIC8g2KrYtNi62YrZhCDZhdmE2KEg2KfZhNmE2YjZhjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjkiIG5hbWU9ImNoYW5nZV93aWR0aF9hcnJvd19kb3duX3NsaWRlciI+CisgICAgPHZhbHVlPtiq2LrZitmK2LEg2LnYsdi2INin2YTYrti3PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzMCIgbmFtZT0iY2xvc2Vfc21hbGxfcG9wdXBzIj4KKyAgICA8dmFsdWU+2LrZhNmCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzMSIgbmFtZT0icGFpbnRfdG9vbF9sZXR0ZXIiPgorICAgIDx2YWx1ZT7Yqti62YrZitixINit2KzZhSDYp9mE2K3YsdmI2YE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMyIiBuYW1lPSJyZWNvcmRpbmdzbGlzdF9kZWxldGUiPgorICAgIDx2YWx1ZT7Yrdiw2YEg2KfZhNiq2LPYrNmK2YQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMzIiBuYW1lPSJyZWNvcmRpbmdzbGlzdF9yZWNvcmRlZEJ5R3Vlc3QiPgorICAgIDx2YWx1ZT7YttmK2YE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM0IiBuYW1lPSJyZWNvcmRpbmdzbGlzdF9yZWNvcmRlZGJ5Ij4KKyAgICA8dmFsdWU+2LnZhtivOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzUiIG5hbWU9InJlY29yZGluZ3NfdGFibGVfaGVhZF9uYW1lIj4KKyAgICA8dmFsdWU+2KXYs9mFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNiIgbmFtZT0icmVjb3JkaW5nc190YWJsZV9oZWFkX3Jvb20iPgorICAgIDx2YWx1ZT7Yutix2YHYqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzciIG5hbWU9InJlY29yZGluZ3NfdGFibGVfaGVhZF9kYXRlIj4KKyAgICA8dmFsdWU+2KrYp9ix2YrYrjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzgiIG5hbWU9InJlY29yZF9zdGFydF9jYW5jZWwiPgorICAgIDx2YWx1ZT7YpdmE2LrYp9ihPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzOSIgbmFtZT0icmVjb3JkX3N0YXJ0X3N0YXJ0Ij4KKyAgICA8dmFsdWU+2KjYr9ihPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MCIgbmFtZT0iZmlsZXNicm93c2VyX3RhYmxlX2hlYWRfbmFtZSI+CisgICAgPHZhbHVlPtil2LPZhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDEiIG5hbWU9ImZpbGVzYnJvd3Nlcl90YWJsZV9oZWFkX2RhdGUiPgorICAgIDx2YWx1ZT7Yqtin2LHZitiuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MiIgbmFtZT0iY2hhdF9jbGVhcl9oaXN0b3J5Ij4KKyAgICA8dmFsdWU+2K3YsNmBIHNlcnZlci1jaGF0bG9nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MyIgbmFtZT0iY2hhdF9vdmVyYWxsX2hlYWRlciI+CisgICAgPHZhbHVlPtiv2LHYr9i02Kk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ0IiBuYW1lPSJjaGF0X3NlbmRfYnRuIj4KKyAgICA8dmFsdWU+2KXYsdiz2KfZhCDYsdiz2KfZhNipPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NSIgbmFtZT0iY2hhdF9lbW90X2J0biI+CisgICAgPHZhbHVlPtix2YXZiNiyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NiIgbmFtZT0iY2hhdF9lbW90X3dpbiI+CisgICAgPHZhbHVlPtix2YXZiNiyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NyIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzIj4KKyAgICA8dmFsdWU+2KXYrtiq2LEg2KfZhNij2KzZh9iy2Kkg2KfZhNmF2YbYtNmI2LHYqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDgiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPti12YjYqiDZiCDYtdmI2LHYqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDkiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPti12YjYqiDZgdmC2Lc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUwIiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT7YtdmI2LHYqSDZgdmC2Lc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUxIiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT7ZhNinINi12YjYsdipL9i12YjYqiAo2LXZiNix2Kkg2KvYp9io2KrYqSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUyIiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfaW5mb190ZXh0Ij4KKyAgICA8dmFsdWU+2YTYpyDYtdmI2Kov2LXZiNix2Kkg2LPYqtmG2LTYsSDZhdmGINis2YfYp9iy2YPYjCDYqNiv2YTYp9mLINmF2YYg2YfYsNinINiz2KrYuNmH2LEg2LXZiNix2Kkg2YXZhiDZhdmE2YHZgy4g2KXYrtiq2LEg2YfYsNmHINin2YTYpdi52K/Yp9iv2KfYqiDYpdiw2Kcg2YPYp9mGINmE2K/ZitmDINmF2LTYp9mD2YQg2YXYuSDYudix2LYg2KfZhNmG2LfYp9mCINin2YTYqtix2K/Yr9mKINij2Ygg2KXYsNinINmD2KfZhiDYpdiq2LXYp9mE2YMg2KjYp9mE2KXZhtiq2LHZhtiqINio2LfZitim2KfZiy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUzIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX21vbmRheSI+CisgICAgPHZhbHVlPtin2YTYpdir2YbZitmGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV90dWVzZGF5Ij4KKyAgICA8dmFsdWU+2KfZhNir2YTYp9ir2KfYoTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTUiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfd2VkbmVzZGF5Ij4KKyAgICA8dmFsdWU+2KfZhNij2LHYqNi52KfYoTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTYiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfdGh1cnNkYXkiPgorICAgIDx2YWx1ZT7Yp9mE2K7ZhdmK2LM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU3IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX2ZyaWRheSI+CisgICAgPHZhbHVlPtin2YTYrNmF2LnYqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTgiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfc2F0dXJkYXkiPgorICAgIDx2YWx1ZT7Yp9mE2LPYqNiqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1OSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9zdW5kYXkiPgorICAgIDx2YWx1ZT7Yp9mE2KPYrdivPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9tb25kYXkiPgorICAgIDx2YWx1ZT7Yp9mE2KXYq9mG2YrZhjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjEiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfVHVlc2RheUxhYmVsIj4KKyAgICA8dmFsdWU+2KfZhNir2YTYq9in2KE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYyIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1dlZG5lc2RheUxhYmVsIj4KKyAgICA8dmFsdWU+2KfZhNij2LHYqNi52KfYoTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjMiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfVGh1cnNkYXlMYWJlbCI+CisgICAgPHZhbHVlPtin2YTYrtmF2YrYszwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjQiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfRnJpZGF5TGFiZWwiPgorICAgIDx2YWx1ZT7Yp9mE2KzZhdi52Kk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY1IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1NhdHVyZGF5TGFiZWwiPgorICAgIDx2YWx1ZT7Yp9mE2LPYqNiqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NiIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9TdW5kYXlMYWJlbCI+CisgICAgPHZhbHVlPtin2YTYo9it2K88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY3IiBuYW1lPSJjYWxlbmRhcl93ZWVrbnVtYmVyX2hlYWRlciI+CisgICAgPHZhbHVlPtin2YTYqtmC2YjZitmFINin2YTYo9iz2KjZiNi52Yo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY4IiBuYW1lPSJjYWxlbmRhcl93ZWVrbnVtYmVyX2hlYWRlclRvb2x0aXAiPgorICAgIDx2YWx1ZT7Yp9mE2KrZgtmI2YrZhSDYp9mE2KPYs9io2YjYudmKPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2OSIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPtmD2KfZhtmI2YYg2KfZhNir2KfZhtmKKNmK2YbYp9mK2LEpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3MCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPti02KjYp9i3KNmB2KjYsdin2YrYsSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDcxIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+2KLYsNin2LEo2YXYp9ix2LMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3MiIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPtmG2YrYs9in2YYo2KPYqNix2YrZhCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDczIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+2KPZitin2LEo2YXYp9mK2YgpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3NCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPtit2LLZitix2KfZhijZitmI2YbZitmIKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzUiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT7YqtmF2YjYsijZitmI2YTZitmIKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzYiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT7YotioKNij2LrYs9i32LMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3NyIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPtij2YrZhNmI2YQo2LPYqNiq2YXYqNixKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzgiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT7Yqti02LHZitmGINij2YjZhCjYo9mD2KrZiNio2LEpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3OSIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPtiq2LTYsdmK2YYg2KvYp9mG2Yoo2YbZiNmB2YXYqNixKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODAiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT7Zg9in2YbZiNmGINij2YjZhCjYr9mK2LPZhdio2LEpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4MSIgbmFtZT0iY2FsZW5kYXJ3aW5faGVhZGVyIj4KKyAgICA8dmFsdWU+2KrZgtmI2YrZhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODIiIG5hbWU9InJvb21hZG1pbl9sYWJlbE51bWJlck9mUGFydGljaXBhbnRzIj4KKyAgICA8dmFsdWU+2KfZhNmF2LTYp9ix2YPZiNmGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4MyIgbmFtZT0icm9vbVZhbHVlX2FkdmFuY2VkU2V0dGluZ3MiPgorICAgIDx2YWx1ZT7Yudix2LYg2KXYudiv2KfYr9in2Kog2KfZhNiq2LXZhdmK2YU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg0IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3ZpZGVvWCI+CisgICAgPHZhbHVlPlggfCBZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NSIgbmFtZT0icm9vbUFkbWluX2xheW91dF92aWRlb1kiPgorICAgIDx2YWx1ZT7Yudix2LYgfCDYt9mI2YQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg2IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0Ij4KKyAgICA8dmFsdWU+2LXZhtiv2YjZgiDYp9mE2YHZitiv2YrZiDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODciIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfbW9kIj4KKyAgICA8dmFsdWU+2LXZhtiv2YjZgiDYp9mE2KXYr9in2LHYqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODgiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfbW9kX3BvcyI+CisgICAgPHZhbHVlPlg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg5IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmQiPgorICAgIDx2YWx1ZT7YtdmG2K/ZiNmCINin2YTZhNmI2K08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkwIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmRfc2hvdyI+CisgICAgPHZhbHVlPtmF2YXZg9mGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5MSIgbmFtZT0icm9vbUFkbWluX2xheW91dF93aGl0ZWJvYXJkX3BvcyI+CisgICAgPHZhbHVlPlggfCBZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5MiIgbmFtZT0icm9vbUFkbWluX2xheW91dF93aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+2LnYsdi2IHwg2LfZiNmEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5MyIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlcyI+CisgICAgPHZhbHVlPti12YbYr9mI2YIgLSDZhdmE2YHYp9iq2IzYr9ix2K/YtNip2IzZhdi02KfYsdmD2YrZhjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTQiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXNfc2hvdyI+CisgICAgPHZhbHVlPtmF2YXZg9mGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NSIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlc19wb3MiPgorICAgIDx2YWx1ZT5YIHxZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NiIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlcyI+CisgICAgPHZhbHVlPti52LHYtiB8INi32YjZhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTciIG5hbWU9Im1vZGVyYXRvcl9nb25lX21lc3NhZ2UiPgorICAgIDx2YWx1ZT7ZhNmC2K8g2KrYsdmDINix2KbZitizINin2YTYrNmE2LPYqSDYp9mE2LrYsdmB2KkuINmE2YrYsyDZh9mG2KfZgyDYo9mKINix2KbZitizINmE2YTYrNmE2LPYqSDZgdmKINmH2LDZhyDYp9mE2KPYq9mG2KfYoS4g2YrZhdmD2YbZgyDYp9mE2KrZgtiv2YUg2YTYsdim2KfYs9ipINin2YTYrNmE2LPYqSDYo9mIINin2YTYpdmG2KrYuNin2LEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5OCIgbmFtZT0ibW9kZXJhdG9yX21lc3NhZ2VfZXZlbnRfbm9fbW9kIj4KKyAgICA8dmFsdWU+2YTZitizINmH2YbYp9mDINij2Yog2LHYptmK2LMg2YTZhNis2YTYs9ipINmB2Yog2YfYsNmHINin2YTYutix2YHYqdiMINmIINmE2YPZhiDZh9mG2KfZgyDYqNi52K8g2KfZhNmF2LTYp9ix2YPZitmGLiDYudmE2YrZgyDYp9mE2KrZgtiv2YUg2YTYsdim2KfYs9ipINin2YTYrNmE2LPYqSDYo9mIINin2YTYpdmG2KrYuNin2LEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5OSIgbmFtZT0iZmVlZGJhY2tfdGVtcGxhdGVfc3ViamVjdCI+CisgICAgPHZhbHVlPtmF2YTYp9it2LjYp9iqICRBUFBfTkFNRTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDAiIG5hbWU9Imludml0YXRpb25fdGVtcGxhdGVfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSAtINiv2LnZiNin2Ko8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAxIiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfZnJvbSI+CisgICAgPHZhbHVlPtix2LPYp9mE2Kkg2YXZhiDYp9mE2YXYs9iq2K7Yr9mFOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDIiIG5hbWU9Imludml0YXRpb25fdGV4dF9tZXNzYWdlIj4KKyAgICA8dmFsdWU+2LHYs9in2YTYqTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAzIiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfY2xpY2tfdGV4dCI+CisgICAgPHZhbHVlPtij2YbZgtixINi52YTZiSDZh9iw2Kcg2KfZhNix2KfYqNi3INmE2YTZhdi02KfYsdmD2Kkg2YHZiiDYp9mE2KXYrNiq2YXYp9i52KfYqjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA0IiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfY2xpY2tfdGV4dF9saW5rIj4KKyAgICA8dmFsdWU+2KPZhtmC2LEg2YfZhtinINmE2K/YrtmI2YQg2KfZhNi62LHZgdipOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDUiIG5hbWU9Imludml0YXRpb25fdGV4dF9jbGlja190ZXh0X2hlbHAiPgorICAgIDx2YWx1ZT7Ypdiw2Kcg2YjYp9is2YfYqtmDINmF2LTYp9mD2YQg2YXYuSDYp9mE2LHYp9io2LfYjCDYp9mE2LHYrNin2KEg2YbYs9iu2Ycg2Ygg2YXZhiDYq9mFINmE2LXZgtmHINmB2Yog2KfZhNmF2KrYtdmB2K06PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwNiIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X2hlYWQiPgorICAgIDx2YWx1ZT7Yqtiz2KzZitmEICRBUFBfTkFNRTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDciIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9oZWFkMiI+CisgICAgPHZhbHVlPtio2YrYp9mG2KfYqtmDOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDgiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF91c2VybmFtZSI+CisgICAgPHZhbHVlPtiq2LPYrNmK2YQg2KfZhNiv2K7ZiNmEOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDkiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9wYXNzIj4KKyAgICA8dmFsdWU+2YPZhNmF2Kkg2KfZhNmF2LHZiNixOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTAiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9tYWlsIj4KKyAgICA8dmFsdWU+2KfZhNio2LHZitivINin2YTYpdmE2YPYqtix2YjZhtmKOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTEiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9ieWUiPgorICAgIDx2YWx1ZT7Zgdix2YrZgiAtIE9wZW5NZWV0aW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxMiIgbmFtZT0icmVnaXN0ZXJfbWFpbF9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+2KXZhti02KfYoSDYrdiz2KfYqCBPcGVuTWVldGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTMiIG5hbWU9InJlc2V0X3Bhc3N3b3JkX3RlbXBsYXRlX2hlYWQiPgorICAgIDx2YWx1ZT7Ypdi52KfYr9ipINi22KjYtyDZg9mE2YXYqSDZhdix2YjYsSAtIE9wZW5NZWV0aW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNCIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfdGVzdF9saW5rIj4KKyAgICA8dmFsdWU+2KfZhtmC2LEg2LnZhNmJINmH2LDYpyDYp9mE2LHYp9io2Lcg2YXZhiDYo9is2YQg2KXYr9iu2KfZhCDZg9mE2YXYqSDZhdix2YjYsSDYrNiv2YrYr9ipOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTUiIG5hbWU9InJlc2V0X3Bhc3N3b3JkX3RlbXBsYXRlX3RleHQyX2xpbmsiPgorICAgIDx2YWx1ZT7Yp9mG2YLYsSDYudmE2Ykg2YfZhtinINmF2YYg2KPYrNmEINil2K/Yrtin2YQg2YPZhNmF2Kkg2YXYsdmI2LEg2KzYr9mK2K/YqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTYiIG5hbWU9InJlc2V0X3Bhc3N3b3JkX3RlbXBsYXRlX3RleHQzX2xpbmsiPgorICAgIDx2YWx1ZT7Ypdiw2Kcg2YjYp9is2YfYqtmDINmF2LTYp9mD2YQg2YXYuSDZh9iw2Kcg2KfZhNix2KfYqNi32Iwg2KfZhNix2KzYp9ihINmG2LPYrtmHINmIINmE2LXZgtmHINmB2Yog2KfZhNmF2KrYtdmB2K06PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNyIgbmFtZT0icmVzZXRfcGFzc3dvcmRfbWFpbF9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+2KXYudin2K/YqSDYttio2Lcg2YPZhNmF2Kkg2YXYsdmI2LEgT3Blbk1lZXRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE4IiBuYW1lPSJkYXRlUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT7Yp9mE2LHYrNin2KEg2KXYr9iu2KfZhCDYqtin2LHZitiuINi12KfZhNitIDI0LjEyLjIwMDEgKNmK2YjZhdiMINi02YfYsdiMINiz2YbYqSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE5IiBuYW1lPSJlbWFpbFJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+2KfZhNix2KzYp9ihINil2K/Yrtin2YQg2KjYsdmK2K8g2KXZhNmD2KrYsdmI2YbZiiDYtdin2YTYrdiMINmF2KvZhNin2YsgbmFtZUBtYWlsLmNvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjAiIG5hbWU9ImZsb2F0UmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT7Yp9mE2LHYrNin2KEg2KXYr9iu2KfZhCDYudiv2K8g2YXZhiDYo9i52K/Yp9ivINin2YTZgdin2LXZhNipINin2YTYudin2KbZhdip2Iwg2YXYq9mE2KfZiyAxLjAwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyMSIgbmFtZT0ibnVtYmVyUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT7Yp9mE2LHYrNin2KEg2KXYr9iu2KfZhCDYudiv2K8g2LXYrdmK2K3YjCDZhdir2YTYp9mLIDEwMDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjIiIG5hbWU9InBob25lUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT7Yp9mE2LHYrNin2KEg2KXYr9iu2KfZhCDYsdmC2YUg2YfYp9iq2YEg2LXYrdmK2K3YjCDZhdir2YTYp9mLICsrNDkgMDEyMyAxMjMxMjM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIzIiBuYW1lPSJ0aW1lUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT7Yp9mE2LHYrNin2KEg2KXYr9iu2KfZhCDZiNmC2Kog2LXYp9mE2K3YjCDZhdir2YTYp9mLIDEyOjIzIChoaDptbSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI0IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvdyI+CisgICAgPHZhbHVlPtmF2K3ZhdmKINi52YYg2LfYsdmK2YIg2YPZhNmF2Kkg2YXYsdmI2LE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI1IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd19wYXNzd29yZExhYmVsIj4KKyAgICA8dmFsdWU+2YPZhNmF2Kkg2KfZhNmF2LHZiNixPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNiIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWRMYWJlbCI+CisgICAgPHZhbHVlPtmF2K/YqSDYp9mE2LXZhNin2K3ZitipPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNyIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWQiPgorICAgIDx2YWx1ZT7Yo9io2K/ZijwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjgiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkIj4KKyAgICA8dmFsdWU+2YXYr9ipPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyOSIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWQiPgorICAgIDx2YWx1ZT7ZiNmC2Kog2YjYp9it2K88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMwIiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZEZyb21MYWJlbCI+CisgICAgPHZhbHVlPti12KfZhNitINmF2YY6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMSIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWRUb0xhYmVsIj4KKyAgICA8dmFsdWU+2LXYp9mE2K0g2YTYutin2YrYqTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMyIiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd19NYWlsU3ViamVjdCI+CisgICAgPHZhbHVlPtiv2LnZiNipINil2YTZiSBUbyAkQVBQX05BTUU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMzIiBuYW1lPSJpbnZpdGF0aW9uX2Vycm9yIj4KKyAgICA8dmFsdWU+2YTZitizINmH2YbYp9mDINiv2LnZiNipINmF2KrZiNmB2LHYqSDZhNix2YXYsiDYp9mE2K/YudmI2Kkg2YfYsNinPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzNCIgbmFtZT0iaW52aXRhdGlvbl9lcnJvciI+CisgICAgPHZhbHVlPtmH2LDZhyDYp9mE2K/YudmI2Kkg2KfYs9iq2K7Yr9mF2Kog2YXZhiDZgtio2YQuINmE2Kcg2YrZhdmD2YYg2KXYudin2K/YqSDYpdiz2KrYrtiv2KfZhSDZh9iw2Kcg2KfZhNmG2YjYuSDZhdmGINin2YTYr9i52YjYp9iqLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzUiIG5hbWU9Imludml0YXRpb25fZXJyb3IiPgorICAgIDx2YWx1ZT7YsdmF2LIg2KfZhNiv2LnZiNipINmH2LDYpyDZhNmK2LMg2LXYp9mE2K0uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzNiIgbmFtZT0iaW52aXRhdGlvbl9wYXNzIj4KKyAgICA8dmFsdWU+2YPZhNmF2Kkg2KfZhNmF2LHZiNixOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzciIG5hbWU9Imludml0YXRpb25fcGFzc19idG4iPgorICAgIDx2YWx1ZT7YpdmB2K3YtSDZg9mE2YXYqSDYp9mE2YXYsdmI2LE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM4IiBuYW1lPSJpbnZpdGF0aW9uX3Bhc3NfZXJyb3IiPgorICAgIDx2YWx1ZT7Zg9mE2YXYqSDZhdix2YjYsSDYutmK2LEg2LXYrdmK2K3YqSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM5IiBuYW1lPSJCcm93c2VyIj4KKyAgICA8dmFsdWU+2YXYqti12YHYrTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDAiIG5hbWU9ImF1ZGlvX3ZpZGVvIj4KKyAgICA8dmFsdWU+2YXYstin2YXZhtipINin2YTYtdmI2Kov2KfZhNi12YjYsdipPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0MSIgbmFtZT0iZXJyb3JDb2RlX2ludmFsaWRTZXNzaW9uIj4KKyAgICA8dmFsdWU+2KrYs9is2YrZhCDYp9mE2K/YrtmI2YQg2LXYrdmK2K0g2YTZg9mGINin2YTYrNmE2LPYqSDYp9mE2KrZiiDYpdiu2KrYsdiq2YfYpyDZhdi52LfZhNipINij2Ygg2YXYrtiy2YbYqSDZgdmKINin2YTYrtin2K/ZiNmFLiDYqtit2KrYp9isINij2YYg2KrYrdi12YQg2LnZhNmJIElELdis2YTYs9ipINis2K/ZitivINmIINiq2LPYrNmEINin2YTYr9iu2YjZhCDZhdmGINis2K/ZitivLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDIiIG5hbWU9ImVycm9yY29kZV9zZXRVc2VyT2JqZWN0Ij4KKyAgICA8dmFsdWU+SUQt2KzZhNiz2Kkg2YTZhSDYqtiz2KzZhCDYp9mE2K/YrtmI2YQg2KPZiCDZhNmK2LMg2YTYr9mK2YfYpyDYrdmC2YjZgiDYp9mE2YXYs9ik2YjZhC4gVGhlIFNPQVAgR2F0ZXdheSDZitit2KrYp9isINil2YTZiSDZhdiz2KrYrtiv2YUg2YTYr9mK2Ycg2K3ZgtmI2YIg2YXYs9ik2YjZhCDZhNmK2KrYttmF2YYg2YXYs9iq2K7Yr9mF2YrZhiDYrNiv2K8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0MyIgbmFtZT0iZXJyb3Jjb2RlX2xvZ2luQnlSZW1vdGVVc2VyIj4KKyAgICA8dmFsdWU+2YTZitizINmE2K/ZiSDZh9iw2Ycg2KfZhNis2YTYs9ipINil2KrYtdin2YQg2KgtUmVtb3RldXNlci1EYXRhLiDYs9mI2KfYoSDZhNmFINiq2LXZhCDYqC0gU09BUC1HYXRld2F5INmC2KjZhCDYp9mE2KjYr9ihINio2KfZhNil2LPYqti52YXYp9mEINij2Ygg2KPZhtmDINiq2LPYqtiu2K/ZhSDYrNmE2LPYqS1JRCDYrtin2LfYptipLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDQiIG5hbWU9ImRlYnVnX21lc3NhZ2VfcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+2YrZg9mI2YYg2KfZhNiq2LPYrNmK2YQg2K3Yp9mE2YrYp9mLIEJldGEhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0NSIgbmFtZT0icHJvcGVydHlQYW5lbFhWYWx1ZSI+CisgICAgPHZhbHVlPng8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ2IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWFZhbHVlTGFiZWwiPgorICAgIDx2YWx1ZT54LWF4aXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ3IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWVZhbHVlIj4KKyAgICA8dmFsdWU+eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDgiIG5hbWU9InByb3BlcnR5UGFuZWxZVmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPnktYXhpczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDkiIG5hbWU9InByb3BlcnR5UGFuZWxXaWR0aFZhbHVlIj4KKyAgICA8dmFsdWU+2Lk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUwIiBuYW1lPSJwcm9wZXJ0eVBhbmVsV2lkdGhWYWx1ZUxhYmVsIj4KKyAgICA8dmFsdWU+2LnYsdi2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1MSIgbmFtZT0icHJvcGVydHlQYW5lbEhlaWdodFZhbHVlIj4KKyAgICA8dmFsdWU+2Lc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUyIiBuYW1lPSJwcm9wZXJ0eVBhbmVsSGVpZ2h0VmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPti32YjZhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTMiIG5hbWU9InByb3BlcnR5T3BhY2l0eVNsaWRlciI+CisgICAgPHZhbHVlPtiq2LrZitmK2LEg2KfZhNi02YHYp9mB2YrYqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTQiIG5hbWU9ImJyb3dzZXJPcGVuIj4KKyAgICA8dmFsdWU+2YHYqtitINin2YTZhdiq2LXZgditPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1NSIgbmFtZT0iYnJvd3NlckNsb3NlIj4KKyAgICA8dmFsdWU+2KXYutmE2KfZgiDYp9mE2YXYqti12YHYrTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTYiIG5hbWU9ImNvbm5lY3Rpb25Mb3N0TWVzc2FnZSI+CisgICAgPHZhbHVlPtmE2YLYryDYqtmFINmB2YLYr9in2YYg2KfZhNil2KrYtdin2YQg2KjYp9mE2K7Yp9iv2YjZhS4g2LnZhNmK2YMg2KrYrdiv2YrYqyDYp9mE2LfZhNioINij2Ygg2KrZgdit2LUg2KfZhNi02KjZg9ipLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTciIG5hbWU9IjU1NyI+CisgICAgPHZhbHVlPtin2YTZhdik2LTYsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTgiIG5hbWU9InN5bmMgbWVzc2FnZSBoZWFkZXIiPgorICAgIDx2YWx1ZT7Yp9mE2YXYstin2YXZhtipPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1OSIgbmFtZT0iU3luY2hyb25pemluZyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+2YXYstin2YXZhtipINin2YTZhdiz2KrYrtiv2YXZitmG2Iwg2KfZhNix2KzYp9ihINin2YTYpdmG2KrYuNin2LE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYwIiBuYW1lPSJleHBvcnRUb1NWRyI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O0Rvd25sb2FkIGFzIFNWRyZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYxIiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7RG93bmxvYWQgYXMgUE5HJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjIiIG5hbWU9ImV4cG9ydFRvSW1hZ2UiPgorICAgIDx2YWx1ZT4mbHQ7dSZndDtEb3dubG9hZCBhcyBKUEcmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MyIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O0Rvd25sb2FkIGFzIFBERiZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY0IiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7RG93bmxvYWQgYXMgVElGJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjUiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT7Zhdiw2YPYsdipOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjYiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT7Zgdim2Kk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2NyIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPtin2YTYqtmD2LHYp9ixOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjgiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT7ZhNinINij2K3YrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjkiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT7ZhdmI2YLYuTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTcwIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+2KjYr9in2YrYqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzEiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT7ZhtmH2KfZitipPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MiIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPti52YbZiNin2YY6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MyIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPtiq2LnZhNmK2YI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NCIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPtiv2LnZiNipINmG2KfYszwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzUiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT7ZitmI2YXZijwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzYiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT7YtNmH2LHZijwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzciIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT7Ys9mG2YjZijwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzgiIG5hbWU9ImFsZXJ0Ij4KKyAgICA8dmFsdWU+2YbZh9in2YrYqSDYp9mE2YXZiNi52K8g2KjYudivINio2K/Yp9mK2Kkg2KfZhNmF2YjYudivITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzkiIG5hbWU9ImFsZXJ0Ij4KKyAgICA8dmFsdWU+2KfZhNix2KzYp9ihINil2K/Yrtin2YQg2LnZhtmI2KfZhiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgwIiBuYW1lPSI1ODAiPgorICAgIDx2YWx1ZT5SVEw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgxIiBuYW1lPSI1ODEiPgorICAgIDx2YWx1ZT7ZgtmFINio2KrYtNi62YrZhCDZh9iw2Kcg2KXZhiDZg9mG2Kog2KrYs9iq2K7Yr9mFINmE2LrYqSDYqtmD2KrYqCDZhdmGINin2YTZitmF2YYg2KXZhNmJINin2YTZitiz2KfYsSAo2KrYsdiq2YrYqCDZg9mE2YXYp9iqINmF2LnZg9mI2LMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MiIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT7ZhNmI2K3YqSDYo9is2YfYstipINin2YTZgtmK2KfYszwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODMiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+2YXYtNin2YfYr9ipINin2YTYpdis2KrZhdin2LnYp9iqINij2Ygg2KfZhNin2K3Yr9in2Ksg2KfZhNmF2LPYrNmE2Kk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg0IiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPtil2KzYqtmF2KfYuSAtINmC2YUg2KjYqti02YPZitmEINmF2KTYqtmF2LEg2YXYuSA0ICjYrdiq2YkgMTYpINmF2LPYqtiu2K/ZhdmK2YYmbHQ7YnIvJmd0O9mK2K3YtdmEINin2YTYrNmF2YrYuSDYudmE2Ykg2LXZiNiqINmIINi12YjYsdipPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4NSIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT7Yrdiv2KsgLSDZgtmFINio2KrYtNmD2YrZhCDZhdik2KrZhdixINmF2Lkg2KXZhNmJIDIwMCDZhdi02KfYsdmDJmx0O2JyLyZndDvYsdim2YrYsyDYp9mE2YXYpNiq2YXYsSDZgdmC2Lcg2YrZg9mI2YYg2YTYr9mK2Ycg2LXZiNiqINmIINi12YjYsdipPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4NiIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT7ZgtmFINio2K7ZhNmCINmF2LPYqtiu2K/ZhdmK2YbYjCDYutix2YHYjCDZhdmG2LjZhdin2KombHQ7YnIvJmd0OyArINiq2LrZitmK2LEg2KfZhNiq2LHYqtmK2KjYp9iqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4NyIgbmFtZT0icm9vbSBBZG1pbmlzdHJhdGlvbiByb29tY2xpZW50cyBsaXN0Ij4KKyAgICA8dmFsdWU+2KfZhNmF2LPYqtiu2K/ZhdmK2YYg2YHZiiDZh9iw2Ycg2KfZhNi62LHZgdipINmB2Yog2KfZhNmI2YLYqiDYp9mE2K3Yp9mE2Yo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg4IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODkiIG5hbWU9InJvb20gQWRtaW5pc3RyYXRpb24gcm9vbWNsaWVudHMgbGlzdCI+CisgICAgPHZhbHVlPtiq2LPYrNmK2YQg2KfZhNiv2K7ZiNmEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5MCIgbmFtZT0icm9vbSBBZG1pbmlzdHJhdGlvbiByb29tY2xpZW50cyBsaXN0Ij4KKyAgICA8dmFsdWU+RDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTEiIG5hbWU9InN3ZiBzeW5jIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7Yqtit2YXZhCDZiNir2KfYptmCLiDYp9mE2KrYrNin2KEg2KfZhNil2YbYqti42KfYsSDYrdiq2Ykg2YrYqtmFINmF2LLYp9mF2YbYqSDZg9mEINin2YTYudmF2YTYp9ihLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTIiIG5hbWU9InVwbG9hZCBkaWFsb2ciPgorICAgIDx2YWx1ZT7YqtmFINin2YTYpdmK2K/Yp9i52Iwg2KrYrdmI2YrZhCDYp9mE2YjYq9mK2YLYqSAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkzIiBuYW1lPSJ1cGxvYWQgZGlhbG9nIj4KKyAgICA8dmFsdWU+2KjYr9ihINin2YTYpdmK2K/Yp9i5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NCIgbmFtZT0idXBsb2FkIGRpYWxvZyI+CisgICAgPHZhbHVlPtil2YrYr9in2Lkg2Ygg2KXYs9iq2YrYsdin2K8g2KfZhNit2YjYp9ixLiDYp9mE2LHYrNin2KEg2KXYrtiq2YrYp9ixINmF2YTZgSDZhdmGINin2YTYpdiz2LfZiNin2YbYqS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk1IiBuYW1lPSJ1cGxvYWQgRGlhbG9nIj4KKyAgICA8dmFsdWU+2KXZhNi62KfYoTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTYiIG5hbWU9InVwbG9hZCBEaWFsb2ciPgorICAgIDx2YWx1ZT7Ypdiu2KrZitin2LEg2KfZhNmF2YTZgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTciIG5hbWU9ImFkbWluaXN0cmF0aW9uIG5hdmlnYXRpb24iPgorICAgIDx2YWx1ZT7Ypdiq2LXYp9mE2KfYqjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTgiIG5hbWU9ImNvbmZhZG1pbiB2YWx1ZSBsaXN0Ij4KKyAgICA8dmFsdWU+2YLZitmF2Kk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk5IiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+U3RyZWFtaWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAwIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+2KrYs9is2YrZhCDYp9mE2K/YrtmI2YQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAxIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+2YXYqti12YQg2YXZhtiwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwMiIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPti62LHZgdipIC8g2KXYt9in2LE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAzIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+2LHZhdmKINin2YTZhdiz2KrYrtiv2YU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA0IiBuYW1lPSJraWNrIHVzZXIgY29uZmlybWF0aW9uIGRpYWxvZyI+CisgICAgPHZhbHVlPtix2YXZiiDYp9mE2YXYs9iq2K7Yr9mFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwNSIgbmFtZT0ia2ljayB1c2VyIGNvbmZpcm1hdGlvbiBkaWFsb2ciPgorICAgIDx2YWx1ZT7Zh9mEINiq2LHZitivINmB2LnZhNin2Ysg2KPZhiDYqtix2YXZiiDYp9mE2LnZhdmK2YQg2K7Yp9ix2Kwg2KfZhNil2KrYtdin2YTYnyZsdDtici8mZ3Q7INmH2LDYpyDYs9mI2YEg2YrZgtmI2YUg2YHZgti3INio2KXYrtix2KfYrCDYp9mE2LLYqNmI2YYg2YXZhiDYp9mE2LrYsdmB2Kkg2KfZhNit2KfZhNmK2KkuINmK2YXZg9mGINmE2YTYstio2YjZhiDYo9mGINmK2K/YrtmEINmF2LHYqSDYo9iu2LHZiS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA2IiBuYW1lPSJraWNrIHVzZXIgbWVzc2FnZSBkaWFsb2ciPgorICAgIDx2YWx1ZT7ZhNmC2K8g2KrZhSDYpdi62YTYp9mCINis2YTYs9iq2YMg2LnZhiDYt9ix2YrZgiDYp9mE2YXYs9ik2YjZhCDYo9mIINix2KbZitizINin2YTYrNmE2LPYqS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA3IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Bob25lIj4KKyAgICA8dmFsdWU+2YfYp9iq2YE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA4IiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT7Yp9mE2YXYs9iq2K7Yr9mFINmH2Ygg2KfZhNix2KbZitizINmB2Yog2YfYsNmHINin2YTYutix2YHYqS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA5IiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT7Zitiz2YXYrSDZhNmE2YXYs9iq2K7Yr9mFINin2YTYsdiz2YUg2LnZhNmJINin2YTZhNmI2K0uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMCIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+KNil2LnYp9iv2KkpINio2K/YoSDYtdmI2KogLyDYtdmI2LHYqSDYo9mIINiq2LrZitmK2LEg2KXYudiv2KfYr9in2Kog2KfZhNis2YfYp9iyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMSIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+2KfZhNiz2YXYp9itINmE2YfYsNinINin2YTZhdiz2KrYrtiv2YUg2KjYp9mE2LHYs9mFINi52YTZiSDYp9mE2YTZiNitPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMiIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+2KXZhNi62KfYoSDZgtiv2LHYqSDYp9mE2LHYs9mFINi52YTZiSDYp9mE2YTZiNitPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMyIgbmFtZT0iY29uZmVyZW5jZVBhbmVscyI+CisgICAgPHZhbHVlPtin2YTZhdiz2KrYrtiv2YXZitmGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxNCIgbmFtZT0iY29uZmVyZW5jZVBhbmVscyI+CisgICAgPHZhbHVlPtin2YTZhdmE2YHYp9iqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxNSIgbmFtZT0iY29uZmVyZW5jZVBhbmVscyI+CisgICAgPHZhbHVlPtin2YTZhNmI2K08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE2IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+2K/Ysdiv2LTYqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTciIG5hbWU9Im9yZ2FuaXphdGlvbiBjaG9vc2UgaW5mbyI+CisgICAgPHZhbHVlPtit2LPYp9io2YMg2YrYudmI2K8g2KXZhNmJINi52K/YqSDZhdmG2LjZhdin2KouINin2YTYsdis2KfYoSDYpdiu2KrZitin2LEg2YjYp9it2K/YqSDZhNmH2LDZhyDYp9mE2KzZhNiz2KkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxOCIgbmFtZT0iZXJyb3IgbWVzc2FnZSByb29tIGZ1bGwiPgorICAgIDx2YWx1ZT7Zh9iw2Ycg2KfZhNi62LHZgdipINmF2YTZitim2Kkg2YHZiiDZh9iw2Ycg2KfZhNij2KvZhtin2KEuINin2YTYsdis2KfYoSDYp9mE2YXYrdin2YjZhNipINmE2KfYrdmC2KfZiy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE5IiBuYW1lPSJyb29tdHlwZXMiPgorICAgIDx2YWx1ZT7ZhtmI2Lkg2KfZhNi62LHZgdipLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjAiIG5hbWU9ImFwcG9pbnRlZF9yb29tIj4KKyAgICA8dmFsdWU+2LrYsdmB2Kkg2KfZhNmF2YjYp9i52YrYrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjEiIG5hbWU9InNlcnZlcnRpbWUiPgorICAgIDx2YWx1ZT7ZiNmC2Kog2KfZhNiu2KfYr9mI2YUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyMiIgbmFtZT0iaW52X3JlbWluZGVyX3RlbXBsYXRlX2hlYWQiPgorICAgIDx2YWx1ZT7Zhdiw2YPYsdipIC0gT3Blbk1lZXRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIzIiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9mcm9tIj4KKyAgICA8dmFsdWU+2LHYs9in2YTYqSDZhdmGINin2YTZhdiz2KrYrtiv2YU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNCIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfbWVzc2FnZSI+CisgICAgPHZhbHVlPtix2LPYp9mE2Kk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNSIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfY2xpY2tfdGV4dCI+CisgICAgPHZhbHVlPtij2YbZgtixINi52YTZiSDZh9iw2Kcg2KfZhNix2KfYqNi3INmE2YTZhdi02KfYsdmD2Kkg2YHZiiDYp9mE2KXYrNiq2YXYp9i5OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjYiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2NsaWNrX3RleHRfbGluayI+CisgICAgPHZhbHVlPtij2YbZgtixINmH2YbYpyDZhNiv2K7ZiNmEINin2YTYutix2YHYqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjciIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2NsaWNrX3RleHRfaGVscCI+CisgICAgPHZhbHVlPtil2LDYpyDZg9in2YYg2YTYr9mK2YMg2YXYtNin2YPZhCDZhdi5INin2YTYsdin2KjYt9iMINin2YTYsdis2KfYoSDZhtiz2K7ZhyDZiCDZhNi12YLZhyDZgdmKINin2YTZhdiq2LXZgditOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjgiIG5hbWU9ImJ0bl9zZWFyY2hfaW50ZXJuIj4KKyAgICA8dmFsdWU+2KfZhNio2K3YqyDZgdmKINin2YTYr9in2K7ZhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjkiIG5hbWU9ImJ0bl9zZWFyY2hfZXh0ZXJuIj4KKyAgICA8dmFsdWU+2YXYs9iq2K7Yr9mFINiu2KfYsdis2Yo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMwIiBuYW1lPSJsYmxfcHJlbmFtZSI+CisgICAgPHZhbHVlPtil2LPZhSDYp9mE2YPZhtmK2Kk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMxIiBuYW1lPSJsYmxfbmFtZSI+CisgICAgPHZhbHVlPtil2LPZhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzIiIG5hbWU9ImxibF9lbWFpbCI+CisgICAgPHZhbHVlPtio2LHZitivINil2YTZg9iq2LHZiNmG2Yo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMzIiBuYW1lPSJsb2dvdXRDb25maXJtX3RpdGxlIj4KKyAgICA8dmFsdWU+2KPZg9ivINin2YTYrtix2YjYrDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzQiIG5hbWU9ImxvZ291dENvbmZpcm1fc3VyZV90b19sb2dvdXRfcXVlc3Rpb24iPgorICAgIDx2YWx1ZT7Zh9mEINij2YbYqiDZhdiq2KPZg9ivINij2YbZgyDYqtix2YrYryDYqtiz2KzZitmEINin2YTYrtix2YjYrNifPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNSIgbmFtZT0ibWFpbiBtZW51Ij4KKyAgICA8dmFsdWU+2KfZhNmG2LTYp9i32KfYqjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzYiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT7Yutix2YHYqSDYqtis2LHZitio2YrYqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT7ZiNmC2Kog2KrYrNix2YrYqNmKPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzOCIgbmFtZT0ibWVldGluZyBUaW1lciI+CisgICAgPHZhbHVlPti52K/Yp9ivINin2YTYpdis2KrZhdin2Lk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM5IiBuYW1lPSJtZWV0aW5nIFRpbWVyIj4KKyAgICA8dmFsdWU+2YfYsNmHINin2YTYutix2YHYqSDZh9mKINi62LHZgdipINiq2KzYsdio2KkuINmE2KrYudi32YrZhCDZh9iw2Ycg2KfZhNiq2K3YsNmK2LEg2LnZhNmK2YMg2KfZhNit2LXZiNmEINi52YTZiSDYutix2YHYqSDYrtin2LXYqSDZhNmE2KXYs9iq2K7Yr9in2YUg2KfZhNiu2KfYtSDYo9mIINil2YbYtNin2KEg2K7Yp9iv2YUg2K7Yp9i1LiDYs9mI2YEg2YrYqtmFINil2K7Ysdin2KzZgyDZgdmI2LHYp9mLINmB2Yo6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MCIgbmFtZT0ibWVldGluZyByb29tIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+2YXYr9in2LE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQxIiBuYW1lPSJtb2RlcmF0ZWQgcm9vbSB3YWl0aW5nIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7Yp9mE2LHYrNin2KEg2KXZhtiq2LjYp9ixINiv2K7ZiNmEINin2YTZhdiv2YrYsSDYp9mE2LrYsdmB2KkuINmK2YXZg9mGINij2YYg2YrZg9mI2YYg2KfZhNmF2K/ZitixINmF2LnZhNmF2Iwg2YXYs9ik2YjZhCDYo9mIINmF2YbYtNimINmH2LDZhyDYp9mE2LrYsdmB2KkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MiIgbmFtZT0iZXJyb3IgcG9wdXAiPgorICAgIDx2YWx1ZT5PazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDMiIG5hbWU9IndpbmRvdyBzY3JlZW5zaGFyaW5nIj4KKyAgICA8dmFsdWU+2YjYtdmI2YQg2YXYtNin2LHZg9ipINin2YTYtNin2LTYqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDQiIG5hbWU9IndpbmRvdyBzY3JlZW4gc2hhcmluZyI+CisgICAgPHZhbHVlPtmH2YbYp9mDINmF2LTYp9ix2YMg2LTYp9i02Kkg2YLYp9iv2YXYqSDZhdmGINin2YTZhdiz2KrYrtiv2YU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0NSIgbmFtZT0id2luZG93IHNjcmVlbiBzaGFyaW5nIj4KKyAgICA8dmFsdWU+2KjYr9ihINin2YTZhdi02KfYsdmD2Kk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ2IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPtil2LbYp9mB2Kkg2YTZgtin2KEg2KzYr9mK2K88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ3IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPti62LHZgdipINin2YTYpdis2KrZhdin2Lk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ4IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPti62LHZgdipINin2YTYrdiv2Ks8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ5IiBuYW1lPSJtYWluIG1lbnUgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPtil2K/Yp9ix2Kk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUwIiBuYW1lPSJtZW51IG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT7Yp9mE2YXYs9iq2K7Yr9mF2YrZhiDYp9mE2YXYr9ix2KfYoTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTEiIG5hbWU9Im1lbnUgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPtin2YTYutix2YEg2KfZhNmF2K/Yp9ix2Kk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUyIiBuYW1lPSJtb2RlcmF0b3Igb3JnIj4KKyAgICA8dmFsdWU+TTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTMiIG5hbWU9ImNvbmZpcm0gbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPtmH2YQg2KrYsdmK2K8g2KrYutmK2YrYsSDZh9iw2Kcg2KfZhNmF2LPYqtiu2K/ZhSDZiCDYrNi52YTZhyDZhdiv2YrYsSDZh9iw2Ycg2KfZhNmF2YbYuNmF2KnYnzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTQiIG5hbWU9ImVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7Yp9mE2LHYrNin2KEg2KXYrtiq2YrYp9ixINin2YTZhdmG2LjZhdipINmC2KjZhCDZhdit2KfZiNmEINil2LbYp9mB2Kkg2YXYs9iq2K7Yr9mFINil2YTZitmH2KchPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1NSIgbmFtZT0iY2hvb3NlIHVzZXIgd2luZG93Ij4KKyAgICA8dmFsdWU+2YXZhti42YXYqSAtINmF2K/ZitixPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1NiIgbmFtZT0ibW9kZXJhdG9yIG9yZyB1c2VycyI+CisgICAgPHZhbHVlPtmH2YQg2KrYsdmK2K8g2KjYp9mE2YHYudmEINit2LDZgSDZh9iw2Kcg2KfZhNmF2LPYqtiu2K/ZhSDZhdmGINin2YTZhdmG2LjZhdip2J88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU3IiBuYW1lPSJvcmcgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPtmH2LDYpyDYp9mE2YXYs9iq2K7Yr9mFINmH2Ygg2YXYr9mK2LE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU4IiBuYW1lPSJvcmcgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPtmH2LDYpyDYp9mE2YXYs9iq2K7Yr9mFINmE2YrYsyDZhdiv2YrYsdin2Ys8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU5IiBuYW1lPSJlcnJvciBtZXNzYWdlIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT7Zh9mEINiq2LHZitivINij2YYg2YTYpyDZitmD2YjZhiDZh9iw2Kcg2KfZhNmF2LPYqtiu2K/ZhSDZhdiv2YrYsSDZh9iw2Ycg2KfZhNmF2YbYuNmF2KnYnzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjAiIG5hbWU9Im1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT7Ypdi22KfZgdipINij2Ygg2K3YsNmBINmF2LPYqtiu2K/ZhdmK2YYg2KPZiCDYutix2YEg2LbZhdmGINmF2YbYuNmF2KrZgzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjEiIG5hbWU9ImRlbGV0ZSBjb25maXJtIHF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+2YfZhCDYqtix2YrYryDYrdmC2KfZiyDYrdiw2YEg2YfYsNinINin2YTYqtiz2KzZitmE2J88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYyIiBuYW1lPSJkZWxldGUgY29uZmlybSBxdWVzdGlvbiB1c2VyIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT7Zh9mEINiq2LHZitivINit2YLYp9mLINit2LDZgSDZh9iw2Kcg2KfZhNmF2LPYqtiu2K/ZhSDZhdmGINmF2YbYuNmF2KrZg9ifINiz2YjZgSDZitiq2YUg2YHZgti3INit2LDZgSDYp9mE2KXYqti12KfZhCDYqNmK2YYg2KfZhNmF2LPYqtiu2K/ZhSDZiCDZhdmG2LjZhdiq2YPYjCDZhdmGINij2KzZhCDYrdiw2YEg2KfZhNmF2LPYqtiu2K/ZhSDZitis2Kgg2KPZhiDYqtiv2K7ZhCDZhNmI2K3YqSDYp9mE2YXYs9ik2YjZhC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYzIiBuYW1lPSJlcnJvciBtZXNzYWdlIHNlbGYgZGVsZXRpbmciPgorICAgIDx2YWx1ZT7ZhNinINmK2YXZg9mG2YMg2K3YsNmBINmF2LPYqtiu2K/ZhdmDITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjQiIG5hbWU9ImVycm9yIG1lc3NhZ2UgYXV0aCI+CisgICAgPHZhbHVlPtmE2KrZhtmB2YrYsCDZh9iw2Ycg2KfZhNi32LHZitmC2Kkg2KrYrdiq2KfYrCDZhNit2LPYp9ioINmF2LPYpNmI2YQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NSIgbmFtZT0iZXJyb3IgbWVzc2FnZSBTT0FQIj4KKyAgICA8dmFsdWU+2YTZitizINmH2YbYp9mDINij2Yog2KzZhNiz2Kkg2KrYsdiq2KjYtyDYqC0gSUQg2YfYsNinLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjYiIG5hbWU9ImVycm9yIG1lc3NhZ2UgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPtmH2LDYpyDYrdiz2KfYqCDZhdiz2KTZiNmEINij2Ygg2YXYr9mK2LEuINmK2YXZg9mGINiq2K3YsdmK2LEg2YfYsNinINin2YTYrdiz2KfYqCDYudmGINi32LHZitmCINmE2YjYrdipINin2YTZhdiz2KTZiNmELjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjciIG5hbWU9ImVtYWlsIHZlcmlmaWNhdGlvbiI+CisgICAgPHZhbHVlPtmE2KXZg9mF2KfZhCDYp9mE2KrYs9is2YrZhCDYp9mE2LHYrNin2KEg2KfZhNmG2YLYsSDYudmE2Ykg2KfZhNix2KfYqNi3INin2YTYqtin2YTZii4g2KPZiCDZhtiz2K4gVVJMINil2YTZiSDYp9mE2YXYqti12YHYrS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY4IiBuYW1lPSJlbWFpbCB2ZXJpZmljYXRpb24iPgorICAgIDx2YWx1ZT7Yo9mG2YLYsSDZhdmGINij2KzZhCDYp9mE2KrYrdmC2YIg2YXZhiDYqNix2YrYr9mDINin2YTYpdmE2YPYqtix2YjZhtmKPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2OSIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPtmE2YrYsyDZh9mG2KfZgyDYo9mKINmF2LPYqtiu2K/ZhSDZhNmH2LDYpyDYp9mE2K7ZhNmK2LcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3MCIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPtmH2LDYpyDYp9mE2YXYs9iq2K7Yr9mFINmF2LnYt9mEITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzEiIG5hbWU9ImVycm9yTWVzc2FnZV9Vc2VyQWN0aXZhdGlvblNlcnZsZXQgW0FjdGl2YXRlVXNlcl0iPgorICAgIDx2YWx1ZT7ZhNmC2K8g2KrZhSDYqtmB2LnZitmEINit2LPYp9io2YMg2KjZhtis2KfYrSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjcyIiBuYW1lPSJlcnJvck1lc3NhZ2VfVXNlckFjdGl2YXRpb25TZXJ2bGV0IFtBY3RpdmF0ZVVzZXJdIj4KKyAgICA8dmFsdWU+2KrYs9is2YrZhCDYp9mE2K/YrtmI2YQg2KfZhNii2YY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjczIiBuYW1lPSJsb2dpbkVycm9yTWVzc2FnZSA9IHVzZXIgd2FzIG5vdCBhY3RpdmF0ZWQiPgorICAgIDx2YWx1ZT7Yrdiz2KfYqNmDINmE2YrYsyDYtNi62KfZhC4g2KXYs9iq2K7Yr9mFINij2YjZhNin2Ysg2KfZhNix2KfYqNi3INmB2Yog2KfZhNio2LHZitivINin2YTYpdmE2YPYqtix2YjZhtmKINin2YTYsNmKINit2LXZhNiqINi52YTZitmHINiu2YTYp9mEINin2YTYqtiz2KzZitmELjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzQiIG5hbWU9InJlZ2lzdGVyIHZlcmlmaWNhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+2YTZgtivINiq2YUg2YHYqtitINit2LPYp9io2YMg2KjZhtis2KfYrS4g2YTZgtivINiq2YUg2KXYsdiz2KfZhCDYqNix2YrYryDYpdmE2YPYqtix2YjZhtmKINmF2Lkg2LHZhdiyINiq2K3ZgtmCINil2YTZiSDYqNix2YrYr9mDLiDYp9mE2LHYrNin2KEg2KfZhNiq2K3ZgtmCINmF2YYg2KjYsdmK2K/ZgyDYp9mE2KXZhNmD2KrYsdmI2YbZii48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc1IiBuYW1lPSJwYXJ0aWNpcGFudHMgcGFuZWwiPgorICAgIDx2YWx1ZT7Ypdiy2KfZhNipINiv2YjYsSDYp9mE2KXYr9in2LHYqSDZhdmGINmH2LDYpyDYp9mE2YXYs9iq2K7Yr9mFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3NiIgbmFtZT0icGFydGljaXBhbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+2YXZhtitINmH2LDYpyDYp9mE2YXYs9iq2K7Yr9mFINit2YIg2KfZhNil2K/Yp9ix2Kk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc3IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7Zhdiz2KrYrtiv2YU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc4IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7Zhdiv2K7ZhCDYpdmE2Ykg2KfZhNmE2YjYrTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzkiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPtmF2K/ZitixPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+2KXYr9in2LHYqTog2KfZhNix2KzYp9ihINil2K7YqtmK2KfYsSDYo9mKINmF2LPYqtiu2K/ZhSDYudmE2Ykg2KfZhNmC2KfYptmF2Kkg2YTZhdmG2K3ZhyDZhdiv2K7ZhCDYpdmE2Ykg2KfZhNmE2YjYrdiMINin2YTYpdiv2KfYsdipINij2Ygg2KfZhNmB2YrYr9mK2YguPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+2YfYsNinINin2YTZhdiz2KrYrtiv2YUg2YfZiCDZhdiv2YrYsdiMINmE2YfYsNinINmE2K/ZitmHINiq2YTZgtin2KbZitin2Ysg2KfZhNit2YIg2YHZiiDYp9mE2LHYs9mFINi52YTZiSDYp9mE2YTZiNitLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODIiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCBlcnJvciI+CisgICAgPHZhbHVlPtmH2LDYpyDYo9mG2KohINmE2Kcg2YrZhdmD2YbZgyDYpdiy2KfZhNipINit2YLZiNmCINin2YTYpdiv2KfYsdipINmF2YYg2YbZgdiz2YMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MyIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+2KfZhNiz2YXYp9itINmE2YfYsNinINin2YTZhdiz2KrYrtiv2YUg2YbYtNixINi12YjYqiAvINi12YjYsdipPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4NCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+2K3YsNmBINi12YjYqiAvINi12YjYsdipINmF2YYg2YfYsNinINin2YTZhdiz2KrYrtiv2YU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg1IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7Yo9mI2K8g2KPZhiDYo9iv2YrYsSDZh9iw2Ycg2KfZhNi62LHZgdipPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4NiIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+2KPZiNivINij2YYg2KPYsdiz2YUg2LnZhNmJINin2YTZhNmI2K08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg3IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7Yo9mIINij2YYg2KPYtNin2LHZgyDYtdmI2KogLyDYtdmI2LHYqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODgiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPtij2YbYqiDZhdiv2YrYsSDZh9iw2Ycg2KfZhNi62LHZgdipPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4OSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+2YTYr9mK2YMg2K3ZgiDYp9mE2LHYs9mFINi52YTZiSDYp9mE2YTZiNitPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5MCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+2YTYr9mK2YMg2K3ZgiDZhdi02KfYsdmD2Kkg2LXZiNiqIC8g2LXZiNix2Kk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkxIiBuYW1lPSJlcnJvcnR5cGUiPgorICAgIDx2YWx1ZT7Ysdiz2KfZhNipINil2YTZiSDYp9mE2YXYr9mK2LE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkyIiBuYW1lPSJhcHBseSBmb3IgbW9kIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7Yp9mE2YXYs9iq2K7Yr9mFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5MyIgbmFtZT0iYXBwbHkgZm9yIG1vZCBtZXNzYWdlIj4KKyAgICA8dmFsdWU+2YrZiNivINij2YYg2YrYrdi12YQg2LnZhNmJINin2YTYpdiv2KfYsdipLiDYpdiz2KrYrtiv2YUg2KPZitmC2YjZhtin2Kog2KfZhNit2KfZhNin2Kog2KzYp9mG2Kgg2KfZhNmF2LPYqtiu2K/ZhSDZgdmKINmC2KfYptmF2Kkg2KfZhNmF2LPYqtiu2K/ZhdmK2YYg2YTYpdi22KfZgdipINij2Ygg2K3YsNmBINin2YTYpdiv2KfYsdipLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTQiIG5hbWU9ImFwcGx5IGZvciB3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+2YrZiNivINij2YYg2YrYsdiz2YUg2LnZhNmJINin2YTZhNmI2K0uINil2LPYqtiu2K/ZhSDYo9mK2YLZiNmG2KfYqiDYp9mE2K3Yp9mE2KfYqiDYrNin2YbYqCDYp9mE2YXYs9iq2K7Yr9mFINmB2Yog2YLYp9im2YXYqSDYp9mE2YXYs9iq2K7Yr9mF2YrZhiDZhNil2LbYp9mB2Kkg2KPZiCDYrdiw2YEg2K3ZgiDYp9mE2LHYs9mFINi52YTZiSDYp9mE2YTZiNitLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTUiIG5hbWU9IjY5NSI+CisgICAgPHZhbHVlPtmK2YjYryDYo9mGINmK2KrYtNin2LHZgyDYp9mE2LXZiNiqL9in2YTYtdmI2LHYqS4g2KXYs9iq2K7Yr9mFINij2YrZgtmI2YbYp9iqINin2YTYrdin2YTYp9iqINis2KfZhtioINin2YTZhdiz2KrYrtiv2YUg2YHZiiDZgtin2KbZhdipINin2YTZhdiz2KrYrtiv2YXZitmGINmE2KXYttin2YHYqSDYo9mIINit2LDZgSDYrdmCINin2YTZhdi02KfYsdmD2Kkg2LXZiNiqL9i12YjYsdipINmE2KPZiiDZhdiz2KrYrtiv2YUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5NiIgbmFtZT0ibW9kZXJhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+2LnZhNmK2YMg2KXZhtiq2LjYp9ixINin2YTZhdiv2YrYsSDYrdiq2Ykg2YrYr9iu2YQg2KfZhNi62LHZgdipLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTciIG5hbWU9ImNhbGVuZGFyIGJ1dHRvbiI+CisgICAgPHZhbHVlPtil2YTYutin2KE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk4IiBuYW1lPSJjYWxlbmRhciBidXR0b24iPgorICAgIDx2YWx1ZT7YrdmB2Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk5IiBuYW1lPSJjYWxlbmRhciBjb21wb25lbnQiPgorICAgIDx2YWx1ZT7ZitmI2YU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAwIiBuYW1lPSJjYWxlbmRhciBjb21wb25lbnQiPgorICAgIDx2YWx1ZT7YtNmH2LE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAxIiBuYW1lPSJjYWxlbmRhciBjb21wb25lbnQiPgorICAgIDx2YWx1ZT7Ys9mG2Kk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAyIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+2KXZitiv2KfYuSDZhdmE2YE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAzIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+2KXYttin2YHYqSDZhdis2YTYrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDQiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7Yqtit2K/ZitirPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwNSIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPtmC2YXYp9mF2Kk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA2IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+2YXZhNmB2KfYqtmKIChIb21lIERyaXZlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDciIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7Yutix2YHYqSDYp9mE2YXZhNmB2KfYqiAoUHVibGljIERyaXZlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDgiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7Ypdi22KfZgdipINmF2YTZgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDkiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7Ypdi22KfZgdipINmF2KzZhNivPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPtit2LDZgSDZhdis2YTYrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTEiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7Yqtit2LHZitixINil2LPZhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTIiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7Zhdis2YTYryDYrNiv2YrYrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTMiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7Zh9mEINij2YbYqiDZhdiq2KPZg9ivINij2YbZgyDYqtix2YrYryDYrdiw2YEg2YfYsNinINin2YTYqNmG2K/YnzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTQiIG5hbWU9InVzZXIgYWRtaW4iPgorICAgIDx2YWx1ZT7YqNit2Ks8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE1IiBuYW1lPSJ1c2VyIGFkbWluIj4KKyAgICA8dmFsdWU+2KjYrdirPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxNiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPtmB2KrYrSDZiNir2YrZgtipPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxNyIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPtil2LjZh9in2LEg2YPZhCDYp9mE2YXZhNmB2KfYqiAoVHJlZSBWaWV3KTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTgiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7Ypdi62YTYp9mCINmI2KvZitmC2Kk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE5IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+2K3YsNmBINmF2YTZgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjAiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7ZhNinINmK2LPZhditINmE2YMg2KjYp9mE2LHYs9mFINi52YTZiSDZh9iw2Kcg2KfZhNmE2YjYrS4g2KrYrdiq2KfYrCDYo9mGINiq2YPZiNmGINmF2K/Zitix2KfZiyDYo9mIINij2YYg2KrYrdi12YQg2LnZhNmJINin2YTYo9mC2YQg2LnZhNmJINit2YIg2KrYrdix2YrYsSDZhNmI2K0uINmK2KzYqCDYo9mGINiq2LPYo9mEINmF2K/Zitix2KfZiyDZhNmE2K3YtdmI2YQg2LnZhNmJINmH2LDYpyDYp9mE2K3Zgi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIxIiBuYW1lPSJwcm9wZXJ0eSBwYW5lbCI+CisgICAgPHZhbHVlPtiu2LXYp9im2LUg2KfZhNmI2KvZitmC2Kk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIyIiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT7YqNiv2KMg2KfZhNi52YXZitmEIChleHRlcm5hbCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIzIiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT7YqNiv2KMg2KfZhNi52YXZitmEIChIVFRQKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjQiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPtmF2LPYrtiv2YUg2YrZiNivINiq2YLYp9iz2YUg2LTYp9i02KrZhy4g2YfZhCDYqtix2YrYryDYsdik2YrYqtmH2KfYnzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjUiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPtij2YbYqiDYqtiq2LTYp9ix2YMg2LPYt9itINmF2YPYqtio2YMg2YHZiiDZh9iw2Ycg2KfZhNij2KvZhtin2KEuINmE2KXZitmC2KfZgSDYrNmE2LPYqSDYp9mE2YXYtNin2LHZg9ipINin2YTYsdis2KfYoSDYp9mE2YbZgtixINiy2LEg2KrZiNmC2YEg2YHZiiDYudmF2YrZhCDYp9mE2YXYtNin2LHZg9ipLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjYiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPtis2YTYs9ipINin2YTZhdi02KfYsdmD2Kk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI3IiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT7Yo9mG2Kog2KrYqti02KfYsdmDINiz2LfYrSDZhdmD2KrYqNmDITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+2YXYtNin2YfYryDYs9i32K0g2KfZhNmF2YPYqtioPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyOSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT7Yrtix2YjYrDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzAiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+2YXZgtin2LPZhSDYs9i32K0g2KfZhNmF2YPYqtioPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT7Yo9mG2YLYsSDYudmE2Ykg2KXYqNiv2KMg2YTZhti02LEg2LTYp9i02KrZgzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzIiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+2KjYr9ihINin2YTZhdi02KfYsdmD2Kk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMzIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPtil2YrZgtin2YEg2KfZhNmF2LTYp9ix2YPYqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzQiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+2KXYrtiq2LEg2YbYt9in2YIg2LTYp9i02KrZgzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM1IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPtiq2LrZitmK2LEg2KfZhNi52LHYtjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzYiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+2KXZhtiq2YfZiSDYp9mE2YXYtNin2LHZgyDZhdmGINmH2LDZhyDYp9mE2KzZhNiz2KkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT7Yqti62YrZitixINin2YTYt9mI2YQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM4IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlgtT2Zmc2V0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczOSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5ZLU9mZnNldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDAiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+2KfZhNi52LHYtjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQxIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPtin2YTYt9mI2YQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0MiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT7Zgti32Lkg2KfZhNil2KrYtdin2YQg2YXZhiDYp9mE2K7Yp9iv2YjZhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDMiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+2KXZhNi62KfYoTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDQiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+2KjYr9ihINin2YTYrtin2LHYrNmKPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NSIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT7Ypdiw2Kcg2KPZgtmB2YTYqiDZh9iw2Ycg2KfZhNis2YTYs9ipINmD2YTZitin2Ysg2YTZhiDZiti52K8g2KjYpdmF2YPYp9mG2YMg2KfZhNio2K/YoSDZhdmGINis2K/ZitivINio2KfZhNmF2LTYp9mH2K8g2YTZh9iw2Ycg2KfZhNis2YTYs9ipLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDYiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+2KrYo9mD2YrYryDYpdmC2YHYp9mEINis2LPZhNipINin2YTZhdi02KfZh9ivPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NyIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT7Zhdi02KfYsdmD2Kkg2KfZhNi02KfYtNipU2hhcmUgU2NyZWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0OCIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT7Yqtiz2KzZitmEINin2YTYrNmE2LPYqVJlY29yZCBTZXNzaW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0OSIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPkNvLUJyb3dzaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MCIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPk9vb3BzLCAuLi4gRmlyZWZveCBvbiBXaW5kb3dzIGRvZXMgbm90IHNob3cgY2xlYXIgQ28tQnJvd3NpbmcuIFBsZWFzZSB1c2UgYW5vdGhlciBCcm93c2VyIGZvciB1c2luZyB0aGUgQ28tQnJvd3NpbmcgZmVhdHVyZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUxIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+2KfZhNiz2KfYqNmCUHJldmlvdXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUyIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+2KfZhNiq2KfZhNmKPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MyIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPtiq2K3Yr9mK2Ks8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU0IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+SG9tZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTUiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT7YtNit2YY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU2IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+2KXYrNi52YQg2YfYsNmHINin2YTYtdmB2K3YqSDYtdmB2K3YqSDZhdmE2YHZgyDYp9mE2KXZgdiq2LHYp9i22YrYqS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU3IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+2YHYrdi1INin2YTYpdi52K/Yp9ivPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1OCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPtil2YHYrdi1INil2LnYr9in2K/Yp9iqINin2YTZhdmK2YPYsdmI2YHZiNmGINmIINin2YTZg9in2YXZitix2Kcg2YLYqNmEINiv2K7ZiNmE2YMg2KfZhNi62LHZgdipINi52YYg2LfYsdmK2YIg2KfZhNiq2LPYrNmK2YQg2YTYqNi22Lkg2KvZiNin2YYuINmK2YXZg9mG2YMg2KjYudiv2YfYpyDYsdik2YrYqSDYp9mE2KrYs9is2YrZhCDZhNmB2K3YtSDYp9mE2LXZiNiqINmIINin2YTYtdmI2LHYqS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU5IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+2YTYpyDYqti42YfYsSDZh9iw2Kcg2KfZhNil2K7Yqtio2KfYsSDYqNi52K8g2KfZhNii2YY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYwIiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+2KXZhNi62KfYoTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjEiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT7YqNiv2KEg2KfZhNmF2KTYqtmF2LE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYyIiBuYW1lPSJlZGl0IHZpZGVvIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+2YTYpyDYqtiz2KPZhCDZhdis2K/Yr9in2Ys8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYzIiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+UkVDPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlBMQVk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY1IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+2YrZhdmD2YbZgyDYp9mE2YXYqtin2KjYudipINiv2YjZhiDYp9mE2YHYrdi1INil2LDYpyDZhNinINiq2LHZitivINmG2LTYsSDYtdmI2LHYqtmDINmIINi12YjYqtmDLiDZitmF2YPZhiDZhNmE2YXYtNin2LHZg9mK2YYg2K/ZiNmGINi12YjYqiDZiCDYtdmI2LHYqSDZhdiq2KfYqNi52Kkg2KXYs9iq2K7Yr9in2YUg2KfZhNmE2YjYrdiMINmF2LTYp9ix2YPYqSDYs9i32K0g2KfZhNmF2YPYqtioINij2Ygg2YPYqtin2KjYqSDYsdiz2KfYptmEINiv2LHYr9i02KkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NiIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPtiq2YjZgtmBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NyIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPtmF2YLZitin2LMg2KfZhNmF2LPYqtmI2Yk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY4IiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+2KXYtti62Lcg2LnZhNmJINin2YTYqNiv2KfZitipPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2OSIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPtio2K/YoSDYp9mE2YXYpNiq2YXYsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzAiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT7YqNiv2KEg2KfZhNit2K/YqzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzEiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT7Ypdiu2KrYsSDYutix2YHYqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzIiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT7Zgdit2LUg2KfZhNil2LnYr9in2K/Yp9iqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MyIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPtio2K/YoSDYp9mE2YXYpNiq2YXYsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzQiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT7Yp9mE2LfYsdmK2YIg2KXZhNmJINin2YTZhdik2KrZhdixOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzUiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT7YqNiv2KEg2KfZhNiq2LPYrNmK2YQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc2IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+2YTYpyDYqti42YfYsSDZgdit2LUg2LXZiNiqIC8g2LXZiNix2KkgKNiq2LPYrNmK2YQpINmC2KjZhCDYr9iu2YjZhCDYp9mE2YXYpNiq2YXYsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzciIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT5QdWJsaWMgUm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc4IiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+UHVibGljIFJvb21zIGFyZSBhY2Nlc3NpYmxlIGZvciBhbGwgVXNlcnMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3OSIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPlByaXZhdGUgUm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgwIiBuYW1lPSJQcml2YXRlIFJvb21zIj4KKyAgICA8dmFsdWU+UHJpdmF0ZSBSb29tcyBhcmUgb25seSBhY2Nlc3NpYmxlIGZvciB1c2VycyBvZiB0aGUgc2FtZSBvcmdhbml6YXRpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MSIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPk15IFJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MiIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPlJvb21zIGluIHRoaXMgc2VjdGlvbiBhcmUgY3JlYXRlZCBmb3IgcGVyc29uYWwgdXNhZ2UuIFRoZXJlIGFyZSBzb21lIHN0YW5kYXJkIHJvb21zIHBsdXMgdGhlIG9uZXMgdGhhdCBhcmUgY3JlYXRlZCB0aHJvdWdoIHRoZSBjYWxlbmRhciBhbmQgaGF2ZSBhIHN0YXJ0IGFuZCBhbiBlbmQgZGF0ZS4gVGhlIHJvb21zIGNyZWF0ZWQgdmlhIHRoZSBjYWxlbmRhciBhcmUgb25seSBsaXN0ZWQgaW4gdGhpcyBzZWN0aW9uIGFzIGxvbmcgYXMgdGhleSBhcmUgdmFsaWQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MyIgbmFtZT0icmVzdHJpY3RlZCByb29tIj4KKyAgICA8dmFsdWU+WW91IGhhdmUgdG8gYmUgbW9kZXJhdG9yIHRvIGRvIHRoaXMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NCIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT5BcHBseSBmb3IgbW9kZXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODUiIG5hbWU9Im1lbnUgb3B0aW9uIj4KKyAgICA8dmFsdWU+QXBwbHkgZm9yIHdoaXRlYm9hcmQgYWNjZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NiIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT5BcHBseSBmb3IgY2FtZXJhL21pY3JvcGhvbmUgYWNjZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NyIgbmFtZT0iZXJyb3IgbWVzc2FnZSBzb2FwIHNlY3VyZSBsb2dpbiI+CisgICAgPHZhbHVlPlRoaXMgU2Vzc2lvbiBIYXNoIHdhcyBhbHJlYWR5IHVzZWQuIFlvdSBjYW5ub3QgdXNlIGl0IHR3aWNlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODgiIG5hbWU9ImRhc2hib2FyZCBidXR0b24iPgorICAgIDx2YWx1ZT5TVEFSVDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODkiIG5hbWU9ImV4aXQgY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPkVYSVQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkwIiBuYW1lPSJjb25mZXJlbmNlIHZpZXciPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZXhpdD8gWW91IG1pZ2h0IHNob3VsZCBjbGVhciB1cGxvYWRlZCBkb2N1bWVudHMsIHdoaXRlYm9hcmQgYW5kIHRoZSBjaGF0IGhpc3RvcnkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5MSIgbmFtZT0iY29uZmVyZW5jZSB2aWV3Ij4KKyAgICA8dmFsdWU+RXhpdCBjb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5MiIgbmFtZT0ibWFpbiBtZW51Ij4KKyAgICA8dmFsdWU+Um9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkzIiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT5DaG9vc2UgYSByb29tIGZvciBhIG1lZXRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk0IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGFuIHVuc2F2ZWQgRXZlbnQgaW4gdGhlIENhbGVuZGFyLiBQbGVhc2UgZWl0aGVyIHNhdmUgaXQgb3IgcmVtb3ZlIGl0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTUiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+UGxlYXNlIGFkZCBhdCBsZWFzdCBvbmUgYXR0ZW5kZWUgZm9yIHlvdXIgbWVldGluZyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk2IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBFdmVudD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk3IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPldhcm5pbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk4IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkFkZCBFdmVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTkiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RGF5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5XZWVrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Nb250aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDIiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RGVzY3JpcHRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAzIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkF0dGVuZGVlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSwgeW91ciBXZWIgQ29uZmVyZW5jaW5nIFBsYXRmb3JtLiBFaXRoZXIgZm9sbG93IHRoZSBJbnN0cnVjdGlvbnMsIHByZXNzIHRoZSBzdGFydCBidXR0b24gdG8gc3RhcnQgdG8gY29uZmVyZW5jZSBpbW1lZGlhdGVsbHkgb3IgeW91IGdvdG8gdGhlIENhbGVuZGFyIGFuZCBzZXQgdXAgYSBDb25mZXJlbmNlIGZvciB0aGUgZnV0dXJlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDUiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPlBsYW4gYSBNZWV0aW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNiIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlRvIHNldCB1cCBhIGNvbmZlcmVuY2UgeW91IGNhbiBhZGQgYSBuZXcgRXZlbnQgaW4gdGhlIENhbGVuZGFyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDciIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5OZWVkIGhlbHA/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwOCIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlJlc3RyaWN0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA5IiBuYW1lPSJsemNhbGVuZGVyIj4KKyAgICA8dmFsdWU+U2VhcmNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMCIgbmFtZT0ibHpjYWxlbmRlciI+CisgICAgPHZhbHVlPkFkZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTEiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBVc2VyIHNlbGVjdGVkLiBQbGVhc2Ugc2VsZWN0IGFuIGl0ZW0gZnJvbSB0aGUgbGlzdCBmaXJzdCBhbmQgdGhlbiBoaXQgYWRkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTIiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5BZGQgQXR0ZW5kZWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEzIiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+U2F2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTQiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5EZWxldGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE1IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RXZlbnQgRGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTYiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EZWZhdWx0IE1vZGVyYXRvcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+U3VwZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE4IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE5IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjAiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5FLU1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIxIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+QWRkIG5ldyBkZWZhdWx0IE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjIiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5JcyBTdXBlciBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIzIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+SWYgdGhlIFJvb20gaXMgbW9kZXJhdGVkLCBVc2VyIHdpdGggTGV2ZWwgTW9kZXJhdG9yIG9yIEFkbWluaXN0cmF0b3IgYXJlIGF1dG9tYXRpY2FsbHkgTW9kZXJhdG9yIGlmIHRoZXkgZW50ZXIgdGhlIFJvb20uIElmIHlvdSBkb24ndCB3YW50IHRvIHNwZWNpZnkgdGhhdCBhbmQgb25seSB3YW50IGEgY2VydGFpbiBVc2VyIHRvIGJlY29tZSBNb2RlcmF0b3IgdXNlIHRoZSBEZWZhdWx0IE1vZGVyYXRvciBvcHRpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkEgU3VwZXIgTW9kZXJhdG9yIGlzIGFsd2F5cyBhIE1vZGVyYXRvciB3aGVuIGhlIGVudGVycyBhIFJvb20sIGFuZCBub2JvZHkgY2FuIHJlbW92ZSB0aGUgTW9kZXJhdGlvbiBGbGFnIGZyb20gaGltPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkFwcGx5IFN1cGVyLU1vZGVyYXRpb24gdG8gVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjYiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5SZW1vdmUgU3VwZXIgTW9kZXJhdGlvbiBmcm9tIFVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjgiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5JZiB5b3UgYWRkIGFuIE9yZ2FuaXphdGlvbiB0byB0aGUgcm9vbSBvbmx5IHVzZXJzIG9mIHRoYXQgT3JnYW5pemF0aW9uIGhhdmUgYWNjZXNzIHRvIGl0IChUaGlzIGlzIG9ubHkgdmFsaWQgaWYgdGhlIGlzUHVibGljIGZsYWcgaXMgc2V0IHRvIGZhbHNlISk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI5IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+TW9kZXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzAiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5MaW1pdGF0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzEiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5Pcmdhbml6YXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODMyIiBuYW1lPSJjb25maXJtIGFjdGlvbiI+CisgICAgPHZhbHVlPkFyZSB5b3Ugc3VyZT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODMzIiBuYW1lPSJjb25maXJtIGRlbGV0ZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBJdGVtPyBZb3UgaGF2ZSB0byBwcmVzcyB0aGUgc2F2ZSBidXR0b24gdG8gc3RvcmUgdGhlIGNoYW5nZXMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNCIgbmFtZT0idXNlciBjaG9vc2UgZXJyb3IiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBVc2VyIHNlbGVjdGVkLiBQbGVhc2Ugc2VsZWN0IGZpcnN0IGJlZm9yZSB5b3UgYWRkIGl0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzUiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5BZGQgbmV3IERlZmF1bHQgTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkRvIHlvdSB3YW50IHRvIGFkZCB0aGUgU3VwZXIgTW9kZXJhdGlvbiBGbGFnIGZvciB0aGlzIFVzZXI/IEEgU3VwZXIgTW9kZXJhdG9yIGlzIG5vdCBvbmx5IE1vZGVyYXRvciBvZiBhIFJvb20sIGJ1dCBhbHNvIG5vIG90aGVyIE1vZGVyYXRvciBjYW4gcmVtb3ZlIHRoZSBNb2RlcmF0aW9uIEZsYWcgZm9yIHRoaXMgVXNlci4gWW91IG5lZWQgdG8gc2F2ZSB0aGUgUm9vbSBPYmplY3QgdG8gc2F2ZSB0aGVzZSBzZXR0aW5ncyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RG8geW91IHdhbnQgdG8gcmVtb3ZlIHRoZSBTdXBlciBNb2RlcmF0aW9uIEZsYWcgZm9yIHRoaXMgVXNlcj8gWW91IG5lZWQgdG8gc2F2ZSB0aGUgUm9vbSBPYmplY3QgdG8gc2F2ZSB0aGVzZSBzZXR0aW5ncyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM4IiBuYW1lPSJzdXBlciBtb2RlcmF0b3IiPgorICAgIDx2YWx1ZT5UaGlzIFVzZXIgaXMgYSBTdXBlci1Nb2RlcmF0b3IuIFlvdSBjYW5ub3QgcmVtb3ZlIHRoZSBNb2RlcmF0aW9uIGZsYWcgZnJvbSBhIFN1cGVyLU1vZGVyYXRvciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM5IiBuYW1lPSJjb25maXJtIGRlbGV0ZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGaWxlL0ZvbGRlcj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQwIiBuYW1lPSJjb25maXJtIGRlbGV0ZSI+CisgICAgPHZhbHVlPkRlbGV0ZSBGaWxlL0ZvbGRlcj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQxIiBuYW1lPSJzYWx1dGF0aW9uIj4KKyAgICA8dmFsdWU+TXJzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDIiIG5hbWU9InNhbHV0YXRpb24iPgorICAgIDx2YWx1ZT5Eci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQzIiBuYW1lPSJwcm9wZXJ0eSBwYW5lbCB3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+UHJvcGVydGllczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDQiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5TaG93IG1vdXNlIHBvc2l0aW9uIHRvIHZpZXdlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ1IiBuYW1lPSJwdWJsaXNoIG9wdGlvbiI+CisgICAgPHZhbHVlPlNoYXJlIEF1ZGlvIHdpdGggU0lQIEFwcGxldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDYiIG5hbWU9InB1Ymxpc2ggb3B0aW9uIj4KKyAgICA8dmFsdWU+U2hhcmUgQXVkaW8gd2l0aCBTSVAgYW5kIFZpZGVvIHdpdGggRmxhc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ3IiBuYW1lPSJkb2N1bWVudCBwYW5lbCI+CisgICAgPHZhbHVlPkZ1bGwtRml0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0OCIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+VmlldyBTY3JlZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ5IiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5UaGUgdXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTAiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPndhbnRzIHRvIHNoYXJlIGl0cyBzY3JlZW4uIERvIHlvdSB3YW50IHRvIHNlZSBpdD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUxIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5DbG9zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTIiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5ab29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MyIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPlRoZSBTZXNzaW9uIHdhcyBjbG9zZWQgYnkgdGhlIHNoYXJpbmcgVXNlciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU0IiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+UGF1c2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU1IiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+TmV3IFNjcmVlbiBTaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1NiIgbmFtZT0icHJlc2VudGVyIG1pbmkgaWNvbiI+CisgICAgPHZhbHVlPk1pbmltaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1NyIgbmFtZT0icHJlc2VudGVyIG1pbmkgaWNvbiI+CisgICAgPHZhbHVlPk1heGltaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1OCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+VmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU5IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5SZWNvcmRpbmcgVGltZWxpbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYwIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5NeSBSZWNvcmRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UHVibGljIFJlY29yZGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYyIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5JbmZvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjQiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkxlbmd0aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjUiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkRhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5CeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjciIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlBMQVk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY4IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5NYWluIC0gVmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY5IiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5SZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcwIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Zb3UgbWF5IHJlY29yZCBhbmQgc2hhcmUgeW91ciBzY3JlZW4gYXQgdGhlIHNhbWUgdGltZS4gVG8gZW5hYmxlIG90aGVycyB0byBzZWUgeW91ciBzY3JlZW4ganVzdCBoaXQgdGhlIHN0YXJ0IGJ1dHRvbiBvbiB0aGUgdG9wLiBUbyBvbmx5IHJlY29yZCB0aGUgU2Vzc2lvbiBpdCBpcyBzdWZmaWNpZW50IHRvIGNsaWNrIHN0YXJ0IHJlY29yZGluZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcxIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5TdGFydCBSZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcyIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5TdG9wIFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzMiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkRvd25sb2FkIHRoZSBGTFYtRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzQiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc1IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5QbGF5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3NiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+U3RvcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzciIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlVzZXIgaGFzIG1pY3JvcGhvbmUgb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc4IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlN0b3AgU2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzkiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+QWxsb3cgVXNlciBRdWVzdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgwIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPlR1cm4gdGhpcyBvZmYgdG8gcHJldmVudCB0aGF0IGFueSB1c2VyIGlzIGRpc3R1cmJpbmcgeW91IGluIHRoaXMgcm9vbS4gRWZmZWN0IGlzIHRoYXQgdGhlIEJ1dHRvbiB0byBhc2sgZm9yIE1vZGVyYXRpb24gKCJJIGhhdmUgYSBxdWVzdGlvbiIpIGlzIG5vdCB2aXNpYmxlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODEiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+UmlnaHRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RG93bmxvYWQgYXMgQVZJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RkxWPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QVZJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UmF3IFNjcmVlbnZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QXVkaW8gb25seTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODciIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlRoZSBoYXZlIGJlZW4gZXJyb3JzIHdoaWxlIHByb2Nlc3NpbmcgdGhlIFJlY29yZGluZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg4IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5UaGUgUmVjb3JkaW5nIGlzIG5vdCB5ZXQgcmVhZHkgZm9yIHdhdGNoaW5nLiBQbGVhc2UgcmV0cnkgaW4gYSBjb3VwbGUgb2YgbWludXRlcyBhZ2Fpbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg5IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Mb2c6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UmVjb3JkZXIgTWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTEiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk9rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MiIgbmFtZT0ic2lwIGFwcGxldCI+CisgICAgPHZhbHVlPlNJUCBBcHBsZXQgaXMgbm90IFJlYWR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MyIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNJUC1BY2NvdW50IFNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NCIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNJUCBzZXR0aW5ncyBmb3IgZWFjaCB1c2VyLiBZb3UgY2FuIHR1cm4gb24gb3Igb2ZmIFNJUCB2aWEgdGhlIEFkbWluaXN0cmF0aW9uICZndDsgQ29uZmlndXJhdGlvbiAoS2V5OiBlbmFibGVfc2lwKS4gVGhlIFNJUCBkYXRhIGZvciBlYWNoIHVzZXIgc2hvdWxkIGJlIGNyZWF0ZWQgYXV0b21hdGljYWxseS4gWW91IGNhbiByZS1jcmVhdGUgdGhlIGRhdGEgYnkgY2hlY2tpbmcgIlJlLWdlbmVyYXRlIFNJUCBEYXRhIjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTUiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TSVAtVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTYiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TaXAtUGFzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTciIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TaXAtQXV0aC1JZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTgiIG5hbWU9InNpcCBzdGF0dXMgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSBMb2dpbiB0byB0aGUgU0lQIEdhdGV3YXkgaGFzIGZhaWxlZC4gWW91IHNob3VsZCBjaGVjayB0aGUgYXV0aGVudGlmaWNhdGlvbiBkYXRhIG9mIHlvdXIgU0lQLVByb3ZpZGVyIGFuZCB0aGUgU0lQLUFjY291bnQgRGF0YSBmb3IgZWFjaCBVc2VyLiBBcyBBZG1pbmlzdHJhdG9yIHlvdSBhcmUgc3RpbGwgYWJsZSB0byBsb2dpbiBhbmQgY2hlY2sgdGhlIENvbmZpZ3VyYXRpb24uIEFzIFVzZXIgb3IgTW9kZXJhdG9yIHlvdSB3aWxsIGJlIGJsb2NrZWQgZnJvbSBhbnkgaW50ZXJhY3Rpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5OSIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIExvZ2luIHRvIHRoZSBTSVAgR2F0ZXdheSBoYXMgZmFpbGVkLiBDb250YWN0IHlvdXIgU2VydmljZSBUZWFtITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDAiIG5hbWU9InNpcCBzdGF0dXMgbWVzc2FnZSI+CisgICAgPHZhbHVlPkxvZ2dpbmcgaW4gdG8gU0lQLUdhdGV3YXkgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwMSIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TG9nZ2luZyBpbiB0byBTSVAtR2F0ZXdheSAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAyIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TaG93IExvZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDMiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkxvZyBtZXNzYWdlcyBmcm9tIHBvc3QgcmVjb3JkZXIgcHJvY2VzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDQiIG5hbWU9InNpcCBsb2dpbiI+CisgICAgPHZhbHVlPlNJUC1BcHBsZXQgTWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDUiIG5hbWU9InNpcCBsb2dpbiI+CisgICAgPHZhbHVlPlRoZSBTSVAtQXBwbGV0IGlzIG5vdCByZWFkeS4gQWNjZXB0IHRoZSBBcHBsZXQgcGxlYXNlIGFuZCBjbGljayBvayE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA2IiBuYW1lPSJtb2RlcmF0b3IgcG9wIHVwIj4KKyAgICA8dmFsdWU+R2V0IE1vZGVyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA3IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+U2F2ZSBBcHBvaW50bWVudCBDaGFuZ2VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwOCIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlRoZSBhcHBvaW50ZW1lbnQgaGFzIGJlZW4gY2hhbmdlZC4gRG8geW91IHdhbnQgdG8gc2F2ZSB0aG9zZSBjaGFuZ2VzPyAmbHQ7YnIvJmd0OyZsdDtici8mZ3Q7QWxsIGF0dGVuZGVlcyBvZiB0aGUgYXBwb2ludG1lbnQgd2lsbCByZWNlaXZlIGEgRU1haWwgd2l0aCB0aGUgdXBkYXRlZCBkYXRlIGFuZCB0aW1lIChkZXBlbmRpbmcgb24gdGhlIG5vdGlmaWNhdGlvbiB0eXBlIG9mIHRoaXMgYXBwb2ludG1lbnQpLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDkiIG5hbWU9ImZsdiByZWNvcmRlciBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VG8gYWNjZXNzIG90aGVyIHJlY29yZGluZ3MgeW91IGhhdmUgdG8gbG9naW4gdGhlICRBUFBfTkFNRSBBcHBsaWNhdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTEwIiBuYW1lPSJpbnRlcnZpZXcgdmlkZW8gcG9kIj4KKyAgICA8dmFsdWU+Q2hvb3NlIHRoZSBVc2VyIGZvciB0aGlzIFZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMSIgbmFtZT0iaW50ZXJ2aWV3IHZpZGVvIGNob29zZSB1c2VyIj4KKyAgICA8dmFsdWU+QXZhaWxhYmxlIFVzZXJzIGZvciB0aGlzIFBvZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTIiIG5hbWU9ImludGVydmlldyBpbmZvIj4KKyAgICA8dmFsdWU+WW91IGFyZSBhIE1vZGVyYXRvciBpbiB0aGlzIEludGVydmlldy4gWW91IGNhbiBkZWNpZGUgd2hvIGlzIHNwZWFraW5nIGluIHRoaXMgaW50ZXJ2aWV3IGFuZCB5b3UgY2FuIHN0YXJ0IC8gc3RvcCB0aGUgcmVjb3JkaW5nIG9mIHRoZSBTZXNzaW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTMiIG5hbWU9ImludGVydmlldyBidXR0b24gcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+U3RhcnQgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxNCIgbmFtZT0iaW50ZXJ2aWV3IGJ1dHRvbiByZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TdG9wIFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTUiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIHJlY29yZGluZyBvZiB0aGUgSW50ZXJ2aWV3IGlzIGFscmVhZHkgc3RhcnRlZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE2IiBuYW1lPSJpbnRlcnZpZXcgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSByZWNvcmRpbmcgaXMgYWxyZWFkeSBzdG9wcGVkIG9yIG5vdCBiZWVuIHN0YXJ0ZWQgeWV0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTciIG5hbWU9ImludGVydmlldyByZWNvcmRpbmcgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSByZWNvcmRpbmcgZm9yIHRoaXMgaW50ZXJ2aWV3IGlzIGFscmVhZHkgc3RhcnRlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE4IiBuYW1lPSJpbnRlcnZpZXcgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTkiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIHBvc3QtcHJvY2Vzc2luZyBvZiBhbiBpbnRlcnZpZXcgdGFrZXMgNSBtaW51dGVzIHBlciAxIG1pbnV0ZSBpbnRlcnZpZXcuIFRoZSBjdXJyZW50IHByb2dyZXNzIG9mIHRoZSBpbnRlcnZpZXcgcG9zdC1wcm9jZXNzaW5nIHRyYW5zY29kaW5nIGlzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjAiIG5hbWU9InNpcCBjcmVhdGlvbiI+CisgICAgPHZhbHVlPllvdSBoYXZlIHRvIGVudGVyIHlvdXIgcGFzc3dvcmQgYWdhaW4gdG8gYXV0byBjcmVhdGUgdGhlIFNJUCBEYXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyMSIgbmFtZT0ic2lwIGNyZWF0aW9uIj4KKyAgICA8dmFsdWU+UmUtZ2VuZXJhdGUgU0lQIERhdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIyIiBuYW1lPSJmaWxlZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IG1vdmUgdGhpcyBmaWxlIG9yIGZvbGRlciBpbnRvIGl0cyBvd24gc3ViIGZvbGRlciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIzIiBuYW1lPSJmaWxlIGV4cGxvcmVyICI+CisgICAgPHZhbHVlPkhvbWUgZHJpdmUgc2l6ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjQiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5QdWJsaWMgZHJpdmUgc2l6ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjUiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5MaWNlbnNlIFNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNiIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPllvdSBjYW4gZWl0aGVyIGJpbmQgdGhlIHVzZXIgdG8gYSBleHBpcmUgRGF0ZSBvciB0byBhIG1heGltdW0gbnVtYmVyIG9mIG1pbnV0ZXMgd2hlbiB5b3UgZW5hYmxlIGxpY2Vuc2luZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI3IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+Q2hlY2sgbGljZW5zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjgiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5GbGF0cmF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjkiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5FeHBpcmUgZGF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzAiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5TZWNvbmRzIGxlZnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMxIiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+VG90YWwgdGltZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzIiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdXIgTGljZW5zZSBoYXMgZXhwaXJlZC4gWW91IG5lZWQgdG8gYnV5IG5ldyBtaW51dGVzIChQYXktcGVyLW1pbnV0ZSkgb3IgYSB2b2x1bWUgZmxhdHJhdGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Q2xpY2sgYW5kIGJ1eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzQiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlRpbWUgTGVmdCBvbiB5b3VyIGFjY291bnQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzNSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+VXNlciBMaWNlbnNlIEluZm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM2IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5JbmZvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzNyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Q2xvc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM4IiBuYW1lPSJsaWNlbnNlLWluZm8iPgorICAgIDx2YWx1ZT5Zb3VyIGxpY2Vuc2UgaGFzIGV4cGlyZWQuIFlvdSBuZWVkIGVpdGhlciB0byBidXkgYSBtaW51dGUgcGFja2FnZSAoUGF5LXBlci1taW51dGUpIG9yIGEgdm9sdW1lIGZsYXRyYXRlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzkiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkxpY2Vuc2Ugc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQwIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIGVpdGhlciBidXkgbWludXRlcyB0byBtYWtlIFdlYi1Db25mZXJlbmNpbmcgKFBheS1wZXItbWludXRlKS4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7IE9yIHlvdSBidXkgYSB2b2x1bWUgZmxhdHJhdGUgYWJvdXQgMy0xMiBtb250aHMuJmx0O2JyLyZndDsmbHQ7YnIvJmd0O1NlbmRpbmcgaW52aXRhdGlvbnMgKGRpcmVjdCBsaW5rcyBpbnRvIENvbmZlcmVuY2UgUm9vbXMpIG9yIGNyZWF0aW5nIGNvbmZlcmVuY2UgUm9vbXMgdmlhIHRoZSBDYWxlbmRhciB3aXRoIGV4dGVybmFsIFVzZXJzIGlzIG9ubHkgYWxsb3dlZCB3aXRoIGEgdm9sdW1lIGZsYXRyYXRlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDEiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSA2MCBNaW51dGVzIDksOTkgRVVSTyAoMTYgQ2VudCBwZXIgTWludXRlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDIiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSA1IGhvdXJzIDE5LDk5IEVVUk8gKDYgQ2VudCBwZXIgbWludXRlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDMiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSAzIG1vbnRoIGZvciAyOSw5OSBFVVJPICg5LDk5IEV1cm8gcGVyIE1vbnRoKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDQiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSA2IG1vbnRoIGZvciAzOSw5OSBFVVJPICg2LDY2IEV1cm8gcGVyIG1vbnRoKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDUiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlBheS1wZXItbWludXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Vm9sdW1lIGZsYXRyYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91IGhhdmUgdW5saW1pdGVkIExpY2Vuc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ4IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3VyIGxpY2Vuc2Ugd2lsbCBleHBpcmUgYXQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0OSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91IGJvdWdodCBQYXktcGVyLW1pbnV0ZS4gWW91IHN0aWxsIGhhdmU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IG5ldyBjcmVkaXQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+V2FudCB5b3VyIG93biBTZXJ2ZXI/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91IHdvdWxkIGxpa2UgdG8gaGF2ZSAkQVBQX05BTUUgaW5zdGFsbGVkIG9uIHlvdXIgU2VydmVyIG9yIGludGVncmF0ZWQgaW50byB5b3VyIE1vb2RsZSwgU3VnYXJDUk0sIFdlYnNpdGUgb3IgSW50cmFuZXQ/IFByaXppbmdzIHN0YXJ0IGF0IDUwMCBFdXJvIHBlciBJbnN0YWxsYXRpb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+T3Igc2VuZCB1cyBhIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU0IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5BbnN3ZXIgdG86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1NSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+TWVzc2FnZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU2IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5TZW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1NyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Q2xpY2sgaGVyZSB0byBnZXQgY29udGFjdCBJbmZvIGFuZCBQcml6aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTgiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNyZWRpdCBDYXJkIERldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU5IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5GaXJzdG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYwIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5MYXN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjEiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNyZWRpdCBDYXJkIFR5cGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYyIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5WSVNBIENhcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYzIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5NYXN0ZXJDYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2NCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+RGlzY292ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY1IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5BbWVyaWNhbiBFeHByZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2NiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q3JlZGl0IENhcmQgTnVtYmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2NyIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+RXhwaXJhdGlvbiBEYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2OCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q2FyZCBWZXJpZmljYXRpb24gTnVtYmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2OSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+QmlsbGluZyBBZGRyZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+QWRkcmVzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzEiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzIiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTczIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5Db3VudHJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U3RhdGUgKE9ubHkgVVMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+WklQPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+QW1vdW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NyIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U3VibWl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3OCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U3RlcCAxOiAkQVBQX05BTUUgLSBQYXltZW50IEZvcm08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc5IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5FTWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODAiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNsaWNrICJDaGVjayBvdXQgd2l0aCBQYXlwYWwiIHRvIHBheS4mbHQ7YnIvJmd0OyBQYXlwYWwgYWNjZXB0cyBWSVNBLCBNYXN0ZXJDYXJkLCBEaXNjb3ZlciBvciBBbWVyaWNhbiBFeHByZXNzLiAmbHQ7YnIvJmd0O0l0IGRvZXMgbm90IHJlcXVpcmUgdG8gc2lnbiB1cCB3aXRoIFBheXBhbC4gJmx0O2JyLyZndDtDaXRpemVucyBmcm9tIEdlcm1hbnkgY2FuIGFsc28gcGF5IHdpdGggZGlyZWN0IGRlYml0IChQZXIgTGFzdHNjaHJpZnQtRWluenVnKS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgxIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5UaGFuayB5b3UgZm9yIGJ1eWluZyAkQVBQX05BTUUuICZsdDtici8mZ3Q7ICZsdDtici8mZ3Q7IEFzIHNvb24gYXMgd2UgcmVjZWl2ZWQgdGhlIHBheW1lbnQgeW91ciBhY2NvdW50IHdpbGwgYmUgdXBkYXRlZC4mbHQ7YnIvJmd0OyBZb3Ugd2lsbCByZWNlaXZlIGFuIEVNYWlsIHdpdGggeW91ciBpbnZvaWNlIGFzIFBERi4mbHQ7YnIvJmd0O1lvdSBjYW4gYWxzbyBjaGVjayBjdXJyZW50IGFuZCBwYXN0IHRyYW5zYWN0aW9ucyBpbiB5b3VyIHByb2ZpbGUgc2V0dGluZ3MuJmx0O2JyLyZndDsmbHQ7YnIvJmd0OyZsdDtici8mZ3Q7WW91IGNhbiBjbG9zZSB0aGlzIGJyb3dzZXIgd2luZG93L3RhYiBub3cgYW5kIHJldHVybiB0byAkQVBQX05BTUUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U3VibWl0IGFuZCBCdXkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MyIgbmFtZT0icGF5bWVudC1mcm9tIj4KKyAgICA8dmFsdWU+Q2xpY2sgYW5kIEJ1eSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg0IiBuYW1lPSJwYXltZW50LWZyb20iPgorICAgIDx2YWx1ZT5TdGVwIDM6ICRBUFBfTkFNRSBQYXltZW50IC0gQ2hlY2sgb3JkZXIgYW5kIGJ1eSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg1IiBuYW1lPSJwYXltZW50LWZyb20iPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4NiIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+UGF5bWVudCByZWNlaXZlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg3IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5IaSw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg4IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5XZSBoYXZlIHJlY2VpdmVkIHlvdXIgcGF5bWVudC4gWW91ciB1c2VyIHByb2ZpbGUgaXMgdXBkYXRlZCBub3cuIFNlZSBhdHRhY2hlZCB5b3VyIEludm9pY2UuIFRoZSBJbnZvaWNlIGFuZCBhbGwgcGFzdCBJbnZvaWNlIGNhbiBhbHNvIGJlIGRvd25sb2FkZWQgaW4geW91ciB1c2VyIHByb2ZpbGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4OSIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+VGhhbmsgeW91IGZvciB1c2luZyAkQVBQX05BTUUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MCIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+UGF5bWVudCBSZWNlaXZlZCAkQVBQX05BTUUgLTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTEiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5QYXltZW50IGFuZCBUcmFuc2FjdGlvbiBTdGF0dXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkyIiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+VHJhbnNjYXRpb24gSGFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTMiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NaW51dGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NCIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPk1vbnRoczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTUiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5FVVI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk2IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+U3RhdHVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NyIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPkludm9pY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk4IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5OSIgbmFtZT0iZXJyb3ItbGljZW5zZS1mbGF0Ij4KKyAgICA8dmFsdWU+WW91IG5lZWQgdG8gYnV5IGEgdm9sdW1lIGZsYXRyYXRlIHRvIGJlIGFibGUgdG8gc2VuZCBpbnZpdGF0aW9ucyBvciBjcmVhdGUgbWVldGluZ3MgdmlhIHRoZSBjYWxlbmRhci4gV2l0aCBQYXktcGVyLW1pbnV0ZSBpdCBpcyBvbmx5IHBvc3NpYmxlIGZvciB5b3UgdG8gYWNjZXNzICRBUFBfTkFNRS4gWW91IGNhbm5vdCBhbGxvdyAzdGggUGFydGllcyB0byBhY2Nlc3MgYSBNZWV0aW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAwIiBuYW1lPSJlcnJvciB1c2VyIj4KKyAgICA8dmFsdWU+VGhpcyBFbWFpbCBpcyBhbHJlYWR5IHVzZWQgYnkgYW5vdGhlciBVc2VyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAxIiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+U0lQLVNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDIiIG5hbWU9InJvb20tYWRtaW4iPgorICAgIDx2YWx1ZT5UaGUgQ29uZmVyZW5jZSBOdW1iZXIgYW5kIFBJTiBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgdmlhIHRoZSBPcGVuWEcgUlBDLUdhdGV3YXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwMyIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlNJUCBOdW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNCIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlBJTjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA1IiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+Q2xlYXIgb2JqZWN0cyBvbiBjdXJyZW50IHNsaWRlIG9ubHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDYiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5Pbmx5IHRoZSBVUkwgZW50ZXJlZCBpbiB0aGUgU3RhdHVzIGJhciBpcyBzZW5kIHRvIHBhcnRpY2lwYW50cyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk1ha2UgVGVhbS1Sb29tcyBbQnJlYWtvdXQgc2Vzc2lvbl08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNob29zZSB1c2VycyBmb3IgYSBuZXcgVGVhbS1Sb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+WW91IGNhbiBjaG9vc2UgdXNlcnMgaGVyZSBhbmQgY3JlYXRlIGEgbmV3IENvbmZlcmVuY2UgUm9vbSAoIlRlYW0gUm9vbSIpIGZvciB0aGVtLiBUaGUgY2hvc2VuIHVzZXJzIHdpbGwgYXV0b21hdGljYWxseSBzd2l0Y2ggdG8gdGhlIG5ldyBUZWFtLVJvb20gb3IgZ2V0IGEgbm90aWZpY2F0aW9uLiBUZWFtLVJvb20gTW9kZXJhdG9ycyB3aWxsIGdldCBhZGRpdGlvbmFsbHkgYSBsaXN0IG9mIGN1cnJlbnQgcm9vbXMgc28gdGhhdCB0aGV5IGNhbiBzd2l0Y2ggdG8gZWFjaCByb29tIGlmIHRoZXJlIGFyZSBpcyBuZWVkIGZvciBhIE1vZGVyYXRvci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Vc2VycyBmb3IgdGhlIG5ldyBUZWFtLVJvb206PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DcmVhdGUgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNob29zZSBhdCBsZWFzdCBvbmUgdXNlciBmb3IgdGhlIFRlYW0tUm9vbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkFkZCB1c2VyIHRvIHRlYW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlJlbW92ZSB1c2VyIGZyb20gVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Vc2VyIGlzIFRlYW0tUm9vbSBNb2RlcmF0b3IgKEhlIGlzIGFibGUgdG8gbWFuYWdlIFRlYW0tUm9vbXMgYW5kIHVzZXJzIG9mIHRoZSBUZWFtLVJvb20gY2FuIGFzayBoaW0gdG8gY29tZSBpbnNpZGUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Sb29tdHlwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+SWYgeW91IGNoZWNrICJGb3JjZSB1c2VyIHRvIHN3aXRjaCB0byBuZXcgVGVhbS1Sb29tIiBhbGwgY2hvc2VuIHVzZXJzIHdpbGwgYXV0b21hdGljYWxseSBzd2l0Y2ggdG8gdGhlIG5ld2x5IGNyZWF0ZWQgVGVhbS1Sb29tLiBPdGhlcndpc2UgdGhleSBnZXQgYSBub3RpZmljYXRpb24gd2l0aCBhIGJ1dHRvbiB0aGF0IHRoZXkgJmx0O2kmZ3Q7Y2FuJmx0Oy9pJmd0OyBzd2l0Y2ggdG8gdGhlIG5ldyByb29tLiBUZWFtLU1vZGVyYXRvcnMgYWx3YXlzIGhhdmUgdGhlIGZyZWUgY2hvaWNlIHRvIG1hbmFnZSB0aGUgVGVhbS1Sb29tcyBhbmQgc3dpdGNoIGJldHdlZW4gdGhlbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk1hbmFnZSBUZWFtLVJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIHN3aXRjaCBoZXJlIGJldHdlZW4gYWxsIFRlYW0tUm9vbXMgdGhhdCB5b3UgYXJlIGFzc2lnbmVkIGFzIFRlYW0tUm9vbSBNb2RlcmF0b3IuIFVzZXJzIGluc2lkZSB0aGUgVGVhbS1Sb29tIGNhbiBzZW5kIHlvdSBhIG1lc3NhZ2UsIGZvciBleGFtcGxlIHRvIGFzayB5b3UgdG8gY29tZSB0byB0aGVpciByb29tIGFuZCBoZWxwIHRoZW0uIFlvdSBjYW4gYWxzbyB0ZXJtaW5hdGUgdGhlIFRlYW0tUm9vbSBhbmQgYWxsIFVzZXJzIHdpbGwgYmUgbG9nZ2VkIG91dC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkZvcmNlIHVzZXIgdG8gc3dpdGNoIHRvIG5ldyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNyZWF0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Vc2VycyBhdmFpbGFibGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkFkZCBhIHVzZXIgd2l0aCB0aGUgcGx1cyBmcm9tIHRoZSBsZWZ0IG9yIHJlbW92ZSBpdCB3aXRoIHRoZSBjcm9zcyBmcm9tIHRoZSByaWdodCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjEpIFRlYW0tUm9vbSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MikgQWRkIHVzZXJzIHRvIHRoZSBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW0tUm9vbSBOYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNoYW5nZSB0byB0aGUgUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U3dpdGNoIHRvIHRoaXMgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZXJtaW5hdGUgVGVhbS1Sb29tIGFuZCBsb2dvdXQgYWxsIFVzZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5OZXcgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBhIG5ldyBUZWFtLVJvb20gYXZhaWxhYmxlIGZvciB5b3UuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Td2l0Y2ggdG8gVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb20gQWN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+WW91IGNhbiByZS1vcGVuIHRoaXMgd2luZG93IHZpYSB0aGUgbWFpbiBtZW51IGluIHRoZSAiQWN0aW9ucyIgc2VjdGlvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlNlbmQgbWVzc2FnZSB0byBUZWFtLVJvb20gTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5OZXcgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBhIG5ldyBUZWFtLVJvb20gYXZhaWxhYmxlLiBZb3UgY2FuIHN3aXRjaCB0byB0aGF0IFJvb20uIFRlYW0tUm9vbXMgYXJlIGxpa2UgIldvcmtncm91cHMiIHdpdGggYWRkaXRpb25hbGx5IHBvc3NpYmlsaXRpZXMgdG8gYXNrIHRoZSBUZWFtLVJvb20gTW9kZXJhdG9yIGZvciBoZWxwLiBZb3VyIFRlYW0tUm9vbXMgYXJlIGFsc28gYXZhaWxhYmxlIGluIHRoZSAiTXkgTWVldGluZ3MiIHNlY3Rpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Td2l0Y2ggdG8gVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DcmVhdGVkIGJ5OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQ4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVhbS1Sb29tIG5hbWU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGlzIFdpbmRvdyB3aWxsIHN0YXkgb3BlbiBldmVuIGlmIHlvdSBsZWF2ZSB0aGUgcm9vbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1MCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJzIGZvciB0aGlzIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MykgT3RoZXIgVGVhbS1Sb29tcyB0aGF0IHlvdSBjb3VsZCBzd2l0Y2ggdG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1MiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlNlbmQgYSBtZXNzYWdlIHRvIHRoZSBUZWFtLVJvb20gTW9kZXJhdG9ycy4gRm9yIGV4YW1wbGUgaWYgeW91IG5lZWQgaGVscCBpbiBNb2RlcmF0aW5nIHRoZSBSb29tIG9yIGlmIHlvdSBoYXZlIGEgcXVlc3Rpb24gYWJvdXQgdGhlIHRvcGljLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U2VuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MikgVXNlcnMgdGhhdCBhcmUgaW52aXRlZCB0byB0aGlzIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+SXMgVGVhbS1Sb29tIE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGhlc2UgYXJlIGFsbCB1c2VycyB0aGF0IHRoZSBtb2RlcmF0b3IgaGFzIGludml0ZWQgdG8gdGhpcyBUZWFtLVJvb20uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBUZWFtLU1vZGVyYXRvciBsb2dnZWQgaW4gYXQgdGhlIG1vbWVudCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1OCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1OSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlBsZWFzZSBoZWxwIHVzLCB3ZSBoYXZlIGEgcHJvYmxlbSBpbiBvdXIgVGVhbS1Sb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+QSB1c2VyIGZyb20gYSBUZWFtLVJvb20gcmVxdWVzdHMgeW91ciBoZWxwLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVhbS1Sb29tIHJlcXVlc3QgZm9yIGhlbHA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2MiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk1lc3NhZ2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Gcm9tOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+WW91IGFyZSBjdXJyZW50bHkgbm90IGluIGFueSBUZWFtLVJvb20uIEJ1dCB5b3UgY2FuIHN3aXRjaCBoZXJlIHRvIGFsbCBUZWFtLVJvb21zIHRoYXQgeW91IGhhdmUgYWNjZXNzIHRvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY1IiBuYW1lPSJiYWNrdXBDb250ZW50Ij4KKyAgICA8dmFsdWU+QmFja3VwIHRoZSBTeXN0ZW0uIFRoZSBCYWNrdXAgaW5jbHVkZXMgYWxsIFVzZXIgZ2VuZXJhdGVkIGRhdGEuIFRoZSBjb25maWd1cmF0aW9uIGlzIG5vdCBpbmNsdWRlZCBhcyB3ZWxsIGFzIHRoZSBsYW5ndWFnZSBsYWJlbHMuIEJlY2F1c2UgdGhvc2UgdmFsdWVzIGFyZSBpbXBvcnRlZCB3aXRoIHRoZSBTeXN0ZW0gSW5zdGFsbGVyLiBUbyB1cGRhdGUgeW91ciBTeXN0ZW0sIGV4cG9ydCB5b3VyIG9sZCBzeXN0ZW0gKDEpIHJlLWluc3RhbGwgaW50byBhIG5ldyBkYXRhYmFzZSB0aGUgbmV3IHBhY2thZ2UgKDIpIGFuZCBpbXBvcnQgdGhlIEJhY2t1cCBmaWxlIGFnYWluICgzKS4gVGhlIEJhY2t1cCBzaG91bGQgYmUgaW1wb3J0ZWQgYmVmb3JlIGdlbmVyYXRpbmcgZGF0YSBpbiB0aGUgbmV3bHkgaW5zdGFsbGVkIHN5c3RlbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2NiIgbmFtZT0iYmFja3VwQ29udGVudCI+CisgICAgPHZhbHVlPlN5c3RlbSBCYWNrdXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2NyIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+QWxsb3cgdXNlciB0byBzaGFyZSBTY3JlZW4vUmVjb3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjgiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPkRlbnkgdXNlciB0byBzaGFyZSBTY3JlZW4vUmVjb3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjkiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPlVzZXIgaXMgTW9kZXJhdG9yLCBoZSBjYW4gZG8gYW55dGhpbmchPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzAiIG5hbWU9ImFwcGx5IGZvciBzY3JlZW4vcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0byBzaGFyZS9yZWNvcmQgc2NyZWVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDcxIiBuYW1lPSJtb2RlcmF0aW9uIG1pbmkgaWNvbnMiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGFsbG93ZWQgdG8gc2hhcmUvcmVjb3JkIHNjcmVlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDcyIiBuYW1lPSJtb2RlcmF0aW9uIG1pbmkgaWNvbnMiPgorICAgIDx2YWx1ZT5BcHBseSBmb3IgcmlnaHQgdG8gc2hhcmUvcmVjb3JkIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3MyIgbmFtZT0ibW9kZXJhdGlvbiBtaW5pIGljb25zIGNvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT5BbGxvdy9EZW55IHJpZ2h0IHRvIHNoYXJlL3JlY29yZCBzY3JlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzQiIG5hbWU9InNvdW5kIGljb24iPgorICAgIDx2YWx1ZT5UdXJuIHNvdW5kIG9mZjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc1IiBuYW1lPSJzb3VuZCBpY29uIj4KKyAgICA8dmFsdWU+VHVybiBzb3VuZCBvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc2IiBuYW1lPSJyb29tIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+QXVkaW8gb25seSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzciIG5hbWU9InJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5UdXJuIHRoaXMgRmxhZyBvbiBhbmQgdGhlIHVzZXJzIHdpbGwgaGF2ZSBvbmx5IHRoZSBBdWRpby1PcHRpb24gYW5kIG5vIFZpZGVvIGluIGEgY29uZmVyZW5jZSByb29tLiBUaGlzIGNhbiBieSBnb29kIHRvIHNhdmUgYmFuZHdpZHRoLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc4IiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5BbGxvdyBSZW1vdGUgQ29udHJvbCAoRHVyaW5nIFNjcmVlbiBTaGFyaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc5IiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5EZW55IFJlbW90ZSBDb250cm9sIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODAiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFwcGx5IGZvciByaWdodCB0byBSZW1vdGUgQ29udHJvbCBTY3JlZW4gKER1cmluZyBTY3JlZW4gU2hhcmluZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MSIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+WW91IGFyZSBhbGxvd2VkIHRvIFJlbW90ZSBDb250cm9sIFNjcmVlbiAoRHVyaW5nIFNjcmVlbiBTaGFyaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgyIiBuYW1lPSJhcHBseSBmb3IgcmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIHJlbW90ZSBjb250cm9sIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MyIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+VXNlciBpcyBNb2RlcmF0b3IsIGhlIGNhbiBkbyBhbnl0aGluZyEgW1JlbW90ZSBEZXNrdG9wIENvbnRyb2xdPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODQiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFsbG93L0RlbnkgcmlnaHQgdG8gUmVtb3RlIENvbnRyb2wgU2NyZWVuIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODUiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPjEpIFlvdXIgUEMgdG8gcmVtb3RlIFBDOiBUbyBjb3B5IGFuZCBwYXN0ZSB0ZXh0IGZyb20geW91ciBjbGlwYm9hcmQgaW50byB0aGUgcmVtb3RlIGNvbnRyb2xsZWQgc2NyZWVuLCBjbGljayBvbiB0aGUgc2NyZWVuLCB0aGVuIHJpZ2h0IGNsaWNrIGluIHRoZSB0ZXh0IGZpZWxkIGFuZCBjaG9vc2UgIkluc2VydCIgZnJvbSB0aGUgY29udGV4dCAocmlnaHQgY2xpY2spIG1lbnUuJmx0O2JyLyZndDsmbHQ7YnIvJmd0OzIpIEZyb20gcmVtb3RlIFBDIHRvIHlvdXIgUEM6IFRvIGNvcHkgdGV4dCBmcm9tIHRoZSByZW1vdGUgUEMgdG8geW91ciBQQydzIGNsaXBib2FyZCwgaGlnaGxpZ2h0IHRoZSB0ZXh0IHdpdGggdGhlIG1vdXNlIG9uIHRoZSByZW1vdGUgc2NyZWVuLCB0aGVuIHJpZ2h0LWNsaWNrIG9uIHRoZSByZW1vdGUgc2NyZWVuIGFuZCBjaG9vc2UgJmx0O2kmZ3Q7Q29weSBoaWdobGlnaHRlZCB0ZXh0Jmx0Oy9pJmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg2IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Db3B5IGFuZCBQYXN0ZSB0ZXh0IGZyb20geW91ciBQQyB0byByZW1vdGUgUEMgYW5kIHZpY2UtdmVyc2EuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODciIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNvcHkgaGlnaGxpZ2h0ZWQgdGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg4IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Ib3cgdG8gY29weSBuIHBhc3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODkiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPlF1YWxpdHkgb2YgdGhlIFNjcmVlblNoYXJlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkwIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5WZXJ5IGhpZ2ggUXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkxIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5IaWdoIFF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5MiIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+TWVkaXVtIFF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5MyIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+TG93IFF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NCIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5lbl9VUzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk1IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPmRlX0RFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTYiIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+S2V5Ym9hcmQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTciIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+Q2xvc2UgV2ViaW5hciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5OCIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5UaGUgV2ViaW5hciBpcyBhbHJlYWR5IGNsb3NlZCwgeW91IHdpbGwgYmUgcmVkaXJlY3RlZCB0byBzb21lIGludGVyZXN0aW5nIG9mZmVyaW5ncyBpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk5IiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPkNsb3NlIFJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMCIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5FeGl0IFVSTDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAxIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPlJvb20gdGVybWluYXRpb24gc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMiIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5JZiB0aGUgcm9vbSBpcyBjbG9zZWQgdXNlcnMgd2lsbCBiZSByZWRpcmVjdGVkIHRvIHRoZSBleGl0IFVSTC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5MZGFwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDQiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDYiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+Q29uZmlnIEZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5MZGFwIENvbmZpZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA4IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwOSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5FbmFibGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTAiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+SW5zZXJ0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JbnNlcnRlZCBieTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEyIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPlVwZGF0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5VcGRhdGVkIGJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTQiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+VGhlIGNvbmZpZyBmaWxlcyBhcmUgaW4gdGhlIGZvbGRlciB3ZWJhcHBzL29wZW5tZWV0aW5ncy9jb25mLiBZb3UgbmVlZCB0byBtYW51YWxseSB1cGxvYWQgdGhlIGZpbGVzIHRvIHRoaXMgZm9sZGVyLiBDaGFuZ2VzIHRvIHRoZSBjb25maWcgZmlsZSBhcmUgaW1tZWRpYXRlbHkgb25saW5lLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE1IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkNvbmZpZyBmaWxlIG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNiIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JZiB5b3UgZW5hYmxlICJBZGQgRG9tYWluIHRvIHVzZXJuYW1lIiB0aGUgdmFsdWUgb2YgdGhlIGZpZWxkICJkb21haW4iIGlzIGFkZGVkIHRvIGVhY2ggbG9naW4gdGhhdCB0aGUgdXNlciBlbnRlcnMgaW4gdGhlIGxvZ2luIGJveC4gVGhpcyBpcyB1c2VmdWwgaWYgdGhlIExvZ2luIGluIHRoZSBMZGFwIGlzIHN0b3JlZCBpbmNsdWRpbmcgdGhlIGRvbWFpbiBuYW1lLiBFeGFtcGxlOiBVc2VyIGVudGVycyAiaGFucyIgZG9tYWluIGlzIHNwZWNpZmllZCBhcyAibG9jYWxob3N0LmNvbSIsIGxvZ2luIHRoYXQgaXMgdmVyaWZpZWQgYWdhaW5zdCBMZGFwIGlzOiBoYW5zQGxvY2FsaG9zdC5jb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5BZGQgRG9tYWluIHRvIHVzZXJuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTgiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+RG9tYWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTkiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+SW5zZXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjAiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+Q29weSBoaWdobGlnaHRlZCB0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjEiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+UmVtb3RlIENsaXBib2FyZCBUZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjIiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+U2hvdyByZW1vdGUgQ2xpcGJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjMiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkRvIG5vdCBzaG93IGFnYWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjQiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNvcHkgdGV4dCBoZXJlIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI1IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0aGUgcmlnaHQgdG8gcmVtb3RlIGNvbnRyb2wgKG9yIHRoZSBtb2RlcmF0aW9uKSB0byBjb3B5IGFuZCBwYXN0ZSB0ZXh0IHRvIG9yIGZyb20gdGhlIHJlbW90ZSBzY3JlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjYiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkVkaXQgZGVmYXVsdCBzZXR0aW5ncyAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNyIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+RG8gbm90IHNob3cgaW5mbyBib3ggaW4gUmVtb3RlIENvbnRyb2wgYWJvdXQgQ29weSBhbmQgUGFzdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyOCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5TYXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjkiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+UmVtb3ZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzAiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzEiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5JbnZpdGUgdXNlciB0byBjb25mZXJlbmNlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMiIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkNob29zZSBhIGNvbmZlcmVuY2Ugcm9vbS4gVGhlIGludml0ZWQgdXNlciB3aWxsIGdldCBhIG1lc3NhZ2Ugd2l0aCB5b3VyIG5hbWUgYW5kIGEgbGluayB0byB0aGUgcm9vbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMyIgbmFtZT0iY2hhdCB1c2VyIj4KKyAgICA8dmFsdWU+Q29ubmVjdGVkIHNpbmNlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM0IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+RW50ZXIgcm9vbSBhZnRlciBzZW5kaW5nIGludml0YXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzNSIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkludml0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM2IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+TWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM3IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0byBpbnZpdGUgeW91IHRvIHRoZSBjb25mZXJlbmNlIHJvb206PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzgiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5JbnZpdGUgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM5IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+U2VuZCBJbnZpdGF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDAiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5kaWQgJmx0O2ImZ3Q7bm90Jmx0Oy9iJmd0OyBhY2NlcHQgeW91ciBpbnZpdGF0aW9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQxIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+QWNjZXB0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDIiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5EZW55PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDMiIG5hbWU9InVzZXIgcHJvZmlsZSI+CisgICAgPHZhbHVlPlRpbWV6b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDQiIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPkV2ZW50IERldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0NSIgbmFtZT0iYXBwb2ludG1lbnQgbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ2IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5EZXNjcmlwdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ3IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5DcmVhdGVkIGJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDgiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5UaW1lWm9uZSBNZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDkiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5DaGVjayAiVGltZVpvbmUgTWVzc2FnZSIgdG8gZ2l2ZSB1c2VycyBhIG1lc3NhZ2UgbmV4dCB0aW1lIHRoZXkgbG9naW4gdG8gdXBkYXRlIHRoZWlyIHByb2ZpbGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTAiIG5hbWU9InRpbWUgem9uZSB1cGRhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlBsZWFzZSBjaGVjayB0aGUgdGltZSB6b25lIGluIHlvdXIgdXNlciBwcm9maWxlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUxIiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5OZXcgJEFQUF9OQU1FIGNvbmZlcmVuY2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTIiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkRldGFpbHM6Jmx0O2JyLyZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MyIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3RhcnQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTQiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkVuZDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NSIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2hhbmdlZCAkQVBQX05BTUUgY29uZmVyZW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NiIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+T3JnYW5pemVyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU3IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DYW5jZWxlZCAkQVBQX05BTUUgY29uZmVyZW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1OCIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIGNvbmZlcmVuY2UgUmVtaW5kZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTkiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Db21tdW5pdHkgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlNob3cgY29udGFjdCBkYXRhIHRvIGV2ZXJ5Ym9keTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYxIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+QWRkIGZpZWxkcyBvZiBpbnRlcmVzdCB0aGF0IHlvdSBvZmZlciBvciB0aGF0IHlvdSBhcmUgc2VhcmNoaW5nIHRvIGZpbmQgaW50ZXJlc3RpbmcgcGFydG5lcnMgZm9yIGEgY29uZmVyZW5jZS4gQ29tbWEgc2VwYXJhdGUgdGhlIHRlcm1zIChmb3IgZXhhbXBsZTogTWVkaWNhbCBTZXJ2aWNlLCBIZWFsdGggYXNzdXJhbmNlLCAuLi4pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjIiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NeSBvZmZlcmluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MyIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk15IGludGVyZXN0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY0IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY1IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+VGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2NiIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkZpZWxkcyBvZiBpbnRlcmVzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY3IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+Q29udGFjdCBpbmZvcm1hdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY4IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2hvdyBjb250YWN0IGRhdGEgdG8gY29udGFjdHMgb25seTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY5IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2hvdyBjb250YWN0IGRhdGEgdG8gbm9ib2R5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzAiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NeSBQcm9maWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzEiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5FZGl0IHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzIiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TZWFyY2ggdXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MyIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPldhdGNoIHlvdXIgcHJvZmlsZSBsaWtlIG90aGVyIHNlZSB5b3U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkVkaXQgeW91ciBzZXR0aW5ncywgYWRkIHlvdXIgaW50ZXJlc3RzIHRvIGJlIGZvdW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzUiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TZWFyY2ggZm9yIG90aGVyIHVzZXJzIGFuZCBleHRlbmQgeW91ciBuZXR3b3JrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzYiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+U2VhcmNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzciIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+VXNlciBvZmZlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3OCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5Vc2VyIGxvb2tzIGZvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc5IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkZyZWV0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODAiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgxIiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlRpbWV6b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODIiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+T2ZmZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODMiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+U2VhcmNoczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg0IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlNlYXJjaHJlc3VsdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg1IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkFjdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NiIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5BZGQgdG8gY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NyIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5TZW5kIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4OCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5Db250YWN0cyBhbmQgTWVzc2FnZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4OSIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5QZW5kaW5nIGNvbnRhY3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTAiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5BY2NlcHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkRlbnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MiIgbmFtZT0idXNlciBjb250YWN0IHJlcXVlc3QiPgorICAgIDx2YWx1ZT5IaSw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MyIgbmFtZT0idXNlciBjb250YWN0IHJlcXVlc3QiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGFkZCB5b3UgYXMgY29udGFjdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NCIgbmFtZT0idXNlciBjb250YWN0IHJlcXVlc3QiPgorICAgIDx2YWx1ZT5DaGVjayB5b3VyIGNvbnRhY3QgcmVxdWVzdHMgaW4gJEFQUF9OQU1FIG9yIGNsaWNrIG9uIHRob3NlIGxpbmtzIHRvIGFjY2VwdCBvciBkZW55IHRoZSByZXF1ZXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTUiIG5hbWU9ImFkZCB1c2VyIGNvbnRhY3QiPgorICAgIDx2YWx1ZT5UaGlzIHVzZXIgaXMgYWxyZWFkeSBpbiB5b3VyIGNvbnRhY3QgbGlzdCBvciBoYXMgcmVjZWl2ZWQgYW4gaW52aXRhdGlvbiB0byB5b3VyIGNvbnRhY3QgbGlzdCB0aGF0IGlzIG5vdCBhbnN3ZXJlZCB5ZXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTYiIG5hbWU9InVzZXIgY29udGFjdCBtYWlsIj4KKyAgICA8dmFsdWU+WW91ciBjb250YWN0IGxpc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkVkaXQgeW91ciBjb250YWN0IGFuZCBtZXNzYWdlcywmbHQ7YnIvJmd0OyBtYW5hZ2UgeW91ciBwZW5kaW5nIGNvbnRhY3RzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk4IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+Y29uZmlybWVkIHlvdSBhcyBjb250YWN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk5IiBuYW1lPSJjaGF0IGluZm8gbWVzc2FnZSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAwIiBuYW1lPSJjaGF0IGxvZyBpY29uIj4KKyAgICA8dmFsdWU+U2hvdyAvIENvcHkgY2hhdCBsb2c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMSIgbmFtZT0iY2hhdCBsb2cgd2luZG93Ij4KKyAgICA8dmFsdWU+Q2hhdCBMb2c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RnJvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TdWJqZWN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDYiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1lc3NhZ2VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDciIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk5ldyBNYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkNsaWNrIHRvIHdyaXRlIGEgbmV3IG1lc3NhZ2UgdG8gYW55IG9mIHlvdXIgY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwOSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+V3JpdGUgbmV3IG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VG86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlN1YmplY3Q6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTIiIG5hbWU9IndoaXRlYm9hcmQgZnVsbC1maXQiPgorICAgIDx2YWx1ZT5FbmFibGUgZnVsbCBmaXQgYW5kIHRoZSB3aGl0ZWJvYXJkIHdpbGwgem9vbSB0aGUgd2hvbGUgd2hpdGVib2FyZCBzbyB0aGF0IGFsbCZsdDtici8mZ3Q7ZG9jdW1lbnRzIGFyZSB2aXNpYmxlIGFjY29yZGluZyB0byBlYWNoIHBhcnRpY2lwYW50cyBzY3JlZW4gcmVzb2x1dGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMyIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+S2ljayB1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTQiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPllvdSBjYW5ub3Qga2ljayB5b3Vyc2VsZiBvdXQgb2YgdGhlIGNvbmZlcmVuY2Ugcm9vbSEgSWYgeW91IHdhbnQgdG8gbGVhdmUgaXQgY2xvc2UgdGhlIGJyb3dzZXIgb3IgdXNlIHRoZSBleGl0IGJ1dHRvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNSIgbmFtZT0ia2ljay11c2VyIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRpc2Nvbm5lY3QgdGhpcyB1c2VyIGZyb20gdGhpcyBjb25mZXJlbmNlIHJvb20/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTYiIG5hbWU9ImtpY2stdXNlciI+CisgICAgPHZhbHVlPkNvbmZpcm0gYWN0aW9uIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE3IiBuYW1lPSJraWNrLXVzZXIiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IGtpY2sgYSBTdXBlci1Nb2RlcmF0b3Igb3V0IG9mIGEgcm9vbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxOCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Qm9vayBjb25mZXJlbmNlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxOSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3RhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZCBhbiBvcHRpb25hbCByZXF1ZXN0IGZvciBtZWV0aW5nIHRvIHRoZSBtZXNzYWdlIGFuZCBjcmVhdGUgYSBjb25mZXJlbmNlIHJvb20uIFRoZSBFdmVudCBpcyB0aGVuIGNvcGllZCBpbiB0aGUgY2FsZW5kYXIgb2YgZXZlcnkgcGFydGljaXBhbnQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkluYm94PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VHJhc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhpcyBpcyB5b3UhIFlvdSBjYW5ub3QgYWRkIHlvdXJzZWxmIGFzIHlvdXIgb3duIGNvbnRhY3QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjYiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5UaGUgdXNlciBpcyBhbHJlYWR5IGRlbmllZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoZSB1c2VyIGlzIGFscmVhZHkgYXBwcm92ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjgiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5UaGlzIHVzZXIgY29udGFjdCBoYXNoIGlzIGludmFsaWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjkiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Vc2VyIGFkZGVkIHRvIGNvbnRhY3QgbGlzdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlVzZXIgZGVuaWVkIGFzIGNvbnRhY3QgYW5kIHJlbW92ZWQgZnJvbSBwZW5kaW5nIGNvbnRhY3QgbGlzdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIHN1Y2ggY29udGFjdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPldvdWxkIHlvdSByZWFsbHkgbGlrZSB0byByZW1vdmUgdGhhdCBjb250YWN0PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMzIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+Q29uZmlybSBjb250YWN0IHJlbW92YWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkRlbGV0ZSBjb250YWN0IGZyb20gbGlzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM1IiBuYW1lPSJ1c2VyIHByb2ZpbGUiPgorICAgIDx2YWx1ZT5Vc2VyIFByb2ZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNiIgbmFtZT0idXNlciBwcm9maWxlIj4KKyAgICA8dmFsdWU+U2hvdyB1c2VyIHByb2ZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWVzc2FnZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzOCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VhcmNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbGVjdCBhbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0MCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VsZWN0IG5vbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0MSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VsZWN0IHVucmVhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWxlY3QgcmVhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Nb3ZlIHRvIGZvbGRlciAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIG5ldyBmb2xkZXIgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRlbGV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ2IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EZWxldGVkIG1haWxzIGFyZSBzdGlsbCBpbiB5b3VyIHRyYXNoIGZvbGRlciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWFyayB1bnJlYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0OCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWFyayByZWFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFuc3dlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BbnN3ZXIgZXZlcnlib2R5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkZvcndhcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWN0aW9ucyAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlNlbmQgcHJpdmF0ZSBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk5vdGhpbmcgc2VsZWN0ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1vdmUgdG8gSW5ib3g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGVsZXRlIChmaW5hbCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1OCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIGZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgZm9sZGVycyBhbmQgb3JnYW5pemUgeW91ciBtZXNzYWdlcyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIGZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPkRlbGV0ZSBmb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPllvdSBjYW5ub3QgZGVsZXRlIHRoaXMgZm9sZGVyLCB0aGVyZSBhcmUgc3RpbGwgbWVzc2FnZXMgaW5zaWRlISBEZWxldGUgZmlyc3QgdGhlIG1lc3NhZ2VzIG9yIG1vdmUgdGhlbSB0byBhbm90aGVyIGZvbGRlci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPkVkaXQgbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGZvbGRlcj8gVGhlcmUgaXMgbm8gd2F5IHRvIHVuZG8gdGhhdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPllvdXIgcmVxdWVzdCB3YXMgc2VuZCB0byB0aGUgdXNlci4gVGhlIHVzZXIgd2lsbCByZWNlaXZlIGEgbm90aWZpY2F0aW9uIHRvIGFjY2VwdCBvciBkZW55IHlvdXIgcmVxdWVzdC4gT25seSBhY2NlcHRlZCByZXF1ZXN0cyBhcmUgaW4geW91ciBjb250YWN0IGxpc3Qgb2YgY291cnNlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+TWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY4IiBuYW1lPSJ1c2VyIHZpZXcgcHJvZmlsZSI+CisgICAgPHZhbHVlPlRoZSB1c2VyIGRvZXMgbm90IHNoYXJlIGhpcyBwZXJzb25hbCBjb250YWN0IGRhdGEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjkiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+VGhlIHVzZXIgZG9lcyBzaGFyZSBoaXMgcGVyc29uYWwgY29udGFjdCBkYXRhIG9ubHkgdG8gY29udGFjdHMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzAiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+QWRkcmVzcyAmYW1wOyBQaG9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjcxIiBuYW1lPSJlcnJvciBjb2RlIj4KKyAgICA8dmFsdWU+WW91IGludml0YXRpb24gY29kZSBpcyBubyB2YWxpZCwgdGhlIGNvZGUgaXMgb25seSB2YWxpZCBkdXJpbmcgdGhpcyBzcGVjaWZpYyBkYXRlIGFuZCB0aW1lOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjcyIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhpcyBldmVudCBpcyBjb25uZWN0ZWQgdG8gc2V2ZXJhbCBjYWxlbmRhcnMgb2Ygb3RoZXIgdXNlcnMuIFlvdXIgY2hhbmdlIHdpbGwgYWxzbyB1cGRhdGUgdGhlaXIgY2FsZW5kYXIuIFdvdWxkIHlvdSByZWFsbHkgbGlrZSB0byB1cGRhdGUgdGhlIGV2ZW50PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjczIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Q29uZmlybSB1cGRhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkFsbG93IGNvbnRhY3QgdG8gc2VlIG15IGNhbGVuZGFyICh2aWV3IG9ubHkpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzUiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5EbyBub3Qgc2hhcmUgY2FsZW5kYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkNhbGVuZGFyIG9mIGNvbnRhY3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzciIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Zb3VyIGNvbnRhY3RzIG5lZWQgdG8gYXBwcm92ZSB5b3UgZmlyc3QgdG8gYmUgYWJsZSB0byBzZWUgdGhlaXIgY2FsZW5kYXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzgiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IHN0b3JlIG9yIGRlbGV0ZSBldmVudHMgZnJvbSBvdGhlciBjYWxlbmRhcnMgdGhlbiB5b3VyIG93biE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3OSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlNob3cgbXkgb3duIGNhbGVuZGFyIGFnYWluITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgwIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhpcyBldmVudCBpcyBjb25uZWN0ZWQgdG8gc2V2ZXJhbCBjYWxlbmRhcnMgb2Ygb3RoZXIgdXNlcnMuIFlvdXIgYWN0aW9uIHdpbGwgYWxzbyBkZWxldGUgdGhlIGV2ZW50IGZyb20gdGhlaXIgY2FsZW5kYXIuIFdvdWxkIHlvdSByZWFsbHkgbGlrZSB0byBkZWxldGUgdGhlIGV2ZW50PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgxIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Q29uZmlybSBhY3Rpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4MiIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPkVudGVyIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4MyIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPkFjY2VzcyB0aGUgY29uZmVyZW5jZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGEgY29uZmVyZW5jZSByb29tIGFuZCBldmVudCBib29rZWQgd2l0aCB0aGlzIHByaXZhdGUgbWVzc2FnZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NSIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPllvdSBuZWVkIHRvIHN0b3JlIHRoZSBldmVudCBmaXJzdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NiIgbmFtZT0iYWNjZXNzIHJvb21zIGVycm9yIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgbm8gc3VjaCByb29tIGF2YWlsYWJsZS4gVGhlIGV2ZW50IGluIHRoZSBjYWxlbmRhciBhbmQgY29ubmVjdGVkIHJvb20gaXMgYWxyZWFkeSBkZWxldGVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg3IiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5DaG9vc2UgeW91ciBuaWNrbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg4IiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5GaXJzdG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4OSIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+TGFzdG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MCIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+RW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MSIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+T2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MiIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+TWluaW11bSBsZW5ndGggNCBjaGFycyEgRm9yIGJvdGgsIGZpcnN0bmFtZSBhbmQgbGFzdG5hbWUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTMiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIHZhbGlkIGVtYWlsITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk0IiBuYW1lPSJhdXRoIGZyb20iPgorICAgIDx2YWx1ZT5GYWNlYm9vazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk1IiBuYW1lPSJhdXRoIGZvcm0iPgorICAgIDx2YWx1ZT5Mb2dpbiB3aXRoIHlvdXIgRmFjZWJvb2sgYWNjb3VudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk2IiBuYW1lPSJ2aWV3IHByb2ZpbGUiPgorICAgIDx2YWx1ZT5NZW1iZXIgc2luY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5NyIgbmFtZT0iZGlyZWN0IGxvZ2luIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Zb3UndmUgbG9nZ2VkIHdpdGggeW91ciBGYWNlYm9vayBhY2NvdW50LiBZb3Ugc2hvdWxkIHVwZGF0ZSB5b3VyIHByb2ZpbGUgd2l0aCB0aGUgY29ycmVjdCBlbWFpbC4gT3RoZXJ3aXNlIHlvdSB3aWxsIG5vdCByZWNlaXZlIGludml0YXRpb25zIGFuZCBwcml2YXRlIG1lc3NhZ2VzIGZyb20gb3RoZXIgdXNlcnMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTgiIG5hbWU9ImRpcmVjdCBsb2dpbiBtZXNzYWdlIGhlYWRlciI+CisgICAgPHZhbHVlPk1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5OSIgbmFtZT0iZGlyZWN0IGxvZ2luIG1lc3NhZ2UgY2hlY2tib3ggY29udHJvbCI+CisgICAgPHZhbHVlPkRvIG5vdCBzaG93IHVwZGF0ZSBwcm9maWxlIG1lc3NhZ2UgYWdhaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMCIgbmFtZT0icHJvZmlsZSBzZXR0aW5ncyBidXR0b24iPgorICAgIDx2YWx1ZT5tb3JlIGRpc3BsYXkgb3B0aW9ucyAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TmV3IHByaXZhdGUgbWVzc2FnZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2xpY2sgaGVyZSB0byB2aXNpdCB5b3VyIHByb2ZpbGUgdG8gc2VlIHRoZSBmdWxsIG1lc3NhZ2UgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlJlcGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPlJvb21zIGFuZCBjaGF0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA1IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5NeSByb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA2IiBuYW1lPSJteSByb29tcyI+CisgICAgPHZhbHVlPk15IGNvbmZlcmVuY2Ugcm9vbSAoZm9yIDEtMTYgdXNlcnMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDciIG5hbWU9Im15IHJvb21zIj4KKyAgICA8dmFsdWU+TXkgd2ViaW5hciByb29tIChmb3IgMS0xMjAgdXNlcnMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDgiIG5hbWU9InJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5Pd25lciBJZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA5IiBuYW1lPSJsb2dpbiBlcnJvciI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIHBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTAiIG5hbWU9ImxvZ2luIGVycm9yIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgYW4gYWNjb3VudCB3aXRoIFVzZXItTGV2ZWwgVXNlciwgTW9kZXJhdG9yIG9yIEFkbWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTEiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5XZWItU2VydmljZSAob25seSBhY2Nlc3MgdmlhIFNPQVApPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTIiIG5hbWU9InVwbG9hZCBmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+RG8gZGlyZWN0bHkgbG9hZCB0byB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTMiIG5hbWU9IndoaXRlYm9hcmQgY2xvc2UgY29uZmlybWF0aW9uIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIHJlbW92ZSB0aGlzIHdoaXRlYm9hcmQ/IFRoaXMgYWN0aW9uIGNhbm5vdCBiZSB1bmRvbmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTQiIG5hbWU9IndoaXRlYm9hcmQgbG9hZCBXTUwiPgorICAgIDx2YWx1ZT5Mb2FkIHRvIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxNSIgbmFtZT0icmVjb3JkaW5nIGZsYWciPgorICAgIDx2YWx1ZT5EbyBub3QgZm9yZ2V0IHN0YXJ0IHJlY29yZGluZyEgT25lIHVzZXIgcGVyIHJvb20gYWx3YXlzIG5lZWRzIHRvIHN0YXJ0IGl0IHRvIGhhdmUgdGhlIHJlY29yZGluZyBhZnRlcndhcmRzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE2IiBuYW1lPSJyZWNvcmRpbmcgZmxhZyI+CisgICAgPHZhbHVlPlN0YXJ0IFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE3IiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPkFycm93PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTgiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+Q2lyY2xlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTkiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+TGluZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIwIiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPlNxdWFyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIxIiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPlRyaWFuZ2xlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjIiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5UZXh0L05vdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyMyIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkNsaXBhcnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjQiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5EcmF3IEZyZWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNSIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlNlbGVjdC9Nb3ZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjYiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5EcmF3IFNoYXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjciIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5DdXQvTW92ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI4IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+Wm9vbSBJbi9PdXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyOSIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlByaW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzAiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5VbmRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzEiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5UcmFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMyIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+QWRkIEdyaWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMyIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlNoYXJlIEZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNCIgbmFtZT0iaWNvbiBzdWJtZW51Ij4KKyAgICA8dmFsdWU+U2VsZWN0IFNoYXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzUiIG5hbWU9Imljb24gc3VibWVudSI+CisgICAgPHZhbHVlPlNlbGVjdCBDbGlwYXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzYiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5Db3B5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzciIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5DdXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzOCIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPlBhc3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzkiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5EZWxldGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MCIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhlIGNvbXBsZXRlIGNvbnRlbnQgb24gdGhlIHdoaXRlYm9hcmQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDEiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5Mb2FkIGRpcmVjdGx5IHRvIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MiIgbmFtZT0iYXR0ZW5kZWVzIj4KKyAgICA8dmFsdWU+QXR0ZW5kZWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDMiIG5hbWU9ImF0ZW5kZWUgbWFuYWdlciI+CisgICAgPHZhbHVlPkF0dGVuZGVlIE1hbmFnZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NCIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+UHJlc2VudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ1IiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5SZW1vdGUgQ29udHJvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NiIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+RWplY3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NyIgbmFtZT0iY2hhdCI+CisgICAgPHZhbHVlPkNoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0OCIgbmFtZT0iaW52aXRlIGF0dGVuZGVlIj4KKyAgICA8dmFsdWU+SW52aXRlIEF0dGVuZGVlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ5IiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5CeSBFbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUwIiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5Vc2VyIGlzIG1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUxIiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5Vc2VyIGhhcyB3ZWJjYW0gc3dpdGNoZWQgb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1MiIgbmFtZT0iZmlsbF9vcHRpb24iPgorICAgIDx2YWx1ZT5EZWFjdGl2YXRlIHNoYXBlIGZpbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1MyIgbmFtZT0iZmlsbF9vcHRpb24iPgorICAgIDx2YWx1ZT5BY3RpdmF0ZSBzaGFwZSBmaWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTQiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5TbmFwIHRvIEdyaWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NSIgbmFtZT0iYWxsb3dfcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QWxsb3cgcmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTYiIG5hbWU9IndhaXRfZm9yX3JlY29yZGluZyI+CisgICAgPHZhbHVlPldhaXQgZm9yIHJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU3IiBuYW1lPSJoaWRlX3RvcF9iYXIiPgorICAgIDx2YWx1ZT5IaWRlIHRvcGJhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU4IiBuYW1lPSJmaWxlRXhwbG9yZXIiPgorICAgIDx2YWx1ZT5QbGF5IHZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTkiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoZSBjb250ZW50IG9uIHRoZSBjdXJyZW50IHNsaWRlPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYwIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT5BY2NlcHQgYW5kIGdyYW50IHVzZXIgcmlnaHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2MSIgbmFtZT0iYWN0aXZpdHlfd2luZG93Ij4KKyAgICA8dmFsdWU+RGVueTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYyIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT5JPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjMiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPkFjdGl2aXRpZXMgYW5kIGFjdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NCIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPlJlbW92ZSB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjUiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0aGUgbW9kZXJhdGlvbiBvciB0aGUgcmlnaHQgdG8gZHJhdyBvbiB0aGUgd2hpdGVib2FyZCB0byByZW1vdmUgd2hpdGVib2FyZHMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjYiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5Ob3QgYWxsb3dlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY3IiBuYW1lPSJ1c2VyX2xlZnRfYWN0X21zZyI+CisgICAgPHZhbHVlPmhhcyBsZWZ0IHRoZSByb29tLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY4IiBuYW1lPSJjbGlwYXJ0IGljb25zIj4KKyAgICA8dmFsdWU+TWF0aCBpY29uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY5IiBuYW1lPSJjbGlwYXJ0IGljb25zIj4KKyAgICA8dmFsdWU+Tm8gY2F0ZWdvcnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MCIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+Q29sb3ItU3R5bGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+UXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzcyIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5Eb21haW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MyIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+dmlzaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NCIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+cmVkb3JhbmdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzUiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPm1lZGl1bXNlYWdyZWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzYiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnN0ZWVsYmx1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc3IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5saWdodHN0ZWVsYmx1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc4IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5nb2xkZW5yZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3OSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+c2lsdmVyZ3JheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgwIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT51c2VyZGVmaW5lZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgxIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5iZXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODIiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnVwbG9hZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgzIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5tZWRpdW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NCIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg1IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5Vbm11dGUgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg2IiBuYW1lPSJnaXZlIGV4Y2x1c2l2ZSBhdWRpbyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBvZiBvdGhlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NyIgbmFtZT0ibXV0ZSBzZWxmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGdsb2JhbGx5IG11dGVkIGJ5IHRoZSBtb2RlcmF0b3IuIFlvdSBjYW5ub3QgdW5tdXRlIHlvdXJzZWxmITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg4IiBuYW1lPSJtdXRlIHNlbGYgY29uZmlybSBtZXNzYWdlIHRpdGxlIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg5IiBuYW1lPSJtdXRlIHNlbGYgY29uZmlybSBtZXNzYWdlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gbXV0ZSB5b3Vyc2VsZiBnbG9iYWxseT8gTm8gb3RoZXIgdXNlciB3aWxsIGhlYXIgeW91IGFueW1vcmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTAiIG5hbWU9Im11dGUgb3RoZXJzIGNvbmZpcm0gbWVzc2FnZSB0aXRsZSI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBsb2NhbGx5PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkxIiBuYW1lPSJtdXRlIG90aGVycyBjb25maXJtIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gbXV0ZSB0aGlzIG1pY3JvcGhvbmU/IFlvdSBjYW4gb25seSBtdXRlIGl0IGxvY2FsbHkgb24geW91ciBzY3JlZW4uIEl0IGhhcyBubyBlZmZlY3QgdG8gaG93IG90aGVyIHVzZXJzIGhlYXIgdGhpcyB1c2VyLiBPbmx5IG1vZGVyYXRvcnMgY2FuIHR1cm4gaXQgb2ZmIGdsb2JhbGx5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkyIiBuYW1lPSJtdXRlIG90aGVycyBjb25maXJtIG1lc3NhZ2UgdGl0bGUiPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgb2ZmIGdsb2JhbGx5PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkzIiBuYW1lPSJtdXRlIG90aGVycyBtb2RlcmF0b3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBtdXRlIHRoaXMgdXNlciBnbG9iYWxseT8gTm8gb3RoZXIgdXNlciB3aWxsIGhlYXIgaGltIGFueW1vcmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTQiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+WW91ciBzb3VuZCBpcyBvbi4gQ2xpY2sgaGVyZSB0byBzZW5kIG1vZGVyYXRvciBtZXNzYWdlIHRvIG11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5IChpbiB0aGUgY29tcGxldGUgY29uZmVyZW5jZSByb29tKSBvZmYhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTUiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+WW91ciBzb3VuZCBpcyBvZmYuIENsaWNrIGhlcmUgdG8gc2VuZCBtb2RlcmF0b3IgbWVzc2FnZSB0byB1bm11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5IChpbiB0aGUgY29tcGxldGUgY29uZmVyZW5jZSByb29tKSBvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5NiIgbmFtZT0ibXV0ZSBhcHBseSBzZWxmIG9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRoYXQgdGhlIG1vZGVyYXRvciBtdXRlcyBteSBtaWNyb3Bob25lIGdsb2JhbGx5LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk3IiBuYW1lPSJtdXRlIGFwcGx5IHNlbGYgb2ZmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRoYXQgdGhlIG1vZGVyYXRvciB1bm11dGVzIG15IG1pY3JvcGhvbmUgZ2xvYmFsbHkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTgiIG5hbWU9Im11dGUgYXBwbHkgb2YgbWVzc2FnZSI+CisgICAgPHZhbHVlPndhbnQgdGhhdCB0aGUgbW9kZXJhdG9yIHVubXV0ZXMgaGlzL2hlciBtaWNyb3Bob25lLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk5IiBuYW1lPSJtdXRlIGFwcGx5IG9mIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53YW50IHRoYXQgdGhlIG1vZGVyYXRvciBtdXRlcyBoaXMvaGVyIG1pY3JvcGhvbmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDAiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+VW5tdXRlIG1pY3JvcGhvbmUuIENsaWNrIGhlcmUgdG8gbXV0ZSBoaXMvaGVyIG1pY3JvcGhvbmUgZ2xvYmFsbHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDEiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lLiBDbGljayBoZXJlIHRvIHVubXV0ZSBoaXMvaGVyIG1pY3JvcGhvbmUgZ2xvYmFsbHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDIiIG5hbWU9Im11dGUgc2VsZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhpcyB1c2VyIGlzIGdsb2JhbGx5IG11dGVkIGJ5IHRoZSBtb2RlcmF0b3IuIFlvdSBjYW5ub3QgdW5tdXRlIGhpbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMyIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDQiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSB5b3VyIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwNSIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA2IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5Vbm11dGUgbWljcm9waG9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA3IiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDgiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDkiIG5hbWU9Im11dGUgbW9kZXJhdG9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Pbmx5IG1vZGVyYXRvcnMgY2FuIG11dGUgb3IgdW5tdXRlIGFuIHVzZXIgZ2xvYmFsbHkhIFRvIG11dGUgeW91ciBvd24gbWljcm9waG9uZTogUGxlYXNlIHVzZSB0aGUgbWljcm9waG9uZSBpY29uIGluIHlvdXIgdmlkZW8gcG9kITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDEwIiBuYW1lPSJwb2xsX25hbWUiPgorICAgIDx2YWx1ZT5Qb2xsIE5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMSIgbmFtZT0icG9sbF9uYW1lIj4KKyAgICA8dmFsdWU+WW91PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTIiIG5hbWU9ImFyY2hpdmVkX3BvbGxzIj4KKyAgICA8dmFsdWU+QXJjaGlldmVkIFBvbGxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTMiIG5hbWU9ImFjdGl2ZV9wb2xsIj4KKyAgICA8dmFsdWU+YWN0aXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTQiIG5hbWU9ImNoYXJ0X3NpbXBsZSI+CisgICAgPHZhbHVlPlNpbXBsZSBDaGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE1IiBuYW1lPSJjaGFydF9waWUiPgorICAgIDx2YWx1ZT5QaWUgQ2hhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNiIgbmFtZT0ic2lnbl91cF92YWxpZGF0aW9uIj4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTciIG5hbWU9ImNoYXRfbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+TmV3IG1lc3NhZ2Uocyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxOCIgbmFtZT0icG9sbF9jbG9zZSI+CisgICAgPHZhbHVlPkNsb3NlIFBvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxOSIgbmFtZT0icG9sbF9jbG9zZV9jb25maXJtIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNsb3NlIHRoaXMgUG9sbD8gTm8gb25lIHdpbGwgYmUgYWJsZSB0byB2b3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjAiIG5hbWU9InBvbGxfZGVsZXRlIj4KKyAgICA8dmFsdWU+RGVsZXRlIFBvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMSIgbmFtZT0icG9sbF9kZWxldGVfY29uZmlybSI+CisgICAgPHZhbHVlPkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBQb2xsPyBUaGUgcmVzdWx0cyB3aWxsIGJlIGRlbGV0ZWQgYXMgd2VsbC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMiIgbmFtZT0ibGFuZ3VhZ2VfY29kZSI+CisgICAgPHZhbHVlPkxhbmd1YWdlIElTTyBDb2RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjMiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19wZXJtaXNzaW9uIj4KKyAgICA8dmFsdWU+QWxsb3cvRGVueSByaWdodCB0byBnaXZlIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNCIgbmFtZT0iYWxsb3dfZXhjbHVzaXZlX2F1ZGlvX3Blcm1pc3Npb24iPgorICAgIDx2YWx1ZT5BbGxvdyB1c2VyIHRvIGdpdmUgZXhjbHVzaXZlIGF1ZGlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjUiIG5hbWU9ImRlbnlfZXhjbHVzaXZlX2F1ZGlvX3Blcm1pc3Npb24iPgorICAgIDx2YWx1ZT5EZW55IHVzZXIgdG8gZ2l2ZSBleGNsdXNpdmUgYXVkaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNiIgbmFtZT0iZXhjbF9hdWRpbyBhcHBseSBzZWxmIG9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGdldCBhIHBlcm1pc3Npb24gZm9yIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNyIgbmFtZT0iZXhjbF9hdWRpbyBhcHBseSBvZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+d2FudCB0aGF0IHRoZSBtb2RlcmF0b3IgZ2l2ZXMgbWUgYSBwZXJtaXNzaW9uIGZvciBleGNsdXNpdmUgYXVkaW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjgiIG5hbWU9ImV4Y2xfYXVkaW8gc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+R2l2ZSBhIHBlcm1pc3Npb24gZm9yIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyOSIgbmFtZT0iY2FtX3Jlc29sdXRpb24iPgorICAgIDx2YWx1ZT5DYW0gcmVzb2x1dGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMwIiBuYW1lPSJjYW1fcmVzb2x1dGlvbl9pbmZvIj4KKyAgICA8dmFsdWU+Q2hhbmdpbmcgdGhlIHJlc29sdXRpb24gYWZmZWN0cyBiYW5kd2lkdGgsIGJpZ2dlciBwaWN0dXJlIG5lZWRzIG1vcmUgYmFuZHdpdGghPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzEiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19lcnJvciI+CisgICAgPHZhbHVlPllvdSBkb24ndCBoYXZlIHRoZSByaWdodCB0byBnaXZlIHlvdXJzZWxmIG9yIG90aGVycyBleGNsdXNpdmUgYXVkaW8uIFlvdSBuZWVkIHRvIGFwcGx5IGZvciB0aGUgcmlnaHQgZnJvbSB0aGUgbW9kZXJhdG9yIG9yIGFzayB0aGUgbW9kZXJhdG9yIHRvIGdpdmUgeW91IGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzMiIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2FzayI+CisgICAgPHZhbHVlPkkgd291bGQgbGlrZSB0byBnZXQgdGhlIHJpZ2h0IGZvciBleGNsdXNpdmUgYXVkaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzMyIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2FjdGlvbiI+CisgICAgPHZhbHVlPkdpdmUgZXhjbHVzaXZlIGF1ZGlvIHRvIG1lIChhbHRlcm5hdGl2ZWx5IGNsaWNrIG9uIHlvdXIgdmlkZW8gcG9kIG9yIHByZXNzIEYxMik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNCIgbmFtZT0ibWljcm8gaXMgb24iPgorICAgIDx2YWx1ZT5NaWNyb3Bob25lIGlzIG9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM1IiBuYW1lPSJtaWNybyBpcyBvZmYiPgorICAgIDx2YWx1ZT5NaWNyb3Bob25lIGlzIG11dGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzYiIG5hbWU9ImhpZGVfY2hhdCI+CisgICAgPHZhbHVlPkhpZGUgY2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM3IiBuYW1lPSJoaWRlX2FjdGl2aXRpZXNfYW5kX2FjdGlvbnMiPgorICAgIDx2YWx1ZT5IaWRlIGFjdGl2aXRpZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzOCIgbmFtZT0iaGlkZV9maWxlc19leHBsb3JlciI+CisgICAgPHZhbHVlPkhpZGUgZmlsZXMgZXhwbG9yZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzOSIgbmFtZT0iaGlkZV9hY3Rpb25zX21lbnUiPgorICAgIDx2YWx1ZT5IaWRlIGFjdGlvbnMgbWVudTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQwIiBuYW1lPSJoaWRlX3NjcmVlbl9zaGFyaW5nIj4KKyAgICA8dmFsdWU+SGlkZSBzY3JlZW4gc2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQxIiBuYW1lPSJoaWRlX3doaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5IaWRlIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MiIgbmFtZT0ic2hvdyBtaWNyb3Bob25lIHN0YXR1cyI+CisgICAgPHZhbHVlPlNob3cgbWljcm8gc3RhdHVzIGluIHZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDMiIG5hbWU9ImxheW91dF9vcHRpb25zIj4KKyAgICA8dmFsdWU+TGF5b3V0IG9wdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0NCIgbmFtZT0iY2FsZW5kYXIgbmV3IGJ1dHRvbiI+CisgICAgPHZhbHVlPk5ldyBFdmVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ1IiBuYW1lPSJjYWxlbmRhciBwYXNzd29yZCBpbmZvIHRleHQiPgorICAgIDx2YWx1ZT5QYXNzd29yZCBwcm90ZWN0ZWQgYXJlIHRoZSBsaW5rcyB0byB0aGUgY29uZmVyZW5jZSB0aGF0IGFyZSBzZW5kIHRvIHRoZSBwYXJ0aWNpcGVudHMgd2hlbiB5b3Ugc2F2ZSB0aGUgY2FsZW5kYXIgZXZlbnQsIG5vdCB0aGUgcm9vbSEgVGhhdCBtZWFucyBpZiB5b3Ugc2F2ZSB0aGUgZXZlbnQgbXVsdGlwbGUgdGltZXMgYnV0IHdpdGggZGlmZmVyZW50IHBhc3N3b3JkcyBldmVyeSBwYXJ0aWNpcGVudCByZWNlaXZlcyBhIG5ldyBsaW5rIHRoYXQgaGFzIGEgZGlmZmVyZW50IHBhc3N3b3JkLiBCdXQgb2xkIGxpbmtzIHN0aWxsIHdvcmsgb25jZSBzZW5kITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ2IiBuYW1lPSJjYWxlbmRhciBlZGl0IGJ1dHRvbiI+CisgICAgPHZhbHVlPkVkaXQgZGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ3IiBuYW1lPSJzaXAgc2hvdyBkaWFsZXIiPgorICAgIDx2YWx1ZT5TaG93IHNpcCBkaWFsZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0OCIgbmFtZT0ic2lwIGNhbGwiPgorICAgIDx2YWx1ZT5DYWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDkiIG5hbWU9ImNhbGVuZGFyIGNvbnRhY3QgbGlzdCI+CisgICAgPHZhbHVlPlNob3cgY2FsZW5kYXIgZXZlbnRzIG9mIGNvbnRhY3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+WW91ciBob21lITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUxIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5QbGFuIHlvdXIgbWVldGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MiIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+V2F0Y2ggcmVjb3JkaW5nIGFuZCBpbnRlcnZpZXdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTMiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPkNob29zZSBhbmQgc3RhcnQgYSB3ZWItY29uZmVyZW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU0IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgdXNlcnMgYW5kIHJpZ2h0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU1IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgY29ubmVjdGlvbnMgYW5kIGtpY2sgdXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1NiIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIHVzZXJncm91cHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1NyIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIGNvbmZlcmVuY2Ugcm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1OCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIHN5c3RlbSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU5IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgbGFiZWxzIGFuZCB3b3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjAiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBMREFQIGFuZCBBRFMgY29uZmlndXJhdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MSIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+RXhwb3J0L0ltcG9ydCBTeXN0ZW0gQmFja3VwczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYyIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgbW9kZXJhdGlvbiBvciB0aGUgcmlnaHQgdG8gZHJhdyBvbiB3aGl0ZWJvYXJkIHRvIHVwbG9hZCwgYWRkLCBkZWxldGUgb3IgbG9hZCBmaWxlcyBhbmQgZm9sZGVycy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MyIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkVkaXQgdGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY0IiBuYW1lPSJzYWx1dGF0aW9uIj4KKyAgICA8dmFsdWU+UHJvZjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY1IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlB1Ymxpc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2NiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdGFydCBQdWJsaXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjciIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U3RvcCBQdWJsaXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+SG9zdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY5IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlB1Ymxpc2ggQXBwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzAiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UHVibGlzaCBJZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDcxIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHVjZSB0aGUgd2lkdGggb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbW92ZSBpdCBsZWZ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzIiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UmVkdWNlIHRoZSBoZWlnaHQgb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbW92ZSBpdCBib3R0b208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5SZWR1Y2UgdGhlIHggb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbWFrZSBpdCB3aWRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc0IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHVjZSB0aGUgeSBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtYWtlIGl0IGhpZ2hlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc1IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkZpbGwgdGhlc2Ugc2V0dGluZ3Mgc3RyZWFtIHlvdXIgc2NyZWVuIGRhdGEgdG8gM3RoIHBhcnR5IHByb3ZpZGVycyBsaWtlIGp1c3Rpbi50djwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc2IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlBsZWFzZSBzdGFydCBTY3JlZW4gc2hhcmluZyB0byBiZSBhYmxlIHRvIHB1Ymxpc2ggaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3NyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5Nb2RlcmF0b3IgcGVybWlzc2lvbiByZXF1aXJlZCB0byBzdGFydCByZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3OCIgbmFtZT0ibm8gcmlnaHQgZm9yIGV4Y2x1c2l2ZSBhdWRpbyI+CisgICAgPHZhbHVlPllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gYXBwbHkgZXhjbHVzaXZlIGF1ZGlvIHRvIGFueSBwYXJ0aWNpcGFudC4gWW91IG5lZWQgbW9kZXJhdGlvbiByb2xlIG9yIHRoZSByaWdodCBmb3IgZXhjbHVzaXZlIGF1ZGlvIHRvIG1ha2UgYW55IG1pY3JvcGhvbmUgZXhjbHVzaXZlIHR1cm5lZCBvbi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzkiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlVwbG9hZCBuZXcgZmlsZSB0byBmaWxlIGV4cGxvcmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODAiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPk9wZW4gbmV3IGRpYWxvZyB3aXRoIHNoYXJpbmcgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+QW4gZXhpc3RpbmcgbW9kZXJhdG9yIG11c3QgYXBwcm92ZSBpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgyIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5Bc2sgbW9kZXJhdG9yIHRvIHNoYXJlIHlvdXIgd2ViY2FtL21pY3JvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODMiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkdhdGhlciBmZWVkYmFjayBieSBjcmVhdGluZyBhIHBvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+UGFzdCBhbmQgY3VycmVudCBwb2xsIHJlc3VsdHMgYXMgY2hhcnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODUiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlZvdGUgaWYgdGhlcmUgaXMgYSBwb2xsIGZvciB0aGlzIGNvbmZlcmVuY2Ugcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg2IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5FZGl0IGNhbSBhbmQgbWljIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODciIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkNvbmZpcm0gYW5kIGxlYXZlIHRoZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODgiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkNhbGwgZXh0ZXJuYWwgcGVvcGxlIHZpYSBWb0lQL1NJUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg5IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5TZW5kIGFuIGVtYWlsIHdpdGggYSBkaXJlY3QgbGluayB0byB0aGlzIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Q2hhbmdlIHlvdXIgd2hpdGVib2FyZCBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkxIiBuYW1lPSJiYWNrdXAgYWRtaW4iPgorICAgIDx2YWx1ZT5NYXggdXBsb2FkIHNpemU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MiIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+QXNrIG1vZGVyYXRvciB0byBzaGFyZSB5b3VyIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MyIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+U3RhcnQgUHJpdmF0ZSBDaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTQiIG5hbWU9ImFsbF9wcml2YXRlX2NoYXQiPgorICAgIDx2YWx1ZT5BbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NSIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBzdGFydCBhIHByaXZhdGUgY2hhdCB3aXRoIHlvdXJzZWxmLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk2IiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5Zb3UndmUgYWxyZWFkeSBzdGFydGVkIGEgcHJpdmF0ZSBjaGF0IHdpdGggdGhpcyBwYXJ0aWNpcGFudC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NyIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHByaXZhdGUgY2hhdD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5OCIgbmFtZT0iU2VydmVycyI+CisgICAgPHZhbHVlPlNlcnZlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5OSIgbmFtZT0iU2VydmVycyI+CisgICAgPHZhbHVlPlNlcnZlcnMgcGFydGljaXBhdGluZyBpbiBjbHVzdGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDAiIG5hbWU9IlNlcnZlciBuYW1lIj4KKyAgICA8dmFsdWU+U2VydmVyIE5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMSIgbmFtZT0iU2VydmVyIEFkZHJlc3MiPgorICAgIDx2YWx1ZT5TZXJ2ZXIgQWRkcmVzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAyIiBuYW1lPSJTZXJ2ZXIgZGV0YWlscyI+CisgICAgPHZhbHVlPlNlcnZlciBkZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDMiIG5hbWU9IlNlbmQgU01TIj4KKyAgICA8dmFsdWU+U2VuZCBTTVM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNCIgbmFtZT0icHVibGlzaGluZ19tZXNzYWdlIj4KKyAgICA8dmFsdWU+UHVibGlzaGluZy4gVXNlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNSIgbmFtZT0iY21kX2xpbmVfYWRtaW4iPgorICAgIDx2YWx1ZT5UbyBzYXZlIHRpbWUgYW5kIGludGVybmV0IHRyYWZmaWMgeW91IGNhbiB1c2UgY29tbWFuZCBsaW5lIGFkbWluIHRvIGJhY2t1cC9yZXN0b3JlL3VwZ3JhZGU6XG4gMSkgZ28gdG8gT00gaW5zdGFsbCBkaXIgKGZvciBleC4gL29wdC9yZWQ1KSBcbiAyKSBzdG9wIE9NIChmb3IgZXguIC4vcmVkNS1zaHV0ZG93bi5zaClcbiAzKSAuL2FkbWluLnNoIC1iIC1maWxlIH4vdG9kYXlfb21fYmFja3VwLnppcCAoY3JlYXRlIGJhY2t1cCBvZiBjdXJyZW50IE9NKVxuIDQpIGRvd25sb2FkIGFyY2hpdmUgd2l0aCBuZXcgT01cbiA1KSBtdiAvb3B0L3JlZDUgL29wdC5yZWQ1LmJhayAobW92ZSB3b3JraW5nIHZlcnNpb24gb2YgT00ganVzdCBpbiBjYXNlIDopKVxuIDYpIGV4dHJhY3QgZG93bmxvYWRlZCBPTSB0byB0aGUgL29wdC9yZWQ1XG4gNykgLi9hZG1pbi5zaCAtaSAtZmlsZSB+L3RvZGF5X29tX2JhY2t1cC56aXAgKG9yICcuL2FkbWluLnNoIC1pIC1maWxlIH4vdG9kYXlfb21fYmFja3VwLnppcCAtLWRiLXR5cGUgbXlzcWwgLS1kYi11c2VyIG9tX3VzZXIgLS1kYi1wYXNzIG9tX3VzZXJfcGFzcycgaW4gY2FzZSBvZiB5b3UgYXJlIHVzaW5nIG5vbi1kZWZhdWx0IERCIClcbiA4KSBzdGFydCBPTVxuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDYiIG5hbWU9InB1YmxpY19yb29tX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5Sb29tcyBjb21tb24gdG8gYWxsIHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNyIgbmFtZT0icHJpdmF0ZV9yb29tX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5Sb29tcyBjb21tb24gdG8gdGhlIGN1cnJlbnQgdXNlciBncm91cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA4IiBuYW1lPSJteV9yb29tX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5Sb29tcyBvZiB0aGUgY3VycmVudCB1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDkiIG5hbWU9ImNyZWF0ZV9uZXdfcm9vbSI+CisgICAgPHZhbHVlPkNyZWF0ZS9Nb2RpZnkgYXBwb2ludG1lbnQgc3BlY2lhbCByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTAiIG5hbWU9Im11bHRpcGxlX2FkZHJlc3NlcyI+CisgICAgPHZhbHVlPllvdSBjYW4gZW50ZXIgbXVsdGlwbGUgYWRkcmVzc2VzIGluIHRoZSBmb3JtYXQ6IGZpcnN0bmFtZTEgbGFzdG5hbWUxICZsdDtlbWFpbDEmZ3Q7LCJmaXJzdG5hbWUyIGxhc3RuYW1lMiIgJmx0O2VtYWlsMiZndDssJ2ZpcnN0bmFtZTMgbGFzdG5hbWUzJyAmbHQ7ZW1haWwzJmd0OywgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTEiIG5hbWU9InN0cmVhbV92b2x1bWUiPgorICAgIDx2YWx1ZT5BZGp1c3Qgc3RyZWFtIHZvbHVtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTEyIiBuYW1lPSJtaWNyb3Bob25lX3ZvbHVtZSI+CisgICAgPHZhbHVlPkFkanVzdCBtaWNyb3Bob25lIHZvbHVtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTEzIiBuYW1lPSJjaGF0X21vZGVyYXRlZCI+CisgICAgPHZhbHVlPklzIGNoYXQgbW9kZXJhdGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTQiIG5hbWU9ImNoYXRfbW9kZXJhdGVkIj4KKyAgICA8dmFsdWU+QWxsb3cgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE1IiBuYW1lPSJjaGF0X29wZW5lZCI+CisgICAgPHZhbHVlPkNoYXQgcGFuZWwgb3BlbmVkIGJ5IGRlZmF1bHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNiIgbmFtZT0iZmlsZXNfb3BlbmVkIj4KKyAgICA8dmFsdWU+RmlsZXMgcGFuZWwgb3BlbmVkIGJ5IGRlZmF1bHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNyIgbmFtZT0ic2VydmVyIGFkbWluIHNlY3Rpb24gbGFzdHBpbmciPgorICAgIDx2YWx1ZT5MYXN0IHBpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxOCIgbmFtZT0ic2VydmVyIGFkbWluIHNlY3Rpb24gbGFzdHBpbmcgaW5mbyI+CisgICAgPHZhbHVlPkV2ZXJ5IHNsYXZlIHNlbmRzIGEgcGluZyB0byB0aGUgbWFzdGVyIGV2ZXJ5IDMgc2Vjb25kcyAoY29uZmlndXJhYmxlKS4gU2xhdmUgbGFzdFBpbmcgbXVzdCBiZSBzbWFsbGVyIHRoZW4gMSBtaW51dGUgc28gdGhhdCB0aGUgbWFzdGVyIHVzZXMgdGhlIHNsYXZlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE5IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcG9ydCI+CisgICAgPHZhbHVlPkhUVFAgUG9ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIwIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gdXNlciI+CisgICAgPHZhbHVlPlVzZXIgKFNPQVAtQWNjZXNzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIxIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcGFzc3dvcmQiPgorICAgIDx2YWx1ZT5QYXNzd29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIyIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gd2ViYXBwIHBhdGgiPgorICAgIDx2YWx1ZT5XZWJhcHAgcGF0aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIzIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcHJvdG9jb2wiPgorICAgIDx2YWx1ZT5Qcm90b2NvbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI0IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcGluZyBydW5uaW5nIj4KKyAgICA8dmFsdWU+UGluZyBydW5uaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjUiIG5hbWU9InNlcnZlciBhZG1pbiBhY3RpdmUiPgorICAgIDx2YWx1ZT5BY3RpdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyNiIgbmFtZT0iZ2VuZXJhdGVfaGFzaCI+CisgICAgPHZhbHVlPkdlbmVyYXRlIFVSTDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI3IiBuYW1lPSJuZXR3b3JrIHRlc3RpbmcgbGluayI+CisgICAgPHZhbHVlPk5ldHdvcmsgdGVzdGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI4IiBuYW1lPSJyb29tX29wdGlvbnMiPgorICAgIDx2YWx1ZT5BdXRvIHNlbGVjdCBpbnRlcnZpZXcgdmlkZW8gcG9kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjkiIG5hbWU9ImZvbnRfdW5kZXJsaW5lIj4KKyAgICA8dmFsdWU+VW5kZXJsaW5lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzAiIG5hbWU9ImZvbnRfc3R5bGUiPgorICAgIDx2YWx1ZT5Gb250IHN0eWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzEiIG5hbWU9ImFsbG93X2ZvbnRfc3R5bGVzIj4KKyAgICA8dmFsdWU+QWxsb3cgZm9udCBzdHlsZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMiIgbmFtZT0iZm9udF9jb2xvciI+CisgICAgPHZhbHVlPkZvbnQgY29sb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMyIgbmFtZT0iaHlwZXJsaW5rIj4KKyAgICA8dmFsdWU+SHlwZXJsaW5rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzQiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW4iPgorICAgIDx2YWx1ZT5TaG93IHNlc3Npb24gc3RhdGlzdGljczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM1IiBuYW1lPSJjb25uZWN0aW9uIGFkbWluIj4KKyAgICA8dmFsdWU+U2Vzc2lvbiBkZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzYiIG5hbWU9InN5c3RlbV9pbXBvcnQiPgorICAgIDx2YWx1ZT5TeXN0ZW0gaW1wb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzciIG5hbWU9ImluY2x1ZGVfaW50b19iYWNrdXAiPgorICAgIDx2YWx1ZT5JbmNsdWRlIHVwbG9hZGVkIGZpbGVzIGFuZCByZWNvcmRpbmdzIGluIGJhY2t1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM4IiBuYW1lPSJyb29tX2FkbWluX3NpcCI+CisgICAgPHZhbHVlPkVuYWJsZSBTSVAgdHJhbnNwb3J0IGluIHRoZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzkiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19jb25maXJtIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIHByb3ZpZGUgdGhpcyB1c2VyIGFuIGV4Y2x1c2l2ZSBhdWRpbz88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU0MCIgbmFtZT0ibm9fdGltZXpvbmUiPgorICAgIDx2YWx1ZT5QbGVhc2Ugc3BlY2lmeSB5b3VyIHRpbWV6b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NDUiIG5hbWU9ImNvbnRlbnRfaXNfc2F2aW5nIj4KKyAgICA8dmFsdWU+Q29udGVudCBpcyBTYXZpbmcsIFBsZWFzZSB3YWl0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorPC9sYW5ndWFnZT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL2J1bGdhcmlhbi54bWwgYi9XZWJDb250ZW50L2xhbmd1YWdlcy9idWxnYXJpYW4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiMzFmMmIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L2xhbmd1YWdlcy9idWxnYXJpYW4ueG1sCkBAIC0wLDAgKzEsNDY1MiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKworPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworVGhpcyBGaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5IHRoZSBMYW5ndWFnZUVkaXRvciAKK3RvIGFkZCBuZXcgTGFuZ3VhZ2VzIG9yIG1vZGlmeS9jdXN0b21pemUgaXQgdXNlIHRoZSBMYW5ndWFnZUVkaXRvciAKK3NlZSBodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvTGFuZ3VhZ2VFZGl0b3IuaHRtbCBmb3IgRGV0YWlscyAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjLS0+Cis8bGFuZ3VhZ2UgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeG1sbnM6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbj0ibGFuZ3VhZ2UueHNkIj4KKyAgPHN0cmluZyBpZD0iMSIgbmFtZT0iY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPtCa0L7QvdGE0LXRgNC10L3RhtC40Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMiIgbmFtZT0ibWVldGluZyI+CisgICAgPHZhbHVlPtCh0YDQtdGJ0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMyIgbmFtZT0iY2xhc3Nyb29tIj4KKyAgICA8dmFsdWU+0JrQu9Cw0YHQvdCwINGB0YLQsNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQiIG5hbWU9InNldHRpbmdzIj4KKyAgICA8dmFsdWU+0J3QsNGB0YLRgNC+0LnQutC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUiIG5hbWU9ImJlbnV0emVyIj4KKyAgICA8dmFsdWU+0J/RgNC+0YTQuNC7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYiIG5hbWU9ImFkbWluIj4KKyAgICA8dmFsdWU+0JDQtNC80LjQvdC40YHRgtGA0LjRgNCw0L3QtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3IiBuYW1lPSJzdG9wIj4KKyAgICA8dmFsdWU+0KHRgtC+0L88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOCIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+0JfQsNC/0LjRgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5IiBuYW1lPSJub2ZpbGUiPgorICAgIDx2YWx1ZT7QndGP0LzQsCDQvdCw0LvQuNGH0LXQvSDRhNCw0LnQuzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMCIgbmFtZT0icmVjb3JkYnl0ZWFjaGVyIj4KKyAgICA8dmFsdWU+0JfQsNC/0LjRgSDQvtGCINGD0YfQuNGC0LXQuzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMSIgbmFtZT0iY29ubmVjdGVkdXNlcnMiPgorICAgIDx2YWx1ZT7QodCy0YrRgNC30LDQvdC4INC/0L7RgtGA0LXQsdC40YLQtdC70Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIiIG5hbWU9InN0YXJ0Y29uZiI+CisgICAgPHZhbHVlPtCX0LDQv9C+0YfQstCw0L3QtSDQvdCwINC60L7QvdGE0LXRgNC10L3RhtC40Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMiIG5hbWU9Im15bmFtZSI+CisgICAgPHZhbHVlPtCc0L7QtdGC0L4g0LjQvNC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0IiBuYW1lPSJ2aWRlb2NvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT7QktC40LTQtdC+0LrQvtC90YTQtdGA0LXQvdGG0LjRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNSIgbmFtZT0iaW1wb3J0Ij4KKyAgICA8dmFsdWU+0JrQsNGH0LLQsNC90LUg0L3QsCDRhNCw0LnQuzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNiIgbmFtZT0icmVmcmVzaGZpbGVzIj4KKyAgICA8dmFsdWU+0J7Qv9GA0LXRgdC90Y/QstCw0L3QtSDQvdCwINGB0L/QuNGB0YrQutCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3IiBuYW1lPSJ0b21haW5maWxlIj4KKyAgICA8dmFsdWU+0JrRitC8INCz0LvQsNCy0L3QsNGC0LAg0L/QsNC/0LrQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOCIgbmFtZT0ibmV3cG9sbCI+CisgICAgPHZhbHVlPtCd0L7QstCwINCw0L3QutC10YLQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOSIgbmFtZT0ibmV3cG9sbGhlYWRlciI+CisgICAgPHZhbHVlPtCd0L7QstCwINCw0L3QutC10YLQsCDQt9CwINC60L7QvdGE0LXRgNC10L3RhtC40Y/RgtCwLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMCIgbmFtZT0icXVlc3Rpb24iPgorICAgIDx2YWx1ZT7QktGK0L/RgNC+0YE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxIiBuYW1lPSJwb2xsdHlwZSI+CisgICAgPHZhbHVlPtCi0LjQvyDQsNC90LrQtdGC0LA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyIiBuYW1lPSJjcmVhdGUiPgorICAgIDx2YWx1ZT7QodGK0LfQtNCw0LLQsNC90LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMiIG5hbWU9ImluZm9tZXNzYWdlIj4KKyAgICA8dmFsdWU+0JjQvdGE0L46INCS0YHQtdC60Lgg0YHQstGK0YDQt9Cw0L0g0L/QvtGC0YDQtdCx0LjRgtC10Lsg0L/QvtC70YPRh9Cw0LLQsCDRgdGK0L7QsdGJ0LXQvdC40LUg0LfQsCDQvdC+0LLQsNGC0LAg0LDQvdC60LXRgtCwLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNCIgbmFtZT0iY3JlYXRwb2xsIj4KKyAgICA8dmFsdWU+0KHRitC30LTQsNCy0LDQvdC1INC90LAg0LDQvdC60LXRgtCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1IiBuYW1lPSJjYW5jZWwiPgorICAgIDx2YWx1ZT7QntGC0LrQsNC3PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2IiBuYW1lPSJ5ZXNubyI+CisgICAgPHZhbHVlPtCU0LAv0J3QtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNyIgbmFtZT0ibnVtZXJpYyI+CisgICAgPHZhbHVlPtCn0LjRgdC70L7QsiAxLTEwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4IiBuYW1lPSJwb2xsIj4KKyAgICA8dmFsdWU+0JDQvdC60LXRgtCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5IiBuYW1lPSJtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+0KLRgNGP0LHQstCwINC00LAg0YHRgtC1INC80L7QtNC10YDQsNGC0L7RgCwg0LfQsCDQtNCwINC00L7QsdCw0LLQuNGC0LUg0L3QvtCyINCy0YrQv9GA0L7RgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMCIgbmFtZT0idm90ZSI+CisgICAgPHZhbHVlPtCT0LvQsNGB0YrRgiDQktC4INC1INC+0YLRh9C10YLQtdC9LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMSIgbmFtZT0iYWxyZWFkeXZvdGVkIj4KKyAgICA8dmFsdWU+0JLQtdGH0LUg0YHRgtC1INCz0LvQsNGB0YPQstCw0LvQuCDQsiDQsNC90LrQtdGC0LDRgtCwLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMiIgbmFtZT0idm90aW5nIj4KKyAgICA8dmFsdWU+0JPQu9Cw0YHRg9Cy0LDQvdC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzIiBuYW1lPSJhbnN3ZXIiPgorICAgIDx2YWx1ZT7QktCw0YjQuNGP0YIg0L7RgtCz0L7QstC+0YA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0IiBuYW1lPSJ5ZXMiPgorICAgIDx2YWx1ZT7QlNCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1IiBuYW1lPSJubyI+CisgICAgPHZhbHVlPtCd0LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYiIG5hbWU9InF1ZXN0aW9ud2FudCI+CisgICAgPHZhbHVlPtC40YHQutCwINC00LAg0LfQvdCw0LU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3IiBuYW1lPSJwb2xscmVzdWx0cyI+CisgICAgPHZhbHVlPtCg0LXQt9GD0LvRgtCw0YLQuCDQvtGCINCw0L3QutC10YLQsNGC0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgiIG5hbWU9InF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+0JLRitC/0YDQvtGBOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOSIgbmFtZT0icmVzdWx0cyI+CisgICAgPHZhbHVlPtCg0LXQt9GD0LvRgtCw0YLQuDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAiIG5hbWU9ImFuc3dlcnMiPgorICAgIDx2YWx1ZT7QntGC0LPQvtCy0L7RgNC4OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MSIgbmFtZT0ibm9wb2xsIj4KKyAgICA8dmFsdWU+0J3QtSDRgdCwINC30LDQv9C+0YfQvdCw0YLQuCDQsNC90LrQtdGC0LguPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyIiBuYW1lPSJ2b3RpbmdzIj4KKyAgICA8dmFsdWU+0JPQu9Cw0YHRg9Cy0LDQvdC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzIiBuYW1lPSJtZWV0aW5nIj4KKyAgICA8dmFsdWU+0KHRgNC10YnQsCAo0LzQsNC60YEuIDQg0LzQtdGB0YLQsCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQiIG5hbWU9ImNvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT7QmtC+0L3RhNC10YDQtdC90YbQuNGPICjQvNCw0LrRgS4gNTAg0LzQtdGB0YLQsCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUiIG5hbWU9InR5cGUiPgorICAgIDx2YWx1ZT7QotC40L88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYiIG5hbWU9InJlbWFpbmluZ3NlYXRzIj4KKyAgICA8dmFsdWU+0J7RgdGC0LDQstCw0YnQuCDQvNC10YHRgtCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3IiBuYW1lPSJhbHJlYWR5Y2hvc2VuIj4KKyAgICA8dmFsdWU+0JLQtdGH0LUg0LjQt9Cx0YDQsNC9PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4IiBuYW1lPSJlbnRlciI+CisgICAgPHZhbHVlPtCy0YXQvtC0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5IiBuYW1lPSJtb2RsZWF2ZSI+CisgICAgPHZhbHVlPtCc0L7QtNC10YDQsNGC0L7RgNGK0YIg0LUg0L3QsNC/0YPRgdC90LDQuyDRgdGA0LXRidCw0YLQsC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAiIG5hbWU9InN5c3RlbW1lc3NhZ2UiPgorICAgIDx2YWx1ZT7QodC40YHRgtC10LzQvdCwINC40L3RhNC+0YDQvNCw0YbQuNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxIiBuYW1lPSJjaG9zc2VkZXZpY2UiPgorICAgIDx2YWx1ZT7QmNC30LHQvtGAINC90LAg0YPRgdGC0YDQvtC50YHRgtCy0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIiIG5hbWU9ImNob29zZWNhbSI+CisgICAgPHZhbHVlPtCY0LfQsdC+0YAg0L3QsCDRg9C10LHQutCw0LzQtdGA0LA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzIiBuYW1lPSJjaG9vc2VtaWMiPgorICAgIDx2YWx1ZT7QmNC30LHQvtGAINC90LAg0LzQuNC60YDQvtGE0L7QvTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQiIG5hbWU9Im9rIj4KKyAgICA8dmFsdWU+0J7QmjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NSIgbmFtZT0iY2FuY2VsMiI+CisgICAgPHZhbHVlPtCe0YLQutCw0Lc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYiIG5hbWU9InJlY29uZWVjdG5lZWRlZCI+CisgICAgPHZhbHVlPtCi0YDRj9Cx0LLQsCDQtNCwINGB0LUg0YHQstGK0YDQttC10YLQtSDQvtGC0L3QvtCy0L4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3IiBuYW1lPSJlZGl0c2V0dXAiPgorICAgIDx2YWx1ZT7QoNC10LTQsNC60YLQuNGA0LDQvdC1INC90LAg0L3QsNGB0YLRgNC+0LnQutC40YLQtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OCIgbmFtZT0iY291cnNlIj4KKyAgICA8dmFsdWU+0JrRg9GA0YE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5IiBuYW1lPSJsYW5ndWFnZSI+CisgICAgPHZhbHVlPtCV0LfQuNC6OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MCIgbmFtZT0ib2syIj4KKyAgICA8dmFsdWU+0J7QmjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MSIgbmFtZT0iY2FuY2VsMyI+CisgICAgPHZhbHVlPtCe0YLQutCw0Lc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIiIG5hbWU9ImNsZWFyd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPtCY0LfRh9C40YHRgtCy0LDQvdC1INC90LAg0LTRitGB0LrQsNGC0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMiIG5hbWU9ImNsZWFyd2hpdGVib2FyZHF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+0JjRgdC60LDRgtC1INC70Lgg0LTRitGB0LrQsNGC0LAg0LTQsCDRgdC1INC40LfRh9C40YHRgtCy0LAsINC/0YDQtdC00Lgg0LTQsCDQsdGK0LTQtSDQtNC+0LHQsNCy0LXQvdCwINC90L7QstCwINGB0L3QuNC80LrQsD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQiIG5hbWU9ImRvbnRhc2thZ2FpbiI+CisgICAgPHZhbHVlPtCd0LUg0L/QuNGC0LDQuSDQvtGC0L3QvtCy0L48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUiIG5hbWU9Im5vIj4KKyAgICA8dmFsdWU+0L3QtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NiIgbmFtZT0iZWRpdHNldHVwMiI+CisgICAgPHZhbHVlPtCg0LXQtNCw0LrRgtC40YDQsNC90LUg0L3QsCDQvdCw0YHRgtGA0L7QudC60LjRgtC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3IiBuYW1lPSJuZWVkY29uZmlybWF0aW9ud2hpdGVib2FyZCI+CisgICAgPHZhbHVlPtCf0L7RgtCy0YrRgNC20LTQtdC90LjQtSDQv9GA0LXQtNC4INC40LfRh9C40YHRgtCy0LDQvdC10YLQviDQvdCwINC00YrRgdC60LDRgtCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4IiBuYW1lPSJ1c2VyaW5mbyI+CisgICAgPHZhbHVlPtCY0L3RhNC+0YDQvNCw0YbQuNGPINC30LAg0L/QvtGC0YDQtdCx0LjRgtC10Ls8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkiIG5hbWU9ImNsZWFyZHJhd2FyZWEiPgorICAgIDx2YWx1ZT7QmNC30YfQuNGB0YLQstCw0L3QtSDQvdCwINC30L7QvdCw0YLQsCDQt9CwINGA0LjRgdGD0LLQsNC90LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAiIG5hbWU9InVuZG8iPgorICAgIDx2YWx1ZT7QodGC0YrQv9C60LAg0L3QsNC30LDQtDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MSIgbmFtZT0icmVkbyI+CisgICAgPHZhbHVlPtCh0YLRitC/0LrQsCDQvdCw0L/RgNC10LQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIiIG5hbWU9InNlbGVjdG9iamVjdCI+CisgICAgPHZhbHVlPtCc0LDRgNC60LjRgNCw0L3QtSDQvdCwINC+0LHQtdC60YI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMiIG5hbWU9InRleHQiPgorICAgIDx2YWx1ZT7QotC10LrRgdGCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0IiBuYW1lPSJwYWludCI+CisgICAgPHZhbHVlPtCg0LjRgdGD0LLQsNC90LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUiIG5hbWU9ImRyYXdsaW5lIj4KKyAgICA8dmFsdWU+0KfQtdGA0YLQsNC10L3QtSDQvdCwINC70LjQvdC40Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYiIG5hbWU9ImRyYXd1Ij4KKyAgICA8dmFsdWU+0J/QvtC00YfQtdGA0YLQsNCy0LDQvdC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3IiBuYW1lPSJyZWN0Ij4KKyAgICA8dmFsdWU+0J/RgNCw0LLQvtGK0LPRitC70L3QuNC6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4IiBuYW1lPSJlbGxpcHNlIj4KKyAgICA8dmFsdWU+0JXQu9C40L/RgdCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5IiBuYW1lPSJhcnJvdyI+CisgICAgPHZhbHVlPtCh0YLRgNC10LvQutCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwIiBuYW1lPSJkZWxldGVjaG9zZW4iPgorICAgIDx2YWx1ZT7QmNC30YLRgNC40LLQsNC90LUg0L3QsCDQvNCw0YDQutC40YDQsNC90LjRjyDQvtCx0LXQutGCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxIiBuYW1lPSJhcHBsaXltb2QiPgorICAgIDx2YWx1ZT7QmNGB0LrQsNC90LUg0L3QsCDQv9GA0LDQstCwINC90LAg0LzQvtC00LXRgNCw0YLQvtGAPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyIiBuYW1lPSJhcHBseSI+CisgICAgPHZhbHVlPtCY0YHQutCw0L3QtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MyIgbmFtZT0iY2FuY2VsIj4KKyAgICA8dmFsdWU+0J7RgtC60LDQtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NCIgbmFtZT0ibW9kIj4KKyAgICA8dmFsdWU+0J/QvtC70YPRh9Cw0LLQsNC90LUg0L3QsCDQv9GA0LDQstCwINC90LAg0LzQvtC00LXRgNCw0YLQvtGAPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1IiBuYW1lPSJjbG9zZSI+CisgICAgPHZhbHVlPtCX0LDRgtCy0L7RgNC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2IiBuYW1lPSJpdGFsaWMiPgorICAgIDx2YWx1ZT7QutGD0YDRgdC40LI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODciIG5hbWU9ImJvbGQiPgorICAgIDx2YWx1ZT7Qv9C+0LvRg9GH0LXRgDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OCIgbmFtZT0id2FpdGluZyI+CisgICAgPHZhbHVlPtCY0LfRh9Cw0LrQstCw0L3QtS4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OSIgbmFtZT0iYXBwbHlNZXNzYWdlIj4KKyAgICA8dmFsdWU+0J/QvtGC0YDQtdCx0LjRgtC10Lsg0LjRgdC60LAg0L/RgNCw0LLQsCDQvdCwINC80L7QtNC10YDQsNGC0L7RgC4g0JzQvtC20LUg0LTQsCDQvNGDINC00LDQtNC10YLQtSDQv9GA0LDQstCwINGB0LDQvNC+INC30LAg0YDQuNGB0YPQstCw0L3QtSDQstGK0YDRhdGDINC00YrRgdC60LDRgtCwINC40LvQuCDQvdCw0L/RitC70L3QviDQtNCwINC80YMg0L/RgNC10LTQsNC00LXRgtC1INC/0YDQsNCy0LDRgtCwINC90LAg0LzQvtC00LXRgNCw0YLQvtGALjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MCIgbmFtZT0iYWNjZXB0Ij4KKyAgICA8dmFsdWU+0L/RgNC40LXQvNCw0L3QtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MSIgbmFtZT0icmVqZWN0Ij4KKyAgICA8dmFsdWU+0L7RgtGF0LLRitGA0LvRj9C90LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIiIG5hbWU9ImNhbmNlbCI+CisgICAgPHZhbHVlPtC+0YLQutCw0Lc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMiIG5hbWU9InNlbmRtb2RyZXF1ZXN0bWVzc2FnZSI+CisgICAgPHZhbHVlPtCY0LfQv9GA0LDRidCw0L3QtSDQvdCwINC80L7Qu9Cx0LAg0LrRitC8INGB0LvQtdC00L3QuNGC0LUg0L/QvtGC0YDQtdCx0LjRgtC10LvQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NCIgbmFtZT0iYWNjZXB0Ij4KKyAgICA8dmFsdWU+0J/RgNC40LXRgtC+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1IiBuYW1lPSJyZWplY3QiPgorICAgIDx2YWx1ZT7QntGC0YXQstGK0YDQu9C10L3QvjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NiIgbmFtZT0iY2hhbmdlbW9kIj4KKyAgICA8dmFsdWU+0KHQvNGP0L3QsCDQvdCwINC80L7QtNC10YDQsNGC0L7RgDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NyIgbmFtZT0ibm9ubW9kZXJyb3JtZXNzYWdlIj4KKyAgICA8dmFsdWU+0JLQuNC1INC90Y/QvNCw0YLQtSDQv9GA0LDQstCwINC90LAg0LzQvtC00LXRgNCw0YLQvtGAINC30LAg0YLQvtC30Lgg0LrRg9GA0YEhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4IiBuYW1lPSJtb2RlcmF0b3IiPgorICAgIDx2YWx1ZT7QnNC+0LTQtdGA0LDRgtC+0YA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5IiBuYW1lPSJyb29tZnVsbG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7QodGC0LDRj9GC0LAg0LUg0L/RitC70L3QsC4g0JzQvtC70Y8sINC+0L/QuNGC0LDQudGC0LUg0L7RgtC90L7QstC+INC/0L4t0LrRitGB0L3Qvi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwIiBuYW1lPSJlbGxsaXBzZSI+CisgICAgPHZhbHVlPtCV0LvQuNC/0YHQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEiIG5hbWU9ImNsb3NlIj4KKyAgICA8dmFsdWU+0LfQsNGC0LLQsNGA0Y/QvdC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMiIgbmFtZT0iQXV0aEVycm9yIj4KKyAgICA8dmFsdWU+0LPRgNC10YjQutCwINCy0YrQsiDQstGF0L7QtNC90LjRgtC1INC00LDQvdC90Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzIiBuYW1lPSJtaW40dXNlcm5hbWUiPgorICAgIDx2YWx1ZT40INC40LvQuCDQv9C+0LLQtdGH0LUg0LfQvdCw0LrQsDsg0LPQvtC70LXQvNC40YLQtSDQsdGD0LrQstC4INC40LzQsNGCINC30L3QsNGH0LXQvdC40LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0IiBuYW1lPSJtaW40cGFzcyI+CisgICAgPHZhbHVlPtC/0LDRgNC+0LvQsNGC0LAg0YLRgNGP0LHQstCwINC00LAg0LUg0L/QvtC90LUgNCDQt9C90LDQutCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNSIgbmFtZT0idXNlcm5hbWV0YWtlbiI+CisgICAgPHZhbHVlPtC/0L7RgtGA0LXQsdC40YLQtdC70YHQutC+0YLQviDQuNC80LUg0LUg0LfQsNC10YLQvjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYiIG5hbWU9ImVtYWlsdGFrZW4iPgorICAgIDx2YWx1ZT5FLW1haWwg0LDQtNGA0LXRgdGK0YIg0LUg0LfQsNC10YI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3IiBuYW1lPSJlbWFpbHRha2VuIj4KKyAgICA8dmFsdWU+0JPRgNC10YjQutCwINCyINGB0LjRgdGC0LXQvNCw0YLQsCwg0L/QvtGC0YrRgNGB0LXRgtC1INGB0LjRgdGC0LXQvNC90LjRjyDQsNC00LzQuNC90LjRgdGC0YDQsNGC0L7RgC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4IiBuYW1lPSJBdXRobG9naW4iPgorICAgIDx2YWx1ZT7QktGF0L7QtDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkiIG5hbWU9IkF1dGh1c2VyIj4KKyAgICA8dmFsdWU+0JjQvNC1INC40LvQuCBlLW1haWw6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMCIgbmFtZT0iQXV0aHBhc3MiPgorICAgIDx2YWx1ZT7Qn9Cw0YDQvtC70LA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMSIgbmFtZT0iQXV0aGxhbmciPgorICAgIDx2YWx1ZT7QldC30LjQujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIiIG5hbWU9IkF1dGhyZWciPgorICAgIDx2YWx1ZT7QktGF0L7QtDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMiIG5hbWU9InJlZ2Zvcm1oZWFkIj4KKyAgICA8dmFsdWU+0KTQvtGA0LzQsCDQt9CwINGA0LXQs9C40YHRgtGA0LDRhtC40Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0IiBuYW1lPSJyZWdmb3JtdXNlciI+CisgICAgPHZhbHVlPtCf0L7RgtGA0LXQsdC40YLQtdC70YHQutC+INC40LzQtTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1IiBuYW1lPSJyZWdmb3JtcGFzcyI+CisgICAgPHZhbHVlPtCf0LDRgNC+0LvQsDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2IiBuYW1lPSJyZWdmb3JtcmV0eXBlIj4KKyAgICA8dmFsdWU+0J/QsNGA0L7Qu9CwINC+0YLQvdC+0LLQvjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3IiBuYW1lPSJyZWdmb3JtZmlyc3RuYW1lIj4KKyAgICA8dmFsdWU+0JjQvNC1OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgiIG5hbWU9InJlZ2Zvcm1sYXN0bmFtZSI+CisgICAgPHZhbHVlPtCk0LDQvNC40LvQuNGPOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkiIG5hbWU9InJlZ2Zvcm1tYWlsIj4KKyAgICA8dmFsdWU+RS1tYWlsOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAiIG5hbWU9InJlZ2Zvcm1zdGF0ZSI+CisgICAgPHZhbHVlPtCU0YrRgNC20LDQstCwOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjEiIG5hbWU9InJlZ2Zvcm1idG4xIj4KKyAgICA8dmFsdWU+0KDQtdCz0LjRgdGC0YDQsNGG0LjRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIiIG5hbWU9InJlZ2Zvcm1idG4yIj4KKyAgICA8dmFsdWU+0J7RgtC60LDQtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMiIG5hbWU9IkF1dGhidG4yIj4KKyAgICA8dmFsdWU+0J3Rj9C80LDRgtC1INGA0LXQs9C40YHRgtGA0LDRhtC40Y8/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+0J3QsNGH0LDQu9C+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNSIgbmFtZT0idXNlcmFkbWluIj4KKyAgICA8dmFsdWU+0J/QvtGC0YDQtdCx0LjRgtC10LvQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYiIG5hbWU9Imdyb3VwYWRtaW4iPgorICAgIDx2YWx1ZT7Qk9GA0YPQv9C4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNyIgbmFtZT0ib3JnYWRtaW4iPgorICAgIDx2YWx1ZT7QntGA0LPQsNC90LjQt9Cw0YbQuNC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOCIgbmFtZT0iaGVhZGNvbmYiPgorICAgIDx2YWx1ZT7QodGC0LDQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkiIG5hbWU9ImNvbmZfcHViIj4KKyAgICA8dmFsdWU+0L/Rg9Cx0LvQuNGH0L3QuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAiIG5hbWU9ImhlYWRfb3JnIj4KKyAgICA8dmFsdWU+0J7RgNCz0LDQvdC40LfQsNGG0LjRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzEiIG5hbWU9ImJ0bl9lbnRlcnJvb20iPgorICAgIDx2YWx1ZT7QktGF0L7QtDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIiIG5hbWU9InVzZXJhbHRlcnNlbGZfbG9naW4iPgorICAgIDx2YWx1ZT7Qn9C+0YLRgNC10LHQuNGC0LXQu9GB0LrQviDQuNC80LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Bhc3MiPgorICAgIDx2YWx1ZT7Qn9Cw0YDQvtC70LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Bhc3NyZXR5cGUiPgorICAgIDx2YWx1ZT7Qn9Cw0YDQvtC70LAg0L7RgtC90L7QstC+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNSIgbmFtZT0idXNlcmFsdGVyc2VsZl9maXJzdG5hbWUiPgorICAgIDx2YWx1ZT7QmNC80LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2xhc3RuYW1lIj4KKyAgICA8dmFsdWU+0KTQsNC80LjQu9C40Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2VtYWlsIj4KKyAgICA8dmFsdWU+RS1tYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOCIgbmFtZT0idXNlcmFsdGVyc2VsZl9iaXJ0aCI+CisgICAgPHZhbHVlPtCg0L7QttC00LXQvdC90LAg0LTQsNGC0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3N0cmVldG5vIj4KKyAgICA8dmFsdWU+0KPQu9C40YbQsC/QndC+LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDAiIG5hbWU9InVzZXJhbHRlcnNlbGZfdG93biI+CisgICAgPHZhbHVlPtCT0YDQsNC0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MSIgbmFtZT0idXNlcmFsdGVyc2VsZl9zdGF0ZSI+CisgICAgPHZhbHVlPtCU0YrRgNC20LDQstCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MiIgbmFtZT0idXNlcmFsdGVyc2VsZl9hZHJlc3Njb21tZW50Ij4KKyAgICA8dmFsdWU+0JDQtNGA0LXRgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMiIG5hbWU9InVzZXJhbHRlcnNlbGZfaGVhZGVyIj4KKyAgICA8dmFsdWU+0JTQsNC90L3QuCDQt9CwINC/0L7RgtGA0LXQsdC40YLQtdC70Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0IiBuYW1lPSJzYXZlbWVudWJhcl9zYXZlbGFiZWwiPgorICAgIDx2YWx1ZT7Ql9Cw0L/QuNGBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NSIgbmFtZT0ic2F2ZW1lbnViYXJfc2F2ZWxhYmVsIj4KKyAgICA8dmFsdWU+0JfQsNC/0LjRgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYiIG5hbWU9ImFkbWluX3VzZXJsaXN0X3VzZXJfaWQiPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDciIG5hbWU9ImFkbWluX3VzZXJsaXN0X2xvZ2luIj4KKyAgICA8dmFsdWU+0J/QvtGC0YDQtdCx0LjRgtC10LsuINC40LzQtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgiIG5hbWU9ImFkbWluX3VzZXJsaXN0X2ZpcnN0bmFtIj4KKyAgICA8dmFsdWU+0JjQvNC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OSIgbmFtZT0iYWRtaW5fdXNlcmxpc3RfbGFzdG5hbWUiPgorICAgIDx2YWx1ZT7QpNCw0LzQuNC70LjRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAiIG5hbWU9InR1cm5vdmVybGlzdF9uZXh0Ij4KKyAgICA8dmFsdWU+0J3QsNC/0YDQtdC0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MSIgbmFtZT0idHVybm92ZXJsaXN0X3ByZSI+CisgICAgPHZhbHVlPtCd0LDQt9Cw0LQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyIiBuYW1lPSJzYXZlY29udGVudF9jb25maXJtIj4KKyAgICA8dmFsdWU+0JjQt9GC0YDQuNCy0LDQvdC1INC90LAg0LfQsNC/0LjRgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMiIG5hbWU9InNhdmVjb250ZW50X2NvbmZpcm1fY2FuY2VsX2J0biI+CisgICAgPHZhbHVlPtCe0YLQutCw0Lc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU0IiBuYW1lPSJzYXZlY29udGVudF9jb25maXJtX2NvbmZpcm1fYnRuIj4KKyAgICA8dmFsdWU+0JjQt9GC0YDQuNCy0LDQvdC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NSIgbmFtZT0ic2F2ZW1lbnViYXJfYWRkbGFiZWwiPgorICAgIDx2YWx1ZT7QndC+0LIg0LfQsNC/0LjRgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTYiIG5hbWU9InNhdmVtZW51YmFyX3JlbG9hZGxhYmVsIj4KKyAgICA8dmFsdWU+0J7Qv9GA0LXRgdC90Y/QstCw0L3QtSDQvdCwINC30LDQv9C40YHQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTciIG5hbWU9InNhdmVtZW51YmFyX2RlbGV0ZWxhYmVsIj4KKyAgICA8dmFsdWU+0JjQt9GC0YDQuNCy0LDQvdC1INC90LAg0LfQsNC/0LjRgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTgiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9zdGF0dXMiPgorICAgIDx2YWx1ZT7QodGC0LDRgtGD0YE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU5IiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fc3RhdHVzSXRlbSI+CisgICAgPHZhbHVlPtC40LfQutC70Y7Rh9C10L08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYwIiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fc3RhdHVzSXRlbSI+CisgICAgPHZhbHVlPtCy0LrQu9GO0YfQtdC9PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2MSIgbmFtZT0idXNlcmFsdGVyX2FkbWluX29yZ2FuaXNhdGlvbiI+CisgICAgPHZhbHVlPtCe0YDQs9Cw0L3QuNC30LDRhtC40Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYyIiBuYW1lPSJjYWxlbmRhcl9pY29ubGFiZWwiPgorICAgIDx2YWx1ZT7QmtCw0LvQtdC90LTQsNGAPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2MyIgbmFtZT0ic2F2ZXdpbmRvd19idG4iPgorICAgIDx2YWx1ZT7Ql9Cw0YLQstCw0YDRj9C90LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY0IiBuYW1lPSJvcmdhbmlzYXRpb250YWJsZWxpc3RfaWRyb3ciPgorICAgIDx2YWx1ZT7QntGA0LPQsNC90LjQt9Cw0YbQuNGPIElEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2NSIgbmFtZT0ib3JnYW5pc2F0aW9udGFibGVsaXN0X25hbWVyb3ciPgorICAgIDx2YWx1ZT7QmNC80LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY2IiBuYW1lPSJ1c2VydmFsdWVfbGV2ZWxpZDEiPgorICAgIDx2YWx1ZT7Qn9C+0YLRgNC10LHQuNGC0LXQuzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjciIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGlkMiI+CisgICAgPHZhbHVlPtCc0L7QtNC10YDQsNGC0L7RgDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjgiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGlkMyI+CisgICAgPHZhbHVlPtCQ0LTQvNC40L3QuNGB0YLRgNCw0YLQvtGAPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2OSIgbmFtZT0idXNlcnZhbHVlX2xldmVsbGFiZWwiPgorICAgIDx2YWx1ZT7QndC40LLQviDQv9C+0YLRgNC10LHQuNGC0LXQuzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzAiIG5hbWU9Im9yZ3ZhbHVlX2hlYWRlciI+CisgICAgPHZhbHVlPtCe0YDQs9Cw0L3QuNC30LDRhtC40Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTcxIiBuYW1lPSJvcmd2YWx1ZV9vcmduYW1lIj4KKyAgICA8dmFsdWU+0LjQvNC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MiIgbmFtZT0ib3JndmFsdWVfb3JnbmFtZSI+CisgICAgPHZhbHVlPtCU0L7QsdCw0LLRj9C90LUg0L3QsCDQvtGA0LPQsNC90LjQt9Cw0YbQuNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MyIgbmFtZT0ib3JndmFsdWVfb3JnbmFtZSI+CisgICAgPHZhbHVlPtCU0L7QsdCw0LLRj9C90LUg0L3QsCDQvtGA0LPQsNC90LjQt9Cw0YbQuNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3NCIgbmFtZT0ib3JndmFsdWVfdXNlcndpbiI+CisgICAgPHZhbHVlPtCe0YLQutCw0Lc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc1IiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luIj4KKyAgICA8dmFsdWU+0JTQvtCx0LDQstGP0L3QtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzYiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW4iPgorICAgIDx2YWx1ZT7QmNC30YLRgNC40LLQsNC90LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc3IiBuYW1lPSJvcmd2YWx1ZV91c2VybGlzdCI+CisgICAgPHZhbHVlPtCf0L7RgtGA0LXQsdC40YLQtdC7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3OCIgbmFtZT0ib3JndmFsdWVfdXNlcmxpc3RhZGQiPgorICAgIDx2YWx1ZT7QtNC+0LHQsNCy0Y/QvdC1INC/0L7RgtGA0LXQsdC40YLQtdC7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3OSIgbmFtZT0ib3JndmFsdWVfdXNlcmxpc3RkZWxldGUiPgorICAgIDx2YWx1ZT7QuNC30YLRgNC40LLQsNC90LUg0L/QvtGC0YDQtdCx0LjRgtC10Ls8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgwIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luaGVhZGVyIj4KKyAgICA8dmFsdWU+0JTQvtCx0LDQstGP0L3QtSDQvdCwINC/0L7RgtGA0LXQsdC40YLQtdC7INC60YrQvCDQvtCz0YDQsNC90LjQt9Cw0YbQuNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4MSIgbmFtZT0ib3JndmFsdWVfdXNlcndpbnNlYXJjaGZpZWxkIj4KKyAgICA8dmFsdWU+0KLRitGA0YHQtdC90LUg0L3QsCDQv9C+0YLRgNC10LHQuNGC0LXQuzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODIiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5zZWFyY2hidG4iPgorICAgIDx2YWx1ZT7QotGK0YDRgdC10L3QtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODMiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5zZWFyY2hyZXN1bHQiPgorICAgIDx2YWx1ZT7Qn9C+0YLRgNC10LHQuNGC0LXQuzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODQiIG5hbWU9ImxvZ2lud2luX2Nob29zZW9yZ2FuaXNhdGlvbiI+CisgICAgPHZhbHVlPtCe0YDQs9Cw0L3QuNC30LDRhtC40Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg1IiBuYW1lPSJsb2dpbndpbl9jaG9vc2VvcmdhbmlzYXRpb25idG4iPgorICAgIDx2YWx1ZT7QktGF0L7QtDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODYiIG5hbWU9Im5hdmlfcm9vbWFkbWluIj4KKyAgICA8dmFsdWU+0KHRgtCw0Lgg0LfQsCDQutC+0L3RhNC10YDQtdC90YbQuNC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NyIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPtCh0YLQsNC4INC30LAg0LrQvtC90YTQtdGA0LXQvdGG0LjQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODgiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5pZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODkiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT7QmNC80LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkwIiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+0L/Rg9Cx0LvQuNGH0L3QsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTEiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT7QntGA0LPQsNC90LjQt9Cw0YbQuNC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5MiIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPtCh0YLQsNC4INC30LAg0YHRgNC10YnQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTMiIG5hbWU9InJvb212YWx1ZV9uYW1lIj4KKyAgICA8dmFsdWU+0JjQvNC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NCIgbmFtZT0icm9vbXZhbHVlX3R5cGUiPgorICAgIDx2YWx1ZT7QotC40L88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk1IiBuYW1lPSJyb29tdmFsdWVfaXNwdWJsaWMiPgorICAgIDx2YWx1ZT7Qv9GD0LHQu9C40YfQvdCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NiIgbmFtZT0icm9vbXZhbHVlX2NvbW1lbnQiPgorICAgIDx2YWx1ZT7QmtC+0LzQtdC90YLQsNGAPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NyIgbmFtZT0id2hpdGVib2FyZF9zYXZlaWNvbiI+CisgICAgPHZhbHVlPtC30LDQv9Cw0LfQstCw0L3QtSDQuCDQtdC60YHQv9C+0YDRgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTgiIG5hbWU9IndoaXRlYm9hcmRfb3Blbmljb24iPgorICAgIDx2YWx1ZT7Qt9Cw0YDQtdC20LTQsNC90LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk5IiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbmhlYWRlciI+CisgICAgPHZhbHVlPtC30LDQv9Cw0LfQstCw0L3QtSDQutCw0YLQvjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDAiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2ludGV4dCI+CisgICAgPHZhbHVlPtCk0LDQudC7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMSIgbmFtZT0iZmlsZXMiPgorICAgIDx2YWx1ZT7RhNCw0LnQuzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDIiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2luYnRuMSI+CisgICAgPHZhbHVlPtC+0YLQutCw0Lc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAzIiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbmJ0bjIiPgorICAgIDx2YWx1ZT7Qt9Cw0L/QsNC30LLQsNC90LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA0IiBuYW1lPSJycGNlcnJvcndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT7Qk9GA0LXRiNC60LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA1IiBuYW1lPSJsb2Fkd21sX2hlYWRlciI+CisgICAgPHZhbHVlPtC30LDRgNC10LbQtNCw0L3QtS4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDYiIG5hbWU9ImxvYWR3bWxfbWVzc3Nsb2FkIj4KKyAgICA8dmFsdWU+0L7QsdC10LrRgtC40YLQtSDRgdCwINC30LDRgNC10LTQtdC90Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA3IiBuYW1lPSJsb2Fkd21sX21lc3NzeW5jIj4KKyAgICA8dmFsdWU+0YHQuNC90YXRgNC+0L3QuNC30LDRhtC40Y8g0L3QsCDQutC70LjQtdC90YLQuNGC0LUsINGH0LDQutCw0YnQuCDQutC70LjQtdC90YLQuDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA4IiBuYW1lPSJsb2FkaW1hZ2VfbWVzc2xvYWQiPgorICAgIDx2YWx1ZT7Ql9Cw0YDQtdC20LTQsNC90LUg0L3QsCDQuNC30L7QsdGA0LDQttC10L3QuNC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwOSIgbmFtZT0ibG9hZGltYWdlX21lc3NzeW5jIj4KKyAgICA8dmFsdWU+0YHQuNC90YXRgNC+0L3QuNC30LDRhtC40Y8g0L3QsCDQutC70LjQtdC90YLQuNGC0LUsINGH0LDQutCw0YnQuCDQutC70LjQtdC90YLQuDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEwIiBuYW1lPSJsb2Fkd21sX2NvbmZpcm1oZWFkZXIiPgorICAgIDx2YWx1ZT7QuNC30YfQuNGB0YLQstCw0L3QtSDQvdCwINC/0L7Qu9C10YLQviDQt9CwINGA0LjRgdGD0LLQsNC90LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjExIiBuYW1lPSJsb2Fkd21sX2NvbmZpcm1tZXNzIj4KKyAgICA8dmFsdWU+0JjQt9GH0LjRgdGC0LLQsNC90LUg0L3QsCDQv9C+0LvQtdGC0L4/INCm0Y/Qu9Cw0YLQsCDQuNC90YTQvtGA0LzQsNGG0LjRjyDQvdCwINC00YrRgdC60LDRgtCwINGJ0LUg0LHRitC00LUg0LjQt9Cz0YPQsdC10L3QsC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEyIiBuYW1lPSJsb2Fkd21sX2NvbmZpcm1tZXNzMiI+CisgICAgPHZhbHVlPtCf0L7RgtCy0YrRgNC20LTQtdC90LjQtSDQv9GA0LXQtNC4INC30LDRgNC10LbQtNCw0L3QtSDQvdCwINGE0LDQudC7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMyIgbmFtZT0ic2VuZF9pbnZpdGF0aW9uX2J0biI+CisgICAgPHZhbHVlPtCY0LfQv9GA0LDRidCw0L3QtSDQvdCwINC/0L7QutCw0L3QsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTQiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT7QmNC30L/RgNCw0YnQsNC90LUg0L3QsCDQv9C+0LrQsNC90LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE1IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fc3ViamVjdCI+CisgICAgPHZhbHVlPtCi0LXQvNCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNiIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX3JlY2lwaWVudCI+CisgICAgPHZhbHVlPtCf0L7Qu9GD0YfQsNGC0LXQuzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTciIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9tZXNzYWdlIj4KKyAgICA8dmFsdWU+0KHRitC+0LHRidC10L3QuNC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxOCIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX2J0bl9jb25maXJtIj4KKyAgICA8dmFsdWU+0JjQt9C/0YDQsNGC0Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE5IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fYnRuX2NhbmNlbCI+CisgICAgPHZhbHVlPtC+0YLQutCw0Lc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIwIiBuYW1lPSJzZW5kX2NoYXRfdGV4dF9idG4iPgorICAgIDx2YWx1ZT7QuNC30L/RgNCw0YLQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjEiIG5hbWU9Imludml0ZWRfdXNlcndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT7QlNCw0L3QvdC4INC30LAg0L/QvtGC0YDQtdCx0LjRgtC10Ls8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIyIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fc3ViamVjdCI+CisgICAgPHZhbHVlPtCS0LDRiNC40Y/RgiDQvdC40Log0LfQsCDRgtCw0LfQuCDQutC+0L3RhNC10YDQtdC90YbQuNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyMyIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2xvZ2luIj4KKyAgICA8dmFsdWU+0J3QuNC6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNCIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2ZpcnN0bmFtZSI+CisgICAgPHZhbHVlPtCY0LzQtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjUiIG5hbWU9Imludml0ZWRfdXNlcndpbl9sYXN0bmFtZSI+CisgICAgPHZhbHVlPtCk0LDQvNC40LvQuNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNiIgbmFtZT0iaW52aXRlZF91c2Vyd2luX21haWwiPgorICAgIDx2YWx1ZT5FLW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI3IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fbGFuZyI+CisgICAgPHZhbHVlPtCV0LfQuNC6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyOCIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2VudGVyIj4KKyAgICA8dmFsdWU+0LLRhdC+0LQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI5IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZW50ZXIiPgorICAgIDx2YWx1ZT7Ql9Cw0YDQtdC20LTQsNC90LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMwIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZW50ZXIiPgorICAgIDx2YWx1ZT7Ql9Cw0YDQtdC20LTQsNC90LUg0L3QsCDQtNCw0L3QvdC4LCDQvNC+0LvRjyDQuNC30YfQsNC60LDQudGC0LUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMSIgbmFtZT0idXNlcl9yZWdpc3RlckZhbHNlUFdEIj4KKyAgICA8dmFsdWU+0JPRgNC10YjQvdCwINC/0LDRgNC+0LvQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzIiIG5hbWU9InVzZXJfcmVnaXN0ZXJGYWxzZVBXREhlYWRlciI+CisgICAgPHZhbHVlPtCc0L7Qu9GPINCy0YrQstC10LTQtdGC0LUg0LTQstC1INC10LTQvdCw0LrQstC4INC/0LDRgNC+0LvQuCDQvtGCINC/0L7QvdC1IDYg0LfQvdCw0LrQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzMiIG5hbWU9InVzZXJfcmVnaXN0ZXJNYWlsRXJyb3IiPgorICAgIDx2YWx1ZT7Qk9GA0LXRiNC10L0gZS1tYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzNCIgbmFtZT0idXNlcl9yZWdpc3Rlck1haWxFcnJvckhlYWRlciI+CisgICAgPHZhbHVlPtCS0YrQstC10LvQuCDRgdGC0LUg0LPRgNC10YjQtdC9IGUtbWFpbCDQsNC00YDQtdGBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzNSIgbmFtZT0idXNlcl9yZWdpc3RlclN1Y2Nlc3MiPgorICAgIDx2YWx1ZT7QoNC10LPQuNGB0YLRgNCw0YbQuNGP0YLQsCDQtSDQt9Cw0LLRitGA0YjQtdC90LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM2IiBuYW1lPSJ1c2VyX3JlZ2lzdGVyU3VjY2Vzc0hlYWRlciI+CisgICAgPHZhbHVlPtCQ0LrQsNGD0L3RgtGK0YIg0LUg0YHRitC30LTQsNC00LXQvS4g0JzQvtC20LUg0LTQsCDQstC70LXQt9C10YLQtSDQsiDRgdC40YHRgtC10LzQsNGC0LAuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzNyIgbmFtZT0idXNlcl9zaGFyaW5nX21lc3NhZ2UiPgorICAgIDx2YWx1ZT7QkiDQvNC+0LzQtdC90YLQsCDQvdC1INC80L7QttC1INC00LAg0YHQv9C+0LTQtdC70Y/RgtC1INC10LrRgNCw0L3QsCDRgdC4LiDQndGP0LrQvtC5INC00YDRg9CzINCy0LXRh9C1INGB0L/QvtC00LXQu9GPINGB0LLQvtGPINC10LrRgNCw0L0uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzOCIgbmFtZT0idXNlcl9zaGFyaW5nX21lc3NhZ2VIZWFkZXIiPgorICAgIDx2YWx1ZT7QodC/0L7QtNC10LvRj9C90LXRgtC+INC1INC30LDQsdGA0LDQvdC10L3Qvi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM5IiBuYW1lPSJ1c2VyX2RvU3RhcnRTY3JlZW5WaWV3ZXIiPgorICAgIDx2YWx1ZT7QodC/0L7QtNC10LvRj9C90LUg0L3QsCDQtdC60YDQsNC9PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0MCIgbmFtZT0ic2NyZWVuX3dhcm5CYW5kd2lkdGgiPgorICAgIDx2YWx1ZT7QodC70LDQsdCwINCY0L3RgtC10YDQvdC10YIg0LLRgNGK0LfQutCwOiDQvdGP0LzQsNGC0LUg0LLRitC30LzQvtC20L3QvtGB0YIg0LfQsCDRgdC40L3RhdGA0L7QvdC40LfQsNGG0LjRjyDQvdCwINC10LrRgNCw0L3QsC4g0KnQtSDQuNC80LAg0LjQt9C/0YPRgdC60LDQvdC1INC90LAg0LrQsNC00YDQuC4g0JDQutC+INGC0L7QstCwINGB0YrQvtCx0YnQtdC90LjQtSDRgdC1INC/0L7QutCw0LfQstCwINGH0LXRgdGC0L4sINC80L7QttC1INC00LAg0L/QvtC80L7Qu9C40YLQtSDQvNC+0LTQtdGA0LDRgtC+0YDQsCDQtNCwINC90LDQvNCw0LvQuCDQutCw0YfQtdGB0YLQstC+0YLQvi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQxIiBuYW1lPSJzY3JlZW5fdXNlcmxhYmVsIj4KKyAgICA8dmFsdWU+0JXQutGA0LDQvSDQvdCwOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDIiIG5hbWU9IndoaXRlYm9hcmRfdGFiX3BhaW50Ij4KKyAgICA8dmFsdWU+0KDQuNGB0YPQstCw0L3QtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDMiIG5hbWU9IndoaXRlYm9hcmRfdGFiX2RvY3VtZW50Ij4KKyAgICA8dmFsdWU+0JTQvtC60YPQvNC10L3RgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDQiIG5hbWU9InRhYmJhcl9jaGF0aWNvbiI+CisgICAgPHZhbHVlPtCn0LDRgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDUiIG5hbWU9InRhYmJhcl9maWxlc2ljb24iPgorICAgIDx2YWx1ZT7QpNCw0LnQu9C+0LLQtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDYiIG5hbWU9InRhYmJhcl9wYXJ0aWNpcGFudHNpY29uIj4KKyAgICA8dmFsdWU+0KfQu9C10L3QvtCy0LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ3IiBuYW1lPSJzd2ZwcmVzZW50YXRpb25fbGlzdHNhdmVvcmlnIj4KKyAgICA8dmFsdWU+0KHQstCw0LvRj9C90LUg0L3QsCDQvtGA0LjQs9C40L3QsNC70L3QuNGPINC00L7QutGD0LzQtdC90YI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ4IiBuYW1lPSJzd2ZwcmVzZW50YXRpb25fbGlzdHNhdmVwZGYiPgorICAgIDx2YWx1ZT7QodCy0LDQu9GP0L3QtSDQvdCwIFBERjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDkiIG5hbWU9InN3ZnByZXNlbnRhdGlvbl9saXN0bG9hZHN3ZiI+CisgICAgPHZhbHVlPtCX0LDRgNC10LbQtNCw0L3QtSDQvdCwINC/0YDQtdC30LXQvdGC0LDRhtC40Y/RgtCwINC90LAg0LTRitGB0LrQsNGC0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUwIiBuYW1lPSJuYXZpbWFpbl9jb25maWciPgorICAgIDx2YWx1ZT7QmtC+0L3RhNC40LPRg9GA0LDRhtC40Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUxIiBuYW1lPSJ3aGl0ZWJvYXJkX2JvdW5kaW5nYm94X2RyYWciPgorICAgIDx2YWx1ZT7QktC70LDRh9C10L3QtSDQvdCwINC+0LHQtdC60YI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUyIiBuYW1lPSJ3aGl0ZWJvYXJkX2JvdW5kaW5nYm94X3Jlc2l6ZSI+CisgICAgPHZhbHVlPtCf0YDQvtC80Y/QvdCwINGA0LDQt9C80LXRgNC40YLQtSDQvdCwINC+0LHQtdC60YI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUzIiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl96b29tIj4KKyAgICA8dmFsdWU+JTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTQiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3NsaWRlIj4KKyAgICA8dmFsdWU+0L7RgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTUiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX2ZpcnN0c2xpZGUiPgorICAgIDx2YWx1ZT7QmtGK0Lwg0L/RitGA0LLQsCDRgdGC0YDQsNC90LjRhtCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1NiIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfcHJlc2xpZGUiPgorICAgIDx2YWx1ZT7QmtGK0Lwg0L/RgNC10LTQuNGI0L3QsNGC0LAg0YHRgtGA0LDQvdC40YbQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTciIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX25leHRzbGlkZSI+CisgICAgPHZhbHVlPtCa0YrQvCDRgdC70LXQtNCy0LDRidCw0YLQsCDRgdGC0YDQsNC90LjRhtCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1OCIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfbGFzdHNsaWRlIj4KKyAgICA8dmFsdWU+0JrRitC8INC/0L7RgdC70LXQtNC90LAg0YHRgtGA0LDQvdC40YbQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTkiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3pvb21taW51cyI+CisgICAgPHZhbHVlPtCc0LDRidCw0LEgLS08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYwIiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl96b29tcGx1cyI+CisgICAgPHZhbHVlPtCc0LDRidCw0LEgKys8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYxIiBuYW1lPSJzYWx1dGF0aW9uX21yIj4KKyAgICA8dmFsdWU+0JMt0L08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYyIiBuYW1lPSJzYWx1dGF0aW9uX21pc3MiPgorICAgIDx2YWx1ZT7Qky3QttCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MyIgbmFtZT0ibmF2aW1haW5fY29uZmFkbWluIj4KKyAgICA8dmFsdWU+0JrQvtC90YTQuNCz0YPRgNCw0YbQuNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2NCIgbmFtZT0iY29uZnRhYmxlX2hlYWRlcklkIj4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY1IiBuYW1lPSJjb25mdGFibGVfaGVhZGVya2V5Ij4KKyAgICA8dmFsdWU+0JrQu9GO0Yc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY2IiBuYW1lPSJjb25mYWRtaW5mb3JtX2hlYWRlciI+CisgICAgPHZhbHVlPtCa0L7QvdGE0LjQs9GD0YDQsNGG0LjRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjciIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWxrZXkiPgorICAgIDx2YWx1ZT7QutC70Y7RhzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjgiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWx1cGRhdGVkIj4KKyAgICA8dmFsdWU+0L/QvtGB0LvQtdC00L3QsCDQv9GA0L7QvNGP0L3QsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjkiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWx1cGRhdGVkYnkiPgorICAgIDx2YWx1ZT7Qv9GA0L7QvNC10L3QtdC9INC+0YI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjcwIiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsY29tbWVudCI+CisgICAgPHZhbHVlPtC60L7QvNC10L3RgtCw0YA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjcxIiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsa2V5Ij4KKyAgICA8dmFsdWU+0KHRgtC+0LnQvdC+0YHRgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzIiIG5hbWU9InR1cm5vdmVybGlzdF9tYXhyZXN1bHRzIj4KKyAgICA8dmFsdWU+0L7RgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzMiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2hlYWRlciI+CisgICAgPHZhbHVlPtCf0L7RgtGA0LXQsdC40YLQtdC70Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc0IiBuYW1lPSJvcmdhbmlzYXRpb25fdXNlcnNpY29uZGVsZXRlIj4KKyAgICA8dmFsdWU+0LjQt9GC0YDQuNCy0LDQvdC1INC90LAg0L/QvtGC0YDQtdCx0LjRgtC10Lsg0L7RgiDQvtGA0LPQsNC90LjQt9Cw0YbQuNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NSIgbmFtZT0ib3JnYW5pc2F0aW9uX3VzZXJzZGVsZXRlZGhlYWQiPgorICAgIDx2YWx1ZT5EPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NiIgbmFtZT0ib3JnYW5pc2F0aW9uX3VzZXJzYWxyZWFkYWRkZWQiPgorICAgIDx2YWx1ZT7Qn9C+0YLRgNC10LHQuNGC0LXQu9GP0YIg0LLQtdGH0LUg0LUg0YfQu9C10L0g0L3QsCDQvtGA0LPQsNC90LjQt9Cw0YbQuNGP0YLQsC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc3IiBuYW1lPSJkYXNoYm9hcmRfbmV3c2hlYWRlciI+CisgICAgPHZhbHVlPtCd0L7QstC40L3QuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzgiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtzaGVhZGVyIj4KKyAgICA8dmFsdWU+0JHRitGA0LfQuCDQstGA0YrQt9C60Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc5IiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rQ29uZiI+CisgICAgPHZhbHVlPtCa0YrQvCDQutC+0L3RhNC10YDQtdC90YbQuNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MCIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua0F1ZGl0Ij4KKyAgICA8dmFsdWU+0JrRitC8INCw0YPQtNC40YLQvtGA0LjRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODEiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtzdXBwb3J0Ij4KKyAgICA8dmFsdWU+0J/QvtC80L7RiTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODIiIG5hbWU9ImRhc2hib2FyZF9xdWlja2hvbWVwYWdldXJsIj4KKyAgICA8dmFsdWU+aHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnLzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODMiIG5hbWU9ImRhc2hib2FyZF9xdWlja21haWxpbmdsaXN0dXJsIj4KKyAgICA8dmFsdWU+aHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnL21haWwtbGlzdHMuaHRtbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODQiIG5hbWU9ImRhc2hib2FyZF9yZXBvcnRidWdzIj4KKyAgICA8dmFsdWU+0JHRitCzINGA0LXQv9C+0YDRgiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg1IiBuYW1lPSJkYXNoYm9hcmRfcnNzbGlzdGl0ZW1saW5rdGV4dCI+CisgICAgPHZhbHVlPtC/0L7QstC10YfQtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODYiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtob21lcGFnZWxhYmVsIj4KKyAgICA8dmFsdWU+0KHQsNC50YIg0L3QsCDQv9GA0L7QtdC60YLQsCAoaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODciIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmttYWlsaW5nbGlzdGxhYmVsIj4KKyAgICA8dmFsdWU+0J/QvtGC0YDQtdCx0LjRgtC10LvRgdC60Lgg0LzQtdC50LvQuNC90LMg0LvQuNGB0YIgKGh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9tYWlsLWxpc3RzLmh0bWwpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4OCIgbmFtZT0ibG9naW5fcmVtZW1iZXJ1c2VyIj4KKyAgICA8dmFsdWU+0JfQsNC/0L7QvNC90Lgg0LzQtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODkiIG5hbWU9Im1haW5fbmF2aSI+CisgICAgPHZhbHVlPtCh0YrQtNGK0YDQttCw0L3QuNC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPtCd0LDRh9Cw0LvQvdCwINGB0YLRgNCw0L3QuNGG0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkxIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+0JPRgNCw0YTQuNC6INC90LAg0YHRgNC10YnQuNGC0LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkyIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+0JPRgNCw0YTQuNC6INC90LAg0YHRitCx0LjRgtC40Y/RgtCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MyIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPtCf0YPQsdC70LjRh9C90Lgg0YHRgNC10YnQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTQiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT7Qp9Cw0YHRgtC90Lgg0YHRgNC10YnQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTUiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT7Qn9GD0LHQu9C40YfQvdC4INGB0YrQsdC40YLQuNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NiIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPtCn0LDRgdGC0L3QuCDRgdGK0LHQuNGC0LjRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTciIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT7Qn9GD0LHQu9C40YfQvdC+INGB0YrQtNGK0YDQttCw0L3QuNC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5OCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPtCn0LDRgdGC0L3QviDRgdGK0LTRitGA0LbQsNC90LjQtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTkiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT7Qm9C40YfQvdC+INGB0YrQtNGK0YDQttCw0L3QuNC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDEiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT7Qn9GA0LDQstCwINC90LAg0LzQvtC00LXRgNCw0YLQvtGAPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMiIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPtCY0YHQutCw0L3QtSDQv9GA0LDQstCwINC90LAg0LzQvtC00LXRgNCw0YLQvtGAPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMyIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPtCQ0L3QutC10YLQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDQiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT7QmNC30LHQvtGAINC90LAg0YTQsNC50Ls8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA1IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+0J3QsNGB0YLRgNC+0LnQutC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNiIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPtCa0LDQvNC10YDQsCDQuCDQvNC40LrRgNC+0YTQvtC9PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNyIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPtCd0LDRgdGC0YDQvtC50LrQuCDQvdCwINC00YrRgdC60LDRgtCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwOCIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPtCY0LfRhdC+0LQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA5IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+0J3QsNC30LDQtCDQutGK0Lwg0YHRgtCw0LjRgtC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMCIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPtCY0LfRhdC+0LQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzExIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPtCX0LDQsdGA0LDQstC10L3QsCDQv9Cw0YDQvtC70LA/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMiIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7QndC+0LLQsCDQv9Cw0YDQvtC70LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEzIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPtCf0L4gRS1tYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxNCIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7Qn9C+INC/0L7RgtGA0LXQsdC40YLQtdC70YHQutC+INC40LzQtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTUiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+RS1tYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxNiIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7Qn9C+0YLRgNC10LHQuNGC0LXQu9GB0LrQviDQuNC80LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE3IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPtCY0LfQv9GA0LDRidCw0L3QtSDQvdCwIEUtbWFpbCDRgSDQu9C40L3QuiDQt9CwINC90L7QstCwINC/0LDRgNC+0LvQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTgiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+0J3QtSDQtSDQvdCw0LzQtdGA0LXQvSDRgtCw0LrRitCyIGUtbWFpbC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE5IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPtCc0L7Qu9GPLCDQstGK0LLQtdC00LXRgtC1IEUtbWFpbCDQuNC70Lgg0L/QvtGC0YDQtdCx0LjRgtC10LvRgdC60L4g0LjQvNC1LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjAiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+0J3QtSDQtSDQvdCw0LzQtdGA0LXQvdC+INGC0LDQutC+0LLQsCDQv9C+0YLRgNC10LHQuNGC0LXQu9GB0LrQviDQuNC80LUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyMSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7QmNC30L/RgNCw0YLQtdC9INC1IGUtbWFpbCwg0YHRitC00YrRgNC20LDRiSDQu9C40L3QuiDQt9CwINC90L7QstCwINC/0LDRgNC+0LvQsC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIyIiBuYW1lPSJlcnJvcnR5cGUiPgorICAgIDx2YWx1ZT7Qk9GA0LXRiNC60LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIzIiBuYW1lPSJlcnJvcnR5cGUiPgorICAgIDx2YWx1ZT7QodGK0L7QsdGJ0LXQvdC40LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI0IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT7QndC1INC1INC90LDQvNC10YDQtdC9INGC0LDQutGK0LIg0L/QvtGC0YDQtdCx0LjRgtC10LsuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNSIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+0J3QvtCy0LAg0L/QsNGA0L7Qu9CwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNiIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+0J/QvtGC0YDQtdCx0LjRgtC10LvRgdC60L4g0LjQvNC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNyIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+0L/RgNC+0LzRj9C90LAg0L3QsCDQv9Cw0YDQvtC70LDRgtCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyOCIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+0L3QvtCy0LAg0L/QsNGA0L7Qu9CwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyOSIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+0L3QvtCy0LAg0L/QsNGA0L7Qu9CwINC+0YLQvdC+0LLQvjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzAiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPtCS0YrQstC10LTQtdC90LjRgtC1INC/0LDRgNC+0LvQuCDQvdC1INGB0LAg0LXQtNC90LDQutCy0LguPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzMSIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+NCDQuNC70Lgg0L/QvtCy0LXRh9C1INC30L3QsNC60LA7INCz0LvQsNCy0L3QuNGC0LUg0LHRg9C60LLQuCDQuNC80LDRgiDQt9C90LDRh9C10L3QuNC1ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzIiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPtCf0LDRgNC+0LvQsNGC0LAg0LUg0L3QsNGB0YLRgNC+0LXQvdCwLCDQstC10YfQtSDQvNC+0LbQtSDQtNCwINCy0LvQtdC30LXRgtC1INCyINGB0LjRgdGC0LXQvNCw0YLQsC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMzIiBuYW1lPSJycGNjYWxsYmFjayI+CisgICAgPHZhbHVlPtCe0Jo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM0IiBuYW1lPSJycGNnZW5lcmFsZXJyb3IiPgorICAgIDx2YWx1ZT7Qk9GA0LXRiNC60LAuINCU0L7QutC70LDQtNCy0LDQudGC0LUg0LfQsCDQsdGK0LMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7Qn9C+0YLRgNC10LHQuNGC0LXQu9GB0LrQvtGC0L4g0LjQvNC1INC90LUg0LUg0L3QsNC80LXRgNC10L3Qvi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM2IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPtCd0LXQstCw0LvQuNC00L3QsCDQv9Cw0YDQvtC70LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM3IiBuYW1lPSJsb2dvdXQiPgorICAgIDx2YWx1ZT7Qo9GB0L/QtdGI0LXQvSDQuNC30YXQvtC0INC+0YIg0YHQuNGB0YLQtdC80LDRgtCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzOCIgbmFtZT0icmVnaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+0JfQsNCx0YDQsNC90LXQvdCwINC1INGA0LXQs9C40YHRgtGA0LDRhtC40Y/RgtCwINC90LAg0L3QvtCy0Lgg0L/QvtGC0YDQtdCx0LjRgtC10LvQuC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM5IiBuYW1lPSJyZWdpc3RyYXRpb24iPgorICAgIDx2YWx1ZT7QndC10LLQsNC70LjQtNC10L0gZS1tYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MCIgbmFtZT0icmVnaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+0LTRg9Cx0LvQuNGA0LDQvdC1INC90LAg0LjQvNC10YLQviDQvdCwINGE0LDQudC70LAsINC40LfQsdC10YDQtdGC0LUg0LTRgNGD0LPQviDQuNC80LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQxIiBuYW1lPSJmaWxlYnJvd3NlciI+CisgICAgPHZhbHVlPtC40LzQtdGC0L4g0L3QsCDRhNCw0LnQu9CwINC1INC80L3QvtCz0L4g0LrRgNCw0YLQutC+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MiIgbmFtZT0iZmlsZWJyb3dzZXIiPgorICAgIDx2YWx1ZT7QndC1INC80L7QttC1INC00LAg0YHQtSDQt9Cw0L/QsNC30Lgg0LDQtNGA0LXRgdCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MyIgbmFtZT0idXNlcmFkbWluIj4KKyAgICA8dmFsdWU+0J/QvtGC0YDQtdCx0LjRgtC10LvRj9GCINC1INC00L7QsdCw0LLQtdC9LCDQvdC+INGC0YDRj9Cx0LLQsCDQtNCwINGB0LUg0LTQvtCx0LDQstC4INC60YrQvCDQntGA0LPQsNC90LjQt9Cw0YbQuNGPLCDQt9CwINC00LAg0LzQvtC20LUg0LTQsCDQstC70LXQt9C1INCyINGB0LjRgdGC0LXQvNCw0YLQsC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ0IiBuYW1lPSJhZG1pbmZvcm1zIj4KKyAgICA8dmFsdWU+0J3QvtCyINC30LDQv9C40YE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ1IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7QndC1INC1INC90LDQvNC10YDQtdC90L4g0L/QvtC70LUg0YEg0YLQsNC60L7QstCwINC/0L7Qu9C1SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ2IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7QndC1INC1INC90LDQvNC10YDQtdC9INC10YLQuNC60LXRgiDQvdCwINGC0L7QstCwINC/0L7Qu9C1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NyIgbmFtZT0iZXJyb3JtZXNzYWdlIj4KKyAgICA8dmFsdWU+0J3QtdC+0LHRhdC+0LTQuNC80LAg0LUg0LDRg9GC0L7RgNC40LfQsNGG0LjRjyDQutCw0YLQviDQsNC00LzQuNC90LjRgdGC0YDQsNGC0L7RgDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDgiIG5hbWU9Im1haW5uYXZpIj4KKyAgICA8dmFsdWU+0KDQtdC00LDQutGC0L7RgCDQvdCwINC10LfQuNC6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0OSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+0JXQt9C40Lo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUwIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7QldGC0LjQutC10YItSUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUxIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7QmNC80LUg0L3QsCDQtdGC0LjQutC10YLQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTIiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPtCh0YLQvtC50L3QvtGB0YI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUzIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7QodGC0L7QudC90L7RgdGC0Lgg0L3QsCDQv9C+0LvQtdGC0L48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU0IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7QmNC80LUg0L3QsCDQtdGC0LjQutC10YLQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTUiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPtCh0YLQvtC50L3QvtGB0YIg0L3QsCDQtdGC0LjQutC10YLQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTYiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPtCV0YLQuNC60LXRgi1JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTciIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPtCc0L7QttC1INC00LAg0LjQt9GC0YDQuNC10YLQtSDRgdCw0LzQviDQtdGC0LjQutC10YLQsCwg0L3QviDQndCVINC4INC/0L7Qu9C10YLQviEg0J3QtSDQvNC+0LbQtSDQtNCwINC40LfRgtGA0LjQtdGC0LUg0L/QvtC70LXRgtC+LCDQt9Cw0YnQvtGC0L4g0YLQviDRgdGK0LTRitGA0LbQsCDQtdGC0LjQutC10YLQuCDQvdCwINC00YDRg9Cz0Lgg0LXQt9C40YbQuC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU4IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7QndC10LLQsNC70LjQtNC90L4g0JXRgtC40LrQtdGCLUlELjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTkiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPtCd0LUg0LzQvtC20LUg0LTQsCDQuNC30YLRgNC40LXRgtC1INGC0L7QstCwINC/0L7Qu9C1LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjAiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPtC10LrRgdC/0L7RgNGCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+0KLRgNGP0LHQstCwINC00LAg0LjQt9C70LXQt9C10YLQtSDQvtGCINGB0LjRgdGC0LXQvNCw0YLQsCwg0LfQsCDQtNCwINCy0LjQtNC40YLQtSDQv9GA0L7QvNC10L3QuNGC0LUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+0JTQvtCx0LDQstGP0L3QtSDQvdCwINC90L7QsiDQtdC30LjQujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjMiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPtC40LfRgtGA0LjQstCw0L3QtSDQvdCwINC10LfQuNC6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+0JTQvtCx0LDQstGP0L3QtSDQvdCwINC90L7QsiDQtdC30LjQujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjUiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPtCY0LzQtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjYiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPtC00L7QsdCw0LLRj9C90LUg0L3QsCDQtdC30LjQujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjciIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPtCR0LXQutGK0L88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY4IiBuYW1lPSJ0dXJub3Zlcmxpc3QiPgorICAgIDx2YWx1ZT7Qv9GK0YDQstCwINGB0YLRgNCw0L3QuNGG0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY5IiBuYW1lPSJ0dXJub3Zlcmxpc3QiPgorICAgIDx2YWx1ZT7Qv9GA0LXQtNC40YjQvdCwINGB0YLRgNCw0L3QuNGG0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzcwIiBuYW1lPSJ0dXJub3Zlcmxpc3QiPgorICAgIDx2YWx1ZT7RgdC70LXQtNCy0LDRidCwINGB0YLRgNCw0L3QuNGG0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzcxIiBuYW1lPSJ0dXJub3Zlcmxpc3QiPgorICAgIDx2YWx1ZT7Qv9C+0YHQu9C10LTQvdCwINGB0YLRgNCw0L3QuNGG0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzcyIiBuYW1lPSJ2aWRlb2JveCI+CisgICAgPHZhbHVlPtC/0L7RgtGA0LXQsdC40YLQtdC70Y/RgiDQs9C+0LLQvtGA0LggKEJ5IGNsaWNraW5nIGhlcmUgeW91IGNhbiBnaXZlIGV4Y2x1c2l2ZSBhdWRpbyAvIG11dGUgdGhlIG1pY3JvcGhvbmUgb2Ygb3RoZXJzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzMiIG5hbWU9InZpZGVvYm94Ij4KKyAgICA8dmFsdWU+0LjQt9C60LsuL9Cy0LrQuy4g0L3QsCDQt9Cy0YPQutCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3NCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+0KHQuNGB0YLQtdC80LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc1IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT7QktCw0YjQuNGC0LUg0L3QsNGB0YLRgNC+0LnQutC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3NiIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+0JfQtNGA0LDQstC10LnRgtC1LDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzciIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPtCg0LXQtNCw0LrRgi7QvdCwINC/0YDQvtGE0LjQuzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzgiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPtCd0L7QstC4INGB0YrQvtCx0YnQtdC90LjRjzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc5IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT7QmtCw0YfQuCDQvdC+0LLQsCDRgdC90LjQvNC60LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgwIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPtCU0LDQvdC90Lgg0L3QsCDQv9C+0YLRgNC10LHQuNGC0LXQuyAtINC10LrRgdC/0L7RgNGCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4MSIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT7QktGB0LjRh9C60Lgg0L7RgNCz0LDQvdC40LfQsNGG0LjQuCDRgtGA0Y/QsdCy0LAg0LLQtdGH0LUg0LTQsCDRgdGK0YnQtdGB0YLQstGD0LLQsNGCITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODIiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+0YHRgtCw0YDRgiDQvdCwINC10LrRgdC/0L7RgNGCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4MyIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT7Qn9C+INC+0YDQs9Cw0L3QuNC30LDRhtC40Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg0IiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPtGB0YLQsNGA0YIg0L3QsCDQtdC60YHQv9C+0YDRgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODUiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+0JTQsNC90L3QuCDQvdCwINC/0L7RgtGA0LXQsdC40YLQtdC7IC0g0LjQvNC/0L7RgNGCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NiIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5jaG9vc2UtdXNlcnMueG1sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+0LjQvNC/0L7RgNGCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4OCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+0JXQutGB0L/QvtGA0YIg0LIgWE1MIC0g0KLQtdC30Lgg0YTQsNC50LvQvtCy0LUg0LzQvtC20LUg0LTQsCDRgdC1INC40LfQv9C+0LvQt9Cy0LDRgiDQsjogJmFtcDtsdDtici8mYW1wO2d0OyAtINCf0L7QvNC+0Ykg0LfQsCDQv9GA0L7QtdC60YLQsCAtINCY0LzQv9C+0YDRgiDQsiDQtNGA0YPQs9CwINGB0LjRgdGC0LXQvNCwICZhbXA7bHQ7YnIvJmFtcDtndDsgLSDQkdC10LrRitC/IC0g0J3QsNGB0YLRgNC+0LnQutC4JmFtcDtsdDtici8mYW1wO2d0OyAtINCh0LvQvtC20LXRgtC1INGE0LDQudC70LAg0LIg0L/QsNC/0LrQsNGC0LAgbGFuZ3VhZ2Ug0L3QsCDQvdC+0LLQsNGC0LAg0LjQvdGB0YLQsNC70LDRhtC40Y8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4OSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+0JjQt9Cx0LXRgNC10YLQtSBYTUwg0YTQsNC50Lsg0LfQsCDQuNC80L/QvtGA0YIg0L3QsCDQtdC30LjQui4gJmFtcDtsdDtici8mYW1wO2d0OyDQmNC30LHQtdGA0LXRgtC1INC/0YDQsNCy0LjQu9C90LjRjyDQtdC30LjQuiDQvtGCINC/0LDQtNCw0YnQvtGC0L4g0LzQtdC90Y4hICZhbXA7bHQ7YnIvJmFtcDtndDsg0JHQtdC3INC30L3QsNGH0LXQvdC40LUg0L7RgiDQuNC80LXRgtC+INC90LAg0YTQsNC50LvQsCwgJmFtcDtsdDtici8mYW1wO2d0OyDRgtC+0Lkg0YnQtSDQsdGK0LTQtSDQuNC80L/QvtGA0YLQvdCw0YIg0LIg0YLQvtC30Lgg0LXQt9C40LohPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5MCIgbmFtZT0iaW1wb3J0d2luZG93Ij4KKyAgICA8dmFsdWU+0LjQvNC/0L7RgNGCIC0g0LjQt9Cx0LXRgNC10YLQtSDRhNCw0LnQuzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTEiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT7Ql9Cw0L/QsNC30LLQsNC90LUg0LrQsNGC0L48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkyIiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+0JjQvNC1OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTMiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT7QmtC+0LzQtdC90YLQsNGAOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTQiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT7Qt9Cw0L/QsNC30LLQsNC90LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk1IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT7Ql9Cw0L/QuNGB0Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk2IiBuYW1lPSJyZWNvcmRlciI+CisgICAgPHZhbHVlPtCf0YDQtdCz0LvQtdC0INC90LAg0LfQsNC/0LjRgdC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NyIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+0JfQsNC/0LjRgdC4INC+0YIg0L/Rg9Cx0LvQuNGH0L3QuCDQuCDRh9Cw0YHRgtC90Lgg0YHRgtCw0Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk4IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT7Qn9C+0YLRgNC10LHQuNGC0LXQu9C4OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTkiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPtCS0LrQu9GO0YfQuNC70Lgg0YHQtTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAwIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAxIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT7Qn9C+0YLRgNC10LHQuNGC0LXQu9C4INCyINGC0LDQt9C4INGB0YLQsNGPOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDIiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPtC+0L/RgNC10YHQvdGP0LLQsNC90LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAzIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT7QotCw0LfQuCDRgdGC0LDRjyDQtSDQv9GK0LvQvdCwLiDQn9GA0L7QsdCy0LDQudGC0LUg0L7RgtC90L7QstC+INGB0LvQtdC0INC90Y/QutC+0LvQutC+INC80LjQvdGD0YLQuC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA0IiBuYW1lPSJyb29tc0xpc3QiPgorICAgIDx2YWx1ZT7QvdCw0YLQuNGB0L3QtdGC0LUg0LLRitGA0YXRgyDRgdGC0LDRjyDQt9CwINC00LXRgtCw0LnQu9C4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNSIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+0KfQsNGCINGBINC/0L7RgtGA0LXQsdC40YLQtdC70LjRgtC1INC+0YIg0YLQsNC30Lgg0YHRgtCw0Y86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNiIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+0KHRgtCw0Y86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNyIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+0J/QvtGC0YDQtdCx0LjRgtC10LvQuCDQsiDRgtCw0LfQuCDRgdGC0LDRjzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA4IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT7QvtGCOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDkiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPtC/0LvQtdC50LLQsNC90LUg0L3QsCDQt9Cw0L/QuNGBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMCIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+0JTRitC70LbQuNC90LA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+0JTQsNGC0LA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMiIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+0KDQtdC20LjQvCDQvdCwINC30LDQv9C40YEhINCd0LUg0LzQvtC20LUg0LTQsCDQv9GA0L7QvNC10L3Rj9GC0LUg0YHRgtC+0LnQvdC+0YHRgtC4LCDRgtC+0LLQsCDQtSDQt9Cw0L/QuNGB0LDQvSDRhNCw0LnQuyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDEzIiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT7Qn9C70LXQudCy0LDQvdC1INC90LAg0YLQvtC30Lgg0LfQsNC/0LjRgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTQiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPtCf0LvQtdC5IC8g0J/QsNGD0LfQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTUiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPtCh0YLQsNGA0YIg0LfQsNC/0LjRgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTYiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPtCh0YLQvtC/INC30LDQv9C40YE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE3IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT7Ql9Cw0L/QuNGBOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTgiIG5hbWU9InJlY29yZF9lcnJvcl9tc2ciPgorICAgIDx2YWx1ZT7QkiDQvNC+0LzQtdC90YLQsCDQtNGA0YPQsyDQv9C+0YLRgNC10LHQuNGC0LXQuyDQv9GA0LDQstC4INC30LDQv9C40YEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxOSIgbmFtZT0icmVjb3JkX21lc3NhZ2UiPgorICAgIDx2YWx1ZT7Ql9Cw0L/QuNGBISDQntGCINC/0L7RgtGA0LXQsdC40YLQtdC7OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjAiIG5hbWU9InJlY29yZF9jYW5jZWwiPgorICAgIDx2YWx1ZT7QvtGC0LrQsNC3PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyMSIgbmFtZT0icmVjb3JkX2NhbmNhbF90b29sdGlwIj4KKyAgICA8dmFsdWU+0JfQsNC/0LjRgdGK0YIg0YnQtSDQsdGK0LTQtSDQvtGC0LrQsNC30LDQvSDQuCDQvdGP0LzQsCDQtNCwINCx0YrQtNC1INC30LDQv9Cw0LzQtdGC0LXQvS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIyIiBuYW1lPSJjYW5jZWxfZGlhbG9nX3Jlc3VtZSI+CisgICAgPHZhbHVlPtC/0L7QtNC90L7QstGP0LLQsNC90LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIzIiBuYW1lPSJjYW5jZWxfZGlhbG9nX3Jlc3VtZV90b29sdGlwIj4KKyAgICA8dmFsdWU+0JfQsNGC0LLQvtGA0LXRgtC1INGC0L7Qt9C4INC/0YDQvtC30L7RgNC10YYg0LfQsCDQv9C+0LTQvdC+0LLRj9Cy0LDQvdC1INC90LAg0LfQsNC/0LjRgdCwLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjQiIG5hbWU9InBhaW50dG9vbHNfZWxsaXBzZV9jb2xvciI+CisgICAgPHZhbHVlPtGB0LzRj9C90LAg0L3QsCDRhtCy0LXRgtCwINC90LAg0LvQuNC90LjRj9GC0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI1IiBuYW1lPSJjb2xvcnBpY2tlcl9oZWFkIj4KKyAgICA8dmFsdWU+0JjQt9Cx0L7RgCDQvdCwINGG0LLRj9GCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyNiIgbmFtZT0icGFpbnR0b29sc19saW5lX2Rpc2FibGUiPgorICAgIDx2YWx1ZT7QmNC30LrQuy4v0JLQutC7LiDRhtCy0Y/RgiDQvdCwINC70LjQvdC40Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI3IiBuYW1lPSJwYWludHRvb2xzX2ZpbGxfZGlzYWJsZSI+CisgICAgPHZhbHVlPtGB0LzRj9C90LAg0L3QsCDRhtCy0LXRgtCwINC90LAg0LfQsNC/0YrQu9Cy0LDQvdC10YLQvjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjgiIG5hbWU9InBhaW50dG9vbHNfbGluZV9kaXNhYmxlIj4KKyAgICA8dmFsdWU+0JjQt9C60LsuL9CS0LrQuy4g0YbQstGP0YIg0L3QsCDQt9Cw0L/RitC70LLQsNC90LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI5IiBuYW1lPSJjaGFuZ2Vfd2lkdGhfYXJyb3dfZG93bl9zbGlkZXIiPgorICAgIDx2YWx1ZT7RgdC80Y/QvdCwINGI0LjRgNC40L3QsNGC0LAg0L3QsCDQu9C40L3QuNGP0YLQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzAiIG5hbWU9ImNsb3NlX3NtYWxsX3BvcHVwcyI+CisgICAgPHZhbHVlPtC30LDRgtCy0LDRgNGP0L3QtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzEiIG5hbWU9InBhaW50X3Rvb2xfbGV0dGVyIj4KKyAgICA8dmFsdWU+0YHQvNGP0L3QsCDQvdCwINGA0LDQt9C80LXRgNCwINC90LAg0YjRgNC40YTRgtCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzMiIgbmFtZT0icmVjb3JkaW5nc2xpc3RfZGVsZXRlIj4KKyAgICA8dmFsdWU+0JjQt9GC0YDQuNCy0LDQvdC1INC90LAg0LfQsNC/0LjRgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzMiIG5hbWU9InJlY29yZGluZ3NsaXN0X3JlY29yZGVkQnlHdWVzdCI+CisgICAgPHZhbHVlPtCT0L7RgdGCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNCIgbmFtZT0icmVjb3JkaW5nc2xpc3RfcmVjb3JkZWRieSI+CisgICAgPHZhbHVlPtCe0YI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNSIgbmFtZT0icmVjb3JkaW5nc190YWJsZV9oZWFkX25hbWUiPgorICAgIDx2YWx1ZT7QmNC80LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM2IiBuYW1lPSJyZWNvcmRpbmdzX3RhYmxlX2hlYWRfcm9vbSI+CisgICAgPHZhbHVlPtCh0YLQsNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNyIgbmFtZT0icmVjb3JkaW5nc190YWJsZV9oZWFkX2RhdGUiPgorICAgIDx2YWx1ZT7QlNCw0YLQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzgiIG5hbWU9InJlY29yZF9zdGFydF9jYW5jZWwiPgorICAgIDx2YWx1ZT7QvtGC0LrQsNC3PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzOSIgbmFtZT0icmVjb3JkX3N0YXJ0X3N0YXJ0Ij4KKyAgICA8dmFsdWU+0YHRgtCw0YDRgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDAiIG5hbWU9ImZpbGVzYnJvd3Nlcl90YWJsZV9oZWFkX25hbWUiPgorICAgIDx2YWx1ZT7QmNC80LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQxIiBuYW1lPSJmaWxlc2Jyb3dzZXJfdGFibGVfaGVhZF9kYXRlIj4KKyAgICA8dmFsdWU+0JTQsNGC0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQyIiBuYW1lPSJjaGF0X2NsZWFyX2hpc3RvcnkiPgorICAgIDx2YWx1ZT7QmNC30YLRgNC40LLQsNC90LUg0L3QsCDRh9Cw0YIg0LjRgdGC0L7RgNC40Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQzIiBuYW1lPSJjaGF0X292ZXJhbGxfaGVhZGVyIj4KKyAgICA8dmFsdWU+0KfQsNGCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NCIgbmFtZT0iY2hhdF9zZW5kX2J0biI+CisgICAgPHZhbHVlPtC40LfQv9GA0LDRidCw0L3QtSDQvdCwINGB0YrQvtCx0YnQtdC90LjQtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDUiIG5hbWU9ImNoYXRfZW1vdF9idG4iPgorICAgIDx2YWx1ZT7QldC80L7RgtC40LrQvtC90Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ2IiBuYW1lPSJjaGF0X2Vtb3Rfd2luIj4KKyAgICA8dmFsdWU+0JXQvNC+0YLQuNC60L7QvdC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NyIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzIj4KKyAgICA8dmFsdWU+0JjQt9Cx0L7RgCDQvdCwINGD0YHRgtGA0L7QudGB0YLQstCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0OCIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2NvbWJvIj4KKyAgICA8dmFsdWU+0JDRg9C00LjQviDQuCDQktC40LTQtdC+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0OSIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2NvbWJvIj4KKyAgICA8dmFsdWU+0KHQsNC80L4g0JDRg9C00LjQvjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTAiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPtCh0LDQvNC+INCS0LjQtNC10L48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUxIiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT7QsdC10Lcg0JDRg9C00LjQvi/QktC40LTQtdC+ICjRgdGC0LDRgtC40YfQvdC+INC40LfQvtCx0YDQsNC20LXQvdC40LUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1MiIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2luZm9fdGV4dCI+CisgICAgPHZhbHVlPtCd0Y/QvNCwINC00LAg0YHQtSDQv9C+0LrQsNC30LLQsCDQvdC40LrQsNC60LLQviDQkNGD0LTQuNC+L9CS0LjQtNC10L4g0L7RgiDQktCw0YjQtdGC0L4gUEMsINCy0LzQtdGB0YLQviDRgtC+0LLQsCDRidC1INGB0LUg0L/QvtC60LDQt9Cy0LAg0YHRgtCw0YLQuNGH0L3QviDQuNC30L7QsdGA0LDQttC10L3QuNC1LiDQnNC+0LbQtSDQtNCwINC40LfQsdC10YDQtdGC0LUg0YLQsNC30Lgg0L3QsNGB0YLRgNC+0LnQutCwLCDQsNC60L4g0LjQvNCw0YLQtSDQsdCw0LLQvdCwINCY0L3RgtC10YDQvdC10YIg0LLRgNGK0LfQutCwLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTMiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfbW9uZGF5Ij4KKyAgICA8dmFsdWU+0J/QntCdPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV90dWVzZGF5Ij4KKyAgICA8dmFsdWU+0JLQojwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTUiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfd2VkbmVzZGF5Ij4KKyAgICA8dmFsdWU+0KHQoDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTYiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfdGh1cnNkYXkiPgorICAgIDx2YWx1ZT7Qp9CV0KI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU3IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX2ZyaWRheSI+CisgICAgPHZhbHVlPtCf0JXQojwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTgiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfc2F0dXJkYXkiPgorICAgIDx2YWx1ZT7QodCq0JE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU5IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3N1bmRheSI+CisgICAgPHZhbHVlPtCd0JXQlDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjAiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfbW9uZGF5Ij4KKyAgICA8dmFsdWU+0J/QvtC90LXQtNC10LvQvdC40Lo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYxIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1R1ZXNkYXlMYWJlbCI+CisgICAgPHZhbHVlPtCS0YLQvtGA0L3QuNC6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MiIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9XZWRuZXNkYXlMYWJlbCI+CisgICAgPHZhbHVlPtCh0YDRj9C00LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYzIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1RodXJzZGF5TGFiZWwiPgorICAgIDx2YWx1ZT7Qp9C10YLQstGK0YDRgtGK0Lo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY0IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX0ZyaWRheUxhYmVsIj4KKyAgICA8dmFsdWU+0J/QtdGC0YrQujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjUiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfU2F0dXJkYXlMYWJlbCI+CisgICAgPHZhbHVlPtCh0YrQsdC+0YLQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjYiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfU3VuZGF5TGFiZWwiPgorICAgIDx2YWx1ZT7QndC10LTQtdC70Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY3IiBuYW1lPSJjYWxlbmRhcl93ZWVrbnVtYmVyX2hlYWRlciI+CisgICAgPHZhbHVlPtGB0LXQtNC8PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2OCIgbmFtZT0iY2FsZW5kYXJfd2Vla251bWJlcl9oZWFkZXJUb29sdGlwIj4KKyAgICA8dmFsdWU+0KHQtdC00LzQuNGG0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY5IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+0K/QvdGD0LDRgNC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3MCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPtCk0LXQstGA0YPQsNGA0Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDcxIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+0JzQsNGA0YI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDcyIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+0JDQv9GA0LjQuzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzMiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT7QnNCw0Lk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc0IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+0K7QvdC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3NSIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPtCu0LvQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzYiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT7QkNCy0LPRg9GB0YI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc3IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+0KHQtdC/0YLQtdC80LLRgNC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3OCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPtCe0LrRgtC+0LzQstGA0Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc5IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+0J3QvtC10LzQstGA0Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgwIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+0JTQtdC60LXQvNCy0YDQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODEiIG5hbWU9ImNhbGVuZGFyd2luX2hlYWRlciI+CisgICAgPHZhbHVlPtCa0LDQu9C10L3QtNCw0YA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgyIiBuYW1lPSJyb29tYWRtaW5fbGFiZWxOdW1iZXJPZlBhcnRpY2lwYW50cyI+CisgICAgPHZhbHVlPtCj0YfQsNGB0YLQvdC40YbQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODMiIG5hbWU9InJvb21WYWx1ZV9hZHZhbmNlZFNldHRpbmdzIj4KKyAgICA8dmFsdWU+0J/QvtC60LDQt9Cy0LDQvdC1INC90LDRgdGC0YDQvtC50LrQuCDQvdCwINC40LfQs9C70LXQtNCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NCIgbmFtZT0icm9vbUFkbWluX2xheW91dF92aWRlb1giPgorICAgIDx2YWx1ZT5YIHwgWTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODUiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfdmlkZW9ZIj4KKyAgICA8dmFsdWU+0KjQuNGA0LjQvdCwIHwg0JLQuNGB0L7Rh9C40L3QsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODYiIG5hbWU9InJvb21BZG1pbl9sYXlvdXQiPgorICAgIDx2YWx1ZT7QktC40LTQtdC+LdC60L7QvdGC0LXQudC90LXRgDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODciIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfbW9kIj4KKyAgICA8dmFsdWU+0JzQvtC00LXRgNCw0YbQuNGPLdC60L7QvdGC0LXQudC90LXRgDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODgiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfbW9kX3BvcyI+CisgICAgPHZhbHVlPlg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg5IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmQiPgorICAgIDx2YWx1ZT7QlNGK0YHQutCwLdC60L7QvdGC0LXQudC90LXRgDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTAiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZF9zaG93Ij4KKyAgICA8dmFsdWU+0JLQutC70Y7Rh9C10L08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkxIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmRfcG9zIj4KKyAgICA8dmFsdWU+WCB8IFk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkyIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmQiPgorICAgIDx2YWx1ZT7QqNC40YDQuNC90LAgfCDQktC40YHQvtGH0LjQvdCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5MyIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlcyI+CisgICAgPHZhbHVlPtCk0LDQudC70L7QstC1LNCn0LDRgizQo9GH0LDRgdGC0L3QuNGG0Lgt0LrQvtC90YLQtdC50L3QtdGAPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NCIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlc19zaG93Ij4KKyAgICA8dmFsdWU+0JLQutC70Y7Rh9C10L08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk1IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X2ZpbGVzX3BvcyI+CisgICAgPHZhbHVlPlggfCBZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NiIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlcyI+CisgICAgPHZhbHVlPtCo0LjRgNC40L3QsCB8INCS0LjRgdC+0YfQuNC90LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk3IiBuYW1lPSJtb2RlcmF0b3JfZ29uZV9tZXNzYWdlIj4KKyAgICA8dmFsdWU+0JzQvtC00LXRgNCw0YLQvtGA0YrRgiDQtSDQvdCw0L/Rg9GB0L3QsNC7INGB0YLQsNGP0YLQsCDQuCDQvdC40LrQvtC5INC90LUg0L/RgNC40YHRitGB0YLQstCwINCyINC80L7QvNC10L3RgtCwLiDQnNC+0LbQtSDQtNCwINC/0L7QuNGB0LrQsNGC0LUg0L/RgNCw0LLQsCDQvdCwINC80L7QtNCw0YDQsNGC0L7RgCDQuNC70Lgg0LTQsCDQuNC30YfQsNC60LDRgtC1LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTgiIG5hbWU9Im1vZGVyYXRvcl9tZXNzYWdlX2V2ZW50X25vX21vZCI+CisgICAgPHZhbHVlPtCd0Y/QvNCwINC80L7QtNC10YDQsNGC0L7RgCDQsiDRgdGC0LDRj9GC0LAsINC90L4g0LjQvNCwINC00YDRg9Cz0Lgg0YPRh9Cw0YHRgtC90LjRhtC4LiDQnNC+0LbQtSDQtNCwINC/0L7QuNGB0LrQsNGC0LUg0L/RgNCw0LLQsCDQvdCwINC80L7QtNCw0YDQsNGC0L7RgCDQuNC70Lgg0LTQsCDQuNC30YfQsNC60LDRgtC1LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTkiIG5hbWU9ImZlZWRiYWNrX3RlbXBsYXRlX3N1YmplY3QiPgorICAgIDx2YWx1ZT7QntCx0YDQsNGC0L3QsCDQstGA0YrQt9C60LAg0YEgJEFQUF9OQU1FPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwMCIgbmFtZT0iaW52aXRhdGlvbl90ZW1wbGF0ZV9oZWFkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIC0g0J/QvtC60LDQvdCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwMSIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X2Zyb20iPgorICAgIDx2YWx1ZT7QodGK0L7QsdGJ0LXQvdC40LUg0L7RgiDQv9C+0YLRgNC10LHQuNGC0LXQuzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAyIiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfbWVzc2FnZSI+CisgICAgPHZhbHVlPtCh0YrQvtCx0YnQtdC90LjQtTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAzIiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfY2xpY2tfdGV4dCI+CisgICAgPHZhbHVlPtCd0LDRgtC40YHQvdC10YLQtSDQu9C40L3QutCwLCDQt9CwINC00LAg0YPRh9Cw0YHRgtCy0LDRgtC1INCyINGB0YDQtdGJ0LDRgtCwOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDQiIG5hbWU9Imludml0YXRpb25fdGV4dF9jbGlja190ZXh0X2xpbmsiPgorICAgIDx2YWx1ZT7QndCw0YLQuNGB0L3QtdGC0LUg0YLRg9C6LCDQt9CwINCy0YXQvtC0INCyINGB0YLQsNGP0YLQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDUiIG5hbWU9Imludml0YXRpb25fdGV4dF9jbGlja190ZXh0X2hlbHAiPgorICAgIDx2YWx1ZT7QkNC60L4g0LjQvNCw0YLQtSDQv9GA0L7QsdC70LXQvNC4INGBINC70LjQvdC60LAsINC60L7Qv9C40YDQsNC50YLQtSDQs9C+INC4INCz0L4g0LLQvNGK0LrQvdC10YLQtSDQsiDQsdGA0LDRg9C30YrRgNCwOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDYiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9oZWFkIj4KKyAgICA8dmFsdWU+0KDQtdCz0LjRgdGC0YDQsNGG0LjRjyDQsiAkQVBQX05BTUU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA3IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfaGVhZDIiPgorICAgIDx2YWx1ZT7Qn9C+0YLRgNC10LHQuNGC0LXQu9GB0LrQuCDQtNCw0L3QvdC4OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDgiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF91c2VybmFtZSI+CisgICAgPHZhbHVlPtCf0L7RgtGA0LXQsdC40YLQtdC70YHQutC+INC40LzQtTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA5IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfcGFzcyI+CisgICAgPHZhbHVlPtCf0LDRgNC+0LvQsDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTEwIiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfbWFpbCI+CisgICAgPHZhbHVlPkUtbWFpbDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTExIiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfYnllIj4KKyAgICA8dmFsdWU+0JXQutC40L8g0L3QsCAkQVBQX05BTUU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTEyIiBuYW1lPSJyZWdpc3Rlcl9tYWlsX3N1YmplY3QiPgorICAgIDx2YWx1ZT7QoNC10LPQuNGB0YLRgNCw0YbQuNGPINCyICRBUFBfTkFNRTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTMiIG5hbWU9InJlc2V0X3Bhc3N3b3JkX3RlbXBsYXRlX2hlYWQiPgorICAgIDx2YWx1ZT7QndC+0LLQsCDQv9Cw0YDQvtC70LAg0LfQsCAkQVBQX05BTUU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE0IiBuYW1lPSJyZXNldF9wYXNzd29yZF90ZW1wbGF0ZV90ZXN0X2xpbmsiPgorICAgIDx2YWx1ZT7QndCw0YLQuNGB0L3QtdGC0LUg0LvQuNC90LrQsCwg0LfQsCDQtNCwINCy0YrQstC10LTQtdGC0LUg0L3QvtCy0LAg0L/QsNGA0L7Qu9CwLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTUiIG5hbWU9InJlc2V0X3Bhc3N3b3JkX3RlbXBsYXRlX3RleHQyX2xpbmsiPgorICAgIDx2YWx1ZT7QndCw0YLQuNGB0L3QtdGC0LUg0YLRg9C6LCDQt9CwINC00LAg0LLRitCy0LXQtNC10YLQtSDQvdC+0LLQsCDQv9Cw0YDQvtC70LAuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNiIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfdGV4dDNfbGluayI+CisgICAgPHZhbHVlPtCQ0LrQviDQuNC80LDRgtC1INC/0YDQvtCx0LvQtdC80Lgg0YEg0LvQuNC90LrQsCwg0LrQvtC/0LjRgNCw0LnRgtC1INCz0L4g0Lgg0LPQviDQstC80YrQutC90LXRgtC1INCyINCx0YDQsNGD0LfRitGA0LA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNyIgbmFtZT0icmVzZXRfcGFzc3dvcmRfbWFpbF9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+0J3QvtCy0LAg0L/QsNGA0L7Qu9CwINC30LAgJEFQUF9OQU1FPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxOCIgbmFtZT0iZGF0ZVJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+0JLRitCy0LXQtNC10YLQtSDQstCw0LvQuNC00L3QsCDQtNCw0YLQsCwg0L3QsNC/0YDQuNC80LXRgCAyNC4xMS4yMDAxICjQtNC0LtC80Lwu0LPQs9Cz0LMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxOSIgbmFtZT0iZW1haWxSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPtCS0YrQstC10LTQtdGC0LUg0LLQsNC70LjQtNC10L0gZS1tYWlsLCDQvdCw0L/RgNC40LzQtdGAIG5hbWVAbWFpbC5jb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIwIiBuYW1lPSJmbG9hdFJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+0JLRitCy0LXQtNC10YLQtSDQtNC10YHQtdGC0LjRh9C90L4g0YfQuNGB0LvQviwg0L3QsNC/0YDQuNC80LXRgCAxLjAwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyMSIgbmFtZT0ibnVtYmVyUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT7QktGK0LLQtdC00LXRgtC1INGG0Y/Qu9C+INGH0LjRgdC70L4sINC90LDQv9GA0LjQvNC10YAgMTAwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyMiIgbmFtZT0icGhvbmVSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPtCS0YrQstC10LTQtdGC0LUg0LLQsNC70LjQtNC10L0g0YLQtdC70LXRhNC+0L0sINC90LDQv9GA0LjQvNC10YAgKzM1OSA4ODggMTIzNDU2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyMyIgbmFtZT0idGltZVJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+0JLRitCy0LXQtNC10YLQtSDQstCw0LvQuNC00L3QviDQstGA0LXQvNC1LCDQvdCw0L/RgNC40LzQtdGAIDEyOjIzICjRh9GHOtC80LwpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3ciPgorICAgIDx2YWx1ZT7Ql9Cw0YnQuNGC0LAg0YEg0L/QsNGA0L7Qu9CwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNSIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfcGFzc3dvcmRMYWJlbCI+CisgICAgPHZhbHVlPtCf0LDRgNC+0LvQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjYiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkTGFiZWwiPgorICAgIDx2YWx1ZT7Qn9C10YDQuNC+0LQg0L3QsCDQstCw0LvQuNC00L3QvtGB0YI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI3IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZCI+CisgICAgPHZhbHVlPtCR0LXQt9C60YDQsNC10L08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI4IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZCI+CisgICAgPHZhbHVlPtCf0LXRgNC40L7QtDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjkiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkIj4KKyAgICA8dmFsdWU+0JXQtNC40L0g0L/RitGCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWRGcm9tTGFiZWwiPgorICAgIDx2YWx1ZT7QktCw0LvQuNC00L3QvtGB0YIg0L7Rgjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMxIiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZFRvTGFiZWwiPgorICAgIDx2YWx1ZT7QktCw0LvQuNC00L3QvtGB0YIg0LTQvjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMyIiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd19NYWlsU3ViamVjdCI+CisgICAgPHZhbHVlPtCf0L7QutCw0L3QsCDQt9CwICRBUFBfTkFNRTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzMiIG5hbWU9Imludml0YXRpb25fZXJyb3IiPgorICAgIDx2YWx1ZT7QndGP0LzQsCDQv9C+0LrQsNC90LAg0L3QsCDRgNCw0L/QvtC70L7QttC10L3QuNC1LCDQt9CwINGC0L7Qt9C4INC60L7QtC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM0IiBuYW1lPSJpbnZpdGF0aW9uX2Vycm9yIj4KKyAgICA8dmFsdWU+0J/QvtC60LDQvdCw0YLQsCDQstC10YfQtSDQtSDQuNC30L/QvtC70LfQstCw0L3QsC4g0KLQvtC30Lgg0YLQuNC/INC/0L7QutCw0L3QuCDQvdC1INC80L7Qs9Cw0YIg0LTQsCDRgdC1INC40LfQv9C+0LvQt9Cy0LDRgiDQv9C+0LLRgtC+0YDQvdC+LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzUiIG5hbWU9Imludml0YXRpb25fZXJyb3IiPgorICAgIDx2YWx1ZT7QmtC+0LTRitGCINC30LAg0L/QvtC60LDQvdCwINC90LUg0LUg0LLQsNC70LjQtNC10L0uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzNiIgbmFtZT0iaW52aXRhdGlvbl9wYXNzIj4KKyAgICA8dmFsdWU+0J/QsNGA0L7Qu9CwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzNyIgbmFtZT0iaW52aXRhdGlvbl9wYXNzX2J0biI+CisgICAgPHZhbHVlPtCf0YDQvtCy0LXRgNC60LAg0L3QsCDQv9Cw0YDQvtC70LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM4IiBuYW1lPSJpbnZpdGF0aW9uX3Bhc3NfZXJyb3IiPgorICAgIDx2YWx1ZT7Qk9GA0LXRiNC90LAg0L/QsNGA0L7Qu9CwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzOSIgbmFtZT0iQnJvd3NlciI+CisgICAgPHZhbHVlPtCQ0YPQtNC40L4v0JLQuNC00LXQvjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDAiIG5hbWU9ImF1ZGlvX3ZpZGVvIj4KKyAgICA8dmFsdWU+0KHQuNC90YXRgNC+0L3QuNC30LDRhtC40Y8g0L3QsCDQkNGD0LTQuNC+L9CS0LjQtNC10L48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQxIiBuYW1lPSJlcnJvckNvZGVfaW52YWxpZFNlc3Npb24iPgorICAgIDx2YWx1ZT7QktGF0L7QtNGK0YIg0LIg0YHQuNGB0YLQtdC80LDRgtCwINC1INC60L7RgNC10LrRgtC10L0sINC90L4g0YHQtdGB0LjRj9GC0LAg0JLQuCDQvdC1INC1INCw0LrRgtC40LLQvdCwLiDQotGA0Y/QsdCy0LAg0LTQsCDQvtC/0LjRgtCw0YLQtSDQv9C+0LLRgtC+0YDQtdC9INCy0YXQvtC0INCyINGB0LjRgdGC0LXQvNCw0YLQsC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQyIiBuYW1lPSJlcnJvcmNvZGVfc2V0VXNlck9iamVjdCI+CisgICAgPHZhbHVlPtCT0YDQtdGI0L3QsCDRgdC10YHQuNGPINC40LvQuCDQu9C40L/RgdCwINC90LAg0LDQtNC80LjQvSDQv9GA0LDQstCwLiDQotGA0Y/QsdCy0LAg0LTQsCDQuNC80LDRgtC1INCw0LTQvNC40L0g0L/RgNCw0LLQsCwg0LfQsCDQtNCwINC00L7QsdCw0LLRj9GC0LUg0L3QvtCy0Lgg0L/QvtGC0YDQtdCx0LjRgtC10LvQuC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQzIiBuYW1lPSJlcnJvcmNvZGVfbG9naW5CeVJlbW90ZVVzZXIiPgorICAgIDx2YWx1ZT7QodC10YHQuNGP0YLQsCDQvdC1INC80L7QttC1INC00LAg0YHQtSDRgdCy0YrRgNC20LUg0YEg0L7RgtC00LDQu9C10YfQtdC90LjRjyDQv9C+0YLRgNC10LHQuNGC0LXQuy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ0IiBuYW1lPSJkZWJ1Z19tZXNzYWdlX3JlY29yZGluZyI+CisgICAgPHZhbHVlPtCg0LXQutC+0YDQtNC10YDRitGCINC1INCyINC80L7QvNC10L3RgtCwINCyINCR0JXQotCQLdCy0LXRgNGB0LjRjyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ1IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWFZhbHVlIj4KKyAgICA8dmFsdWU+eDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDYiIG5hbWU9InByb3BlcnR5UGFuZWxYVmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPngt0L7RgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDciIG5hbWU9InByb3BlcnR5UGFuZWxZVmFsdWUiPgorICAgIDx2YWx1ZT55PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0OCIgbmFtZT0icHJvcGVydHlQYW5lbFlWYWx1ZUxhYmVsIj4KKyAgICA8dmFsdWU+eS3QvtGBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0OSIgbmFtZT0icHJvcGVydHlQYW5lbFdpZHRoVmFsdWUiPgorICAgIDx2YWx1ZT7RiNC40YA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUwIiBuYW1lPSJwcm9wZXJ0eVBhbmVsV2lkdGhWYWx1ZUxhYmVsIj4KKyAgICA8dmFsdWU+0YjQuNGA0LjQvdCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1MSIgbmFtZT0icHJvcGVydHlQYW5lbEhlaWdodFZhbHVlIj4KKyAgICA8dmFsdWU+0LLQuNGBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1MiIgbmFtZT0icHJvcGVydHlQYW5lbEhlaWdodFZhbHVlTGFiZWwiPgorICAgIDx2YWx1ZT7QstC40YHQvtGH0LjQvdCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1MyIgbmFtZT0icHJvcGVydHlPcGFjaXR5U2xpZGVyIj4KKyAgICA8dmFsdWU+0J/RgNC+0LzRj9C90LAg0L/RgNC+0LfRgNCw0YfQvdC+0YHRgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTQiIG5hbWU9ImJyb3dzZXJPcGVuIj4KKyAgICA8dmFsdWU+0J7RgtCy0LDRgNGP0L3QtSDQsdGA0LDRg9C30YrRgDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTUiIG5hbWU9ImJyb3dzZXJDbG9zZSI+CisgICAgPHZhbHVlPtCX0LDRgtCy0LDRgNGP0L3QtSDQsdGA0LDRg9C30YrRgDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTYiIG5hbWU9ImNvbm5lY3Rpb25Mb3N0TWVzc2FnZSI+CisgICAgPHZhbHVlPtCS0YDRitC30LrQsNGC0LAg0YHRitGBINGB0YrRgNCy0YrRgNCwINC1INC/0YDQtdC60YrRgdC90LDRgtCwLiDQotGA0Y/QsdCy0LAg0LTQsCDQt9Cw0YDQtdC00LjRgtC1INC90LDQvdC+0LLQviDQv9GA0LjQu9C+0LbQtdC90LjQtdGC0L4g0LjQu9C4INC00LAg0L/RgNC+0LLQtdGA0LjRgtC1INC80YDQtdC20LDRgtCwINGB0LguPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1NyIgbmFtZT0iNTU3Ij4KKyAgICA8dmFsdWU+0KPQutCw0LfQsNGC0LXQuzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTgiIG5hbWU9InN5bmMgbWVzc2FnZSBoZWFkZXIiPgorICAgIDx2YWx1ZT7QodC40L3RhdGA0L7QvdC40LfQsNGG0LjRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTkiIG5hbWU9IlN5bmNocm9uaXppbmcgbWVzc2FnZSI+CisgICAgPHZhbHVlPtCh0LjQvdGF0YDQvtC90LjQt9Cw0YbQuNGPINC90LAg0L/QvtGC0YDQtdCx0LjRgtC10LvQuCwg0LzQvtC70Y8g0LjQt9GH0LDQutCw0LnRgtC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MCIgbmFtZT0iZXhwb3J0VG9TVkciPgorICAgIDx2YWx1ZT4mYW1wO2x0O3UmYW1wO2d0O9Ch0LLQsNC70Y/QvdC1INCyIFNWRyZhbXA7bHQ7L3UmYW1wO2d0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjEiIG5hbWU9ImV4cG9ydFRvSW1hZ2UiPgorICAgIDx2YWx1ZT4mYW1wO2x0O3UmYW1wO2d0O9Ch0LLQsNC70Y/QvdC1INCyIFBORyZhbXA7bHQ7L3UmYW1wO2d0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjIiIG5hbWU9ImV4cG9ydFRvSW1hZ2UiPgorICAgIDx2YWx1ZT4mYW1wO2x0O3UmYW1wO2d0O9Ch0LLQsNC70Y/QvdC1INCyIEpQRyZhbXA7bHQ7L3UmYW1wO2d0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjMiIG5hbWU9ImV4cG9ydFRvSW1hZ2UiPgorICAgIDx2YWx1ZT4mYW1wO2x0O3UmYW1wO2d0O9Ch0LLQsNC70Y/QvdC1INCyIFBERiZhbXA7bHQ7L3UmYW1wO2d0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjQiIG5hbWU9ImV4cG9ydFRvSW1hZ2UiPgorICAgIDx2YWx1ZT4mYW1wO2x0O3UmYW1wO2d0O9Ch0LLQsNC70Y/QvdC1INCyIFRJRiZhbXA7bHQ7L3UmYW1wO2d0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjUiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT7QndCw0L/QvtC80L3Rj9C90LU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2NiIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPtCa0LDRgtC10LPQvtGA0LjRjzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY3IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+0J/QvtCy0YLQsNGA0Y/QvdC1OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjgiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT7QvdGP0LzQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjkiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT7QnNGP0YHRgtC+OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzAiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT7QndCw0YfQsNC70L48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTcxIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+0JrRgNCw0Lk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTcyIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+0JfQsNCz0LvQsNCy0LjQtTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTczIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+0JrQvtC80LXQvdGC0LDRgDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc0IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+0J/QvtC60LDQvdCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPtCS0YHQtdC60Lgg0LTQtdC9PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NiIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPtCS0YHQtdC60Lgg0LzQtdGB0LXRhjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzciIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT7QktGB0Y/QutCwINCz0L7QtNC40L3QsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzgiIG5hbWU9ImFsZXJ0Ij4KKyAgICA8dmFsdWU+0JrRgNCw0Y/RgiDQvdCwINGB0YrQsdC40YLQuNC10YLQviDQtSDRgdC70LXQtCDQvdCw0YfQsNC70L7RgtC+INC80YMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3OSIgbmFtZT0iYWxlcnQiPgorICAgIDx2YWx1ZT7QktGK0LLQtdC00LXRgtC1INC30LDQs9C70LDQstC40LUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MCIgbmFtZT0iNTgwIj4KKyAgICA8dmFsdWU+0J7RgtC00Y/RgdC90L4g0L3QsNC70Y/QstC+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MSIgbmFtZT0iNTgxIj4KKyAgICA8dmFsdWU+0JDQutGC0LjQstC40YDQsNC50YLQtSwg0LDQutC+INC40YHQutCw0YLQtSDQtNCwINC/0LjRiNC10YLQtSDQvdCwINC10LfQuNC6INC+0YLQtNGP0YHQvdC+INC90LDQu9GP0LLQviAo0L7QsdGA0LDRgtC10L0g0YDQtdC0INC90LAg0LTRg9C80LjRgtC1KTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODIiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+0KLQsNCx0LvQvjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODMiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+0JPQu9C10LTQsNC90LUg0L3QsCDQt9Cw0L/QuNGB0LDQvdC4INGB0YDQtdGJ0Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg0IiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPtCh0YDQtdGJ0LAgLSDRgdGK0LfQtNCw0LLQsCDQutC+0L3RhNC10YDQtdC90YbQuNGPINGBIDQgKNC00L4gMTYpINC/0L7RgtGA0LXQsdC40YLQtdC70LgmYW1wO2x0O2JyLyZhbXA7Z3Q70LrQsNGC0L4g0LLRgdC40YfQutC4INC40LzQsNGCINCw0YPQtNC40L4gKyDQstC40LTQtdC+INC00L7RgdGC0YrQvzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODUiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+0KHRitCx0LjRgtC40LUgLSDRgdGK0LfQtNCw0LLQsCDQutC+0L3RhNC10YDQtdC90YbQuNGPINGBINC00L4gMjAwINC/0L7RgtGA0LXQsdC40YLQtdC70LgmYW1wO2x0O2JyLyZhbXA7Z3Q70LrQsNGC0L4g0YHQsNC80L4g0JzQvtC00LXRgNCw0YLQvtGA0YrRgiDQuNC80LAg0LDRg9C00LjQviArINCy0LjQtNC10L4g0LTQvtGB0YLRitC/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4NiIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT7QodGK0LfQtNCw0LLQsNC90LUg0L3QsCDQv9C+0YLRgNC10LHQuNGC0LXQu9C4LCDRgdGC0LDQuCwg0L7RgNCz0LDQvdC40LfQsNGG0LjQuCZhbXA7bHQ7YnIvJmFtcDtndDsrINC/0YDQvtC80Y/QvdCwINC90LAg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC40YLQtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODciIG5hbWU9InJvb20gQWRtaW5pc3RyYXRpb24gcm9vbWNsaWVudHMgbGlzdCI+CisgICAgPHZhbHVlPtCf0L7RgtGA0LXQsdC40YLQtdC70Lgg0LIg0YHRgtCw0Y/RgtCwINCyINC80L7QvNC10L3RgtCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4OCIgbmFtZT0icm9vbSBBZG1pbmlzdHJhdGlvbiByb29tY2xpZW50cyBsaXN0Ij4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg5IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT7Qm9C+0LPQuNC9PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5MCIgbmFtZT0icm9vbSBBZG1pbmlzdHJhdGlvbiByb29tY2xpZW50cyBsaXN0Ij4KKyAgICA8dmFsdWU+RDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTEiIG5hbWU9InN3ZiBzeW5jIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7Ql9Cw0YDQtdC20LTQsNC90LUg0L3QsCDQtNC+0LrRg9C80LXQvdGCLiDQnNC+0LvRjyDQuNC30YfQsNC60LDQudGC0LUg0LTQvtC60LDRgtC+INCy0YHQuNGH0LrQuCDQutC70LjQtdC90YLQuCDQsdGK0LTQsNGCINGB0LjQvdGF0YDQvtC90LjQt9C40YDQsNC90LguPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5MiIgbmFtZT0idXBsb2FkIGRpYWxvZyI+CisgICAgPHZhbHVlPtCa0LDRh9Cy0LDQvdC10YLQviDQtSDQt9Cw0LLRitGA0YjQtdC90L4sINC60L7QvdCy0LXRgNGC0LjRgNCw0L3QtSDQvdCwINC00L7QutGD0LzQtdC90YLQsC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTMiIG5hbWU9InVwbG9hZCBkaWFsb2ciPgorICAgIDx2YWx1ZT7QodGC0LDRgNGCINC60LDRh9Cy0LDQvdC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NCIgbmFtZT0idXBsb2FkIGRpYWxvZyI+CisgICAgPHZhbHVlPtCc0L7Qu9GPINC40LfQsdC10YDQtdGC0LUg0YTQsNC50Lsg0L7RgiDQtNC40YHQutCwLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTUiIG5hbWU9InVwbG9hZCBEaWFsb2ciPgorICAgIDx2YWx1ZT7QntGC0LrQsNC3PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NiIgbmFtZT0idXBsb2FkIERpYWxvZyI+CisgICAgPHZhbHVlPtCY0LfQsdC+0YAg0L3QsCDRhNCw0LnQuzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTciIG5hbWU9ImFkbWluaXN0cmF0aW9uIG5hdmlnYXRpb24iPgorICAgIDx2YWx1ZT7QktGA0YrQt9C60Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk4IiBuYW1lPSJjb25mYWRtaW4gdmFsdWUgbGlzdCI+CisgICAgPHZhbHVlPtCh0YLQvtC50L3QvtGB0YI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk5IiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+0KHRgtGA0LjQudC8SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAwIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+0JvQvtCz0LjQvTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDEiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT7QodCy0YrRgNC30LDQvSDQvtGCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwMiIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPtCh0YLQsNGPIC8g0J7QsdGF0LLQsNGCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwMyIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPtCa0LjQuiDQv9C+0YLRgNC10LHQuNGC0LXQuzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDQiIG5hbWU9ImtpY2sgdXNlciBjb25maXJtYXRpb24gZGlhbG9nIj4KKyAgICA8dmFsdWU+0JrQuNC6INC/0L7RgtGA0LXQsdC40YLQtdC7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwNSIgbmFtZT0ia2ljayB1c2VyIGNvbmZpcm1hdGlvbiBkaWFsb2ciPgorICAgIDx2YWx1ZT7QndCw0LjRgdGC0LjQvdCwINC70Lgg0LjRgdC60LDRgtC1INC60LjQuiDQvdCwINC/0L7RgtGA0LXQsdC40YLQtdC70Y8/JmFtcDtsdDtici8mYW1wO2d0O9Ci0L7QstCwINGB0LDQvNC+INGJ0LUg0LzQsNGF0L3QtSDQutC70LjQtdC90YLQsCDQvtGCINGB0YLQsNGP0YLQsCwg0Lgg0YHQu9C10LQg0YLQvtCy0LAg0YLQvtC5INC80L7QttC1INC00LAg0YHQtSDQu9C+0LPQvdC1INC90LDQvdC+0LLQvi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA2IiBuYW1lPSJraWNrIHVzZXIgbWVzc2FnZSBkaWFsb2ciPgorICAgIDx2YWx1ZT7QodC10YHQuNGP0YLQsCDQktC4INC1INC/0YDQuNC60LvRjtGH0LXQvdCwINC+0YIg0JDQtNC80LjQvdC40YHRgtGA0LDRgtC+0YAg0LjQu9C4INCc0L7QtNC10YDQsNGC0L7RgC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA3IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Bob25lIj4KKyAgICA8dmFsdWU+0KLQtdC70LXRhNC+0L08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA4IiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT7Qn9C+0YLRgNC10LHQuNGC0LXQu9GP0YIg0LUg0JzQvtC00LXRgNCw0YLQvtGAINCyINGC0LDQt9C4INGB0YLQsNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwOSIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+0J/QvtGC0YDQtdCx0LjRgtC10LvRj9GCINC40LzQsCDQv9GA0LDQstC+INC00LAg0YDQuNGB0YPQstCwINC90LAg0LTRitGB0LrQsNGC0LAuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMCIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+0KDQtSjRgdGC0LDRgNGCKSDQvdCwINCQ0YPQtNC40L4v0JLQuNC00LXQviDQuNC70Lgg0L/RgNC+0LzRj9C90LAg0L3QsCDQvdCw0YHRgtGA0L7QudC60LjRgtC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMSIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+0J/QvtC30LLQvtC70Y/QstCw0L3QtSDQvdCwINC/0L7RgtGA0LXQsdC40YLQtdC70Y8g0LTQsCDRgNC40YHRg9Cy0LAg0L3QsCDQtNGK0YHQutCw0YLQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTIiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPtCf0YDQtdC80LDRhdCy0LAg0L/RgNCw0LLQvtGC0L4g0LfQsCDRgNC40YHRg9Cy0LDQvdC1INC90LAg0LTRitGB0LrQsNGC0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEzIiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+0J/QvtGC0YDQtdCx0LjRgtC10LvQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTQiIG5hbWU9ImNvbmZlcmVuY2VQYW5lbHMiPgorICAgIDx2YWx1ZT7QpNCw0LnQu9C+0LLQtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTUiIG5hbWU9ImNvbmZlcmVuY2VQYW5lbHMiPgorICAgIDx2YWx1ZT7QkdGP0LvQsCDQtNGK0YHQutCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxNiIgbmFtZT0iY29uZmVyZW5jZVBhbmVscyI+CisgICAgPHZhbHVlPtCn0LDRgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTciIG5hbWU9Im9yZ2FuaXphdGlvbiBjaG9vc2UgaW5mbyI+CisgICAgPHZhbHVlPtCS0LDRiNC40Y/RgiDQsNC60LDRg9C90YIg0LUg0YHQstGK0YDQt9Cw0L0g0YEg0L/QvtCy0LXRh9C1INC+0YIgMSDQvtGA0LPQsNC90LjQt9Cw0YbQuNGPLiDQnNC+0LvRjywg0LjQt9Cx0LXRgNC10YLQtSDQtdC00L3QsCDQt9CwINGC0LXQutGD0YnQsNGC0LAg0YHQtdGB0LjRjy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE4IiBuYW1lPSJlcnJvciBtZXNzYWdlIHJvb20gZnVsbCI+CisgICAgPHZhbHVlPtCh0YLQsNGP0YLQsCDQtSDQv9GK0LvQvdCwINCyINC80L7QvNC10L3RgtCwLiDQnNC+0LvRjywg0L/RgNC+0LHQstCw0LnRgtC1INC+0YLQvdC+0LLQviDQv9C+LdC60YrRgdC90L4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxOSIgbmFtZT0icm9vbXR5cGVzIj4KKyAgICA8dmFsdWU+0KLQuNC/INGB0YLQsNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyMCIgbmFtZT0iYXBwb2ludGVkX3Jvb20iPgorICAgIDx2YWx1ZT7Qo9Cz0L7QstC+0YDQtdC90LAg0YHRgNC10YnQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjEiIG5hbWU9InNlcnZlcnRpbWUiPgorICAgIDx2YWx1ZT7QktGA0LXQvNC1INC90LAg0YHRitGA0LLRitGA0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIyIiBuYW1lPSJpbnZfcmVtaW5kZXJfdGVtcGxhdGVfaGVhZCI+CisgICAgPHZhbHVlPtCd0LDQv9C+0LzQvdGP0L3QtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjMiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2Zyb20iPgorICAgIDx2YWx1ZT7QodGK0L7QsdGJ0LXQvdC40LUg0L7RgiDQv9C+0YLRgNC10LHQuNGC0LXQuzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI0IiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9tZXNzYWdlIj4KKyAgICA8dmFsdWU+0KHRitC+0LHRidC10L3QuNC1OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjUiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2NsaWNrX3RleHQiPgorICAgIDx2YWx1ZT7QndCw0YLQuNGB0L3QtdGC0LUg0YLRg9C6INC30LAg0YPRh9Cw0YHRgtC40LUg0LIg0YHRgNC10YnQsNGC0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI2IiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9jbGlja190ZXh0X2xpbmsiPgorICAgIDx2YWx1ZT7QndCw0YLQuNGB0L3QtdGC0LUg0YLRg9C6INC30LAg0LLRhdC+0LQg0LIg0YHRgtCw0Y/RgtCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNyIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfY2xpY2tfdGV4dF9oZWxwIj4KKyAgICA8dmFsdWU+0JDQutC+INC40LzQsNGC0LUg0L/RgNC+0LHQu9C10LzQuCDRgSDRgtC+0LfQuCDQu9C40L3Quiwg0LzQvtC70Y8g0LrQvtC/0LjRgNCw0LnRgtC1INC4INCz0L4g0LLQvNGK0LrQvdC10YLQtSDQsiDQsdGA0LDRg9C30YrRgNCwOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjgiIG5hbWU9ImJ0bl9zZWFyY2hfaW50ZXJuIj4KKyAgICA8dmFsdWU+0LLRitGC0YAuINGC0YrRgNGB0LXQvdC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyOSIgbmFtZT0iYnRuX3NlYXJjaF9leHRlcm4iPgorICAgIDx2YWx1ZT7QlNC+0LHQsNCy0Y/QvdC1INCy0YrQvdGI0L3QuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzAiIG5hbWU9ImxibF9wcmVuYW1lIj4KKyAgICA8dmFsdWU+0JjQvNC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzMSIgbmFtZT0ibGJsX25hbWUiPgorICAgIDx2YWx1ZT7QpNCw0LzQuNC70LjRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzIiIG5hbWU9ImxibF9lbWFpbCI+CisgICAgPHZhbHVlPtCVLdC80LDQudC7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzMyIgbmFtZT0ibG9nb3V0Q29uZmlybV90aXRsZSI+CisgICAgPHZhbHVlPtCf0L7RgtCy0YrRgNC20LTQsNCy0LDQvdC1INC40LfRhdC+0LQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM0IiBuYW1lPSJsb2dvdXRDb25maXJtX3N1cmVfdG9fbG9nb3V0X3F1ZXN0aW9uIj4KKyAgICA8dmFsdWU+0JjRgdC60LDRgtC1INC70Lgg0LTQsCDQuNC30LvQtdC30LXRgtC1INGB0LXQs9CwPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzUiIG5hbWU9Im1haW4gbWVudSI+CisgICAgPHZhbHVlPtCU0LXQudC90L7RgdGC0Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM2IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+0JTQtdC80L4g0YHRgtCw0Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+0JTQtdC80L4g0LLRgNC10LzQtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzgiIG5hbWU9Im1lZXRpbmcgVGltZXIiPgorICAgIDx2YWx1ZT7QotCw0LnQvNC10YAg0L3QsCDRgdGA0LXRidCw0YLQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzkiIG5hbWU9Im1lZXRpbmcgVGltZXIiPgorICAgIDx2YWx1ZT7QotCw0LfQuCDRgdGC0LDRjyDQtSDQlNC10LzQviDRgdGC0LDRjy4g0JfQsCDQtNCwINC40LfQutC70Y7Rh9C40YLQtSDRgtC+0LLQsCDQv9GA0LXQtNGD0L/RgNC10LbQtNC10L3QuNC1LCDRgtGA0Y/QsdCy0LAg0LTQsCDQstC70LXQt9C10YLQtSDQsiDRh9Cw0YHRgtC90LAg0YHRgtCw0Y8g0LjQu9C4INC00LAg0L3QsNGB0YLRgNC+0LjRgtC1INGB0L7QsdGB0YLQstC10L0g0YHRitGA0LLRitGALjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDAiIG5hbWU9Im1lZXRpbmcgcm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPtCc0L7QtNC10YDQuNGA0LDQvTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDEiIG5hbWU9Im1vZGVyYXRlZCByb29tIHdhaXRpbmcgbWVzc2FnZSI+CisgICAgPHZhbHVlPtCc0L7Qu9GPINC40LfRh9Cw0LrQsNC50YLQtSDQtNC+0LrQsNGC0L4g0JzQvtC00LXRgNCw0YLQvtGA0YrRgiDQstC70LXQt9C1INCyINGB0YLQsNGP0YLQsC4g0JzQvtC00LXRgNCw0YLQvtGA0YrRgiDQvNC+0LbQtSDQtNCwINC1INGD0YfQuNGC0LXQuywg0LDQtNC80LjQvdC40YHRgtGA0LDRgtC+0YAg0LjQu9C4INGB0YrQt9C00LDRgtC10Lsg0L3QsCDRgdGC0LDRj9GC0LAuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MiIgbmFtZT0iZXJyb3IgcG9wdXAiPgorICAgIDx2YWx1ZT5PSzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDMiIG5hbWU9IndpbmRvdyBzY3JlZW5zaGFyaW5nIj4KKyAgICA8dmFsdWU+0KHQv9C+0LTQtdC70LXQvSDQtdC60YDQsNC9PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0NCIgbmFtZT0id2luZG93IHNjcmVlbiBzaGFyaW5nIj4KKyAgICA8dmFsdWU+0JjQvNCwINC90L7QsiDRgdC/0L7QtNC10LvQtdC9INC10LrRgNCw0L0g0L7RgiDQv9C+0YLRgNC10LHQuNGC0LXQuzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ1IiBuYW1lPSJ3aW5kb3cgc2NyZWVuIHNoYXJpbmciPgorICAgIDx2YWx1ZT7QodGC0LDRgNGCINC90LAg0YHQv9C+0LTQtdC70Y/QvdC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0NiIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT7QlNC+0LHQsNCy0Y/QvdC1INC90LAg0YHRgNC10YnQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDciIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+0KHRgtCw0Y8g0LfQsCDRgdGA0LXRidCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0OCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT7QodGC0LDRjyDQt9CwINGB0YrQsdC40YLQuNC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0OSIgbmFtZT0ibWFpbiBtZW51IG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT7QnNC+0LTQtdGA0LDRhtC40Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUwIiBuYW1lPSJtZW51IG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT7QnNC+0LTQtdGA0LDRhtC40Y8g0L3QsCDQv9C+0YLRgNC10LHQuNGC0LXQu9C4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1MSIgbmFtZT0ibWVudSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+0JzQvtC00LXRgNCw0YbQuNGPINC90LAg0YHRgtCw0Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUyIiBuYW1lPSJtb2RlcmF0b3Igb3JnIj4KKyAgICA8dmFsdWU+0Jw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUzIiBuYW1lPSJjb25maXJtIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT7QmNGB0LrQsNGC0LUg0LvQuCDRgtC+0LfQuCDQv9C+0YLRgNC10LHQuNGC0LXQuyDQtNCwINGB0YLQsNC90LUg0JzQvtC00LXRgNCw0YLQvtGAINC90LAg0YLQsNC30Lgg0L7RgNCz0LDQvdC40LfQsNGG0LjRjz88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU0IiBuYW1lPSJlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+0JzQvtC70Y8g0LjQt9Cx0LXRgNC10YLQtSDQv9GK0YDQstC+INC+0YDQs9Cw0L3QuNC30LDRhtC40Y8hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1NSIgbmFtZT0iY2hvb3NlIHVzZXIgd2luZG93Ij4KKyAgICA8dmFsdWU+0J7RgNCz0LDQvdC40LfQsNGG0LjRjyAtINCc0L7QtNC10YDQsNGC0L7RgDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTYiIG5hbWU9Im1vZGVyYXRvciBvcmcgdXNlcnMiPgorICAgIDx2YWx1ZT7QmNGB0LrQsNGC0LUg0LvQuCDQtNCwINC40LfRgtGA0LjQtdGC0LUg0L/QvtGC0YDQtdCx0LjRgtC10LvRjyDQvtGCINC+0YDQs9Cw0L3QuNC30LDRhtC40Y/RgtCwPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTciIG5hbWU9Im9yZyBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+0J/QvtGC0YDQtdCx0LjRgtC10LvRj9GCINC1INCc0L7QtNC10YDQsNGC0L7RgDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTgiIG5hbWU9Im9yZyBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+0J/QvtGC0YDQtdCx0LjRgtC10LvRj9GCINC90LUg0LUg0JzQvtC00LXRgNCw0YLQvtGAPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1OSIgbmFtZT0iZXJyb3IgbWVzc2FnZSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+0JjRgdC60LDRgtC1INC70Lgg0YLQvtC30Lgg0L/QvtGC0YDQtdCx0LjRgtC10Lsg0LTQsCDQvdC1INCx0YrQtNC1INCc0L7QtNC10YDQsNGC0L7RgCDQvdCwINGC0LDQt9C4INC+0YDQs9Cw0L3QuNC30LDRhtC40Y8/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MCIgbmFtZT0ibW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPtCU0L7QsdCw0LLRj9C90LUv0L/RgNC10LzQsNGF0LLQsNC90LUg0L3QsCDQv9C+0YLRgNC10LHQuNGC0LXQu9C4INC4INGB0YLQsNC4INC+0YIg0L7RgNCz0LDQvdC40LfQsNGG0LjRj9GC0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYxIiBuYW1lPSJkZWxldGUgY29uZmlybSBxdWVzdGlvbiI+CisgICAgPHZhbHVlPtCd0LDQuNGB0YLQuNC90LAg0LvQuCDQuNGB0LrQsNGC0LUg0LTQsCDQuNC30YLRgNC40LXRgtC1INGC0L7Qt9C4INC30LDQv9C40YE/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MiIgbmFtZT0iZGVsZXRlIGNvbmZpcm0gcXVlc3Rpb24gdXNlciBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+0J3QsNC40YHRgtC40L3QsCDQu9C4INC40YHQutCw0YLQtSDQtNCwINC40LfRgtGA0LjQtdGC0LUg0L/QvtGC0YDQtdCx0LjRgtC10LvRjyDQvtGCINC+0YDQs9Cw0L3QuNC30LDRhtC40Y/RgtCwPyDQotC+0LLQsCDRgdCw0LzQviDRidC1INC/0YDQtdC60YrRgdC90LUg0LLRgNGK0LfQutCw0YLQsCDQvNC10LbQtNGDINC/0L7RgtGA0LXQsdC40YLQtdC70Y8g0Lgg0L7RgNCz0LDQvdC40LfQsNGG0LjRj9GC0LAsINC30LAg0LTQsCDQuNC30YLRgNC40LXRgtC1INC/0L7RgtGA0LXQsdC40YLQtdC70Y8g0LjQt9GG0Y/Qu9C+INGC0YDRj9Cx0LLQsCDQtNCwINCy0LvQtdC30LXRgtC1INCyINCQ0LTQvNC40L3QuNGB0YLRgNCw0YLQvtGA0YHQutC40Y8g0L/QsNC90LXQuy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYzIiBuYW1lPSJlcnJvciBtZXNzYWdlIHNlbGYgZGVsZXRpbmciPgorICAgIDx2YWx1ZT7QndC1INC80L7QttC1INC00LAg0LjQt9GC0YDQuNC10YLQtSDRgdCy0L7RjyDQv9C+0YLRgNC10LHQuNGC0LXQuyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY0IiBuYW1lPSJlcnJvciBtZXNzYWdlIGF1dGgiPgorICAgIDx2YWx1ZT7QotCw0LfQuCDQvtC/0LXRgNCw0YbQuNGPINC40LfQuNGB0LrQstCwINCQ0LTQvNC40L3QuNGB0YLRgNCw0YLQvtGA0YHQutC4INCw0LrQsNGD0L3RgiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY1IiBuYW1lPSJlcnJvciBtZXNzYWdlIFNPQVAiPgorICAgIDx2YWx1ZT7QndGP0LzQsCDRgdC10YHQuNGPINGB0LLRitGA0LfQsNC90LAg0YEg0YLQvtCy0LAgSUQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NiIgbmFtZT0iZXJyb3IgbWVzc2FnZSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+0KLQvtCy0LAg0LUg0JDQtNC80LjQvdC40YHRgtGA0LDRgtC+0YDRgdC60Lgg0LjQu9C4INCc0L7QtNC10YDQsNGC0L7RgNGB0LrQuCDQsNC60LDRg9C90YIuINCc0L7QttC1INC00LAg0YDQtdC00LDQutGC0LjRgNCw0YLQtSDRgtC+0LfQuCDQsNC60LDRg9C90YIg0YHQsNC80L4g0L/RgNC10Lcg0JDQtNC80LjQvdC40YHRgtGA0LDRgtC40LLQvdC40Y8g0L/QsNC90LXQuy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY3IiBuYW1lPSJlbWFpbCB2ZXJpZmljYXRpb24iPgorICAgIDx2YWx1ZT7Ql9CwINC00LAg0L/RgNC40LrQu9GO0YfQuNGC0LUg0YDQtdCz0LjRgdGC0YDQsNGG0LjRj9GC0LAsINC90LDRgtC40YHQvdC10YLQtSDRgdC70LXQtNC90LjRjyDQu9C40L3QuiDQuNC70Lgg0LrQvtC/0LjRgNCw0LnRgtC1INCw0LTRgNC10YHQsCDQsiDQsdGA0LDRg9C30YrRgNCwINGB0LguPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2OCIgbmFtZT0iZW1haWwgdmVyaWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+0J3QsNGC0LjRgdC90LXRgtC1LCDQt9CwINC00LAg0L/QvtGC0LLRitGA0LTQuNGC0LUg0LUt0LzQsNC50LvQsC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY5IiBuYW1lPSJlcnJvck1lc3NhZ2VfVXNlckFjdGl2YXRpb25TZXJ2bGV0IFtBY3RpdmF0ZVVzZXJdIj4KKyAgICA8dmFsdWU+0J3QtSDQsdC10YjQtSDQvdCw0LzQtdGA0LXQvSDRgtCw0LrRitCyINC/0L7RgtGA0LXQsdC40YLQtdC7LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzAiIG5hbWU9ImVycm9yTWVzc2FnZV9Vc2VyQWN0aXZhdGlvblNlcnZsZXQgW0FjdGl2YXRlVXNlcl0iPgorICAgIDx2YWx1ZT7QotC+0LfQuCDQv9C+0YLRgNC10LHQuNGC0LXQuyDQstC10YfQtSDQtSDQsNC60YLQuNCy0LjRgNCw0L0uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3MSIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPtCj0YHQv9C10YjQvdC+INCw0LrRgtC40LLQuNGA0LDRhdGC0LUg0LDQutCw0YPQvdGC0LAg0YHQuCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjcyIiBuYW1lPSJlcnJvck1lc3NhZ2VfVXNlckFjdGl2YXRpb25TZXJ2bGV0IFtBY3RpdmF0ZVVzZXJdIj4KKyAgICA8dmFsdWU+0JLRhdC+0LQg0YHQtdCz0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjczIiBuYW1lPSJsb2dpbkVycm9yTWVzc2FnZSA9IHVzZXIgd2FzIG5vdCBhY3RpdmF0ZWQiPgorICAgIDx2YWx1ZT7QktCw0YjQuNGP0YIg0LDQutCw0YPQvdGCINC90LUg0LUg0LDQutGC0LjQstC40YDQsNC9LiDQmNC30L/QvtC70LfQstCw0LnRgtC1INC70LjQvdC60LAg0LfQsCDQv9C+0YLQstGK0YDQttC00LXQvdC40LUg0LIg0LjQt9C/0YDQsNGC0LXQvdC40Y8g0LzQtdC50LsuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3NCIgbmFtZT0icmVnaXN0ZXIgdmVyaWZpY2F0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7Qo9GB0L/QtdGI0L3QsCDRgNC10LPQuNGB0YLRgNCw0YbQuNGPISDQmNC30L/RgNCw0YLQtdC9INC1INC80LXQudC7INC30LAg0L/QvtGC0LLRitGA0LbQtNC10L3QuNC1INC90LAg0YDQtdCz0LjRgdGC0YDQsNGG0LjRj9GC0LAg0Lgg0LDQutGC0LjQstC40YDQsNC90LUg0L3QsCDQsNC60LDRg9C90YLQsC4g0JzQvtC70Y8g0L/RgNC+0LLQtdGA0LXRgtC1INC80LXQudC70LAg0YHQuC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc1IiBuYW1lPSJwYXJ0aWNpcGFudHMgcGFuZWwiPgorICAgIDx2YWx1ZT7QmNC30YLRgNC40LLQsNC90LUg0L3QsCDQnNC+0LTQtdGA0LDRgtC+0YDRgdC60LAg0YDQvtC70Y8g0LfQsCDRgtC+0LfQuCDQv9C+0YLRgNC10LHQuNGC0LXQuzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzYiIG5hbWU9InBhcnRpY2lwYW50cyBwYW5lbCI+CisgICAgPHZhbHVlPtCU0LDQstCw0L3QtSDQvdCwINCc0L7QtNC10YDQsNGC0L7RgNGB0LrQuCDQv9GA0LDQstCwINC90LAg0YLQvtC30Lgg0L/QvtGC0YDQtdCx0LjRgtC10Ls8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc3IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7Qn9C+0YLRgNC10LHQuNGC0LXQuzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzgiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPtCU0L7RgdGC0YrQvyDQtNC+INC00YrRgdC60LDRgtCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3OSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+0JzQvtC00LXRgNCw0YLQvtGAPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+0JzQvtC00LXRgNCw0YbQuNGPOiDQvNC+0LvRjyDQuNC30LHQtdGA0LXRgtC1INC/0L7RgtGA0LXQsdC40YLQtdC7INC+0YIg0YHQv9C40YHRitC60LAg0LfQsCDQtNCw0LLQsNC90LUg0L3QsCDQv9GA0LDQstCwINC00L4g0LTRitGB0LrQsNGC0LAsINC80L7QtNC10YDQsNGG0LjRjyDQuNC70Lgg0LLQuNC00LXQvi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgxIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7QotC+0LfQuCDQv9C+0YLRgNC10LHQuNGC0LXQuyDQstC10YfQtSDQtSDQnNC+0LTQtdGA0LDRgtC+0YAsINC30LDRgtC+0LLQsCDRgtC+0Lkg0LjQvNCwINC00L7RgdGC0YrQvyDQtNC+INC00YrRgdC60LDRgtCwLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODIiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCBlcnJvciI+CisgICAgPHZhbHVlPtCd0LUg0LzQvtC20LUg0LTQsCDQv9GA0LXQvNCw0YXQvdC10YLQtSDQnNC+0LTQtdGA0LDRgtC+0YDRgdC60LjRgtC1INC/0YDQsNCy0LAg0L7RgiDRgdCy0L7RjyDQv9C+0YLRgNC10LHQuNGC0LXQuyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgzIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7Qn9C+0LfQstC+0LvRj9Cy0LDQvdC1INC90LAg0L/QvtGC0YDQtdCx0LjRgtC10LvRjyDQtNCwINC/0YPQsdC70LjQutGD0LLQsCDRgdCy0L7QtdGC0L4g0JDRg9C00LjQvi/QktC40LTQtdC+LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODQiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPtCY0LfRgtGA0LjQstCw0L3QtSDQvdCwINCQ0YPQtNC40L4v0JLQuNC00LXQviDQt9CwINGC0L7Qt9C4INC/0L7RgtGA0LXQsdC40YLQtdC7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4NSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+0JjRgdC60LDQvCDQv9GA0LDQstCwINC90LAg0JzQvtC00LXRgNCw0YLQvtGAINC30LAg0YLQsNC30Lgg0YHRgtCw0Y8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4NiIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+0JjRgdC60LDQvCDQv9GA0LDQstCwINC30LAg0YDQuNGB0YPQstCw0L3QtSDQstGK0YDRhdGDINC00YrRgdC60LDRgtCwLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODciIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPtCY0YHQutCw0Lwg0L/RgNCw0LLQsCDQt9CwINGB0L/QvtC00LXQu9GP0L3QtSDQvdCwINCQ0YPQtNC40L4v0JLQuNC00LXQvi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg4IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7QktC40LUg0YHRgtC1INCc0L7QtNC10YDQsNGC0L7RgCDQvdCwINGC0LDQt9C4INGB0YLQsNGPLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODkiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPtCS0LjQtSDQuNC80LDRgtC1INC/0YDQsNCy0LAg0LfQsCDRgNC40YHRg9Cy0LDQvdC1INCy0YrRgNGF0YMg0LTRitGB0LrQsNGC0LAuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5MCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+0JLQuNC1INC40LzQsNGC0LUg0L/RgNCw0LLQsCDQt9CwINGB0L/QvtC00LXQu9GP0L3QtSDQvdCwINCQ0YPQtNC40L4v0JLQuNC00LXQvi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkxIiBuYW1lPSJlcnJvcnR5cGUiPgorICAgIDx2YWx1ZT7QodGK0L7QsdGJ0LXQvdC40LUg0LrRitC8INCc0L7QtNC10YDQsNGC0L7RgDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTIiIG5hbWU9ImFwcGx5IGZvciBtb2QgbWVzc2FnZSI+CisgICAgPHZhbHVlPtCf0L7RgtGA0LXQsdC40YLQtdC70Y/RgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTMiIG5hbWU9ImFwcGx5IGZvciBtb2QgbWVzc2FnZSI+CisgICAgPHZhbHVlPtC40YHQutCwINC/0YDQsNCy0LAg0L3QsCDQnNC+0LTQtdGA0LDRgtC+0YAuINCY0LfQv9C+0LvQt9Cy0LDQudGC0LUg0YHRgtCw0YLRg9GBINC40LrQvtC90LjRgtC1LCDQt9CwINC00LDQstCw0L3QtS/Qv9GA0LXQvNCw0YXQstCw0L3QtSDQvdCwINC/0YDQsNCy0LDRgtCwLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTQiIG5hbWU9ImFwcGx5IGZvciB3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+0LjRgdC60LAg0L/RgNCw0LLQsCDQt9CwINGA0LjRgdGD0LLQsNC90LUg0LLRitGA0YXRgyDQtNGK0YHQutCw0YLQsC4g0JjQt9C/0L7Qu9C30LLQsNC50YLQtSDRgdGC0LDRgtGD0YEg0LjQutC+0L3QuNGC0LUsINC30LAg0LTQsNCy0LDQvdC1L9C/0YDQtdC80LDRhdCy0LDQvdC1INC90LAg0L/RgNCw0LLQsNGC0LAuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5NSIgbmFtZT0iNjk1Ij4KKyAgICA8dmFsdWU+0LjRgdC60LAg0L/RgNCw0LLQsCDQt9CwINGB0L/QvtC00LXQu9GP0L3QtSDQvdCwINCQ0YPQtNC40L4v0JLQuNC00LXQvi4g0JjQt9C/0L7Qu9C30LLQsNC50YLQtSDRgdGC0LDRgtGD0YEg0LjQutC+0L3QuNGC0LUsINC30LAg0LTQsNCy0LDQvdC1L9C/0YDQtdC80LDRhdCy0LDQvdC1INC90LAg0L/RgNCw0LLQsNGC0LAuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5NiIgbmFtZT0ibW9kZXJhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+0KLRgNGP0LHQstCwINC00LAg0LjQt9GH0LDQutCw0YLQtSwg0LTQvtC60LDRgtC+INCc0L7QtNC10YDQsNGC0L7RgNGK0YIg0LLQu9C10LfQtSDQsiDRgdGC0LDRj9GC0LAuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5NyIgbmFtZT0iY2FsZW5kYXIgYnV0dG9uIj4KKyAgICA8dmFsdWU+0J7RgtC60LDQtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTgiIG5hbWU9ImNhbGVuZGFyIGJ1dHRvbiI+CisgICAgPHZhbHVlPtCX0LDQv9Cw0LfQstCw0L3QtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTkiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPtCU0LXQvTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDAiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPtCc0LXRgdC10YY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAxIiBuYW1lPSJjYWxlbmRhciBjb21wb25lbnQiPgorICAgIDx2YWx1ZT7Qk9C+0LTQuNC90LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAyIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+0JrQsNGH0LLQsNC90LUg0L3QsCDRhNCw0LnQuzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDMiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7QndC+0LLQsCDQv9Cw0L/QutCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwNCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPtCe0L/RgNC10YHQvdGP0LLQsNC90LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA1IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+0JrQvtGI0YfQtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDYiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7QnNC+0LjRgtC1INGE0LDQudC70L7QstC1IChob21lKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDciIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7QpNCw0LnQu9C+0LLQtSDQt9CwINGB0YLQsNGP0YLQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDgiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7QndC+0LIg0YTQsNC50Ls8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA5IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+0J3QvtCy0LAg0L/QsNC/0LrQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTAiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7QmNC30YLRgNC40LLQsNC90LUg0L3QsCDQv9Cw0L/QutCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMSIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPtCg0LXQtNCw0LrRgtC40YDQsNC90LUg0L3QsCDQuNC80LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzEyIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+0J3QvtCy0LAg0L/QsNC/0LrQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTMiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7QodC40LPRg9GA0L3QuCDQu9C4INGB0YLQtSwg0YfQtSDQuNGB0LrQsNGC0LUg0LTQsCDQuNC30YLRgNC40LXRgtC1INGC0L7Qt9C4INC10LvQtdC80LXQvdGCPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTQiIG5hbWU9InVzZXIgYWRtaW4iPgorICAgIDx2YWx1ZT7QotGK0YDRgdC10L3QtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTUiIG5hbWU9InVzZXIgYWRtaW4iPgorICAgIDx2YWx1ZT7QotGK0YDRgdC10L3QtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTYiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7QntGC0LLQsNGA0Y/QvdC1INC90LAg0LTQvtC60YPQvNC10L3RgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTciIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7Qn9C+0LrQsNC30LLQsNC90LUg0L3QsCDQstGB0LjRh9C60Lgg0YTQsNC50LvQvtCy0LUgKNC00YrRgNCy0L7QstC40LTQtdC9INC40LfQs9C70LXQtCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE4IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+0JfQsNGC0LLQsNGA0Y/QvdC1INC90LAg0LTQvtC60YPQvNC10L3RgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTkiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7QmNC30YLRgNC40LLQsNC90LUg0L3QsCDRhNCw0LnQuzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjAiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7QndGP0LzQsNGC0LUg0L/RgNCw0LLQsCDQt9CwINGA0LjRgdGD0LLQsNC90LUg0LLRitGA0YXRgyDQtNGK0YHQutCw0YLQsC4g0JzQvtC20LUg0LTQsCDQv9C+0LjRgdC60LDRgtC1INGC0L7QstCwINC/0YDQsNCy0L4g0L7RgiDQnNC+0LTQtdGA0LDRgtC+0YAuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyMSIgbmFtZT0icHJvcGVydHkgcGFuZWwiPgorICAgIDx2YWx1ZT7QodCy0L7QudGB0YLQstCwINC90LAg0LTQvtC60YPQvNC10L3RgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjIiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPtCh0YLQsNGA0YIg0LrQu9C40LXQvdGCICjQstGK0L3RiNC10L0pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyMyIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+0KHRgtCw0YDRgiDQutC70LjQtdC90YIgKEhUVFApPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNCIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+0J/QvtGC0YDQtdCx0LjRgtC10Lsg0LjRgdC60LAg0LTQsCDRgdC/0L7QtNC10LvQuCDRgdCy0L7RjyDQtdC60YDQsNC9LiDQmNGB0LrQsNGC0LUg0LvQuCDQtNCwINCz0L4g0LLQuNC00LjRgtC1PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjUiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPtCSINC80L7QvNC10L3RgtCwINGB0L/QvtC00LXQu9GP0YLQtSDRgdCy0L7RjyDQtdC60YDQsNC9LiDQl9CwINC00LAg0YHQv9GA0LXRgtC1INGB0L/QvtC00LXQu9GP0L3QtdGC0L4sINC90LDRgtC40YHQvdC10YLQtSDQsdGD0YLQvtC90LAgU3RvcC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI2IiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT7QodC10YHQuNGPINC30LAg0YHQv9C+0LTQtdC70Y/QvdC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNyIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+0JIg0LzQvtC80LXQvdGC0LAg0YHQv9C+0LTQtdC70Y/RgtC1INGB0LLQvtGPINC10LrRgNCw0L0hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyOCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT7QlNC10YHQutGC0L7QvyDQv9GA0LXQs9C70LXQtDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjkiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+0JjQt9GF0L7QtDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzAiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+0JTQtdGB0LrRgtC+0L8g0YHQv9C+0LTQtdC70Y/QvdC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT7QndCw0YLQuNGB0L3QtdGC0LUgU3RhcnQsINC30LAg0LTQsCDQv9GD0LHQu9C40LrRg9Cy0LDRgtC1INGB0LLQvtGPINC10LrRgNCw0L0uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT7QodGC0LDRgNGCINC90LAg0YHQv9C+0LTQtdC70Y/QvdC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT7QodGC0L7QvyDQvdCwINGB0L/QvtC00LXQu9GP0L3QtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzQiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+0JjQt9Cx0L7RgCDQvdCwINGH0LDRgdGCINC+0YIg0LXQutGA0LDQvdCwOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzUiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+0J/RgNC+0LzRj9C90LAg0L3QsCDRiNC40YDQuNC90LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM2IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPtCh0LXRgdC40Y/RgtCwINC90LAg0YHQv9C+0LTQtdC70Y/QvdC1INC1INC/0YDQuNC60LvRjtGH0LjQu9CwITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzciIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+0J/RgNC+0LzRj9C90LAg0L3QsCDQstC40YHQvtGH0LjQvdCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczOCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5YLdC40LfQvNC10YHRgtCy0LDQvdC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczOSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5ZLdC40LfQvNC10YHRgtCy0LDQvdC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0MCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT7QqNC40YDQuNC90LA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0MSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT7QktC40YHQvtGH0LjQvdCwOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDIiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+0JLRgNGK0LfQutCw0YLQsCDQtSDQt9Cw0YLQstC+0YDQtdC90LAg0L7RgiDRgdGK0YDQstGK0YDQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDMiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+0J7RgtC60LDQtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDQiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+0KHRgtCw0YDRgiDQstGK0L3RiNC10L08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ1IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPtCQ0LrQviDQt9Cw0YLQstC+0YDQuNGC0LUg0YHQtdGB0LjRj9GC0LAg0LjQt9GG0Y/Qu9C+LCDQvdGP0LzQsCDQtNCwINC80L7QttC1INC00LAg0LLRitC30YHRgtCw0L3QvtCy0LjRgtC1INC/0YDQtdCz0LvQtdC00LAg0L3QsCDRgtCw0LfQuCDRgdC10YHQuNGPLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDYiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+0J/QvtGC0LLRitGA0LbQtNCw0LLQsNC90LUg0LfQsNGC0LLQsNGA0Y/QvdC1INC90LAg0YHQtdGB0LjRj9GC0LAg0LfQsCDQv9GA0LXQs9C70LXQtDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDciIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+0KHQv9C+0LTQtdC70Y/QvdC1INC90LAg0LXQutGA0LDQvTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDgiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+0JfQsNC/0LjRgSDQvdCwINGB0LXRgdC40Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ5IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+0J7QsdGJINCx0YDQsNGD0LfRitGAPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MCIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPkZpcmVmb3gg0L3QsCBXaW5kb3dzINC90LUg0L/QvtC30LLQvtC70Y/QstCwINGH0LjRgdGC0L4g0L7QsdGJ0L4g0LHRgNCw0YPQt9Cy0LDQvdC1LiDQnNC+0LvRjyDQuNC30LHQtdGA0LXRgtC1INC00YDRg9CzINCx0YDQsNGD0LfRitGALjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTEiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT7Qn9GA0LXQtNC40YjQtdC9PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MiIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPtCh0LvQtdC00LLQsNGJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MyIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPtCf0YDQtdC30LDRgNC10LbQtNCw0L3QtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTQiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT7QndCw0YfQsNC70L48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU1IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+0JfQsNGA0LXQttC00LDQvdC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1NiIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPtCU0L7QsdCw0LLRj9C90LUg0L3QsCDRgdCw0LnRgiDQutCw0YLQviDRgdCw0LnRgiDQv9C+INC/0L7QtNGA0LDQt9Cx0LjRgNCw0L3QtSDQt9CwINGC0L7Qt9C4INC/0YDQvtGE0LjQuy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU3IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+0KLQtdGB0YIg0L3QsCDQvdCw0YHRgtGA0L7QudC60LjRgtC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1OCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPtCf0YDQvtCy0LXRgNC10YLQtSDQvdCw0YHRgtGA0L7QudC60LjRgtC1INC90LAg0LzQuNC60YDQvtGE0L7QvdCwINC4INC60LDQvNC10YDQsNGC0LAg0YHQuC4g0KHQu9C10LQg0YLQvtCy0LAg0LzQvtC20LUg0LTQsCDQv9GD0YHQvdC10YLQtSDQt9Cw0L/QuNGB0LAg0LfQsCDQv9GA0L7QstC10YDQutCwINC90LAg0LPQu9Cw0YHQsCDQuCDQutCw0YDRgtC40L3QsNGC0LAuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1OSIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPtCd0LUg0L/QvtC60LDQt9Cy0LDQuSDQv9C+0LLQtdGH0LUg0YLQvtC30Lgg0YLQtdGB0YI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYwIiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+0J7RgtC60LDQtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjEiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT7QodGC0LDRgNGCINC60L7QvdGE0LXRgNC10L3RhtC40Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYyIiBuYW1lPSJlZGl0IHZpZGVvIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+0J3QtSDQv9C40YLQsNC5INC/0L7QstC10YfQtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjMiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5SRUM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY0IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+UExBWTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjUiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT7QnNC+0LbQtSDQtNCwINC/0YDQvtC00YrQu9C20LjRgtC1INCx0LXQtyDRgtC10YHRgiwg0LDQutC+INC90LUg0L/Qu9Cw0L3QuNGA0LDRgtC1INC00LAg0L/Rg9Cx0LvQuNC60YPQstCw0YLQtSDQstC40LTQtdC+L9Cw0YPQtNC40L4uINCj0YfQsNGB0YLQvdC40YbQuNGC0LUg0LHQtdC3INCQ0YPQtNC40L4v0JLQuNC00LXQviDQvNC+0LPQsNGCINC00LAg0LjQt9C/0L7Qu9C30LLQsNGCINC00YrRgdC60LDRgtCwLCDQtNCwINGB0L/QvtC00LXQu9GP0YIg0LXQutGA0LDQvdCwINGB0Lgg0Lgg0LTQsCDQv9C40YjQsNGCINGH0LDRgiDRgdGK0L7QsdGJ0LXQvdC40Y8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NiIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlNUT1A8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY3IiBuYW1lPSI3NjciPgorICAgIDx2YWx1ZT7QktC40YHQvtGH0LjQvdCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2OCIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPtCd0LDRgtC40YHQvdC10YLQtSBTdGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjkiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT7QodGC0LDRgNGCINC60L7QvdGE0LXRgNC10L3RhtC40Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzcwIiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+0KHRgtCw0YDRgiDRgdGK0LHQuNGC0LjQtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzEiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT7QmNC30LHQvtGAINC90LAg0YHRgtCw0Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzcyIiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+0J/RgNC+0LHQsCDQvdCw0YHRgtGA0L7QudC60Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzczIiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+0KHRgtCw0YDRgiDQutC+0L3RhNC10YDQtdC90YbQuNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NCIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPtCi0LjQvyDQutC+0L3RhNC10YDQtdC90YbQuNGPOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzUiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT7QndCw0YfQsNC70L4g0LfQsNC/0LjRgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzYiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT7QndC1INC/0L7QutCw0LfQstCw0Lkg0JDRg9C00LjQvi/QktC40LTQtdC+INGC0LXRgdGCINC30LDQv9C40YEsINC/0YDQtdC00Lgg0LLQu9C40LfQsNC90LUg0LIg0LrQvtC90YTQtdGA0LXQvdGG0LjRj9GC0LAuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NyIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPtCf0YPQsdC70LjRh9C90Lgg0YHRgtCw0Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc4IiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+0JTQviDQv9GD0LHQu9C40YfQvdC40YLQtSDRgdGC0LDQuCDQuNC80LDRgiDQtNC+0YHRgtGK0L8g0LLRgdC40YfQutC4INC/0L7RgtGA0LXQsdC40YLQtdC70LguPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3OSIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPtCn0LDRgdGC0L3QuCDRgdGC0LDQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODAiIG5hbWU9IlByaXZhdGUgUm9vbXMiPgorICAgIDx2YWx1ZT7QlNC+INGH0LDRgdGC0L3QuNGC0LUg0YHRgtCw0Lgg0LjQvNCw0YIg0LTQvtGB0YLRitC/INGB0LDQvNC+INC/0L7RgtGA0LXQsdC40YLQtdC70LjRgtC1INC+0YIg0YHRitGJ0LDRgtCwINC+0YDQs9Cw0L3QuNC30LDRhtC40Y8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MSIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPtCc0L7QuNGC0LUg0YHRgtCw0Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgyIiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+0KHRgtCw0LjRgtC1INCyINGC0LDQt9C4INGB0LXQutGG0LjRjyDRgdCwINGB0YrQt9C00LDQtNC10L3QuCDQt9CwINC70LjRh9C90L4g0L/QvtC70LfQstCw0L3QtS4g0KLQtSDRgdCwINGB0YrQt9C00LDQtNC10L3QuCDQvtGCINC60LDQu9C10L3QtNCw0YDQsCDQuCDQuNC80LDRgiDQvdCw0YfQsNC70L3QsCDQuCDQutGA0LDQudC90LAg0LTQsNGC0LAuINCi0LUg0YHQtSDQvtC/0LjRgdCy0LDRgiDQsiDRgtCw0LfQuCDRgdC10LrRhtC40Y8sINC00L7QutCw0YLQviDRgdCwINCy0LDQu9C40LTQvdC4LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODMiIG5hbWU9InJlc3RyaWN0ZWQgcm9vbSI+CisgICAgPHZhbHVlPtCi0YDRj9Cx0LLQsCDQtNCwINGB0YLQtSDQnNC+0LTQtdGA0LDRgtC+0YAg0LfQsCDRgtC+0LLQsCDQtNC10LnRgdGC0LLQuNC1LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODQiIG5hbWU9Im1lbnUgb3B0aW9uIj4KKyAgICA8dmFsdWU+0JjRgdC60LDQvdC1INC30LAg0JzQvtC00LXRgNCw0YLQvtGAPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NSIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT7QmNGB0LrQsNC90LUg0LfQsCDRgNC40YHRg9Cy0LDQvdC1INCy0YrRgNGF0YMg0LTRitGB0LrQsNGC0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg2IiBuYW1lPSJtZW51IG9wdGlvbiI+CisgICAgPHZhbHVlPtCY0YHQutCw0L3QtSDQtNC+0YHRgtGK0L8g0LTQviDQutCw0LzQtdGA0LAv0LzQuNC60YDQvtGE0L7QvTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODciIG5hbWU9ImVycm9yIG1lc3NhZ2Ugc29hcCBzZWN1cmUgbG9naW4iPgorICAgIDx2YWx1ZT7QodC10YHQuNGP0YLQsCDQstC10YfQtSDRgdC1INC40LfQv9C+0LvQt9Cy0LAgLSDQvdC1INC80L7QttC1INC00LAg0Y8g0LjQt9C/0L7Qu9C30LLQsNGC0LUg0L/QvtCy0YLQvtGA0L3Qvi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg4IiBuYW1lPSJkYXNoYm9hcmQgYnV0dG9uIj4KKyAgICA8dmFsdWU+0KHQotCQ0KDQojwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODkiIG5hbWU9ImV4aXQgY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPtCY0JfQpdCe0JQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkwIiBuYW1lPSJjb25mZXJlbmNlIHZpZXciPgorICAgIDx2YWx1ZT7QndCw0LjRgdGC0LjQvdCwINC70Lgg0LjRgdC60LDRgtC1INC00LAg0LjQt9C70LXQt9C10YLQtT8g0JzQvtC20LUg0LHQuCDRgtGA0Y/QsdCy0LAg0LTQsCDQuNC30YfQuNGB0YLQuNGC0LUg0LTRitGB0LrQsNGC0LAsINC60LDRh9C10L3QuNGC0LUg0LTQvtC60YPQvNC10L3RgtC4INC4INGH0LDRgiDQuNGB0YLQvtGA0LjRj9GC0LAuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5MSIgbmFtZT0iY29uZmVyZW5jZSB2aWV3Ij4KKyAgICA8dmFsdWU+0JjQt9GF0L7QtCDQutC+0L3RhNC10YDQtdC90YbQuNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5MiIgbmFtZT0ibWFpbiBtZW51Ij4KKyAgICA8dmFsdWU+0KHRgtCw0Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkzIiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT7QmNC30LHQtdGA0LXRgtC1INGB0YLQsNGPINC30LAg0YHRgNC10YnQsNGC0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk0IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPtCY0LzQsCDQvdC10LfQsNC/0LDQt9C10L3QviDRgdGK0LHQuNGC0LjQtSDQsiDQutCw0LvQtdC90LTQsNGA0LAuINCc0L7Qu9GPLCDQt9Cw0L/QsNC30LXRgtC1INCz0L4g0LjQu9C4INCz0L4g0LjQt9GC0YDQuNC50YLQtS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk1IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPtCc0L7Qu9GPINC00L7QsdCw0LLQtdGC0LUg0L/QvtC90LUgMSDQv9GA0LjRgdGK0YHRgtCy0LDRiSDQvdCwINGB0YDQtdGJ0LDRgtCwITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTYiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+0J3QsNC40YHRgtC40L3QsCDQu9C4INC40YHQutCw0YLQtSDQtNCwINC40LfRgtGA0LjQtdGC0LUg0YLQvtCy0LAg0YHRitCx0LjRgtC40LU/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5NyIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT7Qn9GA0LXQtNGD0L/RgNC10LbQtNC10L3QuNC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5OCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT7QlNC+0LHQsNCy0Y/QvdC1INGB0YrQsdC40YLQuNC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5OSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT7QtNC10L08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAwIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPtGB0LXQtNC80LjRhtCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT7QvNC10YHQtdGGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMiIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT7QntC/0LjRgdCw0L3QuNC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMyIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT7Qn9GA0LjRgdGK0YHRgtCy0LDRidC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+0JzQvtC70Y8sINGB0LvQtdC00LLQsNC50YLQtSDQuNC90YHRgtGA0YPQutGG0LjQuNGC0LUg0Lgg0L3QsNGC0LjRgdC90LXRgtC1INCx0YPRgtC+0L3QsCBTdGFydCwg0LfQsCDQtNCwINC30LDQv9C+0YfQvdC10YLQtSDQutC+0L3RhNC10YDQtdC90YbQuNGPINCy0LXQtNC90LDQs9CwINC40LvQuCDQvtGC0LjQtNC10YLQtSDQsiDQutCw0LvQtdC90LTQsNGA0LAsINC30LAg0LTQsCDQv9C70LDQvdC40YDQsNGC0LUg0LHRitC00LXRidCwINC60L7QvdGE0LXRgNC10L3RhtC40Y8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNSIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+0J/Qu9Cw0L3QuNGA0LDQvdC1INGB0YDQtdGJ0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA2IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+0JfQsCDQtNCwINC/0LvQsNC90LjRgNCw0YLQtSDRgdGA0LXRidCwLCDQtNC+0LHQsNCy0LXRgtC1INGB0YrQsdC40YLQuNC1INC60YrQvCDQutCw0LvQtdC00LDRgNCwLiDQl9CwINCy0YHRj9C60L4g0YHRitCx0LjRgtC40LUg0LIg0LrQsNC70LXQtNCw0YDQsCDRidC1INCx0YrQtNC1INCw0LLRgtC+0LzQsNGC0LjRh9C90L4g0YHRitC30LTQsNC00LXQvdCwINGB0YLQsNGPINC30LAg0LrQvtC90YTQtdGA0LXQvdGG0LjRjy4g0JLQuNC1INC4INCy0YHQuNGH0LrQuCDQv9GA0LjRgdGK0YHRgtCy0LDRidC4INGJ0LUg0L/QvtC70YPRh9Cw0YIg0LzQtdC50Lsg0YEg0LvQuNC90Log0LrRitC8INGB0YLQsNGP0YLQsCZhbXA7bHQ7YnIvJmFtcDtndDsmYW1wO2x0O2JyLyZhbXA7Z3Q7INCc0L7QttC1INC00LAg0LjQt9Cx0LXRgNC10YLQtSDRgNCw0LfQu9C40YfQvdC4INGC0LjQv9C+0LLQtSDRgdGC0LDQuCDRgSDRgNCw0LfQu9C40YfQtdC9INGC0LjQvyDQvNC+0LTQtdGA0LDRhtC40Y8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNyIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPtCd0YPQttC00LAg0L7RgiDQv9C+0LzQvtGJPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDgiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT7QntCz0YDQsNC90LjRh9C10L08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA5IiBuYW1lPSJsemNhbGVuZGVyIj4KKyAgICA8dmFsdWU+0KLRitGA0YHQtdC90LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEwIiBuYW1lPSJsemNhbGVuZGVyIj4KKyAgICA8dmFsdWU+0JTQvtCx0LDQstGP0L3QtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTEiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT7QndC1INC1INC40LfQsdGA0LDQvSDQv9C+0YLRgNC10LHQuNGC0LXQuy4g0JzQvtC70Y8g0LjQt9Cx0LXRgNC10YLQtSDQtdC70LXQvNC10L3RgiDQvtGCINGB0L/QuNGB0YrQutCwINC4INCz0L4g0LTQvtCx0LDQstC10YLQtS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEyIiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+0JTQvtCx0LDQstGP0L3QtSDQvdCwINC/0YDQuNGB0YrRgdGC0LLQsNGJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMyIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPtCX0LDQv9Cw0LfQstCw0L3QtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTQiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT7QmNC30YLRgNC40LLQsNC90LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE1IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+0JTQtdGC0LDQudC70Lgg0LfQsCDRgdGK0LHQuNGC0LjQtdGC0L48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE2IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+0JzQvtC00LXRgNCw0YLQvtGA0Lgg0L/QviDQv9C+0LTRgNCw0LfQsdC40YDQsNC90LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+0KHRg9C/0LXRgDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTgiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTkiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT7QmNC80LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIwIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+0JUt0LzQsNC50Ls8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIxIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+0JTQvtCx0LDQstGP0L3QtSDQvdCwINC90L7QsiDQnNC+0LTQtdGA0LDRgtC+0YAg0L/QviDQv9C+0LTRgNCw0LfQsdC40YDQsNC90LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIyIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+0LUg0KHRg9C/0LXRgCDQnNC+0LTQtdGA0LDRgtC+0YA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIzIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+0JDQutC+INGB0YLQsNGP0YLQsCDQtSDQvNC+0LTQtdGA0LjRgNCw0L3QsCwg0JzQvtC00LXRgNCw0YLQvtGAINC40LvQuCDQkNC00LzQuNC90LjRgdGC0YDQsNGC0L7RgCDQsNCy0YLQvtC80LDRgtC40YfQvdC+INGB0LAg0YEg0L/RgNCw0LLQsCDQvdCwINCc0L7QtNC10YDQsNGC0L7RgC4g0JDQutC+INC40YHQutCw0YLQtSDQvtC/0YDQtdC00LXQu9C10L0g0L/QvtGC0YDQtdCx0LjRgtC10Lsg0LTQsCDQsdGK0LTQtSDQnNC+0LTQtdGA0LDRgtC+0YAsINC40LfQv9C+0LvQt9Cy0LDQudGC0LUg0L7Qv9GG0LjRj9GC0LAg0JzQvtC00LXRgNCw0YLQvtGAINC/0L4g0L/QvtC00YDQsNC30LHQuNGA0LDQvdC1LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjQiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT7QodGD0L/QtdGAINCc0L7QtNC10YDQsNGC0L7RgCDQstC40L3QsNCz0Lgg0LUg0JzQvtC00LXRgNCw0YLQvtGAINC/0YDQuCDQstGF0L7QtCDQsiDRgdGC0LDRj9GC0LAg0Lgg0L3QuNC60L7QuSDQvdC1INC80L7QttC1INC00LAg0L/RgNC10LzQsNGF0L3QtSDRgtC10LfQuCDQvdC10LPQvtCy0Lgg0L/RgNCw0LLQsC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI1IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+0J/RgNC40LvQsNCz0LDQvdC1INC/0YDQsNCy0LAg0L3QsCDQodGD0L/QtdGAINCc0L7QtNC10YDQsNGC0L7RgDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjYiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT7Qn9GA0LXQvNCw0YXQstCw0L3QtSDQv9GA0LDQstCwINC90LAg0KHRg9C/0LXRgCDQnNC+0LTQtdGA0LDRgtC+0YA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjgiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT7QkNC60L4g0LTQvtCx0LDQstC40YLQtSDQvtGA0LPQsNC90LjQt9Cw0YbQuNGPINC60YrQvCDRgdGC0LDRj9GC0LAsINGB0LDQvNC+INC/0L7RgtGA0LXQsdC40YLQtdC70LjRgtC1INC+0YIg0YLQsNC30Lgg0L7RgNCz0LDQvdC40LfQsNGG0LjRjyDRidC1INCy0LjQttC00LDRgiDRgdGC0LDRj9GC0LAuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyOSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPtCc0L7QtNC10YDQsNGG0LjRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzAiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT7QntCz0YDQsNC90LjRh9C10L3QuNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzMSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPtCe0YDQs9Cw0L3QuNC30LDRhtC40Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODMyIiBuYW1lPSJjb25maXJtIGFjdGlvbiI+CisgICAgPHZhbHVlPtCh0LjQs9GD0YDQvdC4INC70Lgg0YHRgtC1PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzMiIG5hbWU9ImNvbmZpcm0gZGVsZXRlIj4KKyAgICA8dmFsdWU+0J3QsNC40YHRgtC40L3QsCDQu9C4INC40YHQutCw0YLQtSDQtNCwINC40LfRgtGA0LjQtdGC0LUg0YLQvtC30Lgg0LXQu9C10LzQtdC90YI/INCi0YDRj9Cx0LLQsCDQtNCwINC90LDRgtC40YHQvdC10YLQtSDQsdGD0YLQvtC90LAgU2F2ZSwg0LfQsCDQt9Cw0L/QsNC30LLQsNC90LUg0L3QsCDQv9GA0L7QvNC10L3QuNGC0LUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNCIgbmFtZT0idXNlciBjaG9vc2UgZXJyb3IiPgorICAgIDx2YWx1ZT7QndC1INC1INC40LfQsdGA0LDQvSDQv9C+0YLRgNC10LHQuNGC0LXQuy4g0JzQvtC70Y8g0LjQt9Cx0LXRgNC10YLQtSDQv9C+0YLRgNC10LHQuNGC0LXQuywg0L/RgNC10LTQuCDQtNCwINCz0L4g0LTQvtCx0LDQstC40YLQtSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM1IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+0JTQvtCx0LDQstGP0L3QtSDQvdCwINC90L7QsiDQnNC+0LTQtdGA0LDRgtC+0YAg0L/QviDQv9C+0LTRgNCw0LfQsdC40YDQsNC90LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM2IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+0JjRgdC60LDRgtC1INC70Lgg0LTQsCDQtNCw0LTQtdGC0LUg0L/RgNCw0LLQsCDQvdCwINCh0YPQv9C10YAg0JzQvtC00LXRgNCw0YLQvtGAINC90LAg0YLQvtC30Lgg0L/QvtGC0YDQtdCx0LjRgtC10Ls/INCh0YPQv9C10YAg0JzQvtC00LXRgNCw0YLQvtGAINCy0LjQvdCw0LPQuCDQtSDQnNC+0LTQtdGA0LDRgtC+0YAg0L/RgNC4INCy0YXQvtC0INCyINGB0YLQsNGP0YLQsCDQuCDQvdC40LrQvtC5INC90LUg0LzQvtC20LUg0LTQsCDQv9GA0LXQvNCw0YXQvdC1INGC0LXQt9C4INC90LXQs9C+0LLQuCDQv9GA0LDQstCwLiDQotGA0Y/QsdCy0LAg0LTQsCDQt9Cw0L/QsNC30LjRgtC1INGB0YLQsNGP0YLQsCwg0LfQsCDQtNCwINC30LDQv9Cw0LfQuNGC0LUg0L3QsNGB0YLRgNC+0LnQutC40YLQtSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+0JjRgdC60LDRgtC1INC70Lgg0LTQsCDQv9GA0LXQvNCw0YXQvdC10YLQtSDQv9GA0LDQstCw0YLQsCDQvdCwINCh0YPQv9C10YAg0JzQvtC00LXRgNCw0YLQvtGAINC+0YIg0YLQvtC30Lgg0L/QvtGC0YDQtdCx0LjRgtC10Ls/INCi0YDRj9Cx0LLQsCDQtNCwINC30LDQv9Cw0LfQuNGC0LUg0YHRgtCw0Y/RgtCwLCDQt9CwINC00LAg0LfQsNC/0LDQt9C40YLQtSDQvdCw0YHRgtGA0L7QudC60LjRgtC1ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzgiIG5hbWU9InN1cGVyIG1vZGVyYXRvciI+CisgICAgPHZhbHVlPtCf0L7RgtGA0LXQsdC40YLQtdC70Y/RgiDQtSDQodGD0L/QtdGAINCc0L7QtNC10YDQsNGC0L7RgCDQuCDQvdC40LrQvtC5INC90LUg0LzQvtC20LUg0LTQsCDQv9GA0LXQvNCw0YXQvdC1INGC0LXQt9C4INC90LXQs9C+0LLQuCDQv9GA0LDQstCwITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzkiIG5hbWU9ImNvbmZpcm0gZGVsZXRlIj4KKyAgICA8dmFsdWU+0J3QsNC40YHRgtC40L3QsCDQu9C4INC40YHQutCw0YLQtSDQtNCwINC40LfRgtGA0LjQtdGC0LUg0YLQvtC30Lgg0YTQsNC50Lsv0L/QsNC/0LrQsD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQwIiBuYW1lPSJjb25maXJtIGRlbGV0ZSI+CisgICAgPHZhbHVlPtCY0LfRgtGA0LjQstCw0L3QtSDQvdCwINGE0LDQudC7L9C/0LDQv9C60LA/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0MSIgbmFtZT0ic2FsdXRhdGlvbiI+CisgICAgPHZhbHVlPtCTLdC20LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQyIiBuYW1lPSJzYWx1dGF0aW9uIj4KKyAgICA8dmFsdWU+0JQt0YA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQzIiBuYW1lPSJwcm9wZXJ0eSBwYW5lbCB3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+0KHQstC+0LnRgdGC0LLQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDQiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT7Qn9C+0LrQsNC30LLQsNC90LUg0L/QvtC30LjRhtC40Y/RgtCwINC90LAg0LzQuNGI0LrQsNGC0LAg0L3QsCDQs9C70LXQtNCw0YnQuNGC0LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ1IiBuYW1lPSJwdWJsaXNoIG9wdGlvbiI+CisgICAgPHZhbHVlPlNoYXJlIEF1ZGlvIHdpdGggU0lQIEFwcGxldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDYiIG5hbWU9InB1Ymxpc2ggb3B0aW9uIj4KKyAgICA8dmFsdWU+U2hhcmUgQXVkaW8gd2l0aCBTSVAgYW5kIFZpZGVvIHdpdGggRmxhc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ3IiBuYW1lPSJkb2N1bWVudCBwYW5lbCI+CisgICAgPHZhbHVlPkZ1bGwtRml0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0OCIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+VmlldyBTY3JlZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ5IiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5UaGUgdXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTAiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPndhbnRzIHRvIHNoYXJlIGl0cyBzY3JlZW4uIERvIHlvdSB3YW50IHRvIHNlZSBpdD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUxIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5DbG9zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTIiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5ab29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MyIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPlRoZSBTZXNzaW9uIHdhcyBjbG9zZWQgYnkgdGhlIHNoYXJpbmcgVXNlciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU0IiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+UGF1c2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU1IiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+TmV3IFNjcmVlbiBTaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1NiIgbmFtZT0icHJlc2VudGVyIG1pbmkgaWNvbiI+CisgICAgPHZhbHVlPk1pbmltaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1NyIgbmFtZT0icHJlc2VudGVyIG1pbmkgaWNvbiI+CisgICAgPHZhbHVlPk1heGltaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1OCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+VmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU5IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5SZWNvcmRpbmcgVGltZWxpbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYwIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5NeSBSZWNvcmRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UHVibGljIFJlY29yZGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYyIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5JbmZvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjQiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkxlbmd0aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjUiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkRhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5CeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjciIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlBMQVk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY4IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5NYWluIC0gVmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY5IiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5SZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcwIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Zb3UgbWF5IHJlY29yZCBhbmQgc2hhcmUgeW91ciBzY3JlZW4gYXQgdGhlIHNhbWUgdGltZS4gVG8gZW5hYmxlIG90aGVycyB0byBzZWUgeW91ciBzY3JlZW4ganVzdCBoaXQgdGhlIHN0YXJ0IGJ1dHRvbiBvbiB0aGUgdG9wLiBUbyBvbmx5IHJlY29yZCB0aGUgU2Vzc2lvbiBpdCBpcyBzdWZmaWNpZW50IHRvIGNsaWNrIHN0YXJ0IHJlY29yZGluZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcxIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5TdGFydCBSZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcyIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5TdG9wIFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzMiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkRvd25sb2FkIHRoZSBGTFYtRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzQiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc1IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5QbGF5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3NiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+U3RvcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzciIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlVzZXIgaGFzIG1pY3JvcGhvbmUgb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc4IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlN0b3AgU2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzkiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+QWxsb3cgVXNlciBRdWVzdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgwIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPlR1cm4gdGhpcyBvZmYgdG8gcHJldmVudCB0aGF0IGFueSB1c2VyIGlzIGRpc3R1cmJpbmcgeW91IGluIHRoaXMgcm9vbS4gRWZmZWN0IGlzIHRoYXQgdGhlIEJ1dHRvbiB0byBhc2sgZm9yIE1vZGVyYXRpb24gKCJJIGhhdmUgYSBxdWVzdGlvbiIpIGlzIG5vdCB2aXNpYmxlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODEiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+UmlnaHRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RG93bmxvYWQgYXMgQVZJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RkxWPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QVZJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UmF3IFNjcmVlbnZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QXVkaW8gb25seTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODciIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlRoZSBoYXZlIGJlZW4gZXJyb3JzIHdoaWxlIHByb2Nlc3NpbmcgdGhlIFJlY29yZGluZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg4IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5UaGUgUmVjb3JkaW5nIGlzIG5vdCB5ZXQgcmVhZHkgZm9yIHdhdGNoaW5nLiBQbGVhc2UgcmV0cnkgaW4gYSBjb3VwbGUgb2YgbWludXRlcyBhZ2Fpbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg5IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Mb2c6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UmVjb3JkZXIgTWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTEiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk9rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MiIgbmFtZT0ic2lwIGFwcGxldCI+CisgICAgPHZhbHVlPlNJUCBBcHBsZXQgaXMgbm90IFJlYWR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MyIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNJUC1BY2NvdW50IFNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NCIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNJUCBzZXR0aW5ncyBmb3IgZWFjaCB1c2VyLiBZb3UgY2FuIHR1cm4gb24gb3Igb2ZmIFNJUCB2aWEgdGhlIEFkbWluaXN0cmF0aW9uICZndDsgQ29uZmlndXJhdGlvbiAoS2V5OiBlbmFibGVfc2lwKS4gVGhlIFNJUCBkYXRhIGZvciBlYWNoIHVzZXIgc2hvdWxkIGJlIGNyZWF0ZWQgYXV0b21hdGljYWxseS4gWW91IGNhbiByZS1jcmVhdGUgdGhlIGRhdGEgYnkgY2hlY2tpbmcgIlJlLWdlbmVyYXRlIFNJUCBEYXRhIjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTUiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TSVAtVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTYiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TaXAtUGFzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTciIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TaXAtQXV0aC1JZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTgiIG5hbWU9InNpcCBzdGF0dXMgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSBMb2dpbiB0byB0aGUgU0lQIEdhdGV3YXkgaGFzIGZhaWxlZC4gWW91IHNob3VsZCBjaGVjayB0aGUgYXV0aGVudGlmaWNhdGlvbiBkYXRhIG9mIHlvdXIgU0lQLVByb3ZpZGVyIGFuZCB0aGUgU0lQLUFjY291bnQgRGF0YSBmb3IgZWFjaCBVc2VyLiBBcyBBZG1pbmlzdHJhdG9yIHlvdSBhcmUgc3RpbGwgYWJsZSB0byBsb2dpbiBhbmQgY2hlY2sgdGhlIENvbmZpZ3VyYXRpb24uIEFzIFVzZXIgb3IgTW9kZXJhdG9yIHlvdSB3aWxsIGJlIGJsb2NrZWQgZnJvbSBhbnkgaW50ZXJhY3Rpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5OSIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIExvZ2luIHRvIHRoZSBTSVAgR2F0ZXdheSBoYXMgZmFpbGVkLiBDb250YWN0IHlvdXIgU2VydmljZSBUZWFtITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDAiIG5hbWU9InNpcCBzdGF0dXMgbWVzc2FnZSI+CisgICAgPHZhbHVlPkxvZ2dpbmcgaW4gdG8gU0lQLUdhdGV3YXkgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwMSIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TG9nZ2luZyBpbiB0byBTSVAtR2F0ZXdheSAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAyIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TaG93IExvZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDMiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkxvZyBtZXNzYWdlcyBmcm9tIHBvc3QgcmVjb3JkZXIgcHJvY2VzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDQiIG5hbWU9InNpcCBsb2dpbiI+CisgICAgPHZhbHVlPlNJUC1BcHBsZXQgTWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDUiIG5hbWU9InNpcCBsb2dpbiI+CisgICAgPHZhbHVlPlRoZSBTSVAtQXBwbGV0IGlzIG5vdCByZWFkeS4gQWNjZXB0IHRoZSBBcHBsZXQgcGxlYXNlIGFuZCBjbGljayBvayE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA2IiBuYW1lPSJtb2RlcmF0b3IgcG9wIHVwIj4KKyAgICA8dmFsdWU+R2V0IE1vZGVyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA3IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+U2F2ZSBBcHBvaW50bWVudCBDaGFuZ2VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwOCIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlRoZSBhcHBvaW50ZW1lbnQgaGFzIGJlZW4gY2hhbmdlZC4gRG8geW91IHdhbnQgdG8gc2F2ZSB0aG9zZSBjaGFuZ2VzPyAmbHQ7YnIvJmd0OyZsdDtici8mZ3Q7QWxsIGF0dGVuZGVlcyBvZiB0aGUgYXBwb2ludG1lbnQgd2lsbCByZWNlaXZlIGEgRU1haWwgd2l0aCB0aGUgdXBkYXRlZCBkYXRlIGFuZCB0aW1lIChkZXBlbmRpbmcgb24gdGhlIG5vdGlmaWNhdGlvbiB0eXBlIG9mIHRoaXMgYXBwb2ludG1lbnQpLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDkiIG5hbWU9ImZsdiByZWNvcmRlciBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VG8gYWNjZXNzIG90aGVyIHJlY29yZGluZ3MgeW91IGhhdmUgdG8gbG9naW4gdGhlICRBUFBfTkFNRSBBcHBsaWNhdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTEwIiBuYW1lPSJpbnRlcnZpZXcgdmlkZW8gcG9kIj4KKyAgICA8dmFsdWU+Q2hvb3NlIHRoZSBVc2VyIGZvciB0aGlzIFZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMSIgbmFtZT0iaW50ZXJ2aWV3IHZpZGVvIGNob29zZSB1c2VyIj4KKyAgICA8dmFsdWU+QXZhaWxhYmxlIFVzZXJzIGZvciB0aGlzIFBvZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTIiIG5hbWU9ImludGVydmlldyBpbmZvIj4KKyAgICA8dmFsdWU+WW91IGFyZSBhIE1vZGVyYXRvciBpbiB0aGlzIEludGVydmlldy4gWW91IGNhbiBkZWNpZGUgd2hvIGlzIHNwZWFraW5nIGluIHRoaXMgaW50ZXJ2aWV3IGFuZCB5b3UgY2FuIHN0YXJ0IC8gc3RvcCB0aGUgcmVjb3JkaW5nIG9mIHRoZSBTZXNzaW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTMiIG5hbWU9ImludGVydmlldyBidXR0b24gcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+U3RhcnQgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxNCIgbmFtZT0iaW50ZXJ2aWV3IGJ1dHRvbiByZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TdG9wIFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTUiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIHJlY29yZGluZyBvZiB0aGUgSW50ZXJ2aWV3IGlzIGFscmVhZHkgc3RhcnRlZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE2IiBuYW1lPSJpbnRlcnZpZXcgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSByZWNvcmRpbmcgaXMgYWxyZWFkeSBzdG9wcGVkIG9yIG5vdCBiZWVuIHN0YXJ0ZWQgeWV0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTciIG5hbWU9ImludGVydmlldyByZWNvcmRpbmcgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSByZWNvcmRpbmcgZm9yIHRoaXMgaW50ZXJ2aWV3IGlzIGFscmVhZHkgc3RhcnRlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE4IiBuYW1lPSJpbnRlcnZpZXcgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTkiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIHBvc3QtcHJvY2Vzc2luZyBvZiBhbiBpbnRlcnZpZXcgdGFrZXMgNSBtaW51dGVzIHBlciAxIG1pbnV0ZSBpbnRlcnZpZXcuIFRoZSBjdXJyZW50IHByb2dyZXNzIG9mIHRoZSBpbnRlcnZpZXcgcG9zdC1wcm9jZXNzaW5nIHRyYW5zY29kaW5nIGlzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjAiIG5hbWU9InNpcCBjcmVhdGlvbiI+CisgICAgPHZhbHVlPllvdSBoYXZlIHRvIGVudGVyIHlvdXIgcGFzc3dvcmQgYWdhaW4gdG8gYXV0byBjcmVhdGUgdGhlIFNJUCBEYXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyMSIgbmFtZT0ic2lwIGNyZWF0aW9uIj4KKyAgICA8dmFsdWU+UmUtZ2VuZXJhdGUgU0lQIERhdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIyIiBuYW1lPSJmaWxlZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IG1vdmUgdGhpcyBmaWxlIG9yIGZvbGRlciBpbnRvIGl0cyBvd24gc3ViIGZvbGRlciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIzIiBuYW1lPSJmaWxlIGV4cGxvcmVyICI+CisgICAgPHZhbHVlPkhvbWUgZHJpdmUgc2l6ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjQiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5QdWJsaWMgZHJpdmUgc2l6ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjUiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5MaWNlbnNlIFNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNiIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPllvdSBjYW4gZWl0aGVyIGJpbmQgdGhlIHVzZXIgdG8gYSBleHBpcmUgRGF0ZSBvciB0byBhIG1heGltdW0gbnVtYmVyIG9mIG1pbnV0ZXMgd2hlbiB5b3UgZW5hYmxlIGxpY2Vuc2luZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI3IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+Q2hlY2sgbGljZW5zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjgiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5GbGF0cmF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjkiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5FeHBpcmUgZGF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzAiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5TZWNvbmRzIGxlZnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMxIiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+VG90YWwgdGltZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzIiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdXIgTGljZW5zZSBoYXMgZXhwaXJlZC4gWW91IG5lZWQgdG8gYnV5IG5ldyBtaW51dGVzIChQYXktcGVyLW1pbnV0ZSkgb3IgYSB2b2x1bWUgZmxhdHJhdGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Q2xpY2sgYW5kIGJ1eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzQiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlRpbWUgTGVmdCBvbiB5b3VyIGFjY291bnQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzNSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+VXNlciBMaWNlbnNlIEluZm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM2IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5JbmZvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzNyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Q2xvc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM4IiBuYW1lPSJsaWNlbnNlLWluZm8iPgorICAgIDx2YWx1ZT5Zb3VyIGxpY2Vuc2UgaGFzIGV4cGlyZWQuIFlvdSBuZWVkIGVpdGhlciB0byBidXkgYSBtaW51dGUgcGFja2FnZSAoUGF5LXBlci1taW51dGUpIG9yIGEgdm9sdW1lIGZsYXRyYXRlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzkiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkxpY2Vuc2Ugc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQwIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIGVpdGhlciBidXkgbWludXRlcyB0byBtYWtlIFdlYi1Db25mZXJlbmNpbmcgKFBheS1wZXItbWludXRlKS4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7IE9yIHlvdSBidXkgYSB2b2x1bWUgZmxhdHJhdGUgYWJvdXQgMy0xMiBtb250aHMuJmx0O2JyLyZndDsmbHQ7YnIvJmd0O1NlbmRpbmcgaW52aXRhdGlvbnMgKGRpcmVjdCBsaW5rcyBpbnRvIENvbmZlcmVuY2UgUm9vbXMpIG9yIGNyZWF0aW5nIGNvbmZlcmVuY2UgUm9vbXMgdmlhIHRoZSBDYWxlbmRhciB3aXRoIGV4dGVybmFsIFVzZXJzIGlzIG9ubHkgYWxsb3dlZCB3aXRoIGEgdm9sdW1lIGZsYXRyYXRlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDEiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSA2MCBNaW51dGVzIDksOTkgRVVSTyAoMTYgQ2VudCBwZXIgTWludXRlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDIiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSA1IGhvdXJzIDE5LDk5IEVVUk8gKDYgQ2VudCBwZXIgbWludXRlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDMiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSAzIG1vbnRoIGZvciAyOSw5OSBFVVJPICg5LDk5IEV1cm8gcGVyIE1vbnRoKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDQiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSA2IG1vbnRoIGZvciAzOSw5OSBFVVJPICg2LDY2IEV1cm8gcGVyIG1vbnRoKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDUiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlBheS1wZXItbWludXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Vm9sdW1lIGZsYXRyYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91IGhhdmUgdW5saW1pdGVkIExpY2Vuc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ4IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3VyIGxpY2Vuc2Ugd2lsbCBleHBpcmUgYXQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0OSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91IGJvdWdodCBQYXktcGVyLW1pbnV0ZS4gWW91IHN0aWxsIGhhdmU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IG5ldyBjcmVkaXQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+V2FudCB5b3VyIG93biBTZXJ2ZXI/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91IHdvdWxkIGxpa2UgdG8gaGF2ZSAkQVBQX05BTUUgaW5zdGFsbGVkIG9uIHlvdXIgU2VydmVyIG9yIGludGVncmF0ZWQgaW50byB5b3VyIE1vb2RsZSwgU3VnYXJDUk0sIFdlYnNpdGUgb3IgSW50cmFuZXQ/IFByaXppbmdzIHN0YXJ0IGF0IDUwMCBFdXJvIHBlciBJbnN0YWxsYXRpb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+T3Igc2VuZCB1cyBhIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU0IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5BbnN3ZXIgdG86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1NSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+TWVzc2FnZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU2IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5TZW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1NyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Q2xpY2sgaGVyZSB0byBnZXQgY29udGFjdCBJbmZvIGFuZCBQcml6aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTgiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNyZWRpdCBDYXJkIERldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU5IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5GaXJzdG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYwIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5MYXN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjEiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNyZWRpdCBDYXJkIFR5cGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYyIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5WSVNBIENhcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYzIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5NYXN0ZXJDYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2NCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+RGlzY292ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY1IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5BbWVyaWNhbiBFeHByZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2NiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q3JlZGl0IENhcmQgTnVtYmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2NyIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+RXhwaXJhdGlvbiBEYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2OCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q2FyZCBWZXJpZmljYXRpb24gTnVtYmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2OSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+QmlsbGluZyBBZGRyZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+QWRkcmVzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzEiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzIiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTczIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5Db3VudHJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U3RhdGUgKE9ubHkgVVMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+WklQPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+QW1vdW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NyIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U3VibWl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3OCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U3RlcCAxOiAkQVBQX05BTUUgLSBQYXltZW50IEZvcm08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc5IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5FTWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODAiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNsaWNrICJDaGVjayBvdXQgd2l0aCBQYXlwYWwiIHRvIHBheS4mbHQ7YnIvJmd0OyBQYXlwYWwgYWNjZXB0cyBWSVNBLCBNYXN0ZXJDYXJkLCBEaXNjb3ZlciBvciBBbWVyaWNhbiBFeHByZXNzLiAmbHQ7YnIvJmd0O0l0IGRvZXMgbm90IHJlcXVpcmUgdG8gc2lnbiB1cCB3aXRoIFBheXBhbC4gJmx0O2JyLyZndDtDaXRpemVucyBmcm9tIEdlcm1hbnkgY2FuIGFsc28gcGF5IHdpdGggZGlyZWN0IGRlYml0IChQZXIgTGFzdHNjaHJpZnQtRWluenVnKS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgxIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5UaGFuayB5b3UgZm9yIGJ1eWluZyAkQVBQX05BTUUuICZsdDtici8mZ3Q7ICZsdDtici8mZ3Q7IEFzIHNvb24gYXMgd2UgcmVjZWl2ZWQgdGhlIHBheW1lbnQgeW91ciBhY2NvdW50IHdpbGwgYmUgdXBkYXRlZC4mbHQ7YnIvJmd0OyBZb3Ugd2lsbCByZWNlaXZlIGFuIEVNYWlsIHdpdGggeW91ciBpbnZvaWNlIGFzIFBERi4mbHQ7YnIvJmd0O1lvdSBjYW4gYWxzbyBjaGVjayBjdXJyZW50IGFuZCBwYXN0IHRyYW5zYWN0aW9ucyBpbiB5b3VyIHByb2ZpbGUgc2V0dGluZ3MuJmx0O2JyLyZndDsmbHQ7YnIvJmd0OyZsdDtici8mZ3Q7WW91IGNhbiBjbG9zZSB0aGlzIGJyb3dzZXIgd2luZG93L3RhYiBub3cgYW5kIHJldHVybiB0byAkQVBQX05BTUUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U3VibWl0IGFuZCBCdXkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MyIgbmFtZT0icGF5bWVudC1mcm9tIj4KKyAgICA8dmFsdWU+Q2xpY2sgYW5kIEJ1eSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg0IiBuYW1lPSJwYXltZW50LWZyb20iPgorICAgIDx2YWx1ZT5TdGVwIDM6ICRBUFBfTkFNRSBQYXltZW50IC0gQ2hlY2sgb3JkZXIgYW5kIGJ1eSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg1IiBuYW1lPSJwYXltZW50LWZyb20iPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4NiIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+UGF5bWVudCByZWNlaXZlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg3IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5IaSw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg4IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5XZSBoYXZlIHJlY2VpdmVkIHlvdXIgcGF5bWVudC4gWW91ciB1c2VyIHByb2ZpbGUgaXMgdXBkYXRlZCBub3cuIFNlZSBhdHRhY2hlZCB5b3VyIEludm9pY2UuIFRoZSBJbnZvaWNlIGFuZCBhbGwgcGFzdCBJbnZvaWNlIGNhbiBhbHNvIGJlIGRvd25sb2FkZWQgaW4geW91ciB1c2VyIHByb2ZpbGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4OSIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+VGhhbmsgeW91IGZvciB1c2luZyAkQVBQX05BTUUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MCIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+UGF5bWVudCBSZWNlaXZlZCAkQVBQX05BTUUgLTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTEiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5QYXltZW50IGFuZCBUcmFuc2FjdGlvbiBTdGF0dXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkyIiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+VHJhbnNjYXRpb24gSGFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTMiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NaW51dGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NCIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPk1vbnRoczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTUiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5FVVI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk2IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+U3RhdHVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NyIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPkludm9pY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk4IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5OSIgbmFtZT0iZXJyb3ItbGljZW5zZS1mbGF0Ij4KKyAgICA8dmFsdWU+WW91IG5lZWQgdG8gYnV5IGEgdm9sdW1lIGZsYXRyYXRlIHRvIGJlIGFibGUgdG8gc2VuZCBpbnZpdGF0aW9ucyBvciBjcmVhdGUgbWVldGluZ3MgdmlhIHRoZSBjYWxlbmRhci4gV2l0aCBQYXktcGVyLW1pbnV0ZSBpdCBpcyBvbmx5IHBvc3NpYmxlIGZvciB5b3UgdG8gYWNjZXNzICRBUFBfTkFNRS4gWW91IGNhbm5vdCBhbGxvdyAzdGggUGFydGllcyB0byBhY2Nlc3MgYSBNZWV0aW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAwIiBuYW1lPSJlcnJvciB1c2VyIj4KKyAgICA8dmFsdWU+VGhpcyBFbWFpbCBpcyBhbHJlYWR5IHVzZWQgYnkgYW5vdGhlciBVc2VyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAxIiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+U0lQLVNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDIiIG5hbWU9InJvb20tYWRtaW4iPgorICAgIDx2YWx1ZT5UaGUgQ29uZmVyZW5jZSBOdW1iZXIgYW5kIFBJTiBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgdmlhIHRoZSBPcGVuWEcgUlBDLUdhdGV3YXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwMyIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlNJUCBOdW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNCIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlBJTjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA1IiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+Q2xlYXIgb2JqZWN0cyBvbiBjdXJyZW50IHNsaWRlIG9ubHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDYiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5Pbmx5IHRoZSBVUkwgZW50ZXJlZCBpbiB0aGUgU3RhdHVzIGJhciBpcyBzZW5kIHRvIHBhcnRpY2lwYW50cyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk1ha2UgVGVhbS1Sb29tcyBbQnJlYWtvdXQgc2Vzc2lvbl08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNob29zZSB1c2VycyBmb3IgYSBuZXcgVGVhbS1Sb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+WW91IGNhbiBjaG9vc2UgdXNlcnMgaGVyZSBhbmQgY3JlYXRlIGEgbmV3IENvbmZlcmVuY2UgUm9vbSAoIlRlYW0gUm9vbSIpIGZvciB0aGVtLiBUaGUgY2hvc2VuIHVzZXJzIHdpbGwgYXV0b21hdGljYWxseSBzd2l0Y2ggdG8gdGhlIG5ldyBUZWFtLVJvb20gb3IgZ2V0IGEgbm90aWZpY2F0aW9uLiBUZWFtLVJvb20gTW9kZXJhdG9ycyB3aWxsIGdldCBhZGRpdGlvbmFsbHkgYSBsaXN0IG9mIGN1cnJlbnQgcm9vbXMgc28gdGhhdCB0aGV5IGNhbiBzd2l0Y2ggdG8gZWFjaCByb29tIGlmIHRoZXJlIGFyZSBpcyBuZWVkIGZvciBhIE1vZGVyYXRvci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Vc2VycyBmb3IgdGhlIG5ldyBUZWFtLVJvb206PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DcmVhdGUgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNob29zZSBhdCBsZWFzdCBvbmUgdXNlciBmb3IgdGhlIFRlYW0tUm9vbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkFkZCB1c2VyIHRvIHRlYW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlJlbW92ZSB1c2VyIGZyb20gVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Vc2VyIGlzIFRlYW0tUm9vbSBNb2RlcmF0b3IgKEhlIGlzIGFibGUgdG8gbWFuYWdlIFRlYW0tUm9vbXMgYW5kIHVzZXJzIG9mIHRoZSBUZWFtLVJvb20gY2FuIGFzayBoaW0gdG8gY29tZSBpbnNpZGUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Sb29tdHlwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+SWYgeW91IGNoZWNrICJGb3JjZSB1c2VyIHRvIHN3aXRjaCB0byBuZXcgVGVhbS1Sb29tIiBhbGwgY2hvc2VuIHVzZXJzIHdpbGwgYXV0b21hdGljYWxseSBzd2l0Y2ggdG8gdGhlIG5ld2x5IGNyZWF0ZWQgVGVhbS1Sb29tLiBPdGhlcndpc2UgdGhleSBnZXQgYSBub3RpZmljYXRpb24gd2l0aCBhIGJ1dHRvbiB0aGF0IHRoZXkgJmx0O2kmZ3Q7Y2FuJmx0Oy9pJmd0OyBzd2l0Y2ggdG8gdGhlIG5ldyByb29tLiBUZWFtLU1vZGVyYXRvcnMgYWx3YXlzIGhhdmUgdGhlIGZyZWUgY2hvaWNlIHRvIG1hbmFnZSB0aGUgVGVhbS1Sb29tcyBhbmQgc3dpdGNoIGJldHdlZW4gdGhlbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk1hbmFnZSBUZWFtLVJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIHN3aXRjaCBoZXJlIGJldHdlZW4gYWxsIFRlYW0tUm9vbXMgdGhhdCB5b3UgYXJlIGFzc2lnbmVkIGFzIFRlYW0tUm9vbSBNb2RlcmF0b3IuIFVzZXJzIGluc2lkZSB0aGUgVGVhbS1Sb29tIGNhbiBzZW5kIHlvdSBhIG1lc3NhZ2UsIGZvciBleGFtcGxlIHRvIGFzayB5b3UgdG8gY29tZSB0byB0aGVpciByb29tIGFuZCBoZWxwIHRoZW0uIFlvdSBjYW4gYWxzbyB0ZXJtaW5hdGUgdGhlIFRlYW0tUm9vbSBhbmQgYWxsIFVzZXJzIHdpbGwgYmUgbG9nZ2VkIG91dC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkZvcmNlIHVzZXIgdG8gc3dpdGNoIHRvIG5ldyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNyZWF0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Vc2VycyBhdmFpbGFibGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkFkZCBhIHVzZXIgd2l0aCB0aGUgcGx1cyBmcm9tIHRoZSBsZWZ0IG9yIHJlbW92ZSBpdCB3aXRoIHRoZSBjcm9zcyBmcm9tIHRoZSByaWdodCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjEpIFRlYW0tUm9vbSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MikgQWRkIHVzZXJzIHRvIHRoZSBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW0tUm9vbSBOYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNoYW5nZSB0byB0aGUgUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U3dpdGNoIHRvIHRoaXMgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZXJtaW5hdGUgVGVhbS1Sb29tIGFuZCBsb2dvdXQgYWxsIFVzZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5OZXcgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBhIG5ldyBUZWFtLVJvb20gYXZhaWxhYmxlIGZvciB5b3UuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Td2l0Y2ggdG8gVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb20gQWN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+WW91IGNhbiByZS1vcGVuIHRoaXMgd2luZG93IHZpYSB0aGUgbWFpbiBtZW51IGluIHRoZSAiQWN0aW9ucyIgc2VjdGlvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlNlbmQgbWVzc2FnZSB0byBUZWFtLVJvb20gTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5OZXcgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBhIG5ldyBUZWFtLVJvb20gYXZhaWxhYmxlLiBZb3UgY2FuIHN3aXRjaCB0byB0aGF0IFJvb20uIFRlYW0tUm9vbXMgYXJlIGxpa2UgIldvcmtncm91cHMiIHdpdGggYWRkaXRpb25hbGx5IHBvc3NpYmlsaXRpZXMgdG8gYXNrIHRoZSBUZWFtLVJvb20gTW9kZXJhdG9yIGZvciBoZWxwLiBZb3VyIFRlYW0tUm9vbXMgYXJlIGFsc28gYXZhaWxhYmxlIGluIHRoZSAiTXkgTWVldGluZ3MiIHNlY3Rpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Td2l0Y2ggdG8gVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DcmVhdGVkIGJ5OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQ4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVhbS1Sb29tIG5hbWU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGlzIFdpbmRvdyB3aWxsIHN0YXkgb3BlbiBldmVuIGlmIHlvdSBsZWF2ZSB0aGUgcm9vbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1MCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJzIGZvciB0aGlzIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MykgT3RoZXIgVGVhbS1Sb29tcyB0aGF0IHlvdSBjb3VsZCBzd2l0Y2ggdG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1MiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlNlbmQgYSBtZXNzYWdlIHRvIHRoZSBUZWFtLVJvb20gTW9kZXJhdG9ycy4gRm9yIGV4YW1wbGUgaWYgeW91IG5lZWQgaGVscCBpbiBNb2RlcmF0aW5nIHRoZSBSb29tIG9yIGlmIHlvdSBoYXZlIGEgcXVlc3Rpb24gYWJvdXQgdGhlIHRvcGljLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U2VuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MikgVXNlcnMgdGhhdCBhcmUgaW52aXRlZCB0byB0aGlzIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+SXMgVGVhbS1Sb29tIE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGhlc2UgYXJlIGFsbCB1c2VycyB0aGF0IHRoZSBtb2RlcmF0b3IgaGFzIGludml0ZWQgdG8gdGhpcyBUZWFtLVJvb20uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBUZWFtLU1vZGVyYXRvciBsb2dnZWQgaW4gYXQgdGhlIG1vbWVudCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1OCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1OSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlBsZWFzZSBoZWxwIHVzLCB3ZSBoYXZlIGEgcHJvYmxlbSBpbiBvdXIgVGVhbS1Sb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+QSB1c2VyIGZyb20gYSBUZWFtLVJvb20gcmVxdWVzdHMgeW91ciBoZWxwLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVhbS1Sb29tIHJlcXVlc3QgZm9yIGhlbHA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2MiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk1lc3NhZ2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Gcm9tOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+WW91IGFyZSBjdXJyZW50bHkgbm90IGluIGFueSBUZWFtLVJvb20uIEJ1dCB5b3UgY2FuIHN3aXRjaCBoZXJlIHRvIGFsbCBUZWFtLVJvb21zIHRoYXQgeW91IGhhdmUgYWNjZXNzIHRvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY1IiBuYW1lPSJiYWNrdXBDb250ZW50Ij4KKyAgICA8dmFsdWU+QmFja3VwIHRoZSBTeXN0ZW0uIFRoZSBCYWNrdXAgaW5jbHVkZXMgYWxsIFVzZXIgZ2VuZXJhdGVkIGRhdGEuIFRoZSBjb25maWd1cmF0aW9uIGlzIG5vdCBpbmNsdWRlZCBhcyB3ZWxsIGFzIHRoZSBsYW5ndWFnZSBsYWJlbHMuIEJlY2F1c2UgdGhvc2UgdmFsdWVzIGFyZSBpbXBvcnRlZCB3aXRoIHRoZSBTeXN0ZW0gSW5zdGFsbGVyLiBUbyB1cGRhdGUgeW91ciBTeXN0ZW0sIGV4cG9ydCB5b3VyIG9sZCBzeXN0ZW0gKDEpIHJlLWluc3RhbGwgaW50byBhIG5ldyBkYXRhYmFzZSB0aGUgbmV3IHBhY2thZ2UgKDIpIGFuZCBpbXBvcnQgdGhlIEJhY2t1cCBmaWxlIGFnYWluICgzKS4gVGhlIEJhY2t1cCBzaG91bGQgYmUgaW1wb3J0ZWQgYmVmb3JlIGdlbmVyYXRpbmcgZGF0YSBpbiB0aGUgbmV3bHkgaW5zdGFsbGVkIHN5c3RlbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2NiIgbmFtZT0iYmFja3VwQ29udGVudCI+CisgICAgPHZhbHVlPlN5c3RlbSBCYWNrdXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2NyIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+QWxsb3cgdXNlciB0byBzaGFyZSBTY3JlZW4vUmVjb3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjgiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPkRlbnkgdXNlciB0byBzaGFyZSBTY3JlZW4vUmVjb3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjkiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPlVzZXIgaXMgTW9kZXJhdG9yLCBoZSBjYW4gZG8gYW55dGhpbmchPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzAiIG5hbWU9ImFwcGx5IGZvciBzY3JlZW4vcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0byBzaGFyZS9yZWNvcmQgc2NyZWVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDcxIiBuYW1lPSJtb2RlcmF0aW9uIG1pbmkgaWNvbnMiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGFsbG93ZWQgdG8gc2hhcmUvcmVjb3JkIHNjcmVlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDcyIiBuYW1lPSJtb2RlcmF0aW9uIG1pbmkgaWNvbnMiPgorICAgIDx2YWx1ZT5BcHBseSBmb3IgcmlnaHQgdG8gc2hhcmUvcmVjb3JkIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3MyIgbmFtZT0ibW9kZXJhdGlvbiBtaW5pIGljb25zIGNvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT5BbGxvdy9EZW55IHJpZ2h0IHRvIHNoYXJlL3JlY29yZCBzY3JlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzQiIG5hbWU9InNvdW5kIGljb24iPgorICAgIDx2YWx1ZT5UdXJuIHNvdW5kIG9mZjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc1IiBuYW1lPSJzb3VuZCBpY29uIj4KKyAgICA8dmFsdWU+VHVybiBzb3VuZCBvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc2IiBuYW1lPSJyb29tIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+QXVkaW8gb25seSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzciIG5hbWU9InJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5UdXJuIHRoaXMgRmxhZyBvbiBhbmQgdGhlIHVzZXJzIHdpbGwgaGF2ZSBvbmx5IHRoZSBBdWRpby1PcHRpb24gYW5kIG5vIFZpZGVvIGluIGEgY29uZmVyZW5jZSByb29tLiBUaGlzIGNhbiBieSBnb29kIHRvIHNhdmUgYmFuZHdpZHRoLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc4IiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5BbGxvdyBSZW1vdGUgQ29udHJvbCAoRHVyaW5nIFNjcmVlbiBTaGFyaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc5IiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5EZW55IFJlbW90ZSBDb250cm9sIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODAiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFwcGx5IGZvciByaWdodCB0byBSZW1vdGUgQ29udHJvbCBTY3JlZW4gKER1cmluZyBTY3JlZW4gU2hhcmluZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MSIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+WW91IGFyZSBhbGxvd2VkIHRvIFJlbW90ZSBDb250cm9sIFNjcmVlbiAoRHVyaW5nIFNjcmVlbiBTaGFyaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgyIiBuYW1lPSJhcHBseSBmb3IgcmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIHJlbW90ZSBjb250cm9sIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MyIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+VXNlciBpcyBNb2RlcmF0b3IsIGhlIGNhbiBkbyBhbnl0aGluZyEgW1JlbW90ZSBEZXNrdG9wIENvbnRyb2xdPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODQiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFsbG93L0RlbnkgcmlnaHQgdG8gUmVtb3RlIENvbnRyb2wgU2NyZWVuIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODUiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPjEpIFlvdXIgUEMgdG8gcmVtb3RlIFBDOiBUbyBjb3B5IGFuZCBwYXN0ZSB0ZXh0IGZyb20geW91ciBjbGlwYm9hcmQgaW50byB0aGUgcmVtb3RlIGNvbnRyb2xsZWQgc2NyZWVuLCBjbGljayBvbiB0aGUgc2NyZWVuLCB0aGVuIHJpZ2h0IGNsaWNrIGluIHRoZSB0ZXh0IGZpZWxkIGFuZCBjaG9vc2UgIkluc2VydCIgZnJvbSB0aGUgY29udGV4dCAocmlnaHQgY2xpY2spIG1lbnUuJmx0O2JyLyZndDsmbHQ7YnIvJmd0OzIpIEZyb20gcmVtb3RlIFBDIHRvIHlvdXIgUEM6IFRvIGNvcHkgdGV4dCBmcm9tIHRoZSByZW1vdGUgUEMgdG8geW91ciBQQydzIGNsaXBib2FyZCwgaGlnaGxpZ2h0IHRoZSB0ZXh0IHdpdGggdGhlIG1vdXNlIG9uIHRoZSByZW1vdGUgc2NyZWVuLCB0aGVuIHJpZ2h0LWNsaWNrIG9uIHRoZSByZW1vdGUgc2NyZWVuIGFuZCBjaG9vc2UgJmx0O2kmZ3Q7Q29weSBoaWdobGlnaHRlZCB0ZXh0Jmx0Oy9pJmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg2IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Db3B5IGFuZCBQYXN0ZSB0ZXh0IGZyb20geW91ciBQQyB0byByZW1vdGUgUEMgYW5kIHZpY2UtdmVyc2EuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODciIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNvcHkgaGlnaGxpZ2h0ZWQgdGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg4IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Ib3cgdG8gY29weSBuIHBhc3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODkiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPlF1YWxpdHkgb2YgdGhlIFNjcmVlblNoYXJlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkwIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5WZXJ5IGhpZ2ggUXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkxIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5IaWdoIFF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5MiIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+TWVkaXVtIFF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5MyIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+TG93IFF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NCIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5lbl9VUzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk1IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPmRlX0RFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTYiIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+S2V5Ym9hcmQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTciIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+Q2xvc2UgV2ViaW5hciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5OCIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5UaGUgV2ViaW5hciBpcyBhbHJlYWR5IGNsb3NlZCwgeW91IHdpbGwgYmUgcmVkaXJlY3RlZCB0byBzb21lIGludGVyZXN0aW5nIG9mZmVyaW5ncyBpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk5IiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPkNsb3NlIFJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMCIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5FeGl0IFVSTDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAxIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPlJvb20gdGVybWluYXRpb24gc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMiIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5JZiB0aGUgcm9vbSBpcyBjbG9zZWQgdXNlcnMgd2lsbCBiZSByZWRpcmVjdGVkIHRvIHRoZSBleGl0IFVSTC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5MZGFwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDQiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDYiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+Q29uZmlnIEZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5MZGFwIENvbmZpZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA4IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwOSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5FbmFibGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTAiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+SW5zZXJ0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JbnNlcnRlZCBieTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEyIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPlVwZGF0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5VcGRhdGVkIGJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTQiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+VGhlIGNvbmZpZyBmaWxlcyBhcmUgaW4gdGhlIGZvbGRlciB3ZWJhcHBzL29wZW5tZWV0aW5ncy9jb25mLiBZb3UgbmVlZCB0byBtYW51YWxseSB1cGxvYWQgdGhlIGZpbGVzIHRvIHRoaXMgZm9sZGVyLiBDaGFuZ2VzIHRvIHRoZSBjb25maWcgZmlsZSBhcmUgaW1tZWRpYXRlbHkgb25saW5lLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE1IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkNvbmZpZyBmaWxlIG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNiIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JZiB5b3UgZW5hYmxlICJBZGQgRG9tYWluIHRvIHVzZXJuYW1lIiB0aGUgdmFsdWUgb2YgdGhlIGZpZWxkICJkb21haW4iIGlzIGFkZGVkIHRvIGVhY2ggbG9naW4gdGhhdCB0aGUgdXNlciBlbnRlcnMgaW4gdGhlIGxvZ2luIGJveC4gVGhpcyBpcyB1c2VmdWwgaWYgdGhlIExvZ2luIGluIHRoZSBMZGFwIGlzIHN0b3JlZCBpbmNsdWRpbmcgdGhlIGRvbWFpbiBuYW1lLiBFeGFtcGxlOiBVc2VyIGVudGVycyAiaGFucyIgZG9tYWluIGlzIHNwZWNpZmllZCBhcyAibG9jYWxob3N0LmNvbSIsIGxvZ2luIHRoYXQgaXMgdmVyaWZpZWQgYWdhaW5zdCBMZGFwIGlzOiBoYW5zQGxvY2FsaG9zdC5jb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5BZGQgRG9tYWluIHRvIHVzZXJuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTgiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+RG9tYWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTkiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+SW5zZXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjAiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+Q29weSBoaWdobGlnaHRlZCB0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjEiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+UmVtb3RlIENsaXBib2FyZCBUZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjIiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+U2hvdyByZW1vdGUgQ2xpcGJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjMiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkRvIG5vdCBzaG93IGFnYWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjQiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNvcHkgdGV4dCBoZXJlIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI1IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0aGUgcmlnaHQgdG8gcmVtb3RlIGNvbnRyb2wgKG9yIHRoZSBtb2RlcmF0aW9uKSB0byBjb3B5IGFuZCBwYXN0ZSB0ZXh0IHRvIG9yIGZyb20gdGhlIHJlbW90ZSBzY3JlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjYiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkVkaXQgZGVmYXVsdCBzZXR0aW5ncyAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNyIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+RG8gbm90IHNob3cgaW5mbyBib3ggaW4gUmVtb3RlIENvbnRyb2wgYWJvdXQgQ29weSBhbmQgUGFzdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyOCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5TYXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjkiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+UmVtb3ZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzAiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzEiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5JbnZpdGUgdXNlciB0byBjb25mZXJlbmNlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMiIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkNob29zZSBhIGNvbmZlcmVuY2Ugcm9vbS4gVGhlIGludml0ZWQgdXNlciB3aWxsIGdldCBhIG1lc3NhZ2Ugd2l0aCB5b3VyIG5hbWUgYW5kIGEgbGluayB0byB0aGUgcm9vbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMyIgbmFtZT0iY2hhdCB1c2VyIj4KKyAgICA8dmFsdWU+Q29ubmVjdGVkIHNpbmNlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM0IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+RW50ZXIgcm9vbSBhZnRlciBzZW5kaW5nIGludml0YXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzNSIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkludml0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM2IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+TWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM3IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0byBpbnZpdGUgeW91IHRvIHRoZSBjb25mZXJlbmNlIHJvb206PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzgiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5JbnZpdGUgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM5IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+U2VuZCBJbnZpdGF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDAiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5kaWQgJmx0O2ImZ3Q7bm90Jmx0Oy9iJmd0OyBhY2NlcHQgeW91ciBpbnZpdGF0aW9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQxIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+QWNjZXB0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDIiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5EZW55PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDMiIG5hbWU9InVzZXIgcHJvZmlsZSI+CisgICAgPHZhbHVlPlRpbWV6b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDQiIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPkV2ZW50IERldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0NSIgbmFtZT0iYXBwb2ludG1lbnQgbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ2IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5EZXNjcmlwdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ3IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5DcmVhdGVkIGJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDgiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5UaW1lWm9uZSBNZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDkiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5DaGVjayAiVGltZVpvbmUgTWVzc2FnZSIgdG8gZ2l2ZSB1c2VycyBhIG1lc3NhZ2UgbmV4dCB0aW1lIHRoZXkgbG9naW4gdG8gdXBkYXRlIHRoZWlyIHByb2ZpbGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTAiIG5hbWU9InRpbWUgem9uZSB1cGRhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlBsZWFzZSBjaGVjayB0aGUgdGltZSB6b25lIGluIHlvdXIgdXNlciBwcm9maWxlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUxIiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5OZXcgJEFQUF9OQU1FIGNvbmZlcmVuY2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTIiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkRldGFpbHM6Jmx0O2JyLyZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MyIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3RhcnQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTQiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkVuZDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NSIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2hhbmdlZCAkQVBQX05BTUUgY29uZmVyZW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NiIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+T3JnYW5pemVyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU3IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DYW5jZWxlZCAkQVBQX05BTUUgY29uZmVyZW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1OCIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIGNvbmZlcmVuY2UgUmVtaW5kZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTkiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Db21tdW5pdHkgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlNob3cgY29udGFjdCBkYXRhIHRvIGV2ZXJ5Ym9keTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYxIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+QWRkIGZpZWxkcyBvZiBpbnRlcmVzdCB0aGF0IHlvdSBvZmZlciBvciB0aGF0IHlvdSBhcmUgc2VhcmNoaW5nIHRvIGZpbmQgaW50ZXJlc3RpbmcgcGFydG5lcnMgZm9yIGEgY29uZmVyZW5jZS4gQ29tbWEgc2VwYXJhdGUgdGhlIHRlcm1zIChmb3IgZXhhbXBsZTogTWVkaWNhbCBTZXJ2aWNlLCBIZWFsdGggYXNzdXJhbmNlLCAuLi4pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjIiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NeSBvZmZlcmluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MyIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk15IGludGVyZXN0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY0IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY1IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+VGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2NiIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkZpZWxkcyBvZiBpbnRlcmVzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY3IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+Q29udGFjdCBpbmZvcm1hdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY4IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2hvdyBjb250YWN0IGRhdGEgdG8gY29udGFjdHMgb25seTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY5IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2hvdyBjb250YWN0IGRhdGEgdG8gbm9ib2R5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzAiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NeSBQcm9maWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzEiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5FZGl0IHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzIiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TZWFyY2ggdXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MyIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPldhdGNoIHlvdXIgcHJvZmlsZSBsaWtlIG90aGVyIHNlZSB5b3U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkVkaXQgeW91ciBzZXR0aW5ncywgYWRkIHlvdXIgaW50ZXJlc3RzIHRvIGJlIGZvdW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzUiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TZWFyY2ggZm9yIG90aGVyIHVzZXJzIGFuZCBleHRlbmQgeW91ciBuZXR3b3JrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzYiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+U2VhcmNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzciIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+VXNlciBvZmZlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3OCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5Vc2VyIGxvb2tzIGZvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc5IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkZyZWV0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODAiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgxIiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlRpbWV6b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODIiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+T2ZmZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODMiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+U2VhcmNoczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg0IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlNlYXJjaHJlc3VsdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg1IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkFjdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NiIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5BZGQgdG8gY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NyIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5TZW5kIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4OCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5Db250YWN0cyBhbmQgTWVzc2FnZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4OSIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5QZW5kaW5nIGNvbnRhY3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTAiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5BY2NlcHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkRlbnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MiIgbmFtZT0idXNlciBjb250YWN0IHJlcXVlc3QiPgorICAgIDx2YWx1ZT5IaSw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MyIgbmFtZT0idXNlciBjb250YWN0IHJlcXVlc3QiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGFkZCB5b3UgYXMgY29udGFjdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NCIgbmFtZT0idXNlciBjb250YWN0IHJlcXVlc3QiPgorICAgIDx2YWx1ZT5DaGVjayB5b3VyIGNvbnRhY3QgcmVxdWVzdHMgaW4gJEFQUF9OQU1FIG9yIGNsaWNrIG9uIHRob3NlIGxpbmtzIHRvIGFjY2VwdCBvciBkZW55IHRoZSByZXF1ZXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTUiIG5hbWU9ImFkZCB1c2VyIGNvbnRhY3QiPgorICAgIDx2YWx1ZT5UaGlzIHVzZXIgaXMgYWxyZWFkeSBpbiB5b3VyIGNvbnRhY3QgbGlzdCBvciBoYXMgcmVjZWl2ZWQgYW4gaW52aXRhdGlvbiB0byB5b3VyIGNvbnRhY3QgbGlzdCB0aGF0IGlzIG5vdCBhbnN3ZXJlZCB5ZXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTYiIG5hbWU9InVzZXIgY29udGFjdCBtYWlsIj4KKyAgICA8dmFsdWU+WW91ciBjb250YWN0IGxpc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkVkaXQgeW91ciBjb250YWN0IGFuZCBtZXNzYWdlcywmbHQ7YnIvJmd0OyBtYW5hZ2UgeW91ciBwZW5kaW5nIGNvbnRhY3RzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk4IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+Y29uZmlybWVkIHlvdSBhcyBjb250YWN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk5IiBuYW1lPSJjaGF0IGluZm8gbWVzc2FnZSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAwIiBuYW1lPSJjaGF0IGxvZyBpY29uIj4KKyAgICA8dmFsdWU+U2hvdyAvIENvcHkgY2hhdCBsb2c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMSIgbmFtZT0iY2hhdCBsb2cgd2luZG93Ij4KKyAgICA8dmFsdWU+Q2hhdCBMb2c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RnJvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TdWJqZWN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDYiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1lc3NhZ2VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDciIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk5ldyBNYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkNsaWNrIHRvIHdyaXRlIGEgbmV3IG1lc3NhZ2UgdG8gYW55IG9mIHlvdXIgY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwOSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+V3JpdGUgbmV3IG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VG86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlN1YmplY3Q6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTIiIG5hbWU9IndoaXRlYm9hcmQgZnVsbC1maXQiPgorICAgIDx2YWx1ZT5FbmFibGUgZnVsbCBmaXQgYW5kIHRoZSB3aGl0ZWJvYXJkIHdpbGwgem9vbSB0aGUgd2hvbGUgd2hpdGVib2FyZCBzbyB0aGF0IGFsbCZsdDtici8mZ3Q7ZG9jdW1lbnRzIGFyZSB2aXNpYmxlIGFjY29yZGluZyB0byBlYWNoIHBhcnRpY2lwYW50cyBzY3JlZW4gcmVzb2x1dGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMyIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+S2ljayB1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTQiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPllvdSBjYW5ub3Qga2ljayB5b3Vyc2VsZiBvdXQgb2YgdGhlIGNvbmZlcmVuY2Ugcm9vbSEgSWYgeW91IHdhbnQgdG8gbGVhdmUgaXQgY2xvc2UgdGhlIGJyb3dzZXIgb3IgdXNlIHRoZSBleGl0IGJ1dHRvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNSIgbmFtZT0ia2ljay11c2VyIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRpc2Nvbm5lY3QgdGhpcyB1c2VyIGZyb20gdGhpcyBjb25mZXJlbmNlIHJvb20/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTYiIG5hbWU9ImtpY2stdXNlciI+CisgICAgPHZhbHVlPkNvbmZpcm0gYWN0aW9uIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE3IiBuYW1lPSJraWNrLXVzZXIiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IGtpY2sgYSBTdXBlci1Nb2RlcmF0b3Igb3V0IG9mIGEgcm9vbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxOCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Qm9vayBjb25mZXJlbmNlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxOSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3RhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZCBhbiBvcHRpb25hbCByZXF1ZXN0IGZvciBtZWV0aW5nIHRvIHRoZSBtZXNzYWdlIGFuZCBjcmVhdGUgYSBjb25mZXJlbmNlIHJvb20uIFRoZSBFdmVudCBpcyB0aGVuIGNvcGllZCBpbiB0aGUgY2FsZW5kYXIgb2YgZXZlcnkgcGFydGljaXBhbnQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkluYm94PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VHJhc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhpcyBpcyB5b3UhIFlvdSBjYW5ub3QgYWRkIHlvdXJzZWxmIGFzIHlvdXIgb3duIGNvbnRhY3QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjYiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5UaGUgdXNlciBpcyBhbHJlYWR5IGRlbmllZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoZSB1c2VyIGlzIGFscmVhZHkgYXBwcm92ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjgiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5UaGlzIHVzZXIgY29udGFjdCBoYXNoIGlzIGludmFsaWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjkiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Vc2VyIGFkZGVkIHRvIGNvbnRhY3QgbGlzdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlVzZXIgZGVuaWVkIGFzIGNvbnRhY3QgYW5kIHJlbW92ZWQgZnJvbSBwZW5kaW5nIGNvbnRhY3QgbGlzdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIHN1Y2ggY29udGFjdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPldvdWxkIHlvdSByZWFsbHkgbGlrZSB0byByZW1vdmUgdGhhdCBjb250YWN0PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMzIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+Q29uZmlybSBjb250YWN0IHJlbW92YWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkRlbGV0ZSBjb250YWN0IGZyb20gbGlzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM1IiBuYW1lPSJ1c2VyIHByb2ZpbGUiPgorICAgIDx2YWx1ZT5Vc2VyIFByb2ZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNiIgbmFtZT0idXNlciBwcm9maWxlIj4KKyAgICA8dmFsdWU+U2hvdyB1c2VyIHByb2ZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWVzc2FnZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzOCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VhcmNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbGVjdCBhbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0MCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VsZWN0IG5vbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0MSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VsZWN0IHVucmVhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWxlY3QgcmVhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Nb3ZlIHRvIGZvbGRlciAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIG5ldyBmb2xkZXIgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRlbGV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ2IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EZWxldGVkIG1haWxzIGFyZSBzdGlsbCBpbiB5b3VyIHRyYXNoIGZvbGRlciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWFyayB1bnJlYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0OCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWFyayByZWFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFuc3dlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BbnN3ZXIgZXZlcnlib2R5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkZvcndhcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWN0aW9ucyAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlNlbmQgcHJpdmF0ZSBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk5vdGhpbmcgc2VsZWN0ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1vdmUgdG8gSW5ib3g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGVsZXRlIChmaW5hbCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1OCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIGZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgZm9sZGVycyBhbmQgb3JnYW5pemUgeW91ciBtZXNzYWdlcyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIGZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPkRlbGV0ZSBmb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPllvdSBjYW5ub3QgZGVsZXRlIHRoaXMgZm9sZGVyLCB0aGVyZSBhcmUgc3RpbGwgbWVzc2FnZXMgaW5zaWRlISBEZWxldGUgZmlyc3QgdGhlIG1lc3NhZ2VzIG9yIG1vdmUgdGhlbSB0byBhbm90aGVyIGZvbGRlci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPkVkaXQgbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGZvbGRlcj8gVGhlcmUgaXMgbm8gd2F5IHRvIHVuZG8gdGhhdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPllvdXIgcmVxdWVzdCB3YXMgc2VuZCB0byB0aGUgdXNlci4gVGhlIHVzZXIgd2lsbCByZWNlaXZlIGEgbm90aWZpY2F0aW9uIHRvIGFjY2VwdCBvciBkZW55IHlvdXIgcmVxdWVzdC4gT25seSBhY2NlcHRlZCByZXF1ZXN0cyBhcmUgaW4geW91ciBjb250YWN0IGxpc3Qgb2YgY291cnNlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+TWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY4IiBuYW1lPSJ1c2VyIHZpZXcgcHJvZmlsZSI+CisgICAgPHZhbHVlPlRoZSB1c2VyIGRvZXMgbm90IHNoYXJlIGhpcyBwZXJzb25hbCBjb250YWN0IGRhdGEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjkiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+VGhlIHVzZXIgZG9lcyBzaGFyZSBoaXMgcGVyc29uYWwgY29udGFjdCBkYXRhIG9ubHkgdG8gY29udGFjdHMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzAiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+QWRkcmVzcyAmYW1wOyBQaG9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjcxIiBuYW1lPSJlcnJvciBjb2RlIj4KKyAgICA8dmFsdWU+WW91IGludml0YXRpb24gY29kZSBpcyBubyB2YWxpZCwgdGhlIGNvZGUgaXMgb25seSB2YWxpZCBkdXJpbmcgdGhpcyBzcGVjaWZpYyBkYXRlIGFuZCB0aW1lOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjcyIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhpcyBldmVudCBpcyBjb25uZWN0ZWQgdG8gc2V2ZXJhbCBjYWxlbmRhcnMgb2Ygb3RoZXIgdXNlcnMuIFlvdXIgY2hhbmdlIHdpbGwgYWxzbyB1cGRhdGUgdGhlaXIgY2FsZW5kYXIuIFdvdWxkIHlvdSByZWFsbHkgbGlrZSB0byB1cGRhdGUgdGhlIGV2ZW50PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjczIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Q29uZmlybSB1cGRhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkFsbG93IGNvbnRhY3QgdG8gc2VlIG15IGNhbGVuZGFyICh2aWV3IG9ubHkpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzUiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5EbyBub3Qgc2hhcmUgY2FsZW5kYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkNhbGVuZGFyIG9mIGNvbnRhY3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzciIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Zb3VyIGNvbnRhY3RzIG5lZWQgdG8gYXBwcm92ZSB5b3UgZmlyc3QgdG8gYmUgYWJsZSB0byBzZWUgdGhlaXIgY2FsZW5kYXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzgiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IHN0b3JlIG9yIGRlbGV0ZSBldmVudHMgZnJvbSBvdGhlciBjYWxlbmRhcnMgdGhlbiB5b3VyIG93biE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3OSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlNob3cgbXkgb3duIGNhbGVuZGFyIGFnYWluITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgwIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhpcyBldmVudCBpcyBjb25uZWN0ZWQgdG8gc2V2ZXJhbCBjYWxlbmRhcnMgb2Ygb3RoZXIgdXNlcnMuIFlvdXIgYWN0aW9uIHdpbGwgYWxzbyBkZWxldGUgdGhlIGV2ZW50IGZyb20gdGhlaXIgY2FsZW5kYXIuIFdvdWxkIHlvdSByZWFsbHkgbGlrZSB0byBkZWxldGUgdGhlIGV2ZW50PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgxIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Q29uZmlybSBhY3Rpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4MiIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPkVudGVyIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4MyIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPkFjY2VzcyB0aGUgY29uZmVyZW5jZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGEgY29uZmVyZW5jZSByb29tIGFuZCBldmVudCBib29rZWQgd2l0aCB0aGlzIHByaXZhdGUgbWVzc2FnZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NSIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPllvdSBuZWVkIHRvIHN0b3JlIHRoZSBldmVudCBmaXJzdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NiIgbmFtZT0iYWNjZXNzIHJvb21zIGVycm9yIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgbm8gc3VjaCByb29tIGF2YWlsYWJsZS4gVGhlIGV2ZW50IGluIHRoZSBjYWxlbmRhciBhbmQgY29ubmVjdGVkIHJvb20gaXMgYWxyZWFkeSBkZWxldGVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg3IiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5DaG9vc2UgeW91ciBuaWNrbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg4IiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5GaXJzdG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4OSIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+TGFzdG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MCIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+RW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MSIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+T2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MiIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+TWluaW11bSBsZW5ndGggNCBjaGFycyEgRm9yIGJvdGgsIGZpcnN0bmFtZSBhbmQgbGFzdG5hbWUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTMiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIHZhbGlkIGVtYWlsITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk0IiBuYW1lPSJhdXRoIGZyb20iPgorICAgIDx2YWx1ZT5GYWNlYm9vazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk1IiBuYW1lPSJhdXRoIGZvcm0iPgorICAgIDx2YWx1ZT5Mb2dpbiB3aXRoIHlvdXIgRmFjZWJvb2sgYWNjb3VudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk2IiBuYW1lPSJ2aWV3IHByb2ZpbGUiPgorICAgIDx2YWx1ZT5NZW1iZXIgc2luY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5NyIgbmFtZT0iZGlyZWN0IGxvZ2luIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Zb3UndmUgbG9nZ2VkIHdpdGggeW91ciBGYWNlYm9vayBhY2NvdW50LiBZb3Ugc2hvdWxkIHVwZGF0ZSB5b3VyIHByb2ZpbGUgd2l0aCB0aGUgY29ycmVjdCBlbWFpbC4gT3RoZXJ3aXNlIHlvdSB3aWxsIG5vdCByZWNlaXZlIGludml0YXRpb25zIGFuZCBwcml2YXRlIG1lc3NhZ2VzIGZyb20gb3RoZXIgdXNlcnMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTgiIG5hbWU9ImRpcmVjdCBsb2dpbiBtZXNzYWdlIGhlYWRlciI+CisgICAgPHZhbHVlPk1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5OSIgbmFtZT0iZGlyZWN0IGxvZ2luIG1lc3NhZ2UgY2hlY2tib3ggY29udHJvbCI+CisgICAgPHZhbHVlPkRvIG5vdCBzaG93IHVwZGF0ZSBwcm9maWxlIG1lc3NhZ2UgYWdhaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMCIgbmFtZT0icHJvZmlsZSBzZXR0aW5ncyBidXR0b24iPgorICAgIDx2YWx1ZT5tb3JlIGRpc3BsYXkgb3B0aW9ucyAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TmV3IHByaXZhdGUgbWVzc2FnZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2xpY2sgaGVyZSB0byB2aXNpdCB5b3VyIHByb2ZpbGUgdG8gc2VlIHRoZSBmdWxsIG1lc3NhZ2UgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlJlcGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPlJvb21zIGFuZCBjaGF0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA1IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5NeSByb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA2IiBuYW1lPSJteSByb29tcyI+CisgICAgPHZhbHVlPk15IGNvbmZlcmVuY2Ugcm9vbSAoZm9yIDEtMTYgdXNlcnMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDciIG5hbWU9Im15IHJvb21zIj4KKyAgICA8dmFsdWU+TXkgd2ViaW5hciByb29tIChmb3IgMS0xMjAgdXNlcnMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDgiIG5hbWU9InJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5Pd25lciBJZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA5IiBuYW1lPSJsb2dpbiBlcnJvciI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIHBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTAiIG5hbWU9ImxvZ2luIGVycm9yIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgYW4gYWNjb3VudCB3aXRoIFVzZXItTGV2ZWwgVXNlciwgTW9kZXJhdG9yIG9yIEFkbWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTEiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5XZWItU2VydmljZSAob25seSBhY2Nlc3MgdmlhIFNPQVApPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTIiIG5hbWU9InVwbG9hZCBmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+RG8gZGlyZWN0bHkgbG9hZCB0byB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTMiIG5hbWU9IndoaXRlYm9hcmQgY2xvc2UgY29uZmlybWF0aW9uIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIHJlbW92ZSB0aGlzIHdoaXRlYm9hcmQ/IFRoaXMgYWN0aW9uIGNhbm5vdCBiZSB1bmRvbmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTQiIG5hbWU9IndoaXRlYm9hcmQgbG9hZCBXTUwiPgorICAgIDx2YWx1ZT5Mb2FkIHRvIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxNSIgbmFtZT0icmVjb3JkaW5nIGZsYWciPgorICAgIDx2YWx1ZT5EbyBub3QgZm9yZ2V0IHN0YXJ0IHJlY29yZGluZyEgT25lIHVzZXIgcGVyIHJvb20gYWx3YXlzIG5lZWRzIHRvIHN0YXJ0IGl0IHRvIGhhdmUgdGhlIHJlY29yZGluZyBhZnRlcndhcmRzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE2IiBuYW1lPSJyZWNvcmRpbmcgZmxhZyI+CisgICAgPHZhbHVlPlN0YXJ0IFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE3IiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPkFycm93PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTgiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+Q2lyY2xlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTkiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+TGluZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIwIiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPlNxdWFyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIxIiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPlRyaWFuZ2xlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjIiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5UZXh0L05vdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyMyIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkNsaXBhcnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjQiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5EcmF3IEZyZWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNSIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlNlbGVjdC9Nb3ZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjYiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5EcmF3IFNoYXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjciIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5DdXQvTW92ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI4IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+Wm9vbSBJbi9PdXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyOSIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlByaW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzAiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5VbmRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzEiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5UcmFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMyIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+QWRkIEdyaWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMyIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlNoYXJlIEZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNCIgbmFtZT0iaWNvbiBzdWJtZW51Ij4KKyAgICA8dmFsdWU+U2VsZWN0IFNoYXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzUiIG5hbWU9Imljb24gc3VibWVudSI+CisgICAgPHZhbHVlPlNlbGVjdCBDbGlwYXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzYiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5Db3B5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzciIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5DdXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzOCIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPlBhc3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzkiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5EZWxldGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MCIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhlIGNvbXBsZXRlIGNvbnRlbnQgb24gdGhlIHdoaXRlYm9hcmQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDEiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5Mb2FkIGRpcmVjdGx5IHRvIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MiIgbmFtZT0iYXR0ZW5kZWVzIj4KKyAgICA8dmFsdWU+QXR0ZW5kZWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDMiIG5hbWU9ImF0ZW5kZWUgbWFuYWdlciI+CisgICAgPHZhbHVlPkF0dGVuZGVlIE1hbmFnZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NCIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+UHJlc2VudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ1IiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5SZW1vdGUgQ29udHJvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NiIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+RWplY3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NyIgbmFtZT0iY2hhdCI+CisgICAgPHZhbHVlPkNoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0OCIgbmFtZT0iaW52aXRlIGF0dGVuZGVlIj4KKyAgICA8dmFsdWU+SW52aXRlIEF0dGVuZGVlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ5IiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5CeSBFbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUwIiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5Vc2VyIGlzIG1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUxIiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5Vc2VyIGhhcyB3ZWJjYW0gc3dpdGNoZWQgb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1MiIgbmFtZT0iZmlsbF9vcHRpb24iPgorICAgIDx2YWx1ZT5EZWFjdGl2YXRlIHNoYXBlIGZpbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1MyIgbmFtZT0iZmlsbF9vcHRpb24iPgorICAgIDx2YWx1ZT5BY3RpdmF0ZSBzaGFwZSBmaWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTQiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5TbmFwIHRvIEdyaWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NSIgbmFtZT0iYWxsb3dfcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QWxsb3cgcmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTYiIG5hbWU9IndhaXRfZm9yX3JlY29yZGluZyI+CisgICAgPHZhbHVlPldhaXQgZm9yIHJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU3IiBuYW1lPSJoaWRlX3RvcF9iYXIiPgorICAgIDx2YWx1ZT5IaWRlIHRvcGJhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU4IiBuYW1lPSJmaWxlRXhwbG9yZXIiPgorICAgIDx2YWx1ZT5QbGF5IHZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTkiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoZSBjb250ZW50IG9uIHRoZSBjdXJyZW50IHNsaWRlPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYwIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT5BY2NlcHQgYW5kIGdyYW50IHVzZXIgcmlnaHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2MSIgbmFtZT0iYWN0aXZpdHlfd2luZG93Ij4KKyAgICA8dmFsdWU+RGVueTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYyIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT5JPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjMiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPkFjdGl2aXRpZXMgYW5kIGFjdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NCIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPlJlbW92ZSB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjUiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0aGUgbW9kZXJhdGlvbiBvciB0aGUgcmlnaHQgdG8gZHJhdyBvbiB0aGUgd2hpdGVib2FyZCB0byByZW1vdmUgd2hpdGVib2FyZHMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjYiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5Ob3QgYWxsb3dlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY3IiBuYW1lPSJ1c2VyX2xlZnRfYWN0X21zZyI+CisgICAgPHZhbHVlPmhhcyBsZWZ0IHRoZSByb29tLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY4IiBuYW1lPSJjbGlwYXJ0IGljb25zIj4KKyAgICA8dmFsdWU+TWF0aCBpY29uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY5IiBuYW1lPSJjbGlwYXJ0IGljb25zIj4KKyAgICA8dmFsdWU+Tm8gY2F0ZWdvcnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MCIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+Q29sb3ItU3R5bGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+UXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzcyIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5Eb21haW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MyIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+dmlzaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NCIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+cmVkb3JhbmdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzUiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPm1lZGl1bXNlYWdyZWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzYiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnN0ZWVsYmx1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc3IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5saWdodHN0ZWVsYmx1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc4IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5nb2xkZW5yZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3OSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+c2lsdmVyZ3JheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgwIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT51c2VyZGVmaW5lZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgxIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5iZXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODIiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnVwbG9hZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgzIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5tZWRpdW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NCIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg1IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5Vbm11dGUgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg2IiBuYW1lPSJnaXZlIGV4Y2x1c2l2ZSBhdWRpbyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBvZiBvdGhlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NyIgbmFtZT0ibXV0ZSBzZWxmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGdsb2JhbGx5IG11dGVkIGJ5IHRoZSBtb2RlcmF0b3IuIFlvdSBjYW5ub3QgdW5tdXRlIHlvdXJzZWxmITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg4IiBuYW1lPSJtdXRlIHNlbGYgY29uZmlybSBtZXNzYWdlIHRpdGxlIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg5IiBuYW1lPSJtdXRlIHNlbGYgY29uZmlybSBtZXNzYWdlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gbXV0ZSB5b3Vyc2VsZiBnbG9iYWxseT8gTm8gb3RoZXIgdXNlciB3aWxsIGhlYXIgeW91IGFueW1vcmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTAiIG5hbWU9Im11dGUgb3RoZXJzIGNvbmZpcm0gbWVzc2FnZSB0aXRsZSI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBsb2NhbGx5PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkxIiBuYW1lPSJtdXRlIG90aGVycyBjb25maXJtIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gbXV0ZSB0aGlzIG1pY3JvcGhvbmU/IFlvdSBjYW4gb25seSBtdXRlIGl0IGxvY2FsbHkgb24geW91ciBzY3JlZW4uIEl0IGhhcyBubyBlZmZlY3QgdG8gaG93IG90aGVyIHVzZXJzIGhlYXIgdGhpcyB1c2VyLiBPbmx5IG1vZGVyYXRvcnMgY2FuIHR1cm4gaXQgb2ZmIGdsb2JhbGx5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkyIiBuYW1lPSJtdXRlIG90aGVycyBjb25maXJtIG1lc3NhZ2UgdGl0bGUiPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgb2ZmIGdsb2JhbGx5PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkzIiBuYW1lPSJtdXRlIG90aGVycyBtb2RlcmF0b3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBtdXRlIHRoaXMgdXNlciBnbG9iYWxseT8gTm8gb3RoZXIgdXNlciB3aWxsIGhlYXIgaGltIGFueW1vcmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTQiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+WW91ciBzb3VuZCBpcyBvbi4gQ2xpY2sgaGVyZSB0byBzZW5kIG1vZGVyYXRvciBtZXNzYWdlIHRvIG11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5IChpbiB0aGUgY29tcGxldGUgY29uZmVyZW5jZSByb29tKSBvZmYhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTUiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+WW91ciBzb3VuZCBpcyBvZmYuIENsaWNrIGhlcmUgdG8gc2VuZCBtb2RlcmF0b3IgbWVzc2FnZSB0byB1bm11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5IChpbiB0aGUgY29tcGxldGUgY29uZmVyZW5jZSByb29tKSBvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5NiIgbmFtZT0ibXV0ZSBhcHBseSBzZWxmIG9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRoYXQgdGhlIG1vZGVyYXRvciBtdXRlcyBteSBtaWNyb3Bob25lIGdsb2JhbGx5LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk3IiBuYW1lPSJtdXRlIGFwcGx5IHNlbGYgb2ZmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRoYXQgdGhlIG1vZGVyYXRvciB1bm11dGVzIG15IG1pY3JvcGhvbmUgZ2xvYmFsbHkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTgiIG5hbWU9Im11dGUgYXBwbHkgb2YgbWVzc2FnZSI+CisgICAgPHZhbHVlPndhbnQgdGhhdCB0aGUgbW9kZXJhdG9yIHVubXV0ZXMgaGlzL2hlciBtaWNyb3Bob25lLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk5IiBuYW1lPSJtdXRlIGFwcGx5IG9mIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53YW50IHRoYXQgdGhlIG1vZGVyYXRvciBtdXRlcyBoaXMvaGVyIG1pY3JvcGhvbmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDAiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+VW5tdXRlIG1pY3JvcGhvbmUuIENsaWNrIGhlcmUgdG8gbXV0ZSBoaXMvaGVyIG1pY3JvcGhvbmUgZ2xvYmFsbHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDEiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lLiBDbGljayBoZXJlIHRvIHVubXV0ZSBoaXMvaGVyIG1pY3JvcGhvbmUgZ2xvYmFsbHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDIiIG5hbWU9Im11dGUgc2VsZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhpcyB1c2VyIGlzIGdsb2JhbGx5IG11dGVkIGJ5IHRoZSBtb2RlcmF0b3IuIFlvdSBjYW5ub3QgdW5tdXRlIGhpbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMyIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDQiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSB5b3VyIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwNSIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA2IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5Vbm11dGUgbWljcm9waG9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA3IiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDgiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDkiIG5hbWU9Im11dGUgbW9kZXJhdG9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Pbmx5IG1vZGVyYXRvcnMgY2FuIG11dGUgb3IgdW5tdXRlIGFuIHVzZXIgZ2xvYmFsbHkhIFRvIG11dGUgeW91ciBvd24gbWljcm9waG9uZTogUGxlYXNlIHVzZSB0aGUgbWljcm9waG9uZSBpY29uIGluIHlvdXIgdmlkZW8gcG9kITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDEwIiBuYW1lPSJwb2xsX25hbWUiPgorICAgIDx2YWx1ZT5Qb2xsIE5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMSIgbmFtZT0icG9sbF9uYW1lIj4KKyAgICA8dmFsdWU+WW91PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTIiIG5hbWU9ImFyY2hpdmVkX3BvbGxzIj4KKyAgICA8dmFsdWU+QXJjaGlldmVkIFBvbGxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTMiIG5hbWU9ImFjdGl2ZV9wb2xsIj4KKyAgICA8dmFsdWU+YWN0aXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTQiIG5hbWU9ImNoYXJ0X3NpbXBsZSI+CisgICAgPHZhbHVlPlNpbXBsZSBDaGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE1IiBuYW1lPSJjaGFydF9waWUiPgorICAgIDx2YWx1ZT5QaWUgQ2hhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNiIgbmFtZT0ic2lnbl91cF92YWxpZGF0aW9uIj4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTciIG5hbWU9ImNoYXRfbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+TmV3IG1lc3NhZ2Uocyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxOCIgbmFtZT0icG9sbF9jbG9zZSI+CisgICAgPHZhbHVlPkNsb3NlIFBvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxOSIgbmFtZT0icG9sbF9jbG9zZV9jb25maXJtIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNsb3NlIHRoaXMgUG9sbD8gTm8gb25lIHdpbGwgYmUgYWJsZSB0byB2b3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjAiIG5hbWU9InBvbGxfZGVsZXRlIj4KKyAgICA8dmFsdWU+RGVsZXRlIFBvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMSIgbmFtZT0icG9sbF9kZWxldGVfY29uZmlybSI+CisgICAgPHZhbHVlPkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBQb2xsPyBUaGUgcmVzdWx0cyB3aWxsIGJlIGRlbGV0ZWQgYXMgd2VsbC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMiIgbmFtZT0ibGFuZ3VhZ2VfY29kZSI+CisgICAgPHZhbHVlPkxhbmd1YWdlIElTTyBDb2RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjMiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19wZXJtaXNzaW9uIj4KKyAgICA8dmFsdWU+QWxsb3cvRGVueSByaWdodCB0byBnaXZlIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNCIgbmFtZT0iYWxsb3dfZXhjbHVzaXZlX2F1ZGlvX3Blcm1pc3Npb24iPgorICAgIDx2YWx1ZT5BbGxvdyB1c2VyIHRvIGdpdmUgZXhjbHVzaXZlIGF1ZGlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjUiIG5hbWU9ImRlbnlfZXhjbHVzaXZlX2F1ZGlvX3Blcm1pc3Npb24iPgorICAgIDx2YWx1ZT5EZW55IHVzZXIgdG8gZ2l2ZSBleGNsdXNpdmUgYXVkaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNiIgbmFtZT0iZXhjbF9hdWRpbyBhcHBseSBzZWxmIG9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGdldCBhIHBlcm1pc3Npb24gZm9yIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNyIgbmFtZT0iZXhjbF9hdWRpbyBhcHBseSBvZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+d2FudCB0aGF0IHRoZSBtb2RlcmF0b3IgZ2l2ZXMgbWUgYSBwZXJtaXNzaW9uIGZvciBleGNsdXNpdmUgYXVkaW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjgiIG5hbWU9ImV4Y2xfYXVkaW8gc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+R2l2ZSBhIHBlcm1pc3Npb24gZm9yIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyOSIgbmFtZT0iY2FtX3Jlc29sdXRpb24iPgorICAgIDx2YWx1ZT5DYW0gcmVzb2x1dGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMwIiBuYW1lPSJjYW1fcmVzb2x1dGlvbl9pbmZvIj4KKyAgICA8dmFsdWU+Q2hhbmdpbmcgdGhlIHJlc29sdXRpb24gYWZmZWN0cyBiYW5kd2lkdGgsIGJpZ2dlciBwaWN0dXJlIG5lZWRzIG1vcmUgYmFuZHdpdGghPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzEiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19lcnJvciI+CisgICAgPHZhbHVlPllvdSBkb24ndCBoYXZlIHRoZSByaWdodCB0byBnaXZlIHlvdXJzZWxmIG9yIG90aGVycyBleGNsdXNpdmUgYXVkaW8uIFlvdSBuZWVkIHRvIGFwcGx5IGZvciB0aGUgcmlnaHQgZnJvbSB0aGUgbW9kZXJhdG9yIG9yIGFzayB0aGUgbW9kZXJhdG9yIHRvIGdpdmUgeW91IGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzMiIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2FzayI+CisgICAgPHZhbHVlPkkgd291bGQgbGlrZSB0byBnZXQgdGhlIHJpZ2h0IGZvciBleGNsdXNpdmUgYXVkaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzMyIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2FjdGlvbiI+CisgICAgPHZhbHVlPkdpdmUgZXhjbHVzaXZlIGF1ZGlvIHRvIG1lIChhbHRlcm5hdGl2ZWx5IGNsaWNrIG9uIHlvdXIgdmlkZW8gcG9kIG9yIHByZXNzIEYxMik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNCIgbmFtZT0ibWljcm8gaXMgb24iPgorICAgIDx2YWx1ZT5NaWNyb3Bob25lIGlzIG9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM1IiBuYW1lPSJtaWNybyBpcyBvZmYiPgorICAgIDx2YWx1ZT5NaWNyb3Bob25lIGlzIG11dGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzYiIG5hbWU9ImhpZGVfY2hhdCI+CisgICAgPHZhbHVlPkhpZGUgY2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM3IiBuYW1lPSJoaWRlX2FjdGl2aXRpZXNfYW5kX2FjdGlvbnMiPgorICAgIDx2YWx1ZT5IaWRlIGFjdGl2aXRpZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzOCIgbmFtZT0iaGlkZV9maWxlc19leHBsb3JlciI+CisgICAgPHZhbHVlPkhpZGUgZmlsZXMgZXhwbG9yZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzOSIgbmFtZT0iaGlkZV9hY3Rpb25zX21lbnUiPgorICAgIDx2YWx1ZT5IaWRlIGFjdGlvbnMgbWVudTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQwIiBuYW1lPSJoaWRlX3NjcmVlbl9zaGFyaW5nIj4KKyAgICA8dmFsdWU+SGlkZSBzY3JlZW4gc2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQxIiBuYW1lPSJoaWRlX3doaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5IaWRlIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MiIgbmFtZT0ic2hvdyBtaWNyb3Bob25lIHN0YXR1cyI+CisgICAgPHZhbHVlPlNob3cgbWljcm8gc3RhdHVzIGluIHZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDMiIG5hbWU9ImxheW91dF9vcHRpb25zIj4KKyAgICA8dmFsdWU+TGF5b3V0IG9wdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0NCIgbmFtZT0iY2FsZW5kYXIgbmV3IGJ1dHRvbiI+CisgICAgPHZhbHVlPk5ldyBFdmVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ1IiBuYW1lPSJjYWxlbmRhciBwYXNzd29yZCBpbmZvIHRleHQiPgorICAgIDx2YWx1ZT5QYXNzd29yZCBwcm90ZWN0ZWQgYXJlIHRoZSBsaW5rcyB0byB0aGUgY29uZmVyZW5jZSB0aGF0IGFyZSBzZW5kIHRvIHRoZSBwYXJ0aWNpcGVudHMgd2hlbiB5b3Ugc2F2ZSB0aGUgY2FsZW5kYXIgZXZlbnQsIG5vdCB0aGUgcm9vbSEgVGhhdCBtZWFucyBpZiB5b3Ugc2F2ZSB0aGUgZXZlbnQgbXVsdGlwbGUgdGltZXMgYnV0IHdpdGggZGlmZmVyZW50IHBhc3N3b3JkcyBldmVyeSBwYXJ0aWNpcGVudCByZWNlaXZlcyBhIG5ldyBsaW5rIHRoYXQgaGFzIGEgZGlmZmVyZW50IHBhc3N3b3JkLiBCdXQgb2xkIGxpbmtzIHN0aWxsIHdvcmsgb25jZSBzZW5kITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ2IiBuYW1lPSJjYWxlbmRhciBlZGl0IGJ1dHRvbiI+CisgICAgPHZhbHVlPkVkaXQgZGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ3IiBuYW1lPSJzaXAgc2hvdyBkaWFsZXIiPgorICAgIDx2YWx1ZT5TaG93IHNpcCBkaWFsZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0OCIgbmFtZT0ic2lwIGNhbGwiPgorICAgIDx2YWx1ZT5DYWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDkiIG5hbWU9ImNhbGVuZGFyIGNvbnRhY3QgbGlzdCI+CisgICAgPHZhbHVlPlNob3cgY2FsZW5kYXIgZXZlbnRzIG9mIGNvbnRhY3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+WW91ciBob21lITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUxIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5QbGFuIHlvdXIgbWVldGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MiIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+V2F0Y2ggcmVjb3JkaW5nIGFuZCBpbnRlcnZpZXdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTMiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPkNob29zZSBhbmQgc3RhcnQgYSB3ZWItY29uZmVyZW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU0IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgdXNlcnMgYW5kIHJpZ2h0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU1IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgY29ubmVjdGlvbnMgYW5kIGtpY2sgdXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1NiIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIHVzZXJncm91cHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1NyIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIGNvbmZlcmVuY2Ugcm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1OCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIHN5c3RlbSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU5IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgbGFiZWxzIGFuZCB3b3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjAiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBMREFQIGFuZCBBRFMgY29uZmlndXJhdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MSIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+RXhwb3J0L0ltcG9ydCBTeXN0ZW0gQmFja3VwczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYyIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgbW9kZXJhdGlvbiBvciB0aGUgcmlnaHQgdG8gZHJhdyBvbiB3aGl0ZWJvYXJkIHRvIHVwbG9hZCwgYWRkLCBkZWxldGUgb3IgbG9hZCBmaWxlcyBhbmQgZm9sZGVycy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MyIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkVkaXQgdGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY0IiBuYW1lPSJzYWx1dGF0aW9uIj4KKyAgICA8dmFsdWU+UHJvZjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY1IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlB1Ymxpc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2NiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdGFydCBQdWJsaXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjciIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U3RvcCBQdWJsaXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+SG9zdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY5IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlB1Ymxpc2ggQXBwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzAiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UHVibGlzaCBJZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDcxIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHVjZSB0aGUgd2lkdGggb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbW92ZSBpdCBsZWZ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzIiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UmVkdWNlIHRoZSBoZWlnaHQgb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbW92ZSBpdCBib3R0b208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5SZWR1Y2UgdGhlIHggb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbWFrZSBpdCB3aWRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc0IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHVjZSB0aGUgeSBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtYWtlIGl0IGhpZ2hlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc1IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkZpbGwgdGhlc2Ugc2V0dGluZ3Mgc3RyZWFtIHlvdXIgc2NyZWVuIGRhdGEgdG8gM3RoIHBhcnR5IHByb3ZpZGVycyBsaWtlIGp1c3Rpbi50djwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc2IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlBsZWFzZSBzdGFydCBTY3JlZW4gc2hhcmluZyB0byBiZSBhYmxlIHRvIHB1Ymxpc2ggaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3NyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5Nb2RlcmF0b3IgcGVybWlzc2lvbiByZXF1aXJlZCB0byBzdGFydCByZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3OCIgbmFtZT0ibm8gcmlnaHQgZm9yIGV4Y2x1c2l2ZSBhdWRpbyI+CisgICAgPHZhbHVlPllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gYXBwbHkgZXhjbHVzaXZlIGF1ZGlvIHRvIGFueSBwYXJ0aWNpcGFudC4gWW91IG5lZWQgbW9kZXJhdGlvbiByb2xlIG9yIHRoZSByaWdodCBmb3IgZXhjbHVzaXZlIGF1ZGlvIHRvIG1ha2UgYW55IG1pY3JvcGhvbmUgZXhjbHVzaXZlIHR1cm5lZCBvbi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzkiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlVwbG9hZCBuZXcgZmlsZSB0byBmaWxlIGV4cGxvcmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODAiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPk9wZW4gbmV3IGRpYWxvZyB3aXRoIHNoYXJpbmcgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+QW4gZXhpc3RpbmcgbW9kZXJhdG9yIG11c3QgYXBwcm92ZSBpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgyIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5Bc2sgbW9kZXJhdG9yIHRvIHNoYXJlIHlvdXIgd2ViY2FtL21pY3JvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODMiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkdhdGhlciBmZWVkYmFjayBieSBjcmVhdGluZyBhIHBvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+UGFzdCBhbmQgY3VycmVudCBwb2xsIHJlc3VsdHMgYXMgY2hhcnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODUiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlZvdGUgaWYgdGhlcmUgaXMgYSBwb2xsIGZvciB0aGlzIGNvbmZlcmVuY2Ugcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg2IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5FZGl0IGNhbSBhbmQgbWljIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODciIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkNvbmZpcm0gYW5kIGxlYXZlIHRoZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODgiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkNhbGwgZXh0ZXJuYWwgcGVvcGxlIHZpYSBWb0lQL1NJUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg5IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5TZW5kIGFuIGVtYWlsIHdpdGggYSBkaXJlY3QgbGluayB0byB0aGlzIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Q2hhbmdlIHlvdXIgd2hpdGVib2FyZCBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkxIiBuYW1lPSJiYWNrdXAgYWRtaW4iPgorICAgIDx2YWx1ZT5NYXggdXBsb2FkIHNpemU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MiIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+QXNrIG1vZGVyYXRvciB0byBzaGFyZSB5b3VyIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MyIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+U3RhcnQgUHJpdmF0ZSBDaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTQiIG5hbWU9ImFsbF9wcml2YXRlX2NoYXQiPgorICAgIDx2YWx1ZT5BbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NSIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBzdGFydCBhIHByaXZhdGUgY2hhdCB3aXRoIHlvdXJzZWxmLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk2IiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5Zb3UndmUgYWxyZWFkeSBzdGFydGVkIGEgcHJpdmF0ZSBjaGF0IHdpdGggdGhpcyBwYXJ0aWNpcGFudC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NyIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHByaXZhdGUgY2hhdD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5OCIgbmFtZT0iU2VydmVycyI+CisgICAgPHZhbHVlPlNlcnZlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5OSIgbmFtZT0iU2VydmVycyI+CisgICAgPHZhbHVlPlNlcnZlcnMgcGFydGljaXBhdGluZyBpbiBjbHVzdGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDAiIG5hbWU9IlNlcnZlciBuYW1lIj4KKyAgICA8dmFsdWU+U2VydmVyIE5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMSIgbmFtZT0iU2VydmVyIEFkZHJlc3MiPgorICAgIDx2YWx1ZT5TZXJ2ZXIgQWRkcmVzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAyIiBuYW1lPSJTZXJ2ZXIgZGV0YWlscyI+CisgICAgPHZhbHVlPlNlcnZlciBkZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDMiIG5hbWU9IlNlbmQgU01TIj4KKyAgICA8dmFsdWU+U2VuZCBTTVM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNCIgbmFtZT0icHVibGlzaGluZ19tZXNzYWdlIj4KKyAgICA8dmFsdWU+UHVibGlzaGluZy4gVXNlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNSIgbmFtZT0iY21kX2xpbmVfYWRtaW4iPgorICAgIDx2YWx1ZT5UbyBzYXZlIHRpbWUgYW5kIGludGVybmV0IHRyYWZmaWMgeW91IGNhbiB1c2UgY29tbWFuZCBsaW5lIGFkbWluIHRvIGJhY2t1cC9yZXN0b3JlL3VwZ3JhZGU6XG4gMSkgZ28gdG8gT00gaW5zdGFsbCBkaXIgKGZvciBleC4gL29wdC9yZWQ1KSBcbiAyKSBzdG9wIE9NIChmb3IgZXguIC4vcmVkNS1zaHV0ZG93bi5zaClcbiAzKSAuL2FkbWluLnNoIC1iIC1maWxlIH4vdG9kYXlfb21fYmFja3VwLnppcCAoY3JlYXRlIGJhY2t1cCBvZiBjdXJyZW50IE9NKVxuIDQpIGRvd25sb2FkIGFyY2hpdmUgd2l0aCBuZXcgT01cbiA1KSBtdiAvb3B0L3JlZDUgL29wdC5yZWQ1LmJhayAobW92ZSB3b3JraW5nIHZlcnNpb24gb2YgT00ganVzdCBpbiBjYXNlIDopKVxuIDYpIGV4dHJhY3QgZG93bmxvYWRlZCBPTSB0byB0aGUgL29wdC9yZWQ1XG4gNykgLi9hZG1pbi5zaCAtaSAtZmlsZSB+L3RvZGF5X29tX2JhY2t1cC56aXAgKG9yICcuL2FkbWluLnNoIC1pIC1maWxlIH4vdG9kYXlfb21fYmFja3VwLnppcCAtLWRiLXR5cGUgbXlzcWwgLS1kYi11c2VyIG9tX3VzZXIgLS1kYi1wYXNzIG9tX3VzZXJfcGFzcycgaW4gY2FzZSBvZiB5b3UgYXJlIHVzaW5nIG5vbi1kZWZhdWx0IERCIClcbiA4KSBzdGFydCBPTVxuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDYiIG5hbWU9InB1YmxpY19yb29tX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5Sb29tcyBjb21tb24gdG8gYWxsIHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNyIgbmFtZT0icHJpdmF0ZV9yb29tX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5Sb29tcyBjb21tb24gdG8gdGhlIGN1cnJlbnQgdXNlciBncm91cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA4IiBuYW1lPSJteV9yb29tX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5Sb29tcyBvZiB0aGUgY3VycmVudCB1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDkiIG5hbWU9ImNyZWF0ZV9uZXdfcm9vbSI+CisgICAgPHZhbHVlPkNyZWF0ZS9Nb2RpZnkgYXBwb2ludG1lbnQgc3BlY2lhbCByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTAiIG5hbWU9Im11bHRpcGxlX2FkZHJlc3NlcyI+CisgICAgPHZhbHVlPllvdSBjYW4gZW50ZXIgbXVsdGlwbGUgYWRkcmVzc2VzIGluIHRoZSBmb3JtYXQ6IGZpcnN0bmFtZTEgbGFzdG5hbWUxICZsdDtlbWFpbDEmZ3Q7LCJmaXJzdG5hbWUyIGxhc3RuYW1lMiIgJmx0O2VtYWlsMiZndDssJ2ZpcnN0bmFtZTMgbGFzdG5hbWUzJyAmbHQ7ZW1haWwzJmd0OywgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTEiIG5hbWU9InN0cmVhbV92b2x1bWUiPgorICAgIDx2YWx1ZT5BZGp1c3Qgc3RyZWFtIHZvbHVtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTEyIiBuYW1lPSJtaWNyb3Bob25lX3ZvbHVtZSI+CisgICAgPHZhbHVlPkFkanVzdCBtaWNyb3Bob25lIHZvbHVtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTEzIiBuYW1lPSJjaGF0X21vZGVyYXRlZCI+CisgICAgPHZhbHVlPklzIGNoYXQgbW9kZXJhdGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTQiIG5hbWU9ImNoYXRfbW9kZXJhdGVkIj4KKyAgICA8dmFsdWU+QWxsb3cgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE1IiBuYW1lPSJjaGF0X29wZW5lZCI+CisgICAgPHZhbHVlPkNoYXQgcGFuZWwgb3BlbmVkIGJ5IGRlZmF1bHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNiIgbmFtZT0iZmlsZXNfb3BlbmVkIj4KKyAgICA8dmFsdWU+RmlsZXMgcGFuZWwgb3BlbmVkIGJ5IGRlZmF1bHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNyIgbmFtZT0ic2VydmVyIGFkbWluIHNlY3Rpb24gbGFzdHBpbmciPgorICAgIDx2YWx1ZT5MYXN0IHBpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxOCIgbmFtZT0ic2VydmVyIGFkbWluIHNlY3Rpb24gbGFzdHBpbmcgaW5mbyI+CisgICAgPHZhbHVlPkV2ZXJ5IHNsYXZlIHNlbmRzIGEgcGluZyB0byB0aGUgbWFzdGVyIGV2ZXJ5IDMgc2Vjb25kcyAoY29uZmlndXJhYmxlKS4gU2xhdmUgbGFzdFBpbmcgbXVzdCBiZSBzbWFsbGVyIHRoZW4gMSBtaW51dGUgc28gdGhhdCB0aGUgbWFzdGVyIHVzZXMgdGhlIHNsYXZlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE5IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcG9ydCI+CisgICAgPHZhbHVlPkhUVFAgUG9ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIwIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gdXNlciI+CisgICAgPHZhbHVlPlVzZXIgKFNPQVAtQWNjZXNzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIxIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcGFzc3dvcmQiPgorICAgIDx2YWx1ZT5QYXNzd29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIyIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gd2ViYXBwIHBhdGgiPgorICAgIDx2YWx1ZT5XZWJhcHAgcGF0aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIzIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcHJvdG9jb2wiPgorICAgIDx2YWx1ZT5Qcm90b2NvbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI0IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcGluZyBydW5uaW5nIj4KKyAgICA8dmFsdWU+UGluZyBydW5uaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjUiIG5hbWU9InNlcnZlciBhZG1pbiBhY3RpdmUiPgorICAgIDx2YWx1ZT5BY3RpdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyNiIgbmFtZT0iZ2VuZXJhdGVfaGFzaCI+CisgICAgPHZhbHVlPkdlbmVyYXRlIFVSTDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI3IiBuYW1lPSJuZXR3b3JrIHRlc3RpbmcgbGluayI+CisgICAgPHZhbHVlPk5ldHdvcmsgdGVzdGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI4IiBuYW1lPSJyb29tX29wdGlvbnMiPgorICAgIDx2YWx1ZT5BdXRvIHNlbGVjdCBpbnRlcnZpZXcgdmlkZW8gcG9kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjkiIG5hbWU9ImZvbnRfdW5kZXJsaW5lIj4KKyAgICA8dmFsdWU+VW5kZXJsaW5lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzAiIG5hbWU9ImZvbnRfc3R5bGUiPgorICAgIDx2YWx1ZT5Gb250IHN0eWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzEiIG5hbWU9ImFsbG93X2ZvbnRfc3R5bGVzIj4KKyAgICA8dmFsdWU+QWxsb3cgZm9udCBzdHlsZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMiIgbmFtZT0iZm9udF9jb2xvciI+CisgICAgPHZhbHVlPkZvbnQgY29sb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMyIgbmFtZT0iaHlwZXJsaW5rIj4KKyAgICA8dmFsdWU+SHlwZXJsaW5rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzQiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW4iPgorICAgIDx2YWx1ZT5TaG93IHNlc3Npb24gc3RhdGlzdGljczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM1IiBuYW1lPSJjb25uZWN0aW9uIGFkbWluIj4KKyAgICA8dmFsdWU+U2Vzc2lvbiBkZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzYiIG5hbWU9InN5c3RlbV9pbXBvcnQiPgorICAgIDx2YWx1ZT5TeXN0ZW0gaW1wb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzciIG5hbWU9ImluY2x1ZGVfaW50b19iYWNrdXAiPgorICAgIDx2YWx1ZT5JbmNsdWRlIHVwbG9hZGVkIGZpbGVzIGFuZCByZWNvcmRpbmdzIGluIGJhY2t1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM4IiBuYW1lPSJyb29tX2FkbWluX3NpcCI+CisgICAgPHZhbHVlPkVuYWJsZSBTSVAgdHJhbnNwb3J0IGluIHRoZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzkiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19jb25maXJtIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIHByb3ZpZGUgdGhpcyB1c2VyIGFuIGV4Y2x1c2l2ZSBhdWRpbz88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU0MCIgbmFtZT0ibm9fdGltZXpvbmUiPgorICAgIDx2YWx1ZT5QbGVhc2Ugc3BlY2lmeSB5b3VyIHRpbWV6b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NDUiIG5hbWU9ImNvbnRlbnRfaXNfc2F2aW5nIj4KKyAgICA8dmFsdWU+Q29udGVudCBpcyBTYXZpbmcsIFBsZWFzZSB3YWl0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorPC9sYW5ndWFnZT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL2NhdGFsYW4ueG1sIGIvV2ViQ29udGVudC9sYW5ndWFnZXMvY2F0YWxhbi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWViYjk4MQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL2NhdGFsYW4ueG1sCkBAIC0wLDAgKzEsNDY1MiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKworPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworVGhpcyBGaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5IHRoZSBMYW5ndWFnZUVkaXRvciAKK3RvIGFkZCBuZXcgTGFuZ3VhZ2VzIG9yIG1vZGlmeS9jdXN0b21pemUgaXQgdXNlIHRoZSBMYW5ndWFnZUVkaXRvciAKK3NlZSBodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvTGFuZ3VhZ2VFZGl0b3IuaHRtbCBmb3IgRGV0YWlscyAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjLS0+Cis8bGFuZ3VhZ2UgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeG1sbnM6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbj0ibGFuZ3VhZ2UueHNkIj4KKyAgPHN0cmluZyBpZD0iMSIgbmFtZT0iY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPkNvbmZlcsOobmNpYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyIiBuYW1lPSJtZWV0aW5nIj4KKyAgICA8dmFsdWU+VmlkZW9jb25mZXLDqG5jaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMyIgbmFtZT0iY2xhc3Nyb29tIj4KKyAgICA8dmFsdWU+QXVkaXRvcmllczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0IiBuYW1lPSJzZXR0aW5ncyI+CisgICAgPHZhbHVlPkNvbmZpZ3VyYWNpw7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNSIgbmFtZT0iYmVudXR6ZXIiPgorICAgIDx2YWx1ZT5Vc3Vhcmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNiIgbmFtZT0iYWRtaW4iPgorICAgIDx2YWx1ZT5BZG1pbmlzdHJhY2nDszwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3IiBuYW1lPSJzdG9wIj4KKyAgICA8dmFsdWU+QXR1cmFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkdyYWJhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5IiBuYW1lPSJub2ZpbGUiPgorICAgIDx2YWx1ZT5ObyBzJ2hhIHNlbGVjY2lvbmF0IG5pbmd1biBmaXR4ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAiIG5hbWU9InJlY29yZGJ5dGVhY2hlciI+CisgICAgPHZhbHVlPkdyYXZhY2nDsyBwZWwgcHJvZmVzc29yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExIiBuYW1lPSJjb25uZWN0ZWR1c2VycyI+CisgICAgPHZhbHVlPlVzdWFyaXMgY29uZWN0YXRzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMiIgbmFtZT0ic3RhcnRjb25mIj4KKyAgICA8dmFsdWU+SW5pY2lhciBjb25mZXLDqG5jaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMiIG5hbWU9Im15bmFtZSI+CisgICAgPHZhbHVlPkVsIG1ldSBub208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQiIG5hbWU9InZpZGVvY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPlZpZGVvY29uZmVyw6huY2lhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1IiBuYW1lPSJpbXBvcnQiPgorICAgIDx2YWx1ZT5JbXBvcnRhciBmaXR4ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYiIG5hbWU9InJlZnJlc2hmaWxlcyI+CisgICAgPHZhbHVlPkFjdHVhbGl0emFyIGxsaXN0YSBkZSBmaXR4ZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3IiBuYW1lPSJ0b21haW5maWxlIj4KKyAgICA8dmFsdWU+U2VsZWNjaW9uYSB1biBmaXR4ZXIgY29tIGEgcHJpbmNpcGFsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4IiBuYW1lPSJuZXdwb2xsIj4KKyAgICA8dmFsdWU+Tm92YSBlbnF1ZXN0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOSIgbmFtZT0ibmV3cG9sbGhlYWRlciI+CisgICAgPHZhbHVlPk5vdmEgZW5xdWVzdGEgcGVyIGxhIGNvbmZlcsOobmNpYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMCIgbmFtZT0icXVlc3Rpb24iPgorICAgIDx2YWx1ZT5QcmVndW50YTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEiIG5hbWU9InBvbGx0eXBlIj4KKyAgICA8dmFsdWU+VGlwdXMgZCdlbnF1ZXN0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMiIgbmFtZT0iY3JlYXRlIj4KKyAgICA8dmFsdWU+Q3JlYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMiIG5hbWU9ImluZm9tZXNzYWdlIj4KKyAgICA8dmFsdWU+SW5mb3JtYWNpw7M6IGRlc2NyaXBjacOzIGQnZW5xdWVzdGEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0IiBuYW1lPSJjcmVhdHBvbGwiPgorICAgIDx2YWx1ZT5DcmVhciBlbnF1ZXN0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNSIgbmFtZT0iY2FuY2VsIj4KKyAgICA8dmFsdWU+Q2FuY2VswrdsYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYiIG5hbWU9Inllc25vIj4KKyAgICA8dmFsdWU+U8OtL05vPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3IiBuYW1lPSJudW1lcmljIj4KKyAgICA8dmFsdWU+VmFsb3IgbnVtw6hyaWMgWzEtMTBdPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4IiBuYW1lPSJwb2xsIj4KKyAgICA8dmFsdWU+RW5xdWVzdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkiIG5hbWU9Im1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT7DiXMgbmVjZXNzaXRhIHNlciBtb2RlcmFkb3IgcGVyIGNyZWFyIHVuYSBlbnF1ZXN0YS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAiIG5hbWU9InZvdGUiPgorICAgIDx2YWx1ZT5FbCBzZXUgdm90IGhhIHNpZ3V0IHJlZ2lzdHJhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMSIgbmFtZT0iYWxyZWFkeXZvdGVkIj4KKyAgICA8dmFsdWU+SmEgYSByZXNww7JzIGEgbGEgZW5xdWVzdGEgcHLDqHZpYW1lbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIiIG5hbWU9InZvdGluZyI+CisgICAgPHZhbHVlPlZvdGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzIiBuYW1lPSJhbnN3ZXIiPgorICAgIDx2YWx1ZT5MYSBzZXZhIHJlc3Bvc3RhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNCIgbmFtZT0ieWVzIj4KKyAgICA8dmFsdWU+U8OtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1IiBuYW1lPSJubyI+CisgICAgPHZhbHVlPk5vPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2IiBuYW1lPSJxdWVzdGlvbndhbnQiPgorICAgIDx2YWx1ZT5Wb2wgc2FiZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3IiBuYW1lPSJwb2xscmVzdWx0cyI+CisgICAgPHZhbHVlPlJlc3VsdGF0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOCIgbmFtZT0icXVlc3Rpb24iPgorICAgIDx2YWx1ZT5QcmVndW50YTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkiIG5hbWU9InJlc3VsdHMiPgorICAgIDx2YWx1ZT5SZXN1bHRhdHM6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwIiBuYW1lPSJhbnN3ZXJzIj4KKyAgICA8dmFsdWU+UmVzcG9zdGVzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MSIgbmFtZT0ibm9wb2xsIj4KKyAgICA8dmFsdWU+Tm8gaGkgaGEgZW5xdWVzdGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyIiBuYW1lPSJ2b3RpbmdzIj4KKyAgICA8dmFsdWU+Vm90YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMiIG5hbWU9Im1lZXRpbmciPgorICAgIDx2YWx1ZT5SZXVuacOzIChtw6B4IDQgbGxvY3MpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0IiBuYW1lPSJjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+Q29uZmVyw6huY2lhIChtw6F4IDUwIGxsb2NzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NSIgbmFtZT0idHlwZSI+CisgICAgPHZhbHVlPlRpcHVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2IiBuYW1lPSJyZW1haW5pbmdzZWF0cyI+CisgICAgPHZhbHVlPkFsdHJlcyBsbG9jczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NyIgbmFtZT0iYWxyZWFkeWNob3NlbiI+CisgICAgPHZhbHVlPkphIGhhIHNlbGVjY2lvbmF0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OCIgbmFtZT0iZW50ZXIiPgorICAgIDx2YWx1ZT5FbnRyYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkiIG5hbWU9Im1vZGxlYXZlIj4KKyAgICA8dmFsdWU+RWwgbW9kZXJhZG9yIGEgZGVpeGF0IGxhIHJldW5pw7MuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwIiBuYW1lPSJzeXN0ZW1tZXNzYWdlIj4KKyAgICA8dmFsdWU+SW5mb3JtYWNpw7MgZGVsIHNpc3RlbWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTEiIG5hbWU9ImNob3NzZWRldmljZSI+CisgICAgPHZhbHVlPlNlbGVjY2lvbmFyIGVsIGRpc3Bvc2l0aXU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIiIG5hbWU9ImNob29zZWNhbSI+CisgICAgPHZhbHVlPlNlbGVjY2lvbmFyIGNhbWFyYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMiIG5hbWU9ImNob29zZW1pYyI+CisgICAgPHZhbHVlPlNlbGVjY2lvbmFyIG1pY3LDsmZvbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQiIG5hbWU9Im9rIj4KKyAgICA8dmFsdWU+T0s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUiIG5hbWU9ImNhbmNlbDIiPgorICAgIDx2YWx1ZT5DYW5jZWxhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NiIgbmFtZT0icmVjb25lZWN0bmVlZGVkIj4KKyAgICA8dmFsdWU+TmVjZXNzaXRhIHJlY29uZWN0YXItc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTciIG5hbWU9ImVkaXRzZXR1cCI+CisgICAgPHZhbHVlPkVkaXRhciBjb25maWd1cmFjacOzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4IiBuYW1lPSJjb3Vyc2UiPgorICAgIDx2YWx1ZT5DdXJzbzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkiIG5hbWU9Imxhbmd1YWdlIj4KKyAgICA8dmFsdWU+SWRpb21hOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MCIgbmFtZT0ib2syIj4KKyAgICA8dmFsdWU+T0s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEiIG5hbWU9ImNhbmNlbDMiPgorICAgIDx2YWx1ZT5jYW5jZWxhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MiIgbmFtZT0iY2xlYXJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+RWxpbWluYXIgcGlzc2FycmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMiIG5hbWU9ImNsZWFyd2hpdGVib2FyZHF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+Vm9scyBuZXRlamFyIGxhIHBpc3NhcnJhIGFiYW5zIGRlIGFmZWdpciB1bmEgbm92YSBpbWF0Z2U/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0IiBuYW1lPSJkb250YXNrYWdhaW4iPgorICAgIDx2YWx1ZT5ObyB0b3JuYXIgYSBwcmVndW50YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUiIG5hbWU9Im5vIj4KKyAgICA8dmFsdWU+bm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYiIG5hbWU9ImVkaXRzZXR1cDIiPgorICAgIDx2YWx1ZT5FZGl0YXIgbGEgY29uZmlndXJhY2nDszwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NyIgbmFtZT0ibmVlZGNvbmZpcm1hdGlvbndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5SZXF1ZXJpeCBjb25maXJtYWNpw7MgYWJhbnMgZGUgbmV0ZWphciBsYSBwaXNzYXJyYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OCIgbmFtZT0idXNlcmluZm8iPgorICAgIDx2YWx1ZT5JbmZvcm1hY2nDsyBkZWwgdXN1YXJpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5IiBuYW1lPSJjbGVhcmRyYXdhcmVhIj4KKyAgICA8dmFsdWU+TmV0ZWphciBsJ8OgcmVhIGRlIGRpYnVpeDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MCIgbmFtZT0idW5kbyI+CisgICAgPHZhbHVlPkRlc2ZlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MSIgbmFtZT0icmVkbyI+CisgICAgPHZhbHVlPlJlZmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyIiBuYW1lPSJzZWxlY3RvYmplY3QiPgorICAgIDx2YWx1ZT5TZWxlY2Npb25hciB1biBvYmplY3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczIiBuYW1lPSJ0ZXh0Ij4KKyAgICA8dmFsdWU+VGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NCIgbmFtZT0icGFpbnQiPgorICAgIDx2YWx1ZT5QaW50YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUiIG5hbWU9ImRyYXdsaW5lIj4KKyAgICA8dmFsdWU+VHJhw6dhciB1bmEgbMOtbmlhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2IiBuYW1lPSJkcmF3dSI+CisgICAgPHZhbHVlPlN1YnJhdGxsYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzciIG5hbWU9InJlY3QiPgorICAgIDx2YWx1ZT5SZWN0YW5nbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgiIG5hbWU9ImVsbGlwc2UiPgorICAgIDx2YWx1ZT5FbMK3bGlwc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkiIG5hbWU9ImFycm93Ij4KKyAgICA8dmFsdWU+RGF0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MCIgbmFtZT0iZGVsZXRlY2hvc2VuIj4KKyAgICA8dmFsdWU+RXNib3JyYXIgbCfDrXRlbSBlc2NvbGxpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MSIgbmFtZT0iYXBwbGl5bW9kIj4KKyAgICA8dmFsdWU+U29saWNpdGFyIGxhIG1vZGVyYWNpw7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIiIG5hbWU9ImFwcGx5Ij4KKyAgICA8dmFsdWU+QXBsaWNhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MyIgbmFtZT0iY2FuY2VsIj4KKyAgICA8dmFsdWU+Q2FuY2VswrdsYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQiIG5hbWU9Im1vZCI+CisgICAgPHZhbHVlPkNvbnZlcnRpci1zZSBlbiBtb2RlcmFkb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUiIG5hbWU9ImNsb3NlIj4KKyAgICA8dmFsdWU+VGFuY2FyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2IiBuYW1lPSJpdGFsaWMiPgorICAgIDx2YWx1ZT5JdMOhbGljYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NyIgbmFtZT0iYm9sZCI+CisgICAgPHZhbHVlPk5lZ3JldGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgiIG5hbWU9IndhaXRpbmciPgorICAgIDx2YWx1ZT5FbiBlc3BlcmEuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkiIG5hbWU9ImFwcGx5TWVzc2FnZSI+CisgICAgPHZhbHVlPlVuIHVzdWFyaSBzb2zCt2xpY2l0YSBsYSBtb2RlcmFjacOzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MCIgbmFtZT0iYWNjZXB0Ij4KKyAgICA8dmFsdWU+QWNlcHRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MSIgbmFtZT0icmVqZWN0Ij4KKyAgICA8dmFsdWU+RGVuZWdhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MiIgbmFtZT0iY2FuY2VsIj4KKyAgICA8dmFsdWU+Q2FuY2VswrdsYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMiIG5hbWU9InNlbmRtb2RyZXF1ZXN0bWVzc2FnZSI+CisgICAgPHZhbHVlPkVudmlhbiBsYSBzb2zCt2xpY2l0dWQgYWxzIHNlZ8O8ZW50cyB1c3VhcmlzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0IiBuYW1lPSJhY2NlcHQiPgorICAgIDx2YWx1ZT5BY2VwdGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1IiBuYW1lPSJyZWplY3QiPgorICAgIDx2YWx1ZT5SZWJ1dGphdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NiIgbmFtZT0iY2hhbmdlbW9kIj4KKyAgICA8dmFsdWU+Q2FtYmlhciBlbCBtb2RlcmFkb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTciIG5hbWU9Im5vbm1vZGVycm9ybWVzc2FnZSI+CisgICAgPHZhbHVlPlZvc3RlIG5vIMOpcyBtb2RlcmFkb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgiIG5hbWU9Im1vZGVyYXRvciI+CisgICAgPHZhbHVlPk1vZGVyYWRvcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkiIG5hbWU9InJvb21mdWxsbWVzc2FnZSI+CisgICAgPHZhbHVlPkhvIHNlbnRpbSwgcGVyw7IgYXF1ZXN0YSBzYWxhIGVzdMOgIHBsZW5hLiBJbnRlbnRpJ2wgbcOpcyB0YXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMCIgbmFtZT0iZWxsbGlwc2UiPgorICAgIDx2YWx1ZT5FbGlwc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxIiBuYW1lPSJjbG9zZSI+CisgICAgPHZhbHVlPnRhbmNhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIiIG5hbWU9IkF1dGhFcnJvciI+CisgICAgPHZhbHVlPmVycm9yIGVuIGxhIGludHJvZHVjY2nDsyBkZSBkYWRlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMiIG5hbWU9Im1pbjR1c2VybmFtZSI+CisgICAgPHZhbHVlPmVsIG5vbSBkJ3VzdWFyaSBoYSBkZSBjb250ZW5pciBhbG1lbnlzIDQgY2Fyw6BjdGVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQiIG5hbWU9Im1pbjRwYXNzIj4KKyAgICA8dmFsdWU+bGEgY2xhdSBkJ3VzdWFyaSBoYSBkZSBjb250ZW5pciBhbG1lbnlzIDQgY2Fyw6BjdGVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUiIG5hbWU9InVzZXJuYW1ldGFrZW4iPgorICAgIDx2YWx1ZT5BcXVlc3Qgbm9tYnJlIGQndXN1YXJpIGphIGV4aXN0ZWl4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNiIgbmFtZT0iZW1haWx0YWtlbiI+CisgICAgPHZhbHVlPkFxdWVzdCBlbWFpbCBqYSBlc3TDoCByZWdpc3RyYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3IiBuYW1lPSJlbWFpbHRha2VuIj4KKyAgICA8dmFsdWU+RXJyb3IsIHBlciBmYXZvciBjb250YWN0aSBhbWIgbCdhZG1pbmlzdHJhZG9yIGRlbCBzaXN0ZW1hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOCIgbmFtZT0iQXV0aGxvZ2luIj4KKyAgICA8dmFsdWU+RW50cmFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOSIgbmFtZT0iQXV0aHVzZXIiPgorICAgIDx2YWx1ZT5Vc3Vhcmk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMCIgbmFtZT0iQXV0aHBhc3MiPgorICAgIDx2YWx1ZT5Db250cmFzZW55YTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExIiBuYW1lPSJBdXRobGFuZyI+CisgICAgPHZhbHVlPklkaW9tYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIiIG5hbWU9IkF1dGhyZWciPgorICAgIDx2YWx1ZT5FbnRyYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzIiBuYW1lPSJyZWdmb3JtaGVhZCI+CisgICAgPHZhbHVlPlJlZ2lzdHJhci1zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQiIG5hbWU9InJlZ2Zvcm11c2VyIj4KKyAgICA8dmFsdWU+VXN1YXJpOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUiIG5hbWU9InJlZ2Zvcm1wYXNzIj4KKyAgICA8dmFsdWU+Q29udHJhc2VueWE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNiIgbmFtZT0icmVnZm9ybXJldHlwZSI+CisgICAgPHZhbHVlPkNvbnRyYXNlbnlhICh1biBhbHRyZSB2ZWdhZGEpOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTciIG5hbWU9InJlZ2Zvcm1maXJzdG5hbWUiPgorICAgIDx2YWx1ZT5Ob206PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOCIgbmFtZT0icmVnZm9ybWxhc3RuYW1lIj4KKyAgICA8dmFsdWU+Q29nbm9tczo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5IiBuYW1lPSJyZWdmb3JtbWFpbCI+CisgICAgPHZhbHVlPkNvcnJldSBlbGVjdHJvbmljOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAiIG5hbWU9InJlZ2Zvcm1zdGF0ZSI+CisgICAgPHZhbHVlPlBhw61zOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjEiIG5hbWU9InJlZ2Zvcm1idG4xIj4KKyAgICA8dmFsdWU+UmVnaXN0cmFyLXNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMiIgbmFtZT0icmVnZm9ybWJ0bjIiPgorICAgIDx2YWx1ZT5DYW5jZWzCt2xhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMiIG5hbWU9IkF1dGhidG4yIj4KKyAgICA8dmFsdWU+UmVnaXN0cmFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+SW5pY2k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1IiBuYW1lPSJ1c2VyYWRtaW4iPgorICAgIDx2YWx1ZT5Vc3VhcmlzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNiIgbmFtZT0iZ3JvdXBhZG1pbiI+CisgICAgPHZhbHVlPkdydXBzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNyIgbmFtZT0ib3JnYWRtaW4iPgorICAgIDx2YWx1ZT5Pcmdhbml0emFjaW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgiIG5hbWU9ImhlYWRjb25mIj4KKyAgICA8dmFsdWU+U2FsZXMgZGUgY29uZmVyw6huY2lhczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkiIG5hbWU9ImNvbmZfcHViIj4KKyAgICA8dmFsdWU+UMO6YmxpYzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAiIG5hbWU9ImhlYWRfb3JnIj4KKyAgICA8dmFsdWU+T3JnYW5pdHphY2nDszwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzEiIG5hbWU9ImJ0bl9lbnRlcnJvb20iPgorICAgIDx2YWx1ZT5FbnRyYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2xvZ2luIj4KKyAgICA8dmFsdWU+VXN1YXJpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMyIgbmFtZT0idXNlcmFsdGVyc2VsZl9wYXNzIj4KKyAgICA8dmFsdWU+Q29udHJhc2VueWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Bhc3NyZXR5cGUiPgorICAgIDx2YWx1ZT5Fc2NyaXVyZSBkZSBub3U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2ZpcnN0bmFtZSI+CisgICAgPHZhbHVlPk5vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYiIG5hbWU9InVzZXJhbHRlcnNlbGZfbGFzdG5hbWUiPgorICAgIDx2YWx1ZT5Db2dub21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNyIgbmFtZT0idXNlcmFsdGVyc2VsZl9lbWFpbCI+CisgICAgPHZhbHVlPkNvcnJldSBFbGVjdHLDs25pYzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgiIG5hbWU9InVzZXJhbHRlcnNlbGZfYmlydGgiPgorICAgIDx2YWx1ZT5EYXRhIGRlIG5laXhlbWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkiIG5hbWU9InVzZXJhbHRlcnNlbGZfc3RyZWV0bm8iPgorICAgIDx2YWx1ZT5EaXJlY2Npw7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Rvd24iPgorICAgIDx2YWx1ZT5Qb2JsYWNpw7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3N0YXRlIj4KKyAgICA8dmFsdWU+UGHDrXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2FkcmVzc2NvbW1lbnQiPgorICAgIDx2YWx1ZT5Nw6lzIGluZm9ybWFjacOzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MyIgbmFtZT0idXNlcmFsdGVyc2VsZl9oZWFkZXIiPgorICAgIDx2YWx1ZT5EYWRlcyBkZSB1c3Vhcmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0IiBuYW1lPSJzYXZlbWVudWJhcl9zYXZlbGFiZWwiPgorICAgIDx2YWx1ZT5HdWFyZGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NSIgbmFtZT0ic2F2ZW1lbnViYXJfc2F2ZWxhYmVsIj4KKyAgICA8dmFsdWU+R3VhcmRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYiIG5hbWU9ImFkbWluX3VzZXJsaXN0X3VzZXJfaWQiPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDciIG5hbWU9ImFkbWluX3VzZXJsaXN0X2xvZ2luIj4KKyAgICA8dmFsdWU+VXN1YXJpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OCIgbmFtZT0iYWRtaW5fdXNlcmxpc3RfZmlyc3RuYW0iPgorICAgIDx2YWx1ZT5ub208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5IiBuYW1lPSJhZG1pbl91c2VybGlzdF9sYXN0bmFtZSI+CisgICAgPHZhbHVlPmNvZ25vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwIiBuYW1lPSJ0dXJub3Zlcmxpc3RfbmV4dCI+CisgICAgPHZhbHVlPm1vc3RyYXIgc2Vnw7xlbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxIiBuYW1lPSJ0dXJub3Zlcmxpc3RfcHJlIj4KKyAgICA8dmFsdWU+bW9zdHJhciBhbnRlcmlvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIiIG5hbWU9InNhdmVjb250ZW50X2NvbmZpcm0iPgorICAgIDx2YWx1ZT5lbGltaW5hciByZWdpc3RyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMiIG5hbWU9InNhdmVjb250ZW50X2NvbmZpcm1fY2FuY2VsX2J0biI+CisgICAgPHZhbHVlPmNhbmNlbMK3bGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NCIgbmFtZT0ic2F2ZWNvbnRlbnRfY29uZmlybV9jb25maXJtX2J0biI+CisgICAgPHZhbHVlPmJvcnJhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTUiIG5hbWU9InNhdmVtZW51YmFyX2FkZGxhYmVsIj4KKyAgICA8dmFsdWU+Tm91IHJlZ2lzdHJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NiIgbmFtZT0ic2F2ZW1lbnViYXJfcmVsb2FkbGFiZWwiPgorICAgIDx2YWx1ZT5BY3R1YWxpdHphciByZWdpc3RyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTciIG5hbWU9InNhdmVtZW51YmFyX2RlbGV0ZWxhYmVsIj4KKyAgICA8dmFsdWU+RXNib3JyYXIgcmVnaXN0cmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU4IiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fc3RhdHVzIj4KKyAgICA8dmFsdWU+RXN0YXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU5IiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fc3RhdHVzSXRlbSI+CisgICAgPHZhbHVlPm5vIGFjdGl1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2MCIgbmFtZT0idXNlcmFsdGVyX2FkbWluX3N0YXR1c0l0ZW0iPgorICAgIDx2YWx1ZT5hY3RpdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjEiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9vcmdhbmlzYXRpb24iPgorICAgIDx2YWx1ZT5Pcmdhbml0emFjaW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjIiIG5hbWU9ImNhbGVuZGFyX2ljb25sYWJlbCI+CisgICAgPHZhbHVlPmNhbGVuZGFyaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjMiIG5hbWU9InNhdmV3aW5kb3dfYnRuIj4KKyAgICA8dmFsdWU+dGFuY2FyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2NCIgbmFtZT0ib3JnYW5pc2F0aW9udGFibGVsaXN0X2lkcm93Ij4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY1IiBuYW1lPSJvcmdhbmlzYXRpb250YWJsZWxpc3RfbmFtZXJvdyI+CisgICAgPHZhbHVlPk5vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjYiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGlkMSI+CisgICAgPHZhbHVlPlVzdWFyaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjciIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGlkMiI+CisgICAgPHZhbHVlPm1vZGVyYWRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjgiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGlkMyI+CisgICAgPHZhbHVlPmFkbWluaXN0cmFkb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY5IiBuYW1lPSJ1c2VydmFsdWVfbGV2ZWxsYWJlbCI+CisgICAgPHZhbHVlPlJvbCBkZSB1c3Vhcmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTcwIiBuYW1lPSJvcmd2YWx1ZV9oZWFkZXIiPgorICAgIDx2YWx1ZT5vcmdhbml0emFjacOzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MSIgbmFtZT0ib3JndmFsdWVfb3JnbmFtZSI+CisgICAgPHZhbHVlPm5vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzIiIG5hbWU9Im9yZ3ZhbHVlX29yZ25hbWUiPgorICAgIDx2YWx1ZT5hZmVnaXIgb3JnYW5pdHphY2nDszwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzMiIG5hbWU9Im9yZ3ZhbHVlX29yZ25hbWUiPgorICAgIDx2YWx1ZT5hZmVnaXIgb3JnYW5pdHphY2nDszwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzQiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW4iPgorICAgIDx2YWx1ZT5jYW5jZWzCt2xhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzUiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW4iPgorICAgIDx2YWx1ZT5hZmVnaXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc2IiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luIj4KKyAgICA8dmFsdWU+ZWxpbWluYXIgb3JnYW5pdHphY2nDszwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzciIG5hbWU9Im9yZ3ZhbHVlX3VzZXJsaXN0Ij4KKyAgICA8dmFsdWU+dXN1YXJpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3OCIgbmFtZT0ib3JndmFsdWVfdXNlcmxpc3RhZGQiPgorICAgIDx2YWx1ZT5hZmVnaXIgdXN1YXJpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3OSIgbmFtZT0ib3JndmFsdWVfdXNlcmxpc3RkZWxldGUiPgorICAgIDx2YWx1ZT5lbGltaW5hciB1c3Vhcmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgwIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luaGVhZGVyIj4KKyAgICA8dmFsdWU+YWZlZ2lyIHVzdWFyaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODEiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5zZWFyY2hmaWVsZCI+CisgICAgPHZhbHVlPmJ1c2NhciB1c3Vhcmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgyIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luc2VhcmNoYnRuIj4KKyAgICA8dmFsdWU+YnVzY2FyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4MyIgbmFtZT0ib3JndmFsdWVfdXNlcndpbnNlYXJjaHJlc3VsdCI+CisgICAgPHZhbHVlPnVzdWFyaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODQiIG5hbWU9ImxvZ2lud2luX2Nob29zZW9yZ2FuaXNhdGlvbiI+CisgICAgPHZhbHVlPm9yZ2FuaXR6YWNpw7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg1IiBuYW1lPSJsb2dpbndpbl9jaG9vc2VvcmdhbmlzYXRpb25idG4iPgorICAgIDx2YWx1ZT5pbmdyZXNzYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg2IiBuYW1lPSJuYXZpX3Jvb21hZG1pbiI+CisgICAgPHZhbHVlPlNhbGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NyIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPlNhbGVzIGRlIGNvbmZlcsOobmNpYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODgiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5pZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODkiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5Ob208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkwIiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+cMO6YmxpY2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkxIiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+T3JnYW5pdHphY2lvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkyIiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+U2FsZXMgZGUgY29uZmVyw6huY2lhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5MyIgbmFtZT0icm9vbXZhbHVlX25hbWUiPgorICAgIDx2YWx1ZT5Ob208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk0IiBuYW1lPSJyb29tdmFsdWVfdHlwZSI+CisgICAgPHZhbHVlPlRpcHVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NSIgbmFtZT0icm9vbXZhbHVlX2lzcHVibGljIj4KKyAgICA8dmFsdWU+UMO6YmxpY2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk2IiBuYW1lPSJyb29tdmFsdWVfY29tbWVudCI+CisgICAgPHZhbHVlPkNvbWVudGFyaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTciIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWljb24iPgorICAgIDx2YWx1ZT5ndWFyZGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5OCIgbmFtZT0id2hpdGVib2FyZF9vcGVuaWNvbiI+CisgICAgPHZhbHVlPmNhcnJlZ2FyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5OSIgbmFtZT0id2hpdGVib2FyZF9zYXZlYXN3aW5oZWFkZXIiPgorICAgIDx2YWx1ZT5ndWFyZGFyIGNvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDAiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2ludGV4dCI+CisgICAgPHZhbHVlPmZpdHhlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDEiIG5hbWU9ImZpbGVzIj4KKyAgICA8dmFsdWU+Zml0eGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMiIgbmFtZT0id2hpdGVib2FyZF9zYXZlYXN3aW5idG4xIj4KKyAgICA8dmFsdWU+Y2FuY2VswrdsYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAzIiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbmJ0bjIiPgorICAgIDx2YWx1ZT5ndWFyZGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNCIgbmFtZT0icnBjZXJyb3J3aW5faGVhZGVyIj4KKyAgICA8dmFsdWU+ZXJyb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA1IiBuYW1lPSJsb2Fkd21sX2hlYWRlciI+CisgICAgPHZhbHVlPmNhcnJlZ2FuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNiIgbmFtZT0ibG9hZHdtbF9tZXNzc2xvYWQiPgorICAgIDx2YWx1ZT5vYmplY3RlcyBjYXJyZWdhdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA3IiBuYW1lPSJsb2Fkd21sX21lc3NzeW5jIj4KKyAgICA8dmFsdWU+c2luY3Jvbml0emFudCBjbGllbnRzLCBlc3BlcmkgdW4gbW9tZW50LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDgiIG5hbWU9ImxvYWRpbWFnZV9tZXNzbG9hZCI+CisgICAgPHZhbHVlPkNhcnJlZ2FudCBkYWRlcyBkJ2ltYXRnZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA5IiBuYW1lPSJsb2FkaW1hZ2VfbWVzc3N5bmMiPgorICAgIDx2YWx1ZT5zaW5jcm9uaXR6YW50IGNsaWVudHMsIGVzcGVyaSB1biBtb21lbnQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMCIgbmFtZT0ibG9hZHdtbF9jb25maXJtaGVhZGVyIj4KKyAgICA8dmFsdWU+bmV0ZWphciBsJ8OgcmVhIGRlIGRpYnVpeDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTEiIG5hbWU9ImxvYWR3bWxfY29uZmlybW1lc3MiPgorICAgIDx2YWx1ZT5uZXRlamFyIGwnw6ByZWEgZGUgZGlidWl4LCB0b3RhIGxhIGluZm9ybWFjacOzIGRlIGxhIHBpc3NhcnJhIHMnZXNib3JyYXLDoDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTIiIG5hbWU9ImxvYWR3bWxfY29uZmlybW1lc3MyIj4KKyAgICA8dmFsdWU+Q29uZmlybWFyIGFiYW5zIGRlIGNhcnJlZ2FyIHVuIGFyeGl1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMyIgbmFtZT0ic2VuZF9pbnZpdGF0aW9uX2J0biI+CisgICAgPHZhbHVlPkVudmlhciBpbnZpdGFjacOzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNCIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX2hlYWRlciI+CisgICAgPHZhbHVlPkVudmlhciBpbnZpdGFjacOzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNSIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX3N1YmplY3QiPgorICAgIDx2YWx1ZT5UZW1hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNiIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX3JlY2lwaWVudCI+CisgICAgPHZhbHVlPkRlc3RpbmF0YXJpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNyIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX21lc3NhZ2UiPgorICAgIDx2YWx1ZT5NaXNzYXRnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTgiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9idG5fY29uZmlybSI+CisgICAgPHZhbHVlPkVudmlhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTkiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9idG5fY2FuY2VsIj4KKyAgICA8dmFsdWU+Y2FuY2VswrdsYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIwIiBuYW1lPSJzZW5kX2NoYXRfdGV4dF9idG4iPgorICAgIDx2YWx1ZT5lbnZpYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIxIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5faGVhZGVyIj4KKyAgICA8dmFsdWU+RGFkZXMgZCd1c3Vhcmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIyIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fc3ViamVjdCI+CisgICAgPHZhbHVlPkVsIHNldSBwc2V1ZMOybmltIHBlciBhIGFxdWVzdGEgY29uZmVyw6huY2lhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyMyIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2xvZ2luIj4KKyAgICA8dmFsdWU+bm9tIHF1ZSBlcyBtb3N0cmFyw6A8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI0IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZmlyc3RuYW1lIj4KKyAgICA8dmFsdWU+bm9tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNSIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2xhc3RuYW1lIj4KKyAgICA8dmFsdWU+Y29nbm9tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjYiIG5hbWU9Imludml0ZWRfdXNlcndpbl9tYWlsIj4KKyAgICA8dmFsdWU+ZW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI3IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fbGFuZyI+CisgICAgPHZhbHVlPmlkaW9tYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjgiIG5hbWU9Imludml0ZWRfdXNlcndpbl9lbnRlciI+CisgICAgPHZhbHVlPmluZ3Jlc3NhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjkiIG5hbWU9Imludml0ZWRfdXNlcndpbl9lbnRlciI+CisgICAgPHZhbHVlPkNhcnJlZ2FuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMCIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2VudGVyIj4KKyAgICA8dmFsdWU+Q2FycmVnYW50IGRhZGVzLCBlc3BlcmUgdW4gbW9tZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMSIgbmFtZT0idXNlcl9yZWdpc3RlckZhbHNlUFdEIj4KKyAgICA8dmFsdWU+Q29udHJhc2VueWEgZXJyw7JuaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMyIiBuYW1lPSJ1c2VyX3JlZ2lzdGVyRmFsc2VQV0RIZWFkZXIiPgorICAgIDx2YWx1ZT5QZXIgZmF2b3IgaW50cm9kdWVpeGkgZHVlcyB2ZWdhZGVzIGxlcyBtYXRlaXhhIGNvbnRyYXNlbnlhIGFtYiB1biBtw61uaW0gZGUgNiBjYXLDoGN0ZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMyIgbmFtZT0idXNlcl9yZWdpc3Rlck1haWxFcnJvciI+CisgICAgPHZhbHVlPkNvcnJldSBpbnbDoGxpZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzQiIG5hbWU9InVzZXJfcmVnaXN0ZXJNYWlsRXJyb3JIZWFkZXIiPgorICAgIDx2YWx1ZT5Wb3N0w6ggaGEgaW50cm9kdcOvdCB1bmEgYWRyZcOnYSBubyB2w6BsaWRhIGRlIGNvcnJldSBlbGVjdHLDsm5pYzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzUiIG5hbWU9InVzZXJfcmVnaXN0ZXJTdWNjZXNzIj4KKyAgICA8dmFsdWU+RWwgcmVnaXN0cmUgcydoYSBjb21wbGV0YXQgYW1iIMOoeGl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzNiIgbmFtZT0idXNlcl9yZWdpc3RlclN1Y2Nlc3NIZWFkZXIiPgorICAgIDx2YWx1ZT5FbCBzZXUgY29tcHRlIGhhIGVzdGF0IGNyZWFkYSwgcG90IGluZ3Jlc3NhciBkZXMgZCdhcXVlc3QgbW9tZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzNyIgbmFtZT0idXNlcl9zaGFyaW5nX21lc3NhZ2UiPgorICAgIDx2YWx1ZT5ObyBwb3QgY29tcGFydGlyIGVsIHNldSBlc2NyaXB0b3JpIGVuIGFxdWVzdCBtb21lbnQuIEFsZ8O6IG3DqXMgamEgZXN0w6AgY29tcGFydGludCBlbCBzZXUgZXNjcmlwdG9yaS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM4IiBuYW1lPSJ1c2VyX3NoYXJpbmdfbWVzc2FnZUhlYWRlciI+CisgICAgPHZhbHVlPkNvbXBhcnRpY2nDsyBwcm9oaWJpZGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM5IiBuYW1lPSJ1c2VyX2RvU3RhcnRTY3JlZW5WaWV3ZXIiPgorICAgIDx2YWx1ZT5Db21wYXJ0aXIgZXNjcmlwdG9yaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDAiIG5hbWU9InNjcmVlbl93YXJuQmFuZHdpZHRoIj4KKyAgICA8dmFsdWU+UHJvYmxlbWVzIGRlIGNvbm5leGnDszogTGEgc2V2YSBhbXBsZSBkZSBiYW5kYSDDqXMgaW5zdWZpY2llbnQgaSBlcyBwZXJkcsOgIGxhIGluZm9ybWFjacOzLiBTaSBlbCBtaXNzYXRnZSBlcyByZXBldGVpeCBhbWIgZnJlccO8w6huY2lhIHNvbMK3bGljaXRpIGFsIG1vZGVyYWRvciByZWR1aXIgbGEgcXVhbGl0YXQgZCdpbWF0Z2UgaSDDoHVkaW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0MSIgbmFtZT0ic2NyZWVuX3VzZXJsYWJlbCI+CisgICAgPHZhbHVlPkVzY3JpcHRvcmkgZGU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0MiIgbmFtZT0id2hpdGVib2FyZF90YWJfcGFpbnQiPgorICAgIDx2YWx1ZT5EaWJ1aXhhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDMiIG5hbWU9IndoaXRlYm9hcmRfdGFiX2RvY3VtZW50Ij4KKyAgICA8dmFsdWU+RG9jdW1lbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ0IiBuYW1lPSJ0YWJiYXJfY2hhdGljb24iPgorICAgIDx2YWx1ZT5DaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0NSIgbmFtZT0idGFiYmFyX2ZpbGVzaWNvbiI+CisgICAgPHZhbHVlPkZpdHhlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ2IiBuYW1lPSJ0YWJiYXJfcGFydGljaXBhbnRzaWNvbiI+CisgICAgPHZhbHVlPk1lbWJyZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ3IiBuYW1lPSJzd2ZwcmVzZW50YXRpb25fbGlzdHNhdmVvcmlnIj4KKyAgICA8dmFsdWU+RGVzY2FycmVnYXIgZWwgZG9jdW1lbnQgb3JpZ2luYWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ4IiBuYW1lPSJzd2ZwcmVzZW50YXRpb25fbGlzdHNhdmVwZGYiPgorICAgIDx2YWx1ZT5EZXNjYXJyZWdhciBlbCBkb2N1bWVudCBlbiBwZGY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ5IiBuYW1lPSJzd2ZwcmVzZW50YXRpb25fbGlzdGxvYWRzd2YiPgorICAgIDx2YWx1ZT5QdWphciB1biBhcnhpdSBhIGxhIHBpc3NhcnJhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MCIgbmFtZT0ibmF2aW1haW5fY29uZmlnIj4KKyAgICA8dmFsdWU+Q29uZmlndXJhY2nDszwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTEiIG5hbWU9IndoaXRlYm9hcmRfYm91bmRpbmdib3hfZHJhZyI+CisgICAgPHZhbHVlPkFycm9zc2VnYXIgYXF1ZXN0IG9iamVjdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUyIiBuYW1lPSJ3aGl0ZWJvYXJkX2JvdW5kaW5nYm94X3Jlc2l6ZSI+CisgICAgPHZhbHVlPkFqdXN0YXIgZWwgdGFtYW55IGRlbCBvYmpldGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUzIiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl96b29tIj4KKyAgICA8dmFsdWU+JTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTQiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3NsaWRlIj4KKyAgICA8dmFsdWU+ZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU1IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9maXJzdHNsaWRlIj4KKyAgICA8dmFsdWU+QW5hciBhIGxhIHByaW1lcmEgcMOgZ2luYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTYiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3ByZXNsaWRlIj4KKyAgICA8dmFsdWU+QW5hciBhIGxhIHDDoGdpbmEgYW50ZXJpb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU3IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9uZXh0c2xpZGUiPgorICAgIDx2YWx1ZT5BbmFyIGEgbGEgcMOgZ2luYSBzZWfDvGVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTgiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX2xhc3RzbGlkZSI+CisgICAgPHZhbHVlPkFuYXIgYSBsJ8O6bHRpbWEgcMOgZ2luYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTkiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3pvb21taW51cyI+CisgICAgPHZhbHVlPkRpc21pbnVpciBab29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MCIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfem9vbXBsdXMiPgorICAgIDx2YWx1ZT5BdW1lbnRhciBab29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MSIgbmFtZT0ic2FsdXRhdGlvbl9tciI+CisgICAgPHZhbHVlPlNyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjIiIG5hbWU9InNhbHV0YXRpb25fbWlzcyI+CisgICAgPHZhbHVlPlNyYS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYzIiBuYW1lPSJuYXZpbWFpbl9jb25mYWRtaW4iPgorICAgIDx2YWx1ZT5Db25maWd1cmFjacOzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2NCIgbmFtZT0iY29uZnRhYmxlX2hlYWRlcklkIj4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY1IiBuYW1lPSJjb25mdGFibGVfaGVhZGVya2V5Ij4KKyAgICA8dmFsdWU+Q2xhdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjYiIG5hbWU9ImNvbmZhZG1pbmZvcm1faGVhZGVyIj4KKyAgICA8dmFsdWU+Q29uZmlndXJhY2nDszwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjciIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWxrZXkiPgorICAgIDx2YWx1ZT5DbGF1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2OCIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbHVwZGF0ZWQiPgorICAgIDx2YWx1ZT7Dumx0aW1hIGFjdHVhbGl6YWNpw7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY5IiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsdXBkYXRlZGJ5Ij4KKyAgICA8dmFsdWU+YWN0dWFsaXR6YXQgcGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MCIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbGNvbW1lbnQiPgorICAgIDx2YWx1ZT5jb21lbnRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzEiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWxrZXkiPgorICAgIDx2YWx1ZT5jbGF1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MiIgbmFtZT0idHVybm92ZXJsaXN0X21heHJlc3VsdHMiPgorICAgIDx2YWx1ZT5kZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzMiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2hlYWRlciI+CisgICAgPHZhbHVlPlVzdWFyaXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc0IiBuYW1lPSJvcmdhbmlzYXRpb25fdXNlcnNpY29uZGVsZXRlIj4KKyAgICA8dmFsdWU+RWxpbWluYXIgdXN1YXJpIGRlIGwnb3JnYW5pdHphY2nDszwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzUiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2RlbGV0ZWRoZWFkIj4KKyAgICA8dmFsdWU+RWxpbWluYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc2IiBuYW1lPSJvcmdhbmlzYXRpb25fdXNlcnNhbHJlYWRhZGRlZCI+CisgICAgPHZhbHVlPkFxdWVzdCB1c3VhcmkgamEgw6lzIG1lbWJyZSBkZSBsJ29yZ2FuaXR6YWNpw7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc3IiBuYW1lPSJkYXNoYm9hcmRfbmV3c2hlYWRlciI+CisgICAgPHZhbHVlPk5vdGljaWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3OCIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua3NoZWFkZXIiPgorICAgIDx2YWx1ZT5FbmxsYcOnb3MgcsOgcGlkczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzkiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtDb25mIj4KKyAgICA8dmFsdWU+QW5hciBhIGxhIHZpZGVvY29uZmVyw6huY2lhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MCIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua0F1ZGl0Ij4KKyAgICA8dmFsdWU+QW5hciBhIGwnYXVkaXRvcmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgxIiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rc3VwcG9ydCI+CisgICAgPHZhbHVlPkFqdWRhIGkgc3VwcG9ydCB0ZWNuaWM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgyIiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tob21lcGFnZXVybCI+CisgICAgPHZhbHVlPmh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgzIiBuYW1lPSJkYXNoYm9hcmRfcXVpY2ttYWlsaW5nbGlzdHVybCI+CisgICAgPHZhbHVlPmh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9tYWlsLWxpc3RzLmh0bWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg0IiBuYW1lPSJkYXNoYm9hcmRfcmVwb3J0YnVncyI+CisgICAgPHZhbHVlPkVudmlhciAiYnVnIjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODUiIG5hbWU9ImRhc2hib2FyZF9yc3NsaXN0aXRlbWxpbmt0ZXh0Ij4KKyAgICA8dmFsdWU+bcOpczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODYiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtob21lcGFnZWxhYmVsIj4KKyAgICA8dmFsdWU+V2ViIGRlbCBQcm9qZWN0ZSAoaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODciIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmttYWlsaW5nbGlzdGxhYmVsIj4KKyAgICA8dmFsdWU+TGxpc3RhIGRlIGNvcnJldXMgZGVsIFByb2plY3RvIChodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvbWFpbC1saXN0cy5odG1sKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODgiIG5hbWU9ImxvZ2luX3JlbWVtYmVydXNlciI+CisgICAgPHZhbHVlPlJlY29yZGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4OSIgbmFtZT0ibWFpbl9uYXZpIj4KKyAgICA8dmFsdWU+Q29udGluZ3V0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPkxhIG1ldmEgcMOgZ2luYSBkJ2luaWNpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MSIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPlJldW5pb25zIHByb2dyYW1hZGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MiIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPkV2ZW50cyBwcm9ncmFtYXRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MyIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPlJldW5pb24gcHVibGlxdWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPlJldW5pb25zIHByaXZhZGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NSIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPkV2ZW50cyBwdWJsaWNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NiIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPkV2ZW50cyBwcml2YXRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NyIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPkNvbnRpbmd1dCBwdWJsaWM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk4IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+Q29udGluZ3V0IHByaXZhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTkiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5Db250ZW5pZG8gcGVyc29uYWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAwIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+Li4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMSIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPk1vZGVyYWNpw7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAyIiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+U29swrdsaWNpdGFyIGxhIG1vZGVyYWNpw7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAzIiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+RW5xdWVzdGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNCIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPlNlbGVjY2lvbmkgdW4gZml0eGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNSIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPkNvbmZpZ3VyYWNpw7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA2IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+Q8OgbWVyYSBpIG1pY3LDsmZvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDciIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5Db25maWd1cmFjacOzIGRlIGxhIHBpc3NhcnJhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwOCIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPlNvcnRpcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDkiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5SZWdyZXNzYXIgYSBsZXMgc2FsZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEwIiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+U29ydGlyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5IYSBvYmxpZGF0IGxhIHNldmEgY29udHJhc2VueWE/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMiIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5SZXNldGVhciBjb250cmFzZW55YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTMiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+QXVkaSBpIFZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxNCIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5DaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxNSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5QaXNzYXJyYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTYiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+TW9kZXJhY2nDszwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTciIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+Rml0eGVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTgiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+VXN1YXJpczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTkiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+RW5xdWVzdGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyMCIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5ObyBoaSBoYSBuaW5nw7ogY29ubmVjdGF0IGFtYiBhcXVlc3Qgbm9tIGQndXN1YXJpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyMSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5FbCBlbWFpbCBjb250w6kgdW4gZW5sbGHDpyBlc3BlY2lhbCBxdWUgaGEgZXN0YXQgZW52aWF0IGFsIHNldSBjb3JyZXUuIFNpIG5vIGFwYXJlaXggYXF1ZXN0IGNvcnJldSByZXZpc2kgbGEgY29uZmlndXJhY2nDsyBkZSBmaWx0cmVzIGRlIHNwYW0gZGVsIHNldSBzZXJ2aWRvciBpIHJlZW52w6llIGFxdWVzdCBjb3JyZXUgbm92YW1lbnQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyMiIgbmFtZT0iZXJyb3J0eXBlIj4KKyAgICA8dmFsdWU+RXJyb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIzIiBuYW1lPSJlcnJvcnR5cGUiPgorICAgIDx2YWx1ZT5NaXNzYXRnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjQiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPk5vIGVzIHZhIHRyb2JhciBhIGwndXN1YXJpIChtw6h0b2RlIGRlIGdlbmVyYWNpw7MgZGUgY2xhdXMgaW5jb3JyZWN0ZSkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNSIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+R2VuZXJhciBjb250cmFzZW55YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjYiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPkVudHJhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjciIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPmNhbWJpYXIgY29udHJhc2VueWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI4IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5ub3ZhIGNvbnRyYXNlbnlhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyOSIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+dG9ybmkgYSBlc2NyaXVyZSBsYSBjb250cmFzZW55YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzAiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPkxlcyBjb250cmFzZW55ZXMgaW50cm9kdcOvZGVzIG5vIHPDs24gaWd1YWxzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzEiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPkVzY3JpZ3VpIDQgbyBtw6lzIGNhcsOgY3RlcnMuIERpc3RpbmdlaXggbWFqw7pzY3VsZXMgZGUgbWluw7pzY3VsZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMyIiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5MYSBjb250cmFzZW55YSBoYSBlc3RhdCBjYW52aWFkYSwgYXJhIHBvdCBpbmljaWFyIHNlc3Npw7MuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzMyIgbmFtZT0icnBjY2FsbGJhY2siPgorICAgIDx2YWx1ZT5PSzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzQiIG5hbWU9InJwY2dlbmVyYWxlcnJvciI+CisgICAgPHZhbHVlPkVycm9yIGRlc2NvbmVndXQuIEVudmnDryBhcXVlc3RhIGluZm9ybWFjacOzIGEgbCdhZG1pbmlzdHJhZG9yIGRlbCBzaXN0ZW1hLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzUiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+Tm8gZXMgdmEgdHJvYmFyIGEgbCd1c3Vhcmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM2IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPkNvbnRyYXNlbnlhIGluY29ycmVjdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM3IiBuYW1lPSJsb2dvdXQiPgorICAgIDx2YWx1ZT5IYSBzb3J0aXQgZGVsIHNpc3RlbWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM4IiBuYW1lPSJyZWdpc3RyYXRpb24iPgorICAgIDx2YWx1ZT5FcyB0cm9iYSBkZXNoYWJpbGl0YWRhIGwnb3BjacOzIGRlIHJlZ2lzdHJlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzkiIG5hbWU9InJlZ2lzdHJhdGlvbiI+CisgICAgPHZhbHVlPkNvcnJldSBpbmNvcnJlY3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MCIgbmFtZT0icmVnaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+Zml0eGVyIGR1cGxpY2F0LCBwZXIgZmF2b3Igc2VsZWNjaW9uaSB1biBhbHRyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDEiIG5hbWU9ImZpbGVicm93c2VyIj4KKyAgICA8dmFsdWU+ZWwgbm9tIGRlIGwnYXJ4aXUgw6lzIG1hc3NhIGN1cnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQyIiBuYW1lPSJmaWxlYnJvd3NlciI+CisgICAgPHZhbHVlPk5vIGVzIHZhIHBvZGVyIGd1YXJkYXIgbCdhZHJlw6dhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MyIgbmFtZT0idXNlcmFkbWluIj4KKyAgICA8dmFsdWU+TCd1c3VhcmkgdmEgc2VyIGFmZWdpdCwgbm8gb2JzdGFudCBhaXjDsiBoYXVyw6AgZCdlc3RhciBhbG1lbnlzIGVuIHVuYSBvcmdhbml0emFjacOzIHBlciBhIHBvZGVyIGluaWNpYXIgbGEgc2Vzc2nDsy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ0IiBuYW1lPSJhZG1pbmZvcm1zIj4KKyAgICA8dmFsdWU+Tm92YSBncmF2YWNpw7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ1IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5ObyBlcyB2YSB0cm9iYXIgdW4gY2FtcCBlbiBhcXVlc3QgRmllbGRJZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ2IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5ObyBlcyB2YSB0cm9iYXIgdW5hIGV0aXF1ZXRhIHBlciBhIGFxdWVzdCBjYW1wLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDciIG5hbWU9ImVycm9ybWVzc2FnZSI+CisgICAgPHZhbHVlPkVzIG5lY2Vzc2l0YSBhdXRvcml0emFjacOzIGRlIGwnYWRtaW5pc3RyYWRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDgiIG5hbWU9Im1haW5uYXZpIj4KKyAgICA8dmFsdWU+RWRpdG9yIGQnaWRpb21lczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDkiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPklkaW9tYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTAiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkV0aXF1ZXRhLUlEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1MSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+RXRpcXVldGEtTm9tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1MiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+VmFsb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUzIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5WYWxvciBkZWxzIGNhbXBzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1NCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+Tm9tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1NSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+VmFsb3IgZGUgbCdldGlxdWV0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTYiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPklEIGRlIGwnZXRpcXVldGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU3IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5IYSBlbGltaW5hdCBsJ2V0aXF1ZXRhIHBlcsOyIG5vIGVsIGNhbXAuIE5vIGVzIHBvdCBlbGltaW5hciB1biBjYW1wIGphIHF1ZSBwb3QgdGVuaXIgZXRpcXVldGVzIGVuIGFsdHJlcyBpZGlvbWVzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTgiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkxhYmVsaWQgaW5jb3JyZWN0ZS4gRWwgc2V1IEZpZWxkTGFuZ3VhZ2VzdmFsdWVzQW5ldSBubyBlcyB2YSB0cm9iYXIgZW4gbGEgYmFzZSBkZSBkYWRlcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU5IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5Wb3N0w6ggbm8gcG90IGVsaW1pbmFyIGFxdWVzdCBjYW1wLCBub23DqXMgbGVzIGV0aXF1ZXRlcy4gTm8gaGkgaGEgdW5hIGV0aXF1ZXRhIGNhcnJlZ2FkYSBkZSBtb21lbnQgbyBubyBlcyB0cm9iYSBzZWxlY2Npb25hZGEgY2FwIChwb3Qgc2VyIHF1ZSBubyBleGlzdGVpeGkgZW4gbCdpZGlvbWEgc2VsZWNjaW9uYXQpLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjAiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPmV4cG9ydGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TmVjZXNzaXRhIHRhbmNhciBsYSBzZXNzacOzIHBlciBhIHZldXJlIGVscyBjYW52aXMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+QWZlZ2lyIG5vdSBpZGlvbWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYzIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5lbGltaW5hciBpZGlvbWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY0IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5BZmVnaXIgbm91IGlkaW9tYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjUiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPk5vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjYiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPmFmZWdpciBpZGlvbWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY3IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5Db3BpYSBkZSBzZWd1cmV0YXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY4IiBuYW1lPSJ0dXJub3Zlcmxpc3QiPgorICAgIDx2YWx1ZT5hbmFyIGEgbCdpbmljaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjkiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPmFudGVyaW9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MCIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+c2lnw7xlbnRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MSIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+YW5hciBhbCBmaW5hbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzIiIG5hbWU9InZpZGVvYm94Ij4KKyAgICA8dmFsdWU+bCd1c3VhcmkgcGFybGEgKEJ5IGNsaWNraW5nIGhlcmUgeW91IGNhbiBnaXZlIGV4Y2x1c2l2ZSBhdWRpbyAvIG11dGUgdGhlIG1pY3JvcGhvbmUgb2Ygb3RoZXJzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzMiIG5hbWU9InZpZGVvYm94Ij4KKyAgICA8dmFsdWU+ZW5jZW5kcmUgbyBhcGFnYXIgc288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc0IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5TaXN0ZW1hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3NSIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+TGEgc2V2YSBjb25maWd1cmFjacOzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3NiIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+U2FsdXRhY2lvbnMsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3NyIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+RWRpdGFyIHBlcmZpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzgiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPk5vdXMgbWlzc2F0Z2VzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzkiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPlB1amFyIGltYXRnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODAiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+RXhwb3J0YWNpw7MgZGUgZGFkZXMgZCd1c3Vhcmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgxIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPsKhSGFuIGQnZXhpc3RpciB0b3RlcyBsZXMgb3JnYW5pdHphY2lvbnMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4MiIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5FeHBvcnRhciB1c3VhcmlzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4MyIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5FeHBvcnRhciBwZXIgb3JnYW5pemFjacOzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NCIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5JbmljaWFyIHByb2PDqXMgZCdleHBvcnRhY2nDszwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODUiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+SW1wb3J0YWNpw7MgZGUgZGFkZXMgZCd1c3Vhcmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg2IiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPlNlbGVjY2lvbmFyIGZpdHhlciB4bWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg3IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5pbXBvcnRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODgiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkV4cG9ydGFyIGEgWE1MIC0gQXF1ZXN0cyBmaXR4ZXJzIHBvZGVuIHNlciB1c2F0cyBwZXIgYTogLSBDb250cmlidWlyIGVuIGVsIHByb2plY3RlIC0gSW1wb3J0YXItbG9zIGVuIGFsdHJlIHNpc3RlbWEgLSBDb3BpYSBkZSBSZXNwYXRsbGVyIC0gUGVyc29uYWxpdHphY2nDsyAtIENvbMK3bG9jYXItbG8gZW4gZWwgZGlyZWN0b3JpIGQnaWRpb21lcyBwZXIgYSBsYSBwcsOyeGltYSBpbnN0YWzCt2xhY2nDsy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg5IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5TZWxlY2Npb25pIHVuIGFyeGl1IGQnaWRpb21hIHF1ZSBzJ2ltcG9ydGFyw6AuIENvbmZpZ3VyaSBjb3JyZWN0YW1lbnQgbCdpZGlvbWEgZW4gZWwgbWVuw7ogZGVzcGxlZ2FibGUgKG5vIGltcG9ydGEgZWwgbm9tIHF1ZSB0aW5ndWkgbCdhcnhpdSBqYSBxdWUgc2Vyw6AgaW1wb3J0YXQgZGUgdG90cyBsZXMgbWFuZXJlcykuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5MCIgbmFtZT0iaW1wb3J0d2luZG93Ij4KKyAgICA8dmFsdWU+aW1wb3J0YXIgLSBzZWxlY2Npb25hciBmaXR4ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkxIiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+R3VhcmRhciBjb20uLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkyIiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+Tm9tOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTMiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT5Db21lbnRhcmk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NCIgbmFtZT0icmVjb3JkaW5nc2F2ZXdpbiI+CisgICAgPHZhbHVlPmd1YXJkYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk1IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5HcmFiYWNpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NiIgbmFtZT0icmVjb3JkZXIiPgorICAgIDx2YWx1ZT5WaXNvciBkZSBncmFiYWNpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NyIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+R3JhYmFjaW9ucyBkZSBzYWxhcyBwdWJsaXF1ZXMgaSBwcml2YWRlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTgiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPlVzdWFyaXM6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5OSIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+RW4gZWwgc2lzdGVtYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAwIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAxIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5Vc3VhcmlzIGVuIGxhIHNhbGE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMiIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+YWN0dWFsaXR6YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAzIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5MYSBzYWxhIGVzdGEgcGxlbmEuIFBlciBmYXZvciwgaW50ZW50aSdsIG3DqXMgdGFyZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA0IiBuYW1lPSJyb29tc0xpc3QiPgorICAgIDx2YWx1ZT5QcmVtaSBzb2JyZSB1bmEgc2FsYSBwZXIgYSB2ZXVyZSBlbHMgZGV0YWxsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDUiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPkVzY3JpdXJlIGFscyB1c3VhcmlzIGQnYXF1ZXN0YSBzYWxhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDYiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPlNhbGE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNyIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+VXN1YXJpcyBlbiBhcXVlc3RhIHNhbGE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwOCIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+ZGVzZGU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwOSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+cmVwcm9kdWlyIGdyYXZhY2nDszwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTAiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkR1cmFjacOzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTEiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkRhdGE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMiIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+TWFuZXJhIGQnZW5yZWdpc3RyYW1lbnQ6IG5vIHBvdCBjYW52aWFyIGNhcCB2YWxvciBqYSBxdWUgZXMgdHJhY3RhIGQndW4gYXJ4aXUgZ3JhdmF0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTMiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPlJlcHJvZHVpciBhcXVlc3RhIGdyYXZhY2nDszwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTQiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPlJlcHJvZHVjaXIgLyBQYXVzYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTUiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkluaWNpYXIgZ3JhdmFjacOzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxNiIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+UGFyYXIgZ3JhdmFjacOzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxNyIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+R3JhdmFjacOzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTgiIG5hbWU9InJlY29yZF9lcnJvcl9tc2ciPgorICAgIDx2YWx1ZT5BY3R1YWxtZW50ZSBhbGfDuiBlcyB0cm9iYSBncmFiYW46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxOSIgbmFtZT0icmVjb3JkX21lc3NhZ2UiPgorICAgIDx2YWx1ZT5HcmF2YW50IHBlciBsJ3VzdWFyaTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIwIiBuYW1lPSJyZWNvcmRfY2FuY2VsIj4KKyAgICA8dmFsdWU+Y2FuY2VswrdsYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIxIiBuYW1lPSJyZWNvcmRfY2FuY2FsX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5MYSBncmF2YWNpw7Mgc2Vyw6AgY2FuY2VswrdsYWRhIGkgbm8gZXMgZ3VhcmRhcsOgLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjIiIG5hbWU9ImNhbmNlbF9kaWFsb2dfcmVzdW1lIj4KKyAgICA8dmFsdWU+cmVwcmVuZHJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyMyIgbmFtZT0iY2FuY2VsX2RpYWxvZ19yZXN1bWVfdG9vbHRpcCI+CisgICAgPHZhbHVlPlRhbmNhciBmaW5lc3RyYSBpIHJlcHJlbmRyZSBsYSBncmF2YWNpw7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI0IiBuYW1lPSJwYWludHRvb2xzX2VsbGlwc2VfY29sb3IiPgorICAgIDx2YWx1ZT5DYW52aWFyIGVsIGNvbG9yIGRlIGzDrW5pYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjUiIG5hbWU9ImNvbG9ycGlja2VyX2hlYWQiPgorICAgIDx2YWx1ZT5TZWxlY2Npb25hciBjb2xvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjYiIG5hbWU9InBhaW50dG9vbHNfbGluZV9kaXNhYmxlIj4KKyAgICA8dmFsdWU+RGVzaGFiaWxpdGFyIC8gSGFiaWxpdGFyIGNvbG9yIGRlIGzDrW5pYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjciIG5hbWU9InBhaW50dG9vbHNfZmlsbF9kaXNhYmxlIj4KKyAgICA8dmFsdWU+Y2FudmlhciBjb2xvciBkZSBmb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyOCIgbmFtZT0icGFpbnR0b29sc19saW5lX2Rpc2FibGUiPgorICAgIDx2YWx1ZT5EZXNoYWJpbGl0YXIgLyBIYWJpbGl0YXIgY29sb3IgZGUgZm9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjkiIG5hbWU9ImNoYW5nZV93aWR0aF9hcnJvd19kb3duX3NsaWRlciI+CisgICAgPHZhbHVlPmNhbnZpYXIgZ3Jvc3NvciBkZSBsw61uaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMwIiBuYW1lPSJjbG9zZV9zbWFsbF9wb3B1cHMiPgorICAgIDx2YWx1ZT50YW5jYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMxIiBuYW1lPSJwYWludF90b29sX2xldHRlciI+CisgICAgPHZhbHVlPmNhbnZpYXIgZ3JhbmTDoHJpYSBkZSBsbGV0cmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMyIiBuYW1lPSJyZWNvcmRpbmdzbGlzdF9kZWxldGUiPgorICAgIDx2YWx1ZT5FbGltaW5hciBncmF2YWNpw7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMzIiBuYW1lPSJyZWNvcmRpbmdzbGlzdF9yZWNvcmRlZEJ5R3Vlc3QiPgorICAgIDx2YWx1ZT5JbnZpdGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNCIgbmFtZT0icmVjb3JkaW5nc2xpc3RfcmVjb3JkZWRieSI+CisgICAgPHZhbHVlPlBlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM1IiBuYW1lPSJyZWNvcmRpbmdzX3RhYmxlX2hlYWRfbmFtZSI+CisgICAgPHZhbHVlPk5vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzYiIG5hbWU9InJlY29yZGluZ3NfdGFibGVfaGVhZF9yb29tIj4KKyAgICA8dmFsdWU+U2FsYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzciIG5hbWU9InJlY29yZGluZ3NfdGFibGVfaGVhZF9kYXRlIj4KKyAgICA8dmFsdWU+RGF0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzgiIG5hbWU9InJlY29yZF9zdGFydF9jYW5jZWwiPgorICAgIDx2YWx1ZT5jYW5jZWzCt2xhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzkiIG5hbWU9InJlY29yZF9zdGFydF9zdGFydCI+CisgICAgPHZhbHVlPmluaWNpYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQwIiBuYW1lPSJmaWxlc2Jyb3dzZXJfdGFibGVfaGVhZF9uYW1lIj4KKyAgICA8dmFsdWU+Tm9tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MSIgbmFtZT0iZmlsZXNicm93c2VyX3RhYmxlX2hlYWRfZGF0ZSI+CisgICAgPHZhbHVlPkRhdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQyIiBuYW1lPSJjaGF0X2NsZWFyX2hpc3RvcnkiPgorICAgIDx2YWx1ZT5FbGltaW5hciByZWdpc3RyZSAobG9nKSBkZSB4YXQgZW4gZWwgc2Vydmlkb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQzIiBuYW1lPSJjaGF0X292ZXJhbGxfaGVhZGVyIj4KKyAgICA8dmFsdWU+WGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NCIgbmFtZT0iY2hhdF9zZW5kX2J0biI+CisgICAgPHZhbHVlPmVudmlhciB1biBtaXNzYXRnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDUiIG5hbWU9ImNoYXRfZW1vdF9idG4iPgorICAgIDx2YWx1ZT5FbW90aWNvbmVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NiIgbmFtZT0iY2hhdF9lbW90X3dpbiI+CisgICAgPHZhbHVlPkVtb3RpY29uZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ3IiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TZWxlY2Npb25hciBkaXNwb3NpdGl1czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDgiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPsOAdWRpbyBpIFbDrWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDkiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPk5vbcOpcyDDgHVkaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUwIiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT5Ob23DqXMgVsOtZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1MSIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2NvbWJvIj4KKyAgICA8dmFsdWU+U2Vuc2Ugw4B1ZGlvL1bDrWRlbyAoSW1hdGdlIGZpeGEpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1MiIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2luZm9fdGV4dCI+CisgICAgPHZhbHVlPk5vIGVzIHRyYW5zbWV0csOgIMOAdWRpby9Ww61kZW8gZGVzIGRlbCBzZXUgZXF1aXAuIEVuIGVsIHNldSBsbG9jIGVzIG1vc3RyYXLDoCBsYSBpbWF0Z2UgZGVsIHNldSBwZXJmaWwuIFNlbGVjY2lvbmkgYXF1ZXN0YSBjb25maWd1cmFjacOzIHNpIHTDqSBwcm9ibGVtZXMgYW1iIGwnYW1wbGUgZGUgYmFuZGEgZCdpbnRlcm5ldC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUzIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX21vbmRheSI+CisgICAgPHZhbHVlPkRMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV90dWVzZGF5Ij4KKyAgICA8dmFsdWU+RE08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU1IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3dlZG5lc2RheSI+CisgICAgPHZhbHVlPk1DPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NiIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV90aHVyc2RheSI+CisgICAgPHZhbHVlPkRKPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NyIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9mcmlkYXkiPgorICAgIDx2YWx1ZT5EVjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTgiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfc2F0dXJkYXkiPgorICAgIDx2YWx1ZT5EUzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTkiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfc3VuZGF5Ij4KKyAgICA8dmFsdWU+REc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYwIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX21vbmRheSI+CisgICAgPHZhbHVlPkRpbGx1bnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYxIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1R1ZXNkYXlMYWJlbCI+CisgICAgPHZhbHVlPkRpbWFydHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYyIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1dlZG5lc2RheUxhYmVsIj4KKyAgICA8dmFsdWU+RGltZWNyZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYzIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1RodXJzZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5EaWpvdXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY0IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX0ZyaWRheUxhYmVsIj4KKyAgICA8dmFsdWU+RGl2ZW5kcmVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9TYXR1cmRheUxhYmVsIj4KKyAgICA8dmFsdWU+RGlzYWJ0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjYiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfU3VuZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5EaXVtZW5nZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjciIG5hbWU9ImNhbGVuZGFyX3dlZWtudW1iZXJfaGVhZGVyIj4KKyAgICA8dmFsdWU+UyM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY4IiBuYW1lPSJjYWxlbmRhcl93ZWVrbnVtYmVyX2hlYWRlclRvb2x0aXAiPgorICAgIDx2YWx1ZT5Ob21icmUgZGUgc2V0bWFuYSBkZSBjYWxlbmRhcmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY5IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+R2VuZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDcwIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+RmVicmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3MSIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPk1hcsOnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3MiIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPkFicmlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3MyIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPk1haWc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc0IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+SnVueTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzUiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5KdWxpb2w8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc2IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+QWdvc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc3IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+U2V0ZW1icmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc4IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+T2N0dWJyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzkiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5Ob3ZlbWJyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODAiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5EZXNlbWJyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODEiIG5hbWU9ImNhbGVuZGFyd2luX2hlYWRlciI+CisgICAgPHZhbHVlPkNhbGVuZGFyaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODIiIG5hbWU9InJvb21hZG1pbl9sYWJlbE51bWJlck9mUGFydGljaXBhbnRzIj4KKyAgICA8dmFsdWU+UGFydGljaXBhbnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4MyIgbmFtZT0icm9vbVZhbHVlX2FkdmFuY2VkU2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Nb3N0cmFyIGxhIGNvbmZpZ3VyYWNpw7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg0IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3ZpZGVvWCI+CisgICAgPHZhbHVlPlggfCBZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NSIgbmFtZT0icm9vbUFkbWluX2xheW91dF92aWRlb1kiPgorICAgIDx2YWx1ZT5BbXBsZSB8IEFsdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODYiIG5hbWU9InJvb21BZG1pbl9sYXlvdXQiPgorICAgIDx2YWx1ZT5Db250ZW5pZG9yOiB2w61kZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg3IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X21vZCI+CisgICAgPHZhbHVlPkNvbnRlbmlkb3I6IG1vZGVyYWNpw7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg4IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X21vZF9wb3MiPgorICAgIDx2YWx1ZT5YPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4OSIgbmFtZT0icm9vbUFkbWluX2xheW91dF93aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+Q29udGVuaWRvcjogcGlzc2FycmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkwIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmRfc2hvdyI+CisgICAgPHZhbHVlPkhhYmlsaXRhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTEiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZF9wb3MiPgorICAgIDx2YWx1ZT5YIHwgWTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTIiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkFtcGxlIHwgQWx0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5MyIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlcyI+CisgICAgPHZhbHVlPkNvbnRlbmlkb3I6IEZpdHhlcixYYXQsUGFydGljaXBhbnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NCIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlc19zaG93Ij4KKyAgICA8dmFsdWU+SGFiaWxpdGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NSIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlc19wb3MiPgorICAgIDx2YWx1ZT5YIHxZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NiIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlcyI+CisgICAgPHZhbHVlPkFtcGxlIHwgQWx0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NyIgbmFtZT0ibW9kZXJhdG9yX2dvbmVfbWVzc2FnZSI+CisgICAgPHZhbHVlPkVsIG1vZGVyYWRvciBzJ2hhIHJldGlyYXQgcGVsIHF1ZSBuaW5nw7ogZXN0w6AgcmVhbGl0emFudCB1bmEgcHJlc2VudGFjacOzIGVuIGFxdWVzdHMgbW9tZW50cy4gUG90IHNvbMK3bGljaXRhciBsYSBtb2RlcmFjacOzIG8gZXNwZXJhci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk4IiBuYW1lPSJtb2RlcmF0b3JfbWVzc2FnZV9ldmVudF9ub19tb2QiPgorICAgIDx2YWx1ZT5ObyBoaSBoYSBtb2RlcmFkb3IgZW4gYXF1ZXN0YSBzYWxhLCBwZXLDsiBzaSBwYXJ0aWNpcGFudHMuIFBvdCBzb2zCt2xpY2l0YXIgbGEgbW9kZXJhY2nDsyBvIGVzcGVyYXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5OSIgbmFtZT0iZmVlZGJhY2tfdGVtcGxhdGVfc3ViamVjdCI+CisgICAgPHZhbHVlPkNvbWVudGFyaSBkZSAkQVBQX05BTUU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAwIiBuYW1lPSJpbnZpdGF0aW9uX3RlbXBsYXRlX2hlYWQiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgLSBJbnZpdGFjacOzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwMSIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X2Zyb20iPgorICAgIDx2YWx1ZT5NaXNzYXRnZSBkZWwgdXN1YXJpOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDIiIG5hbWU9Imludml0YXRpb25fdGV4dF9tZXNzYWdlIj4KKyAgICA8dmFsdWU+TWlzc2F0Z2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwMyIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X2NsaWNrX3RleHQiPgorICAgIDx2YWx1ZT5QcmVtaSBlbiBhcXVlc3QgZW5sbGHDpyBwZXIgYSBwb2RlciBwYXJ0aWNpcGFyIGVuIGxhIGNvbmZlcsOobmNpYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA0IiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfY2xpY2tfdGV4dF9saW5rIj4KKyAgICA8dmFsdWU+UHJlbWkgYXF1w60gcGVyIGEgZW50cmFyIGEgbGEgc2FsYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDUiIG5hbWU9Imludml0YXRpb25fdGV4dF9jbGlja190ZXh0X2hlbHAiPgorICAgIDx2YWx1ZT5TaSB0w6kgcHJvYmxlbWVzIGFtYiBsJ2VubGxhw6csIGxpIHZhbSBzdWdnZXJpciBxdWUgY29wacOvIGkgcGVndWkgZWwgc2Vnw7xlbnQgdGV4dCBlbiBlbCBzZXUgbmF2ZWdhZG9yOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDYiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9oZWFkIj4KKyAgICA8dmFsdWU+UmVnaXN0cmUgJEFQUF9OQU1FPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwNyIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X2hlYWQyIj4KKyAgICA8dmFsdWU+TGEgc2V2YSBpbmZvcm1hY2nDsyBkJ3VzdWFyaTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA4IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfdXNlcm5hbWUiPgorICAgIDx2YWx1ZT5Vc3Vhcmk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwOSIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X3Bhc3MiPgorICAgIDx2YWx1ZT5Db250cmFzZW55YTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTEwIiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfbWFpbCI+CisgICAgPHZhbHVlPkNvcnJldTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTExIiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfYnllIj4KKyAgICA8dmFsdWU+RXF1aXAtJEFQUF9OQU1FPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxMiIgbmFtZT0icmVnaXN0ZXJfbWFpbF9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIC0gUmVnaXN0cmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTEzIiBuYW1lPSJyZXNldF9wYXNzd29yZF90ZW1wbGF0ZV9oZWFkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIC0gUmVzZXRlYXIgY29udHJhc2VueWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE0IiBuYW1lPSJyZXNldF9wYXNzd29yZF90ZW1wbGF0ZV90ZXN0X2xpbmsiPgorICAgIDx2YWx1ZT5QcmVtaSBlbiBlbCBzZWfDvGVudCBlbmxsYcOnIHBlciBhIHNvbMK3bGljaXRhciB1bmEgbm92YSBjb250cmFzZW55YTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE1IiBuYW1lPSJyZXNldF9wYXNzd29yZF90ZW1wbGF0ZV90ZXh0Ml9saW5rIj4KKyAgICA8dmFsdWU+UHJlbWkgYXF1w60gcGVyIGEgaW50cm9kdWlyIHVuYSBub3ZhIGNvbnRyYXNlbnlhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNiIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfdGV4dDNfbGluayI+CisgICAgPHZhbHVlPlNpIHTDqSBwcm9ibGVtZXMgYW1iIGwnZW5sbGHDpywgbGkgdmFtIHN1Z2dlcmlyIHF1ZSBjb3Bpw68gaSBwZWd1aSBlbCBzZWfDvGVudCB0ZXh0IGVuIGVsIHNldSBuYXZlZ2Fkb3I6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNyIgbmFtZT0icmVzZXRfcGFzc3dvcmRfbWFpbF9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIC0gTm92YSBDb250cmFzZW55YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTgiIG5hbWU9ImRhdGVSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPlBlciBmYXZvciwgaW50cm9kdWVpeGkgdW5hIGRhdGEgdsOgbGlkYSBhbWIgZWwgZm9ybWF0IGRkLm1tLnl5eXkgRXhlbXBsZTogMjQuMTIuMjAwOC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE5IiBuYW1lPSJlbWFpbFJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+UGVyIGZhdm9yLCBpbnRyb2R1ZWl4aSB1bmEgYWRyZcOnYSBkZSBjb3JyZXUgdsOgbGlkYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjAiIG5hbWU9ImZsb2F0UmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5QZXIgZmF2b3IsIGludHJvZHVlaXhpIHVuIG5vbWJyZSBkZWNpbWFsLiBFeGVtcGxlOiAxLjAwICh1c2kgcHVudCBpIG5vIGxhIGNvbWEpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyMSIgbmFtZT0ibnVtYmVyUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5QZXIgZmF2b3IsIGludHJvZHVlaXhpIHVuIG5vbWJyZSBzZW5jZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIyIiBuYW1lPSJwaG9uZVJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+UGVyIGZhdm9yLCBpbnRyb2R1ZWl4aSB1biBub21icmUgZGUgdGVsw6hmb24gdsOgbGlkLiBFeGVtcGxlOiArNTkzIDk0NyAyMjUgMjAwLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjMiIG5hbWU9InRpbWVSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPlBlciBmYXZvciBpbnRyb2R1ZWl4aSB1bmEgaG9yYSB2w6BsaWRhIGVuIGVsIGZvcm1hdCBoaDptbS4gRXhlbXBsZTogMTI6MjMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3ciPgorICAgIDx2YWx1ZT5Db250cmFzZW55YSBwcm90ZWdpZGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI1IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd19wYXNzd29yZExhYmVsIj4KKyAgICA8dmFsdWU+Q29udHJhc2VueWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI2IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZExhYmVsIj4KKyAgICA8dmFsdWU+UGVyw61vZGUgZGUgdmFsaWRlc2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI3IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZCI+CisgICAgPHZhbHVlPlNlbnNlIGzDrW1pdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjgiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkIj4KKyAgICA8dmFsdWU+UGVyw61vZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI5IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZCI+CisgICAgPHZhbHVlPlVuYSB2ZWdhZGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMwIiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZEZyb21MYWJlbCI+CisgICAgPHZhbHVlPkRlcyBkZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMxIiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZFRvTGFiZWwiPgorICAgIDx2YWx1ZT5GaW5zIGE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMiIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfTWFpbFN1YmplY3QiPgorICAgIDx2YWx1ZT5JbnZpdGFjacOzIGEgJEFQUF9OQU1FPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMyIgbmFtZT0iaW52aXRhdGlvbl9lcnJvciI+CisgICAgPHZhbHVlPk5vIGV4aXN0ZWl4IHVuYSBpbnZpdGFjacOzIGRpc3BvbmlibGUgYW1iIGFxdWVzdCBjb2RpLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzQiIG5hbWU9Imludml0YXRpb25fZXJyb3IiPgorICAgIDx2YWx1ZT5BcXVlc3RhIGludml0YWNpw7MgamEgdmEgc2VyIHVzYWRhIGkgbm8gcG90IHRvcm5hci1zZSBhIHV0aWxpdHphci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM1IiBuYW1lPSJpbnZpdGF0aW9uX2Vycm9yIj4KKyAgICA8dmFsdWU+RWwgY29kaSBkJ2ludml0YWNpw7Mgbm8gw6lzIHbDoGxpZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM2IiBuYW1lPSJpbnZpdGF0aW9uX3Bhc3MiPgorICAgIDx2YWx1ZT5Db250cmFzZW55YTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM3IiBuYW1lPSJpbnZpdGF0aW9uX3Bhc3NfYnRuIj4KKyAgICA8dmFsdWU+VmVyaWZpY2FyIGNvbnRyYXNlbnlhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzOCIgbmFtZT0iaW52aXRhdGlvbl9wYXNzX2Vycm9yIj4KKyAgICA8dmFsdWU+Q29udHJhc2VueWEgaW5jb3JyZWN0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzkiIG5hbWU9IkJyb3dzZXIiPgorICAgIDx2YWx1ZT5OYXZlZ2Fkb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQwIiBuYW1lPSJhdWRpb192aWRlbyI+CisgICAgPHZhbHVlPlNpbmNyb25pdHphciDDgHVkaW8vVsOtZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0MSIgbmFtZT0iZXJyb3JDb2RlX2ludmFsaWRTZXNzaW9uIj4KKyAgICA8dmFsdWU+RWwgbG9naW4gw6lzIGNvcnJlY3RlLCBwZXLDsiBsYSBzZXNzacOzIGVuIGxhIHF1YWwgaW50ZW50YSBlbnRyYXIgbm8gZXN0w6AgYWN0aXZhIG8gbm8gdmEgc2VyIGd1YXJkYWRhIGVuIGVsIHNlcnZpZG9yLiBIYSBkJ2luaWNpYXIgdW5hIG5vdmEgc2Vzc2nDsy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQyIiBuYW1lPSJlcnJvcmNvZGVfc2V0VXNlck9iamVjdCI+CisgICAgPHZhbHVlPkxhIFNlc3Npb25JZCBpcyBub3QgbG9nZ2VkaW4gb3IgaGFzIG5vIEFkbWluIHJpZ2h0cy4gVGhlIFNPQVAgR2F0ZXdheSBuZWVkcyBhbiBVc2VyIHdpdGggQWRtaW4tUmlnaHRzIHRvIGVtYmVkIG5ldyBVc2Vycy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQzIiBuYW1lPSJlcnJvcmNvZGVfbG9naW5CeVJlbW90ZVVzZXIiPgorICAgIDx2YWx1ZT5UaGlzIFNlc3Npb24gaGFzIG5vIFJlbW90ZXVzZXItRGF0YSBjb25uZWN0ZWQuIFdldGhlciB5b3UgZGlkIG5vdCBjYWxsIHRoZSBTT0FQLUdhdGV3YXkgYmVmb3JlIGFjY2Vzc2luZyB0aGUgQXBwbGljYXRpb24gb3IgeW91IGFyZSB1c25pZyBhIHdyb25nIFNlc3Npb24tSUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ0IiBuYW1lPSJkZWJ1Z19tZXNzYWdlX3JlY29yZGluZyI+CisgICAgPHZhbHVlPkVsIGdyYWJhZG9yIGFjdHVhbG1lbnQgZXN0w6AgZW4gZmFzZSBiZXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0NSIgbmFtZT0icHJvcGVydHlQYW5lbFhWYWx1ZSI+CisgICAgPHZhbHVlPng8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ2IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWFZhbHVlTGFiZWwiPgorICAgIDx2YWx1ZT5laXggLXg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ3IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWVZhbHVlIj4KKyAgICA8dmFsdWU+eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDgiIG5hbWU9InByb3BlcnR5UGFuZWxZVmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPmVpeC15PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0OSIgbmFtZT0icHJvcGVydHlQYW5lbFdpZHRoVmFsdWUiPgorICAgIDx2YWx1ZT5hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1MCIgbmFtZT0icHJvcGVydHlQYW5lbFdpZHRoVmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPmFtcGzDoHJpYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTEiIG5hbWU9InByb3BlcnR5UGFuZWxIZWlnaHRWYWx1ZSI+CisgICAgPHZhbHVlPmg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUyIiBuYW1lPSJwcm9wZXJ0eVBhbmVsSGVpZ2h0VmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPmFsdHVyYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTMiIG5hbWU9InByb3BlcnR5T3BhY2l0eVNsaWRlciI+CisgICAgPHZhbHVlPkNhbnZpYXIgVHJhbnNwYXLDqG5jaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU0IiBuYW1lPSJicm93c2VyT3BlbiI+CisgICAgPHZhbHVlPk5hdmVnYWRvciBPYnJpcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTUiIG5hbWU9ImJyb3dzZXJDbG9zZSI+CisgICAgPHZhbHVlPk5hdmVnYWRvciBUYW5jYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU2IiBuYW1lPSJjb25uZWN0aW9uTG9zdE1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TJ2hhIHBlcmR1dCBsYSBjb25uZXhpw7MgYW1iIGVsIHNlcnZpZG9yLiBOZWNlc3NpdGEgcmVjYXJyZWdhciBsJ2FwbGljYWNpw7MgaS9vIGNvbXByb3ZhciBsYSBzZXZhIFhhcnhhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTciIG5hbWU9IjU1NyI+CisgICAgPHZhbHVlPlB1bnRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTgiIG5hbWU9InN5bmMgbWVzc2FnZSBoZWFkZXIiPgorICAgIDx2YWx1ZT5TaW5jcm9uaXR6YW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1OSIgbmFtZT0iU3luY2hyb25pemluZyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2luY3Jvbml0emFudCB1c3VhcmlzLiBQZXIgZmF2b3IsIGVzcGVyaS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYwIiBuYW1lPSJleHBvcnRUb1NWRyI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O0Rlc2NhcnJlZ2FyIGNvbSBTVkcmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MSIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O0Rlc2NhcnJlZ2FyIGNvbSBQTkcmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MiIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O0Rlc2NhcnJlZ2FyIGNvbSBKUEcmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MyIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O0Rlc2NhcnJlZ2FyIGNvbSBQREYmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2NCIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O0Rlc2NhcnJlZ2FyIGNvbSBUSUYmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2NSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPlJlY29yZGk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2NiIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkNhdGVnb3JpYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY3IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+UmVwZXRpY2nDszo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY4IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+bmluZ8O6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2OSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkxvY2FsaXR6YWNpw7M6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MCIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkluaWNpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkZpbmFsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MiIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPlTDrXRvbDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTczIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+Q29tZW50YXJpOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzQiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5Db252aWRhciBhIHBlcnNvbmVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkRpw6ByaWFtZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NiIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPk1lbnN1YWxtZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NyIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkFudWFsbWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzgiIG5hbWU9ImFsZXJ0Ij4KKyAgICA8dmFsdWU+TGEgY2l0YSBmaW5hbCB2YSBkZXNwcsOpcyBkZSBsYSBjaXRhIGQnaW5pY2k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc5IiBuYW1lPSJhbGVydCI+CisgICAgPHZhbHVlPlBlciBmYXZvciwgcG9zaSB1biB0w610b2w8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgwIiBuYW1lPSI1ODAiPgorICAgIDx2YWx1ZT5SVEw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgxIiBuYW1lPSI1ODEiPgorICAgIDx2YWx1ZT5BY3RpdmkgYXF1ZXN0YSBvcGNpw7Mgc2kgbCdlc2NyaXB0dXJhIGRlbCBzZXUgaWRpb21hIHZhIGRlIGRyZXRhIGEgZXNxdWVycmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgyIiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPkVpbmVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MyIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT5WZXVyZSBlc2RldmVuaW1lbnRzIG8gdHJvYmFkZXMgZ3JhdmFkZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg0IiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPlZpZGVvY29uZmVyw6huY2lhIC0gUmV1bmVpeGkncyBhbWIgNCBvIG3DqXMgKGZpbnMgYSAxNikgdXN1YXJpc1xudG90cyB0aW5kcmFuIGFjY8OpcyBkJ8OgdWRpbyBpIHbDrWRlby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg1IiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPkF1ZGl0b3JpIC0gUmV1bmVpeGkncyBhbWIgZmlucyBhIDIwMCBwYXJ0aWNpcGFudHMmbHQ7YnIvJmd0O25vbcOpcyBlbCBtb2RlcmFkb3IgdGluZHLDoCDDoHVkaW8gaS9vIHbDrWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODYiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+Q3JlYXIgdXN1YXJpcywgc2FsZXMsIG9yZ2FuaXR6YWNpb25zJmx0O2JyLyZndDsgKyBjYW52aXMgZW4gbGEgY29uZmlndXJhY2nDszwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODciIG5hbWU9InJvb20gQWRtaW5pc3RyYXRpb24gcm9vbWNsaWVudHMgbGlzdCI+CisgICAgPHZhbHVlPlVzdWFyaXMgZW4gbGEgU2FsYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODgiIG5hbWU9InJvb20gQWRtaW5pc3RyYXRpb24gcm9vbWNsaWVudHMgbGlzdCI+CisgICAgPHZhbHVlPklEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4OSIgbmFtZT0icm9vbSBBZG1pbmlzdHJhdGlvbiByb29tY2xpZW50cyBsaXN0Ij4KKyAgICA8dmFsdWU+TG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkwIiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5EPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5MSIgbmFtZT0ic3dmIHN5bmMgbWVzc2FnZSI+CisgICAgPHZhbHVlPkNhcnJlZ2FudCBBcnhpdS4gRXNwZXJpIGZpbnMgcXVlIHRvdHMgZWxzIGNsaWVudHMgaGFnaW4gZXN0YXQgc2luY3Jvbml0emF0cy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkyIiBuYW1lPSJ1cGxvYWQgZGlhbG9nIj4KKyAgICA8dmFsdWU+UHVqYWRhIGNvbXBsZXRhLiBDb252ZXJ0aW50IGwnYXJ4aXUuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkzIiBuYW1lPSJ1cGxvYWQgZGlhbG9nIj4KKyAgICA8dmFsdWU+SW5pY2lhciBQdWphZGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk0IiBuYW1lPSJ1cGxvYWQgZGlhbG9nIj4KKyAgICA8dmFsdWU+UHVqYXIgaSBpbXBvcnRhciBjb252ZXJzYS4gUGVyIGZhdm9yLCBzZWxlY2Npb25pIHVuIGFyeGl1IGRlbCBzZXUgZGlzYy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk1IiBuYW1lPSJ1cGxvYWQgRGlhbG9nIj4KKyAgICA8dmFsdWU+Q2FuY2VswrdsYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk2IiBuYW1lPSJ1cGxvYWQgRGlhbG9nIj4KKyAgICA8dmFsdWU+U2VsZWNjaW9uYXIgQXJ4aXU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk3IiBuYW1lPSJhZG1pbmlzdHJhdGlvbiBuYXZpZ2F0aW9uIj4KKyAgICA8dmFsdWU+Q29uZXhpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5OCIgbmFtZT0iY29uZmFkbWluIHZhbHVlIGxpc3QiPgorICAgIDx2YWx1ZT5WYWxvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTkiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5TdHJlYW1pZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDAiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDEiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5Db25lY3RhdCBkZXMgZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAyIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+U2FsYSAvIMOAbWJpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDMiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5FeHB1bHNhciBhIGwndXN1YXJpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwNCIgbmFtZT0ia2ljayB1c2VyIGNvbmZpcm1hdGlvbiBkaWFsb2ciPgorICAgIDx2YWx1ZT5FeHB1bHNhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDUiIG5hbWU9ImtpY2sgdXNlciBjb25maXJtYXRpb24gZGlhbG9nIj4KKyAgICA8dmFsdWU+RXN0w6Agc2VndXIgZGUgdm9sZXIgZXhwdWxzYXIgYSBhcXVlc3QgY2xpZW50IGRlIGxhIGNvbm5leGnDsz9cbiBFbCBjbGllbnQgc2Vyw6AgZXhwdWxzYXQgZGUgbGEgU2FsYSwgcGVyw7IgcG9kcsOgIHRvcm5hciBhIGF1dGVudGljYXItc2UgZGUgbm91LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDYiIG5hbWU9ImtpY2sgdXNlciBtZXNzYWdlIGRpYWxvZyI+CisgICAgPHZhbHVlPkxhIHNldmEgc2Vzc2nDsyBoYSBlc3RhdCB0YW5jYWRhIHBlciBsJ2FkbWluaXN0cmFkb3IgbyBlbCBtb2RlcmFkb3IuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwNyIgbmFtZT0idXNlcmFsdGVyc2VsZl9waG9uZSI+CisgICAgPHZhbHVlPlRlbMOoZm9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwOCIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+TCd1c3Vhcmkgw6lzIGVsIG1vZGVyYWRvciBkJ2FxdWVzdGEgU2FsYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDkiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPkwndXN1YXJpIHTDqSBwZXJtaXNvcyBwZXIgYSBkaWJ1aXhhciBlbiBsYSBwaXNzYXJyYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTAiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPihSZSkgSW5pY2lhciDDgHVkaW8vVsOtZGVvIG8gY2FudmlhciBsYSBjb25maWd1cmFjacOzIGRlIGRpc3Bvc2l0aXVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMSIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+UGVybWV0cmUgYSBhcXVlc3QgdXN1YXJpIGRpYnVpeGFyIGVuIGxhIHBpc3NhcnJhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMiIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+TGxldmFyIHBlcm1pc29zIHBlciBhIGRpYnVpeGFyIGVuIGxhIHBpc3NhcnJhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMyIgbmFtZT0iY29uZmVyZW5jZVBhbmVscyI+CisgICAgPHZhbHVlPlVzdWFyaXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE0IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+Rml0eGVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTUiIG5hbWU9ImNvbmZlcmVuY2VQYW5lbHMiPgorICAgIDx2YWx1ZT5QaXNzYXJyYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTYiIG5hbWU9ImNvbmZlcmVuY2VQYW5lbHMiPgorICAgIDx2YWx1ZT5YYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE3IiBuYW1lPSJvcmdhbml6YXRpb24gY2hvb3NlIGluZm8iPgorICAgIDx2YWx1ZT5FbCBzZXUgY29tcHRlIGVzdMOgIGFzc2lnbmFkYSBhIGRpdmVyc2VzIG9yZ2FuaXR6YWNpb25zLiBTZWxlY2Npb25pIGFxdWVsbGEgYW1iIGxhIHF1YWwgdnVsZ3VpIGVudHJhciBlbiBhcXVlc3RhIHNlc3Npw7MuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxOCIgbmFtZT0iZXJyb3IgbWVzc2FnZSByb29tIGZ1bGwiPgorICAgIDx2YWx1ZT5BcXVlc3RhIHNhbGEgZXN0w6AgY29tcGxldGEuIEludGVudGknbCBtw6lzIHRhcmQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxOSIgbmFtZT0icm9vbXR5cGVzIj4KKyAgICA8dmFsdWU+VGlwdXMgZGUgc2FsYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjAiIG5hbWU9ImFwcG9pbnRlZF9yb29tIj4KKyAgICA8dmFsdWU+U2FsYSBwZXIgYSBjaXRhci1zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjEiIG5hbWU9InNlcnZlcnRpbWUiPgorICAgIDx2YWx1ZT5Ib3JhIGRlbCBzZXJ2aWRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjIiIG5hbWU9Imludl9yZW1pbmRlcl90ZW1wbGF0ZV9oZWFkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIC0gUmVjb3JkYXRvcmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIzIiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9mcm9tIj4KKyAgICA8dmFsdWU+TWlzc2F0Z2UgZGUgbCd1c3Vhcmk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNCIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfbWVzc2FnZSI+CisgICAgPHZhbHVlPk1pc3NhdGdlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjUiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2NsaWNrX3RleHQiPgorICAgIDx2YWx1ZT5QcmVtaSBlbiBsJ2VubGxhw6cgcGVyIGEgcGFydGljaXBhciBlbiBsYSAoVsOtZGVvKUNvbmZlcsOobmNpYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI2IiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9jbGlja190ZXh0X2xpbmsiPgorICAgIDx2YWx1ZT5QcmVtaSBhcXXDrSBwZXIgYSBlbnRyYXIgZW4gbGEgc2FsYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjciIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2NsaWNrX3RleHRfaGVscCI+CisgICAgPHZhbHVlPlNpIHTDqSBwcm9ibGVtZXMsIGNvcGnDryBpIHBlZ3VpIGFxdWVzdCBlbmxsYcOnIGVuIGVsIHNldSBuYXZlZ2Fkb3I6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyOCIgbmFtZT0iYnRuX3NlYXJjaF9pbnRlcm4iPgorICAgIDx2YWx1ZT5yZWNlcmNhIGludGVybmE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyOSIgbmFtZT0iYnRuX3NlYXJjaF9leHRlcm4iPgorICAgIDx2YWx1ZT51c2FyaW9zIGV4dGVybnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMwIiBuYW1lPSJsYmxfcHJlbmFtZSI+CisgICAgPHZhbHVlPm5vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzEiIG5hbWU9ImxibF9uYW1lIj4KKyAgICA8dmFsdWU+Y29nbm9tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzIiIG5hbWU9ImxibF9lbWFpbCI+CisgICAgPHZhbHVlPkUtbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzMiIG5hbWU9ImxvZ291dENvbmZpcm1fdGl0bGUiPgorICAgIDx2YWx1ZT5Db25maXJtYXIgU29ydGlyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNCIgbmFtZT0ibG9nb3V0Q29uZmlybV9zdXJlX3RvX2xvZ291dF9xdWVzdGlvbiI+CisgICAgPHZhbHVlPkVzdMOgIHNlZ3VyIHF1ZSBkZXNpdGphIHNvcnRpcj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM1IiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT5BY2Npb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPlNhbGEgRGVtbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5Ib3JhIERlbW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM4IiBuYW1lPSJtZWV0aW5nIFRpbWVyIj4KKyAgICA8dmFsdWU+VGVtcG9yaXR6YWRvciBkZSB0cm9iYWRlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzkiIG5hbWU9Im1lZXRpbmcgVGltZXIiPgorICAgIDx2YWx1ZT5BcXVlc3RhIFNhbGEgw6lzIGRlbW8uIFBlciBhIGRlc2FjdGl2YXIgYXF1ZXN0IGF2w61zLCBoYXVyaWEgZCdhY29uc2VndWlyIHVuYSBzYWxhIHByaXZhZGEgcGVyIGEgw7pzIHByb3BpIG8gYsOpIGNvbmZpZ3VyYXIgZWwgc2V1IHByb3BpIFNlcnZpZG9yLiBTZXLDoCBkZXNjb25uZWN0YXQgYXV0b23DoHRpY2FtZW50IGVuOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDAiIG5hbWU9Im1lZXRpbmcgcm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPkFtYiBtb2RlcmFkb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQxIiBuYW1lPSJtb2RlcmF0ZWQgcm9vbSB3YWl0aW5nIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5QZXIgZmF2b3IsIGVzcGVyaSBmaW5zIHF1ZSBlbCBtb2RlcmFkb3IgZW50cmUgZW4gbGEgc2FsYS4gRWwgbW9kZXJhZG9yIHBvdCBzZXIgdW4gcHJvZmVzc29yLCBsJ2FkbWluaXN0cmFkb3IgbyBlbCBjcmVhZG9yIGQnYXF1ZXN0YSBzYWxhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDIiIG5hbWU9ImVycm9yIHBvcHVwIj4KKyAgICA8dmFsdWU+T2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQzIiBuYW1lPSJ3aW5kb3cgc2NyZWVuc2hhcmluZyI+CisgICAgPHZhbHVlPkVzY3JpcHRvcmkgY29tcGFydGl0IGluaWNpYW50LXNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0NCIgbmFtZT0id2luZG93IHNjcmVlbiBzaGFyaW5nIj4KKyAgICA8dmFsdWU+RXN0w6AgaW5pY2lhbnQtc2UgdW4gZXNjcmlwdG9yaSBjb21wYXJ0aXQgZGUgbCd1c3Vhcmk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0NSIgbmFtZT0id2luZG93IHNjcmVlbiBzaGFyaW5nIj4KKyAgICA8dmFsdWU+Q29tZW7Dp2FyIGEgY29tcGFydGlyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0NiIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5BZmVnaXIgdW5hIG5vdmEgdHJvYmFkYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDciIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+U2FsYSBkZSB0cm9iYWRlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDgiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+U2FsYSBkJ2VzZGV2ZW5pbWVudHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ5IiBuYW1lPSJtYWluIG1lbnUgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPk1vZGVyYWNpw7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUwIiBuYW1lPSJtZW51IG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Nb2RlcmFyIFVzdWFyaXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUxIiBuYW1lPSJtZW51IG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Nb2RlcmFyIFNhbGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1MiIgbmFtZT0ibW9kZXJhdG9yIG9yZyI+CisgICAgPHZhbHVlPk08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUzIiBuYW1lPSJjb25maXJtIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5EZXNpdGphIGNvbnZlcnRpciBhIGFxdWVzdCB1c3VhcmkgZW4gTW9kZXJhZG9yIGQnYXF1ZXN0YSBPcmdhbml0emFjacOzPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTQiIG5hbWU9ImVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5QZXIgZmF2b3IsIHNlbGVjY2lvbmkgdW5hIE9yZ2FuaXR6YWNpw7MgYWJhbnMgZCdpbnRlbnRhciBpbmNsb3VyZSBhIHVuIHVzdWFyaSBlbiBsYSBtYXRlaXhhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTUiIG5hbWU9ImNob29zZSB1c2VyIHdpbmRvdyI+CisgICAgPHZhbHVlPk9yZ2FuaXR6YWNpw7MgLSBNb2RlcmFkb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU2IiBuYW1lPSJtb2RlcmF0b3Igb3JnIHVzZXJzIj4KKyAgICA8dmFsdWU+UmVhbG1lbnQgZGVzaXRqYSBlc2JvcnJhciBhIGFxdWVzdCB1c3VhcmkgZGUgbCdPcmdhbml0emFjacOzPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTciIG5hbWU9Im9yZyBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+QXF1ZXN0IHVzdWFyaSDDqXMgTW9kZXJhZG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1OCIgbmFtZT0ib3JnIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5BcXVlc3QgdXN1YXJpIG5vIMOpcyBNb2RlcmFkb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU5IiBuYW1lPSJlcnJvciBtZXNzYWdlIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5EZXNpdGphIHF1ZSBhcXVlc3QgdXN1YXJpIGRlaXhpIGRlIHNlciBNb2RlcmFkb3IgZCdhcXVlc3RhIE9yZ2FuaXR6YWNpw7M/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MCIgbmFtZT0ibW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkFmZWdpciBvIGVzYm9ycmFyIFVzdWFyaXMgaS9vIFNhbGVzIGVuIGxhIHNldmEgT3JnYW5pdHphY2nDszwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjEiIG5hbWU9ImRlbGV0ZSBjb25maXJtIHF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+UmVhbG1lbnQgdm9sIGVzYm9ycmFyIGFxdWVzdCByZWdpc3RyZT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYyIiBuYW1lPSJkZWxldGUgY29uZmlybSBxdWVzdGlvbiB1c2VyIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5SZWFsbWVudCB2b2wgZXNib3JyYXIgYSBhcXVlc3QgdXN1YXJpIGRlIGxhIHNldmEgb3JnYW5pdHphY2nDsz8gTm9tw6lzIHMnZXNib3JyYXLDoCBsYSBjb25uZXhpw7MgZW50cmUgbCd1c3VhcmkgaSBsYSBzZXZhIG9yZ2FuaXR6YWNpw7MuIEVuIHJlYWxpdGF0LCBwZXIgYSBlc2JvcnJhciBhIGwndXN1YXJpIGhhIGQnaW5ncmVzc2FyIGFsIFBhbmVsbCBkJ0FkbWluaXN0cmFjacOzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjMiIG5hbWU9ImVycm9yIG1lc3NhZ2Ugc2VsZiBkZWxldGluZyI+CisgICAgPHZhbHVlPsKhVmQgbm8gcG90IGVzYm9ycmFyLXNlIGEgc2kgbWF0ZWl4ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjQiIG5hbWU9ImVycm9yIG1lc3NhZ2UgYXV0aCI+CisgICAgPHZhbHVlPsKhQXF1ZXN0IG3DqHRvZGUgbmVjZXNzaXRhIHVuIGNvbXB0ZSBkJ0FkbWluaXN0cmFjacOzIHBlciBhIHBvZGVyIHNlciB1dGlsaXR6YXQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NSIgbmFtZT0iZXJyb3IgbWVzc2FnZSBTT0FQIj4KKyAgICA8dmFsdWU+Tm8gaGkgaGEgY2FwIHNlc3Npw7MgYXNzb2NpYWRhIGEgYXF1ZXN0IElELjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjYiIG5hbWU9ImVycm9yIG1lc3NhZ2UgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkFxdWVzdGEgw6lzIHVuIGNvbXB0ZSBkJ0FkbWluaXN0cmFkb3IgbyBkZSBNb2RlcmFkb3IuIE5vbcOpcyBwb3QgZWRpdGFyIGFxdWVzdCBjb21wdGUgdXRpbGl0emFudCBlbCBQYW5lbGwgZCdBZG1pbmlzdHJhY2nDsy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY3IiBuYW1lPSJlbWFpbCB2ZXJpZmljYXRpb24iPgorICAgIDx2YWx1ZT5QZXIgYSBjb21wbGV0YXIgZWwgc2V1IHJlZ2lzdHJlLCBmYWNpIGVsIGZhdm9yIGRlIHByw6ltZXIgZW4gZWwgc2Vnw7xlbnQgZW5sbGHDpy4gQWx0cmEgb3BjacOzIMOpcyBjb3BpYXIgbGEgVVJMIGVuIGxhIGJhcnJhIGRlbCBzZXUgbmF2ZWdhZG9yLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjgiIG5hbWU9ImVtYWlsIHZlcmlmaWNhdGlvbiI+CisgICAgPHZhbHVlPlByZW1pIHBlciBhIHZlcmlmaWNhciBlbCBzZXUgRS1NYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2OSIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPk5vIHMnaGEgdHJvYmF0IHVuIHVzdWFyaSBwZXIgYSBhcXVlc3QgYWxnb3Jpc21lIEhhc2guPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3MCIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPsKhQXF1ZXN0IHVzdWFyaSBqYSB2YSBzZXIgYWN0aXZhdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjcxIiBuYW1lPSJlcnJvck1lc3NhZ2VfVXNlckFjdGl2YXRpb25TZXJ2bGV0IFtBY3RpdmF0ZVVzZXJdIj4KKyAgICA8dmFsdWU+wqFVZCBoYSBhY3RpdmF0IGVsIHNldSBjb21wdGUgYW1iIMOoeGl0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzIiIG5hbWU9ImVycm9yTWVzc2FnZV9Vc2VyQWN0aXZhdGlvblNlcnZsZXQgW0FjdGl2YXRlVXNlcl0iPgorICAgIDx2YWx1ZT5JbmdyZXNzaSBhcmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjczIiBuYW1lPSJsb2dpbkVycm9yTWVzc2FnZSA9IHVzZXIgd2FzIG5vdCBhY3RpdmF0ZWQiPgorICAgIDx2YWx1ZT5FbCBzZXUgY29tcHRlIG5vIGVzdMOgIGFjdGl2YWRhLiBVdGlsaXR6aSBlbiBwcmltZXIgbGxvYyBsJ2VubGxhw6cgcXVlIGhpIGhhIGVuIGNvcnJldSByZWJ1dCBhbCBmaW5hbGl0emFyIGVsIHByb2PDqXMgZGUgcmVnaXN0cmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3NCIgbmFtZT0icmVnaXN0ZXIgdmVyaWZpY2F0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5VZCBzJ2hhIHJlZ2lzdHJhdCBhbWIgw6h4aXQuIExpIGhlbSBlbnZpYXQgdW4gY29ycmV1IGFtYiB1biBjb2RpIGRlIHZlcmlmaWNhY2nDsy4gUGVyIGZhdm9yLCByZXZpc2kgZWwgc2V1IGNvbXB0ZSBkZSBjb3JyZXUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3NSIgbmFtZT0icGFydGljaXBhbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+TGxldmFyIGVsIHJvbCBkZSBNb2RlcmFkb3IgYSBhcXVlc3QgdXN1YXJpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3NiIgbmFtZT0icGFydGljaXBhbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+RG9uYXIgcGVybWlzb3MgZGUgTW9kZXJhY2nDsyBhIGFxdWVzdCB1c3Vhcmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc3IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Vc3Vhcmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc4IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5BY2PDqXMgYSBsYSBwaXNzYXJyYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzkiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPk1vZGVyYWRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODAiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPk1vZGVyYWNpw7M6IFBlciBmYXZvciwgc2VsZWNjaW9uaSBxdWFsc2V2b2wgdXN1YXJpIGRlIGxhIGxsaXN0YSBwZXIgYSBkb25hci1saSBhY2PDqXMgYSBsYSBQaXNzYXJyYSwgTW9kZXJhY2nDsyBvIFbDrWRlby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgxIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5BcXVlc3QgdXN1YXJpIGphIMOpcyBNb2RlcmFkb3IsIGFpeMOtIHF1ZSBhdXRvbcOgdGljYW1lbnQgdMOpIHBlcm1pc29zIHBlciBhIGRpYnVpeGFyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODIiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCBlcnJvciI+CisgICAgPHZhbHVlPkFxdWVzdCDDqXMgVWQhIE5vIHBvdCBsbGV2YXItc2UgZWxzIHBlcm1pc29zIGRlIE1vZGVyYWNpw7MgYSBzaSBtYXRlaXguPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MyIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+UGVybWV0cmUgYSBhcXVlc3QgdXN1YXJpIFB1YmxpY2FyIGVsIHNldSDDgHVkaW8vVsOtZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4NCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+RXNib3JyYXIgbCfDgHVkaW8vVsOtZGVvIGQnYXF1ZXN0IHVzdWFyaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODUiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPk0nYWdyYWRhcmlhIHNlciBtb2RlcmFkb3IgZCdhcXVlc3RhIHNhbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg2IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5NJ2FncmFkYXJpYSB1dGlsaXR6YXIgbGEgcGlzc2FycmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg3IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5EZXNpdGphcmlhIGNvbXBhcnRpciBlbCBtZXUgw4B1ZGlvL1bDrWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODgiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlbDqC4gw6lzIGVsIG1vZGVyYWRvciBkJ2FxdWVzdGEgc2FsYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODkiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlTDqSBwZXJtaXNvcyBwZXIgYSBkaWJ1aXhhciBlbiBsYSBwaXNzYXJyYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTAiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlTDqSBwZXJtw61zIHBlciBhIGNvbXBhcnRpciBlbCBzZXUgw4B1ZGlvL1ZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5MSIgbmFtZT0iZXJyb3J0eXBlIj4KKyAgICA8dmFsdWU+TWlzc2F0Z2UgYWwgTW9kZXJhZG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5MiIgbmFtZT0iYXBwbHkgZm9yIG1vZCBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TCd1c3Vhcmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkzIiBuYW1lPSJhcHBseSBmb3IgbW9kIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EZXNpdGphcmlhIHNlciBNb2RlcmFkb3IuIFVzaSBsZXMgaWNvbmVzIGQnZXN0YXQgcHLDsnhpbXMgYSBsJ3VzdWFyaSBlbiBsYSBMbGlzdGEgZCdVc3VhcmlzIHBlciBhIGFncmVnYXIgbyByZW1vdXJlIGVsIHBlcm3DrXMgZGUgTW9kZXJhY2nDsy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk0IiBuYW1lPSJhcHBseSBmb3Igd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPmRlc2l0amFyaWEgdXRpbGl0emFyIGxhIHBpc3NhcnJhLiBVdGlsaXR6aSBsZXMgaWNvbmVzIHF1ZSBoaSBoYSBhbCBjb3N0YXQgZGVsIG5vbSBkZSBsJ3VzdWFyaSAoZW4gbGEgTGxpc3RhIGQnVXN1YXJpcykgcGVyIGEgYWdyZWdhciBvIGxsZXZhciBlbHMgcGVybWlzb3MgY29ycmVzcG9uZW50cy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk1IiBuYW1lPSI2OTUiPgorICAgIDx2YWx1ZT5kZXNpdGphcmlhIGNvbXBhcnRpciBlbCBzZXUgw4B1ZGlvL1bDrWRlby4gVXNpIGxlcyBpY29uZXMgcXVlIGhpIGhhIGFsIGNvc3RhdCBkZWwgbm9tIGQndXN1YXJpIChlbiBsYSBMbGlzdGEgZCdVc3VhcmlzKSBwZXIgYSBhZ3JlZ2FyIG8gbGxldmFyIGVscyBwZXJtaXNvcyBwZXIgYSBjb21wYXJ0aXIgw4B1ZGlvL1ZpZGVvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTYiIG5hbWU9Im1vZGVyYXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkhhIGQnZXNwZXJhciBmaW5zIHF1ZSB1biBNb2RlcmFkb3IgaW5ncmVzc2kgYSBsYSBzYWxhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTciIG5hbWU9ImNhbGVuZGFyIGJ1dHRvbiI+CisgICAgPHZhbHVlPkNhbmNlbMK3bGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5OCIgbmFtZT0iY2FsZW5kYXIgYnV0dG9uIj4KKyAgICA8dmFsdWU+R3VhcmRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTkiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPkRpYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDAiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPk1lczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDEiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPkFueTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDIiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5QdWphciBmaXR4ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAzIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+Rml0eGVyIGNhcnBldGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA0IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+QWN0dWFsaXphcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDUiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5QYXBlbGVyYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDYiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5FbHMgbWV1cyBBcnhpdXMgKERpc3Bvc2l0aXUgcGVyc29uYWwpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwNyIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkFyeGl1cyBkZSBsYSBTYWxhIChEaXNwb3NpdGl1IHDDumJsaWMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwOCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkFmZWdpciBmaXR4ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA5IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+QWZlZ2lyQ2FycGV0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTAiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Cb3JyYXIgQ2FycGV0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTEiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5FZGl0YXIgbm9tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPk5vdmEgQ2FycGV0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTMiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Fc3TDoCBzZWd1ciBxdWUgdm9sIGVzYm9ycmFyIGFxdWVzdCDDrXRlbT8pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxNCIgbmFtZT0idXNlciBhZG1pbiI+CisgICAgPHZhbHVlPkJ1c2NhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTUiIG5hbWU9InVzZXIgYWRtaW4iPgorICAgIDx2YWx1ZT5CdXNjYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE2IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+T2JyaXIgZG9jdW1lbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE3IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+TW9zdHJhciB0b3RzIGVscyBhcnhpdXMgKFZpc3RhIGQnYXJicmUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxOCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlRhbmNhciBkb2N1bWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTkiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Fc2JvcnJhciBmaXR4ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIwIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+Tm8gdMOpIHBlcm1pc29zIHBlciBhIGVzY3JpdXJlIG8gZGlidWl4YXIgZW4gbGEgcGlzc2FycmEuIEhhIGRlIHNlciBtb2RlcmFkb3IgbywgYWxtZW55cywgdGVuaXIgcGVybWlzb3MgZCdlZGljacOzIGRlIGxhIHBpc3NhcnJhLiBTb2zCt2xpY2l0aS1sJ2hpIGEgdW4gTW9kZXJhZG9yLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjEiIG5hbWU9InByb3BlcnR5IHBhbmVsIj4KKyAgICA8dmFsdWU+UHJvcGlldGF0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjIiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPkluaWNpYXIgQ2xpZW50IChleHRlcm4pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyMyIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+SW5pY2lhciBDbGllbnQgKEhUVFApPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNCIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+VW4gdXN1YXJpIGRlc2l0amEgY29tcGFydGlyIGxhIHNldmEgcGFudGFsbGEuIERlc2l0amEgdmlzdWFsaXR6YXItbG8/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNSIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+QWN0dWFsbWVudCBlc3TDoCBjb21wYXJ0aW50IGVsIHNldSBlc2NyaXB0b3JpLiBQZXIgYSBkZWl4YXIgZGUgZmVyLWxvLCBwcmVtaSBlbiBlbCBib3TDsyBTdG9wIGVuIGVsIGNsaWVudCB1dGlsaXR6YXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNiIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+Q29tcGFydGludCBzZXNzacOzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNyIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+wqFKYSBlc3TDoCBjb21wYXJ0aW50IGVsIHNldSBFc2NyaXB0b3JpITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+Vmlzb3IgZCdFc2NyaXB0b3JpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyOSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5Tb3J0aXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMwIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkNvbXBhcnRpbnQgbCdFc2NyaXB0b3JpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5QcmVtaSBJbmljaWFyIHBlciBhIHB1YmxpY2FyIGxhIHNldmEgcGFudGFsbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMyIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkluaWNpYXIgZWwgY29tcGFydGlyIGVzY3JpcHRvcmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMzIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkZpbmFsaXR6YXIgZWwgY29tcGFydGlyIGVzY3JpcHRvcmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM0IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlNlbGVjY2lvbmkgbCfDoHJlYSBkZSBsYSBzZXZhIHBhbnRhbGxhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzUiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+Q2FudmlhciBhbXBsw6ByaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM2IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPiFIYSBmaW5hbGl0emF0IGFxdWVzdGEgc2Vzc2nDsyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM3IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkNhbnZpYXIgYWx0dXJhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczOCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5EZXNwbGHDp2FtZW50IGVpeCBYPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczOSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5EZXNwbGHDp2FtZW50IGVpeCBZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0MCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5BbXBsw6ByaWE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0MSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5BbHR1cmE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0MiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5MYSBjb25uZXhpw7MgaGEgZXN0YXQgdGFuY2FkYSBwZWwgc2Vydmlkb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQzIiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPkNhbmNlbMK3bGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NCIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5JbmljaWFyIEV4dGVybmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ1IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPlNpIHRhbmNhIGFxdWVzdGEgc2Vzc2nDsyBjb21wbGV0YW1lbnQsIG5vIHNlcsOgIHBvc3NpYmxlIHJlaW5pY2lhciBlbCB2aXNvciBkdXJhbnQgYXF1ZXN0YSBzZXNzacOzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDYiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+Q29uZmlybWFyIGVsIHRhbmNhbWVudCBkZSBsYSBzZXNzacOzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NyIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5Db21wYXJ0aXIgcGFudGFsbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ4IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPkdyYWJhciBzZXNzacOzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0OSIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPkNvLU5hdmVnYWNpw7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUwIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+SHVtLi4uIEZpcmVmb3ggZW4gd2luZG93cyBubyBtb3N0cmEgbGEgY28tbmF2ZWdhY2nDsyBhbWIgY2xhcmVkYXQuIFBlciBmYXZvciwgdXRpbGl0emkgYWx0cmUgbmF2ZWdhZG9yIG8gdGFuY2FtZW50IGFxdWVzdGEgZnVuY2lvbmFsaXRhdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUxIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+UHJldmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUyIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+U2lnw7xlbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUzIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+UmVjYXJyZWdhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTQiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5JbmljaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTUiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5DYXJyZWdhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTYiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5Db25maWd1cmFyIGVuIGVsIHNldSBwZXJmaWwgYXF1ZXN0IGxsb2MgY29tIGxhIHDDoGdpbmEgd2ViIHBlciBkZWZlY3RlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTciIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5Qcm92YXIgY29uZmlndXJhY2nDszwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTgiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5Db21wcm92aSBsYSBjb25maWd1cmFjacOzIGRlbCBzZXUgbWljcsOyZm9uIGkvbyBjw6BtZXJhIGFiYW5zIGQnZW50cmFyIGVuIGxhIHNhbGEuIFBlciBhIGFpeMOyIGdyYXZpIGR1cmFudCBhbGd1bnMgc2Vnb25zIGkgcmVwcm9kdWVpeGknbC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU5IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+Tm8gdG9ybmFyIGEgbW9zdHJhciBhcXVlc3QgdGVzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjAiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5DYW5jZWzCt2xhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjEiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5JbmljaWFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MiIgbmFtZT0iZWRpdCB2aWRlbyBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk5vIGRlbWFuYXIgZGUgbm91PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MyIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlJFQzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjQiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5QTEFZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NSIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlBvdCBjb250aW51YXIgc2Vuc2UgZmVyIGxhIGNvbXByb3ZhY2nDsyBzaSBubyBkZXNpdGphIHB1YmxpY2FyIGxhIGltYXRnZSBpL28gZWwgc28uIEVscyBwYXJ0aWNpcGFudHMgc2Vuc2Ugw6B1ZGlvIG8gc2Vuc2UgdsOtZGVvIHBvZGVuIGVuIHRvdCBjYXMgdXRpbGl0emFyIGxhIHBpc3NhcnJhLCBjb21wYXJ0aXIgZWwgc2V1IGVzY3JpcHRvcmkgbyBlbnZpYXIgbWlzc2F0Z2VzIHV0aWxpdHphbnQgZWwgeGF0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjYiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5TVE9QPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NyIgbmFtZT0iNzY3Ij4KKyAgICA8dmFsdWU+TWVkaWRvciBkZSBOaXZlbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY4IiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+UHJlc3Npb25pIEluaWNpYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY5IiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+SW5pY2lhciBDb25mZXLDqG5jaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzcwIiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+SW5pY2lhciBFc2RldmVuaW1lbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzcxIiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+QW5hciBhIGxhIFNhbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzcyIiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+Q29tcHJvdmFyIENvbmZpZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzczIiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+SW5pY2lhciBDb25mZXJlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc0IiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+SW5zdHJ1Y2Npb25zIENvbmZlcsOobmNpYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc1IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+SW5pY2lhciBHcmF2YWNpw7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc2IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+Tm8gbW9zdHJhciBlbCB0ZXN0IGRlIGdyYXZhY2nDsyBkJ8OgdWRpbyAvdsOtZGVvIGFiYW5zIGQnZW50cmFyIGVuIHVuYSBDb25mZXLDqG5jaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc3IiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+U2FsYXMgcMO6YmxpcXVlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzgiIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT5MZXMgc2FsZXMgcMO6YmxpcXVlcyBzw7NuIGFjY2Vzc2libGVzIHBlciBhIHRvdHMgZWxzIHVzdWFyaXMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3OSIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPlNhbGFzIHByaXZhZGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MCIgbmFtZT0iUHJpdmF0ZSBSb29tcyI+CisgICAgPHZhbHVlPkxlcyBzYWxlcyBwcml2YWRlcyBzw7NuIGFjY2Vzc2libGVzIG5vbcOpcyBwZXIgYWxzIHVzdWFyaXMgZGUgbGEgbWF0ZWl4YSBvcmdhbml0emFjacOzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODEiIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT5MZXMgbWV2ZXMgc2FsZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgyIiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+TGVzIHNhbGVzIGVuIGFxdWVzdGEgc2VjY2nDsyBzw7NuIHBlciBhIMO6cyBwZXJzb25hbC4gRXMgY3JlZW4gdXRpbGl0emFudCBlbCBjYWxlbmRhcmkgaSB0ZW5lbiB1bmEgZGF0YSBkJ2luaWNpIGkgZGUgZmluYWxpdHphY2nDsy4gTm9tw6lzIGVzIG1vc3RyZW4gZW4gYXF1ZXN0YSBzZWNjacOzIGR1cmFudCBsJ2ludGVydmFsIHRlbXBvcmFsIGRlIHZhbGlkZXNhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODMiIG5hbWU9InJlc3RyaWN0ZWQgcm9vbSI+CisgICAgPHZhbHVlPkhhIGRlIHNlciBtb2RlcmFkb3IgcGVyIGEgZXhlY3V0YXIgYXF1ZXN0YSBhY2Npw7MuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NCIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT5Tb2zCt2xpY2l0YXIgbGEgbW9kZXJhY2nDszwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODUiIG5hbWU9Im1lbnUgb3B0aW9uIj4KKyAgICA8dmFsdWU+U29swrdsaWNpdGFyIGFjY8OpcyBhIGxhIHBpc3NhcnJhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NiIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT5Tb2zCt2xpY2l0YXIgYWNjw6lzIGEgbGEgY8OgbWVyYS9taWNyw7Jmb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg3IiBuYW1lPSJlcnJvciBtZXNzYWdlIHNvYXAgc2VjdXJlIGxvZ2luIj4KKyAgICA8dmFsdWU+TCdhdXRlbnRpY2FjacOzIGQnYXF1ZXN0YSBzZXNzacOzIGphIGhhIGVzdGF0IHV0aWxpdHphZGEuIE5vIHBvdCBmZXItc2UgZHVlcyB2ZWdhZGVzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODgiIG5hbWU9ImRhc2hib2FyZCBidXR0b24iPgorICAgIDx2YWx1ZT5JTklDSUFSPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4OSIgbmFtZT0iZXhpdCBjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+U09SVElSPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5MCIgbmFtZT0iY29uZmVyZW5jZSB2aWV3Ij4KKyAgICA8dmFsdWU+wr9EZXNpdGphIHJlYWxtZW50IHNvcnRpcj8gw4lzIGNvbnZlbmllbnQgcXVlIGFiYW5zIGVzYm9ycmkgZWxzIGRvY3VtZW50cyBwdWphdHMsIGxhIHBpc3NhcnJhIG8gbCdoaXN0b3JpYWwgZGVsIHhhdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkxIiBuYW1lPSJjb25mZXJlbmNlIHZpZXciPgorICAgIDx2YWx1ZT5Tb3J0aXIgZGUgbGEgY29uZmVyw6huY2lhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5MiIgbmFtZT0ibWFpbiBtZW51Ij4KKyAgICA8dmFsdWU+U2FsZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkzIiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT5TZWxlY2Npb25pIHVuYSBzYWxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5NCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5IaSBoYSB1biBlc2RldmVuaW1lbnQgc2Vuc2UgZ3VhcmRhciBlbiBlbCBjYWxlbmRhcmkuIFBlciBmYXZvciwgZ3VhcmRpJ2wgbyBiw6kgZXNib3JyaSdsLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTUiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+wqFQZXIgZmF2b3IsIGFmZWdleGkgYWxtZW55cyBhIHVuIHBhcnRpY2lwYW50ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTYiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+wr9SZWFsbWVudCBkZXNpdGphIGVzYm9ycmFyIGFxdWVzdCBlc2RldmVuaW1lbnQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5NyIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5BdmlzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5OCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5hZmVnaXIgZXZlbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk5IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPmRpYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDAiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+c2V0bWFuYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDEiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+bWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMiIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5EZXNjcmlwY2nDszwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDMiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QXNpc3RlbnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FLCBsYSBzZXZhIFBsYXRhZm9ybWEgV2ViIGRlIFZpZGVvY29uZmVyw6huY2lhLiBOb23DqXMgc2VndWVpeGkgbGVzIGluc3RydWNjaW9ucywgcHJlc3Npb25pIGVsIGJvdMOzIHBlciBhIGluaWNpYXIgaW1tZWRpYXRhbWVudCBvIHZhZ2kgYWwgQ2FsZW5kYXJpIHBlciBhIHByb2dyYW1hciB1bmEgVHJvYmFkYSBtw6lzIGVuZGF2YW50LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDUiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPlByb2dyLiBUcm9iYWRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNiIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlBlciBhIHBsYW5pZmljYXIgdW5hIGNvbmZlcsOobmNpYSwgYWZlZ2VpeGkgdW4gbm91IEVzZGV2ZW5pbWVudCBlbiBlbCBDYWxlbmRhcmkuIFBlciBhIGNhZGEgRXNkZXZlbmltZW50IGVzIGNyZWFyw6AgYXV0b23DoHRpY2FtZW50IHVuYSBTYWxhIGRlICh2w61kZW8pY29uZmVyw6huY2lhLiBWb3N0w6ggaSBsYSByZXN0YSBkJ2Fzc2lzdGVudHMgcmVicmFuIHVuIGNvcnJldSBhbWIgdW4gZW5sbGHDpyBkZSBsYSBzYWxhLiAmbHQ7YnIvJmd0OyZsdDtici8mZ3Q7UG90IGVzY29sbGlyIGVudHJlIGRpZmVyZW50cyB0aXB1cyBkZSBzYWxlcyBhbWIgZGlmZXJlbnRzIGRpc3NlbnlzIGkgc2lzdGVtZXMgZGUgbW9kZXJhY2nDsy4gVGFtYsOpIHBvdCBlc2NvbGxpciBlbnRyZSBkaWZlcmVudHMgdGlwdXMgZGUgbm90aWZpY2FjacOzIGRlIGNvcnJldSBxdWUgcydlbnZpZW4gZW4gY2FkYSBlc2RldmVuaW1lbnQgZGVsIGNhbGVuZGFyaS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA3IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+wr9OZWNlc3NpdGEgYWp1ZGE/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwOCIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlJlc3RyaW5naXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA5IiBuYW1lPSJsemNhbGVuZGVyIj4KKyAgICA8dmFsdWU+QnVzY2FyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMCIgbmFtZT0ibHpjYWxlbmRlciI+CisgICAgPHZhbHVlPkFmZWdpcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTEiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5ObyBoaSBoYSBjYXAgdXN1YXJpIHNlbGVjY2lvbmF0LiBTZWxlY2Npb25pIHByaW1lciB1biDDrXRlbSBkZSBsYSBsbGlzdGEgaSBwcmVtaSBhIEFmZWdpci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEyIiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QWZlZ2lyIGFzaXN0ZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMyIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPkd1YXJkYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE0IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RXNib3JyYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE1IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RGV0YWxscyBkZSBsJ0VzZGV2ZW5pbWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTYiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5Nb2RlcmFkb3JzIHBlciBkZWZlY3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxNyIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPlN1cGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxOCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPklEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxOSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPk5vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjAiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5FbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjEiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5BZmVnaXIgbm91IE1vZGVyYWRvciBwZXIgZGVmZWN0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjIiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT7Cv8OJcyBzdXBlcm1vZGVyYWRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjMiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5TaSBsYSBzYWxhIGVzdMOgIG1vZGVyYWRhLCBxdWkgc2lndWkgamEgbW9kZXJhZG9yIHNlZ3VpcsOgIHNlbnQtbG8uIFNpIG5vIGRlc2l0amEgcXVlIHNpZ3VpIGFpeMOtLCBpIG5vbcOpcyB2b2wgcXVlIGRldGVybWluYXQgdXN1YXJpIHNpZ3VpIGVsIG1vZGVyYWRvciwgdXRpbGl0emkgbCdvcGNpw7MgZGUgTW9kZXJhZG9yIHBlciBkZWZlY3RlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjQiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5VbiBzdXBlcm1vZGVyYWRvciDDqXMgc2VtcHJlIGVsIG1vZGVyYWRvciBkJ3VuYSBzYWxhIHF1YW4gZW50cmEgZW4gZWxsYS4gQSBtw6lzLCBuaW5nw7ogcG90IGxsZXZhci1saSBsYSBtYXJjYSBkZSBtb2RlcmFjacOzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkFwbGljYXIgc3VwZXJtb2RlcmFjacOzbiBhIGwndXN1YXJpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkxsZXZhciBzdXBlcm1vZGVyYWNpw7NuIGEgbCd1c3Vhcmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjgiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5TaSBhZmVnaXggdW5hIG9yZ2FuaXR6YWNpw7MgYSBsYSBzYWxhLCBub23DqXMgZWxzIHVzdWFyaXMgZCdhcXVlc3RhIG9yZ2FuaXR6YWNpw7MgdGluZHJhbiBhY2PDqXMgYSBsYSBtYXRlaXhhIChhaXjDsiBub23DqXMgw6lzIHbDoGxpZCBzaSBsYSBtYXJjYSBkZSBQw7pibGljYSBlc3TDoCBjb25maWd1cmFkYSBjb20gZmFsc2EpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyOSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPk1vZGVyYWNpw7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODMwIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+TGltaXRhY2lvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODMxIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+T3JnYW5pdHphY2nDszwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzIiIG5hbWU9ImNvbmZpcm0gYWN0aW9uIj4KKyAgICA8dmFsdWU+wr9Fc3TDoCBWw6guIHNlZ3VyPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzMiIG5hbWU9ImNvbmZpcm0gZGVsZXRlIj4KKyAgICA8dmFsdWU+UmVhbG1lbnQgZGVzaXRqYSBlc2JvcnJhciBhcXVlc3Qgw610ZW0/IEhhIGRlIHByw6ltZXIgZW4gZWwgYm90w7MgZGUgZ3VhcmRhciBwZXIgYSBlbW1hZ2F0emVtYXIgZWxzIGNhbnZpcyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM0IiBuYW1lPSJ1c2VyIGNob29zZSBlcnJvciI+CisgICAgPHZhbHVlPk5vIGhpIGhhIGNhcCB1c3Vhcmkgc2VsZWNjaW9uYXQuIFBlciBmYXZvciwgc2VsZWNjaW9uaSdsIHByaW1lci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM1IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+QWZlZ2lyIHVuIG5vdSBtb2RlcmFkb3IgcGVyIGRlZmVjdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM2IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+wr9EZXNpdGphIGFmZWdpciB1bmEgbWFyY2EgZGUgc3VwZXJtb2RlcmFkb3IgYSBhcXVlc3QgdXN1YXJpPyBSZWNvcmRpIHF1ZSB1biBzdXBlcm1vZGVyYWRvciBubyBub23DqXMgw6lzIGVsIG1vZGVyYWRvciBkJ3VuYSBzYWxhLCBzaW7DsyBxdWUgYSBtw6lzIGNhcCBhbHRyZSBtb2RlcmFkb3IgcG9kcsOgIGVzYm9ycmFyIGxhIG1hcmNhIGRlIG1vZGVyYWNpw7MuIE5lY2Vzc2l0YSBndWFyZGFyIGwnb2JqZWN0ZSBzYWxhIHBlciBhIGVtbWFnYXR6ZW1hciBhcXVlc3RlcyBjb25maWd1cmFjaW9ucy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+wr9EZXNpdGphIGVsaW1pbmFyIGxhIG1hcmNhIGRlIHN1cGVybW9kZXJhZG9yIGEgYXF1ZXN0IHVzdWFyaT8gTmVjZXNzaXRhIGd1YXJkYXIgbCdvYmplY3RlIHNhbGEgcGVyIGEgZW1tYWdhdHplbWFyIGFxdWVzdGVzIGNvbmZpZ3VyYWNpb25zLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzgiIG5hbWU9InN1cGVyIG1vZGVyYXRvciI+CisgICAgPHZhbHVlPkFxdWVzdCB1c3VhcmkgdMOpIGVsIHJvbCBkZSBzdXBlcm1vZGVyYWRvci4gTm8gcG90IGxsZXZhci1saSBsYSBtYXJjYSBkZSBtb2RlcmFjacOzIGEgdW4gc3VwZXJtb2RlcmFkb3IuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzOSIgbmFtZT0iY29uZmlybSBkZWxldGUiPgorICAgIDx2YWx1ZT7Cv1JlYWxtZW50IGRlc2l0amEgZXNib3JyYXIgYXF1ZXN0IEZpdHhlci9EaXJlY3Rvcmk/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0MCIgbmFtZT0iY29uZmlybSBkZWxldGUiPgorICAgIDx2YWx1ZT7Cv0VzYm9ycmFyIEZpdHhlci9EaXJlY3RvcmkgPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDEiIG5hbWU9InNhbHV0YXRpb24iPgorICAgIDx2YWx1ZT5TcmEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0MiIgbmFtZT0ic2FsdXRhdGlvbiI+CisgICAgPHZhbHVlPkQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0MyIgbmFtZT0icHJvcGVydHkgcGFuZWwgd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPlByb3BpZXRhdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ0IiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+TW9zdHJhciBsYSBwb3NpY2nDsyBkZWwgcmF0b2zDrSBhbHMgcGFydGljaXBhbnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NSIgbmFtZT0icHVibGlzaCBvcHRpb24iPgorICAgIDx2YWx1ZT5Db21wYXJ0aXIgw4B1ZGlvIGFtYiBlbCBhcHBsZXQgU0lQPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NiIgbmFtZT0icHVibGlzaCBvcHRpb24iPgorICAgIDx2YWx1ZT5Db21wYXJ0aXIgw4B1ZGlvIGFtYiBTSVAgaSBWw61kZW8gYW1iIEZsYXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NyIgbmFtZT0iZG9jdW1lbnQgcGFuZWwiPgorICAgIDx2YWx1ZT5QYW50YWxsYSBjb21wbGV0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDgiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlZldXJlIHBhbnRhbGxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0OSIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+RWwgdXN1YXJpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MCIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+ZGVzaXRqYSBjb21wYXJ0aXIgbGEgc2V2YSBwYW50YWxsYS4gRGVzaXRqYSB2aXN1YWxpdHphci1sYT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUxIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5UYW5jYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUyIiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+Wm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTMiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5MYSBzZXNzacOzIGhhIGVzdGF0IHRhbmNhZGEgcGVyIHF1aSBjb21wYXJ0aWEgcGFudGFsbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU0IiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+UGF1c2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU1IiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+Q29tcGFydGlyIHBhbnRhbGxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1NiIgbmFtZT0icHJlc2VudGVyIG1pbmkgaWNvbiI+CisgICAgPHZhbHVlPk1pbmltaXR6YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU3IiBuYW1lPSJwcmVzZW50ZXIgbWluaSBpY29uIj4KKyAgICA8dmFsdWU+TWF4aW1pdHphcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTgiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlbDrWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTkiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkzDrW5pYSB0ZW1wb3JhbCBkZSBncmF2YWNpw7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYwIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5MZXMgbWV2ZXMgZ3JhYmFjaW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjEiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkdyYWJhY2lvbnMgcMO6YmxpY3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYyIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5JbmZvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+Tm9tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TG9uZ2l0dWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY1IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5EYXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UExBWTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjgiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlbDrWRlbyAtIFByaW5jaXBhbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjkiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkdyYXZhY2nDszwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzAiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlBvdCBncmFiYXIgaSBjb21wYXJ0aXIgbGEgc2V2YSBwYW50YWxsYSBhbGhvcmEuIFBlciBhIHBlcm1ldHJlIHF1ZSB1bnMgYWx0cmVzIHZlZ2luIGxhIHNldmEgcGFudGFsbGEsIHByZW1pIGVuIGVsIGJvdMOzIC1pbmljaWFyLSBkZSBsYSBwYXJ0IHN1cGVyaW9yLiBQZXIgYSBncmF2YXIgbGEgc2Vzc2nDsywgw6lzIHN1ZmljaWVudCBhbWIgcHLDqW1lciBhIGluaWNpYXIgZW5yZWdpc3RyYW1lbnQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3MSIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+SW5pY2lhciBHcmF2YWNpw7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcyIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5QYXJhciBHcmF2YWNpw7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODczIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5EZXNjYXJyZWdhciBsJ2FyeGl1IEZMVjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzQiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlNhbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc1IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5QbGF5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3NiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+U3RvcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzciIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkwndXN1YXJpIHTDqSBlbCBtaWNyw7Jmb24gYWN0aXZhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+RGV0ZW5pciBjb21wYXJ0aXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc5IiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPlBlcm1ldHJlIHByZWd1bnRlcyBkZSBsJ3VzdWFyaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODAiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+RGVzYWN0aXZpIGFpeMOyIHBlciBhIGltcGVkaXIgcXVlIGNhcCB1c3VhcmkgbGkgbW9sZXN0aSBlbiBhcXVlc3RhIHNhbGEuIEFsIGZlci1sbywgZWwgYm90w7MgcGVyIGEgc29swrdsaWNpdGFyIGxhIG1vZGVyYWNpw7Mgbm8gc2Vyw6AgdmlzaWJsZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgxIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPlBlcm1pc3NvczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODIiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkRlc2NhcnJlZ2FyIGNvbSBBVkk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgzIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5GTFY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg0IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5BVkk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg1IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5SYXcgU2NyZWVudmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Ob23DqXMgYXVkaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg3IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5IaSBoYSBoYWd1dCBlcnJvcnMgbWVudHJlIGVzIHByb2Nlc3NhdmEgZ3JhdmFjacOzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODgiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkxhIGdyYXZhY2nDsyBlbmNhcmEgbm8gYXF1ZXN0YSBsbGlzdGEuIEludGVudGknbCBkZSBub3UgZW4gdW4gcGFyZWxsIGRlIG1pbnV0cy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg5IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Mb2c6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TWlzc2F0Z2UgZGVsIGdyYWJhZG9yOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTEiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk9rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MiIgbmFtZT0ic2lwIGFwcGxldCI+CisgICAgPHZhbHVlPkVsIGFwcGxldCBTSVAgbm8gZXN0w6AgbGxlc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkzIiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+Q29uZmlndXJhY2nDsyBkZWwgY29tcHRlIFNJUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTQiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5Db25maWd1cmFjacOzbiBTSVAgcGFyYSBjYWRhIHVzdWFyaW8uIFB1ZWRlIGFjdGl2YXIgbyBkZXNhY3RpdmFyIFNJUCBkZXNkZSBBZG1pbmlzdHJhY2nDs24gJmd0OyBDb25maWd1cmFjacOzbiAoS2V5OiBlbmFibGVfc2lwKS4gTG9zIGRhdG9zIFNJUCBkZSBjYWRhIHVzdWFyaW8gZGViZXLDrWFuIGNyZWFyc2UgYXV0b23DoXRpY2FtZW50ZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk1IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+VXN1YXJpIFNJUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTYiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5Db250cmFzZW55YSBTSVA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk3IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+SUQgQXV0LVNJUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTgiIG5hbWU9InNpcCBzdGF0dXMgbWVzc2FnZSI+CisgICAgPHZhbHVlPkwnYXV0ZW50aWNhY2nDsyBTSVAgaGEgZmFsbGF0LiBIYXVyaWEgZGUgY29tcHJvdmFyIGxlcyBkYWRlcyBkJ2F1dGVudGljYWNpw7MgZGVsIHNldSBwcm92ZcOvZG9yIFNJUCBpIGRlbCBjb21wdGUgU0lQIGRlIGNhZGEgdXN1YXJpLiBDb20gYWRtaW5pc3RyYWRvciwgcG9kcsOgIGF1dGVudGljYXItc2UgaSBjb21wcm92YXIgbGEgY29uZmlndXJhY2nDsy4gU2kgZW50cmEgY29tIHVzdWFyaSBvIGNvbSBtb2RlcmFkb3IsIHF1YWxzZXZvbCBpbnRlbnQgZCdpbnRlcmFjY2nDsyBzZXLDoCBibG9xdWVqYXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5OSIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TCdhdXRlbnRpY2FjacOzIFNJUCBoYSBmYWxsYXQuIENvbnRhY3RpIGFtYiBlbCBzZXJ2ZWkgdMOoY25pYy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAwIiBuYW1lPSJzaXAgc3RhdHVzIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BdXRlbnRpY2FudCBlbiBsYSBwb3J0YSBkJ2VubGxhw6cgU0lQLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwMSIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QXV0ZW50aWNhbnQgZW4gbGEgcG9ydGEgZCdlbmxsYcOnIFNJUC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDIiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk1vc3RyYXIgTG9nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwMyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TWlzc2F0Z2VzIExvZyBkZWwgcHJvY8OpcyBkZSBwb3N0Z3JhdmFjacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDQiIG5hbWU9InNpcCBsb2dpbiI+CisgICAgPHZhbHVlPk1pc3NhdGdlIGRlIGFwcGxldCBTSVA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA1IiBuYW1lPSJzaXAgbG9naW4iPgorICAgIDx2YWx1ZT5FbCBhcHBsZXQgU0lQIG5vIGVzdMOgIGxsZXN0LiBQZXIgZmF2b3IsIGFjY2VwdGkgZWwgYXBwbGV0IGkgcHJlbWkgT0suPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwNiIgbmFtZT0ibW9kZXJhdG9yIHBvcCB1cCI+CisgICAgPHZhbHVlPlNvbMK3bGljaXRhciBsYSBtb2RlcmFjacOzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwNyIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPkd1YXJkYXIgY2FudmlzIGRlIGxhIGNpdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA4IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+TGEgY2l0YSBoYSBlc3RhdCBjYW52aWFkYS4gRGVzaXRqYSBndWFyZGFyIGFxdWVzdHMgY2FudmlzPyBUb3RzIGVscyBwYXJ0aWNpcGFudHMgaW1wbGljYXRzIHJlYnJhbiB1biBjb3JyZXUgYW1iIGxhIGRhdGEgaSBob3JhIGFjdHVhbGl0emFkZXMgKGRlcGVuZW50IGRlbCB0aXB1cyBkZSBub3RpZmljYWNpw7MgZCdhcXVlc3RhIGNpdGEpLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDkiIG5hbWU9ImZsdiByZWNvcmRlciBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+UGVyIGFjY2VkaXIgYSBsZXMgZ3JhdmFjaW9ucyBxdWUgdGluZ3VpIHBlciBlbnRyYXIgZW4gbCdhcGxpY2FjacOzICRBUFBfTkFNRS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTEwIiBuYW1lPSJpbnRlcnZpZXcgdmlkZW8gcG9kIj4KKyAgICA8dmFsdWU+U2VsZWNjaW9uZXUgbCd1c3VhcmkgZCdhcXVlc3QgdsOtZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMSIgbmFtZT0iaW50ZXJ2aWV3IHZpZGVvIGNob29zZSB1c2VyIj4KKyAgICA8dmFsdWU+VXN1YXJpcyBkaXNwb25pYmxlcyBwZXIgYXF1ZXN0YSBQT0Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTEyIiBuYW1lPSJpbnRlcnZpZXcgaW5mbyI+CisgICAgPHZhbHVlPlZvc3TDqCDDqXMgdW4gbW9kZXJhZG9yIGVuIGFxdWVzdGEgZW50cmV2aXN0YS4gUG90cyBkZWNpZGlyIHF1aSBwYXJsYSBlbiBhcXVlc3RhIGVudHJldmlzdGEgaSB2b3N0w6ggcG90IGNvbWVuw6dhciAvIGF0dXJhciBsYSBncmF2YWNpw7MgZGUgbGEgc2Vzc2nDsy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTEzIiBuYW1lPSJpbnRlcnZpZXcgYnV0dG9uIHJlY29yZGluZyI+CisgICAgPHZhbHVlPkNvbWVuw6dhciBsYSBncmF2YWNpw7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE0IiBuYW1lPSJpbnRlcnZpZXcgYnV0dG9uIHJlY29yZGluZyI+CisgICAgPHZhbHVlPkF0dXJhciBsYSBncmF2YWNpw7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE1IiBuYW1lPSJpbnRlcnZpZXcgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPkxhIGdyYXZhY2nDsyBkZSBsJ2VudHJldmlzdGEgamEgaGEgY29tZW7Dp2F0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTYiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TGEgZ3JhdmFjacOzIHMnaGEgYXR1cmF0IG8gbm8gaGFuIGluaWNpYXQgZW5jYXJhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTciIG5hbWU9ImludGVydmlldyByZWNvcmRpbmcgbWVzc2FnZSI+CisgICAgPHZhbHVlPkxhIGdyYXZhY2nDsyBkJ2FxdWVzdGEgZW50cmV2aXN0YSBqYSBzJ2hhIGluaWNpYXQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxOCIgbmFtZT0iaW50ZXJ2aWV3IGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE5IiBuYW1lPSJpbnRlcnZpZXcgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSBwb3N0LXByb2Nlc3Npbmcgb2YgYW4gaW50ZXJ2aWV3IHRha2VzIDUgbWludXRlcyBwZXIgMSBtaW51dGUgaW50ZXJ2aWV3LiBUaGUgY3VycmVudCBwcm9ncmVzcyBvZiB0aGUgaW50ZXJ2aWV3IHBvc3QtcHJvY2Vzc2luZyB0cmFuc2NvZGluZyBpczo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIwIiBuYW1lPSJzaXAgY3JlYXRpb24iPgorICAgIDx2YWx1ZT5Zb3UgaGF2ZSB0byBlbnRlciB5b3VyIHBhc3N3b3JkIGFnYWluIHRvIGF1dG8gY3JlYXRlIHRoZSBTSVAgRGF0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjEiIG5hbWU9InNpcCBjcmVhdGlvbiI+CisgICAgPHZhbHVlPlJlLWdlbmVyYXRlIFNJUCBEYXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyMiIgbmFtZT0iZmlsZWV4cGxvcmVyIj4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBtb3ZlIHRoaXMgZmlsZSBvciBmb2xkZXIgaW50byBpdHMgb3duIHN1YiBmb2xkZXIhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyMyIgbmFtZT0iZmlsZSBleHBsb3JlciAiPgorICAgIDx2YWx1ZT5Ib21lIGRyaXZlIHNpemU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI0IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+UHVibGljIGRyaXZlIHNpemU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI1IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+TGljZW5zZSBTZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjYiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5Zb3UgY2FuIGVpdGhlciBiaW5kIHRoZSB1c2VyIHRvIGEgZXhwaXJlIERhdGUgb3IgdG8gYSBtYXhpbXVtIG51bWJlciBvZiBtaW51dGVzIHdoZW4geW91IGVuYWJsZSBsaWNlbnNpbmcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNyIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPkNoZWNrIGxpY2Vuc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI4IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+RmxhdHJhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI5IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+RXhwaXJlIGRhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMwIiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+U2Vjb25kcyBsZWZ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMSIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPlRvdGFsIHRpbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMyIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3VyIExpY2Vuc2UgaGFzIGV4cGlyZWQuIFlvdSBuZWVkIHRvIGJ1eSBuZXcgbWludXRlcyAoUGF5LXBlci1taW51dGUpIG9yIGEgdm9sdW1lIGZsYXRyYXRlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzMiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkNsaWNrIGFuZCBidXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM0IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5UaW1lIExlZnQgb24geW91ciBhY2NvdW50OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzUiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlVzZXIgTGljZW5zZSBJbmZvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzNiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+SW5mbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzciIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkNsb3NlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzOCIgbmFtZT0ibGljZW5zZS1pbmZvIj4KKyAgICA8dmFsdWU+WW91ciBsaWNlbnNlIGhhcyBleHBpcmVkLiBZb3UgbmVlZCBlaXRoZXIgdG8gYnV5IGEgbWludXRlIHBhY2thZ2UgKFBheS1wZXItbWludXRlKSBvciBhIHZvbHVtZSBmbGF0cmF0ZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM5IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5MaWNlbnNlIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91IGNhbiBlaXRoZXIgYnV5IG1pbnV0ZXMgdG8gbWFrZSBXZWItQ29uZmVyZW5jaW5nIChQYXktcGVyLW1pbnV0ZSkuJmx0O2JyLyZndDsmbHQ7YnIvJmd0OyBPciB5b3UgYnV5IGEgdm9sdW1lIGZsYXRyYXRlIGFib3V0IDMtMTIgbW9udGhzLiZsdDtici8mZ3Q7Jmx0O2JyLyZndDtTZW5kaW5nIGludml0YXRpb25zIChkaXJlY3QgbGlua3MgaW50byBDb25mZXJlbmNlIFJvb21zKSBvciBjcmVhdGluZyBjb25mZXJlbmNlIFJvb21zIHZpYSB0aGUgQ2FsZW5kYXIgd2l0aCBleHRlcm5hbCBVc2VycyBpcyBvbmx5IGFsbG93ZWQgd2l0aCBhIHZvbHVtZSBmbGF0cmF0ZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQxIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5CdXkgNjAgTWludXRlcyA5LDk5IEVVUk8gKDE2IENlbnQgcGVyIE1pbnV0ZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQyIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5CdXkgNSBob3VycyAxOSw5OSBFVVJPICg2IENlbnQgcGVyIG1pbnV0ZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQzIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5CdXkgMyBtb250aCBmb3IgMjksOTkgRVVSTyAoOSw5OSBFdXJvIHBlciBNb250aCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ0IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5CdXkgNiBtb250aCBmb3IgMzksOTkgRVVSTyAoNiw2NiBFdXJvIHBlciBtb250aCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ1IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5QYXktcGVyLW1pbnV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDYiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlZvbHVtZSBmbGF0cmF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDciIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdSBoYXZlIHVubGltaXRlZCBMaWNlbnNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0OCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91ciBsaWNlbnNlIHdpbGwgZXhwaXJlIGF0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDkiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdSBib3VnaHQgUGF5LXBlci1taW51dGUuIFlvdSBzdGlsbCBoYXZlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTAiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSBuZXcgY3JlZGl0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTEiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPldhbnQgeW91ciBvd24gU2VydmVyPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTIiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdSB3b3VsZCBsaWtlIHRvIGhhdmUgJEFQUF9OQU1FIGluc3RhbGxlZCBvbiB5b3VyIFNlcnZlciBvciBpbnRlZ3JhdGVkIGludG8geW91ciBNb29kbGUsIFN1Z2FyQ1JNLCBXZWJzaXRlIG9yIEludHJhbmV0PyBQcml6aW5ncyBzdGFydCBhdCA1MDAgRXVybyBwZXIgSW5zdGFsbGF0aW9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTMiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPk9yIHNlbmQgdXMgYSBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1NCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QW5zd2VyIHRvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTUiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPk1lc3NhZ2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1NiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+U2VuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTciIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkNsaWNrIGhlcmUgdG8gZ2V0IGNvbnRhY3QgSW5mbyBhbmQgUHJpemluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU4IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DcmVkaXQgQ2FyZCBEZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1OSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Rmlyc3RuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2MCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+TGFzdG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYxIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DcmVkaXQgQ2FyZCBUeXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2MiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+VklTQSBDYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2MyIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+TWFzdGVyQ2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjQiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkRpc2NvdmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2NSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+QW1lcmljYW4gRXhwcmVzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjYiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNyZWRpdCBDYXJkIE51bWJlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjciIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkV4cGlyYXRpb24gRGF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjgiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNhcmQgVmVyaWZpY2F0aW9uIE51bWJlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjkiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkJpbGxpbmcgQWRkcmVzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzAiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkFkZHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTcxIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTcyIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DaXR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MyIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q291bnRyeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzQiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlN0YXRlIChPbmx5IFVTKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzUiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlpJUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzYiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkFtb3VudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzciIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlN1Ym1pdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzgiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlN0ZXAgMTogJEFQUF9OQU1FIC0gUGF5bWVudCBGb3JtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3OSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+RU1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgwIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DbGljayAiQ2hlY2sgb3V0IHdpdGggUGF5cGFsIiB0byBwYXkuJmx0O2JyLyZndDsgUGF5cGFsIGFjY2VwdHMgVklTQSwgTWFzdGVyQ2FyZCwgRGlzY292ZXIgb3IgQW1lcmljYW4gRXhwcmVzcy4gJmx0O2JyLyZndDtJdCBkb2VzIG5vdCByZXF1aXJlIHRvIHNpZ24gdXAgd2l0aCBQYXlwYWwuICZsdDtici8mZ3Q7Q2l0aXplbnMgZnJvbSBHZXJtYW55IGNhbiBhbHNvIHBheSB3aXRoIGRpcmVjdCBkZWJpdCAoUGVyIExhc3RzY2hyaWZ0LUVpbnp1ZykuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+VGhhbmsgeW91IGZvciBidXlpbmcgJEFQUF9OQU1FLiAmbHQ7YnIvJmd0OyAmbHQ7YnIvJmd0OyBBcyBzb29uIGFzIHdlIHJlY2VpdmVkIHRoZSBwYXltZW50IHlvdXIgYWNjb3VudCB3aWxsIGJlIHVwZGF0ZWQuJmx0O2JyLyZndDsgWW91IHdpbGwgcmVjZWl2ZSBhbiBFTWFpbCB3aXRoIHlvdXIgaW52b2ljZSBhcyBQREYuJmx0O2JyLyZndDtZb3UgY2FuIGFsc28gY2hlY2sgY3VycmVudCBhbmQgcGFzdCB0cmFuc2FjdGlvbnMgaW4geW91ciBwcm9maWxlIHNldHRpbmdzLiZsdDtici8mZ3Q7Jmx0O2JyLyZndDsmbHQ7YnIvJmd0O1lvdSBjYW4gY2xvc2UgdGhpcyBicm93c2VyIHdpbmRvdy90YWIgbm93IGFuZCByZXR1cm4gdG8gJEFQUF9OQU1FLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODIiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlN1Ym1pdCBhbmQgQnV5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODMiIG5hbWU9InBheW1lbnQtZnJvbSI+CisgICAgPHZhbHVlPkNsaWNrIGFuZCBCdXkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4NCIgbmFtZT0icGF5bWVudC1mcm9tIj4KKyAgICA8dmFsdWU+U3RlcCAzOiAkQVBQX05BTUUgUGF5bWVudCAtIENoZWNrIG9yZGVyIGFuZCBidXkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4NSIgbmFtZT0icGF5bWVudC1mcm9tIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODYiIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPlBheW1lbnQgcmVjZWl2ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4NyIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+SGksPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4OCIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+V2UgaGF2ZSByZWNlaXZlZCB5b3VyIHBheW1lbnQuIFlvdXIgdXNlciBwcm9maWxlIGlzIHVwZGF0ZWQgbm93LiBTZWUgYXR0YWNoZWQgeW91ciBJbnZvaWNlLiBUaGUgSW52b2ljZSBhbmQgYWxsIHBhc3QgSW52b2ljZSBjYW4gYWxzbyBiZSBkb3dubG9hZGVkIGluIHlvdXIgdXNlciBwcm9maWxlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODkiIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPlRoYW5rIHlvdSBmb3IgdXNpbmcgJEFQUF9OQU1FITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTAiIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPlBheW1lbnQgUmVjZWl2ZWQgJEFQUF9OQU1FIC08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkxIiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+UGF5bWVudCBhbmQgVHJhbnNhY3Rpb24gU3RhdHVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MiIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPlRyYW5zY2F0aW9uIEhhc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkzIiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+TWludXRlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTQiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Nb250aHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk1IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+RVVSPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NiIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPlN0YXR1czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTciIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5JbnZvaWNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5OCIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTkiIG5hbWU9ImVycm9yLWxpY2Vuc2UtZmxhdCI+CisgICAgPHZhbHVlPllvdSBuZWVkIHRvIGJ1eSBhIHZvbHVtZSBmbGF0cmF0ZSB0byBiZSBhYmxlIHRvIHNlbmQgaW52aXRhdGlvbnMgb3IgY3JlYXRlIG1lZXRpbmdzIHZpYSB0aGUgY2FsZW5kYXIuIFdpdGggUGF5LXBlci1taW51dGUgaXQgaXMgb25seSBwb3NzaWJsZSBmb3IgeW91IHRvIGFjY2VzcyAkQVBQX05BTUUuIFlvdSBjYW5ub3QgYWxsb3cgM3RoIFBhcnRpZXMgdG8gYWNjZXNzIGEgTWVldGluZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwMCIgbmFtZT0iZXJyb3IgdXNlciI+CisgICAgPHZhbHVlPlRoaXMgRW1haWwgaXMgYWxyZWFkeSB1c2VkIGJ5IGFub3RoZXIgVXNlci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwMSIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlNJUC1TZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAyIiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+VGhlIENvbmZlcmVuY2UgTnVtYmVyIGFuZCBQSU4gaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIHZpYSB0aGUgT3BlblhHIFJQQy1HYXRld2F5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDMiIG5hbWU9InJvb20tYWRtaW4iPgorICAgIDx2YWx1ZT5TSVAgTnVtYmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDQiIG5hbWU9InJvb20tYWRtaW4iPgorICAgIDx2YWx1ZT5QSU48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNSIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkNsZWFyIG9iamVjdHMgb24gY3VycmVudCBzbGlkZSBvbmx5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA2IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+T25seSB0aGUgVVJMIGVudGVyZWQgaW4gdGhlIFN0YXR1cyBiYXIgaXMgc2VuZCB0byBwYXJ0aWNpcGFudHMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5NYWtlIFRlYW0tUm9vbXMgW0JyZWFrb3V0IHNlc3Npb25dPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DaG9vc2UgdXNlcnMgZm9yIGEgbmV3IFRlYW0tUm9vbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPllvdSBjYW4gY2hvb3NlIHVzZXJzIGhlcmUgYW5kIGNyZWF0ZSBhIG5ldyBDb25mZXJlbmNlIFJvb20gKCJUZWFtIFJvb20iKSBmb3IgdGhlbS4gVGhlIGNob3NlbiB1c2VycyB3aWxsIGF1dG9tYXRpY2FsbHkgc3dpdGNoIHRvIHRoZSBuZXcgVGVhbS1Sb29tIG9yIGdldCBhIG5vdGlmaWNhdGlvbi4gVGVhbS1Sb29tIE1vZGVyYXRvcnMgd2lsbCBnZXQgYWRkaXRpb25hbGx5IGEgbGlzdCBvZiBjdXJyZW50IHJvb21zIHNvIHRoYXQgdGhleSBjYW4gc3dpdGNoIHRvIGVhY2ggcm9vbSBpZiB0aGVyZSBhcmUgaXMgbmVlZCBmb3IgYSBNb2RlcmF0b3IuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Vc2VybmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDExIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VXNlcnMgZm9yIHRoZSBuZXcgVGVhbS1Sb29tOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q3JlYXRlIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DaG9vc2UgYXQgbGVhc3Qgb25lIHVzZXIgZm9yIHRoZSBUZWFtLVJvb20hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5BZGQgdXNlciB0byB0ZWFtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5SZW1vdmUgdXNlciBmcm9tIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VXNlciBpcyBUZWFtLVJvb20gTW9kZXJhdG9yIChIZSBpcyBhYmxlIHRvIG1hbmFnZSBUZWFtLVJvb21zIGFuZCB1c2VycyBvZiB0aGUgVGVhbS1Sb29tIGNhbiBhc2sgaGltIHRvIGNvbWUgaW5zaWRlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Um9vbXR5cGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPklmIHlvdSBjaGVjayAiRm9yY2UgdXNlciB0byBzd2l0Y2ggdG8gbmV3IFRlYW0tUm9vbSIgYWxsIGNob3NlbiB1c2VycyB3aWxsIGF1dG9tYXRpY2FsbHkgc3dpdGNoIHRvIHRoZSBuZXdseSBjcmVhdGVkIFRlYW0tUm9vbS4gT3RoZXJ3aXNlIHRoZXkgZ2V0IGEgbm90aWZpY2F0aW9uIHdpdGggYSBidXR0b24gdGhhdCB0aGV5ICZsdDtpJmd0O2NhbiZsdDsvaSZndDsgc3dpdGNoIHRvIHRoZSBuZXcgcm9vbS4gVGVhbS1Nb2RlcmF0b3JzIGFsd2F5cyBoYXZlIHRoZSBmcmVlIGNob2ljZSB0byBtYW5hZ2UgdGhlIFRlYW0tUm9vbXMgYW5kIHN3aXRjaCBiZXR3ZWVuIHRoZW0uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5NYW5hZ2UgVGVhbS1Sb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+WW91IGNhbiBzd2l0Y2ggaGVyZSBiZXR3ZWVuIGFsbCBUZWFtLVJvb21zIHRoYXQgeW91IGFyZSBhc3NpZ25lZCBhcyBUZWFtLVJvb20gTW9kZXJhdG9yLiBVc2VycyBpbnNpZGUgdGhlIFRlYW0tUm9vbSBjYW4gc2VuZCB5b3UgYSBtZXNzYWdlLCBmb3IgZXhhbXBsZSB0byBhc2sgeW91IHRvIGNvbWUgdG8gdGhlaXIgcm9vbSBhbmQgaGVscCB0aGVtLiBZb3UgY2FuIGFsc28gdGVybWluYXRlIHRoZSBUZWFtLVJvb20gYW5kIGFsbCBVc2VycyB3aWxsIGJlIGxvZ2dlZCBvdXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Gb3JjZSB1c2VyIHRvIHN3aXRjaCB0byBuZXcgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DcmVhdGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VXNlcnMgYXZhaWxhYmxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5BZGQgYSB1c2VyIHdpdGggdGhlIHBsdXMgZnJvbSB0aGUgbGVmdCBvciByZW1vdmUgaXQgd2l0aCB0aGUgY3Jvc3MgZnJvbSB0aGUgcmlnaHQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4xKSBUZWFtLVJvb20gc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjIpIEFkZCB1c2VycyB0byB0aGUgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb20gTmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DaGFuZ2UgdG8gdGhlIFJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlN3aXRjaCB0byB0aGlzIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVybWluYXRlIFRlYW0tUm9vbSBhbmQgbG9nb3V0IGFsbCBVc2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TmV3IFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGhlcmUgaXMgYSBuZXcgVGVhbS1Sb29tIGF2YWlsYWJsZSBmb3IgeW91LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U3dpdGNoIHRvIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVhbS1Sb29tIEFjdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPllvdSBjYW4gcmUtb3BlbiB0aGlzIHdpbmRvdyB2aWEgdGhlIG1haW4gbWVudSBpbiB0aGUgIkFjdGlvbnMiIHNlY3Rpb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5TZW5kIG1lc3NhZ2UgdG8gVGVhbS1Sb29tIE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQ0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TmV3IFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQ1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGhlcmUgaXMgYSBuZXcgVGVhbS1Sb29tIGF2YWlsYWJsZS4gWW91IGNhbiBzd2l0Y2ggdG8gdGhhdCBSb29tLiBUZWFtLVJvb21zIGFyZSBsaWtlICJXb3JrZ3JvdXBzIiB3aXRoIGFkZGl0aW9uYWxseSBwb3NzaWJpbGl0aWVzIHRvIGFzayB0aGUgVGVhbS1Sb29tIE1vZGVyYXRvciBmb3IgaGVscC4gWW91ciBUZWFtLVJvb21zIGFyZSBhbHNvIGF2YWlsYWJsZSBpbiB0aGUgIk15IE1lZXRpbmdzIiBzZWN0aW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQ2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U3dpdGNoIHRvIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQ3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q3JlYXRlZCBieTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0OCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW0tUm9vbSBuYW1lOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQ5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGhpcyBXaW5kb3cgd2lsbCBzdGF5IG9wZW4gZXZlbiBpZiB5b3UgbGVhdmUgdGhlIHJvb20hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Vc2VycyBmb3IgdGhpcyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1MSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjMpIE90aGVyIFRlYW0tUm9vbXMgdGhhdCB5b3UgY291bGQgc3dpdGNoIHRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5TZW5kIGEgbWVzc2FnZSB0byB0aGUgVGVhbS1Sb29tIE1vZGVyYXRvcnMuIEZvciBleGFtcGxlIGlmIHlvdSBuZWVkIGhlbHAgaW4gTW9kZXJhdGluZyB0aGUgUm9vbSBvciBpZiB5b3UgaGF2ZSBhIHF1ZXN0aW9uIGFib3V0IHRoZSB0b3BpYy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1MyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlNlbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1NCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjIpIFVzZXJzIHRoYXQgYXJlIGludml0ZWQgdG8gdGhpcyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1NSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPklzIFRlYW0tUm9vbSBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1NiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoZXNlIGFyZSBhbGwgdXNlcnMgdGhhdCB0aGUgbW9kZXJhdG9yIGhhcyBpbnZpdGVkIHRvIHRoaXMgVGVhbS1Sb29tLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGhlcmUgaXMgbm8gVGVhbS1Nb2RlcmF0b3IgbG9nZ2VkIGluIGF0IHRoZSBtb21lbnQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5QbGVhc2UgZW50ZXIgYSBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5QbGVhc2UgaGVscCB1cywgd2UgaGF2ZSBhIHByb2JsZW0gaW4gb3VyIFRlYW0tUm9vbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2MCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkEgdXNlciBmcm9tIGEgVGVhbS1Sb29tIHJlcXVlc3RzIHlvdXIgaGVscC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2MSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW0tUm9vbSByZXF1ZXN0IGZvciBoZWxwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5NZXNzYWdlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+RnJvbTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2NCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPllvdSBhcmUgY3VycmVudGx5IG5vdCBpbiBhbnkgVGVhbS1Sb29tLiBCdXQgeW91IGNhbiBzd2l0Y2ggaGVyZSB0byBhbGwgVGVhbS1Sb29tcyB0aGF0IHlvdSBoYXZlIGFjY2VzcyB0by48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2NSIgbmFtZT0iYmFja3VwQ29udGVudCI+CisgICAgPHZhbHVlPkJhY2t1cCB0aGUgU3lzdGVtLiBUaGUgQmFja3VwIGluY2x1ZGVzIGFsbCBVc2VyIGdlbmVyYXRlZCBkYXRhLiBUaGUgY29uZmlndXJhdGlvbiBpcyBub3QgaW5jbHVkZWQgYXMgd2VsbCBhcyB0aGUgbGFuZ3VhZ2UgbGFiZWxzLiBCZWNhdXNlIHRob3NlIHZhbHVlcyBhcmUgaW1wb3J0ZWQgd2l0aCB0aGUgU3lzdGVtIEluc3RhbGxlci4gVG8gdXBkYXRlIHlvdXIgU3lzdGVtLCBleHBvcnQgeW91ciBvbGQgc3lzdGVtICgxKSByZS1pbnN0YWxsIGludG8gYSBuZXcgZGF0YWJhc2UgdGhlIG5ldyBwYWNrYWdlICgyKSBhbmQgaW1wb3J0IHRoZSBCYWNrdXAgZmlsZSBhZ2FpbiAoMykuIFRoZSBCYWNrdXAgc2hvdWxkIGJlIGltcG9ydGVkIGJlZm9yZSBnZW5lcmF0aW5nIGRhdGEgaW4gdGhlIG5ld2x5IGluc3RhbGxlZCBzeXN0ZW0uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjYiIG5hbWU9ImJhY2t1cENvbnRlbnQiPgorICAgIDx2YWx1ZT5TeXN0ZW0gQmFja3VwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjciIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPkFsbG93IHVzZXIgdG8gc2hhcmUgU2NyZWVuL1JlY29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY4IiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT5EZW55IHVzZXIgdG8gc2hhcmUgU2NyZWVuL1JlY29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY5IiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT5Vc2VyIGlzIE1vZGVyYXRvciwgaGUgY2FuIGRvIGFueXRoaW5nITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDcwIiBuYW1lPSJhcHBseSBmb3Igc2NyZWVuL3JlY29yZGluZyI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gc2hhcmUvcmVjb3JkIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3MSIgbmFtZT0ibW9kZXJhdGlvbiBtaW5pIGljb25zIj4KKyAgICA8dmFsdWU+WW91IGFyZSBhbGxvd2VkIHRvIHNoYXJlL3JlY29yZCBzY3JlZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3MiIgbmFtZT0ibW9kZXJhdGlvbiBtaW5pIGljb25zIj4KKyAgICA8dmFsdWU+QXBwbHkgZm9yIHJpZ2h0IHRvIHNoYXJlL3JlY29yZCBzY3JlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzMiIG5hbWU9Im1vZGVyYXRpb24gbWluaSBpY29ucyBjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+QWxsb3cvRGVueSByaWdodCB0byBzaGFyZS9yZWNvcmQgc2NyZWVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc0IiBuYW1lPSJzb3VuZCBpY29uIj4KKyAgICA8dmFsdWU+VHVybiBzb3VuZCBvZmY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3NSIgbmFtZT0ic291bmQgaWNvbiI+CisgICAgPHZhbHVlPlR1cm4gc291bmQgb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3NiIgbmFtZT0icm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPkF1ZGlvIG9ubHkgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc3IiBuYW1lPSJyb29tIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+VHVybiB0aGlzIEZsYWcgb24gYW5kIHRoZSB1c2VycyB3aWxsIGhhdmUgb25seSB0aGUgQXVkaW8tT3B0aW9uIGFuZCBubyBWaWRlbyBpbiBhIGNvbmZlcmVuY2Ugcm9vbS4gVGhpcyBjYW4gYnkgZ29vZCB0byBzYXZlIGJhbmR3aWR0aC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3OCIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QWxsb3cgUmVtb3RlIENvbnRyb2wgKER1cmluZyBTY3JlZW4gU2hhcmluZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3OSIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+RGVueSBSZW1vdGUgQ29udHJvbCAoRHVyaW5nIFNjcmVlbiBTaGFyaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgwIiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5BcHBseSBmb3IgcmlnaHQgdG8gUmVtb3RlIENvbnRyb2wgU2NyZWVuIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODEiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPllvdSBhcmUgYWxsb3dlZCB0byBSZW1vdGUgQ29udHJvbCBTY3JlZW4gKER1cmluZyBTY3JlZW4gU2hhcmluZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MiIgbmFtZT0iYXBwbHkgZm9yIHJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0byByZW1vdGUgY29udHJvbCBzY3JlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODMiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlVzZXIgaXMgTW9kZXJhdG9yLCBoZSBjYW4gZG8gYW55dGhpbmchIFtSZW1vdGUgRGVza3RvcCBDb250cm9sXTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg0IiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5BbGxvdy9EZW55IHJpZ2h0IHRvIFJlbW90ZSBDb250cm9sIFNjcmVlbiAoRHVyaW5nIFNjcmVlbiBTaGFyaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg1IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT4xKSBZb3VyIFBDIHRvIHJlbW90ZSBQQzogVG8gY29weSBhbmQgcGFzdGUgdGV4dCBmcm9tIHlvdXIgY2xpcGJvYXJkIGludG8gdGhlIHJlbW90ZSBjb250cm9sbGVkIHNjcmVlbiwgY2xpY2sgb24gdGhlIHNjcmVlbiwgdGhlbiByaWdodCBjbGljayBpbiB0aGUgdGV4dCBmaWVsZCBhbmQgY2hvb3NlICJJbnNlcnQiIGZyb20gdGhlIGNvbnRleHQgKHJpZ2h0IGNsaWNrKSBtZW51LiZsdDtici8mZ3Q7Jmx0O2JyLyZndDsyKSBGcm9tIHJlbW90ZSBQQyB0byB5b3VyIFBDOiBUbyBjb3B5IHRleHQgZnJvbSB0aGUgcmVtb3RlIFBDIHRvIHlvdXIgUEMncyBjbGlwYm9hcmQsIGhpZ2hsaWdodCB0aGUgdGV4dCB3aXRoIHRoZSBtb3VzZSBvbiB0aGUgcmVtb3RlIHNjcmVlbiwgdGhlbiByaWdodC1jbGljayBvbiB0aGUgcmVtb3RlIHNjcmVlbiBhbmQgY2hvb3NlICZsdDtpJmd0O0NvcHkgaGlnaGxpZ2h0ZWQgdGV4dCZsdDsvaSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4NiIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+Q29weSBhbmQgUGFzdGUgdGV4dCBmcm9tIHlvdXIgUEMgdG8gcmVtb3RlIFBDIGFuZCB2aWNlLXZlcnNhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg3IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Db3B5IGhpZ2hsaWdodGVkIHRleHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4OCIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+SG93IHRvIGNvcHkgbiBwYXN0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg5IiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5RdWFsaXR5IG9mIHRoZSBTY3JlZW5TaGFyZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5MCIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+VmVyeSBoaWdoIFF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5MSIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+SGlnaCBRdWFsaXR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTIiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPk1lZGl1bSBRdWFsaXR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTMiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPkxvdyBRdWFsaXR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTQiIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+ZW5fVVM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NSIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5kZV9ERTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk2IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPktleWJvYXJkOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk3IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPkNsb3NlIFdlYmluYXIhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTgiIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+VGhlIFdlYmluYXIgaXMgYWxyZWFkeSBjbG9zZWQsIHlvdSB3aWxsIGJlIHJlZGlyZWN0ZWQgdG8gc29tZSBpbnRlcmVzdGluZyBvZmZlcmluZ3MgaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5OSIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5DbG9zZSBSb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDAiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+RXhpdCBVUkw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMSIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5Sb29tIHRlcm1pbmF0aW9uIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDIiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+SWYgdGhlIHJvb20gaXMgY2xvc2VkIHVzZXJzIHdpbGwgYmUgcmVkaXJlY3RlZCB0byB0aGUgZXhpdCBVUkwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDMiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+TGRhcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA0IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPklEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDUiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA2IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkNvbmZpZyBGaWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDciIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+TGRhcCBDb25maWc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwOCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDkiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+RW5hYmxlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEwIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkluc2VydGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTEiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+SW5zZXJ0ZWQgYnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMiIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5VcGRhdGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTMiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+VXBkYXRlZCBieTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE0IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPlRoZSBjb25maWcgZmlsZXMgYXJlIGluIHRoZSBmb2xkZXIgd2ViYXBwcy9vcGVubWVldGluZ3MvY29uZi4gWW91IG5lZWQgdG8gbWFudWFsbHkgdXBsb2FkIHRoZSBmaWxlcyB0byB0aGlzIGZvbGRlci4gQ2hhbmdlcyB0byB0aGUgY29uZmlnIGZpbGUgYXJlIGltbWVkaWF0ZWx5IG9ubGluZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5Db25maWcgZmlsZSBuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTYiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+SWYgeW91IGVuYWJsZSAiQWRkIERvbWFpbiB0byB1c2VybmFtZSIgdGhlIHZhbHVlIG9mIHRoZSBmaWVsZCAiZG9tYWluIiBpcyBhZGRlZCB0byBlYWNoIGxvZ2luIHRoYXQgdGhlIHVzZXIgZW50ZXJzIGluIHRoZSBsb2dpbiBib3guIFRoaXMgaXMgdXNlZnVsIGlmIHRoZSBMb2dpbiBpbiB0aGUgTGRhcCBpcyBzdG9yZWQgaW5jbHVkaW5nIHRoZSBkb21haW4gbmFtZS4gRXhhbXBsZTogVXNlciBlbnRlcnMgImhhbnMiIGRvbWFpbiBpcyBzcGVjaWZpZWQgYXMgImxvY2FsaG9zdC5jb20iLCBsb2dpbiB0aGF0IGlzIHZlcmlmaWVkIGFnYWluc3QgTGRhcCBpczogaGFuc0Bsb2NhbGhvc3QuY29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTciIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+QWRkIERvbWFpbiB0byB1c2VybmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE4IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkRvbWFpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE5IiBuYW1lPSJyZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPkluc2VydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIwIiBuYW1lPSJyZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPkNvcHkgaGlnaGxpZ2h0ZWQgdGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIxIiBuYW1lPSJyZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPlJlbW90ZSBDbGlwYm9hcmQgVGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIyIiBuYW1lPSJyZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPlNob3cgcmVtb3RlIENsaXBib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIzIiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5EbyBub3Qgc2hvdyBhZ2FpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI0IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Db3B5IHRleHQgaGVyZSAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNSIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgdGhlIHJpZ2h0IHRvIHJlbW90ZSBjb250cm9sIChvciB0aGUgbW9kZXJhdGlvbikgdG8gY29weSBhbmQgcGFzdGUgdGV4dCB0byBvciBmcm9tIHRoZSByZW1vdGUgc2NyZWVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI2IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5FZGl0IGRlZmF1bHQgc2V0dGluZ3MgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjciIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkRvIG5vdCBzaG93IGluZm8gYm94IGluIFJlbW90ZSBDb250cm9sIGFib3V0IENvcHkgYW5kIFBhc3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjgiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+U2F2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI5IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPlJlbW92ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMwIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMxIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+SW52aXRlIHVzZXIgdG8gY29uZmVyZW5jZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzIiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5DaG9vc2UgYSBjb25mZXJlbmNlIHJvb20uIFRoZSBpbnZpdGVkIHVzZXIgd2lsbCBnZXQgYSBtZXNzYWdlIHdpdGggeW91ciBuYW1lIGFuZCBhIGxpbmsgdG8gdGhlIHJvb20uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzMiIG5hbWU9ImNoYXQgdXNlciI+CisgICAgPHZhbHVlPkNvbm5lY3RlZCBzaW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzNCIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkVudGVyIHJvb20gYWZ0ZXIgc2VuZGluZyBpbnZpdGF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzUiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5JbnZpdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzNiIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPk1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzNyIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gaW52aXRlIHlvdSB0byB0aGUgY29uZmVyZW5jZSByb29tOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM4IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+SW52aXRlIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzOSIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPlNlbmQgSW52aXRhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQwIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+ZGlkICZsdDtiJmd0O25vdCZsdDsvYiZndDsgYWNjZXB0IHlvdXIgaW52aXRhdGlvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0MSIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkFjY2VwdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQyIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+RGVueTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQzIiBuYW1lPSJ1c2VyIHByb2ZpbGUiPgorICAgIDx2YWx1ZT5UaW1lem9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ0IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5FdmVudCBEZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDUiIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0NiIgbmFtZT0iYXBwb2ludG1lbnQgbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+RGVzY3JpcHRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0NyIgbmFtZT0iYXBwb2ludG1lbnQgbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+Q3JlYXRlZCBieTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ4IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+VGltZVpvbmUgTWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ5IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+Q2hlY2sgIlRpbWVab25lIE1lc3NhZ2UiIHRvIGdpdmUgdXNlcnMgYSBtZXNzYWdlIG5leHQgdGltZSB0aGV5IGxvZ2luIHRvIHVwZGF0ZSB0aGVpciBwcm9maWxlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUwIiBuYW1lPSJ0aW1lIHpvbmUgdXBkYXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5QbGVhc2UgY2hlY2sgdGhlIHRpbWUgem9uZSBpbiB5b3VyIHVzZXIgcHJvZmlsZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MSIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TmV3ICRBUFBfTkFNRSBjb25mZXJlbmNlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUyIiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EZXRhaWxzOiZsdDtici8mZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTMiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPlN0YXJ0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU0IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5FbmQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTUiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkNoYW5nZWQgJEFQUF9OQU1FIGNvbmZlcmVuY2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTYiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPk9yZ2FuaXplcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NyIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2FuY2VsZWQgJEFQUF9OQU1FIGNvbmZlcmVuY2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTgiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSBjb25mZXJlbmNlIFJlbWluZGVyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU5IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+Q29tbXVuaXR5IHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjAiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TaG93IGNvbnRhY3QgZGF0YSB0byBldmVyeWJvZHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkFkZCBmaWVsZHMgb2YgaW50ZXJlc3QgdGhhdCB5b3Ugb2ZmZXIgb3IgdGhhdCB5b3UgYXJlIHNlYXJjaGluZyB0byBmaW5kIGludGVyZXN0aW5nIHBhcnRuZXJzIGZvciBhIGNvbmZlcmVuY2UuIENvbW1hIHNlcGFyYXRlIHRoZSB0ZXJtcyAoZm9yIGV4YW1wbGU6IE1lZGljYWwgU2VydmljZSwgSGVhbHRoIGFzc3VyYW5jZSwgLi4uKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYyIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+TXkgb2ZmZXJpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjMiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NeSBpbnRlcmVzdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2NCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2NSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlRpbWV6b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjYiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5GaWVsZHMgb2YgaW50ZXJlc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2NyIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkNvbnRhY3QgaW5mb3JtYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2OCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlNob3cgY29udGFjdCBkYXRhIHRvIGNvbnRhY3RzIG9ubHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2OSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlNob3cgY29udGFjdCBkYXRhIHRvIG5vYm9keTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTcwIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+TXkgUHJvZmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTcxIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+RWRpdCBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTcyIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2VhcmNoIHVzZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzMiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5XYXRjaCB5b3VyIHByb2ZpbGUgbGlrZSBvdGhlciBzZWUgeW91PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzQiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5FZGl0IHlvdXIgc2V0dGluZ3MsIGFkZCB5b3VyIGludGVyZXN0cyB0byBiZSBmb3VuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc1IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2VhcmNoIGZvciBvdGhlciB1c2VycyBhbmQgZXh0ZW5kIHlvdXIgbmV0d29yazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc2IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlNlYXJjaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc3IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlVzZXIgb2ZmZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzgiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+VXNlciBsb29rcyBmb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3OSIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5GcmVldGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgwIiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MSIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5UaW1lem9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgyIiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPk9mZmVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgzIiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlNlYXJjaHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5TZWFyY2hyZXN1bHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NSIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5BY3Rpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODYiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+QWRkIHRvIGNvbnRhY3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODciIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+U2VuZCBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODgiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+Q29udGFjdHMgYW5kIE1lc3NhZ2VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODkiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+UGVuZGluZyBjb250YWN0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkwIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+QWNjZXB0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTEiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5EZW55PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTIiIG5hbWU9InVzZXIgY29udGFjdCByZXF1ZXN0Ij4KKyAgICA8dmFsdWU+SGksPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTMiIG5hbWU9InVzZXIgY29udGFjdCByZXF1ZXN0Ij4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0byBhZGQgeW91IGFzIGNvbnRhY3QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTQiIG5hbWU9InVzZXIgY29udGFjdCByZXF1ZXN0Ij4KKyAgICA8dmFsdWU+Q2hlY2sgeW91ciBjb250YWN0IHJlcXVlc3RzIGluICRBUFBfTkFNRSBvciBjbGljayBvbiB0aG9zZSBsaW5rcyB0byBhY2NlcHQgb3IgZGVueSB0aGUgcmVxdWVzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk1IiBuYW1lPSJhZGQgdXNlciBjb250YWN0Ij4KKyAgICA8dmFsdWU+VGhpcyB1c2VyIGlzIGFscmVhZHkgaW4geW91ciBjb250YWN0IGxpc3Qgb3IgaGFzIHJlY2VpdmVkIGFuIGludml0YXRpb24gdG8geW91ciBjb250YWN0IGxpc3QgdGhhdCBpcyBub3QgYW5zd2VyZWQgeWV0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk2IiBuYW1lPSJ1c2VyIGNvbnRhY3QgbWFpbCI+CisgICAgPHZhbHVlPllvdXIgY29udGFjdCBsaXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTciIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5FZGl0IHlvdXIgY29udGFjdCBhbmQgbWVzc2FnZXMsJmx0O2JyLyZndDsgbWFuYWdlIHlvdXIgcGVuZGluZyBjb250YWN0cyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5OCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPmNvbmZpcm1lZCB5b3UgYXMgY29udGFjdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5OSIgbmFtZT0iY2hhdCBpbmZvIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMCIgbmFtZT0iY2hhdCBsb2cgaWNvbiI+CisgICAgPHZhbHVlPlNob3cgLyBDb3B5IGNoYXQgbG9nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDEiIG5hbWU9ImNoYXQgbG9nIHdpbmRvdyI+CisgICAgPHZhbHVlPkNoYXQgTG9nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkZyb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3ViamVjdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA2IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5NZXNzYWdlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA3IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5OZXcgTWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DbGljayB0byB3cml0ZSBhIG5ldyBtZXNzYWdlIHRvIGFueSBvZiB5b3VyIGNvbnRhY3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPldyaXRlIG5ldyBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTAiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjExIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TdWJqZWN0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjEyIiBuYW1lPSJ3aGl0ZWJvYXJkIGZ1bGwtZml0Ij4KKyAgICA8dmFsdWU+RW5hYmxlIGZ1bGwgZml0IGFuZCB0aGUgd2hpdGVib2FyZCB3aWxsIHpvb20gdGhlIHdob2xlIHdoaXRlYm9hcmQgc28gdGhhdCBhbGwmbHQ7YnIvJmd0O2RvY3VtZW50cyBhcmUgdmlzaWJsZSBhY2NvcmRpbmcgdG8gZWFjaCBwYXJ0aWNpcGFudHMgc2NyZWVuIHJlc29sdXRpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTMiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPktpY2sgdXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE0IiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IGtpY2sgeW91cnNlbGYgb3V0IG9mIHRoZSBjb25mZXJlbmNlIHJvb20hIElmIHlvdSB3YW50IHRvIGxlYXZlIGl0IGNsb3NlIHRoZSBicm93c2VyIG9yIHVzZSB0aGUgZXhpdCBidXR0b24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTUiIG5hbWU9ImtpY2stdXNlciI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkaXNjb25uZWN0IHRoaXMgdXNlciBmcm9tIHRoaXMgY29uZmVyZW5jZSByb29tPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE2IiBuYW1lPSJraWNrLXVzZXIiPgorICAgIDx2YWx1ZT5Db25maXJtIGFjdGlvbiAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNyIgbmFtZT0ia2ljay11c2VyIj4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBraWNrIGEgU3VwZXItTW9kZXJhdG9yIG91dCBvZiBhIHJvb20hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkJvb2sgY29uZmVyZW5jZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlN0YXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjAiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkVuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgYW4gb3B0aW9uYWwgcmVxdWVzdCBmb3IgbWVldGluZyB0byB0aGUgbWVzc2FnZSBhbmQgY3JlYXRlIGEgY29uZmVyZW5jZSByb29tLiBUaGUgRXZlbnQgaXMgdGhlbiBjb3BpZWQgaW4gdGhlIGNhbGVuZGFyIG9mIGV2ZXJ5IHBhcnRpY2lwYW50LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5JbmJveDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRyYXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoaXMgaXMgeW91ISBZb3UgY2Fubm90IGFkZCB5b3Vyc2VsZiBhcyB5b3VyIG93biBjb250YWN0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI2IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VGhlIHVzZXIgaXMgYWxyZWFkeSBkZW5pZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjciIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5UaGUgdXNlciBpcyBhbHJlYWR5IGFwcHJvdmVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI4IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VGhpcyB1c2VyIGNvbnRhY3QgaGFzaCBpcyBpbnZhbGlkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI5IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VXNlciBhZGRlZCB0byBjb250YWN0IGxpc3QhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzAiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Vc2VyIGRlbmllZCBhcyBjb250YWN0IGFuZCByZW1vdmVkIGZyb20gcGVuZGluZyBjb250YWN0IGxpc3QhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzEiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBzdWNoIGNvbnRhY3QhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzIiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Xb3VsZCB5b3UgcmVhbGx5IGxpa2UgdG8gcmVtb3ZlIHRoYXQgY29udGFjdD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkNvbmZpcm0gY29udGFjdCByZW1vdmFsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzQiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5EZWxldGUgY29udGFjdCBmcm9tIGxpc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNSIgbmFtZT0idXNlciBwcm9maWxlIj4KKyAgICA8dmFsdWU+VXNlciBQcm9maWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzYiIG5hbWU9InVzZXIgcHJvZmlsZSI+CisgICAgPHZhbHVlPlNob3cgdXNlciBwcm9maWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzciIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1lc3NhZ2VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlYXJjaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWxlY3QgYWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDAiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbGVjdCBub25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbGVjdCB1bnJlYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0MiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VsZWN0IHJlYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0MyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TW92ZSB0byBmb2xkZXIgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZCBuZXcgZm9sZGVyIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EZWxldGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGVsZXRlZCBtYWlscyBhcmUgc3RpbGwgaW4geW91ciB0cmFzaCBmb2xkZXIhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDciIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1hcmsgdW5yZWFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1hcmsgcmVhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BbnN3ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QW5zd2VyIGV2ZXJ5Ym9keTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Gb3J3YXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFjdGlvbnMgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTMiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5TZW5kIHByaXZhdGUgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Ob3RoaW5nIHNlbGVjdGVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Nb3ZlIHRvIEluYm94PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTYiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRlbGV0ZSAoZmluYWwpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTciIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoaXMgYWN0aW9uIGNhbm5vdCBiZSB1bmRvbmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZCBmb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1OSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIGZvbGRlcnMgYW5kIG9yZ2FuaXplIHlvdXIgbWVzc2FnZXMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjAiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZCBmb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSBmb2xkZXIiPgorICAgIDx2YWx1ZT5EZWxldGUgZm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSBmb2xkZXIiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IGRlbGV0ZSB0aGlzIGZvbGRlciwgdGhlcmUgYXJlIHN0aWxsIG1lc3NhZ2VzIGluc2lkZSEgRGVsZXRlIGZpcnN0IHRoZSBtZXNzYWdlcyBvciBtb3ZlIHRoZW0gdG8gYW5vdGhlciBmb2xkZXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSBmb2xkZXIiPgorICAgIDx2YWx1ZT5FZGl0IG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBmb2xkZXI/IFRoZXJlIGlzIG5vIHdheSB0byB1bmRvIHRoYXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjYiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Zb3VyIHJlcXVlc3Qgd2FzIHNlbmQgdG8gdGhlIHVzZXIuIFRoZSB1c2VyIHdpbGwgcmVjZWl2ZSBhIG5vdGlmaWNhdGlvbiB0byBhY2NlcHQgb3IgZGVueSB5b3VyIHJlcXVlc3QuIE9ubHkgYWNjZXB0ZWQgcmVxdWVzdHMgYXJlIGluIHlvdXIgY29udGFjdCBsaXN0IG9mIGNvdXJzZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPk1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2OCIgbmFtZT0idXNlciB2aWV3IHByb2ZpbGUiPgorICAgIDx2YWx1ZT5UaGUgdXNlciBkb2VzIG5vdCBzaGFyZSBoaXMgcGVyc29uYWwgY29udGFjdCBkYXRhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY5IiBuYW1lPSJ1c2VyIHZpZXcgcHJvZmlsZSI+CisgICAgPHZhbHVlPlRoZSB1c2VyIGRvZXMgc2hhcmUgaGlzIHBlcnNvbmFsIGNvbnRhY3QgZGF0YSBvbmx5IHRvIGNvbnRhY3RzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjcwIiBuYW1lPSJ1c2VyIHZpZXcgcHJvZmlsZSI+CisgICAgPHZhbHVlPkFkZHJlc3MgJmFtcDsgUGhvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3MSIgbmFtZT0iZXJyb3IgY29kZSI+CisgICAgPHZhbHVlPllvdSBpbnZpdGF0aW9uIGNvZGUgaXMgbm8gdmFsaWQsIHRoZSBjb2RlIGlzIG9ubHkgdmFsaWQgZHVyaW5nIHRoaXMgc3BlY2lmaWMgZGF0ZSBhbmQgdGltZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3MiIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPlRoaXMgZXZlbnQgaXMgY29ubmVjdGVkIHRvIHNldmVyYWwgY2FsZW5kYXJzIG9mIG90aGVyIHVzZXJzLiBZb3VyIGNoYW5nZSB3aWxsIGFsc28gdXBkYXRlIHRoZWlyIGNhbGVuZGFyLiBXb3VsZCB5b3UgcmVhbGx5IGxpa2UgdG8gdXBkYXRlIHRoZSBldmVudD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3MyIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPkNvbmZpcm0gdXBkYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzQiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5BbGxvdyBjb250YWN0IHRvIHNlZSBteSBjYWxlbmRhciAodmlldyBvbmx5KTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc1IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+RG8gbm90IHNoYXJlIGNhbGVuZGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzYiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5DYWxlbmRhciBvZiBjb250YWN0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+WW91ciBjb250YWN0cyBuZWVkIHRvIGFwcHJvdmUgeW91IGZpcnN0IHRvIGJlIGFibGUgdG8gc2VlIHRoZWlyIGNhbGVuZGFyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc4IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBzdG9yZSBvciBkZWxldGUgZXZlbnRzIGZyb20gb3RoZXIgY2FsZW5kYXJzIHRoZW4geW91ciBvd24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzkiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5TaG93IG15IG93biBjYWxlbmRhciBhZ2FpbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4MCIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPlRoaXMgZXZlbnQgaXMgY29ubmVjdGVkIHRvIHNldmVyYWwgY2FsZW5kYXJzIG9mIG90aGVyIHVzZXJzLiBZb3VyIGFjdGlvbiB3aWxsIGFsc28gZGVsZXRlIHRoZSBldmVudCBmcm9tIHRoZWlyIGNhbGVuZGFyLiBXb3VsZCB5b3UgcmVhbGx5IGxpa2UgdG8gZGVsZXRlIHRoZSBldmVudD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4MSIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPkNvbmZpcm0gYWN0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODIiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5FbnRlciByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODMiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5BY2Nlc3MgdGhlIGNvbmZlcmVuY2Ugcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBhIGNvbmZlcmVuY2Ugcm9vbSBhbmQgZXZlbnQgYm9va2VkIHdpdGggdGhpcyBwcml2YXRlIG1lc3NhZ2UuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODUiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0byBzdG9yZSB0aGUgZXZlbnQgZmlyc3QhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODYiIG5hbWU9ImFjY2VzcyByb29tcyBlcnJvciI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIHN1Y2ggcm9vbSBhdmFpbGFibGUuIFRoZSBldmVudCBpbiB0aGUgY2FsZW5kYXIgYW5kIGNvbm5lY3RlZCByb29tIGlzIGFscmVhZHkgZGVsZXRlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NyIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+Q2hvb3NlIHlvdXIgbmlja25hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4OCIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+Rmlyc3RuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODkiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPkxhc3RuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTAiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPkVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTEiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPk9rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTIiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPk1pbmltdW0gbGVuZ3RoIDQgY2hhcnMhIEZvciBib3RoLCBmaXJzdG5hbWUgYW5kIGxhc3RuYW1lLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkzIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5QbGVhc2UgZW50ZXIgYSB2YWxpZCBlbWFpbCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5NCIgbmFtZT0iYXV0aCBmcm9tIj4KKyAgICA8dmFsdWU+RmFjZWJvb2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5NSIgbmFtZT0iYXV0aCBmb3JtIj4KKyAgICA8dmFsdWU+TG9naW4gd2l0aCB5b3VyIEZhY2Vib29rIGFjY291bnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5NiIgbmFtZT0idmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+TWVtYmVyIHNpbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTciIG5hbWU9ImRpcmVjdCBsb2dpbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+WW91J3ZlIGxvZ2dlZCB3aXRoIHlvdXIgRmFjZWJvb2sgYWNjb3VudC4gWW91IHNob3VsZCB1cGRhdGUgeW91ciBwcm9maWxlIHdpdGggdGhlIGNvcnJlY3QgZW1haWwuIE90aGVyd2lzZSB5b3Ugd2lsbCBub3QgcmVjZWl2ZSBpbnZpdGF0aW9ucyBhbmQgcHJpdmF0ZSBtZXNzYWdlcyBmcm9tIG90aGVyIHVzZXJzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk4IiBuYW1lPSJkaXJlY3QgbG9naW4gbWVzc2FnZSBoZWFkZXIiPgorICAgIDx2YWx1ZT5NZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTkiIG5hbWU9ImRpcmVjdCBsb2dpbiBtZXNzYWdlIGNoZWNrYm94IGNvbnRyb2wiPgorICAgIDx2YWx1ZT5EbyBub3Qgc2hvdyB1cGRhdGUgcHJvZmlsZSBtZXNzYWdlIGFnYWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDAiIG5hbWU9InByb2ZpbGUgc2V0dGluZ3MgYnV0dG9uIj4KKyAgICA8dmFsdWU+bW9yZSBkaXNwbGF5IG9wdGlvbnMgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk5ldyBwcml2YXRlIG1lc3NhZ2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkNsaWNrIGhlcmUgdG8gdmlzaXQgeW91ciBwcm9maWxlIHRvIHNlZSB0aGUgZnVsbCBtZXNzYWdlIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5SZXBseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA0IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5Sb29tcyBhbmQgY2hhdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwNSIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+TXkgcm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwNiIgbmFtZT0ibXkgcm9vbXMiPgorICAgIDx2YWx1ZT5NeSBjb25mZXJlbmNlIHJvb20gKGZvciAxLTE2IHVzZXJzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA3IiBuYW1lPSJteSByb29tcyI+CisgICAgPHZhbHVlPk15IHdlYmluYXIgcm9vbSAoZm9yIDEtMTIwIHVzZXJzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA4IiBuYW1lPSJyb29tIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+T3duZXIgSWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwOSIgbmFtZT0ibG9naW4gZXJyb3IiPgorICAgIDx2YWx1ZT5QbGVhc2UgZW50ZXIgYSBwYXNzd29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzEwIiBuYW1lPSJsb2dpbiBlcnJvciI+CisgICAgPHZhbHVlPllvdSBuZWVkIGFuIGFjY291bnQgd2l0aCBVc2VyLUxldmVsIFVzZXIsIE1vZGVyYXRvciBvciBBZG1pbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzExIiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+V2ViLVNlcnZpY2UgKG9ubHkgYWNjZXNzIHZpYSBTT0FQKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzEyIiBuYW1lPSJ1cGxvYWQgZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkRvIGRpcmVjdGx5IGxvYWQgdG8gd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzEzIiBuYW1lPSJ3aGl0ZWJvYXJkIGNsb3NlIGNvbmZpcm1hdGlvbiI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byByZW1vdmUgdGhpcyB3aGl0ZWJvYXJkPyBUaGlzIGFjdGlvbiBjYW5ub3QgYmUgdW5kb25lITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE0IiBuYW1lPSJ3aGl0ZWJvYXJkIGxvYWQgV01MIj4KKyAgICA8dmFsdWU+TG9hZCB0byB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTUiIG5hbWU9InJlY29yZGluZyBmbGFnIj4KKyAgICA8dmFsdWU+RG8gbm90IGZvcmdldCBzdGFydCByZWNvcmRpbmchIE9uZSB1c2VyIHBlciByb29tIGFsd2F5cyBuZWVkcyB0byBzdGFydCBpdCB0byBoYXZlIHRoZSByZWNvcmRpbmcgYWZ0ZXJ3YXJkcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxNiIgbmFtZT0icmVjb3JkaW5nIGZsYWciPgorICAgIDx2YWx1ZT5TdGFydCBSZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxNyIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT5BcnJvdzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE4IiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPkNpcmNsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE5IiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPkxpbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyMCIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT5TcXVhcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyMSIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT5UcmlhbmdsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIyIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+VGV4dC9Ob3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjMiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5DbGlwYXJ0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI0IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+RHJhdyBGcmVlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjUiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5TZWxlY3QvTW92ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI2IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+RHJhdyBTaGFwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI3IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+Q3V0L01vdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyOCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlpvb20gSW4vT3V0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjkiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5QcmludDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMwIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+VW5kbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMxIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+VHJhc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMiIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkFkZCBHcmlkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzMiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5TaGFyZSBGaWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzQiIG5hbWU9Imljb24gc3VibWVudSI+CisgICAgPHZhbHVlPlNlbGVjdCBTaGFwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM1IiBuYW1lPSJpY29uIHN1Ym1lbnUiPgorICAgIDx2YWx1ZT5TZWxlY3QgQ2xpcGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM2IiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+Q29weTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM3IiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+Q3V0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzgiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5QYXN0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM5IiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+RGVsZXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDAiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoZSBjb21wbGV0ZSBjb250ZW50IG9uIHRoZSB3aGl0ZWJvYXJkPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQxIiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+TG9hZCBkaXJlY3RseSB0byB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDIiIG5hbWU9ImF0dGVuZGVlcyI+CisgICAgPHZhbHVlPkF0dGVuZGVlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQzIiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5BdHRlbmRlZSBNYW5hZ2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDQiIG5hbWU9ImF0ZW5kZWUgbWFuYWdlciI+CisgICAgPHZhbHVlPlByZXNlbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NSIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+UmVtb3RlIENvbnRyb2xsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDYiIG5hbWU9ImF0ZW5kZWUgbWFuYWdlciI+CisgICAgPHZhbHVlPkVqZWN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDciIG5hbWU9ImNoYXQiPgorICAgIDx2YWx1ZT5DaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDgiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPkludml0ZSBBdHRlbmRlZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0OSIgbmFtZT0iaW52aXRlIGF0dGVuZGVlIj4KKyAgICA8dmFsdWU+QnkgRW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1MCIgbmFtZT0iaW52aXRlIGF0dGVuZGVlIj4KKyAgICA8dmFsdWU+VXNlciBpcyBtb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1MSIgbmFtZT0iaW52aXRlIGF0dGVuZGVlIj4KKyAgICA8dmFsdWU+VXNlciBoYXMgd2ViY2FtIHN3aXRjaGVkIG9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTIiIG5hbWU9ImZpbGxfb3B0aW9uIj4KKyAgICA8dmFsdWU+RGVhY3RpdmF0ZSBzaGFwZSBmaWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTMiIG5hbWU9ImZpbGxfb3B0aW9uIj4KKyAgICA8dmFsdWU+QWN0aXZhdGUgc2hhcGUgZmlsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU0IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+U25hcCB0byBHcmlkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTUiIG5hbWU9ImFsbG93X3JlY29yZGluZyI+CisgICAgPHZhbHVlPkFsbG93IHJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU2IiBuYW1lPSJ3YWl0X2Zvcl9yZWNvcmRpbmciPgorICAgIDx2YWx1ZT5XYWl0IGZvciByZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NyIgbmFtZT0iaGlkZV90b3BfYmFyIj4KKyAgICA8dmFsdWU+SGlkZSB0b3BiYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1OCIgbmFtZT0iZmlsZUV4cGxvcmVyIj4KKyAgICA8dmFsdWU+UGxheSB2aWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU5IiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGUgY29udGVudCBvbiB0aGUgY3VycmVudCBzbGlkZT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2MCIgbmFtZT0iYWN0aXZpdHlfd2luZG93Ij4KKyAgICA8dmFsdWU+QWNjZXB0IGFuZCBncmFudCB1c2VyIHJpZ2h0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjEiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPkRlbnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2MiIgbmFtZT0iYWN0aXZpdHlfd2luZG93Ij4KKyAgICA8dmFsdWU+STwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYzIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT5BY3Rpdml0aWVzIGFuZCBhY3Rpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjQiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5SZW1vdmUgd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY1IiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgdGhlIG1vZGVyYXRpb24gb3IgdGhlIHJpZ2h0IHRvIGRyYXcgb24gdGhlIHdoaXRlYm9hcmQgdG8gcmVtb3ZlIHdoaXRlYm9hcmRzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY2IiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+Tm90IGFsbG93ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NyIgbmFtZT0idXNlcl9sZWZ0X2FjdF9tc2ciPgorICAgIDx2YWx1ZT5oYXMgbGVmdCB0aGUgcm9vbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2OCIgbmFtZT0iY2xpcGFydCBpY29ucyI+CisgICAgPHZhbHVlPk1hdGggaWNvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2OSIgbmFtZT0iY2xpcGFydCBpY29ucyI+CisgICAgPHZhbHVlPk5vIGNhdGVnb3J5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzAiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPkNvbG9yLVN0eWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzEiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPlF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MiIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+RG9tYWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzMiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnZpc2l0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzQiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnJlZG9yYW5nZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc1IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5tZWRpdW1zZWFncmVlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc2IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5zdGVlbGJsdWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NyIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+bGlnaHRzdGVlbGJsdWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3OCIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+Z29sZGVucmVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzkiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnNpbHZlcmdyYXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4MCIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+dXNlcmRlZmluZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4MSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+YmVzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgyIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT51cGxvYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4MyIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+bWVkaXVtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODQiIG5hbWU9Im11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NSIgbmFtZT0idW5tdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+VW5tdXRlIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NiIgbmFtZT0iZ2l2ZSBleGNsdXNpdmUgYXVkaW8iPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgb2Ygb3RoZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODciIG5hbWU9Im11dGUgc2VsZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+WW91IGFyZSBnbG9iYWxseSBtdXRlZCBieSB0aGUgbW9kZXJhdG9yLiBZb3UgY2Fubm90IHVubXV0ZSB5b3Vyc2VsZiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4OCIgbmFtZT0ibXV0ZSBzZWxmIGNvbmZpcm0gbWVzc2FnZSB0aXRsZSI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBnbG9iYWxseT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4OSIgbmFtZT0ibXV0ZSBzZWxmIGNvbmZpcm0gbWVzc2FnZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIG11dGUgeW91cnNlbGYgZ2xvYmFsbHk/IE5vIG90aGVyIHVzZXIgd2lsbCBoZWFyIHlvdSBhbnltb3JlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkwIiBuYW1lPSJtdXRlIG90aGVycyBjb25maXJtIG1lc3NhZ2UgdGl0bGUiPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgbG9jYWxseT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5MSIgbmFtZT0ibXV0ZSBvdGhlcnMgY29uZmlybSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIG11dGUgdGhpcyBtaWNyb3Bob25lPyBZb3UgY2FuIG9ubHkgbXV0ZSBpdCBsb2NhbGx5IG9uIHlvdXIgc2NyZWVuLiBJdCBoYXMgbm8gZWZmZWN0IHRvIGhvdyBvdGhlciB1c2VycyBoZWFyIHRoaXMgdXNlci4gT25seSBtb2RlcmF0b3JzIGNhbiB0dXJuIGl0IG9mZiBnbG9iYWxseSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5MiIgbmFtZT0ibXV0ZSBvdGhlcnMgY29uZmlybSBtZXNzYWdlIHRpdGxlIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIG9mZiBnbG9iYWxseT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5MyIgbmFtZT0ibXV0ZSBvdGhlcnMgbW9kZXJhdG9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gbXV0ZSB0aGlzIHVzZXIgZ2xvYmFsbHk/IE5vIG90aGVyIHVzZXIgd2lsbCBoZWFyIGhpbSBhbnltb3JlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk0IiBuYW1lPSJtdXRlIHN0YXR1cyBpY29ucyI+CisgICAgPHZhbHVlPllvdXIgc291bmQgaXMgb24uIENsaWNrIGhlcmUgdG8gc2VuZCBtb2RlcmF0b3IgbWVzc2FnZSB0byBtdXRlIHlvdXIgbWljcm9waG9uZSBnbG9iYWxseSAoaW4gdGhlIGNvbXBsZXRlIGNvbmZlcmVuY2Ugcm9vbSkgb2ZmITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk1IiBuYW1lPSJtdXRlIHN0YXR1cyBpY29ucyI+CisgICAgPHZhbHVlPllvdXIgc291bmQgaXMgb2ZmLiBDbGljayBoZXJlIHRvIHNlbmQgbW9kZXJhdG9yIG1lc3NhZ2UgdG8gdW5tdXRlIHlvdXIgbWljcm9waG9uZSBnbG9iYWxseSAoaW4gdGhlIGNvbXBsZXRlIGNvbmZlcmVuY2Ugcm9vbSkgb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTYiIG5hbWU9Im11dGUgYXBwbHkgc2VsZiBvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0aGF0IHRoZSBtb2RlcmF0b3IgbXV0ZXMgbXkgbWljcm9waG9uZSBnbG9iYWxseS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5NyIgbmFtZT0ibXV0ZSBhcHBseSBzZWxmIG9mZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0aGF0IHRoZSBtb2RlcmF0b3IgdW5tdXRlcyBteSBtaWNyb3Bob25lIGdsb2JhbGx5LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk4IiBuYW1lPSJtdXRlIGFwcGx5IG9mIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53YW50IHRoYXQgdGhlIG1vZGVyYXRvciB1bm11dGVzIGhpcy9oZXIgbWljcm9waG9uZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5OSIgbmFtZT0ibXV0ZSBhcHBseSBvZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+d2FudCB0aGF0IHRoZSBtb2RlcmF0b3IgbXV0ZXMgaGlzL2hlciBtaWNyb3Bob25lLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDAwIiBuYW1lPSJtdXRlIHN0YXR1cyBpY29ucyI+CisgICAgPHZhbHVlPlVubXV0ZSBtaWNyb3Bob25lLiBDbGljayBoZXJlIHRvIG11dGUgaGlzL2hlciBtaWNyb3Bob25lIGdsb2JhbGx5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDAxIiBuYW1lPSJtdXRlIHN0YXR1cyBpY29ucyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZS4gQ2xpY2sgaGVyZSB0byB1bm11dGUgaGlzL2hlciBtaWNyb3Bob25lIGdsb2JhbGx5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDAyIiBuYW1lPSJtdXRlIHNlbGYgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoaXMgdXNlciBpcyBnbG9iYWxseSBtdXRlZCBieSB0aGUgbW9kZXJhdG9yLiBZb3UgY2Fubm90IHVubXV0ZSBoaW0hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDMiIG5hbWU9Im11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5NdXRlIHlvdXIgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA0IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5Vbm11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDUiIG5hbWU9Im11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwNiIgbmFtZT0idW5tdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+VW5tdXRlIG1pY3JvcGhvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwNyIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA4IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5Vbm11dGUgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA5IiBuYW1lPSJtdXRlIG1vZGVyYXRvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+T25seSBtb2RlcmF0b3JzIGNhbiBtdXRlIG9yIHVubXV0ZSBhbiB1c2VyIGdsb2JhbGx5ISBUbyBtdXRlIHlvdXIgb3duIG1pY3JvcGhvbmU6IFBsZWFzZSB1c2UgdGhlIG1pY3JvcGhvbmUgaWNvbiBpbiB5b3VyIHZpZGVvIHBvZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMCIgbmFtZT0icG9sbF9uYW1lIj4KKyAgICA8dmFsdWU+UG9sbCBOYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTEiIG5hbWU9InBvbGxfbmFtZSI+CisgICAgPHZhbHVlPllvdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDEyIiBuYW1lPSJhcmNoaXZlZF9wb2xscyI+CisgICAgPHZhbHVlPkFyY2hpZXZlZCBQb2xsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDEzIiBuYW1lPSJhY3RpdmVfcG9sbCI+CisgICAgPHZhbHVlPmFjdGl2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE0IiBuYW1lPSJjaGFydF9zaW1wbGUiPgorICAgIDx2YWx1ZT5TaW1wbGUgQ2hhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNSIgbmFtZT0iY2hhcnRfcGllIj4KKyAgICA8dmFsdWU+UGllIENoYXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTYiIG5hbWU9InNpZ25fdXBfdmFsaWRhdGlvbiI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBlbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE3IiBuYW1lPSJjaGF0X25vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPk5ldyBtZXNzYWdlKHMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTgiIG5hbWU9InBvbGxfY2xvc2UiPgorICAgIDx2YWx1ZT5DbG9zZSBQb2xsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTkiIG5hbWU9InBvbGxfY2xvc2VfY29uZmlybSI+CisgICAgPHZhbHVlPkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjbG9zZSB0aGlzIFBvbGw/IE5vIG9uZSB3aWxsIGJlIGFibGUgdG8gdm90ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIwIiBuYW1lPSJwb2xsX2RlbGV0ZSI+CisgICAgPHZhbHVlPkRlbGV0ZSBQb2xsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjEiIG5hbWU9InBvbGxfZGVsZXRlX2NvbmZpcm0iPgorICAgIDx2YWx1ZT5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgUG9sbD8gVGhlIHJlc3VsdHMgd2lsbCBiZSBkZWxldGVkIGFzIHdlbGwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjIiIG5hbWU9Imxhbmd1YWdlX2NvZGUiPgorICAgIDx2YWx1ZT5MYW5ndWFnZSBJU08gQ29kZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIzIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fcGVybWlzc2lvbiI+CisgICAgPHZhbHVlPkFsbG93L0RlbnkgcmlnaHQgdG8gZ2l2ZSBleGNsdXNpdmUgYXVkaW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjQiIG5hbWU9ImFsbG93X2V4Y2x1c2l2ZV9hdWRpb19wZXJtaXNzaW9uIj4KKyAgICA8dmFsdWU+QWxsb3cgdXNlciB0byBnaXZlIGV4Y2x1c2l2ZSBhdWRpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI1IiBuYW1lPSJkZW55X2V4Y2x1c2l2ZV9hdWRpb19wZXJtaXNzaW9uIj4KKyAgICA8dmFsdWU+RGVueSB1c2VyIHRvIGdpdmUgZXhjbHVzaXZlIGF1ZGlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjYiIG5hbWU9ImV4Y2xfYXVkaW8gYXBwbHkgc2VsZiBvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0byBnZXQgYSBwZXJtaXNzaW9uIGZvciBleGNsdXNpdmUgYXVkaW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjciIG5hbWU9ImV4Y2xfYXVkaW8gYXBwbHkgb2YgbWVzc2FnZSI+CisgICAgPHZhbHVlPndhbnQgdGhhdCB0aGUgbW9kZXJhdG9yIGdpdmVzIG1lIGEgcGVybWlzc2lvbiBmb3IgZXhjbHVzaXZlIGF1ZGlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI4IiBuYW1lPSJleGNsX2F1ZGlvIHN0YXR1cyBpY29ucyI+CisgICAgPHZhbHVlPkdpdmUgYSBwZXJtaXNzaW9uIGZvciBleGNsdXNpdmUgYXVkaW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjkiIG5hbWU9ImNhbV9yZXNvbHV0aW9uIj4KKyAgICA8dmFsdWU+Q2FtIHJlc29sdXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzMCIgbmFtZT0iY2FtX3Jlc29sdXRpb25faW5mbyI+CisgICAgPHZhbHVlPkNoYW5naW5nIHRoZSByZXNvbHV0aW9uIGFmZmVjdHMgYmFuZHdpZHRoLCBiaWdnZXIgcGljdHVyZSBuZWVkcyBtb3JlIGJhbmR3aXRoITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMxIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fZXJyb3IiPgorICAgIDx2YWx1ZT5Zb3UgZG9uJ3QgaGF2ZSB0aGUgcmlnaHQgdG8gZ2l2ZSB5b3Vyc2VsZiBvciBvdGhlcnMgZXhjbHVzaXZlIGF1ZGlvLiBZb3UgbmVlZCB0byBhcHBseSBmb3IgdGhlIHJpZ2h0IGZyb20gdGhlIG1vZGVyYXRvciBvciBhc2sgdGhlIG1vZGVyYXRvciB0byBnaXZlIHlvdSBleGNsdXNpdmUgYXVkaW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzIiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19hc2siPgorICAgIDx2YWx1ZT5JIHdvdWxkIGxpa2UgdG8gZ2V0IHRoZSByaWdodCBmb3IgZXhjbHVzaXZlIGF1ZGlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzMiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19hY3Rpb24iPgorICAgIDx2YWx1ZT5HaXZlIGV4Y2x1c2l2ZSBhdWRpbyB0byBtZSAoYWx0ZXJuYXRpdmVseSBjbGljayBvbiB5b3VyIHZpZGVvIHBvZCBvciBwcmVzcyBGMTIpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzQiIG5hbWU9Im1pY3JvIGlzIG9uIj4KKyAgICA8dmFsdWU+TWljcm9waG9uZSBpcyBvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNSIgbmFtZT0ibWljcm8gaXMgb2ZmIj4KKyAgICA8dmFsdWU+TWljcm9waG9uZSBpcyBtdXRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM2IiBuYW1lPSJoaWRlX2NoYXQiPgorICAgIDx2YWx1ZT5IaWRlIGNoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNyIgbmFtZT0iaGlkZV9hY3Rpdml0aWVzX2FuZF9hY3Rpb25zIj4KKyAgICA8dmFsdWU+SGlkZSBhY3Rpdml0aWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzgiIG5hbWU9ImhpZGVfZmlsZXNfZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5IaWRlIGZpbGVzIGV4cGxvcmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzkiIG5hbWU9ImhpZGVfYWN0aW9uc19tZW51Ij4KKyAgICA8dmFsdWU+SGlkZSBhY3Rpb25zIG1lbnU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MCIgbmFtZT0iaGlkZV9zY3JlZW5fc2hhcmluZyI+CisgICAgPHZhbHVlPkhpZGUgc2NyZWVuIHNoYXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MSIgbmFtZT0iaGlkZV93aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+SGlkZSB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDIiIG5hbWU9InNob3cgbWljcm9waG9uZSBzdGF0dXMiPgorICAgIDx2YWx1ZT5TaG93IG1pY3JvIHN0YXR1cyBpbiB2aWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQzIiBuYW1lPSJsYXlvdXRfb3B0aW9ucyI+CisgICAgPHZhbHVlPkxheW91dCBvcHRpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDQiIG5hbWU9ImNhbGVuZGFyIG5ldyBidXR0b24iPgorICAgIDx2YWx1ZT5OZXcgRXZlbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0NSIgbmFtZT0iY2FsZW5kYXIgcGFzc3dvcmQgaW5mbyB0ZXh0Ij4KKyAgICA8dmFsdWU+UGFzc3dvcmQgcHJvdGVjdGVkIGFyZSB0aGUgbGlua3MgdG8gdGhlIGNvbmZlcmVuY2UgdGhhdCBhcmUgc2VuZCB0byB0aGUgcGFydGljaXBlbnRzIHdoZW4geW91IHNhdmUgdGhlIGNhbGVuZGFyIGV2ZW50LCBub3QgdGhlIHJvb20hIFRoYXQgbWVhbnMgaWYgeW91IHNhdmUgdGhlIGV2ZW50IG11bHRpcGxlIHRpbWVzIGJ1dCB3aXRoIGRpZmZlcmVudCBwYXNzd29yZHMgZXZlcnkgcGFydGljaXBlbnQgcmVjZWl2ZXMgYSBuZXcgbGluayB0aGF0IGhhcyBhIGRpZmZlcmVudCBwYXNzd29yZC4gQnV0IG9sZCBsaW5rcyBzdGlsbCB3b3JrIG9uY2Ugc2VuZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0NiIgbmFtZT0iY2FsZW5kYXIgZWRpdCBidXR0b24iPgorICAgIDx2YWx1ZT5FZGl0IGRldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0NyIgbmFtZT0ic2lwIHNob3cgZGlhbGVyIj4KKyAgICA8dmFsdWU+U2hvdyBzaXAgZGlhbGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDgiIG5hbWU9InNpcCBjYWxsIj4KKyAgICA8dmFsdWU+Q2FsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ5IiBuYW1lPSJjYWxlbmRhciBjb250YWN0IGxpc3QiPgorICAgIDx2YWx1ZT5TaG93IGNhbGVuZGFyIGV2ZW50cyBvZiBjb250YWN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTAiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPllvdXIgaG9tZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MSIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+UGxhbiB5b3VyIG1lZXRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTIiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPldhdGNoIHJlY29yZGluZyBhbmQgaW50ZXJ2aWV3czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUzIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5DaG9vc2UgYW5kIHN0YXJ0IGEgd2ViLWNvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1NCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIHVzZXJzIGFuZCByaWdodHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1NSIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIGNvbm5lY3Rpb25zIGFuZCBraWNrIHVzZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTYiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSB1c2VyZ3JvdXBzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTciIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBjb25mZXJlbmNlIHJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTgiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBzeXN0ZW0gc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1OSIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIGxhYmVscyBhbmQgd29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYwIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgTERBUCBhbmQgQURTIGNvbmZpZ3VyYXRpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjEiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPkV4cG9ydC9JbXBvcnQgU3lzdGVtIEJhY2t1cHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPllvdSBuZWVkIG1vZGVyYXRpb24gb3IgdGhlIHJpZ2h0IHRvIGRyYXcgb24gd2hpdGVib2FyZCB0byB1cGxvYWQsIGFkZCwgZGVsZXRlIG9yIGxvYWQgZmlsZXMgYW5kIGZvbGRlcnMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjMiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5FZGl0IHRleHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2NCIgbmFtZT0ic2FsdXRhdGlvbiI+CisgICAgPHZhbHVlPlByb2Y8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2NSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5QdWJsaXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjYiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U3RhcnQgUHVibGlzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY3IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlN0b3AgUHVibGlzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY4IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkhvc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2OSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5QdWJsaXNoIEFwcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDcwIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlB1Ymxpc2ggSWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5SZWR1Y2UgdGhlIHdpZHRoIG9mIHRoZSBTaGFyaW5nU2NyZWVuIGJlZm9yZSB5b3UgdHJ5IHRvIG1vdmUgaXQgbGVmdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDcyIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHVjZSB0aGUgaGVpZ2h0IG9mIHRoZSBTaGFyaW5nU2NyZWVuIGJlZm9yZSB5b3UgdHJ5IHRvIG1vdmUgaXQgYm90dG9tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzMiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UmVkdWNlIHRoZSB4IG9mIHRoZSBTaGFyaW5nU2NyZWVuIGJlZm9yZSB5b3UgdHJ5IHRvIG1ha2UgaXQgd2lkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3NCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5SZWR1Y2UgdGhlIHkgb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbWFrZSBpdCBoaWdoZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3NSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5GaWxsIHRoZXNlIHNldHRpbmdzIHN0cmVhbSB5b3VyIHNjcmVlbiBkYXRhIHRvIDN0aCBwYXJ0eSBwcm92aWRlcnMgbGlrZSBqdXN0aW4udHY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3NiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5QbGVhc2Ugc3RhcnQgU2NyZWVuIHNoYXJpbmcgdG8gYmUgYWJsZSB0byBwdWJsaXNoIGl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzciIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+TW9kZXJhdG9yIHBlcm1pc3Npb24gcmVxdWlyZWQgdG8gc3RhcnQgcmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzgiIG5hbWU9Im5vIHJpZ2h0IGZvciBleGNsdXNpdmUgYXVkaW8iPgorICAgIDx2YWx1ZT5Zb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFwcGx5IGV4Y2x1c2l2ZSBhdWRpbyB0byBhbnkgcGFydGljaXBhbnQuIFlvdSBuZWVkIG1vZGVyYXRpb24gcm9sZSBvciB0aGUgcmlnaHQgZm9yIGV4Y2x1c2l2ZSBhdWRpbyB0byBtYWtlIGFueSBtaWNyb3Bob25lIGV4Y2x1c2l2ZSB0dXJuZWQgb24uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc5IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5VcGxvYWQgbmV3IGZpbGUgdG8gZmlsZSBleHBsb3JlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgwIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5PcGVuIG5ldyBkaWFsb2cgd2l0aCBzaGFyaW5nIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODEiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkFuIGV4aXN0aW5nIG1vZGVyYXRvciBtdXN0IGFwcHJvdmUgaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MiIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+QXNrIG1vZGVyYXRvciB0byBzaGFyZSB5b3VyIHdlYmNhbS9taWNybzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgzIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5HYXRoZXIgZmVlZGJhY2sgYnkgY3JlYXRpbmcgYSBwb2xsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODQiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlBhc3QgYW5kIGN1cnJlbnQgcG9sbCByZXN1bHRzIGFzIGNoYXJ0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg1IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5Wb3RlIGlmIHRoZXJlIGlzIGEgcG9sbCBmb3IgdGhpcyBjb25mZXJlbmNlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NiIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+RWRpdCBjYW0gYW5kIG1pYyBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg3IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5Db25maXJtIGFuZCBsZWF2ZSB0aGUgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg4IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5DYWxsIGV4dGVybmFsIHBlb3BsZSB2aWEgVm9JUC9TSVA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4OSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+U2VuZCBhbiBlbWFpbCB3aXRoIGEgZGlyZWN0IGxpbmsgdG8gdGhpcyByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTAiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkNoYW5nZSB5b3VyIHdoaXRlYm9hcmQgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MSIgbmFtZT0iYmFja3VwIGFkbWluIj4KKyAgICA8dmFsdWU+TWF4IHVwbG9hZCBzaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTIiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkFzayBtb2RlcmF0b3IgdG8gc2hhcmUgeW91ciB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTMiIG5hbWU9InByaXZhdGUgY2hhdCI+CisgICAgPHZhbHVlPlN0YXJ0IFByaXZhdGUgQ2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk0IiBuYW1lPSJhbGxfcHJpdmF0ZV9jaGF0Ij4KKyAgICA8dmFsdWU+QWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTUiIG5hbWU9InByaXZhdGUgY2hhdCI+CisgICAgPHZhbHVlPllvdSBjYW5ub3Qgc3RhcnQgYSBwcml2YXRlIGNoYXQgd2l0aCB5b3Vyc2VsZi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NiIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+WW91J3ZlIGFscmVhZHkgc3RhcnRlZCBhIHByaXZhdGUgY2hhdCB3aXRoIHRoaXMgcGFydGljaXBhbnQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTciIG5hbWU9InByaXZhdGUgY2hhdCI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBwcml2YXRlIGNoYXQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTgiIG5hbWU9IlNlcnZlcnMiPgorICAgIDx2YWx1ZT5TZXJ2ZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTkiIG5hbWU9IlNlcnZlcnMiPgorICAgIDx2YWx1ZT5TZXJ2ZXJzIHBhcnRpY2lwYXRpbmcgaW4gY2x1c3RlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAwIiBuYW1lPSJTZXJ2ZXIgbmFtZSI+CisgICAgPHZhbHVlPlNlcnZlciBOYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDEiIG5hbWU9IlNlcnZlciBBZGRyZXNzIj4KKyAgICA8dmFsdWU+U2VydmVyIEFkZHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMiIgbmFtZT0iU2VydmVyIGRldGFpbHMiPgorICAgIDx2YWx1ZT5TZXJ2ZXIgZGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAzIiBuYW1lPSJTZW5kIFNNUyI+CisgICAgPHZhbHVlPlNlbmQgU01TPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDQiIG5hbWU9InB1Ymxpc2hpbmdfbWVzc2FnZSI+CisgICAgPHZhbHVlPlB1Ymxpc2hpbmcuIFVzZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDUiIG5hbWU9ImNtZF9saW5lX2FkbWluIj4KKyAgICA8dmFsdWU+VG8gc2F2ZSB0aW1lIGFuZCBpbnRlcm5ldCB0cmFmZmljIHlvdSBjYW4gdXNlIGNvbW1hbmQgbGluZSBhZG1pbiB0byBiYWNrdXAvcmVzdG9yZS91cGdyYWRlOlxuIDEpIGdvIHRvIE9NIGluc3RhbGwgZGlyIChmb3IgZXguIC9vcHQvcmVkNSkgXG4gMikgc3RvcCBPTSAoZm9yIGV4LiAuL3JlZDUtc2h1dGRvd24uc2gpXG4gMykgLi9hZG1pbi5zaCAtYiAtZmlsZSB+L3RvZGF5X29tX2JhY2t1cC56aXAgKGNyZWF0ZSBiYWNrdXAgb2YgY3VycmVudCBPTSlcbiA0KSBkb3dubG9hZCBhcmNoaXZlIHdpdGggbmV3IE9NXG4gNSkgbXYgL29wdC9yZWQ1IC9vcHQucmVkNS5iYWsgKG1vdmUgd29ya2luZyB2ZXJzaW9uIG9mIE9NIGp1c3QgaW4gY2FzZSA6KSlcbiA2KSBleHRyYWN0IGRvd25sb2FkZWQgT00gdG8gdGhlIC9vcHQvcmVkNVxuIDcpIC4vYWRtaW4uc2ggLWkgLWZpbGUgfi90b2RheV9vbV9iYWNrdXAuemlwIChvciAnLi9hZG1pbi5zaCAtaSAtZmlsZSB+L3RvZGF5X29tX2JhY2t1cC56aXAgLS1kYi10eXBlIG15c3FsIC0tZGItdXNlciBvbV91c2VyIC0tZGItcGFzcyBvbV91c2VyX3Bhc3MnIGluIGNhc2Ugb2YgeW91IGFyZSB1c2luZyBub24tZGVmYXVsdCBEQiApXG4gOCkgc3RhcnQgT01cbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA2IiBuYW1lPSJwdWJsaWNfcm9vbV90b29sdGlwIj4KKyAgICA8dmFsdWU+Um9vbXMgY29tbW9uIHRvIGFsbCB1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDciIG5hbWU9InByaXZhdGVfcm9vbV90b29sdGlwIj4KKyAgICA8dmFsdWU+Um9vbXMgY29tbW9uIHRvIHRoZSBjdXJyZW50IHVzZXIgZ3JvdXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwOCIgbmFtZT0ibXlfcm9vbV90b29sdGlwIj4KKyAgICA8dmFsdWU+Um9vbXMgb2YgdGhlIGN1cnJlbnQgdXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA5IiBuYW1lPSJjcmVhdGVfbmV3X3Jvb20iPgorICAgIDx2YWx1ZT5DcmVhdGUvTW9kaWZ5IGFwcG9pbnRtZW50IHNwZWNpYWwgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTEwIiBuYW1lPSJtdWx0aXBsZV9hZGRyZXNzZXMiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIGVudGVyIG11bHRpcGxlIGFkZHJlc3NlcyBpbiB0aGUgZm9ybWF0OiBmaXJzdG5hbWUxIGxhc3RuYW1lMSAmbHQ7ZW1haWwxJmd0OywiZmlyc3RuYW1lMiBsYXN0bmFtZTIiICZsdDtlbWFpbDImZ3Q7LCdmaXJzdG5hbWUzIGxhc3RuYW1lMycgJmx0O2VtYWlsMyZndDssIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTExIiBuYW1lPSJzdHJlYW1fdm9sdW1lIj4KKyAgICA8dmFsdWU+QWRqdXN0IHN0cmVhbSB2b2x1bWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxMiIgbmFtZT0ibWljcm9waG9uZV92b2x1bWUiPgorICAgIDx2YWx1ZT5BZGp1c3QgbWljcm9waG9uZSB2b2x1bWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxMyIgbmFtZT0iY2hhdF9tb2RlcmF0ZWQiPgorICAgIDx2YWx1ZT5JcyBjaGF0IG1vZGVyYXRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE0IiBuYW1lPSJjaGF0X21vZGVyYXRlZCI+CisgICAgPHZhbHVlPkFsbG93IG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNSIgbmFtZT0iY2hhdF9vcGVuZWQiPgorICAgIDx2YWx1ZT5DaGF0IHBhbmVsIG9wZW5lZCBieSBkZWZhdWx0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTYiIG5hbWU9ImZpbGVzX29wZW5lZCI+CisgICAgPHZhbHVlPkZpbGVzIHBhbmVsIG9wZW5lZCBieSBkZWZhdWx0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTciIG5hbWU9InNlcnZlciBhZG1pbiBzZWN0aW9uIGxhc3RwaW5nIj4KKyAgICA8dmFsdWU+TGFzdCBwaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTgiIG5hbWU9InNlcnZlciBhZG1pbiBzZWN0aW9uIGxhc3RwaW5nIGluZm8iPgorICAgIDx2YWx1ZT5FdmVyeSBzbGF2ZSBzZW5kcyBhIHBpbmcgdG8gdGhlIG1hc3RlciBldmVyeSAzIHNlY29uZHMgKGNvbmZpZ3VyYWJsZSkuIFNsYXZlIGxhc3RQaW5nIG11c3QgYmUgc21hbGxlciB0aGVuIDEgbWludXRlIHNvIHRoYXQgdGhlIG1hc3RlciB1c2VzIHRoZSBzbGF2ZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxOSIgbmFtZT0ic2VydmVyIGFkbWluIHBvcnQiPgorICAgIDx2YWx1ZT5IVFRQIFBvcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyMCIgbmFtZT0ic2VydmVyIGFkbWluIHVzZXIiPgorICAgIDx2YWx1ZT5Vc2VyIChTT0FQLUFjY2Vzcyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyMSIgbmFtZT0ic2VydmVyIGFkbWluIHBhc3N3b3JkIj4KKyAgICA8dmFsdWU+UGFzc3dvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyMiIgbmFtZT0ic2VydmVyIGFkbWluIHdlYmFwcCBwYXRoIj4KKyAgICA8dmFsdWU+V2ViYXBwIHBhdGg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyMyIgbmFtZT0ic2VydmVyIGFkbWluIHByb3RvY29sIj4KKyAgICA8dmFsdWU+UHJvdG9jb2w8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyNCIgbmFtZT0ic2VydmVyIGFkbWluIHBpbmcgcnVubmluZyI+CisgICAgPHZhbHVlPlBpbmcgcnVubmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI1IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gYWN0aXZlIj4KKyAgICA8dmFsdWU+QWN0aXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjYiIG5hbWU9ImdlbmVyYXRlX2hhc2giPgorICAgIDx2YWx1ZT5HZW5lcmF0ZSBVUkw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyNyIgbmFtZT0ibmV0d29yayB0ZXN0aW5nIGxpbmsiPgorICAgIDx2YWx1ZT5OZXR3b3JrIHRlc3Rpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyOCIgbmFtZT0icm9vbV9vcHRpb25zIj4KKyAgICA8dmFsdWU+QXV0byBzZWxlY3QgaW50ZXJ2aWV3IHZpZGVvIHBvZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI5IiBuYW1lPSJmb250X3VuZGVybGluZSI+CisgICAgPHZhbHVlPlVuZGVybGluZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMwIiBuYW1lPSJmb250X3N0eWxlIj4KKyAgICA8dmFsdWU+Rm9udCBzdHlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMxIiBuYW1lPSJhbGxvd19mb250X3N0eWxlcyI+CisgICAgPHZhbHVlPkFsbG93IGZvbnQgc3R5bGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzIiIG5hbWU9ImZvbnRfY29sb3IiPgorICAgIDx2YWx1ZT5Gb250IGNvbG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzMiIG5hbWU9Imh5cGVybGluayI+CisgICAgPHZhbHVlPkh5cGVybGluazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM0IiBuYW1lPSJjb25uZWN0aW9uIGFkbWluIj4KKyAgICA8dmFsdWU+U2hvdyBzZXNzaW9uIHN0YXRpc3RpY3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNSIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbiI+CisgICAgPHZhbHVlPlNlc3Npb24gZGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM2IiBuYW1lPSJzeXN0ZW1faW1wb3J0Ij4KKyAgICA8dmFsdWU+U3lzdGVtIGltcG9ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM3IiBuYW1lPSJpbmNsdWRlX2ludG9fYmFja3VwIj4KKyAgICA8dmFsdWU+SW5jbHVkZSB1cGxvYWRlZCBmaWxlcyBhbmQgcmVjb3JkaW5ncyBpbiBiYWNrdXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzOCIgbmFtZT0icm9vbV9hZG1pbl9zaXAiPgorICAgIDx2YWx1ZT5FbmFibGUgU0lQIHRyYW5zcG9ydCBpbiB0aGUgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM5IiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fY29uZmlybSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBwcm92aWRlIHRoaXMgdXNlciBhbiBleGNsdXNpdmUgYXVkaW8/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NDAiIG5hbWU9Im5vX3RpbWV6b25lIj4KKyAgICA8dmFsdWU+UGxlYXNlIHNwZWNpZnkgeW91ciB0aW1lem9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTQ1IiBuYW1lPSJjb250ZW50X2lzX3NhdmluZyI+CisgICAgPHZhbHVlPkNvbnRlbnQgaXMgU2F2aW5nLCBQbGVhc2Ugd2FpdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKzwvbGFuZ3VhZ2U+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L2xhbmd1YWdlcy9jaGluZXNlIHNpbXBsaWZpZWQueG1sIGIvV2ViQ29udGVudC9sYW5ndWFnZXMvY2hpbmVzZSBzaW1wbGlmaWVkLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMmViZDAyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9sYW5ndWFnZXMvY2hpbmVzZSBzaW1wbGlmaWVkLnhtbApAQCAtMCwwICsxLDQ2NTIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+CisKKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCisKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK1RoaXMgRmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBieSB0aGUgTGFuZ3VhZ2VFZGl0b3IgCit0byBhZGQgbmV3IExhbmd1YWdlcyBvciBtb2RpZnkvY3VzdG9taXplIGl0IHVzZSB0aGUgTGFuZ3VhZ2VFZGl0b3IgCitzZWUgaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnL0xhbmd1YWdlRWRpdG9yLmh0bWwgZm9yIERldGFpbHMgCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy0tPgorPGxhbmd1YWdlIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOm5vTmFtZXNwYWNlU2NoZW1hTG9jYXRpb249Imxhbmd1YWdlLnhzZCI+CisgIDxzdHJpbmcgaWQ9IjEiIG5hbWU9ImNvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT7kvJrorq48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMiIgbmFtZT0ibWVldGluZyI+CisgICAgPHZhbHVlPuS8muiurjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzIiBuYW1lPSJjbGFzc3Jvb20iPgorICAgIDx2YWx1ZT7mvJTorrI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNCIgbmFtZT0ic2V0dGluZ3MiPgorICAgIDx2YWx1ZT7orr7nva48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNSIgbmFtZT0iYmVudXR6ZXIiPgorICAgIDx2YWx1ZT7nlKjmiLc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNiIgbmFtZT0iYWRtaW4iPgorICAgIDx2YWx1ZT7nrqHnkIY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNyIgbmFtZT0ic3RvcCI+CisgICAgPHZhbHVlPuWBnOatojwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT7orrDlvZU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOSIgbmFtZT0ibm9maWxlIj4KKyAgICA8dmFsdWU+5paH5Lu25LiN5a2Y5ZyoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwIiBuYW1lPSJyZWNvcmRieXRlYWNoZXIiPgorICAgIDx2YWx1ZT7nlLHorrLluIjorrDlvZU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEiIG5hbWU9ImNvbm5lY3RlZHVzZXJzIj4KKyAgICA8dmFsdWU+5bey6L+e5o6l55So5oi3PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyIiBuYW1lPSJzdGFydGNvbmYiPgorICAgIDx2YWx1ZT7lvIDlp4vkvJrorq48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMiIG5hbWU9Im15bmFtZSI+CisgICAgPHZhbHVlPuaIkeeahOWQjeensDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNCIgbmFtZT0idmlkZW9jb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+6KeG6aKR5Lya6K6uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1IiBuYW1lPSJpbXBvcnQiPgorICAgIDx2YWx1ZT7lr7zlhaXmvJTnpLo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYiIG5hbWU9InJlZnJlc2hmaWxlcyI+CisgICAgPHZhbHVlPuWIt+aWsOWIl+ihqDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNyIgbmFtZT0idG9tYWluZmlsZSI+CisgICAgPHZhbHVlPui9rOWIsOS4u+S4u+aWh+S7tjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOCIgbmFtZT0ibmV3cG9sbCI+CisgICAgPHZhbHVlPuaWsOW7uuaKleelqDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOSIgbmFtZT0ibmV3cG9sbGhlYWRlciI+CisgICAgPHZhbHVlPuaWsOS8muiuruaKleelqC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAiIG5hbWU9InF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+6Zeu6aKYOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMSIgbmFtZT0icG9sbHR5cGUiPgorICAgIDx2YWx1ZT7mipXnpajnsbvlnos6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyIiBuYW1lPSJjcmVhdGUiPgorICAgIDx2YWx1ZT7liJvlu7o8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMiIG5hbWU9ImluZm9tZXNzYWdlIj4KKyAgICA8dmFsdWU+5o+Q56S6Ouavj+S4qui/nuaOpeeUqOaIt+WwhuaUtuWIsOS4gOS4quaWsOaKleelqOeahOa2iOaBr+aPkOekui48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQiIG5hbWU9ImNyZWF0cG9sbCI+CisgICAgPHZhbHVlPuWIm+W7uuaKleelqDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNSIgbmFtZT0iY2FuY2VsIj4KKyAgICA8dmFsdWU+5Y+W5raIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2IiBuYW1lPSJ5ZXNubyI+CisgICAgPHZhbHVlPuaYry/lkKY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjciIG5hbWU9Im51bWVyaWMiPgorICAgIDx2YWx1ZT7mlbDlrZcgMS0xMDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOCIgbmFtZT0icG9sbCI+CisgICAgPHZhbHVlPuaKleelqDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOSIgbmFtZT0ibW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPuS4u+aMgeS6uuaJjeiDveaPkOmXrjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMCIgbmFtZT0idm90ZSI+CisgICAgPHZhbHVlPuW3suaCqOeahOaKleelqC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEiIG5hbWU9ImFscmVhZHl2b3RlZCI+CisgICAgPHZhbHVlPuaCqOW3sue7j+aKlei/h+i/meS4quelqC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIiIG5hbWU9InZvdGluZyI+CisgICAgPHZhbHVlPuaKleelqCAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzIiBuYW1lPSJhbnN3ZXIiPgorICAgIDx2YWx1ZT7kvaDnmoTlm57nrZQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0IiBuYW1lPSJ5ZXMiPgorICAgIDx2YWx1ZT7mmK88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUiIG5hbWU9Im5vIj4KKyAgICA8dmFsdWU+5ZCmPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2IiBuYW1lPSJxdWVzdGlvbndhbnQiPgorICAgIDx2YWx1ZT7mg7PopoHmj5Dpl646PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3IiBuYW1lPSJwb2xscmVzdWx0cyI+CisgICAgPHZhbHVlPuaKleelqOe7k+aenDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOCIgbmFtZT0icXVlc3Rpb24iPgorICAgIDx2YWx1ZT7mj5Dpl646PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5IiBuYW1lPSJyZXN1bHRzIj4KKyAgICA8dmFsdWU+57uT5p6cOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MCIgbmFtZT0iYW5zd2VycyI+CisgICAgPHZhbHVlPuWbnuetlDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDEiIG5hbWU9Im5vcG9sbCI+CisgICAgPHZhbHVlPui/mOacquW8gOWni+aKleelqC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIiIG5hbWU9InZvdGluZ3MiPgorICAgIDx2YWx1ZT7mipXnpaghPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzIiBuYW1lPSJtZWV0aW5nIj4KKyAgICA8dmFsdWU+5Lya6K6uICjmnIDlpKc055So5oi3KTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NCIgbmFtZT0iY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPuS8muiuriAo5pyA5aSnNTDnlKjmiLcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1IiBuYW1lPSJ0eXBlIj4KKyAgICA8dmFsdWU+57G75Z6LPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2IiBuYW1lPSJyZW1haW5pbmdzZWF0cyI+CisgICAgPHZhbHVlPuWFtuS7luW6p+S9jTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NyIgbmFtZT0iYWxyZWFkeWNob3NlbiI+CisgICAgPHZhbHVlPuW3sue7j+mAieaLqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OCIgbmFtZT0iZW50ZXIiPgorICAgIDx2YWx1ZT7ov5vlhaU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkiIG5hbWU9Im1vZGxlYXZlIj4KKyAgICA8dmFsdWU+5Li75oyB5Lq65bey57uP56a75byALjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MCIgbmFtZT0ic3lzdGVtbWVzc2FnZSI+CisgICAgPHZhbHVlPuezu+e7n+S/oeaBrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MSIgbmFtZT0iY2hvc3NlZGV2aWNlIj4KKyAgICA8dmFsdWU+6K+36YCJ5oup6K6+5aSHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyIiBuYW1lPSJjaG9vc2VjYW0iPgorICAgIDx2YWx1ZT7or7fpgInmi6nmkYTlg4/lpLQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzIiBuYW1lPSJjaG9vc2VtaWMiPgorICAgIDx2YWx1ZT7or7fpgInmi6nor53nrZI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0IiBuYW1lPSJvayI+CisgICAgPHZhbHVlPuehruWumjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NSIgbmFtZT0iY2FuY2VsMiI+CisgICAgPHZhbHVlPuWPlua2iDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NiIgbmFtZT0icmVjb25lZWN0bmVlZGVkIj4KKyAgICA8dmFsdWU+6ZyA6KaB5LuO5paw6L+e5o6lLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NyIgbmFtZT0iZWRpdHNldHVwIj4KKyAgICA8dmFsdWU+57yW6L6R6K6+572uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OCIgbmFtZT0iY291cnNlIj4KKyAgICA8dmFsdWU+6K++6aKYOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OSIgbmFtZT0ibGFuZ3VhZ2UiPgorICAgIDx2YWx1ZT7or63oqIA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwIiBuYW1lPSJvazIiPgorICAgIDx2YWx1ZT7noa7lrpo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEiIG5hbWU9ImNhbmNlbDMiPgorICAgIDx2YWx1ZT7lj5bmtog8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIiIG5hbWU9ImNsZWFyd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPua4hemZpOeZveadvzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MyIgbmFtZT0iY2xlYXJ3aGl0ZWJvYXJkcXVlc3Rpb24iPgorICAgIDx2YWx1ZT7mlrDlm77niYfliqDlhaXlkI7muIXpmaTnmb3mnb8/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0IiBuYW1lPSJkb250YXNrYWdhaW4iPgorICAgIDx2YWx1ZT7kuI3lho3or6Lpl648L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUiIG5hbWU9Im5vIj4KKyAgICA8dmFsdWU+5ZCmPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2IiBuYW1lPSJlZGl0c2V0dXAyIj4KKyAgICA8dmFsdWU+57yW6L6R6K6+572uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3IiBuYW1lPSJuZWVkY29uZmlybWF0aW9ud2hpdGVib2FyZCI+CisgICAgPHZhbHVlPua4hemZpOeZveadv+WJjeehruiupC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgiIG5hbWU9InVzZXJpbmZvIj4KKyAgICA8dmFsdWU+55So5oi35L+h5oGvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5IiBuYW1lPSJjbGVhcmRyYXdhcmVhIj4KKyAgICA8dmFsdWU+5riF6Zmk55S75p2/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwIiBuYW1lPSJ1bmRvIj4KKyAgICA8dmFsdWU+5Y+W5raIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxIiBuYW1lPSJyZWRvIj4KKyAgICA8dmFsdWU+6YeN5YGaPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyIiBuYW1lPSJzZWxlY3RvYmplY3QiPgorICAgIDx2YWx1ZT7pgInmi6nlr7nosaE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMiIG5hbWU9InRleHQiPgorICAgIDx2YWx1ZT7mlofmnKw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQiIG5hbWU9InBhaW50Ij4KKyAgICA8dmFsdWU+57uY55S7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1IiBuYW1lPSJkcmF3bGluZSI+CisgICAgPHZhbHVlPueUu+e6vzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NiIgbmFtZT0iZHJhd3UiPgorICAgIDx2YWx1ZT7kuIvliJLnur88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzciIG5hbWU9InJlY3QiPgorICAgIDx2YWx1ZT7nn6nlvaI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgiIG5hbWU9ImVsbGlwc2UiPgorICAgIDx2YWx1ZT7mpK3lnIY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkiIG5hbWU9ImFycm93Ij4KKyAgICA8dmFsdWU+566t5aS0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwIiBuYW1lPSJkZWxldGVjaG9zZW4iPgorICAgIDx2YWx1ZT7liKDpmaTlt7LpgInpobk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEiIG5hbWU9ImFwcGxpeW1vZCI+CisgICAgPHZhbHVlPuaOpeWPl+S4u+aMgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MiIgbmFtZT0iYXBwbHkiPgorICAgIDx2YWx1ZT7lupTnlKg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODMiIG5hbWU9ImNhbmNlbCI+CisgICAgPHZhbHVlPuWPlua2iDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NCIgbmFtZT0ibW9kIj4KKyAgICA8dmFsdWU+5oiQ5Li65Li75oyBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1IiBuYW1lPSJjbG9zZSI+CisgICAgPHZhbHVlPuWFs+mXrTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NiIgbmFtZT0iaXRhbGljIj4KKyAgICA8dmFsdWU+5pac5L2TPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3IiBuYW1lPSJib2xkIj4KKyAgICA8dmFsdWU+57KX5L2TPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4IiBuYW1lPSJ3YWl0aW5nIj4KKyAgICA8dmFsdWU+562J5b6F5LitPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5IiBuYW1lPSJhcHBseU1lc3NhZ2UiPgorICAgIDx2YWx1ZT7nlKjmiLfmg7PnlLPor7fkuLrkuLvmjIE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwIiBuYW1lPSJhY2NlcHQiPgorICAgIDx2YWx1ZT7mjqXlj5c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTEiIG5hbWU9InJlamVjdCI+CisgICAgPHZhbHVlPuaLkue7nTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MiIgbmFtZT0iY2FuY2VsIj4KKyAgICA8dmFsdWU+5Y+W5raIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzIiBuYW1lPSJzZW5kbW9kcmVxdWVzdG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7lkJHkuIvliJfnlKjmiLflj5HpgIHor7fmsYI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQiIG5hbWU9ImFjY2VwdCI+CisgICAgPHZhbHVlPuaOpeWPlzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NSIgbmFtZT0icmVqZWN0Ij4KKyAgICA8dmFsdWU+5ouS57udPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2IiBuYW1lPSJjaGFuZ2Vtb2QiPgorICAgIDx2YWx1ZT7mm7TmjaLkuLvmjIE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTciIG5hbWU9Im5vbm1vZGVycm9ybWVzc2FnZSI+CisgICAgPHZhbHVlPuS9oOS4jeaYr+i/meS4quivvumimOeahOS4u+aMgSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgiIG5hbWU9Im1vZGVyYXRvciI+CisgICAgPHZhbHVlPuS4u+aMgTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkiIG5hbWU9InJvb21mdWxsbWVzc2FnZSI+CisgICAgPHZhbHVlPuaIv+mXtOW3sua7oS7or7fnqI3lkI7lho3or5UuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMCIgbmFtZT0iZWxsbGlwc2UiPgorICAgIDx2YWx1ZT7mpK3lnIY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxIiBuYW1lPSJjbG9zZSI+CisgICAgPHZhbHVlPuWFs+mXrTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIiIG5hbWU9IkF1dGhFcnJvciI+CisgICAgPHZhbHVlPui+k+WFpemUmeivrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMiIG5hbWU9Im1pbjR1c2VybmFtZSI+CisgICAgPHZhbHVlPueUqOaIt+WQjeW/hemhu+mVv+S6jjTkuKrlrZfnrKY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0IiBuYW1lPSJtaW40cGFzcyI+CisgICAgPHZhbHVlPueUqOaIt+WvhueggeW/hemhu+mVv+S6jjTkuKrlrZfnrKY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1IiBuYW1lPSJ1c2VybmFtZXRha2VuIj4KKyAgICA8dmFsdWU+55So5oi35ZCN5bey5a2Y5ZyoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNiIgbmFtZT0iZW1haWx0YWtlbiI+CisgICAgPHZhbHVlPumCruS7tuWcsOWdgOW3suazqOWGjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDciIG5hbWU9ImVtYWlsdGFrZW4iPgorICAgIDx2YWx1ZT7ns7vnu5/plJnor6/vvIzor7fogZTns7vnrqHnkIblkZg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4IiBuYW1lPSJBdXRobG9naW4iPgorICAgIDx2YWx1ZT7nmbvlvZU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5IiBuYW1lPSJBdXRodXNlciI+CisgICAgPHZhbHVlPueUqOaItzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwIiBuYW1lPSJBdXRocGFzcyI+CisgICAgPHZhbHVlPuWvhueggTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExIiBuYW1lPSJBdXRobGFuZyI+CisgICAgPHZhbHVlPuivreiogDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIiIG5hbWU9IkF1dGhyZWciPgorICAgIDx2YWx1ZT7nmbvlvZU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzIiBuYW1lPSJyZWdmb3JtaGVhZCI+CisgICAgPHZhbHVlPuazqOWGjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQiIG5hbWU9InJlZ2Zvcm11c2VyIj4KKyAgICA8dmFsdWU+55m75b2V6LSm5Y+3OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUiIG5hbWU9InJlZ2Zvcm1wYXNzIj4KKyAgICA8dmFsdWU+5a+G56CBOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYiIG5hbWU9InJlZ2Zvcm1yZXR5cGUiPgorICAgIDx2YWx1ZT7lho3mrKHovpPlhaU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNyIgbmFtZT0icmVnZm9ybWZpcnN0bmFtZSI+CisgICAgPHZhbHVlPuWnkzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4IiBuYW1lPSJyZWdmb3JtbGFzdG5hbWUiPgorICAgIDx2YWx1ZT7lkI06PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOSIgbmFtZT0icmVnZm9ybW1haWwiPgorICAgIDx2YWx1ZT7pgq7ku7Y6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMCIgbmFtZT0icmVnZm9ybXN0YXRlIj4KKyAgICA8dmFsdWU+5Zu95a62OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjEiIG5hbWU9InJlZ2Zvcm1idG4xIj4KKyAgICA8dmFsdWU+5rOo5YaMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMiIgbmFtZT0icmVnZm9ybWJ0bjIiPgorICAgIDx2YWx1ZT7lj5bmtog8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzIiBuYW1lPSJBdXRoYnRuMiI+CisgICAgPHZhbHVlPuazqOWGjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPummlumhtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUiIG5hbWU9InVzZXJhZG1pbiI+CisgICAgPHZhbHVlPueUqOaIt+euoeeQhjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYiIG5hbWU9Imdyb3VwYWRtaW4iPgorICAgIDx2YWx1ZT7nvqTnu4TnrqHnkIY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3IiBuYW1lPSJvcmdhZG1pbiI+CisgICAgPHZhbHVlPue7hOe7h+euoeeQhjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgiIG5hbWU9ImhlYWRjb25mIj4KKyAgICA8dmFsdWU+5Lya6K6u5a6kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOSIgbmFtZT0iY29uZl9wdWIiPgorICAgIDx2YWx1ZT7lhazlvIDkvJrorq48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwIiBuYW1lPSJoZWFkX29yZyI+CisgICAgPHZhbHVlPue7hOe7hzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzEiIG5hbWU9ImJ0bl9lbnRlcnJvb20iPgorICAgIDx2YWx1ZT7ov5vlhaU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2xvZ2luIj4KKyAgICA8dmFsdWU+55m75b2VPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMyIgbmFtZT0idXNlcmFsdGVyc2VsZl9wYXNzIj4KKyAgICA8dmFsdWU+5a+G56CBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNCIgbmFtZT0idXNlcmFsdGVyc2VsZl9wYXNzcmV0eXBlIj4KKyAgICA8dmFsdWU+5YaN5qyh6L6T5YWlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNSIgbmFtZT0idXNlcmFsdGVyc2VsZl9maXJzdG5hbWUiPgorICAgIDx2YWx1ZT7lp5M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2xhc3RuYW1lIj4KKyAgICA8dmFsdWU+5ZCNPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNyIgbmFtZT0idXNlcmFsdGVyc2VsZl9lbWFpbCI+CisgICAgPHZhbHVlPumCruS7tjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgiIG5hbWU9InVzZXJhbHRlcnNlbGZfYmlydGgiPgorICAgIDx2YWx1ZT7nlJ/ml6U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3N0cmVldG5vIj4KKyAgICA8dmFsdWU+5Zyw5Z2APC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MCIgbmFtZT0idXNlcmFsdGVyc2VsZl90b3duIj4KKyAgICA8dmFsdWU+6YKu57yWPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MSIgbmFtZT0idXNlcmFsdGVyc2VsZl9zdGF0ZSI+CisgICAgPHZhbHVlPuWbveWutjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIiIG5hbWU9InVzZXJhbHRlcnNlbGZfYWRyZXNzY29tbWVudCI+CisgICAgPHZhbHVlPuivpue7huWcsOWdgDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMiIG5hbWU9InVzZXJhbHRlcnNlbGZfaGVhZGVyIj4KKyAgICA8dmFsdWU+55So5oi35pWw5o2uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NCIgbmFtZT0ic2F2ZW1lbnViYXJfc2F2ZWxhYmVsIj4KKyAgICA8dmFsdWU+5L+d5a2YPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NSIgbmFtZT0ic2F2ZW1lbnViYXJfc2F2ZWxhYmVsIj4KKyAgICA8dmFsdWU+5L+d5a2YPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NiIgbmFtZT0iYWRtaW5fdXNlcmxpc3RfdXNlcl9pZCI+CisgICAgPHZhbHVlPueUqOaIt+e8luWPtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDciIG5hbWU9ImFkbWluX3VzZXJsaXN0X2xvZ2luIj4KKyAgICA8dmFsdWU+55m75b2VPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OCIgbmFtZT0iYWRtaW5fdXNlcmxpc3RfZmlyc3RuYW0iPgorICAgIDx2YWx1ZT7lp5M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5IiBuYW1lPSJhZG1pbl91c2VybGlzdF9sYXN0bmFtZSI+CisgICAgPHZhbHVlPuWQjTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAiIG5hbWU9InR1cm5vdmVybGlzdF9uZXh0Ij4KKyAgICA8dmFsdWU+5pi+56S65LiL5LiA5LiqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MSIgbmFtZT0idHVybm92ZXJsaXN0X3ByZSI+CisgICAgPHZhbHVlPuaYvuekuuWJjeS4gOS4qjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIiIG5hbWU9InNhdmVjb250ZW50X2NvbmZpcm0iPgorICAgIDx2YWx1ZT7liKDpmaTorrDlvZU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzIiBuYW1lPSJzYXZlY29udGVudF9jb25maXJtX2NhbmNlbF9idG4iPgorICAgIDx2YWx1ZT7lj5bmtog8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU0IiBuYW1lPSJzYXZlY29udGVudF9jb25maXJtX2NvbmZpcm1fYnRuIj4KKyAgICA8dmFsdWU+5Yig6ZmkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NSIgbmFtZT0ic2F2ZW1lbnViYXJfYWRkbGFiZWwiPgorICAgIDx2YWx1ZT7mlrDorrDlvZU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU2IiBuYW1lPSJzYXZlbWVudWJhcl9yZWxvYWRsYWJlbCI+CisgICAgPHZhbHVlPuWIt+aWsOiusOW9lTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTciIG5hbWU9InNhdmVtZW51YmFyX2RlbGV0ZWxhYmVsIj4KKyAgICA8dmFsdWU+5Yig6Zmk6K6w5b2VPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1OCIgbmFtZT0idXNlcmFsdGVyX2FkbWluX3N0YXR1cyI+CisgICAgPHZhbHVlPueKtuaAgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTkiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9zdGF0dXNJdGVtIj4KKyAgICA8dmFsdWU+56aB5q2iPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2MCIgbmFtZT0idXNlcmFsdGVyX2FkbWluX3N0YXR1c0l0ZW0iPgorICAgIDx2YWx1ZT7lhYHorrg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYxIiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fb3JnYW5pc2F0aW9uIj4KKyAgICA8dmFsdWU+57uE57uH566h55CGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2MiIgbmFtZT0iY2FsZW5kYXJfaWNvbmxhYmVsIj4KKyAgICA8dmFsdWU+5pel5Y6GPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2MyIgbmFtZT0ic2F2ZXdpbmRvd19idG4iPgorICAgIDx2YWx1ZT7lhbPpl608L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY0IiBuYW1lPSJvcmdhbmlzYXRpb250YWJsZWxpc3RfaWRyb3ciPgorICAgIDx2YWx1ZT7nu4Tnu4fnvJblj7c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY1IiBuYW1lPSJvcmdhbmlzYXRpb250YWJsZWxpc3RfbmFtZXJvdyI+CisgICAgPHZhbHVlPuWQjeensDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjYiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGlkMSI+CisgICAgPHZhbHVlPueUqOaItzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjciIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGlkMiI+CisgICAgPHZhbHVlPuS4u+aMgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjgiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGlkMyI+CisgICAgPHZhbHVlPueuoeeQhuWRmDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjkiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGxhYmVsIj4KKyAgICA8dmFsdWU+55So5oi357qn5YirPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MCIgbmFtZT0ib3JndmFsdWVfaGVhZGVyIj4KKyAgICA8dmFsdWU+57uE57uHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MSIgbmFtZT0ib3JndmFsdWVfb3JnbmFtZSI+CisgICAgPHZhbHVlPuWQjeensDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzIiIG5hbWU9Im9yZ3ZhbHVlX29yZ25hbWUiPgorICAgIDx2YWx1ZT7mt7vliqDnu4Tnu4c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTczIiBuYW1lPSJvcmd2YWx1ZV9vcmduYW1lIj4KKyAgICA8dmFsdWU+5re75Yqg57uE57uHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3NCIgbmFtZT0ib3JndmFsdWVfdXNlcndpbiI+CisgICAgPHZhbHVlPuWPlua2iDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzUiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW4iPgorICAgIDx2YWx1ZT7mt7vliqA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc2IiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luIj4KKyAgICA8dmFsdWU+5Yig6Zmk57uE57uHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3NyIgbmFtZT0ib3JndmFsdWVfdXNlcmxpc3QiPgorICAgIDx2YWx1ZT7nlKjmiLc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc4IiBuYW1lPSJvcmd2YWx1ZV91c2VybGlzdGFkZCI+CisgICAgPHZhbHVlPua3u+WKoOeUqOaItzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzkiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJsaXN0ZGVsZXRlIj4KKyAgICA8dmFsdWU+5Yig6Zmk55So5oi3PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4MCIgbmFtZT0ib3JndmFsdWVfdXNlcndpbmhlYWRlciI+CisgICAgPHZhbHVlPua3u+WKoOeUqOaItzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODEiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5zZWFyY2hmaWVsZCI+CisgICAgPHZhbHVlPuaQnOe0oueUqOaItzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODIiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5zZWFyY2hidG4iPgorICAgIDx2YWx1ZT7mkJzntKI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgzIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luc2VhcmNocmVzdWx0Ij4KKyAgICA8dmFsdWU+55So5oi3PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NCIgbmFtZT0ibG9naW53aW5fY2hvb3Nlb3JnYW5pc2F0aW9uIj4KKyAgICA8dmFsdWU+57uE57uHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NSIgbmFtZT0ibG9naW53aW5fY2hvb3Nlb3JnYW5pc2F0aW9uYnRuIj4KKyAgICA8dmFsdWU+6L+b5YWlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NiIgbmFtZT0ibmF2aV9yb29tYWRtaW4iPgorICAgIDx2YWx1ZT7kvJrorq7lrqQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg3IiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+5Lya6K6u5a6kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4OCIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPue8luWPtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODkiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT7lkI3np7A8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkwIiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+5YWs5byAPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5MSIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPue7hOe7hzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTIiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT7kvJrorq7lrqQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkzIiBuYW1lPSJyb29tdmFsdWVfbmFtZSI+CisgICAgPHZhbHVlPuWQjeensDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTQiIG5hbWU9InJvb212YWx1ZV90eXBlIj4KKyAgICA8dmFsdWU+57G75Z6LPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NSIgbmFtZT0icm9vbXZhbHVlX2lzcHVibGljIj4KKyAgICA8dmFsdWU+5YWs5byAPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NiIgbmFtZT0icm9vbXZhbHVlX2NvbW1lbnQiPgorICAgIDx2YWx1ZT7lpIfms6g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk3IiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVpY29uIj4KKyAgICA8dmFsdWU+5L+d5a2YPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5OCIgbmFtZT0id2hpdGVib2FyZF9vcGVuaWNvbiI+CisgICAgPHZhbHVlPui9veWFpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTkiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2luaGVhZGVyIj4KKyAgICA8dmFsdWU+5Y+m5a2Y5Li6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMCIgbmFtZT0id2hpdGVib2FyZF9zYXZlYXN3aW50ZXh0Ij4KKyAgICA8dmFsdWU+5paH5Lu25ZCNPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMSIgbmFtZT0iZmlsZXMiPgorICAgIDx2YWx1ZT7mlofku7blkI08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAyIiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbmJ0bjEiPgorICAgIDx2YWx1ZT7lj5bmtog8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAzIiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbmJ0bjIiPgorICAgIDx2YWx1ZT7kv53lrZg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA0IiBuYW1lPSJycGNlcnJvcndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT7plJnor688L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA1IiBuYW1lPSJsb2Fkd21sX2hlYWRlciI+CisgICAgPHZhbHVlPuivu+WPluS4rTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDYiIG5hbWU9ImxvYWR3bWxfbWVzc3Nsb2FkIj4KKyAgICA8dmFsdWU+5a+56LGh5bey6L295YWlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNyIgbmFtZT0ibG9hZHdtbF9tZXNzc3luYyI+CisgICAgPHZhbHVlPuWQjOatpeeUqOaIt+S4rSwg55So5oi36K+3562J5b6FOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDgiIG5hbWU9ImxvYWRpbWFnZV9tZXNzbG9hZCI+CisgICAgPHZhbHVlPui9veWFpeWbvuWDjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDkiIG5hbWU9ImxvYWRpbWFnZV9tZXNzc3luYyI+CisgICAgPHZhbHVlPuWQjOatpeeUqOaIt+S4rSwg55So5oi36K+3562J5b6FOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTAiIG5hbWU9ImxvYWR3bWxfY29uZmlybWhlYWRlciI+CisgICAgPHZhbHVlPua4hemZpOe7mOeUuzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTEiIG5hbWU9ImxvYWR3bWxfY29uZmlybW1lc3MiPgorICAgIDx2YWx1ZT7muIXpmaTnu5jnlLssIOe7mOeUu+aVsOaNruWwhuS4ouWksTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTIiIG5hbWU9ImxvYWR3bWxfY29uZmlybW1lc3MyIj4KKyAgICA8dmFsdWU+6L295YWl5paH5Lu25YmN6K+356Gu6K6kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMyIgbmFtZT0ic2VuZF9pbnZpdGF0aW9uX2J0biI+CisgICAgPHZhbHVlPuWPkemAgemCgOivtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTQiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT7lj5HpgIHpgoDor7c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE1IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fc3ViamVjdCI+CisgICAgPHZhbHVlPuS4u+mimDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTYiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9yZWNpcGllbnQiPgorICAgIDx2YWx1ZT7mlLbkv6Hkuro8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE3IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fbWVzc2FnZSI+CisgICAgPHZhbHVlPua2iOaBrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTgiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9idG5fY29uZmlybSI+CisgICAgPHZhbHVlPuWPkemAgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTkiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9idG5fY2FuY2VsIj4KKyAgICA8dmFsdWU+5Y+W5raIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyMCIgbmFtZT0ic2VuZF9jaGF0X3RleHRfYnRuIj4KKyAgICA8dmFsdWU+5Y+R6YCBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyMSIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2hlYWRlciI+CisgICAgPHZhbHVlPueUqOaIt+aVsOaNrjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjIiIG5hbWU9Imludml0ZWRfdXNlcndpbl9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+5Lya6K6u5pi156ewPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyMyIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2xvZ2luIj4KKyAgICA8dmFsdWU+5pi156ewPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNCIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2ZpcnN0bmFtZSI+CisgICAgPHZhbHVlPuWnkzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjUiIG5hbWU9Imludml0ZWRfdXNlcndpbl9sYXN0bmFtZSI+CisgICAgPHZhbHVlPuWQjTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjYiIG5hbWU9Imludml0ZWRfdXNlcndpbl9tYWlsIj4KKyAgICA8dmFsdWU+6YKu5Lu2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNyIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2xhbmciPgorICAgIDx2YWx1ZT7or63oqIA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI4IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZW50ZXIiPgorICAgIDx2YWx1ZT7ov5vlhaU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI5IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZW50ZXIiPgorICAgIDx2YWx1ZT7ovb3lhaXkuK08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMwIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZW50ZXIiPgorICAgIDx2YWx1ZT7mlbDmja7ovb3lhaXvvIzor7fnrYnlvoUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMSIgbmFtZT0idXNlcl9yZWdpc3RlckZhbHNlUFdEIj4KKyAgICA8dmFsdWU+6ZSZ6K+v55qE5a+G56CBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMiIgbmFtZT0idXNlcl9yZWdpc3RlckZhbHNlUFdESGVhZGVyIj4KKyAgICA8dmFsdWU+5a+G56CB5LiN5b6X5bCR5LqONuS4quWtl+espjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzMiIG5hbWU9InVzZXJfcmVnaXN0ZXJNYWlsRXJyb3IiPgorICAgIDx2YWx1ZT7pgq7ku7bmnInor688L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM0IiBuYW1lPSJ1c2VyX3JlZ2lzdGVyTWFpbEVycm9ySGVhZGVyIj4KKyAgICA8dmFsdWU+6Z2e5rOV6YKu5Lu25Zyw5Z2APC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzNSIgbmFtZT0idXNlcl9yZWdpc3RlclN1Y2Nlc3MiPgorICAgIDx2YWx1ZT7ms6jlhozmiJDlip88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM2IiBuYW1lPSJ1c2VyX3JlZ2lzdGVyU3VjY2Vzc0hlYWRlciI+CisgICAgPHZhbHVlPueUqOaIt+W3suW7uueriy4g6K+355m75b2VLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzciIG5hbWU9InVzZXJfc2hhcmluZ19tZXNzYWdlIj4KKyAgICA8dmFsdWU+546w5Zyo5LiN6IO95YWx5Lqr5bGP5bmVLiDlsY/luZXlt7Lkvb/nlKguPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzOCIgbmFtZT0idXNlcl9zaGFyaW5nX21lc3NhZ2VIZWFkZXIiPgorICAgIDx2YWx1ZT7npoHmraLlhbHkuqs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM5IiBuYW1lPSJ1c2VyX2RvU3RhcnRTY3JlZW5WaWV3ZXIiPgorICAgIDx2YWx1ZT7lhbHkuqvlsY/luZU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQwIiBuYW1lPSJzY3JlZW5fd2FybkJhbmR3aWR0aCI+CisgICAgPHZhbHVlPuS8oOi+k+acieivrzog5LiN6IO95ZCM5q2l5bGP5bmVLiDlvZPliY3nqpflj6PlsIbkuKLlpLEuIOivt+iBlOezu+S4u+aMgeS6uumZjeS9jueUu+i0qC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQxIiBuYW1lPSJzY3JlZW5fdXNlcmxhYmVsIj4KKyAgICA8dmFsdWU+5bGP5bmVOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDIiIG5hbWU9IndoaXRlYm9hcmRfdGFiX3BhaW50Ij4KKyAgICA8dmFsdWU+57uY55S7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0MyIgbmFtZT0id2hpdGVib2FyZF90YWJfZG9jdW1lbnQiPgorICAgIDx2YWx1ZT7mlofmoaM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ0IiBuYW1lPSJ0YWJiYXJfY2hhdGljb24iPgorICAgIDx2YWx1ZT7orqjorro8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ1IiBuYW1lPSJ0YWJiYXJfZmlsZXNpY29uIj4KKyAgICA8dmFsdWU+5paH5Lu2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0NiIgbmFtZT0idGFiYmFyX3BhcnRpY2lwYW50c2ljb24iPgorICAgIDx2YWx1ZT7miJDlkZg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ3IiBuYW1lPSJzd2ZwcmVzZW50YXRpb25fbGlzdHNhdmVvcmlnIj4KKyAgICA8dmFsdWU+5LiL6L295Y6f5aeL5paH5qGjPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0OCIgbmFtZT0ic3dmcHJlc2VudGF0aW9uX2xpc3RzYXZlcGRmIj4KKyAgICA8dmFsdWU+5LiL6L29UERG5paH5qGjPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0OSIgbmFtZT0ic3dmcHJlc2VudGF0aW9uX2xpc3Rsb2Fkc3dmIj4KKyAgICA8dmFsdWU+6L295YWl5ryU56S65Yiw55m95p2/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MCIgbmFtZT0ibmF2aW1haW5fY29uZmlnIj4KKyAgICA8dmFsdWU+6K6+572uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MSIgbmFtZT0id2hpdGVib2FyZF9ib3VuZGluZ2JveF9kcmFnIj4KKyAgICA8dmFsdWU+5ouW5Yqo6L+Z5Liq5a+56LGhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MiIgbmFtZT0id2hpdGVib2FyZF9ib3VuZGluZ2JveF9yZXNpemUiPgorICAgIDx2YWx1ZT7nvKnmlL7ov5nkuKrlr7nosaE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUzIiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl96b29tIj4KKyAgICA8dmFsdWU+JTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTQiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3NsaWRlIj4KKyAgICA8dmFsdWU+5LmLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1NSIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfZmlyc3RzbGlkZSI+CisgICAgPHZhbHVlPui9rOWIsOesrOS4gOmhtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTYiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3ByZXNsaWRlIj4KKyAgICA8dmFsdWU+6L2s5Yiw5YmN5LiA6aG1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1NyIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfbmV4dHNsaWRlIj4KKyAgICA8dmFsdWU+6L2s5Yiw5ZCO5LiA6aG1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1OCIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfbGFzdHNsaWRlIj4KKyAgICA8dmFsdWU+6L2s5Yiw5pyA5ZCO5LiA6aG1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1OSIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfem9vbW1pbnVzIj4KKyAgICA8dmFsdWU+57yp5bCPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MCIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfem9vbXBsdXMiPgorICAgIDx2YWx1ZT7mlL7lpKc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYxIiBuYW1lPSJzYWx1dGF0aW9uX21yIj4KKyAgICA8dmFsdWU+5YWI55SfLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjIiIG5hbWU9InNhbHV0YXRpb25fbWlzcyI+CisgICAgPHZhbHVlPuWls+Wjqy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYzIiBuYW1lPSJuYXZpbWFpbl9jb25mYWRtaW4iPgorICAgIDx2YWx1ZT7phY3nva7kv6Hmga88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY0IiBuYW1lPSJjb25mdGFibGVfaGVhZGVySWQiPgorICAgIDx2YWx1ZT7luo/lj7c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY1IiBuYW1lPSJjb25mdGFibGVfaGVhZGVya2V5Ij4KKyAgICA8dmFsdWU+5YWz6ZSu5a2XPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2NiIgbmFtZT0iY29uZmFkbWluZm9ybV9oZWFkZXIiPgorICAgIDx2YWx1ZT7phY3nva7kv6Hmga88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY3IiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsa2V5Ij4KKyAgICA8dmFsdWU+5YWz6ZSu5a2XPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2OCIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbHVwZGF0ZWQiPgorICAgIDx2YWx1ZT7mnIDmlrDmm7TmlrA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY5IiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsdXBkYXRlZGJ5Ij4KKyAgICA8dmFsdWU+5pu05paw6ICFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MCIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbGNvbW1lbnQiPgorICAgIDx2YWx1ZT7ms6jph4o8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjcxIiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsa2V5Ij4KKyAgICA8dmFsdWU+5YWz6ZSu5a2XPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MiIgbmFtZT0idHVybm92ZXJsaXN0X21heHJlc3VsdHMiPgorICAgIDx2YWx1ZT7nmoQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjczIiBuYW1lPSJvcmdhbmlzYXRpb25fdXNlcnNoZWFkZXIiPgorICAgIDx2YWx1ZT7nlKjmiLc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc0IiBuYW1lPSJvcmdhbmlzYXRpb25fdXNlcnNpY29uZGVsZXRlIj4KKyAgICA8dmFsdWU+5LuO57uE57uH5Lit5Yig6Zmk55So5oi3PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NSIgbmFtZT0ib3JnYW5pc2F0aW9uX3VzZXJzZGVsZXRlZGhlYWQiPgorICAgIDx2YWx1ZT7liKDpmaQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc2IiBuYW1lPSJvcmdhbmlzYXRpb25fdXNlcnNhbHJlYWRhZGRlZCI+CisgICAgPHZhbHVlPuatpOe7hOe7h+S4reW3suWtmOWcqOivpeeUqOaIty48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc3IiBuYW1lPSJkYXNoYm9hcmRfbmV3c2hlYWRlciI+CisgICAgPHZhbHVlPuaWsOmXuzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzgiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtzaGVhZGVyIj4KKyAgICA8dmFsdWU+5b+r6YCf6ZO+5o6lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3OSIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua0NvbmYiPgorICAgIDx2YWx1ZT7kvJrorq7lrqTlr7zoiKo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgwIiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rQXVkaXQiPgorICAgIDx2YWx1ZT7op4LkvJflrqTlr7zoiKo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgxIiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rc3VwcG9ydCI+CisgICAgPHZhbHVlPuacjeWKoeS4juaUr+aMgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODIiIG5hbWU9ImRhc2hib2FyZF9xdWlja2hvbWVwYWdldXJsIj4KKyAgICA8dmFsdWU+aHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnLzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODMiIG5hbWU9ImRhc2hib2FyZF9xdWlja21haWxpbmdsaXN0dXJsIj4KKyAgICA8dmFsdWU+aHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnL21haWwtbGlzdHMuaHRtbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODQiIG5hbWU9ImRhc2hib2FyZF9yZXBvcnRidWdzIj4KKyAgICA8dmFsdWU+6L2v5Lu26Zeu6aKY5Y+N6aaIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4NSIgbmFtZT0iZGFzaGJvYXJkX3Jzc2xpc3RpdGVtbGlua3RleHQiPgorICAgIDx2YWx1ZT7mm7TlpJo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg2IiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5raG9tZXBhZ2VsYWJlbCI+CisgICAgPHZhbHVlPumhueebruS4u+mhtSAoaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODciIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmttYWlsaW5nbGlzdGxhYmVsIj4KKyAgICA8dmFsdWU+55So5oi36YKu5Lu25YiX6KGoIChodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvbWFpbC1saXN0cy5odG1sKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODgiIG5hbWU9ImxvZ2luX3JlbWVtYmVydXNlciI+CisgICAgPHZhbHVlPuiusOW9leeZu+W9lTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODkiIG5hbWU9Im1haW5fbmF2aSI+CisgICAgPHZhbHVlPuWGheWuuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTAiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT7miJHnmoTkuLvpobU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkxIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+5oiR55qE5Lya6K6u5pel56iLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MiIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPuaIkeeahOS6i+S7tuaXpeeoizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTMiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT7lvIDmlL7kvJrorq48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk0IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+56eB5Lq65Lya6K6uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NSIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPuW8gOaUvuS6i+S7tjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTYiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT7np4Hkurrkuovku7Y8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk3IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+5byA5pS+5YaF5a65PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5OCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPuengeS6uuWGheWuuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTkiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT7kuKrkurrlhoXlrrk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAwIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMSIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPuS4u+aMgeS6ujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDIiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT7nlLPor7fkuLrkuLvmjIHkuro8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAzIiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+5oqV56WoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNCIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPumAieaLqeaWh+S7tjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDUiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT7orr7nva48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA2IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+6KeG6aKR6Z+z6aKR6K6+572uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNyIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPueZveadv+iuvue9rjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDgiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT7pgIDlh7o8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA5IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+5Zue5Yiw5oi/6Ze0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMCIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPuazqOmUgDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTEiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+5qGM6Z2i5p+l55yL5ZmoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMiIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7lkK/liqjmoYzpnaLmn6XnnIvlmag8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEzIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPuinhumikeWSjOmfs+mikTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTQiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+6K6o6K66PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxNSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7nmb3mnb88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE2IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPuS4u+aMgeS6ujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTciIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+5paH5Lu2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxOCIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7nlKjmiLc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE5IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPuaKleelqDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjAiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+5rKh5pyJ5q2k55So5oi35ZCNPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyMSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7kuIDlsIHljIXlkKvnibnmrorpk77mjqXnmoTpgq7ku7blt7Llj5HpgIHoh7PkvaDnmoTkv6HnrrEs6K+35p+l5pS2LuWmguaenOayoeacieaUtuWIsCzor7fmo4Dmn6XlkozosIPmlbTkvaDnmoTpgq7nrrHlnoPlnL7pgq7ku7borr7nva4s6YeN5paw5Y+R6YCB6K6k6K+B6YKu5Lu2LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjIiIG5hbWU9ImVycm9ydHlwZSI+CisgICAgPHZhbHVlPumUmeivrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjMiIG5hbWU9ImVycm9ydHlwZSI+CisgICAgPHZhbHVlPua2iOaBrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjQiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPuaXoOaViOeahOWTiOW4jOWAvCzmsqHmnInor6XnlKjmiLcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNSIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+6YeN572u5L2g55qE5a+G56CBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNiIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+55m75b2VPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNyIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+5pu05pS55a+G56CBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyOCIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+5paw5a+G56CBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyOSIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+6YeN5paw6L6T5YWl5a+G56CBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzMCIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+5a+G56CB5LiN5LiA6Ie0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzEiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPjTkuKrmiJbmm7TlpJrnmoTlrZfnrKYs5rOo5oSP5aSn5bCP5YaZITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzIiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPuWvhueggeiuvue9ruWujOavlSzkvaDlj6/ku6XnmbvlvZUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzMyIgbmFtZT0icnBjY2FsbGJhY2siPgorICAgIDx2YWx1ZT7lrozmiJA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM0IiBuYW1lPSJycGNnZW5lcmFsZXJyb3IiPgorICAgIDx2YWx1ZT7mnKrnn6XplJnor68uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7mnKrlj5HnjrDor6XnlKjmiLflkI08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM2IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPuaXoOaViOWvhueggTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzciIG5hbWU9ImxvZ291dCI+CisgICAgPHZhbHVlPuazqOmUgOaIkOWKnzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzgiIG5hbWU9InJlZ2lzdHJhdGlvbiI+CisgICAgPHZhbHVlPuemgeatouWJjeerr+azqOWGjC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM5IiBuYW1lPSJyZWdpc3RyYXRpb24iPgorICAgIDx2YWx1ZT7ml6DmlYjpgq7ku7blnLDlnYA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQwIiBuYW1lPSJyZWdpc3RyYXRpb24iPgorICAgIDx2YWx1ZT7mlofku7blkI3ph43lpI0sIOivt+mAieaLqeWPpuS4gOaWh+S7tuWQjTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDEiIG5hbWU9ImZpbGVicm93c2VyIj4KKyAgICA8dmFsdWU+5paH5Lu25ZCN5aSq55+tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MiIgbmFtZT0iZmlsZWJyb3dzZXIiPgorICAgIDx2YWx1ZT7ml6Dms5Xkv53lrZjlnLDlnYA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQzIiBuYW1lPSJ1c2VyYWRtaW4iPgorICAgIDx2YWx1ZT7nlKjmiLflt7Llop7liqAs5L2G5L2g5b+F6aG75bCG6K+l55So5oi35LiO5LiA5Liq57uE57uH5YWz6IGULOWQpuWImeS7luWPr+iDveaXoOazleeZu+W9lS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ0IiBuYW1lPSJhZG1pbmZvcm1zIj4KKyAgICA8dmFsdWU+5paw57qq5b2VPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+5LiO5q2k5a2X5q6157yW5Y+35rKh5pyJ5a+55bqU55qE5a2X5q61PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+5rKh5pyJ5Y+R546w6K+l5qCH562+5a+55bqU55qE5a2X5q61PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NyIgbmFtZT0iZXJyb3JtZXNzYWdlIj4KKyAgICA8dmFsdWU+6ZyA6KaB566h55CG5ZGY5p2D6ZmQPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0OCIgbmFtZT0ibWFpbm5hdmkiPgorICAgIDx2YWx1ZT7or63oqIDnvJbovpHlmag8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ5IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7or63oqIA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUwIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7moIfor4blj7c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUxIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7moIfor4blkI3np7A8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUyIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7moIfor4blgLw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUzIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7lrZfmrrXlgLw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU0IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7moIfnrb7lkI08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU1IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7moIfnrb7lgLw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU2IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7moIfnrb7lj7c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU3IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7mgqjlj6rliKDpmaTkuobmoIfnrb7ogIzmsqHliKDpmaTlrZfmrrXvvIzlm6DkuLrlrZfmrrXlj6/og73ooqvlhbblroPmoIfnrb7miYDkvb/nlKjjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU4IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7ml6DmlYjnmoTmoIfnrb7lj7fvvIxGaWVsZExhbmd1YWdlc3ZhbHVlc19JZOWcqOaVsOaNruW6k+S4ree8uuWksS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU5IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7mgqjkuI3og73liKDpmaTor6XlrZfmrrXjgILlj6rog73liKDpmaTmoIfnrb7jgILlvZPliY3msqHmnInovb3lhaXor6XlrZfmrrXnmoTmoIfnrb7vvIzlj6/og73mmK/lr7nlupTnmoTlrZfmrrXnmoTmoIfnrb7nvLrlpLHnmoTnvJjmlYU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYwIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7lr7zlh7o8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYxIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7kvaDlv4Xpobvms6jplIDmiY3og73nnIvliLDlj5jljJYuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+5aKe5Yqg5paw55qE6K+t6KiAPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+5Yig6Zmk6K+t6KiAPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+5aKe5Yqg5paw55qE6K+t6KiAPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+5ZCN56ewPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+5aKe5Yqg6K+t6KiAPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+5aSH5Lu9PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2OCIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+5Yiw6aaW6aG1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2OSIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+5Yiw5YmN5LiA6aG1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MCIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+5Yiw5LiL5LiA6aG1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MSIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+5Yiw5pyA5ZCO5LiA6aG1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MiIgbmFtZT0idmlkZW9ib3giPgorICAgIDx2YWx1ZT7nlKjmiLflj5HoqIA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzczIiBuYW1lPSJ2aWRlb2JveCI+CisgICAgPHZhbHVlPuWjsOmfsyDlvIAv5YWzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3NCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+57O757ufPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3NSIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+5L2g55qE6K6+572uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3NiIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+5L2g5aW9LDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzciIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPue8lui+keS9oOeahOS/oeaBrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzgiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPuaWsOa2iOaBrzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc5IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT7kuIrkvKDmlrDlm77niYc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgwIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPueUqOaIt+aVsOaNriAtIOWvvOWHujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODEiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+5omA5pyJ55qE57uE57uH5b+F6aG75LqL5YWI5a2Y5ZyoITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODIiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+5byA5aeL5a+85Ye6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4MyIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT7nlLHnu4Tnu4c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg0IiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPuW8gOWni+WvvOWHujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODUiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+55So5oi35pWw5o2uIC0g5a+85YWlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NiIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT7pgInmi6kgdXNlcnMueG1sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+5a+85YWlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4OCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+5a+85Ye65Li6IFhNTCAtIOi/meS6m+aWh+S7tuiDveeUqOS6jjogLSDliJvlu7rpobnnm64gLSDlr7zlhaXliLDlj6bkuIDkuKrns7vnu58gLSDlpIfku70gLSDoh6rlrprkuYkgLSDmlL7lhaVsYW5ndWFnZSDnm67lvZUs5Y+v5Lul5Zyo5LiL5LiA5qyh5a6J6KOF5L2/55SoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4OSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+6YCJ5oup5LiA5Liq6K+t6KiA5paH5Lu25a+85YWlLiDlnKjkuIvmi4nmoYbkuK3pgInmi6nmraPnoa7nmoTor63oqIAhIOS4jeeuoeaWh+S7tueahOWQjeensOaYr+S7gOS5iCwg5bCG6KaG55uW5b2T5YmN55qE6K+t6KiAITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTAiIG5hbWU9ImltcG9ydHdpbmRvdyI+CisgICAgPHZhbHVlPuWvvOWFpSAtIOmAieaLqeaWh+S7tjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTEiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT7lj6blrZjkuLo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkyIiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+5ZCN56ewOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTMiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT7ms6jph4o8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk0IiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+5L+d5a2YPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+6K6w5b2VPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NiIgbmFtZT0icmVjb3JkZXIiPgorICAgIDx2YWx1ZT7orrDlvZXmn6XnnIvlmag8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk3IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT7lvIDmlL7lkoznp4HkurrmiL/pl7TorrDlvZU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk4IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT7nlKjmiLcgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTkiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPuW3suWPguWKoDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAwIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAxIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT7mraTmiL/pl7TnmoTnlKjmiLc6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMiIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+5Yi35pawPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMyIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+5q2k5oi/6Ze05bey5ruhLiDor7fnqI3lkI7lho3or5UuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNCIgbmFtZT0icm9vbXNMaXN0Ij4KKyAgICA8dmFsdWU+54K55Ye75oi/6Ze06I635Y+W6K+m57uG5L+h5oGvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNSIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+5LiO5q2k5oi/6Ze05YaF55qE55So5oi36K6o6K66OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDYiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPuaIv+mXtDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA3IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT7mraTmiL/pl7TlhoXnmoTnlKjmiLc6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwOCIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+6Ieq5LuOOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDkiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPuaSreaUvuiusOW9lTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTAiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPumVv+W6pjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDExIiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT7ml6XmnJ86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMiIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+6K6w5b2V5qih5byPISDkvaDkuI3og73mm7TmlLnku7vkvZXkv6Hmga8sIOi/meaYr+S4gOS4quiusOW9leaWh+S7tiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDEzIiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT7mkq3mlL7mraTorrDlvZU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE0IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT7mkq3mlL4gLyDmmoLlgZw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE1IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT7lvIDlp4vorrDlvZU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE2IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT7lgZzmraLorrDlvZU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE3IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT7orrDlvZXkuK06PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxOCIgbmFtZT0icmVjb3JkX2Vycm9yX21zZyI+CisgICAgPHZhbHVlPueOsOWcqOW3sue7j+acieS6uuWcqOiusOW9lTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE5IiBuYW1lPSJyZWNvcmRfbWVzc2FnZSI+CisgICAgPHZhbHVlPuiusOW9leS4rSEg6K6w5b2V55So5oi3OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjAiIG5hbWU9InJlY29yZF9jYW5jZWwiPgorICAgIDx2YWx1ZT7lj5bmtog8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIxIiBuYW1lPSJyZWNvcmRfY2FuY2FsX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT7orrDlvZXlsIbooqvlj5bmtojkuJTkuI3ooqvkv53lrZguPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyMiIgbmFtZT0iY2FuY2VsX2RpYWxvZ19yZXN1bWUiPgorICAgIDx2YWx1ZT7nu6fnu608L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIzIiBuYW1lPSJjYW5jZWxfZGlhbG9nX3Jlc3VtZV90b29sdGlwIj4KKyAgICA8dmFsdWU+5YWz6Zet5q2k56qX5Y+j5bm25LiU57un57ut6K6w5b2VPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyNCIgbmFtZT0icGFpbnR0b29sc19lbGxpcHNlX2NvbG9yIj4KKyAgICA8dmFsdWU+5L+u5pS557q/5p2h6aKc6ImyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyNSIgbmFtZT0iY29sb3JwaWNrZXJfaGVhZCI+CisgICAgPHZhbHVlPumAieaLqeminOiJsjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjYiIG5hbWU9InBhaW50dG9vbHNfbGluZV9kaXNhYmxlIj4KKyAgICA8dmFsdWU+56aB5q2iIC8g5YWB6K64IOe6v+adoeminOiJsjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjciIG5hbWU9InBhaW50dG9vbHNfZmlsbF9kaXNhYmxlIj4KKyAgICA8dmFsdWU+5L+u5pS55aGr5YWF6aKc6ImyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyOCIgbmFtZT0icGFpbnR0b29sc19saW5lX2Rpc2FibGUiPgorICAgIDx2YWx1ZT7npoHmraIgLyDlhYHorrgg5aGr5YWF6aKc6ImyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyOSIgbmFtZT0iY2hhbmdlX3dpZHRoX2Fycm93X2Rvd25fc2xpZGVyIj4KKyAgICA8dmFsdWU+5L+u5pS5IOe6v+WuvTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzAiIG5hbWU9ImNsb3NlX3NtYWxsX3BvcHVwcyI+CisgICAgPHZhbHVlPuWFs+mXrTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzEiIG5hbWU9InBhaW50X3Rvb2xfbGV0dGVyIj4KKyAgICA8dmFsdWU+5L+u5pS5IOWtl+S9k+Wkp+WwjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzIiIG5hbWU9InJlY29yZGluZ3NsaXN0X2RlbGV0ZSI+CisgICAgPHZhbHVlPuWIoOmZpOiusOW9lTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzMiIG5hbWU9InJlY29yZGluZ3NsaXN0X3JlY29yZGVkQnlHdWVzdCI+CisgICAgPHZhbHVlPuWuouS6ujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzQiIG5hbWU9InJlY29yZGluZ3NsaXN0X3JlY29yZGVkYnkiPgorICAgIDx2YWx1ZT7nlLE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNSIgbmFtZT0icmVjb3JkaW5nc190YWJsZV9oZWFkX25hbWUiPgorICAgIDx2YWx1ZT7lkI3np7A8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM2IiBuYW1lPSJyZWNvcmRpbmdzX3RhYmxlX2hlYWRfcm9vbSI+CisgICAgPHZhbHVlPuaIv+mXtDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzciIG5hbWU9InJlY29yZGluZ3NfdGFibGVfaGVhZF9kYXRlIj4KKyAgICA8dmFsdWU+5pel5pyfPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzOCIgbmFtZT0icmVjb3JkX3N0YXJ0X2NhbmNlbCI+CisgICAgPHZhbHVlPuWPlua2iDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzkiIG5hbWU9InJlY29yZF9zdGFydF9zdGFydCI+CisgICAgPHZhbHVlPuW8gOWnizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDAiIG5hbWU9ImZpbGVzYnJvd3Nlcl90YWJsZV9oZWFkX25hbWUiPgorICAgIDx2YWx1ZT7lkI3np7A8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQxIiBuYW1lPSJmaWxlc2Jyb3dzZXJfdGFibGVfaGVhZF9kYXRlIj4KKyAgICA8dmFsdWU+5pel5pyfPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MiIgbmFtZT0iY2hhdF9jbGVhcl9oaXN0b3J5Ij4KKyAgICA8dmFsdWU+5Yig6Zmk5pyN5Yqh5Zmo56uv6K6o6K666K6w5b2VPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MyIgbmFtZT0iY2hhdF9vdmVyYWxsX2hlYWRlciI+CisgICAgPHZhbHVlPuiuqOiuujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDQiIG5hbWU9ImNoYXRfc2VuZF9idG4iPgorICAgIDx2YWx1ZT7lj5HpgIHmtojmga88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ1IiBuYW1lPSJjaGF0X2Vtb3RfYnRuIj4KKyAgICA8dmFsdWU+6KGo5oOFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NiIgbmFtZT0iY2hhdF9lbW90X3dpbiI+CisgICAgPHZhbHVlPuihqOaDhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDciIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5ncyI+CisgICAgPHZhbHVlPumAieaLqeWPkeW4g+iuvuWkhzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDgiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPumfs+mikeWSjOinhumikTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDkiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPuWPquaciemfs+mikTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTAiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPuWPquacieinhumikTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTEiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPuaXoCDpn7PpopEv6KeG6aKRICjpnZnmgIHlm77niYcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1MiIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2luZm9fdGV4dCI+CisgICAgPHZhbHVlPuS9oOeahOS4quS6uueUteiEkeS4iuWwhuS4jeS8muaciSDpn7PpopEv6KeG6aKRIOWPkeW4gywg6ICM55So5L2g5Liq5Lq65L+h5oGv6YeM55qE5Zu+54mH5Luj5pu/5pi+56S6LiDlpoLmnpzkvaDpgYfliLDluKblrr3pl67popjmiJbogIXpgJ/luqbov4fmhaIsIOivt+mAieaLqei/meS6m+iuvue9ri48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUzIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX21vbmRheSI+CisgICAgPHZhbHVlPuS4gDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTQiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfdHVlc2RheSI+CisgICAgPHZhbHVlPuS6jDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTUiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfd2VkbmVzZGF5Ij4KKyAgICA8dmFsdWU+5LiJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NiIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV90aHVyc2RheSI+CisgICAgPHZhbHVlPuWbmzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTciIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfZnJpZGF5Ij4KKyAgICA8dmFsdWU+5LqUPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1OCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9zYXR1cmRheSI+CisgICAgPHZhbHVlPuWFrTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTkiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfc3VuZGF5Ij4KKyAgICA8dmFsdWU+5pelPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9tb25kYXkiPgorICAgIDx2YWx1ZT7mmJ/mnJ/kuIA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYxIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1R1ZXNkYXlMYWJlbCI+CisgICAgPHZhbHVlPuaYn+acn+S6jDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjIiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfV2VkbmVzZGF5TGFiZWwiPgorICAgIDx2YWx1ZT7mmJ/mnJ/kuIk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYzIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1RodXJzZGF5TGFiZWwiPgorICAgIDx2YWx1ZT7mmJ/mnJ/lm5s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY0IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX0ZyaWRheUxhYmVsIj4KKyAgICA8dmFsdWU+5pif5pyf5LqUPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9TYXR1cmRheUxhYmVsIj4KKyAgICA8dmFsdWU+5pif5pyf5YWtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NiIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9TdW5kYXlMYWJlbCI+CisgICAgPHZhbHVlPuaYn+acn+aXpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjciIG5hbWU9ImNhbGVuZGFyX3dlZWtudW1iZXJfaGVhZGVyIj4KKyAgICA8dmFsdWU+5pif5pyfPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2OCIgbmFtZT0iY2FsZW5kYXJfd2Vla251bWJlcl9oZWFkZXJUb29sdGlwIj4KKyAgICA8dmFsdWU+5pif5pyf5pel5Y6GPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2OSIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPuS4gOaciDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzAiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT7kuozmnIg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDcxIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+5LiJ5pyIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3MiIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPuWbm+aciDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzMiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT7kupTmnIg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc0IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+5YWt5pyIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3NSIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPuS4g+aciDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzYiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT7lhavmnIg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc3IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+5Lmd5pyIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3OCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPuWNgeaciDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzkiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT7ljYHkuIDmnIg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgwIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+5Y2B5LqM5pyIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4MSIgbmFtZT0iY2FsZW5kYXJ3aW5faGVhZGVyIj4KKyAgICA8dmFsdWU+5pel5Y6GPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4MiIgbmFtZT0icm9vbWFkbWluX2xhYmVsTnVtYmVyT2ZQYXJ0aWNpcGFudHMiPgorICAgIDx2YWx1ZT7lj4LkuI7ogIU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgzIiBuYW1lPSJyb29tVmFsdWVfYWR2YW5jZWRTZXR0aW5ncyI+CisgICAgPHZhbHVlPuaYvuekuuW4g+WxgOiuvue9rjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODQiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfdmlkZW9YIj4KKyAgICA8dmFsdWU+WCB8IFk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg1IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3ZpZGVvWSI+CisgICAgPHZhbHVlPuWuvSB8IOmrmDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODYiIG5hbWU9InJvb21BZG1pbl9sYXlvdXQiPgorICAgIDx2YWx1ZT7op4bpopEt5a655ZmoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NyIgbmFtZT0icm9vbUFkbWluX2xheW91dF9tb2QiPgorICAgIDx2YWx1ZT7kuLvmjIHkurot5a655ZmoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4OCIgbmFtZT0icm9vbUFkbWluX2xheW91dF9tb2RfcG9zIj4KKyAgICA8dmFsdWU+WDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODkiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPueZveadvy3lrrnlmag8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkwIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmRfc2hvdyI+CisgICAgPHZhbHVlPuWFgeiuuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTEiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZF9wb3MiPgorICAgIDx2YWx1ZT5YIHwgWTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTIiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPuWuvSB8IOmrmDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTMiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXMiPgorICAgIDx2YWx1ZT7mlofku7Ys6K6o6K66LOWPguS4juiAhSAtIENvbnRhaW5lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTQiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXNfc2hvdyI+CisgICAgPHZhbHVlPuWFgeiuuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTUiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXNfcG9zIj4KKyAgICA8dmFsdWU+WCB8WTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTYiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXMiPgorICAgIDx2YWx1ZT7lrr0gfCDpq5g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk3IiBuYW1lPSJtb2RlcmF0b3JfZ29uZV9tZXNzYWdlIj4KKyAgICA8dmFsdWU+5Li75oyB5Lq65bey56a75byA5oi/6Ze0LiDnjrDlnKjml6DkurrmvJTnpLouIOS9oOWPr+S7peeUs+ivt+S4uuS4u+aMgeS6uuaIluiAheetieW+hS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk4IiBuYW1lPSJtb2RlcmF0b3JfbWVzc2FnZV9ldmVudF9ub19tb2QiPgorICAgIDx2YWx1ZT7mraTmiL/pl7TmsqHmnInkuLvmjIHkurosIOS9huaYr+acieWPguS4juiAhS4g5L2g5Y+v5Lul55Sz6K+35Li65Li75oyB5Lq65oiW6ICF562J5b6FLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTkiIG5hbWU9ImZlZWRiYWNrX3RlbXBsYXRlX3N1YmplY3QiPgorICAgIDx2YWx1ZT7lj43ppojnu5kkQVBQX05BTUU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAwIiBuYW1lPSJpbnZpdGF0aW9uX3RlbXBsYXRlX2hlYWQiPgorICAgIDx2YWx1ZT4kQVBQX05BTUXigJTigJTpgoDor7c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAxIiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfZnJvbSI+CisgICAgPHZhbHVlPua2iOaBr+WPkeiHqjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAyIiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfbWVzc2FnZSI+CisgICAgPHZhbHVlPua2iOaBrzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAzIiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfY2xpY2tfdGV4dCI+CisgICAgPHZhbHVlPueCueWHu+atpOmTvuaOpeadpeWPguS4juS8muiurjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA0IiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfY2xpY2tfdGV4dF9saW5rIj4KKyAgICA8dmFsdWU+54K55Ye75q2k5aSE6L+b5YWl5oi/6Ze0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwNSIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X2NsaWNrX3RleHRfaGVscCI+CisgICAgPHZhbHVlPuWmguaenOS9oOWcqOatpOmTvuaOpemBh+WIsOmXrumimCwg6K+35ou36LSd5bm257KY6LS05q2k6ZO+5o6l5Yiw5rWP6KeI5Zmo5LitOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDYiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9oZWFkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1F4oCU4oCU5rOo5YaMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwNyIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X2hlYWQyIj4KKyAgICA8dmFsdWU+5L2g55qE55So5oi35pWw5o2uOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDgiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF91c2VybmFtZSI+CisgICAgPHZhbHVlPueZu+W9lTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA5IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfcGFzcyI+CisgICAgPHZhbHVlPuWvhueggTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTEwIiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfbWFpbCI+CisgICAgPHZhbHVlPumCruS7tjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTExIiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfYnllIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1F4oCU4oCU5Zui6ZifPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxMiIgbmFtZT0icmVnaXN0ZXJfbWFpbF9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+JEFQUF9OQU1F4oCU4oCU5rOo5YaMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxMyIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNReKAlOKAlOmHjee9ruWvhueggTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTQiIG5hbWU9InJlc2V0X3Bhc3N3b3JkX3RlbXBsYXRlX3Rlc3RfbGluayI+CisgICAgPHZhbHVlPueCueWHu+atpOmTvuaOpeW5tumUruWFpeaWsOWvhueggTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE1IiBuYW1lPSJyZXNldF9wYXNzd29yZF90ZW1wbGF0ZV90ZXh0Ml9saW5rIj4KKyAgICA8dmFsdWU+54K55Ye75q2k5aSE6ZSu5YWl5paw5a+G56CBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNiIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfdGV4dDNfbGluayI+CisgICAgPHZhbHVlPuWmguaenOS9oOWcqOatpOmTvuaOpemBh+WIsOmXrumimCwg6K+35ou36LSd5bm257KY6LS05q2k6ZO+5o6l5Yiw5rWP6KeI5Zmo5LitOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTciIG5hbWU9InJlc2V0X3Bhc3N3b3JkX21haWxfc3ViamVjdCI+CisgICAgPHZhbHVlPiRBUFBfTkFNReezu+e7n+mHjee9ruWvhueggTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTgiIG5hbWU9ImRhdGVSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPuivt+i+k+WFpeS4gOS4quacieaViOeahOaXpeacnywg5q+U5aaCIDI0LjEyLjIwMDEgKOWkqS7mnIgu5bm0KTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTkiIG5hbWU9ImVtYWlsUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT7or7fovpPlhaXkuIDkuKrmnInmlYjnmoTpgq7ku7blnLDlnYAsIOavlOWmgiBuYW1lQG1haWwuY29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyMCIgbmFtZT0iZmxvYXRSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPuivt+i+k+WFpeS4gOS4qua1rueCueaVsCwg5q+U5aaCIDEuMDA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIxIiBuYW1lPSJudW1iZXJSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPuivt+i+k+WFpeS4gOS4quaVtOaVsCwg5q+U5aaCIDEwMDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjIiIG5hbWU9InBob25lUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT7or7fovpPlhaXkuIDkuKrmnInmlYjnmoTnlLXor53lj7fnoIEsIOavlOWmgiArKzg2IDAxMCAxMjMxMjEyMzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjMiIG5hbWU9InRpbWVSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPuivt+i+k+WFpeS4gOS4quacieaViOeahOaXtumXtCwg5q+U5aaCIDEyOjIzICjlsI/ml7Y65YiG6ZKfKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjQiIG5hbWU9Imludml0YXRpb25fd2luZG93Ij4KKyAgICA8dmFsdWU+5a+G56CB5L+d5oqkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNSIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfcGFzc3dvcmRMYWJlbCI+CisgICAgPHZhbHVlPuWvhueggTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjYiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkTGFiZWwiPgorICAgIDx2YWx1ZT7mnInmlYjmnJ88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI3IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZCI+CisgICAgPHZhbHVlPuayoeaciee7k+adnzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjgiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkIj4KKyAgICA8dmFsdWU+5pe25pyfPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyOSIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWQiPgorICAgIDx2YWx1ZT7ku6XliY08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMwIiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZEZyb21MYWJlbCI+CisgICAgPHZhbHVlPuS7jjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMxIiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZFRvTGFiZWwiPgorICAgIDx2YWx1ZT7liLA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMiIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfTWFpbFN1YmplY3QiPgorICAgIDx2YWx1ZT7pgoDor7flj4LliqAkQVBQX05BTUXnmoTorqjorro8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMzIiBuYW1lPSJpbnZpdGF0aW9uX2Vycm9yIj4KKyAgICA8dmFsdWU+5rKh5pyJ5q2k6YKA6K+356CB5a+55bqU55qE5pyJ5pWI6YKA6K+3PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzNCIgbmFtZT0iaW52aXRhdGlvbl9lcnJvciI+CisgICAgPHZhbHVlPuatpOmCgOivt+W3suiiq+S9v+eUqC4g5q2k56eN57G75Z6L6YKA6K+35LiN6IO96YeN55SoLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzUiIG5hbWU9Imludml0YXRpb25fZXJyb3IiPgorICAgIDx2YWx1ZT7mraTpgoDor7fnoIHml6DmlYguPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzNiIgbmFtZT0iaW52aXRhdGlvbl9wYXNzIj4KKyAgICA8dmFsdWU+5a+G56CBOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzciIG5hbWU9Imludml0YXRpb25fcGFzc19idG4iPgorICAgIDx2YWx1ZT7mo4Dmn6Xlr4bnoIE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM4IiBuYW1lPSJpbnZpdGF0aW9uX3Bhc3NfZXJyb3IiPgorICAgIDx2YWx1ZT7ml6DmlYjlr4bnoIEhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzOSIgbmFtZT0iQnJvd3NlciI+CisgICAgPHZhbHVlPua1j+iniDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDAiIG5hbWU9ImF1ZGlvX3ZpZGVvIj4KKyAgICA8dmFsdWU+5ZCM5q2lIOmfs+mikS/op4bpopE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQxIiBuYW1lPSJlcnJvckNvZGVfaW52YWxpZFNlc3Npb24iPgorICAgIDx2YWx1ZT7nmbvlvZXmnInmlYgsIOS9huaYr+S8muivneayoeaciea/gOa0u+aIluS/neWtmOWcqOacjeWKoeWZqOS4ii4g5L2g5b+F6aG76YeN5paw55m75b2V6I635Y+W5paw55qE5Lya6K+dLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDIiIG5hbWU9ImVycm9yY29kZV9zZXRVc2VyT2JqZWN0Ij4KKyAgICA8dmFsdWU+55So5oi35rKh5pyJ55m75b2V5oiW5rKh5pyJ566h55CG5ZGY5p2D6ZmQLiBTT0FQ572R5YWz5b+F6aG76KaB5pyJ566h55CG5ZGY5p2D6ZmQ5omN5Y+v5Lul5re75Yqg5paw55So5oi3LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDMiIG5hbWU9ImVycm9yY29kZV9sb2dpbkJ5UmVtb3RlVXNlciI+CisgICAgPHZhbHVlPuatpOS8muivneayoeaciei/nOerr+aVsOaNrui/nuaOpS4g5Zyo6K6/6Zeu5bqU55So56iL5bqP5LmL5YmN5L2g5Y+v6IO95rKh5pyJ6LCD55SoU09BUOe9keWFs+aIluiAheS9oOS9v+eUqOS6humUmeivr+eahFNlc3Npb24tSUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ0IiBuYW1lPSJkZWJ1Z19tZXNzYWdlX3JlY29yZGluZyI+CisgICAgPHZhbHVlPuiusOW9leWKn+iDvea1i+ivleS5i+S4rSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ1IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWFZhbHVlIj4KKyAgICA8dmFsdWU+eDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDYiIG5hbWU9InByb3BlcnR5UGFuZWxYVmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPnjovbQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ3IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWVZhbHVlIj4KKyAgICA8dmFsdWU+eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDgiIG5hbWU9InByb3BlcnR5UGFuZWxZVmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPnnovbQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ5IiBuYW1lPSJwcm9wZXJ0eVBhbmVsV2lkdGhWYWx1ZSI+CisgICAgPHZhbHVlPnc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUwIiBuYW1lPSJwcm9wZXJ0eVBhbmVsV2lkdGhWYWx1ZUxhYmVsIj4KKyAgICA8dmFsdWU+5a69PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1MSIgbmFtZT0icHJvcGVydHlQYW5lbEhlaWdodFZhbHVlIj4KKyAgICA8dmFsdWU+aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTIiIG5hbWU9InByb3BlcnR5UGFuZWxIZWlnaHRWYWx1ZUxhYmVsIj4KKyAgICA8dmFsdWU+6auYPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1MyIgbmFtZT0icHJvcGVydHlPcGFjaXR5U2xpZGVyIj4KKyAgICA8dmFsdWU+5pS55Y+Y6YCP5piO5bqmPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1NCIgbmFtZT0iYnJvd3Nlck9wZW4iPgorICAgIDx2YWx1ZT7mtY/op4jlmajmiZPlvIA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU1IiBuYW1lPSJicm93c2VyQ2xvc2UiPgorICAgIDx2YWx1ZT7mtY/op4jlmajlhbPpl608L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU2IiBuYW1lPSJjb25uZWN0aW9uTG9zdE1lc3NhZ2UiPgorICAgIDx2YWx1ZT7kuI7mnI3liqHlmajnmoTov57mjqXlt7LkuKLlpLEuIOS9oOmcgOimgemHjeaWsOi9veWFpeeoi+W6j+aIluajgOafpee9kee7nC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU3IiBuYW1lPSI1NTciPgorICAgIDx2YWx1ZT7mjIfpkog8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU4IiBuYW1lPSJzeW5jIG1lc3NhZ2UgaGVhZGVyIj4KKyAgICA8dmFsdWU+5ZCM5q2lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1OSIgbmFtZT0iU3luY2hyb25pemluZyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+5q2j5Zyo5ZCM5q2l55So5oi3LCDor7fnrYnlvoU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYwIiBuYW1lPSJleHBvcnRUb1NWRyI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O+S4i+i9veS4uiBTVkcmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MSIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O+S4i+i9veS4uiBQTkcmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MiIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O+S4i+i9veS4uiBKUEcmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MyIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O+S4i+i9veS4uiBQREYmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2NCIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O+S4i+i9veS4uiBUSUYmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2NSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPuaPkOmGkjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY2IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+57G75YirOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjciIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT7ph43lpI06PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2OCIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPuaXoDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjkiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT7kvY3nva46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MCIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPuW8gOWnizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzEiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT7nu5PmnZ88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTcyIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+5qCH6aKYOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzMiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT7ms6jph4o6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NCIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPumCgOivtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzUiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT7mr4/ml6U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc2IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+5q+P5pyIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NyIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPuavj+W5tDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzgiIG5hbWU9ImFsZXJ0Ij4KKyAgICA8dmFsdWU+57qm5Lya57uT5p2f5pel5pyf5b+F6aG75pma5LqO5byA5aeL5pel5pyfITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzkiIG5hbWU9ImFsZXJ0Ij4KKyAgICA8dmFsdWU+6K+35o+S5YWl5LiA5Liq5qCH6aKYITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODAiIG5hbWU9IjU4MCI+CisgICAgPHZhbHVlPlJUTDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODEiIG5hbWU9IjU4MSI+CisgICAgPHZhbHVlPuWmguaenOaCqOaJgOeUqOeahOivreiogOaYr+iHquWPs+WQkeW3pueahO+8jOivt+a/gOa0u+atpOmAiemhue+8iOWPjei9rOWtl+avjemhuuW6j++8iTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODIiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+5Luq6KGo5p2/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MyIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT7op4LnnIvlt7LorrDlvZXnmoTkvJrorq7miJbkuovku7Y8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg0IiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPuS8muiuriAtIOWIm+W7uuS4gOS4qjTkurrkvJrorq7vvIjmnIDlpJoxNuS6uu+8iSZsdDtici8mZ3Q75q+P5Liq5Lq66YO95pyJ6Z+z6aKRK+inhumikeadg+mZkDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODUiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+5LqL5Lu2IC0g5Yib5bu65LiA5Liq5pyA5aSa5pyJMjAw5Liq5ZCs5LyX55qE5Lya6K6uJmx0O2JyLyZndDvlj6rmnInkuLvmjIHkurrmi6XmnInpn7PpopEv6KeG6aKRPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4NiIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT7liJvlu7rnlKjmiLcsIOaIv+mXtCwg57uE57uHJmx0O2JyLyZndDsgKyDkv67mlLnphY3nva48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg3IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT7nm67liY3mnInnlKjmiLflnKjmraTmiL/pl7TkuK08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg4IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT7ouqvku73or4bliKs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg5IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT7nmbvlvZU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkwIiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5EPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5MSIgbmFtZT0ic3dmIHN5bmMgbWVzc2FnZSI+CisgICAgPHZhbHVlPui9veWFpeaWh+aho+S4rS4g5omA5pyJ55So5oi35q2j5Zyo5ZCM5q2l77yM6K+356iN562JLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTIiIG5hbWU9InVwbG9hZCBkaWFsb2ciPgorICAgIDx2YWx1ZT7kuIrkvKDnu5PmnZ8sIOato+WcqOi9rOaNouaWh+ahoyAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkzIiBuYW1lPSJ1cGxvYWQgZGlhbG9nIj4KKyAgICA8dmFsdWU+5byA5aeL5LiK5LygPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NCIgbmFtZT0idXBsb2FkIGRpYWxvZyI+CisgICAgPHZhbHVlPuS4iuS8oO+8jOWvvOWFpeWvueivneahhi4g6K+35LuO56Gs55uY5LiK6YCJ5oup5LiA5Liq5paH5Lu2LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTUiIG5hbWU9InVwbG9hZCBEaWFsb2ciPgorICAgIDx2YWx1ZT7lj5bmtog8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk2IiBuYW1lPSJ1cGxvYWQgRGlhbG9nIj4KKyAgICA8dmFsdWU+6YCJ5oup5paH5Lu2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NyIgbmFtZT0iYWRtaW5pc3RyYXRpb24gbmF2aWdhdGlvbiI+CisgICAgPHZhbHVlPui/nuaOpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTgiIG5hbWU9ImNvbmZhZG1pbiB2YWx1ZSBsaXN0Ij4KKyAgICA8dmFsdWU+5YC8PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5OSIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPua1gee8luWPtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDAiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT7nmbvlvZU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAxIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+5bey6L+e5o6lIOS7jjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDIiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT7miL/pl7QgLyDojIPlm7Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAzIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+6Lii5Ye655So5oi3PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwNCIgbmFtZT0ia2ljayB1c2VyIGNvbmZpcm1hdGlvbiBkaWFsb2ciPgorICAgIDx2YWx1ZT7ouKLlh7rnlKjmiLc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA1IiBuYW1lPSJraWNrIHVzZXIgY29uZmlybWF0aW9uIGRpYWxvZyI+CisgICAgPHZhbHVlPuS9oOehruiupOS7juatpOi/nuaOpeaWreW8gOeUqOaIt++8nyZsdDtici8mZ3Q7IOS7heWwhueUqOaIt+S7juatpOaIv+mXtOi4ouWHui7nlKjmiLflj6/ku6Xph43mlrDov57lhaUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwNiIgbmFtZT0ia2ljayB1c2VyIG1lc3NhZ2UgZGlhbG9nIj4KKyAgICA8dmFsdWU+5L2g55qE5Lya6K+d5bey57uP6KKr566h55CG5ZGY5oiW5Li75oyB5Lq65YWz6ZetLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDciIG5hbWU9InVzZXJhbHRlcnNlbGZfcGhvbmUiPgorICAgIDx2YWx1ZT7nlLXor508L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA4IiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT7nlKjmiLfmmK/mraTmiL/pl7TnmoTkuLvmjIHkuro8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA5IiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT7nlKjmiLfooqvlhYHorrjlnKjnmb3mnb/kuIrnlLvnlLs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEwIiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT4oUmUpIOWQr+WKqOmfs+mikS/op4bpopEg5oiW6ICF5L+u5pS56K6+5aSH6YWN572uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMSIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+5YWB6K645q2k55So5oi35Zyo55m95p2/5LiK55S755S7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMiIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+56e76Zmk5Zyo55m95p2/55S755S75Yqf6IO9PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMyIgbmFtZT0iY29uZmVyZW5jZVBhbmVscyI+CisgICAgPHZhbHVlPueUqOaItzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTQiIG5hbWU9ImNvbmZlcmVuY2VQYW5lbHMiPgorICAgIDx2YWx1ZT7mlofku7Y8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE1IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+55m95p2/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxNiIgbmFtZT0iY29uZmVyZW5jZVBhbmVscyI+CisgICAgPHZhbHVlPuiuqOiuujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTciIG5hbWU9Im9yZ2FuaXphdGlvbiBjaG9vc2UgaW5mbyI+CisgICAgPHZhbHVlPuS9oOeahOW4kOWPt+W3suS4juWkmuS4que7hOe7h+WFs+iBlC4g6K+35Li65b2T5YmN5Lya6K+d6YCJ5oup5LiA5Liq57uE57uHLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTgiIG5hbWU9ImVycm9yIG1lc3NhZ2Ugcm9vbSBmdWxsIj4KKyAgICA8dmFsdWU+5Lya6K6u5a6k5b2T5YmN5ruh5ZGY77yM6K+356iN5ZCO5YaN6K+VPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxOSIgbmFtZT0icm9vbXR5cGVzIj4KKyAgICA8dmFsdWU+5Lya6K6u5a6k57G75Z6LPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyMCIgbmFtZT0iYXBwb2ludGVkX3Jvb20iPgorICAgIDx2YWx1ZT7mjIflrprkvJrorq7lrqQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIxIiBuYW1lPSJzZXJ2ZXJ0aW1lIj4KKyAgICA8dmFsdWU+5pyN5Yqh5Zmo5pe26Ze0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyMiIgbmFtZT0iaW52X3JlbWluZGVyX3RlbXBsYXRlX2hlYWQiPgorICAgIDx2YWx1ZT4kQVBQX05BTUXkvJrorq7ns7vnu5/igJTigJTmj5DphpI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIzIiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9mcm9tIj4KKyAgICA8dmFsdWU+55So5oi35L+h5oGv77yaPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNCIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfbWVzc2FnZSI+CisgICAgPHZhbHVlPua2iOaBr++8mjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjUiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2NsaWNrX3RleHQiPgorICAgIDx2YWx1ZT7ngrnlh7vmraTpk77mjqXlj4LliqDkvJrorq48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI2IiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9jbGlja190ZXh0X2xpbmsiPgorICAgIDx2YWx1ZT7ngrnlh7vov5vlhaXkvJrorq7lrqQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI3IiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9jbGlja190ZXh0X2hlbHAiPgorICAgIDx2YWx1ZT7lpoLmnpzkuIvpnaLnmoTpk77mjqXml6Dms5Xngrnlh7vvvIzor7flsIbmraTpk77mjqXlnLDlnYDlpI3liLbliLDmtY/op4jlmajkuK3ov5vooYzorr/pl67vvJo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI4IiBuYW1lPSJidG5fc2VhcmNoX2ludGVybiI+CisgICAgPHZhbHVlPuaQnOe0ojwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjkiIG5hbWU9ImJ0bl9zZWFyY2hfZXh0ZXJuIj4KKyAgICA8dmFsdWU+5aSW6YOo55So5oi3PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzMCIgbmFtZT0ibGJsX3ByZW5hbWUiPgorICAgIDx2YWx1ZT7lpLTooZQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMxIiBuYW1lPSJsYmxfbmFtZSI+CisgICAgPHZhbHVlPuWnk+WQjTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzIiIG5hbWU9ImxibF9lbWFpbCI+CisgICAgPHZhbHVlPumCruS7tuWcsOWdgDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzMiIG5hbWU9ImxvZ291dENvbmZpcm1fdGl0bGUiPgorICAgIDx2YWx1ZT7noa7orqTms6jplIA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM0IiBuYW1lPSJsb2dvdXRDb25maXJtX3N1cmVfdG9fbG9nb3V0X3F1ZXN0aW9uIj4KKyAgICA8dmFsdWU+5oKo56Gu5a6a6KaB5rOo6ZSA5ZCX77yfPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNSIgbmFtZT0ibWFpbiBtZW51Ij4KKyAgICA8dmFsdWU+5pON5L2cPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPua8lOekuuS8muiuruWupDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT7mvJTnpLrml7bpl7Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM4IiBuYW1lPSJtZWV0aW5nIFRpbWVyIj4KKyAgICA8dmFsdWU+5Lya6K6u5a6k6K6h5pe25ZmoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzOSIgbmFtZT0ibWVldGluZyBUaW1lciI+CisgICAgPHZhbHVlPuatpOS8muiuruWupOWPquaYr+S4gOS4qua8lOekuuOAguWmguaenOS4jeaDs+atpOitpuWRiuWHuueOsO+8jOWPr+S7peWIm+W7uuS4gOS4quengeS6uuS8muiuruWupOaIluiAheiuvue9ruaCqOiHquW3seeahOacjeWKoeWZqOOAguaCqOeahOeZu+W9leWwhuS8muWcqOWmguS4i+aXtumXtOWGheiiq+iHquWKqOazqOmUgO+8mjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDAiIG5hbWU9Im1lZXRpbmcgcm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPuS4u+aMgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDEiIG5hbWU9Im1vZGVyYXRlZCByb29tIHdhaXRpbmcgbWVzc2FnZSI+CisgICAgPHZhbHVlPuS8muiuruWupOmcgOimgeS4gOS4quS4u+aMgeS6uu+8jOS4u+aMgeS6uuWPr+S7peaYr+iusuW6p+S6uuOAgeeuoeeQhuWRmOaIluS8muiuruWupOWIm+W7uuiAheOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDIiIG5hbWU9ImVycm9yIHBvcHVwIj4KKyAgICA8dmFsdWU+56Gu5a6aPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MyIgbmFtZT0id2luZG93IHNjcmVlbnNoYXJpbmciPgorICAgIDx2YWx1ZT7mlrDnmoTlsY/luZXlhbHkuqs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ0IiBuYW1lPSJ3aW5kb3cgc2NyZWVuIHNoYXJpbmciPgorICAgIDx2YWx1ZT7lsY/luZXlhbHkuqvvvIzmnaXoh6rnlKjmiLc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ1IiBuYW1lPSJ3aW5kb3cgc2NyZWVuIHNoYXJpbmciPgorICAgIDx2YWx1ZT7lvIDlp4vlub/mkq08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ2IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPua3u+WKoOaWsOS8muiurjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDciIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+5Lya6K6u5a6kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0OCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT7mtLvliqjlrqQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ5IiBuYW1lPSJtYWluIG1lbnUgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPuS4u+aMgeS6ujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTAiIG5hbWU9Im1lbnUgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPuS4u+aMgeeahOeUqOaItzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTEiIG5hbWU9Im1lbnUgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPuS4u+aMgeeahOS8muiuruWupDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTIiIG5hbWU9Im1vZGVyYXRvciBvcmciPgorICAgIDx2YWx1ZT5NPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1MyIgbmFtZT0iY29uZmlybSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+56Gu5a6a6KaB5bCG5q2k55So5oi36K6+572u5Li66YOo6Zeo55qE5Li75oyB5Lq677yfPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1NCIgbmFtZT0iZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPuWcqOa3u+WKoOeUqOaIt+WJjeivt+WFiOmAieaLqeS4gOS4qumDqOmXqDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTUiIG5hbWU9ImNob29zZSB1c2VyIHdpbmRvdyI+CisgICAgPHZhbHVlPumDqOmXqC3kuLvmjIHkuro8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU2IiBuYW1lPSJtb2RlcmF0b3Igb3JnIHVzZXJzIj4KKyAgICA8dmFsdWU+56Gu5a6a6KaB5bCG5q2k55So5oi35LuO6YOo6Zeo5Lit5Yig6Zmk77yfPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1NyIgbmFtZT0ib3JnIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT7mraTnlKjmiLfmmK/kuLvmjIHkuro8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU4IiBuYW1lPSJvcmcgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPuatpOeUqOaIt+S4jeaYr+S4u+aMgeS6ujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTkiIG5hbWU9ImVycm9yIG1lc3NhZ2UgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPuehruWumuimgeWPlua2iOivpeeUqOaIt+eahOaUr+aMgeS6uui6q+S7ve+8nzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjAiIG5hbWU9Im1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT7lnKjpg6jpl6jkuK3mt7vliqDmiJbliKDpmaTnlKjmiLfjgIHkvJrorq7lrqQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYxIiBuYW1lPSJkZWxldGUgY29uZmlybSBxdWVzdGlvbiI+CisgICAgPHZhbHVlPuehruWumuimgeWIoOmZpOatpOiusOW9le+8nzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjIiIG5hbWU9ImRlbGV0ZSBjb25maXJtIHF1ZXN0aW9uIHVzZXIgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPuehruWumuimgeWwhuatpOeUqOaIt+S7jumDqOmXqOWIoOmZpO+8n+aCqOWPquiDveWIoOmZpOeUqOaIt+S4jumDqOmXqOS5i+mXtOeahOWFs+iBlO+8jOWmguaenOimgeWIoOmZpOatpOeUqOaIt+S/oeaBr++8jOivt+eZu+W9leWIsOeuoeeQhuWNleWFg+i/m+ihjOaTjeS9nDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjMiIG5hbWU9ImVycm9yIG1lc3NhZ2Ugc2VsZiBkZWxldGluZyI+CisgICAgPHZhbHVlPuaCqOS4jeiDveWIoOmZpOiHquW3se+8gTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjQiIG5hbWU9ImVycm9yIG1lc3NhZ2UgYXV0aCI+CisgICAgPHZhbHVlPuatpOaTjeS9nOWPquiDveeUseeuoeeQhuWRmOi/m+ihjO+8gTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjUiIG5hbWU9ImVycm9yIG1lc3NhZ2UgU09BUCI+CisgICAgPHZhbHVlPuayoeacieS4juatpElE5YWz6IGU55qE5Lya6K+dPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NiIgbmFtZT0iZXJyb3IgbWVzc2FnZSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+6L+Z5piv566h55CG5ZGY5oiW5Li75oyB5Lq65biQ5oi377yM5oKo5Y+q6IO95Zyo566h55CG5qih5Z2X5Lit6L+b6KGM6K6+572uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjciIG5hbWU9ImVtYWlsIHZlcmlmaWNhdGlvbiI+CisgICAgPHZhbHVlPuimgeWujOaIkOazqOWGjO+8jOivt+eCueWHu+S4i+mdoueahOmTvuaOpe+8jOaIluWwhumTvuaOpeWkjeWItuWIsOWcsOWdgOagj+S4rei/m+ihjOiuv+mXrjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjgiIG5hbWU9ImVtYWlsIHZlcmlmaWNhdGlvbiI+CisgICAgPHZhbHVlPueCueWHu+atpOWkhOmqjOivgeaCqOeahOmCrueusTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjkiIG5hbWU9ImVycm9yTWVzc2FnZV9Vc2VyQWN0aXZhdGlvblNlcnZsZXQgW0FjdGl2YXRlVXNlcl0iPgorICAgIDx2YWx1ZT7mnKrmib7liLDmraTnlKjmiLc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjcwIiBuYW1lPSJlcnJvck1lc3NhZ2VfVXNlckFjdGl2YXRpb25TZXJ2bGV0IFtBY3RpdmF0ZVVzZXJdIj4KKyAgICA8dmFsdWU+5q2k55So5oi35bey57uP5r+A5rS777yBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3MSIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPuaCqOW3sue7j+aIkOWKn+a/gOa0u+W4kOaIt++8gTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzIiIG5hbWU9ImVycm9yTWVzc2FnZV9Vc2VyQWN0aXZhdGlvblNlcnZsZXQgW0FjdGl2YXRlVXNlcl0iPgorICAgIDx2YWx1ZT7mraPlnKjnmbvlvZU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjczIiBuYW1lPSJsb2dpbkVycm9yTWVzc2FnZSA9IHVzZXIgd2FzIG5vdCBhY3RpdmF0ZWQiPgorICAgIDx2YWx1ZT7mgqjnmoTluJDmiLfmsqHmnInmv4DmtLvvvIzor7flhYjkvb/nlKjms6jlhozml7blj5HpgIHnu5nmgqjnmoTpgq7ku7bkuK3nmoTpk77mjqXov5vooYzmv4DmtLvjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc0IiBuYW1lPSJyZWdpc3RlciB2ZXJpZmljYXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPuazqOWGjOaIkOWKn++8geW3sue7j+WwhumqjOivgeeggeWPkemAgeWIsOaCqOeahOmCrueuse+8jOivt+afpeaUtuOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzUiIG5hbWU9InBhcnRpY2lwYW50cyBwYW5lbCI+CisgICAgPHZhbHVlPuenu+mZpOatpOeUqOaIt+eahOS4u+aMgeS6uuinkuiJsjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzYiIG5hbWU9InBhcnRpY2lwYW50cyBwYW5lbCI+CisgICAgPHZhbHVlPui1i+S6iOivpeeUqOaIt+S4u+aMgeeahOadg+mZkDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzciIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPueUqOaItzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzgiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPuS9v+eUqOa8lOekuuadvzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzkiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPuS4u+aMgeS6ujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODAiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPuS4u+aMgTror7fku47liJfooajkuK3pgInmi6nnlKjmiLfku6XotYvkuojlhbbkvb/nlKjmvJTnpLrniYjjgIHkuLvmjIHmiJbop4bpopHnmoTmnYPpmZA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgxIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7mraTnlKjmiLfmmK/kuLvmjIHkurrvvIzlt7Lnu4/oh6rliqjmi6XmnInkuablhpnnmoTmnYPpmZA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgyIiBuYW1lPSJldmVudCB1c2VyIGxpc3QgZXJyb3IiPgorICAgIDx2YWx1ZT7mgqjkuI3og73lj5bmtojoh6rlt7HnmoTkuLvmjIHkurrop5LoibI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgzIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7lhYHorrjor6XnlKjmiLflj5HluIPlo7Dpn7PmiJbop4bpopE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg0IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7npoHmraLor6XnlKjmiLflj5HluIPlo7Dpn7PmiJbop4bpopE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg1IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7miJHpnIDopoHmiJDkuLrmraTkvJrorq7lrqTnmoTkuLvmjIHkuro8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg2IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7miJHpnIDopoHlnKjmvJTnpLrmnb/kuIrov5vooYzkuablhpk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg3IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7miJHpnIDopoHlhbHkuqvlo7Dpn7Plkozop4bpopE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg4IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7mgqjmmK/kvJrorq7lrqTnmoTkuLvmjIHkuro8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg5IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7mgqjlj6/ku6XlnKjmvJTnpLrmnb/kuIrov5vooYzkuablhpnkuoY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkwIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7mgqjlj6/ku6XmjqXmlLblo7Dpn7Plkozop4bpopHkuoY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkxIiBuYW1lPSJlcnJvcnR5cGUiPgorICAgIDx2YWx1ZT7kuLvmjIHkurrmtojmga88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkyIiBuYW1lPSJhcHBseSBmb3IgbW9kIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7nlKjmiLc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkzIiBuYW1lPSJhcHBseSBmb3IgbW9kIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7lpoLmnpzopoHmiJDkuLrkuLvmjIHkurrvvIzor7flnKjnlKjmiLfliJfooajkuK3vvIzpgJrov4for6XnlKjmiLfnmoTnirbmgIHlm77moIfov5vooYzorr7nva48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk0IiBuYW1lPSJhcHBseSBmb3Igd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPuWmguaenOimgeWcqOa8lOekuuadv+S4iuS5puWGme+8jOivt+WcqOeUqOaIt+WIl+ihqOS4re+8jOmAmui/h+ivpeeUqOaIt+eahOeKtuaAgeWbvuagh+a3u+WKoOaIluWIoOmZpOatpOeUqOaIt+eahOS5puWGmeadg+mZkOOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTUiIG5hbWU9IjY5NSI+CisgICAgPHZhbHVlPuWmguaenOimgeWFseS6q+WjsOmfs+WSjOinhumike+8jOivt+WcqOeUqOaIt+WIl+ihqOS4re+8jOmAmui/h+ivpeeUqOaIt+eahOeKtuaAgeWbvuagh+iuvue9ruaYr+WQpuWFseS6q+atpOeUqOaIt+eahOWjsOmfs+WSjOWbvuWDj+OAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTYiIG5hbWU9Im1vZGVyYXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPuS8muiuruWupOS4reW/hemcgOacieS4gOS4quS4u+aMgeS6ujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTciIG5hbWU9ImNhbGVuZGFyIGJ1dHRvbiI+CisgICAgPHZhbHVlPuWPlua2iDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTgiIG5hbWU9ImNhbGVuZGFyIGJ1dHRvbiI+CisgICAgPHZhbHVlPuS/neWtmDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTkiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPuaXpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDAiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPuaciDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDEiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPuW5tDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDIiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7kuIrovb3mlofku7Y8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAzIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+5paw5bu655uu5b2VPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwNCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPuWIt+aWsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDUiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7lm57mlLbnq5k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA2IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+5oiR55qE5paH5Lu2KEhvbWUgRHJpdmUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwNyIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPuS8muiuruWupOaWh+S7tiAoUHVibGljIERyaXZlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDgiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7mlrDlu7rmlofku7Y8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA5IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+5paw5bu65paH5Lu25aS5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPuWIoOmZpOaWh+S7tuWkuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTEiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7nvJbovpHmlofku7blkI08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzEyIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+5paw5bu65paH5Lu25aS5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMyIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPuaCqOehruWumuimgeWIoOmZpOatpOmhueebru+8nzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTQiIG5hbWU9InVzZXIgYWRtaW4iPgorICAgIDx2YWx1ZT7mkJzntKI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE1IiBuYW1lPSJ1c2VyIGFkbWluIj4KKyAgICA8dmFsdWU+5pCc57SiPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxNiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPuaJk+W8gOaWh+ahozwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTciIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7mmL7npLrmiYDmnInmlofku7YgKFRyZWUgVmlldyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE4IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+5YWz6Zet5paH5qGjPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxOSIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPuWIoOmZpOaWh+S7tjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjAiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7kvaDmsqHmnInnu5jnlLvnmb3mnb/nmoTmnYPpmZDjgILkvaDlv4XpobvmmK/niYjkuLvvvIzmiJbotYvkuojkvaDnu5jnlLvnmb3mnb/nmoTmnYPliKnjgILkvaDlj6/ku6XlkJHniYjkuLvnlLPor7fnu5jnlLvnmb3mnb/nmoTmnYPliKnjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIxIiBuYW1lPSJwcm9wZXJ0eSBwYW5lbCI+CisgICAgPHZhbHVlPuaWh+aho+WxnuaApzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjIiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPuWQr+WKqEphdmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIzIiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT7lkK/liqhGbGFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjQiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPueUqOaIt+W4jOacm+WIhuS6q+S7lueahOWxj+W5leOAguS9oOaDs+eci+WIsOWug+WQl++8nzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjUiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPuS9oOato+WcqOWIhuS6q+S9oOeahOWxj+W5leOAgueCueWHu+WBnOatouaMiemSruWPr+S7peS4reatouWIhuS6q+S8muivneOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjYiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPuWIhuS6q+S8muivnTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjciIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPuS9oOato+WcqOWIhuS6q+S9oOeahOWxj+W5le+8gTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+5qGM6Z2i5rWP6KeI5ZmoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyOSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT7lgZzmraLliIbkuqs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMwIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPuahjOmdouWFseS6q+WZqDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzEiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+5Y2V5Ye75byA5aeL5Y+R5biD5oKo55qE5bGP5bmVPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT7lvIDlp4vliIbkuqs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMzIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPuaaguWBnOWIhuS6qzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzQiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+6YCJ5oup5L2g55qE5bGP5bmV5Yy65Z+f77yaPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT7mlLnlj5jlrr3luqY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM2IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPuWFseS6q+WZqOW3sue7j+e7k+adn+S8muivne+8gTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzciIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+5pS55Y+Y6auY5bqmPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczOCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT7mqKrlkJHlgY/np7s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM5IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPue6teWQkeWBj+enuzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDAiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+5a6977yaPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0MSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT7pq5jvvJo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQyIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPui/nuaOpeiiq+acjeWKoeWZqOWFs+mXrTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDMiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+5Y+W5raIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NCIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT7lkK/liqhKYXZhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NSIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT7lpoLmnpzkvaDlhbPpl63mnKzmrKHkvJror53vvIzkvaDlsIbkuI3og73lho3ph43lkK/mnKzmrKHkvJror53nmoTlhbHkuqvmtY/op4jlmajvvIE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ2IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPuehruiupOWFs+mXrea1j+iniOS8muivnTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDciIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+5YiG5Lqr5bGP5bmVPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0OCIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT7lvZXliLbkvJror508L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ5IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+5YiG5Lqr5rWP6KeI5ZmoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MCIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPldpbmRvd3PkuIvngavni5DmtY/op4jlmajnmoTliIbkuqvmtY/op4jlip/og73kuI3lpKrmuIXmmbDvvIzor7fkvb/nlKjlhbblroPmtY/op4jlmajmnaXkvb/nlKjor6Xlip/og708L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUxIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+5YmN5LiA6aG1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MiIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPuWQjuS4gOmhtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTMiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT7ph43mlrDovb3lhaU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU0IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+6aaW6aG1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1NSIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPui9veWFpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTYiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT7lsIbmnKzpobXorr7kuLrpu5jorqTpppbpobU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU3IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+5rWL6K+V6Z+z6aKR6KeG6aKR6YWN572uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1OCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPuS9oOWcqOi/m+WFpeS8muiuruWupOWJje+8jOWPr+S7peS9v+eUqOmfs+mikeinhumikea1i+ivleadpeW9leWItuWHoOenkumSn+eahOWjsOmfs+WbvuWDj+OAgueEtuWQjumAmui/h+WbnuaUvuS9oOeahOW9leWDj+W9lemfs+adpeajgOafpeS9oOeahOWjsOmfs+WbvuWDj+aYr+WQpuato+W4uOOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTkiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT7kuIvmrKHkuI3opoHlho3mmL7npLrov5nkuKrmtYvor5Xlr7nor53moYY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYwIiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+5Y+W5raIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MSIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPuW8gOWni+i/m+WFpeS8muiuruWupDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjIiIG5hbWU9ImVkaXQgdmlkZW8gc2V0dGluZ3MiPgorICAgIDx2YWx1ZT7kuI3opoHlho3mrKHor6Lpl648L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYzIiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+5b2V5Yi2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPuaSreaUvjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjUiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT7lpoLmnpzkvaDkuI3miZPnrpflj5HooajkvaDnmoTlo7Dpn7PmiJblm77niYfvvIzkvaDlj6/ku6XkuI3ov5vooYzmtYvor5XjgILmsqHmnInpn7PpopHmiJbop4bpopHnmoTlj4LkuI7ogIXku43nhLblj6/ku6Xkvb/nlKjnmb3mnb/vvIzliIbkuqvku5bku6znmoTlsY/luZXmiJblj5HluIPorqjorrrmtojmga/jgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY2IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+5YGc5q2iPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NyIgbmFtZT0iNzY3Ij4KKyAgICA8dmFsdWU+5aOw6Z+z55S15bmz6KGoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2OCIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPuaMieS4i+W8gOWnizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjkiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT7lvIDlp4vkvJrorq48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzcwIiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+5byA5aeL5ryU6K6yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MSIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPumAieaLqeS8muiuruWupDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzIiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT7mo4Dmn6Xpn7PpopHop4bpopHorr7nva48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzczIiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+5byA5aeL5Lya6K6uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NCIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPuWPguWKoOinhumikeS8muiurueahOatpemqpOWmguS4izo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc1IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+5byA5aeL5b2V5Yi2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NiIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPuS4i+asoei/m+WFpeS8muiuruWJjeS4jeimgeWGjeaYvuekuuinhumikemfs+mikea1i+ivle+8iOW9leWItu+8ieWvueivneahhjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzciIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT7lhazlhbHkvJrorq7lrqQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc4IiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+5YWs5YWx5Lya6K6u5a6k77yN77yN5omA5pyJ55So5oi36YO96IO96K6/6Zeu44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3OSIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPuengeacieS8muiuruWupDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODAiIG5hbWU9IlByaXZhdGUgUm9vbXMiPgorICAgIDx2YWx1ZT7np4HmnInkvJrorq7lrqTvvI3vvI3lj6rlhYHorrjlkIznu4Tnu4fnmoTnlKjmiLforr/pl67jgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgxIiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+5Liq5Lq65Lya6K6u5a6kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MiIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPuS4quS6uuS8muiuruWupOWPquS+m+S4quS6uuS9v+eUqOOAgiDpgJrov4fml6XljobmnaXorr7nva7kvJrorq7nmoTlvIDlp4vlkoznu5PmnZ/ml6XmnJ/ml7bpl7TjgILlroPku6zku4Xku4XlnKjmnInmlYjmnJ/lhoXnvZfliJflnKjmraTjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgzIiBuYW1lPSJyZXN0cmljdGVkIHJvb20iPgorICAgIDx2YWx1ZT7ov5nkuKrmk43kvZzpnIDopoHkuLvmjIHkurrmnYPpmZDjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg0IiBuYW1lPSJtZW51IG9wdGlvbiI+CisgICAgPHZhbHVlPueUs+ivt+aIkOS4uuS4u+aMgeS6ujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODUiIG5hbWU9Im1lbnUgb3B0aW9uIj4KKyAgICA8dmFsdWU+55Sz6K+35L2/55So55m95p2/5p2D6ZmQPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NiIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT7nlLPor7fkvb/nlKjpn7PpopHop4bpopHmnYPpmZA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg3IiBuYW1lPSJlcnJvciBtZXNzYWdlIHNvYXAgc2VjdXJlIGxvZ2luIj4KKyAgICA8dmFsdWU+5pys5qyh5Lya6K+dSGFzaOW3sue7j+S9v+eUqO+8jOS9oOS4jeiDveWQjOaXtuS9v+eUqOS4pOasoeOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODgiIG5hbWU9ImRhc2hib2FyZCBidXR0b24iPgorICAgIDx2YWx1ZT7lvIDlp4s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg5IiBuYW1lPSJleGl0IGNvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT7pgIDlh7o8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkwIiBuYW1lPSJjb25mZXJlbmNlIHZpZXciPgorICAgIDx2YWx1ZT7kvaDnnJ/nmoTpgIDlh7rkvJrorq7lkJfvvJ/lu7rorq7kvaDmuIXpmaTkvaDkuIrovb3nmoTmlofku7bjgIHnmb3mnb/lkozorqjorrrorrDlvZXjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkxIiBuYW1lPSJjb25mZXJlbmNlIHZpZXciPgorICAgIDx2YWx1ZT7pgIDlh7rkvJrorq48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkyIiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT7kvJrorq7lrqQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkzIiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT7pgInmi6nkvJrorq7lrqQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk0IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPuaXpeWOhuS4reWtmOWcqOacquacieS/neWtmOeahOS6i+S7tuOAguivt+mAieaLqeS/neWtmOWug+aIluWIoOmZpOWug+OAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTUiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+6K+35Li65L2g55qE5Lya6K6u5re75Yqg6Iez5bCR5LiA5ZCN5LiO5Lya6ICF44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5NiIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT7kvaDnnJ/nmoTopoHliKDpmaTkvaDnmoTkuovku7Y/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5NyIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT7orablkYo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk4IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPua3u+WKoOS6i+S7tjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTkiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+5pelPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT7lkag8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAxIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPuaciDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDIiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+5o+P6L+wPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMyIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT7kuI7kvJrogIU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA0IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT7mnKzov5znqIvop4bpopHkvJrorq7ns7vnu5/mmK/kuIDkuKrnlKjmnaXlj6zlvIDov5znqIvop4bpopHkvJrorq7jgIHln7norq3mvJTorrLjgIHlrqHmn6Xmlofku7bnmoTlubPlj7DjgILmjInnhafkuIrpnaLnmoTmjIflvJXvvIzmjInkuIvlvIDlp4vmjInpkq7lj6/ku6XpqazkuIrov5vlhaXkvJrorq7jgILmiJbogIXov5vlhaXml6XljobpooTnuqbkuIDkuKrkvJrorq7orqHliJI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA1IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT7pooTnuqbkvJrorq48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA2IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+6KaB5bu656uL5LiA5Liq5Lya6K6u77yM5oKo5Y+v5Lul5re75Yqg5pel5Y6G5LiK55qE5LiA5Liq5paw55qE5LqL5Lu244CC5a+55LqO5q+P5Liq5pel5Y6G5LqL5Lu25bCG6Ieq5Yqo5Yib5bu65LiA5Liq5Lya6K6u5a6k44CC5L2g5ZKM5q+P5LiA5Liq5LiO5Lya6ICF5bCG6I635b6X5LiA5Liq5Yiw5oi/6Ze06ZO+5o6l55qE55S15a2Q6YKu5Lu244CCJmx0O2JyLyZndDsmbHQ7YnIvJmd0O+aCqOWPr+S7pemAieaLqeS4jeWQjOeahOaIv+mXtOexu+Wei+acieS4jeWQjOeahOW4g+WxgOWSjOmAguW6puezu+e7n+OAguaCqOS5n+WPr+S7peS4uuavj+aXpeWOhuS6i+S7tumAieaLqeS4jeWQjOeahOeUteWtkOmCruS7tumAmuefpeWPkemAgeexu+WeizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDciIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT7pnIDopoHluK7liqnlkJfvvJ88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA4IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+5Y+X6ZmQ5Yi2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwOSIgbmFtZT0ibHpjYWxlbmRlciI+CisgICAgPHZhbHVlPuaQnOe0ojwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTAiIG5hbWU9Imx6Y2FsZW5kZXIiPgorICAgIDx2YWx1ZT7mt7vliqA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODExIiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+5rKh5pyJ6YCJ5oup55So5oi344CC6K+35LuO5YiX6KGo5Lit6YCJ5oup5LiA5Liq6aG555uu77yM54S25ZCO54K55Ye75re75Yqg44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMiIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPua3u+WKoOS4juS8muiAhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTMiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT7kv53lrZg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE0IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+5Yig6ZmkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxNSIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPua0u+WKqOivpuaDhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTYiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT7pu5jorqTkuLvmjIHkuro8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+6LaF57qn55So5oi3PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxOCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPueUqOaIt+WPtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTkiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT7lp5PlkI08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIwIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+6YKu5Lu25Zyw5Z2APC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyMSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPua3u+WKoOS4gOS4quaWsOeahOm7mOiupOS4u+aMgeS6ujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjIiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT7mmK/otoXnuqfkuLvmjIHkuro8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIzIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+5aaC5p6c5oi/6Ze05oul5pyJ5Li75oyB6YWN572u77yM6YKj5LmI5oul5pyJ5Li75oyB5p2D6ZmQ5oiW566h55CG5ZGY5p2D6ZmQ55qE5Lq66L+b5YWl5Lya6K6u5a6k5ZCO77yM5bCG6Ieq5Yqo6I635Y+W6L+Z5Liq5Lya6K6u5a6k55qE5Li75oyB5p2D44CC5aaC5p6c5L2g5LiN5biM5pyb6L+Z5qC377yM6ICM5LiU5L2g5biM5pyb5oyH5a6a5LiA5Liq55So5oi35Li75oyB6L+Z5Liq5Lya6K6u5a6k77yM6K+35L2/55So6buY6K6k5Li75oyB5Lq66YCJ6aG544CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPuS4gOS4qui2hee6p+S4u+aMgeS6uui/m+WFpeaIv+mXtOaXtu+8jOS7luWwhuiHquWKqOiOt+WPlui/meS4quS8muiuruWupOeahOS4u+aMgeadg+mZkOOAguayoeacieS6uuiDveWPlua2iOS7lueahOS4u+aMgeadg+mZkOOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjUiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT7kuLrnlKjmiLfnlLPor7fotoXnuqfkuLvmjIHmnYPpmZA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI2IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+5Y+W5raI6LaF57qn5Li75oyB5p2D6ZmQPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNyIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI4IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+5aaC5p6c5Li65Lya6K6u5a6k5re75Yqg5LiT5bGe57uE57uH77yM6YKj5LmI5Y+q5pyJ6K+l57uE57uH5oiQ5ZGY5omN6IO96L+b5YWl6K+l5Lya6K6u5a6k44CC77yI5LuF5LuF5a+55YWs5YWx5Lya6K6u5a6k5pyJ5pWI77yB77yJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyOSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPuS4u+aMgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzAiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT7pmZDliLbmlbA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODMxIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+5Y2V5L2NPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzMiIgbmFtZT0iY29uZmlybSBhY3Rpb24iPgorICAgIDx2YWx1ZT7kvaDnoa7orqTlkJfvvJ88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODMzIiBuYW1lPSJjb25maXJtIGRlbGV0ZSI+CisgICAgPHZhbHVlPuS9oOecn+eahOehruiupOmcgOimgeWIoOmZpOi/meS4qumhueebruWQl++8n+S9oOmcgOimgeeCueWHu+S/neWtmOaMiemSruadpeS/neWtmOabtOaUue+8gTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzQiIG5hbWU9InVzZXIgY2hvb3NlIGVycm9yIj4KKyAgICA8dmFsdWU+5rKh5pyJ55So5oi36KKr6YCJ5oup44CC5re75Yqg5YmN5L2g5b+F6aG75YWI6YCJ5oup55So5oi377yBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPua3u+WKoOaWsOeahOm7mOiupOS4u+aMgeS6ujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzYiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT7kvaDnoa7orqTopoHotYvkuojor6XnlKjmiLfotoXnuqfkuLvmjIHkurrmnYPpmZDlkJfvvJ/ms6jmhI/vvJrlhbbku5bkuLvmjIHkurrmmK/ml6Dms5Xlj5bmtojotoXnuqfkuLvmjIHkurrmnYPpmZDnmoTjgILkvaDpnIDopoHkv53lrZjmiL/pl7Tlr7nosaHmnaXkv53lrZjov5nkupvorr7nva7vvIE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+5L2g56Gu6K6k6KaB5Y+W5raI6K+l55So5oi355qE6LaF57qn5Li75oyB5Lq65p2D6ZmQ5ZCX77yfIOS9oOmcgOimgeS/neWtmOaIv+mXtOWvueixoeadpeS/neWtmOi/meS6m+iuvue9ru+8gTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzgiIG5hbWU9InN1cGVyIG1vZGVyYXRvciI+CisgICAgPHZhbHVlPui/meS4quaYr+i2hee6p+S4u+aMgeS6uu+8geS9oOS4jeiDveWPlua2iOS4gOS4qui2hee6p+S4u+aMgeS6uueahOadg+mZkO+8gTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzkiIG5hbWU9ImNvbmZpcm0gZGVsZXRlIj4KKyAgICA8dmFsdWU+5L2g55yf55qE6KaB5Yig6Zmk6L+Z5Liq5paH5Lu2L+aWh+S7tuWkue+8nzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDAiIG5hbWU9ImNvbmZpcm0gZGVsZXRlIj4KKyAgICA8dmFsdWU+5Yig6Zmk5paH5Lu2L+aWh+S7tuWkuT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQxIiBuYW1lPSJzYWx1dGF0aW9uIj4KKyAgICA8dmFsdWU+5aWz5aOrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0MiIgbmFtZT0ic2FsdXRhdGlvbiI+CisgICAgPHZhbHVlPuWFiOeUnzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDMiIG5hbWU9InByb3BlcnR5IHBhbmVsIHdoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT7lsZ7mgKc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ0IiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+5Zyo5YWx5Lqr5Zmo5Lit5pi+56S66byg5qCH5L2N572uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NSIgbmFtZT0icHVibGlzaCBvcHRpb24iPgorICAgIDx2YWx1ZT7kvb/nlKhTSVDlsI/lupTnlKjnqIvluo/lhbHkuqvpn7PpopE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ2IiBuYW1lPSJwdWJsaXNoIG9wdGlvbiI+CisgICAgPHZhbHVlPuS9v+eUqFNJUOWwj+W6lOeUqOeoi+W6j+WFseS6q+mfs+mike+8jOeUqGZsYXNo5YWx5Lqr6KeG6aKRPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NyIgbmFtZT0iZG9jdW1lbnQgcGFuZWwiPgorICAgIDx2YWx1ZT7mu6HlsY88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ4IiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT7mmL7npLrlsY/luZU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ5IiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT7nlKjmiLc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUwIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT7mg7PliIbkuqvku5bnmoTlsY/luZXjgILkvaDmg7PnnIvliLDlroPlkJfvvJ88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUxIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT7lhbPpl608L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUyIiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+57yp5pS+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MyIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPuacrOasoeS8muivneW3sue7j+iiq+WPkeW4g+WIhuS6q+eUqOaIt+WFs+mXre+8gTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTQiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT7mmoLlgZw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU1IiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+5paw55qE5bGP5bmV5YiG5LqrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1NiIgbmFtZT0icHJlc2VudGVyIG1pbmkgaWNvbiI+CisgICAgPHZhbHVlPuacgOWwj+WMljwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTciIG5hbWU9InByZXNlbnRlciBtaW5pIGljb24iPgorICAgIDx2YWx1ZT7mnIDlpKfljJY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU4IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT7op4bpopE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU5IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT7lvZXliLbml7bpl7Tnur88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYwIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT7np4HmnInkvJrorq7orrDlvZU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYxIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT7lhazlvIDkvJrorq7orrDlvZU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYyIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT7kv6Hmga88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYzIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT7lkI3np7A8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY0IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT7plb/luqY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY1IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT7ml6XmnJ88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT7nlKjvvI/ku6U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY3IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT7kuIvovb08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY4IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT7kuLsgLSDop4bpopE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY5IiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT7lvZXliLY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcwIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT7kvaDlj6/ku6XlkIzml7blvZXliLblkozliIbkuqvkvaDnmoTlsY/luZXjgILkvaDlj6/ku6Xngrnlh7vkuIrpnaLnmoTlvIDlp4vmjInpkq7mnaXorqnlhbbku5bkuI7kvJrogIXnnIvliLDkvaDnmoTlsY/luZXjgILlpoLmnpzku4Xku4XmmK/lvZXliLbkvJror53vvIzpgqPngrnlh7vlvIDlp4vlvZXliLbmjInpkq7lsLHotrPlpJ/kuobjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcxIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT7lvIDlp4vlvZXliLY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcyIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT7lgZzmraLlvZXliLY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODczIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT7kuIvovb0gRkxWIOagvOW8j+aWh+S7tjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzQiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPuS8muiuruWupDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzUiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPuaSreaUvjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzYiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPuWBnOatojwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzciIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPueUqOaIt+aJk+W8gOm6puWFi+mjjjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+5YGc5q2i5YiG5LqrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3OSIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT7lhYHorrjmiYDmnInnlKjmiLflj5Hpl648L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgwIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPuWFs+mXrei/meS4quWKn+iDveWPr+S7pemYsuatouS7u+S9leeUqOaIt+WcqOS9oOS8muiuruWupOaNo+S5seOAguW9seWTjeaViOaenOaYr+WQkeS4u+aMgeS6uuWPkemXrueahOaMiemSruaYr+S4jeWPr+ingeeahOOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODEiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+5p2D5YipPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+5LiL6L29IEFWSSDmoLzlvI/mlofku7Y8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgzIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5GTFbmoLzlvI88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg0IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5BVknmoLzlvI88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg1IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT7ljp/lp4vlsY/luZXop4bpopE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT7lj6rnlKjpn7PpopE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg3IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT7lnKjlpITnkIborrDlvZXml7blh7rplJk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg4IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT7orrDlvZXmnKrlh4blpIflpb0s6K+36L+H5Yeg5YiG6ZKf5YaN6K+VPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4OSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+5pel5b+XOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTAiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPua2iOaBr+aXpeW/lzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTEiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPuehruiupDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTIiIG5hbWU9InNpcCBhcHBsZXQiPgorICAgIDx2YWx1ZT5TSVDmjqfku7bmsqHmnInlh4blpIflpb08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkzIiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+6K6+572uU0lQ6LSm5oi3PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NCIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPuavj+S4queUqOaIt+eahFNJUOiuvue9ruOAguWPr+S7pemAmui/h+euoeeQhuWRmOaJk+W8gOaIluiAheWFs+mXrVNJUOOAgiAmZ3Q7IOmFjee9rumUruWAvO+8iGVuYWJsZV9zaXDvvInjgILmr4/kuKrnlKjmiLfnmoRTSVDmlbDmja7mmK/oh6rliqjkuqfnlJ/nmoTvvIzlj6/ku6XpgJrov4figJzph43mlrDnlJ/miJBTSVDmlbDmja7igJ3pgInpobnph43mlrDnlJ/miJDjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk1IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+U0lQ55So5oi3PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NiIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNpcOWvhueggTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTciIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TaXDmjojmnYPlj7c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk4IiBuYW1lPSJzaXAgc3RhdHVzIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7nmbvlvZXliLBTSVDnvZHlhbPlpLHotKXvvIzpnIDopoHmo4Dmn6VTSVDkvpvlupTllYbku6Xlj4rnlKjmiLfotKblj7fnmoTmjojmnYPjgILlpoLmnpzmmK/nrqHnkIblkZjvvIzov5jlj6/ku6XnmbvlvZXlkozmo4Dmn6XphY3nva7vvIzlhbblroPnlKjmiLflkozkuLvmjIHkurrlsIbkuI3og73ov5vooYzku7vkvZXmk43kvZzjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk5IiBuYW1lPSJzaXAgc3RhdHVzIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7nmbvlvZXliLBTSVDnvZHlhbPlpLHotKXvvIzor7fogZTns7vns7vnu5/nu7TmiqTkurrlkZjjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAwIiBuYW1lPSJzaXAgc3RhdHVzIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7mraPlnKjnmbvlvZVTSVDnvZHlhbMgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwMSIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+5q2j5Zyo55m75b2VU0lQ572R5YWzIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDIiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPuaYvuekuuaXpeW/lzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDMiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPuS8muWQjuiusOW9leaXpeW/lzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDQiIG5hbWU9InNpcCBsb2dpbiI+CisgICAgPHZhbHVlPlNJUOWwj+W6lOeUqOeoi+W6j+eahOa2iOaBrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDUiIG5hbWU9InNpcCBsb2dpbiI+CisgICAgPHZhbHVlPlNJUOaOp+S7tuayoeacieWHhuWkh+WlvSzor7fngrnlh7vnoa7orqTmjInpkq7lhYHorrjmjqfku7bnmoTkvb/nlKghPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwNiIgbmFtZT0ibW9kZXJhdG9yIHBvcCB1cCI+CisgICAgPHZhbHVlPueUs+ivt+aIkOS4uuS4u+aMgeS6ujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDciIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT7kv53lrZjmm7TmlLk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA4IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+57qm5a6a55qE5Lya6K6u5bey57uP5pu05pS55LqG77yM5oKo5piv5ZCm6LGh5L+d5a2Y6L+Z5Lqb5pu05pS577yfJmx0O2JyLyZndDsmbHQ7YnIvJmd0O+aJgOacieeahOWPguS8muS6uuWRmOmDveS8muWPl+WIsOaXtumXtOabtOaUueWQjueahOS8muiurumAmuefpemCruS7tjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDkiIG5hbWU9ImZsdiByZWNvcmRlciBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+5aaC6ZyA6YO95Yy65YW25a6D6K6w5b2VLOivt+WFiOeZu+mZhuezu+e7nzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTAiIG5hbWU9ImludGVydmlldyB2aWRlbyBwb2QiPgorICAgIDx2YWx1ZT7kvJrorq7kurrlkZjpgoDor7c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTExIiBuYW1lPSJpbnRlcnZpZXcgdmlkZW8gY2hvb3NlIHVzZXIiPgorICAgIDx2YWx1ZT7kvJrorq7lj6/pgoDor7fnmoTkurrlkZg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTEyIiBuYW1lPSJpbnRlcnZpZXcgaW5mbyI+CisgICAgPHZhbHVlPuaCqOaYr+i/measoeS8muiurueahOS4u+aMgeS6uizmgqjlj6/ku6XlhrPlrprkvJrorq7kuK3osIHlj6/ku6Xlj5HoqIAs5oKo5Lmf5Y+v5Lul5o6n5Yi25ZCv5Yqo5ZKM5YGc5q2i5Lya6K6u55qE6KeG6aKR5b2V5Yi244CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMyIgbmFtZT0iaW50ZXJ2aWV3IGJ1dHRvbiByZWNvcmRpbmciPgorICAgIDx2YWx1ZT7lvIDlp4vlvZXliLY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE0IiBuYW1lPSJpbnRlcnZpZXcgYnV0dG9uIHJlY29yZGluZyI+CisgICAgPHZhbHVlPue7k+adn+W9leWItjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTUiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+5Lya6K6u6KeG6aKR5b2V5Yi25bey57uP5byA5aeLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxNiIgbmFtZT0iaW50ZXJ2aWV3IGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7op4bpopHlvZXliLblt7Lnu4/lgZzmraLvvIzkuZ/lj6/og73ov5jmsqHlvIDlp4s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE3IiBuYW1lPSJpbnRlcnZpZXcgcmVjb3JkaW5nIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7kvJrorq7op4bpopHlvZXliLblt7Lnu4/lvIDlp4tkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTgiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+5Y+W5raIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxOSIgbmFtZT0iaW50ZXJ2aWV3IGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7lvZXliLbnmoTop4bpopHlkI7nu63lpITnkIbmr48x5YiG6ZKf5pe26Ze06ZyANeWIhumSn+aXtumXtOadpeWkhOeQhu+8jOato+WcqOi9rOeggeWkhOeQhueahOW9leWItuinhumikeaYrzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIwIiBuYW1lPSJzaXAgY3JlYXRpb24iPgorICAgIDx2YWx1ZT7mgqjlv4Xpobvph43mlrDovpPlhaXlr4bnoIE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIxIiBuYW1lPSJzaXAgY3JlYXRpb24iPgorICAgIDx2YWx1ZT7ph43mlrDkuqfnlJ9TSVDmlbDmja48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIyIiBuYW1lPSJmaWxlZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7mgqjkuI3og73lsIbmlofku7bmiJbogIXmlofku7blpLnnp7vlhaXoh6rlt7HmiYDlnKjnmoTlrZDnm67lvZUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyMyIgbmFtZT0iZmlsZSBleHBsb3JlciAiPgorICAgIDx2YWx1ZT7np4HmnInorrDlvZXmlofku7blpKflsI88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI0IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+5YWs5YWx6K6w5b2V5paH5Lu25aSn5bCPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNSIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPuaOiOadg+iuvue9rjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjYiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT7lnKjmjojmnYPml7bmgqjlj6/ku6XmiornlKjmiLforr7nva7kuLrmnInmlYjmnJ/ov4fmnJ/miJbogIXorr7nva7mnIDlpKfnmoTkvb/nlKjml7bpl7TmlbA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI3IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+5qOA5p+l5o6I5p2DPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyOCIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPui0ueeOhzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjkiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT7ov4fmnJ/ml7bpl7Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMwIiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+5Ymp5L2Z55qE56eS5pWwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMSIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPuaAu+WFseaXtumXtDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzIiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPuaCqOeahOaOiOadg+W3sue7j+i/h+acn++8jOmcgOimgemHjeaWsOi0reS5sOS9v+eUqOadgzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzMiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPueCueWHu+i0reS5sDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzQiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPui0puWPt+S4iuWJqeS9meeahOaXtumXtDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzUiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPueUqOaIt+aOiOadg+S/oeaBrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzYiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPuS/oeaBrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzciIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPuWFs+mXrTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzgiIG5hbWU9ImxpY2Vuc2UtaW5mbyI+CisgICAgPHZhbHVlPuaCqOeahOaOiOadg+W3sue7j+i/h+acn++8jOmcgOimgemHjeaWsOi0reS5sOS9v+eUqOadgzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzkiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPuaOiOadg+iuvue9rjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDAiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPuaCqOWPr+S7pei0reS5sOWIhumSn+aVsOaXtumXtOadpeWPrOW8gOS8muiuru+8jCZsdDtici8mZ3Q7Jmx0O2JyLyZndDsg5oiW6ICF5L2/55SoMy0xMuS4quaciOeahOi0ueeOh+aKmOaJo+adpei0reS5sO+8jCZsdDtici8mZ3Q7Jmx0O2JyLyZndDvlj5HpgIHpgoDor7flh73vvIjnm7TmjqXov5vlhaXkvJrorq7lrqTnmoTlpJbpg6jpk77mjqXvvInmiJbogIXpgJrov4fml6XljobmnaXliJvlu7rkvJrorq7mmK/lj6rog73mnInljIXmnIjnmoTnlKjmiLfkvb/nlKjnmoQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQxIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT45Ljk55qyn5YWD6LSt5LmwNjDliIbpkp/vvIgwLjE25qyn5YWD5q+P5YiG6ZKf77yJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+MTkuOTnmrKflhYPotK3kubA15bCP5pe277yIMC4wNuasp+WFg+avj+WIhumSn++8iTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDMiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPjI5Ljk55qyn5YWD6LSt5LmwM+S4quaciO+8iDkuOTnmrKflhYPmr4/kuKrmnIjvvIk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ0IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT4zOS45Oeasp+WFg+avjzbkuKrmnIjvvIg2LjY25qyn5YWD5q+P5Liq5pyI77yJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+5oyJ5YiG6ZKf5pWw5LuY6LS5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+5oyJ6K+t6Z+z5rWB6YeP5LuY6LS5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+5oKo55qE5o6I5p2D5rC45LiN6L+H5pyfPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0OCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+5oKo55qE5o6I5p2D5Y2z5bCG5Zyo5Lul5LiL5pel5pyf6L+H5pyfOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDkiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPuaCqOi0reS5sOS6huWIhumSn+S7mOi0ueacjeWKoe+8jOaCqOi/mOaciTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUwIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT7otK3kubDmlrDnmoTkv6HnlKjljaEhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+6ZyA6KaB5oKo6Ieq5bex55qE5pyN5Yqh5ZmoPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTIiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPuaCqOWmguaenOaDs+aLpeacieiHquW3seeahCRBUFBfTkFNReS8muiuruacjeWKoeWZqOaIluiAhembhuaIkOWIsOW3suacieeahOW6lOeUqOS4reWOu++8jDUwMDDlhYPmr4/mrKEhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+5oiW6ICF57uZ5oiR5Lus5Y+R6YCB5L+h5oGvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1NCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+5Zue5aSN77yaPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1NSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+5raI5oGvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTYiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPuWPkemAgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTciIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPueCueatpOiOt+WPluiBlOezu+S6uuS/oeaBrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTgiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPuS/oeeUqOWNoeivpuaDhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTkiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPuWQjTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjAiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPuWnkzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjEiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPuS/oeeUqOWNoeexu+WeizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjIiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlZJU0HljaE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYzIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT7kuLvljaE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY0IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5EaXNjb3ZlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjUiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPuW/q+mAkjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjYiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPuS/oeeUqOWNoeWPtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjciIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPui/h+acn+aXpeacnzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjgiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPuWNoeWPt+mqjOivgeeggTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjkiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPui0puWNleWvhOmAgeWcsOWdgDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzAiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPuWcsOWdgDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzEiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzIiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPuWfjuW4gjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzMiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPuWbveWutjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzQiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPuecgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzUiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPumCrue8ljwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzYiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPuaVsOmHjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzciIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPuaPkOS6pDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzgiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPuatpemqpDE6IOaUr+S7mOWNlTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzkiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPumCruS7tuWcsOWdgDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODAiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPueCueWHu+KAmHBheW9sYeS7mOasvuKAme+8jOaOpeWPl3Zpc2HljaHvvIxtYXN0ZXLljaHvvIxkaXNjb3ZlcuWNoeaIlue+juWbvei/kOmAmuWNoeOAguaXoOmcgOetvuWFpXBheW9sYeOAguW+t+WbveWxheawkeS5n+WPr+mAmui/h+WAn+iusOWNoeS7mOasvihQZXIgTGFzdHNjaHJpZnQtRWluenVnKeOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODEiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPuaEn+iwoui0reS5sE9wZW5NZWV0aW5nc+OAguasvumhueaUtuWIsOWQjuaCqOeahOW4kOaIt+S8muiiq+abtOaWsOOAguaCqOS8muWcqOmCruS7tuS4reaUtuWIsHBkZuagvOW8j+eahOWPkeelqOOAguaCqOS5n+WPr+S7peWcqOS4quS6uuiuvue9ruS4reafpeivoui/h+W+gOS6pOaYk+OAguWFs+mXreatpOa1j+iniOeql+WPo+S7peWbnuWIsE9wZW5NZWV0aW5nc+OAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODIiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPueCueWHu+i0reS5sDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODMiIG5hbWU9InBheW1lbnQtZnJvbSI+CisgICAgPHZhbHVlPueCueWHu+i0reS5sDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODQiIG5hbWU9InBheW1lbnQtZnJvbSI+CisgICAgPHZhbHVlPuatpemqpDM6ICRBUFBfTkFNReezu+e7n+aUr+S7mCAtIOajgOafpeiuouWNleWPiuS7mOasviE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg1IiBuYW1lPSJwYXltZW50LWZyb20iPgorICAgIDx2YWx1ZT7lp5PlkI08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg2IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT7ku5jmrL7lt7Lnu4/mlLbliLA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg3IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT7mgqjlpb0sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4OCIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+5bey57uP5pS25Yiw5oKo55qE5LuY5qy+77yM5bm25bey57uP5pu05paw5LqG5oKo55qE55So5oi36K6+572u44CC5omA5pyJ5Lul5b6A55qE5LuY5qy+5L+h5oGv6YO96IO95aSf5Zyo5oKo55qE55So5oi36YWN572u5Lit5LiL6L29PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4OSIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+5oSf6LCi5oKo5L2/55SoJEFQUF9OQU1F57O757ufITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTAiIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPiRBUFBfTkFNReezu+e7n+W3sue7j+aUtuWIsOaCqOeahOS7mOasvi08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkxIiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+5pSv5LuY54q25oCBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MiIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPuaUr+S7mOmaj+acuuWPtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTMiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT7liIbpkp/mlbA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk0IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+57qm5pWwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NSIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPkVVUjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTYiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT7nirbmgIE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk3IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+5pSv5LuY5Y2VPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5OCIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTkiIG5hbWU9ImVycm9yLWxpY2Vuc2UtZmxhdCI+CisgICAgPHZhbHVlPuaCqOmcgOimgei0reS5sOivremfs+WuuemHj+eahOi0ueeOh+aJjeWPr+S7peWPkemAgemCgOivt+aIluiAhemAmui/h+aXpeWOhuWIm+W7uuS8muiuruOAguS9v+eUqOaMieWIhumSn+S7mOi0ueeahOaWueW8j+WwseWPr+S7peiuv+mXruezu+e7n+S6hu+8jOaCqOS5n+WPr+S7peiuqeesrOS4ieaWueiuv+mXruS8muiurjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAwIiBuYW1lPSJlcnJvciB1c2VyIj4KKyAgICA8dmFsdWU+6K+l6YKu5Lu25Zyw5Z2A5bey57uP6KKr5YW25LuW55So5oi35L2/55SoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDEiIG5hbWU9InJvb20tYWRtaW4iPgorICAgIDx2YWx1ZT5TSVDorr7nva48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwMiIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPuS8muiuruWPt+aYr+iHquWKqOWIm+W7uueahDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAzIiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+U0lQ5Y+3PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDQiIG5hbWU9InJvb20tYWRtaW4iPgorICAgIDx2YWx1ZT5QSU48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNSIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPua4hemZpOatpOeJh+WtkOS4reeahOaJgOacieWvueixoTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA2IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+5Y+q5pyJ5Zyo54q25oCB5qCP5Lit6L6T5YWl55qEVVJM5Zyw5Z2A5omN5Lya5Y+R5Yiw5Y+C5Lya6ICFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7liJvlu7rlm6LpmJ/kvJrorq7lrqQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPuS4uuWboumYn+WIm+W7uuaWsOeahOS8muiuruWupCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPuaCqOWPr+S7peWIm+W7uuS4gOaWsOeahOS8muiuruWupOW5tumAieaLqeWPguS8muS6uuWRmOOAguaJgOacieiiq+mAieaLqeeahOS6uuWRmOWwhuiHquWKqOeahOenu+WKqOaWsOeahOS8muiuruWupO+8jOaIluiAheaYr+aOpeWPl+WIsOmAmuefpeS/oeOAguWboumYn+S8muiuruWupOeahOS4u+aMgeS6uuWPr+S7peiOt+WPluaJgOacieS8muiuruWupOeahOWIl+ihqO+8jOW5tuWcqOWQhOS8muiuruWupOS5i+mXtOadpeWbnuWIh+aNou+8jOaWueS+v+WQhOS8muiuruWupOeahOWNs+aXtumXrumimOmcgOimgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+55So5oi35ZCNPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7nmbvlvZU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+5paw5Zui6Zif5Lya6K6u5a6k55qE5omA5pyJ5oiQ5ZGY77yaPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7liJvlu7rlm6LpmJ/kvJrorq7lrqQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPuWPlua2iDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+6Iez5bCR5Li65Zui6Zif5Lya6K6u5a6k6YCJ5oup5LiA5Liq55So5oi3PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7kuLrlm6LpmJ/lop7liqDnlKjmiLc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPuS7juWboumYn+S8muiuruWupOS4reenu+mZpOivpeeUqOaItzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+55So5oi35piv5Zui6Zif5Lya6K6u5a6k55qE5Li75oyB5Lq677yI5LuW5Y+v5Lul566h55CG5omA5pyJ55qE5Zui5L2T5Lya6K6u5bm25Y+v5Lul5o6l5Y+X5omA566h55CG55qE5Zui6Zif5Lya6K6u5a6k55qE6YKA6K+377yJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7kvJrorq7nsbvlnos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPuWmguaenOaCqOmAieaLqeKAnOW8uuWItuaJgOacieeUqOaIt+mDveenu+WKqOaWsOeahOS8muiuruWupOKAne+8jOWImeaJgOaciemAieS4reeahOaIkOWRmOWwhuiHquWKqOeahOenu+WIsOaWsOWIm+W7uueahOWboumYn+S8muiuruWupOS4re+8jOWQpuWImeS7luS7rOS8muW+l+WIsOenu+WIsOaWsOS8muiuruWupOeahOmAmuefpeaMiemSru+8jOeUqOaIt+WPr+S7peiHqueUsemAieaLqeaYr+WQpui/m+WFpeaWsOWboumYn+S8muiuruWupOOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+566h55CG5Zui6Zif5oiQ5ZGYPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7kvZzkuLrkuLvmjIHkurrvvIzmgqjlj6/ku6XmuLjotbDlnKjmiYDmnInnmoTlm6LpmJ/kvJrorq7lrqTpl7TvvIzlm6LpmJ/lj4LkvJrogIXlj6/ku6Xlj5HpgIHmtojmga/nu5nkvaDvvIzlpoLvvJrlj6/ku6XpgoDor7fmgqjlj4LkuI7liLDku5bku6znmoTkvJrorq7lrqTkuK3luK7liqnku5bku6zjgILmgqjkuZ/lj6/ku6Xnu4jmraLmiYDmnInnmoTlm6LpmJ/kvJrorq7vvIzov5nmoLfmiYDmnInnmoTnlKjmiLflsIbpgIDlh7rns7vnu5/jgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPuW8uuWItuaJgOacieeUqOaIt+mDveenu+WKqOaWsOeahOS8muiuruWupDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+5aeT5ZCNPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7ooqvliJvlu7o8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7lj4LkvJrnmoTkurrlkZg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPuS9v+eUqOWKoOWPt+S7juW3pui+ueWinuWKoOS8muiuruaIkOWRmO+8jOaIluiAheS7juWPs+i+ueenu+mZpOWPguS8muS6uuWRmDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MSkg5Zui6Zif5Lya6K6u5a6k6K6+572uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4yKSDlsIbnlKjmiLfliqDlhaXliLDlm6LpmJ/kvJrorq7lrqTkuK08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPuWboumYn+S8muiuruWupOWQjeensDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+5Zui6Zif5Lya6K6u5a6kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7liIfmjaLliLDor6XkvJrorq7lrqTkuK08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPuWIh+aNouWIsOivpeWboumYn+S8muiuruWupOS4rTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+5YWz6Zet5Zui6Zif5Lya6K6u5a6k5bm26K6p5omA5pyJ55qE55So5oi36YCA5Ye6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7mlrDnmoTlm6LpmJ/kvJrorq7lrqQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPuaCqOacieaWsOeahOWboumYn+S8muiuruWupOWPr+eUqDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+5YiH5o2i5Yiw5Zui6Zif5Lya6K6u5a6k5LitPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7lm6LpmJ/kvJrorq7lrqTliqjkvZw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPuaCqOWPr+S7pemAmui/h+S4u+iPnOWNleS4reeahOKAnOWKqOS9nOKAneiPnOWNlemHjeaWsOaJk+W8gOivpeeql+WPoyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPuWPkemAgea2iOaBr+e7meWboumYn+S8muiuruWupOS4u+aMgeS6ujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQ0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+5paw5bu65Zui6Zif5Lya6K6u5a6kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7mnInmlrDnmoTkvJrorq7lrqTlj6/nlKjvvIzmgqjlj6/ku6XliIflhaXliLDor6XkvJrorq7lrqTkuK3ljrvjgILlm6LpmJ/kvJrorq7lrqTlsLHlg4/mnInkuIDnvqTkvJrorq7lrqTvvIzmiYDmnInkvJrorq7lrqTmnInkuIDkuKrotoXnuqfkuLvmjIHkurrlj6/ku6Xor7fmsYLluK7liqnjgILlnKjigJzmiJHnmoTkvJrorq7lrqTigJ3kuK3mgqjlj6/ku6XnnIvliLDlm6LpmJ/kvJrorq7lrqTjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPuWIh+aNouWIsOWboumYn+S8muiuruWupDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQ3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+5Yib5bu66ICFOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQ4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+5Zui6Zif5Lya6K6u5a6k5ZCN56ewOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQ5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+5aaC5p6c5oKo56a75byA5pys5Lya6K6u5a6k77yM56qX5Y+j5LuN5pen5Lya5L+d55WZITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+5pys5Zui5Lya6K6u5a6k5oiQ5ZGYPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4zKeWFtuWug+aCqOWPr+S7peWIh+WFpeeahOWboumYn+S8muiuruWupDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+5aaC5p6c56Kw5Yiw6Zeu6aKY77yM6K+35Y+R6YCB5LiA5p2h5raI5oGv57uZ5Zui6Zif5Lya6K6u5a6k55qE5Li75oyB5Lq644CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7lj5HpgIE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1NCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjIp6YKA6K+36Iez6L+Z5Liq5Zui6Zif5Lya6K6u5a6k55qE5omA5pyJ55So5oi3PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7mmK/lkKblm6LpmJ/kvJrorq7lrqTkuLvmjIHkuro8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1NiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPuaJgOacieeahOeUqOaIt+iiq+S4u+aMgeS6uumCgOivt+iHs+i/meS4quS8muiuruWupDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+5q2k5Yi75Zui6Zif5Lya6K6u5a6k5rKh5pyJ5Li75oyB5Lq6ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+6K+36L6T5YWl5LiA5p2h5raI5oGvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7or7fmsYLluK7liqnvvIzmiJHku6zlnKjlm6LpmJ/kvJrorq7lrqTkuK3pgYfliLDkuobpurvng6Y8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2MCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPuS4gOS4quWboumYn+S8muiuruWupOaIkOWRmOivt+axguaCqOeahOW4ruWKqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+5Zui6Zif5Lya6K6u5a6k6K+35rGC5biu5YqpcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+5raI5oGvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+5LuOOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+5oKo5LiN5bGe5LqO5Lu75L2V5Zui6Zif55qE5Lya6K6u5a6k77yM5L2G5oKo5Y+v5Lul5Yqg5YWl5Yiw5Lu75L2V5Zui6Zif55qE5Lya6K6u5a6k5LitPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjUiIG5hbWU9ImJhY2t1cENvbnRlbnQiPgorICAgIDx2YWx1ZT7lpIfku73ns7vnu5/vvIzljIXmi6zmiYDmnInnlKjmiLfkuqfnlJ/nmoTmlbDmja7vvIzkuI3ov4fkuI3ljIXmi6zor63oqIDphY3nva7vvIzov5nmmK/nlLHkuo7or63oqIDnmoTphY3nva7mmK/mnInns7vnu5/lronoo4Xml7blgJnlr7zlhaXnmoTjgILlpoLmnpzpnIDopoHmm7TmlrDmgqjnmoTns7vnu5/vvIzpnIDopoHlr7zlh7rml6fns7vnu5/nhLblkI7vvIwx77yJ6YeN5paw55Sf5oiQ5pWw5o2u5bqT77ybMu+8ieWvvOWFpeWkh+S7veeahOaWh+S7tu+8mzPvvInlnKjns7vnu5/kuqfnlJ/ku7vkvZXmlbDmja7liY3lhYjlr7zlhaXlpIfku73nmoTmlofku7bjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2NiIgbmFtZT0iYmFja3VwQ29udGVudCI+CisgICAgPHZhbHVlPuezu+e7n+Wkh+S7vTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY3IiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT7lhYHorrjnlKjmiLflhbHkuqvlsY/luZU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2OCIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+ROemgeatoueUqOaIt+WFseS6q+Wxj+W5lTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY5IiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT7nlKjmiLfmmK/kuLvmjIHkurrvvIzlj6/ku6XlgZrku7vkvZXliqjkvZwhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzAiIG5hbWU9ImFwcGx5IGZvciBzY3JlZW4vcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+5oOz5YWx5Lqr5bGP5bmVPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzEiIG5hbWU9Im1vZGVyYXRpb24gbWluaSBpY29ucyI+CisgICAgPHZhbHVlPuaCqOWPr+S7peWFseS6q+Wxj+W5leS6hjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDcyIiBuYW1lPSJtb2RlcmF0aW9uIG1pbmkgaWNvbnMiPgorICAgIDx2YWx1ZT7or7fmsYLlhbHkuqvlsY/luZU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3MyIgbmFtZT0ibW9kZXJhdGlvbiBtaW5pIGljb25zIGNvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT7lhYHorrgv56aB5q2i5YWx5Lqr5bGP5bmVPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzQiIG5hbWU9InNvdW5kIGljb24iPgorICAgIDx2YWx1ZT5U5YWz6Zet5aOw6Z+zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzUiIG5hbWU9InNvdW5kIGljb24iPgorICAgIDx2YWx1ZT7miZPlvIDlo7Dpn7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3NiIgbmFtZT0icm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPuWPquaciemfs+mikTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc3IiBuYW1lPSJyb29tIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+5Yu+6YCJ5q2k6aG55Y+v5Lul5L2/5b6X5Lya6K6u5a6k5Y+q6IO95pyJ6Z+z6aKR5Yqf6IO95pyJ5Yip5LqO6IqC55yB5bim5a69PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzgiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPuWcqOWFseS6q+Wxj+W5leacn+mXtOWFgeiuuOi/nOeoi+aOp+WItjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc5IiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7lnKjlhbHkuqvlsY/luZXmnJ/pl7TnpoHmraLov5znqIvmjqfliLY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MCIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+6K+35rGC5Zyo5YWx5Lqr5bGP5bmV5pyf6Ze05YWB6K646L+c56iL5o6n5Yi2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODEiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPuaCqOiiq+WFgeiuuOWcqOWFseS6q+Wxj+W5leacn+mXtOWFgeiuuOi/nOeoi+aOp+WItjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgyIiBuYW1lPSJhcHBseSBmb3IgcmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT7mg7Pov5znqIvmjqfliLY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MyIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+55So5oi35piv5Li75oyB5Lq677yM5LuW5Y+v5Lul5pON5o6n5Lu75L2V5Yqf6IO9ISBb6L+c56iL5qGM6Z2i5o6n5Yi2XTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg0IiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7lhYHorrgv56aB5q2i5L2/55So6L+c56iL5qGM6Z2i5o6n5Yi255qE5bGP5bmVICjlnKjlsY/luZXlhbHkuqvml7YpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODUiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPjEpIOS7juaCqOeahOiuoeeul+acuuWIsOi/nOeoi+iuoeeul+acuu+8muS7juacrOacuueahOWJquWIh+adv+aLt+i0neWSjOeymOi0tOWIsOi/nOeoi+aOp+WItuiuoeeul+acuuS4re+8jOmmluWFiOWcqOWxj+W5leS4iueCueS4gOS4i++8jOeEtuWQjuWcqOaWh+acrOahhuS4reWPs+mUrueCueWHu++8jOmAieaLqeKAnOaPkuWFpeKAneOAgjLvvInku47ov5znqIvorqHnrpfmnLrliLDmgqjnmoTorqHnrpfmnLrvvJrku47ov5znqIvorqHnrpfmnLrmi7fotJ3mlofmnKzliLDmgqjnmoTorqHnrpfmnLrkuK3vvIzpppblhYjpq5jkuq7pgInmi6nov5znqIvorqHnrpfmnLrnmoTmlofmnKzvvIznhLblkI7lj7PplK7ngrnlh7vlsY/luZXpgInmi6nmi7fotJ3pq5jkuq7mlofmnKzljbPlj6/jgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4NiIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+5Zyo5oKo55qE6K6h566X5ZKM6L+c56iL6K6h566X5py66Ze05ou36LSd5ZKM57KY6LS05paH5pysPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODciIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPuaLt+i0nemrmOS6ruaWh+acrDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg4IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT7lpoLkvZXmi7fotJ3lkoznspjotLQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4OSIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+5YWx5Lqr5bGP5bmV55qE6LSo6YePOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkwIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT7otoXpq5jmuIXmmbA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5MSIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+6auY5riF5pmwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTIiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPuS4gOiIrOa4heaZsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkzIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT7kvY7muIXmmbDluqY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NCIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5lbl9VUzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk1IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPmRlX0RFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTYiIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+6ZSu55uYOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk3IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPuWFs+mXree9kee7nOS8muiuriE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5OCIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT7kvJrorq7lt7Lnu4/lhbPpl63vvIzmgqjlsIbph43lrprlkJHliLDlhbblroPnvZHlnYA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5OSIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT7lhbPpl63kvJrorq7lrqQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMCIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT7lhbPpl63lkI7lsZXnpLrnu5nnlKjmiLfnmoTlnLDlnYBVUkw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMSIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT7kvJrorq7lrqTlhbPpl63orr7nva48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMiIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT7lpoLmnpzkvJrorq7lrqTlhbPpl63liJnnlKjmiLfkvJrooqvph43lrprkvY3liLDnm7jlupTnmoTlnLDlnYDkuK3ljrs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5MZGFwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDQiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+57yW5Y+3PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDUiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+5ZCN56ewPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDYiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+6YWN572u5paH5Lu2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDciIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+TGRhcOmFjee9rjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA4IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPuWQjeensDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA5IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPuaYr+WQpuacieaViDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEwIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPuiiq+aPkuWFpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTExIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPuaPkuWFpeiAhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEyIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPuiiq+abtOaWsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEzIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPuabtOaWsOiAhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE0IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPumFjee9ruaWh+S7tumcgOimgeS4jmhpYmVybmF0ZS5jZmcueG1s5paH5Lu25Zyo5ZCM5LiA55uu5b2V5Lit77yM5oKo6ZyA6KaB5omL5bel55qE5bCG6YWN572u5paH5Lu25LiK5Lyg5Yiw6K+l5paH5Lu25aS55Lit77yM5a+56K+l5paH5Lu255qE5Lu75L2V5L+u5pS56YO95Lya5Y2z5Yi75Zyo57O757uf5Lit5Y+N5bqU5Ye65p2l44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTUiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+6YWN572u5paH5Lu25ZCN56ewPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTYiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+5aaC5p6c5oKo5Yu+6YCJ5LqG4oCc5aKe5Yqg5Z+f6YCJ6aG54oCd77yM5YiZ5Zyo55m75b2V55WM6Z2i5Lit5bCG5Ye6546w4oCc5Z+f4oCd6YCJ5oup5LiL5ouJ5qGG6YCJ6aG544CC6L+Z6aG55Yqf6IO95ZyoTERBUOebruW9leacjeWKoeeahOmFjee9ruS4reaYr+mdnuW4uOacieeUqOeahOOAguWmgu+8muWmguaenOeUqOaIt+S9v+eUqGhhbnNAbG9jYWxob3N0LmNvbeS9nOS4umxkYXDnm67lvZXmnI3liqHnmoTnmbvlvZXlkI3vvIzliJnlnKjnlKjmiLflkI3kuK3lj6rpnIDopoHovpPlhaVoYW5z77yM6ICM5Z+f6YCJ6aG55YiZ6YCJ5oupbG9jYWxob3N0LmNvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE3IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPuWcqOeUqOaIt+WQjeWQjuWKoOWFpeWfn+WQjTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE4IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPuWfn+WQjTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE5IiBuYW1lPSJyZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPuaPkuWFpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIwIiBuYW1lPSJyZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPuaLt+i0nemrmOS6ruaWh+acrDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIxIiBuYW1lPSJyZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPui/nOeoi+eymOi0tOadv+S4reeahOaWh+acrDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIyIiBuYW1lPSJyZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPuaYvuekuui/nOeoi+eymOi0tOadvzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIzIiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT7kuI3opoHlho3mmL7npLo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNCIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+5Zyo5q2k5ou36LSd5paH5pysIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI1IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT7mgqjpnIDopoHov5znqIvmjqfliLbnmoTmnYPpmZDmiJbogIXmmK/kvZzkuLrkuLvmjIHkurrmiY3og73ov5vooYzmi7fotJ3lkoznspjotLTnmoTmk43kvZw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNiIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+57yW6L6R6buY6K6k6YWN572uLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjciIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPuS4jeimgeWcqOi/nOeoi+aOp+WItuS4reaYvuekuuaLt+i0neWSjOeymOi0tOeahOS/oeaBr+ahhjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI4IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPuS/neWtmDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI5IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPuenu+mZpDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMwIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPuWPlua2iDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMxIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+6YKA6K+355So5oi35Y+C5LiO5Lya6K6uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzIiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT7pgInmi6nkuIDkuKrkvJrorq7lrqTvvIzooqvpgoDor7fogIXkvJrlj5fliLDkuIDmnaHmgqjnmoTlkI3lrZflkozov5vlhaXkvJrorq7lrqTnmoTpk77mjqU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMyIgbmFtZT0iY2hhdCB1c2VyIj4KKyAgICA8dmFsdWU+6L+e5o6l5pe26Ze0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM0IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+6YKA6K+35ZCO6L+b5YWl5Lya6K6u5a6kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzUiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT7pgoDor7c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzNiIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPua2iOaBrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM3IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+5oOz6K+35oKo5Yqg5YWl5Lya6K6u5a6kOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM4IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+6YKA6K+35L+hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzkiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT7lj5HpgIHpgoDor7c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0MCIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPuS4jeW4jOacm+aUtuWIsOaCqOeahOmCgOivtyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0MSIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPuWQjOaEjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQyIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+5ouS57udPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDMiIG5hbWU9InVzZXIgcHJvZmlsZSI+CisgICAgPHZhbHVlPuaXtuWMujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ0IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT7kuovku7bor6bmg4U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0NSIgbmFtZT0iYXBwb2ludG1lbnQgbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+5aeT5ZCNPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDYiIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPuivpue7huaPj+i/sDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ3IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT7liJvlu7rogIU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0OCIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPuaXtuWMuuS/oeaBrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ5IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+5Yu+6YCJ4oCc5pe25Yy64oCd6YCJ6aG55L2/5b6X55So5oi35Zyo5LiL5qyh55m75b2V5pe25Y+v5Lul6K6p5LuW5Lus5pu05paw55So5oi36LWE5paZ5L+h5oGvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTAiIG5hbWU9InRpbWUgem9uZSB1cGRhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPuivt+afpeaguOaCqOaJgOWcqOeahOaXtuWMui48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MSIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+5paw5Lya6K6uOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUyIiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7or6bnu4bmg4XlhrUmbHQ7YnIvJmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUzIiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7lvIDlp4vml7bpl7Q6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTQiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPue7k+adn+aXtumXtDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NSIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+5Lya6K6u5Y+Y5pu0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU2IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7kuLvmjIHkuro6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTciIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPuS8muiuruWPlua2iDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1OCIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+5Lya6K6u5o+Q6YaSOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU5IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+56S+5Yy66K6+572uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjAiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT7ogZTns7vkv6Hmga/lr7nkuo7ku7vkvZXkurrpg73lj6/op4E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPua3u+WKoOS4quS6uuS4k+mVv+S7peS+v+WFtuS7luS6uuaWueS+v+aJvuWIsOaCqO+8jOeUqOmAl+WPt+WIhumalOWkmuS4quS4k+mVvzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYyIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+5L6b6IGM5Y2V5L2NPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjMiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT7kuKrkurrlhbTotqM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2NCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPuWnk+WQjTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY1IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+5pe25Yy6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjYiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT7kuKrkurrnibnplb88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2NyIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPuiBlOezu+S/oeaBrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY4IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+5Y+q57uZ6Ieq5bex55qE6IGU57O75Lq65pi+56S66IGU57O75L+h5oGvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjkiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT7kuI3lvIDmlL7kuKrkurrogZTns7vkv6Hmga88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPuS4quS6uueugOS7izwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTcxIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+6K6+572uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzIiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT7mn6Xmib7nlKjmiLc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MyIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPuaCqOeahOeugOS7i+WPr+iiq+WFtuWug+S6uuafpeecizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc0IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+57yW6L6R5Liq5Lq65L+h5oGvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzUiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT7mn6Xmib7lhbblroPkurrlkZg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NiIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT7mn6Xmib48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NyIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT7kvpvogYzljZXkvY08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3OCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT7lhbblroPkv6Hmga88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3OSIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT7lhbPplK7lrZc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT7lp5PlkI08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MSIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT7ml7bljLo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MiIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT7kvpvogYw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MyIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT7mkJzntKI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT7mkJzntKLov5Tlm57nu5Pmnpw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NSIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT7liqjkvZw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NiIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT7lop7liqDkuLrogZTns7vkuro8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NyIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT7lj5HpgIHmtojmga88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4OCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT7ogZTns7vkurrlj4rmtojmga88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4OSIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT7ooqvnpoHmraLnmoTnlKjmiLc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPuaOpeWPlzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkxIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+5ouS57udPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTIiIG5hbWU9InVzZXIgY29udGFjdCByZXF1ZXN0Ij4KKyAgICA8dmFsdWU+5oKo5aW9LDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkzIiBuYW1lPSJ1c2VyIGNvbnRhY3QgcmVxdWVzdCI+CisgICAgPHZhbHVlPuaDs+aKiuaCqOa3u+WKoOS4uuiBlOezu+S6ui48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NCIgbmFtZT0idXNlciBjb250YWN0IHJlcXVlc3QiPgorICAgIDx2YWx1ZT7mo4Dmn6XmgqjnmoTogZTns7vkurror7fmsYLmtojmga/vvIzpgJrov4fngrnlh7vpk77mjqXmnaXmjqXlj5fmiJbogIXmi5Lnu53or7fmsYI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NSIgbmFtZT0iYWRkIHVzZXIgY29udGFjdCI+CisgICAgPHZhbHVlPuivpeeUqOaIt+W3sue7j+WcqOaCqOeahOiBlOezu+S6uuihqOS4re+8jOaIluiAheivpeeUqOaIt+aUtuWIsOaCqOeahOmCgOivt+WQjuayoeacieWkhOeQhjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk2IiBuYW1lPSJ1c2VyIGNvbnRhY3QgbWFpbCI+CisgICAgPHZhbHVlPuiBlOezu+S6uuWIl+ihqDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+57yW6L6R6IGU57O75Lq65Y+K5raI5oGv77yM5aSE55CG6L+Y5pyq5aSE55CG55qE6K+35rGCITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk4IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+5bey57uP56Gu6K6k5LqG5oKo55qE6K+35rGCITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk5IiBuYW1lPSJjaGF0IGluZm8gbWVzc2FnZSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAwIiBuYW1lPSJjaGF0IGxvZyBpY29uIj4KKyAgICA8dmFsdWU+5p+l55yLIC/mi7fotJ3orqjorrrml6Xlv5c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMSIgbmFtZT0iY2hhdCBsb2cgd2luZG93Ij4KKyAgICA8dmFsdWU+6K6o6K665pel5b+XPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPuadpeiHqjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7kuLvpopg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+5Y+R6YCBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA2IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7mtojmga88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+5paw55qE6YKu5Lu2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPue7meaJgOacieiBlOezu+S6uuWPkemAgeaWsOa2iOaBrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7mkrDlhpnmlrDmtojmga88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+5Y+R6YCB57uZOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjExIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7kuLvpopg6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTIiIG5hbWU9IndoaXRlYm9hcmQgZnVsbC1maXQiPgorICAgIDx2YWx1ZT7kvb/nlKjmu6HlsY/lip/og73lsIbkvb/nmb3mnb/moLnmja7lj4LkvJrkurrlkZjnmoTlsY/luZXliIbovqjnjofosIPmlbTlj6/op4HmgKc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMyIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+6Lii5Ye655So5oi3PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTQiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPuaCqOS4jeiDveWwhuiHquW3sei4ouWHuu+8jOWmguaenOaDs+emu+W8gO+8jOivt+WFs+mXrea1j+iniOWZqOaIluiAhemAgOWHuueCueWHu+aMiemSrjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE1IiBuYW1lPSJraWNrLXVzZXIiPgorICAgIDx2YWx1ZT7mgqjnoa7kv6HlsIbor6XnlKjmiLfouKLlh7rkvJrorq7lrqTlkJfvvJ88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNiIgbmFtZT0ia2ljay11c2VyIj4KKyAgICA8dmFsdWU+56Gu6K6kLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTciIG5hbWU9ImtpY2stdXNlciI+CisgICAgPHZhbHVlPuaCqOS4jeiDveWwhui2hee6p+S4u+aMgeS6uui4ouWHuuS8muiuruWupCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxOCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+6aKE6K6i5Lya6K6u5a6kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPuW8gOWnizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7nu5PmnZ88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+5Zyo5Lya6K6u6K+35rGC5raI5oGv5Lit5aKe5Yqg5YW25LuW5YaF5a6577yM6K+l6K+35rGC5LqL5Lu25Lya5re75Yqg5Yiw5omA5pyJ55qE5Y+C5Lya5Lq65ZGY55qE5pel5Y6G5LitPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPuaUtuS7tueusTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7lj5HpgIHnrrE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+5Zue5pS256uZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPuaCqOS4jeiDveaKiuiHquW3seWKoOWFpeS4uuiBlOezu+S6ujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI2IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+55So5oi35bey57uP5ouS57ud6K+35rGCITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+55So5oi35bey57uP5o6l5Y+X6K+35rGCITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI4IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+55So5oi36K+35rGC5bey57uP5aSx5pWIITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI5IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+55So5oi35bey57uP5Yqg5YWl5Yiw6IGU57O75Lq65YiX6KGoITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMwIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+55So5oi35bey57uP5ouS57ud6IGU57O75Lq66K+35rGC77yM5bm25LuO5pyq5aSE55CG6IGU57O75Lq65Lit56e76ZmkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMxIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+5rKh5pyJ6L+Z5qC355qE6IGU57O75Lq6ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMyIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+5oKo56Gu5a6e5oOz56e76Zmk6K+l6IGU57O75Lq66ams77yfPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzMiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT7np7vpmaTnoa7orqQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPuS7juiBlOezu+S6uuWNleS4reWIoOmZpOiBlOezu+S6ujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM1IiBuYW1lPSJ1c2VyIHByb2ZpbGUiPgorICAgIDx2YWx1ZT7nlKjmiLfnroDku4s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNiIgbmFtZT0idXNlciBwcm9maWxlIj4KKyAgICA8dmFsdWU+5pi+56S655So5oi36LWE5paZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzciIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPua2iOaBrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7mn6Xmib48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzOSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+5YWo6YOo6YCJ5oupPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDAiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPuWFqOmDqOWPlua2iDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7pgInmi6nmnKrpmIXor7vnmoQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0MiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+6YCJ5oup5bey6ZiF6K+755qEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPuenu+WKqOWIsOaWh+S7tuWkuS4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7lop7liqDmlrDmlofku7blpLkuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+5Yig6ZmkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDYiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPuWIoOmZpOeahOmCruS7tuS7jeaXp+WcqOWeg+WcvueuseS4rSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+5qCH6K6w5pyq6ZiF6K+755qEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPuagh+iusOW3sumYheeahDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7lm57lpI08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+57uZ5omA5pyJ5Lq65Zue5aSNPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPui9rOWPkTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7liqjkvZwuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPuWPkemAgeengeS6uua2iOaBrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7msqHmnInpgInmi6nku7vkvZXmtojmga8hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPuenu+WFpeaUtuS7tueusTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU2IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7lvbvlupXliKDpmaQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+5LiN5Y+v5pKk6ZSA55qE5Yqo5L2cITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7lop7liqDmlofku7blpLk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1OSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+5aKe5Yqg5paH5Lu25aS55bm25pW055CG5raI5oGvITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7lop7liqDmlofku7blpLk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+5aKe5YqgPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSBmb2xkZXIiPgorICAgIDx2YWx1ZT7liKDpmaTmlofku7blpLk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPuaCqOS4jeiDveWIoOmZpOivpeaWh+S7tuWkue+8jOaWh+S7tuWkueS4rei/mOaciea2iOaBr++8jOmmluWFiOWIoOmZpOa2iOaBr+aIluiAheenu+WKqOWIsOWFtuWug+aWh+S7tuWkueS4rTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+57yW6L6R5aeT5ZCNPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSBmb2xkZXIiPgorICAgIDx2YWx1ZT7mgqjnoa7kv6HopoHliKDpmaTor6Xmlofku7blpLnlkJfvvJ/liKDpmaTlkI7kuI3lj6/mkqTplIA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPuaCqOeahOivt+axguW3suWPkemAgeWIsOeUqOaIt++8jOWvueaWueS8muaUtuWIsOS4gOadoeaOpeWPl+aIluiAheaLkue7neeahOmAmuefpe+8jOWPquacieiiq+aOpeWPl+S6hueahOeUqOaIt+aJjeS8muWHuueOsOWcqOaCqOeahOiBlOezu+S6uuS4rTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+5raI5oGvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjgiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+55So5oi35rKh5pyJ5YWx5Lqr5Liq5Lq65L+h5oGvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjkiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+55So5oi35Y+q5a+55LuW55qE6IGU57O75Lq65YWx5Lqr5L+h5oGvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzAiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+5Zyw5Z2AICZhbXA7IOeUteivnTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjcxIiBuYW1lPSJlcnJvciBjb2RlIj4KKyAgICA8dmFsdWU+6YKA6K+357yW56CB5bey57uP5aSx5pWI77yM6K+l56CB5Y+q5pyJ5LiA5q615pe26Ze055qE5pyJ5pWI5pyfPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzIiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT7mraTkuovku7bkuI7ml6XljobkuK3nmoTlh6DkuKrlhbbku5bnlKjmiLfnm7jlhbPogZTvvIzmgqjnmoTmm7TmlLnlkIzml7bkvJrmm7TmlrDlhbbku5bnlKjmiLfnmoTml6XljobvvIzmgqjnoa7lrp7pnIDopoHmm7TmlrDlkJfvvJ88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3MyIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPuehruiupOabtOaWsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc0IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+5YWB6K645YW25LuW55So5oi35p+l55yL5pel5Y6GPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzUiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT7kuI3lhbHkuqvml6XljoY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPuaXpeWOhuS4reeahOiBlOezu+S6ujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+5oKo6ZyA6KaB5b6X5Yiw56Gu6K6k5omN5Y+v5Lul5p+l55yL5YW25LuW55So5oi355qE5pel5Y6GPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzgiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT7mgqjkuI3og73liKDpmaTku5bkurrnmoTml6XljoYhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzkiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT7lj6rmmL7npLroh6rlt7HnmoTml6XljoYhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODAiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT7mraTkuovku7bkuI7ml6XljobkuK3nmoTlh6DkuKrlhbbku5bnlKjmiLfnm7jlhbPogZTvvIzmgqjliKDpmaTlkIzml7bkvJrliKDpmaTlhbbku5bnlKjmiLfnmoTml6XljobvvIzmgqjnoa7lrp7pnIDopoHliKDpmaTlkJfvvJ88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4MSIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPuehruiupOWIoOmZpDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgyIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+6L+b5YWl5Lya6K6u5a6kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODMiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT7orr/pl67kvJrorq7lrqQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+5q2k5raI5oGv5Lit5YyF5ZCr6aKE6K6i5Lya6K6u5a6k55qE5raI5oGvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODUiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT7mgqjpnIDopoHpppblhYjkv53lrZjkuovku7YhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODYiIG5hbWU9ImFjY2VzcyByb29tcyBlcnJvciI+CisgICAgPHZhbHVlPuS8muiuruWupOS4jeWtmOWcqO+8jOaXpeWOhuS4reeahOS6i+S7tuW3sue7j+iiq+WPlua2iDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg3IiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT7pgInmi6nmgqjnmoTmmLXnp7A8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4OCIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+5ZCNPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODkiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPuWnkzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkwIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT7pgq7ku7blnLDlnYA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MSIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+56Gu6K6kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTIiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPuacgOWwkTTkuKrlrZfnrKbvvIzpnIDopoHlp5PlkozlkI3jgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MyIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+6K+36L6T5YWl5pyJ5pWI55qE6YKu5Lu25Zyw5Z2AITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk0IiBuYW1lPSJhdXRoIGZyb20iPgorICAgIDx2YWx1ZT5GYWNlYm9vazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk1IiBuYW1lPSJhdXRoIGZvcm0iPgorICAgIDx2YWx1ZT7kvb/nlKhGYWNlYm9va+i0puWPt+eZu+W9lTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk2IiBuYW1lPSJ2aWV3IHByb2ZpbGUiPgorICAgIDx2YWx1ZT7miJDkuLrmiJDlkZjnmoTml7bpl7Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5NyIgbmFtZT0iZGlyZWN0IGxvZ2luIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7mgqjlt7Lnu4/kvb/nlKhGYWNlYm9va+i0puWPt+eZu+W9le+8jOaCqOmcgOimgeS9v+eUqOato+ehrueahOmCrueuseWcsOWdgOabtOaWsOaCqOeahOi1hOaWme+8jOWmguaenOmCrueuseS4jeato+ehru+8jOaCqOWwhuS4jeiDveS7juWFtuS7luiBlOezu+S6uuS4reaUtuWIsOmCgOivt+OAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk4IiBuYW1lPSJkaXJlY3QgbG9naW4gbWVzc2FnZSBoZWFkZXIiPgorICAgIDx2YWx1ZT7mtojmga88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5OSIgbmFtZT0iZGlyZWN0IGxvZ2luIG1lc3NhZ2UgY2hlY2tib3ggY29udHJvbCI+CisgICAgPHZhbHVlPuS4jeWGjeaYvuekuueugOS7i+abtOaWsOeahOa2iOaBrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAwIiBuYW1lPSJwcm9maWxlIHNldHRpbmdzIGJ1dHRvbiI+CisgICAgPHZhbHVlPuabtOWkmueahOaYvuekuumAiemhuS4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7mlrDnmoTnp4Hkurrmtojmga86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPueCueatpOafpeeci+eugOS7i+S7peWPiuWFqOmDqOeahOa2iOaBrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7lm57lpI08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwNCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+5Lya6K6u5a6k5Y+K6K6o6K66PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDUiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPuS8muiuruWupDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA2IiBuYW1lPSJteSByb29tcyI+CisgICAgPHZhbHVlPuWcqOe6v+S8muiuruWupCgxLTE25Lq6KTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA3IiBuYW1lPSJteSByb29tcyI+CisgICAgPHZhbHVlPuWcqOe6v+eglOiuqOS8migxLTEyMOS6uik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwOCIgbmFtZT0icm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPuaIkOWRmOWPtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA5IiBuYW1lPSJsb2dpbiBlcnJvciI+CisgICAgPHZhbHVlPuivt+i+k+WFpeWvhueggTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzEwIiBuYW1lPSJsb2dpbiBlcnJvciI+CisgICAgPHZhbHVlPuaCqOmcgOimgei0puWPtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzExIiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+V2ViLVNlcnZpY2UgKOmAmui/h1NPQVDorr/pl64pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTIiIG5hbWU9InVwbG9hZCBmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+55u05o6l6L295YWl5Yiw55m95p2/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTMiIG5hbWU9IndoaXRlYm9hcmQgY2xvc2UgY29uZmlybWF0aW9uIj4KKyAgICA8dmFsdWU+5oKo5piv5ZCm55yf55qE5oOz5Yig6Zmk55m95p2/77yf5q2k5Yqo5L2c5LiN5Y+v6YCGITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE0IiBuYW1lPSJ3aGl0ZWJvYXJkIGxvYWQgV01MIj4KKyAgICA8dmFsdWU+6L295YWl5Yiw55m95p2/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTUiIG5hbWU9InJlY29yZGluZyBmbGFnIj4KKyAgICA8dmFsdWU+5LiN55So5b+Y6K6w5b2V5Yi277yM5LiA5Liq55So5oi35LiA5Liq5Lya5piv5a6k55qE5oOF5Ya157uP5bi46ZyA6KaB5b2V5Yi2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTYiIG5hbWU9InJlY29yZGluZyBmbGFnIj4KKyAgICA8dmFsdWU+5byA5pSv5b2V5Yi2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTciIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+566t5aS0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTgiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+5ZyGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTkiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+55u057q/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjAiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+55+p5b2iPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjEiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+5LiJ6KeS5b2iPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjIiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT7mlofmnKwv5L6/562+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjMiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT7liarotLTnlLs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPuiHquaciee7mOWItjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI1IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+6YCJ5oupL+enu+WKqDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI2IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+57uY5Yi25b2i54q2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjciIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT7liarliIcv56e75YqoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjgiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT7nvKnlsI8v5pS+5aSnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjkiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT7miZPljbA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPuaSpOmUgDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMxIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+5Zue5pS256uZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzIiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT7lop7liqDnvZHmoLw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMyIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPuWFseS6q+aWh+S7tjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM0IiBuYW1lPSJpY29uIHN1Ym1lbnUiPgorICAgIDx2YWx1ZT7lvaLnirbpgInlj5Y8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNSIgbmFtZT0iaWNvbiBzdWJtZW51Ij4KKyAgICA8dmFsdWU+54K55Ye76YCJ5Y+WPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzYiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT7mi7fotJ08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNyIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPuWJquWIhzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM4IiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+57KY6LS0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzkiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT7liKDpmaQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MCIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPuaCqOaYr+WQpuecn+eahOaDs+WIoOmZpOeZveadv+S4reeahOaJgOacieWGheWuuT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MSIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPuebtOaOpei9veWFpeWIsOeZveadvzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQyIiBuYW1lPSJhdHRlbmRlZXMiPgorICAgIDx2YWx1ZT7lj4LkuI7ogIU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MyIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+6ICD5Yuk566h55CG5ZGYPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDQiIG5hbWU9ImF0ZW5kZWUgbWFuYWdlciI+CisgICAgPHZhbHVlPuWHuuW4rTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ1IiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT7ov5znqIvmjqfliLY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NiIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+5by55Ye6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDciIG5hbWU9ImNoYXQiPgorICAgIDx2YWx1ZT7orqjorro8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0OCIgbmFtZT0iaW52aXRlIGF0dGVuZGVlIj4KKyAgICA8dmFsdWU+6YKA6K+35Y+C5LiO5Lq65ZGYPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDkiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPumAmui/h+mCruS7tjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUwIiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT7nlKjmiLfmmK/kuLvmjIHkuro8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1MSIgbmFtZT0iaW52aXRlIGF0dGVuZGVlIj4KKyAgICA8dmFsdWU+55So5oi35bCG5pGE5YOP5aS05omT5byA5LqGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTIiIG5hbWU9ImZpbGxfb3B0aW9uIj4KKyAgICA8dmFsdWU+5YWz6Zet5Lul5b2i54q25pa55byP5aGr5YWFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTMiIG5hbWU9ImZpbGxfb3B0aW9uIj4KKyAgICA8dmFsdWU+5r+A5rS75Lul5b2i54q25pa55byP5aGr5YWFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTQiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT7oh6rliqjmjInnvZHmoLzmjpLliJc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NSIgbmFtZT0iYWxsb3dfcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+5YWB6K645b2V5Yi2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTYiIG5hbWU9IndhaXRfZm9yX3JlY29yZGluZyI+CisgICAgPHZhbHVlPuetieW+heW9leWItjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU3IiBuYW1lPSJoaWRlX3RvcF9iYXIiPgorICAgIDx2YWx1ZT7mjqnol4/pobbmoI88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1OCIgbmFtZT0iZmlsZUV4cGxvcmVyIj4KKyAgICA8dmFsdWU+5pKt5pS+6KeG6aKRPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTkiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT7noa7lrprliKDpmaTlvZPliY3lubvnga/niYfnmoTlhoXlrrk/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjAiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPuaOpeWPl+W5tuS4lOaOiOS6iOeUqOaIt+adg+mZkDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYxIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT7mi5Lnu508L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2MiIgbmFtZT0iYWN0aXZpdHlfd2luZG93Ij4KKyAgICA8dmFsdWU+STwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYzIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT7mtLvliqg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NCIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPuenu+mZpOeZveadvzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY1IiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+5oKo6ZyA6KaB5Li75oyB5Lq65p2D6ZmQ5pON5L2c55m95p2/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjYiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT7kuI3lhYHorrg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NyIgbmFtZT0idXNlcl9sZWZ0X2FjdF9tc2ciPgorICAgIDx2YWx1ZT7nprvlvIDkuobkvJrorq7lrqQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjgiIG5hbWU9ImNsaXBhcnQgaWNvbnMiPgorICAgIDx2YWx1ZT7mlbDlrabnrKblj7c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2OSIgbmFtZT0iY2xpcGFydCBpY29ucyI+CisgICAgPHZhbHVlPuacquWIhuexuzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzcwIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT7phY3oibLmlrnmoYg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+6LSo6YePPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzIiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPuWfnzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzczIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT7orr/pl648L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NCIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+5qmZ6ImyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzUiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPua1hee7v+iJsjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc2IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT7mtYXok53oibI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NyIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+5rex6JOd6ImyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzgiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPumHkem7hOiJsjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc5IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT7pk7bngbDoibI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4MCIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+6Ieq5a6a5LmJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODEiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPuacgOS9s+S9k+mqjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgyIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT7kuIrooYw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4MyIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+6YCC5LitPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODQiIG5hbWU9Im11dGUgbWljcm8iPgorICAgIDx2YWx1ZT7pnZnpn7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NSIgbmFtZT0idW5tdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+5byA5ZCv6bqm5YWL6aOOPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODYiIG5hbWU9ImdpdmUgZXhjbHVzaXZlIGF1ZGlvIj4KKyAgICA8dmFsdWU+57uZ5LqI54us5a626Z+z6aKRPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODciIG5hbWU9Im11dGUgc2VsZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+5bey6KKr5Li75oyB5Lq66K6+572u5Li65YWo5Zy66Z2Z6Z+z77yM5LiN5Y+v5pys5Lq66Kej6ZmkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODgiIG5hbWU9Im11dGUgc2VsZiBjb25maXJtIG1lc3NhZ2UgdGl0bGUiPgorICAgIDx2YWx1ZT7mmK/lkKborr7nva7mnKzkurrkuLrlhajlnLrpnZnpn7PvvJ88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4OSIgbmFtZT0ibXV0ZSBzZWxmIGNvbmZpcm0gbWVzc2FnZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+5piv5ZCm56Gu6K6k6K6+572u5pys5Lq65Li65YWo5Zy66Z2Z6Z+z77yf5YW25LuW55So5oi35bCG5peg5rOV5ZCs5Yiw5L2g44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTAiIG5hbWU9Im11dGUgb3RoZXJzIGNvbmZpcm0gbWVzc2FnZSB0aXRsZSI+CisgICAgPHZhbHVlPuaYr+WQpuiuvue9ruWFtuS7lueUqOaIt+S4uumdmemfs++8nzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkxIiBuYW1lPSJtdXRlIG90aGVycyBjb25maXJtIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7mmK/lkKbnoa7orqTorr7nva7mraTpuqblhYvpo47kuLrpnZnpn7PvvJ/ku4XpmZDkuo7mraTlsY/luZXorr7nva7jgILlhbbku5bnlKjmiLfkuI3lj5flvbHlk43jgILku4XkuLvmjIHkurrlj6/orr7nva7lhajlnLrpnZnpn7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5MiIgbmFtZT0ibXV0ZSBvdGhlcnMgY29uZmlybSBtZXNzYWdlIHRpdGxlIj4KKyAgICA8dmFsdWU+6K6+572u5YW25LuW55So5oi35Li65YWo5Zy66Z2Z6Z+z77yfPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTMiIG5hbWU9Im11dGUgb3RoZXJzIG1vZGVyYXRvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+5piv5ZCm56Gu6K6k6K6+572u5q2k55So5oi35Li65YWo5Zy66Z2Z6Z+z77yf5YW25LuW55So5oi35bCG5peg5rOV5ZCs5Yiw5LuW77yP5aW5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTQiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+5aOw6Z+z5bey5omT5byA44CC5Y2V5Ye75q2k5aSE5bCG6K+35rGC5Li75oyB5Lq66K6+572u5pys5Lq65Li65YWo5Zy677yI5pys5Lya6K6u5a6k77yJ6Z2Z6Z+zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTUiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+5aOw6Z+z5bey5YWz6Zet44CC5Y2V5Ye75q2k5aSE5bCG6K+35rGC5Li75oyB5Lq66Kej6Zmk5pys5Lq65YWo5Zy677yI5pys5Lya6K6u5a6k77yJ6Z2Z6Z+z6K6+572uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTYiIG5hbWU9Im11dGUgYXBwbHkgc2VsZiBvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+6K+35rGC5Li75oyB5Lq66K6+572u5pys5Lq65Li65YWo5Zy66Z2Z6Z+zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTciIG5hbWU9Im11dGUgYXBwbHkgc2VsZiBvZmYgbWVzc2FnZSI+CisgICAgPHZhbHVlPuivt+axguS4u+aMgeS6uuino+mZpOacrOS6uuWFqOWcuumdmemfs+iuvue9rjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk4IiBuYW1lPSJtdXRlIGFwcGx5IG9mIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7or7fmsYLkuLvmjIHkurrop6PpmaToh6rouqvpnZnpn7Porr7nva48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5OSIgbmFtZT0ibXV0ZSBhcHBseSBvZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+6K+35rGC5Li75oyB5Lq66K6+572u6Ieq6Lqr5Li66Z2Z6Z+zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDAiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+6Kej6Zmk6Z2Z6Z+z44CC5Y2V5Ye75q2k5aSE5bCG6K6+572u6K+l55So5oi35Li65YWo5Zy66Z2Z6Z+zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDEiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+6K6+572u6Z2Z6Z+z44CC5Y2V5Ye75q2k5aSE5bCG6Kej6Zmk6K+l55So5oi35YWo5Zy66Z2Z6Z+z6K6+572uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDIiIG5hbWU9Im11dGUgc2VsZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+6K+l55So5oi35bey6KKr5Li75oyB5Lq66K6+572u5Li65YWo5Zy66Z2Z6Z+z44CC5L2g5peg5rOV6Kej6Zmk6Z2Z6Z+z6K6+572uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDMiIG5hbWU9Im11dGUgbWljcm8iPgorICAgIDx2YWx1ZT7orr7nva7mnKzkurrkuLrlhajlnLrpnZnpn7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwNCIgbmFtZT0idW5tdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+6Kej6Zmk5pys5Lq65YWo5Zy66Z2Z6Z+z6K6+572uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDUiIG5hbWU9Im11dGUgbWljcm8iPgorICAgIDx2YWx1ZT7orr7nva7kuLrpnZnpn7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwNiIgbmFtZT0idW5tdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+6Kej6Zmk6Z2Z6Z+z6K6+572uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDciIG5hbWU9Im11dGUgbWljcm8iPgorICAgIDx2YWx1ZT7orr7nva7kuLrlhajlnLrorr7nva48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwOCIgbmFtZT0idW5tdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+6Kej6Zmk5YWo5Zy66Z2Z6Z+z6K6+572uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDkiIG5hbWU9Im11dGUgbW9kZXJhdG9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7ku4XpmZDkuLvmjIHkurrlj6/orr7nva7vvI/op6PpmaTku7vkuIDnlKjmiLflhajlnLrpnZnpn7Porr7nva7jgILorr7nva7mnKzkurrpnZnpn7PvvJror7fkvb/nlKjkvaDop4bpopHkuK3nmoTpuqblhYvpo47lm77moIfjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMCIgbmFtZT0icG9sbF9uYW1lIj4KKyAgICA8dmFsdWU+6LCD5p+l5ZCN56ewPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTEiIG5hbWU9InBvbGxfbmFtZSI+CisgICAgPHZhbHVlPuiwg+afpeS6ujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDEyIiBuYW1lPSJhcmNoaXZlZF9wb2xscyI+CisgICAgPHZhbHVlPuWtmOaho+eahOiwg+afpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDEzIiBuYW1lPSJhY3RpdmVfcG9sbCI+CisgICAgPHZhbHVlPua0u+i3gzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE0IiBuYW1lPSJjaGFydF9zaW1wbGUiPgorICAgIDx2YWx1ZT7nroDljZXlm77ooag8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNSIgbmFtZT0iY2hhcnRfcGllIj4KKyAgICA8dmFsdWU+6aW85Zu+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTYiIG5hbWU9InNpZ25fdXBfdmFsaWRhdGlvbiI+CisgICAgPHZhbHVlPuivt+i+k+WFpemCrueusTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE3IiBuYW1lPSJjaGF0X25vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPuaWsOS/oeaBrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE4IiBuYW1lPSJwb2xsX2Nsb3NlIj4KKyAgICA8dmFsdWU+5YWz6Zet6LCD5p+lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTkiIG5hbWU9InBvbGxfY2xvc2VfY29uZmlybSI+CisgICAgPHZhbHVlPuehruWumuimgeWFs+mXreatpOiwg+afpe+8n+WFtuS7luS6uuWwhuaXoOazleaKleelqOOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIwIiBuYW1lPSJwb2xsX2RlbGV0ZSI+CisgICAgPHZhbHVlPuWIoOmZpOiwg+afpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIxIiBuYW1lPSJwb2xsX2RlbGV0ZV9jb25maXJtIj4KKyAgICA8dmFsdWU+56Gu5a6a6KaB5Yig6Zmk5q2k6LCD5p+l77yf6LCD5p+l57uT5p6c5Lmf5bCG5Lya6KKr5Yig6Zmk44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjIiIG5hbWU9Imxhbmd1YWdlX2NvZGUiPgorICAgIDx2YWx1ZT7or63oqIBJU0/noIE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMyIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX3Blcm1pc3Npb24iPgorICAgIDx2YWx1ZT7lhYHorrjvvI/mi5Lnu53mj5Dkvpvni6zlrrbpn7PpopHnmoTmnYPliKk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNCIgbmFtZT0iYWxsb3dfZXhjbHVzaXZlX2F1ZGlvX3Blcm1pc3Npb24iPgorICAgIDx2YWx1ZT7lhYHorrjnlKjmiLfmj5Dkvpvni6zlrrbpn7PpopE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNSIgbmFtZT0iZGVueV9leGNsdXNpdmVfYXVkaW9fcGVybWlzc2lvbiI+CisgICAgPHZhbHVlPuaLkue7neeUqOaIt+aPkOS+m+eLrOWutumfs+mikTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI2IiBuYW1lPSJleGNsX2F1ZGlvIGFwcGx5IHNlbGYgb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPuW4jOacm+iiq+WFgeiuuOeLrOWutumfs+mikTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI3IiBuYW1lPSJleGNsX2F1ZGlvIGFwcGx5IG9mIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7luIzmnJvkuLvmjIHkurrlhYHorrjmnKzkurrmj5Dkvpvni6zlrrbpn7PpopE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyOCIgbmFtZT0iZXhjbF9hdWRpbyBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT7lhYHorrjmj5Dkvpvni6zlrrbpn7PpopE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyOSIgbmFtZT0iY2FtX3Jlc29sdXRpb24iPgorICAgIDx2YWx1ZT7mkYTlg4/lpLTlg4/ntKA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzMCIgbmFtZT0iY2FtX3Jlc29sdXRpb25faW5mbyI+CisgICAgPHZhbHVlPuabtOaUueWDj+e0oOS8muW9seWTjemikeWuve+8jOi+g+Wkp+eahOWbvueJh+mcgOimgei+g+mrmOmikeWuvTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMxIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fZXJyb3IiPgorICAgIDx2YWx1ZT7kvaDml6DmnYPnu5nkuojoh6rlt7HmiJblhbbku5bkurrni6zlrrbpn7PpopHjgILpnIDopoHlkJHkuLvmjIHkurrnlLPor7for6XmnYPliKnmiJbnlLPor7flvpfliLDni6zlrrbpn7PpopHjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzMiIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2FzayI+CisgICAgPHZhbHVlPuW4jOacm+W+l+WIsOeLrOWutumfs+mikeeahOadg+WIqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMzIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fYWN0aW9uIj4KKyAgICA8dmFsdWU+6LWL5LqI5oiR54us5a626Z+z6aKR77yI5oiW54K55Ye75L2g55qE6KeG6aKR77yM5oiW54K55Ye7RjEy77yJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzQiIG5hbWU9Im1pY3JvIGlzIG9uIj4KKyAgICA8dmFsdWU+6bqm5YWL6aOO5bey5omT5byAPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzUiIG5hbWU9Im1pY3JvIGlzIG9mZiI+CisgICAgPHZhbHVlPum6puWFi+mjjuW3suiiq+mdmemfszwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM2IiBuYW1lPSJoaWRlX2NoYXQiPgorICAgIDx2YWx1ZT7pmpDol4/lr7nor508L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNyIgbmFtZT0iaGlkZV9hY3Rpdml0aWVzX2FuZF9hY3Rpb25zIj4KKyAgICA8dmFsdWU+6ZqQ6JeP5rS75YqoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzgiIG5hbWU9ImhpZGVfZmlsZXNfZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7pmpDol4/moaPmoYjmgLvnrqE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzOSIgbmFtZT0iaGlkZV9hY3Rpb25zX21lbnUiPgorICAgIDx2YWx1ZT7pmpDol4/mk43kvZzoj5zljZU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MCIgbmFtZT0iaGlkZV9zY3JlZW5fc2hhcmluZyI+CisgICAgPHZhbHVlPumakOiXj+Wxj+W5leWFseS6qzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQxIiBuYW1lPSJoaWRlX3doaXRlYm9hcmQiPgorICAgIDx2YWx1ZT7pmpDol4/nmb3mnb88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MiIgbmFtZT0ic2hvdyBtaWNyb3Bob25lIHN0YXR1cyI+CisgICAgPHZhbHVlPuaYvuekuuinhumikeS4rem6puWFi+mjjueKtuaAgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQzIiBuYW1lPSJsYXlvdXRfb3B0aW9ucyI+CisgICAgPHZhbHVlPuW4g+WxgOmAiemhuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ0IiBuYW1lPSJjYWxlbmRhciBuZXcgYnV0dG9uIj4KKyAgICA8dmFsdWU+5paw5LqL5Lu2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDUiIG5hbWU9ImNhbGVuZGFyIHBhc3N3b3JkIGluZm8gdGV4dCI+CisgICAgPHZhbHVlPuWvhueggeS/neaKpOaYr+W9k+S9oOS/neWtmOaXpeWOhuS6i+S7tuaXtuWPkemAgee7meWPguS4juiAheeahOS8muiurumTvuaOpe+8jOiAjOmdnuS8muiuruWupOOAguWmguaenOWkmuasoeeUqOS4jeWQjOWvhueggeS/neWtmOS6i+S7tu+8jOavj+S4quWPguS4juiAheS8muaUtuWIsOS4gOS4quaWsOmTvuaOpeWSjOaWsOWvhuegge+8jOS9huS5i+WJjeWPkeWHuueahOmTvuaOpeS7jeWwhumAgueUqOOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ2IiBuYW1lPSJjYWxlbmRhciBlZGl0IGJ1dHRvbiI+CisgICAgPHZhbHVlPue8lui+keivpuaDhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ3IiBuYW1lPSJzaXAgc2hvdyBkaWFsZXIiPgorICAgIDx2YWx1ZT7mmL7npLpzaXDmi6jlj7c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0OCIgbmFtZT0ic2lwIGNhbGwiPgorICAgIDx2YWx1ZT7mi6jmiZM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0OSIgbmFtZT0iY2FsZW5kYXIgY29udGFjdCBsaXN0Ij4KKyAgICA8dmFsdWU+5pi+56S66IGU57O75Lq655qE5pel5Y6G5LqL5Lu2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTAiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPuS9oOeahOS4u+mhtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUxIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT7lronmjpLkvaDnmoTkvJrorq48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MiIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+6KeC55yL5b2V6Z+z5Y+K6K6/6ZeuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTMiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPumAieaLqeWPiuWQr+WKqOe9kee7nOS8muiurjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU0IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT7nrqHnkIbnlKjmiLflj4rmnYPliKk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1NSIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+566h55CG6L+e5o6l5Y+K6Lii6Zmk55So5oi3PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTYiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPueuoeeQhueUqOaIt+e7hDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU3IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT7nrqHnkIbkvJrorq7lrqQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1OCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+566h55CG57O757uf6K6+572uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTkiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPueuoeeQhuagh+etvuWPiuaWh+WtlzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYwIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT7nrqHnkIZMREFQ5Y+KQURT6YWN572uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjEiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPui+k+WHuu+8j+i+k+WFpeezu+e7n+Wkh+S7vTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYyIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+6ZyA6KaB5Li75oyB5Lq65oiW6KKr6LWL5LqI5p2D5Yip5Lul5Zyo55m95p2/5LiK57uY5Zu+77yM5LiK5Lyg77yM5re75Yqg77yM5Yig6Zmk5oiW5Yqg6L295paH5Lu25Y+K5paH5Lu25aS544CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjMiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT7nvJbovpHlhoXlrrk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2NCIgbmFtZT0ic2FsdXRhdGlvbiI+CisgICAgPHZhbHVlPuaVmeaOiDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY1IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlB1Ymxpc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2NiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdGFydCBQdWJsaXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjciIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U3RvcCBQdWJsaXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+SG9zdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY5IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlB1Ymxpc2ggQXBwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzAiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UHVibGlzaCBJZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDcxIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHVjZSB0aGUgd2lkdGggb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbW92ZSBpdCBsZWZ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzIiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UmVkdWNlIHRoZSBoZWlnaHQgb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbW92ZSBpdCBib3R0b208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5SZWR1Y2UgdGhlIHggb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbWFrZSBpdCB3aWRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc0IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHVjZSB0aGUgeSBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtYWtlIGl0IGhpZ2hlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc1IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkZpbGwgdGhlc2Ugc2V0dGluZ3Mgc3RyZWFtIHlvdXIgc2NyZWVuIGRhdGEgdG8gM3RoIHBhcnR5IHByb3ZpZGVycyBsaWtlIGp1c3Rpbi50djwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc2IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlBsZWFzZSBzdGFydCBTY3JlZW4gc2hhcmluZyB0byBiZSBhYmxlIHRvIHB1Ymxpc2ggaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3NyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5Nb2RlcmF0b3IgcGVybWlzc2lvbiByZXF1aXJlZCB0byBzdGFydCByZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3OCIgbmFtZT0ibm8gcmlnaHQgZm9yIGV4Y2x1c2l2ZSBhdWRpbyI+CisgICAgPHZhbHVlPllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gYXBwbHkgZXhjbHVzaXZlIGF1ZGlvIHRvIGFueSBwYXJ0aWNpcGFudC4gWW91IG5lZWQgbW9kZXJhdGlvbiByb2xlIG9yIHRoZSByaWdodCBmb3IgZXhjbHVzaXZlIGF1ZGlvIHRvIG1ha2UgYW55IG1pY3JvcGhvbmUgZXhjbHVzaXZlIHR1cm5lZCBvbi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzkiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlVwbG9hZCBuZXcgZmlsZSB0byBmaWxlIGV4cGxvcmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODAiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPk9wZW4gbmV3IGRpYWxvZyB3aXRoIHNoYXJpbmcgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+QW4gZXhpc3RpbmcgbW9kZXJhdG9yIG11c3QgYXBwcm92ZSBpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgyIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5Bc2sgbW9kZXJhdG9yIHRvIHNoYXJlIHlvdXIgd2ViY2FtL21pY3JvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODMiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkdhdGhlciBmZWVkYmFjayBieSBjcmVhdGluZyBhIHBvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+UGFzdCBhbmQgY3VycmVudCBwb2xsIHJlc3VsdHMgYXMgY2hhcnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODUiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlZvdGUgaWYgdGhlcmUgaXMgYSBwb2xsIGZvciB0aGlzIGNvbmZlcmVuY2Ugcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg2IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5FZGl0IGNhbSBhbmQgbWljIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODciIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkNvbmZpcm0gYW5kIGxlYXZlIHRoZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODgiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkNhbGwgZXh0ZXJuYWwgcGVvcGxlIHZpYSBWb0lQL1NJUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg5IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5TZW5kIGFuIGVtYWlsIHdpdGggYSBkaXJlY3QgbGluayB0byB0aGlzIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Q2hhbmdlIHlvdXIgd2hpdGVib2FyZCBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkxIiBuYW1lPSJiYWNrdXAgYWRtaW4iPgorICAgIDx2YWx1ZT5NYXggdXBsb2FkIHNpemU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MiIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+QXNrIG1vZGVyYXRvciB0byBzaGFyZSB5b3VyIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MyIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+U3RhcnQgUHJpdmF0ZSBDaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTQiIG5hbWU9ImFsbF9wcml2YXRlX2NoYXQiPgorICAgIDx2YWx1ZT5BbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NSIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBzdGFydCBhIHByaXZhdGUgY2hhdCB3aXRoIHlvdXJzZWxmLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk2IiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5Zb3UndmUgYWxyZWFkeSBzdGFydGVkIGEgcHJpdmF0ZSBjaGF0IHdpdGggdGhpcyBwYXJ0aWNpcGFudC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NyIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHByaXZhdGUgY2hhdD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5OCIgbmFtZT0iU2VydmVycyI+CisgICAgPHZhbHVlPlNlcnZlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5OSIgbmFtZT0iU2VydmVycyI+CisgICAgPHZhbHVlPlNlcnZlcnMgcGFydGljaXBhdGluZyBpbiBjbHVzdGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDAiIG5hbWU9IlNlcnZlciBuYW1lIj4KKyAgICA8dmFsdWU+U2VydmVyIE5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMSIgbmFtZT0iU2VydmVyIEFkZHJlc3MiPgorICAgIDx2YWx1ZT5TZXJ2ZXIgQWRkcmVzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAyIiBuYW1lPSJTZXJ2ZXIgZGV0YWlscyI+CisgICAgPHZhbHVlPlNlcnZlciBkZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDMiIG5hbWU9IlNlbmQgU01TIj4KKyAgICA8dmFsdWU+U2VuZCBTTVM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNCIgbmFtZT0icHVibGlzaGluZ19tZXNzYWdlIj4KKyAgICA8dmFsdWU+UHVibGlzaGluZy4gVXNlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNSIgbmFtZT0iY21kX2xpbmVfYWRtaW4iPgorICAgIDx2YWx1ZT5UbyBzYXZlIHRpbWUgYW5kIGludGVybmV0IHRyYWZmaWMgeW91IGNhbiB1c2UgY29tbWFuZCBsaW5lIGFkbWluIHRvIGJhY2t1cC9yZXN0b3JlL3VwZ3JhZGU6XG4gMSkgZ28gdG8gT00gaW5zdGFsbCBkaXIgKGZvciBleC4gL29wdC9yZWQ1KSBcbiAyKSBzdG9wIE9NIChmb3IgZXguIC4vcmVkNS1zaHV0ZG93bi5zaClcbiAzKSAuL2FkbWluLnNoIC1iIC1maWxlIH4vdG9kYXlfb21fYmFja3VwLnppcCAoY3JlYXRlIGJhY2t1cCBvZiBjdXJyZW50IE9NKVxuIDQpIGRvd25sb2FkIGFyY2hpdmUgd2l0aCBuZXcgT01cbiA1KSBtdiAvb3B0L3JlZDUgL29wdC5yZWQ1LmJhayAobW92ZSB3b3JraW5nIHZlcnNpb24gb2YgT00ganVzdCBpbiBjYXNlIDopKVxuIDYpIGV4dHJhY3QgZG93bmxvYWRlZCBPTSB0byB0aGUgL29wdC9yZWQ1XG4gNykgLi9hZG1pbi5zaCAtaSAtZmlsZSB+L3RvZGF5X29tX2JhY2t1cC56aXAgKG9yICcuL2FkbWluLnNoIC1pIC1maWxlIH4vdG9kYXlfb21fYmFja3VwLnppcCAtLWRiLXR5cGUgbXlzcWwgLS1kYi11c2VyIG9tX3VzZXIgLS1kYi1wYXNzIG9tX3VzZXJfcGFzcycgaW4gY2FzZSBvZiB5b3UgYXJlIHVzaW5nIG5vbi1kZWZhdWx0IERCIClcbiA4KSBzdGFydCBPTVxuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDYiIG5hbWU9InB1YmxpY19yb29tX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5Sb29tcyBjb21tb24gdG8gYWxsIHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNyIgbmFtZT0icHJpdmF0ZV9yb29tX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5Sb29tcyBjb21tb24gdG8gdGhlIGN1cnJlbnQgdXNlciBncm91cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA4IiBuYW1lPSJteV9yb29tX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5Sb29tcyBvZiB0aGUgY3VycmVudCB1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDkiIG5hbWU9ImNyZWF0ZV9uZXdfcm9vbSI+CisgICAgPHZhbHVlPkNyZWF0ZS9Nb2RpZnkgYXBwb2ludG1lbnQgc3BlY2lhbCByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTAiIG5hbWU9Im11bHRpcGxlX2FkZHJlc3NlcyI+CisgICAgPHZhbHVlPllvdSBjYW4gZW50ZXIgbXVsdGlwbGUgYWRkcmVzc2VzIGluIHRoZSBmb3JtYXQ6IGZpcnN0bmFtZTEgbGFzdG5hbWUxICZsdDtlbWFpbDEmZ3Q7LCJmaXJzdG5hbWUyIGxhc3RuYW1lMiIgJmx0O2VtYWlsMiZndDssJ2ZpcnN0bmFtZTMgbGFzdG5hbWUzJyAmbHQ7ZW1haWwzJmd0OywgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTEiIG5hbWU9InN0cmVhbV92b2x1bWUiPgorICAgIDx2YWx1ZT5BZGp1c3Qgc3RyZWFtIHZvbHVtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTEyIiBuYW1lPSJtaWNyb3Bob25lX3ZvbHVtZSI+CisgICAgPHZhbHVlPkFkanVzdCBtaWNyb3Bob25lIHZvbHVtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTEzIiBuYW1lPSJjaGF0X21vZGVyYXRlZCI+CisgICAgPHZhbHVlPklzIGNoYXQgbW9kZXJhdGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTQiIG5hbWU9ImNoYXRfbW9kZXJhdGVkIj4KKyAgICA8dmFsdWU+QWxsb3cgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE1IiBuYW1lPSJjaGF0X29wZW5lZCI+CisgICAgPHZhbHVlPkNoYXQgcGFuZWwgb3BlbmVkIGJ5IGRlZmF1bHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNiIgbmFtZT0iZmlsZXNfb3BlbmVkIj4KKyAgICA8dmFsdWU+RmlsZXMgcGFuZWwgb3BlbmVkIGJ5IGRlZmF1bHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNyIgbmFtZT0ic2VydmVyIGFkbWluIHNlY3Rpb24gbGFzdHBpbmciPgorICAgIDx2YWx1ZT5MYXN0IHBpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxOCIgbmFtZT0ic2VydmVyIGFkbWluIHNlY3Rpb24gbGFzdHBpbmcgaW5mbyI+CisgICAgPHZhbHVlPkV2ZXJ5IHNsYXZlIHNlbmRzIGEgcGluZyB0byB0aGUgbWFzdGVyIGV2ZXJ5IDMgc2Vjb25kcyAoY29uZmlndXJhYmxlKS4gU2xhdmUgbGFzdFBpbmcgbXVzdCBiZSBzbWFsbGVyIHRoZW4gMSBtaW51dGUgc28gdGhhdCB0aGUgbWFzdGVyIHVzZXMgdGhlIHNsYXZlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE5IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcG9ydCI+CisgICAgPHZhbHVlPkhUVFAgUG9ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIwIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gdXNlciI+CisgICAgPHZhbHVlPlVzZXIgKFNPQVAtQWNjZXNzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIxIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcGFzc3dvcmQiPgorICAgIDx2YWx1ZT5QYXNzd29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIyIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gd2ViYXBwIHBhdGgiPgorICAgIDx2YWx1ZT5XZWJhcHAgcGF0aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIzIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcHJvdG9jb2wiPgorICAgIDx2YWx1ZT5Qcm90b2NvbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI0IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcGluZyBydW5uaW5nIj4KKyAgICA8dmFsdWU+UGluZyBydW5uaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjUiIG5hbWU9InNlcnZlciBhZG1pbiBhY3RpdmUiPgorICAgIDx2YWx1ZT5BY3RpdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyNiIgbmFtZT0iZ2VuZXJhdGVfaGFzaCI+CisgICAgPHZhbHVlPkdlbmVyYXRlIFVSTDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI3IiBuYW1lPSJuZXR3b3JrIHRlc3RpbmcgbGluayI+CisgICAgPHZhbHVlPk5ldHdvcmsgdGVzdGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI4IiBuYW1lPSJyb29tX29wdGlvbnMiPgorICAgIDx2YWx1ZT5BdXRvIHNlbGVjdCBpbnRlcnZpZXcgdmlkZW8gcG9kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjkiIG5hbWU9ImZvbnRfdW5kZXJsaW5lIj4KKyAgICA8dmFsdWU+VW5kZXJsaW5lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzAiIG5hbWU9ImZvbnRfc3R5bGUiPgorICAgIDx2YWx1ZT5Gb250IHN0eWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzEiIG5hbWU9ImFsbG93X2ZvbnRfc3R5bGVzIj4KKyAgICA8dmFsdWU+QWxsb3cgZm9udCBzdHlsZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMiIgbmFtZT0iZm9udF9jb2xvciI+CisgICAgPHZhbHVlPkZvbnQgY29sb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMyIgbmFtZT0iaHlwZXJsaW5rIj4KKyAgICA8dmFsdWU+SHlwZXJsaW5rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzQiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW4iPgorICAgIDx2YWx1ZT5TaG93IHNlc3Npb24gc3RhdGlzdGljczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM1IiBuYW1lPSJjb25uZWN0aW9uIGFkbWluIj4KKyAgICA8dmFsdWU+U2Vzc2lvbiBkZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzYiIG5hbWU9InN5c3RlbV9pbXBvcnQiPgorICAgIDx2YWx1ZT5TeXN0ZW0gaW1wb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzciIG5hbWU9ImluY2x1ZGVfaW50b19iYWNrdXAiPgorICAgIDx2YWx1ZT5JbmNsdWRlIHVwbG9hZGVkIGZpbGVzIGFuZCByZWNvcmRpbmdzIGluIGJhY2t1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM4IiBuYW1lPSJyb29tX2FkbWluX3NpcCI+CisgICAgPHZhbHVlPkVuYWJsZSBTSVAgdHJhbnNwb3J0IGluIHRoZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzkiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19jb25maXJtIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIHByb3ZpZGUgdGhpcyB1c2VyIGFuIGV4Y2x1c2l2ZSBhdWRpbz88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU0MCIgbmFtZT0ibm9fdGltZXpvbmUiPgorICAgIDx2YWx1ZT5QbGVhc2Ugc3BlY2lmeSB5b3VyIHRpbWV6b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NDUiIG5hbWU9ImNvbnRlbnRfaXNfc2F2aW5nIj4KKyAgICA8dmFsdWU+Q29udGVudCBpcyBTYXZpbmcsIFBsZWFzZSB3YWl0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorPC9sYW5ndWFnZT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL2NoaW5lc2UgdHJhZGl0aW9uYWwueG1sIGIvV2ViQ29udGVudC9sYW5ndWFnZXMvY2hpbmVzZSB0cmFkaXRpb25hbC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGNmNTA2YgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL2NoaW5lc2UgdHJhZGl0aW9uYWwueG1sCkBAIC0wLDAgKzEsNDY1MiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKworPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworVGhpcyBGaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5IHRoZSBMYW5ndWFnZUVkaXRvciAKK3RvIGFkZCBuZXcgTGFuZ3VhZ2VzIG9yIG1vZGlmeS9jdXN0b21pemUgaXQgdXNlIHRoZSBMYW5ndWFnZUVkaXRvciAKK3NlZSBodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvTGFuZ3VhZ2VFZGl0b3IuaHRtbCBmb3IgRGV0YWlscyAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjLS0+Cis8bGFuZ3VhZ2UgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeG1sbnM6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbj0ibGFuZ3VhZ2UueHNkIj4KKyAgPHN0cmluZyBpZD0iMSIgbmFtZT0iY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPuinhuioiuacg+itsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyIiBuYW1lPSJtZWV0aW5nIj4KKyAgICA8dmFsdWU+5pyD6K2wPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMiIG5hbWU9ImNsYXNzcm9vbSI+CisgICAgPHZhbHVlPuacg+itsOW7szwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0IiBuYW1lPSJzZXR0aW5ncyI+CisgICAgPHZhbHVlPuioreWumjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1IiBuYW1lPSJiZW51dHplciI+CisgICAgPHZhbHVlPueUqOaItjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2IiBuYW1lPSJhZG1pbiI+CisgICAgPHZhbHVlPueuoeeQhjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3IiBuYW1lPSJzdG9wIj4KKyAgICA8dmFsdWU+5YGc5q2iPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPuiomOmMhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5IiBuYW1lPSJub2ZpbGUiPgorICAgIDx2YWx1ZT7mspLmnInos4fmlpk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAiIG5hbWU9InJlY29yZGJ5dGVhY2hlciI+CisgICAgPHZhbHVlPuiAgeW4q+iomOmMhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMSIgbmFtZT0iY29ubmVjdGVkdXNlcnMiPgorICAgIDx2YWx1ZT7pgKPmjqXnlKjmiLYgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMiIgbmFtZT0ic3RhcnRjb25mIj4KKyAgICA8dmFsdWU+5ZWf5YuV5pyD6K2wPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzIiBuYW1lPSJteW5hbWUiPgorICAgIDx2YWx1ZT7miJHnmoTlkI3lrZc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQiIG5hbWU9InZpZGVvY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPuinhuioiuacg+itsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNSIgbmFtZT0iaW1wb3J0Ij4KKyAgICA8dmFsdWU+6Ly45YWl5ryU56S6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2IiBuYW1lPSJyZWZyZXNoZmlsZXMiPgorICAgIDx2YWx1ZT7liLfmlrDliJfooag8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTciIG5hbWU9InRvbWFpbmZpbGUiPgorICAgIDx2YWx1ZT7lm57liLDkuLvopoHmqpTmoYg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgiIG5hbWU9Im5ld3BvbGwiPgorICAgIDx2YWx1ZT7mlrDnmoTmsJHmhI88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkiIG5hbWU9Im5ld3BvbGxoZWFkZXIiPgorICAgIDx2YWx1ZT7kuIDpoIXmlrDnmoTmsJHmhI/muKzpqZfntabpgJnmnIPorbA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAiIG5hbWU9InF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+5ZWP6aGMOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMSIgbmFtZT0icG9sbHR5cGUiPgorICAgIDx2YWx1ZT7msJHoqr/poZ7lnosgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMiIgbmFtZT0iY3JlYXRlIj4KKyAgICA8dmFsdWU+5bu656uLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzIiBuYW1lPSJpbmZvbWVzc2FnZSI+CisgICAgPHZhbHVlPuS/oeaBrzrmr4/lgIvmjqXlhaXnlKjmiLbmlLbliLDmlrDnmoTmsJHmhI/kv6Hmga88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQiIG5hbWU9ImNyZWF0cG9sbCI+CisgICAgPHZhbHVlPuWJtemAoOS4gOWAi+aWsOeahOawkeiqvzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNSIgbmFtZT0iY2FuY2VsIj4KKyAgICA8dmFsdWU+5Y+W6K+uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2IiBuYW1lPSJ5ZXNubyI+CisgICAgPHZhbHVlPuaYry/lkKY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjciIG5hbWU9Im51bWVyaWMiPgorICAgIDx2YWx1ZT7mlbjlrZfnmoQgMS0xMDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOCIgbmFtZT0icG9sbCI+CisgICAgPHZhbHVlPuawkeiqvzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOSIgbmFtZT0ibW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPuW/hemgiOaYr+S4u+aMgeS6uuiDveaPkOWHuuWVj+mhjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMCIgbmFtZT0idm90ZSI+CisgICAgPHZhbHVlPuS9oOeahOaKleelqOW3seeZu+iomDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMSIgbmFtZT0iYWxyZWFkeXZvdGVkIj4KKyAgICA8dmFsdWU+5L2g5bey57aT5oqV56Wo5Zyo5pys5qyh5rCR6Kq/5LitPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyIiBuYW1lPSJ2b3RpbmciPgorICAgIDx2YWx1ZT7mipXnpaghPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzIiBuYW1lPSJhbnN3ZXIiPgorICAgIDx2YWx1ZT7kvaDnmoTlm57mh4kgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNCIgbmFtZT0ieWVzIj4KKyAgICA8dmFsdWU+5pivPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1IiBuYW1lPSJubyI+CisgICAgPHZhbHVlPuWQpjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNiIgbmFtZT0icXVlc3Rpb253YW50Ij4KKyAgICA8dmFsdWU+55+l6YGT5LqL5oOF55qE56uL5aC0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNyIgbmFtZT0icG9sbHJlc3VsdHMiPgorICAgIDx2YWx1ZT7mipXnpajntZDmnpw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgiIG5hbWU9InF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+5ZWP6aGMOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOSIgbmFtZT0icmVzdWx0cyI+CisgICAgPHZhbHVlPue1kOaenDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAiIG5hbWU9ImFuc3dlcnMiPgorICAgIDx2YWx1ZT7nrZTmoYg6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxIiBuYW1lPSJub3BvbGwiPgorICAgIDx2YWx1ZT7msJHoqr/pgoTmspLplovlp4s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIiIG5hbWU9InZvdGluZ3MiPgorICAgIDx2YWx1ZT7mipXnpaghPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzIiBuYW1lPSJtZWV0aW5nIj4KKyAgICA8dmFsdWU+5pyD6K2wICjmnIDlpJo05bitKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NCIgbmFtZT0iY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPuacg+itsCAo5pyA5aSaNTDluK0pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1IiBuYW1lPSJ0eXBlIj4KKyAgICA8dmFsdWU+6aGe5Z6LPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2IiBuYW1lPSJyZW1haW5pbmdzZWF0cyI+CisgICAgPHZhbHVlPuWFtuS7luW4reS9jTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NyIgbmFtZT0iYWxyZWFkeWNob3NlbiI+CisgICAgPHZhbHVlPuW3sumBuOWumjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OCIgbmFtZT0iZW50ZXIiPgorICAgIDx2YWx1ZT7pgLLlhaU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkiIG5hbWU9Im1vZGxlYXZlIj4KKyAgICA8dmFsdWU+5Li75oyB5Lq65bey57aT6Zui6ZaL5LqG5pyD6K2wIC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAiIG5hbWU9InN5c3RlbW1lc3NhZ2UiPgorICAgIDx2YWx1ZT7ns7vntbHkv6Hmga88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTEiIG5hbWU9ImNob3NzZWRldmljZSI+CisgICAgPHZhbHVlPumBuOaTh+ijnee9rjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MiIgbmFtZT0iY2hvb3NlY2FtIj4KKyAgICA8dmFsdWU+6YG45pOH5pSd5YOP5py6IDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMiIG5hbWU9ImNob29zZW1pYyI+CisgICAgPHZhbHVlPumBuOaTh+m6peWFi+miqCA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0IiBuYW1lPSJvayI+CisgICAgPHZhbHVlPuiuvuWumuWlveS6hjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NSIgbmFtZT0iY2FuY2VsMiI+CisgICAgPHZhbHVlPuWPlua2iDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NiIgbmFtZT0icmVjb25lZWN0bmVlZGVkIj4KKyAgICA8dmFsdWU+5L2g6ZyA6KaB6YeN5paw6YCj5o6lIC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTciIG5hbWU9ImVkaXRzZXR1cCI+CisgICAgPHZhbHVlPue3qOi8r+ioreWumiAuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4IiBuYW1lPSJjb3Vyc2UiPgorICAgIDx2YWx1ZT7oqrLnqIsgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OSIgbmFtZT0ibGFuZ3VhZ2UiPgorICAgIDx2YWx1ZT7oqp7oqIAgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MCIgbmFtZT0ib2syIj4KKyAgICA8dmFsdWU+6K6+5a6a5aW95LqGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxIiBuYW1lPSJjYW5jZWwzIj4KKyAgICA8dmFsdWU+5Y+W5raIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyIiBuYW1lPSJjbGVhcndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT7muIXmjonpm7vlrZDnmb3mnb88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMiIG5hbWU9ImNsZWFyd2hpdGVib2FyZHF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+5L2g5oOz6KaB5Zyo5Yqg5ZyW54mH5LmL5YmN5YWI5riF5o6J55m95p2/5ZeOPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NCIgbmFtZT0iZG9udGFza2FnYWluIj4KKyAgICA8dmFsdWU+5LiN6KaB5YaN5ZWPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1IiBuYW1lPSJubyI+CisgICAgPHZhbHVlPuWQpjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NiIgbmFtZT0iZWRpdHNldHVwMiI+CisgICAgPHZhbHVlPue3qOi8r+ioreWumjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NyIgbmFtZT0ibmVlZGNvbmZpcm1hdGlvbndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT7oq4vmsYLnorroqo3muIXmjonnmb3mnb88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgiIG5hbWU9InVzZXJpbmZvIj4KKyAgICA8dmFsdWU+55So5oi36LOH5paZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5IiBuYW1lPSJjbGVhcmRyYXdhcmVhIj4KKyAgICA8dmFsdWU+5riF5o6J55Wr5ZyWPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwIiBuYW1lPSJ1bmRvIj4KKyAgICA8dmFsdWU+5pKk5raIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxIiBuYW1lPSJyZWRvIj4KKyAgICA8dmFsdWU+6YeN5YGaPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyIiBuYW1lPSJzZWxlY3RvYmplY3QiPgorICAgIDx2YWx1ZT7pgbjmk4flsI3osaE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMiIG5hbWU9InRleHQiPgorICAgIDx2YWx1ZT7lhajmloc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQiIG5hbWU9InBhaW50Ij4KKyAgICA8dmFsdWU+57mq55WrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1IiBuYW1lPSJkcmF3bGluZSI+CisgICAgPHZhbHVlPueVq+e3mjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NiIgbmFtZT0iZHJhd3UiPgorICAgIDx2YWx1ZT7nlavlvLfmtJ7lupXnt5o8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzciIG5hbWU9InJlY3QiPgorICAgIDx2YWx1ZT7plbfmlrnlvaI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgiIG5hbWU9ImVsbGlwc2UiPgorICAgIDx2YWx1ZT7mqaLlnJPlvaI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkiIG5hbWU9ImFycm93Ij4KKyAgICA8dmFsdWU+566t6aCtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwIiBuYW1lPSJkZWxldGVjaG9zZW4iPgorICAgIDx2YWx1ZT7liKrpmaTpgbjlrprpoIXnm648L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEiIG5hbWU9ImFwcGxpeW1vZCI+CisgICAgPHZhbHVlPueUs+iri+aIkOeCuuS4u+aMgeS6ujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MiIgbmFtZT0iYXBwbHkiPgorICAgIDx2YWx1ZT7mh4nnlKg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODMiIG5hbWU9ImNhbmNlbCI+CisgICAgPHZhbHVlPuWPlua2iDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NCIgbmFtZT0ibW9kIj4KKyAgICA8dmFsdWU+5oiQ54K65Li75oyB5Lq6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1IiBuYW1lPSJjbG9zZSI+CisgICAgPHZhbHVlPumXnOmWiTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NiIgbmFtZT0iaXRhbGljIj4KKyAgICA8dmFsdWU+5pac6auU5a2XPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3IiBuYW1lPSJib2xkIj4KKyAgICA8dmFsdWU+57KX6auU5a2XPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4IiBuYW1lPSJ3YWl0aW5nIj4KKyAgICA8dmFsdWU+562J5b6FPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5IiBuYW1lPSJhcHBseU1lc3NhZ2UiPgorICAgIDx2YWx1ZT7mnInnlKjmiLfmg7PnlLPoq4vmiJDngrrkuLvmjIHkuro8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAiIG5hbWU9ImFjY2VwdCI+CisgICAgPHZhbHVlPuaOpeWPlzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MSIgbmFtZT0icmVqZWN0Ij4KKyAgICA8dmFsdWU+5ouS57udPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyIiBuYW1lPSJjYW5jZWwiPgorICAgIDx2YWx1ZT7lj5bor648L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMiIG5hbWU9InNlbmRtb2RyZXF1ZXN0bWVzc2FnZSI+CisgICAgPHZhbHVlPumAgeWHuuiri+axguWIsOS7peS4i+eahOeUqOaItjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NCIgbmFtZT0iYWNjZXB0Ij4KKyAgICA8dmFsdWU+5o6l5Y+XPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1IiBuYW1lPSJyZWplY3QiPgorICAgIDx2YWx1ZT7mi5Lnu508L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYiIG5hbWU9ImNoYW5nZW1vZCI+CisgICAgPHZhbHVlPuaUueiuiuS4u+aMgeS6ujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NyIgbmFtZT0ibm9ubW9kZXJyb3JtZXNzYWdlIj4KKyAgICA8dmFsdWU+5L2g5LiN5piv6YCZ6Kqy56iL55qE5Li75oyB5Lq6ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OCIgbmFtZT0ibW9kZXJhdG9yIj4KKyAgICA8dmFsdWU+5Li75oyB5Lq6OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OSIgbmFtZT0icm9vbWZ1bGxtZXNzYWdlIj4KKyAgICA8dmFsdWU+6YCZ5YCL5oi/6ZaT5bey5ru/IC4g5bCN5LiN6LW3ICzoq4vmjY7lvozlho3oqaY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwIiBuYW1lPSJlbGxsaXBzZSI+CisgICAgPHZhbHVlPuapouWck+W9ojwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEiIG5hbWU9ImNsb3NlIj4KKyAgICA8dmFsdWU+6Zec6ZaJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMiIgbmFtZT0iQXV0aEVycm9yIj4KKyAgICA8dmFsdWU+6Ly45YWl6LOH5paZ5pyJ6KqkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMyIgbmFtZT0ibWluNHVzZXJuYW1lIj4KKyAgICA8dmFsdWU+55So5oi25ZCN5b+F6aCI6Iez5bCRNOWAi+Wtl+espjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQiIG5hbWU9Im1pbjRwYXNzIj4KKyAgICA8dmFsdWU+55So5oi25a+G56K85b+F6aCI6Iez5bCRNOWAi+Wtl+espjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUiIG5hbWU9InVzZXJuYW1ldGFrZW4iPgorICAgIDx2YWx1ZT7nlKjmiLblj7Dlt7Looqvlp7bnlKg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2IiBuYW1lPSJlbWFpbHRha2VuIj4KKyAgICA8dmFsdWU+6YCZ6Zu75a2Q6YO15Lu25bey6Ki75YaK6L+H5LqGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNyIgbmFtZT0iZW1haWx0YWtlbiI+CisgICAgPHZhbHVlPuezu+e1semMr+iqpCAs6KuL6IGv57mr57O757Wx566h55CG5ZOhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOCIgbmFtZT0iQXV0aGxvZ2luIj4KKyAgICA8dmFsdWU+55m76YyEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOSIgbmFtZT0iQXV0aHVzZXIiPgorICAgIDx2YWx1ZT7nlKjmiLYgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAiIG5hbWU9IkF1dGhwYXNzIj4KKyAgICA8dmFsdWU+5a+G56K8IDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExIiBuYW1lPSJBdXRobGFuZyI+CisgICAgPHZhbHVlPuiqnuiogDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIiIG5hbWU9IkF1dGhyZWciPgorICAgIDx2YWx1ZT7oqLvlhornmbvpjIQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzIiBuYW1lPSJyZWdmb3JtaGVhZCI+CisgICAgPHZhbHVlPuWgseWQjTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQiIG5hbWU9InJlZ2Zvcm11c2VyIj4KKyAgICA8dmFsdWU+55So5oi2IDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1IiBuYW1lPSJyZWdmb3JtcGFzcyI+CisgICAgPHZhbHVlPuWvhueivCA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNiIgbmFtZT0icmVnZm9ybXJldHlwZSI+CisgICAgPHZhbHVlPumHjeaJkzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3IiBuYW1lPSJyZWdmb3JtZmlyc3RuYW1lIj4KKyAgICA8dmFsdWU+5ZCN56ixOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgiIG5hbWU9InJlZ2Zvcm1sYXN0bmFtZSI+CisgICAgPHZhbHVlPuWnk+awjzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5IiBuYW1lPSJyZWdmb3JtbWFpbCI+CisgICAgPHZhbHVlPumDteS7tiA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMCIgbmFtZT0icmVnZm9ybXN0YXRlIj4KKyAgICA8dmFsdWU+5ZyL5a62IDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxIiBuYW1lPSJyZWdmb3JtYnRuMSI+CisgICAgPHZhbHVlPueZu+iomDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIiIG5hbWU9InJlZ2Zvcm1idG4yIj4KKyAgICA8dmFsdWU+5Y+W5raIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMyIgbmFtZT0iQXV0aGJ0bjIiPgorICAgIDx2YWx1ZT7nmbvoqJg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT7pppbpoIE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1IiBuYW1lPSJ1c2VyYWRtaW4iPgorICAgIDx2YWx1ZT7nlKjmiLbnrqHnkIY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2IiBuYW1lPSJncm91cGFkbWluIj4KKyAgICA8dmFsdWU+5ZyY6auU566h55CGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNyIgbmFtZT0ib3JnYWRtaW4iPgorICAgIDx2YWx1ZT7ntYTnuZTnrqHnkIY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4IiBuYW1lPSJoZWFkY29uZiI+CisgICAgPHZhbHVlPuacg+itsOWupDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkiIG5hbWU9ImNvbmZfcHViIj4KKyAgICA8dmFsdWU+5YWs6ZaL5pyD6K2wPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMCIgbmFtZT0iaGVhZF9vcmciPgorICAgIDx2YWx1ZT7ntYTnuZQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxIiBuYW1lPSJidG5fZW50ZXJyb29tIj4KKyAgICA8dmFsdWU+6YCy5YWlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMiIgbmFtZT0idXNlcmFsdGVyc2VsZl9sb2dpbiI+CisgICAgPHZhbHVlPueZu+mMhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMiIG5hbWU9InVzZXJhbHRlcnNlbGZfcGFzcyI+CisgICAgPHZhbHVlPuWvhueivDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQiIG5hbWU9InVzZXJhbHRlcnNlbGZfcGFzc3JldHlwZSI+CisgICAgPHZhbHVlPumHjeaJkzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUiIG5hbWU9InVzZXJhbHRlcnNlbGZfZmlyc3RuYW1lIj4KKyAgICA8dmFsdWU+5ZCN56ixPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNiIgbmFtZT0idXNlcmFsdGVyc2VsZl9sYXN0bmFtZSI+CisgICAgPHZhbHVlPuWnk+awjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzciIG5hbWU9InVzZXJhbHRlcnNlbGZfZW1haWwiPgorICAgIDx2YWx1ZT7pg7Xku7Y8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2JpcnRoIj4KKyAgICA8dmFsdWU+55Sf5pelPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOSIgbmFtZT0idXNlcmFsdGVyc2VsZl9zdHJlZXRubyI+CisgICAgPHZhbHVlPuihl+WQjS/omZ/norw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Rvd24iPgorICAgIDx2YWx1ZT7pg7Xnt6ggL+WfjuW4gjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDEiIG5hbWU9InVzZXJhbHRlcnNlbGZfc3RhdGUiPgorICAgIDx2YWx1ZT7lnIvlrrY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2FkcmVzc2NvbW1lbnQiPgorICAgIDx2YWx1ZT7lnLDlnYAt5L+h5oGvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MyIgbmFtZT0idXNlcmFsdGVyc2VsZl9oZWFkZXIiPgorICAgIDx2YWx1ZT7nlKjmiLfotYTmlpk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0IiBuYW1lPSJzYXZlbWVudWJhcl9zYXZlbGFiZWwiPgorICAgIDx2YWx1ZT7kv53lrZg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1IiBuYW1lPSJzYXZlbWVudWJhcl9zYXZlbGFiZWwiPgorICAgIDx2YWx1ZT7kv53lrZg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2IiBuYW1lPSJhZG1pbl91c2VybGlzdF91c2VyX2lkIj4KKyAgICA8dmFsdWU+55So5oi3LUlEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NyIgbmFtZT0iYWRtaW5fdXNlcmxpc3RfbG9naW4iPgorICAgIDx2YWx1ZT7nmbvpjIQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4IiBuYW1lPSJhZG1pbl91c2VybGlzdF9maXJzdG5hbSI+CisgICAgPHZhbHVlPuWQjeeosTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkiIG5hbWU9ImFkbWluX3VzZXJsaXN0X2xhc3RuYW1lIj4KKyAgICA8dmFsdWU+5aeT5rCPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MCIgbmFtZT0idHVybm92ZXJsaXN0X25leHQiPgorICAgIDx2YWx1ZT7poa/npLrkuIvkuIDlgIs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxIiBuYW1lPSJ0dXJub3Zlcmxpc3RfcHJlIj4KKyAgICA8dmFsdWU+6aGv56S65YmN5LiA5YCLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MiIgbmFtZT0ic2F2ZWNvbnRlbnRfY29uZmlybSI+CisgICAgPHZhbHVlPuWIqumZpOe0gOmMhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMiIG5hbWU9InNhdmVjb250ZW50X2NvbmZpcm1fY2FuY2VsX2J0biI+CisgICAgPHZhbHVlPuWPlua2iDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTQiIG5hbWU9InNhdmVjb250ZW50X2NvbmZpcm1fY29uZmlybV9idG4iPgorICAgIDx2YWx1ZT7liKrpmaQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU1IiBuYW1lPSJzYXZlbWVudWJhcl9hZGRsYWJlbCI+CisgICAgPHZhbHVlPuaWsOe0gOmMhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTYiIG5hbWU9InNhdmVtZW51YmFyX3JlbG9hZGxhYmVsIj4KKyAgICA8dmFsdWU+5Yi35paw57SA6YyEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NyIgbmFtZT0ic2F2ZW1lbnViYXJfZGVsZXRlbGFiZWwiPgorICAgIDx2YWx1ZT7liKrpmaTntIDpjIQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU4IiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fc3RhdHVzIj4KKyAgICA8dmFsdWU+54uA5oWLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1OSIgbmFtZT0idXNlcmFsdGVyX2FkbWluX3N0YXR1c0l0ZW0iPgorICAgIDx2YWx1ZT7pl5zplok8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYwIiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fc3RhdHVzSXRlbSI+CisgICAgPHZhbHVlPuWVn+WLlTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjEiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9vcmdhbmlzYXRpb24iPgorICAgIDx2YWx1ZT7ntYTnuZQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYyIiBuYW1lPSJjYWxlbmRhcl9pY29ubGFiZWwiPgorICAgIDx2YWx1ZT7ml6Xmm4Y8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYzIiBuYW1lPSJzYXZld2luZG93X2J0biI+CisgICAgPHZhbHVlPumXnOmWiTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjQiIG5hbWU9Im9yZ2FuaXNhdGlvbnRhYmxlbGlzdF9pZHJvdyI+CisgICAgPHZhbHVlPue1hOe5lCAtSUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY1IiBuYW1lPSJvcmdhbmlzYXRpb250YWJsZWxpc3RfbmFtZXJvdyI+CisgICAgPHZhbHVlPuWQjeeosTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjYiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGlkMSI+CisgICAgPHZhbHVlPueUqOaItjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjciIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGlkMiI+CisgICAgPHZhbHVlPuS4u+aMgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjgiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGlkMyI+CisgICAgPHZhbHVlPueuoeeQhjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjkiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGxhYmVsIj4KKyAgICA8dmFsdWU+55So5oi257Sa5YilPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MCIgbmFtZT0ib3JndmFsdWVfaGVhZGVyIj4KKyAgICA8dmFsdWU+57WE57mUPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MSIgbmFtZT0ib3JndmFsdWVfb3JnbmFtZSI+CisgICAgPHZhbHVlPuWQjeeosTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzIiIG5hbWU9Im9yZ3ZhbHVlX29yZ25hbWUiPgorICAgIDx2YWx1ZT7lop7liqDntYTnuZQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTczIiBuYW1lPSJvcmd2YWx1ZV9vcmduYW1lIj4KKyAgICA8dmFsdWU+5aKe5Yqg57WE57mUPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3NCIgbmFtZT0ib3JndmFsdWVfdXNlcndpbiI+CisgICAgPHZhbHVlPuWPlua2iDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzUiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW4iPgorICAgIDx2YWx1ZT7lop7liqA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc2IiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luIj4KKyAgICA8dmFsdWU+56e76Zmk57WE57mUPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3NyIgbmFtZT0ib3JndmFsdWVfdXNlcmxpc3QiPgorICAgIDx2YWx1ZT7nlKjmiLY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc4IiBuYW1lPSJvcmd2YWx1ZV91c2VybGlzdGFkZCI+CisgICAgPHZhbHVlPuWinuWKoOeUqOaItjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzkiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJsaXN0ZGVsZXRlIj4KKyAgICA8dmFsdWU+56e76Zmk55So5oi2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4MCIgbmFtZT0ib3JndmFsdWVfdXNlcndpbmhlYWRlciI+CisgICAgPHZhbHVlPuWinuWKoOeUqOaItjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODEiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5zZWFyY2hmaWVsZCI+CisgICAgPHZhbHVlPuWwi+aJvueUqOaItjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODIiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5zZWFyY2hidG4iPgorICAgIDx2YWx1ZT7lsIvmib48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgzIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luc2VhcmNocmVzdWx0Ij4KKyAgICA8dmFsdWU+55So5oi2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NCIgbmFtZT0ibG9naW53aW5fY2hvb3Nlb3JnYW5pc2F0aW9uIj4KKyAgICA8dmFsdWU+57WE57mUPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NSIgbmFtZT0ibG9naW53aW5fY2hvb3Nlb3JnYW5pc2F0aW9uYnRuIj4KKyAgICA8dmFsdWU+6YCy5YWlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NiIgbmFtZT0ibmF2aV9yb29tYWRtaW4iPgorICAgIDx2YWx1ZT7mnIPorbDlrqQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg3IiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+5pyD6K2w5a6kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4OCIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPui6q+S7veitiTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODkiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT7lkI3lrZc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkwIiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+5YWs6ZaLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5MSIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPue1hOe5lDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTIiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT7mnIPorbDlrqQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkzIiBuYW1lPSJyb29tdmFsdWVfbmFtZSI+CisgICAgPHZhbHVlPuWQjeWtlzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTQiIG5hbWU9InJvb212YWx1ZV90eXBlIj4KKyAgICA8dmFsdWU+6aGe5Z6LPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NSIgbmFtZT0icm9vbXZhbHVlX2lzcHVibGljIj4KKyAgICA8dmFsdWU+5YWs6ZaLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NiIgbmFtZT0icm9vbXZhbHVlX2NvbW1lbnQiPgorICAgIDx2YWx1ZT7oqZXoq5Y8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk3IiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVpY29uIj4KKyAgICA8dmFsdWU+5L+d5a2YPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5OCIgbmFtZT0id2hpdGVib2FyZF9vcGVuaWNvbiI+CisgICAgPHZhbHVlPui8uOWFpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTkiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2luaGVhZGVyIj4KKyAgICA8dmFsdWU+5Y+m5a2Y54K6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMCIgbmFtZT0id2hpdGVib2FyZF9zYXZlYXN3aW50ZXh0Ij4KKyAgICA8dmFsdWU+5paH5Lu25ZCN56ixPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMSIgbmFtZT0iZmlsZXMiPgorICAgIDx2YWx1ZT7mlofku7blkI3nqLE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAyIiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbmJ0bjEiPgorICAgIDx2YWx1ZT7lj5bmtog8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAzIiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbmJ0bjIiPgorICAgIDx2YWx1ZT7kv53lrZg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA0IiBuYW1lPSJycGNlcnJvcndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT7pjK/oqqQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA1IiBuYW1lPSJsb2Fkd21sX2hlYWRlciI+CisgICAgPHZhbHVlPui8uOWFpeS4rTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDYiIG5hbWU9ImxvYWR3bWxfbWVzc3Nsb2FkIj4KKyAgICA8dmFsdWU+5Li76aGM6Ly45YWlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNyIgbmFtZT0ibG9hZHdtbF9tZXNzc3luYyI+CisgICAgPHZhbHVlPuato+WcqOWQjOatpeWuouaItiAs5a6i5oi26KuL6K+u562JPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwOCIgbmFtZT0ibG9hZGltYWdlX21lc3Nsb2FkIj4KKyAgICA8dmFsdWU+6LyJ5YWl5ZyW5qqUPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwOSIgbmFtZT0ibG9hZGltYWdlX21lc3NzeW5jIj4KKyAgICA8dmFsdWU+5q2j5Zyo5ZCM5q2l5a6i5oi2ICzlrqLmiLboq4vor67nrYk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEwIiBuYW1lPSJsb2Fkd21sX2NvbmZpcm1oZWFkZXIiPgorICAgIDx2YWx1ZT7muIXpmaTnlavlnJbljYA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjExIiBuYW1lPSJsb2Fkd21sX2NvbmZpcm1tZXNzIj4KKyAgICA8dmFsdWU+5riF6Zmk55Wr5ZyW5Y2A77yM5omA5pyJ6LWE5paZ5pyD5LiN6KaL77yBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMiIgbmFtZT0ibG9hZHdtbF9jb25maXJtbWVzczIiPgorICAgIDx2YWx1ZT7norroqo3lvozlho3ovInlhaXmqpTmoYg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEzIiBuYW1lPSJzZW5kX2ludml0YXRpb25fYnRuIj4KKyAgICA8dmFsdWU+55m86YCB6YKA6KuLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNCIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX2hlYWRlciI+CisgICAgPHZhbHVlPueZvOmAgemCgOirizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTUiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+5Li76aGMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNiIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX3JlY2lwaWVudCI+CisgICAgPHZhbHVlPuWPl+mCgOiAhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTciIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9tZXNzYWdlIj4KKyAgICA8dmFsdWU+5L+h5oGvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxOCIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX2J0bl9jb25maXJtIj4KKyAgICA8dmFsdWU+6YCB5Ye6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxOSIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX2J0bl9jYW5jZWwiPgorICAgIDx2YWx1ZT7lj5bmtog8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIwIiBuYW1lPSJzZW5kX2NoYXRfdGV4dF9idG4iPgorICAgIDx2YWx1ZT7pgIHlh7o8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIxIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5faGVhZGVyIj4KKyAgICA8dmFsdWU+55So5oi26LOH5paZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyMiIgbmFtZT0iaW52aXRlZF91c2Vyd2luX3N1YmplY3QiPgorICAgIDx2YWx1ZT7kvaDpgJnmrKHmnIPorbDnmoTliKXlkI08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIzIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fbG9naW4iPgorICAgIDx2YWx1ZT7liKXlkI08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI0IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZmlyc3RuYW1lIj4KKyAgICA8dmFsdWU+5ZCN56ixPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNSIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2xhc3RuYW1lIj4KKyAgICA8dmFsdWU+5aeT5ZCNPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNiIgbmFtZT0iaW52aXRlZF91c2Vyd2luX21haWwiPgorICAgIDx2YWx1ZT7pm7vlrZDpg7Xku7Y8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI3IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fbGFuZyI+CisgICAgPHZhbHVlPuiqnuiogDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjgiIG5hbWU9Imludml0ZWRfdXNlcndpbl9lbnRlciI+CisgICAgPHZhbHVlPumAsuWFpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjkiIG5hbWU9Imludml0ZWRfdXNlcndpbl9lbnRlciI+CisgICAgPHZhbHVlPui8ieWFpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzAiIG5hbWU9Imludml0ZWRfdXNlcndpbl9lbnRlciI+CisgICAgPHZhbHVlPui1hOaWmeato+WcqOi8ieWFpSwg6KuL6K+u562JITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzEiIG5hbWU9InVzZXJfcmVnaXN0ZXJGYWxzZVBXRCI+CisgICAgPHZhbHVlPuWvhueivOmMr+iqpDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzIiIG5hbWU9InVzZXJfcmVnaXN0ZXJGYWxzZVBXREhlYWRlciI+CisgICAgPHZhbHVlPuiri+i8uOWFpeWFqeWAi+ebuOWQjOeahOWvhueivOacgOWwkTblgIvlrZfnrKY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMzIiBuYW1lPSJ1c2VyX3JlZ2lzdGVyTWFpbEVycm9yIj4KKyAgICA8dmFsdWU+6Yyv55qE6YO15Lu2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzNCIgbmFtZT0idXNlcl9yZWdpc3Rlck1haWxFcnJvckhlYWRlciI+CisgICAgPHZhbHVlPuS9oOi8uOWFpeS6huS4gOWAi+eEoeaViOeahOmDteS7tuWcsOWdgDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzUiIG5hbWU9InVzZXJfcmVnaXN0ZXJTdWNjZXNzIj4KKyAgICA8dmFsdWU+6Ki75YaK5a6M5oiQPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzNiIgbmFtZT0idXNlcl9yZWdpc3RlclN1Y2Nlc3NIZWFkZXIiPgorICAgIDx2YWx1ZT7kvaDnmoTos6zmiLblt7LntpPlu7rnq4suIOS9oOePvuWcqOS7peWPr+eZu+mMhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzciIG5hbWU9InVzZXJfc2hhcmluZ19tZXNzYWdlIj4KKyAgICA8dmFsdWU+5bex5pyJ5Yil5Lq65Zyo5YWx55So6YCZ55S15a2Q55m95p2/LCDkvaDnjrDlnKjmmqvmmYLnhKHms5Xlho3liIbkuqvjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM4IiBuYW1lPSJ1c2VyX3NoYXJpbmdfbWVzc2FnZUhlYWRlciI+CisgICAgPHZhbHVlPuWatOemgeWFseS6qzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzkiIG5hbWU9InVzZXJfZG9TdGFydFNjcmVlblZpZXdlciI+CisgICAgPHZhbHVlPuWIhuS6q+S9oOeahOWxj+W5lTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDAiIG5hbWU9InNjcmVlbl93YXJuQmFuZHdpZHRoIj4KKyAgICA8dmFsdWU+5aaC5p6c55yL5Yiw6YCZ6aCF6K2m5ZGK77yM6aGv56S65L2g55qE6aKR5a+s5LiN5aSg6YCg5oiQ54Sh5rOV5ZCM5q2l5bGP5bmVLiDmgqjlj6/ku6XllY/kuLvmjIHkurrpmY3kvY7lr6zpoLvmqJnmupYgLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDEiIG5hbWU9InNjcmVlbl91c2VybGFiZWwiPgorICAgIDx2YWx1ZT7nlavpnaLnlKjmiLc6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0MiIgbmFtZT0id2hpdGVib2FyZF90YWJfcGFpbnQiPgorICAgIDx2YWx1ZT7nlavlnJY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQzIiBuYW1lPSJ3aGl0ZWJvYXJkX3RhYl9kb2N1bWVudCI+CisgICAgPHZhbHVlPuaWh+S7tjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDQiIG5hbWU9InRhYmJhcl9jaGF0aWNvbiI+CisgICAgPHZhbHVlPuiBiuWkqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDUiIG5hbWU9InRhYmJhcl9maWxlc2ljb24iPgorICAgIDx2YWx1ZT7mqpTmoYg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ2IiBuYW1lPSJ0YWJiYXJfcGFydGljaXBhbnRzaWNvbiI+CisgICAgPHZhbHVlPuacg+WToTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDciIG5hbWU9InN3ZnByZXNlbnRhdGlvbl9saXN0c2F2ZW9yaWciPgorICAgIDx2YWx1ZT7kuIvovInljp/lp4vmlofku7Y8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ4IiBuYW1lPSJzd2ZwcmVzZW50YXRpb25fbGlzdHNhdmVwZGYiPgorICAgIDx2YWx1ZT7kuIvovIkgcGRmIOaWh+S7tjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDkiIG5hbWU9InN3ZnByZXNlbnRhdGlvbl9saXN0bG9hZHN3ZiI+CisgICAgPHZhbHVlPuaKiua8lOekuuaUvuWIsOeZveadvzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTAiIG5hbWU9Im5hdmltYWluX2NvbmZpZyI+CisgICAgPHZhbHVlPuiuvuWumjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTEiIG5hbWU9IndoaXRlYm9hcmRfYm91bmRpbmdib3hfZHJhZyI+CisgICAgPHZhbHVlPuaLlumAmeW9seixoTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTIiIG5hbWU9IndoaXRlYm9hcmRfYm91bmRpbmdib3hfcmVzaXplIj4KKyAgICA8dmFsdWU+6Kq/5pW05aSn5bCPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MyIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfem9vbSI+CisgICAgPHZhbHVlPiU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU0IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9zbGlkZSI+CisgICAgPHZhbHVlPueahDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTUiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX2ZpcnN0c2xpZGUiPgorICAgIDx2YWx1ZT7liLDnrKzigJPpoIE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU2IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9wcmVzbGlkZSI+CisgICAgPHZhbHVlPuWIsOWJjeS4gOmggTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTciIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX25leHRzbGlkZSI+CisgICAgPHZhbHVlPuWIsOS4i+S4gOmggTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTgiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX2xhc3RzbGlkZSI+CisgICAgPHZhbHVlPuWIsOacgOW+jOS4gOmggTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTkiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3pvb21taW51cyI+CisgICAgPHZhbHVlPue4ruWwjyAtLTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjAiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3pvb21wbHVzIj4KKyAgICA8dmFsdWU+5pS+5aSnICsrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MSIgbmFtZT0ic2FsdXRhdGlvbl9tciI+CisgICAgPHZhbHVlPuWFiOeUnzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjIiIG5hbWU9InNhbHV0YXRpb25fbWlzcyI+CisgICAgPHZhbHVlPuWls+WjqzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjMiIG5hbWU9Im5hdmltYWluX2NvbmZhZG1pbiI+CisgICAgPHZhbHVlPumFjee9rjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjQiIG5hbWU9ImNvbmZ0YWJsZV9oZWFkZXJJZCI+CisgICAgPHZhbHVlPue8luWPtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjUiIG5hbWU9ImNvbmZ0YWJsZV9oZWFkZXJrZXkiPgorICAgIDx2YWx1ZT7pl5zpjbU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY2IiBuYW1lPSJjb25mYWRtaW5mb3JtX2hlYWRlciI+CisgICAgPHZhbHVlPumFjee9rjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjciIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWxrZXkiPgorICAgIDx2YWx1ZT7pl5zpjbU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY4IiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsdXBkYXRlZCI+CisgICAgPHZhbHVlPuacgOW+jOabtOaWsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjkiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWx1cGRhdGVkYnkiPgorICAgIDx2YWx1ZT7mm7TmlrA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjcwIiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsY29tbWVudCI+CisgICAgPHZhbHVlPuipleirlnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjcxIiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsa2V5Ij4KKyAgICA8dmFsdWU+6Zec6Y21PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MiIgbmFtZT0idHVybm92ZXJsaXN0X21heHJlc3VsdHMiPgorICAgIDx2YWx1ZT7nmoQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjczIiBuYW1lPSJvcmdhbmlzYXRpb25fdXNlcnNoZWFkZXIiPgorICAgIDx2YWx1ZT7nlKjmiLY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc0IiBuYW1lPSJvcmdhbmlzYXRpb25fdXNlcnNpY29uZGVsZXRlIj4KKyAgICA8dmFsdWU+5Yiq6Zmk55So5oi277yM5b6e57WE57mUPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NSIgbmFtZT0ib3JnYW5pc2F0aW9uX3VzZXJzZGVsZXRlZGhlYWQiPgorICAgIDx2YWx1ZT7liKrpmaQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc2IiBuYW1lPSJvcmdhbmlzYXRpb25fdXNlcnNhbHJlYWRhZGRlZCI+CisgICAgPHZhbHVlPuatpOeUqOaItuW3sue2k+aYr+mAmeWAi+e1hOe5lOeahOacg+WToTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzciIG5hbWU9ImRhc2hib2FyZF9uZXdzaGVhZGVyIj4KKyAgICA8dmFsdWU+5paw6IGePC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3OCIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua3NoZWFkZXIiPgorICAgIDx2YWx1ZT7pgKPntZA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc5IiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rQ29uZiI+CisgICAgPHZhbHVlPumAsuWFpeacg+itsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODAiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtBdWRpdCI+CisgICAgPHZhbHVlPumAsuWFpeiqsuWggjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODEiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtzdXBwb3J0Ij4KKyAgICA8dmFsdWU+5bmr5Yqp5ZKM5pSv5oyBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MiIgbmFtZT0iZGFzaGJvYXJkX3F1aWNraG9tZXBhZ2V1cmwiPgorICAgIDx2YWx1ZT5odHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MyIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbWFpbGluZ2xpc3R1cmwiPgorICAgIDx2YWx1ZT5odHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvbWFpbC1saXN0cy5odG1sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4NCIgbmFtZT0iZGFzaGJvYXJkX3JlcG9ydGJ1Z3MiPgorICAgIDx2YWx1ZT7lkYroqLTmiJHlgJHllY/poYwhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4NSIgbmFtZT0iZGFzaGJvYXJkX3Jzc2xpc3RpdGVtbGlua3RleHQiPgorICAgIDx2YWx1ZT7mm7TlpJo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg2IiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5raG9tZXBhZ2VsYWJlbCI+CisgICAgPHZhbHVlPlByb2plY3QgV2Vic2l0ZSAoaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODciIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmttYWlsaW5nbGlzdGxhYmVsIj4KKyAgICA8dmFsdWU+VXNlciBNYWlsaW5nIExpc3QgKGh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9tYWlsLWxpc3RzLmh0bWwpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4OCIgbmFtZT0ibG9naW5fcmVtZW1iZXJ1c2VyIj4KKyAgICA8dmFsdWU+6KiY5L2P55m76YyEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4OSIgbmFtZT0ibWFpbl9uYXZpIj4KKyAgICA8dmFsdWU+5YWn5a65PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPuaIkeeahOmmlumggTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTEiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT7miJHlronmjpLnmoTmnIPorbA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkyIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+5oiR55qE6aCQ5a6a5rS75YuVPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MyIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPuWFrOmWi+acg+itsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTQiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT7np4HkurrmnIPorbA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk1IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+5YWs6ZaL5rS75YuVPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NiIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPuengeS6uua0u+WLlTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTciIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT7lhazplovlhaflrrk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk4IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+56eB5Lq65YWn5a65PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5OSIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPuWQhOS6uuWFp+WuuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDAiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAxIiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+5Li75oyBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMiIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPueUs+iri+aIkOeCuuS4u+aMgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDMiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT7msJHoqr88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA0IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+6YG45pOH5LiA5YCL5paH5Lu2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNSIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPuioreWumjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDYiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT7mlJ3lg4/mnLrlkozpuqXlhYvpoqjorr7lrpo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA3IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+55m95p2/6Kit5a6aPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwOCIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPumAgOWHujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDkiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT7lm57liLDmiL/plpM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEwIiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+55m75Ye6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7moYzpnaLngI/opr08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEyIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPuWVn+WLleahjOmdoueAj+imvTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTMiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+6KaW6aC75ZKM6Z+z6aC7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxNCIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7ogYrlpKk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE1IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPueZveadvzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTYiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+5Li75oyBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxNyIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7mlofku7Y8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE4IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPueUqOaItjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTkiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+5rCR6Kq/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyMCIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7mnInmspLmnInnlKjmiLbpgKPmjqXliLDoqbLnlKjmiLblkI08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIxIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPuipsumbu+mDtei8ieacieS4gOWAi+eJueauiueahOiBr+e5q+W3suiiq+eZvOmAgeWIsOaCqOeahOmbu+WtkOmDteS7tuWcsOWdgO+8jOiri+aqouafpeaCqOeahOS/oeeuseOAguWmguaenOaCqOmChOaykuacieaUtuWIsOmDteS7tu+8jOiri+iqv+aVtOS9oOeahOWeg+WcvumDteS7tuioree9ru+8jOS4pumHjeaWsOeZvOmAgeeiuuiqjemDteS7tjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjIiIG5hbWU9ImVycm9ydHlwZSI+CisgICAgPHZhbHVlPumMr+ivrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjMiIG5hbWU9ImVycm9ydHlwZSI+CisgICAgPHZhbHVlPuioiuaBrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjQiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPueEoeaViOaVo+WIl+OAguaJvuS4jeWIsOeUqOaIti48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI1IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT7ph43nva7lr4bnorw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI2IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT7nmbvpjIQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI3IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT7kv67mlLnlr4bnorw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI4IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT7mlrDlr4bnorw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI5IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT7ph43mlrDovLjlhaXlr4bnorw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMwIiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT7kvaDmiYDovLjlhaXnmoTlr4bnorzkuKbkuI3nm7jlkIw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMxIiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT405oiW5pu05aSa5YCL5a2X56ymO+Wkp+Wvq+acieWIhiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMyIiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT7lr4bnorzoqK3lrprjgILmgqjlj6/ku6Xnq4vljbPnmbvpjITjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMzIiBuYW1lPSJycGNjYWxsYmFjayI+CisgICAgPHZhbHVlPk9LPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNCIgbmFtZT0icnBjZ2VuZXJhbGVycm9yIj4KKyAgICA8dmFsdWU+5pyq55+l6Yyv6Kqk44CC6KuL5ZGK55+l5oKo55qE5pyN5YuZ5ZyY6ZqKPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7nlKjmiLblkI3mib7kuI3liLA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM2IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPuWvhueivOeEoeaViDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzciIG5hbWU9ImxvZ291dCI+CisgICAgPHZhbHVlPuaIkOWKn+eZu+WHujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzgiIG5hbWU9InJlZ2lzdHJhdGlvbiI+CisgICAgPHZhbHVlPuWJjeerr+eZu+iomOemgeeUqDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzkiIG5hbWU9InJlZ2lzdHJhdGlvbiI+CisgICAgPHZhbHVlPueEoeaViOmbu+WtkOmDteS7tjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDAiIG5hbWU9InJlZ2lzdHJhdGlvbiI+CisgICAgPHZhbHVlPumHjeikh+eahOaWh+S7tuWQje+8jOiri+mBuOaTh+WPpuS4gOWAi+aWh+S7tuWQjTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDEiIG5hbWU9ImZpbGVicm93c2VyIj4KKyAgICA8dmFsdWU+5paH5Lu25ZCN5aSq55+tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MiIgbmFtZT0iZmlsZWJyb3dzZXIiPgorICAgIDx2YWx1ZT7kuI3og73lhLLlrZjlnLDlnYA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQzIiBuYW1lPSJ1c2VyYWRtaW4iPgorICAgIDx2YWx1ZT7nlKjmiLbmt7vliqDvvIzkvYbkvaDpnIDopoHorr7lrprmraTnlKjmiLblsazmlrzkuIDlgIvntYTnuZTvvIzlkKbliYfku5blsIfnhKHms5XnmbvpjITjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ0IiBuYW1lPSJhZG1pbmZvcm1zIj4KKyAgICA8dmFsdWU+5paw57SA6YyEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+5rKS5pyJ55m854++6YCZ5LiA5YCLSUQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+5YWn5a6555qE5qiZ57Gk54Sh5rOV5Ye6546wLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDciIG5hbWU9ImVycm9ybWVzc2FnZSI+CisgICAgPHZhbHVlPueuoeeQhuiAhSDmjojmrIropoHmsYI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ4IiBuYW1lPSJtYWlubmF2aSI+CisgICAgPHZhbHVlPuiqnuiogC3nt6jogIU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ5IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7oqp7oqIA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUwIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7mqJnnsaQtSUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUxIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7mqJnnsaQt5ZCN56ixPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1MiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+5YO55YC8PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1MyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+5YWn5a655YO55YC8PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1NCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+5qiZ57GkLeWQjeeosTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTUiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPuaomeexpOWDueWAvDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTYiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPuaomeexpC1JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTciIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPuS9oOWPquWIqumZpOaomeexpO+8jOiAjOS4jeaYr+mgmOWfn++8geaCqOS4jeiDveWIqumZpOmgmOWfn++8jOWug+WPr+iDveW3suWcqOaomeexpOS4iueahOWFtuS7luiqnuiogOOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTgiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPueEoeaViOaomeexpGlkIOOAguipsmZpZWxkbGFuZ3VhZ2VzdmFsdWVzX2lk5LiN6IO95om+5Yiw5Zyo5pW45pOa5bqrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1OSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+5oKo5LiN6IO95Yiq6Zmk6YCZ5LiA6aCY5Z+f44CC5L2g5Y+q6IO95Yiq6Zmk5qiZ57Gk5Lim6Z2e6aCY5Z+f44CC5pyJ54Sh5qiZ57Gk6KOd5Zyo5q2k5pmC5oiW6ICF5a6D5piv5rKS5pyJ6YG45Lit55qE5Lu75L2V6aCY5Z+f77yM5oiW6ICF5pyJ5rKS5pyJ5ZWG5qiZ77yM6YCZ6ZaA6Kqe6KiA5pyD5oiQ54K66YCZ5LiA6aCY5Z+f55qE6Kit5a6a44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+5Ye65Y+jPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+5L2g6ZyA6KaB55m75Ye655yL5Yiw5pyJ5Lu75L2V6K6K5YyWLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjIiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPua3u+WKoOaWsOeahOiqnuiogDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjMiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPuWIqumZpOiqnuiogDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjQiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPua3u+WKoOaWsOeahOiqnuiogDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjUiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPuWnk+WQjTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjYiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPua3u+WKoOaWsOeahOiqnuiogDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjciIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPuWCmeS7vTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjgiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPuWIsOesrOKAk+mggTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjkiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPuWIsOWJjeS4gOmggTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzAiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPuWIsOS4i+S4gOmggTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzEiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPuacgOW+jOS4gOmggTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzIiIG5hbWU9InZpZGVvYm94Ij4KKyAgICA8dmFsdWU+55So5oi26K+06K+dIChCeSBjbGlja2luZyBoZXJlIHlvdSBjYW4gZ2l2ZSBleGNsdXNpdmUgYXVkaW8gLyBtdXRlIHRoZSBtaWNyb3Bob25lIG9mIG90aGVycyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzczIiBuYW1lPSJ2aWRlb2JveCI+CisgICAgPHZhbHVlPuaKiuiBsumfs+mWiy/pl5w8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc0IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT7ns7vntbE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc1IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT7mgqjnmoToqK3nva48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc2IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5oaSw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc3IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT7nt6jovK/mgqjnmoTmqpTmoYg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc4IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT7mlrDoqIrmga86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3OSIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+5LiK5YKz5paw5b2i6LGhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4MCIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT7nlKjmiLbmlbjmk5ogLSDlh7rlj6M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgxIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPuaJgOaciee1hOe5lOmDveW/hemgiOW3suWtmOWcqOeahDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODIiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+6ZaL5aeL5Ye65Y+jPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4MyIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT7nlLHntYTnuZQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg0IiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPumWi+WniyDlh7rlj6M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg1IiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPueUqOaItuaVuOaTmiAtIOmAsuWPozwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODYiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+6YG45pOH55So5oi2LnhtbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODciIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPumAsuWPozwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODgiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPuWHuuWPo+WIsFhNTCAt6YCZ5Lqb5qqU5qGI5Y+v55So5pa877yaIC3ngrroqbLpoIXnm67lgZrosqLnjbsgLeWwjuWFpeWIsOWPpuS4gOWAi+ezu+e1sSAt5YKZ5Lu9IC3lgIvmgKfljJYgLeaKiuWug+e0jeWFpeiqnuaWh+ebrumMhO+8jOeCuuS9oOeahOS4i+S4gOasoeWuieijnTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODkiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPumBuOaTh+S4gOeoruiqnuiogOeahOaWh+S7tui8uOWFpeOAgumBuOaTh+ato+eiuueahOiqnuiogOW+nue1hOWQiOahhuS4re+8gSDnhKHoq5bmmK/ku4DpurzlkI3nqLHnmoTmlofku7bvvIzlroPpg73lsIfljK/lhaXpgJnoqp7oqIAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5MCIgbmFtZT0iaW1wb3J0d2luZG93Ij4KKyAgICA8dmFsdWU+6YCy5Y+jLemBuOaTh+aWh+S7tjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTEiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT7lj6blrZjngro8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkyIiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+5aeT5ZCNOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTMiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT7oqZXoq5Y6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NCIgbmFtZT0icmVjb3JkaW5nc2F2ZXdpbiI+CisgICAgPHZhbHVlPuS/neWtmDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTUiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPumMhOW9sTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTYiIG5hbWU9InJlY29yZGVyIj4KKyAgICA8dmFsdWU+6YyE5b2x6KeA55y+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NyIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+5YWs5YWx5ZKM56eB5Lq65pyD6K2w5a6k55qE6YyE5b2xPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5OCIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+55So5oi2IDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk5IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT7liqDlhaU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMCIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMSIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+55So5oi25Zyo6YCZ5YCL5oi/6ZaTOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDIiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPuWIt+aWsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDMiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPumAmeWAi+aIv+mWk+W3sea7vyzlnKjmlbjliIbpkJjlho3oqabkuIDmrKEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNCIgbmFtZT0icm9vbXNMaXN0Ij4KKyAgICA8dmFsdWU+6bue5pOK5LiA5YCL5oi/6ZaT542y5b6X57Sw56+APC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNSIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+5ZKM6YCZ5YCL5pyD6K2w5a6k55qE55So5oi36IGK5aSpOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDYiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPuaIv+mWkzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA3IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT7nlKjmiLblnKjpgJnlgIvmiL/plpM6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwOCIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+5b6e5L2V5pmCOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDkiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPuaSreaUvumMhOW9sTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTAiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPue4veioiOaZgumWkzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDExIiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT7ml6XmnJ86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMiIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+6YyE5b2x5YSA5qih5byP77yB5L2g5LiN6IO95pS56K6K77yM6YCZ5piv5LiA5YCL6YyE5b2x5paH5Lu277yBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMyIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+5pKt5pS+6YCZ5YCL6YyE5b2xPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxNCIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+5pKt5pS+L+aaq+WBnDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTUiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPumWi+Wni+mMhOW9sTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTYiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPuWBnOatoumMhOW9sTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTciIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPumMhOW9sTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE4IiBuYW1lPSJyZWNvcmRfZXJyb3JfbXNnIj4KKyAgICA8dmFsdWU+54++5Zyo5bey57aT5pyJ5Lq65Zyo6YyE5b2xOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTkiIG5hbWU9InJlY29yZF9tZXNzYWdlIj4KKyAgICA8dmFsdWU+6YyE5b2x77yB5oyJ55So5oi2OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjAiIG5hbWU9InJlY29yZF9jYW5jZWwiPgorICAgIDx2YWx1ZT7lj5bmtog8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIxIiBuYW1lPSJyZWNvcmRfY2FuY2FsX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT7pjITlvbHlsIfooqvlj5bmtojvvIzkuKbkuI3mnIPooqvkv53lrZg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIyIiBuYW1lPSJjYW5jZWxfZGlhbG9nX3Jlc3VtZSI+CisgICAgPHZhbHVlPuaBouW+qTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjMiIG5hbWU9ImNhbmNlbF9kaWFsb2dfcmVzdW1lX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT7pl5zplonmraTnqpflj6PvvIzkuKbmgaLlvqnpjITlvbE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI0IiBuYW1lPSJwYWludHRvb2xzX2VsbGlwc2VfY29sb3IiPgorICAgIDx2YWx1ZT7mlLnorornt5rnmoTpoY/oibI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI1IiBuYW1lPSJjb2xvcnBpY2tlcl9oZWFkIj4KKyAgICA8dmFsdWU+6YG45pOH6aGP6ImyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyNiIgbmFtZT0icGFpbnR0b29sc19saW5lX2Rpc2FibGUiPgorICAgIDx2YWx1ZT7npoHnlKgv5L2/55SoIOe3mumhj+iJsjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjciIG5hbWU9InBhaW50dG9vbHNfZmlsbF9kaXNhYmxlIj4KKyAgICA8dmFsdWU+5pS56K6K6KOc6ImyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyOCIgbmFtZT0icGFpbnR0b29sc19saW5lX2Rpc2FibGUiPgorICAgIDx2YWx1ZT7npoHmraIv5L2/55So6KOc6ImyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyOSIgbmFtZT0iY2hhbmdlX3dpZHRoX2Fycm93X2Rvd25fc2xpZGVyIj4KKyAgICA8dmFsdWU+5pS56K6K57ea5a+sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzMCIgbmFtZT0iY2xvc2Vfc21hbGxfcG9wdXBzIj4KKyAgICA8dmFsdWU+6Zec6ZaJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzMSIgbmFtZT0icGFpbnRfdG9vbF9sZXR0ZXIiPgorICAgIDx2YWx1ZT7mlLnorormloflrZflpKflsI88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMyIiBuYW1lPSJyZWNvcmRpbmdzbGlzdF9kZWxldGUiPgorICAgIDx2YWx1ZT7liKrpmaToqJjpjIQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMzIiBuYW1lPSJyZWNvcmRpbmdzbGlzdF9yZWNvcmRlZEJ5R3Vlc3QiPgorICAgIDx2YWx1ZT7lrqLmiLY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM0IiBuYW1lPSJyZWNvcmRpbmdzbGlzdF9yZWNvcmRlZGJ5Ij4KKyAgICA8dmFsdWU+55SxOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzUiIG5hbWU9InJlY29yZGluZ3NfdGFibGVfaGVhZF9uYW1lIj4KKyAgICA8dmFsdWU+5aeT5ZCNPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNiIgbmFtZT0icmVjb3JkaW5nc190YWJsZV9oZWFkX3Jvb20iPgorICAgIDx2YWx1ZT7miL/plpM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM3IiBuYW1lPSJyZWNvcmRpbmdzX3RhYmxlX2hlYWRfZGF0ZSI+CisgICAgPHZhbHVlPuaXpeacnzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzgiIG5hbWU9InJlY29yZF9zdGFydF9jYW5jZWwiPgorICAgIDx2YWx1ZT7lj5bmtog8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM5IiBuYW1lPSJyZWNvcmRfc3RhcnRfc3RhcnQiPgorICAgIDx2YWx1ZT7plovlp4s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQwIiBuYW1lPSJmaWxlc2Jyb3dzZXJfdGFibGVfaGVhZF9uYW1lIj4KKyAgICA8dmFsdWU+5aeT5ZCNPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MSIgbmFtZT0iZmlsZXNicm93c2VyX3RhYmxlX2hlYWRfZGF0ZSI+CisgICAgPHZhbHVlPuaXpeacnzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDIiIG5hbWU9ImNoYXRfY2xlYXJfaGlzdG9yeSI+CisgICAgPHZhbHVlPuWIqumZpOacjeWLmeWZqCDogYrlpKnoqJjpjIQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQzIiBuYW1lPSJjaGF0X292ZXJhbGxfaGVhZGVyIj4KKyAgICA8dmFsdWU+6IGK5aSpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NCIgbmFtZT0iY2hhdF9zZW5kX2J0biI+CisgICAgPHZhbHVlPueZvOmAgea2iOaBrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDUiIG5hbWU9ImNoYXRfZW1vdF9idG4iPgorICAgIDx2YWx1ZT7ooajmg4XnrKbomZ88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ2IiBuYW1lPSJjaGF0X2Vtb3Rfd2luIj4KKyAgICA8dmFsdWU+6KGo5oOF56ym6JmfPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NyIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzIj4KKyAgICA8dmFsdWU+6YG45pOH5pKt5pS+6KOd572uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0OCIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2NvbWJvIj4KKyAgICA8dmFsdWU+6Z+z6aC75ZKM6KaW6aC7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0OSIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2NvbWJvIj4KKyAgICA8dmFsdWU+5YOF6Z+z6aC7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1MCIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2NvbWJvIj4KKyAgICA8dmFsdWU+5YOF6KaW6aC7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1MSIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2NvbWJvIj4KKyAgICA8dmFsdWU+5rKS5pyJ6Z+z6aC7L+imlumgu++8iOmdnOaFi+W9seWDj++8iTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTIiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19pbmZvX3RleHQiPgorICAgIDx2YWx1ZT7mspLmnInpn7PpoLsv6KaW6aC75b6e5L2g55qE5YCL5Lq66Zu76IWm5bCH5pyD5YWs5L2I77yM6ICM5LiN5piv5LiA5YCL5ZyW54mH5b6e5L2g55qE5qqU5qGI5bCx5pyD6aGv56S644CC6YG45pOH6YCZ5Lqb6Kit572u77yM5aaC5p6c5oKo5pyJ5ZWP6aGM77yM6IiH5L2g55qE5bi25a+s6YKE5piv5LiA5YCL6Z2e5bi457ep5oWi55qE5LqS6IGv57ay6YCj5o6l44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1MyIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9tb25kYXkiPgorICAgIDx2YWx1ZT5NTzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTQiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfdHVlc2RheSI+CisgICAgPHZhbHVlPlRVPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV93ZWRuZXNkYXkiPgorICAgIDx2YWx1ZT5XRTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTYiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfdGh1cnNkYXkiPgorICAgIDx2YWx1ZT5USDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTciIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfZnJpZGF5Ij4KKyAgICA8dmFsdWU+RlI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU4IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3NhdHVyZGF5Ij4KKyAgICA8dmFsdWU+U0E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU5IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3N1bmRheSI+CisgICAgPHZhbHVlPlNVPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9Nb25kYXlMYWJlbCI+CisgICAgPHZhbHVlPumAseS4gDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjEiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfVHVlc2RheUxhYmVsIj4KKyAgICA8dmFsdWU+6YCx5LqMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MiIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9XZWRuZXNkYXlMYWJlbCI+CisgICAgPHZhbHVlPumAseS4iTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjMiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfVGh1cnNkYXlMYWJlbCI+CisgICAgPHZhbHVlPumAseWbmzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjQiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfRnJpZGF5TGFiZWwiPgorICAgIDx2YWx1ZT7pgLHkupQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY1IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1NhdHVyZGF5TGFiZWwiPgorICAgIDx2YWx1ZT7pgLHlha08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY2IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1N1bmRheUxhYmVsIj4KKyAgICA8dmFsdWU+6YCx5pelPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NyIgbmFtZT0iY2FsZW5kYXJfd2Vla251bWJlcl9oZWFkZXIiPgorICAgIDx2YWx1ZT5DVzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjgiIG5hbWU9ImNhbGVuZGFyX3dlZWtudW1iZXJfaGVhZGVyVG9vbHRpcCI+CisgICAgPHZhbHVlPuaXpeabhumAsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjkiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT4x5pyIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3MCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPjLmnIg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDcxIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+M+aciDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzIiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT405pyIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3MyIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPjXmnIg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc0IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+NuaciDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzUiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT435pyIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3NiIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPjjmnIg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc3IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+OeaciDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzgiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT4xMOaciDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzkiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT4xMeaciDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODAiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT4xMuaciDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODEiIG5hbWU9ImNhbGVuZGFyd2luX2hlYWRlciI+CisgICAgPHZhbHVlPuaXpeabhjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODIiIG5hbWU9InJvb21hZG1pbl9sYWJlbE51bWJlck9mUGFydGljaXBhbnRzIj4KKyAgICA8dmFsdWU+5Y+D5Yqg6ICFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4MyIgbmFtZT0icm9vbVZhbHVlX2FkdmFuY2VkU2V0dGluZ3MiPgorICAgIDx2YWx1ZT7poa/npLrkvYjlsYDoqK3nva48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg0IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3ZpZGVvWCI+CisgICAgPHZhbHVlPlggfCBZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NSIgbmFtZT0icm9vbUFkbWluX2xheW91dF92aWRlb1kiPgorICAgIDx2YWx1ZT5XaWR0aCB8IEhlaWdodDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODYiIG5hbWU9InJvb21BZG1pbl9sYXlvdXQiPgorICAgIDx2YWx1ZT7oppbpoLst6ZuG6KOd566xPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NyIgbmFtZT0icm9vbUFkbWluX2xheW91dF9tb2QiPgorICAgIDx2YWx1ZT7kuLvmjIEt6ZuG6KOd566xPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4OCIgbmFtZT0icm9vbUFkbWluX2xheW91dF9tb2RfcG9zIj4KKyAgICA8dmFsdWU+WDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODkiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPueZveadvy3pm4boo53nrrE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkwIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmRfc2hvdyI+CisgICAgPHZhbHVlPuWVn+eUqDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTEiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZF9wb3MiPgorICAgIDx2YWx1ZT5YIHwgWTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTIiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPuWvrOW6pnzpq5jluqY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkzIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X2ZpbGVzIj4KKyAgICA8dmFsdWU+5qqU5qGI77yM6IGK5aSp77yM5Y+D5Yqg6ICFLembhuijneeusTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTQiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXNfc2hvdyI+CisgICAgPHZhbHVlPuWVn+eUqDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTUiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXNfcG9zIj4KKyAgICA8dmFsdWU+WCB8WTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTYiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXMiPgorICAgIDx2YWx1ZT7lr6zluqZ86auY5bqmPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NyIgbmFtZT0ibW9kZXJhdG9yX2dvbmVfbWVzc2FnZSI+CisgICAgPHZhbHVlPuS4u+aMgeS6uumboumWi+S6huaIv+mWk+OAguWcqOaZguWIu+aykuacieS6uuS7i+e0uSzkvaDlj6/ku6XnlLPoq4vmiJDngrrkuLvmjIHmiJbnrYnlvoU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk4IiBuYW1lPSJtb2RlcmF0b3JfbWVzc2FnZV9ldmVudF9ub19tb2QiPgorICAgIDx2YWx1ZT7lnKjpgJnlgIvmiL/plpPoo6HmmK/mspLmnInkuLvmjIHkuros5pyJ5LiA5Lqb5Lq65Y+D5Yqg44CC5L2g6KaB55Sz6KuL5oiQ5Li75oyB5oiW562J5b6FPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5OSIgbmFtZT0iZmVlZGJhY2tfdGVtcGxhdGVfc3ViamVjdCI+CisgICAgPHZhbHVlPuWPjemliyAkQVBQX05BTUU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAwIiBuYW1lPSJpbnZpdGF0aW9uX3RlbXBsYXRlX2hlYWQiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgLSDpgoDoq4s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAxIiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfZnJvbSI+CisgICAgPHZhbHVlPueUqOaItuioiuaBrzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAyIiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfbWVzc2FnZSI+CisgICAgPHZhbHVlPuioiuaBrzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAzIiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfY2xpY2tfdGV4dCI+CisgICAgPHZhbHVlPum7nuaTiuatpOmPiOaOpe+8jOWPg+WKoOacg+itsDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA0IiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfY2xpY2tfdGV4dF9saW5rIj4KKyAgICA8dmFsdWU+6bue5pOK6YCZ6KOh6YCy5YWl5oi/6ZaTPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwNSIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X2NsaWNrX3RleHRfaGVscCI+CisgICAgPHZhbHVlPuWmguaenOaCqOacieWVj+mhjOmAo+aOpe+8jOiri+ikh+ijveS4puiyvOWIsOS9oOeahOeAj+imveWZqOS4ijo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA2IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSAtIOiou+WGijwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDciIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9oZWFkMiI+CisgICAgPHZhbHVlPuS9oOeahOeUqOaItuaVuOaTmjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA4IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfdXNlcm5hbWUiPgorICAgIDx2YWx1ZT7nmbvpjIQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwOSIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X3Bhc3MiPgorICAgIDx2YWx1ZT7lr4bnorw6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxMCIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X21haWwiPgorICAgIDx2YWx1ZT7pg7XnrrE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxMSIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X2J5ZSI+CisgICAgPHZhbHVlPiRBUFBfTkFNRS3lnJjpmoo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTEyIiBuYW1lPSJyZWdpc3Rlcl9tYWlsX3N1YmplY3QiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgLSDoqLvlhoo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTEzIiBuYW1lPSJyZXNldF9wYXNzd29yZF90ZW1wbGF0ZV9oZWFkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIC0g6YeN6Kit5a+G56K8PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNCIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfdGVzdF9saW5rIj4KKyAgICA8dmFsdWU+6bue5pOK6YCZ5YCL6Y+I5o6l6YCy5YWl6Kit5a6a5paw55qE5a+G56K8OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTUiIG5hbWU9InJlc2V0X3Bhc3N3b3JkX3RlbXBsYXRlX3RleHQyX2xpbmsiPgorICAgIDx2YWx1ZT7pu57mk4rpgJnoo6HoqK3lrprmlrDnmoTlr4bnorw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE2IiBuYW1lPSJyZXNldF9wYXNzd29yZF90ZW1wbGF0ZV90ZXh0M19saW5rIj4KKyAgICA8dmFsdWU+5aaC5p6c5oKo5pyJ5ZWP6aGM6YCj5o6l77yM6KuL6KSH6KO95Lim6LK85Yiw5L2g55qE54CP6Ka95Zmo5LiKOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTciIG5hbWU9InJlc2V0X3Bhc3N3b3JkX21haWxfc3ViamVjdCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSDlr4bnorzph43oqK08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE4IiBuYW1lPSJkYXRlUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT7oq4vovLjlhaXmnInmlYjml6XmnJ/vvIzkvovlpoIgMjQuMTIuMjAwMSAoZGQubW0ueXl5eSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE5IiBuYW1lPSJlbWFpbFJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+6KuL6Ly45YWl5LiA5YCL5pyJ5pWI55qE6Zu75a2Q6YO15Lu2LCDkvovlpoIgbmFtZUBtYWlsLmNvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjAiIG5hbWU9ImZsb2F0UmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT7oq4vovLjlhaXkuIDlgIvmta7pu57mlbjomZ/norwsIOS+i+WmgiAxLjAwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyMSIgbmFtZT0ibnVtYmVyUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT7oq4vovLjlhaXkuIDlgIvomZ/norwgKEludGVnZXIpLCDkvovlpoIgMTAwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyMiIgbmFtZT0icGhvbmVSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPuiri+i8uOWFpeacieaViOeahOmbu+ipseiZn+eivCwg5L6L5aaCKys0OSAwMTIzIDEyMzEyMzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjMiIG5hbWU9InRpbWVSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPuiri+i8uOWFpeacieaViOeahOaZguWAme+8jOS+i+WmgiAxMjoyMyAoaGg6bW0pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3ciPgorICAgIDx2YWx1ZT7lr4bnorzkv53orbc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI1IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd19wYXNzd29yZExhYmVsIj4KKyAgICA8dmFsdWU+5a+G56K8PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNiIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWRMYWJlbCI+CisgICAgPHZhbHVlPuacieaViOacnzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjciIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkIj4KKyAgICA8dmFsdWU+54Sh6ZmQ5pyfPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyOCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWQiPgorICAgIDx2YWx1ZT7mnJ/pmZA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI5IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZCI+CisgICAgPHZhbHVlPuS4gOasoeaApzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzAiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkRnJvbUxhYmVsIj4KKyAgICA8dmFsdWU+5pyJ5pWI5pyf5b6eOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzEiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkVG9MYWJlbCI+CisgICAgPHZhbHVlPuacieaViOacn+iHszo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMyIiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd19NYWlsU3ViamVjdCI+CisgICAgPHZhbHVlPknpgoDoq4vliLAgJEFQUF9OQU1FPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMyIgbmFtZT0iaW52aXRhdGlvbl9lcnJvciI+CisgICAgPHZhbHVlPuaykuaciemAmeS4gOmCgOiri+eivDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzQiIG5hbWU9Imludml0YXRpb25fZXJyb3IiPgorICAgIDx2YWx1ZT7oqbLpgoDoq4vlt7LntpPkvb/nlKjjgILpgJnnqK7poZ7lnovnmoTpgoDoq4vvvIzkuI3og73lho3kvb/nlKjjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM1IiBuYW1lPSJpbnZpdGF0aW9uX2Vycm9yIj4KKyAgICA8dmFsdWU+VGhpcyBJbnZpdGF0aW9uLUNvZGUgaXMgbm90IHZhbGlkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzYiIG5hbWU9Imludml0YXRpb25fcGFzcyI+CisgICAgPHZhbHVlPuWvhueivDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM3IiBuYW1lPSJpbnZpdGF0aW9uX3Bhc3NfYnRuIj4KKyAgICA8dmFsdWU+5qC45bCN5a+G56K8PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzOCIgbmFtZT0iaW52aXRhdGlvbl9wYXNzX2Vycm9yIj4KKyAgICA8dmFsdWU+5a+G56K854Sh5pWI77yBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzOSIgbmFtZT0iQnJvd3NlciI+CisgICAgPHZhbHVlPkJyb3dzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQwIiBuYW1lPSJhdWRpb192aWRlbyI+CisgICAgPHZhbHVlPlN5bmNyb25pemUgQXVkaW8vVmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQxIiBuYW1lPSJlcnJvckNvZGVfaW52YWxpZFNlc3Npb24iPgorICAgIDx2YWx1ZT5Mb2dpbiB3YXMgY29ycmVjdCwgYnV0IHRoZSBTZXNzaW9uIHlvdSB0cmllZCBpcyBub3QgYWN0aXZlIG9yIHN0b3JlZCBvbiB0aGUgU2VydmVyLiBZb3UgaGF2ZSB0byBnZXQgYSBuZXcgU2Vzc2lvbklkIGFuZCByZXRyeSBsb2dpbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQyIiBuYW1lPSJlcnJvcmNvZGVfc2V0VXNlck9iamVjdCI+CisgICAgPHZhbHVlPlRoZSBTZXNzaW9uSWQgaXMgbm90IGxvZ2dlZGluIG9yIGhhcyBubyBBZG1pbiByaWdodHMuIFRoZSBTT0FQIEdhdGV3YXkgbmVlZHMgYW4gVXNlciB3aXRoIEFkbWluLVJpZ2h0cyB0byBlbWJlZCBuZXcgVXNlcnMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0MyIgbmFtZT0iZXJyb3Jjb2RlX2xvZ2luQnlSZW1vdGVVc2VyIj4KKyAgICA8dmFsdWU+VGhpcyBTZXNzaW9uIGhhcyBubyBSZW1vdGV1c2VyLURhdGEgY29ubmVjdGVkLiBXZXRoZXIgeW91IGRpZCBub3QgY2FsbCB0aGUgU09BUC1HYXRld2F5IGJlZm9yZSBhY2Nlc3NpbmcgdGhlIEFwcGxpY2F0aW9uIG9yIHlvdSBhcmUgdXNuaWcgYSB3cm9uZyBTZXNzaW9uLUlEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0NCIgbmFtZT0iZGVidWdfbWVzc2FnZV9yZWNvcmRpbmciPgorICAgIDx2YWx1ZT5UaGUgcmVjb3JkZXIgaXMgY3VycmVudGx5IEJldGEhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0NSIgbmFtZT0icHJvcGVydHlQYW5lbFhWYWx1ZSI+CisgICAgPHZhbHVlPng8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ2IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWFZhbHVlTGFiZWwiPgorICAgIDx2YWx1ZT54LWF4aXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ3IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWVZhbHVlIj4KKyAgICA8dmFsdWU+eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDgiIG5hbWU9InByb3BlcnR5UGFuZWxZVmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPnktYXhpczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDkiIG5hbWU9InByb3BlcnR5UGFuZWxXaWR0aFZhbHVlIj4KKyAgICA8dmFsdWU+dzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTAiIG5hbWU9InByb3BlcnR5UGFuZWxXaWR0aFZhbHVlTGFiZWwiPgorICAgIDx2YWx1ZT53aWR0aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTEiIG5hbWU9InByb3BlcnR5UGFuZWxIZWlnaHRWYWx1ZSI+CisgICAgPHZhbHVlPmg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUyIiBuYW1lPSJwcm9wZXJ0eVBhbmVsSGVpZ2h0VmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPmhlaWdodDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTMiIG5hbWU9InByb3BlcnR5T3BhY2l0eVNsaWRlciI+CisgICAgPHZhbHVlPkNoYW5nZSBUcmFuc3BhcmVuY3k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU0IiBuYW1lPSJicm93c2VyT3BlbiI+CisgICAgPHZhbHVlPkJyb3dzZXIgT3BlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTUiIG5hbWU9ImJyb3dzZXJDbG9zZSI+CisgICAgPHZhbHVlPkJyb3dzZXIgQ2xvc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU2IiBuYW1lPSJjb25uZWN0aW9uTG9zdE1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgQ29ubmVjdGlvbiB0byB0aGUgU2VydmVyIGlzIGxvc3QuIFlvdSBuZWVkIHRvIHJlbG9hZCB0aGUgQXBwbGljYXRpb24gb3IvYW5kIGNoZWNrIHlvdXIgTmV0d29yay48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU3IiBuYW1lPSI1NTciPgorICAgIDx2YWx1ZT5Qb2ludGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1OCIgbmFtZT0ic3luYyBtZXNzYWdlIGhlYWRlciI+CisgICAgPHZhbHVlPlN5bmNocm9uaXppbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU5IiBuYW1lPSJTeW5jaHJvbml6aW5nIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TeW5jaHJvbml6aW5nIFVzZXJzLCBwbGVhc2Ugd2FpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjAiIG5hbWU9ImV4cG9ydFRvU1ZHIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7RG93bmxvYWQgYXMgU1ZHJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjEiIG5hbWU9ImV4cG9ydFRvSW1hZ2UiPgorICAgIDx2YWx1ZT4mbHQ7dSZndDtEb3dubG9hZCBhcyBQTkcmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MiIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O0Rvd25sb2FkIGFzIEpQRyZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYzIiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7RG93bmxvYWQgYXMgUERGJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjQiIG5hbWU9ImV4cG9ydFRvSW1hZ2UiPgorICAgIDx2YWx1ZT4mbHQ7dSZndDtEb3dubG9hZCBhcyBUSUYmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2NSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPlJlbWluZGVyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjYiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5DYXRlZ29yeTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY3IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+UmVwZXRpdGlvbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY4IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+bm9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjkiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5Mb2NhdGlvbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTcwIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+U3RhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTcxIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+RW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MiIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPlRpdGxlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzMiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5Db21tZW50OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzQiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5JbnZpdGUgUGVvcGxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkRhaWx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NiIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPk1vbnRobHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc3IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+WWVhcmx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3OCIgbmFtZT0iYWxlcnQiPgorICAgIDx2YWx1ZT5BcHBvaW50bWVudC1lbmQgaXMgYWZ0ZXIgb2YgYXBwb2ludG1lbnQtc3RhcnQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3OSIgbmFtZT0iYWxlcnQiPgorICAgIDx2YWx1ZT5QbGVhc2UgaW5zZXJ0IGEgdGl0bGUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MCIgbmFtZT0iNTgwIj4KKyAgICA8dmFsdWU+UlRMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MSIgbmFtZT0iNTgxIj4KKyAgICA8dmFsdWU+QWN0aXZlIHRoaXMgaWYgeW91IHdyaXRlIGluIGEgcmlnaHQgdG8gbGVmdCBsYW5ndWFnZSAoaW52ZXJzZSB3b3JkIG9yZGVyKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODIiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+RGFzaGJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MyIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT5XYXRjaCByZWNvcmRlZCBNZWV0aW5ncyBvciBFdmVudHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg0IiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPk1lZXRpbmcgLSBNYWtlIGEgY29uZmVyZW5jZSB3aXRoIDQgKHVwIHRvIDE2KSBVc2VycyZsdDtici8mZ3Q7ZXZlcnlib2R5IHdpbGwgaGF2ZSBhdWRpbyArIHZpZGVvIGFjY2VzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODUiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+RXZlbnQgLSBNYWtlIGEgY29uZmVyZW5jZSB3aXRoIHVwIHRvIDIwMCBwYXJ0aWNpcGVudHMmbHQ7YnIvJmd0O09ubHkgdGhlIE1vZGVyYXRvciB3aWxsIGhhdmUgYXVkaW8vdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg2IiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPkNyZWF0ZSB1c2Vycywgcm9vbXMsIG9yZ2FuaXphdGlvbnMmbHQ7YnIvJmd0OyArIGNoYW5nZSBjb25maWd1cmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4NyIgbmFtZT0icm9vbSBBZG1pbmlzdHJhdGlvbiByb29tY2xpZW50cyBsaXN0Ij4KKyAgICA8dmFsdWU+VXNlcnMgaW4gdGhpcyBSb29tIG5vdzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODgiIG5hbWU9InJvb20gQWRtaW5pc3RyYXRpb24gcm9vbWNsaWVudHMgbGlzdCI+CisgICAgPHZhbHVlPklEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4OSIgbmFtZT0icm9vbSBBZG1pbmlzdHJhdGlvbiByb29tY2xpZW50cyBsaXN0Ij4KKyAgICA8dmFsdWU+TG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkwIiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5EPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5MSIgbmFtZT0ic3dmIHN5bmMgbWVzc2FnZSI+CisgICAgPHZhbHVlPkxvYWRpbmcgRG9jdW1lbnQuIFBsZWFzZSB3YWl0IHVudGlsbCBhbGwgQ2xpZW50IGhhdmUgYmVlbiBzeW5jaHJvbml6ZWQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5MiIgbmFtZT0idXBsb2FkIGRpYWxvZyI+CisgICAgPHZhbHVlPlVwbG9hZCBjb21wbGV0ZSwgY29udmVydGluZyBEb2N1bWVudCAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkzIiBuYW1lPSJ1cGxvYWQgZGlhbG9nIj4KKyAgICA8dmFsdWU+U3RhcnQgVXBsb2FkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NCIgbmFtZT0idXBsb2FkIGRpYWxvZyI+CisgICAgPHZhbHVlPlVwbG9hZCBhbmQgSW1wb3J0IERpYWxvZy4gUGxlYXNlIHNlbGVjdCBhIEZpbGUgZnJvbSB5b3VyIERpc2suPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NSIgbmFtZT0idXBsb2FkIERpYWxvZyI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTYiIG5hbWU9InVwbG9hZCBEaWFsb2ciPgorICAgIDx2YWx1ZT5TZWxlY3QgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTciIG5hbWU9ImFkbWluaXN0cmF0aW9uIG5hdmlnYXRpb24iPgorICAgIDx2YWx1ZT5Db25uZWN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTgiIG5hbWU9ImNvbmZhZG1pbiB2YWx1ZSBsaXN0Ij4KKyAgICA8dmFsdWU+VmFsdWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk5IiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+U3RyZWFtaWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAwIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+TG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAxIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+Q29ubmVjdGVkIHNpbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwMiIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPlJvb20gLyBTY29wZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDMiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5LaWNrIFVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA0IiBuYW1lPSJraWNrIHVzZXIgY29uZmlybWF0aW9uIGRpYWxvZyI+CisgICAgPHZhbHVlPktpY2sgVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDUiIG5hbWU9ImtpY2sgdXNlciBjb25maXJtYXRpb24gZGlhbG9nIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGtpY2sgdGhpcyBDbGllbnQgZnJvbSB0aGUgQ29ubmVjdGlvbj8mbHQ7YnIvJmd0OyBUaGlzIGRvZXMgb25seSByZW1vdmUgdGhlIENsaWVudCBmcm9tIHRoZSBjdXJyZW50IFJvb20uVGhlIENsaWVudCBjb3VsZCByZS1sb2dpbiBhZ2Fpbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA2IiBuYW1lPSJraWNrIHVzZXIgbWVzc2FnZSBkaWFsb2ciPgorICAgIDx2YWx1ZT5Zb3VyIHNlc3Npb24gaGFzIGJlZW4gY2xvc2VkIGJ5IGFuIEFkbWluaXN0cmF0b3Igb3IgTW9kZXJhdG9yLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDciIG5hbWU9InVzZXJhbHRlcnNlbGZfcGhvbmUiPgorICAgIDx2YWx1ZT5QaG9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDgiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPlVzZXIgaXMgdGhlIE1vZGVyYXRvciBvZiB0aGlzIFJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA5IiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5Vc2VyIGlzIGFsbG93ZWQgdG8gZHJhdyBvbiB0aGUgV2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTAiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPihSZSkgU3RhcnQgQXVkaW8vVmlkZW8gb3IgY2hhbmdlIERldmljZSBTZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTEiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPkFsbG93IHRoaXMgVXNlciB0byBkcmF3IG9uIHRoZSBXaGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMiIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+UmVtb3ZlIGFiaWxpdHkgdG8gZHJhdyBvbiB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMyIgbmFtZT0iY29uZmVyZW5jZVBhbmVscyI+CisgICAgPHZhbHVlPlVzZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxNCIgbmFtZT0iY29uZmVyZW5jZVBhbmVscyI+CisgICAgPHZhbHVlPkZpbGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxNSIgbmFtZT0iY29uZmVyZW5jZVBhbmVscyI+CisgICAgPHZhbHVlPldoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE2IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+Q2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTciIG5hbWU9Im9yZ2FuaXphdGlvbiBjaG9vc2UgaW5mbyI+CisgICAgPHZhbHVlPllvdXIgYWNjb3VudCBpcyBhc3NpZ25lZCB0byBtdWx0aXBsZSBPcmdhbml6YXRpb25zLiBQbGVhc2UgY2hvb3NlIG9uZSBmb3IgdGhpcyBTZXNzaW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTgiIG5hbWU9ImVycm9yIG1lc3NhZ2Ugcm9vbSBmdWxsIj4KKyAgICA8dmFsdWU+VGhpcyByb29tIGlzIGZ1bGwgYXQgdGhlIG1vbWVudC4gUGxlYXNlIHRyeSBhZ2FpbiBsYXRlci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE5IiBuYW1lPSJyb29tdHlwZXMiPgorICAgIDx2YWx1ZT5Sb29tIFR5cGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIwIiBuYW1lPSJhcHBvaW50ZWRfcm9vbSI+CisgICAgPHZhbHVlPkFwcG9pbnRtZW50IFJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIxIiBuYW1lPSJzZXJ2ZXJ0aW1lIj4KKyAgICA8dmFsdWU+U2VydmVyIFRpbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIyIiBuYW1lPSJpbnZfcmVtaW5kZXJfdGVtcGxhdGVfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSAtIFJlbWluZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyMyIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfZnJvbSI+CisgICAgPHZhbHVlPk1lc3NhZ2UgZnJvbSBVc2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjQiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X21lc3NhZ2UiPgorICAgIDx2YWx1ZT5NZXNzYWdlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjUiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2NsaWNrX3RleHQiPgorICAgIDx2YWx1ZT5DbGljayB0aGlzIGxpbmsgdG8gcGFydGljaXBhdGUgaW4gdGhlIE1lZXRpbmdzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjYiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2NsaWNrX3RleHRfbGluayI+CisgICAgPHZhbHVlPkNsaWNrIGhlcmUgdG8gZW50ZXIgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjciIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2NsaWNrX3RleHRfaGVscCI+CisgICAgPHZhbHVlPmlmIHlvdSBoYXZlIHByb2JsZW1zIHdpdGggdGhlIGxpbmssIHBsZWFzZSBjb3B5IGFuZCBwYXN0ZSB0aGlzIHRvIHlvdXIgYnJvd3Nlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI4IiBuYW1lPSJidG5fc2VhcmNoX2ludGVybiI+CisgICAgPHZhbHVlPnNlYXJjaCBpbnRlcm48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI5IiBuYW1lPSJidG5fc2VhcmNoX2V4dGVybiI+CisgICAgPHZhbHVlPmV4dGVybiB1c2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzAiIG5hbWU9ImxibF9wcmVuYW1lIj4KKyAgICA8dmFsdWU+cHJlIG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMxIiBuYW1lPSJsYmxfbmFtZSI+CisgICAgPHZhbHVlPm5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMyIiBuYW1lPSJsYmxfZW1haWwiPgorICAgIDx2YWx1ZT5FLW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMzIiBuYW1lPSJsb2dvdXRDb25maXJtX3RpdGxlIj4KKyAgICA8dmFsdWU+Q29uZmlybSBsb2dvdXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM0IiBuYW1lPSJsb2dvdXRDb25maXJtX3N1cmVfdG9fbG9nb3V0X3F1ZXN0aW9uIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGxvZ291dCBub3c/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNSIgbmFtZT0ibWFpbiBtZW51Ij4KKyAgICA8dmFsdWU+QWN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzYiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EZW1vIFJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RGVtbyBUaW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzOCIgbmFtZT0ibWVldGluZyBUaW1lciI+CisgICAgPHZhbHVlPk1lZXRpbmcgVGltZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM5IiBuYW1lPSJtZWV0aW5nIFRpbWVyIj4KKyAgICA8dmFsdWU+VGhpcyBSb29tIGlzIGEgRGVtbyBSb29tLiBUbyBkaXNhYmxlIHRoaXMgd2FybmluZyB5b3UgZWl0aGVyIHNob3VsZCBnZXQgYSBwcml2YXRlIG1lZXRpbmcgcm9vbSBmb3IgeW91ciBwZXJzb25hbCB1c2FnZSBvciBzZXQgdXAgYW4gb3duIFNlcnZlci4gWW91IHdpbGwgYmUgYXV0b21hdGljYWxseSBsb2dnZWQgb2ZmIGluOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDAiIG5hbWU9Im1lZXRpbmcgcm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPk1vZGVyYXRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDEiIG5hbWU9Im1vZGVyYXRlZCByb29tIHdhaXRpbmcgbWVzc2FnZSI+CisgICAgPHZhbHVlPlBsZWFzZSB3YWl0IHVudGlsbCB0aGUgTW9kZXJhdG9yIGhhcyBlbnRlcmVkIHRoZSBSb29tLiBUaGUgTW9kZXJhdG9yIGNhbiBiZSBlaXRoZXIgYSBUZWFjaGVyLCBBZG1pbiBvciB0aGUgY3JlYXRvciBvZiB0aGlzIFJvb20uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MiIgbmFtZT0iZXJyb3IgcG9wdXAiPgorICAgIDx2YWx1ZT5PazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDMiIG5hbWU9IndpbmRvdyBzY3JlZW5zaGFyaW5nIj4KKyAgICA8dmFsdWU+SW5jb21pbmcgU2NyZWVuIFNoYXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ0IiBuYW1lPSJ3aW5kb3cgc2NyZWVuIHNoYXJpbmciPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBhIG5ldyBTY3JlZW4gU2hhcmluZyBpbmNvbWluZyBmcm9tIHRoZSBVc2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDUiIG5hbWU9IndpbmRvdyBzY3JlZW4gc2hhcmluZyI+CisgICAgPHZhbHVlPlN0YXJ0IFNoYXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ2IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkFkZCBuZXcgTWVldGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDciIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+TWVldGluZyBSb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0OCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5FdmVudCBSb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0OSIgbmFtZT0ibWFpbiBtZW51IG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Nb2RlcmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1MCIgbmFtZT0ibWVudSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+TW9kZXJhdGUgVXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUxIiBuYW1lPSJtZW51IG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Nb2RlcmF0ZSBSb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTIiIG5hbWU9Im1vZGVyYXRvciBvcmciPgorICAgIDx2YWx1ZT5NPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1MyIgbmFtZT0iY29uZmlybSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+RG8geW91IHdhbnQgdG8gY2hhbmdlIHRoaXMgVXNlciB0byBiZWNvbWUgYSBNb2RlcmF0b3Igb2YgdGhhdCBPcmdhbml6YXRpb24/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1NCIgbmFtZT0iZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPlBsZWFzZSBjaG9vc2UgYW4gT3JnYW5pemF0aW9uIGJlZm9yZSB5b3UgdHJ5IHRvIGFkZCBhIFVzZXIgdG8gaXQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1NSIgbmFtZT0iY2hvb3NlIHVzZXIgd2luZG93Ij4KKyAgICA8dmFsdWU+T3JnYW5pemF0aW9uIC0gTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1NiIgbmFtZT0ibW9kZXJhdG9yIG9yZyB1c2VycyI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBVc2VyIGZyb20gdGhlIE9yZ2FuaXphdGlvbj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU3IiBuYW1lPSJvcmcgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPlRoaXMgVXNlciBpcyBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU4IiBuYW1lPSJvcmcgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPlRoaXMgVXNlciBpcyBOby1Nb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU5IiBuYW1lPSJlcnJvciBtZXNzYWdlIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5EbyB5b3Ugd2FudCB0aGlzIFVzZXIgdG8gYmUgbm90IGEgTW9kZXJhdG9yIG9mIHRoaXMgT3JnYW5pemF0aW9uPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjAiIG5hbWU9Im1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5BZGQgb3IgZGVsZXRlIFVzZXJzIG9yIFJvb21zIHdpdGhpbiB5b3VyIE9yZ2FuaXphdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjEiIG5hbWU9ImRlbGV0ZSBjb25maXJtIHF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHJlY29yZD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYyIiBuYW1lPSJkZWxldGUgY29uZmlybSBxdWVzdGlvbiB1c2VyIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgdXNlciBmcm9tIHlvdXIgb3JnYW5pemF0aW9uPyBZb3Ugd2lsbCBvbmx5IGRlbGV0ZSB0aGUgY29ubmVjdGlvbiBiZXR3ZWVuIHRoZSB1c2VyIGFuZCB5b3VyIG9yZ2FuaXphdGlvbiwgdG8gcmVhbGx5IGRlbGV0ZSB0aGUgdXNlciBpdHNlbGYgeW91IGhhdmUgdG8gbG9naW4gaW50byB0aGUgQWRtaW5pc3RyYXRpb24tUGFuZWwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MyIgbmFtZT0iZXJyb3IgbWVzc2FnZSBzZWxmIGRlbGV0aW5nIj4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBkZWxldGUgeW91ciBvd24gVXNlciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY0IiBuYW1lPSJlcnJvciBtZXNzYWdlIGF1dGgiPgorICAgIDx2YWx1ZT5UaGlzIE1ldGhvZCBuZWVkcyBhIEFkbWluc3RyYXRpb24gQWNjb3VudCB0byBiZSBpbnZva2VkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjUiIG5hbWU9ImVycm9yIG1lc3NhZ2UgU09BUCI+CisgICAgPHZhbHVlPlRoZXJlIHdhcyBubyBTZXNzaW9uIGFzc29jaWF0ZWQgd2l0aCB0aGlzIElELjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjYiIG5hbWU9ImVycm9yIG1lc3NhZ2UgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPlRoaXMgaXMgYW4gQWRtaW5pc3RyYXRvciBvciBNb2RlcmF0b3IgYWNjb3VudC4gWW91IGNhbiBvbmx5IGVkaXQgdGhpcyBhY2NvdW50IHRocm91Z2ggdGhlIEFkbWluaXN0cmF0aW9uIFBhbmVsLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjciIG5hbWU9ImVtYWlsIHZlcmlmaWNhdGlvbiI+CisgICAgPHZhbHVlPlRvIGNvbXBsZXRlIHlvdXIgcmVnaXN0cmF0aW9uIHBsZWFzZSBjbGljayBvbiB0aGUgZm9sbG93aW5nIGxpbmsuIE9yIGNvcHkgdGhlIFVSTCB0byB5b3VyIGJyb3dzZXIgYmFyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjgiIG5hbWU9ImVtYWlsIHZlcmlmaWNhdGlvbiI+CisgICAgPHZhbHVlPkNsaWNrIHRvIHZlcmlmeSB5b3VyIEUtTWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjkiIG5hbWU9ImVycm9yTWVzc2FnZV9Vc2VyQWN0aXZhdGlvblNlcnZsZXQgW0FjdGl2YXRlVXNlcl0iPgorICAgIDx2YWx1ZT5ObyB1c2VyIHdhcyBmb3VuZCBmb3IgdGhpcyBIYXNoLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzAiIG5hbWU9ImVycm9yTWVzc2FnZV9Vc2VyQWN0aXZhdGlvblNlcnZsZXQgW0FjdGl2YXRlVXNlcl0iPgorICAgIDx2YWx1ZT5UaGlzIHVzZXIgaXMgYWxyZWFkeSBhY3RpdmF0ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3MSIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPllvdSBkaWQgc3VjY2Vzc2Z1bGx5IGFjdGl2YXRlIHlvdXIgYWNjb3VudCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjcyIiBuYW1lPSJlcnJvck1lc3NhZ2VfVXNlckFjdGl2YXRpb25TZXJ2bGV0IFtBY3RpdmF0ZVVzZXJdIj4KKyAgICA8dmFsdWU+TG9naW4gTm93PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3MyIgbmFtZT0ibG9naW5FcnJvck1lc3NhZ2UgPSB1c2VyIHdhcyBub3QgYWN0aXZhdGVkIj4KKyAgICA8dmFsdWU+WW91ciBhY2NvdW50IGlzIG5vdCBhY3RpdmF0ZWQuIEZpcnN0IHVzZSB0aGUgbGluayBpbiB0aGUgRW1haWwgeW91J3ZlIHJlY2VpdmVkIGR1cmluZyByZWdpc3RyYXRpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3NCIgbmFtZT0icmVnaXN0ZXIgdmVyaWZpY2F0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Zb3Ugc3VjY2Vzc2Z1bGx5IHNpZ25lZCB1cC4gV2UndmUgc2VuZCBhbiBFTWFpbCB3aXRoIGEgdmVyaWZpY2F0aW9uIENvZGUgdG8geW91ciBNYWlsLiBQbGVhc2UgY2hlY2sgeW91ciBJbmJveC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc1IiBuYW1lPSJwYXJ0aWNpcGFudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5SZW1vdmUgTW9kZXJhdGlvbiBSb2xlIGZyb20gdGhpcyBVc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3NiIgbmFtZT0icGFydGljaXBhbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+R3JhbnQgTW9kZXJhdGlvbiBSaWdodHMgdG8gdGhpcyBVc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3NyIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+VXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzgiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFjY2VzcyB0byB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3OSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+TW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+TW9kZXJhdGlvbjogUGxlYXNlIGNob29zZSBhbnkgVXNlciBvbiB0aGUgTGlzdCB0byBncmFudCBoaW0gYWNjZXNzIHRvIHRoZSBXaGl0ZWJvYXJkLCBNb2RlcmF0aW9uIG9yIFZpZGVvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODEiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlRoaXMgVXNlciBpcyBhbHJlYWR5IE1vZGVyYXRvciwgc28gaGUgaGFzIGF1dG9tYXRpY2FsbHkgdGhlIHJpZ2h0IHRvIGRyYXcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MiIgbmFtZT0iZXZlbnQgdXNlciBsaXN0IGVycm9yIj4KKyAgICA8dmFsdWU+VGhpcyBpcyB5b3UhIFlvdSBjYW5ub3QgcmVtb3ZlIHRoZSBNb2RlcmF0aW9uIHJpZ2h0cyBmcm9tIHlvdXJzZWxmLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODMiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFsbG93IHRoaXMgVXNlciB0byBQdWJsaXNoIGhpcyBBdWRpbyAvIFZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4NCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+UmVtb3ZlIEF1ZGlvL1ZpZGVvIG9mIHRoaXMgVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODUiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkkgd291bGQgbGlrZSB0byBnZXQgdGhlIG1vZGVyYXRpb24gb2YgdGhpcyByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4NiIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+SSB3b3VsZCBsaWtlIHRvIGRyYXcgb24gd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODciIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkkgd291bGQgbGlrZSB0byBzaGFyZSBteSBBdWRpby9WaWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODgiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPllvdSBhcmUgbW9kZXJhdG9yIG9mIHRoaXMgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODkiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPllvdSBhcmUgYWxsb3dlZCB0byBkcmF3IG9uIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkwIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGFsbG93ZWQgdG8gc2hhcmUgeW91ciBBdWRpby9WaWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTEiIG5hbWU9ImVycm9ydHlwZSI+CisgICAgPHZhbHVlPk1lc3NhZ2UgdG8gTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5MiIgbmFtZT0iYXBwbHkgZm9yIG1vZCBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIFVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkzIiBuYW1lPSJhcHBseSBmb3IgbW9kIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGdldCB0aGUgTW9kZXJhdGlvbi4gVXNlIHRoZSBzdGF0dXMgSWNvbnMgbmV4dCB0byB0aGUgdXNlciBpbiB0aGUgTGlzdCBvZiBVc2VycyB0byBhZGQgb3IgcmVtb3ZlIHRoZSBNb2RlcmF0aW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTQiIG5hbWU9ImFwcGx5IGZvciB3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0byBkcmF3IG9uIHdoaXRlYm9hcmQuIFVzZSB0aGUgc3RhdHVzIEljb25zIG5leHQgdG8gdGhlIHVzZXIgaW4gdGhlIExpc3Qgb2YgVXNlcnMgdG8gYWRkIG9yIHJlbW92ZSB0aGUgcmlnaHQgdG8gZHJhdyBhbnl0aGluZyBvbiB0aGUgd2hpdGVib2FyZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk1IiBuYW1lPSI2OTUiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIHNoYXJlIGhpcyBBdWRpby9WaWRlby4gVXNlIHRoZSBzdGF0dXMgSWNvbnMgbmV4dCB0byB0aGUgdXNlciBpbiB0aGUgTGlzdCBvZiBVc2VycyB0byBhZGQgb3IgcmVtb3ZlIHRoZSByaWdodCB0byBzaGFyZSBBdWRpby9WaWRlbyBmb3IgYW55IFVzZXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5NiIgbmFtZT0ibW9kZXJhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+WW91IGhhdmUgdG8gd2FpdCB1bnRpbGwgYSBNb2RlcmF0b3IgZW50ZXJzIHRoZSByb29tLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTciIG5hbWU9ImNhbGVuZGFyIGJ1dHRvbiI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTgiIG5hbWU9ImNhbGVuZGFyIGJ1dHRvbiI+CisgICAgPHZhbHVlPlNhdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk5IiBuYW1lPSJjYWxlbmRhciBjb21wb25lbnQiPgorICAgIDx2YWx1ZT5EYXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAwIiBuYW1lPSJjYWxlbmRhciBjb21wb25lbnQiPgorICAgIDx2YWx1ZT5Nb250aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDEiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPlllYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAyIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+VXBsb2FkIEZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAzIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+QWRkIEZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDQiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5SZWZyZXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwNSIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlRyYXNoIChEcmFnIGFuZCBEcm9wIGl0ZW0gaGVyZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA2IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+TXkgRmlsZXMgKEhvbWUgRHJpdmUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwNyIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlJvb20gRmlsZXMgKFB1YmxpYyBEcml2ZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA4IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+QWRkIEZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA5IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+QWRkIEZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTAiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5EZWxldGUgRm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMSIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkVkaXQgTmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTIiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5OZXcgRm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMyIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBJdGVtPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTQiIG5hbWU9InVzZXIgYWRtaW4iPgorICAgIDx2YWx1ZT5TZWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE1IiBuYW1lPSJ1c2VyIGFkbWluIj4KKyAgICA8dmFsdWU+U2VhcmNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxNiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPk9wZW4gRG9jdW1lbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE3IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+U2hvdyBhbGwgRmlsZXMgKFRyZWUgVmlldyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE4IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+Q2xvc2UgRG9jdW1lbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE5IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+RGVsZXRlIEZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIwIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+WW91IGFyZSBub3QgYWxsb3dlZCB0byBkcmF3IGFueXRoaW5nIG9uIHRoZSBXaGl0ZWJvYXJkLiBZb3UgaGF2ZSB0byBiZWNvbWUgTW9kZXJhdG9yIG9yIGF0IGxlYXN0IGdldCB0aGUgUmlnaHQgdG8gZWRpdCBXaGl0ZWJvYXJkLiBZb3UgbWF5IGFzayBhIE1vZGVyYXRvciB0byBnaXZlIHlvdSB0aGF0IHJpZ2h0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjEiIG5hbWU9InByb3BlcnR5IHBhbmVsIj4KKyAgICA8dmFsdWU+RG9jdW1lbnQgUHJvcGVydGllczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjIiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPlN0YXJ0IENsaWVudCAoZXh0ZXJuYWwpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyMyIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+U3RhcnQgQ2xpZW50IChIVFRQKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjQiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPkEgdXNlciB3YW50IHRvIHNoYXJlIGhpcyBzY3JlZW4uIERvIHlvdSB3YW50IHRvIHNlZSBpdD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI1IiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGN1cnJlbnRseSBzaGFyaW5nIHlvdXIgRGVza3RvcC4gRm9yIHN0b3BwaW5nIHRoZSBTaGFyaW5nIFNlc3Npb24gcGxlYXNlIGhpdCB0aGUgU3RvcCBidXR0b24gaW4gdGhlIFNoYXJpbmcgQ2xpZW50LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjYiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPlNoYXJpbmcgU2Vzc2lvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjciIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPllvdSBhcmUgYWxyZWFkeSBzaGFyaW5nIHlvdXIgZGVza3RvcCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI4IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkRlc2t0b3AgVmlld2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyOSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5FeGl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5EZXNrdG9wIFNoYXJlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzEiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+Q2xpY2sgU3RhcnQgdG8gcHVibGlzaCB5b3VyIHNjcmVlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzIiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U3RhcnQgU2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzMiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U3RvcCBTaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TZWxlY3QgeW91ciBzY3JlZW4gYXJlYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM1IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkNoYW5nZSB3aWR0aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzYiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+VGhlIFNoYXJlciBoYXMgZmluaXNoZWQgdGhpcyBzZXNzaW9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzciIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+Q2hhbmdlIGhlaWdodDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+WC1PZmZzZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM5IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlktT2Zmc2V0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0MCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5XaWR0aDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQxIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkhlaWdodDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQyIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkNvbm5lY3Rpb24gd2FzIGNsb3NlZCBieSBTZXJ2ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQzIiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDQiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+U3RhcnQgRXh0ZXJuYWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ1IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPklmIHlvdSBjbG9zZSB0aGlzIHNlc3Npb24gY29tcGxldGVseSB5b3UgYXJlIG5vdCBhYmxlIHRvIHJlc3RhcnQgdGhlIHZpZXdlciBmb3IgdGhpcyBzZXNzaW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDYiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+Q29uZmlybSBDbG9zaW5nIFZpZXdlciBTZXNzaW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NyIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5TaGFyZSBTY3JlZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ4IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPlJlY29yZCBTZXNzaW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0OSIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPkNvLUJyb3dzaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MCIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPk9vb3BzLCAuLi4gRmlyZWZveCBvbiBXaW5kb3dzIGRvZXMgbm90IHNob3cgY2xlYXIgQ28tQnJvd3NpbmcuIFBsZWFzZSB1c2UgYW5vdGhlciBCcm93c2VyIGZvciB1c2luZyB0aGUgQ28tQnJvd3NpbmcgZmVhdHVyZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUxIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+UHJldmlvdXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUyIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+TmV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTMiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5SZWxvYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU0IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+SG9tZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTUiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5Mb2FkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1NiIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPkFkZCB0aGlzIHdlYnNpdGUgYXMgRGVmYXVsdCB3ZWJzaXRlIHRvIHlvdXIgUHJvZmlsZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU3IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+VGVzdCBTZXR1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTgiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5DaGVjayB5b3UgTWljcm9waG9uZSBhbmQgQ2FtZXJhIHNldHVwIGJlZm9yZSB5b3UgZW50ZXIgYSByb29tIGJ5IHJlY29yZGluZyBzb21lIHNlY29uZHMuIFlvdSBjYW4gdGhlbiByZXBsYXkgeW91ciByZWNvcmRpbmcgdG8gY2hlY2sgeW91ciB2b2ljZSBhbmQgcGljdHVyZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU5IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+RG9uJ3Qgc2hvdyB0aGlzIHRlc3QgYW55bW9yZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjAiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYxIiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+U3RhcnQgQ29uZmVyZW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjIiIG5hbWU9ImVkaXQgdmlkZW8gc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5EbyBub3QgYXNrIGFnYWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MyIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlJFQzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjQiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5QTEFZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NSIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPllvdSBtYXkgcHJvY2VlZCB3aXRob3V0IHRlc3RpbmcgaWYgeW91IGRvIG5vdCBwbGFuIHRvIHB1Ymxpc2ggeW91ciB2b2ljZSBvciBwaWN0dXJlLiBQYXJ0aWNpcGFudHMgd2l0aG91dCBBdWRpbyBvciBWaWRlbyBjYW4gc3RpbGwgdXNlIHRoZSBXaGl0ZWJvYXJkLCBzaGFyZSB0aGVpciBEZXNrdG9wIG9yIHdyaXRlIENoYXQgbWVzc2FnZXMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NiIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlNUT1A8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY3IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+TGV2ZWwtTWV0ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY4IiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+UHJlc3MgU3RhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY5IiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+U3RhcnQgQ29uZmVyZW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzAiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5TdGFydCBFdmVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzEiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5DaG9vc2UgUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzIiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5DaGVjayBTZXR1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzMiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5TdGFydCBDb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NCIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPkhvdyB0byBjb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NSIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlN0YXJ0IFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzYiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5EbyBub3Qgc2hvdyBBdWRpbyAvIFZpZGVvIFRlc3QgKFJlY29yZGluZykgYmVmb3JlIGVudGVyaW5nIGEgQ29uZmVyZW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzciIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT5QdWJsaWMgUm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc4IiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+UHVibGljIFJvb21zIGFyZSBhY2Nlc3NpYmxlIGZvciBhbGwgVXNlcnMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3OSIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPlByaXZhdGUgUm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgwIiBuYW1lPSJQcml2YXRlIFJvb21zIj4KKyAgICA8dmFsdWU+UHJpdmF0ZSBSb29tcyBhcmUgb25seSBhY2Nlc3NpYmxlIGZvciB1c2VycyBvZiB0aGUgc2FtZSBvcmdhbml6YXRpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MSIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPk15IFJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MiIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPlJvb21zIGluIHRoaXMgc2VjdGlvbiBhcmUgY3JlYXRlZCBmb3IgcGVyc29uYWwgdXNhZ2UuIFRoZXJlIGFyZSBzb21lIHN0YW5kYXJkIHJvb21zIHBsdXMgdGhlIG9uZXMgdGhhdCBhcmUgY3JlYXRlZCB0aHJvdWdoIHRoZSBjYWxlbmRhciBhbmQgaGF2ZSBhIHN0YXJ0IGFuZCBhbiBlbmQgZGF0ZS4gVGhlIHJvb21zIGNyZWF0ZWQgdmlhIHRoZSBjYWxlbmRhciBhcmUgb25seSBsaXN0ZWQgaW4gdGhpcyBzZWN0aW9uIGFzIGxvbmcgYXMgdGhleSBhcmUgdmFsaWQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MyIgbmFtZT0icmVzdHJpY3RlZCByb29tIj4KKyAgICA8dmFsdWU+WW91IGhhdmUgdG8gYmUgbW9kZXJhdG9yIHRvIGRvIHRoaXMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NCIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT5BcHBseSBmb3IgbW9kZXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODUiIG5hbWU9Im1lbnUgb3B0aW9uIj4KKyAgICA8dmFsdWU+QXBwbHkgZm9yIHdoaXRlYm9hcmQgYWNjZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NiIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT5BcHBseSBmb3IgY2FtZXJhL21pY3JvcGhvbmUgYWNjZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NyIgbmFtZT0iZXJyb3IgbWVzc2FnZSBzb2FwIHNlY3VyZSBsb2dpbiI+CisgICAgPHZhbHVlPlRoaXMgU2Vzc2lvbiBIYXNoIHdhcyBhbHJlYWR5IHVzZWQuIFlvdSBjYW5ub3QgdXNlIGl0IHR3aWNlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODgiIG5hbWU9ImRhc2hib2FyZCBidXR0b24iPgorICAgIDx2YWx1ZT5TVEFSVDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODkiIG5hbWU9ImV4aXQgY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPkVYSVQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkwIiBuYW1lPSJjb25mZXJlbmNlIHZpZXciPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZXhpdD8gWW91IG1pZ2h0IHNob3VsZCBjbGVhciB1cGxvYWRlZCBkb2N1bWVudHMsIHdoaXRlYm9hcmQgYW5kIHRoZSBjaGF0IGhpc3RvcnkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5MSIgbmFtZT0iY29uZmVyZW5jZSB2aWV3Ij4KKyAgICA8dmFsdWU+RXhpdCBjb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5MiIgbmFtZT0ibWFpbiBtZW51Ij4KKyAgICA8dmFsdWU+Um9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkzIiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT5DaG9vc2UgYSByb29tIGZvciBhIG1lZXRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk0IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGFuIHVuc2F2ZWQgRXZlbnQgaW4gdGhlIENhbGVuZGFyLiBQbGVhc2UgZWl0aGVyIHNhdmUgaXQgb3IgcmVtb3ZlIGl0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTUiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+UGxlYXNlIGFkZCBhdCBsZWFzdCBvbmUgYXR0ZW5kZWUgZm9yIHlvdXIgbWVldGluZyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk2IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBFdmVudD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk3IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPldhcm5pbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk4IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkFkZCBFdmVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTkiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RGF5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5XZWVrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Nb250aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDIiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RGVzY3JpcHRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAzIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkF0dGVuZGVlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSwgeW91ciBXZWIgQ29uZmVyZW5jaW5nIFBsYXRmb3JtLiBFaXRoZXIgZm9sbG93IHRoZSBJbnN0cnVjdGlvbnMsIHByZXNzIHRoZSBzdGFydCBidXR0b24gdG8gc3RhcnQgdG8gY29uZmVyZW5jZSBpbW1lZGlhdGVsbHkgb3IgeW91IGdvdG8gdGhlIENhbGVuZGFyIGFuZCBzZXQgdXAgYSBDb25mZXJlbmNlIGZvciB0aGUgZnV0dXJlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDUiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPlBsYW4gYSBNZWV0aW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNiIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlRvIHNldCB1cCBhIGNvbmZlcmVuY2UgeW91IGNhbiBhZGQgYSBuZXcgRXZlbnQgaW4gdGhlIENhbGVuZGFyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDciIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5OZWVkIGhlbHA/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwOCIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlJlc3RyaWN0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA5IiBuYW1lPSJsemNhbGVuZGVyIj4KKyAgICA8dmFsdWU+U2VhcmNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMCIgbmFtZT0ibHpjYWxlbmRlciI+CisgICAgPHZhbHVlPkFkZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTEiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBVc2VyIHNlbGVjdGVkLiBQbGVhc2Ugc2VsZWN0IGFuIGl0ZW0gZnJvbSB0aGUgbGlzdCBmaXJzdCBhbmQgdGhlbiBoaXQgYWRkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTIiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5BZGQgQXR0ZW5kZWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEzIiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+U2F2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTQiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5EZWxldGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE1IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RXZlbnQgRGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTYiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EZWZhdWx0IE1vZGVyYXRvcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+U3VwZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE4IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE5IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjAiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5FLU1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIxIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+QWRkIG5ldyBkZWZhdWx0IE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjIiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5JcyBTdXBlciBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIzIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+SWYgdGhlIFJvb20gaXMgbW9kZXJhdGVkLCBVc2VyIHdpdGggTGV2ZWwgTW9kZXJhdG9yIG9yIEFkbWluaXN0cmF0b3IgYXJlIGF1dG9tYXRpY2FsbHkgTW9kZXJhdG9yIGlmIHRoZXkgZW50ZXIgdGhlIFJvb20uIElmIHlvdSBkb24ndCB3YW50IHRvIHNwZWNpZnkgdGhhdCBhbmQgb25seSB3YW50IGEgY2VydGFpbiBVc2VyIHRvIGJlY29tZSBNb2RlcmF0b3IgdXNlIHRoZSBEZWZhdWx0IE1vZGVyYXRvciBvcHRpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkEgU3VwZXIgTW9kZXJhdG9yIGlzIGFsd2F5cyBhIE1vZGVyYXRvciB3aGVuIGhlIGVudGVycyBhIFJvb20sIGFuZCBub2JvZHkgY2FuIHJlbW92ZSB0aGUgTW9kZXJhdGlvbiBGbGFnIGZyb20gaGltPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkFwcGx5IFN1cGVyLU1vZGVyYXRpb24gdG8gVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjYiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5SZW1vdmUgU3VwZXIgTW9kZXJhdGlvbiBmcm9tIFVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjgiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5JZiB5b3UgYWRkIGFuIE9yZ2FuaXphdGlvbiB0byB0aGUgcm9vbSBvbmx5IHVzZXJzIG9mIHRoYXQgT3JnYW5pemF0aW9uIGhhdmUgYWNjZXNzIHRvIGl0IChUaGlzIGlzIG9ubHkgdmFsaWQgaWYgdGhlIGlzUHVibGljIGZsYWcgaXMgc2V0IHRvIGZhbHNlISk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI5IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+TW9kZXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzAiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5MaW1pdGF0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzEiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5Pcmdhbml6YXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODMyIiBuYW1lPSJjb25maXJtIGFjdGlvbiI+CisgICAgPHZhbHVlPkFyZSB5b3Ugc3VyZT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODMzIiBuYW1lPSJjb25maXJtIGRlbGV0ZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBJdGVtPyBZb3UgaGF2ZSB0byBwcmVzcyB0aGUgc2F2ZSBidXR0b24gdG8gc3RvcmUgdGhlIGNoYW5nZXMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNCIgbmFtZT0idXNlciBjaG9vc2UgZXJyb3IiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBVc2VyIHNlbGVjdGVkLiBQbGVhc2Ugc2VsZWN0IGZpcnN0IGJlZm9yZSB5b3UgYWRkIGl0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzUiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5BZGQgbmV3IERlZmF1bHQgTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkRvIHlvdSB3YW50IHRvIGFkZCB0aGUgU3VwZXIgTW9kZXJhdGlvbiBGbGFnIGZvciB0aGlzIFVzZXI/IEEgU3VwZXIgTW9kZXJhdG9yIGlzIG5vdCBvbmx5IE1vZGVyYXRvciBvZiBhIFJvb20sIGJ1dCBhbHNvIG5vIG90aGVyIE1vZGVyYXRvciBjYW4gcmVtb3ZlIHRoZSBNb2RlcmF0aW9uIEZsYWcgZm9yIHRoaXMgVXNlci4gWW91IG5lZWQgdG8gc2F2ZSB0aGUgUm9vbSBPYmplY3QgdG8gc2F2ZSB0aGVzZSBzZXR0aW5ncyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RG8geW91IHdhbnQgdG8gcmVtb3ZlIHRoZSBTdXBlciBNb2RlcmF0aW9uIEZsYWcgZm9yIHRoaXMgVXNlcj8gWW91IG5lZWQgdG8gc2F2ZSB0aGUgUm9vbSBPYmplY3QgdG8gc2F2ZSB0aGVzZSBzZXR0aW5ncyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM4IiBuYW1lPSJzdXBlciBtb2RlcmF0b3IiPgorICAgIDx2YWx1ZT5UaGlzIFVzZXIgaXMgYSBTdXBlci1Nb2RlcmF0b3IuIFlvdSBjYW5ub3QgcmVtb3ZlIHRoZSBNb2RlcmF0aW9uIGZsYWcgZnJvbSBhIFN1cGVyLU1vZGVyYXRvciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM5IiBuYW1lPSJjb25maXJtIGRlbGV0ZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGaWxlL0ZvbGRlcj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQwIiBuYW1lPSJjb25maXJtIGRlbGV0ZSI+CisgICAgPHZhbHVlPkRlbGV0ZSBGaWxlL0ZvbGRlcj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQxIiBuYW1lPSJzYWx1dGF0aW9uIj4KKyAgICA8dmFsdWU+TXJzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDIiIG5hbWU9InNhbHV0YXRpb24iPgorICAgIDx2YWx1ZT5Eci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQzIiBuYW1lPSJwcm9wZXJ0eSBwYW5lbCB3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+UHJvcGVydGllczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDQiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5TaG93IG1vdXNlIHBvc2l0aW9uIHRvIHZpZXdlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ1IiBuYW1lPSJwdWJsaXNoIG9wdGlvbiI+CisgICAgPHZhbHVlPlNoYXJlIEF1ZGlvIHdpdGggU0lQIEFwcGxldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDYiIG5hbWU9InB1Ymxpc2ggb3B0aW9uIj4KKyAgICA8dmFsdWU+U2hhcmUgQXVkaW8gd2l0aCBTSVAgYW5kIFZpZGVvIHdpdGggRmxhc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ3IiBuYW1lPSJkb2N1bWVudCBwYW5lbCI+CisgICAgPHZhbHVlPkZ1bGwtRml0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0OCIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+VmlldyBTY3JlZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ5IiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5UaGUgdXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTAiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPndhbnRzIHRvIHNoYXJlIGl0cyBzY3JlZW4uIERvIHlvdSB3YW50IHRvIHNlZSBpdD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUxIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5DbG9zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTIiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5ab29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MyIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPlRoZSBTZXNzaW9uIHdhcyBjbG9zZWQgYnkgdGhlIHNoYXJpbmcgVXNlciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU0IiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+UGF1c2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU1IiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+TmV3IFNjcmVlbiBTaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1NiIgbmFtZT0icHJlc2VudGVyIG1pbmkgaWNvbiI+CisgICAgPHZhbHVlPk1pbmltaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1NyIgbmFtZT0icHJlc2VudGVyIG1pbmkgaWNvbiI+CisgICAgPHZhbHVlPk1heGltaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1OCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+VmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU5IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5SZWNvcmRpbmcgVGltZWxpbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYwIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5NeSBSZWNvcmRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UHVibGljIFJlY29yZGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYyIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5JbmZvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjQiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkxlbmd0aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjUiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkRhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5CeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjciIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlBMQVk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY4IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5NYWluIC0gVmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY5IiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5SZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcwIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Zb3UgbWF5IHJlY29yZCBhbmQgc2hhcmUgeW91ciBzY3JlZW4gYXQgdGhlIHNhbWUgdGltZS4gVG8gZW5hYmxlIG90aGVycyB0byBzZWUgeW91ciBzY3JlZW4ganVzdCBoaXQgdGhlIHN0YXJ0IGJ1dHRvbiBvbiB0aGUgdG9wLiBUbyBvbmx5IHJlY29yZCB0aGUgU2Vzc2lvbiBpdCBpcyBzdWZmaWNpZW50IHRvIGNsaWNrIHN0YXJ0IHJlY29yZGluZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcxIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5TdGFydCBSZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcyIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5TdG9wIFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzMiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkRvd25sb2FkIHRoZSBGTFYtRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzQiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc1IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5QbGF5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3NiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+U3RvcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzciIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlVzZXIgaGFzIG1pY3JvcGhvbmUgb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc4IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlN0b3AgU2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzkiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+QWxsb3cgVXNlciBRdWVzdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgwIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPlR1cm4gdGhpcyBvZmYgdG8gcHJldmVudCB0aGF0IGFueSB1c2VyIGlzIGRpc3R1cmJpbmcgeW91IGluIHRoaXMgcm9vbS4gRWZmZWN0IGlzIHRoYXQgdGhlIEJ1dHRvbiB0byBhc2sgZm9yIE1vZGVyYXRpb24gKCJJIGhhdmUgYSBxdWVzdGlvbiIpIGlzIG5vdCB2aXNpYmxlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODEiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+UmlnaHRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RG93bmxvYWQgYXMgQVZJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RkxWPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QVZJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UmF3IFNjcmVlbnZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QXVkaW8gb25seTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODciIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlRoZSBoYXZlIGJlZW4gZXJyb3JzIHdoaWxlIHByb2Nlc3NpbmcgdGhlIFJlY29yZGluZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg4IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5UaGUgUmVjb3JkaW5nIGlzIG5vdCB5ZXQgcmVhZHkgZm9yIHdhdGNoaW5nLiBQbGVhc2UgcmV0cnkgaW4gYSBjb3VwbGUgb2YgbWludXRlcyBhZ2Fpbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg5IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Mb2c6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UmVjb3JkZXIgTWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTEiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk9rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MiIgbmFtZT0ic2lwIGFwcGxldCI+CisgICAgPHZhbHVlPlNJUCBBcHBsZXQgaXMgbm90IFJlYWR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MyIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNJUC1BY2NvdW50IFNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NCIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNJUCBzZXR0aW5ncyBmb3IgZWFjaCB1c2VyLiBZb3UgY2FuIHR1cm4gb24gb3Igb2ZmIFNJUCB2aWEgdGhlIEFkbWluaXN0cmF0aW9uICZndDsgQ29uZmlndXJhdGlvbiAoS2V5OiBlbmFibGVfc2lwKS4gVGhlIFNJUCBkYXRhIGZvciBlYWNoIHVzZXIgc2hvdWxkIGJlIGNyZWF0ZWQgYXV0b21hdGljYWxseS4gWW91IGNhbiByZS1jcmVhdGUgdGhlIGRhdGEgYnkgY2hlY2tpbmcgIlJlLWdlbmVyYXRlIFNJUCBEYXRhIjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTUiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TSVAtVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTYiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TaXAtUGFzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTciIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TaXAtQXV0aC1JZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTgiIG5hbWU9InNpcCBzdGF0dXMgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSBMb2dpbiB0byB0aGUgU0lQIEdhdGV3YXkgaGFzIGZhaWxlZC4gWW91IHNob3VsZCBjaGVjayB0aGUgYXV0aGVudGlmaWNhdGlvbiBkYXRhIG9mIHlvdXIgU0lQLVByb3ZpZGVyIGFuZCB0aGUgU0lQLUFjY291bnQgRGF0YSBmb3IgZWFjaCBVc2VyLiBBcyBBZG1pbmlzdHJhdG9yIHlvdSBhcmUgc3RpbGwgYWJsZSB0byBsb2dpbiBhbmQgY2hlY2sgdGhlIENvbmZpZ3VyYXRpb24uIEFzIFVzZXIgb3IgTW9kZXJhdG9yIHlvdSB3aWxsIGJlIGJsb2NrZWQgZnJvbSBhbnkgaW50ZXJhY3Rpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5OSIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIExvZ2luIHRvIHRoZSBTSVAgR2F0ZXdheSBoYXMgZmFpbGVkLiBDb250YWN0IHlvdXIgU2VydmljZSBUZWFtITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDAiIG5hbWU9InNpcCBzdGF0dXMgbWVzc2FnZSI+CisgICAgPHZhbHVlPkxvZ2dpbmcgaW4gdG8gU0lQLUdhdGV3YXkgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwMSIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TG9nZ2luZyBpbiB0byBTSVAtR2F0ZXdheSAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAyIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TaG93IExvZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDMiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkxvZyBtZXNzYWdlcyBmcm9tIHBvc3QgcmVjb3JkZXIgcHJvY2VzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDQiIG5hbWU9InNpcCBsb2dpbiI+CisgICAgPHZhbHVlPlNJUC1BcHBsZXQgTWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDUiIG5hbWU9InNpcCBsb2dpbiI+CisgICAgPHZhbHVlPlRoZSBTSVAtQXBwbGV0IGlzIG5vdCByZWFkeS4gQWNjZXB0IHRoZSBBcHBsZXQgcGxlYXNlIGFuZCBjbGljayBvayE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA2IiBuYW1lPSJtb2RlcmF0b3IgcG9wIHVwIj4KKyAgICA8dmFsdWU+R2V0IE1vZGVyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA3IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+U2F2ZSBBcHBvaW50bWVudCBDaGFuZ2VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwOCIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlRoZSBhcHBvaW50ZW1lbnQgaGFzIGJlZW4gY2hhbmdlZC4gRG8geW91IHdhbnQgdG8gc2F2ZSB0aG9zZSBjaGFuZ2VzPyAmbHQ7YnIvJmd0OyZsdDtici8mZ3Q7QWxsIGF0dGVuZGVlcyBvZiB0aGUgYXBwb2ludG1lbnQgd2lsbCByZWNlaXZlIGEgRU1haWwgd2l0aCB0aGUgdXBkYXRlZCBkYXRlIGFuZCB0aW1lIChkZXBlbmRpbmcgb24gdGhlIG5vdGlmaWNhdGlvbiB0eXBlIG9mIHRoaXMgYXBwb2ludG1lbnQpLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDkiIG5hbWU9ImZsdiByZWNvcmRlciBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VG8gYWNjZXNzIG90aGVyIHJlY29yZGluZ3MgeW91IGhhdmUgdG8gbG9naW4gdGhlICRBUFBfTkFNRSBBcHBsaWNhdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTEwIiBuYW1lPSJpbnRlcnZpZXcgdmlkZW8gcG9kIj4KKyAgICA8dmFsdWU+Q2hvb3NlIHRoZSBVc2VyIGZvciB0aGlzIFZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMSIgbmFtZT0iaW50ZXJ2aWV3IHZpZGVvIGNob29zZSB1c2VyIj4KKyAgICA8dmFsdWU+QXZhaWxhYmxlIFVzZXJzIGZvciB0aGlzIFBvZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTIiIG5hbWU9ImludGVydmlldyBpbmZvIj4KKyAgICA8dmFsdWU+WW91IGFyZSBhIE1vZGVyYXRvciBpbiB0aGlzIEludGVydmlldy4gWW91IGNhbiBkZWNpZGUgd2hvIGlzIHNwZWFraW5nIGluIHRoaXMgaW50ZXJ2aWV3IGFuZCB5b3UgY2FuIHN0YXJ0IC8gc3RvcCB0aGUgcmVjb3JkaW5nIG9mIHRoZSBTZXNzaW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTMiIG5hbWU9ImludGVydmlldyBidXR0b24gcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+U3RhcnQgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxNCIgbmFtZT0iaW50ZXJ2aWV3IGJ1dHRvbiByZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TdG9wIFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTUiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIHJlY29yZGluZyBvZiB0aGUgSW50ZXJ2aWV3IGlzIGFscmVhZHkgc3RhcnRlZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE2IiBuYW1lPSJpbnRlcnZpZXcgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSByZWNvcmRpbmcgaXMgYWxyZWFkeSBzdG9wcGVkIG9yIG5vdCBiZWVuIHN0YXJ0ZWQgeWV0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTciIG5hbWU9ImludGVydmlldyByZWNvcmRpbmcgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSByZWNvcmRpbmcgZm9yIHRoaXMgaW50ZXJ2aWV3IGlzIGFscmVhZHkgc3RhcnRlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE4IiBuYW1lPSJpbnRlcnZpZXcgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTkiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIHBvc3QtcHJvY2Vzc2luZyBvZiBhbiBpbnRlcnZpZXcgdGFrZXMgNSBtaW51dGVzIHBlciAxIG1pbnV0ZSBpbnRlcnZpZXcuIFRoZSBjdXJyZW50IHByb2dyZXNzIG9mIHRoZSBpbnRlcnZpZXcgcG9zdC1wcm9jZXNzaW5nIHRyYW5zY29kaW5nIGlzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjAiIG5hbWU9InNpcCBjcmVhdGlvbiI+CisgICAgPHZhbHVlPllvdSBoYXZlIHRvIGVudGVyIHlvdXIgcGFzc3dvcmQgYWdhaW4gdG8gYXV0byBjcmVhdGUgdGhlIFNJUCBEYXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyMSIgbmFtZT0ic2lwIGNyZWF0aW9uIj4KKyAgICA8dmFsdWU+UmUtZ2VuZXJhdGUgU0lQIERhdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIyIiBuYW1lPSJmaWxlZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IG1vdmUgdGhpcyBmaWxlIG9yIGZvbGRlciBpbnRvIGl0cyBvd24gc3ViIGZvbGRlciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIzIiBuYW1lPSJmaWxlIGV4cGxvcmVyICI+CisgICAgPHZhbHVlPkhvbWUgZHJpdmUgc2l6ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjQiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5QdWJsaWMgZHJpdmUgc2l6ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjUiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5MaWNlbnNlIFNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNiIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPllvdSBjYW4gZWl0aGVyIGJpbmQgdGhlIHVzZXIgdG8gYSBleHBpcmUgRGF0ZSBvciB0byBhIG1heGltdW0gbnVtYmVyIG9mIG1pbnV0ZXMgd2hlbiB5b3UgZW5hYmxlIGxpY2Vuc2luZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI3IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+Q2hlY2sgbGljZW5zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjgiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5GbGF0cmF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjkiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5FeHBpcmUgZGF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzAiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5TZWNvbmRzIGxlZnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMxIiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+VG90YWwgdGltZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzIiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdXIgTGljZW5zZSBoYXMgZXhwaXJlZC4gWW91IG5lZWQgdG8gYnV5IG5ldyBtaW51dGVzIChQYXktcGVyLW1pbnV0ZSkgb3IgYSB2b2x1bWUgZmxhdHJhdGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Q2xpY2sgYW5kIGJ1eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzQiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlRpbWUgTGVmdCBvbiB5b3VyIGFjY291bnQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzNSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+VXNlciBMaWNlbnNlIEluZm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM2IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5JbmZvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzNyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Q2xvc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM4IiBuYW1lPSJsaWNlbnNlLWluZm8iPgorICAgIDx2YWx1ZT5Zb3VyIGxpY2Vuc2UgaGFzIGV4cGlyZWQuIFlvdSBuZWVkIGVpdGhlciB0byBidXkgYSBtaW51dGUgcGFja2FnZSAoUGF5LXBlci1taW51dGUpIG9yIGEgdm9sdW1lIGZsYXRyYXRlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzkiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkxpY2Vuc2Ugc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQwIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIGVpdGhlciBidXkgbWludXRlcyB0byBtYWtlIFdlYi1Db25mZXJlbmNpbmcgKFBheS1wZXItbWludXRlKS4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7IE9yIHlvdSBidXkgYSB2b2x1bWUgZmxhdHJhdGUgYWJvdXQgMy0xMiBtb250aHMuJmx0O2JyLyZndDsmbHQ7YnIvJmd0O1NlbmRpbmcgaW52aXRhdGlvbnMgKGRpcmVjdCBsaW5rcyBpbnRvIENvbmZlcmVuY2UgUm9vbXMpIG9yIGNyZWF0aW5nIGNvbmZlcmVuY2UgUm9vbXMgdmlhIHRoZSBDYWxlbmRhciB3aXRoIGV4dGVybmFsIFVzZXJzIGlzIG9ubHkgYWxsb3dlZCB3aXRoIGEgdm9sdW1lIGZsYXRyYXRlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDEiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSA2MCBNaW51dGVzIDksOTkgRVVSTyAoMTYgQ2VudCBwZXIgTWludXRlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDIiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSA1IGhvdXJzIDE5LDk5IEVVUk8gKDYgQ2VudCBwZXIgbWludXRlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDMiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSAzIG1vbnRoIGZvciAyOSw5OSBFVVJPICg5LDk5IEV1cm8gcGVyIE1vbnRoKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDQiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSA2IG1vbnRoIGZvciAzOSw5OSBFVVJPICg2LDY2IEV1cm8gcGVyIG1vbnRoKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDUiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlBheS1wZXItbWludXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Vm9sdW1lIGZsYXRyYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91IGhhdmUgdW5saW1pdGVkIExpY2Vuc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ4IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3VyIGxpY2Vuc2Ugd2lsbCBleHBpcmUgYXQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0OSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91IGJvdWdodCBQYXktcGVyLW1pbnV0ZS4gWW91IHN0aWxsIGhhdmU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IG5ldyBjcmVkaXQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+V2FudCB5b3VyIG93biBTZXJ2ZXI/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91IHdvdWxkIGxpa2UgdG8gaGF2ZSAkQVBQX05BTUUgaW5zdGFsbGVkIG9uIHlvdXIgU2VydmVyIG9yIGludGVncmF0ZWQgaW50byB5b3VyIE1vb2RsZSwgU3VnYXJDUk0sIFdlYnNpdGUgb3IgSW50cmFuZXQ/IFByaXppbmdzIHN0YXJ0IGF0IDUwMCBFdXJvIHBlciBJbnN0YWxsYXRpb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+T3Igc2VuZCB1cyBhIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU0IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5BbnN3ZXIgdG86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1NSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+TWVzc2FnZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU2IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5TZW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1NyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Q2xpY2sgaGVyZSB0byBnZXQgY29udGFjdCBJbmZvIGFuZCBQcml6aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTgiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNyZWRpdCBDYXJkIERldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU5IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5GaXJzdG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYwIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5MYXN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjEiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNyZWRpdCBDYXJkIFR5cGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYyIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5WSVNBIENhcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYzIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5NYXN0ZXJDYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2NCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+RGlzY292ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY1IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5BbWVyaWNhbiBFeHByZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2NiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q3JlZGl0IENhcmQgTnVtYmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2NyIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+RXhwaXJhdGlvbiBEYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2OCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q2FyZCBWZXJpZmljYXRpb24gTnVtYmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2OSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+QmlsbGluZyBBZGRyZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+QWRkcmVzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzEiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzIiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTczIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5Db3VudHJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U3RhdGUgKE9ubHkgVVMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+WklQPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+QW1vdW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NyIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U3VibWl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3OCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U3RlcCAxOiAkQVBQX05BTUUgLSBQYXltZW50IEZvcm08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc5IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5FTWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODAiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNsaWNrICJDaGVjayBvdXQgd2l0aCBQYXlwYWwiIHRvIHBheS4mbHQ7YnIvJmd0OyBQYXlwYWwgYWNjZXB0cyBWSVNBLCBNYXN0ZXJDYXJkLCBEaXNjb3ZlciBvciBBbWVyaWNhbiBFeHByZXNzLiAmbHQ7YnIvJmd0O0l0IGRvZXMgbm90IHJlcXVpcmUgdG8gc2lnbiB1cCB3aXRoIFBheXBhbC4gJmx0O2JyLyZndDtDaXRpemVucyBmcm9tIEdlcm1hbnkgY2FuIGFsc28gcGF5IHdpdGggZGlyZWN0IGRlYml0IChQZXIgTGFzdHNjaHJpZnQtRWluenVnKS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgxIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5UaGFuayB5b3UgZm9yIGJ1eWluZyAkQVBQX05BTUUuICZsdDtici8mZ3Q7ICZsdDtici8mZ3Q7IEFzIHNvb24gYXMgd2UgcmVjZWl2ZWQgdGhlIHBheW1lbnQgeW91ciBhY2NvdW50IHdpbGwgYmUgdXBkYXRlZC4mbHQ7YnIvJmd0OyBZb3Ugd2lsbCByZWNlaXZlIGFuIEVNYWlsIHdpdGggeW91ciBpbnZvaWNlIGFzIFBERi4mbHQ7YnIvJmd0O1lvdSBjYW4gYWxzbyBjaGVjayBjdXJyZW50IGFuZCBwYXN0IHRyYW5zYWN0aW9ucyBpbiB5b3VyIHByb2ZpbGUgc2V0dGluZ3MuJmx0O2JyLyZndDsmbHQ7YnIvJmd0OyZsdDtici8mZ3Q7WW91IGNhbiBjbG9zZSB0aGlzIGJyb3dzZXIgd2luZG93L3RhYiBub3cgYW5kIHJldHVybiB0byAkQVBQX05BTUUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U3VibWl0IGFuZCBCdXkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MyIgbmFtZT0icGF5bWVudC1mcm9tIj4KKyAgICA8dmFsdWU+Q2xpY2sgYW5kIEJ1eSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg0IiBuYW1lPSJwYXltZW50LWZyb20iPgorICAgIDx2YWx1ZT5TdGVwIDM6ICRBUFBfTkFNRSBQYXltZW50IC0gQ2hlY2sgb3JkZXIgYW5kIGJ1eSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg1IiBuYW1lPSJwYXltZW50LWZyb20iPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4NiIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+UGF5bWVudCByZWNlaXZlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg3IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5IaSw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg4IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5XZSBoYXZlIHJlY2VpdmVkIHlvdXIgcGF5bWVudC4gWW91ciB1c2VyIHByb2ZpbGUgaXMgdXBkYXRlZCBub3cuIFNlZSBhdHRhY2hlZCB5b3VyIEludm9pY2UuIFRoZSBJbnZvaWNlIGFuZCBhbGwgcGFzdCBJbnZvaWNlIGNhbiBhbHNvIGJlIGRvd25sb2FkZWQgaW4geW91ciB1c2VyIHByb2ZpbGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4OSIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+VGhhbmsgeW91IGZvciB1c2luZyAkQVBQX05BTUUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MCIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+UGF5bWVudCBSZWNlaXZlZCAkQVBQX05BTUUgLTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTEiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5QYXltZW50IGFuZCBUcmFuc2FjdGlvbiBTdGF0dXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkyIiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+VHJhbnNjYXRpb24gSGFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTMiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NaW51dGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NCIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPk1vbnRoczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTUiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5FVVI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk2IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+U3RhdHVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NyIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPkludm9pY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk4IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5OSIgbmFtZT0iZXJyb3ItbGljZW5zZS1mbGF0Ij4KKyAgICA8dmFsdWU+WW91IG5lZWQgdG8gYnV5IGEgdm9sdW1lIGZsYXRyYXRlIHRvIGJlIGFibGUgdG8gc2VuZCBpbnZpdGF0aW9ucyBvciBjcmVhdGUgbWVldGluZ3MgdmlhIHRoZSBjYWxlbmRhci4gV2l0aCBQYXktcGVyLW1pbnV0ZSBpdCBpcyBvbmx5IHBvc3NpYmxlIGZvciB5b3UgdG8gYWNjZXNzICRBUFBfTkFNRS4gWW91IGNhbm5vdCBhbGxvdyAzdGggUGFydGllcyB0byBhY2Nlc3MgYSBNZWV0aW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAwIiBuYW1lPSJlcnJvciB1c2VyIj4KKyAgICA8dmFsdWU+VGhpcyBFbWFpbCBpcyBhbHJlYWR5IHVzZWQgYnkgYW5vdGhlciBVc2VyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAxIiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+U0lQLVNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDIiIG5hbWU9InJvb20tYWRtaW4iPgorICAgIDx2YWx1ZT5UaGUgQ29uZmVyZW5jZSBOdW1iZXIgYW5kIFBJTiBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgdmlhIHRoZSBPcGVuWEcgUlBDLUdhdGV3YXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwMyIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlNJUCBOdW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNCIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlBJTjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA1IiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+Q2xlYXIgb2JqZWN0cyBvbiBjdXJyZW50IHNsaWRlIG9ubHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDYiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5Pbmx5IHRoZSBVUkwgZW50ZXJlZCBpbiB0aGUgU3RhdHVzIGJhciBpcyBzZW5kIHRvIHBhcnRpY2lwYW50cyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk1ha2UgVGVhbS1Sb29tcyBbQnJlYWtvdXQgc2Vzc2lvbl08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNob29zZSB1c2VycyBmb3IgYSBuZXcgVGVhbS1Sb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+WW91IGNhbiBjaG9vc2UgdXNlcnMgaGVyZSBhbmQgY3JlYXRlIGEgbmV3IENvbmZlcmVuY2UgUm9vbSAoIlRlYW0gUm9vbSIpIGZvciB0aGVtLiBUaGUgY2hvc2VuIHVzZXJzIHdpbGwgYXV0b21hdGljYWxseSBzd2l0Y2ggdG8gdGhlIG5ldyBUZWFtLVJvb20gb3IgZ2V0IGEgbm90aWZpY2F0aW9uLiBUZWFtLVJvb20gTW9kZXJhdG9ycyB3aWxsIGdldCBhZGRpdGlvbmFsbHkgYSBsaXN0IG9mIGN1cnJlbnQgcm9vbXMgc28gdGhhdCB0aGV5IGNhbiBzd2l0Y2ggdG8gZWFjaCByb29tIGlmIHRoZXJlIGFyZSBpcyBuZWVkIGZvciBhIE1vZGVyYXRvci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Vc2VycyBmb3IgdGhlIG5ldyBUZWFtLVJvb206PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DcmVhdGUgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNob29zZSBhdCBsZWFzdCBvbmUgdXNlciBmb3IgdGhlIFRlYW0tUm9vbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkFkZCB1c2VyIHRvIHRlYW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlJlbW92ZSB1c2VyIGZyb20gVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Vc2VyIGlzIFRlYW0tUm9vbSBNb2RlcmF0b3IgKEhlIGlzIGFibGUgdG8gbWFuYWdlIFRlYW0tUm9vbXMgYW5kIHVzZXJzIG9mIHRoZSBUZWFtLVJvb20gY2FuIGFzayBoaW0gdG8gY29tZSBpbnNpZGUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Sb29tdHlwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+SWYgeW91IGNoZWNrICJGb3JjZSB1c2VyIHRvIHN3aXRjaCB0byBuZXcgVGVhbS1Sb29tIiBhbGwgY2hvc2VuIHVzZXJzIHdpbGwgYXV0b21hdGljYWxseSBzd2l0Y2ggdG8gdGhlIG5ld2x5IGNyZWF0ZWQgVGVhbS1Sb29tLiBPdGhlcndpc2UgdGhleSBnZXQgYSBub3RpZmljYXRpb24gd2l0aCBhIGJ1dHRvbiB0aGF0IHRoZXkgJmx0O2kmZ3Q7Y2FuJmx0Oy9pJmd0OyBzd2l0Y2ggdG8gdGhlIG5ldyByb29tLiBUZWFtLU1vZGVyYXRvcnMgYWx3YXlzIGhhdmUgdGhlIGZyZWUgY2hvaWNlIHRvIG1hbmFnZSB0aGUgVGVhbS1Sb29tcyBhbmQgc3dpdGNoIGJldHdlZW4gdGhlbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk1hbmFnZSBUZWFtLVJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIHN3aXRjaCBoZXJlIGJldHdlZW4gYWxsIFRlYW0tUm9vbXMgdGhhdCB5b3UgYXJlIGFzc2lnbmVkIGFzIFRlYW0tUm9vbSBNb2RlcmF0b3IuIFVzZXJzIGluc2lkZSB0aGUgVGVhbS1Sb29tIGNhbiBzZW5kIHlvdSBhIG1lc3NhZ2UsIGZvciBleGFtcGxlIHRvIGFzayB5b3UgdG8gY29tZSB0byB0aGVpciByb29tIGFuZCBoZWxwIHRoZW0uIFlvdSBjYW4gYWxzbyB0ZXJtaW5hdGUgdGhlIFRlYW0tUm9vbSBhbmQgYWxsIFVzZXJzIHdpbGwgYmUgbG9nZ2VkIG91dC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkZvcmNlIHVzZXIgdG8gc3dpdGNoIHRvIG5ldyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNyZWF0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Vc2VycyBhdmFpbGFibGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkFkZCBhIHVzZXIgd2l0aCB0aGUgcGx1cyBmcm9tIHRoZSBsZWZ0IG9yIHJlbW92ZSBpdCB3aXRoIHRoZSBjcm9zcyBmcm9tIHRoZSByaWdodCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjEpIFRlYW0tUm9vbSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MikgQWRkIHVzZXJzIHRvIHRoZSBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW0tUm9vbSBOYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNoYW5nZSB0byB0aGUgUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U3dpdGNoIHRvIHRoaXMgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZXJtaW5hdGUgVGVhbS1Sb29tIGFuZCBsb2dvdXQgYWxsIFVzZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5OZXcgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBhIG5ldyBUZWFtLVJvb20gYXZhaWxhYmxlIGZvciB5b3UuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Td2l0Y2ggdG8gVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb20gQWN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+WW91IGNhbiByZS1vcGVuIHRoaXMgd2luZG93IHZpYSB0aGUgbWFpbiBtZW51IGluIHRoZSAiQWN0aW9ucyIgc2VjdGlvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlNlbmQgbWVzc2FnZSB0byBUZWFtLVJvb20gTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5OZXcgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBhIG5ldyBUZWFtLVJvb20gYXZhaWxhYmxlLiBZb3UgY2FuIHN3aXRjaCB0byB0aGF0IFJvb20uIFRlYW0tUm9vbXMgYXJlIGxpa2UgIldvcmtncm91cHMiIHdpdGggYWRkaXRpb25hbGx5IHBvc3NpYmlsaXRpZXMgdG8gYXNrIHRoZSBUZWFtLVJvb20gTW9kZXJhdG9yIGZvciBoZWxwLiBZb3VyIFRlYW0tUm9vbXMgYXJlIGFsc28gYXZhaWxhYmxlIGluIHRoZSAiTXkgTWVldGluZ3MiIHNlY3Rpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Td2l0Y2ggdG8gVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DcmVhdGVkIGJ5OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQ4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVhbS1Sb29tIG5hbWU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGlzIFdpbmRvdyB3aWxsIHN0YXkgb3BlbiBldmVuIGlmIHlvdSBsZWF2ZSB0aGUgcm9vbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1MCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJzIGZvciB0aGlzIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MykgT3RoZXIgVGVhbS1Sb29tcyB0aGF0IHlvdSBjb3VsZCBzd2l0Y2ggdG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1MiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlNlbmQgYSBtZXNzYWdlIHRvIHRoZSBUZWFtLVJvb20gTW9kZXJhdG9ycy4gRm9yIGV4YW1wbGUgaWYgeW91IG5lZWQgaGVscCBpbiBNb2RlcmF0aW5nIHRoZSBSb29tIG9yIGlmIHlvdSBoYXZlIGEgcXVlc3Rpb24gYWJvdXQgdGhlIHRvcGljLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U2VuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MikgVXNlcnMgdGhhdCBhcmUgaW52aXRlZCB0byB0aGlzIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+SXMgVGVhbS1Sb29tIE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGhlc2UgYXJlIGFsbCB1c2VycyB0aGF0IHRoZSBtb2RlcmF0b3IgaGFzIGludml0ZWQgdG8gdGhpcyBUZWFtLVJvb20uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBUZWFtLU1vZGVyYXRvciBsb2dnZWQgaW4gYXQgdGhlIG1vbWVudCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1OCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1OSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlBsZWFzZSBoZWxwIHVzLCB3ZSBoYXZlIGEgcHJvYmxlbSBpbiBvdXIgVGVhbS1Sb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+QSB1c2VyIGZyb20gYSBUZWFtLVJvb20gcmVxdWVzdHMgeW91ciBoZWxwLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVhbS1Sb29tIHJlcXVlc3QgZm9yIGhlbHA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2MiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk1lc3NhZ2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Gcm9tOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+WW91IGFyZSBjdXJyZW50bHkgbm90IGluIGFueSBUZWFtLVJvb20uIEJ1dCB5b3UgY2FuIHN3aXRjaCBoZXJlIHRvIGFsbCBUZWFtLVJvb21zIHRoYXQgeW91IGhhdmUgYWNjZXNzIHRvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY1IiBuYW1lPSJiYWNrdXBDb250ZW50Ij4KKyAgICA8dmFsdWU+QmFja3VwIHRoZSBTeXN0ZW0uIFRoZSBCYWNrdXAgaW5jbHVkZXMgYWxsIFVzZXIgZ2VuZXJhdGVkIGRhdGEuIFRoZSBjb25maWd1cmF0aW9uIGlzIG5vdCBpbmNsdWRlZCBhcyB3ZWxsIGFzIHRoZSBsYW5ndWFnZSBsYWJlbHMuIEJlY2F1c2UgdGhvc2UgdmFsdWVzIGFyZSBpbXBvcnRlZCB3aXRoIHRoZSBTeXN0ZW0gSW5zdGFsbGVyLiBUbyB1cGRhdGUgeW91ciBTeXN0ZW0sIGV4cG9ydCB5b3VyIG9sZCBzeXN0ZW0gKDEpIHJlLWluc3RhbGwgaW50byBhIG5ldyBkYXRhYmFzZSB0aGUgbmV3IHBhY2thZ2UgKDIpIGFuZCBpbXBvcnQgdGhlIEJhY2t1cCBmaWxlIGFnYWluICgzKS4gVGhlIEJhY2t1cCBzaG91bGQgYmUgaW1wb3J0ZWQgYmVmb3JlIGdlbmVyYXRpbmcgZGF0YSBpbiB0aGUgbmV3bHkgaW5zdGFsbGVkIHN5c3RlbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2NiIgbmFtZT0iYmFja3VwQ29udGVudCI+CisgICAgPHZhbHVlPlN5c3RlbSBCYWNrdXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2NyIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+QWxsb3cgdXNlciB0byBzaGFyZSBTY3JlZW4vUmVjb3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjgiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPkRlbnkgdXNlciB0byBzaGFyZSBTY3JlZW4vUmVjb3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjkiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPlVzZXIgaXMgTW9kZXJhdG9yLCBoZSBjYW4gZG8gYW55dGhpbmchPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzAiIG5hbWU9ImFwcGx5IGZvciBzY3JlZW4vcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0byBzaGFyZS9yZWNvcmQgc2NyZWVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDcxIiBuYW1lPSJtb2RlcmF0aW9uIG1pbmkgaWNvbnMiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGFsbG93ZWQgdG8gc2hhcmUvcmVjb3JkIHNjcmVlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDcyIiBuYW1lPSJtb2RlcmF0aW9uIG1pbmkgaWNvbnMiPgorICAgIDx2YWx1ZT5BcHBseSBmb3IgcmlnaHQgdG8gc2hhcmUvcmVjb3JkIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3MyIgbmFtZT0ibW9kZXJhdGlvbiBtaW5pIGljb25zIGNvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT5BbGxvdy9EZW55IHJpZ2h0IHRvIHNoYXJlL3JlY29yZCBzY3JlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzQiIG5hbWU9InNvdW5kIGljb24iPgorICAgIDx2YWx1ZT5UdXJuIHNvdW5kIG9mZjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc1IiBuYW1lPSJzb3VuZCBpY29uIj4KKyAgICA8dmFsdWU+VHVybiBzb3VuZCBvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc2IiBuYW1lPSJyb29tIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+QXVkaW8gb25seSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzciIG5hbWU9InJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5UdXJuIHRoaXMgRmxhZyBvbiBhbmQgdGhlIHVzZXJzIHdpbGwgaGF2ZSBvbmx5IHRoZSBBdWRpby1PcHRpb24gYW5kIG5vIFZpZGVvIGluIGEgY29uZmVyZW5jZSByb29tLiBUaGlzIGNhbiBieSBnb29kIHRvIHNhdmUgYmFuZHdpZHRoLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc4IiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5BbGxvdyBSZW1vdGUgQ29udHJvbCAoRHVyaW5nIFNjcmVlbiBTaGFyaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc5IiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5EZW55IFJlbW90ZSBDb250cm9sIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODAiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFwcGx5IGZvciByaWdodCB0byBSZW1vdGUgQ29udHJvbCBTY3JlZW4gKER1cmluZyBTY3JlZW4gU2hhcmluZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MSIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+WW91IGFyZSBhbGxvd2VkIHRvIFJlbW90ZSBDb250cm9sIFNjcmVlbiAoRHVyaW5nIFNjcmVlbiBTaGFyaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgyIiBuYW1lPSJhcHBseSBmb3IgcmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIHJlbW90ZSBjb250cm9sIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MyIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+VXNlciBpcyBNb2RlcmF0b3IsIGhlIGNhbiBkbyBhbnl0aGluZyEgW1JlbW90ZSBEZXNrdG9wIENvbnRyb2xdPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODQiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFsbG93L0RlbnkgcmlnaHQgdG8gUmVtb3RlIENvbnRyb2wgU2NyZWVuIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODUiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPjEpIFlvdXIgUEMgdG8gcmVtb3RlIFBDOiBUbyBjb3B5IGFuZCBwYXN0ZSB0ZXh0IGZyb20geW91ciBjbGlwYm9hcmQgaW50byB0aGUgcmVtb3RlIGNvbnRyb2xsZWQgc2NyZWVuLCBjbGljayBvbiB0aGUgc2NyZWVuLCB0aGVuIHJpZ2h0IGNsaWNrIGluIHRoZSB0ZXh0IGZpZWxkIGFuZCBjaG9vc2UgIkluc2VydCIgZnJvbSB0aGUgY29udGV4dCAocmlnaHQgY2xpY2spIG1lbnUuJmx0O2JyLyZndDsmbHQ7YnIvJmd0OzIpIEZyb20gcmVtb3RlIFBDIHRvIHlvdXIgUEM6IFRvIGNvcHkgdGV4dCBmcm9tIHRoZSByZW1vdGUgUEMgdG8geW91ciBQQydzIGNsaXBib2FyZCwgaGlnaGxpZ2h0IHRoZSB0ZXh0IHdpdGggdGhlIG1vdXNlIG9uIHRoZSByZW1vdGUgc2NyZWVuLCB0aGVuIHJpZ2h0LWNsaWNrIG9uIHRoZSByZW1vdGUgc2NyZWVuIGFuZCBjaG9vc2UgJmx0O2kmZ3Q7Q29weSBoaWdobGlnaHRlZCB0ZXh0Jmx0Oy9pJmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg2IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Db3B5IGFuZCBQYXN0ZSB0ZXh0IGZyb20geW91ciBQQyB0byByZW1vdGUgUEMgYW5kIHZpY2UtdmVyc2EuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODciIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNvcHkgaGlnaGxpZ2h0ZWQgdGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg4IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Ib3cgdG8gY29weSBuIHBhc3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODkiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPlF1YWxpdHkgb2YgdGhlIFNjcmVlblNoYXJlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkwIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5WZXJ5IGhpZ2ggUXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkxIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5IaWdoIFF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5MiIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+TWVkaXVtIFF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5MyIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+TG93IFF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NCIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5lbl9VUzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk1IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPmRlX0RFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTYiIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+S2V5Ym9hcmQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTciIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+Q2xvc2UgV2ViaW5hciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5OCIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5UaGUgV2ViaW5hciBpcyBhbHJlYWR5IGNsb3NlZCwgeW91IHdpbGwgYmUgcmVkaXJlY3RlZCB0byBzb21lIGludGVyZXN0aW5nIG9mZmVyaW5ncyBpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk5IiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPkNsb3NlIFJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMCIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5FeGl0IFVSTDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAxIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPlJvb20gdGVybWluYXRpb24gc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMiIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5JZiB0aGUgcm9vbSBpcyBjbG9zZWQgdXNlcnMgd2lsbCBiZSByZWRpcmVjdGVkIHRvIHRoZSBleGl0IFVSTC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5MZGFwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDQiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDYiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+Q29uZmlnIEZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5MZGFwIENvbmZpZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA4IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwOSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5FbmFibGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTAiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+SW5zZXJ0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JbnNlcnRlZCBieTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEyIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPlVwZGF0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5VcGRhdGVkIGJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTQiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+VGhlIGNvbmZpZyBmaWxlcyBhcmUgaW4gdGhlIGZvbGRlciB3ZWJhcHBzL29wZW5tZWV0aW5ncy9jb25mLiBZb3UgbmVlZCB0byBtYW51YWxseSB1cGxvYWQgdGhlIGZpbGVzIHRvIHRoaXMgZm9sZGVyLiBDaGFuZ2VzIHRvIHRoZSBjb25maWcgZmlsZSBhcmUgaW1tZWRpYXRlbHkgb25saW5lLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE1IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkNvbmZpZyBmaWxlIG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNiIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JZiB5b3UgZW5hYmxlICJBZGQgRG9tYWluIHRvIHVzZXJuYW1lIiB0aGUgdmFsdWUgb2YgdGhlIGZpZWxkICJkb21haW4iIGlzIGFkZGVkIHRvIGVhY2ggbG9naW4gdGhhdCB0aGUgdXNlciBlbnRlcnMgaW4gdGhlIGxvZ2luIGJveC4gVGhpcyBpcyB1c2VmdWwgaWYgdGhlIExvZ2luIGluIHRoZSBMZGFwIGlzIHN0b3JlZCBpbmNsdWRpbmcgdGhlIGRvbWFpbiBuYW1lLiBFeGFtcGxlOiBVc2VyIGVudGVycyAiaGFucyIgZG9tYWluIGlzIHNwZWNpZmllZCBhcyAibG9jYWxob3N0LmNvbSIsIGxvZ2luIHRoYXQgaXMgdmVyaWZpZWQgYWdhaW5zdCBMZGFwIGlzOiBoYW5zQGxvY2FsaG9zdC5jb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5BZGQgRG9tYWluIHRvIHVzZXJuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTgiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+RG9tYWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTkiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+SW5zZXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjAiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+Q29weSBoaWdobGlnaHRlZCB0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjEiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+UmVtb3RlIENsaXBib2FyZCBUZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjIiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+U2hvdyByZW1vdGUgQ2xpcGJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjMiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkRvIG5vdCBzaG93IGFnYWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjQiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNvcHkgdGV4dCBoZXJlIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI1IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0aGUgcmlnaHQgdG8gcmVtb3RlIGNvbnRyb2wgKG9yIHRoZSBtb2RlcmF0aW9uKSB0byBjb3B5IGFuZCBwYXN0ZSB0ZXh0IHRvIG9yIGZyb20gdGhlIHJlbW90ZSBzY3JlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjYiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkVkaXQgZGVmYXVsdCBzZXR0aW5ncyAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNyIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+RG8gbm90IHNob3cgaW5mbyBib3ggaW4gUmVtb3RlIENvbnRyb2wgYWJvdXQgQ29weSBhbmQgUGFzdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyOCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5TYXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjkiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+UmVtb3ZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzAiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzEiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5JbnZpdGUgdXNlciB0byBjb25mZXJlbmNlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMiIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkNob29zZSBhIGNvbmZlcmVuY2Ugcm9vbS4gVGhlIGludml0ZWQgdXNlciB3aWxsIGdldCBhIG1lc3NhZ2Ugd2l0aCB5b3VyIG5hbWUgYW5kIGEgbGluayB0byB0aGUgcm9vbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMyIgbmFtZT0iY2hhdCB1c2VyIj4KKyAgICA8dmFsdWU+Q29ubmVjdGVkIHNpbmNlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM0IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+RW50ZXIgcm9vbSBhZnRlciBzZW5kaW5nIGludml0YXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzNSIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkludml0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM2IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+TWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM3IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0byBpbnZpdGUgeW91IHRvIHRoZSBjb25mZXJlbmNlIHJvb206PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzgiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5JbnZpdGUgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM5IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+U2VuZCBJbnZpdGF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDAiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5kaWQgJmx0O2ImZ3Q7bm90Jmx0Oy9iJmd0OyBhY2NlcHQgeW91ciBpbnZpdGF0aW9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQxIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+QWNjZXB0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDIiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5EZW55PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDMiIG5hbWU9InVzZXIgcHJvZmlsZSI+CisgICAgPHZhbHVlPlRpbWV6b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDQiIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPkV2ZW50IERldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0NSIgbmFtZT0iYXBwb2ludG1lbnQgbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ2IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5EZXNjcmlwdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ3IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5DcmVhdGVkIGJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDgiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5UaW1lWm9uZSBNZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDkiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5DaGVjayAiVGltZVpvbmUgTWVzc2FnZSIgdG8gZ2l2ZSB1c2VycyBhIG1lc3NhZ2UgbmV4dCB0aW1lIHRoZXkgbG9naW4gdG8gdXBkYXRlIHRoZWlyIHByb2ZpbGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTAiIG5hbWU9InRpbWUgem9uZSB1cGRhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlBsZWFzZSBjaGVjayB0aGUgdGltZSB6b25lIGluIHlvdXIgdXNlciBwcm9maWxlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUxIiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5OZXcgJEFQUF9OQU1FIGNvbmZlcmVuY2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTIiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkRldGFpbHM6Jmx0O2JyLyZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MyIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3RhcnQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTQiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkVuZDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NSIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2hhbmdlZCAkQVBQX05BTUUgY29uZmVyZW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NiIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+T3JnYW5pemVyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU3IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DYW5jZWxlZCAkQVBQX05BTUUgY29uZmVyZW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1OCIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIGNvbmZlcmVuY2UgUmVtaW5kZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTkiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Db21tdW5pdHkgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlNob3cgY29udGFjdCBkYXRhIHRvIGV2ZXJ5Ym9keTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYxIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+QWRkIGZpZWxkcyBvZiBpbnRlcmVzdCB0aGF0IHlvdSBvZmZlciBvciB0aGF0IHlvdSBhcmUgc2VhcmNoaW5nIHRvIGZpbmQgaW50ZXJlc3RpbmcgcGFydG5lcnMgZm9yIGEgY29uZmVyZW5jZS4gQ29tbWEgc2VwYXJhdGUgdGhlIHRlcm1zIChmb3IgZXhhbXBsZTogTWVkaWNhbCBTZXJ2aWNlLCBIZWFsdGggYXNzdXJhbmNlLCAuLi4pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjIiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NeSBvZmZlcmluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MyIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk15IGludGVyZXN0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY0IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY1IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+VGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2NiIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkZpZWxkcyBvZiBpbnRlcmVzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY3IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+Q29udGFjdCBpbmZvcm1hdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY4IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2hvdyBjb250YWN0IGRhdGEgdG8gY29udGFjdHMgb25seTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY5IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2hvdyBjb250YWN0IGRhdGEgdG8gbm9ib2R5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzAiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NeSBQcm9maWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzEiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5FZGl0IHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzIiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TZWFyY2ggdXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MyIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPldhdGNoIHlvdXIgcHJvZmlsZSBsaWtlIG90aGVyIHNlZSB5b3U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkVkaXQgeW91ciBzZXR0aW5ncywgYWRkIHlvdXIgaW50ZXJlc3RzIHRvIGJlIGZvdW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzUiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TZWFyY2ggZm9yIG90aGVyIHVzZXJzIGFuZCBleHRlbmQgeW91ciBuZXR3b3JrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzYiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+U2VhcmNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzciIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+VXNlciBvZmZlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3OCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5Vc2VyIGxvb2tzIGZvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc5IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkZyZWV0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODAiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgxIiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlRpbWV6b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODIiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+T2ZmZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODMiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+U2VhcmNoczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg0IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlNlYXJjaHJlc3VsdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg1IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkFjdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NiIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5BZGQgdG8gY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NyIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5TZW5kIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4OCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5Db250YWN0cyBhbmQgTWVzc2FnZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4OSIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5QZW5kaW5nIGNvbnRhY3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTAiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5BY2NlcHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkRlbnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MiIgbmFtZT0idXNlciBjb250YWN0IHJlcXVlc3QiPgorICAgIDx2YWx1ZT5IaSw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MyIgbmFtZT0idXNlciBjb250YWN0IHJlcXVlc3QiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGFkZCB5b3UgYXMgY29udGFjdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NCIgbmFtZT0idXNlciBjb250YWN0IHJlcXVlc3QiPgorICAgIDx2YWx1ZT5DaGVjayB5b3VyIGNvbnRhY3QgcmVxdWVzdHMgaW4gJEFQUF9OQU1FIG9yIGNsaWNrIG9uIHRob3NlIGxpbmtzIHRvIGFjY2VwdCBvciBkZW55IHRoZSByZXF1ZXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTUiIG5hbWU9ImFkZCB1c2VyIGNvbnRhY3QiPgorICAgIDx2YWx1ZT5UaGlzIHVzZXIgaXMgYWxyZWFkeSBpbiB5b3VyIGNvbnRhY3QgbGlzdCBvciBoYXMgcmVjZWl2ZWQgYW4gaW52aXRhdGlvbiB0byB5b3VyIGNvbnRhY3QgbGlzdCB0aGF0IGlzIG5vdCBhbnN3ZXJlZCB5ZXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTYiIG5hbWU9InVzZXIgY29udGFjdCBtYWlsIj4KKyAgICA8dmFsdWU+WW91ciBjb250YWN0IGxpc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkVkaXQgeW91ciBjb250YWN0IGFuZCBtZXNzYWdlcywmbHQ7YnIvJmd0OyBtYW5hZ2UgeW91ciBwZW5kaW5nIGNvbnRhY3RzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk4IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+Y29uZmlybWVkIHlvdSBhcyBjb250YWN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk5IiBuYW1lPSJjaGF0IGluZm8gbWVzc2FnZSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAwIiBuYW1lPSJjaGF0IGxvZyBpY29uIj4KKyAgICA8dmFsdWU+U2hvdyAvIENvcHkgY2hhdCBsb2c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMSIgbmFtZT0iY2hhdCBsb2cgd2luZG93Ij4KKyAgICA8dmFsdWU+Q2hhdCBMb2c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RnJvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TdWJqZWN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDYiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1lc3NhZ2VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDciIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk5ldyBNYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkNsaWNrIHRvIHdyaXRlIGEgbmV3IG1lc3NhZ2UgdG8gYW55IG9mIHlvdXIgY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwOSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+V3JpdGUgbmV3IG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VG86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlN1YmplY3Q6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTIiIG5hbWU9IndoaXRlYm9hcmQgZnVsbC1maXQiPgorICAgIDx2YWx1ZT5FbmFibGUgZnVsbCBmaXQgYW5kIHRoZSB3aGl0ZWJvYXJkIHdpbGwgem9vbSB0aGUgd2hvbGUgd2hpdGVib2FyZCBzbyB0aGF0IGFsbCZsdDtici8mZ3Q7ZG9jdW1lbnRzIGFyZSB2aXNpYmxlIGFjY29yZGluZyB0byBlYWNoIHBhcnRpY2lwYW50cyBzY3JlZW4gcmVzb2x1dGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMyIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+S2ljayB1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTQiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPllvdSBjYW5ub3Qga2ljayB5b3Vyc2VsZiBvdXQgb2YgdGhlIGNvbmZlcmVuY2Ugcm9vbSEgSWYgeW91IHdhbnQgdG8gbGVhdmUgaXQgY2xvc2UgdGhlIGJyb3dzZXIgb3IgdXNlIHRoZSBleGl0IGJ1dHRvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNSIgbmFtZT0ia2ljay11c2VyIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRpc2Nvbm5lY3QgdGhpcyB1c2VyIGZyb20gdGhpcyBjb25mZXJlbmNlIHJvb20/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTYiIG5hbWU9ImtpY2stdXNlciI+CisgICAgPHZhbHVlPkNvbmZpcm0gYWN0aW9uIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE3IiBuYW1lPSJraWNrLXVzZXIiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IGtpY2sgYSBTdXBlci1Nb2RlcmF0b3Igb3V0IG9mIGEgcm9vbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxOCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Qm9vayBjb25mZXJlbmNlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxOSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3RhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZCBhbiBvcHRpb25hbCByZXF1ZXN0IGZvciBtZWV0aW5nIHRvIHRoZSBtZXNzYWdlIGFuZCBjcmVhdGUgYSBjb25mZXJlbmNlIHJvb20uIFRoZSBFdmVudCBpcyB0aGVuIGNvcGllZCBpbiB0aGUgY2FsZW5kYXIgb2YgZXZlcnkgcGFydGljaXBhbnQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkluYm94PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VHJhc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhpcyBpcyB5b3UhIFlvdSBjYW5ub3QgYWRkIHlvdXJzZWxmIGFzIHlvdXIgb3duIGNvbnRhY3QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjYiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5UaGUgdXNlciBpcyBhbHJlYWR5IGRlbmllZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoZSB1c2VyIGlzIGFscmVhZHkgYXBwcm92ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjgiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5UaGlzIHVzZXIgY29udGFjdCBoYXNoIGlzIGludmFsaWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjkiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Vc2VyIGFkZGVkIHRvIGNvbnRhY3QgbGlzdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlVzZXIgZGVuaWVkIGFzIGNvbnRhY3QgYW5kIHJlbW92ZWQgZnJvbSBwZW5kaW5nIGNvbnRhY3QgbGlzdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIHN1Y2ggY29udGFjdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPldvdWxkIHlvdSByZWFsbHkgbGlrZSB0byByZW1vdmUgdGhhdCBjb250YWN0PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMzIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+Q29uZmlybSBjb250YWN0IHJlbW92YWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkRlbGV0ZSBjb250YWN0IGZyb20gbGlzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM1IiBuYW1lPSJ1c2VyIHByb2ZpbGUiPgorICAgIDx2YWx1ZT5Vc2VyIFByb2ZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNiIgbmFtZT0idXNlciBwcm9maWxlIj4KKyAgICA8dmFsdWU+U2hvdyB1c2VyIHByb2ZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWVzc2FnZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzOCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VhcmNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbGVjdCBhbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0MCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VsZWN0IG5vbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0MSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VsZWN0IHVucmVhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWxlY3QgcmVhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Nb3ZlIHRvIGZvbGRlciAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIG5ldyBmb2xkZXIgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRlbGV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ2IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EZWxldGVkIG1haWxzIGFyZSBzdGlsbCBpbiB5b3VyIHRyYXNoIGZvbGRlciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWFyayB1bnJlYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0OCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWFyayByZWFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFuc3dlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BbnN3ZXIgZXZlcnlib2R5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkZvcndhcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWN0aW9ucyAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlNlbmQgcHJpdmF0ZSBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk5vdGhpbmcgc2VsZWN0ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1vdmUgdG8gSW5ib3g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGVsZXRlIChmaW5hbCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1OCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIGZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgZm9sZGVycyBhbmQgb3JnYW5pemUgeW91ciBtZXNzYWdlcyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIGZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPkRlbGV0ZSBmb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPllvdSBjYW5ub3QgZGVsZXRlIHRoaXMgZm9sZGVyLCB0aGVyZSBhcmUgc3RpbGwgbWVzc2FnZXMgaW5zaWRlISBEZWxldGUgZmlyc3QgdGhlIG1lc3NhZ2VzIG9yIG1vdmUgdGhlbSB0byBhbm90aGVyIGZvbGRlci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPkVkaXQgbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGZvbGRlcj8gVGhlcmUgaXMgbm8gd2F5IHRvIHVuZG8gdGhhdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPllvdXIgcmVxdWVzdCB3YXMgc2VuZCB0byB0aGUgdXNlci4gVGhlIHVzZXIgd2lsbCByZWNlaXZlIGEgbm90aWZpY2F0aW9uIHRvIGFjY2VwdCBvciBkZW55IHlvdXIgcmVxdWVzdC4gT25seSBhY2NlcHRlZCByZXF1ZXN0cyBhcmUgaW4geW91ciBjb250YWN0IGxpc3Qgb2YgY291cnNlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+TWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY4IiBuYW1lPSJ1c2VyIHZpZXcgcHJvZmlsZSI+CisgICAgPHZhbHVlPlRoZSB1c2VyIGRvZXMgbm90IHNoYXJlIGhpcyBwZXJzb25hbCBjb250YWN0IGRhdGEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjkiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+VGhlIHVzZXIgZG9lcyBzaGFyZSBoaXMgcGVyc29uYWwgY29udGFjdCBkYXRhIG9ubHkgdG8gY29udGFjdHMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzAiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+QWRkcmVzcyAmYW1wOyBQaG9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjcxIiBuYW1lPSJlcnJvciBjb2RlIj4KKyAgICA8dmFsdWU+WW91IGludml0YXRpb24gY29kZSBpcyBubyB2YWxpZCwgdGhlIGNvZGUgaXMgb25seSB2YWxpZCBkdXJpbmcgdGhpcyBzcGVjaWZpYyBkYXRlIGFuZCB0aW1lOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjcyIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhpcyBldmVudCBpcyBjb25uZWN0ZWQgdG8gc2V2ZXJhbCBjYWxlbmRhcnMgb2Ygb3RoZXIgdXNlcnMuIFlvdXIgY2hhbmdlIHdpbGwgYWxzbyB1cGRhdGUgdGhlaXIgY2FsZW5kYXIuIFdvdWxkIHlvdSByZWFsbHkgbGlrZSB0byB1cGRhdGUgdGhlIGV2ZW50PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjczIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Q29uZmlybSB1cGRhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkFsbG93IGNvbnRhY3QgdG8gc2VlIG15IGNhbGVuZGFyICh2aWV3IG9ubHkpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzUiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5EbyBub3Qgc2hhcmUgY2FsZW5kYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkNhbGVuZGFyIG9mIGNvbnRhY3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzciIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Zb3VyIGNvbnRhY3RzIG5lZWQgdG8gYXBwcm92ZSB5b3UgZmlyc3QgdG8gYmUgYWJsZSB0byBzZWUgdGhlaXIgY2FsZW5kYXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzgiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IHN0b3JlIG9yIGRlbGV0ZSBldmVudHMgZnJvbSBvdGhlciBjYWxlbmRhcnMgdGhlbiB5b3VyIG93biE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3OSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlNob3cgbXkgb3duIGNhbGVuZGFyIGFnYWluITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgwIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhpcyBldmVudCBpcyBjb25uZWN0ZWQgdG8gc2V2ZXJhbCBjYWxlbmRhcnMgb2Ygb3RoZXIgdXNlcnMuIFlvdXIgYWN0aW9uIHdpbGwgYWxzbyBkZWxldGUgdGhlIGV2ZW50IGZyb20gdGhlaXIgY2FsZW5kYXIuIFdvdWxkIHlvdSByZWFsbHkgbGlrZSB0byBkZWxldGUgdGhlIGV2ZW50PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgxIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Q29uZmlybSBhY3Rpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4MiIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPkVudGVyIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4MyIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPkFjY2VzcyB0aGUgY29uZmVyZW5jZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGEgY29uZmVyZW5jZSByb29tIGFuZCBldmVudCBib29rZWQgd2l0aCB0aGlzIHByaXZhdGUgbWVzc2FnZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NSIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPllvdSBuZWVkIHRvIHN0b3JlIHRoZSBldmVudCBmaXJzdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NiIgbmFtZT0iYWNjZXNzIHJvb21zIGVycm9yIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgbm8gc3VjaCByb29tIGF2YWlsYWJsZS4gVGhlIGV2ZW50IGluIHRoZSBjYWxlbmRhciBhbmQgY29ubmVjdGVkIHJvb20gaXMgYWxyZWFkeSBkZWxldGVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg3IiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5DaG9vc2UgeW91ciBuaWNrbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg4IiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5GaXJzdG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4OSIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+TGFzdG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MCIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+RW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MSIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+T2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MiIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+TWluaW11bSBsZW5ndGggNCBjaGFycyEgRm9yIGJvdGgsIGZpcnN0bmFtZSBhbmQgbGFzdG5hbWUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTMiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIHZhbGlkIGVtYWlsITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk0IiBuYW1lPSJhdXRoIGZyb20iPgorICAgIDx2YWx1ZT5GYWNlYm9vazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk1IiBuYW1lPSJhdXRoIGZvcm0iPgorICAgIDx2YWx1ZT5Mb2dpbiB3aXRoIHlvdXIgRmFjZWJvb2sgYWNjb3VudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk2IiBuYW1lPSJ2aWV3IHByb2ZpbGUiPgorICAgIDx2YWx1ZT5NZW1iZXIgc2luY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5NyIgbmFtZT0iZGlyZWN0IGxvZ2luIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Zb3UndmUgbG9nZ2VkIHdpdGggeW91ciBGYWNlYm9vayBhY2NvdW50LiBZb3Ugc2hvdWxkIHVwZGF0ZSB5b3VyIHByb2ZpbGUgd2l0aCB0aGUgY29ycmVjdCBlbWFpbC4gT3RoZXJ3aXNlIHlvdSB3aWxsIG5vdCByZWNlaXZlIGludml0YXRpb25zIGFuZCBwcml2YXRlIG1lc3NhZ2VzIGZyb20gb3RoZXIgdXNlcnMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTgiIG5hbWU9ImRpcmVjdCBsb2dpbiBtZXNzYWdlIGhlYWRlciI+CisgICAgPHZhbHVlPk1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5OSIgbmFtZT0iZGlyZWN0IGxvZ2luIG1lc3NhZ2UgY2hlY2tib3ggY29udHJvbCI+CisgICAgPHZhbHVlPkRvIG5vdCBzaG93IHVwZGF0ZSBwcm9maWxlIG1lc3NhZ2UgYWdhaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMCIgbmFtZT0icHJvZmlsZSBzZXR0aW5ncyBidXR0b24iPgorICAgIDx2YWx1ZT5tb3JlIGRpc3BsYXkgb3B0aW9ucyAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TmV3IHByaXZhdGUgbWVzc2FnZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2xpY2sgaGVyZSB0byB2aXNpdCB5b3VyIHByb2ZpbGUgdG8gc2VlIHRoZSBmdWxsIG1lc3NhZ2UgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlJlcGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPlJvb21zIGFuZCBjaGF0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA1IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5NeSByb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA2IiBuYW1lPSJteSByb29tcyI+CisgICAgPHZhbHVlPk15IGNvbmZlcmVuY2Ugcm9vbSAoZm9yIDEtMTYgdXNlcnMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDciIG5hbWU9Im15IHJvb21zIj4KKyAgICA8dmFsdWU+TXkgd2ViaW5hciByb29tIChmb3IgMS0xMjAgdXNlcnMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDgiIG5hbWU9InJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5Pd25lciBJZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA5IiBuYW1lPSJsb2dpbiBlcnJvciI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIHBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTAiIG5hbWU9ImxvZ2luIGVycm9yIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgYW4gYWNjb3VudCB3aXRoIFVzZXItTGV2ZWwgVXNlciwgTW9kZXJhdG9yIG9yIEFkbWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTEiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5XZWItU2VydmljZSAob25seSBhY2Nlc3MgdmlhIFNPQVApPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTIiIG5hbWU9InVwbG9hZCBmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+RG8gZGlyZWN0bHkgbG9hZCB0byB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTMiIG5hbWU9IndoaXRlYm9hcmQgY2xvc2UgY29uZmlybWF0aW9uIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIHJlbW92ZSB0aGlzIHdoaXRlYm9hcmQ/IFRoaXMgYWN0aW9uIGNhbm5vdCBiZSB1bmRvbmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTQiIG5hbWU9IndoaXRlYm9hcmQgbG9hZCBXTUwiPgorICAgIDx2YWx1ZT5Mb2FkIHRvIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxNSIgbmFtZT0icmVjb3JkaW5nIGZsYWciPgorICAgIDx2YWx1ZT5EbyBub3QgZm9yZ2V0IHN0YXJ0IHJlY29yZGluZyEgT25lIHVzZXIgcGVyIHJvb20gYWx3YXlzIG5lZWRzIHRvIHN0YXJ0IGl0IHRvIGhhdmUgdGhlIHJlY29yZGluZyBhZnRlcndhcmRzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE2IiBuYW1lPSJyZWNvcmRpbmcgZmxhZyI+CisgICAgPHZhbHVlPlN0YXJ0IFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE3IiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPkFycm93PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTgiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+Q2lyY2xlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTkiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+TGluZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIwIiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPlNxdWFyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIxIiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPlRyaWFuZ2xlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjIiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5UZXh0L05vdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyMyIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkNsaXBhcnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjQiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5EcmF3IEZyZWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNSIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlNlbGVjdC9Nb3ZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjYiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5EcmF3IFNoYXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjciIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5DdXQvTW92ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI4IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+Wm9vbSBJbi9PdXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyOSIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlByaW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzAiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5VbmRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzEiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5UcmFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMyIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+QWRkIEdyaWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMyIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlNoYXJlIEZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNCIgbmFtZT0iaWNvbiBzdWJtZW51Ij4KKyAgICA8dmFsdWU+U2VsZWN0IFNoYXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzUiIG5hbWU9Imljb24gc3VibWVudSI+CisgICAgPHZhbHVlPlNlbGVjdCBDbGlwYXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzYiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5Db3B5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzciIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5DdXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzOCIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPlBhc3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzkiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5EZWxldGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MCIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhlIGNvbXBsZXRlIGNvbnRlbnQgb24gdGhlIHdoaXRlYm9hcmQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDEiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5Mb2FkIGRpcmVjdGx5IHRvIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MiIgbmFtZT0iYXR0ZW5kZWVzIj4KKyAgICA8dmFsdWU+QXR0ZW5kZWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDMiIG5hbWU9ImF0ZW5kZWUgbWFuYWdlciI+CisgICAgPHZhbHVlPkF0dGVuZGVlIE1hbmFnZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NCIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+UHJlc2VudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ1IiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5SZW1vdGUgQ29udHJvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NiIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+RWplY3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NyIgbmFtZT0iY2hhdCI+CisgICAgPHZhbHVlPkNoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0OCIgbmFtZT0iaW52aXRlIGF0dGVuZGVlIj4KKyAgICA8dmFsdWU+SW52aXRlIEF0dGVuZGVlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ5IiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5CeSBFbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUwIiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5Vc2VyIGlzIG1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUxIiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5Vc2VyIGhhcyB3ZWJjYW0gc3dpdGNoZWQgb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1MiIgbmFtZT0iZmlsbF9vcHRpb24iPgorICAgIDx2YWx1ZT5EZWFjdGl2YXRlIHNoYXBlIGZpbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1MyIgbmFtZT0iZmlsbF9vcHRpb24iPgorICAgIDx2YWx1ZT5BY3RpdmF0ZSBzaGFwZSBmaWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTQiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5TbmFwIHRvIEdyaWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NSIgbmFtZT0iYWxsb3dfcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QWxsb3cgcmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTYiIG5hbWU9IndhaXRfZm9yX3JlY29yZGluZyI+CisgICAgPHZhbHVlPldhaXQgZm9yIHJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU3IiBuYW1lPSJoaWRlX3RvcF9iYXIiPgorICAgIDx2YWx1ZT5IaWRlIHRvcGJhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU4IiBuYW1lPSJmaWxlRXhwbG9yZXIiPgorICAgIDx2YWx1ZT5QbGF5IHZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTkiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoZSBjb250ZW50IG9uIHRoZSBjdXJyZW50IHNsaWRlPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYwIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT5BY2NlcHQgYW5kIGdyYW50IHVzZXIgcmlnaHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2MSIgbmFtZT0iYWN0aXZpdHlfd2luZG93Ij4KKyAgICA8dmFsdWU+RGVueTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYyIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT5JPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjMiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPkFjdGl2aXRpZXMgYW5kIGFjdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NCIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPlJlbW92ZSB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjUiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0aGUgbW9kZXJhdGlvbiBvciB0aGUgcmlnaHQgdG8gZHJhdyBvbiB0aGUgd2hpdGVib2FyZCB0byByZW1vdmUgd2hpdGVib2FyZHMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjYiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5Ob3QgYWxsb3dlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY3IiBuYW1lPSJ1c2VyX2xlZnRfYWN0X21zZyI+CisgICAgPHZhbHVlPmhhcyBsZWZ0IHRoZSByb29tLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY4IiBuYW1lPSJjbGlwYXJ0IGljb25zIj4KKyAgICA8dmFsdWU+TWF0aCBpY29uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY5IiBuYW1lPSJjbGlwYXJ0IGljb25zIj4KKyAgICA8dmFsdWU+Tm8gY2F0ZWdvcnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MCIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+Q29sb3ItU3R5bGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+UXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzcyIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5Eb21haW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MyIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+dmlzaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NCIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+cmVkb3JhbmdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzUiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPm1lZGl1bXNlYWdyZWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzYiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnN0ZWVsYmx1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc3IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5saWdodHN0ZWVsYmx1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc4IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5nb2xkZW5yZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3OSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+c2lsdmVyZ3JheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgwIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT51c2VyZGVmaW5lZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgxIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5iZXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODIiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnVwbG9hZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgzIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5tZWRpdW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NCIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg1IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5Vbm11dGUgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg2IiBuYW1lPSJnaXZlIGV4Y2x1c2l2ZSBhdWRpbyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBvZiBvdGhlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NyIgbmFtZT0ibXV0ZSBzZWxmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGdsb2JhbGx5IG11dGVkIGJ5IHRoZSBtb2RlcmF0b3IuIFlvdSBjYW5ub3QgdW5tdXRlIHlvdXJzZWxmITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg4IiBuYW1lPSJtdXRlIHNlbGYgY29uZmlybSBtZXNzYWdlIHRpdGxlIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg5IiBuYW1lPSJtdXRlIHNlbGYgY29uZmlybSBtZXNzYWdlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gbXV0ZSB5b3Vyc2VsZiBnbG9iYWxseT8gTm8gb3RoZXIgdXNlciB3aWxsIGhlYXIgeW91IGFueW1vcmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTAiIG5hbWU9Im11dGUgb3RoZXJzIGNvbmZpcm0gbWVzc2FnZSB0aXRsZSI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBsb2NhbGx5PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkxIiBuYW1lPSJtdXRlIG90aGVycyBjb25maXJtIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gbXV0ZSB0aGlzIG1pY3JvcGhvbmU/IFlvdSBjYW4gb25seSBtdXRlIGl0IGxvY2FsbHkgb24geW91ciBzY3JlZW4uIEl0IGhhcyBubyBlZmZlY3QgdG8gaG93IG90aGVyIHVzZXJzIGhlYXIgdGhpcyB1c2VyLiBPbmx5IG1vZGVyYXRvcnMgY2FuIHR1cm4gaXQgb2ZmIGdsb2JhbGx5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkyIiBuYW1lPSJtdXRlIG90aGVycyBjb25maXJtIG1lc3NhZ2UgdGl0bGUiPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgb2ZmIGdsb2JhbGx5PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkzIiBuYW1lPSJtdXRlIG90aGVycyBtb2RlcmF0b3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBtdXRlIHRoaXMgdXNlciBnbG9iYWxseT8gTm8gb3RoZXIgdXNlciB3aWxsIGhlYXIgaGltIGFueW1vcmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTQiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+WW91ciBzb3VuZCBpcyBvbi4gQ2xpY2sgaGVyZSB0byBzZW5kIG1vZGVyYXRvciBtZXNzYWdlIHRvIG11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5IChpbiB0aGUgY29tcGxldGUgY29uZmVyZW5jZSByb29tKSBvZmYhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTUiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+WW91ciBzb3VuZCBpcyBvZmYuIENsaWNrIGhlcmUgdG8gc2VuZCBtb2RlcmF0b3IgbWVzc2FnZSB0byB1bm11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5IChpbiB0aGUgY29tcGxldGUgY29uZmVyZW5jZSByb29tKSBvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5NiIgbmFtZT0ibXV0ZSBhcHBseSBzZWxmIG9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRoYXQgdGhlIG1vZGVyYXRvciBtdXRlcyBteSBtaWNyb3Bob25lIGdsb2JhbGx5LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk3IiBuYW1lPSJtdXRlIGFwcGx5IHNlbGYgb2ZmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRoYXQgdGhlIG1vZGVyYXRvciB1bm11dGVzIG15IG1pY3JvcGhvbmUgZ2xvYmFsbHkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTgiIG5hbWU9Im11dGUgYXBwbHkgb2YgbWVzc2FnZSI+CisgICAgPHZhbHVlPndhbnQgdGhhdCB0aGUgbW9kZXJhdG9yIHVubXV0ZXMgaGlzL2hlciBtaWNyb3Bob25lLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk5IiBuYW1lPSJtdXRlIGFwcGx5IG9mIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53YW50IHRoYXQgdGhlIG1vZGVyYXRvciBtdXRlcyBoaXMvaGVyIG1pY3JvcGhvbmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDAiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+VW5tdXRlIG1pY3JvcGhvbmUuIENsaWNrIGhlcmUgdG8gbXV0ZSBoaXMvaGVyIG1pY3JvcGhvbmUgZ2xvYmFsbHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDEiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lLiBDbGljayBoZXJlIHRvIHVubXV0ZSBoaXMvaGVyIG1pY3JvcGhvbmUgZ2xvYmFsbHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDIiIG5hbWU9Im11dGUgc2VsZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhpcyB1c2VyIGlzIGdsb2JhbGx5IG11dGVkIGJ5IHRoZSBtb2RlcmF0b3IuIFlvdSBjYW5ub3QgdW5tdXRlIGhpbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMyIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDQiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSB5b3VyIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwNSIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA2IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5Vbm11dGUgbWljcm9waG9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA3IiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDgiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDkiIG5hbWU9Im11dGUgbW9kZXJhdG9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Pbmx5IG1vZGVyYXRvcnMgY2FuIG11dGUgb3IgdW5tdXRlIGFuIHVzZXIgZ2xvYmFsbHkhIFRvIG11dGUgeW91ciBvd24gbWljcm9waG9uZTogUGxlYXNlIHVzZSB0aGUgbWljcm9waG9uZSBpY29uIGluIHlvdXIgdmlkZW8gcG9kITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDEwIiBuYW1lPSJwb2xsX25hbWUiPgorICAgIDx2YWx1ZT5Qb2xsIE5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMSIgbmFtZT0icG9sbF9uYW1lIj4KKyAgICA8dmFsdWU+WW91PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTIiIG5hbWU9ImFyY2hpdmVkX3BvbGxzIj4KKyAgICA8dmFsdWU+QXJjaGlldmVkIFBvbGxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTMiIG5hbWU9ImFjdGl2ZV9wb2xsIj4KKyAgICA8dmFsdWU+YWN0aXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTQiIG5hbWU9ImNoYXJ0X3NpbXBsZSI+CisgICAgPHZhbHVlPlNpbXBsZSBDaGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE1IiBuYW1lPSJjaGFydF9waWUiPgorICAgIDx2YWx1ZT5QaWUgQ2hhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNiIgbmFtZT0ic2lnbl91cF92YWxpZGF0aW9uIj4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTciIG5hbWU9ImNoYXRfbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+TmV3IG1lc3NhZ2Uocyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxOCIgbmFtZT0icG9sbF9jbG9zZSI+CisgICAgPHZhbHVlPkNsb3NlIFBvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxOSIgbmFtZT0icG9sbF9jbG9zZV9jb25maXJtIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNsb3NlIHRoaXMgUG9sbD8gTm8gb25lIHdpbGwgYmUgYWJsZSB0byB2b3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjAiIG5hbWU9InBvbGxfZGVsZXRlIj4KKyAgICA8dmFsdWU+RGVsZXRlIFBvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMSIgbmFtZT0icG9sbF9kZWxldGVfY29uZmlybSI+CisgICAgPHZhbHVlPkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBQb2xsPyBUaGUgcmVzdWx0cyB3aWxsIGJlIGRlbGV0ZWQgYXMgd2VsbC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMiIgbmFtZT0ibGFuZ3VhZ2VfY29kZSI+CisgICAgPHZhbHVlPkxhbmd1YWdlIElTTyBDb2RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjMiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19wZXJtaXNzaW9uIj4KKyAgICA8dmFsdWU+QWxsb3cvRGVueSByaWdodCB0byBnaXZlIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNCIgbmFtZT0iYWxsb3dfZXhjbHVzaXZlX2F1ZGlvX3Blcm1pc3Npb24iPgorICAgIDx2YWx1ZT5BbGxvdyB1c2VyIHRvIGdpdmUgZXhjbHVzaXZlIGF1ZGlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjUiIG5hbWU9ImRlbnlfZXhjbHVzaXZlX2F1ZGlvX3Blcm1pc3Npb24iPgorICAgIDx2YWx1ZT5EZW55IHVzZXIgdG8gZ2l2ZSBleGNsdXNpdmUgYXVkaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNiIgbmFtZT0iZXhjbF9hdWRpbyBhcHBseSBzZWxmIG9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGdldCBhIHBlcm1pc3Npb24gZm9yIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNyIgbmFtZT0iZXhjbF9hdWRpbyBhcHBseSBvZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+d2FudCB0aGF0IHRoZSBtb2RlcmF0b3IgZ2l2ZXMgbWUgYSBwZXJtaXNzaW9uIGZvciBleGNsdXNpdmUgYXVkaW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjgiIG5hbWU9ImV4Y2xfYXVkaW8gc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+R2l2ZSBhIHBlcm1pc3Npb24gZm9yIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyOSIgbmFtZT0iY2FtX3Jlc29sdXRpb24iPgorICAgIDx2YWx1ZT5DYW0gcmVzb2x1dGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMwIiBuYW1lPSJjYW1fcmVzb2x1dGlvbl9pbmZvIj4KKyAgICA8dmFsdWU+Q2hhbmdpbmcgdGhlIHJlc29sdXRpb24gYWZmZWN0cyBiYW5kd2lkdGgsIGJpZ2dlciBwaWN0dXJlIG5lZWRzIG1vcmUgYmFuZHdpdGghPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzEiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19lcnJvciI+CisgICAgPHZhbHVlPllvdSBkb24ndCBoYXZlIHRoZSByaWdodCB0byBnaXZlIHlvdXJzZWxmIG9yIG90aGVycyBleGNsdXNpdmUgYXVkaW8uIFlvdSBuZWVkIHRvIGFwcGx5IGZvciB0aGUgcmlnaHQgZnJvbSB0aGUgbW9kZXJhdG9yIG9yIGFzayB0aGUgbW9kZXJhdG9yIHRvIGdpdmUgeW91IGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzMiIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2FzayI+CisgICAgPHZhbHVlPkkgd291bGQgbGlrZSB0byBnZXQgdGhlIHJpZ2h0IGZvciBleGNsdXNpdmUgYXVkaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzMyIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2FjdGlvbiI+CisgICAgPHZhbHVlPkdpdmUgZXhjbHVzaXZlIGF1ZGlvIHRvIG1lIChhbHRlcm5hdGl2ZWx5IGNsaWNrIG9uIHlvdXIgdmlkZW8gcG9kIG9yIHByZXNzIEYxMik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNCIgbmFtZT0ibWljcm8gaXMgb24iPgorICAgIDx2YWx1ZT5NaWNyb3Bob25lIGlzIG9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM1IiBuYW1lPSJtaWNybyBpcyBvZmYiPgorICAgIDx2YWx1ZT5NaWNyb3Bob25lIGlzIG11dGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzYiIG5hbWU9ImhpZGVfY2hhdCI+CisgICAgPHZhbHVlPkhpZGUgY2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM3IiBuYW1lPSJoaWRlX2FjdGl2aXRpZXNfYW5kX2FjdGlvbnMiPgorICAgIDx2YWx1ZT5IaWRlIGFjdGl2aXRpZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzOCIgbmFtZT0iaGlkZV9maWxlc19leHBsb3JlciI+CisgICAgPHZhbHVlPkhpZGUgZmlsZXMgZXhwbG9yZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzOSIgbmFtZT0iaGlkZV9hY3Rpb25zX21lbnUiPgorICAgIDx2YWx1ZT5IaWRlIGFjdGlvbnMgbWVudTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQwIiBuYW1lPSJoaWRlX3NjcmVlbl9zaGFyaW5nIj4KKyAgICA8dmFsdWU+SGlkZSBzY3JlZW4gc2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQxIiBuYW1lPSJoaWRlX3doaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5IaWRlIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MiIgbmFtZT0ic2hvdyBtaWNyb3Bob25lIHN0YXR1cyI+CisgICAgPHZhbHVlPlNob3cgbWljcm8gc3RhdHVzIGluIHZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDMiIG5hbWU9ImxheW91dF9vcHRpb25zIj4KKyAgICA8dmFsdWU+TGF5b3V0IG9wdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0NCIgbmFtZT0iY2FsZW5kYXIgbmV3IGJ1dHRvbiI+CisgICAgPHZhbHVlPk5ldyBFdmVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ1IiBuYW1lPSJjYWxlbmRhciBwYXNzd29yZCBpbmZvIHRleHQiPgorICAgIDx2YWx1ZT5QYXNzd29yZCBwcm90ZWN0ZWQgYXJlIHRoZSBsaW5rcyB0byB0aGUgY29uZmVyZW5jZSB0aGF0IGFyZSBzZW5kIHRvIHRoZSBwYXJ0aWNpcGVudHMgd2hlbiB5b3Ugc2F2ZSB0aGUgY2FsZW5kYXIgZXZlbnQsIG5vdCB0aGUgcm9vbSEgVGhhdCBtZWFucyBpZiB5b3Ugc2F2ZSB0aGUgZXZlbnQgbXVsdGlwbGUgdGltZXMgYnV0IHdpdGggZGlmZmVyZW50IHBhc3N3b3JkcyBldmVyeSBwYXJ0aWNpcGVudCByZWNlaXZlcyBhIG5ldyBsaW5rIHRoYXQgaGFzIGEgZGlmZmVyZW50IHBhc3N3b3JkLiBCdXQgb2xkIGxpbmtzIHN0aWxsIHdvcmsgb25jZSBzZW5kITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ2IiBuYW1lPSJjYWxlbmRhciBlZGl0IGJ1dHRvbiI+CisgICAgPHZhbHVlPkVkaXQgZGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ3IiBuYW1lPSJzaXAgc2hvdyBkaWFsZXIiPgorICAgIDx2YWx1ZT5TaG93IHNpcCBkaWFsZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0OCIgbmFtZT0ic2lwIGNhbGwiPgorICAgIDx2YWx1ZT5DYWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDkiIG5hbWU9ImNhbGVuZGFyIGNvbnRhY3QgbGlzdCI+CisgICAgPHZhbHVlPlNob3cgY2FsZW5kYXIgZXZlbnRzIG9mIGNvbnRhY3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+WW91ciBob21lITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUxIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5QbGFuIHlvdXIgbWVldGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MiIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+V2F0Y2ggcmVjb3JkaW5nIGFuZCBpbnRlcnZpZXdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTMiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPkNob29zZSBhbmQgc3RhcnQgYSB3ZWItY29uZmVyZW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU0IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgdXNlcnMgYW5kIHJpZ2h0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU1IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgY29ubmVjdGlvbnMgYW5kIGtpY2sgdXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1NiIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIHVzZXJncm91cHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1NyIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIGNvbmZlcmVuY2Ugcm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1OCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIHN5c3RlbSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU5IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgbGFiZWxzIGFuZCB3b3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjAiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBMREFQIGFuZCBBRFMgY29uZmlndXJhdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MSIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+RXhwb3J0L0ltcG9ydCBTeXN0ZW0gQmFja3VwczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYyIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgbW9kZXJhdGlvbiBvciB0aGUgcmlnaHQgdG8gZHJhdyBvbiB3aGl0ZWJvYXJkIHRvIHVwbG9hZCwgYWRkLCBkZWxldGUgb3IgbG9hZCBmaWxlcyBhbmQgZm9sZGVycy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MyIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkVkaXQgdGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY0IiBuYW1lPSJzYWx1dGF0aW9uIj4KKyAgICA8dmFsdWU+UHJvZjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY1IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlB1Ymxpc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2NiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdGFydCBQdWJsaXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjciIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U3RvcCBQdWJsaXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+SG9zdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY5IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlB1Ymxpc2ggQXBwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzAiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UHVibGlzaCBJZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDcxIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHVjZSB0aGUgd2lkdGggb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbW92ZSBpdCBsZWZ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzIiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UmVkdWNlIHRoZSBoZWlnaHQgb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbW92ZSBpdCBib3R0b208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5SZWR1Y2UgdGhlIHggb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbWFrZSBpdCB3aWRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc0IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHVjZSB0aGUgeSBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtYWtlIGl0IGhpZ2hlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc1IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkZpbGwgdGhlc2Ugc2V0dGluZ3Mgc3RyZWFtIHlvdXIgc2NyZWVuIGRhdGEgdG8gM3RoIHBhcnR5IHByb3ZpZGVycyBsaWtlIGp1c3Rpbi50djwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc2IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlBsZWFzZSBzdGFydCBTY3JlZW4gc2hhcmluZyB0byBiZSBhYmxlIHRvIHB1Ymxpc2ggaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3NyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5Nb2RlcmF0b3IgcGVybWlzc2lvbiByZXF1aXJlZCB0byBzdGFydCByZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3OCIgbmFtZT0ibm8gcmlnaHQgZm9yIGV4Y2x1c2l2ZSBhdWRpbyI+CisgICAgPHZhbHVlPllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gYXBwbHkgZXhjbHVzaXZlIGF1ZGlvIHRvIGFueSBwYXJ0aWNpcGFudC4gWW91IG5lZWQgbW9kZXJhdGlvbiByb2xlIG9yIHRoZSByaWdodCBmb3IgZXhjbHVzaXZlIGF1ZGlvIHRvIG1ha2UgYW55IG1pY3JvcGhvbmUgZXhjbHVzaXZlIHR1cm5lZCBvbi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzkiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlVwbG9hZCBuZXcgZmlsZSB0byBmaWxlIGV4cGxvcmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODAiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPk9wZW4gbmV3IGRpYWxvZyB3aXRoIHNoYXJpbmcgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+QW4gZXhpc3RpbmcgbW9kZXJhdG9yIG11c3QgYXBwcm92ZSBpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgyIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5Bc2sgbW9kZXJhdG9yIHRvIHNoYXJlIHlvdXIgd2ViY2FtL21pY3JvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODMiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkdhdGhlciBmZWVkYmFjayBieSBjcmVhdGluZyBhIHBvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+UGFzdCBhbmQgY3VycmVudCBwb2xsIHJlc3VsdHMgYXMgY2hhcnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODUiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlZvdGUgaWYgdGhlcmUgaXMgYSBwb2xsIGZvciB0aGlzIGNvbmZlcmVuY2Ugcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg2IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5FZGl0IGNhbSBhbmQgbWljIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODciIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkNvbmZpcm0gYW5kIGxlYXZlIHRoZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODgiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkNhbGwgZXh0ZXJuYWwgcGVvcGxlIHZpYSBWb0lQL1NJUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg5IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5TZW5kIGFuIGVtYWlsIHdpdGggYSBkaXJlY3QgbGluayB0byB0aGlzIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Q2hhbmdlIHlvdXIgd2hpdGVib2FyZCBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkxIiBuYW1lPSJiYWNrdXAgYWRtaW4iPgorICAgIDx2YWx1ZT5NYXggdXBsb2FkIHNpemU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MiIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+QXNrIG1vZGVyYXRvciB0byBzaGFyZSB5b3VyIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MyIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+U3RhcnQgUHJpdmF0ZSBDaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTQiIG5hbWU9ImFsbF9wcml2YXRlX2NoYXQiPgorICAgIDx2YWx1ZT5BbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NSIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBzdGFydCBhIHByaXZhdGUgY2hhdCB3aXRoIHlvdXJzZWxmLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk2IiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5Zb3UndmUgYWxyZWFkeSBzdGFydGVkIGEgcHJpdmF0ZSBjaGF0IHdpdGggdGhpcyBwYXJ0aWNpcGFudC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NyIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHByaXZhdGUgY2hhdD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5OCIgbmFtZT0iU2VydmVycyI+CisgICAgPHZhbHVlPlNlcnZlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5OSIgbmFtZT0iU2VydmVycyI+CisgICAgPHZhbHVlPlNlcnZlcnMgcGFydGljaXBhdGluZyBpbiBjbHVzdGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDAiIG5hbWU9IlNlcnZlciBuYW1lIj4KKyAgICA8dmFsdWU+U2VydmVyIE5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMSIgbmFtZT0iU2VydmVyIEFkZHJlc3MiPgorICAgIDx2YWx1ZT5TZXJ2ZXIgQWRkcmVzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAyIiBuYW1lPSJTZXJ2ZXIgZGV0YWlscyI+CisgICAgPHZhbHVlPlNlcnZlciBkZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDMiIG5hbWU9IlNlbmQgU01TIj4KKyAgICA8dmFsdWU+U2VuZCBTTVM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNCIgbmFtZT0icHVibGlzaGluZ19tZXNzYWdlIj4KKyAgICA8dmFsdWU+UHVibGlzaGluZy4gVXNlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNSIgbmFtZT0iY21kX2xpbmVfYWRtaW4iPgorICAgIDx2YWx1ZT5UbyBzYXZlIHRpbWUgYW5kIGludGVybmV0IHRyYWZmaWMgeW91IGNhbiB1c2UgY29tbWFuZCBsaW5lIGFkbWluIHRvIGJhY2t1cC9yZXN0b3JlL3VwZ3JhZGU6XG4gMSkgZ28gdG8gT00gaW5zdGFsbCBkaXIgKGZvciBleC4gL29wdC9yZWQ1KSBcbiAyKSBzdG9wIE9NIChmb3IgZXguIC4vcmVkNS1zaHV0ZG93bi5zaClcbiAzKSAuL2FkbWluLnNoIC1iIC1maWxlIH4vdG9kYXlfb21fYmFja3VwLnppcCAoY3JlYXRlIGJhY2t1cCBvZiBjdXJyZW50IE9NKVxuIDQpIGRvd25sb2FkIGFyY2hpdmUgd2l0aCBuZXcgT01cbiA1KSBtdiAvb3B0L3JlZDUgL29wdC5yZWQ1LmJhayAobW92ZSB3b3JraW5nIHZlcnNpb24gb2YgT00ganVzdCBpbiBjYXNlIDopKVxuIDYpIGV4dHJhY3QgZG93bmxvYWRlZCBPTSB0byB0aGUgL29wdC9yZWQ1XG4gNykgLi9hZG1pbi5zaCAtaSAtZmlsZSB+L3RvZGF5X29tX2JhY2t1cC56aXAgKG9yICcuL2FkbWluLnNoIC1pIC1maWxlIH4vdG9kYXlfb21fYmFja3VwLnppcCAtLWRiLXR5cGUgbXlzcWwgLS1kYi11c2VyIG9tX3VzZXIgLS1kYi1wYXNzIG9tX3VzZXJfcGFzcycgaW4gY2FzZSBvZiB5b3UgYXJlIHVzaW5nIG5vbi1kZWZhdWx0IERCIClcbiA4KSBzdGFydCBPTVxuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDYiIG5hbWU9InB1YmxpY19yb29tX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5Sb29tcyBjb21tb24gdG8gYWxsIHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNyIgbmFtZT0icHJpdmF0ZV9yb29tX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5Sb29tcyBjb21tb24gdG8gdGhlIGN1cnJlbnQgdXNlciBncm91cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA4IiBuYW1lPSJteV9yb29tX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5Sb29tcyBvZiB0aGUgY3VycmVudCB1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDkiIG5hbWU9ImNyZWF0ZV9uZXdfcm9vbSI+CisgICAgPHZhbHVlPkNyZWF0ZS9Nb2RpZnkgYXBwb2ludG1lbnQgc3BlY2lhbCByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTAiIG5hbWU9Im11bHRpcGxlX2FkZHJlc3NlcyI+CisgICAgPHZhbHVlPllvdSBjYW4gZW50ZXIgbXVsdGlwbGUgYWRkcmVzc2VzIGluIHRoZSBmb3JtYXQ6IGZpcnN0bmFtZTEgbGFzdG5hbWUxICZsdDtlbWFpbDEmZ3Q7LCJmaXJzdG5hbWUyIGxhc3RuYW1lMiIgJmx0O2VtYWlsMiZndDssJ2ZpcnN0bmFtZTMgbGFzdG5hbWUzJyAmbHQ7ZW1haWwzJmd0OywgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTEiIG5hbWU9InN0cmVhbV92b2x1bWUiPgorICAgIDx2YWx1ZT5BZGp1c3Qgc3RyZWFtIHZvbHVtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTEyIiBuYW1lPSJtaWNyb3Bob25lX3ZvbHVtZSI+CisgICAgPHZhbHVlPkFkanVzdCBtaWNyb3Bob25lIHZvbHVtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTEzIiBuYW1lPSJjaGF0X21vZGVyYXRlZCI+CisgICAgPHZhbHVlPklzIGNoYXQgbW9kZXJhdGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTQiIG5hbWU9ImNoYXRfbW9kZXJhdGVkIj4KKyAgICA8dmFsdWU+QWxsb3cgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE1IiBuYW1lPSJjaGF0X29wZW5lZCI+CisgICAgPHZhbHVlPkNoYXQgcGFuZWwgb3BlbmVkIGJ5IGRlZmF1bHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNiIgbmFtZT0iZmlsZXNfb3BlbmVkIj4KKyAgICA8dmFsdWU+RmlsZXMgcGFuZWwgb3BlbmVkIGJ5IGRlZmF1bHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNyIgbmFtZT0ic2VydmVyIGFkbWluIHNlY3Rpb24gbGFzdHBpbmciPgorICAgIDx2YWx1ZT5MYXN0IHBpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxOCIgbmFtZT0ic2VydmVyIGFkbWluIHNlY3Rpb24gbGFzdHBpbmcgaW5mbyI+CisgICAgPHZhbHVlPkV2ZXJ5IHNsYXZlIHNlbmRzIGEgcGluZyB0byB0aGUgbWFzdGVyIGV2ZXJ5IDMgc2Vjb25kcyAoY29uZmlndXJhYmxlKS4gU2xhdmUgbGFzdFBpbmcgbXVzdCBiZSBzbWFsbGVyIHRoZW4gMSBtaW51dGUgc28gdGhhdCB0aGUgbWFzdGVyIHVzZXMgdGhlIHNsYXZlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE5IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcG9ydCI+CisgICAgPHZhbHVlPkhUVFAgUG9ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIwIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gdXNlciI+CisgICAgPHZhbHVlPlVzZXIgKFNPQVAtQWNjZXNzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIxIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcGFzc3dvcmQiPgorICAgIDx2YWx1ZT5QYXNzd29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIyIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gd2ViYXBwIHBhdGgiPgorICAgIDx2YWx1ZT5XZWJhcHAgcGF0aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIzIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcHJvdG9jb2wiPgorICAgIDx2YWx1ZT5Qcm90b2NvbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI0IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcGluZyBydW5uaW5nIj4KKyAgICA8dmFsdWU+UGluZyBydW5uaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjUiIG5hbWU9InNlcnZlciBhZG1pbiBhY3RpdmUiPgorICAgIDx2YWx1ZT5BY3RpdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyNiIgbmFtZT0iZ2VuZXJhdGVfaGFzaCI+CisgICAgPHZhbHVlPkdlbmVyYXRlIFVSTDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI3IiBuYW1lPSJuZXR3b3JrIHRlc3RpbmcgbGluayI+CisgICAgPHZhbHVlPk5ldHdvcmsgdGVzdGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI4IiBuYW1lPSJyb29tX29wdGlvbnMiPgorICAgIDx2YWx1ZT5BdXRvIHNlbGVjdCBpbnRlcnZpZXcgdmlkZW8gcG9kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjkiIG5hbWU9ImZvbnRfdW5kZXJsaW5lIj4KKyAgICA8dmFsdWU+VW5kZXJsaW5lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzAiIG5hbWU9ImZvbnRfc3R5bGUiPgorICAgIDx2YWx1ZT5Gb250IHN0eWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzEiIG5hbWU9ImFsbG93X2ZvbnRfc3R5bGVzIj4KKyAgICA8dmFsdWU+QWxsb3cgZm9udCBzdHlsZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMiIgbmFtZT0iZm9udF9jb2xvciI+CisgICAgPHZhbHVlPkZvbnQgY29sb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMyIgbmFtZT0iaHlwZXJsaW5rIj4KKyAgICA8dmFsdWU+SHlwZXJsaW5rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzQiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW4iPgorICAgIDx2YWx1ZT5TaG93IHNlc3Npb24gc3RhdGlzdGljczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM1IiBuYW1lPSJjb25uZWN0aW9uIGFkbWluIj4KKyAgICA8dmFsdWU+U2Vzc2lvbiBkZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzYiIG5hbWU9InN5c3RlbV9pbXBvcnQiPgorICAgIDx2YWx1ZT5TeXN0ZW0gaW1wb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzciIG5hbWU9ImluY2x1ZGVfaW50b19iYWNrdXAiPgorICAgIDx2YWx1ZT5JbmNsdWRlIHVwbG9hZGVkIGZpbGVzIGFuZCByZWNvcmRpbmdzIGluIGJhY2t1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM4IiBuYW1lPSJyb29tX2FkbWluX3NpcCI+CisgICAgPHZhbHVlPkVuYWJsZSBTSVAgdHJhbnNwb3J0IGluIHRoZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzkiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19jb25maXJtIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIHByb3ZpZGUgdGhpcyB1c2VyIGFuIGV4Y2x1c2l2ZSBhdWRpbz88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU0MCIgbmFtZT0ibm9fdGltZXpvbmUiPgorICAgIDx2YWx1ZT5QbGVhc2Ugc3BlY2lmeSB5b3VyIHRpbWV6b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NDUiIG5hbWU9ImNvbnRlbnRfaXNfc2F2aW5nIj4KKyAgICA8dmFsdWU+Q29udGVudCBpcyBTYXZpbmcsIFBsZWFzZSB3YWl0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorPC9sYW5ndWFnZT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL2NvdW50cmllcy54bWwgYi9XZWJDb250ZW50L2xhbmd1YWdlcy9jb3VudHJpZXMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViM2IzOTMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L2xhbmd1YWdlcy9jb3VudHJpZXMueG1sCkBAIC0wLDAgKzEsMjY3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPCEtLSAKKwlUaGlzIGxpc3QgaXMgY29tcGxldGUgYW5kIHVwLXRvLWRhdGUgYXMgb2YgMTggRmVicnVhcnkgMjAwNy4gCisJZnJvbSBVbml0ZWQgTmF0aW9ucworCVVuaXRlZCBOYXRpb25zIFN0YXRpc3RpY3MgRGl2aXNpb24tIFN0YW5kYXJkIENvdW50cnkgYW5kIEFyZWEgQ29kZXMgQ2xhc3NpZmljYXRpb25zIChNNDkpCisJaHR0cDovL3Vuc3RhdHMudW4ub3JnL3Vuc2QvbWV0aG9kcy9tNDkvbTQ5YWxwaGEuaHRtCisJCisJMjguMDcuMjAwNyBhZGQgVGFpd2FuLCBSZXB1YmxpYyBvZiBDaGluYSBjb3VudHJ5IGNvZGUgMTU3LCBzaG9ydCBST0MKKwkgLS0+Cis8Y291bnRyaWVzIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIAorICAgIHhzaTpub05hbWVzcGFjZVNjaGVtYUxvY2F0aW9uPSJjb3VudHJpZXMueHNkIj4KKwk8Y291bnRyeSBjb2RlPSIwMDQiIG5hbWU9IkFmZ2hhbmlzdGFuIiBzaG9ydD0iQUZHIiAvPgorCTxjb3VudHJ5IGNvZGU9IjI0OCIgc2hvcnQ9IkFMQSIgbmFtZT0iw4VsYW5kIElzbGFuZHMiIC8+CisJPGNvdW50cnkgY29kZT0iMDA4IiBzaG9ydD0iQUxCIiBuYW1lPSJBbGJhbmlhIiAvPgorCTxjb3VudHJ5IGNvZGU9IjAxMiIgc2hvcnQ9IkRaQSIgbmFtZT0iQWxnZXJpYSIgLz4KKwk8Y291bnRyeSBjb2RlPSIwMTYiIHNob3J0PSJBU00iIG5hbWU9IkFtZXJpY2FuIFNhbW9hIi8+CisJPGNvdW50cnkgY29kZT0iMDIwIiBzaG9ydD0iQU5EIiBuYW1lPSJBbmRvcnJhIi8+CisJPGNvdW50cnkgY29kZT0iMDI0IiBzaG9ydD0iQUdPIiBuYW1lPSJBbmdvbGEiLz4KKwk8Y291bnRyeSBjb2RlPSI2NjAiIHNob3J0PSJBSUEiIG5hbWU9IkFuZ3VpbGxhIi8+CisJPGNvdW50cnkgY29kZT0iMDI4IiBzaG9ydD0iQVRHIiBuYW1lPSJBbnRpZ3VhIGFuZCBCYXJidWRhIi8+CisJPGNvdW50cnkgY29kZT0iMDMyIiBzaG9ydD0iQVJHIiBuYW1lPSJBcmdlbnRpbmEiLz4KKwk8Y291bnRyeSBjb2RlPSIwNTEiIHNob3J0PSJBUk0iIG5hbWU9IkFybWVuaWEiLz4KKwk8Y291bnRyeSBjb2RlPSI1MzMiIHNob3J0PSJBQlciIG5hbWU9IkFydWJhIi8+CisJPGNvdW50cnkgY29kZT0iMDM2IiBzaG9ydD0iQVVTIiBuYW1lPSJBdXN0cmFsaWEiLz4KKwk8Y291bnRyeSBjb2RlPSIwNDAiIHNob3J0PSJBVVQiIG5hbWU9IkF1c3RyaWEiLz4KKwk8Y291bnRyeSBjb2RlPSIwMzEiIHNob3J0PSJBWkUiIG5hbWU9IkF6ZXJiYWlqYW4iLz4KKwk8Y291bnRyeSBjb2RlPSIwNDQiIHNob3J0PSJCSFMiIG5hbWU9IkJhaGFtYXMiLz4KKwk8Y291bnRyeSBjb2RlPSIwNDgiIHNob3J0PSJCSFIiIG5hbWU9IkJhaHJhaW4iLz4KKwk8Y291bnRyeSBjb2RlPSIwNTAiIHNob3J0PSJCR0QiIG5hbWU9IkJhbmdsYWRlc2giLz4KKwk8Y291bnRyeSBjb2RlPSIwNTIiIHNob3J0PSJCUkIiIG5hbWU9IkJhcmJhZG9zIi8+CisJPGNvdW50cnkgY29kZT0iMTEyIiBzaG9ydD0iQkxSIiBuYW1lPSJCZWxhcnVzIi8+CisJPGNvdW50cnkgY29kZT0iMDU2IiBzaG9ydD0iQkVMIiBuYW1lPSJCZWxnaXVtIi8+CisJPGNvdW50cnkgY29kZT0iMDg0IiBzaG9ydD0iQkxaIiBuYW1lPSJCZWxpemUiLz4KKwk8Y291bnRyeSBjb2RlPSIyMDQiIHNob3J0PSJCRU4iIG5hbWU9IkJlbmluIi8+CisJPGNvdW50cnkgY29kZT0iMDYwIiBzaG9ydD0iQk1VIiBuYW1lPSJCZXJtdWRhIi8+CisJPGNvdW50cnkgY29kZT0iMDY0IiBzaG9ydD0iQlROIiBuYW1lPSJCaHV0YW4iLz4KKwk8Y291bnRyeSBjb2RlPSIwNjgiIHNob3J0PSJCT0wiIG5hbWU9IkJvbGl2aWEiLz4KKwk8Y291bnRyeSBjb2RlPSIwNzAiIHNob3J0PSJCSUgiIG5hbWU9IkJvc25pYSBhbmQgSGVyemVnb3ZpbmEiLz4KKwk8Y291bnRyeSBjb2RlPSIwNzIiIHNob3J0PSJCV0EiIG5hbWU9IkJvdHN3YW5hIi8+CisJPGNvdW50cnkgY29kZT0iMDc2IiBzaG9ydD0iQlJBIiBuYW1lPSJCcmF6aWwiLz4KKwk8Y291bnRyeSBjb2RlPSIwOTIiIHNob3J0PSJWR0IiIG5hbWU9IkJyaXRpc2ggVmlyZ2luIElzbGFuZHMiLz4KKwk8Y291bnRyeSBjb2RlPSIwOTYiIHNob3J0PSJCUk4iIG5hbWU9IkJydW5laSBEYXJ1c3NhbGFtIi8+CisJPGNvdW50cnkgY29kZT0iMTAwIiBzaG9ydD0iQkdSIiBuYW1lPSJCdWxnYXJpYSIvPgorCTxjb3VudHJ5IGNvZGU9Ijg1NCIgc2hvcnQ9IkJGQSIgbmFtZT0iQnVya2luYSBGYXNvIi8+CisJPGNvdW50cnkgY29kZT0iMTA4IiBzaG9ydD0iQkRJIiBuYW1lPSJCdXJ1bmRpIi8+CisJPGNvdW50cnkgY29kZT0iMTE2IiBzaG9ydD0iS0hNIiBuYW1lPSJDYW1ib2RpYSIvPgorCTxjb3VudHJ5IGNvZGU9IjEyMCIgc2hvcnQ9IkNNUiIgbmFtZT0iQ2FtZXJvb24iLz4KKwk8Y291bnRyeSBjb2RlPSIxMjQiIHNob3J0PSJDQU4iIG5hbWU9IkNhbmFkYSIvPgorCTxjb3VudHJ5IGNvZGU9IjEzMiIgc2hvcnQ9IkNQViIgbmFtZT0iQ2FwZSBWZXJkZSIvPgorCTxjb3VudHJ5IGNvZGU9IjEzNiIgc2hvcnQ9IkNZTSIgbmFtZT0iQ2F5bWFuIElzbGFuZHMiLz4KKwk8Y291bnRyeSBjb2RlPSIxNDAiIHNob3J0PSJDQUYiIG5hbWU9IkNlbnRyYWwgQWZyaWNhbiBSZXB1YmxpYyIvPgorCTxjb3VudHJ5IGNvZGU9IjE0OCIgc2hvcnQ9IlRDRCIgbmFtZT0iQ2hhZCIvPgorCTxjb3VudHJ5IGNvZGU9IjgzMCIgc2hvcnQ9IiIgbmFtZT0iQ2hhbm5lbCBJc2xhbmRzIi8+CisJPGNvdW50cnkgY29kZT0iMTUyIiBzaG9ydD0iQ0hMIiBuYW1lPSJDaGlsZSIvPgorCTxjb3VudHJ5IGNvZGU9IjE1NiIgc2hvcnQ9IkNITiIgbmFtZT0iQ2hpbmEiLz4KKwk8Y291bnRyeSBjb2RlPSIzNDQiIHNob3J0PSJIS0ciIG5hbWU9IkhvbmcgS29uZyBTcGVjaWFsIEFkbWluaXN0cmF0aXZlIFJlZ2lvbiBvZiBDaGluYSIvPgorCTxjb3VudHJ5IGNvZGU9IjQ0NiIgc2hvcnQ9Ik1BQyIgbmFtZT0iTWFjYW8gU3BlY2lhbCBBZG1pbmlzdHJhdGl2ZSBSZWdpb24gb2YgQ2hpbmEiLz4KKwk8Y291bnRyeSBjb2RlPSIxNzAiIHNob3J0PSJDT0wiIG5hbWU9IkNvbG9tYmlhIi8+CisJPGNvdW50cnkgY29kZT0iMTc0IiBzaG9ydD0iQ09NIiBuYW1lPSJDb21vcm9zIi8+CisJPGNvdW50cnkgY29kZT0iMTc4IiBzaG9ydD0iQ09HIiBuYW1lPSJDb25nbyIvPgorCTxjb3VudHJ5IGNvZGU9IjE4NCIgc2hvcnQ9IkNPSyIgbmFtZT0iQ29vayBJc2xhbmRzIi8+CisJPGNvdW50cnkgY29kZT0iMTg4IiBzaG9ydD0iQ1JJIiBuYW1lPSJDb3N0YSBSaWNhIi8+CisJPGNvdW50cnkgY29kZT0iMzg0IiBzaG9ydD0iQ0lWIiBuYW1lPSJDw7R0ZSBkJ0l2b2lyZSIvPgorCTxjb3VudHJ5IGNvZGU9IjE5MSIgc2hvcnQ9IkhSViIgbmFtZT0iQ3JvYXRpYSIvPgorCTxjb3VudHJ5IGNvZGU9IjE5MiIgc2hvcnQ9IkNVQiIgbmFtZT0iQ3ViYSIvPgorCTxjb3VudHJ5IGNvZGU9IjE5NiIgc2hvcnQ9IkNZUCIgbmFtZT0iQ3lwcnVzIi8+CisJPGNvdW50cnkgY29kZT0iMjAzIiBzaG9ydD0iQ1pFIiBuYW1lPSJDemVjaCBSZXB1YmxpYyIvPgorCTxjb3VudHJ5IGNvZGU9IjQwOCIgc2hvcnQ9IlBSSyIgbmFtZT0iRGVtb2NyYXRpYyBQZW9wbGUncyBSZXB1YmxpYyBvZiBLb3JlYSIvPgorCTxjb3VudHJ5IGNvZGU9IjE4MCIgc2hvcnQ9IkNPRCIgbmFtZT0iRGVtb2NyYXRpYyBSZXB1YmxpYyBvZiB0aGUgQ29uZ28iLz4KKwk8Y291bnRyeSBjb2RlPSIyMDgiIHNob3J0PSJETksiIG5hbWU9IkRlbm1hcmsiLz4KKwk8Y291bnRyeSBjb2RlPSIyNjIiIHNob3J0PSJESkkiIG5hbWU9IkRqaWJvdXRpIi8+CisJPGNvdW50cnkgY29kZT0iMjEyIiBzaG9ydD0iRE1BIiBuYW1lPSJEb21pbmljYSIvPgorCTxjb3VudHJ5IGNvZGU9IjIxNCIgc2hvcnQ9IkRPTSIgbmFtZT0iRG9taW5pY2FuIFJlcHVibGljIi8+CisJPGNvdW50cnkgY29kZT0iMjE4IiBzaG9ydD0iRUNVIiBuYW1lPSJFY3VhZG9yIi8+CisJPGNvdW50cnkgY29kZT0iODE4IiBzaG9ydD0iRUdZIiBuYW1lPSJFZ3lwdCIvPgorCTxjb3VudHJ5IGNvZGU9IjIyMiIgc2hvcnQ9IlNMViIgbmFtZT0iRWwgU2FsdmFkb3IiLz4KKwk8Y291bnRyeSBjb2RlPSIyMjYiIHNob3J0PSJHTlEiIG5hbWU9IkVxdWF0b3JpYWwgR3VpbmVhIi8+CisJPGNvdW50cnkgY29kZT0iMjMyIiBzaG9ydD0iRVJJIiBuYW1lPSJFcml0cmVhIi8+CisJPGNvdW50cnkgY29kZT0iMjMzIiBzaG9ydD0iRVNUIiBuYW1lPSJFc3RvbmlhIi8+CisJPGNvdW50cnkgY29kZT0iMjMxIiBzaG9ydD0iRVRIIiBuYW1lPSJFdGhpb3BpYSIvPgorCTxjb3VudHJ5IGNvZGU9IjIzNCIgc2hvcnQ9IkZSTyIgbmFtZT0iRmFlcm9lIElzbGFuZHMiLz4KKwk8Y291bnRyeSBjb2RlPSIyMzgiIHNob3J0PSJGTEsiIG5hbWU9IkZhbGtsYW5kIElzbGFuZHMgKE1hbHZpbmFzKSIvPgorCTxjb3VudHJ5IGNvZGU9IjI0MiIgc2hvcnQ9IkZKSSIgbmFtZT0iRmlqaSIvPgorCTxjb3VudHJ5IGNvZGU9IjI0NiIgc2hvcnQ9IkZJTiIgbmFtZT0iRmlubGFuZCIvPgorCTxjb3VudHJ5IGNvZGU9IjI1MCIgc2hvcnQ9IkZSQSIgbmFtZT0iRnJhbmNlIi8+CisJPGNvdW50cnkgY29kZT0iMjU0IiBzaG9ydD0iR1VGIiBuYW1lPSJGcmVuY2ggR3VpYW5hIi8+CisJPGNvdW50cnkgY29kZT0iMjU4IiBzaG9ydD0iUFlGIiBuYW1lPSJGcmVuY2ggUG9seW5lc2lhIi8+CisJPGNvdW50cnkgY29kZT0iMjY2IiBzaG9ydD0iR0FCIiBuYW1lPSJHYWJvbiIvPgorCTxjb3VudHJ5IGNvZGU9IjI3MCIgc2hvcnQ9IkdNQiIgbmFtZT0iR2FtYmlhIi8+CisJPGNvdW50cnkgY29kZT0iMjY4IiBzaG9ydD0iR0VPIiBuYW1lPSJHZW9yZ2lhIi8+CisJPGNvdW50cnkgY29kZT0iMjc2IiBzaG9ydD0iREVVIiBuYW1lPSJHZXJtYW55Ii8+CisJPGNvdW50cnkgY29kZT0iMjg4IiBzaG9ydD0iR0hBIiBuYW1lPSJHaGFuYSIvPgorCTxjb3VudHJ5IGNvZGU9IjI5MiIgc2hvcnQ9IkdJQiIgbmFtZT0iR2licmFsdGFyIi8+CisJPGNvdW50cnkgY29kZT0iMzAwIiBzaG9ydD0iR1JDIiBuYW1lPSJHcmVlY2UiLz4KKwk8Y291bnRyeSBjb2RlPSIzMDQiIHNob3J0PSJHUkwiIG5hbWU9IkdyZWVubGFuZCIvPgorCTxjb3VudHJ5IGNvZGU9IjMwOCIgc2hvcnQ9IkdSRCIgbmFtZT0iR3JlbmFkYSIvPgorCTxjb3VudHJ5IGNvZGU9IjMxMiIgc2hvcnQ9IkdMUCIgbmFtZT0iR3VhZGVsb3VwZSIvPgorCTxjb3VudHJ5IGNvZGU9IjMxNiIgc2hvcnQ9IkdVTSIgbmFtZT0iR3VhbSIvPgorCTxjb3VudHJ5IGNvZGU9IjMyMCIgc2hvcnQ9IkdUTSIgbmFtZT0iR3VhdGVtYWxhIi8+CisJPGNvdW50cnkgY29kZT0iODMxIiBzaG9ydD0iQ0dZIiBuYW1lPSJHdWVybnNleSIvPgorCTxjb3VudHJ5IGNvZGU9IjMyNCIgc2hvcnQ9IkdJTiIgbmFtZT0iR3VpbmVhIi8+CisJPGNvdW50cnkgY29kZT0iNjI0IiBzaG9ydD0iR05CIiBuYW1lPSJHdWluZWEtQmlzc2F1Ii8+CisJPGNvdW50cnkgY29kZT0iMzI4IiBzaG9ydD0iR1VZIiBuYW1lPSJHdXlhbmEiLz4KKwk8Y291bnRyeSBjb2RlPSIzMzIiIHNob3J0PSJIVEkiIG5hbWU9IkhhaXRpIi8+CisJPGNvdW50cnkgY29kZT0iMzM2IiBzaG9ydD0iVkFUIiBuYW1lPSJIb2x5IFNlZSIvPgorCTxjb3VudHJ5IGNvZGU9IjM0MCIgc2hvcnQ9IkhORCIgbmFtZT0iSG9uZHVyYXMiLz4KKwk8Y291bnRyeSBjb2RlPSIzNDgiIHNob3J0PSJIVU4iIG5hbWU9Ikh1bmdhcnkiLz4KKwk8Y291bnRyeSBjb2RlPSIzNTIiIHNob3J0PSJJU0wiIG5hbWU9IkljZWxhbmQiLz4KKwk8Y291bnRyeSBjb2RlPSIzNTYiIHNob3J0PSJJTkQiIG5hbWU9IkluZGlhIi8+CisJPGNvdW50cnkgY29kZT0iMzYwIiBzaG9ydD0iSUROIiBuYW1lPSJJbmRvbmVzaWEiLz4KKwk8Y291bnRyeSBjb2RlPSIzNjQiIHNob3J0PSJJUk4iIG5hbWU9IklyYW4sIElzbGFtaWMgUmVwdWJsaWMgb2YiLz4KKwk8Y291bnRyeSBjb2RlPSIzNjgiIHNob3J0PSJJUlEiIG5hbWU9IklyYXEiLz4KKwk8Y291bnRyeSBjb2RlPSIzNzIiIHNob3J0PSJJUkwiIG5hbWU9IklyZWxhbmQiLz4KKwk8Y291bnRyeSBjb2RlPSI4MzMiIHNob3J0PSJJTU4iIG5hbWU9IklzbGUgb2YgTWFuIi8+CisJPGNvdW50cnkgY29kZT0iMzc2IiBzaG9ydD0iSVNSIiBuYW1lPSJJc3JhZWwiLz4KKwk8Y291bnRyeSBjb2RlPSIzODAiIHNob3J0PSJJVEEiIG5hbWU9Ikl0YWx5Ii8+CisJPGNvdW50cnkgY29kZT0iMzg4IiBzaG9ydD0iSkFNIiBuYW1lPSJKYW1haWNhIi8+CisJPGNvdW50cnkgY29kZT0iMzkyIiBzaG9ydD0iSlBOIiBuYW1lPSJKYXBhbiIvPgorCTxjb3VudHJ5IGNvZGU9IjgzMiIgc2hvcnQ9IkpFWSIgbmFtZT0iSmVyc2V5Ii8+CisJPGNvdW50cnkgY29kZT0iNDAwIiBzaG9ydD0iSk9SIiBuYW1lPSJKb3JkYW4iLz4KKwk8Y291bnRyeSBjb2RlPSIzOTgiIHNob3J0PSJLQVoiIG5hbWU9IkthemFraHN0YW4iLz4KKwk8Y291bnRyeSBjb2RlPSI0MDQiIHNob3J0PSJLRU4iIG5hbWU9IktlbnlhIi8+CisJPGNvdW50cnkgY29kZT0iMjk2IiBzaG9ydD0iS0lSIiBuYW1lPSJLaXJpYmF0aSIvPgorCTxjb3VudHJ5IGNvZGU9IjQxNCIgc2hvcnQ9IktXVCIgbmFtZT0iS3V3YWl0Ii8+CisJPGNvdW50cnkgY29kZT0iNDE3IiBzaG9ydD0iS0daIiBuYW1lPSJLeXJneXpzdGFuIi8+CisJPGNvdW50cnkgY29kZT0iNDE4IiBzaG9ydD0iTEFPIiBuYW1lPSJMYW8gUGVvcGxlJ3MgRGVtb2NyYXRpYyBSZXB1YmxpYyIvPgorCTxjb3VudHJ5IGNvZGU9IjQyOCIgc2hvcnQ9IkxWQSIgbmFtZT0iTGF0dmlhIi8+CisJPGNvdW50cnkgY29kZT0iNDIyIiBzaG9ydD0iTEJOIiBuYW1lPSJMZWJhbm9uIi8+CisJPGNvdW50cnkgY29kZT0iNDI2IiBzaG9ydD0iTFNPIiBuYW1lPSJMZXNvdGhvIi8+CisJPGNvdW50cnkgY29kZT0iNDMwIiBzaG9ydD0iTEJSIiBuYW1lPSJMaWJlcmlhIi8+CisJPGNvdW50cnkgY29kZT0iNDM0IiBzaG9ydD0iTEJZIiBuYW1lPSJMaWJ5YW4gQXJhYiBKYW1haGlyaXlhIi8+CisJPGNvdW50cnkgY29kZT0iNDM4IiBzaG9ydD0iTElFIiBuYW1lPSJMaWVjaHRlbnN0ZWluIi8+CisJPGNvdW50cnkgY29kZT0iNDQwIiBzaG9ydD0iTFRVIiBuYW1lPSJMaXRodWFuaWEiLz4KKwk8Y291bnRyeSBjb2RlPSI0NDIiIHNob3J0PSJMVVgiIG5hbWU9Ikx1eGVtYm91cmciLz4KKwk8Y291bnRyeSBjb2RlPSI0NTAiIHNob3J0PSJNREciIG5hbWU9Ik1hZGFnYXNjYXIiLz4KKwk8Y291bnRyeSBjb2RlPSI0NTQiIHNob3J0PSJNV0kiIG5hbWU9Ik1hbGF3aSIvPgorCTxjb3VudHJ5IGNvZGU9IjQ1OCIgc2hvcnQ9Ik1ZUyIgbmFtZT0iTWFsYXlzaWEiLz4KKwk8Y291bnRyeSBjb2RlPSI0NjIiIHNob3J0PSJNRFYiIG5hbWU9Ik1hbGRpdmVzIi8+CisJPGNvdW50cnkgY29kZT0iNDY2IiBzaG9ydD0iTUxJIiBuYW1lPSJNYWxpIi8+CisJPGNvdW50cnkgY29kZT0iNDcwIiBzaG9ydD0iTUxUIiBuYW1lPSJNYWx0YSIvPgorCTxjb3VudHJ5IGNvZGU9IjU4NCIgc2hvcnQ9Ik1ITCIgbmFtZT0iTWFyc2hhbGwgSXNsYW5kcyIvPgorCTxjb3VudHJ5IGNvZGU9IjQ3NCIgc2hvcnQ9Ik1UUSIgbmFtZT0iTWFydGluaXF1ZSIvPgorCTxjb3VudHJ5IGNvZGU9IjQ3OCIgc2hvcnQ9Ik1SVCIgbmFtZT0iTWF1cml0YW5pYSIvPgorCTxjb3VudHJ5IGNvZGU9IjQ4MCIgc2hvcnQ9Ik1VUyIgbmFtZT0iTWF1cml0aXVzIi8+CisJPGNvdW50cnkgY29kZT0iMTc1IiBzaG9ydD0iTVlUIiBuYW1lPSJNYXlvdHRlIi8+CisJPGNvdW50cnkgY29kZT0iNDg0IiBzaG9ydD0iTUVYIiBuYW1lPSJNZXhpY28iLz4KKwk8Y291bnRyeSBjb2RlPSI1ODMiIHNob3J0PSJGU00iIG5hbWU9Ik1pY3JvbmVzaWEsIEZlZGVyYXRlZCBTdGF0ZXMgb2YiLz4KKwk8Y291bnRyeSBjb2RlPSI0OTIiIHNob3J0PSJNQ08iIG5hbWU9Ik1vbmFjbyIvPgorCTxjb3VudHJ5IGNvZGU9IjQ5NiIgc2hvcnQ9Ik1ORyIgbmFtZT0iTW9uZ29saWEiLz4KKwk8Y291bnRyeSBjb2RlPSI0OTkiIHNob3J0PSJNTkUiIG5hbWU9Ik1vbnRlbmVncm8iLz4KKwk8Y291bnRyeSBjb2RlPSI1MDAiIHNob3J0PSJNU1IiIG5hbWU9Ik1vbnRzZXJyYXQiLz4KKwk8Y291bnRyeSBjb2RlPSI1MDQiIHNob3J0PSJNQVIiIG5hbWU9Ik1vcm9jY28iLz4KKwk8Y291bnRyeSBjb2RlPSI1MDgiIHNob3J0PSJNT1oiIG5hbWU9Ik1vemFtYmlxdWUiLz4KKwk8Y291bnRyeSBjb2RlPSIxMDQiIHNob3J0PSJNTVIiIG5hbWU9Ik15YW5tYXIiLz4KKwk8Y291bnRyeSBjb2RlPSI1MTYiIHNob3J0PSJOQU0iIG5hbWU9Ik5hbWliaWEiLz4KKwk8Y291bnRyeSBjb2RlPSI1MjAiIHNob3J0PSJOUlUiIG5hbWU9Ik5hdXJ1Ii8+CisJPGNvdW50cnkgY29kZT0iNTI0IiBzaG9ydD0iTlBMIiBuYW1lPSJOZXBhbCIvPgorCTxjb3VudHJ5IGNvZGU9IjUyOCIgc2hvcnQ9Ik5MRCIgbmFtZT0iTmV0aGVybGFuZHMiLz4KKwk8Y291bnRyeSBjb2RlPSI1MzAiIHNob3J0PSJBTlQiIG5hbWU9Ik5ldGhlcmxhbmRzIEFudGlsbGVzIi8+CisJPGNvdW50cnkgY29kZT0iNTQwIiBzaG9ydD0iTkNMIiBuYW1lPSJOZXcgQ2FsZWRvbmlhIi8+CisJPGNvdW50cnkgY29kZT0iNTU0IiBzaG9ydD0iTlpMIiBuYW1lPSJOZXcgWmVhbGFuZCIvPgorCTxjb3VudHJ5IGNvZGU9IjU1OCIgc2hvcnQ9Ik5JQyIgbmFtZT0iTmljYXJhZ3VhIi8+CisJPGNvdW50cnkgY29kZT0iNTYyIiBzaG9ydD0iTkVSIiBuYW1lPSJOaWdlciIvPgorCTxjb3VudHJ5IGNvZGU9IjU2NiIgc2hvcnQ9Ik5HQSIgbmFtZT0iTmlnZXJpYSIvPgorCTxjb3VudHJ5IGNvZGU9IjU3MCIgc2hvcnQ9Ik5JVSIgbmFtZT0iTml1ZSIvPgorCTxjb3VudHJ5IGNvZGU9IjU3NCIgc2hvcnQ9Ik5GSyIgbmFtZT0iTm9yZm9sayBJc2xhbmQiLz4KKwk8Y291bnRyeSBjb2RlPSI1ODAiIHNob3J0PSJNTlAiIG5hbWU9Ik5vcnRoZXJuIE1hcmlhbmEgSXNsYW5kcyIvPgorCTxjb3VudHJ5IGNvZGU9IjU3OCIgc2hvcnQ9Ik5PUiIgbmFtZT0iTm9yd2F5Ii8+CisJPGNvdW50cnkgY29kZT0iMjc1IiBzaG9ydD0iUFNFIiBuYW1lPSJPY2N1cGllZCBQYWxlc3RpbmlhbiBUZXJyaXRvcnkiLz4KKwk8Y291bnRyeSBjb2RlPSI1MTIiIHNob3J0PSJPTU4iIG5hbWU9Ik9tYW4iLz4KKwk8Y291bnRyeSBjb2RlPSI1ODYiIHNob3J0PSJQQUsiIG5hbWU9IlBha2lzdGFuIi8+CisJPGNvdW50cnkgY29kZT0iNTg1IiBzaG9ydD0iUExXIiBuYW1lPSJQYWxhdSIvPgorCTxjb3VudHJ5IGNvZGU9IjU5MSIgc2hvcnQ9IlBBTiIgbmFtZT0iUGFuYW1hIi8+CisJPGNvdW50cnkgY29kZT0iNTk4IiBzaG9ydD0iUE5HIiBuYW1lPSJQYXB1YSBOZXcgR3VpbmVhIi8+CisJPGNvdW50cnkgY29kZT0iNjAwIiBzaG9ydD0iUFJZIiBuYW1lPSJQYXJhZ3VheSIvPgorCTxjb3VudHJ5IGNvZGU9IjYwNCIgc2hvcnQ9IlBFUiIgbmFtZT0iUGVydSIvPgorCTxjb3VudHJ5IGNvZGU9IjYwOCIgc2hvcnQ9IlBITCIgbmFtZT0iUGhpbGlwcGluZXMiLz4KKwk8Y291bnRyeSBjb2RlPSI2MTIiIHNob3J0PSJQQ04iIG5hbWU9IlBpdGNhaXJuIi8+CisJPGNvdW50cnkgY29kZT0iNjE2IiBzaG9ydD0iUE9MIiBuYW1lPSJQb2xhbmQiLz4KKwk8Y291bnRyeSBjb2RlPSI2MjAiIHNob3J0PSJQUlQiIG5hbWU9IlBvcnR1Z2FsIi8+CisJPGNvdW50cnkgY29kZT0iNjMwIiBzaG9ydD0iUFJJIiBuYW1lPSJQdWVydG8gUmljbyIvPgorCTxjb3VudHJ5IGNvZGU9IjYzNCIgc2hvcnQ9IlFBVCIgbmFtZT0iUWF0YXIiLz4KKwk8Y291bnRyeSBjb2RlPSI0MTAiIHNob3J0PSJLT1IiIG5hbWU9IlJlcHVibGljIG9mIEtvcmVhIi8+CisJPGNvdW50cnkgY29kZT0iNDk4IiBzaG9ydD0iTURBIiBuYW1lPSJSZXB1YmxpYyBvZiBNb2xkb3ZhIi8+CisJPGNvdW50cnkgY29kZT0iNjM4IiBzaG9ydD0iUkVVIiBuYW1lPSJSw6l1bmlvbiIvPgorCTxjb3VudHJ5IGNvZGU9IjY0MiIgc2hvcnQ9IlJPVSIgbmFtZT0iUm9tYW5pYSIvPgorCTxjb3VudHJ5IGNvZGU9IjY0MyIgc2hvcnQ9IlJVUyIgbmFtZT0iUnVzc2lhbiBGZWRlcmF0aW9uIi8+CisJPGNvdW50cnkgY29kZT0iNjQ2IiBzaG9ydD0iUldBIiBuYW1lPSJSd2FuZGEiLz4KKwk8Y291bnRyeSBjb2RlPSI2NTQiIHNob3J0PSJTSE4iIG5hbWU9IlNhaW50IEhlbGVuYSIvPgorCTxjb3VudHJ5IGNvZGU9IjY1OSIgc2hvcnQ9IktOQSIgbmFtZT0iU2FpbnQgS2l0dHMgYW5kIE5ldmlzIi8+CisJPGNvdW50cnkgY29kZT0iNjYyIiBzaG9ydD0iTENBIiBuYW1lPSJTYWludCBMdWNpYSIvPgorCTxjb3VudHJ5IGNvZGU9IjY2NiIgc2hvcnQ9IlNQTSIgbmFtZT0iU2FpbnQgUGllcnJlIGFuZCBNaXF1ZWxvbiIvPgorCTxjb3VudHJ5IGNvZGU9IjY3MCIgc2hvcnQ9IlZDVCIgbmFtZT0iU2FpbnQgVmluY2VudCBhbmQgdGhlIEdyZW5hZGluZXMiLz4KKwk8Y291bnRyeSBjb2RlPSI4ODIiIHNob3J0PSJXU00iIG5hbWU9IlNhbW9hIi8+CisJPGNvdW50cnkgY29kZT0iNjc0IiBzaG9ydD0iU01SIiBuYW1lPSJTYW4gTWFyaW5vIi8+CisJPGNvdW50cnkgY29kZT0iNjc4IiBzaG9ydD0iU1RQIiBuYW1lPSJTYW8gVG9tZSBhbmQgUHJpbmNpcGUiLz4KKwk8Y291bnRyeSBjb2RlPSI2ODIiIHNob3J0PSJTQVUiIG5hbWU9IlNhdWRpIEFyYWJpYSIvPgorCTxjb3VudHJ5IGNvZGU9IjY4NiIgc2hvcnQ9IlNFTiIgbmFtZT0iU2VuZWdhbCIvPgorCTxjb3VudHJ5IGNvZGU9IjY4OCIgc2hvcnQ9IlNSQiIgbmFtZT0iU2VyYmlhIi8+CisJPGNvdW50cnkgY29kZT0iNjkwIiBzaG9ydD0iU1lDIiBuYW1lPSJTZXljaGVsbGVzIi8+CisJPGNvdW50cnkgY29kZT0iNjk0IiBzaG9ydD0iU0xFIiBuYW1lPSJTaWVycmEgTGVvbmUiLz4KKwk8Y291bnRyeSBjb2RlPSI3MDIiIHNob3J0PSJTR1AiIG5hbWU9IlNpbmdhcG9yZSIvPgorCTxjb3VudHJ5IGNvZGU9IjcwMyIgc2hvcnQ9IlNWSyIgbmFtZT0iU2xvdmFraWEiLz4KKwk8Y291bnRyeSBjb2RlPSI3MDUiIHNob3J0PSJTVk4iIG5hbWU9IlNsb3ZlbmlhIi8+CisJPGNvdW50cnkgY29kZT0iMDkwIiBzaG9ydD0iU0xCIiBuYW1lPSJTb2xvbW9uIElzbGFuZHMiLz4KKwk8Y291bnRyeSBjb2RlPSI3MDYiIHNob3J0PSJTT00iIG5hbWU9IlNvbWFsaWEiLz4KKwk8Y291bnRyeSBjb2RlPSI3MTAiIHNob3J0PSJaQUYiIG5hbWU9IlNvdXRoIEFmcmljYSIvPgorCTxjb3VudHJ5IGNvZGU9IjcyNCIgc2hvcnQ9IkVTUCIgbmFtZT0iU3BhaW4iLz4KKwk8Y291bnRyeSBjb2RlPSIxNDQiIHNob3J0PSJMS0EiIG5hbWU9IlNyaSBMYW5rYSIvPgorCTxjb3VudHJ5IGNvZGU9IjczNiIgc2hvcnQ9IlNETiIgbmFtZT0iU3VkYW4iLz4KKwk8Y291bnRyeSBjb2RlPSI3NDAiIHNob3J0PSJTVVIiIG5hbWU9IlN1cmluYW1lIi8+CisJPGNvdW50cnkgY29kZT0iNzQ0IiBzaG9ydD0iU0pNIiBuYW1lPSJTdmFsYmFyZCBhbmQgSmFuIE1heWVuIElzbGFuZHMiLz4KKwk8Y291bnRyeSBjb2RlPSI3NDgiIHNob3J0PSJTV1oiIG5hbWU9IlN3YXppbGFuZCIvPgorCTxjb3VudHJ5IGNvZGU9Ijc1MiIgc2hvcnQ9IlNXRSIgbmFtZT0iU3dlZGVuIi8+CisJPGNvdW50cnkgY29kZT0iNzU2IiBzaG9ydD0iQ0hFIiBuYW1lPSJTd2l0emVybGFuZCIvPgorCTxjb3VudHJ5IGNvZGU9Ijc2MCIgc2hvcnQ9IlNZUiIgbmFtZT0iU3lyaWFuIEFyYWIgUmVwdWJsaWMiLz4KKwk8Y291bnRyeSBjb2RlPSIxNTciIHNob3J0PSJST0MiIG5hbWU9IlRhaXdhbiwgUmVwdWJsaWMgb2YgQ2hpbmEiLz4KKwk8Y291bnRyeSBjb2RlPSI3NjIiIHNob3J0PSJUSksiIG5hbWU9IlRhamlraXN0YW4iLz4KKwk8Y291bnRyeSBjb2RlPSI3NjQiIHNob3J0PSJUSEEiIG5hbWU9IlRoYWlsYW5kIi8+CisJPGNvdW50cnkgY29kZT0iODA3IiBzaG9ydD0iTUtEIiBuYW1lPSJUaGUgZm9ybWVyIFl1Z29zbGF2IFJlcHVibGljIG9mIE1hY2Vkb25pYSIvPgorCTxjb3VudHJ5IGNvZGU9IjYyNiIgc2hvcnQ9IlRMUyIgbmFtZT0iVGltb3ItTGVzdGUiLz4KKwk8Y291bnRyeSBjb2RlPSI3NjgiIHNob3J0PSJUR08iIG5hbWU9IlRvZ28iLz4KKwk8Y291bnRyeSBjb2RlPSI3NzIiIHNob3J0PSJUS0wiIG5hbWU9IlRva2VsYXUiLz4KKwk8Y291bnRyeSBjb2RlPSI3NzYiIHNob3J0PSJUT04iIG5hbWU9IlRvbmdhIi8+CisJPGNvdW50cnkgY29kZT0iNzgwIiBzaG9ydD0iVFRPIiBuYW1lPSJUcmluaWRhZCBhbmQgVG9iYWdvIi8+CisJPGNvdW50cnkgY29kZT0iNzg4IiBzaG9ydD0iVFVOIiBuYW1lPSJUdW5pc2lhIi8+CisJPGNvdW50cnkgY29kZT0iNzkyIiBzaG9ydD0iVFVSIiBuYW1lPSJUdXJrZXkiLz4KKwk8Y291bnRyeSBjb2RlPSI3OTUiIHNob3J0PSJUS00iIG5hbWU9IlR1cmttZW5pc3RhbiIvPgorCTxjb3VudHJ5IGNvZGU9Ijc5NiIgc2hvcnQ9IlRDQSIgbmFtZT0iVHVya3MgYW5kIENhaWNvcyBJc2xhbmRzIi8+CisJPGNvdW50cnkgY29kZT0iNzk4IiBzaG9ydD0iVFVWIiBuYW1lPSJUdXZhbHUiLz4KKwk8Y291bnRyeSBjb2RlPSI4MDAiIHNob3J0PSJVR0EiIG5hbWU9IlVnYW5kYSIvPgorCTxjb3VudHJ5IGNvZGU9IjgwNCIgc2hvcnQ9IlVLUiIgbmFtZT0iVWtyYWluZSIvPgorCTxjb3VudHJ5IGNvZGU9Ijc4NCIgc2hvcnQ9IkFSRSIgbmFtZT0iVW5pdGVkIEFyYWIgRW1pcmF0ZXMiLz4KKwk8Y291bnRyeSBjb2RlPSI4MjYiIHNob3J0PSJHQlIiIG5hbWU9IlVuaXRlZCBLaW5nZG9tIG9mIEdyZWF0IEJyaXRhaW4gYW5kIE5vcnRoZXJuIElyZWxhbmQiLz4KKwk8Y291bnRyeSBjb2RlPSI4MzQiIHNob3J0PSJUWkEiIG5hbWU9IlVuaXRlZCBSZXB1YmxpYyBvZiBUYW56YW5pYSIvPgorCTxjb3VudHJ5IGNvZGU9Ijg0MCIgc2hvcnQ9IlVTQSIgbmFtZT0iVW5pdGVkIFN0YXRlcyBvZiBBbWVyaWNhIi8+CisJPGNvdW50cnkgY29kZT0iODUwIiBzaG9ydD0iVklSIiBuYW1lPSJVbml0ZWQgU3RhdGVzIFZpcmdpbiBJc2xhbmRzIi8+CisJPGNvdW50cnkgY29kZT0iODU4IiBzaG9ydD0iVVJZIiBuYW1lPSJVcnVndWF5Ii8+CisJPGNvdW50cnkgY29kZT0iODYwIiBzaG9ydD0iVVpCIiBuYW1lPSJVemJla2lzdGFuIi8+CisJPGNvdW50cnkgY29kZT0iNTQ4IiBzaG9ydD0iVlVUIiBuYW1lPSJWYW51YXR1Ii8+CisJPGNvdW50cnkgY29kZT0iODYyIiBzaG9ydD0iVkVOIiBuYW1lPSJWZW5lenVlbGEgKEJvbGl2YXJpYW4gUmVwdWJsaWMgb2YpIi8+CisJPGNvdW50cnkgY29kZT0iNzA0IiBzaG9ydD0iVk5NIiBuYW1lPSJWaWV0IE5hbSIvPgorCTxjb3VudHJ5IGNvZGU9Ijg3NiIgc2hvcnQ9IldMRiIgbmFtZT0iV2FsbGlzIGFuZCBGdXR1bmEgSXNsYW5kcyIvPgorCTxjb3VudHJ5IGNvZGU9IjczMiIgc2hvcnQ9IkVTSCIgbmFtZT0iV2VzdGVybiBTYWhhcmEiLz4KKwk8Y291bnRyeSBjb2RlPSI4ODciIHNob3J0PSJZRU0iIG5hbWU9IlllbWVuIi8+CisJPGNvdW50cnkgY29kZT0iODk0IiBzaG9ydD0iWk1CIiBuYW1lPSJaYW1iaWEiLz4KKwk8Y291bnRyeSBjb2RlPSI3MTYiIHNob3J0PSJaV0UiIG5hbWU9IlppbWJhYndlIi8+Cis8L2NvdW50cmllcz4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL2NvdW50cmllcy54c2QgYi9XZWJDb250ZW50L2xhbmd1YWdlcy9jb3VudHJpZXMueHNkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4YjMwMTcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L2xhbmd1YWdlcy9jb3VudHJpZXMueHNkCkBAIC0wLDAgKzEsMzYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPCEtLQ0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAgDQorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICAgIAkgIA0KKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICB1bmRlciB0aGUgTGljZW5zZS4NCisgIA0KKy0tPg0KKzx4czpzY2hlbWEgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCI+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJjb3VudHJpZXMiPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOnNlcXVlbmNlPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY291bnRyeSIvPg0KKyAgICAgIDwveHM6c2VxdWVuY2U+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJjb3VudHJ5Ij4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29kZSIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6aW50ZWdlciIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdXNlPSJyZXF1aXJlZCIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2hvcnQiIHVzZT0icmVxdWlyZWQiLz4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCis8L3hzOnNjaGVtYT4NCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L2xhbmd1YWdlcy9jemVjaC54bWwgYi9XZWJDb250ZW50L2xhbmd1YWdlcy9jemVjaC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmE1NDA5OAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL2N6ZWNoLnhtbApAQCAtMCwwICsxLDQ2NTIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+CisKKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCisKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK1RoaXMgRmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBieSB0aGUgTGFuZ3VhZ2VFZGl0b3IgCit0byBhZGQgbmV3IExhbmd1YWdlcyBvciBtb2RpZnkvY3VzdG9taXplIGl0IHVzZSB0aGUgTGFuZ3VhZ2VFZGl0b3IgCitzZWUgaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnL0xhbmd1YWdlRWRpdG9yLmh0bWwgZm9yIERldGFpbHMgCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy0tPgorPGxhbmd1YWdlIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOm5vTmFtZXNwYWNlU2NoZW1hTG9jYXRpb249Imxhbmd1YWdlLnhzZCI+CisgIDxzdHJpbmcgaWQ9IjEiIG5hbWU9ImNvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT5Lb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIiIG5hbWU9Im1lZXRpbmciPgorICAgIDx2YWx1ZT5TY2jFr3prYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzIiBuYW1lPSJjbGFzc3Jvb20iPgorICAgIDx2YWx1ZT5Qb3NsdWNow6FybmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNCIgbmFtZT0ic2V0dGluZ3MiPgorICAgIDx2YWx1ZT5OYXN0YXZlbsOtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUiIG5hbWU9ImJlbnV0emVyIj4KKyAgICA8dmFsdWU+UHJvZmlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYiIG5hbWU9ImFkbWluIj4KKyAgICA8dmFsdWU+QWRtaW5pc3RyYWNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjciIG5hbWU9InN0b3AiPgorICAgIDx2YWx1ZT5TdG9wPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPlrDoXpuYW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOSIgbmFtZT0ibm9maWxlIj4KKyAgICA8dmFsdWU+xb3DoWRuw70gc291Ym9yIG5lbsOtIGRvc3R1cG7DvTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMCIgbmFtZT0icmVjb3JkYnl0ZWFjaGVyIj4KKyAgICA8dmFsdWU+WsOhem5hbSB1xI1pdGVsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMSIgbmFtZT0iY29ubmVjdGVkdXNlcnMiPgorICAgIDx2YWx1ZT5QxZlpcG9qZW7DrSB1xb5pdmF0ZWzDqTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIiIG5hbWU9InN0YXJ0Y29uZiI+CisgICAgPHZhbHVlPlN0YXJ0IGtvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMiIG5hbWU9Im15bmFtZSI+CisgICAgPHZhbHVlPk3DqSBqbcOpbm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQiIG5hbWU9InZpZGVvY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPlZpZGVvS29uZmVyZW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNSIgbmFtZT0iaW1wb3J0Ij4KKyAgICA8dmFsdWU+TmFocmVqIHNvdWJvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNiIgbmFtZT0icmVmcmVzaGZpbGVzIj4KKyAgICA8dmFsdWU+QWt0dWFsaXp1ajwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNyIgbmFtZT0idG9tYWluZmlsZSI+CisgICAgPHZhbHVlPk3Fr2ogc291Ym9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4IiBuYW1lPSJuZXdwb2xsIj4KKyAgICA8dmFsdWU+Tm92w6EgYW5rZXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5IiBuYW1lPSJuZXdwb2xsaGVhZGVyIj4KKyAgICA8dmFsdWU+Tm92w6EgYW5rZXRhIHBybyBrb25mZXJlbmNpLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMCIgbmFtZT0icXVlc3Rpb24iPgorICAgIDx2YWx1ZT5PdMOhemthOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMSIgbmFtZT0icG9sbHR5cGUiPgorICAgIDx2YWx1ZT5UeXAgYW5rZXR5OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMiIgbmFtZT0iY3JlYXRlIj4KKyAgICA8dmFsdWU+Vnl0dm/FmTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMyIgbmFtZT0iaW5mb21lc3NhZ2UiPgorICAgIDx2YWx1ZT5JbmZvOiBWxaFpY2huaSBwxZlpcG9qZW7DrSB1xb5pdmF0ZWzDqSBvYmRyxb5lbGkgenByw6F2dSBvIG5vdsOpIGFua2V0xJsuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0IiBuYW1lPSJjcmVhdHBvbGwiPgorICAgIDx2YWx1ZT5WeXR2b8WZIGFua2V0dTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNSIgbmFtZT0iY2FuY2VsIj4KKyAgICA8dmFsdWU+WnJ1xaFpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNiIgbmFtZT0ieWVzbm8iPgorICAgIDx2YWx1ZT5Bbm8vTmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjciIG5hbWU9Im51bWVyaWMiPgorICAgIDx2YWx1ZT7EjMOtc2xhIDEtMTA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgiIG5hbWU9InBvbGwiPgorICAgIDx2YWx1ZT5BbmtldGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkiIG5hbWU9Im1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Qcm8gdnl0dm/FmWVuw60gb3TDoXpreSBtdXPDrXRlIGLDvXQgbW9kZXLDoXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMCIgbmFtZT0idm90ZSI+CisgICAgPHZhbHVlPlZhxaFlIGhsYXNvdsOhbsOtIGJ5bG8gdWxvxb5lbm8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxIiBuYW1lPSJhbHJlYWR5dm90ZWQiPgorICAgIDx2YWx1ZT5WIHTDqXRvIGFua2V0xJsganN0ZSBqacW+IGhsYXNvdmFsLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMiIgbmFtZT0idm90aW5nIj4KKyAgICA8dmFsdWU+SGxhc3VqICE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMiIG5hbWU9ImFuc3dlciI+CisgICAgPHZhbHVlPlZhxaFlIG90cG92xJvEjzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQiIG5hbWU9InllcyI+CisgICAgPHZhbHVlPkFubzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNSIgbmFtZT0ibm8iPgorICAgIDx2YWx1ZT5OZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNiIgbmFtZT0icXVlc3Rpb253YW50Ij4KKyAgICA8dmFsdWU+d2lsbCB3aXNzZW46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3IiBuYW1lPSJwb2xscmVzdWx0cyI+CisgICAgPHZhbHVlPlbDvXNsZWRlayBhbmtldHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgiIG5hbWU9InF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+T3TDoXprYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkiIG5hbWU9InJlc3VsdHMiPgorICAgIDx2YWx1ZT5Ww71zbGVkZWs6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwIiBuYW1lPSJhbnN3ZXJzIj4KKyAgICA8dmFsdWU+T2Rwb3bEm8SPOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MSIgbmFtZT0ibm9wb2xsIj4KKyAgICA8dmFsdWU+TmVqc291IGRvc3R1cG7DqSDFvsOhZG7DqSBhbmtldHkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyIiBuYW1lPSJ2b3RpbmdzIj4KKyAgICA8dmFsdWU+SGxhc3VqITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MyIgbmFtZT0ibWVldGluZyI+CisgICAgPHZhbHVlPlNjaMWvemthIChtYXggNCBzZWTEm27DrSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQiIG5hbWU9ImNvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT5Lb25mZXJlbmNlIChtYXggNTAgc2VkxJtuw60pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1IiBuYW1lPSJ0eXBlIj4KKyAgICA8dmFsdWU+VHlwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2IiBuYW1lPSJyZW1haW5pbmdzZWF0cyI+CisgICAgPHZhbHVlPkppbsOpIHNlZMSbbsOtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3IiBuYW1lPSJhbHJlYWR5Y2hvc2VuIj4KKyAgICA8dmFsdWU+VnlicsOhbm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgiIG5hbWU9ImVudGVyIj4KKyAgICA8dmFsdWU+dnN0dXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkiIG5hbWU9Im1vZGxlYXZlIj4KKyAgICA8dmFsdWU+TW9kZXLDoXRvciBvcHVzdGlsIHNjaMWvemt1LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MCIgbmFtZT0ic3lzdGVtbWVzc2FnZSI+CisgICAgPHZhbHVlPlN5c3TDqW1vdsOpIGluZm9ybWFjZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MSIgbmFtZT0iY2hvc3NlZGV2aWNlIj4KKyAgICA8dmFsdWU+VnliZXIgemHFmcOtemVuw608L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIiIG5hbWU9ImNob29zZWNhbSI+CisgICAgPHZhbHVlPlZ5YmVyIHdlYmNhbTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMiIG5hbWU9ImNob29zZW1pYyI+CisgICAgPHZhbHVlPlZ5YmVyIG1pa3JvZm9uOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NCIgbmFtZT0ib2siPgorICAgIDx2YWx1ZT5vazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NSIgbmFtZT0iY2FuY2VsMiI+CisgICAgPHZhbHVlPnpydcWhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2IiBuYW1lPSJyZWNvbmVlY3RuZWVkZWQiPgorICAgIDx2YWx1ZT5NdXPDrXRlIHNlIHpub3Z1IHDFmWlwb2ppdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTciIG5hbWU9ImVkaXRzZXR1cCI+CisgICAgPHZhbHVlPlVwcmF2IG5hc3RhdmVuw60uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4IiBuYW1lPSJjb3Vyc2UiPgorICAgIDx2YWx1ZT5DZXN0YTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkiIG5hbWU9Imxhbmd1YWdlIj4KKyAgICA8dmFsdWU+SmF6eWs6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwIiBuYW1lPSJvazIiPgorICAgIDx2YWx1ZT5vazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MSIgbmFtZT0iY2FuY2VsMyI+CisgICAgPHZhbHVlPnpydcWhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyIiBuYW1lPSJjbGVhcndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5TbWHFviB0YWJ1bGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMiIG5hbWU9ImNsZWFyd2hpdGVib2FyZHF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+Q2hjZXRlIGFieSB0YWJ1bGUgYnlsYSBwcsOhemRuw6EgcMWZZWQgcMWZaWTDoW7DrW0gbm92w6lobyBvYnLDoXprdT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQiIG5hbWU9ImRvbnRhc2thZ2FpbiI+CisgICAgPHZhbHVlPsW9w6FkbsOpIGRhbMWhw60gZG90YXp5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1IiBuYW1lPSJubyI+CisgICAgPHZhbHVlPm5lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2IiBuYW1lPSJlZGl0c2V0dXAyIj4KKyAgICA8dmFsdWU+VXByYXYgbmFzdGF2ZW7DrTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NyIgbmFtZT0ibmVlZGNvbmZpcm1hdGlvbndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5Qb3R2cnpvdmFjw60gZG90YXogcMWZZWQgc21hesOhbsOtbSB0YWJ1bGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4IiBuYW1lPSJ1c2VyaW5mbyI+CisgICAgPHZhbHVlPkluZm9ybWFjZSBvIHXFvml2YXRlbGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkiIG5hbWU9ImNsZWFyZHJhd2FyZWEiPgorICAgIDx2YWx1ZT5TbWHFviBrcmVzbMOtY8OtIG9ibGFzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MCIgbmFtZT0idW5kbyI+CisgICAgPHZhbHVlPktyb2sgenDEm3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzEiIG5hbWU9InJlZG8iPgorICAgIDx2YWx1ZT5Lcm9rIHZwxZllZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MiIgbmFtZT0ic2VsZWN0b2JqZWN0Ij4KKyAgICA8dmFsdWU+VnliZXIgT2JqZWt0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczIiBuYW1lPSJ0ZXh0Ij4KKyAgICA8dmFsdWU+VGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NCIgbmFtZT0icGFpbnQiPgorICAgIDx2YWx1ZT5LcmVzbGVuw608L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUiIG5hbWU9ImRyYXdsaW5lIj4KKyAgICA8dmFsdWU+S3Jlc2xpIMSNw6FydTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NiIgbmFtZT0iZHJhd3UiPgorICAgIDx2YWx1ZT5LcmVzbGkgcG9kdHLFvmVuw608L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzciIG5hbWU9InJlY3QiPgorICAgIDx2YWx1ZT7EjXR5xZnDumhlbG7DrWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgiIG5hbWU9ImVsbGlwc2UiPgorICAgIDx2YWx1ZT5FbGlwc2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkiIG5hbWU9ImFycm93Ij4KKyAgICA8dmFsdWU+xaBpcGthPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwIiBuYW1lPSJkZWxldGVjaG9zZW4iPgorICAgIDx2YWx1ZT5zbWHFviB2eWJyYW5vdSBwb2xvxb5rdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MSIgbmFtZT0iYXBwbGl5bW9kIj4KKyAgICA8dmFsdWU+UG91xb7DrXQgcHJvIG1vZGVyb3bDoW7DrTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MiIgbmFtZT0iYXBwbHkiPgorICAgIDx2YWx1ZT5wb3XFvmlqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzIiBuYW1lPSJjYW5jZWwiPgorICAgIDx2YWx1ZT56cnXFoTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NCIgbmFtZT0ibW9kIj4KKyAgICA8dmFsdWU+U3TDoXQgc2UgbW9kZXLDoXRvcmVtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1IiBuYW1lPSJjbG9zZSI+CisgICAgPHZhbHVlPnphdsWZw610PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2IiBuYW1lPSJpdGFsaWMiPgorICAgIDx2YWx1ZT5pdGFsaWM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODciIG5hbWU9ImJvbGQiPgorICAgIDx2YWx1ZT50bHVzdMSbPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4IiBuYW1lPSJ3YWl0aW5nIj4KKyAgICA8dmFsdWU+xIxFS8OBTTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OSIgbmFtZT0iYXBwbHlNZXNzYWdlIj4KKyAgICA8dmFsdWU+VcW+aXZhdGVsIGNoY2UgcG91xb7DrXQgcHJvIG1vZGVyb3bDoW7DrTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAiIG5hbWU9ImFjY2VwdCI+CisgICAgPHZhbHVlPmFrY2VwdHVqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxIiBuYW1lPSJyZWplY3QiPgorICAgIDx2YWx1ZT5vZG3DrXRuaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MiIgbmFtZT0iY2FuY2VsIj4KKyAgICA8dmFsdWU+enJ1xaE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMiIG5hbWU9InNlbmRtb2RyZXF1ZXN0bWVzc2FnZSI+CisgICAgPHZhbHVlPk9kZXNsYXQgZG90YXogbsOhc2xlZHVqw61jw61tIHXFvml2YXRlbMWvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NCIgbmFtZT0iYWNjZXB0Ij4KKyAgICA8dmFsdWU+QWtjZXB0b3bDoW5vPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1IiBuYW1lPSJyZWplY3QiPgorICAgIDx2YWx1ZT5PZG3DrXRudXRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2IiBuYW1lPSJjaGFuZ2Vtb2QiPgorICAgIDx2YWx1ZT5abcSbbmEgbW9kZXLDoXRvcmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTciIG5hbWU9Im5vbm1vZGVycm9ybWVzc2FnZSI+CisgICAgPHZhbHVlPk5lbcWvxb5ldGUgbW9kZXJvdmF0IHRlbnRvIGt1cnohPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4IiBuYW1lPSJtb2RlcmF0b3IiPgorICAgIDx2YWx1ZT5Nb2RlcmF0b3I6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5IiBuYW1lPSJyb29tZnVsbG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Nw61zdG5vc3QgamUgcGxuw6EuIE9tbG92w6FtZSBzZSBwxZnDrWrEj3RlIGppbmR5LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAiIG5hbWU9ImVsbGxpcHNlIj4KKyAgICA8dmFsdWU+RWxpcHNhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMSIgbmFtZT0iY2xvc2UiPgorICAgIDx2YWx1ZT56YXbFmWk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyIiBuYW1lPSJBdXRoRXJyb3IiPgorICAgIDx2YWx1ZT5jaHliYSB2c3R1cG7DrWNoIGRhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMiIG5hbWU9Im1pbjR1c2VybmFtZSI+CisgICAgPHZhbHVlPjQgbmVibyB2w61jZSB6bmFrxa87IHrDoWxlxb7DrSBuYSB2ZWxrw71jaCBww61zbWVua8OhY2ghPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNCIgbmFtZT0ibWluNHBhc3MiPgorICAgIDx2YWx1ZT5oZXNsbyBtdXPDrSBtw610IG1pbmltw6FsbsSbIDQgem5ha3k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1IiBuYW1lPSJ1c2VybmFtZXRha2VuIj4KKyAgICA8dmFsdWU+VcW+aXZhdGVsIGppxb4gZXhpc3R1amU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2IiBuYW1lPSJlbWFpbHRha2VuIj4KKyAgICA8dmFsdWU+RW1haWwgamUgamnFviByZWdpc3Ryb3bDoW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3IiBuYW1lPSJlbWFpbHRha2VuIj4KKyAgICA8dmFsdWU+U3lzdMOpbW92w6EgY2h5YmEsIGtvbnRha3R1anRlIHNwcsOhdmNlIHPDrXTEmyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4IiBuYW1lPSJBdXRobG9naW4iPgorICAgIDx2YWx1ZT5QxZlpaGzDocWhZW7DrTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkiIG5hbWU9IkF1dGh1c2VyIj4KKyAgICA8dmFsdWU+VcW+aXZhdGVsOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAiIG5hbWU9IkF1dGhwYXNzIj4KKyAgICA8dmFsdWU+SGVzbG86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMSIgbmFtZT0iQXV0aGxhbmciPgorICAgIDx2YWx1ZT5KYXp5azwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIiIG5hbWU9IkF1dGhyZWciPgorICAgIDx2YWx1ZT5QxZlpaGzDoXNpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMiIG5hbWU9InJlZ2Zvcm1oZWFkIj4KKyAgICA8dmFsdWU+UmVnaXN0cmFjZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0IiBuYW1lPSJyZWdmb3JtdXNlciI+CisgICAgPHZhbHVlPlXFvml2YXRlbDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1IiBuYW1lPSJyZWdmb3JtcGFzcyI+CisgICAgPHZhbHVlPkhlc2xvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYiIG5hbWU9InJlZ2Zvcm1yZXR5cGUiPgorICAgIDx2YWx1ZT5abm92dTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3IiBuYW1lPSJyZWdmb3JtZmlyc3RuYW1lIj4KKyAgICA8dmFsdWU+Sm3DqW5vOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgiIG5hbWU9InJlZ2Zvcm1sYXN0bmFtZSI+CisgICAgPHZhbHVlPlDFmcOtam1lbsOtOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkiIG5hbWU9InJlZ2Zvcm1tYWlsIj4KKyAgICA8dmFsdWU+TWFpbDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwIiBuYW1lPSJyZWdmb3Jtc3RhdGUiPgorICAgIDx2YWx1ZT5aZW3Emzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxIiBuYW1lPSJyZWdmb3JtYnRuMSI+CisgICAgPHZhbHVlPlJlZ2lzdHJhY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyIiBuYW1lPSJyZWdmb3JtYnRuMiI+CisgICAgPHZhbHVlPlpydcWhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMyIgbmFtZT0iQXV0aGJ0bjIiPgorICAgIDx2YWx1ZT5OZWpzaSDEjWxlbmVtPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPkRvbcWvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNSIgbmFtZT0idXNlcmFkbWluIj4KKyAgICA8dmFsdWU+VcW+aXZhdGVsw6k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2IiBuYW1lPSJncm91cGFkbWluIj4KKyAgICA8dmFsdWU+U2t1cGlueTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjciIG5hbWU9Im9yZ2FkbWluIj4KKyAgICA8dmFsdWU+T3JnYW5pemFjZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgiIG5hbWU9ImhlYWRjb25mIj4KKyAgICA8dmFsdWU+SmVkbmFjw60gbcOtc3Rub3N0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOSIgbmFtZT0iY29uZl9wdWIiPgorICAgIDx2YWx1ZT52ZcWZZWpuw6k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwIiBuYW1lPSJoZWFkX29yZyI+CisgICAgPHZhbHVlPk9yZ2FuaXphY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxIiBuYW1lPSJidG5fZW50ZXJyb29tIj4KKyAgICA8dmFsdWU+dnN0dXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2xvZ2luIj4KKyAgICA8dmFsdWU+VcW+aXZhdGVsc2vDqSBqbcOpbm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Bhc3MiPgorICAgIDx2YWx1ZT5IZXNsbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQiIG5hbWU9InVzZXJhbHRlcnNlbGZfcGFzc3JldHlwZSI+CisgICAgPHZhbHVlPlpub3Z1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNSIgbmFtZT0idXNlcmFsdGVyc2VsZl9maXJzdG5hbWUiPgorICAgIDx2YWx1ZT5KbcOpbm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2xhc3RuYW1lIj4KKyAgICA8dmFsdWU+UMWZw61qbWVuw608L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2VtYWlsIj4KKyAgICA8dmFsdWU+TWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgiIG5hbWU9InVzZXJhbHRlcnNlbGZfYmlydGgiPgorICAgIDx2YWx1ZT5EYXR1bSBuYXJvemVuw608L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3N0cmVldG5vIj4KKyAgICA8dmFsdWU+VWxpY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Rvd24iPgorICAgIDx2YWx1ZT5QU8SML03Em3N0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDEiIG5hbWU9InVzZXJhbHRlcnNlbGZfc3RhdGUiPgorICAgIDx2YWx1ZT5TdMOhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIiIG5hbWU9InVzZXJhbHRlcnNlbGZfYWRyZXNzY29tbWVudCI+CisgICAgPHZhbHVlPkluZm8gbyBhZHJlc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2hlYWRlciI+CisgICAgPHZhbHVlPlXFvml2YXRlbHNrw6EgZGF0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQiIG5hbWU9InNhdmVtZW51YmFyX3NhdmVsYWJlbCI+CisgICAgPHZhbHVlPnVsb8W+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NSIgbmFtZT0ic2F2ZW1lbnViYXJfc2F2ZWxhYmVsIj4KKyAgICA8dmFsdWU+VWxvxb48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2IiBuYW1lPSJhZG1pbl91c2VybGlzdF91c2VyX2lkIj4KKyAgICA8dmFsdWU+VVNFUi1JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDciIG5hbWU9ImFkbWluX3VzZXJsaXN0X2xvZ2luIj4KKyAgICA8dmFsdWU+TG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4IiBuYW1lPSJhZG1pbl91c2VybGlzdF9maXJzdG5hbSI+CisgICAgPHZhbHVlPkptw6lubzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkiIG5hbWU9ImFkbWluX3VzZXJsaXN0X2xhc3RuYW1lIj4KKyAgICA8dmFsdWU+UMWZw61qbWVuw608L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwIiBuYW1lPSJ0dXJub3Zlcmxpc3RfbmV4dCI+CisgICAgPHZhbHVlPnVrYcW+IGRhbMWhw608L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxIiBuYW1lPSJ0dXJub3Zlcmxpc3RfcHJlIj4KKyAgICA8dmFsdWU+dWthxb4gcMWZZWRjaG96w608L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyIiBuYW1lPSJzYXZlY29udGVudF9jb25maXJtIj4KKyAgICA8dmFsdWU+c21hxb4gesOhem5hbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMiIG5hbWU9InNhdmVjb250ZW50X2NvbmZpcm1fY2FuY2VsX2J0biI+CisgICAgPHZhbHVlPnpydcWhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NCIgbmFtZT0ic2F2ZWNvbnRlbnRfY29uZmlybV9jb25maXJtX2J0biI+CisgICAgPHZhbHVlPnNtYcW+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NSIgbmFtZT0ic2F2ZW1lbnViYXJfYWRkbGFiZWwiPgorICAgIDx2YWx1ZT5ub3bDvSB6w6F6bmFtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NiIgbmFtZT0ic2F2ZW1lbnViYXJfcmVsb2FkbGFiZWwiPgorICAgIDx2YWx1ZT5ha3R1YWxpenVqIHrDoXpuYW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU3IiBuYW1lPSJzYXZlbWVudWJhcl9kZWxldGVsYWJlbCI+CisgICAgPHZhbHVlPnNtYcW+IHrDoXpuYW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU4IiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fc3RhdHVzIj4KKyAgICA8dmFsdWU+c3RhdjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTkiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9zdGF0dXNJdGVtIj4KKyAgICA8dmFsdWU+emFrw6F6w6FubzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjAiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9zdGF0dXNJdGVtIj4KKyAgICA8dmFsdWU+cG92b2xlbm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYxIiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fb3JnYW5pc2F0aW9uIj4KKyAgICA8dmFsdWU+T3JnYW5pemFjZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjIiIG5hbWU9ImNhbGVuZGFyX2ljb25sYWJlbCI+CisgICAgPHZhbHVlPmthbGVuZMOhxZk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYzIiBuYW1lPSJzYXZld2luZG93X2J0biI+CisgICAgPHZhbHVlPnphdsWZaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjQiIG5hbWU9Im9yZ2FuaXNhdGlvbnRhYmxlbGlzdF9pZHJvdyI+CisgICAgPHZhbHVlPklEIG9yZ2FuaXphY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY1IiBuYW1lPSJvcmdhbmlzYXRpb250YWJsZWxpc3RfbmFtZXJvdyI+CisgICAgPHZhbHVlPk7DoXpldjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjYiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGlkMSI+CisgICAgPHZhbHVlPlXFvml2YXRlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjciIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGlkMiI+CisgICAgPHZhbHVlPk1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjgiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGlkMyI+CisgICAgPHZhbHVlPkFkbWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2OSIgbmFtZT0idXNlcnZhbHVlX2xldmVsbGFiZWwiPgorICAgIDx2YWx1ZT51xb5pdmF0ZWxza8OhIMO6cm92ZcWIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MCIgbmFtZT0ib3JndmFsdWVfaGVhZGVyIj4KKyAgICA8dmFsdWU+T3JnYW5pemFjZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzEiIG5hbWU9Im9yZ3ZhbHVlX29yZ25hbWUiPgorICAgIDx2YWx1ZT5uw6F6ZXY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTcyIiBuYW1lPSJvcmd2YWx1ZV9vcmduYW1lIj4KKyAgICA8dmFsdWU+cMWZaWRlaiBvcmdhbml6YWNpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MyIgbmFtZT0ib3JndmFsdWVfb3JnbmFtZSI+CisgICAgPHZhbHVlPnDFmWlkZWogb3JnYW5pemFjaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzQiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW4iPgorICAgIDx2YWx1ZT56cnXFoTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzUiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW4iPgorICAgIDx2YWx1ZT5wxZlpZGVqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3NiIgbmFtZT0ib3JndmFsdWVfdXNlcndpbiI+CisgICAgPHZhbHVlPnpydcWhIG9yZ2FuaXphY2k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc3IiBuYW1lPSJvcmd2YWx1ZV91c2VybGlzdCI+CisgICAgPHZhbHVlPnXFvml2YXRlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzgiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJsaXN0YWRkIj4KKyAgICA8dmFsdWU+cMWZaWRlaiB1xb5pdmF0ZWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3OSIgbmFtZT0ib3JndmFsdWVfdXNlcmxpc3RkZWxldGUiPgorICAgIDx2YWx1ZT56cnXFoSB1xb5pdmF0ZWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4MCIgbmFtZT0ib3JndmFsdWVfdXNlcndpbmhlYWRlciI+CisgICAgPHZhbHVlPnDFmWlkZWogdcW+aXZhdGVsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODEiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5zZWFyY2hmaWVsZCI+CisgICAgPHZhbHVlPmhsZWRlaiB1xb5pdmF0ZWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4MiIgbmFtZT0ib3JndmFsdWVfdXNlcndpbnNlYXJjaGJ0biI+CisgICAgPHZhbHVlPmhsZWRlajwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODMiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5zZWFyY2hyZXN1bHQiPgorICAgIDx2YWx1ZT51xb5pdmF0ZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg0IiBuYW1lPSJsb2dpbndpbl9jaG9vc2VvcmdhbmlzYXRpb24iPgorICAgIDx2YWx1ZT5Pcmdhbml6YWNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NSIgbmFtZT0ibG9naW53aW5fY2hvb3Nlb3JnYW5pc2F0aW9uYnRuIj4KKyAgICA8dmFsdWU+dnN0dXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg2IiBuYW1lPSJuYXZpX3Jvb21hZG1pbiI+CisgICAgPHZhbHVlPktvbmZlcmVuxI1uw60gbcOtc3Rub3N0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NyIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPktvbmZlcmVuxI1uw60gbcOtc3Rub3N0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4OCIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPmlkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4OSIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPkptw6lubzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTAiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT52ZcWZZWpuw6k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkxIiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+T3JnYW5pemFjZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTIiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5aYXNlZGFjw60gbcOtc3Rub3N0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5MyIgbmFtZT0icm9vbXZhbHVlX25hbWUiPgorICAgIDx2YWx1ZT5Ow6F6ZXY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk0IiBuYW1lPSJyb29tdmFsdWVfdHlwZSI+CisgICAgPHZhbHVlPlR5cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTUiIG5hbWU9InJvb212YWx1ZV9pc3B1YmxpYyI+CisgICAgPHZhbHVlPlZlxZllam7DqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTYiIG5hbWU9InJvb212YWx1ZV9jb21tZW50Ij4KKyAgICA8dmFsdWU+S29tZW50w6HFmTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTciIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWljb24iPgorICAgIDx2YWx1ZT51bG/FviBhIGV4cG9ydHVqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5OCIgbmFtZT0id2hpdGVib2FyZF9vcGVuaWNvbiI+CisgICAgPHZhbHVlPm5haHJlajwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTkiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2luaGVhZGVyIj4KKyAgICA8dmFsdWU+dWxvxb4gamFrbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDAiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2ludGV4dCI+CisgICAgPHZhbHVlPk7DoXpldiBzb3Vib3J1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMSIgbmFtZT0iZmlsZXMiPgorICAgIDx2YWx1ZT5uw6F6ZXYgc291Ym9ydTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDIiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2luYnRuMSI+CisgICAgPHZhbHVlPnpydcWhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMyIgbmFtZT0id2hpdGVib2FyZF9zYXZlYXN3aW5idG4yIj4KKyAgICA8dmFsdWU+dWxvxb48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA0IiBuYW1lPSJycGNlcnJvcndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5DaHliYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDUiIG5hbWU9ImxvYWR3bWxfaGVhZGVyIj4KKyAgICA8dmFsdWU+bmFocsOhdsOhbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDYiIG5hbWU9ImxvYWR3bWxfbWVzc3Nsb2FkIj4KKyAgICA8dmFsdWU+b2JqZWt0IG5haHLDoW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA3IiBuYW1lPSJsb2Fkd21sX21lc3NzeW5jIj4KKyAgICA8dmFsdWU+c3luY2hyb25pemFjZSBrbGllbnTFrzsgxI1la2Fqw61jw60ga2xpZW50aTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA4IiBuYW1lPSJsb2FkaW1hZ2VfbWVzc2xvYWQiPgorICAgIDx2YWx1ZT5OYWhyw6F2w6FtIG9icsOhemVrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwOSIgbmFtZT0ibG9hZGltYWdlX21lc3NzeW5jIj4KKyAgICA8dmFsdWU+c3luY2hyb25pemFjZSBrbGllbnTFrzsgxI1la2Fqw61jw60ga2xpZW50aTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEwIiBuYW1lPSJsb2Fkd21sX2NvbmZpcm1oZWFkZXIiPgorICAgIDx2YWx1ZT5zbWHFviBrcmVzbMOtY8OtIG9ibGFzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTEiIG5hbWU9ImxvYWR3bWxfY29uZmlybW1lc3MiPgorICAgIDx2YWx1ZT5zbWHFviBrcmVzbMOtY8OtIG9ibGFzdCwgdsWhZWNobmEgZGF0YSB6IHRhYnVsZSBidWRvdSB6dHJhY2VuYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTIiIG5hbWU9ImxvYWR3bWxfY29uZmlybW1lc3MyIj4KKyAgICA8dmFsdWU+UG90dnJ6ZW7DrSBwxZllZCBuYWhyw6F0w61tIHNvdWJvcnU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEzIiBuYW1lPSJzZW5kX2ludml0YXRpb25fYnRuIj4KKyAgICA8dmFsdWU+WmFzbGF0IHBvenbDoW7DrTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTQiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5aYXNsYXQgcG96dsOhbsOtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNSIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX3N1YmplY3QiPgorICAgIDx2YWx1ZT5QxZllZG3Em3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE2IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fcmVjaXBpZW50Ij4KKyAgICA8dmFsdWU+UMWZw61qZW1jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTciIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9tZXNzYWdlIj4KKyAgICA8dmFsdWU+WnByw6F2YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTgiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9idG5fY29uZmlybSI+CisgICAgPHZhbHVlPk9kZXNsYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE5IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fYnRuX2NhbmNlbCI+CisgICAgPHZhbHVlPnpydcWhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyMCIgbmFtZT0ic2VuZF9jaGF0X3RleHRfYnRuIj4KKyAgICA8dmFsdWU+b2Rlc2xhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjEiIG5hbWU9Imludml0ZWRfdXNlcndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5Vxb5pdmF0ZWxza8OhIGRhdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIyIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fc3ViamVjdCI+CisgICAgPHZhbHVlPlZhxaFlIHDFmWV6ZMOtdmthIHYgdMOpdG8ga29uZmVyZW5jaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjMiIG5hbWU9Imludml0ZWRfdXNlcndpbl9sb2dpbiI+CisgICAgPHZhbHVlPlDFmWV6ZMOtdmthPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNCIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2ZpcnN0bmFtZSI+CisgICAgPHZhbHVlPkptw6lubzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjUiIG5hbWU9Imludml0ZWRfdXNlcndpbl9sYXN0bmFtZSI+CisgICAgPHZhbHVlPlDFmcOtam1lbsOtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNiIgbmFtZT0iaW52aXRlZF91c2Vyd2luX21haWwiPgorICAgIDx2YWx1ZT5FbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjciIG5hbWU9Imludml0ZWRfdXNlcndpbl9sYW5nIj4KKyAgICA8dmFsdWU+SmF6eWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI4IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZW50ZXIiPgorICAgIDx2YWx1ZT52c3R1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjkiIG5hbWU9Imludml0ZWRfdXNlcndpbl9lbnRlciI+CisgICAgPHZhbHVlPk5haHLDoXbDoW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMwIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZW50ZXIiPgorICAgIDx2YWx1ZT5EYXRhIHNlIG5haHLDoXZhasOtLCDEjWVrZWp0ZSBwcm9zw61tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMSIgbmFtZT0idXNlcl9yZWdpc3RlckZhbHNlUFdEIj4KKyAgICA8dmFsdWU+xaBwYXRuw6kgaGVzbG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMyIiBuYW1lPSJ1c2VyX3JlZ2lzdGVyRmFsc2VQV0RIZWFkZXIiPgorICAgIDx2YWx1ZT5aYWRlanRlIHByb3PDrW0gc3Rlam7DqSBoZXNsbyBtaW5pbcOhbG7EmyBzZSA2IHpuYWt5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMyIgbmFtZT0idXNlcl9yZWdpc3Rlck1haWxFcnJvciI+CisgICAgPHZhbHVlPsWgcGF0bsO9IG1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM0IiBuYW1lPSJ1c2VyX3JlZ2lzdGVyTWFpbEVycm9ySGVhZGVyIj4KKyAgICA8dmFsdWU+WmFkYWxpIGpzdGUgxaFwYXRub3UgZW1haWxvdm91IGFkcmVzdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzUiIG5hbWU9InVzZXJfcmVnaXN0ZXJTdWNjZXNzIj4KKyAgICA8dmFsdWU+UmVnaXN0cmFjZSBqZSBrb21wbGV0bsOtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzNiIgbmFtZT0idXNlcl9yZWdpc3RlclN1Y2Nlc3NIZWFkZXIiPgorICAgIDx2YWx1ZT5Ww6HFoSB1xb5pdmF0ZWxza8O9IMO6xI1ldCBieWwgdnl0dm/FmWVuLiBNxa/FvmV0ZSBzZSBwxZlpaGzDoXNpdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM3IiBuYW1lPSJ1c2VyX3NoYXJpbmdfbWVzc2FnZSI+CisgICAgPHZhbHVlPk55bsOtIG5lbcWvxb5ldGUgc2TDrWxldCBvYnJhem92a3UuIE7Em2tkbyBqaW7DvSBqacW+IHNkw61sw60gc3ZvdSBvYnJhem92a3UuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzOCIgbmFtZT0idXNlcl9zaGFyaW5nX21lc3NhZ2VIZWFkZXIiPgorICAgIDx2YWx1ZT5TZMOtbGVuw60gemFrw6F6w6FubzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzkiIG5hbWU9InVzZXJfZG9TdGFydFNjcmVlblZpZXdlciI+CisgICAgPHZhbHVlPlNkw61sZWogc3ZvdSBvYnJhem92a3U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQwIiBuYW1lPSJzY3JlZW5fd2FybkJhbmR3aWR0aCI+CisgICAgPHZhbHVlPsWgcGF0bsOhIMWhw63FmWthIHDDoXNtYTogTmVtxa/FvmV0ZSBzeW5jaHJvbml6b3ZhdCBzdm91IG9icmF6b3ZrdS4gU27DrW1layBieWwgemFob3plbi4gUG9rdWQgc2UgdG90byB2YXJvdsOhbsOtIG9iamV2w60sIGRvbWx1dnRlIHNlIHMgbW9kZXLDoXRvcmVtIG5hIHNuw63FvmVuw60ga3ZhbGl0eSBwxZllbm9zdSBvYnJhem92a3kuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0MSIgbmFtZT0ic2NyZWVuX3VzZXJsYWJlbCI+CisgICAgPHZhbHVlPk9icmF6b3ZrYSB2eXBudXRhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDIiIG5hbWU9IndoaXRlYm9hcmRfdGFiX3BhaW50Ij4KKyAgICA8dmFsdWU+S3Jlc2xlbsOtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0MyIgbmFtZT0id2hpdGVib2FyZF90YWJfZG9jdW1lbnQiPgorICAgIDx2YWx1ZT5Eb2t1bWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDQiIG5hbWU9InRhYmJhcl9jaGF0aWNvbiI+CisgICAgPHZhbHVlPlBva2VjPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0NSIgbmFtZT0idGFiYmFyX2ZpbGVzaWNvbiI+CisgICAgPHZhbHVlPlNvdWJvcnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ2IiBuYW1lPSJ0YWJiYXJfcGFydGljaXBhbnRzaWNvbiI+CisgICAgPHZhbHVlPsSMbGVub3bDqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDciIG5hbWU9InN3ZnByZXNlbnRhdGlvbl9saXN0c2F2ZW9yaWciPgorICAgIDx2YWx1ZT5OYWhyZWogb3JpZ2luw6FsbsOtIGRva3VtZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0OCIgbmFtZT0ic3dmcHJlc2VudGF0aW9uX2xpc3RzYXZlcGRmIj4KKyAgICA8dmFsdWU+TmFocmVqIFBERiBkb2t1bWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDkiIG5hbWU9InN3ZnByZXNlbnRhdGlvbl9saXN0bG9hZHN3ZiI+CisgICAgPHZhbHVlPk5haHJlaiBwcmV6ZW50YWNpIG5hIHRhYnVsaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTAiIG5hbWU9Im5hdmltYWluX2NvbmZpZyI+CisgICAgPHZhbHVlPktvbmZpZ3VyYWNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MSIgbmFtZT0id2hpdGVib2FyZF9ib3VuZGluZ2JveF9kcmFnIj4KKyAgICA8dmFsdWU+UMWZZXN1biBvYmpla3R1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MiIgbmFtZT0id2hpdGVib2FyZF9ib3VuZGluZ2JveF9yZXNpemUiPgorICAgIDx2YWx1ZT5abcSbbmEgdmVsaWtvc3RpIG9iamVrdHU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUzIiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl96b29tIj4KKyAgICA8dmFsdWU+JTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTQiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3NsaWRlIj4KKyAgICA8dmFsdWU+ejwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTUiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX2ZpcnN0c2xpZGUiPgorICAgIDx2YWx1ZT5QcnZuw60gc3RyYW5hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1NiIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfcHJlc2xpZGUiPgorICAgIDx2YWx1ZT5QxZllZGNob3rDrSBzdHJhbmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU3IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9uZXh0c2xpZGUiPgorICAgIDx2YWx1ZT5EYWzFocOtIHN0cmFuYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTgiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX2xhc3RzbGlkZSI+CisgICAgPHZhbHVlPlBvc2xlZG7DrSBzdHJhbmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU5IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl96b29tbWludXMiPgorICAgIDx2YWx1ZT5abWVuxaFpIC0tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MCIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfem9vbXBsdXMiPgorICAgIDx2YWx1ZT5adsSbdMWhaSArKzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjEiIG5hbWU9InNhbHV0YXRpb25fbXIiPgorICAgIDx2YWx1ZT5QYW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYyIiBuYW1lPSJzYWx1dGF0aW9uX21pc3MiPgorICAgIDx2YWx1ZT5QYW7DrS9zbGXEjW5hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MyIgbmFtZT0ibmF2aW1haW5fY29uZmFkbWluIj4KKyAgICA8dmFsdWU+S29uZmlndXJhY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY0IiBuYW1lPSJjb25mdGFibGVfaGVhZGVySWQiPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjUiIG5hbWU9ImNvbmZ0YWJsZV9oZWFkZXJrZXkiPgorICAgIDx2YWx1ZT5LbMOtxI08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY2IiBuYW1lPSJjb25mYWRtaW5mb3JtX2hlYWRlciI+CisgICAgPHZhbHVlPktvbmZpZ3VyYWNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2NyIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbGtleSI+CisgICAgPHZhbHVlPktsw63EjTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjgiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWx1cGRhdGVkIj4KKyAgICA8dmFsdWU+cG9zbGVkbsOtIGFrdHVhbGl6YWNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2OSIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbHVwZGF0ZWRieSI+CisgICAgPHZhbHVlPmFrdHVhbGl6b3ZhbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzAiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWxjb21tZW50Ij4KKyAgICA8dmFsdWU+a29tZW50w6HFmTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzEiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWxrZXkiPgorICAgIDx2YWx1ZT5Ib2Rub3RhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MiIgbmFtZT0idHVybm92ZXJsaXN0X21heHJlc3VsdHMiPgorICAgIDx2YWx1ZT56PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MyIgbmFtZT0ib3JnYW5pc2F0aW9uX3VzZXJzaGVhZGVyIj4KKyAgICA8dmFsdWU+VcW+aXZhdGVsw6k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc0IiBuYW1lPSJvcmdhbmlzYXRpb25fdXNlcnNpY29uZGVsZXRlIj4KKyAgICA8dmFsdWU+c21hxb4gdcW+aXZhdGVsZSB6IG9yZ2FuaXphY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc1IiBuYW1lPSJvcmdhbmlzYXRpb25fdXNlcnNkZWxldGVkaGVhZCI+CisgICAgPHZhbHVlPnNtYcW+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NiIgbmFtZT0ib3JnYW5pc2F0aW9uX3VzZXJzYWxyZWFkYWRkZWQiPgorICAgIDx2YWx1ZT5UZW50dSB1xb5pdmF0ZWwgamnFviBqZSDEjWxlbmVtIG9yZ2FuaXphY2UuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NyIgbmFtZT0iZGFzaGJvYXJkX25ld3NoZWFkZXIiPgorICAgIDx2YWx1ZT5acHLDoXZ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3OCIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua3NoZWFkZXIiPgorICAgIDx2YWx1ZT5SeWNobMOhIG5hdmlnYWNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3OSIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua0NvbmYiPgorICAgIDx2YWx1ZT5TY2jFr3preTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODAiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtBdWRpdCI+CisgICAgPHZhbHVlPlBvc2x1Y2jDoXJuYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODEiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtzdXBwb3J0Ij4KKyAgICA8dmFsdWU+TsOhcG92xJtkYSBhIHBvZHBvcmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgyIiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tob21lcGFnZXVybCI+CisgICAgPHZhbHVlPmh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgzIiBuYW1lPSJkYXNoYm9hcmRfcXVpY2ttYWlsaW5nbGlzdHVybCI+CisgICAgPHZhbHVlPmh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9tYWlsLWxpc3RzLmh0bWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg0IiBuYW1lPSJkYXNoYm9hcmRfcmVwb3J0YnVncyI+CisgICAgPHZhbHVlPk5haGzDocWhZW7DrSBjaHliITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODUiIG5hbWU9ImRhc2hib2FyZF9yc3NsaXN0aXRlbWxpbmt0ZXh0Ij4KKyAgICA8dmFsdWU+dsOtY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg2IiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5raG9tZXBhZ2VsYWJlbCI+CisgICAgPHZhbHVlPlN0csOhbmt5IHByb2pla3R1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4NyIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua21haWxpbmdsaXN0bGFiZWwiPgorICAgIDx2YWx1ZT5BcmNoaXYgdcW+aXZhdGVsc2vDqSBrb3Jlc3BvbmRlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4OCIgbmFtZT0ibG9naW5fcmVtZW1iZXJ1c2VyIj4KKyAgICA8dmFsdWU+WmFwYW1hdHVqIHNpIHDFmWlobMOhxaFlbsOtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4OSIgbmFtZT0ibWFpbl9uYXZpIj4KKyAgICA8dmFsdWU+T2JzYWg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkwIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+TcOhIGRvbW92c2vDoSBzdHLDoW5rYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTEiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5Nw6kgcGzDoW5vdmFuw6kgc2Noxa96a3k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkyIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+TcOpIHBsw6Fub3ZhbsOpIHDFmWVkbsOhxaFreTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTMiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5WZcWZZWpuw6kgc2Noxa96a3k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk0IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+U291a3JvbcOpIHNjaMWvemt5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NSIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPlZlxZllam7DqSBwxZllZG7DocWha2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk2IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+U291a3JvbcOpIHDFmWVkbsOhxaFrYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTciIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5WZcWZZWpuw70gb2JzYWg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk4IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+U291a3JvbcO9IG9ic2FoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5OSIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPlXFvml2YXRlbHNrw70gb2JzYWg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAwIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMSIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPk1vZGVyYWNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMiIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPlBvxb5hZGF2ZWsgbmEgbW9kZXJhY2k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAzIiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+QW5rZXR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNCIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPlZ5YmVyIHNvdWJvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDUiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5OYXN0YXZlbsOtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNiIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPk5hc3RhdmVuw60ga2FtZXJ5IGEgbWlrcm9mb251PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNyIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPk5hc3RhdmVuw60gdGFidWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwOCIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPk9kY2hvZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDkiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5acMSbdCBkbyB2w71ixJtydSBtw61zdG5vc3TDrTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTAiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5PZGhsw6FzaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzExIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlphcG3Em2xpIGpzdGUgaGVzbG8/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMiIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5SZXNldCBoZXNsYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTMiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+TWFpbGVtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxNCIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5QxZlpaGzDocWhZW7DrW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE1IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlbDocWhIGVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxNiIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5WYcWhZSB1xb5pdmF0ZWxza8OpIGptw6lubzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTciIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+T2Rlc2zDoW4gbWFpbCBzIG9ka2F6ZW0gbmEgcmVzZXQgaGVzbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE4IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPkVtYWlsb3bDoSBhZHJlc2EgbmVuYWxlemVuYS4gUG91xb7DrWp0ZSBzdGVqbm91IGFkcmVzdSBqYWtvIHDFmWkgemFrbMOhZMOhbsOtIHXFvml2YXRlbHNrw6lobyDDusSNdHUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxOSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5aYWRlanRlIHByb3PDrW0gbWFpbCwgbmVibyB1xb5pdmF0ZWxza8OpIGptw6lubzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjAiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+VGFrb3bDvSB1xb5pdmF0ZWxza8O9IMO6xI1ldCBuZWV4aXN0dWplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyMSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5FbWFpbCBvYnNhaHVqZSBzcGVjacOhbG7DrSBvZGtheiwgc2tvbnRyb2x1anRlIFZhxaFpIHNjaHLDoW5rdS4gUG9rdWQganN0ZSBtYWlsIG5lb2JkcsW+ZWxpLCBza29udHJvbHVqdGUgbmFzdGF2ZW7DrSBhbnRpc3BhbW92w6lobyBmaWx0cnUgYSBwb8WhbGV0ZSBtYWlsIHpub3Z1LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjIiIG5hbWU9ImVycm9ydHlwZSI+CisgICAgPHZhbHVlPkNoeWJhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyMyIgbmFtZT0iZXJyb3J0eXBlIj4KKyAgICA8dmFsdWU+WnByw6F2YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjQiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPsWgcGF0bsO9IEhhc2guIFXFvml2YXRlbCBuZW5hbGV6ZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNSIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+UmVzZXQgVmHFoWVobyBoZXNsYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjYiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPkxvZ2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNyIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+em3Em25hIGhlc2xhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyOCIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+bm92w6kgaGVzbG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI5IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT56bm92dSBoZXNsbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzAiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPkhlc2xhIG5lanNvdSBzdGVqbsOhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzEiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPjQgbmVibyB2w61jZSB6bmFrxa87IHrDoWxlxb7DrSBuYSB2ZWxpa29zdGkgcMOtc21lbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMyIiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5IZXNsbyBuYXN0YXZlbm8uIE3Fr8W+ZXRlIHNlIHDFmWlobMOhc2l0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzMiIG5hbWU9InJwY2NhbGxiYWNrIj4KKyAgICA8dmFsdWU+T0s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM0IiBuYW1lPSJycGNnZW5lcmFsZXJyb3IiPgorICAgIDx2YWx1ZT5OZXpuw6Ftw6EgY2h5YmEuIE5haGxhc3RlIGppIHNlcnZpc27DrW11IHTDvW11LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzUiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+VcW+aXZhdGVsc2vDvSDDusSNZXQgbmVuYWxlemVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNiIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7FoHBhdG7DqSBoZXNsbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzciIG5hbWU9ImxvZ291dCI+CisgICAgPHZhbHVlPkJ5bGkganN0ZSB2cG/FmcOhZGt1IG9kaGzDocWhZW5pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzOCIgbmFtZT0icmVnaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+UmVnaXN0cmFjZSB1xb5pdmF0ZWzFryB6YWvDoXrDoW5hLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzkiIG5hbWU9InJlZ2lzdHJhdGlvbiI+CisgICAgPHZhbHVlPsWgcGF0bsO9IG1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQwIiBuYW1lPSJyZWdpc3RyYXRpb24iPgorICAgIDx2YWx1ZT5zb3Vib3IgamnFviBleGlzdHVqZSwgdnliZXJ0ZSBqaW7DvSBuw6F6ZXYgc291Ym9ydTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDEiIG5hbWU9ImZpbGVicm93c2VyIj4KKyAgICA8dmFsdWU+bsOhemV2IHNvdWJvcnUgamUga3LDoXRrw708L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQyIiBuYW1lPSJmaWxlYnJvd3NlciI+CisgICAgPHZhbHVlPk5lbW9odSB1bG/Fvml0IGFkcmVzdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDMiIG5hbWU9InVzZXJhZG1pbiI+CisgICAgPHZhbHVlPlXFvml2YXRlbCBwxZlpZMOhbiwgYWxlIG11c8OtdGUgamVqIHDFmWnFmWFkaXQgayBvcmdhbml6YWNpLCBqaW5hayBzZSBuZWJ1ZGUgbW9jaSBwxZlpaGzDoXNpdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ0IiBuYW1lPSJhZG1pbmZvcm1zIj4KKyAgICA8dmFsdWU+Tm92w70gesOhem5hbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDUiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPlBvbGUgbmVuYWxlemVubyB2IEZpZWxkSWQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+UHJvIHRvdG8gcG9sZSBuZXhpc3R1amUgbsOhemV2LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDciIG5hbWU9ImVycm9ybWVzc2FnZSI+CisgICAgPHZhbHVlPlZ5xb5hZG92w6FueSBwcsOhdmEgYWRtaW5pc3Ryw6F0b3JhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0OCIgbmFtZT0ibWFpbm5hdmkiPgorICAgIDx2YWx1ZT5Mb2thbGl6YWNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0OSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+SmF6eWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUwIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5JRCBwb2xlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1MSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TsOhemV2IHBvbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUyIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5Ib2Rub3RhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1MyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+SG9kbm90eSBwb2xlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1NCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TsOhemV2IHBvbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU1IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5Ib2Rub3RhIHBvbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU2IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5JRCBwb2xlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1NyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+U21hemFsaSBqc3RlIHBvdXplIG7DoXpldiBwb2xlLCBuZSBwb2xlISBOZW3Fr8W+ZXRlIHNtYXphdCBwb2xlLCBwb3XFvsOtdsOhIHNlIHYgb3N0YXRuw61jaCBqYXp5Y8OtY2guPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1OCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+xaBwYXRuw6kgSUQgcG9sZS4gSUQgcG9sZSBuZW5hbGV6ZW5vIHYgZGF0YWLDoXppLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTkiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPk5lbcWvxb5ldGUgc21hemF0IHRvdG8gcG9sZS4gTcWvxb5ldGUgc21hemF0IHBvdXplIG7DoXp2eSBwb2zDrS4gTmVuw60gbmFocsOhbiDFvsOhZG7DvSBuw6F6ZXYgcG9sZSwgcHJvdG/FvmUganN0ZSBuZXZ5YnJhbGkgxb7DoWRuw6kgcG9sZSwgbmVibyBuZW7DrSBwcm8gdG90byBwb2xlIG7DoXpldiBkZWZpbm92w6FuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjAiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPmV4cG9ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjEiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPk9kaGxhc3RlIHNlIGEgcGFrIHV2aWTDrXRlIHptxJtueS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYyIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5QxZlpZGVqIG5vdsO9IGphenlrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+c21hxb4gamF6eWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY0IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5QxZlpZGVqIG5vdsO9IGphenlrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TsOhemV2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+cMWZaWRlaiBqYXp5azwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjciIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPlrDoWxvaGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY4IiBuYW1lPSJ0dXJub3Zlcmxpc3QiPgorICAgIDx2YWx1ZT5qZGkgbmEgcHJ2bsOtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2OSIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+amRpIG5hIHDFmWVkY2hvesOtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MCIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+amRpIG5hIGRhbMWhw608L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzcxIiBuYW1lPSJ0dXJub3Zlcmxpc3QiPgorICAgIDx2YWx1ZT5qZGkgbmEgcG9zbGVkbsOtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MiIgbmFtZT0idmlkZW9ib3giPgorICAgIDx2YWx1ZT51xb5pdmF0ZWwgbWx1dsOtIChCeSBjbGlja2luZyBoZXJlIHlvdSBjYW4gZ2l2ZSBleGNsdXNpdmUgYXVkaW8gLyBtdXRlIHRoZSBtaWNyb3Bob25lIG9mIG90aGVycyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzczIiBuYW1lPSJ2aWRlb2JveCI+CisgICAgPHZhbHVlPlZwbm91dC9aYXBub3V0IHp2dWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc0IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5TeXN0w6ltPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3NSIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+VmHFoWUgbmFzdGF2ZW7DrTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzYiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPkRvYnLDvSBkZW4sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3NyIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+VXByYXYgc3bFr2ogcHJvZmlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3OCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+Tm92w6kgenByw6F2eTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc5IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5OYWhyZWogbm92w70gb2Jyw6F6ZWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgwIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPkV4cG9ydCB1xb5pdmF0ZWxza8O9Y2ggZGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4MSIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5BVsWhZWNobnkgb3JnYW5pemFjZSBtdXPDrSBleGlzdG92YXQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4MiIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5zdGFydCBleHBvcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgzIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPkRsZSBvcmdhbml6YWNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NCIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5zdGFydCBleHBvcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg1IiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPkltcG9ydCB1xb5pdmF0ZWxza8O9Y2ggZGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NiIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT52eWJlciB1xb5pdmF0ZWwueG1sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+aW1wb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4OCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+RXhwb3J0IGRvIFhNTCAtIFRlbnRvIHNvdWJvciBtxa/FvmUgYsO9dCBwb3XFvml0IHBybzogLSBQxZlpc3DEm27DrSBrIHByb2pla3R1IC0gSW1wb3J0IGRvIGppbsOpaG8gc3lzdMOpbXUgLSBaw6Fsb2h1IC0gw5pwcmF2eSAtIFZsb8W+ZW7DrSBkbyBhZHJlc8OhxZllIGphenlrxa8gYSBwb3XFvml0w60gcHJvIGRhbMWhw60gaW5zdGFsYWNpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4OSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+VnliZXJ0ZSBzb3Vib3IgcyBwxZlla2xhZGVtIGsgaW1wb3J0dS5WeWJlcnRlIHNwcsOhdm7DvSBqYXp5ayB2ZSB2w71ixJtydSEgTmV6w6FsZcW+w60gbmEgbsOhenZ1IHNvdWJvcnUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5MCIgbmFtZT0iaW1wb3J0d2luZG93Ij4KKyAgICA8dmFsdWU+aW1wb3J0IC0gdnliZXIgc291Ym9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5MSIgbmFtZT0icmVjb3JkaW5nc2F2ZXdpbiI+CisgICAgPHZhbHVlPlVsb8W+IGpha288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkyIiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+TsOhemV2OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTMiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT5Qb3Bpczo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk0IiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+dWxvxb48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk1IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5aw6F6bmFteTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTYiIG5hbWU9InJlY29yZGVyIj4KKyAgICA8dmFsdWU+UHJvaGzDrcW+ZcSNIHrDoXpuYW3FrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTciIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPlrDoXpuYW15IHogdmXFmWVqbsO9Y2ggYSBzb3Vrcm9tw71jaCBtw61zdG5vc3TDrTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTgiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPlXFvml2YXRlbMOpOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTkiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPkpvaW5lZDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAwIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAxIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5Vxb5pdmF0ZWzDqSB2IHTDqXRvIG3DrXN0bm9zdGk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMiIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+YWt0dWFsaXp1ajwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDMiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPk3DrXN0bm9zdCBqZSBwbG7DoS4gWmt1c3RlIHRvIHphIHDDoXIgbWludXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNCIgbmFtZT0icm9vbXNMaXN0Ij4KKyAgICA8dmFsdWU+UHJvIHrDrXNrw6Fuw60gZGV0YWzFryBrbGlrbsSbdGUgbmEgbcOtc3Rub3N0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNSIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+UG9rZWMgdcW+aXZhdGVsxa8gdiB0w6l0byBtw61zdG5vc3RpOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDYiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPk1pc3Rub3N0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDciIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPlXFvml2YXRlbMOpIHYgdMOpdG8gbcOtc3Rub3N0aTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA4IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5vZDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA5IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5wxZllaHJlaiB6w6F6bmFtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMCIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+RMOpbGthOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTEiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkRhdHVtOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTIiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPk3Ds2QgesOhem5hbXUhIE5lbcWvxb5ldGUgbcSbbml0IMW+w6FkbsOpIGhvZG5vdHksIHRvdG8gamUgcG91emUgesOhem5hbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDEzIiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5QxZllaHJlaiB6w6F6bmFtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxNCIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+UMWZZWhyZWogLyBQb3phc3RhdjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTUiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPlphxI3DoXRlayB6w6F6bmFtdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTYiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPmtvbmVjIHrDoXpuYW11PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxNyIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+WsOhem5hbTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE4IiBuYW1lPSJyZWNvcmRfZXJyb3JfbXNnIj4KKyAgICA8dmFsdWU+WmRlIGpzb3UgZG9zdHVwbsOpIHrDoXpuYW15OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTkiIG5hbWU9InJlY29yZF9tZXNzYWdlIj4KKyAgICA8dmFsdWU+WmF6bmFtZW7DoW5vISBVxb5pdmF0ZWxlbTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIwIiBuYW1lPSJyZWNvcmRfY2FuY2VsIj4KKyAgICA8dmFsdWU+enJ1xaE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIxIiBuYW1lPSJyZWNvcmRfY2FuY2FsX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5aw6F6bmFtIGJ5bCB1a29uxI1lbiBhIG5ldWxvxb5lbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIyIiBuYW1lPSJjYW5jZWxfZGlhbG9nX3Jlc3VtZSI+CisgICAgPHZhbHVlPm9wYWtvdmF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyMyIgbmFtZT0iY2FuY2VsX2RpYWxvZ19yZXN1bWVfdG9vbHRpcCI+CisgICAgPHZhbHVlPlphdsWZZXRlIHRvdG8gb2tubyBhIHpvcGFrdWp0ZSBuYWhyw6F2w6Fuw608L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI0IiBuYW1lPSJwYWludHRvb2xzX2VsbGlwc2VfY29sb3IiPgorICAgIDx2YWx1ZT56bcSbbmEgYmFydnkgxI3DoXJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyNSIgbmFtZT0iY29sb3JwaWNrZXJfaGVhZCI+CisgICAgPHZhbHVlPlZ5YmVyIGJhcnZ1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyNiIgbmFtZT0icGFpbnR0b29sc19saW5lX2Rpc2FibGUiPgorICAgIDx2YWx1ZT5aYWthxb4gLyBQb3ZvbCB6bcSbbnUgYmFydnkgxI3DoXJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyNyIgbmFtZT0icGFpbnR0b29sc19maWxsX2Rpc2FibGUiPgorICAgIDx2YWx1ZT56bcSbxYggYmFydnUgdsO9cGxuxJs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI4IiBuYW1lPSJwYWludHRvb2xzX2xpbmVfZGlzYWJsZSI+CisgICAgPHZhbHVlPlpha2HFviAvIFBvdm9sIHptxJtudSBiYXJ2eSB2w71wbG7EmzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjkiIG5hbWU9ImNoYW5nZV93aWR0aF9hcnJvd19kb3duX3NsaWRlciI+CisgICAgPHZhbHVlPlptxJvFiCB0bG91xaHFpWt1IMSNw6FyeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzAiIG5hbWU9ImNsb3NlX3NtYWxsX3BvcHVwcyI+CisgICAgPHZhbHVlPnphdsWZaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzEiIG5hbWU9InBhaW50X3Rvb2xfbGV0dGVyIj4KKyAgICA8dmFsdWU+em3Em8WIIHZlbGlrb3N0IHDDrXNtYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzIiIG5hbWU9InJlY29yZGluZ3NsaXN0X2RlbGV0ZSI+CisgICAgPHZhbHVlPlNtYcW+IG5haHLDoXZrdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzMiIG5hbWU9InJlY29yZGluZ3NsaXN0X3JlY29yZGVkQnlHdWVzdCI+CisgICAgPHZhbHVlPkhvc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM0IiBuYW1lPSJyZWNvcmRpbmdzbGlzdF9yZWNvcmRlZGJ5Ij4KKyAgICA8dmFsdWU+WmF6bmFtZW5hbDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM1IiBuYW1lPSJyZWNvcmRpbmdzX3RhYmxlX2hlYWRfbmFtZSI+CisgICAgPHZhbHVlPk7DoXpldjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzYiIG5hbWU9InJlY29yZGluZ3NfdGFibGVfaGVhZF9yb29tIj4KKyAgICA8dmFsdWU+TcOtc3Rub3N0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNyIgbmFtZT0icmVjb3JkaW5nc190YWJsZV9oZWFkX2RhdGUiPgorICAgIDx2YWx1ZT5EYXR1bTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzgiIG5hbWU9InJlY29yZF9zdGFydF9jYW5jZWwiPgorICAgIDx2YWx1ZT56cnXFoTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzkiIG5hbWU9InJlY29yZF9zdGFydF9zdGFydCI+CisgICAgPHZhbHVlPnN0YXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MCIgbmFtZT0iZmlsZXNicm93c2VyX3RhYmxlX2hlYWRfbmFtZSI+CisgICAgPHZhbHVlPk7DoXpldjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDEiIG5hbWU9ImZpbGVzYnJvd3Nlcl90YWJsZV9oZWFkX2RhdGUiPgorICAgIDx2YWx1ZT5EYXR1bTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDIiIG5hbWU9ImNoYXRfY2xlYXJfaGlzdG9yeSI+CisgICAgPHZhbHVlPlNtYcW+IHrDoXpuYW0gcG9rZWN1IG5hIHNlcnZlcnU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQzIiBuYW1lPSJjaGF0X292ZXJhbGxfaGVhZGVyIj4KKyAgICA8dmFsdWU+UG9rZWM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ0IiBuYW1lPSJjaGF0X3NlbmRfYnRuIj4KKyAgICA8dmFsdWU+emFzbGF0IHpwcsOhdnU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ1IiBuYW1lPSJjaGF0X2Vtb3RfYnRuIj4KKyAgICA8dmFsdWU+RW1vdGljb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NiIgbmFtZT0iY2hhdF9lbW90X3dpbiI+CisgICAgPHZhbHVlPkVtb3RpY29uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDciIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5ncyI+CisgICAgPHZhbHVlPlZ5YmVyIHp2ZcWZZWpuxJtuw6kgemHFmcOtemVuw608L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ4IiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT5adnVrIGEgb2JyYXo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ5IiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT5Qb3V6ZSB6dnVrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1MCIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2NvbWJvIj4KKyAgICA8dmFsdWU+UG91emUgb2JyYXo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUxIiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT5CZXogenZ1a3UgYSBvYnJhenUgKHN0YXRpY2vDvSBvYnLDoXplayk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUyIiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfaW5mb190ZXh0Ij4KKyAgICA8dmFsdWU+WnZ1ayBhIE9icmF6IHogVmHFoWVobyBQQyBuZW7DrSB6dmXFmWVqbsSbbm8sIGJ1ZGUgem9icmF6ZW4gcG91emUgb2Jyw6F6ZWsgeiBWYcWhZWhvIHByb2ZpbHUuUG9rdWQgbcOhdGUgcHJvYmzDqW15IHprb250cm9sdWp0ZSBWYcWhZSBuYXN0YXZlbsOtLCBuZWJvIG3DoXRlIHZlbG1pIHBvbWFsw6kgcMWZaXBvamVuw60gayBpbnRlcm5ldHUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1MyIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9tb25kYXkiPgorICAgIDx2YWx1ZT5QbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTQiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfdHVlc2RheSI+CisgICAgPHZhbHVlPsOadDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTUiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfd2VkbmVzZGF5Ij4KKyAgICA8dmFsdWU+U3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU2IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3RodXJzZGF5Ij4KKyAgICA8dmFsdWU+xIx0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NyIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9mcmlkYXkiPgorICAgIDx2YWx1ZT5Qw6E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU4IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3NhdHVyZGF5Ij4KKyAgICA8dmFsdWU+U288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU5IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3N1bmRheSI+CisgICAgPHZhbHVlPk5lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9tb25kYXkiPgorICAgIDx2YWx1ZT5Qb25kxJtsw608L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYxIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1R1ZXNkYXlMYWJlbCI+CisgICAgPHZhbHVlPsOadGVyw708L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYyIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1dlZG5lc2RheUxhYmVsIj4KKyAgICA8dmFsdWU+U3TFmWVkYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjMiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfVGh1cnNkYXlMYWJlbCI+CisgICAgPHZhbHVlPsSMdHZydGVrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9GcmlkYXlMYWJlbCI+CisgICAgPHZhbHVlPlDDoXRlazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjUiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfU2F0dXJkYXlMYWJlbCI+CisgICAgPHZhbHVlPlNvYm90YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjYiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfU3VuZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5OZWTEm2xlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NyIgbmFtZT0iY2FsZW5kYXJfd2Vla251bWJlcl9oZWFkZXIiPgorICAgIDx2YWx1ZT5Uw71kZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY4IiBuYW1lPSJjYWxlbmRhcl93ZWVrbnVtYmVyX2hlYWRlclRvb2x0aXAiPgorICAgIDx2YWx1ZT5Uw71kZW5uw60ga2FsZW5kw6HFmTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjkiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5MZWRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzAiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT7Dmm5vcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzEiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5CxZllemVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3MiIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPkR1YmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3MyIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPkt2xJt0ZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc0IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+xIxlcnZlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzUiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT7EjGVydmVuZWM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc2IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+U3JwZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc3IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+WsOhxZnDrTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzgiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT7FmMOtamVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3OSIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPkxpc3RvcGFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4MCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPlByb3NpbmVjPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4MSIgbmFtZT0iY2FsZW5kYXJ3aW5faGVhZGVyIj4KKyAgICA8dmFsdWU+S2FsZW5kw6HFmTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODIiIG5hbWU9InJvb21hZG1pbl9sYWJlbE51bWJlck9mUGFydGljaXBhbnRzIj4KKyAgICA8dmFsdWU+w5rEjWFzdG7DrWNpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4MyIgbmFtZT0icm9vbVZhbHVlX2FkdmFuY2VkU2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Va2HFviBuYXN0YXZlbsOtIHpvYnJhemVuw608L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg0IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3ZpZGVvWCI+CisgICAgPHZhbHVlPlggfCBZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NSIgbmFtZT0icm9vbUFkbWluX2xheW91dF92aWRlb1kiPgorICAgIDx2YWx1ZT7FoMOtxZlrYSB8IFbDvcWha2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg2IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0Ij4KKyAgICA8dmFsdWU+VmlkZW8tb2tubzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODciIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfbW9kIj4KKyAgICA8dmFsdWU+TW9kZXJhdGlvbi1va25vPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4OCIgbmFtZT0icm9vbUFkbWluX2xheW91dF9tb2RfcG9zIj4KKyAgICA8dmFsdWU+WDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODkiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPlRhYnVsZS1va25vPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5MCIgbmFtZT0icm9vbUFkbWluX2xheW91dF93aGl0ZWJvYXJkX3Nob3ciPgorICAgIDx2YWx1ZT5Qb3ZvbGVubzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTEiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZF9wb3MiPgorICAgIDx2YWx1ZT5YIHwgWTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTIiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPsWgw63FmWthIHwgVsO9xaFrYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTMiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXMiPgorICAgIDx2YWx1ZT5Tb3Vib3J5LFBva2VjLMOaxI1hc3Ruw61jaSAtIG9rbm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk0IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X2ZpbGVzX3Nob3ciPgorICAgIDx2YWx1ZT5Qb3ZvbGVubzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTUiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXNfcG9zIj4KKyAgICA8dmFsdWU+WCB8WTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTYiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXMiPgorICAgIDx2YWx1ZT7FoMOtxZlrYSB8IFbDvcWha2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk3IiBuYW1lPSJtb2RlcmF0b3JfZ29uZV9tZXNzYWdlIj4KKyAgICA8dmFsdWU+TW9kZXLDoXRvciBvcHVzdGlsIG3DrXN0bm9zdC4gTmVuw60gdiB0ZW50byBtb21lbnQgcMWZw610b21lbi4gTcWvxb5ldGUgc2Ugc3TDoXQgbW9kZXLDoXRvcmVtLCBuZWJvIMSNZWthdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk4IiBuYW1lPSJtb2RlcmF0b3JfbWVzc2FnZV9ldmVudF9ub19tb2QiPgorICAgIDx2YWx1ZT5WIHTDqXRvIG3DrXN0bm9zdGkgbmVuw60gbW9kZXLDoXRvciwgYWxlIGpzb3UgemRlIMO6xI1hc3Ruw61jaS4gTcWvxb5ldGUgc2Ugc3TDoXQgbW9kZXLDoXRvcmVtLCBuZWJvIMSNZWthdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk5IiBuYW1lPSJmZWVkYmFja190ZW1wbGF0ZV9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+RmVlZGJhY2sgJEFQUF9OQU1FPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwMCIgbmFtZT0iaW52aXRhdGlvbl90ZW1wbGF0ZV9oZWFkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIC0gUG96dsOhbmthPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwMSIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X2Zyb20iPgorICAgIDx2YWx1ZT5acHLDoXZhIG9kIHXFvml2YXRlbGU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwMiIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X21lc3NhZ2UiPgorICAgIDx2YWx1ZT5acHLDoXZhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDMiIG5hbWU9Imludml0YXRpb25fdGV4dF9jbGlja190ZXh0Ij4KKyAgICA8dmFsdWU+S2xpa27Em3RlIHNlbSBhIHBvZMOtbGVqdGUgc2UgbmEga29uZmVyZW5jaTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA0IiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfY2xpY2tfdGV4dF9saW5rIj4KKyAgICA8dmFsdWU+S2xpa27Em3RlIHNlbSBwcm8gdnN0dXAgZG8gbcOtc3Rub3N0aTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDUiIG5hbWU9Imludml0YXRpb25fdGV4dF9jbGlja190ZXh0X2hlbHAiPgorICAgIDx2YWx1ZT5wb2t1ZCBtw6F0ZSBwcm9ibMOpbSBzIHTDrW10byBvZGthemVtLCBuYWtvcMOtcnVqdGUgamVqIGEgdmxvxb50ZSBkbyBwcm9obMOtxb5lxI1lOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDYiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9oZWFkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIFJlZ2lzdHJhY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA3IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfaGVhZDIiPgorICAgIDx2YWx1ZT5WYcWhZSB1xb5pdmF0ZWxza8OhIGRhdGE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwOCIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X3VzZXJuYW1lIj4KKyAgICA8dmFsdWU+VcW+aXZhdGVsc2vDqSBqbcOpbm86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwOSIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X3Bhc3MiPgorICAgIDx2YWx1ZT5IZXNsbzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTEwIiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfbWFpbCI+CisgICAgPHZhbHVlPkVNYWlsOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTEiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9ieWUiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUtVMO9bTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTIiIG5hbWU9InJlZ2lzdGVyX21haWxfc3ViamVjdCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSBSZWdpc3RyYWNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxMyIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSAtIFJlc2V0IGhlc2xhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNCIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfdGVzdF9saW5rIj4KKyAgICA8dmFsdWU+S2xpa27Em3RlIG5hIHRlbnRvIG9ka2F6IGEgemFkZWp0ZSBub3bDqSBoZXNsbzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE1IiBuYW1lPSJyZXNldF9wYXNzd29yZF90ZW1wbGF0ZV90ZXh0Ml9saW5rIj4KKyAgICA8dmFsdWU+S2xrbsSbdGUgc2VtIGEgemFkZWp0ZSBub3bDqSBoZXNsbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTYiIG5hbWU9InJlc2V0X3Bhc3N3b3JkX3RlbXBsYXRlX3RleHQzX2xpbmsiPgorICAgIDx2YWx1ZT5wb2t1ZCBtw6F0ZSBwcm9ibMOpbSBzIHTDrW10byBvZGthemVtLCBuYWtvcMOtcnVqdGUgamVqIGEgdmxvxb50ZSBkbyBwcm9obMOtxb5lxI1lOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTciIG5hbWU9InJlc2V0X3Bhc3N3b3JkX21haWxfc3ViamVjdCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSBoZXNsbyByZXNldG92w6FubzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTgiIG5hbWU9ImRhdGVSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPlphZGVqdGUgc3Byw6F2bsOpIGRhdHVtLCBuYXDFmcOta2xhZCAyNC4xMi4yMDAxIChkZC5tbS55eXl5KTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTkiIG5hbWU9ImVtYWlsUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5aYWRlanRlIHNwcsOhdm7DvSBlbWFpbCwgbmFwxZnDrWtsYWQgbmFtZUBtYWlsLmNvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjAiIG5hbWU9ImZsb2F0UmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5aYWRlanRlIGRlc2l0aW5uw6kgxI3DrXNsbywgbmFwxZnDrWtsYWQgMS4wMDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjEiIG5hbWU9Im51bWJlclJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+WmFkZWp0ZSBjZWzDqSDEjcOtc2xvLCBuYXDFmcOta2xhZCAxMDA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIyIiBuYW1lPSJwaG9uZVJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+WmFkZWp0ZSBzcHLDoXZuw6kgdGVsLiDEjcOtc2xvLCBuYXDFmcOta2xhZCArNDkgMDEyMyAxMjMxMjM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIzIiBuYW1lPSJ0aW1lUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5aYWRlanRlIHNwcsOhdm7DvSDEjWFzLCBuYXDFmcOta2xhZCAxMjoyMyAoaGg6bW0pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3ciPgorICAgIDx2YWx1ZT5IZXNsbyB6YWJlenBlxI1lbm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI1IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd19wYXNzd29yZExhYmVsIj4KKyAgICA8dmFsdWU+SGVzbG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI2IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZExhYmVsIj4KKyAgICA8dmFsdWU+UGxhdG5vc3Qgb3Bha292w6Fuw608L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI3IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZCI+CisgICAgPHZhbHVlPk5la29uZcSNbsSbPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyOCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWQiPgorICAgIDx2YWx1ZT5PcGFrb3ZhbsSbPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyOSIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWQiPgorICAgIDx2YWx1ZT5KZW4gamVkbm91PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWRGcm9tTGFiZWwiPgorICAgIDx2YWx1ZT5QbGF0w60gb2Q6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMSIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWRUb0xhYmVsIj4KKyAgICA8dmFsdWU+UGxhdMOtIGRvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzIiIG5hbWU9Imludml0YXRpb25fd2luZG93X01haWxTdWJqZWN0Ij4KKyAgICA8dmFsdWU+UG96dsOhbmthIGRvICRBUFBfTkFNRTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzMiIG5hbWU9Imludml0YXRpb25fZXJyb3IiPgorICAgIDx2YWx1ZT5Qcm8gdGVudG8ga8OzZCBwb3p2w6Fua3kgbmVuw60gxb7DoWRuw6EgcG96dsOhbmthIGRvc3R1cG7DoTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzQiIG5hbWU9Imludml0YXRpb25fZXJyb3IiPgorICAgIDx2YWx1ZT5Qb3p2w6Fua2EgYnlsYSBwb3XFvml0YS4gVGVudG8gdHlwIHBvenbDoW5reSBuZW3Fr8W+ZSBiw710IHpub3Z1IHBvdcW+aXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzNSIgbmFtZT0iaW52aXRhdGlvbl9lcnJvciI+CisgICAgPHZhbHVlPlRlbnRvIGvDs2QgcG96dsOhbmt5IGplIMWhcGF0bsO9LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzYiIG5hbWU9Imludml0YXRpb25fcGFzcyI+CisgICAgPHZhbHVlPkhlc2xvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzciIG5hbWU9Imludml0YXRpb25fcGFzc19idG4iPgorICAgIDx2YWx1ZT5aa29udHJvbHVqdGUgaGVzbG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM4IiBuYW1lPSJpbnZpdGF0aW9uX3Bhc3NfZXJyb3IiPgorICAgIDx2YWx1ZT7FoHBhdG7DqSBoZXNsbyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM5IiBuYW1lPSJCcm93c2VyIj4KKyAgICA8dmFsdWU+WnZ1a19PYnJhejwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDAiIG5hbWU9ImF1ZGlvX3ZpZGVvIj4KKyAgICA8dmFsdWU+U3luY2hyb25penVqaSBadnVrL09icmF6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0MSIgbmFtZT0iZXJyb3JDb2RlX2ludmFsaWRTZXNzaW9uIj4KKyAgICA8dmFsdWU+VcW+LiDDusSNZXQgdiBwb8WZw6Fka3UsIGFsZSBwxZlpcG9qZW7DrSBuZW7DrSBha3Rpdm7DrSwgbmVibyByZWdpc3Ryb3ZhbsOpIG5hIHNlcnZlcnUuIE11c8OtdGUgc2Ugem5vdnUgcMWZaWhsw6FzaXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0MiIgbmFtZT0iZXJyb3Jjb2RlX3NldFVzZXJPYmplY3QiPgorICAgIDx2YWx1ZT5TZXplbsOtIG5lbsOtIHDFmWlobMOhxaFlbm8sIG5lYm8gbmVtw6F0ZSBhZG1pbmlzdHLDoXRvcnNrw6EgcHLDoXZhLiBTT0FQIGJyw6FuYSB2ecW+YWR1amUgcHLDoXZhIGFkbWluaXN0csOhdG9yYSBwcm8gemFsb8W+ZW7DrSB1xb5pdmF0ZWxlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDMiIG5hbWU9ImVycm9yY29kZV9sb2dpbkJ5UmVtb3RlVXNlciI+CisgICAgPHZhbHVlPlNlemVuw60gbmVtw6Egc3BvamVuw60gbmEgdnpkw6FsZW7DqSB1xb5pdmF0ZWxza8OpIGRhdGEuIE5lbcWvxb5ldGUgcMWZaXN0dXBvdmF0IGsgU09BUCBicsOhbsSbIHDFmWVkIHZzdHVwZW0gZG8gYXBsaWthY2UsIG5lYm8gcG91xb7DrXbDoXRlIMWhcGF0bsOpIElEIHNlemVuw608L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ0IiBuYW1lPSJkZWJ1Z19tZXNzYWdlX3JlY29yZGluZyI+CisgICAgPHZhbHVlPlrDoXpuYW15IGpzb3UgcG91emUgYmV0YSB2ZXJ6ZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ1IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWFZhbHVlIj4KKyAgICA8dmFsdWU+eDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDYiIG5hbWU9InByb3BlcnR5UGFuZWxYVmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPm9zYSB4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0NyIgbmFtZT0icHJvcGVydHlQYW5lbFlWYWx1ZSI+CisgICAgPHZhbHVlPnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ4IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWVZhbHVlTGFiZWwiPgorICAgIDx2YWx1ZT5vc2EgeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDkiIG5hbWU9InByb3BlcnR5UGFuZWxXaWR0aFZhbHVlIj4KKyAgICA8dmFsdWU+xaE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUwIiBuYW1lPSJwcm9wZXJ0eVBhbmVsV2lkdGhWYWx1ZUxhYmVsIj4KKyAgICA8dmFsdWU+xaHDrcWZa2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUxIiBuYW1lPSJwcm9wZXJ0eVBhbmVsSGVpZ2h0VmFsdWUiPgorICAgIDx2YWx1ZT52PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1MiIgbmFtZT0icHJvcGVydHlQYW5lbEhlaWdodFZhbHVlTGFiZWwiPgorICAgIDx2YWx1ZT52w73FoWthPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1MyIgbmFtZT0icHJvcGVydHlPcGFjaXR5U2xpZGVyIj4KKyAgICA8dmFsdWU+Wm3Em25hIHByxa9obGVkbm9zdGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU0IiBuYW1lPSJicm93c2VyT3BlbiI+CisgICAgPHZhbHVlPlByxa96a3VtbsOtayBvdGV2xZllbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTUiIG5hbWU9ImJyb3dzZXJDbG9zZSI+CisgICAgPHZhbHVlPlByxa96a3VtbsOtayB1emF2xZllbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTYiIG5hbWU9ImNvbm5lY3Rpb25Mb3N0TWVzc2FnZSI+CisgICAgPHZhbHVlPlNwb2plbsOtIHNlIHNlcnZlcmVtIGJ5bG8gcMWZZXJ1xaFlbm8uIE11c8OtdGUgem5vdnVuYWhyw6F0IGFwbGlrYWNpICh6a29udHJvbHVqdGUgVmHFoWkgc8OtxaUpLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTciIG5hbWU9IjU1NyI+CisgICAgPHZhbHVlPlVrYXpvdsOhdGtvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1OCIgbmFtZT0ic3luYyBtZXNzYWdlIGhlYWRlciI+CisgICAgPHZhbHVlPlN5bmNocm9uaXp1amk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU5IiBuYW1lPSJTeW5jaHJvbml6aW5nIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TeW5jaHJvbml6dWppIHXFvml2YXRlbGUsIMSNZWtlanRlIHByb3PDrW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYwIiBuYW1lPSJleHBvcnRUb1NWRyI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O05hxI10aSBqYWtvIFNWRyZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYxIiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7TmHEjXRpIGpha28gUE5HJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjIiIG5hbWU9ImV4cG9ydFRvSW1hZ2UiPgorICAgIDx2YWx1ZT4mbHQ7dSZndDtOYcSNdGkgamFrbyBKUEcmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MyIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O05hxI10aSBqYWtvIFBERiZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY0IiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7TmHEjXRpIGpha28gVElGJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjUiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5QxZlpcG9tw61ua2E6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2NiIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkthdGVnb3JpZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY3IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+T3Bha292w6Fuw606PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2OCIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPm5vbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY5IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+VW3DrXN0xJtuw606PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MCIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPlphxI3DoXRlazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzEiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5Lb25lYzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzIiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5UaXR1bDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTczIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+S29tZW50w6HFmTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc0IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+SW52aXRlIFBlb3BsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzUiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5EZW5uxJs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc2IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+TcSbc8OtxI1uxJs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc3IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+Um/EjW7EmzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzgiIG5hbWU9ImFsZXJ0Ij4KKyAgICA8dmFsdWU+U2Noxa96a2Ega29uxI3DrSBwb3V6ZSBwb2t1ZCBzY2jFr3prYSB6YcSNYWxhITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzkiIG5hbWU9ImFsZXJ0Ij4KKyAgICA8dmFsdWU+WmFkZWp0ZSBwcm9zw61tIG5hZHBpcyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgwIiBuYW1lPSI1ODAiPgorICAgIDx2YWx1ZT5SVEw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgxIiBuYW1lPSI1ODEiPgorICAgIDx2YWx1ZT5Ba3RpdnVqdGUgcG91emUgcG9rdWQgcMOtxaFldGUgeiBwcmF2YSBkbyBsZXZhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MiIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT5SeWNobMOhIG5hdmlnYWNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MyIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT5aw6F6bmFteSB6IGtvbmZlcmVuY8OtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4NCIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT5TY2jFr3prYSAtIFZ5dHZvxZl0ZSBrb25mZXJlbmNlIHNlIDQgKG1heCAxNikgw7rEjWFzdG7DrWt5Jmx0O2JyLyZndDt2xaFpY2huaSBtb2hvdSBwb3XFvsOtdmF0IHp2dWsgYSBvYnJhejwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODUiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+UMWZZWRuw6HFoWthIC0gVnl0dm/FmXRlIGtvbmZlcmVuY2kgYcW+IHMgMjAwIMO6xI1hc3Ruw61reSZsdDtici8mZ3Q7UG91emUgbW9kZXLDoXRvciBtxa/FvmUgcG91xb7DrXZhdCB6dnVrIGEgb2JyYXo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg2IiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPlR2b3JiYSB1xb5pdmF0ZWzFrywgbcOtc3Rub3N0w60sIG9yZ2FuaXphY8OtJmx0O2JyLyZndDsgKyB6bcSbbmEga29uZmlndXJhY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg3IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5Vxb5pdmF0ZWzDqSB2IHTDqXRvIG3DrXN0bm9zdGkgdGXEjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODgiIG5hbWU9InJvb20gQWRtaW5pc3RyYXRpb24gcm9vbWNsaWVudHMgbGlzdCI+CisgICAgPHZhbHVlPklEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4OSIgbmFtZT0icm9vbSBBZG1pbmlzdHJhdGlvbiByb29tY2xpZW50cyBsaXN0Ij4KKyAgICA8dmFsdWU+TG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkwIiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5EPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5MSIgbmFtZT0ic3dmIHN5bmMgbWVzc2FnZSI+CisgICAgPHZhbHVlPk5haHLDoXbDoW0gZG9rdW1lbnQuIFBvxaFrZWp0ZSBwcm9zw61tIG5hIHN5bmNocm9uaXphY2kgdsWhZWNoIHXFvml2YXRlbMWvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTIiIG5hbWU9InVwbG9hZCBkaWFsb2ciPgorICAgIDx2YWx1ZT5OYWhyw6Fubywga29udmVydHVqaSBkb2t1bWVudCAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkzIiBuYW1lPSJ1cGxvYWQgZGlhbG9nIj4KKyAgICA8dmFsdWU+T2RlxaFsaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTQiIG5hbWU9InVwbG9hZCBkaWFsb2ciPgorICAgIDx2YWx1ZT5WeWJlcnRlIHNvdWJvciB6IFZhxaFlaG8gZGlza3UuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NSIgbmFtZT0idXBsb2FkIERpYWxvZyI+CisgICAgPHZhbHVlPlpydcWhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NiIgbmFtZT0idXBsb2FkIERpYWxvZyI+CisgICAgPHZhbHVlPlZ5YmVyIHNvdWJvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTciIG5hbWU9ImFkbWluaXN0cmF0aW9uIG5hdmlnYXRpb24iPgorICAgIDx2YWx1ZT5QxZlpcG9qZW7DrTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTgiIG5hbWU9ImNvbmZhZG1pbiB2YWx1ZSBsaXN0Ij4KKyAgICA8dmFsdWU+SG9kbm90YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTkiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5TdHJlYW1pZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDAiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDEiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5QxZlpcG9qZW5pIHBvdMOpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwMiIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPk3DrXN0bm9zdCAvIE1vxb5ub3N0aTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDMiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5PZHBvaml0IHXFvml2YXRlbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA0IiBuYW1lPSJraWNrIHVzZXIgY29uZmlybWF0aW9uIGRpYWxvZyI+CisgICAgPHZhbHVlPk9kcG9qaXQgdcW+aXZhdGVsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDUiIG5hbWU9ImtpY2sgdXNlciBjb25maXJtYXRpb24gZGlhbG9nIj4KKyAgICA8dmFsdWU+T3ByYXZkdSBjaGNldGUgb2Rwb2ppdCB1xb5pdmF0ZWxlPyZsdDtici8mZ3Q7IFRvdG8gcG91emUgb2Rwb2rDrSB1xb5pdmF0ZWxlIG9kIGRhbsOpIG3DrXN0bm9zdGkuIFXFvml2YXRlbCBzZSBtxa/FvmUgb3DEm3QgcMWZaWhsw6FzaXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwNiIgbmFtZT0ia2ljayB1c2VyIG1lc3NhZ2UgZGlhbG9nIj4KKyAgICA8dmFsdWU+VmHFoWUgc2V6ZW7DrSBieWxvIHVrb27EjWVubyBhZG1pbmlzdHLDoXRvcmVtLCBuZWJvIG1vZGVyw6F0b3JlbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA3IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Bob25lIj4KKyAgICA8dmFsdWU+VGVsZWZvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDgiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPlXFvml2YXRlbCBqZSBtb2RlcsOhdG9yIHTDqXRvIG3DrXN0bm9zdGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA5IiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5Vxb5pdmF0ZWwgbcOhIHBvdm9sZW5vIGtyZXNsaXQgbmEgdGFidWxpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMCIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+KFJlKSBTdGFydCBadnVrL09icmF6LCBuZWJvIHptxJtuYSBuYXN0YXZlbsOtIHphxZnDrXplbsOtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMSIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+UG92b2xpdCB0b211dG8gdcW+aXZhdGVsaSBrcmVzbGl0IG5hIHRhYnVsaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTIiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPk9kZWptb3V0IG1vxb5ub3N0IGtyZXNsZW7DrSBuYSB0YWJ1bGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEzIiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+VcW+aXZhdGVsw6k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE0IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+U291Ym9yeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTUiIG5hbWU9ImNvbmZlcmVuY2VQYW5lbHMiPgorICAgIDx2YWx1ZT5UYWJ1bGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE2IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+UG9rZWM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE3IiBuYW1lPSJvcmdhbml6YXRpb24gY2hvb3NlIGluZm8iPgorICAgIDx2YWx1ZT5Ww6HFoSB1xb5pdmF0ZWxza8O9IMO6xI1ldCBqZSBwxZlpxZlhemVuIGRvIHbDrWNlIG9yZ2FuaXphY8OtLiBQcm8gdG90byBzZXplbsOtIHZ5YmVydGUgamVkbnUgeiBuaWNoLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTgiIG5hbWU9ImVycm9yIG1lc3NhZ2Ugcm9vbSBmdWxsIj4KKyAgICA8dmFsdWU+VGhpcyByb29tIGlzIGZ1bGwgYXQgdGhlIG1vbWVudC4gUGxlYXNlIHRyeSBhZ2FpbiBsYXRlci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE5IiBuYW1lPSJyb29tdHlwZXMiPgorICAgIDx2YWx1ZT5Sb29tIFR5cGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIwIiBuYW1lPSJhcHBvaW50ZWRfcm9vbSI+CisgICAgPHZhbHVlPkFwcG9pbnRtZW50IFJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIxIiBuYW1lPSJzZXJ2ZXJ0aW1lIj4KKyAgICA8dmFsdWU+U2VydmVyIFRpbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIyIiBuYW1lPSJpbnZfcmVtaW5kZXJfdGVtcGxhdGVfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSAtIFJlbWluZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyMyIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfZnJvbSI+CisgICAgPHZhbHVlPk1lc3NhZ2UgZnJvbSBVc2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjQiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X21lc3NhZ2UiPgorICAgIDx2YWx1ZT5NZXNzYWdlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjUiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2NsaWNrX3RleHQiPgorICAgIDx2YWx1ZT5DbGljayB0aGlzIGxpbmsgdG8gcGFydGljaXBhdGUgaW4gdGhlIE1lZXRpbmdzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjYiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2NsaWNrX3RleHRfbGluayI+CisgICAgPHZhbHVlPkNsaWNrIGhlcmUgdG8gZW50ZXIgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjciIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2NsaWNrX3RleHRfaGVscCI+CisgICAgPHZhbHVlPmlmIHlvdSBoYXZlIHByb2JsZW1zIHdpdGggdGhlIGxpbmssIHBsZWFzZSBjb3B5IGFuZCBwYXN0ZSB0aGlzIHRvIHlvdXIgYnJvd3Nlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI4IiBuYW1lPSJidG5fc2VhcmNoX2ludGVybiI+CisgICAgPHZhbHVlPnNlYXJjaCBpbnRlcm48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI5IiBuYW1lPSJidG5fc2VhcmNoX2V4dGVybiI+CisgICAgPHZhbHVlPmV4dGVybiB1c2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzAiIG5hbWU9ImxibF9wcmVuYW1lIj4KKyAgICA8dmFsdWU+cHJlIG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMxIiBuYW1lPSJsYmxfbmFtZSI+CisgICAgPHZhbHVlPm5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMyIiBuYW1lPSJsYmxfZW1haWwiPgorICAgIDx2YWx1ZT5FLW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMzIiBuYW1lPSJsb2dvdXRDb25maXJtX3RpdGxlIj4KKyAgICA8dmFsdWU+Q29uZmlybSBsb2dvdXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM0IiBuYW1lPSJsb2dvdXRDb25maXJtX3N1cmVfdG9fbG9nb3V0X3F1ZXN0aW9uIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGxvZ291dCBub3c/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNSIgbmFtZT0ibWFpbiBtZW51Ij4KKyAgICA8dmFsdWU+QWN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzYiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EZW1vIFJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RGVtbyBUaW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzOCIgbmFtZT0ibWVldGluZyBUaW1lciI+CisgICAgPHZhbHVlPk1lZXRpbmcgVGltZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM5IiBuYW1lPSJtZWV0aW5nIFRpbWVyIj4KKyAgICA8dmFsdWU+VGhpcyBSb29tIGlzIGEgRGVtbyBSb29tLiBUbyBkaXNhYmxlIHRoaXMgd2FybmluZyB5b3UgZWl0aGVyIHNob3VsZCBnZXQgYSBwcml2YXRlIG1lZXRpbmcgcm9vbSBmb3IgeW91ciBwZXJzb25hbCB1c2FnZSBvciBzZXQgdXAgYW4gb3duIFNlcnZlci4gWW91IHdpbGwgYmUgYXV0b21hdGljYWxseSBsb2dnZWQgb2ZmIGluOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDAiIG5hbWU9Im1lZXRpbmcgcm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPk1vZGVyYXRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDEiIG5hbWU9Im1vZGVyYXRlZCByb29tIHdhaXRpbmcgbWVzc2FnZSI+CisgICAgPHZhbHVlPlBsZWFzZSB3YWl0IHVudGlsbCB0aGUgTW9kZXJhdG9yIGhhcyBlbnRlcmVkIHRoZSBSb29tLiBUaGUgTW9kZXJhdG9yIGNhbiBiZSBlaXRoZXIgYSBUZWFjaGVyLCBBZG1pbiBvciB0aGUgY3JlYXRvciBvZiB0aGlzIFJvb20uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MiIgbmFtZT0iZXJyb3IgcG9wdXAiPgorICAgIDx2YWx1ZT5PazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDMiIG5hbWU9IndpbmRvdyBzY3JlZW5zaGFyaW5nIj4KKyAgICA8dmFsdWU+SW5jb21pbmcgU2NyZWVuIFNoYXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ0IiBuYW1lPSJ3aW5kb3cgc2NyZWVuIHNoYXJpbmciPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBhIG5ldyBTY3JlZW4gU2hhcmluZyBpbmNvbWluZyBmcm9tIHRoZSBVc2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDUiIG5hbWU9IndpbmRvdyBzY3JlZW4gc2hhcmluZyI+CisgICAgPHZhbHVlPlN0YXJ0IFNoYXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ2IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkFkZCBuZXcgTWVldGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDciIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+TWVldGluZyBSb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0OCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5FdmVudCBSb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0OSIgbmFtZT0ibWFpbiBtZW51IG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Nb2RlcmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1MCIgbmFtZT0ibWVudSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+TW9kZXJhdGUgVXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUxIiBuYW1lPSJtZW51IG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Nb2RlcmF0ZSBSb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTIiIG5hbWU9Im1vZGVyYXRvciBvcmciPgorICAgIDx2YWx1ZT5NPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1MyIgbmFtZT0iY29uZmlybSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+RG8geW91IHdhbnQgdG8gY2hhbmdlIHRoaXMgVXNlciB0byBiZWNvbWUgYSBNb2RlcmF0b3Igb2YgdGhhdCBPcmdhbml6YXRpb24/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1NCIgbmFtZT0iZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPlBsZWFzZSBjaG9vc2UgYW4gT3JnYW5pemF0aW9uIGJlZm9yZSB5b3UgdHJ5IHRvIGFkZCBhIFVzZXIgdG8gaXQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1NSIgbmFtZT0iY2hvb3NlIHVzZXIgd2luZG93Ij4KKyAgICA8dmFsdWU+T3JnYW5pemF0aW9uIC0gTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1NiIgbmFtZT0ibW9kZXJhdG9yIG9yZyB1c2VycyI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBVc2VyIGZyb20gdGhlIE9yZ2FuaXphdGlvbj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU3IiBuYW1lPSJvcmcgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPlRoaXMgVXNlciBpcyBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU4IiBuYW1lPSJvcmcgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPlRoaXMgVXNlciBpcyBOby1Nb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU5IiBuYW1lPSJlcnJvciBtZXNzYWdlIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5EbyB5b3Ugd2FudCB0aGlzIFVzZXIgdG8gYmUgbm90IGEgTW9kZXJhdG9yIG9mIHRoaXMgT3JnYW5pemF0aW9uPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjAiIG5hbWU9Im1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5BZGQgb3IgZGVsZXRlIFVzZXJzIG9yIFJvb21zIHdpdGhpbiB5b3VyIE9yZ2FuaXphdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjEiIG5hbWU9ImRlbGV0ZSBjb25maXJtIHF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHJlY29yZD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYyIiBuYW1lPSJkZWxldGUgY29uZmlybSBxdWVzdGlvbiB1c2VyIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgdXNlciBmcm9tIHlvdXIgb3JnYW5pemF0aW9uPyBZb3Ugd2lsbCBvbmx5IGRlbGV0ZSB0aGUgY29ubmVjdGlvbiBiZXR3ZWVuIHRoZSB1c2VyIGFuZCB5b3VyIG9yZ2FuaXphdGlvbiwgdG8gcmVhbGx5IGRlbGV0ZSB0aGUgdXNlciBpdHNlbGYgeW91IGhhdmUgdG8gbG9naW4gaW50byB0aGUgQWRtaW5pc3RyYXRpb24tUGFuZWwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MyIgbmFtZT0iZXJyb3IgbWVzc2FnZSBzZWxmIGRlbGV0aW5nIj4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBkZWxldGUgeW91ciBvd24gVXNlciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY0IiBuYW1lPSJlcnJvciBtZXNzYWdlIGF1dGgiPgorICAgIDx2YWx1ZT5UaGlzIE1ldGhvZCBuZWVkcyBhIEFkbWluc3RyYXRpb24gQWNjb3VudCB0byBiZSBpbnZva2VkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjUiIG5hbWU9ImVycm9yIG1lc3NhZ2UgU09BUCI+CisgICAgPHZhbHVlPlRoZXJlIHdhcyBubyBTZXNzaW9uIGFzc29jaWF0ZWQgd2l0aCB0aGlzIElELjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjYiIG5hbWU9ImVycm9yIG1lc3NhZ2UgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPlRoaXMgaXMgYW4gQWRtaW5pc3RyYXRvciBvciBNb2RlcmF0b3IgYWNjb3VudC4gWW91IGNhbiBvbmx5IGVkaXQgdGhpcyBhY2NvdW50IHRocm91Z2ggdGhlIEFkbWluaXN0cmF0aW9uIFBhbmVsLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjciIG5hbWU9ImVtYWlsIHZlcmlmaWNhdGlvbiI+CisgICAgPHZhbHVlPlRvIGNvbXBsZXRlIHlvdXIgcmVnaXN0cmF0aW9uIHBsZWFzZSBjbGljayBvbiB0aGUgZm9sbG93aW5nIGxpbmsuIE9yIGNvcHkgdGhlIFVSTCB0byB5b3VyIGJyb3dzZXIgYmFyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjgiIG5hbWU9ImVtYWlsIHZlcmlmaWNhdGlvbiI+CisgICAgPHZhbHVlPkNsaWNrIHRvIHZlcmlmeSB5b3VyIEUtTWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjkiIG5hbWU9ImVycm9yTWVzc2FnZV9Vc2VyQWN0aXZhdGlvblNlcnZsZXQgW0FjdGl2YXRlVXNlcl0iPgorICAgIDx2YWx1ZT5ObyB1c2VyIHdhcyBmb3VuZCBmb3IgdGhpcyBIYXNoLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzAiIG5hbWU9ImVycm9yTWVzc2FnZV9Vc2VyQWN0aXZhdGlvblNlcnZsZXQgW0FjdGl2YXRlVXNlcl0iPgorICAgIDx2YWx1ZT5UaGlzIHVzZXIgaXMgYWxyZWFkeSBhY3RpdmF0ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3MSIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPllvdSBkaWQgc3VjY2Vzc2Z1bGx5IGFjdGl2YXRlIHlvdXIgYWNjb3VudCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjcyIiBuYW1lPSJlcnJvck1lc3NhZ2VfVXNlckFjdGl2YXRpb25TZXJ2bGV0IFtBY3RpdmF0ZVVzZXJdIj4KKyAgICA8dmFsdWU+TG9naW4gTm93PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3MyIgbmFtZT0ibG9naW5FcnJvck1lc3NhZ2UgPSB1c2VyIHdhcyBub3QgYWN0aXZhdGVkIj4KKyAgICA8dmFsdWU+WW91ciBhY2NvdW50IGlzIG5vdCBhY3RpdmF0ZWQuIEZpcnN0IHVzZSB0aGUgbGluayBpbiB0aGUgRW1haWwgeW91J3ZlIHJlY2VpdmVkIGR1cmluZyByZWdpc3RyYXRpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3NCIgbmFtZT0icmVnaXN0ZXIgdmVyaWZpY2F0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Zb3Ugc3VjY2Vzc2Z1bGx5IHNpZ25lZCB1cC4gV2UndmUgc2VuZCBhbiBFTWFpbCB3aXRoIGEgdmVyaWZpY2F0aW9uIENvZGUgdG8geW91ciBNYWlsLiBQbGVhc2UgY2hlY2sgeW91ciBJbmJveC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc1IiBuYW1lPSJwYXJ0aWNpcGFudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5SZW1vdmUgTW9kZXJhdGlvbiBSb2xlIGZyb20gdGhpcyBVc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3NiIgbmFtZT0icGFydGljaXBhbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+R3JhbnQgTW9kZXJhdGlvbiBSaWdodHMgdG8gdGhpcyBVc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3NyIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+VXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzgiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFjY2VzcyB0byB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3OSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+TW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+TW9kZXJhdGlvbjogUGxlYXNlIGNob29zZSBhbnkgVXNlciBvbiB0aGUgTGlzdCB0byBncmFudCBoaW0gYWNjZXNzIHRvIHRoZSBXaGl0ZWJvYXJkLCBNb2RlcmF0aW9uIG9yIFZpZGVvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODEiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlRoaXMgVXNlciBpcyBhbHJlYWR5IE1vZGVyYXRvciwgc28gaGUgaGFzIGF1dG9tYXRpY2FsbHkgdGhlIHJpZ2h0IHRvIGRyYXcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MiIgbmFtZT0iZXZlbnQgdXNlciBsaXN0IGVycm9yIj4KKyAgICA8dmFsdWU+VGhpcyBpcyB5b3UhIFlvdSBjYW5ub3QgcmVtb3ZlIHRoZSBNb2RlcmF0aW9uIHJpZ2h0cyBmcm9tIHlvdXJzZWxmLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODMiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFsbG93IHRoaXMgVXNlciB0byBQdWJsaXNoIGhpcyBBdWRpbyAvIFZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4NCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+UmVtb3ZlIEF1ZGlvL1ZpZGVvIG9mIHRoaXMgVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODUiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkkgd291bGQgbGlrZSB0byBnZXQgdGhlIG1vZGVyYXRpb24gb2YgdGhpcyByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4NiIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+SSB3b3VsZCBsaWtlIHRvIGRyYXcgb24gd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODciIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkkgd291bGQgbGlrZSB0byBzaGFyZSBteSBBdWRpby9WaWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODgiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPllvdSBhcmUgbW9kZXJhdG9yIG9mIHRoaXMgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODkiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPllvdSBhcmUgYWxsb3dlZCB0byBkcmF3IG9uIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkwIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGFsbG93ZWQgdG8gc2hhcmUgeW91ciBBdWRpby9WaWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTEiIG5hbWU9ImVycm9ydHlwZSI+CisgICAgPHZhbHVlPk1lc3NhZ2UgdG8gTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5MiIgbmFtZT0iYXBwbHkgZm9yIG1vZCBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIFVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkzIiBuYW1lPSJhcHBseSBmb3IgbW9kIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGdldCB0aGUgTW9kZXJhdGlvbi4gVXNlIHRoZSBzdGF0dXMgSWNvbnMgbmV4dCB0byB0aGUgdXNlciBpbiB0aGUgTGlzdCBvZiBVc2VycyB0byBhZGQgb3IgcmVtb3ZlIHRoZSBNb2RlcmF0aW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTQiIG5hbWU9ImFwcGx5IGZvciB3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0byBkcmF3IG9uIHdoaXRlYm9hcmQuIFVzZSB0aGUgc3RhdHVzIEljb25zIG5leHQgdG8gdGhlIHVzZXIgaW4gdGhlIExpc3Qgb2YgVXNlcnMgdG8gYWRkIG9yIHJlbW92ZSB0aGUgcmlnaHQgdG8gZHJhdyBhbnl0aGluZyBvbiB0aGUgd2hpdGVib2FyZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk1IiBuYW1lPSI2OTUiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIHNoYXJlIGhpcyBBdWRpby9WaWRlby4gVXNlIHRoZSBzdGF0dXMgSWNvbnMgbmV4dCB0byB0aGUgdXNlciBpbiB0aGUgTGlzdCBvZiBVc2VycyB0byBhZGQgb3IgcmVtb3ZlIHRoZSByaWdodCB0byBzaGFyZSBBdWRpby9WaWRlbyBmb3IgYW55IFVzZXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5NiIgbmFtZT0ibW9kZXJhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+WW91IGhhdmUgdG8gd2FpdCB1bnRpbGwgYSBNb2RlcmF0b3IgZW50ZXJzIHRoZSByb29tLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTciIG5hbWU9ImNhbGVuZGFyIGJ1dHRvbiI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTgiIG5hbWU9ImNhbGVuZGFyIGJ1dHRvbiI+CisgICAgPHZhbHVlPlNhdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk5IiBuYW1lPSJjYWxlbmRhciBjb21wb25lbnQiPgorICAgIDx2YWx1ZT5EYXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAwIiBuYW1lPSJjYWxlbmRhciBjb21wb25lbnQiPgorICAgIDx2YWx1ZT5Nb250aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDEiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPlllYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAyIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+VXBsb2FkIEZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAzIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+QWRkIEZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDQiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5SZWZyZXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwNSIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlRyYXNoIChEcmFnIGFuZCBEcm9wIGl0ZW0gaGVyZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA2IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+TXkgRmlsZXMgKEhvbWUgRHJpdmUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwNyIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlJvb20gRmlsZXMgKFB1YmxpYyBEcml2ZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA4IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+QWRkIEZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA5IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+QWRkIEZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTAiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5EZWxldGUgRm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMSIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkVkaXQgTmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTIiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5OZXcgRm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMyIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBJdGVtPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTQiIG5hbWU9InVzZXIgYWRtaW4iPgorICAgIDx2YWx1ZT5TZWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE1IiBuYW1lPSJ1c2VyIGFkbWluIj4KKyAgICA8dmFsdWU+U2VhcmNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxNiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPk9wZW4gRG9jdW1lbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE3IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+U2hvdyBhbGwgRmlsZXMgKFRyZWUgVmlldyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE4IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+Q2xvc2UgRG9jdW1lbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE5IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+RGVsZXRlIEZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIwIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+WW91IGFyZSBub3QgYWxsb3dlZCB0byBkcmF3IGFueXRoaW5nIG9uIHRoZSBXaGl0ZWJvYXJkLiBZb3UgaGF2ZSB0byBiZWNvbWUgTW9kZXJhdG9yIG9yIGF0IGxlYXN0IGdldCB0aGUgUmlnaHQgdG8gZWRpdCBXaGl0ZWJvYXJkLiBZb3UgbWF5IGFzayBhIE1vZGVyYXRvciB0byBnaXZlIHlvdSB0aGF0IHJpZ2h0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjEiIG5hbWU9InByb3BlcnR5IHBhbmVsIj4KKyAgICA8dmFsdWU+RG9jdW1lbnQgUHJvcGVydGllczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjIiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPlN0YXJ0IENsaWVudCAoZXh0ZXJuYWwpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyMyIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+U3RhcnQgQ2xpZW50IChIVFRQKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjQiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPkEgdXNlciB3YW50IHRvIHNoYXJlIGhpcyBzY3JlZW4uIERvIHlvdSB3YW50IHRvIHNlZSBpdD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI1IiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGN1cnJlbnRseSBzaGFyaW5nIHlvdXIgRGVza3RvcC4gRm9yIHN0b3BwaW5nIHRoZSBTaGFyaW5nIFNlc3Npb24gcGxlYXNlIGhpdCB0aGUgU3RvcCBidXR0b24gaW4gdGhlIFNoYXJpbmcgQ2xpZW50LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjYiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPlNoYXJpbmcgU2Vzc2lvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjciIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPllvdSBhcmUgYWxyZWFkeSBzaGFyaW5nIHlvdXIgZGVza3RvcCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI4IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkRlc2t0b3AgVmlld2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyOSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5FeGl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5EZXNrdG9wIFNoYXJlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzEiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+Q2xpY2sgU3RhcnQgdG8gcHVibGlzaCB5b3VyIHNjcmVlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzIiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U3RhcnQgU2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzMiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U3RvcCBTaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TZWxlY3QgeW91ciBzY3JlZW4gYXJlYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM1IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkNoYW5nZSB3aWR0aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzYiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+VGhlIFNoYXJlciBoYXMgZmluaXNoZWQgdGhpcyBzZXNzaW9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzciIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+Q2hhbmdlIGhlaWdodDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+WC1PZmZzZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM5IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlktT2Zmc2V0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0MCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5XaWR0aDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQxIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkhlaWdodDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQyIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkNvbm5lY3Rpb24gd2FzIGNsb3NlZCBieSBTZXJ2ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQzIiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDQiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+U3RhcnQgRXh0ZXJuYWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ1IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPklmIHlvdSBjbG9zZSB0aGlzIHNlc3Npb24gY29tcGxldGVseSB5b3UgYXJlIG5vdCBhYmxlIHRvIHJlc3RhcnQgdGhlIHZpZXdlciBmb3IgdGhpcyBzZXNzaW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDYiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+Q29uZmlybSBDbG9zaW5nIFZpZXdlciBTZXNzaW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NyIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5TaGFyZSBTY3JlZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ4IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPlJlY29yZCBTZXNzaW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0OSIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPkNvLUJyb3dzaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MCIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPk9vb3BzLCAuLi4gRmlyZWZveCBvbiBXaW5kb3dzIGRvZXMgbm90IHNob3cgY2xlYXIgQ28tQnJvd3NpbmcuIFBsZWFzZSB1c2UgYW5vdGhlciBCcm93c2VyIGZvciB1c2luZyB0aGUgQ28tQnJvd3NpbmcgZmVhdHVyZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUxIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+UHJldmlvdXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUyIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+TmV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTMiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5SZWxvYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU0IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+SG9tZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTUiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5Mb2FkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1NiIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPkFkZCB0aGlzIHdlYnNpdGUgYXMgRGVmYXVsdCB3ZWJzaXRlIHRvIHlvdXIgUHJvZmlsZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU3IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+VGVzdCBTZXR1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTgiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5DaGVjayB5b3UgTWljcm9waG9uZSBhbmQgQ2FtZXJhIHNldHVwIGJlZm9yZSB5b3UgZW50ZXIgYSByb29tIGJ5IHJlY29yZGluZyBzb21lIHNlY29uZHMuIFlvdSBjYW4gdGhlbiByZXBsYXkgeW91ciByZWNvcmRpbmcgdG8gY2hlY2sgeW91ciB2b2ljZSBhbmQgcGljdHVyZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU5IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+RG9uJ3Qgc2hvdyB0aGlzIHRlc3QgYW55bW9yZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjAiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYxIiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+U3RhcnQgQ29uZmVyZW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjIiIG5hbWU9ImVkaXQgdmlkZW8gc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5EbyBub3QgYXNrIGFnYWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MyIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlJFQzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjQiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5QTEFZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NSIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPllvdSBtYXkgcHJvY2VlZCB3aXRob3V0IHRlc3RpbmcgaWYgeW91IGRvIG5vdCBwbGFuIHRvIHB1Ymxpc2ggeW91ciB2b2ljZSBvciBwaWN0dXJlLiBQYXJ0aWNpcGFudHMgd2l0aG91dCBBdWRpbyBvciBWaWRlbyBjYW4gc3RpbGwgdXNlIHRoZSBXaGl0ZWJvYXJkLCBzaGFyZSB0aGVpciBEZXNrdG9wIG9yIHdyaXRlIENoYXQgbWVzc2FnZXMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NiIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlNUT1A8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY3IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+TGV2ZWwtTWV0ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY4IiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+UHJlc3MgU3RhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY5IiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+U3RhcnQgQ29uZmVyZW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzAiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5TdGFydCBFdmVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzEiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5DaG9vc2UgUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzIiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5DaGVjayBTZXR1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzMiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5TdGFydCBDb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NCIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPkhvdyB0byBjb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NSIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlN0YXJ0IFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzYiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5EbyBub3Qgc2hvdyBBdWRpbyAvIFZpZGVvIFRlc3QgKFJlY29yZGluZykgYmVmb3JlIGVudGVyaW5nIGEgQ29uZmVyZW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzciIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT5QdWJsaWMgUm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc4IiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+UHVibGljIFJvb21zIGFyZSBhY2Nlc3NpYmxlIGZvciBhbGwgVXNlcnMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3OSIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPlByaXZhdGUgUm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgwIiBuYW1lPSJQcml2YXRlIFJvb21zIj4KKyAgICA8dmFsdWU+UHJpdmF0ZSBSb29tcyBhcmUgb25seSBhY2Nlc3NpYmxlIGZvciB1c2VycyBvZiB0aGUgc2FtZSBvcmdhbml6YXRpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MSIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPk15IFJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MiIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPlJvb21zIGluIHRoaXMgc2VjdGlvbiBhcmUgY3JlYXRlZCBmb3IgcGVyc29uYWwgdXNhZ2UuIFRoZXJlIGFyZSBzb21lIHN0YW5kYXJkIHJvb21zIHBsdXMgdGhlIG9uZXMgdGhhdCBhcmUgY3JlYXRlZCB0aHJvdWdoIHRoZSBjYWxlbmRhciBhbmQgaGF2ZSBhIHN0YXJ0IGFuZCBhbiBlbmQgZGF0ZS4gVGhlIHJvb21zIGNyZWF0ZWQgdmlhIHRoZSBjYWxlbmRhciBhcmUgb25seSBsaXN0ZWQgaW4gdGhpcyBzZWN0aW9uIGFzIGxvbmcgYXMgdGhleSBhcmUgdmFsaWQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MyIgbmFtZT0icmVzdHJpY3RlZCByb29tIj4KKyAgICA8dmFsdWU+WW91IGhhdmUgdG8gYmUgbW9kZXJhdG9yIHRvIGRvIHRoaXMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NCIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT5BcHBseSBmb3IgbW9kZXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODUiIG5hbWU9Im1lbnUgb3B0aW9uIj4KKyAgICA8dmFsdWU+QXBwbHkgZm9yIHdoaXRlYm9hcmQgYWNjZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NiIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT5BcHBseSBmb3IgY2FtZXJhL21pY3JvcGhvbmUgYWNjZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NyIgbmFtZT0iZXJyb3IgbWVzc2FnZSBzb2FwIHNlY3VyZSBsb2dpbiI+CisgICAgPHZhbHVlPlRoaXMgU2Vzc2lvbiBIYXNoIHdhcyBhbHJlYWR5IHVzZWQuIFlvdSBjYW5ub3QgdXNlIGl0IHR3aWNlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODgiIG5hbWU9ImRhc2hib2FyZCBidXR0b24iPgorICAgIDx2YWx1ZT5TVEFSVDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODkiIG5hbWU9ImV4aXQgY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPkVYSVQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkwIiBuYW1lPSJjb25mZXJlbmNlIHZpZXciPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZXhpdD8gWW91IG1pZ2h0IHNob3VsZCBjbGVhciB1cGxvYWRlZCBkb2N1bWVudHMsIHdoaXRlYm9hcmQgYW5kIHRoZSBjaGF0IGhpc3RvcnkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5MSIgbmFtZT0iY29uZmVyZW5jZSB2aWV3Ij4KKyAgICA8dmFsdWU+RXhpdCBjb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5MiIgbmFtZT0ibWFpbiBtZW51Ij4KKyAgICA8dmFsdWU+Um9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkzIiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT5DaG9vc2UgYSByb29tIGZvciBhIG1lZXRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk0IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGFuIHVuc2F2ZWQgRXZlbnQgaW4gdGhlIENhbGVuZGFyLiBQbGVhc2UgZWl0aGVyIHNhdmUgaXQgb3IgcmVtb3ZlIGl0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTUiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+UGxlYXNlIGFkZCBhdCBsZWFzdCBvbmUgYXR0ZW5kZWUgZm9yIHlvdXIgbWVldGluZyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk2IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBFdmVudD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk3IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPldhcm5pbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk4IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkFkZCBFdmVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTkiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RGF5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5XZWVrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Nb250aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDIiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RGVzY3JpcHRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAzIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkF0dGVuZGVlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSwgeW91ciBXZWIgQ29uZmVyZW5jaW5nIFBsYXRmb3JtLiBFaXRoZXIgZm9sbG93IHRoZSBJbnN0cnVjdGlvbnMsIHByZXNzIHRoZSBzdGFydCBidXR0b24gdG8gc3RhcnQgdG8gY29uZmVyZW5jZSBpbW1lZGlhdGVsbHkgb3IgeW91IGdvdG8gdGhlIENhbGVuZGFyIGFuZCBzZXQgdXAgYSBDb25mZXJlbmNlIGZvciB0aGUgZnV0dXJlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDUiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPlBsYW4gYSBNZWV0aW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNiIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlRvIHNldCB1cCBhIGNvbmZlcmVuY2UgeW91IGNhbiBhZGQgYSBuZXcgRXZlbnQgaW4gdGhlIENhbGVuZGFyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDciIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5OZWVkIGhlbHA/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwOCIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlJlc3RyaWN0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA5IiBuYW1lPSJsemNhbGVuZGVyIj4KKyAgICA8dmFsdWU+U2VhcmNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMCIgbmFtZT0ibHpjYWxlbmRlciI+CisgICAgPHZhbHVlPkFkZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTEiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBVc2VyIHNlbGVjdGVkLiBQbGVhc2Ugc2VsZWN0IGFuIGl0ZW0gZnJvbSB0aGUgbGlzdCBmaXJzdCBhbmQgdGhlbiBoaXQgYWRkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTIiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5BZGQgQXR0ZW5kZWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEzIiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+U2F2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTQiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5EZWxldGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE1IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RXZlbnQgRGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTYiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EZWZhdWx0IE1vZGVyYXRvcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+U3VwZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE4IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE5IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjAiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5FLU1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIxIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+QWRkIG5ldyBkZWZhdWx0IE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjIiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5JcyBTdXBlciBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIzIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+SWYgdGhlIFJvb20gaXMgbW9kZXJhdGVkLCBVc2VyIHdpdGggTGV2ZWwgTW9kZXJhdG9yIG9yIEFkbWluaXN0cmF0b3IgYXJlIGF1dG9tYXRpY2FsbHkgTW9kZXJhdG9yIGlmIHRoZXkgZW50ZXIgdGhlIFJvb20uIElmIHlvdSBkb24ndCB3YW50IHRvIHNwZWNpZnkgdGhhdCBhbmQgb25seSB3YW50IGEgY2VydGFpbiBVc2VyIHRvIGJlY29tZSBNb2RlcmF0b3IgdXNlIHRoZSBEZWZhdWx0IE1vZGVyYXRvciBvcHRpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkEgU3VwZXIgTW9kZXJhdG9yIGlzIGFsd2F5cyBhIE1vZGVyYXRvciB3aGVuIGhlIGVudGVycyBhIFJvb20sIGFuZCBub2JvZHkgY2FuIHJlbW92ZSB0aGUgTW9kZXJhdGlvbiBGbGFnIGZyb20gaGltPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkFwcGx5IFN1cGVyLU1vZGVyYXRpb24gdG8gVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjYiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5SZW1vdmUgU3VwZXIgTW9kZXJhdGlvbiBmcm9tIFVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjgiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5JZiB5b3UgYWRkIGFuIE9yZ2FuaXphdGlvbiB0byB0aGUgcm9vbSBvbmx5IHVzZXJzIG9mIHRoYXQgT3JnYW5pemF0aW9uIGhhdmUgYWNjZXNzIHRvIGl0IChUaGlzIGlzIG9ubHkgdmFsaWQgaWYgdGhlIGlzUHVibGljIGZsYWcgaXMgc2V0IHRvIGZhbHNlISk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI5IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+TW9kZXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzAiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5MaW1pdGF0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzEiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5Pcmdhbml6YXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODMyIiBuYW1lPSJjb25maXJtIGFjdGlvbiI+CisgICAgPHZhbHVlPkFyZSB5b3Ugc3VyZT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODMzIiBuYW1lPSJjb25maXJtIGRlbGV0ZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBJdGVtPyBZb3UgaGF2ZSB0byBwcmVzcyB0aGUgc2F2ZSBidXR0b24gdG8gc3RvcmUgdGhlIGNoYW5nZXMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNCIgbmFtZT0idXNlciBjaG9vc2UgZXJyb3IiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBVc2VyIHNlbGVjdGVkLiBQbGVhc2Ugc2VsZWN0IGZpcnN0IGJlZm9yZSB5b3UgYWRkIGl0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzUiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5BZGQgbmV3IERlZmF1bHQgTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkRvIHlvdSB3YW50IHRvIGFkZCB0aGUgU3VwZXIgTW9kZXJhdGlvbiBGbGFnIGZvciB0aGlzIFVzZXI/IEEgU3VwZXIgTW9kZXJhdG9yIGlzIG5vdCBvbmx5IE1vZGVyYXRvciBvZiBhIFJvb20sIGJ1dCBhbHNvIG5vIG90aGVyIE1vZGVyYXRvciBjYW4gcmVtb3ZlIHRoZSBNb2RlcmF0aW9uIEZsYWcgZm9yIHRoaXMgVXNlci4gWW91IG5lZWQgdG8gc2F2ZSB0aGUgUm9vbSBPYmplY3QgdG8gc2F2ZSB0aGVzZSBzZXR0aW5ncyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RG8geW91IHdhbnQgdG8gcmVtb3ZlIHRoZSBTdXBlciBNb2RlcmF0aW9uIEZsYWcgZm9yIHRoaXMgVXNlcj8gWW91IG5lZWQgdG8gc2F2ZSB0aGUgUm9vbSBPYmplY3QgdG8gc2F2ZSB0aGVzZSBzZXR0aW5ncyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM4IiBuYW1lPSJzdXBlciBtb2RlcmF0b3IiPgorICAgIDx2YWx1ZT5UaGlzIFVzZXIgaXMgYSBTdXBlci1Nb2RlcmF0b3IuIFlvdSBjYW5ub3QgcmVtb3ZlIHRoZSBNb2RlcmF0aW9uIGZsYWcgZnJvbSBhIFN1cGVyLU1vZGVyYXRvciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM5IiBuYW1lPSJjb25maXJtIGRlbGV0ZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGaWxlL0ZvbGRlcj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQwIiBuYW1lPSJjb25maXJtIGRlbGV0ZSI+CisgICAgPHZhbHVlPkRlbGV0ZSBGaWxlL0ZvbGRlcj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQxIiBuYW1lPSJzYWx1dGF0aW9uIj4KKyAgICA8dmFsdWU+TXJzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDIiIG5hbWU9InNhbHV0YXRpb24iPgorICAgIDx2YWx1ZT5Eci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQzIiBuYW1lPSJwcm9wZXJ0eSBwYW5lbCB3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+UHJvcGVydGllczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDQiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5TaG93IG1vdXNlIHBvc2l0aW9uIHRvIHZpZXdlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ1IiBuYW1lPSJwdWJsaXNoIG9wdGlvbiI+CisgICAgPHZhbHVlPlNoYXJlIEF1ZGlvIHdpdGggU0lQIEFwcGxldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDYiIG5hbWU9InB1Ymxpc2ggb3B0aW9uIj4KKyAgICA8dmFsdWU+U2hhcmUgQXVkaW8gd2l0aCBTSVAgYW5kIFZpZGVvIHdpdGggRmxhc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ3IiBuYW1lPSJkb2N1bWVudCBwYW5lbCI+CisgICAgPHZhbHVlPkZ1bGwtRml0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0OCIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+VmlldyBTY3JlZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ5IiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5UaGUgdXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTAiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPndhbnRzIHRvIHNoYXJlIGl0cyBzY3JlZW4uIERvIHlvdSB3YW50IHRvIHNlZSBpdD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUxIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5DbG9zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTIiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5ab29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MyIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPlRoZSBTZXNzaW9uIHdhcyBjbG9zZWQgYnkgdGhlIHNoYXJpbmcgVXNlciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU0IiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+UGF1c2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU1IiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+TmV3IFNjcmVlbiBTaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1NiIgbmFtZT0icHJlc2VudGVyIG1pbmkgaWNvbiI+CisgICAgPHZhbHVlPk1pbmltaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1NyIgbmFtZT0icHJlc2VudGVyIG1pbmkgaWNvbiI+CisgICAgPHZhbHVlPk1heGltaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1OCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+VmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU5IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5SZWNvcmRpbmcgVGltZWxpbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYwIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5NeSBSZWNvcmRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UHVibGljIFJlY29yZGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYyIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5JbmZvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjQiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkxlbmd0aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjUiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkRhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5CeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjciIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlBMQVk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY4IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5NYWluIC0gVmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY5IiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5SZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcwIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Zb3UgbWF5IHJlY29yZCBhbmQgc2hhcmUgeW91ciBzY3JlZW4gYXQgdGhlIHNhbWUgdGltZS4gVG8gZW5hYmxlIG90aGVycyB0byBzZWUgeW91ciBzY3JlZW4ganVzdCBoaXQgdGhlIHN0YXJ0IGJ1dHRvbiBvbiB0aGUgdG9wLiBUbyBvbmx5IHJlY29yZCB0aGUgU2Vzc2lvbiBpdCBpcyBzdWZmaWNpZW50IHRvIGNsaWNrIHN0YXJ0IHJlY29yZGluZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcxIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5TdGFydCBSZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcyIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5TdG9wIFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzMiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkRvd25sb2FkIHRoZSBGTFYtRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzQiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc1IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5QbGF5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3NiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+U3RvcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzciIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlVzZXIgaGFzIG1pY3JvcGhvbmUgb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc4IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlN0b3AgU2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzkiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+QWxsb3cgVXNlciBRdWVzdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgwIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPlR1cm4gdGhpcyBvZmYgdG8gcHJldmVudCB0aGF0IGFueSB1c2VyIGlzIGRpc3R1cmJpbmcgeW91IGluIHRoaXMgcm9vbS4gRWZmZWN0IGlzIHRoYXQgdGhlIEJ1dHRvbiB0byBhc2sgZm9yIE1vZGVyYXRpb24gKCJJIGhhdmUgYSBxdWVzdGlvbiIpIGlzIG5vdCB2aXNpYmxlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODEiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+UmlnaHRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RG93bmxvYWQgYXMgQVZJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RkxWPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QVZJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UmF3IFNjcmVlbnZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QXVkaW8gb25seTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODciIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlRoZSBoYXZlIGJlZW4gZXJyb3JzIHdoaWxlIHByb2Nlc3NpbmcgdGhlIFJlY29yZGluZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg4IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5UaGUgUmVjb3JkaW5nIGlzIG5vdCB5ZXQgcmVhZHkgZm9yIHdhdGNoaW5nLiBQbGVhc2UgcmV0cnkgaW4gYSBjb3VwbGUgb2YgbWludXRlcyBhZ2Fpbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg5IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Mb2c6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UmVjb3JkZXIgTWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTEiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk9rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MiIgbmFtZT0ic2lwIGFwcGxldCI+CisgICAgPHZhbHVlPlNJUCBBcHBsZXQgaXMgbm90IFJlYWR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MyIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNJUC1BY2NvdW50IFNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NCIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNJUCBzZXR0aW5ncyBmb3IgZWFjaCB1c2VyLiBZb3UgY2FuIHR1cm4gb24gb3Igb2ZmIFNJUCB2aWEgdGhlIEFkbWluaXN0cmF0aW9uICZndDsgQ29uZmlndXJhdGlvbiAoS2V5OiBlbmFibGVfc2lwKS4gVGhlIFNJUCBkYXRhIGZvciBlYWNoIHVzZXIgc2hvdWxkIGJlIGNyZWF0ZWQgYXV0b21hdGljYWxseS4gWW91IGNhbiByZS1jcmVhdGUgdGhlIGRhdGEgYnkgY2hlY2tpbmcgIlJlLWdlbmVyYXRlIFNJUCBEYXRhIjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTUiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TSVAtVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTYiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TaXAtUGFzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTciIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TaXAtQXV0aC1JZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTgiIG5hbWU9InNpcCBzdGF0dXMgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSBMb2dpbiB0byB0aGUgU0lQIEdhdGV3YXkgaGFzIGZhaWxlZC4gWW91IHNob3VsZCBjaGVjayB0aGUgYXV0aGVudGlmaWNhdGlvbiBkYXRhIG9mIHlvdXIgU0lQLVByb3ZpZGVyIGFuZCB0aGUgU0lQLUFjY291bnQgRGF0YSBmb3IgZWFjaCBVc2VyLiBBcyBBZG1pbmlzdHJhdG9yIHlvdSBhcmUgc3RpbGwgYWJsZSB0byBsb2dpbiBhbmQgY2hlY2sgdGhlIENvbmZpZ3VyYXRpb24uIEFzIFVzZXIgb3IgTW9kZXJhdG9yIHlvdSB3aWxsIGJlIGJsb2NrZWQgZnJvbSBhbnkgaW50ZXJhY3Rpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5OSIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIExvZ2luIHRvIHRoZSBTSVAgR2F0ZXdheSBoYXMgZmFpbGVkLiBDb250YWN0IHlvdXIgU2VydmljZSBUZWFtITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDAiIG5hbWU9InNpcCBzdGF0dXMgbWVzc2FnZSI+CisgICAgPHZhbHVlPkxvZ2dpbmcgaW4gdG8gU0lQLUdhdGV3YXkgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwMSIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TG9nZ2luZyBpbiB0byBTSVAtR2F0ZXdheSAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAyIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TaG93IExvZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDMiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkxvZyBtZXNzYWdlcyBmcm9tIHBvc3QgcmVjb3JkZXIgcHJvY2VzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDQiIG5hbWU9InNpcCBsb2dpbiI+CisgICAgPHZhbHVlPlNJUC1BcHBsZXQgTWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDUiIG5hbWU9InNpcCBsb2dpbiI+CisgICAgPHZhbHVlPlRoZSBTSVAtQXBwbGV0IGlzIG5vdCByZWFkeS4gQWNjZXB0IHRoZSBBcHBsZXQgcGxlYXNlIGFuZCBjbGljayBvayE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA2IiBuYW1lPSJtb2RlcmF0b3IgcG9wIHVwIj4KKyAgICA8dmFsdWU+R2V0IE1vZGVyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA3IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+U2F2ZSBBcHBvaW50bWVudCBDaGFuZ2VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwOCIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlRoZSBhcHBvaW50ZW1lbnQgaGFzIGJlZW4gY2hhbmdlZC4gRG8geW91IHdhbnQgdG8gc2F2ZSB0aG9zZSBjaGFuZ2VzPyAmbHQ7YnIvJmd0OyZsdDtici8mZ3Q7QWxsIGF0dGVuZGVlcyBvZiB0aGUgYXBwb2ludG1lbnQgd2lsbCByZWNlaXZlIGEgRU1haWwgd2l0aCB0aGUgdXBkYXRlZCBkYXRlIGFuZCB0aW1lIChkZXBlbmRpbmcgb24gdGhlIG5vdGlmaWNhdGlvbiB0eXBlIG9mIHRoaXMgYXBwb2ludG1lbnQpLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDkiIG5hbWU9ImZsdiByZWNvcmRlciBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VG8gYWNjZXNzIG90aGVyIHJlY29yZGluZ3MgeW91IGhhdmUgdG8gbG9naW4gdGhlICRBUFBfTkFNRSBBcHBsaWNhdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTEwIiBuYW1lPSJpbnRlcnZpZXcgdmlkZW8gcG9kIj4KKyAgICA8dmFsdWU+Q2hvb3NlIHRoZSBVc2VyIGZvciB0aGlzIFZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMSIgbmFtZT0iaW50ZXJ2aWV3IHZpZGVvIGNob29zZSB1c2VyIj4KKyAgICA8dmFsdWU+QXZhaWxhYmxlIFVzZXJzIGZvciB0aGlzIFBvZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTIiIG5hbWU9ImludGVydmlldyBpbmZvIj4KKyAgICA8dmFsdWU+WW91IGFyZSBhIE1vZGVyYXRvciBpbiB0aGlzIEludGVydmlldy4gWW91IGNhbiBkZWNpZGUgd2hvIGlzIHNwZWFraW5nIGluIHRoaXMgaW50ZXJ2aWV3IGFuZCB5b3UgY2FuIHN0YXJ0IC8gc3RvcCB0aGUgcmVjb3JkaW5nIG9mIHRoZSBTZXNzaW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTMiIG5hbWU9ImludGVydmlldyBidXR0b24gcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+U3RhcnQgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxNCIgbmFtZT0iaW50ZXJ2aWV3IGJ1dHRvbiByZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TdG9wIFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTUiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIHJlY29yZGluZyBvZiB0aGUgSW50ZXJ2aWV3IGlzIGFscmVhZHkgc3RhcnRlZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE2IiBuYW1lPSJpbnRlcnZpZXcgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSByZWNvcmRpbmcgaXMgYWxyZWFkeSBzdG9wcGVkIG9yIG5vdCBiZWVuIHN0YXJ0ZWQgeWV0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTciIG5hbWU9ImludGVydmlldyByZWNvcmRpbmcgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSByZWNvcmRpbmcgZm9yIHRoaXMgaW50ZXJ2aWV3IGlzIGFscmVhZHkgc3RhcnRlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE4IiBuYW1lPSJpbnRlcnZpZXcgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTkiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIHBvc3QtcHJvY2Vzc2luZyBvZiBhbiBpbnRlcnZpZXcgdGFrZXMgNSBtaW51dGVzIHBlciAxIG1pbnV0ZSBpbnRlcnZpZXcuIFRoZSBjdXJyZW50IHByb2dyZXNzIG9mIHRoZSBpbnRlcnZpZXcgcG9zdC1wcm9jZXNzaW5nIHRyYW5zY29kaW5nIGlzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjAiIG5hbWU9InNpcCBjcmVhdGlvbiI+CisgICAgPHZhbHVlPllvdSBoYXZlIHRvIGVudGVyIHlvdXIgcGFzc3dvcmQgYWdhaW4gdG8gYXV0byBjcmVhdGUgdGhlIFNJUCBEYXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyMSIgbmFtZT0ic2lwIGNyZWF0aW9uIj4KKyAgICA8dmFsdWU+UmUtZ2VuZXJhdGUgU0lQIERhdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIyIiBuYW1lPSJmaWxlZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IG1vdmUgdGhpcyBmaWxlIG9yIGZvbGRlciBpbnRvIGl0cyBvd24gc3ViIGZvbGRlciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIzIiBuYW1lPSJmaWxlIGV4cGxvcmVyICI+CisgICAgPHZhbHVlPkhvbWUgZHJpdmUgc2l6ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjQiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5QdWJsaWMgZHJpdmUgc2l6ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjUiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5MaWNlbnNlIFNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNiIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPllvdSBjYW4gZWl0aGVyIGJpbmQgdGhlIHVzZXIgdG8gYSBleHBpcmUgRGF0ZSBvciB0byBhIG1heGltdW0gbnVtYmVyIG9mIG1pbnV0ZXMgd2hlbiB5b3UgZW5hYmxlIGxpY2Vuc2luZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI3IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+Q2hlY2sgbGljZW5zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjgiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5GbGF0cmF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjkiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5FeHBpcmUgZGF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzAiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5TZWNvbmRzIGxlZnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMxIiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+VG90YWwgdGltZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzIiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdXIgTGljZW5zZSBoYXMgZXhwaXJlZC4gWW91IG5lZWQgdG8gYnV5IG5ldyBtaW51dGVzIChQYXktcGVyLW1pbnV0ZSkgb3IgYSB2b2x1bWUgZmxhdHJhdGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Q2xpY2sgYW5kIGJ1eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzQiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlRpbWUgTGVmdCBvbiB5b3VyIGFjY291bnQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzNSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+VXNlciBMaWNlbnNlIEluZm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM2IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5JbmZvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzNyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Q2xvc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM4IiBuYW1lPSJsaWNlbnNlLWluZm8iPgorICAgIDx2YWx1ZT5Zb3VyIGxpY2Vuc2UgaGFzIGV4cGlyZWQuIFlvdSBuZWVkIGVpdGhlciB0byBidXkgYSBtaW51dGUgcGFja2FnZSAoUGF5LXBlci1taW51dGUpIG9yIGEgdm9sdW1lIGZsYXRyYXRlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzkiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkxpY2Vuc2Ugc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQwIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIGVpdGhlciBidXkgbWludXRlcyB0byBtYWtlIFdlYi1Db25mZXJlbmNpbmcgKFBheS1wZXItbWludXRlKS4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7IE9yIHlvdSBidXkgYSB2b2x1bWUgZmxhdHJhdGUgYWJvdXQgMy0xMiBtb250aHMuJmx0O2JyLyZndDsmbHQ7YnIvJmd0O1NlbmRpbmcgaW52aXRhdGlvbnMgKGRpcmVjdCBsaW5rcyBpbnRvIENvbmZlcmVuY2UgUm9vbXMpIG9yIGNyZWF0aW5nIGNvbmZlcmVuY2UgUm9vbXMgdmlhIHRoZSBDYWxlbmRhciB3aXRoIGV4dGVybmFsIFVzZXJzIGlzIG9ubHkgYWxsb3dlZCB3aXRoIGEgdm9sdW1lIGZsYXRyYXRlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDEiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSA2MCBNaW51dGVzIDksOTkgRVVSTyAoMTYgQ2VudCBwZXIgTWludXRlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDIiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSA1IGhvdXJzIDE5LDk5IEVVUk8gKDYgQ2VudCBwZXIgbWludXRlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDMiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSAzIG1vbnRoIGZvciAyOSw5OSBFVVJPICg5LDk5IEV1cm8gcGVyIE1vbnRoKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDQiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSA2IG1vbnRoIGZvciAzOSw5OSBFVVJPICg2LDY2IEV1cm8gcGVyIG1vbnRoKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDUiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlBheS1wZXItbWludXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Vm9sdW1lIGZsYXRyYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91IGhhdmUgdW5saW1pdGVkIExpY2Vuc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ4IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3VyIGxpY2Vuc2Ugd2lsbCBleHBpcmUgYXQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0OSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91IGJvdWdodCBQYXktcGVyLW1pbnV0ZS4gWW91IHN0aWxsIGhhdmU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IG5ldyBjcmVkaXQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+V2FudCB5b3VyIG93biBTZXJ2ZXI/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91IHdvdWxkIGxpa2UgdG8gaGF2ZSAkQVBQX05BTUUgaW5zdGFsbGVkIG9uIHlvdXIgU2VydmVyIG9yIGludGVncmF0ZWQgaW50byB5b3VyIE1vb2RsZSwgU3VnYXJDUk0sIFdlYnNpdGUgb3IgSW50cmFuZXQ/IFByaXppbmdzIHN0YXJ0IGF0IDUwMCBFdXJvIHBlciBJbnN0YWxsYXRpb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+T3Igc2VuZCB1cyBhIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU0IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5BbnN3ZXIgdG86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1NSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+TWVzc2FnZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU2IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5TZW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1NyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Q2xpY2sgaGVyZSB0byBnZXQgY29udGFjdCBJbmZvIGFuZCBQcml6aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTgiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNyZWRpdCBDYXJkIERldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU5IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5GaXJzdG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYwIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5MYXN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjEiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNyZWRpdCBDYXJkIFR5cGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYyIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5WSVNBIENhcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYzIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5NYXN0ZXJDYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2NCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+RGlzY292ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY1IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5BbWVyaWNhbiBFeHByZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2NiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q3JlZGl0IENhcmQgTnVtYmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2NyIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+RXhwaXJhdGlvbiBEYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2OCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q2FyZCBWZXJpZmljYXRpb24gTnVtYmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2OSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+QmlsbGluZyBBZGRyZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+QWRkcmVzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzEiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzIiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTczIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5Db3VudHJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U3RhdGUgKE9ubHkgVVMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+WklQPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+QW1vdW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NyIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U3VibWl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3OCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U3RlcCAxOiAkQVBQX05BTUUgLSBQYXltZW50IEZvcm08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc5IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5FTWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODAiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNsaWNrICJDaGVjayBvdXQgd2l0aCBQYXlwYWwiIHRvIHBheS4mbHQ7YnIvJmd0OyBQYXlwYWwgYWNjZXB0cyBWSVNBLCBNYXN0ZXJDYXJkLCBEaXNjb3ZlciBvciBBbWVyaWNhbiBFeHByZXNzLiAmbHQ7YnIvJmd0O0l0IGRvZXMgbm90IHJlcXVpcmUgdG8gc2lnbiB1cCB3aXRoIFBheXBhbC4gJmx0O2JyLyZndDtDaXRpemVucyBmcm9tIEdlcm1hbnkgY2FuIGFsc28gcGF5IHdpdGggZGlyZWN0IGRlYml0IChQZXIgTGFzdHNjaHJpZnQtRWluenVnKS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgxIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5UaGFuayB5b3UgZm9yIGJ1eWluZyAkQVBQX05BTUUuICZsdDtici8mZ3Q7ICZsdDtici8mZ3Q7IEFzIHNvb24gYXMgd2UgcmVjZWl2ZWQgdGhlIHBheW1lbnQgeW91ciBhY2NvdW50IHdpbGwgYmUgdXBkYXRlZC4mbHQ7YnIvJmd0OyBZb3Ugd2lsbCByZWNlaXZlIGFuIEVNYWlsIHdpdGggeW91ciBpbnZvaWNlIGFzIFBERi4mbHQ7YnIvJmd0O1lvdSBjYW4gYWxzbyBjaGVjayBjdXJyZW50IGFuZCBwYXN0IHRyYW5zYWN0aW9ucyBpbiB5b3VyIHByb2ZpbGUgc2V0dGluZ3MuJmx0O2JyLyZndDsmbHQ7YnIvJmd0OyZsdDtici8mZ3Q7WW91IGNhbiBjbG9zZSB0aGlzIGJyb3dzZXIgd2luZG93L3RhYiBub3cgYW5kIHJldHVybiB0byAkQVBQX05BTUUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U3VibWl0IGFuZCBCdXkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MyIgbmFtZT0icGF5bWVudC1mcm9tIj4KKyAgICA8dmFsdWU+Q2xpY2sgYW5kIEJ1eSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg0IiBuYW1lPSJwYXltZW50LWZyb20iPgorICAgIDx2YWx1ZT5TdGVwIDM6ICRBUFBfTkFNRSBQYXltZW50IC0gQ2hlY2sgb3JkZXIgYW5kIGJ1eSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg1IiBuYW1lPSJwYXltZW50LWZyb20iPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4NiIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+UGF5bWVudCByZWNlaXZlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg3IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5IaSw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg4IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5XZSBoYXZlIHJlY2VpdmVkIHlvdXIgcGF5bWVudC4gWW91ciB1c2VyIHByb2ZpbGUgaXMgdXBkYXRlZCBub3cuIFNlZSBhdHRhY2hlZCB5b3VyIEludm9pY2UuIFRoZSBJbnZvaWNlIGFuZCBhbGwgcGFzdCBJbnZvaWNlIGNhbiBhbHNvIGJlIGRvd25sb2FkZWQgaW4geW91ciB1c2VyIHByb2ZpbGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4OSIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+VGhhbmsgeW91IGZvciB1c2luZyAkQVBQX05BTUUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MCIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+UGF5bWVudCBSZWNlaXZlZCAkQVBQX05BTUUgLTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTEiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5QYXltZW50IGFuZCBUcmFuc2FjdGlvbiBTdGF0dXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkyIiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+VHJhbnNjYXRpb24gSGFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTMiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NaW51dGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NCIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPk1vbnRoczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTUiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5FVVI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk2IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+U3RhdHVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NyIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPkludm9pY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk4IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5OSIgbmFtZT0iZXJyb3ItbGljZW5zZS1mbGF0Ij4KKyAgICA8dmFsdWU+WW91IG5lZWQgdG8gYnV5IGEgdm9sdW1lIGZsYXRyYXRlIHRvIGJlIGFibGUgdG8gc2VuZCBpbnZpdGF0aW9ucyBvciBjcmVhdGUgbWVldGluZ3MgdmlhIHRoZSBjYWxlbmRhci4gV2l0aCBQYXktcGVyLW1pbnV0ZSBpdCBpcyBvbmx5IHBvc3NpYmxlIGZvciB5b3UgdG8gYWNjZXNzICRBUFBfTkFNRS4gWW91IGNhbm5vdCBhbGxvdyAzdGggUGFydGllcyB0byBhY2Nlc3MgYSBNZWV0aW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAwIiBuYW1lPSJlcnJvciB1c2VyIj4KKyAgICA8dmFsdWU+VGhpcyBFbWFpbCBpcyBhbHJlYWR5IHVzZWQgYnkgYW5vdGhlciBVc2VyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAxIiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+U0lQLVNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDIiIG5hbWU9InJvb20tYWRtaW4iPgorICAgIDx2YWx1ZT5UaGUgQ29uZmVyZW5jZSBOdW1iZXIgYW5kIFBJTiBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgdmlhIHRoZSBPcGVuWEcgUlBDLUdhdGV3YXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwMyIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlNJUCBOdW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNCIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlBJTjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA1IiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+Q2xlYXIgb2JqZWN0cyBvbiBjdXJyZW50IHNsaWRlIG9ubHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDYiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5Pbmx5IHRoZSBVUkwgZW50ZXJlZCBpbiB0aGUgU3RhdHVzIGJhciBpcyBzZW5kIHRvIHBhcnRpY2lwYW50cyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk1ha2UgVGVhbS1Sb29tcyBbQnJlYWtvdXQgc2Vzc2lvbl08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNob29zZSB1c2VycyBmb3IgYSBuZXcgVGVhbS1Sb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+WW91IGNhbiBjaG9vc2UgdXNlcnMgaGVyZSBhbmQgY3JlYXRlIGEgbmV3IENvbmZlcmVuY2UgUm9vbSAoIlRlYW0gUm9vbSIpIGZvciB0aGVtLiBUaGUgY2hvc2VuIHVzZXJzIHdpbGwgYXV0b21hdGljYWxseSBzd2l0Y2ggdG8gdGhlIG5ldyBUZWFtLVJvb20gb3IgZ2V0IGEgbm90aWZpY2F0aW9uLiBUZWFtLVJvb20gTW9kZXJhdG9ycyB3aWxsIGdldCBhZGRpdGlvbmFsbHkgYSBsaXN0IG9mIGN1cnJlbnQgcm9vbXMgc28gdGhhdCB0aGV5IGNhbiBzd2l0Y2ggdG8gZWFjaCByb29tIGlmIHRoZXJlIGFyZSBpcyBuZWVkIGZvciBhIE1vZGVyYXRvci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Vc2VycyBmb3IgdGhlIG5ldyBUZWFtLVJvb206PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DcmVhdGUgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNob29zZSBhdCBsZWFzdCBvbmUgdXNlciBmb3IgdGhlIFRlYW0tUm9vbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkFkZCB1c2VyIHRvIHRlYW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlJlbW92ZSB1c2VyIGZyb20gVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Vc2VyIGlzIFRlYW0tUm9vbSBNb2RlcmF0b3IgKEhlIGlzIGFibGUgdG8gbWFuYWdlIFRlYW0tUm9vbXMgYW5kIHVzZXJzIG9mIHRoZSBUZWFtLVJvb20gY2FuIGFzayBoaW0gdG8gY29tZSBpbnNpZGUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Sb29tdHlwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+SWYgeW91IGNoZWNrICJGb3JjZSB1c2VyIHRvIHN3aXRjaCB0byBuZXcgVGVhbS1Sb29tIiBhbGwgY2hvc2VuIHVzZXJzIHdpbGwgYXV0b21hdGljYWxseSBzd2l0Y2ggdG8gdGhlIG5ld2x5IGNyZWF0ZWQgVGVhbS1Sb29tLiBPdGhlcndpc2UgdGhleSBnZXQgYSBub3RpZmljYXRpb24gd2l0aCBhIGJ1dHRvbiB0aGF0IHRoZXkgJmx0O2kmZ3Q7Y2FuJmx0Oy9pJmd0OyBzd2l0Y2ggdG8gdGhlIG5ldyByb29tLiBUZWFtLU1vZGVyYXRvcnMgYWx3YXlzIGhhdmUgdGhlIGZyZWUgY2hvaWNlIHRvIG1hbmFnZSB0aGUgVGVhbS1Sb29tcyBhbmQgc3dpdGNoIGJldHdlZW4gdGhlbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk1hbmFnZSBUZWFtLVJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIHN3aXRjaCBoZXJlIGJldHdlZW4gYWxsIFRlYW0tUm9vbXMgdGhhdCB5b3UgYXJlIGFzc2lnbmVkIGFzIFRlYW0tUm9vbSBNb2RlcmF0b3IuIFVzZXJzIGluc2lkZSB0aGUgVGVhbS1Sb29tIGNhbiBzZW5kIHlvdSBhIG1lc3NhZ2UsIGZvciBleGFtcGxlIHRvIGFzayB5b3UgdG8gY29tZSB0byB0aGVpciByb29tIGFuZCBoZWxwIHRoZW0uIFlvdSBjYW4gYWxzbyB0ZXJtaW5hdGUgdGhlIFRlYW0tUm9vbSBhbmQgYWxsIFVzZXJzIHdpbGwgYmUgbG9nZ2VkIG91dC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkZvcmNlIHVzZXIgdG8gc3dpdGNoIHRvIG5ldyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNyZWF0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Vc2VycyBhdmFpbGFibGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkFkZCBhIHVzZXIgd2l0aCB0aGUgcGx1cyBmcm9tIHRoZSBsZWZ0IG9yIHJlbW92ZSBpdCB3aXRoIHRoZSBjcm9zcyBmcm9tIHRoZSByaWdodCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjEpIFRlYW0tUm9vbSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MikgQWRkIHVzZXJzIHRvIHRoZSBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW0tUm9vbSBOYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNoYW5nZSB0byB0aGUgUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U3dpdGNoIHRvIHRoaXMgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZXJtaW5hdGUgVGVhbS1Sb29tIGFuZCBsb2dvdXQgYWxsIFVzZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5OZXcgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBhIG5ldyBUZWFtLVJvb20gYXZhaWxhYmxlIGZvciB5b3UuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Td2l0Y2ggdG8gVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb20gQWN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+WW91IGNhbiByZS1vcGVuIHRoaXMgd2luZG93IHZpYSB0aGUgbWFpbiBtZW51IGluIHRoZSAiQWN0aW9ucyIgc2VjdGlvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlNlbmQgbWVzc2FnZSB0byBUZWFtLVJvb20gTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5OZXcgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBhIG5ldyBUZWFtLVJvb20gYXZhaWxhYmxlLiBZb3UgY2FuIHN3aXRjaCB0byB0aGF0IFJvb20uIFRlYW0tUm9vbXMgYXJlIGxpa2UgIldvcmtncm91cHMiIHdpdGggYWRkaXRpb25hbGx5IHBvc3NpYmlsaXRpZXMgdG8gYXNrIHRoZSBUZWFtLVJvb20gTW9kZXJhdG9yIGZvciBoZWxwLiBZb3VyIFRlYW0tUm9vbXMgYXJlIGFsc28gYXZhaWxhYmxlIGluIHRoZSAiTXkgTWVldGluZ3MiIHNlY3Rpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Td2l0Y2ggdG8gVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DcmVhdGVkIGJ5OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQ4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVhbS1Sb29tIG5hbWU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGlzIFdpbmRvdyB3aWxsIHN0YXkgb3BlbiBldmVuIGlmIHlvdSBsZWF2ZSB0aGUgcm9vbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1MCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJzIGZvciB0aGlzIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MykgT3RoZXIgVGVhbS1Sb29tcyB0aGF0IHlvdSBjb3VsZCBzd2l0Y2ggdG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1MiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlNlbmQgYSBtZXNzYWdlIHRvIHRoZSBUZWFtLVJvb20gTW9kZXJhdG9ycy4gRm9yIGV4YW1wbGUgaWYgeW91IG5lZWQgaGVscCBpbiBNb2RlcmF0aW5nIHRoZSBSb29tIG9yIGlmIHlvdSBoYXZlIGEgcXVlc3Rpb24gYWJvdXQgdGhlIHRvcGljLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U2VuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MikgVXNlcnMgdGhhdCBhcmUgaW52aXRlZCB0byB0aGlzIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+SXMgVGVhbS1Sb29tIE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGhlc2UgYXJlIGFsbCB1c2VycyB0aGF0IHRoZSBtb2RlcmF0b3IgaGFzIGludml0ZWQgdG8gdGhpcyBUZWFtLVJvb20uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBUZWFtLU1vZGVyYXRvciBsb2dnZWQgaW4gYXQgdGhlIG1vbWVudCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1OCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1OSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlBsZWFzZSBoZWxwIHVzLCB3ZSBoYXZlIGEgcHJvYmxlbSBpbiBvdXIgVGVhbS1Sb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+QSB1c2VyIGZyb20gYSBUZWFtLVJvb20gcmVxdWVzdHMgeW91ciBoZWxwLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVhbS1Sb29tIHJlcXVlc3QgZm9yIGhlbHA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2MiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk1lc3NhZ2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Gcm9tOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+WW91IGFyZSBjdXJyZW50bHkgbm90IGluIGFueSBUZWFtLVJvb20uIEJ1dCB5b3UgY2FuIHN3aXRjaCBoZXJlIHRvIGFsbCBUZWFtLVJvb21zIHRoYXQgeW91IGhhdmUgYWNjZXNzIHRvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY1IiBuYW1lPSJiYWNrdXBDb250ZW50Ij4KKyAgICA8dmFsdWU+QmFja3VwIHRoZSBTeXN0ZW0uIFRoZSBCYWNrdXAgaW5jbHVkZXMgYWxsIFVzZXIgZ2VuZXJhdGVkIGRhdGEuIFRoZSBjb25maWd1cmF0aW9uIGlzIG5vdCBpbmNsdWRlZCBhcyB3ZWxsIGFzIHRoZSBsYW5ndWFnZSBsYWJlbHMuIEJlY2F1c2UgdGhvc2UgdmFsdWVzIGFyZSBpbXBvcnRlZCB3aXRoIHRoZSBTeXN0ZW0gSW5zdGFsbGVyLiBUbyB1cGRhdGUgeW91ciBTeXN0ZW0sIGV4cG9ydCB5b3VyIG9sZCBzeXN0ZW0gKDEpIHJlLWluc3RhbGwgaW50byBhIG5ldyBkYXRhYmFzZSB0aGUgbmV3IHBhY2thZ2UgKDIpIGFuZCBpbXBvcnQgdGhlIEJhY2t1cCBmaWxlIGFnYWluICgzKS4gVGhlIEJhY2t1cCBzaG91bGQgYmUgaW1wb3J0ZWQgYmVmb3JlIGdlbmVyYXRpbmcgZGF0YSBpbiB0aGUgbmV3bHkgaW5zdGFsbGVkIHN5c3RlbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2NiIgbmFtZT0iYmFja3VwQ29udGVudCI+CisgICAgPHZhbHVlPlN5c3RlbSBCYWNrdXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2NyIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+QWxsb3cgdXNlciB0byBzaGFyZSBTY3JlZW4vUmVjb3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjgiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPkRlbnkgdXNlciB0byBzaGFyZSBTY3JlZW4vUmVjb3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjkiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPlVzZXIgaXMgTW9kZXJhdG9yLCBoZSBjYW4gZG8gYW55dGhpbmchPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzAiIG5hbWU9ImFwcGx5IGZvciBzY3JlZW4vcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0byBzaGFyZS9yZWNvcmQgc2NyZWVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDcxIiBuYW1lPSJtb2RlcmF0aW9uIG1pbmkgaWNvbnMiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGFsbG93ZWQgdG8gc2hhcmUvcmVjb3JkIHNjcmVlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDcyIiBuYW1lPSJtb2RlcmF0aW9uIG1pbmkgaWNvbnMiPgorICAgIDx2YWx1ZT5BcHBseSBmb3IgcmlnaHQgdG8gc2hhcmUvcmVjb3JkIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3MyIgbmFtZT0ibW9kZXJhdGlvbiBtaW5pIGljb25zIGNvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT5BbGxvdy9EZW55IHJpZ2h0IHRvIHNoYXJlL3JlY29yZCBzY3JlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzQiIG5hbWU9InNvdW5kIGljb24iPgorICAgIDx2YWx1ZT5UdXJuIHNvdW5kIG9mZjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc1IiBuYW1lPSJzb3VuZCBpY29uIj4KKyAgICA8dmFsdWU+VHVybiBzb3VuZCBvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc2IiBuYW1lPSJyb29tIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+QXVkaW8gb25seSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzciIG5hbWU9InJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5UdXJuIHRoaXMgRmxhZyBvbiBhbmQgdGhlIHVzZXJzIHdpbGwgaGF2ZSBvbmx5IHRoZSBBdWRpby1PcHRpb24gYW5kIG5vIFZpZGVvIGluIGEgY29uZmVyZW5jZSByb29tLiBUaGlzIGNhbiBieSBnb29kIHRvIHNhdmUgYmFuZHdpZHRoLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc4IiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5BbGxvdyBSZW1vdGUgQ29udHJvbCAoRHVyaW5nIFNjcmVlbiBTaGFyaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc5IiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5EZW55IFJlbW90ZSBDb250cm9sIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODAiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFwcGx5IGZvciByaWdodCB0byBSZW1vdGUgQ29udHJvbCBTY3JlZW4gKER1cmluZyBTY3JlZW4gU2hhcmluZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MSIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+WW91IGFyZSBhbGxvd2VkIHRvIFJlbW90ZSBDb250cm9sIFNjcmVlbiAoRHVyaW5nIFNjcmVlbiBTaGFyaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgyIiBuYW1lPSJhcHBseSBmb3IgcmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIHJlbW90ZSBjb250cm9sIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MyIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+VXNlciBpcyBNb2RlcmF0b3IsIGhlIGNhbiBkbyBhbnl0aGluZyEgW1JlbW90ZSBEZXNrdG9wIENvbnRyb2xdPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODQiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFsbG93L0RlbnkgcmlnaHQgdG8gUmVtb3RlIENvbnRyb2wgU2NyZWVuIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODUiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPjEpIFlvdXIgUEMgdG8gcmVtb3RlIFBDOiBUbyBjb3B5IGFuZCBwYXN0ZSB0ZXh0IGZyb20geW91ciBjbGlwYm9hcmQgaW50byB0aGUgcmVtb3RlIGNvbnRyb2xsZWQgc2NyZWVuLCBjbGljayBvbiB0aGUgc2NyZWVuLCB0aGVuIHJpZ2h0IGNsaWNrIGluIHRoZSB0ZXh0IGZpZWxkIGFuZCBjaG9vc2UgIkluc2VydCIgZnJvbSB0aGUgY29udGV4dCAocmlnaHQgY2xpY2spIG1lbnUuJmx0O2JyLyZndDsmbHQ7YnIvJmd0OzIpIEZyb20gcmVtb3RlIFBDIHRvIHlvdXIgUEM6IFRvIGNvcHkgdGV4dCBmcm9tIHRoZSByZW1vdGUgUEMgdG8geW91ciBQQydzIGNsaXBib2FyZCwgaGlnaGxpZ2h0IHRoZSB0ZXh0IHdpdGggdGhlIG1vdXNlIG9uIHRoZSByZW1vdGUgc2NyZWVuLCB0aGVuIHJpZ2h0LWNsaWNrIG9uIHRoZSByZW1vdGUgc2NyZWVuIGFuZCBjaG9vc2UgJmx0O2kmZ3Q7Q29weSBoaWdobGlnaHRlZCB0ZXh0Jmx0Oy9pJmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg2IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Db3B5IGFuZCBQYXN0ZSB0ZXh0IGZyb20geW91ciBQQyB0byByZW1vdGUgUEMgYW5kIHZpY2UtdmVyc2EuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODciIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNvcHkgaGlnaGxpZ2h0ZWQgdGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg4IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Ib3cgdG8gY29weSBuIHBhc3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODkiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPlF1YWxpdHkgb2YgdGhlIFNjcmVlblNoYXJlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkwIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5WZXJ5IGhpZ2ggUXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkxIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5IaWdoIFF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5MiIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+TWVkaXVtIFF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5MyIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+TG93IFF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NCIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5lbl9VUzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk1IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPmRlX0RFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTYiIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+S2V5Ym9hcmQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTciIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+Q2xvc2UgV2ViaW5hciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5OCIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5UaGUgV2ViaW5hciBpcyBhbHJlYWR5IGNsb3NlZCwgeW91IHdpbGwgYmUgcmVkaXJlY3RlZCB0byBzb21lIGludGVyZXN0aW5nIG9mZmVyaW5ncyBpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk5IiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPkNsb3NlIFJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMCIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5FeGl0IFVSTDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAxIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPlJvb20gdGVybWluYXRpb24gc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMiIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5JZiB0aGUgcm9vbSBpcyBjbG9zZWQgdXNlcnMgd2lsbCBiZSByZWRpcmVjdGVkIHRvIHRoZSBleGl0IFVSTC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5MZGFwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDQiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDYiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+Q29uZmlnIEZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5MZGFwIENvbmZpZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA4IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwOSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5FbmFibGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTAiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+SW5zZXJ0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JbnNlcnRlZCBieTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEyIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPlVwZGF0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5VcGRhdGVkIGJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTQiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+VGhlIGNvbmZpZyBmaWxlcyBhcmUgaW4gdGhlIGZvbGRlciB3ZWJhcHBzL29wZW5tZWV0aW5ncy9jb25mLiBZb3UgbmVlZCB0byBtYW51YWxseSB1cGxvYWQgdGhlIGZpbGVzIHRvIHRoaXMgZm9sZGVyLiBDaGFuZ2VzIHRvIHRoZSBjb25maWcgZmlsZSBhcmUgaW1tZWRpYXRlbHkgb25saW5lLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE1IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkNvbmZpZyBmaWxlIG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNiIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JZiB5b3UgZW5hYmxlICJBZGQgRG9tYWluIHRvIHVzZXJuYW1lIiB0aGUgdmFsdWUgb2YgdGhlIGZpZWxkICJkb21haW4iIGlzIGFkZGVkIHRvIGVhY2ggbG9naW4gdGhhdCB0aGUgdXNlciBlbnRlcnMgaW4gdGhlIGxvZ2luIGJveC4gVGhpcyBpcyB1c2VmdWwgaWYgdGhlIExvZ2luIGluIHRoZSBMZGFwIGlzIHN0b3JlZCBpbmNsdWRpbmcgdGhlIGRvbWFpbiBuYW1lLiBFeGFtcGxlOiBVc2VyIGVudGVycyAiaGFucyIgZG9tYWluIGlzIHNwZWNpZmllZCBhcyAibG9jYWxob3N0LmNvbSIsIGxvZ2luIHRoYXQgaXMgdmVyaWZpZWQgYWdhaW5zdCBMZGFwIGlzOiBoYW5zQGxvY2FsaG9zdC5jb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5BZGQgRG9tYWluIHRvIHVzZXJuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTgiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+RG9tYWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTkiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+SW5zZXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjAiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+Q29weSBoaWdobGlnaHRlZCB0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjEiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+UmVtb3RlIENsaXBib2FyZCBUZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjIiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+U2hvdyByZW1vdGUgQ2xpcGJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjMiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkRvIG5vdCBzaG93IGFnYWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjQiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNvcHkgdGV4dCBoZXJlIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI1IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0aGUgcmlnaHQgdG8gcmVtb3RlIGNvbnRyb2wgKG9yIHRoZSBtb2RlcmF0aW9uKSB0byBjb3B5IGFuZCBwYXN0ZSB0ZXh0IHRvIG9yIGZyb20gdGhlIHJlbW90ZSBzY3JlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjYiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkVkaXQgZGVmYXVsdCBzZXR0aW5ncyAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNyIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+RG8gbm90IHNob3cgaW5mbyBib3ggaW4gUmVtb3RlIENvbnRyb2wgYWJvdXQgQ29weSBhbmQgUGFzdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyOCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5TYXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjkiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+UmVtb3ZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzAiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzEiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5JbnZpdGUgdXNlciB0byBjb25mZXJlbmNlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMiIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkNob29zZSBhIGNvbmZlcmVuY2Ugcm9vbS4gVGhlIGludml0ZWQgdXNlciB3aWxsIGdldCBhIG1lc3NhZ2Ugd2l0aCB5b3VyIG5hbWUgYW5kIGEgbGluayB0byB0aGUgcm9vbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMyIgbmFtZT0iY2hhdCB1c2VyIj4KKyAgICA8dmFsdWU+Q29ubmVjdGVkIHNpbmNlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM0IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+RW50ZXIgcm9vbSBhZnRlciBzZW5kaW5nIGludml0YXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzNSIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkludml0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM2IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+TWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM3IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0byBpbnZpdGUgeW91IHRvIHRoZSBjb25mZXJlbmNlIHJvb206PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzgiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5JbnZpdGUgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM5IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+U2VuZCBJbnZpdGF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDAiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5kaWQgJmx0O2ImZ3Q7bm90Jmx0Oy9iJmd0OyBhY2NlcHQgeW91ciBpbnZpdGF0aW9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQxIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+QWNjZXB0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDIiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5EZW55PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDMiIG5hbWU9InVzZXIgcHJvZmlsZSI+CisgICAgPHZhbHVlPlRpbWV6b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDQiIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPkV2ZW50IERldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0NSIgbmFtZT0iYXBwb2ludG1lbnQgbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ2IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5EZXNjcmlwdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ3IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5DcmVhdGVkIGJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDgiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5UaW1lWm9uZSBNZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDkiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5DaGVjayAiVGltZVpvbmUgTWVzc2FnZSIgdG8gZ2l2ZSB1c2VycyBhIG1lc3NhZ2UgbmV4dCB0aW1lIHRoZXkgbG9naW4gdG8gdXBkYXRlIHRoZWlyIHByb2ZpbGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTAiIG5hbWU9InRpbWUgem9uZSB1cGRhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlBsZWFzZSBjaGVjayB0aGUgdGltZSB6b25lIGluIHlvdXIgdXNlciBwcm9maWxlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUxIiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5OZXcgJEFQUF9OQU1FIGNvbmZlcmVuY2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTIiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkRldGFpbHM6Jmx0O2JyLyZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MyIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3RhcnQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTQiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkVuZDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NSIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2hhbmdlZCAkQVBQX05BTUUgY29uZmVyZW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NiIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+T3JnYW5pemVyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU3IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DYW5jZWxlZCAkQVBQX05BTUUgY29uZmVyZW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1OCIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIGNvbmZlcmVuY2UgUmVtaW5kZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTkiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Db21tdW5pdHkgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlNob3cgY29udGFjdCBkYXRhIHRvIGV2ZXJ5Ym9keTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYxIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+QWRkIGZpZWxkcyBvZiBpbnRlcmVzdCB0aGF0IHlvdSBvZmZlciBvciB0aGF0IHlvdSBhcmUgc2VhcmNoaW5nIHRvIGZpbmQgaW50ZXJlc3RpbmcgcGFydG5lcnMgZm9yIGEgY29uZmVyZW5jZS4gQ29tbWEgc2VwYXJhdGUgdGhlIHRlcm1zIChmb3IgZXhhbXBsZTogTWVkaWNhbCBTZXJ2aWNlLCBIZWFsdGggYXNzdXJhbmNlLCAuLi4pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjIiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NeSBvZmZlcmluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MyIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk15IGludGVyZXN0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY0IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY1IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+VGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2NiIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkZpZWxkcyBvZiBpbnRlcmVzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY3IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+Q29udGFjdCBpbmZvcm1hdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY4IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2hvdyBjb250YWN0IGRhdGEgdG8gY29udGFjdHMgb25seTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY5IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2hvdyBjb250YWN0IGRhdGEgdG8gbm9ib2R5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzAiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NeSBQcm9maWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzEiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5FZGl0IHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzIiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TZWFyY2ggdXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MyIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPldhdGNoIHlvdXIgcHJvZmlsZSBsaWtlIG90aGVyIHNlZSB5b3U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkVkaXQgeW91ciBzZXR0aW5ncywgYWRkIHlvdXIgaW50ZXJlc3RzIHRvIGJlIGZvdW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzUiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TZWFyY2ggZm9yIG90aGVyIHVzZXJzIGFuZCBleHRlbmQgeW91ciBuZXR3b3JrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzYiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+U2VhcmNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzciIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+VXNlciBvZmZlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3OCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5Vc2VyIGxvb2tzIGZvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc5IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkZyZWV0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODAiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgxIiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlRpbWV6b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODIiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+T2ZmZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODMiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+U2VhcmNoczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg0IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlNlYXJjaHJlc3VsdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg1IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkFjdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NiIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5BZGQgdG8gY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NyIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5TZW5kIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4OCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5Db250YWN0cyBhbmQgTWVzc2FnZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4OSIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5QZW5kaW5nIGNvbnRhY3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTAiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5BY2NlcHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkRlbnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MiIgbmFtZT0idXNlciBjb250YWN0IHJlcXVlc3QiPgorICAgIDx2YWx1ZT5IaSw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MyIgbmFtZT0idXNlciBjb250YWN0IHJlcXVlc3QiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGFkZCB5b3UgYXMgY29udGFjdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NCIgbmFtZT0idXNlciBjb250YWN0IHJlcXVlc3QiPgorICAgIDx2YWx1ZT5DaGVjayB5b3VyIGNvbnRhY3QgcmVxdWVzdHMgaW4gJEFQUF9OQU1FIG9yIGNsaWNrIG9uIHRob3NlIGxpbmtzIHRvIGFjY2VwdCBvciBkZW55IHRoZSByZXF1ZXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTUiIG5hbWU9ImFkZCB1c2VyIGNvbnRhY3QiPgorICAgIDx2YWx1ZT5UaGlzIHVzZXIgaXMgYWxyZWFkeSBpbiB5b3VyIGNvbnRhY3QgbGlzdCBvciBoYXMgcmVjZWl2ZWQgYW4gaW52aXRhdGlvbiB0byB5b3VyIGNvbnRhY3QgbGlzdCB0aGF0IGlzIG5vdCBhbnN3ZXJlZCB5ZXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTYiIG5hbWU9InVzZXIgY29udGFjdCBtYWlsIj4KKyAgICA8dmFsdWU+WW91ciBjb250YWN0IGxpc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkVkaXQgeW91ciBjb250YWN0IGFuZCBtZXNzYWdlcywmbHQ7YnIvJmd0OyBtYW5hZ2UgeW91ciBwZW5kaW5nIGNvbnRhY3RzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk4IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+Y29uZmlybWVkIHlvdSBhcyBjb250YWN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk5IiBuYW1lPSJjaGF0IGluZm8gbWVzc2FnZSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAwIiBuYW1lPSJjaGF0IGxvZyBpY29uIj4KKyAgICA8dmFsdWU+U2hvdyAvIENvcHkgY2hhdCBsb2c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMSIgbmFtZT0iY2hhdCBsb2cgd2luZG93Ij4KKyAgICA8dmFsdWU+Q2hhdCBMb2c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RnJvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TdWJqZWN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDYiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1lc3NhZ2VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDciIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk5ldyBNYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkNsaWNrIHRvIHdyaXRlIGEgbmV3IG1lc3NhZ2UgdG8gYW55IG9mIHlvdXIgY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwOSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+V3JpdGUgbmV3IG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VG86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlN1YmplY3Q6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTIiIG5hbWU9IndoaXRlYm9hcmQgZnVsbC1maXQiPgorICAgIDx2YWx1ZT5FbmFibGUgZnVsbCBmaXQgYW5kIHRoZSB3aGl0ZWJvYXJkIHdpbGwgem9vbSB0aGUgd2hvbGUgd2hpdGVib2FyZCBzbyB0aGF0IGFsbCZsdDtici8mZ3Q7ZG9jdW1lbnRzIGFyZSB2aXNpYmxlIGFjY29yZGluZyB0byBlYWNoIHBhcnRpY2lwYW50cyBzY3JlZW4gcmVzb2x1dGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMyIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+S2ljayB1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTQiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPllvdSBjYW5ub3Qga2ljayB5b3Vyc2VsZiBvdXQgb2YgdGhlIGNvbmZlcmVuY2Ugcm9vbSEgSWYgeW91IHdhbnQgdG8gbGVhdmUgaXQgY2xvc2UgdGhlIGJyb3dzZXIgb3IgdXNlIHRoZSBleGl0IGJ1dHRvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNSIgbmFtZT0ia2ljay11c2VyIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRpc2Nvbm5lY3QgdGhpcyB1c2VyIGZyb20gdGhpcyBjb25mZXJlbmNlIHJvb20/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTYiIG5hbWU9ImtpY2stdXNlciI+CisgICAgPHZhbHVlPkNvbmZpcm0gYWN0aW9uIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE3IiBuYW1lPSJraWNrLXVzZXIiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IGtpY2sgYSBTdXBlci1Nb2RlcmF0b3Igb3V0IG9mIGEgcm9vbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxOCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Qm9vayBjb25mZXJlbmNlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxOSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3RhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZCBhbiBvcHRpb25hbCByZXF1ZXN0IGZvciBtZWV0aW5nIHRvIHRoZSBtZXNzYWdlIGFuZCBjcmVhdGUgYSBjb25mZXJlbmNlIHJvb20uIFRoZSBFdmVudCBpcyB0aGVuIGNvcGllZCBpbiB0aGUgY2FsZW5kYXIgb2YgZXZlcnkgcGFydGljaXBhbnQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkluYm94PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VHJhc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhpcyBpcyB5b3UhIFlvdSBjYW5ub3QgYWRkIHlvdXJzZWxmIGFzIHlvdXIgb3duIGNvbnRhY3QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjYiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5UaGUgdXNlciBpcyBhbHJlYWR5IGRlbmllZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoZSB1c2VyIGlzIGFscmVhZHkgYXBwcm92ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjgiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5UaGlzIHVzZXIgY29udGFjdCBoYXNoIGlzIGludmFsaWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjkiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Vc2VyIGFkZGVkIHRvIGNvbnRhY3QgbGlzdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlVzZXIgZGVuaWVkIGFzIGNvbnRhY3QgYW5kIHJlbW92ZWQgZnJvbSBwZW5kaW5nIGNvbnRhY3QgbGlzdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIHN1Y2ggY29udGFjdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPldvdWxkIHlvdSByZWFsbHkgbGlrZSB0byByZW1vdmUgdGhhdCBjb250YWN0PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMzIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+Q29uZmlybSBjb250YWN0IHJlbW92YWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkRlbGV0ZSBjb250YWN0IGZyb20gbGlzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM1IiBuYW1lPSJ1c2VyIHByb2ZpbGUiPgorICAgIDx2YWx1ZT5Vc2VyIFByb2ZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNiIgbmFtZT0idXNlciBwcm9maWxlIj4KKyAgICA8dmFsdWU+U2hvdyB1c2VyIHByb2ZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWVzc2FnZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzOCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VhcmNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbGVjdCBhbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0MCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VsZWN0IG5vbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0MSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VsZWN0IHVucmVhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWxlY3QgcmVhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Nb3ZlIHRvIGZvbGRlciAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIG5ldyBmb2xkZXIgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRlbGV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ2IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EZWxldGVkIG1haWxzIGFyZSBzdGlsbCBpbiB5b3VyIHRyYXNoIGZvbGRlciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWFyayB1bnJlYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0OCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWFyayByZWFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFuc3dlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BbnN3ZXIgZXZlcnlib2R5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkZvcndhcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWN0aW9ucyAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlNlbmQgcHJpdmF0ZSBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk5vdGhpbmcgc2VsZWN0ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1vdmUgdG8gSW5ib3g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGVsZXRlIChmaW5hbCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1OCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIGZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgZm9sZGVycyBhbmQgb3JnYW5pemUgeW91ciBtZXNzYWdlcyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIGZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPkRlbGV0ZSBmb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPllvdSBjYW5ub3QgZGVsZXRlIHRoaXMgZm9sZGVyLCB0aGVyZSBhcmUgc3RpbGwgbWVzc2FnZXMgaW5zaWRlISBEZWxldGUgZmlyc3QgdGhlIG1lc3NhZ2VzIG9yIG1vdmUgdGhlbSB0byBhbm90aGVyIGZvbGRlci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPkVkaXQgbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGZvbGRlcj8gVGhlcmUgaXMgbm8gd2F5IHRvIHVuZG8gdGhhdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPllvdXIgcmVxdWVzdCB3YXMgc2VuZCB0byB0aGUgdXNlci4gVGhlIHVzZXIgd2lsbCByZWNlaXZlIGEgbm90aWZpY2F0aW9uIHRvIGFjY2VwdCBvciBkZW55IHlvdXIgcmVxdWVzdC4gT25seSBhY2NlcHRlZCByZXF1ZXN0cyBhcmUgaW4geW91ciBjb250YWN0IGxpc3Qgb2YgY291cnNlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+TWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY4IiBuYW1lPSJ1c2VyIHZpZXcgcHJvZmlsZSI+CisgICAgPHZhbHVlPlRoZSB1c2VyIGRvZXMgbm90IHNoYXJlIGhpcyBwZXJzb25hbCBjb250YWN0IGRhdGEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjkiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+VGhlIHVzZXIgZG9lcyBzaGFyZSBoaXMgcGVyc29uYWwgY29udGFjdCBkYXRhIG9ubHkgdG8gY29udGFjdHMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzAiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+QWRkcmVzcyAmYW1wOyBQaG9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjcxIiBuYW1lPSJlcnJvciBjb2RlIj4KKyAgICA8dmFsdWU+WW91IGludml0YXRpb24gY29kZSBpcyBubyB2YWxpZCwgdGhlIGNvZGUgaXMgb25seSB2YWxpZCBkdXJpbmcgdGhpcyBzcGVjaWZpYyBkYXRlIGFuZCB0aW1lOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjcyIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhpcyBldmVudCBpcyBjb25uZWN0ZWQgdG8gc2V2ZXJhbCBjYWxlbmRhcnMgb2Ygb3RoZXIgdXNlcnMuIFlvdXIgY2hhbmdlIHdpbGwgYWxzbyB1cGRhdGUgdGhlaXIgY2FsZW5kYXIuIFdvdWxkIHlvdSByZWFsbHkgbGlrZSB0byB1cGRhdGUgdGhlIGV2ZW50PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjczIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Q29uZmlybSB1cGRhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkFsbG93IGNvbnRhY3QgdG8gc2VlIG15IGNhbGVuZGFyICh2aWV3IG9ubHkpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzUiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5EbyBub3Qgc2hhcmUgY2FsZW5kYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkNhbGVuZGFyIG9mIGNvbnRhY3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzciIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Zb3VyIGNvbnRhY3RzIG5lZWQgdG8gYXBwcm92ZSB5b3UgZmlyc3QgdG8gYmUgYWJsZSB0byBzZWUgdGhlaXIgY2FsZW5kYXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzgiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IHN0b3JlIG9yIGRlbGV0ZSBldmVudHMgZnJvbSBvdGhlciBjYWxlbmRhcnMgdGhlbiB5b3VyIG93biE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3OSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlNob3cgbXkgb3duIGNhbGVuZGFyIGFnYWluITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgwIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhpcyBldmVudCBpcyBjb25uZWN0ZWQgdG8gc2V2ZXJhbCBjYWxlbmRhcnMgb2Ygb3RoZXIgdXNlcnMuIFlvdXIgYWN0aW9uIHdpbGwgYWxzbyBkZWxldGUgdGhlIGV2ZW50IGZyb20gdGhlaXIgY2FsZW5kYXIuIFdvdWxkIHlvdSByZWFsbHkgbGlrZSB0byBkZWxldGUgdGhlIGV2ZW50PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgxIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Q29uZmlybSBhY3Rpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4MiIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPkVudGVyIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4MyIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPkFjY2VzcyB0aGUgY29uZmVyZW5jZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGEgY29uZmVyZW5jZSByb29tIGFuZCBldmVudCBib29rZWQgd2l0aCB0aGlzIHByaXZhdGUgbWVzc2FnZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NSIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPllvdSBuZWVkIHRvIHN0b3JlIHRoZSBldmVudCBmaXJzdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NiIgbmFtZT0iYWNjZXNzIHJvb21zIGVycm9yIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgbm8gc3VjaCByb29tIGF2YWlsYWJsZS4gVGhlIGV2ZW50IGluIHRoZSBjYWxlbmRhciBhbmQgY29ubmVjdGVkIHJvb20gaXMgYWxyZWFkeSBkZWxldGVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg3IiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5DaG9vc2UgeW91ciBuaWNrbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg4IiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5GaXJzdG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4OSIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+TGFzdG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MCIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+RW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MSIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+T2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MiIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+TWluaW11bSBsZW5ndGggNCBjaGFycyEgRm9yIGJvdGgsIGZpcnN0bmFtZSBhbmQgbGFzdG5hbWUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTMiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIHZhbGlkIGVtYWlsITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk0IiBuYW1lPSJhdXRoIGZyb20iPgorICAgIDx2YWx1ZT5GYWNlYm9vazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk1IiBuYW1lPSJhdXRoIGZvcm0iPgorICAgIDx2YWx1ZT5Mb2dpbiB3aXRoIHlvdXIgRmFjZWJvb2sgYWNjb3VudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk2IiBuYW1lPSJ2aWV3IHByb2ZpbGUiPgorICAgIDx2YWx1ZT5NZW1iZXIgc2luY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5NyIgbmFtZT0iZGlyZWN0IGxvZ2luIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Zb3UndmUgbG9nZ2VkIHdpdGggeW91ciBGYWNlYm9vayBhY2NvdW50LiBZb3Ugc2hvdWxkIHVwZGF0ZSB5b3VyIHByb2ZpbGUgd2l0aCB0aGUgY29ycmVjdCBlbWFpbC4gT3RoZXJ3aXNlIHlvdSB3aWxsIG5vdCByZWNlaXZlIGludml0YXRpb25zIGFuZCBwcml2YXRlIG1lc3NhZ2VzIGZyb20gb3RoZXIgdXNlcnMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTgiIG5hbWU9ImRpcmVjdCBsb2dpbiBtZXNzYWdlIGhlYWRlciI+CisgICAgPHZhbHVlPk1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5OSIgbmFtZT0iZGlyZWN0IGxvZ2luIG1lc3NhZ2UgY2hlY2tib3ggY29udHJvbCI+CisgICAgPHZhbHVlPkRvIG5vdCBzaG93IHVwZGF0ZSBwcm9maWxlIG1lc3NhZ2UgYWdhaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMCIgbmFtZT0icHJvZmlsZSBzZXR0aW5ncyBidXR0b24iPgorICAgIDx2YWx1ZT5tb3JlIGRpc3BsYXkgb3B0aW9ucyAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TmV3IHByaXZhdGUgbWVzc2FnZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2xpY2sgaGVyZSB0byB2aXNpdCB5b3VyIHByb2ZpbGUgdG8gc2VlIHRoZSBmdWxsIG1lc3NhZ2UgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlJlcGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPlJvb21zIGFuZCBjaGF0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA1IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5NeSByb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA2IiBuYW1lPSJteSByb29tcyI+CisgICAgPHZhbHVlPk15IGNvbmZlcmVuY2Ugcm9vbSAoZm9yIDEtMTYgdXNlcnMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDciIG5hbWU9Im15IHJvb21zIj4KKyAgICA8dmFsdWU+TXkgd2ViaW5hciByb29tIChmb3IgMS0xMjAgdXNlcnMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDgiIG5hbWU9InJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5Pd25lciBJZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA5IiBuYW1lPSJsb2dpbiBlcnJvciI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIHBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTAiIG5hbWU9ImxvZ2luIGVycm9yIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgYW4gYWNjb3VudCB3aXRoIFVzZXItTGV2ZWwgVXNlciwgTW9kZXJhdG9yIG9yIEFkbWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTEiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5XZWItU2VydmljZSAob25seSBhY2Nlc3MgdmlhIFNPQVApPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTIiIG5hbWU9InVwbG9hZCBmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+RG8gZGlyZWN0bHkgbG9hZCB0byB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTMiIG5hbWU9IndoaXRlYm9hcmQgY2xvc2UgY29uZmlybWF0aW9uIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIHJlbW92ZSB0aGlzIHdoaXRlYm9hcmQ/IFRoaXMgYWN0aW9uIGNhbm5vdCBiZSB1bmRvbmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTQiIG5hbWU9IndoaXRlYm9hcmQgbG9hZCBXTUwiPgorICAgIDx2YWx1ZT5Mb2FkIHRvIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxNSIgbmFtZT0icmVjb3JkaW5nIGZsYWciPgorICAgIDx2YWx1ZT5EbyBub3QgZm9yZ2V0IHN0YXJ0IHJlY29yZGluZyEgT25lIHVzZXIgcGVyIHJvb20gYWx3YXlzIG5lZWRzIHRvIHN0YXJ0IGl0IHRvIGhhdmUgdGhlIHJlY29yZGluZyBhZnRlcndhcmRzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE2IiBuYW1lPSJyZWNvcmRpbmcgZmxhZyI+CisgICAgPHZhbHVlPlN0YXJ0IFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE3IiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPkFycm93PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTgiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+Q2lyY2xlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTkiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+TGluZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIwIiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPlNxdWFyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIxIiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPlRyaWFuZ2xlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjIiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5UZXh0L05vdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyMyIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkNsaXBhcnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjQiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5EcmF3IEZyZWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNSIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlNlbGVjdC9Nb3ZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjYiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5EcmF3IFNoYXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjciIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5DdXQvTW92ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI4IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+Wm9vbSBJbi9PdXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyOSIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlByaW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzAiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5VbmRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzEiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5UcmFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMyIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+QWRkIEdyaWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMyIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlNoYXJlIEZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNCIgbmFtZT0iaWNvbiBzdWJtZW51Ij4KKyAgICA8dmFsdWU+U2VsZWN0IFNoYXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzUiIG5hbWU9Imljb24gc3VibWVudSI+CisgICAgPHZhbHVlPlNlbGVjdCBDbGlwYXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzYiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5Db3B5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzciIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5DdXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzOCIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPlBhc3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzkiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5EZWxldGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MCIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhlIGNvbXBsZXRlIGNvbnRlbnQgb24gdGhlIHdoaXRlYm9hcmQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDEiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5Mb2FkIGRpcmVjdGx5IHRvIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MiIgbmFtZT0iYXR0ZW5kZWVzIj4KKyAgICA8dmFsdWU+QXR0ZW5kZWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDMiIG5hbWU9ImF0ZW5kZWUgbWFuYWdlciI+CisgICAgPHZhbHVlPkF0dGVuZGVlIE1hbmFnZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NCIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+UHJlc2VudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ1IiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5SZW1vdGUgQ29udHJvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NiIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+RWplY3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NyIgbmFtZT0iY2hhdCI+CisgICAgPHZhbHVlPkNoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0OCIgbmFtZT0iaW52aXRlIGF0dGVuZGVlIj4KKyAgICA8dmFsdWU+SW52aXRlIEF0dGVuZGVlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ5IiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5CeSBFbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUwIiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5Vc2VyIGlzIG1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUxIiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5Vc2VyIGhhcyB3ZWJjYW0gc3dpdGNoZWQgb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1MiIgbmFtZT0iZmlsbF9vcHRpb24iPgorICAgIDx2YWx1ZT5EZWFjdGl2YXRlIHNoYXBlIGZpbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1MyIgbmFtZT0iZmlsbF9vcHRpb24iPgorICAgIDx2YWx1ZT5BY3RpdmF0ZSBzaGFwZSBmaWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTQiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5TbmFwIHRvIEdyaWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NSIgbmFtZT0iYWxsb3dfcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QWxsb3cgcmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTYiIG5hbWU9IndhaXRfZm9yX3JlY29yZGluZyI+CisgICAgPHZhbHVlPldhaXQgZm9yIHJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU3IiBuYW1lPSJoaWRlX3RvcF9iYXIiPgorICAgIDx2YWx1ZT5IaWRlIHRvcGJhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU4IiBuYW1lPSJmaWxlRXhwbG9yZXIiPgorICAgIDx2YWx1ZT5QbGF5IHZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTkiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoZSBjb250ZW50IG9uIHRoZSBjdXJyZW50IHNsaWRlPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYwIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT5BY2NlcHQgYW5kIGdyYW50IHVzZXIgcmlnaHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2MSIgbmFtZT0iYWN0aXZpdHlfd2luZG93Ij4KKyAgICA8dmFsdWU+RGVueTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYyIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT5JPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjMiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPkFjdGl2aXRpZXMgYW5kIGFjdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NCIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPlJlbW92ZSB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjUiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0aGUgbW9kZXJhdGlvbiBvciB0aGUgcmlnaHQgdG8gZHJhdyBvbiB0aGUgd2hpdGVib2FyZCB0byByZW1vdmUgd2hpdGVib2FyZHMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjYiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5Ob3QgYWxsb3dlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY3IiBuYW1lPSJ1c2VyX2xlZnRfYWN0X21zZyI+CisgICAgPHZhbHVlPmhhcyBsZWZ0IHRoZSByb29tLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY4IiBuYW1lPSJjbGlwYXJ0IGljb25zIj4KKyAgICA8dmFsdWU+TWF0aCBpY29uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY5IiBuYW1lPSJjbGlwYXJ0IGljb25zIj4KKyAgICA8dmFsdWU+Tm8gY2F0ZWdvcnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MCIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+Q29sb3ItU3R5bGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+UXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzcyIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5Eb21haW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MyIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+dmlzaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NCIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+cmVkb3JhbmdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzUiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPm1lZGl1bXNlYWdyZWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzYiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnN0ZWVsYmx1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc3IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5saWdodHN0ZWVsYmx1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc4IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5nb2xkZW5yZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3OSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+c2lsdmVyZ3JheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgwIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT51c2VyZGVmaW5lZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgxIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5iZXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODIiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnVwbG9hZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgzIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5tZWRpdW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NCIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg1IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5Vbm11dGUgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg2IiBuYW1lPSJnaXZlIGV4Y2x1c2l2ZSBhdWRpbyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBvZiBvdGhlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NyIgbmFtZT0ibXV0ZSBzZWxmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGdsb2JhbGx5IG11dGVkIGJ5IHRoZSBtb2RlcmF0b3IuIFlvdSBjYW5ub3QgdW5tdXRlIHlvdXJzZWxmITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg4IiBuYW1lPSJtdXRlIHNlbGYgY29uZmlybSBtZXNzYWdlIHRpdGxlIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg5IiBuYW1lPSJtdXRlIHNlbGYgY29uZmlybSBtZXNzYWdlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gbXV0ZSB5b3Vyc2VsZiBnbG9iYWxseT8gTm8gb3RoZXIgdXNlciB3aWxsIGhlYXIgeW91IGFueW1vcmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTAiIG5hbWU9Im11dGUgb3RoZXJzIGNvbmZpcm0gbWVzc2FnZSB0aXRsZSI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBsb2NhbGx5PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkxIiBuYW1lPSJtdXRlIG90aGVycyBjb25maXJtIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gbXV0ZSB0aGlzIG1pY3JvcGhvbmU/IFlvdSBjYW4gb25seSBtdXRlIGl0IGxvY2FsbHkgb24geW91ciBzY3JlZW4uIEl0IGhhcyBubyBlZmZlY3QgdG8gaG93IG90aGVyIHVzZXJzIGhlYXIgdGhpcyB1c2VyLiBPbmx5IG1vZGVyYXRvcnMgY2FuIHR1cm4gaXQgb2ZmIGdsb2JhbGx5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkyIiBuYW1lPSJtdXRlIG90aGVycyBjb25maXJtIG1lc3NhZ2UgdGl0bGUiPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgb2ZmIGdsb2JhbGx5PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkzIiBuYW1lPSJtdXRlIG90aGVycyBtb2RlcmF0b3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBtdXRlIHRoaXMgdXNlciBnbG9iYWxseT8gTm8gb3RoZXIgdXNlciB3aWxsIGhlYXIgaGltIGFueW1vcmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTQiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+WW91ciBzb3VuZCBpcyBvbi4gQ2xpY2sgaGVyZSB0byBzZW5kIG1vZGVyYXRvciBtZXNzYWdlIHRvIG11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5IChpbiB0aGUgY29tcGxldGUgY29uZmVyZW5jZSByb29tKSBvZmYhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTUiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+WW91ciBzb3VuZCBpcyBvZmYuIENsaWNrIGhlcmUgdG8gc2VuZCBtb2RlcmF0b3IgbWVzc2FnZSB0byB1bm11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5IChpbiB0aGUgY29tcGxldGUgY29uZmVyZW5jZSByb29tKSBvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5NiIgbmFtZT0ibXV0ZSBhcHBseSBzZWxmIG9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRoYXQgdGhlIG1vZGVyYXRvciBtdXRlcyBteSBtaWNyb3Bob25lIGdsb2JhbGx5LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk3IiBuYW1lPSJtdXRlIGFwcGx5IHNlbGYgb2ZmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRoYXQgdGhlIG1vZGVyYXRvciB1bm11dGVzIG15IG1pY3JvcGhvbmUgZ2xvYmFsbHkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTgiIG5hbWU9Im11dGUgYXBwbHkgb2YgbWVzc2FnZSI+CisgICAgPHZhbHVlPndhbnQgdGhhdCB0aGUgbW9kZXJhdG9yIHVubXV0ZXMgaGlzL2hlciBtaWNyb3Bob25lLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk5IiBuYW1lPSJtdXRlIGFwcGx5IG9mIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53YW50IHRoYXQgdGhlIG1vZGVyYXRvciBtdXRlcyBoaXMvaGVyIG1pY3JvcGhvbmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDAiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+VW5tdXRlIG1pY3JvcGhvbmUuIENsaWNrIGhlcmUgdG8gbXV0ZSBoaXMvaGVyIG1pY3JvcGhvbmUgZ2xvYmFsbHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDEiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lLiBDbGljayBoZXJlIHRvIHVubXV0ZSBoaXMvaGVyIG1pY3JvcGhvbmUgZ2xvYmFsbHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDIiIG5hbWU9Im11dGUgc2VsZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhpcyB1c2VyIGlzIGdsb2JhbGx5IG11dGVkIGJ5IHRoZSBtb2RlcmF0b3IuIFlvdSBjYW5ub3QgdW5tdXRlIGhpbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMyIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDQiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSB5b3VyIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwNSIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA2IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5Vbm11dGUgbWljcm9waG9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA3IiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDgiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDkiIG5hbWU9Im11dGUgbW9kZXJhdG9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Pbmx5IG1vZGVyYXRvcnMgY2FuIG11dGUgb3IgdW5tdXRlIGFuIHVzZXIgZ2xvYmFsbHkhIFRvIG11dGUgeW91ciBvd24gbWljcm9waG9uZTogUGxlYXNlIHVzZSB0aGUgbWljcm9waG9uZSBpY29uIGluIHlvdXIgdmlkZW8gcG9kITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDEwIiBuYW1lPSJwb2xsX25hbWUiPgorICAgIDx2YWx1ZT5Qb2xsIE5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMSIgbmFtZT0icG9sbF9uYW1lIj4KKyAgICA8dmFsdWU+WW91PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTIiIG5hbWU9ImFyY2hpdmVkX3BvbGxzIj4KKyAgICA8dmFsdWU+QXJjaGlldmVkIFBvbGxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTMiIG5hbWU9ImFjdGl2ZV9wb2xsIj4KKyAgICA8dmFsdWU+YWN0aXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTQiIG5hbWU9ImNoYXJ0X3NpbXBsZSI+CisgICAgPHZhbHVlPlNpbXBsZSBDaGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE1IiBuYW1lPSJjaGFydF9waWUiPgorICAgIDx2YWx1ZT5QaWUgQ2hhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNiIgbmFtZT0ic2lnbl91cF92YWxpZGF0aW9uIj4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTciIG5hbWU9ImNoYXRfbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+TmV3IG1lc3NhZ2Uocyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxOCIgbmFtZT0icG9sbF9jbG9zZSI+CisgICAgPHZhbHVlPkNsb3NlIFBvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxOSIgbmFtZT0icG9sbF9jbG9zZV9jb25maXJtIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNsb3NlIHRoaXMgUG9sbD8gTm8gb25lIHdpbGwgYmUgYWJsZSB0byB2b3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjAiIG5hbWU9InBvbGxfZGVsZXRlIj4KKyAgICA8dmFsdWU+RGVsZXRlIFBvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMSIgbmFtZT0icG9sbF9kZWxldGVfY29uZmlybSI+CisgICAgPHZhbHVlPkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBQb2xsPyBUaGUgcmVzdWx0cyB3aWxsIGJlIGRlbGV0ZWQgYXMgd2VsbC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMiIgbmFtZT0ibGFuZ3VhZ2VfY29kZSI+CisgICAgPHZhbHVlPkxhbmd1YWdlIElTTyBDb2RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjMiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19wZXJtaXNzaW9uIj4KKyAgICA8dmFsdWU+QWxsb3cvRGVueSByaWdodCB0byBnaXZlIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNCIgbmFtZT0iYWxsb3dfZXhjbHVzaXZlX2F1ZGlvX3Blcm1pc3Npb24iPgorICAgIDx2YWx1ZT5BbGxvdyB1c2VyIHRvIGdpdmUgZXhjbHVzaXZlIGF1ZGlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjUiIG5hbWU9ImRlbnlfZXhjbHVzaXZlX2F1ZGlvX3Blcm1pc3Npb24iPgorICAgIDx2YWx1ZT5EZW55IHVzZXIgdG8gZ2l2ZSBleGNsdXNpdmUgYXVkaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNiIgbmFtZT0iZXhjbF9hdWRpbyBhcHBseSBzZWxmIG9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGdldCBhIHBlcm1pc3Npb24gZm9yIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNyIgbmFtZT0iZXhjbF9hdWRpbyBhcHBseSBvZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+d2FudCB0aGF0IHRoZSBtb2RlcmF0b3IgZ2l2ZXMgbWUgYSBwZXJtaXNzaW9uIGZvciBleGNsdXNpdmUgYXVkaW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjgiIG5hbWU9ImV4Y2xfYXVkaW8gc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+R2l2ZSBhIHBlcm1pc3Npb24gZm9yIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyOSIgbmFtZT0iY2FtX3Jlc29sdXRpb24iPgorICAgIDx2YWx1ZT5DYW0gcmVzb2x1dGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMwIiBuYW1lPSJjYW1fcmVzb2x1dGlvbl9pbmZvIj4KKyAgICA8dmFsdWU+Q2hhbmdpbmcgdGhlIHJlc29sdXRpb24gYWZmZWN0cyBiYW5kd2lkdGgsIGJpZ2dlciBwaWN0dXJlIG5lZWRzIG1vcmUgYmFuZHdpdGghPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzEiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19lcnJvciI+CisgICAgPHZhbHVlPllvdSBkb24ndCBoYXZlIHRoZSByaWdodCB0byBnaXZlIHlvdXJzZWxmIG9yIG90aGVycyBleGNsdXNpdmUgYXVkaW8uIFlvdSBuZWVkIHRvIGFwcGx5IGZvciB0aGUgcmlnaHQgZnJvbSB0aGUgbW9kZXJhdG9yIG9yIGFzayB0aGUgbW9kZXJhdG9yIHRvIGdpdmUgeW91IGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzMiIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2FzayI+CisgICAgPHZhbHVlPkkgd291bGQgbGlrZSB0byBnZXQgdGhlIHJpZ2h0IGZvciBleGNsdXNpdmUgYXVkaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzMyIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2FjdGlvbiI+CisgICAgPHZhbHVlPkdpdmUgZXhjbHVzaXZlIGF1ZGlvIHRvIG1lIChhbHRlcm5hdGl2ZWx5IGNsaWNrIG9uIHlvdXIgdmlkZW8gcG9kIG9yIHByZXNzIEYxMik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNCIgbmFtZT0ibWljcm8gaXMgb24iPgorICAgIDx2YWx1ZT5NaWNyb3Bob25lIGlzIG9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM1IiBuYW1lPSJtaWNybyBpcyBvZmYiPgorICAgIDx2YWx1ZT5NaWNyb3Bob25lIGlzIG11dGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzYiIG5hbWU9ImhpZGVfY2hhdCI+CisgICAgPHZhbHVlPkhpZGUgY2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM3IiBuYW1lPSJoaWRlX2FjdGl2aXRpZXNfYW5kX2FjdGlvbnMiPgorICAgIDx2YWx1ZT5IaWRlIGFjdGl2aXRpZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzOCIgbmFtZT0iaGlkZV9maWxlc19leHBsb3JlciI+CisgICAgPHZhbHVlPkhpZGUgZmlsZXMgZXhwbG9yZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzOSIgbmFtZT0iaGlkZV9hY3Rpb25zX21lbnUiPgorICAgIDx2YWx1ZT5IaWRlIGFjdGlvbnMgbWVudTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQwIiBuYW1lPSJoaWRlX3NjcmVlbl9zaGFyaW5nIj4KKyAgICA8dmFsdWU+SGlkZSBzY3JlZW4gc2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQxIiBuYW1lPSJoaWRlX3doaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5IaWRlIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MiIgbmFtZT0ic2hvdyBtaWNyb3Bob25lIHN0YXR1cyI+CisgICAgPHZhbHVlPlNob3cgbWljcm8gc3RhdHVzIGluIHZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDMiIG5hbWU9ImxheW91dF9vcHRpb25zIj4KKyAgICA8dmFsdWU+TGF5b3V0IG9wdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0NCIgbmFtZT0iY2FsZW5kYXIgbmV3IGJ1dHRvbiI+CisgICAgPHZhbHVlPk5ldyBFdmVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ1IiBuYW1lPSJjYWxlbmRhciBwYXNzd29yZCBpbmZvIHRleHQiPgorICAgIDx2YWx1ZT5QYXNzd29yZCBwcm90ZWN0ZWQgYXJlIHRoZSBsaW5rcyB0byB0aGUgY29uZmVyZW5jZSB0aGF0IGFyZSBzZW5kIHRvIHRoZSBwYXJ0aWNpcGVudHMgd2hlbiB5b3Ugc2F2ZSB0aGUgY2FsZW5kYXIgZXZlbnQsIG5vdCB0aGUgcm9vbSEgVGhhdCBtZWFucyBpZiB5b3Ugc2F2ZSB0aGUgZXZlbnQgbXVsdGlwbGUgdGltZXMgYnV0IHdpdGggZGlmZmVyZW50IHBhc3N3b3JkcyBldmVyeSBwYXJ0aWNpcGVudCByZWNlaXZlcyBhIG5ldyBsaW5rIHRoYXQgaGFzIGEgZGlmZmVyZW50IHBhc3N3b3JkLiBCdXQgb2xkIGxpbmtzIHN0aWxsIHdvcmsgb25jZSBzZW5kITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ2IiBuYW1lPSJjYWxlbmRhciBlZGl0IGJ1dHRvbiI+CisgICAgPHZhbHVlPkVkaXQgZGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ3IiBuYW1lPSJzaXAgc2hvdyBkaWFsZXIiPgorICAgIDx2YWx1ZT5TaG93IHNpcCBkaWFsZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0OCIgbmFtZT0ic2lwIGNhbGwiPgorICAgIDx2YWx1ZT5DYWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDkiIG5hbWU9ImNhbGVuZGFyIGNvbnRhY3QgbGlzdCI+CisgICAgPHZhbHVlPlNob3cgY2FsZW5kYXIgZXZlbnRzIG9mIGNvbnRhY3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+WW91ciBob21lITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUxIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5QbGFuIHlvdXIgbWVldGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MiIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+V2F0Y2ggcmVjb3JkaW5nIGFuZCBpbnRlcnZpZXdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTMiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPkNob29zZSBhbmQgc3RhcnQgYSB3ZWItY29uZmVyZW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU0IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgdXNlcnMgYW5kIHJpZ2h0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU1IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgY29ubmVjdGlvbnMgYW5kIGtpY2sgdXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1NiIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIHVzZXJncm91cHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1NyIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIGNvbmZlcmVuY2Ugcm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1OCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIHN5c3RlbSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU5IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgbGFiZWxzIGFuZCB3b3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjAiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBMREFQIGFuZCBBRFMgY29uZmlndXJhdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MSIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+RXhwb3J0L0ltcG9ydCBTeXN0ZW0gQmFja3VwczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYyIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgbW9kZXJhdGlvbiBvciB0aGUgcmlnaHQgdG8gZHJhdyBvbiB3aGl0ZWJvYXJkIHRvIHVwbG9hZCwgYWRkLCBkZWxldGUgb3IgbG9hZCBmaWxlcyBhbmQgZm9sZGVycy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MyIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkVkaXQgdGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY0IiBuYW1lPSJzYWx1dGF0aW9uIj4KKyAgICA8dmFsdWU+UHJvZjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY1IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlB1Ymxpc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2NiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdGFydCBQdWJsaXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjciIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U3RvcCBQdWJsaXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+SG9zdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY5IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlB1Ymxpc2ggQXBwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzAiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UHVibGlzaCBJZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDcxIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHVjZSB0aGUgd2lkdGggb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbW92ZSBpdCBsZWZ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzIiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UmVkdWNlIHRoZSBoZWlnaHQgb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbW92ZSBpdCBib3R0b208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5SZWR1Y2UgdGhlIHggb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbWFrZSBpdCB3aWRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc0IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHVjZSB0aGUgeSBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtYWtlIGl0IGhpZ2hlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc1IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkZpbGwgdGhlc2Ugc2V0dGluZ3Mgc3RyZWFtIHlvdXIgc2NyZWVuIGRhdGEgdG8gM3RoIHBhcnR5IHByb3ZpZGVycyBsaWtlIGp1c3Rpbi50djwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc2IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlBsZWFzZSBzdGFydCBTY3JlZW4gc2hhcmluZyB0byBiZSBhYmxlIHRvIHB1Ymxpc2ggaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3NyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5Nb2RlcmF0b3IgcGVybWlzc2lvbiByZXF1aXJlZCB0byBzdGFydCByZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3OCIgbmFtZT0ibm8gcmlnaHQgZm9yIGV4Y2x1c2l2ZSBhdWRpbyI+CisgICAgPHZhbHVlPllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gYXBwbHkgZXhjbHVzaXZlIGF1ZGlvIHRvIGFueSBwYXJ0aWNpcGFudC4gWW91IG5lZWQgbW9kZXJhdGlvbiByb2xlIG9yIHRoZSByaWdodCBmb3IgZXhjbHVzaXZlIGF1ZGlvIHRvIG1ha2UgYW55IG1pY3JvcGhvbmUgZXhjbHVzaXZlIHR1cm5lZCBvbi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzkiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlVwbG9hZCBuZXcgZmlsZSB0byBmaWxlIGV4cGxvcmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODAiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPk9wZW4gbmV3IGRpYWxvZyB3aXRoIHNoYXJpbmcgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+QW4gZXhpc3RpbmcgbW9kZXJhdG9yIG11c3QgYXBwcm92ZSBpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgyIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5Bc2sgbW9kZXJhdG9yIHRvIHNoYXJlIHlvdXIgd2ViY2FtL21pY3JvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODMiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkdhdGhlciBmZWVkYmFjayBieSBjcmVhdGluZyBhIHBvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+UGFzdCBhbmQgY3VycmVudCBwb2xsIHJlc3VsdHMgYXMgY2hhcnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODUiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlZvdGUgaWYgdGhlcmUgaXMgYSBwb2xsIGZvciB0aGlzIGNvbmZlcmVuY2Ugcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg2IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5FZGl0IGNhbSBhbmQgbWljIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODciIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkNvbmZpcm0gYW5kIGxlYXZlIHRoZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODgiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkNhbGwgZXh0ZXJuYWwgcGVvcGxlIHZpYSBWb0lQL1NJUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg5IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5TZW5kIGFuIGVtYWlsIHdpdGggYSBkaXJlY3QgbGluayB0byB0aGlzIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Q2hhbmdlIHlvdXIgd2hpdGVib2FyZCBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkxIiBuYW1lPSJiYWNrdXAgYWRtaW4iPgorICAgIDx2YWx1ZT5NYXggdXBsb2FkIHNpemU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MiIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+QXNrIG1vZGVyYXRvciB0byBzaGFyZSB5b3VyIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MyIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+U3RhcnQgUHJpdmF0ZSBDaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTQiIG5hbWU9ImFsbF9wcml2YXRlX2NoYXQiPgorICAgIDx2YWx1ZT5BbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NSIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBzdGFydCBhIHByaXZhdGUgY2hhdCB3aXRoIHlvdXJzZWxmLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk2IiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5Zb3UndmUgYWxyZWFkeSBzdGFydGVkIGEgcHJpdmF0ZSBjaGF0IHdpdGggdGhpcyBwYXJ0aWNpcGFudC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NyIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHByaXZhdGUgY2hhdD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5OCIgbmFtZT0iU2VydmVycyI+CisgICAgPHZhbHVlPlNlcnZlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5OSIgbmFtZT0iU2VydmVycyI+CisgICAgPHZhbHVlPlNlcnZlcnMgcGFydGljaXBhdGluZyBpbiBjbHVzdGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDAiIG5hbWU9IlNlcnZlciBuYW1lIj4KKyAgICA8dmFsdWU+U2VydmVyIE5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMSIgbmFtZT0iU2VydmVyIEFkZHJlc3MiPgorICAgIDx2YWx1ZT5TZXJ2ZXIgQWRkcmVzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAyIiBuYW1lPSJTZXJ2ZXIgZGV0YWlscyI+CisgICAgPHZhbHVlPlNlcnZlciBkZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDMiIG5hbWU9IlNlbmQgU01TIj4KKyAgICA8dmFsdWU+U2VuZCBTTVM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNCIgbmFtZT0icHVibGlzaGluZ19tZXNzYWdlIj4KKyAgICA8dmFsdWU+UHVibGlzaGluZy4gVXNlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNSIgbmFtZT0iY21kX2xpbmVfYWRtaW4iPgorICAgIDx2YWx1ZT5UbyBzYXZlIHRpbWUgYW5kIGludGVybmV0IHRyYWZmaWMgeW91IGNhbiB1c2UgY29tbWFuZCBsaW5lIGFkbWluIHRvIGJhY2t1cC9yZXN0b3JlL3VwZ3JhZGU6XG4gMSkgZ28gdG8gT00gaW5zdGFsbCBkaXIgKGZvciBleC4gL29wdC9yZWQ1KSBcbiAyKSBzdG9wIE9NIChmb3IgZXguIC4vcmVkNS1zaHV0ZG93bi5zaClcbiAzKSAuL2FkbWluLnNoIC1iIC1maWxlIH4vdG9kYXlfb21fYmFja3VwLnppcCAoY3JlYXRlIGJhY2t1cCBvZiBjdXJyZW50IE9NKVxuIDQpIGRvd25sb2FkIGFyY2hpdmUgd2l0aCBuZXcgT01cbiA1KSBtdiAvb3B0L3JlZDUgL29wdC5yZWQ1LmJhayAobW92ZSB3b3JraW5nIHZlcnNpb24gb2YgT00ganVzdCBpbiBjYXNlIDopKVxuIDYpIGV4dHJhY3QgZG93bmxvYWRlZCBPTSB0byB0aGUgL29wdC9yZWQ1XG4gNykgLi9hZG1pbi5zaCAtaSAtZmlsZSB+L3RvZGF5X29tX2JhY2t1cC56aXAgKG9yICcuL2FkbWluLnNoIC1pIC1maWxlIH4vdG9kYXlfb21fYmFja3VwLnppcCAtLWRiLXR5cGUgbXlzcWwgLS1kYi11c2VyIG9tX3VzZXIgLS1kYi1wYXNzIG9tX3VzZXJfcGFzcycgaW4gY2FzZSBvZiB5b3UgYXJlIHVzaW5nIG5vbi1kZWZhdWx0IERCIClcbiA4KSBzdGFydCBPTVxuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDYiIG5hbWU9InB1YmxpY19yb29tX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5Sb29tcyBjb21tb24gdG8gYWxsIHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNyIgbmFtZT0icHJpdmF0ZV9yb29tX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5Sb29tcyBjb21tb24gdG8gdGhlIGN1cnJlbnQgdXNlciBncm91cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA4IiBuYW1lPSJteV9yb29tX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5Sb29tcyBvZiB0aGUgY3VycmVudCB1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDkiIG5hbWU9ImNyZWF0ZV9uZXdfcm9vbSI+CisgICAgPHZhbHVlPkNyZWF0ZS9Nb2RpZnkgYXBwb2ludG1lbnQgc3BlY2lhbCByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTAiIG5hbWU9Im11bHRpcGxlX2FkZHJlc3NlcyI+CisgICAgPHZhbHVlPllvdSBjYW4gZW50ZXIgbXVsdGlwbGUgYWRkcmVzc2VzIGluIHRoZSBmb3JtYXQ6IGZpcnN0bmFtZTEgbGFzdG5hbWUxICZsdDtlbWFpbDEmZ3Q7LCJmaXJzdG5hbWUyIGxhc3RuYW1lMiIgJmx0O2VtYWlsMiZndDssJ2ZpcnN0bmFtZTMgbGFzdG5hbWUzJyAmbHQ7ZW1haWwzJmd0OywgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTEiIG5hbWU9InN0cmVhbV92b2x1bWUiPgorICAgIDx2YWx1ZT5BZGp1c3Qgc3RyZWFtIHZvbHVtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTEyIiBuYW1lPSJtaWNyb3Bob25lX3ZvbHVtZSI+CisgICAgPHZhbHVlPkFkanVzdCBtaWNyb3Bob25lIHZvbHVtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTEzIiBuYW1lPSJjaGF0X21vZGVyYXRlZCI+CisgICAgPHZhbHVlPklzIGNoYXQgbW9kZXJhdGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTQiIG5hbWU9ImNoYXRfbW9kZXJhdGVkIj4KKyAgICA8dmFsdWU+QWxsb3cgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE1IiBuYW1lPSJjaGF0X29wZW5lZCI+CisgICAgPHZhbHVlPkNoYXQgcGFuZWwgb3BlbmVkIGJ5IGRlZmF1bHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNiIgbmFtZT0iZmlsZXNfb3BlbmVkIj4KKyAgICA8dmFsdWU+RmlsZXMgcGFuZWwgb3BlbmVkIGJ5IGRlZmF1bHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNyIgbmFtZT0ic2VydmVyIGFkbWluIHNlY3Rpb24gbGFzdHBpbmciPgorICAgIDx2YWx1ZT5MYXN0IHBpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxOCIgbmFtZT0ic2VydmVyIGFkbWluIHNlY3Rpb24gbGFzdHBpbmcgaW5mbyI+CisgICAgPHZhbHVlPkV2ZXJ5IHNsYXZlIHNlbmRzIGEgcGluZyB0byB0aGUgbWFzdGVyIGV2ZXJ5IDMgc2Vjb25kcyAoY29uZmlndXJhYmxlKS4gU2xhdmUgbGFzdFBpbmcgbXVzdCBiZSBzbWFsbGVyIHRoZW4gMSBtaW51dGUgc28gdGhhdCB0aGUgbWFzdGVyIHVzZXMgdGhlIHNsYXZlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE5IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcG9ydCI+CisgICAgPHZhbHVlPkhUVFAgUG9ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIwIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gdXNlciI+CisgICAgPHZhbHVlPlVzZXIgKFNPQVAtQWNjZXNzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIxIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcGFzc3dvcmQiPgorICAgIDx2YWx1ZT5QYXNzd29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIyIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gd2ViYXBwIHBhdGgiPgorICAgIDx2YWx1ZT5XZWJhcHAgcGF0aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIzIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcHJvdG9jb2wiPgorICAgIDx2YWx1ZT5Qcm90b2NvbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI0IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcGluZyBydW5uaW5nIj4KKyAgICA8dmFsdWU+UGluZyBydW5uaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjUiIG5hbWU9InNlcnZlciBhZG1pbiBhY3RpdmUiPgorICAgIDx2YWx1ZT5BY3RpdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyNiIgbmFtZT0iZ2VuZXJhdGVfaGFzaCI+CisgICAgPHZhbHVlPkdlbmVyYXRlIFVSTDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI3IiBuYW1lPSJuZXR3b3JrIHRlc3RpbmcgbGluayI+CisgICAgPHZhbHVlPk5ldHdvcmsgdGVzdGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI4IiBuYW1lPSJyb29tX29wdGlvbnMiPgorICAgIDx2YWx1ZT5BdXRvIHNlbGVjdCBpbnRlcnZpZXcgdmlkZW8gcG9kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjkiIG5hbWU9ImZvbnRfdW5kZXJsaW5lIj4KKyAgICA8dmFsdWU+VW5kZXJsaW5lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzAiIG5hbWU9ImZvbnRfc3R5bGUiPgorICAgIDx2YWx1ZT5Gb250IHN0eWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzEiIG5hbWU9ImFsbG93X2ZvbnRfc3R5bGVzIj4KKyAgICA8dmFsdWU+QWxsb3cgZm9udCBzdHlsZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMiIgbmFtZT0iZm9udF9jb2xvciI+CisgICAgPHZhbHVlPkZvbnQgY29sb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMyIgbmFtZT0iaHlwZXJsaW5rIj4KKyAgICA8dmFsdWU+SHlwZXJsaW5rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzQiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW4iPgorICAgIDx2YWx1ZT5TaG93IHNlc3Npb24gc3RhdGlzdGljczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM1IiBuYW1lPSJjb25uZWN0aW9uIGFkbWluIj4KKyAgICA8dmFsdWU+U2Vzc2lvbiBkZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzYiIG5hbWU9InN5c3RlbV9pbXBvcnQiPgorICAgIDx2YWx1ZT5TeXN0ZW0gaW1wb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzciIG5hbWU9ImluY2x1ZGVfaW50b19iYWNrdXAiPgorICAgIDx2YWx1ZT5JbmNsdWRlIHVwbG9hZGVkIGZpbGVzIGFuZCByZWNvcmRpbmdzIGluIGJhY2t1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM4IiBuYW1lPSJyb29tX2FkbWluX3NpcCI+CisgICAgPHZhbHVlPkVuYWJsZSBTSVAgdHJhbnNwb3J0IGluIHRoZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzkiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19jb25maXJtIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIHByb3ZpZGUgdGhpcyB1c2VyIGFuIGV4Y2x1c2l2ZSBhdWRpbz88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU0MCIgbmFtZT0ibm9fdGltZXpvbmUiPgorICAgIDx2YWx1ZT5QbGVhc2Ugc3BlY2lmeSB5b3VyIHRpbWV6b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NDUiIG5hbWU9ImNvbnRlbnRfaXNfc2F2aW5nIj4KKyAgICA8dmFsdWU+Q29udGVudCBpcyBTYXZpbmcsIFBsZWFzZSB3YWl0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorPC9sYW5ndWFnZT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL2RhbmlzaC54bWwgYi9XZWJDb250ZW50L2xhbmd1YWdlcy9kYW5pc2gueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwMDNhZTcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L2xhbmd1YWdlcy9kYW5pc2gueG1sCkBAIC0wLDAgKzEsNDY1MiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKworPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworVGhpcyBGaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5IHRoZSBMYW5ndWFnZUVkaXRvciAKK3RvIGFkZCBuZXcgTGFuZ3VhZ2VzIG9yIG1vZGlmeS9jdXN0b21pemUgaXQgdXNlIHRoZSBMYW5ndWFnZUVkaXRvciAKK3NlZSBodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvTGFuZ3VhZ2VFZGl0b3IuaHRtbCBmb3IgRGV0YWlscyAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjLS0+Cis8bGFuZ3VhZ2UgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeG1sbnM6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbj0ibGFuZ3VhZ2UueHNkIj4KKyAgPHN0cmluZyBpZD0iMSIgbmFtZT0iY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPktvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMiIgbmFtZT0ibWVldGluZyI+CisgICAgPHZhbHVlPk3DuGRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMiIG5hbWU9ImNsYXNzcm9vbSI+CisgICAgPHZhbHVlPkF1ZGl0b3JpdW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNCIgbmFtZT0ic2V0dGluZ3MiPgorICAgIDx2YWx1ZT5JbmRzdGlsbGluZ2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUiIG5hbWU9ImJlbnV0emVyIj4KKyAgICA8dmFsdWU+UHJvZmlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYiIG5hbWU9ImFkbWluIj4KKyAgICA8dmFsdWU+QWRtaW5pc3RyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNyIgbmFtZT0ic3RvcCI+CisgICAgPHZhbHVlPlN0b3A8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOCIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+T3B0YWc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOSIgbmFtZT0ibm9maWxlIj4KKyAgICA8dmFsdWU+SW5nZW4gZmlsIHRpbGfDpm5nZWxpZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMCIgbmFtZT0icmVjb3JkYnl0ZWFjaGVyIj4KKyAgICA8dmFsdWU+SW5kc3BpbGxldCBhZiBsw6ZyZXIvaW5zdHJ1a3TDuHI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEiIG5hbWU9ImNvbm5lY3RlZHVzZXJzIj4KKyAgICA8dmFsdWU+VGlsc2x1dHRlZGUgYnJ1Z2VyZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIiIG5hbWU9InN0YXJ0Y29uZiI+CisgICAgPHZhbHVlPlN0YXJ0IGVuIGtvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMiIG5hbWU9Im15bmFtZSI+CisgICAgPHZhbHVlPk1pdCBuYXZuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0IiBuYW1lPSJ2aWRlb2NvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT5WaWRlb2tvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUiIG5hbWU9ImltcG9ydCI+CisgICAgPHZhbHVlPkltcG9ydGVyIHByw6ZzZW50YXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYiIG5hbWU9InJlZnJlc2hmaWxlcyI+CisgICAgPHZhbHVlPk9wZGF0ZXIgbGlzdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTciIG5hbWU9InRvbWFpbmZpbGUiPgorICAgIDx2YWx1ZT5UaWwgaG92ZWRmaWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgiIG5hbWU9Im5ld3BvbGwiPgorICAgIDx2YWx1ZT5OeSBhZnN0ZW1uaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5IiBuYW1lPSJuZXdwb2xsaGVhZGVyIj4KKyAgICA8dmFsdWU+RW4gbnkgYWZzdGVtbmluZyBmw7hyIGtvbmZlcmVuY2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwIiBuYW1lPSJxdWVzdGlvbiI+CisgICAgPHZhbHVlPlNww7hyZ3Ntw6VsOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMSIgbmFtZT0icG9sbHR5cGUiPgorICAgIDx2YWx1ZT5BZnN0ZW1uaW5nc3R5cGU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyIiBuYW1lPSJjcmVhdGUiPgorICAgIDx2YWx1ZT5PcHJldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMyIgbmFtZT0iaW5mb21lc3NhZ2UiPgorICAgIDx2YWx1ZT5JTkZPOiBBbGxlIHRpbHNsdXR0ZWRlIGJydWdlcmUgZsOlciB0aWxzZW5kdCBlbiBtZWRkZWxlbHNlIG1lZCBkZW4gbnllIGFmc3RlbW5pbmcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0IiBuYW1lPSJjcmVhdHBvbGwiPgorICAgIDx2YWx1ZT5PcHJldCBhZnN0ZW1uaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1IiBuYW1lPSJjYW5jZWwiPgorICAgIDx2YWx1ZT5Bbm51bGxlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNiIgbmFtZT0ieWVzbm8iPgorICAgIDx2YWx1ZT5KYS9OZWo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjciIG5hbWU9Im51bWVyaWMiPgorICAgIDx2YWx1ZT5OdW1lcmlzayAxLTEwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4IiBuYW1lPSJwb2xsIj4KKyAgICA8dmFsdWU+U3RlbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOSIgbmFtZT0ibW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkR1IHNrYWwgdmFyZSBtb2RlcmF0b3IgZm9yIGF0IGt1bm5lIG9wcmV0dGUgZW4gYWZzdGVtbmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMCIgbmFtZT0idm90ZSI+CisgICAgPHZhbHVlPkRpbiBhZnN0ZW1uaW5nIGVyIGFjY2VwdGVyZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEiIG5hbWU9ImFscmVhZHl2b3RlZCI+CisgICAgPHZhbHVlPkR1IGhhciBhbGxlcmVkZSBzdGVtdCBpIGRlbm5lIGFmc3RlbW5pbmcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyIiBuYW1lPSJ2b3RpbmciPgorICAgIDx2YWx1ZT5TdGVtITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMyIgbmFtZT0iYW5zd2VyIj4KKyAgICA8dmFsdWU+RGl0IHN2YXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0IiBuYW1lPSJ5ZXMiPgorICAgIDx2YWx1ZT5KYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNSIgbmFtZT0ibm8iPgorICAgIDx2YWx1ZT5OZWo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYiIG5hbWU9InF1ZXN0aW9ud2FudCI+CisgICAgPHZhbHVlPlZpbCB2aWRlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNyIgbmFtZT0icG9sbHJlc3VsdHMiPgorICAgIDx2YWx1ZT5BZnN0ZW1uaW5nc3Jlc3VsdGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4IiBuYW1lPSJxdWVzdGlvbiI+CisgICAgPHZhbHVlPlNww7hyZzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkiIG5hbWU9InJlc3VsdHMiPgorICAgIDx2YWx1ZT5SZXN1bHRhdDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAiIG5hbWU9ImFuc3dlcnMiPgorICAgIDx2YWx1ZT5TdmFyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MSIgbmFtZT0ibm9wb2xsIj4KKyAgICA8dmFsdWU+SW5nZW4gbnllIGFmc3RlbWluZ2VyIGVyIHN0YXJ0ZXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyIiBuYW1lPSJ2b3RpbmdzIj4KKyAgICA8dmFsdWU+U3RlbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMiIG5hbWU9Im1lZXRpbmciPgorICAgIDx2YWx1ZT5Nw7hkZSAobWF4IDQgcGxhZHNlcik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQiIG5hbWU9ImNvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT5Lb25mZXJlbmNlIChtYXggNTAgcGxhZHNlcik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUiIG5hbWU9InR5cGUiPgorICAgIDx2YWx1ZT5UeXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2IiBuYW1lPSJyZW1haW5pbmdzZWF0cyI+CisgICAgPHZhbHVlPkFuZHJlIHBsYWRzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDciIG5hbWU9ImFscmVhZHljaG9zZW4iPgorICAgIDx2YWx1ZT5BbGxlcmVkZSB2YWxndDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OCIgbmFtZT0iZW50ZXIiPgorICAgIDx2YWx1ZT5Lb20gaW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5IiBuYW1lPSJtb2RsZWF2ZSI+CisgICAgPHZhbHVlPk1vZGVyYXRvcmVuIGhhciBmb3JsYWR0IG3DuGRldC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAiIG5hbWU9InN5c3RlbW1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TeXN0ZW1pbmZvcm1hdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MSIgbmFtZT0iY2hvc3NlZGV2aWNlIj4KKyAgICA8dmFsdWU+VsOmbGcgc2V0dXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIiIG5hbWU9ImNob29zZWNhbSI+CisgICAgPHZhbHVlPlbDpmxnIHdlYmNhbTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMiIG5hbWU9ImNob29zZW1pYyI+CisgICAgPHZhbHVlPlbDpmxnIG1pa3JvZm9uOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NCIgbmFtZT0ib2siPgorICAgIDx2YWx1ZT5vazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NSIgbmFtZT0iY2FuY2VsMiI+CisgICAgPHZhbHVlPkFmYnJ5ZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NiIgbmFtZT0icmVjb25lZWN0bmVlZGVkIj4KKyAgICA8dmFsdWU+VGlsc2x1dCBpZ2VuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NyIgbmFtZT0iZWRpdHNldHVwIj4KKyAgICA8dmFsdWU+w4ZuZHJlIHNldHVwLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OCIgbmFtZT0iY291cnNlIj4KKyAgICA8dmFsdWU+S3Vyc3VzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OSIgbmFtZT0ibGFuZ3VhZ2UiPgorICAgIDx2YWx1ZT5TcHJvZzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAiIG5hbWU9Im9rMiI+CisgICAgPHZhbHVlPk9rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxIiBuYW1lPSJjYW5jZWwzIj4KKyAgICA8dmFsdWU+QWZicnlkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyIiBuYW1lPSJjbGVhcndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5SZW5zIHNrcml2ZWJvcmRldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MyIgbmFtZT0iY2xlYXJ3aGl0ZWJvYXJkcXVlc3Rpb24iPgorICAgIDx2YWx1ZT7DmG5za2VyIGR1IGF0IHNrcml2ZWJvcmRldCBza2FsIHJlbnNlcyBpbmRlbiBkdSB1cGxvYWRlciB0aWwgZXQgbnl0IGJpbGxlZGU/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0IiBuYW1lPSJkb250YXNrYWdhaW4iPgorICAgIDx2YWx1ZT5TcMO4cmcgaWtrZSBpZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1IiBuYW1lPSJubyI+CisgICAgPHZhbHVlPk5lajwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NiIgbmFtZT0iZWRpdHNldHVwMiI+CisgICAgPHZhbHVlPsOGbmRyZSBzZXR1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NyIgbmFtZT0ibmVlZGNvbmZpcm1hdGlvbndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5TcMO4cmcgaW5kZW4gc2tyaXZlYm9yZGV0IHTDuG1tZXM/LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OCIgbmFtZT0idXNlcmluZm8iPgorICAgIDx2YWx1ZT5CcnVnZXJpbmZvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5IiBuYW1lPSJjbGVhcmRyYXdhcmVhIj4KKyAgICA8dmFsdWU+UmVucyB0ZWduZW9tcsOlZGV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwIiBuYW1lPSJ1bmRvIj4KKyAgICA8dmFsdWU+Rm9ydHJ5ZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MSIgbmFtZT0icmVkbyI+CisgICAgPHZhbHVlPktsYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIiIG5hbWU9InNlbGVjdG9iamVjdCI+CisgICAgPHZhbHVlPlbDpmxnIGV0IG9iamVrdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MyIgbmFtZT0idGV4dCI+CisgICAgPHZhbHVlPlRla3N0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0IiBuYW1lPSJwYWludCI+CisgICAgPHZhbHVlPk1hbC90ZWduPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1IiBuYW1lPSJkcmF3bGluZSI+CisgICAgPHZhbHVlPlRlZ24gbGluaWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYiIG5hbWU9ImRyYXd1Ij4KKyAgICA8dmFsdWU+VGVnbiB1bmRlcnN0cmVnbmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NyIgbmFtZT0icmVjdCI+CisgICAgPHZhbHVlPlJla3RhbmdlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OCIgbmFtZT0iZWxsaXBzZSI+CisgICAgPHZhbHVlPkVsbGlwc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkiIG5hbWU9ImFycm93Ij4KKyAgICA8dmFsdWU+UGlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwIiBuYW1lPSJkZWxldGVjaG9zZW4iPgorICAgIDx2YWx1ZT5TbGV0IHZhbGd0IG9iamVrdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MSIgbmFtZT0iYXBwbGl5bW9kIj4KKyAgICA8dmFsdWU+TMOmZyB0aWwgZsO4ciBtb2RlcmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyIiBuYW1lPSJhcHBseSI+CisgICAgPHZhbHVlPkzDpmcgdGlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzIiBuYW1lPSJjYW5jZWwiPgorICAgIDx2YWx1ZT5BZmJyeWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQiIG5hbWU9Im1vZCI+CisgICAgPHZhbHVlPkJsaXYgbW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1IiBuYW1lPSJjbG9zZSI+CisgICAgPHZhbHVlPkx1azwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NiIgbmFtZT0iaXRhbGljIj4KKyAgICA8dmFsdWU+aXRhbGljPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3IiBuYW1lPSJib2xkIj4KKyAgICA8dmFsdWU+ZmVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4IiBuYW1lPSJ3YWl0aW5nIj4KKyAgICA8dmFsdWU+VkVOVEVSPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5IiBuYW1lPSJhcHBseU1lc3NhZ2UiPgorICAgIDx2YWx1ZT5FbiBicnVnZXIgdmVudGVyIHDDpSBhdCBibGl2ZSBtb2RlcmF0b3I6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwIiBuYW1lPSJhY2NlcHQiPgorICAgIDx2YWx1ZT5BY2NlcHRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MSIgbmFtZT0icmVqZWN0Ij4KKyAgICA8dmFsdWU+QWZ2aXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIiIG5hbWU9ImNhbmNlbCI+CisgICAgPHZhbHVlPkFubnVsbGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzIiBuYW1lPSJzZW5kbW9kcmVxdWVzdG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZW5kIHNww7hyZ3Ntw6VsIHRpbCBmw7hsZ2VuZGUgYnJ1Z2VyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NCIgbmFtZT0iYWNjZXB0Ij4KKyAgICA8dmFsdWU+QWNjZXB0ZXJldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NSIgbmFtZT0icmVqZWN0Ij4KKyAgICA8dmFsdWU+QWZ2aXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2IiBuYW1lPSJjaGFuZ2Vtb2QiPgorICAgIDx2YWx1ZT7Dhm5kcmUgbW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3IiBuYW1lPSJub25tb2RlcnJvcm1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EdSBlciBpa2tlIG1vZGVyYXRvciBww6UgZGV0dGUga3Vyc3VzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OCIgbmFtZT0ibW9kZXJhdG9yIj4KKyAgICA8dmFsdWU+TW9kZXJhdG9yOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OSIgbmFtZT0icm9vbWZ1bGxtZXNzYWdlIj4KKyAgICA8dmFsdWU+UnVtbWV0IGVyIG9wdGFnZXQuIFByw7h2IGlnZW4gc2VuZXJlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAiIG5hbWU9ImVsbGxpcHNlIj4KKyAgICA8dmFsdWU+RWxsaXBzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEiIG5hbWU9ImNsb3NlIj4KKyAgICA8dmFsdWU+THVrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMiIgbmFtZT0iQXV0aEVycm9yIj4KKyAgICA8dmFsdWU+Rm9ya2VydGUgZGF0YSBhbmdpdmV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMyIgbmFtZT0ibWluNHVzZXJuYW1lIj4KKyAgICA8dmFsdWU+QnJ1Z2VybmF2bmV0IHNrYWwgaW5kZWhvbGRlIG1pbmRzdCA0IHRlZ248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0IiBuYW1lPSJtaW40cGFzcyI+CisgICAgPHZhbHVlPkFkZ2FuZ3Nrb2RlbiBza2FsIGluZGVob2xkZSBtaW5kc3QgNCB0ZWduPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNSIgbmFtZT0idXNlcm5hbWV0YWtlbiI+CisgICAgPHZhbHVlPkJydWdlcm5hdm5ldCBhbnZlbmRlcyBpIGZvcnZlamVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNiIgbmFtZT0iZW1haWx0YWtlbiI+CisgICAgPHZhbHVlPkVtYWlsYWRyZXNzZW4gYW52ZW5kZXMgaSBmb3J2ZWplbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDciIG5hbWU9ImVtYWlsdGFrZW4iPgorICAgIDx2YWx1ZT5TeXN0ZW1mZWpsLCBrb250YWt0IHN5c3RlbWFkbWluaXN0cmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4IiBuYW1lPSJBdXRobG9naW4iPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkiIG5hbWU9IkF1dGh1c2VyIj4KKyAgICA8dmFsdWU+QnJ1Z2VybmF2bjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwIiBuYW1lPSJBdXRocGFzcyI+CisgICAgPHZhbHVlPkFkZ2FuZ3Nrb2RlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEiIG5hbWU9IkF1dGhsYW5nIj4KKyAgICA8dmFsdWU+U3Byb2c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyIiBuYW1lPSJBdXRocmVnIj4KKyAgICA8dmFsdWU+TG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzIiBuYW1lPSJyZWdmb3JtaGVhZCI+CisgICAgPHZhbHVlPlJlZ2lzdHJlcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQiIG5hbWU9InJlZ2Zvcm11c2VyIj4KKyAgICA8dmFsdWU+QnJ1Z2VybmF2bjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1IiBuYW1lPSJyZWdmb3JtcGFzcyI+CisgICAgPHZhbHVlPkFkZ2FuZ3Nrb2RlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYiIG5hbWU9InJlZ2Zvcm1yZXR5cGUiPgorICAgIDx2YWx1ZT5BZGdhbmdza29kZSBpZ2VuOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTciIG5hbWU9InJlZ2Zvcm1maXJzdG5hbWUiPgorICAgIDx2YWx1ZT5Gb3JuYXZuOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgiIG5hbWU9InJlZ2Zvcm1sYXN0bmFtZSI+CisgICAgPHZhbHVlPkVmdGVybmF2bjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5IiBuYW1lPSJyZWdmb3JtbWFpbCI+CisgICAgPHZhbHVlPkVtYWlsOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAiIG5hbWU9InJlZ2Zvcm1zdGF0ZSI+CisgICAgPHZhbHVlPkxhbmQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMSIgbmFtZT0icmVnZm9ybWJ0bjEiPgorICAgIDx2YWx1ZT5SZWdpc3RyZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyIiBuYW1lPSJyZWdmb3JtYnRuMiI+CisgICAgPHZhbHVlPkFubnVsbGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMyIgbmFtZT0iQXV0aGJ0bjIiPgorICAgIDx2YWx1ZT5SZWdpc3RyZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5Gb3JzaWRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNSIgbmFtZT0idXNlcmFkbWluIj4KKyAgICA8dmFsdWU+QnJ1Z2VyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYiIG5hbWU9Imdyb3VwYWRtaW4iPgorICAgIDx2YWx1ZT5HcnVwcGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNyIgbmFtZT0ib3JnYWRtaW4iPgorICAgIDx2YWx1ZT5PcmdhbmlzYXRpb25lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgiIG5hbWU9ImhlYWRjb25mIj4KKyAgICA8dmFsdWU+S29uZmVyZW5jZXJ1bTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkiIG5hbWU9ImNvbmZfcHViIj4KKyAgICA8dmFsdWU+T2ZmZW50bGlnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMCIgbmFtZT0iaGVhZF9vcmciPgorICAgIDx2YWx1ZT5PcmdhbmlzYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxIiBuYW1lPSJidG5fZW50ZXJyb29tIj4KKyAgICA8dmFsdWU+TG9nIGluZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIiIG5hbWU9InVzZXJhbHRlcnNlbGZfbG9naW4iPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMiIG5hbWU9InVzZXJhbHRlcnNlbGZfcGFzcyI+CisgICAgPHZhbHVlPkFkZ2FuZ3Nrb2RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNCIgbmFtZT0idXNlcmFsdGVyc2VsZl9wYXNzcmV0eXBlIj4KKyAgICA8dmFsdWU+QWRnYW5nc2tvZGUgaWdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUiIG5hbWU9InVzZXJhbHRlcnNlbGZfZmlyc3RuYW1lIj4KKyAgICA8dmFsdWU+Rm9ybmF2bjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYiIG5hbWU9InVzZXJhbHRlcnNlbGZfbGFzdG5hbWUiPgorICAgIDx2YWx1ZT5FZnRlcm5hdm48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2VtYWlsIj4KKyAgICA8dmFsdWU+RW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2JpcnRoIj4KKyAgICA8dmFsdWU+RsO4ZHNlbHNkYXRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOSIgbmFtZT0idXNlcmFsdGVyc2VsZl9zdHJlZXRubyI+CisgICAgPHZhbHVlPlZlai9ucjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDAiIG5hbWU9InVzZXJhbHRlcnNlbGZfdG93biI+CisgICAgPHZhbHVlPlBvc3Ruci4vQnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3N0YXRlIj4KKyAgICA8dmFsdWU+TGFuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIiIG5hbWU9InVzZXJhbHRlcnNlbGZfYWRyZXNzY29tbWVudCI+CisgICAgPHZhbHVlPkFkcmVzc2UtSW5mbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMiIG5hbWU9InVzZXJhbHRlcnNlbGZfaGVhZGVyIj4KKyAgICA8dmFsdWU+QnJ1Z2VyZGF0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQiIG5hbWU9InNhdmVtZW51YmFyX3NhdmVsYWJlbCI+CisgICAgPHZhbHVlPkdlbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUiIG5hbWU9InNhdmVtZW51YmFyX3NhdmVsYWJlbCI+CisgICAgPHZhbHVlPkdlbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYiIG5hbWU9ImFkbWluX3VzZXJsaXN0X3VzZXJfaWQiPgorICAgIDx2YWx1ZT5CcnVnZXItSUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3IiBuYW1lPSJhZG1pbl91c2VybGlzdF9sb2dpbiI+CisgICAgPHZhbHVlPkxvZ2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OCIgbmFtZT0iYWRtaW5fdXNlcmxpc3RfZmlyc3RuYW0iPgorICAgIDx2YWx1ZT5Gb3JuYXZuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OSIgbmFtZT0iYWRtaW5fdXNlcmxpc3RfbGFzdG5hbWUiPgorICAgIDx2YWx1ZT5FZnRlcm5hdm48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwIiBuYW1lPSJ0dXJub3Zlcmxpc3RfbmV4dCI+CisgICAgPHZhbHVlPlZpcyBuw6ZzdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxIiBuYW1lPSJ0dXJub3Zlcmxpc3RfcHJlIj4KKyAgICA8dmFsdWU+VmlzIGZvcnJpZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyIiBuYW1lPSJzYXZlY29udGVudF9jb25maXJtIj4KKyAgICA8dmFsdWU+U2xldCBpbmRob2xkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MyIgbmFtZT0ic2F2ZWNvbnRlbnRfY29uZmlybV9jYW5jZWxfYnRuIj4KKyAgICA8dmFsdWU+QW5udWxsZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU0IiBuYW1lPSJzYXZlY29udGVudF9jb25maXJtX2NvbmZpcm1fYnRuIj4KKyAgICA8dmFsdWU+U2xldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTUiIG5hbWU9InNhdmVtZW51YmFyX2FkZGxhYmVsIj4KKyAgICA8dmFsdWU+Tnl0IGluZGhvbGQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU2IiBuYW1lPSJzYXZlbWVudWJhcl9yZWxvYWRsYWJlbCI+CisgICAgPHZhbHVlPk9wZGF0ZXIgaW5kaG9sZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTciIG5hbWU9InNhdmVtZW51YmFyX2RlbGV0ZWxhYmVsIj4KKyAgICA8dmFsdWU+U2xldCBpbmRob2xkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1OCIgbmFtZT0idXNlcmFsdGVyX2FkbWluX3N0YXR1cyI+CisgICAgPHZhbHVlPlN0YXR1czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTkiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9zdGF0dXNJdGVtIj4KKyAgICA8dmFsdWU+SWtrZSB0aWxnw6ZuZ2VsaWc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYwIiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fc3RhdHVzSXRlbSI+CisgICAgPHZhbHVlPlRpbGfDpm5nZWxpZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjEiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9vcmdhbmlzYXRpb24iPgorICAgIDx2YWx1ZT5PcmdhbmlzYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYyIiBuYW1lPSJjYWxlbmRhcl9pY29ubGFiZWwiPgorICAgIDx2YWx1ZT5LYWxlbmRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjMiIG5hbWU9InNhdmV3aW5kb3dfYnRuIj4KKyAgICA8dmFsdWU+THVrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2NCIgbmFtZT0ib3JnYW5pc2F0aW9udGFibGVsaXN0X2lkcm93Ij4KKyAgICA8dmFsdWU+T3JnYW5pc2F0aW9uLUlEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2NSIgbmFtZT0ib3JnYW5pc2F0aW9udGFibGVsaXN0X25hbWVyb3ciPgorICAgIDx2YWx1ZT5OYXZuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2NiIgbmFtZT0idXNlcnZhbHVlX2xldmVsaWQxIj4KKyAgICA8dmFsdWU+QnJ1Z2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2NyIgbmFtZT0idXNlcnZhbHVlX2xldmVsaWQyIj4KKyAgICA8dmFsdWU+TW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2OCIgbmFtZT0idXNlcnZhbHVlX2xldmVsaWQzIj4KKyAgICA8dmFsdWU+QWRtaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY5IiBuYW1lPSJ1c2VydmFsdWVfbGV2ZWxsYWJlbCI+CisgICAgPHZhbHVlPkJydWdlcm5pdmVhdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzAiIG5hbWU9Im9yZ3ZhbHVlX2hlYWRlciI+CisgICAgPHZhbHVlPk9yZ2FuaXNhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzEiIG5hbWU9Im9yZ3ZhbHVlX29yZ25hbWUiPgorICAgIDx2YWx1ZT5OYXZuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MiIgbmFtZT0ib3JndmFsdWVfb3JnbmFtZSI+CisgICAgPHZhbHVlPkdlbSB0aWwgb3JnYW5pc2F0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MyIgbmFtZT0ib3JndmFsdWVfb3JnbmFtZSI+CisgICAgPHZhbHVlPkdlbSB0aWwgb3JnYW5pc2F0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3NCIgbmFtZT0ib3JndmFsdWVfdXNlcndpbiI+CisgICAgPHZhbHVlPkFubnVsbGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3NSIgbmFtZT0ib3JndmFsdWVfdXNlcndpbiI+CisgICAgPHZhbHVlPkdlbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzYiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW4iPgorICAgIDx2YWx1ZT5GamVybiBvcmdhbmlzYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc3IiBuYW1lPSJvcmd2YWx1ZV91c2VybGlzdCI+CisgICAgPHZhbHVlPkJydWdlcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc4IiBuYW1lPSJvcmd2YWx1ZV91c2VybGlzdGFkZCI+CisgICAgPHZhbHVlPkdlbSB0aWwgYnJ1Z2VyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzkiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJsaXN0ZGVsZXRlIj4KKyAgICA8dmFsdWU+U2xldCBicnVnZXJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4MCIgbmFtZT0ib3JndmFsdWVfdXNlcndpbmhlYWRlciI+CisgICAgPHZhbHVlPkdlbSB0aWwgYnJ1Z2VyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODEiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5zZWFyY2hmaWVsZCI+CisgICAgPHZhbHVlPlPDuGcgYnJ1Z2VyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODIiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5zZWFyY2hidG4iPgorICAgIDx2YWx1ZT5zw7hnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4MyIgbmFtZT0ib3JndmFsdWVfdXNlcndpbnNlYXJjaHJlc3VsdCI+CisgICAgPHZhbHVlPkJydWdlcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg0IiBuYW1lPSJsb2dpbndpbl9jaG9vc2VvcmdhbmlzYXRpb24iPgorICAgIDx2YWx1ZT5PcmdhbmlzYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg1IiBuYW1lPSJsb2dpbndpbl9jaG9vc2VvcmdhbmlzYXRpb25idG4iPgorICAgIDx2YWx1ZT5Mb2cgaW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NiIgbmFtZT0ibmF2aV9yb29tYWRtaW4iPgorICAgIDx2YWx1ZT5Lb25mZXJlbmNlcnVtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NyIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPktvbmZlcmVuY2VydW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg4IiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+SWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg5IiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+TmF2bjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTAiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5PZmZlbnRsaWc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkxIiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+T3JnYW5pc2F0aW9uZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkyIiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+S29uZmVyZW5jZXJ1bTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTMiIG5hbWU9InJvb212YWx1ZV9uYW1lIj4KKyAgICA8dmFsdWU+TmF2bjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTQiIG5hbWU9InJvb212YWx1ZV90eXBlIj4KKyAgICA8dmFsdWU+VHlwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTUiIG5hbWU9InJvb212YWx1ZV9pc3B1YmxpYyI+CisgICAgPHZhbHVlPk9mZmVudGxpZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTYiIG5hbWU9InJvb212YWx1ZV9jb21tZW50Ij4KKyAgICA8dmFsdWU+S29tbWVudGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NyIgbmFtZT0id2hpdGVib2FyZF9zYXZlaWNvbiI+CisgICAgPHZhbHVlPkdlbSBvZyBla3Nwb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5OCIgbmFtZT0id2hpdGVib2FyZF9vcGVuaWNvbiI+CisgICAgPHZhbHVlPlVwbG9hZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTkiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2luaGVhZGVyIj4KKyAgICA8dmFsdWU+R2VtIHNvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDAiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2ludGV4dCI+CisgICAgPHZhbHVlPkZpbG5hdm48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAxIiBuYW1lPSJmaWxlcyI+CisgICAgPHZhbHVlPkZpbG5hdm48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAyIiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbmJ0bjEiPgorICAgIDx2YWx1ZT5Bbm51bGxlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDMiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2luYnRuMiI+CisgICAgPHZhbHVlPkdlbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDQiIG5hbWU9InJwY2Vycm9yd2luX2hlYWRlciI+CisgICAgPHZhbHVlPkZlamw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA1IiBuYW1lPSJsb2Fkd21sX2hlYWRlciI+CisgICAgPHZhbHVlPkdlbW1lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDYiIG5hbWU9ImxvYWR3bWxfbWVzc3Nsb2FkIj4KKyAgICA8dmFsdWU+T2JqZWt0ZXIgaW5kbMOmc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA3IiBuYW1lPSJsb2Fkd21sX21lc3NzeW5jIj4KKyAgICA8dmFsdWU+U3lua3JvbmlzZXJlciwgdmVudDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA4IiBuYW1lPSJsb2FkaW1hZ2VfbWVzc2xvYWQiPgorICAgIDx2YWx1ZT5JbmRsw6ZzZXIgYmlsbGVkZGF0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDkiIG5hbWU9ImxvYWRpbWFnZV9tZXNzc3luYyI+CisgICAgPHZhbHVlPlN5bmtyb25pc2VyZXIsIHZlbnQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMCIgbmFtZT0ibG9hZHdtbF9jb25maXJtaGVhZGVyIj4KKyAgICA8dmFsdWU+UmVucyB0ZWduZW9tcsOlZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjExIiBuYW1lPSJsb2Fkd21sX2NvbmZpcm1tZXNzIj4KKyAgICA8dmFsdWU+UmVucyB0ZWduZW9tcsOlZGUsIGFsbGUgZGF0YSBtaXN0ZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEyIiBuYW1lPSJsb2Fkd21sX2NvbmZpcm1tZXNzMiI+CisgICAgPHZhbHVlPlNww7hyZyBpbmRlbiBpbmRsw6ZzbmluZyBhZiBmaWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEzIiBuYW1lPSJzZW5kX2ludml0YXRpb25fYnRuIj4KKyAgICA8dmFsdWU+U2VuZCBpbnZpdGF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNCIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX2hlYWRlciI+CisgICAgPHZhbHVlPlNlbmQgaW52aXRhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTUiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+RW1uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTYiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9yZWNpcGllbnQiPgorICAgIDx2YWx1ZT5Nb2R0YWdlcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE3IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fbWVzc2FnZSI+CisgICAgPHZhbHVlPk1lZGRlbGVsc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxOCIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX2J0bl9jb25maXJtIj4KKyAgICA8dmFsdWU+U2VuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTkiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9idG5fY2FuY2VsIj4KKyAgICA8dmFsdWU+QW5udWxsZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIwIiBuYW1lPSJzZW5kX2NoYXRfdGV4dF9idG4iPgorICAgIDx2YWx1ZT5TZW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyMSIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2hlYWRlciI+CisgICAgPHZhbHVlPkJydWdlcmRhdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIyIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fc3ViamVjdCI+CisgICAgPHZhbHVlPkRpdCBhbGlhcyBpIGRlbm5lIGtvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIzIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fbG9naW4iPgorICAgIDx2YWx1ZT5BbGlhczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjQiIG5hbWU9Imludml0ZWRfdXNlcndpbl9maXJzdG5hbWUiPgorICAgIDx2YWx1ZT5Gb3JuYXZuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNSIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2xhc3RuYW1lIj4KKyAgICA8dmFsdWU+RWZ0ZXJuYXZuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNiIgbmFtZT0iaW52aXRlZF91c2Vyd2luX21haWwiPgorICAgIDx2YWx1ZT5FbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjciIG5hbWU9Imludml0ZWRfdXNlcndpbl9sYW5nIj4KKyAgICA8dmFsdWU+U3Byb2c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI4IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZW50ZXIiPgorICAgIDx2YWx1ZT5Mb2cgaW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyOSIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2VudGVyIj4KKyAgICA8dmFsdWU+SW5kbMOmc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMCIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2VudGVyIj4KKyAgICA8dmFsdWU+SW5kbMOmc2VyIGRhdGEsIHZlbnQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMSIgbmFtZT0idXNlcl9yZWdpc3RlckZhbHNlUFdEIj4KKyAgICA8dmFsdWU+Rm9ya2VydCBhZGdhbmdza29kZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzIiIG5hbWU9InVzZXJfcmVnaXN0ZXJGYWxzZVBXREhlYWRlciI+CisgICAgPHZhbHVlPjIgaWRlbnRpc2tlIGFkZ2FuZ3Nrb2RlciBtZWQgbWluZHN0IDQgdGVnbiwgdGFrITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzMiIG5hbWU9InVzZXJfcmVnaXN0ZXJNYWlsRXJyb3IiPgorICAgIDx2YWx1ZT5Gb3JrZXJ0IGVtYWlsYWRyZXNzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzQiIG5hbWU9InVzZXJfcmVnaXN0ZXJNYWlsRXJyb3JIZWFkZXIiPgorICAgIDx2YWx1ZT5EdSBoYXIgYW5naXZldCBlbiBmb3JrZXJ0IGVtYWlsYWRyZXNzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzUiIG5hbWU9InVzZXJfcmVnaXN0ZXJTdWNjZXNzIj4KKyAgICA8dmFsdWU+UmVnaXN0cmVyaW5nIGVyIGZ1bGRmw7hydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzYiIG5hbWU9InVzZXJfcmVnaXN0ZXJTdWNjZXNzSGVhZGVyIj4KKyAgICA8dmFsdWU+RGluIGtvbnRvIGVyIG9wcmV0dGV0LiBEdSBrYW4gbnUgbG9nZ2UgaW5kLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzciIG5hbWU9InVzZXJfc2hhcmluZ19tZXNzYWdlIj4KKyAgICA8dmFsdWU+RHUga2FuIGlra2UgZGVsZSBkaW4gc2vDpnJtIGxpZ2UgbnUuIEVuIGFuZGVuIGJydWdlciBmdW5rdGlvbmVuIGxpZ2UgbnUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzOCIgbmFtZT0idXNlcl9zaGFyaW5nX21lc3NhZ2VIZWFkZXIiPgorICAgIDx2YWx1ZT5EZWxpbmcgZm9yYnVkdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzkiIG5hbWU9InVzZXJfZG9TdGFydFNjcmVlblZpZXdlciI+CisgICAgPHZhbHVlPkRlbCBkaW4gc2vDpnJtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0MCIgbmFtZT0ic2NyZWVuX3dhcm5CYW5kd2lkdGgiPgorICAgIDx2YWx1ZT5SaW5nZSBiw6VuZGJyZWRkZTogRHUga2FuIGlra2Ugc3lua3JvbmlzZXJlIGRpbiBza8Omcm0uIEZyYW1lcyBibGl2ZXIgZHJvcHBldC4gSHZpcyBkZW5uZSBhZHZhcnNlbCB2aXNlcyBvZnRlIGthbiBkdSBiZWRlIG1vZGVyYXRvcmVuIG9tIGF0IHPDpm5rZSBrdmFsaXRldGVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDEiIG5hbWU9InNjcmVlbl91c2VybGFiZWwiPgorICAgIDx2YWx1ZT5Ta8Omcm0gYWY6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0MiIgbmFtZT0id2hpdGVib2FyZF90YWJfcGFpbnQiPgorICAgIDx2YWx1ZT5NYWxlL3RlZ25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0MyIgbmFtZT0id2hpdGVib2FyZF90YWJfZG9jdW1lbnQiPgorICAgIDx2YWx1ZT5Eb2t1bWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDQiIG5hbWU9InRhYmJhcl9jaGF0aWNvbiI+CisgICAgPHZhbHVlPkNoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ1IiBuYW1lPSJ0YWJiYXJfZmlsZXNpY29uIj4KKyAgICA8dmFsdWU+RmlsZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ2IiBuYW1lPSJ0YWJiYXJfcGFydGljaXBhbnRzaWNvbiI+CisgICAgPHZhbHVlPk1lZGxlbW1lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDciIG5hbWU9InN3ZnByZXNlbnRhdGlvbl9saXN0c2F2ZW9yaWciPgorICAgIDx2YWx1ZT5Eb3dubG9hZCBvcmlnaW5hbHQgZG9rdW1lbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ4IiBuYW1lPSJzd2ZwcmVzZW50YXRpb25fbGlzdHNhdmVwZGYiPgorICAgIDx2YWx1ZT5Eb3dubG9hZCBQREYtZG9rdW1lbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ5IiBuYW1lPSJzd2ZwcmVzZW50YXRpb25fbGlzdGxvYWRzd2YiPgorICAgIDx2YWx1ZT5JbmRsw6ZzIHByw6ZzZW50YXRpb25lbiB0aWwgd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTAiIG5hbWU9Im5hdmltYWluX2NvbmZpZyI+CisgICAgPHZhbHVlPktvbmZpZ3VyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUxIiBuYW1lPSJ3aGl0ZWJvYXJkX2JvdW5kaW5nYm94X2RyYWciPgorICAgIDx2YWx1ZT5UcsOmayBkZXR0ZSBvYmpla3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUyIiBuYW1lPSJ3aGl0ZWJvYXJkX2JvdW5kaW5nYm94X3Jlc2l6ZSI+CisgICAgPHZhbHVlPsOGbmRyZSBzdMO4cnJlbHNlIHDDpSBkZXR0ZSBvYmpla3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUzIiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl96b29tIj4KKyAgICA8dmFsdWU+JTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTQiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3NsaWRlIj4KKyAgICA8dmFsdWU+YWY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU1IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9maXJzdHNsaWRlIj4KKyAgICA8dmFsdWU+R8OlIHRpbCBmw7hyc3RlIHNpZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU2IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9wcmVzbGlkZSI+CisgICAgPHZhbHVlPkfDpSB0aWwgZm9yZWfDpWVuZGUgc2lkZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTciIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX25leHRzbGlkZSI+CisgICAgPHZhbHVlPkfDpSB0aWwgbsOmc3RlIHNpZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU4IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9sYXN0c2xpZGUiPgorICAgIDx2YWx1ZT5Hw6UgdGlsIHNpZHN0ZSBzaWRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1OSIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfem9vbW1pbnVzIj4KKyAgICA8dmFsdWU+Wm9vbSAtLTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjAiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3pvb21wbHVzIj4KKyAgICA8dmFsdWU+Wm9vbSArKzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjEiIG5hbWU9InNhbHV0YXRpb25fbXIiPgorICAgIDx2YWx1ZT5Ici48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYyIiBuYW1lPSJzYWx1dGF0aW9uX21pc3MiPgorICAgIDx2YWx1ZT5Gci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYzIiBuYW1lPSJuYXZpbWFpbl9jb25mYWRtaW4iPgorICAgIDx2YWx1ZT5Lb25maWd1cmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2NCIgbmFtZT0iY29uZnRhYmxlX2hlYWRlcklkIj4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY1IiBuYW1lPSJjb25mdGFibGVfaGVhZGVya2V5Ij4KKyAgICA8dmFsdWU+TsO4Z2xlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2NiIgbmFtZT0iY29uZmFkbWluZm9ybV9oZWFkZXIiPgorICAgIDx2YWx1ZT5Lb25maWd1cmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2NyIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbGtleSI+CisgICAgPHZhbHVlPk7DuGdsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjgiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWx1cGRhdGVkIj4KKyAgICA8dmFsdWU+c2lkc3RlIG9wZGF0ZXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY5IiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsdXBkYXRlZGJ5Ij4KKyAgICA8dmFsdWU+b3BkYXRlcmV0IGFmPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MCIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbGNvbW1lbnQiPgorICAgIDx2YWx1ZT5rb21tZW50YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjcxIiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsa2V5Ij4KKyAgICA8dmFsdWU+bsO4Z2xlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MiIgbmFtZT0idHVybm92ZXJsaXN0X21heHJlc3VsdHMiPgorICAgIDx2YWx1ZT5hZjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzMiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2hlYWRlciI+CisgICAgPHZhbHVlPkJydWdlcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc0IiBuYW1lPSJvcmdhbmlzYXRpb25fdXNlcnNpY29uZGVsZXRlIj4KKyAgICA8dmFsdWU+c2xldCBicnVnZXJlIGZyYSBvcmdhbmlzYXRpb25lbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzUiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2RlbGV0ZWRoZWFkIj4KKyAgICA8dmFsdWU+c2xldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzYiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2FscmVhZGFkZGVkIj4KKyAgICA8dmFsdWU+RGVubmUgYnJ1Z2VyIGVyIGFsbGVyZWRlIG1lZGxlbSBhZiBvcmdhbmlzYXRpb25lbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc3IiBuYW1lPSJkYXNoYm9hcmRfbmV3c2hlYWRlciI+CisgICAgPHZhbHVlPk55aGVkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc4IiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rc2hlYWRlciI+CisgICAgPHZhbHVlPkh1cnRpZ2UgZ2VudmVqZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzkiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtDb25mIj4KKyAgICA8dmFsdWU+R8OlIHRpbCBLb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MCIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua0F1ZGl0Ij4KKyAgICA8dmFsdWU+R8OlIHRpbCBBdWRpdG9yaXVtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MSIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua3N1cHBvcnQiPgorICAgIDx2YWx1ZT5IasOmbHAgb2cgc3VwcG9ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODIiIG5hbWU9ImRhc2hib2FyZF9xdWlja2hvbWVwYWdldXJsIj4KKyAgICA8dmFsdWU+aHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnLzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODMiIG5hbWU9ImRhc2hib2FyZF9xdWlja21haWxpbmdsaXN0dXJsIj4KKyAgICA8dmFsdWU+aHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnL21haWwtbGlzdHMuaHRtbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODQiIG5hbWU9ImRhc2hib2FyZF9yZXBvcnRidWdzIj4KKyAgICA8dmFsdWU+QW5tZWxkIGJ1Z3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg1IiBuYW1lPSJkYXNoYm9hcmRfcnNzbGlzdGl0ZW1saW5rdGV4dCI+CisgICAgPHZhbHVlPm1lcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg2IiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5raG9tZXBhZ2VsYWJlbCI+CisgICAgPHZhbHVlPlByb2pla3QgV2Vic2lkZSAoaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODciIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmttYWlsaW5nbGlzdGxhYmVsIj4KKyAgICA8dmFsdWU+QnJ1Z2VyIG1haWxsaXN0ZSAoaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnL21haWwtbGlzdHMuaHRtbCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg4IiBuYW1lPSJsb2dpbl9yZW1lbWJlcnVzZXIiPgorICAgIDx2YWx1ZT5IdXNrIGRpdCBsb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODkiIG5hbWU9Im1haW5fbmF2aSI+CisgICAgPHZhbHVlPkluZGhvbGQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkwIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+TWluIGZvcnNpZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkxIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+TWluZSBza2VtYWxhZ3RlIG3DuGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTIiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5NaW5lIHBsYW5sYWd0ZSBBdWRpdG9yaWVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MyIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPk9mZmVudGxpZ2UgbcO4ZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPlByaXZhdGUgbcO4ZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NSIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPk9mZmVudGxpZ2UgQXVkaXRvcmllcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTYiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5Qcml2YXRlIEF1ZGl0b3JpZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk3IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+T2ZmZW50bGlndCBpbmRob2xkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5OCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPlByaXZhdCBpbmRob2xkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5OSIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPlBlcnNvbmxpZ3QgaW5kaG9sZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDAiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAxIiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+TW9kZXJlcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDIiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5Bbm1vZCBvbSBtb2RlcmVyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMyIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPkFmc3RlbW5pbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA0IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+VsOmbGcgZW4gZmlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNSIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPkluZHN0aWxsaW5nZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA2IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+Q2FtLiAmYW1wOyBNaWsuIEluZHN0aWwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNyIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPldoaXRlYm9hcmQgSW5kc3RpbGxpbmdlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDgiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5BZnNsdXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA5IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+Rm9ybGFkIHJ1bW1ldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTAiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5Mb2cgYWY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzExIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPkdsZW10IGRpbiBhZGdhbmdza29kZT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEyIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPk51bHN0aWwgYWRnYW5nc2tvZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEzIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlZpYSBlbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTQiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+VmlhIGJydWdlcm5hdm48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE1IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPkRpbiBlbWFpbGFkcmVzc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE2IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPkRpdCBicnVnZXJuYXZuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxNyIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5TZW5kIGVtYWlsIG1lZCBha3RpdmVyaW5nc2xpbms8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE4IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPkJydWdlcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE5IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPkluZHPDpnQgdmVubGlnc3QgZW1haWxhZHJlc3NlIGVsbGVyIGJydWdlcm5hdm48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIwIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPkluZ2VuIGJydWdlciBlciBmb3JidW5kZXQgbWVkIGRldHRlIGJydWdlcm5hdm48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIxIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPkVtYWlsZW4gbWVkIGRldCBzcGVjaWVsbGUgbGluayBlciBibGV2ZXQgc2VuZHQgdGlsIGRpbiBlbWFpbGFkcmVzc2UuIEtvbnRyb2xsZXIgdmVubGlnc3QgZGluIGluZGJha2tlLiBIdmlzIGR1IGlra2UgaGFyIG1vZHRhZ2V0IGVuIGVtYWlsLCBiZWRlcyBkdSBrb250cm9sbGVyZSBkaW50IFNQQU0tZmlsdGVyIG9nIGdlbmZyZW1zZW5kZSBlbWFpbGVuIGZyYSBzeXN0ZW1ldC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIyIiBuYW1lPSJlcnJvcnR5cGUiPgorICAgIDx2YWx1ZT5GZWpsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyMyIgbmFtZT0iZXJyb3J0eXBlIj4KKyAgICA8dmFsdWU+TWVkZGVsZWxzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjQiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPkZvcmtlcnQgSEFTSC4gSW5nZW4gYnJ1Z2VyIGZ1bmRldC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI1IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5OdWxzdGlsIGRpbiBhZGdhbmdza29kZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjYiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPkxvZ2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNyIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+w4ZuZHJlIGFkZ2FuZ3Nrb2RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyOCIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+TnkgYWRnYW5nc2tvZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI5IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5BZGdhbmdza29kZSBpZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzMCIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+QWRnYW5nc2tvZGVybmUgZHUgaGFyIGFuZ2l2ZXQgZXIgaWtrZSBpZGVudGlza2UuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzMSIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+NCB0ZWduIGVsbGVyIG1lcmU7IGZvcnNrZWwgcMOlIHNtw6Ugb2cgc3RvcmUgYm9nc3RhdmVyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzIiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPkFkZ2FuZ3Nrb2RlIHZhbGd0LiBEdSBrYW4gbG9nZ2UgaW5kIG51LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzMiIG5hbWU9InJwY2NhbGxiYWNrIj4KKyAgICA8dmFsdWU+T0s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM0IiBuYW1lPSJycGNnZW5lcmFsZXJyb3IiPgorICAgIDx2YWx1ZT5Va2VuZHQgZmVqbC4gUmFwcG9ydGVyIHZlbmxpZ3N0IHRpbCBkaW5lIHN1cHBvcnQgbXVsaWdoZWRlci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM1IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPkJydWdlcm5hdm5ldCBibGV2IGlra2UgZnVuZGV0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzYiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+VWd5bGRpZyBhZGdhbmdza29kZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM3IiBuYW1lPSJsb2dvdXQiPgorICAgIDx2YWx1ZT5EdSBlciBudSBsb2dnZXQgdWQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzOCIgbmFtZT0icmVnaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+UmVnaXN0cmVyaW5nIHZpYSBsb2dpbnNpZGUgKGZyb250ZW5kKSBlciBpbmFrdGl2ZXJldC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM5IiBuYW1lPSJyZWdpc3RyYXRpb24iPgorICAgIDx2YWx1ZT5VZ3lsZGlnIGVtYWlsYWRyZXNzZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQwIiBuYW1lPSJyZWdpc3RyYXRpb24iPgorICAgIDx2YWx1ZT5GaWxuYXZuZXQgZWtzaXN0ZXJlciBpIGZvcnZlamVuLiBWw6ZsZyB2ZW5saWdzdCBldCBhbmRldCBmaWxuYXZuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDEiIG5hbWU9ImZpbGVicm93c2VyIj4KKyAgICA8dmFsdWU+RmlsbmF2bmV0IGVyIGZvciBrb3J0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDIiIG5hbWU9ImZpbGVicm93c2VyIj4KKyAgICA8dmFsdWU+S3VubmUgaWtrZSBnZW1tZSBhZHJlc3Nlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQzIiBuYW1lPSJ1c2VyYWRtaW4iPgorICAgIDx2YWx1ZT5CcnVnZXIgb3ByZXR0ZXQsIG1lbiBza2FsIHRpbGRlbGVzIHRpbCBlbiBvcmdhbmlzYXRpb24gZm9yIGF0IGt1bm5lIGxvZ2dlIGluZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ0IiBuYW1lPSJhZG1pbmZvcm1zIj4KKyAgICA8dmFsdWU+Tnl0IGZlbHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ1IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5EZXIgZXIgaWtrZSBmdW5kZXQgZXQgZmVsdCBtZWQgZGV0dGUgZmVsdElELjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDYiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkRlciBlciBpa2tlIGZ1bmRldCBlbiBldGlrZXQgdGlsIGRldHRlIGZlbHQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NyIgbmFtZT0iZXJyb3JtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRtaW4gYXV0b3Jpc2F0aW9uIGVyIGtyw6Z2ZXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0OCIgbmFtZT0ibWFpbm5hdmkiPgorICAgIDx2YWx1ZT5TcHJvZ2VkaXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDkiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPlNwcm9nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1MCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+RXRpa2V0LUlEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1MSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+RXRpa2V0LU5hdm48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUyIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5Ww6ZyZGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUzIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5GZWx0dsOmcmRpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1NCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+RXRpa2V0TmF2bjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTUiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkV0aWtldFbDpnJkaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTYiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkV0aWtldC1JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTciIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkR1IHNsZXR0ZWRlIGt1biBldGlrZXR0ZW4sIElLS0UgRmVsdGV0ISBEdSBrYW4gaWtrZSBzbGV0dGV0IGZlbHRldCwgZGV0IGluZGVob2xkZXIgbcOlc2tlIGV0aWtldHRlciBww6UgYW5kcmUgc3Byb2cuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1OCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+VWd5bGRpZyBFdGlrZXQtSUQuIEZpZWxkTGFuZ3VhZ2VzdmFsdWVzX0lkIGthbiBpa2tlIGZpbmRlcyBpIGRhdGFiYXNlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU5IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5EdSBrYW4gaWtrZSBzbGV0dGUgZGV0dGUgZmVsdC4gRHUga2FuIGt1biBzbGV0dGUgZXRpa2V0dGVyLCBJS0tFIEZlbHQuIEkgw7hqZWJsaWtrZXQgZXIgZGVyIGlra2UgaW5kbMOmc3QgZXRpa2V0dGVyLCBkZXR0ZSBrYW4gc2t5bGRlcywgYXQgaW5nZW4gZXRpa2V0IGVyIHZhbGd0IGVsbGVyIGRlZmluZXJldCBmb3IgZGV0dGUgZmVsdCBvZyBzcHJvZ2V0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjAiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkVrc3BvcnRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjEiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkR1IHNrYWwgbG9nZ2UgdWQgZm9yIGF0IGt1bm5lIHNlIMOmbmRyaW5nZXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+VGlsZsO4aiBueXQgc3Byb2c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYzIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5GamVybiBzcHJvZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjQiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPlRpbGbDuGogbnl0IHNwcm9nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TmF2bjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjYiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPlRpbGbDuGogc3Byb2c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY3IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5TaWtrZXJoZWRza29waWVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2OCIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+R8OlIHRpbCBmw7hyc3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2OSIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+R8OlIHRpbCBmb3JlZ8OlZW5kZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzAiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPkfDpSB0aWwgbsOmc3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MSIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+R8OlIHRpbCBzaWRzdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzcyIiBuYW1lPSJ2aWRlb2JveCI+CisgICAgPHZhbHVlPkJydWdlciB0YWxlciAoQnkgY2xpY2tpbmcgaGVyZSB5b3UgY2FuIGdpdmUgZXhjbHVzaXZlIGF1ZGlvIC8gbXV0ZSB0aGUgbWljcm9waG9uZSBvZiBvdGhlcnMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MyIgbmFtZT0idmlkZW9ib3giPgorICAgIDx2YWx1ZT5MWUQgdGlsL2ZyYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPlN5c3RlbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzUiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPkRpbmUgaW5kc3RpbGxpbmdlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzYiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPkhlaiw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc3IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5SZWRpZ2VyIHByb2ZpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzgiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPk55ZSBtZWRkZWxlbHNlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc5IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5JbmRsw6ZzIG55dCBiaWxsZWRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4MCIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5CcnVnZXJkYXRhIC0gRXhwb3J0ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgxIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPkFsbGEgb3JnYW5pc2F0aW9uZXIgc2thbCBla3Npc3RlcmUgaSBmb3J2ZWplbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgyIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPlN0YXJ0IGVrc3BvcnRlcmluZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4MyIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5JZsO4bGdlIG9yZ2FuaXNhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODQiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+U3RhcnQgZWtzcG9ydGVyaW5nZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg1IiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPkJydWdlcmRhdGEgLSBJbXBvcnRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODYiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+VsOmbGcgdXNlcnMueG1sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+SW1wb3J0ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg4IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5Fa3Nwb3J0ZXIgdGlsIFhNTCAtIERpc3NlIGZpbGVyIGthbiBicnVnZXMgdGlsOiAtIEJpZHJhZ2UgdGlsIHByb2pla3RldCAtIEltcG9ydGVyZSB0aWwgZXQgYW5kZXQgc3lzdGVtIC0gTGF2ZSBzaWtrZXJoZWRza29waWVyIC0gU2tyw6ZkZGVyc3kgcHJvZ3JhbW1ldCAtIEzDpmdnZSBpIGxhbmd1YWdlLW1hcHBlbiBmb3Iga29tbWVuZGUgaW5zdGFsbGF0aW9uZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg5IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5Ww6ZsZyBlbiBzcHJvZ2ZpbCBkdSB2aWwgaW1wb3J0ZXJlLiBIdXNrIGF0IHbDpmxnZSBkZW4gcmlndGlnZSBzcHJvZ2ZpbCBmcmEgY29tYm9rb2tzZW4hIFNwcm9nIGZpbGVuIHZpbCBibGl2ZSBpbXBvcnRlcmV0IHRpbCBkZXR0ZSBzcHJvZyB1YWZow6ZuZ2lndCBhZiBuYXZuZXQgcMOlIGZpbGVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTAiIG5hbWU9ImltcG9ydHdpbmRvdyI+CisgICAgPHZhbHVlPkltcG9ydGVyIC0gdsOmbGcgZmlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5MSIgbmFtZT0icmVjb3JkaW5nc2F2ZXdpbiI+CisgICAgPHZhbHVlPkdlbSBzb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkyIiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+TmF2bjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkzIiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+S29tbWVudGFyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTQiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT5HZW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk1IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5PcHRhZ2Vsc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NiIgbmFtZT0icmVjb3JkZXIiPgorICAgIDx2YWx1ZT5PcHRhZ2Vsc2VyL2ZyZW12aXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTciIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPk9wdGFnZWxzZXIgZnJhIG9mZmVudGxpZ2Ugb2cgcHJpdmF0ZSBydW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk4IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5CcnVnZXJlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTkiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPlRsc2x1dHRlZGU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMCIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMSIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+QnJ1Z2VyZSBpIGRldHRlIHJ1bTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAyIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5PcGRhdGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMyIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+RGV0dGUgcnVtIGVyIG9wdGFnZXQuIEZvcnPDuGcgaWdlbiBvbSBub2dsZSBmw6UgbWludXR0ZXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNCIgbmFtZT0icm9vbXNMaXN0Ij4KKyAgICA8dmFsdWU+S2xpayBww6UgZXQgcnVtIGZvciBhdCBmw6UgZmxlcmUgZGV0YWxqZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA1IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5DaGF0IG1lZCBicnVnZXJlIGkgZGV0dGUgcnVtOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDYiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPlJ1bTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA3IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5CcnVnZXJlIGkgZGV0dGUgcnVtOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDgiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPlNpZGVuOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDkiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkFmc3BpbCBvcHRhZ2Vsc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDEwIiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5Mw6ZuZ2RlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTEiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkRhdG86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMiIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+T3B0YWdlbHNlc3RpbHN0YW5kISBEdSBrYW4gaWtrZSDDpm5kcmUgbm9nZW4gdsOmcmRpZXIuIERldHRlIGVyIGVuIGluZHNwaWxsZXQgZmlsITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTMiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkFmc3BpbCBkZW5uZSBvcHRhZ2Vsc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE0IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5BZnNwaWwgLyBQYXVzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTUiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPlDDpWJlZ3luZCBvcHRhZ2Vsc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE2IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5TdG9wIG9wdGFnZWxzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTciIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPk9wdGFnZWxzZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE4IiBuYW1lPSJyZWNvcmRfZXJyb3JfbXNnIj4KKyAgICA8dmFsdWU+RGVyIGVyIGFsbGVyZWRlIG5vZ2VuIGRlciBvcHRhZ2VyIGkgw7hqZWJsaWtrZXQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxOSIgbmFtZT0icmVjb3JkX21lc3NhZ2UiPgorICAgIDx2YWx1ZT5PcHRhZ2Vsc2UhIEFmIGJydWdlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIwIiBuYW1lPSJyZWNvcmRfY2FuY2VsIj4KKyAgICA8dmFsdWU+QW5udWxsZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIxIiBuYW1lPSJyZWNvcmRfY2FuY2FsX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5PcHRhZ2Vsc2VuIHZpbCBibGl2ZSBhZmJydWR0IG9nIGdlbW1lcyBpa2tlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjIiIG5hbWU9ImNhbmNlbF9kaWFsb2dfcmVzdW1lIj4KKyAgICA8dmFsdWU+R2Vub3B0YWc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIzIiBuYW1lPSJjYW5jZWxfZGlhbG9nX3Jlc3VtZV90b29sdGlwIj4KKyAgICA8dmFsdWU+THVrIGRldHRlIHZpbmR1ZSBvZyBnZW5vcHRhZyBvcHRhZ2Vsc2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyNCIgbmFtZT0icGFpbnR0b29sc19lbGxpcHNlX2NvbG9yIj4KKyAgICA8dmFsdWU+w4ZuZHJlIGxpbmplZmFydmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI1IiBuYW1lPSJjb2xvcnBpY2tlcl9oZWFkIj4KKyAgICA8dmFsdWU+VsOmbGcgZmFydmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI2IiBuYW1lPSJwYWludHRvb2xzX2xpbmVfZGlzYWJsZSI+CisgICAgPHZhbHVlPkluYWt0aXZlciAvIGFrdGl2ZXIgbGluamVmYXJ2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjciIG5hbWU9InBhaW50dG9vbHNfZmlsbF9kaXNhYmxlIj4KKyAgICA8dmFsdWU+w4ZuZHJlIGZ5bGRmYXJ2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjgiIG5hbWU9InBhaW50dG9vbHNfbGluZV9kaXNhYmxlIj4KKyAgICA8dmFsdWU+SW5ha3RpdmVyIC8gYWt0aXZlciBmeWxkZmFydmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI5IiBuYW1lPSJjaGFuZ2Vfd2lkdGhfYXJyb3dfZG93bl9zbGlkZXIiPgorICAgIDx2YWx1ZT7Dhm5kcmUgbGluamVicmVkZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMwIiBuYW1lPSJjbG9zZV9zbWFsbF9wb3B1cHMiPgorICAgIDx2YWx1ZT5MdWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMxIiBuYW1lPSJwYWludF90b29sX2xldHRlciI+CisgICAgPHZhbHVlPsOGbmRyZSBmb250IHN0w7hycmVsc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMyIiBuYW1lPSJyZWNvcmRpbmdzbGlzdF9kZWxldGUiPgorICAgIDx2YWx1ZT5TbGV0IG9wdGFnZWxzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzMiIG5hbWU9InJlY29yZGluZ3NsaXN0X3JlY29yZGVkQnlHdWVzdCI+CisgICAgPHZhbHVlPkfDpnN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNCIgbmFtZT0icmVjb3JkaW5nc2xpc3RfcmVjb3JkZWRieSI+CisgICAgPHZhbHVlPkFmOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzUiIG5hbWU9InJlY29yZGluZ3NfdGFibGVfaGVhZF9uYW1lIj4KKyAgICA8dmFsdWU+TmF2bjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzYiIG5hbWU9InJlY29yZGluZ3NfdGFibGVfaGVhZF9yb29tIj4KKyAgICA8dmFsdWU+UnVtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNyIgbmFtZT0icmVjb3JkaW5nc190YWJsZV9oZWFkX2RhdGUiPgorICAgIDx2YWx1ZT5EYXRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzOCIgbmFtZT0icmVjb3JkX3N0YXJ0X2NhbmNlbCI+CisgICAgPHZhbHVlPkFubnVsbGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzOSIgbmFtZT0icmVjb3JkX3N0YXJ0X3N0YXJ0Ij4KKyAgICA8dmFsdWU+U3RhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQwIiBuYW1lPSJmaWxlc2Jyb3dzZXJfdGFibGVfaGVhZF9uYW1lIj4KKyAgICA8dmFsdWU+TmF2bjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDEiIG5hbWU9ImZpbGVzYnJvd3Nlcl90YWJsZV9oZWFkX2RhdGUiPgorICAgIDx2YWx1ZT5EYXRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MiIgbmFtZT0iY2hhdF9jbGVhcl9oaXN0b3J5Ij4KKyAgICA8dmFsdWU+U2xldCBzZXJ2ZXJlbnMgQ2hhdC1sb2c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQzIiBuYW1lPSJjaGF0X292ZXJhbGxfaGVhZGVyIj4KKyAgICA8dmFsdWU+Q2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDQiIG5hbWU9ImNoYXRfc2VuZF9idG4iPgorICAgIDx2YWx1ZT5TZW5kIG1lZGRlbGVsc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ1IiBuYW1lPSJjaGF0X2Vtb3RfYnRuIj4KKyAgICA8dmFsdWU+RW1vdGlrb25lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDYiIG5hbWU9ImNoYXRfZW1vdF93aW4iPgorICAgIDx2YWx1ZT5FbW90aWtvbmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NyIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzIj4KKyAgICA8dmFsdWU+VsOmbGcgZW5oZWRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDgiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPkx5ZCBvZyB2aWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDkiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPkt1biBseWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUwIiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT5LdW4gdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUxIiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT5JbmdlbiBseWQvdmlkZW8gKHN0YXRpc2sgYmlsbGVkZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUyIiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfaW5mb190ZXh0Ij4KKyAgICA8dmFsdWU+SW5nZW4gTHlkL1ZpZGVvIHZpbCBibGl2ZSBwdWJsaWNlcmV0LiBJIHN0ZWRldCB2aWwgZXQgYmlsbGVkZSBmcmEgZGluIHByb2ZpbCBibGl2ZSB2aXN0LiBWw6ZsZyBkZW5uZSBpbmRzdGlsbGluZywgaHZpcyBkdSBoYXIgZW4gZMOlcmxpZyBiw6VuZGJyZWRkZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUzIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX21vbmRheSI+CisgICAgPHZhbHVlPk1BPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV90dWVzZGF5Ij4KKyAgICA8dmFsdWU+VEk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU1IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3dlZG5lc2RheSI+CisgICAgPHZhbHVlPk9OPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NiIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV90aHVyc2RheSI+CisgICAgPHZhbHVlPlRPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NyIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9mcmlkYXkiPgorICAgIDx2YWx1ZT5GUjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTgiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfc2F0dXJkYXkiPgorICAgIDx2YWx1ZT5Mw5g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU5IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3N1bmRheSI+CisgICAgPHZhbHVlPlPDmDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjAiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfbW9uZGF5Ij4KKyAgICA8dmFsdWU+TWFuZGFnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9UdWVzZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5UaXJzZGFnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MiIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9XZWRuZXNkYXlMYWJlbCI+CisgICAgPHZhbHVlPk9uc2RhZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjMiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfVGh1cnNkYXlMYWJlbCI+CisgICAgPHZhbHVlPlRvcnNkYWc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY0IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX0ZyaWRheUxhYmVsIj4KKyAgICA8dmFsdWU+RnJlZGFnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9TYXR1cmRheUxhYmVsIj4KKyAgICA8dmFsdWU+TMO4cmRhZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjYiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfU3VuZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5Tw7huZGFnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NyIgbmFtZT0iY2FsZW5kYXJfd2Vla251bWJlcl9oZWFkZXIiPgorICAgIDx2YWx1ZT5LVTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjgiIG5hbWU9ImNhbGVuZGFyX3dlZWtudW1iZXJfaGVhZGVyVG9vbHRpcCI+CisgICAgPHZhbHVlPkthbGVuZGVyIHVnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjkiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5KYW51YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDcwIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+RmVicnVhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzEiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5NYXJ0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzIiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5BcHJpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzMiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5NYWo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc0IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+SnVuaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzUiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5KdWxpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3NiIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPkF1Z3VzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzciIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5TZXB0ZW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc4IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+T2t0b2JlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzkiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5Ob3ZlbWJlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODAiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5EZWNlbWJlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODEiIG5hbWU9ImNhbGVuZGFyd2luX2hlYWRlciI+CisgICAgPHZhbHVlPkthbGVuZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4MiIgbmFtZT0icm9vbWFkbWluX2xhYmVsTnVtYmVyT2ZQYXJ0aWNpcGFudHMiPgorICAgIDx2YWx1ZT5EZWx0YWdlcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgzIiBuYW1lPSJyb29tVmFsdWVfYWR2YW5jZWRTZXR0aW5ncyI+CisgICAgPHZhbHVlPlZpcyBMYXlvdXQgaW5kc3RpbGxpbmdlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODQiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfdmlkZW9YIj4KKyAgICA8dmFsdWU+WCB8IFk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg1IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3ZpZGVvWSI+CisgICAgPHZhbHVlPkJyZWRkZSB8IEjDuGpkZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODYiIG5hbWU9InJvb21BZG1pbl9sYXlvdXQiPgorICAgIDx2YWx1ZT5WaWRlby1jb250YWluZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg3IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X21vZCI+CisgICAgPHZhbHVlPk1vZGVyYXRvci1jb250YWluZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg4IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X21vZF9wb3MiPgorICAgIDx2YWx1ZT5YPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4OSIgbmFtZT0icm9vbUFkbWluX2xheW91dF93aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+V2hpdGVib2FyZC1jb250YWluZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkwIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmRfc2hvdyI+CisgICAgPHZhbHVlPkFrdGl2ZXJldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTEiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZF9wb3MiPgorICAgIDx2YWx1ZT5YIHwgWTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTIiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkJyZWRkZSB8IEjDuGpkZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTMiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXMiPgorICAgIDx2YWx1ZT5GaWxlciwgQ2hhdCwgRGVsdGFnZXJlIC0gY29udGFpbmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NCIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlc19zaG93Ij4KKyAgICA8dmFsdWU+QWt0aXZlcmV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NSIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlc19wb3MiPgorICAgIDx2YWx1ZT5YIHwgWTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTYiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXMiPgorICAgIDx2YWx1ZT5CcmVkZGUgfCBIw7hqZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk3IiBuYW1lPSJtb2RlcmF0b3JfZ29uZV9tZXNzYWdlIj4KKyAgICA8dmFsdWU+TW9kZXJhdG9yZW4gaGFyIGZvcmxhZHQgcnVtbWV0LiBJIMO4amVibGlra2V0IGVyIGRlciBpa2tlIG5vZ2VuIHNvbSBwcsOmc2VudGVyZXIgbm9nZXQuIER1IGthbiBhbnPDuGdlIG9tIGF0IGJsaXZlIG1vZGVyYXRvciBlbGxlciB2ZW50ZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk4IiBuYW1lPSJtb2RlcmF0b3JfbWVzc2FnZV9ldmVudF9ub19tb2QiPgorICAgIDx2YWx1ZT5EZXIgZXIgaWtrZSBub2dlbiBtb2RlcmF0b3IgaSBkZXR0ZSBydW0sIG1lbiBkZXIgZXIgbm9nZW4gZGVsdGFnZXJlLiBEdSBrYW4gYW5zw7hnZSBvbSBhdCBibGl2ZSBtb2RlcmF0b3IgZWxsZXIgdmVudGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5OSIgbmFtZT0iZmVlZGJhY2tfdGVtcGxhdGVfc3ViamVjdCI+CisgICAgPHZhbHVlPkZlZWRiYWNrICRBUFBfTkFNRTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDAiIG5hbWU9Imludml0YXRpb25fdGVtcGxhdGVfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSAtIEludml0YXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAxIiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfZnJvbSI+CisgICAgPHZhbHVlPk1lZGRlbGVsc2UgZnJhIGJydWdlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAyIiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfbWVzc2FnZSI+CisgICAgPHZhbHVlPk1lZGRlbGVsc2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwMyIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X2NsaWNrX3RleHQiPgorICAgIDx2YWx1ZT5LbGlrIHDDpSBkZXR0ZSBsaW5rIGZvciBhdCBkZWx0YWdlIGkgbcO4ZGV0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDQiIG5hbWU9Imludml0YXRpb25fdGV4dF9jbGlja190ZXh0X2xpbmsiPgorICAgIDx2YWx1ZT5LbGlrIGhlciBmb3IgYXQgZ8OlIHRpbCBydW1tZXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwNSIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X2NsaWNrX3RleHRfaGVscCI+CisgICAgPHZhbHVlPkh2aXMgZHUgaGFyIHByb2JsZW1lciBtZWQgYXQgw6VibmUgZ2VudmVqZW4gKGxpbmspLCBiZWRlcyBkdSBrb3BpZXJlIGdlbnZlamVuIG9nIGluZHPDpnR0ZSBkZW5uZSBpIGRpbiB3ZWJicm93c2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDYiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9oZWFkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIHJlZ2lzdHJlcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDciIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9oZWFkMiI+CisgICAgPHZhbHVlPkRpbmUgYnJ1Z2VyZGF0YTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA4IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfdXNlcm5hbWUiPgorICAgIDx2YWx1ZT5Mb2dpbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA5IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfcGFzcyI+CisgICAgPHZhbHVlPkFkZ2FuZ3Nrb2RlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTAiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9tYWlsIj4KKyAgICA8dmFsdWU+RW1haWw6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxMSIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X2J5ZSI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSAtIFRlYW1ldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTIiIG5hbWU9InJlZ2lzdGVyX21haWxfc3ViamVjdCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSByZWdpc3RyZXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTEzIiBuYW1lPSJyZXNldF9wYXNzd29yZF90ZW1wbGF0ZV9oZWFkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIC0gTnVsc3RpbCBhZGdhbmdza29kZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTQiIG5hbWU9InJlc2V0X3Bhc3N3b3JkX3RlbXBsYXRlX3Rlc3RfbGluayI+CisgICAgPHZhbHVlPktsaWsgcMOlIGRlbiBoZXIgZ2VudmVqIChsaW5rKSBmb3IgYXQgaW5kc8OmdHRlIG55IGFkZ2FuZ3Nrb2RlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTUiIG5hbWU9InJlc2V0X3Bhc3N3b3JkX3RlbXBsYXRlX3RleHQyX2xpbmsiPgorICAgIDx2YWx1ZT5LbGlrIGhlciBmb3IgYXQgYW5naXZlIG55IGFkZ2FuZ3Nrb2RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNiIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfdGV4dDNfbGluayI+CisgICAgPHZhbHVlPkh2aXMgZHUgaGFyIHByb2JsZW1lciBtZWQgYXQgw6VibmUgZ2VudmVqZW4gKGxpbmspLCBiZWRlcyBkdSBrb3BpZXJlIGdlbnZlamVuIG9nIGluZHPDpnR0ZSBkZW5uZSBpIGRpbiB3ZWJicm93c2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTciIG5hbWU9InJlc2V0X3Bhc3N3b3JkX21haWxfc3ViamVjdCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSBudWxzdGlsbGluZyBhZiBhZGdhbmdza29kZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTgiIG5hbWU9ImRhdGVSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPkFuZ2l2IHZlbmxpZ3N0IGVuIGd5bGRpZyBkYXRvLCBmLmVrcy4gMjQuMTIuMjAwOSAoZGQubW0uw6XDpcOlw6UpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxOSIgbmFtZT0iZW1haWxSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPkFuZ2l2IHZlbmxpZ3N0IGVuIGd5bGRpZyBlbWFpbGFkcmVzc2UsIGYuZWtzIG5hdm5AbWFpbC5kazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjAiIG5hbWU9ImZsb2F0UmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5BbmdpdiB2ZW5saWdzdCBldCBneWxkaWd0IGZseWRlbmRlIG51bW1lciwgZi5la3MuIDEuMDA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIxIiBuYW1lPSJudW1iZXJSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPkFuZ2l2IHZlbmxpZ3N0IGV0IGd5bGRpZ3QgbnVtbWVyIChJbnRlZ2VyKSwgZi5la3MuIDEwMDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjIiIG5hbWU9InBob25lUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5BbmdpdiB2ZW5saWdzdCBldCBneWxkaWd0IHRlbGVmb25udW1tZXIsIGYuZWtzLiArNDUgMzkxNTE1MTU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIzIiBuYW1lPSJ0aW1lUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5BbmdpdiB2ZW5saWdzdCBlbiBneWxkaWcgdGlkLCBmLmVrcy4gMTI6MjMgKHR0Om1tKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjQiIG5hbWU9Imludml0YXRpb25fd2luZG93Ij4KKyAgICA8dmFsdWU+QWRnYW5nc2tvZGViZXNreXR0ZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI1IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd19wYXNzd29yZExhYmVsIj4KKyAgICA8dmFsdWU+QWRnYW5nc2tvZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI2IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZExhYmVsIj4KKyAgICA8dmFsdWU+R3lsZGlnaGVkc3N0aWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI3IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZCI+CisgICAgPHZhbHVlPlVlbmRlbGlnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyOCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWQiPgorICAgIDx2YWx1ZT5QZXJpb2RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyOSIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWQiPgorICAgIDx2YWx1ZT5FbmdhbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWRGcm9tTGFiZWwiPgorICAgIDx2YWx1ZT5HeWxkaWcgZnJhIG9nIG1lZDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMxIiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZFRvTGFiZWwiPgorICAgIDx2YWx1ZT5HeWxkaWcgdGlsOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzIiIG5hbWU9Imludml0YXRpb25fd2luZG93X01haWxTdWJqZWN0Ij4KKyAgICA8dmFsdWU+SW52aXRhdGlvbiB0aWwgJEFQUF9OQU1FPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMyIgbmFtZT0iaW52aXRhdGlvbl9lcnJvciI+CisgICAgPHZhbHVlPkluZ2VuIGludml0YXRpb24gdGlsZ8OmbmdlbGlnIG1lZCBkZW5uZSBpbnZpdGF0aW9uc2tvZGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzNCIgbmFtZT0iaW52aXRhdGlvbl9lcnJvciI+CisgICAgPHZhbHVlPkludml0YXRpb25lbiBhbnZlbmRlcyBhbGxlcmVkZS4gRGVuIGhlciB0eXBlIGludml0YXRpb25lciBrYW4gaWtrZSBnZW5hbnZlbmRlcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM1IiBuYW1lPSJpbnZpdGF0aW9uX2Vycm9yIj4KKyAgICA8dmFsdWU+SW52aXRhdGlvbnNrb2RlbiBlciBpa2tlIGd5bGRpZyB1ZGVuZm9yIG3DuGRldHMgc3RhcnQgb2cgc2x1dCB0aWRzcHVua3QuIEtvbnRyb2xsZXIgdmVubGlnc3QgdGlkc3B1bmt0ZXQgaSBkZW4gdGlsc2VuZHRlIG3DuGRlaW5ka2FsZGVsc2UgKGVtYWlsKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzYiIG5hbWU9Imludml0YXRpb25fcGFzcyI+CisgICAgPHZhbHVlPkFkZ2FuZ3Nrb2RlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzciIG5hbWU9Imludml0YXRpb25fcGFzc19idG4iPgorICAgIDx2YWx1ZT5Lb250cm9sbGVyIEFkZ2FuZ3Nrb2RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzOCIgbmFtZT0iaW52aXRhdGlvbl9wYXNzX2Vycm9yIj4KKyAgICA8dmFsdWU+VWd5bGRpZyBhZGdhbmdza29kZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM5IiBuYW1lPSJCcm93c2VyIj4KKyAgICA8dmFsdWU+V2ViYnJvd3NlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDAiIG5hbWU9ImF1ZGlvX3ZpZGVvIj4KKyAgICA8dmFsdWU+U3lua3JvbmlzZXIgbHlkL3ZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0MSIgbmFtZT0iZXJyb3JDb2RlX2ludmFsaWRTZXNzaW9uIj4KKyAgICA8dmFsdWU+SW5kbG9nbmluZ2VuIHZhciBrb3JyZWt0LCBtZW4gc2Vzc2lvbmVuIGVyIGlra2UgbMOmbmdlcmUgYWt0aXYgZWxsZXIgbGFncmV0IHDDpSBzZXJ2ZXJlbi4gUHLDuHYgYXQgbG9nZ2UgaW5kIGlnZW4gZWZ0ZXIgZHUgaGFyIGbDpWV0IGV0IG55dCBTZXNzaW9uSWQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0MiIgbmFtZT0iZXJyb3Jjb2RlX3NldFVzZXJPYmplY3QiPgorICAgIDx2YWx1ZT5TZXNzaW9uSWQgZXIgaWtrZSBsb2dnZXQgaW5kIGVsbGVyIGhhciBpa2tlIG5vZ2VuIGFkbWluaXN0cmF0aW9uc3JldHRpZ2hlZGVyLiBTT0FQIEdhdGV3YXkga3LDpnZlciBlbiBicnVnZXIgbWVkIGFkbWluaXN0cmF0aW9uc3JldHRpZ2hlZGVyIGZvciBhdCB0aWxrb2JsZSBueWUgYnJ1Z2VyZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQzIiBuYW1lPSJlcnJvcmNvZGVfbG9naW5CeVJlbW90ZVVzZXIiPgorICAgIDx2YWx1ZT5EZW4gaGVyIHNlc3Npb24gZXIgaWtrZSBrb3BsZXQgdGlsIG5vZ2VuIFJlbW90ZXVzZXItRGF0YS4gRW50ZW4gYmxldiBkZW4gc8Ola2FsZHRlIFNPQVAtR2F0ZXdheSBpa2tlIGluZGzDpnN0IGbDuHIgYXBwbGlrYXRpb25lbiBibGV2IGvDuHJ0IGVsbGVyIGRlciBlciBhbnZlbmR0IGV0IGZlamxhZ3RpZ3QgU2Vzc2lvbi1JRC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ0IiBuYW1lPSJkZWJ1Z19tZXNzYWdlX3JlY29yZGluZyI+CisgICAgPHZhbHVlPk9wdGFnZXJlbiBlciBmb3J0c2F0IGkgQmV0YS1zdGFkaWUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0NSIgbmFtZT0icHJvcGVydHlQYW5lbFhWYWx1ZSI+CisgICAgPHZhbHVlPng8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ2IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWFZhbHVlTGFiZWwiPgorICAgIDx2YWx1ZT54LWFrc2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0NyIgbmFtZT0icHJvcGVydHlQYW5lbFlWYWx1ZSI+CisgICAgPHZhbHVlPnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ4IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWVZhbHVlTGFiZWwiPgorICAgIDx2YWx1ZT55LWFrc2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0OSIgbmFtZT0icHJvcGVydHlQYW5lbFdpZHRoVmFsdWUiPgorICAgIDx2YWx1ZT5iPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1MCIgbmFtZT0icHJvcGVydHlQYW5lbFdpZHRoVmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPmJyZWRkZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTEiIG5hbWU9InByb3BlcnR5UGFuZWxIZWlnaHRWYWx1ZSI+CisgICAgPHZhbHVlPmg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUyIiBuYW1lPSJwcm9wZXJ0eVBhbmVsSGVpZ2h0VmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPmjDuGpkZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTMiIG5hbWU9InByb3BlcnR5T3BhY2l0eVNsaWRlciI+CisgICAgPHZhbHVlPsOGbmRyZSBnZW5uZW1zaWd0Z2hlZCAodHJhbnNwYXJlbnQpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1NCIgbmFtZT0iYnJvd3Nlck9wZW4iPgorICAgIDx2YWx1ZT7DhWJlbiBicm93c2VyZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU1IiBuYW1lPSJicm93c2VyQ2xvc2UiPgorICAgIDx2YWx1ZT5MdWsgYnJvd3NlcmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1NiIgbmFtZT0iY29ubmVjdGlvbkxvc3RNZXNzYWdlIj4KKyAgICA8dmFsdWU+Rm9yYmluZGVsc2VuIHRpbCBzZXJ2ZXJlbiBlciBlciBnw6VldCB0YWJ0LiBEdSBza2FsIGluZGzDpnNlIGFwcGxpa2F0aW9uZW4gaWdlbiBlbGxlci9vZyBrb250cm9sbGVyZSBkaW4gbmV0dsOmcmtzZm9yYmluZGVsc2UuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1NyIgbmFtZT0iNTU3Ij4KKyAgICA8dmFsdWU+UGVnZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU4IiBuYW1lPSJzeW5jIG1lc3NhZ2UgaGVhZGVyIj4KKyAgICA8dmFsdWU+U3lua3JvbmlzZXJlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTkiIG5hbWU9IlN5bmNocm9uaXppbmcgbWVzc2FnZSI+CisgICAgPHZhbHVlPlN5bmtyb25pc2VyZXIgYnJ1Z2VyZSwgdmVudCB2ZW5saWdzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjAiIG5hbWU9ImV4cG9ydFRvU1ZHIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7RG92bmxvYWQgc29tIFNWRyZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYxIiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7RG93bmxvYWQgc29tIFBORyZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYyIiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7RG93bmxvYWQgc29tIEpQRyZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYzIiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7RG93bmxvYWQgc29tIFBERiZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY0IiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7RG93bmxvYWQgc29tIFRJRiZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY1IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+UMOlbWluZGVsc2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2NiIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkthdGVnb3JpOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjciIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5SZXBldGl0aW9uOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjgiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5pbmdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjkiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5QbGFjZXJpbmc6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MCIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPlN0YXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPlNsdXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTcyIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+VGl0ZWw6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MyIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPktvbW1lbnRhcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc0IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+SW52aXRlciBkZWx0YWdlcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc1IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+RGFnbGlnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NiIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPk3DpW5kZWxpZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzciIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT7DhXJsaWc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc4IiBuYW1lPSJhbGVydCI+CisgICAgPHZhbHVlPk3DuGRldHMgc2x1dHRpZHNwdW5rdCBza2FsIHbDpnJlIGVmdGVyIGRldHMgYmVneW5kZWxzZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc5IiBuYW1lPSJhbGVydCI+CisgICAgPHZhbHVlPlRpbGbDuGogZW4gdGl0ZWwsIHRhayE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgwIiBuYW1lPSI1ODAiPgorICAgIDx2YWx1ZT5SVEw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgxIiBuYW1lPSI1ODEiPgorICAgIDx2YWx1ZT5Ba3RpdmVyIGRldCBoZXIgaHZpcyBkdSBza3JpdmVyIHDDpSBldCBow7hqcmUgdGlsIHZlbnN0cmUgc3Byb2c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgyIiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPlNrcml2ZWJvcmQgKEZvcnNpZGUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MyIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT5TZSBvcHRhZ2Vsc2VyIGZyYSBtw7hkZXIgb2cgYXVkaXRvcmllcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODQiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+TcO4ZGUgLSBPcHJldCBlbiBrb25mZXJlbmNlIG1lZCA0IChvcCB0aWwgMTYpIGRlbHRhZ2VyZSAmbHQ7YnImZ3Q7IGFsbGUgdmlsIGhhdmUgdGlsZ2FuZyB0aWwgbHlkICsgdmlkZW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4NSIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT5BdWRpdG9yaXVtIC0gT3ByZXQgZW4ga29uZmVyZW5jZSBtZWQgb3AgdGlsIDIwMCBkZWx0YWdhcmUmbHQ7YnIvJmd0O0hlciBlciBkZXQga3VuIG1vZGVyYXRvcmVuIHNvbSBoYXIgdGlsZ2FuZyB0aWwgbHlkICsgdmlkZW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4NiIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT5PcHJldCBicnVnZXJlLCBydW0sIG9yZ2FuaXNhdGlvbmVyJmx0O2JyLyZndDsgKyDDpm5kcmUga29uZmlndXJhdGlvbmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4NyIgbmFtZT0icm9vbSBBZG1pbmlzdHJhdGlvbiByb29tY2xpZW50cyBsaXN0Ij4KKyAgICA8dmFsdWU+QnJ1Z2VyZSBpIGRldHRlIHJ1bSBsaWdlIG51PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4OCIgbmFtZT0icm9vbSBBZG1pbmlzdHJhdGlvbiByb29tY2xpZW50cyBsaXN0Ij4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg5IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTAiIG5hbWU9InJvb20gQWRtaW5pc3RyYXRpb24gcm9vbWNsaWVudHMgbGlzdCI+CisgICAgPHZhbHVlPkQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkxIiBuYW1lPSJzd2Ygc3luYyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+SW5kbMOmc2VyIGRva3VtZW50LiBWZW50IHZlbmxpZ3N0IHRpbCBhbGxlIGtsaWVudGVyIGVyIHN5bmtyb25pc2VyZWRlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTIiIG5hbWU9InVwbG9hZCBkaWFsb2ciPgorICAgIDx2YWx1ZT5JbmRsw6ZzbmluZyBmw6ZyZGlnLCBrb252ZXJ0ZXJlciBkb2t1bWVudC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTMiIG5hbWU9InVwbG9hZCBkaWFsb2ciPgorICAgIDx2YWx1ZT5TdGFydCBpbmRsw6ZzbmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTQiIG5hbWU9InVwbG9hZCBkaWFsb2ciPgorICAgIDx2YWx1ZT5EaWFsb2cgaW5kbMOmc25pbmcgb2cgaW1wb3J0ZXJpbmcuIFbDpmxnIHZlbmxpZ3N0IGVuIGZpbCBmcmEgZGluIGhhcmRkaXNrLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTUiIG5hbWU9InVwbG9hZCBEaWFsb2ciPgorICAgIDx2YWx1ZT5Bbm51bGxlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTYiIG5hbWU9InVwbG9hZCBEaWFsb2ciPgorICAgIDx2YWx1ZT5Ww6ZsZyBmaWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk3IiBuYW1lPSJhZG1pbmlzdHJhdGlvbiBuYXZpZ2F0aW9uIj4KKyAgICA8dmFsdWU+Rm9yYmluZGVsc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5OCIgbmFtZT0iY29uZmFkbWluIHZhbHVlIGxpc3QiPgorICAgIDx2YWx1ZT5Ww6ZyZGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk5IiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+U3RyZWFtaWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAwIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+TG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAxIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+VGlsc2x1dHRldCBzaWRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDIiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5SdW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAzIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+VWRlbHVrIGJydWdlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDQiIG5hbWU9ImtpY2sgdXNlciBjb25maXJtYXRpb24gZGlhbG9nIj4KKyAgICA8dmFsdWU+VWRlbHVrIGJydWdlcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA1IiBuYW1lPSJraWNrIHVzZXIgY29uZmlybWF0aW9uIGRpYWxvZyI+CisgICAgPHZhbHVlPlZpbCBkdSB2aXJrZWxpZyB1ZGVsdWtrZSBkZW5uZSBrbGllbnQ/Jmx0O2JyLyZndDsgRGV0IGhlciB1ZGVsdWtrZXIga3VuIGtsaWVudGVuIGZyYSBkZXQgYWt0dWVsbGUgcnVtLiBWZWRrb21tZW5kZSBrYW4gdGlsc2x1dHRlIHNpZyBpZ2VuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDYiIG5hbWU9ImtpY2sgdXNlciBtZXNzYWdlIGRpYWxvZyI+CisgICAgPHZhbHVlPkRpbiBzZXNzaW9uIGVyIGJsZXZldCBsdWtrZXQgYWYgYWRtaW5pc3RyYXRvcmVuIGVsbGVyIG1vZGVyYXRvcmVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDciIG5hbWU9InVzZXJhbHRlcnNlbGZfcGhvbmUiPgorICAgIDx2YWx1ZT5UZWxlZm9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwOCIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+QnJ1Z2VyZW4gZXIgbW9kZXJhdG9yIGkgZGV0dGUgcnVtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwOSIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+QnJ1Z2VyZW4gaGFyIHRpbGxhZGVsc2UgdGlsIGF0IHRlZ25lIHDDpSB3aGl0ZWJvYXJkZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEwIiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5HZW5zdGFydCBseWQvdmlkZW8gZWxsZXIgw6ZuZHJlIGluZHN0aWxsaW5nZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjExIiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5UaWxsYWQgZGVubmUgYnJ1Z2VyIGF0IHRlZ25lIHDDpSB3aGl0ZWJvYXJkZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEyIiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5GamVybiBtdWxpZ2hlZGVuIGZvciBhdCB0ZWduZSBww6Ugd2hpdGVib2FyZGV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMyIgbmFtZT0iY29uZmVyZW5jZVBhbmVscyI+CisgICAgPHZhbHVlPkJydWdlcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE0IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+RmlsZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE1IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+V2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTYiIG5hbWU9ImNvbmZlcmVuY2VQYW5lbHMiPgorICAgIDx2YWx1ZT5DaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxNyIgbmFtZT0ib3JnYW5pemF0aW9uIGNob29zZSBpbmZvIj4KKyAgICA8dmFsdWU+RGluIGtvbnRvIGVyIHRpbGRlbHQgdGlsIGZsZXJlIG9yZ2FuaXNhdGlvbmVyLiBWw6ZsZyB2ZW5saWdzdCBlbiB0aWwgZGVubmUgc2Vzc2lvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE4IiBuYW1lPSJlcnJvciBtZXNzYWdlIHJvb20gZnVsbCI+CisgICAgPHZhbHVlPkRldHRlIHJ1bSBlciBvcHRhZ2V0IGkgw7hqZWJsaWtrZXQuIEZvcnPDuGcgdmVubGlnc3QgaWdlbiBzZW5lcmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxOSIgbmFtZT0icm9vbXR5cGVzIj4KKyAgICA8dmFsdWU+UnVtdHlwZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIwIiBuYW1lPSJhcHBvaW50ZWRfcm9vbSI+CisgICAgPHZhbHVlPlRpZHNib29rZXQgcnVtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyMSIgbmFtZT0ic2VydmVydGltZSI+CisgICAgPHZhbHVlPlNlcnZlcnRpZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjIiIG5hbWU9Imludl9yZW1pbmRlcl90ZW1wbGF0ZV9oZWFkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIC0gUMOlbWluZGVsc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIzIiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9mcm9tIj4KKyAgICA8dmFsdWU+TWVkZGVsZWxzZSBmcmEgYnJ1Z2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjQiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X21lc3NhZ2UiPgorICAgIDx2YWx1ZT5NZWRkZWxlbHNlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjUiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2NsaWNrX3RleHQiPgorICAgIDx2YWx1ZT5LbGlrIHDDpSBkZW5uZSBnZW52ZWogKGxpbmspIGZvciBhdCBkZWx0YWdlIGkgbcO4ZGV0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjYiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2NsaWNrX3RleHRfbGluayI+CisgICAgPHZhbHVlPktsaWsgaGVyIGZvciBhdCBnw6UgaW5kIGkgcnVtbWV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNyIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfY2xpY2tfdGV4dF9oZWxwIj4KKyAgICA8dmFsdWU+SHZpcyBkdSBoYXIgcHJvYmxlbWVyIG1lZCBnZW52ZWplbiwgYmVkZXMgZHUga29waWVyZSBkZW5uZSBnZW52ZWogaSBzdGVkZXQgb2cgaW5kc8OmdHRlIGkgZGluIHdlYmJyb3dzZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyOCIgbmFtZT0iYnRuX3NlYXJjaF9pbnRlcm4iPgorICAgIDx2YWx1ZT5Tw7hnIGludGVybnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI5IiBuYW1lPSJidG5fc2VhcmNoX2V4dGVybiI+CisgICAgPHZhbHVlPmVrc3Rlcm5lIGJydWdlcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMwIiBuYW1lPSJsYmxfcHJlbmFtZSI+CisgICAgPHZhbHVlPmZvcm5hdm48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMxIiBuYW1lPSJsYmxfbmFtZSI+CisgICAgPHZhbHVlPm5hdm48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMyIiBuYW1lPSJsYmxfZW1haWwiPgorICAgIDx2YWx1ZT5lbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzMiIG5hbWU9ImxvZ291dENvbmZpcm1fdGl0bGUiPgorICAgIDx2YWx1ZT5CZWtyw6ZmdCBhdCBkdSBsb2dnZXIgYWY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM0IiBuYW1lPSJsb2dvdXRDb25maXJtX3N1cmVfdG9fbG9nb3V0X3F1ZXN0aW9uIj4KKyAgICA8dmFsdWU+RXIgZHUgc2lra2VyIHDDpSBhdCBkdSB2aWwgbG9nZ2UgYWY/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNSIgbmFtZT0ibWFpbiBtZW51Ij4KKyAgICA8dmFsdWU+QWt0aW9uZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM2IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RGVtbyBSdW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RGVtbyBUaWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM4IiBuYW1lPSJtZWV0aW5nIFRpbWVyIj4KKyAgICA8dmFsdWU+TcO4ZGV0aW1lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzkiIG5hbWU9Im1lZXRpbmcgVGltZXIiPgorICAgIDx2YWx1ZT5EZXR0ZSBydW0gZXIgZXQgZGVtbyBydW0uIEZvciBhdCBmamVybmUgZGVubmUgYWR2YXJzZWwsIHNrYWwgZHUgZW50ZW4gb3ByZXR0ZSBldCBwcml2YXQgbcO4ZGVydW0gZWxsZXIgc8OmdHRlIGV0IG9wIHDDpSBkaW4gZWdlbiBzZXJ2ZXIuIER1IGJsaXZlciBhdXRvbWF0aXNrIGxvZ2V0IHVkIG9tOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDAiIG5hbWU9Im1lZXRpbmcgcm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPk1vZGVyZXJldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDEiIG5hbWU9Im1vZGVyYXRlZCByb29tIHdhaXRpbmcgbWVzc2FnZSI+CisgICAgPHZhbHVlPlZlbnQgdmVubGlnc3QgaW5kdGlsIG1vZGVyYXRvcmVuIGhhciB0aWxzbHV0dGV0IHNpZyBydW1tZXQuIE1vZGVyYXRvcmVuIGthbiBlbnRlbiB2w6ZyZSBlbiBsw6ZyZXIsIGluc3RydWt0w7hyLCBhZG1pbmlzdHJhdG9yIGVsbGVyIGRlbiBicnVnZXIgc29tIGhhciBvcHJldHRldCBydW1tZXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MiIgbmFtZT0iZXJyb3IgcG9wdXAiPgorICAgIDx2YWx1ZT5PazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDMiIG5hbWU9IndpbmRvdyBzY3JlZW5zaGFyaW5nIj4KKyAgICA8dmFsdWU+SW5ka29tbWVuZGUgc2vDpnJtZGVsaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0NCIgbmFtZT0id2luZG93IHNjcmVlbiBzaGFyaW5nIj4KKyAgICA8dmFsdWU+RW4gbnkgc2vDpnJtZGVsaW5nIHZpbCBibGl2ZSBww6ViZWd5bmR0IGFmIGJydWdlcmVuOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDUiIG5hbWU9IndpbmRvdyBzY3JlZW4gc2hhcmluZyI+CisgICAgPHZhbHVlPlN0YXJ0IGRlbGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDYiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGlsZsO4aiBldCBueXQgbcO4ZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ3IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPk3DuGRlcnVtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0OCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5BdWRpdG9yaXVtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0OSIgbmFtZT0ibWFpbiBtZW51IG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Nb2RlcmVyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1MCIgbmFtZT0ibWVudSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+TW9kZXJlciBicnVnZXJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1MSIgbmFtZT0ibWVudSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+TW9kZXJlciBydW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUyIiBuYW1lPSJtb2RlcmF0b3Igb3JnIj4KKyAgICA8dmFsdWU+TTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTMiIG5hbWU9ImNvbmZpcm0gbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPlZpbCBkdSDDpm5kcmUgZGVubmUgYnJ1Z2VyIHRpbCBhdCB2w6ZyZSBtb2RlcmF0b3IgYWYgZGVubmUgb3JnYW5pc2F0aW9uPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTQiIG5hbWU9ImVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Ww6ZsZyB2ZW5saWdzdCBlbiBvcmdhbmlzYXRpb24gZsO4ciBkdSBmb3Jzw7hnZXIgYXQgdGlsZsO4amUgZW4gYnJ1Z2VyIHRpbCBkZW4hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1NSIgbmFtZT0iY2hvb3NlIHVzZXIgd2luZG93Ij4KKyAgICA8dmFsdWU+T3JnYW5pc2F0aW9uIC0gTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1NiIgbmFtZT0ibW9kZXJhdG9yIG9yZyB1c2VycyI+CisgICAgPHZhbHVlPlZpbCBkdSB2aXJrZWxpZyBmamVybmUgZGVubmUgYnJ1Z2VyIGZyYSBvcmdhbmlzYXRpb25lbj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU3IiBuYW1lPSJvcmcgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkRlbm5lIGJydWdlciBlciBtb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU4IiBuYW1lPSJvcmcgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkRlbm5lIGJydWdlciBlciBpa2tlIG1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTkiIG5hbWU9ImVycm9yIG1lc3NhZ2UgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPlZpbCBkdSBmamVybmUgZGVubmUgYnJ1Z2VyIHNvbSBtb2RlcmF0b3IgZnJhIG9yZ2FuaXNhdGlvbmVuPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjAiIG5hbWU9Im1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5UaWxmw7hqIGVsbGVyIGZqZXJuIGJydWdlcmUgZWxsZXIgcnVtIGkgZGluIG9yZ2FuaXNhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjEiIG5hbWU9ImRlbGV0ZSBjb25maXJtIHF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+VmlsIGR1IHZpcmtlbGlnIGZqZXJuZSBkZW5uZT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYyIiBuYW1lPSJkZWxldGUgY29uZmlybSBxdWVzdGlvbiB1c2VyIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5WaWwgZHUgdmlya2VsaWcgZmplcm5lIGRlbm5lIGJydWdlciBmcmEgb3JnYW5pc2F0aW9uZW4/IER1IHZpbCBrdW4gZmplcm5lIHRpbHNsdXRuaW5nZW4gbWVsbGVtIGJydWdlcmVuIG9nIG9yZ2FuaXNhdGlvbmVuLiBGb3IgYXQgZmplcm5lIGJydWdlcmVuIGhlbHQsIHNrYWwgZHUgbG9nZ2UgaW5kIGkgYWRtaW5pc3RyYXRpb25zcGFuZWxldC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYzIiBuYW1lPSJlcnJvciBtZXNzYWdlIHNlbGYgZGVsZXRpbmciPgorICAgIDx2YWx1ZT5EdSBrYW4gaWtrZSBmamVybmUgZGluIGVnZW4gYnJ1Z2VyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjQiIG5hbWU9ImVycm9yIG1lc3NhZ2UgYXV0aCI+CisgICAgPHZhbHVlPkRlbm5lIGZ1bmt0aW9uL21ldG9kZSBrcsOmdmVyIGVuIGFkbWluaXN0cmF0aW9uc2tvbnRvIGZvciBhdCBrdW5uZSBrYWxkZXMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NSIgbmFtZT0iZXJyb3IgbWVzc2FnZSBTT0FQIj4KKyAgICA8dmFsdWU+RGVyIGZpbmRlcyBpbmdlbiBzZXNzaW9uIGFzc29jaWVyZXQgbWVkIGRldHRlIElELjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjYiIG5hbWU9ImVycm9yIG1lc3NhZ2UgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkRldHRlIGVyIGVuIGFkbWluaXN0cmF0aW9ucy0gZWxsZXIgbW9kZXJhdG9ya29udG8uIER1IGthbiBrdW4gw6ZuZHJlIGRlbm5lIGtvbnRvIHZpYSBhZG1pbmlzdHJhdGlvbnNwYW5lbGV0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjciIG5hbWU9ImVtYWlsIHZlcmlmaWNhdGlvbiI+CisgICAgPHZhbHVlPktsaWsgdmVubGlnc3QgcMOlIGZsZy4gbGluayBlbGxlciBrb3BpZXIgYWRyZXNzZW4gdGlsIGRpbiB3ZWJicm93c2VycyBhZHJlc3NlZmVsdCBmb3IgYXQgZnVsZGbDuHJlIHJlZ2lzdHJlcmluZ2VuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjgiIG5hbWU9ImVtYWlsIHZlcmlmaWNhdGlvbiI+CisgICAgPHZhbHVlPktsaWsgaGVyIGZvciBhdCB2ZXJpZmljZXJlIGRpbiBlbWFpbGFkcmVzc2UuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2OSIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPkluZ2VuIGJydWdlcmUgZnVuZGV0IG1lZCBkZW5uZSBIYXNoLWtvZGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3MCIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPkRlbm5lIGJydWdlciBlciBhbGxlcmVkZSBha3RpdmVyZXQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3MSIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPkR1IGhhciBha3RpdmVyZXQgZGluIGtvbnRvITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzIiIG5hbWU9ImVycm9yTWVzc2FnZV9Vc2VyQWN0aXZhdGlvblNlcnZsZXQgW0FjdGl2YXRlVXNlcl0iPgorICAgIDx2YWx1ZT5Mb2cgaW5kIG51PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3MyIgbmFtZT0ibG9naW5FcnJvck1lc3NhZ2UgPSB1c2VyIHdhcyBub3QgYWN0aXZhdGVkIj4KKyAgICA8dmFsdWU+RGluIGtvbnRvIGVyIGlra2UgYWt0aXZlcmV0LiBBbnZlbmQgZ2VudmVqZW4gKGxpbmspIGkgZGVuIGVtYWlsIGR1IG1vZHRvZywgZGEgZHUgcmVnaXN0cmVyZWRlIGRpZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc0IiBuYW1lPSJyZWdpc3RlciB2ZXJpZmljYXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkR1IGhhciBudSByZWdpc3RyZXJldCBkaWcgdGlsIHN5c3RlbWV0LiBEdSBoYXIgZsOlZXQgdGlsc2VuZHQgZW4gZW1haWwgbWVkIGRpbiB2ZXJpZmljZXJpbmdza29kZS4gS29udHJvbGxlciB2ZW5saWdzdCBkaW4gaW5kYmFra2UuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3NSIgbmFtZT0icGFydGljaXBhbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+Rmplcm4gZGVubmUgYnJ1Z2VyIHNvbSBtb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc2IiBuYW1lPSJwYXJ0aWNpcGFudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5UaWxkZWwgbW9kZXJhdG9yIHJldHRpZ2hlZGVyIHRpbCBkZW5uZSBicnVnZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc3IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5CcnVnZXJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3OCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QWRnYW5nIHRpbCB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3OSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+TW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+TW9kZXJhdGlvbjogVsOmbGcgdmVubGlnc3QgZW4gYnJ1Z2VyIGZyYSBsaXN0ZW4gZm9yIGF0IGdpdmUgdmVka29tbWVuZGUgYWRnYW5nIHRpbCB3aGl0ZWJvYXJkLCBtb2RlcmF0aW9uIGVsbGVyIHZpZGVvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODEiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkRlbm5lIGJydWdlciBlciBhbGxlcmVkZSBtb2RlcmF0b3IsIHPDpSBoYW4gaGFyIGF1dG9tYXRpc2t0IHJldCB0aWwgYXQgdGVnbmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MiIgbmFtZT0iZXZlbnQgdXNlciBsaXN0IGVycm9yIj4KKyAgICA8dmFsdWU+RGV0dGUgZXIgZGlnISBEdSBrYW4gaWtrZSBmamVybmUgbW9kZXJhdG9yIHJldHRpZ2hlZGVybmUgZnJhIGRpZyBzZWx2LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODMiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlRpbGxhZCBkZW5uZSBicnVnZXIgYXQgcHVibGljZXJlIGx5ZC92aWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODQiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkZqZXJuIGx5ZC92aWRlbyBmcmEgZGVubmUgYnJ1Z2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4NSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+SmVnIHZpbCB2w6ZyZSBtb2RlcmF0b3IgZm9yIGRldHRlIHJ1bTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODYiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkplZyB2aWwgdGVnbmUgcMOlIHdoaXRlYm9hcmRldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODciIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkplZyB2aWwgZGVsZSBseWQvdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg4IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5EdSBlciBtb2RlcmF0b3IgZm9yIGRldHRlIHJ1bTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODkiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkR1IGhhciB0aWxsYWRlbHNlIHRpbCBhdCB0ZWduZSBww6Ugd2hpdGVib2FyZGV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5MCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+RHUgaGFyIHRpbGxhZGVsc2UgdGlsIGF0IHB1YmxpY2VyZSBhdWRpby92aWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTEiIG5hbWU9ImVycm9ydHlwZSI+CisgICAgPHZhbHVlPk1lZGRlbGVsc2UgdGlsIG1vZGVyYXRvcmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5MiIgbmFtZT0iYXBwbHkgZm9yIG1vZCBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QnJ1Z2VyZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkzIiBuYW1lPSJhcHBseSBmb3IgbW9kIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT52aWwgaGF2ZSBtb2RlcmF0b3IgcmV0dGlnaGVkZXIuIEJydWcgc3RhdHVzIGlrb25lcm5lIGkgYnJ1Z2VybGlzdGVuIGZvciBhdCB0aWxkZWxlIGVsbGVyIGZqZXJuZSBtb2RlcmF0b3IgcmV0dGlnaGVkZXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5NCIgbmFtZT0iYXBwbHkgZm9yIHdoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT52aWwgdGVnbmUgcMOlIHdoaXRlYm9hcmRldC4gQnJ1ZyBzdGF0dXMgaWtvbmVybmUgaSBicnVnZXJsaXN0ZW4gZm9yIGF0IHRpbGRlbGUgZWxsZXIgZmplcm5lIHJldHRpZ2hlZGVyIHRpbCBhdCB0ZWduZSBww6Ugd2hpdGVib2FyZGV0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTUiIG5hbWU9IjY5NSI+CisgICAgPHZhbHVlPnZpbCBwdWJsaWNlcmUgbHlkL3ZpZGVvLiBCcnVnIHN0YXR1cyBpa29uZXJuZSBpIGJydWdlcmxpc3RlbiBmb3IgYXQgdGlsZGVsZSBlbGxlciBmamVybmUgcmV0dGlnaGVkZXIgdGlsIHB1YmxpY2VyaW5nIGFmIGx5ZC92aWRlby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk2IiBuYW1lPSJtb2RlcmF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EdSBza2FsIHZlbnRlIHRpbCBlbiBtb2RlcmF0b3IgZXIgdHLDpWR0IGluZCBpIHJ1bW1ldC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk3IiBuYW1lPSJjYWxlbmRhciBidXR0b24iPgorICAgIDx2YWx1ZT5Bbm51bGxlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTgiIG5hbWU9ImNhbGVuZGFyIGJ1dHRvbiI+CisgICAgPHZhbHVlPkdlbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTkiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPkRhZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDAiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPk3DpW5lZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDEiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPsOFcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDIiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5JbmRsw6ZzIGZpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDMiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5UaWxmw7hqIG1hcHBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwNCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPk9wZGF0ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA1IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+UGFwaXJrdXJ2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwNiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPk1pbmUgZmlsZXIgKFByaXZhdCBkcmV2KTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDciIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5SdW0gZmlsZXIgKE9mZmVudGxpZ3QgZHJldik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA4IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+VGlsZsO4aiBmaWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA5IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+VGlsZsO4aiBtYXBwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTAiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5TbGV0IG1hcHBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMSIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlJldCBuYXZuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPk55IG1hcHBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMyIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkVyIGR1IHNpa2tlciBww6UgYXQgZHUgdmlsIHNsZXR0ZSBkZXR0ZSBlbW5lPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTQiIG5hbWU9InVzZXIgYWRtaW4iPgorICAgIDx2YWx1ZT5Tw7hnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxNSIgbmFtZT0idXNlciBhZG1pbiI+CisgICAgPHZhbHVlPlPDuGc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE2IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+w4ViZW4gZG9rdW1lbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE3IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+VmlzIGFsbGUgZmlsZXIgKFRyw6ZzdHJ1a3R1cik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE4IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+THVrIGRva3VtZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxOSIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlNsZXQgZmlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyMCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkR1IGhhciBpa2tlIHRpbGxhZGVsc2UgdGlsIGF0IHRlZ25lIHDDpSB3aGl0ZWJvYXJkZXQuIER1IHNrYWwgdsOmcmUgbW9kZXJhdG9yIGVsbGVyIHNvbSBtaW4uIGhhdmUgcmV0dGlnaGVkZXIgdGlsIGF0IHJlZGlnZXJlIFd3aGl0ZWJvYXJkZXQuIER1IG3DpSBzcMO4cmdlIG1vZGVyYXRvcmVuIG9tIGhhbiB2aWwgZ2l2ZSBkaWcgcmV0dGlnaGVkZXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyMSIgbmFtZT0icHJvcGVydHkgcGFuZWwiPgorICAgIDx2YWx1ZT5Eb2t1bWVudCBlZ2Vuc2thYmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyMiIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+U3RhcnQga2xpZW50IChla3N0ZXJuKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjMiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPlN0YXJ0IGtsaWVudCAoSFRUUCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI0IiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5FbiBicnVnZXIgdmlsIGRlbGUgc2luIHNrw6ZybS4gVmlsIGR1IHNlIHZlZGtvbW1lbmRlcyBza8Omcm0/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNSIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+RHUgZGVsZXIgZGluIHNrw6ZybSBpIMO4amVibGlra2V0LiBGb3IgYXQgc3RvcHBlIGRlbm5lIGZ1bmt0aW9uIChzZXNzaW9uKSBza2FsIGR1IGtsaWtrZSBww6Ugc3RvcCBrbmFwcGVuIGkga2xpZW50IHByb2dyYW1tZXQgdGlsIGRlbGluZyBhZiBza8Omcm0uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNiIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+ZGVsaW5nIGFmIHNrw6ZybSBzZXNzaW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNyIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+RHUgZGVsZXIgYWxsZXJlZGUgZGluIHNrw6ZybSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI4IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkZyZW12aXNlciB0aWwgZGVsaW5nIGFmIHNrw6ZybTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjkiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+THVrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5GcmVtdmlzZXIgdGlsIGRlbGluZyBhZiBza8Omcm08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMxIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPktsaWsgcMOlIHN0YXJ0IGZvciBhdCBkZWxlIGRpbiBza8Omcm08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMyIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlN0YXJ0IGRlbGluZyBhZiBza8Omcm08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMzIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlN0b3AgZGVsaW5nIGFmIHNrw6ZybTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzQiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+VsOmbGcgc2vDpnJtIG9tcsOlZGU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT7Dhm5kcmUgYnJlZGRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5EZWxpbmcgYWYgc2vDpnJtIHNlc3Npb25lbiBlciBhZnNsdXR0ZXQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT7Dhm5kcmUgaMO4amRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczOCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5YLU9mZnNldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzkiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+WS1PZmZzZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQwIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkJyZWRkZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQxIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkjDuGpkZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQyIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkZvcmJpbmRlbHNlbiBibGV2IGx1a2tldCBhZiBzZXJ2ZXJlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDMiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+QW5udWxsZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ0IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPlN0YXJ0IGVrc3Rlcm48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ1IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPkh2aXMgZHUgbHVra2VyIGRlbm5lIHNlc3Npb24gaGVsdCB2aWwgZHUgaWtrZSB2w6ZyZSBpIHN0YW5kIHRpbCBhdCBnZW5zdGFydGUgZnJlbXZpc2VyZW4gZm9yIGRlbm5lIHNlc3Npb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NiIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5CZWtyw6ZmdCBsdWtuaW5nIGFmIGZyZW12aXNlciBzZXNzaW9uZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NyIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5EZWwgc2vDpnJtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0OCIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5PcHRhZyBzZXNzaW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0OSIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPkNvLUJyb3dzaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MCIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPlVwcywgLi4uIEZpcmVmb3ggcMOlIFdpbmRvd3MgdmlzZXIgaWtrZSBDby1Ccm93c2luZyBzw6UgZ29kdC4gQnJ1ZyB2ZW5saWdzdCBlbiBhbmRlbiBicm93c2VyIGZvciBhdCBicnVnZSBkZW5uZSBtdWxpZ2hlZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUxIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+Rm9ycmlnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTIiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5Ow6ZzdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUzIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+SW5kbMOmcyBpZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1NCIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPkhqZW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU1IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+SW5kbMOmczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTYiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5UaWxmw7hqIGRlbm5lIGhqZW1tZXNpZGUgc29tIHN0YW5kYXJkIGhqZW1tZXNpZGUgaSB0aWxrbnl0bmluZyB0aWwgZGluIHByb2ZpbC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU3IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+VGVzdCBpbmRzdGlsbGluZ2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1OCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPktvbnRyb2xsZXIgbWlrcm9mb24gb2cga2FtZXJhaW5kc3RpbGxpbmdlciBpbmRlbiBkdSBnw6VyIGluZCBpIGV0IHJ1bSB2ZWQgYXQgb3B0YWdlIGkgZXQgcGFyIHNlay4gRHUga2FuIGVmdGVyZmxnLiBzZSBkaW4gb3B0YWdlbHNlIGZvciBhdCBrb250cm9sbGVyZSBkaW4gbHlkIHNhbXQgZGl0IGthbWVyYWJpbGxlZGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1OSIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlZpcyBpa2tlIGRlbm5lIHRlc3QgaWdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjAiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5Bbm51bGxlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjEiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5TdGFydCBrb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MiIgbmFtZT0iZWRpdCB2aWRlbyBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlNww7hyZyBpa2tlIGlnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYzIiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+T1BUQUc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY0IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+QUZTUElMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NSIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPkR1IGthbiBmb3J0c8OmdHRlIHVkZW4gYXQgdGVzdGUsIGh2aXMgZHUgaWtrZSBwbGFubMOmZ2dlciBhdCBwdWJsaWNlcmUgbHlkIG9nIGJpbGxlZGUuIERlbHRhZ2VyZSB1ZGVuIGx5ZCBvZyB2aWRlbyBrYW4gc3RhZGlnIGJydWdlIHdoaXRlYm9hcmQsIGRlbGUgc2vDpnJtIGVsbGVyIHNrcml2ZSBjaGF0IG1lZGRlbGVsc2VyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjYiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5TVE9QPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NyIgbmFtZT0iNzY3Ij4KKyAgICA8dmFsdWU+Tml2ZWF1ICh2aXNuaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjgiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5LbGlrIHDDpSBzdGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjkiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5TdGFydCBrb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MCIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPlN0YXJ0IGV2ZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MSIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPlbDpmxnIHJ1bTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzIiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5Lb250cm9sbGVyIFNldHVwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MyIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPlN0YXJ0IGtvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc0IiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+U8OlZGFuIGfDuHIgZHU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NSIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlN0YXJ0IG9wdGFnZWxzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzYiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5WaXMgaWtrZSBBdWRpbyAvIFZpZGVvIFRlc3QgKG9wdGFnZWxzZSkgZsO4ciBkdSBkZWx0YWdlciBpIGVuIGtvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc3IiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+T2ZmZW50bGlnZSBSdW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc4IiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+T2ZmZW50bGlnZSBSdW0gZXIgdGlsZ8OmbmdlbGlnZSBmb3IgYWxsZSBicnVnZXJlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzkiIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT5Qcml2YXRlIFJ1bTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODAiIG5hbWU9IlByaXZhdGUgUm9vbXMiPgorICAgIDx2YWx1ZT5Qcml2YXRlIFJ1bSBlciBrdW4gdGlsZ8OmbmdlbGlnZSBmb3IgYnJ1Z2VyZSBpIHNhbW1lIG9yZ2FuaXNhdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgxIiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+TWluZSBydW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgyIiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+UnVtIGkgZGV0dGUgYWZzbml0IGVyIG9wcmV0dGV0IHRpbCBwcml2YXQgYnJ1Zy4gRGUgZXIgb3ByZXR0ZXQgdmlhIGthbGVuZGVyZW4gb2cgaGFyIGVuIHN0YXJ0IG9nIHNsdXQgZGF0by4gRGUgdmlzZXMga3VuIGkgZGV0dGUgYWZzbml0IG1lbnMgZGUgZXIgYWt0aXZlIChneWxkaWdlKS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgzIiBuYW1lPSJyZXN0cmljdGVkIHJvb20iPgorICAgIDx2YWx1ZT5EdSBza2FsIHbDpnJlIG1vZGVyYXRvciBmb3IgYXQga3VubmUgZ8O4cmUgZGV0dGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NCIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT5BbnPDuGcgb20gbW9kZXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODUiIG5hbWU9Im1lbnUgb3B0aW9uIj4KKyAgICA8dmFsdWU+QW5zw7hnIG9tIHdoaXRlYm9hcmQgYWRnYW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NiIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT5BbnPDuGcgb20ga2FtZXJhL21pa3JvZm9uIGFkZ2FuZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODciIG5hbWU9ImVycm9yIG1lc3NhZ2Ugc29hcCBzZWN1cmUgbG9naW4iPgorICAgIDx2YWx1ZT5EZW5uZSBzZXNzaW9ucyBIYXNoLWtvZGUgZXIgYWxsZXJlZGUgYnJ1Z3QuIER1IGthbiBpa2tlIGJydWdlIGRlbiAyIGdhbmdlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODgiIG5hbWU9ImRhc2hib2FyZCBidXR0b24iPgorICAgIDx2YWx1ZT5TVEFSVDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODkiIG5hbWU9ImV4aXQgY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPkxVSzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTAiIG5hbWU9ImNvbmZlcmVuY2UgdmlldyI+CisgICAgPHZhbHVlPlZpbCBkdSB2aXJrZWxnIGx1a2tlPyBEdSBza2FsIG3DpXNrZSBzbGV0dGUgaW5kbMOmc3RlIGRva3VtZW50ZXIsIHdoaXRlYm9hcmQgb2cgY2hhdCBoaXN0b3JpZSBmw7hyc3QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5MSIgbmFtZT0iY29uZmVyZW5jZSB2aWV3Ij4KKyAgICA8dmFsdWU+THVrIGtvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkyIiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT5SdW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkzIiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT5Ww6ZsZyBydW0gdGlsIGV0IG3DuGRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5NCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5EZXIgZXIgZW4gZXZlbnQgaSBrYWxlbmRlcmVuIHNvbSBpa2tlIGVyIGdlbXQuIEdlbSBkZW4gZsO4cnN0IGVsbGVyIGZqZXJuIGRlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk1IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPlRpbGbDuGogdmVubGlnc3QgbWluLiAxIGRlbHRhZ2VyIHRpbCBkaXQgbcO4ZGUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5NiIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5WaWwgZHUgdmlya2VsaWcgc2xldHRlIGRlbm5lIGV2ZW50PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTciIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QWR2YXJzZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk4IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPlRpbGbDuGogZXZlbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk5IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPmRhZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDAiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+dWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5tw6VuZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAyIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkJlc2tyaXZlbHNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMyIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5EZWx0YWdlcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA0IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUga29uZmVyZW5jZXBsYXRmb3JtLiBLbGlrIHDDpSBzdGFydGtuYXBwZW4gZm9yIGF0IHN0YXJ0ZSBlbiBrb25mZXJlbmNlIG1lZCBkZXQgc2FtbWUgZWxsZXIgZ8OlIHRpbCBkaW4ga2FsZW5kZXIgZm9yIGF0IHBsYW5sw6ZnZ2UgZXQgbcO4ZGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNSIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+UGxhbmzDpmcgZXQgbcO4ZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA2IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Rm9yIGF0IHPDpnR0ZSBlbiBrb25mZXJlbmNlIG9wLCBrYW4gZHUgdGlsZsO4amUgZW4gZXZlbnQgaSBkaW4ga2FsZW5kZXIuIEZvciBodmVyIGV2ZW50IGRlciBvcHJldHRlcywgdmlsIGRlciBhdXRvbWF0aXNrIGJsaXZlIG9wcmV0dGV0IGV0IGtvbmZlcmVuY2VydW0uIEFsbGUgZGVsdGFnZXJlIHNhbXQgZGlnIHNlbHYsIHZpbCBmw6UgdGlsc2VuZHQgZW4gZW1haWwgbWVkIGVuIGdlbnZlaiAobGluaykgdGlsIGRldCBww6Vnw6ZsZGVuZGUga29uZmVyZW5jZXJ1bS4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7RHUga2FuIHbDpmxnZSBtZWxsZW0gZm9yc2tlbGxpZ2UgcnVtdHlwZXIgbWVkIGZvcnNrZWxsaWcgbGF5b3V0IG9nIGZ1bmt0aW9uYWxpdGV0LiBEdSBrYW4gb2dzw6UgdsOmbGdlIG1lbGxlbSBmb3Jza2VsbGlnZSBub3RpZmljZXJpbmdzbXVsaWdoZWRlciAoZW1haWwpLCBzb20gc2VuZGVzIGZvciBodmVyIGthbGVuZGVyIGV2ZW50LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDciIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5CZWhvdiBmb3IgaGrDpmxwPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDgiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5CZWdyw6Zuc2V0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwOSIgbmFtZT0ibHpjYWxlbmRlciI+CisgICAgPHZhbHVlPlPDuGc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEwIiBuYW1lPSJsemNhbGVuZGVyIj4KKyAgICA8dmFsdWU+VGlsZsO4ajwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTEiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5JbmdlbiBicnVnZXIgdmFsZ3QuIFbDpmxnIHZlbmxpZ3N0IGV0IGVtbmUgZnJhIGxpc3RlbiBmw7hyc3Qgb2cga2xpayBww6UgdGlsZsO4aiBlZnRlcmbDuGxnZW5kZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEyIiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGlsZsO4aiBkZWx0YWdlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTMiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5HZW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE0IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+U2xldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTUiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5FdmVudCBkZXRhbGplcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTYiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EZWZhdWx0IG1vZGVyYXRvcmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxNyIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPlN1cGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxOCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPklEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxOSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPk5hdm48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIwIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIxIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+VGlsZsO4aiBueSBkZWZhdWx0IG1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjIiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5FciBTdXBlciBtb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIzIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+SHZpcyBydW1tZXQgZXIgbW9kZXJlcmV0LCB2aWwgYnJ1Z2VyZSBtZWQgbW9kZXJhdG9yIGVsbGVyIGFkbWluaXN0cmF0b3Igbml2ZWF1IGF1dG9tYXRpc2sgYmxpdmUgbW9kZXJhdG9yIGh2aXMgZGUgZ8OlciBpbmQgaSBydW1tZXQuIFPDpWZyZW10IGR1IGlra2UgdmlsIGFuZ2l2ZSBkZXR0ZSBvZyBrdW4gdmlsIGxhZGUgZW4gYmVzdGVtdCBicnVnZXIgYmxpdmUgbW9kZXJhdG9yLCBza2FsIGR1IGFudmVuZGUgZGVmYXVsdCBtb2RlcmF0b3IgdmFsZ211bGlnaGVkZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkVuIFN1cGVyIG1vZGVyYXRvciBlciBhbHRpZCBtb2RlcmF0b3IsIG7DpXIgdmVka29tbWVuZGUgZ8OlciBpbmQgaSBldCBydW0gb2cgaW5nZW4ga2FuIGZqZXJuZSBtb2RlcmF0b3IgZmxhZ2V0IGZyYSB2ZWRrb21tZW5kZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI1IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+VGlsZGVsIFN1cGVyIG1vZGVyYXRvciBmdW5rLiB0aWwgZW4gYnJ1Z2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkZqZXJuIFN1cGVyIG1vZGVyYXRvciBmdW5rLiBmcmEgZW4gYnJ1Z2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNyIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI4IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+U8OlZnJlbXQgZHUgdGlsZsO4amVyIGVuIG9yZ2FuaXNhdGlvbiB0aWwgZXQgcnVtLCBlciBkZXQga3VuIGJydWdlcmUgc29tIGVyIG1lZGxlbSBhZiBvcmdhbmlzYXRpb25lbiwgc29tIGthbiBmw6UgYWRnYW5nIHRpbCBww6Vnw6ZsZGVuZGUgcnVtIChEZXR0ZSBlciBrdW4gZ3lsZGlndCBodmlzIGh2aXMgaXNQdWJsaWMgZmxhZ2V0IGVyIHNhdCB0aWwgZmFsc2UhKS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI5IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+TW9kZXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzAiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5CZWdyw6Zuc25pbmdlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzEiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5PcmdhbmlzYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODMyIiBuYW1lPSJjb25maXJtIGFjdGlvbiI+CisgICAgPHZhbHVlPkVyIGR1IHNpa2tlcj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODMzIiBuYW1lPSJjb25maXJtIGRlbGV0ZSI+CisgICAgPHZhbHVlPlZpbCBkdSB2aXJrZWxpZyBzbGV0dGUgZGV0dGUgZW1uZT8gRHUgc2thbCBrbGlra2UgcMOlIEdlbSBrbmFwcGVuIGZvciBhdCBnZW1tZSDDpm5kcmluZ2VybmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNCIgbmFtZT0idXNlciBjaG9vc2UgZXJyb3IiPgorICAgIDx2YWx1ZT5JbmdlbiBicnVnZXIgZXIgdmFsZ3QuIFbDpmxnIGbDuHJzdCBpbmRlbiBkdSB0aWxmw7hqZXIhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPlRpbGbDuGogbnkgZGVmYXVsdCBtb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM2IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+VmlsIGR1IHRpbGbDuGplIFN1cGVyIG1vZGVyYXRvciBmbGFnZXQgZm9yIGRlbm5lIGJydWdlcj8gRW4gU3VwZXIgbW9kZXJhdG9yIGVyIGlra2Uga3VuIG1vZGVyYXRvciBpIGV0IHJ1bSwgaHZpbGtldCBiZXR5ZGVyIGF0IGluZ2VuIGFuZHJlIG1vZGVyYXRvcmVyIGthbiBmamVybmUgbW9kZXJhdG9yIGZsYWdldCBmb3IgZGVubmUgYnJ1Z2VyLiBEdSBtYW5nbGVyIGF0IGdlbW1lIHJ1bSBvYmpla3RldCBmb3IgYXQgZ2VtbWUgZGlzc2UgaW5kc3RpbGxpbmdlciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+VmlsIGR1IGZqZXJuZSBTdXBlciBtb2RlcmF0b3IgZmxhZ2V0IGZvciBkZW5uZSBicnVnZXI/PyBEdSBtYW5nbGVyIGF0IGdlbW1lIHJ1bSBvYmpla3RldCBmb3IgYXQgZ2VtbWUgZGlzc2UgaW5kc3RpbGxpbmdlciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM4IiBuYW1lPSJzdXBlciBtb2RlcmF0b3IiPgorICAgIDx2YWx1ZT5EZW5uZSBicnVnZXIgZXIgZW4gU3VwZXIgbW9kZXJhdG9yLiBEdSBrYW4gaWtrZSBmamVybmUgbW9kZXJhdG9yIGZsYWdldCBmcmEgZW4gU3VwZXIgbW9kZXJhdG9yITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzkiIG5hbWU9ImNvbmZpcm0gZGVsZXRlIj4KKyAgICA8dmFsdWU+VmlsIGR1IHZpcmtlbGlnIHNsZXR0ZSBkZW5uZSBmaWwvbWFwcGU/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0MCIgbmFtZT0iY29uZmlybSBkZWxldGUiPgorICAgIDx2YWx1ZT5TbGV0IGZpbC9tYXBwZT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQxIiBuYW1lPSJzYWx1dGF0aW9uIj4KKyAgICA8dmFsdWU+RnIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0MiIgbmFtZT0ic2FsdXRhdGlvbiI+CisgICAgPHZhbHVlPkhyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDMiIG5hbWU9InByb3BlcnR5IHBhbmVsIHdoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5FZ2Vuc2thYmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NCIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPlZpcyBtdXNlbnMgcG9zaXRpb24gZm9yIGJydWdlcm5lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NSIgbmFtZT0icHVibGlzaCBvcHRpb24iPgorICAgIDx2YWx1ZT5EZWwgbHlkIG1lZCBTSVAgQXBwbGV0dGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NiIgbmFtZT0icHVibGlzaCBvcHRpb24iPgorICAgIDx2YWx1ZT5EZWwgbHlkIG1lZCBTSVAgb2cgdmlkZW8gbWVkIEZsYXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NyIgbmFtZT0iZG9jdW1lbnQgcGFuZWwiPgorICAgIDx2YWx1ZT5GeWxkaWc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ4IiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5TZSBza8Omcm08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ5IiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5CcnVnZXJlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTAiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPsO4bnNrZXIgYXQgZGVsZSBzaW4gc2vDpnJtLiBWaWwgZHUgc2U/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MSIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+THVrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MiIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPlpvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUzIiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+U2Vzc2lvbmVuIGJsZXYgbHVra2V0IGF0IGRlbiBkZWxlbmRlIGJydWdlciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU0IiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+UGF1c2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU1IiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+TnkgZGVsaW5nIGFmIHNrw6ZybTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTYiIG5hbWU9InByZXNlbnRlciBtaW5pIGljb24iPgorICAgIDx2YWx1ZT5NaW5pbWVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1NyIgbmFtZT0icHJlc2VudGVyIG1pbmkgaWNvbiI+CisgICAgPHZhbHVlPk1heGltZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU4IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5WaWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTkiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk9wdGFnZWxzZSB0aWRzbGluaWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYwIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5NaW5lIG9wdGFnZWxzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYxIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5PZmZlbnRsaWdlIG9wdGFnZWxzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYyIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5JTkZPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TmF2bjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjQiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkzDpm5nZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY1IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5EYXRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QWY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY3IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Eb3dubG9hZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjgiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk1BSU4gLSBWaWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjkiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPk9wdGFnZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcwIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5EdSBrYW4gb3B0YWdlIG9nIGRlbGUgZGluIHNrw6ZybSBzYW10aWRpZ3QuIEZvciBhdCBnw7hyZSBkZXQgbXVsaWd0IGZvciBhbmRyZSBhdCBzZSBkaW4gc2vDpnJtLCBza2FsIGR1IGJhcmUga2xpa2tlIHDDpSBTdGFydCBrbmFwcGVuIGkgdG9wcGVuLiBGb3Iga3VuIGF0IG9wdGFnZSBzZXNzaW9uZW4gZXIgZGV0IG5vayBhdCBrbGlra2UgcMOlIFN0YXJ0IG9wdGFnZWxzZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcxIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5TdGFydCBvcHRhZ2Vsc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcyIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5TdG9wIG9wdGFnZWxzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzMiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkRvd25sb2FkIEZMVi1maWxlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzQiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlJ1bTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzUiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkFmc3BpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzYiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlN0b3A8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc3IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5CcnVnZXJlbiBoYXIgbWlrcm9mb25lbiB0aWxzbHV0dGV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3OCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdG9wIGRlbGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzkiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+VGlsbGFkIGJydWdlciBzcMO4cmdzbcOlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODAiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+U2zDpSBmcmEgZm9yIGF0IGZvcmhpbmRyZSBhdCBicnVnZXJlIGthbiBmb3JzdHlycmUgZGlnIGkgZGV0dGUgcnVtLiBFZmZla3RlbiBlciwgYXQga25hcHBlbiBzb20gYW52ZW5kZXMgdGlsIG1vZGVyYXRpb24gKCJKZWcgaGFyIGV0IHNww7hyZ3Ntw6VsIikgaWtrZSB2aWwgdsOmcmUgc3lubGlnLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODEiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+UmV0dGlnaGVkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgyIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Eb3dubG9hZCBzb20gQVZJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RkxWPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QVZJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UsOlIHNrw6ZybXZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+S3VuIGx5ZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODciIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkRlciBoYXIgdsOmcmV0IGZlamwgdW5kZXIgcHJvY2Vzc2lvbmVuIGFmIG9wdGFnZWxzZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4OCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+T3B0YWdlbHNlbiBlciBpa2tlIGtsYXIgdGlsIGF0IGJsaXZlIHNldC4gUHLDuHYgdmVubGlnc3QgaWdlbiBvbSBldCBwYXIgbWludXR0ZXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4OSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TG9nOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTAiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk9wdGFnZXIgbWVkZGVsZWxzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTEiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk9rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MiIgbmFtZT0ic2lwIGFwcGxldCI+CisgICAgPHZhbHVlPlNJUCBBcHBsZXQgZXIgaWtrZSBrbGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MyIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNJUC1rb250byBpbmRzdGlsbGluZ2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NCIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNJUCBmb3IgaHZlciBlbmtlbHQgYnJ1Z2VyLiBEdSBrYW4gdGlsc2x1dHRlIGVsbGVyIGFmc2x1dHRlIFNJUCB2aWEgYWRtaW5pc3RyYXRpb24gJmd0OyBrb25maWd1cmF0aW9uIChOw7hnbGU6IGVuYWJsZV9zaXApLiBTSVAgZGF0YSBmb3IgaHZlciBlbmtlbHQgYnJ1Z2VyIGLDuHIgYmxpdmUgb3ByZXR0ZXQgYXV0b21hdGlzay48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk1IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+U0lQLUJydWdlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTYiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TaXAtQWRnYW5nc2tvZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk3IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+U2lwLUF1dGgtSWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk4IiBuYW1lPSJzaXAgc3RhdHVzIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Mb2dpbiB0aWwgU0lQIEdhdGV3YXkgaGFyIGZlamxldC4gRHUgYsO4ciBrb250cm9sbGVyZSBhdXRlbnRpZmlrYXRpb25zIGRhdGEgZnJhIGRpbiBTSVAtdWRieWRlciBvZyBTSVAtb250byBkYXRhIGZvciBodmVyIGVua2VsdCBicnVnZXIuIFNvbSBhZG1pbmlzdHJhdG9yIGhhciBkdSBzdGFkaWcgbXVsaWdoZWQgZm9yIGF0IGxvZ2dlIGluZCBvZyBrb250cm9sbGVyZSBrb25maWd1cmF0aW9uZW4uIFNvbSBicnVnZXIgZWxsZXIgbW9kZXJhdG9yIHZpbCBkdSBibGl2ZSBibG9rZXJldCBtZWQgaGVuc3luIHRpbCBpbnRlcmFrdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk5IiBuYW1lPSJzaXAgc3RhdHVzIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Mb2dpbiB0aWwgU0lQIEdhdGV3YXkgaGFyIGZlamxldC4gS29udGFrdCBzdXBwb3J0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDAiIG5hbWU9InNpcCBzdGF0dXMgbWVzc2FnZSI+CisgICAgPHZhbHVlPkxvZ2dlciBpbmQgdGlsIFNJUC1HYXRld2F5IC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDEiIG5hbWU9InNpcCBzdGF0dXMgbWVzc2FnZSI+CisgICAgPHZhbHVlPkxvZ2dlciBpbmQgdGlsIFNJUC1HYXRld2F5IC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDIiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlZpcyBMb2c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAzIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Mb2cgbWVkZGVsZWxzZXIgZnJhIHNlbmRpbmdlbiBhZiBvcHRhZ2Vsc2VzIHByb2Nlc3NlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDQiIG5hbWU9InNpcCBsb2dpbiI+CisgICAgPHZhbHVlPlNJUC1BcHBsZXQgbWVkZGVsZWxzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDUiIG5hbWU9InNpcCBsb2dpbiI+CisgICAgPHZhbHVlPlNJUC1BcHBsZXR0ZW4gZXIgaWtrZSBrbGFyLiBBY2NlcHRlciBhcHBsZXR0ZW4gb2cga2xpayBww6UgT0shPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwNiIgbmFtZT0ibW9kZXJhdG9yIHBvcCB1cCI+CisgICAgPHZhbHVlPkFubW9kIG9tIGF0IGJsaXZlIG1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDciIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5HZW0gbcO4ZGUgw6ZuZHJpbmdlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDgiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Nw7hkZXQgaGFyIHbDpnJldCDDpm5kcmV0LiBWaWwgZHUgZ2VtbWUgZGlzc2Ugw6ZuZHJpbmdlcj8gJmx0O2JyLyZndDsmbHQ7YnIvJmd0O0FsbGUgZGVsdGFnZXJlIHRpbCBkZXR0ZSBtw7hkZSB2aWwgbW9kdGFnZSBlbiBlbWFpbCBtZWQgZGVuIG9wZGF0ZXJlZGUgZGF0byBvZyB0aWQgKGFmaMOmbmdpZyBhZiBub3RpZmlrYXRpb25zdHlwZW4gZm9yIGRldHRlIG3DuGRlKS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA5IiBuYW1lPSJmbHYgcmVjb3JkZXIgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPkZvciBhdCBmw6UgYWRnYW5nIHRpbCBhbmRyZSBvcHRhZ2Vsc2VyIHNrYWwgZHUgbG9nZ2UgaW5kIGkgJEFQUF9OQU1FIGFwcGxpa2F0aW9uZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMCIgbmFtZT0iaW50ZXJ2aWV3IHZpZGVvIHBvZCI+CisgICAgPHZhbHVlPlbDpmxnIGJydWdlciBmb3IgZGVubmUgdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTExIiBuYW1lPSJpbnRlcnZpZXcgdmlkZW8gY2hvb3NlIHVzZXIiPgorICAgIDx2YWx1ZT5CcnVnZSB0aWxnw6ZuZ2VsaWdlIGZvciBkZW5uZSBQb2Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTEyIiBuYW1lPSJpbnRlcnZpZXcgaW5mbyI+CisgICAgPHZhbHVlPkR1IGVyIG1vZGVyYXRvciBpIGRldHRlIGludGVydmlldy4gRHUga2FuIGJlc3RlbW1lIGh2ZW0gZGVyIHRhbGVyIGkgZGV0dGUgaW50ZXJ2aWV3IG9nIGR1IGthbiBzdGFydGUgLyBzdG9wcGUgb3B0YWdlbHNlbiBhZiBkZW5uZSBzZXNzaW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTMiIG5hbWU9ImludGVydmlldyBidXR0b24gcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+U3RhcnQgb3B0YWdlbHNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxNCIgbmFtZT0iaW50ZXJ2aWV3IGJ1dHRvbiByZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TdG9wIG9wdGFnZWxzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTUiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+T3B0YWdlbHNlbiBhZiBpbnRlcnZpZXdldCBlciBhbGxlcmVkZSBzdGFydGV0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTYiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+T3B0YWdlbHNlbiBlciBhbGxlcmVkZSBzdG9wcGV0IGVsbGVyIGVyIGlra2Ugc3RhcnRldCBlbmRudS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE3IiBuYW1lPSJpbnRlcnZpZXcgcmVjb3JkaW5nIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5PcHRhZ2Vsc2VuIGFmIGRldHRlIGludGVydmlldyBlciBhbGxlcmVkZSBzdGFydGV0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTgiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxOSIgbmFtZT0iaW50ZXJ2aWV3IGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgcG9zdC1wcm9jZXNzaW5nIG9mIGFuIGludGVydmlldyB0YWtlcyA1IG1pbnV0ZXMgcGVyIDEgbWludXRlIGludGVydmlldy4gVGhlIGN1cnJlbnQgcHJvZ3Jlc3Mgb2YgdGhlIGludGVydmlldyBwb3N0LXByb2Nlc3NpbmcgdHJhbnNjb2RpbmcgaXM6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyMCIgbmFtZT0ic2lwIGNyZWF0aW9uIj4KKyAgICA8dmFsdWU+WW91IGhhdmUgdG8gZW50ZXIgeW91ciBwYXNzd29yZCBhZ2FpbiB0byBhdXRvIGNyZWF0ZSB0aGUgU0lQIERhdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIxIiBuYW1lPSJzaXAgY3JlYXRpb24iPgorICAgIDx2YWx1ZT5SZS1nZW5lcmF0ZSBTSVAgRGF0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjIiIG5hbWU9ImZpbGVleHBsb3JlciI+CisgICAgPHZhbHVlPllvdSBjYW5ub3QgbW92ZSB0aGlzIGZpbGUgb3IgZm9sZGVyIGludG8gaXRzIG93biBzdWIgZm9sZGVyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjMiIG5hbWU9ImZpbGUgZXhwbG9yZXIgIj4KKyAgICA8dmFsdWU+SG9tZSBkcml2ZSBzaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlB1YmxpYyBkcml2ZSBzaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNSIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPkxpY2Vuc2UgU2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI2IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+WW91IGNhbiBlaXRoZXIgYmluZCB0aGUgdXNlciB0byBhIGV4cGlyZSBEYXRlIG9yIHRvIGEgbWF4aW11bSBudW1iZXIgb2YgbWludXRlcyB3aGVuIHlvdSBlbmFibGUgbGljZW5zaW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjciIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5DaGVjayBsaWNlbnNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyOCIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPkZsYXRyYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyOSIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPkV4cGlyZSBkYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMCIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPlNlY29uZHMgbGVmdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzEiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5Ub3RhbCB0aW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91ciBMaWNlbnNlIGhhcyBleHBpcmVkLiBZb3UgbmVlZCB0byBidXkgbmV3IG1pbnV0ZXMgKFBheS1wZXItbWludXRlKSBvciBhIHZvbHVtZSBmbGF0cmF0ZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMzIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5DbGljayBhbmQgYnV5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzNCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+VGltZSBMZWZ0IG9uIHlvdXIgYWNjb3VudDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM1IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Vc2VyIExpY2Vuc2UgSW5mbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzYiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkluZm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM3IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5DbG9zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzgiIG5hbWU9ImxpY2Vuc2UtaW5mbyI+CisgICAgPHZhbHVlPllvdXIgbGljZW5zZSBoYXMgZXhwaXJlZC4gWW91IG5lZWQgZWl0aGVyIHRvIGJ1eSBhIG1pbnV0ZSBwYWNrYWdlIChQYXktcGVyLW1pbnV0ZSkgb3IgYSB2b2x1bWUgZmxhdHJhdGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzOSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+TGljZW5zZSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDAiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdSBjYW4gZWl0aGVyIGJ1eSBtaW51dGVzIHRvIG1ha2UgV2ViLUNvbmZlcmVuY2luZyAoUGF5LXBlci1taW51dGUpLiZsdDtici8mZ3Q7Jmx0O2JyLyZndDsgT3IgeW91IGJ1eSBhIHZvbHVtZSBmbGF0cmF0ZSBhYm91dCAzLTEyIG1vbnRocy4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7U2VuZGluZyBpbnZpdGF0aW9ucyAoZGlyZWN0IGxpbmtzIGludG8gQ29uZmVyZW5jZSBSb29tcykgb3IgY3JlYXRpbmcgY29uZmVyZW5jZSBSb29tcyB2aWEgdGhlIENhbGVuZGFyIHdpdGggZXh0ZXJuYWwgVXNlcnMgaXMgb25seSBhbGxvd2VkIHdpdGggYSB2b2x1bWUgZmxhdHJhdGUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDYwIE1pbnV0ZXMgOSw5OSBFVVJPICgxNiBDZW50IHBlciBNaW51dGUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDUgaG91cnMgMTksOTkgRVVSTyAoNiBDZW50IHBlciBtaW51dGUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDMgbW9udGggZm9yIDI5LDk5IEVVUk8gKDksOTkgRXVybyBwZXIgTW9udGgpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDYgbW9udGggZm9yIDM5LDk5IEVVUk8gKDYsNjYgRXVybyBwZXIgbW9udGgpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+UGF5LXBlci1taW51dGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ2IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Wb2x1bWUgZmxhdHJhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ3IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3UgaGF2ZSB1bmxpbWl0ZWQgTGljZW5zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDgiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdXIgbGljZW5zZSB3aWxsIGV4cGlyZSBhdDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ5IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3UgYm91Z2h0IFBheS1wZXItbWludXRlLiBZb3Ugc3RpbGwgaGF2ZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUwIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5CdXkgbmV3IGNyZWRpdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUxIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5XYW50IHlvdXIgb3duIFNlcnZlcj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUyIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3Ugd291bGQgbGlrZSB0byBoYXZlICRBUFBfTkFNRSBpbnN0YWxsZWQgb24geW91ciBTZXJ2ZXIgb3IgaW50ZWdyYXRlZCBpbnRvIHlvdXIgTW9vZGxlLCBTdWdhckNSTSwgV2Vic2l0ZSBvciBJbnRyYW5ldD8gUHJpemluZ3Mgc3RhcnQgYXQgNTAwIEV1cm8gcGVyIEluc3RhbGxhdGlvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUzIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5PciBzZW5kIHVzIGEgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTQiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkFuc3dlciB0bzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU1IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5NZXNzYWdlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTYiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlNlbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU3IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5DbGljayBoZXJlIHRvIGdldCBjb250YWN0IEluZm8gYW5kIFByaXppbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1OCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q3JlZGl0IENhcmQgRGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTkiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkZpcnN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjAiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkxhc3RuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2MSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q3JlZGl0IENhcmQgVHlwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjIiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlZJU0EgQ2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjMiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPk1hc3RlckNhcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY0IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5EaXNjb3ZlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjUiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkFtZXJpY2FuIEV4cHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY2IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DcmVkaXQgQ2FyZCBOdW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY3IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5FeHBpcmF0aW9uIERhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY4IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DYXJkIFZlcmlmaWNhdGlvbiBOdW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY5IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5CaWxsaW5nIEFkZHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTcwIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5BZGRyZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q2l0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzMiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNvdW50cnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc0IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdGF0ZSAoT25seSBVUyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc1IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5aSVA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc2IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5BbW91bnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc3IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdWJtaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc4IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdGVwIDE6ICRBUFBfTkFNRSAtIFBheW1lbnQgRm9ybTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzkiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkVNYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q2xpY2sgIkNoZWNrIG91dCB3aXRoIFBheXBhbCIgdG8gcGF5LiZsdDtici8mZ3Q7IFBheXBhbCBhY2NlcHRzIFZJU0EsIE1hc3RlckNhcmQsIERpc2NvdmVyIG9yIEFtZXJpY2FuIEV4cHJlc3MuICZsdDtici8mZ3Q7SXQgZG9lcyBub3QgcmVxdWlyZSB0byBzaWduIHVwIHdpdGggUGF5cGFsLiAmbHQ7YnIvJmd0O0NpdGl6ZW5zIGZyb20gR2VybWFueSBjYW4gYWxzbyBwYXkgd2l0aCBkaXJlY3QgZGViaXQgKFBlciBMYXN0c2NocmlmdC1FaW56dWcpLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODEiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlRoYW5rIHlvdSBmb3IgYnV5aW5nICRBUFBfTkFNRS4gJmx0O2JyLyZndDsgJmx0O2JyLyZndDsgQXMgc29vbiBhcyB3ZSByZWNlaXZlZCB0aGUgcGF5bWVudCB5b3VyIGFjY291bnQgd2lsbCBiZSB1cGRhdGVkLiZsdDtici8mZ3Q7IFlvdSB3aWxsIHJlY2VpdmUgYW4gRU1haWwgd2l0aCB5b3VyIGludm9pY2UgYXMgUERGLiZsdDtici8mZ3Q7WW91IGNhbiBhbHNvIGNoZWNrIGN1cnJlbnQgYW5kIHBhc3QgdHJhbnNhY3Rpb25zIGluIHlvdXIgcHJvZmlsZSBzZXR0aW5ncy4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7Jmx0O2JyLyZndDtZb3UgY2FuIGNsb3NlIHRoaXMgYnJvd3NlciB3aW5kb3cvdGFiIG5vdyBhbmQgcmV0dXJuIHRvICRBUFBfTkFNRS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgyIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdWJtaXQgYW5kIEJ1eSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgzIiBuYW1lPSJwYXltZW50LWZyb20iPgorICAgIDx2YWx1ZT5DbGljayBhbmQgQnV5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODQiIG5hbWU9InBheW1lbnQtZnJvbSI+CisgICAgPHZhbHVlPlN0ZXAgMzogJEFQUF9OQU1FIFBheW1lbnQgLSBDaGVjayBvcmRlciBhbmQgYnV5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODUiIG5hbWU9InBheW1lbnQtZnJvbSI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg2IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5QYXltZW50IHJlY2VpdmVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODciIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPkhpLDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODgiIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPldlIGhhdmUgcmVjZWl2ZWQgeW91ciBwYXltZW50LiBZb3VyIHVzZXIgcHJvZmlsZSBpcyB1cGRhdGVkIG5vdy4gU2VlIGF0dGFjaGVkIHlvdXIgSW52b2ljZS4gVGhlIEludm9pY2UgYW5kIGFsbCBwYXN0IEludm9pY2UgY2FuIGFsc28gYmUgZG93bmxvYWRlZCBpbiB5b3VyIHVzZXIgcHJvZmlsZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg5IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5UaGFuayB5b3UgZm9yIHVzaW5nICRBUFBfTkFNRSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkwIiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5QYXltZW50IFJlY2VpdmVkICRBUFBfTkFNRSAtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MSIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPlBheW1lbnQgYW5kIFRyYW5zYWN0aW9uIFN0YXR1czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTIiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5UcmFuc2NhdGlvbiBIYXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MyIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPk1pbnV0ZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk0IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+TW9udGhzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NSIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPkVVUjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTYiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TdGF0dXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk3IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+SW52b2ljZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTgiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk5IiBuYW1lPSJlcnJvci1saWNlbnNlLWZsYXQiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0byBidXkgYSB2b2x1bWUgZmxhdHJhdGUgdG8gYmUgYWJsZSB0byBzZW5kIGludml0YXRpb25zIG9yIGNyZWF0ZSBtZWV0aW5ncyB2aWEgdGhlIGNhbGVuZGFyLiBXaXRoIFBheS1wZXItbWludXRlIGl0IGlzIG9ubHkgcG9zc2libGUgZm9yIHlvdSB0byBhY2Nlc3MgJEFQUF9OQU1FLiBZb3UgY2Fubm90IGFsbG93IDN0aCBQYXJ0aWVzIHRvIGFjY2VzcyBhIE1lZXRpbmcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDAiIG5hbWU9ImVycm9yIHVzZXIiPgorICAgIDx2YWx1ZT5UaGlzIEVtYWlsIGlzIGFscmVhZHkgdXNlZCBieSBhbm90aGVyIFVzZXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDEiIG5hbWU9InJvb20tYWRtaW4iPgorICAgIDx2YWx1ZT5TSVAtU2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwMiIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlRoZSBDb25mZXJlbmNlIE51bWJlciBhbmQgUElOIGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB2aWEgdGhlIE9wZW5YRyBSUEMtR2F0ZXdheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAzIiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+U0lQIE51bWJlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA0IiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+UElOPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDUiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5DbGVhciBvYmplY3RzIG9uIGN1cnJlbnQgc2xpZGUgb25seSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNiIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPk9ubHkgdGhlIFVSTCBlbnRlcmVkIGluIHRoZSBTdGF0dXMgYmFyIGlzIHNlbmQgdG8gcGFydGljaXBhbnRzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TWFrZSBUZWFtLVJvb21zIFtCcmVha291dCBzZXNzaW9uXTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2hvb3NlIHVzZXJzIGZvciBhIG5ldyBUZWFtLVJvb20hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIGNob29zZSB1c2VycyBoZXJlIGFuZCBjcmVhdGUgYSBuZXcgQ29uZmVyZW5jZSBSb29tICgiVGVhbSBSb29tIikgZm9yIHRoZW0uIFRoZSBjaG9zZW4gdXNlcnMgd2lsbCBhdXRvbWF0aWNhbGx5IHN3aXRjaCB0byB0aGUgbmV3IFRlYW0tUm9vbSBvciBnZXQgYSBub3RpZmljYXRpb24uIFRlYW0tUm9vbSBNb2RlcmF0b3JzIHdpbGwgZ2V0IGFkZGl0aW9uYWxseSBhIGxpc3Qgb2YgY3VycmVudCByb29tcyBzbyB0aGF0IHRoZXkgY2FuIHN3aXRjaCB0byBlYWNoIHJvb20gaWYgdGhlcmUgYXJlIGlzIG5lZWQgZm9yIGEgTW9kZXJhdG9yLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VXNlcm5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkxvZ2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJzIGZvciB0aGUgbmV3IFRlYW0tUm9vbTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNyZWF0ZSBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2hvb3NlIGF0IGxlYXN0IG9uZSB1c2VyIGZvciB0aGUgVGVhbS1Sb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+QWRkIHVzZXIgdG8gdGVhbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+UmVtb3ZlIHVzZXIgZnJvbSBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXIgaXMgVGVhbS1Sb29tIE1vZGVyYXRvciAoSGUgaXMgYWJsZSB0byBtYW5hZ2UgVGVhbS1Sb29tcyBhbmQgdXNlcnMgb2YgdGhlIFRlYW0tUm9vbSBjYW4gYXNrIGhpbSB0byBjb21lIGluc2lkZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlJvb210eXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5JZiB5b3UgY2hlY2sgIkZvcmNlIHVzZXIgdG8gc3dpdGNoIHRvIG5ldyBUZWFtLVJvb20iIGFsbCBjaG9zZW4gdXNlcnMgd2lsbCBhdXRvbWF0aWNhbGx5IHN3aXRjaCB0byB0aGUgbmV3bHkgY3JlYXRlZCBUZWFtLVJvb20uIE90aGVyd2lzZSB0aGV5IGdldCBhIG5vdGlmaWNhdGlvbiB3aXRoIGEgYnV0dG9uIHRoYXQgdGhleSAmbHQ7aSZndDtjYW4mbHQ7L2kmZ3Q7IHN3aXRjaCB0byB0aGUgbmV3IHJvb20uIFRlYW0tTW9kZXJhdG9ycyBhbHdheXMgaGF2ZSB0aGUgZnJlZSBjaG9pY2UgdG8gbWFuYWdlIHRoZSBUZWFtLVJvb21zIGFuZCBzd2l0Y2ggYmV0d2VlbiB0aGVtLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TWFuYWdlIFRlYW0tUm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPllvdSBjYW4gc3dpdGNoIGhlcmUgYmV0d2VlbiBhbGwgVGVhbS1Sb29tcyB0aGF0IHlvdSBhcmUgYXNzaWduZWQgYXMgVGVhbS1Sb29tIE1vZGVyYXRvci4gVXNlcnMgaW5zaWRlIHRoZSBUZWFtLVJvb20gY2FuIHNlbmQgeW91IGEgbWVzc2FnZSwgZm9yIGV4YW1wbGUgdG8gYXNrIHlvdSB0byBjb21lIHRvIHRoZWlyIHJvb20gYW5kIGhlbHAgdGhlbS4gWW91IGNhbiBhbHNvIHRlcm1pbmF0ZSB0aGUgVGVhbS1Sb29tIGFuZCBhbGwgVXNlcnMgd2lsbCBiZSBsb2dnZWQgb3V0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Rm9yY2UgdXNlciB0byBzd2l0Y2ggdG8gbmV3IFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q3JlYXRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJzIGF2YWlsYWJsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+QWRkIGEgdXNlciB3aXRoIHRoZSBwbHVzIGZyb20gdGhlIGxlZnQgb3IgcmVtb3ZlIGl0IHdpdGggdGhlIGNyb3NzIGZyb20gdGhlIHJpZ2h0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MSkgVGVhbS1Sb29tIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4yKSBBZGQgdXNlcnMgdG8gdGhlIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVhbS1Sb29tIE5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2hhbmdlIHRvIHRoZSBSb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Td2l0Y2ggdG8gdGhpcyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlcm1pbmF0ZSBUZWFtLVJvb20gYW5kIGxvZ291dCBhbGwgVXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk5ldyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGEgbmV3IFRlYW0tUm9vbSBhdmFpbGFibGUgZm9yIHlvdS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlN3aXRjaCB0byBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW0tUm9vbSBBY3Rpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGlzIGlzIGEgVGVhbS1Sb29tLCB5b3UgY2FuIHNlbmQgdGhlIFRlYW0tTW9kZXJhdG9yIGEgbWVzc2FnZSBpZiB5b3UgbmVlZCBoZWxwLiBZb3UgY2FuIHJlLW9wZW4gdGhpcyB3aW5kb3cgdmlhIHRoZSBtYWluIG1lbnUgaW4gdGhlICJBY3Rpb25zIiBzZWN0aW9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MSkgU2VuZCBtZXNzYWdlIHRvIFRlYW0tUm9vbSBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk5ldyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGEgbmV3IFRlYW0tUm9vbSBhdmFpbGFibGUuIFlvdSBjYW4gc3dpdGNoIHRvIHRoYXQgUm9vbS4gVGVhbS1Sb29tcyBhcmUgbGlrZSAiV29ya2dyb3VwcyIgd2l0aCBhZGRpdGlvbmFsbHkgcG9zc2liaWxpdGllcyB0byBhc2sgdGhlIFRlYW0tUm9vbSBNb2RlcmF0b3IgZm9yIGhlbHAuIFlvdXIgVGVhbS1Sb29tcyBhcmUgYWxzbyBhdmFpbGFibGUgaW4gdGhlICJNeSBNZWV0aW5ncyIgc2VjdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlN3aXRjaCB0byBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNyZWF0ZWQgYnk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb20gbmFtZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0OSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoaXMgV2luZG93IHdpbGwgc3RheSBvcGVuIGV2ZW4gaWYgeW91IGxlYXZlIHRoZSByb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VXNlcnMgZm9yIHRoaXMgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4zKSBPdGhlciBUZWFtLVJvb21zIHRoYXQgeW91IGNvdWxkIHN3aXRjaCB0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U2VuZCBhIG1lc3NhZ2UgdG8gdGhlIFRlYW0tUm9vbSBNb2RlcmF0b3JzLiBGb3IgZXhhbXBsZSBpZiB5b3UgbmVlZCBoZWxwIGluIE1vZGVyYXRpbmcgdGhlIFJvb20gb3IgaWYgeW91IGhhdmUgYSBxdWVzdGlvbiBhYm91dCB0aGUgdG9waWMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5TZW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4yKSBVc2VycyB0aGF0IGFyZSBpbnZpdGVkIHRvIHRoaXMgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5JcyBUZWFtLVJvb20gTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVzZSBhcmUgYWxsIHVzZXJzIHRoYXQgdGhlIG1vZGVyYXRvciBoYXMgaW52aXRlZCB0byB0aGlzIFRlYW0tUm9vbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1NyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIFRlYW0tTW9kZXJhdG9yIGxvZ2dlZCBpbiBhdCB0aGUgbW9tZW50ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGEgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+UGxlYXNlIGhlbHAgdXMsIHdlIGhhdmUgYSBwcm9ibGVtIGluIG91ciBUZWFtLVJvb20hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5BIHVzZXIgZnJvbSBhIFRlYW0tUm9vbSByZXF1ZXN0cyB5b3VyIGhlbHAuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb20gcmVxdWVzdCBmb3IgaGVscDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TWVzc2FnZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2MyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkZyb206PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGN1cnJlbnRseSBub3QgaW4gYW55IFRlYW0tUm9vbS4gQnV0IHlvdSBjYW4gc3dpdGNoIGhlcmUgdG8gYWxsIFRlYW0tUm9vbXMgdGhhdCB5b3UgaGF2ZSBhY2Nlc3MgdG8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjUiIG5hbWU9ImJhY2t1cENvbnRlbnQiPgorICAgIDx2YWx1ZT5CYWNrdXAgdGhlIFN5c3RlbS4gVGhlIEJhY2t1cCBpbmNsdWRlcyBhbGwgVXNlciBnZW5lcmF0ZWQgZGF0YS4gVGhlIGNvbmZpZ3VyYXRpb24gaXMgbm90IGluY2x1ZGVkIGFzIHdlbGwgYXMgdGhlIGxhbmd1YWdlIGxhYmVscy4gQmVjYXVzZSB0aG9zZSB2YWx1ZXMgYXJlIGltcG9ydGVkIHdpdGggdGhlIFN5c3RlbSBJbnN0YWxsZXIuIFRvIHVwZGF0ZSB5b3VyIFN5c3RlbSwgZXhwb3J0IHlvdXIgb2xkIHN5c3RlbSAoMSkgcmUtaW5zdGFsbCBpbnRvIGEgbmV3IGRhdGFiYXNlIHRoZSBuZXcgcGFja2FnZSAoMikgYW5kIGltcG9ydCB0aGUgQmFja3VwIGZpbGUgYWdhaW4gKDMpLiBUaGUgQmFja3VwIHNob3VsZCBiZSBpbXBvcnRlZCBiZWZvcmUgZ2VuZXJhdGluZyBkYXRhIGluIHRoZSBuZXdseSBpbnN0YWxsZWQgc3lzdGVtLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY2IiBuYW1lPSJiYWNrdXBDb250ZW50Ij4KKyAgICA8dmFsdWU+U3lzdGVtIEJhY2t1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY3IiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT5BbGxvdyB1c2VyIHRvIHNoYXJlIFNjcmVlbi9SZWNvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2OCIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+RGVueSB1c2VyIHRvIHNoYXJlIFNjcmVlbi9SZWNvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2OSIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+VXNlciBpcyBNb2RlcmF0b3IsIGhlIGNhbiBkbyBhbnl0aGluZyEgW1NjcmVlbiBTaGFyaW5nXTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDcwIiBuYW1lPSJhcHBseSBmb3Igc2NyZWVuL3JlY29yZGluZyI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gc2hhcmUvcmVjb3JkIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3MSIgbmFtZT0ibW9kZXJhdGlvbiBtaW5pIGljb25zIj4KKyAgICA8dmFsdWU+WW91IGFyZSBhbGxvd2VkIHRvIHNoYXJlL3JlY29yZCBzY3JlZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3MiIgbmFtZT0ibW9kZXJhdGlvbiBtaW5pIGljb25zIj4KKyAgICA8dmFsdWU+QXBwbHkgZm9yIHJpZ2h0IHRvIHNoYXJlL3JlY29yZCBzY3JlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzMiIG5hbWU9Im1vZGVyYXRpb24gbWluaSBpY29ucyBjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+QWxsb3cvRGVueSByaWdodCB0byBzaGFyZS9yZWNvcmQgc2NyZWVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc0IiBuYW1lPSJzb3VuZCBpY29uIj4KKyAgICA8dmFsdWU+VHVybiBzb3VuZCBvZmY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3NSIgbmFtZT0ic291bmQgaWNvbiI+CisgICAgPHZhbHVlPlR1cm4gc291bmQgb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3NiIgbmFtZT0icm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPkF1ZGlvIG9ubHkgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc3IiBuYW1lPSJyb29tIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+VHVybiB0aGlzIEZsYWcgb24gYW5kIHRoZSB1c2VycyB3aWxsIGhhdmUgb25seSB0aGUgQXVkaW8tT3B0aW9uIGFuZCBubyBWaWRlbyBpbiBhIGNvbmZlcmVuY2Ugcm9vbS4gVGhpcyBjYW4gYnkgZ29vZCB0byBzYXZlIGJhbmR3aWR0aC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3OCIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QWxsb3cgUmVtb3RlIENvbnRyb2wgKER1cmluZyBTY3JlZW4gU2hhcmluZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3OSIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+RGVueSBSZW1vdGUgQ29udHJvbCAoRHVyaW5nIFNjcmVlbiBTaGFyaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgwIiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5BcHBseSBmb3IgcmlnaHQgdG8gUmVtb3RlIENvbnRyb2wgU2NyZWVuIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODEiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPllvdSBhcmUgYWxsb3dlZCB0byBSZW1vdGUgQ29udHJvbCBTY3JlZW4gKER1cmluZyBTY3JlZW4gU2hhcmluZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MiIgbmFtZT0iYXBwbHkgZm9yIHJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0byByZW1vdGUgY29udHJvbCBzY3JlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODMiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlVzZXIgaXMgTW9kZXJhdG9yLCBoZSBjYW4gZG8gYW55dGhpbmchIFtSZW1vdGUgRGVza3RvcCBDb250cm9sXTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg0IiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5BbGxvdy9EZW55IHJpZ2h0IHRvIFJlbW90ZSBDb250cm9sIFNjcmVlbiAoRHVyaW5nIFNjcmVlbiBTaGFyaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg1IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT4xKSBZb3VyIFBDIHRvIHJlbW90ZSBQQzogVG8gY29weSBhbmQgcGFzdGUgdGV4dCBmcm9tIHlvdXIgY2xpcGJvYXJkIGludG8gdGhlIHJlbW90ZSBjb250cm9sbGVkIHNjcmVlbiwgY2xpY2sgb24gdGhlIHNjcmVlbiwgdGhlbiByaWdodCBjbGljayBpbiB0aGUgdGV4dCBmaWVsZCBhbmQgY2hvb3NlICJJbnNlcnQiIGZyb20gdGhlIGNvbnRleHQgKHJpZ2h0IGNsaWNrKSBtZW51LiZsdDtici8mZ3Q7Jmx0O2JyLyZndDsyKSBGcm9tIHJlbW90ZSBQQyB0byB5b3VyIFBDOiBUbyBjb3B5IHRleHQgZnJvbSB0aGUgcmVtb3RlIFBDIHRvIHlvdXIgUEMncyBjbGlwYm9hcmQsIGhpZ2hsaWdodCB0aGUgdGV4dCB3aXRoIHRoZSBtb3VzZSBvbiB0aGUgcmVtb3RlIHNjcmVlbiwgdGhlbiByaWdodC1jbGljayBvbiB0aGUgcmVtb3RlIHNjcmVlbiBhbmQgY2hvb3NlICZsdDtpJmd0O0NvcHkgaGlnaGxpZ2h0ZWQgdGV4dCZsdDsvaSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4NiIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+Q29weSBhbmQgUGFzdGUgdGV4dCBmcm9tIHlvdXIgUEMgdG8gcmVtb3RlIFBDIGFuZCB2aWNlLXZlcnNhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg3IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Db3B5IGhpZ2hsaWdodGVkIHRleHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4OCIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+SG93IHRvIGNvcHkgbiBwYXN0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg5IiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5RdWFsaXR5IG9mIHRoZSBTY3JlZW5TaGFyZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5MCIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+VmVyeSBoaWdoIFF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5MSIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+SGlnaCBRdWFsaXR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTIiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPk1lZGl1bSBRdWFsaXR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTMiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPkxvdyBRdWFsaXR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTQiIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+ZW5fVVM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NSIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5kZV9ERTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk2IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPktleWJvYXJkOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk3IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPkNsb3NlIFdlYmluYXIhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTgiIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+VGhlIFdlYmluYXIgaXMgYWxyZWFkeSBjbG9zZWQsIHlvdSB3aWxsIGJlIHJlZGlyZWN0ZWQgdG8gc29tZSBpbnRlcmVzdGluZyBvZmZlcmluZ3MgaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5OSIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5DbG9zZSBSb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDAiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+RXhpdCBVUkw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMSIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5Sb29tIHRlcm1pbmF0aW9uIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDIiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+SWYgdGhlIHJvb20gaXMgY2xvc2VkIHVzZXJzIHdpbGwgYmUgcmVkaXJlY3RlZCB0byB0aGUgZXhpdCBVUkwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDMiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+TGRhcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA0IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPklEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDUiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA2IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkNvbmZpZyBGaWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDciIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+TGRhcCBDb25maWc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwOCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDkiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+RW5hYmxlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEwIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkluc2VydGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTEiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+SW5zZXJ0ZWQgYnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMiIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5VcGRhdGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTMiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+VXBkYXRlZCBieTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE0IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPlRoZSBjb25maWcgZmlsZXMgYXJlIGluIHRoZSBmb2xkZXIgd2ViYXBwcy9vcGVubWVldGluZ3MvY29uZi4gWW91IG5lZWQgdG8gbWFudWFsbHkgdXBsb2FkIHRoZSBmaWxlcyB0byB0aGlzIGZvbGRlci4gQ2hhbmdlcyB0byB0aGUgY29uZmlnIGZpbGUgYXJlIGltbWVkaWF0ZWx5IG9ubGluZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5Db25maWcgZmlsZSBuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTYiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+SWYgeW91IGVuYWJsZSAiQWRkIERvbWFpbiB0byB1c2VybmFtZSIgdGhlIHZhbHVlIG9mIHRoZSBmaWVsZCAiZG9tYWluIiBpcyBhZGRlZCB0byBlYWNoIGxvZ2luIHRoYXQgdGhlIHVzZXIgZW50ZXJzIGluIHRoZSBsb2dpbiBib3guIFRoaXMgaXMgdXNlZnVsIGlmIHRoZSBMb2dpbiBpbiB0aGUgTGRhcCBpcyBzdG9yZWQgaW5jbHVkaW5nIHRoZSBkb21haW4gbmFtZS4gRXhhbXBsZTogVXNlciBlbnRlcnMgImhhbnMiIGRvbWFpbiBpcyBzcGVjaWZpZWQgYXMgImxvY2FsaG9zdC5jb20iLCBsb2dpbiB0aGF0IGlzIHZlcmlmaWVkIGFnYWluc3QgTGRhcCBpczogaGFuc0Bsb2NhbGhvc3QuY29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTciIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+QWRkIERvbWFpbiB0byB1c2VybmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE4IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkRvbWFpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE5IiBuYW1lPSJyZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPkluc2VydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIwIiBuYW1lPSJyZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPkNvcHkgaGlnaGxpZ2h0ZWQgdGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIxIiBuYW1lPSJyZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPlJlbW90ZSBDbGlwYm9hcmQgVGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIyIiBuYW1lPSJyZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPlNob3cgcmVtb3RlIENsaXBib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIzIiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5EbyBub3Qgc2hvdyBhZ2FpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI0IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Db3B5IHRleHQgaGVyZSAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNSIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgdGhlIHJpZ2h0IHRvIHJlbW90ZSBjb250cm9sIChvciB0aGUgbW9kZXJhdGlvbikgdG8gY29weSBhbmQgcGFzdGUgdGV4dCB0byBvciBmcm9tIHRoZSByZW1vdGUgc2NyZWVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI2IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5FZGl0IGRlZmF1bHQgc2V0dGluZ3MgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjciIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkRvIG5vdCBzaG93IGluZm8gYm94IGluIFJlbW90ZSBDb250cm9sIGFib3V0IENvcHkgYW5kIFBhc3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjgiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+U2F2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI5IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPlJlbW92ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMwIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMxIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+SW52aXRlIHVzZXIgdG8gY29uZmVyZW5jZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzIiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5DaG9vc2UgYSBjb25mZXJlbmNlIHJvb20uIFRoZSBpbnZpdGVkIHVzZXIgd2lsbCBnZXQgYSBtZXNzYWdlIHdpdGggeW91ciBuYW1lIGFuZCBhIGxpbmsgdG8gdGhlIHJvb20uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzMiIG5hbWU9ImNoYXQgdXNlciI+CisgICAgPHZhbHVlPkNvbm5lY3RlZCBzaW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzNCIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkVudGVyIHJvb20gYWZ0ZXIgc2VuZGluZyBpbnZpdGF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzUiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5JbnZpdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzNiIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPk1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzNyIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gaW52aXRlIHlvdSB0byB0aGUgY29uZmVyZW5jZSByb29tOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM4IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+SW52aXRlIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzOSIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPlNlbmQgSW52aXRhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQwIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+ZGlkICZsdDtiJmd0O25vdCZsdDsvYiZndDsgYWNjZXB0IHlvdXIgaW52aXRhdGlvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0MSIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkFjY2VwdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQyIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+RGVueTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQzIiBuYW1lPSJ1c2VyIHByb2ZpbGUiPgorICAgIDx2YWx1ZT5UaW1lem9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ0IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5FdmVudCBEZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDUiIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0NiIgbmFtZT0iYXBwb2ludG1lbnQgbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+RGVzY3JpcHRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0NyIgbmFtZT0iYXBwb2ludG1lbnQgbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+Q3JlYXRlZCBieTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ4IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+VGltZVpvbmUgTWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ5IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+Q2hlY2sgIlRpbWVab25lIE1lc3NhZ2UiIHRvIGdpdmUgdXNlcnMgYSBtZXNzYWdlIG5leHQgdGltZSB0aGV5IGxvZ2luIHRvIHVwZGF0ZSB0aGVpciBwcm9maWxlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUwIiBuYW1lPSJ0aW1lIHpvbmUgdXBkYXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5QbGVhc2UgY2hlY2sgdGhlIHRpbWUgem9uZSBpbiB5b3VyIHVzZXIgcHJvZmlsZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MSIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TmV3ICRBUFBfTkFNRSBjb25mZXJlbmNlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUyIiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EZXRhaWxzOiZsdDtici8mZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTMiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPlN0YXJ0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU0IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5FbmQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTUiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkNoYW5nZWQgJEFQUF9OQU1FIGNvbmZlcmVuY2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTYiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPk9yZ2FuaXplcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NyIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2FuY2VsZWQgJEFQUF9OQU1FIGNvbmZlcmVuY2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTgiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSBjb25mZXJlbmNlIFJlbWluZGVyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU5IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+Q29tbXVuaXR5IHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjAiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TaG93IGNvbnRhY3QgZGF0YSB0byBldmVyeWJvZHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkFkZCBmaWVsZHMgb2YgaW50ZXJlc3QgdGhhdCB5b3Ugb2ZmZXIgb3IgdGhhdCB5b3UgYXJlIHNlYXJjaGluZyB0byBmaW5kIGludGVyZXN0aW5nIHBhcnRuZXJzIGZvciBhIGNvbmZlcmVuY2UuIENvbW1hIHNlcGFyYXRlIHRoZSB0ZXJtcyAoZm9yIGV4YW1wbGU6IE1lZGljYWwgU2VydmljZSwgSGVhbHRoIGFzc3VyYW5jZSwgLi4uKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYyIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+TXkgb2ZmZXJpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjMiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NeSBpbnRlcmVzdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2NCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2NSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlRpbWV6b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjYiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5GaWVsZHMgb2YgaW50ZXJlc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2NyIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkNvbnRhY3QgaW5mb3JtYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2OCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlNob3cgY29udGFjdCBkYXRhIHRvIGNvbnRhY3RzIG9ubHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2OSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlNob3cgY29udGFjdCBkYXRhIHRvIG5vYm9keTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTcwIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+TXkgUHJvZmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTcxIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+RWRpdCBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTcyIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2VhcmNoIHVzZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzMiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5XYXRjaCB5b3VyIHByb2ZpbGUgbGlrZSBvdGhlciBzZWUgeW91PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzQiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5FZGl0IHlvdXIgc2V0dGluZ3MsIGFkZCB5b3VyIGludGVyZXN0cyB0byBiZSBmb3VuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc1IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2VhcmNoIGZvciBvdGhlciB1c2VycyBhbmQgZXh0ZW5kIHlvdXIgbmV0d29yazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc2IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlNlYXJjaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc3IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlVzZXIgb2ZmZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzgiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+VXNlciBsb29rcyBmb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3OSIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5GcmVldGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgwIiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MSIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5UaW1lem9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgyIiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPk9mZmVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgzIiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlNlYXJjaHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5TZWFyY2hyZXN1bHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NSIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5BY3Rpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODYiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+QWRkIHRvIGNvbnRhY3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODciIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+U2VuZCBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODgiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+Q29udGFjdHMgYW5kIE1lc3NhZ2VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODkiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+UGVuZGluZyBjb250YWN0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkwIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+QWNjZXB0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTEiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5EZW55PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTIiIG5hbWU9InVzZXIgY29udGFjdCByZXF1ZXN0Ij4KKyAgICA8dmFsdWU+SGksPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTMiIG5hbWU9InVzZXIgY29udGFjdCByZXF1ZXN0Ij4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0byBhZGQgeW91IGFzIGNvbnRhY3QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTQiIG5hbWU9InVzZXIgY29udGFjdCByZXF1ZXN0Ij4KKyAgICA8dmFsdWU+Q2hlY2sgeW91ciBjb250YWN0IHJlcXVlc3RzIGluICRBUFBfTkFNRSBvciBjbGljayBvbiB0aG9zZSBsaW5rcyB0byBhY2NlcHQgb3IgZGVueSB0aGUgcmVxdWVzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk1IiBuYW1lPSJhZGQgdXNlciBjb250YWN0Ij4KKyAgICA8dmFsdWU+VGhpcyB1c2VyIGlzIGFscmVhZHkgaW4geW91ciBjb250YWN0IGxpc3Qgb3IgaGFzIHJlY2VpdmVkIGFuIGludml0YXRpb24gdG8geW91ciBjb250YWN0IGxpc3QgdGhhdCBpcyBub3QgYW5zd2VyZWQgeWV0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk2IiBuYW1lPSJ1c2VyIGNvbnRhY3QgbWFpbCI+CisgICAgPHZhbHVlPllvdXIgY29udGFjdCBsaXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTciIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5FZGl0IHlvdXIgY29udGFjdCBhbmQgbWVzc2FnZXMsJmx0O2JyLyZndDsgbWFuYWdlIHlvdXIgcGVuZGluZyBjb250YWN0cyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5OCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPmNvbmZpcm1lZCB5b3UgYXMgY29udGFjdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5OSIgbmFtZT0iY2hhdCBpbmZvIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMCIgbmFtZT0iY2hhdCBsb2cgaWNvbiI+CisgICAgPHZhbHVlPlNob3cgLyBDb3B5IGNoYXQgbG9nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDEiIG5hbWU9ImNoYXQgbG9nIHdpbmRvdyI+CisgICAgPHZhbHVlPkNoYXQgTG9nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkZyb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3ViamVjdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA2IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5NZXNzYWdlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA3IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5OZXcgTWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DbGljayB0byB3cml0ZSBhIG5ldyBtZXNzYWdlIHRvIGFueSBvZiB5b3VyIGNvbnRhY3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPldyaXRlIG5ldyBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTAiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjExIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TdWJqZWN0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjEyIiBuYW1lPSJ3aGl0ZWJvYXJkIGZ1bGwtZml0Ij4KKyAgICA8dmFsdWU+RW5hYmxlIGZ1bGwgZml0IGFuZCB0aGUgd2hpdGVib2FyZCB3aWxsIHpvb20gdGhlIHdob2xlIHdoaXRlYm9hcmQgc28gdGhhdCBhbGwmbHQ7YnIvJmd0O2RvY3VtZW50cyBhcmUgdmlzaWJsZSBhY2NvcmRpbmcgdG8gZWFjaCBwYXJ0aWNpcGFudHMgc2NyZWVuIHJlc29sdXRpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTMiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPktpY2sgdXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE0IiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IGtpY2sgeW91cnNlbGYgb3V0IG9mIHRoZSBjb25mZXJlbmNlIHJvb20hIElmIHlvdSB3YW50IHRvIGxlYXZlIGl0IGNsb3NlIHRoZSBicm93c2VyIG9yIHVzZSB0aGUgZXhpdCBidXR0b24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTUiIG5hbWU9ImtpY2stdXNlciI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkaXNjb25uZWN0IHRoaXMgdXNlciBmcm9tIHRoaXMgY29uZmVyZW5jZSByb29tPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE2IiBuYW1lPSJraWNrLXVzZXIiPgorICAgIDx2YWx1ZT5Db25maXJtIGFjdGlvbiAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNyIgbmFtZT0ia2ljay11c2VyIj4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBraWNrIGEgU3VwZXItTW9kZXJhdG9yIG91dCBvZiBhIHJvb20hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkJvb2sgY29uZmVyZW5jZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlN0YXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjAiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkVuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgYW4gb3B0aW9uYWwgcmVxdWVzdCBmb3IgbWVldGluZyB0byB0aGUgbWVzc2FnZSBhbmQgY3JlYXRlIGEgY29uZmVyZW5jZSByb29tLiBUaGUgRXZlbnQgaXMgdGhlbiBjb3BpZWQgaW4gdGhlIGNhbGVuZGFyIG9mIGV2ZXJ5IHBhcnRpY2lwYW50LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5JbmJveDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRyYXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoaXMgaXMgeW91ISBZb3UgY2Fubm90IGFkZCB5b3Vyc2VsZiBhcyB5b3VyIG93biBjb250YWN0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI2IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VGhlIHVzZXIgaXMgYWxyZWFkeSBkZW5pZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjciIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5UaGUgdXNlciBpcyBhbHJlYWR5IGFwcHJvdmVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI4IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VGhpcyB1c2VyIGNvbnRhY3QgaGFzaCBpcyBpbnZhbGlkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI5IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VXNlciBhZGRlZCB0byBjb250YWN0IGxpc3QhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzAiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Vc2VyIGRlbmllZCBhcyBjb250YWN0IGFuZCByZW1vdmVkIGZyb20gcGVuZGluZyBjb250YWN0IGxpc3QhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzEiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBzdWNoIGNvbnRhY3QhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzIiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Xb3VsZCB5b3UgcmVhbGx5IGxpa2UgdG8gcmVtb3ZlIHRoYXQgY29udGFjdD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkNvbmZpcm0gY29udGFjdCByZW1vdmFsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzQiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5EZWxldGUgY29udGFjdCBmcm9tIGxpc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNSIgbmFtZT0idXNlciBwcm9maWxlIj4KKyAgICA8dmFsdWU+VXNlciBQcm9maWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzYiIG5hbWU9InVzZXIgcHJvZmlsZSI+CisgICAgPHZhbHVlPlNob3cgdXNlciBwcm9maWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzciIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1lc3NhZ2VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlYXJjaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWxlY3QgYWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDAiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbGVjdCBub25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbGVjdCB1bnJlYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0MiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VsZWN0IHJlYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0MyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TW92ZSB0byBmb2xkZXIgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZCBuZXcgZm9sZGVyIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EZWxldGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGVsZXRlZCBtYWlscyBhcmUgc3RpbGwgaW4geW91ciB0cmFzaCBmb2xkZXIhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDciIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1hcmsgdW5yZWFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1hcmsgcmVhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BbnN3ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QW5zd2VyIGV2ZXJ5Ym9keTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Gb3J3YXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFjdGlvbnMgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTMiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5TZW5kIHByaXZhdGUgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Ob3RoaW5nIHNlbGVjdGVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Nb3ZlIHRvIEluYm94PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTYiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRlbGV0ZSAoZmluYWwpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTciIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoaXMgYWN0aW9uIGNhbm5vdCBiZSB1bmRvbmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZCBmb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1OSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIGZvbGRlcnMgYW5kIG9yZ2FuaXplIHlvdXIgbWVzc2FnZXMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjAiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZCBmb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSBmb2xkZXIiPgorICAgIDx2YWx1ZT5EZWxldGUgZm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSBmb2xkZXIiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IGRlbGV0ZSB0aGlzIGZvbGRlciwgdGhlcmUgYXJlIHN0aWxsIG1lc3NhZ2VzIGluc2lkZSEgRGVsZXRlIGZpcnN0IHRoZSBtZXNzYWdlcyBvciBtb3ZlIHRoZW0gdG8gYW5vdGhlciBmb2xkZXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSBmb2xkZXIiPgorICAgIDx2YWx1ZT5FZGl0IG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBmb2xkZXI/IFRoZXJlIGlzIG5vIHdheSB0byB1bmRvIHRoYXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjYiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Zb3VyIHJlcXVlc3Qgd2FzIHNlbmQgdG8gdGhlIHVzZXIuIFRoZSB1c2VyIHdpbGwgcmVjZWl2ZSBhIG5vdGlmaWNhdGlvbiB0byBhY2NlcHQgb3IgZGVueSB5b3VyIHJlcXVlc3QuIE9ubHkgYWNjZXB0ZWQgcmVxdWVzdHMgYXJlIGluIHlvdXIgY29udGFjdCBsaXN0IG9mIGNvdXJzZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPk1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2OCIgbmFtZT0idXNlciB2aWV3IHByb2ZpbGUiPgorICAgIDx2YWx1ZT5UaGUgdXNlciBkb2VzIG5vdCBzaGFyZSBoaXMgcGVyc29uYWwgY29udGFjdCBkYXRhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY5IiBuYW1lPSJ1c2VyIHZpZXcgcHJvZmlsZSI+CisgICAgPHZhbHVlPlRoZSB1c2VyIGRvZXMgc2hhcmUgaGlzIHBlcnNvbmFsIGNvbnRhY3QgZGF0YSBvbmx5IHRvIGNvbnRhY3RzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjcwIiBuYW1lPSJ1c2VyIHZpZXcgcHJvZmlsZSI+CisgICAgPHZhbHVlPkFkZHJlc3MgJmFtcDsgUGhvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3MSIgbmFtZT0iZXJyb3IgY29kZSI+CisgICAgPHZhbHVlPllvdSBpbnZpdGF0aW9uIGNvZGUgaXMgbm8gdmFsaWQsIHRoZSBjb2RlIGlzIG9ubHkgdmFsaWQgZHVyaW5nIHRoaXMgc3BlY2lmaWMgZGF0ZSBhbmQgdGltZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3MiIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPlRoaXMgZXZlbnQgaXMgY29ubmVjdGVkIHRvIHNldmVyYWwgY2FsZW5kYXJzIG9mIG90aGVyIHVzZXJzLiBZb3VyIGNoYW5nZSB3aWxsIGFsc28gdXBkYXRlIHRoZWlyIGNhbGVuZGFyLiBXb3VsZCB5b3UgcmVhbGx5IGxpa2UgdG8gdXBkYXRlIHRoZSBldmVudD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3MyIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPkNvbmZpcm0gdXBkYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzQiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5BbGxvdyBjb250YWN0IHRvIHNlZSBteSBjYWxlbmRhciAodmlldyBvbmx5KTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc1IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+RG8gbm90IHNoYXJlIGNhbGVuZGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzYiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5DYWxlbmRhciBvZiBjb250YWN0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+WW91ciBjb250YWN0cyBuZWVkIHRvIGFwcHJvdmUgeW91IGZpcnN0IHRvIGJlIGFibGUgdG8gc2VlIHRoZWlyIGNhbGVuZGFyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc4IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBzdG9yZSBvciBkZWxldGUgZXZlbnRzIGZyb20gb3RoZXIgY2FsZW5kYXJzIHRoZW4geW91ciBvd24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzkiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5TaG93IG15IG93biBjYWxlbmRhciBhZ2FpbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4MCIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPlRoaXMgZXZlbnQgaXMgY29ubmVjdGVkIHRvIHNldmVyYWwgY2FsZW5kYXJzIG9mIG90aGVyIHVzZXJzLiBZb3VyIGFjdGlvbiB3aWxsIGFsc28gZGVsZXRlIHRoZSBldmVudCBmcm9tIHRoZWlyIGNhbGVuZGFyLiBXb3VsZCB5b3UgcmVhbGx5IGxpa2UgdG8gZGVsZXRlIHRoZSBldmVudD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4MSIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPkNvbmZpcm0gYWN0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODIiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5FbnRlciByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODMiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5BY2Nlc3MgdGhlIGNvbmZlcmVuY2Ugcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBhIGNvbmZlcmVuY2Ugcm9vbSBhbmQgZXZlbnQgYm9va2VkIHdpdGggdGhpcyBwcml2YXRlIG1lc3NhZ2UuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODUiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0byBzdG9yZSB0aGUgZXZlbnQgZmlyc3QhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODYiIG5hbWU9ImFjY2VzcyByb29tcyBlcnJvciI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIHN1Y2ggcm9vbSBhdmFpbGFibGUuIFRoZSBldmVudCBpbiB0aGUgY2FsZW5kYXIgYW5kIGNvbm5lY3RlZCByb29tIGlzIGFscmVhZHkgZGVsZXRlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NyIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+Q2hvb3NlIHlvdXIgbmlja25hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4OCIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+Rmlyc3RuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODkiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPkxhc3RuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTAiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPkVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTEiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPk9rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTIiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPk1pbmltdW0gbGVuZ3RoIDQgY2hhcnMhIEZvciBib3RoLCBmaXJzdG5hbWUgYW5kIGxhc3RuYW1lLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkzIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5QbGVhc2UgZW50ZXIgYSB2YWxpZCBlbWFpbCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5NCIgbmFtZT0iYXV0aCBmcm9tIj4KKyAgICA8dmFsdWU+RmFjZWJvb2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5NSIgbmFtZT0iYXV0aCBmb3JtIj4KKyAgICA8dmFsdWU+TG9naW4gd2l0aCB5b3VyIEZhY2Vib29rIGFjY291bnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5NiIgbmFtZT0idmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+TWVtYmVyIHNpbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTciIG5hbWU9ImRpcmVjdCBsb2dpbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+WW91J3ZlIGxvZ2dlZCB3aXRoIHlvdXIgRmFjZWJvb2sgYWNjb3VudC4gWW91IHNob3VsZCB1cGRhdGUgeW91ciBwcm9maWxlIHdpdGggdGhlIGNvcnJlY3QgZW1haWwuIE90aGVyd2lzZSB5b3Ugd2lsbCBub3QgcmVjZWl2ZSBpbnZpdGF0aW9ucyBhbmQgcHJpdmF0ZSBtZXNzYWdlcyBmcm9tIG90aGVyIHVzZXJzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk4IiBuYW1lPSJkaXJlY3QgbG9naW4gbWVzc2FnZSBoZWFkZXIiPgorICAgIDx2YWx1ZT5NZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTkiIG5hbWU9ImRpcmVjdCBsb2dpbiBtZXNzYWdlIGNoZWNrYm94IGNvbnRyb2wiPgorICAgIDx2YWx1ZT5EbyBub3Qgc2hvdyB1cGRhdGUgcHJvZmlsZSBtZXNzYWdlIGFnYWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDAiIG5hbWU9InByb2ZpbGUgc2V0dGluZ3MgYnV0dG9uIj4KKyAgICA8dmFsdWU+bW9yZSBkaXNwbGF5IG9wdGlvbnMgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk5ldyBwcml2YXRlIG1lc3NhZ2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkNsaWNrIGhlcmUgdG8gdmlzaXQgeW91ciBwcm9maWxlIHRvIHNlZSB0aGUgZnVsbCBtZXNzYWdlIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5SZXBseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA0IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5Sb29tcyBhbmQgY2hhdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwNSIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+TXkgcm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwNiIgbmFtZT0ibXkgcm9vbXMiPgorICAgIDx2YWx1ZT5NeSBjb25mZXJlbmNlIHJvb20gKGZvciAxLTE2IHVzZXJzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA3IiBuYW1lPSJteSByb29tcyI+CisgICAgPHZhbHVlPk15IHdlYmluYXIgcm9vbSAoZm9yIDEtMTIwIHVzZXJzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA4IiBuYW1lPSJyb29tIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+T3duZXIgSWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwOSIgbmFtZT0ibG9naW4gZXJyb3IiPgorICAgIDx2YWx1ZT5QbGVhc2UgZW50ZXIgYSBwYXNzd29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzEwIiBuYW1lPSJsb2dpbiBlcnJvciI+CisgICAgPHZhbHVlPllvdSBuZWVkIGFuIGFjY291bnQgd2l0aCBVc2VyLUxldmVsIFVzZXIsIE1vZGVyYXRvciBvciBBZG1pbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzExIiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+V2ViLVNlcnZpY2UgKG9ubHkgYWNjZXNzIHZpYSBTT0FQKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzEyIiBuYW1lPSJ1cGxvYWQgZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkRvIGRpcmVjdGx5IGxvYWQgdG8gd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzEzIiBuYW1lPSJ3aGl0ZWJvYXJkIGNsb3NlIGNvbmZpcm1hdGlvbiI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byByZW1vdmUgdGhpcyB3aGl0ZWJvYXJkPyBUaGlzIGFjdGlvbiBjYW5ub3QgYmUgdW5kb25lITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE0IiBuYW1lPSJ3aGl0ZWJvYXJkIGxvYWQgV01MIj4KKyAgICA8dmFsdWU+TG9hZCB0byB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTUiIG5hbWU9InJlY29yZGluZyBmbGFnIj4KKyAgICA8dmFsdWU+RG8gbm90IGZvcmdldCBzdGFydCByZWNvcmRpbmchIE9uZSB1c2VyIHBlciByb29tIGFsd2F5cyBuZWVkcyB0byBzdGFydCBpdCB0byBoYXZlIHRoZSByZWNvcmRpbmcgYWZ0ZXJ3YXJkcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxNiIgbmFtZT0icmVjb3JkaW5nIGZsYWciPgorICAgIDx2YWx1ZT5TdGFydCBSZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxNyIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT5BcnJvdzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE4IiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPkNpcmNsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE5IiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPkxpbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyMCIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT5TcXVhcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyMSIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT5UcmlhbmdsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIyIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+VGV4dC9Ob3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjMiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5DbGlwYXJ0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI0IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+RHJhdyBGcmVlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjUiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5TZWxlY3QvTW92ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI2IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+RHJhdyBTaGFwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI3IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+Q3V0L01vdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyOCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlpvb20gSW4vT3V0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjkiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5QcmludDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMwIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+VW5kbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMxIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+VHJhc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMiIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkFkZCBHcmlkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzMiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5TaGFyZSBGaWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzQiIG5hbWU9Imljb24gc3VibWVudSI+CisgICAgPHZhbHVlPlNlbGVjdCBTaGFwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM1IiBuYW1lPSJpY29uIHN1Ym1lbnUiPgorICAgIDx2YWx1ZT5TZWxlY3QgQ2xpcGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM2IiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+Q29weTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM3IiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+Q3V0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzgiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5QYXN0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM5IiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+RGVsZXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDAiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoZSBjb21wbGV0ZSBjb250ZW50IG9uIHRoZSB3aGl0ZWJvYXJkPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQxIiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+TG9hZCBkaXJlY3RseSB0byB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDIiIG5hbWU9ImF0dGVuZGVlcyI+CisgICAgPHZhbHVlPkF0dGVuZGVlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQzIiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5BdHRlbmRlZSBNYW5hZ2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDQiIG5hbWU9ImF0ZW5kZWUgbWFuYWdlciI+CisgICAgPHZhbHVlPlByZXNlbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NSIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+UmVtb3RlIENvbnRyb2xsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDYiIG5hbWU9ImF0ZW5kZWUgbWFuYWdlciI+CisgICAgPHZhbHVlPkVqZWN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDciIG5hbWU9ImNoYXQiPgorICAgIDx2YWx1ZT5DaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDgiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPkludml0ZSBBdHRlbmRlZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0OSIgbmFtZT0iaW52aXRlIGF0dGVuZGVlIj4KKyAgICA8dmFsdWU+QnkgRW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1MCIgbmFtZT0iaW52aXRlIGF0dGVuZGVlIj4KKyAgICA8dmFsdWU+VXNlciBpcyBtb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1MSIgbmFtZT0iaW52aXRlIGF0dGVuZGVlIj4KKyAgICA8dmFsdWU+VXNlciBoYXMgd2ViY2FtIHN3aXRjaGVkIG9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTIiIG5hbWU9ImZpbGxfb3B0aW9uIj4KKyAgICA8dmFsdWU+RGVhY3RpdmF0ZSBzaGFwZSBmaWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTMiIG5hbWU9ImZpbGxfb3B0aW9uIj4KKyAgICA8dmFsdWU+QWN0aXZhdGUgc2hhcGUgZmlsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU0IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+U25hcCB0byBHcmlkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTUiIG5hbWU9ImFsbG93X3JlY29yZGluZyI+CisgICAgPHZhbHVlPkFsbG93IHJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU2IiBuYW1lPSJ3YWl0X2Zvcl9yZWNvcmRpbmciPgorICAgIDx2YWx1ZT5XYWl0IGZvciByZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NyIgbmFtZT0iaGlkZV90b3BfYmFyIj4KKyAgICA8dmFsdWU+SGlkZSB0b3BiYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1OCIgbmFtZT0iZmlsZUV4cGxvcmVyIj4KKyAgICA8dmFsdWU+UGxheSB2aWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU5IiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGUgY29udGVudCBvbiB0aGUgY3VycmVudCBzbGlkZT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2MCIgbmFtZT0iYWN0aXZpdHlfd2luZG93Ij4KKyAgICA8dmFsdWU+QWNjZXB0IGFuZCBncmFudCB1c2VyIHJpZ2h0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjEiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPkRlbnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2MiIgbmFtZT0iYWN0aXZpdHlfd2luZG93Ij4KKyAgICA8dmFsdWU+STwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYzIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT5BY3Rpdml0aWVzIGFuZCBhY3Rpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjQiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5SZW1vdmUgd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY1IiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgdGhlIG1vZGVyYXRpb24gb3IgdGhlIHJpZ2h0IHRvIGRyYXcgb24gdGhlIHdoaXRlYm9hcmQgdG8gcmVtb3ZlIHdoaXRlYm9hcmRzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY2IiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+Tm90IGFsbG93ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NyIgbmFtZT0idXNlcl9sZWZ0X2FjdF9tc2ciPgorICAgIDx2YWx1ZT5oYXMgbGVmdCB0aGUgcm9vbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2OCIgbmFtZT0iY2xpcGFydCBpY29ucyI+CisgICAgPHZhbHVlPk1hdGggaWNvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2OSIgbmFtZT0iY2xpcGFydCBpY29ucyI+CisgICAgPHZhbHVlPk5vIGNhdGVnb3J5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzAiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPkNvbG9yLVN0eWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzEiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPlF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MiIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+RG9tYWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzMiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnZpc2l0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzQiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnJlZG9yYW5nZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc1IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5tZWRpdW1zZWFncmVlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc2IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5zdGVlbGJsdWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NyIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+bGlnaHRzdGVlbGJsdWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3OCIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+Z29sZGVucmVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzkiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnNpbHZlcmdyYXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4MCIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+dXNlcmRlZmluZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4MSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+YmVzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgyIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT51cGxvYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4MyIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+bWVkaXVtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODQiIG5hbWU9Im11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NSIgbmFtZT0idW5tdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+VW5tdXRlIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NiIgbmFtZT0iZ2l2ZSBleGNsdXNpdmUgYXVkaW8iPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgb2Ygb3RoZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODciIG5hbWU9Im11dGUgc2VsZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+WW91IGFyZSBnbG9iYWxseSBtdXRlZCBieSB0aGUgbW9kZXJhdG9yLiBZb3UgY2Fubm90IHVubXV0ZSB5b3Vyc2VsZiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4OCIgbmFtZT0ibXV0ZSBzZWxmIGNvbmZpcm0gbWVzc2FnZSB0aXRsZSI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBnbG9iYWxseT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4OSIgbmFtZT0ibXV0ZSBzZWxmIGNvbmZpcm0gbWVzc2FnZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIG11dGUgeW91cnNlbGYgZ2xvYmFsbHk/IE5vIG90aGVyIHVzZXIgd2lsbCBoZWFyIHlvdSBhbnltb3JlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkwIiBuYW1lPSJtdXRlIG90aGVycyBjb25maXJtIG1lc3NhZ2UgdGl0bGUiPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgbG9jYWxseT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5MSIgbmFtZT0ibXV0ZSBvdGhlcnMgY29uZmlybSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIG11dGUgdGhpcyBtaWNyb3Bob25lPyBZb3UgY2FuIG9ubHkgbXV0ZSBpdCBsb2NhbGx5IG9uIHlvdXIgc2NyZWVuLiBJdCBoYXMgbm8gZWZmZWN0IHRvIGhvdyBvdGhlciB1c2VycyBoZWFyIHRoaXMgdXNlci4gT25seSBtb2RlcmF0b3JzIGNhbiB0dXJuIGl0IG9mZiBnbG9iYWxseSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5MiIgbmFtZT0ibXV0ZSBvdGhlcnMgY29uZmlybSBtZXNzYWdlIHRpdGxlIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIG9mZiBnbG9iYWxseT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5MyIgbmFtZT0ibXV0ZSBvdGhlcnMgbW9kZXJhdG9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gbXV0ZSB0aGlzIHVzZXIgZ2xvYmFsbHk/IE5vIG90aGVyIHVzZXIgd2lsbCBoZWFyIGhpbSBhbnltb3JlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk0IiBuYW1lPSJtdXRlIHN0YXR1cyBpY29ucyI+CisgICAgPHZhbHVlPllvdXIgc291bmQgaXMgb24uIENsaWNrIGhlcmUgdG8gc2VuZCBtb2RlcmF0b3IgbWVzc2FnZSB0byBtdXRlIHlvdXIgbWljcm9waG9uZSBnbG9iYWxseSAoaW4gdGhlIGNvbXBsZXRlIGNvbmZlcmVuY2Ugcm9vbSkgb2ZmITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk1IiBuYW1lPSJtdXRlIHN0YXR1cyBpY29ucyI+CisgICAgPHZhbHVlPllvdXIgc291bmQgaXMgb2ZmLiBDbGljayBoZXJlIHRvIHNlbmQgbW9kZXJhdG9yIG1lc3NhZ2UgdG8gdW5tdXRlIHlvdXIgbWljcm9waG9uZSBnbG9iYWxseSAoaW4gdGhlIGNvbXBsZXRlIGNvbmZlcmVuY2Ugcm9vbSkgb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTYiIG5hbWU9Im11dGUgYXBwbHkgc2VsZiBvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0aGF0IHRoZSBtb2RlcmF0b3IgbXV0ZXMgbXkgbWljcm9waG9uZSBnbG9iYWxseS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5NyIgbmFtZT0ibXV0ZSBhcHBseSBzZWxmIG9mZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0aGF0IHRoZSBtb2RlcmF0b3IgdW5tdXRlcyBteSBtaWNyb3Bob25lIGdsb2JhbGx5LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk4IiBuYW1lPSJtdXRlIGFwcGx5IG9mIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53YW50IHRoYXQgdGhlIG1vZGVyYXRvciB1bm11dGVzIGhpcy9oZXIgbWljcm9waG9uZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5OSIgbmFtZT0ibXV0ZSBhcHBseSBvZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+d2FudCB0aGF0IHRoZSBtb2RlcmF0b3IgbXV0ZXMgaGlzL2hlciBtaWNyb3Bob25lLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDAwIiBuYW1lPSJtdXRlIHN0YXR1cyBpY29ucyI+CisgICAgPHZhbHVlPlVubXV0ZSBtaWNyb3Bob25lLiBDbGljayBoZXJlIHRvIG11dGUgaGlzL2hlciBtaWNyb3Bob25lIGdsb2JhbGx5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDAxIiBuYW1lPSJtdXRlIHN0YXR1cyBpY29ucyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZS4gQ2xpY2sgaGVyZSB0byB1bm11dGUgaGlzL2hlciBtaWNyb3Bob25lIGdsb2JhbGx5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDAyIiBuYW1lPSJtdXRlIHNlbGYgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoaXMgdXNlciBpcyBnbG9iYWxseSBtdXRlZCBieSB0aGUgbW9kZXJhdG9yLiBZb3UgY2Fubm90IHVubXV0ZSBoaW0hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDMiIG5hbWU9Im11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5NdXRlIHlvdXIgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA0IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5Vbm11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDUiIG5hbWU9Im11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwNiIgbmFtZT0idW5tdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+VW5tdXRlIG1pY3JvcGhvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwNyIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA4IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5Vbm11dGUgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA5IiBuYW1lPSJtdXRlIG1vZGVyYXRvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+T25seSBtb2RlcmF0b3JzIGNhbiBtdXRlIG9yIHVubXV0ZSBhbiB1c2VyIGdsb2JhbGx5ISBUbyBtdXRlIHlvdXIgb3duIG1pY3JvcGhvbmU6IFBsZWFzZSB1c2UgdGhlIG1pY3JvcGhvbmUgaWNvbiBpbiB5b3VyIHZpZGVvIHBvZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMCIgbmFtZT0icG9sbF9uYW1lIj4KKyAgICA8dmFsdWU+UG9sbCBOYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTEiIG5hbWU9InBvbGxfbmFtZSI+CisgICAgPHZhbHVlPllvdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDEyIiBuYW1lPSJhcmNoaXZlZF9wb2xscyI+CisgICAgPHZhbHVlPkFyY2hpZXZlZCBQb2xsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDEzIiBuYW1lPSJhY3RpdmVfcG9sbCI+CisgICAgPHZhbHVlPmFjdGl2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE0IiBuYW1lPSJjaGFydF9zaW1wbGUiPgorICAgIDx2YWx1ZT5TaW1wbGUgQ2hhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNSIgbmFtZT0iY2hhcnRfcGllIj4KKyAgICA8dmFsdWU+UGllIENoYXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTYiIG5hbWU9InNpZ25fdXBfdmFsaWRhdGlvbiI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBlbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE3IiBuYW1lPSJjaGF0X25vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPk5ldyBtZXNzYWdlKHMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTgiIG5hbWU9InBvbGxfY2xvc2UiPgorICAgIDx2YWx1ZT5DbG9zZSBQb2xsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTkiIG5hbWU9InBvbGxfY2xvc2VfY29uZmlybSI+CisgICAgPHZhbHVlPkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjbG9zZSB0aGlzIFBvbGw/IE5vIG9uZSB3aWxsIGJlIGFibGUgdG8gdm90ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIwIiBuYW1lPSJwb2xsX2RlbGV0ZSI+CisgICAgPHZhbHVlPkRlbGV0ZSBQb2xsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjEiIG5hbWU9InBvbGxfZGVsZXRlX2NvbmZpcm0iPgorICAgIDx2YWx1ZT5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgUG9sbD8gVGhlIHJlc3VsdHMgd2lsbCBiZSBkZWxldGVkIGFzIHdlbGwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjIiIG5hbWU9Imxhbmd1YWdlX2NvZGUiPgorICAgIDx2YWx1ZT5MYW5ndWFnZSBJU08gQ29kZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIzIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fcGVybWlzc2lvbiI+CisgICAgPHZhbHVlPkFsbG93L0RlbnkgcmlnaHQgdG8gZ2l2ZSBleGNsdXNpdmUgYXVkaW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjQiIG5hbWU9ImFsbG93X2V4Y2x1c2l2ZV9hdWRpb19wZXJtaXNzaW9uIj4KKyAgICA8dmFsdWU+QWxsb3cgdXNlciB0byBnaXZlIGV4Y2x1c2l2ZSBhdWRpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI1IiBuYW1lPSJkZW55X2V4Y2x1c2l2ZV9hdWRpb19wZXJtaXNzaW9uIj4KKyAgICA8dmFsdWU+RGVueSB1c2VyIHRvIGdpdmUgZXhjbHVzaXZlIGF1ZGlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjYiIG5hbWU9ImV4Y2xfYXVkaW8gYXBwbHkgc2VsZiBvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0byBnZXQgYSBwZXJtaXNzaW9uIGZvciBleGNsdXNpdmUgYXVkaW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjciIG5hbWU9ImV4Y2xfYXVkaW8gYXBwbHkgb2YgbWVzc2FnZSI+CisgICAgPHZhbHVlPndhbnQgdGhhdCB0aGUgbW9kZXJhdG9yIGdpdmVzIG1lIGEgcGVybWlzc2lvbiBmb3IgZXhjbHVzaXZlIGF1ZGlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI4IiBuYW1lPSJleGNsX2F1ZGlvIHN0YXR1cyBpY29ucyI+CisgICAgPHZhbHVlPkdpdmUgYSBwZXJtaXNzaW9uIGZvciBleGNsdXNpdmUgYXVkaW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjkiIG5hbWU9ImNhbV9yZXNvbHV0aW9uIj4KKyAgICA8dmFsdWU+Q2FtIHJlc29sdXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzMCIgbmFtZT0iY2FtX3Jlc29sdXRpb25faW5mbyI+CisgICAgPHZhbHVlPkNoYW5naW5nIHRoZSByZXNvbHV0aW9uIGFmZmVjdHMgYmFuZHdpZHRoLCBiaWdnZXIgcGljdHVyZSBuZWVkcyBtb3JlIGJhbmR3aXRoITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMxIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fZXJyb3IiPgorICAgIDx2YWx1ZT5Zb3UgZG9uJ3QgaGF2ZSB0aGUgcmlnaHQgdG8gZ2l2ZSB5b3Vyc2VsZiBvciBvdGhlcnMgZXhjbHVzaXZlIGF1ZGlvLiBZb3UgbmVlZCB0byBhcHBseSBmb3IgdGhlIHJpZ2h0IGZyb20gdGhlIG1vZGVyYXRvciBvciBhc2sgdGhlIG1vZGVyYXRvciB0byBnaXZlIHlvdSBleGNsdXNpdmUgYXVkaW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzIiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19hc2siPgorICAgIDx2YWx1ZT5JIHdvdWxkIGxpa2UgdG8gZ2V0IHRoZSByaWdodCBmb3IgZXhjbHVzaXZlIGF1ZGlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzMiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19hY3Rpb24iPgorICAgIDx2YWx1ZT5HaXZlIGV4Y2x1c2l2ZSBhdWRpbyB0byBtZSAoYWx0ZXJuYXRpdmVseSBjbGljayBvbiB5b3VyIHZpZGVvIHBvZCBvciBwcmVzcyBGMTIpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzQiIG5hbWU9Im1pY3JvIGlzIG9uIj4KKyAgICA8dmFsdWU+TWljcm9waG9uZSBpcyBvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNSIgbmFtZT0ibWljcm8gaXMgb2ZmIj4KKyAgICA8dmFsdWU+TWljcm9waG9uZSBpcyBtdXRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM2IiBuYW1lPSJoaWRlX2NoYXQiPgorICAgIDx2YWx1ZT5IaWRlIGNoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNyIgbmFtZT0iaGlkZV9hY3Rpdml0aWVzX2FuZF9hY3Rpb25zIj4KKyAgICA8dmFsdWU+SGlkZSBhY3Rpdml0aWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzgiIG5hbWU9ImhpZGVfZmlsZXNfZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5IaWRlIGZpbGVzIGV4cGxvcmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzkiIG5hbWU9ImhpZGVfYWN0aW9uc19tZW51Ij4KKyAgICA8dmFsdWU+SGlkZSBhY3Rpb25zIG1lbnU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MCIgbmFtZT0iaGlkZV9zY3JlZW5fc2hhcmluZyI+CisgICAgPHZhbHVlPkhpZGUgc2NyZWVuIHNoYXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MSIgbmFtZT0iaGlkZV93aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+SGlkZSB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDIiIG5hbWU9InNob3cgbWljcm9waG9uZSBzdGF0dXMiPgorICAgIDx2YWx1ZT5TaG93IG1pY3JvIHN0YXR1cyBpbiB2aWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQzIiBuYW1lPSJsYXlvdXRfb3B0aW9ucyI+CisgICAgPHZhbHVlPkxheW91dCBvcHRpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDQiIG5hbWU9ImNhbGVuZGFyIG5ldyBidXR0b24iPgorICAgIDx2YWx1ZT5OZXcgRXZlbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0NSIgbmFtZT0iY2FsZW5kYXIgcGFzc3dvcmQgaW5mbyB0ZXh0Ij4KKyAgICA8dmFsdWU+UGFzc3dvcmQgcHJvdGVjdGVkIGFyZSB0aGUgbGlua3MgdG8gdGhlIGNvbmZlcmVuY2UgdGhhdCBhcmUgc2VuZCB0byB0aGUgcGFydGljaXBlbnRzIHdoZW4geW91IHNhdmUgdGhlIGNhbGVuZGFyIGV2ZW50LCBub3QgdGhlIHJvb20hIFRoYXQgbWVhbnMgaWYgeW91IHNhdmUgdGhlIGV2ZW50IG11bHRpcGxlIHRpbWVzIGJ1dCB3aXRoIGRpZmZlcmVudCBwYXNzd29yZHMgZXZlcnkgcGFydGljaXBlbnQgcmVjZWl2ZXMgYSBuZXcgbGluayB0aGF0IGhhcyBhIGRpZmZlcmVudCBwYXNzd29yZC4gQnV0IG9sZCBsaW5rcyBzdGlsbCB3b3JrIG9uY2Ugc2VuZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0NiIgbmFtZT0iY2FsZW5kYXIgZWRpdCBidXR0b24iPgorICAgIDx2YWx1ZT5FZGl0IGRldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0NyIgbmFtZT0ic2lwIHNob3cgZGlhbGVyIj4KKyAgICA8dmFsdWU+U2hvdyBzaXAgZGlhbGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDgiIG5hbWU9InNpcCBjYWxsIj4KKyAgICA8dmFsdWU+Q2FsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ5IiBuYW1lPSJjYWxlbmRhciBjb250YWN0IGxpc3QiPgorICAgIDx2YWx1ZT5TaG93IGNhbGVuZGFyIGV2ZW50cyBvZiBjb250YWN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTAiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPllvdXIgaG9tZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MSIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+UGxhbiB5b3VyIG1lZXRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTIiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPldhdGNoIHJlY29yZGluZyBhbmQgaW50ZXJ2aWV3czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUzIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5DaG9vc2UgYW5kIHN0YXJ0IGEgd2ViLWNvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1NCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIHVzZXJzIGFuZCByaWdodHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1NSIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIGNvbm5lY3Rpb25zIGFuZCBraWNrIHVzZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTYiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSB1c2VyZ3JvdXBzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTciIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBjb25mZXJlbmNlIHJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTgiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBzeXN0ZW0gc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1OSIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIGxhYmVscyBhbmQgd29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYwIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgTERBUCBhbmQgQURTIGNvbmZpZ3VyYXRpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjEiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPkV4cG9ydC9JbXBvcnQgU3lzdGVtIEJhY2t1cHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPllvdSBuZWVkIG1vZGVyYXRpb24gb3IgdGhlIHJpZ2h0IHRvIGRyYXcgb24gd2hpdGVib2FyZCB0byB1cGxvYWQsIGFkZCwgZGVsZXRlIG9yIGxvYWQgZmlsZXMgYW5kIGZvbGRlcnMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjMiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5FZGl0IHRleHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2NCIgbmFtZT0ic2FsdXRhdGlvbiI+CisgICAgPHZhbHVlPlByb2Y8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2NSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5QdWJsaXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjYiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U3RhcnQgUHVibGlzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY3IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlN0b3AgUHVibGlzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY4IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkhvc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2OSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5QdWJsaXNoIEFwcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDcwIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlB1Ymxpc2ggSWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5SZWR1Y2UgdGhlIHdpZHRoIG9mIHRoZSBTaGFyaW5nU2NyZWVuIGJlZm9yZSB5b3UgdHJ5IHRvIG1vdmUgaXQgbGVmdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDcyIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHVjZSB0aGUgaGVpZ2h0IG9mIHRoZSBTaGFyaW5nU2NyZWVuIGJlZm9yZSB5b3UgdHJ5IHRvIG1vdmUgaXQgYm90dG9tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzMiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UmVkdWNlIHRoZSB4IG9mIHRoZSBTaGFyaW5nU2NyZWVuIGJlZm9yZSB5b3UgdHJ5IHRvIG1ha2UgaXQgd2lkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3NCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5SZWR1Y2UgdGhlIHkgb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbWFrZSBpdCBoaWdoZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3NSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5GaWxsIHRoZXNlIHNldHRpbmdzIHN0cmVhbSB5b3VyIHNjcmVlbiBkYXRhIHRvIDN0aCBwYXJ0eSBwcm92aWRlcnMgbGlrZSBqdXN0aW4udHY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3NiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5QbGVhc2Ugc3RhcnQgU2NyZWVuIHNoYXJpbmcgdG8gYmUgYWJsZSB0byBwdWJsaXNoIGl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzciIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+TW9kZXJhdG9yIHBlcm1pc3Npb24gcmVxdWlyZWQgdG8gc3RhcnQgcmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzgiIG5hbWU9Im5vIHJpZ2h0IGZvciBleGNsdXNpdmUgYXVkaW8iPgorICAgIDx2YWx1ZT5Zb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFwcGx5IGV4Y2x1c2l2ZSBhdWRpbyB0byBhbnkgcGFydGljaXBhbnQuIFlvdSBuZWVkIG1vZGVyYXRpb24gcm9sZSBvciB0aGUgcmlnaHQgZm9yIGV4Y2x1c2l2ZSBhdWRpbyB0byBtYWtlIGFueSBtaWNyb3Bob25lIGV4Y2x1c2l2ZSB0dXJuZWQgb24uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc5IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5VcGxvYWQgbmV3IGZpbGUgdG8gZmlsZSBleHBsb3JlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgwIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5PcGVuIG5ldyBkaWFsb2cgd2l0aCBzaGFyaW5nIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODEiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkFuIGV4aXN0aW5nIG1vZGVyYXRvciBtdXN0IGFwcHJvdmUgaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MiIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+QXNrIG1vZGVyYXRvciB0byBzaGFyZSB5b3VyIHdlYmNhbS9taWNybzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgzIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5HYXRoZXIgZmVlZGJhY2sgYnkgY3JlYXRpbmcgYSBwb2xsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODQiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlBhc3QgYW5kIGN1cnJlbnQgcG9sbCByZXN1bHRzIGFzIGNoYXJ0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg1IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5Wb3RlIGlmIHRoZXJlIGlzIGEgcG9sbCBmb3IgdGhpcyBjb25mZXJlbmNlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NiIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+RWRpdCBjYW0gYW5kIG1pYyBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg3IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5Db25maXJtIGFuZCBsZWF2ZSB0aGUgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg4IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5DYWxsIGV4dGVybmFsIHBlb3BsZSB2aWEgVm9JUC9TSVA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4OSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+U2VuZCBhbiBlbWFpbCB3aXRoIGEgZGlyZWN0IGxpbmsgdG8gdGhpcyByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTAiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkNoYW5nZSB5b3VyIHdoaXRlYm9hcmQgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MSIgbmFtZT0iYmFja3VwIGFkbWluIj4KKyAgICA8dmFsdWU+TWF4IHVwbG9hZCBzaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTIiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkFzayBtb2RlcmF0b3IgdG8gc2hhcmUgeW91ciB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTMiIG5hbWU9InByaXZhdGUgY2hhdCI+CisgICAgPHZhbHVlPlN0YXJ0IFByaXZhdGUgQ2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk0IiBuYW1lPSJhbGxfcHJpdmF0ZV9jaGF0Ij4KKyAgICA8dmFsdWU+QWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTUiIG5hbWU9InByaXZhdGUgY2hhdCI+CisgICAgPHZhbHVlPllvdSBjYW5ub3Qgc3RhcnQgYSBwcml2YXRlIGNoYXQgd2l0aCB5b3Vyc2VsZi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NiIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+WW91J3ZlIGFscmVhZHkgc3RhcnRlZCBhIHByaXZhdGUgY2hhdCB3aXRoIHRoaXMgcGFydGljaXBhbnQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTciIG5hbWU9InByaXZhdGUgY2hhdCI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBwcml2YXRlIGNoYXQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTgiIG5hbWU9IlNlcnZlcnMiPgorICAgIDx2YWx1ZT5TZXJ2ZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTkiIG5hbWU9IlNlcnZlcnMiPgorICAgIDx2YWx1ZT5TZXJ2ZXJzIHBhcnRpY2lwYXRpbmcgaW4gY2x1c3RlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAwIiBuYW1lPSJTZXJ2ZXIgbmFtZSI+CisgICAgPHZhbHVlPlNlcnZlciBOYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDEiIG5hbWU9IlNlcnZlciBBZGRyZXNzIj4KKyAgICA8dmFsdWU+U2VydmVyIEFkZHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMiIgbmFtZT0iU2VydmVyIGRldGFpbHMiPgorICAgIDx2YWx1ZT5TZXJ2ZXIgZGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAzIiBuYW1lPSJTZW5kIFNNUyI+CisgICAgPHZhbHVlPlNlbmQgU01TPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDQiIG5hbWU9InB1Ymxpc2hpbmdfbWVzc2FnZSI+CisgICAgPHZhbHVlPlB1Ymxpc2hpbmcuIFVzZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDUiIG5hbWU9ImNtZF9saW5lX2FkbWluIj4KKyAgICA8dmFsdWU+VG8gc2F2ZSB0aW1lIGFuZCBpbnRlcm5ldCB0cmFmZmljIHlvdSBjYW4gdXNlIGNvbW1hbmQgbGluZSBhZG1pbiB0byBiYWNrdXAvcmVzdG9yZS91cGdyYWRlOlxuIDEpIGdvIHRvIE9NIGluc3RhbGwgZGlyIChmb3IgZXguIC9vcHQvcmVkNSkgXG4gMikgc3RvcCBPTSAoZm9yIGV4LiAuL3JlZDUtc2h1dGRvd24uc2gpXG4gMykgLi9hZG1pbi5zaCAtYiAtZmlsZSB+L3RvZGF5X29tX2JhY2t1cC56aXAgKGNyZWF0ZSBiYWNrdXAgb2YgY3VycmVudCBPTSlcbiA0KSBkb3dubG9hZCBhcmNoaXZlIHdpdGggbmV3IE9NXG4gNSkgbXYgL29wdC9yZWQ1IC9vcHQucmVkNS5iYWsgKG1vdmUgd29ya2luZyB2ZXJzaW9uIG9mIE9NIGp1c3QgaW4gY2FzZSA6KSlcbiA2KSBleHRyYWN0IGRvd25sb2FkZWQgT00gdG8gdGhlIC9vcHQvcmVkNVxuIDcpIC4vYWRtaW4uc2ggLWkgLWZpbGUgfi90b2RheV9vbV9iYWNrdXAuemlwIChvciAnLi9hZG1pbi5zaCAtaSAtZmlsZSB+L3RvZGF5X29tX2JhY2t1cC56aXAgLS1kYi10eXBlIG15c3FsIC0tZGItdXNlciBvbV91c2VyIC0tZGItcGFzcyBvbV91c2VyX3Bhc3MnIGluIGNhc2Ugb2YgeW91IGFyZSB1c2luZyBub24tZGVmYXVsdCBEQiApXG4gOCkgc3RhcnQgT01cbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA2IiBuYW1lPSJwdWJsaWNfcm9vbV90b29sdGlwIj4KKyAgICA8dmFsdWU+Um9vbXMgY29tbW9uIHRvIGFsbCB1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDciIG5hbWU9InByaXZhdGVfcm9vbV90b29sdGlwIj4KKyAgICA8dmFsdWU+Um9vbXMgY29tbW9uIHRvIHRoZSBjdXJyZW50IHVzZXIgZ3JvdXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwOCIgbmFtZT0ibXlfcm9vbV90b29sdGlwIj4KKyAgICA8dmFsdWU+Um9vbXMgb2YgdGhlIGN1cnJlbnQgdXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA5IiBuYW1lPSJjcmVhdGVfbmV3X3Jvb20iPgorICAgIDx2YWx1ZT5DcmVhdGUvTW9kaWZ5IGFwcG9pbnRtZW50IHNwZWNpYWwgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTEwIiBuYW1lPSJtdWx0aXBsZV9hZGRyZXNzZXMiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIGVudGVyIG11bHRpcGxlIGFkZHJlc3NlcyBpbiB0aGUgZm9ybWF0OiBmaXJzdG5hbWUxIGxhc3RuYW1lMSAmbHQ7ZW1haWwxJmd0OywiZmlyc3RuYW1lMiBsYXN0bmFtZTIiICZsdDtlbWFpbDImZ3Q7LCdmaXJzdG5hbWUzIGxhc3RuYW1lMycgJmx0O2VtYWlsMyZndDssIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTExIiBuYW1lPSJzdHJlYW1fdm9sdW1lIj4KKyAgICA8dmFsdWU+QWRqdXN0IHN0cmVhbSB2b2x1bWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxMiIgbmFtZT0ibWljcm9waG9uZV92b2x1bWUiPgorICAgIDx2YWx1ZT5BZGp1c3QgbWljcm9waG9uZSB2b2x1bWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxMyIgbmFtZT0iY2hhdF9tb2RlcmF0ZWQiPgorICAgIDx2YWx1ZT5JcyBjaGF0IG1vZGVyYXRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE0IiBuYW1lPSJjaGF0X21vZGVyYXRlZCI+CisgICAgPHZhbHVlPkFsbG93IG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNSIgbmFtZT0iY2hhdF9vcGVuZWQiPgorICAgIDx2YWx1ZT5DaGF0IHBhbmVsIG9wZW5lZCBieSBkZWZhdWx0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTYiIG5hbWU9ImZpbGVzX29wZW5lZCI+CisgICAgPHZhbHVlPkZpbGVzIHBhbmVsIG9wZW5lZCBieSBkZWZhdWx0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTciIG5hbWU9InNlcnZlciBhZG1pbiBzZWN0aW9uIGxhc3RwaW5nIj4KKyAgICA8dmFsdWU+TGFzdCBwaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTgiIG5hbWU9InNlcnZlciBhZG1pbiBzZWN0aW9uIGxhc3RwaW5nIGluZm8iPgorICAgIDx2YWx1ZT5FdmVyeSBzbGF2ZSBzZW5kcyBhIHBpbmcgdG8gdGhlIG1hc3RlciBldmVyeSAzIHNlY29uZHMgKGNvbmZpZ3VyYWJsZSkuIFNsYXZlIGxhc3RQaW5nIG11c3QgYmUgc21hbGxlciB0aGVuIDEgbWludXRlIHNvIHRoYXQgdGhlIG1hc3RlciB1c2VzIHRoZSBzbGF2ZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxOSIgbmFtZT0ic2VydmVyIGFkbWluIHBvcnQiPgorICAgIDx2YWx1ZT5IVFRQIFBvcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyMCIgbmFtZT0ic2VydmVyIGFkbWluIHVzZXIiPgorICAgIDx2YWx1ZT5Vc2VyIChTT0FQLUFjY2Vzcyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyMSIgbmFtZT0ic2VydmVyIGFkbWluIHBhc3N3b3JkIj4KKyAgICA8dmFsdWU+UGFzc3dvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyMiIgbmFtZT0ic2VydmVyIGFkbWluIHdlYmFwcCBwYXRoIj4KKyAgICA8dmFsdWU+V2ViYXBwIHBhdGg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyMyIgbmFtZT0ic2VydmVyIGFkbWluIHByb3RvY29sIj4KKyAgICA8dmFsdWU+UHJvdG9jb2w8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyNCIgbmFtZT0ic2VydmVyIGFkbWluIHBpbmcgcnVubmluZyI+CisgICAgPHZhbHVlPlBpbmcgcnVubmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI1IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gYWN0aXZlIj4KKyAgICA8dmFsdWU+QWN0aXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjYiIG5hbWU9ImdlbmVyYXRlX2hhc2giPgorICAgIDx2YWx1ZT5HZW5lcmF0ZSBVUkw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyNyIgbmFtZT0ibmV0d29yayB0ZXN0aW5nIGxpbmsiPgorICAgIDx2YWx1ZT5OZXR3b3JrIHRlc3Rpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyOCIgbmFtZT0icm9vbV9vcHRpb25zIj4KKyAgICA8dmFsdWU+QXV0byBzZWxlY3QgaW50ZXJ2aWV3IHZpZGVvIHBvZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI5IiBuYW1lPSJmb250X3VuZGVybGluZSI+CisgICAgPHZhbHVlPlVuZGVybGluZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMwIiBuYW1lPSJmb250X3N0eWxlIj4KKyAgICA8dmFsdWU+Rm9udCBzdHlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMxIiBuYW1lPSJhbGxvd19mb250X3N0eWxlcyI+CisgICAgPHZhbHVlPkFsbG93IGZvbnQgc3R5bGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzIiIG5hbWU9ImZvbnRfY29sb3IiPgorICAgIDx2YWx1ZT5Gb250IGNvbG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzMiIG5hbWU9Imh5cGVybGluayI+CisgICAgPHZhbHVlPkh5cGVybGluazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM0IiBuYW1lPSJjb25uZWN0aW9uIGFkbWluIj4KKyAgICA8dmFsdWU+U2hvdyBzZXNzaW9uIHN0YXRpc3RpY3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNSIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbiI+CisgICAgPHZhbHVlPlNlc3Npb24gZGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM2IiBuYW1lPSJzeXN0ZW1faW1wb3J0Ij4KKyAgICA8dmFsdWU+U3lzdGVtIGltcG9ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM3IiBuYW1lPSJpbmNsdWRlX2ludG9fYmFja3VwIj4KKyAgICA8dmFsdWU+SW5jbHVkZSB1cGxvYWRlZCBmaWxlcyBhbmQgcmVjb3JkaW5ncyBpbiBiYWNrdXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzOCIgbmFtZT0icm9vbV9hZG1pbl9zaXAiPgorICAgIDx2YWx1ZT5FbmFibGUgU0lQIHRyYW5zcG9ydCBpbiB0aGUgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM5IiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fY29uZmlybSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBwcm92aWRlIHRoaXMgdXNlciBhbiBleGNsdXNpdmUgYXVkaW8/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NDAiIG5hbWU9Im5vX3RpbWV6b25lIj4KKyAgICA8dmFsdWU+UGxlYXNlIHNwZWNpZnkgeW91ciB0aW1lem9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTQ1IiBuYW1lPSJjb250ZW50X2lzX3NhdmluZyI+CisgICAgPHZhbHVlPkNvbnRlbnQgaXMgU2F2aW5nLCBQbGVhc2Ugd2FpdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKzwvbGFuZ3VhZ2U+CmRpZmYgLS1naXQgImEvV2ViQ29udGVudC9sYW5ndWFnZXMvZGV1dHNjaCBcMDUwc3R1ZElQXDA1MS54bWwiICJiL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL2RldXRzY2ggXDA1MHN0dWRJUFwwNTEueG1sIgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ODg4YmMxCi0tLSAvZGV2L251bGwKKysrICJiL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL2RldXRzY2ggXDA1MHN0dWRJUFwwNTEueG1sIgpAQCAtMCwwICsxLDQ2NTIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+CisKKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCisKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK1RoaXMgRmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBieSB0aGUgTGFuZ3VhZ2VFZGl0b3IgCit0byBhZGQgbmV3IExhbmd1YWdlcyBvciBtb2RpZnkvY3VzdG9taXplIGl0IHVzZSB0aGUgTGFuZ3VhZ2VFZGl0b3IgCitzZWUgaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnL0xhbmd1YWdlRWRpdG9yLmh0bWwgZm9yIERldGFpbHMgCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy0tPgorPGxhbmd1YWdlIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOm5vTmFtZXNwYWNlU2NoZW1hTG9jYXRpb249Imxhbmd1YWdlLnhzZCI+CisgIDxzdHJpbmcgaWQ9IjEiIG5hbWU9ImNvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT5Lb25mZXJlbno8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMiIgbmFtZT0ibWVldGluZyI+CisgICAgPHZhbHVlPk1lZXRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMyIgbmFtZT0iY2xhc3Nyb29tIj4KKyAgICA8dmFsdWU+RXZlbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNCIgbmFtZT0ic2V0dGluZ3MiPgorICAgIDx2YWx1ZT5FaW5zdGVsbHVuZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUiIG5hbWU9ImJlbnV0emVyIj4KKyAgICA8dmFsdWU+UHJvZmlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYiIG5hbWU9ImFkbWluIj4KKyAgICA8dmFsdWU+QWRtaW5pc3RyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNyIgbmFtZT0ic3RvcCI+CisgICAgPHZhbHVlPlN0b3A8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOCIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+QXVmbmFobWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOSIgbmFtZT0ibm9maWxlIj4KKyAgICA8dmFsdWU+S2VpbmUgRGF0ZWkgdm9yaGFuZGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwIiBuYW1lPSJyZWNvcmRieXRlYWNoZXIiPgorICAgIDx2YWx1ZT5BdWZuYWhtZSBudXIgZsO8ciBNb2RlcmF0b3JlbiB2ZXJmw7xnYmFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExIiBuYW1lPSJjb25uZWN0ZWR1c2VycyI+CisgICAgPHZhbHVlPnZlcmJ1bmRlbmUgVGVpbG5laG1lcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIiIG5hbWU9InN0YXJ0Y29uZiI+CisgICAgPHZhbHVlPktvbmZlcmVueiBzdGFydGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzIiBuYW1lPSJteW5hbWUiPgorICAgIDx2YWx1ZT5NZWluIE5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQiIG5hbWU9InZpZGVvY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPlZpZGVva29uZmVyZW56PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1IiBuYW1lPSJpbXBvcnQiPgorICAgIDx2YWx1ZT5EYXRlaSBpbXBvcnRpZXJlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNiIgbmFtZT0icmVmcmVzaGZpbGVzIj4KKyAgICA8dmFsdWU+TGlzdGUgbmV1IGxhZGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3IiBuYW1lPSJ0b21haW5maWxlIj4KKyAgICA8dmFsdWU+WnVtIEhhdXB0dmVyemVpY2huaXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgiIG5hbWU9Im5ld3BvbGwiPgorICAgIDx2YWx1ZT5OZXVlIFVtZnJhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkiIG5hbWU9Im5ld3BvbGxoZWFkZXIiPgorICAgIDx2YWx1ZT5OZXVlIFVtZnJhZ2UgZsO8ciBkaWUgU2l0enVuZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAiIG5hbWU9InF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+RnJhZ2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxIiBuYW1lPSJwb2xsdHlwZSI+CisgICAgPHZhbHVlPlVtZnJhZ2VuYXJ0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMiIgbmFtZT0iY3JlYXRlIj4KKyAgICA8dmFsdWU+QW5sZWdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMyIgbmFtZT0iaW5mb21lc3NhZ2UiPgorICAgIDx2YWx1ZT5JbmZvOiBKZWRlciBUZWlsbmVobWVyIGVyaMOkbHQgZWluZSBOYWNocmljaHQgbWl0IGRlciBuZXVlbiBVbWZyYWdlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNCIgbmFtZT0iY3JlYXRwb2xsIj4KKyAgICA8dmFsdWU+VW1mcmFnZSBhbmxlZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1IiBuYW1lPSJjYW5jZWwiPgorICAgIDx2YWx1ZT5BYmJyZWNoZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYiIG5hbWU9Inllc25vIj4KKyAgICA8dmFsdWU+SmEvTmVpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNyIgbmFtZT0ibnVtZXJpYyI+CisgICAgPHZhbHVlPk51bWVyaXNjaCAxLTEwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4IiBuYW1lPSJwb2xsIj4KKyAgICA8dmFsdWU+VW1mcmFnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOSIgbmFtZT0ibW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPlNpZSBtw7xzc2VuIE1vZGVyYXRvciBkaWVzZXIgU2l0enVuZyBzZWluLCB1bSBlaW5lIFVtZnJhZ2UgYW56dWxlZ2VuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMCIgbmFtZT0idm90ZSI+CisgICAgPHZhbHVlPklociBTdGltbWUgd3VyZGUgYWJnZWdlYmVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMSIgbmFtZT0iYWxyZWFkeXZvdGVkIj4KKyAgICA8dmFsdWU+U2llIGhhYmVuIGbDvHIgZGllc2UgVW1mcmFnZSBiZXJlaXRzIGlociBWb3R1bSBhYmdlZ2ViZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyIiBuYW1lPSJ2b3RpbmciPgorICAgIDx2YWx1ZT5BYnN0aW1tZW4hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzIiBuYW1lPSJhbnN3ZXIiPgorICAgIDx2YWx1ZT5JaHJlIEFudHdvcnQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0IiBuYW1lPSJ5ZXMiPgorICAgIDx2YWx1ZT5KYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNSIgbmFtZT0ibm8iPgorICAgIDx2YWx1ZT5OZWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2IiBuYW1lPSJxdWVzdGlvbndhbnQiPgorICAgIDx2YWx1ZT53aWxsIHdpc3Nlbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzciIG5hbWU9InBvbGxyZXN1bHRzIj4KKyAgICA8dmFsdWU+VW1mcmFnZWVyZ2Vibmlzc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgiIG5hbWU9InF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+RnJhZ2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5IiBuYW1lPSJyZXN1bHRzIj4KKyAgICA8dmFsdWU+QW50d29ydGVuOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MCIgbmFtZT0iYW5zd2VycyI+CisgICAgPHZhbHVlPkVyZ2VibmlzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MSIgbmFtZT0ibm9wb2xsIj4KKyAgICA8dmFsdWU+WnVyIFplaXQgbGllZ2VuIGtlaW5lIG9mZmVuZW4gVW1mcmFnZW4gdm9yLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MiIgbmFtZT0idm90aW5ncyI+CisgICAgPHZhbHVlPkFic3RpbW1lbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMiIG5hbWU9Im1lZXRpbmciPgorICAgIDx2YWx1ZT5NZWV0aW5nIChtYXggNCBQbMOkdHplKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NCIgbmFtZT0iY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPktvbmZlcmVueiAobWF4IDUwIFBsw6R0emUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1IiBuYW1lPSJ0eXBlIj4KKyAgICA8dmFsdWU+TW9kdXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYiIG5hbWU9InJlbWFpbmluZ3NlYXRzIj4KKyAgICA8dmFsdWU+dmVyYmxlaWJlbmRlIFBsw6R0emU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDciIG5hbWU9ImFscmVhZHljaG9zZW4iPgorICAgIDx2YWx1ZT5CZXJlaXRzIHZlcmdlYmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4IiBuYW1lPSJlbnRlciI+CisgICAgPHZhbHVlPkVpbnRyZXRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OSIgbmFtZT0ibW9kbGVhdmUiPgorICAgIDx2YWx1ZT5EZXIgTW9kZXJhdG9yIGhhdCBkZW4gUmF1bSB2ZXJsYXNzZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwIiBuYW1lPSJzeXN0ZW1tZXNzYWdlIj4KKyAgICA8dmFsdWU+U3lzdGVtbmFjaHJpY2h0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxIiBuYW1lPSJjaG9zc2VkZXZpY2UiPgorICAgIDx2YWx1ZT5HZXLDpHRlYXVzd2FobDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MiIgbmFtZT0iY2hvb3NlY2FtIj4KKyAgICA8dmFsdWU+S2FtZXJhIHfDpGhsZW46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzIiBuYW1lPSJjaG9vc2VtaWMiPgorICAgIDx2YWx1ZT5NaWtyb2ZvbiB3w6RobGVuOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NCIgbmFtZT0ib2siPgorICAgIDx2YWx1ZT5PazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NSIgbmFtZT0iY2FuY2VsMiI+CisgICAgPHZhbHVlPkFiYnJlY2hlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NiIgbmFtZT0icmVjb25lZWN0bmVlZGVkIj4KKyAgICA8dmFsdWU+U2llIG3DvHNzZW4gc2ljaCBlcm5ldXQgdmVyYmluZGVuIGRhbWl0IGRpZSDDhG5kZXJ1bmdlbiB3aXJrc2FtIHdlcmRlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTciIG5hbWU9ImVkaXRzZXR1cCI+CisgICAgPHZhbHVlPkVpbnN0ZWxsdW5nZW4gw6RuZGVybi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgiIG5hbWU9ImNvdXJzZSI+CisgICAgPHZhbHVlPkt1cnM6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5IiBuYW1lPSJsYW5ndWFnZSI+CisgICAgPHZhbHVlPkt1cnNzcHJhY2hlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MCIgbmFtZT0ib2syIj4KKyAgICA8dmFsdWU+T2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEiIG5hbWU9ImNhbmNlbDMiPgorICAgIDx2YWx1ZT5BYmJyZWNoZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIiIG5hbWU9ImNsZWFyd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPlplaWNoZW5icmV0dCBsZWVyZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMiIG5hbWU9ImNsZWFyd2hpdGVib2FyZHF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+WmVpY2hlbmJyZXR0IGxlZXJlbiwgYmV2b3IgZWluIG5ldWVzIEJpbGQgaGluenVnZWbDvGd0IHdpcmQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0IiBuYW1lPSJkb250YXNrYWdhaW4iPgorICAgIDx2YWx1ZT5OaWNodCBub2NobWFsIGZyYWdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NSIgbmFtZT0ibm8iPgorICAgIDx2YWx1ZT5OZWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2IiBuYW1lPSJlZGl0c2V0dXAyIj4KKyAgICA8dmFsdWU+RWluc3RlbGx1bmdlbiBiZWFyYmVpdGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3IiBuYW1lPSJuZWVkY29uZmlybWF0aW9ud2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkJlc3TDpHRpZ3VuZyBhbmZvcmRlcm4sIGJldm9yIGRhcyBaZWljaGVuYnJldHQgZ2VsZWVydCB3aXJkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OCIgbmFtZT0idXNlcmluZm8iPgorICAgIDx2YWx1ZT5Qcm9maWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkiIG5hbWU9ImNsZWFyZHJhd2FyZWEiPgorICAgIDx2YWx1ZT5aZWljaGVuYnJldHQgbGVlcmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwIiBuYW1lPSJ1bmRvIj4KKyAgICA8dmFsdWU+UsO8Y2tnw6RuZ2lnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxIiBuYW1lPSJyZWRvIj4KKyAgICA8dmFsdWU+V2llZGVyaGVyc3RlbGxlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MiIgbmFtZT0ic2VsZWN0b2JqZWN0Ij4KKyAgICA8dmFsdWU+TWFya2llcmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczIiBuYW1lPSJ0ZXh0Ij4KKyAgICA8dmFsdWU+VGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NCIgbmFtZT0icGFpbnQiPgorICAgIDx2YWx1ZT5GcmVpIHplaWNobmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1IiBuYW1lPSJkcmF3bGluZSI+CisgICAgPHZhbHVlPkxpbmllbiB6ZWljaG5lbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NiIgbmFtZT0iZHJhd3UiPgorICAgIDx2YWx1ZT5VbnRlcnN0cmVpY2hlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NyIgbmFtZT0icmVjdCI+CisgICAgPHZhbHVlPlJlY2h0ZWNrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4IiBuYW1lPSJlbGxpcHNlIj4KKyAgICA8dmFsdWU+S3JlaXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkiIG5hbWU9ImFycm93Ij4KKyAgICA8dmFsdWU+UGZlaWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAiIG5hbWU9ImRlbGV0ZWNob3NlbiI+CisgICAgPHZhbHVlPkzDtnNjaGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxIiBuYW1lPSJhcHBsaXltb2QiPgorICAgIDx2YWx1ZT5Nb2RlcmF0aW9uc3JlY2h0IGJlYW50cmFnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIiIG5hbWU9ImFwcGx5Ij4KKyAgICA8dmFsdWU+QmVhbnRyYWdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MyIgbmFtZT0iY2FuY2VsIj4KKyAgICA8dmFsdWU+QWJicmVjaGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0IiBuYW1lPSJtb2QiPgorICAgIDx2YWx1ZT5Nb2RlcmF0b3Igd2VyZGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1IiBuYW1lPSJjbG9zZSI+CisgICAgPHZhbHVlPlNjaGxpZcOfZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYiIG5hbWU9Iml0YWxpYyI+CisgICAgPHZhbHVlPkt1cnNpdjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NyIgbmFtZT0iYm9sZCI+CisgICAgPHZhbHVlPkZldHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgiIG5hbWU9IndhaXRpbmciPgorICAgIDx2YWx1ZT5XYXJ0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OSIgbmFtZT0iYXBwbHlNZXNzYWdlIj4KKyAgICA8dmFsdWU+RWluIFRlaWxuZWhtZXIgZXJiaXR0ZXQgTW9kZXJhdGlvbnNyZWNodGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwIiBuYW1lPSJhY2NlcHQiPgorICAgIDx2YWx1ZT5Bbm5laG1lbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MSIgbmFtZT0icmVqZWN0Ij4KKyAgICA8dmFsdWU+QWJsZWhuZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIiIG5hbWU9ImNhbmNlbCI+CisgICAgPHZhbHVlPkFiYnJlY2hlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MyIgbmFtZT0ic2VuZG1vZHJlcXVlc3RtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VuZGUgQW5mcmFnZSBhbiBmb2xnZW5kZSBUZWlsbmVobWVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0IiBuYW1lPSJhY2NlcHQiPgorICAgIDx2YWx1ZT5iZXN0w6R0aWd0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1IiBuYW1lPSJyZWplY3QiPgorICAgIDx2YWx1ZT5hYmdlbGVobnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYiIG5hbWU9ImNoYW5nZW1vZCI+CisgICAgPHZhbHVlPsOEbmRlcmUgTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3IiBuYW1lPSJub25tb2RlcnJvcm1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TaWUgc2luZCBuaWNodCBkZXIgTW9kZXJhdG9yIGRpZXNlciBTaXR6dW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4IiBuYW1lPSJtb2RlcmF0b3IiPgorICAgIDx2YWx1ZT5Nb2RlcmF0b3I6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5IiBuYW1lPSJyb29tZnVsbG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EaWVzZXIgUmF1bSBpc3Qgdm9sbC4gQml0dGUgdmVyc3VjaGVuIFNpZSBlcyB6dSBlaW5lbSBzcMOkdGVyZW4gWmVpdHB1bmt0IG5vY2htYWxzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAiIG5hbWU9ImVsbGxpcHNlIj4KKyAgICA8dmFsdWU+S3JlaXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxIiBuYW1lPSJjbG9zZSI+CisgICAgPHZhbHVlPlNjaGxpZcOfZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyIiBuYW1lPSJBdXRoRXJyb3IiPgorICAgIDx2YWx1ZT5FaW5nYWJlZmVobGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMyIgbmFtZT0ibWluNHVzZXJuYW1lIj4KKyAgICA8dmFsdWU+RGVyIEJlbnV0emVybmFtZSBtdXNzIG1pbmRlc3RlbnMgNCBaZWljaGVuIGxhbmcgc2VpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQiIG5hbWU9Im1pbjRwYXNzIj4KKyAgICA8dmFsdWU+RGFzIFBhc3N3b3J0IG11c3MgbWluZGVzdGVucyA0IFplaWNoZW4gbGFuZyBzZWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNSIgbmFtZT0idXNlcm5hbWV0YWtlbiI+CisgICAgPHZhbHVlPkRlciBCZW51dHplcm5hbWUgaXN0IGJlcmVpdHMgdmVyZ2ViZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2IiBuYW1lPSJlbWFpbHRha2VuIj4KKyAgICA8dmFsdWU+RGllIEUtTWFpbCBpc3QgYmVyZWl0cyByZWdpc3RyaWVydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDciIG5hbWU9ImVtYWlsdGFrZW4iPgorICAgIDx2YWx1ZT5FaW4gRmVobGVyIGlzdCBhdWZnZXRyZXRlbi4gQml0dGUga29udGFrdGllcmVuIFNpZSBkZW4gQWRtaW5pc3RyYXRvci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4IiBuYW1lPSJBdXRobG9naW4iPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkiIG5hbWU9IkF1dGh1c2VyIj4KKyAgICA8dmFsdWU+QmVudXR6ZXIvRS1NYWlsOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAiIG5hbWU9IkF1dGhwYXNzIj4KKyAgICA8dmFsdWU+UGFzc3dvcnQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMSIgbmFtZT0iQXV0aGxhbmciPgorICAgIDx2YWx1ZT5TcHJhY2hlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMiIgbmFtZT0iQXV0aHJlZyI+CisgICAgPHZhbHVlPkVpbmxvZ2dlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMiIG5hbWU9InJlZ2Zvcm1oZWFkIj4KKyAgICA8dmFsdWU+UmVnaXN0cmllcmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNCIgbmFtZT0icmVnZm9ybXVzZXIiPgorICAgIDx2YWx1ZT5UZWlsbmVobWVyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUiIG5hbWU9InJlZ2Zvcm1wYXNzIj4KKyAgICA8dmFsdWU+UGFzc3dvcnQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNiIgbmFtZT0icmVnZm9ybXJldHlwZSI+CisgICAgPHZhbHVlPldpZWRlcmhvbGU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNyIgbmFtZT0icmVnZm9ybWZpcnN0bmFtZSI+CisgICAgPHZhbHVlPlZvcm5hbWU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOCIgbmFtZT0icmVnZm9ybWxhc3RuYW1lIj4KKyAgICA8dmFsdWU+TmFjaG5hbWU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOSIgbmFtZT0icmVnZm9ybW1haWwiPgorICAgIDx2YWx1ZT5FLU1haWw6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMCIgbmFtZT0icmVnZm9ybXN0YXRlIj4KKyAgICA8dmFsdWU+TGFuZDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxIiBuYW1lPSJyZWdmb3JtYnRuMSI+CisgICAgPHZhbHVlPlJlZ2lzdHJpZXJlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIiIG5hbWU9InJlZ2Zvcm1idG4yIj4KKyAgICA8dmFsdWU+QWJicmVjaGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMyIgbmFtZT0iQXV0aGJ0bjIiPgorICAgIDx2YWx1ZT5SZWdpc3RyaWVyZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5Ib21lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNSIgbmFtZT0idXNlcmFkbWluIj4KKyAgICA8dmFsdWU+VGVpbG5laG1lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYiIG5hbWU9Imdyb3VwYWRtaW4iPgorICAgIDx2YWx1ZT5HcnVwcGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNyIgbmFtZT0ib3JnYWRtaW4iPgorICAgIDx2YWx1ZT5PcmdhbmlzYXRpb25lbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgiIG5hbWU9ImhlYWRjb25mIj4KKyAgICA8dmFsdWU+S29uZmVyZW56csOkdW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOSIgbmFtZT0iY29uZl9wdWIiPgorICAgIDx2YWx1ZT7DlmZmZW50bGljaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAiIG5hbWU9ImhlYWRfb3JnIj4KKyAgICA8dmFsdWU+T3JnYW5pc2F0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMSIgbmFtZT0iYnRuX2VudGVycm9vbSI+CisgICAgPHZhbHVlPkJldHJldGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMiIgbmFtZT0idXNlcmFsdGVyc2VsZl9sb2dpbiI+CisgICAgPHZhbHVlPlRlaWxuZWhtZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Bhc3MiPgorICAgIDx2YWx1ZT5QYXNzd29ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQiIG5hbWU9InVzZXJhbHRlcnNlbGZfcGFzc3JldHlwZSI+CisgICAgPHZhbHVlPldpZWRlcmhvbGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNSIgbmFtZT0idXNlcmFsdGVyc2VsZl9maXJzdG5hbWUiPgorICAgIDx2YWx1ZT5Wb3JuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNiIgbmFtZT0idXNlcmFsdGVyc2VsZl9sYXN0bmFtZSI+CisgICAgPHZhbHVlPk5hY2huYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNyIgbmFtZT0idXNlcmFsdGVyc2VsZl9lbWFpbCI+CisgICAgPHZhbHVlPkUtTWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgiIG5hbWU9InVzZXJhbHRlcnNlbGZfYmlydGgiPgorICAgIDx2YWx1ZT5HZWJ1cnRzdGFnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOSIgbmFtZT0idXNlcmFsdGVyc2VsZl9zdHJlZXRubyI+CisgICAgPHZhbHVlPlN0cmHDn2UvTnIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MCIgbmFtZT0idXNlcmFsdGVyc2VsZl90b3duIj4KKyAgICA8dmFsdWU+UExaL1N0YWR0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MSIgbmFtZT0idXNlcmFsdGVyc2VsZl9zdGF0ZSI+CisgICAgPHZhbHVlPkxhbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2FkcmVzc2NvbW1lbnQiPgorICAgIDx2YWx1ZT5BZHJlc3NpbmZvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MyIgbmFtZT0idXNlcmFsdGVyc2VsZl9oZWFkZXIiPgorICAgIDx2YWx1ZT5CZW51dHplcmRhdGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NCIgbmFtZT0ic2F2ZW1lbnViYXJfc2F2ZWxhYmVsIj4KKyAgICA8dmFsdWU+U3BlaWNoZXJuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NSIgbmFtZT0ic2F2ZW1lbnViYXJfc2F2ZWxhYmVsIj4KKyAgICA8dmFsdWU+U3BlaWNoZXJ2b3JnYW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NiIgbmFtZT0iYWRtaW5fdXNlcmxpc3RfdXNlcl9pZCI+CisgICAgPHZhbHVlPkJlbnV0emVyLUlEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NyIgbmFtZT0iYWRtaW5fdXNlcmxpc3RfbG9naW4iPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgiIG5hbWU9ImFkbWluX3VzZXJsaXN0X2ZpcnN0bmFtIj4KKyAgICA8dmFsdWU+Vm9ybmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkiIG5hbWU9ImFkbWluX3VzZXJsaXN0X2xhc3RuYW1lIj4KKyAgICA8dmFsdWU+TmFjaG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwIiBuYW1lPSJ0dXJub3Zlcmxpc3RfbmV4dCI+CisgICAgPHZhbHVlPlZvcnfDpHJ0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTEiIG5hbWU9InR1cm5vdmVybGlzdF9wcmUiPgorICAgIDx2YWx1ZT5adXLDvGNrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MiIgbmFtZT0ic2F2ZWNvbnRlbnRfY29uZmlybSI+CisgICAgPHZhbHVlPkRhdGVuc2F0eiBlbnRmZXJuZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzIiBuYW1lPSJzYXZlY29udGVudF9jb25maXJtX2NhbmNlbF9idG4iPgorICAgIDx2YWx1ZT5BYmJyZWNoZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU0IiBuYW1lPSJzYXZlY29udGVudF9jb25maXJtX2NvbmZpcm1fYnRuIj4KKyAgICA8dmFsdWU+RW5mZXJuZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU1IiBuYW1lPSJzYXZlbWVudWJhcl9hZGRsYWJlbCI+CisgICAgPHZhbHVlPkRhdGVuc2F0eiBhbmxlZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NiIgbmFtZT0ic2F2ZW1lbnViYXJfcmVsb2FkbGFiZWwiPgorICAgIDx2YWx1ZT5EYXRlbnNhdHogbmV1IGxhZGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NyIgbmFtZT0ic2F2ZW1lbnViYXJfZGVsZXRlbGFiZWwiPgorICAgIDx2YWx1ZT5EYXRlbnNhdHogZW50ZmVybmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1OCIgbmFtZT0idXNlcmFsdGVyX2FkbWluX3N0YXR1cyI+CisgICAgPHZhbHVlPlN0YXR1czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTkiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9zdGF0dXNJdGVtIj4KKyAgICA8dmFsdWU+Z2VzcGVycnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYwIiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fc3RhdHVzSXRlbSI+CisgICAgPHZhbHVlPmFrdGl2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2MSIgbmFtZT0idXNlcmFsdGVyX2FkbWluX29yZ2FuaXNhdGlvbiI+CisgICAgPHZhbHVlPk9yZ2FuaXNhdGlvbmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2MiIgbmFtZT0iY2FsZW5kYXJfaWNvbmxhYmVsIj4KKyAgICA8dmFsdWU+S2FsZW5kZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYzIiBuYW1lPSJzYXZld2luZG93X2J0biI+CisgICAgPHZhbHVlPlNjaGxpZcOfZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY0IiBuYW1lPSJvcmdhbmlzYXRpb250YWJsZWxpc3RfaWRyb3ciPgorICAgIDx2YWx1ZT5PcmdhbmlzYXRpb25zLUlEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2NSIgbmFtZT0ib3JnYW5pc2F0aW9udGFibGVsaXN0X25hbWVyb3ciPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2NiIgbmFtZT0idXNlcnZhbHVlX2xldmVsaWQxIj4KKyAgICA8dmFsdWU+VGVpbG5laG1lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjciIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGlkMiI+CisgICAgPHZhbHVlPk1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjgiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGlkMyI+CisgICAgPHZhbHVlPkFkbWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2OSIgbmFtZT0idXNlcnZhbHVlX2xldmVsbGFiZWwiPgorICAgIDx2YWx1ZT5SZWNodGVncnVwcGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTcwIiBuYW1lPSJvcmd2YWx1ZV9oZWFkZXIiPgorICAgIDx2YWx1ZT5PcmdhbmlzYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTcxIiBuYW1lPSJvcmd2YWx1ZV9vcmduYW1lIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzIiIG5hbWU9Im9yZ3ZhbHVlX29yZ25hbWUiPgorICAgIDx2YWx1ZT5PcmdhbmlzYXRpb24gaGluenVmw7xnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTczIiBuYW1lPSJvcmd2YWx1ZV9vcmduYW1lIj4KKyAgICA8dmFsdWU+T3JnYW5pc2F0aW9uIGhpbnp1ZsO8Z2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3NCIgbmFtZT0ib3JndmFsdWVfdXNlcndpbiI+CisgICAgPHZhbHVlPkFiYnJlY2hlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzUiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW4iPgorICAgIDx2YWx1ZT5IaW56dWbDvGdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzYiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW4iPgorICAgIDx2YWx1ZT5PcmdhbmlzYXRpb24gZW50ZmVybmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3NyIgbmFtZT0ib3JndmFsdWVfdXNlcmxpc3QiPgorICAgIDx2YWx1ZT5UZWlsbmVobWVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3OCIgbmFtZT0ib3JndmFsdWVfdXNlcmxpc3RhZGQiPgorICAgIDx2YWx1ZT5UZWlsbmVobWVyIGhpbnp1ZsO8Z2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3OSIgbmFtZT0ib3JndmFsdWVfdXNlcmxpc3RkZWxldGUiPgorICAgIDx2YWx1ZT5UZWlsbmVobWVyIGVudGZlcm5lbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODAiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5oZWFkZXIiPgorICAgIDx2YWx1ZT5UZWlsbmVobWVyIGhpbnp1ZsO8Z2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4MSIgbmFtZT0ib3JndmFsdWVfdXNlcndpbnNlYXJjaGZpZWxkIj4KKyAgICA8dmFsdWU+VGVpbG5laG1lciBzdWNoZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgyIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luc2VhcmNoYnRuIj4KKyAgICA8dmFsdWU+U3VjaGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4MyIgbmFtZT0ib3JndmFsdWVfdXNlcndpbnNlYXJjaHJlc3VsdCI+CisgICAgPHZhbHVlPlRlaWxuZWhtZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg0IiBuYW1lPSJsb2dpbndpbl9jaG9vc2VvcmdhbmlzYXRpb24iPgorICAgIDx2YWx1ZT5PcmdhbmlzYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg1IiBuYW1lPSJsb2dpbndpbl9jaG9vc2VvcmdhbmlzYXRpb25idG4iPgorICAgIDx2YWx1ZT5BdXN3w6RobGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NiIgbmFtZT0ibmF2aV9yb29tYWRtaW4iPgorICAgIDx2YWx1ZT5Lb25mZXJlbnpyw6R1bWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg3IiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+S29uZmVyZW56csOkdW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4OCIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPklEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4OSIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkwIiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+w7ZmZmVudGxpY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkxIiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+T3JnYW5pc2F0aW9uZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkyIiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+S29uZmVyZW56csOkdW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5MyIgbmFtZT0icm9vbXZhbHVlX25hbWUiPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NCIgbmFtZT0icm9vbXZhbHVlX3R5cGUiPgorICAgIDx2YWx1ZT5UeXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk1IiBuYW1lPSJyb29tdmFsdWVfaXNwdWJsaWMiPgorICAgIDx2YWx1ZT7DlmZmZW50bGljaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTYiIG5hbWU9InJvb212YWx1ZV9jb21tZW50Ij4KKyAgICA8dmFsdWU+S29tbWVudGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NyIgbmFtZT0id2hpdGVib2FyZF9zYXZlaWNvbiI+CisgICAgPHZhbHVlPlNwZWljaGVybjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTgiIG5hbWU9IndoaXRlYm9hcmRfb3Blbmljb24iPgorICAgIDx2YWx1ZT7DlmZmbmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5OSIgbmFtZT0id2hpdGVib2FyZF9zYXZlYXN3aW5oZWFkZXIiPgorICAgIDx2YWx1ZT5TcGVpY2hlcm4gdW50ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAwIiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbnRleHQiPgorICAgIDx2YWx1ZT5EYXRlaW5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAxIiBuYW1lPSJmaWxlcyI+CisgICAgPHZhbHVlPkRhdGVpbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDIiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2luYnRuMSI+CisgICAgPHZhbHVlPkFiYnJlY2hlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDMiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2luYnRuMiI+CisgICAgPHZhbHVlPlNwZWljaGVybjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDQiIG5hbWU9InJwY2Vycm9yd2luX2hlYWRlciI+CisgICAgPHZhbHVlPkZlaGxlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDUiIG5hbWU9ImxvYWR3bWxfaGVhZGVyIj4KKyAgICA8dmFsdWU+TGFkZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA2IiBuYW1lPSJsb2Fkd21sX21lc3NzbG9hZCI+CisgICAgPHZhbHVlPk9iamVrdGUgZ2VsYWRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDciIG5hbWU9ImxvYWR3bWxfbWVzc3N5bmMiPgorICAgIDx2YWx1ZT5TeW5jaHJvbmlzaWVyZSBUZWlsbmVobWVyLiBSZXN0bGljaGUgVGVpbG5laG1lcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA4IiBuYW1lPSJsb2FkaW1hZ2VfbWVzc2xvYWQiPgorICAgIDx2YWx1ZT5MYWRlIEJpbGRkYXRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDkiIG5hbWU9ImxvYWRpbWFnZV9tZXNzc3luYyI+CisgICAgPHZhbHVlPlN5bmNocm9uaXNpZXJlIFRlaWxuZWhtZXIuIFJlc3RsaWNoZSBUZWlsbmVobWVyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTAiIG5hbWU9ImxvYWR3bWxfY29uZmlybWhlYWRlciI+CisgICAgPHZhbHVlPlplaWNoZW5icmV0dCBsZWVyZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjExIiBuYW1lPSJsb2Fkd21sX2NvbmZpcm1tZXNzIj4KKyAgICA8dmFsdWU+WmVpY2hlbmJyZXR0IGxlZXJlbi4gQWxsZSBiaXNoZXJpZ2VuIMOEbmRlcnVuZ2VuIGdlaGVuIGRhbWl0IHZlcmxvcmVuITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTIiIG5hbWU9ImxvYWR3bWxfY29uZmlybW1lc3MyIj4KKyAgICA8dmFsdWU+QmVzdMOkdGlndW5nIHZvciBkZW0gTGFkZW4gZWluZXIgRGF0ZWkgYW5mb3JkZXJuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTMiIG5hbWU9InNlbmRfaW52aXRhdGlvbl9idG4iPgorICAgIDx2YWx1ZT5FaW5sYWR1bmcgdmVyc2VuZGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNCIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX2hlYWRlciI+CisgICAgPHZhbHVlPkVpbmxhZHVuZyB2ZXJzZW5kZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE1IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fc3ViamVjdCI+CisgICAgPHZhbHVlPkJldHJlZmY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE2IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fcmVjaXBpZW50Ij4KKyAgICA8dmFsdWU+RW1wZsOkbmdlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTciIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9tZXNzYWdlIj4KKyAgICA8dmFsdWU+TmFjaHJpY2h0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxOCIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX2J0bl9jb25maXJtIj4KKyAgICA8dmFsdWU+QWJzY2hpY2tlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTkiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9idG5fY2FuY2VsIj4KKyAgICA8dmFsdWU+QWJicmVjaGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyMCIgbmFtZT0ic2VuZF9jaGF0X3RleHRfYnRuIj4KKyAgICA8dmFsdWU+U2VuZGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyMSIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2hlYWRlciI+CisgICAgPHZhbHVlPkJlbnV0emVyZGF0ZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIyIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fc3ViamVjdCI+CisgICAgPHZhbHVlPk5pY2tuYW1lIGbDvHIgZGllc2UgS29uZmVyZW56PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyMyIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2xvZ2luIj4KKyAgICA8dmFsdWU+U3BpdHpuYW1lL0FsaWFzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNCIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2ZpcnN0bmFtZSI+CisgICAgPHZhbHVlPlZvcm5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI1IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fbGFzdG5hbWUiPgorICAgIDx2YWx1ZT5OYWNobmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjYiIG5hbWU9Imludml0ZWRfdXNlcndpbl9tYWlsIj4KKyAgICA8dmFsdWU+RS1NYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNyIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2xhbmciPgorICAgIDx2YWx1ZT5TcHJhY2hlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyOCIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2VudGVyIj4KKyAgICA8dmFsdWU+QWJzZW5kZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI5IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZW50ZXIiPgorICAgIDx2YWx1ZT5MYWRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzAiIG5hbWU9Imludml0ZWRfdXNlcndpbl9lbnRlciI+CisgICAgPHZhbHVlPkRhdGVuIHdlcmRlbiBnZWxhZGVuLiBCaXR0ZSB3YXJ0ZW4hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMSIgbmFtZT0idXNlcl9yZWdpc3RlckZhbHNlUFdEIj4KKyAgICA8dmFsdWU+RmFsc2NoZXMgUGFzc3dvcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMyIiBuYW1lPSJ1c2VyX3JlZ2lzdGVyRmFsc2VQV0RIZWFkZXIiPgorICAgIDx2YWx1ZT5CaXR0ZSBnZWJlbiBTaWUgZGFzIFBhc3N3b3J0IHp3ZWltYWwgZWluLiBMw6RuZ2U6IG1pbmRlc3RlbnMgNiBCdWNoc3RhYmVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzMiIG5hbWU9InVzZXJfcmVnaXN0ZXJNYWlsRXJyb3IiPgorICAgIDx2YWx1ZT5VbmfDvGx0aWdlIEUtTWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzQiIG5hbWU9InVzZXJfcmVnaXN0ZXJNYWlsRXJyb3JIZWFkZXIiPgorICAgIDx2YWx1ZT5EaWUgYW5nZWdlYmVuZSBFLU1haWwtQWRyZXNzZSBpc3QgdW5nw7xsdGlnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzNSIgbmFtZT0idXNlcl9yZWdpc3RlclN1Y2Nlc3MiPgorICAgIDx2YWx1ZT5SZWdpc3RyYXRpb24gYWJnZXNjaGxvc3NlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzYiIG5hbWU9InVzZXJfcmVnaXN0ZXJTdWNjZXNzSGVhZGVyIj4KKyAgICA8dmFsdWU+SWhyIFp1Z2FuZyB3dXJkZSBhbmdlbGVndC4gU2llIGvDtm5uZW4gc2ljaCBudW4gZWlubG9nZ2VuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzciIG5hbWU9InVzZXJfc2hhcmluZ19tZXNzYWdlIj4KKyAgICA8dmFsdWU+U2llIGvDtm5uZW4gSWhyZW4gQmlsZHNjaGlybSBpbSBNb21lbnQgbmljaHQgZnJlaWdlYmVuLiBEaWVzZSBGdW5rdGlvbiB3aXJkIGFrdHVlbGwgYmVyZWl0cyB2b24gZWluZW0gYW5kZXJlbiBTaXR6dW5nc3RlaWxuZWhtZXIgZ2VudXR6dC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM4IiBuYW1lPSJ1c2VyX3NoYXJpbmdfbWVzc2FnZUhlYWRlciI+CisgICAgPHZhbHVlPlZlcsO2ZmZlbnRsaWNodW5nIGFiZ2VsZWhudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzkiIG5hbWU9InVzZXJfZG9TdGFydFNjcmVlblZpZXdlciI+CisgICAgPHZhbHVlPkRlc2t0b3AgZnJlaWdlYmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0MCIgbmFtZT0ic2NyZWVuX3dhcm5CYW5kd2lkdGgiPgorICAgIDx2YWx1ZT5TY2hsZWNodGUgQmFuZGJyZWl0ZS4gRXMgd2FyIG5pY2h0IG3DtmdsaWNoIGFsbGUgQmlsZGVyIGRlcyBCaWxkc2NoaXJtcyB6dSBsYWRlbi4gVHJpdHQgZGllc2VyIEZlaGxlciBow6R1ZmlnZXIgYXVmIGvDtm5uZW4gU2llIGRlbiBNb2RlcmF0b3IgZGFydW0gYml0dGVuLCBkaWUgUXVhbGl0w6R0IHp1ciB2ZXJyaW5nZXJuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDEiIG5hbWU9InNjcmVlbl91c2VybGFiZWwiPgorICAgIDx2YWx1ZT5CaWxkc2NoaXJtIHZvbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQyIiBuYW1lPSJ3aGl0ZWJvYXJkX3RhYl9wYWludCI+CisgICAgPHZhbHVlPlplaWNobmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0MyIgbmFtZT0id2hpdGVib2FyZF90YWJfZG9jdW1lbnQiPgorICAgIDx2YWx1ZT5Eb2t1bWVudGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ0IiBuYW1lPSJ0YWJiYXJfY2hhdGljb24iPgorICAgIDx2YWx1ZT5DaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0NSIgbmFtZT0idGFiYmFyX2ZpbGVzaWNvbiI+CisgICAgPHZhbHVlPkRhdGVpZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ2IiBuYW1lPSJ0YWJiYXJfcGFydGljaXBhbnRzaWNvbiI+CisgICAgPHZhbHVlPlRlaWxuZWhtZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ3IiBuYW1lPSJzd2ZwcmVzZW50YXRpb25fbGlzdHNhdmVvcmlnIj4KKyAgICA8dmFsdWU+T3JnaW5hbGRhdGVpIGhlcnVudGVybGFkZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ4IiBuYW1lPSJzd2ZwcmVzZW50YXRpb25fbGlzdHNhdmVwZGYiPgorICAgIDx2YWx1ZT5QREYtRG9rdW1lbnQgaGVydW50ZXJsYWRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDkiIG5hbWU9InN3ZnByZXNlbnRhdGlvbl9saXN0bG9hZHN3ZiI+CisgICAgPHZhbHVlPlByw6RzZW50YXRpb24gaW4gWmVpY2hlbmJyZXR0IGxhZGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MCIgbmFtZT0ibmF2aW1haW5fY29uZmlnIj4KKyAgICA8dmFsdWU+S29uZmlndXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTEiIG5hbWU9IndoaXRlYm9hcmRfYm91bmRpbmdib3hfZHJhZyI+CisgICAgPHZhbHVlPk9iamVrdCB2ZXJzY2hpZWJlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTIiIG5hbWU9IndoaXRlYm9hcmRfYm91bmRpbmdib3hfcmVzaXplIj4KKyAgICA8dmFsdWU+T2JqZWt0IHZlcmdyw7bDn2Vybi92ZXJrbGVpbmVybjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTMiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3pvb20iPgorICAgIDx2YWx1ZT4lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1NCIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfc2xpZGUiPgorICAgIDx2YWx1ZT52b248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU1IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9maXJzdHNsaWRlIj4KKyAgICA8dmFsdWU+enVyIGVyc3RlbiBTZWl0ZSBzcHJpbmdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTYiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3ByZXNsaWRlIj4KKyAgICA8dmFsdWU+enVyIHZvcmhlcmlnZW4gU2VpdGUgc3ByaW5nZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU3IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9uZXh0c2xpZGUiPgorICAgIDx2YWx1ZT56dXIgbsOkY2hzdGVuIFNlaXRlIHNwcmluZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1OCIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfbGFzdHNsaWRlIj4KKyAgICA8dmFsdWU+enVyIGxldHp0ZW4gU2VpdGUgc3ByaW5nZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU5IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl96b29tbWludXMiPgorICAgIDx2YWx1ZT5ab29tIC0tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MCIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfem9vbXBsdXMiPgorICAgIDx2YWx1ZT5ab29tICsrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MSIgbmFtZT0ic2FsdXRhdGlvbl9tciI+CisgICAgPHZhbHVlPkhlcnI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYyIiBuYW1lPSJzYWx1dGF0aW9uX21pc3MiPgorICAgIDx2YWx1ZT5GcmF1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MyIgbmFtZT0ibmF2aW1haW5fY29uZmFkbWluIj4KKyAgICA8dmFsdWU+S29uZmlndXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjQiIG5hbWU9ImNvbmZ0YWJsZV9oZWFkZXJJZCI+CisgICAgPHZhbHVlPklEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2NSIgbmFtZT0iY29uZnRhYmxlX2hlYWRlcmtleSI+CisgICAgPHZhbHVlPlNjaGzDvHNzZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY2IiBuYW1lPSJjb25mYWRtaW5mb3JtX2hlYWRlciI+CisgICAgPHZhbHVlPktvbmZpZ3VyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY3IiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsa2V5Ij4KKyAgICA8dmFsdWU+U2NobMO8c3NlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjgiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWx1cGRhdGVkIj4KKyAgICA8dmFsdWU+WnVsZXR6dCBiZWFyYmVpdGV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2OSIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbHVwZGF0ZWRieSI+CisgICAgPHZhbHVlPkJlYXJiZWl0ZXQgdm9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MCIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbGNvbW1lbnQiPgorICAgIDx2YWx1ZT5Lb21tZW50YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjcxIiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsa2V5Ij4KKyAgICA8dmFsdWU+U2NobMO8c3NlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzIiIG5hbWU9InR1cm5vdmVybGlzdF9tYXhyZXN1bHRzIj4KKyAgICA8dmFsdWU+dm9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MyIgbmFtZT0ib3JnYW5pc2F0aW9uX3VzZXJzaGVhZGVyIj4KKyAgICA8dmFsdWU+VGVpbG5laG1lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzQiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2ljb25kZWxldGUiPgorICAgIDx2YWx1ZT5UZWlsbmVobWVyIGF1cyBPcmdhbmlzYXRpb24gZW50ZmVybmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NSIgbmFtZT0ib3JnYW5pc2F0aW9uX3VzZXJzZGVsZXRlZGhlYWQiPgorICAgIDx2YWx1ZT5Mw7ZzY2hlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzYiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2FscmVhZGFkZGVkIj4KKyAgICA8dmFsdWU+RGllc2VyIFRlaWxuZWhtZXIgaXN0IGJlcmVpdHMgVGVpbCBkaWVzZXIgT3JnYW5pc2F0aW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzciIG5hbWU9ImRhc2hib2FyZF9uZXdzaGVhZGVyIj4KKyAgICA8dmFsdWU+TmV1aWdrZWl0ZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc4IiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rc2hlYWRlciI+CisgICAgPHZhbHVlPlF1aWNrbGlua3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc5IiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rQ29uZiI+CisgICAgPHZhbHVlPlp1IGRlbiBLb25mZXJlbnpyw6R1bWVuIChtYXguIDQgVGVpbG5laG1lcik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgwIiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rQXVkaXQiPgorICAgIDx2YWx1ZT5adSBkZW4gRXZlbnRyw6R1bWVuICh1bmJlZ3Jlbnp0ZSBadXNjaGF1ZXIpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MSIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua3N1cHBvcnQiPgorICAgIDx2YWx1ZT5IaWxmZSB1bmQgU3VwcG9ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODIiIG5hbWU9ImRhc2hib2FyZF9xdWlja2hvbWVwYWdldXJsIj4KKyAgICA8dmFsdWU+aHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnLzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODMiIG5hbWU9ImRhc2hib2FyZF9xdWlja21haWxpbmdsaXN0dXJsIj4KKyAgICA8dmFsdWU+aHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnL21haWwtbGlzdHMuaHRtbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODQiIG5hbWU9ImRhc2hib2FyZF9yZXBvcnRidWdzIj4KKyAgICA8dmFsdWU+RmVobGVyIG1lbGRlbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg1IiBuYW1lPSJkYXNoYm9hcmRfcnNzbGlzdGl0ZW1saW5rdGV4dCI+CisgICAgPHZhbHVlPk1laHI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg2IiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5raG9tZXBhZ2VsYWJlbCI+CisgICAgPHZhbHVlPlByb2pla3QgaW0gTmV0eiAoaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODciIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmttYWlsaW5nbGlzdGxhYmVsIj4KKyAgICA8dmFsdWU+TWFpbGluZyBMaXN0ZSBUZWlsbmVobWVyIChodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvbWFpbC1saXN0cy5odG1sKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODgiIG5hbWU9ImxvZ2luX3JlbWVtYmVydXNlciI+CisgICAgPHZhbHVlPkxvZ2luIG1lcmtlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODkiIG5hbWU9Im1haW5fbmF2aSI+CisgICAgPHZhbHVlPkRhdGVpZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkwIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+TWVpbmUgw5xiZXJzaWNodDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTEiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5NZWV0aW5ncyBwbGFuZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkyIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+TWVpbmUgRXZlbnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MyIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPsOWZmZlbnRsaWNoZSBNZWV0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTQiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5Qcml2YXRlIE1lZXRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NSIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPsOWZmZlbnRsaWNoZSBFdmVudHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk2IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+UHJpdmF0ZSBFdmVudHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk3IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+w5ZmZmVudGxpY2hlIERhdGVpZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk4IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+UHJpdmF0ZSBEYXRlaWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5OSIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPlBlcnPDtm5saWNoZSBEYXRlaWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDEiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5Nb2RlcmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMiIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPk1vZGVyYXRpb25zcmVjaHQgYW5mb3JkZXJuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMyIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPlVtZnJhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA0IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+RGF0ZWkgYXVzd8OkaGxlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDUiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5FaW5zdGVsbHVuZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNiIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPkthbWVyYS0vTWlrcm9mb24tRWluc3RlbGx1bmdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDciIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5aZWljaGVuYnJldHQtRWluc3RlbGx1bmdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDgiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5WZXJsYXNzZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA5IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+WnVyw7xjayB6dXIgUmF1bS3DnGJlcnNpY2h0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMCIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPkFibWVsZGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5QYXNzd29ydCB6dXLDvGNrc2V0enRlbj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEyIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlBhc3N3b3J0IHp1csO8Y2tzZXR6ZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEzIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPkJlaSBFLU1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE0IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPkJlaSBMb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTUiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+RS1NYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxNiIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTciIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+RGF0ZWllbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTgiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+RS1NYWlsIG1pdCBSZXNldC1MaW5rIHZlcnNlbmRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTkiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+R2ViZW4gU2llIGJpdHRlIGVudHdlZGVyIGVpbmUgRS1NYWlsIG9kZXIgZWluZW4gTG9naW4gYW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyMCIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5FcyBleGlzdGllcnQga2VpbiBUZWlsbmVobWVyIG1pdCBkaWVzZW0gTmFtZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyMSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5EaWUgRS1NYWlsIG1pdCBkZW0gZGF6dWdlaMO2cmlnZW4gTGluayB3dXJkZSBhbiBJaHJlIEUtTWFpbC1BZHJlc3NlIGdlc2FuZHQuIEJpdHRlIMO8YmVycHLDvGZlbiBTaWUgSWhyZW4gUG9zdGVpbmdhbmcuIEZhbGxzIFNpZSBpbW1lciBub2NoIGtlaW5lIEUtTWFpbCBlcmhhbHRlbiBoYWJlbiwga29ycmlnaWVyZW4gU2llIGJpdHRlIElocmUgU3BhbS1FaW5zdGVsbHVuZ2VuIHVuZCBzZW5kZW4gU2llIGRpZSBFLU1haWwgbm9jaG1hbHMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyMiIgbmFtZT0iZXJyb3J0eXBlIj4KKyAgICA8dmFsdWU+RmVobGVyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjMiIG5hbWU9ImVycm9ydHlwZSI+CisgICAgPHZhbHVlPk5hY2hyaWNodDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjQiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPlVuZ8O8bHRpZ2VyIEhhc2guPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNSIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+UGFzc3dvcnQgenVyw7xja3NldHplbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjYiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPkxvZ2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNyIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+UGFzc3dvcnQgw6RuZGVybjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjgiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPk5ldWVzIFBhc3N3b3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyOSIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+UGFzc3dvcnQgd2llZGVyaG9sZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMwIiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5EaWUgdm9uIElobmVuIGFuZ2VnZWJlbmVuIFBhc3N3w7ZydGVyIHNpbmQgbmljaHQgaWRlbnRpc2NoLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzEiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPjQgb2RlciBtZWhyIEJ1Y2hzdGFiZW4uIEdyb8OfLSB1bmQgS2xlaW5zY2hyZWlidW5nIGJlYWNodGVuITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzIiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPlBhc3N3b3J0IGdlc3BlaWNoZXJ0LiBTaWUga8O2bm5lbiBzaWNoIG51biBkYW1pdCBlaW5sb2dnZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzMyIgbmFtZT0icnBjY2FsbGJhY2siPgorICAgIDx2YWx1ZT5PSzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzQiIG5hbWU9InJwY2dlbmVyYWxlcnJvciI+CisgICAgPHZhbHVlPkZlaGxlciEgQml0dGUgd2VuZGVuIFNpZSBzaWNoIGFuIGRpZSBNaXRhcmJlaXRlciBkZXIgS29vcmRpbmF0aW9uc3N0ZWxsZSBFLUxlYXJuaW5nIHVudGVyIGVsZWFybmluZ0B1bmktdHJpZXIuZGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5CZW51dHplcm5hbWUgbmljaHQgZ2VmdW5kZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM2IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlVuZ8O8bHRpZ2VzIFBhc3N3b3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNyIgbmFtZT0ibG9nb3V0Ij4KKyAgICA8dmFsdWU+RXJmb2xncmVpY2ggYXVzZ2Vsb2dndDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzgiIG5hbWU9InJlZ2lzdHJhdGlvbiI+CisgICAgPHZhbHVlPlJlZ2lzdHJpZXJ1bmcgaXN0IGF1c2dlc2NoYWx0ZXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzOSIgbmFtZT0icmVnaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+VW5nw7xsdGlnZSBFLU1haWwtQWRyZXNzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDAiIG5hbWU9InJlZ2lzdHJhdGlvbiI+CisgICAgPHZhbHVlPkRpZXNlciBEYXRlaW5hbWUgd2lyZCBzY2hvbiB2ZXJ3ZW5kZXQuIEJpdHRlIGdlYmVuIFNpZSBlaW5lbiBhbmRlcmVuIGFuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDEiIG5hbWU9ImZpbGVicm93c2VyIj4KKyAgICA8dmFsdWU+RGF0ZWluYW1lIHp1IGt1cno8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQyIiBuYW1lPSJmaWxlYnJvd3NlciI+CisgICAgPHZhbHVlPkFkcmVzc2Uga29ubnRlIG5pY2h0IGdlc3BlaWNoZXJ0IHdlcmRlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQzIiBuYW1lPSJ1c2VyYWRtaW4iPgorICAgIDx2YWx1ZT5CZW51dHplciBoaW56dWdlZsO8Z3QuIFZlcmdlc3NlbiBTaWUgbmljaHQgZGllc2VtIEJlbnV0emVyIGF1Y2ggZWluZSBPcmdhbmlzYXRpb24gaGluenV6dWbDvGdlbi4gQmVudXR6ZXIgb2huZSBPcmdhbmlzYXRpb24ga8O2bm5lbiBzaWNoIG5pY2h0IGVpbmxvZ2dlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ0IiBuYW1lPSJhZG1pbmZvcm1zIj4KKyAgICA8dmFsdWU+TmV1ZXIgRGF0ZW5zYXR6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+RXMga29ubnRlIGtlaW4gRmVsZCB6dSBkaWVzZXIgSUQgZXJtaXR0ZWx0IHdlcmRlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ2IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5FcyBrb25udGUga2VpbiBMYWJlbCBmw7xyIGRpZXNlIElEIGVybWl0dGVsdCB3ZXJkZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NyIgbmFtZT0iZXJyb3JtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2llIG3DvHNzZW4gQWRtaW5pc3RyYXRvciBzZWluLCB1bSBkaWVzZSBBa3Rpb24gYXVzenVmw7xocmVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDgiIG5hbWU9Im1haW5uYXZpIj4KKyAgICA8dmFsdWU+U3ByYWNoLUVkaXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDkiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPlNwcmFjaGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUwIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5MYWJlbC1JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTEiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkxhYmVsLU5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUyIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5XZXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1MyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+RmVsZHdlcnRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1NCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TGFiZWxOYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1NSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TGFiZWxXZXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1NiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TGFiZWwtSUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU3IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5TaWUgaGFiZW4gbnVyIGRhcyBMYWJlbCBnZWzDtnNjaHQgbmljaHQgZGFzIEZlbGQhIERhcyBGZWxkIGvDtm5udGUgbm9jaCBSZWZlcmVuemVuIGluIGFuZGVyZW4gU3ByYWNoZW4gYmVpbmhhbHRlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU4IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5VbmfDvGx0aWdlIExhYmVsaWQuIEZpZWxkTGFuZ3VhZ2VzdmFsdWVzX0lkIGthbm4gaW4gZGVyIERhdGVuYmFuayBuaWNodCBnZWZ1bmRlbiB3ZXJkZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1OSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+U2llIGvDtm5uZW4gZGllc2VzIEZlbGQgbmljaHQgbMO2c2NoZW4uIFNpZSBrw7ZubmVuIG51ciBMYWJlbHMsIG5pY2h0IGFiZXIgRmVsZGVyIGzDtnNjaGVuLiBadXIgWmVpdCBpc3Qga2VpbiBMYWJlbCBnZWxhZGVuLCBlbnR3ZWRlciBpc3Qga2VpbiBGZWxkIGF1c2dld8OkaGx0IG9kZXIgZXMgZ2lidCBrZWluIExhYmVsIGluIGRpZXNlciBTcHJhY2hlIGbDvHIgZGFzIEZlbGQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+RXhwb3J0aWVyZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYxIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5TaWUgbcO8c3NlbiBzaWNoIG5ldSBhbm1lbGRlbiwgdW0gw4RuZGVydW5nZW4genUgc2VoZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TmV1ZSBTcHJhY2hlIGFubGVnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYzIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5TcHJhY2hlIGzDtnNjaGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TmV1ZSBTcHJhY2hlIGFubGVnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY1IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+U3ByYWNoZSBhbmxlZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+U2ljaGVydW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2OCIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+WnVtIEVyc3RlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjkiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPlp1bSBMZXR6dGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MCIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+WnVtIE7DpGNoc3RlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzEiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPlp1bSBMZXR6dGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MiIgbmFtZT0idmlkZW9ib3giPgorICAgIDx2YWx1ZT5UZWlsbmVobWVyIHNwcmljaHQgKEJ5IGNsaWNraW5nIGhlcmUgeW91IGNhbiBnaXZlIGV4Y2x1c2l2ZSBhdWRpbyAvIG11dGUgdGhlIG1pY3JvcGhvbmUgb2Ygb3RoZXJzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzMiIG5hbWU9InZpZGVvYm94Ij4KKyAgICA8dmFsdWU+U291bmQgYW4vYXVzc2NoYWx0ZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc0IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT7DnGJlcnNpY2h0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3NSIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+SWhyIFByb2ZpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzYiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPkhhbGxvLDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzciIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPlByb2ZpbCBiZWFyYmVpdGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3OCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+VW5nZWxlc2VuZSBOYWNocmljaHRlbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc5IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5CaWxkIMOkbmRlcm48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgwIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPkJlbnV0emVyZGF0ZW4gLSBFeHBvcnRpZXJlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODEiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+QWxsZSBPcmdhbmlzYXRpb25lbiBtw7xzc2VuIGJlcmVpdHMgdm9yaGFuZGVuIHNlaW4hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4MiIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5TdGFydGUgRXhwb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4MyIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5OYWNoIE9yZ2FuaXNhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODQiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+U3RhcnRlIEV4cG9ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODUiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+QmVudXR6ZXJkYXRlbiAtIEltcG9ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODYiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+V8OkaGxlbiBTaWUgdXNlcnMueG1sIGF1czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODciIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPmltcG9ydGllcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg4IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5FeHBvcnRpZXJlIGFscyBYTUwgLSBEaWVzZSBEYXRlaWVuIGvDtm5uZW4gYmVudXR6dCB3ZXJkZW4gYWxzOiBCZWl0cmFnIHp1bSBQcm9qZWt0IC0gSW1wb3J0IGluIGVpbiBhbmRlcmVzIFN5c3RlbSAtIFNpY2hlcnVuZyAtIGt1bmRlbnNwZXppZmlzY2hlIEFucGFzc3VuZyAtIEFibGFnZSBpbSBTcHJhY2h2ZXJ6ZWljaG5pbnMgZsO8ciBJaHJlIG7DpGNoc3RlIEluc3RhbGxhdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg5IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5Xw6RobGVuIFNpZSBlaW5lIFNwcmFjaGRhdGVpIGbDvHIgZGVuIEltcG9ydCBhdXMuIFfDpGhsZW4gU2llIGRpZSBwYXNzZW5kZSBTcHJhY2hlIGF1cyBkZXIgQ29tYm9ib3ghIEVnYWwgd2VsY2hlbiBOYW1lbiBkaWUgRGF0ZWkgaGF0LCBzaWUgd2lyZCBpbiBkaWVzZSBTcHJhY2hlIGltcG9ydGllcnQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5MCIgbmFtZT0iaW1wb3J0d2luZG93Ij4KKyAgICA8dmFsdWU+SW1wb3J0IC0gV8OkaGxlbiBTaWUgZWluZSBEYXRlaSBhdXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkxIiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+U3BlaWNoZXJuIHVudGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5MiIgbmFtZT0icmVjb3JkaW5nc2F2ZXdpbiI+CisgICAgPHZhbHVlPk5hbWU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5MyIgbmFtZT0icmVjb3JkaW5nc2F2ZXdpbiI+CisgICAgPHZhbHVlPktvbW1lbnRhcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk0IiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+U3BlaWNoZXJuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+QXVmbmFobWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NiIgbmFtZT0icmVjb3JkZXIiPgorICAgIDx2YWx1ZT5BdWZuYWhtZW4gYW5zZWhlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTciIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkF1Zm5haG1lbiBhdXMgYWxsZW4gUsOkdW1lbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTgiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPlRlaWxuZWhtZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5OSIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+TWl0Z2xpZWQgc2VpdDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAwIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAxIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5UZWlsbmVobWVyIGluIGRpZXNlbSBSYXVtOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDIiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPk5ldSBsYWRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDMiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPkRpZXNlciBSYXVtIGlzdCB2b2xsLiBCaXR0ZSB2ZXJzdWNoZW4gU2llIGVzIHNww6R0ZXIgbm9jaCBlaW5tYWwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNCIgbmFtZT0icm9vbXNMaXN0Ij4KKyAgICA8dmFsdWU+V8OkaGxlbiBTaWUgZWluZW4gUmF1bSBhdXMsIHVtIERldGFpbHMgenUgZXJoYWx0ZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNSIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+Q2hhdHRlbiBTaWUgbWl0IFRlaWxuZWhtZXJuIGluIGRpZXNlbSBSYXVtOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDYiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPlJhdW06PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNyIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+VGVpbG5laG1lciBpbiBkaWVzZW0gUmF1bTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA4IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5TZWl0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDkiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkF1Zm5haG1lIGFic3BpZWxlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTAiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkzDpG5nZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDExIiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5EYXR1bTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDEyIiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5BdWZuYWhtZSEgU2llIGvDtm5uZW4gaGllciBuaWNodHMgbWVociDDpG5kZXJuIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTMiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkF1Zm5haG1lIGFic3BpZWxlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTQiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkFic3BpZWxlbiAvIFBhdXNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxNSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+QXVmbmFobWUgc3RhcnRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTYiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkF1Zm5haG1lIGJlZW5kZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE3IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5BdWZuYWhtZW46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxOCIgbmFtZT0icmVjb3JkX2Vycm9yX21zZyI+CisgICAgPHZhbHVlPkRpZSBBdWZuYWhtZSBpc3QgYmVyZWl0cyBnZXN0YXJ0ZXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxOSIgbmFtZT0icmVjb3JkX21lc3NhZ2UiPgorICAgIDx2YWx1ZT5BdWZuYWhtZSBnZXN0YXJ0ZXQhIFZvbiBUZWlsbmVobWVyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjAiIG5hbWU9InJlY29yZF9jYW5jZWwiPgorICAgIDx2YWx1ZT5BYmJyZWNoZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIxIiBuYW1lPSJyZWNvcmRfY2FuY2FsX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5BdWZuYWhtZSB3aXJkIGFiZ2Vicm9jaGVuIHVuZCBuaWNodCBnZXNwZWljaGVydC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIyIiBuYW1lPSJjYW5jZWxfZGlhbG9nX3Jlc3VtZSI+CisgICAgPHZhbHVlPkZvcnRzZXR6ZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIzIiBuYW1lPSJjYW5jZWxfZGlhbG9nX3Jlc3VtZV90b29sdGlwIj4KKyAgICA8dmFsdWU+QXVmbmFobWUgZm9ydHNldHplbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjQiIG5hbWU9InBhaW50dG9vbHNfZWxsaXBzZV9jb2xvciI+CisgICAgPHZhbHVlPkxpbmllbmZhcmJlIMOkbmRlcm48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI1IiBuYW1lPSJjb2xvcnBpY2tlcl9oZWFkIj4KKyAgICA8dmFsdWU+RmFyYmUgYXVzd8OkaGxlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjYiIG5hbWU9InBhaW50dG9vbHNfbGluZV9kaXNhYmxlIj4KKyAgICA8dmFsdWU+UmFuZGZhcmJlIGRlL2FrdGl2aWVyZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI3IiBuYW1lPSJwYWludHRvb2xzX2ZpbGxfZGlzYWJsZSI+CisgICAgPHZhbHVlPkbDvGxsZmFyYmUgw6RuZGVybjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjgiIG5hbWU9InBhaW50dG9vbHNfbGluZV9kaXNhYmxlIj4KKyAgICA8dmFsdWU+RsO8bGxmYXJiZSBkZS9ha3RpdmllcmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyOSIgbmFtZT0iY2hhbmdlX3dpZHRoX2Fycm93X2Rvd25fc2xpZGVyIj4KKyAgICA8dmFsdWU+TGluaWVuc3TDpHJrZSDDpG5kZXJuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzMCIgbmFtZT0iY2xvc2Vfc21hbGxfcG9wdXBzIj4KKyAgICA8dmFsdWU+U2NobGllw59lbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzEiIG5hbWU9InBhaW50X3Rvb2xfbGV0dGVyIj4KKyAgICA8dmFsdWU+U2NocmlmdGdyw7bDn2UgYW5wYXNzZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMyIiBuYW1lPSJyZWNvcmRpbmdzbGlzdF9kZWxldGUiPgorICAgIDx2YWx1ZT5BdWZuYWhtZSBsw7ZzY2hlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzMiIG5hbWU9InJlY29yZGluZ3NsaXN0X3JlY29yZGVkQnlHdWVzdCI+CisgICAgPHZhbHVlPkfDpHN0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzQiIG5hbWU9InJlY29yZGluZ3NsaXN0X3JlY29yZGVkYnkiPgorICAgIDx2YWx1ZT5Wb246PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNSIgbmFtZT0icmVjb3JkaW5nc190YWJsZV9oZWFkX25hbWUiPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNiIgbmFtZT0icmVjb3JkaW5nc190YWJsZV9oZWFkX3Jvb20iPgorICAgIDx2YWx1ZT5SYXVtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNyIgbmFtZT0icmVjb3JkaW5nc190YWJsZV9oZWFkX2RhdGUiPgorICAgIDx2YWx1ZT5EYXR1bTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzgiIG5hbWU9InJlY29yZF9zdGFydF9jYW5jZWwiPgorICAgIDx2YWx1ZT5BYmJyZWNoZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM5IiBuYW1lPSJyZWNvcmRfc3RhcnRfc3RhcnQiPgorICAgIDx2YWx1ZT5TdGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDAiIG5hbWU9ImZpbGVzYnJvd3Nlcl90YWJsZV9oZWFkX25hbWUiPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MSIgbmFtZT0iZmlsZXNicm93c2VyX3RhYmxlX2hlYWRfZGF0ZSI+CisgICAgPHZhbHVlPkRhdHVtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MiIgbmFtZT0iY2hhdF9jbGVhcl9oaXN0b3J5Ij4KKyAgICA8dmFsdWU+Q2hhdGxvZyBsw7ZzY2hlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDMiIG5hbWU9ImNoYXRfb3ZlcmFsbF9oZWFkZXIiPgorICAgIDx2YWx1ZT5DaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NCIgbmFtZT0iY2hhdF9zZW5kX2J0biI+CisgICAgPHZhbHVlPk5hY2hyaWNodCBhYnNjaGlja2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NSIgbmFtZT0iY2hhdF9lbW90X2J0biI+CisgICAgPHZhbHVlPkVtb3RpY29uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDYiIG5hbWU9ImNoYXRfZW1vdF93aW4iPgorICAgIDx2YWx1ZT5FbW90aWNvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ3IiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Xw6RobGVuIFNpZSBkaWUgR2Vyw6R0ZSBhdXM6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0OCIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2NvbWJvIj4KKyAgICA8dmFsdWU+VG9uIHVuZCBWaWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDkiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPm51ciBUb24oTWlrcm9mb24pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1MCIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2NvbWJvIj4KKyAgICA8dmFsdWU+bnVyIFZpZGVvKFdlYmNhbSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUxIiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT5rZWluIFZpZGVvL1RvbiAobnVyIFByb2ZpbC1CaWxkKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTIiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19pbmZvX3RleHQiPgorICAgIDx2YWx1ZT5LZWluIFZpZGVvL1RvbiB2ZXLDtmZmZW50bGljaGVuLiBXw6RobGVuIFNpZSBkaWVzZSBFaW5zdGVsbHVuZyB3ZW5uIGRpZSB2ZXJmw7xnYmFyZSBCYW5kYnJlaXRlIHNlaHIgbmllZHJpZyBpc3QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1MyIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9tb25kYXkiPgorICAgIDx2YWx1ZT5NTzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTQiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfdHVlc2RheSI+CisgICAgPHZhbHVlPkRJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV93ZWRuZXNkYXkiPgorICAgIDx2YWx1ZT5NSTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTYiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfdGh1cnNkYXkiPgorICAgIDx2YWx1ZT5ETzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTciIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfZnJpZGF5Ij4KKyAgICA8dmFsdWU+RlI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU4IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3NhdHVyZGF5Ij4KKyAgICA8dmFsdWU+U0E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU5IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3N1bmRheSI+CisgICAgPHZhbHVlPlNPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9tb25kYXkiPgorICAgIDx2YWx1ZT5Nb250YWc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYxIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1R1ZXNkYXlMYWJlbCI+CisgICAgPHZhbHVlPkRpZW5zdGFnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MiIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9XZWRuZXNkYXlMYWJlbCI+CisgICAgPHZhbHVlPk1pdHR3b2NoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MyIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9UaHVyc2RheUxhYmVsIj4KKyAgICA8dmFsdWU+RG9ubmVyc3RhZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjQiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfRnJpZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5GcmVpdGFnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9TYXR1cmRheUxhYmVsIj4KKyAgICA8dmFsdWU+U2Ftc3RhZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjYiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfU3VuZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5Tb25udGFnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NyIgbmFtZT0iY2FsZW5kYXJfd2Vla251bWJlcl9oZWFkZXIiPgorICAgIDx2YWx1ZT5LVzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjgiIG5hbWU9ImNhbGVuZGFyX3dlZWtudW1iZXJfaGVhZGVyVG9vbHRpcCI+CisgICAgPHZhbHVlPkthbGVuZGVyd29jaGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY5IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+SmFudWFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3MCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPkZlYnJ1YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDcxIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+TcOkcno8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDcyIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+QXByaWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDczIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+TWFpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3NCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPkp1bmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc1IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+SnVsaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzYiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5BdWd1c3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc3IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+U2VwdGVtYmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3OCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPk9rdG9iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc5IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+Tm92ZW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgwIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+RGV6ZW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgxIiBuYW1lPSJjYWxlbmRhcndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5LYWxlbmRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODIiIG5hbWU9InJvb21hZG1pbl9sYWJlbE51bWJlck9mUGFydGljaXBhbnRzIj4KKyAgICA8dmFsdWU+VGVpbG5laG1lcnphaGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgzIiBuYW1lPSJyb29tVmFsdWVfYWR2YW5jZWRTZXR0aW5ncyI+CisgICAgPHZhbHVlPlplaWdlIExheW91dGVpbnN0ZWxsdW5nZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg0IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3ZpZGVvWCI+CisgICAgPHZhbHVlPlggfCBZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NSIgbmFtZT0icm9vbUFkbWluX2xheW91dF92aWRlb1kiPgorICAgIDx2YWx1ZT5CcmVpdGUgfCBIw7ZoZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODYiIG5hbWU9InJvb21BZG1pbl9sYXlvdXQiPgorICAgIDx2YWx1ZT5WaWRlby1Db250YWluZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg3IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X21vZCI+CisgICAgPHZhbHVlPk1vZGVyYXRpb25zLUNvbnRhaW5lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODgiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfbW9kX3BvcyI+CisgICAgPHZhbHVlPlg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg5IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5XaGl0ZWJvYXJkLUNvbnRhaW5lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTAiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZF9zaG93Ij4KKyAgICA8dmFsdWU+RW5hYmxlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTEiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZF9wb3MiPgorICAgIDx2YWx1ZT5YIHwgWTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTIiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkJyZWl0ZSB8IEjDtmhlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5MyIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlcyI+CisgICAgPHZhbHVlPkRhdGVpZW4tLCBDaGF0LSwgVGVpbG5laG1lci1Db250YWluZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk0IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X2ZpbGVzX3Nob3ciPgorICAgIDx2YWx1ZT5Ba3RpdjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTUiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXNfcG9zIj4KKyAgICA8dmFsdWU+WCB8IFk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk2IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X2ZpbGVzIj4KKyAgICA8dmFsdWU+QnJlaXRlIHwgSMO2aGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk3IiBuYW1lPSJtb2RlcmF0b3JfZ29uZV9tZXNzYWdlIj4KKyAgICA8dmFsdWU+RGVyIE1vZGVyYXRvciBoYXQgZGVuIFJhdW0gdmVybGFzc2VuLiBTaWUgbcO8c3NlbiBkaWUgTW9kZXJhdGlvbiBiZWFudHJhZ2VuIHdlbm4gU2llIGF1ZiBkYXMgWmVpY2hlbmJyZXR0IHplaWNobmVuIHdvbGxlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk4IiBuYW1lPSJtb2RlcmF0b3JfbWVzc2FnZV9ldmVudF9ub19tb2QiPgorICAgIDx2YWx1ZT5FcyBnaWJ0IG1vbWVudGFuIGtlaW5lbiBNb2RlcmF0b3IgaW4gZGllc2VuIFJhdW0uIFNpZSBtw7xzc2VuIGRpZSBNb2RlcmF0aW9uIGJlYW50cmFnZW4gb2RlciB3YXJ0ZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5OSIgbmFtZT0iZmVlZGJhY2tfdGVtcGxhdGVfc3ViamVjdCI+CisgICAgPHZhbHVlPkZlZWRiYWNrICRBUFBfTkFNRTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDAiIG5hbWU9Imludml0YXRpb25fdGVtcGxhdGVfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSAtIEVpbmxhZHVuZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDEiIG5hbWU9Imludml0YXRpb25fdGV4dF9mcm9tIj4KKyAgICA8dmFsdWU+TmFjaHJpY2h0IHZvbiBUZWlsbmVobWVyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDIiIG5hbWU9Imludml0YXRpb25fdGV4dF9tZXNzYWdlIj4KKyAgICA8dmFsdWU+TmFjaHJpY2h0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDMiIG5hbWU9Imludml0YXRpb25fdGV4dF9jbGlja190ZXh0Ij4KKyAgICA8dmFsdWU+S2xpY2tlbiBTaWUgYXVmIGRpZXNlbiBMaW5rLCB1bSBpbiBkZW4gUmF1bSB6dSBnZWxhbmdlbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA0IiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfY2xpY2tfdGV4dF9saW5rIj4KKyAgICA8dmFsdWU+S2xpY2tlbiBTaWUgaGllcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDUiIG5hbWU9Imludml0YXRpb25fdGV4dF9jbGlja190ZXh0X2hlbHAiPgorICAgIDx2YWx1ZT5XZW5uIGRlciBMaW5rIGZlaGxlcmhhZnQgZGFyZ2VzdGVsbHQgd2lyZCwga29waWVyZW4gU2llIGJpdHRlIGZvbGdlbmRlbiBMaW5rIGluIGRpZSBBZHJlc3N6ZWlsZSBpaHJlcyBCcm93c2Vyczo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA2IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSBSZWdpc3RyaWVydW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwNyIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X2hlYWQyIj4KKyAgICA8dmFsdWU+SWhyZSBCZW51dHplcmRhdGVuOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDgiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF91c2VybmFtZSI+CisgICAgPHZhbHVlPkxvZ2luOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDkiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9wYXNzIj4KKyAgICA8dmFsdWU+UGFzczo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTEwIiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfbWFpbCI+CisgICAgPHZhbHVlPkUtTWFpbDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTExIiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfYnllIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FLVRlYW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTEyIiBuYW1lPSJyZWdpc3Rlcl9tYWlsX3N1YmplY3QiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgUmVnaXN0cmllcnVuZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTMiIG5hbWU9InJlc2V0X3Bhc3N3b3JkX3RlbXBsYXRlX2hlYWQiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgLSBQYXNzd29ydCB6dXLDvGNrc2V0emVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNCIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfdGVzdF9saW5rIj4KKyAgICA8dmFsdWU+S2xpY2tlbiBTaWUgaGllciwgdW0gZWluIG5ldWVzIFBhc3N3b3J0IGVpbnp1Z2ViZW46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNSIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfdGV4dDJfbGluayI+CisgICAgPHZhbHVlPktsaWNrZW4gU2llIGhpZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE2IiBuYW1lPSJyZXNldF9wYXNzd29yZF90ZW1wbGF0ZV90ZXh0M19saW5rIj4KKyAgICA8dmFsdWU+V2VubiBkZXIgTGluayBmZWhsZXJoYWZ0IGRhcmdlc3RlbGx0IHdpcmQsIGtvcGllcmVuIFNpZSBiaXR0ZSBmb2xnZW5kZW4gTGluayBpbiBkaWUgQWRyZXNzemVpbGUgSWhyZXMgQnJvd3NlcnM6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNyIgbmFtZT0icmVzZXRfcGFzc3dvcmRfbWFpbF9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIFBhc3N3b3JkIFJlc2V0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxOCIgbmFtZT0iZGF0ZVJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+Qml0dGUgZ2ViZW4gU2llIGVpbiBnw7xsdGlnZXMgRGF0dW0gYW4sIHp1bSBCZWlzcGllbCAyNC4xMi4yMDAxIChkZC5tbS55eXl5KTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTkiIG5hbWU9ImVtYWlsUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5CaXR0ZSBnZWJlbiBTaWUgZWluZSBnw7xsdGlnZSBFLU1haWwgYW4sIHp1bSBCZWlzcGllbCBuYW1lQG1haWwuY29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyMCIgbmFtZT0iZmxvYXRSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPkJpdHRlIGdlYmVuIFNpZSBlaW5lIEZsaWXDn2tvbW1hemFobCBhbiwgenVtIEJlaXNwaWVsIDEuMDA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIxIiBuYW1lPSJudW1iZXJSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPkJpdHRlIGdlYmVuIFNpZSBlaW5lIEdhbnp6YWhsIGFuLCB6dW0gQmVpc3BpZWwgMTAwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyMiIgbmFtZT0icGhvbmVSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPkJpdHRlIGdlYmVuIFNpZSBlaW5lIGfDvGx0aWdlIFRlbGVmb24tTnVtbWVyIGFuLCB6dW0gQmVpc3BpZWwgKys0OSAwMTIzIDEyMzEyMzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjMiIG5hbWU9InRpbWVSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPkJpdHRlIGdlYmVuIFNpZSBlaW5lIGfDvGx0aWdlIFVocnplaXQgYW4sIHp1bSBCZWlzcGllbCAxMjoyMyAoaGg6bW0pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3ciPgorICAgIDx2YWx1ZT5QYXNzd29ydCBnZXNjaMO8dHp0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNSIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfcGFzc3dvcmRMYWJlbCI+CisgICAgPHZhbHVlPlBhc3N3b3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNiIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWRMYWJlbCI+CisgICAgPHZhbHVlPkfDvGx0aWdrZWl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNyIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWQiPgorICAgIDx2YWx1ZT5JbW1lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjgiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkIj4KKyAgICA8dmFsdWU+WmVpdHNwYW5uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjkiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkIj4KKyAgICA8dmFsdWU+RWlubWFsaWc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMwIiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZEZyb21MYWJlbCI+CisgICAgPHZhbHVlPkfDvGx0aWcgYWI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMSIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWRUb0xhYmVsIj4KKyAgICA8dmFsdWU+R8O8bHRpZyBiaXM6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMiIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfTWFpbFN1YmplY3QiPgorICAgIDx2YWx1ZT5FaW5sYWR1bmcgZsO8ciBkaWVzZSBLb25mZXJlbno8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMzIiBuYW1lPSJpbnZpdGF0aW9uX2Vycm9yIj4KKyAgICA8dmFsdWU+S2VpbmUgRWlubGFkdW5nIGbDvHIgZGllc2VuIENvZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM0IiBuYW1lPSJpbnZpdGF0aW9uX2Vycm9yIj4KKyAgICA8dmFsdWU+RGllIEVpbmxhZHVuZyBpc3QgbmljaHQgbWVociBnw7xsdGlnLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzUiIG5hbWU9Imludml0YXRpb25fZXJyb3IiPgorICAgIDx2YWx1ZT5EaWUgRWlubGFkdW5nIGlzdCBuaWNodCBtZWhyIGfDvGx0aWcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzNiIgbmFtZT0iaW52aXRhdGlvbl9wYXNzIj4KKyAgICA8dmFsdWU+UGFzc3dvcnQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzNyIgbmFtZT0iaW52aXRhdGlvbl9wYXNzX2J0biI+CisgICAgPHZhbHVlPlBhc3N3b3J0IMO8YmVycHLDvGZlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzgiIG5hbWU9Imludml0YXRpb25fcGFzc19lcnJvciI+CisgICAgPHZhbHVlPkZhbHNjaGVzIFBhc3N3b3J0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzkiIG5hbWU9IkJyb3dzZXIiPgorICAgIDx2YWx1ZT5Ccm93c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0MCIgbmFtZT0iYXVkaW9fdmlkZW8iPgorICAgIDx2YWx1ZT5Ub24vVmlkZW8gbmV1IHN0YXJ0ZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQxIiBuYW1lPSJlcnJvckNvZGVfaW52YWxpZFNlc3Npb24iPgorICAgIDx2YWx1ZT5TaXR6dW5nIGFiZ2VsYXVmZW4gb2RlciB1bmfDvGx0aWcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0MiIgbmFtZT0iZXJyb3Jjb2RlX3NldFVzZXJPYmplY3QiPgorICAgIDx2YWx1ZT5TZXNzaW9uSWQgaXN0IG5pY2h0IGVpbmdlbG9nZ3Qgb2RlciBoYXQga2VpbmUgQWRtaW5pc3RyYXRvcnJlY2h0ZS4gRGFzIFNPQVAgR2F0ZXdheSBiZW7DtnRpZ3QgZWluZW4gQmVudXR6ZXIgbWl0IEFkbWluLVJlY2h0ZW4gdW0gZWluZW4gbmV1ZW4gTnV0emVyIGVpbnp1YmV0dGVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDMiIG5hbWU9ImVycm9yY29kZV9sb2dpbkJ5UmVtb3RlVXNlciI+CisgICAgPHZhbHVlPkRpZXNlIFNpdHp1bmcgc3RlaHQgbWl0IGtlaW5lciBSZW1vdGV1c2VyLURhdGEgaW4gVmVyYmluZHVuZy4gRW50d2VkZXIgaGFiZW4gU2llIGRhcyBTT0FQLUdhdGV3YXkgdm9yIGRlbSBadWdyaWZmIGF1ZiBkaWUgQW53ZW5kdW5nIG5pY2h0IGdlcnVmZW4gb2RlciBTaWUgYmVudXR6ZW4gZGllIGZhbHNjaGUgU2l0enVuZ3MtSUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ0IiBuYW1lPSJkZWJ1Z19tZXNzYWdlX3JlY29yZGluZyI+CisgICAgPHZhbHVlPkRpZSBBdWZuYWhtZSB2b24gTWVldGluZ3MgaXN0IG5vY2ggQmV0YSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ1IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWFZhbHVlIj4KKyAgICA8dmFsdWU+eDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDYiIG5hbWU9InByb3BlcnR5UGFuZWxYVmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPngtQWNoc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ3IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWVZhbHVlIj4KKyAgICA8dmFsdWU+eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDgiIG5hbWU9InByb3BlcnR5UGFuZWxZVmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPnktQWNoc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ5IiBuYW1lPSJwcm9wZXJ0eVBhbmVsV2lkdGhWYWx1ZSI+CisgICAgPHZhbHVlPnc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUwIiBuYW1lPSJwcm9wZXJ0eVBhbmVsV2lkdGhWYWx1ZUxhYmVsIj4KKyAgICA8dmFsdWU+QnJlaXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1MSIgbmFtZT0icHJvcGVydHlQYW5lbEhlaWdodFZhbHVlIj4KKyAgICA8dmFsdWU+aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTIiIG5hbWU9InByb3BlcnR5UGFuZWxIZWlnaHRWYWx1ZUxhYmVsIj4KKyAgICA8dmFsdWU+SMO2aGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUzIiBuYW1lPSJwcm9wZXJ0eU9wYWNpdHlTbGlkZXIiPgorICAgIDx2YWx1ZT5UcmFuc3BhcmVueiDDpG5kZXJuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1NCIgbmFtZT0iYnJvd3Nlck9wZW4iPgorICAgIDx2YWx1ZT5Ccm93c2VyIG9mZmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1NSIgbmFtZT0iYnJvd3NlckNsb3NlIj4KKyAgICA8dmFsdWU+QnJvd3NlciBnZXNjaGxvc3NlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTYiIG5hbWU9ImNvbm5lY3Rpb25Mb3N0TWVzc2FnZSI+CisgICAgPHZhbHVlPkRpZSBWZXJiaW5kdW5nIHp1bSBTZXJ2ZXIgaXN0IGFiZ2Vicm9jaGVuLiBQcsO8ZmVuIFNpZSBpaHJlIE5ldHp3ZXJrLVZlcmJpbmR1bmcgdW5kIHN0YXJ0ZW4gU2llIGRpZSBBbndlbmR1bmcgbmV1LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTciIG5hbWU9IjU1NyI+CisgICAgPHZhbHVlPlBvaW50ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU4IiBuYW1lPSJzeW5jIG1lc3NhZ2UgaGVhZGVyIj4KKyAgICA8dmFsdWU+U3luY2hyb25pc2llcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU5IiBuYW1lPSJTeW5jaHJvbml6aW5nIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UZWlsbmVobWVyIHdlcmRlbiBzeW5jaHJvbmlzaWVydCwgYml0dGUgd2FydGVuIFNpZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYwIiBuYW1lPSJleHBvcnRUb1NWRyI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O0Rvd25sb2FkIGFscyBTVkcmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MSIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O0Rvd25sb2FkIGFscyBQTkcmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MiIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O0Rvd25sb2FkIGFscyBKUEcmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MyIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O0Rvd25sb2FkIGFscyBQREYmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2NCIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O0Rvd25sb2FkIGFscyBUSUYmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2NSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkVyaW5uZXJ1bmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY2IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+S2F0ZWdvcmllPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2NyIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPldpZWRlcmhvbHVuZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjgiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5LZWluZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjkiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5PcnQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MCIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPlN0YXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkVuZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTcyIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+VGl0ZWw6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MyIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPktvbW1lbnRhcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc0IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+SmVtYW5kZW4gZWlubGFkZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc1IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+dMOkZ2xpY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc2IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+bW9uYXRsaWNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NyIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPmrDpGhybGljaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzgiIG5hbWU9ImFsZXJ0Ij4KKyAgICA8dmFsdWU+VGVybWluc3RhcnQgbXVzcyB2b3IgVGVybWluZW5kZSBsaWVnZW4hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3OSIgbmFtZT0iYWxlcnQiPgorICAgIDx2YWx1ZT5CaXR0ZSBnZWJlbiBTaWUgZWluZW4gVGl0ZWwgYW4hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MCIgbmFtZT0iNTgwIj4KKyAgICA8dmFsdWU+UlRMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MSIgbmFtZT0iNTgxIj4KKyAgICA8dmFsdWU+QWt0aXZpZXJlbiBTaWUgZGllIGZhbGxzIGVzIHNpY2ggdW0gZWluZSBFaW5nYWJlIGVpbmVyIFJlY2h0cy1OYWNoLUxpbmtzIFNwcmFjaGUgKGFyYWJpc2NoLCBwZXJzaWNoLCBoZWJyw6Rpc2NoKSBoYW5kZWx0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODIiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+U3RhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgzIiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPkF1Zmdlbm9tbWVuZSBLb25mZXJlbnplbiBiZXRyYWNodGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4NCIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT5NZWV0aW5nIC0gRXLDtmZmbmVuIFNpZSBlaW5lIEtvbmZlcmVueiZsdDtici8mZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4NSIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT5FdmVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODYiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+QmVudXR6ZXIsIEtvbmZpZ3VyYXRpb24gdW5kIFZlcndhbHR1bmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg3IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5UZWlsbmVobWVyIGluIGRpZXNlbSBSYXVtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4OCIgbmFtZT0icm9vbSBBZG1pbmlzdHJhdGlvbiByb29tY2xpZW50cyBsaXN0Ij4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg5IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5FaW5sb2dnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkwIiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5EPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5MSIgbmFtZT0ic3dmIHN5bmMgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRva3VtZW50IHdpcmQgZ2VsYWRlbi4gQml0dGUgd2FydGVuIFNpZSBiaXMgYWxsZSBUZWlsbmVobWVyIHN5bmNocm9uaXNpZXJ0IHd1cmRlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkyIiBuYW1lPSJ1cGxvYWQgZGlhbG9nIj4KKyAgICA8dmFsdWU+RG9rdW1lbnQgaG9jaGdlbGFkZW4uIEJpdHRlIHdhcnRlbiBTaWUgYWIgYmlzIGVzIGltcG9ydGllcnQgd3VyZGUgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5MyIgbmFtZT0idXBsb2FkIGRpYWxvZyI+CisgICAgPHZhbHVlPlN0YXJ0ZSBVcGxvYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk0IiBuYW1lPSJ1cGxvYWQgZGlhbG9nIj4KKyAgICA8dmFsdWU+V8OkaGxlbiBTaWUgenVtIEhvY2hsYWRlbiBlaW5lIERhdGVpIHZvbiBJaHJlbSBQQyBhdXMuIFp1Z2VsYXNzZW5lIERhdGVpZm9ybWF0ZTogLnBkZiwgLmpwZywgLmdpZjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTUiIG5hbWU9InVwbG9hZCBEaWFsb2ciPgorICAgIDx2YWx1ZT5BYmJyZWNoZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk2IiBuYW1lPSJ1cGxvYWQgRGlhbG9nIj4KKyAgICA8dmFsdWU+RGF0ZWkgYXVzd8OkaGxlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTciIG5hbWU9ImFkbWluaXN0cmF0aW9uIG5hdmlnYXRpb24iPgorICAgIDx2YWx1ZT5WZXJiaW5kdW5nZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk4IiBuYW1lPSJjb25mYWRtaW4gdmFsdWUgbGlzdCI+CisgICAgPHZhbHVlPldlcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk5IiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+U3RyZWFtaWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAwIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+TG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAxIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+VmVyYnVuZGVuIHNlaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAyIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+UmF1bSAvIEJlcmVpY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAzIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+QXVzbG9nZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwNCIgbmFtZT0ia2ljayB1c2VyIGNvbmZpcm1hdGlvbiBkaWFsb2ciPgorICAgIDx2YWx1ZT5UZWlsbmVobWVyYW5iaW5kdW5nIHRyZW5uZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA1IiBuYW1lPSJraWNrIHVzZXIgY29uZmlybWF0aW9uIGRpYWxvZyI+CisgICAgPHZhbHVlPldvbGxlbiBTaWUgZGllc2VuIFRlaWxuZWhtZXIgd2lya2xpY2ggdm9uIGRpZXNlciBWZXJiaW5ndW5nIHRyZW5uZW4/Jmx0O2JyLyZndDsgRGllc2UgTWHDn25haG1lIGVudGZlcm50IGRlbiBUZWlsbmVobWVyIGxlZGlnbGljaCBhdXMgZGVtIFJhdW0uIERlciBUZWlsbmVobWVyIGthbm4gc2ljaCB3aWVkZXIgZWlubG9nZ2VuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDYiIG5hbWU9ImtpY2sgdXNlciBtZXNzYWdlIGRpYWxvZyI+CisgICAgPHZhbHVlPklocmUgU2l0enVuZyB3dXJkZSBiZWVuZGV0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDciIG5hbWU9InVzZXJhbHRlcnNlbGZfcGhvbmUiPgorICAgIDx2YWx1ZT5UZWxlZm9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwOCIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+VGVpbG5laG1lciBpc3QgTW9kZXJhdG9yIGRpZXNlcyBSYXVtZXMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwOSIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+VGVpbG5laG1lciBoYXQga2VpbmUgWnVncmlmZnNyZWNodGUgenVtIFplaWNoZW5icmV0dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTAiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPk5ldSBzdGFydGVuIHZvbiBUb24vVmlkZW8gb2RlciBFaW5zdGVsbHVuZ2VuIMOkbmRlcm48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjExIiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5EaWVzZW0gVGVpbG5laG1lciBkZW4gWnVnYW5nIHp1bSBaZWljaGVuYnJldHQgZ2V3w6RocmVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTIiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPkRpZXNlbSBUZWlsbmVobWVyIGRlbiBadWdhbmcgenVtIFplaWNoZW5icmV0dCB2ZXJ3ZWhyZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMyIgbmFtZT0iY29uZmVyZW5jZVBhbmVscyI+CisgICAgPHZhbHVlPlRlaWxuZWhtZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE0IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+RGF0ZWllbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTUiIG5hbWU9ImNvbmZlcmVuY2VQYW5lbHMiPgorICAgIDx2YWx1ZT5aZWljaGVuYnJldHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE2IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+Q2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTciIG5hbWU9Im9yZ2FuaXphdGlvbiBjaG9vc2UgaW5mbyI+CisgICAgPHZhbHVlPklociBCZW51dHplci1Qcm9maWwgaXN0IE1pdGdsaWVkIGluIG1laHJlcmVuIE9yZ2FuaXNhdGlvbmVuLiBCaXR0ZSB3w6RobGVuIFNpZSBlaW5lIGbDvHIgZGllc2UgU2l0enVuZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE4IiBuYW1lPSJlcnJvciBtZXNzYWdlIHJvb20gZnVsbCI+CisgICAgPHZhbHVlPkRlciBSYXVtIGlzdCBpbSBNb21lbnQgdm9sbC4gQml0dGUgdmVyc3VjaGVuIFNpZSBlcyBzcMOkdGVyIG5vY2ggZWlubWFsLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTkiIG5hbWU9InJvb210eXBlcyI+CisgICAgPHZhbHVlPlJhdW10eXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIwIiBuYW1lPSJhcHBvaW50ZWRfcm9vbSI+CisgICAgPHZhbHVlPlRlcm1pbiBSYXVtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyMSIgbmFtZT0ic2VydmVydGltZSI+CisgICAgPHZhbHVlPlNlcnZlciBaZWl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyMiIgbmFtZT0iaW52X3JlbWluZGVyX3RlbXBsYXRlX2hlYWQiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgLSBFcmlubmVydW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyMyIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfZnJvbSI+CisgICAgPHZhbHVlPk5hY2hyaWNodCB2b24gVGVpbG5laG1lcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI0IiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9tZXNzYWdlIj4KKyAgICA8dmFsdWU+TmFjaHJpY2h0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjUiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2NsaWNrX3RleHQiPgorICAgIDx2YWx1ZT5LbGlja2VuIFNpZSBhdWYgZGllc2VuIExpbmsgdW0gaW4gZGVuIFJhdW0genUgZ2VsYW5nZW46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNiIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfY2xpY2tfdGV4dF9saW5rIj4KKyAgICA8dmFsdWU+S2xpY2tlbiBTaWUgaGllcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjciIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2NsaWNrX3RleHRfaGVscCI+CisgICAgPHZhbHVlPldlbm4gZGVyIExpbmsgZmVobGVyaGFmdCBkYXJnZXN0ZWxsdCB3aXJkLCBrb3BpZXJlbiBTaWUgYml0dGUgZm9sZ2VuZGVuIExpbmsgaW4gZGllIEFkcmVzc3plaWxlIElocmVzIEJyb3dzZXJzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjgiIG5hbWU9ImJ0bl9zZWFyY2hfaW50ZXJuIj4KKyAgICA8dmFsdWU+U3VjaGUgaW50ZXJuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyOSIgbmFtZT0iYnRuX3NlYXJjaF9leHRlcm4iPgorICAgIDx2YWx1ZT5FeHRlcm5lIFRlaWxuZWhtZXIgZWluZ2ViZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMwIiBuYW1lPSJsYmxfcHJlbmFtZSI+CisgICAgPHZhbHVlPlZvcm5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMxIiBuYW1lPSJsYmxfbmFtZSI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMyIiBuYW1lPSJsYmxfZW1haWwiPgorICAgIDx2YWx1ZT5FLU1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMzIiBuYW1lPSJsb2dvdXRDb25maXJtX3RpdGxlIj4KKyAgICA8dmFsdWU+QWJtZWxkdW5nIGJlc3TDpHRpZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNCIgbmFtZT0ibG9nb3V0Q29uZmlybV9zdXJlX3RvX2xvZ291dF9xdWVzdGlvbiI+CisgICAgPHZhbHVlPldvbGxlbiBTaWUgc2ljaCB3aXJrbGljaCBhdXNsb2dnZW4/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNSIgbmFtZT0ibWFpbiBtZW51Ij4KKyAgICA8dmFsdWU+QWt0aW9uZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM2IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RGVtb3JhdW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RGVtbyBaZWl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzOCIgbmFtZT0ibWVldGluZyBUaW1lciI+CisgICAgPHZhbHVlPk1lZXRpbmcgWmVpdG1lc3NlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzkiIG5hbWU9Im1lZXRpbmcgVGltZXIiPgorICAgIDx2YWx1ZT5EaWVzIGlzdCBlaW4gRGVtby1SYXVtLiBVbSBkaWVzZW4gSGlud2VpcyBhYnp1c2NoYWx0ZW4gc29sbHRlbiBTaWUgZW50d2VkZXIgZWluZW4gcHJpdmF0ZW4gTWVldGluZy1SYXVtIGbDvHIgSWhyZW4gcGVyc8O2bmxpY2hlbiBad2VjayBhdWZzdWNoZW4gb2RlciBJaHJlbiBlaWdlbmVuIFNlcnZlciBhbmxlZ2VuLiBTaWUgd2VyZGVuIGF1dG9tYXRpc2NoIGF1c2dlbG9nZ3QgaW46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MCIgbmFtZT0ibWVldGluZyByb29tIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+TW9kZXJpZXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MSIgbmFtZT0ibW9kZXJhdGVkIHJvb20gd2FpdGluZyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Qml0dGUgd2FydGVuIFNpZSwgYmlzIGRlciBNb2RlcmF0b3IgZGllc2VyIFNpdHp1bmcgZGVuIFJhdW0gYmV0cmV0ZW4gaGF0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDIiIG5hbWU9ImVycm9yIHBvcHVwIj4KKyAgICA8dmFsdWU+T2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQzIiBuYW1lPSJ3aW5kb3cgc2NyZWVuc2hhcmluZyI+CisgICAgPHZhbHVlPkFuZnJhZ2UgQmlsZHNjaGlybWZyZWlnYWJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0NCIgbmFtZT0id2luZG93IHNjcmVlbiBzaGFyaW5nIj4KKyAgICA8dmFsdWU+RWluZ2VoZW5kZSBCaWxkc2NoaXJtZnJlaWdhYmUgdm9uIFRlaWxuZWhtZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0NSIgbmFtZT0id2luZG93IHNjcmVlbiBzaGFyaW5nIj4KKyAgICA8dmFsdWU+U3RhcnRlIEJpbGRzY2hpcm1mcmVpZ2FiZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDYiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RsO8Z2UgZWluIG5ldWVzIE1lZXRpbmcgaGluenU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ3IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPk1lZXRpbmcgUmF1bTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDgiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RXZlbnQgUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDkiIG5hbWU9Im1haW4gbWVudSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+TW9kZXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTAiIG5hbWU9Im1lbnUgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPk1vZGVyaWVyZSBUZWlsbmVobWVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1MSIgbmFtZT0ibWVudSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+TW9kZXJpZXJlIFLDpHVtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTIiIG5hbWU9Im1vZGVyYXRvciBvcmciPgorICAgIDx2YWx1ZT5NPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1MyIgbmFtZT0iY29uZmlybSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+V29sbGVuIFNpZSBkaWVzZW0gVGVpbG5laG1lciBkaWUgTW9kZXJhdGlvbnNyZWNodGUgZsO8ciBkaWUgT3JnYW5pc2F0aW9uIMO8YmVydHJhZ2VuPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTQiIG5hbWU9ImVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5CaXR0ZSB3w6RobGVuIFNpZSB6dWVyc3QgZGllIE9yZ2FuaXNhdGlvbiBhdXMgYmV2b3IgU2llIGVpbmVuIEJlbnV0emVyIGhpbnp1ZsO8Z2VuIHdvbGxlbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU1IiBuYW1lPSJjaG9vc2UgdXNlciB3aW5kb3ciPgorICAgIDx2YWx1ZT5PcmdhbmlzYXRpb24gLSBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU2IiBuYW1lPSJtb2RlcmF0b3Igb3JnIHVzZXJzIj4KKyAgICA8dmFsdWU+U2luZCBTaWUgU2ljaGVyLCBkYXNzIFNpZSBkaWVzZW4gVGVpbG5laG1lciBhdXMgZGVyIE9yZ2FuaXNhdGlvbiBsw7ZzY2hlbiBtw7ZjaHRlbj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU3IiBuYW1lPSJvcmcgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkRpZXNlciBUZWlsbmVobWVyIHZlcmbDvGd0IMO8YmVyIE1vZGVyYXRpb25zcmVjaHRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1OCIgbmFtZT0ib3JnIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5EaWVzZXIgVGVpbG5laG1lciB2ZXJmw7xndCDDvGJlciBrZWluZSBNb2RlcmF0aW9uc3JlY2h0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTkiIG5hbWU9ImVycm9yIG1lc3NhZ2UgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPldvbGxlbiBTaWUgZGllc2VtIFRlaWxuZWhtZXIgZGllIE1vZGVyYXRpb25zcmVjaHRlIGVudHppZWhlbj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYwIiBuYW1lPSJtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+UsOkdW1lIGlubmVyaGFsYiBkZXIgT3JnYW5pc2F0aW9uIGhpbnp1ZsO8Z2VuIG9kZXIgbMO2c2NoZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYxIiBuYW1lPSJkZWxldGUgY29uZmlybSBxdWVzdGlvbiI+CisgICAgPHZhbHVlPldvbGxlbiBTaWUgZGllc2UgQXVmbmFobWUgd2lya2xpY2ggbMO2c2NoZW4/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MiIgbmFtZT0iZGVsZXRlIGNvbmZpcm0gcXVlc3Rpb24gdXNlciBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+V29sbGVuIFNpZSBkaWVzZW4gVGVpbG5laG1lciBhdXMgSWhyZXIgT3JnYW5pc2F0aW9uIHdpcmtsaWNoIGVudGZlcm5lbj8gU2llIGvDtm5uZW4gbnVyIGRpZSBWZXJiaW5kdW5nIHp3aXNjaGVuIGRlbSBUZWlsbmVobWVyIHVuZCBJaHJlciBPcmdhbmlzYXRpb24gbMO2c2NoZW4gLCB1bSBkZW4gVGVpbG5laG1lciB6dSBsw7ZzY2hlbiBiZW7DtnRpZ2VuIFNpZSBBZG1pbmlzdHJhdG9yLVJlY2h0ZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYzIiBuYW1lPSJlcnJvciBtZXNzYWdlIHNlbGYgZGVsZXRpbmciPgorICAgIDx2YWx1ZT5TaWUga8O2bm5lbiBJaHJlbiBlaWdlbmVuIE51dHplcmFjY291bnQgbmljaHQgbMO2c2NoZW4hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NCIgbmFtZT0iZXJyb3IgbWVzc2FnZSBhdXRoIj4KKyAgICA8dmFsdWU+RGllc2UgTWV0aG9kZSBiZW7DtnRpZ3QgZWluIEFkbWluaXN0cmF0b3ItQWNjb3VudCB1bSBhdWZnZXJ1ZmVuIHp1IHdlcmRlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY1IiBuYW1lPSJlcnJvciBtZXNzYWdlIFNPQVAiPgorICAgIDx2YWx1ZT5FcyBpc3Qga2VpbmUgU2l0enVuZyBtaXQgZGllc2VyIElEIHZlcmJ1bmdlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY2IiBuYW1lPSJlcnJvciBtZXNzYWdlIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5EaWVzIGlzdCBlaW4gQWRtaW5pc3RyYXRvci0gb2RlciBNb2RlcmF0b3ItQWNjb3VudC4gRGllc2VzIEFjY291bnQga8O2bm5lbiBTaWUgbnVyIG1pdHRlbHMgZWluZXMgQWRtaW5pc3RyYXRvci1UYWJsZWF1IGJlYXJiZWl0ZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NyIgbmFtZT0iZW1haWwgdmVyaWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+VW0gSWhyZSBSZWdpc3RyYXRpb24gYWJ6dXNjaGxpZcOfZW4ga2xpY2tlbiBTaWUgYml0dGUgYXVmIGRlbiBmb2xnZW5kZW4gTGluay4gT2RlciBrb3BpZXJlbiBTaWUgZGllIFVSTChMaW5rKSBpbiBJaHJlIEJyb3dzZXItQWRyZXNzbGVpc3RlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjgiIG5hbWU9ImVtYWlsIHZlcmlmaWNhdGlvbiI+CisgICAgPHZhbHVlPktsaWNrZW4gU2llIHVtIElocmUgRS1NYWlsIHp1IGJlc3TDpHRpZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2OSIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPkVzIHd1cmRlIGtlaW4gQmVudXR6ZXIgZsO8ciBkaWVzZW4gSGFzaCBnZWZ1bmRlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjcwIiBuYW1lPSJlcnJvck1lc3NhZ2VfVXNlckFjdGl2YXRpb25TZXJ2bGV0IFtBY3RpdmF0ZVVzZXJdIj4KKyAgICA8dmFsdWU+RGllc2VyIEJlbnV0emVyIGlzdCBiZXJlaXRzIGFrdGl2aWVydCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjcxIiBuYW1lPSJlcnJvck1lc3NhZ2VfVXNlckFjdGl2YXRpb25TZXJ2bGV0IFtBY3RpdmF0ZVVzZXJdIj4KKyAgICA8dmFsdWU+U2llIGhhYmVuIElociBBY2NvdW50IGVyZm9sZ3JlaWNoIGFrdGl2aWVydCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjcyIiBuYW1lPSJlcnJvck1lc3NhZ2VfVXNlckFjdGl2YXRpb25TZXJ2bGV0IFtBY3RpdmF0ZVVzZXJdIj4KKyAgICA8dmFsdWU+SmV0enQgZWlubG9nZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3MyIgbmFtZT0ibG9naW5FcnJvck1lc3NhZ2UgPSB1c2VyIHdhcyBub3QgYWN0aXZhdGVkIj4KKyAgICA8dmFsdWU+SWhyIEFjY291bnQgaXN0IG5pY2h0IGFrdGl2aWVydC4gQmVudXR6ZW4gU2llIHp1ZXJzdCBkZW4gTGluayBpbiBkZXIgRS1NYWlsIGRpZSBTaWUgd8OkaHJlbmQgZGVyIFJlZ2lzdHJpZXJ1bmcgZXJoYWx0ZW4gaGFiZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3NCIgbmFtZT0icmVnaXN0ZXIgdmVyaWZpY2F0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TaWUgaGFiZW4gc2ljaCBlcmZvbGdyZWljaCBhbmdlbWVsZGV0LiBXaXIgaGFiZW4gZWluZSBFLU1haWwgbWl0IGVpbmVtIFZlcmlmaXppZXJ1bmdzY29kZSBhbiBJaHJlIEUtTWFpbC1BZHJlc3NlIGdlc2NoaWNrdC4gQml0dGUgw7xiZXJwcsO8ZmVuIFNpZSBJaHJlbiBQb3N0ZWluZ2FuZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc1IiBuYW1lPSJwYXJ0aWNpcGFudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5EaWVzZW0gVGVpbG5laG1lciBkaWUgTW9kZXJhdGlvbnNyZWNodGUgZW50emllaGVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzYiIG5hbWU9InBhcnRpY2lwYW50cyBwYW5lbCI+CisgICAgPHZhbHVlPkRpZXNlbSBUZWlsbmVobWVyIE1vZGVyYXRvaW9uc3JlY2h0ZSDDvGJlcnRyYWdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzciIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlRlaWxuZWhtZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc4IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5adWdhbmcgenVtIFplaWNoZW5icmV0dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzkiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPk1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODAiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlp1bSDDhG5kZXJuIGRlciBCZWFyYmVpdHVuZ3NyZWNodGUgd8OkaGxlbiBTaWUgZGVuIGpld2VpbGlnZW4gVGVpbG5laG1lciBiaXR0ZSBpbiBkZXIgTGlzdGUgYXVzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODEiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkRpZXNlciBUZWlsbmVobWVyIGJlc2l0enQgTW9kZXJhdGlvbnNyZWNodGUsIHNvbWl0IGhhdCBlciBhdWNoIGJlcmVpdHMgWnVncmlmZiBhdWYgZGFzIFplaWNoZW5icmV0dC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgyIiBuYW1lPSJldmVudCB1c2VyIGxpc3QgZXJyb3IiPgorICAgIDx2YWx1ZT5EYXMgc2luZCBTaWUhIFNpZSBrw7ZubmVuIElocmUgZWlnZW5lbiBNb2RlcmF0b3JyZWNodGUgbmljaHQgZW50ZmVybmVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODMiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkF1ZGlvLS9WaWRlby1CZWl0cmFnIGRpZXNlcyBUZWlsbmVobWVycyB6dWxhc3Nlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg0IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5BdWRpby9WaWRlbyBkaWVzZXMgVGVpbG5laG1lcnMgZW50ZmVybmVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODUiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkljaCB3w7xyZGUgZ2VybmUgZGllIE1vZGVyYXRpb24gZGllc2VzIFJhdW1lcyDDvGJlcm5laG1lbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg2IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5JY2ggd8O8cmRlIGdlcm5lIGF1ZiBkZW0gWmVpY2hlbmJyZXR0IHplaWNobmVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODciIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkljaCB3w7xyZGUgZ2VybmUgbWVpbiBBdWRpby9WaWRlbyBtaXQgYW5kZXJlbiB0ZWlsZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg4IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5TaWUgc2luZCBkZXIgTW9kZXJhdG9yIGRpZXNlcyBSYXVtZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg5IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5JaG5lbiBpc3QgZXMgZXJsYXVidCwgYXVmIGRlbSBaZWljaGVuYnJldHQgenUgemVpY2huZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkwIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5JaG5lbiBpc3QgZXMgZXJsYXVidCwgSWhyIEF1ZGlvL1ZpZGVvIG1pdCBhbmRlcmVuIHp1IHRlaWxlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTEiIG5hbWU9ImVycm9ydHlwZSI+CisgICAgPHZhbHVlPk5hY2hyaWNodCBhbiBkZW4gTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5MiIgbmFtZT0iYXBwbHkgZm9yIG1vZCBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGVyIFRlaWxuZWhtZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkzIiBuYW1lPSJhcHBseSBmb3IgbW9kIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53w7xyZGUgZ2VybmUgZGllIE1vZGVyYXRpb24gw7xiZXJuZWhtZW4uIEJpdHRlIGJlbnV0emVuIFNpZSB6dXIgUmVjaHRldmVyZ2FiZSBkYXMgZW50c3ByZWNoZW5kZSBTeW1ib2wgbmViZW4gZGVtIEJlbnV0emVybmFtZW4gaW4gZGVyIFRlaWxuZWhtZXJsaXN0ZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk0IiBuYW1lPSJhcHBseSBmb3Igd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPnfDvHJkZSBnZXJuZSBhdWYgZGFzIFplaWNoZW5icmV0dCB6dWdyZWlmZW4uIEJpdHRlIGJlbnV0emVuIFNpZSB6dXIgUmVjaHRldmVyZ2FiZSBkYXMgU3RpZnQtU3ltYm9sIG5lYmVuIGRlbSBCZW51dHplcm5hbWVuIGluIGRlciBUZWlsbmVobWVybGlzdGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5NSIgbmFtZT0iNjk1Ij4KKyAgICA8dmFsdWU+d8O8cmRlIGdlcm5lIHNlaW4gQXVkaW8vVmlkZW8gbWl0IGFuZGVyZW4gdGVpbGVuLiBCZW51dHplbiBTaWUgZGllIFN0YXR1cy1TeW1ib2xlIG5lYmVuIGRlciBCZW51dHplcmxpc3RlLCB1bSBkYXMgUmVjaHQgbWl0IGFuZGVyZW4gVmlkZW8vQXVkaW8genUgdGVpbGVuIHp1IHZlcmdlYmVuIG9kZXIgenUgdmVyd2VocmVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTYiIG5hbWU9Im1vZGVyYXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPlNpZSBtw7xzc2VuIHdhcnRlbiBiaXMgZGVyIE1vZGVyYXRvciBkZW4gUmF1bSBiZXRyaXR0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTciIG5hbWU9ImNhbGVuZGFyIGJ1dHRvbiI+CisgICAgPHZhbHVlPkFiYnJ1Y2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk4IiBuYW1lPSJjYWxlbmRhciBidXR0b24iPgorICAgIDx2YWx1ZT5TcGVpY2hlcm48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk5IiBuYW1lPSJjYWxlbmRhciBjb21wb25lbnQiPgorICAgIDx2YWx1ZT5UYWc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAwIiBuYW1lPSJjYWxlbmRhciBjb21wb25lbnQiPgorICAgIDx2YWx1ZT5Nb25hdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDEiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPkphaHI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAyIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+RGF0ZWkgaG9jaGxhZGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwMyIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPk9yZG5lciBoaW56dWbDvGdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDQiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Ba3R1YWxpc2llcmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwNSIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlBhcGllcmtvcmI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA2IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+TWVpbmUgRGF0ZWllbiAocGVyc8O2bmxpY2hlcyBMYXVmd2Vyayk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA3IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+S29uZmVyZW56ZG9rdW1lbnRlICjDtmZmZW50bGljaGVzIExhdWZ3ZXJrKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDgiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5EYXRlaSBoaW56dWbDvGdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDkiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5PcmRuZXIgaGluenVmw7xnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzEwIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+T3JkbmVyIGzDtnNjaGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMSIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPk5hbWUgYmVhcmJlaXRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTIiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5OZXVlciBPcmRuZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzEzIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+U2luZCBTaWUgc2ljaGVyLCBkYXNzIFNpZSBkaWVzZXMgRWxlbWVudCBsw7ZzY2hlbiB3b2xsZW4/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxNCIgbmFtZT0idXNlciBhZG1pbiI+CisgICAgPHZhbHVlPlN1Y2hlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxNSIgbmFtZT0idXNlciBhZG1pbiI+CisgICAgPHZhbHVlPlN1Y2hlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxNiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkRva3VtZW50IMO2ZmZuZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE3IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+WmVpZ2UgYWxsZSBEYXRlaWVuIChCYXVtIEFuc2ljaHQpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxOCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkRva3VtZW50IHNjaGxpZcOfZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE5IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+RGF0ZWkgbMO2c2NoZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIwIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+RXMgaXN0IElobmVuIG5pY2h0IGdlc3RhdHRldCBhdWYgZGVtIFplaWNoZW5icmV0dCB6dSB6ZWljaG5lbi4gU2llIG3DvHNzZW4gTW9kZXJhdG9yIHNlaW4gb2RlciB6dW1pbmRlc3QgZGFzIFJlY2h0IGJlc2l0emVuIGRhcyBaZWljaGVuYnJldHQgenUgYmVhcmJlaXRlbi4gU2llIGvDtm5uZW4gZGVuIE1vZGVyYXRvciBuYWNoIGRlbiBSZWNodGVuIGZyYWdlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIxIiBuYW1lPSJwcm9wZXJ0eSBwYW5lbCI+CisgICAgPHZhbHVlPkRva3VtZW50ZWlnZW5zY2hhZnRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjIiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPlN0YXJ0ZSBDbGllbnQgKGV4dGVybik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIzIiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5TdGFydGUgQ2xpZW50IChIVFRQKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjQiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPkVpbiBUZWlsbmVobWVyIHdpbGwgc2VpbmVuIERlc2t0b3AgZnJlaWdlYmVuLiBXb2xsZW4gU2llIGRpZXMgenVsYXNzZW4/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNSIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+U2llIGhhYmVuIElocmVuIERlc2t0b3AgZnJlaWdlZ2ViZW4uIFdlbm4gU2llIGRpZSBGcmVpZ2FiZSBiZWVuZGVuIHdvbGxlbiBkcsO8Y2tlbiBTaWUgZGllIEFuaGFsdGVuLVNjaGFsdGZsw6RjaGUgaW0gRGVza3RvcCBTaGFyZXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNiIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+R2V0ZWlsdGUgU2l0enVuZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjciIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPlNpZSBoYWJlbiBJaHJlbiBEZXNrdG9wIGJlcmVpdHMgZnJlaWdlZ2ViZW4hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyOCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5EZXNrdG9wLUJldHJhY2h0ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI5IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkJlZW5kZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMwIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkRlc2t0b3AtVGVpbGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5EcsO8Y2tlbiBTaWUgU3RhcnQsIHVtIElocmVuIERlc2t0b3AgZnJlaXp1Z2ViZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMyIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlN0YXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5BbmhhbHRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzQiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+V8OkaGxlbiBTaWUgZWluZW4gQmlsZHNjaGlybWJlcmVpY2ggYXVzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzUiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+QnJlaXRlIMOkbmRlcm48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM2IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkRpZSBCaWxkc2NoaXJtZnJlaWdhYmUgd3VyZGUgYmVlbmRldCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM3IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkjDtmhlIMOkbmRlcm48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM4IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlgtQWJzdGFuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzkiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+WS1BYnN0YW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0MCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5CcmVpdGU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0MSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5Iw7ZoZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQyIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkRpZSBWZXJiaW5kdW5nIHd1cmRlIHZvbSBTZXJ2ZXIgYWJnZWJyb2NoZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0MyIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5BYmJyZWNoZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ0IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPkV4dGVybiBzdGFydGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NSIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5XZW5uIFNpZSBkaWVzZSBTZXNzaW9uIHNjaGxpZcOfZW4sIGvDtm5uZW4gU2llIGRpZSBTZXNzaW9uIG5pY2h0IHdpZWRlciBzdGFydGVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDYiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+U2l0enVuZyB3aXJrbGljaCBzY2hsaWXDn2VuPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDciIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+QmlsZHNjaGlybSBmcmVpZ2ViZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ4IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPlNpdHp1bmcgYXVmbmVobWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0OSIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPkdldGVpbHRlcyBzdXJmZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUwIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+VXBzYSwgLi4uIEZpcmVmb3ggdW50ZXIgV2luZG93cyBpc3QgbmljaHQgaW4gZGVyIExhZ2UsIG1hbmdlbGZyZWllcyBDby1Ccm93c2luZyB6dSBnZXfDpGhybGVpc3Rlbi4gQml0dGUgYmVudXR6ZW4gU2llIGVpbmVuIGFuZGVyZW4gQnJvd3NlciB1bSBkaWUgQ28tQnJvd3NpbmctRnVua3Rpb24genUgbnV0emVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTEiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5Wb3JoZXJpZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUyIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+TsOkY2hzdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUzIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+TmFjaGxhZGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1NCIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPkhlaW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU1IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+TGFkZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU2IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+RGllc2UgV2Vic2VpdGUgYWxzIHZvcmdlZ2ViZW5lIFdlYnNlaXRlIHp1IG1laW5lbSBQcm9maWwgaGluenVmw7xnZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1NyIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPkthbWVyYSB1bmQgTWlrcm9mb25laW5zdGVsbHVuZ2VuIHRlc3RlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTgiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT7DnGJlcnByw7xmZW4gU2llIElocmUgTWlrcm9mb24tIHVuZCBLYW1lcmFlaW5zdGVsbHVuZ2VuIGJldm9yIFNpZSBlaW5lbiBSYXVtIGJldHJldGVuIHVuZCBBdWZ6ZWljaG51bmdlbiBkdXJjaGbDvGhyZW4uIFNpZSBrw7ZubmVuIElocmUgQXVmbmFobWVuIGltIE5hY2hoaW5laW4gYWJzcGllbGVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTkiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5EaWVzZXMgRmVuc3RlciBuaWNodCB3aWVkZXIgYW56ZWlnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYwIiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+QWJicmVjaGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MSIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlJhdW0gYmV0cmV0ZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYyIiBuYW1lPSJlZGl0IHZpZGVvIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+TmljaHQgd2llZGVyIGZyYWdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjMiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5BdWZuYWhtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjQiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5BYnNwaWVsZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY1IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+U2llIGvDtm5uZW4gYXVjaCBvaG5lIGVpbmVuIFRlc3QgZm9ydGZhaHJlbiwgZmFsbHMgU2llIGJlYWJzaWNodGlnZW4gQXVkaW8gdW5kIFZpZGVvIG5pY2h0IGluIGRlciBTaXR6dW5nIGVpbnp1c2V0emVuLiBJbiBkaWVzZW0gRmFsbCBoYWJlbiBTaWUgZGVubm9jaCBadWdyaWZmIGF1ZiBkYXMgWmVpY2hlbmJyZXR0LCBrw7ZubmVuIGlocmVuIERlc2t0b3AgZsO8ciBhbmRlcmUgZnJlaWdlYmVuIG9kZXIgZGllIENoYXRmdW5rdGlvbiBudXR6ZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NiIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlN0b3A8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY3IiBuYW1lPSI3NjciPgorICAgIDx2YWx1ZT5MYXV0c3TDpHJrZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjgiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5TdGFydCBkcsO8Y2tlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjkiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5Lb25mZXJlbnogc3RhcnRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzAiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5FdmVudCBzdGFydGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MSIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPlJhdW0gd8OkaGxlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzIiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5QcsO8ZmUgU2V0dXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzczIiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+S29uZmVyZW56IHN0YXJ0ZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc0IiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+V2llIHN0YXJ0ZSBpY2ggZWluZSBLb25mZXJlbno8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc1IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+VGVzdGF1Zm5haG1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NiIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPkF1ZGlvLS9WaWRlby1UZXN0IChBdWZuYWhtZSkgdm9yIGRlbSBCZXRyZXRlbiBlaW5lciBLb25mZXJlbnogbmljaHQgemVpZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NyIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPsOWZmZlbnRsaWNoZSBSw6R1bWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc4IiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+w5ZmZmVudGxpY2hlIFLDpHVtZSBrw7ZubmVuIHZvbiBhbGxlbiBUZWlsbmVobWVybiBiZXRyZXRlbiB3ZXJkZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3OSIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPkdydXBwZW5yw6R1bWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgwIiBuYW1lPSJQcml2YXRlIFJvb21zIj4KKyAgICA8dmFsdWU+UHJpdmF0ZSBSw6R1bWUgc2luZCBudXIgZsO8ciBUZWlsbmVobWVyIGluIGRlciBzZWxiZW4gT3JnYW5pc2F0aW9uIHZlcmbDvGdiYXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MSIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPlByaXZhdGUgUsOkdW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MiIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPlLDpHVtZSBpbiBkaWVzZW0gQmVyZWljaCBzaW5kIGbDvHIgZGVuIHBlcnPDtm5saWNoZW4gQmVkYXJmLiBEaWUgUsOkdW1lIGhhYmVuIGVpbiBTdGFydCB1bmQgRW5kZGF0dW0gdW5kIHN0ZWhlbiBudXIgaW4gZGllc2VtIFplaXRyYXVtIHp1ciBWZXJmw7xndW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODMiIG5hbWU9InJlc3RyaWN0ZWQgcm9vbSI+CisgICAgPHZhbHVlPlNpZSBtw7xzc2VuIE1vZGVyYXRvciBzZWluLCB1bSBkaWVzZSBBa3Rpb24gYXVzenVmw7xocmVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODQiIG5hbWU9Im1lbnUgb3B0aW9uIj4KKyAgICA8dmFsdWU+TW9kZXJhdGlvbiBiZWFudHJhZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NSIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT5aZWljaGVuYnJldHQgYmVhbnRyYWdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODYiIG5hbWU9Im1lbnUgb3B0aW9uIj4KKyAgICA8dmFsdWU+VmlkZW8vTWlrcm9mb24gYmVhbnRyYWdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODciIG5hbWU9ImVycm9yIG1lc3NhZ2Ugc29hcCBzZWN1cmUgbG9naW4iPgorICAgIDx2YWx1ZT5EaWVzZXIgU2Vzc2lvbkhhc2doIHdpcmQgYmVyZWl0cyBnZW51dHp0LiBFciBrYW5uIG5pY2h0IHp3ZWlmYWNoIHZlcmdlYmVuIHdlcmRlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg4IiBuYW1lPSJkYXNoYm9hcmQgYnV0dG9uIj4KKyAgICA8dmFsdWU+U1RBUlQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg5IiBuYW1lPSJleGl0IGNvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT5FWElUPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5MCIgbmFtZT0iY29uZmVyZW5jZSB2aWV3Ij4KKyAgICA8dmFsdWU+V29sbGVuIFNpZSBkaWUgS29uZmVyZW56IHdpcmtsaWNoIHZlcmxhc3Nlbj8gVmllbGxlaWNodCBzb2xsdGVuIFNpZSB6dWVyc3QgRG9rdW1lbnRlLCBaZWljaGVuYnJldHQgdW5kIENoYXQgSGlzdG9yeSBsZWVyZW4uIEFuZGVybmZhbGxzIHdlcmRlbiBkaWUgRGF0ZWllbiBlaW5mYWNoIGluIGRpZXNlbSBSYXVtIGJpcyB6dSBJaHJlbSBuw6RjaHN0ZW4gQmVzdWNoIGJsZWliZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5MSIgbmFtZT0iY29uZmVyZW5jZSB2aWV3Ij4KKyAgICA8dmFsdWU+S29uZmVyZW56IGJlZW5kZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkyIiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT5Sw6R1bWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkzIiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT5Xw6RobGVuIFNpZSBlaW5lbiBSYXVtIGbDvHIgZGllIEtvbmZlcmVueiBhdXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk0IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkVzIGlzdCBlaW4gbmljaHQgZ2VzcGVpY2hlcnRlcyBFdmVudCBpbSBLYWxlbmRlci4gU3BlaWNoZXJuIFNpZSBlcyBvZGVyIGzDtnNjaGVuIFNpZSBlcyB3aWVkZXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5NSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5CaXR0ZSBmw7xnZW4gU2llIG1pbmRlc3RlbnMgZWluZW4gVGVpbG5laG1lciB6dW0gRXZlbnQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5NiIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Tb2xsIGRpZXNlcyBFdmVudCB3aXJrbGljaCBhdXMgZGVtIEthbGVuZGVyIGdlbMO2c2NodCB3ZXJkZW4/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5NyIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5XYXJudW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5OCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5OZXVlciBFdmVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTkiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGFnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Xb2NoZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDEiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+TW9uYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAyIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkJlc2NocmVpYnVuZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDMiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGVpbG5laG1lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSwgSWhyZSBXZWIgS29uZmVyZW56IFBsYXR0Zm9ybS4gRW50d2VkZXIgc3RhcnRlbiBTaWUgc29mb3J0IGVpbiBNZWV0aW5nIGluZGVtIFNpZSBkZW4gMS0yLTMgQW53ZWlzdW5nZW4gZm9sZ2VuIG9kZXIgU2llIGJlbnV0emVuIGRlbiBLYWxlbmRlciB1bSBlaW5lIEtvbmZlcmVueiB6dSBwbGFuZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNSIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+S29uZmVyZW56IHBsYW5lbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDYiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5VbSBlaW5lIEtvbmZlcmVueiB6dSBwbGFuZW4ga8O2bm5lbiBTaWUgZWluZW4gRXZlbnQgaW0gS2FsZW5kZXIgaGluenVmw7xnZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNyIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPkJyYXVjaGVuIFNpZSBIaWxmZT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA4IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RWluZ2VzY2hyw6Rua3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA5IiBuYW1lPSJsemNhbGVuZGVyIj4KKyAgICA8dmFsdWU+U3VjaGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEwIiBuYW1lPSJsemNhbGVuZGVyIj4KKyAgICA8dmFsdWU+T2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODExIiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RXMgaXN0IGtlaW4gQmVudXR6ZXIgYXVzZ2V3w6RobHQuIFfDpGhsZW4gU2llIHp1ZXJzdCBlaW5lbiBCZW51dHplciB1bmQgZHLDvGNrZW4gZGFubiBPay48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEyIiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGVpbG5laG1lciBoaW56dWbDvGdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTMiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5TcGVpY2hlcm48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE0IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+TMO2c2NoZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE1IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RXZlbnQgRGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTYiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EZWZhdWx0IE1vZGVyYXRvcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+U3VwZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE4IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE5IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjAiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5FLU1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIxIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+TmV1ZW4gRGVmYXVsdC1Nb2RlcmF0b3IgaGluenVmw7xnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIyIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+SXN0IFN1cGVyLU1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjMiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5JbiBlaW5lbSBtb2RlcmllcnRlbiBSYXVtIHNpbmQgVGVpbG5laG1lciBtaXQgZGVuIFJvbGxlbiBMZXZlbC1Nb2RlcmF0b3Igb2RlciBBZG1pbmlzdHJhdG9yIGJlaW0gQmV0cmV0ZW4gZGVzIFJhdW1zIGF1dG9tYXRpc2NoIE1vZGVyYXRvcmVuLiBVbSBkaWVzIGFienVzY2hhbHRlbiwgdmVyd2VuZGVuIFNpZSBkaWUgRnVua3Rpb24gRGVmYXVsdC1Nb2RlcmF0b3IuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkRlciBTdXBlci1Nb2RlcmF0b3IgaXN0IGJlaW0gQmV0cmV0ZW4gZWluZXMgUmF1bXMgaW1tZXIgTW9kZXJhdG9yLiBEYXMgUmVjaHQga2FubiBpaG0gaW0gUmF1bSBuaWNodCBnZW5vbW1lbiB3ZXJkZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPk51dHplciBTdXBlci1Nb2RlcmF0b3JyZWNodGUgenV3ZWlzZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI2IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+TnV0emVyIFN1cGVyLU1vZGVyYXRvcnJlY2h0ZSBhYmVya2VubmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNyIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI4IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+V2VubiBlaW5lIE9yZ2FuaXNhdGlvbiBlaW5lbiBSYXVtIHp1Z2V3aWVzZW4gd2lyZCwgaGFiZW4gbnVyIE1pdGdsaWVkZXIgZGVyIE9yZ2FuaXNhdGlvbiBadWdhbmcuIChEaWVzIGdpbHQgbnVyIHdlbm4gZGllIEVpbnN0ZWxsdW5nIGlzUHVibGljIGF1ZiBmYWxzZSBnZXNldHp0IHd1cmRlISk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI5IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+TW9kZXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzAiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5CZWdyZW56dW5nZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODMxIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+T3JnYW5pc2F0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzMiIgbmFtZT0iY29uZmlybSBhY3Rpb24iPgorICAgIDx2YWx1ZT5TaW5kIFNpZSBzaWNoZXI/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzMyIgbmFtZT0iY29uZmlybSBkZWxldGUiPgorICAgIDx2YWx1ZT5Xb2xsZW4gU2llIGRlbiBXZXJ0IHdpcmtsaWNoIGzDtnNjaGVuPyBNaXQgZGVtIFNwZWljaGVybi1CdXR0b24gw6RuZGVybiBTaWUgZGllIEVpbnRyw6RnZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM0IiBuYW1lPSJ1c2VyIGNob29zZSBlcnJvciI+CisgICAgPHZhbHVlPkVzIHd1cmRlIG5vY2gga2VpbiBUZWlsbmVobWVyIGF1c2dld8OkaGx0LiBTaWUgbcO8c3NlbiB6dWVyc3QgZWluZSBQZXJzb24gYXVzd8OkaGxlbiwgdW0gc2llIGhpbnp1ZsO8Z2VuIHp1IGvDtm5uZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPk5ldWVuIERlZmF1bHQtTW9kZXJhdG9yIGhpbnp1ZsO8Z2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPlNvbGwgZGllc2VyIE51dHplciBTdXBlci1Nb2RlcmF0aW9uIHdlcmRlbj8gU3VwZXItTW9kZXJhdG9yZW5yZWNodGUga8O2bm5lbiBuaWNodCBnZWzDtnNjaHQgd2VyZGVuLiBadW0gU3BlaWNoZXJuIGRlciBFaW5zdGVsbHVuZ2VuIG11c3MgZGFzIFJhdW1vYmpla3QgZ2VzcGVpY2hlcnQgd2VyZGVuITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5Tb2xsZW4gZGllIFN1cGVyLU1vZGVyYXRvcmVucmVjaHRlIGbDvHIgZGllc2VuIE51dHplciBhdWZnZWhvYmVuIHdlcmRlbj8gWnVtIFNwZWljaGVybiBkZXIgRWluc3RlbGx1bmdlbiBtdXNzIGRhcyBSYXVtb2JqZWt0IGdlc3BlaWNoZXJ0IHdlcmRlbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM4IiBuYW1lPSJzdXBlciBtb2RlcmF0b3IiPgorICAgIDx2YWx1ZT5EaWVzIGlzdCBlaW4gU3VwZXItTW9kZXJhdG9yLiBTaWUga8O2bm5lbiBkaWUgTW9kZXJhdGlvbnNyZWNodGUgZGVtIE51dHplciBuaWNodCBlbnR6aWVoZW4hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzOSIgbmFtZT0iY29uZmlybSBkZWxldGUiPgorICAgIDx2YWx1ZT5Xb2xsZW4gU2llIHdpcmtsaWNoIGRpZXNlIERhdGVpIG9kZXIgT3JkbmVyIGzDtnNjaGVuPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDAiIG5hbWU9ImNvbmZpcm0gZGVsZXRlIj4KKyAgICA8dmFsdWU+RGF0ZWkvT3JkbmVyIGzDtnNjaGVuPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDEiIG5hbWU9InNhbHV0YXRpb24iPgorICAgIDx2YWx1ZT5GcsOkdWxlaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQyIiBuYW1lPSJzYWx1dGF0aW9uIj4KKyAgICA8dmFsdWU+RHIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0MyIgbmFtZT0icHJvcGVydHkgcGFuZWwgd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkVpZ2Vuc2NoYWZ0ZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ0IiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+VGVpbG5laG1lcm4gTWF1c3plaWdlciBhbnplaWdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDUiIG5hbWU9InB1Ymxpc2ggb3B0aW9uIj4KKyAgICA8dmFsdWU+U2hhcmUgQXVkaW8gd2l0aCBTSVAgQXBwbGV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NiIgbmFtZT0icHVibGlzaCBvcHRpb24iPgorICAgIDx2YWx1ZT5TaGFyZSBBdWRpbyB3aXRoIFNJUCBhbmQgVmlkZW8gd2l0aCBGbGFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDciIG5hbWU9ImRvY3VtZW50IHBhbmVsIj4KKyAgICA8dmFsdWU+Vm9sbGJpbGQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ4IiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5CaWxkc2NoaXJtIHplaWdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDkiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkRlciBUZWlsbmVobWVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MCIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+bcO2Y2h0ZSBzZWluZW4gRGVza3RvcCB2ZXLDtmZmZW50bGljaGVuLiBTdGltbWVuIFNpZSBkZW0genU/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MSIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+U2NobGllw59lbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTIiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5ab29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MyIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPkRpZSBCaWxkc2NoaXJtZnJlaWdhYmUgd3VyZGUgYmVlbmRldCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU0IiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+UGF1c2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU1IiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+TmV1ZXIgRGVza3RvcCB2ZXJmw7xnYmFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1NiIgbmFtZT0icHJlc2VudGVyIG1pbmkgaWNvbiI+CisgICAgPHZhbHVlPk1pbmltaWVyZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU3IiBuYW1lPSJwcmVzZW50ZXIgbWluaSBpY29uIj4KKyAgICA8dmFsdWU+TWF4aW1pZXJlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTgiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1OSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+VmlkZW8gWmVpdHNwdXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYwIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5NZWluZSBBdWZuYWhtZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYxIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT7DlmZmZW50bGljaGUgQXVmbmFobWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+SW5mbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjMiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY0IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Mw6RuZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY1IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5EYXR1bTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjYiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlZvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjciIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkRvd25sb2FkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2OCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+SGF1cHQgLSBWaWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjkiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkF1Zm5haG1lbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzAiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlNpZSBrw7ZubmVuIGVpbmUgQmlsZHNjaGlybWZyZWlnYWJlIHN0YXJ0ZW4gb2RlciBkaWUgYWt0dWVsbGUgU2l0enVuZyBhdWZ6ZWljaG5lbi4gU29mZXJuIFNpZSBJaHJlbiBCaWxkc2NoaXJtIG51ciBmw7xyIGFuZGVyZSBUZWlsbmVobWVyIGZyZWlnZWJlbiB3b2xsZW4gZ2Vuw7xndCBlcywgZGVuIG9iaWdlbiBTdGFydC1CdXR0b24genUgYmV0w6R0aWdlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcxIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5BdWZuYWhtZSBzdGFydGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3MiIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+QXVmbmFobWUgc3RvcHBlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzMiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkRvd25sb2FkIEZMVi1GaWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3NCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UmF1bTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzUiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlBsYXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TdG9wPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3NyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+VGVpbG5laG1lciBoYXQgZGFzIE1pa3JvZm9uIGFuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3OCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5CaWxkc2NoaXJtZnJlaWdhYmUgYmVlbmRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzkiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+RnJhZ2VuIHZvbiBUZWlsbmVobWVybiB6dWxhc3NlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODAiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+V2VubiBTaWUgZGllc2UgT3B0aW9uIGFrdGl2aWVyZW4gaXN0IGRpZSBTY2hhbHRmbMOkY2hlIHp1bSBiZWFudHJhZ2VuIGRlciBNb2RlcmF0aW9uIGbDvHIgYW5kZXJlIFRlaWxuZWhtZXIgbmljaHQgc2ljaHRiYXIgdW5kIFNpZSB3ZXJkZW4gbmljaHQgaW4gaWhyZW0gVm9ydHJhZyBnZXN0w7ZydC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgxIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPlJlY2h0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODIiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkFWSSBydW50ZXJsYWRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODMiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkZMVjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODQiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkFWSTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODUiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlJhdyBTY3JlZW52aWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODYiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkF1ZGlvIG9ubHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg3IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5UaGUgaGF2ZSBiZWVuIGVycm9ycyB3aGlsZSBwcm9jZXNzaW5nIHRoZSBSZWNvcmRpbmcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4OCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+VGhlIFJlY29yZGluZyBpcyBub3QgeWV0IHJlYWR5IGZvciB3YXRjaGluZy4gUGxlYXNlIHJldHJ5IGluIGEgY291cGxlIG9mIG1pbnV0ZXMgYWdhaW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4OSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TG9nOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTAiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlJlY29yZGVyIE1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkxIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5PazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTIiIG5hbWU9InNpcCBhcHBsZXQiPgorICAgIDx2YWx1ZT5TSVAgQXBwbGV0IGlzIG5vdCBSZWFkeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTMiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TSVAtQWNjb3VudCBTZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTQiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TSVAgc2V0dGluZ3MgZm9yIGVhY2ggdXNlci4gWW91IGNhbiB0dXJuIG9uIG9yIG9mZiBTSVAgdmlhIHRoZSBBZG1pbmlzdHJhdGlvbiAmZ3Q7IENvbmZpZ3VyYXRpb24gKEtleTogZW5hYmxlX3NpcCkuIFRoZSBTSVAgZGF0YSBmb3IgZWFjaCB1c2VyIHNob3VsZCBiZSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkuIFlvdSBjYW4gcmUtY3JlYXRlIHRoZSBkYXRhIGJ5IGNoZWNraW5nICJSZS1nZW5lcmF0ZSBTSVAgRGF0YSI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk1IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+U0lQLVVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk2IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+U2lwLVBhc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk3IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+U2lwLUF1dGgtSWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk4IiBuYW1lPSJzaXAgc3RhdHVzIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgTG9naW4gdG8gdGhlIFNJUCBHYXRld2F5IGhhcyBmYWlsZWQuIFlvdSBzaG91bGQgY2hlY2sgdGhlIGF1dGhlbnRpZmljYXRpb24gZGF0YSBvZiB5b3VyIFNJUC1Qcm92aWRlciBhbmQgdGhlIFNJUC1BY2NvdW50IERhdGEgZm9yIGVhY2ggVXNlci4gQXMgQWRtaW5pc3RyYXRvciB5b3UgYXJlIHN0aWxsIGFibGUgdG8gbG9naW4gYW5kIGNoZWNrIHRoZSBDb25maWd1cmF0aW9uLiBBcyBVc2VyIG9yIE1vZGVyYXRvciB5b3Ugd2lsbCBiZSBibG9ja2VkIGZyb20gYW55IGludGVyYWN0aW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTkiIG5hbWU9InNpcCBzdGF0dXMgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSBMb2dpbiB0byB0aGUgU0lQIEdhdGV3YXkgaGFzIGZhaWxlZC4gQ29udGFjdCB5b3VyIFNlcnZpY2UgVGVhbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAwIiBuYW1lPSJzaXAgc3RhdHVzIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Mb2dnaW5nIGluIHRvIFNJUC1HYXRld2F5IC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDEiIG5hbWU9InNpcCBzdGF0dXMgbWVzc2FnZSI+CisgICAgPHZhbHVlPkxvZ2dpbmcgaW4gdG8gU0lQLUdhdGV3YXkgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwMiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+U2hvdyBMb2c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAzIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Mb2cgbWVzc2FnZXMgZnJvbSBwb3N0IHJlY29yZGVyIHByb2Nlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA0IiBuYW1lPSJzaXAgbG9naW4iPgorICAgIDx2YWx1ZT5TSVAtQXBwbGV0IE1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA1IiBuYW1lPSJzaXAgbG9naW4iPgorICAgIDx2YWx1ZT5UaGUgU0lQLUFwcGxldCBpcyBub3QgcmVhZHkuIEFjY2VwdCB0aGUgQXBwbGV0IHBsZWFzZSBhbmQgY2xpY2sgb2shPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwNiIgbmFtZT0ibW9kZXJhdG9yIHBvcCB1cCI+CisgICAgPHZhbHVlPk1vZGVyYXRpb24gYmVhbnRyYWdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDciIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5TYXZlIEFwcG9pbnRtZW50IENoYW5nZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA4IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhlIGFwcG9pbnRlbWVudCBoYXMgYmVlbiBjaGFuZ2VkLiBEbyB5b3Ugd2FudCB0byBzYXZlIHRob3NlIGNoYW5nZXM/ICZsdDtici8mZ3Q7Jmx0O2JyLyZndDtBbGwgYXR0ZW5kZWVzIG9mIHRoZSBhcHBvaW50bWVudCB3aWxsIHJlY2VpdmUgYSBFTWFpbCB3aXRoIHRoZSB1cGRhdGVkIGRhdGUgYW5kIHRpbWUgKGRlcGVuZGluZyBvbiB0aGUgbm90aWZpY2F0aW9uIHR5cGUgb2YgdGhpcyBhcHBvaW50bWVudCkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwOSIgbmFtZT0iZmx2IHJlY29yZGVyIGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UbyBhY2Nlc3Mgb3RoZXIgcmVjb3JkaW5ncyB5b3UgaGF2ZSB0byBsb2dpbiB0aGUgJEFQUF9OQU1FIEFwcGxpY2F0aW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTAiIG5hbWU9ImludGVydmlldyB2aWRlbyBwb2QiPgorICAgIDx2YWx1ZT5DaG9vc2UgdGhlIFVzZXIgZm9yIHRoaXMgVmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTExIiBuYW1lPSJpbnRlcnZpZXcgdmlkZW8gY2hvb3NlIHVzZXIiPgorICAgIDx2YWx1ZT5BdmFpbGFibGUgVXNlcnMgZm9yIHRoaXMgUG9kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMiIgbmFtZT0iaW50ZXJ2aWV3IGluZm8iPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGEgTW9kZXJhdG9yIGluIHRoaXMgSW50ZXJ2aWV3LiBZb3UgY2FuIGRlY2lkZSB3aG8gaXMgc3BlYWtpbmcgaW4gdGhpcyBpbnRlcnZpZXcgYW5kIHlvdSBjYW4gc3RhcnQgLyBzdG9wIHRoZSByZWNvcmRpbmcgb2YgdGhlIFNlc3Npb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMyIgbmFtZT0iaW50ZXJ2aWV3IGJ1dHRvbiByZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TdGFydCBSZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE0IiBuYW1lPSJpbnRlcnZpZXcgYnV0dG9uIHJlY29yZGluZyI+CisgICAgPHZhbHVlPlN0b3AgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxNSIgbmFtZT0iaW50ZXJ2aWV3IGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgcmVjb3JkaW5nIG9mIHRoZSBJbnRlcnZpZXcgaXMgYWxyZWFkeSBzdGFydGVkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTYiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIHJlY29yZGluZyBpcyBhbHJlYWR5IHN0b3BwZWQgb3Igbm90IGJlZW4gc3RhcnRlZCB5ZXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxNyIgbmFtZT0iaW50ZXJ2aWV3IHJlY29yZGluZyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIHJlY29yZGluZyBmb3IgdGhpcyBpbnRlcnZpZXcgaXMgYWxyZWFkeSBzdGFydGVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTgiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxOSIgbmFtZT0iaW50ZXJ2aWV3IGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgcG9zdC1wcm9jZXNzaW5nIG9mIGFuIGludGVydmlldyB0YWtlcyA1IG1pbnV0ZXMgcGVyIDEgbWludXRlIGludGVydmlldy4gVGhlIGN1cnJlbnQgcHJvZ3Jlc3Mgb2YgdGhlIGludGVydmlldyBwb3N0LXByb2Nlc3NpbmcgdHJhbnNjb2RpbmcgaXM6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyMCIgbmFtZT0ic2lwIGNyZWF0aW9uIj4KKyAgICA8dmFsdWU+WW91IGhhdmUgdG8gZW50ZXIgeW91ciBwYXNzd29yZCBhZ2FpbiB0byBhdXRvIGNyZWF0ZSB0aGUgU0lQIERhdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIxIiBuYW1lPSJzaXAgY3JlYXRpb24iPgorICAgIDx2YWx1ZT5SZS1nZW5lcmF0ZSBTSVAgRGF0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjIiIG5hbWU9ImZpbGVleHBsb3JlciI+CisgICAgPHZhbHVlPllvdSBjYW5ub3QgbW92ZSB0aGlzIGZpbGUgb3IgZm9sZGVyIGludG8gaXRzIG93biBzdWIgZm9sZGVyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjMiIG5hbWU9ImZpbGUgZXhwbG9yZXIgIj4KKyAgICA8dmFsdWU+SG9tZSBkcml2ZSBzaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlB1YmxpYyBkcml2ZSBzaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNSIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPkxpY2Vuc2UgU2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI2IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+WW91IGNhbiBlaXRoZXIgYmluZCB0aGUgdXNlciB0byBhIGV4cGlyZSBEYXRlIG9yIHRvIGEgbWF4aW11bSBudW1iZXIgb2YgbWludXRlcyB3aGVuIHlvdSBlbmFibGUgbGljZW5zaW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjciIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5DaGVjayBsaWNlbnNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyOCIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPkZsYXRyYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyOSIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPkV4cGlyZSBkYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMCIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPlNlY29uZHMgbGVmdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzEiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5Ub3RhbCB0aW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91ciBMaWNlbnNlIGhhcyBleHBpcmVkLiBZb3UgbmVlZCB0byBidXkgbmV3IG1pbnV0ZXMgKFBheS1wZXItbWludXRlKSBvciBhIHZvbHVtZSBmbGF0cmF0ZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMzIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5DbGljayBhbmQgYnV5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzNCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+VGltZSBMZWZ0IG9uIHlvdXIgYWNjb3VudDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM1IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Vc2VyIExpY2Vuc2UgSW5mbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzYiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkluZm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM3IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5DbG9zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzgiIG5hbWU9ImxpY2Vuc2UtaW5mbyI+CisgICAgPHZhbHVlPllvdXIgbGljZW5zZSBoYXMgZXhwaXJlZC4gWW91IG5lZWQgZWl0aGVyIHRvIGJ1eSBhIG1pbnV0ZSBwYWNrYWdlIChQYXktcGVyLW1pbnV0ZSkgb3IgYSB2b2x1bWUgZmxhdHJhdGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzOSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+TGljZW5zZSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDAiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdSBjYW4gZWl0aGVyIGJ1eSBtaW51dGVzIHRvIG1ha2UgV2ViLUNvbmZlcmVuY2luZyAoUGF5LXBlci1taW51dGUpLiZsdDtici8mZ3Q7Jmx0O2JyLyZndDsgT3IgeW91IGJ1eSBhIHZvbHVtZSBmbGF0cmF0ZSBhYm91dCAzLTEyIG1vbnRocy4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7U2VuZGluZyBpbnZpdGF0aW9ucyAoZGlyZWN0IGxpbmtzIGludG8gQ29uZmVyZW5jZSBSb29tcykgb3IgY3JlYXRpbmcgY29uZmVyZW5jZSBSb29tcyB2aWEgdGhlIENhbGVuZGFyIHdpdGggZXh0ZXJuYWwgVXNlcnMgaXMgb25seSBhbGxvd2VkIHdpdGggYSB2b2x1bWUgZmxhdHJhdGUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDYwIE1pbnV0ZXMgOSw5OSBFVVJPICgxNiBDZW50IHBlciBNaW51dGUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDUgaG91cnMgMTksOTkgRVVSTyAoNiBDZW50IHBlciBtaW51dGUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDMgbW9udGggZm9yIDI5LDk5IEVVUk8gKDksOTkgRXVybyBwZXIgTW9udGgpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDYgbW9udGggZm9yIDM5LDk5IEVVUk8gKDYsNjYgRXVybyBwZXIgbW9udGgpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+UGF5LXBlci1taW51dGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ2IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Wb2x1bWUgZmxhdHJhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ3IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3UgaGF2ZSB1bmxpbWl0ZWQgTGljZW5zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDgiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdXIgbGljZW5zZSB3aWxsIGV4cGlyZSBhdDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ5IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3UgYm91Z2h0IFBheS1wZXItbWludXRlLiBZb3Ugc3RpbGwgaGF2ZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUwIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5CdXkgbmV3IGNyZWRpdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUxIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5XYW50IHlvdXIgb3duIFNlcnZlcj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUyIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3Ugd291bGQgbGlrZSB0byBoYXZlICRBUFBfTkFNRSBpbnN0YWxsZWQgb24geW91ciBTZXJ2ZXIgb3IgaW50ZWdyYXRlZCBpbnRvIHlvdXIgTW9vZGxlLCBTdWdhckNSTSwgV2Vic2l0ZSBvciBJbnRyYW5ldD8gUHJpemluZ3Mgc3RhcnQgYXQgNTAwIEV1cm8gcGVyIEluc3RhbGxhdGlvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUzIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5PciBzZW5kIHVzIGEgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTQiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkFuc3dlciB0bzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU1IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5NZXNzYWdlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTYiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlNlbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU3IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5DbGljayBoZXJlIHRvIGdldCBjb250YWN0IEluZm8gYW5kIFByaXppbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1OCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q3JlZGl0IENhcmQgRGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTkiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkZpcnN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjAiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkxhc3RuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2MSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q3JlZGl0IENhcmQgVHlwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjIiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlZJU0EgQ2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjMiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPk1hc3RlckNhcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY0IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5EaXNjb3ZlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjUiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkFtZXJpY2FuIEV4cHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY2IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DcmVkaXQgQ2FyZCBOdW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY3IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5FeHBpcmF0aW9uIERhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY4IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DYXJkIFZlcmlmaWNhdGlvbiBOdW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY5IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5CaWxsaW5nIEFkZHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTcwIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5BZGRyZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q2l0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzMiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNvdW50cnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc0IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdGF0ZSAoT25seSBVUyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc1IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5aSVA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc2IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5BbW91bnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc3IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdWJtaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc4IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdGVwIDE6ICRBUFBfTkFNRSAtIFBheW1lbnQgRm9ybTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzkiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkVNYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q2xpY2sgIkNoZWNrIG91dCB3aXRoIFBheXBhbCIgdG8gcGF5LiZsdDtici8mZ3Q7IFBheXBhbCBhY2NlcHRzIFZJU0EsIE1hc3RlckNhcmQsIERpc2NvdmVyIG9yIEFtZXJpY2FuIEV4cHJlc3MuICZsdDtici8mZ3Q7SXQgZG9lcyBub3QgcmVxdWlyZSB0byBzaWduIHVwIHdpdGggUGF5cGFsLiAmbHQ7YnIvJmd0O0NpdGl6ZW5zIGZyb20gR2VybWFueSBjYW4gYWxzbyBwYXkgd2l0aCBkaXJlY3QgZGViaXQgKFBlciBMYXN0c2NocmlmdC1FaW56dWcpLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODEiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlRoYW5rIHlvdSBmb3IgYnV5aW5nICRBUFBfTkFNRS4gJmx0O2JyLyZndDsgJmx0O2JyLyZndDsgQXMgc29vbiBhcyB3ZSByZWNlaXZlZCB0aGUgcGF5bWVudCB5b3VyIGFjY291bnQgd2lsbCBiZSB1cGRhdGVkLiZsdDtici8mZ3Q7IFlvdSB3aWxsIHJlY2VpdmUgYW4gRU1haWwgd2l0aCB5b3VyIGludm9pY2UgYXMgUERGLiZsdDtici8mZ3Q7WW91IGNhbiBhbHNvIGNoZWNrIGN1cnJlbnQgYW5kIHBhc3QgdHJhbnNhY3Rpb25zIGluIHlvdXIgcHJvZmlsZSBzZXR0aW5ncy4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7Jmx0O2JyLyZndDtZb3UgY2FuIGNsb3NlIHRoaXMgYnJvd3NlciB3aW5kb3cvdGFiIG5vdyBhbmQgcmV0dXJuIHRvICRBUFBfTkFNRS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgyIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdWJtaXQgYW5kIEJ1eSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgzIiBuYW1lPSJwYXltZW50LWZyb20iPgorICAgIDx2YWx1ZT5DbGljayBhbmQgQnV5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODQiIG5hbWU9InBheW1lbnQtZnJvbSI+CisgICAgPHZhbHVlPlN0ZXAgMzogJEFQUF9OQU1FIFBheW1lbnQgLSBDaGVjayBvcmRlciBhbmQgYnV5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODUiIG5hbWU9InBheW1lbnQtZnJvbSI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg2IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5QYXltZW50IHJlY2VpdmVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODciIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPkhpLDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODgiIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPldlIGhhdmUgcmVjZWl2ZWQgeW91ciBwYXltZW50LiBZb3VyIHVzZXIgcHJvZmlsZSBpcyB1cGRhdGVkIG5vdy4gU2VlIGF0dGFjaGVkIHlvdXIgSW52b2ljZS4gVGhlIEludm9pY2UgYW5kIGFsbCBwYXN0IEludm9pY2UgY2FuIGFsc28gYmUgZG93bmxvYWRlZCBpbiB5b3VyIHVzZXIgcHJvZmlsZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg5IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5UaGFuayB5b3UgZm9yIHVzaW5nICRBUFBfTkFNRSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkwIiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5QYXltZW50IFJlY2VpdmVkICRBUFBfTkFNRSAtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MSIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPlBheW1lbnQgYW5kIFRyYW5zYWN0aW9uIFN0YXR1czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTIiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5UcmFuc2NhdGlvbiBIYXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MyIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPk1pbnV0ZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk0IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+TW9udGhzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NSIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPkVVUjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTYiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TdGF0dXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk3IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+SW52b2ljZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTgiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk5IiBuYW1lPSJlcnJvci1saWNlbnNlLWZsYXQiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0byBidXkgYSB2b2x1bWUgZmxhdHJhdGUgdG8gYmUgYWJsZSB0byBzZW5kIGludml0YXRpb25zIG9yIGNyZWF0ZSBtZWV0aW5ncyB2aWEgdGhlIGNhbGVuZGFyLiBXaXRoIFBheS1wZXItbWludXRlIGl0IGlzIG9ubHkgcG9zc2libGUgZm9yIHlvdSB0byBhY2Nlc3MgJEFQUF9OQU1FLiBZb3UgY2Fubm90IGFsbG93IDN0aCBQYXJ0aWVzIHRvIGFjY2VzcyBhIE1lZXRpbmcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDAiIG5hbWU9ImVycm9yIHVzZXIiPgorICAgIDx2YWx1ZT5UaGlzIEVtYWlsIGlzIGFscmVhZHkgdXNlZCBieSBhbm90aGVyIFVzZXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDEiIG5hbWU9InJvb20tYWRtaW4iPgorICAgIDx2YWx1ZT5TSVAtU2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwMiIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlRoZSBDb25mZXJlbmNlIE51bWJlciBhbmQgUElOIGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB2aWEgdGhlIE9wZW5YRyBSUEMtR2F0ZXdheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAzIiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+U0lQIE51bWJlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA0IiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+UElOPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDUiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5Mw7ZzY2h0IGRpZSBPYmpla3RlIGRlciBha3R1ZWxsZW4gRm9saWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNiIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPk9ubHkgdGhlIFVSTCBlbnRlcmVkIGluIHRoZSBTdGF0dXMgYmFyIGlzIHNlbmQgdG8gcGFydGljaXBhbnRzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TWFrZSBUZWFtLVJvb21zIFtCcmVha291dCBzZXNzaW9uXTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2hvb3NlIHVzZXJzIGZvciBhIG5ldyBUZWFtLVJvb20hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIGNob29zZSB1c2VycyBoZXJlIGFuZCBjcmVhdGUgYSBuZXcgQ29uZmVyZW5jZSBSb29tICgiVGVhbSBSb29tIikgZm9yIHRoZW0uIFRoZSBjaG9zZW4gdXNlcnMgd2lsbCBhdXRvbWF0aWNhbGx5IHN3aXRjaCB0byB0aGUgbmV3IFRlYW0tUm9vbSBvciBnZXQgYSBub3RpZmljYXRpb24uIFRlYW0tUm9vbSBNb2RlcmF0b3JzIHdpbGwgZ2V0IGFkZGl0aW9uYWxseSBhIGxpc3Qgb2YgY3VycmVudCByb29tcyBzbyB0aGF0IHRoZXkgY2FuIHN3aXRjaCB0byBlYWNoIHJvb20gaWYgdGhlcmUgYXJlIGlzIG5lZWQgZm9yIGEgTW9kZXJhdG9yLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VXNlcm5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkxvZ2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJzIGZvciB0aGUgbmV3IFRlYW0tUm9vbTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNyZWF0ZSBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2hvb3NlIGF0IGxlYXN0IG9uZSB1c2VyIGZvciB0aGUgVGVhbS1Sb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+QWRkIHVzZXIgdG8gdGVhbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+UmVtb3ZlIHVzZXIgZnJvbSBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXIgaXMgVGVhbS1Sb29tIE1vZGVyYXRvciAoSGUgaXMgYWJsZSB0byBtYW5hZ2UgVGVhbS1Sb29tcyBhbmQgdXNlcnMgb2YgdGhlIFRlYW0tUm9vbSBjYW4gYXNrIGhpbSB0byBjb21lIGluc2lkZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlJvb210eXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5JZiB5b3UgY2hlY2sgIkZvcmNlIHVzZXIgdG8gc3dpdGNoIHRvIG5ldyBUZWFtLVJvb20iIGFsbCBjaG9zZW4gdXNlcnMgd2lsbCBhdXRvbWF0aWNhbGx5IHN3aXRjaCB0byB0aGUgbmV3bHkgY3JlYXRlZCBUZWFtLVJvb20uIE90aGVyd2lzZSB0aGV5IGdldCBhIG5vdGlmaWNhdGlvbiB3aXRoIGEgYnV0dG9uIHRoYXQgdGhleSAmbHQ7aSZndDtjYW4mbHQ7L2kmZ3Q7IHN3aXRjaCB0byB0aGUgbmV3IHJvb20uIFRlYW0tTW9kZXJhdG9ycyBhbHdheXMgaGF2ZSB0aGUgZnJlZSBjaG9pY2UgdG8gbWFuYWdlIHRoZSBUZWFtLVJvb21zIGFuZCBzd2l0Y2ggYmV0d2VlbiB0aGVtLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TWFuYWdlIFRlYW0tUm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPllvdSBjYW4gc3dpdGNoIGhlcmUgYmV0d2VlbiBhbGwgVGVhbS1Sb29tcyB0aGF0IHlvdSBhcmUgYXNzaWduZWQgYXMgVGVhbS1Sb29tIE1vZGVyYXRvci4gVXNlcnMgaW5zaWRlIHRoZSBUZWFtLVJvb20gY2FuIHNlbmQgeW91IGEgbWVzc2FnZSwgZm9yIGV4YW1wbGUgdG8gYXNrIHlvdSB0byBjb21lIHRvIHRoZWlyIHJvb20gYW5kIGhlbHAgdGhlbS4gWW91IGNhbiBhbHNvIHRlcm1pbmF0ZSB0aGUgVGVhbS1Sb29tIGFuZCBhbGwgVXNlcnMgd2lsbCBiZSBsb2dnZWQgb3V0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Rm9yY2UgdXNlciB0byBzd2l0Y2ggdG8gbmV3IFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q3JlYXRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJzIGF2YWlsYWJsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+QWRkIGEgdXNlciB3aXRoIHRoZSBwbHVzIGZyb20gdGhlIGxlZnQgb3IgcmVtb3ZlIGl0IHdpdGggdGhlIGNyb3NzIGZyb20gdGhlIHJpZ2h0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MSkgVGVhbS1Sb29tIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4yKSBBZGQgdXNlcnMgdG8gdGhlIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVhbS1Sb29tIE5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2hhbmdlIHRvIHRoZSBSb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Td2l0Y2ggdG8gdGhpcyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlcm1pbmF0ZSBUZWFtLVJvb20gYW5kIGxvZ291dCBhbGwgVXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk5ldyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGEgbmV3IFRlYW0tUm9vbSBhdmFpbGFibGUgZm9yIHlvdS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlN3aXRjaCB0byBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW0tUm9vbSBBY3Rpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIHJlLW9wZW4gdGhpcyB3aW5kb3cgdmlhIHRoZSBtYWluIG1lbnUgaW4gdGhlICJBY3Rpb25zIiBzZWN0aW9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U2VuZCBtZXNzYWdlIHRvIFRlYW0tUm9vbSBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk5ldyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGEgbmV3IFRlYW0tUm9vbSBhdmFpbGFibGUuIFlvdSBjYW4gc3dpdGNoIHRvIHRoYXQgUm9vbS4gVGVhbS1Sb29tcyBhcmUgbGlrZSAiV29ya2dyb3VwcyIgd2l0aCBhZGRpdGlvbmFsbHkgcG9zc2liaWxpdGllcyB0byBhc2sgdGhlIFRlYW0tUm9vbSBNb2RlcmF0b3IgZm9yIGhlbHAuIFlvdXIgVGVhbS1Sb29tcyBhcmUgYWxzbyBhdmFpbGFibGUgaW4gdGhlICJNeSBNZWV0aW5ncyIgc2VjdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlN3aXRjaCB0byBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNyZWF0ZWQgYnk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb20gbmFtZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0OSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoaXMgV2luZG93IHdpbGwgc3RheSBvcGVuIGV2ZW4gaWYgeW91IGxlYXZlIHRoZSByb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VXNlcnMgZm9yIHRoaXMgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4zKSBPdGhlciBUZWFtLVJvb21zIHRoYXQgeW91IGNvdWxkIHN3aXRjaCB0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U2VuZCBhIG1lc3NhZ2UgdG8gdGhlIFRlYW0tUm9vbSBNb2RlcmF0b3JzLiBGb3IgZXhhbXBsZSBpZiB5b3UgbmVlZCBoZWxwIGluIE1vZGVyYXRpbmcgdGhlIFJvb20gb3IgaWYgeW91IGhhdmUgYSBxdWVzdGlvbiBhYm91dCB0aGUgdG9waWMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5TZW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4yKSBVc2VycyB0aGF0IGFyZSBpbnZpdGVkIHRvIHRoaXMgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5JcyBUZWFtLVJvb20gTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVzZSBhcmUgYWxsIHVzZXJzIHRoYXQgdGhlIG1vZGVyYXRvciBoYXMgaW52aXRlZCB0byB0aGlzIFRlYW0tUm9vbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1NyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIFRlYW0tTW9kZXJhdG9yIGxvZ2dlZCBpbiBhdCB0aGUgbW9tZW50ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGEgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+UGxlYXNlIGhlbHAgdXMsIHdlIGhhdmUgYSBwcm9ibGVtIGluIG91ciBUZWFtLVJvb20hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5BIHVzZXIgZnJvbSBhIFRlYW0tUm9vbSByZXF1ZXN0cyB5b3VyIGhlbHAuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb20gcmVxdWVzdCBmb3IgaGVscDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TWVzc2FnZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2MyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkZyb206PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGN1cnJlbnRseSBub3QgaW4gYW55IFRlYW0tUm9vbS4gQnV0IHlvdSBjYW4gc3dpdGNoIGhlcmUgdG8gYWxsIFRlYW0tUm9vbXMgdGhhdCB5b3UgaGF2ZSBhY2Nlc3MgdG8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjUiIG5hbWU9ImJhY2t1cENvbnRlbnQiPgorICAgIDx2YWx1ZT5CYWNrdXAgdGhlIFN5c3RlbS4gVGhlIEJhY2t1cCBpbmNsdWRlcyBhbGwgVXNlciBnZW5lcmF0ZWQgZGF0YS4gVGhlIGNvbmZpZ3VyYXRpb24gaXMgbm90IGluY2x1ZGVkIGFzIHdlbGwgYXMgdGhlIGxhbmd1YWdlIGxhYmVscy4gQmVjYXVzZSB0aG9zZSB2YWx1ZXMgYXJlIGltcG9ydGVkIHdpdGggdGhlIFN5c3RlbSBJbnN0YWxsZXIuIFRvIHVwZGF0ZSB5b3VyIFN5c3RlbSwgZXhwb3J0IHlvdXIgb2xkIHN5c3RlbSAoMSkgcmUtaW5zdGFsbCBpbnRvIGEgbmV3IGRhdGFiYXNlIHRoZSBuZXcgcGFja2FnZSAoMikgYW5kIGltcG9ydCB0aGUgQmFja3VwIGZpbGUgYWdhaW4gKDMpLiBUaGUgQmFja3VwIHNob3VsZCBiZSBpbXBvcnRlZCBiZWZvcmUgZ2VuZXJhdGluZyBkYXRhIGluIHRoZSBuZXdseSBpbnN0YWxsZWQgc3lzdGVtLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY2IiBuYW1lPSJiYWNrdXBDb250ZW50Ij4KKyAgICA8dmFsdWU+U3lzdGVtIEJhY2t1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY3IiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT5CaWxkc2NoaXJtZnJlaWdhYmUgZXJsYXViZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2OCIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+RGVueSB1c2VyIHRvIHNoYXJlIFNjcmVlbi9SZWNvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2OSIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+VGVpbG5laG1lciBpc3QgTW9kZXJhdG9yIHVuZCB2ZXJmw7xndCBzb21pdCDDvGJlciBhbGxlIEJlYXJiZWl0dW5nc2Z1bmt0aW9uZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3MCIgbmFtZT0iYXBwbHkgZm9yIHNjcmVlbi9yZWNvcmRpbmciPgorICAgIDx2YWx1ZT5tw7ZjaHRlIGdlcm5lIGRlbiBCaWxkc2NoaXJtIGZyZWlnZWJlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3MSIgbmFtZT0ibW9kZXJhdGlvbiBtaW5pIGljb25zIj4KKyAgICA8dmFsdWU+U2llIGhhYmVuIGRpZSBCZXJlY2h0aWd1bmcgenVyIEJpbGRzY2hpcm1mcmVpZ2FiZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3MiIgbmFtZT0ibW9kZXJhdGlvbiBtaW5pIGljb25zIj4KKyAgICA8dmFsdWU+QmlsZHNjaGlybWZyZWlnYWJlIGJlYW50cmFnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3MyIgbmFtZT0ibW9kZXJhdGlvbiBtaW5pIGljb25zIGNvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT5CZXJlY2h0aWd1bmcgenVyIEJpbGRzY2hpcm1mcmVpZ2FiZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3NCIgbmFtZT0ic291bmQgaWNvbiI+CisgICAgPHZhbHVlPlR1cm4gc291bmQgb2ZmPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzUiIG5hbWU9InNvdW5kIGljb24iPgorICAgIDx2YWx1ZT5UdXJuIHNvdW5kIG9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzYiIG5hbWU9InJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5BdWRpbyBvbmx5IHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3NyIgbmFtZT0icm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlR1cm4gdGhpcyBGbGFnIG9uIGFuZCB0aGUgdXNlcnMgd2lsbCBoYXZlIG9ubHkgdGhlIEF1ZGlvLU9wdGlvbiBhbmQgbm8gVmlkZW8gaW4gYSBjb25mZXJlbmNlIHJvb20uIFRoaXMgY2FuIGJ5IGdvb2QgdG8gc2F2ZSBiYW5kd2lkdGguPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzgiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFsbG93IFJlbW90ZSBDb250cm9sIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzkiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkRlbnkgUmVtb3RlIENvbnRyb2wgKER1cmluZyBTY3JlZW4gU2hhcmluZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MCIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QXBwbHkgZm9yIHJpZ2h0IHRvIFJlbW90ZSBDb250cm9sIFNjcmVlbiAoRHVyaW5nIFNjcmVlbiBTaGFyaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgxIiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGFsbG93ZWQgdG8gUmVtb3RlIENvbnRyb2wgU2NyZWVuIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODIiIG5hbWU9ImFwcGx5IGZvciByZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gcmVtb3RlIGNvbnRyb2wgc2NyZWVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgzIiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Vc2VyIGlzIE1vZGVyYXRvciwgaGUgY2FuIGRvIGFueXRoaW5nISBbUmVtb3RlIERlc2t0b3AgQ29udHJvbF08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4NCIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QWxsb3cvRGVueSByaWdodCB0byBSZW1vdGUgQ29udHJvbCBTY3JlZW4gKER1cmluZyBTY3JlZW4gU2hhcmluZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4NSIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+MSkgWW91ciBQQyB0byByZW1vdGUgUEM6IFRvIGNvcHkgYW5kIHBhc3RlIHRleHQgZnJvbSB5b3VyIGNsaXBib2FyZCBpbnRvIHRoZSByZW1vdGUgY29udHJvbGxlZCBzY3JlZW4sIGNsaWNrIG9uIHRoZSBzY3JlZW4sIHRoZW4gcmlnaHQgY2xpY2sgaW4gdGhlIHRleHQgZmllbGQgYW5kIGNob29zZSAiSW5zZXJ0IiBmcm9tIHRoZSBjb250ZXh0IChyaWdodCBjbGljaykgbWVudS4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7MikgRnJvbSByZW1vdGUgUEMgdG8geW91ciBQQzogVG8gY29weSB0ZXh0IGZyb20gdGhlIHJlbW90ZSBQQyB0byB5b3VyIFBDJ3MgY2xpcGJvYXJkLCBoaWdobGlnaHQgdGhlIHRleHQgd2l0aCB0aGUgbW91c2Ugb24gdGhlIHJlbW90ZSBzY3JlZW4sIHRoZW4gcmlnaHQtY2xpY2sgb24gdGhlIHJlbW90ZSBzY3JlZW4gYW5kIGNob29zZSAmbHQ7aSZndDtDb3B5IGhpZ2hsaWdodGVkIHRleHQmbHQ7L2kmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODYiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNvcHkgYW5kIFBhc3RlIHRleHQgZnJvbSB5b3VyIFBDIHRvIHJlbW90ZSBQQyBhbmQgdmljZS12ZXJzYS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4NyIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+Q29weSBoaWdobGlnaHRlZCB0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODgiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkhvdyB0byBjb3B5IG4gcGFzdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4OSIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+UXVhbGl0eSBvZiB0aGUgU2NyZWVuU2hhcmU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTAiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPlZlcnkgaGlnaCBRdWFsaXR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTEiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPkhpZ2ggUXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkyIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5NZWRpdW0gUXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkzIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5Mb3cgUXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk0IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPmVuX1VTPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTUiIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+ZGVfREU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NiIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5LZXlib2FyZDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NyIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5DbG9zZSBXZWJpbmFyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk4IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPlRoZSBXZWJpbmFyIGlzIGFscmVhZHkgY2xvc2VkLCB5b3Ugd2lsbCBiZSByZWRpcmVjdGVkIHRvIHNvbWUgaW50ZXJlc3Rpbmcgb2ZmZXJpbmdzIGluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTkiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+Q2xvc2UgUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAwIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPkV4aXQgVVJMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDEiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+Um9vbSB0ZXJtaW5hdGlvbiBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAyIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPklmIHRoZSByb29tIGlzIGNsb3NlZCB1c2VycyB3aWxsIGJlIHJlZGlyZWN0ZWQgdG8gdGhlIGV4aXQgVVJMLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAzIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkxkYXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA1IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNiIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5Db25maWcgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA3IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkxkYXAgQ29uZmlnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDgiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA5IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkVuYWJsZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JbnNlcnRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTExIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkluc2VydGVkIGJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTIiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+VXBkYXRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEzIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPlVwZGF0ZWQgYnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5UaGUgY29uZmlnIGZpbGVzIGFyZSBpbiB0aGUgZm9sZGVyIHdlYmFwcHMvb3Blbm1lZXRpbmdzL2NvbmYuIFlvdSBuZWVkIHRvIG1hbnVhbGx5IHVwbG9hZCB0aGUgZmlsZXMgdG8gdGhpcyBmb2xkZXIuIENoYW5nZXMgdG8gdGhlIGNvbmZpZyBmaWxlIGFyZSBpbW1lZGlhdGVseSBvbmxpbmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTUiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+Q29uZmlnIGZpbGUgbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE2IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPklmIHlvdSBlbmFibGUgIkFkZCBEb21haW4gdG8gdXNlcm5hbWUiIHRoZSB2YWx1ZSBvZiB0aGUgZmllbGQgImRvbWFpbiIgaXMgYWRkZWQgdG8gZWFjaCBsb2dpbiB0aGF0IHRoZSB1c2VyIGVudGVycyBpbiB0aGUgbG9naW4gYm94LiBUaGlzIGlzIHVzZWZ1bCBpZiB0aGUgTG9naW4gaW4gdGhlIExkYXAgaXMgc3RvcmVkIGluY2x1ZGluZyB0aGUgZG9tYWluIG5hbWUuIEV4YW1wbGU6IFVzZXIgZW50ZXJzICJoYW5zIiBkb21haW4gaXMgc3BlY2lmaWVkIGFzICJsb2NhbGhvc3QuY29tIiwgbG9naW4gdGhhdCBpcyB2ZXJpZmllZCBhZ2FpbnN0IExkYXAgaXM6IGhhbnNAbG9jYWxob3N0LmNvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE3IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkFkZCBEb21haW4gdG8gdXNlcm5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExOCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5Eb21haW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExOSIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5JbnNlcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMCIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5Db3B5IGhpZ2hsaWdodGVkIHRleHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMSIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5SZW1vdGUgQ2xpcGJvYXJkIFRleHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMiIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5TaG93IHJlbW90ZSBDbGlwYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMyIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+RG8gbm90IHNob3cgYWdhaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNCIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+Q29weSB0ZXh0IGhlcmUgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjUiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPllvdSBuZWVkIHRoZSByaWdodCB0byByZW1vdGUgY29udHJvbCAob3IgdGhlIG1vZGVyYXRpb24pIHRvIGNvcHkgYW5kIHBhc3RlIHRleHQgdG8gb3IgZnJvbSB0aGUgcmVtb3RlIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNiIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+QmVhcmJlaXRlIEVpbnN0ZWxsdW5nZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNyIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+WmVpZ2Uga2VpbmUgSW5mby1Cb3ggaW4gZGVyIFJlbW90ZSBDb250cm9sIMO8YmVyIEtvcGllcmVuIHVuZCBFaW5mw7xnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyOCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5TYXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjkiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+UmVtb3ZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzAiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzEiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5JbnZpdGUgdXNlciB0byBjb25mZXJlbmNlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMiIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkNob29zZSBhIGNvbmZlcmVuY2Ugcm9vbS4gVGhlIGludml0ZWQgdXNlciB3aWxsIGdldCBhIG1lc3NhZ2Ugd2l0aCB5b3VyIG5hbWUgYW5kIGEgbGluayB0byB0aGUgcm9vbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMyIgbmFtZT0iY2hhdCB1c2VyIj4KKyAgICA8dmFsdWU+Q29ubmVjdGVkIHNpbmNlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM0IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+RW50ZXIgcm9vbSBhZnRlciBzZW5kaW5nIGludml0YXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzNSIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkludml0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM2IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+TWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM3IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0byBpbnZpdGUgeW91IHRvIHRoZSBjb25mZXJlbmNlIHJvb206PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzgiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5JbnZpdGUgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM5IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+U2VuZCBJbnZpdGF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDAiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5kaWQgJmx0O2ImZ3Q7bm90Jmx0Oy9iJmd0OyBhY2NlcHQgeW91ciBpbnZpdGF0aW9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQxIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+QWNjZXB0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDIiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5EZW55PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDMiIG5hbWU9InVzZXIgcHJvZmlsZSI+CisgICAgPHZhbHVlPlRpbWV6b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDQiIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPkV2ZW50IERldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0NSIgbmFtZT0iYXBwb2ludG1lbnQgbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ2IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5EZXNjcmlwdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ3IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5DcmVhdGVkIGJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDgiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5UaW1lWm9uZSBNZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDkiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5DaGVjayAiVGltZVpvbmUgTWVzc2FnZSIgdG8gZ2l2ZSB1c2VycyBhIG1lc3NhZ2UgbmV4dCB0aW1lIHRoZXkgbG9naW4gdG8gdXBkYXRlIHRoZWlyIHByb2ZpbGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTAiIG5hbWU9InRpbWUgem9uZSB1cGRhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlBsZWFzZSBjaGVjayB0aGUgdGltZSB6b25lIGluIHlvdXIgdXNlciBwcm9maWxlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUxIiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5OZXcgJEFQUF9OQU1FIGNvbmZlcmVuY2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTIiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkRldGFpbHM6Jmx0O2JyLyZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MyIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3RhcnQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTQiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkVuZDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NSIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2hhbmdlZCAkQVBQX05BTUUgY29uZmVyZW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NiIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+T3JnYW5pemVyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU3IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DYW5jZWxlZCAkQVBQX05BTUUgY29uZmVyZW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1OCIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIGNvbmZlcmVuY2UgUmVtaW5kZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTkiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Db21tdW5pdHkgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlNob3cgY29udGFjdCBkYXRhIHRvIGV2ZXJ5Ym9keTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYxIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+QWRkIGZpZWxkcyBvZiBpbnRlcmVzdCB0aGF0IHlvdSBvZmZlciBvciB0aGF0IHlvdSBhcmUgc2VhcmNoaW5nIHRvIGZpbmQgaW50ZXJlc3RpbmcgcGFydG5lcnMgZm9yIGEgY29uZmVyZW5jZS4gQ29tbWEgc2VwYXJhdGUgdGhlIHRlcm1zIChmb3IgZXhhbXBsZTogTWVkaWNhbCBTZXJ2aWNlLCBIZWFsdGggYXNzdXJhbmNlLCAuLi4pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjIiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NeSBvZmZlcmluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MyIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk15IGludGVyZXN0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY0IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY1IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+VGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2NiIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkZpZWxkcyBvZiBpbnRlcmVzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY3IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+Q29udGFjdCBpbmZvcm1hdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY4IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2hvdyBjb250YWN0IGRhdGEgdG8gY29udGFjdHMgb25seTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY5IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2hvdyBjb250YWN0IGRhdGEgdG8gbm9ib2R5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzAiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NeSBQcm9maWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzEiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5FZGl0IHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzIiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TZWFyY2ggdXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MyIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPldhdGNoIHlvdXIgcHJvZmlsZSBsaWtlIG90aGVyIHNlZSB5b3U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkVkaXQgeW91ciBzZXR0aW5ncywgYWRkIHlvdXIgaW50ZXJlc3RzIHRvIGJlIGZvdW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzUiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TZWFyY2ggZm9yIG90aGVyIHVzZXJzIGFuZCBleHRlbmQgeW91ciBuZXR3b3JrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzYiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+U2VhcmNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzciIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+VXNlciBvZmZlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3OCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5Vc2VyIGxvb2tzIGZvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc5IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkZyZWV0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODAiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgxIiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlRpbWV6b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODIiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+T2ZmZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODMiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+U2VhcmNoczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg0IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlNlYXJjaHJlc3VsdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg1IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkFjdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NiIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5BZGQgdG8gY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NyIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5TZW5kIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4OCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5Db250YWN0cyBhbmQgTWVzc2FnZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4OSIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5QZW5kaW5nIGNvbnRhY3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTAiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5BY2NlcHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkRlbnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MiIgbmFtZT0idXNlciBjb250YWN0IHJlcXVlc3QiPgorICAgIDx2YWx1ZT5IaSw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MyIgbmFtZT0idXNlciBjb250YWN0IHJlcXVlc3QiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGFkZCB5b3UgYXMgY29udGFjdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NCIgbmFtZT0idXNlciBjb250YWN0IHJlcXVlc3QiPgorICAgIDx2YWx1ZT5DaGVjayB5b3VyIGNvbnRhY3QgcmVxdWVzdHMgaW4gJEFQUF9OQU1FIG9yIGNsaWNrIG9uIHRob3NlIGxpbmtzIHRvIGFjY2VwdCBvciBkZW55IHRoZSByZXF1ZXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTUiIG5hbWU9ImFkZCB1c2VyIGNvbnRhY3QiPgorICAgIDx2YWx1ZT5UaGlzIHVzZXIgaXMgYWxyZWFkeSBpbiB5b3VyIGNvbnRhY3QgbGlzdCBvciBoYXMgcmVjZWl2ZWQgYW4gaW52aXRhdGlvbiB0byB5b3VyIGNvbnRhY3QgbGlzdCB0aGF0IGlzIG5vdCBhbnN3ZXJlZCB5ZXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTYiIG5hbWU9InVzZXIgY29udGFjdCBtYWlsIj4KKyAgICA8dmFsdWU+WW91ciBjb250YWN0IGxpc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkVkaXQgeW91ciBjb250YWN0IGFuZCBtZXNzYWdlcywmbHQ7YnIvJmd0OyBtYW5hZ2UgeW91ciBwZW5kaW5nIGNvbnRhY3RzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk4IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+Y29uZmlybWVkIHlvdSBhcyBjb250YWN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk5IiBuYW1lPSJjaGF0IGluZm8gbWVzc2FnZSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAwIiBuYW1lPSJjaGF0IGxvZyBpY29uIj4KKyAgICA8dmFsdWU+U2hvdyAvIENvcHkgY2hhdCBsb2c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMSIgbmFtZT0iY2hhdCBsb2cgd2luZG93Ij4KKyAgICA8dmFsdWU+Q2hhdCBMb2c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RnJvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TdWJqZWN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDYiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1lc3NhZ2VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDciIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk5ldyBNYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkNsaWNrIHRvIHdyaXRlIGEgbmV3IG1lc3NhZ2UgdG8gYW55IG9mIHlvdXIgY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwOSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+V3JpdGUgbmV3IG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VG86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlN1YmplY3Q6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTIiIG5hbWU9IndoaXRlYm9hcmQgZnVsbC1maXQiPgorICAgIDx2YWx1ZT5Ba3RpdmllcmUgR3LDtsOfZW5hbnBhc3N1bmcsIHNvZGFzcyBhdWYgZGFzIGdhbnplIFdoaXRlYm9hcmQgZ2V6b29tdCB3aXJkJmx0O2JyLyZndDt1bmQgZGVyIEJlbnV0emVyIGFsbGUgRG9rdW1lbnRlIHNpZWh0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjEzIiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT5lbnRmZXJuZSBCZW51dHplcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE0IiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IGtpY2sgeW91cnNlbGYgb3V0IG9mIHRoZSBjb25mZXJlbmNlIHJvb20hIElmIHlvdSB3YW50IHRvIGxlYXZlIGl0IGNsb3NlIHRoZSBicm93c2VyIG9yIHVzZSB0aGUgZXhpdCBidXR0b24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTUiIG5hbWU9ImtpY2stdXNlciI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkaXNjb25uZWN0IHRoaXMgdXNlciBmcm9tIHRoaXMgY29uZmVyZW5jZSByb29tPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE2IiBuYW1lPSJraWNrLXVzZXIiPgorICAgIDx2YWx1ZT5Db25maXJtIGFjdGlvbiAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNyIgbmFtZT0ia2ljay11c2VyIj4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBraWNrIGEgU3VwZXItTW9kZXJhdG9yIG91dCBvZiBhIHJvb20hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkJvb2sgY29uZmVyZW5jZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlN0YXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjAiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkVuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgYW4gb3B0aW9uYWwgcmVxdWVzdCBmb3IgbWVldGluZyB0byB0aGUgbWVzc2FnZSBhbmQgY3JlYXRlIGEgY29uZmVyZW5jZSByb29tLiBUaGUgRXZlbnQgaXMgdGhlbiBjb3BpZWQgaW4gdGhlIGNhbGVuZGFyIG9mIGV2ZXJ5IHBhcnRpY2lwYW50LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5JbmJveDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5HZXNlbmRldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5HZWzDtnNjaHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhpcyBpcyB5b3UhIFlvdSBjYW5ub3QgYWRkIHlvdXJzZWxmIGFzIHlvdXIgb3duIGNvbnRhY3QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjYiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5UaGUgdXNlciBpcyBhbHJlYWR5IGRlbmllZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoZSB1c2VyIGlzIGFscmVhZHkgYXBwcm92ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjgiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5UaGlzIHVzZXIgY29udGFjdCBoYXNoIGlzIGludmFsaWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjkiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Vc2VyIGFkZGVkIHRvIGNvbnRhY3QgbGlzdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlVzZXIgZGVuaWVkIGFzIGNvbnRhY3QgYW5kIHJlbW92ZWQgZnJvbSBwZW5kaW5nIGNvbnRhY3QgbGlzdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIHN1Y2ggY29udGFjdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPldvdWxkIHlvdSByZWFsbHkgbGlrZSB0byByZW1vdmUgdGhhdCBjb250YWN0PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMzIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+Q29uZmlybSBjb250YWN0IHJlbW92YWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkRlbGV0ZSBjb250YWN0IGZyb20gbGlzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM1IiBuYW1lPSJ1c2VyIHByb2ZpbGUiPgorICAgIDx2YWx1ZT5Vc2VyIFByb2ZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNiIgbmFtZT0idXNlciBwcm9maWxlIj4KKyAgICA8dmFsdWU+U2hvdyB1c2VyIHByb2ZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWVzc2FnZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzOCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VhcmNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbGVjdCBhbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0MCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VsZWN0IG5vbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0MSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VsZWN0IHVucmVhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWxlY3QgcmVhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Nb3ZlIHRvIGZvbGRlciAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIG5ldyBmb2xkZXIgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRlbGV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ2IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EZWxldGVkIG1haWxzIGFyZSBzdGlsbCBpbiB5b3VyIHRyYXNoIGZvbGRlciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWFyayB1bnJlYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0OCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWFyayByZWFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFuc3dlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BbnN3ZXIgZXZlcnlib2R5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkZvcndhcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWN0aW9ucyAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlNlbmQgcHJpdmF0ZSBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk5vdGhpbmcgc2VsZWN0ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1vdmUgdG8gSW5ib3g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGVsZXRlIChmaW5hbCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1OCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIGZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgZm9sZGVycyBhbmQgb3JnYW5pemUgeW91ciBtZXNzYWdlcyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIGZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPkRlbGV0ZSBmb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPllvdSBjYW5ub3QgZGVsZXRlIHRoaXMgZm9sZGVyLCB0aGVyZSBhcmUgc3RpbGwgbWVzc2FnZXMgaW5zaWRlISBEZWxldGUgZmlyc3QgdGhlIG1lc3NhZ2VzIG9yIG1vdmUgdGhlbSB0byBhbm90aGVyIGZvbGRlci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPkVkaXQgbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGZvbGRlcj8gVGhlcmUgaXMgbm8gd2F5IHRvIHVuZG8gdGhhdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPllvdXIgcmVxdWVzdCB3YXMgc2VuZCB0byB0aGUgdXNlci4gVGhlIHVzZXIgd2lsbCByZWNlaXZlIGEgbm90aWZpY2F0aW9uIHRvIGFjY2VwdCBvciBkZW55IHlvdXIgcmVxdWVzdC4gT25seSBhY2NlcHRlZCByZXF1ZXN0cyBhcmUgaW4geW91ciBjb250YWN0IGxpc3Qgb2YgY291cnNlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+TWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY4IiBuYW1lPSJ1c2VyIHZpZXcgcHJvZmlsZSI+CisgICAgPHZhbHVlPlRoZSB1c2VyIGRvZXMgbm90IHNoYXJlIGhpcyBwZXJzb25hbCBjb250YWN0IGRhdGEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjkiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+VGhlIHVzZXIgZG9lcyBzaGFyZSBoaXMgcGVyc29uYWwgY29udGFjdCBkYXRhIG9ubHkgdG8gY29udGFjdHMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzAiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+QWRkcmVzcyAmYW1wOyBQaG9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjcxIiBuYW1lPSJlcnJvciBjb2RlIj4KKyAgICA8dmFsdWU+WW91IGludml0YXRpb24gY29kZSBpcyBubyB2YWxpZCwgdGhlIGNvZGUgaXMgb25seSB2YWxpZCBmb3IgYSBwZXJpb2Qgb2YgdGltZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3MiIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPlRoaXMgZXZlbnQgaXMgY29ubmVjdGVkIHRvIHNldmVyYWwgY2FsZW5kYXJzIG9mIG90aGVyIHVzZXJzLiBZb3VyIGNoYW5nZSB3aWxsIGFsc28gdXBkYXRlIHRoZWlyIGNhbGVuZGFyLiBXb3VsZCB5b3UgcmVhbGx5IGxpa2UgdG8gdXBkYXRlIHRoZSBldmVudD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3MyIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPkNvbmZpcm0gdXBkYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzQiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5BbGxvdyBjb250YWN0IHRvIHNlZSBteSBjYWxlbmRhciAodmlldyBvbmx5KTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc1IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+RG8gbm90IHNoYXJlIGNhbGVuZGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzYiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5DYWxlbmRhciBvZiBjb250YWN0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+WW91ciBjb250YWN0cyBuZWVkIHRvIGFwcHJvdmUgeW91IGZpcnN0IHRvIGJlIGFibGUgdG8gc2VlIHRoZWlyIGNhbGVuZGFyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc4IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBzdG9yZSBvciBkZWxldGUgZXZlbnRzIGZyb20gb3RoZXIgY2FsZW5kYXJzIHRoZW4geW91ciBvd24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzkiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5TaG93IG15IG93biBjYWxlbmRhciBhZ2FpbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4MCIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPlRoaXMgZXZlbnQgaXMgY29ubmVjdGVkIHRvIHNldmVyYWwgY2FsZW5kYXJzIG9mIG90aGVyIHVzZXJzLiBZb3VyIGFjdGlvbiB3aWxsIGFsc28gZGVsZXRlIHRoZSBldmVudCBmcm9tIHRoZWlyIGNhbGVuZGFyLiBXb3VsZCB5b3UgcmVhbGx5IGxpa2UgdG8gZGVsZXRlIHRoZSBldmVudD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4MSIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPkNvbmZpcm0gYWN0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODIiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5FbnRlciByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODMiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5BY2Nlc3MgdGhlIGNvbmZlcmVuY2Ugcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBhIGNvbmZlcmVuY2Ugcm9vbSBhbmQgZXZlbnQgYm9va2VkIHdpdGggdGhpcyBwcml2YXRlIG1lc3NhZ2UuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODUiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0byBzdG9yZSB0aGUgZXZlbnQgZmlyc3QhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODYiIG5hbWU9ImFjY2VzcyByb29tcyBlcnJvciI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIHN1Y2ggcm9vbSBhdmFpbGFibGUuIFRoZSBldmVudCBpbiB0aGUgY2FsZW5kYXIgYW5kIGNvbm5lY3RlZCByb29tIGlzIGFscmVhZHkgZGVsZXRlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NyIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+Q2hvb3NlIHlvdXIgbmlja25hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4OCIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+Rmlyc3RuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODkiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPkxhc3RuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTAiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPkVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTEiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPk9rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTIiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPk1pbmltdW0gbGVuZ3RoIDQgY2hhcnMhIEZvciBib3RoLCBmaXJzdG5hbWUgYW5kIGxhc3RuYW1lLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkzIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5QbGVhc2UgZW50ZXIgYSB2YWxpZCBlbWFpbCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5NCIgbmFtZT0iYXV0aCBmcm9tIj4KKyAgICA8dmFsdWU+RmFjZWJvb2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5NSIgbmFtZT0iYXV0aCBmb3JtIj4KKyAgICA8dmFsdWU+TG9naW4gd2l0aCB5b3VyIEZhY2Vib29rIGFjY291bnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5NiIgbmFtZT0idmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+TWVtYmVyIHNpbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTciIG5hbWU9ImRpcmVjdCBsb2dpbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+WW91J3ZlIGxvZ2dlZCB3aXRoIHlvdXIgRmFjZWJvb2sgYWNjb3VudC4gWW91IHNob3VsZCB1cGRhdGUgeW91ciBwcm9maWxlIHdpdGggdGhlIGNvcnJlY3QgZW1haWwuIE90aGVyd2lzZSB5b3Ugd2lsbCBub3QgcmVjZWl2ZSBpbnZpdGF0aW9ucyBhbmQgcHJpdmF0ZSBtZXNzYWdlcyBmcm9tIG90aGVyIHVzZXJzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk4IiBuYW1lPSJkaXJlY3QgbG9naW4gbWVzc2FnZSBoZWFkZXIiPgorICAgIDx2YWx1ZT5NZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTkiIG5hbWU9ImRpcmVjdCBsb2dpbiBtZXNzYWdlIGNoZWNrYm94IGNvbnRyb2wiPgorICAgIDx2YWx1ZT5aZWlnZSBQcm9maWwtVXBkYXRlLU5hY2hyaWNodCBuaWNodCBub2NoIGVpbm1hbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAwIiBuYW1lPSJwcm9maWxlIHNldHRpbmdzIGJ1dHRvbiI+CisgICAgPHZhbHVlPm1vcmUgZGlzcGxheSBvcHRpb25zIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5OZXcgcHJpdmF0ZSBtZXNzYWdlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DbGljayBoZXJlIHRvIHZpc2l0IHlvdXIgcHJvZmlsZSB0byBzZWUgdGhlIGZ1bGwgbWVzc2FnZSAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+UmVwbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwNCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+Um9vbXMgYW5kIGNoYXRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDUiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPk15IHJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDYiIG5hbWU9Im15IHJvb21zIj4KKyAgICA8dmFsdWU+TXkgY29uZmVyZW5jZSByb29tIChmb3IgMS0xNiB1c2Vycyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwNyIgbmFtZT0ibXkgcm9vbXMiPgorICAgIDx2YWx1ZT5NeSB3ZWJpbmFyIHJvb20gKGZvciAxLTEyMCB1c2Vycyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwOCIgbmFtZT0icm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPk93bmVyIElkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDkiIG5hbWU9ImxvZ2luIGVycm9yIj4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGEgcGFzc3dvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMCIgbmFtZT0ibG9naW4gZXJyb3IiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCBhbiBhY2NvdW50IHdpdGggVXNlci1MZXZlbCBVc2VyLCBNb2RlcmF0b3Igb3IgQWRtaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMSIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPldlYi1TZXJ2aWNlIChvbmx5IGFjY2VzcyB2aWEgU09BUCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMiIgbmFtZT0idXBsb2FkIGZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5EbyBkaXJlY3RseSBsb2FkIHRvIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMyIgbmFtZT0id2hpdGVib2FyZCBjbG9zZSBjb25maXJtYXRpb24iPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gcmVtb3ZlIHRoaXMgd2hpdGVib2FyZD8gVGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxNCIgbmFtZT0id2hpdGVib2FyZCBsb2FkIFdNTCI+CisgICAgPHZhbHVlPkxvYWQgdG8gd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE1IiBuYW1lPSJyZWNvcmRpbmcgZmxhZyI+CisgICAgPHZhbHVlPkRvIG5vdCBmb3JnZXQgc3RhcnQgcmVjb3JkaW5nISBPbmUgdXNlciBwZXIgcm9vbSBhbHdheXMgbmVlZHMgdG8gc3RhcnQgaXQgdG8gaGF2ZSB0aGUgcmVjb3JkaW5nIGFmdGVyd2FyZHMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTYiIG5hbWU9InJlY29yZGluZyBmbGFnIj4KKyAgICA8dmFsdWU+U3RhcnQgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTciIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+QXJyb3c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxOCIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT5DaXJjbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxOSIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT5MaW5lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjAiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+U3F1YXJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjEiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+VHJpYW5nbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyMiIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlRleHQvTm90ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIzIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+Q2xpcGFydHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkRyYXcgRnJlZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI1IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+U2VsZWN0L01vdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNiIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkRyYXcgU2hhcGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNyIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkN1dC9Nb3ZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjgiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5ab29tIEluL091dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI5IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+UHJpbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlVuZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMSIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlRyYXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzIiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5BZGQgR3JpZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMzIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+U2hhcmUgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM0IiBuYW1lPSJpY29uIHN1Ym1lbnUiPgorICAgIDx2YWx1ZT5TZWxlY3QgU2hhcGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNSIgbmFtZT0iaWNvbiBzdWJtZW51Ij4KKyAgICA8dmFsdWU+U2VsZWN0IENsaXBhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNiIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkNvcHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNyIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkN1dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM4IiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+UGFzdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzOSIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkRlbGV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQwIiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGUgY29tcGxldGUgY29udGVudCBvbiB0aGUgd2hpdGVib2FyZD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MSIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkxvYWQgZGlyZWN0bHkgdG8gd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQyIiBuYW1lPSJhdHRlbmRlZXMiPgorICAgIDx2YWx1ZT5BdHRlbmRlZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MyIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+QXR0ZW5kZWUgTWFuYWdlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ0IiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5QcmVzZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDUiIG5hbWU9ImF0ZW5kZWUgbWFuYWdlciI+CisgICAgPHZhbHVlPlJlbW90ZSBDb250cm9sbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ2IiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5FamVjdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ3IiBuYW1lPSJjaGF0Ij4KKyAgICA8dmFsdWU+Q2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ4IiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5JbnZpdGUgQXR0ZW5kZWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDkiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPkJ5IEVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTAiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPlVzZXIgaXMgbW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTEiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPlVzZXIgaGFzIHdlYmNhbSBzd2l0Y2hlZCBvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUyIiBuYW1lPSJmaWxsX29wdGlvbiI+CisgICAgPHZhbHVlPkRlYWN0aXZhdGUgc2hhcGUgZmlsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUzIiBuYW1lPSJmaWxsX29wdGlvbiI+CisgICAgPHZhbHVlPkFjdGl2YXRlIHNoYXBlIGZpbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlNuYXAgdG8gR3JpZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU1IiBuYW1lPSJhbGxvd19yZWNvcmRpbmciPgorICAgIDx2YWx1ZT5BbGxvdyByZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NiIgbmFtZT0id2FpdF9mb3JfcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+V2FpdCBmb3IgcmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTciIG5hbWU9ImhpZGVfdG9wX2JhciI+CisgICAgPHZhbHVlPkhpZGUgdG9wYmFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTgiIG5hbWU9ImZpbGVFeHBsb3JlciI+CisgICAgPHZhbHVlPlBsYXkgdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1OSIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhlIGNvbnRlbnQgb24gdGhlIGN1cnJlbnQgc2xpZGU/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjAiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPkFjY2VwdCBhbmQgZ3JhbnQgdXNlciByaWdodDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYxIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT5EZW55PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjIiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPkk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2MyIgbmFtZT0iYWN0aXZpdHlfd2luZG93Ij4KKyAgICA8dmFsdWU+QWt0aXZpdMOkdGVuIHVuZCBBa3Rpb25lbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY0IiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+TMO2c2NoZSBXaGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjUiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0aGUgbW9kZXJhdGlvbiBvciB0aGUgcmlnaHQgdG8gZHJhdyBvbiB0aGUgd2hpdGVib2FyZCB0byByZW1vdmUgd2hpdGVib2FyZHMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjYiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5Ob3QgYWxsb3dlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY3IiBuYW1lPSJ1c2VyX2xlZnRfYWN0X21zZyI+CisgICAgPHZhbHVlPmhhcyBsZWZ0IHRoZSByb29tLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY4IiBuYW1lPSJjbGlwYXJ0IGljb25zIj4KKyAgICA8dmFsdWU+TWF0aCBpY29uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY5IiBuYW1lPSJjbGlwYXJ0IGljb25zIj4KKyAgICA8dmFsdWU+Tm8gY2F0ZWdvcnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MCIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+Q29sb3ItU3R5bGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+UXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzcyIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5Eb21haW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MyIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+dmlzaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NCIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+cmVkb3JhbmdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzUiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPm1lZGl1bXNlYWdyZWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzYiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnN0ZWVsYmx1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc3IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5saWdodHN0ZWVsYmx1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc4IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5nb2xkZW5yZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3OSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+c2lsdmVyZ3JheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgwIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT51c2VyZGVmaW5lZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgxIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5iZXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODIiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnVwbG9hZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgzIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5tZWRpdW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NCIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg1IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5Vbm11dGUgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg2IiBuYW1lPSJnaXZlIGV4Y2x1c2l2ZSBhdWRpbyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBvZiBvdGhlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NyIgbmFtZT0ibXV0ZSBzZWxmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGdsb2JhbGx5IG11dGVkIGJ5IHRoZSBtb2RlcmF0b3IuIFlvdSBjYW5ub3QgdW5tdXRlIHlvdXJzZWxmITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg4IiBuYW1lPSJtdXRlIHNlbGYgY29uZmlybSBtZXNzYWdlIHRpdGxlIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg5IiBuYW1lPSJtdXRlIHNlbGYgY29uZmlybSBtZXNzYWdlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gbXV0ZSB5b3Vyc2VsZiBnbG9iYWxseT8gTm8gb3RoZXIgdXNlciB3aWxsIGhlYXIgeW91IGFueW1vcmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTAiIG5hbWU9Im11dGUgb3RoZXJzIGNvbmZpcm0gbWVzc2FnZSB0aXRsZSI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBsb2NhbGx5PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkxIiBuYW1lPSJtdXRlIG90aGVycyBjb25maXJtIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gbXV0ZSB0aGlzIG1pY3JvcGhvbmU/IFlvdSBjYW4gb25seSBtdXRlIGl0IGxvY2FsbHkgb24geW91ciBzY3JlZW4uIEl0IGhhcyBubyBlZmZlY3QgdG8gaG93IG90aGVyIHVzZXJzIGhlYXIgdGhpcyB1c2VyLiBPbmx5IG1vZGVyYXRvcnMgY2FuIHR1cm4gaXQgb2ZmIGdsb2JhbGx5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkyIiBuYW1lPSJtdXRlIG90aGVycyBjb25maXJtIG1lc3NhZ2UgdGl0bGUiPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgb2ZmIGdsb2JhbGx5PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkzIiBuYW1lPSJtdXRlIG90aGVycyBtb2RlcmF0b3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBtdXRlIHRoaXMgdXNlciBnbG9iYWxseT8gTm8gb3RoZXIgdXNlciB3aWxsIGhlYXIgaGltIGFueW1vcmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTQiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+WW91ciBzb3VuZCBpcyBvbi4gQ2xpY2sgaGVyZSB0byBzZW5kIG1vZGVyYXRvciBtZXNzYWdlIHRvIG11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5IChpbiB0aGUgY29tcGxldGUgY29uZmVyZW5jZSByb29tKSBvZmYhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTUiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+WW91ciBzb3VuZCBpcyBvZmYuIENsaWNrIGhlcmUgdG8gc2VuZCBtb2RlcmF0b3IgbWVzc2FnZSB0byB1bm11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5IChpbiB0aGUgY29tcGxldGUgY29uZmVyZW5jZSByb29tKSBvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5NiIgbmFtZT0ibXV0ZSBhcHBseSBzZWxmIG9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRoYXQgdGhlIG1vZGVyYXRvciBtdXRlcyBteSBtaWNyb3Bob25lIGdsb2JhbGx5LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk3IiBuYW1lPSJtdXRlIGFwcGx5IHNlbGYgb2ZmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRoYXQgdGhlIG1vZGVyYXRvciB1bm11dGVzIG15IG1pY3JvcGhvbmUgZ2xvYmFsbHkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTgiIG5hbWU9Im11dGUgYXBwbHkgb2YgbWVzc2FnZSI+CisgICAgPHZhbHVlPndhbnQgdGhhdCB0aGUgbW9kZXJhdG9yIHVubXV0ZXMgaGlzL2hlciBtaWNyb3Bob25lLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk5IiBuYW1lPSJtdXRlIGFwcGx5IG9mIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53YW50IHRoYXQgdGhlIG1vZGVyYXRvciBtdXRlcyBoaXMvaGVyIG1pY3JvcGhvbmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDAiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+VW5tdXRlIG1pY3JvcGhvbmUuIENsaWNrIGhlcmUgdG8gbXV0ZSBoaXMvaGVyIG1pY3JvcGhvbmUgZ2xvYmFsbHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDEiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lLiBDbGljayBoZXJlIHRvIHVubXV0ZSBoaXMvaGVyIG1pY3JvcGhvbmUgZ2xvYmFsbHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDIiIG5hbWU9Im11dGUgc2VsZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhpcyB1c2VyIGlzIGdsb2JhbGx5IG11dGVkIGJ5IHRoZSBtb2RlcmF0b3IuIFlvdSBjYW5ub3QgdW5tdXRlIGhpbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMyIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDQiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSB5b3VyIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwNSIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA2IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5Vbm11dGUgbWljcm9waG9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA3IiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDgiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDkiIG5hbWU9Im11dGUgbW9kZXJhdG9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Pbmx5IG1vZGVyYXRvcnMgY2FuIG11dGUgb3IgdW5tdXRlIGFuIHVzZXIgZ2xvYmFsbHkhIFRvIG11dGUgeW91ciBvd24gbWljcm9waG9uZTogUGxlYXNlIHVzZSB0aGUgbWljcm9waG9uZSBpY29uIGluIHlvdXIgdmlkZW8gcG9kITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDEwIiBuYW1lPSJwb2xsX25hbWUiPgorICAgIDx2YWx1ZT5Qb2xsIE5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMSIgbmFtZT0icG9sbF9uYW1lIj4KKyAgICA8dmFsdWU+WW91PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTIiIG5hbWU9ImFyY2hpdmVkX3BvbGxzIj4KKyAgICA8dmFsdWU+QXJjaGlldmVkIFBvbGxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTMiIG5hbWU9ImFjdGl2ZV9wb2xsIj4KKyAgICA8dmFsdWU+YWN0aXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTQiIG5hbWU9ImNoYXJ0X3NpbXBsZSI+CisgICAgPHZhbHVlPlNpbXBsZSBDaGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE1IiBuYW1lPSJjaGFydF9waWUiPgorICAgIDx2YWx1ZT5QaWUgQ2hhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNiIgbmFtZT0ic2lnbl91cF92YWxpZGF0aW9uIj4KKyAgICA8dmFsdWU+Qml0dGUgZ2ViZW4gU2llIGVpbmUgRU1haWwgYW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNyIgbmFtZT0iY2hhdF9ub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5OZXVlIE5hY2hyaWNodChlbik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxOCIgbmFtZT0icG9sbF9jbG9zZSI+CisgICAgPHZhbHVlPkNsb3NlIFBvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxOSIgbmFtZT0icG9sbF9jbG9zZV9jb25maXJtIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNsb3NlIHRoaXMgUG9sbD8gTm8gb25lIHdpbGwgYmUgYWJsZSB0byB2b3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjAiIG5hbWU9InBvbGxfZGVsZXRlIj4KKyAgICA8dmFsdWU+RGVsZXRlIFBvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMSIgbmFtZT0icG9sbF9kZWxldGVfY29uZmlybSI+CisgICAgPHZhbHVlPkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBQb2xsPyBUaGUgcmVzdWx0cyB3aWxsIGJlIGRlbGV0ZWQgYXMgd2VsbC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMiIgbmFtZT0ibGFuZ3VhZ2VfY29kZSI+CisgICAgPHZhbHVlPkxhbmd1YWdlIElTTyBDb2RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjMiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19wZXJtaXNzaW9uIj4KKyAgICA8dmFsdWU+QWxsb3cvRGVueSByaWdodCB0byBnaXZlIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNCIgbmFtZT0iYWxsb3dfZXhjbHVzaXZlX2F1ZGlvX3Blcm1pc3Npb24iPgorICAgIDx2YWx1ZT5BbGxvdyB1c2VyIHRvIGdpdmUgZXhjbHVzaXZlIGF1ZGlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjUiIG5hbWU9ImRlbnlfZXhjbHVzaXZlX2F1ZGlvX3Blcm1pc3Npb24iPgorICAgIDx2YWx1ZT5EZW55IHVzZXIgdG8gZ2l2ZSBleGNsdXNpdmUgYXVkaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNiIgbmFtZT0iZXhjbF9hdWRpbyBhcHBseSBzZWxmIG9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGdldCBhIHBlcm1pc3Npb24gZm9yIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNyIgbmFtZT0iZXhjbF9hdWRpbyBhcHBseSBvZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+d2FudCB0aGF0IHRoZSBtb2RlcmF0b3IgZ2l2ZXMgbWUgYSBwZXJtaXNzaW9uIGZvciBleGNsdXNpdmUgYXVkaW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjgiIG5hbWU9ImV4Y2xfYXVkaW8gc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+R2l2ZSBhIHBlcm1pc3Npb24gZm9yIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyOSIgbmFtZT0iY2FtX3Jlc29sdXRpb24iPgorICAgIDx2YWx1ZT5LYW1lcmEtQXVmbMO2c3VuZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMwIiBuYW1lPSJjYW1fcmVzb2x1dGlvbl9pbmZvIj4KKyAgICA8dmFsdWU+RGllIEthbWVyYS1BdXNsw7ZzdW5nIGhhdCBlaW5lbiBkaXJla3RlbiBFaW5mbHVzcyBhdWYgZGllIHZlcmJyYXVjaHRlIFVwbG9hZC1CYW5kYnJlaXRlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMxIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fZXJyb3IiPgorICAgIDx2YWx1ZT5Zb3UgZG9uJ3QgaGF2ZSB0aGUgcmlnaHQgdG8gZ2l2ZSB5b3Vyc2VsZiBvciBvdGhlcnMgZXhjbHVzaXZlIGF1ZGlvLiBZb3UgbmVlZCB0byBhcHBseSBmb3IgdGhlIHJpZ2h0IGZyb20gdGhlIG1vZGVyYXRvciBvciBhc2sgdGhlIG1vZGVyYXRvciB0byBnaXZlIHlvdSBleGNsdXNpdmUgYXVkaW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzIiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19hc2siPgorICAgIDx2YWx1ZT5JIHdvdWxkIGxpa2UgdG8gZ2V0IHRoZSByaWdodCBmb3IgZXhjbHVzaXZlIGF1ZGlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzMiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19hY3Rpb24iPgorICAgIDx2YWx1ZT5HaXZlIGV4Y2x1c2l2ZSBhdWRpbyB0byBtZSAoYWx0ZXJuYXRpdmVseSBjbGljayBvbiB5b3VyIHZpZGVvIHBvZCBvciBwcmVzcyBGMTIpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzQiIG5hbWU9Im1pY3JvIGlzIG9uIj4KKyAgICA8dmFsdWU+TWljcm9waG9uZSBpcyBvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNSIgbmFtZT0ibWljcm8gaXMgb2ZmIj4KKyAgICA8dmFsdWU+TWljcm9waG9uZSBpcyBtdXRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM2IiBuYW1lPSJoaWRlX2NoYXQiPgorICAgIDx2YWx1ZT5IaWRlIGNoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNyIgbmFtZT0iaGlkZV9hY3Rpdml0aWVzX2FuZF9hY3Rpb25zIj4KKyAgICA8dmFsdWU+SGlkZSBhY3Rpdml0aWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzgiIG5hbWU9ImhpZGVfZmlsZXNfZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5IaWRlIGZpbGVzIGV4cGxvcmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzkiIG5hbWU9ImhpZGVfYWN0aW9uc19tZW51Ij4KKyAgICA8dmFsdWU+SGlkZSBhY3Rpb25zIG1lbnU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MCIgbmFtZT0iaGlkZV9zY3JlZW5fc2hhcmluZyI+CisgICAgPHZhbHVlPkhpZGUgc2NyZWVuIHNoYXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MSIgbmFtZT0iaGlkZV93aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+SGlkZSB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDIiIG5hbWU9InNob3cgbWljcm9waG9uZSBzdGF0dXMiPgorICAgIDx2YWx1ZT5TaG93IG1pY3JvIHN0YXR1cyBpbiB2aWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQzIiBuYW1lPSJsYXlvdXRfb3B0aW9ucyI+CisgICAgPHZhbHVlPkxheW91dCBvcHRpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDQiIG5hbWU9ImNhbGVuZGFyIG5ldyBidXR0b24iPgorICAgIDx2YWx1ZT5OZXcgRXZlbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0NSIgbmFtZT0iY2FsZW5kYXIgcGFzc3dvcmQgaW5mbyB0ZXh0Ij4KKyAgICA8dmFsdWU+UGFzc3dvcmQgcHJvdGVjdGVkIGFyZSB0aGUgbGlua3MgdG8gdGhlIGNvbmZlcmVuY2UgdGhhdCBhcmUgc2VuZCB0byB0aGUgcGFydGljaXBlbnRzIHdoZW4geW91IHNhdmUgdGhlIGNhbGVuZGFyIGV2ZW50LCBub3QgdGhlIHJvb20hIFRoYXQgbWVhbnMgaWYgeW91IHNhdmUgdGhlIGV2ZW50IG11bHRpcGxlIHRpbWVzIGJ1dCB3aXRoIGRpZmZlcmVudCBwYXNzd29yZHMgZXZlcnkgcGFydGljaXBlbnQgcmVjZWl2ZXMgYSBuZXcgbGluayB0aGF0IGhhcyBhIGRpZmZlcmVudCBwYXNzd29yZC4gQnV0IG9sZCBsaW5rcyBzdGlsbCB3b3JrIG9uY2Ugc2VuZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0NiIgbmFtZT0iY2FsZW5kYXIgZWRpdCBidXR0b24iPgorICAgIDx2YWx1ZT5FZGl0IGRldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0NyIgbmFtZT0ic2lwIHNob3cgZGlhbGVyIj4KKyAgICA8dmFsdWU+U2hvdyBzaXAgZGlhbGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDgiIG5hbWU9InNpcCBjYWxsIj4KKyAgICA8dmFsdWU+Q2FsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ5IiBuYW1lPSJjYWxlbmRhciBjb250YWN0IGxpc3QiPgorICAgIDx2YWx1ZT5TaG93IGNhbGVuZGFyIGV2ZW50cyBvZiBjb250YWN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTAiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPllvdXIgaG9tZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MSIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+UGxhbiB5b3VyIG1lZXRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTIiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPldhdGNoIHJlY29yZGluZyBhbmQgaW50ZXJ2aWV3czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUzIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5DaG9vc2UgYW5kIHN0YXJ0IGEgd2ViLWNvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1NCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIHVzZXJzIGFuZCByaWdodHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1NSIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIGNvbm5lY3Rpb25zIGFuZCBraWNrIHVzZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTYiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSB1c2VyZ3JvdXBzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTciIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBjb25mZXJlbmNlIHJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTgiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBzeXN0ZW0gc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1OSIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIGxhYmVscyBhbmQgd29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYwIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgTERBUCBhbmQgQURTIGNvbmZpZ3VyYXRpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjEiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPkV4cG9ydC9JbXBvcnQgU3lzdGVtIEJhY2t1cHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPllvdSBuZWVkIG1vZGVyYXRpb24gb3IgdGhlIHJpZ2h0IHRvIGRyYXcgb24gd2hpdGVib2FyZCB0byB1cGxvYWQsIGFkZCwgZGVsZXRlIG9yIGxvYWQgZmlsZXMgYW5kIGZvbGRlcnMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjMiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5FZGl0IHRleHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2NCIgbmFtZT0ic2FsdXRhdGlvbiI+CisgICAgPHZhbHVlPlByb2Y8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2NSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5QdWJsaXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjYiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U3RhcnQgUHVibGlzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY3IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlN0b3AgUHVibGlzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY4IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkhvc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2OSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5QdWJsaXNoIEFwcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDcwIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlB1Ymxpc2ggSWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5SZWR1Y2UgdGhlIHdpZHRoIG9mIHRoZSBTaGFyaW5nU2NyZWVuIGJlZm9yZSB5b3UgdHJ5IHRvIG1vdmUgaXQgbGVmdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDcyIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHVjZSB0aGUgaGVpZ2h0IG9mIHRoZSBTaGFyaW5nU2NyZWVuIGJlZm9yZSB5b3UgdHJ5IHRvIG1vdmUgaXQgYm90dG9tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzMiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UmVkdWNlIHRoZSB4IG9mIHRoZSBTaGFyaW5nU2NyZWVuIGJlZm9yZSB5b3UgdHJ5IHRvIG1ha2UgaXQgd2lkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3NCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5SZWR1Y2UgdGhlIHkgb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbWFrZSBpdCBoaWdoZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3NSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5GaWxsIHRoZXNlIHNldHRpbmdzIHN0cmVhbSB5b3VyIHNjcmVlbiBkYXRhIHRvIDN0aCBwYXJ0eSBwcm92aWRlcnMgbGlrZSBqdXN0aW4udHY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3NiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5QbGVhc2Ugc3RhcnQgU2NyZWVuIHNoYXJpbmcgdG8gYmUgYWJsZSB0byBwdWJsaXNoIGl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzciIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+TW9kZXJhdG9yIHBlcm1pc3Npb24gcmVxdWlyZWQgdG8gc3RhcnQgcmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzgiIG5hbWU9Im5vIHJpZ2h0IGZvciBleGNsdXNpdmUgYXVkaW8iPgorICAgIDx2YWx1ZT5Zb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFwcGx5IGV4Y2x1c2l2ZSBhdWRpbyB0byBhbnkgcGFydGljaXBhbnQuIFlvdSBuZWVkIG1vZGVyYXRpb24gcm9sZSBvciB0aGUgcmlnaHQgZm9yIGV4Y2x1c2l2ZSBhdWRpbyB0byBtYWtlIGFueSBtaWNyb3Bob25lIGV4Y2x1c2l2ZSB0dXJuZWQgb24uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc5IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5VcGxvYWQgbmV3IGZpbGUgdG8gZmlsZSBleHBsb3JlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgwIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5PcGVuIG5ldyBkaWFsb2cgd2l0aCBzaGFyaW5nIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODEiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkFuIGV4aXN0aW5nIG1vZGVyYXRvciBtdXN0IGFwcHJvdmUgaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MiIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+QXNrIG1vZGVyYXRvciB0byBzaGFyZSB5b3VyIHdlYmNhbS9taWNybzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgzIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5HYXRoZXIgZmVlZGJhY2sgYnkgY3JlYXRpbmcgYSBwb2xsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODQiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlBhc3QgYW5kIGN1cnJlbnQgcG9sbCByZXN1bHRzIGFzIGNoYXJ0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg1IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5Wb3RlIGlmIHRoZXJlIGlzIGEgcG9sbCBmb3IgdGhpcyBjb25mZXJlbmNlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NiIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+RWRpdCBjYW0gYW5kIG1pYyBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg3IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5Db25maXJtIGFuZCBsZWF2ZSB0aGUgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg4IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5DYWxsIGV4dGVybmFsIHBlb3BsZSB2aWEgVm9JUC9TSVA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4OSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+U2VuZCBhbiBlbWFpbCB3aXRoIGEgZGlyZWN0IGxpbmsgdG8gdGhpcyByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTAiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkNoYW5nZSB5b3VyIHdoaXRlYm9hcmQgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MSIgbmFtZT0iYmFja3VwIGFkbWluIj4KKyAgICA8dmFsdWU+TWF4IHVwbG9hZCBzaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTIiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkFzayBtb2RlcmF0b3IgdG8gc2hhcmUgeW91ciB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTMiIG5hbWU9InByaXZhdGUgY2hhdCI+CisgICAgPHZhbHVlPlN0YXJ0IFByaXZhdGUgQ2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk0IiBuYW1lPSJhbGxfcHJpdmF0ZV9jaGF0Ij4KKyAgICA8dmFsdWU+QWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTUiIG5hbWU9InByaXZhdGUgY2hhdCI+CisgICAgPHZhbHVlPllvdSBjYW5ub3Qgc3RhcnQgYSBwcml2YXRlIGNoYXQgd2l0aCB5b3Vyc2VsZi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NiIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+WW91J3ZlIGFscmVhZHkgc3RhcnRlZCBhIHByaXZhdGUgY2hhdCB3aXRoIHRoaXMgcGFydGljaXBhbnQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTciIG5hbWU9InByaXZhdGUgY2hhdCI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBwcml2YXRlIGNoYXQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTgiIG5hbWU9IlNlcnZlcnMiPgorICAgIDx2YWx1ZT5TZXJ2ZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTkiIG5hbWU9IlNlcnZlcnMiPgorICAgIDx2YWx1ZT5TZXJ2ZXJzIHBhcnRpY2lwYXRpbmcgaW4gY2x1c3RlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAwIiBuYW1lPSJTZXJ2ZXIgbmFtZSI+CisgICAgPHZhbHVlPlNlcnZlciBOYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDEiIG5hbWU9IlNlcnZlciBBZGRyZXNzIj4KKyAgICA8dmFsdWU+U2VydmVyIEFkZHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMiIgbmFtZT0iU2VydmVyIGRldGFpbHMiPgorICAgIDx2YWx1ZT5TZXJ2ZXIgZGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAzIiBuYW1lPSJTZW5kIFNNUyI+CisgICAgPHZhbHVlPlNlbmQgU01TPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDQiIG5hbWU9InB1Ymxpc2hpbmdfbWVzc2FnZSI+CisgICAgPHZhbHVlPlB1Ymxpc2hpbmcuIFVzZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDUiIG5hbWU9ImNtZF9saW5lX2FkbWluIj4KKyAgICA8dmFsdWU+VG8gc2F2ZSB0aW1lIGFuZCBpbnRlcm5ldCB0cmFmZmljIHlvdSBjYW4gdXNlIGNvbW1hbmQgbGluZSBhZG1pbiB0byBiYWNrdXAvcmVzdG9yZS91cGdyYWRlOlxuIDEpIGdvIHRvIE9NIGluc3RhbGwgZGlyIChmb3IgZXguIC9vcHQvcmVkNSkgXG4gMikgc3RvcCBPTSAoZm9yIGV4LiAuL3JlZDUtc2h1dGRvd24uc2gpXG4gMykgLi9hZG1pbi5zaCAtYiAtZmlsZSB+L3RvZGF5X29tX2JhY2t1cC56aXAgKGNyZWF0ZSBiYWNrdXAgb2YgY3VycmVudCBPTSlcbiA0KSBkb3dubG9hZCBhcmNoaXZlIHdpdGggbmV3IE9NXG4gNSkgbXYgL29wdC9yZWQ1IC9vcHQucmVkNS5iYWsgKG1vdmUgd29ya2luZyB2ZXJzaW9uIG9mIE9NIGp1c3QgaW4gY2FzZSA6KSlcbiA2KSBleHRyYWN0IGRvd25sb2FkZWQgT00gdG8gdGhlIC9vcHQvcmVkNVxuIDcpIC4vYWRtaW4uc2ggLWkgLWZpbGUgfi90b2RheV9vbV9iYWNrdXAuemlwIChvciAnLi9hZG1pbi5zaCAtaSAtZmlsZSB+L3RvZGF5X29tX2JhY2t1cC56aXAgLS1kYi10eXBlIG15c3FsIC0tZGItdXNlciBvbV91c2VyIC0tZGItcGFzcyBvbV91c2VyX3Bhc3MnIGluIGNhc2Ugb2YgeW91IGFyZSB1c2luZyBub24tZGVmYXVsdCBEQiApXG4gOCkgc3RhcnQgT01cbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA2IiBuYW1lPSJwdWJsaWNfcm9vbV90b29sdGlwIj4KKyAgICA8dmFsdWU+Um9vbXMgY29tbW9uIHRvIGFsbCB1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDciIG5hbWU9InByaXZhdGVfcm9vbV90b29sdGlwIj4KKyAgICA8dmFsdWU+Um9vbXMgY29tbW9uIHRvIHRoZSBjdXJyZW50IHVzZXIgZ3JvdXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwOCIgbmFtZT0ibXlfcm9vbV90b29sdGlwIj4KKyAgICA8dmFsdWU+Um9vbXMgb2YgdGhlIGN1cnJlbnQgdXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA5IiBuYW1lPSJjcmVhdGVfbmV3X3Jvb20iPgorICAgIDx2YWx1ZT5DcmVhdGUvTW9kaWZ5IGFwcG9pbnRtZW50IHNwZWNpYWwgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTEwIiBuYW1lPSJtdWx0aXBsZV9hZGRyZXNzZXMiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIGVudGVyIG11bHRpcGxlIGFkZHJlc3NlcyBpbiB0aGUgZm9ybWF0OiBmaXJzdG5hbWUxIGxhc3RuYW1lMSAmbHQ7ZW1haWwxJmd0OywiZmlyc3RuYW1lMiBsYXN0bmFtZTIiICZsdDtlbWFpbDImZ3Q7LCdmaXJzdG5hbWUzIGxhc3RuYW1lMycgJmx0O2VtYWlsMyZndDssIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTExIiBuYW1lPSJzdHJlYW1fdm9sdW1lIj4KKyAgICA8dmFsdWU+QWRqdXN0IHN0cmVhbSB2b2x1bWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxMiIgbmFtZT0ibWljcm9waG9uZV92b2x1bWUiPgorICAgIDx2YWx1ZT5BZGp1c3QgbWljcm9waG9uZSB2b2x1bWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxMyIgbmFtZT0iY2hhdF9tb2RlcmF0ZWQiPgorICAgIDx2YWx1ZT5JcyBjaGF0IG1vZGVyYXRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE0IiBuYW1lPSJjaGF0X21vZGVyYXRlZCI+CisgICAgPHZhbHVlPkFsbG93IG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNSIgbmFtZT0iY2hhdF9vcGVuZWQiPgorICAgIDx2YWx1ZT5DaGF0IHBhbmVsIG9wZW5lZCBieSBkZWZhdWx0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTYiIG5hbWU9ImZpbGVzX29wZW5lZCI+CisgICAgPHZhbHVlPkZpbGVzIHBhbmVsIG9wZW5lZCBieSBkZWZhdWx0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTciIG5hbWU9InNlcnZlciBhZG1pbiBzZWN0aW9uIGxhc3RwaW5nIj4KKyAgICA8dmFsdWU+TGFzdCBwaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTgiIG5hbWU9InNlcnZlciBhZG1pbiBzZWN0aW9uIGxhc3RwaW5nIGluZm8iPgorICAgIDx2YWx1ZT5FdmVyeSBzbGF2ZSBzZW5kcyBhIHBpbmcgdG8gdGhlIG1hc3RlciBldmVyeSAzIHNlY29uZHMgKGNvbmZpZ3VyYWJsZSkuIFNsYXZlIGxhc3RQaW5nIG11c3QgYmUgc21hbGxlciB0aGVuIDEgbWludXRlIHNvIHRoYXQgdGhlIG1hc3RlciB1c2VzIHRoZSBzbGF2ZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxOSIgbmFtZT0ic2VydmVyIGFkbWluIHBvcnQiPgorICAgIDx2YWx1ZT5IVFRQIFBvcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyMCIgbmFtZT0ic2VydmVyIGFkbWluIHVzZXIiPgorICAgIDx2YWx1ZT5Vc2VyIChTT0FQLUFjY2Vzcyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyMSIgbmFtZT0ic2VydmVyIGFkbWluIHBhc3N3b3JkIj4KKyAgICA8dmFsdWU+UGFzc3dvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyMiIgbmFtZT0ic2VydmVyIGFkbWluIHdlYmFwcCBwYXRoIj4KKyAgICA8dmFsdWU+V2ViYXBwIHBhdGg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyMyIgbmFtZT0ic2VydmVyIGFkbWluIHByb3RvY29sIj4KKyAgICA8dmFsdWU+UHJvdG9jb2w8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyNCIgbmFtZT0ic2VydmVyIGFkbWluIHBpbmcgcnVubmluZyI+CisgICAgPHZhbHVlPlBpbmcgcnVubmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI1IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gYWN0aXZlIj4KKyAgICA8dmFsdWU+QWN0aXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjYiIG5hbWU9ImdlbmVyYXRlX2hhc2giPgorICAgIDx2YWx1ZT5HZW5lcmF0ZSBVUkw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyNyIgbmFtZT0ibmV0d29yayB0ZXN0aW5nIGxpbmsiPgorICAgIDx2YWx1ZT5OZXR3b3JrIHRlc3Rpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyOCIgbmFtZT0icm9vbV9vcHRpb25zIj4KKyAgICA8dmFsdWU+QXV0byBzZWxlY3QgaW50ZXJ2aWV3IHZpZGVvIHBvZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI5IiBuYW1lPSJmb250X3VuZGVybGluZSI+CisgICAgPHZhbHVlPlVuZGVybGluZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMwIiBuYW1lPSJmb250X3N0eWxlIj4KKyAgICA8dmFsdWU+Rm9udCBzdHlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMxIiBuYW1lPSJhbGxvd19mb250X3N0eWxlcyI+CisgICAgPHZhbHVlPkFsbG93IGZvbnQgc3R5bGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzIiIG5hbWU9ImZvbnRfY29sb3IiPgorICAgIDx2YWx1ZT5Gb250IGNvbG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzMiIG5hbWU9Imh5cGVybGluayI+CisgICAgPHZhbHVlPkh5cGVybGluazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM0IiBuYW1lPSJjb25uZWN0aW9uIGFkbWluIj4KKyAgICA8dmFsdWU+U2hvdyBzZXNzaW9uIHN0YXRpc3RpY3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNSIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbiI+CisgICAgPHZhbHVlPlNlc3Npb24gZGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM2IiBuYW1lPSJzeXN0ZW1faW1wb3J0Ij4KKyAgICA8dmFsdWU+U3lzdGVtIGltcG9ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM3IiBuYW1lPSJpbmNsdWRlX2ludG9fYmFja3VwIj4KKyAgICA8dmFsdWU+SW5jbHVkZSB1cGxvYWRlZCBmaWxlcyBhbmQgcmVjb3JkaW5ncyBpbiBiYWNrdXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzOCIgbmFtZT0icm9vbV9hZG1pbl9zaXAiPgorICAgIDx2YWx1ZT5FbmFibGUgU0lQIHRyYW5zcG9ydCBpbiB0aGUgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM5IiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fY29uZmlybSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBwcm92aWRlIHRoaXMgdXNlciBhbiBleGNsdXNpdmUgYXVkaW8/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NDAiIG5hbWU9Im5vX3RpbWV6b25lIj4KKyAgICA8dmFsdWU+UGxlYXNlIHNwZWNpZnkgeW91ciB0aW1lem9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTQ1IiBuYW1lPSJjb250ZW50X2lzX3NhdmluZyI+CisgICAgPHZhbHVlPkNvbnRlbnQgaXMgU2F2aW5nLCBQbGVhc2Ugd2FpdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKzwvbGFuZ3VhZ2U+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L2xhbmd1YWdlcy9kZXV0c2NoLnhtbCBiL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL2RldXRzY2gueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxYmJkNjMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L2xhbmd1YWdlcy9kZXV0c2NoLnhtbApAQCAtMCwwICsxLDQ2NTIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+CisKKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCisKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK1RoaXMgRmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBieSB0aGUgTGFuZ3VhZ2VFZGl0b3IgCit0byBhZGQgbmV3IExhbmd1YWdlcyBvciBtb2RpZnkvY3VzdG9taXplIGl0IHVzZSB0aGUgTGFuZ3VhZ2VFZGl0b3IgCitzZWUgaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnL0xhbmd1YWdlRWRpdG9yLmh0bWwgZm9yIERldGFpbHMgCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy0tPgorPGxhbmd1YWdlIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOm5vTmFtZXNwYWNlU2NoZW1hTG9jYXRpb249Imxhbmd1YWdlLnhzZCI+CisgIDxzdHJpbmcgaWQ9IjEiIG5hbWU9ImNvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT5Lb25mZXJlbno8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMiIgbmFtZT0ibWVldGluZyI+CisgICAgPHZhbHVlPk1lZXRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMyIgbmFtZT0iY2xhc3Nyb29tIj4KKyAgICA8dmFsdWU+RXZlbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNCIgbmFtZT0ic2V0dGluZ3MiPgorICAgIDx2YWx1ZT5FaW5zdGVsbHVuZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUiIG5hbWU9ImJlbnV0emVyIj4KKyAgICA8dmFsdWU+UHJvZmlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYiIG5hbWU9ImFkbWluIj4KKyAgICA8dmFsdWU+QWRtaW5pc3RyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNyIgbmFtZT0ic3RvcCI+CisgICAgPHZhbHVlPlN0b3A8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOCIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+QXVmbmFobWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOSIgbmFtZT0ibm9maWxlIj4KKyAgICA8dmFsdWU+S2VpbmUgRGF0ZWkgdm9yaGFuZGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwIiBuYW1lPSJyZWNvcmRieXRlYWNoZXIiPgorICAgIDx2YWx1ZT5BdWZuYWhtZSBudXIgZsO8ciBMZWhyZXIgdmVyZsO8Z2JhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMSIgbmFtZT0iY29ubmVjdGVkdXNlcnMiPgorICAgIDx2YWx1ZT52ZXJidW5kZW5lIEJlbnV0emVyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMiIgbmFtZT0ic3RhcnRjb25mIj4KKyAgICA8dmFsdWU+S29uZmVyZW56IHN0YXJ0ZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMiIG5hbWU9Im15bmFtZSI+CisgICAgPHZhbHVlPk1laW4gTmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNCIgbmFtZT0idmlkZW9jb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+VmlkZW9rb25mZXJlbno8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUiIG5hbWU9ImltcG9ydCI+CisgICAgPHZhbHVlPkRhdGVpIGltcG9ydGllcmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2IiBuYW1lPSJyZWZyZXNoZmlsZXMiPgorICAgIDx2YWx1ZT5MaXN0ZSBuZXUgbGFkZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTciIG5hbWU9InRvbWFpbmZpbGUiPgorICAgIDx2YWx1ZT5adW0gSGF1cHR2ZXJ6ZWljaG5pczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOCIgbmFtZT0ibmV3cG9sbCI+CisgICAgPHZhbHVlPk5ldWUgVW1mcmFnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOSIgbmFtZT0ibmV3cG9sbGhlYWRlciI+CisgICAgPHZhbHVlPkVpbmUgbmV1ZSBVbWZyYWdlIGbDvHIgZGllIEtvbmZlcmVuei48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAiIG5hbWU9InF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+RnJhZ2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxIiBuYW1lPSJwb2xsdHlwZSI+CisgICAgPHZhbHVlPlVtZnJhZ2VuYXJ0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMiIgbmFtZT0iY3JlYXRlIj4KKyAgICA8dmFsdWU+QW5sZWdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMyIgbmFtZT0iaW5mb21lc3NhZ2UiPgorICAgIDx2YWx1ZT5JbmZvOiBKZWRlciB2ZXJidW5kZW5lIEJlbnV0emVyIGVyaMOkbHQgZWluZSBOYWNocmljaHQgbWl0IGRlciBuZXVlbiBVbWZyYWdlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNCIgbmFtZT0iY3JlYXRwb2xsIj4KKyAgICA8dmFsdWU+VW1mcmFnZSBhbmxlZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1IiBuYW1lPSJjYW5jZWwiPgorICAgIDx2YWx1ZT5BYmJyZWNoZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYiIG5hbWU9Inllc25vIj4KKyAgICA8dmFsdWU+SmEvTmVpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNyIgbmFtZT0ibnVtZXJpYyI+CisgICAgPHZhbHVlPk51bWVyaXNjaCAxLTEwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4IiBuYW1lPSJwb2xsIj4KKyAgICA8dmFsdWU+VW1mcmFnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOSIgbmFtZT0ibW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPlNpZSBtw7xzc2VuIE1vZGVyYXRvci9MZWhyZXIgaW4gZGllc2VtIFJhdW0gc2VpbiwgdW0gZWluZSBVbWZyYWdlIGFuenVsZWdlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAiIG5hbWU9InZvdGUiPgorICAgIDx2YWx1ZT5JaHIgU3RpbW1lIHd1cmRlIGFiZ2VnZWJlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEiIG5hbWU9ImFscmVhZHl2b3RlZCI+CisgICAgPHZhbHVlPlNpZSBoYWJlbiBmw7xyIGRpZXNlIFVtZnJhZ2UgYmVyZWl0cyBpaHIgVm90dW0gYWJnZWdlYmVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMiIgbmFtZT0idm90aW5nIj4KKyAgICA8dmFsdWU+QWJzdGltbWVuITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMyIgbmFtZT0iYW5zd2VyIj4KKyAgICA8dmFsdWU+SWhyZSBBbnR3b3J0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNCIgbmFtZT0ieWVzIj4KKyAgICA8dmFsdWU+SmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUiIG5hbWU9Im5vIj4KKyAgICA8dmFsdWU+TmVpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNiIgbmFtZT0icXVlc3Rpb253YW50Ij4KKyAgICA8dmFsdWU+d2lsbCB3aXNzZW46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3IiBuYW1lPSJwb2xscmVzdWx0cyI+CisgICAgPHZhbHVlPlVtZnJhZ2VlcmdlYm5pc3NlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4IiBuYW1lPSJxdWVzdGlvbiI+CisgICAgPHZhbHVlPkZyYWdlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOSIgbmFtZT0icmVzdWx0cyI+CisgICAgPHZhbHVlPkFudHdvcnRlbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAiIG5hbWU9ImFuc3dlcnMiPgorICAgIDx2YWx1ZT5FcmdlYm5pczo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDEiIG5hbWU9Im5vcG9sbCI+CisgICAgPHZhbHVlPkVzIGdpYnQgenVyIFplaXQga2VpbmUgVW1mcmFnZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIiIG5hbWU9InZvdGluZ3MiPgorICAgIDx2YWx1ZT5BYnN0aW1tZW4hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzIiBuYW1lPSJtZWV0aW5nIj4KKyAgICA8dmFsdWU+TWVldGluZyAobWF4IDQgUGzDpHR6ZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQiIG5hbWU9ImNvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT5Lb25mZXJlbnogKG1heCA1MCBQbMOkdHplKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NSIgbmFtZT0idHlwZSI+CisgICAgPHZhbHVlPk1vZHVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2IiBuYW1lPSJyZW1haW5pbmdzZWF0cyI+CisgICAgPHZhbHVlPnZlcmJsZWliZW5kZSBQbMOkdHplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3IiBuYW1lPSJhbHJlYWR5Y2hvc2VuIj4KKyAgICA8dmFsdWU+QmVyZWl0cyB2ZXJnZWJlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OCIgbmFtZT0iZW50ZXIiPgorICAgIDx2YWx1ZT5FaW50cmV0ZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkiIG5hbWU9Im1vZGxlYXZlIj4KKyAgICA8dmFsdWU+RGVyIE1vZGVyYXRvci9MZWhyZXIgaGF0IGRlbiBSYXVtIHZlcmxhc3Nlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAiIG5hbWU9InN5c3RlbW1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TeXN0ZW1uYWNocmljaHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTEiIG5hbWU9ImNob3NzZWRldmljZSI+CisgICAgPHZhbHVlPkdlcsOkdGVhdXN3YWhsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyIiBuYW1lPSJjaG9vc2VjYW0iPgorICAgIDx2YWx1ZT5LYW1lcmEgd8OkaGxlbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMiIG5hbWU9ImNob29zZW1pYyI+CisgICAgPHZhbHVlPk1pa3JvZm9uIHfDpGhsZW46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0IiBuYW1lPSJvayI+CisgICAgPHZhbHVlPk9rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1IiBuYW1lPSJjYW5jZWwyIj4KKyAgICA8dmFsdWU+QWJicmVjaGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2IiBuYW1lPSJyZWNvbmVlY3RuZWVkZWQiPgorICAgIDx2YWx1ZT5TaWUgbcO8c3NlbiBzaWNoIGVybmV1dCB2ZXJiaW5kZW4gZGFtaXQgZGllIMOEbmRlcnVuZ2VuIHdpcmtzYW0gd2VyZGVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NyIgbmFtZT0iZWRpdHNldHVwIj4KKyAgICA8dmFsdWU+RWluc3RlbGx1bmdlbiDDpG5kZXJuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OCIgbmFtZT0iY291cnNlIj4KKyAgICA8dmFsdWU+S3Vyczo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkiIG5hbWU9Imxhbmd1YWdlIj4KKyAgICA8dmFsdWU+S3Vyc3NwcmFjaGU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwIiBuYW1lPSJvazIiPgorICAgIDx2YWx1ZT5PazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MSIgbmFtZT0iY2FuY2VsMyI+CisgICAgPHZhbHVlPkFiYnJlY2hlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MiIgbmFtZT0iY2xlYXJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+WmVpY2hlbmJyZXR0IGxlZXJlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MyIgbmFtZT0iY2xlYXJ3aGl0ZWJvYXJkcXVlc3Rpb24iPgorICAgIDx2YWx1ZT5Tb2xsIGRhcyBaZWljaGVuYnJldHQgZ2VsZWVydCB3ZXJkZW4gYmV2b3IgZWluIG5ldWVzIEJpbGQgaGluenVnZWbDvGd0IHdpcmQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0IiBuYW1lPSJkb250YXNrYWdhaW4iPgorICAgIDx2YWx1ZT5OaWNodCBub2NobWFsIGZyYWdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NSIgbmFtZT0ibm8iPgorICAgIDx2YWx1ZT5OZWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2IiBuYW1lPSJlZGl0c2V0dXAyIj4KKyAgICA8dmFsdWU+RWluc3RlbGx1bmdlbiBiZWFyYmVpdGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3IiBuYW1lPSJuZWVkY29uZmlybWF0aW9ud2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkJlc3TDpHRpZ3VuZyBhbmZvcmRlcm4gYmV2b3IgZGFzIFplaWNoZW5icmV0dCBnZWxlZXJ0IHdpcmQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4IiBuYW1lPSJ1c2VyaW5mbyI+CisgICAgPHZhbHVlPlByb2ZpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OSIgbmFtZT0iY2xlYXJkcmF3YXJlYSI+CisgICAgPHZhbHVlPlplaWNoZW5icmV0dCBsZWVyZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAiIG5hbWU9InVuZG8iPgorICAgIDx2YWx1ZT5Sw7xja2fDpG5naWc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzEiIG5hbWU9InJlZG8iPgorICAgIDx2YWx1ZT5XaWVkZXJoZXJzdGVsbGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyIiBuYW1lPSJzZWxlY3RvYmplY3QiPgorICAgIDx2YWx1ZT5NYXJraWVyZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMiIG5hbWU9InRleHQiPgorICAgIDx2YWx1ZT5UZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0IiBuYW1lPSJwYWludCI+CisgICAgPHZhbHVlPkZyZWkgemVpY2huZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUiIG5hbWU9ImRyYXdsaW5lIj4KKyAgICA8dmFsdWU+TGluaWVuIHplaWNobmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2IiBuYW1lPSJkcmF3dSI+CisgICAgPHZhbHVlPlVudGVyc3RyZWljaGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3IiBuYW1lPSJyZWN0Ij4KKyAgICA8dmFsdWU+UmVjaHRlY2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgiIG5hbWU9ImVsbGlwc2UiPgorICAgIDx2YWx1ZT5LcmVpczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OSIgbmFtZT0iYXJyb3ciPgorICAgIDx2YWx1ZT5QZmVpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MCIgbmFtZT0iZGVsZXRlY2hvc2VuIj4KKyAgICA8dmFsdWU+TMO2c2NoZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEiIG5hbWU9ImFwcGxpeW1vZCI+CisgICAgPHZhbHVlPk1vZGVyYXRpb24gYmVhbnRyYWdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MiIgbmFtZT0iYXBwbHkiPgorICAgIDx2YWx1ZT5CZWFudHJhZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzIiBuYW1lPSJjYW5jZWwiPgorICAgIDx2YWx1ZT5BYmJyZWNoZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQiIG5hbWU9Im1vZCI+CisgICAgPHZhbHVlPk1vZGVyYXRvciB3ZXJkZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUiIG5hbWU9ImNsb3NlIj4KKyAgICA8dmFsdWU+U2NobGllw59lbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NiIgbmFtZT0iaXRhbGljIj4KKyAgICA8dmFsdWU+S3Vyc2l2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3IiBuYW1lPSJib2xkIj4KKyAgICA8dmFsdWU+RmV0dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OCIgbmFtZT0id2FpdGluZyI+CisgICAgPHZhbHVlPldhcnRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5IiBuYW1lPSJhcHBseU1lc3NhZ2UiPgorICAgIDx2YWx1ZT5FaW4gQmVudXR6ZXIgbcO2Y2h0ZSBkaWUgTW9kZXJhdGlvbiDDvGJlcm5laG1lbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAiIG5hbWU9ImFjY2VwdCI+CisgICAgPHZhbHVlPkFubmVobWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxIiBuYW1lPSJyZWplY3QiPgorICAgIDx2YWx1ZT5BYmxlaG5lbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MiIgbmFtZT0iY2FuY2VsIj4KKyAgICA8dmFsdWU+QWJicmVjaGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzIiBuYW1lPSJzZW5kbW9kcmVxdWVzdG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZW5kZSBBbmZyYWdlIGFuIGZvbGdlbmRlIE51dHplcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NCIgbmFtZT0iYWNjZXB0Ij4KKyAgICA8dmFsdWU+YmVzdMOkdGlndDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NSIgbmFtZT0icmVqZWN0Ij4KKyAgICA8dmFsdWU+YWJnZWxlaG50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2IiBuYW1lPSJjaGFuZ2Vtb2QiPgorICAgIDx2YWx1ZT7DhG5kZXJlIE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NyIgbmFtZT0ibm9ubW9kZXJyb3JtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2llIHNpbmQgbmljaHQgZGVyIE1vZGVyYXRvciBkaWVzZXIgS29uZmVyZW56ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OCIgbmFtZT0ibW9kZXJhdG9yIj4KKyAgICA8dmFsdWU+TW9kZXJhdG9yOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OSIgbmFtZT0icm9vbWZ1bGxtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGllc2VyIFJhdW0gaXN0IHZvbGwuIEJpdHRlIHZlcnN1Y2hlbiBTaWUgZXMgenUgZWluZW0gc3DDpHRlcmVuIFplaXRwdW5rdCBub2NobWFscy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwIiBuYW1lPSJlbGxsaXBzZSI+CisgICAgPHZhbHVlPktyZWlzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMSIgbmFtZT0iY2xvc2UiPgorICAgIDx2YWx1ZT5TY2hsaWXDn2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMiIgbmFtZT0iQXV0aEVycm9yIj4KKyAgICA8dmFsdWU+RWluZ2FiZWZlaGxlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMiIG5hbWU9Im1pbjR1c2VybmFtZSI+CisgICAgPHZhbHVlPkRlciBCZW51dHplcm5hbWUgbXVzcyBtaW5kZXN0ZW5zIDQgWmVpY2hlbiBsYW5nIHNlaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0IiBuYW1lPSJtaW40cGFzcyI+CisgICAgPHZhbHVlPkRhcyBQYXNzd29ydCBtdXNzIG1pbmRlc3RlbnMgNCBaZWljaGVuIGxhbmcgc2VpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUiIG5hbWU9InVzZXJuYW1ldGFrZW4iPgorICAgIDx2YWx1ZT5EZXIgQmVudXR6ZXJuYW1lIGlzdCBiZXJlaXRzIHZlcmdlYmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNiIgbmFtZT0iZW1haWx0YWtlbiI+CisgICAgPHZhbHVlPkRpZSBFLU1haWwgaXN0IGJlcmVpdHMgcmVnaXN0cmllcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3IiBuYW1lPSJlbWFpbHRha2VuIj4KKyAgICA8dmFsdWU+RWluIEZlaGxlciB0cmF0IGF1Zi4gQml0dGUga29udGFrdGllcmVuIFNpZSBkZW4gQWRtaW5pc3RyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgiIG5hbWU9IkF1dGhsb2dpbiI+CisgICAgPHZhbHVlPkxvZ2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOSIgbmFtZT0iQXV0aHVzZXIiPgorICAgIDx2YWx1ZT5CZW51dHplci9FLU1haWw6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMCIgbmFtZT0iQXV0aHBhc3MiPgorICAgIDx2YWx1ZT5QYXNzd29ydDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExIiBuYW1lPSJBdXRobGFuZyI+CisgICAgPHZhbHVlPlNwcmFjaGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyIiBuYW1lPSJBdXRocmVnIj4KKyAgICA8dmFsdWU+RWlubG9nZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMyIgbmFtZT0icmVnZm9ybWhlYWQiPgorICAgIDx2YWx1ZT5SZWdpc3RyaWVyZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0IiBuYW1lPSJyZWdmb3JtdXNlciI+CisgICAgPHZhbHVlPkJlbnV0emVyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUiIG5hbWU9InJlZ2Zvcm1wYXNzIj4KKyAgICA8dmFsdWU+UGFzc3dvcnQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNiIgbmFtZT0icmVnZm9ybXJldHlwZSI+CisgICAgPHZhbHVlPldpZWRlcmhvbGU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNyIgbmFtZT0icmVnZm9ybWZpcnN0bmFtZSI+CisgICAgPHZhbHVlPlZvcm5hbWU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOCIgbmFtZT0icmVnZm9ybWxhc3RuYW1lIj4KKyAgICA8dmFsdWU+TmFjaG5hbWU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOSIgbmFtZT0icmVnZm9ybW1haWwiPgorICAgIDx2YWx1ZT5FLU1haWw6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMCIgbmFtZT0icmVnZm9ybXN0YXRlIj4KKyAgICA8dmFsdWU+TGFuZDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxIiBuYW1lPSJyZWdmb3JtYnRuMSI+CisgICAgPHZhbHVlPlJlZ2lzdHJpZXJlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIiIG5hbWU9InJlZ2Zvcm1idG4yIj4KKyAgICA8dmFsdWU+QWJicmVjaGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMyIgbmFtZT0iQXV0aGJ0bjIiPgorICAgIDx2YWx1ZT5SZWdpc3RyaWVyZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5Ib21lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNSIgbmFtZT0idXNlcmFkbWluIj4KKyAgICA8dmFsdWU+QmVudXR6ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2IiBuYW1lPSJncm91cGFkbWluIj4KKyAgICA8dmFsdWU+R3J1cHBlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjciIG5hbWU9Im9yZ2FkbWluIj4KKyAgICA8dmFsdWU+T3JnYW5pc2F0aW9uZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4IiBuYW1lPSJoZWFkY29uZiI+CisgICAgPHZhbHVlPktvbmZlcmVuenLDpHVtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkiIG5hbWU9ImNvbmZfcHViIj4KKyAgICA8dmFsdWU+w5ZmZmVudGxpY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwIiBuYW1lPSJoZWFkX29yZyI+CisgICAgPHZhbHVlPk9yZ2FuaXNhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzEiIG5hbWU9ImJ0bl9lbnRlcnJvb20iPgorICAgIDx2YWx1ZT5CZXRyZXRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIiIG5hbWU9InVzZXJhbHRlcnNlbGZfbG9naW4iPgorICAgIDx2YWx1ZT5CZW51dHplcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMiIG5hbWU9InVzZXJhbHRlcnNlbGZfcGFzcyI+CisgICAgPHZhbHVlPlBhc3N3b3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNCIgbmFtZT0idXNlcmFsdGVyc2VsZl9wYXNzcmV0eXBlIj4KKyAgICA8dmFsdWU+V2llZGVyaG9sZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2ZpcnN0bmFtZSI+CisgICAgPHZhbHVlPlZvcm5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2xhc3RuYW1lIj4KKyAgICA8dmFsdWU+TmFjaG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2VtYWlsIj4KKyAgICA8dmFsdWU+RS1NYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOCIgbmFtZT0idXNlcmFsdGVyc2VsZl9iaXJ0aCI+CisgICAgPHZhbHVlPkdlYnVydHN0YWc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3N0cmVldG5vIj4KKyAgICA8dmFsdWU+U3RyYcOfZS9Oci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Rvd24iPgorICAgIDx2YWx1ZT5QTFovU3RhZHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3N0YXRlIj4KKyAgICA8dmFsdWU+TGFuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIiIG5hbWU9InVzZXJhbHRlcnNlbGZfYWRyZXNzY29tbWVudCI+CisgICAgPHZhbHVlPkFkcmVzc2luZm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2hlYWRlciI+CisgICAgPHZhbHVlPkJlbnV0emVyZGF0ZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0IiBuYW1lPSJzYXZlbWVudWJhcl9zYXZlbGFiZWwiPgorICAgIDx2YWx1ZT5TcGVpY2hlcm48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1IiBuYW1lPSJzYXZlbWVudWJhcl9zYXZlbGFiZWwiPgorICAgIDx2YWx1ZT5TcGVpY2hlcnZvcmdhbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2IiBuYW1lPSJhZG1pbl91c2VybGlzdF91c2VyX2lkIj4KKyAgICA8dmFsdWU+QmVudXR6ZXItSUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3IiBuYW1lPSJhZG1pbl91c2VybGlzdF9sb2dpbiI+CisgICAgPHZhbHVlPkxvZ2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OCIgbmFtZT0iYWRtaW5fdXNlcmxpc3RfZmlyc3RuYW0iPgorICAgIDx2YWx1ZT5Wb3JuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OSIgbmFtZT0iYWRtaW5fdXNlcmxpc3RfbGFzdG5hbWUiPgorICAgIDx2YWx1ZT5OYWNobmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAiIG5hbWU9InR1cm5vdmVybGlzdF9uZXh0Ij4KKyAgICA8dmFsdWU+Vm9yd8OkcnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MSIgbmFtZT0idHVybm92ZXJsaXN0X3ByZSI+CisgICAgPHZhbHVlPlp1csO8Y2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyIiBuYW1lPSJzYXZlY29udGVudF9jb25maXJtIj4KKyAgICA8dmFsdWU+RGF0ZW5zYXR6IGVudGZlcm5lbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMiIG5hbWU9InNhdmVjb250ZW50X2NvbmZpcm1fY2FuY2VsX2J0biI+CisgICAgPHZhbHVlPkFiYnJlY2hlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTQiIG5hbWU9InNhdmVjb250ZW50X2NvbmZpcm1fY29uZmlybV9idG4iPgorICAgIDx2YWx1ZT5FbmZlcm5lbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTUiIG5hbWU9InNhdmVtZW51YmFyX2FkZGxhYmVsIj4KKyAgICA8dmFsdWU+RGF0ZW5zYXR6IGFubGVnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU2IiBuYW1lPSJzYXZlbWVudWJhcl9yZWxvYWRsYWJlbCI+CisgICAgPHZhbHVlPkRhdGVuc2F0eiBuZXUgbGFkZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU3IiBuYW1lPSJzYXZlbWVudWJhcl9kZWxldGVsYWJlbCI+CisgICAgPHZhbHVlPkRhdGVuc2F0eiBlbnRmZXJuZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU4IiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fc3RhdHVzIj4KKyAgICA8dmFsdWU+U3RhdHVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1OSIgbmFtZT0idXNlcmFsdGVyX2FkbWluX3N0YXR1c0l0ZW0iPgorICAgIDx2YWx1ZT5nZXNwZXJydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjAiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9zdGF0dXNJdGVtIj4KKyAgICA8dmFsdWU+YWt0aXY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYxIiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fb3JnYW5pc2F0aW9uIj4KKyAgICA8dmFsdWU+T3JnYW5pc2F0aW9uZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYyIiBuYW1lPSJjYWxlbmRhcl9pY29ubGFiZWwiPgorICAgIDx2YWx1ZT5LYWxlbmRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjMiIG5hbWU9InNhdmV3aW5kb3dfYnRuIj4KKyAgICA8dmFsdWU+U2NobGllw59lbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjQiIG5hbWU9Im9yZ2FuaXNhdGlvbnRhYmxlbGlzdF9pZHJvdyI+CisgICAgPHZhbHVlPk9yZ2FuaXNhdGlvbnMtSUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY1IiBuYW1lPSJvcmdhbmlzYXRpb250YWJsZWxpc3RfbmFtZXJvdyI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY2IiBuYW1lPSJ1c2VydmFsdWVfbGV2ZWxpZDEiPgorICAgIDx2YWx1ZT5CZW51dHplcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjciIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGlkMiI+CisgICAgPHZhbHVlPk1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjgiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGlkMyI+CisgICAgPHZhbHVlPkFkbWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2OSIgbmFtZT0idXNlcnZhbHVlX2xldmVsbGFiZWwiPgorICAgIDx2YWx1ZT5CZW51dHplcnJvbGxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MCIgbmFtZT0ib3JndmFsdWVfaGVhZGVyIj4KKyAgICA8dmFsdWU+T3JnYW5pc2F0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MSIgbmFtZT0ib3JndmFsdWVfb3JnbmFtZSI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTcyIiBuYW1lPSJvcmd2YWx1ZV9vcmduYW1lIj4KKyAgICA8dmFsdWU+T3JnYW5pc2F0aW9uIGhpbnp1ZsO8Z2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MyIgbmFtZT0ib3JndmFsdWVfb3JnbmFtZSI+CisgICAgPHZhbHVlPk9yZ2FuaXNhdGlvbiBoaW56dWbDvGdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzQiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW4iPgorICAgIDx2YWx1ZT5BYmJyZWNoZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc1IiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luIj4KKyAgICA8dmFsdWU+SGluenVmw7xnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc2IiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luIj4KKyAgICA8dmFsdWU+T3JnYW5pc2F0aW9uIGVudGZlcm5lbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzciIG5hbWU9Im9yZ3ZhbHVlX3VzZXJsaXN0Ij4KKyAgICA8dmFsdWU+QmVudXR6ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc4IiBuYW1lPSJvcmd2YWx1ZV91c2VybGlzdGFkZCI+CisgICAgPHZhbHVlPkJlbnV0emVyIGhpbnp1ZsO8Z2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3OSIgbmFtZT0ib3JndmFsdWVfdXNlcmxpc3RkZWxldGUiPgorICAgIDx2YWx1ZT5CZW51dHplciBlbnRmZXJuZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgwIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luaGVhZGVyIj4KKyAgICA8dmFsdWU+QmVudXR6ZXIgaGluenVmw7xnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgxIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luc2VhcmNoZmllbGQiPgorICAgIDx2YWx1ZT5CZW51dHplciBzdWNoZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgyIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luc2VhcmNoYnRuIj4KKyAgICA8dmFsdWU+U3VjaGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4MyIgbmFtZT0ib3JndmFsdWVfdXNlcndpbnNlYXJjaHJlc3VsdCI+CisgICAgPHZhbHVlPkJlbnV0emVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NCIgbmFtZT0ibG9naW53aW5fY2hvb3Nlb3JnYW5pc2F0aW9uIj4KKyAgICA8dmFsdWU+T3JnYW5pc2F0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NSIgbmFtZT0ibG9naW53aW5fY2hvb3Nlb3JnYW5pc2F0aW9uYnRuIj4KKyAgICA8dmFsdWU+QXVzd8OkaGxlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODYiIG5hbWU9Im5hdmlfcm9vbWFkbWluIj4KKyAgICA8dmFsdWU+S29uZmVyZW56csOkdW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NyIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPktvbmZlcmVuenLDpHVtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODgiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODkiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5MCIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPsO2ZmZlbnRsaWNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5MSIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPk9yZ2FuaXNhdGlvbmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5MiIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPktvbmZlcmVuenLDpHVtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTMiIG5hbWU9InJvb212YWx1ZV9uYW1lIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTQiIG5hbWU9InJvb212YWx1ZV90eXBlIj4KKyAgICA8dmFsdWU+VHlwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NSIgbmFtZT0icm9vbXZhbHVlX2lzcHVibGljIj4KKyAgICA8dmFsdWU+w5ZmZmVudGxpY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk2IiBuYW1lPSJyb29tdmFsdWVfY29tbWVudCI+CisgICAgPHZhbHVlPktvbW1lbnRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTciIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWljb24iPgorICAgIDx2YWx1ZT5TcGVpY2hlcm48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk4IiBuYW1lPSJ3aGl0ZWJvYXJkX29wZW5pY29uIj4KKyAgICA8dmFsdWU+w5ZmZm5lbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTkiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2luaGVhZGVyIj4KKyAgICA8dmFsdWU+U3BlaWNoZXJuIHVudGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMCIgbmFtZT0id2hpdGVib2FyZF9zYXZlYXN3aW50ZXh0Ij4KKyAgICA8dmFsdWU+RGF0ZWluYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMSIgbmFtZT0iZmlsZXMiPgorICAgIDx2YWx1ZT5EYXRlaW5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAyIiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbmJ0bjEiPgorICAgIDx2YWx1ZT5BYmJyZWNoZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAzIiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbmJ0bjIiPgorICAgIDx2YWx1ZT5TcGVpY2hlcm48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA0IiBuYW1lPSJycGNlcnJvcndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5GZWhsZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA1IiBuYW1lPSJsb2Fkd21sX2hlYWRlciI+CisgICAgPHZhbHVlPkxhZGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNiIgbmFtZT0ibG9hZHdtbF9tZXNzc2xvYWQiPgorICAgIDx2YWx1ZT5PYmpla3RlIGdlbGFkZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA3IiBuYW1lPSJsb2Fkd21sX21lc3NzeW5jIj4KKyAgICA8dmFsdWU+U3luY2hyb25pc2llcmUgQmVudXR6ZXIuIFJlc3RsaWNoZSBCZW51dHplcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA4IiBuYW1lPSJsb2FkaW1hZ2VfbWVzc2xvYWQiPgorICAgIDx2YWx1ZT5MYWRlIEJpbGRkYXRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDkiIG5hbWU9ImxvYWRpbWFnZV9tZXNzc3luYyI+CisgICAgPHZhbHVlPlN5bmNocm9uaXNpZXJlIEJlbnV0emVyLiBSZXN0bGljaGUgQmVudXR6ZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMCIgbmFtZT0ibG9hZHdtbF9jb25maXJtaGVhZGVyIj4KKyAgICA8dmFsdWU+WmVpY2hlbmJyZXR0IGxlZXJlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTEiIG5hbWU9ImxvYWR3bWxfY29uZmlybW1lc3MiPgorICAgIDx2YWx1ZT5aZWljaGVuYnJldHQgbGVlcmVuLiBBbGxlIGJpc2hlcmlnZW4gw4RuZGVydW5nZW4gZ2VoZW4gZGFtaXQgdmVybG9yZW4hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMiIgbmFtZT0ibG9hZHdtbF9jb25maXJtbWVzczIiPgorICAgIDx2YWx1ZT5CZXN0w6R0aWd1bmcgYW5mb3JkZXJuIHZvciBkZW0gTGFkZW4gZWluZXIgRGF0ZWk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEzIiBuYW1lPSJzZW5kX2ludml0YXRpb25fYnRuIj4KKyAgICA8dmFsdWU+RWlubGFkdW5nIHZlcnNlbmRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTQiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5FaW5sYWR1bmcgdmVyc2VuZGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNSIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX3N1YmplY3QiPgorICAgIDx2YWx1ZT5CZXRyZWZmPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNiIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX3JlY2lwaWVudCI+CisgICAgPHZhbHVlPkVtcGbDpG5nZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE3IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fbWVzc2FnZSI+CisgICAgPHZhbHVlPk5hY2hyaWNodDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTgiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9idG5fY29uZmlybSI+CisgICAgPHZhbHVlPkFic2NoaWNrZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE5IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fYnRuX2NhbmNlbCI+CisgICAgPHZhbHVlPkFiYnJlY2hlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjAiIG5hbWU9InNlbmRfY2hhdF90ZXh0X2J0biI+CisgICAgPHZhbHVlPlNlbmRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjEiIG5hbWU9Imludml0ZWRfdXNlcndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5CZW51dHplcmRhdGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyMiIgbmFtZT0iaW52aXRlZF91c2Vyd2luX3N1YmplY3QiPgorICAgIDx2YWx1ZT5OaWNrbmFtZSBmw7xyIGRpZXNlIEtvbmZlcmVuejwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjMiIG5hbWU9Imludml0ZWRfdXNlcndpbl9sb2dpbiI+CisgICAgPHZhbHVlPlNwaXR6bmFtZS9BbGlhczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjQiIG5hbWU9Imludml0ZWRfdXNlcndpbl9maXJzdG5hbWUiPgorICAgIDx2YWx1ZT5Wb3JuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNSIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2xhc3RuYW1lIj4KKyAgICA8dmFsdWU+TmFjaG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI2IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fbWFpbCI+CisgICAgPHZhbHVlPkUtTWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjciIG5hbWU9Imludml0ZWRfdXNlcndpbl9sYW5nIj4KKyAgICA8dmFsdWU+U3ByYWNoZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjgiIG5hbWU9Imludml0ZWRfdXNlcndpbl9lbnRlciI+CisgICAgPHZhbHVlPkFic2VuZGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyOSIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2VudGVyIj4KKyAgICA8dmFsdWU+TGFkZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMwIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZW50ZXIiPgorICAgIDx2YWx1ZT5EYXRlbiB3ZXJkZW4gZ2VsYWRlbi4gQml0dGUgd2FydGVuITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzEiIG5hbWU9InVzZXJfcmVnaXN0ZXJGYWxzZVBXRCI+CisgICAgPHZhbHVlPkZhbHNjaGVzIFBhc3N3b3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMiIgbmFtZT0idXNlcl9yZWdpc3RlckZhbHNlUFdESGVhZGVyIj4KKyAgICA8dmFsdWU+Qml0dGUgZ2ViZW4gU2llIGlociBQYXNzd29ydCB6d2VpbWFsIGVpbi4gTMOkbmdlOiBtaW5kZXN0ZW5zIDYgQnVjaHN0YWJlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMzIiBuYW1lPSJ1c2VyX3JlZ2lzdGVyTWFpbEVycm9yIj4KKyAgICA8dmFsdWU+VW5nw7xsdGlnZSBFLU1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM0IiBuYW1lPSJ1c2VyX3JlZ2lzdGVyTWFpbEVycm9ySGVhZGVyIj4KKyAgICA8dmFsdWU+RGllIGFuZ2VnZWJlbmUgRS1NYWlsLUFkcmVzc2UgaXN0IHVuZ8O8bHRpZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzUiIG5hbWU9InVzZXJfcmVnaXN0ZXJTdWNjZXNzIj4KKyAgICA8dmFsdWU+UmVnaXN0cmF0aW9uIGFiZ2VzY2hsb3NzZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM2IiBuYW1lPSJ1c2VyX3JlZ2lzdGVyU3VjY2Vzc0hlYWRlciI+CisgICAgPHZhbHVlPklociBCZW51dHplciB3dXJkZSBhbmdlbGVndC4gU2llIGvDtm5uZW4gc2ljaCBudW4gZWlubG9nZ2VuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzciIG5hbWU9InVzZXJfc2hhcmluZ19tZXNzYWdlIj4KKyAgICA8dmFsdWU+U2llIGvDtm5uZW4gSWhyZW4gQmlsZHNjaGlybSBpbSBNb21lbnQgbmljaHQgdmVyw7ZmZmVudGxpY2hlbiwgZGEgZGllcyBiZXJlaXRzIGVpbiBhbmRlcmVyIEJlbnV0emVyIGluIGRpZXNlbSBLb25mZXJlbnpyYXVtIHR1dC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM4IiBuYW1lPSJ1c2VyX3NoYXJpbmdfbWVzc2FnZUhlYWRlciI+CisgICAgPHZhbHVlPlZlcsO2ZmZlbnRsaWNodW5nIGFiZ2VsZWhudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzkiIG5hbWU9InVzZXJfZG9TdGFydFNjcmVlblZpZXdlciI+CisgICAgPHZhbHVlPkRlc2t0b3AgdmVyw7ZmZmVudGxpY2hlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDAiIG5hbWU9InNjcmVlbl93YXJuQmFuZHdpZHRoIj4KKyAgICA8dmFsdWU+U2NobGVjaHRlIEJhbmRicmVpdGUuIEVzIHdhciBuaWNodCBtw7ZnbGljaCBhbGxlIEJpbGRlciBkZXMgQmlsZHNjaGlybXMgenUgbGFkZW4uIFRyaXR0IGRpZXNlciBGZWhsZXIgaMOkdWZpZ2VyIGF1ZiBrw7ZubmVuIFNpZSBkZW4gTW9kZXJhdG9yIGRhcnVtIGJpdHRlbiwgZGllIFF1YWxpdMOkdCB6dXIgdmVycmluZ2Vybi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQxIiBuYW1lPSJzY3JlZW5fdXNlcmxhYmVsIj4KKyAgICA8dmFsdWU+QmlsZHNjaGlybSB2b246PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0MiIgbmFtZT0id2hpdGVib2FyZF90YWJfcGFpbnQiPgorICAgIDx2YWx1ZT5aZWljaG5lbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDMiIG5hbWU9IndoaXRlYm9hcmRfdGFiX2RvY3VtZW50Ij4KKyAgICA8dmFsdWU+RG9rdW1lbnRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0NCIgbmFtZT0idGFiYmFyX2NoYXRpY29uIj4KKyAgICA8dmFsdWU+Q2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDUiIG5hbWU9InRhYmJhcl9maWxlc2ljb24iPgorICAgIDx2YWx1ZT5EYXRlaWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0NiIgbmFtZT0idGFiYmFyX3BhcnRpY2lwYW50c2ljb24iPgorICAgIDx2YWx1ZT5CZW51dHplcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDciIG5hbWU9InN3ZnByZXNlbnRhdGlvbl9saXN0c2F2ZW9yaWciPgorICAgIDx2YWx1ZT5PcmdpbmFsZGF0ZWkgaGVydW50ZXJsYWRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDgiIG5hbWU9InN3ZnByZXNlbnRhdGlvbl9saXN0c2F2ZXBkZiI+CisgICAgPHZhbHVlPlBERi1Eb2t1bWVudCBoZXJ1bnRlcmxhZGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0OSIgbmFtZT0ic3dmcHJlc2VudGF0aW9uX2xpc3Rsb2Fkc3dmIj4KKyAgICA8dmFsdWU+UHLDpHNlbnRhdGlvbiBpbiBaZWljaGVuYnJldHQgbGFkZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUwIiBuYW1lPSJuYXZpbWFpbl9jb25maWciPgorICAgIDx2YWx1ZT5Lb25maWd1cmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MSIgbmFtZT0id2hpdGVib2FyZF9ib3VuZGluZ2JveF9kcmFnIj4KKyAgICA8dmFsdWU+T2JqZWt0IHZlcnNjaGllYmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MiIgbmFtZT0id2hpdGVib2FyZF9ib3VuZGluZ2JveF9yZXNpemUiPgorICAgIDx2YWx1ZT5PYmpla3QgdmVyZ3LDtsOfZXJuL3ZlcmtsZWluZXJuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MyIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfem9vbSI+CisgICAgPHZhbHVlPiU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU0IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9zbGlkZSI+CisgICAgPHZhbHVlPnZvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTUiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX2ZpcnN0c2xpZGUiPgorICAgIDx2YWx1ZT56dXIgZXJzdGVuIFNlaXRlIHNwcmluZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1NiIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfcHJlc2xpZGUiPgorICAgIDx2YWx1ZT56dXIgdm9yaGVyaWdlbiBTZWl0ZSBzcHJpbmdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTciIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX25leHRzbGlkZSI+CisgICAgPHZhbHVlPnp1ciBuw6RjaHN0ZW4gU2VpdGUgc3ByaW5nZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU4IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9sYXN0c2xpZGUiPgorICAgIDx2YWx1ZT56dXIgbGV0enRlbiBTZWl0ZSBzcHJpbmdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTkiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3pvb21taW51cyI+CisgICAgPHZhbHVlPlpvb20gLS08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYwIiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl96b29tcGx1cyI+CisgICAgPHZhbHVlPlpvb20gKys8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYxIiBuYW1lPSJzYWx1dGF0aW9uX21yIj4KKyAgICA8dmFsdWU+SGVycjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjIiIG5hbWU9InNhbHV0YXRpb25fbWlzcyI+CisgICAgPHZhbHVlPkZyYXU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYzIiBuYW1lPSJuYXZpbWFpbl9jb25mYWRtaW4iPgorICAgIDx2YWx1ZT5Lb25maWd1cmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2NCIgbmFtZT0iY29uZnRhYmxlX2hlYWRlcklkIj4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY1IiBuYW1lPSJjb25mdGFibGVfaGVhZGVya2V5Ij4KKyAgICA8dmFsdWU+U2NobMO8c3NlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjYiIG5hbWU9ImNvbmZhZG1pbmZvcm1faGVhZGVyIj4KKyAgICA8dmFsdWU+S29uZmlndXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjciIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWxrZXkiPgorICAgIDx2YWx1ZT5TY2hsw7xzc2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2OCIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbHVwZGF0ZWQiPgorICAgIDx2YWx1ZT5adWxldHp0IGJlYXJiZWl0ZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY5IiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsdXBkYXRlZGJ5Ij4KKyAgICA8dmFsdWU+QmVhcmJlaXRldCB2b248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjcwIiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsY29tbWVudCI+CisgICAgPHZhbHVlPktvbW1lbnRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzEiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWxrZXkiPgorICAgIDx2YWx1ZT5TY2hsw7xzc2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MiIgbmFtZT0idHVybm92ZXJsaXN0X21heHJlc3VsdHMiPgorICAgIDx2YWx1ZT52b248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjczIiBuYW1lPSJvcmdhbmlzYXRpb25fdXNlcnNoZWFkZXIiPgorICAgIDx2YWx1ZT5CZW51dHplcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzQiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2ljb25kZWxldGUiPgorICAgIDx2YWx1ZT5CZW51dHplciBhdXMgT3JnYW5pc2F0aW9uIGVudGZlcm5lbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzUiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2RlbGV0ZWRoZWFkIj4KKyAgICA8dmFsdWU+TMO2c2NoZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc2IiBuYW1lPSJvcmdhbmlzYXRpb25fdXNlcnNhbHJlYWRhZGRlZCI+CisgICAgPHZhbHVlPkRpZXNlciBCZW51dHplciBpc3QgYmVyZWl0cyBUZWlsIGRpZXNlciBPcmdhbmlzYXRpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NyIgbmFtZT0iZGFzaGJvYXJkX25ld3NoZWFkZXIiPgorICAgIDx2YWx1ZT5OZXVpZ2tlaXRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzgiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtzaGVhZGVyIj4KKyAgICA8dmFsdWU+UXVpY2tsaW5rczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzkiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtDb25mIj4KKyAgICA8dmFsdWU+WnUgZGVuIEtvbmZlcmVuenLDpHVtZW4gKG1heC4gNTAgVGVpbG5laG1lcik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgwIiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rQXVkaXQiPgorICAgIDx2YWx1ZT5adSBkZW4gRXZlbnRyw6R1bWVuICh1bmJlZ3Jlbnp0ZSBadXNjaGF1ZXIpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MSIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua3N1cHBvcnQiPgorICAgIDx2YWx1ZT5IaWxmZSB1bmQgU3VwcG9ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODIiIG5hbWU9ImRhc2hib2FyZF9xdWlja2hvbWVwYWdldXJsIj4KKyAgICA8dmFsdWU+aHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnLy88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgzIiBuYW1lPSJkYXNoYm9hcmRfcXVpY2ttYWlsaW5nbGlzdHVybCI+CisgICAgPHZhbHVlPmh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9tYWlsLWxpc3RzLmh0bWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg0IiBuYW1lPSJkYXNoYm9hcmRfcmVwb3J0YnVncyI+CisgICAgPHZhbHVlPkZlaGxlciBtZWxkZW4hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4NSIgbmFtZT0iZGFzaGJvYXJkX3Jzc2xpc3RpdGVtbGlua3RleHQiPgorICAgIDx2YWx1ZT5NZWhyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4NiIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua2hvbWVwYWdlbGFiZWwiPgorICAgIDx2YWx1ZT5Qcm9qZWt0IGltIE5ldHogKGh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy8pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4NyIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua21haWxpbmdsaXN0bGFiZWwiPgorICAgIDx2YWx1ZT5CZW51dHplciBNYWlsaW5nIExpc3RlIChodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvbWFpbC1saXN0cy5odG1sKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODgiIG5hbWU9ImxvZ2luX3JlbWVtYmVydXNlciI+CisgICAgPHZhbHVlPkxvZ2luIG1lcmtlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODkiIG5hbWU9Im1haW5fbmF2aSI+CisgICAgPHZhbHVlPkRhdGVpZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkwIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+TWVpbmUgw5xiZXJzaWNodDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTEiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5NZWV0aW5ncyBwbGFuZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkyIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+TWVpbmUgRXZlbnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MyIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPsOWZmZlbnRsaWNoZSBNZWV0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTQiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5Qcml2YXRlIE1lZXRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NSIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPsOWZmZlbnRsaWNoZSBFdmVudHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk2IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+UHJpdmF0ZSBFdmVudHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk3IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+w5ZmZmVudGxpY2hlIERhdGVpZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk4IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+UHJpdmF0ZSBEYXRlaWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5OSIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPlBlcnPDtm5saWNoZSBEYXRlaWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDEiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5Nb2RlcmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMiIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPk1vZGVyYXRpb24gYW5mb3JkZXJuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMyIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPlVtZnJhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA0IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+RGF0ZWkgYXVzd8OkaGxlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDUiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5FaW5zdGVsbHVuZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNiIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPkthbWVyYS0vTWlrcm8tRWluc3RlbGx1bmdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDciIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5aZWljaGVuYnJldHQtRWluc3RlbGx1bmdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDgiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5WZXJsYXNzZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA5IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+WnVyw7xjayB6dXIgUmF1bS3DnGJlcnNpY2h0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMCIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPkFibWVsZGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5QYXNzd29ydCB6dXLDvGNrc2V0emVuPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTIiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+UGFzc3dvcnQgenVyw7xja3NldHplbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTMiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+QmVpIEUtTWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTQiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+QmVpIExvZ2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxNSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5FLU1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE2IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPkxvZ2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxNyIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5EYXRlaWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxOCIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5FLU1haWwgbWl0IFJlc2V0LUxpbmsgdmVyc2VuZGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxOSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5HZWJlbiBTaWUgYml0dGUgZW50d2VkZXIgZWluZSBFLU1haWwgb2RlciBlaW5lbiBMb2dpbiBhbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIwIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPkVzIGdpYnQga2VpbmVuIEJlbnV0emVyIG1pdCBkaWVzZW0gQmVudXR6ZXJuYW1lbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIxIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPkRpZSBFLU1haWwgbWl0IGRlbSBkYXp1Z2Vow7ZyaWdlbiBMaW5rIHd1cmRlIGFuIElocmUgRS1NYWlsLUFkcmVzc2UgZ2VzYW5kdC4gQml0dGUgw7xiZXJwcsO8ZmVuIFNpZSBJaHJlbiBQb3N0ZWluZ2FuZy4gRmFsbHMgU2llIGltbWVyIG5vY2gga2VpbmUgRS1NYWlsIGVyaGFsdGVuIGhhYmVuLCBrb3JyaWdpZXJlbiBTaWUgYml0dGUgSWhyZSBTcGFtLUVpbnN0ZWxsdW5nZW4gdW5kIHNlbmRlbiBTaWUgZGllIEUtTWFpbCBub2NobWFscy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIyIiBuYW1lPSJlcnJvcnR5cGUiPgorICAgIDx2YWx1ZT5GZWhsZXIhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyMyIgbmFtZT0iZXJyb3J0eXBlIj4KKyAgICA8dmFsdWU+TmFjaHJpY2h0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNCIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+VW5nw7xsdGlnZXIgSGFzaC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI1IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5QYXNzd29ydCB6dXLDvGNrc2V0emVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNiIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+TG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI3IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5QYXNzd29ydCDDpG5kZXJuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyOCIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+TmV1ZXMgUGFzc3dvcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI5IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5QYXNzd29ydCB3aWVkZXJob2xlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzAiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPkRpZSB2b24gSWhuZW4gYW5nZWdlYmVuZW4gUGFzc3fDtnJ0ZXIgc2luZCBuaWNodCBpZGVudGlzY2guPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzMSIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+QmVudXR6ZXJuYW1lIG9kZXIgUGFzc3dvcnQgc2luZCB6dSBrdXJ6LCBiaXR0ZSBnZWJlbiBTaWUgbWluZGVzdGVucyBmb2xnZW5kZSBBbnphaGwgYW4gWmVpY2hlbiBmw7xyIEJlbnV0emVybmFtZSAvIFBhc3N3b3J0IGVpbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMyIiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5QYXNzd29ydCBnZXNwZWljaGVydC4gU2llIGvDtm5uZW4gc2ljaCBudW4gZGFtaXQgZWlubG9nZ2VuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzMiIG5hbWU9InJwY2NhbGxiYWNrIj4KKyAgICA8dmFsdWU+T0s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM0IiBuYW1lPSJycGNnZW5lcmFsZXJyb3IiPgorICAgIDx2YWx1ZT5VbmJla2FubnRlciBGZWhsZXIuIEJpdHRlIG1lbGRlbiBTaWUgZGFzIGRlbSBTZXJ2aWNlLVRlYW0uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5CZW51dHplcm5hbWUgbmljaHQgZ2VmdW5kZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM2IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlVuZ8O8bHRpZ2VzIFBhc3N3b3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNyIgbmFtZT0ibG9nb3V0Ij4KKyAgICA8dmFsdWU+RXJmb2xncmVpY2ggYXVzZ2Vsb2dndDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzgiIG5hbWU9InJlZ2lzdHJhdGlvbiI+CisgICAgPHZhbHVlPlJlZ2lzdHJpZXJ1bmcgaXN0IGF1c2dlc2NoYWx0ZXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzOSIgbmFtZT0icmVnaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+VW5nw7xsdGlnZSBFLU1haWwtQWRyZXNzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDAiIG5hbWU9InJlZ2lzdHJhdGlvbiI+CisgICAgPHZhbHVlPkRpZXNlciBEYXRlaW5hbWUgd2lyZCBzY2hvbiB2ZXJ3ZW5kZXQuIEJpdHRlIGdlYmVuIFNpZSBlaW5lbiBhbmRlcmVuIGFuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDEiIG5hbWU9ImZpbGVicm93c2VyIj4KKyAgICA8dmFsdWU+RGF0ZWluYW1lIHp1IGt1cno8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQyIiBuYW1lPSJmaWxlYnJvd3NlciI+CisgICAgPHZhbHVlPkFkcmVzc2Uga29ubnRlIG5pY2h0IGdlc3BlaWNoZXJ0IHdlcmRlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQzIiBuYW1lPSJ1c2VyYWRtaW4iPgorICAgIDx2YWx1ZT5CZW51dHplciBoaW56dWdlZsO8Z3QuIFZlcmdlc3NlbiBTaWUgbmljaHQgZGllc2VtIEJlbnV0emVyIGF1Y2ggZWluZSBPcmdhbmlzYXRpb24gaGluenV6dWbDvGdlbi4gQmVudXR6ZXIgb2huZSBPcmdhbmlzYXRpb24ga8O2bm5lbiBzaWNoIG5pY2h0IGVpbmxvZ2dlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ0IiBuYW1lPSJhZG1pbmZvcm1zIj4KKyAgICA8dmFsdWU+TmV1ZXIgRGF0ZW5zYXR6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+RXMga29ubnRlIGtlaW4gRmVsZCB6dSBkaWVzZXIgSUQgZXJtaXR0ZWx0IHdlcmRlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ2IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5FcyBrb25udGUga2VpbiBMYWJlbCBmw7xyIGRpZXNlIElEIGVybWl0dGVsdCB3ZXJkZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NyIgbmFtZT0iZXJyb3JtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2llIG3DvHNzZW4gQWRtaW5pc3RyYXRvciBzZWluLCB1bSBkaWVzZSBBa3Rpb24gYXVzenVmw7xocmVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDgiIG5hbWU9Im1haW5uYXZpIj4KKyAgICA8dmFsdWU+U3ByYWNoLUVkaXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDkiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPlNwcmFjaGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUwIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5MYWJlbC1JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTEiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkxhYmVsLU5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUyIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5XZXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1MyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+RmVsZHdlcnRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1NCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TGFiZWxOYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1NSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TGFiZWxXZXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1NiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TGFiZWwtSUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU3IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5TaWUgaGFiZW4gbnVyIGRhcyBMYWJlbCBnZWzDtnNjaHQgbmljaHQgZGFzIEZlbGQhIERhcyBGZWxkIGvDtm5udGUgbm9jaCBSZWZlcmVuemVuIGluIGFuZGVyZW4gU3ByYWNoZW4gYmVpbmhhbHRlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU4IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5VbmfDvGx0aWdlIExhYmVsaWQuIEZpZWxkTGFuZ3VhZ2VzdmFsdWVzX0lkIGthbm4gaW4gZGVyIERhdGVuYmFuayBuaWNodCBnZWZ1bmRlbiB3ZXJkZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1OSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+U2llIGvDtm5uZW4gZGllc2VzIEZlbGQgbmljaHQgbMO2c2NoZW4uIFNpZSBrw7ZubmVuIG51ciBMYWJlbHMsIG5pY2h0IGFiZXIgRmVsZGVyIGzDtnNjaGVuLiBadXIgWmVpdCBpc3Qga2VpbiBMYWJlbCBnZWxhZGVuLCBlbnR3ZWRlciBpc3Qga2VpbiBGZWxkIGF1c2dld8OkaGx0IG9kZXIgZXMgZ2lidCBrZWluIExhYmVsIGluIGRpZXNlciBTcHJhY2hlIGbDvHIgZGFzIEZlbGQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+RXhwb3J0aWVyZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYxIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5TaWUgbcO8c3NlbiBzaWNoIG5ldSBhbm1lbGRlbiwgdW0gw4RuZGVydW5nZW4genUgc2VoZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TmV1ZSBTcHJhY2hlIGFubGVnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYzIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5TcHJhY2hlIGzDtnNjaGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TmV1ZSBTcHJhY2hlIGFubGVnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY1IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+U3ByYWNoZSBhbmxlZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+U2ljaGVydW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2OCIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+WnVtIEVyc3RlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjkiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPlp1bSBMZXR6dGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MCIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+WnVtIE7DpGNoc3RlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzEiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPlp1bSBMZXR6dGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MiIgbmFtZT0idmlkZW9ib3giPgorICAgIDx2YWx1ZT5CZW51dHplciBzcHJpY2h0IChCeSBjbGlja2luZyBoZXJlIHlvdSBjYW4gZ2l2ZSBleGNsdXNpdmUgYXVkaW8gLyBtdXRlIHRoZSBtaWNyb3Bob25lIG9mIG90aGVycyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzczIiBuYW1lPSJ2aWRlb2JveCI+CisgICAgPHZhbHVlPlNvdW5kIGFuL2F1c3NjaGFsdGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3NCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+w5xiZXJzaWNodDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzUiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPklociBQcm9maWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc2IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5IYWxsbyw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc3IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5Qcm9maWwgYmVhcmJlaXRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzgiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPlVuZ2VsZXNlbmUgTmFjaHJpY2h0ZW46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3OSIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+QmlsZCDDpG5kZXJuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4MCIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5CZW51dHplcmRhdGVuIC0gRXhwb3J0aWVyZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgxIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPkFsbGUgT3JnYW5pc2F0aW9uZW4gbcO8c3NlbiBiZXJlaXRzIHZvcmhhbmRlbiBzZWluITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODIiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+U3RhcnRlIEV4cG9ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODMiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+TmFjaCBPcmdhbmlzYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg0IiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPlN0YXJ0ZSBFeHBvcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg1IiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPkJlbnV0emVyZGF0ZW4gLSBJbXBvcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg2IiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPlfDpGhsZW4gU2llIHVzZXJzLnhtbCBhdXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg3IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5pbXBvcnRpZXJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4OCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+RXhwb3J0aWVyZSBhbHMgWE1MIC0gRGllc2UgRGF0ZWllbiBrw7ZubmVuIGJlbnV0enQgd2VyZGVuIGFsczogQmVpdHJhZyB6dW0gUHJvamVrdCAtIEltcG9ydCBpbiBlaW4gYW5kZXJlcyBTeXN0ZW0gLSBTaWNoZXJ1bmcgLSBrdW5kZW5zcGV6aWZpc2NoZSBBbnBhc3N1bmcgLSBBYmxhZ2UgaW0gU3ByYWNodmVyemVpY2huaW5zIGbDvHIgSWhyZSBuw6RjaHN0ZSBJbnN0YWxsYXRpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4OSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+V8OkaGxlbiBTaWUgZWluZSBTcHJhY2hkYXRlaSBmw7xyIGRlbiBJbXBvcnQgYXVzLiBXw6RobGVuIFNpZSBkaWUgcGFzc2VuZGUgU3ByYWNoZSBhdXMgZGVyIENvbWJvYm94ISBFZ2FsIHdlbGNoZW4gTmFtZW4gZGllIERhdGVpIGhhdCwgc2llIHdpcmQgaW4gZGllc2UgU3ByYWNoZSBpbXBvcnRpZXJ0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTAiIG5hbWU9ImltcG9ydHdpbmRvdyI+CisgICAgPHZhbHVlPkltcG9ydCAtIFfDpGhsZW4gU2llIGVpbmUgRGF0ZWkgYXVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5MSIgbmFtZT0icmVjb3JkaW5nc2F2ZXdpbiI+CisgICAgPHZhbHVlPlNwZWljaGVybiB1bnRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTIiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT5OYW1lOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTMiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT5Lb21tZW50YXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NCIgbmFtZT0icmVjb3JkaW5nc2F2ZXdpbiI+CisgICAgPHZhbHVlPlNwZWljaGVybjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTUiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkF1Zm5haG1lbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTYiIG5hbWU9InJlY29yZGVyIj4KKyAgICA8dmFsdWU+QXVmbmFobWVuIGFuc2VoZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk3IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5BdWZuYWhtZW4gYXVzIGFsbGVuIFLDpHVtZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk4IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5CZW51dHplcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk5IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5NaXRnbGllZCBzZWl0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDAiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDEiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPkJlbnV0emVyIGluIGRpZXNlbSBSYXVtOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDIiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPk5ldSBsYWRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDMiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPkRpZXNlciBSYXVtIGlzdCB2b2xsLiBCaXR0ZSB2ZXJzdWNoZW4gU2llIGVzIHNww6R0ZXIgbm9jaCBlaW5tYWwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNCIgbmFtZT0icm9vbXNMaXN0Ij4KKyAgICA8dmFsdWU+V8OkaGxlbiBTaWUgZWluZW4gUmF1bSBhdXMsIHVtIERldGFpbHMgenUgZXJoYWx0ZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNSIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+Q2hhdHRlbiBTaWUgbWl0IEJlbnV0emVybiBpbiBkaWVzZW0gUmF1bTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA2IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5SYXVtOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDciIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPkJlbnV0emVyIGluIGRpZXNlbSBSYXVtOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDgiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPlNlaXQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwOSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+QXVmbmFobWUgYWJzcGllbGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMCIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+TMOkbmdlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTEiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkRhdHVtOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTIiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkF1Zm5haG1lISBTaWUga8O2bm5lbiBoaWVyIG5pY2h0cyBtZWhyIMOkbmRlcm4gLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMyIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+QXVmbmFobWUgYWJzcGllbGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxNCIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+QWJzcGllbGVuIC8gUGF1c2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE1IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5BdWZuYWhtZSBzdGFydGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxNiIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+QXVmbmFobWUgYmVlbmRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTciIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkF1Zm5haG1lbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE4IiBuYW1lPSJyZWNvcmRfZXJyb3JfbXNnIj4KKyAgICA8dmFsdWU+RGllIEF1Zm5haG1lIGlzdCBiZXJlaXRzIGdlc3RhcnRldC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE5IiBuYW1lPSJyZWNvcmRfbWVzc2FnZSI+CisgICAgPHZhbHVlPkF1Zm5haG1lIGdlc3RhcnRldCB2b24gQmVudXR6ZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyMCIgbmFtZT0icmVjb3JkX2NhbmNlbCI+CisgICAgPHZhbHVlPkFiYnJlY2hlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjEiIG5hbWU9InJlY29yZF9jYW5jYWxfdG9vbHRpcCI+CisgICAgPHZhbHVlPkF1Zm5haG1lIHdpcmQgYWJnZWJyb2NoZW4gdW5kIG5pY2h0IGdlc3BlaWNoZXJ0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjIiIG5hbWU9ImNhbmNlbF9kaWFsb2dfcmVzdW1lIj4KKyAgICA8dmFsdWU+Rm9ydHNldHplbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjMiIG5hbWU9ImNhbmNlbF9kaWFsb2dfcmVzdW1lX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5BdWZuYWhtZSBmb3J0c2V0emVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyNCIgbmFtZT0icGFpbnR0b29sc19lbGxpcHNlX2NvbG9yIj4KKyAgICA8dmFsdWU+TGluaWVuZmFyYmUgw6RuZGVybjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjUiIG5hbWU9ImNvbG9ycGlja2VyX2hlYWQiPgorICAgIDx2YWx1ZT5GYXJiZSBhdXN3w6RobGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyNiIgbmFtZT0icGFpbnR0b29sc19saW5lX2Rpc2FibGUiPgorICAgIDx2YWx1ZT5SYW5kZmFyYmUgZGUvYWt0aXZpZXJlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjciIG5hbWU9InBhaW50dG9vbHNfZmlsbF9kaXNhYmxlIj4KKyAgICA8dmFsdWU+RsO8bGxmYXJiZSDDpG5kZXJuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyOCIgbmFtZT0icGFpbnR0b29sc19saW5lX2Rpc2FibGUiPgorICAgIDx2YWx1ZT5Gw7xsbGZhcmJlIGRlL2FrdGl2aWVyZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI5IiBuYW1lPSJjaGFuZ2Vfd2lkdGhfYXJyb3dfZG93bl9zbGlkZXIiPgorICAgIDx2YWx1ZT5MaW5pZW5zdMOkcmtlIMOkbmRlcm48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMwIiBuYW1lPSJjbG9zZV9zbWFsbF9wb3B1cHMiPgorICAgIDx2YWx1ZT5TY2hsaWXDn2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzMSIgbmFtZT0icGFpbnRfdG9vbF9sZXR0ZXIiPgorICAgIDx2YWx1ZT5TY2hyaWZ0Z3LDtsOfZSBhbnBhc3NlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzIiIG5hbWU9InJlY29yZGluZ3NsaXN0X2RlbGV0ZSI+CisgICAgPHZhbHVlPkF1Zm5haG1lIGzDtnNjaGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzMyIgbmFtZT0icmVjb3JkaW5nc2xpc3RfcmVjb3JkZWRCeUd1ZXN0Ij4KKyAgICA8dmFsdWU+R8Okc3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNCIgbmFtZT0icmVjb3JkaW5nc2xpc3RfcmVjb3JkZWRieSI+CisgICAgPHZhbHVlPlZvbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM1IiBuYW1lPSJyZWNvcmRpbmdzX3RhYmxlX2hlYWRfbmFtZSI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM2IiBuYW1lPSJyZWNvcmRpbmdzX3RhYmxlX2hlYWRfcm9vbSI+CisgICAgPHZhbHVlPlJhdW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM3IiBuYW1lPSJyZWNvcmRpbmdzX3RhYmxlX2hlYWRfZGF0ZSI+CisgICAgPHZhbHVlPkRhdHVtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzOCIgbmFtZT0icmVjb3JkX3N0YXJ0X2NhbmNlbCI+CisgICAgPHZhbHVlPkFiYnJlY2hlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzkiIG5hbWU9InJlY29yZF9zdGFydF9zdGFydCI+CisgICAgPHZhbHVlPlN0YXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MCIgbmFtZT0iZmlsZXNicm93c2VyX3RhYmxlX2hlYWRfbmFtZSI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQxIiBuYW1lPSJmaWxlc2Jyb3dzZXJfdGFibGVfaGVhZF9kYXRlIj4KKyAgICA8dmFsdWU+RGF0dW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQyIiBuYW1lPSJjaGF0X2NsZWFyX2hpc3RvcnkiPgorICAgIDx2YWx1ZT5DaGF0bG9nIGzDtnNjaGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MyIgbmFtZT0iY2hhdF9vdmVyYWxsX2hlYWRlciI+CisgICAgPHZhbHVlPkNoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ0IiBuYW1lPSJjaGF0X3NlbmRfYnRuIj4KKyAgICA8dmFsdWU+TmFjaHJpY2h0IGFic2NoaWNrZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ1IiBuYW1lPSJjaGF0X2Vtb3RfYnRuIj4KKyAgICA8dmFsdWU+RW1vdGljb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NiIgbmFtZT0iY2hhdF9lbW90X3dpbiI+CisgICAgPHZhbHVlPkVtb3RpY29uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDciIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5ncyI+CisgICAgPHZhbHVlPlfDpGhsZW4gU2llIGRpZSBHZXLDpHRlIGF1czo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ4IiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT5Ub24gdW5kIFZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0OSIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2NvbWJvIj4KKyAgICA8dmFsdWU+bnVyIFRvbiAoTWlrcm9waG9uKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTAiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPm51ciBWaWRlbyAoV2ViY2FtKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTEiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPmtlaW4gVmlkZW8vVG9uIChudXIgUHJvZmlsLUJpbGQpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1MiIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2luZm9fdGV4dCI+CisgICAgPHZhbHVlPktlaW4gVmlkZW8vVG9uIHZlcsO2ZmZlbnRsaWNoZW4uIFfDpGhsZW4gU2llIGRpZXNlIEVpbnN0ZWxsdW5nIHdlbm4gZGllIHZlcmbDvGdiYXJlIEJhbmRicmVpdGUgc2VociBuaWVkcmlnIGlzdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUzIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX21vbmRheSI+CisgICAgPHZhbHVlPk1PPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV90dWVzZGF5Ij4KKyAgICA8dmFsdWU+REk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU1IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3dlZG5lc2RheSI+CisgICAgPHZhbHVlPk1JPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NiIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV90aHVyc2RheSI+CisgICAgPHZhbHVlPkRPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NyIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9mcmlkYXkiPgorICAgIDx2YWx1ZT5GUjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTgiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfc2F0dXJkYXkiPgorICAgIDx2YWx1ZT5TQTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTkiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfc3VuZGF5Ij4KKyAgICA8dmFsdWU+U088L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYwIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX21vbmRheSI+CisgICAgPHZhbHVlPk1vbnRhZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjEiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfVHVlc2RheUxhYmVsIj4KKyAgICA8dmFsdWU+RGllbnN0YWc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYyIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1dlZG5lc2RheUxhYmVsIj4KKyAgICA8dmFsdWU+TWl0dHdvY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYzIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1RodXJzZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5Eb25uZXJzdGFnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9GcmlkYXlMYWJlbCI+CisgICAgPHZhbHVlPkZyZWl0YWc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY1IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1NhdHVyZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5TYW1zdGFnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NiIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9TdW5kYXlMYWJlbCI+CisgICAgPHZhbHVlPlNvbm50YWc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY3IiBuYW1lPSJjYWxlbmRhcl93ZWVrbnVtYmVyX2hlYWRlciI+CisgICAgPHZhbHVlPktXPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2OCIgbmFtZT0iY2FsZW5kYXJfd2Vla251bWJlcl9oZWFkZXJUb29sdGlwIj4KKyAgICA8dmFsdWU+S2FsZW5kZXJ3b2NoZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjkiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5KYW51YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDcwIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+RmVicnVhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzEiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5Nw6RyejwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzIiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5BcHJpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzMiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5NYWk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc0IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+SnVuaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzUiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5KdWxpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3NiIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPkF1Z3VzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzciIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5TZXB0ZW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc4IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+T2t0b2JlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzkiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5Ob3ZlbWJlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODAiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5EZXplbWJlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODEiIG5hbWU9ImNhbGVuZGFyd2luX2hlYWRlciI+CisgICAgPHZhbHVlPkthbGVuZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4MiIgbmFtZT0icm9vbWFkbWluX2xhYmVsTnVtYmVyT2ZQYXJ0aWNpcGFudHMiPgorICAgIDx2YWx1ZT5UZWlsbmVobWVyemFobDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODMiIG5hbWU9InJvb21WYWx1ZV9hZHZhbmNlZFNldHRpbmdzIj4KKyAgICA8dmFsdWU+WmVpZ2UgTGF5b3V0ZWluc3RlbGx1bmdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODQiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfdmlkZW9YIj4KKyAgICA8dmFsdWU+WCB8IFk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg1IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3ZpZGVvWSI+CisgICAgPHZhbHVlPkJyZWl0ZSB8IEjDtmhlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NiIgbmFtZT0icm9vbUFkbWluX2xheW91dCI+CisgICAgPHZhbHVlPlZpZGVvLUNvbnRhaW5lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODciIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfbW9kIj4KKyAgICA8dmFsdWU+TW9kZXJhdGlvbnMtQ29udGFpbmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4OCIgbmFtZT0icm9vbUFkbWluX2xheW91dF9tb2RfcG9zIj4KKyAgICA8dmFsdWU+WDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODkiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPldoaXRlYm9hcmQtQ29udGFpbmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5MCIgbmFtZT0icm9vbUFkbWluX2xheW91dF93aGl0ZWJvYXJkX3Nob3ciPgorICAgIDx2YWx1ZT5Ba3RpdmllcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkxIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmRfcG9zIj4KKyAgICA8dmFsdWU+WCB8IFk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkyIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5CcmVpdGUgfCBIw7ZoZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTMiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXMiPgorICAgIDx2YWx1ZT5EYXRlaWVuLSwgQ2hhdC0sIFRlaWxuZWhtZXItQ29udGFpbmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NCIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlc19zaG93Ij4KKyAgICA8dmFsdWU+QWt0aXY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk1IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X2ZpbGVzX3BvcyI+CisgICAgPHZhbHVlPlggfCBZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NiIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlcyI+CisgICAgPHZhbHVlPkJyZWl0ZSB8IEjDtmhlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NyIgbmFtZT0ibW9kZXJhdG9yX2dvbmVfbWVzc2FnZSI+CisgICAgPHZhbHVlPkRlciBNb2RlcmF0b3IgaGF0IGRlbiBSYXVtIHZlcmxhc3Nlbi4gU2llIG3DvHNzZW4gZGllIE1vZGVyYXRpb24gYmVhbnRyYWdlbiB3ZW5uIFNpZSBhdWYgZGFzIFplaWNoZW5icmV0dCB6ZWljaG5lbiB3b2xsZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5OCIgbmFtZT0ibW9kZXJhdG9yX21lc3NhZ2VfZXZlbnRfbm9fbW9kIj4KKyAgICA8dmFsdWU+RXMgZ2lidCBtb21lbnRhbiBrZWluZW4gTW9kZXJhdG9yIGluIGRpZXNlbiBSYXVtLiBTaWUgbcO8c3NlbiBkaWUgTW9kZXJhdGlvbiBiZWFudHJhZ2VuIG9kZXIgd2FydGVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTkiIG5hbWU9ImZlZWRiYWNrX3RlbXBsYXRlX3N1YmplY3QiPgorICAgIDx2YWx1ZT5GZWVkYmFjayAkQVBQX05BTUU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAwIiBuYW1lPSJpbnZpdGF0aW9uX3RlbXBsYXRlX2hlYWQiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgLSBFaW5sYWR1bmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAxIiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfZnJvbSI+CisgICAgPHZhbHVlPk5hY2hyaWNodCB2b24gQmVudXR6ZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwMiIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X21lc3NhZ2UiPgorICAgIDx2YWx1ZT5OYWNocmljaHQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwMyIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X2NsaWNrX3RleHQiPgorICAgIDx2YWx1ZT5LbGlja2VuIFNpZSBhdWYgZGllc2VuIExpbmssIHVtIGluIGRlbiBSYXVtIHp1IGdlbGFuZ2VuOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDQiIG5hbWU9Imludml0YXRpb25fdGV4dF9jbGlja190ZXh0X2xpbmsiPgorICAgIDx2YWx1ZT5LbGlja2VuIFNpZSBoaWVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwNSIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X2NsaWNrX3RleHRfaGVscCI+CisgICAgPHZhbHVlPldlbm4gZGVyIExpbmsgZmVobGVyaGFmdCBkYXJnZXN0ZWxsdCB3aXJkLCBrb3BpZXJlbiBTaWUgYml0dGUgZm9sZ2VuZGVuIExpbmsgaW4gZGllIEFkcmVzc3plaWxlIGlocmVzIEJyb3dzZXJzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDYiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9oZWFkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIFJlZ2lzdHJpZXJ1bmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA3IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfaGVhZDIiPgorICAgIDx2YWx1ZT5JaHJlIEJlbnV0emVyZGF0ZW46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwOCIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X3VzZXJuYW1lIj4KKyAgICA8dmFsdWU+TG9naW46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwOSIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X3Bhc3MiPgorICAgIDx2YWx1ZT5QYXNzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTAiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9tYWlsIj4KKyAgICA8dmFsdWU+RS1NYWlsOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTEiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9ieWUiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUtVGVhbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTIiIG5hbWU9InJlZ2lzdGVyX21haWxfc3ViamVjdCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSBSZWdpc3RyaWVydW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxMyIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSAtIFBhc3N3b3J0IHp1csO8Y2tzZXR6ZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE0IiBuYW1lPSJyZXNldF9wYXNzd29yZF90ZW1wbGF0ZV90ZXN0X2xpbmsiPgorICAgIDx2YWx1ZT5LbGlja2VuIFNpZSBoaWVyLCB1bSBlaW4gbmV1ZXMgUGFzc3dvcnQgZWluenVnZWJlbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE1IiBuYW1lPSJyZXNldF9wYXNzd29yZF90ZW1wbGF0ZV90ZXh0Ml9saW5rIj4KKyAgICA8dmFsdWU+S2xpY2tlbiBTaWUgaGllcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTYiIG5hbWU9InJlc2V0X3Bhc3N3b3JkX3RlbXBsYXRlX3RleHQzX2xpbmsiPgorICAgIDx2YWx1ZT5XZW5uIGRlciBMaW5rIGZlaGxlcmhhZnQgZGFyZ2VzdGVsbHQgd2lyZCwga29waWVyZW4gU2llIGJpdHRlIGZvbGdlbmRlbiBMaW5rIGluIGRpZSBBZHJlc3N6ZWlsZSBJaHJlcyBCcm93c2Vyczo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE3IiBuYW1lPSJyZXNldF9wYXNzd29yZF9tYWlsX3N1YmplY3QiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgUGFzc3dvcmQgUmVzZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE4IiBuYW1lPSJkYXRlUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5CaXR0ZSBnZWJlbiBTaWUgZWluIGfDvGx0aWdlcyBEYXR1bSBhbiwgenVtIEJlaXNwaWVsIDI0LjEyLjIwMDEgKGRkLm1tLnl5eXkpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxOSIgbmFtZT0iZW1haWxSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPkJpdHRlIGdlYmVuIFNpZSBlaW5lIGfDvGx0aWdlIEUtTWFpbCBhbiwgenVtIEJlaXNwaWVsIG5hbWVAbWFpbC5jb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIwIiBuYW1lPSJmbG9hdFJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+Qml0dGUgZ2ViZW4gU2llIGVpbmUgRGV6aW1hbHphaGwgYW4sIHp1bSBCZWlzcGllbCAxLjAwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyMSIgbmFtZT0ibnVtYmVyUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5CaXR0ZSBnZWJlbiBTaWUgZWluZSBHYW56emFobCBhbiwgenVtIEJlaXNwaWVsIDEwMDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjIiIG5hbWU9InBob25lUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5CaXR0ZSBnZWJlbiBTaWUgZWluZSBnw7xsdGlnZSBUZWxlZm9uLU51bW1lciBhbiwgenVtIEJlaXNwaWVsICsrNDkgMDEyMyAxMjMxMjM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIzIiBuYW1lPSJ0aW1lUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5CaXR0ZSBnZWJlbiBTaWUgZWluZSBnw7xsdGlnZSBVaHJ6ZWl0IGFuLCB6dW0gQmVpc3BpZWwgMTI6MjMgKGhoOm1tKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjQiIG5hbWU9Imludml0YXRpb25fd2luZG93Ij4KKyAgICA8dmFsdWU+UGFzc3dvcnQgZ2VzY2jDvHR6dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjUiIG5hbWU9Imludml0YXRpb25fd2luZG93X3Bhc3N3b3JkTGFiZWwiPgorICAgIDx2YWx1ZT5QYXNzd29ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjYiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkTGFiZWwiPgorICAgIDx2YWx1ZT5Hw7xsdGlna2VpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjciIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkIj4KKyAgICA8dmFsdWU+SW1tZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI4IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZCI+CisgICAgPHZhbHVlPlplaXRzcGFubmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI5IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZCI+CisgICAgPHZhbHVlPkVpbm1hbGlnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWRGcm9tTGFiZWwiPgorICAgIDx2YWx1ZT5Hw7xsdGlnIGFiOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzEiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkVG9MYWJlbCI+CisgICAgPHZhbHVlPkfDvGx0aWcgYmlzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzIiIG5hbWU9Imludml0YXRpb25fd2luZG93X01haWxTdWJqZWN0Ij4KKyAgICA8dmFsdWU+RWlubGFkdW5nIGbDvHIgZGllc2UgS29uZmVyZW56PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMyIgbmFtZT0iaW52aXRhdGlvbl9lcnJvciI+CisgICAgPHZhbHVlPktlaW5lIEVpbmxhZHVuZyBmw7xyIGRpZXNlbiBDb2RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzNCIgbmFtZT0iaW52aXRhdGlvbl9lcnJvciI+CisgICAgPHZhbHVlPkRpZSBFaW5sYWR1bmcgaXN0IG5pY2h0IG1laHIgZ8O8bHRpZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM1IiBuYW1lPSJpbnZpdGF0aW9uX2Vycm9yIj4KKyAgICA8dmFsdWU+RGllIEVpbmxhZHVuZyBpc3QgbmljaHQgbWVociBnw7xsdGlnLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzYiIG5hbWU9Imludml0YXRpb25fcGFzcyI+CisgICAgPHZhbHVlPlBhc3N3b3J0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzciIG5hbWU9Imludml0YXRpb25fcGFzc19idG4iPgorICAgIDx2YWx1ZT7DnGJlcnByw7xmZW4gU2llIGRhcyBQYXNzd29ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzgiIG5hbWU9Imludml0YXRpb25fcGFzc19lcnJvciI+CisgICAgPHZhbHVlPkZhbHNjaGVzIFBhc3N3b3J0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzkiIG5hbWU9IkJyb3dzZXIiPgorICAgIDx2YWx1ZT5Ccm93c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0MCIgbmFtZT0iYXVkaW9fdmlkZW8iPgorICAgIDx2YWx1ZT5Ub24vVmlkZW8gbmV1IHN0YXJ0ZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQxIiBuYW1lPSJlcnJvckNvZGVfaW52YWxpZFNlc3Npb24iPgorICAgIDx2YWx1ZT5TaXR6dW5nIGFiZ2VsYXVmZW4gb2RlciB1bmfDvGx0aWcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0MiIgbmFtZT0iZXJyb3Jjb2RlX3NldFVzZXJPYmplY3QiPgorICAgIDx2YWx1ZT5TZXNzaW9uSWQgaXN0IG5pY2h0IGVpbmdlbG9nZ3Qgb2RlciBoYXQga2VpbmUgQWRtaW5pc3RyYXRvcnJlY2h0ZS4gRGFzIFNPQVAgR2F0ZXdheSBiZW7DtnRpZ3QgZWluZW4gQmVudXR6ZXIgbWl0IEFkbWluLVJlY2h0ZW4gdW0gZWluZW4gbmV1ZW4gTnV0emVyIGVpbnp1YmV0dGVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDMiIG5hbWU9ImVycm9yY29kZV9sb2dpbkJ5UmVtb3RlVXNlciI+CisgICAgPHZhbHVlPkRpZXNlIFNpdHp1bmcgc3RlaHQgbWl0IGtlaW5lciBSZW1vdGV1c2VyLURhdGEgaW4gVmVyYmluZHVuZy4gRW50d2VkZXIgaGFiZW4gU2llIGRhcyBTT0FQLUdhdGV3YXkgdm9yIGRlbSBadWdyaWZmIGF1ZiBkaWUgQW53ZW5kdW5nIG5pY2h0IGdlcnVmZW4gb2RlciBTaWUgYmVudXR6ZW4gZGllIGZhbHNjaGUgU2l0enVuZ3MtSUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ0IiBuYW1lPSJkZWJ1Z19tZXNzYWdlX3JlY29yZGluZyI+CisgICAgPHZhbHVlPkRpZSBBdWZuYWhtZSB2b24gTWVldGluZ3MgaXN0IG5vY2ggQmV0YSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ1IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWFZhbHVlIj4KKyAgICA8dmFsdWU+eDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDYiIG5hbWU9InByb3BlcnR5UGFuZWxYVmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPngtQWNoc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ3IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWVZhbHVlIj4KKyAgICA8dmFsdWU+eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDgiIG5hbWU9InByb3BlcnR5UGFuZWxZVmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPnktQWNoc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ5IiBuYW1lPSJwcm9wZXJ0eVBhbmVsV2lkdGhWYWx1ZSI+CisgICAgPHZhbHVlPnc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUwIiBuYW1lPSJwcm9wZXJ0eVBhbmVsV2lkdGhWYWx1ZUxhYmVsIj4KKyAgICA8dmFsdWU+QnJlaXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1MSIgbmFtZT0icHJvcGVydHlQYW5lbEhlaWdodFZhbHVlIj4KKyAgICA8dmFsdWU+aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTIiIG5hbWU9InByb3BlcnR5UGFuZWxIZWlnaHRWYWx1ZUxhYmVsIj4KKyAgICA8dmFsdWU+SMO2aGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUzIiBuYW1lPSJwcm9wZXJ0eU9wYWNpdHlTbGlkZXIiPgorICAgIDx2YWx1ZT5UcmFuc3BhcmVueiDDpG5kZXJuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1NCIgbmFtZT0iYnJvd3Nlck9wZW4iPgorICAgIDx2YWx1ZT5Ccm93c2VyIG9mZmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1NSIgbmFtZT0iYnJvd3NlckNsb3NlIj4KKyAgICA8dmFsdWU+QnJvd3NlciBnZXNjaGxvc3NlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTYiIG5hbWU9ImNvbm5lY3Rpb25Mb3N0TWVzc2FnZSI+CisgICAgPHZhbHVlPkRpZSBWZXJiaW5kdW5nIHp1bSBTZXJ2ZXIgaXN0IGFiZ2Vicm9jaGVuLiBQcsO8ZmVuIFNpZSBpaHJlIE5ldHp3ZXJrLVZlcmJpbmR1bmcgdW5kIHN0YXJ0ZW4gU2llIGRpZSBBbndlbmR1bmcgbmV1LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTciIG5hbWU9IjU1NyI+CisgICAgPHZhbHVlPlBvaW50ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU4IiBuYW1lPSJzeW5jIG1lc3NhZ2UgaGVhZGVyIj4KKyAgICA8dmFsdWU+U3luY2hyb25pc2llcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU5IiBuYW1lPSJTeW5jaHJvbml6aW5nIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TeW5jaHJvbml6aWVyZSBCZW51dHplciwgYml0dGUgd2FydGVuIFNpZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjAiIG5hbWU9ImV4cG9ydFRvU1ZHIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7RG93bmxvYWQgYWxzIFNWRyZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYxIiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7RG93bmxvYWQgYWxzIFBORyZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYyIiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7RG93bmxvYWQgYWxzIEpQRyZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYzIiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7RG93bmxvYWQgYWxzIFBERiZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY0IiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7RG93bmxvYWQgYWxzIFRJRiZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY1IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+RXJpbm5lcnVuZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjYiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5LYXRlZ29yaWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY3IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+V2llZGVyaG9sdW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2OCIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPktlaW5lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2OSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPk9ydDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTcwIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+U3RhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTcxIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+RW5kZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzIiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5UaXRlbDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTczIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+S29tbWVudGFyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzQiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5KZW1hbmRlbiBlaW5sYWRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzUiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT50w6RnbGljaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzYiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5tb25hdGxpY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc3IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+asOkaHJsaWNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3OCIgbmFtZT0iYWxlcnQiPgorICAgIDx2YWx1ZT5UZXJtaW5zdGFydCBtdXNzIHZvciBUZXJtaW5lbmRlIGxpZWdlbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc5IiBuYW1lPSJhbGVydCI+CisgICAgPHZhbHVlPkJpdHRlIGdlYmVuIFNpZSBlaW5lbiBUaXRlbCBhbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgwIiBuYW1lPSI1ODAiPgorICAgIDx2YWx1ZT5SVEw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgxIiBuYW1lPSI1ODEiPgorICAgIDx2YWx1ZT5Ba3RpdmllcmVuIFNpZSBkaWUgZmFsbHMgZXMgc2ljaCB1bSBlaW5lIEVpbmdhYmUgZWluZXIgUmVjaHRzLU5hY2gtTGlua3MgU3ByYWNoZSAoYXJhYmlzY2gsIHBlcnNpY2gsIGhlYnLDpGlzY2gpIGhhbmRlbHQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MiIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT5TdGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODMiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+QXVmZ2Vub21tZW5lIEtvbmZlcmVuemVuIGJldHJhY2h0ZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg0IiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPk1lZXRpbmcgLSBNYWNoZW4gU2llIGVpbmUgS29uZmVyZW56Jmx0O2JyLyZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg1IiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPkV2ZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4NiIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT5CZW51dHplciwgS29uZmlndXJhdGlvbiB1bmQgVmVyd2FsdHVuZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODciIG5hbWU9InJvb20gQWRtaW5pc3RyYXRpb24gcm9vbWNsaWVudHMgbGlzdCI+CisgICAgPHZhbHVlPkJlbnV0emVyIGluIGRpZXNlbSBSYXVtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4OCIgbmFtZT0icm9vbSBBZG1pbmlzdHJhdGlvbiByb29tY2xpZW50cyBsaXN0Ij4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg5IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5FaW5sb2dnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkwIiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5EPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5MSIgbmFtZT0ic3dmIHN5bmMgbWVzc2FnZSI+CisgICAgPHZhbHVlPkxhZGUgRG9rdW1lbnQuIEJpdHRlIHdhcnRlbiBTaWUgYmlzIGFsbGUgQmVudXR6ZXIgc3luY2hvbmlzaWVydCB3dXJkZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5MiIgbmFtZT0idXBsb2FkIGRpYWxvZyI+CisgICAgPHZhbHVlPkRva3VtZW50IGhvY2hnZWxhZGVuLiBLb252ZXJ0aWVyZSAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkzIiBuYW1lPSJ1cGxvYWQgZGlhbG9nIj4KKyAgICA8dmFsdWU+U3RhcnRlIFVwbG9hZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTQiIG5hbWU9InVwbG9hZCBkaWFsb2ciPgorICAgIDx2YWx1ZT5Ib2NobGFkZW4gdW5kIGltcG9ydGllcmVuLiBCaXR0ZSB3w6RobGVuIFNpZSBlaW5lIERhdGVpIGF1cy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk1IiBuYW1lPSJ1cGxvYWQgRGlhbG9nIj4KKyAgICA8dmFsdWU+QWJicmVjaGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NiIgbmFtZT0idXBsb2FkIERpYWxvZyI+CisgICAgPHZhbHVlPkRhdGVpIGF1c3fDpGhsZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk3IiBuYW1lPSJhZG1pbmlzdHJhdGlvbiBuYXZpZ2F0aW9uIj4KKyAgICA8dmFsdWU+VmVyYmluZHVuZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5OCIgbmFtZT0iY29uZmFkbWluIHZhbHVlIGxpc3QiPgorICAgIDx2YWx1ZT5XZXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5OSIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPlN0cmVhbWlkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwMCIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPkxvZ2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwMSIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPlZlcmJ1bmRlbiBzZWl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwMiIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPlJhdW0gLyBCZXJlaWNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwMyIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPkF1c2xvZ2dlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDQiIG5hbWU9ImtpY2sgdXNlciBjb25maXJtYXRpb24gZGlhbG9nIj4KKyAgICA8dmFsdWU+QmVudXR6ZXJhbmJpbmR1bmcgYXVzbG9nZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwNSIgbmFtZT0ia2ljayB1c2VyIGNvbmZpcm1hdGlvbiBkaWFsb2ciPgorICAgIDx2YWx1ZT5Xb2xsZW4gU2llIGRpZXNlbiBCZW51dHplciB3aXJrbGljaCB2b24gZGllc2VyIFZlcmJpbmd1bmcgYXVzc2NobGllw59lbj8mbHQ7YnIvJmd0OyBEaWVzZSBNYcOfbmFobWUgZW50ZmVybnQgZGVuIEJlbnV0emVyIGxlZGlnbGljaCBhdXMgZGVtIFJhdW0uIERlciBCZW51dHplciBrYW5uIHNpY2ggd2llZGVyIGVpbmxvZ2dlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA2IiBuYW1lPSJraWNrIHVzZXIgbWVzc2FnZSBkaWFsb2ciPgorICAgIDx2YWx1ZT5JaHJlIFNpdHp1bmcgd3VyZGUgYmVlbmRldC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA3IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Bob25lIj4KKyAgICA8dmFsdWU+VGVsZWZvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDgiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPkJlbnV0emVyIGlzdCBNb2RlcmF0b3IgZGllc2VzIFJhdW1lcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA5IiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5CZW51dHplciBkYXJmIG5pY2h0IGF1ZiBkZW0gWmVpY2hlbmJyZXR0IHplaWNobmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMCIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+TmV1IHN0YXJ0ZW4gdm9uIFRvbi9WaWRlbyBvZGVyIEVpbnN0ZWxsdW5nZW4gw6RuZGVybjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTEiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPkRpZXNlbSBCZW51dHplciBkZW4gWnVnYW5nIHp1bSBaZWljaGVuYnJldHQgZ2V3w6RocmVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTIiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPkRpZXNlbSBCZW51dHplciBkZW4gWnVnYW5nIHp1bSBaZWljaGVuYnJldHQgdmVyd2VocmVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTMiIG5hbWU9ImNvbmZlcmVuY2VQYW5lbHMiPgorICAgIDx2YWx1ZT5CZW51dHplcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTQiIG5hbWU9ImNvbmZlcmVuY2VQYW5lbHMiPgorICAgIDx2YWx1ZT5EYXRlaWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxNSIgbmFtZT0iY29uZmVyZW5jZVBhbmVscyI+CisgICAgPHZhbHVlPlplaWNoZW5icmV0dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTYiIG5hbWU9ImNvbmZlcmVuY2VQYW5lbHMiPgorICAgIDx2YWx1ZT5DaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxNyIgbmFtZT0ib3JnYW5pemF0aW9uIGNob29zZSBpbmZvIj4KKyAgICA8dmFsdWU+SWhyIEJlbnV0emVyLVByb2ZpbCBpc3QgTWl0Z2xpZWQgaW4gbWVocmVyZW4gT3JnYW5pc2F0aW9uZW4uIEJpdHRlIHfDpGhsZW4gU2llIGVpbmUgZsO8ciBkaWVzZSBTaXR6dW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTgiIG5hbWU9ImVycm9yIG1lc3NhZ2Ugcm9vbSBmdWxsIj4KKyAgICA8dmFsdWU+RGVyIFJhdW0gaXN0IGltIE1vbWVudCB2b2xsLiBCaXR0ZSB2ZXJzdWNoZW4gU2llIGVzIHNww6R0ZXIgbm9jaCBlaW5tYWwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxOSIgbmFtZT0icm9vbXR5cGVzIj4KKyAgICA8dmFsdWU+UmF1bXR5cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjAiIG5hbWU9ImFwcG9pbnRlZF9yb29tIj4KKyAgICA8dmFsdWU+VGVybWluIFJhdW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIxIiBuYW1lPSJzZXJ2ZXJ0aW1lIj4KKyAgICA8dmFsdWU+U2VydmVyIFplaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIyIiBuYW1lPSJpbnZfcmVtaW5kZXJfdGVtcGxhdGVfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSAtIEVyaW5uZXJ1bmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIzIiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9mcm9tIj4KKyAgICA8dmFsdWU+TmFjaHJpY2h0IHZvbiBCZW51dHplcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI0IiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9tZXNzYWdlIj4KKyAgICA8dmFsdWU+TmFjaHJpY2h0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjUiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2NsaWNrX3RleHQiPgorICAgIDx2YWx1ZT5LbGlja2VuIFNpZSBhdWYgZGllc2VuIExpbmsgdW0gaW4gZGVuIFJhdW0genUgZ2VsYW5nZW4gW0RlciBMaW5rIGZ1bmt0aW9uaWVydCBlcnN0IDE1IE1pbnV0ZW4gdm9yIGRlbSBNZWV0aW5nIV06PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNiIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfY2xpY2tfdGV4dF9saW5rIj4KKyAgICA8dmFsdWU+S2xpY2tlbiBTaWUgaGllcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjciIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2NsaWNrX3RleHRfaGVscCI+CisgICAgPHZhbHVlPldlbm4gZGVyIExpbmsgZmVobGVyaGFmdCBkYXJnZXN0ZWxsdCB3aXJkLCBrb3BpZXJlbiBTaWUgYml0dGUgZm9sZ2VuZGVuIExpbmsgaW4gZGllIEFkcmVzc3plaWxlIElocmVzIEJyb3dzZXJzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjgiIG5hbWU9ImJ0bl9zZWFyY2hfaW50ZXJuIj4KKyAgICA8dmFsdWU+U3VjaGUgaW50ZXJuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyOSIgbmFtZT0iYnRuX3NlYXJjaF9leHRlcm4iPgorICAgIDx2YWx1ZT5FeHRlcm5lIEJlbnV0emVyIGVpbmdlYmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzMCIgbmFtZT0ibGJsX3ByZW5hbWUiPgorICAgIDx2YWx1ZT5Wb3JuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzMSIgbmFtZT0ibGJsX25hbWUiPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzMiIgbmFtZT0ibGJsX2VtYWlsIj4KKyAgICA8dmFsdWU+RS1NYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzMyIgbmFtZT0ibG9nb3V0Q29uZmlybV90aXRsZSI+CisgICAgPHZhbHVlPkFibWVsZHVuZyBiZXN0w6R0aWdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzQiIG5hbWU9ImxvZ291dENvbmZpcm1fc3VyZV90b19sb2dvdXRfcXVlc3Rpb24iPgorICAgIDx2YWx1ZT5Xb2xsZW4gU2llIHNpY2ggd2lya2xpY2ggYXVzbG9nZ2VuPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzUiIG5hbWU9Im1haW4gbWVudSI+CisgICAgPHZhbHVlPkFrdGlvbmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkRlbW9yYXVtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNyIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkRlbW8gWmVpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzgiIG5hbWU9Im1lZXRpbmcgVGltZXIiPgorICAgIDx2YWx1ZT5NZWV0aW5nIFplaXRtZXNzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM5IiBuYW1lPSJtZWV0aW5nIFRpbWVyIj4KKyAgICA8dmFsdWU+RGllcyBpc3QgZWluIERlbW8tUmF1bS4gVW0gZGllc2VuIEhpbndlaXMgYWJ6dXNjaGFsdGVuIHNvbGx0ZW4gU2llIGVudHdlZGVyIGVpbmVuIHByaXZhdGVuIE1lZXRpbmctUmF1bSBmw7xyIElocmVuIHBlcnPDtm5saWNoZW4gWndlY2sgYXVmc3VjaGVuIG9kZXIgSWhyZW4gZWlnZW5lbiBTZXJ2ZXIgYW5sZWdlbi4gU2llIHdlcmRlbiBhdXRvbWF0aXNjaCBhdXNnZWxvZ2d0IGluOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDAiIG5hbWU9Im1lZXRpbmcgcm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPk1vZGVyaWVydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDEiIG5hbWU9Im1vZGVyYXRlZCByb29tIHdhaXRpbmcgbWVzc2FnZSI+CisgICAgPHZhbHVlPkJpdHRlIHdhcnRlbiBTaWUgYmlzIGRlciBNb2RlcmF0b3IgZGVuIFJhdW0gYmV0cmV0ZW4gaGF0LiBEZXIgTW9kZXJhdG9yIGthbm4gZWluIExlaHJlciwgZWluIEFkbWluaXN0cmF0b3Igb2RlciBkZXIgRXJzY2hhZmZlciBkaWVzZXMgUmF1bWVzIHNlaW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MiIgbmFtZT0iZXJyb3IgcG9wdXAiPgorICAgIDx2YWx1ZT5PazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDMiIG5hbWU9IndpbmRvdyBzY3JlZW5zaGFyaW5nIj4KKyAgICA8dmFsdWU+RWlua29tbWVuZGUgQmlsZHRlaWx1bmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ0IiBuYW1lPSJ3aW5kb3cgc2NyZWVuIHNoYXJpbmciPgorICAgIDx2YWx1ZT5FcyBnaWJ0IGVpbmUgbmV1ZSBhbmtvbW1lbmRlIEJpbGR0ZWlsdW5nIHZvbSBCZW51dHplcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ1IiBuYW1lPSJ3aW5kb3cgc2NyZWVuIHNoYXJpbmciPgorICAgIDx2YWx1ZT5CZWdpbm5lIFRlaWx1bmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ2IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkbDvGdlIGVpbiBuZXVlcyBNZWV0aW5nIGhpbnp1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0NyIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5NZWV0aW5nIFJhdW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ4IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkV2ZW50IFJhdW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ5IiBuYW1lPSJtYWluIG1lbnUgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPk1vZGVyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUwIiBuYW1lPSJtZW51IG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Nb2RlcmllcmUgQmVudXR6ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUxIiBuYW1lPSJtZW51IG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Nb2RlcmllcmUgUsOkdW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1MiIgbmFtZT0ibW9kZXJhdG9yIG9yZyI+CisgICAgPHZhbHVlPk08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUzIiBuYW1lPSJjb25maXJtIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Xb2xsZW4gU2llIGRpZXNlbiBCZW51dHplciB6dW0gTW9kZXJhdG9yIGRlciBPcmdhbmlzYXRpb24gZXJuZW5uZW4/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1NCIgbmFtZT0iZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPkJpdHRlIHfDpGhsZW4gU2llIHp1ZXJzdCBkaWUgT3JnYW5pc2F0aW9uIGF1cyBiZXZvciBTaWUgZWluZW4gQmVudXR6ZXIgaGluenVmw7xnZW4gd29sbGVuITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTUiIG5hbWU9ImNob29zZSB1c2VyIHdpbmRvdyI+CisgICAgPHZhbHVlPk9yZ2FuaXNhdGlvbiAtIE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTYiIG5hbWU9Im1vZGVyYXRvciBvcmcgdXNlcnMiPgorICAgIDx2YWx1ZT5Xb2xsZW4gU2llIGRpZXNlbiBCZW51dHplciBhdXMgZGVyIE9yZ2FuaXNhdGlvbiB3aXJrbGljaCBsw7ZzY2hlbj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU3IiBuYW1lPSJvcmcgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkRpZXNlciBCZW51dHplciBpc3QgZWluIE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTgiIG5hbWU9Im9yZyBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+RGllc2VyIEJlbnV0emVyIGlzdCBrZWluIE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTkiIG5hbWU9ImVycm9yIG1lc3NhZ2UgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPldvbGxlbiBTaWUgZGllc2VtIEJlbnV0emVyIGRpZSBGdW5rdGlvbiBkZXMgTW9kZXJhdG9ycyBlbnR6aWVoZW4/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MCIgbmFtZT0ibW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPlLDpHVtZSBpbm5lcmhhbGIgZGVyIE9yZ2FuaXNhdGlvbiBoaW56dWbDvGdlbiBvZGVyIGzDtnNjaGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MSIgbmFtZT0iZGVsZXRlIGNvbmZpcm0gcXVlc3Rpb24iPgorICAgIDx2YWx1ZT5Xb2xsZW4gU2llIGRpZXNlIEF1Zm5haG1lIHdpcmtsaWNoIGzDtnNjaGVuPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjIiIG5hbWU9ImRlbGV0ZSBjb25maXJtIHF1ZXN0aW9uIHVzZXIgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPldvbGxlbiBTaWUgZGllc2VuIEJlbnV0emVyIGF1cyBJaHJlciBPcmdhbmlzYXRpb24gd2lya2xpY2ggbMO2c2NoZW4/IFNpZSB3ZXJkZW4gbnVyIGRpZSBWZXJiaW5kdW5nIHp3aXNjaGVuIGRlbSBCZW51dHplciB1bmQgSWhyZXIgT3JnYW5pc2F0aW9uIGzDtnNjaGVuIGvDtm5uZW4sIHVtIGRlbiBCZW51dHplciB3aXJrbGljaCB6dSBsw7ZzY2hlbiBicmF1Y2hlbiBTaWUgQWRtaW5pc3RyYXRvci1SZWNodGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MyIgbmFtZT0iZXJyb3IgbWVzc2FnZSBzZWxmIGRlbGV0aW5nIj4KKyAgICA8dmFsdWU+U2llIGvDtm5uZW4gSWhyZW4gZWlnZW5lbiBOdXR6ZXJhY2NvdW50IG5pY2h0IGzDtnNjaGVuITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjQiIG5hbWU9ImVycm9yIG1lc3NhZ2UgYXV0aCI+CisgICAgPHZhbHVlPkRpZXNlIE1ldGhvZGUgYmVuw7Z0aWd0IGVpbiBBZG1pbmlzdHJhdG9yLUFjY291bnQgdW0gYXVmZ2VydWZlbiB6dSB3ZXJkZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NSIgbmFtZT0iZXJyb3IgbWVzc2FnZSBTT0FQIj4KKyAgICA8dmFsdWU+RXMgaXN0IGtlaW5lIFNpdHp1bmcgbWl0IGRpZXNlciBJRCB2ZXJidW5nZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NiIgbmFtZT0iZXJyb3IgbWVzc2FnZSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+RGllcyBpc3QgZWluIEFkbWluaXN0cmF0b3ItIG9kZXIgTW9kZXJhdG9yLUFjY291bnQuIERpZXNlcyBBY2NvdW50IGvDtm5uZW4gU2llIG51ciBtaXR0ZWxzIGVpbmVzIEFkbWluaXN0cmF0b3ItVGFibGVhdSBiZWFyYmVpdGVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjciIG5hbWU9ImVtYWlsIHZlcmlmaWNhdGlvbiI+CisgICAgPHZhbHVlPlVtIElocmUgUmVnaXN0cmF0aW9uIGFienVzY2hsaWXDn2VuIGtsaWNrZW4gU2llIGJpdHRlIGF1ZiBkZW4gZm9sZ2VuZGVuIExpbmsuIE9kZXIga29waWVyZW4gU2llIGRpZSBVUkwoTGluaykgaW4gSWhyZSBCcm93c2VyLUFkcmVzc2xlaXN0ZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY4IiBuYW1lPSJlbWFpbCB2ZXJpZmljYXRpb24iPgorICAgIDx2YWx1ZT5LbGlja2VuIFNpZSB1bSBJaHJlIEUtTWFpbCB6dSBiZXN0w6R0aWdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjkiIG5hbWU9ImVycm9yTWVzc2FnZV9Vc2VyQWN0aXZhdGlvblNlcnZsZXQgW0FjdGl2YXRlVXNlcl0iPgorICAgIDx2YWx1ZT5FcyB3dXJkZSBrZWluIEJlbnV0emVyIGbDvHIgZGllc2VuIEhhc2ggZ2VmdW5kZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3MCIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPkRpZXNlciBCZW51dHplciBpc3QgYmVyZWl0cyBha3RpdmllcnQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3MSIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPlNpZSBoYWJlbiBJaHIgQWNjb3VudCBlcmZvbGdyZWljaCBha3RpdmllcnQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3MiIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPkpldHp0IGVpbmxvZ2dlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzMiIG5hbWU9ImxvZ2luRXJyb3JNZXNzYWdlID0gdXNlciB3YXMgbm90IGFjdGl2YXRlZCI+CisgICAgPHZhbHVlPklociBBY2NvdW50IGlzdCBuaWNodCBha3RpdmllcnQuIEJlbnV0emVuIFNpZSB6dWVyc3QgZGVuIExpbmsgaW4gZGVyIEUtTWFpbCBkaWUgU2llIHfDpGhyZW5kIGRlciBSZWdpc3RyaWVydW5nIGVyaGFsdGVuIGhhYmVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzQiIG5hbWU9InJlZ2lzdGVyIHZlcmlmaWNhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2llIGhhYmVuIHNpY2ggZXJmb2xncmVpY2ggYW5nZW1lbGRldC4gV2lyIGhhYmVuIGVpbmUgRS1NYWlsIG1pdCBlaW5lbSBWZXJpZml6aWVydW5nc2NvZGUgYW4gSWhyZSBFLU1haWwtQWRyZXNzZSBnZXNjaGlja3QuIEJpdHRlIMO8YmVycHLDvGZlbiBTaWUgSWhyZW4gUG9zdGVpbmdhbmcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3NSIgbmFtZT0icGFydGljaXBhbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+RGllc2VtIEJlbnV0emVyIGRpZSBNb2RlcmF0aW9uc3JlY2h0ZSBlbnR6aWVoZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3NiIgbmFtZT0icGFydGljaXBhbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+RGllc2VtIEJlbnV0emVyIE1vZGVyYXRvaW9uc3JlY2h0ZSDDvGJlcnRyYWdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzciIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkJlbnV0emVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3OCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+WnVnYW5nIHp1bSBaZWljaGVuYnJldHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc5IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Nb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgwIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Nb2RlcmF0aW9uOiBXw6RobGVuIFNpZSBlaW5lbiBCZW51dHplciBhdXMgZGVyIExpc3RlIHVtIGlobSBkZW4gWnVncmlmZiBhdWYgWmVpY2hlbmJyZXR0LCBNb2RlcmF0aW9uIG9kZXIgVmlkZW8genUgZXJtw7ZnbGljaGVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODEiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkRpZXNlciBCZW51dHplciBpc3QgYmVyZWl0cyBNb2RlcmF0b3IuIEVyIGhhdCBhdXRvbWF0aXNjaCBkYXMgUmVjaHQgenUgemVpY2huZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MiIgbmFtZT0iZXZlbnQgdXNlciBsaXN0IGVycm9yIj4KKyAgICA8dmFsdWU+RGFzIHNpbmQgU2llISBTaWUga8O2bm5lbiBJaHJlIGVpZ2VuZW4gTW9kZXJhdG9ycmVjaHRlIG5pY2h0IGVudGZlcm5lbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgzIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5FcmxhdWJlIGRpZXNlbSBCZW51dHplciBzZWluIFZpZGVvLyBBdWRpbyB6dSB2ZXLDtmZmZW50bGljaGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4NCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QXVkaW8vVmlkZW8gdm9uIGRpZXNlbSBCZW51dHplciBlbnRmZXJuZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg1IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5JY2ggd8O8cmRlIGdlcm5lIGRpZSBNb2RlcmF0aW9uIGRpZXNlcyBSYXVtZXMgw7xiZXJuZWhtZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4NiIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+SWNoIHfDvHJkZSBnZXJuZSBhdWYgZGVtIFplaWNoZW5icmV0dCB6ZWljaG5lbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg3IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5JY2ggd8O8cmRlIGdlcm5lIG1laW4gQXVkaW8vVmlkZW8gbWl0IGFuZGVyZW4gdGVpbGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4OCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+U2llIHNpbmQgZGVyIE1vZGVyYXRvciBkaWVzZXMgUmF1bWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4OSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+SWhuZW4gaXN0IGVzIGVybGF1YnQsIGF1ZiBkZW0gWmVpY2hlbmJyZXR0IHp1IHplaWNobmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5MCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+SWhuZW4gaXN0IGVzIGVybGF1YnQsIElociBBdWRpby9WaWRlbyBtaXQgYW5kZXJlbiB6dSB0ZWlsZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkxIiBuYW1lPSJlcnJvcnR5cGUiPgorICAgIDx2YWx1ZT5OYWNocmljaHQgYW4gZGVuIE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTIiIG5hbWU9ImFwcGx5IGZvciBtb2QgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRlciBCZW51dHplcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTMiIG5hbWU9ImFwcGx5IGZvciBtb2QgbWVzc2FnZSI+CisgICAgPHZhbHVlPnfDvHJkZSBnZXJuZSBkaWUgTW9kZXJhdGlvbiDDvGJlcm5laG1lbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk0IiBuYW1lPSJhcHBseSBmb3Igd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPnfDvHJkZSBnZXJuZSBhdWYgZGVtIFplaWNoZW5icmV0dCB6ZWljaG5lbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk1IiBuYW1lPSI2OTUiPgorICAgIDx2YWx1ZT53w7xyZGUgZ2VybmUgc2VpbiBBdWRpby9WaWRlbyBtaXQgYW5kZXJlbiB0ZWlsZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5NiIgbmFtZT0ibW9kZXJhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2llIG3DvHNzZW4gd2FydGVuIGJpcyBkZXIgTW9kZXJhdG9yIGRlbiBSYXVtIGJldHJpdHQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5NyIgbmFtZT0iY2FsZW5kYXIgYnV0dG9uIj4KKyAgICA8dmFsdWU+QWJicnVjaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTgiIG5hbWU9ImNhbGVuZGFyIGJ1dHRvbiI+CisgICAgPHZhbHVlPlNwZWljaGVybjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTkiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPlRhZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDAiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPk1vbmF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwMSIgbmFtZT0iY2FsZW5kYXIgY29tcG9uZW50Ij4KKyAgICA8dmFsdWU+SmFocjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDIiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5EYXRlaSBob2NobGFkZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAzIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+T3JkbmVyIGhpbnp1ZsO8Z2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwNCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkFrdHVhbGlzaWVyZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA1IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+UGFwaWVya29yYiAoWmllaGVuIFNpZSBlaW5lIERhdGVpIG1pdCBkZXIgTWF1cyBoaWVyaGVyKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDYiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5NZWluZSBEYXRlaWVuIChwZXJzw7ZubGljaGVzIExhdWZ3ZXJrKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDciIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Lb25mZXJlbnpkb2t1bWVudGUgKMO2ZmZlbnRsaWNoZXMgTGF1ZndlcmspPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwOCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkRhdGVpIGhpbnp1ZsO8Z2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwOSIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPk9yZG5lciBoaW56dWbDvGdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTAiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5PcmRuZXIgbMO2c2NoZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzExIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+TmFtZSBiZWFyYmVpdGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPk5ldWVyIE9yZG5lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTMiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5TaW5kIFNpZSBzaWNoZXIsIGRhc3MgU2llIGRpZXNlcyBFbGVtZW50IGzDtnNjaGVuIHdvbGxlbj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE0IiBuYW1lPSJ1c2VyIGFkbWluIj4KKyAgICA8dmFsdWU+U3VjaGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE1IiBuYW1lPSJ1c2VyIGFkbWluIj4KKyAgICA8dmFsdWU+U3VjaGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE2IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+RG9rdW1lbnQgw7ZmZm5lbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTciIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5aZWlnZSBhbGxlIERhdGVpZW4gKEJhdW0gQW5zaWNodCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE4IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+RG9rdW1lbnQgc2NobGllw59lbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTkiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5EYXRlaSBsw7ZzY2hlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjAiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5FcyBpc3QgSWhuZW4gbmljaHQgZ2VzdGF0dGV0IGF1ZiBkZW0gWmVpY2hlbmJyZXR0IHp1IHplaWNobmVuLiBTaWUgbcO8c3NlbiBNb2RlcmF0b3Igc2VpbiBvZGVyIHp1bWluZGVzdCBkYXMgUmVjaHQgYmVzaXR6ZW4gZGFzIFplaWNoZW5icmV0dCB6dSBiZWFyYmVpdGVuLiBTaWUga8O2bm5lbiBkZW4gTW9kZXJhdG9yIG5hY2ggZGVuIFJlY2h0ZW4gZnJhZ2VuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjEiIG5hbWU9InByb3BlcnR5IHBhbmVsIj4KKyAgICA8dmFsdWU+RG9rdW1lbnRlaWdlbnNjaGFmdGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyMiIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+U3RhcnRlIENsaWVudCAoZXh0ZXJuKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjMiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPlN0YXJ0ZSBDbGllbnQgKEhUVFApPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNCIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+RWluIEJlbnV0emVyIHdpbGwgc2VpbmVuIERlc2t0b3AgZnJlaWdlYmVuLiBXb2xsZW4gU2llIGlobiBzZWhlbj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI1IiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5TaWUgaGFiZW4gaWhyZW4gRGVza3RvcCBmcmVpZ2VnZWJlbi4gV2VubiBTaWUgZGllIEZyZWlnYWJlIGJlZW5kZW4gd29sbGVuIGRyw7xja2VuIFNpZSBkaWUgQW5oYWx0ZW4tU2NoYWx0ZmzDpGNoZSBpbSBEZXNrdG9wIFNoYXJlci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI2IiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5HZXRlaWx0ZSBTaXR6dW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNyIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+U2llIGhhYmVuIElocmVuIERlc2t0b3AgYmVyZWl0cyBmcmVpZ2VnZWJlbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI4IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkRlc2t0b3AtQmV0cmFjaHRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjkiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+QmVlbmRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzAiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+RGVza3RvcC1UZWlsZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMxIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkRyw7xja2VuIFNpZSBTdGFydCwgdW0gaWhyZW4gRGVza3RvcCBmcmVpenVnZWJlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzIiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U3RhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMzIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkFuaGFsdGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5Xw6RobGVuIFNpZSBlaW5lbiBCaWxkc2NoaXJtYmVyZWljaCBhdXM6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5CcmVpdGUgw6RuZGVybjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzYiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+RGllIEZyZWlnYWJlIHd1cmRlIGJlZW5kZXQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5Iw7ZoZSDDpG5kZXJuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczOCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5YLUFic3RhbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM5IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlktQWJzdGFuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDAiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+QnJlaXRlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDEiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+SMO2aGU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0MiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5EaWUgVmVyYmluZHVuZyB3dXJkZSB2b20gU2VydmVyIGFiZ2Vicm9jaGVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDMiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+QWJicmVjaGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NCIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5FeHRlcm4gc3RhcnRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDUiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+V2VubiBTaWUgZGllc2UgU2Vzc2lvbiBzY2hsaWXDn2VuLCBrw7ZubmVuIFNpZSBkaWUgU2Vzc2lvbiBuaWNodCB3aWVkZXIgc3RhcnRlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ2IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPlNpdHp1bmcgd2lya2xpY2ggc2NobGllw59lbj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ3IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPkJpbGRzY2hpcm0gdGVpbGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0OCIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5TaXR6dW5nIGF1Zm5laG1lbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDkiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5HZXRlaWx0ZXMgc3VyZmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MCIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPlVwc2EsIC4uLiBGaXJlZm94IHVudGVyIFdpbmRvd3MgaXN0IG5pY2h0IGluIGRlciBMYWdlLCBtYW5nZWxmcmVpZXMgQ28tQnJvd3NpbmcgenUgZ2V3w6RocmxlaXN0ZW4uIEJpdHRlIGJlbnV0emVuIFNpZSBlaW5lbiBhbmRlcmVuIEJyb3dzZXIgdW0gZGllIENvLUJyb3dzaW5nLUZ1bmt0aW9uIHp1IG51dHplbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUxIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+Vm9yaGVyaWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MiIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPk7DpGNoc3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MyIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPk5hY2hsYWRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTQiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5IZWltPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1NSIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPkxhZGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1NiIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPkRpZXNlIFdlYnNlaXRlIGFscyB2b3JnZWdlYmVuZSBXZWJzZWl0ZSB6dSBtZWluZW0gUHJvZmlsIGhpbnp1ZsO8Z2VuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTciIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5UZXN0ZSBTZXR1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTgiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT7DnGJlcnByw7xmZW4gU2llIElocmUgTWlrcm9mb24tIHVuZCBLYW1lcmFlaW5zdGVsbHVuZ2VuIGJldm9yIFNpZSBlaW5lbiBSYXVtIGJldHJldGVuIHVuZCBBdWZ6ZWljaG51bmdlbiBkdXJjaGbDvGhyZW4uIFNpZSBrw7ZubmVuIElocmUgQXVmbmFobWVuIGltIE5hY2hoaW5laW4gYWJzcGllbGVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTkiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5EaWVzZXMgRmVuc3RlciBuaWNodCB3aWVkZXIgYW56ZWlnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYwIiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+QWJicmVjaGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MSIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPkJlZ2lubmUgS29uZmVyZW56PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MiIgbmFtZT0iZWRpdCB2aWRlbyBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk5pY2h0IHdpZWRlciBmcmFnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYzIiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+QXVmbmFobWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY0IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+QWJzcGllbGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NSIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlNpZSBrw7ZubmVuIGF1Y2ggb2huZSBlaW5lbiBUZXN0IGZvcnRmYWhyZW4sIGZhbGxzIFNpZSBiZWFic2ljaHRpZ2VuIElocmUgU3RpbW1lIG9kZXIgSWhyIEJpbGQgbmljaHQgenUgdmVyw7ZmZmVudGxpY2hlbi4gS3Vyc3RlaWxuZWhtZXIgb2huZSBWaWRlbyBvZGVyIEF1ZGlvIGvDtm5uZW4gZGVubm9jaCBkYXMgWmVpY2hlbmJyZXR0IGJlbnV0emVuLCBpaHJlbiBEZXNrdG9wIG1pdCBhbmRlcmVuIHRlaWxlbiBvZGVyIGFtIENoYXQgdGVpbG5laG1lbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY2IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+U3RvcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjciIG5hbWU9Ijc2NyI+CisgICAgPHZhbHVlPkxhdXRzdMOkcmtlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2OCIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPlN0YXJ0IGRyw7xja2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2OSIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPktvbmZlcmVueiBzdGFydGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MCIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPkV2ZW50IHN0YXJ0ZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzcxIiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+UmF1bSB3w6RobGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MiIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPlByw7xmZSBTZXR1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzMiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5TdGFydGUgS29uZmVyZW56PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NCIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPldpZSBzdGFydGUgaWNoIGVpbmUgS29uZmVyZW56PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NSIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlN0YXJ0ZSBBdWZuYWhtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzYiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5BdWRpby0vVmlkZW8tVGVzdCAoQXVmbmFobWUpIHZvciBkZW0gQmV0cmV0ZW4gZWluZXIgS29uZmVyZW56IG5pY2h0IHplaWdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzciIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT7DlmZmZW50bGljaGUgUsOkdW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3OCIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPsOWZmZlbnRsaWNoZSBSw6R1bWUga8O2bm5lbiB2b24gYWxsZW4gQmVudXR6ZXJuIGJlbnV0enQgd2VyZGVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzkiIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT5HcnVwcGVucsOkdW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MCIgbmFtZT0iUHJpdmF0ZSBSb29tcyI+CisgICAgPHZhbHVlPlByaXZhdGUgUsOkdW1lIHNpbmQgbnVyIGbDvHIgQmVudXR6ZXIgaW4gZGVyIHNlbGJlbiBPcmdhbmlzYXRpb24gdmVyZsO8Z2Jhci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgxIiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+UHJpdmF0ZSBSw6R1bWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgyIiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+UsOkdW1lIGluIGRpZXNlbSBCZXJlaWNoIHNpbmQgZsO8ciBkZW4gcGVyc8O2bmxpY2hlbiBCZWRhcmYuIERpZSBSw6R1bWUgaGFiZW4gZWluIFN0YXJ0IHVuZCBFbmRkYXR1bSB1bmQgc3RlaGVuIG51ciBpbiBkaWVzZW0gWmVpdHJhdW0genVyIFZlcmbDvGd1bmcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MyIgbmFtZT0icmVzdHJpY3RlZCByb29tIj4KKyAgICA8dmFsdWU+U2llIG3DvHNzZW4gTW9kZXJhdG9yIHNlaW4sIHVtIGRpZXNlIEFrdGlvbiBhdXN6dWbDvGhyZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NCIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT5Nb2RlcmF0aW9uIGJlYW50cmFnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg1IiBuYW1lPSJtZW51IG9wdGlvbiI+CisgICAgPHZhbHVlPlplaWNoZW5icmV0dCBiZWFudHJhZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NiIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT5XZWJDYW0vTWlrcm9mb24gYmVhbnRyYWdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODciIG5hbWU9ImVycm9yIG1lc3NhZ2Ugc29hcCBzZWN1cmUgbG9naW4iPgorICAgIDx2YWx1ZT5EaWVzZXIgU2Vzc2lvbkhhc2doIHdpcmQgYmVyZWl0cyBnZW51dHp0LiBFciBrYW5uIG5pY2h0IHp3ZWlmYWNoIHZlcmdlYmVuIHdlcmRlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg4IiBuYW1lPSJkYXNoYm9hcmQgYnV0dG9uIj4KKyAgICA8dmFsdWU+U1RBUlQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg5IiBuYW1lPSJleGl0IGNvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT5FWElUPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5MCIgbmFtZT0iY29uZmVyZW5jZSB2aWV3Ij4KKyAgICA8dmFsdWU+V29sbGVuIFNpZSBkaWUgS29uZmVyZW56IHdpcmtsaWNoIHZlcmxhc3Nlbj8gVmllbGxlaWNodCBzb2xsdGVuIFNpZSB6dWVyc3QgRG9rdW1lbnRlLCBaZWljaGVuYnJldHQgdW5kIENoYXQgSGlzdG9yeSBsZWVyZW4uIEFuZGVybmZhbGxzIHdlcmRlbiBkaWUgRGF0ZWllbiBlaW5mYWNoIGluIGRpZXNlbSBSYXVtIGJpcyB6dSBJaHJlbSBuw6RjaHN0ZW4gQmVzdWNoIGJsZWliZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5MSIgbmFtZT0iY29uZmVyZW5jZSB2aWV3Ij4KKyAgICA8dmFsdWU+S29uZmVyZW56IGJlZW5kZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkyIiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT5Sw6R1bWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkzIiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT5Xw6RobGVuIFNpZSBlaW5lbiBSYXVtIGbDvHIgZGllIEtvbmZlcmVueiBhdXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk0IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkVzIGlzdCBlaW4gbmljaHQgZ2VzcGVpY2hlcnRlcyBFdmVudCBpbSBLYWxlbmRlci4gU3BlaWNoZXJuIFNpZSBlcyBvZGVyIGzDtnNjaGVuIFNpZSBlcyB3aWVkZXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5NSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5CaXR0ZSBmw7xnZW4gU2llIG1pbmRlc3RlbnMgZWluZW4gVGVpbG5laG1lciB6dW0gRXZlbnQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5NiIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Tb2xsIGRpZXNlcyBFdmVudCB3aXJrbGljaCBhdXMgZGVtIEthbGVuZGVyIGdlbMO2c2NodCB3ZXJkZW4/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5NyIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5XYXJudW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5OCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5OZXVlcyBFdmVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTkiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGFnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Xb2NoZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDEiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+TW9uYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAyIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkJlc2NocmVpYnVuZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDMiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGVpbG5laG1lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSwgSWhyZSBXZWIgS29uZmVyZW56IFBsYXR0Zm9ybS4gRW50d2VkZXIgc3RhcnRlbiBTaWUgc29mb3J0IGVpbiBNZWV0aW5nIGluZGVtIFNpZSBkZW4gMS0yLTMgQW53ZWlzdW5nZW4gZm9sZ2VuIG9kZXIgU2llIGJlbnV0emVuICJNZWV0aW5ncyBwbGFuZW4iIHVtIGVpbmUgS29uZmVyZW56IHp1IHBsYW5lbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA1IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5Lb25mZXJlbnogcGxhbmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNiIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlVtIGVpbmUgS29uZmVyZW56IHp1IHBsYW5lbiBrw7ZubmVuIFNpZSBlaW5lbiBFdmVudCBpbSBLYWxlbmRlciBoaW56dWbDvGdlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA3IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QnJhdWNoZW4gU2llIEhpbGZlPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDgiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5XZWJpbmFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwOSIgbmFtZT0ibHpjYWxlbmRlciI+CisgICAgPHZhbHVlPlN1Y2hlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMCIgbmFtZT0ibHpjYWxlbmRlciI+CisgICAgPHZhbHVlPk9rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMSIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPkVzIGlzdCBrZWluIEJlbnV0emVyIGF1c2dld8OkaGx0LiBXw6RobGVuIFNpZSB6dWVyc3QgZWluZW4gQmVudXR6ZXIgdW5kIGRyw7xja2VuIGRhbm4gT2suPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMiIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlRlaWxuZWhtZXIgaGluenVmw7xnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEzIiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+U3BlaWNoZXJuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxNCIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPkzDtnNjaGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxNSIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPkV2ZW50IERldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE2IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RGVmYXVsdCBNb2RlcmF0b3JlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5TdXBlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTgiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTkiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyMCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkUtTWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjEiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5OZXVlbiBEZWZhdWx0LU1vZGVyYXRvciBoaW56dWbDvGdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjIiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5Jc3QgU3VwZXItTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyMyIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkluIGVpbmVtIG1vZGVyaWVydGVuIFJhdW0gc2luZCBOdXR6ZXIgbWl0IGRlbiBSb2xsZW4gTGV2ZWwtTW9kZXJhdG9yIG9kZXIgQWRtaW5pc3RyYXRvciBiZWltIEJldHJldGVuIGRlcyBSYXVtcyBhdXRvbWF0aXNjaCBNb2RlcmF0b3Jlbi4gVW0gZGllcyBhYnp1c2NoYWx0ZW4sIHZlcndlbmRlbiBTaWUgZGllIEZ1bmt0aW9uIERlZmF1bHQtTW9kZXJhdG9yLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjQiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EZXIgU3VwZXItTW9kZXJhdG9yIGlzdCBiZWltIEJldHJldGVuIGVpbmVzIFJhdW1zIGltbWVyIE1vZGVyYXRvci4gRGFzIFJlY2h0IGthbm4gaWhtIGltIFJhdW0gbmljaHQgZ2Vub21tZW4gd2VyZGVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjUiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5OdXR6ZXIgU3VwZXItTW9kZXJhdG9ycmVjaHRlIHp1d2Vpc2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPk51dHplciBTdXBlci1Nb2RlcmF0b3JyZWNodGUgYWJlcmtlbm5lbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyOCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPldlbm4gZWluZSBPcmdhbmlzYXRpb24gZWluZW4gUmF1bSB6dWdld2llc2VuIHdpcmQsIGhhYmVuIG51ciBNaXRnbGllZGVyIGRlciBPcmdhbmlzYXRpb24gWnVnYW5nLiAoRGllcyBnaWx0IG51ciB3ZW5uIGRpZSBFaW5zdGVsbHVuZyBpc1B1YmxpYyBhdWYgZmFsc2UgZ2VzZXR6dCB3dXJkZSEpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyOSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPk1vZGVyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODMwIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+QmVncmVuenVuZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzMSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPk9yZ2FuaXNhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzIiIG5hbWU9ImNvbmZpcm0gYWN0aW9uIj4KKyAgICA8dmFsdWU+U2luZCBTaWUgc2ljaGVyPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzMiIG5hbWU9ImNvbmZpcm0gZGVsZXRlIj4KKyAgICA8dmFsdWU+V29sbGVuIFNpZSBkZW4gV2VydCB3aXJrbGljaCBsw7ZzY2hlbj8gTWl0IGRlbSBTcGVpY2hlcm4tQnV0dG9uIMOkbmRlcm4gU2llIGRpZSBFaW50csOkZ2UhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNCIgbmFtZT0idXNlciBjaG9vc2UgZXJyb3IiPgorICAgIDx2YWx1ZT5FcyB3dXJkZSBrZWluIE51dHplciBhdXNnZXfDpGhsdC4gQml0dGUgZXJzdCBhdXN3w6RobGVuLCB1bSBpaG4gaGluenV6dWbDvGdlbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM1IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+TmV1ZW4gRGVmYXVsdC1Nb2RlcmF0b3IgaGluenVmw7xnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM2IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+U29sbCBkaWVzZXIgTnV0emVyIFN1cGVyLU1vZGVyYXRpb24gd2VyZGVuPyBTdXBlci1Nb2RlcmF0b3JlbnJlY2h0ZSBrw7ZubmVuIG5pY2h0IGdlbMO2c2NodCB3ZXJkZW4uIFp1bSBTcGVpY2hlcm4gZGVyIEVpbnN0ZWxsdW5nZW4gbXVzcyBkYXMgUmF1bW9iamVrdCBnZXNwZWljaGVydCB3ZXJkZW4hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNyIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPlNvbGxlbiBkaWUgU3VwZXItTW9kZXJhdG9yZW5yZWNodGUgZsO8ciBkaWVzZW4gTnV0emVyIGF1ZmdlaG9iZW4gd2VyZGVuPyBadW0gU3BlaWNoZXJuIGRlciBFaW5zdGVsbHVuZ2VuIG11c3MgZGFzIFJhdW1vYmpla3QgZ2VzcGVpY2hlcnQgd2VyZGVuITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzgiIG5hbWU9InN1cGVyIG1vZGVyYXRvciI+CisgICAgPHZhbHVlPkRpZXMgaXN0IGVpbiBTdXBlci1Nb2RlcmF0b3IuIFNpZSBrw7ZubmVuIGRpZSBNb2RlcmF0aW9uc3JlY2h0ZSBkZW0gTnV0emVyIG5pY2h0IGVudHppZWhlbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM5IiBuYW1lPSJjb25maXJtIGRlbGV0ZSI+CisgICAgPHZhbHVlPldvbGxlbiBTaWUgd2lya2xpY2ggZGllc2UgRGF0ZWkgb2RlciBPcmRuZXIgbMO2c2NoZW4/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0MCIgbmFtZT0iY29uZmlybSBkZWxldGUiPgorICAgIDx2YWx1ZT5EYXRlaS9PcmRuZXIgbMO2c2NoZW4/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0MSIgbmFtZT0ic2FsdXRhdGlvbiI+CisgICAgPHZhbHVlPkZyw6R1bGVpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDIiIG5hbWU9InNhbHV0YXRpb24iPgorICAgIDx2YWx1ZT5Eci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQzIiBuYW1lPSJwcm9wZXJ0eSBwYW5lbCB3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+RWluc3RlbGx1bmdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDQiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5UZWlsbmVobWVybiBNYXVzemVpZ2VyIGFuemVpZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NSIgbmFtZT0icHVibGlzaCBvcHRpb24iPgorICAgIDx2YWx1ZT5BdWRpbyBtaXQgU0lQIEFwcGxldCDDvGJlcnRyYWdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDYiIG5hbWU9InB1Ymxpc2ggb3B0aW9uIj4KKyAgICA8dmFsdWU+QXVkaW8gbWl0IFNJUCBhdWQgVmlkZW8gbWl0IEZsYXNoIMO8YmVydHJhZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NyIgbmFtZT0iZG9jdW1lbnQgcGFuZWwiPgorICAgIDx2YWx1ZT5Wb2xsZm9ybWF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0OCIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+QmlsZHNjaGlybSB6ZWlnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ5IiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5EZXIgTnV0emVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MCIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+bcO2Y2h0ZSBkZW4gQmlsZHNjaGlybSDDvGJlcnRyYWdlbi4gV29sbGVuIFNpZSBpaG4gc2VoZW4/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MSIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+U2NobGllw59lbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTIiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5ab29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MyIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPkRpZSBTaXR6dW5nIHd1cmRlIHZvbSDDvGJlcnRyYWdlbmRlbiBOdXR6ZXIgZ2VzY2hsb3NzZW4hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1NCIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPlBhdXNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1NSIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPk5ldWVyIERlc2t0b3AgdmVyZsO8Z2JhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTYiIG5hbWU9InByZXNlbnRlciBtaW5pIGljb24iPgorICAgIDx2YWx1ZT5NaW5pbWllcmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1NyIgbmFtZT0icHJlc2VudGVyIG1pbmkgaWNvbiI+CisgICAgPHZhbHVlPk1heGltaWVyZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU4IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5WaWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTkiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlZpZGVvIFplaXRzcHVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TWVpbmUgQXVmbmFobWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+w5ZmZmVudGxpY2hlIEF1Zm5haG1lbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjIiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkluZm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYzIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TMOkbmdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RGF0dW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Wb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY3IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Eb3dubG9hZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjgiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkhhdXB0IC0gVmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY5IiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5BdWZuYWhtZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcwIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5TaWUga8O2bm5lbiBnbGVpY2h6ZWl0aWcgaWhyZW4gQmlsZHNjaGlybSB0ZWlsZW4gb2RlIGRpZSBrb21wbGV0dGUgU2Vzc2lvbiBhdWZuZWhtZW4uIFdlbm4gU2llIG51ciBkZW4gQmlsZHNjaGlybSB0ZWlsZW4gd29sbGVuIGdlbsO8Z3QgZXNhdWYgU3RhcnQgenUgZHLDvGNrZW4uIERpZSBmZXJ0aWdlIEF1Zm5haG1lIGJlZmluZGV0IHNpY2ggYmVpIGRlbiBhbmRlcmVuIEF1Zm5haG1lbiBpbSDDtmZmZW50bGljaGVuIE9yZG5lci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcxIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5BdWZuYWhtZSBzdGFydGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3MiIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+QXVmbmFobWUgc3RvcHBlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzMiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkRvd25sb2FkIEZMVi1EYXRlaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzQiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlJhdW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc1IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5BYnNwaWVsZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TdG9wcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzciIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlRlaWxuZWhtZXIgaGF0IGRhcyBNaWtyb2ZvbiBhbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+QmlsZHNjaGlybSB0ZWlsZW4gc3RvcHBlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzkiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+QmVudXR6ZXJmcmFnZW4gZXJsYXViZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgwIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPldlbm4gU2llIGRpZXNlIE9wdGlvbiBha3RpdmllcmVuIGlzdCBkaWUgU2NoYWx0ZmzDpGNoZSB6dW0gYmVhbnRyYWdlbiBkZXIgTW9kZXJhdGlvbiBmw7xyIGFuZGVyZSBUZWlsbmVobWVyIG5pY2h0IHNpY2h0YmFyIHVuZCBTaWUgd2VyZGVuIG5pY2h0IGluIGlocmVtIFZvcnRyYWcgZ2VzdMO2cnQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MSIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5SZWNodGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgyIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Eb3dubG9hZCBBVkk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgzIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5GTFY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg0IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5BVkk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg1IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5SYXcgU2NyZWVudmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5OdXIgQXVkaW8gbnVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RXMgZ2FiIEZlaGxlciBiZWltIFZlcmFyYmVpdGVuIGRlciBBdWZ6ZWljaG51bmcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4OCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RGllIEF1ZnplaWNobnVuZyBpc3Qgbm9jaCBuaWNodCB6dXIgV2llZGVyZ2FiZSBiZXJlaXQuIFZlcnN1Y2hlbiBTaWUgZXMgaW4gZWluaWdlbiBNaW51dGVuIGVybmV1dC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg5IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Mb2c6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UmVjb3JkZXIgTmFjaHJpY2h0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+T2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkyIiBuYW1lPSJzaXAgYXBwbGV0Ij4KKyAgICA8dmFsdWU+U0lQIEFwcGxldCBpc3QgbmljaHQgYmVyZWl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MyIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNJUC1BY2NvdW50IEVpbnN0ZWxsdW5nZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk0IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+U0lQIEVpbnN0ZWxsdW5nZW4gZsO8ciBqZWRlbiBOdXR6ZXIuIERlLUFrdGl2aWVyZW4gU2llIFNJUCDDvGJlciBBZG1pbmlzdHJhdGlvbiAmZ3Q7IEtvbmZpZ3VyYXRpb24gKEtleTogZW5hYmxlX3NpcCkuIERpZSBTSVAgRGF0ZW4gZsO8ciBqZWRlbiBOdXR6ZXIgc29sbHRlbiBhdXRvbWF0aXNjaCBnZW5lcmllcnQgd2VyZGVuLiBTaWUga8O2bm5lbiBkaWVzZSBuZXUgZXJzdGVsbGVuIGxhc3NlbiDDvGJlciBkaWUgRnVua3Rpb24gIlJlLUdlbmVyYXRlL1dpZWRlciBIZXJzdGVsbGVuIGRlciBTSVAgRGF0ZW4iPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NSIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNJUC1OdXR6ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk2IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+U2lwLVBhc3N3b3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NyIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNpcC1BdXRoLUlkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5OCIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGVyIExvZ2luIHp1bSBTSVAgR2F0ZXdheSBpc3QgZmVobGdlc2NobGFnZW4uIFByw7xmZW4gU2llIGRpZSBBdXRoZW50aWZpemllcnVuZ3NkYXRlbiB6dW0gU0lQLVByb3ZpZGVyIHVuZCBkaWUgU0lQLUFjY291bnQgRGF0ZW4gZsO8ciBqZWRlbiBOdXR6ZXIuIEFscyBBZG1pbmlzdHJhdG9yIGvDtm5uZW4gU2llIHNpY2ggZW5sb2dnZW4gdW5kIGRpZSBLb25maWd1cmF0aW9uIMO8YmVycHLDvGZlbi4gTnVyIE51dHplciB1bmQgTW9kZXJhdG9yZW4gc2luZCBkZXJ6ZWl0IHZvbiBkZW4gQWt0aW9uZW4gYXVzZ2VzY2hsb3NzZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5OSIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGVyIExvZ2luIHp1bSBTSVAgR2F0ZXdheSBpc3QgZmVobGdlc2NobGFnZW4uIEtvbnRha3RlbiBTaWUgZGFzIFNlcnJ2aWNlVGVhbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAwIiBuYW1lPSJzaXAgc3RhdHVzIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BbSBTSVAtR2F0ZXdheSBlaW5sb2dnZW4uLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAxIiBuYW1lPSJzaXAgc3RhdHVzIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BbSBTSVAtR2F0ZXdheSBlaW5sb2dnZW4gLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwMiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TG9nIGFuemVpZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwMyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TG9nLU1pdHRlaWx1bmdlbiBmcsO8aGVyZXIgQXVmemVpY2hudW5nZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA0IiBuYW1lPSJzaXAgbG9naW4iPgorICAgIDx2YWx1ZT5TSVAtQXBwbGV0IE1pdHRlaWx1bmdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDUiIG5hbWU9InNpcCBsb2dpbiI+CisgICAgPHZhbHVlPkRhcyBTSVAtQXBwbGV0IGlzdCBuaWNodCBiZXJlaXQuIEFwcGxldCBiaXR0ZSBiZXN0w6R0aWdlbiB1bmQgZGFubiAnT0snIGtsaWNrZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwNiIgbmFtZT0ibW9kZXJhdG9yIHBvcCB1cCI+CisgICAgPHZhbHVlPk1vZGVyYXRpb24gYmVrb21tZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA3IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGVybWluw6RuZGVydW5nZW4gc3BlaWNoZXJuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwOCIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPkRlciBUZXJtaW4gd3VyZGUgZ2XDpG5kZXJ0LiBXb2xsZW4gU2llIGRpZSDDhG5kZXJ1bmdlbiBudW4gc3BlaWNoZXJuPyAmbHQ7YnIvJmd0OyZsdDtici8mZ3Q7QWxsZSBUZWlsbmVobWVyIGRlcyBUZXJtaW5zIGVyaGFsdGVuIG51biBlaW5lIEJlbmFjaHJpY2h0aWd1bmcgcGVyIEUtTWFpbCBtaXQgZGVuIG5ldWVuIERhdGVuIChhYmjDpG5naWcgdm9tIEJlbmFjaHJpY2h0aWd1bmdzdHlwKS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA5IiBuYW1lPSJmbHYgcmVjb3JkZXIgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPlp1Z3JpZmYgenUgYW5kZXJlbiBBdWZ6ZWljaG51bmdlbiDDvGJlciAkQVBQX05BTUUgQXBwbGljYXRpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMCIgbmFtZT0iaW50ZXJ2aWV3IHZpZGVvIHBvZCI+CisgICAgPHZhbHVlPk51dHplciBmw7xyIGRpZXNlcyBWaWRlbyBhdXN3w6RobGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMSIgbmFtZT0iaW50ZXJ2aWV3IHZpZGVvIGNob29zZSB1c2VyIj4KKyAgICA8dmFsdWU+VmVyZsO8Z2JhcmUgTnV0emVyIGbDvHIgZGllc2VzIFBvZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTIiIG5hbWU9ImludGVydmlldyBpbmZvIj4KKyAgICA8dmFsdWU+U2llIHNpbmQgTW9kZXJhdG9yIGRpZXNlcyBJbnRlcnZpZXcuIFNpZSBsZWdlbiBkaWUgU3ByZWNoZXIgZmVzdCB1bmQga8O2bm5lbiBkaWUgQXVmemVpY2hudW5nIHN0YXJ0ZW4gdW5kIHN0b3BwZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMyIgbmFtZT0iaW50ZXJ2aWV3IGJ1dHRvbiByZWNvcmRpbmciPgorICAgIDx2YWx1ZT5BdWZ6ZWljaG51bmcgc3RhcnRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTQiIG5hbWU9ImludGVydmlldyBidXR0b24gcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QXVmemVpY2hudW5nIHN0b3BwZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE1IiBuYW1lPSJpbnRlcnZpZXcgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRpZSBJbnRlcnZpZXdhdWZ6ZWljaHVuZyB3dXJkZSBiZXJlaXRzIGdlc3RhcnRldC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE2IiBuYW1lPSJpbnRlcnZpZXcgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRpZSBBdWZ6ZWljaHVuZyB3dXJkZSBiZXJlaXRzIGdlc3RvcHB0IG9kZXIgbm9jaCBuaWNodCBnZXN0YXJ0ZXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxNyIgbmFtZT0iaW50ZXJ2aWV3IHJlY29yZGluZyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGllIEF1ZnplaWNobnVuZyBkZXMgSW50ZXJ2aWV3cyB3dXJkZSBiZXJlaXRzIGdlc3RhcnRldC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE4IiBuYW1lPSJpbnRlcnZpZXcgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFiYnJlY2hlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTkiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGllIE5hY2hiZWFyYmVpdHVuZyBlaW5lcyBJbnRlcnZpZXcgYmVuw7Z0aWd0IGbDvG5mIE1pbnV0ZW4gZsO8ciBqZWRlIGF1ZmdlemVpY2huZXRlIE1pbnV0ZS4gRGllIEFuemVpZ2UgemVpZ3QgZGVuIEZvcnRzY2hyaXR0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjAiIG5hbWU9InNpcCBjcmVhdGlvbiI+CisgICAgPHZhbHVlPlNpZSBtw7xzc2VuIGRhcyBQYXNzd29ydCBlcm5ldXQgZWluZ2ViZW4sIHVtIFNJUCBEYXRlbiBhdXRvbWF0aXNjaCB6dSBlcnpldWdlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIxIiBuYW1lPSJzaXAgY3JlYXRpb24iPgorICAgIDx2YWx1ZT5TSVAgRGF0ZW4gbmV1IGVyemV1Z2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyMiIgbmFtZT0iZmlsZWV4cGxvcmVyIj4KKyAgICA8dmFsdWU+U2llIGvDtm5uZW4gZGllIERhdGVpIG9kZXIgT3JkbmVyIG5pY2h0IGluIGVpbmVuIGVpZ2VuZW4gVW50ZXJvcmRuZXIgdmVyc2NoaWViZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyMyIgbmFtZT0iZmlsZSBleHBsb3JlciAiPgorICAgIDx2YWx1ZT5HcsO2w59lIEhvbWV2ZXJ6ZWljaG5pczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjQiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5HcsO2w59lIMO2ZmZlbnRsaWNoZXMgVmVyemVpY2huaXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI1IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+TGl6ZW56ZWluc3RlbGx1bmdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjYiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5NaXQgZGVyIExpemVuemFrdGl2aWVydW5nIGvDtm5uZW4gU2llIGVpbiBBYmxhdWZkYXR1bSBvZGVyIGVpbmUgSMO2Y2hzdG51dHp1bmdzemVpdCAoTWludXRlbikgZsO8ciBOdXR6ZXIgZmVzdGxlZ2VuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjciIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5MaXplbnogcHLDvGZlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjgiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5GbGF0cmF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjkiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5BYmxhdWZkYXR1bTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzAiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5WZXJicmF1Y2h0ZSBTZWt1bmRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzEiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5HZXNhbXR6ZWl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+SWhyZSBMaXplbnogaXN0IGFiZ2VsYXVmZW4uIFNpZSBrw7ZubmVuIHdlaXRlcmUgTWludXRlbiAoKFBheS1wZXItbWludXRlKSBvZGVyIGVpbmUgRmxhdGF0ZSBlcndlcmJlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMzIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5DbGljay1hbmQtYnV5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzNCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+UmVzdHplaXQgZsO8ciBBY2NvdW50OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzUiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPk51dHplcmxpemVuemluZm9ybWF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzNiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+SW5mbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzciIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlNjaGxpZcOfZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM4IiBuYW1lPSJsaWNlbnNlLWluZm8iPgorICAgIDx2YWx1ZT5JaHJlIExpemVueiBpc3QgYWJnZWxhdWZlbi4gU2llIGvDtm5uZW4gd2VpdGVyZSBNaW51dGVuICgoUGF5LXBlci1taW51dGUpIG9kZXIgZWluZSBGbGF0YXRlIGVyd2VyYmVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzkiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkxpemVuemVpbnN0ZWxsdW5nZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQwIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5TaWUga8O2bm5lbiBlbnR3ZWRlciBOdXR6dW5nc3plaXQgZsO8ciBXZWJrb25mZXJlbnplbiAoUGF5LXBlci1taW51dGUpLiZsdDtici8mZ3Q7Jmx0O2JyLyZndDsgb2RlciBlaW5lIFZvbHVtZW5mbGF0cmF0ZSBmw7xyIDMtMTIgTW9uYXRlIGVyd2VyYmVuLiAmbHQ7YnIvJmd0OyZsdDtici8mZ3Q7RGVyIFZlcnNhbmQgdm9uIEVpbmxhZHVuZ2VuIG1pdCBkaXJla3RlbSBMaW5rIHp1bSBLb25mZXJlbnpyYXVtIG9kZXIgZGFzRXJzdGVsbGVuIHZvbiBLb25mZXJlbnpyw6R1bWVuIG1pdHRlbHMgS2FsZW5kZXIgZsO8ciBleHRlcm5lIE51dHplciBpc3QgbnVyIG1pdCBlaW5lciBWb2x1bWVuZmxhdHJhdGUgenVsw6Rzc2lnLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDEiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPjYwIE1pbnV0ZW4gOSw5OSBFVVJPICgxNiBDZW50IHBybyBNaW51dGUpIGthdWZlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDIiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPjUgU3R1bmRlbiAxOSw5OSBFVVJPICg2IENlbnQgcHJvIE1pbnV0ZSkga2F1ZmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+MyBNb25hdGUgZsO8ciAyOSw5OSBFVVJPICg5LDk5IEV1cm8gcHJvIE1vbmF0KSBrYXVmZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ0IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT42IE1vbmF0ZSBmw7xyciAzOSw5OSBFVVJPICg2LDY2IEV1cm8gcHJvIE1vbmF0KSBrYXVmZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ1IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5QYXktcGVyLW1pbnV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDYiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlZvbHVtZW5mbGF0cmF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDciIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlNpZSBoYWJlbiBlaW5lIHVuYmVncmVuenRlIExpemVuejwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDgiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkFibGF1ZmRhdHVtIElocmVyIExpemVuejo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ5IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5TaWUgbnV0emVuIGRhcyBQYXktcGVyLW1pbnV0ZS1Nb2RlbGwuIFNpZSBoYWJlbiBub2NoOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTAiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPk5ldWUgZWlua2F1ZmVuITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTEiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPldvbGxlbiBTaWUgZWluZW4gZWlnZW5lbiBTZXJ2ZXI/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+U2llIHfDvG5zY2hlbiAkQVBQX05BTUUgYWxzIGVpZ2Vuc3TDpG5kaWdlIEluc3RhbGxhdGlvbiBvZGVyIGludGVncmllcnQgaW4gTW9vZGxlLCBTdWdhckNSTSwgV2Vic2l0ZSBvZGVyIEludHJhbmV0PyBCZWdpbm5lbiBTaWUgYWIgNTAwIEV1cm8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+T2RlciBzZW5kZW4gU2llIHVucyBlaW5lIE5hY2hyaWNodDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTQiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkFudHdvcnQgYW46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1NSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+TmFjaHJpY2h0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTYiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlNlbmRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTciIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPktvbnRha3RpbmZvcm1hdGlvbmVuIHVuZCBQcmVpc2U/IEtsaWNrZW4gU2llIGhpZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU4IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5LcmVkaXRrYXJ0ZW5kZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1OSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Vm9ybmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjAiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPk5hY2huYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2MSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+S3JlZGl0a2FydGVudHlwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2MiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+VklTQSBLYXJ0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjMiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPk1hc3RlckNhcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY0IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5EaXNjb3ZlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjUiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkFtZXJpY2FuIEV4cHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY2IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5LcmVkaXRrYXJ0ZW5udW1tZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY3IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5BYmxhdWZkYXR1bTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjgiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkthcnRlbnByw7xmbnVtbWVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2OSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+UmVjaG51bmdzYW5zY2hyaWZ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+QWRyZXNzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzEiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzIiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlN0YWR0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MyIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+TGFuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzQiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlN0YWF0IChudXIgVVMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+UExaPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+QmV0cmFnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NyIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+QWJzY2hpY2tlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzgiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlNjaHJpdHQgMTogJEFQUF9OQU1FIC0gWmFobHVuZ3Nmb3JtdWxhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzkiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkUtTWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODAiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPktsaWNrZW4gU2llIGF1ZiAiWmFobGVuIG1pdCBQYXlwYWwiLiZsdDtici8mZ3Q7IFBheXBhbCBha3plcHRpZXJ0IFZJU0EsIE1hc3RlckNhcmQsIERpc2NvdmVyIG9kZXIgQW1lcmljYW4gRXhwcmVzcy4gJmx0O2JyLyZndDtTaWUgbcO8c3NlbiBzaWNoIGRhenUgbmljaHQgYmVpIFBheXBhbCByZWdpc3RyaWVyZW4uICZsdDtici8mZ3Q7TnV0emVyIGF1cyBEZXV0c2NobGFuZCBrw7ZubmVuIGF1Y2ggcGVyIExhc3RzY2hyaWZ0LUVpbnp1ZyB6YWhsZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+VmllbGVuIERhbmsgZsO8ciBJaHJlbiBFaW5rYXVmIHZvbiAkQVBQX05BTUUuICZsdDtici8mZ3Q7ICZsdDtici8mZ3Q7IFNvYmFsZCBkaWUgWmFobHVuZyBiZWkgdW5zIGVpbmdldHJvZmZlbiBpc3Qgd2lyZCBJaHIgQWNjb3VudCBha3R1YWxpc2llcnQuJmx0O2JyLyZndDsgU2llIGVyaGFsdGVuIGVpbmUgRS1NYWlsIG1pdCBJaHJlciBSZWNobnVuZyBhbHMgUERGLiZsdDtici8mZ3Q7RGllIGFrdHVlbGxlIHVuZCBmcsO8aGVyZSBUcmFuc2FrdGlvbmVuIHNpbmQgaW4gSWhyZW4gUHJvZmlsZWluc3RlbGx1bmdlbiBkb2t1bWVudGllcnQuJmx0O2JyLyZndDsmbHQ7YnIvJmd0OyZsdDtici8mZ3Q7U2llIGvDtm5uZW4gZGllc2VzIGJyb3dzZXJmZW5zdGVyL2RlbiBUYWIgbnVuIHNjaGxpZcOfZW4gdW5kIHp1ICRBUFBfTkFNRSB6dXLDvGNra2VocmVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODIiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkFic2NoaWNrZW4gS2F1ZiBiZXN0w6R0aWdlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgzIiBuYW1lPSJwYXltZW50LWZyb20iPgorICAgIDx2YWx1ZT5DbGljayBhbmQgQnV5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODQiIG5hbWU9InBheW1lbnQtZnJvbSI+CisgICAgPHZhbHVlPlNjaHJpdHQ6ICRBUFBfTkFNRSBCZXphaGx1bmcgLSBCZXN0ZWxsdW5nIHByw7xmZW4gdW5kIGthdWZlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg1IiBuYW1lPSJwYXltZW50LWZyb20iPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4NiIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+WmFobHVuZyBlcmhhbHRlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg3IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5HdXRlbiBUYWcsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4OCIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4OSIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+VmllbGVuIERhbmsgZsO8ciBkaWUgTnV0enVuZyB2b24gJEFQUF9OQU1FITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTAiIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPlphaGx1bmcgZXJoYWx0ZW4gJEFQUF9OQU1FIC08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkxIiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+WmFobHVuZ2VuIHVuZCBUcmFuc2FrdGlvbnNzdGF0dXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkyIiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+VHJhbnNha3Rpb25zLUhhc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkzIiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+TWludXRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTQiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Nb25hdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk1IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+RVVSPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NiIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPlN0YXR1czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTciIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5SZWNobnVuZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTgiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk5IiBuYW1lPSJlcnJvci1saWNlbnNlLWZsYXQiPgorICAgIDx2YWx1ZT5adW0gVmVyc2FuZCB2b24gRWlubGFkdW5nZW4gb2RlciB6dXIgRXJzdGVsbHVuZyB2b24gU2l0enVuZ2VuIMO8YmVyIGRlbiBLYWxlbmRlciBiZW7DtnRpZ2VuIFNpZSBlaW5lIFZvbHVtZW5mbGF0cmF0ZS4gTWl0IFBheS1wZXItbWludXRlIFRhcmlmZW4ga8O2bm5lbiBTaWUgc2VsYmVyIGRhcyBBbmdlYm90IHZvbiAkQVBQX05BTUUgbnV0emVuLCBuaWNodCBhYmVyIERyaXR0ZSB6dXIgVGVpbG5haG1lIGFuIGVpbmVtIE1lZXRpbmcgZWlubGFkZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDAiIG5hbWU9ImVycm9yIHVzZXIiPgorICAgIDx2YWx1ZT5EaWVzZSBFLU1haWwtQWRyZXNzZSB3aXJkIGJlcmVpdHMgZHVyY2ggZWluZW4gYW5kZXJlbiBOdXR6ZXIgdmVyd2FuZHQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDEiIG5hbWU9InJvb20tYWRtaW4iPgorICAgIDx2YWx1ZT5TSVAtRWluc3RlbGx1bmdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAyIiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+RGllIEtvbmZlcmVuem51bW1lciB1bmQgUElOIGlzdCBhdXRvbWF0aXNjaCDDvGJlciBkYXMgT3BlblhHIFJQQy1HYXRld2F5IGVyc3RlbGx0IHdvcmRlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwMyIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlNJUCBOdW1tZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNCIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlBJTjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA1IiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+TnVyIGF1ZiBha3R1ZWxsZXIgU2VpdGUgbMO2c2NoZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDYiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5OdXIgZGllIFVSTCBkZXIgU3RhdHVzYW56ZWlnZSB3aXJkIGFuIFRlaWxuZWhtZXIgdmVyc2FuZHQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtcsOkdW1lIFtCcmVha291dCBzZXNzaW9uXSBlcnN0ZWxsZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk51dHplciBmw7xyIG5ldWVuIFRlYW1yYXVtIGF1c3fDpGhsZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlNpZSBrw7ZubmVuIG51biBUZWlsbmVobWVyIGF1c3fDpGhsZW4gdW5kIGbDvHIgZGllc2UgZWluZW4gS29uZmVyZW56cmF1bSAoVGVhbXJhdW0pIGFubGVnZW4uIERpZSBhdXNnZXfDpGhsdGVuIFRlaWxuZWhtZXIgd2VyZGVuIGRpcmVrdCBpbiBkZW4gUmF1bSB2ZXJzY2hvYmVuIG9kZXIgYmVuYWNocmljaHRpZ3QuIE1vZGVyYXRlb3JlbiBpbiBkZW4gVGVhbXLDpHVtZW4gZXJoYWx0ZW4gZWluZSBMaXN0ZSBpaHJlciBha3R1ZWxsZW4gUsOkdW1lLCB1bSB6d2lzY2hlbiBkaWVzZW4genUgd2VjaHNlbG4gZmFsbHMgZWluIE1vZGVyYXRvciBiZW7DtnRpZ3Qgd2lyZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk51dHplcm5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkxvZ2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk51dHplciBmw7xyIG5ldWVuIFRlYW1ycmF1bTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW1yYXVtIGFubGVnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkFiYnJlY2hlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+V8OkaGxlbiBTaWUgenVtaW5kZXN0IGVpbmVuIE51dHplciBmw7xyIGRlbiBUZWFtcmF1bTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+SW4gVGVhbSBlaW5mw7xnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkF1cyBUZWFtcmF1bSBhdXN0cmFnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk51dHplciBoYXQgTW9kZXJhdG9yZW5yb2xsZSBpbSBUZWFtcmF1bS4gRXIgaXN0IHp1ciBWZXJ3YWx0dW5nIGRlcyBUZWFtcmF1bXMgYmVyZWNodGlndCB1bmQga2FubiBUZWlsbmVobWVyIHp1bGFzc2VuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+UmF1bXR5cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+V2VubiBTaWUgIldlY2hzZWxuIGluIG5ldWVuIFRlYW1yYXVtIGVyendpbmdlbiIgYW5rbGlja2VuIGVyZGVuIGFsbGUgTnV0emVyIGF1dG9tYXRpc2NoIGluIGRpZXNlbiBSYXVtIMO8YmVydHJhZ2VuLiBBbmRlcm5mYWxscyBlcmhhbHRlbiBzaWUgZWluZSBCZW5hY2hyaWNodGlndW5nIG1pdCBlaW5lbSBCdXR0b24gdW5kICZsdDtpJmd0O2vDtm5uZW4mbHQ7L2kmZ3Q7IHfDpGhsZW4sIG9iIHNpZSBpbiBkZW4gbmV1ZW4gUmF1bSB3ZWNoc2VsbiB3b2xsZW4uIFRlYW1tb2RlcmF0b3JlbiBoYWJlbiBpbW1lciBkaWUgV2FobCB6dSBlbnRzY2hlaWRlbixvYiBzaWUgd2VjaHNlbG4gd29sbGVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVhbXLDpHVtZSB2ZXJ3YWx0ZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkFscyBUZWFtcmF1bW1vZGVyYXRvciBrw7ZubmVuIFNpZSB6d2lzY2hlbiBhbGxlbiBSw6R1bWVuIHdlY2hzZWxuLCBkZW5lbiBTaWUgenVnZXdpZXNlbiB3dXJkZW4uIFRlaWxuZWhtZXIgaW4gVGVhbXLDpHVtZW4ga8O2bm5lbiBJaG5lbiBlaW5lIE5hY2hyaWNodCBzZW5kZW4sIHV6LkIuIHVtIFNpZSB6dSBiaXR0ZW4gSWhuZW4gYmVoaWxmbGljaCB6dSBzZWluLiBTaWUga8O2bm5lbiBkaWUgVGVhbXLDpHVtZSBhdWNoIGJlc2NocsOkbmtlbiB1bmQgTnV0emVyIGF1c2xvZ2dlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPldlY2hzZWxuIGluIG5ldWVuIFRlYW1yYXVtIGVyendpbmdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+RXJzdGVsbHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5WZXJmw7xnYmFyZSBOdXR6ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk1pdCBQbHVzemVpY2hlbiBOdXR6ZXIgaGluenVmw7xnZW47IG1pdCBLcmV1eiBhdXN0cmFnZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4xLiBUZWFtcmF1bWVpbnN0ZWxsdW5nZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjIuIE51dHplciB6dSBUZWFtcmF1bSBoaW56dWbDvGdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGl0ZWwgVGVhbXJhdW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW1yYXVtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5JbiBSYXVtIHdlY2hzZWxuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5JbiBkaWVzZW4gVGVhbXJhdW0gd2VjaHNlbG48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW1yYXVtIHNjaGxpZcOfZW4gdW5kIGFsbGUgTnV0emVyIGF1c2xvZ2dlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TmV1ZXIgVGVhbXJhdW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkVpbiBuZXVlciBUZWFtcmF1bSB3dXJkZSBmw7xyIFNpZSBhbmdlbGVndC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkluIFRlYW1yYXVtIHdlY2hzZWxuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtcmF1bWFrdGlvbmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5TaWUga8O2bm5lbiBkaWVzZXMgRmVuc3RlciBlcm5ldXQgw7ZmZm5lbiDDvGJlciBkYXMgSGF1cHRtZW51ICZndDsgQWt0aW9uZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5NaXR0ZWlsdW5nIGFuIFRlYW1yYXVtbW9kZXJhdG9yIHZlcnNlbmRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQ0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TmV1ZXIgVGVhbXJhdW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkVpbiBuZXVlciBUZWFtcmF1bSBzdGVodCB6dXIgVmVyZsO8Z3VuZy4gU2llIGvDtm5uZW4gbnVuIGluIGRpZXNlbiBSYXVtIHdlY2hzZWxuLiBUZWFtcsOkdW1lIHNpbmQgQmVyZWljaGUgZsO8ciBBcmJlaXRzZ3J1cHBlbi4gU2llIGhhYmVuIHp1c8OkdHpsaWNoIGRpZSBNw7ZnbGljaGtlaXQsIGVpbmVuIE1vZGVyYXRvciB1bSBIaWxmZSB6dSBiaXR0ZW4uIERlciBUZWFtcmF1bSB3aXJkIGlobmVuIGF1Y2ggaW4gZGVyIMOcYmVyc2ljaHQgIk1laW5lIE1lZXRpbmdzIiBhbmdlemVpZ3QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5JbiBUZWFtcmF1bSB3ZWNoc2VsbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQ3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+RXJzdGVsbHR2b246PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5OYW1lIGRlcyBUZWFtcmF1bXM6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5EaWVzZXMgRmVuc3RlciBibGVpYnQgb2ZmZW4gYXVjaCB3ZW5uIFNpZSBkZW4gVGVhbXJhdW0gdmVybGFzc2VuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TnV0emVyIGRpZXNlcyBUZWFtcmF1bXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1MSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjMuIEFuZGVyZSBUZWFtcsOkdW1lIGF1ZiBkaWUgU2llIFp1Z3JpZmYgaGFiZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1MiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW1tb2RlcmF0b3IgTmFjaHJpY2h0IHNlbmRlbi4gTnV0emVuIFNpZSBkaWVzZSBNw7ZnbGljaGtlaXQgZmFsbHMgU2llIEhpbGZlIGJlbsO2dGlnZW4gb2RlciBlaW5lIEZyYWdlIGhhYmVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U2VuZGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4yLiBFaW5nZWxhZGVuZSBOdXR6ZXIgZsO8ciBkaWVzZW4gVGVhbXJhdW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1NSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPmlzdCBUZWFtcmF1bW1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+QWxsZSB2b20gTW9kZXJhdG9yIGVpbmdlbGFkZW5lbiBOdXR6ZXIgZsO8ciBkaWVzZW4gVGVhbXJhdW0uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5adXIgWmVpdCBpc3Qga2VpbiBUZWFtbW9kZXJhdG9yIGVpbmdlbG9nZ3QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5CaXR0ZSBOYWNocmljaHQgZWludHJhZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5CaXR0ZSBoZWxmZW4gU2llIHVucy4gV2lyIGhhYmVuIGVpbiBQcm9ibGVtIGltIFRlYW1yYXVtLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+RWluIE51dHplciBkZXMgVGVhbXJhdW1zIGJpdHRldCBTaWUgdW0gVW50ZXJzdMO8dHp1bmcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtcmF1bSBVbnRlcnN0w7x0enVuZ3NhbmZyYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5NaXR0ZWlsdW5nOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Vm9uOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U2llIGJlZmluZGVuIHNpY2ggZGVyemVpdCBpbiBrZWluZW0gVGVhbXJhdW0uIFZvbiBoaWVyIGF1cyBrw7ZubmVuIFNpZSBpbiBqZWRlbiBUZWFtcmF1bSB3ZWNoc2VsbiBhdWYgZGVuIFNpZSBadWdyaWZmIGhhYmVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY1IiBuYW1lPSJiYWNrdXBDb250ZW50Ij4KKyAgICA8dmFsdWU+U3lzdGVtYmFja3VwLiBEYXMgQmFja3VwIHNjaGxpZcOfdCBhbGxlIHZvbiBOdXR6ZXJuIGVyemV1Z3RlbiBEYXRlbiBlaW4uIERpZSBLb25maWd1cmF0aW9uIHdpcmQgbmljaHQgaW5zIEJhY2t1cCBlaW5iZXpvZ2VuLCBkYSBkaWVzZSBEYXRlbiBtaXQgZGVyIFN5c3RlbWluc3RhbGxhdGlvbiBlcnN0ZWxsdCB3ZXJkZW4uIFp1bSBVcGRhdGUgZGVzIFN5c3RlbXMgZXhwb3J0aWVyZW4gU2llIGRhcyBhbHRlIFN5c3RlbSAoMSksIGluc3RhbGxpZXJlbiBTaWUgZGFzIG5ldWUgU3lzdGVtcGFrZXQgaW4gZWluZSBuZXVlIERhdGVuYmFuayAoMikgdW5kIGltcG9yaWVyZW4gU2llIGRhcyBCYWNrdXAgZGVzIGFsdGVuIFN5c3RlbXMgKDMpLiBBY2h0ZW4gU2llIGRhcmF1ZiwgZGFzIEJhY2t1cCB2b3J6dW5laG1lbiwgYmV2b3IgaW0gbmV1ZW4gU3lzdGVtIG5ldWUgRGF0ZW4gZXJ6ZXVndCB3ZXJkZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjYiIG5hbWU9ImJhY2t1cENvbnRlbnQiPgorICAgIDx2YWx1ZT5TeXN0ZW1iYWNrdXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2NyIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+QmlsZHNjaGlybSB0ZWlsZW4vQXVmemVpY2hudW5nIE51dHplcm4gZXJsYXViZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2OCIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+QmlsZHNjaGlybSB0ZWlsZW4vYXVmemVpY2huZW4gTnV0emVybiB1bnRlcnNhZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjkiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPk51dHplciBpc3QgTW9kZXJhdG9yLiBFciBrYW5uIGFsbGVzIHR1bi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3MCIgbmFtZT0iYXBwbHkgZm9yIHNjcmVlbi9yZWNvcmRpbmciPgorICAgIDx2YWx1ZT5tw7ZjaHRlIEJpbGRzY2hpcm0gemVpZ2VuL2F1ZnplaWNobmVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDcxIiBuYW1lPSJtb2RlcmF0aW9uIG1pbmkgaWNvbnMiPgorICAgIDx2YWx1ZT5TaWUga8O2bm5lbiBkZW4gQmlsZHNjaGlybSB0ZWlsZW4gL2F1ZnplaWNobmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzIiIG5hbWU9Im1vZGVyYXRpb24gbWluaSBpY29ucyI+CisgICAgPHZhbHVlPkFuZnJhZ2UgenVtIFRlaWxlbi9BdWZ6ZWljaG5lbiBkZXMgQmlsZHNjaGlybXMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzMiIG5hbWU9Im1vZGVyYXRpb24gbWluaSBpY29ucyBjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+RXJsYXViZW4vdW50ZXJzYWdlbiBCaWxkc2NoaXJtIHp1IHRlaWxlbi9hdWZ6dXplaWNobmVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc0IiBuYW1lPSJzb3VuZCBpY29uIj4KKyAgICA8dmFsdWU+VG9uIGFic2NoYWx0ZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3NSIgbmFtZT0ic291bmQgaWNvbiI+CisgICAgPHZhbHVlPlRvbiBhbnNjaGFsdGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzYiIG5hbWU9InJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5SYXVtIG51ciBtaXQgQXVkaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3NyIgbmFtZT0icm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPk1pdCBkaWVzZXIgRnVua3Rpb24gZXJsYXViZW4gU2llIGltIFJhdW0gbnVyIEF1ZGlvw7xiZXJ0cmFndW5nIHVuZCBzY2hhbHRlbiBWaWRlbyBhYi4gRGllcyBrYW5uIHNpbm52b2xsIHNlaW4sIHVtIEJhbmRicmVpdGUgenUgcmVkdXppZXJlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3OCIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+UmVtb3RlIENvbnRyb2wgZXJsYXViZW4gKHfDpGhyZW5kIEJpbGRzY2hpcm3DvGJlcnRyYWd1bmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzkiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlJlbW90ZSBDb250cm9sIHVudGVyc2FnZW4gKHfDpGhyZW5kIEJpbGRzY2hpcm3DvGJlcnRyYWd1bmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODAiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlJlbW90ZSBDb250cm9sIFNjcmVlbi1CZXJlY2h0aWd1bmcgYW5mcmFnZW4gKHfDpGhyZW5kIEJpbGRzY2hpcm3DvGJlcnRyYWd1bmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODEiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlNpZSBzaW5kIGJlcmVjaHRpZ3QgenUgUmVtb3RlIENvbnRyb2wgU2NyZWVuICh3w6RocmVuZCDDnGJlcnRyYWd1bmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODIiIG5hbWU9ImFwcGx5IGZvciByZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPmJpdHRldCB1bSBadWdyaWZmIGF1ZiByZW1vdGUgY29udHJvbCBzY3JlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODMiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPk51dHplciBpc3QgTW9kZXJhdG9yLiBFciBrYW5uIGFsbGVzIHR1bi4gW1JlbW90ZSBEZXNrdG9wIENvbnRyb2xdPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODQiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkVybGF1YmVuL3VudGVyc2FnZW4gUmVjaHQgYXVmIFJlbW90ZSBDb250cm9sIFNjcmVlbiAoV8OkaHJlbmQgQmlsZHNjaGlybcO8YmVydHJhZ3VuZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4NSIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+MS4gSWhyIFBDIGFuIFJlbW90ZS1QQzogS2xpY2tlbiBTaWUgYXVmIGRlbiBCaWxkc2NoaXJtIHVtIFRleHQgYXVzIFp3aXNjaGVuYWJsYWdlIGluIFJlbW90ZSBTY3JlZW4gZWluenVmw7xnZW4uIE1hY2hlbiBTaWUgZGFubiBlaW5lbiBSZWNodHNrbGljayBpbSBUZXh0ZmVsZCB1bmQgd8OkaGxlbiAnRWluZsO8Z2VuJyBpbSBLb250ZXh0bWVudSZsdDticiZndDsmbHQ7YnImZ3Q7Mi4gVm9tIFJlbW90ZSBQQyBhdWYgSWhyZW4gUEM6IFVtIFRleHQgdm9tIFJlbW90ZSBQQyBhdWYgaWhyZW4gUEMgenUgw7xiZXJ0cmFnZW4gbWFya2llcmVuIFNpZSB6dW7DpGNoc3QgYW0gUmVtb3RlIFBDIG1pdCBkZXIgTWF1cy4gS2xpY2tlbiBzaWUgZG9ydCBtaXQgZGVyIHJlY2h0ZW4gTWF1c3Rhc3RlIGF1ZiBkZW4gVGV4dCB1bmQgd8OkaGxlbiBTaWUgJmx0O2kmZ3Q7S29waWVyZW4gZGVzIG1hcmtpZXJ0ZW4gVGV4dHMmbHQ7L2kmZ3Q7IGltIEtvbnRleHRtZW51LiBBdWYgSWhyZW0gUEMgbnV0emVuIFNpZSBkaWUgRnVua3Rpb24gJ2VpbmbDvGdlbicuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODYiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPktvcGllcmVuIHVuZCBFaW5mw7xnZW4gdm9uIFRleHQgendpc2NoZW4gUmVtb3RlIFBDIHVuZCBlaWdlbmVtIFBDLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg3IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Lb3BpZXJlbiBkZXMgbWFya2llcnRlbiBUZXh0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg4IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Lb3BpZXJlbiB1bmQgRWluZsO8Z2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODkiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPlF1YWxpdMOkdCBkZXIgw5xiZXJ0cmFndW5nOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkwIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5TZWhyIGhvaGUgUXVhbGl0w6R0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTEiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPkhvaGUgUXVhbGl0w6R0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTIiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPk1pdHRsZXJlIFF1YWxpdMOkdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkzIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5OaWVkcmlnZSBRdWFsaXTDpHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NCIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5lbl9VUzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk1IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPmRlX0RFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTYiIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+VGFzdGF0dXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTciIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+V2ViaW5hciBiZWVuZGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTgiIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+RGFzIFdlYmluYXIgaXN0IGJlcmVpdHMgYmVlbmRldC4gV2VpdGVyZSBpbnRlcmVzc2FudGUgQW5nZWJvdGUgYmVmaW5kZW4gc2ljaCBpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk5IiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPlJhdW0gc2NobGllw59lbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAwIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPkF1c2dhbmcgKFVSTCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMSIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5FaW5zdGVsbHVuZ2VuIGbDvHIgUmF1bWJlc2NocsOkbmt1bmcgKHplaXRsaWNoKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAyIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPldlbm4gZGVyIFJhdW0gZ2VzY2hsb3NzZW4gd2lyZCwgd2VyZGVuIGRpZSBUZWlsbmVobWVyIHp1bSBBdXNnYW5nIChVUkwpIGdlbGVpdGV0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAzIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkxEQVA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA1IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNiIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5Db25maWd1cmF0aW9uc2RhdGVpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDciIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+TERBUCBLb25maWd1cmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDgiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA5IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkFrdGl2aWVydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEwIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkVpbmdlZsO8Z3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5FaW5nZWbDvGd0IHZvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEyIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkFrdHVhbGlzaWVydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEzIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkFrdHVhbGlzaWVydCB2b248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5EaWUgS29uZmlndXJhdGlvbnNkYXRlaWVuIGxpZWdlbiBpbSBnbGVpY2hlbiBPcmRuZXIgd2llIHdlYmFwcHMvb3Blbm1lZXRpbmdzL2NvbmYuIERpZSBEYXRlaWVuIG3DvHNzZW4gbWFudWVsbCBpbiBkZW4gT3JkbmVyIGtvcGllcnQgd2VyZGVuLiDDhG5kZXJ1bmdlbiBhbiBkZXIgS29uZmlndXJhdGlvbnNkYXRlaSBzaW5kIGRpcmVrdCBvbmxpbmUgd2lya3NhbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5OYW1lIGRlciBLb25maWd1cmF0aW9uc2RhdGVpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTYiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+V2VubiBTaWUgIkRvbWFpbiB6dW0gTnV0emVybmFtZW4gaGluenVmw7xnZW4iIGFrdGl2aWVyZW4gd2lyZCBkZXIgRWluZ2FiZSBkZXMgTnV0emVycyBiZWltIExvZ2luIGRlcmltIEZlbGQgJ0RvbWFpbicgaGludGVybGVndGUgV2VydCBoaW56dWdlZsO8Z3QuIERpZXMgaXN0IHNpbm52b2xsIHdlbm4gaW4gZWluZW0gTERBUCBTeXN0ZW0gZGVyIE51dHplciBtaXQgZWluZXIgRG9tYWluYW5nYWJlIGdlZsO8aHJ0IHdpcmQuIEJlaXNwaWVsLiBEZXIgTnV0emVyIGdpYnQgYmVpbSBMb2dpbiAnSGFucycgZWluLiBEaWUgRG9tYWluIGlzdCBtaXQgJ2xvY2FsaG9zdC5jb20nIGVpbmdldHJhZ2VuLiBJbSBMREFQIHdpcmQgaGFuc0Bsb2NhbGhvc3QuY29tIGdlcHLDvGZ0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE3IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkRvbWFpbiB6dW0gTnV0emVybmFtZW4gaGluenVmw7xnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExOCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5Eb21haW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExOSIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5FaW5mw7xnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMCIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5NYXJraWVydGVuIFRleHQga29waWVyZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMSIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5UZXh0IGF1cyBSZW1vdGUgWndpc2NoZW5hYmxhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMiIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5SZW1vdGUgWndpc2NoZW5hYmxhZ2UgYW56ZWlnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMyIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+TmljaHQgbm9jaCBlaW5tYWwgYW56ZWlnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNCIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+VGV4dCBoaWVyIGVpbmbDvGdlbiAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNSIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+U2llIGJlbsO2dGlnZW4gUmVtb3RlIENvbnRyb2wtUmVjaHRlIChvZGVyIE1vZGVyYXRpb25zcmVjaHRlKXVtIGRhcyBrb3BpZXJlbiB1bmQgRW5mw7xnZW4gYXVmIGRlbSBSZW1vdGUgU2NyZWVuIGF1c3p1ZsO8aHJlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNiIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+R3J1bmRlaW5zdGVsbHVuZ2VuIGJlYXJiZWl0ZW4gLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjciIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkluZm9mZWxkIHp1bSBLb3BpZXJlbi9FaW5mw7xnZW4gbmljaHQgaW4gUmVtb3RlIENvbnRyb2wgYW56ZWlnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyOCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5TcGVpY2hlcm48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyOSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5FbnRmZXJuZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5BYmJyZWNoZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMSIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPk51dHplciBpbiBLb25mZXJlbnpyYXVtIGVpbmxhZGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzIiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5Lb25mZXJlbnpyYXVtIGF1c3fDpGhsZW4uIERpZSBlaW5nZWxhZGVuZW4gTnV0emVyIGVyaGFsdGVuIGVpbmUgTmFjaHJpY2h0IG1pdCBJaHJlbSBOYW1lbiB1bmQgZGVtIExpbmsgenVtIFJhdW0uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzMiIG5hbWU9ImNoYXQgdXNlciI+CisgICAgPHZhbHVlPlZlcmJ1bmRlbiBzZWl0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM0IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+TmFjaCBFaW5sYWR1bmdzdmVyc2FuZCBSYXVtIGJldHJldGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzUiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5FaW5sYWRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM2IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+TmFjaHJpY2h0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzciIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5tw7ZjaHRlIFNpZSBpbiBkZW4gS29uZmVyZW56cmF1bSBlaW5sYWRlbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzOCIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkVpbmxhZHVuZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM5IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+RWlubGFkdW5nIHZlcnNlbmRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQwIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+bmltbXQgSWhyZSBFaW5sYWR1bmcgJmx0O2ImZ3Q7bmljaHR0Jmx0Oy9iJmd0OyBhbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0MSIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkFubmVobWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDIiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5BYmxlaG5lbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQzIiBuYW1lPSJ1c2VyIHByb2ZpbGUiPgorICAgIDx2YWx1ZT5aZWl0em9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ0IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5EZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDUiIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0NiIgbmFtZT0iYXBwb2ludG1lbnQgbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+QmVzY2hyZWlidW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDciIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPkVyc3RlbGx0IHZvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ4IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+SGlud2VpcyB6dXIgWmVpdHpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0OSIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPiJIaW53ZWlzIHp1ciBaZWl0em9uZSIgZ2ViZW4gd2VubiBOdXR6ZXIgc2ljaCBkYXMgbsOkY2hzdGUgTWFsIGVpbmxvZ2d0LCBkYW1pdCBkaWVzZSBkYXMgTnV0emVycHJvZmlsIGFrdHVhbGlzaWVyZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTAiIG5hbWU9InRpbWUgem9uZSB1cGRhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkJpdHRlIHByw7xmZW4gU2llIGRpZSBlaW5nZXN0ZWxsdGUgWmVpdHpvbmUgaW4gSWhyZW0gTnV0emVycHJvZmlsLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUxIiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5OZXVlICRBUFBfTkFNRSBLb25mZXJlbno6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTIiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkRldGFpbHM6Jmx0O2JyLyZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MyIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3RhcnQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTQiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkVuZGU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTUiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSBLb25mZXJlbnogZ2XDpG5kZXJ0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU2IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5PcmdhbmlzYXRpb24gZHVyY2g6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTciIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSBLb25mZXJlbnogYWJnZXNhZ3Q6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTgiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkVyaW5uZXJ1bmcgYW4gJEFQUF9OQU1FIEtvbmZlcmVuejo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1OSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkNvbW11bml0eS1FaW5zdGVsbHVuZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjAiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Lb250YWt0ZGF0ZW4gZsO8ciBhbGxlIHNpY2h0YmFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjEiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5JbnRlcmVzc2VuZmVsZGVyIGVpbmdlYmVuLCB1bSBlYmVuZmFsbHMgaW50ZXJlc3NpZXJ0ZSBQYXJ0bmVyIGbDvHIgS29uZmVyZW56IHp1IGZpbmRlbi4gV2VydGUgZHVyY2ggS29tbWEgdHJlbm5lbiAoei5CLjogTWVkaWNhbCBTZXJ2aWNlLCBIZWFsdGggYXNzdXJhbmNlLCAuLi4pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjIiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NZWluZSBBbmdlYm90ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYzIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+TWVpbmUgSW50ZXJlc3NlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY0IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY1IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+WmVpdHpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2NiIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkludGVyZXNzZW5mZWxkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2NyIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPktvbnRha3RpbmZvcm1hdGlvbmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjgiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NZWluZSBLb250YWt0ZGF0ZW4gbnVyIHBlcnPDtm5saWNoZW4gS29udGFrdGVuIGFuemVpZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjkiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5OaWVtYW5kZW4gbWVpbmUgS29udGFrdGRhdGVuIGFuemVpZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzAiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NZWluIFByb2ZpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTcxIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+RWluc3RlbGx1bmdlbiBiZWFyYmVpdGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzIiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5OdXR6ZXIgc3VjaGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzMiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Qcm9maWx2b3JzY2hhdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc0IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+RWluc3RlbGx1bmdlbiBiZWFyYmVpdGVuOyB6LkI6IEludGVyZXNzZW4gZWluZ2ViZW4sIHVtIGdlZnVuZGVuIHp1IHdlcmRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc1IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+QW5kZXJlIE51dHplciBzdWNoZW4gdW5kIE5ldHp3ZXJrIGVyd2VpdGVybjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc2IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlN1Y2hlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc3IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPk51dHplciBiaWV0ZXQgYW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3OCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5OdXR6ZXIgc3VjaHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3OSIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5GcmVpdGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgwIiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MSIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5aZWl0em9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgyIiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkFuZ2Vib3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODMiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+R2VzdWNoZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg0IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlN1Y2hlcmdlYm5pczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg1IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkFrdGlvbmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODYiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+QWxzIEtvbnRha3QgaGluenVmw7xnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NyIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5OYWNocmljaHQgc2VuZGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODgiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+S29udGFrdGUgdW5kIE5hY2hyaWNodGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODkiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+V2FydGVuZGUgS29udGFrdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkFremVwdGllcm48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkFibGVobmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTIiIG5hbWU9InVzZXIgY29udGFjdCByZXF1ZXN0Ij4KKyAgICA8dmFsdWU+R3V0ZW4gVGFnLDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkzIiBuYW1lPSJ1c2VyIGNvbnRhY3QgcmVxdWVzdCI+CisgICAgPHZhbHVlPmljaCB3w7xyZGUgU2llIGdlcm5lIGFscyBLb250YWt0IGhpbnp1ZsO8Z2VuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk0IiBuYW1lPSJ1c2VyIGNvbnRhY3QgcmVxdWVzdCI+CisgICAgPHZhbHVlPlByw7xmZW4gU2llIElocmUgS29udGFrdGFuZnJhZ2VuIGluICRBUFBfTkFNRSBvZGVyIGtsaWNrZW4gU2llIGF1ZiBkaWUgTGlua3MgenVtIEFremVwdGllcmVuIG9kZXIgQWJsZWhuZW4gZGVyIEFuZnJhZ2VuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk1IiBuYW1lPSJhZGQgdXNlciBjb250YWN0Ij4KKyAgICA8dmFsdWU+RGVyIE51dHplciBpc3QgYmVyZWl0cyBpbiBJaHJlciBLb250YWt0bGlzdGUgb2RlciBoYXQgdm9uIElobmVuIGVpbmUgQmVuYWNocmljaHRpZ3VuZyBlcmhhbHRlbiwgZGllIG5vY2ggbmljaHQgYmVhbnR3b3J0ZXQgd3VyZGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTYiIG5hbWU9InVzZXIgY29udGFjdCBtYWlsIj4KKyAgICA8dmFsdWU+SWhyZSBLb250YWt0bGlzdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPktvbnRha3RlIHVuZCBOYWNocmljaHRlbiBiZWFyYmVpdGVuLCZsdDtici8mZ3Q7IHdhcnRlbmRlIEtvbnRha3RlIGJlYXJiZWl0ZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5OCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPmhhdCBTaWUgYWxzIEtvbnRha3QgYmVzdMOkdGlndDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk5IiBuYW1lPSJjaGF0IGluZm8gbWVzc2FnZSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAwIiBuYW1lPSJjaGF0IGxvZyBpY29uIj4KKyAgICA8dmFsdWU+Q2hhdCBMb2cgYW56ZWlnZW4va29waWVyZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMSIgbmFtZT0iY2hhdCBsb2cgd2luZG93Ij4KKyAgICA8dmFsdWU+Q2hhdCBMb2c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Vm9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZW1hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbmRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TmFjaHJpY2h0ZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TmV1ZSBNYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk5ldWUgTmFjaHJpY2h0IGFuIG1laW5lIEtvbnRha3RlIHNjaHJlaWJlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5OZXVlIE5hY2hyaWNodCBzY2hyZWliZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QW46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZW1hOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjEyIiBuYW1lPSJ3aGl0ZWJvYXJkIGZ1bGwtZml0Ij4KKyAgICA8dmFsdWU+Vm9sbGFuc2ljaHQ6IGRhcyBXaGl0ZWJvYXJkIHdpcmQgaW4gZGVyIGdyw7bDn3Rtw7ZnbGljaGVuIEFuc2ljaHQgJmx0O2JyLyZndDsgZ2V6ZWlndC4gRGFyc3RlbGx1bmcgaXN0IGFiaMOkbmdpZyB2b24gZGVyJmx0O2JyLyZndDtCaWxkc2NoaXJtYXVmbMO2c3VuZyBkZXIgTnV0emVyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjEzIiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT5OdXR6ZXIgZW50ZmVybmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTQiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPlNpZSBrw7ZubmVuIHNpY2ggbmljaHQgc2VsYnN0IGF1cyBkZW0gS29uZmVyZW56cmF1bSBlbnRmZXJuZW4uIFdlbm4gU2llIGRlbiBLb25mZXJlbnpyYXVtIHZlcmxhc3NlbiB3b2xsZW4sIHNjaGxpZcOfZW4gU2llIGRhcyBCcm93c2VyZmVuc3RlciBvZGVyIG51dHplbiBTaWUgZGVuIEF1c2dhbmctQnV0dG9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE1IiBuYW1lPSJraWNrLXVzZXIiPgorICAgIDx2YWx1ZT5Xb2xsZW4gU2llIGRlbiBOdXR6ZXIgdGF0c8OkY2hsaWNoIGF1cyBkaWVzZW0gS29uZmVyZW56cmF1bSBlbnRmZXJuZW4/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTYiIG5hbWU9ImtpY2stdXNlciI+CisgICAgPHZhbHVlPkFrdGlvbiBiZXN0w6R0aWdlbi4uLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNyIgbmFtZT0ia2ljay11c2VyIj4KKyAgICA8dmFsdWU+U2llIGvDtm5uZW4gZGVuIFN1cGVyLU1vZGVyYXRvciBuaWNodCBhdXMgZGVtIFJhdW0gYXVzc2NobGllw59lbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Lb25mZXJlbnpyYXVtIGJ1Y2hlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TdGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5FbmRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkVyc3RlbGxlbiBTaWUgZWluZW4gS29uZmVyZW56cmF1bSB1bmQgZWluZSBvcHRpb25hbGUgVGVpbG5haG1lYW5mcmFnZSB6dW0gTWVldGluZy4gRGVyIFRlcm1pbiB3aXJkIGluIGRpZSBLYWxlbmRlciBhbGxlciBUZWlsbmVobWVyIGVpbmdldHJhZ2VuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5FaW5nYW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkdlc2VuZGV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkdlbMO2c2NodDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TaWUga8O2bm5lbiBzaWNoIG5pY2h0IHNlbGJzdCBhbHMgS29udGFrdCBlaW5mw7xnZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjYiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5EZXIgTnV0emVyIHd1cmRlIGJlcmVpdHMgYWJnZWxlaG50LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+RGVyIE51dHplciB3dXJkZSBiZXJlaXRzIGJlc3TDpHRpZ3QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjgiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5OdXR6ZXJrb250YWt0IEhhc2gtV2VydCBpc3QgdW5nw7xsdGlnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjkiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5OdXR6ZXIgd3VyZGUgenUgS29udGFrdGxpc3RlIGhpbnp1Z2Vmw7xndC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPktvbnRha3QgZsO8ciBOdXR6ZXIgYWJnZWxlaG50IHVuZCB2b24gV2FydGVsaXN0ZSBlbnRmZXJudC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPktlaW4gS29udGFrdCBnZWZ1bmRlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPldvbGxlbiBTaWUgZGVuIEtvbnRha3QgdGF0c8OkY2hsaWNoIGVudGZlcm5lbj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPktvbnRha3QgZW50ZmVybmVuIGJlc3TDpHRpZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzQiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Lb250YWt0IHZvbiBMaXN0ZSBlbnRmZXJuZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNSIgbmFtZT0idXNlciBwcm9maWxlIj4KKyAgICA8dmFsdWU+TnV0emVycHJvZmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM2IiBuYW1lPSJ1c2VyIHByb2ZpbGUiPgorICAgIDx2YWx1ZT5OdXR6ZXJwcm9maWxlIGFuemVpZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzciIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk5hY2hyaWNodGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlN1Y2hlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFsbGUgYXVzd8OkaGxlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5LZWluZSBhdXN3w6RobGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlVuZ2VsZXNlbmUgYXVzd8OkaGxlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5HZWxlc2VuZSBhdXN3w6RobGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkluIE9yZG5lciB2ZXJzY2hpZWJlbiAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TmV1ZW4gT3JkbmVyIGFubGVnZW4gLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkzDtnNjaGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDYiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkdlbMO2c2NodGUgTWFpbHMgbGllZ2VuIGltIFBhcGllcmtvcmIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDciIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlVuZ2VsZXNlbmUgbWFya2llcmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkdlbGVzZW5lIG1hcmtpZXJlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BbnR3b3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTAiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFudHdvcnQgYW4gYWxsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5XZWl0ZXJsZWl0ZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWt0aW9uZW4gLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTMiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Qcml2YXRlIE5hY2hyaWNodCBzZW5kZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TmljaHRzIGF1c2dld8OkaGx0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkluIEVpbmdhbmcgdmVyc2NoaWViZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TMO2c2NoZW4gKGVuZGfDvGx0aWcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTciIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRpZXNlIEFrdGlvbiBrYW5uIG5pY2h0IHLDvGNrZ8OkbmdpZyBnZW1hY2h0IHdlcmRlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1OCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+T3JkbmVyIGhpbnp1ZsO8Z2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk9yZG5lciBoaW56dWbDvGdlbiB1bmQgTmFjaHJpY2h0ZW4gdmVyd2FsdGVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5PcmRuZXIgaGluenVmw7xnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+SGluenVmw7xnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPk9yZG5lciBsw7ZzY2hlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+TMO2c2NoZW4gb2RlciB2ZXJzY2hpZWJlbiBTaWUgZXJzdCBkaWUgTmFjaHJpY2h0ZW4gaW4gZGVtIE9yZG5lci4gRGFuYWNoIGthbm4gZGVyIE9yZG5lciBnZWzDtnNjaHQgd2VyZGVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+TmFtZSBiZWFyYmVpdGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSBmb2xkZXIiPgorICAgIDx2YWx1ZT5Xb2xsZW4gU2llIGRlbiBPcmRuZXIgd2lya2xpY2ggbMO2c2NoZW4/IERlciBWb3JnYW5nIGthbm4gbmljaHQgcsO8Y2tnw6RuZ2lnIGdlbWFjaHQgd2VyZGVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY2IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+SWhyZSBBbmZyYWdlIHd1cmRlIGFuIGRlbiBOdXR6ZXIgZ2VzYW5kdC4gRXIga2FubiBkaWUgQmVuYWNocmljaHRpZ3VuZyBhbm5obWVuIG9kZXIgYWJsZWhuZW4uIE51ciBhbmdlbm9tbWVuZSBBbmZyYWdlbiBlcnNjaGVpbmVuIGluIElocmVyIEtvbnRha3RsaXN0ZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPk5hY2hyaWNodDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY4IiBuYW1lPSJ1c2VyIHZpZXcgcHJvZmlsZSI+CisgICAgPHZhbHVlPkRlciBOdXR6ZXIgdmVyw7ZmZmVudGxpY2h0IGRpZSBwZXJzw7ZubGljaGVuIEtvbnRha3RkYXRlbiBuaWNodC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2OSIgbmFtZT0idXNlciB2aWV3IHByb2ZpbGUiPgorICAgIDx2YWx1ZT5EZXIgTnV0emVyIHplaWd0IGRpZSBwZXJzw7ZubGljaGVuIEtvbnRha3RkYXRlbiBudXIgc2VpbmVuIGJlc3TDpHRpZ3RlbiBLb250YWt0ZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzAiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+QWRyZXNzZSAmYW1wOyBUZWxlZm9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzEiIG5hbWU9ImVycm9yIGNvZGUiPgorICAgIDx2YWx1ZT5JaHIgRWlubGFkdW5nc2NvZGUgaXN0IHVuZ8O8bHRpZy4gRXIga2FubiBudXIgaW0gYW5nZWdlYmVuZW4gWmVpdHJhdW0gZ2VudXR6dCB3ZXJkZW46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzIiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5EZXIgVGVybWluIGlzdCBpbiBkZW4gS2FsZW5kZXJuIGFuZGVyZXIgTnV0emVyIGVpbmdldHJhZ2VuLiBEaWUgw4RuZGVydW5nZW4gd2VyZGVuIGF1Y2ggZG9ydCB2b3JnZW5vbW1lbi4gV29sbGVuIFNpZSBkZW4gVGVybWluZSB3aXJrbGljaCBha3R1YWxpc2llcmVuPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjczIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QWt0dWFsaXNpZXJ1bmcgYmVzdMOkdGlnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkRpZXNlciBLb250YWt0IGRhcmZlbiBtZWluZW4gS2FsZW5kZXIgZWluc2VoZW4gKG51ciBBbnNpY2h0KTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc1IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+S2FsZW5kZXIgbmljaHQgdmVyw7ZmZmVudGxpY2hlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc2IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+S2FsZW5kZXIgbWVpbmVyIEtvbnRha3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzciIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5FcnN0ZSB3ZW5uIGRpZSBLb250YWt0ZSBiZXN0w6R0aWd0IHd1cmRlbiBiZXN0ZWh0IFp1Z3JpZmYgYXVmIGRpZSBLYWxlbmRlci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3OCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlNpZSBrw7ZubmVuIG51ciBpbiBJaHJlbSBlaWdlbmVuIEthbGVuZGVyIFRlcm1pbmUgc3BlaWNoZXJuIG9kZXIgbMO2c2NoZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzkiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5NZWluZW4gZWlnZW5lbiBLYWxlbmRlciBhbnplaWdlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4MCIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPkRlciBUZXJtaW4gaXN0IGluIGRlbiBLYWxlbmRlcm4gYW5kZXJlciBOdXR6ZXIgZWluZ2V0cmFnZW4uIFNvbGwgZGVyIFRlcm1pbiB3aXJrbGljaCDDvGJlcmFsbCBnZWzDtnNjaHQgd2VyZGVuPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgxIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QWt0aW9uIGJlc3TDpHRpZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODIiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5SYXVtIGJldHJldGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODMiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5adWdhbmcgenVtIEtvbmZlcmVuenJhdW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RWluIEtvbmZlcmVuenJhdW0gdW5kIFRlcm1pbiBpc3QgZHVyY2ggZGllc2UgcHJpdmF0ZSBOYWNocmljaHQgZ2VidWNodCB3b3JkZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODUiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5EZXJUZXJtaW4gbXXDnyBlcnN0IG5vY2ggZ2VzcGVpY2hlcnQgd2VyZGVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg2IiBuYW1lPSJhY2Nlc3Mgcm9vbXMgZXJyb3IiPgorICAgIDx2YWx1ZT5EZXIgVGVybWluIHVuZCBkZXIgZ2VidWNodGUgUmF1bSB3dXJkZW4gaW56d2lzY2hlbiBnZWzDtnNjaHQuIERlciBSYXVtIHN0ZWh0IG5pY2h0IHp1ciBWZXJmw7xndW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg3IiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5TcGl0em5hbWVuIHfDpGhsZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4OCIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+Vm9ybmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg5IiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5OYWNobmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkwIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5FLU1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MSIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+T2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MiIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+TWluZGVzdGVucyA0IFplaWNoZW4gZsO8ciBWb3ItIHVuZCBOYWNobmFtZSBlaW5nZWJlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MyIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+Qml0dGUgZ2ViZW4gU2llIGVpbmUgZ8O8bHRpZ2UgTWFpbC1BZHJlc3NlIGVpbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5NCIgbmFtZT0iYXV0aCBmcm9tIj4KKyAgICA8dmFsdWU+RmFjZWJvb2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5NSIgbmFtZT0iYXV0aCBmb3JtIj4KKyAgICA8dmFsdWU+TG9naW4gbWl0IElocmVtIEZhY2Vib29rLUFjY291bnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5NiIgbmFtZT0idmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+TWl0Z2xpZWQgc2VpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk3IiBuYW1lPSJkaXJlY3QgbG9naW4gbWVzc2FnZSI+CisgICAgPHZhbHVlPlNpZSBzaW5kIMO8YmVyIElocmVuIEZhY2Vib29rLUFjY291bnQgZWluZ2Vsb2dndC4gQWt0dWFsaXNpZXJlbiBTaWUgaW4gSWhyZW0gUHJvZmlsIElocmUgRS1NYWlsYWRyZXNzZS4gU2llIGVyaGFsdGVuIHNvbnN0IGtlaW5lIEVpbmxhZHVuZ2VuIHp1IFNpdHp1bmdlbiBvZHIgTmFjaHJpY2h0ZW4gdm9uIElocmVuIEtvbnRha3Rlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5OCIgbmFtZT0iZGlyZWN0IGxvZ2luIG1lc3NhZ2UgaGVhZGVyIj4KKyAgICA8dmFsdWU+TmFjaHJpY2h0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTkiIG5hbWU9ImRpcmVjdCBsb2dpbiBtZXNzYWdlIGNoZWNrYm94IGNvbnRyb2wiPgorICAgIDx2YWx1ZT5NaXR0ZWlsdW5nIHp1ciBQcm9maWxha3R1YWxpc2llcnVuZyBrw7xuZnRpZyBuaWNodCBhbnplaWdlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMCIgbmFtZT0icHJvZmlsZSBzZXR0aW5ncyBidXR0b24iPgorICAgIDx2YWx1ZT53ZWl0ZXJlIEFuemVpZ2Vtw7ZnbGljaGtlaXRlbiAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TmV1ZSBwcml2YXRlIE5hY2hyaWNodGVuOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5LbGlja2VuIFNpZSBhdWYgSWhyIFByb2ZpbCB1bSBkaWUgZ2FuemUgTmFjaHJpY2h0IHp1IHNlaGVuLi4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BbndvcnRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA0IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5Sw6R1bWUgdW5kIENoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwNSIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+TWVpbmUgUsOkdW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDYiIG5hbWU9Im15IHJvb21zIj4KKyAgICA8dmFsdWU+TWVpbiBLb25mZXJlbnpyYXVtIChmw7xyIDEtMTYgQmVudXR6ZXIpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDciIG5hbWU9Im15IHJvb21zIj4KKyAgICA8dmFsdWU+TWVpbiBXZWJpbmFycmF1bSAoZsO8ciAxLTEyMCBCZW51dHplcik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwOCIgbmFtZT0icm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPkVpZ25lIElEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDkiIG5hbWU9ImxvZ2luIGVycm9yIj4KKyAgICA8dmFsdWU+Qml0dGUgUGFzc3dvcnQgZWluZ2ViZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMCIgbmFtZT0ibG9naW4gZXJyb3IiPgorICAgIDx2YWx1ZT5TaWUgYmVuw7Z0aWdlbiBlaW5lbiBOdXR6ZXJhY2NvdW50IGFscyBUZWlsbmVobWVyLCBNb2RlcmF0b3Igb2RlciBBZG1pbmlzdHJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTEiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5XZWItU2VydmljZSAobnVyIFNPQVApPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTIiIG5hbWU9InVwbG9hZCBmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+RGlyZWt0IGF1ZiBXaGl0ZWJvYXJkIGFibGVnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMyIgbmFtZT0id2hpdGVib2FyZCBjbG9zZSBjb25maXJtYXRpb24iPgorICAgIDx2YWx1ZT5Tb2xsIGRpZXNlcyBXaGl0ZWJvYXJkIHdpcmtsaWNoIGVudGZlcm50IHdlcmRlbj8gRGllIEFrdGlvbiBrYW5uIG5pY2h0IHLDvGNrZ8OkbmdpZyBnZW1hY2h0IHdlcmRlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxNCIgbmFtZT0id2hpdGVib2FyZCBsb2FkIFdNTCI+CisgICAgPHZhbHVlPkluIFdoaXRlYm9hcmQgbGFkZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxNSIgbmFtZT0icmVjb3JkaW5nIGZsYWciPgorICAgIDx2YWx1ZT5WZXJnZXNzZW4gU2llIG5pY2h0IGRpZSBBdWZ6ZWljaG51bmcgenUgc3RhcnRlbi4gRWluIE51dHplciBkZXMgUmF1bSBtdcOfIGRpZSBBdWZ6ZWljaG51bmcgc3RhcnRlbiwgZGFtaXQgZGllc2UgYW5zY2hsaWXDn2VuZCB6dXIgVmVyZsO8Z3VuZyBzdGVodC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxNiIgbmFtZT0icmVjb3JkaW5nIGZsYWciPgorICAgIDx2YWx1ZT5BdWZ6ZWljaG51bmcgc3RhcnRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE3IiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPlBmZWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTgiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+S3JlaXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxOSIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT5MaW5pZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIwIiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPlJlY2h0ZWNrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjEiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+RHJlaWVjazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIyIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+VGV4dC9Ob3RpejwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIzIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+Q2xpcGFydHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkZyZWkgWmVpY2huZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNSIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkF1c3fDpGhsZW4vVmVyc2NoaWViZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNiIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkZvcm0gemVpY2huZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNyIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkF1c3NjaG5laWRlbi92ZXJzY2hpZWJlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI4IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+Wm9vbSBJbi9PdXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyOSIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkRydWNrZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlLDvGNrZ8OkbmdpZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMxIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+TMO2c2NoZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMiIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlJhc3RlciBlaW5mw7xnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMyIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkRhdGVpIGJlcmVpdHN0ZWxsZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNCIgbmFtZT0iaWNvbiBzdWJtZW51Ij4KKyAgICA8dmFsdWU+Rm9ybSBhdXN3w6RobGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzUiIG5hbWU9Imljb24gc3VibWVudSI+CisgICAgPHZhbHVlPkNsaXBhcnQgYXVzd8OkaGxlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM2IiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+S29waWVyZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNyIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkF1c3NjaG5laWRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzgiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5FaW5mw7xnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzOSIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkzDtnNjaGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDAiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5Xb2xsZW4gU2llIHdpcmtsaWNoIGRlbiBnZXNhbXRlbiBJbmhhbHQgZGVyIFdoaXRlYm9hcmQgbMO2c2NoZW4/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDEiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5EaXJla3QgYXVmIFdoaXRlYm9hcmQgYWJsZWdlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MiIgbmFtZT0iYXR0ZW5kZWVzIj4KKyAgICA8dmFsdWU+VGVpbG5laG1lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQzIiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5UZWlsbmVobWVydmVyd2FsdHVuZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ0IiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5Bbndlc2VuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ1IiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5SZW1vdGUgQ29udHJvbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ2IiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5BdXN0cmFnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NyIgbmFtZT0iY2hhdCI+CisgICAgPHZhbHVlPkNoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0OCIgbmFtZT0iaW52aXRlIGF0dGVuZGVlIj4KKyAgICA8dmFsdWU+VGVpbG5laG1lciBlaW5sYWRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ5IiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5QZXIgRS1NYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTAiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPk51dHplciBpc3QgTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTEiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPk51dHplciBoYXQgV2ViY2FtIGFrdGl2aWVydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUyIiBuYW1lPSJmaWxsX29wdGlvbiI+CisgICAgPHZhbHVlPkZvcm0gYXVzZsO8bGxlbiBkZWFrdGl2aWVyZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1MyIgbmFtZT0iZmlsbF9vcHRpb24iPgorICAgIDx2YWx1ZT5Gb3JtIGF1c2bDvGxsZW4gYWt0aXZpZXJlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU0IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+RWlucmFzdGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTUiIG5hbWU9ImFsbG93X3JlY29yZGluZyI+CisgICAgPHZhbHVlPkF1ZnplaWNobnVuZyBlcmxhdWJlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU2IiBuYW1lPSJ3YWl0X2Zvcl9yZWNvcmRpbmciPgorICAgIDx2YWx1ZT5XYXJ0ZW4gYXVmIEF1ZnplaWNobnVuZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU3IiBuYW1lPSJoaWRlX3RvcF9iYXIiPgorICAgIDx2YWx1ZT5Ub3BiYXIgdmVyYmVyZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTgiIG5hbWU9ImZpbGVFeHBsb3JlciI+CisgICAgPHZhbHVlPlZpZGVvIGFic3BpZWxlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU5IiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+V29sbGVuIFNpZSB3aXJrbGljaCBkZW4gSW5oYWx0IGRlciBha3R1ZWxsZW4gRm9saWUgbMO2c2NoZW4/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjAiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPk51dHplcnJlY2h0ZSBha3plcHRpZXJlbi9nZXfDpGhyZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2MSIgbmFtZT0iYWN0aXZpdHlfd2luZG93Ij4KKyAgICA8dmFsdWU+QWJsZWhuZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2MiIgbmFtZT0iYWN0aXZpdHlfd2luZG93Ij4KKyAgICA8dmFsdWU+STwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYzIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT5Ba3Rpdml0w6R0ZW4gdW5kIEFrdGlvbmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjQiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5XaGl0ZWJvYXJkIGVudGZlcm5lbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY1IiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+VW0gV2hpdGVib2FyZHMgenUgZW50ZmVybmVuIGJlbsO2dGlnZW4gU2llIE1vZGVyYXRpb25zLSBvZGVyIFNjaHJlaWJyZWNodGUgZsO8ciBkaWUgV2hpdGVib2FyZHMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjYiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5OaWNodCBlcmxhdWJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjciIG5hbWU9InVzZXJfbGVmdF9hY3RfbXNnIj4KKyAgICA8dmFsdWU+aGF0IGRlbiBSYXVtIHZlcmxhc3Nlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2OCIgbmFtZT0iY2xpcGFydCBpY29ucyI+CisgICAgPHZhbHVlPk1hdGhlbWF0aXNjaGUgWmVpY2hlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY5IiBuYW1lPSJjbGlwYXJ0IGljb25zIj4KKyAgICA8dmFsdWU+S2VpbmUgS2F0ZWdvcmllPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzAiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPkZhcmJzdGlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzEiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPlF1YWxpdMOkdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzcyIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5Eb21haW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MyIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+YmVzdWNoZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc0IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5yb3Qtb3JhbmdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzUiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPm1pdHRlbCBzZWVncsO8bjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc2IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5zdGFobGJsYXU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NyIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+aGVsbHN0YWhsYmxhdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc4IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5yb3Rnb2xkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzkiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnNpbGJlcmdyYXU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4MCIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+bnV0emVyZGVmaW5pZXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODEiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPmJlc3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODIiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPlVwbG9hZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgzIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5taXR0bGVyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg0IiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TWlrcm9mb25lIGbDvHIgYWxsZSBzdHVtbSBzY2hhbHRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg1IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5NaWtyb2ZvbmUgZsO8ciBhbGxlIGFrdGl2aWVyZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NiIgbmFtZT0iZ2l2ZSBleGNsdXNpdmUgYXVkaW8iPgorICAgIDx2YWx1ZT5NaWtyb2ZvbmUgZsO8ciBhbmRlcmUgc3R1bW0gc2NoYWx0ZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NyIgbmFtZT0ibXV0ZSBzZWxmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EZXIgTW9kZXJhdG9yIGhhdCBpaHIgTWlrcm9mb24gc3R1bW0gZ2VzY2hhbHRldC4gU2llIGvDtm5uZW4gZGllcyBuaWNodCBzZWxiZXIgw6RuZGVybi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4OCIgbmFtZT0ibXV0ZSBzZWxmIGNvbmZpcm0gbWVzc2FnZSB0aXRsZSI+CisgICAgPHZhbHVlPk1pa3JvZm9uIGbDvHIgYWxsZSBzdHVtbSBzY2hhbHRlbj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4OSIgbmFtZT0ibXV0ZSBzZWxmIGNvbmZpcm0gbWVzc2FnZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+V29sbGVuIFNpZSBJaHIgTWlrcm9mb24gd2lya2xpY2ggc3R1bW0gc2NoYWx0ZW4/IE5pZW1hbmQgd2lyZCBTaWUgZGFubiBow7ZyZW4ga8O2bm5lbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5MCIgbmFtZT0ibXV0ZSBvdGhlcnMgY29uZmlybSBtZXNzYWdlIHRpdGxlIj4KKyAgICA8dmFsdWU+TWlrcm9mb24gZsO8ciBhbGxlIHN0dW1tIHNjaGFsdGVuPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkxIiBuYW1lPSJtdXRlIG90aGVycyBjb25maXJtIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Xb2xsZW4gU2llIGRpZXNlcyBNaWtyb2ZvbiB3aXJrbGljaCBzdHVtbSBzY2hhbHRlbj8gU2llIGjDtnJlbiBkYW5hY2ggZGVuIE51dHplciBuaWNodCBtZWhyLiBEaWVzIGhhdCBrZWluZSBBdXN3aXJrdW5nIG9iIGFuZGVyZSBOdXR6ZXIgZXMgbm9jaCBow7ZyZW4uIE51ciBNb2RlcmF0b3JlbiBrw7ZubmVuIE1pa3JvZm9uZSBmw7xyIGFsbGUgYWJzY2hhbHRlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5MiIgbmFtZT0ibXV0ZSBvdGhlcnMgY29uZmlybSBtZXNzYWdlIHRpdGxlIj4KKyAgICA8dmFsdWU+TWlrcm9mb24gZsO8ciBhbGxlIHN0dW1tIHNjaGFsdGVuPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkzIiBuYW1lPSJtdXRlIG90aGVycyBtb2RlcmF0b3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPldlbm4gU2llIGRpZXNlcyBNaWtyb2ZvbiBmw7xyIGFsbGUgc3R1bW0gc2NoYWx0ZW4gd2lyZCBrZWluIE51dHplciBlcyBtZWhyIGjDtnJlbiBrw7ZubmVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk0IiBuYW1lPSJtdXRlIHN0YXR1cyBpY29ucyI+CisgICAgPHZhbHVlPklociBUb24gaXN0IGFrdGl2LiBLbGlja2VuIFNpZSBoaWVyLCB1bSBkZW0gTW9kZXJhdG9yIGVpbmUgTmFjaHJpY2h0IHp1IHNlbmRlbiwgSWhyIE1pa3JvZm9uIGbDvHIgYWxsZSBOdXR6ZXIgaW0gS29uZmVyZW56cmF1bSBzdHVtbXp1c2NoYWx0ZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTUiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+SWhyIFRvbiBpc3Qgc3R1bW1nZXNjaGFsdGV0LiBLbGlja2VuIFNpZSBoaWVyLCB1bSBkZW0gTW9kZXJhdG9yIGVpbmUgTmFjaHJpY2h0IHp1IHNlbmRlbiwgSWhyIE1pa3JvZm9uIGbDvHIgYWxsZSBOdXR6ZXIgaW0gS29uZmVyZW56cmF1bSBhbnp1c2NoYWx0ZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTYiIG5hbWU9Im11dGUgYXBwbHkgc2VsZiBvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Yml0dGV0IGRlbiBNb2RlcmF0b3IgZGFzIGVpZ2VuZSBNaWtyb2ZvbiBmw7xyIGFsbGUgTnV0emVyIGRlcyBSYXVtcyBzdHVtbXp1c2NoYWx0ZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTciIG5hbWU9Im11dGUgYXBwbHkgc2VsZiBvZmYgbWVzc2FnZSI+CisgICAgPHZhbHVlPmJpdHRldCBkZW4gTW9kZXJhdG9yIGRhcyBlaWdlbmUgTWlrcm9mb24gZsO8ciBhbGxlIE51dHplciBkZXMgUmF1bXMgYW56dXNjaGFsdGVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk4IiBuYW1lPSJtdXRlIGFwcGx5IG9mIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5iaXR0ZXQgZGVuIE1vZGVyYXRvciBzZWluL2lociBNaWtyb2ZvbiBhbnp1c2NoYWx0ZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTkiIG5hbWU9Im11dGUgYXBwbHkgb2YgbWVzc2FnZSI+CisgICAgPHZhbHVlPmJpdHRldCBkZW4gTW9kZXJhdG9yIHNlaW4vaWhyIE1pa3JvZm9uIHN0dW1tenVzY2hhbHRlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMCIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5NaWtyb2ZvbiBhbnNjaGFsdGVuLiBIaWVyIGtsaWNrZW4sIHVtIGRhcyBNaWtyb2ZvbiBmw7xyIGFsbGUgTnV0emVyIGRlcyBSYXVtcyBzdHVtbXp1c2NoYWx0ZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDEiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+TWlrcm9mb24gc3R1bW1zY2hhbHRlbi4gSGllciBrbGlja2VuLCB1bSBkYXMgTWlrcm9mb24gZsO8ciBhbGxlIE51dHplciBkZXMgUmF1bXMgYW56dXNjaGFsdGVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDAyIiBuYW1lPSJtdXRlIHNlbGYgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1pa3JvZm9uIGRlcyBOdXR6ZXJzIGlzdCB2b20gTW9kZXJhdG9yIGbDvHIgYWxsZSBzdHVtbWdlc2NoYWx0ZXQuIFNpZSBrw7ZubmVuIGVzIG5pY2h0IHJlYWt0aXZpZXJlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMyIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk1laW4gTWlrcm9mb24gZsO8ciBhbGxlIHN0dW1tc2NoYWx0ZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDQiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk1laW4gTWlrcm9mb24gZsO8ciBhbGxlIGFuc2NoYWx0ZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDUiIG5hbWU9Im11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5NaWtyb2ZvbiBzdHVtbXNjaGFsdGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDYiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk1pa3JvZm9uIGFuc2NoYWx0ZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwNyIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk1pa3JvZm9uIGbDvHIgYWxsZSBhYnNjaGFsdGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDgiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk1pa3JvZm9uIGbDvHIgYWxsZSBhbnNjaGFsdGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDkiIG5hbWU9Im11dGUgbW9kZXJhdG9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5OdXIgTW9kZXJhdG9yZW4ga8O2bm5lbiBNaWtyb2ZvbmUgZsO8ciBhbGxlIGFuL2Fic2NoYWx0ZW4uIFNpZSBrw7ZubmVuIElociBlaWdlbmVzIE1pa3JvZm9uIG1pdCBkZW0gTWlrcm9mb24tSWNvbiBhYnNjaGFsdGVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDEwIiBuYW1lPSJwb2xsX25hbWUiPgorICAgIDx2YWx1ZT5UaXRlbCBkZXIgQWJzdGltbXVuZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDExIiBuYW1lPSJwb2xsX25hbWUiPgorICAgIDx2YWx1ZT5TaWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMiIgbmFtZT0iYXJjaGl2ZWRfcG9sbHMiPgorICAgIDx2YWx1ZT5BcmNoaXZpZXJ0ZSBBYnN0aW1tdW5nZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMyIgbmFtZT0iYWN0aXZlX3BvbGwiPgorICAgIDx2YWx1ZT5ha3RpdjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE0IiBuYW1lPSJjaGFydF9zaW1wbGUiPgorICAgIDx2YWx1ZT5FaW5mYWNoZSBHcmFmaWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNSIgbmFtZT0iY2hhcnRfcGllIj4KKyAgICA8dmFsdWU+VG9ydGVuZ3JhZmlrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTYiIG5hbWU9InNpZ25fdXBfdmFsaWRhdGlvbiI+CisgICAgPHZhbHVlPkJpdHRlIGdlYmVuIFNpZSBlaW5lIEUtTWFpbC1BZHJlc3NlIGFuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTciIG5hbWU9ImNoYXRfbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+TmV1ZSBOYWNocmljaHQoZW4pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTgiIG5hbWU9InBvbGxfY2xvc2UiPgorICAgIDx2YWx1ZT5BYnN0aW1tdW5nIHNjaGxpZcOfZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxOSIgbmFtZT0icG9sbF9jbG9zZV9jb25maXJtIj4KKyAgICA8dmFsdWU+V29sbGVuIFNpZSBkaWUgQWJzdGltbXVuZyB3aXJrbGljaCBzY2hsaWXDn2VuPyBEYW5hY2gga2FubiBzaWNoIG5pZW1hbmQgbWVociBiZXRlaWxpZ2VuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIwIiBuYW1lPSJwb2xsX2RlbGV0ZSI+CisgICAgPHZhbHVlPkFic3RpbW11bmcgbMO2c2NoZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMSIgbmFtZT0icG9sbF9kZWxldGVfY29uZmlybSI+CisgICAgPHZhbHVlPldvbGxlbiBTaWUgZGllIEFic3RpbW11bmcgd2lya2xpY2ggbMO2c2NoZW4/IERhbWl0IHdlcmRlbiBhdWNoIGFsbGUgRXJnZWJuaXNzZSBnZWzDtnNjaHQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjIiIG5hbWU9Imxhbmd1YWdlX2NvZGUiPgorICAgIDx2YWx1ZT5TcHJhY2hlOiBJU08gQ29kZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIzIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fcGVybWlzc2lvbiI+CisgICAgPHZhbHVlPlJlY2h0IGbDvHIgZXhrbHVzaXZlbiBBdWRpb3p1Z3JpZmYgdmVyZ2ViZW4vZW50emllaGVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI0IiBuYW1lPSJhbGxvd19leGNsdXNpdmVfYXVkaW9fcGVybWlzc2lvbiI+CisgICAgPHZhbHVlPk51dHplciBlcmjDpGx0IFJlY2h0IGbDvHIgZXhrbHVzaXZlcyBBdWRpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI1IiBuYW1lPSJkZW55X2V4Y2x1c2l2ZV9hdWRpb19wZXJtaXNzaW9uIj4KKyAgICA8dmFsdWU+UmVjaHQgZsO8ciBleGtsdXNpdmVzIEF1ZGlvIGbDvHIgTnV0emVyIGVudHppZWhlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI2IiBuYW1lPSJleGNsX2F1ZGlvIGFwcGx5IHNlbGYgb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPmJpdHRldCB1bSBSZWNodCBmw7xyIGV4a2x1c2l2ZXMgQXVkaW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjciIG5hbWU9ImV4Y2xfYXVkaW8gYXBwbHkgb2YgbWVzc2FnZSI+CisgICAgPHZhbHVlPmJpdHRldCBkZW4gTW9kZXJhdG9yIGRhcnVtIGlobSBleGtsdXNpdmVzIEF1ZGlvLVJlY2h0IHp1IGdlYmVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI4IiBuYW1lPSJleGNsX2F1ZGlvIHN0YXR1cyBpY29ucyI+CisgICAgPHZhbHVlPlJlY2h0IGbDvHIgZXhrbHVzaXZlcyBBdWRpbyBnZWJlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyOSIgbmFtZT0iY2FtX3Jlc29sdXRpb24iPgorICAgIDx2YWx1ZT5LYW1lcmEtQXVmbMO2c3VuZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMwIiBuYW1lPSJjYW1fcmVzb2x1dGlvbl9pbmZvIj4KKyAgICA8dmFsdWU+RGllIEthbWVyYS1BdWZsw7ZzdW5nIGhhdCBlaW5lbiBkaXJla3RlbiBFaW5mbHVzcyBhdWYgZGllIHZlcmJyYXVjaHRlIFVwbG9hZC1CYW5kYnJlaXRlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMxIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fZXJyb3IiPgorICAgIDx2YWx1ZT5TaWUgdmVyZsO8Z2VuIG5pY2h0IMO8YmVyIGRhcyBSZWNodCBzaWNoIHNlbGJzdCBvZGVyIGFuZGVyZW4gZXhrbHVzaXZlcyBBdWRpb3JlY2h0IHp1IGdlYmVuLiBTaWUga8O2bm5lbiBqZWRvY2ggZGVuIE1vZGVyYXRvciBiaXR0ZW4sIElobmVuIGRpZXNlIEJlcmVjaHRpZ3VuZyB6dXp1d2Vpc2VuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMyIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fYXNrIj4KKyAgICA8dmFsdWU+SWNoIHfDvHJkZSBnZXJuZSBkYXMgUmVjaHQgYXVmIGV4a2x1c2l2ZXMgQXVkaW8gZXJoYWx0ZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzMiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19hY3Rpb24iPgorICAgIDx2YWx1ZT5NaXIgZXhrbHVzaXZlcyBSZWRlcmVjaHQgZ2ViZW4gKGFsdGVybmF0aXY6IGtsaWNrIGF1ZiBWaWRlbyBQb2Qgb2RlciBGMTIpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzQiIG5hbWU9Im1pY3JvIGlzIG9uIj4KKyAgICA8dmFsdWU+TWlrcm9mb24gaXN0IGFuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzUiIG5hbWU9Im1pY3JvIGlzIG9mZiI+CisgICAgPHZhbHVlPk1pa3JvZm9uIGlzdCBhYmdlc2NoYWx0ZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNiIgbmFtZT0iaGlkZV9jaGF0Ij4KKyAgICA8dmFsdWU+Q2hhdCB2ZXJiZXJnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNyIgbmFtZT0iaGlkZV9hY3Rpdml0aWVzX2FuZF9hY3Rpb25zIj4KKyAgICA8dmFsdWU+QWt0aXZpdMOkdGVuIHZlcmJlcmdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM4IiBuYW1lPSJoaWRlX2ZpbGVzX2V4cGxvcmVyIj4KKyAgICA8dmFsdWU+RGF0ZWl2ZXJ3YWx0dW5nIHZlcmJlcmdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM5IiBuYW1lPSJoaWRlX2FjdGlvbnNfbWVudSI+CisgICAgPHZhbHVlPkFrdGlvbmVubWVuw7wgdmVyYmVyZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDAiIG5hbWU9ImhpZGVfc2NyZWVuX3NoYXJpbmciPgorICAgIDx2YWx1ZT5TY3JlZW4gU2hhcmluZyB2ZXJiZXJnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MSIgbmFtZT0iaGlkZV93aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+V2hpdGVib2FyZCB2ZXJiZXJnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MiIgbmFtZT0ic2hvdyBtaWNyb3Bob25lIHN0YXR1cyI+CisgICAgPHZhbHVlPk1pa3JvZm9uc3RhdHVzIGluIFZpZGVvIGFuemVpZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDMiIG5hbWU9ImxheW91dF9vcHRpb25zIj4KKyAgICA8dmFsdWU+TGF5b3V0IE9wdGlvbmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDQiIG5hbWU9ImNhbGVuZGFyIG5ldyBidXR0b24iPgorICAgIDx2YWx1ZT5OZXVlciBUZXJtaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0NSIgbmFtZT0iY2FsZW5kYXIgcGFzc3dvcmQgaW5mbyB0ZXh0Ij4KKyAgICA8dmFsdWU+UGFzc3dvcnRnZXNjaMO8dHp0IGlzdCBuaWNodCBkZXIgUmF1bSBzb25kZXJuIGRpZSBFaW5sYWR1bmdlbiBkaWUgYW4gZGllIFRlaWxuZWhtZXIgdmVyc2NoaWNrdCB3ZXJkZW4hIEQuaC4gd2VubiBTaWUgZWluZW4gVGVybWluIG1laHJtYWxzIG1pdCB1bnRlcnNjaGllZGxpY2hlbSBQYXNzd29ydCBzcGVpY2hlcm4gd2lyZCBqZWRlc21hbCBlaW4gTGluayBwZXIgbWFpbCB6dW0gS29uZmVyZW56cmF1bSBhbiBhbGxlIFRlaWxuZWhtZXIgdmVyc2NoaWNrdCBtaXQgZGVtIGpld2VpbGlnZW0gUGFzc3dvcnQuIEJlcmVpdHMgdmVyc2VuZGV0ZSBFaW5sYWR1bmdlbiBmdW5rdGlvbmllcmVuIHdlaXRlcmhpbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0NiIgbmFtZT0iY2FsZW5kYXIgZWRpdCBidXR0b24iPgorICAgIDx2YWx1ZT5UZXJtaW4gw6RuZGVybjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ3IiBuYW1lPSJzaXAgc2hvdyBkaWFsZXIiPgorICAgIDx2YWx1ZT5aZWlnZSBzaXAgZGlhbGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDgiIG5hbWU9InNpcCBjYWxsIj4KKyAgICA8dmFsdWU+QW5ydWZlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ5IiBuYW1lPSJjYWxlbmRhciBjb250YWN0IGxpc3QiPgorICAgIDx2YWx1ZT5aZWlnZSBLYWxlbmRlciBFaW50csOkZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+U3RhcnRzZWl0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUxIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5JaHIgVGVybWlua2FsZW5kZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MiIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+QXVmbmFobWVuIGFuc2VoZW4gdW5kIHZlcndhbHRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUzIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5Lb25mZXJlbnpyYXVtIGJlaXRyZXRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU0IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5CZW51dHplcnJlY2h0ZSB2ZXJ3YWx0ZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1NSIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+VmVyYmluZHVuZ2VuIHZlcndhbHRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU2IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5CZW51dHplcmdydXBwZW4gdmVyd2FsdGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTciIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPktvbmZlcmVuenLDpHVtZSB2ZXJ3YWx0ZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1OCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+U3lzdGVtLUVpbnN0ZWxsdW5nZW4gdmVyd2FsdGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTkiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPlNwcmFjaGVuIHZlcndhbHRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYwIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5MREFQIHVuZCBBRFMgS29uZmlndXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYxIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5FeHBvcnQvSW1wb3J0IHZvbiBTeXN0ZW1zaWNoZXJ1bmdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYyIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+U2llIHZlcmbDvGdlbiBuaWNodCDDvGJlciBkaWUgZXJmb3JkZXJsaWNoZW4gQmVyZWNodGlndW5nZW4gZsO8ciBkaWVzZSBGdW5rdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYzIiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+VGV4dCBiZWFyYmVpdGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjQiIG5hbWU9InNhbHV0YXRpb24iPgorICAgIDx2YWx1ZT5Qcm9mPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjUiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+VmVyw7ZmZmVudGxpY2hlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY2IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlN0YXJ0IFB1Ymxpc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2NyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdG9wIFB1Ymxpc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2OCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5Ib3N0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjkiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UHVibGlzaCBBcHA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5QdWJsaXNoIElkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzEiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UmVkdXppZXJlbiBTaWUgZGllIEJyZWl0ZSBkZXMgU2hhcmluZy1TY3JlZW5zLCBiZXZvciBTaWUgdmVyc3VjaGVuIGlobiBuYWNoIGxpbmtzIHp1IHZlcnNjaGllYmVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDcyIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHV6aWVyZW4gU2llIGRpZSBIw7ZoZSBkZXMgU2hhcmluZy1TY3JlZW5zLCBiZXZvciBTaWUgdmVyc3VjaGVuIGlobiBuYWNoIHVudGVuIHp1IHZlcnNjaGllYmVuLDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDczIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHV6aWVyZW4gU2llIHggZGVzIFNoYXJpbmctU2NyZWVucywgYmV2b3IgU2llIHZlcnN1Y2hlbiBpaG4genUgZXJ3ZWl0ZXJuIHdlaXRlciw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3NCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5SZWR1emllcmVuIFNpZSB5IGRlcyBTaGFyaW5nLVNjcmVlbnMsIGJldm9yIFNpZSB2ZXJzdWNoZW4gZGllIEjDtmhlIHp1IHZlcsOkbmRlcm4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzUiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+VHJhZ2VuIFNpZSBoaWVyIGRpZSBFaW5zdGVsbHVuZ2VuIHp1IElocmVuIEJpbGRzY2hpcm1kYXRlbiBmw7xyIERyaXR0YW5iZWl0ZXIgd2llIGp1c3Rpbi50diBlaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3NiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5CaXR0ZSBzdGFydGVuIFNpZSBTY3JlZW4tU2hhcmluZywgdW0gaW4gZGVyIExhZ2UgenUgc2VpbiwgaWhuIHp1IHZlcsO2ZmZlbnRsaWNoZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3NyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5Nb2RlcmF0b3IgQmVyZWNodGlndW5nIGVyZm9yZGVybGljaGUsIHVtIGRpZSBBdWZuYWhtZSB6dSBzdGFydGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzgiIG5hbWU9Im5vIHJpZ2h0IGZvciBleGNsdXNpdmUgYXVkaW8iPgorICAgIDx2YWx1ZT5TaWUgaGFiZW4ga2VpbmUgQmVyZWNodGlndW5nLCB1bSBqZWRlbSBUZWlsbmVobWVyIEF1ZGlvLVJlY2h0ZSB6dSBnZXfDpGhyZW4uIFNpZSBtw7xzc2VuIFJvbGxlIE1vZGVyYXRvciBiZXNpdHplbiBvZGVyIGRhcyBSZWNodCBBdWRpbyBmw7xyIGplZGVzIE1pa3JvZm9uIGVpbnp1c2NoYWx0ZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzkiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPm5ldWUgRGF0ZWkgaW4gRGF0ZWktRXhwbG9yZXIgaG9jaGxhZGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODAiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPsOWZmZuZSBuZXVlbiBEaWFsb2cgbWl0IFNoYXJpbmctRWluc3RlbGx1bmdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgxIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5FaW4gZXhpc3RpZXJlbmRlciBNb2RlcmF0b3IgbXVzcyBkaWVzIGdlbmVobWlnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MiIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+RnJhZ2VuIFNpZSBkZW4gTW9kZXJhdG9yLCB1bSBJaHIvZSBXZWJjYW0vTWlrcm8genUgdGVpbGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODMiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkZlZWRiYWNrIHNhbW1lbG4sIGluZGVtIHNpZSBlaW5lIFVtZnJhZ2Ugc3RhcnRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg0IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5WZXJnYW5nZW5lIHVuZCBnZWdlbnfDpHJ0aWdlIFVtZnJhZ2UtRXJnZWJuaXNzZSBhbHMgRGlhZ3JhbW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODUiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlN0aW1tZW4gU2llIGFiLCB3ZW5uIGVzIGVpbmUgVW1mcmFnZSBmw7xyIGRpZXNlbiBLb25mZXJlbnpyYXVtIGdpYnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NiIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+QmVhcmJlaXRlbiBkZXIgV2ViY2FtIHVuZCBNaWtyb2Zvbi1FaW5zdGVsbHVuZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODciIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkJlc3TDpHRpZ2VuIHVuZCB2ZXJsYXNzZW4gZGVzIFJhdW1lczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg4IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5SdWZlbiBTaWUgZXh0ZXJuZSBQZXJzb25lbiDDvGJlciBWb0lQL1NJUCBhbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg5IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5TZW5kZW4gU2llIGVpbmUgRS1NYWlsIG1pdCBlaW5lbSBkaXJla3RlbiBMaW5rIHp1IGRpZXNlbSBSYXVtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTAiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPsOEbmRlcm4gU2llIElocmUgV2hpdGVib2FyZC1FaW5zdGVsbHVuZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTEiIG5hbWU9ImJhY2t1cCBhZG1pbiI+CisgICAgPHZhbHVlPk1heGltYWwgVXBsb2FkLUdyw7bDn2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MiIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+RnJhZ2VuIFNpZSBkZW4gTW9kZXJhdG9yLCB1bSBJaHIgV2hpdGVib2FyZCB0ZWlsZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MyIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+U3RhcnQgUHJpdmF0ZSBDaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTQiIG5hbWU9ImFsbF9wcml2YXRlX2NoYXQiPgorICAgIDx2YWx1ZT5BbGxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTUiIG5hbWU9InByaXZhdGUgY2hhdCI+CisgICAgPHZhbHVlPlNpZSBrw7ZubmVuIG5pY2h0IG1pdCBzaWNoc2VsYnN0IGVpbmVuIHByaXZhdGVuIENoYXQgc3RhcnRlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NiIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+U2llIGhhYmVuIGJlcmVpdHMgZWluZW4gcHJpdmF0ZW4gQ2hhdCBtaXQgZGllc2VtIFRlaWxuZWhtZXIgZ2VzdGFydGV0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk3IiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5Xb2xsZW4gU2llIHdpcmtsaWNoIGRpZXNlbiBwcml2YXRlbiBDaGF0IGzDtnNjaGVuPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk4IiBuYW1lPSJTZXJ2ZXJzIj4KKyAgICA8dmFsdWU+U2VydmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTkiIG5hbWU9IlNlcnZlcnMiPgorICAgIDx2YWx1ZT5CZXRlaWxpZ3RlbiBTZXJ2ZXIgaW0gQ2x1c3RlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAwIiBuYW1lPSJTZXJ2ZXIgbmFtZSI+CisgICAgPHZhbHVlPlNlcnZlciBOYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDEiIG5hbWU9IlNlcnZlciBBZGRyZXNzIj4KKyAgICA8dmFsdWU+U2VydmVyLUFkZHJlc3NlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDIiIG5hbWU9IlNlcnZlciBkZXRhaWxzIj4KKyAgICA8dmFsdWU+U2VydmVyLURldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMyIgbmFtZT0iU2VuZCBTTVMiPgorICAgIDx2YWx1ZT5TZW5kZSBTTVM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNCIgbmFtZT0icHVibGlzaGluZ19tZXNzYWdlIj4KKyAgICA8dmFsdWU+VmVyw7ZmZmVudGxpY2hlbi4gTnV0emVyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA1IiBuYW1lPSJjbWRfbGluZV9hZG1pbiI+CisgICAgPHZhbHVlPlVtIFplaXQgdW5kIEludGVybmV0LVZlcmtlaHIgc3BhcmVuLCBrw7ZubmVuIFNpZSBkZW4gQmVmZWhsIGFkbWluIGbDvHIgQmFja3VwL1dpZWRlcmhlcnN0ZWxsZW4vQWt0dWFsaXNpZXJlbiB2ZXJ3ZW5kZW4uICgxKSBHZWhlbiBzaWUgenVtIE9NLUluc3RhbGxhdGlvbnNwZmFkICh6LmIuIC9vcHQvcmVkNSkgKDIpIFN0b3BlbiBTaWUgT00gKHouYi4gLi9yZWQ1LXNodXRkb3duLnNoKSAoMykgLi9hZG1pbi5zaCAtYiAtZmlsZSB+L2hldXRlX29tX2JhY2t1cC56aXAgKEJhY2t1cCB2b20gYmVzdGVoZW5kZW4gT00gZXJzdGVsbGVuKSAoNCkgTGFkZW4gU2llIGRpZSBuZXVlIFZlcnNpb24gT00gaGVydW50ZXIgKDUpIG12IC9vcHQvcmVkNSAvb3B0LnJlZDUuYmFrIChrb3BpZXJlbiBTaWUgZGllIGV4aXN0aWVyZW5kZSBPTS1WZXJzaW9uIGbDvHIgZGVuIEZhbGwgOikpICg2KSBFbnRwYWNrZW4gU2llIGRpZSBoZXJ1bnRlcmdlbGFkZW5lIE9NLVZlcnNpb24gbmFjaCAvb3B0L3JlZDUgKDcpIC4vYWRtaW4uc2ggLWkgLWZpbGUgfi9oZXV0ZV9vbV9iYWNrdXAuemlwIChvciAnLi9hZG1pbi5zaCAtaSAtZmlsZSB+L2hldXRlX29tX2JhY2t1cC56aXAgLS1kYi10eXBlIG15c3FsIC0tZGItdXNlciBvbV91c2VyIC0tZGItcGFzcyBvbV91c2VyX3Bhc3MnLCBmw7xyIGRlbiBGYWxsLCBkYXNzIFNpZSBlaW5lIE5pY2h0LVN0YW5kYXJkLURCIHZlcndlbmRlbikgKDgpIFN0YXJ0ZW4gU2llIE9NPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDYiIG5hbWU9InB1YmxpY19yb29tX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5nZW1laW5zYW1lIFLDpHVtZSBmw7xyIGFsbGUgQmVudXR6ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNyIgbmFtZT0icHJpdmF0ZV9yb29tX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5nZW1laW5zYW1lIFLDpHVtZSBmw7xyIGRpZSBha3R1ZWxsZSBCZW51dHplci1HcnVwcGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwOCIgbmFtZT0ibXlfcm9vbV90b29sdGlwIj4KKyAgICA8dmFsdWU+UsOkdW1lIGRlcyBha3R1ZWxsZW4gQmVudXR6ZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDkiIG5hbWU9ImNyZWF0ZV9uZXdfcm9vbSI+CisgICAgPHZhbHVlPkVyc3RlbGxlbi/DhG5kZXJuIFRlcm1pbiBzcGV6aWVsbGVyIFJhdW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxMCIgbmFtZT0ibXVsdGlwbGVfYWRkcmVzc2VzIj4KKyAgICA8dmFsdWU+U2llIGvDtm5uZW4gbWVocmVyZSBBZHJlc3NlbiBpbSBmb2xnZW5kZW4gRm9ybWF0IGFuZ2ViZW46IHZvcm5hbWUxIG5hY2huYW1lMSAmbHQ7ZW1haWwxJmd0Oywidm9ybmFtZTIgbmFjaG5hbWUyIiAmbHQ7ZW1haWwyJmd0Oywndm9ybmFtZSBuYWNobmFtZTMnICZsdDtlbWFpbDMmZ3Q7LCAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxMSIgbmFtZT0ic3RyZWFtX3ZvbHVtZSI+CisgICAgPHZhbHVlPlN0cmVhbS1Wb2x1bWVuIGFucGFzc2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTIiIG5hbWU9Im1pY3JvcGhvbmVfdm9sdW1lIj4KKyAgICA8dmFsdWU+TWlrcm9mb24tVm9sdW1lbiBhbnBhc3NlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTEzIiBuYW1lPSJjaGF0X21vZGVyYXRlZCI+CisgICAgPHZhbHVlPkNoYXQgaXN0IG1vZGVyaWVydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE0IiBuYW1lPSJjaGF0X21vZGVyYXRlZCI+CisgICAgPHZhbHVlPkVybGF1YmUgTmFjaHJpY2h0ZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNSIgbmFtZT0iY2hhdF9vcGVuZWQiPgorICAgIDx2YWx1ZT5DaGF0LUZlbGQgc3RhbmRhcmRtw6TDn2lnIGdlw7ZmZm5ldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE2IiBuYW1lPSJmaWxlc19vcGVuZWQiPgorICAgIDx2YWx1ZT5EYXRlaWVuLUZlbnN0ZXIgc3RhbmRhcmRtw6TDn2lnIGdlw7ZmZm5ldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE3IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gc2VjdGlvbiBsYXN0cGluZyI+CisgICAgPHZhbHVlPmxldHp0ZXIgcGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE4IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gc2VjdGlvbiBsYXN0cGluZyBpbmZvIj4KKyAgICA8dmFsdWU+SmVkZXIgU2xhdmUgc2VuZGV0IGFsbGUgMyBTZWt1bmRlbiBlaW5lbiBQaW5nIGFuIGRlbiBNYXN0ZXIgKGtvbmZpZ3VyaWVyYmFyKS4gRGVyIGxhc3RQaW5nIGRlcyBTbGF2ZSBtdXNzIGtsZWluZXIgc2VpbiBhbHMgMSBNaW51dGUsIHNvIGRhc3MgZGVyIE1hc3RlciBkZW4gU2xhdmUgdmVyd2VuZGV0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE5IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcG9ydCI+CisgICAgPHZhbHVlPkhUVFAgUG9ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIwIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gdXNlciI+CisgICAgPHZhbHVlPkJlbnV0emVyIChTT0FQLUFjY2Vzcyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyMSIgbmFtZT0ic2VydmVyIGFkbWluIHBhc3N3b3JkIj4KKyAgICA8dmFsdWU+UGFzc3dvcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyMiIgbmFtZT0ic2VydmVyIGFkbWluIHdlYmFwcCBwYXRoIj4KKyAgICA8dmFsdWU+V2ViYXBwbGlrYXRpb25zLVBmYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyMyIgbmFtZT0ic2VydmVyIGFkbWluIHByb3RvY29sIj4KKyAgICA8dmFsdWU+UHJvdG9rb2xsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjQiIG5hbWU9InNlcnZlciBhZG1pbiBwaW5nIHJ1bm5pbmciPgorICAgIDx2YWx1ZT5waW5nIGzDpHVmdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI1IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gYWN0aXZlIj4KKyAgICA8dmFsdWU+QWN0aXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjYiIG5hbWU9ImdlbmVyYXRlX2hhc2giPgorICAgIDx2YWx1ZT5VUkwgZ2VuZXJpZXJlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI3IiBuYW1lPSJuZXR3b3JrIHRlc3RpbmcgbGluayI+CisgICAgPHZhbHVlPk5lenR3ZXJrIHRlc3RlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI4IiBuYW1lPSJyb29tX29wdGlvbnMiPgorICAgIDx2YWx1ZT5BdXN3YWhsIEludGVydmlldyBWaWRlbyBQb2Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyOSIgbmFtZT0iZm9udF91bmRlcmxpbmUiPgorICAgIDx2YWx1ZT51bnRlcnN0cmVpY2hlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMwIiBuYW1lPSJmb250X3N0eWxlIj4KKyAgICA8dmFsdWU+U2NocmlmdGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMxIiBuYW1lPSJhbGxvd19mb250X3N0eWxlcyI+CisgICAgPHZhbHVlPlNjaHJpZnRhcnRlbiBlcmxhdWJlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMyIiBuYW1lPSJmb250X2NvbG9yIj4KKyAgICA8dmFsdWU+U2NocmlmdGZhcmJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzMiIG5hbWU9Imh5cGVybGluayI+CisgICAgPHZhbHVlPkh5cGVybGluazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM0IiBuYW1lPSJjb25uZWN0aW9uIGFkbWluIj4KKyAgICA8dmFsdWU+U2Vzc2lvbi1TdGF0aXN0aWtlbiBhbnplaWdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM1IiBuYW1lPSJjb25uZWN0aW9uIGFkbWluIj4KKyAgICA8dmFsdWU+RGV0YWlscyB6dXIgU2Vzc2lvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM2IiBuYW1lPSJzeXN0ZW1faW1wb3J0Ij4KKyAgICA8dmFsdWU+U3lzdGVtIEltcG9ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM3IiBuYW1lPSJpbmNsdWRlX2ludG9fYmFja3VwIj4KKyAgICA8dmFsdWU+YmVpbmhhbHRldCBob2NoZ2VsYWRlbmUgRGF0ZWllbiB1bmQgQXVmbmFobWVuIGltIEJhY2t1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM4IiBuYW1lPSJyb29tX2FkbWluX3NpcCI+CisgICAgPHZhbHVlPkFrdGl2aWVyZW4gU2llIFNJUC1WZXJrZWhyIGltIFJhdW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzOSIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2NvbmZpcm0iPgorICAgIDx2YWx1ZT5Xb2xsZW4gU2llIHdpcmtsaWNoIGRpZXNlbSBCZW51dHplciBleGtsdXNpdmUgQXVkaW9yZWNodGUgZ2ViZW4/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NDAiIG5hbWU9Im5vX3RpbWV6b25lIj4KKyAgICA8dmFsdWU+UGxlYXNlIHNwZWNpZnkgeW91ciB0aW1lem9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTQ1IiBuYW1lPSJjb250ZW50X2lzX3NhdmluZyI+CisgICAgPHZhbHVlPkNvbnRlbnQgaXMgU2F2aW5nLCBQbGVhc2Ugd2FpdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKzwvbGFuZ3VhZ2U+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L2xhbmd1YWdlcy9kdXRjaC54bWwgYi9XZWJDb250ZW50L2xhbmd1YWdlcy9kdXRjaC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmRhNTlhNgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL2R1dGNoLnhtbApAQCAtMCwwICsxLDQ2NTIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+CisKKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCisKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK1RoaXMgRmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBieSB0aGUgTGFuZ3VhZ2VFZGl0b3IgCit0byBhZGQgbmV3IExhbmd1YWdlcyBvciBtb2RpZnkvY3VzdG9taXplIGl0IHVzZSB0aGUgTGFuZ3VhZ2VFZGl0b3IgCitzZWUgaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnL0xhbmd1YWdlRWRpdG9yLmh0bWwgZm9yIERldGFpbHMgCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy0tPgorPGxhbmd1YWdlIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOm5vTmFtZXNwYWNlU2NoZW1hTG9jYXRpb249Imxhbmd1YWdlLnhzZCI+CisgIDxzdHJpbmcgaWQ9IjEiIG5hbWU9ImNvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT5PdmVybGVnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIiIG5hbWU9Im1lZXRpbmciPgorICAgIDx2YWx1ZT5BZnNwcmFhazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzIiBuYW1lPSJjbGFzc3Jvb20iPgorICAgIDx2YWx1ZT5FdmVuZW1lbnRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0IiBuYW1lPSJzZXR0aW5ncyI+CisgICAgPHZhbHVlPkluc3RlbGxpbmdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1IiBuYW1lPSJiZW51dHplciI+CisgICAgPHZhbHVlPlByb2ZpZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNiIgbmFtZT0iYWRtaW4iPgorICAgIDx2YWx1ZT5CZWhlZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNyIgbmFtZT0ic3RvcCI+CisgICAgPHZhbHVlPlN0b3A8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOCIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+T3BuZW1lbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5IiBuYW1lPSJub2ZpbGUiPgorICAgIDx2YWx1ZT5HZWVuIGJlc3RhbmQgYmVzY2hpa2JhYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAiIG5hbWU9InJlY29yZGJ5dGVhY2hlciI+CisgICAgPHZhbHVlPk9wbmFtZW4gZG9vciBQcmVzZW50YXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMSIgbmFtZT0iY29ubmVjdGVkdXNlcnMiPgorICAgIDx2YWx1ZT5BYW53ZXppZ2UgZ2VicnVpa2Vyczo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIiIG5hbWU9InN0YXJ0Y29uZiI+CisgICAgPHZhbHVlPlN0YXJ0IGVlbiBvdmVybGVnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzIiBuYW1lPSJteW5hbWUiPgorICAgIDx2YWx1ZT5NaWpuIE5hYW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQiIG5hbWU9InZpZGVvY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPlZpZGVvIE92ZXJsZWc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUiIG5hbWU9ImltcG9ydCI+CisgICAgPHZhbHVlPkJlc3RhbmQgSW1wb3J0ZXJlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNiIgbmFtZT0icmVmcmVzaGZpbGVzIj4KKyAgICA8dmFsdWU+TGlqc3QgdmVybmlldXdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNyIgbmFtZT0idG9tYWluZmlsZSI+CisgICAgPHZhbHVlPk5hYXIgaG9vZmQgYmVzdGFuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOCIgbmFtZT0ibmV3cG9sbCI+CisgICAgPHZhbHVlPm5pZXV3ZSBzdGVtYnVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5IiBuYW1lPSJuZXdwb2xsaGVhZGVyIj4KKyAgICA8dmFsdWU+RWVuIG5pZXV3ZSBzdGVtYnVzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMCIgbmFtZT0icXVlc3Rpb24iPgorICAgIDx2YWx1ZT5WcmFhZzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEiIG5hbWU9InBvbGx0eXBlIj4KKyAgICA8dmFsdWU+U29vcnQgc3RlbWJ1czo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIiIG5hbWU9ImNyZWF0ZSI+CisgICAgPHZhbHVlPkFhbm1ha2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzIiBuYW1lPSJpbmZvbWVzc2FnZSI+CisgICAgPHZhbHVlPkluZm9ybWF0aWU6IEllZGVyZSBnZWJydWlrZXIga3Jpamd0IGVlbiBiZXJpY2h0IG92ZXIgZGUgc3RlbWJ1cy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQiIG5hbWU9ImNyZWF0cG9sbCI+CisgICAgPHZhbHVlPlN0ZW1idXMgYWFubWFrZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUiIG5hbWU9ImNhbmNlbCI+CisgICAgPHZhbHVlPkFubnVsZXJlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNiIgbmFtZT0ieWVzbm8iPgorICAgIDx2YWx1ZT5KYS9OZWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjciIG5hbWU9Im51bWVyaWMiPgorICAgIDx2YWx1ZT5HZXRhbCAxLTEwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4IiBuYW1lPSJwb2xsIj4KKyAgICA8dmFsdWU+U3RlbWJ1czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOSIgbmFtZT0ibW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkplIG1vZXQgZWVuIG9yZ2FuaXNhdG9yIHppam4gb20gZWVuIHZyYWFnIGFhbiB0ZSBtYWtlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMCIgbmFtZT0idm90ZSI+CisgICAgPHZhbHVlPkpvdXcgc3RlbSBpcyBnZXJlZ2lzdHJlZXJkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMSIgbmFtZT0iYWxyZWFkeXZvdGVkIj4KKyAgICA8dmFsdWU+SmUgaGVidCBhbCBnZXN0ZW1kIG9wIGRlemUgc3RlbWJ1cy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIiIG5hbWU9InZvdGluZyI+CisgICAgPHZhbHVlPlN0ZW0hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzIiBuYW1lPSJhbnN3ZXIiPgorICAgIDx2YWx1ZT5Kb3V3IEFudHdvb3JkOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNCIgbmFtZT0ieWVzIj4KKyAgICA8dmFsdWU+SmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUiIG5hbWU9Im5vIj4KKyAgICA8dmFsdWU+TmVlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2IiBuYW1lPSJxdWVzdGlvbndhbnQiPgorICAgIDx2YWx1ZT5XaWwgd2V0ZW46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3IiBuYW1lPSJwb2xscmVzdWx0cyI+CisgICAgPHZhbHVlPlN0ZW1idXMgcmVzdWx0YWF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4IiBuYW1lPSJxdWVzdGlvbiI+CisgICAgPHZhbHVlPlZyYWFnOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOSIgbmFtZT0icmVzdWx0cyI+CisgICAgPHZhbHVlPlJlc3VsdGFhdDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAiIG5hbWU9ImFuc3dlcnMiPgorICAgIDx2YWx1ZT5BbnR3b29yZGVuOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MSIgbmFtZT0ibm9wb2xsIj4KKyAgICA8dmFsdWU+RXIgaXMgZ2VlbiBzdGVtYnVzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MiIgbmFtZT0idm90aW5ncyI+CisgICAgPHZhbHVlPlN0ZW0hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzIiBuYW1lPSJtZWV0aW5nIj4KKyAgICA8dmFsdWU+T3ZlcmxlZyAobWF4IDQgcGxla2tlbik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQiIG5hbWU9ImNvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT5PdmVybGVnIChtYXggNTAgcGxla2tlbik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUiIG5hbWU9InR5cGUiPgorICAgIDx2YWx1ZT5Tb29ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NiIgbmFtZT0icmVtYWluaW5nc2VhdHMiPgorICAgIDx2YWx1ZT5BbmRlcmUgcGxla2tlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NyIgbmFtZT0iYWxyZWFkeWNob3NlbiI+CisgICAgPHZhbHVlPlJlZWRzIGdla296ZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgiIG5hbWU9ImVudGVyIj4KKyAgICA8dmFsdWU+ZGVlbG5lbWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5IiBuYW1lPSJtb2RsZWF2ZSI+CisgICAgPHZhbHVlPkRlIG9yZ2FuaXNhdG9yIGhlZWZ0IGhldCBvdmVybGVnIHZlcmxhdGVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MCIgbmFtZT0ic3lzdGVtbWVzc2FnZSI+CisgICAgPHZhbHVlPlN5c3RlZW0gaW5mb3JtYXRpZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MSIgbmFtZT0iY2hvc3NlZGV2aWNlIj4KKyAgICA8dmFsdWU+R2Vrb3plbiBhcHBhcmFhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MiIgbmFtZT0iY2hvb3NlY2FtIj4KKyAgICA8dmFsdWU+R2Vrb3plbiB3ZWJjYW06PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzIiBuYW1lPSJjaG9vc2VtaWMiPgorICAgIDx2YWx1ZT5HZWtvemVuIG1pY3JvZm9vbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQiIG5hbWU9Im9rIj4KKyAgICA8dmFsdWU+T0s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUiIG5hbWU9ImNhbmNlbDIiPgorICAgIDx2YWx1ZT5Bbm51bGVyZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYiIG5hbWU9InJlY29uZWVjdG5lZWRlZCI+CisgICAgPHZhbHVlPkplIG1vZXQgb3BuaWV1dyB2ZXJiaW5kaW5nIG1ha2VuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NyIgbmFtZT0iZWRpdHNldHVwIj4KKyAgICA8dmFsdWU+V2lqemlnIGluc3RlbGxpbmdlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgiIG5hbWU9ImNvdXJzZSI+CisgICAgPHZhbHVlPkN1cnN1czo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkiIG5hbWU9Imxhbmd1YWdlIj4KKyAgICA8dmFsdWU+VGFhbDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAiIG5hbWU9Im9rMiI+CisgICAgPHZhbHVlPk9LPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxIiBuYW1lPSJjYW5jZWwzIj4KKyAgICA8dmFsdWU+QW5udWxlcmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyIiBuYW1lPSJjbGVhcndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5UZWtlbmJvcmQgc2Nob29ubWFrZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMiIG5hbWU9ImNsZWFyd2hpdGVib2FyZHF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+V2lsIGplIGRhdCBoZXQgdGVrZW5ib3JkIHNjaG9vbiB3b3JkdCBnZW1hYWt0IGJpaiBoZXQgdG9ldm9lZ2VuIHZhbiBlZW4gbmlldXcgcGxhYXRqZT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQiIG5hbWU9ImRvbnRhc2thZ2FpbiI+CisgICAgPHZhbHVlPk5pZXQgd2VlciB2cmFnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUiIG5hbWU9Im5vIj4KKyAgICA8dmFsdWU+TmVlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2IiBuYW1lPSJlZGl0c2V0dXAyIj4KKyAgICA8dmFsdWU+V2lqemlnIGluc3RlbGxpbmdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NyIgbmFtZT0ibmVlZGNvbmZpcm1hdGlvbndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5CZXZlc3RpZ2luZyB2cmFnZW4gdm9vciBoZXQgc2Nob29ubWFrZW4gdmFuIGhldCB0ZWtlbmJvcmQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4IiBuYW1lPSJ1c2VyaW5mbyI+CisgICAgPHZhbHVlPkdlYnJ1aWtlcnMgSW5mb3JtYXRpZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OSIgbmFtZT0iY2xlYXJkcmF3YXJlYSI+CisgICAgPHZhbHVlPlRla2VuYm9yZCBzY2hvb25tYWtlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MCIgbmFtZT0idW5kbyI+CisgICAgPHZhbHVlPk9uZ2VkYWFuIG1ha2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxIiBuYW1lPSJyZWRvIj4KKyAgICA8dmFsdWU+T3BuaWV1dyBtYWtlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MiIgbmFtZT0ic2VsZWN0b2JqZWN0Ij4KKyAgICA8dmFsdWU+U2VsZWN0ZWVyIGVlbiBvYmplY3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMiIG5hbWU9InRleHQiPgorICAgIDx2YWx1ZT5UZWtzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NCIgbmFtZT0icGFpbnQiPgorICAgIDx2YWx1ZT5WZXJmPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1IiBuYW1lPSJkcmF3bGluZSI+CisgICAgPHZhbHVlPkxpam4gVHJla2tlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NiIgbmFtZT0iZHJhd3UiPgorICAgIDx2YWx1ZT5PbmRlcnN0cmVwZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzciIG5hbWU9InJlY3QiPgorICAgIDx2YWx1ZT5SZWNodGhvZWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgiIG5hbWU9ImVsbGlwc2UiPgorICAgIDx2YWx1ZT5FbGxpcHNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5IiBuYW1lPSJhcnJvdyI+CisgICAgPHZhbHVlPlBpamw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAiIG5hbWU9ImRlbGV0ZWNob3NlbiI+CisgICAgPHZhbHVlPlZlcndpamRlciBoZXQgZ2VzZWxlY3RlZXJkZSBvYmplY3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEiIG5hbWU9ImFwcGxpeW1vZCI+CisgICAgPHZhbHVlPlRvZXBhc3NlbiB2b29yIGFhbnBhc3Npbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIiIG5hbWU9ImFwcGx5Ij4KKyAgICA8dmFsdWU+VG9lcGFzc2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzIiBuYW1lPSJjYW5jZWwiPgorICAgIDx2YWx1ZT5Bbm51bGVyZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQiIG5hbWU9Im1vZCI+CisgICAgPHZhbHVlPk9yZ2FuaXNhdG9yIHdvcmRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NSIgbmFtZT0iY2xvc2UiPgorICAgIDx2YWx1ZT5BZnNsdWl0ZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYiIG5hbWU9Iml0YWxpYyI+CisgICAgPHZhbHVlPml0YWxpYzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NyIgbmFtZT0iYm9sZCI+CisgICAgPHZhbHVlPmJvbGQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgiIG5hbWU9IndhaXRpbmciPgorICAgIDx2YWx1ZT5XQUNIVEVOPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5IiBuYW1lPSJhcHBseU1lc3NhZ2UiPgorICAgIDx2YWx1ZT5FZW4gZ2VicnVpa2VyIHdpbCBvcmdhbmlzYXRvciB3b3JkZW4sIGplIGt1bnQgaGVtIHRvZWdhbmcgZ2V2ZW4gdG90IGhldCB3aGl0ZWJvYXJkIG9mIG9vayBvcmdhbmlzYXRvciBtYWtlbi4gR2VicnVpa2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MCIgbmFtZT0iYWNjZXB0Ij4KKyAgICA8dmFsdWU+QWNjZXB0ZXJlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MSIgbmFtZT0icmVqZWN0Ij4KKyAgICA8dmFsdWU+QWZ3aWp6ZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIiIG5hbWU9ImNhbmNlbCI+CisgICAgPHZhbHVlPkFubnVsZXJlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MyIgbmFtZT0ic2VuZG1vZHJlcXVlc3RtZXNzYWdlIj4KKyAgICA8dmFsdWU+VmVyc3R1dXIgdmVyem9layBuYWFyIGRlIHZvbGdlbmRlIGdlYnJ1aWtlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQiIG5hbWU9ImFjY2VwdCI+CisgICAgPHZhbHVlPkdlYWNjZXB0ZWVyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NSIgbmFtZT0icmVqZWN0Ij4KKyAgICA8dmFsdWU+QWZnZXdlemVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2IiBuYW1lPSJjaGFuZ2Vtb2QiPgorICAgIDx2YWx1ZT5WZXJhbmRlciBvcmdhbmlzYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NyIgbmFtZT0ibm9ubW9kZXJyb3JtZXNzYWdlIj4KKyAgICA8dmFsdWU+SmUgYmVudCBnZWVuIG9yZ2FuaXNhdG9yITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OCIgbmFtZT0ibW9kZXJhdG9yIj4KKyAgICA8dmFsdWU+T3JnYW5pc2F0b3I6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5IiBuYW1lPSJyb29tZnVsbG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EaXQgb3ZlcmxlZyBpcyB2b2wuIFByb2JlZXIgaGV0IGxhdGVyIG5vZ21hYWxzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAiIG5hbWU9ImVsbGxpcHNlIj4KKyAgICA8dmFsdWU+RWxsaXBzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEiIG5hbWU9ImNsb3NlIj4KKyAgICA8dmFsdWU+U2x1aXRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIiIG5hbWU9IkF1dGhFcnJvciI+CisgICAgPHZhbHVlPmlucHV0IGRhdGEgZm91dG1lbGRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzIiBuYW1lPSJtaW40dXNlcm5hbWUiPgorICAgIDx2YWx1ZT5HZWJydWlrZXJzbmFhbSBtb2V0IG1pbmltYWFsIDQga2FyYWt0ZXJzIHppam4gZW4gaXMgaG9vZmRsZXR0ZXIgZ2V2b2VsaWchPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNCIgbmFtZT0ibWluNHBhc3MiPgorICAgIDx2YWx1ZT5XYWNodHdvb3JkIG1vZXQgbWluaW1hYWwgNCBrYXJha3RlcnMgemlqbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUiIG5hbWU9InVzZXJuYW1ldGFrZW4iPgorICAgIDx2YWx1ZT5EZXplIGdlYnJ1aWtlcnNuYWFtIGlzIGFsIGdlYnJ1aWt0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNiIgbmFtZT0iZW1haWx0YWtlbiI+CisgICAgPHZhbHVlPkRpdCBlLW1haWwgYWRyZXMgaXMgYWwgZ2VyZWdpc3RyZWVyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDciIG5hbWU9ImVtYWlsdGFrZW4iPgorICAgIDx2YWx1ZT5TeXN0ZWVtIGZvdXQgbmVlbSBjb250YWN0IG9wIG1ldCBlZW4gU3lzdGVlbSBiZWhlZXJkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4IiBuYW1lPSJBdXRobG9naW4iPgorICAgIDx2YWx1ZT5JbmxvZ2dlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkiIG5hbWU9IkF1dGh1c2VyIj4KKyAgICA8dmFsdWU+SW5sb2duYWFtL0UtbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAiIG5hbWU9IkF1dGhwYXNzIj4KKyAgICA8dmFsdWU+V2FjaHR3b29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEiIG5hbWU9IkF1dGhsYW5nIj4KKyAgICA8dmFsdWU+VGFhbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIiIG5hbWU9IkF1dGhyZWciPgorICAgIDx2YWx1ZT5JbmxvZ2dlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMiIG5hbWU9InJlZ2Zvcm1oZWFkIj4KKyAgICA8dmFsdWU+SW5zY2hyaWp2ZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0IiBuYW1lPSJyZWdmb3JtdXNlciI+CisgICAgPHZhbHVlPklubG9nbmFhbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUiIG5hbWU9InJlZ2Zvcm1wYXNzIj4KKyAgICA8dmFsdWU+V2FjaHR3b29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYiIG5hbWU9InJlZ2Zvcm1yZXR5cGUiPgorICAgIDx2YWx1ZT5Ob2dtYWFsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTciIG5hbWU9InJlZ2Zvcm1maXJzdG5hbWUiPgorICAgIDx2YWx1ZT5Wb29ybmFhbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgiIG5hbWU9InJlZ2Zvcm1sYXN0bmFtZSI+CisgICAgPHZhbHVlPkFjaHRlcm5hYW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5IiBuYW1lPSJyZWdmb3JtbWFpbCI+CisgICAgPHZhbHVlPkUtbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAiIG5hbWU9InJlZ2Zvcm1zdGF0ZSI+CisgICAgPHZhbHVlPkxhbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxIiBuYW1lPSJyZWdmb3JtYnRuMSI+CisgICAgPHZhbHVlPlJlZ2lzdHJlZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyIiBuYW1lPSJyZWdmb3JtYnRuMiI+CisgICAgPHZhbHVlPkFubnVsZXJlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMiIG5hbWU9IkF1dGhidG4yIj4KKyAgICA8dmFsdWU+R2VlbiBsaWQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+U3RhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1IiBuYW1lPSJ1c2VyYWRtaW4iPgorICAgIDx2YWx1ZT5HZWJydWlrZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNiIgbmFtZT0iZ3JvdXBhZG1pbiI+CisgICAgPHZhbHVlPkdyb2VwZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3IiBuYW1lPSJvcmdhZG1pbiI+CisgICAgPHZhbHVlPk9yZ2FuaXNhdGllczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgiIG5hbWU9ImhlYWRjb25mIj4KKyAgICA8dmFsdWU+VmVyZ2FkZXJydWltdGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOSIgbmFtZT0iY29uZl9wdWIiPgorICAgIDx2YWx1ZT5PcGVuYmFhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAiIG5hbWU9ImhlYWRfb3JnIj4KKyAgICA8dmFsdWU+T3JnYW5pc2F0aWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxIiBuYW1lPSJidG5fZW50ZXJyb29tIj4KKyAgICA8dmFsdWU+RGVlbG5lbWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMiIgbmFtZT0idXNlcmFsdGVyc2VsZl9sb2dpbiI+CisgICAgPHZhbHVlPklubG9nbmFhbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMiIG5hbWU9InVzZXJhbHRlcnNlbGZfcGFzcyI+CisgICAgPHZhbHVlPldhY2h0d29vcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Bhc3NyZXR5cGUiPgorICAgIDx2YWx1ZT5XYWNodHdvb3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNSIgbmFtZT0idXNlcmFsdGVyc2VsZl9maXJzdG5hbWUiPgorICAgIDx2YWx1ZT5Wb29ybmFhbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYiIG5hbWU9InVzZXJhbHRlcnNlbGZfbGFzdG5hbWUiPgorICAgIDx2YWx1ZT5BY2h0ZXJuYWFtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNyIgbmFtZT0idXNlcmFsdGVyc2VsZl9lbWFpbCI+CisgICAgPHZhbHVlPkUtbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgiIG5hbWU9InVzZXJhbHRlcnNlbGZfYmlydGgiPgorICAgIDx2YWx1ZT5HZWJvb3J0ZWRhdHVtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOSIgbmFtZT0idXNlcmFsdGVyc2VsZl9zdHJlZXRubyI+CisgICAgPHZhbHVlPlN0cmFhdCBlbiBudW1tZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Rvd24iPgorICAgIDx2YWx1ZT5Qb3N0Y29kZSBlbiBQbGFhdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3N0YXRlIj4KKyAgICA8dmFsdWU+TGFuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIiIG5hbWU9InVzZXJhbHRlcnNlbGZfYWRyZXNzY29tbWVudCI+CisgICAgPHZhbHVlPk1lZXIgZ2VnZXZlbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2hlYWRlciI+CisgICAgPHZhbHVlPkdlYnJ1aWtlcnNnZWdldmVuczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQiIG5hbWU9InNhdmVtZW51YmFyX3NhdmVsYWJlbCI+CisgICAgPHZhbHVlPk9wc2xhYW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1IiBuYW1lPSJzYXZlbWVudWJhcl9zYXZlbGFiZWwiPgorICAgIDx2YWx1ZT5PcHNsYWFuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NiIgbmFtZT0iYWRtaW5fdXNlcmxpc3RfdXNlcl9pZCI+CisgICAgPHZhbHVlPlVTRVItSUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3IiBuYW1lPSJhZG1pbl91c2VybGlzdF9sb2dpbiI+CisgICAgPHZhbHVlPkxvZ2lubmFhbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgiIG5hbWU9ImFkbWluX3VzZXJsaXN0X2ZpcnN0bmFtIj4KKyAgICA8dmFsdWU+Vm9vcm5hYW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5IiBuYW1lPSJhZG1pbl91c2VybGlzdF9sYXN0bmFtZSI+CisgICAgPHZhbHVlPkFjaHRlcm5hYW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwIiBuYW1lPSJ0dXJub3Zlcmxpc3RfbmV4dCI+CisgICAgPHZhbHVlPlZvbGdlbmRlIHRvbmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MSIgbmFtZT0idHVybm92ZXJsaXN0X3ByZSI+CisgICAgPHZhbHVlPlZvcmlnZSB0b25lbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIiIG5hbWU9InNhdmVjb250ZW50X2NvbmZpcm0iPgorICAgIDx2YWx1ZT5WZXJ3aWpkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzIiBuYW1lPSJzYXZlY29udGVudF9jb25maXJtX2NhbmNlbF9idG4iPgorICAgIDx2YWx1ZT5Bbm51bGVyZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU0IiBuYW1lPSJzYXZlY29udGVudF9jb25maXJtX2NvbmZpcm1fYnRuIj4KKyAgICA8dmFsdWU+VmVyd2lqZGVyZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU1IiBuYW1lPSJzYXZlbWVudWJhcl9hZGRsYWJlbCI+CisgICAgPHZhbHVlPlRvZXZvZWdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTYiIG5hbWU9InNhdmVtZW51YmFyX3JlbG9hZGxhYmVsIj4KKyAgICA8dmFsdWU+VmVybmlldXdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTciIG5hbWU9InNhdmVtZW51YmFyX2RlbGV0ZWxhYmVsIj4KKyAgICA8dmFsdWU+VmVyd2lqZGVyZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU4IiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fc3RhdHVzIj4KKyAgICA8dmFsdWU+U3RhdHVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1OSIgbmFtZT0idXNlcmFsdGVyX2FkbWluX3N0YXR1c0l0ZW0iPgorICAgIDx2YWx1ZT5CbG9ra2VyZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYwIiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fc3RhdHVzSXRlbSI+CisgICAgPHZhbHVlPlZyaWpnZXZlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjEiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9vcmdhbmlzYXRpb24iPgorICAgIDx2YWx1ZT5PcmdhbmlzYXRpZShzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjIiIG5hbWU9ImNhbGVuZGFyX2ljb25sYWJlbCI+CisgICAgPHZhbHVlPkthbGVuZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2MyIgbmFtZT0ic2F2ZXdpbmRvd19idG4iPgorICAgIDx2YWx1ZT5TbHVpdGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2NCIgbmFtZT0ib3JnYW5pc2F0aW9udGFibGVsaXN0X2lkcm93Ij4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY1IiBuYW1lPSJvcmdhbmlzYXRpb250YWJsZWxpc3RfbmFtZXJvdyI+CisgICAgPHZhbHVlPk5hYW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY2IiBuYW1lPSJ1c2VydmFsdWVfbGV2ZWxpZDEiPgorICAgIDx2YWx1ZT5HZWJydWlrZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY3IiBuYW1lPSJ1c2VydmFsdWVfbGV2ZWxpZDIiPgorICAgIDx2YWx1ZT5PcmdhbmlzYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjgiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGlkMyI+CisgICAgPHZhbHVlPkJlaGVlcmRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjkiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGxhYmVsIj4KKyAgICA8dmFsdWU+VG9lZ2FuZ3NuaXZlYXU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTcwIiBuYW1lPSJvcmd2YWx1ZV9oZWFkZXIiPgorICAgIDx2YWx1ZT5PcmdhbmlzYXRpZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzEiIG5hbWU9Im9yZ3ZhbHVlX29yZ25hbWUiPgorICAgIDx2YWx1ZT5OYWFtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MiIgbmFtZT0ib3JndmFsdWVfb3JnbmFtZSI+CisgICAgPHZhbHVlPk9yZ2FuaXNhdGllIHRvZXZvZWdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzMiIG5hbWU9Im9yZ3ZhbHVlX29yZ25hbWUiPgorICAgIDx2YWx1ZT5PcmdhbmlzYXRpZSB0b2V2b2VnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc0IiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luIj4KKyAgICA8dmFsdWU+QW5udWxlcmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3NSIgbmFtZT0ib3JndmFsdWVfdXNlcndpbiI+CisgICAgPHZhbHVlPlRvZXZvZWdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzYiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW4iPgorICAgIDx2YWx1ZT5WZXJ3aWpkZXIgb3JnYW5pc2F0aWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc3IiBuYW1lPSJvcmd2YWx1ZV91c2VybGlzdCI+CisgICAgPHZhbHVlPkdlYnJ1aWtlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzgiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJsaXN0YWRkIj4KKyAgICA8dmFsdWU+R2VicnVpa2VyIHRvZXZvZWdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzkiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJsaXN0ZGVsZXRlIj4KKyAgICA8dmFsdWU+R2VicnVpa2VyIHZlcndpamRlcmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4MCIgbmFtZT0ib3JndmFsdWVfdXNlcndpbmhlYWRlciI+CisgICAgPHZhbHVlPkdlYnJ1aWtlciBhYW4gb3JnYW5pc2F0aWUgdG9ldm9lZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4MSIgbmFtZT0ib3JndmFsdWVfdXNlcndpbnNlYXJjaGZpZWxkIj4KKyAgICA8dmFsdWU+Wm9layBnZWJydWlrZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgyIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luc2VhcmNoYnRuIj4KKyAgICA8dmFsdWU+Wm9lazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODMiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5zZWFyY2hyZXN1bHQiPgorICAgIDx2YWx1ZT5HZWJydWlrZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg0IiBuYW1lPSJsb2dpbndpbl9jaG9vc2VvcmdhbmlzYXRpb24iPgorICAgIDx2YWx1ZT5PcmdhbmlzYXRpZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODUiIG5hbWU9ImxvZ2lud2luX2Nob29zZW9yZ2FuaXNhdGlvbmJ0biI+CisgICAgPHZhbHVlPkRlZWxuZW1lbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODYiIG5hbWU9Im5hdmlfcm9vbWFkbWluIj4KKyAgICA8dmFsdWU+S2FtZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NyIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPkthbWVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4OCIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPklEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4OSIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPk5hYW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkwIiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+T3BlbmJhYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkxIiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+T3JnYW5pc2F0aWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5MiIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPkthbWVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTMiIG5hbWU9InJvb212YWx1ZV9uYW1lIj4KKyAgICA8dmFsdWU+TmFhbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTQiIG5hbWU9InJvb212YWx1ZV90eXBlIj4KKyAgICA8dmFsdWU+U29vcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk1IiBuYW1lPSJyb29tdmFsdWVfaXNwdWJsaWMiPgorICAgIDx2YWx1ZT5PcGVuYmFhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTYiIG5hbWU9InJvb212YWx1ZV9jb21tZW50Ij4KKyAgICA8dmFsdWU+VG9lbGljaHRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk3IiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVpY29uIj4KKyAgICA8dmFsdWU+T3BzbGFhbiBlbiBleHBvcnRlcmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5OCIgbmFtZT0id2hpdGVib2FyZF9vcGVuaWNvbiI+CisgICAgPHZhbHVlPmxhZGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5OSIgbmFtZT0id2hpdGVib2FyZF9zYXZlYXN3aW5oZWFkZXIiPgorICAgIDx2YWx1ZT5PcHNsYWFuIGFsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDAiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2ludGV4dCI+CisgICAgPHZhbHVlPkJlc3RhbmRzbmFhbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDEiIG5hbWU9ImZpbGVzIj4KKyAgICA8dmFsdWU+YmVzdGFuZHNuYWFtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMiIgbmFtZT0id2hpdGVib2FyZF9zYXZlYXN3aW5idG4xIj4KKyAgICA8dmFsdWU+QW5udWxlcmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMyIgbmFtZT0id2hpdGVib2FyZF9zYXZlYXN3aW5idG4yIj4KKyAgICA8dmFsdWU+T3BzbGFhbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDQiIG5hbWU9InJwY2Vycm9yd2luX2hlYWRlciI+CisgICAgPHZhbHVlPkZvdXRtZWxkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNSIgbmFtZT0ibG9hZHdtbF9oZWFkZXIiPgorICAgIDx2YWx1ZT5MYWRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDYiIG5hbWU9ImxvYWR3bWxfbWVzc3Nsb2FkIj4KKyAgICA8dmFsdWU+T2JqZWN0ZW4gZ2VsYWRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDciIG5hbWU9ImxvYWR3bWxfbWVzc3N5bmMiPgorICAgIDx2YWx1ZT5XYWNodGVuIG9wIHN5bmNocm9uaXNhdGllIHZhbiBnZWJydWlrZXJzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDgiIG5hbWU9ImxvYWRpbWFnZV9tZXNzbG9hZCI+CisgICAgPHZhbHVlPkxhZGVuIHZhbiBhZmJlZWxkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwOSIgbmFtZT0ibG9hZGltYWdlX21lc3NzeW5jIj4KKyAgICA8dmFsdWU+V2FjaHRlbiBvcCBzeW5jaHJvbmlzYXRpZSB2YW4gZ2VicnVpa2Vyczo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEwIiBuYW1lPSJsb2Fkd21sX2NvbmZpcm1oZWFkZXIiPgorICAgIDx2YWx1ZT5UZWtlbmJvcmQgTGVlZ21ha2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMSIgbmFtZT0ibG9hZHdtbF9jb25maXJtbWVzcyI+CisgICAgPHZhbHVlPlRla2VuYm9yZCBsZWVnbWFrZW4sIGdlZ2V2ZW5zIG9wIHRla2VuYm9yZCBnYWFuIHZlcmxvcmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMiIgbmFtZT0ibG9hZHdtbF9jb25maXJtbWVzczIiPgorICAgIDx2YWx1ZT5CZXZlc3RpZ2luZyB2b29yIGhldCBsYWRlbiB2YW4gZWVuIGJlc3RhbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEzIiBuYW1lPSJzZW5kX2ludml0YXRpb25fYnRuIj4KKyAgICA8dmFsdWU+VWl0bm9kaWdpbmcgdmVyc3R1cmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNCIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX2hlYWRlciI+CisgICAgPHZhbHVlPlZlcnN0dXVyIHVpdG5vZGlnaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNSIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX3N1YmplY3QiPgorICAgIDx2YWx1ZT5PbmRlcndlcnA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE2IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fcmVjaXBpZW50Ij4KKyAgICA8dmFsdWU+RS1tYWlsIGdlYWRyZXNzZWVyZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE3IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fbWVzc2FnZSI+CisgICAgPHZhbHVlPkJlcmljaHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE4IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fYnRuX2NvbmZpcm0iPgorICAgIDx2YWx1ZT5WZXJzdHV1cjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTkiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9idG5fY2FuY2VsIj4KKyAgICA8dmFsdWU+YW5udWxlcmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyMCIgbmFtZT0ic2VuZF9jaGF0X3RleHRfYnRuIj4KKyAgICA8dmFsdWU+VmVyc3R1dXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIxIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5faGVhZGVyIj4KKyAgICA8dmFsdWU+R2VicnVpa2Vyc2dlZ2V2ZW5zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyMiIgbmFtZT0iaW52aXRlZF91c2Vyd2luX3N1YmplY3QiPgorICAgIDx2YWx1ZT5KZSBuYWFtIHZvb3IgZGl0IG92ZXJsZWc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIzIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fbG9naW4iPgorICAgIDx2YWx1ZT5OYWFtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNCIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2ZpcnN0bmFtZSI+CisgICAgPHZhbHVlPlZvb3JuYWFtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNSIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2xhc3RuYW1lIj4KKyAgICA8dmFsdWU+QWNodGVybmFhbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjYiIG5hbWU9Imludml0ZWRfdXNlcndpbl9tYWlsIj4KKyAgICA8dmFsdWU+RS1tYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNyIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2xhbmciPgorICAgIDx2YWx1ZT5UYWFsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyOCIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2VudGVyIj4KKyAgICA8dmFsdWU+ZGVlbG5lbWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyOSIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2VudGVyIj4KKyAgICA8dmFsdWU+TGFkZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMwIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZW50ZXIiPgorICAgIDx2YWx1ZT5MYWRlbiwgZXZlbiB3YWNodGVuIGF1YiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMxIiBuYW1lPSJ1c2VyX3JlZ2lzdGVyRmFsc2VQV0QiPgorICAgIDx2YWx1ZT5WZXJrZWVyZGUgd2FjaHR3b29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzIiIG5hbWU9InVzZXJfcmVnaXN0ZXJGYWxzZVBXREhlYWRlciI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciB0d28gaWRlbnRpY2FsIHBhc3N3b3JkcyB3aXRoIGF0IGxlYXN0IDYgY2hhcmFjdGVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzMiIG5hbWU9InVzZXJfcmVnaXN0ZXJNYWlsRXJyb3IiPgorICAgIDx2YWx1ZT5Gb3V0bWVsZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzQiIG5hbWU9InVzZXJfcmVnaXN0ZXJNYWlsRXJyb3JIZWFkZXIiPgorICAgIDx2YWx1ZT5EaXQgaXMgZ2VlbiBnZWxkaWcgRS1tYWlsIGFkcmVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzNSIgbmFtZT0idXNlcl9yZWdpc3RlclN1Y2Nlc3MiPgorICAgIDx2YWx1ZT5SZWdpc3RyYXRpZSBBZmdlcm9uZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzYiIG5hbWU9InVzZXJfcmVnaXN0ZXJTdWNjZXNzSGVhZGVyIj4KKyAgICA8dmFsdWU+SmUgZ2VicnVpa2Vyc2FjY291bnQgaXMgbnUgYWFuZ2VtYWFrdC4gSmUgbnUga3VudCBpbmxvZ2dlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM3IiBuYW1lPSJ1c2VyX3NoYXJpbmdfbWVzc2FnZSI+CisgICAgPHZhbHVlPkplIGt1bnQgamUgc2NoZXJtIG9wIGRpdCBtb21lbnQgbmlldCBkZWxlbi4gSWVtYW5kIGFuZGVycyBpcyBhbCBlZW4gc2NoZXJtIGFhbiBoZXQgZGVsZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzOCIgbmFtZT0idXNlcl9zaGFyaW5nX21lc3NhZ2VIZWFkZXIiPgorICAgIDx2YWx1ZT5EZWxlbiBpcyB2ZXJib2RlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzkiIG5hbWU9InVzZXJfZG9TdGFydFNjcmVlblZpZXdlciI+CisgICAgPHZhbHVlPkRlbGVuIHZhbiBzY2hlcm08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQwIiBuYW1lPSJzY3JlZW5fd2FybkJhbmR3aWR0aCI+CisgICAgPHZhbHVlPlNsZWNodHMgbmV0d2VyazogU3luY2hyb25pc2F0aWUgdmFuIGhldCBzY2hlcm0gbHVrdCBuaWV0LiBBbHMgamUgZGV6ZSBtZWxkaW5nIHZha2VyIGtyaWpndCwga3VuIGplIGRlIGJlaGVlcmRlciB2cmFnZW4gb2YgaGlqIGRlIHF1YWxpdHkgdmFuIGJlZWxkIHdpbCB2ZXJtaW5kZXJlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQxIiBuYW1lPSJzY3JlZW5fdXNlcmxhYmVsIj4KKyAgICA8dmFsdWU+U2NoZXJtIHZhbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQyIiBuYW1lPSJ3aGl0ZWJvYXJkX3RhYl9wYWludCI+CisgICAgPHZhbHVlPlZlcmY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQzIiBuYW1lPSJ3aGl0ZWJvYXJkX3RhYl9kb2N1bWVudCI+CisgICAgPHZhbHVlPkRvY3VtZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0NCIgbmFtZT0idGFiYmFyX2NoYXRpY29uIj4KKyAgICA8dmFsdWU+Q2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDUiIG5hbWU9InRhYmJhcl9maWxlc2ljb24iPgorICAgIDx2YWx1ZT5CZXN0YW5kZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ2IiBuYW1lPSJ0YWJiYXJfcGFydGljaXBhbnRzaWNvbiI+CisgICAgPHZhbHVlPkxlZGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0NyIgbmFtZT0ic3dmcHJlc2VudGF0aW9uX2xpc3RzYXZlb3JpZyI+CisgICAgPHZhbHVlPk9yZ2luZWxlIGRvY3VtZW50IGRvd25sb2FkZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ4IiBuYW1lPSJzd2ZwcmVzZW50YXRpb25fbGlzdHNhdmVwZGYiPgorICAgIDx2YWx1ZT5QREYgZG9jdW1lbnQgZG93bmxvYWRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDkiIG5hbWU9InN3ZnByZXNlbnRhdGlvbl9saXN0bG9hZHN3ZiI+CisgICAgPHZhbHVlPlpldCBwcmVzZW50YXRpZSBvcCB0ZWtlbmJvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUwIiBuYW1lPSJuYXZpbWFpbl9jb25maWciPgorICAgIDx2YWx1ZT5JbnN0ZWxsaW5nZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUxIiBuYW1lPSJ3aGl0ZWJvYXJkX2JvdW5kaW5nYm94X2RyYWciPgorICAgIDx2YWx1ZT5WZXJwbGFhdHMgZGl0IG9iamVjdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTIiIG5hbWU9IndoaXRlYm9hcmRfYm91bmRpbmdib3hfcmVzaXplIj4KKyAgICA8dmFsdWU+VmVyYW5kZXIgZGUgZ3JvdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUzIiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl96b29tIj4KKyAgICA8dmFsdWU+JTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTQiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3NsaWRlIj4KKyAgICA8dmFsdWU+dmFuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1NSIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfZmlyc3RzbGlkZSI+CisgICAgPHZhbHVlPk5hIG5hYXIgZGUgZWVyc3RlIHBhZ2luYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTYiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3ByZXNsaWRlIj4KKyAgICA8dmFsdWU+R2EgbmFhciBkZSB2b3JpZ2UgcGFnaW5hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1NyIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfbmV4dHNsaWRlIj4KKyAgICA8dmFsdWU+TmEgZ2FhbiBkZSB2b2xnZW5kZSBwYWdpbmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU4IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9sYXN0c2xpZGUiPgorICAgIDx2YWx1ZT5HYSBuYWFyIGRlIGxhYXRzdGUgcGFnaW5hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1OSIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfem9vbW1pbnVzIj4KKyAgICA8dmFsdWU+VWl0em9vbWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MCIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfem9vbXBsdXMiPgorICAgIDx2YWx1ZT5Jbnpvb21lbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjEiIG5hbWU9InNhbHV0YXRpb25fbXIiPgorICAgIDx2YWx1ZT5EaHIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MiIgbmFtZT0ic2FsdXRhdGlvbl9taXNzIj4KKyAgICA8dmFsdWU+TWV2ci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYzIiBuYW1lPSJuYXZpbWFpbl9jb25mYWRtaW4iPgorICAgIDx2YWx1ZT5JbnN0ZWxsaW5nZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY0IiBuYW1lPSJjb25mdGFibGVfaGVhZGVySWQiPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjUiIG5hbWU9ImNvbmZ0YWJsZV9oZWFkZXJrZXkiPgorICAgIDx2YWx1ZT5JbnN0ZWxsaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2NiIgbmFtZT0iY29uZmFkbWluZm9ybV9oZWFkZXIiPgorICAgIDx2YWx1ZT5JbnN0ZWxsaW5nZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY3IiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsa2V5Ij4KKyAgICA8dmFsdWU+SW5zdGVsbGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjgiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWx1cGRhdGVkIj4KKyAgICA8dmFsdWU+TGFhdHN0ZSB1cGRhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY5IiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsdXBkYXRlZGJ5Ij4KKyAgICA8dmFsdWU+Qmlqd2Vya3QgZG9vcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzAiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWxjb21tZW50Ij4KKyAgICA8dmFsdWU+VG9lbGljaHRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjcxIiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsa2V5Ij4KKyAgICA8dmFsdWU+V2FhcmRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MiIgbmFtZT0idHVybm92ZXJsaXN0X21heHJlc3VsdHMiPgorICAgIDx2YWx1ZT52YW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjczIiBuYW1lPSJvcmdhbmlzYXRpb25fdXNlcnNoZWFkZXIiPgorICAgIDx2YWx1ZT5HZWJydWlrZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NCIgbmFtZT0ib3JnYW5pc2F0aW9uX3VzZXJzaWNvbmRlbGV0ZSI+CisgICAgPHZhbHVlPmhhYWwgZ2VicnVpa2VyIHVpdCBvcmdhbmlzYXRpZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzUiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2RlbGV0ZWRoZWFkIj4KKyAgICA8dmFsdWU+RDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzYiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2FscmVhZGFkZGVkIj4KKyAgICA8dmFsdWU+RGV6ZSBnZWJydWlrZXIgeml0IGFsIGluIGRlemUgb3JnYW5pc2F0aWUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NyIgbmFtZT0iZGFzaGJvYXJkX25ld3NoZWFkZXIiPgorICAgIDx2YWx1ZT5OaWV1d3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc4IiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rc2hlYWRlciI+CisgICAgPHZhbHVlPlNuZWxrb3BwZWxpbmdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzkiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtDb25mIj4KKyAgICA8dmFsdWU+R2EgbmFhciBvdmVybGVnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MCIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua0F1ZGl0Ij4KKyAgICA8dmFsdWU+R2EgbHVpc3RlcmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MSIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua3N1cHBvcnQiPgorICAgIDx2YWx1ZT5IZWxwIGVuIEh1bHA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgyIiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tob21lcGFnZXVybCI+CisgICAgPHZhbHVlPmh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgzIiBuYW1lPSJkYXNoYm9hcmRfcXVpY2ttYWlsaW5nbGlzdHVybCI+CisgICAgPHZhbHVlPmh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9tYWlsLWxpc3RzLmh0bWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg0IiBuYW1lPSJkYXNoYm9hcmRfcmVwb3J0YnVncyI+CisgICAgPHZhbHVlPk1lbGQgcHJvYmxlZW0hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4NSIgbmFtZT0iZGFzaGJvYXJkX3Jzc2xpc3RpdGVtbGlua3RleHQiPgorICAgIDx2YWx1ZT5tZWVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4NiIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua2hvbWVwYWdlbGFiZWwiPgorICAgIDx2YWx1ZT5Qcm9qZWN0IFdlYnNpZGUgKGh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg3IiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rbWFpbGluZ2xpc3RsYWJlbCI+CisgICAgPHZhbHVlPlVzZXIgTWFpbGluZyBMaXN0IChodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvbWFpbC1saXN0cy5odG1sKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODgiIG5hbWU9ImxvZ2luX3JlbWVtYmVydXNlciI+CisgICAgPHZhbHVlPklubG9nZ2VnZXZlbnMgb250aG91ZGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4OSIgbmFtZT0ibWFpbl9uYXZpIj4KKyAgICA8dmFsdWU+SW5ob3VkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPk1pam4gU3RhcnQgUGFnaW5hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MSIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPk1pam4gZ2VwbGFuZGUgb3ZlcmxlZ2dlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTIiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5NaWpuIGdlcGxhbmRlIGV2ZW5lbWVudGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MyIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPk9wZW5iYXJlIG92ZXJsZWdnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk0IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+UHJpdmUgb3ZlcmxlZ2dlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTUiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5PcGVuYmFyZSBldmVuZW1lbnRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTYiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5Qcml2ZSBldmVuZW1lbnRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTciIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5PcGVuYmFyZSBpbmhvdWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk4IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+UHJpdmUgaW5ob3VkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5OSIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPlBlcnNvb25saWprZSBpbmhvdWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAwIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMSIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPk5ha2lqa2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMiIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPk5hbGF0ZW4ga2lqa2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMyIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPlN0ZW1idXNzZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA0IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+S2llcyBlZW4gYmVzdGFuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDUiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5JbnN0ZWxsaW5nZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA2IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+QmVlbGQvR2VsdWlkIGluc3RlbGxpbmdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDciIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5UZWtlbmJvcmQgaW5zdGVsbGluZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwOCIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPlZlcmxhdGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwOSIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPlRlcnVnIG5hYXIga2FtZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMCIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPlVpdGxvZ2dlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTEiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+V2FjaHR3b29yZCB2ZXJnZXRlbj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEyIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPldhY2h0d29vcmQgb3BuaWV1dyBpbnN0ZWxsZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEzIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlZpYSBFLW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE0IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlZpYSBpbmxvZ25hYW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE1IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPkplIEUtbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTYiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+SmUgbG9naW5uYWFtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxNyIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5WZXJzdHV1ciBFLW1haWwgbWV0IGVlbiBMaW5rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxOCIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5EaXQgRS1tYWlsIGFkcmVzIGlzIG5pZXQgZ2V2b25kZW4uIEdlZWZ0IEUtbWFpbCBhZHJlcyB3YWFyIG9vayBoZXQgYWNjb3VudCBtZWUgZ2VtYWFrdCBpcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE5IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPkdlZWZ0IGlubG9nbmFhbSBvZiBFLW1haWwgYWRyZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIwIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPkVyIGlzIGdlZW4gZ2VicnVpa2VyIG1ldCBkZXplIGlubG9nbmFhbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjEiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+RWVuIEUtbWFpbCBtZXQgZWVuIGxpbmsgaXMgbmFhciBqZSB0b2VnZXN0dXVyZCwgY29udHJvbGxlciBqZSBQb3N0dmFrLUluLiBBbHMgamUgZGFuIG5vZyBzdGVlZHMgbmlldHMgaGVidCBvbnR2YW5nZW4gYmVraWprIGplIEUtbWFpbCBzcGFtIGluc3RlbGxpbmdlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIyIiBuYW1lPSJlcnJvcnR5cGUiPgorICAgIDx2YWx1ZT5Gb3V0bWVsZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjMiIG5hbWU9ImVycm9ydHlwZSI+CisgICAgPHZhbHVlPkJlcmljaHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI0IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5FciBpcyBnZWVuIGdlYnJ1aWtlciBtZXQgZGV6ZSBnZWdldmVucy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI1IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5XYWNodHdvb3JkIG9wbmlldXcgaW5zdGVsbGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNiIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+SW5sb2duYWFtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNyIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+VmVyYW5kZXIgd2FjaHR3b29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjgiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPndhY2h0d29vcmQgaW52b2VyZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI5IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT53YWNodHdvb3JkIG9wbmlldXcgaW52b2VyZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMwIiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5EZSB3YWNodHdvb3JkZW4gemlqbiBuaWV0IGdlbGlqay48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMxIiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5NaW5pbWFhbCA0IGthcmFrdGVycyBlbiBob29mZGxldHRlcmdldm9lbGlnITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzIiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPldhY2h0d29vcmQgaW5nZXN0ZWxkLiBKZSBrdW50IG51IGlubG9nZ2VuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzMiIG5hbWU9InJwY2NhbGxiYWNrIj4KKyAgICA8dmFsdWU+T0s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM0IiBuYW1lPSJycGNnZW5lcmFsZXJyb3IiPgorICAgIDx2YWx1ZT5PbmJla2VuZGUgRm91dG1lbGRpbmcuIEdlZWYgZGl0IGRvb3IgYWFuIGRlIGJlaGVlcmRlci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM1IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPklubG9nbmFhbSBuaWV0IGdldm9uZGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNiIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5WZXJrZWVyZCB3YWNodHdvb3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNyIgbmFtZT0ibG9nb3V0Ij4KKyAgICA8dmFsdWU+VSBiZW50IHVpdGdlbG9nZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzgiIG5hbWU9InJlZ2lzdHJhdGlvbiI+CisgICAgPHZhbHVlPlJlZ2lzdHJhdGllIGlzIHVpdGdlemV0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzkiIG5hbWU9InJlZ2lzdHJhdGlvbiI+CisgICAgPHZhbHVlPlZlcmtlZXJkIEUtbWFpbCBhZHJlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDAiIG5hbWU9InJlZ2lzdHJhdGlvbiI+CisgICAgPHZhbHVlPmVlbiBiZXN0YW5kIG1ldCBkZXplIG5hYW0gaXMgYWwgYWFud2V6aWcsIGtpZXMgZWVuIGFuZGVyZSBuYWFtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MSIgbmFtZT0iZmlsZWJyb3dzZXIiPgorICAgIDx2YWx1ZT5iZXN0YW5kc25hYW0gdGUga29ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDIiIG5hbWU9ImZpbGVicm93c2VyIj4KKyAgICA8dmFsdWU+S2FuIGJlc3RhbmQgbmlldCBvcHNsYWFuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MyIgbmFtZT0idXNlcmFkbWluIj4KKyAgICA8dmFsdWU+R2VicnVpa2VyIHRvZWdldm9lZ2QuIEFjY291bnQgbW9ldCBub2cgd2VsIHdvcmRlbiB0b2VnZXZvZWdkIGFhbiBlZW4gb3JnYW5pc2F0aWUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NCIgbmFtZT0iYWRtaW5mb3JtcyI+CisgICAgPHZhbHVlPk5pZXV3IGl0ZW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ1IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5HZWVuIHZlbGQgZ2V2b25kZW4gbWV0IGRpdCB2ZWxkIElELjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDYiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkdlZW4gbGFiZWwgZ2V2b25kZW4gdm9vciBkYXQgdmVsZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ3IiBuYW1lPSJlcnJvcm1lc3NhZ2UiPgorICAgIDx2YWx1ZT5CZWhlZXIgYXV0aG9yaXNhdGllIGlzIHZlcmVpc3QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0OCIgbmFtZT0ibWFpbm5hdmkiPgorICAgIDx2YWx1ZT5UYWFsIEJld2Vya2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0OSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+VGFhbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTAiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkxhYmVsLUlEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1MSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TGFiZWwgbmFhbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTIiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkxhYmVsIHRla3N0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1MyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+RGlzcGxheSB0ZWtzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTQiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkxhYmVsIG5hYW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU1IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5MYWJlbCB0ZWtzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTYiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkxhYmVsLUlEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1NyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+SmUgaGVidCBhbGxlZW4gaGV0IGxhYmVsIHZlcndpamRlcmQgZW4gbmlldCBoZXQgdmVsZCEgSmUga3VudCBkaXQgdmVsZCBuaWV0IHZlcndpamRlcmVuIG9tZGF0IGhldCBnZWJydWlrdCB3b3JkZW4gaW4gYW5kZXJlIHRhbGVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTgiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPk9uanVpc3QgTGFiZWwtSUQuIERlICdGaWVsZExhbmd1YWdlc3ZhbHVlc19JZCcga2FuIG5pZXQgd29yZGVuIGdldm9uZGVuIGluIGRlIGRhdGFiYXNlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTkiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkplIGt1bnQgYWxsZWVuIGxhYmVscyB2ZXJ3aWpkZXJlbiBlbiBnZWVuIHZlbGRlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYwIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5FeHBvcnRlcmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+SmUgbW9ldCBvcG5pZXV3IGFhbm1lbGRlbiBvbSBkZSB2ZXJhbmRlcmluZ2VuIHRlIHppZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TmlldXdlIHRhYWwgdG9ldm9lZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+VGFhbCB2ZXJ3aWpkZXJlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjQiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPk5pZXV3ZSB0YWFsIHRvZXZvZWdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjUiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPk5hYW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY2IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5UYWFsIHRvZXZvZWdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjciIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkJhY2t1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjgiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPmdhIG5hYXIgaGV0IGJlZ2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2OSIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+dm9yaWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MCIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+dm9sZ2VuZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzcxIiBuYW1lPSJ0dXJub3Zlcmxpc3QiPgorICAgIDx2YWx1ZT5nYSBuYWFyIGRlIGxhYXRzdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzcyIiBuYW1lPSJ2aWRlb2JveCI+CisgICAgPHZhbHVlPkdlYnJ1aWtlciBzcHJlZWt0IChCeSBjbGlja2luZyBoZXJlIHlvdSBjYW4gZ2l2ZSBleGNsdXNpdmUgYXVkaW8gLyBtdXRlIHRoZSBtaWNyb3Bob25lIG9mIG90aGVycyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzczIiBuYW1lPSJ2aWRlb2JveCI+CisgICAgPHZhbHVlPkdlbHVpZCBhYW4vdWl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3NCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+U3lzdGVlbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzUiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPkpvdXcgaW5zdGVsbGluZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3NiIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+SGFsbG8sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3NyIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+UHJvZmllbCBiaWp3ZXJrZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc4IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5OaWV1dyBiZXJpY2h0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzkiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPlBhc2ZvdG8gdXBsb2FkZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgwIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPkdlYnJ1aWtlcnNkYXRhIGV4cG9ydGVyZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgxIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPk9tIHBlciBvcmdhbmlzYXRpZSBlZW4gYmFja3VwIHRlIG1ha2VuLCBtb2V0ZW4gb3JnYW5pc2F0aWUgYWFud2V6aWcgemlqbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgyIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPkJhY2t1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODMiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+QmFja3VwIGVlbiBvcmdhbmlzYXRpZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODQiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+QmFja3VwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NSIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5HZWJydWlrZXJzZGF0YSBpbXBvcnRlcmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NiIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5SZXN0b3JlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+SW1wb3J0ZXJlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODgiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkV4cG9ydGVyZW4gbmFhciBYTUwgLSBEZXplIGJlc3RhbmRlbiBrdW5uZW4gZ2VicnVpa3Qgd29yZGVuIHZvb3I6Jmx0O2JyLyZndDsgLSBCaWpkcmFnZSBhYW4gaGV0IHByb2plY3QgLSBJbXBvcnRlcmVuIGluIGVlbiBhbmRlciBzeXN0ZWVtJmx0O2JyLyZndDsgLSBCYWNrdXAgLSBPcHRpbWFsaXNhdGllJmx0O2JyLyZndDsgLSBQbGFhdHMgaGV0IGluIGRlICdvcGVubWVldGluZy9sYW5ndWFnZScgZGlyZWN0b3J5IHZvb3IgZGUgdm9sZ2VuZGUgaW5zdGFsbGF0aWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg5IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5LaWVzIGVlbiB0YWFsIGJlc3RhbmQgb20gdGUgaW1wb3J0ZXJlbi4gJmx0O2JyLyZndDtPcGxldHRlbiEgS2llcyBkZSBqdWlzdGUgdGFhbCB1aXQgZGUgc2VsZWN0aWUgbGlqc3QhICZsdDtici8mZ3Q7SGV0IG1hYWt0IG5pZXQgdWl0IHdhdCBkZSBuYWFtIHZhbiBoZXQgYmVzdGFuZCBpcywgJmx0O2JyLyZndDtoZXQgemFsIHdvcmRlbiBnZWltcG9ydGVlcmQgaW4gZGV6ZSB0YWFsITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTAiIG5hbWU9ImltcG9ydHdpbmRvdyI+CisgICAgPHZhbHVlPmltcG9ydGVyZW4gLSBraWVzIGVlbiBiZXN0YW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5MSIgbmFtZT0icmVjb3JkaW5nc2F2ZXdpbiI+CisgICAgPHZhbHVlPk9wc2xhYW4gYWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5MiIgbmFtZT0icmVjb3JkaW5nc2F2ZXdpbiI+CisgICAgPHZhbHVlPk5hYW06PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5MyIgbmFtZT0icmVjb3JkaW5nc2F2ZXdpbiI+CisgICAgPHZhbHVlPlRvZWxpY2h0aW5nOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTQiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT5PcHNsYWFuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+T3BuYW1lczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTYiIG5hbWU9InJlY29yZGVyIj4KKyAgICA8dmFsdWU+T3BuYW1lcyBiZWtpamtlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTciIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPk9wbmFtZXMgdmFuIG9wZW5iYXJlIGVuIHByaXZlIGthbWVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTgiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPkdlYnJ1aWtlcnM6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5OSIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+QWFud2V6aWc6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMCIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMSIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+QWN0aXZlIGRlZWxuZW1lcnM6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMiIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+dmVybmlldXdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDMiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPkRpdCBvdmVybGVnIGlzIHZvbC4gUHJvYmVlciBoZXQgbGF0ZXIgbm9nbWFhbHMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNCIgbmFtZT0icm9vbXNMaXN0Ij4KKyAgICA8dmFsdWU+S2xpayBvcCBlZW4ga2FtZXIgdm9vciBtZWVyIGluZm9ybWF0aWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA1IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5DaGF0IG1ldCBkZWVsbmVtZXJzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDYiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPk92ZXJsZWc6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNyIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+QWN0aXZlIGRlZWxuZW1lcnM6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwOCIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+VmFuYWY6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwOSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+QmVraWprIG9wbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTAiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkR1dXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+RGF0dW06PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMiIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+T3BuYW1lIGJla2lqa2VuISBKZSBrdW50IG5pZXRzIHdpanppZ2VuLiBEaXQgaXMgZWVuIG9wZ2Vub21lbiBvdmVybGVnITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTMiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPlN0YXJ0IGRlemUgb3BuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxNCIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+UGxheSAvIFBhdXNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxNSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+TmVlbSBkaXQgb3ZlcmxlZyBvcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTYiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPlN0b3Agb3BuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxNyIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+T3BuYW1lOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTgiIG5hbWU9InJlY29yZF9lcnJvcl9tc2ciPgorICAgIDx2YWx1ZT5EaXQgb3ZlcmxlZyB3b3JkdCBhbCBvcGdlbm9tZW4gZG9vciBlZW4gYW5kZXJlIGdlYnJ1aWtlciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE5IiBuYW1lPSJyZWNvcmRfbWVzc2FnZSI+CisgICAgPHZhbHVlPk9wZ2Vub21lbiEgRG9vciBnZWJydWlrZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyMCIgbmFtZT0icmVjb3JkX2NhbmNlbCI+CisgICAgPHZhbHVlPkFubnVsZXJlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjEiIG5hbWU9InJlY29yZF9jYW5jYWxfdG9vbHRpcCI+CisgICAgPHZhbHVlPkRlIG9wbmFtZSB3b3JkdCBnZXN0b3B0IGVuIHdvcmR0IG5pZXQgYmV3YWFyZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIyIiBuYW1lPSJjYW5jZWxfZGlhbG9nX3Jlc3VtZSI+CisgICAgPHZhbHVlPmhldHZhdHRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjMiIG5hbWU9ImNhbmNlbF9kaWFsb2dfcmVzdW1lX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5TbHVpdCBkaXQgc2NoZXJtIGVuIGJsaWpmIG9wbmVtZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI0IiBuYW1lPSJwYWludHRvb2xzX2VsbGlwc2VfY29sb3IiPgorICAgIDx2YWx1ZT5WZXJhbmRlciBsaWpua2xldXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI1IiBuYW1lPSJjb2xvcnBpY2tlcl9oZWFkIj4KKyAgICA8dmFsdWU+S2llcyBlZW4ga2xldXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI2IiBuYW1lPSJwYWludHRvb2xzX2xpbmVfZGlzYWJsZSI+CisgICAgPHZhbHVlPlVpemV0dGVuL0FhbnpldHRlbiBsaWpua2xldXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI3IiBuYW1lPSJwYWludHRvb2xzX2ZpbGxfZGlzYWJsZSI+CisgICAgPHZhbHVlPlZlcmFuZGVyIG9wdnVsa2xldXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI4IiBuYW1lPSJwYWludHRvb2xzX2xpbmVfZGlzYWJsZSI+CisgICAgPHZhbHVlPlVpdHpldHRlbi9BYW56ZXR0ZW4gb3B2dWxrbGV1cjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjkiIG5hbWU9ImNoYW5nZV93aWR0aF9hcnJvd19kb3duX3NsaWRlciI+CisgICAgPHZhbHVlPlZlcmFuZGVyIGxpam4gZGlrdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMwIiBuYW1lPSJjbG9zZV9zbWFsbF9wb3B1cHMiPgorICAgIDx2YWx1ZT5BZnNsdWl0ZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMxIiBuYW1lPSJwYWludF90b29sX2xldHRlciI+CisgICAgPHZhbHVlPlZlcmFuZGVyIGxldHRlcnR5cGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMyIiBuYW1lPSJyZWNvcmRpbmdzbGlzdF9kZWxldGUiPgorICAgIDx2YWx1ZT5WZXJ3aWpkZXIgb3BuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzMyIgbmFtZT0icmVjb3JkaW5nc2xpc3RfcmVjb3JkZWRCeUd1ZXN0Ij4KKyAgICA8dmFsdWU+R2FzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzQiIG5hbWU9InJlY29yZGluZ3NsaXN0X3JlY29yZGVkYnkiPgorICAgIDx2YWx1ZT5Eb29yOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzUiIG5hbWU9InJlY29yZGluZ3NfdGFibGVfaGVhZF9uYW1lIj4KKyAgICA8dmFsdWU+TmFhbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzYiIG5hbWU9InJlY29yZGluZ3NfdGFibGVfaGVhZF9yb29tIj4KKyAgICA8dmFsdWU+T3ZlcmxlZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzciIG5hbWU9InJlY29yZGluZ3NfdGFibGVfaGVhZF9kYXRlIj4KKyAgICA8dmFsdWU+RGF0dW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM4IiBuYW1lPSJyZWNvcmRfc3RhcnRfY2FuY2VsIj4KKyAgICA8dmFsdWU+QW5udWxlcmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzOSIgbmFtZT0icmVjb3JkX3N0YXJ0X3N0YXJ0Ij4KKyAgICA8dmFsdWU+U3RhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQwIiBuYW1lPSJmaWxlc2Jyb3dzZXJfdGFibGVfaGVhZF9uYW1lIj4KKyAgICA8dmFsdWU+TmFhbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDEiIG5hbWU9ImZpbGVzYnJvd3Nlcl90YWJsZV9oZWFkX2RhdGUiPgorICAgIDx2YWx1ZT5EYXR1bTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDIiIG5hbWU9ImNoYXRfY2xlYXJfaGlzdG9yeSI+CisgICAgPHZhbHVlPlZlcndpamRlciBTZXJ2ZXItQ2hhdGxvZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDMiIG5hbWU9ImNoYXRfb3ZlcmFsbF9oZWFkZXIiPgorICAgIDx2YWx1ZT5DaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NCIgbmFtZT0iY2hhdF9zZW5kX2J0biI+CisgICAgPHZhbHVlPlZlcnN0dXVyIGJlcmljaHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ1IiBuYW1lPSJjaGF0X2Vtb3RfYnRuIj4KKyAgICA8dmFsdWU+RW1vdGljb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NiIgbmFtZT0iY2hhdF9lbW90X3dpbiI+CisgICAgPHZhbHVlPkVtb3RpY29uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDciIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5ncyI+CisgICAgPHZhbHVlPkNob29zZSBQdWJsaXNoZWQgRGV2aWNlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDgiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPkJlZWxkIGVuIEdlbHVpZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDkiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPkFsbGVlbiBnZWx1aWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUwIiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT5BbGxlZW4gYmVlbGQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUxIiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT5HZWVuIGJlZWxkL2dlbHVpZCAocGFzZm90byBhZmJlZWxkZW4pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1MiIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2luZm9fdGV4dCI+CisgICAgPHZhbHVlPkFscyBlciBuZXR3ZXJrIHByb2JsZW1lbiB6aWpuLCBraWVzIGRhbiB2b29yIHBhc2ZvdG8gYWZiZWVsZGVuLiBKZSBwcm9maWVsIHBhc2ZvdG8gd29yZHQgaGllcnZvb3IgZ2VicnVpa3QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1MyIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9tb25kYXkiPgorICAgIDx2YWx1ZT5NYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTQiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfdHVlc2RheSI+CisgICAgPHZhbHVlPkRpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV93ZWRuZXNkYXkiPgorICAgIDx2YWx1ZT5XbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTYiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfdGh1cnNkYXkiPgorICAgIDx2YWx1ZT5EbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTciIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfZnJpZGF5Ij4KKyAgICA8dmFsdWU+VnI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU4IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3NhdHVyZGF5Ij4KKyAgICA8dmFsdWU+WmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU5IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3N1bmRheSI+CisgICAgPHZhbHVlPlpvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9tb25kYXkiPgorICAgIDx2YWx1ZT5NYWFuZGFnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9UdWVzZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5EaW5zZGFnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MiIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9XZWRuZXNkYXlMYWJlbCI+CisgICAgPHZhbHVlPldvZW5zZGFnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MyIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9UaHVyc2RheUxhYmVsIj4KKyAgICA8dmFsdWU+RG9uZGVyZGFnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9GcmlkYXlMYWJlbCI+CisgICAgPHZhbHVlPlZyaWpkYWc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY1IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1NhdHVyZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5aYXRlcmRhZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjYiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfU3VuZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5ab25kYWc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY3IiBuYW1lPSJjYWxlbmRhcl93ZWVrbnVtYmVyX2hlYWRlciI+CisgICAgPHZhbHVlPldLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2OCIgbmFtZT0iY2FsZW5kYXJfd2Vla251bWJlcl9oZWFkZXJUb29sdGlwIj4KKyAgICA8dmFsdWU+S2FsZW5kZXIgV2VlazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjkiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5KYW51YXJpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3MCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPkZlYnJ1YXJpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3MSIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPk1hYXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3MiIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPkFwcmlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3MyIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPk1laTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzQiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5KdW5pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3NSIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPkp1bGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc2IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+QXVndXN0dXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc3IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+U2VwdGVtYmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3OCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPk9rdG9iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc5IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+Tm92ZW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgwIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+RGVjZW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgxIiBuYW1lPSJjYWxlbmRhcndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5LYWxlbmRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODIiIG5hbWU9InJvb21hZG1pbl9sYWJlbE51bWJlck9mUGFydGljaXBhbnRzIj4KKyAgICA8dmFsdWU+QWFudGFsIERlZWxuZW1lcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgzIiBuYW1lPSJyb29tVmFsdWVfYWR2YW5jZWRTZXR0aW5ncyI+CisgICAgPHZhbHVlPlRvb24gb3BtYWFrIGluc3RlbGxpbmdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODQiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfdmlkZW9YIj4KKyAgICA8dmFsdWU+WCB8IFk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg1IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3ZpZGVvWSI+CisgICAgPHZhbHVlPkJyZWVkdGUgfCBIb29ndGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg2IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0Ij4KKyAgICA8dmFsdWU+QmVlbGQtQ29udGFpbmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NyIgbmFtZT0icm9vbUFkbWluX2xheW91dF9tb2QiPgorICAgIDx2YWx1ZT5PcmdhbmlzYXRvci1Db250YWluZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg4IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X21vZF9wb3MiPgorICAgIDx2YWx1ZT5YPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4OSIgbmFtZT0icm9vbUFkbWluX2xheW91dF93aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+VGVrZW5ib3JkLUNvbnRhaW5lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTAiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZF9zaG93Ij4KKyAgICA8dmFsdWU+QWFuemV0dGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5MSIgbmFtZT0icm9vbUFkbWluX2xheW91dF93aGl0ZWJvYXJkX3BvcyI+CisgICAgPHZhbHVlPlggfCBZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5MiIgbmFtZT0icm9vbUFkbWluX2xheW91dF93aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+QnJlZWR0ZSB8IEhvb2d0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTMiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXMiPgorICAgIDx2YWx1ZT5CZXN0YW5kZW4sIGNoYXQgZW4gZGVlbG5lbWVycyAtIENvbnRhaW5lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTQiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXNfc2hvdyI+CisgICAgPHZhbHVlPkFhbnpldHRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTUiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXNfcG9zIj4KKyAgICA8dmFsdWU+WCB8IFk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk2IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X2ZpbGVzIj4KKyAgICA8dmFsdWU+QnJlZWR0ZSB8IEhvb2d0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTciIG5hbWU9Im1vZGVyYXRvcl9nb25lX21lc3NhZ2UiPgorICAgIDx2YWx1ZT5EZSBvcmdhbmlzYXRvciBoZWVmdCBoZXQgb3ZlcmxlZyB2ZXJsYXRlbi4gTmllbWFuZCBpcyBhYW4gaGV0IHByZXNlbnRlcmVuLiBKZSBrdW50IG9yZ2FuaXNhdG9yIHdvcmRlbiBvZiB3YWNodGVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTgiIG5hbWU9Im1vZGVyYXRvcl9tZXNzYWdlX2V2ZW50X25vX21vZCI+CisgICAgPHZhbHVlPkVyIHppam4gZGVlbG5lbWVycyBtYWFyIG5vZyBnZWVuIG9yZ2FuaXNhdG9yLiBKZSBrdW50IE9yZ2FuaXNhdG9yIHdvcmRlbiBvZiB3YWNodGVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTkiIG5hbWU9ImZlZWRiYWNrX3RlbXBsYXRlX3N1YmplY3QiPgorICAgIDx2YWx1ZT5UZXJ1Z2tvcHBlbGluZyAkQVBQX05BTUU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAwIiBuYW1lPSJpbnZpdGF0aW9uX3RlbXBsYXRlX2hlYWQiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgLSBVaXRub2RpZ2luZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDEiIG5hbWU9Imludml0YXRpb25fdGV4dF9mcm9tIj4KKyAgICA8dmFsdWU+QmVyaWNodCB2YW4gZ2VicnVpa2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDIiIG5hbWU9Imludml0YXRpb25fdGV4dF9tZXNzYWdlIj4KKyAgICA8dmFsdWU+QmVyaWNodDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAzIiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfY2xpY2tfdGV4dCI+CisgICAgPHZhbHVlPktsaWsgb3AgZGV6ZSBsaW5rIG9tIGRlZWwgdGUgbmVtZW4gYWFuIGRpdCBvdmVybGVnOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDQiIG5hbWU9Imludml0YXRpb25fdGV4dF9jbGlja190ZXh0X2xpbmsiPgorICAgIDx2YWx1ZT5LbGlrIGhpZXIgb20gZGVlbCB0ZSBuZW1lbiBhYW4gZGl0IG92ZXJsZWc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA1IiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfY2xpY2tfdGV4dF9oZWxwIj4KKyAgICA8dmFsdWU+QWxzIGplIHByb2JsZW1lbiBvbmRlcnZpbmR0IG1ldCBkZSBsaW5rLCBrb3BpZWVyIGVuIHBsYWsgZGV6ZSBpbiBlZW4gaW50ZXJuZXQgYnJvd3Nlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA2IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSByZWdpc3RlcmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwNyIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X2hlYWQyIj4KKyAgICA8dmFsdWU+SmUgZ2VicnVpa2Vyc2dlZ2V2ZW5zOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDgiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF91c2VybmFtZSI+CisgICAgPHZhbHVlPklubG9nbmFhbTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA5IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfcGFzcyI+CisgICAgPHZhbHVlPldhY2h0d29vcmQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxMCIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X21haWwiPgorICAgIDx2YWx1ZT5FLW1haWw6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxMSIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X2J5ZSI+CisgICAgPHZhbHVlPiRBUFBfTkFNRS1UZWFtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxMiIgbmFtZT0icmVnaXN0ZXJfbWFpbF9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIFJlZ2lzdGVyZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTEzIiBuYW1lPSJyZXNldF9wYXNzd29yZF90ZW1wbGF0ZV9oZWFkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIC0gV2FjaHR3b29yZCBSZXNldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTQiIG5hbWU9InJlc2V0X3Bhc3N3b3JkX3RlbXBsYXRlX3Rlc3RfbGluayI+CisgICAgPHZhbHVlPktsaWsgb3AgZGV6ZSBsaW5rIHZvb3IgZWVuIG5pZXV3IHdhY2h0d29vcmQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNSIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfdGV4dDJfbGluayI+CisgICAgPHZhbHVlPktsaWsgaGllciB2b29yIGVlbiBuaWV1dyB3YWNodHdvb3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNiIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfdGV4dDNfbGluayI+CisgICAgPHZhbHVlPkFscyBqZSBwcm9ibGVtZW4gb25kZXJ2aW5kdCBtZXQgZGUgbGluaywga29waWVlciBlbiBwbGFrIGRlemUgaW4gZWVuIGludGVybmV0IGJyb3dzZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNyIgbmFtZT0icmVzZXRfcGFzc3dvcmRfbWFpbF9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIHdhY2h0d29vcmQgcmVzZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE4IiBuYW1lPSJkYXRlUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5HZWVmIGVlbiBqdWlzdGUgZGF0dW0gKGRkLm1tLnl5eXkpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxOSIgbmFtZT0iZW1haWxSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPkdlZWYgZWVuIGp1aXN0IEUtbWFpbCBhZHJlcyAodm9vcmJlZWxkIG5hYW1AZG9tZWluLm5sKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjAiIG5hbWU9ImZsb2F0UmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5HZWVmIGVlbiBGbG9hdC1OdW1iZXIgKHZvb3JiZWVsZCAxLjAwKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjEiIG5hbWU9Im51bWJlclJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+R2VlZiBlZW4gSW50ZWdlciAodm9vcmJlZWxkIDEwMCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIyIiBuYW1lPSJwaG9uZVJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+R2VlZiBlZW4ganVpc3QgdGVsZWZvb25udW1tZXIgKHZvb3JiZWVsZCArMzEgMDEyMyA0NTY3ODk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIzIiBuYW1lPSJ0aW1lUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5HZWVmIGVlbiBqdWlzdGUgdGlqZCAoaGg6bW0pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3ciPgorICAgIDx2YWx1ZT5CZXZlaWxpZ2QgZG9vciB3YWNodHdvb3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNSIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfcGFzc3dvcmRMYWJlbCI+CisgICAgPHZhbHVlPldhY2h0d29vcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI2IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZExhYmVsIj4KKyAgICA8dmFsdWU+R2VsZGlnaGVpZHNkdXVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNyIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWQiPgorICAgIDx2YWx1ZT5BbHRpamQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI4IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZCI+CisgICAgPHZhbHVlPlBlcmlvZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI5IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZCI+CisgICAgPHZhbHVlPkVlbm1hbGlnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWRGcm9tTGFiZWwiPgorICAgIDx2YWx1ZT5HZWxkaWcgdmFuOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzEiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkVG9MYWJlbCI+CisgICAgPHZhbHVlPkdlbGRpZyB0b3Q6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMiIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfTWFpbFN1YmplY3QiPgorICAgIDx2YWx1ZT5VaXRub2RpZ2luZyB2YW4gJEFQUF9OQU1FPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMyIgbmFtZT0iaW52aXRhdGlvbl9lcnJvciI+CisgICAgPHZhbHVlPkdlZW4gdWl0bm9kaWdpbmcgYmVzY2hpa2JhYXIgbWV0IGRlemUgY29kZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzQiIG5hbWU9Imludml0YXRpb25fZXJyb3IiPgorICAgIDx2YWx1ZT5EZXplIGlzIHVpdG5vZGlnaW5nIGlzIGVlbm1hbGlnIGVuIGFsIGVlbnMgZ2VicnVpa3QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzNSIgbmFtZT0iaW52aXRhdGlvbl9lcnJvciI+CisgICAgPHZhbHVlPkRlemUgdWl0bm9kaWdpbmdzY29kZSBpcyBvbmp1aXN0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzYiIG5hbWU9Imludml0YXRpb25fcGFzcyI+CisgICAgPHZhbHVlPldhY2h0d29vcmQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzNyIgbmFtZT0iaW52aXRhdGlvbl9wYXNzX2J0biI+CisgICAgPHZhbHVlPkNvbnRyb2xlZXIgd2FjaHR3b29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzgiIG5hbWU9Imludml0YXRpb25fcGFzc19lcnJvciI+CisgICAgPHZhbHVlPlZlcmtlZXJkIHdhY2h0d29vcmQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzOSIgbmFtZT0iQnJvd3NlciI+CisgICAgPHZhbHVlPkJlZWxkX0dlbHVpZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDAiIG5hbWU9ImF1ZGlvX3ZpZGVvIj4KKyAgICA8dmFsdWU+U3luY2hyb25pc2F0aWUgdmFuIGJlZWxkIGVuIGdlbHVpZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDEiIG5hbWU9ImVycm9yQ29kZV9pbnZhbGlkU2Vzc2lvbiI+CisgICAgPHZhbHVlPkxvZ2luIHdhcyBjb3JyZWN0LCBidXQgdGhlIFNlc3Npb24geW91IHRyaWVkIGlzIG5vdCBhY3RpdmUgb3Igc3RvcmVkIG9uIHRoZSBTZXJ2ZXIuIFlvdSBoYXZlIHRvIGdldCBhIG5ldyBTZXNzaW9uSWQgYW5kIHJldHJ5IGxvZ2luLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDIiIG5hbWU9ImVycm9yY29kZV9zZXRVc2VyT2JqZWN0Ij4KKyAgICA8dmFsdWU+VGhlIFNlc3Npb25JZCBpcyBub3QgbG9nZ2VkaW4gb3IgaGFzIG5vIEFkbWluIHJpZ2h0cy4gVGhlIFNPQVAgR2F0ZXdheSBuZWVkcyBhbiBVc2VyIHdpdGggQWRtaW4tUmlnaHRzIHRvIGVtYmVkIG5ldyBVc2Vycy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQzIiBuYW1lPSJlcnJvcmNvZGVfbG9naW5CeVJlbW90ZVVzZXIiPgorICAgIDx2YWx1ZT5UaGlzIFNlc3Npb24gaGFzIG5vIFJlbW90ZXVzZXItRGF0YSBjb25uZWN0ZWQuIFdldGhlciB5b3UgZGlkIG5vdCBjYWxsIHRoZSBTT0FQLUdhdGV3YXkgYmVmb3JlIGFjY2Vzc2luZyB0aGUgQXBwbGljYXRpb24gb3IgeW91IGFyZSB1c25pZyBhIHdyb25nIFNlc3Npb24tSUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ0IiBuYW1lPSJkZWJ1Z19tZXNzYWdlX3JlY29yZGluZyI+CisgICAgPHZhbHVlPkRlIHJlY29yZGVyIGZ1bmN0aWUgaXMgQmV0YSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ1IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWFZhbHVlIj4KKyAgICA8dmFsdWU+eDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDYiIG5hbWU9InByb3BlcnR5UGFuZWxYVmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPngtYXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ3IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWVZhbHVlIj4KKyAgICA8dmFsdWU+eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDgiIG5hbWU9InByb3BlcnR5UGFuZWxZVmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPnktYXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ5IiBuYW1lPSJwcm9wZXJ0eVBhbmVsV2lkdGhWYWx1ZSI+CisgICAgPHZhbHVlPmI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUwIiBuYW1lPSJwcm9wZXJ0eVBhbmVsV2lkdGhWYWx1ZUxhYmVsIj4KKyAgICA8dmFsdWU+YnJlZWR0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTEiIG5hbWU9InByb3BlcnR5UGFuZWxIZWlnaHRWYWx1ZSI+CisgICAgPHZhbHVlPmg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUyIiBuYW1lPSJwcm9wZXJ0eVBhbmVsSGVpZ2h0VmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPmhvb2d0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTMiIG5hbWU9InByb3BlcnR5T3BhY2l0eVNsaWRlciI+CisgICAgPHZhbHVlPlZlcmFuZGVyIGRvb3J6aWNodGlnaGVpZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTQiIG5hbWU9ImJyb3dzZXJPcGVuIj4KKyAgICA8dmFsdWU+T3BlbiBicm93c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1NSIgbmFtZT0iYnJvd3NlckNsb3NlIj4KKyAgICA8dmFsdWU+U2x1aXQgYnJvd3NlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTYiIG5hbWU9ImNvbm5lY3Rpb25Mb3N0TWVzc2FnZSI+CisgICAgPHZhbHVlPkRlIGlzIGdlZW4gdmVyYmluZGluZyBtZXQgZGUgc2VydmVyIG1lZXIuIFN0YXJ0IGRlIGFwcGxpY2F0aWUgb3BuaWV1dyBvZiBjb250cm9sZWVyIGplIG5ldHdlcmsgdmVyYmluZGluZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU3IiBuYW1lPSI1NTciPgorICAgIDx2YWx1ZT5BYW53aWp6ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU4IiBuYW1lPSJzeW5jIG1lc3NhZ2UgaGVhZGVyIj4KKyAgICA8dmFsdWU+U3luY2hyb25pc2F0aWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU5IiBuYW1lPSJTeW5jaHJvbml6aW5nIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BYW4gaGV0IHN5bmNocm9uaXNlcmVuLiBFdmVuIGdlZHVsZCBhdWI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYwIiBuYW1lPSJleHBvcnRUb1NWRyI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O09wc2xhYW4gYWxzIFNWRyZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYxIiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7T3BzbGFhbiBhbHMgUE5HJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjIiIG5hbWU9ImV4cG9ydFRvSW1hZ2UiPgorICAgIDx2YWx1ZT4mbHQ7dSZndDtPcHNsYWFuIGFscyBKUEcmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MyIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O09wc2xhYW4gYWxzIFBERiZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY0IiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7T3BzbGFhbiBhbHMgVElGJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjUiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5IZXJpbm5lcmluZzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY2IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+Q2F0ZWdvcmllOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjciIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5IZXJoYWxpbmc6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2OCIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkdlZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY5IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+TG9rYXRpZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTcwIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+QmVnaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTcxIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+RWluZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTcyIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+T25kZXJ3ZXJwOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzMiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5Ub2VsaWNodGluZzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc0IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+R2VicnVpa2VycyB1aXRub2RpZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkRhZ2VsaWprczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzYiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5NYWFuZGVsaWprczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzciIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5KYWFybGlqa3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc4IiBuYW1lPSJhbGVydCI+CisgICAgPHZhbHVlPk9wbWVya2luZzogSGV0IGVpbmRlIHZhbiBoZXQgb3ZlcmxlZyBtb2V0IGFsdGlqZCBsYXRlciB6aWpuIGRhbiBoZXQgYmVnaW4hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3OSIgbmFtZT0iYWxlcnQiPgorICAgIDx2YWx1ZT5HZWVmIGVlbiBvbmRlcndlcnAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MCIgbmFtZT0iNTgwIj4KKyAgICA8dmFsdWU+Um5MPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MSIgbmFtZT0iNTgxIj4KKyAgICA8dmFsdWU+WmV0IGRlemUgZnVuY3RpZSBhYW4gYWxzIGplIHRhYWwgdmFuIFJlY2h0cyBuYWFyIExpbmtzIHdvcmR0IGdlc2NocmV2ZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgyIiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPkluc3RydW1lbnRlbmJvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgzIiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPkJla2lqayBvcGdlbm9tZW4gb3ZlcmxlZyBvZiBldmVuZW1lbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg0IiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPk92ZXJsZWcgLSBPcmdhbmlzZWVyIGVlbiBvdmVybGVnIG1ldCA0IHRvdCAxNiBwZXJzb25lbi4mbHQ7YnIvJmd0O0llZGVyZWVuIGhlZWZ0IG1vZ2VsaWpraGVpZCB0b3QgYmVlbGQgZW4gZ2VsdWlkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODUiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+RXZlbmVtZW50IC0gT3JnYW5pc2VlciBlZW4gb3ZlcmxlZyBtZXQgbWF4aW1hYWwgMjAwIHBlcnNvbmVuLiZsdDtici8mZ3Q7QWxsZWVuIGRlIG9yZ2FuaXNhdG9yIGhlZWZ0IGJlZWxkIGVuIGdlbHVpZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg2IiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPkJlaGVlciBnZWJydWlrZXJzLCBrYW1lcnMsIG9yZ2FuaXNhdGllcyZsdDtici8mZ3Q7IG9mIHZlcmFuZGVyIGRlIGluc3RlbGxpbmdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODciIG5hbWU9InJvb20gQWRtaW5pc3RyYXRpb24gcm9vbWNsaWVudHMgbGlzdCI+CisgICAgPHZhbHVlPkFjdGl2ZSBkZWVsbmVtZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4OCIgbmFtZT0icm9vbSBBZG1pbmlzdHJhdGlvbiByb29tY2xpZW50cyBsaXN0Ij4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg5IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5JbmxvZ25hYW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkwIiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5EPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5MSIgbmFtZT0ic3dmIHN5bmMgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRvY3VtZW50IGFhbiBoZXQgbGFkZW4uIEV2ZW4gd2FjaHRlbiB0b3QgYWxsZSBnZWJydWlrZXJzIHppam4gZ2VzeW5jaHJvbmlzZWVyZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkyIiBuYW1lPSJ1cGxvYWQgZGlhbG9nIj4KKyAgICA8dmFsdWU+SW1wb3J0ZXJlbiBnZWx1a3QsIG51IGFhbiBoZXQgY29udmVydGVyZW4uLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkzIiBuYW1lPSJ1cGxvYWQgZGlhbG9nIj4KKyAgICA8dmFsdWU+QmVnaW4gaW1wb3J0ZXJlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTQiIG5hbWU9InVwbG9hZCBkaWFsb2ciPgorICAgIDx2YWx1ZT5JbXBvcnRlZXIgc2NoZXJtLiBab2VrIGVuIHNlbGVjdGVlciBlZW4gYmVzdGFuZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk1IiBuYW1lPSJ1cGxvYWQgRGlhbG9nIj4KKyAgICA8dmFsdWU+QW5udWxlcmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NiIgbmFtZT0idXBsb2FkIERpYWxvZyI+CisgICAgPHZhbHVlPlNlbGVjdGVlciBiZXN0YW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NyIgbmFtZT0iYWRtaW5pc3RyYXRpb24gbmF2aWdhdGlvbiI+CisgICAgPHZhbHVlPkFjdGl2ZSBzZXNzaWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5OCIgbmFtZT0iY29uZmFkbWluIHZhbHVlIGxpc3QiPgorICAgIDx2YWx1ZT5XYWFyZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk5IiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+U3RyZWFtaWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAwIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+SW5sb2duYWFtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwMSIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPlZlcmJvbmRlbiBzaW5kczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDIiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5LYW1lciAvIGJlcmVpazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDMiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5VaXRsb2dnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA0IiBuYW1lPSJraWNrIHVzZXIgY29uZmlybWF0aW9uIGRpYWxvZyI+CisgICAgPHZhbHVlPlVpdGxvZ2dlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDUiIG5hbWU9ImtpY2sgdXNlciBjb25maXJtYXRpb24gZGlhbG9nIj4KKyAgICA8dmFsdWU+V2VldCBqZSB6ZWtlciBkYXQgamUgZGV6ZSBnZWJydWlrZXIgd2lsdCB1aXRsb2dnZW4/Jmx0O2JyLyZndDtEZSBnZWJydWlrZXIgemFsIHVpdCBkaXQgb3ZlcmxlZyB3b3JkZW4gZ2VoYWFsZC4gRGUgZ2VicnVpa2VyIGthbiB3ZWwgd2VlciBvcG5pZXV3IGRlZWxuZW1lbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA2IiBuYW1lPSJraWNrIHVzZXIgbWVzc2FnZSBkaWFsb2ciPgorICAgIDx2YWx1ZT5KZSBiZW50IGRvb3IgZWVuIG9yZ2FuaXNhdG9yIG9mIGJlaGVlcmRlciB1aXQgaGV0IG92ZXJsZWcgZ2VoYWFsZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA3IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Bob25lIj4KKyAgICA8dmFsdWU+VGVsZWZvb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA4IiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5HZWJydWlrZXIgaXMgb3JnYW5pc2F0b3IgaW4gZGl0IG92ZXJsZWc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA5IiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5HZWJydWlrZXIgbWFnIHRla2VuZW4gb3AgaGV0IHRla2VuYm9yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTAiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPihIZXIpIFN0YXJ0IGJlZWxkL2dlbHVpZCBvZiB2ZXJhbmRlciBpbnN0ZWxsaW5nZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjExIiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5HZWVmIGdlYnJ1aWtlciB0b2VzdGVtbWluZyBvbSBvcCBoZXQgdGVrZW5ib3JkIHRlIHRla2VuZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEyIiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5PbnRuZWVtIGdlYnJ1aWtlciB0b2VzdGVtbWluZyBvbSBvcCBoZXQgdGVrZW5ib3JkIHRlIHRla2VuZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEzIiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+R2VicnVpa2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTQiIG5hbWU9ImNvbmZlcmVuY2VQYW5lbHMiPgorICAgIDx2YWx1ZT5CZXN0YW5kZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE1IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+VGVrZW5ib3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxNiIgbmFtZT0iY29uZmVyZW5jZVBhbmVscyI+CisgICAgPHZhbHVlPkNoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE3IiBuYW1lPSJvcmdhbml6YXRpb24gY2hvb3NlIGluZm8iPgorICAgIDx2YWx1ZT5Kb3V3IGFjY291bnQgaGVlZnQgbWVlcmRlcmUgb3JnYW5zaWF0aWVzIHRvZWdld2V6ZW4gZ2VrcmVnZW4uIFNlbGVjdGVlciBlZW4gb3JnYW5pc2F0aWUgdm9vciBkaXQgb3ZlcmxlZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE4IiBuYW1lPSJlcnJvciBtZXNzYWdlIHJvb20gZnVsbCI+CisgICAgPHZhbHVlPkRpdCBvdmVybGVnIGlzIHZvbC4gUHJvYmVlciBoZXQgbGF0ZXIgbm9nbWFhbHMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxOSIgbmFtZT0icm9vbXR5cGVzIj4KKyAgICA8dmFsdWU+S2FtZXIgc29vcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIwIiBuYW1lPSJhcHBvaW50ZWRfcm9vbSI+CisgICAgPHZhbHVlPkFmc3ByYWFrIGthbWVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyMSIgbmFtZT0ic2VydmVydGltZSI+CisgICAgPHZhbHVlPlNlcnZlciB0aWpkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyMiIgbmFtZT0iaW52X3JlbWluZGVyX3RlbXBsYXRlX2hlYWQiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgLSBoZXJpbm5lcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjMiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2Zyb20iPgorICAgIDx2YWx1ZT5CZXJpY2h0IHZhbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI0IiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9tZXNzYWdlIj4KKyAgICA8dmFsdWU+QmVyaWNodDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI1IiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9jbGlja190ZXh0Ij4KKyAgICA8dmFsdWU+S2xpayBvcCBkZXplIGxpbmsgb20gZGVlbCB0ZSBuZW1lbiBhYW4gZGl0IG92ZXJsZWc6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNiIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfY2xpY2tfdGV4dF9saW5rIj4KKyAgICA8dmFsdWU+S2xpayBvbSBkZWVsIHRlIG5lbWVuIGFhbiBkaXQgb3ZlcmxlZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjciIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2NsaWNrX3RleHRfaGVscCI+CisgICAgPHZhbHVlPkFscyBqZSBwcm9ibGVtZW4gb25kZXJ2aW5kdCBtZXQgZGUgbGluaywga29waWVlciBlbiBwbGFrIGRlemUgaW4gZWVuIGludGVybmV0IGJyb3dzZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyOCIgbmFtZT0iYnRuX3NlYXJjaF9pbnRlcm4iPgorICAgIDx2YWx1ZT5ab2VrIGludGVybjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjkiIG5hbWU9ImJ0bl9zZWFyY2hfZXh0ZXJuIj4KKyAgICA8dmFsdWU+RXh0ZXJuZSB0b2V2b2VnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMwIiBuYW1lPSJsYmxfcHJlbmFtZSI+CisgICAgPHZhbHVlPlZvb3JuYWFtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzMSIgbmFtZT0ibGJsX25hbWUiPgorICAgIDx2YWx1ZT5BY2h0ZXJuYWFtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzMiIgbmFtZT0ibGJsX2VtYWlsIj4KKyAgICA8dmFsdWU+RS1tYWlsIGFkcmVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzMyIgbmFtZT0ibG9nb3V0Q29uZmlybV90aXRsZSI+CisgICAgPHZhbHVlPlVpdGxvZ2dlbiBiZXZlc3RpZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNCIgbmFtZT0ibG9nb3V0Q29uZmlybV9zdXJlX3RvX2xvZ291dF9xdWVzdGlvbiI+CisgICAgPHZhbHVlPldlZXQgamUgemVrZXIgZGF0IGplIHdpbHQgdWl0bG9nZ2VuPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzUiIG5hbWU9Im1haW4gbWVudSI+CisgICAgPHZhbHVlPkFjdGllczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzYiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EZW1vIGthbWVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNyIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkRlbW8gdGlqZCAoc2VjKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzgiIG5hbWU9Im1lZXRpbmcgVGltZXIiPgorICAgIDx2YWx1ZT5PdmVybGVnIHRpamQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM5IiBuYW1lPSJtZWV0aW5nIFRpbWVyIj4KKyAgICA8dmFsdWU+RGl0IGlzIGVlbiBkZW1vbnN0cmF0aWUga2FtZXIuIEplIHdvcmR0IGF1dG9tYXRpc2NoIHVpdGxvZ2QgaW4gOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDAiIG5hbWU9Im1lZXRpbmcgcm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlRvZXppY2h0aG91ZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MSIgbmFtZT0ibW9kZXJhdGVkIHJvb20gd2FpdGluZyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGUgb3JnYW5pc2F0b3IsIGJlaGVlcmRlciBvZiBwbGFubmVyIHZhbiBkaXQgb3ZlcmxlZyBpcyBub2cgbmlldCBhYW53ZXppZy4gRXZlbiB3YWNodGVuIGF1Yi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQyIiBuYW1lPSJlcnJvciBwb3B1cCI+CisgICAgPHZhbHVlPk9LPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MyIgbmFtZT0id2luZG93IHNjcmVlbnNoYXJpbmciPgorICAgIDx2YWx1ZT5TY2hlcm0gZGVsZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ0IiBuYW1lPSJ3aW5kb3cgc2NyZWVuIHNoYXJpbmciPgorICAgIDx2YWx1ZT5FciB3b3JkdCBlZW4gc2NoZXJtIGdlZGVlbHRlIGRvb3IgZ2VicnVpa2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDUiIG5hbWU9IndpbmRvdyBzY3JlZW4gc2hhcmluZyI+CisgICAgPHZhbHVlPlN0YXJ0IG1ldCBkZWxlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDYiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+TmlldXcgb3ZlcmxlZyB0b2V2b2VnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ3IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkthbWVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDgiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RXZlbmVtZW50IGthbWVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0OSIgbmFtZT0ibWFpbiBtZW51IG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5PcmdhbmlzYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTAiIG5hbWU9Im1lbnUgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkJlaGVlciBkZSBnZWJydWlrZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1MSIgbmFtZT0ibWVudSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+QmVoZWVyIGRlIGthbWVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTIiIG5hbWU9Im1vZGVyYXRvciBvcmciPgorICAgIDx2YWx1ZT5NPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1MyIgbmFtZT0iY29uZmlybSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+V2lsIGplIGRlemUgZ2VicnVpa2VyIG9yZ2FuaXNhdG9yIG1ha2VuIHZhbiBkZXplIG9yZ2FuaXNhdGllPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTQiIG5hbWU9ImVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5KZSBrdW50IHBhcyBlZW4gZ2VicnVpa2VyIHRvZXZvZWdlbiBhbHMgamUgZWVuIG9yZ2FuaXNhdGllIGhlYnQgZ2Vrb3plbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU1IiBuYW1lPSJjaG9vc2UgdXNlciB3aW5kb3ciPgorICAgIDx2YWx1ZT5PcmdhbmlzYXRpZSAtIG9yZ2FuaXNhdG9yZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU2IiBuYW1lPSJtb2RlcmF0b3Igb3JnIHVzZXJzIj4KKyAgICA8dmFsdWU+V2lsIGplIGRlemUgZ2VicnVpa2VyIGVjaHQgdWl0IGRlemUgb3JnYW5pc2F0aWUgaGFsZW4/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1NyIgbmFtZT0ib3JnIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5EZXplIGdlYnJ1aWtlciBpcyBvcmdhbmlzYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTgiIG5hbWU9Im9yZyBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+RGV6ZSBnZWJydWlrZXIgaXMgZ2VlbiBvcmdhbmlzYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTkiIG5hbWU9ImVycm9yIG1lc3NhZ2UgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkRlemUgZ2VicnVpa2VyIGdlZW4gb3JnYW5pc2F0b3I/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MCIgbmFtZT0ibW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPlRvZXZvZWdlbiBvZiB2ZXJ3aWpkZXJlbiB2YW4gZ2VicnVpa2VycyBvZiBrYW1lcnMgaW4gamUgb3JnYW5pc2F0aWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYxIiBuYW1lPSJkZWxldGUgY29uZmlybSBxdWVzdGlvbiI+CisgICAgPHZhbHVlPldpbCBqZSBkaXQgaXRlbSBlY2h0IHZlcndpamRlcmVuPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjIiIG5hbWU9ImRlbGV0ZSBjb25maXJtIHF1ZXN0aW9uIHVzZXIgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPldpbCBqZSBkZXplIGdlYnJ1aWtlciBlY2h0IHVpdCBqZSBvcmdhbmlzYXRpZSB2ZXJ3aWpkZXJlbj8gSGV0IGdlYnJ1aWtlcnNhY2NvdW50IGJsaWpmdCB3ZWwgYmVzdGFhbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYzIiBuYW1lPSJlcnJvciBtZXNzYWdlIHNlbGYgZGVsZXRpbmciPgorICAgIDx2YWx1ZT5KZSBrdW50IGplIGVpZ2VuIGdlYnJ1aWtlcnNhY2NvdW50IG5pZXQgdmVyd2lqZGVyZW4hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NCIgbmFtZT0iZXJyb3IgbWVzc2FnZSBhdXRoIj4KKyAgICA8dmFsdWU+RGl0IGthbiBhbGxlZW4gZWVuIGJlaGVlcmRlciBkb2VuITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjUiIG5hbWU9ImVycm9yIG1lc3NhZ2UgU09BUCI+CisgICAgPHZhbHVlPkVyIHppam4gZ2VlbiBzZXNzaWUgZ2Vrb3BwZWxkIGFhbiBkaXQgSUQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NiIgbmFtZT0iZXJyb3IgbWVzc2FnZSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+RGl0IGlzIGVlbiBiZWhlZXJhY2NvdW50LiBKZSBrdW50IGRpdCBhY2NvdW50IGJld2Vya2VuIGluIGhldCBiZWhlZXIgQmVoZWVyL0dlYnJ1aWtlcnMgZ2VkZWVsdGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NyIgbmFtZT0iZW1haWwgdmVyaWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+S2xpayBvcCBkZSBsaW5rIG9tIGRlIHJlZ2lzdHJhdGllIGFmIHRlIHJvbmRlbi4gTW9jaHQgZGl0IG5pZXQgbHVra2VuLCBrb3BpZWVyIGVuIHBsYWsgZGV6ZSBpbiBlZW4gaW50ZXJuZXQgYnJvd3Nlci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY4IiBuYW1lPSJlbWFpbCB2ZXJpZmljYXRpb24iPgorICAgIDx2YWx1ZT5LbGlrIG9tIGplIEUtbWFpbCBhZHJlcyB0ZSBjb250cm9sZXJlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjkiIG5hbWU9ImVycm9yTWVzc2FnZV9Vc2VyQWN0aXZhdGlvblNlcnZsZXQgW0FjdGl2YXRlVXNlcl0iPgorICAgIDx2YWx1ZT5FciBpcyBnZWVuIGdlYnJ1aWtlciBtZXQgZGV6ZSBnZWdldmVucy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjcwIiBuYW1lPSJlcnJvck1lc3NhZ2VfVXNlckFjdGl2YXRpb25TZXJ2bGV0IFtBY3RpdmF0ZVVzZXJdIj4KKyAgICA8dmFsdWU+RGV6ZSBnZWJydWlrZXIgaXMgYWwgYWN0aWVmITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzEiIG5hbWU9ImVycm9yTWVzc2FnZV9Vc2VyQWN0aXZhdGlvblNlcnZsZXQgW0FjdGl2YXRlVXNlcl0iPgorICAgIDx2YWx1ZT5IZXQgYWNjb3VudCBpcyBzdWNjZXN2b2wgZ2VhY3RpdmVlcmQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3MiIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPk51IGlubG9nZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3MyIgbmFtZT0ibG9naW5FcnJvck1lc3NhZ2UgPSB1c2VyIHdhcyBub3QgYWN0aXZhdGVkIj4KKyAgICA8dmFsdWU+SGV0IGFjY291bnQgaXMgbm9nIG5pZXQgYWN0aWVmLiBHZWJydWlrIGVlcnN0ZSBkZSBsaW5rIGluIGRlIEUtbWFpbCBkaWUgamUgaGVidCBnZWtyZWdlbiB0aWpkZW5zIGRlIHJlZ2lzdHJhdGllLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzQiIG5hbWU9InJlZ2lzdGVyIHZlcmlmaWNhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+SW4gaW5zY2hyaWp2ZW4gaXMgbnUgdm9sbGVkaWcuIEVyIGlzIGVlbiBFLW1haWwgZ2VzdHV1cmQgbWV0IGVlbiB2ZXJpZmljYXRpZSBsaW5rLiBDb250cm9sbGVlciBqZSBQb3N0dmFrLUluLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzUiIG5hbWU9InBhcnRpY2lwYW50cyBwYW5lbCI+CisgICAgPHZhbHVlPlZlcndpamRlciBvcmdhbmlzYXRvciByb2wgdmFuIGdlYnJ1aWtlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzYiIG5hbWU9InBhcnRpY2lwYW50cyBwYW5lbCI+CisgICAgPHZhbHVlPkdlZWYgb3JnYW5pc2F0b3Igcm9sIGFhbiBkZXplIGdlYnJ1aWtlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzciIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkdlYnJ1aWtlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzgiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlRvZWdhbmcgdG90IHRla2VuYm9yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzkiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPk9yZ2FuaXNhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+TW9kZXJhdGlvbjogU2VsZWN0ZWVyIGVlbiBnZWJydWlrZXIgb20gZGV6ZSB0ZWtlbmJvcmQgZW4vb2Ygb3JnYW5pc2F0b3IgdG9lZ2FuZyB0ZSBnZXZlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgxIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5EZXplIGdlYnJ1aWtlciBpcyBhbCBvcmdhbmlzYXRvciBlbiBoZWVmdCBkdXMgdG9lZ2FuZyB0b3QgaGV0IHRla2VuYm9yZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgyIiBuYW1lPSJldmVudCB1c2VyIGxpc3QgZXJyb3IiPgorICAgIDx2YWx1ZT5EaXQgYmVuIGplIHplbGYhIEplIGt1bnQgamV6ZWxmIGdlZW4gb3JnYW5pc2F0b3IgcmVjaHRlbiBvbnRuZW1lbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgzIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5HZWVmIGRlemUgZ2VicnVpa2VyIGJlZWxkIGVuIGdlbHVpZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODQiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPk9udG5lZW0gZGV6ZSBnZWJydWlrZXIgYmVlbGQgZW4gZ2VsdWlkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4NSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+SWsgem91IGdyYWFnIG9yZ2FuaXNhdG9yIHZhbiBkaXQgb3ZlcmxlZyB3b3JkZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg2IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5JayB6b3UgZ3JhYWcgd2lsbGVuIHRla2VuZW4gb3AgaGV0IHRla2VuYm9yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODciIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPklrIHpvdSBncmFhZyBtaWpuIGJlZWxkIGVuIGdlbHVpZCBkZWxlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODgiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkplIGJlbnQgb3JnYW5pc2F0b3IgdmFuIGRlemUga2FtZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg5IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5KZSBtYWcgdGVrZW5lbiBvcCBoZXQgdGVrZW5ib3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5MCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+SmUgbWFnIGplIGJlZWxkIGVuIGdlbHVpZCBkZWxlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTEiIG5hbWU9ImVycm9ydHlwZSI+CisgICAgPHZhbHVlPkJlcmljaHQgdmFuIGRlIG9yZ2FuaXNhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5MiIgbmFtZT0iYXBwbHkgZm9yIG1vZCBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGUgZ2VicnVpa2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5MyIgbmFtZT0iYXBwbHkgZm9yIG1vZCBtZXNzYWdlIj4KKyAgICA8dmFsdWU+d2lsIGdyYWFnIG9yZ2FuaXNhdG9yIHdvcmRlbi4gR2VicnVpayBkZSBzdGF0dXMgaWNvbmVuIG5hYXN0IGRlIGdlYnJ1aWtlciBvbSBkaXQgaW4gdGUgc3RlbGxlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk0IiBuYW1lPSJhcHBseSBmb3Igd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPndpbCBncmFhZyB0ZWtlbmVuIG9wIGhldCB0ZWtlbmJvcmQuIEdlYnJ1aWsgZGUgc3RhdHVzIGljb25lbiBuYWFzdCBkZSBnZWJydWlrZXIgb20gZGl0IGluIHRlIHN0ZWxsZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5NSIgbmFtZT0iNjk1Ij4KKyAgICA8dmFsdWU+d2lsIGdyYWFnIGJlZWxkIGVuIGdlbHVpZCBkZWxlbi4gR2VicnVpayBkZSBzdGF0dXMgaWNvbmVuIG5hYXN0IGRlIGdlYnJ1aWtlciBvbSBkaXQgaW4gdGUgc3RlbGxlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk2IiBuYW1lPSJtb2RlcmF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5KZSBtb2V0IHdhY2h0ZW4gdG90ZGF0IGRlIG9yZ2FuaXNhdG9yIGVyIGlzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTciIG5hbWU9ImNhbGVuZGFyIGJ1dHRvbiI+CisgICAgPHZhbHVlPkFubnVsZXJlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTgiIG5hbWU9ImNhbGVuZGFyIGJ1dHRvbiI+CisgICAgPHZhbHVlPk9wc2xhYW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk5IiBuYW1lPSJjYWxlbmRhciBjb21wb25lbnQiPgorICAgIDx2YWx1ZT5EYWc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAwIiBuYW1lPSJjYWxlbmRhciBjb21wb25lbnQiPgorICAgIDx2YWx1ZT5NYWFuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDEiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPkphYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAyIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+QmVzdGFuZCB1cGxvYWRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDMiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5EaXJlY3RvcnkgdG9ldm9lZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwNCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlZlcm5pZXV3ZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA1IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+VnVpbG5pc2JhazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDYiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5NaWpuIGJlc3RhbmRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDciIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5CZXN0YW5kZW4gaW4gZGUga2FtZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA4IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+QmVzdGFuZCB0b2V2b2VnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA5IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+RGlyZWN0b3J5IHRvZXZvZWdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTAiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5EaXJlY3RvcnkgdmVyd2lqZGVyZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzExIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+TmFhbSB3aWp6aWdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTIiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5OaWV1d2UgZGlyZWN0b3J5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMyIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPldlZXQgamUgemVrZXIgZGF0IGplIGRpdCB3aWx0IHZlcndpamRlcmVuPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTQiIG5hbWU9InVzZXIgYWRtaW4iPgorICAgIDx2YWx1ZT5ab2VrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxNSIgbmFtZT0idXNlciBhZG1pbiI+CisgICAgPHZhbHVlPlpvZWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE2IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+T3BlbiBkb2N1bWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTciIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Ub29uIGFsbGUgYmVzdGFuZGVuIChUcmVlIFZpZXcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxOCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlNsdWl0IERvY3VtZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxOSIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlZlcndpamRlciBiZXN0YW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyMCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkplIG1hZyBuaWV0IHRla2VuZW4gb3AgaGV0IHRla2VuYm9yZC4gSmUgZGllbnQgb3JnYW5pc2F0b3IgdGUgemlqbiBvZiB0b2VzdGVtbWluZyBoaWVydm9vciB0ZSBrcmlqZ2VuLiBKZSBrdW50IGRlIG9yZ2FuaXNhdG9yIHZyYWdlbiB2b29yIHRvZXN0ZW1taW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjEiIG5hbWU9InByb3BlcnR5IHBhbmVsIj4KKyAgICA8dmFsdWU+RG9jdW1lbnQgZWlnZW5zY2hhcHBlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjIiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPlN0YXJ0IEphdmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIzIiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5TdGFydCBGbGFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjQiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPkVlbiBnZWJydWlrZXIgd2lsIGVlbiBzY2hlcm0gbWV0IGplIGRlbGVuLiBXaWwgamUgZGV6ZSB6aWVuPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjUiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPk9wIGRpdCBtb21lbm4gZGVlbCBqZSBlZW4gc2NoZXJtLiBLbGlrIG9wIGRlIFN0b3Aga25vcCBvbSBkaXQgdGUgYmVlaWRpbmdlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI2IiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5HZWdldmVucyBkZWxlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjciIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPkplIHNjaGVybSB3b3JkdCBhbCBnZXRvb25kIGFhbiBhbmRlcmUgZ2VicnVpa2VycyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI4IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkRlc2t0b3AgVmlld2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyOSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdG9wIERlbGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TY2hlcm0gZGVsZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMxIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPktsaWsgb3AgU3RhcnQgb20gamUgc2NoZXJtIHRlIGRlbGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdGFydCBkZWxlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzMiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UGF1c2UgZGVsZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM0IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlNlbGVjdGVlciBoZXQgZ2ViaWVkIG9wIGplIHNjaGVybTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM1IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkJyZWVkdGUgdmVyYW5kZXJlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzYiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+SGV0IHNjaGVybSBkZWxlbiBpcyBiZWluZGlnZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM3IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkhvb2d0ZSB2ZXJhbmRlcmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczOCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5YLWFmc3RhbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM5IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlktYWZzdGFuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDAiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+QnJlZWR0ZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQxIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkhvb2d0ZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQyIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlZlcmJpbmRpbmcgaXMgYmVpbmRpZ2QgZG9vciBkZSBzZXJ2ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQzIiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPkFubnVsZXJlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDQiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+U3RhcnQgSmF2YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDUiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+QWxzIGplIGRlemUgc2Vzc2llIHZvbGxlZGlnIGJlaW5kaWdkLCBrdW4gamUgaGVtIG5pZXQgb3BuaWV1dyBiZWtpamtlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ2IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPkJldmVzdGlnaW5nIHZhbiBoZXQgc2x1aXRlbiB2YW4gZGV6ZSBzZXNzaWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ3IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPkRlZWwgc2NoZXJtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0OCIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5OZWVtIHNlc3NpZSBvcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDkiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5TYW1lbiBicm93c2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MCIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPkZpcmVmb3ggb3AgV2luZG93cyBnZWVmdCBzb21zIHByb2JsZW1lbiBtZXQgc2FtZW4gYnJvd3Nlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUxIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+Vm9yaWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MiIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPlZvbGdlbmRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MyIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPk9wbmlldXcgbGFkZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU0IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+QmVnaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU1IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+TGFkZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU2IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+TWFhayBkZXplIHdlYnNpdGUgamUgZGVmYXVsdCB3ZWJzaXRlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTciIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5UZXN0IFNldHVwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1OCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlRlc3QgYmVlbGQgZW4gZ2VsdWlkIHZvb3JkYXQgamUgYWFuIGVlbiBvdmVybGVnIGJlZ2ludC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU5IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+TGFhdCBkZXplIHRlc3QgbmlldCB3ZWVyIHppZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYwIiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+QW5udWxlcmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MSIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlN0YXJ0IE92ZXJsZWc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYyIiBuYW1lPSJlZGl0IHZpZGVvIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+TmlldCBvcG5pZXV3IHZyYWdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjMiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5SRUM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY0IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+UExBWTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjUiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5XaWwgamUgZG9vcmdhYW4gem9uZGVyIHRlc3Q/IEplIGJlbnQgZGFuIG5vZyBzdGVlZHMgaW4gc3RhYW4gb20gdGUgY2hhdHRlbiBlbiB0ZSB0ZWtlbiBvcCBoZXQgdGVrZW5ib3JkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjYiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5TVE9QPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NyIgbmFtZT0iNzY3Ij4KKyAgICA8dmFsdWU+Tml2ZWF1IG1ldGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2OCIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPktpZXMgQmVnaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY5IiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+QmVnaW4gZGlyZWN0IGVlbiBvdmVybGVnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MCIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPkJlZ2luIGV2ZW5lbWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzEiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5LaWVzIEthbWVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MiIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPldpanppZyBJbnN0ZWxsaW5nZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzczIiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+QmVnaW4gT3ZlcmxlZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzQiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5TdGFydCB3aXphcmQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NSIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlN0YXJ0IE9wbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzYiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5CZWVsZCBlbiBnZWx1aWQgaWVkZXJlIGtlZXIgdGVzdGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NyIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPk9wZW5iYXJlIGthbWVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzgiIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT5PcGVuYmFyZSBrYW1lcnMgemlqbiB0b2VnYW5rZWxpamsgdm9vciBhbGxlIGdlYnJ1aWtlcnMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3OSIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPlByaXZlIGthbWVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODAiIG5hbWU9IlByaXZhdGUgUm9vbXMiPgorICAgIDx2YWx1ZT5Qcml2ZSBrYW1lcnMgemlqbiBhbGxlZW4gdG9lZ2Fua2VsaWprIHZvb3IgZ2VicnVpa2VycyB2YW4gZGV6ZWxmZGUgb3JnYW5pc2F0aWUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MSIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPk1pam4ga2FtZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MiIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPkRlemUga2FtZXJzIHppam4gdm9vciBwZXJzb29ubGlqayBnZWJydWlrIGVuIGFhbmdlbWFha3QgbWlkZGVscyBkZSBrYWxlbmRlci4gWmUgaGViYmVuIGVlbiBzdGFydCBlbiBlaW5kIGRhdHVtLiBaZSBzdGFhbiBoaWVyIHpvbGFuZyB6ZSBub2cgZ2VsZGlnIHppam4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MyIgbmFtZT0icmVzdHJpY3RlZCByb29tIj4KKyAgICA8dmFsdWU+SmUgZGllbnQgb3JnYW5pc2F0b3IgdGUgemlqbiBvbSBkaXQgdGUgZG9lbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg0IiBuYW1lPSJtZW51IG9wdGlvbiI+CisgICAgPHZhbHVlPlRvZWdhbmcgYWFudnJhZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NSIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT5Ub2VnYW5nIGFhbnZyYWdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODYiIG5hbWU9Im1lbnUgb3B0aW9uIj4KKyAgICA8dmFsdWU+VnJhZ2VuIHZvb3IgYmVlbGQgZW4gZ2VsdWlkIGRlZWxuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NyIgbmFtZT0iZXJyb3IgbWVzc2FnZSBzb2FwIHNlY3VyZSBsb2dpbiI+CisgICAgPHZhbHVlPkRlemUgc2Vzc2llIGlzIGFsIGdlYnJ1aWt0IGVuIGt1biBqZSBuaWV0IG5vZ21hYWxzIGdlYnJ1aWtlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg4IiBuYW1lPSJkYXNoYm9hcmQgYnV0dG9uIj4KKyAgICA8dmFsdWU+QkVHSU48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg5IiBuYW1lPSJleGl0IGNvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT5FSU5ERTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTAiIG5hbWU9ImNvbmZlcmVuY2UgdmlldyI+CisgICAgPHZhbHVlPldpbCBqZSBkaXQgb3ZlcmxlZyBlY2h0IHZlcmxhdGVuPyBIZXQgaXMgcmFhZHphYW0gYmVzdGFuZGVuLCB0ZWtlbmJvcmQgZW4gY2hhdCBoaXN0b3JpZSBvcCB0ZSBzY2hvbmVuITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTEiIG5hbWU9ImNvbmZlcmVuY2UgdmlldyI+CisgICAgPHZhbHVlPlZlcmxhYXQgb3ZlcmxlZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTIiIG5hbWU9Im1haW4gbWVudSI+CisgICAgPHZhbHVlPkthbWVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTMiIG5hbWU9Im1haW4gbWVudSI+CisgICAgPHZhbHVlPktpZXMgZWVuIGthbWVyIHZvb3IgZWVuIG92ZXJsZWc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk0IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkVyIGlzIGVlbiBuaWV0IG9wZ2VzbGFnZW4gZXZlbmVtZW50IGluIGRlIGthbGVuZGVyLiBCZXdhYXIgb2YgdmVyd2lqZGVyIGRlemUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5NSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5KZSBkaWVudCBtaW5pbWFhbCAxIHBlcnNvb29uIHVpdCB0ZSBub2RpZ2VuITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTYiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+V2VldCBqZSB6ZWtlciBvZiBqZSBkaXQgZXZlbmVtZW50IHdpbHQgdmVyd2lqZGVyZW4/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5NyIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5XYWFyc2NodXdpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk4IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkV2ZW5lbWVudCB0b2V2b2VnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk5IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPmRhZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDAiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+V2VlazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDEiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+bWFhbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAyIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPk9tc2NocmlqdmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDMiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RGVlbG5lbWVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPktpZXMgdm9vciBCRUdJTiBvbSBtZXRlZW4gZWVuIG92ZXJsZWcgdGUgc3RhcnRlbiBvZiBnYSBuYWFyIGRlIGthbGVuZGFyIG9tIGlldHMgdGUgcGxhbm5lbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA1IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5QbGFuIGVlbiBvdmVybGVnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNiIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPk9tIGVlbiBvdmVybGVnIHRlIHBsYW5uZW4sIGRpZW4gamUgZWVuIGV2ZW5lbWVudCBhYW4gZGUga2FsZW5kZXIgdG9lIHRlIHZvZWdlbi4gVm9vciBpZWRlciBldmVuZW1lbnQgemFsIGF1dG9tYXRpc2NoIGVlbiBrYW1lciBhYW5nZW1hYWt0IHdvcmRlbi4gSWVkZXJlIGRlZWxuZW1lciB6YWwgRS1tYWlsIG9udHZhbmdlbiBtZXQgZWVuIGxpbmsgbmFhciBkZSBrYW1lci4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7RXIgaXMga2V1emUgaW4gdmVyc2NoaWxsZW5kZSBzb29ydGVuIGthbWVycy4gVGV2ZW5zIGthbiBpZWRlcmUga2FtZXIgZWVuIGVpZ2VuIGxheW91dCBrcmlqZ2VuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDciIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5IdWxwIG5vZGlnPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDgiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5CZXBlcmt0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwOSIgbmFtZT0ibHpjYWxlbmRlciI+CisgICAgPHZhbHVlPlpvZWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEwIiBuYW1lPSJsemNhbGVuZGVyIj4KKyAgICA8dmFsdWU+VG9ldm9lZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMSIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPkVyIGlzIGdlZW4gZ2VicnVpa2VyIGdlc2VsZWN0ZWVyZC4gS2llcyBlZXJzdCBlZW4gaXRlbSBlbiBrbGlrIGRhbiBvcCB0b2V2b2VnZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMiIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPk5pZXV3ZSBkZWVsbmVtZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEzIiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+T3BzbGFhbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTQiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5WZXJ3aWpkZXJlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTUiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5FdmVuZW1lbnQgZGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTYiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5TdGFuZGFhcmQgb3JnYW5pc2F0b3JzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxNyIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkhvb2ZkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxOCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPklEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxOSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPk5hYW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIwIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RS1tYWlsIGFkcmVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyMSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPk5pZXV3ZSBzdGFuZGFhcmQgb3JnYW5pc2F0b3IgdG9ldm9lZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyMiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPklzIGhvb2ZkLW9yZ2FuaXNhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyMyIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkFscyBkZSBrYW1lciB2b29yemllbiBpcyB2YW4gb3JnYW5pc2F0b3Jlbiwgd29yZGVuIGdlYnJ1aWtlcnMgbWV0IGRlemUgcm9sIGF1dG9tYXRpc2NoIG9yZ2FuaXNhdG9yIGFscyB6ZSBoZXQgb3ZlcmxlZyBiZXRyZWRlbi4gQWxzIGplIGRpdCBuaWV0IHdpbHQsIHN0ZWwgZGFuIGVlbiBzdGFuZGFhcmQgb3JnYW5pc2F0b3IgaW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkEgU3VwZXIgTW9kZXJhdG9yIGlzIGFsd2F5cyBhIE1vZGVyYXRvciB3aGVuIGhlIGVudGVycyBhIFJvb20sIGFuZCBub2JvZHkgY2FuIHJlbW92ZSB0aGUgTW9kZXJhdGlvbiBGbGFnIGZyb20gaGltPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkdlZWYgaG9vZmQtb3JnYW5pc2F0b3Igcm9sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPk9udG5lZW0gaG9vZmQtb3JnYW5pc2F0b3Igcm9sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNyIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI4IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+QWxzIGplIGVlbiBvcmdhbmlzYXRpZSB0b2V2b2VnZCBhYW4gZWVuIGthbWVyLCBrdW5uZW4gYWxsZWVuIGdlYnJ1aWtlcnMgdmFuIGRpZSBvcmdhbmlzYXRpZSBkZSBrYW1lciBiZXRyZWRlbiAobGV0b3A6IGRhdCBkZSBrYW1lciBuaWV0IG9wZW5iYWFyIGlzISk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI5IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+T3JnYW5pc2F0b3JlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzAiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5Db25kaXRpZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzEiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5PcmdhbmlzYXRpZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzIiIG5hbWU9ImNvbmZpcm0gYWN0aW9uIj4KKyAgICA8dmFsdWU+V2VldCBqZSBoZXQgemVrZXI/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzMyIgbmFtZT0iY29uZmlybSBkZWxldGUiPgorICAgIDx2YWx1ZT5XZWV0IGplIHpla2VyIGRhdCBqZSBkaXQgb2JqZWN0IHdpbHQgdmVyd2lqZGVyZW4/IEtpZXMgdm9vciBvcHNsYWFuIG9tIGRpdCB0ZSBiZXdhcmVuITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzQiIG5hbWU9InVzZXIgY2hvb3NlIGVycm9yIj4KKyAgICA8dmFsdWU+RXIgaXMgZ2VlbiBnZWJydWlrZXIgZ2VzZWxlY3RlZXJkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzUiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5OaWV1d2Ugc3RhbmRhYXJkIG9yZ2FuaXNhdG9yIHRvZXZvZWdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzYiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5XaWwgamUgZGV6ZSBnZWJydWlrZXIgaG9vZmQtb3JnYW5pc2F0b3IgbWFrZW4/IEVlbiBob29mZC1vcmdhbmlzYXRvciBpcyBvcmdhbmlzYXRvciBlbiBuaWVtYW5kIGthbiBkZXplIG9yZ2FuaXNhdG9yIHJvbCB0ZXJ1Z2RyYWFpZW5uLiBLaWVzIHZvb3Igb3BzbGFhbiBvbSBkaXQgdGUgYmV3YXJlbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+V2lsIGplIGRlIHJvbCBob29mZC1vcmdhbmlzYXRvciB3ZWdoYWxlbiB2b29yIGRlIGdlYnJ1aWtlcj8gS2llcyBrYW1lciBvcHNsYWFuIG9tIGRpdCBkb29yIHRlIHZvZXJlbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM4IiBuYW1lPSJzdXBlciBtb2RlcmF0b3IiPgorICAgIDx2YWx1ZT5EaXQgZWVuIGVlbiBob29mZC1vcmdhbmlzYXRvci4gSmUga3VudCBlZW4gb3JnYW5pc2F0b3Igcm9sIG5pZXQgdmVyd2lqZGVyZW4gdmFuIGVlbiBob29mZC1vcmdhbmlzYXRvciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM5IiBuYW1lPSJjb25maXJtIGRlbGV0ZSI+CisgICAgPHZhbHVlPldlZXQgamUgemVrZXIgZGF0IGRpdCBiZXN0YW5kL2RpcmVjdG9yeSB2ZXJ3aWpkZXIga2FuIHdvcmRlbj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQwIiBuYW1lPSJjb25maXJtIGRlbGV0ZSI+CisgICAgPHZhbHVlPlZlcndpamRlciBiZXN0YW5kL2RpcmVjdG9yeT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQxIiBuYW1lPSJzYWx1dGF0aW9uIj4KKyAgICA8dmFsdWU+TWV2cm91dzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDIiIG5hbWU9InNhbHV0YXRpb24iPgorICAgIDx2YWx1ZT5NZW5lZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQzIiBuYW1lPSJwcm9wZXJ0eSBwYW5lbCB3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+RWlnZW5zY2hhcHBlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDQiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5Ub29uIG11aXMgcG9zaXRpZSBhYW4ga2lqa2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDUiIG5hbWU9InB1Ymxpc2ggb3B0aW9uIj4KKyAgICA8dmFsdWU+RGVlbCBnZWx1aWQgbWlkZGVscyBTSVA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ2IiBuYW1lPSJwdWJsaXNoIG9wdGlvbiI+CisgICAgPHZhbHVlPkRlZWwgZ2VsdWlkIG1pZGRlbHMgU0lQIGVuIGJlZWxkIHZpYSBmbGFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDciIG5hbWU9ImRvY3VtZW50IHBhbmVsIj4KKyAgICA8dmFsdWU+QmVlbGR2dWxsZW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0OCIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+VG9vbiBzY2hlcm08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ5IiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5EZSBnZWJydWlrZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUwIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT53aWwgemlqbiBzY2hlcm0gZGVsZW4sIHdpbCBqZSBkaXQgemllbj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUxIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5TbHVpdGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MiIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPlpvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUzIiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+RGV6ZSBzZXNzaWUgaXMgYmVpbmRpZ2QgZG9vciBkZSBnZWJydWlrZXIgZGllIGFhbiBoZXQgZGVsZW4gd2FzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTQiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5QYXVzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTUiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5PcG5pZXV3IHNjaGVybSBkZWxlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTYiIG5hbWU9InByZXNlbnRlciBtaW5pIGljb24iPgorICAgIDx2YWx1ZT5NaW5pbWFsaXNlcmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1NyIgbmFtZT0icHJlc2VudGVyIG1pbmkgaWNvbiI+CisgICAgPHZhbHVlPk1heGltYWxpc2VyZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU4IiBuYW1lPSI4NTgiPgorICAgIDx2YWx1ZT5CZWVsZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTkiIG5hbWU9IiI+CisgICAgPHZhbHVlPk9wbmFtZSB0aWpkbGlqbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjAiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk1pam4gb3BuYW1lczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjEiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk9wZW5iYXJlIG9wbmFtZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYyIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5JbmZvcm1hdGllPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TmFhbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjQiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkxlbmd0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjUiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkRhdHVtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RG9vcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjciIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkRvd25sb2FkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2OCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+SG9vZmQgLSBCZWVsZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjkiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPk9wbmVtZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcwIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5PcG5lbWVuIGVuIHNjaGVybSBkZWxlbiBrYW4gb3AgaGV0emVsZmRlIG1vbWVudC4gT20gamUgc2NoZXJtIHRlIGRlbGVuLCBraWVzIHZvb3Igc2NoZXJtIGRlbGVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzEiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkJlZ2luIG9wbmVtZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcyIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5TdG9wIG9wbmVtZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODczIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Eb3dubG9hZCBGTFYtYmVzdGFuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzQiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkthbWVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3NSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QWZzcGVsZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TdG9wPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3NyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+R2VicnVpa2VyIGhlZWZ0IGRlIG1pY3JvZm9vbiBhYW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc4IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlN0b3AgU2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzkiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+QWxsb3cgVXNlciBRdWVzdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgwIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPlR1cm4gdGhpcyBvZmYgdG8gcHJldmVudCB0aGF0IGFueSB1c2VyIGlzIGRpc3R1cmJpbmcgeW91IGluIHRoaXMgcm9vbS4gRWZmZWN0IGlzIHRoYXQgdGhlIEJ1dHRvbiB0byBhc2sgZm9yIE1vZGVyYXRpb24gKCJJIGhhdmUgYSBxdWVzdGlvbiIpIGlzIG5vdCB2aXNpYmxlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODEiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+UmlnaHRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RG93bmxvYWQgYXMgQVZJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RkxWPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QVZJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UmF3IFNjcmVlbnZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QXVkaW8gb25seTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODciIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlRoZSBoYXZlIGJlZW4gZXJyb3JzIHdoaWxlIHByb2Nlc3NpbmcgdGhlIFJlY29yZGluZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg4IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5UaGUgUmVjb3JkaW5nIGlzIG5vdCB5ZXQgcmVhZHkgZm9yIHdhdGNoaW5nLiBQbGVhc2UgcmV0cnkgaW4gYSBjb3VwbGUgb2YgbWludXRlcyBhZ2Fpbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg5IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Mb2c6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UmVjb3JkZXIgTWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTEiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk9rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MiIgbmFtZT0ic2lwIGFwcGxldCI+CisgICAgPHZhbHVlPlNJUCBBcHBsZXQgaXMgbm90IFJlYWR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MyIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNJUC1BY2NvdW50IFNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NCIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNJUCBzZXR0aW5ncyBmb3IgZWFjaCB1c2VyLiBZb3UgY2FuIHR1cm4gb24gb3Igb2ZmIFNJUCB2aWEgdGhlIEFkbWluaXN0cmF0aW9uICZndDsgQ29uZmlndXJhdGlvbiAoS2V5OiBlbmFibGVfc2lwKS4gVGhlIFNJUCBkYXRhIGZvciBlYWNoIHVzZXIgc2hvdWxkIGJlIGNyZWF0ZWQgYXV0b21hdGljYWxseS4gWW91IGNhbiByZS1jcmVhdGUgdGhlIGRhdGEgYnkgY2hlY2tpbmcgIlJlLWdlbmVyYXRlIFNJUCBEYXRhIjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTUiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TSVAtVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTYiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TaXAtUGFzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTciIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TaXAtQXV0aC1JZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTgiIG5hbWU9InNpcCBzdGF0dXMgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSBMb2dpbiB0byB0aGUgU0lQIEdhdGV3YXkgaGFzIGZhaWxlZC4gWW91IHNob3VsZCBjaGVjayB0aGUgYXV0aGVudGlmaWNhdGlvbiBkYXRhIG9mIHlvdXIgU0lQLVByb3ZpZGVyIGFuZCB0aGUgU0lQLUFjY291bnQgRGF0YSBmb3IgZWFjaCBVc2VyLiBBcyBBZG1pbmlzdHJhdG9yIHlvdSBhcmUgc3RpbGwgYWJsZSB0byBsb2dpbiBhbmQgY2hlY2sgdGhlIENvbmZpZ3VyYXRpb24uIEFzIFVzZXIgb3IgTW9kZXJhdG9yIHlvdSB3aWxsIGJlIGJsb2NrZWQgZnJvbSBhbnkgaW50ZXJhY3Rpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5OSIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIExvZ2luIHRvIHRoZSBTSVAgR2F0ZXdheSBoYXMgZmFpbGVkLiBDb250YWN0IHlvdXIgU2VydmljZSBUZWFtITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDAiIG5hbWU9InNpcCBzdGF0dXMgbWVzc2FnZSI+CisgICAgPHZhbHVlPkxvZ2dpbmcgaW4gdG8gU0lQLUdhdGV3YXkgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwMSIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TG9nZ2luZyBpbiB0byBTSVAtR2F0ZXdheSAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAyIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TaG93IExvZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDMiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkxvZyBtZXNzYWdlcyBmcm9tIHBvc3QgcmVjb3JkZXIgcHJvY2VzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDQiIG5hbWU9InNpcCBsb2dpbiI+CisgICAgPHZhbHVlPlNJUC1BcHBsZXQgTWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDUiIG5hbWU9InNpcCBsb2dpbiI+CisgICAgPHZhbHVlPlRoZSBTSVAtQXBwbGV0IGlzIG5vdCByZWFkeS4gQWNjZXB0IHRoZSBBcHBsZXQgcGxlYXNlIGFuZCBjbGljayBvayE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA2IiBuYW1lPSJtb2RlcmF0b3IgcG9wIHVwIj4KKyAgICA8dmFsdWU+R2V0IE1vZGVyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA3IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+U2F2ZSBBcHBvaW50bWVudCBDaGFuZ2VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwOCIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlRoZSBhcHBvaW50ZW1lbnQgaGFzIGJlZW4gY2hhbmdlZC4gRG8geW91IHdhbnQgdG8gc2F2ZSB0aG9zZSBjaGFuZ2VzPyAmbHQ7YnIvJmd0OyZsdDtici8mZ3Q7QWxsIGF0dGVuZGVlcyBvZiB0aGUgYXBwb2ludG1lbnQgd2lsbCByZWNlaXZlIGEgRU1haWwgd2l0aCB0aGUgdXBkYXRlZCBkYXRlIGFuZCB0aW1lIChkZXBlbmRpbmcgb24gdGhlIG5vdGlmaWNhdGlvbiB0eXBlIG9mIHRoaXMgYXBwb2ludG1lbnQpLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDkiIG5hbWU9ImZsdiByZWNvcmRlciBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VG8gYWNjZXNzIG90aGVyIHJlY29yZGluZ3MgeW91IGhhdmUgdG8gbG9naW4gdGhlICRBUFBfTkFNRSBBcHBsaWNhdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTEwIiBuYW1lPSJpbnRlcnZpZXcgdmlkZW8gcG9kIj4KKyAgICA8dmFsdWU+Q2hvb3NlIHRoZSBVc2VyIGZvciB0aGlzIFZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMSIgbmFtZT0iaW50ZXJ2aWV3IHZpZGVvIGNob29zZSB1c2VyIj4KKyAgICA8dmFsdWU+QXZhaWxhYmxlIFVzZXJzIGZvciB0aGlzIFBvZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTIiIG5hbWU9ImludGVydmlldyBpbmZvIj4KKyAgICA8dmFsdWU+WW91IGFyZSBhIE1vZGVyYXRvciBpbiB0aGlzIEludGVydmlldy4gWW91IGNhbiBkZWNpZGUgd2hvIGlzIHNwZWFraW5nIGluIHRoaXMgaW50ZXJ2aWV3IGFuZCB5b3UgY2FuIHN0YXJ0IC8gc3RvcCB0aGUgcmVjb3JkaW5nIG9mIHRoZSBTZXNzaW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTMiIG5hbWU9ImludGVydmlldyBidXR0b24gcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+U3RhcnQgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxNCIgbmFtZT0iaW50ZXJ2aWV3IGJ1dHRvbiByZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TdG9wIFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTUiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIHJlY29yZGluZyBvZiB0aGUgSW50ZXJ2aWV3IGlzIGFscmVhZHkgc3RhcnRlZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE2IiBuYW1lPSJpbnRlcnZpZXcgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSByZWNvcmRpbmcgaXMgYWxyZWFkeSBzdG9wcGVkIG9yIG5vdCBiZWVuIHN0YXJ0ZWQgeWV0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTciIG5hbWU9ImludGVydmlldyByZWNvcmRpbmcgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSByZWNvcmRpbmcgZm9yIHRoaXMgaW50ZXJ2aWV3IGlzIGFscmVhZHkgc3RhcnRlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE4IiBuYW1lPSJpbnRlcnZpZXcgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTkiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIHBvc3QtcHJvY2Vzc2luZyBvZiBhbiBpbnRlcnZpZXcgdGFrZXMgNSBtaW51dGVzIHBlciAxIG1pbnV0ZSBpbnRlcnZpZXcuIFRoZSBjdXJyZW50IHByb2dyZXNzIG9mIHRoZSBpbnRlcnZpZXcgcG9zdC1wcm9jZXNzaW5nIHRyYW5zY29kaW5nIGlzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjAiIG5hbWU9InNpcCBjcmVhdGlvbiI+CisgICAgPHZhbHVlPllvdSBoYXZlIHRvIGVudGVyIHlvdXIgcGFzc3dvcmQgYWdhaW4gdG8gYXV0byBjcmVhdGUgdGhlIFNJUCBEYXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyMSIgbmFtZT0ic2lwIGNyZWF0aW9uIj4KKyAgICA8dmFsdWU+UmUtZ2VuZXJhdGUgU0lQIERhdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIyIiBuYW1lPSJmaWxlZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IG1vdmUgdGhpcyBmaWxlIG9yIGZvbGRlciBpbnRvIGl0cyBvd24gc3ViIGZvbGRlciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIzIiBuYW1lPSJmaWxlIGV4cGxvcmVyICI+CisgICAgPHZhbHVlPkhvbWUgZHJpdmUgc2l6ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjQiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5QdWJsaWMgZHJpdmUgc2l6ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjUiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5MaWNlbnNlIFNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNiIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPllvdSBjYW4gZWl0aGVyIGJpbmQgdGhlIHVzZXIgdG8gYSBleHBpcmUgRGF0ZSBvciB0byBhIG1heGltdW0gbnVtYmVyIG9mIG1pbnV0ZXMgd2hlbiB5b3UgZW5hYmxlIGxpY2Vuc2luZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI3IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+Q2hlY2sgbGljZW5zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjgiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5GbGF0cmF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjkiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5FeHBpcmUgZGF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzAiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5TZWNvbmRzIGxlZnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMxIiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+VG90YWwgdGltZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzIiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdXIgTGljZW5zZSBoYXMgZXhwaXJlZC4gWW91IG5lZWQgdG8gYnV5IG5ldyBtaW51dGVzIChQYXktcGVyLW1pbnV0ZSkgb3IgYSB2b2x1bWUgZmxhdHJhdGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Q2xpY2sgYW5kIGJ1eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzQiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlRpbWUgTGVmdCBvbiB5b3VyIGFjY291bnQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzNSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+VXNlciBMaWNlbnNlIEluZm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM2IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5JbmZvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzNyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Q2xvc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM4IiBuYW1lPSJsaWNlbnNlLWluZm8iPgorICAgIDx2YWx1ZT5Zb3VyIGxpY2Vuc2UgaGFzIGV4cGlyZWQuIFlvdSBuZWVkIGVpdGhlciB0byBidXkgYSBtaW51dGUgcGFja2FnZSAoUGF5LXBlci1taW51dGUpIG9yIGEgdm9sdW1lIGZsYXRyYXRlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzkiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkxpY2Vuc2Ugc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQwIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIGVpdGhlciBidXkgbWludXRlcyB0byBtYWtlIFdlYi1Db25mZXJlbmNpbmcgKFBheS1wZXItbWludXRlKS4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7IE9yIHlvdSBidXkgYSB2b2x1bWUgZmxhdHJhdGUgYWJvdXQgMy0xMiBtb250aHMuJmx0O2JyLyZndDsmbHQ7YnIvJmd0O1NlbmRpbmcgaW52aXRhdGlvbnMgKGRpcmVjdCBsaW5rcyBpbnRvIENvbmZlcmVuY2UgUm9vbXMpIG9yIGNyZWF0aW5nIGNvbmZlcmVuY2UgUm9vbXMgdmlhIHRoZSBDYWxlbmRhciB3aXRoIGV4dGVybmFsIFVzZXJzIGlzIG9ubHkgYWxsb3dlZCB3aXRoIGEgdm9sdW1lIGZsYXRyYXRlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDEiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSA2MCBNaW51dGVzIDksOTkgRVVSTyAoMTYgQ2VudCBwZXIgTWludXRlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDIiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSA1IGhvdXJzIDE5LDk5IEVVUk8gKDYgQ2VudCBwZXIgbWludXRlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDMiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSAzIG1vbnRoIGZvciAyOSw5OSBFVVJPICg5LDk5IEV1cm8gcGVyIE1vbnRoKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDQiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSA2IG1vbnRoIGZvciAzOSw5OSBFVVJPICg2LDY2IEV1cm8gcGVyIG1vbnRoKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDUiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlBheS1wZXItbWludXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Vm9sdW1lIGZsYXRyYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91IGhhdmUgdW5saW1pdGVkIExpY2Vuc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ4IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3VyIGxpY2Vuc2Ugd2lsbCBleHBpcmUgYXQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0OSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91IGJvdWdodCBQYXktcGVyLW1pbnV0ZS4gWW91IHN0aWxsIGhhdmU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IG5ldyBjcmVkaXQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+V2FudCB5b3VyIG93biBTZXJ2ZXI/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91IHdvdWxkIGxpa2UgdG8gaGF2ZSAkQVBQX05BTUUgaW5zdGFsbGVkIG9uIHlvdXIgU2VydmVyIG9yIGludGVncmF0ZWQgaW50byB5b3VyIE1vb2RsZSwgU3VnYXJDUk0sIFdlYnNpdGUgb3IgSW50cmFuZXQ/IFByaXppbmdzIHN0YXJ0IGF0IDUwMCBFdXJvIHBlciBJbnN0YWxsYXRpb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+T3Igc2VuZCB1cyBhIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU0IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5BbnN3ZXIgdG86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1NSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+TWVzc2FnZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU2IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5TZW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1NyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Q2xpY2sgaGVyZSB0byBnZXQgY29udGFjdCBJbmZvIGFuZCBQcml6aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTgiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNyZWRpdCBDYXJkIERldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU5IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5GaXJzdG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYwIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5MYXN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjEiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNyZWRpdCBDYXJkIFR5cGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYyIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5WSVNBIENhcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYzIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5NYXN0ZXJDYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2NCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+RGlzY292ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY1IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5BbWVyaWNhbiBFeHByZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2NiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q3JlZGl0IENhcmQgTnVtYmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2NyIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+RXhwaXJhdGlvbiBEYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2OCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q2FyZCBWZXJpZmljYXRpb24gTnVtYmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2OSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+QmlsbGluZyBBZGRyZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+QWRkcmVzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzEiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzIiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTczIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5Db3VudHJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U3RhdGUgKE9ubHkgVVMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+WklQPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+QW1vdW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NyIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U3VibWl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3OCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U3RlcCAxOiAkQVBQX05BTUUgLSBQYXltZW50IEZvcm08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc5IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5FTWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODAiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNsaWNrICJDaGVjayBvdXQgd2l0aCBQYXlwYWwiIHRvIHBheS4mbHQ7YnIvJmd0OyBQYXlwYWwgYWNjZXB0cyBWSVNBLCBNYXN0ZXJDYXJkLCBEaXNjb3ZlciBvciBBbWVyaWNhbiBFeHByZXNzLiAmbHQ7YnIvJmd0O0l0IGRvZXMgbm90IHJlcXVpcmUgdG8gc2lnbiB1cCB3aXRoIFBheXBhbC4gJmx0O2JyLyZndDtDaXRpemVucyBmcm9tIEdlcm1hbnkgY2FuIGFsc28gcGF5IHdpdGggZGlyZWN0IGRlYml0IChQZXIgTGFzdHNjaHJpZnQtRWluenVnKS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgxIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5UaGFuayB5b3UgZm9yIGJ1eWluZyAkQVBQX05BTUUuICZsdDtici8mZ3Q7ICZsdDtici8mZ3Q7IEFzIHNvb24gYXMgd2UgcmVjZWl2ZWQgdGhlIHBheW1lbnQgeW91ciBhY2NvdW50IHdpbGwgYmUgdXBkYXRlZC4mbHQ7YnIvJmd0OyBZb3Ugd2lsbCByZWNlaXZlIGFuIEVNYWlsIHdpdGggeW91ciBpbnZvaWNlIGFzIFBERi4mbHQ7YnIvJmd0O1lvdSBjYW4gYWxzbyBjaGVjayBjdXJyZW50IGFuZCBwYXN0IHRyYW5zYWN0aW9ucyBpbiB5b3VyIHByb2ZpbGUgc2V0dGluZ3MuJmx0O2JyLyZndDsmbHQ7YnIvJmd0OyZsdDtici8mZ3Q7WW91IGNhbiBjbG9zZSB0aGlzIGJyb3dzZXIgd2luZG93L3RhYiBub3cgYW5kIHJldHVybiB0byAkQVBQX05BTUUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U3VibWl0IGFuZCBCdXkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MyIgbmFtZT0icGF5bWVudC1mcm9tIj4KKyAgICA8dmFsdWU+Q2xpY2sgYW5kIEJ1eSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg0IiBuYW1lPSJwYXltZW50LWZyb20iPgorICAgIDx2YWx1ZT5TdGVwIDM6ICRBUFBfTkFNRSBQYXltZW50IC0gQ2hlY2sgb3JkZXIgYW5kIGJ1eSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg1IiBuYW1lPSJwYXltZW50LWZyb20iPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4NiIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+UGF5bWVudCByZWNlaXZlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg3IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5IaSw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg4IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5XZSBoYXZlIHJlY2VpdmVkIHlvdXIgcGF5bWVudC4gWW91ciB1c2VyIHByb2ZpbGUgaXMgdXBkYXRlZCBub3cuIFNlZSBhdHRhY2hlZCB5b3VyIEludm9pY2UuIFRoZSBJbnZvaWNlIGFuZCBhbGwgcGFzdCBJbnZvaWNlIGNhbiBhbHNvIGJlIGRvd25sb2FkZWQgaW4geW91ciB1c2VyIHByb2ZpbGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4OSIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+VGhhbmsgeW91IGZvciB1c2luZyAkQVBQX05BTUUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MCIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+UGF5bWVudCBSZWNlaXZlZCAkQVBQX05BTUUgLTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTEiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5QYXltZW50IGFuZCBUcmFuc2FjdGlvbiBTdGF0dXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkyIiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+VHJhbnNjYXRpb24gSGFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTMiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NaW51dGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NCIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPk1vbnRoczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTUiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5FVVI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk2IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+U3RhdHVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NyIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPkludm9pY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk4IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5OSIgbmFtZT0iZXJyb3ItbGljZW5zZS1mbGF0Ij4KKyAgICA8dmFsdWU+WW91IG5lZWQgdG8gYnV5IGEgdm9sdW1lIGZsYXRyYXRlIHRvIGJlIGFibGUgdG8gc2VuZCBpbnZpdGF0aW9ucyBvciBjcmVhdGUgbWVldGluZ3MgdmlhIHRoZSBjYWxlbmRhci4gV2l0aCBQYXktcGVyLW1pbnV0ZSBpdCBpcyBvbmx5IHBvc3NpYmxlIGZvciB5b3UgdG8gYWNjZXNzICRBUFBfTkFNRS4gWW91IGNhbm5vdCBhbGxvdyAzdGggUGFydGllcyB0byBhY2Nlc3MgYSBNZWV0aW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAwIiBuYW1lPSJlcnJvciB1c2VyIj4KKyAgICA8dmFsdWU+VGhpcyBFbWFpbCBpcyBhbHJlYWR5IHVzZWQgYnkgYW5vdGhlciBVc2VyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAxIiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+U0lQLVNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDIiIG5hbWU9InJvb20tYWRtaW4iPgorICAgIDx2YWx1ZT5UaGUgQ29uZmVyZW5jZSBOdW1iZXIgYW5kIFBJTiBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgdmlhIHRoZSBPcGVuWEcgUlBDLUdhdGV3YXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwMyIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlNJUCBOdW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNCIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlBJTjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA1IiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+Q2xlYXIgb2JqZWN0cyBvbiBjdXJyZW50IHNsaWRlIG9ubHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDYiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5Pbmx5IHRoZSBVUkwgZW50ZXJlZCBpbiB0aGUgU3RhdHVzIGJhciBpcyBzZW5kIHRvIHBhcnRpY2lwYW50cyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk1ha2UgVGVhbS1Sb29tcyBbQnJlYWtvdXQgc2Vzc2lvbl08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNob29zZSB1c2VycyBmb3IgYSBuZXcgVGVhbS1Sb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+WW91IGNhbiBjaG9vc2UgdXNlcnMgaGVyZSBhbmQgY3JlYXRlIGEgbmV3IENvbmZlcmVuY2UgUm9vbSAoIlRlYW0gUm9vbSIpIGZvciB0aGVtLiBUaGUgY2hvc2VuIHVzZXJzIHdpbGwgYXV0b21hdGljYWxseSBzd2l0Y2ggdG8gdGhlIG5ldyBUZWFtLVJvb20gb3IgZ2V0IGEgbm90aWZpY2F0aW9uLiBUZWFtLVJvb20gTW9kZXJhdG9ycyB3aWxsIGdldCBhZGRpdGlvbmFsbHkgYSBsaXN0IG9mIGN1cnJlbnQgcm9vbXMgc28gdGhhdCB0aGV5IGNhbiBzd2l0Y2ggdG8gZWFjaCByb29tIGlmIHRoZXJlIGFyZSBpcyBuZWVkIGZvciBhIE1vZGVyYXRvci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Vc2VycyBmb3IgdGhlIG5ldyBUZWFtLVJvb206PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DcmVhdGUgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNob29zZSBhdCBsZWFzdCBvbmUgdXNlciBmb3IgdGhlIFRlYW0tUm9vbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkFkZCB1c2VyIHRvIHRlYW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlJlbW92ZSB1c2VyIGZyb20gVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Vc2VyIGlzIFRlYW0tUm9vbSBNb2RlcmF0b3IgKEhlIGlzIGFibGUgdG8gbWFuYWdlIFRlYW0tUm9vbXMgYW5kIHVzZXJzIG9mIHRoZSBUZWFtLVJvb20gY2FuIGFzayBoaW0gdG8gY29tZSBpbnNpZGUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Sb29tdHlwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+SWYgeW91IGNoZWNrICJGb3JjZSB1c2VyIHRvIHN3aXRjaCB0byBuZXcgVGVhbS1Sb29tIiBhbGwgY2hvc2VuIHVzZXJzIHdpbGwgYXV0b21hdGljYWxseSBzd2l0Y2ggdG8gdGhlIG5ld2x5IGNyZWF0ZWQgVGVhbS1Sb29tLiBPdGhlcndpc2UgdGhleSBnZXQgYSBub3RpZmljYXRpb24gd2l0aCBhIGJ1dHRvbiB0aGF0IHRoZXkgJmx0O2kmZ3Q7Y2FuJmx0Oy9pJmd0OyBzd2l0Y2ggdG8gdGhlIG5ldyByb29tLiBUZWFtLU1vZGVyYXRvcnMgYWx3YXlzIGhhdmUgdGhlIGZyZWUgY2hvaWNlIHRvIG1hbmFnZSB0aGUgVGVhbS1Sb29tcyBhbmQgc3dpdGNoIGJldHdlZW4gdGhlbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk1hbmFnZSBUZWFtLVJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIHN3aXRjaCBoZXJlIGJldHdlZW4gYWxsIFRlYW0tUm9vbXMgdGhhdCB5b3UgYXJlIGFzc2lnbmVkIGFzIFRlYW0tUm9vbSBNb2RlcmF0b3IuIFVzZXJzIGluc2lkZSB0aGUgVGVhbS1Sb29tIGNhbiBzZW5kIHlvdSBhIG1lc3NhZ2UsIGZvciBleGFtcGxlIHRvIGFzayB5b3UgdG8gY29tZSB0byB0aGVpciByb29tIGFuZCBoZWxwIHRoZW0uIFlvdSBjYW4gYWxzbyB0ZXJtaW5hdGUgdGhlIFRlYW0tUm9vbSBhbmQgYWxsIFVzZXJzIHdpbGwgYmUgbG9nZ2VkIG91dC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkZvcmNlIHVzZXIgdG8gc3dpdGNoIHRvIG5ldyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNyZWF0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Vc2VycyBhdmFpbGFibGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkFkZCBhIHVzZXIgd2l0aCB0aGUgcGx1cyBmcm9tIHRoZSBsZWZ0IG9yIHJlbW92ZSBpdCB3aXRoIHRoZSBjcm9zcyBmcm9tIHRoZSByaWdodCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjEpIFRlYW0tUm9vbSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MikgQWRkIHVzZXJzIHRvIHRoZSBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW0tUm9vbSBOYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNoYW5nZSB0byB0aGUgUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U3dpdGNoIHRvIHRoaXMgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZXJtaW5hdGUgVGVhbS1Sb29tIGFuZCBsb2dvdXQgYWxsIFVzZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5OZXcgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBhIG5ldyBUZWFtLVJvb20gYXZhaWxhYmxlIGZvciB5b3UuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Td2l0Y2ggdG8gVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb20gQWN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+WW91IGNhbiByZS1vcGVuIHRoaXMgd2luZG93IHZpYSB0aGUgbWFpbiBtZW51IGluIHRoZSAiQWN0aW9ucyIgc2VjdGlvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlNlbmQgbWVzc2FnZSB0byBUZWFtLVJvb20gTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5OZXcgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBhIG5ldyBUZWFtLVJvb20gYXZhaWxhYmxlLiBZb3UgY2FuIHN3aXRjaCB0byB0aGF0IFJvb20uIFRlYW0tUm9vbXMgYXJlIGxpa2UgIldvcmtncm91cHMiIHdpdGggYWRkaXRpb25hbGx5IHBvc3NpYmlsaXRpZXMgdG8gYXNrIHRoZSBUZWFtLVJvb20gTW9kZXJhdG9yIGZvciBoZWxwLiBZb3VyIFRlYW0tUm9vbXMgYXJlIGFsc28gYXZhaWxhYmxlIGluIHRoZSAiTXkgTWVldGluZ3MiIHNlY3Rpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Td2l0Y2ggdG8gVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DcmVhdGVkIGJ5OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQ4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVhbS1Sb29tIG5hbWU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGlzIFdpbmRvdyB3aWxsIHN0YXkgb3BlbiBldmVuIGlmIHlvdSBsZWF2ZSB0aGUgcm9vbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1MCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJzIGZvciB0aGlzIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MykgT3RoZXIgVGVhbS1Sb29tcyB0aGF0IHlvdSBjb3VsZCBzd2l0Y2ggdG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1MiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlNlbmQgYSBtZXNzYWdlIHRvIHRoZSBUZWFtLVJvb20gTW9kZXJhdG9ycy4gRm9yIGV4YW1wbGUgaWYgeW91IG5lZWQgaGVscCBpbiBNb2RlcmF0aW5nIHRoZSBSb29tIG9yIGlmIHlvdSBoYXZlIGEgcXVlc3Rpb24gYWJvdXQgdGhlIHRvcGljLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U2VuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MikgVXNlcnMgdGhhdCBhcmUgaW52aXRlZCB0byB0aGlzIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+SXMgVGVhbS1Sb29tIE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGhlc2UgYXJlIGFsbCB1c2VycyB0aGF0IHRoZSBtb2RlcmF0b3IgaGFzIGludml0ZWQgdG8gdGhpcyBUZWFtLVJvb20uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBUZWFtLU1vZGVyYXRvciBsb2dnZWQgaW4gYXQgdGhlIG1vbWVudCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1OCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1OSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlBsZWFzZSBoZWxwIHVzLCB3ZSBoYXZlIGEgcHJvYmxlbSBpbiBvdXIgVGVhbS1Sb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+QSB1c2VyIGZyb20gYSBUZWFtLVJvb20gcmVxdWVzdHMgeW91ciBoZWxwLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVhbS1Sb29tIHJlcXVlc3QgZm9yIGhlbHA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2MiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk1lc3NhZ2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Gcm9tOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+WW91IGFyZSBjdXJyZW50bHkgbm90IGluIGFueSBUZWFtLVJvb20uIEJ1dCB5b3UgY2FuIHN3aXRjaCBoZXJlIHRvIGFsbCBUZWFtLVJvb21zIHRoYXQgeW91IGhhdmUgYWNjZXNzIHRvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY1IiBuYW1lPSJiYWNrdXBDb250ZW50Ij4KKyAgICA8dmFsdWU+QmFja3VwIHRoZSBTeXN0ZW0uIFRoZSBCYWNrdXAgaW5jbHVkZXMgYWxsIFVzZXIgZ2VuZXJhdGVkIGRhdGEuIFRoZSBjb25maWd1cmF0aW9uIGlzIG5vdCBpbmNsdWRlZCBhcyB3ZWxsIGFzIHRoZSBsYW5ndWFnZSBsYWJlbHMuIEJlY2F1c2UgdGhvc2UgdmFsdWVzIGFyZSBpbXBvcnRlZCB3aXRoIHRoZSBTeXN0ZW0gSW5zdGFsbGVyLiBUbyB1cGRhdGUgeW91ciBTeXN0ZW0sIGV4cG9ydCB5b3VyIG9sZCBzeXN0ZW0gKDEpIHJlLWluc3RhbGwgaW50byBhIG5ldyBkYXRhYmFzZSB0aGUgbmV3IHBhY2thZ2UgKDIpIGFuZCBpbXBvcnQgdGhlIEJhY2t1cCBmaWxlIGFnYWluICgzKS4gVGhlIEJhY2t1cCBzaG91bGQgYmUgaW1wb3J0ZWQgYmVmb3JlIGdlbmVyYXRpbmcgZGF0YSBpbiB0aGUgbmV3bHkgaW5zdGFsbGVkIHN5c3RlbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2NiIgbmFtZT0iYmFja3VwQ29udGVudCI+CisgICAgPHZhbHVlPlN5c3RlbSBCYWNrdXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2NyIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+QWxsb3cgdXNlciB0byBzaGFyZSBTY3JlZW4vUmVjb3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjgiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPkRlbnkgdXNlciB0byBzaGFyZSBTY3JlZW4vUmVjb3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjkiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPlVzZXIgaXMgTW9kZXJhdG9yLCBoZSBjYW4gZG8gYW55dGhpbmchPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzAiIG5hbWU9ImFwcGx5IGZvciBzY3JlZW4vcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0byBzaGFyZS9yZWNvcmQgc2NyZWVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDcxIiBuYW1lPSJtb2RlcmF0aW9uIG1pbmkgaWNvbnMiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGFsbG93ZWQgdG8gc2hhcmUvcmVjb3JkIHNjcmVlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDcyIiBuYW1lPSJtb2RlcmF0aW9uIG1pbmkgaWNvbnMiPgorICAgIDx2YWx1ZT5BcHBseSBmb3IgcmlnaHQgdG8gc2hhcmUvcmVjb3JkIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3MyIgbmFtZT0ibW9kZXJhdGlvbiBtaW5pIGljb25zIGNvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT5BbGxvdy9EZW55IHJpZ2h0IHRvIHNoYXJlL3JlY29yZCBzY3JlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzQiIG5hbWU9InNvdW5kIGljb24iPgorICAgIDx2YWx1ZT5UdXJuIHNvdW5kIG9mZjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc1IiBuYW1lPSJzb3VuZCBpY29uIj4KKyAgICA8dmFsdWU+VHVybiBzb3VuZCBvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc2IiBuYW1lPSJyb29tIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+QXVkaW8gb25seSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzciIG5hbWU9InJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5UdXJuIHRoaXMgRmxhZyBvbiBhbmQgdGhlIHVzZXJzIHdpbGwgaGF2ZSBvbmx5IHRoZSBBdWRpby1PcHRpb24gYW5kIG5vIFZpZGVvIGluIGEgY29uZmVyZW5jZSByb29tLiBUaGlzIGNhbiBieSBnb29kIHRvIHNhdmUgYmFuZHdpZHRoLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc4IiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5BbGxvdyBSZW1vdGUgQ29udHJvbCAoRHVyaW5nIFNjcmVlbiBTaGFyaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc5IiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5EZW55IFJlbW90ZSBDb250cm9sIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODAiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFwcGx5IGZvciByaWdodCB0byBSZW1vdGUgQ29udHJvbCBTY3JlZW4gKER1cmluZyBTY3JlZW4gU2hhcmluZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MSIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+WW91IGFyZSBhbGxvd2VkIHRvIFJlbW90ZSBDb250cm9sIFNjcmVlbiAoRHVyaW5nIFNjcmVlbiBTaGFyaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgyIiBuYW1lPSJhcHBseSBmb3IgcmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIHJlbW90ZSBjb250cm9sIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MyIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+VXNlciBpcyBNb2RlcmF0b3IsIGhlIGNhbiBkbyBhbnl0aGluZyEgW1JlbW90ZSBEZXNrdG9wIENvbnRyb2xdPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODQiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFsbG93L0RlbnkgcmlnaHQgdG8gUmVtb3RlIENvbnRyb2wgU2NyZWVuIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODUiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPjEpIFlvdXIgUEMgdG8gcmVtb3RlIFBDOiBUbyBjb3B5IGFuZCBwYXN0ZSB0ZXh0IGZyb20geW91ciBjbGlwYm9hcmQgaW50byB0aGUgcmVtb3RlIGNvbnRyb2xsZWQgc2NyZWVuLCBjbGljayBvbiB0aGUgc2NyZWVuLCB0aGVuIHJpZ2h0IGNsaWNrIGluIHRoZSB0ZXh0IGZpZWxkIGFuZCBjaG9vc2UgIkluc2VydCIgZnJvbSB0aGUgY29udGV4dCAocmlnaHQgY2xpY2spIG1lbnUuJmx0O2JyLyZndDsmbHQ7YnIvJmd0OzIpIEZyb20gcmVtb3RlIFBDIHRvIHlvdXIgUEM6IFRvIGNvcHkgdGV4dCBmcm9tIHRoZSByZW1vdGUgUEMgdG8geW91ciBQQydzIGNsaXBib2FyZCwgaGlnaGxpZ2h0IHRoZSB0ZXh0IHdpdGggdGhlIG1vdXNlIG9uIHRoZSByZW1vdGUgc2NyZWVuLCB0aGVuIHJpZ2h0LWNsaWNrIG9uIHRoZSByZW1vdGUgc2NyZWVuIGFuZCBjaG9vc2UgJmx0O2kmZ3Q7Q29weSBoaWdobGlnaHRlZCB0ZXh0Jmx0Oy9pJmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg2IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Db3B5IGFuZCBQYXN0ZSB0ZXh0IGZyb20geW91ciBQQyB0byByZW1vdGUgUEMgYW5kIHZpY2UtdmVyc2EuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODciIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNvcHkgaGlnaGxpZ2h0ZWQgdGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg4IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Ib3cgdG8gY29weSBuIHBhc3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODkiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPlF1YWxpdHkgb2YgdGhlIFNjcmVlblNoYXJlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkwIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5WZXJ5IGhpZ2ggUXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkxIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5IaWdoIFF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5MiIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+TWVkaXVtIFF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5MyIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+TG93IFF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NCIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5lbl9VUzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk1IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPmRlX0RFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTYiIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+S2V5Ym9hcmQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTciIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+Q2xvc2UgV2ViaW5hciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5OCIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5UaGUgV2ViaW5hciBpcyBhbHJlYWR5IGNsb3NlZCwgeW91IHdpbGwgYmUgcmVkaXJlY3RlZCB0byBzb21lIGludGVyZXN0aW5nIG9mZmVyaW5ncyBpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk5IiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPkNsb3NlIFJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMCIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5FeGl0IFVSTDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAxIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPlJvb20gdGVybWluYXRpb24gc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMiIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5JZiB0aGUgcm9vbSBpcyBjbG9zZWQgdXNlcnMgd2lsbCBiZSByZWRpcmVjdGVkIHRvIHRoZSBleGl0IFVSTC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5MZGFwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDQiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDYiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+Q29uZmlnIEZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5MZGFwIENvbmZpZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA4IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwOSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5FbmFibGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTAiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+SW5zZXJ0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JbnNlcnRlZCBieTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEyIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPlVwZGF0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5VcGRhdGVkIGJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTQiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+VGhlIGNvbmZpZyBmaWxlcyBhcmUgaW4gdGhlIGZvbGRlciB3ZWJhcHBzL29wZW5tZWV0aW5ncy9jb25mLiBZb3UgbmVlZCB0byBtYW51YWxseSB1cGxvYWQgdGhlIGZpbGVzIHRvIHRoaXMgZm9sZGVyLiBDaGFuZ2VzIHRvIHRoZSBjb25maWcgZmlsZSBhcmUgaW1tZWRpYXRlbHkgb25saW5lLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE1IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkNvbmZpZyBmaWxlIG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNiIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JZiB5b3UgZW5hYmxlICJBZGQgRG9tYWluIHRvIHVzZXJuYW1lIiB0aGUgdmFsdWUgb2YgdGhlIGZpZWxkICJkb21haW4iIGlzIGFkZGVkIHRvIGVhY2ggbG9naW4gdGhhdCB0aGUgdXNlciBlbnRlcnMgaW4gdGhlIGxvZ2luIGJveC4gVGhpcyBpcyB1c2VmdWwgaWYgdGhlIExvZ2luIGluIHRoZSBMZGFwIGlzIHN0b3JlZCBpbmNsdWRpbmcgdGhlIGRvbWFpbiBuYW1lLiBFeGFtcGxlOiBVc2VyIGVudGVycyAiaGFucyIgZG9tYWluIGlzIHNwZWNpZmllZCBhcyAibG9jYWxob3N0LmNvbSIsIGxvZ2luIHRoYXQgaXMgdmVyaWZpZWQgYWdhaW5zdCBMZGFwIGlzOiBoYW5zQGxvY2FsaG9zdC5jb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5BZGQgRG9tYWluIHRvIHVzZXJuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTgiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+RG9tYWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTkiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+SW5zZXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjAiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+Q29weSBoaWdobGlnaHRlZCB0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjEiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+UmVtb3RlIENsaXBib2FyZCBUZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjIiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+U2hvdyByZW1vdGUgQ2xpcGJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjMiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkRvIG5vdCBzaG93IGFnYWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjQiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNvcHkgdGV4dCBoZXJlIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI1IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0aGUgcmlnaHQgdG8gcmVtb3RlIGNvbnRyb2wgKG9yIHRoZSBtb2RlcmF0aW9uKSB0byBjb3B5IGFuZCBwYXN0ZSB0ZXh0IHRvIG9yIGZyb20gdGhlIHJlbW90ZSBzY3JlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjYiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkVkaXQgZGVmYXVsdCBzZXR0aW5ncyAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNyIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+RG8gbm90IHNob3cgaW5mbyBib3ggaW4gUmVtb3RlIENvbnRyb2wgYWJvdXQgQ29weSBhbmQgUGFzdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyOCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5TYXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjkiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+UmVtb3ZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzAiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzEiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5JbnZpdGUgdXNlciB0byBjb25mZXJlbmNlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMiIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkNob29zZSBhIGNvbmZlcmVuY2Ugcm9vbS4gVGhlIGludml0ZWQgdXNlciB3aWxsIGdldCBhIG1lc3NhZ2Ugd2l0aCB5b3VyIG5hbWUgYW5kIGEgbGluayB0byB0aGUgcm9vbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMyIgbmFtZT0iY2hhdCB1c2VyIj4KKyAgICA8dmFsdWU+Q29ubmVjdGVkIHNpbmNlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM0IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+RW50ZXIgcm9vbSBhZnRlciBzZW5kaW5nIGludml0YXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzNSIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkludml0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM2IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+TWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM3IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0byBpbnZpdGUgeW91IHRvIHRoZSBjb25mZXJlbmNlIHJvb206PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzgiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5JbnZpdGUgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM5IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+U2VuZCBJbnZpdGF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDAiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5kaWQgJmx0O2ImZ3Q7bm90Jmx0Oy9iJmd0OyBhY2NlcHQgeW91ciBpbnZpdGF0aW9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQxIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+QWNjZXB0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDIiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5EZW55PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDMiIG5hbWU9InVzZXIgcHJvZmlsZSI+CisgICAgPHZhbHVlPlRpbWV6b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDQiIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPkV2ZW50IERldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0NSIgbmFtZT0iYXBwb2ludG1lbnQgbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ2IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5EZXNjcmlwdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ3IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5DcmVhdGVkIGJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDgiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5UaW1lWm9uZSBNZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDkiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5DaGVjayAiVGltZVpvbmUgTWVzc2FnZSIgdG8gZ2l2ZSB1c2VycyBhIG1lc3NhZ2UgbmV4dCB0aW1lIHRoZXkgbG9naW4gdG8gdXBkYXRlIHRoZWlyIHByb2ZpbGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTAiIG5hbWU9InRpbWUgem9uZSB1cGRhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlBsZWFzZSBjaGVjayB0aGUgdGltZSB6b25lIGluIHlvdXIgdXNlciBwcm9maWxlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUxIiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5OZXcgJEFQUF9OQU1FIGNvbmZlcmVuY2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTIiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkRldGFpbHM6Jmx0O2JyLyZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MyIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3RhcnQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTQiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkVuZDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NSIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2hhbmdlZCAkQVBQX05BTUUgY29uZmVyZW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NiIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+T3JnYW5pemVyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU3IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DYW5jZWxlZCAkQVBQX05BTUUgY29uZmVyZW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1OCIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIGNvbmZlcmVuY2UgUmVtaW5kZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTkiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Db21tdW5pdHkgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlNob3cgY29udGFjdCBkYXRhIHRvIGV2ZXJ5Ym9keTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYxIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+QWRkIGZpZWxkcyBvZiBpbnRlcmVzdCB0aGF0IHlvdSBvZmZlciBvciB0aGF0IHlvdSBhcmUgc2VhcmNoaW5nIHRvIGZpbmQgaW50ZXJlc3RpbmcgcGFydG5lcnMgZm9yIGEgY29uZmVyZW5jZS4gQ29tbWEgc2VwYXJhdGUgdGhlIHRlcm1zIChmb3IgZXhhbXBsZTogTWVkaWNhbCBTZXJ2aWNlLCBIZWFsdGggYXNzdXJhbmNlLCAuLi4pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjIiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NeSBvZmZlcmluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MyIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk15IGludGVyZXN0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY0IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY1IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+VGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2NiIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkZpZWxkcyBvZiBpbnRlcmVzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY3IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+Q29udGFjdCBpbmZvcm1hdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY4IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2hvdyBjb250YWN0IGRhdGEgdG8gY29udGFjdHMgb25seTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY5IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2hvdyBjb250YWN0IGRhdGEgdG8gbm9ib2R5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzAiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NeSBQcm9maWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzEiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5FZGl0IHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzIiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TZWFyY2ggdXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MyIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPldhdGNoIHlvdXIgcHJvZmlsZSBsaWtlIG90aGVyIHNlZSB5b3U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkVkaXQgeW91ciBzZXR0aW5ncywgYWRkIHlvdXIgaW50ZXJlc3RzIHRvIGJlIGZvdW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzUiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TZWFyY2ggZm9yIG90aGVyIHVzZXJzIGFuZCBleHRlbmQgeW91ciBuZXR3b3JrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzYiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+U2VhcmNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzciIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+VXNlciBvZmZlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3OCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5Vc2VyIGxvb2tzIGZvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc5IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkZyZWV0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODAiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgxIiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlRpbWV6b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODIiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+T2ZmZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODMiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+U2VhcmNoczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg0IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlNlYXJjaHJlc3VsdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg1IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkFjdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NiIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5BZGQgdG8gY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NyIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5TZW5kIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4OCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5Db250YWN0cyBhbmQgTWVzc2FnZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4OSIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5QZW5kaW5nIGNvbnRhY3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTAiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5BY2NlcHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkRlbnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MiIgbmFtZT0idXNlciBjb250YWN0IHJlcXVlc3QiPgorICAgIDx2YWx1ZT5IaSw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MyIgbmFtZT0idXNlciBjb250YWN0IHJlcXVlc3QiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGFkZCB5b3UgYXMgY29udGFjdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NCIgbmFtZT0idXNlciBjb250YWN0IHJlcXVlc3QiPgorICAgIDx2YWx1ZT5DaGVjayB5b3VyIGNvbnRhY3QgcmVxdWVzdHMgaW4gJEFQUF9OQU1FIG9yIGNsaWNrIG9uIHRob3NlIGxpbmtzIHRvIGFjY2VwdCBvciBkZW55IHRoZSByZXF1ZXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTUiIG5hbWU9ImFkZCB1c2VyIGNvbnRhY3QiPgorICAgIDx2YWx1ZT5UaGlzIHVzZXIgaXMgYWxyZWFkeSBpbiB5b3VyIGNvbnRhY3QgbGlzdCBvciBoYXMgcmVjZWl2ZWQgYW4gaW52aXRhdGlvbiB0byB5b3VyIGNvbnRhY3QgbGlzdCB0aGF0IGlzIG5vdCBhbnN3ZXJlZCB5ZXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTYiIG5hbWU9InVzZXIgY29udGFjdCBtYWlsIj4KKyAgICA8dmFsdWU+WW91ciBjb250YWN0IGxpc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkVkaXQgeW91ciBjb250YWN0IGFuZCBtZXNzYWdlcywmbHQ7YnIvJmd0OyBtYW5hZ2UgeW91ciBwZW5kaW5nIGNvbnRhY3RzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk4IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+Y29uZmlybWVkIHlvdSBhcyBjb250YWN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk5IiBuYW1lPSJjaGF0IGluZm8gbWVzc2FnZSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAwIiBuYW1lPSJjaGF0IGxvZyBpY29uIj4KKyAgICA8dmFsdWU+U2hvdyAvIENvcHkgY2hhdCBsb2c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMSIgbmFtZT0iY2hhdCBsb2cgd2luZG93Ij4KKyAgICA8dmFsdWU+Q2hhdCBMb2c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RnJvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TdWJqZWN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDYiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1lc3NhZ2VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDciIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk5ldyBNYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkNsaWNrIHRvIHdyaXRlIGEgbmV3IG1lc3NhZ2UgdG8gYW55IG9mIHlvdXIgY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwOSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+V3JpdGUgbmV3IG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VG86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlN1YmplY3Q6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTIiIG5hbWU9IndoaXRlYm9hcmQgZnVsbC1maXQiPgorICAgIDx2YWx1ZT5FbmFibGUgZnVsbCBmaXQgYW5kIHRoZSB3aGl0ZWJvYXJkIHdpbGwgem9vbSB0aGUgd2hvbGUgd2hpdGVib2FyZCBzbyB0aGF0IGFsbCZsdDtici8mZ3Q7ZG9jdW1lbnRzIGFyZSB2aXNpYmxlIGFjY29yZGluZyB0byBlYWNoIHBhcnRpY2lwYW50cyBzY3JlZW4gcmVzb2x1dGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMyIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+S2ljayB1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTQiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPllvdSBjYW5ub3Qga2ljayB5b3Vyc2VsZiBvdXQgb2YgdGhlIGNvbmZlcmVuY2Ugcm9vbSEgSWYgeW91IHdhbnQgdG8gbGVhdmUgaXQgY2xvc2UgdGhlIGJyb3dzZXIgb3IgdXNlIHRoZSBleGl0IGJ1dHRvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNSIgbmFtZT0ia2ljay11c2VyIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRpc2Nvbm5lY3QgdGhpcyB1c2VyIGZyb20gdGhpcyBjb25mZXJlbmNlIHJvb20/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTYiIG5hbWU9ImtpY2stdXNlciI+CisgICAgPHZhbHVlPkNvbmZpcm0gYWN0aW9uIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE3IiBuYW1lPSJraWNrLXVzZXIiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IGtpY2sgYSBTdXBlci1Nb2RlcmF0b3Igb3V0IG9mIGEgcm9vbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxOCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Qm9vayBjb25mZXJlbmNlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxOSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3RhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZCBhbiBvcHRpb25hbCByZXF1ZXN0IGZvciBtZWV0aW5nIHRvIHRoZSBtZXNzYWdlIGFuZCBjcmVhdGUgYSBjb25mZXJlbmNlIHJvb20uIFRoZSBFdmVudCBpcyB0aGVuIGNvcGllZCBpbiB0aGUgY2FsZW5kYXIgb2YgZXZlcnkgcGFydGljaXBhbnQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkluYm94PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VHJhc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhpcyBpcyB5b3UhIFlvdSBjYW5ub3QgYWRkIHlvdXJzZWxmIGFzIHlvdXIgb3duIGNvbnRhY3QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjYiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5UaGUgdXNlciBpcyBhbHJlYWR5IGRlbmllZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoZSB1c2VyIGlzIGFscmVhZHkgYXBwcm92ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjgiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5UaGlzIHVzZXIgY29udGFjdCBoYXNoIGlzIGludmFsaWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjkiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Vc2VyIGFkZGVkIHRvIGNvbnRhY3QgbGlzdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlVzZXIgZGVuaWVkIGFzIGNvbnRhY3QgYW5kIHJlbW92ZWQgZnJvbSBwZW5kaW5nIGNvbnRhY3QgbGlzdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIHN1Y2ggY29udGFjdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPldvdWxkIHlvdSByZWFsbHkgbGlrZSB0byByZW1vdmUgdGhhdCBjb250YWN0PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMzIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+Q29uZmlybSBjb250YWN0IHJlbW92YWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkRlbGV0ZSBjb250YWN0IGZyb20gbGlzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM1IiBuYW1lPSJ1c2VyIHByb2ZpbGUiPgorICAgIDx2YWx1ZT5Vc2VyIFByb2ZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNiIgbmFtZT0idXNlciBwcm9maWxlIj4KKyAgICA8dmFsdWU+U2hvdyB1c2VyIHByb2ZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWVzc2FnZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzOCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VhcmNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbGVjdCBhbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0MCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VsZWN0IG5vbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0MSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VsZWN0IHVucmVhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWxlY3QgcmVhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Nb3ZlIHRvIGZvbGRlciAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIG5ldyBmb2xkZXIgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRlbGV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ2IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EZWxldGVkIG1haWxzIGFyZSBzdGlsbCBpbiB5b3VyIHRyYXNoIGZvbGRlciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWFyayB1bnJlYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0OCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWFyayByZWFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFuc3dlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BbnN3ZXIgZXZlcnlib2R5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkZvcndhcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWN0aW9ucyAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlNlbmQgcHJpdmF0ZSBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk5vdGhpbmcgc2VsZWN0ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1vdmUgdG8gSW5ib3g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGVsZXRlIChmaW5hbCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1OCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIGZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgZm9sZGVycyBhbmQgb3JnYW5pemUgeW91ciBtZXNzYWdlcyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIGZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPkRlbGV0ZSBmb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPllvdSBjYW5ub3QgZGVsZXRlIHRoaXMgZm9sZGVyLCB0aGVyZSBhcmUgc3RpbGwgbWVzc2FnZXMgaW5zaWRlISBEZWxldGUgZmlyc3QgdGhlIG1lc3NhZ2VzIG9yIG1vdmUgdGhlbSB0byBhbm90aGVyIGZvbGRlci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPkVkaXQgbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGZvbGRlcj8gVGhlcmUgaXMgbm8gd2F5IHRvIHVuZG8gdGhhdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPllvdXIgcmVxdWVzdCB3YXMgc2VuZCB0byB0aGUgdXNlci4gVGhlIHVzZXIgd2lsbCByZWNlaXZlIGEgbm90aWZpY2F0aW9uIHRvIGFjY2VwdCBvciBkZW55IHlvdXIgcmVxdWVzdC4gT25seSBhY2NlcHRlZCByZXF1ZXN0cyBhcmUgaW4geW91ciBjb250YWN0IGxpc3Qgb2YgY291cnNlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+TWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY4IiBuYW1lPSJ1c2VyIHZpZXcgcHJvZmlsZSI+CisgICAgPHZhbHVlPlRoZSB1c2VyIGRvZXMgbm90IHNoYXJlIGhpcyBwZXJzb25hbCBjb250YWN0IGRhdGEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjkiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+VGhlIHVzZXIgZG9lcyBzaGFyZSBoaXMgcGVyc29uYWwgY29udGFjdCBkYXRhIG9ubHkgdG8gY29udGFjdHMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzAiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+QWRkcmVzcyAmYW1wOyBQaG9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjcxIiBuYW1lPSJlcnJvciBjb2RlIj4KKyAgICA8dmFsdWU+WW91IGludml0YXRpb24gY29kZSBpcyBubyB2YWxpZCwgdGhlIGNvZGUgaXMgb25seSB2YWxpZCBkdXJpbmcgdGhpcyBzcGVjaWZpYyBkYXRlIGFuZCB0aW1lOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjcyIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhpcyBldmVudCBpcyBjb25uZWN0ZWQgdG8gc2V2ZXJhbCBjYWxlbmRhcnMgb2Ygb3RoZXIgdXNlcnMuIFlvdXIgY2hhbmdlIHdpbGwgYWxzbyB1cGRhdGUgdGhlaXIgY2FsZW5kYXIuIFdvdWxkIHlvdSByZWFsbHkgbGlrZSB0byB1cGRhdGUgdGhlIGV2ZW50PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjczIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Q29uZmlybSB1cGRhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkFsbG93IGNvbnRhY3QgdG8gc2VlIG15IGNhbGVuZGFyICh2aWV3IG9ubHkpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzUiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5EbyBub3Qgc2hhcmUgY2FsZW5kYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkNhbGVuZGFyIG9mIGNvbnRhY3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzciIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Zb3VyIGNvbnRhY3RzIG5lZWQgdG8gYXBwcm92ZSB5b3UgZmlyc3QgdG8gYmUgYWJsZSB0byBzZWUgdGhlaXIgY2FsZW5kYXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzgiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IHN0b3JlIG9yIGRlbGV0ZSBldmVudHMgZnJvbSBvdGhlciBjYWxlbmRhcnMgdGhlbiB5b3VyIG93biE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3OSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlNob3cgbXkgb3duIGNhbGVuZGFyIGFnYWluITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgwIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhpcyBldmVudCBpcyBjb25uZWN0ZWQgdG8gc2V2ZXJhbCBjYWxlbmRhcnMgb2Ygb3RoZXIgdXNlcnMuIFlvdXIgYWN0aW9uIHdpbGwgYWxzbyBkZWxldGUgdGhlIGV2ZW50IGZyb20gdGhlaXIgY2FsZW5kYXIuIFdvdWxkIHlvdSByZWFsbHkgbGlrZSB0byBkZWxldGUgdGhlIGV2ZW50PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgxIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Q29uZmlybSBhY3Rpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4MiIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPkVudGVyIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4MyIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPkFjY2VzcyB0aGUgY29uZmVyZW5jZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGEgY29uZmVyZW5jZSByb29tIGFuZCBldmVudCBib29rZWQgd2l0aCB0aGlzIHByaXZhdGUgbWVzc2FnZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NSIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPllvdSBuZWVkIHRvIHN0b3JlIHRoZSBldmVudCBmaXJzdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NiIgbmFtZT0iYWNjZXNzIHJvb21zIGVycm9yIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgbm8gc3VjaCByb29tIGF2YWlsYWJsZS4gVGhlIGV2ZW50IGluIHRoZSBjYWxlbmRhciBhbmQgY29ubmVjdGVkIHJvb20gaXMgYWxyZWFkeSBkZWxldGVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg3IiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5DaG9vc2UgeW91ciBuaWNrbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg4IiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5GaXJzdG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4OSIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+TGFzdG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MCIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+RW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MSIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+T2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MiIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+TWluaW11bSBsZW5ndGggNCBjaGFycyEgRm9yIGJvdGgsIGZpcnN0bmFtZSBhbmQgbGFzdG5hbWUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTMiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIHZhbGlkIGVtYWlsITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk0IiBuYW1lPSJhdXRoIGZyb20iPgorICAgIDx2YWx1ZT5GYWNlYm9vazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk1IiBuYW1lPSJhdXRoIGZvcm0iPgorICAgIDx2YWx1ZT5Mb2dpbiB3aXRoIHlvdXIgRmFjZWJvb2sgYWNjb3VudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk2IiBuYW1lPSJ2aWV3IHByb2ZpbGUiPgorICAgIDx2YWx1ZT5NZW1iZXIgc2luY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5NyIgbmFtZT0iZGlyZWN0IGxvZ2luIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Zb3UndmUgbG9nZ2VkIHdpdGggeW91ciBGYWNlYm9vayBhY2NvdW50LiBZb3Ugc2hvdWxkIHVwZGF0ZSB5b3VyIHByb2ZpbGUgd2l0aCB0aGUgY29ycmVjdCBlbWFpbC4gT3RoZXJ3aXNlIHlvdSB3aWxsIG5vdCByZWNlaXZlIGludml0YXRpb25zIGFuZCBwcml2YXRlIG1lc3NhZ2VzIGZyb20gb3RoZXIgdXNlcnMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTgiIG5hbWU9ImRpcmVjdCBsb2dpbiBtZXNzYWdlIGhlYWRlciI+CisgICAgPHZhbHVlPk1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5OSIgbmFtZT0iZGlyZWN0IGxvZ2luIG1lc3NhZ2UgY2hlY2tib3ggY29udHJvbCI+CisgICAgPHZhbHVlPkRvIG5vdCBzaG93IHVwZGF0ZSBwcm9maWxlIG1lc3NhZ2UgYWdhaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMCIgbmFtZT0icHJvZmlsZSBzZXR0aW5ncyBidXR0b24iPgorICAgIDx2YWx1ZT5tb3JlIGRpc3BsYXkgb3B0aW9ucyAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TmV3IHByaXZhdGUgbWVzc2FnZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2xpY2sgaGVyZSB0byB2aXNpdCB5b3VyIHByb2ZpbGUgdG8gc2VlIHRoZSBmdWxsIG1lc3NhZ2UgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlJlcGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPlJvb21zIGFuZCBjaGF0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA1IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5NeSByb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA2IiBuYW1lPSJteSByb29tcyI+CisgICAgPHZhbHVlPk15IGNvbmZlcmVuY2Ugcm9vbSAoZm9yIDEtMTYgdXNlcnMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDciIG5hbWU9Im15IHJvb21zIj4KKyAgICA8dmFsdWU+TXkgd2ViaW5hciByb29tIChmb3IgMS0xMjAgdXNlcnMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDgiIG5hbWU9InJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5Pd25lciBJZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA5IiBuYW1lPSJsb2dpbiBlcnJvciI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIHBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTAiIG5hbWU9ImxvZ2luIGVycm9yIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgYW4gYWNjb3VudCB3aXRoIFVzZXItTGV2ZWwgVXNlciwgTW9kZXJhdG9yIG9yIEFkbWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTEiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5XZWItU2VydmljZSAob25seSBhY2Nlc3MgdmlhIFNPQVApPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTIiIG5hbWU9InVwbG9hZCBmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+RG8gZGlyZWN0bHkgbG9hZCB0byB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTMiIG5hbWU9IndoaXRlYm9hcmQgY2xvc2UgY29uZmlybWF0aW9uIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIHJlbW92ZSB0aGlzIHdoaXRlYm9hcmQ/IFRoaXMgYWN0aW9uIGNhbm5vdCBiZSB1bmRvbmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTQiIG5hbWU9IndoaXRlYm9hcmQgbG9hZCBXTUwiPgorICAgIDx2YWx1ZT5Mb2FkIHRvIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxNSIgbmFtZT0icmVjb3JkaW5nIGZsYWciPgorICAgIDx2YWx1ZT5EbyBub3QgZm9yZ2V0IHN0YXJ0IHJlY29yZGluZyEgT25lIHVzZXIgcGVyIHJvb20gYWx3YXlzIG5lZWRzIHRvIHN0YXJ0IGl0IHRvIGhhdmUgdGhlIHJlY29yZGluZyBhZnRlcndhcmRzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE2IiBuYW1lPSJyZWNvcmRpbmcgZmxhZyI+CisgICAgPHZhbHVlPlN0YXJ0IFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE3IiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPkFycm93PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTgiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+Q2lyY2xlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTkiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+TGluZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIwIiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPlNxdWFyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIxIiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPlRyaWFuZ2xlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjIiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5UZXh0L05vdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyMyIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkNsaXBhcnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjQiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5EcmF3IEZyZWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNSIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlNlbGVjdC9Nb3ZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjYiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5EcmF3IFNoYXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjciIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5DdXQvTW92ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI4IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+Wm9vbSBJbi9PdXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyOSIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlByaW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzAiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5VbmRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzEiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5UcmFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMyIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+QWRkIEdyaWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMyIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlNoYXJlIEZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNCIgbmFtZT0iaWNvbiBzdWJtZW51Ij4KKyAgICA8dmFsdWU+U2VsZWN0IFNoYXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzUiIG5hbWU9Imljb24gc3VibWVudSI+CisgICAgPHZhbHVlPlNlbGVjdCBDbGlwYXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzYiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5Db3B5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzciIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5DdXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzOCIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPlBhc3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzkiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5EZWxldGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MCIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhlIGNvbXBsZXRlIGNvbnRlbnQgb24gdGhlIHdoaXRlYm9hcmQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDEiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5Mb2FkIGRpcmVjdGx5IHRvIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MiIgbmFtZT0iYXR0ZW5kZWVzIj4KKyAgICA8dmFsdWU+QXR0ZW5kZWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDMiIG5hbWU9ImF0ZW5kZWUgbWFuYWdlciI+CisgICAgPHZhbHVlPkF0dGVuZGVlIE1hbmFnZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NCIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+UHJlc2VudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ1IiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5SZW1vdGUgQ29udHJvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NiIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+RWplY3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NyIgbmFtZT0iY2hhdCI+CisgICAgPHZhbHVlPkNoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0OCIgbmFtZT0iaW52aXRlIGF0dGVuZGVlIj4KKyAgICA8dmFsdWU+SW52aXRlIEF0dGVuZGVlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ5IiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5CeSBFbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUwIiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5Vc2VyIGlzIG1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUxIiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5Vc2VyIGhhcyB3ZWJjYW0gc3dpdGNoZWQgb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1MiIgbmFtZT0iZmlsbF9vcHRpb24iPgorICAgIDx2YWx1ZT5EZWFjdGl2YXRlIHNoYXBlIGZpbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1MyIgbmFtZT0iZmlsbF9vcHRpb24iPgorICAgIDx2YWx1ZT5BY3RpdmF0ZSBzaGFwZSBmaWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTQiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5TbmFwIHRvIEdyaWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NSIgbmFtZT0iYWxsb3dfcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QWxsb3cgcmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTYiIG5hbWU9IndhaXRfZm9yX3JlY29yZGluZyI+CisgICAgPHZhbHVlPldhaXQgZm9yIHJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU3IiBuYW1lPSJoaWRlX3RvcF9iYXIiPgorICAgIDx2YWx1ZT5IaWRlIHRvcGJhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU4IiBuYW1lPSJmaWxlRXhwbG9yZXIiPgorICAgIDx2YWx1ZT5QbGF5IHZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTkiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoZSBjb250ZW50IG9uIHRoZSBjdXJyZW50IHNsaWRlPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYwIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT5BY2NlcHQgYW5kIGdyYW50IHVzZXIgcmlnaHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2MSIgbmFtZT0iYWN0aXZpdHlfd2luZG93Ij4KKyAgICA8dmFsdWU+RGVueTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYyIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT5JPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjMiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPkFjdGl2aXRpZXMgYW5kIGFjdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NCIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPlJlbW92ZSB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjUiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0aGUgbW9kZXJhdGlvbiBvciB0aGUgcmlnaHQgdG8gZHJhdyBvbiB0aGUgd2hpdGVib2FyZCB0byByZW1vdmUgd2hpdGVib2FyZHMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjYiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5Ob3QgYWxsb3dlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY3IiBuYW1lPSJ1c2VyX2xlZnRfYWN0X21zZyI+CisgICAgPHZhbHVlPmhhcyBsZWZ0IHRoZSByb29tLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY4IiBuYW1lPSJjbGlwYXJ0IGljb25zIj4KKyAgICA8dmFsdWU+TWF0aCBpY29uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY5IiBuYW1lPSJjbGlwYXJ0IGljb25zIj4KKyAgICA8dmFsdWU+Tm8gY2F0ZWdvcnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MCIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+Q29sb3ItU3R5bGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+UXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzcyIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5Eb21haW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MyIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+dmlzaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NCIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+cmVkb3JhbmdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzUiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPm1lZGl1bXNlYWdyZWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzYiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnN0ZWVsYmx1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc3IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5saWdodHN0ZWVsYmx1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc4IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5nb2xkZW5yZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3OSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+c2lsdmVyZ3JheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgwIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT51c2VyZGVmaW5lZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgxIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5iZXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODIiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnVwbG9hZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgzIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5tZWRpdW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NCIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg1IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5Vbm11dGUgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg2IiBuYW1lPSJnaXZlIGV4Y2x1c2l2ZSBhdWRpbyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBvZiBvdGhlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NyIgbmFtZT0ibXV0ZSBzZWxmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGdsb2JhbGx5IG11dGVkIGJ5IHRoZSBtb2RlcmF0b3IuIFlvdSBjYW5ub3QgdW5tdXRlIHlvdXJzZWxmITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg4IiBuYW1lPSJtdXRlIHNlbGYgY29uZmlybSBtZXNzYWdlIHRpdGxlIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg5IiBuYW1lPSJtdXRlIHNlbGYgY29uZmlybSBtZXNzYWdlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gbXV0ZSB5b3Vyc2VsZiBnbG9iYWxseT8gTm8gb3RoZXIgdXNlciB3aWxsIGhlYXIgeW91IGFueW1vcmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTAiIG5hbWU9Im11dGUgb3RoZXJzIGNvbmZpcm0gbWVzc2FnZSB0aXRsZSI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBsb2NhbGx5PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkxIiBuYW1lPSJtdXRlIG90aGVycyBjb25maXJtIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gbXV0ZSB0aGlzIG1pY3JvcGhvbmU/IFlvdSBjYW4gb25seSBtdXRlIGl0IGxvY2FsbHkgb24geW91ciBzY3JlZW4uIEl0IGhhcyBubyBlZmZlY3QgdG8gaG93IG90aGVyIHVzZXJzIGhlYXIgdGhpcyB1c2VyLiBPbmx5IG1vZGVyYXRvcnMgY2FuIHR1cm4gaXQgb2ZmIGdsb2JhbGx5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkyIiBuYW1lPSJtdXRlIG90aGVycyBjb25maXJtIG1lc3NhZ2UgdGl0bGUiPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgb2ZmIGdsb2JhbGx5PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkzIiBuYW1lPSJtdXRlIG90aGVycyBtb2RlcmF0b3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBtdXRlIHRoaXMgdXNlciBnbG9iYWxseT8gTm8gb3RoZXIgdXNlciB3aWxsIGhlYXIgaGltIGFueW1vcmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTQiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+WW91ciBzb3VuZCBpcyBvbi4gQ2xpY2sgaGVyZSB0byBzZW5kIG1vZGVyYXRvciBtZXNzYWdlIHRvIG11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5IChpbiB0aGUgY29tcGxldGUgY29uZmVyZW5jZSByb29tKSBvZmYhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTUiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+WW91ciBzb3VuZCBpcyBvZmYuIENsaWNrIGhlcmUgdG8gc2VuZCBtb2RlcmF0b3IgbWVzc2FnZSB0byB1bm11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5IChpbiB0aGUgY29tcGxldGUgY29uZmVyZW5jZSByb29tKSBvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5NiIgbmFtZT0ibXV0ZSBhcHBseSBzZWxmIG9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRoYXQgdGhlIG1vZGVyYXRvciBtdXRlcyBteSBtaWNyb3Bob25lIGdsb2JhbGx5LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk3IiBuYW1lPSJtdXRlIGFwcGx5IHNlbGYgb2ZmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRoYXQgdGhlIG1vZGVyYXRvciB1bm11dGVzIG15IG1pY3JvcGhvbmUgZ2xvYmFsbHkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTgiIG5hbWU9Im11dGUgYXBwbHkgb2YgbWVzc2FnZSI+CisgICAgPHZhbHVlPndhbnQgdGhhdCB0aGUgbW9kZXJhdG9yIHVubXV0ZXMgaGlzL2hlciBtaWNyb3Bob25lLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk5IiBuYW1lPSJtdXRlIGFwcGx5IG9mIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53YW50IHRoYXQgdGhlIG1vZGVyYXRvciBtdXRlcyBoaXMvaGVyIG1pY3JvcGhvbmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDAiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+VW5tdXRlIG1pY3JvcGhvbmUuIENsaWNrIGhlcmUgdG8gbXV0ZSBoaXMvaGVyIG1pY3JvcGhvbmUgZ2xvYmFsbHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDEiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lLiBDbGljayBoZXJlIHRvIHVubXV0ZSBoaXMvaGVyIG1pY3JvcGhvbmUgZ2xvYmFsbHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDIiIG5hbWU9Im11dGUgc2VsZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhpcyB1c2VyIGlzIGdsb2JhbGx5IG11dGVkIGJ5IHRoZSBtb2RlcmF0b3IuIFlvdSBjYW5ub3QgdW5tdXRlIGhpbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMyIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDQiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSB5b3VyIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwNSIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA2IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5Vbm11dGUgbWljcm9waG9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA3IiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDgiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDkiIG5hbWU9Im11dGUgbW9kZXJhdG9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Pbmx5IG1vZGVyYXRvcnMgY2FuIG11dGUgb3IgdW5tdXRlIGFuIHVzZXIgZ2xvYmFsbHkhIFRvIG11dGUgeW91ciBvd24gbWljcm9waG9uZTogUGxlYXNlIHVzZSB0aGUgbWljcm9waG9uZSBpY29uIGluIHlvdXIgdmlkZW8gcG9kITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDEwIiBuYW1lPSJwb2xsX25hbWUiPgorICAgIDx2YWx1ZT5Qb2xsIE5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMSIgbmFtZT0icG9sbF9uYW1lIj4KKyAgICA8dmFsdWU+WW91PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTIiIG5hbWU9ImFyY2hpdmVkX3BvbGxzIj4KKyAgICA8dmFsdWU+QXJjaGlldmVkIFBvbGxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTMiIG5hbWU9ImFjdGl2ZV9wb2xsIj4KKyAgICA8dmFsdWU+YWN0aXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTQiIG5hbWU9ImNoYXJ0X3NpbXBsZSI+CisgICAgPHZhbHVlPlNpbXBsZSBDaGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE1IiBuYW1lPSJjaGFydF9waWUiPgorICAgIDx2YWx1ZT5QaWUgQ2hhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNiIgbmFtZT0ic2lnbl91cF92YWxpZGF0aW9uIj4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTciIG5hbWU9ImNoYXRfbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+TmV3IG1lc3NhZ2Uocyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxOCIgbmFtZT0icG9sbF9jbG9zZSI+CisgICAgPHZhbHVlPkNsb3NlIFBvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxOSIgbmFtZT0icG9sbF9jbG9zZV9jb25maXJtIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNsb3NlIHRoaXMgUG9sbD8gTm8gb25lIHdpbGwgYmUgYWJsZSB0byB2b3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjAiIG5hbWU9InBvbGxfZGVsZXRlIj4KKyAgICA8dmFsdWU+RGVsZXRlIFBvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMSIgbmFtZT0icG9sbF9kZWxldGVfY29uZmlybSI+CisgICAgPHZhbHVlPkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBQb2xsPyBUaGUgcmVzdWx0cyB3aWxsIGJlIGRlbGV0ZWQgYXMgd2VsbC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMiIgbmFtZT0ibGFuZ3VhZ2VfY29kZSI+CisgICAgPHZhbHVlPkxhbmd1YWdlIElTTyBDb2RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjMiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19wZXJtaXNzaW9uIj4KKyAgICA8dmFsdWU+QWxsb3cvRGVueSByaWdodCB0byBnaXZlIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNCIgbmFtZT0iYWxsb3dfZXhjbHVzaXZlX2F1ZGlvX3Blcm1pc3Npb24iPgorICAgIDx2YWx1ZT5BbGxvdyB1c2VyIHRvIGdpdmUgZXhjbHVzaXZlIGF1ZGlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjUiIG5hbWU9ImRlbnlfZXhjbHVzaXZlX2F1ZGlvX3Blcm1pc3Npb24iPgorICAgIDx2YWx1ZT5EZW55IHVzZXIgdG8gZ2l2ZSBleGNsdXNpdmUgYXVkaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNiIgbmFtZT0iZXhjbF9hdWRpbyBhcHBseSBzZWxmIG9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGdldCBhIHBlcm1pc3Npb24gZm9yIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNyIgbmFtZT0iZXhjbF9hdWRpbyBhcHBseSBvZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+d2FudCB0aGF0IHRoZSBtb2RlcmF0b3IgZ2l2ZXMgbWUgYSBwZXJtaXNzaW9uIGZvciBleGNsdXNpdmUgYXVkaW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjgiIG5hbWU9ImV4Y2xfYXVkaW8gc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+R2l2ZSBhIHBlcm1pc3Npb24gZm9yIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyOSIgbmFtZT0iY2FtX3Jlc29sdXRpb24iPgorICAgIDx2YWx1ZT5DYW0gcmVzb2x1dGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMwIiBuYW1lPSJjYW1fcmVzb2x1dGlvbl9pbmZvIj4KKyAgICA8dmFsdWU+Q2hhbmdpbmcgdGhlIHJlc29sdXRpb24gYWZmZWN0cyBiYW5kd2lkdGgsIGJpZ2dlciBwaWN0dXJlIG5lZWRzIG1vcmUgYmFuZHdpdGghPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzEiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19lcnJvciI+CisgICAgPHZhbHVlPllvdSBkb24ndCBoYXZlIHRoZSByaWdodCB0byBnaXZlIHlvdXJzZWxmIG9yIG90aGVycyBleGNsdXNpdmUgYXVkaW8uIFlvdSBuZWVkIHRvIGFwcGx5IGZvciB0aGUgcmlnaHQgZnJvbSB0aGUgbW9kZXJhdG9yIG9yIGFzayB0aGUgbW9kZXJhdG9yIHRvIGdpdmUgeW91IGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzMiIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2FzayI+CisgICAgPHZhbHVlPkkgd291bGQgbGlrZSB0byBnZXQgdGhlIHJpZ2h0IGZvciBleGNsdXNpdmUgYXVkaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzMyIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2FjdGlvbiI+CisgICAgPHZhbHVlPkdpdmUgZXhjbHVzaXZlIGF1ZGlvIHRvIG1lIChhbHRlcm5hdGl2ZWx5IGNsaWNrIG9uIHlvdXIgdmlkZW8gcG9kIG9yIHByZXNzIEYxMik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNCIgbmFtZT0ibWljcm8gaXMgb24iPgorICAgIDx2YWx1ZT5NaWNyb3Bob25lIGlzIG9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM1IiBuYW1lPSJtaWNybyBpcyBvZmYiPgorICAgIDx2YWx1ZT5NaWNyb3Bob25lIGlzIG11dGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzYiIG5hbWU9ImhpZGVfY2hhdCI+CisgICAgPHZhbHVlPkhpZGUgY2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM3IiBuYW1lPSJoaWRlX2FjdGl2aXRpZXNfYW5kX2FjdGlvbnMiPgorICAgIDx2YWx1ZT5IaWRlIGFjdGl2aXRpZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzOCIgbmFtZT0iaGlkZV9maWxlc19leHBsb3JlciI+CisgICAgPHZhbHVlPkhpZGUgZmlsZXMgZXhwbG9yZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzOSIgbmFtZT0iaGlkZV9hY3Rpb25zX21lbnUiPgorICAgIDx2YWx1ZT5IaWRlIGFjdGlvbnMgbWVudTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQwIiBuYW1lPSJoaWRlX3NjcmVlbl9zaGFyaW5nIj4KKyAgICA8dmFsdWU+SGlkZSBzY3JlZW4gc2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQxIiBuYW1lPSJoaWRlX3doaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5IaWRlIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MiIgbmFtZT0ic2hvdyBtaWNyb3Bob25lIHN0YXR1cyI+CisgICAgPHZhbHVlPlNob3cgbWljcm8gc3RhdHVzIGluIHZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDMiIG5hbWU9ImxheW91dF9vcHRpb25zIj4KKyAgICA8dmFsdWU+TGF5b3V0IG9wdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0NCIgbmFtZT0iY2FsZW5kYXIgbmV3IGJ1dHRvbiI+CisgICAgPHZhbHVlPk5ldyBFdmVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ1IiBuYW1lPSJjYWxlbmRhciBwYXNzd29yZCBpbmZvIHRleHQiPgorICAgIDx2YWx1ZT5QYXNzd29yZCBwcm90ZWN0ZWQgYXJlIHRoZSBsaW5rcyB0byB0aGUgY29uZmVyZW5jZSB0aGF0IGFyZSBzZW5kIHRvIHRoZSBwYXJ0aWNpcGVudHMgd2hlbiB5b3Ugc2F2ZSB0aGUgY2FsZW5kYXIgZXZlbnQsIG5vdCB0aGUgcm9vbSEgVGhhdCBtZWFucyBpZiB5b3Ugc2F2ZSB0aGUgZXZlbnQgbXVsdGlwbGUgdGltZXMgYnV0IHdpdGggZGlmZmVyZW50IHBhc3N3b3JkcyBldmVyeSBwYXJ0aWNpcGVudCByZWNlaXZlcyBhIG5ldyBsaW5rIHRoYXQgaGFzIGEgZGlmZmVyZW50IHBhc3N3b3JkLiBCdXQgb2xkIGxpbmtzIHN0aWxsIHdvcmsgb25jZSBzZW5kITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ2IiBuYW1lPSJjYWxlbmRhciBlZGl0IGJ1dHRvbiI+CisgICAgPHZhbHVlPkVkaXQgZGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ3IiBuYW1lPSJzaXAgc2hvdyBkaWFsZXIiPgorICAgIDx2YWx1ZT5TaG93IHNpcCBkaWFsZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0OCIgbmFtZT0ic2lwIGNhbGwiPgorICAgIDx2YWx1ZT5DYWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDkiIG5hbWU9ImNhbGVuZGFyIGNvbnRhY3QgbGlzdCI+CisgICAgPHZhbHVlPlNob3cgY2FsZW5kYXIgZXZlbnRzIG9mIGNvbnRhY3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+WW91ciBob21lITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUxIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5QbGFuIHlvdXIgbWVldGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MiIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+V2F0Y2ggcmVjb3JkaW5nIGFuZCBpbnRlcnZpZXdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTMiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPkNob29zZSBhbmQgc3RhcnQgYSB3ZWItY29uZmVyZW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU0IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgdXNlcnMgYW5kIHJpZ2h0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU1IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgY29ubmVjdGlvbnMgYW5kIGtpY2sgdXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1NiIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIHVzZXJncm91cHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1NyIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIGNvbmZlcmVuY2Ugcm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1OCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIHN5c3RlbSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU5IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgbGFiZWxzIGFuZCB3b3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjAiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBMREFQIGFuZCBBRFMgY29uZmlndXJhdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MSIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+RXhwb3J0L0ltcG9ydCBTeXN0ZW0gQmFja3VwczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYyIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgbW9kZXJhdGlvbiBvciB0aGUgcmlnaHQgdG8gZHJhdyBvbiB3aGl0ZWJvYXJkIHRvIHVwbG9hZCwgYWRkLCBkZWxldGUgb3IgbG9hZCBmaWxlcyBhbmQgZm9sZGVycy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MyIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkVkaXQgdGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY0IiBuYW1lPSJzYWx1dGF0aW9uIj4KKyAgICA8dmFsdWU+UHJvZjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY1IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlB1Ymxpc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2NiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdGFydCBQdWJsaXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjciIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U3RvcCBQdWJsaXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+SG9zdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY5IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlB1Ymxpc2ggQXBwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzAiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UHVibGlzaCBJZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDcxIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHVjZSB0aGUgd2lkdGggb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbW92ZSBpdCBsZWZ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzIiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UmVkdWNlIHRoZSBoZWlnaHQgb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbW92ZSBpdCBib3R0b208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5SZWR1Y2UgdGhlIHggb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbWFrZSBpdCB3aWRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc0IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHVjZSB0aGUgeSBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtYWtlIGl0IGhpZ2hlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc1IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkZpbGwgdGhlc2Ugc2V0dGluZ3Mgc3RyZWFtIHlvdXIgc2NyZWVuIGRhdGEgdG8gM3RoIHBhcnR5IHByb3ZpZGVycyBsaWtlIGp1c3Rpbi50djwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc2IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlBsZWFzZSBzdGFydCBTY3JlZW4gc2hhcmluZyB0byBiZSBhYmxlIHRvIHB1Ymxpc2ggaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3NyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5Nb2RlcmF0b3IgcGVybWlzc2lvbiByZXF1aXJlZCB0byBzdGFydCByZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3OCIgbmFtZT0ibm8gcmlnaHQgZm9yIGV4Y2x1c2l2ZSBhdWRpbyI+CisgICAgPHZhbHVlPllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gYXBwbHkgZXhjbHVzaXZlIGF1ZGlvIHRvIGFueSBwYXJ0aWNpcGFudC4gWW91IG5lZWQgbW9kZXJhdGlvbiByb2xlIG9yIHRoZSByaWdodCBmb3IgZXhjbHVzaXZlIGF1ZGlvIHRvIG1ha2UgYW55IG1pY3JvcGhvbmUgZXhjbHVzaXZlIHR1cm5lZCBvbi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzkiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlVwbG9hZCBuZXcgZmlsZSB0byBmaWxlIGV4cGxvcmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODAiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPk9wZW4gbmV3IGRpYWxvZyB3aXRoIHNoYXJpbmcgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+QW4gZXhpc3RpbmcgbW9kZXJhdG9yIG11c3QgYXBwcm92ZSBpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgyIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5Bc2sgbW9kZXJhdG9yIHRvIHNoYXJlIHlvdXIgd2ViY2FtL21pY3JvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODMiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkdhdGhlciBmZWVkYmFjayBieSBjcmVhdGluZyBhIHBvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+UGFzdCBhbmQgY3VycmVudCBwb2xsIHJlc3VsdHMgYXMgY2hhcnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODUiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlZvdGUgaWYgdGhlcmUgaXMgYSBwb2xsIGZvciB0aGlzIGNvbmZlcmVuY2Ugcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg2IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5FZGl0IGNhbSBhbmQgbWljIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODciIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkNvbmZpcm0gYW5kIGxlYXZlIHRoZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODgiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkNhbGwgZXh0ZXJuYWwgcGVvcGxlIHZpYSBWb0lQL1NJUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg5IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5TZW5kIGFuIGVtYWlsIHdpdGggYSBkaXJlY3QgbGluayB0byB0aGlzIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Q2hhbmdlIHlvdXIgd2hpdGVib2FyZCBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkxIiBuYW1lPSJiYWNrdXAgYWRtaW4iPgorICAgIDx2YWx1ZT5NYXggdXBsb2FkIHNpemU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MiIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+QXNrIG1vZGVyYXRvciB0byBzaGFyZSB5b3VyIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MyIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+U3RhcnQgUHJpdmF0ZSBDaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTQiIG5hbWU9ImFsbF9wcml2YXRlX2NoYXQiPgorICAgIDx2YWx1ZT5BbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NSIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBzdGFydCBhIHByaXZhdGUgY2hhdCB3aXRoIHlvdXJzZWxmLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk2IiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5Zb3UndmUgYWxyZWFkeSBzdGFydGVkIGEgcHJpdmF0ZSBjaGF0IHdpdGggdGhpcyBwYXJ0aWNpcGFudC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NyIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHByaXZhdGUgY2hhdD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5OCIgbmFtZT0iU2VydmVycyI+CisgICAgPHZhbHVlPlNlcnZlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5OSIgbmFtZT0iU2VydmVycyI+CisgICAgPHZhbHVlPlNlcnZlcnMgcGFydGljaXBhdGluZyBpbiBjbHVzdGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDAiIG5hbWU9IlNlcnZlciBuYW1lIj4KKyAgICA8dmFsdWU+U2VydmVyIE5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMSIgbmFtZT0iU2VydmVyIEFkZHJlc3MiPgorICAgIDx2YWx1ZT5TZXJ2ZXIgQWRkcmVzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAyIiBuYW1lPSJTZXJ2ZXIgZGV0YWlscyI+CisgICAgPHZhbHVlPlNlcnZlciBkZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDMiIG5hbWU9IlNlbmQgU01TIj4KKyAgICA8dmFsdWU+U2VuZCBTTVM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNCIgbmFtZT0icHVibGlzaGluZ19tZXNzYWdlIj4KKyAgICA8dmFsdWU+UHVibGlzaGluZy4gVXNlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNSIgbmFtZT0iY21kX2xpbmVfYWRtaW4iPgorICAgIDx2YWx1ZT5UbyBzYXZlIHRpbWUgYW5kIGludGVybmV0IHRyYWZmaWMgeW91IGNhbiB1c2UgY29tbWFuZCBsaW5lIGFkbWluIHRvIGJhY2t1cC9yZXN0b3JlL3VwZ3JhZGU6XG4gMSkgZ28gdG8gT00gaW5zdGFsbCBkaXIgKGZvciBleC4gL29wdC9yZWQ1KSBcbiAyKSBzdG9wIE9NIChmb3IgZXguIC4vcmVkNS1zaHV0ZG93bi5zaClcbiAzKSAuL2FkbWluLnNoIC1iIC1maWxlIH4vdG9kYXlfb21fYmFja3VwLnppcCAoY3JlYXRlIGJhY2t1cCBvZiBjdXJyZW50IE9NKVxuIDQpIGRvd25sb2FkIGFyY2hpdmUgd2l0aCBuZXcgT01cbiA1KSBtdiAvb3B0L3JlZDUgL29wdC5yZWQ1LmJhayAobW92ZSB3b3JraW5nIHZlcnNpb24gb2YgT00ganVzdCBpbiBjYXNlIDopKVxuIDYpIGV4dHJhY3QgZG93bmxvYWRlZCBPTSB0byB0aGUgL29wdC9yZWQ1XG4gNykgLi9hZG1pbi5zaCAtaSAtZmlsZSB+L3RvZGF5X29tX2JhY2t1cC56aXAgKG9yICcuL2FkbWluLnNoIC1pIC1maWxlIH4vdG9kYXlfb21fYmFja3VwLnppcCAtLWRiLXR5cGUgbXlzcWwgLS1kYi11c2VyIG9tX3VzZXIgLS1kYi1wYXNzIG9tX3VzZXJfcGFzcycgaW4gY2FzZSBvZiB5b3UgYXJlIHVzaW5nIG5vbi1kZWZhdWx0IERCIClcbiA4KSBzdGFydCBPTVxuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDYiIG5hbWU9InB1YmxpY19yb29tX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5Sb29tcyBjb21tb24gdG8gYWxsIHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNyIgbmFtZT0icHJpdmF0ZV9yb29tX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5Sb29tcyBjb21tb24gdG8gdGhlIGN1cnJlbnQgdXNlciBncm91cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA4IiBuYW1lPSJteV9yb29tX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5Sb29tcyBvZiB0aGUgY3VycmVudCB1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDkiIG5hbWU9ImNyZWF0ZV9uZXdfcm9vbSI+CisgICAgPHZhbHVlPkNyZWF0ZS9Nb2RpZnkgYXBwb2ludG1lbnQgc3BlY2lhbCByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTAiIG5hbWU9Im11bHRpcGxlX2FkZHJlc3NlcyI+CisgICAgPHZhbHVlPllvdSBjYW4gZW50ZXIgbXVsdGlwbGUgYWRkcmVzc2VzIGluIHRoZSBmb3JtYXQ6IGZpcnN0bmFtZTEgbGFzdG5hbWUxICZsdDtlbWFpbDEmZ3Q7LCJmaXJzdG5hbWUyIGxhc3RuYW1lMiIgJmx0O2VtYWlsMiZndDssJ2ZpcnN0bmFtZTMgbGFzdG5hbWUzJyAmbHQ7ZW1haWwzJmd0OywgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTEiIG5hbWU9InN0cmVhbV92b2x1bWUiPgorICAgIDx2YWx1ZT5BZGp1c3Qgc3RyZWFtIHZvbHVtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTEyIiBuYW1lPSJtaWNyb3Bob25lX3ZvbHVtZSI+CisgICAgPHZhbHVlPkFkanVzdCBtaWNyb3Bob25lIHZvbHVtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTEzIiBuYW1lPSJjaGF0X21vZGVyYXRlZCI+CisgICAgPHZhbHVlPklzIGNoYXQgbW9kZXJhdGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTQiIG5hbWU9ImNoYXRfbW9kZXJhdGVkIj4KKyAgICA8dmFsdWU+QWxsb3cgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE1IiBuYW1lPSJjaGF0X29wZW5lZCI+CisgICAgPHZhbHVlPkNoYXQgcGFuZWwgb3BlbmVkIGJ5IGRlZmF1bHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNiIgbmFtZT0iZmlsZXNfb3BlbmVkIj4KKyAgICA8dmFsdWU+RmlsZXMgcGFuZWwgb3BlbmVkIGJ5IGRlZmF1bHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNyIgbmFtZT0ic2VydmVyIGFkbWluIHNlY3Rpb24gbGFzdHBpbmciPgorICAgIDx2YWx1ZT5MYXN0IHBpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxOCIgbmFtZT0ic2VydmVyIGFkbWluIHNlY3Rpb24gbGFzdHBpbmcgaW5mbyI+CisgICAgPHZhbHVlPkV2ZXJ5IHNsYXZlIHNlbmRzIGEgcGluZyB0byB0aGUgbWFzdGVyIGV2ZXJ5IDMgc2Vjb25kcyAoY29uZmlndXJhYmxlKS4gU2xhdmUgbGFzdFBpbmcgbXVzdCBiZSBzbWFsbGVyIHRoZW4gMSBtaW51dGUgc28gdGhhdCB0aGUgbWFzdGVyIHVzZXMgdGhlIHNsYXZlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE5IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcG9ydCI+CisgICAgPHZhbHVlPkhUVFAgUG9ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIwIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gdXNlciI+CisgICAgPHZhbHVlPlVzZXIgKFNPQVAtQWNjZXNzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIxIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcGFzc3dvcmQiPgorICAgIDx2YWx1ZT5QYXNzd29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIyIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gd2ViYXBwIHBhdGgiPgorICAgIDx2YWx1ZT5XZWJhcHAgcGF0aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIzIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcHJvdG9jb2wiPgorICAgIDx2YWx1ZT5Qcm90b2NvbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI0IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcGluZyBydW5uaW5nIj4KKyAgICA8dmFsdWU+UGluZyBydW5uaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjUiIG5hbWU9InNlcnZlciBhZG1pbiBhY3RpdmUiPgorICAgIDx2YWx1ZT5BY3RpdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyNiIgbmFtZT0iZ2VuZXJhdGVfaGFzaCI+CisgICAgPHZhbHVlPkdlbmVyYXRlIFVSTDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI3IiBuYW1lPSJuZXR3b3JrIHRlc3RpbmcgbGluayI+CisgICAgPHZhbHVlPk5ldHdvcmsgdGVzdGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI4IiBuYW1lPSJyb29tX29wdGlvbnMiPgorICAgIDx2YWx1ZT5BdXRvIHNlbGVjdCBpbnRlcnZpZXcgdmlkZW8gcG9kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjkiIG5hbWU9ImZvbnRfdW5kZXJsaW5lIj4KKyAgICA8dmFsdWU+VW5kZXJsaW5lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzAiIG5hbWU9ImZvbnRfc3R5bGUiPgorICAgIDx2YWx1ZT5Gb250IHN0eWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzEiIG5hbWU9ImFsbG93X2ZvbnRfc3R5bGVzIj4KKyAgICA8dmFsdWU+QWxsb3cgZm9udCBzdHlsZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMiIgbmFtZT0iZm9udF9jb2xvciI+CisgICAgPHZhbHVlPkZvbnQgY29sb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMyIgbmFtZT0iaHlwZXJsaW5rIj4KKyAgICA8dmFsdWU+SHlwZXJsaW5rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzQiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW4iPgorICAgIDx2YWx1ZT5TaG93IHNlc3Npb24gc3RhdGlzdGljczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM1IiBuYW1lPSJjb25uZWN0aW9uIGFkbWluIj4KKyAgICA8dmFsdWU+U2Vzc2lvbiBkZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzYiIG5hbWU9InN5c3RlbV9pbXBvcnQiPgorICAgIDx2YWx1ZT5TeXN0ZW0gaW1wb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzciIG5hbWU9ImluY2x1ZGVfaW50b19iYWNrdXAiPgorICAgIDx2YWx1ZT5JbmNsdWRlIHVwbG9hZGVkIGZpbGVzIGFuZCByZWNvcmRpbmdzIGluIGJhY2t1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM4IiBuYW1lPSJyb29tX2FkbWluX3NpcCI+CisgICAgPHZhbHVlPkVuYWJsZSBTSVAgdHJhbnNwb3J0IGluIHRoZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzkiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19jb25maXJtIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIHByb3ZpZGUgdGhpcyB1c2VyIGFuIGV4Y2x1c2l2ZSBhdWRpbz88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU0MCIgbmFtZT0ibm9fdGltZXpvbmUiPgorICAgIDx2YWx1ZT5QbGVhc2Ugc3BlY2lmeSB5b3VyIHRpbWV6b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NDUiIG5hbWU9ImNvbnRlbnRfaXNfc2F2aW5nIj4KKyAgICA8dmFsdWU+Q29udGVudCBpcyBTYXZpbmcsIFBsZWFzZSB3YWl0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorPC9sYW5ndWFnZT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL2VuZ2xpc2gueG1sIGIvV2ViQ29udGVudC9sYW5ndWFnZXMvZW5nbGlzaC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjc2Mzc0MwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL2VuZ2xpc2gueG1sCkBAIC0wLDAgKzEsNDY1MiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKworPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworVGhpcyBGaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5IHRoZSBMYW5ndWFnZUVkaXRvciAKK3RvIGFkZCBuZXcgTGFuZ3VhZ2VzIG9yIG1vZGlmeS9jdXN0b21pemUgaXQgdXNlIHRoZSBMYW5ndWFnZUVkaXRvciAKK3NlZSBodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvTGFuZ3VhZ2VFZGl0b3IuaHRtbCBmb3IgRGV0YWlscyAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjLS0+Cis8bGFuZ3VhZ2UgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeG1sbnM6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbj0ibGFuZ3VhZ2UueHNkIj4KKyAgPHN0cmluZyBpZD0iMSIgbmFtZT0iY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPkNvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMiIgbmFtZT0ibWVldGluZyI+CisgICAgPHZhbHVlPk1lZXRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMyIgbmFtZT0iY2xhc3Nyb29tIj4KKyAgICA8dmFsdWU+RXZlbnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQiIG5hbWU9InNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNSIgbmFtZT0iYmVudXR6ZXIiPgorICAgIDx2YWx1ZT5Qcm9maWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYiIG5hbWU9ImFkbWluIj4KKyAgICA8dmFsdWU+QWRtaW5pc3RyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNyIgbmFtZT0ic3RvcCI+CisgICAgPHZhbHVlPlN0b3A8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOCIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+UmVjb3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkiIG5hbWU9Im5vZmlsZSI+CisgICAgPHZhbHVlPk5vIGZpbGUgYXZhaWxhYmxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwIiBuYW1lPSJyZWNvcmRieXRlYWNoZXIiPgorICAgIDx2YWx1ZT5SZWNvcmQgYnkgdGVhY2hlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMSIgbmFtZT0iY29ubmVjdGVkdXNlcnMiPgorICAgIDx2YWx1ZT5Db25uZWN0ZWQgdXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIiIG5hbWU9InN0YXJ0Y29uZiI+CisgICAgPHZhbHVlPlN0YXJ0IGEgY29uZmVyZW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMyIgbmFtZT0ibXluYW1lIj4KKyAgICA8dmFsdWU+TXkgbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNCIgbmFtZT0idmlkZW9jb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+VmlkZW8gY29uZmVyZW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNSIgbmFtZT0iaW1wb3J0Ij4KKyAgICA8dmFsdWU+RmlsZSB1cGxvYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYiIG5hbWU9InJlZnJlc2hmaWxlcyI+CisgICAgPHZhbHVlPlJlZnJlc2ggbGlzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNyIgbmFtZT0idG9tYWluZmlsZSI+CisgICAgPHZhbHVlPlRvIG1haW4gZmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOCIgbmFtZT0ibmV3cG9sbCI+CisgICAgPHZhbHVlPm5ldyBwb2xsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5IiBuYW1lPSJuZXdwb2xsaGVhZGVyIj4KKyAgICA8dmFsdWU+QSBuZXcgcG9sbCBmb3IgdGhlIGNvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAiIG5hbWU9InF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+UXVlc3Rpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEiIG5hbWU9InBvbGx0eXBlIj4KKyAgICA8dmFsdWU+VHlwZSBvZiBwb2xsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyIiBuYW1lPSJjcmVhdGUiPgorICAgIDx2YWx1ZT5DcmVhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMiIG5hbWU9ImluZm9tZXNzYWdlIj4KKyAgICA8dmFsdWU+RWFjaCBjb25uZWN0ZWQgdXNlciByZWNlaXZlcyBhIG1lc3NhZ2Ugd2l0aCB0aGUgbmV3IHBvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQiIG5hbWU9ImNyZWF0cG9sbCI+CisgICAgPHZhbHVlPkNyZWF0ZSBhIHBvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUiIG5hbWU9ImNhbmNlbCI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNiIgbmFtZT0ieWVzbm8iPgorICAgIDx2YWx1ZT5ZZXMvTm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjciIG5hbWU9Im51bWVyaWMiPgorICAgIDx2YWx1ZT5OdW1lcmljIDEtMTA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgiIG5hbWU9InBvbGwiPgorICAgIDx2YWx1ZT5Qb2xsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5IiBuYW1lPSJtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+WW91IG11c3QgYmUgYSBtb2RlcmF0b3IgdG8gY3JlYXRlIGEgcXVlc3Rpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAiIG5hbWU9InZvdGUiPgorICAgIDx2YWx1ZT5Zb3VyIHZvdGUgaGFzIGJlZW4gcmVnaXN0ZXJlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMSIgbmFtZT0iYWxyZWFkeXZvdGVkIj4KKyAgICA8dmFsdWU+WW91ciBoYXZlIGFscmVhZHkgdm90ZWQgaW4gdGhpcyBwb2xsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyIiBuYW1lPSJ2b3RpbmciPgorICAgIDx2YWx1ZT5Wb3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzIiBuYW1lPSJhbnN3ZXIiPgorICAgIDx2YWx1ZT5Zb3VyIHJlc3BvbnNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0IiBuYW1lPSJ5ZXMiPgorICAgIDx2YWx1ZT5ZZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUiIG5hbWU9Im5vIj4KKyAgICA8dmFsdWU+Tm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYiIG5hbWU9InF1ZXN0aW9ud2FudCI+CisgICAgPHZhbHVlPndhbnRzIHRvIGtub3c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzciIG5hbWU9InBvbGxyZXN1bHRzIj4KKyAgICA8dmFsdWU+UG9sbCByZXN1bHRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4IiBuYW1lPSJxdWVzdGlvbiI+CisgICAgPHZhbHVlPlF1ZXN0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5IiBuYW1lPSJyZXN1bHRzIj4KKyAgICA8dmFsdWU+UmVzdWx0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MCIgbmFtZT0iYW5zd2VycyI+CisgICAgPHZhbHVlPkFuc3dlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDEiIG5hbWU9Im5vcG9sbCI+CisgICAgPHZhbHVlPk5vIHBvbGxzIGhhdmUgYmVlbiBzdGFydGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyIiBuYW1lPSJ2b3RpbmdzIj4KKyAgICA8dmFsdWU+Vm90ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MyIgbmFtZT0ibWVldGluZyI+CisgICAgPHZhbHVlPk1lZXRpbmcgKG1heCA0IHNlYXRzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NCIgbmFtZT0iY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPkNvbmZlcmVuY2UgKG1heCA1MCBzZWF0cyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUiIG5hbWU9InR5cGUiPgorICAgIDx2YWx1ZT5UeXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2IiBuYW1lPSJyZW1haW5pbmdzZWF0cyI+CisgICAgPHZhbHVlPk90aGVyIHNlYXRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3IiBuYW1lPSJhbHJlYWR5Y2hvc2VuIj4KKyAgICA8dmFsdWU+QWxyZWFkeSBjaG9zZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgiIG5hbWU9ImVudGVyIj4KKyAgICA8dmFsdWU+ZW50ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkiIG5hbWU9Im1vZGxlYXZlIj4KKyAgICA8dmFsdWU+VGhlIG1vZGVyYXRvciBoYXMgbGVmdCB0aGUgbWVldGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MCIgbmFtZT0ic3lzdGVtbWVzc2FnZSI+CisgICAgPHZhbHVlPlN5c3RlbSBpbmZvcm1hdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MSIgbmFtZT0iY2hvc3NlZGV2aWNlIj4KKyAgICA8dmFsdWU+Q2hvb3NlIGRldmljZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MiIgbmFtZT0iY2hvb3NlY2FtIj4KKyAgICA8dmFsdWU+Q2hvb3NlIHdlYmNhbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MyIgbmFtZT0iY2hvb3NlbWljIj4KKyAgICA8dmFsdWU+Q2hvb3NlIG1pY3JvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0IiBuYW1lPSJvayI+CisgICAgPHZhbHVlPk9LPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1IiBuYW1lPSJjYW5jZWwyIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2IiBuYW1lPSJyZWNvbmVlY3RuZWVkZWQiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0byByZWNvbm5lY3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTciIG5hbWU9ImVkaXRzZXR1cCI+CisgICAgPHZhbHVlPkVkaXQgc2V0dXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgiIG5hbWU9ImNvdXJzZSI+CisgICAgPHZhbHVlPkNvdXJzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OSIgbmFtZT0ibGFuZ3VhZ2UiPgorICAgIDx2YWx1ZT5MYW5ndWFnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MCIgbmFtZT0ib2syIj4KKyAgICA8dmFsdWU+T0s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEiIG5hbWU9ImNhbmNlbDMiPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIiIG5hbWU9ImNsZWFyd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkNsZWFyIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMiIG5hbWU9ImNsZWFyd2hpdGVib2FyZHF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+RG8geW91IHdhbnQgdG8gZW1wdHkgdGhlIHdoaXRlYm9hcmQgYmVmb3JlIGEgbmV3IHBpY3R1cmUgaXMgYWRkZWQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0IiBuYW1lPSJkb250YXNrYWdhaW4iPgorICAgIDx2YWx1ZT5Eb24ndCBhc2sgYWdhaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUiIG5hbWU9Im5vIj4KKyAgICA8dmFsdWU+Tm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYiIG5hbWU9ImVkaXRzZXR1cDIiPgorICAgIDx2YWx1ZT5FZGl0IHNldHVwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3IiBuYW1lPSJuZWVkY29uZmlybWF0aW9ud2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkNvbmZpcm0gcmVxdWVzdCB0byBlbXB0eSB0aGUgd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OCIgbmFtZT0idXNlcmluZm8iPgorICAgIDx2YWx1ZT5Vc2VyIGluZm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkiIG5hbWU9ImNsZWFyZHJhd2FyZWEiPgorICAgIDx2YWx1ZT5DbGVhciB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwIiBuYW1lPSJ1bmRvIj4KKyAgICA8dmFsdWU+VW5kbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MSIgbmFtZT0icmVkbyI+CisgICAgPHZhbHVlPlJlZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIiIG5hbWU9InNlbGVjdG9iamVjdCI+CisgICAgPHZhbHVlPlNlbGVjdCBhbiBvYmplY3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMiIG5hbWU9InRleHQiPgorICAgIDx2YWx1ZT5UZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0IiBuYW1lPSJwYWludCI+CisgICAgPHZhbHVlPlBhaW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1IiBuYW1lPSJkcmF3bGluZSI+CisgICAgPHZhbHVlPkRyYXcgbGluZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NiIgbmFtZT0iZHJhd3UiPgorICAgIDx2YWx1ZT5EcmF3IHVuZGVybGluZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NyIgbmFtZT0icmVjdCI+CisgICAgPHZhbHVlPlJlY3RhbmdsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OCIgbmFtZT0iZWxsaXBzZSI+CisgICAgPHZhbHVlPkVsbGlwc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkiIG5hbWU9ImFycm93Ij4KKyAgICA8dmFsdWU+QXJyb3c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAiIG5hbWU9ImRlbGV0ZWNob3NlbiI+CisgICAgPHZhbHVlPkRlbGV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MSIgbmFtZT0iYXBwbGl5bW9kIj4KKyAgICA8dmFsdWU+QXBwbHkgdG8gYmUgYSBtb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIiIG5hbWU9ImFwcGx5Ij4KKyAgICA8dmFsdWU+QXBwbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODMiIG5hbWU9ImNhbmNlbCI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NCIgbmFtZT0ibW9kIj4KKyAgICA8dmFsdWU+SSBoYXZlIGEgcXVlc3Rpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUiIG5hbWU9ImNsb3NlIj4KKyAgICA8dmFsdWU+Q2xvc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYiIG5hbWU9Iml0YWxpYyI+CisgICAgPHZhbHVlPml0YWxpYzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NyIgbmFtZT0iYm9sZCI+CisgICAgPHZhbHVlPmJvbGQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgiIG5hbWU9IndhaXRpbmciPgorICAgIDx2YWx1ZT5XQUlUSU5HPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5IiBuYW1lPSJhcHBseU1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BIHVzZXIgaGFzIGFwcGxpZWQgdG8gYmUgYSBtb2RlcmF0b3IsIHlvdSBjYW4gZWl0aGVyIGdyYW50IHRoZW0gb25seSBhY2Nlc3MgdG8gdGhlIHdoaXRlYm9hcmQgb3IgY29tcGxldGVseSBzd2l0Y2ggdGhlIG1vZGVyYXRpb24gcm9sZS4gVXNlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAiIG5hbWU9ImFjY2VwdCI+CisgICAgPHZhbHVlPkFjY2VwdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MSIgbmFtZT0icmVqZWN0Ij4KKyAgICA8dmFsdWU+UmVqZWN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyIiBuYW1lPSJjYW5jZWwiPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMiIG5hbWU9InNlbmRtb2RyZXF1ZXN0bWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbmRpbmcgdGhlIHJlcXVlc3QgdG8gdGhlIGZvbGxvd2luZyB1c2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NCIgbmFtZT0iYWNjZXB0Ij4KKyAgICA8dmFsdWU+QWNjZXB0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUiIG5hbWU9InJlamVjdCI+CisgICAgPHZhbHVlPlJlamVjdGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2IiBuYW1lPSJjaGFuZ2Vtb2QiPgorICAgIDx2YWx1ZT5DaGFuZ2UgbW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3IiBuYW1lPSJub25tb2RlcnJvcm1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIG5vdCB0aGUgbW9kZXJhdG9yIG9mIHRoaXMgY291cnNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4IiBuYW1lPSJtb2RlcmF0b3IiPgorICAgIDx2YWx1ZT5Nb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkiIG5hbWU9InJvb21mdWxsbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoaXMgcm9vbSBpcyBmdWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMCIgbmFtZT0iZWxsbGlwc2UiPgorICAgIDx2YWx1ZT5FbGxpcHNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMSIgbmFtZT0iY2xvc2UiPgorICAgIDx2YWx1ZT5DbG9zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIiIG5hbWU9IkF1dGhFcnJvciI+CisgICAgPHZhbHVlPmlucHV0IGRhdGEgZXJyb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzIiBuYW1lPSJtaW40dXNlcm5hbWUiPgorICAgIDx2YWx1ZT5QYXNzd29yZCBhbmQgb3IgbG9naW4gaXMgdG9vIHNob3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNCIgbmFtZT0ibWluNHBhc3MiPgorICAgIDx2YWx1ZT5QYXNzd29yZCBhbmQgb3IgbG9naW4gaXMgdG9vIHNob3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNSIgbmFtZT0idXNlcm5hbWV0YWtlbiI+CisgICAgPHZhbHVlPlRoZSB1c2VybmFtZSBpcyBhbHJlYWR5IHVzZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2IiBuYW1lPSJlbWFpbHRha2VuIj4KKyAgICA8dmFsdWU+VGhlIG1haWwgYWRkcmVzcyBpcyBhbHJlYWR5IHJlZ2lzdGVyZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3IiBuYW1lPSJlbWFpbHRha2VuIj4KKyAgICA8dmFsdWU+U3lzdGVtIGVycm9yIHBsZWFzZSBjb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOCIgbmFtZT0iQXV0aGxvZ2luIj4KKyAgICA8dmFsdWU+TG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5IiBuYW1lPSJBdXRodXNlciI+CisgICAgPHZhbHVlPlVzZXJuYW1lIG9yIG1haWwgYWRkcmVzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAiIG5hbWU9IkF1dGhwYXNzIj4KKyAgICA8dmFsdWU+UGFzc3dvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExIiBuYW1lPSJBdXRobGFuZyI+CisgICAgPHZhbHVlPkxhbmd1YWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMiIgbmFtZT0iQXV0aHJlZyI+CisgICAgPHZhbHVlPlNpZ24gaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzIiBuYW1lPSJyZWdmb3JtaGVhZCI+CisgICAgPHZhbHVlPlNpZ24gdXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0IiBuYW1lPSJyZWdmb3JtdXNlciI+CisgICAgPHZhbHVlPlVzZXJuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNSIgbmFtZT0icmVnZm9ybXBhc3MiPgorICAgIDx2YWx1ZT5QYXNzd29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYiIG5hbWU9InJlZ2Zvcm1yZXR5cGUiPgorICAgIDx2YWx1ZT5SZS1lbnRlciBwYXNzd29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTciIG5hbWU9InJlZ2Zvcm1maXJzdG5hbWUiPgorICAgIDx2YWx1ZT5GaXJzdCBuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOCIgbmFtZT0icmVnZm9ybWxhc3RuYW1lIj4KKyAgICA8dmFsdWU+U3VybmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkiIG5hbWU9InJlZ2Zvcm1tYWlsIj4KKyAgICA8dmFsdWU+RW1haWwgYWRkcmVzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAiIG5hbWU9InJlZ2Zvcm1zdGF0ZSI+CisgICAgPHZhbHVlPkNvdW50cnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxIiBuYW1lPSJyZWdmb3JtYnRuMSI+CisgICAgPHZhbHVlPlJlZ2lzdGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMiIgbmFtZT0icmVnZm9ybWJ0bjIiPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzIiBuYW1lPSJBdXRoYnRuMiI+CisgICAgPHZhbHVlPk5vdCBhIG1lbWJlcj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5Ib21lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNSIgbmFtZT0idXNlcmFkbWluIj4KKyAgICA8dmFsdWU+VXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2IiBuYW1lPSJncm91cGFkbWluIj4KKyAgICA8dmFsdWU+R3JvdXBzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNyIgbmFtZT0ib3JnYWRtaW4iPgorICAgIDx2YWx1ZT5Vc2VyZ3JvdXBzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOCIgbmFtZT0iaGVhZGNvbmYiPgorICAgIDx2YWx1ZT5Db25mZXJlbmNlIHJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOSIgbmFtZT0iY29uZl9wdWIiPgorICAgIDx2YWx1ZT5QdWJsaWM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwIiBuYW1lPSJoZWFkX29yZyI+CisgICAgPHZhbHVlPlVzZXJncm91cHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxIiBuYW1lPSJidG5fZW50ZXJyb29tIj4KKyAgICA8dmFsdWU+RW50ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2xvZ2luIj4KKyAgICA8dmFsdWU+TG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Bhc3MiPgorICAgIDx2YWx1ZT5QYXNzd29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQiIG5hbWU9InVzZXJhbHRlcnNlbGZfcGFzc3JldHlwZSI+CisgICAgPHZhbHVlPlJlLWVudGVyIHBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNSIgbmFtZT0idXNlcmFsdGVyc2VsZl9maXJzdG5hbWUiPgorICAgIDx2YWx1ZT5UaXRsZS9maXJzdCBuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNiIgbmFtZT0idXNlcmFsdGVyc2VsZl9sYXN0bmFtZSI+CisgICAgPHZhbHVlPkxhc3QgbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzciIG5hbWU9InVzZXJhbHRlcnNlbGZfZW1haWwiPgorICAgIDx2YWx1ZT5FbWFpbCBhZGRyZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOCIgbmFtZT0idXNlcmFsdGVyc2VsZl9iaXJ0aCI+CisgICAgPHZhbHVlPkJpcnRoZGF5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOSIgbmFtZT0idXNlcmFsdGVyc2VsZl9zdHJlZXRubyI+CisgICAgPHZhbHVlPlN0cmVldC9ObzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDAiIG5hbWU9InVzZXJhbHRlcnNlbGZfdG93biI+CisgICAgPHZhbHVlPlBvc3QgY29kZS9Ub3duPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MSIgbmFtZT0idXNlcmFsdGVyc2VsZl9zdGF0ZSI+CisgICAgPHZhbHVlPkNvdW50cnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2FkcmVzc2NvbW1lbnQiPgorICAgIDx2YWx1ZT5BZGRyZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MyIgbmFtZT0idXNlcmFsdGVyc2VsZl9oZWFkZXIiPgorICAgIDx2YWx1ZT5Vc2VyIGRldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0IiBuYW1lPSJzYXZlbWVudWJhcl9zYXZlbGFiZWwiPgorICAgIDx2YWx1ZT5TYXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NSIgbmFtZT0ic2F2ZW1lbnViYXJfc2F2ZWxhYmVsIj4KKyAgICA8dmFsdWU+U2F2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYiIG5hbWU9ImFkbWluX3VzZXJsaXN0X3VzZXJfaWQiPgorICAgIDx2YWx1ZT5Vc2VyIElEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NyIgbmFtZT0iYWRtaW5fdXNlcmxpc3RfbG9naW4iPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgiIG5hbWU9ImFkbWluX3VzZXJsaXN0X2ZpcnN0bmFtIj4KKyAgICA8dmFsdWU+Rmlyc3QgbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkiIG5hbWU9ImFkbWluX3VzZXJsaXN0X2xhc3RuYW1lIj4KKyAgICA8dmFsdWU+TGFzdCBuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MCIgbmFtZT0idHVybm92ZXJsaXN0X25leHQiPgorICAgIDx2YWx1ZT5TaG93IG5leHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxIiBuYW1lPSJ0dXJub3Zlcmxpc3RfcHJlIj4KKyAgICA8dmFsdWU+U2hvdyBwcmV2aW91czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIiIG5hbWU9InNhdmVjb250ZW50X2NvbmZpcm0iPgorICAgIDx2YWx1ZT5EZWxldGUgcmVjb3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MyIgbmFtZT0ic2F2ZWNvbnRlbnRfY29uZmlybV9jYW5jZWxfYnRuIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NCIgbmFtZT0ic2F2ZWNvbnRlbnRfY29uZmlybV9jb25maXJtX2J0biI+CisgICAgPHZhbHVlPkRlbGV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTUiIG5hbWU9InNhdmVtZW51YmFyX2FkZGxhYmVsIj4KKyAgICA8dmFsdWU+TmV3IHJlY29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTYiIG5hbWU9InNhdmVtZW51YmFyX3JlbG9hZGxhYmVsIj4KKyAgICA8dmFsdWU+UmVmcmVzaCByZWNvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU3IiBuYW1lPSJzYXZlbWVudWJhcl9kZWxldGVsYWJlbCI+CisgICAgPHZhbHVlPkRlbGV0ZSByZWNvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU4IiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fc3RhdHVzIj4KKyAgICA8dmFsdWU+U3RhdHVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1OSIgbmFtZT0idXNlcmFsdGVyX2FkbWluX3N0YXR1c0l0ZW0iPgorICAgIDx2YWx1ZT5EaXNhYmxlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjAiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9zdGF0dXNJdGVtIj4KKyAgICA8dmFsdWU+RW5hYmxlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjEiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9vcmdhbmlzYXRpb24iPgorICAgIDx2YWx1ZT5Vc2VyZ3JvdXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYyIiBuYW1lPSJjYWxlbmRhcl9pY29ubGFiZWwiPgorICAgIDx2YWx1ZT5DYWxlbmRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjMiIG5hbWU9InNhdmV3aW5kb3dfYnRuIj4KKyAgICA8dmFsdWU+Q2xvc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY0IiBuYW1lPSJvcmdhbmlzYXRpb250YWJsZWxpc3RfaWRyb3ciPgorICAgIDx2YWx1ZT5Vc2VyZ3JvdXAgSUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY1IiBuYW1lPSJvcmdhbmlzYXRpb250YWJsZWxpc3RfbmFtZXJvdyI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY2IiBuYW1lPSJ1c2VydmFsdWVfbGV2ZWxpZDEiPgorICAgIDx2YWx1ZT5Vc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2NyIgbmFtZT0idXNlcnZhbHVlX2xldmVsaWQyIj4KKyAgICA8dmFsdWU+TW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2OCIgbmFtZT0idXNlcnZhbHVlX2xldmVsaWQzIj4KKyAgICA8dmFsdWU+QWRtaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY5IiBuYW1lPSJ1c2VydmFsdWVfbGV2ZWxsYWJlbCI+CisgICAgPHZhbHVlPlVzZXIgbGV2ZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTcwIiBuYW1lPSJvcmd2YWx1ZV9oZWFkZXIiPgorICAgIDx2YWx1ZT5Vc2VyZ3JvdXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTcxIiBuYW1lPSJvcmd2YWx1ZV9vcmduYW1lIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzIiIG5hbWU9Im9yZ3ZhbHVlX29yZ25hbWUiPgorICAgIDx2YWx1ZT5BZGQgdXNlcmdyb3VwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MyIgbmFtZT0ib3JndmFsdWVfb3JnbmFtZSI+CisgICAgPHZhbHVlPkFkZCB1c2VyZ3JvdXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc0IiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3NSIgbmFtZT0ib3JndmFsdWVfdXNlcndpbiI+CisgICAgPHZhbHVlPkFkZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzYiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW4iPgorICAgIDx2YWx1ZT5SZW1vdmUgdXNlcmdyb3VwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3NyIgbmFtZT0ib3JndmFsdWVfdXNlcmxpc3QiPgorICAgIDx2YWx1ZT5Vc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3OCIgbmFtZT0ib3JndmFsdWVfdXNlcmxpc3RhZGQiPgorICAgIDx2YWx1ZT5BZGQgdXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzkiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJsaXN0ZGVsZXRlIj4KKyAgICA8dmFsdWU+RGVsZXRlIHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgwIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luaGVhZGVyIj4KKyAgICA8dmFsdWU+QWRkIHVzZXIgdG8gdXNlcmdyb3VwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4MSIgbmFtZT0ib3JndmFsdWVfdXNlcndpbnNlYXJjaGZpZWxkIj4KKyAgICA8dmFsdWU+U2VhcmNoIHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgyIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luc2VhcmNoYnRuIj4KKyAgICA8dmFsdWU+U2VhcmNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4MyIgbmFtZT0ib3JndmFsdWVfdXNlcndpbnNlYXJjaHJlc3VsdCI+CisgICAgPHZhbHVlPlVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg0IiBuYW1lPSJsb2dpbndpbl9jaG9vc2VvcmdhbmlzYXRpb24iPgorICAgIDx2YWx1ZT5Vc2VyZ3JvdXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg1IiBuYW1lPSJsb2dpbndpbl9jaG9vc2VvcmdhbmlzYXRpb25idG4iPgorICAgIDx2YWx1ZT5FbnRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODYiIG5hbWU9Im5hdmlfcm9vbWFkbWluIj4KKyAgICA8dmFsdWU+Q29uZmVyZW5jZSByb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODciIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5Db25mZXJlbmNlIHJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4OCIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPklEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4OSIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkwIiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+UHVibGljPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5MSIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPlVzZXJncm91cHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkyIiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+Q29uZmVyZW5jZSByb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTMiIG5hbWU9InJvb212YWx1ZV9uYW1lIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTQiIG5hbWU9InJvb212YWx1ZV90eXBlIj4KKyAgICA8dmFsdWU+VHlwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTUiIG5hbWU9InJvb212YWx1ZV9pc3B1YmxpYyI+CisgICAgPHZhbHVlPlB1YmxpYzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTYiIG5hbWU9InJvb212YWx1ZV9jb21tZW50Ij4KKyAgICA8dmFsdWU+Q29tbWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTciIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWljb24iPgorICAgIDx2YWx1ZT5TYXZlIGFuZCBleHBvcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk4IiBuYW1lPSJ3aGl0ZWJvYXJkX29wZW5pY29uIj4KKyAgICA8dmFsdWU+TG9hZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTkiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2luaGVhZGVyIj4KKyAgICA8dmFsdWU+U2F2ZSBhczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDAiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2ludGV4dCI+CisgICAgPHZhbHVlPkZpbGVuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMSIgbmFtZT0iZmlsZXMiPgorICAgIDx2YWx1ZT5GaWxlbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDIiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2luYnRuMSI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDMiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2luYnRuMiI+CisgICAgPHZhbHVlPlNhdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA0IiBuYW1lPSJycGNlcnJvcndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5FcnJvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDUiIG5hbWU9ImxvYWR3bWxfaGVhZGVyIj4KKyAgICA8dmFsdWU+TG9hZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDYiIG5hbWU9ImxvYWR3bWxfbWVzc3Nsb2FkIj4KKyAgICA8dmFsdWU+T2JqZWN0cyBsb2FkZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA3IiBuYW1lPSJsb2Fkd21sX21lc3NzeW5jIj4KKyAgICA8dmFsdWU+U3luY2hyb25pemluZywgcGxlYXNlIHdhaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA4IiBuYW1lPSJsb2FkaW1hZ2VfbWVzc2xvYWQiPgorICAgIDx2YWx1ZT5Mb2FkaW5nIGltYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwOSIgbmFtZT0ibG9hZGltYWdlX21lc3NzeW5jIj4KKyAgICA8dmFsdWU+U3luY2hyb25pemluZywgcGxlYXNlIHdhaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEwIiBuYW1lPSJsb2Fkd21sX2NvbmZpcm1oZWFkZXIiPgorICAgIDx2YWx1ZT5DbGVhciB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMSIgbmFtZT0ibG9hZHdtbF9jb25maXJtbWVzcyI+CisgICAgPHZhbHVlPkNsZWFyIHdoaXRlYm9hcmQsIGFsbCBkYXRhIG9uIHRoZSB3aGl0ZWJvYXJkIHdpbGwgYmUgbG9zdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTIiIG5hbWU9ImxvYWR3bWxfY29uZmlybW1lc3MyIj4KKyAgICA8dmFsdWU+Q29uZmlybSBiZWZvcmUgbG9hZGluZyBhIGZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEzIiBuYW1lPSJzZW5kX2ludml0YXRpb25fYnRuIj4KKyAgICA8dmFsdWU+U2VuZCBpbnZpdGF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNCIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX2hlYWRlciI+CisgICAgPHZhbHVlPlNlbmQgaW52aXRhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTUiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+U3ViamVjdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTYiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9yZWNpcGllbnQiPgorICAgIDx2YWx1ZT5SZWNpcGllbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE3IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fbWVzc2FnZSI+CisgICAgPHZhbHVlPk1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE4IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fYnRuX2NvbmZpcm0iPgorICAgIDx2YWx1ZT5TZW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxOSIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX2J0bl9jYW5jZWwiPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIwIiBuYW1lPSJzZW5kX2NoYXRfdGV4dF9idG4iPgorICAgIDx2YWx1ZT5TZW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyMSIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2hlYWRlciI+CisgICAgPHZhbHVlPlVzZXIgZGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjIiIG5hbWU9Imludml0ZWRfdXNlcndpbl9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+WW91ciBuaWNrbmFtZSBmb3IgdGhpcyBjb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyMyIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2xvZ2luIj4KKyAgICA8dmFsdWU+TmljazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjQiIG5hbWU9Imludml0ZWRfdXNlcndpbl9maXJzdG5hbWUiPgorICAgIDx2YWx1ZT5GaXJzdCBuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNSIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2xhc3RuYW1lIj4KKyAgICA8dmFsdWU+TGFzdCBuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNiIgbmFtZT0iaW52aXRlZF91c2Vyd2luX21haWwiPgorICAgIDx2YWx1ZT5FbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjciIG5hbWU9Imludml0ZWRfdXNlcndpbl9sYW5nIj4KKyAgICA8dmFsdWU+TGFuZ3VhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI4IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZW50ZXIiPgorICAgIDx2YWx1ZT5FbnRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjkiIG5hbWU9Imludml0ZWRfdXNlcndpbl9lbnRlciI+CisgICAgPHZhbHVlPkxvYWRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMwIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZW50ZXIiPgorICAgIDx2YWx1ZT5Mb2FkaW5nIGRhdGEsIHBsZWFzZSB3YWl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMSIgbmFtZT0idXNlcl9yZWdpc3RlckZhbHNlUFdEIj4KKyAgICA8dmFsdWU+V3JvbmcgcGFzc3dvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMyIiBuYW1lPSJ1c2VyX3JlZ2lzdGVyRmFsc2VQV0RIZWFkZXIiPgorICAgIDx2YWx1ZT5QbGVhc2UgZW50ZXIgdHdvIGlkZW50aWNhbCBwYXNzd29yZHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMzIiBuYW1lPSJ1c2VyX3JlZ2lzdGVyTWFpbEVycm9yIj4KKyAgICA8dmFsdWU+V3JvbmcgZW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM0IiBuYW1lPSJ1c2VyX3JlZ2lzdGVyTWFpbEVycm9ySGVhZGVyIj4KKyAgICA8dmFsdWU+WW91IGhhdmUgZW50ZXJlZCBhbiBpbnZhbGlkIGVtYWlsIGFkZHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM1IiBuYW1lPSJ1c2VyX3JlZ2lzdGVyU3VjY2VzcyI+CisgICAgPHZhbHVlPlJlZ2lzdHJhdGlvbiBjb21wbGV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzYiIG5hbWU9InVzZXJfcmVnaXN0ZXJTdWNjZXNzSGVhZGVyIj4KKyAgICA8dmFsdWU+WW91ciBhY2NvdW50IGhhcyBiZWVuIGNyZWF0ZWQuIFlvdSBjYW4gbm93IGxvZ2luLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzciIG5hbWU9InVzZXJfc2hhcmluZ19tZXNzYWdlIj4KKyAgICA8dmFsdWU+U29tZW9uZSBpcyBhbHJlYWR5IHNoYXJpbmcgdGhlaXIgc2NyZWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzOCIgbmFtZT0idXNlcl9zaGFyaW5nX21lc3NhZ2VIZWFkZXIiPgorICAgIDx2YWx1ZT5TaGFyaW5nIGZvcmJpZGRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzkiIG5hbWU9InVzZXJfZG9TdGFydFNjcmVlblZpZXdlciI+CisgICAgPHZhbHVlPlNoYXJlL3JlY29yZCBzY3JlZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQwIiBuYW1lPSJzY3JlZW5fd2FybkJhbmR3aWR0aCI+CisgICAgPHZhbHVlPlVuYWJsZSB0byBzeW5jcm9uaXplIHRoZSBzY3JlZW4uIElmIHRoaXMgd2FybmluZyBpcyBzaG93biBvZnRlbiB5b3Ugc2hvdWxkIGFzayB0aGUgbW9kZXJhdG9yIHRvIHJlZHVjZSB0aGUgcXVhbGl0eS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQxIiBuYW1lPSJzY3JlZW5fdXNlcmxhYmVsIj4KKyAgICA8dmFsdWU+U2NyZWVuIG9mOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDIiIG5hbWU9IndoaXRlYm9hcmRfdGFiX3BhaW50Ij4KKyAgICA8dmFsdWU+UGFpbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQzIiBuYW1lPSJ3aGl0ZWJvYXJkX3RhYl9kb2N1bWVudCI+CisgICAgPHZhbHVlPkRvY3VtZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0NCIgbmFtZT0idGFiYmFyX2NoYXRpY29uIj4KKyAgICA8dmFsdWU+Q2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDUiIG5hbWU9InRhYmJhcl9maWxlc2ljb24iPgorICAgIDx2YWx1ZT5GaWxlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDYiIG5hbWU9InRhYmJhcl9wYXJ0aWNpcGFudHNpY29uIj4KKyAgICA8dmFsdWU+TWVtYmVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDciIG5hbWU9InN3ZnByZXNlbnRhdGlvbl9saXN0c2F2ZW9yaWciPgorICAgIDx2YWx1ZT5Eb3dubG9hZCBvcmlnaW5hbCBkb2N1bWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDgiIG5hbWU9InN3ZnByZXNlbnRhdGlvbl9saXN0c2F2ZXBkZiI+CisgICAgPHZhbHVlPkRvd25sb2FkIFBERiBkb2N1bWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDkiIG5hbWU9InN3ZnByZXNlbnRhdGlvbl9saXN0bG9hZHN3ZiI+CisgICAgPHZhbHVlPkxvYWQgcHJlc2VudGF0aW9uIHRvIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUwIiBuYW1lPSJuYXZpbWFpbl9jb25maWciPgorICAgIDx2YWx1ZT5Db25maWd1cmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MSIgbmFtZT0id2hpdGVib2FyZF9ib3VuZGluZ2JveF9kcmFnIj4KKyAgICA8dmFsdWU+RHJhZyB0aGlzIG9iamVjdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTIiIG5hbWU9IndoaXRlYm9hcmRfYm91bmRpbmdib3hfcmVzaXplIj4KKyAgICA8dmFsdWU+UmVzaXplIHRoaXMgb2JqZWN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MyIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfem9vbSI+CisgICAgPHZhbHVlPiU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU0IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9zbGlkZSI+CisgICAgPHZhbHVlPm9mPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1NSIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfZmlyc3RzbGlkZSI+CisgICAgPHZhbHVlPkdvIHRvIGZpcnN0IHBhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU2IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9wcmVzbGlkZSI+CisgICAgPHZhbHVlPkdvIHRvIHByZXZpb3VzIHBhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU3IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9uZXh0c2xpZGUiPgorICAgIDx2YWx1ZT5HbyB0byBuZXh0IHBhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU4IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9sYXN0c2xpZGUiPgorICAgIDx2YWx1ZT5HbyB0byBsYXN0IHBhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU5IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl96b29tbWludXMiPgorICAgIDx2YWx1ZT5ab29tIC0tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MCIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfem9vbXBsdXMiPgorICAgIDx2YWx1ZT5ab29tICsrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MSIgbmFtZT0ic2FsdXRhdGlvbl9tciI+CisgICAgPHZhbHVlPk1yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MiIgbmFtZT0ic2FsdXRhdGlvbl9taXNzIj4KKyAgICA8dmFsdWU+TXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYzIiBuYW1lPSJuYXZpbWFpbl9jb25mYWRtaW4iPgorICAgIDx2YWx1ZT5Db25maWd1cmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2NCIgbmFtZT0iY29uZnRhYmxlX2hlYWRlcklkIj4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY1IiBuYW1lPSJjb25mdGFibGVfaGVhZGVya2V5Ij4KKyAgICA8dmFsdWU+S2V5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2NiIgbmFtZT0iY29uZmFkbWluZm9ybV9oZWFkZXIiPgorICAgIDx2YWx1ZT5Db25maWd1cmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2NyIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbGtleSI+CisgICAgPHZhbHVlPktleTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjgiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWx1cGRhdGVkIj4KKyAgICA8dmFsdWU+TGFzdCB1cGRhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY5IiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsdXBkYXRlZGJ5Ij4KKyAgICA8dmFsdWU+VXBkYXRlZCBieTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzAiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWxjb21tZW50Ij4KKyAgICA8dmFsdWU+Q29tbWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzEiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWxrZXkiPgorICAgIDx2YWx1ZT5WYWx1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzIiIG5hbWU9InR1cm5vdmVybGlzdF9tYXhyZXN1bHRzIj4KKyAgICA8dmFsdWU+b2Y8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjczIiBuYW1lPSJvcmdhbmlzYXRpb25fdXNlcnNoZWFkZXIiPgorICAgIDx2YWx1ZT5Vc2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzQiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2ljb25kZWxldGUiPgorICAgIDx2YWx1ZT5EZWxldGUgdXNlciBmcm9tIHVzZXJncm91cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzUiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2RlbGV0ZWRoZWFkIj4KKyAgICA8dmFsdWU+RDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzYiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2FscmVhZGFkZGVkIj4KKyAgICA8dmFsdWU+VGhpcyB1c2VyIGlzIGFscmVhZHkgYSBtZW1iZXIgb2YgdGhpcyB1c2VyZ3JvdXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc3IiBuYW1lPSJkYXNoYm9hcmRfbmV3c2hlYWRlciI+CisgICAgPHZhbHVlPk5ld3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc4IiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rc2hlYWRlciI+CisgICAgPHZhbHVlPlF1aWNrIGxpbmtzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3OSIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua0NvbmYiPgorICAgIDx2YWx1ZT5HbyB0byBjb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MCIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua0F1ZGl0Ij4KKyAgICA8dmFsdWU+R290byBhdWRpdG9yaXVtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MSIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua3N1cHBvcnQiPgorICAgIDx2YWx1ZT5IZWxwIGFuZCBzdXBwb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MiIgbmFtZT0iZGFzaGJvYXJkX3F1aWNraG9tZXBhZ2V1cmwiPgorICAgIDx2YWx1ZT5odHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MyIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbWFpbGluZ2xpc3R1cmwiPgorICAgIDx2YWx1ZT5odHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvbWFpbC1saXN0cy5odG1sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4NCIgbmFtZT0iZGFzaGJvYXJkX3JlcG9ydGJ1Z3MiPgorICAgIDx2YWx1ZT5SZXBvcnQgYSBidWc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg1IiBuYW1lPSJkYXNoYm9hcmRfcnNzbGlzdGl0ZW1saW5rdGV4dCI+CisgICAgPHZhbHVlPm1vcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg2IiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5raG9tZXBhZ2VsYWJlbCI+CisgICAgPHZhbHVlPlByb2plY3Qgd2Vic2l0ZSAoaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODciIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmttYWlsaW5nbGlzdGxhYmVsIj4KKyAgICA8dmFsdWU+VXNlciBtYWlsaW5nIGxpc3QgKGh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9tYWlsLWxpc3RzLmh0bWwpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4OCIgbmFtZT0ibG9naW5fcmVtZW1iZXJ1c2VyIj4KKyAgICA8dmFsdWU+UmVtZW1iZXIgbG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg5IiBuYW1lPSJtYWluX25hdmkiPgorICAgIDx2YWx1ZT5Db250ZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPkRhc2hib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTEiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5DYWxlbmRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTIiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5NeSBzY2hlZHVsZWQgZXZlbnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MyIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPlB1YmxpYyBtZWV0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTQiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5Qcml2YXRlIG1lZXRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NSIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPlB1YmxpYyBldmVudHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk2IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+UHJpdmF0ZSBldmVudHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk3IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+UHVibGljIGNvbnRlbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk4IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+UHJpdmF0ZSBjb250ZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5OSIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPlBlcnNvbmFsIGNvbnRlbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAwIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMSIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPk1vZGVyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAyIiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+SSBoYXZlIGEgcXVlc3Rpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAzIiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+UG9sbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA0IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+Q2hvb3NlIGEgZmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDUiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5TZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDYiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5DYW1lcmEgYW5kIG1pYyBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDciIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5XaGl0ZWJvYXJkIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwOCIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPkV4aXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA5IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+QmFjayB0byByb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTAiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5Mb2dvdXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzExIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPkZvcmdvdHRlbiB5b3VyIHBhc3N3b3JkPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTIiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+UmVzZXQgcGFzc3dvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEzIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlVzaW5nIGVtYWlsIGFkZHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE0IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlVzaW5nIGxvZ2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxNSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5Zb3VyIGVtYWlsIGFkZHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE2IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPllvdXIgbG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE3IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlNlbmQgZW1haWwgd2l0aCBhIHJlc2V0IGxpbms8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE4IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPk5vIHN1Y2ggZW1haWwgYWRkcmVzcyB3YXMgZm91bmQuIE1ha2Ugc3VyZSB5b3UgZW50ZXJlZCB0aGUgc2FtZSBlbWFpbCBhZGRyZXNzIHlvdSB1c2VkIHRvIGNyZWF0ZSB5b3VyIGFjY291bnQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxOSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5QbGVhc2UgZW50ZXIgZWl0aGVyIGFuIGVtYWlsIGFkZHJlc3Mgb3IgYSB1c2VyIG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIwIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIHVzZXIgY29ubmVjdGVkIHRvIHRoaXMgdXNlcm5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIxIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlRoZSBlbWFpbCBjb250YWluaW5nIGEgc3BlY2lhbCBsaW5rIGhhcyBiZWVuIHNlbnQgdG8geW91ciBlbWFpbCBhZGRyZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyMiIgbmFtZT0iZXJyb3J0eXBlIj4KKyAgICA8dmFsdWU+RXJyb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIzIiBuYW1lPSJlcnJvcnR5cGUiPgorICAgIDx2YWx1ZT5NZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNCIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+Tm8gdXNlciBmb3VuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjUiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPlJlc2V0IHlvdXIgcGFzc3dvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI2IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjciIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPkNoYW5nZSBwYXNzd29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjgiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPk5ldyBwYXNzd29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjkiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPlJlLWVudGVyIHBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzMCIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+VGhlIHBhc3N3b3JkcyB5b3UgZW50ZXJlZCB3ZXJlbid0IGlkZW50aWNhbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzEiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPlBhc3N3b3JkIGFuZCBvciB1c2VybmFtZSB0b28gc2hvcnQsIHJlcXVpcmVkIG1pbmltdW0gbGVuZ3RoIGZvciB1c2VyIG5hbWUgLyBwYXNzd29yZCBhcmU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzMiIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+UGFzc3dvcmQgc2V0LiBZb3UgY2FuIG5vdyBsb2dpbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMzIiBuYW1lPSJycGNjYWxsYmFjayI+CisgICAgPHZhbHVlPk9LPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNCIgbmFtZT0icnBjZ2VuZXJhbGVycm9yIj4KKyAgICA8dmFsdWU+VW5rbm93biBlcnJvci4gUGxlYXNlIHJlcG9ydCB0aGlzIHRvIHRoZSBhZG1pbmlzdHJhdG9yLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzUiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+VXNlcm5hbWUgbm90IGZvdW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNiIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5JbnZhbGlkIHBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNyIgbmFtZT0ibG9nb3V0Ij4KKyAgICA8dmFsdWU+U3VjY2Vzc2Z1bGx5IGxvZ2dlZCBvdXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM4IiBuYW1lPSJyZWdpc3RyYXRpb24iPgorICAgIDx2YWx1ZT5SZWdpc3RyYXRpb24gZGlzYWJsZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM5IiBuYW1lPSJyZWdpc3RyYXRpb24iPgorICAgIDx2YWx1ZT5JbnZhbGlkIGVtYWlsIGFkZHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQwIiBuYW1lPSJyZWdpc3RyYXRpb24iPgorICAgIDx2YWx1ZT5EdXBsaWNhdGUgZmlsZSBuYW1lLCBwbGVhc2UgZW50ZXIgYW5vdGhlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDEiIG5hbWU9ImZpbGVicm93c2VyIj4KKyAgICA8dmFsdWU+RmlsZSBuYW1lIHRvbyBzaG9ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDIiIG5hbWU9ImZpbGVicm93c2VyIj4KKyAgICA8dmFsdWU+Q291bGQgbm90IHNhdmUgdGhlIGFkZHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQzIiBuYW1lPSJ1c2VyYWRtaW4iPgorICAgIDx2YWx1ZT5Vc2VyIGFkZGVkIGJ1dCB5b3UgbmVlZCB0byBhc3NpZ24gdGhpcyB1c2VyIHRvIGFuIHVzZXJncm91cCwgb3RoZXJ3aXNlIHRoZXkgd29uJ3QgYmUgYWJsZSB0byBsb2cgaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ0IiBuYW1lPSJhZG1pbmZvcm1zIj4KKyAgICA8dmFsdWU+TmV3IHJlY29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDUiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPk5vIGZpZWxkIGZvdW5kIGZvciB0aGUgSUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ2IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5ObyBsYWJlbCBmb3VuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDciIG5hbWU9ImVycm9ybWVzc2FnZSI+CisgICAgPHZhbHVlPkFkbWluIGF1dGhvcml6YXRpb24gcmVxdWlyZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ4IiBuYW1lPSJtYWlubmF2aSI+CisgICAgPHZhbHVlPkxhbmd1YWdlIGVkaXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDkiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkxhbmd1YWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1MCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TGFiZWwgSUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUxIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5MYWJlbCBuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1MiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+VmFsdWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUzIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5GaWVsZCB2YWx1ZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU0IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5MYWJlbCBuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1NSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TGFiZWwgdmFsdWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU2IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5MYWJlbCBJRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTciIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPllvdSBoYXZlIGRlbGV0ZWQgdGhlIGxhYmVsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1OCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+SW52YWxpZCBsYWJlbCBJRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTkiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPllvdSBjYW5ub3QgZGVsZXRlIHRoaXMgZmllbGQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYwIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5FeHBvcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYxIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0byBsb2dvdXQgZm9yIGFueSBjaGFuZ2VzIHRvIHVwZGF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjIiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkFkZCBuZXcgbGFuZ3VhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYzIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5EZWxldGUgbGFuZ3VhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY0IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5BZGQgbmV3IGxhbmd1YWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjYiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkFkZCBsYW5ndWFnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjciIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkJhY2t1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjgiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPmdvdG8gZmlyc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY5IiBuYW1lPSJ0dXJub3Zlcmxpc3QiPgorICAgIDx2YWx1ZT5nb3RvIHByZXZpb3VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MCIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+Z290byBuZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MSIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+Z290byBsYXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MiIgbmFtZT0idmlkZW9ib3giPgorICAgIDx2YWx1ZT51c2VyIHNwZWFrcyAoQnkgY2xpY2tpbmcgaGVyZSB5b3UgY2FuIGdpdmUgZXhjbHVzaXZlIGF1ZGlvIC8gbXV0ZSB0aGUgbWljcm9waG9uZSBvZiBvdGhlcnMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MyIgbmFtZT0idmlkZW9ib3giPgorICAgIDx2YWx1ZT50dXJuIHNvdW5kIG9uL29mZjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPlN5c3RlbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzUiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPllvdXIgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc2IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5IZWxsbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzciIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPkVkaXQgeW91ciBwcm9maWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3OCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+VW5yZWFkIG1lc3NhZ2VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3OSIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+VXBsb2FkIG5ldyBpbWFnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODAiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+RXhwb3J0IHVzZXIgZGF0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODEiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+QWxsIHVzZXJncm91cHMgbXVzdCBhbHJlYWR5IGV4aXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4MiIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5TdGFydCBleHBvcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgzIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPkJ5IHVzZXJncm91cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODQiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+U3RhcnQgZXhwb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NSIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5JbXBvcnQgdXNlciBkYXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NiIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5DaG9vc2UgdXNlcnMueG1sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+SW1wb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4OCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+RXhwb3J0IHRvIFhNTDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODkiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkNob29zZSBhIGxhbmd1YWdlIGZpbGUgdG8gaW1wb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5MCIgbmFtZT0iaW1wb3J0d2luZG93Ij4KKyAgICA8dmFsdWU+SW1wb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5MSIgbmFtZT0icmVjb3JkaW5nc2F2ZXdpbiI+CisgICAgPHZhbHVlPlNhdmUgYXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkyIiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTMiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT5Db21tZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NCIgbmFtZT0icmVjb3JkaW5nc2F2ZXdpbiI+CisgICAgPHZhbHVlPlNhdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk1IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5SZWNvcmRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NiIgbmFtZT0icmVjb3JkZXIiPgorICAgIDx2YWx1ZT5SZWNvcmRpbmdzIHZpZXdlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTciIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPlJlY29yZGluZ3Mgb2YgcHVibGljIGFuZCBwcml2YXRlIHJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5OCIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+VXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk5IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5Kb2luZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAwIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAxIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5Vc2VycyBpbiB0aGlzIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAyIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5SZWZyZXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMyIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+VGhpcyByb29tIGlzIGZ1bGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA0IiBuYW1lPSJyb29tc0xpc3QiPgorICAgIDx2YWx1ZT5DbGljayBvbiBhIHJvb20gdG8gZ2V0IHRoZSByb29tIGRldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA1IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5DaGF0IHdpdGggdGhlIHVzZXJzIGluIHRoaXMgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDYiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPlJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA3IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5Vc2VycyBpbiB0aGlzIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA4IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5zaW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDkiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPlBsYXkgcmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMCIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+TGVuZ3RoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+RGF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTIiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPlJlY29yZGVyIG1vZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDEzIiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5QbGF5IHRoaXMgcmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxNCIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+UGxheS9QYXVzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTUiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPlJlY29yZCB0aGlzIG1lZXRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE2IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5TdG9wIHJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTciIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPlJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTgiIG5hbWU9InJlY29yZF9lcnJvcl9tc2ciPgorICAgIDx2YWx1ZT5Tb21lb25lIGlzIGFscmVhZHkgcmVjb3JkaW5nIHRoaXMgbWVldGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTkiIG5hbWU9InJlY29yZF9tZXNzYWdlIj4KKyAgICA8dmFsdWU+UmVjb3JkaW5nLiBVc2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjAiIG5hbWU9InJlY29yZF9jYW5jZWwiPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIxIiBuYW1lPSJyZWNvcmRfY2FuY2FsX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5SZWNvcmRpbmcgd2lsbCBiZSBjYW5jZWxlZCBhbmQgbm90IHNhdmVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyMiIgbmFtZT0iY2FuY2VsX2RpYWxvZ19yZXN1bWUiPgorICAgIDx2YWx1ZT5yZXN1bWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIzIiBuYW1lPSJjYW5jZWxfZGlhbG9nX3Jlc3VtZV90b29sdGlwIj4KKyAgICA8dmFsdWU+Q2xvc2UgdGhpcyB3aW5kb3cgYW5kIHJlc3VtZSByZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI0IiBuYW1lPSJwYWludHRvb2xzX2VsbGlwc2VfY29sb3IiPgorICAgIDx2YWx1ZT5DaGFuZ2UgbGluZSBjb2xvdXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI1IiBuYW1lPSJjb2xvcnBpY2tlcl9oZWFkIj4KKyAgICA8dmFsdWU+Q2hvb3NlIGNvbG91cjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjYiIG5hbWU9InBhaW50dG9vbHNfbGluZV9kaXNhYmxlIj4KKyAgICA8dmFsdWU+RGlzYWJsZS9lbmFibGUgbGluZSBjb2xvdXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI3IiBuYW1lPSJwYWludHRvb2xzX2ZpbGxfZGlzYWJsZSI+CisgICAgPHZhbHVlPkNoYW5nZSBmaWxsIGNvbG91cjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjgiIG5hbWU9InBhaW50dG9vbHNfbGluZV9kaXNhYmxlIj4KKyAgICA8dmFsdWU+RGlzYWJsZS9lbmFibGUgZmlsbCBjb2xvdXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI5IiBuYW1lPSJjaGFuZ2Vfd2lkdGhfYXJyb3dfZG93bl9zbGlkZXIiPgorICAgIDx2YWx1ZT5DaGFuZ2UgbGluZSB3aWR0aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzAiIG5hbWU9ImNsb3NlX3NtYWxsX3BvcHVwcyI+CisgICAgPHZhbHVlPkNsb3NlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzMSIgbmFtZT0icGFpbnRfdG9vbF9sZXR0ZXIiPgorICAgIDx2YWx1ZT5DaGFuZ2UgZm9udCBzaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzMiIgbmFtZT0icmVjb3JkaW5nc2xpc3RfZGVsZXRlIj4KKyAgICA8dmFsdWU+RGVsZXRlIHJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzMiIG5hbWU9InJlY29yZGluZ3NsaXN0X3JlY29yZGVkQnlHdWVzdCI+CisgICAgPHZhbHVlPkd1ZXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNCIgbmFtZT0icmVjb3JkaW5nc2xpc3RfcmVjb3JkZWRieSI+CisgICAgPHZhbHVlPkJ5OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzUiIG5hbWU9InJlY29yZGluZ3NfdGFibGVfaGVhZF9uYW1lIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzYiIG5hbWU9InJlY29yZGluZ3NfdGFibGVfaGVhZF9yb29tIj4KKyAgICA8dmFsdWU+Um9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzciIG5hbWU9InJlY29yZGluZ3NfdGFibGVfaGVhZF9kYXRlIj4KKyAgICA8dmFsdWU+RGF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzgiIG5hbWU9InJlY29yZF9zdGFydF9jYW5jZWwiPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM5IiBuYW1lPSJyZWNvcmRfc3RhcnRfc3RhcnQiPgorICAgIDx2YWx1ZT5TdGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDAiIG5hbWU9ImZpbGVzYnJvd3Nlcl90YWJsZV9oZWFkX25hbWUiPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MSIgbmFtZT0iZmlsZXNicm93c2VyX3RhYmxlX2hlYWRfZGF0ZSI+CisgICAgPHZhbHVlPkRhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQyIiBuYW1lPSJjaGF0X2NsZWFyX2hpc3RvcnkiPgorICAgIDx2YWx1ZT5EZWxldGUgc2VydmVyIGNoYXQgbG9nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MyIgbmFtZT0iY2hhdF9vdmVyYWxsX2hlYWRlciI+CisgICAgPHZhbHVlPkNoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ0IiBuYW1lPSJjaGF0X3NlbmRfYnRuIj4KKyAgICA8dmFsdWU+U2VuZCBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NSIgbmFtZT0iY2hhdF9lbW90X2J0biI+CisgICAgPHZhbHVlPkVtb3RpY29uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDYiIG5hbWU9ImNoYXRfZW1vdF93aW4iPgorICAgIDx2YWx1ZT5FbW90aWNvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ3IiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5DaG9vc2UgcHVibGlzaGVkIGRldmljZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ4IiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT5BdWRpbyBhbmQgdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ5IiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT5BdWRpbyBvbmx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1MCIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2NvbWJvIj4KKyAgICA8dmFsdWU+VmlkZW8gb25seTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTEiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPk5vIGF1ZGlvL3ZpZGVvIChzdGF0aWMgaW1hZ2UpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1MiIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2luZm9fdGV4dCI+CisgICAgPHZhbHVlPk5vIGF1ZGlvL3ZpZGVvIGZyb20geW91ciBQQyB3aWxsIGJlIHB1Ymxpc2hlZCwgeW91ciBwcm9maWxlIHBpY3R1cmUgd2lsbCBiZSBzaG93bjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTMiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfbW9uZGF5Ij4KKyAgICA8dmFsdWU+TU88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU0IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3R1ZXNkYXkiPgorICAgIDx2YWx1ZT5UVTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTUiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfd2VkbmVzZGF5Ij4KKyAgICA8dmFsdWU+V0U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU2IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3RodXJzZGF5Ij4KKyAgICA8dmFsdWU+VEg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU3IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX2ZyaWRheSI+CisgICAgPHZhbHVlPkZSPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1OCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9zYXR1cmRheSI+CisgICAgPHZhbHVlPlNBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1OSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9zdW5kYXkiPgorICAgIDx2YWx1ZT5TVTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjAiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfbW9uZGF5Ij4KKyAgICA8dmFsdWU+TW9uZGF5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9UdWVzZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5UdWVzZGF5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MiIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9XZWRuZXNkYXlMYWJlbCI+CisgICAgPHZhbHVlPldlZG5lc2RheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjMiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfVGh1cnNkYXlMYWJlbCI+CisgICAgPHZhbHVlPlRodXJzZGF5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9GcmlkYXlMYWJlbCI+CisgICAgPHZhbHVlPkZyaWRheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjUiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfU2F0dXJkYXlMYWJlbCI+CisgICAgPHZhbHVlPlNhdHVyZGF5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NiIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9TdW5kYXlMYWJlbCI+CisgICAgPHZhbHVlPlN1bmRheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjciIG5hbWU9ImNhbGVuZGFyX3dlZWtudW1iZXJfaGVhZGVyIj4KKyAgICA8dmFsdWU+Q1c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY4IiBuYW1lPSJjYWxlbmRhcl93ZWVrbnVtYmVyX2hlYWRlclRvb2x0aXAiPgorICAgIDx2YWx1ZT5DYWxlbmRhciB3ZWVrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2OSIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPkphbnVhcnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDcwIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+RmVicnVhcnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDcxIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+TWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDcyIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+QXByaWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDczIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+TWF5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3NCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPkp1bmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc1IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+SnVseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzYiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5BdWd1c3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc3IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+U2VwdGVtYmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3OCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPk9jdG9iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc5IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+Tm92ZW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgwIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+RGVjZW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgxIiBuYW1lPSJjYWxlbmRhcndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5DYWxlbmRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODIiIG5hbWU9InJvb21hZG1pbl9sYWJlbE51bWJlck9mUGFydGljaXBhbnRzIj4KKyAgICA8dmFsdWU+UGFydGljaXBhbnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4MyIgbmFtZT0icm9vbVZhbHVlX2FkdmFuY2VkU2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TaG93IGxheW91dCBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODQiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfdmlkZW9YIj4KKyAgICA8dmFsdWU+WCB8IFk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg1IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3ZpZGVvWSI+CisgICAgPHZhbHVlPldpZHRoIHwgaGVpZ2h0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NiIgbmFtZT0icm9vbUFkbWluX2xheW91dCI+CisgICAgPHZhbHVlPlZpZGVvIGNvbnRhaW5lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODciIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfbW9kIj4KKyAgICA8dmFsdWU+TW9kZXJhdGlvbiBjb250YWluZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg4IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X21vZF9wb3MiPgorICAgIDx2YWx1ZT5YPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4OSIgbmFtZT0icm9vbUFkbWluX2xheW91dF93aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+V2hpdGVib2FyZCBjb250YWluZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkwIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmRfc2hvdyI+CisgICAgPHZhbHVlPkVuYWJsZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkxIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmRfcG9zIj4KKyAgICA8dmFsdWU+WCB8IFk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkyIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5XaWR0aCB8IGhlaWdodDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTMiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXMiPgorICAgIDx2YWx1ZT5GaWxlcywgY2hhdCwgcGFydGljaXBhbnRzIGNvbnRhaW5lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTQiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXNfc2hvdyI+CisgICAgPHZhbHVlPkVuYWJsZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk1IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X2ZpbGVzX3BvcyI+CisgICAgPHZhbHVlPlggfFk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk2IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X2ZpbGVzIj4KKyAgICA8dmFsdWU+V2lkdGggfCBoZWlnaHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk3IiBuYW1lPSJtb2RlcmF0b3JfZ29uZV9tZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIG1vZGVyYXRvciBoYXMgbGVmdCB0aGUgcm9vbS4gTm8gb25lIGlzIHByZXNlbnRpbmcgYXQgdGhlIG1vbWVudC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk4IiBuYW1lPSJtb2RlcmF0b3JfbWVzc2FnZV9ldmVudF9ub19tb2QiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBtb2RlcmF0b3IgaW4gdGhpcyByb29tLCBidXQgdGhlcmUgYXJlIHNvbWUgcGFydGljaXBhbnRzLiBZb3UgaGF2ZSB0byBhcHBseSB0byBiZSB0aGUgbW9kZXJhdG9yIG9yIHdhaXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5OSIgbmFtZT0iZmVlZGJhY2tfdGVtcGxhdGVfc3ViamVjdCI+CisgICAgPHZhbHVlPkZlZWRiYWNrICRBUFBfTkFNRTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDAiIG5hbWU9Imludml0YXRpb25fdGVtcGxhdGVfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSAtIEludml0YXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAxIiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfZnJvbSI+CisgICAgPHZhbHVlPk1lc3NhZ2UgZnJvbSB1c2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDIiIG5hbWU9Imludml0YXRpb25fdGV4dF9tZXNzYWdlIj4KKyAgICA8dmFsdWU+TWVzc2FnZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAzIiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfY2xpY2tfdGV4dCI+CisgICAgPHZhbHVlPkNsaWNrIHRoaXMgbGluayB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgY29uZmVyZW5jZSBbVGhlIGxpbmsgbWF5IG9ubHkgd29yayBmb3IgYSBjZXJ0YWluIHBlcmlvZC5dOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDQiIG5hbWU9Imludml0YXRpb25fdGV4dF9jbGlja190ZXh0X2xpbmsiPgorICAgIDx2YWx1ZT5DbGljayBoZXJlIHRvIGVudGVyIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA1IiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfY2xpY2tfdGV4dF9oZWxwIj4KKyAgICA8dmFsdWU+SWYgeW91IGhhdmUgcHJvYmxlbXMgd2l0aCB0aGUgbGluaywgcGxlYXNlIGNvcHkgYW5kIHBhc3RlIHRoaXMgdG8geW91ciBicm93c2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDYiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9oZWFkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIEFjY291bnQgRGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDciIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9oZWFkMiI+CisgICAgPHZhbHVlPllvdXIgYWNjb3VudCBkZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwOCIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X3VzZXJuYW1lIj4KKyAgICA8dmFsdWU+TG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA5IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfcGFzcyI+CisgICAgPHZhbHVlPlBhc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTEwIiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfbWFpbCI+CisgICAgPHZhbHVlPkVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxMSIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X2J5ZSI+CisgICAgPHZhbHVlPiRBUFBfTkFNRS1UZWFtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxMiIgbmFtZT0icmVnaXN0ZXJfbWFpbF9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+WW91ciAkQVBQX05BTUUgYWNjb3VudCBkZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxMyIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSAtIFJlc2V0IFBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNCIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfdGVzdF9saW5rIj4KKyAgICA8dmFsdWU+Q2xpY2sgb24gdGhpcyBsaW5rIHRvIGVudGVyIGEgbmV3IHBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNSIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfdGV4dDJfbGluayI+CisgICAgPHZhbHVlPkNsaWNrIGhlcmUgdG8gZW50ZXIgYSBuZXcgcGFzc3dvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE2IiBuYW1lPSJyZXNldF9wYXNzd29yZF90ZW1wbGF0ZV90ZXh0M19saW5rIj4KKyAgICA8dmFsdWU+SWYgeW91IGhhdmUgcHJvYmxlbXMgd2l0aCB0aGUgbGluaywgcGxlYXNlIGNvcHkgYW5kIHBhc3RlIHRoaXMgdG8geW91ciBicm93c2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTciIG5hbWU9InJlc2V0X3Bhc3N3b3JkX21haWxfc3ViamVjdCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSBwYXNzd29yZCByZXNldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTgiIG5hbWU9ImRhdGVSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIHZhbGlkIGRhdGUsIGZvciBleGFtcGxlIDI0LjEyLjIwMDEgKGRkLm1tLnl5eXkpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxOSIgbmFtZT0iZW1haWxSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIHZhbGlkIGVtYWlsIGFkZHJlc3MsIGZvciBleGFtcGxlIG5hbWVAbWFpbC5jb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIwIiBuYW1lPSJmbG9hdFJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGEgZmxvYXQtbnVtYmVyLCBmb3IgZXhhbXBsZSAxLjAwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyMSIgbmFtZT0ibnVtYmVyUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5QbGVhc2UgZW50ZXIgYW4gaW50ZWdlciBudW1iZXIsIGZvciBleGFtcGxlIDEwMDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjIiIG5hbWU9InBob25lUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5QbGVhc2UgZW50ZXIgYSB2YWxpZCBwaG9uZSBudW1iZXIsIGZvciBleGFtcGxlICsrNDkgMDEyMyAxMjMxMjM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIzIiBuYW1lPSJ0aW1lUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5QbGVhc2UgZW50ZXIgYSB2YWxpZCB0aW1lLCBmb3IgZXhhbXBsZSAxMjoyMyAoaGg6bW0pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3ciPgorICAgIDx2YWx1ZT5QYXNzd29yZCBwcm90ZWN0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI1IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd19wYXNzd29yZExhYmVsIj4KKyAgICA8dmFsdWU+UGFzc3dvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI2IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZExhYmVsIj4KKyAgICA8dmFsdWU+VmFsaWRpdHkgcGVyaW9kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNyIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWQiPgorICAgIDx2YWx1ZT5FbmRsZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyOCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWQiPgorICAgIDx2YWx1ZT5QZXJpb2Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI5IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZCI+CisgICAgPHZhbHVlPk9uZSB0aW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWRGcm9tTGFiZWwiPgorICAgIDx2YWx1ZT5WYWxpZCBmcm9tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMSIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWRUb0xhYmVsIj4KKyAgICA8dmFsdWU+VmFsaWQgdG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMyIiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd19NYWlsU3ViamVjdCI+CisgICAgPHZhbHVlPkludml0YXRpb24gdG8gJEFQUF9OQU1FPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMyIgbmFtZT0iaW52aXRhdGlvbl9lcnJvciI+CisgICAgPHZhbHVlPk5vIGludml0YXRpb24gYXZhaWxhYmxlIGZvciB0aGlzIGludml0YXRpb24gY29kZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzQiIG5hbWU9Imludml0YXRpb25fZXJyb3IiPgorICAgIDx2YWx1ZT5UaGlzIGludml0YXRpb24gd2FzIGFscmVhZHkgdXNlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzUiIG5hbWU9Imludml0YXRpb25fZXJyb3IiPgorICAgIDx2YWx1ZT5UaGUgaW52aXRhdGlvbiBjb2RlIGlzIGludmFsaWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM2IiBuYW1lPSJpbnZpdGF0aW9uX3Bhc3MiPgorICAgIDx2YWx1ZT5QYXNzd29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzciIG5hbWU9Imludml0YXRpb25fcGFzc19idG4iPgorICAgIDx2YWx1ZT5DaGVjayBwYXNzd29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzgiIG5hbWU9Imludml0YXRpb25fcGFzc19lcnJvciI+CisgICAgPHZhbHVlPkludmFsaWQgcGFzc3dvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM5IiBuYW1lPSJCcm93c2VyIj4KKyAgICA8dmFsdWU+QXVkaW8vdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQwIiBuYW1lPSJhdWRpb192aWRlbyI+CisgICAgPHZhbHVlPlN5bmNyb25pemUgYXVkaW8vdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQxIiBuYW1lPSJlcnJvckNvZGVfaW52YWxpZFNlc3Npb24iPgorICAgIDx2YWx1ZT5Mb2dpbiB3YXMgY29ycmVjdCwgYnV0IHRoZSBzZXNzaW9uIGlzIG5vdCBhY3RpdmUgb3Igc3RvcmVkIG9uIHRoZSBzZXJ2ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQyIiBuYW1lPSJlcnJvcmNvZGVfc2V0VXNlck9iamVjdCI+CisgICAgPHZhbHVlPlRoZSBzZXNzaW9uIElEIGlzIG5vdCBsb2dnZWQgaW4gb3IgaGFzIG5vIGFkbWluIHJpZ2h0cy4gVGhlIFNPQVAgZ2F0ZXdheSBuZWVkcyBhIHVzZXIgd2l0aCBhZG1pbiByaWdodHMgdG8gZW1iZWQgbmV3IHVzZXJzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDMiIG5hbWU9ImVycm9yY29kZV9sb2dpbkJ5UmVtb3RlVXNlciI+CisgICAgPHZhbHVlPlRoaXMgc2Vzc2lvbiBoYXMgbm8gcmVtb3RldXNlci1kYXRhIGNvbm5lY3RlZC4gWW91IGRpZCBub3QgY2FsbCB0aGUgU09BUCBnYXRld2F5IGJlZm9yZSBhY2Nlc3NpbmcgdGhlIGFwcGxpY2F0aW9uIG9yIHlvdSBhcmUgdXNpbmcgYSB3cm9uZyBzZXNzaW9uIElEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0NCIgbmFtZT0iZGVidWdfbWVzc2FnZV9yZWNvcmRpbmciPgorICAgIDx2YWx1ZT5UaGUgcmVjb3JkZXIgaXMgY3VycmVudGx5IGJldGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ1IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWFZhbHVlIj4KKyAgICA8dmFsdWU+eDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDYiIG5hbWU9InByb3BlcnR5UGFuZWxYVmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPngtYXhpczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDciIG5hbWU9InByb3BlcnR5UGFuZWxZVmFsdWUiPgorICAgIDx2YWx1ZT55PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0OCIgbmFtZT0icHJvcGVydHlQYW5lbFlWYWx1ZUxhYmVsIj4KKyAgICA8dmFsdWU+eS1heGlzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0OSIgbmFtZT0icHJvcGVydHlQYW5lbFdpZHRoVmFsdWUiPgorICAgIDx2YWx1ZT53PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1MCIgbmFtZT0icHJvcGVydHlQYW5lbFdpZHRoVmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPndpZHRoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1MSIgbmFtZT0icHJvcGVydHlQYW5lbEhlaWdodFZhbHVlIj4KKyAgICA8dmFsdWU+aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTIiIG5hbWU9InByb3BlcnR5UGFuZWxIZWlnaHRWYWx1ZUxhYmVsIj4KKyAgICA8dmFsdWU+aGVpZ2h0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1MyIgbmFtZT0icHJvcGVydHlPcGFjaXR5U2xpZGVyIj4KKyAgICA8dmFsdWU+Q2hhbmdlIHRyYW5zcGFyZW5jeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTQiIG5hbWU9ImJyb3dzZXJPcGVuIj4KKyAgICA8dmFsdWU+T3BlbiBicm93c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1NSIgbmFtZT0iYnJvd3NlckNsb3NlIj4KKyAgICA8dmFsdWU+Q2xvc2UgYnJvd3NlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTYiIG5hbWU9ImNvbm5lY3Rpb25Mb3N0TWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSBjb25uZWN0aW9uIHRvIHRoZSBzZXJ2ZXIgaGFzIGJlZW4gbG9zdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTciIG5hbWU9IjU1NyI+CisgICAgPHZhbHVlPlBvaW50ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU4IiBuYW1lPSJzeW5jIG1lc3NhZ2UgaGVhZGVyIj4KKyAgICA8dmFsdWU+U3luY2hyb25pemluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTkiIG5hbWU9IlN5bmNocm9uaXppbmcgbWVzc2FnZSI+CisgICAgPHZhbHVlPlN5bmNocm9uaXppbmcsIHBsZWFzZSB3YWl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MCIgbmFtZT0iZXhwb3J0VG9TVkciPgorICAgIDx2YWx1ZT4mbHQ7dSZndDtEb3dubG9hZCBhcyBTVkcmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MSIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O0Rvd25sb2FkIGFzIFBORyZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYyIiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7RG93bmxvYWQgYXMgSlBHJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjMiIG5hbWU9ImV4cG9ydFRvSW1hZ2UiPgorICAgIDx2YWx1ZT4mbHQ7dSZndDtEb3dubG9hZCBhcyBQREYmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2NCIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O0Rvd25sb2FkIGFzIFRJRiZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY1IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+Tm90aWZpY2F0aW9uIHR5cGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY2IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+Q2F0ZWdvcnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY3IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+UmVwZXRpdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjgiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5ub25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2OSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkxvY2F0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MCIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPlN0YXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkVuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzIiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5UaXRsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzMiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5Db21tZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NCIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkludml0ZSBQZW9wbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc1IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+RGFpbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc2IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+TW9udGhseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzciIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5ZZWFybHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc4IiBuYW1lPSJhbGVydCI+CisgICAgPHZhbHVlPkFwcG9pbnRtZW50IGVuZCBpcyBhZnRlciBvZiBhcHBvaW50bWVudCBzdGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzkiIG5hbWU9ImFsZXJ0Ij4KKyAgICA8dmFsdWU+UGxlYXNlIGluc2VydCBhIHRpdGxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MCIgbmFtZT0iNTgwIj4KKyAgICA8dmFsdWU+UmlnaHQgdG8gbGVmdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODEiIG5hbWU9IjU4MSI+CisgICAgPHZhbHVlPkFjdGl2YXRlIHRoaXMgaWYgeW91IHdyaXRlIGluIGEgcmlnaHQgdG8gbGVmdCBsYW5ndWFnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODIiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+RGFzaGJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MyIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT5XYXRjaCByZWNvcmRlZCBtZWV0aW5ncyBvciBldmVudHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg0IiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPk1lZXRpbmcgLSBtYWtlIGEgY29uZmVyZW5jZSB3aXRoIGJldHdlZW4gNCBhbmQgMjUgdXNlcnMmbHQ7YnIvJmd0O2FuZCBldmVyeWJvZHkgd2lsbCBoYXZlIGF1ZGlvIGFuZCB2aWRlbyBhY2Nlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg1IiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPkV2ZW50IC0gbWFrZSBhIGNvbmZlcmVuY2Ugd2l0aCB1cCB0byAyMDAgcGFydGljaXBhbnRzJmx0O2JyLyZndDtidXQgb25seSB0aGUgbW9kZXJhdG9yIHdpbGwgaGF2ZSBhdWRpbyBhbmQgdmlkZW8gYWNjZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4NiIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT5DcmVhdGUgdXNlcnMsIHJvb21zLCB1c2VyZ3JvdXBzJmx0O2JyLyZndDsgYW5kIGNoYW5nZSBjb25maWd1cmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4NyIgbmFtZT0icm9vbSBBZG1pbmlzdHJhdGlvbiByb29tY2xpZW50cyBsaXN0Ij4KKyAgICA8dmFsdWU+VXNlcnMgaW4gdGhpcyByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4OCIgbmFtZT0icm9vbSBBZG1pbmlzdHJhdGlvbiByb29tY2xpZW50cyBsaXN0Ij4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg5IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTAiIG5hbWU9InJvb20gQWRtaW5pc3RyYXRpb24gcm9vbWNsaWVudHMgbGlzdCI+CisgICAgPHZhbHVlPkQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkxIiBuYW1lPSJzd2Ygc3luYyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TG9hZGluZyBkb2N1bWVudC4gUGxlYXNlIHdhaXQgdW50aWwgYWxsIGNsaWVudHMgaGF2ZSBiZWVuIHN5bmNocm9uaXplZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkyIiBuYW1lPSJ1cGxvYWQgZGlhbG9nIj4KKyAgICA8dmFsdWU+VXBsb2FkIGNvbXBsZXRlLCBjb252ZXJ0aW5nIGRvY3VtZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5MyIgbmFtZT0idXBsb2FkIGRpYWxvZyI+CisgICAgPHZhbHVlPlN0YXJ0IHVwbG9hZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTQiIG5hbWU9InVwbG9hZCBkaWFsb2ciPgorICAgIDx2YWx1ZT5VcGxvYWQgYW5kIGltcG9ydCBkaWFsb2cuIFBsZWFzZSBzZWxlY3QgYSBmaWxlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTUiIG5hbWU9InVwbG9hZCBEaWFsb2ciPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk2IiBuYW1lPSJ1cGxvYWQgRGlhbG9nIj4KKyAgICA8dmFsdWU+U2VsZWN0IGZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk3IiBuYW1lPSJhZG1pbmlzdHJhdGlvbiBuYXZpZ2F0aW9uIj4KKyAgICA8dmFsdWU+Q29ubmVjdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk4IiBuYW1lPSJjb25mYWRtaW4gdmFsdWUgbGlzdCI+CisgICAgPHZhbHVlPlZhbHVlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5OSIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPlN0cmVhbSBJRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDAiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDEiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5Db25uZWN0ZWQgc2luY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAyIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+Um9vbSAvIFNjb3BlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwMyIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPlVuZW5yb2xlIHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA0IiBuYW1lPSJraWNrIHVzZXIgY29uZmlybWF0aW9uIGRpYWxvZyI+CisgICAgPHZhbHVlPlVuZW5yb2xlIHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA1IiBuYW1lPSJraWNrIHVzZXIgY29uZmlybWF0aW9uIGRpYWxvZyI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byB1bmVucm9sZSB0aGlzIGNsaWVudCBmcm9tIHRoZSByb29tPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDYiIG5hbWU9ImtpY2sgdXNlciBtZXNzYWdlIGRpYWxvZyI+CisgICAgPHZhbHVlPllvdXIgc2Vzc2lvbiBoYXMgYmVlbiBjbG9zZWQgYnkgYW4gYWRtaW5pc3RyYXRvciBvciBtb2RlcmF0b3IuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwNyIgbmFtZT0idXNlcmFsdGVyc2VsZl9waG9uZSI+CisgICAgPHZhbHVlPlBob25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwOCIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+VXNlciBpcyB0aGUgbW9kZXJhdG9yIG9mIHRoaXMgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDkiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPlVzZXIgaXMgYWxsb3dlZCB0byBkcmF3IG9uIHRoZSB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMCIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+KFJlKSBTdGFydCBhdWRpby92aWRlbyBvciBjaGFuZ2UgZGV2aWNlIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMSIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+QWxsb3cgdGhpcyB1c2VyIHRvIGRyYXcgb24gdGhlIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEyIiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5SZW1vdmUgYWJpbGl0eSB0byBkcmF3IG9uIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEzIiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+VXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE0IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+RmlsZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE1IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+V2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTYiIG5hbWU9ImNvbmZlcmVuY2VQYW5lbHMiPgorICAgIDx2YWx1ZT5DaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxNyIgbmFtZT0ib3JnYW5pemF0aW9uIGNob29zZSBpbmZvIj4KKyAgICA8dmFsdWU+WW91ciBhY2NvdW50IGlzIGFzc2lnbmVkIHRvIG11bHRpcGxlIHVzZXJncm91cHMuIFBsZWFzZSBjaG9vc2Ugb25lIGZvciB0aGlzIHNlc3Npb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxOCIgbmFtZT0iZXJyb3IgbWVzc2FnZSByb29tIGZ1bGwiPgorICAgIDx2YWx1ZT5UaGlzIHJvb20gaXMgZnVsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTkiIG5hbWU9InJvb210eXBlcyI+CisgICAgPHZhbHVlPlJvb20gdHlwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjAiIG5hbWU9ImFwcG9pbnRlZF9yb29tIj4KKyAgICA8dmFsdWU+QXBwb2ludG1lbnQgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjEiIG5hbWU9InNlcnZlcnRpbWUiPgorICAgIDx2YWx1ZT5TZXJ2ZXIgdGltZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjIiIG5hbWU9Imludl9yZW1pbmRlcl90ZW1wbGF0ZV9oZWFkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIC0gcmVtaW5kZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIzIiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9mcm9tIj4KKyAgICA8dmFsdWU+TWVzc2FnZSBmcm9tIHVzZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNCIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfbWVzc2FnZSI+CisgICAgPHZhbHVlPk1lc3NhZ2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNSIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfY2xpY2tfdGV4dCI+CisgICAgPHZhbHVlPkNsaWNrIHRoaXMgbGluayB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgY29uZmVyZW5jZSBbVGhlIGxpbmsgZG9lcyBvbmx5IHdvcmsgMTUgbWludXRlcyBiZWZvcmUgdGhlIG1lZXRpbmcgc3RhcnRzLl06PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNiIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfY2xpY2tfdGV4dF9saW5rIj4KKyAgICA8dmFsdWU+Q2xpY2sgaGVyZSB0byBlbnRlciByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNyIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfY2xpY2tfdGV4dF9oZWxwIj4KKyAgICA8dmFsdWU+aWYgeW91IGhhdmUgcHJvYmxlbXMgd2l0aCB0aGUgbGluaywgcGxlYXNlIGNvcHkgYW5kIHBhc3RlIHRoaXMgdG8geW91ciBicm93c2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjgiIG5hbWU9ImJ0bl9zZWFyY2hfaW50ZXJuIj4KKyAgICA8dmFsdWU+c2VhcmNoIGludGVybjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjkiIG5hbWU9ImJ0bl9zZWFyY2hfZXh0ZXJuIj4KKyAgICA8dmFsdWU+QWRkIGV4dGVybmFsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzMCIgbmFtZT0ibGJsX3ByZW5hbWUiPgorICAgIDx2YWx1ZT5GaXJzdCBuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzMSIgbmFtZT0ibGJsX25hbWUiPgorICAgIDx2YWx1ZT5TdXJuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzMiIgbmFtZT0ibGJsX2VtYWlsIj4KKyAgICA8dmFsdWU+RW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMzIiBuYW1lPSJsb2dvdXRDb25maXJtX3RpdGxlIj4KKyAgICA8dmFsdWU+Q29uZmlybSBsb2dvdXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM0IiBuYW1lPSJsb2dvdXRDb25maXJtX3N1cmVfdG9fbG9nb3V0X3F1ZXN0aW9uIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGxvZ291dD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM1IiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT5BY3Rpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkRlbW8gcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EZW1vIHRpbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM4IiBuYW1lPSJtZWV0aW5nIFRpbWVyIj4KKyAgICA8dmFsdWU+TWVldGluZyB0aW1lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzkiIG5hbWU9Im1lZXRpbmcgVGltZXIiPgorICAgIDx2YWx1ZT5UaGlzIHJvb20gaXMgYSBkZW1vIHJvb20uIFlvdSB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgbG9nZ2VkIG9mZiBpbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQwIiBuYW1lPSJtZWV0aW5nIHJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5Nb2RlcmF0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQxIiBuYW1lPSJtb2RlcmF0ZWQgcm9vbSB3YWl0aW5nIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5QbGVhc2Ugd2FpdCB1bnRpbCB0aGUgbW9kZXJhdG9yIGhhcyBlbnRlcmVkIHRoZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MiIgbmFtZT0iZXJyb3IgcG9wdXAiPgorICAgIDx2YWx1ZT5PSzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDMiIG5hbWU9IndpbmRvdyBzY3JlZW5zaGFyaW5nIj4KKyAgICA8dmFsdWU+SW5jb21pbmcgc2NyZWVuIHNoYXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ0IiBuYW1lPSJ3aW5kb3cgc2NyZWVuIHNoYXJpbmciPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBhIG5ldyBzY3JlZW4gc2hhcmluZyBpbmNvbWluZyBmcm9tIHRoZSBVc2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDUiIG5hbWU9IndpbmRvdyBzY3JlZW4gc2hhcmluZyI+CisgICAgPHZhbHVlPlN0YXJ0IHNoYXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ2IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkFkZCBuZXcgbWVldGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDciIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+TWVldGluZyByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0OCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5FdmVudCByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0OSIgbmFtZT0ibWFpbiBtZW51IG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Nb2RlcmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1MCIgbmFtZT0ibWVudSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+TW9kZXJhdGUgdXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUxIiBuYW1lPSJtZW51IG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Nb2RlcmF0ZSByb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTIiIG5hbWU9Im1vZGVyYXRvciBvcmciPgorICAgIDx2YWx1ZT5NPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1MyIgbmFtZT0iY29uZmlybSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+RG8geW91IHdhbnQgdG8gY2hhbmdlIHRoaXMgdXNlciB0byBiZSBhIG1vZGVyYXRvciBvZiB0aGF0IG9yZ2FuaXNhdGlvbj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU0IiBuYW1lPSJlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+UGxlYXNlIGNob29zZSBhbiBvcmdhbmlzYXRpb24gYmVmb3JlIHlvdSB0cnkgdG8gYWRkIGEgdXNlciB0byBpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTUiIG5hbWU9ImNob29zZSB1c2VyIHdpbmRvdyI+CisgICAgPHZhbHVlPk9yZ2FuaXNhdGlvbiAtIG1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTYiIG5hbWU9Im1vZGVyYXRvciBvcmcgdXNlcnMiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgdXNlciBmcm9tIHRoZSBvcmdhbmlzYXRpb24/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1NyIgbmFtZT0ib3JnIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5UaGlzIHVzZXIgaXMgYSBtb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU4IiBuYW1lPSJvcmcgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPlRoaXMgdXNlciBpcyBub3QgYSBtb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU5IiBuYW1lPSJlcnJvciBtZXNzYWdlIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5EbyB5b3Ugbm90IHdhbnQgdGhpcyB1c2VyIHRvIGJlIGEgbW9kZXJhdG9yIG9mIHRoaXMgb3JnYW5pc2F0aW9uPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjAiIG5hbWU9Im1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5BZGQgb3IgZGVsZXRlIHVzZXJzIG9yIHJvb21zIHdpdGhpbiB5b3VyIG9yZ2FuaXNhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjEiIG5hbWU9ImRlbGV0ZSBjb25maXJtIHF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHJlY29yZD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYyIiBuYW1lPSJkZWxldGUgY29uZmlybSBxdWVzdGlvbiB1c2VyIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgdXNlciBmcm9tIHlvdXIgb3JnYW5pc2F0aW9uPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjMiIG5hbWU9ImVycm9yIG1lc3NhZ2Ugc2VsZiBkZWxldGluZyI+CisgICAgPHZhbHVlPllvdSBjYW5ub3QgZGVsZXRlIHlvdXIgb3duIHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY0IiBuYW1lPSJlcnJvciBtZXNzYWdlIGF1dGgiPgorICAgIDx2YWx1ZT5UaGlzIG1ldGhvZCBuZWVkcyBhbiBhZG1pbnN0cmF0aW9uIGFjY291bnQgdG8gYmUgaW52b2tlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjUiIG5hbWU9ImVycm9yIG1lc3NhZ2UgU09BUCI+CisgICAgPHZhbHVlPlRoZXJlIHdhcyBubyBzZXNzaW9uIGFzc29jaWF0ZWQgd2l0aCB0aGlzIElEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NiIgbmFtZT0iZXJyb3IgbWVzc2FnZSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+VGhpcyBpcyBhbiBhZG1pbmlzdHJhdG9yIG9yIG1vZGVyYXRvciBhY2NvdW50LiBZb3UgY2FuIG9ubHkgZWRpdCB0aGlzIGFjY291bnQgdGhyb3VnaCB0aGUgYWRtaW5pc3RyYXRpb24gcGFuZWwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NyIgbmFtZT0iZW1haWwgdmVyaWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+VG8gY29tcGxldGUgeW91ciByZWdpc3RyYXRpb24gcGxlYXNlIGNsaWNrIG9uIHRoZSBmb2xsb3dpbmcgbGluazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjgiIG5hbWU9ImVtYWlsIHZlcmlmaWNhdGlvbiI+CisgICAgPHZhbHVlPkNsaWNrIHRvIHZlcmlmeSB5b3VyIGVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2OSIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPk5vIHVzZXIgd2FzIGZvdW5kIGZvciB0aGlzIGhhc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjcwIiBuYW1lPSJlcnJvck1lc3NhZ2VfVXNlckFjdGl2YXRpb25TZXJ2bGV0IFtBY3RpdmF0ZVVzZXJdIj4KKyAgICA8dmFsdWU+VGhpcyB1c2VyIGlzIGFscmVhZHkgYWN0aXZhdGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3MSIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPllvdSBzdWNjZXNzZnVsbHkgYWN0aXZhdGVkIHlvdXIgYWNjb3VudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzIiIG5hbWU9ImVycm9yTWVzc2FnZV9Vc2VyQWN0aXZhdGlvblNlcnZsZXQgW0FjdGl2YXRlVXNlcl0iPgorICAgIDx2YWx1ZT5Mb2dpbiBub3c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjczIiBuYW1lPSJsb2dpbkVycm9yTWVzc2FnZSA9IHVzZXIgd2FzIG5vdCBhY3RpdmF0ZWQiPgorICAgIDx2YWx1ZT5Zb3VyIGFjY291bnQgaXMgbm90IGFjdGl2YXRlZC4gUGxlYXNlIHVzZSB0aGUgbGluayBpbiB0aGUgZW1haWwgeW91IHJlY2VpdmVkIGR1cmluZyByZWdpc3RyYXRpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3NCIgbmFtZT0icmVnaXN0ZXIgdmVyaWZpY2F0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Zb3UgaGF2ZSBzdWNjZXNzZnVsbHkgc2lnbmVkIHVwLiBBbiBlbWFpbCB3aXRoIGEgdmVyaWZpY2F0aW9uIGNvZGUgd2lsbCBiZSBzZW50IHRvIHlvdXIgbWFpbGJveC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc1IiBuYW1lPSJwYXJ0aWNpcGFudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5SZW1vdmUgbW9kZXJhdG9yIHJvbGUgZnJvbSB0aGlzIHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc2IiBuYW1lPSJwYXJ0aWNpcGFudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5HcmFudCBtb2RlcmF0b3IgcmlnaHRzIHRvIHRoaXMgdXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzciIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc4IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5BY2Nlc3MgdG8gd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzkiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPk1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODAiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlBsZWFzZSBjaG9vc2UgYW55IHVzZXIgb24gdGhlIGxpc3QgdG8gbWFrZSB0aGVtIGEgbW9kZXJhdG9yIG9yIHRvIGdyYW50IHRoZW0gYWNjZXNzIHRvIHRoZSB3aGl0ZWJvYXJkIG9yIHZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+VGhpcyB1c2VyIGlzIGFscmVhZHkgYSBtb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgyIiBuYW1lPSJldmVudCB1c2VyIGxpc3QgZXJyb3IiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IHJlbW92ZSB0aGUgbW9kZXJhdG9yIHJpZ2h0cyBmb3IgeW91cnNlbGY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgzIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5BbGxvdyB0aGlzIHVzZXIgdG8gcHVibGlzaCB0aGVpciBhdWRpby92aWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODQiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlJlbW92ZSBhdWRpby92aWRlbyBvZiB0aGlzIHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg1IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5JIGhhdmUgYSBxdWVzdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODYiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkkgd291bGQgbGlrZSB0byBkcmF3IG9uIHRoZSB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4NyIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+SSB3b3VsZCBsaWtlIHRvIHNoYXJlIG15IGF1ZGlvL3ZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4OCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+WW91IGFyZSB0aGUgbW9kZXJhdG9yIG9mIHRoaXMgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODkiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPllvdSBhcmUgYWxsb3dlZCB0byBkcmF3IG9uIHRoZSB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5MCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+WW91IGFyZSBhbGxvd2VkIHRvIHNoYXJlIHlvdXIgYXVkaW8vdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkxIiBuYW1lPSJlcnJvcnR5cGUiPgorICAgIDx2YWx1ZT5NZXNzYWdlIHRvIG1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTIiIG5hbWU9ImFwcGx5IGZvciBtb2QgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSB1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5MyIgbmFtZT0iYXBwbHkgZm9yIG1vZCBtZXNzYWdlIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0byBhc2sgYSBxdWVzdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTQiIG5hbWU9ImFwcGx5IGZvciB3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0byBkcmF3IG9uIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk1IiBuYW1lPSI2OTUiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIHNoYXJlIGhpcyBhdWRpby92aWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTYiIG5hbWU9Im1vZGVyYXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPllvdSBoYXZlIHRvIHdhaXQgdW50aWwgYSBtb2RlcmF0b3IgZW50ZXJzIHRoZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5NyIgbmFtZT0iY2FsZW5kYXIgYnV0dG9uIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5OCIgbmFtZT0iY2FsZW5kYXIgYnV0dG9uIj4KKyAgICA8dmFsdWU+U2F2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTkiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPkRheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDAiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPk1vbnRoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwMSIgbmFtZT0iY2FsZW5kYXIgY29tcG9uZW50Ij4KKyAgICA8dmFsdWU+WWVhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDIiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5VcGxvYWQgZmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDMiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5BZGQgZm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwNCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlJlZnJlc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA1IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+VHJhc2ggKGRyYWcgYW5kIGRyb3AgaXRlbSBoZXJlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDYiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5NeSBmaWxlcyAoaG9tZSBkcml2ZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA3IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+Um9vbSBmaWxlcyAocHVibGljIGRyaXZlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDgiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5BZGQgZmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDkiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5BZGQgZm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkRlbGV0ZSBmb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzExIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+RWRpdCBuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPk5ldyBmb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzEzIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIGl0ZW0/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxNCIgbmFtZT0idXNlciBhZG1pbiI+CisgICAgPHZhbHVlPlNlYXJjaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTUiIG5hbWU9InVzZXIgYWRtaW4iPgorICAgIDx2YWx1ZT5TZWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE2IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+T3BlbiBkb2N1bWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTciIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5TaG93IGFsbCBmaWxlcyAodHJlZSB2aWV3KTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTgiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5DbG9zZSBkb2N1bWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTkiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5EZWxldGUgZmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjAiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIG5vdCBhbGxvd2VkIHRvIGRyYXcgYW55dGhpbmcgb24gdGhlIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIxIiBuYW1lPSJwcm9wZXJ0eSBwYW5lbCI+CisgICAgPHZhbHVlPkRvY3VtZW50IHByb3BlcnRpZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIyIiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5TdGFydCBKYXZhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyMyIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+U3RhcnQgRmxhc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI0IiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5BIHVzZXIgd2FudHMgdG8gc2hhcmUgdGhlaXIgc2NyZWVuLiBEbyB5b3Ugd2FudCB0byBzZWUgaXQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNSIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+WW91IGFyZSBjdXJyZW50bHkgc2hhcmluZyB5b3VyIGRlc2t0b3A8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI2IiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5TaGFyaW5nIHNlc3Npb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI3IiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGFscmVhZHkgc2hhcmluZyB5b3VyIGRlc2t0b3A8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI4IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkRlc2t0b3Agdmlld2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyOSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdG9wIHNoYXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMwIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkRlc2t0b3Agc2hhcmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5DbGljayBTdGFydCB0byBwdWJsaXNoIHlvdXIgc2NyZWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdGFydCBzaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5QYXVzZSBzaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TZWxlY3QgeW91ciBzY3JlZW4gYXJlYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM1IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkNoYW5nZSB3aWR0aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzYiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+VGhlIHNoYXJlciBoYXMgZmluaXNoZWQgdGhpcyBzZXNzaW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5DaGFuZ2UgaGVpZ2h0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczOCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5YLU9mZnNldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzkiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+WS1PZmZzZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQwIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPldpZHRoOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDEiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+SGVpZ2h0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDIiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+Q29ubmVjdGlvbiB3YXMgY2xvc2VkIGJ5IHNlcnZlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDMiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NCIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5TdGFydCBKYXZhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NSIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5JZiB5b3UgY2xvc2UgdGhpcyBzZXNzaW9uIGNvbXBsZXRlbHkgeW91IHdpbGwgbm90IGJlIGFibGUgdG8gcmVzdGFydCB0aGUgdmlld2VyIGZvciB0aGlzIHNlc3Npb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ2IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPkNvbmZpcm0gY2xvc2luZyB2aWV3ZXIgc2Vzc2lvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDciIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+U2hhcmUgc2NyZWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0OCIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5SZWNvcmQgc2Vzc2lvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDkiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5Dby1Ccm93c2luZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTAiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5QbGVhc2UgdXNlIEludGVybmV0IEV4cGxvcmVyIGFuZCBub3QgRmlyZWZveCBmb3IgV2luZG93czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTEiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5QcmV2aW91czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTIiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5OZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MyIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPlJlbG9hZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTQiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5Ib21lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1NSIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPkxvYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU2IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+QWRkIHRoaXMgd2Vic2l0ZSBhcyB0aGUgZGVmYXVsdCB3ZWJzaXRlIHRvIHlvdXIgcHJvZmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTciIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5UZXN0IHNldHVwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1OCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlVzZSBhdWRpbyBvciB2aWRlbyBzZXR1cCBiZWZvcmUgeW91IGVudGVyIGEgcm9vbSBieSByZWNvcmRpbmcgZm9yIGEgZmV3IHNlY29uZHMuIFlvdSBjYW4gdGhlbiByZXBsYXkgeW91ciByZWNvcmRpbmcgdG8gY2hlY2sgeW91ciB2b2ljZSBhbmQgcGljdHVyZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU5IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+RG9uJ3Qgc2hvdyB0aGlzIHRlc3QgYW55bW9yZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjAiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYxIiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+U3RhcnQgY29uZmVyZW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjIiIG5hbWU9ImVkaXQgdmlkZW8gc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5EbyBub3QgYXNrIGFnYWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MyIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlJFQzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjQiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5QTEFZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NSIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPllvdSBtYXkgcHJvY2VlZCB3aXRob3V0IHRlc3RpbmcgaWYgeW91IGRvIG5vdCBwbGFuIHRvIHB1Ymxpc2ggeW91ciB2b2ljZSBvciBwaWN0dXJlLiBQYXJ0aWNpcGFudHMgd2l0aG91dCBhdWRpbyBvciB2aWRlbyBjYW4gc3RpbGwgdXNlIHRoZSB3aGl0ZWJvYXJkLCBzaGFyZSB0aGVpciBkZXNrdG9wIG9yIHdyaXRlIGNoYXQgbWVzc2FnZXMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NiIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlNUT1A8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY3IiBuYW1lPSI3NjciPgorICAgIDx2YWx1ZT5MZXZlbC1tZXRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjgiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5QcmVzcyBzdGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjkiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5TdGFydCBjb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MCIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPlN0YXJ0IGV2ZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MSIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPkNob29zZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MiIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPkNoZWNrIHNldHVwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MyIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPlN0YXJ0IGNvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc0IiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+SG93IHRvIGNvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc1IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+U3RhcnQgcmVjb3JkaW5nIHRlc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc2IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+RG8gbm90IHNob3cgYXVkaW8vdmlkZW8gdGVzdCBiZWZvcmUgZW50ZXJpbmcgYSBjb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NyIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPlB1YmxpYyByb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzgiIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT5QdWJsaWMgcm9vbXMgYXJlIGFjY2Vzc2libGUgZm9yIGFsbCB1c2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzkiIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT5Qcml2YXRlIHJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MCIgbmFtZT0iUHJpdmF0ZSBSb29tcyI+CisgICAgPHZhbHVlPlByaXZhdGUgcm9vbXMgYXJlIG9ubHkgYWNjZXNzaWJsZSBmb3IgdXNlcnMgb2YgdGhlIHNhbWUgdXNlcmdyb3VwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MSIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPk15IHJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MiIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPlJvb21zIGluIHRoaXMgc2VjdGlvbiBhcmUgY3JlYXRlZCBmb3IgcGVyc29uYWwgdXNhZ2UuIFRoZXJlIGFyZSBzb21lIHN0YW5kYXJkIHJvb21zIHBsdXMgdGhlIG9uZXMgdGhhdCBhcmUgY3JlYXRlZCB0aHJvdWdoIHRoZSBjYWxlbmRhciBhbmQgaGF2ZSBhIHN0YXJ0IGFuZCBhbiBlbmQgZGF0ZS4gVGhlIHJvb21zIGNyZWF0ZWQgdmlhIHRoZSBjYWxlbmRhciBhcmUgb25seSBsaXN0ZWQgaW4gdGhpcyBzZWN0aW9uIGFzIGxvbmcgYXMgdGhleSBhcmUgdmFsaWQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MyIgbmFtZT0icmVzdHJpY3RlZCByb29tIj4KKyAgICA8dmFsdWU+WW91IGhhdmUgdG8gYmUgbW9kZXJhdG9yIHRvIGRvIHRoaXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg0IiBuYW1lPSJtZW51IG9wdGlvbiI+CisgICAgPHZhbHVlPkFwcGx5IHRvIGJlIG1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODUiIG5hbWU9Im1lbnUgb3B0aW9uIj4KKyAgICA8dmFsdWU+QXBwbHkgZm9yIHdoaXRlYm9hcmQgYWNjZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NiIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT5BcHBseSBmb3IgYXVkaW8vdmlkZW8gYWNjZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NyIgbmFtZT0iZXJyb3IgbWVzc2FnZSBzb2FwIHNlY3VyZSBsb2dpbiI+CisgICAgPHZhbHVlPlRoaXMgc2Vzc2lvbiBoYXNoIGhhcyBhbHJlYWR5IGJlZW4gdXNlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODgiIG5hbWU9ImRhc2hib2FyZCBidXR0b24iPgorICAgIDx2YWx1ZT5TVEFSVDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODkiIG5hbWU9ImV4aXQgY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPkVYSVQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkwIiBuYW1lPSJjb25mZXJlbmNlIHZpZXciPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZXhpdD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkxIiBuYW1lPSJjb25mZXJlbmNlIHZpZXciPgorICAgIDx2YWx1ZT5FeGl0IGNvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkyIiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT5Sb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTMiIG5hbWU9Im1haW4gbWVudSI+CisgICAgPHZhbHVlPkNob29zZSBhIHJvb20gZm9yIGEgbWVldGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTQiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgYW4gdW5zYXZlZCBldmVudCBpbiB0aGUgIkV2ZW50IGRldGFpbHMiIG9uIHRoZSByaWdodC4gUGxlYXNlIHNhdmUsIHJlbW92ZSBvciBjYW5jZWwgYW5kIGVkaXQgdGhlIGRldGFpbHMgYmVmb3JlIGFkZGluZyBhbm90aGVyIGV2ZW50LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTUiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+UGxlYXNlIGFkZCBhdCBsZWFzdCBvbmUgYXR0ZW5kZWUgZm9yIHlvdXIgbWVldGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTYiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGV2ZW50PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTciIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+V2FybmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTgiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QWRkIGV2ZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5OSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5EYXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAwIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPldlZWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAxIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPk1vbnRoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMiIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5EZXNjcmlwdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDMiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QXR0ZW5kZWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FLCB5b3VyIHdlYiBjb25mZXJlbmNpbmcgcGxhdGZvcm0uIFlvdSBjYW4gZWl0aGVyIGZvbGxvdyB0aGUgMS0yLTMgc3RlcHMgdG8gZW50ZXIgYSBjb25mZXJlbmNlIHJvb20gZGlyZWN0bHkgb3IgeW91IGNob29zZSB0aGUgQ2FsZW5kYXIgdG8gc2V0IHVwIGFuZCBwbGFuIGEgbWVldGluZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA1IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5QbGFuIGEgbWVldGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDYiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5UbyBzZXR1cCBhIGNvbmZlcmVuY2UgeW91IGNhbiBhZGQgYSBuZXcgZXZlbnQgaW4gdGhlIGNhbGVuZGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNyIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPk5lZWQgaGVscD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA4IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+UmVzdHJpY3RlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDkiIG5hbWU9Imx6Y2FsZW5kZXIiPgorICAgIDx2YWx1ZT5TZWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEwIiBuYW1lPSJsemNhbGVuZGVyIj4KKyAgICA8dmFsdWU+QWRkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMSIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIHVzZXIgc2VsZWN0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEyIiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QWRkIGF0dGVuZGVlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMyIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlNhdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE0IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RGVsZXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxNSIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPkV2ZW50IGRldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE2IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RGVmYXVsdCBtb2RlcmF0b3JzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxNyIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPlN1cGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxOCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPklEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxOSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIwIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIxIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+QWRkIG5ldyBkZWZhdWx0IG1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjIiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5JcyBzdXBlciBtb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIzIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+SWYgdGhlIHJvb20gaXMgbW9kZXJhdGVkLCBhbnkgdXNlcnMgd2l0aCBhIG1vZGVyYXRvciBvciBhZG1pbmlzdHJhdG9yIGxldmVsIGFjY2VzcyBhcmUgYXV0b21hdGljYWxseSBzZXQgdG8gbW9kZXJhdG9yIHdoZW4gdGhleSBlbnRlciB0aGUgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjQiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5BIHN1cGVyIG1vZGVyYXRvciBpcyBhbHdheXMgYSBtb2RlcmF0b3Igd2hlbiB0aGV5IGVudGVyIGEgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjUiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5NYWtlIHVzZXIgYSBzdXBlciBtb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI2IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+UmVtb3ZlIHN1cGVyIG1vZGVyYXRvciBmcm9tIHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjgiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5JZiB5b3UgYWRkIGFuIHVzZXJncm91cCB0byB0aGUgcm9vbSBvbmx5IHVzZXJzIG9mIHRoYXQgdXNlcmdyb3VwIGhhdmUgYWNjZXNzIHRvIGl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyOSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPk1vZGVyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODMwIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+TGltaXRhdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODMxIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+VXNlcmdyb3VwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzMiIgbmFtZT0iY29uZmlybSBhY3Rpb24iPgorICAgIDx2YWx1ZT5BcmUgeW91IHN1cmU/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzMyIgbmFtZT0iY29uZmlybSBkZWxldGUiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgaXRlbT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM0IiBuYW1lPSJ1c2VyIGNob29zZSBlcnJvciI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIHVzZXIgc2VsZWN0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM1IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+QWRkIG5ldyBkZWZhdWx0IG1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzYiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EbyB5b3Ugd2FudCB0byBhZGQgdGhlIHN1cGVyIG1vZGVyYXRpb24gZmxhZyBmb3IgdGhpcyB1c2VyPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EbyB5b3Ugd2FudCB0byByZW1vdmUgdGhlIHN1cGVyIG1vZGVyYXRpb24gZmxhZyBmb3IgdGhpcyB1c2VyPyBZb3UgbmVlZCB0byBzYXZlIHRoZSByb29tIG9iamVjdCB0byBzYXZlIHRoZXNlIHNldHRpbmdzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzgiIG5hbWU9InN1cGVyIG1vZGVyYXRvciI+CisgICAgPHZhbHVlPlRoaXMgdXNlciBpcyBhIHN1cGVyIG1vZGVyYXRvci4gWW91IGNhbm5vdCByZW1vdmUgdGhlIG1vZGVyYXRpb24gZmxhZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM5IiBuYW1lPSJjb25maXJtIGRlbGV0ZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBmaWxlL2ZvbGRlcj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQwIiBuYW1lPSJjb25maXJtIGRlbGV0ZSI+CisgICAgPHZhbHVlPkRlbGV0ZSBmaWxlL2ZvbGRlcj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQxIiBuYW1lPSJzYWx1dGF0aW9uIj4KKyAgICA8dmFsdWU+TXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0MiIgbmFtZT0ic2FsdXRhdGlvbiI+CisgICAgPHZhbHVlPkRyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0MyIgbmFtZT0icHJvcGVydHkgcGFuZWwgd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPlByb3BlcnRpZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ0IiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+U2hvdyBtb3VzZSBwb3NpdGlvbiB0byB2aWV3ZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NSIgbmFtZT0icHVibGlzaCBvcHRpb24iPgorICAgIDx2YWx1ZT5TaGFyZSBhdWRpbyB3aXRoIFNJUCBhcHBsZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ2IiBuYW1lPSJwdWJsaXNoIG9wdGlvbiI+CisgICAgPHZhbHVlPlNoYXJlIGF1ZGlvIHdpdGggU0lQIGFuZCB2aWRlbyB3aXRoIEZsYXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NyIgbmFtZT0iZG9jdW1lbnQgcGFuZWwiPgorICAgIDx2YWx1ZT5GdWxsLUZpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDgiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlZpZXcgc2NyZWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0OSIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+VGhlIHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUwIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT53YW50cyB0byBzaGFyZSB0aGVpciBzY3JlZW4uIERvIHlvdSB3YW50IHRvIHNlZSBpdD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUxIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5DbG9zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTIiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5ab29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MyIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPlRoZSBTZXNzaW9uIHdhcyBjbG9zZWQgYnkgdGhlIHNoYXJpbmcgdXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTQiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5QYXVzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTUiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5OZXcgc2NyZWVuIHNoYXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU2IiBuYW1lPSJwcmVzZW50ZXIgbWluaSBpY29uIj4KKyAgICA8dmFsdWU+TWluaW1pemU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU3IiBuYW1lPSJwcmVzZW50ZXIgbWluaSBpY29uIj4KKyAgICA8dmFsdWU+TWF4aW1pemU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU4IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5WaWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTkiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlJlY29yZGluZyB0aW1lbGluZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjAiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk15IHJlY29yZGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYxIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5QdWJsaWMgcmVjb3JkaW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjIiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkluZm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYzIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TGVuZ3RoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RGF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjYiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RG93bmxvYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY4IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5NYWluIC0gdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY5IiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5SZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcwIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Zb3UgbWF5IHJlY29yZCBhbmQgc2hhcmUgeW91ciBzY3JlZW4gYXQgdGhlIHNhbWUgdGltZS4gVG8gZW5hYmxlIG90aGVycyB0byBzZWUgeW91ciBzY3JlZW4ganVzdCBoaXQgdGhlIHN0YXJ0IGJ1dHRvbiBvbiB0aGUgdG9wLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzEiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlN0YXJ0IHJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzIiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlN0b3AgcmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3MyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RG93bmxvYWQgYXMgRkxWPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3NCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+Um9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzUiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlBsYXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TdG9wPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3NyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+VXNlciBoYXMgbWljcm9waG9uZSBvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+Q2xvc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc5IiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPkFsbG93IHVzZXIgcXVlc3Rpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MCIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5UdXJuIHRoaXMgb2ZmIHRvIHByZXZlbnQgYW55IHVzZXIgZnJvbSBkaXN0dXJiaW5nIHlvdSBpbiB0aGlzIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgxIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPlJpZ2h0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODIiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkRvd25sb2FkIGFzIEFWSTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODMiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkZMVjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODQiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkFWSTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODUiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlJhdyBzY3JlZW4gdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5BdWRpbyBvbmx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+VGhlIGhhdmUgYmVlbiBlcnJvcnMgd2hpbGUgcHJvY2Vzc2luZyB0aGUgcmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4OCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+VGhlIHJlY29yZGluZyBpcyBub3QgeWV0IHJlYWR5IGZvciB3YXRjaGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODkiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkxvZzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkwIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5SZWNvcmRlciBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+T0s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkyIiBuYW1lPSJzaXAgYXBwbGV0Ij4KKyAgICA8dmFsdWU+U0lQIGFwcGxldCBpcyBub3QgcmVhZHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkzIiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+U0lQIGFjY291bnQgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk0IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+U0lQIHNldHRpbmdzIGZvciBlYWNoIHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk1IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+U0lQIHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk2IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+U0lQIHBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NyIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNJUCBhdXRoIElEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5OCIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIGxvZ2luIHRvIHRoZSBTSVAgZ2F0ZXdheSBoYXMgZmFpbGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5OSIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIGxvZ2luIHRvIHRoZSBTSVAgZ2F0ZXdheSBoYXMgZmFpbGVkLiBDb250YWN0IHRoZSBhZG1pbmlzdHJhdG9yLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDAiIG5hbWU9InNpcCBzdGF0dXMgbWVzc2FnZSI+CisgICAgPHZhbHVlPkxvZ2dpbmcgb250byB0aGUgU0lQIGdhdGV3YXkuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAxIiBuYW1lPSJzaXAgc3RhdHVzIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Mb2dnaW5nIG9udG8gdGhlIFNJUCBnYXRld2F5Li4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwMiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+U2hvdyBsb2c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAzIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Mb2cgbWVzc2FnZXMgZnJvbSBwb3N0IHJlY29yZGVyIHByb2Nlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA0IiBuYW1lPSJzaXAgbG9naW4iPgorICAgIDx2YWx1ZT5TSVAgYXBwbGV0IG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA1IiBuYW1lPSJzaXAgbG9naW4iPgorICAgIDx2YWx1ZT5UaGUgU0lQIGFwcGxldCBpcyBub3QgcmVhZHkuIEFjY2VwdCB0aGUgYXBwbGV0IGFuZCBjbGljayBPSzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDYiIG5hbWU9Im1vZGVyYXRvciBwb3AgdXAiPgorICAgIDx2YWx1ZT5HZXQgbW9kZXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDciIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5TYXZlIGFwcG9pbnRtZW50IGNoYW5nZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA4IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhlIGFwcG9pbnRtZW50IGhhcyBiZWVuIGNoYW5nZWQuIERvIHlvdSB3YW50IHRvIHNhdmUgdGhlc2UgY2hhbmdlcz88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA5IiBuYW1lPSJmbHYgcmVjb3JkZXIgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRvIGFjY2VzcyBvdGhlciByZWNvcmRpbmdzIHlvdSBoYXZlIHRvIGxvZ2luIHRvIHRoZSAkQVBQX05BTUUgYXBwbGljYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTEwIiBuYW1lPSJpbnRlcnZpZXcgdmlkZW8gcG9kIj4KKyAgICA8dmFsdWU+Q2hvb3NlIHRoZSB1c2VyIGZvciB0aGlzIHZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMSIgbmFtZT0iaW50ZXJ2aWV3IHZpZGVvIGNob29zZSB1c2VyIj4KKyAgICA8dmFsdWU+QXZhaWxhYmxlIHVzZXJzIGZvciB0aGlzIHBvZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTIiIG5hbWU9ImludGVydmlldyBpbmZvIj4KKyAgICA8dmFsdWU+WW91IGFyZSBhIG1vZGVyYXRvciBpbiB0aGlzIGludGVydmlldy4gWW91IGNhbiBkZWNpZGUgd2hvIGlzIHNwZWFraW5nIGluIHRoaXMgaW50ZXJ2aWV3IGFuZCB5b3UgY2FuIHN0YXJ0L3N0b3AgdGhlIHJlY29yZGluZyBvZiB0aGUgc2Vzc2lvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTEzIiBuYW1lPSJpbnRlcnZpZXcgYnV0dG9uIHJlY29yZGluZyI+CisgICAgPHZhbHVlPlN0YXJ0IHJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTQiIG5hbWU9ImludGVydmlldyBidXR0b24gcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+U3RvcCByZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE1IiBuYW1lPSJpbnRlcnZpZXcgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSByZWNvcmRpbmcgb2YgdGhlIEludGVydmlldyBpcyBhbHJlYWR5IHN0YXJ0ZWQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxNiIgbmFtZT0iaW50ZXJ2aWV3IGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgcmVjb3JkaW5nIGlzIGFscmVhZHkgc3RvcHBlZCBvciBub3QgYmVlbiBzdGFydGVkIHlldC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE3IiBuYW1lPSJpbnRlcnZpZXcgcmVjb3JkaW5nIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgcmVjb3JkaW5nIGZvciB0aGlzIGludGVydmlldyBpcyBhbHJlYWR5IHN0YXJ0ZWQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxOCIgbmFtZT0iaW50ZXJ2aWV3IGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE5IiBuYW1lPSJpbnRlcnZpZXcgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSBwb3N0LXByb2Nlc3Npbmcgb2YgYW4gaW50ZXJ2aWV3IHRha2VzIDUgbWludXRlcyBwZXIgMSBtaW51dGUgaW50ZXJ2aWV3LiBUaGUgY3VycmVudCBwcm9ncmVzcyBvZiB0aGUgaW50ZXJ2aWV3IHBvc3QtcHJvY2Vzc2luZyB0cmFuc2NvZGluZyBpczo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIwIiBuYW1lPSJzaXAgY3JlYXRpb24iPgorICAgIDx2YWx1ZT5Zb3UgaGF2ZSB0byBlbnRlciB5b3VyIHBhc3N3b3JkIGFnYWluIHRvIGF1dG8gY3JlYXRlIHRoZSBTSVAgZGF0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjEiIG5hbWU9InNpcCBjcmVhdGlvbiI+CisgICAgPHZhbHVlPlJlLWdlbmVyYXRlIFNJUCBkYXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyMiIgbmFtZT0iZmlsZWV4cGxvcmVyIj4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBtb3ZlIHRoaXMgZmlsZSBvciBmb2xkZXIgaW50byBpdHMgb3duIHN1YiBmb2xkZXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyMyIgbmFtZT0iZmlsZSBleHBsb3JlciAiPgorICAgIDx2YWx1ZT5Ib21lIGRyaXZlIHNpemU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI0IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+UHVibGljIGRyaXZlIHNpemU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI1IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+TGljZW5zZSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjYiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5Zb3UgY2FuIGVpdGhlciBiaW5kIHRoZSB1c2VyIHRvIGEgZXhwaXJlIGRhdGUgb3IgdG8gYSBtYXhpbXVtIG51bWJlciBvZiBtaW51dGVzIHdoZW4geW91IGVuYWJsZSBsaWNlbnNpbmcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNyIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPkNoZWNrIGxpY2Vuc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI4IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+RmxhdHJhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI5IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+RXhwaXJlIGRhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMwIiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+U2Vjb25kcyBsZWZ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMSIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPlRvdGFsIHRpbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMyIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3VyIGxpY2Vuc2UgaGFzIGV4cGlyZWQuIFlvdSBuZWVkIHRvIGJ1eSBuZXcgbWludXRlcyAoUGF5LXBlci1taW51dGUpIG9yIGEgdm9sdW1lIGZsYXRyYXRlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzMiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkNsaWNrIGFuZCBidXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM0IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5UaW1lIGxlZnQgb24geW91ciBhY2NvdW50OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzUiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlVzZXIgbGljZW5zZSBJbmZvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzNiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+SW5mbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzciIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkNsb3NlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzOCIgbmFtZT0ibGljZW5zZS1pbmZvIj4KKyAgICA8dmFsdWU+WW91ciBsaWNlbnNlIGhhcyBleHBpcmVkLiBZb3UgbmVlZCBlaXRoZXIgdG8gYnV5IGEgbWludXRlIHBhY2thZ2UgKFBheS1wZXItbWludXRlKSBvciBhIHZvbHVtZSBmbGF0cmF0ZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM5IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5MaWNlbnNlIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91IGNhbiBlaXRoZXIgYnV5IG1pbnV0ZXMgdG8gbWFrZSB3ZWItY29uZmVyZW5jaW5nIChQYXktcGVyLW1pbnV0ZSkuJmx0O2JyLyZndDsmbHQ7YnIvJmd0OyBPciB5b3UgYnV5IGEgdm9sdW1lIGZsYXRyYXRlIGFib3V0IDMtMTIgbW9udGhzLiZsdDtici8mZ3Q7Jmx0O2JyLyZndDtTZW5kaW5nIGludml0YXRpb25zIChkaXJlY3QgbGlua3MgaW50byBjb25mZXJlbmNlIHJvb21zKSBvciBjcmVhdGluZyBjb25mZXJlbmNlIHJvb21zIHZpYSB0aGUgY2FsZW5kYXIgd2l0aCBleHRlcm5hbCB1c2VycyBpcyBvbmx5IGFsbG93ZWQgd2l0aCBhIHZvbHVtZSBmbGF0cmF0ZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQxIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5CdXkgNjAgTWludXRlcyA5LDk5IEVVUk8gKDE2IENlbnQgcGVyIG1pbnV0ZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQyIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5CdXkgNSBob3VycyAxOSw5OSBFVVJPICg2IENlbnQgcGVyIG1pbnV0ZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQzIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5CdXkgMyBtb250aCBmb3IgMjksOTkgRVVSTyAoOSw5OSBFdXJvIHBlciBtb250aCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ0IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5CdXkgNiBtb250aCBmb3IgMzksOTkgRVVSTyAoNiw2NiBFdXJvIHBlciBtb250aCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ1IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5QYXktcGVyLW1pbnV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDYiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlZvbHVtZSBmbGF0cmF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDciIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdSBoYXZlIHVubGltaXRlZCBsaWNlbnNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0OCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91ciBsaWNlbnNlIHdpbGwgZXhwaXJlIGF0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDkiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdSBib3VnaHQgUGF5LXBlci1taW51dGUuIFlvdSBzdGlsbCBoYXZlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTAiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSBuZXcgY3JlZGl0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTEiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPldhbnQgeW91ciBvd24gc2VydmVyPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTIiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdSB3b3VsZCBsaWtlIHRvIGhhdmUgJEFQUF9OQU1FIGluc3RhbGxlZCBvbiB5b3VyIFNlcnZlciBvciBpbnRlZ3JhdGVkIGludG8geW91ciBNb29kbGUsIFN1Z2FyQ1JNLCBXZWJzaXRlIG9yIEludHJhbmV0PyBQcml6aW5ncyBzdGFydCBhdCA1MDAgRXVybyBwZXIgaW5zdGFsbGF0aW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTMiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPk9yIHNlbmQgdXMgYSBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1NCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QW5zd2VyIHRvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTUiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPk1lc3NhZ2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1NiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+U2VuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTciIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkNsaWNrIGhlcmUgdG8gZ2V0IGNvbnRhY3QgaW5mbyBhbmQgcHJpemluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU4IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DcmVkaXQgQ2FyZCBkZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1OSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Rmlyc3RuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2MCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+TGFzdG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYxIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DcmVkaXQgQ2FyZCBUeXBlYzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjIiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlZJU0EgQ2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjMiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPk1hc3RlckNhcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY0IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5EaXNjb3ZlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjUiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkFtZXJpY2FuIEV4cHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY2IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DcmVkaXQgQ2FyZCBOdW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY3IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5FeHBpcmF0aW9uIERhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY4IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DYXJkIFZlcmlmaWNhdGlvbiBOdW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY5IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5CaWxsaW5nIGFkZHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTcwIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5BZGRyZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q2l0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzMiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNvdW50cnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc0IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdGF0ZSAob25seSBVUyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc1IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5aSVA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc2IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5BbW91bnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc3IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdWJtaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc4IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdGVwIDE6ICRBUFBfTkFNRSAtIFBheW1lbnQgZm9ybTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzkiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkVNYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q2xpY2sgIkNoZWNrIG91dCB3aXRoIFBheXBhbCIgdG8gcGF5LiZsdDtici8mZ3Q7IFBheXBhbCBhY2NlcHRzIFZJU0EsIE1hc3RlckNhcmQsIERpc2NvdmVyIG9yIEFtZXJpY2FuIEV4cHJlc3MuICZsdDtici8mZ3Q7SXQgZG9lcyBub3QgcmVxdWlyZSB0byBzaWduIHVwIHdpdGggUGF5cGFsLiAmbHQ7YnIvJmd0O0NpdGl6ZW5zIGZyb20gR2VybWFueSBjYW4gYWxzbyBwYXkgd2l0aCBkaXJlY3QgZGViaXQgKHdpdGggTGFzdHNjaHJpZnQtRWluenVnKS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgxIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5UaGFuayB5b3UgZm9yIGJ1eWluZyAkQVBQX05BTUUuICZsdDtici8mZ3Q7ICZsdDtici8mZ3Q7IEFzIHNvb24gYXMgd2UgcmVjZWl2ZWQgdGhlIHBheW1lbnQgeW91ciBhY2NvdW50IHdpbGwgYmUgdXBkYXRlZC4mbHQ7YnIvJmd0OyBZb3Ugd2lsbCByZWNlaXZlIGFuIEVNYWlsIHdpdGggeW91ciBpbnZvaWNlIGFzIFBERi4mbHQ7YnIvJmd0O1lvdSBjYW4gYWxzbyBjaGVjayBjdXJyZW50IGFuZCBwYXN0IHRyYW5zYWN0aW9ucyBpbiB5b3VyIHByb2ZpbGUgc2V0dGluZ3MuJmx0O2JyLyZndDsmbHQ7YnIvJmd0OyZsdDtici8mZ3Q7WW91IGNhbiBjbG9zZSB0aGlzIGJyb3dzZXIgd2luZG93L3RhYiBub3cgYW5kIHJldHVybiB0byAkQVBQX05BTUUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U3VibWl0IGFuZCBidXkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MyIgbmFtZT0icGF5bWVudC1mcm9tIj4KKyAgICA8dmFsdWU+Q2xpY2sgYW5kIGJ1eS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg0IiBuYW1lPSJwYXltZW50LWZyb20iPgorICAgIDx2YWx1ZT5TdGVwIDM6ICRBUFBfTkFNRSBQYXltZW50IC0gQ2hlY2sgb3JkZXIgYW5kIGJ1eS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg1IiBuYW1lPSJwYXltZW50LWZyb20iPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4NiIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+UGF5bWVudCByZWNlaXZlZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg3IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5IaSw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg4IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5XZSBoYXZlIHJlY2VpdmVkIHlvdXIgcGF5bWVudC4gWW91ciB1c2VyIHByb2ZpbGUgaXMgdXBkYXRlZCBub3cuIFNlZSBhdHRhY2hlZCB5b3VyIGludm9pY2UuIFRoZSBpbnZvaWNlIGFuZCBhbGwgcGFzdCBJbnZvaWNlIGNhbiBhbHNvIGJlIGRvd25sb2FkZWQgaW4geW91ciB1c2VyIHByb2ZpbGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4OSIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+VGhhbmsgeW91IGZvciB1c2luZyAkQVBQX05BTUUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MCIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+UGF5bWVudCByZWNlaXZlZCAkQVBQX05BTUUgLTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTEiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5QYXltZW50IGFuZCB0cmFuc2FjdGlvbiBzdGF0dXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkyIiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+VHJhbnNjYXRpb24gaGFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTMiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NaW51dGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NCIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPk1vbnRoczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTUiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5FVVI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk2IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+U3RhdHVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NyIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPkludm9pY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk4IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5OSIgbmFtZT0iZXJyb3ItbGljZW5zZS1mbGF0Ij4KKyAgICA8dmFsdWU+WW91IG5lZWQgdG8gYnV5IGEgdm9sdW1lIGZsYXRyYXRlIHRvIGJlIGFibGUgdG8gc2VuZCBpbnZpdGF0aW9ucyBvciBjcmVhdGUgbWVldGluZ3MgdmlhIHRoZSBjYWxlbmRhci4gV2l0aCBQYXktcGVyLW1pbnV0ZSBpdCBpcyBvbmx5IHBvc3NpYmxlIGZvciB5b3UgdG8gYWNjZXNzICRBUFBfTkFNRS4gWW91IGNhbm5vdCBhbGxvdyAzdGggcGFydGllcyB0byBhY2Nlc3MgYSBtZWV0aW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAwIiBuYW1lPSJlcnJvciB1c2VyIj4KKyAgICA8dmFsdWU+VGhpcyBlbWFpbCBpcyBhbHJlYWR5IHVzZWQgYnkgYW5vdGhlciB1c2VyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAxIiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+U0lQLVNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDIiIG5hbWU9InJvb20tYWRtaW4iPgorICAgIDx2YWx1ZT5UaGUgY29uZmVyZW5jZSBudW1iZXIgYW5kIFBJTiBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgdmlhIHRoZSBPcGVuWEcgUlBDLUdhdGV3YXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwMyIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlNJUCBudW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNCIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlBJTjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA1IiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+Q2xlYXIgb2JqZWN0cyBvbiBjdXJyZW50IHNsaWRlIG9ubHkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDYiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5Pbmx5IHRoZSBVUkwgZW50ZXJlZCBpbiB0aGUgc3RhdHVzIGJhciBpcyBzZW5kIHRvIHBhcnRpY2lwYW50cy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk1ha2UgdGVhbSByb29tcyBbYnJlYWtvdXQgc2Vzc2lvbl08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNob29zZSB1c2VycyBmb3IgYSBuZXcgdGVhbS1yb29tLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+WW91IGNhbiBjaG9vc2UgdXNlcnMgaGVyZSBhbmQgY3JlYXRlIGEgbmV3IGNvbmZlcmVuY2Ugcm9vbSAoIlRlYW0gcm9vbSIpIGZvciB0aGVtLiBUaGUgY2hvc2VuIHVzZXJzIHdpbGwgYXV0b21hdGljYWxseSBzd2l0Y2ggdG8gdGhlIG5ldyB0ZWFtLXJvb20gb3IgZ2V0IGEgbm90aWZpY2F0aW9uLiBUZWFtIHJvb20gbW9kZXJhdG9ycyB3aWxsIGdldCBhZGRpdGlvbmFsbHkgYSBsaXN0IG9mIGN1cnJlbnQgcm9vbXMgc28gdGhhdCB0aGV5IGNhbiBzd2l0Y2ggdG8gZWFjaCByb29tIGlmIHRoZXJlIGFyZSBpcyBuZWVkIGZvciBhIG1vZGVyYXRvci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXIgbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDExIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VXNlcnMgZm9yIHRoZSBuZXcgdGVhbSByb29tOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q3JlYXRlIHRlYW0gcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DaG9vc2UgYXQgbGVhc3Qgb25lIHVzZXIgZm9yIHRoZSB0ZWFtIHJvb20uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5BZGQgdXNlciB0byB0ZWFtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5SZW1vdmUgdXNlciBmcm9tIHRlYW0gcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VXNlciBpcyB0ZWFtIHJvb20gbW9kZXJhdG9yIChIZSBpcyBhYmxlIHRvIG1hbmFnZSB0ZWFtIHJvb21zIGFuZCB1c2VycyBvZiB0aGUgdGVhbSByb29tIGNhbiBhc2sgaGltIHRvIGNvbWUgaW5zaWRlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Um9vbSB0eXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5JZiB5b3UgY2hlY2sgIkZvcmNlIHVzZXIgdG8gc3dpdGNoIHRvIG5ldyB0ZWFtIHJvb20iIGFsbCBjaG9zZW4gdXNlcnMgd2lsbCBhdXRvbWF0aWNhbGx5IHN3aXRjaCB0byB0aGUgbmV3bHkgY3JlYXRlZCB0ZWFtIHJvb20uIE90aGVyd2lzZSB0aGV5IGdldCBhIG5vdGlmaWNhdGlvbiB3aXRoIGEgYnV0dG9uIHRoYXQgdGhleSAmbHQ7aSZndDtjYW4mbHQ7L2kmZ3Q7IHN3aXRjaCB0byB0aGUgbmV3IHJvb20uIFRlYW0tbW9kZXJhdG9ycyBhbHdheXMgaGF2ZSB0aGUgZnJlZSBjaG9pY2UgdG8gbWFuYWdlIHRoZSB0ZWFtIHJvb21zIGFuZCBzd2l0Y2ggYmV0d2VlbiB0aGVtLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TWFuYWdlIHRlYW0gcm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPllvdSBjYW4gc3dpdGNoIGhlcmUgYmV0d2VlbiBhbGwgdGVhbSByb29tcyB0aGF0IHlvdSBhcmUgYXNzaWduZWQgYXMgdGVhbSByb29tIG1vZGVyYXRvci4gVXNlcnMgaW5zaWRlIHRoZSB0ZWFtIHJvb20gY2FuIHNlbmQgeW91IGEgbWVzc2FnZSwgZm9yIGV4YW1wbGUgdG8gYXNrIHlvdSB0byBjb21lIHRvIHRoZWlyIHJvb20gYW5kIGhlbHAgdGhlbS4gWW91IGNhbiBhbHNvIHRlcm1pbmF0ZSB0aGUgdGVhbSByb29tIGFuZCBhbGwgdXNlcnMgd2lsbCBiZSBsb2dnZWQgb3V0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Rm9yY2UgdXNlciB0byBzd2l0Y2ggdG8gbmV3IHRlYW0gcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q3JlYXRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJzIGF2YWlsYWJsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+QWRkIGEgdXNlciB3aXRoIHRoZSBwbHVzIGZyb20gdGhlIGxlZnQgb3IgcmVtb3ZlIGl0IHdpdGggdGhlIGNyb3NzIGZyb20gdGhlIHJpZ2h0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MSkgVGVhbSByb29tIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4yKSBBZGQgdXNlcnMgdG8gdGhlIHRlYW0gcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVhbSByb29tIG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW0gcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2hhbmdlIHRvIHRoZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Td2l0Y2ggdG8gdGhpcyB0ZWFtIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlcm1pbmF0ZSB0ZWFtIHJvb20gYW5kIGxvZ291dCBhbGwgdXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk5ldyB0ZWFtIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGEgbmV3IHRlYW0gcm9vbSBhdmFpbGFibGUgZm9yIHlvdS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlN3aXRjaCB0byB0ZWFtIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW0gcm9vbSBhY3Rpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGlzIGlzIGEgdGVhbSByb29tLCB5b3UgY2FuIHNlbmQgdGhlIHRlYW0gbW9kZXJhdG9yIGEgbWVzc2FnZSBpZiB5b3UgbmVlZCBoZWxwLiBZb3UgY2FuIHJlLW9wZW4gdGhpcyB3aW5kb3cgdmlhIHRoZSBtYWluIG1lbnUgaW4gdGhlICJBY3Rpb25zIiBzZWN0aW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MSkgU2VuZCBtZXNzYWdlIHRvIHRlYW0gcm9vbSBtb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk5ldyB0ZWFtIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGEgbmV3IHRlYW0gcm9vbSBhdmFpbGFibGUuIFlvdSBjYW4gc3dpdGNoIHRvIHRoYXQgcm9vbS4gVGVhbSByb29tcyBhcmUgbGlrZSAiV29ya2dyb3VwcyIgd2l0aCBhZGRpdGlvbmFsbHkgcG9zc2liaWxpdGllcyB0byBhc2sgdGhlIHRlYW0gcm9vbSBtb2RlcmF0b3IgZm9yIGhlbHAuIFlvdXIgdGVhbSByb29tcyBhcmUgYWxzbyBhdmFpbGFibGUgaW4gdGhlICJNeSBNZWV0aW5ncyIgc2VjdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlN3aXRjaCB0byB0ZWFtIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNyZWF0ZWQgYnk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtIHJvb20gbmFtZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0OSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoaXMgd2luZG93IHdpbGwgc3RheSBvcGVuIGV2ZW4gaWYgeW91IGxlYXZlIHRoZSByb29tLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VXNlcnMgZm9yIHRoaXMgdGVhbSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4zKSBPdGhlciB0ZWFtIHJvb21zIHRoYXQgeW91IGNvdWxkIHN3aXRjaCB0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U2VuZCBhIG1lc3NhZ2UgdG8gdGhlIHRlYW0gcm9vbSBtb2RlcmF0b3JzLiBGb3IgZXhhbXBsZSBpZiB5b3UgbmVlZCBoZWxwIGluIG1vZGVyYXRpbmcgdGhlIFJyb29tIG9yIGlmIHlvdSBoYXZlIGEgcXVlc3Rpb24gYWJvdXQgdGhlIHRvcGljLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U2VuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MikgVXNlcnMgdGhhdCBhcmUgaW52aXRlZCB0byB0aGlzIHRlYW0gcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+SXMgdGVhbSByb29tIG1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGhlc2UgYXJlIGFsbCB1c2VycyB0aGF0IHRoZSBtb2RlcmF0b3IgaGFzIGludml0ZWQgdG8gdGhpcyB0ZWFtIHJvb20uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyB0ZWFtIG1vZGVyYXRvciBsb2dnZWQgaW4gYXQgdGhlIG1vbWVudC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1OCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1OSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlBsZWFzZSBoZWxwIHVzLCB3ZSBoYXZlIGEgcHJvYmxlbSBpbiBvdXIgdGVhbSByb29tLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+QSB1c2VyIGZyb20gYSB0ZWFtIHJvb20gcmVxdWVzdHMgeW91ciBoZWxwLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVhbSByb29tIHJlcXVlc3QgZm9yIGhlbHA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2MiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk1lc3NhZ2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Gcm9tOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+WW91IGFyZSBjdXJyZW50bHkgbm90IGluIGFueSB0ZWFtIHJvb20uIEJ1dCB5b3UgY2FuIHN3aXRjaCBoZXJlIHRvIGFsbCB0ZWFtIHJvb21zIHRoYXQgeW91IGhhdmUgYWNjZXNzIHRvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY1IiBuYW1lPSJiYWNrdXBDb250ZW50Ij4KKyAgICA8dmFsdWU+QmFja3VwIHRoZSBzeXN0ZW0uIFRoZSBiYWNrdXAgaW5jbHVkZXMgYWxsIHVzZXIgZ2VuZXJhdGVkIGRhdGEuIFRoZSBjb25maWd1cmF0aW9uIGlzIG5vdCBpbmNsdWRlZCBhcyB3ZWxsIGFzIHRoZSBsYW5ndWFnZSBsYWJlbHMuIEJlY2F1c2UgdGhvc2UgdmFsdWVzIGFyZSBpbXBvcnRlZCB3aXRoIHRoZSBzeXN0ZW0gaW5zdGFsbGVyLiBUbyB1cGRhdGUgeW91ciBzeXN0ZW0sIGV4cG9ydCB5b3VyIG9sZCBzeXN0ZW0gKDEpIHJlLWluc3RhbGwgaW50byBhIG5ldyBkYXRhYmFzZSB0aGUgbmV3IHBhY2thZ2UgKDIpIGFuZCBpbXBvcnQgdGhlIGJhY2t1cCBmaWxlIGFnYWluICgzKS4gVGhlIGJhY2t1cCBzaG91bGQgYmUgaW1wb3J0ZWQgYmVmb3JlIGdlbmVyYXRpbmcgZGF0YSBpbiB0aGUgbmV3bHkgaW5zdGFsbGVkIHN5c3RlbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2NiIgbmFtZT0iYmFja3VwQ29udGVudCI+CisgICAgPHZhbHVlPlN5c3RlbSBiYWNrdXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2NyIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+QWxsb3cgdXNlciB0byBzaGFyZSBzY3JlZW4vcmVjb3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjgiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPkRlbnkgdXNlciB0byBzaGFyZSBzY3JlZW4vcmVjb3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjkiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPlVzZXIgaXMgbW9kZXJhdG9yLCBoZSBjYW4gZG8gYW55dGhpbmcuIFtzY3JlZW4gc2hhcmluZ108L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3MCIgbmFtZT0iYXBwbHkgZm9yIHNjcmVlbi9yZWNvcmRpbmciPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIHNoYXJlL3JlY29yZCBzY3JlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzEiIG5hbWU9Im1vZGVyYXRpb24gbWluaSBpY29ucyI+CisgICAgPHZhbHVlPllvdSBhcmUgYWxsb3dlZCB0byBzaGFyZS9yZWNvcmQgc2NyZWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzIiIG5hbWU9Im1vZGVyYXRpb24gbWluaSBpY29ucyI+CisgICAgPHZhbHVlPkFwcGx5IGZvciByaWdodCB0byBzaGFyZS9yZWNvcmQgc2NyZWVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDczIiBuYW1lPSJtb2RlcmF0aW9uIG1pbmkgaWNvbnMgY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPkFsbG93L2RlbnkgcmlnaHQgdG8gc2hhcmUvcmVjb3JkIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3NCIgbmFtZT0ic291bmQgaWNvbiI+CisgICAgPHZhbHVlPlR1cm4gc291bmQgb2ZmPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzUiIG5hbWU9InNvdW5kIGljb24iPgorICAgIDx2YWx1ZT5UdXJuIHNvdW5kIG9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzYiIG5hbWU9InJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5BdWRpbyBvbmx5IHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3NyIgbmFtZT0icm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlR1cm4gdGhpcyBmbGFnIG9uIGFuZCB0aGUgdXNlcnMgd2lsbCBoYXZlIG9ubHkgdGhlIGF1ZGlvIG9wdGlvbiBhbmQgbm8gdmlkZW8gaW4gYSBjb25mZXJlbmNlIHJvb20uIFRoaXMgY2FuIGJlZSBnb29kIHRvIHNhdmUgYmFuZHdpZHRoLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc4IiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5BbGxvdyBSZW1vdGUgQ29udHJvbCAoZHVyaW5nIHNjcmVlbiBzaGFyaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc5IiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5EZW55IFJlbW90ZSBDb250cm9sIChkdXJpbmcgc2NyZWVuIHNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODAiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFwcGx5IGZvciByaWdodCB0byBSZW1vdGUgQ29udHJvbCBTY3JlZW4gKGR1cmluZyBzY3JlZW4gc2hhcmluZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MSIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+WW91IGFyZSBhbGxvd2VkIHRvIFJlbW90ZSBDb250cm9sIFNjcmVlbiAoZHVyaW5nIHNjcmVlbiBzaGFyaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgyIiBuYW1lPSJhcHBseSBmb3IgcmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIHJlbW90ZSBjb250cm9sIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MyIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+VXNlciBpcyBNb2RlcmF0b3IsIGhlIGNhbiBkbyBhbnl0aGluZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4NCIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QWxsb3cvRGVueSByaWdodCB0byBSZW1vdGUgQ29udHJvbCBTY3JlZW4gKGR1cmluZyBzY3JlZW4gc2hhcmluZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4NSIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+MSkgWW91ciBQQyB0byByZW1vdGUgUEM6IFRvIGNvcHkgYW5kIHBhc3RlIHRleHQgZnJvbSB5b3VyIGNsaXBib2FyZCBpbnRvIHRoZSByZW1vdGUgY29udHJvbGxlZCBzY3JlZW4sIGNsaWNrIG9uIHRoZSBzY3JlZW4sIHRoZW4gcmlnaHQgY2xpY2sgaW4gdGhlIHRleHQgZmllbGQgYW5kIGNob29zZSAmbHQ7aSZndDtJbnNlcnQmbHQ7L2kmZ3Q7IGZyb20gdGhlIGNvbnRleHQgKHJpZ2h0IGNsaWNrKSBtZW51LiZsdDtici8mZ3Q7Jmx0O2JyLyZndDsyKSBGcm9tIHJlbW90ZSBQQyB0byB5b3VyIFBDOiBUbyBjb3B5IHRleHQgZnJvbSB0aGUgcmVtb3RlIFBDIHRvIHlvdXIgUEMncyBjbGlwYm9hcmQsIGhpZ2hsaWdodCB0aGUgdGV4dCB3aXRoIHRoZSBtb3VzZSBvbiB0aGUgcmVtb3RlIHNjcmVlbiwgdGhlbiByaWdodC1jbGljayBvbiB0aGUgcmVtb3RlIHNjcmVlbiBhbmQgY2hvb3NlICZsdDtpJmd0O0NvcHkgaGlnaGxpZ2h0ZWQgdGV4dCZsdDsvaSZndDsmbHQ7YnIvJmd0OyZsdDtici8mZ3Q7Jmx0O3UmZ3Q7Jmx0O0ZPTlQgY29sb3I9JyMwMDAwQ0MnJmd0OyZsdDtBIEhSRUY9Imh0dHA6Ly93d3cueW91dHViZS5jb20vd2F0Y2g/dj1Va3FhMDFPNDh1SSIgVEFSR0VUPSJfQkxBTksiJmd0O3dhdGNoIHRoZSBkZW1vJmx0Oy9BJmd0OyZsdDsvRk9OVCZndDsmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODYiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNvcHkgYW5kIHBhc3RlIHRleHQgZnJvbSB5b3VyIFBDIHRvIHJlbW90ZSBQQyBhbmQgdmljZSB2ZXJzYS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4NyIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+Q29weSBoaWdobGlnaHRlZCB0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODgiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkhvdyB0byBjb3B5IGFuZCBwYXN0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg5IiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5RdWFsaXR5IG9mIHRoZSBzY3JlZW4gc2hhcmU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTAiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPlZlcnkgaGlnaCBxdWFsaXR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTEiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPkhpZ2ggcXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkyIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5NZWRpdW0gcXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkzIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5Mb3cgcXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk0IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPmVuX1VTPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTUiIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+ZGVfREU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NiIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5LZXlib2FyZDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NyIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5DbG9zZSB3ZWJpbmFyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk4IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPlRoZSB3ZWJpbmFyIGlzIGFscmVhZHkgY2xvc2VkLCB5b3Ugd2lsbCBiZSByZWRpcmVjdGVkIHRvIHNvbWUgaW50ZXJlc3Rpbmcgb2ZmZXJpbmdzIGluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTkiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+Q2xvc2Ugcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAwIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPkV4aXQgVVJMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDEiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+Um9vbSB0ZXJtaW5hdGlvbiBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAyIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPklmIHRoZSByb29tIGlzIGNsb3NlZCB1c2VycyB3aWxsIGJlIHJlZGlyZWN0ZWQgdG8gdGhlIGV4aXQgVVJMLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAzIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkxEQVA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA1IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNiIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5Db25maWcgZmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA3IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkxEQVAgQ29uZmlnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDgiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA5IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkVuYWJsZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JbnNlcnRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTExIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkluc2VydGVkIGJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTIiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+VXBkYXRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEzIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPlVwZGF0ZWQgYnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5UaGUgY29uZmlnIGZpbGVzIGFyZSBpbiB0aGUgZm9sZGVyIHdlYmFwcHMvb3Blbm1lZXRpbmdzL2NvbmYuIFlvdSBuZWVkIHRvIG1hbnVhbGx5IHVwbG9hZCB0aGUgZmlsZXMgdG8gdGhpcyBmb2xkZXIuIENoYW5nZXMgdG8gdGhlIGNvbmZpZyBmaWxlIGFyZSBpbW1lZGlhdGVseSBvbmxpbmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTUiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+Q29uZmlnIGZpbGUgbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE2IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPklmIHlvdSBlbmFibGUgIkFkZCBEb21haW4gdG8gdXNlciBuYW1lIiB0aGUgdmFsdWUgb2YgdGhlIGZpZWxkICJkb21haW4iIGlzIGFkZGVkIHRvIGVhY2ggbG9naW4gdGhhdCB0aGUgdXNlciBlbnRlcnMgaW4gdGhlIGxvZ2luIGJveC4gVGhpcyBpcyB1c2VmdWwgaWYgdGhlIGxvZ2luIGluIHRoZSBMREFQIGlzIHN0b3JlZCBpbmNsdWRpbmcgdGhlIGRvbWFpbiBuYW1lLiBFeGFtcGxlOiB1c2VyIGVudGVycyAiaGFucyIgZG9tYWluIGlzIHNwZWNpZmllZCBhcyAibG9jYWxob3N0LmNvbSIsIGxvZ2luIHRoYXQgaXMgdmVyaWZpZWQgYWdhaW5zdCBMREFQIGlzOiBoYW5zQGxvY2FsaG9zdC5jb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5BZGQgZG9tYWluIHRvIHVzZXIgbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE4IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkRvbWFpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE5IiBuYW1lPSJyZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPkluc2VydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIwIiBuYW1lPSJyZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPkNvcHkgaGlnaGxpZ2h0ZWQgdGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIxIiBuYW1lPSJyZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPlJlbW90ZSBjbGlwYm9hcmQgdGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIyIiBuYW1lPSJyZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPlNob3cgcmVtb3RlIGNsaXBib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIzIiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5EbyBub3Qgc2hvdyBhZ2FpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI0IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Db3B5IHRleHQgaGVyZSAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNSIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgdGhlIHJpZ2h0IHRvIHJlbW90ZSBjb250cm9sIChvciB0aGUgbW9kZXJhdGlvbikgdG8gY29weSBhbmQgcGFzdGUgdGV4dCB0byBvciBmcm9tIHRoZSByZW1vdGUgc2NyZWVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI2IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5FZGl0IGRlZmF1bHQgc2V0dGluZ3MgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjciIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkRvIG5vdCBzaG93IGluZm8gYm94IGluIFJlbW90ZSBDb250cm9sIGFib3V0IGNvcHkgYW5kIHBhc3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjgiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+U2F2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI5IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPlJlbW92ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMwIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMxIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+SW52aXRlIHVzZXIgdG8gY29uZmVyZW5jZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzIiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5DaG9vc2UgYSBjb25mZXJlbmNlIHJvb20uIFRoZSBpbnZpdGVkIHVzZXIgd2lsbCBnZXQgYSBtZXNzYWdlIHdpdGggeW91ciBuYW1lIGFuZCBhIGxpbmsgdG8gdGhlIHJvb20uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzMiIG5hbWU9ImNoYXQgdXNlciI+CisgICAgPHZhbHVlPkNvbm5lY3RlZCBzaW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzNCIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkVudGVyIHJvb20gYWZ0ZXIgc2VuZGluZyBpbnZpdGF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzUiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5JbnZpdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzNiIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPk1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzNyIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gaW52aXRlIHlvdSB0byB0aGUgY29uZmVyZW5jZSByb29tOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM4IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+SW52aXRlIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzOSIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPlNlbmQgaW52aXRhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQwIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+ZGlkICZsdDtiJmd0O25vdCZsdDsvYiZndDsgYWNjZXB0IHlvdXIgaW52aXRhdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0MSIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkFjY2VwdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQyIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+RGVueTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQzIiBuYW1lPSJ1c2VyIHByb2ZpbGUiPgorICAgIDx2YWx1ZT5UaW1lem9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ0IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5FdmVudCBkZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDUiIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0NiIgbmFtZT0iYXBwb2ludG1lbnQgbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+RGVzY3JpcHRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0NyIgbmFtZT0iYXBwb2ludG1lbnQgbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+Q3JlYXRlZCBieTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ4IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+VGltZXpvbmUgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ5IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+Q2hlY2sgIlRpbWV6b25lIG1lc3NhZ2UiIHRvIGdpdmUgdXNlcnMgYSBtZXNzYWdlIG5leHQgdGltZSB0aGV5IGxvZ2luIHRvIHVwZGF0ZSB0aGVpciBwcm9maWxlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUwIiBuYW1lPSJ0aW1lIHpvbmUgdXBkYXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5QbGVhc2UgY2hlY2sgdGhlIHRpbWV6b25lIGluIHlvdXIgdXNlciBwcm9maWxlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUxIiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5OZXcgJEFQUF9OQU1FIGNvbmZlcmVuY2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTIiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkRldGFpbHM6Jmx0O2JyLyZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MyIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3RhcnQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTQiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkVuZDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NSIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2hhbmdlZCAkQVBQX05BTUUgY29uZmVyZW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NiIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+T3JnYW5pemVyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU3IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DYW5jZWxlZCAkQVBQX05BTUUgY29uZmVyZW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1OCIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIGNvbmZlcmVuY2UgcmVtaW5kZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTkiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Db21tdW5pdHkgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlNob3cgY29udGFjdCBkYXRhIHRvIGV2ZXJ5Ym9keTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYxIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+QWRkIGZpZWxkcyBvZiBpbnRlcmVzdCB0aGF0IHlvdSBvZmZlciBvciB0aGF0IHlvdSBhcmUgc2VhcmNoaW5nIHRvIGZpbmQgaW50ZXJlc3RpbmcgcGFydG5lcnMgZm9yIGEgY29uZmVyZW5jZS4gQ29tbWEgc2VwYXJhdGUgdGhlIHRlcm1zIChmb3IgZXhhbXBsZTogTWVkaWNhbCBTZXJ2aWNlLCBIZWFsdGggYXNzdXJhbmNlLCAuLi4pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjIiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NeSBvZmZlcmluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MyIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk15IGludGVyZXN0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY0IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY1IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+VGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2NiIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkZpZWxkcyBvZiBpbnRlcmVzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY3IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+Q29udGFjdCBpbmZvcm1hdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY4IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2hvdyBjb250YWN0IGRhdGEgdG8gY29udGFjdHMgb25seTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY5IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2hvdyBjb250YWN0IGRhdGEgdG8gbm9ib2R5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzAiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NeSBQcm9maWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzEiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5FZGl0IHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzIiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TZWFyY2ggdXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MyIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPldhdGNoIHlvdXIgcHJvZmlsZSBsaWtlIG90aGVyIHNlZSB5b3U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkVkaXQgeW91ciBzZXR0aW5ncywgYWRkIHlvdXIgaW50ZXJlc3RzIHRvIGJlIGZvdW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzUiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TZWFyY2ggZm9yIG90aGVyIHVzZXJzIGFuZCBleHRlbmQgeW91ciBuZXR3b3JrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzYiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+U2VhcmNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzciIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+VXNlciBvZmZlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3OCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5Vc2VyIGxvb2tzIGZvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc5IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkZyZWUgdGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgwIiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MSIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5UaW1lem9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgyIiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPk9mZmVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgzIiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlNlYXJjaHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5TZWFyY2ggcmVzdWx0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODUiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+QWN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg2IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkFkZCB0byBjb250YWN0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg3IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlNlbmQgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg4IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkNvbnRhY3RzIGFuZCBtZXNzYWdlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg5IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlBlbmRpbmcgY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkFjY2VwdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkxIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+RGVueTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkyIiBuYW1lPSJ1c2VyIGNvbnRhY3QgcmVxdWVzdCI+CisgICAgPHZhbHVlPkhpLDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkzIiBuYW1lPSJ1c2VyIGNvbnRhY3QgcmVxdWVzdCI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gYWRkIHlvdSBhcyBjb250YWN0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk0IiBuYW1lPSJ1c2VyIGNvbnRhY3QgcmVxdWVzdCI+CisgICAgPHZhbHVlPkNoZWNrIHlvdXIgY29udGFjdCByZXF1ZXN0cyBpbiAkQVBQX05BTUUgb3IgY2xpY2sgb24gdGhvc2UgbGlua3MgdG8gYWNjZXB0IG9yIGRlbnkgdGhlIHJlcXVlc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NSIgbmFtZT0iYWRkIHVzZXIgY29udGFjdCI+CisgICAgPHZhbHVlPlRoaXMgdXNlciBpcyBhbHJlYWR5IGluIHlvdXIgY29udGFjdCBsaXN0IG9yIGhhcyByZWNlaXZlZCBhbiBpbnZpdGF0aW9uIHRvIHlvdXIgY29udGFjdCBsaXN0IHRoYXQgaXMgbm90IGFuc3dlcmVkIHlldC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NiIgbmFtZT0idXNlciBjb250YWN0IG1haWwiPgorICAgIDx2YWx1ZT5Zb3VyIGNvbnRhY3QgbGlzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+RWRpdCB5b3VyIGNvbnRhY3QgYW5kIG1lc3NhZ2VzLCZsdDtici8mZ3Q7IG1hbmFnZSB5b3VyIHBlbmRpbmcgY29udGFjdHMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTgiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5jb25maXJtZWQgeW91IGFzIGNvbnRhY3QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTkiIG5hbWU9ImNoYXQgaW5mbyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDAiIG5hbWU9ImNoYXQgbG9nIGljb24iPgorICAgIDx2YWx1ZT5TaG93IC9jb3B5IGNoYXQgbG9nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDEiIG5hbWU9ImNoYXQgbG9nIHdpbmRvdyI+CisgICAgPHZhbHVlPkNoYXQgbG9nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkZyb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3ViamVjdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA2IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5NZXNzYWdlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA3IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5OZXcgbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DbGljayB0byB3cml0ZSBhIG5ldyBtZXNzYWdlIHRvIGFueSBvZiB5b3VyIGNvbnRhY3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPldyaXRlIG5ldyBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTAiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjExIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TdWJqZWN0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjEyIiBuYW1lPSJ3aGl0ZWJvYXJkIGZ1bGwtZml0Ij4KKyAgICA8dmFsdWU+RW5hYmxlIGZ1bGwgZml0IGFuZCB0aGUgd2hpdGVib2FyZCB3aWxsIHpvb20gdGhlIHdob2xlIHdoaXRlYm9hcmQgc28gdGhhdCBhbGwmbHQ7YnIvJmd0O2RvY3VtZW50cyBhcmUgdmlzaWJsZSBhY2NvcmRpbmcgdG8gZWFjaCBwYXJ0aWNpcGFudHMgc2NyZWVuIHJlc29sdXRpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTMiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPlVuZW5yb2xlIHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNCIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCB1bmVucm9sZSB5b3Vyc2VsZiBvdXQgb2YgdGhlIGNvbmZlcmVuY2Ugcm9vbS4gSWYgeW91IHdhbnQgdG8gbGVhdmUgaXQgY2xvc2UgdGhlIGJyb3dzZXIgb3IgdXNlIHRoZSBleGl0IGJ1dHRvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNSIgbmFtZT0ia2ljay11c2VyIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRpc2Nvbm5lY3QgdGhpcyB1c2VyIGZyb20gdGhpcyBjb25mZXJlbmNlIHJvb20/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTYiIG5hbWU9ImtpY2stdXNlciI+CisgICAgPHZhbHVlPkNvbmZpcm0gYWN0aW9uIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE3IiBuYW1lPSJraWNrLXVzZXIiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IHVuZW5yb2xlIGEgc3VwZXIgbW9kZXJhdG9yIG91dCBvZiBhIHJvb20uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkJvb2sgY29uZmVyZW5jZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlN0YXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjAiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkVuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgYW4gb3B0aW9uYWwgcmVxdWVzdCBmb3IgbWVldGluZyB0byB0aGUgbWVzc2FnZSBhbmQgY3JlYXRlIGEgY29uZmVyZW5jZSByb29tLiBUaGUgZXZlbnQgaXMgdGhlbiBjb3BpZWQgaW4gdGhlIGNhbGVuZGFyIG9mIGV2ZXJ5IHBhcnRpY2lwYW50LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5JbmJveDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRyYXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoaXMgaXMgeW91LiBZb3UgY2Fubm90IGFkZCB5b3Vyc2VsZiBhcyB5b3VyIG93biBjb250YWN0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI2IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VGhlIHVzZXIgaXMgYWxyZWFkeSBkZW5pZWQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjciIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5UaGUgdXNlciBpcyBhbHJlYWR5IGFwcHJvdmVkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI4IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VGhpcyB1c2VyIGNvbnRhY3QgaGFzaCBpcyBpbnZhbGlkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI5IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VXNlciBhZGRlZCB0byBjb250YWN0IGxpc3QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzAiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Vc2VyIGRlbmllZCBhcyBjb250YWN0IGFuZCByZW1vdmVkIGZyb20gcGVuZGluZyBjb250YWN0IGxpc3QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzEiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBzdWNoIGNvbnRhY3QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzIiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Xb3VsZCB5b3UgcmVhbGx5IGxpa2UgdG8gcmVtb3ZlIHRoYXQgY29udGFjdD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkNvbmZpcm0gY29udGFjdCByZW1vdmFsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzQiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5EZWxldGUgY29udGFjdCBmcm9tIGxpc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNSIgbmFtZT0idXNlciBwcm9maWxlIj4KKyAgICA8dmFsdWU+VXNlciBwcm9maWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzYiIG5hbWU9InVzZXIgcHJvZmlsZSI+CisgICAgPHZhbHVlPlNob3cgdXNlciBwcm9maWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzciIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1lc3NhZ2VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlYXJjaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWxlY3QgYWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDAiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbGVjdCBub25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbGVjdCB1bnJlYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0MiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VsZWN0IHJlYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0MyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TW92ZSB0byBmb2xkZXIgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZCBuZXcgZm9sZGVyIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EZWxldGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGVsZXRlZCBtYWlscyBhcmUgc3RpbGwgaW4geW91ciB0cmFzaCBmb2xkZXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDciIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1hcmsgdW5yZWFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1hcmsgcmVhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BbnN3ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QW5zd2VyIGV2ZXJ5Ym9keTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Gb3J3YXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFjdGlvbnMgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTMiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5TZW5kIHByaXZhdGUgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Ob3RoaW5nIHNlbGVjdGVkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Nb3ZlIHRvIGluYm94PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTYiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRlbGV0ZSAoZmluYWwpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTciIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoaXMgYWN0aW9uIGNhbm5vdCBiZSB1bmRvbmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZCBmb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1OSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIGZvbGRlcnMgYW5kIG9yZ2FuaXplIHlvdXIgbWVzc2FnZXMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjAiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZCBmb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSBmb2xkZXIiPgorICAgIDx2YWx1ZT5EZWxldGUgZm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSBmb2xkZXIiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IGRlbGV0ZSB0aGlzIGZvbGRlciwgdGhlcmUgYXJlIHN0aWxsIG1lc3NhZ2VzIGluc2lkZS4gRGVsZXRlIGZpcnN0IHRoZSBtZXNzYWdlcyBvciBtb3ZlIHRoZW0gdG8gYW5vdGhlciBmb2xkZXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSBmb2xkZXIiPgorICAgIDx2YWx1ZT5FZGl0IG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBmb2xkZXI/IFRoZXJlIGlzIG5vIHdheSB0byB1bmRvIHRoYXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjYiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Zb3VyIHJlcXVlc3Qgd2FzIHNlbmQgdG8gdGhlIHVzZXIuIFRoZSB1c2VyIHdpbGwgcmVjZWl2ZSBhIG5vdGlmaWNhdGlvbiB0byBhY2NlcHQgb3IgZGVueSB5b3VyIHJlcXVlc3QuIE9ubHkgYWNjZXB0ZWQgcmVxdWVzdHMgYXJlIGluIHlvdXIgY29udGFjdCBsaXN0IG9mIGNvdXJzZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPk1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2OCIgbmFtZT0idXNlciB2aWV3IHByb2ZpbGUiPgorICAgIDx2YWx1ZT5UaGUgdXNlciBkb2VzIG5vdCBzaGFyZSBoaXMgcGVyc29uYWwgY29udGFjdCBkYXRhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY5IiBuYW1lPSJ1c2VyIHZpZXcgcHJvZmlsZSI+CisgICAgPHZhbHVlPlRoZSB1c2VyIGRvZXMgc2hhcmUgaGlzIHBlcnNvbmFsIGNvbnRhY3QgZGF0YSBvbmx5IHRvIGNvbnRhY3RzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjcwIiBuYW1lPSJ1c2VyIHZpZXcgcHJvZmlsZSI+CisgICAgPHZhbHVlPkFkZHJlc3MgJmFtcDsgUGhvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3MSIgbmFtZT0iZXJyb3IgY29kZSI+CisgICAgPHZhbHVlPllvdSBpbnZpdGF0aW9uIGNvZGUgaXMgbm90IHZhbGlkLCB0aGUgY29kZSBpcyBvbmx5IHZhbGlkIGR1cmluZyB0aGlzIHNwZWNpZmljIGRhdGUgYW5kIHRpbWU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzIiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5UaGlzIGV2ZW50IGlzIGNvbm5lY3RlZCB0byBzZXZlcmFsIGNhbGVuZGFycyBvZiBvdGhlciB1c2Vycy4gWW91ciBjaGFuZ2Ugd2lsbCBhbHNvIHVwZGF0ZSB0aGVpciBjYWxlbmRhci4gV291bGQgeW91IHJlYWxseSBsaWtlIHRvIHVwZGF0ZSB0aGUgZXZlbnQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzMiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Db25maXJtIHVwZGF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc0IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+QWxsb3cgY29udGFjdCB0byBzZWUgbXkgY2FsZW5kYXIgKHZpZXcgb25seSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkRvIG5vdCBzaGFyZSBjYWxlbmRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc2IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+Q2FsZW5kYXIgb2YgY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPllvdXIgY29udGFjdHMgbmVlZCB0byBhcHByb3ZlIHlvdSBmaXJzdCB0byBiZSBhYmxlIHRvIHNlZSB0aGVpciBjYWxlbmRhci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3OCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPllvdSBjYW5ub3Qgc3RvcmUgb3IgZGVsZXRlIGV2ZW50cyBmcm9tIG90aGVyIGNhbGVuZGFycyB0aGVuIHlvdXIgb3duLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc5IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+U2hvdyBteSBvd24gY2FsZW5kYXIgYWdhaW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODAiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5UaGlzIGV2ZW50IGlzIGNvbm5lY3RlZCB0byBzZXZlcmFsIGNhbGVuZGFycyBvZiBvdGhlciB1c2Vycy4gWW91ciBhY3Rpb24gd2lsbCBhbHNvIGRlbGV0ZSB0aGUgZXZlbnQgZnJvbSB0aGVpciBjYWxlbmRhci4gV291bGQgeW91IHJlYWxseSBsaWtlIHRvIGRlbGV0ZSB0aGUgZXZlbnQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODEiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Db25maXJtIGFjdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgyIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RW50ZXIgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgzIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QWNjZXNzIHRoZSBjb25mZXJlbmNlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgYSBjb25mZXJlbmNlIHJvb20gYW5kIGV2ZW50IGJvb2tlZCB3aXRoIHRoaXMgcHJpdmF0ZSBtZXNzYWdlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg1IiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgdG8gc3RvcmUgdGhlIGV2ZW50IGZpcnN0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg2IiBuYW1lPSJhY2Nlc3Mgcm9vbXMgZXJyb3IiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBzdWNoIHJvb20gYXZhaWxhYmxlLiBUaGUgZXZlbnQgaW4gdGhlIGNhbGVuZGFyIGFuZCBjb25uZWN0ZWQgcm9vbSBpcyBhbHJlYWR5IGRlbGV0ZWQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODciIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPkNob29zZSB5b3VyIG5pY2sgbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg4IiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5GaXJzdCBuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODkiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPkxhc3QgbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkwIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5FbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkxIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5PazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkyIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5NaW5pbXVtIGxlbmd0aCA0IGNoYXJzLiBGb3IgYm90aCwgZmlyc3QgbmFtZSBhbmQgbGFzdCBuYW1lLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkzIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5QbGVhc2UgZW50ZXIgYSB2YWxpZCBlbWFpbC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5NCIgbmFtZT0iYXV0aCBmcm9tIj4KKyAgICA8dmFsdWU+RmFjZWJvb2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5NSIgbmFtZT0iYXV0aCBmb3JtIj4KKyAgICA8dmFsdWU+TG9naW4gd2l0aCB5b3VyIEZhY2Vib29rIGFjY291bnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5NiIgbmFtZT0idmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+TWVtYmVyIHNpbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTciIG5hbWU9ImRpcmVjdCBsb2dpbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+WW91J3ZlIGxvZ2dlZCB3aXRoIHlvdXIgRmFjZWJvb2sgYWNjb3VudC4gWW91IHNob3VsZCB1cGRhdGUgeW91ciBwcm9maWxlIHdpdGggdGhlIGNvcnJlY3QgZW1haWwuIE90aGVyd2lzZSB5b3Ugd2lsbCBub3QgcmVjZWl2ZSBpbnZpdGF0aW9ucyBhbmQgcHJpdmF0ZSBtZXNzYWdlcyBmcm9tIG90aGVyIHVzZXJzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk4IiBuYW1lPSJkaXJlY3QgbG9naW4gbWVzc2FnZSBoZWFkZXIiPgorICAgIDx2YWx1ZT5NZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTkiIG5hbWU9ImRpcmVjdCBsb2dpbiBtZXNzYWdlIGNoZWNrYm94IGNvbnRyb2wiPgorICAgIDx2YWx1ZT5EbyBub3Qgc2hvdyB1cGRhdGUgcHJvZmlsZSBtZXNzYWdlIGFnYWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDAiIG5hbWU9InByb2ZpbGUgc2V0dGluZ3MgYnV0dG9uIj4KKyAgICA8dmFsdWU+bW9yZSBkaXNwbGF5IG9wdGlvbnMgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk5ldyBwcml2YXRlIG1lc3NhZ2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkNsaWNrIGhlcmUgdG8gdmlzaXQgeW91ciBwcm9maWxlIHRvIHNlZSB0aGUgZnVsbCBtZXNzYWdlIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5SZXBseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA0IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5Sb29tcyBhbmQgY2hhdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwNSIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+TXkgcm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwNiIgbmFtZT0ibXkgcm9vbXMiPgorICAgIDx2YWx1ZT5NeSBjb25mZXJlbmNlIHJvb20gKGZvciAxLTE2IHVzZXJzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA3IiBuYW1lPSJteSByb29tcyI+CisgICAgPHZhbHVlPk15IHdlYmluYXIgcm9vbSAoZm9yIDEtMTIwIHVzZXJzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA4IiBuYW1lPSJyb29tIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+T3duZXIgSUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwOSIgbmFtZT0ibG9naW4gZXJyb3IiPgorICAgIDx2YWx1ZT5QbGVhc2UgZW50ZXIgYSBwYXNzd29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzEwIiBuYW1lPSJsb2dpbiBlcnJvciI+CisgICAgPHZhbHVlPllvdSBuZWVkIGFuIGFjY291bnQgd2l0aCB1c2VyIGxldmVsIHVzZXIsIG1vZGVyYXRvciBvciBhZG1pbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzExIiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+V2Vic2VydmljZSAob25seSBhY2Nlc3MgdmlhIFNPQVApPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTIiIG5hbWU9InVwbG9hZCBmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+TG9hZCBkaXJlY3RseSB0byB0aGUgV2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzEzIiBuYW1lPSJ3aGl0ZWJvYXJkIGNsb3NlIGNvbmZpcm1hdGlvbiI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byByZW1vdmUgdGhpcyB3aGl0ZWJvYXJkPyBUaGlzIGFjdGlvbiBjYW5ub3QgYmUgdW5kb25lLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE0IiBuYW1lPSJ3aGl0ZWJvYXJkIGxvYWQgV01MIj4KKyAgICA8dmFsdWU+TG9hZCB0byB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTUiIG5hbWU9InJlY29yZGluZyBmbGFnIj4KKyAgICA8dmFsdWU+RG8gbm90IGZvcmdldCB0byAnU3RhcnQgcmVjb3JkaW5nJywgaWYgeW91IHdhbnQgaGF2ZSB0aGUgbWVldGluZyByZWNvcmRlZC4iPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTYiIG5hbWU9InJlY29yZGluZyBmbGFnIj4KKyAgICA8dmFsdWU+U3RhcnQgcmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTciIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+QXJyb3c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxOCIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT5DaXJjbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxOSIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT5MaW5lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjAiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+U3F1YXJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjEiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+VHJpYW5nbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyMiIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlRleHQvbm90ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIzIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+Q2xpcGFydHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkRyYXcgZnJlZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI1IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+U2VsZWN0L21vdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNiIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkRyYXcgU2hhcGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNyIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkN1dC9Nb3ZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjgiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5ab29tIGluL291dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI5IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+UHJpbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlVuZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMSIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlRyYXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzIiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5TaG93IGdyaWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMyIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlNoYXJlIGZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNCIgbmFtZT0iaWNvbiBzdWJtZW51Ij4KKyAgICA8dmFsdWU+U2VsZWN0IHNoYXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzUiIG5hbWU9Imljb24gc3VibWVudSI+CisgICAgPHZhbHVlPlNlbGVjdCBjbGlwYXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzYiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5Db3B5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzciIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5DdXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzOCIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPlBhc3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzkiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5EZWxldGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MCIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhlIGNvbXBsZXRlIGNvbnRlbnQgb24gdGhlIHdoaXRlYm9hcmQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDEiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5Mb2FkIGRpcmVjdGx5IHRvIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MiIgbmFtZT0iYXR0ZW5kZWVzIj4KKyAgICA8dmFsdWU+QXR0ZW5kZWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDMiIG5hbWU9ImF0ZW5kZWUgbWFuYWdlciI+CisgICAgPHZhbHVlPkF0dGVuZGVlIG1hbmFnZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NCIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+UHJlc2VudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ1IiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5SZW1vdGUgY29udHJvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NiIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+RWplY3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NyIgbmFtZT0iY2hhdCI+CisgICAgPHZhbHVlPkNoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0OCIgbmFtZT0iaW52aXRlIGF0dGVuZGVlIj4KKyAgICA8dmFsdWU+SW52aXRlIGF0dGVuZGVlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ5IiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5CeSBlbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUwIiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5Vc2VyIGlzIG1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUxIiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5Vc2VyIGhhcyB3ZWJjYW0gc3dpdGNoZWQgb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1MiIgbmFtZT0iZmlsbF9vcHRpb24iPgorICAgIDx2YWx1ZT5EZWFjdGl2YXRlIHNoYXBlIGZpbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1MyIgbmFtZT0iZmlsbF9vcHRpb24iPgorICAgIDx2YWx1ZT5BY3RpdmF0ZSBzaGFwZSBmaWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTQiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5TbmFwIHRvIGdyaWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NSIgbmFtZT0iYWxsb3dfcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QWxsb3cgcmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTYiIG5hbWU9IndhaXRfZm9yX3JlY29yZGluZyI+CisgICAgPHZhbHVlPldhaXQgZm9yIHJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU3IiBuYW1lPSJoaWRlX3RvcF9iYXIiPgorICAgIDx2YWx1ZT5IaWRlIHRvcGJhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU4IiBuYW1lPSJmaWxlRXhwbG9yZXIiPgorICAgIDx2YWx1ZT5QbGF5IHZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTkiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoZSBjb250ZW50IG9uIHRoZSBjdXJyZW50IHNsaWRlPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYwIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT5BY2NlcHQgYW5kIGdyYW50IHVzZXIgcmlnaHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2MSIgbmFtZT0iYWN0aXZpdHlfd2luZG93Ij4KKyAgICA8dmFsdWU+RGVueSBhbmQgcmVtb3ZlIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2MiIgbmFtZT0iYWN0aXZpdHlfd2luZG93Ij4KKyAgICA8dmFsdWU+STwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYzIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT5BY3Rpdml0aWVzIGFuZCBhY3Rpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjQiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5SZW1vdmUgd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY1IiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgdGhlIG1vZGVyYXRpb24gb3IgdGhlIHJpZ2h0IHRvIGRyYXcgb24gdGhlIHdoaXRlYm9hcmQgdG8gcmVtb3ZlIHdoaXRlYm9hcmRzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY2IiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+Tm90IGFsbG93ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NyIgbmFtZT0idXNlcl9sZWZ0X2FjdF9tc2ciPgorICAgIDx2YWx1ZT5oYXMgbGVmdCB0aGUgcm9vbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2OCIgbmFtZT0iY2xpcGFydCBpY29ucyI+CisgICAgPHZhbHVlPk1hdGggaWNvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2OSIgbmFtZT0iY2xpcGFydCBpY29ucyI+CisgICAgPHZhbHVlPk5vIGNhdGVnb3J5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzAiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPkNvbG9yIHN0eWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzEiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPlF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MiIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+RG9tYWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzMiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnZpc2l0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzQiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnJlZG9yYW5nZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc1IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5tZWRpdW1zZWFncmVlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc2IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5zdGVlbGJsdWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NyIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+bGlnaHRzdGVlbGJsdWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3OCIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+Z29sZGVucmVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzkiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnNpbHZlcmdyYXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4MCIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+dXNlciBkZWZpbmVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODEiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPmJlc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4MiIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+dXBsb2FkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODMiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPm1lZGl1bTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg0IiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODUiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODYiIG5hbWU9ImdpdmUgZXhjbHVzaXZlIGF1ZGlvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIG9mIG90aGVycy4gR2l2ZSBleGNsdXNpdmUgYXVkaW8gdG8gbWUgKFlvdSBjYW4gYWxzbyBwcmVzcyBGMTIpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODciIG5hbWU9Im11dGUgc2VsZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+WW91IGFyZSBnbG9iYWxseSBtdXRlZCBieSB0aGUgbW9kZXJhdG9yLiBZb3UgY2Fubm90IHVubXV0ZSB5b3Vyc2VsZi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4OCIgbmFtZT0ibXV0ZSBzZWxmIGNvbmZpcm0gbWVzc2FnZSB0aXRsZSI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBnbG9iYWxseT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4OSIgbmFtZT0ibXV0ZSBzZWxmIGNvbmZpcm0gbWVzc2FnZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIG11dGUgeW91cnNlbGYgZ2xvYmFsbHk/IE5vIG90aGVyIHVzZXIgd2lsbCBoZWFyIHlvdSBhbnltb3JlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkwIiBuYW1lPSJtdXRlIG90aGVycyBjb25maXJtIG1lc3NhZ2UgdGl0bGUiPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgbG9jYWxseT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5MSIgbmFtZT0ibXV0ZSBvdGhlcnMgY29uZmlybSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIG11dGUgdGhpcyBtaWNyb3Bob25lPyBZb3UgY2FuIG9ubHkgbXV0ZSBpdCBsb2NhbGx5IG9uIHlvdXIgc2NyZWVuLiBJdCBoYXMgbm8gZWZmZWN0IHRvIGhvdyBvdGhlciB1c2VycyBoZWFyIHRoaXMgdXNlci4gT25seSBtb2RlcmF0b3JzIGNhbiB0dXJuIGl0IG9mZiBnbG9iYWxseS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5MiIgbmFtZT0ibXV0ZSBvdGhlcnMgY29uZmlybSBtZXNzYWdlIHRpdGxlIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkzIiBuYW1lPSJtdXRlIG90aGVycyBtb2RlcmF0b3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBtdXRlIHRoaXMgdXNlciBnbG9iYWxseT8gTm8gb3RoZXIgdXNlciB3aWxsIGhlYXIgaGltIGFueW1vcmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTQiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+WW91ciBzb3VuZCBpcyBvbi4gQ2xpY2sgaGVyZSB0byBzZW5kIG1vZGVyYXRvciBtZXNzYWdlIHRvIG11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5IChpbiB0aGUgY29tcGxldGUgY29uZmVyZW5jZSByb29tKSBvZmYuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTUiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+WW91ciBzb3VuZCBpcyBvZmYuIENsaWNrIGhlcmUgdG8gc2VuZCBtb2RlcmF0b3IgbWVzc2FnZSB0byB1bm11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5IChpbiB0aGUgY29tcGxldGUgY29uZmVyZW5jZSByb29tKSBvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5NiIgbmFtZT0ibXV0ZSBhcHBseSBzZWxmIG9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRoYXQgdGhlIG1vZGVyYXRvciBtdXRlcyBteSBtaWNyb3Bob25lIGdsb2JhbGx5LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk3IiBuYW1lPSJtdXRlIGFwcGx5IHNlbGYgb2ZmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRoYXQgdGhlIG1vZGVyYXRvciB1bm11dGVzIG15IG1pY3JvcGhvbmUgZ2xvYmFsbHkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTgiIG5hbWU9Im11dGUgYXBwbHkgb2YgbWVzc2FnZSI+CisgICAgPHZhbHVlPndhbnQgdGhhdCB0aGUgbW9kZXJhdG9yIHVubXV0ZXMgaGlzL2hlciBtaWNyb3Bob25lLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk5IiBuYW1lPSJtdXRlIGFwcGx5IG9mIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53YW50IHRoYXQgdGhlIG1vZGVyYXRvciBtdXRlcyBoaXMvaGVyIG1pY3JvcGhvbmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDAiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+VW5tdXRlIG1pY3JvcGhvbmUuIENsaWNrIGhlcmUgdG8gbXV0ZSBoaXMvaGVyIG1pY3JvcGhvbmUgZ2xvYmFsbHkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDEiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lLiBDbGljayBoZXJlIHRvIHVubXV0ZSBoaXMvaGVyIG1pY3JvcGhvbmUgZ2xvYmFsbHkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDIiIG5hbWU9Im11dGUgc2VsZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhpcyB1c2VyIGlzIGdsb2JhbGx5IG11dGVkIGJ5IHRoZSBtb2RlcmF0b3IuIFlvdSBjYW5ub3QgdW5tdXRlIGhpbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMyIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDQiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSB5b3VyIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwNSIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA2IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5Vbm11dGUgbWljcm9waG9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA3IiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDgiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDkiIG5hbWU9Im11dGUgbW9kZXJhdG9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Pbmx5IG1vZGVyYXRvcnMgY2FuIG11dGUgb3IgdW5tdXRlIGFuIHVzZXIgZ2xvYmFsbHkuIFRvIG11dGUgeW91ciBvd24gbWljcm9waG9uZTogUGxlYXNlIHVzZSB0aGUgbWljcm9waG9uZSBpY29uIGluIHlvdXIgdmlkZW8gcG9kLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDEwIiBuYW1lPSJwb2xsX25hbWUiPgorICAgIDx2YWx1ZT5Qb2xsIG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMSIgbmFtZT0icG9sbF9uYW1lIj4KKyAgICA8dmFsdWU+WW91PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTIiIG5hbWU9ImFyY2hpdmVkX3BvbGxzIj4KKyAgICA8dmFsdWU+QXJjaGlldmVkIHBvbGxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTMiIG5hbWU9ImFjdGl2ZV9wb2xsIj4KKyAgICA8dmFsdWU+YWN0aXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTQiIG5hbWU9ImNoYXJ0X3NpbXBsZSI+CisgICAgPHZhbHVlPlNpbXBsZSBjaGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE1IiBuYW1lPSJjaGFydF9waWUiPgorICAgIDx2YWx1ZT5QaWUgY2hhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNiIgbmFtZT0ic2lnbl91cF92YWxpZGF0aW9uIj4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTciIG5hbWU9ImNoYXRfbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+TmV3IG1lc3NhZ2Uocyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxOCIgbmFtZT0icG9sbF9jbG9zZSI+CisgICAgPHZhbHVlPkNsb3NlIHBvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxOSIgbmFtZT0icG9sbF9jbG9zZV9jb25maXJtIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNsb3NlIHRoaXMgcG9sbD8gTm8gb25lIHdpbGwgYmUgYWJsZSB0byB2b3RlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIwIiBuYW1lPSJwb2xsX2RlbGV0ZSI+CisgICAgPHZhbHVlPkRlbGV0ZSBwb2xsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjEiIG5hbWU9InBvbGxfZGVsZXRlX2NvbmZpcm0iPgorICAgIDx2YWx1ZT5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgcG9sbD8gVGhlIHJlc3VsdHMgd2lsbCBiZSBkZWxldGVkIGFzIHdlbGwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjIiIG5hbWU9Imxhbmd1YWdlX2NvZGUiPgorICAgIDx2YWx1ZT5MYW5ndWFnZSBJU08gY29kZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIzIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fcGVybWlzc2lvbiI+CisgICAgPHZhbHVlPkFsbG93L2RlbnkgcmlnaHQgdG8gZ2l2ZSBleGNsdXNpdmUgYXVkaW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjQiIG5hbWU9ImFsbG93X2V4Y2x1c2l2ZV9hdWRpb19wZXJtaXNzaW9uIj4KKyAgICA8dmFsdWU+QWxsb3cgdXNlciB0byBnaXZlIGV4Y2x1c2l2ZSBhdWRpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI1IiBuYW1lPSJkZW55X2V4Y2x1c2l2ZV9hdWRpb19wZXJtaXNzaW9uIj4KKyAgICA8dmFsdWU+RGVueSB1c2VyIHRvIGdpdmUgZXhjbHVzaXZlIGF1ZGlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjYiIG5hbWU9ImV4Y2xfYXVkaW8gYXBwbHkgc2VsZiBvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0byBnZXQgYSBwZXJtaXNzaW9uIGZvciBleGNsdXNpdmUgYXVkaW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjciIG5hbWU9ImV4Y2xfYXVkaW8gYXBwbHkgb2YgbWVzc2FnZSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gaGF2ZSBwZXJtaXNzaW9uIGZvciBleGNsdXNpdmUgYXVkaW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjgiIG5hbWU9ImV4Y2xfYXVkaW8gc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+R2l2ZSBhIHBlcm1pc3Npb24gZm9yIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyOSIgbmFtZT0iY2FtX3Jlc29sdXRpb24iPgorICAgIDx2YWx1ZT5DYW0gcmVzb2x1dGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMwIiBuYW1lPSJjYW1fcmVzb2x1dGlvbl9pbmZvIj4KKyAgICA8dmFsdWU+Q2hhbmdpbmcgdGhlIHJlc29sdXRpb24gYWZmZWN0cyBiYW5kd2lkdGgsIGJpZ2dlciBwaWN0dXJlIG5lZWRzIG1vcmUgYmFuZHdpdGguPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzEiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19lcnJvciI+CisgICAgPHZhbHVlPllvdSBkb24ndCBoYXZlIHRoZSByaWdodCB0byBnaXZlIHlvdXJzZWxmIG9yIG90aGVycyBleGNsdXNpdmUgYXVkaW8uIFlvdSBuZWVkIHRvIGFwcGx5IGZvciB0aGUgcmlnaHQgZnJvbSB0aGUgbW9kZXJhdG9yIG9yIGFzayB0aGUgbW9kZXJhdG9yIHRvIGdpdmUgeW91IGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzMiIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2FzayI+CisgICAgPHZhbHVlPkkgd291bGQgbGlrZSB0byBnZXQgdGhlIHJpZ2h0IGZvciBleGNsdXNpdmUgYXVkaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzMyIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2FjdGlvbiI+CisgICAgPHZhbHVlPllvdSBoYXZlIHRoZSByaWdodCB0byBnaXZlIGV4Y2x1c2l2ZSBhdWRpby4gQ2xpY2sgaGVyZSB0byBtYWtlIHlvdXJzZWxmIGV4Y2x1c2l2ZSBhdWRpbyAoYWx0ZXJuYXRpdmVseSBjbGljayBvbiB5b3VyIHZpZGVvIHBvZCBvciBwcmVzcyBGMTIpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzQiIG5hbWU9Im1pY3JvIGlzIG9uIj4KKyAgICA8dmFsdWU+TWljcm9waG9uZSBpcyBvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNSIgbmFtZT0ibWljcm8gaXMgb2ZmIj4KKyAgICA8dmFsdWU+TWljcm9waG9uZSBpcyBtdXRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM2IiBuYW1lPSJoaWRlX2NoYXQiPgorICAgIDx2YWx1ZT5IaWRlIGNoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNyIgbmFtZT0iaGlkZV9hY3Rpdml0aWVzX2FuZF9hY3Rpb25zIj4KKyAgICA8dmFsdWU+SGlkZSBhY3Rpdml0aWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzgiIG5hbWU9ImhpZGVfZmlsZXNfZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5IaWRlIGZpbGVzIGV4cGxvcmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzkiIG5hbWU9ImhpZGVfYWN0aW9uc19tZW51Ij4KKyAgICA8dmFsdWU+SGlkZSBhY3Rpb25zIG1lbnU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MCIgbmFtZT0iaGlkZV9zY3JlZW5fc2hhcmluZyI+CisgICAgPHZhbHVlPkhpZGUgc2NyZWVuIHNoYXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MSIgbmFtZT0iaGlkZV93aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+SGlkZSB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDIiIG5hbWU9InNob3cgbWljcm9waG9uZSBzdGF0dXMiPgorICAgIDx2YWx1ZT5TaG93IG1pY3JvIHN0YXR1cyBpbiB2aWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQzIiBuYW1lPSJsYXlvdXRfb3B0aW9ucyI+CisgICAgPHZhbHVlPkxheW91dCBvcHRpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDQiIG5hbWU9ImNhbGVuZGFyIG5ldyBidXR0b24iPgorICAgIDx2YWx1ZT5OZXcgRXZlbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0NSIgbmFtZT0iY2FsZW5kYXIgcGFzc3dvcmQgaW5mbyB0ZXh0Ij4KKyAgICA8dmFsdWU+UGFzc3dvcmQgcHJvdGVjdGVkIGFyZSB0aGUgbGlua3MgdG8gdGhlIGNvbmZlcmVuY2UgdGhhdCBhcmUgc2VuZCB0byB0aGUgcGFydGljaXBlbnRzIHdoZW4geW91IHNhdmUgdGhlIGNhbGVuZGFyIGV2ZW50LCBub3QgdGhlIHJvb20hIFRoYXQgbWVhbnMgaWYgeW91IHNhdmUgdGhlIGV2ZW50IG11bHRpcGxlIHRpbWVzIGJ1dCB3aXRoIGRpZmZlcmVudCBwYXNzd29yZHMgZXZlcnkgcGFydGljaXBlbnQgcmVjZWl2ZXMgYSBuZXcgbGluayB0aGF0IGhhcyBhIGRpZmZlcmVudCBwYXNzd29yZC4gQnV0IG9sZCBsaW5rcyBzdGlsbCB3b3JrIG9uY2Ugc2VuZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0NiIgbmFtZT0iY2FsZW5kYXIgZWRpdCBidXR0b24iPgorICAgIDx2YWx1ZT5FZGl0IGRldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0NyIgbmFtZT0ic2lwIHNob3cgZGlhbGVyIj4KKyAgICA8dmFsdWU+U2hvdyBzaXAgZGlhbGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDgiIG5hbWU9InNpcCBjYWxsIj4KKyAgICA8dmFsdWU+Q2FsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ5IiBuYW1lPSJjYWxlbmRhciBjb250YWN0IGxpc3QiPgorICAgIDx2YWx1ZT5TaG93IGNhbGVuZGFyIGV2ZW50cyBvZiBjb250YWN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTAiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPllvdXIgaG9tZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MSIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+UGxhbiB5b3VyIG1lZXRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTIiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPldhdGNoIHJlY29yZGluZyBhbmQgaW50ZXJ2aWV3czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUzIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5DaG9vc2UgYW5kIHN0YXJ0IGEgd2ViLWNvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1NCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIHVzZXJzIGFuZCByaWdodHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1NSIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIGNvbm5lY3Rpb25zIGFuZCBraWNrIHVzZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTYiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSB1c2VyZ3JvdXBzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTciIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBjb25mZXJlbmNlIHJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTgiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBzeXN0ZW0gc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1OSIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIGxhYmVscyBhbmQgd29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYwIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgTERBUCBhbmQgQURTIGNvbmZpZ3VyYXRpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjEiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPkV4cG9ydC9JbXBvcnQgU3lzdGVtIEJhY2t1cHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPllvdSBuZWVkIHRvIGJlIGEgTW9kZXJhdG9yIG9yIGhhdmUgdGhlICdkcmF3IG9uIHdoaXRlYm9hcmQnIHJpZ2h0cyB0byB1cGxvYWQsIGFkZCwgZGVsZXRlIG9yIGxvYWQgZmlsZXMgYW5kIGZvbGRlcnMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjMiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5FZGl0IHRleHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2NCIgbmFtZT0ic2FsdXRhdGlvbiI+CisgICAgPHZhbHVlPlByb2Y8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2NSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5QdWJsaXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjYiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U3RhcnQgUHVibGlzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY3IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlN0b3AgUHVibGlzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY4IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkhvc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2OSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5QdWJsaXNoIEFwcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDcwIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlB1Ymxpc2ggSWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5SZWR1Y2UgdGhlIHdpZHRoIG9mIHRoZSBTaGFyaW5nU2NyZWVuIGJlZm9yZSB5b3UgdHJ5IHRvIG1vdmUgaXQgbGVmdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDcyIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHVjZSB0aGUgaGVpZ2h0IG9mIHRoZSBTaGFyaW5nU2NyZWVuIGJlZm9yZSB5b3UgdHJ5IHRvIG1vdmUgaXQgYm90dG9tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzMiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UmVkdWNlIHRoZSB4IG9mIHRoZSBTaGFyaW5nU2NyZWVuIGJlZm9yZSB5b3UgdHJ5IHRvIG1ha2UgaXQgd2lkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3NCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5SZWR1Y2UgdGhlIHkgb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbWFrZSBpdCBoaWdoZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3NSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5GaWxsIHRoZXNlIHNldHRpbmdzIHN0cmVhbSB5b3VyIHNjcmVlbiBkYXRhIHRvIDN0aCBwYXJ0eSBwcm92aWRlcnMgbGlrZSBqdXN0aW4udHY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3NiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5QbGVhc2Ugc3RhcnQgU2NyZWVuIHNoYXJpbmcgdG8gYmUgYWJsZSB0byBwdWJsaXNoIGl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzciIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+TW9kZXJhdG9yIHBlcm1pc3Npb24gcmVxdWlyZWQgdG8gc3RhcnQgcmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzgiIG5hbWU9Im5vIHJpZ2h0IGZvciBleGNsdXNpdmUgYXVkaW8iPgorICAgIDx2YWx1ZT5Zb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFwcGx5IGV4Y2x1c2l2ZSBhdWRpbyB0byBhbnkgcGFydGljaXBhbnQuIFlvdSBuZWVkIG1vZGVyYXRpb24gcm9sZSBvciB0aGUgcmlnaHQgZm9yIGV4Y2x1c2l2ZSBhdWRpbyB0byBtYWtlIGFueSBtaWNyb3Bob25lIGV4Y2x1c2l2ZSB0dXJuZWQgb24uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc5IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5VcGxvYWQgbmV3IGZpbGUgdG8gZmlsZSBleHBsb3JlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgwIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5PcGVuIG5ldyBkaWFsb2cgd2l0aCBzaGFyaW5nIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODEiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkFuIGV4aXN0aW5nIG1vZGVyYXRvciBtdXN0IGFwcHJvdmUgaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MiIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+QXNrIG1vZGVyYXRvciB0byBzaGFyZSB5b3VyIHdlYmNhbS9taWNybzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgzIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5HYXRoZXIgZmVlZGJhY2sgYnkgY3JlYXRpbmcgYSBwb2xsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODQiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlBhc3QgYW5kIGN1cnJlbnQgcG9sbCByZXN1bHRzIGFzIGNoYXJ0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg1IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5Wb3RlIGlmIHRoZXJlIGlzIGEgcG9sbCBmb3IgdGhpcyBjb25mZXJlbmNlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NiIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+RWRpdCBjYW0gYW5kIG1pYyBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg3IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5Db25maXJtIGFuZCBsZWF2ZSB0aGUgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg4IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5DYWxsIGV4dGVybmFsIHBlb3BsZSB2aWEgVm9JUC9TSVA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4OSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+U2VuZCBhbiBlbWFpbCB3aXRoIGEgZGlyZWN0IGxpbmsgdG8gdGhpcyByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTAiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkNoYW5nZSB5b3VyIHdoaXRlYm9hcmQgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MSIgbmFtZT0iYmFja3VwIGFkbWluIj4KKyAgICA8dmFsdWU+TWF4IHVwbG9hZCBzaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTIiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkFzayBtb2RlcmF0b3IgdG8gc2hhcmUgeW91ciB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTMiIG5hbWU9InByaXZhdGUgY2hhdCI+CisgICAgPHZhbHVlPlN0YXJ0IFByaXZhdGUgQ2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk0IiBuYW1lPSJhbGxfcHJpdmF0ZV9jaGF0Ij4KKyAgICA8dmFsdWU+QWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTUiIG5hbWU9InByaXZhdGUgY2hhdCI+CisgICAgPHZhbHVlPllvdSBjYW5ub3Qgc3RhcnQgYSBwcml2YXRlIGNoYXQgd2l0aCB5b3Vyc2VsZi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NiIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+WW91J3ZlIGFscmVhZHkgc3RhcnRlZCBhIHByaXZhdGUgY2hhdCB3aXRoIHRoaXMgcGFydGljaXBhbnQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTciIG5hbWU9InByaXZhdGUgY2hhdCI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBwcml2YXRlIGNoYXQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTgiIG5hbWU9IlNlcnZlcnMiPgorICAgIDx2YWx1ZT5TZXJ2ZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTkiIG5hbWU9IlNlcnZlcnMiPgorICAgIDx2YWx1ZT5TZXJ2ZXJzIHBhcnRpY2lwYXRpbmcgaW4gY2x1c3RlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAwIiBuYW1lPSJTZXJ2ZXIgbmFtZSI+CisgICAgPHZhbHVlPlNlcnZlciBOYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDEiIG5hbWU9IlNlcnZlciBBZGRyZXNzIj4KKyAgICA8dmFsdWU+U2VydmVyIEFkZHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMiIgbmFtZT0iU2VydmVyIGRldGFpbHMiPgorICAgIDx2YWx1ZT5TZXJ2ZXIgZGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAzIiBuYW1lPSJTZW5kIFNNUyI+CisgICAgPHZhbHVlPlNlbmQgU01TPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDQiIG5hbWU9InB1Ymxpc2hpbmdfbWVzc2FnZSI+CisgICAgPHZhbHVlPlB1Ymxpc2hpbmcuIFVzZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDUiIG5hbWU9ImNtZF9saW5lX2FkbWluIj4KKyAgICA8dmFsdWU+VG8gc2F2ZSB0aW1lIGFuZCBpbnRlcm5ldCB0cmFmZmljIHlvdSBjYW4gdXNlIGNvbW1hbmQgbGluZSBhZG1pbiB0byBiYWNrdXAvcmVzdG9yZS91cGdyYWRlOlxuIDEpIGdvIHRvIE9NIGluc3RhbGwgZGlyIChmb3IgZXguIC9vcHQvcmVkNSkgXG4gMikgc3RvcCBPTSAoZm9yIGV4LiAuL3JlZDUtc2h1dGRvd24uc2gpXG4gMykgLi9hZG1pbi5zaCAtYiAtZmlsZSB+L3RvZGF5X29tX2JhY2t1cC56aXAgKGNyZWF0ZSBiYWNrdXAgb2YgY3VycmVudCBPTSlcbiA0KSBkb3dubG9hZCBhcmNoaXZlIHdpdGggbmV3IE9NXG4gNSkgbXYgL29wdC9yZWQ1IC9vcHQucmVkNS5iYWsgKG1vdmUgd29ya2luZyB2ZXJzaW9uIG9mIE9NIGp1c3QgaW4gY2FzZSA6KSlcbiA2KSBleHRyYWN0IGRvd25sb2FkZWQgT00gdG8gdGhlIC9vcHQvcmVkNVxuIDcpIC4vYWRtaW4uc2ggLWkgLWZpbGUgfi90b2RheV9vbV9iYWNrdXAuemlwIChvciAnLi9hZG1pbi5zaCAtaSAtZmlsZSB+L3RvZGF5X29tX2JhY2t1cC56aXAgLS1kYi10eXBlIG15c3FsIC0tZGItdXNlciBvbV91c2VyIC0tZGItcGFzcyBvbV91c2VyX3Bhc3MnIGluIGNhc2Ugb2YgeW91IGFyZSB1c2luZyBub24tZGVmYXVsdCBEQiApXG4gOCkgc3RhcnQgT01cbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA2IiBuYW1lPSJwdWJsaWNfcm9vbV90b29sdGlwIj4KKyAgICA8dmFsdWU+Um9vbXMgY29tbW9uIHRvIGFsbCB1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDciIG5hbWU9InByaXZhdGVfcm9vbV90b29sdGlwIj4KKyAgICA8dmFsdWU+Um9vbXMgY29tbW9uIHRvIHRoZSBjdXJyZW50IHVzZXIgZ3JvdXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwOCIgbmFtZT0ibXlfcm9vbV90b29sdGlwIj4KKyAgICA8dmFsdWU+Um9vbXMgb2YgdGhlIGN1cnJlbnQgdXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA5IiBuYW1lPSJjcmVhdGVfbmV3X3Jvb20iPgorICAgIDx2YWx1ZT5DcmVhdGUvTW9kaWZ5IGFwcG9pbnRtZW50IHNwZWNpYWwgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTEwIiBuYW1lPSJtdWx0aXBsZV9hZGRyZXNzZXMiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIGVudGVyIG11bHRpcGxlIGFkZHJlc3NlcyBpbiB0aGUgZm9ybWF0OiBmaXJzdG5hbWUxIGxhc3RuYW1lMSAmbHQ7ZW1haWwxJmd0OywiZmlyc3RuYW1lMiBsYXN0bmFtZTIiICZsdDtlbWFpbDImZ3Q7LCdmaXJzdG5hbWUzIGxhc3RuYW1lMycgJmx0O2VtYWlsMyZndDssIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTExIiBuYW1lPSJzdHJlYW1fdm9sdW1lIj4KKyAgICA8dmFsdWU+QWRqdXN0IHN0cmVhbSB2b2x1bWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxMiIgbmFtZT0ibWljcm9waG9uZV92b2x1bWUiPgorICAgIDx2YWx1ZT5BZGp1c3QgbWljcm9waG9uZSB2b2x1bWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxMyIgbmFtZT0iY2hhdF9tb2RlcmF0ZWQiPgorICAgIDx2YWx1ZT5JcyBjaGF0IG1vZGVyYXRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE0IiBuYW1lPSJjaGF0X21vZGVyYXRlZCI+CisgICAgPHZhbHVlPkFsbG93IG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNSIgbmFtZT0iY2hhdF9vcGVuZWQiPgorICAgIDx2YWx1ZT5DaGF0IHBhbmVsIG9wZW5lZCBieSBkZWZhdWx0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTYiIG5hbWU9ImZpbGVzX29wZW5lZCI+CisgICAgPHZhbHVlPkZpbGVzIHBhbmVsIG9wZW5lZCBieSBkZWZhdWx0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTciIG5hbWU9InNlcnZlciBhZG1pbiBzZWN0aW9uIGxhc3RwaW5nIj4KKyAgICA8dmFsdWU+TGFzdCBwaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTgiIG5hbWU9InNlcnZlciBhZG1pbiBzZWN0aW9uIGxhc3RwaW5nIGluZm8iPgorICAgIDx2YWx1ZT5FdmVyeSBzbGF2ZSBzZW5kcyBhIHBpbmcgdG8gdGhlIG1hc3RlciBldmVyeSAzIHNlY29uZHMgKGNvbmZpZ3VyYWJsZSkuIFNsYXZlIGxhc3RQaW5nIG11c3QgYmUgc21hbGxlciB0aGVuIDEgbWludXRlIHNvIHRoYXQgdGhlIG1hc3RlciB1c2VzIHRoZSBzbGF2ZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxOSIgbmFtZT0ic2VydmVyIGFkbWluIHBvcnQiPgorICAgIDx2YWx1ZT5IVFRQIFBvcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyMCIgbmFtZT0ic2VydmVyIGFkbWluIHVzZXIiPgorICAgIDx2YWx1ZT5Vc2VyIChTT0FQLUFjY2Vzcyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyMSIgbmFtZT0ic2VydmVyIGFkbWluIHBhc3N3b3JkIj4KKyAgICA8dmFsdWU+UGFzc3dvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyMiIgbmFtZT0ic2VydmVyIGFkbWluIHdlYmFwcCBwYXRoIj4KKyAgICA8dmFsdWU+V2ViYXBwIHBhdGg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyMyIgbmFtZT0ic2VydmVyIGFkbWluIHByb3RvY29sIj4KKyAgICA8dmFsdWU+UHJvdG9jb2w8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyNCIgbmFtZT0ic2VydmVyIGFkbWluIHBpbmcgcnVubmluZyI+CisgICAgPHZhbHVlPlBpbmcgcnVubmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI1IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gYWN0aXZlIj4KKyAgICA8dmFsdWU+QWN0aXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjYiIG5hbWU9ImdlbmVyYXRlX2hhc2giPgorICAgIDx2YWx1ZT5HZW5lcmF0ZSBVUkw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyNyIgbmFtZT0ibmV0d29yayB0ZXN0aW5nIGxpbmsiPgorICAgIDx2YWx1ZT5OZXR3b3JrIHRlc3Rpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyOCIgbmFtZT0icm9vbV9vcHRpb25zIj4KKyAgICA8dmFsdWU+QXV0byBzZWxlY3QgaW50ZXJ2aWV3IHZpZGVvIHBvZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI5IiBuYW1lPSJmb250X3VuZGVybGluZSI+CisgICAgPHZhbHVlPlVuZGVybGluZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMwIiBuYW1lPSJmb250X3N0eWxlIj4KKyAgICA8dmFsdWU+Rm9udCBzdHlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMxIiBuYW1lPSJhbGxvd19mb250X3N0eWxlcyI+CisgICAgPHZhbHVlPkFsbG93IGZvbnQgc3R5bGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzIiIG5hbWU9ImZvbnRfY29sb3IiPgorICAgIDx2YWx1ZT5Gb250IGNvbG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzMiIG5hbWU9Imh5cGVybGluayI+CisgICAgPHZhbHVlPkh5cGVybGluazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM0IiBuYW1lPSJjb25uZWN0aW9uIGFkbWluIj4KKyAgICA8dmFsdWU+U2hvdyBzZXNzaW9uIHN0YXRpc3RpY3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNSIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbiI+CisgICAgPHZhbHVlPlNlc3Npb24gZGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM2IiBuYW1lPSJzeXN0ZW1faW1wb3J0Ij4KKyAgICA8dmFsdWU+U3lzdGVtIGltcG9ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM3IiBuYW1lPSJpbmNsdWRlX2ludG9fYmFja3VwIj4KKyAgICA8dmFsdWU+SW5jbHVkZSB1cGxvYWRlZCBmaWxlcyBhbmQgcmVjb3JkaW5ncyBpbiBiYWNrdXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzOCIgbmFtZT0icm9vbV9hZG1pbl9zaXAiPgorICAgIDx2YWx1ZT5FbmFibGUgU0lQIHRyYW5zcG9ydCBpbiB0aGUgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM5IiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fY29uZmlybSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBwcm92aWRlIHRoaXMgdXNlciBhbiBleGNsdXNpdmUgYXVkaW8/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NDAiIG5hbWU9Im5vX3RpbWV6b25lIj4KKyAgICA8dmFsdWU+UGxlYXNlIHNwZWNpZnkgeW91ciB0aW1lem9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTQ1IiBuYW1lPSJjb250ZW50X2lzX3NhdmluZyI+CisgICAgPHZhbHVlPkNvbnRlbnQgaXMgU2F2aW5nLCBQbGVhc2Ugd2FpdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKzwvbGFuZ3VhZ2U+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L2xhbmd1YWdlcy9lcnJvcnZhbHVlcy54bWwgYi9XZWJDb250ZW50L2xhbmd1YWdlcy9lcnJvcnZhbHVlcy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjEzNmY4ZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL2Vycm9ydmFsdWVzLnhtbApAQCAtMCwwICsxLDQ2MyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxST09UIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIAorICAgIHhzaTpub05hbWVzcGFjZVNjaGVtYUxvY2F0aW9uPSJlcnJvcnZhbHVlcy54c2QiPgorICAgIDxyb3c+CisgICAgICA8ZmllbGQgbmFtZT0iZXJyb3J2YWx1ZXNfaWQiPjE8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9InN0YXJ0dGltZSI+MjAwNy0xMi0wNiAxOTowMTowNzwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0idXBkYXRldGltZSIgLz4KKyAgICAgIDxmaWVsZCBuYW1lPSJkZWxldGVkIj5mYWxzZTwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0iZmllbGR2YWx1ZXNfaWQiPjMzNDwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0iZXJyb3J0eXBlX2lkIj4xPC9maWVsZD4KKyAgICA8L3Jvdz4KKyAgICA8cm93PgorICAgICAgPGZpZWxkIG5hbWU9ImVycm9ydmFsdWVzX2lkIj4yPC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJzdGFydHRpbWUiPjIwMDctMTItMDYgMTk6MDE6MDc8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9InVwZGF0ZXRpbWUiIC8+CisgICAgICA8ZmllbGQgbmFtZT0iZGVsZXRlZCI+ZmFsc2U8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9ImZpZWxkdmFsdWVzX2lkIj4zMTk8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9ImVycm9ydHlwZV9pZCI+MTwvZmllbGQ+CisgICAgPC9yb3c+CisgICAgPHJvdz4KKyAgICAgIDxmaWVsZCBuYW1lPSJlcnJvcnZhbHVlc19pZCI+MzwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0ic3RhcnR0aW1lIj4yMDA3LTEyLTA2IDE5OjAxOjA3PC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJ1cGRhdGV0aW1lIiAvPgorICAgICAgPGZpZWxkIG5hbWU9ImRlbGV0ZWQiPmZhbHNlPC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJmaWVsZHZhbHVlc19pZCI+MzIwPC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJlcnJvcnR5cGVfaWQiPjE8L2ZpZWxkPgorICAgIDwvcm93PgorICAgIDxyb3c+CisgICAgICA8ZmllbGQgbmFtZT0iZXJyb3J2YWx1ZXNfaWQiPjQ8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9InN0YXJ0dGltZSI+MjAwNy0xMi0wNiAxOTowMTowNzwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0idXBkYXRldGltZSIgLz4KKyAgICAgIDxmaWVsZCBuYW1lPSJkZWxldGVkIj5mYWxzZTwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0iZmllbGR2YWx1ZXNfaWQiPjMyMTwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0iZXJyb3J0eXBlX2lkIj4yPC9maWVsZD4KKyAgICA8L3Jvdz4KKyAgICA8cm93PgorICAgICAgPGZpZWxkIG5hbWU9ImVycm9ydmFsdWVzX2lkIj41PC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJzdGFydHRpbWUiPjIwMDctMTItMDYgMTk6MDE6MDc8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9InVwZGF0ZXRpbWUiIC8+CisgICAgICA8ZmllbGQgbmFtZT0iZGVsZXRlZCI+ZmFsc2U8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9ImZpZWxkdmFsdWVzX2lkIj4zMjQ8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9ImVycm9ydHlwZV9pZCI+MTwvZmllbGQ+CisgICAgPC9yb3c+CisgICAgPHJvdz4KKyAgICAgIDxmaWVsZCBuYW1lPSJlcnJvcnZhbHVlc19pZCI+NjwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0ic3RhcnR0aW1lIj4yMDA3LTEyLTA2IDE5OjAxOjA3PC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJ1cGRhdGV0aW1lIiAvPgorICAgICAgPGZpZWxkIG5hbWU9ImRlbGV0ZWQiPmZhbHNlPC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJmaWVsZHZhbHVlc19pZCI+MzMwPC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJlcnJvcnR5cGVfaWQiPjE8L2ZpZWxkPgorICAgIDwvcm93PgorICAgIDxyb3c+CisgICAgICA8ZmllbGQgbmFtZT0iZXJyb3J2YWx1ZXNfaWQiPjc8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9InN0YXJ0dGltZSI+MjAwNy0xMi0wNiAxOTowMTowNzwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0idXBkYXRldGltZSIgLz4KKyAgICAgIDxmaWVsZCBuYW1lPSJkZWxldGVkIj5mYWxzZTwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0iZmllbGR2YWx1ZXNfaWQiPjMzMTwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0iZXJyb3J0eXBlX2lkIj4xPC9maWVsZD4KKyAgICA8L3Jvdz4KKyAgICA8cm93PgorICAgICAgPGZpZWxkIG5hbWU9ImVycm9ydmFsdWVzX2lkIj44PC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJzdGFydHRpbWUiPjIwMDctMTItMDYgMTk6MDE6MDc8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9InVwZGF0ZXRpbWUiIC8+CisgICAgICA8ZmllbGQgbmFtZT0iZGVsZXRlZCI+ZmFsc2U8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9ImZpZWxkdmFsdWVzX2lkIj4zMzI8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9ImVycm9ydHlwZV9pZCI+MjwvZmllbGQ+CisgICAgPC9yb3c+CisgICAgPHJvdz4KKyAgICAgIDxmaWVsZCBuYW1lPSJlcnJvcnZhbHVlc19pZCI+OTwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0ic3RhcnR0aW1lIj4yMDA3LTEyLTA2IDE5OjAxOjA3PC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJ1cGRhdGV0aW1lIiAvPgorICAgICAgPGZpZWxkIG5hbWU9ImRlbGV0ZWQiPmZhbHNlPC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJmaWVsZHZhbHVlc19pZCI+MzE4PC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJlcnJvcnR5cGVfaWQiPjE8L2ZpZWxkPgorICAgIDwvcm93PgorICAgIDxyb3c+CisgICAgICA8ZmllbGQgbmFtZT0iZXJyb3J2YWx1ZXNfaWQiPjEwPC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJzdGFydHRpbWUiPjIwMDctMTItMDYgMTk6MDE6MDc8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9InVwZGF0ZXRpbWUiIC8+CisgICAgICA8ZmllbGQgbmFtZT0iZGVsZXRlZCI+ZmFsc2U8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9ImZpZWxkdmFsdWVzX2lkIj4zMzU8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9ImVycm9ydHlwZV9pZCI+MTwvZmllbGQ+CisgICAgPC9yb3c+CisgICAgPHJvdz4KKyAgICAgIDxmaWVsZCBuYW1lPSJlcnJvcnZhbHVlc19pZCI+MTE8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9InN0YXJ0dGltZSI+MjAwNy0xMi0wNiAxOTowMTowNzwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0idXBkYXRldGltZSIgLz4KKyAgICAgIDxmaWVsZCBuYW1lPSJkZWxldGVkIj5mYWxzZTwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0iZmllbGR2YWx1ZXNfaWQiPjMzNjwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0iZXJyb3J0eXBlX2lkIj4xPC9maWVsZD4KKyAgICA8L3Jvdz4KKyAgICA8cm93PgorICAgICAgPGZpZWxkIG5hbWU9ImVycm9ydmFsdWVzX2lkIj4xMjwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0ic3RhcnR0aW1lIj4yMDA3LTEyLTA2IDE5OjAxOjA3PC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJ1cGRhdGV0aW1lIiAvPgorICAgICAgPGZpZWxkIG5hbWU9ImRlbGV0ZWQiPmZhbHNlPC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJmaWVsZHZhbHVlc19pZCI+MzM3PC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJlcnJvcnR5cGVfaWQiPjI8L2ZpZWxkPgorICAgIDwvcm93PgorICAgIDxyb3c+CisgICAgICA8ZmllbGQgbmFtZT0iZXJyb3J2YWx1ZXNfaWQiPjEzPC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJzdGFydHRpbWUiPjIwMDctMTItMDYgMTk6MDE6MDc8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9InVwZGF0ZXRpbWUiIC8+CisgICAgICA8ZmllbGQgbmFtZT0iZGVsZXRlZCI+ZmFsc2U8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9ImZpZWxkdmFsdWVzX2lkIj4xMDM8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9ImVycm9ydHlwZV9pZCI+MTwvZmllbGQ+CisgICAgPC9yb3c+CisgICAgPHJvdz4KKyAgICAgIDxmaWVsZCBuYW1lPSJlcnJvcnZhbHVlc19pZCI+MTQ8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9InN0YXJ0dGltZSI+MjAwNy0xMi0wNiAxOTowMTowNzwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0idXBkYXRldGltZSIgLz4KKyAgICAgIDxmaWVsZCBuYW1lPSJkZWxldGVkIj5mYWxzZTwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0iZmllbGR2YWx1ZXNfaWQiPjMzODwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0iZXJyb3J0eXBlX2lkIj4xPC9maWVsZD4KKyAgICA8L3Jvdz4KKyAgICA8cm93PgorICAgICAgPGZpZWxkIG5hbWU9ImVycm9ydmFsdWVzX2lkIj4xNTwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0ic3RhcnR0aW1lIj4yMDA3LTEyLTA2IDE5OjAxOjA3PC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJ1cGRhdGV0aW1lIiAvPgorICAgICAgPGZpZWxkIG5hbWU9ImRlbGV0ZWQiPmZhbHNlPC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJmaWVsZHZhbHVlc19pZCI+MTA1PC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJlcnJvcnR5cGVfaWQiPjE8L2ZpZWxkPgorICAgIDwvcm93PgorICAgIDxyb3c+CisgICAgICA8ZmllbGQgbmFtZT0iZXJyb3J2YWx1ZXNfaWQiPjE2PC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJzdGFydHRpbWUiPjIwMDctMTItMDYgMTk6MDE6MDc8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9InVwZGF0ZXRpbWUiIC8+CisgICAgICA8ZmllbGQgbmFtZT0iZGVsZXRlZCI+ZmFsc2U8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9ImZpZWxkdmFsdWVzX2lkIj4xMDc8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9ImVycm9ydHlwZV9pZCI+MTwvZmllbGQ+CisgICAgPC9yb3c+CisgICAgPHJvdz4KKyAgICAgIDxmaWVsZCBuYW1lPSJlcnJvcnZhbHVlc19pZCI+MTc8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9InN0YXJ0dGltZSI+MjAwNy0xMi0wNiAxOTowMTowNzwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0idXBkYXRldGltZSIgLz4KKyAgICAgIDxmaWVsZCBuYW1lPSJkZWxldGVkIj5mYWxzZTwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0iZmllbGR2YWx1ZXNfaWQiPjEwNjwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0iZXJyb3J0eXBlX2lkIj4xPC9maWVsZD4KKyAgICA8L3Jvdz4KKyAgICA8cm93PgorICAgICAgPGZpZWxkIG5hbWU9ImVycm9ydmFsdWVzX2lkIj4xODwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0ic3RhcnR0aW1lIj4yMDA3LTEyLTA2IDE5OjAxOjA3PC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJ1cGRhdGV0aW1lIiAvPgorICAgICAgPGZpZWxkIG5hbWU9ImRlbGV0ZWQiPmZhbHNlPC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJmaWVsZHZhbHVlc19pZCI+MjM2PC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJlcnJvcnR5cGVfaWQiPjE8L2ZpZWxkPgorICAgIDwvcm93PgorICAgIDxyb3c+CisgICAgICA8ZmllbGQgbmFtZT0iZXJyb3J2YWx1ZXNfaWQiPjE5PC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJzdGFydHRpbWUiPjIwMDctMTItMDYgMTk6MDE6MDc8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9InVwZGF0ZXRpbWUiIC8+CisgICAgICA8ZmllbGQgbmFtZT0iZGVsZXRlZCI+ZmFsc2U8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9ImZpZWxkdmFsdWVzX2lkIj4zMzk8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9ImVycm9ydHlwZV9pZCI+MTwvZmllbGQ+CisgICAgPC9yb3c+CisgICAgPHJvdz4KKyAgICAgIDxmaWVsZCBuYW1lPSJlcnJvcnZhbHVlc19pZCI+MjA8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9InN0YXJ0dGltZSI+MjAwNy0xMi0wNiAxOTowMTowNzwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0idXBkYXRldGltZSIgLz4KKyAgICAgIDxmaWVsZCBuYW1lPSJkZWxldGVkIj5mYWxzZTwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0iZmllbGR2YWx1ZXNfaWQiPjM0MDwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0iZXJyb3J0eXBlX2lkIj4xPC9maWVsZD4KKyAgICA8L3Jvdz4KKyAgICA8cm93PgorICAgICAgPGZpZWxkIG5hbWU9ImVycm9ydmFsdWVzX2lkIj4yMTwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0ic3RhcnR0aW1lIj4yMDA3LTEyLTA2IDE5OjAxOjA3PC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJ1cGRhdGV0aW1lIiAvPgorICAgICAgPGZpZWxkIG5hbWU9ImRlbGV0ZWQiPmZhbHNlPC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJmaWVsZHZhbHVlc19pZCI+MzQxPC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJlcnJvcnR5cGVfaWQiPjE8L2ZpZWxkPgorICAgIDwvcm93PgorICAgIDxyb3c+CisgICAgICA8ZmllbGQgbmFtZT0iZXJyb3J2YWx1ZXNfaWQiPjIyPC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJzdGFydHRpbWUiPjIwMDctMTItMDYgMTk6MDE6MDc8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9InVwZGF0ZXRpbWUiIC8+CisgICAgICA8ZmllbGQgbmFtZT0iZGVsZXRlZCI+ZmFsc2U8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9ImZpZWxkdmFsdWVzX2lkIj4zNDI8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9ImVycm9ydHlwZV9pZCI+MTwvZmllbGQ+CisgICAgPC9yb3c+CisgICAgPHJvdz4KKyAgICAgIDxmaWVsZCBuYW1lPSJlcnJvcnZhbHVlc19pZCI+MjM8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9InN0YXJ0dGltZSI+MjAwNy0xMi0wNiAxOTowMTowNzwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0idXBkYXRldGltZSIgLz4KKyAgICAgIDxmaWVsZCBuYW1lPSJkZWxldGVkIj5mYWxzZTwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0iZmllbGR2YWx1ZXNfaWQiPjM0MzwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0iZXJyb3J0eXBlX2lkIj4yPC9maWVsZD4KKyAgICA8L3Jvdz4KKyAgICA8cm93PgorICAgICAgPGZpZWxkIG5hbWU9ImVycm9ydmFsdWVzX2lkIj4yNDwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0ic3RhcnR0aW1lIj4yMDA3LTEyLTA2IDE5OjAxOjA3PC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJ1cGRhdGV0aW1lIiAvPgorICAgICAgPGZpZWxkIG5hbWU9ImRlbGV0ZWQiPmZhbHNlPC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJmaWVsZHZhbHVlc19pZCI+MzQ1PC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJlcnJvcnR5cGVfaWQiPjE8L2ZpZWxkPgorICAgIDwvcm93PgorICAgIDxyb3c+CisgICAgICA8ZmllbGQgbmFtZT0iZXJyb3J2YWx1ZXNfaWQiPjI1PC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJzdGFydHRpbWUiPjIwMDctMTItMDYgMTk6MDE6MDc8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9InVwZGF0ZXRpbWUiIC8+CisgICAgICA8ZmllbGQgbmFtZT0iZGVsZXRlZCI+ZmFsc2U8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9ImZpZWxkdmFsdWVzX2lkIj4zNDY8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9ImVycm9ydHlwZV9pZCI+MTwvZmllbGQ+CisgICAgPC9yb3c+CisgICAgPHJvdz4KKyAgICAgIDxmaWVsZCBuYW1lPSJlcnJvcnZhbHVlc19pZCI+MjY8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9InN0YXJ0dGltZSI+MjAwNy0xMi0wNiAxOTowMTowNzwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0idXBkYXRldGltZSIgLz4KKyAgICAgIDxmaWVsZCBuYW1lPSJkZWxldGVkIj5mYWxzZTwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0iZmllbGR2YWx1ZXNfaWQiPjM0NzwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0iZXJyb3J0eXBlX2lkIj4xPC9maWVsZD4KKyAgICA8L3Jvdz4KKyAgICA8cm93PgorICAgICAgPGZpZWxkIG5hbWU9ImVycm9ydmFsdWVzX2lkIj4yNzwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0ic3RhcnR0aW1lIj4yMDA3LTEyLTA2IDE5OjAxOjA3PC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJ1cGRhdGV0aW1lIiAvPgorICAgICAgPGZpZWxkIG5hbWU9ImRlbGV0ZWQiPmZhbHNlPC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJmaWVsZHZhbHVlc19pZCI+MzU4PC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJlcnJvcnR5cGVfaWQiPjE8L2ZpZWxkPgorICAgIDwvcm93PgorICAgIDxyb3c+CisgICAgICA8ZmllbGQgbmFtZT0iZXJyb3J2YWx1ZXNfaWQiPjI4PC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJzdGFydHRpbWUiPjIwMDctMTItMDYgMTk6MDE6MDc8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9InVwZGF0ZXRpbWUiIC8+CisgICAgICA8ZmllbGQgbmFtZT0iZGVsZXRlZCI+ZmFsc2U8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9ImZpZWxkdmFsdWVzX2lkIj4zNTc8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9ImVycm9ydHlwZV9pZCI+MjwvZmllbGQ+CisgICAgPC9yb3c+CisgICAgPHJvdz4KKyAgICAgIDxmaWVsZCBuYW1lPSJlcnJvcnZhbHVlc19pZCI+Mjk8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9InN0YXJ0dGltZSI+MjAwNy0xMi0wNiAxOTowMTowNzwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0idXBkYXRldGltZSIgLz4KKyAgICAgIDxmaWVsZCBuYW1lPSJkZWxldGVkIj5mYWxzZTwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0iZmllbGR2YWx1ZXNfaWQiPjM1ODwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0iZXJyb3J0eXBlX2lkIj4xPC9maWVsZD4KKyAgICA8L3Jvdz4KKyAgICA8cm93PgorICAgICAgPGZpZWxkIG5hbWU9ImVycm9ydmFsdWVzX2lkIj4zMDwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0ic3RhcnR0aW1lIj4yMDA3LTEyLTA2IDE5OjAxOjA3PC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJ1cGRhdGV0aW1lIiAvPgorICAgICAgPGZpZWxkIG5hbWU9ImRlbGV0ZWQiPmZhbHNlPC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJmaWVsZHZhbHVlc19pZCI+NDAzPC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJlcnJvcnR5cGVfaWQiPjI8L2ZpZWxkPgorICAgIDwvcm93PgorICAgIDxyb3c+CisgICAgICA8ZmllbGQgbmFtZT0iZXJyb3J2YWx1ZXNfaWQiPjMxPC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJzdGFydHRpbWUiIC8+CisgICAgICA8ZmllbGQgbmFtZT0idXBkYXRldGltZSIgLz4KKyAgICAgIDxmaWVsZCBuYW1lPSJkZWxldGVkIj5mYWxzZTwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0iZmllbGR2YWx1ZXNfaWQiPjUzMzwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0iZXJyb3J0eXBlX2lkIj4xPC9maWVsZD4KKyAgICA8L3Jvdz4KKyAgICA8cm93PgorICAgICAgPGZpZWxkIG5hbWU9ImVycm9ydmFsdWVzX2lkIj4zMjwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0ic3RhcnR0aW1lIiAvPgorICAgICAgPGZpZWxkIG5hbWU9InVwZGF0ZXRpbWUiIC8+CisgICAgICA8ZmllbGQgbmFtZT0iZGVsZXRlZCI+ZmFsc2U8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9ImZpZWxkdmFsdWVzX2lkIj41MzQ8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9ImVycm9ydHlwZV9pZCI+MTwvZmllbGQ+CisgICAgPC9yb3c+CisgICAgPHJvdz4KKyAgICAgIDxmaWVsZCBuYW1lPSJlcnJvcnZhbHVlc19pZCI+MzM8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9InN0YXJ0dGltZSIgLz4KKyAgICAgIDxmaWVsZCBuYW1lPSJ1cGRhdGV0aW1lIiAvPgorICAgICAgPGZpZWxkIG5hbWU9ImRlbGV0ZWQiPmZhbHNlPC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJmaWVsZHZhbHVlc19pZCI+NTM1PC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJlcnJvcnR5cGVfaWQiPjE8L2ZpZWxkPgorICAgIDwvcm93PgorICAgIDxyb3c+CisgICAgICA8ZmllbGQgbmFtZT0iZXJyb3J2YWx1ZXNfaWQiPjM0PC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJzdGFydHRpbWUiIC8+CisgICAgICA8ZmllbGQgbmFtZT0idXBkYXRldGltZSIgLz4KKyAgICAgIDxmaWVsZCBuYW1lPSJkZWxldGVkIj5mYWxzZTwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0iZmllbGR2YWx1ZXNfaWQiPjUzODwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0iZXJyb3J0eXBlX2lkIj4xPC9maWVsZD4KKyAgICA8L3Jvdz4KKyAgICA8cm93PgorICAgICAgPGZpZWxkIG5hbWU9ImVycm9ydmFsdWVzX2lkIj4zNTwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0ic3RhcnR0aW1lIiAvPgorICAgICAgPGZpZWxkIG5hbWU9InVwZGF0ZXRpbWUiIC8+CisgICAgICA8ZmllbGQgbmFtZT0iZGVsZXRlZCI+ZmFsc2U8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9ImZpZWxkdmFsdWVzX2lkIj4yNzY8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9ImVycm9ydHlwZV9pZCI+MTwvZmllbGQ+CisgICAgPC9yb3c+CisgICAgPHJvdz4KKyAgICAgIDxmaWVsZCBuYW1lPSJlcnJvcnZhbHVlc19pZCI+MzY8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9InN0YXJ0dGltZSIgLz4KKyAgICAgIDxmaWVsZCBuYW1lPSJ1cGRhdGV0aW1lIiAvPgorICAgICAgPGZpZWxkIG5hbWU9ImRlbGV0ZWQiPmZhbHNlPC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJmaWVsZHZhbHVlc19pZCI+NjY0PC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJlcnJvcnR5cGVfaWQiPjE8L2ZpZWxkPgorICAgIDwvcm93PgorICAgIDxyb3c+CisgICAgICA8ZmllbGQgbmFtZT0iZXJyb3J2YWx1ZXNfaWQiPjM3PC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJzdGFydHRpbWUiIC8+CisgICAgICA8ZmllbGQgbmFtZT0idXBkYXRldGltZSIgLz4KKyAgICAgIDxmaWVsZCBuYW1lPSJkZWxldGVkIj5mYWxzZTwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0iZmllbGR2YWx1ZXNfaWQiPjY2NTwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0iZXJyb3J0eXBlX2lkIj4xPC9maWVsZD4KKyAgICA8L3Jvdz4KKyAgICA8cm93PgorICAgICAgPGZpZWxkIG5hbWU9ImVycm9ydmFsdWVzX2lkIj4zODwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0ic3RhcnR0aW1lIiAvPgorICAgICAgPGZpZWxkIG5hbWU9InVwZGF0ZXRpbWUiIC8+CisgICAgICA8ZmllbGQgbmFtZT0iZGVsZXRlZCI+ZmFsc2U8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9ImZpZWxkdmFsdWVzX2lkIj42NjM8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9ImVycm9ydHlwZV9pZCI+MTwvZmllbGQ+CisgICAgPC9yb3c+CisgICAgPHJvdz4KKyAgICAgIDxmaWVsZCBuYW1lPSJlcnJvcnZhbHVlc19pZCI+Mzk8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9InN0YXJ0dGltZSIgLz4KKyAgICAgIDxmaWVsZCBuYW1lPSJ1cGRhdGV0aW1lIiAvPgorICAgICAgPGZpZWxkIG5hbWU9ImRlbGV0ZWQiPmZhbHNlPC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJmaWVsZHZhbHVlc19pZCI+NjY2PC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJlcnJvcnR5cGVfaWQiPjE8L2ZpZWxkPgorICAgIDwvcm93PgkKKyAgICA8cm93PgorICAgICAgPGZpZWxkIG5hbWU9ImVycm9ydmFsdWVzX2lkIj40MDwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0ic3RhcnR0aW1lIiAvPgorICAgICAgPGZpZWxkIG5hbWU9InVwZGF0ZXRpbWUiIC8+CisgICAgICA8ZmllbGQgbmFtZT0iZGVsZXRlZCI+ZmFsc2U8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9ImZpZWxkdmFsdWVzX2lkIj42NzQ8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9ImVycm9ydHlwZV9pZCI+MjwvZmllbGQ+CisgICAgPC9yb3c+ICAKKyAgICA8cm93PgorICAgICAgPGZpZWxkIG5hbWU9ImVycm9ydmFsdWVzX2lkIj40MTwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0ic3RhcnR0aW1lIiAvPgorICAgICAgPGZpZWxkIG5hbWU9InVwZGF0ZXRpbWUiIC8+CisgICAgICA8ZmllbGQgbmFtZT0iZGVsZXRlZCI+ZmFsc2U8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9ImZpZWxkdmFsdWVzX2lkIj42NzM8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9ImVycm9ydHlwZV9pZCI+MTwvZmllbGQ+CisgICAgPC9yb3c+ICAJCisgICAgPHJvdz4KKyAgICAgIDxmaWVsZCBuYW1lPSJlcnJvcnZhbHVlc19pZCI+NDI8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9InN0YXJ0dGltZSIgLz4KKyAgICAgIDxmaWVsZCBuYW1lPSJ1cGRhdGV0aW1lIiAvPgorICAgICAgPGZpZWxkIG5hbWU9ImRlbGV0ZWQiPmZhbHNlPC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJmaWVsZHZhbHVlc19pZCI+Nzg3PC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJlcnJvcnR5cGVfaWQiPjE8L2ZpZWxkPgorICAgIDwvcm93PiAgCisgICAgPHJvdz4KKyAgICAgIDxmaWVsZCBuYW1lPSJlcnJvcnZhbHVlc19pZCI+NDM8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9InN0YXJ0dGltZSIgLz4KKyAgICAgIDxmaWVsZCBuYW1lPSJ1cGRhdGV0aW1lIiAvPgorICAgICAgPGZpZWxkIG5hbWU9ImRlbGV0ZWQiPmZhbHNlPC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJmaWVsZHZhbHVlc19pZCI+OTIwPC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJlcnJvcnR5cGVfaWQiPjE8L2ZpZWxkPgorICAgIDwvcm93PgorICAgIDxyb3c+CisgICAgICA8ZmllbGQgbmFtZT0iZXJyb3J2YWx1ZXNfaWQiPjQ0PC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJzdGFydHRpbWUiIC8+CisgICAgICA8ZmllbGQgbmFtZT0idXBkYXRldGltZSIgLz4KKyAgICAgIDxmaWVsZCBuYW1lPSJkZWxldGVkIj5mYWxzZTwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0iZmllbGR2YWx1ZXNfaWQiPjEwMDA8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9ImVycm9ydHlwZV9pZCI+MTwvZmllbGQ+CisgICAgPC9yb3c+IAkKKyAgICA8cm93PgorICAgICAgPGZpZWxkIG5hbWU9ImVycm9ydmFsdWVzX2lkIj40NTwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0ic3RhcnR0aW1lIiAvPgorICAgICAgPGZpZWxkIG5hbWU9InVwZGF0ZXRpbWUiIC8+CisgICAgICA8ZmllbGQgbmFtZT0iZGVsZXRlZCI+ZmFsc2U8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9ImZpZWxkdmFsdWVzX2lkIj4xMTk1PC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJlcnJvcnR5cGVfaWQiPjE8L2ZpZWxkPgorICAgIDwvcm93PiAKKyAgICA8cm93PgorICAgICAgPGZpZWxkIG5hbWU9ImVycm9ydmFsdWVzX2lkIj40NjwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0ic3RhcnR0aW1lIiAvPgorICAgICAgPGZpZWxkIG5hbWU9InVwZGF0ZXRpbWUiIC8+CisgICAgICA8ZmllbGQgbmFtZT0iZGVsZXRlZCI+ZmFsc2U8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9ImZpZWxkdmFsdWVzX2lkIj4xMjI2PC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJlcnJvcnR5cGVfaWQiPjE8L2ZpZWxkPgorICAgIDwvcm93PgorICAgIDxyb3c+CisgICAgICA8ZmllbGQgbmFtZT0iZXJyb3J2YWx1ZXNfaWQiPjQ3PC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJzdGFydHRpbWUiIC8+CisgICAgICA8ZmllbGQgbmFtZT0idXBkYXRldGltZSIgLz4KKyAgICAgIDxmaWVsZCBuYW1lPSJkZWxldGVkIj5mYWxzZTwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0iZmllbGR2YWx1ZXNfaWQiPjEyMjc8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9ImVycm9ydHlwZV9pZCI+MTwvZmllbGQ+CisgICAgPC9yb3c+CQkKKyAgICA8cm93PgorICAgICAgPGZpZWxkIG5hbWU9ImVycm9ydmFsdWVzX2lkIj40ODwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0ic3RhcnR0aW1lIiAvPgorICAgICAgPGZpZWxkIG5hbWU9InVwZGF0ZXRpbWUiIC8+CisgICAgICA8ZmllbGQgbmFtZT0iZGVsZXRlZCI+ZmFsc2U8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9ImZpZWxkdmFsdWVzX2lkIj4xMjI4PC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJlcnJvcnR5cGVfaWQiPjE8L2ZpZWxkPgorICAgIDwvcm93PgorICAgIDxyb3c+CisgICAgICA8ZmllbGQgbmFtZT0iZXJyb3J2YWx1ZXNfaWQiPjQ5PC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJzdGFydHRpbWUiIC8+CisgICAgICA8ZmllbGQgbmFtZT0idXBkYXRldGltZSIgLz4KKyAgICAgIDxmaWVsZCBuYW1lPSJkZWxldGVkIj5mYWxzZTwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0iZmllbGR2YWx1ZXNfaWQiPjEyMzE8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9ImVycm9ydHlwZV9pZCI+MTwvZmllbGQ+CisgICAgPC9yb3c+CQorICAgIDxyb3c+CisgICAgICA8ZmllbGQgbmFtZT0iZXJyb3J2YWx1ZXNfaWQiPjUwPC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJzdGFydHRpbWUiIC8+CisgICAgICA8ZmllbGQgbmFtZT0idXBkYXRldGltZSIgLz4KKyAgICAgIDxmaWVsZCBuYW1lPSJkZWxldGVkIj5mYWxzZTwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0iZmllbGR2YWx1ZXNfaWQiPjEyNzE8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9ImVycm9ydHlwZV9pZCI+MTwvZmllbGQ+CisgICAgPC9yb3c+CisgICAgPHJvdz4KKyAgICAgIDxmaWVsZCBuYW1lPSJlcnJvcnZhbHVlc19pZCI+NTE8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9InN0YXJ0dGltZSIgLz4KKyAgICAgIDxmaWVsZCBuYW1lPSJ1cGRhdGV0aW1lIiAvPgorICAgICAgPGZpZWxkIG5hbWU9ImRlbGV0ZWQiPmZhbHNlPC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJmaWVsZHZhbHVlc19pZCI+MTMwOTwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0iZXJyb3J0eXBlX2lkIj4xPC9maWVsZD4KKyAgICA8L3Jvdz4gICAJCisgICAgPHJvdz4KKyAgICAgIDxmaWVsZCBuYW1lPSJlcnJvcnZhbHVlc19pZCI+NTI8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9InN0YXJ0dGltZSIgLz4KKyAgICAgIDxmaWVsZCBuYW1lPSJ1cGRhdGV0aW1lIiAvPgorICAgICAgPGZpZWxkIG5hbWU9ImRlbGV0ZWQiPmZhbHNlPC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJmaWVsZHZhbHVlc19pZCI+MTMxMDwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0iZXJyb3J0eXBlX2lkIj4xPC9maWVsZD4KKyAgICA8L3Jvdz4gCQorICAgIDxyb3c+CisgICAgICA8ZmllbGQgbmFtZT0iZXJyb3J2YWx1ZXNfaWQiPjUzPC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJzdGFydHRpbWUiIC8+CisgICAgICA8ZmllbGQgbmFtZT0idXBkYXRldGltZSIgLz4KKyAgICAgIDxmaWVsZCBuYW1lPSJkZWxldGVkIj5mYWxzZTwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0iZmllbGR2YWx1ZXNfaWQiPjE0MTY8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9ImVycm9ydHlwZV9pZCI+MTwvZmllbGQ+CisgICAgPC9yb3c+IAkKKyAgICA8cm93PgorICAgICAgPGZpZWxkIG5hbWU9ImVycm9ydmFsdWVzX2lkIj41NDwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0ic3RhcnR0aW1lIiAvPgorICAgICAgPGZpZWxkIG5hbWU9InVwZGF0ZXRpbWUiIC8+CisgICAgICA8ZmllbGQgbmFtZT0iZGVsZXRlZCI+ZmFsc2U8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9ImZpZWxkdmFsdWVzX2lkIj4xNDMxPC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJlcnJvcnR5cGVfaWQiPjE8L2ZpZWxkPgorICAgIDwvcm93PgorICAgIDxyb3c+CisgICAgICA8ZmllbGQgbmFtZT0iZXJyb3J2YWx1ZXNfaWQiPjU1PC9maWVsZD4KKyAgICAgIDxmaWVsZCBuYW1lPSJzdGFydHRpbWUiIC8+CisgICAgICA8ZmllbGQgbmFtZT0idXBkYXRldGltZSIgLz4KKyAgICAgIDxmaWVsZCBuYW1lPSJkZWxldGVkIj5mYWxzZTwvZmllbGQ+CisgICAgICA8ZmllbGQgbmFtZT0iZmllbGR2YWx1ZXNfaWQiPjE1NDA8L2ZpZWxkPgorICAgICAgPGZpZWxkIG5hbWU9ImVycm9ydHlwZV9pZCI+MTwvZmllbGQ+CisgICAgPC9yb3c+Cis8L1JPT1Q+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L2xhbmd1YWdlcy9lcnJvcnZhbHVlcy54c2QgYi9XZWJDb250ZW50L2xhbmd1YWdlcy9lcnJvcnZhbHVlcy54c2QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjZmMDZkMQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL2Vycm9ydmFsdWVzLnhzZApAQCAtMCwwICsxLDQxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0NCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgIA0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAgICAJICANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAgdW5kZXIgdGhlIExpY2Vuc2UuDQorICANCistLT4NCis8eHM6c2NoZW1hIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiPg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0iUk9PVCI+DQorICAgIDx4czpjb21wbGV4VHlwZT4NCisgICAgICA8eHM6c2VxdWVuY2U+DQorICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJyb3ciLz4NCisgICAgICA8L3hzOnNlcXVlbmNlPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0icm93Ij4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czpzZXF1ZW5jZT4NCisgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImZpZWxkIi8+DQorICAgICAgPC94czpzZXF1ZW5jZT4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9ImZpZWxkIj4NCisgICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOk5DTmFtZSIvPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKzwveHM6c2NoZW1hPg0KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL2Zpbm5pc2gueG1sIGIvV2ViQ29udGVudC9sYW5ndWFnZXMvZmlubmlzaC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWE3MWRjNAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL2Zpbm5pc2gueG1sCkBAIC0wLDAgKzEsNDY1MiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKworPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworVGhpcyBGaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5IHRoZSBMYW5ndWFnZUVkaXRvciAKK3RvIGFkZCBuZXcgTGFuZ3VhZ2VzIG9yIG1vZGlmeS9jdXN0b21pemUgaXQgdXNlIHRoZSBMYW5ndWFnZUVkaXRvciAKK3NlZSBodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvTGFuZ3VhZ2VFZGl0b3IuaHRtbCBmb3IgRGV0YWlscyAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjLS0+Cis8bGFuZ3VhZ2UgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeG1sbnM6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbj0ibGFuZ3VhZ2UueHNkIj4KKyAgPHN0cmluZyBpZD0iMSIgbmFtZT0iY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPktvbmZlcmVuc3NpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIiIG5hbWU9Im1lZXRpbmciPgorICAgIDx2YWx1ZT5Lb2tvdXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMyIgbmFtZT0iY2xhc3Nyb29tIj4KKyAgICA8dmFsdWU+VGFwYWh0dW1hdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0IiBuYW1lPSJzZXR0aW5ncyI+CisgICAgPHZhbHVlPkFzZXR1a3NldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1IiBuYW1lPSJiZW51dHplciI+CisgICAgPHZhbHVlPlByb2ZpaWxpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYiIG5hbWU9ImFkbWluIj4KKyAgICA8dmFsdWU+WWxsw6RwaXRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjciIG5hbWU9InN0b3AiPgorICAgIDx2YWx1ZT5QeXPDpHl0w6Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOCIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+TmF1aG9pdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOSIgbmFtZT0ibm9maWxlIj4KKyAgICA8dmFsdWU+RWkgdGllZG9zdG9hIHNhYXRhdmlsbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAiIG5hbWU9InJlY29yZGJ5dGVhY2hlciI+CisgICAgPHZhbHVlPk9wZXR0YWphbiBuYXVob2l0dXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEiIG5hbWU9ImNvbm5lY3RlZHVzZXJzIj4KKyAgICA8dmFsdWU+QWt0aWl2aXNldCBrw6R5dHTDpGrDpHQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyIiBuYW1lPSJzdGFydGNvbmYiPgorICAgIDx2YWx1ZT5BbG9pdGEga29uZmVyZW5zc2k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMiIG5hbWU9Im15bmFtZSI+CisgICAgPHZhbHVlPk9tYSBuaW1pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0IiBuYW1lPSJ2aWRlb2NvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT5WaWRlb2tvbmZlcmVuc3NpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1IiBuYW1lPSJpbXBvcnQiPgorICAgIDx2YWx1ZT5Mw6RoZXTDpCB0aWVkb3N0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNiIgbmFtZT0icmVmcmVzaGZpbGVzIj4KKyAgICA8dmFsdWU+UMOkaXZpdMOkIGxpc3RhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3IiBuYW1lPSJ0b21haW5maWxlIj4KKyAgICA8dmFsdWU+UMOkw6R0aWVkb3N0b29uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4IiBuYW1lPSJuZXdwb2xsIj4KKyAgICA8dmFsdWU+dXVzaSBreXNlbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkiIG5hbWU9Im5ld3BvbGxoZWFkZXIiPgorICAgIDx2YWx1ZT5VdXNpIGt5c2VseSBrb25mZXJlbnNzaWluLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMCIgbmFtZT0icXVlc3Rpb24iPgorICAgIDx2YWx1ZT5LeXN5bXlzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMSIgbmFtZT0icG9sbHR5cGUiPgorICAgIDx2YWx1ZT5LeXNlbHluIHR5eXBwaTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIiIG5hbWU9ImNyZWF0ZSI+CisgICAgPHZhbHVlPkx1bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMyIgbmFtZT0iaW5mb21lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaWVkb2tzaTogSm9rYWluZW4gcGFpa2FsbGEgb2xldmEga8OkeXR0w6Rqw6QgdmFzdGFhbm90dGFhIHZpZXN0aW4ga3lzZWx5c3TDpC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQiIG5hbWU9ImNyZWF0cG9sbCI+CisgICAgPHZhbHVlPkx1byBreXNlbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUiIG5hbWU9ImNhbmNlbCI+CisgICAgPHZhbHVlPlBlcnV1dGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYiIG5hbWU9Inllc25vIj4KKyAgICA8dmFsdWU+S3lsbMOkL0VpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3IiBuYW1lPSJudW1lcmljIj4KKyAgICA8dmFsdWU+TnVtZWVyaW5lbiAxLTEwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4IiBuYW1lPSJwb2xsIj4KKyAgICA8dmFsdWU+S3lzZWx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5IiBuYW1lPSJtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+U2ludW4gdMOkeXR5eSBvbGxhIG1vZGVyYWF0dG9yaSBsdW9kYWtzZXNpIGt5c3lteWtzZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwIiBuYW1lPSJ2b3RlIj4KKyAgICA8dmFsdWU+w4TDpG5lc2kgb24gcmVraXN0ZXLDtml0eS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEiIG5hbWU9ImFscmVhZHl2b3RlZCI+CisgICAgPHZhbHVlPk9sZXQgam8gw6TDpG5lc3TDpG55dCB0w6Rzc8OkIGt5c3lteWtzZXNzw6QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyIiBuYW1lPSJ2b3RpbmciPgorICAgIDx2YWx1ZT7DhMOkbmVzdMOkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMyIgbmFtZT0iYW5zd2VyIj4KKyAgICA8dmFsdWU+VmFzdGF1a3Nlc2k6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0IiBuYW1lPSJ5ZXMiPgorICAgIDx2YWx1ZT5LeWxsw6Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUiIG5hbWU9Im5vIj4KKyAgICA8dmFsdWU+RWk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYiIG5hbWU9InF1ZXN0aW9ud2FudCI+CisgICAgPHZhbHVlPmhhbHVhYSB0aWV0w6TDpDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzciIG5hbWU9InBvbGxyZXN1bHRzIj4KKyAgICA8dmFsdWU+S3lzZWx5biB0dWxva3NldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOCIgbmFtZT0icXVlc3Rpb24iPgorICAgIDx2YWx1ZT5LeXN5bXlzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOSIgbmFtZT0icmVzdWx0cyI+CisgICAgPHZhbHVlPlR1bG9rc2V0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MCIgbmFtZT0iYW5zd2VycyI+CisgICAgPHZhbHVlPlZhc3RhdWtzZXQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxIiBuYW1lPSJub3BvbGwiPgorICAgIDx2YWx1ZT5LeXNlbHlpdMOkIGVpIG9sZSBhbG9pdGV0dHUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyIiBuYW1lPSJ2b3RpbmdzIj4KKyAgICA8dmFsdWU+w4TDpG5lc3TDpCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMiIG5hbWU9Im1lZXRpbmciPgorICAgIDx2YWx1ZT5Lb2tvdXMgKGVuaW50w6TDpG4gNCBvc2Fub3R0YWphYSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQiIG5hbWU9ImNvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT5Lb25mZXJlbnNzaSAoZW5pbnTDpMOkbiA1MCBvc2Fub3R0YWphYSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUiIG5hbWU9InR5cGUiPgorICAgIDx2YWx1ZT5UeXlwcGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYiIG5hbWU9InJlbWFpbmluZ3NlYXRzIj4KKyAgICA8dmFsdWU+VmFwYWl0YSBwYWlra29qYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NyIgbmFtZT0iYWxyZWFkeWNob3NlbiI+CisgICAgPHZhbHVlPk9uIGpvIHZhbGl0dHU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgiIG5hbWU9ImVudGVyIj4KKyAgICA8dmFsdWU+YXN0dSBzaXPDpMOkbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OSIgbmFtZT0ibW9kbGVhdmUiPgorICAgIDx2YWx1ZT5Nb2RlcmFhdHRvcmkgb24gbMOkaHRlbnl0IGtva291a3Nlc3RhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MCIgbmFtZT0ic3lzdGVtbWVzc2FnZSI+CisgICAgPHZhbHVlPkrDpHJqZXN0ZWxtw6RuIHZpZXN0aTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MSIgbmFtZT0iY2hvc3NlZGV2aWNlIj4KKyAgICA8dmFsdWU+VmFsaXRzZSBsYWl0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MiIgbmFtZT0iY2hvb3NlY2FtIj4KKyAgICA8dmFsdWU+VmFsaXRzZSB3ZWIta2FtZXJhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MyIgbmFtZT0iY2hvb3NlbWljIj4KKyAgICA8dmFsdWU+VmFsaXRzZSBtaWtyb2Zvbmk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0IiBuYW1lPSJvayI+CisgICAgPHZhbHVlPm9rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1IiBuYW1lPSJjYW5jZWwyIj4KKyAgICA8dmFsdWU+cGVydXV0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NiIgbmFtZT0icmVjb25lZWN0bmVlZGVkIj4KKyAgICA8dmFsdWU+U2ludW4gdMOkeXR5eSB5aGRpc3TDpCB1dWRlbGxlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3IiBuYW1lPSJlZGl0c2V0dXAiPgorICAgIDx2YWx1ZT5NdW9ra2FhIGFzZXR1a3NpYS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgiIG5hbWU9ImNvdXJzZSI+CisgICAgPHZhbHVlPkt1cnNzaTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkiIG5hbWU9Imxhbmd1YWdlIj4KKyAgICA8dmFsdWU+S2llbGk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwIiBuYW1lPSJvazIiPgorICAgIDx2YWx1ZT5vazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MSIgbmFtZT0iY2FuY2VsMyI+CisgICAgPHZhbHVlPnBlcnV1dGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIiIG5hbWU9ImNsZWFyd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPlR5aGrDpMOkIGtpcmpvaXR1c3RhdWx1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzIiBuYW1lPSJjbGVhcndoaXRlYm9hcmRxdWVzdGlvbiI+CisgICAgPHZhbHVlPkhhbHVhdGtvIHR5aGplbnTDpMOkIGtpcmpvaXR1c3RhdWx1biBlbm5lbiB1dWRlbiBrdXZhbiBsaXPDpMOkbWlzdMOkPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NCIgbmFtZT0iZG9udGFza2FnYWluIj4KKyAgICA8dmFsdWU+w4Rsw6Qga3lzeSB1dWRlc3RhYW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUiIG5hbWU9Im5vIj4KKyAgICA8dmFsdWU+ZWk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYiIG5hbWU9ImVkaXRzZXR1cDIiPgorICAgIDx2YWx1ZT5NdW9ra2FhIGFzZXR1a3NpYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NyIgbmFtZT0ibmVlZGNvbmZpcm1hdGlvbndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5LeXN5IHZhcm1pc3R1cyBlbm5lbiBraXJqb2l0dXN0YXVsdW4gdHloasOkeXN0w6QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4IiBuYW1lPSJ1c2VyaW5mbyI+CisgICAgPHZhbHVlPkvDpHl0dMOkasOkdGllZG90PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5IiBuYW1lPSJjbGVhcmRyYXdhcmVhIj4KKyAgICA8dmFsdWU+VHloasOkw6QgcGlpcnRvYWx1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MCIgbmFtZT0idW5kbyI+CisgICAgPHZhbHVlPlBlcnU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzEiIG5hbWU9InJlZG8iPgorICAgIDx2YWx1ZT5UZWUgdXVkZXN0YWFuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyIiBuYW1lPSJzZWxlY3RvYmplY3QiPgorICAgIDx2YWx1ZT5WYWxpdHNlIG9iamVrdGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMiIG5hbWU9InRleHQiPgorICAgIDx2YWx1ZT5UZWtzdGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQiIG5hbWU9InBhaW50Ij4KKyAgICA8dmFsdWU+UGlpcnLDpDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NSIgbmFtZT0iZHJhd2xpbmUiPgorICAgIDx2YWx1ZT5QaWlycsOkIHZpaXZhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2IiBuYW1lPSJkcmF3dSI+CisgICAgPHZhbHVlPkFsbGV2aWl2YWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzciIG5hbWU9InJlY3QiPgorICAgIDx2YWx1ZT5TdW9yYWthaWRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4IiBuYW1lPSJlbGxpcHNlIj4KKyAgICA8dmFsdWU+RWxsaXBzaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OSIgbmFtZT0iYXJyb3ciPgorICAgIDx2YWx1ZT5OdW9saTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MCIgbmFtZT0iZGVsZXRlY2hvc2VuIj4KKyAgICA8dmFsdWU+cG9pc3RhIHZhbGl0dHUga29oZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEiIG5hbWU9ImFwcGxpeW1vZCI+CisgICAgPHZhbHVlPlB5eWTDpCBtb2RlcmFhdHRvcmluIG9pa2V1dHRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyIiBuYW1lPSJhcHBseSI+CisgICAgPHZhbHVlPmFzZXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzIiBuYW1lPSJjYW5jZWwiPgorICAgIDx2YWx1ZT5wZXJ1dXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0IiBuYW1lPSJtb2QiPgorICAgIDx2YWx1ZT5NdXV0dSBtb2RlcmFhdHRvcmlrc2k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUiIG5hbWU9ImNsb3NlIj4KKyAgICA8dmFsdWU+c3VsamU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYiIG5hbWU9Iml0YWxpYyI+CisgICAgPHZhbHVlPmt1cnNpdm9pbnRpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3IiBuYW1lPSJib2xkIj4KKyAgICA8dmFsdWU+bGloYXZvaW50aTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OCIgbmFtZT0id2FpdGluZyI+CisgICAgPHZhbHVlPk9ET1RUQUE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkiIG5hbWU9ImFwcGx5TWVzc2FnZSI+CisgICAgPHZhbHVlPkvDpHl0dMOkasOkIGhha2VlIG1vZGVyYWF0dG9yaW4gb2lrZXV0dGE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwIiBuYW1lPSJhY2NlcHQiPgorICAgIDx2YWx1ZT5oeXbDpGtzeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MSIgbmFtZT0icmVqZWN0Ij4KKyAgICA8dmFsdWU+aHlsa8Okw6Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIiIG5hbWU9ImNhbmNlbCI+CisgICAgPHZhbHVlPnBlcnV1dGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMiIG5hbWU9InNlbmRtb2RyZXF1ZXN0bWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbmRpbmcgcmVxdWVzdCB0byBmb2xsb3dpbmcgVXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQiIG5hbWU9ImFjY2VwdCI+CisgICAgPHZhbHVlPkh5dsOka3N5dHR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1IiBuYW1lPSJyZWplY3QiPgorICAgIDx2YWx1ZT5IeWzDpHR0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NiIgbmFtZT0iY2hhbmdlbW9kIj4KKyAgICA8dmFsdWU+VmFpaGRhIG1vZGVyYWF0dG9yaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTciIG5hbWU9Im5vbm1vZGVycm9ybWVzc2FnZSI+CisgICAgPHZhbHVlPkV0IG9sZSB0w6Rtw6RuIGt1cnNzaW4gbW9kZXJhYXR0b3JpITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OCIgbmFtZT0ibW9kZXJhdG9yIj4KKyAgICA8dmFsdWU+TW9kZXJhYXR0b3JpOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OSIgbmFtZT0icm9vbWZ1bGxtZXNzYWdlIj4KKyAgICA8dmFsdWU+VMOkbcOkIGh1b25lIG9uIHTDpHlubsOkLiBZcml0w6QgbXnDtmhlbW1pbiB1dWRlc3RhYW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMCIgbmFtZT0iZWxsbGlwc2UiPgorICAgIDx2YWx1ZT5FbGxpcHNpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMSIgbmFtZT0iY2xvc2UiPgorICAgIDx2YWx1ZT5zdWxqZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIiIG5hbWU9IkF1dGhFcnJvciI+CisgICAgPHZhbHVlPnN5w7Z0ZXZpcmhlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMyIgbmFtZT0ibWluNHVzZXJuYW1lIj4KKyAgICA8dmFsdWU+dsOkaGludMOkw6RuIDQgbWVya2tpw6Q7IGlzb2lsbGEga2lyamFpbWlsbGEgb24gbWVya2l0eXN0w6QhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNCIgbmFtZT0ibWluNHBhc3MiPgorICAgIDx2YWx1ZT5zYWxhc2FuYW4gdMOkeXR5eSBvbGxhIHbDpGhpbnTDpMOkbiA0IG1lcmtracOkIHBpdGvDpDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUiIG5hbWU9InVzZXJuYW1ldGFrZW4iPgorICAgIDx2YWx1ZT5UdW5udXMgb24gam8gdmFyYXR0dTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYiIG5hbWU9ImVtYWlsdGFrZW4iPgorICAgIDx2YWx1ZT5Tw6Roa8O2cG9zdGlvc29pdGUgb24gam8gcmVraXN0ZXLDtml0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDciIG5hbWU9ImVtYWlsdGFrZW4iPgorICAgIDx2YWx1ZT5Kw6RyamVzdGVsbcOkdmlyaGUsIG90YSB5aHRleXR0w6QgeWxsw6RwaXRvb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4IiBuYW1lPSJBdXRobG9naW4iPgorICAgIDx2YWx1ZT5LaXJqYXV0dW1pbmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOSIgbmFtZT0iQXV0aHVzZXIiPgorICAgIDx2YWx1ZT5Lw6R5dHTDpGrDpDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwIiBuYW1lPSJBdXRocGFzcyI+CisgICAgPHZhbHVlPlNhbGFzYW5hOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEiIG5hbWU9IkF1dGhsYW5nIj4KKyAgICA8dmFsdWU+S2llbGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyIiBuYW1lPSJBdXRocmVnIj4KKyAgICA8dmFsdWU+S2lyamF1ZHU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzIiBuYW1lPSJyZWdmb3JtaGVhZCI+CisgICAgPHZhbHVlPlJla2lzdGVyw7ZpbnRpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNCIgbmFtZT0icmVnZm9ybXVzZXIiPgorICAgIDx2YWx1ZT5Lw6R5dHTDpGrDpHR1bm51czo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1IiBuYW1lPSJyZWdmb3JtcGFzcyI+CisgICAgPHZhbHVlPlNhbGFzYW5hOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYiIG5hbWU9InJlZ2Zvcm1yZXR5cGUiPgorICAgIDx2YWx1ZT5VdWRlc3RhYW46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNyIgbmFtZT0icmVnZm9ybWZpcnN0bmFtZSI+CisgICAgPHZhbHVlPkV0dW5pbWk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOCIgbmFtZT0icmVnZm9ybWxhc3RuYW1lIj4KKyAgICA8dmFsdWU+U3VrdW5pbWk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOSIgbmFtZT0icmVnZm9ybW1haWwiPgorICAgIDx2YWx1ZT5Tw6Roa8O2cG9zdGk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMCIgbmFtZT0icmVnZm9ybXN0YXRlIj4KKyAgICA8dmFsdWU+TWFhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjEiIG5hbWU9InJlZ2Zvcm1idG4xIj4KKyAgICA8dmFsdWU+UmVraXN0ZXLDtmlkeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIiIG5hbWU9InJlZ2Zvcm1idG4yIj4KKyAgICA8dmFsdWU+UGVydXV0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMiIG5hbWU9IkF1dGhidG4yIj4KKyAgICA8dmFsdWU+RXRrw7Ygb2xlIGrDpHNlbj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5Lb3RpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNSIgbmFtZT0idXNlcmFkbWluIj4KKyAgICA8dmFsdWU+VXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2IiBuYW1lPSJncm91cGFkbWluIj4KKyAgICA8dmFsdWU+UnlobcOkdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjciIG5hbWU9Im9yZ2FkbWluIj4KKyAgICA8dmFsdWU+T3JnYW5pc2FhdGlvdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgiIG5hbWU9ImhlYWRjb25mIj4KKyAgICA8dmFsdWU+S29rb3VzaHVvbmVldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkiIG5hbWU9ImNvbmZfcHViIj4KKyAgICA8dmFsdWU+anVsa2luZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwIiBuYW1lPSJoZWFkX29yZyI+CisgICAgPHZhbHVlPk9yZ2FuaXNhYXRpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzEiIG5hbWU9ImJ0bl9lbnRlcnJvb20iPgorICAgIDx2YWx1ZT5hc3R1IHNpc8Okw6RuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMiIgbmFtZT0idXNlcmFsdGVyc2VsZl9sb2dpbiI+CisgICAgPHZhbHVlPlR1bm51czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMiIG5hbWU9InVzZXJhbHRlcnNlbGZfcGFzcyI+CisgICAgPHZhbHVlPlNhbGFzYW5hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNCIgbmFtZT0idXNlcmFsdGVyc2VsZl9wYXNzcmV0eXBlIj4KKyAgICA8dmFsdWU+VXVkZXN0YWFuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNSIgbmFtZT0idXNlcmFsdGVyc2VsZl9maXJzdG5hbWUiPgorICAgIDx2YWx1ZT5FdHVuaW1pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNiIgbmFtZT0idXNlcmFsdGVyc2VsZl9sYXN0bmFtZSI+CisgICAgPHZhbHVlPlN1a3VuaW1pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNyIgbmFtZT0idXNlcmFsdGVyc2VsZl9lbWFpbCI+CisgICAgPHZhbHVlPlPDpGhrw7Zwb3N0aTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgiIG5hbWU9InVzZXJhbHRlcnNlbGZfYmlydGgiPgorICAgIDx2YWx1ZT5TeW5ueWluYWlrYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkiIG5hbWU9InVzZXJhbHRlcnNlbGZfc3RyZWV0bm8iPgorICAgIDx2YWx1ZT5LYXR1b3NvaXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MCIgbmFtZT0idXNlcmFsdGVyc2VsZl90b3duIj4KKyAgICA8dmFsdWU+UG9zdGludW1lcm8vVG9pbWlwYWlra2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3N0YXRlIj4KKyAgICA8dmFsdWU+TWFhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MiIgbmFtZT0idXNlcmFsdGVyc2VsZl9hZHJlc3Njb21tZW50Ij4KKyAgICA8dmFsdWU+T3NvaXR0ZWVuIGxpc8OkdGlldG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2hlYWRlciI+CisgICAgPHZhbHVlPkvDpHl0dMOkasOkdGlldG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0IiBuYW1lPSJzYXZlbWVudWJhcl9zYXZlbGFiZWwiPgorICAgIDx2YWx1ZT50YWxsZW5uYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUiIG5hbWU9InNhdmVtZW51YmFyX3NhdmVsYWJlbCI+CisgICAgPHZhbHVlPlRhbGxlbm5hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NiIgbmFtZT0iYWRtaW5fdXNlcmxpc3RfdXNlcl9pZCI+CisgICAgPHZhbHVlPlVTRVItSUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3IiBuYW1lPSJhZG1pbl91c2VybGlzdF9sb2dpbiI+CisgICAgPHZhbHVlPlR1bm51czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgiIG5hbWU9ImFkbWluX3VzZXJsaXN0X2ZpcnN0bmFtIj4KKyAgICA8dmFsdWU+RXR1bmltaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkiIG5hbWU9ImFkbWluX3VzZXJsaXN0X2xhc3RuYW1lIj4KKyAgICA8dmFsdWU+U3VrdW5pbWk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwIiBuYW1lPSJ0dXJub3Zlcmxpc3RfbmV4dCI+CisgICAgPHZhbHVlPm7DpHl0w6Qgc2V1cmFhdmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxIiBuYW1lPSJ0dXJub3Zlcmxpc3RfcHJlIj4KKyAgICA8dmFsdWU+bsOkeXTDpCBlZGVsbGluZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyIiBuYW1lPSJzYXZlY29udGVudF9jb25maXJtIj4KKyAgICA8dmFsdWU+cG9pc3RhIHRpZXR1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMiIG5hbWU9InNhdmVjb250ZW50X2NvbmZpcm1fY2FuY2VsX2J0biI+CisgICAgPHZhbHVlPnBlcnV1dGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU0IiBuYW1lPSJzYXZlY29udGVudF9jb25maXJtX2NvbmZpcm1fYnRuIj4KKyAgICA8dmFsdWU+cG9pc3RhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NSIgbmFtZT0ic2F2ZW1lbnViYXJfYWRkbGFiZWwiPgorICAgIDx2YWx1ZT51dXNpIHRpZXR1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTYiIG5hbWU9InNhdmVtZW51YmFyX3JlbG9hZGxhYmVsIj4KKyAgICA8dmFsdWU+cMOkaXZpdMOkIHRpZXR1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTciIG5hbWU9InNhdmVtZW51YmFyX2RlbGV0ZWxhYmVsIj4KKyAgICA8dmFsdWU+cG9pc3RhIHRpZXR1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTgiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9zdGF0dXMiPgorICAgIDx2YWx1ZT50aWxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1OSIgbmFtZT0idXNlcmFsdGVyX2FkbWluX3N0YXR1c0l0ZW0iPgorICAgIDx2YWx1ZT5wb2lzIGvDpHl0w7ZzdMOkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2MCIgbmFtZT0idXNlcmFsdGVyX2FkbWluX3N0YXR1c0l0ZW0iPgorICAgIDx2YWx1ZT5rw6R5dMO2c3PDpDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjEiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9vcmdhbmlzYXRpb24iPgorICAgIDx2YWx1ZT5PcmdhbmlzYWF0aW90PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2MiIgbmFtZT0iY2FsZW5kYXJfaWNvbmxhYmVsIj4KKyAgICA8dmFsdWU+a2FsZW50ZXJpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2MyIgbmFtZT0ic2F2ZXdpbmRvd19idG4iPgorICAgIDx2YWx1ZT5zdWxqZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjQiIG5hbWU9Im9yZ2FuaXNhdGlvbnRhYmxlbGlzdF9pZHJvdyI+CisgICAgPHZhbHVlPk9yZ2FuaXNhYXRpby1JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjUiIG5hbWU9Im9yZ2FuaXNhdGlvbnRhYmxlbGlzdF9uYW1lcm93Ij4KKyAgICA8dmFsdWU+TmltaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjYiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGlkMSI+CisgICAgPHZhbHVlPkvDpHl0dMOkasOkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2NyIgbmFtZT0idXNlcnZhbHVlX2xldmVsaWQyIj4KKyAgICA8dmFsdWU+TW9kZXJhYXR0b3JpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2OCIgbmFtZT0idXNlcnZhbHVlX2xldmVsaWQzIj4KKyAgICA8dmFsdWU+WWxsw6RwaXTDpGrDpDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjkiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGxhYmVsIj4KKyAgICA8dmFsdWU+a8OkeXR0w6Rqw6R0YXNvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MCIgbmFtZT0ib3JndmFsdWVfaGVhZGVyIj4KKyAgICA8dmFsdWU+T3JnYW5pc2FhdGlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MSIgbmFtZT0ib3JndmFsdWVfb3JnbmFtZSI+CisgICAgPHZhbHVlPm5pbWk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTcyIiBuYW1lPSJvcmd2YWx1ZV9vcmduYW1lIj4KKyAgICA8dmFsdWU+dXVzaSBvcmdhbmlzYWF0aW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTczIiBuYW1lPSJvcmd2YWx1ZV9vcmduYW1lIj4KKyAgICA8dmFsdWU+dXVzaSBvcmdhbmlzYWF0aW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc0IiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luIj4KKyAgICA8dmFsdWU+cGVydXV0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzUiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW4iPgorICAgIDx2YWx1ZT5saXPDpMOkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3NiIgbmFtZT0ib3JndmFsdWVfdXNlcndpbiI+CisgICAgPHZhbHVlPnBvaXN0YSBvcmdhbmlzYWF0aW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc3IiBuYW1lPSJvcmd2YWx1ZV91c2VybGlzdCI+CisgICAgPHZhbHVlPmvDpHl0dMOkasOkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3OCIgbmFtZT0ib3JndmFsdWVfdXNlcmxpc3RhZGQiPgorICAgIDx2YWx1ZT51dXNpIGvDpHl0dMOkasOkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3OSIgbmFtZT0ib3JndmFsdWVfdXNlcmxpc3RkZWxldGUiPgorICAgIDx2YWx1ZT5wb2lzdGEga8OkeXR0w6Rqw6Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgwIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luaGVhZGVyIj4KKyAgICA8dmFsdWU+dXVzaSBrw6R5dHTDpGrDpDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODEiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5zZWFyY2hmaWVsZCI+CisgICAgPHZhbHVlPmV0c2kga8OkeXR0w6Rqw6TDpDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODIiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5zZWFyY2hidG4iPgorICAgIDx2YWx1ZT5oYWt1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4MyIgbmFtZT0ib3JndmFsdWVfdXNlcndpbnNlYXJjaHJlc3VsdCI+CisgICAgPHZhbHVlPmvDpHl0dMOkasOkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NCIgbmFtZT0ibG9naW53aW5fY2hvb3Nlb3JnYW5pc2F0aW9uIj4KKyAgICA8dmFsdWU+T3JnYW5pc2FhdGlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NSIgbmFtZT0ibG9naW53aW5fY2hvb3Nlb3JnYW5pc2F0aW9uYnRuIj4KKyAgICA8dmFsdWU+aHl2w6Rrc3k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg2IiBuYW1lPSJuYXZpX3Jvb21hZG1pbiI+CisgICAgPHZhbHVlPktvbmZlcmVuc3NpaHVvbmVldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODciIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5Lb25mZXJlbnNzaWh1b25lZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg4IiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+aWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg5IiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+TmltaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTAiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5qdWxraW5lbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTEiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5PcmdhbmlzYWF0aW90PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5MiIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPktva291c2h1b25lZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkzIiBuYW1lPSJyb29tdmFsdWVfbmFtZSI+CisgICAgPHZhbHVlPk5pbWk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk0IiBuYW1lPSJyb29tdmFsdWVfdHlwZSI+CisgICAgPHZhbHVlPlR5eXBwaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTUiIG5hbWU9InJvb212YWx1ZV9pc3B1YmxpYyI+CisgICAgPHZhbHVlPkp1bGtpbmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NiIgbmFtZT0icm9vbXZhbHVlX2NvbW1lbnQiPgorICAgIDx2YWx1ZT5Lb21tZW50dGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk3IiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVpY29uIj4KKyAgICA8dmFsdWU+dGFsbGVubmEgamEgdmllPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5OCIgbmFtZT0id2hpdGVib2FyZF9vcGVuaWNvbiI+CisgICAgPHZhbHVlPmxhdGFhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5OSIgbmFtZT0id2hpdGVib2FyZF9zYXZlYXN3aW5oZWFkZXIiPgorICAgIDx2YWx1ZT50YWxsZW5uYSBuaW1lbGzDpDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDAiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2ludGV4dCI+CisgICAgPHZhbHVlPlRpZWRvc3RvbmltaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDEiIG5hbWU9ImZpbGVzIj4KKyAgICA8dmFsdWU+dGllZG9zdG9uaW1pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMiIgbmFtZT0id2hpdGVib2FyZF9zYXZlYXN3aW5idG4xIj4KKyAgICA8dmFsdWU+cGVydXV0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDMiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2luYnRuMiI+CisgICAgPHZhbHVlPnRhbGxlbm5hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNCIgbmFtZT0icnBjZXJyb3J3aW5faGVhZGVyIj4KKyAgICA8dmFsdWU+VmlyaGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA1IiBuYW1lPSJsb2Fkd21sX2hlYWRlciI+CisgICAgPHZhbHVlPmxhZGF0YWFuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNiIgbmFtZT0ibG9hZHdtbF9tZXNzc2xvYWQiPgorICAgIDx2YWx1ZT5vYmpla3RpYSBsYWRhdHR1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNyIgbmFtZT0ibG9hZHdtbF9tZXNzc3luYyI+CisgICAgPHZhbHVlPnN5bmtyb25pc29pZGFhbiwgb2RvdHRhdmF0IGFzaWFra2FhdDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA4IiBuYW1lPSJsb2FkaW1hZ2VfbWVzc2xvYWQiPgorICAgIDx2YWx1ZT5MYWRhdGFhbiBrdXZhZGF0YWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA5IiBuYW1lPSJsb2FkaW1hZ2VfbWVzc3N5bmMiPgorICAgIDx2YWx1ZT5zeW5rcm9uaXNvaWRhYW4sIG9kb3R0YXZhdCBhc2lha2thYXQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMCIgbmFtZT0ibG9hZHdtbF9jb25maXJtaGVhZGVyIj4KKyAgICA8dmFsdWU+dHloasOkw6QgcGlpcnRvYWx1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTEiIG5hbWU9ImxvYWR3bWxfY29uZmlybW1lc3MiPgorICAgIDx2YWx1ZT50eWhqw6TDpCBwaWlydG9hbHVlLCBrb2tvIHBpaXJ0b2FsdWUgdHloamVubmV0w6TDpG48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEyIiBuYW1lPSJsb2Fkd21sX2NvbmZpcm1tZXNzMiI+CisgICAgPHZhbHVlPlZhcm1pc3RhIGVubmVuIHRpZWRvc3RvbiBsYXRhYW1pc3RhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMyIgbmFtZT0ic2VuZF9pbnZpdGF0aW9uX2J0biI+CisgICAgPHZhbHVlPkzDpGhldMOkIGt1dHN1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNCIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX2hlYWRlciI+CisgICAgPHZhbHVlPkzDpGhldMOkIGt1dHN1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNSIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX3N1YmplY3QiPgorICAgIDx2YWx1ZT5BaWhlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNiIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX3JlY2lwaWVudCI+CisgICAgPHZhbHVlPlZhc3RhYW5vdHRhamE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE3IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fbWVzc2FnZSI+CisgICAgPHZhbHVlPlZpZXN0aTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTgiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9idG5fY29uZmlybSI+CisgICAgPHZhbHVlPkzDpGhldMOkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxOSIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX2J0bl9jYW5jZWwiPgorICAgIDx2YWx1ZT5wZXJ1dXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyMCIgbmFtZT0ic2VuZF9jaGF0X3RleHRfYnRuIj4KKyAgICA8dmFsdWU+bMOkaGV0w6Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIxIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5faGVhZGVyIj4KKyAgICA8dmFsdWU+S8OkeXR0w6Rqw6R0aWV0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjIiIG5hbWU9Imludml0ZWRfdXNlcndpbl9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+TGVtcGluaW1lc2kgdMOkaMOkbiBrb25mZXJlbnNzaWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyMyIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2xvZ2luIj4KKyAgICA8dmFsdWU+TGVtcGluaW1pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNCIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2ZpcnN0bmFtZSI+CisgICAgPHZhbHVlPkV0dW5pbWk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI1IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fbGFzdG5hbWUiPgorICAgIDx2YWx1ZT5TdWt1bmltaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjYiIG5hbWU9Imludml0ZWRfdXNlcndpbl9tYWlsIj4KKyAgICA8dmFsdWU+U8OkaGvDtnBvc3RpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNyIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2xhbmciPgorICAgIDx2YWx1ZT5LaWVsaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjgiIG5hbWU9Imludml0ZWRfdXNlcndpbl9lbnRlciI+CisgICAgPHZhbHVlPmxpc8Okw6Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI5IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZW50ZXIiPgorICAgIDx2YWx1ZT5MYWRhdGFhbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzAiIG5hbWU9Imludml0ZWRfdXNlcndpbl9lbnRlciI+CisgICAgPHZhbHVlPkxhZGF0YWFuLCBvbGUgaHl2w6QgamEgb2RvdGEhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMSIgbmFtZT0idXNlcl9yZWdpc3RlckZhbHNlUFdEIj4KKyAgICA8dmFsdWU+VsOkw6Ryw6Qgc2FsYXNhbmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMyIiBuYW1lPSJ1c2VyX3JlZ2lzdGVyRmFsc2VQV0RIZWFkZXIiPgorICAgIDx2YWx1ZT5Bbm5hIGtha3NpIHNhbWFhIHNhbGFzYW5hYSBqb2lzc2EgdsOkaGludMOkw6RuIDYgbWVya2tpw6Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMzIiBuYW1lPSJ1c2VyX3JlZ2lzdGVyTWFpbEVycm9yIj4KKyAgICA8dmFsdWU+RXDDpGtlbHBvIHPDpGhrw7Zwb3N0aTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzQiIG5hbWU9InVzZXJfcmVnaXN0ZXJNYWlsRXJyb3JIZWFkZXIiPgorICAgIDx2YWx1ZT5Bbm5vaXQgZXDDpGtlbHZvbiBzw6Roa8O2cG9zdGlvc29pdHRlZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM1IiBuYW1lPSJ1c2VyX3JlZ2lzdGVyU3VjY2VzcyI+CisgICAgPHZhbHVlPlJla2lzdGVyw7ZpbnRpIG9ubmlzdHVpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzNiIgbmFtZT0idXNlcl9yZWdpc3RlclN1Y2Nlc3NIZWFkZXIiPgorICAgIDx2YWx1ZT5UaWxpc2kgb24gbHVvdHUsIHZvaXQga2lyamF1dHVhIHNpc8Okw6RuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzciIG5hbWU9InVzZXJfc2hhcmluZ19tZXNzYWdlIj4KKyAgICA8dmFsdWU+RXQgdm9pIGpha2FhIHJ1dXR1YSB0w6RsbMOkIGhldGtlbGzDpCwga29za2Egam9rdSBtdXUgamFrYWEgam8gb21hYSBydXV0dWFhbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM4IiBuYW1lPSJ1c2VyX3NoYXJpbmdfbWVzc2FnZUhlYWRlciI+CisgICAgPHZhbHVlPkpha2FtaW5lbiBraWVsbGV0dHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM5IiBuYW1lPSJ1c2VyX2RvU3RhcnRTY3JlZW5WaWV3ZXIiPgorICAgIDx2YWx1ZT5KYWEgcnV1dHVzaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDAiIG5hbWU9InNjcmVlbl93YXJuQmFuZHdpZHRoIj4KKyAgICA8dmFsdWU+S2Fpc3RhbmxldmV5cyBlaSByaWl0w6Q6IEV0IHB5c3R5IHN5bmtyb25pc29pbWFhbiBydXV0dWEuIFJ1dWR1bnDDpGl2aXR5a3Npw6Qgc2FhdHRhYSBqw6TDpGTDpCBwb2lzLiBKb3MgdMOkbcOkIGlsbW9pdHVzIHRvaXN0dXUgdXNlaW4sIHZvaXQgcHl5dMOkw6QgbW9kZXJhYXR0b3JpYSBwaWVuZW50w6Rtw6TDpG4ga3V2YW4gbGFhdHVhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDEiIG5hbWU9InNjcmVlbl91c2VybGFiZWwiPgorICAgIDx2YWx1ZT5Lw6R5dHTDpGrDpG4gcnV1dHU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0MiIgbmFtZT0id2hpdGVib2FyZF90YWJfcGFpbnQiPgorICAgIDx2YWx1ZT5NYWFsYWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQzIiBuYW1lPSJ3aGl0ZWJvYXJkX3RhYl9kb2N1bWVudCI+CisgICAgPHZhbHVlPkRva3VtZW50dGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ0IiBuYW1lPSJ0YWJiYXJfY2hhdGljb24iPgorICAgIDx2YWx1ZT5LZXNrdXN0ZWx1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0NSIgbmFtZT0idGFiYmFyX2ZpbGVzaWNvbiI+CisgICAgPHZhbHVlPlRpZWRvc3RvdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDYiIG5hbWU9InRhYmJhcl9wYXJ0aWNpcGFudHNpY29uIj4KKyAgICA8dmFsdWU+SsOkc2VuZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ3IiBuYW1lPSJzd2ZwcmVzZW50YXRpb25fbGlzdHNhdmVvcmlnIj4KKyAgICA8dmFsdWU+TGF0YWEgYWxrdXBlcsOkaW5lbiBkb2t1bWVudHRpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0OCIgbmFtZT0ic3dmcHJlc2VudGF0aW9uX2xpc3RzYXZlcGRmIj4KKyAgICA8dmFsdWU+TGF0YWEgcGRmLWRva3VtZW50dGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ5IiBuYW1lPSJzd2ZwcmVzZW50YXRpb25fbGlzdGxvYWRzd2YiPgorICAgIDx2YWx1ZT5MYXRhYSBlc2l0eXMgcGlpcnRvYWx1ZWVsbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUwIiBuYW1lPSJuYXZpbWFpbl9jb25maWciPgorICAgIDx2YWx1ZT5Bc2V0dWtzZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUxIiBuYW1lPSJ3aGl0ZWJvYXJkX2JvdW5kaW5nYm94X2RyYWciPgorICAgIDx2YWx1ZT5SYWFoYSB0w6R0w6Qgb2JqZWt0aWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUyIiBuYW1lPSJ3aGl0ZWJvYXJkX2JvdW5kaW5nYm94X3Jlc2l6ZSI+CisgICAgPHZhbHVlPk11dXRhIG9iamVrdGluIGtva29hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MyIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfem9vbSI+CisgICAgPHZhbHVlPiU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU0IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9zbGlkZSI+CisgICAgPHZhbHVlPm9mPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1NSIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfZmlyc3RzbGlkZSI+CisgICAgPHZhbHVlPk1lbmUgZW5zaW1tw6Rpc2VsbGUgc2l2dWxsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTYiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3ByZXNsaWRlIj4KKyAgICA8dmFsdWU+TWVuZSBlZGVsbGlzZWxsZSBzaXZ1bGxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1NyIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfbmV4dHNsaWRlIj4KKyAgICA8dmFsdWU+TWVuZSBzZXVyYWF2YWxsZSBzaXZ1bGxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1OCIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfbGFzdHNsaWRlIj4KKyAgICA8dmFsdWU+TWVuZSB2aWltZWlzZWxsZSBzaXZ1bGxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1OSIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfem9vbW1pbnVzIj4KKyAgICA8dmFsdWU+Wm9vbSAtLTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjAiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3pvb21wbHVzIj4KKyAgICA8dmFsdWU+Wm9vbSArKzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjEiIG5hbWU9InNhbHV0YXRpb25fbXIiPgorICAgIDx2YWx1ZT5IZXJyYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjIiIG5hbWU9InNhbHV0YXRpb25fbWlzcyI+CisgICAgPHZhbHVlPlJvdXZhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MyIgbmFtZT0ibmF2aW1haW5fY29uZmFkbWluIj4KKyAgICA8dmFsdWU+QXNldHVrc2V0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2NCIgbmFtZT0iY29uZnRhYmxlX2hlYWRlcklkIj4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY1IiBuYW1lPSJjb25mdGFibGVfaGVhZGVya2V5Ij4KKyAgICA8dmFsdWU+QXZhaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY2IiBuYW1lPSJjb25mYWRtaW5mb3JtX2hlYWRlciI+CisgICAgPHZhbHVlPkFzZXR1a3NldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjciIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWxrZXkiPgorICAgIDx2YWx1ZT5BdmFpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjgiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWx1cGRhdGVkIj4KKyAgICA8dmFsdWU+ZWRlbGxpbmVuIHDDpGl2aXR5czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjkiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWx1cGRhdGVkYnkiPgorICAgIDx2YWx1ZT5ww6Rpdml0eWtzZW4gdGVraWrDpDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzAiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWxjb21tZW50Ij4KKyAgICA8dmFsdWU+a29tbWVudHRpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MSIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbGtleSI+CisgICAgPHZhbHVlPkFydm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjcyIiBuYW1lPSJ0dXJub3Zlcmxpc3RfbWF4cmVzdWx0cyI+CisgICAgPHZhbHVlPi88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjczIiBuYW1lPSJvcmdhbmlzYXRpb25fdXNlcnNoZWFkZXIiPgorICAgIDx2YWx1ZT5Lw6R5dHTDpGrDpHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc0IiBuYW1lPSJvcmdhbmlzYXRpb25fdXNlcnNpY29uZGVsZXRlIj4KKyAgICA8dmFsdWU+cG9pc3RhIGvDpHl0dMOkasOkIG9yZ2FuaXNhYXRpb3N0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzUiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2RlbGV0ZWRoZWFkIj4KKyAgICA8dmFsdWU+cG9pc3RhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NiIgbmFtZT0ib3JnYW5pc2F0aW9uX3VzZXJzYWxyZWFkYWRkZWQiPgorICAgIDx2YWx1ZT5Lw6R5dHTDpGrDpCBvbiBqbyB0w6Rtw6RuIG9yZ2FuaXNhYXRpb24gasOkc2VuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzciIG5hbWU9ImRhc2hib2FyZF9uZXdzaGVhZGVyIj4KKyAgICA8dmFsdWU+VXV0aXNldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzgiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtzaGVhZGVyIj4KKyAgICA8dmFsdWU+UGlrYWxpbmtpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzkiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtDb25mIj4KKyAgICA8dmFsdWU+TWVuZSBrb25mZXJlbnNzaWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MCIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua0F1ZGl0Ij4KKyAgICA8dmFsdWU+TWVuZSBhdWRpdG9yaW9vbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODEiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtzdXBwb3J0Ij4KKyAgICA8dmFsdWU+QXB1YSBqYSB0dWtlYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODIiIG5hbWU9ImRhc2hib2FyZF9xdWlja2hvbWVwYWdldXJsIj4KKyAgICA8dmFsdWU+aHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnLzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODMiIG5hbWU9ImRhc2hib2FyZF9xdWlja21haWxpbmdsaXN0dXJsIj4KKyAgICA8dmFsdWU+aHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnL21haWwtbGlzdHMuaHRtbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODQiIG5hbWU9ImRhc2hib2FyZF9yZXBvcnRidWdzIj4KKyAgICA8dmFsdWU+SWxtb2l0YSBidWdpITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODUiIG5hbWU9ImRhc2hib2FyZF9yc3NsaXN0aXRlbWxpbmt0ZXh0Ij4KKyAgICA8dmFsdWU+bGlzw6TDpDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODYiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtob21lcGFnZWxhYmVsIj4KKyAgICA8dmFsdWU+UHJvamVrdGluIHdlYi1zaXZ1dCAoaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODciIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmttYWlsaW5nbGlzdGxhYmVsIj4KKyAgICA8dmFsdWU+S8OkeXR0w6RqaWVuIHBvc3RpdHVzbGlzdGEgKGh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9tYWlsLWxpc3RzLmh0bWwpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4OCIgbmFtZT0ibG9naW5fcmVtZW1iZXJ1c2VyIj4KKyAgICA8dmFsdWU+TXVpc3RhIGtpcmphdXR1bWluZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg5IiBuYW1lPSJtYWluX25hdmkiPgorICAgIDx2YWx1ZT5TaXPDpGx0w7Y8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkwIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+T21hIHNpdnU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkxIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+VHVsZXZhdCBrb2tvdWtzZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkyIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+T21hdCB0dWxldmF0IGtva291a3NldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTMiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5KdWxraXNldCBrb2tvdWtzZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk0IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+WWtzaXR5aXNldCBrb2tvdWtzZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk1IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+SnVsa2lzZXQgdGFwYWh0dW1hdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTYiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5Za3NpdHlpc2V0IHRhcGFodHVtYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk3IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+SnVsa2luZW4gc2lzw6RsdMO2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5OCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPllrc2l0eWluZW4gc2lzw6RsdMO2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5OSIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPkhlbmtpbMO2a29odGFpbmVuIHNpc8OkbHTDtjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDAiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAxIiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+TW9kZXJvaW50aTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDIiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5IYWUgbW9kZXJvaW50aW9pa2V1dHRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMyIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPkt5c2VseXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA0IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+VmFsaXRzZSB0aWVkb3N0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDUiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5Bc2V0dWtzZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA2IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+S2FtZXJhIGphIG1pa3JvZm9uaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDciIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5QaWlydG9hbHVlZW4gYXNldHVrc2V0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwOCIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPlBvaXN0dTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDkiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5UYWthaXNpbiBodW9uZWlzaWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMCIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPlBvaXN0dTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTEiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+VW5vaGRpdGtvIHNhbGFzYW5hc2k/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMiIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5Ob2xsYWEgc2FsYXNhbmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEzIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlPDpGhrw7Zwb3N0aWxsYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTQiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+S8OkeXR0w6Rqw6R0dW5udWtzZWxsYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTUiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+U8OkaGvDtnBvc3Rpc2k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE2IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlR1bm51a3Nlc2k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE3IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPkzDpGhldMOkIHPDpGhrw7Zwb3N0aSBub2xsYXVzbGlua2lsbMOkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxOCIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5Tw6Roa8O2cG9zdGlvc29pdGV0dGEgZWkgbMO2eXR5bnl0LiBWYXJtaXN0YSBldHTDpCBhbm5vaXQgc2FtYW4gb3NvaXR0ZWVuIGt1aW4gbWl0w6Qga8OkeXRpdCByZWtpc3RlcsO2aXR5ZXNzw6RzaS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE5IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPkFubmEgc8OkaGvDtnBvc3Rpb3NvaXRlIHRhaSBrw6R5dHTDpGrDpHR1bm51czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjAiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+S8OkeXR0w6Rqw6R0dW5udXN0YSBlaSBvbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIxIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPkxpbmtpbiBzaXPDpGx0w6R2w6Qgc8OkaGvDtnBvc3RpIG9uIGzDpGhldGV0dHkgb3NvaXR0ZWVzZWVzaSwgb2xlIGh5dsOkIGphIHRhcmtpc3RhIHPDpGhrw7Zwb3N0aXNpLiBKb3MgZXQgb2xlIHZpZWzDpCB2YXN0YWFub3R0YW51dCB2aWVzdGnDpCwgdGFya2lzdGEgcm9za2Fwb3N0aWFzZXR1a3Nlc2kgamEgeXJpdMOkIHV1ZGVzdGFhbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIyIiBuYW1lPSJlcnJvcnR5cGUiPgorICAgIDx2YWx1ZT5WaXJoZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjMiIG5hbWU9ImVycm9ydHlwZSI+CisgICAgPHZhbHVlPlZpZXN0aTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjQiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPkVww6RrZWxwbyBoYXNoLiBLw6R5dHTDpGrDpMOkIGVpIGzDtnlkeS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI1IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5Ob2xsYWEgc2FsYXNhbmFzaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjYiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPktpcmphdWR1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNyIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+dmFpaGRhIHNhbGFzYW5hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyOCIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+dXVzaSBzYWxhc2FuYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjkiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPnNhbGFzYW5hIHV1ZGVzdGFhbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzAiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPkFudGFtYXNpIHNhbGFzYW5hdCBlaXbDpHQgdMOkc23DpG5uZWV0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzEiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPjQgbWVya2tpw6QgdGFpIHBpZGVtcGk7IGlzb2lsbGEga2lyamFpbWlsbGEgb24gbWVya2l0eXN0w6QhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzMiIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+U2FsYXNhbmEgYXNldGV0dHUuIFZvaXQgbnl0IGtpcmphdXR1YSBzaXPDpMOkbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMzIiBuYW1lPSJycGNjYWxsYmFjayI+CisgICAgPHZhbHVlPk9LPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNCIgbmFtZT0icnBjZ2VuZXJhbGVycm9yIj4KKyAgICA8dmFsdWU+VHVudGVtYXRvbiB2aXJoZS4gT2xlIGh5dsOkIGphIGlsbW9pdGEgdmlyaGVlc3TDpCB0dWtpdGlpbWlsbGVzaS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM1IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPkvDpHl0dMOkasOkw6QgZWkgbMO2eWR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNiIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5FcMOka2VscG8gc2FsYXNhbmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM3IiBuYW1lPSJsb2dvdXQiPgorICAgIDx2YWx1ZT5VbG9za2lyamF1dHVtaW5lbiBvbm5pc3R1aTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzgiIG5hbWU9InJlZ2lzdHJhdGlvbiI+CisgICAgPHZhbHVlPlJla2lzdGVyw7ZpbnRpIG9uIHBvaXNzYSBrw6R5dMO2c3TDpC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM5IiBuYW1lPSJyZWdpc3RyYXRpb24iPgorICAgIDx2YWx1ZT5FcMOka2VscG8gc8OkaGvDtnBvc3RpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MCIgbmFtZT0icmVnaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+c2FtYW4gbmltaW5lbiB0aWVkb3N0byBvbiBqbyBvbGVtYXNzYSwgdmFsaXRzZSB0b2luZW4gbmltaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDEiIG5hbWU9ImZpbGVicm93c2VyIj4KKyAgICA8dmFsdWU+dGllZG9zdG9uaW1pIGxpaWFuIGx5aHl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MiIgbmFtZT0iZmlsZWJyb3dzZXIiPgorICAgIDx2YWx1ZT5FaSB2b2l0dSB0YWxsZW50YWEgb3NvaXRldHRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MyIgbmFtZT0idXNlcmFkbWluIj4KKyAgICA8dmFsdWU+S8OkeXR0w6Rqw6QgbGlzw6R0dHksIG11dHRhIHNpbnVuIHTDpHl0eXkgbGlzw6R0w6QgdMOkbcOkIGvDpHl0dMOkasOkIGpvaG9ua2luIG9yZ2FuaXNhYXRpb29uIGpvdHRhIGjDpG4gdm9pIGtpcmphdXR1YSBzaXPDpMOkbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ0IiBuYW1lPSJhZG1pbmZvcm1zIj4KKyAgICA8dmFsdWU+VXVzaSB0aWV0dWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ1IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5LZW50dMOkw6QgZWkgbMO2eXR5bnl0IGtlbnTDpG4gaWQ6bGzDpC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ2IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5LZW50w6RsbGUgZWkgbMO2eWR5IGt1dmF1c3RhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDciIG5hbWU9ImVycm9ybWVzc2FnZSI+CisgICAgPHZhbHVlPllsbMOkcGl0w6Rqw6RuIG9pa2V1ZGV0IHRhcnZpdGFhbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ4IiBuYW1lPSJtYWlubmF2aSI+CisgICAgPHZhbHVlPktpZWxpZW4gbXVva2thdXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ5IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5LaWVsaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTAiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPk5pbWktSUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUxIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5LdXZhdXMtTmltaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTIiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkFydm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUzIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5LZW50w6RuIGFydm90PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1NCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+S3V2YXVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1NSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+QXJ2bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTYiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkt1dmF1cy1JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTciIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPlBvaXN0aXQgcGVsa8OkbiBrdXZhdWtzZW4gZXRrw6Qga2VudHTDpMOkISBFdCB2b2kgcG9pc3RhYSBrZW50dMOkw6QsIHNpbGzDpCB2b2kgb2xsYSBrdXZhdWtzaWEgbXVpbGxhIGtpZWxpbGzDpC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU4IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5FcMOka2VscG8ga3V2YXVzLUlELiBLZW50dMOkw6QgRmllbGRMYW5ndWFnZXN2YWx1ZXNfSWQgZWkgbMO2eWR5IHRpZXRva2FubmFzdGEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1OSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+RXQgdm9pIHBvaXN0YWEgdMOkdMOkIGtlbnR0w6TDpC4gVm9pdCBhaW5vc3RhYSBwb2lzdGFhIGt1dmF1a3NpYSwgZXQga2VudHRpw6QuIEt1dmF1c3RhIGVpIG9sZSBsYWRhdHR1bmEgbnl0LCBqb2tvIHNpdMOkIGVpIG9sZSB2YWxpdHR1bmEgbWlzdMOkw6RuIGtlbnTDpHN0w6QgdGFpIHTDpGxsZSBraWVsZWxsZSBlaSBvbGUgbcOkw6RyaXRlbHR5IGt1dmF1a3NlbiBtdWthaXN0YSBrZW50dMOkw6QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+dmllPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+U2ludW4gdMOkeXR5eSBraXJqYXVkdWEgdXVkZXN0YWFuIG7DpGhkw6Rrc2VzaSBtdXV0b2tzZXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TGlzw6TDpCBraWVsaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjMiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPnBvaXN0YSBraWVsaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjQiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkxpc8Okw6Qga2llbGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY1IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5OaW1pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+bGlzw6TDpCBraWVsaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjciIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPlZhcm11dXNrb3Bpb2ludGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY4IiBuYW1lPSJ0dXJub3Zlcmxpc3QiPgorICAgIDx2YWx1ZT5tZW5lIGFsa3V1bjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjkiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPmVkZWxsaW5lbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzAiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPnNldXJhYXZhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MSIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+dmlpbWVpbmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MiIgbmFtZT0idmlkZW9ib3giPgorICAgIDx2YWx1ZT5rw6R5dHTDpGrDpCBwdWh1dSAoQnkgY2xpY2tpbmcgaGVyZSB5b3UgY2FuIGdpdmUgZXhjbHVzaXZlIGF1ZGlvIC8gbXV0ZSB0aGUgbWljcm9waG9uZSBvZiBvdGhlcnMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MyIgbmFtZT0idmlkZW9ib3giPgorICAgIDx2YWx1ZT7DpMOkbmkgcMOkw6RsbGUvcG9pczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPkrDpHJqZXN0ZWxtw6Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc1IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5Bc2V0dWtzZXNpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3NiIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+aGVpLDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzciIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPk11b2trYWEgcHJvZmlpbGlhc2k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc4IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5VdWRldCB2aWVzdGl0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzkiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPkxhdGFhIHV1c2kga3V2YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODAiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+S8OkeXR0w6Rqw6RkYXRhIC0gVmllPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4MSIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5PcmdhbmlzYWF0aW9pZGVuIHTDpHl0eXkgb2xsYSBqbyBvbGVtYXNzYSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgyIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPmFsb2l0YSB2aWVudGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgzIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPk9yZ2FuaXNhYXRpb24gbXVrYWFuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NCIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5hbG9pdGEgdmllbnRpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NSIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5Lw6R5dHTDpGrDpGRhdGEgLSBUdW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg2IiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPnZhbGl0c2UgdXNlcnMueG1sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+dHVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4OCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+VmllIFhNTC10aWVkb3N0b2tzaSAtIE7DpGl0w6QgdGllZG9zdG9qYSB2b2lkYWFuIGvDpHl0dMOkw6Q6IFByb2pla3RpaW4gb3NhbGxpc3R1bWluZW4gLSBUb2lzZWVuIGrDpHJqZXN0ZWxtw6TDpG4gdmllbnRpIC0gVmFybXV1c2tvcGlvaW50aSAtIE11a2F1dHVzIC0gTGFpdGEgc2UgaGFrZW1pc3Rvb24gbGFuZ3VhZ2Ugc2V1cmFhdmFhIGFzZW5udXN0YXNpIHZhcnRlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg5IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5WYWxpdHNlIGtpZWxpdGllZG9zdG8gdHVvdGF2YWtzaS4gVmFsaXRzZSBvaWtlYSBraWVsaSB2YWxpbnRhbGlzdGFsdGEhIFTDpG3DpCBtw6TDpHLDpMOkIGFzZXRldHRhdmFuIGtpZWxlbiB0aWVkb3N0b24gbmltZXN0w6QgcmlpcHB1bWF0dGEhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5MCIgbmFtZT0iaW1wb3J0d2luZG93Ij4KKyAgICA8dmFsdWU+dHVvbnRpIC0gdmFsaXRzZSB0aWVkb3N0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTEiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT5UYWxsZW5uYSBuaW1lbGzDpDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTIiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT5OaW1pOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTMiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT5Lb21tZW50dGk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NCIgbmFtZT0icmVjb3JkaW5nc2F2ZXdpbiI+CisgICAgPHZhbHVlPnRhbGxlbm5hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+TmF1aG9pdHVrc2V0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NiIgbmFtZT0icmVjb3JkZXIiPgorICAgIDx2YWx1ZT5OYXVob2l0dXN0ZW4ga2F0c2VsdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTciIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkp1bGtpc3RlbiBqYSB5a3NpdHlpc3RlbiBodW9uZWlkZW4gbmF1aG9pdHVrc2V0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5OCIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+S8OkeXR0w6Rqw6R0IDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk5IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5MaWl0dHlueXQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMCIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMSIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+S8OkeXR0w6RqacOkIGh1b25lZXNzYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAyIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5ww6Rpdml0w6Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAzIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5Uw6Rtw6QgaHVvbmUgb24gdMOkeW5uw6QuIFlyaXTDpCB1dWRlc3RhYW4gbXV1dGFtYW4gbWludXV0aW4ga3VsdXR0dWEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNCIgbmFtZT0icm9vbXNMaXN0Ij4KKyAgICA8dmFsdWU+a2xpa2thYSBodW9uZXR0YSBzYWFkYWtzZXNpIGxpc8OkdGlldG9qYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDUiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPktlc2t1c3RlbGUgdMOkbcOkbiBodW9uZWVuIGvDpHl0dMOkamllbiBrYW5zc2E6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNiIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+SHVvbmU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNyIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+S8OkeXR0w6Rqw6R0IGh1b25lZXNzYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA4IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5zaW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA5IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT50b2lzdGEgbmF1aG9pdHVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMCIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+UGl0dXVzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTEiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPlDDpGl2w6Rtw6TDpHLDpDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDEyIiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5OYXVob2l0dXN0aWxhISBFdCB2b2kgbXV1dHRhYSBhcnZvamEsIHTDpG3DpCBvbiBuYXVob2l0ZXR0dSB0aWVkb3N0byE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDEzIiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5Ub2lzdGEgbmF1aG9pdHVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxNCIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+VG9pc3RhIC8gS2Vza2V5dMOkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxNSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+QWxvaXRhIG5hdWhvaXR1czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTYiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPnB5c8OkeXTDpCBuYXVob2l0dXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE3IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5OYXVob2l0dGFhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTgiIG5hbWU9InJlY29yZF9lcnJvcl9tc2ciPgorICAgIDx2YWx1ZT5Kb2t1IG9uIGpvIG5hdWhvaXR0YW1hc3NhIHTDpGxsw6QgaGV0a2VsbMOkOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTkiIG5hbWU9InJlY29yZF9tZXNzYWdlIj4KKyAgICA8dmFsdWU+TmF1aG9pdGV0YWFuISBLw6R5dHTDpGrDpDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIwIiBuYW1lPSJyZWNvcmRfY2FuY2VsIj4KKyAgICA8dmFsdWU+cGVydXV0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjEiIG5hbWU9InJlY29yZF9jYW5jYWxfdG9vbHRpcCI+CisgICAgPHZhbHVlPk5hdWhvaXR1cyBwZXJ1dXRldGFhbiBqYSBzaXTDpCBlaSB0YWxsZW5uZXRhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjIiIG5hbWU9ImNhbmNlbF9kaWFsb2dfcmVzdW1lIj4KKyAgICA8dmFsdWU+cGFsYWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIzIiBuYW1lPSJjYW5jZWxfZGlhbG9nX3Jlc3VtZV90b29sdGlwIj4KKyAgICA8dmFsdWU+U3VsamUgaWtrdW5hIGphIGphdGthIG5hdWhvaXR1c3RhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyNCIgbmFtZT0icGFpbnR0b29sc19lbGxpcHNlX2NvbG9yIj4KKyAgICA8dmFsdWU+bXV1dGEgdmlpdmFuIHbDpHJpw6Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI1IiBuYW1lPSJjb2xvcnBpY2tlcl9oZWFkIj4KKyAgICA8dmFsdWU+VmFsaXRzZSB2w6RyaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjYiIG5hbWU9InBhaW50dG9vbHNfbGluZV9kaXNhYmxlIj4KKyAgICA8dmFsdWU+VmlpdmFuIHbDpHJpIHDDpMOkbGxlL3BvaXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI3IiBuYW1lPSJwYWludHRvb2xzX2ZpbGxfZGlzYWJsZSI+CisgICAgPHZhbHVlPm11dXRhIHTDpHl0w7ZuIHbDpHJpw6Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI4IiBuYW1lPSJwYWludHRvb2xzX2xpbmVfZGlzYWJsZSI+CisgICAgPHZhbHVlPnTDpHl0dMO2dsOkcmkgcMOkw6RsbGUvcG9pczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjkiIG5hbWU9ImNoYW5nZV93aWR0aF9hcnJvd19kb3duX3NsaWRlciI+CisgICAgPHZhbHVlPk11dXRhIHZpaXZhbiBsZXZleXR0w6Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMwIiBuYW1lPSJjbG9zZV9zbWFsbF9wb3B1cHMiPgorICAgIDx2YWx1ZT5zdWxqZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzEiIG5hbWU9InBhaW50X3Rvb2xfbGV0dGVyIj4KKyAgICA8dmFsdWU+bXV1dGEgZm9udGluIGtva29hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzMiIgbmFtZT0icmVjb3JkaW5nc2xpc3RfZGVsZXRlIj4KKyAgICA8dmFsdWU+UG9pc3RhIG5hdWhvaXR1czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzMiIG5hbWU9InJlY29yZGluZ3NsaXN0X3JlY29yZGVkQnlHdWVzdCI+CisgICAgPHZhbHVlPlZpZXJhczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzQiIG5hbWU9InJlY29yZGluZ3NsaXN0X3JlY29yZGVkYnkiPgorICAgIDx2YWx1ZT5UZWhueXQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNSIgbmFtZT0icmVjb3JkaW5nc190YWJsZV9oZWFkX25hbWUiPgorICAgIDx2YWx1ZT5OaW1pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNiIgbmFtZT0icmVjb3JkaW5nc190YWJsZV9oZWFkX3Jvb20iPgorICAgIDx2YWx1ZT5IdW9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzciIG5hbWU9InJlY29yZGluZ3NfdGFibGVfaGVhZF9kYXRlIj4KKyAgICA8dmFsdWU+QWlrYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzgiIG5hbWU9InJlY29yZF9zdGFydF9jYW5jZWwiPgorICAgIDx2YWx1ZT5wZXJ1dXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzOSIgbmFtZT0icmVjb3JkX3N0YXJ0X3N0YXJ0Ij4KKyAgICA8dmFsdWU+YWxvaXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MCIgbmFtZT0iZmlsZXNicm93c2VyX3RhYmxlX2hlYWRfbmFtZSI+CisgICAgPHZhbHVlPk5pbWk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQxIiBuYW1lPSJmaWxlc2Jyb3dzZXJfdGFibGVfaGVhZF9kYXRlIj4KKyAgICA8dmFsdWU+UMOkaXbDpG3DpMOkcsOkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MiIgbmFtZT0iY2hhdF9jbGVhcl9oaXN0b3J5Ij4KKyAgICA8dmFsdWU+UG9pc3RhIHBhbHZlbGltZW4ga2Vza3VzdGVsdWxva2k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQzIiBuYW1lPSJjaGF0X292ZXJhbGxfaGVhZGVyIj4KKyAgICA8dmFsdWU+S2Vza3VzdGVsdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDQiIG5hbWU9ImNoYXRfc2VuZF9idG4iPgorICAgIDx2YWx1ZT5sw6RoZXTDpCB2aWVzdGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ1IiBuYW1lPSJjaGF0X2Vtb3RfYnRuIj4KKyAgICA8dmFsdWU+SHltacO2dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDYiIG5hbWU9ImNoYXRfZW1vdF93aW4iPgorICAgIDx2YWx1ZT5IeW1pw7Z0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NyIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzIj4KKyAgICA8dmFsdWU+VmFsaXRzZSBqdWxrYWlzdGF2YXQgbGFpdHRlZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ4IiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT7DhMOkbmkgamEgdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ5IiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT5WYWluIMOkw6RuaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTAiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPlZhaW4gdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUxIiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT5FaSDDpMOkbnTDpC92aWRlb3RhIChraWludGXDpCBrdXZhKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTIiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19pbmZvX3RleHQiPgorICAgIDx2YWx1ZT7DhMOkbnTDpC9rdXZhYSB0aWV0b2tvbmVlbHRhIGVpIGp1bGthaXN0YS4gUHJvZmlpbGlrdXZhc2kgbsOkeXRldMOkw6RuIHNlbiBzaWphYW4uIFZhbGl0c2UgdMOkbcOkIGFzZXR1cyBqb3Mgc2ludWxsYSBvbiBvbmdlbG1pYSB5aHRleXRlc2kga2Fuc3NhIHRhaSB5aHRleXRlc2kgb24gZXJpdHTDpGluIGhpZGFzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTMiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfbW9uZGF5Ij4KKyAgICA8dmFsdWU+TUE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU0IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3R1ZXNkYXkiPgorICAgIDx2YWx1ZT5USTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTUiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfd2VkbmVzZGF5Ij4KKyAgICA8dmFsdWU+S0U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU2IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3RodXJzZGF5Ij4KKyAgICA8dmFsdWU+VE88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU3IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX2ZyaWRheSI+CisgICAgPHZhbHVlPlBFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1OCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9zYXR1cmRheSI+CisgICAgPHZhbHVlPkxBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1OSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9zdW5kYXkiPgorICAgIDx2YWx1ZT5TVTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjAiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfbW9uZGF5Ij4KKyAgICA8dmFsdWU+TWFhbmFudGFpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9UdWVzZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5UaWlzdGFpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MiIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9XZWRuZXNkYXlMYWJlbCI+CisgICAgPHZhbHVlPktlc2tpdmlpa2tvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MyIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9UaHVyc2RheUxhYmVsIj4KKyAgICA8dmFsdWU+VG9yc3RhaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjQiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfRnJpZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5QZXJqYW50YWk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY1IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1NhdHVyZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5MYXVhbnRhaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjYiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfU3VuZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5TdW5udW50YWk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY3IiBuYW1lPSJjYWxlbmRhcl93ZWVrbnVtYmVyX2hlYWRlciI+CisgICAgPHZhbHVlPktWPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2OCIgbmFtZT0iY2FsZW5kYXJfd2Vla251bWJlcl9oZWFkZXJUb29sdGlwIj4KKyAgICA8dmFsdWU+S2FsZW50ZXJpdmlpa2tvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2OSIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPlRhbW1pa3V1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3MCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPkhlbG1pa3V1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3MSIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPk1hYWxpc2t1dTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzIiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5IdWh0aWt1dTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzMiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5Ub3Vrb2t1dTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzQiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5LZXPDpGt1dTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzUiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5IZWluw6RrdXU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc2IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+RWxva3V1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3NyIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPlN5eXNrdXU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc4IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+TG9rYWt1dTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzkiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5NYXJyYXNrdXU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgwIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+Sm91bHVrdXU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgxIiBuYW1lPSJjYWxlbmRhcndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5LYWxlbnRlcmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgyIiBuYW1lPSJyb29tYWRtaW5fbGFiZWxOdW1iZXJPZlBhcnRpY2lwYW50cyI+CisgICAgPHZhbHVlPk9zYW5vdHRhamF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4MyIgbmFtZT0icm9vbVZhbHVlX2FkdmFuY2VkU2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Ow6R5dMOkIGFzZXR0ZWx1biBhc2V0dWtzZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg0IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3ZpZGVvWCI+CisgICAgPHZhbHVlPlggfCBZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NSIgbmFtZT0icm9vbUFkbWluX2xheW91dF92aWRlb1kiPgorICAgIDx2YWx1ZT5MZXZleXMgfCBLb3JrZXVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NiIgbmFtZT0icm9vbUFkbWluX2xheW91dCI+CisgICAgPHZhbHVlPlZpZGVvLVPDpGlsacO2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NyIgbmFtZT0icm9vbUFkbWluX2xheW91dF9tb2QiPgorICAgIDx2YWx1ZT5Nb2RlcmFhdGlvLVPDpGlsacO2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4OCIgbmFtZT0icm9vbUFkbWluX2xheW91dF9tb2RfcG9zIj4KKyAgICA8dmFsdWU+WDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODkiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPlBpaXJ0b2FsdWUtU8OkaWxpw7Y8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkwIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmRfc2hvdyI+CisgICAgPHZhbHVlPlDDpMOkbGzDpDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTEiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZF9wb3MiPgorICAgIDx2YWx1ZT5YIHwgWTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTIiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkxldmV5cyB8IEtvcmtldXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkzIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X2ZpbGVzIj4KKyAgICA8dmFsdWU+VGllZG9zdG90LEtlc2t1c3RlbHUsT3Nhbm90dGFqYXQgLSBTw6RpbGnDtjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTQiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXNfc2hvdyI+CisgICAgPHZhbHVlPlDDpMOkbGzDpDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTUiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXNfcG9zIj4KKyAgICA8dmFsdWU+WCB8WTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTYiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXMiPgorICAgIDx2YWx1ZT5MZXZleXMgfCBLb3JrZXVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NyIgbmFtZT0ibW9kZXJhdG9yX2dvbmVfbWVzc2FnZSI+CisgICAgPHZhbHVlPk1vZGVyYWF0dG9yaSBvbiBsw6RodGVueXQgaHVvbmVlc3RhLCBrdWthYW4gZWkgb2xlIGVzaXR0w6Rqw6Ruw6QgdMOkbGzDpCBoZXRrZWxsw6QuIFZvaXQgaGFrZWEgbW9kZXJhYXR0b3JpbiBvaWtldWtzaWEgdGFpIG9kb3R0YWEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5OCIgbmFtZT0ibW9kZXJhdG9yX21lc3NhZ2VfZXZlbnRfbm9fbW9kIj4KKyAgICA8dmFsdWU+VMOkc3PDpCBodW9uZWVzc2Egb24gbXV1dGFtYSBvc2Fub3R0YWphIG11dHRhIGVpIG1vZGVyYWF0dG9yaWEuIFZvaXQgaGFrZWEgbW9kZXJhYXR0b3JpbiBvaWtldWtzaWEgdGFpIG9kb3R0YWEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5OSIgbmFtZT0iZmVlZGJhY2tfdGVtcGxhdGVfc3ViamVjdCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSBwYWxhdXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwMCIgbmFtZT0iaW52aXRhdGlvbl90ZW1wbGF0ZV9oZWFkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIC0gS3V0c3U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAxIiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfZnJvbSI+CisgICAgPHZhbHVlPlZpZXN0aSBrw6R5dHTDpGrDpGx0w6Q6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwMiIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X21lc3NhZ2UiPgorICAgIDx2YWx1ZT5WaWVzdGk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwMyIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X2NsaWNrX3RleHQiPgorICAgIDx2YWx1ZT5Lw6R5dMOkIHTDpHTDpCBsaW5ra2nDpCBvdHRhYWtzZXNpIG9zYWEga29rb3Vrc2Vlbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA0IiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfY2xpY2tfdGV4dF9saW5rIj4KKyAgICA8dmFsdWU+S2xpa2thYSB0w6RzdMOkIGxpaXR0ecOka3Nlc2kgaHVvbmVlc2VlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDUiIG5hbWU9Imludml0YXRpb25fdGV4dF9jbGlja190ZXh0X2hlbHAiPgorICAgIDx2YWx1ZT5qb3MgbGlua2luIGthbnNzYSBvbiBvbmdlbG1pYSwgb2xlIGh5dsOkIGphIGtvcGlvaSBzZSBzZWxhaW1lc2kgb3NvaXRlcml2aWxsZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA2IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSBSZWtpc3RlcsO2aW50aTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDciIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9oZWFkMiI+CisgICAgPHZhbHVlPkvDpHl0dMOkasOkdGlldG9zaTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA4IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfdXNlcm5hbWUiPgorICAgIDx2YWx1ZT5UdW5udXM6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwOSIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X3Bhc3MiPgorICAgIDx2YWx1ZT5TYWxhc2FuYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTEwIiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfbWFpbCI+CisgICAgPHZhbHVlPlPDpGhrw7Zwb3N0aTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTExIiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfYnllIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FLVRpaW1pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxMiIgbmFtZT0icmVnaXN0ZXJfbWFpbF9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIFJla2lzdGVyw7ZpbnRpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxMyIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSAtIFNhbGFzYW5hbiBub2xsYXVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNCIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfdGVzdF9saW5rIj4KKyAgICA8dmFsdWU+S8OkeXTDpCB0w6R0w6QgbGlua2tpw6Qgc3nDtnR0w6TDpGtzZXNpIHV1ZGVuIHNhbGFzYW5hbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE1IiBuYW1lPSJyZXNldF9wYXNzd29yZF90ZW1wbGF0ZV90ZXh0Ml9saW5rIj4KKyAgICA8dmFsdWU+S2xpa2thYSB0w6RzdMOkIHN5w7Z0dMOkw6Rrc2VzaSB1dWRlbiBzYWxhc2FuYW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE2IiBuYW1lPSJyZXNldF9wYXNzd29yZF90ZW1wbGF0ZV90ZXh0M19saW5rIj4KKyAgICA8dmFsdWU+am9zIGxpbmtpbiBrYW5zc2Egb24gb25nZWxtaWEsIG9sZSBoeXbDpCBqYSBrb3Bpb2kgc2Ugc2VsYWltZXNpIG9zb2l0ZXJpdmlsbGU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNyIgbmFtZT0icmVzZXRfcGFzc3dvcmRfbWFpbF9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIFNhbGFzYW5hbiBub2xsYXVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxOCIgbmFtZT0iZGF0ZVJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+QW5uYSBww6RpdsOkbcOkw6Ryw6QgbXVvZG9zc2EgcHAua2sudnZ2diAoZXNpbS4gMjQuMTIuMjAwOSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE5IiBuYW1lPSJlbWFpbFJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+QW5uYSB0b2ltaXZhIHPDpGhrw7Zwb3N0aW9zb2l0ZSwgbXVvZG9zc2EgbmltaUBtYWlsLmNvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjAiIG5hbWU9ImZsb2F0UmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5Bbm5hIGxpdWt1bHVrdSwgZXNpbS4gMS4wMDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjEiIG5hbWU9Im51bWJlclJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+QW5uYSBrb2tvbmFpc2x1a3UsIGVzaW0uIDEwMDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjIiIG5hbWU9InBob25lUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5Bbm5hIHB1aGVsaW5udW1lcm8sIGVzaW0uICszNTg1MDEyMzQ1Njc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIzIiBuYW1lPSJ0aW1lUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5Bbm5hIGtlbGxvbmFpa2EsIGVzaW0uIDEyOjIzICh0dDptbSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI0IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvdyI+CisgICAgPHZhbHVlPlNhbGFzYW5hc3VvamF1czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjUiIG5hbWU9Imludml0YXRpb25fd2luZG93X3Bhc3N3b3JkTGFiZWwiPgorICAgIDx2YWx1ZT5TYWxhc2FuYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjYiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkTGFiZWwiPgorICAgIDx2YWx1ZT5Wb2ltYXNzYW9sb2Fpa2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI3IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZCI+CisgICAgPHZhbHVlPlDDpMOkdHR5bcOkdMO2bjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjgiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkIj4KKyAgICA8dmFsdWU+QWlrYXbDpGxpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyOSIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWQiPgorICAgIDx2YWx1ZT5LZXJ0YWvDpHl0dMO2aW5lbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzAiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkRnJvbUxhYmVsIj4KKyAgICA8dmFsdWU+Vm9pbWFzc2EgYWxrYWVuOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzEiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkVG9MYWJlbCI+CisgICAgPHZhbHVlPlZvaW1hc3NhIGt1bm5lczo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMyIiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd19NYWlsU3ViamVjdCI+CisgICAgPHZhbHVlPkt1dHN1ICRBUFBfTkFNRWlpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzMiIG5hbWU9Imludml0YXRpb25fZXJyb3IiPgorICAgIDx2YWx1ZT5LdXRzdWEgZWkgb2xlIHNhYXRhdmlsbGEgYW50YW1hbGxlc2kga3V0c3Vrb29kaWxsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzQiIG5hbWU9Imludml0YXRpb25fZXJyb3IiPgorICAgIDx2YWx1ZT5LdXRzdSBvbiBqbyBrw6R5dGV0dHkuIEt1dHN1YSBlaSB2b2kgdXVkZWxsZWVua8OkeXR0w6TDpC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM1IiBuYW1lPSJpbnZpdGF0aW9uX2Vycm9yIj4KKyAgICA8dmFsdWU+S3V0c3UgZWkgb2xlIGtlbHZvbGxpbmVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzYiIG5hbWU9Imludml0YXRpb25fcGFzcyI+CisgICAgPHZhbHVlPlNhbGFzYW5hOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzciIG5hbWU9Imludml0YXRpb25fcGFzc19idG4iPgorICAgIDx2YWx1ZT5UYXJraXN0YSBzYWxhc2FuYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzgiIG5hbWU9Imludml0YXRpb25fcGFzc19lcnJvciI+CisgICAgPHZhbHVlPlbDpMOkcsOkIHNhbGFzYW5hITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzkiIG5hbWU9IkJyb3dzZXIiPgorICAgIDx2YWx1ZT7DhMOkbmlfS3V2YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDAiIG5hbWU9ImF1ZGlvX3ZpZGVvIj4KKyAgICA8dmFsdWU+U3lua3Jvbmlzb2kgw6TDpG5pL2t1dmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQxIiBuYW1lPSJlcnJvckNvZGVfaW52YWxpZFNlc3Npb24iPgorICAgIDx2YWx1ZT5LaXJqYXV0dW1pbmVuIG9ubmlzdHUsIG11dHRhIGhhbHVhbWFzaSBpc3R1bnRvIGVpIG9sZSBha3RpaXZpbmVuIHRhaSBlaSBvbGUgdGFsbGVubmV0dHUgcGFsdmVsaW1lbGxlLiBTaW51biB0w6R5dHl5IGhhbmtraWEgdXVzaSBpc3R1bnRvLWlkIGphIHlyaXR0w6TDpCBraXJqYXV0dW1pc3RhIHV1ZGVsbGVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQyIiBuYW1lPSJlcnJvcmNvZGVfc2V0VXNlck9iamVjdCI+CisgICAgPHZhbHVlPklzdHVubm9uIGlkIGVpIG9sZSBraXJqYXV0dW51dCB0YWkgc2lsbMOkIGVpIG9sZSB5bGzDpHBpdMOkasOkbiBvaWtldWtzaWEuIFNPQVAteWhkeXNrw6R5dMOkdsOkIHRhcnZpdHNlZSB5bGzDpHBpdG9rw6R5dHTDpGrDpG4gb2lrZXVkZXQgbGlzw6R0w6Rrc2VlbiBrw6R5dHTDpGppw6QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0MyIgbmFtZT0iZXJyb3Jjb2RlX2xvZ2luQnlSZW1vdGVVc2VyIj4KKyAgICA8dmFsdWU+VMOkbGzDpCBpc3R1bm5vbGxhIGVpIG9sZSBldMOka8OkeXR0w6Rqw6RuIHRpZXRvamEuIEpva28ga3V0c3VpdCBTT0FQLXloZHlza8OkeXTDpHbDpMOkIGVubmVuIG9oamVsbWFuIGvDpHl0dMOkbWlzdMOkIHRhaSBrw6R5dMOkdCB2w6TDpHLDpMOkIGlzdHVubm9uIGlkOnTDpDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDQiIG5hbWU9ImRlYnVnX21lc3NhZ2VfcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TmF1aG9pdHRhbWluZW4gb24gdmllbMOkIEJldGEtYXN0ZWVsbGEhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0NSIgbmFtZT0icHJvcGVydHlQYW5lbFhWYWx1ZSI+CisgICAgPHZhbHVlPng8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ2IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWFZhbHVlTGFiZWwiPgorICAgIDx2YWx1ZT54LWFrc2VsaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDciIG5hbWU9InByb3BlcnR5UGFuZWxZVmFsdWUiPgorICAgIDx2YWx1ZT55PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0OCIgbmFtZT0icHJvcGVydHlQYW5lbFlWYWx1ZUxhYmVsIj4KKyAgICA8dmFsdWU+eS1ha3NlbGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ5IiBuYW1lPSJwcm9wZXJ0eVBhbmVsV2lkdGhWYWx1ZSI+CisgICAgPHZhbHVlPmw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUwIiBuYW1lPSJwcm9wZXJ0eVBhbmVsV2lkdGhWYWx1ZUxhYmVsIj4KKyAgICA8dmFsdWU+bGV2ZXlzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1MSIgbmFtZT0icHJvcGVydHlQYW5lbEhlaWdodFZhbHVlIj4KKyAgICA8dmFsdWU+azwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTIiIG5hbWU9InByb3BlcnR5UGFuZWxIZWlnaHRWYWx1ZUxhYmVsIj4KKyAgICA8dmFsdWU+a29ya2V1czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTMiIG5hbWU9InByb3BlcnR5T3BhY2l0eVNsaWRlciI+CisgICAgPHZhbHVlPk11dXRhIGzDpHBpbsOka3l2eXl0dMOkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1NCIgbmFtZT0iYnJvd3Nlck9wZW4iPgorICAgIDx2YWx1ZT5BdmFhIHNlbGFpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTUiIG5hbWU9ImJyb3dzZXJDbG9zZSI+CisgICAgPHZhbHVlPlN1bGplIHNlbGFpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTYiIG5hbWU9ImNvbm5lY3Rpb25Mb3N0TWVzc2FnZSI+CisgICAgPHZhbHVlPllodGV5cyBwYWx2ZWxpbWVlbiBtZW5ldGV0dGlpbi4gU2ludW4gdMOkeXR5eSBrw6R5bm5pc3TDpMOkIHNvdmVsbHVzIHV1ZGVsbGVlbiBqYS90YWkgdGFya2lzdGFhIHZlcmtrb3lodGV5dGVzaS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU3IiBuYW1lPSI1NTciPgorICAgIDx2YWx1ZT5Pc29pdGluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1OCIgbmFtZT0ic3luYyBtZXNzYWdlIGhlYWRlciI+CisgICAgPHZhbHVlPlN5bmtyb25pc29pZGFhbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTkiIG5hbWU9IlN5bmNocm9uaXppbmcgbWVzc2FnZSI+CisgICAgPHZhbHVlPlN5bmtyb25pc29pZGFhbiBrw6R5dHTDpGppw6QsIG9sZSBoeXbDpCBqYSBvZG90YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjAiIG5hbWU9ImV4cG9ydFRvU1ZHIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7TGF0YWEgU1ZHJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjEiIG5hbWU9ImV4cG9ydFRvSW1hZ2UiPgorICAgIDx2YWx1ZT4mbHQ7dSZndDtMYXRhYSBQTkcmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MiIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O0xhdGFhIEpQRyZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYzIiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7TGF0YWEgUERGJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjQiIG5hbWU9ImV4cG9ydFRvSW1hZ2UiPgorICAgIDx2YWx1ZT4mbHQ7dSZndDtMYXRhYSBUSUYmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2NSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPk11aXN0dXR1czo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY2IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+S2F0ZWdvcmlhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjciIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5Ub2lzdG86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2OCIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPnR5aGrDpDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjkiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5TaWphaW50aTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTcwIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+QWxrdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzEiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5Mb3BwdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzIiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5PdHNpa2tvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzMiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5Lb21tZW50dGk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NCIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkt1dHN1IGlobWlzacOkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPlDDpGl2aXR0w6RpbmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NiIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkt1dWthdXNpdHRhaW5lbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzciIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5WdW9zaXR0YWluZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc4IiBuYW1lPSJhbGVydCI+CisgICAgPHZhbHVlPlRhcGFhbWlzZW4gbG9wcHVhaWthIG9uIGVubmVuIGFsa3VhaWthYSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc5IiBuYW1lPSJhbGVydCI+CisgICAgPHZhbHVlPkFubmEgb3RzaWtrbyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgwIiBuYW1lPSI1ODAiPgorICAgIDx2YWx1ZT5PaWtlYS1WYXNlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODEiIG5hbWU9IjU4MSI+CisgICAgPHZhbHVlPkvDpHl0w6QgdMOkdMOkIGpvcyB0YXJ2aXRzZXQga8Okw6RudGVpc3TDpCBzYW5hasOkcmplc3R5c3TDpCAob2lrZWFsdGEgdmFzZW1tYWxsZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgyIiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPlBhbmVlbGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgzIiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPkthdHNlbGUgbmF1aG9pdGV0dHVqYSBrb2tvdWtzaWEgdGFpIHRhcGFodHVtaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg0IiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPktva291cyAtIFBlcnVzdGEga29uZmVyZW5zc2kgbmVsasOkbGxlIGvDpHl0dMOkasOkbGxlIChrb3JrZWludGFhbiAxNikgJmx0O2JyLyZndDtrYWlraWxsYSBvbiBvaWtldXMgw6TDpG5lZW4gKyBrdXZhYW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg1IiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPlRhcGFodHVtYSAtIEx1byBrb25mZXJlbnNzaSBlbmludMOkw6RuIDIwMCBvc2Fub3R0YWphbGxlLiAmbHQ7YnIvJmd0O1ZhaW4gbW9kZXJhYXR0b3JpbGxhIG9uIGt1dmEgamEgw6TDpG5pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4NiIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT5MdW8ga8OkeXR0w6RqacOkLCBodW9uZWl0YSwgb3JnYW5pc2FhdGlvaXRhICZsdDtici8mZ3Q7ICsgbXVva2thYSBhc2V0dWtzaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg3IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5Lw6R5dHTDpGrDpHQgdMOkbGzDpCBoZXRrZWxsw6QgdMOkc3PDpCBodW9uZWVzc2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg4IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODkiIG5hbWU9InJvb20gQWRtaW5pc3RyYXRpb24gcm9vbWNsaWVudHMgbGlzdCI+CisgICAgPHZhbHVlPlR1bm5pczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTAiIG5hbWU9InJvb20gQWRtaW5pc3RyYXRpb24gcm9vbWNsaWVudHMgbGlzdCI+CisgICAgPHZhbHVlPkQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkxIiBuYW1lPSJzd2Ygc3luYyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TGFkYXRhYW4gZG9rdW1lbnR0aWEuIE9sZSBoeXbDpCBqYSBvZG90YSBrdW5uZXMga2Fpa2tpIGFzaWFra2FhdCBvdmF0IHN5bmtyb25pc29pbmVldC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkyIiBuYW1lPSJ1cGxvYWQgZGlhbG9nIj4KKyAgICA8dmFsdWU+TMOkaGV0eXMgdmFsbWlzLCBtdXVubmV0YWFuIGRva3VtZW50dGlhIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTMiIG5hbWU9InVwbG9hZCBkaWFsb2ciPgorICAgIDx2YWx1ZT5BbG9pdGEgbMOkaGV0eXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk0IiBuYW1lPSJ1cGxvYWQgZGlhbG9nIj4KKyAgICA8dmFsdWU+VGllZG9zdG9uIGzDpGhldHlzIGphIHR1b250aS1pa2t1bmEuIE9sZSBoeXbDpCBqYSB2YWxpdHNlIHRpZWRvc3RvIGtvbmVlbHRhc2kuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NSIgbmFtZT0idXBsb2FkIERpYWxvZyI+CisgICAgPHZhbHVlPlBlcnV1dGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk2IiBuYW1lPSJ1cGxvYWQgRGlhbG9nIj4KKyAgICA8dmFsdWU+VmFsaXRzZSB0aWVkb3N0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTciIG5hbWU9ImFkbWluaXN0cmF0aW9uIG5hdmlnYXRpb24iPgorICAgIDx2YWx1ZT5ZaHRleWRldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTgiIG5hbWU9ImNvbmZhZG1pbiB2YWx1ZSBsaXN0Ij4KKyAgICA8dmFsdWU+QXJ2bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTkiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5TdHJlYW0gaWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAwIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+S2lyamF1ZHU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAxIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+WWhkaXN0ZXR0eSBhbGthZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAyIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+SHVvbmUgLyBMYWFqdXVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwMyIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPlBvaXN0YSBrw6R5dHTDpGrDpDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDQiIG5hbWU9ImtpY2sgdXNlciBjb25maXJtYXRpb24gZGlhbG9nIj4KKyAgICA8dmFsdWU+UG9pc3RhIGvDpHl0dMOkasOkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwNSIgbmFtZT0ia2ljayB1c2VyIGNvbmZpcm1hdGlvbiBkaWFsb2ciPgorICAgIDx2YWx1ZT5IYWx1YXRrbyB2YXJtYXN0aSBrYXRrYWlzdGEgdMOkbcOkbiBhc2lha2thYW4geWh0ZXlkZW4/Jmx0O2JyLyZndDsgVMOkbcOkIHZhaW4gcG9pc3RhYSBhc2lha2thYW4gaHVvbmVlc3RhLiBBc2lha2FzIHZvaSBraXJqYXV0dWEgYWluYSB1dWRlc3RhYW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwNiIgbmFtZT0ia2ljayB1c2VyIG1lc3NhZ2UgZGlhbG9nIj4KKyAgICA8dmFsdWU+SXN0dW50b3NpIG9uIGxvcGV0ZXR0dSB5bGzDpHBpdMOkasOkbiB0YWkgbW9kZXJhYXR0b3JpbiB0b2ltZXN0YS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA3IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Bob25lIj4KKyAgICA8dmFsdWU+UHVoZWxpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDgiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPkvDpHl0dMOkasOkIG9uIHTDpG3DpG4gaHVvbmVlbiBtb2RlcmFhdHRvcmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA5IiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5Lw6R5dHTDpGrDpCB2b2kgcGlpcnTDpMOkIHBpaXJ0b2FsdWVlbGxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMCIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+KFJlKSBLw6R5bm5pc3TDpCDDhMOkbmkvS3V2YSB0YWkgbXV1dGEgbGFpdHRlaWRlbiBhc2V0dWtzaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjExIiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5TYWxsaSB0w6Rtw6RuIGvDpHl0dMOkasOkbiBwaWlydMOkw6QgcGlpcnRvYWx1ZWVsbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEyIiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5Fc3TDpCBrw6R5dHTDpGrDpG4gcGlpcnTDpG1pbmVuIHBpaXJ0b2FsdWVlbGxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMyIgbmFtZT0iY29uZmVyZW5jZVBhbmVscyI+CisgICAgPHZhbHVlPkvDpHl0dMOkasOkdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTQiIG5hbWU9ImNvbmZlcmVuY2VQYW5lbHMiPgorICAgIDx2YWx1ZT5UaWVkb3N0b3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE1IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+UGlpcnRvYWx1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTYiIG5hbWU9ImNvbmZlcmVuY2VQYW5lbHMiPgorICAgIDx2YWx1ZT5LZXNrdXN0ZWx1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxNyIgbmFtZT0ib3JnYW5pemF0aW9uIGNob29zZSBpbmZvIj4KKyAgICA8dmFsdWU+VHVubnVrc2VzaSBvbiBsaWl0ZXR0eSB1c2VhbXBhYW4gb3JnYW5pc2FhdGlvb24uIE9sZSBoeXbDpCBqYSB2YWxpdHNlIHlrc2kgdMOkdMOkIGlzdHVudG9hIHZhcnRlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE4IiBuYW1lPSJlcnJvciBtZXNzYWdlIHJvb20gZnVsbCI+CisgICAgPHZhbHVlPlTDpG3DpCBodW9uZSBvbiB0w6R5bm7DpC4gT2xlIGh5dsOkIGphIHlyaXTDpCBtecO2aGVtbWluIHV1ZGVzdGFhbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE5IiBuYW1lPSJyb29tdHlwZXMiPgorICAgIDx2YWx1ZT5IdW9uZWVuIHR5eXBwaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjAiIG5hbWU9ImFwcG9pbnRlZF9yb29tIj4KKyAgICA8dmFsdWU+VGFwYWFtaXNodW9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjEiIG5hbWU9InNlcnZlcnRpbWUiPgorICAgIDx2YWx1ZT5QYWx2ZWxpbWVuIGFpa2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIyIiBuYW1lPSJpbnZfcmVtaW5kZXJfdGVtcGxhdGVfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSAtIE11aXN0dXR1czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjMiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2Zyb20iPgorICAgIDx2YWx1ZT5WaWVzdGkga8OkeXR0w6Rqw6RsdMOkOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjQiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X21lc3NhZ2UiPgorICAgIDx2YWx1ZT5WaWVzdGk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNSIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfY2xpY2tfdGV4dCI+CisgICAgPHZhbHVlPktsaWtrYWEgdMOkdMOkIGxpbmtracOkIG9zYWxsaXN0dWFrc2VzaSBrb2tvdWtzZWVuOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjYiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2NsaWNrX3RleHRfbGluayI+CisgICAgPHZhbHVlPktsaWtrYWEgdMOkc3TDpCBsaWl0dHnDpGtzZXNpIGh1b25lZXNlZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI3IiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9jbGlja190ZXh0X2hlbHAiPgorICAgIDx2YWx1ZT5qb3MgbGlua2luIGthbnNzYSBvbiBvbmdlbG1pYSwgb2xlIGh5dsOkIGphIGtvcGlvaSBzZSBzZWxhaW1lc2kgb3NvaXRlcml2aWxsZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI4IiBuYW1lPSJidG5fc2VhcmNoX2ludGVybiI+CisgICAgPHZhbHVlPmhhZSBzaXPDpGlzacOkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyOSIgbmFtZT0iYnRuX3NlYXJjaF9leHRlcm4iPgorICAgIDx2YWx1ZT51bGtvaXNldCBrw6R5dHTDpGrDpHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMwIiBuYW1lPSJsYmxfcHJlbmFtZSI+CisgICAgPHZhbHVlPm5pbWVuIGV0dWxpaXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzMSIgbmFtZT0ibGJsX25hbWUiPgorICAgIDx2YWx1ZT5uaW1pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzMiIgbmFtZT0ibGJsX2VtYWlsIj4KKyAgICA8dmFsdWU+U8OkaGvDtnBvc3RpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzMyIgbmFtZT0ibG9nb3V0Q29uZmlybV90aXRsZSI+CisgICAgPHZhbHVlPlZhcm1pc3RhIHBvaXN0dW1pbmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNCIgbmFtZT0ibG9nb3V0Q29uZmlybV9zdXJlX3RvX2xvZ291dF9xdWVzdGlvbiI+CisgICAgPHZhbHVlPkhhbHVhdGtvIHZhcm1hc3RpIGtpcmphdXR1YSB1bG9zPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzUiIG5hbWU9Im1haW4gbWVudSI+CisgICAgPHZhbHVlPlRvaW1pbm5vdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzYiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5Fc2l0dGVseWh1b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNyIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkVzaXR0ZWx5YWlrYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzgiIG5hbWU9Im1lZXRpbmcgVGltZXIiPgorICAgIDx2YWx1ZT5Lb2tvdXNhamFzdGluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzOSIgbmFtZT0ibWVldGluZyBUaW1lciI+CisgICAgPHZhbHVlPlTDpG3DpCBvbiBlc2l0dGVseWh1b25lLiBQb2lzdGFha3Nlc2kgdMOkbcOkbiB2YXJvaXR1a3NlbiB2b2l0IGhhbmtraWEgb21hbiB5a3NpdHlpc2h1b25lZXNpIHRhaSBwZXJ1c3RhYSBvbWFuIHBhbHZlbGltZW4uIFNpbnV0IGtpcmphdGFhbiB1bG9zIGF1dG9tYWF0dGlzZXN0aSBoZXRrZW4ga3VsdXR0dWE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MCIgbmFtZT0ibWVldGluZyByb29tIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+TW9kZXJvaXR1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MSIgbmFtZT0ibW9kZXJhdGVkIHJvb20gd2FpdGluZyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+T2xlIGh5dsOkIGphIG9kb3RhIGt1bm5lcyBtb2RlcmFhdHRvcmkgb24gbGlpdHR5bnl0IGh1b25lZXNlZW4uIE1vZGVyYWF0dG9yaSB2b2kgb2xsYSBqb2tvIG9wZXR0YWphLCB5bGzDpHBpdMOkasOkIHRhaSB0w6Rtw6RuIGh1b25lZW4gdGVraWrDpC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQyIiBuYW1lPSJlcnJvciBwb3B1cCI+CisgICAgPHZhbHVlPk9rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MyIgbmFtZT0id2luZG93IHNjcmVlbnNoYXJpbmciPgorICAgIDx2YWx1ZT5JbmNvbWluZyBTY3JlZW4gU2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDQiIG5hbWU9IndpbmRvdyBzY3JlZW4gc2hhcmluZyI+CisgICAgPHZhbHVlPlV1c2kgcnV1ZHVuIGpha28gb24gdHVsb3NzYSBrw6R5dHTDpGrDpGx0w6Q6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0NSIgbmFtZT0id2luZG93IHNjcmVlbiBzaGFyaW5nIj4KKyAgICA8dmFsdWU+QWxvaXRhIGpha2FtaW5lbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDYiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+TGlzw6TDpCB1dXNpIGtva291czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDciIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+S29rb3VzaHVvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ4IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPlRhcGFodHVtYWh1b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0OSIgbmFtZT0ibWFpbiBtZW51IG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Nb2Rlcm9pbnRpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1MCIgbmFtZT0ibWVudSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+TW9kZXJvaSBrw6R5dHTDpGppw6Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUxIiBuYW1lPSJtZW51IG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Nb2Rlcm9pIGh1b25laXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1MiIgbmFtZT0ibW9kZXJhdG9yIG9yZyI+CisgICAgPHZhbHVlPk08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUzIiBuYW1lPSJjb25maXJtIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5IYWx1YXRrbyBhc2V0dGFhIHTDpG3DpG4ga8OkeXR0w6Rqw6RuIG1vZGVyYWF0dG9yaWtzaSB0w6RsbGUgb3JnYW5pc2FhdGlvbGxlPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTQiIG5hbWU9ImVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5PbGUgaHl2w6QgamEgdmFsaXRzZSBvcmdhbmlzYWF0aW8gZW5uZW5rdWluIHlyaXTDpHQgbGlzw6R0w6Qgc2lpaGVuIGvDpHl0dMOkamnDpCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU1IiBuYW1lPSJjaG9vc2UgdXNlciB3aW5kb3ciPgorICAgIDx2YWx1ZT5PcmdhbmlzYWF0aW8gLSBNb2RlcmFhdHRvcmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU2IiBuYW1lPSJtb2RlcmF0b3Igb3JnIHVzZXJzIj4KKyAgICA8dmFsdWU+SGFsdWF0a28gcG9pc3RhYSBrw6R5dHTDpGrDpG4gb3JnYW5pc2FhdGlvc3RhPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTciIG5hbWU9Im9yZyBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+VMOkbcOkIGvDpHl0dMOkasOkIG9uIE1vZGVyYWF0dG9yaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTgiIG5hbWU9Im9yZyBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+VMOkbcOkIGvDpHl0dMOkasOkIGVpIG9sZSBtb2RlcmFhdHRvcmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU5IiBuYW1lPSJlcnJvciBtZXNzYWdlIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5IYWx1YXRrbyBldHTDpCBrw6R5dHTDpGrDpCBlaSBvbGUgbW9kZXJhYXR0b3JpIHTDpGxsZSBvcmdhbmlzYWF0aW9sbGU/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MCIgbmFtZT0ibW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkxpc8Okw6QgdGFpIHBvaXN0YSBrw6R5dHTDpGppw6QgdGFpIGh1b25laXRhIG9yZ2FuaXNhYXRpb3NzYXNpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MSIgbmFtZT0iZGVsZXRlIGNvbmZpcm0gcXVlc3Rpb24iPgorICAgIDx2YWx1ZT5IYWx1YXRrbyBwb2lzdGFhIHTDpG3DpG4gdGlldHVlZW4/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MiIgbmFtZT0iZGVsZXRlIGNvbmZpcm0gcXVlc3Rpb24gdXNlciBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+SGFsdWF0a28gdG9kZWxsYSBwb2lzdGFhIGvDpHl0dMOkasOkbiBvcmdhbmlzYWF0aW9zdGFzaT8gVMOkbcOkIHBvaXN0YWEgcGVsa8Okc3TDpMOkbiBsaW5raW4ga8OkeXR0w6Rqw6RuIGphIG9yZ2FuaXNhYXRpb24gdsOkbGlsbMOkLCBqb3MgaGFsdWF0IHBvaXN0YWEga8OkeXR0w6Rqw6RuIG5paW4gam91ZHV0IGtpcmphdXR1bWFhbiB5bGzDpHBpdG9wYW5lZWxpaW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MyIgbmFtZT0iZXJyb3IgbWVzc2FnZSBzZWxmIGRlbGV0aW5nIj4KKyAgICA8dmFsdWU+RXQgdm9pIHBvaXN0YWEgaXRzZcOkc2khPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NCIgbmFtZT0iZXJyb3IgbWVzc2FnZSBhdXRoIj4KKyAgICA8dmFsdWU+VMOkbcOkIHRvaW1pbnRvIHZhYXRpaSB5bGzDpHBpdMOkasOkbiBvaWtldWRldCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY1IiBuYW1lPSJlcnJvciBtZXNzYWdlIFNPQVAiPgorICAgIDx2YWx1ZT5Uw6RsbGUgSUQtbnVtZXJvbGxlIGVpIG9sZSBtw6TDpHJpdGVsdHkgaXN0dW50b2EuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NiIgbmFtZT0iZXJyb3IgbWVzc2FnZSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+VMOkbcOkIG9uIHlsbMOkcGl0w6Rqw6RuIHRhaSBtb2RlcmFhdHRvcmluIHRpbGkuIFZvaXQgbXVva2F0YSB0aWxpw6QgdmFpbiB5bGzDpHBpdG9wYW5lZWxpbiBrYXV0dGEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NyIgbmFtZT0iZW1haWwgdmVyaWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+S2xpa2thYSBzZXVyYWF2YWEgbGlua2tpw6QgdmlpbWVpc3RlbGzDpGtzZXNpIHJla2lzdGVyw7ZpbnRpc2kgdGFpIGtvcGlvaSBvc29pdGUgc2VsYWltZXNpIG9zb2l0ZXJpdmlsbGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2OCIgbmFtZT0iZW1haWwgdmVyaWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+S2xpa2thYSB2YXJtaXN0YWFrc2VzaSBzw6Roa8O2cG9zdGlvc29pdHRlZXNpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2OSIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPkvDpHl0dMOkasOkw6QgZWkgbMO2eXR5bnl0IGFubmV0dWxsYSB0dW5udWtzZWxsYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzAiIG5hbWU9ImVycm9yTWVzc2FnZV9Vc2VyQWN0aXZhdGlvblNlcnZsZXQgW0FjdGl2YXRlVXNlcl0iPgorICAgIDx2YWx1ZT5Lw6R5dHTDpGrDpCBvbiBqbyBha3Rpdm9pdHUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3MSIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPkvDpHl0dMOkasOkdHVubnVrc2VzaSBha3Rpdm9pdGlpbiBvbm5pc3R1bmVlc3RpITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzIiIG5hbWU9ImVycm9yTWVzc2FnZV9Vc2VyQWN0aXZhdGlvblNlcnZsZXQgW0FjdGl2YXRlVXNlcl0iPgorICAgIDx2YWx1ZT5LaXJqYXVkdSBueXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjczIiBuYW1lPSJsb2dpbkVycm9yTWVzc2FnZSA9IHVzZXIgd2FzIG5vdCBhY3RpdmF0ZWQiPgorICAgIDx2YWx1ZT5Lw6R5dHTDpGrDpHR1bm51c3Rhc2kgZWkgb2xlIGFrdGl2b2l0dS4gTXVpc3RhIGvDpHl0dMOkw6QgdmFybWlzdHVzc8OkaGvDtnBvc3RpbiBtdWthbmEgdHVsbHV0dGEgbGlua2tpw6QgZW5uZW4gdXV0dGEgeXJpdHlzdMOkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzQiIG5hbWU9InJlZ2lzdGVyIHZlcmlmaWNhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+T2xlbiByZWtpc3RlcsO2aXR5bnl0IG9ubmlzdHVuZWVzdGkuIEzDpGhldGltbWUgc2ludWxsZSBzw6Roa8O2cG9zdGluIGpvc3NhIG9uIHZhcm1pc3R1c2tvb2RpLiBPbGUgaHl2w6QgamEgdGFya2lzdGEgc8OkaGvDtnBvc3RpbGFhdGlra29zaS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc1IiBuYW1lPSJwYXJ0aWNpcGFudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5Qb2lzdGEga8OkeXR0w6Rqw6RuIG1vZGVyb2ludGlvaWtldXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc2IiBuYW1lPSJwYXJ0aWNpcGFudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5Bbm5hIG1vZGVyb2ludGlvaWtldXMgdMOkbGxlIGvDpHl0dMOkasOkbGxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3NyIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+S8OkeXR0w6Rqw6Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc4IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Lw6R5dHTDtm9pa2V1cyBwaWlydG9ww7Z5ZMOkbGxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3OSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+TW9kZXJhYXR0b3JpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+TW9kZXJvaW50aTogT2xlIGh5dsOkIGphIHZhbGl0c2Uga8OkeXR0w6Rqw6QgbGlzdGFsdGEgYW50YWFrc2VzaSBow6RuZWxsZSBvaWtldWRlbiBwaWlydG9ww7Z5ZMOkbGxlLCBtb2Rlcm9pbnRpaW4gdGFpIHZpZGVvb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+VMOkbcOkIGvDpHl0dMOkasOkIG9uIGpvIG1vZGVyYWF0dG9yaSwgam90ZW4gaMOkbmVsbMOkIG9uIGFpbmEgb2lrZXVzIHBpaXJ0w6TDpC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgyIiBuYW1lPSJldmVudCB1c2VyIGxpc3QgZXJyb3IiPgorICAgIDx2YWx1ZT5FdCB2b2kgcG9pc3RhYSBtb2Rlcm9pbnRpb2lrZXV0dGEgaXRzZWx0w6RzaSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgzIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5TYWxsaSB0w6Rtw6RuIGvDpHl0dMOkasOkbiBqdWxrYWlzdGEgw6TDpG50w6QgLyBrdXZhYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODQiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlBvaXN0YSDDpMOkbmkva3V2YSB0w6RsdMOkIGvDpHl0dMOkasOkbHTDpDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODUiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkhhbHVhaXNpbiBzYWFkYSBtb2Rlcm9pbnRpb2lrZXVkZW4gdMOkaMOkbiBodW9uZWVzZWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4NiIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+SGFsdWFuIHBpaXJ0w6TDpCBwaWlydG9hbHVlZWxsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODciIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkhhbHVhbiBqYWthYSDDpMOkbnTDpC9rdXZhYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODgiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPk9sZXQgdMOkbcOkbiBodW9uZWVuIG1vZGVyYWF0dG9yaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODkiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlNpbnVsbGEgb24gb2lrZXVzIHBpaXJ0w6TDpCBwaWlydG9hbHVlZWxsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTAiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlNpbnVsbGEgb24gb2lrZXVzIGpha2FhIMOkw6RudMOkL2t1dmFhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5MSIgbmFtZT0iZXJyb3J0eXBlIj4KKyAgICA8dmFsdWU+TMOkaGV0w6Qgdmllc3RpIG1vZGVyYWF0dG9yaWxsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTIiIG5hbWU9ImFwcGx5IGZvciBtb2QgbWVzc2FnZSI+CisgICAgPHZhbHVlPkvDpHl0dMOkasOkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5MyIgbmFtZT0iYXBwbHkgZm9yIG1vZCBtZXNzYWdlIj4KKyAgICA8dmFsdWU+cHl5dMOkw6QgbW9kZXJvaW50aW9pa2V1dHRhLiBLw6R5dMOkIGt1dmFra2VpdGEgbGlzdGFzc2Ega8OkeXR0w6Rqw6RuIHZpZXJlc3PDpCBzYWxsaWFrc2VzaSB0YWkgcG9pc3RhYWtzZXNpIG9pa2V1ZGVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTQiIG5hbWU9ImFwcGx5IGZvciB3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+cHl5dMOkw6Qgb2lrZXV0dGEgcGlpcnTDpMOkIHBpaXJ0b2FsdWVlbGxlLiBLw6R5dMOkIGt1dmFra2VpdGEgbGlzdGFzc2Ega8OkeXR0w6Rqw6RuIHZpZXJlc3PDpCBzYWxsaWFrc2VzaSB0YWkgcG9pc3RhYWtzZXNpIG9pa2V1ZGVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTUiIG5hbWU9IjY5NSI+CisgICAgPHZhbHVlPnB5eXTDpMOkIG9pa2V1dHRhIGpha2FhIMOkw6RudMOkL2t1dmFhLiBLw6R5dMOkIGt1dmFra2VpdGEgbGlzdGFzc2Ega8OkeXR0w6Rqw6RuIHZpZXJlc3PDpCBzYWxsaWFrc2VzaSB0YWkgcG9pc3RhYWtzZXNpIG9pa2V1ZGVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTYiIG5hbWU9Im1vZGVyYXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPlNpbnVuIHTDpHl0eXkgb2RvdHRhYSBrdW5uZXMgbW9kZXJhYXR0b3JpIGxpaXR0eXkgaHVvbmVlc2Vlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk3IiBuYW1lPSJjYWxlbmRhciBidXR0b24iPgorICAgIDx2YWx1ZT5QZXJ1dXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5OCIgbmFtZT0iY2FsZW5kYXIgYnV0dG9uIj4KKyAgICA8dmFsdWU+VGFsbGVubmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk5IiBuYW1lPSJjYWxlbmRhciBjb21wb25lbnQiPgorICAgIDx2YWx1ZT5Qw6RpdsOkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwMCIgbmFtZT0iY2FsZW5kYXIgY29tcG9uZW50Ij4KKyAgICA8dmFsdWU+S3V1a2F1c2k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAxIiBuYW1lPSJjYWxlbmRhciBjb21wb25lbnQiPgorICAgIDx2YWx1ZT5WdW9zaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDIiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5VcGxvYWQgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDMiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5BZGQgRm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwNCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlJlZnJlc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA1IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+VHJhc2ggKERyYWcgYW5kIERyb3AgaXRlbSBoZXJlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDYiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5NeSBGaWxlcyAoSG9tZSBEcml2ZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA3IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+Um9vbSBGaWxlcyAoUHVibGljIERyaXZlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDgiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5BZGQgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDkiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5BZGQgRm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkRlbGV0ZSBGb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzExIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+RWRpdCBOYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPk5ldyBGb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzEzIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIEl0ZW0/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxNCIgbmFtZT0idXNlciBhZG1pbiI+CisgICAgPHZhbHVlPlNlYXJjaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTUiIG5hbWU9InVzZXIgYWRtaW4iPgorICAgIDx2YWx1ZT5TZWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE2IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+T3BlbiBEb2N1bWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTciIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5TaG93IGFsbCBGaWxlcyAoVHJlZSBWaWV3KTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTgiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5DbG9zZSBEb2N1bWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTkiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5EZWxldGUgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjAiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIG5vdCBhbGxvd2VkIHRvIGRyYXcgYW55dGhpbmcgb24gdGhlIFdoaXRlYm9hcmQuIFlvdSBoYXZlIHRvIGJlY29tZSBNb2RlcmF0b3Igb3IgYXQgbGVhc3QgZ2V0IHRoZSBSaWdodCB0byBlZGl0IFdoaXRlYm9hcmQuIFlvdSBtYXkgYXNrIGEgTW9kZXJhdG9yIHRvIGdpdmUgeW91IHRoYXQgcmlnaHQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyMSIgbmFtZT0icHJvcGVydHkgcGFuZWwiPgorICAgIDx2YWx1ZT5Eb2N1bWVudCBQcm9wZXJ0aWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyMiIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+U3RhcnQgQ2xpZW50IChleHRlcm5hbCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIzIiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5TdGFydCBDbGllbnQgKEhUVFApPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNCIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+QSB1c2VyIHdhbnQgdG8gc2hhcmUgaGlzIHNjcmVlbi4gRG8geW91IHdhbnQgdG8gc2VlIGl0PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjUiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPllvdSBhcmUgY3VycmVudGx5IHNoYXJpbmcgeW91ciBEZXNrdG9wLiBGb3Igc3RvcHBpbmcgdGhlIFNoYXJpbmcgU2Vzc2lvbiBwbGVhc2UgaGl0IHRoZSBTdG9wIGJ1dHRvbiBpbiB0aGUgU2hhcmluZyBDbGllbnQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNiIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+U2hhcmluZyBTZXNzaW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNyIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+WW91IGFyZSBhbHJlYWR5IHNoYXJpbmcgeW91ciBkZXNrdG9wITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+RGVza3RvcCBWaWV3ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI5IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkV4aXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMwIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkRlc2t0b3AgU2hhcmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5DbGljayBTdGFydCB0byBwdWJsaXNoIHlvdXIgc2NyZWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdGFydCBTaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdG9wIFNoYXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM0IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlNlbGVjdCB5b3VyIHNjcmVlbiBhcmVhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzUiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+Q2hhbmdlIHdpZHRoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5UaGUgU2hhcmVyIGhhcyBmaW5pc2hlZCB0aGlzIHNlc3Npb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5DaGFuZ2UgaGVpZ2h0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczOCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5YLU9mZnNldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzkiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+WS1PZmZzZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQwIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPldpZHRoOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDEiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+SGVpZ2h0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDIiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+Q29ubmVjdGlvbiB3YXMgY2xvc2VkIGJ5IFNlcnZlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDMiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NCIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5TdGFydCBFeHRlcm5hbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDUiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+SWYgeW91IGNsb3NlIHRoaXMgc2Vzc2lvbiBjb21wbGV0ZWx5IHlvdSBhcmUgbm90IGFibGUgdG8gcmVzdGFydCB0aGUgdmlld2VyIGZvciB0aGlzIHNlc3Npb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NiIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5Db25maXJtIENsb3NpbmcgVmlld2VyIFNlc3Npb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ3IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPlNoYXJlIFNjcmVlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDgiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+UmVjb3JkIFNlc3Npb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ5IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+Q28tQnJvd3Npbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUwIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+T29vcHMsIC4uLiBGaXJlZm94IG9uIFdpbmRvd3MgZG9lcyBub3Qgc2hvdyBjbGVhciBDby1Ccm93c2luZy4gUGxlYXNlIHVzZSBhbm90aGVyIEJyb3dzZXIgZm9yIHVzaW5nIHRoZSBDby1Ccm93c2luZyBmZWF0dXJlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTEiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5QcmV2aW91czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTIiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5OZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MyIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPlJlbG9hZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTQiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5Ib21lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1NSIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPkxvYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU2IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+QWRkIHRoaXMgd2Vic2l0ZSBhcyBEZWZhdWx0IHdlYnNpdGUgdG8geW91ciBQcm9maWxlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTciIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5UZXN0IFNldHVwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1OCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPkNoZWNrIHlvdSBNaWNyb3Bob25lIGFuZCBDYW1lcmEgc2V0dXAgYmVmb3JlIHlvdSBlbnRlciBhIHJvb20gYnkgcmVjb3JkaW5nIHNvbWUgc2Vjb25kcy4gWW91IGNhbiB0aGVuIHJlcGxheSB5b3VyIHJlY29yZGluZyB0byBjaGVjayB5b3VyIHZvaWNlIGFuZCBwaWN0dXJlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTkiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5Eb24ndCBzaG93IHRoaXMgdGVzdCBhbnltb3JlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjEiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5TdGFydCBDb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MiIgbmFtZT0iZWRpdCB2aWRlbyBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkRvIG5vdCBhc2sgYWdhaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYzIiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+UkVDPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlBMQVk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY1IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+WW91IG1heSBwcm9jZWVkIHdpdGhvdXQgdGVzdGluZyBpZiB5b3UgZG8gbm90IHBsYW4gdG8gcHVibGlzaCB5b3VyIHZvaWNlIG9yIHBpY3R1cmUuIFBhcnRpY2lwYW50cyB3aXRob3V0IEF1ZGlvIG9yIFZpZGVvIGNhbiBzdGlsbCB1c2UgdGhlIFdoaXRlYm9hcmQsIHNoYXJlIHRoZWlyIERlc2t0b3Agb3Igd3JpdGUgQ2hhdCBtZXNzYWdlcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY2IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+U1RPUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjciIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5MZXZlbC1NZXRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjgiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5QcmVzcyBTdGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjkiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5TdGFydCBDb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MCIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPlN0YXJ0IEV2ZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MSIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPkNob29zZSBSb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MiIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPkNoZWNrIFNldHVwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MyIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPlN0YXJ0IENvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc0IiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+SG93IHRvIGNvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc1IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+U3RhcnQgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NiIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPkRvIG5vdCBzaG93IEF1ZGlvIC8gVmlkZW8gVGVzdCAoUmVjb3JkaW5nKSBiZWZvcmUgZW50ZXJpbmcgYSBDb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NyIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPlB1YmxpYyBSb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzgiIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT5QdWJsaWMgUm9vbXMgYXJlIGFjY2Vzc2libGUgZm9yIGFsbCBVc2Vycy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc5IiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+UHJpdmF0ZSBSb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODAiIG5hbWU9IlByaXZhdGUgUm9vbXMiPgorICAgIDx2YWx1ZT5Qcml2YXRlIFJvb21zIGFyZSBvbmx5IGFjY2Vzc2libGUgZm9yIHVzZXJzIG9mIHRoZSBzYW1lIG9yZ2FuaXphdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgxIiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+TXkgUm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgyIiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+Um9vbXMgaW4gdGhpcyBzZWN0aW9uIGFyZSBjcmVhdGVkIGZvciBwZXJzb25hbCB1c2FnZS4gVGhlcmUgYXJlIHNvbWUgc3RhbmRhcmQgcm9vbXMgcGx1cyB0aGUgb25lcyB0aGF0IGFyZSBjcmVhdGVkIHRocm91Z2ggdGhlIGNhbGVuZGFyIGFuZCBoYXZlIGEgc3RhcnQgYW5kIGFuIGVuZCBkYXRlLiBUaGUgcm9vbXMgY3JlYXRlZCB2aWEgdGhlIGNhbGVuZGFyIGFyZSBvbmx5IGxpc3RlZCBpbiB0aGlzIHNlY3Rpb24gYXMgbG9uZyBhcyB0aGV5IGFyZSB2YWxpZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgzIiBuYW1lPSJyZXN0cmljdGVkIHJvb20iPgorICAgIDx2YWx1ZT5Zb3UgaGF2ZSB0byBiZSBtb2RlcmF0b3IgdG8gZG8gdGhpcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg0IiBuYW1lPSJtZW51IG9wdGlvbiI+CisgICAgPHZhbHVlPkFwcGx5IGZvciBtb2RlcmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NSIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT5BcHBseSBmb3Igd2hpdGVib2FyZCBhY2Nlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg2IiBuYW1lPSJtZW51IG9wdGlvbiI+CisgICAgPHZhbHVlPkFwcGx5IGZvciBjYW1lcmEvbWljcm9waG9uZSBhY2Nlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg3IiBuYW1lPSJlcnJvciBtZXNzYWdlIHNvYXAgc2VjdXJlIGxvZ2luIj4KKyAgICA8dmFsdWU+VGhpcyBTZXNzaW9uIEhhc2ggd2FzIGFscmVhZHkgdXNlZC4gWW91IGNhbm5vdCB1c2UgaXQgdHdpY2UuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4OCIgbmFtZT0iZGFzaGJvYXJkIGJ1dHRvbiI+CisgICAgPHZhbHVlPlNUQVJUPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4OSIgbmFtZT0iZXhpdCBjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+RVhJVDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTAiIG5hbWU9ImNvbmZlcmVuY2UgdmlldyI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBleGl0PyBZb3UgbWlnaHQgc2hvdWxkIGNsZWFyIHVwbG9hZGVkIGRvY3VtZW50cywgd2hpdGVib2FyZCBhbmQgdGhlIGNoYXQgaGlzdG9yeS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkxIiBuYW1lPSJjb25mZXJlbmNlIHZpZXciPgorICAgIDx2YWx1ZT5FeGl0IGNvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkyIiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT5Sb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTMiIG5hbWU9Im1haW4gbWVudSI+CisgICAgPHZhbHVlPkNob29zZSBhIHJvb20gZm9yIGEgbWVldGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTQiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgYW4gdW5zYXZlZCBFdmVudCBpbiB0aGUgQ2FsZW5kYXIuIFBsZWFzZSBlaXRoZXIgc2F2ZSBpdCBvciByZW1vdmUgaXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5NSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5QbGVhc2UgYWRkIGF0IGxlYXN0IG9uZSBhdHRlbmRlZSBmb3IgeW91ciBtZWV0aW5nITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTYiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEV2ZW50PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTciIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+V2FybmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTgiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QWRkIEV2ZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5OSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5EYXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAwIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPldlZWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAxIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPk1vbnRoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMiIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5EZXNjcmlwdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDMiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QXR0ZW5kZWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FLCB5b3VyIFdlYiBDb25mZXJlbmNpbmcgUGxhdGZvcm0uIEVpdGhlciBmb2xsb3cgdGhlIEluc3RydWN0aW9ucywgcHJlc3MgdGhlIHN0YXJ0IGJ1dHRvbiB0byBzdGFydCB0byBjb25mZXJlbmNlIGltbWVkaWF0ZWxseSBvciB5b3UgZ290byB0aGUgQ2FsZW5kYXIgYW5kIHNldCB1cCBhIENvbmZlcmVuY2UgZm9yIHRoZSBmdXR1cmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNSIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+UGxhbiBhIE1lZXRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA2IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VG8gc2V0IHVwIGEgY29uZmVyZW5jZSB5b3UgY2FuIGFkZCBhIG5ldyBFdmVudCBpbiB0aGUgQ2FsZW5kYXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNyIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPk5lZWQgaGVscD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA4IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+UmVzdHJpY3RlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDkiIG5hbWU9Imx6Y2FsZW5kZXIiPgorICAgIDx2YWx1ZT5TZWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEwIiBuYW1lPSJsemNhbGVuZGVyIj4KKyAgICA8dmFsdWU+QWRkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMSIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIFVzZXIgc2VsZWN0ZWQuIFBsZWFzZSBzZWxlY3QgYW4gaXRlbSBmcm9tIHRoZSBsaXN0IGZpcnN0IGFuZCB0aGVuIGhpdCBhZGQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMiIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPkFkZCBBdHRlbmRlZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTMiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5TYXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxNCIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPkRlbGV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTUiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5FdmVudCBEZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkRlZmF1bHQgTW9kZXJhdG9yczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5TdXBlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTgiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTkiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyMCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkUtTWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjEiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5BZGQgbmV3IGRlZmF1bHQgTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyMiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPklzIFN1cGVyIE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjMiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5JZiB0aGUgUm9vbSBpcyBtb2RlcmF0ZWQsIFVzZXIgd2l0aCBMZXZlbCBNb2RlcmF0b3Igb3IgQWRtaW5pc3RyYXRvciBhcmUgYXV0b21hdGljYWxseSBNb2RlcmF0b3IgaWYgdGhleSBlbnRlciB0aGUgUm9vbS4gSWYgeW91IGRvbid0IHdhbnQgdG8gc3BlY2lmeSB0aGF0IGFuZCBvbmx5IHdhbnQgYSBjZXJ0YWluIFVzZXIgdG8gYmVjb21lIE1vZGVyYXRvciB1c2UgdGhlIERlZmF1bHQgTW9kZXJhdG9yIG9wdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI0IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+QSBTdXBlciBNb2RlcmF0b3IgaXMgYWx3YXlzIGEgTW9kZXJhdG9yIHdoZW4gaGUgZW50ZXJzIGEgUm9vbSwgYW5kIG5vYm9keSBjYW4gcmVtb3ZlIHRoZSBNb2RlcmF0aW9uIEZsYWcgZnJvbSBoaW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI1IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+QXBwbHkgU3VwZXItTW9kZXJhdGlvbiB0byBVc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPlJlbW92ZSBTdXBlciBNb2RlcmF0aW9uIGZyb20gVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyOCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPklmIHlvdSBhZGQgYW4gT3JnYW5pemF0aW9uIHRvIHRoZSByb29tIG9ubHkgdXNlcnMgb2YgdGhhdCBPcmdhbml6YXRpb24gaGF2ZSBhY2Nlc3MgdG8gaXQgKFRoaXMgaXMgb25seSB2YWxpZCBpZiB0aGUgaXNQdWJsaWMgZmxhZyBpcyBzZXQgdG8gZmFsc2UhKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjkiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5Nb2RlcmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzMCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkxpbWl0YXRpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzMSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPk9yZ2FuaXphdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzIiIG5hbWU9ImNvbmZpcm0gYWN0aW9uIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzMiIG5hbWU9ImNvbmZpcm0gZGVsZXRlIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEl0ZW0/IFlvdSBoYXZlIHRvIHByZXNzIHRoZSBzYXZlIGJ1dHRvbiB0byBzdG9yZSB0aGUgY2hhbmdlcyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM0IiBuYW1lPSJ1c2VyIGNob29zZSBlcnJvciI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIFVzZXIgc2VsZWN0ZWQuIFBsZWFzZSBzZWxlY3QgZmlyc3QgYmVmb3JlIHlvdSBhZGQgaXQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkFkZCBuZXcgRGVmYXVsdCBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM2IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RG8geW91IHdhbnQgdG8gYWRkIHRoZSBTdXBlciBNb2RlcmF0aW9uIEZsYWcgZm9yIHRoaXMgVXNlcj8gQSBTdXBlciBNb2RlcmF0b3IgaXMgbm90IG9ubHkgTW9kZXJhdG9yIG9mIGEgUm9vbSwgYnV0IGFsc28gbm8gb3RoZXIgTW9kZXJhdG9yIGNhbiByZW1vdmUgdGhlIE1vZGVyYXRpb24gRmxhZyBmb3IgdGhpcyBVc2VyLiBZb3UgbmVlZCB0byBzYXZlIHRoZSBSb29tIE9iamVjdCB0byBzYXZlIHRoZXNlIHNldHRpbmdzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EbyB5b3Ugd2FudCB0byByZW1vdmUgdGhlIFN1cGVyIE1vZGVyYXRpb24gRmxhZyBmb3IgdGhpcyBVc2VyPyBZb3UgbmVlZCB0byBzYXZlIHRoZSBSb29tIE9iamVjdCB0byBzYXZlIHRoZXNlIHNldHRpbmdzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzgiIG5hbWU9InN1cGVyIG1vZGVyYXRvciI+CisgICAgPHZhbHVlPlRoaXMgVXNlciBpcyBhIFN1cGVyLU1vZGVyYXRvci4gWW91IGNhbm5vdCByZW1vdmUgdGhlIE1vZGVyYXRpb24gZmxhZyBmcm9tIGEgU3VwZXItTW9kZXJhdG9yITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzkiIG5hbWU9ImNvbmZpcm0gZGVsZXRlIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZpbGUvRm9sZGVyPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDAiIG5hbWU9ImNvbmZpcm0gZGVsZXRlIj4KKyAgICA8dmFsdWU+RGVsZXRlIEZpbGUvRm9sZGVyPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDEiIG5hbWU9InNhbHV0YXRpb24iPgorICAgIDx2YWx1ZT5NcnMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0MiIgbmFtZT0ic2FsdXRhdGlvbiI+CisgICAgPHZhbHVlPkRyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDMiIG5hbWU9InByb3BlcnR5IHBhbmVsIHdoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5Qcm9wZXJ0aWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NCIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPlNob3cgbW91c2UgcG9zaXRpb24gdG8gdmlld2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDUiIG5hbWU9InB1Ymxpc2ggb3B0aW9uIj4KKyAgICA8dmFsdWU+U2hhcmUgQXVkaW8gd2l0aCBTSVAgQXBwbGV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NiIgbmFtZT0icHVibGlzaCBvcHRpb24iPgorICAgIDx2YWx1ZT5TaGFyZSBBdWRpbyB3aXRoIFNJUCBhbmQgVmlkZW8gd2l0aCBGbGFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDciIG5hbWU9ImRvY3VtZW50IHBhbmVsIj4KKyAgICA8dmFsdWU+RnVsbC1GaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ4IiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5WaWV3IFNjcmVlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDkiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlRoZSB1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MCIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+d2FudHMgdG8gc2hhcmUgaXRzIHNjcmVlbi4gRG8geW91IHdhbnQgdG8gc2VlIGl0PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTEiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNsb3NlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MiIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPlpvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUzIiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+VGhlIFNlc3Npb24gd2FzIGNsb3NlZCBieSB0aGUgc2hhcmluZyBVc2VyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTQiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5QYXVzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTUiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5OZXcgU2NyZWVuIFNoYXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU2IiBuYW1lPSJwcmVzZW50ZXIgbWluaSBpY29uIj4KKyAgICA8dmFsdWU+TWluaW1pemU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU3IiBuYW1lPSJwcmVzZW50ZXIgbWluaSBpY29uIj4KKyAgICA8dmFsdWU+TWF4aW1pemU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU4IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5WaWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTkiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlJlY29yZGluZyBUaW1lbGluZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjAiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk15IFJlY29yZGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYxIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5QdWJsaWMgUmVjb3JkaW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjIiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkluZm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYzIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TGVuZ3RoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RGF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjYiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UExBWTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjgiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk1haW4gLSBWaWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjkiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzAiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPllvdSBtYXkgcmVjb3JkIGFuZCBzaGFyZSB5b3VyIHNjcmVlbiBhdCB0aGUgc2FtZSB0aW1lLiBUbyBlbmFibGUgb3RoZXJzIHRvIHNlZSB5b3VyIHNjcmVlbiBqdXN0IGhpdCB0aGUgc3RhcnQgYnV0dG9uIG9uIHRoZSB0b3AuIFRvIG9ubHkgcmVjb3JkIHRoZSBTZXNzaW9uIGl0IGlzIHN1ZmZpY2llbnQgdG8gY2xpY2sgc3RhcnQgcmVjb3JkaW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzEiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlN0YXJ0IFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzIiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlN0b3AgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3MyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RG93bmxvYWQgdGhlIEZMVi1GaWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3NCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+Um9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzUiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlBsYXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TdG9wPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3NyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+VXNlciBoYXMgbWljcm9waG9uZSBvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U3RvcCBTaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3OSIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5BbGxvdyBVc2VyIFF1ZXN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODAiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+VHVybiB0aGlzIG9mZiB0byBwcmV2ZW50IHRoYXQgYW55IHVzZXIgaXMgZGlzdHVyYmluZyB5b3UgaW4gdGhpcyByb29tLiBFZmZlY3QgaXMgdGhhdCB0aGUgQnV0dG9uIHRvIGFzayBmb3IgTW9kZXJhdGlvbiAoIkkgaGF2ZSBhIHF1ZXN0aW9uIikgaXMgbm90IHZpc2libGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MSIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5SaWdodHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgyIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Eb3dubG9hZCBhcyBBVkk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgzIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5GTFY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg0IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5BVkk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg1IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5SYXcgU2NyZWVudmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5BdWRpbyBvbmx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+VGhlIGhhdmUgYmVlbiBlcnJvcnMgd2hpbGUgcHJvY2Vzc2luZyB0aGUgUmVjb3JkaW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODgiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlRoZSBSZWNvcmRpbmcgaXMgbm90IHlldCByZWFkeSBmb3Igd2F0Y2hpbmcuIFBsZWFzZSByZXRyeSBpbiBhIGNvdXBsZSBvZiBtaW51dGVzIGFnYWluLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODkiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkxvZzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkwIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5SZWNvcmRlciBNZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+T2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkyIiBuYW1lPSJzaXAgYXBwbGV0Ij4KKyAgICA8dmFsdWU+U0lQIEFwcGxldCBpcyBub3QgUmVhZHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkzIiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+U0lQLUFjY291bnQgU2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk0IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+U0lQIHNldHRpbmdzIGZvciBlYWNoIHVzZXIuIFlvdSBjYW4gdHVybiBvbiBvciBvZmYgU0lQIHZpYSB0aGUgQWRtaW5pc3RyYXRpb24gJmd0OyBDb25maWd1cmF0aW9uIChLZXk6IGVuYWJsZV9zaXApLiBUaGUgU0lQIGRhdGEgZm9yIGVhY2ggdXNlciBzaG91bGQgYmUgY3JlYXRlZCBhdXRvbWF0aWNhbGx5LiBZb3UgY2FuIHJlLWNyZWF0ZSB0aGUgZGF0YSBieSBjaGVja2luZyAiUmUtZ2VuZXJhdGUgU0lQIERhdGEiPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NSIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNJUC1Vc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NiIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNpcC1QYXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NyIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNpcC1BdXRoLUlkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5OCIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIExvZ2luIHRvIHRoZSBTSVAgR2F0ZXdheSBoYXMgZmFpbGVkLiBZb3Ugc2hvdWxkIGNoZWNrIHRoZSBhdXRoZW50aWZpY2F0aW9uIGRhdGEgb2YgeW91ciBTSVAtUHJvdmlkZXIgYW5kIHRoZSBTSVAtQWNjb3VudCBEYXRhIGZvciBlYWNoIFVzZXIuIEFzIEFkbWluaXN0cmF0b3IgeW91IGFyZSBzdGlsbCBhYmxlIHRvIGxvZ2luIGFuZCBjaGVjayB0aGUgQ29uZmlndXJhdGlvbi4gQXMgVXNlciBvciBNb2RlcmF0b3IgeW91IHdpbGwgYmUgYmxvY2tlZCBmcm9tIGFueSBpbnRlcmFjdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk5IiBuYW1lPSJzaXAgc3RhdHVzIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgTG9naW4gdG8gdGhlIFNJUCBHYXRld2F5IGhhcyBmYWlsZWQuIENvbnRhY3QgeW91ciBTZXJ2aWNlIFRlYW0hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwMCIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TG9nZ2luZyBpbiB0byBTSVAtR2F0ZXdheSAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAxIiBuYW1lPSJzaXAgc3RhdHVzIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Mb2dnaW5nIGluIHRvIFNJUC1HYXRld2F5IC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDIiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlNob3cgTG9nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwMyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TG9nIG1lc3NhZ2VzIGZyb20gcG9zdCByZWNvcmRlciBwcm9jZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwNCIgbmFtZT0ic2lwIGxvZ2luIj4KKyAgICA8dmFsdWU+U0lQLUFwcGxldCBNZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwNSIgbmFtZT0ic2lwIGxvZ2luIj4KKyAgICA8dmFsdWU+VGhlIFNJUC1BcHBsZXQgaXMgbm90IHJlYWR5LiBBY2NlcHQgdGhlIEFwcGxldCBwbGVhc2UgYW5kIGNsaWNrIG9rITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDYiIG5hbWU9Im1vZGVyYXRvciBwb3AgdXAiPgorICAgIDx2YWx1ZT5HZXQgTW9kZXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDciIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5TYXZlIEFwcG9pbnRtZW50IENoYW5nZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA4IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhlIGFwcG9pbnRlbWVudCBoYXMgYmVlbiBjaGFuZ2VkLiBEbyB5b3Ugd2FudCB0byBzYXZlIHRob3NlIGNoYW5nZXM/ICZsdDtici8mZ3Q7Jmx0O2JyLyZndDtBbGwgYXR0ZW5kZWVzIG9mIHRoZSBhcHBvaW50bWVudCB3aWxsIHJlY2VpdmUgYSBFTWFpbCB3aXRoIHRoZSB1cGRhdGVkIGRhdGUgYW5kIHRpbWUgKGRlcGVuZGluZyBvbiB0aGUgbm90aWZpY2F0aW9uIHR5cGUgb2YgdGhpcyBhcHBvaW50bWVudCkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwOSIgbmFtZT0iZmx2IHJlY29yZGVyIGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UbyBhY2Nlc3Mgb3RoZXIgcmVjb3JkaW5ncyB5b3UgaGF2ZSB0byBsb2dpbiB0aGUgJEFQUF9OQU1FIEFwcGxpY2F0aW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTAiIG5hbWU9ImludGVydmlldyB2aWRlbyBwb2QiPgorICAgIDx2YWx1ZT5DaG9vc2UgdGhlIFVzZXIgZm9yIHRoaXMgVmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTExIiBuYW1lPSJpbnRlcnZpZXcgdmlkZW8gY2hvb3NlIHVzZXIiPgorICAgIDx2YWx1ZT5BdmFpbGFibGUgVXNlcnMgZm9yIHRoaXMgUG9kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMiIgbmFtZT0iaW50ZXJ2aWV3IGluZm8iPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGEgTW9kZXJhdG9yIGluIHRoaXMgSW50ZXJ2aWV3LiBZb3UgY2FuIGRlY2lkZSB3aG8gaXMgc3BlYWtpbmcgaW4gdGhpcyBpbnRlcnZpZXcgYW5kIHlvdSBjYW4gc3RhcnQgLyBzdG9wIHRoZSByZWNvcmRpbmcgb2YgdGhlIFNlc3Npb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMyIgbmFtZT0iaW50ZXJ2aWV3IGJ1dHRvbiByZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TdGFydCBSZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE0IiBuYW1lPSJpbnRlcnZpZXcgYnV0dG9uIHJlY29yZGluZyI+CisgICAgPHZhbHVlPlN0b3AgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxNSIgbmFtZT0iaW50ZXJ2aWV3IGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgcmVjb3JkaW5nIG9mIHRoZSBJbnRlcnZpZXcgaXMgYWxyZWFkeSBzdGFydGVkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTYiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIHJlY29yZGluZyBpcyBhbHJlYWR5IHN0b3BwZWQgb3Igbm90IGJlZW4gc3RhcnRlZCB5ZXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxNyIgbmFtZT0iaW50ZXJ2aWV3IHJlY29yZGluZyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIHJlY29yZGluZyBmb3IgdGhpcyBpbnRlcnZpZXcgaXMgYWxyZWFkeSBzdGFydGVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTgiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxOSIgbmFtZT0iaW50ZXJ2aWV3IGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgcG9zdC1wcm9jZXNzaW5nIG9mIGFuIGludGVydmlldyB0YWtlcyA1IG1pbnV0ZXMgcGVyIDEgbWludXRlIGludGVydmlldy4gVGhlIGN1cnJlbnQgcHJvZ3Jlc3Mgb2YgdGhlIGludGVydmlldyBwb3N0LXByb2Nlc3NpbmcgdHJhbnNjb2RpbmcgaXM6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyMCIgbmFtZT0ic2lwIGNyZWF0aW9uIj4KKyAgICA8dmFsdWU+WW91IGhhdmUgdG8gZW50ZXIgeW91ciBwYXNzd29yZCBhZ2FpbiB0byBhdXRvIGNyZWF0ZSB0aGUgU0lQIERhdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIxIiBuYW1lPSJzaXAgY3JlYXRpb24iPgorICAgIDx2YWx1ZT5SZS1nZW5lcmF0ZSBTSVAgRGF0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjIiIG5hbWU9ImZpbGVleHBsb3JlciI+CisgICAgPHZhbHVlPllvdSBjYW5ub3QgbW92ZSB0aGlzIGZpbGUgb3IgZm9sZGVyIGludG8gaXRzIG93biBzdWIgZm9sZGVyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjMiIG5hbWU9ImZpbGUgZXhwbG9yZXIgIj4KKyAgICA8dmFsdWU+SG9tZSBkcml2ZSBzaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlB1YmxpYyBkcml2ZSBzaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNSIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPkxpY2Vuc2UgU2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI2IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+WW91IGNhbiBlaXRoZXIgYmluZCB0aGUgdXNlciB0byBhIGV4cGlyZSBEYXRlIG9yIHRvIGEgbWF4aW11bSBudW1iZXIgb2YgbWludXRlcyB3aGVuIHlvdSBlbmFibGUgbGljZW5zaW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjciIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5DaGVjayBsaWNlbnNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyOCIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPkZsYXRyYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyOSIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPkV4cGlyZSBkYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMCIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPlNlY29uZHMgbGVmdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzEiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5Ub3RhbCB0aW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91ciBMaWNlbnNlIGhhcyBleHBpcmVkLiBZb3UgbmVlZCB0byBidXkgbmV3IG1pbnV0ZXMgKFBheS1wZXItbWludXRlKSBvciBhIHZvbHVtZSBmbGF0cmF0ZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMzIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5DbGljayBhbmQgYnV5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzNCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+VGltZSBMZWZ0IG9uIHlvdXIgYWNjb3VudDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM1IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Vc2VyIExpY2Vuc2UgSW5mbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzYiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkluZm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM3IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5DbG9zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzgiIG5hbWU9ImxpY2Vuc2UtaW5mbyI+CisgICAgPHZhbHVlPllvdXIgbGljZW5zZSBoYXMgZXhwaXJlZC4gWW91IG5lZWQgZWl0aGVyIHRvIGJ1eSBhIG1pbnV0ZSBwYWNrYWdlIChQYXktcGVyLW1pbnV0ZSkgb3IgYSB2b2x1bWUgZmxhdHJhdGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzOSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+TGljZW5zZSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDAiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdSBjYW4gZWl0aGVyIGJ1eSBtaW51dGVzIHRvIG1ha2UgV2ViLUNvbmZlcmVuY2luZyAoUGF5LXBlci1taW51dGUpLiZsdDtici8mZ3Q7Jmx0O2JyLyZndDsgT3IgeW91IGJ1eSBhIHZvbHVtZSBmbGF0cmF0ZSBhYm91dCAzLTEyIG1vbnRocy4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7U2VuZGluZyBpbnZpdGF0aW9ucyAoZGlyZWN0IGxpbmtzIGludG8gQ29uZmVyZW5jZSBSb29tcykgb3IgY3JlYXRpbmcgY29uZmVyZW5jZSBSb29tcyB2aWEgdGhlIENhbGVuZGFyIHdpdGggZXh0ZXJuYWwgVXNlcnMgaXMgb25seSBhbGxvd2VkIHdpdGggYSB2b2x1bWUgZmxhdHJhdGUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDYwIE1pbnV0ZXMgOSw5OSBFVVJPICgxNiBDZW50IHBlciBNaW51dGUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDUgaG91cnMgMTksOTkgRVVSTyAoNiBDZW50IHBlciBtaW51dGUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDMgbW9udGggZm9yIDI5LDk5IEVVUk8gKDksOTkgRXVybyBwZXIgTW9udGgpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDYgbW9udGggZm9yIDM5LDk5IEVVUk8gKDYsNjYgRXVybyBwZXIgbW9udGgpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+UGF5LXBlci1taW51dGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ2IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Wb2x1bWUgZmxhdHJhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ3IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3UgaGF2ZSB1bmxpbWl0ZWQgTGljZW5zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDgiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdXIgbGljZW5zZSB3aWxsIGV4cGlyZSBhdDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ5IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3UgYm91Z2h0IFBheS1wZXItbWludXRlLiBZb3Ugc3RpbGwgaGF2ZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUwIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5CdXkgbmV3IGNyZWRpdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUxIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5XYW50IHlvdXIgb3duIFNlcnZlcj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUyIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3Ugd291bGQgbGlrZSB0byBoYXZlICRBUFBfTkFNRSBpbnN0YWxsZWQgb24geW91ciBTZXJ2ZXIgb3IgaW50ZWdyYXRlZCBpbnRvIHlvdXIgTW9vZGxlLCBTdWdhckNSTSwgV2Vic2l0ZSBvciBJbnRyYW5ldD8gUHJpemluZ3Mgc3RhcnQgYXQgNTAwIEV1cm8gcGVyIEluc3RhbGxhdGlvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUzIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5PciBzZW5kIHVzIGEgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTQiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkFuc3dlciB0bzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU1IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5NZXNzYWdlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTYiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlNlbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU3IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5DbGljayBoZXJlIHRvIGdldCBjb250YWN0IEluZm8gYW5kIFByaXppbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1OCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q3JlZGl0IENhcmQgRGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTkiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkZpcnN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjAiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkxhc3RuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2MSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q3JlZGl0IENhcmQgVHlwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjIiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlZJU0EgQ2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjMiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPk1hc3RlckNhcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY0IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5EaXNjb3ZlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjUiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkFtZXJpY2FuIEV4cHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY2IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DcmVkaXQgQ2FyZCBOdW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY3IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5FeHBpcmF0aW9uIERhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY4IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DYXJkIFZlcmlmaWNhdGlvbiBOdW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY5IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5CaWxsaW5nIEFkZHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTcwIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5BZGRyZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q2l0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzMiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNvdW50cnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc0IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdGF0ZSAoT25seSBVUyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc1IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5aSVA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc2IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5BbW91bnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc3IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdWJtaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc4IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdGVwIDE6ICRBUFBfTkFNRSAtIFBheW1lbnQgRm9ybTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzkiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkVNYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q2xpY2sgIkNoZWNrIG91dCB3aXRoIFBheXBhbCIgdG8gcGF5LiZsdDtici8mZ3Q7IFBheXBhbCBhY2NlcHRzIFZJU0EsIE1hc3RlckNhcmQsIERpc2NvdmVyIG9yIEFtZXJpY2FuIEV4cHJlc3MuICZsdDtici8mZ3Q7SXQgZG9lcyBub3QgcmVxdWlyZSB0byBzaWduIHVwIHdpdGggUGF5cGFsLiAmbHQ7YnIvJmd0O0NpdGl6ZW5zIGZyb20gR2VybWFueSBjYW4gYWxzbyBwYXkgd2l0aCBkaXJlY3QgZGViaXQgKFBlciBMYXN0c2NocmlmdC1FaW56dWcpLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODEiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlRoYW5rIHlvdSBmb3IgYnV5aW5nICRBUFBfTkFNRS4gJmx0O2JyLyZndDsgJmx0O2JyLyZndDsgQXMgc29vbiBhcyB3ZSByZWNlaXZlZCB0aGUgcGF5bWVudCB5b3VyIGFjY291bnQgd2lsbCBiZSB1cGRhdGVkLiZsdDtici8mZ3Q7IFlvdSB3aWxsIHJlY2VpdmUgYW4gRU1haWwgd2l0aCB5b3VyIGludm9pY2UgYXMgUERGLiZsdDtici8mZ3Q7WW91IGNhbiBhbHNvIGNoZWNrIGN1cnJlbnQgYW5kIHBhc3QgdHJhbnNhY3Rpb25zIGluIHlvdXIgcHJvZmlsZSBzZXR0aW5ncy4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7Jmx0O2JyLyZndDtZb3UgY2FuIGNsb3NlIHRoaXMgYnJvd3NlciB3aW5kb3cvdGFiIG5vdyBhbmQgcmV0dXJuIHRvICRBUFBfTkFNRS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgyIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdWJtaXQgYW5kIEJ1eSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgzIiBuYW1lPSJwYXltZW50LWZyb20iPgorICAgIDx2YWx1ZT5DbGljayBhbmQgQnV5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODQiIG5hbWU9InBheW1lbnQtZnJvbSI+CisgICAgPHZhbHVlPlN0ZXAgMzogJEFQUF9OQU1FIFBheW1lbnQgLSBDaGVjayBvcmRlciBhbmQgYnV5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODUiIG5hbWU9InBheW1lbnQtZnJvbSI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg2IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5QYXltZW50IHJlY2VpdmVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODciIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPkhpLDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODgiIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPldlIGhhdmUgcmVjZWl2ZWQgeW91ciBwYXltZW50LiBZb3VyIHVzZXIgcHJvZmlsZSBpcyB1cGRhdGVkIG5vdy4gU2VlIGF0dGFjaGVkIHlvdXIgSW52b2ljZS4gVGhlIEludm9pY2UgYW5kIGFsbCBwYXN0IEludm9pY2UgY2FuIGFsc28gYmUgZG93bmxvYWRlZCBpbiB5b3VyIHVzZXIgcHJvZmlsZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg5IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5UaGFuayB5b3UgZm9yIHVzaW5nICRBUFBfTkFNRSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkwIiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5QYXltZW50IFJlY2VpdmVkICRBUFBfTkFNRSAtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MSIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPlBheW1lbnQgYW5kIFRyYW5zYWN0aW9uIFN0YXR1czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTIiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5UcmFuc2NhdGlvbiBIYXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MyIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPk1pbnV0ZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk0IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+TW9udGhzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NSIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPkVVUjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTYiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TdGF0dXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk3IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+SW52b2ljZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTgiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk5IiBuYW1lPSJlcnJvci1saWNlbnNlLWZsYXQiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0byBidXkgYSB2b2x1bWUgZmxhdHJhdGUgdG8gYmUgYWJsZSB0byBzZW5kIGludml0YXRpb25zIG9yIGNyZWF0ZSBtZWV0aW5ncyB2aWEgdGhlIGNhbGVuZGFyLiBXaXRoIFBheS1wZXItbWludXRlIGl0IGlzIG9ubHkgcG9zc2libGUgZm9yIHlvdSB0byBhY2Nlc3MgJEFQUF9OQU1FLiBZb3UgY2Fubm90IGFsbG93IDN0aCBQYXJ0aWVzIHRvIGFjY2VzcyBhIE1lZXRpbmcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDAiIG5hbWU9ImVycm9yIHVzZXIiPgorICAgIDx2YWx1ZT5UaGlzIEVtYWlsIGlzIGFscmVhZHkgdXNlZCBieSBhbm90aGVyIFVzZXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDEiIG5hbWU9InJvb20tYWRtaW4iPgorICAgIDx2YWx1ZT5TSVAtU2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwMiIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlRoZSBDb25mZXJlbmNlIE51bWJlciBhbmQgUElOIGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB2aWEgdGhlIE9wZW5YRyBSUEMtR2F0ZXdheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAzIiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+U0lQIE51bWJlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA0IiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+UElOPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDUiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5DbGVhciBvYmplY3RzIG9uIGN1cnJlbnQgc2xpZGUgb25seSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNiIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPk9ubHkgdGhlIFVSTCBlbnRlcmVkIGluIHRoZSBTdGF0dXMgYmFyIGlzIHNlbmQgdG8gcGFydGljaXBhbnRzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TWFrZSBUZWFtLVJvb21zIFtCcmVha291dCBzZXNzaW9uXTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2hvb3NlIHVzZXJzIGZvciBhIG5ldyBUZWFtLVJvb20hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIGNob29zZSB1c2VycyBoZXJlIGFuZCBjcmVhdGUgYSBuZXcgQ29uZmVyZW5jZSBSb29tICgiVGVhbSBSb29tIikgZm9yIHRoZW0uIFRoZSBjaG9zZW4gdXNlcnMgd2lsbCBhdXRvbWF0aWNhbGx5IHN3aXRjaCB0byB0aGUgbmV3IFRlYW0tUm9vbSBvciBnZXQgYSBub3RpZmljYXRpb24uIFRlYW0tUm9vbSBNb2RlcmF0b3JzIHdpbGwgZ2V0IGFkZGl0aW9uYWxseSBhIGxpc3Qgb2YgY3VycmVudCByb29tcyBzbyB0aGF0IHRoZXkgY2FuIHN3aXRjaCB0byBlYWNoIHJvb20gaWYgdGhlcmUgYXJlIGlzIG5lZWQgZm9yIGEgTW9kZXJhdG9yLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VXNlcm5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkxvZ2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJzIGZvciB0aGUgbmV3IFRlYW0tUm9vbTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNyZWF0ZSBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2hvb3NlIGF0IGxlYXN0IG9uZSB1c2VyIGZvciB0aGUgVGVhbS1Sb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+QWRkIHVzZXIgdG8gdGVhbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+UmVtb3ZlIHVzZXIgZnJvbSBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXIgaXMgVGVhbS1Sb29tIE1vZGVyYXRvciAoSGUgaXMgYWJsZSB0byBtYW5hZ2UgVGVhbS1Sb29tcyBhbmQgdXNlcnMgb2YgdGhlIFRlYW0tUm9vbSBjYW4gYXNrIGhpbSB0byBjb21lIGluc2lkZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlJvb210eXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5JZiB5b3UgY2hlY2sgIkZvcmNlIHVzZXIgdG8gc3dpdGNoIHRvIG5ldyBUZWFtLVJvb20iIGFsbCBjaG9zZW4gdXNlcnMgd2lsbCBhdXRvbWF0aWNhbGx5IHN3aXRjaCB0byB0aGUgbmV3bHkgY3JlYXRlZCBUZWFtLVJvb20uIE90aGVyd2lzZSB0aGV5IGdldCBhIG5vdGlmaWNhdGlvbiB3aXRoIGEgYnV0dG9uIHRoYXQgdGhleSAmbHQ7aSZndDtjYW4mbHQ7L2kmZ3Q7IHN3aXRjaCB0byB0aGUgbmV3IHJvb20uIFRlYW0tTW9kZXJhdG9ycyBhbHdheXMgaGF2ZSB0aGUgZnJlZSBjaG9pY2UgdG8gbWFuYWdlIHRoZSBUZWFtLVJvb21zIGFuZCBzd2l0Y2ggYmV0d2VlbiB0aGVtLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TWFuYWdlIFRlYW0tUm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPllvdSBjYW4gc3dpdGNoIGhlcmUgYmV0d2VlbiBhbGwgVGVhbS1Sb29tcyB0aGF0IHlvdSBhcmUgYXNzaWduZWQgYXMgVGVhbS1Sb29tIE1vZGVyYXRvci4gVXNlcnMgaW5zaWRlIHRoZSBUZWFtLVJvb20gY2FuIHNlbmQgeW91IGEgbWVzc2FnZSwgZm9yIGV4YW1wbGUgdG8gYXNrIHlvdSB0byBjb21lIHRvIHRoZWlyIHJvb20gYW5kIGhlbHAgdGhlbS4gWW91IGNhbiBhbHNvIHRlcm1pbmF0ZSB0aGUgVGVhbS1Sb29tIGFuZCBhbGwgVXNlcnMgd2lsbCBiZSBsb2dnZWQgb3V0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Rm9yY2UgdXNlciB0byBzd2l0Y2ggdG8gbmV3IFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q3JlYXRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJzIGF2YWlsYWJsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+QWRkIGEgdXNlciB3aXRoIHRoZSBwbHVzIGZyb20gdGhlIGxlZnQgb3IgcmVtb3ZlIGl0IHdpdGggdGhlIGNyb3NzIGZyb20gdGhlIHJpZ2h0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MSkgVGVhbS1Sb29tIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4yKSBBZGQgdXNlcnMgdG8gdGhlIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVhbS1Sb29tIE5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2hhbmdlIHRvIHRoZSBSb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Td2l0Y2ggdG8gdGhpcyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlcm1pbmF0ZSBUZWFtLVJvb20gYW5kIGxvZ291dCBhbGwgVXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk5ldyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGEgbmV3IFRlYW0tUm9vbSBhdmFpbGFibGUgZm9yIHlvdS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlN3aXRjaCB0byBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW0tUm9vbSBBY3Rpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIHJlLW9wZW4gdGhpcyB3aW5kb3cgdmlhIHRoZSBtYWluIG1lbnUgaW4gdGhlICJBY3Rpb25zIiBzZWN0aW9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U2VuZCBtZXNzYWdlIHRvIFRlYW0tUm9vbSBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk5ldyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGEgbmV3IFRlYW0tUm9vbSBhdmFpbGFibGUuIFlvdSBjYW4gc3dpdGNoIHRvIHRoYXQgUm9vbS4gVGVhbS1Sb29tcyBhcmUgbGlrZSAiV29ya2dyb3VwcyIgd2l0aCBhZGRpdGlvbmFsbHkgcG9zc2liaWxpdGllcyB0byBhc2sgdGhlIFRlYW0tUm9vbSBNb2RlcmF0b3IgZm9yIGhlbHAuIFlvdXIgVGVhbS1Sb29tcyBhcmUgYWxzbyBhdmFpbGFibGUgaW4gdGhlICJNeSBNZWV0aW5ncyIgc2VjdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlN3aXRjaCB0byBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNyZWF0ZWQgYnk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb20gbmFtZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0OSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoaXMgV2luZG93IHdpbGwgc3RheSBvcGVuIGV2ZW4gaWYgeW91IGxlYXZlIHRoZSByb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VXNlcnMgZm9yIHRoaXMgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4zKSBPdGhlciBUZWFtLVJvb21zIHRoYXQgeW91IGNvdWxkIHN3aXRjaCB0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U2VuZCBhIG1lc3NhZ2UgdG8gdGhlIFRlYW0tUm9vbSBNb2RlcmF0b3JzLiBGb3IgZXhhbXBsZSBpZiB5b3UgbmVlZCBoZWxwIGluIE1vZGVyYXRpbmcgdGhlIFJvb20gb3IgaWYgeW91IGhhdmUgYSBxdWVzdGlvbiBhYm91dCB0aGUgdG9waWMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5TZW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4yKSBVc2VycyB0aGF0IGFyZSBpbnZpdGVkIHRvIHRoaXMgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5JcyBUZWFtLVJvb20gTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVzZSBhcmUgYWxsIHVzZXJzIHRoYXQgdGhlIG1vZGVyYXRvciBoYXMgaW52aXRlZCB0byB0aGlzIFRlYW0tUm9vbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1NyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIFRlYW0tTW9kZXJhdG9yIGxvZ2dlZCBpbiBhdCB0aGUgbW9tZW50ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGEgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+UGxlYXNlIGhlbHAgdXMsIHdlIGhhdmUgYSBwcm9ibGVtIGluIG91ciBUZWFtLVJvb20hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5BIHVzZXIgZnJvbSBhIFRlYW0tUm9vbSByZXF1ZXN0cyB5b3VyIGhlbHAuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb20gcmVxdWVzdCBmb3IgaGVscDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TWVzc2FnZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2MyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkZyb206PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGN1cnJlbnRseSBub3QgaW4gYW55IFRlYW0tUm9vbS4gQnV0IHlvdSBjYW4gc3dpdGNoIGhlcmUgdG8gYWxsIFRlYW0tUm9vbXMgdGhhdCB5b3UgaGF2ZSBhY2Nlc3MgdG8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjUiIG5hbWU9ImJhY2t1cENvbnRlbnQiPgorICAgIDx2YWx1ZT5CYWNrdXAgdGhlIFN5c3RlbS4gVGhlIEJhY2t1cCBpbmNsdWRlcyBhbGwgVXNlciBnZW5lcmF0ZWQgZGF0YS4gVGhlIGNvbmZpZ3VyYXRpb24gaXMgbm90IGluY2x1ZGVkIGFzIHdlbGwgYXMgdGhlIGxhbmd1YWdlIGxhYmVscy4gQmVjYXVzZSB0aG9zZSB2YWx1ZXMgYXJlIGltcG9ydGVkIHdpdGggdGhlIFN5c3RlbSBJbnN0YWxsZXIuIFRvIHVwZGF0ZSB5b3VyIFN5c3RlbSwgZXhwb3J0IHlvdXIgb2xkIHN5c3RlbSAoMSkgcmUtaW5zdGFsbCBpbnRvIGEgbmV3IGRhdGFiYXNlIHRoZSBuZXcgcGFja2FnZSAoMikgYW5kIGltcG9ydCB0aGUgQmFja3VwIGZpbGUgYWdhaW4gKDMpLiBUaGUgQmFja3VwIHNob3VsZCBiZSBpbXBvcnRlZCBiZWZvcmUgZ2VuZXJhdGluZyBkYXRhIGluIHRoZSBuZXdseSBpbnN0YWxsZWQgc3lzdGVtLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY2IiBuYW1lPSJiYWNrdXBDb250ZW50Ij4KKyAgICA8dmFsdWU+U3lzdGVtIEJhY2t1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY3IiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT5BbGxvdyB1c2VyIHRvIHNoYXJlIFNjcmVlbi9SZWNvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2OCIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+RGVueSB1c2VyIHRvIHNoYXJlIFNjcmVlbi9SZWNvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2OSIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+VXNlciBpcyBNb2RlcmF0b3IsIGhlIGNhbiBkbyBhbnl0aGluZyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3MCIgbmFtZT0iYXBwbHkgZm9yIHNjcmVlbi9yZWNvcmRpbmciPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIHNoYXJlL3JlY29yZCBzY3JlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzEiIG5hbWU9Im1vZGVyYXRpb24gbWluaSBpY29ucyI+CisgICAgPHZhbHVlPllvdSBhcmUgYWxsb3dlZCB0byBzaGFyZS9yZWNvcmQgc2NyZWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzIiIG5hbWU9Im1vZGVyYXRpb24gbWluaSBpY29ucyI+CisgICAgPHZhbHVlPkFwcGx5IGZvciByaWdodCB0byBzaGFyZS9yZWNvcmQgc2NyZWVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDczIiBuYW1lPSJtb2RlcmF0aW9uIG1pbmkgaWNvbnMgY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPkFsbG93L0RlbnkgcmlnaHQgdG8gc2hhcmUvcmVjb3JkIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3NCIgbmFtZT0ic291bmQgaWNvbiI+CisgICAgPHZhbHVlPlR1cm4gc291bmQgb2ZmPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzUiIG5hbWU9InNvdW5kIGljb24iPgorICAgIDx2YWx1ZT5UdXJuIHNvdW5kIG9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzYiIG5hbWU9InJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5BdWRpbyBvbmx5IHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3NyIgbmFtZT0icm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlR1cm4gdGhpcyBGbGFnIG9uIGFuZCB0aGUgdXNlcnMgd2lsbCBoYXZlIG9ubHkgdGhlIEF1ZGlvLU9wdGlvbiBhbmQgbm8gVmlkZW8gaW4gYSBjb25mZXJlbmNlIHJvb20uIFRoaXMgY2FuIGJ5IGdvb2QgdG8gc2F2ZSBiYW5kd2lkdGguPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzgiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFsbG93IFJlbW90ZSBDb250cm9sIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzkiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkRlbnkgUmVtb3RlIENvbnRyb2wgKER1cmluZyBTY3JlZW4gU2hhcmluZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MCIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QXBwbHkgZm9yIHJpZ2h0IHRvIFJlbW90ZSBDb250cm9sIFNjcmVlbiAoRHVyaW5nIFNjcmVlbiBTaGFyaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgxIiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGFsbG93ZWQgdG8gUmVtb3RlIENvbnRyb2wgU2NyZWVuIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODIiIG5hbWU9ImFwcGx5IGZvciByZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gcmVtb3RlIGNvbnRyb2wgc2NyZWVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgzIiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Vc2VyIGlzIE1vZGVyYXRvciwgaGUgY2FuIGRvIGFueXRoaW5nISBbUmVtb3RlIERlc2t0b3AgQ29udHJvbF08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4NCIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QWxsb3cvRGVueSByaWdodCB0byBSZW1vdGUgQ29udHJvbCBTY3JlZW4gKER1cmluZyBTY3JlZW4gU2hhcmluZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4NSIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+MSkgWW91ciBQQyB0byByZW1vdGUgUEM6IFRvIGNvcHkgYW5kIHBhc3RlIHRleHQgZnJvbSB5b3VyIGNsaXBib2FyZCBpbnRvIHRoZSByZW1vdGUgY29udHJvbGxlZCBzY3JlZW4sIGNsaWNrIG9uIHRoZSBzY3JlZW4sIHRoZW4gcmlnaHQgY2xpY2sgaW4gdGhlIHRleHQgZmllbGQgYW5kIGNob29zZSAiSW5zZXJ0IiBmcm9tIHRoZSBjb250ZXh0IChyaWdodCBjbGljaykgbWVudS4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7MikgRnJvbSByZW1vdGUgUEMgdG8geW91ciBQQzogVG8gY29weSB0ZXh0IGZyb20gdGhlIHJlbW90ZSBQQyB0byB5b3VyIFBDJ3MgY2xpcGJvYXJkLCBoaWdobGlnaHQgdGhlIHRleHQgd2l0aCB0aGUgbW91c2Ugb24gdGhlIHJlbW90ZSBzY3JlZW4sIHRoZW4gcmlnaHQtY2xpY2sgb24gdGhlIHJlbW90ZSBzY3JlZW4gYW5kIGNob29zZSAmbHQ7aSZndDtDb3B5IGhpZ2hsaWdodGVkIHRleHQmbHQ7L2kmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODYiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNvcHkgYW5kIFBhc3RlIHRleHQgZnJvbSB5b3VyIFBDIHRvIHJlbW90ZSBQQyBhbmQgdmljZS12ZXJzYS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4NyIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+Q29weSBoaWdobGlnaHRlZCB0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODgiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkhvdyB0byBjb3B5IG4gcGFzdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4OSIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+UXVhbGl0eSBvZiB0aGUgU2NyZWVuU2hhcmU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTAiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPlZlcnkgaGlnaCBRdWFsaXR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTEiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPkhpZ2ggUXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkyIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5NZWRpdW0gUXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkzIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5Mb3cgUXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk0IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPmVuX1VTPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTUiIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+ZGVfREU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NiIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5LZXlib2FyZDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NyIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5DbG9zZSBXZWJpbmFyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk4IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPlRoZSBXZWJpbmFyIGlzIGFscmVhZHkgY2xvc2VkLCB5b3Ugd2lsbCBiZSByZWRpcmVjdGVkIHRvIHNvbWUgaW50ZXJlc3Rpbmcgb2ZmZXJpbmdzIGluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTkiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+Q2xvc2UgUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAwIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPkV4aXQgVVJMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDEiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+Um9vbSB0ZXJtaW5hdGlvbiBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAyIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPklmIHRoZSByb29tIGlzIGNsb3NlZCB1c2VycyB3aWxsIGJlIHJlZGlyZWN0ZWQgdG8gdGhlIGV4aXQgVVJMLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAzIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkxkYXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA1IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNiIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5Db25maWcgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA3IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkxkYXAgQ29uZmlnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDgiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA5IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkVuYWJsZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JbnNlcnRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTExIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkluc2VydGVkIGJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTIiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+VXBkYXRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEzIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPlVwZGF0ZWQgYnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5UaGUgY29uZmlnIGZpbGVzIGFyZSBpbiB0aGUgZm9sZGVyIHdlYmFwcHMvb3Blbm1lZXRpbmdzL2NvbmYuIFlvdSBuZWVkIHRvIG1hbnVhbGx5IHVwbG9hZCB0aGUgZmlsZXMgdG8gdGhpcyBmb2xkZXIuIENoYW5nZXMgdG8gdGhlIGNvbmZpZyBmaWxlIGFyZSBpbW1lZGlhdGVseSBvbmxpbmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTUiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+Q29uZmlnIGZpbGUgbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE2IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPklmIHlvdSBlbmFibGUgIkFkZCBEb21haW4gdG8gdXNlcm5hbWUiIHRoZSB2YWx1ZSBvZiB0aGUgZmllbGQgImRvbWFpbiIgaXMgYWRkZWQgdG8gZWFjaCBsb2dpbiB0aGF0IHRoZSB1c2VyIGVudGVycyBpbiB0aGUgbG9naW4gYm94LiBUaGlzIGlzIHVzZWZ1bCBpZiB0aGUgTG9naW4gaW4gdGhlIExkYXAgaXMgc3RvcmVkIGluY2x1ZGluZyB0aGUgZG9tYWluIG5hbWUuIEV4YW1wbGU6IFVzZXIgZW50ZXJzICJoYW5zIiBkb21haW4gaXMgc3BlY2lmaWVkIGFzICJsb2NhbGhvc3QuY29tIiwgbG9naW4gdGhhdCBpcyB2ZXJpZmllZCBhZ2FpbnN0IExkYXAgaXM6IGhhbnNAbG9jYWxob3N0LmNvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE3IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkFkZCBEb21haW4gdG8gdXNlcm5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExOCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5Eb21haW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExOSIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5JbnNlcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMCIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5Db3B5IGhpZ2hsaWdodGVkIHRleHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMSIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5SZW1vdGUgQ2xpcGJvYXJkIFRleHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMiIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5TaG93IHJlbW90ZSBDbGlwYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMyIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+RG8gbm90IHNob3cgYWdhaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNCIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+Q29weSB0ZXh0IGhlcmUgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjUiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPllvdSBuZWVkIHRoZSByaWdodCB0byByZW1vdGUgY29udHJvbCAob3IgdGhlIG1vZGVyYXRpb24pIHRvIGNvcHkgYW5kIHBhc3RlIHRleHQgdG8gb3IgZnJvbSB0aGUgcmVtb3RlIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNiIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+RWRpdCBkZWZhdWx0IHNldHRpbmdzIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI3IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5EbyBub3Qgc2hvdyBpbmZvIGJveCBpbiBSZW1vdGUgQ29udHJvbCBhYm91dCBDb3B5IGFuZCBQYXN0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI4IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPlNhdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyOSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5SZW1vdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMSIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkludml0ZSB1c2VyIHRvIGNvbmZlcmVuY2Ugcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMyIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+Q2hvb3NlIGEgY29uZmVyZW5jZSByb29tLiBUaGUgaW52aXRlZCB1c2VyIHdpbGwgZ2V0IGEgbWVzc2FnZSB3aXRoIHlvdXIgbmFtZSBhbmQgYSBsaW5rIHRvIHRoZSByb29tLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMzIiBuYW1lPSJjaGF0IHVzZXIiPgorICAgIDx2YWx1ZT5Db25uZWN0ZWQgc2luY2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzQiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5FbnRlciByb29tIGFmdGVyIHNlbmRpbmcgaW52aXRhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM1IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+SW52aXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzYiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5NZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzciIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGludml0ZSB5b3UgdG8gdGhlIGNvbmZlcmVuY2Ugcm9vbTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzOCIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkludml0ZSBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzkiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5TZW5kIEludml0YXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0MCIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPmRpZCAmbHQ7YiZndDtub3QmbHQ7L2ImZ3Q7IGFjY2VwdCB5b3VyIGludml0YXRpb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDEiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5BY2NlcHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0MiIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkRlbnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0MyIgbmFtZT0idXNlciBwcm9maWxlIj4KKyAgICA8dmFsdWU+VGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0NCIgbmFtZT0iYXBwb2ludG1lbnQgbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+RXZlbnQgRGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ1IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDYiIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPkRlc2NyaXB0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDciIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPkNyZWF0ZWQgYnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0OCIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlRpbWVab25lIE1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0OSIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPkNoZWNrICJUaW1lWm9uZSBNZXNzYWdlIiB0byBnaXZlIHVzZXJzIGEgbWVzc2FnZSBuZXh0IHRpbWUgdGhleSBsb2dpbiB0byB1cGRhdGUgdGhlaXIgcHJvZmlsZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MCIgbmFtZT0idGltZSB6b25lIHVwZGF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+UGxlYXNlIGNoZWNrIHRoZSB0aW1lIHpvbmUgaW4geW91ciB1c2VyIHByb2ZpbGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTEiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPk5ldyAkQVBQX05BTUUgY29uZmVyZW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MiIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGV0YWlsczombHQ7YnIvJmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUzIiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TdGFydDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NCIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RW5kOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU1IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DaGFuZ2VkICRBUFBfTkFNRSBjb25mZXJlbmNlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU2IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Pcmdhbml6ZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTciIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkNhbmNlbGVkICRBUFBfTkFNRSBjb25mZXJlbmNlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU4IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgY29uZmVyZW5jZSBSZW1pbmRlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1OSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkNvbW11bml0eSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYwIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2hvdyBjb250YWN0IGRhdGEgdG8gZXZlcnlib2R5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjEiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5BZGQgZmllbGRzIG9mIGludGVyZXN0IHRoYXQgeW91IG9mZmVyIG9yIHRoYXQgeW91IGFyZSBzZWFyY2hpbmcgdG8gZmluZCBpbnRlcmVzdGluZyBwYXJ0bmVycyBmb3IgYSBjb25mZXJlbmNlLiBDb21tYSBzZXBhcmF0ZSB0aGUgdGVybXMgKGZvciBleGFtcGxlOiBNZWRpY2FsIFNlcnZpY2UsIEhlYWx0aCBhc3N1cmFuY2UsIC4uLik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MiIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk15IG9mZmVyaW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYzIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+TXkgaW50ZXJlc3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjQiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjUiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5UaW1lem9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY2IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+RmllbGRzIG9mIGludGVyZXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjciIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Db250YWN0IGluZm9ybWF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjgiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TaG93IGNvbnRhY3QgZGF0YSB0byBjb250YWN0cyBvbmx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjkiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TaG93IGNvbnRhY3QgZGF0YSB0byBub2JvZHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk15IFByb2ZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkVkaXQgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MiIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlNlYXJjaCB1c2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTczIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+V2F0Y2ggeW91ciBwcm9maWxlIGxpa2Ugb3RoZXIgc2VlIHlvdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc0IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+RWRpdCB5b3VyIHNldHRpbmdzLCBhZGQgeW91ciBpbnRlcmVzdHMgdG8gYmUgZm91bmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlNlYXJjaCBmb3Igb3RoZXIgdXNlcnMgYW5kIGV4dGVuZCB5b3VyIG5ldHdvcms8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NiIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5TZWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NyIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5Vc2VyIG9mZmVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc4IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlVzZXIgbG9va3MgZm9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzkiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+RnJlZXRleHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODEiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+VGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MiIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5PZmZlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MyIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5TZWFyY2hzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODQiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+U2VhcmNocmVzdWx0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODUiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+QWN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg2IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkFkZCB0byBjb250YWN0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg3IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlNlbmQgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg4IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkNvbnRhY3RzIGFuZCBNZXNzYWdlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg5IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlBlbmRpbmcgY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkFjY2VwdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkxIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+RGVueTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkyIiBuYW1lPSJ1c2VyIGNvbnRhY3QgcmVxdWVzdCI+CisgICAgPHZhbHVlPkhpLDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkzIiBuYW1lPSJ1c2VyIGNvbnRhY3QgcmVxdWVzdCI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gYWRkIHlvdSBhcyBjb250YWN0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk0IiBuYW1lPSJ1c2VyIGNvbnRhY3QgcmVxdWVzdCI+CisgICAgPHZhbHVlPkNoZWNrIHlvdXIgY29udGFjdCByZXF1ZXN0cyBpbiAkQVBQX05BTUUgb3IgY2xpY2sgb24gdGhvc2UgbGlua3MgdG8gYWNjZXB0IG9yIGRlbnkgdGhlIHJlcXVlc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NSIgbmFtZT0iYWRkIHVzZXIgY29udGFjdCI+CisgICAgPHZhbHVlPlRoaXMgdXNlciBpcyBhbHJlYWR5IGluIHlvdXIgY29udGFjdCBsaXN0IG9yIGhhcyByZWNlaXZlZCBhbiBpbnZpdGF0aW9uIHRvIHlvdXIgY29udGFjdCBsaXN0IHRoYXQgaXMgbm90IGFuc3dlcmVkIHlldC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NiIgbmFtZT0idXNlciBjb250YWN0IG1haWwiPgorICAgIDx2YWx1ZT5Zb3VyIGNvbnRhY3QgbGlzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+RWRpdCB5b3VyIGNvbnRhY3QgYW5kIG1lc3NhZ2VzLCZsdDtici8mZ3Q7IG1hbmFnZSB5b3VyIHBlbmRpbmcgY29udGFjdHMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTgiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5jb25maXJtZWQgeW91IGFzIGNvbnRhY3QhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTkiIG5hbWU9ImNoYXQgaW5mbyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDAiIG5hbWU9ImNoYXQgbG9nIGljb24iPgorICAgIDx2YWx1ZT5TaG93IC8gQ29weSBjaGF0IGxvZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAxIiBuYW1lPSJjaGF0IGxvZyB3aW5kb3ciPgorICAgIDx2YWx1ZT5DaGF0IExvZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Gcm9tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlN1YmplY3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWVzc2FnZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TmV3IE1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwOCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2xpY2sgdG8gd3JpdGUgYSBuZXcgbWVzc2FnZSB0byBhbnkgb2YgeW91ciBjb250YWN0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Xcml0ZSBuZXcgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjEwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Ubzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3ViamVjdDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMiIgbmFtZT0id2hpdGVib2FyZCBmdWxsLWZpdCI+CisgICAgPHZhbHVlPkVuYWJsZSBmdWxsIGZpdCBhbmQgdGhlIHdoaXRlYm9hcmQgd2lsbCB6b29tIHRoZSB3aG9sZSB3aGl0ZWJvYXJkIHNvIHRoYXQgYWxsJmx0O2JyLyZndDtkb2N1bWVudHMgYXJlIHZpc2libGUgYWNjb3JkaW5nIHRvIGVhY2ggcGFydGljaXBhbnRzIHNjcmVlbiByZXNvbHV0aW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjEzIiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT5LaWNrIHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNCIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBraWNrIHlvdXJzZWxmIG91dCBvZiB0aGUgY29uZmVyZW5jZSByb29tISBJZiB5b3Ugd2FudCB0byBsZWF2ZSBpdCBjbG9zZSB0aGUgYnJvd3NlciBvciB1c2UgdGhlIGV4aXQgYnV0dG9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE1IiBuYW1lPSJraWNrLXVzZXIiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGlzY29ubmVjdCB0aGlzIHVzZXIgZnJvbSB0aGlzIGNvbmZlcmVuY2Ugcm9vbT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNiIgbmFtZT0ia2ljay11c2VyIj4KKyAgICA8dmFsdWU+Q29uZmlybSBhY3Rpb24gLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTciIG5hbWU9ImtpY2stdXNlciI+CisgICAgPHZhbHVlPllvdSBjYW5ub3Qga2ljayBhIFN1cGVyLU1vZGVyYXRvciBvdXQgb2YgYSByb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Cb29rIGNvbmZlcmVuY2Ugcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TdGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5FbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIGFuIG9wdGlvbmFsIHJlcXVlc3QgZm9yIG1lZXRpbmcgdG8gdGhlIG1lc3NhZ2UgYW5kIGNyZWF0ZSBhIGNvbmZlcmVuY2Ugcm9vbS4gVGhlIEV2ZW50IGlzIHRoZW4gY29waWVkIGluIHRoZSBjYWxlbmRhciBvZiBldmVyeSBwYXJ0aWNpcGFudC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+SW5ib3g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UcmFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGlzIGlzIHlvdSEgWW91IGNhbm5vdCBhZGQgeW91cnNlbGYgYXMgeW91ciBvd24gY29udGFjdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoZSB1c2VyIGlzIGFscmVhZHkgZGVuaWVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VGhlIHVzZXIgaXMgYWxyZWFkeSBhcHByb3ZlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyOCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoaXMgdXNlciBjb250YWN0IGhhc2ggaXMgaW52YWxpZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyOSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlVzZXIgYWRkZWQgdG8gY29udGFjdCBsaXN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMwIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VXNlciBkZW5pZWQgYXMgY29udGFjdCBhbmQgcmVtb3ZlZCBmcm9tIHBlbmRpbmcgY29udGFjdCBsaXN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMxIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgbm8gc3VjaCBjb250YWN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMyIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+V291bGQgeW91IHJlYWxseSBsaWtlIHRvIHJlbW92ZSB0aGF0IGNvbnRhY3Q/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzMiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Db25maXJtIGNvbnRhY3QgcmVtb3ZhbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM0IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+RGVsZXRlIGNvbnRhY3QgZnJvbSBsaXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzUiIG5hbWU9InVzZXIgcHJvZmlsZSI+CisgICAgPHZhbHVlPlVzZXIgUHJvZmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM2IiBuYW1lPSJ1c2VyIHByb2ZpbGUiPgorICAgIDx2YWx1ZT5TaG93IHVzZXIgcHJvZmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM3IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5NZXNzYWdlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzOSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VsZWN0IGFsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWxlY3Qgbm9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWxlY3QgdW5yZWFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbGVjdCByZWFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1vdmUgdG8gZm9sZGVyIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgbmV3IGZvbGRlciAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGVsZXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDYiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRlbGV0ZWQgbWFpbHMgYXJlIHN0aWxsIGluIHlvdXIgdHJhc2ggZm9sZGVyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ3IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5NYXJrIHVucmVhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5NYXJrIHJlYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0OSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QW5zd2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTAiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFuc3dlciBldmVyeWJvZHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Rm9yd2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BY3Rpb25zIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUzIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+U2VuZCBwcml2YXRlIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Tm90aGluZyBzZWxlY3RlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TW92ZSB0byBJbmJveDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU2IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EZWxldGUgKGZpbmFsKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU3IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGlzIGFjdGlvbiBjYW5ub3QgYmUgdW5kb25lITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgZm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZCBmb2xkZXJzIGFuZCBvcmdhbml6ZSB5b3VyIG1lc3NhZ2VzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgZm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+RGVsZXRlIGZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBkZWxldGUgdGhpcyBmb2xkZXIsIHRoZXJlIGFyZSBzdGlsbCBtZXNzYWdlcyBpbnNpZGUhIERlbGV0ZSBmaXJzdCB0aGUgbWVzc2FnZXMgb3IgbW92ZSB0aGVtIHRvIGFub3RoZXIgZm9sZGVyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+RWRpdCBuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSBmb2xkZXIiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgZm9sZGVyPyBUaGVyZSBpcyBubyB3YXkgdG8gdW5kbyB0aGF0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY2IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+WW91ciByZXF1ZXN0IHdhcyBzZW5kIHRvIHRoZSB1c2VyLiBUaGUgdXNlciB3aWxsIHJlY2VpdmUgYSBub3RpZmljYXRpb24gdG8gYWNjZXB0IG9yIGRlbnkgeW91ciByZXF1ZXN0LiBPbmx5IGFjY2VwdGVkIHJlcXVlc3RzIGFyZSBpbiB5b3VyIGNvbnRhY3QgbGlzdCBvZiBjb3Vyc2UhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjciIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5NZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjgiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+VGhlIHVzZXIgZG9lcyBub3Qgc2hhcmUgaGlzIHBlcnNvbmFsIGNvbnRhY3QgZGF0YS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2OSIgbmFtZT0idXNlciB2aWV3IHByb2ZpbGUiPgorICAgIDx2YWx1ZT5UaGUgdXNlciBkb2VzIHNoYXJlIGhpcyBwZXJzb25hbCBjb250YWN0IGRhdGEgb25seSB0byBjb250YWN0cy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3MCIgbmFtZT0idXNlciB2aWV3IHByb2ZpbGUiPgorICAgIDx2YWx1ZT5BZGRyZXNzICZhbXA7IFBob25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzEiIG5hbWU9ImVycm9yIGNvZGUiPgorICAgIDx2YWx1ZT5Zb3UgaW52aXRhdGlvbiBjb2RlIGlzIG5vIHZhbGlkLCB0aGUgY29kZSBpcyBvbmx5IHZhbGlkIGR1cmluZyB0aGlzIHNwZWNpZmljIGRhdGUgYW5kIHRpbWU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzIiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5UaGlzIGV2ZW50IGlzIGNvbm5lY3RlZCB0byBzZXZlcmFsIGNhbGVuZGFycyBvZiBvdGhlciB1c2Vycy4gWW91ciBjaGFuZ2Ugd2lsbCBhbHNvIHVwZGF0ZSB0aGVpciBjYWxlbmRhci4gV291bGQgeW91IHJlYWxseSBsaWtlIHRvIHVwZGF0ZSB0aGUgZXZlbnQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzMiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Db25maXJtIHVwZGF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc0IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+QWxsb3cgY29udGFjdCB0byBzZWUgbXkgY2FsZW5kYXIgKHZpZXcgb25seSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkRvIG5vdCBzaGFyZSBjYWxlbmRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc2IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+Q2FsZW5kYXIgb2YgY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPllvdXIgY29udGFjdHMgbmVlZCB0byBhcHByb3ZlIHlvdSBmaXJzdCB0byBiZSBhYmxlIHRvIHNlZSB0aGVpciBjYWxlbmRhci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3OCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPllvdSBjYW5ub3Qgc3RvcmUgb3IgZGVsZXRlIGV2ZW50cyBmcm9tIG90aGVyIGNhbGVuZGFycyB0aGVuIHlvdXIgb3duITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc5IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+U2hvdyBteSBvd24gY2FsZW5kYXIgYWdhaW4hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODAiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5UaGlzIGV2ZW50IGlzIGNvbm5lY3RlZCB0byBzZXZlcmFsIGNhbGVuZGFycyBvZiBvdGhlciB1c2Vycy4gWW91ciBhY3Rpb24gd2lsbCBhbHNvIGRlbGV0ZSB0aGUgZXZlbnQgZnJvbSB0aGVpciBjYWxlbmRhci4gV291bGQgeW91IHJlYWxseSBsaWtlIHRvIGRlbGV0ZSB0aGUgZXZlbnQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODEiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Db25maXJtIGFjdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgyIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RW50ZXIgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgzIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QWNjZXNzIHRoZSBjb25mZXJlbmNlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgYSBjb25mZXJlbmNlIHJvb20gYW5kIGV2ZW50IGJvb2tlZCB3aXRoIHRoaXMgcHJpdmF0ZSBtZXNzYWdlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg1IiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgdG8gc3RvcmUgdGhlIGV2ZW50IGZpcnN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg2IiBuYW1lPSJhY2Nlc3Mgcm9vbXMgZXJyb3IiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBzdWNoIHJvb20gYXZhaWxhYmxlLiBUaGUgZXZlbnQgaW4gdGhlIGNhbGVuZGFyIGFuZCBjb25uZWN0ZWQgcm9vbSBpcyBhbHJlYWR5IGRlbGV0ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODciIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPkNob29zZSB5b3VyIG5pY2tuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODgiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPkZpcnN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg5IiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5MYXN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkwIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5FbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkxIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5PazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkyIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5NaW5pbXVtIGxlbmd0aCA0IGNoYXJzISBGb3IgYm90aCwgZmlyc3RuYW1lIGFuZCBsYXN0bmFtZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MyIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGEgdmFsaWQgZW1haWwhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTQiIG5hbWU9ImF1dGggZnJvbSI+CisgICAgPHZhbHVlPkZhY2Vib29rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTUiIG5hbWU9ImF1dGggZm9ybSI+CisgICAgPHZhbHVlPkxvZ2luIHdpdGggeW91ciBGYWNlYm9vayBhY2NvdW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTYiIG5hbWU9InZpZXcgcHJvZmlsZSI+CisgICAgPHZhbHVlPk1lbWJlciBzaW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk3IiBuYW1lPSJkaXJlY3QgbG9naW4gbWVzc2FnZSI+CisgICAgPHZhbHVlPllvdSd2ZSBsb2dnZWQgd2l0aCB5b3VyIEZhY2Vib29rIGFjY291bnQuIFlvdSBzaG91bGQgdXBkYXRlIHlvdXIgcHJvZmlsZSB3aXRoIHRoZSBjb3JyZWN0IGVtYWlsLiBPdGhlcndpc2UgeW91IHdpbGwgbm90IHJlY2VpdmUgaW52aXRhdGlvbnMgYW5kIHByaXZhdGUgbWVzc2FnZXMgZnJvbSBvdGhlciB1c2Vycy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5OCIgbmFtZT0iZGlyZWN0IGxvZ2luIG1lc3NhZ2UgaGVhZGVyIj4KKyAgICA8dmFsdWU+TWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk5IiBuYW1lPSJkaXJlY3QgbG9naW4gbWVzc2FnZSBjaGVja2JveCBjb250cm9sIj4KKyAgICA8dmFsdWU+RG8gbm90IHNob3cgdXBkYXRlIHByb2ZpbGUgbWVzc2FnZSBhZ2FpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAwIiBuYW1lPSJwcm9maWxlIHNldHRpbmdzIGJ1dHRvbiI+CisgICAgPHZhbHVlPm1vcmUgZGlzcGxheSBvcHRpb25zIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5OZXcgcHJpdmF0ZSBtZXNzYWdlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DbGljayBoZXJlIHRvIHZpc2l0IHlvdXIgcHJvZmlsZSB0byBzZWUgdGhlIGZ1bGwgbWVzc2FnZSAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+UmVwbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwNCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+Um9vbXMgYW5kIGNoYXRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDUiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPk15IHJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDYiIG5hbWU9Im15IHJvb21zIj4KKyAgICA8dmFsdWU+TXkgY29uZmVyZW5jZSByb29tIChmb3IgMS0xNiB1c2Vycyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwNyIgbmFtZT0ibXkgcm9vbXMiPgorICAgIDx2YWx1ZT5NeSB3ZWJpbmFyIHJvb20gKGZvciAxLTEyMCB1c2Vycyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwOCIgbmFtZT0icm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPk93bmVyIElkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDkiIG5hbWU9ImxvZ2luIGVycm9yIj4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGEgcGFzc3dvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMCIgbmFtZT0ibG9naW4gZXJyb3IiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCBhbiBhY2NvdW50IHdpdGggVXNlci1MZXZlbCBVc2VyLCBNb2RlcmF0b3Igb3IgQWRtaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMSIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPldlYi1TZXJ2aWNlIChvbmx5IGFjY2VzcyB2aWEgU09BUCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMiIgbmFtZT0idXBsb2FkIGZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5EbyBkaXJlY3RseSBsb2FkIHRvIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMyIgbmFtZT0id2hpdGVib2FyZCBjbG9zZSBjb25maXJtYXRpb24iPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gcmVtb3ZlIHRoaXMgd2hpdGVib2FyZD8gVGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxNCIgbmFtZT0id2hpdGVib2FyZCBsb2FkIFdNTCI+CisgICAgPHZhbHVlPkxvYWQgdG8gd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE1IiBuYW1lPSJyZWNvcmRpbmcgZmxhZyI+CisgICAgPHZhbHVlPkRvIG5vdCBmb3JnZXQgc3RhcnQgcmVjb3JkaW5nISBPbmUgdXNlciBwZXIgcm9vbSBhbHdheXMgbmVlZHMgdG8gc3RhcnQgaXQgdG8gaGF2ZSB0aGUgcmVjb3JkaW5nIGFmdGVyd2FyZHMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTYiIG5hbWU9InJlY29yZGluZyBmbGFnIj4KKyAgICA8dmFsdWU+U3RhcnQgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTciIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+QXJyb3c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxOCIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT5DaXJjbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxOSIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT5MaW5lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjAiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+U3F1YXJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjEiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+VHJpYW5nbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyMiIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlRleHQvTm90ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIzIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+Q2xpcGFydHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkRyYXcgRnJlZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI1IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+U2VsZWN0L01vdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNiIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkRyYXcgU2hhcGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNyIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkN1dC9Nb3ZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjgiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5ab29tIEluL091dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI5IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+UHJpbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlVuZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMSIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlRyYXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzIiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5BZGQgR3JpZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMzIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+U2hhcmUgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM0IiBuYW1lPSJpY29uIHN1Ym1lbnUiPgorICAgIDx2YWx1ZT5TZWxlY3QgU2hhcGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNSIgbmFtZT0iaWNvbiBzdWJtZW51Ij4KKyAgICA8dmFsdWU+U2VsZWN0IENsaXBhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNiIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkNvcHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNyIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkN1dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM4IiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+UGFzdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzOSIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkRlbGV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQwIiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGUgY29tcGxldGUgY29udGVudCBvbiB0aGUgd2hpdGVib2FyZD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MSIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkxvYWQgZGlyZWN0bHkgdG8gd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQyIiBuYW1lPSJhdHRlbmRlZXMiPgorICAgIDx2YWx1ZT5BdHRlbmRlZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MyIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+QXR0ZW5kZWUgTWFuYWdlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ0IiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5QcmVzZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDUiIG5hbWU9ImF0ZW5kZWUgbWFuYWdlciI+CisgICAgPHZhbHVlPlJlbW90ZSBDb250cm9sbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ2IiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5FamVjdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ3IiBuYW1lPSJjaGF0Ij4KKyAgICA8dmFsdWU+Q2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ4IiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5JbnZpdGUgQXR0ZW5kZWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDkiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPkJ5IEVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTAiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPlVzZXIgaXMgbW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTEiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPlVzZXIgaGFzIHdlYmNhbSBzd2l0Y2hlZCBvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUyIiBuYW1lPSJmaWxsX29wdGlvbiI+CisgICAgPHZhbHVlPkRlYWN0aXZhdGUgc2hhcGUgZmlsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUzIiBuYW1lPSJmaWxsX29wdGlvbiI+CisgICAgPHZhbHVlPkFjdGl2YXRlIHNoYXBlIGZpbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlNuYXAgdG8gR3JpZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU1IiBuYW1lPSJhbGxvd19yZWNvcmRpbmciPgorICAgIDx2YWx1ZT5BbGxvdyByZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NiIgbmFtZT0id2FpdF9mb3JfcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+V2FpdCBmb3IgcmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTciIG5hbWU9ImhpZGVfdG9wX2JhciI+CisgICAgPHZhbHVlPkhpZGUgdG9wYmFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTgiIG5hbWU9ImZpbGVFeHBsb3JlciI+CisgICAgPHZhbHVlPlBsYXkgdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1OSIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhlIGNvbnRlbnQgb24gdGhlIGN1cnJlbnQgc2xpZGU/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjAiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPkFjY2VwdCBhbmQgZ3JhbnQgdXNlciByaWdodDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYxIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT5EZW55PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjIiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPkk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2MyIgbmFtZT0iYWN0aXZpdHlfd2luZG93Ij4KKyAgICA8dmFsdWU+QWN0aXZpdGllcyBhbmQgYWN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY0IiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+UmVtb3ZlIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NSIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPllvdSBuZWVkIHRoZSBtb2RlcmF0aW9uIG9yIHRoZSByaWdodCB0byBkcmF3IG9uIHRoZSB3aGl0ZWJvYXJkIHRvIHJlbW92ZSB3aGl0ZWJvYXJkcyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NiIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPk5vdCBhbGxvd2VkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjciIG5hbWU9InVzZXJfbGVmdF9hY3RfbXNnIj4KKyAgICA8dmFsdWU+aGFzIGxlZnQgdGhlIHJvb20uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjgiIG5hbWU9ImNsaXBhcnQgaWNvbnMiPgorICAgIDx2YWx1ZT5NYXRoIGljb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjkiIG5hbWU9ImNsaXBhcnQgaWNvbnMiPgorICAgIDx2YWx1ZT5ObyBjYXRlZ29yeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzcwIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5Db2xvci1TdHlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzcxIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5RdWFsaXR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzIiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPkRvbWFpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzczIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT52aXNpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc0IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5yZWRvcmFuZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+bWVkaXVtc2VhZ3JlZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NiIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+c3RlZWxibHVlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzciIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPmxpZ2h0c3RlZWxibHVlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzgiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPmdvbGRlbnJlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc5IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5zaWx2ZXJncmF5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODAiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnVzZXJkZWZpbmVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODEiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPmJlc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4MiIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+dXBsb2FkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODMiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPm1lZGl1bTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg0IiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODUiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODYiIG5hbWU9ImdpdmUgZXhjbHVzaXZlIGF1ZGlvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIG9mIG90aGVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg3IiBuYW1lPSJtdXRlIHNlbGYgbWVzc2FnZSI+CisgICAgPHZhbHVlPllvdSBhcmUgZ2xvYmFsbHkgbXV0ZWQgYnkgdGhlIG1vZGVyYXRvci4gWW91IGNhbm5vdCB1bm11dGUgeW91cnNlbGYhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODgiIG5hbWU9Im11dGUgc2VsZiBjb25maXJtIG1lc3NhZ2UgdGl0bGUiPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgZ2xvYmFsbHk/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODkiIG5hbWU9Im11dGUgc2VsZiBjb25maXJtIG1lc3NhZ2UgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBtdXRlIHlvdXJzZWxmIGdsb2JhbGx5PyBObyBvdGhlciB1c2VyIHdpbGwgaGVhciB5b3UgYW55bW9yZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5MCIgbmFtZT0ibXV0ZSBvdGhlcnMgY29uZmlybSBtZXNzYWdlIHRpdGxlIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGxvY2FsbHk/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTEiIG5hbWU9Im11dGUgb3RoZXJzIGNvbmZpcm0gbWVzc2FnZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBtdXRlIHRoaXMgbWljcm9waG9uZT8gWW91IGNhbiBvbmx5IG11dGUgaXQgbG9jYWxseSBvbiB5b3VyIHNjcmVlbi4gSXQgaGFzIG5vIGVmZmVjdCB0byBob3cgb3RoZXIgdXNlcnMgaGVhciB0aGlzIHVzZXIuIE9ubHkgbW9kZXJhdG9ycyBjYW4gdHVybiBpdCBvZmYgZ2xvYmFsbHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTIiIG5hbWU9Im11dGUgb3RoZXJzIGNvbmZpcm0gbWVzc2FnZSB0aXRsZSI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBvZmYgZ2xvYmFsbHk/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTMiIG5hbWU9Im11dGUgb3RoZXJzIG1vZGVyYXRvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIG11dGUgdGhpcyB1c2VyIGdsb2JhbGx5PyBObyBvdGhlciB1c2VyIHdpbGwgaGVhciBoaW0gYW55bW9yZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5NCIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5Zb3VyIHNvdW5kIGlzIG9uLiBDbGljayBoZXJlIHRvIHNlbmQgbW9kZXJhdG9yIG1lc3NhZ2UgdG8gbXV0ZSB5b3VyIG1pY3JvcGhvbmUgZ2xvYmFsbHkgKGluIHRoZSBjb21wbGV0ZSBjb25mZXJlbmNlIHJvb20pIG9mZiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5NSIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5Zb3VyIHNvdW5kIGlzIG9mZi4gQ2xpY2sgaGVyZSB0byBzZW5kIG1vZGVyYXRvciBtZXNzYWdlIHRvIHVubXV0ZSB5b3VyIG1pY3JvcGhvbmUgZ2xvYmFsbHkgKGluIHRoZSBjb21wbGV0ZSBjb25mZXJlbmNlIHJvb20pIG9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk2IiBuYW1lPSJtdXRlIGFwcGx5IHNlbGYgb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdGhhdCB0aGUgbW9kZXJhdG9yIG11dGVzIG15IG1pY3JvcGhvbmUgZ2xvYmFsbHkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTciIG5hbWU9Im11dGUgYXBwbHkgc2VsZiBvZmYgbWVzc2FnZSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdGhhdCB0aGUgbW9kZXJhdG9yIHVubXV0ZXMgbXkgbWljcm9waG9uZSBnbG9iYWxseS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5OCIgbmFtZT0ibXV0ZSBhcHBseSBvZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+d2FudCB0aGF0IHRoZSBtb2RlcmF0b3IgdW5tdXRlcyBoaXMvaGVyIG1pY3JvcGhvbmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTkiIG5hbWU9Im11dGUgYXBwbHkgb2YgbWVzc2FnZSI+CisgICAgPHZhbHVlPndhbnQgdGhhdCB0aGUgbW9kZXJhdG9yIG11dGVzIGhpcy9oZXIgbWljcm9waG9uZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMCIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5Vbm11dGUgbWljcm9waG9uZS4gQ2xpY2sgaGVyZSB0byBtdXRlIGhpcy9oZXIgbWljcm9waG9uZSBnbG9iYWxseSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMSIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUuIENsaWNrIGhlcmUgdG8gdW5tdXRlIGhpcy9oZXIgbWljcm9waG9uZSBnbG9iYWxseSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMiIgbmFtZT0ibXV0ZSBzZWxmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGlzIHVzZXIgaXMgZ2xvYmFsbHkgbXV0ZWQgYnkgdGhlIG1vZGVyYXRvci4gWW91IGNhbm5vdCB1bm11dGUgaGltITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDAzIiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TXV0ZSB5b3VyIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwNCIgbmFtZT0idW5tdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+VW5tdXRlIHlvdXIgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA1IiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDYiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSBtaWNyb3Bob25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDciIG5hbWU9Im11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwOCIgbmFtZT0idW5tdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+VW5tdXRlIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwOSIgbmFtZT0ibXV0ZSBtb2RlcmF0b3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPk9ubHkgbW9kZXJhdG9ycyBjYW4gbXV0ZSBvciB1bm11dGUgYW4gdXNlciBnbG9iYWxseSEgVG8gbXV0ZSB5b3VyIG93biBtaWNyb3Bob25lOiBQbGVhc2UgdXNlIHRoZSBtaWNyb3Bob25lIGljb24gaW4geW91ciB2aWRlbyBwb2QhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTAiIG5hbWU9InBvbGxfbmFtZSI+CisgICAgPHZhbHVlPlBvbGwgTmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDExIiBuYW1lPSJwb2xsX25hbWUiPgorICAgIDx2YWx1ZT5Zb3U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMiIgbmFtZT0iYXJjaGl2ZWRfcG9sbHMiPgorICAgIDx2YWx1ZT5BcmNoaWV2ZWQgUG9sbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMyIgbmFtZT0iYWN0aXZlX3BvbGwiPgorICAgIDx2YWx1ZT5hY3RpdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNCIgbmFtZT0iY2hhcnRfc2ltcGxlIj4KKyAgICA8dmFsdWU+U2ltcGxlIENoYXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTUiIG5hbWU9ImNoYXJ0X3BpZSI+CisgICAgPHZhbHVlPlBpZSBDaGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE2IiBuYW1lPSJzaWduX3VwX3ZhbGlkYXRpb24iPgorICAgIDx2YWx1ZT5QbGVhc2UgZW50ZXIgZW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNyIgbmFtZT0iY2hhdF9ub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5OZXcgbWVzc2FnZShzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE4IiBuYW1lPSJwb2xsX2Nsb3NlIj4KKyAgICA8dmFsdWU+Q2xvc2UgUG9sbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE5IiBuYW1lPSJwb2xsX2Nsb3NlX2NvbmZpcm0iPgorICAgIDx2YWx1ZT5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gY2xvc2UgdGhpcyBQb2xsPyBObyBvbmUgd2lsbCBiZSBhYmxlIHRvIHZvdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMCIgbmFtZT0icG9sbF9kZWxldGUiPgorICAgIDx2YWx1ZT5EZWxldGUgUG9sbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIxIiBuYW1lPSJwb2xsX2RlbGV0ZV9jb25maXJtIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIFBvbGw/IFRoZSByZXN1bHRzIHdpbGwgYmUgZGVsZXRlZCBhcyB3ZWxsLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIyIiBuYW1lPSJsYW5ndWFnZV9jb2RlIj4KKyAgICA8dmFsdWU+TGFuZ3VhZ2UgSVNPIENvZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMyIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX3Blcm1pc3Npb24iPgorICAgIDx2YWx1ZT5BbGxvdy9EZW55IHJpZ2h0IHRvIGdpdmUgZXhjbHVzaXZlIGF1ZGlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI0IiBuYW1lPSJhbGxvd19leGNsdXNpdmVfYXVkaW9fcGVybWlzc2lvbiI+CisgICAgPHZhbHVlPkFsbG93IHVzZXIgdG8gZ2l2ZSBleGNsdXNpdmUgYXVkaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNSIgbmFtZT0iZGVueV9leGNsdXNpdmVfYXVkaW9fcGVybWlzc2lvbiI+CisgICAgPHZhbHVlPkRlbnkgdXNlciB0byBnaXZlIGV4Y2x1c2l2ZSBhdWRpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI2IiBuYW1lPSJleGNsX2F1ZGlvIGFwcGx5IHNlbGYgb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gZ2V0IGEgcGVybWlzc2lvbiBmb3IgZXhjbHVzaXZlIGF1ZGlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI3IiBuYW1lPSJleGNsX2F1ZGlvIGFwcGx5IG9mIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53YW50IHRoYXQgdGhlIG1vZGVyYXRvciBnaXZlcyBtZSBhIHBlcm1pc3Npb24gZm9yIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyOCIgbmFtZT0iZXhjbF9hdWRpbyBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5HaXZlIGEgcGVybWlzc2lvbiBmb3IgZXhjbHVzaXZlIGF1ZGlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI5IiBuYW1lPSJjYW1fcmVzb2x1dGlvbiI+CisgICAgPHZhbHVlPkNhbSByZXNvbHV0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzAiIG5hbWU9ImNhbV9yZXNvbHV0aW9uX2luZm8iPgorICAgIDx2YWx1ZT5DaGFuZ2luZyB0aGUgcmVzb2x1dGlvbiBhZmZlY3RzIGJhbmR3aWR0aCwgYmlnZ2VyIHBpY3R1cmUgbmVlZHMgbW9yZSBiYW5kd2l0aCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzMSIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2Vycm9yIj4KKyAgICA8dmFsdWU+WW91IGRvbid0IGhhdmUgdGhlIHJpZ2h0IHRvIGdpdmUgeW91cnNlbGYgb3Igb3RoZXJzIGV4Y2x1c2l2ZSBhdWRpby4gWW91IG5lZWQgdG8gYXBwbHkgZm9yIHRoZSByaWdodCBmcm9tIHRoZSBtb2RlcmF0b3Igb3IgYXNrIHRoZSBtb2RlcmF0b3IgdG8gZ2l2ZSB5b3UgZXhjbHVzaXZlIGF1ZGlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMyIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fYXNrIj4KKyAgICA8dmFsdWU+SSB3b3VsZCBsaWtlIHRvIGdldCB0aGUgcmlnaHQgZm9yIGV4Y2x1c2l2ZSBhdWRpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMzIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fYWN0aW9uIj4KKyAgICA8dmFsdWU+R2l2ZSBleGNsdXNpdmUgYXVkaW8gdG8gbWUgKGFsdGVybmF0aXZlbHkgY2xpY2sgb24geW91ciB2aWRlbyBwb2Qgb3IgcHJlc3MgRjEyKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM0IiBuYW1lPSJtaWNybyBpcyBvbiI+CisgICAgPHZhbHVlPk1pY3JvcGhvbmUgaXMgb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzUiIG5hbWU9Im1pY3JvIGlzIG9mZiI+CisgICAgPHZhbHVlPk1pY3JvcGhvbmUgaXMgbXV0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNiIgbmFtZT0iaGlkZV9jaGF0Ij4KKyAgICA8dmFsdWU+SGlkZSBjaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzciIG5hbWU9ImhpZGVfYWN0aXZpdGllc19hbmRfYWN0aW9ucyI+CisgICAgPHZhbHVlPkhpZGUgYWN0aXZpdGllczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM4IiBuYW1lPSJoaWRlX2ZpbGVzX2V4cGxvcmVyIj4KKyAgICA8dmFsdWU+SGlkZSBmaWxlcyBleHBsb3JlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM5IiBuYW1lPSJoaWRlX2FjdGlvbnNfbWVudSI+CisgICAgPHZhbHVlPkhpZGUgYWN0aW9ucyBtZW51PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDAiIG5hbWU9ImhpZGVfc2NyZWVuX3NoYXJpbmciPgorICAgIDx2YWx1ZT5IaWRlIHNjcmVlbiBzaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDEiIG5hbWU9ImhpZGVfd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkhpZGUgd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQyIiBuYW1lPSJzaG93IG1pY3JvcGhvbmUgc3RhdHVzIj4KKyAgICA8dmFsdWU+U2hvdyBtaWNybyBzdGF0dXMgaW4gdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MyIgbmFtZT0ibGF5b3V0X29wdGlvbnMiPgorICAgIDx2YWx1ZT5MYXlvdXQgb3B0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ0IiBuYW1lPSJjYWxlbmRhciBuZXcgYnV0dG9uIj4KKyAgICA8dmFsdWU+TmV3IEV2ZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDUiIG5hbWU9ImNhbGVuZGFyIHBhc3N3b3JkIGluZm8gdGV4dCI+CisgICAgPHZhbHVlPlBhc3N3b3JkIHByb3RlY3RlZCBhcmUgdGhlIGxpbmtzIHRvIHRoZSBjb25mZXJlbmNlIHRoYXQgYXJlIHNlbmQgdG8gdGhlIHBhcnRpY2lwZW50cyB3aGVuIHlvdSBzYXZlIHRoZSBjYWxlbmRhciBldmVudCwgbm90IHRoZSByb29tISBUaGF0IG1lYW5zIGlmIHlvdSBzYXZlIHRoZSBldmVudCBtdWx0aXBsZSB0aW1lcyBidXQgd2l0aCBkaWZmZXJlbnQgcGFzc3dvcmRzIGV2ZXJ5IHBhcnRpY2lwZW50IHJlY2VpdmVzIGEgbmV3IGxpbmsgdGhhdCBoYXMgYSBkaWZmZXJlbnQgcGFzc3dvcmQuIEJ1dCBvbGQgbGlua3Mgc3RpbGwgd29yayBvbmNlIHNlbmQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDYiIG5hbWU9ImNhbGVuZGFyIGVkaXQgYnV0dG9uIj4KKyAgICA8dmFsdWU+RWRpdCBkZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDciIG5hbWU9InNpcCBzaG93IGRpYWxlciI+CisgICAgPHZhbHVlPlNob3cgc2lwIGRpYWxlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ4IiBuYW1lPSJzaXAgY2FsbCI+CisgICAgPHZhbHVlPkNhbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0OSIgbmFtZT0iY2FsZW5kYXIgY29udGFjdCBsaXN0Ij4KKyAgICA8dmFsdWU+U2hvdyBjYWxlbmRhciBldmVudHMgb2YgY29udGFjdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUwIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5Zb3VyIGhvbWUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTEiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPlBsYW4geW91ciBtZWV0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUyIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5XYXRjaCByZWNvcmRpbmcgYW5kIGludGVydmlld3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MyIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+Q2hvb3NlIGFuZCBzdGFydCBhIHdlYi1jb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTQiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSB1c2VycyBhbmQgcmlnaHRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTUiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBjb25uZWN0aW9ucyBhbmQga2ljayB1c2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU2IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgdXNlcmdyb3VwczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU3IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgY29uZmVyZW5jZSByb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU4IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2Ugc3lzdGVtIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTkiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBsYWJlbHMgYW5kIHdvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIExEQVAgYW5kIEFEUyBjb25maWd1cmF0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYxIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5FeHBvcnQvSW1wb3J0IFN5c3RlbSBCYWNrdXBzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjIiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCBtb2RlcmF0aW9uIG9yIHRoZSByaWdodCB0byBkcmF3IG9uIHdoaXRlYm9hcmQgdG8gdXBsb2FkLCBhZGQsIGRlbGV0ZSBvciBsb2FkIGZpbGVzIGFuZCBmb2xkZXJzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYzIiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+RWRpdCB0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjQiIG5hbWU9InNhbHV0YXRpb24iPgorICAgIDx2YWx1ZT5Qcm9mPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjUiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UHVibGlzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY2IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlN0YXJ0IFB1Ymxpc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2NyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdG9wIFB1Ymxpc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2OCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5Ib3N0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjkiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UHVibGlzaCBBcHA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5QdWJsaXNoIElkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzEiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UmVkdWNlIHRoZSB3aWR0aCBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtb3ZlIGl0IGxlZnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5SZWR1Y2UgdGhlIGhlaWdodCBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtb3ZlIGl0IGJvdHRvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDczIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHVjZSB0aGUgeCBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtYWtlIGl0IHdpZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzQiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UmVkdWNlIHRoZSB5IG9mIHRoZSBTaGFyaW5nU2NyZWVuIGJlZm9yZSB5b3UgdHJ5IHRvIG1ha2UgaXQgaGlnaGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzUiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+RmlsbCB0aGVzZSBzZXR0aW5ncyBzdHJlYW0geW91ciBzY3JlZW4gZGF0YSB0byAzdGggcGFydHkgcHJvdmlkZXJzIGxpa2UganVzdGluLnR2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzYiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UGxlYXNlIHN0YXJ0IFNjcmVlbiBzaGFyaW5nIHRvIGJlIGFibGUgdG8gcHVibGlzaCBpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc3IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPk1vZGVyYXRvciBwZXJtaXNzaW9uIHJlcXVpcmVkIHRvIHN0YXJ0IHJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc4IiBuYW1lPSJubyByaWdodCBmb3IgZXhjbHVzaXZlIGF1ZGlvIj4KKyAgICA8dmFsdWU+WW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byBhcHBseSBleGNsdXNpdmUgYXVkaW8gdG8gYW55IHBhcnRpY2lwYW50LiBZb3UgbmVlZCBtb2RlcmF0aW9uIHJvbGUgb3IgdGhlIHJpZ2h0IGZvciBleGNsdXNpdmUgYXVkaW8gdG8gbWFrZSBhbnkgbWljcm9waG9uZSBleGNsdXNpdmUgdHVybmVkIG9uLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3OSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+VXBsb2FkIG5ldyBmaWxlIHRvIGZpbGUgZXhwbG9yZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+T3BlbiBuZXcgZGlhbG9nIHdpdGggc2hhcmluZyBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgxIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5BbiBleGlzdGluZyBtb2RlcmF0b3IgbXVzdCBhcHByb3ZlIGl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODIiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkFzayBtb2RlcmF0b3IgdG8gc2hhcmUgeW91ciB3ZWJjYW0vbWljcm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MyIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+R2F0aGVyIGZlZWRiYWNrIGJ5IGNyZWF0aW5nIGEgcG9sbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg0IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5QYXN0IGFuZCBjdXJyZW50IHBvbGwgcmVzdWx0cyBhcyBjaGFydHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Vm90ZSBpZiB0aGVyZSBpcyBhIHBvbGwgZm9yIHRoaXMgY29uZmVyZW5jZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODYiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkVkaXQgY2FtIGFuZCBtaWMgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NyIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Q29uZmlybSBhbmQgbGVhdmUgdGhlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4OCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Q2FsbCBleHRlcm5hbCBwZW9wbGUgdmlhIFZvSVAvU0lQPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODkiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlNlbmQgYW4gZW1haWwgd2l0aCBhIGRpcmVjdCBsaW5rIHRvIHRoaXMgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkwIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5DaGFuZ2UgeW91ciB3aGl0ZWJvYXJkIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTEiIG5hbWU9ImJhY2t1cCBhZG1pbiI+CisgICAgPHZhbHVlPk1heCB1cGxvYWQgc2l6ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkyIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5Bc2sgbW9kZXJhdG9yIHRvIHNoYXJlIHlvdXIgd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkzIiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5TdGFydCBQcml2YXRlIENoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NCIgbmFtZT0iYWxsX3ByaXZhdGVfY2hhdCI+CisgICAgPHZhbHVlPkFsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk1IiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IHN0YXJ0IGEgcHJpdmF0ZSBjaGF0IHdpdGggeW91cnNlbGYuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTYiIG5hbWU9InByaXZhdGUgY2hhdCI+CisgICAgPHZhbHVlPllvdSd2ZSBhbHJlYWR5IHN0YXJ0ZWQgYSBwcml2YXRlIGNoYXQgd2l0aCB0aGlzIHBhcnRpY2lwYW50LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk3IiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcHJpdmF0ZSBjaGF0PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk4IiBuYW1lPSJTZXJ2ZXJzIj4KKyAgICA8dmFsdWU+U2VydmVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk5IiBuYW1lPSJTZXJ2ZXJzIj4KKyAgICA8dmFsdWU+U2VydmVycyBwYXJ0aWNpcGF0aW5nIGluIGNsdXN0ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMCIgbmFtZT0iU2VydmVyIG5hbWUiPgorICAgIDx2YWx1ZT5TZXJ2ZXIgTmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAxIiBuYW1lPSJTZXJ2ZXIgQWRkcmVzcyI+CisgICAgPHZhbHVlPlNlcnZlciBBZGRyZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDIiIG5hbWU9IlNlcnZlciBkZXRhaWxzIj4KKyAgICA8dmFsdWU+U2VydmVyIGRldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMyIgbmFtZT0iU2VuZCBTTVMiPgorICAgIDx2YWx1ZT5TZW5kIFNNUzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA0IiBuYW1lPSJwdWJsaXNoaW5nX21lc3NhZ2UiPgorICAgIDx2YWx1ZT5QdWJsaXNoaW5nLiBVc2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA1IiBuYW1lPSJjbWRfbGluZV9hZG1pbiI+CisgICAgPHZhbHVlPlRvIHNhdmUgdGltZSBhbmQgaW50ZXJuZXQgdHJhZmZpYyB5b3UgY2FuIHVzZSBjb21tYW5kIGxpbmUgYWRtaW4gdG8gYmFja3VwL3Jlc3RvcmUvdXBncmFkZTpcbiAxKSBnbyB0byBPTSBpbnN0YWxsIGRpciAoZm9yIGV4LiAvb3B0L3JlZDUpIFxuIDIpIHN0b3AgT00gKGZvciBleC4gLi9yZWQ1LXNodXRkb3duLnNoKVxuIDMpIC4vYWRtaW4uc2ggLWIgLWZpbGUgfi90b2RheV9vbV9iYWNrdXAuemlwIChjcmVhdGUgYmFja3VwIG9mIGN1cnJlbnQgT00pXG4gNCkgZG93bmxvYWQgYXJjaGl2ZSB3aXRoIG5ldyBPTVxuIDUpIG12IC9vcHQvcmVkNSAvb3B0LnJlZDUuYmFrIChtb3ZlIHdvcmtpbmcgdmVyc2lvbiBvZiBPTSBqdXN0IGluIGNhc2UgOikpXG4gNikgZXh0cmFjdCBkb3dubG9hZGVkIE9NIHRvIHRoZSAvb3B0L3JlZDVcbiA3KSAuL2FkbWluLnNoIC1pIC1maWxlIH4vdG9kYXlfb21fYmFja3VwLnppcCAob3IgJy4vYWRtaW4uc2ggLWkgLWZpbGUgfi90b2RheV9vbV9iYWNrdXAuemlwIC0tZGItdHlwZSBteXNxbCAtLWRiLXVzZXIgb21fdXNlciAtLWRiLXBhc3Mgb21fdXNlcl9wYXNzJyBpbiBjYXNlIG9mIHlvdSBhcmUgdXNpbmcgbm9uLWRlZmF1bHQgREIgKVxuIDgpIHN0YXJ0IE9NXG48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNiIgbmFtZT0icHVibGljX3Jvb21fdG9vbHRpcCI+CisgICAgPHZhbHVlPlJvb21zIGNvbW1vbiB0byBhbGwgdXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA3IiBuYW1lPSJwcml2YXRlX3Jvb21fdG9vbHRpcCI+CisgICAgPHZhbHVlPlJvb21zIGNvbW1vbiB0byB0aGUgY3VycmVudCB1c2VyIGdyb3VwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDgiIG5hbWU9Im15X3Jvb21fdG9vbHRpcCI+CisgICAgPHZhbHVlPlJvb21zIG9mIHRoZSBjdXJyZW50IHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwOSIgbmFtZT0iY3JlYXRlX25ld19yb29tIj4KKyAgICA8dmFsdWU+Q3JlYXRlL01vZGlmeSBhcHBvaW50bWVudCBzcGVjaWFsIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxMCIgbmFtZT0ibXVsdGlwbGVfYWRkcmVzc2VzIj4KKyAgICA8dmFsdWU+WW91IGNhbiBlbnRlciBtdWx0aXBsZSBhZGRyZXNzZXMgaW4gdGhlIGZvcm1hdDogZmlyc3RuYW1lMSBsYXN0bmFtZTEgJmx0O2VtYWlsMSZndDssImZpcnN0bmFtZTIgbGFzdG5hbWUyIiAmbHQ7ZW1haWwyJmd0OywnZmlyc3RuYW1lMyBsYXN0bmFtZTMnICZsdDtlbWFpbDMmZ3Q7LCAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxMSIgbmFtZT0ic3RyZWFtX3ZvbHVtZSI+CisgICAgPHZhbHVlPkFkanVzdCBzdHJlYW0gdm9sdW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTIiIG5hbWU9Im1pY3JvcGhvbmVfdm9sdW1lIj4KKyAgICA8dmFsdWU+QWRqdXN0IG1pY3JvcGhvbmUgdm9sdW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTMiIG5hbWU9ImNoYXRfbW9kZXJhdGVkIj4KKyAgICA8dmFsdWU+SXMgY2hhdCBtb2RlcmF0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNCIgbmFtZT0iY2hhdF9tb2RlcmF0ZWQiPgorICAgIDx2YWx1ZT5BbGxvdyBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTUiIG5hbWU9ImNoYXRfb3BlbmVkIj4KKyAgICA8dmFsdWU+Q2hhdCBwYW5lbCBvcGVuZWQgYnkgZGVmYXVsdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE2IiBuYW1lPSJmaWxlc19vcGVuZWQiPgorICAgIDx2YWx1ZT5GaWxlcyBwYW5lbCBvcGVuZWQgYnkgZGVmYXVsdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE3IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gc2VjdGlvbiBsYXN0cGluZyI+CisgICAgPHZhbHVlPkxhc3QgcGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE4IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gc2VjdGlvbiBsYXN0cGluZyBpbmZvIj4KKyAgICA8dmFsdWU+RXZlcnkgc2xhdmUgc2VuZHMgYSBwaW5nIHRvIHRoZSBtYXN0ZXIgZXZlcnkgMyBzZWNvbmRzIChjb25maWd1cmFibGUpLiBTbGF2ZSBsYXN0UGluZyBtdXN0IGJlIHNtYWxsZXIgdGhlbiAxIG1pbnV0ZSBzbyB0aGF0IHRoZSBtYXN0ZXIgdXNlcyB0aGUgc2xhdmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTkiIG5hbWU9InNlcnZlciBhZG1pbiBwb3J0Ij4KKyAgICA8dmFsdWU+SFRUUCBQb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjAiIG5hbWU9InNlcnZlciBhZG1pbiB1c2VyIj4KKyAgICA8dmFsdWU+VXNlciAoU09BUC1BY2Nlc3MpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjEiIG5hbWU9InNlcnZlciBhZG1pbiBwYXNzd29yZCI+CisgICAgPHZhbHVlPlBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjIiIG5hbWU9InNlcnZlciBhZG1pbiB3ZWJhcHAgcGF0aCI+CisgICAgPHZhbHVlPldlYmFwcCBwYXRoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjMiIG5hbWU9InNlcnZlciBhZG1pbiBwcm90b2NvbCI+CisgICAgPHZhbHVlPlByb3RvY29sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjQiIG5hbWU9InNlcnZlciBhZG1pbiBwaW5nIHJ1bm5pbmciPgorICAgIDx2YWx1ZT5QaW5nIHJ1bm5pbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyNSIgbmFtZT0ic2VydmVyIGFkbWluIGFjdGl2ZSI+CisgICAgPHZhbHVlPkFjdGl2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI2IiBuYW1lPSJnZW5lcmF0ZV9oYXNoIj4KKyAgICA8dmFsdWU+R2VuZXJhdGUgVVJMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjciIG5hbWU9Im5ldHdvcmsgdGVzdGluZyBsaW5rIj4KKyAgICA8dmFsdWU+TmV0d29yayB0ZXN0aW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjgiIG5hbWU9InJvb21fb3B0aW9ucyI+CisgICAgPHZhbHVlPkF1dG8gc2VsZWN0IGludGVydmlldyB2aWRlbyBwb2Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyOSIgbmFtZT0iZm9udF91bmRlcmxpbmUiPgorICAgIDx2YWx1ZT5VbmRlcmxpbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMCIgbmFtZT0iZm9udF9zdHlsZSI+CisgICAgPHZhbHVlPkZvbnQgc3R5bGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMSIgbmFtZT0iYWxsb3dfZm9udF9zdHlsZXMiPgorICAgIDx2YWx1ZT5BbGxvdyBmb250IHN0eWxlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMyIiBuYW1lPSJmb250X2NvbG9yIj4KKyAgICA8dmFsdWU+Rm9udCBjb2xvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMzIiBuYW1lPSJoeXBlcmxpbmsiPgorICAgIDx2YWx1ZT5IeXBlcmxpbms8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNCIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbiI+CisgICAgPHZhbHVlPlNob3cgc2Vzc2lvbiBzdGF0aXN0aWNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzUiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW4iPgorICAgIDx2YWx1ZT5TZXNzaW9uIGRldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNiIgbmFtZT0ic3lzdGVtX2ltcG9ydCI+CisgICAgPHZhbHVlPlN5c3RlbSBpbXBvcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNyIgbmFtZT0iaW5jbHVkZV9pbnRvX2JhY2t1cCI+CisgICAgPHZhbHVlPkluY2x1ZGUgdXBsb2FkZWQgZmlsZXMgYW5kIHJlY29yZGluZ3MgaW4gYmFja3VwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzgiIG5hbWU9InJvb21fYWRtaW5fc2lwIj4KKyAgICA8dmFsdWU+RW5hYmxlIFNJUCB0cmFuc3BvcnQgaW4gdGhlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzOSIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2NvbmZpcm0iPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gcHJvdmlkZSB0aGlzIHVzZXIgYW4gZXhjbHVzaXZlIGF1ZGlvPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTQwIiBuYW1lPSJub190aW1lem9uZSI+CisgICAgPHZhbHVlPlBsZWFzZSBzcGVjaWZ5IHlvdXIgdGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU0NSIgbmFtZT0iY29udGVudF9pc19zYXZpbmciPgorICAgIDx2YWx1ZT5Db250ZW50IGlzIFNhdmluZywgUGxlYXNlIHdhaXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+Cis8L2xhbmd1YWdlPgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9sYW5ndWFnZXMvZnJlbmNoLnhtbCBiL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL2ZyZW5jaC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjAwNTRhNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL2ZyZW5jaC54bWwKQEAgLTAsMCArMSw0NjUyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorCis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitUaGlzIEZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgYnkgdGhlIExhbmd1YWdlRWRpdG9yIAordG8gYWRkIG5ldyBMYW5ndWFnZXMgb3IgbW9kaWZ5L2N1c3RvbWl6ZSBpdCB1c2UgdGhlIExhbmd1YWdlRWRpdG9yIAorc2VlIGh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9MYW5ndWFnZUVkaXRvci5odG1sIGZvciBEZXRhaWxzIAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMtLT4KKzxsYW5ndWFnZSB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczpub05hbWVzcGFjZVNjaGVtYUxvY2F0aW9uPSJsYW5ndWFnZS54c2QiPgorICA8c3RyaW5nIGlkPSIxIiBuYW1lPSJjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+Q29uZsOpcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMiIgbmFtZT0ibWVldGluZyI+CisgICAgPHZhbHVlPlLDqXVuaW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMiIG5hbWU9ImNsYXNzcm9vbSI+CisgICAgPHZhbHVlPkNvbmbDqXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQiIG5hbWU9InNldHRpbmdzIj4KKyAgICA8dmFsdWU+UGFyYW3DqHRyZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNSIgbmFtZT0iYmVudXR6ZXIiPgorICAgIDx2YWx1ZT5Qcm9maWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNiIgbmFtZT0iYWRtaW4iPgorICAgIDx2YWx1ZT5BZG1pbmlzdHJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3IiBuYW1lPSJzdG9wIj4KKyAgICA8dmFsdWU+U3RvcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5FbnJlZ2lzdHJlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5IiBuYW1lPSJub2ZpbGUiPgorICAgIDx2YWx1ZT5BdWN1biBmaWNoaWVyIGRpc3BvbmlibGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAiIG5hbWU9InJlY29yZGJ5dGVhY2hlciI+CisgICAgPHZhbHVlPkVucmVnaXN0cmVtZW50IHBhciBsZSBwcm9mZXNzZXVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExIiBuYW1lPSJjb25uZWN0ZWR1c2VycyI+CisgICAgPHZhbHVlPlV0aWxpc2F0ZXVycyBjb25uZWN0w6lzIDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIiIG5hbWU9InN0YXJ0Y29uZiI+CisgICAgPHZhbHVlPkNvbW1lbmNlciB1bmUgY29uZsOpcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMiIG5hbWU9Im15bmFtZSI+CisgICAgPHZhbHVlPk1vbiBub208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQiIG5hbWU9InZpZGVvY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPlZpZMOpb2NvbmbDqXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1IiBuYW1lPSJpbXBvcnQiPgorICAgIDx2YWx1ZT5Ob3V2ZWxsZSBwcsOpc2VudGF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2IiBuYW1lPSJyZWZyZXNoZmlsZXMiPgorICAgIDx2YWx1ZT5DaGFyZ2VyIMOgIG5vdXZlYXUgbGEgbGlzdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTciIG5hbWU9InRvbWFpbmZpbGUiPgorICAgIDx2YWx1ZT5SZXRvdXIgw6AgbGEgbGlzdGUgZGVzIGZpY2hpZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4IiBuYW1lPSJuZXdwb2xsIj4KKyAgICA8dmFsdWU+Tm91dmVhdSBzb25kYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5IiBuYW1lPSJuZXdwb2xsaGVhZGVyIj4KKyAgICA8dmFsdWU+VW4gbm91dmVhdSBzb25kYWdlIHBvdXIgbGEgY29uZsOpcmVuY2UuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwIiBuYW1lPSJxdWVzdGlvbiI+CisgICAgPHZhbHVlPlF1ZXN0aW9uIDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEiIG5hbWU9InBvbGx0eXBlIj4KKyAgICA8dmFsdWU+VHlwZSBkZSBzb25kYWdlIDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIiIG5hbWU9ImNyZWF0ZSI+CisgICAgPHZhbHVlPkNyw6llcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMyIgbmFtZT0iaW5mb21lc3NhZ2UiPgorICAgIDx2YWx1ZT5JbmZvIDogQ2hhcXVlIHV0aWxpc2F0ZXVyIHJlw6dvaXQgbGUgbm91dmVhdSBzb25kYWdlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNCIgbmFtZT0iY3JlYXRwb2xsIj4KKyAgICA8dmFsdWU+Q3LDqWVyIHVuIHNvbmRhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUiIG5hbWU9ImNhbmNlbCI+CisgICAgPHZhbHVlPkFubnVsZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYiIG5hbWU9Inllc25vIj4KKyAgICA8dmFsdWU+T3VpL05vbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNyIgbmFtZT0ibnVtZXJpYyI+CisgICAgPHZhbHVlPk51bcOpcmlxdWUgMS0xMDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOCIgbmFtZT0icG9sbCI+CisgICAgPHZhbHVlPlNvbmRhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkiIG5hbWU9Im1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Wb3VzIGRldmV6IMOqdHJlIG1vZMOpcmF0ZXVyIHBvdXIgY3LDqWVyIHVuIHNvbmRhZ2UuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwIiBuYW1lPSJ2b3RlIj4KKyAgICA8dmFsdWU+Vm90cmUgdm90ZSBlc3QgZW5yZWdpc3Ryw6kuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxIiBuYW1lPSJhbHJlYWR5dm90ZWQiPgorICAgIDx2YWx1ZT5Wb3VzIGF2ZXogZMOpasOgIHZvdMOpIHBvdXIgY2Ugc29uZGFnZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIiIG5hbWU9InZvdGluZyI+CisgICAgPHZhbHVlPlZvdGVyICE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMiIG5hbWU9ImFuc3dlciI+CisgICAgPHZhbHVlPlZvdHJlIHLDqXBvbnNlIDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQiIG5hbWU9InllcyI+CisgICAgPHZhbHVlPk91aTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNSIgbmFtZT0ibm8iPgorICAgIDx2YWx1ZT5Ob248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYiIG5hbWU9InF1ZXN0aW9ud2FudCI+CisgICAgPHZhbHVlPlF1ZXN0aW9uIHBvc8OpZSA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3IiBuYW1lPSJwb2xscmVzdWx0cyI+CisgICAgPHZhbHVlPlLDqXN1bHRhdHMgZGVzIHZvdGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4IiBuYW1lPSJxdWVzdGlvbiI+CisgICAgPHZhbHVlPlF1ZXN0aW9uIDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkiIG5hbWU9InJlc3VsdHMiPgorICAgIDx2YWx1ZT5Sw6lzdWx0YXRzIDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAiIG5hbWU9ImFuc3dlcnMiPgorICAgIDx2YWx1ZT5Sw6lwb25zZXMgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MSIgbmFtZT0ibm9wb2xsIj4KKyAgICA8dmFsdWU+QXVjdW4gc29uZGFnZSBuJ2VzdCBlbiBjb3Vycy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIiIG5hbWU9InZvdGluZ3MiPgorICAgIDx2YWx1ZT5Wb3RlciAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzIiBuYW1lPSJtZWV0aW5nIj4KKyAgICA8dmFsdWU+UsOpdW5pb24gKG1heC4gNCBwbGFjZXMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0IiBuYW1lPSJjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+Q29uZsOpcmVuY2UgKG1heC4gNTAgcGxhY2VzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NSIgbmFtZT0idHlwZSI+CisgICAgPHZhbHVlPk1vZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYiIG5hbWU9InJlbWFpbmluZ3NlYXRzIj4KKyAgICA8dmFsdWU+QXV0cmVzIHBsYWNlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NyIgbmFtZT0iYWxyZWFkeWNob3NlbiI+CisgICAgPHZhbHVlPkTDqWrDoCBjaG9pc2k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgiIG5hbWU9ImVudGVyIj4KKyAgICA8dmFsdWU+RW50cmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5IiBuYW1lPSJtb2RsZWF2ZSI+CisgICAgPHZhbHVlPkwnYW5pbWF0ZXVyIGEgcXVpdHTDqSBsYSByw6l1bmlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAiIG5hbWU9InN5c3RlbW1lc3NhZ2UiPgorICAgIDx2YWx1ZT5JbmZvcm1hdGlvbiBkdSBzeXN0w6htZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MSIgbmFtZT0iY2hvc3NlZGV2aWNlIj4KKyAgICA8dmFsdWU+Q2hvaXggZHUgcMOpcmlwaMOpcmlxdWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIiIG5hbWU9ImNob29zZWNhbSI+CisgICAgPHZhbHVlPkNob2l4IGRlIGxhIGNhbcOpcmEgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MyIgbmFtZT0iY2hvb3NlbWljIj4KKyAgICA8dmFsdWU+Q2hvaXggZHUgbWljcm8gOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NCIgbmFtZT0ib2siPgorICAgIDx2YWx1ZT5PazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NSIgbmFtZT0iY2FuY2VsMiI+CisgICAgPHZhbHVlPkFubnVsZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYiIG5hbWU9InJlY29uZWVjdG5lZWRlZCI+CisgICAgPHZhbHVlPlZvdXMgZGV2ZXogdm91cyByZWNvbm5lY3RlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NyIgbmFtZT0iZWRpdHNldHVwIj4KKyAgICA8dmFsdWU+RWRpdGlvbiBkZXMgcsOpZ2xhZ2VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4IiBuYW1lPSJjb3Vyc2UiPgorICAgIDx2YWx1ZT5Db3VycyA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5IiBuYW1lPSJsYW5ndWFnZSI+CisgICAgPHZhbHVlPkxhbmd1ZSA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwIiBuYW1lPSJvazIiPgorICAgIDx2YWx1ZT5PazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MSIgbmFtZT0iY2FuY2VsMyI+CisgICAgPHZhbHVlPkFubnVsZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIiIG5hbWU9ImNsZWFyd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPk5ldHRveWVyIGxlIHRhYmxlYXUgYmxhbmM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMiIG5hbWU9ImNsZWFyd2hpdGVib2FyZHF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+Vm91bGV6LXZvdXMgbmV0dG95ZXIgbGUgdGFibGVhdSBibGFuYyBhdmFudCBkJ2Fqb3V0ZXIgdW5lIG5vdXZlbGxlIGltYWdlID88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQiIG5hbWU9ImRvbnRhc2thZ2FpbiI+CisgICAgPHZhbHVlPk5lIHBhcyByZWRlbWFuZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1IiBuYW1lPSJubyI+CisgICAgPHZhbHVlPk5vbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NiIgbmFtZT0iZWRpdHNldHVwMiI+CisgICAgPHZhbHVlPk1vZGlmaWVyIGxlcyByw6lnbGFnZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjciIG5hbWU9Im5lZWRjb25maXJtYXRpb253aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+RGVtYW5kZXIgY29uZmlybWF0aW9uIGF2YW50IGRlIG5ldHRveWVyIGxlIHRhYmxlYXUgYmxhbmM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgiIG5hbWU9InVzZXJpbmZvIj4KKyAgICA8dmFsdWU+SW5mb3JtYXRpb24gc3VyIGwndXRpbGlzYXRldXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkiIG5hbWU9ImNsZWFyZHJhd2FyZWEiPgorICAgIDx2YWx1ZT5FZmZhY2VyIHRhYmxlYXUgYmxhbmM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAiIG5hbWU9InVuZG8iPgorICAgIDx2YWx1ZT5Bbm51bGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxIiBuYW1lPSJyZWRvIj4KKyAgICA8dmFsdWU+UmVmYWlyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MiIgbmFtZT0ic2VsZWN0b2JqZWN0Ij4KKyAgICA8dmFsdWU+U8OpbGVjdGlvbm5lciB1biBvYmpldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MyIgbmFtZT0idGV4dCI+CisgICAgPHZhbHVlPlRleHRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0IiBuYW1lPSJwYWludCI+CisgICAgPHZhbHVlPkRlc3NpbmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1IiBuYW1lPSJkcmF3bGluZSI+CisgICAgPHZhbHVlPlRyYWNlciB1bmUgbGlnbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYiIG5hbWU9ImRyYXd1Ij4KKyAgICA8dmFsdWU+U3VybGlnbmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3IiBuYW1lPSJyZWN0Ij4KKyAgICA8dmFsdWU+UmVjdGFuZ2xlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4IiBuYW1lPSJlbGxpcHNlIj4KKyAgICA8dmFsdWU+RWxsaXBzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OSIgbmFtZT0iYXJyb3ciPgorICAgIDx2YWx1ZT5GbMOoY2hlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwIiBuYW1lPSJkZWxldGVjaG9zZW4iPgorICAgIDx2YWx1ZT5TdXBwcmltZXIgbCfDqWzDqW1lbnQgc8OpbGVjdGlvbm7DqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MSIgbmFtZT0iYXBwbGl5bW9kIj4KKyAgICA8dmFsdWU+RGVtYW5kZXIgbGEgbW9kw6lyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIiIG5hbWU9ImFwcGx5Ij4KKyAgICA8dmFsdWU+QXBwbGlxdWVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzIiBuYW1lPSJjYW5jZWwiPgorICAgIDx2YWx1ZT5Bbm51bGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0IiBuYW1lPSJtb2QiPgorICAgIDx2YWx1ZT5EZXZlbmlyIG1vZMOpcmF0ZXVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1IiBuYW1lPSJjbG9zZSI+CisgICAgPHZhbHVlPkZlcm1lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NiIgbmFtZT0iaXRhbGljIj4KKyAgICA8dmFsdWU+SXRhbGlxdWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODciIG5hbWU9ImJvbGQiPgorICAgIDx2YWx1ZT5HcmFzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4IiBuYW1lPSJ3YWl0aW5nIj4KKyAgICA8dmFsdWU+RW4gYXR0ZW50ZS4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OSIgbmFtZT0iYXBwbHlNZXNzYWdlIj4KKyAgICA8dmFsdWU+VW4gdXRpbGlzYXRldXIgc291aGFpdGUgZGV2ZW5pciBtb2TDqXJhdGV1ciA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwIiBuYW1lPSJhY2NlcHQiPgorICAgIDx2YWx1ZT5BY2NlcHRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MSIgbmFtZT0icmVqZWN0Ij4KKyAgICA8dmFsdWU+UmVqZXRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MiIgbmFtZT0iY2FuY2VsIj4KKyAgICA8dmFsdWU+QW5udWxlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MyIgbmFtZT0ic2VuZG1vZHJlcXVlc3RtZXNzYWdlIj4KKyAgICA8dmFsdWU+RW52b2kgYXV4IGF1dHJlcyB1dGlsaXNhdGV1cnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQiIG5hbWU9ImFjY2VwdCI+CisgICAgPHZhbHVlPkFjY2VwdMOpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1IiBuYW1lPSJyZWplY3QiPgorICAgIDx2YWx1ZT5SZWpldMOpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2IiBuYW1lPSJjaGFuZ2Vtb2QiPgorICAgIDx2YWx1ZT5DaGFuZ2VyIGRlIG1vZMOpcmF0ZXVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3IiBuYW1lPSJub25tb2RlcnJvcm1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Wb3VzIG4nw6p0ZXMgcGFzIGxlIG1vZMOpcmF0ZXVyIGRlIGNlIGNvdXJzICE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgiIG5hbWU9Im1vZGVyYXRvciI+CisgICAgPHZhbHVlPk1vZMOpcmF0ZXVyIDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkiIG5hbWU9InJvb21mdWxsbWVzc2FnZSI+CisgICAgPHZhbHVlPkNldHRlIHNhbGxlIGVzdCBwbGVpbmUuIE1lcmNpIGRlIHJldmVuaXIgcGx1cyB0YXJkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAiIG5hbWU9ImVsbGxpcHNlIj4KKyAgICA8dmFsdWU+RWxsaXBzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEiIG5hbWU9ImNsb3NlIj4KKyAgICA8dmFsdWU+RmVybWVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMiIgbmFtZT0iQXV0aEVycm9yIj4KKyAgICA8dmFsdWU+RXJyZXVyIGRlIGZvcm11bGFpcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzIiBuYW1lPSJtaW40dXNlcm5hbWUiPgorICAgIDx2YWx1ZT5MZSBub20gZCd1dGlsaXNhdGV1ciBkb2l0IGNvbnRlbmlyIGF1IG1vaW5zIDQgY2FyYWN0w6hyZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0IiBuYW1lPSJtaW40cGFzcyI+CisgICAgPHZhbHVlPkxlIG1vdCBkZSBwYXNzZSBkb2l0IGNvbnRlbmlyIGF1IG1vaW5zIDQgY2FyYWN0w6hyZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1IiBuYW1lPSJ1c2VybmFtZXRha2VuIj4KKyAgICA8dmFsdWU+TGUgbm9tIGQndXRpbGlzYXRldXIgZXhpc3RlIGTDqWrDoDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYiIG5hbWU9ImVtYWlsdGFrZW4iPgorICAgIDx2YWx1ZT5DZXR0ZSBhZHJlc3NlIGUtbWFpbCBlc3QgZMOpasOgIHV0aWxpc8OpZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDciIG5hbWU9ImVtYWlsdGFrZW4iPgorICAgIDx2YWx1ZT5FcnJldXIgc3lzdMOobWUsIG1lcmNpIGRlIGNvbnRhY3RlciBsJ2FkbWluaXN0cmF0ZXVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOCIgbmFtZT0iQXV0aGxvZ2luIj4KKyAgICA8dmFsdWU+Q29ubmV4aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOSIgbmFtZT0iQXV0aHVzZXIiPgorICAgIDx2YWx1ZT5VdGlsaXNhdGV1ciA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMCIgbmFtZT0iQXV0aHBhc3MiPgorICAgIDx2YWx1ZT5Nb3QgZGUgcGFzc2UgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEiIG5hbWU9IkF1dGhsYW5nIj4KKyAgICA8dmFsdWU+TGFuZ3VlIDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyIiBuYW1lPSJBdXRocmVnIj4KKyAgICA8dmFsdWU+U2UgY29ubmVjdGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMyIgbmFtZT0icmVnZm9ybWhlYWQiPgorICAgIDx2YWx1ZT5TJ2VucmVnaXN0cmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNCIgbmFtZT0icmVnZm9ybXVzZXIiPgorICAgIDx2YWx1ZT5VdGlsaXNhdGV1ciA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNSIgbmFtZT0icmVnZm9ybXBhc3MiPgorICAgIDx2YWx1ZT5Nb3QgZGUgcGFzc2UgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYiIG5hbWU9InJlZ2Zvcm1yZXR5cGUiPgorICAgIDx2YWx1ZT5SZXRhcGV6IDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3IiBuYW1lPSJyZWdmb3JtZmlyc3RuYW1lIj4KKyAgICA8dmFsdWU+UHLDqW5vbSA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOCIgbmFtZT0icmVnZm9ybWxhc3RuYW1lIj4KKyAgICA8dmFsdWU+Tm9tIDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5IiBuYW1lPSJyZWdmb3JtbWFpbCI+CisgICAgPHZhbHVlPkUtbWFpbCA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMCIgbmFtZT0icmVnZm9ybXN0YXRlIj4KKyAgICA8dmFsdWU+UGF5cyA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMSIgbmFtZT0icmVnZm9ybWJ0bjEiPgorICAgIDx2YWx1ZT5FbnJlZ2lzdHJlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIiIG5hbWU9InJlZ2Zvcm1idG4yIj4KKyAgICA8dmFsdWU+QW5udWxlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMiIG5hbWU9IkF1dGhidG4yIj4KKyAgICA8dmFsdWU+SW5zY3JpcHRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5BY2N1ZWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNSIgbmFtZT0idXNlcmFkbWluIj4KKyAgICA8dmFsdWU+VXRpbGlzYXRldXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNiIgbmFtZT0iZ3JvdXBhZG1pbiI+CisgICAgPHZhbHVlPkdyb3VwZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3IiBuYW1lPSJvcmdhZG1pbiI+CisgICAgPHZhbHVlPk9yZ2FuaXNhdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4IiBuYW1lPSJoZWFkY29uZiI+CisgICAgPHZhbHVlPlNhbGxlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkiIG5hbWU9ImNvbmZfcHViIj4KKyAgICA8dmFsdWU+UHVibGlxdWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwIiBuYW1lPSJoZWFkX29yZyI+CisgICAgPHZhbHVlPk9yZ2FuaXNhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzEiIG5hbWU9ImJ0bl9lbnRlcnJvb20iPgorICAgIDx2YWx1ZT5FbnRyZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2xvZ2luIj4KKyAgICA8dmFsdWU+SWRlbnRpZmlhbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Bhc3MiPgorICAgIDx2YWx1ZT5Nb3QgZGUgcGFzc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Bhc3NyZXR5cGUiPgorICAgIDx2YWx1ZT5Db25maXJtZXo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2ZpcnN0bmFtZSI+CisgICAgPHZhbHVlPlByw6lub208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2xhc3RuYW1lIj4KKyAgICA8dmFsdWU+Tm9tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNyIgbmFtZT0idXNlcmFsdGVyc2VsZl9lbWFpbCI+CisgICAgPHZhbHVlPkUtbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgiIG5hbWU9InVzZXJhbHRlcnNlbGZfYmlydGgiPgorICAgIDx2YWx1ZT5EYXRlIGRlIG5haXNzYW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkiIG5hbWU9InVzZXJhbHRlcnNlbGZfc3RyZWV0bm8iPgorICAgIDx2YWx1ZT5SdWUgZXQgTsKwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MCIgbmFtZT0idXNlcmFsdGVyc2VsZl90b3duIj4KKyAgICA8dmFsdWU+Q29kZSBwb3N0YWwvVmlsbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3N0YXRlIj4KKyAgICA8dmFsdWU+UGF5czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIiIG5hbWU9InVzZXJhbHRlcnNlbGZfYWRyZXNzY29tbWVudCI+CisgICAgPHZhbHVlPkNvbW1lbnRhaXJlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMiIG5hbWU9InVzZXJhbHRlcnNlbGZfaGVhZGVyIj4KKyAgICA8dmFsdWU+RMOpdGFpbHMgc3VyIGwndXRpbGlzYXRldXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0IiBuYW1lPSJzYXZlbWVudWJhcl9zYXZlbGFiZWwiPgorICAgIDx2YWx1ZT5TYXV2ZWdhcmRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUiIG5hbWU9InNhdmVtZW51YmFyX3NhdmVsYWJlbCI+CisgICAgPHZhbHVlPlNhdXZlZ2FyZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NiIgbmFtZT0iYWRtaW5fdXNlcmxpc3RfdXNlcl9pZCI+CisgICAgPHZhbHVlPklEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NyIgbmFtZT0iYWRtaW5fdXNlcmxpc3RfbG9naW4iPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgiIG5hbWU9ImFkbWluX3VzZXJsaXN0X2ZpcnN0bmFtIj4KKyAgICA8dmFsdWU+UHLDqW5vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkiIG5hbWU9ImFkbWluX3VzZXJsaXN0X2xhc3RuYW1lIj4KKyAgICA8dmFsdWU+Tm9tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MCIgbmFtZT0idHVybm92ZXJsaXN0X25leHQiPgorICAgIDx2YWx1ZT5TdWl2YW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MSIgbmFtZT0idHVybm92ZXJsaXN0X3ByZSI+CisgICAgPHZhbHVlPlByw6ljw6lkZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MiIgbmFtZT0ic2F2ZWNvbnRlbnRfY29uZmlybSI+CisgICAgPHZhbHVlPkVmZmFjZXIgbCdlbnJlZ2lzdHJlbWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMiIG5hbWU9InNhdmVjb250ZW50X2NvbmZpcm1fY2FuY2VsX2J0biI+CisgICAgPHZhbHVlPkFubnVsZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU0IiBuYW1lPSJzYXZlY29udGVudF9jb25maXJtX2NvbmZpcm1fYnRuIj4KKyAgICA8dmFsdWU+RWZmYWNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTUiIG5hbWU9InNhdmVtZW51YmFyX2FkZGxhYmVsIj4KKyAgICA8dmFsdWU+Tm91dmVsIGVucmVnaXN0cmVtZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NiIgbmFtZT0ic2F2ZW1lbnViYXJfcmVsb2FkbGFiZWwiPgorICAgIDx2YWx1ZT5BY3R1YWxpc2VyIGwnZW5yZWdpc3RyZW1lbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU3IiBuYW1lPSJzYXZlbWVudWJhcl9kZWxldGVsYWJlbCI+CisgICAgPHZhbHVlPkVmZmFjZXIgbCdlbnJlZ2lzdHJlbWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTgiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9zdGF0dXMiPgorICAgIDx2YWx1ZT5TdGF0dXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU5IiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fc3RhdHVzSXRlbSI+CisgICAgPHZhbHVlPkTDqXNhY3RpdsOpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2MCIgbmFtZT0idXNlcmFsdGVyX2FkbWluX3N0YXR1c0l0ZW0iPgorICAgIDx2YWx1ZT5BY3RpdsOpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2MSIgbmFtZT0idXNlcmFsdGVyX2FkbWluX29yZ2FuaXNhdGlvbiI+CisgICAgPHZhbHVlPk9yZ2FuaXNhdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYyIiBuYW1lPSJjYWxlbmRhcl9pY29ubGFiZWwiPgorICAgIDx2YWx1ZT5DYWxlbmRyaWVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2MyIgbmFtZT0ic2F2ZXdpbmRvd19idG4iPgorICAgIDx2YWx1ZT5GZXJtZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY0IiBuYW1lPSJvcmdhbmlzYXRpb250YWJsZWxpc3RfaWRyb3ciPgorICAgIDx2YWx1ZT5JRCBPcmdhbmlzYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY1IiBuYW1lPSJvcmdhbmlzYXRpb250YWJsZWxpc3RfbmFtZXJvdyI+CisgICAgPHZhbHVlPk5vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjYiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGlkMSI+CisgICAgPHZhbHVlPlV0aWxpc2F0ZXVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2NyIgbmFtZT0idXNlcnZhbHVlX2xldmVsaWQyIj4KKyAgICA8dmFsdWU+TW9kZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjgiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGlkMyI+CisgICAgPHZhbHVlPkFkbWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2OSIgbmFtZT0idXNlcnZhbHVlX2xldmVsbGFiZWwiPgorICAgIDx2YWx1ZT5UeXBlIGQndXRpbGlzYXRldXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTcwIiBuYW1lPSJvcmd2YWx1ZV9oZWFkZXIiPgorICAgIDx2YWx1ZT5PcmdhbmlzYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTcxIiBuYW1lPSJvcmd2YWx1ZV9vcmduYW1lIj4KKyAgICA8dmFsdWU+Tm9tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MiIgbmFtZT0ib3JndmFsdWVfb3JnbmFtZSI+CisgICAgPHZhbHVlPkFqb3V0ZXIgdW5lIG9yZ2FuaXNhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzMiIG5hbWU9Im9yZ3ZhbHVlX29yZ25hbWUiPgorICAgIDx2YWx1ZT5Bam91dGVyIHVuZSBvcmdhbmlzYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc0IiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luIj4KKyAgICA8dmFsdWU+QW5udWxlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzUiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW4iPgorICAgIDx2YWx1ZT5Bam91dGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3NiIgbmFtZT0ib3JndmFsdWVfdXNlcndpbiI+CisgICAgPHZhbHVlPkVmZmFjZXIgb3JnYW5pc2F0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3NyIgbmFtZT0ib3JndmFsdWVfdXNlcmxpc3QiPgorICAgIDx2YWx1ZT5VdGlsaXNhdGV1cjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzgiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJsaXN0YWRkIj4KKyAgICA8dmFsdWU+QWpvdXRlciB1dGlsaXNhdGV1cjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzkiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJsaXN0ZGVsZXRlIj4KKyAgICA8dmFsdWU+RWZmYWNlciB1dGlsaXNhdGV1cjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODAiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5oZWFkZXIiPgorICAgIDx2YWx1ZT5Bam91dGVyIHV0aWxpc2F0ZXVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4MSIgbmFtZT0ib3JndmFsdWVfdXNlcndpbnNlYXJjaGZpZWxkIj4KKyAgICA8dmFsdWU+UmVjaGVyY2hlciB1biB1dGlsaXNhdGV1cjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODIiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5zZWFyY2hidG4iPgorICAgIDx2YWx1ZT5SZWNoZXJjaGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4MyIgbmFtZT0ib3JndmFsdWVfdXNlcndpbnNlYXJjaHJlc3VsdCI+CisgICAgPHZhbHVlPlV0aWxpc2F0ZXVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NCIgbmFtZT0ibG9naW53aW5fY2hvb3Nlb3JnYW5pc2F0aW9uIj4KKyAgICA8dmFsdWU+T3JnYW5pc2F0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NSIgbmFtZT0ibG9naW53aW5fY2hvb3Nlb3JnYW5pc2F0aW9uYnRuIj4KKyAgICA8dmFsdWU+RW50cmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NiIgbmFtZT0ibmF2aV9yb29tYWRtaW4iPgorICAgIDx2YWx1ZT5TYWxsZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg3IiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+U2FsbGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4OCIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPklEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4OSIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPk5vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTAiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5QdWJsaXF1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTEiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5PcmdhbmlzYXRpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5MiIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPlNhbGxlIGRlIGNvbmbDqXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5MyIgbmFtZT0icm9vbXZhbHVlX25hbWUiPgorICAgIDx2YWx1ZT5Ob208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk0IiBuYW1lPSJyb29tdmFsdWVfdHlwZSI+CisgICAgPHZhbHVlPlR5cGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk1IiBuYW1lPSJyb29tdmFsdWVfaXNwdWJsaWMiPgorICAgIDx2YWx1ZT5QdWJsaXF1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTYiIG5hbWU9InJvb212YWx1ZV9jb21tZW50Ij4KKyAgICA8dmFsdWU+Q29tbWVudGFpcmUgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTciIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWljb24iPgorICAgIDx2YWx1ZT5FbnJlZ2lzdHJlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTgiIG5hbWU9IndoaXRlYm9hcmRfb3Blbmljb24iPgorICAgIDx2YWx1ZT5DaGFyZ2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5OSIgbmFtZT0id2hpdGVib2FyZF9zYXZlYXN3aW5oZWFkZXIiPgorICAgIDx2YWx1ZT5FbnJlZ2lzdHJlciBzb3VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMCIgbmFtZT0id2hpdGVib2FyZF9zYXZlYXN3aW50ZXh0Ij4KKyAgICA8dmFsdWU+Tm9tIGR1IGZpY2hpZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAxIiBuYW1lPSJmaWxlcyI+CisgICAgPHZhbHVlPk5vbSBkdSBmaWNoaWVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMiIgbmFtZT0id2hpdGVib2FyZF9zYXZlYXN3aW5idG4xIj4KKyAgICA8dmFsdWU+QW5udWxlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDMiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2luYnRuMiI+CisgICAgPHZhbHVlPlNhdXZlZ2FyZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNCIgbmFtZT0icnBjZXJyb3J3aW5faGVhZGVyIj4KKyAgICA8dmFsdWU+RXJyZXVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNSIgbmFtZT0ibG9hZHdtbF9oZWFkZXIiPgorICAgIDx2YWx1ZT5DaGFyZ2VtZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNiIgbmFtZT0ibG9hZHdtbF9tZXNzc2xvYWQiPgorICAgIDx2YWx1ZT5PYmpldHMgY2hhcmfDqXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA3IiBuYW1lPSJsb2Fkd21sX21lc3NzeW5jIj4KKyAgICA8dmFsdWU+U3luY2hyb25pc2F0aW9uIGRlcyBjbGllbnRzLCBwYXRpZW50ZXouLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA4IiBuYW1lPSJsb2FkaW1hZ2VfbWVzc2xvYWQiPgorICAgIDx2YWx1ZT5DaGFyZ2VtZW50IGRlcyBkb25uw6llczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDkiIG5hbWU9ImxvYWRpbWFnZV9tZXNzc3luYyI+CisgICAgPHZhbHVlPlN5bmNocm9uaXNhdGlvbiBkZXMgY2xpZW50cywgcGF0aWVudGV6Li4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMCIgbmFtZT0ibG9hZHdtbF9jb25maXJtaGVhZGVyIj4KKyAgICA8dmFsdWU+RWZmYWNlciBsYSB6b25lIGRlIGRlc3NpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTEiIG5hbWU9ImxvYWR3bWxfY29uZmlybW1lc3MiPgorICAgIDx2YWx1ZT5FZmZhY2VyIGxhIHpvbmUgZGUgZGVzc2luLCB0b3V0ZXMgbGVzIGRvbm7DqWVzIHN1ciBsZSB0YWJsZWF1IGJsYW5jIHNlcm9udCBwZXJkdWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMiIgbmFtZT0ibG9hZHdtbF9jb25maXJtbWVzczIiPgorICAgIDx2YWx1ZT5Db25maXJtZXIgYXZhbnQgZGUgY2hhcmdlciB1biBmaWNoaWVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMyIgbmFtZT0ic2VuZF9pbnZpdGF0aW9uX2J0biI+CisgICAgPHZhbHVlPkVudm95ZXIgaW52aXRhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTQiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5FbnZveWVyIGludml0YXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE1IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fc3ViamVjdCI+CisgICAgPHZhbHVlPlN1amV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNiIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX3JlY2lwaWVudCI+CisgICAgPHZhbHVlPkRlc3RpbmF0YWlyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTciIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9tZXNzYWdlIj4KKyAgICA8dmFsdWU+TWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTgiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9idG5fY29uZmlybSI+CisgICAgPHZhbHVlPkVudm95ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE5IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fYnRuX2NhbmNlbCI+CisgICAgPHZhbHVlPkFubnVsZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIwIiBuYW1lPSJzZW5kX2NoYXRfdGV4dF9idG4iPgorICAgIDx2YWx1ZT5FbnZveWVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyMSIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2hlYWRlciI+CisgICAgPHZhbHVlPkTDqXRhaWxzIHN1ciBsJ3V0aWxpc2F0ZXVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyMiIgbmFtZT0iaW52aXRlZF91c2Vyd2luX3N1YmplY3QiPgorICAgIDx2YWx1ZT5Wb3RyZSBwc2V1ZG9ueW1lIHBvdXIgY2V0dGUgY29uZsOpcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIzIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fbG9naW4iPgorICAgIDx2YWx1ZT5Qc2V1ZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI0IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZmlyc3RuYW1lIj4KKyAgICA8dmFsdWU+UHLDqW5vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjUiIG5hbWU9Imludml0ZWRfdXNlcndpbl9sYXN0bmFtZSI+CisgICAgPHZhbHVlPk5vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjYiIG5hbWU9Imludml0ZWRfdXNlcndpbl9tYWlsIj4KKyAgICA8dmFsdWU+RS1tYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNyIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2xhbmciPgorICAgIDx2YWx1ZT5MYW5ndWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI4IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZW50ZXIiPgorICAgIDx2YWx1ZT5FbnRyZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI5IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZW50ZXIiPgorICAgIDx2YWx1ZT5DaGFyZ2VtZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMCIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2VudGVyIj4KKyAgICA8dmFsdWU+U8OpbGVjdGlvbm5leiB2b3RyZSBsYW5ndWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMxIiBuYW1lPSJ1c2VyX3JlZ2lzdGVyRmFsc2VQV0QiPgorICAgIDx2YWx1ZT5Nb3QgZGUgcGFzc2UgZXJyb27DqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzIiIG5hbWU9InVzZXJfcmVnaXN0ZXJGYWxzZVBXREhlYWRlciI+CisgICAgPHZhbHVlPk1lcmNpIGRlIG1ldHRyZSBkZXV4IG1vdHMgZGUgcGFzc2VzIGlkZW50aXF1ZXMgYXZlYyA2IGNhcmFjdMOocmVzIG1pbmltdW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMzIiBuYW1lPSJ1c2VyX3JlZ2lzdGVyTWFpbEVycm9yIj4KKyAgICA8dmFsdWU+QWRyZXNzZSBlLW1haWwgZXJyb27DqWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM0IiBuYW1lPSJ1c2VyX3JlZ2lzdGVyTWFpbEVycm9ySGVhZGVyIj4KKyAgICA8dmFsdWU+Vm91cyBhdmV6IHV0aWxpc8OpIHVuZSBhZHJlc3NlIEUtbWFpbCBub24gdmFsaWRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzNSIgbmFtZT0idXNlcl9yZWdpc3RlclN1Y2Nlc3MiPgorICAgIDx2YWx1ZT5FbnJlZ2lzdHJlbWVudCBlZmZlY3R1w6k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM2IiBuYW1lPSJ1c2VyX3JlZ2lzdGVyU3VjY2Vzc0hlYWRlciI+CisgICAgPHZhbHVlPlZvdHJlIGNvbXB0ZSBhIMOpdMOpIGNyw6nDqS4gVm91cyBwb3V2ZXogbWFpbnRlbmFudCB2b3VzIGNvbm5lY3RlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzciIG5hbWU9InVzZXJfc2hhcmluZ19tZXNzYWdlIj4KKyAgICA8dmFsdWU+Vm91cyBuZSBwb3V2ZXogcGFzIHBhcnRhZ2VyIHZvdHJlIMOpY3JhbiBjYXIgdW4gYXV0cmUgdXRpbGlzYXRldXIgdXRpbGlzZSBkw6lqw6AgY2V0dGUgZm9uY3Rpb25uYWxpdMOpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzOCIgbmFtZT0idXNlcl9zaGFyaW5nX21lc3NhZ2VIZWFkZXIiPgorICAgIDx2YWx1ZT5QYXJ0YWdlIGFubnVsw6k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM5IiBuYW1lPSJ1c2VyX2RvU3RhcnRTY3JlZW5WaWV3ZXIiPgorICAgIDx2YWx1ZT5QYXJ0YWdlciB2b3RyZSDDqWNyYW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQwIiBuYW1lPSJzY3JlZW5fd2FybkJhbmR3aWR0aCI+CisgICAgPHZhbHVlPk1hdXZhaXNlIGJhbmRlIHBhc3NhbnRlIDogVm91cyBuZSBwb3V2ZXogcGFzIHN5bmNocm9uaXNlciB2b3RyZSDDqWNyYW4uIERlcyBpbWFnZXMgc2Vyb250IHN1cHByaW3DqWVzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDEiIG5hbWU9InNjcmVlbl91c2VybGFiZWwiPgorICAgIDx2YWx1ZT5FY3JhbiBkZSA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0MiIgbmFtZT0id2hpdGVib2FyZF90YWJfcGFpbnQiPgorICAgIDx2YWx1ZT5EZXNzaW5lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDMiIG5hbWU9IndoaXRlYm9hcmRfdGFiX2RvY3VtZW50Ij4KKyAgICA8dmFsdWU+RG9jdW1lbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ0IiBuYW1lPSJ0YWJiYXJfY2hhdGljb24iPgorICAgIDx2YWx1ZT5UJ2NoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ1IiBuYW1lPSJ0YWJiYXJfZmlsZXNpY29uIj4KKyAgICA8dmFsdWU+RmljaGllcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ2IiBuYW1lPSJ0YWJiYXJfcGFydGljaXBhbnRzaWNvbiI+CisgICAgPHZhbHVlPk1lbWJyZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ3IiBuYW1lPSJzd2ZwcmVzZW50YXRpb25fbGlzdHNhdmVvcmlnIj4KKyAgICA8dmFsdWU+VMOpbMOpY2hhcmdlciBsZSBkb2N1bWVudCBvcmlnaW5hbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDgiIG5hbWU9InN3ZnByZXNlbnRhdGlvbl9saXN0c2F2ZXBkZiI+CisgICAgPHZhbHVlPlTDqWzDqWNoYXJnZXIgbGUgZG9jdW1lbnQgUERGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0OSIgbmFtZT0ic3dmcHJlc2VudGF0aW9uX2xpc3Rsb2Fkc3dmIj4KKyAgICA8dmFsdWU+Q2hhcmdlbWVudCBkZSBsYSBwcsOpc2VudGF0aW9uIHN1ciBsZSB0YWJsZWF1IGJsYW5jPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MCIgbmFtZT0ibmF2aW1haW5fY29uZmlnIj4KKyAgICA8dmFsdWU+Q29uZmlndXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTEiIG5hbWU9IndoaXRlYm9hcmRfYm91bmRpbmdib3hfZHJhZyI+CisgICAgPHZhbHVlPkTDqXBsYWNlciBjZXQgb2JqZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUyIiBuYW1lPSJ3aGl0ZWJvYXJkX2JvdW5kaW5nYm94X3Jlc2l6ZSI+CisgICAgPHZhbHVlPlJlZGltZW5zaW9ubmVyIGNldCBvYmpldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTMiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3pvb20iPgorICAgIDx2YWx1ZT4lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1NCIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfc2xpZGUiPgorICAgIDx2YWx1ZT5kZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTUiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX2ZpcnN0c2xpZGUiPgorICAgIDx2YWx1ZT5BbGxlciDDoCBsYSBwcmVtacOocmUgcGFnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTYiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3ByZXNsaWRlIj4KKyAgICA8dmFsdWU+QWxsZXIgw6AgbGEgcGFnZSBwcsOpY8OpZGVudGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU3IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9uZXh0c2xpZGUiPgorICAgIDx2YWx1ZT5BbGxlciDDoCBsYSBwYWdlIHN1aXZhbnRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1OCIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfbGFzdHNsaWRlIj4KKyAgICA8dmFsdWU+QWxsZXIgw6AgbGEgZGVybmnDqHJlIHBhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU5IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl96b29tbWludXMiPgorICAgIDx2YWx1ZT5ab29tIC0tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MCIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfem9vbXBsdXMiPgorICAgIDx2YWx1ZT5ab29tICsrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MSIgbmFtZT0ic2FsdXRhdGlvbl9tciI+CisgICAgPHZhbHVlPk0uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MiIgbmFtZT0ic2FsdXRhdGlvbl9taXNzIj4KKyAgICA8dmFsdWU+TW1lLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjMiIG5hbWU9Im5hdmltYWluX2NvbmZhZG1pbiI+CisgICAgPHZhbHVlPkNvbmZpZ3VyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY0IiBuYW1lPSJjb25mdGFibGVfaGVhZGVySWQiPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjUiIG5hbWU9ImNvbmZ0YWJsZV9oZWFkZXJrZXkiPgorICAgIDx2YWx1ZT5DbMOpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2NiIgbmFtZT0iY29uZmFkbWluZm9ybV9oZWFkZXIiPgorICAgIDx2YWx1ZT5Db25maWd1cmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2NyIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbGtleSI+CisgICAgPHZhbHVlPkNsw6k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY4IiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsdXBkYXRlZCI+CisgICAgPHZhbHVlPkRlcm5pw6hyZSBNQUo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY5IiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsdXBkYXRlZGJ5Ij4KKyAgICA8dmFsdWU+TWlzIMOgIGpvdXIgcGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MCIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbGNvbW1lbnQiPgorICAgIDx2YWx1ZT5Db21tZW50YWlyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzEiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWxrZXkiPgorICAgIDx2YWx1ZT5DbMOpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MiIgbmFtZT0idHVybm92ZXJsaXN0X21heHJlc3VsdHMiPgorICAgIDx2YWx1ZT5kZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzMiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2hlYWRlciI+CisgICAgPHZhbHVlPlV0aWxpc2F0ZXVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzQiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2ljb25kZWxldGUiPgorICAgIDx2YWx1ZT5FZmZhY2VyIGwnb3JnYW5pc2F0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NSIgbmFtZT0ib3JnYW5pc2F0aW9uX3VzZXJzZGVsZXRlZGhlYWQiPgorICAgIDx2YWx1ZT5FZmZhY2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NiIgbmFtZT0ib3JnYW5pc2F0aW9uX3VzZXJzYWxyZWFkYWRkZWQiPgorICAgIDx2YWx1ZT5DZXQgdXRpbGlzYXRldXIgZXN0IGTDqWrDoCBtZW1icmUgZGUgbCdvcmdhbmlzYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc3IiBuYW1lPSJkYXNoYm9hcmRfbmV3c2hlYWRlciI+CisgICAgPHZhbHVlPk5vdXZlbGxlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzgiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtzaGVhZGVyIj4KKyAgICA8dmFsdWU+UmFjY291cmNpczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzkiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtDb25mIj4KKyAgICA8dmFsdWU+QWxsZXIgw6AgbGEgcsOpdW5pb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgwIiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rQXVkaXQiPgorICAgIDx2YWx1ZT5BbGxlciDDoCBsYSBjb25mw6lyZW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODEiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtzdXBwb3J0Ij4KKyAgICA8dmFsdWU+QWlkZSBldCBzdXBwb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MiIgbmFtZT0iZGFzaGJvYXJkX3F1aWNraG9tZXBhZ2V1cmwiPgorICAgIDx2YWx1ZT5odHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MyIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbWFpbGluZ2xpc3R1cmwiPgorICAgIDx2YWx1ZT5odHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvbWFpbC1saXN0cy5odG1sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4NCIgbmFtZT0iZGFzaGJvYXJkX3JlcG9ydGJ1Z3MiPgorICAgIDx2YWx1ZT5VbiBidWcgITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODUiIG5hbWU9ImRhc2hib2FyZF9yc3NsaXN0aXRlbWxpbmt0ZXh0Ij4KKyAgICA8dmFsdWU+RMOpdGFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODYiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtob21lcGFnZWxhYmVsIj4KKyAgICA8dmFsdWU+U2l0ZSBkdSBwcm9qZXQgKGh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg3IiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rbWFpbGluZ2xpc3RsYWJlbCI+CisgICAgPHZhbHVlPkxpc3RlIGRlIGRpZmZ1c2lvbiBwb3VyIGxlcyB1dGlsaXNhdGV1cnMgKGh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9tYWlsLWxpc3RzLmh0bWwpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4OCIgbmFtZT0ibG9naW5fcmVtZW1iZXJ1c2VyIj4KKyAgICA8dmFsdWU+U2Ugc291dmVuaXIgZGUgbW9pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4OSIgbmFtZT0ibWFpbl9uYXZpIj4KKyAgICA8dmFsdWU+Q29udGVudTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTAiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5NYSBwYWdlIHBlcnNvbm5lbGxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MSIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPk1lcyByw6l1bmlvbnMgcHJvZ3JhbW3DqWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MiIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPk1lcyBjb25mw6lyZW5jZXMgcHJvZ3JhbW3DqWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MyIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPlLDqXVuaW9ucyBwdWJsaXF1ZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk0IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+UsOpdW5pb25zIHByaXbDqWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NSIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPkF1ZGl0b3JpdW0gcHVibGljPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NiIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPkF1ZGl0b3JpdW0gcHJpdsOpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NyIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPkNvbnRlbnUgcHVibGljPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5OCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPkNvbnRlbnUgcHJpdsOpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5OSIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPkNvbnRlbnUgcGVyc29ubmVsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDEiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5Nb2TDqXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDIiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5EZW1hbmRlciBsYSBtb2TDqXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDMiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5Tb25kYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNCIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPkNob2lzaXIgdW4gZmljaGllcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDUiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5Db25maWd1cmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNiIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPkNob2l4IG1pY3JvL2NhbcOpcmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA3IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+Q29uZmlnLiBkdSB0YWJsZWF1IGJsYW5jPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwOCIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPlNvcnRpcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDkiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5SZXRvdXIgYXV4IHNhbGxlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTAiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5RdWl0dGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5Nb3QgZGUgcGFzc2Ugb3VibGnDqSA/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMiIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5Sw6lpbml0aWFsaXNlciB2b3RyZSBtb3QgZGUgcGFzc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEzIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlBhciBlLW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE0IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlBhciBsb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTUiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+Vm90cmUgZS1tYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxNiIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5Wb3RyZSBsb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTciIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+RW52b3llciB1biBlLW1haWwgZGUgcsOpaW5pdGlhbGlzYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE4IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPkF1Y3VuZSBhZHJlc3NlIHRyb3V2w6llLiBTb3lleiBzw7tyIGQnYXZvaXIgZW50csOpIGxhIG3Dqm1lIGFkcmVzc2UgcXVlIGR1cmFudCBsJ2luc2NyaXB0aW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTkiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+RW50cmV6IHZvdHJlIGUtbWFpbCBvdSBub20gZCd1dGlsaXNhdGV1cjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjAiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+SWwgbid5IGEgcGFzIGQndXRpbGlzYXRldXIgYXZlYyBjZSBub208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIxIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlVuIGUtbWFpbCBjb250ZW5hbnQgdW4gbGllbiB2b3VzIGEgw6l0w6kgZW52b3nDqS4gU2kgdm91cyBuJ2F2ZXogcGFzIHJlw6d1IGQnZS1tYWlsLCB2w6lyaWZpZXogdm90cmUgYW50aXNwYW0gZXQgcmVkZW1hbmRleiB1bmUgY29uZmlybWF0aW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjIiIG5hbWU9ImVycm9ydHlwZSI+CisgICAgPHZhbHVlPlF1aXR0ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIzIiBuYW1lPSJlcnJvcnR5cGUiPgorICAgIDx2YWx1ZT5NZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNCIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+SGFjaGFnZSBub24gdmFsaWRlLiBQYXMgZCd1dGlsaXNhdGV1ciB0cm91dsOpLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjUiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPkNoYW5nZXogdm90cmUgbW90IGRlIHBhc3NlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNiIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+TG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI3IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5DaGFuZ2V6IHZvdHJlIG1vdCBkZSBwYXNzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjgiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPk5vdXZlYXUgbW90IGRlIHBhc3NlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyOSIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+UmV0YXBleiB2b3RyZSBtb3QgZGUgcGFzc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMwIiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5MZXMgbW90cyBkZSBwYXNzZSBxdWUgdm91cyBhdmV6IGVudHLDqXMgbmUgc29udCBwYXMgaWRlbnRpcXVlcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMxIiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT40IGNhcmFjdMOocmVzIG91IHBsdXMgOyBsYSBjYXNzZSBhIGRlIGwnaW1wb3J0YW5jZSAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzMiIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+TW90IGRlIHBhc3NlIGNoYW5nw6kuIFZvdXMgcG91dmV6IHZvdXMgY29ubmVjdGVyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzMiIG5hbWU9InJwY2NhbGxiYWNrIj4KKyAgICA8dmFsdWU+T0s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM0IiBuYW1lPSJycGNnZW5lcmFsZXJyb3IiPgorICAgIDx2YWx1ZT5FcnJldXIgaW5jb25udWUuIFZldWlsbGV6IGxlIHNpZ25hbGVyIMOgIHZvdHJlIMOpcXVpcGUgc3VwcG9ydC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM1IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPk5vbSBkJ3V0aWxpc2F0ZXVyIGluY29ubnU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM2IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPk1vdCBkZSBwYXNzZSBub24gdmFsaWRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNyIgbmFtZT0ibG9nb3V0Ij4KKyAgICA8dmFsdWU+RMOpY29ubmVjdMOpIGF2ZWMgc3VjY8OoczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzgiIG5hbWU9InJlZ2lzdHJhdGlvbiI+CisgICAgPHZhbHVlPkVucmVnaXN0cmVtZW50IGRlcHVpcyBsYSBwYWdlIGQnYWNjdWVpbCBkw6lzYWN0aXbDqS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM5IiBuYW1lPSJyZWdpc3RyYXRpb24iPgorICAgIDx2YWx1ZT5FLW1haWwgbm9uIHZhbGlkZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDAiIG5hbWU9InJlZ2lzdHJhdGlvbiI+CisgICAgPHZhbHVlPk5vbSBkZSBmaWNoaWVyIGlkZW50aXF1ZSwgdmV1aWxsZXogY2hvaXNpciB1biBhdXRyZSBub20gZGUgZmljaGllcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDEiIG5hbWU9ImZpbGVicm93c2VyIj4KKyAgICA8dmFsdWU+Tm9tIGRlIGZpY2hpZXIgdHJvcCBjb3VydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDIiIG5hbWU9ImZpbGVicm93c2VyIj4KKyAgICA8dmFsdWU+SW1wb3NzaWJsZSBkZSBzYXV2ZWdhcmRlciBsJ2FkcmVzc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQzIiBuYW1lPSJ1c2VyYWRtaW4iPgorICAgIDx2YWx1ZT5VdGlsaXNhdGV1ciBham91dMOpLiBTaSB2b3VzIG5lIGwnYXZleiBwYXMgYXNzaWduw6kgw6AgdW5lIG9yZ2FuaXNhdGlvbiwgdmV1aWxsZXogbGUgZmFpcmUgc2FucyBxdW9pIGlsIG5lIHBvdXJyYSBwYXMgc2UgY29ubmVjdGVyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDQiIG5hbWU9ImFkbWluZm9ybXMiPgorICAgIDx2YWx1ZT5Ob3V2ZWwgZW5yZWdpc3RyZW1lbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ1IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5QYXMgZGUgY2hhbXAgdHJvdXbDqSBhdmVjIGNldCBJRC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ2IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5QYXMgZCfDqXRpcXVldHRlIHRyb3V2w6llIHBvdXIgY2UgY2hhbXAuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NyIgbmFtZT0iZXJyb3JtZXNzYWdlIj4KKyAgICA8dmFsdWU+UmVxdWnDqHJlIGwnYXV0b3Jpc2F0aW9uIGRlIGwnYWRtaW5pc3RyYXRldXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ4IiBuYW1lPSJtYWlubmF2aSI+CisgICAgPHZhbHVlPkVkaXRldXIgZGUgbGFuZ3VlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0OSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TGFuZ3VlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1MCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TGFiZWwtSUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUxIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5MYWJlbC1Ob208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUyIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5MYWJlbC1WYWxldXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUzIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5DaGFtcHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU0IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5MYWJlbC1Ob208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU1IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5MYWJlbC1WYWxldXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU2IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5MYWJlbC1JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTciIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPlZvdXMgYXZleiBlZmZhY8OpIGxlIGxhYmVsLCBwYXMgbGUgY2hhbXAgISBWb3VzIG5lIHBvdXZleiBwYXMgZWZmYWNlciBsZSBjaGFtcCwgaWwgcGV1dCBjb250ZW5pciBkZXMgbGFiZWxzIHBvdXIgZCdhdXRyZXMgbGFuZ3Vlcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU4IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5JRCBkdSBsYWJlbCBub24gdmFsaWRlLiBMZSBGaWVsZExhbmd1YWdlc3ZhbHVlc19JZCBuJ2VzdCBwYXMgZGFucyBsYSBiYXNlIGRlIGRvbm7DqWVzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTkiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPlZvdXMgbmUgcG91dmV6IHBhcyBzdXBwcmltZXIgY2UgY2hhbXAsIHNldWxlbWVudCBsZXMgbGFiZWxzLiBJbCBuJ3kgYSBwYXMgZGUgbGFiZWxzIHBvdXIgbGUgbW9tZW50IG91IGlsIG4neSBhIHBhcyBkZSBsYWJlbHMgcG91ciBjZSBsYW5nYWdlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjAiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkV4cG9ydGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+Vm91cyBkZXZleiB2b3VzIGTDqWNvbm5lY3RlciBwb3VyIHZvaXIgbGVzIGNoYW5nZW1lbnRzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjIiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkFqb3V0ZXIgdW4gbGFuZ2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjMiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkVmZmFjZXIgdW4gbGFuZ2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjQiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkFqb3V0ZXIgdW4gbGFuZ2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjUiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPk5vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjYiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkFqb3V0ZXIgdW4gbGFuZ2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjciIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPlNhdXZlZ2FyZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY4IiBuYW1lPSJ0dXJub3Zlcmxpc3QiPgorICAgIDx2YWx1ZT5SZXRvdXIgYXUgZMOpYnV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2OSIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+UHLDqWPDqWRlbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzcwIiBuYW1lPSJ0dXJub3Zlcmxpc3QiPgorICAgIDx2YWx1ZT5TdWl2YW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MSIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+QWxsZXIgYXUgZGVybmllcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzIiIG5hbWU9InZpZGVvYm94Ij4KKyAgICA8dmFsdWU+TCd1dGlsaXNhdGV1ciBwYXJsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzMiIG5hbWU9InZpZGVvYm94Ij4KKyAgICA8dmFsdWU+U29uIG1hcmNoZS9hcnLDqnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc0IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5TeXN0w6htZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzUiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPlZvdHJlIGNvbmZpZ3VyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc2IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5Cb25qb3VyLDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzciIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPkVkaXRleiB2b3RyZSBwcm9maWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc4IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5Ob3V2ZWF1KHgpIE1lc3NhZ2UocykgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzkiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPk5vdXZlbGxlIGltYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4MCIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5Ew6l0YWlscyB1dGlsaXNhdGV1cnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgxIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPkNob2lzaXNzZXogdm90cmUgb3JnYW5pc2F0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4MiIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5Db21tZW5jZXIgbCdleHBvcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgzIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPlRvdXMgbGVzIHV0aWxpc2F0ZXVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODQiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+Q29tbWVuY2VyIGwnZXhwb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NSIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5JbXBvcnRlciBkw6l0YWlscyB1dGlsaXNhdGV1cnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg2IiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPkNob2lzaXNzZXogdXNlcnMueG1sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+SW1wb3J0ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg4IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5FeHBvcnQgZW4gWE1MIC0gQ2VzIGZpY2hpZXJzIHBldXZlbnQgw6p0cmUgdXRpbGlzw6lzIHBvdXIgOiAtIENvbnRyaWJ1ZXIgYXUgcHJvamV0IC0gSW1wb3J0YXRpb24gc3VyIHVuIGF1dHJlIHN5c3TDqG1lIC0gU2F1dmVnYXJkZSAtIFBlcnNvbm5hbGlzYXRpb24gLSBNZXR0ZXotbGUgZGFucyBsZSBkb3NzaWVyIGRlcyBsYW5ndWVzIHBvdXIgdm90cmUgcHJvY2hhaW5lIGluc3RhbGxhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODkiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkNob2lzaXNzZXogdW4gZmljaGllciBkZSBsYW5ndWUgw6AgaW1wb3J0ZXIuIENob2lzaXNzZXogbGUgYm9uIGxhbmdhZ2UgZGVwdWlzIGxhIGJvaXRlIGTDqXJvdWxhbnRlICEgUGV1IGltcG9ydGUgbGUgbm9tIGR1IGZpY2hpZXIsIGlsIHNlcmEgaW1wb3J0w6kgcG91ciBjZSBsYW5nYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5MCIgbmFtZT0iaW1wb3J0d2luZG93Ij4KKyAgICA8dmFsdWU+SW1wb3J0IC0gQ2hvaXNpciB1biBmaWNoaWVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5MSIgbmFtZT0icmVjb3JkaW5nc2F2ZXdpbiI+CisgICAgPHZhbHVlPkVucmVnaXN0cmVyIHNvdXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkyIiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+Tm9tIDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkzIiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+Q29tbWVudGFpcmUgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTQiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT5TYXV2ZWdhcmRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+RW5yZWdpc3RyZW1lbnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NiIgbmFtZT0icmVjb3JkZXIiPgorICAgIDx2YWx1ZT5MZWN0ZXVyIGQnZW5yZWdpc3RyZW1lbnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NyIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+RW5yZWdpc3RyZW1lbnQgZGVzIHNhbGxlcyBwcml2w6llcyBldCBwdWJsaXF1ZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk4IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5VdGlsaXNhdGV1cnMgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTkiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPkluc2NyaXRzIDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAwIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAxIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5VdGlsaXNhdGV1ciBkYW5zIGxhIHNhbGxlIDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAyIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5SYWZyYWljaGlyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMyIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+Q2V0dGUgc2FsbGUgZXN0IHBsZWluZS4gUsOpZXNzYXlleiBkYW5zIHF1ZWxxdWVzIG1pbnV0ZXMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNCIgbmFtZT0icm9vbXNMaXN0Ij4KKyAgICA8dmFsdWU+SW5mb3MgOiBDbGlxdWV6IHN1ciB1bmUgc2FsbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA1IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5EaXNjdXRleiBhdmVjIGxlcyB1dGlsaXNhdGV1cnMgZGUgY2V0dGUgc2FsbGUgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDYiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPlNhbGxlIDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA3IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5VdGlsaXNhdGV1cnMgZGFucyBjZXR0ZSBzYWxsZSA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwOCIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+RGVwdWlzIDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA5IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5MaXJlIGwnZW5yZWdpc3RyZW1lbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDEwIiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5EdXLDqWUgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTEiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkRhdGUgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTIiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPk1vZGUgZW5yZWdpc3RyZW1lbnQgISBWb3VzIG5lIHBvdXZleiByaWVuIG1vZGlmaWVyLCBjZWNpIGVzdCB1biBkb2N1bWVudCBlbnJlZ2lzdHLDqSAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMyIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+TGlyZSBjZXQgZW5yZWdpc3RyZW1lbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE0IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5MZWN0dXJlL1BhdXNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxNSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+Q29tbWVuY2VyIGwnZW5yZWdpc3RyZW1lbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE2IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5TdG9wcGVyIGwnZW5yZWdpc3RyZW1lbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE3IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5FbnJlZ2lzdHJlbWVudCA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxOCIgbmFtZT0icmVjb3JkX2Vycm9yX21zZyI+CisgICAgPHZhbHVlPlF1ZWxxdSd1biBlc3QgZMOpasOgIGVuIHRyYWluIGQnZW5yZWdpc3RyZXIgY2V0dGUgc2Vzc2lvbiA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxOSIgbmFtZT0icmVjb3JkX21lc3NhZ2UiPgorICAgIDx2YWx1ZT5FbnJlZ2lzdHJlbWVudCBwYXIgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjAiIG5hbWU9InJlY29yZF9jYW5jZWwiPgorICAgIDx2YWx1ZT5Bbm51bGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyMSIgbmFtZT0icmVjb3JkX2NhbmNhbF90b29sdGlwIj4KKyAgICA8dmFsdWU+U2kgdm91cyBhbm51bGV6IGwnZW5yZWdpc3RyZW1lbnQsIGlsIG5lIHNlcmEgcGFzIHNhdXZlZ2FyZMOpLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjIiIG5hbWU9ImNhbmNlbF9kaWFsb2dfcmVzdW1lIj4KKyAgICA8dmFsdWU+UmVwcmVuZHJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyMyIgbmFtZT0iY2FuY2VsX2RpYWxvZ19yZXN1bWVfdG9vbHRpcCI+CisgICAgPHZhbHVlPkZlcm1lciBjZXR0ZSBmZW7DqnRyZSBldCByZXByZW5kcmUgbCdlbnJlZ2lzdHJlbWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjQiIG5hbWU9InBhaW50dG9vbHNfZWxsaXBzZV9jb2xvciI+CisgICAgPHZhbHVlPkNoYW5nZXIgbGEgY291bGV1ciBkZSBsaWduZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjUiIG5hbWU9ImNvbG9ycGlja2VyX2hlYWQiPgorICAgIDx2YWx1ZT5DaG9pc2lyIHVuZSBjb3VsZXVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyNiIgbmFtZT0icGFpbnR0b29sc19saW5lX2Rpc2FibGUiPgorICAgIDx2YWx1ZT5Ew6lzYWN0aXZlci9BY3RpdmVyIGxhIGNvdWxldXIgZGUgbGlnbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI3IiBuYW1lPSJwYWludHRvb2xzX2ZpbGxfZGlzYWJsZSI+CisgICAgPHZhbHVlPmNoYW5nZXIgbGEgY291bGV1ciBkZSByZW1wbGlzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjgiIG5hbWU9InBhaW50dG9vbHNfbGluZV9kaXNhYmxlIj4KKyAgICA8dmFsdWU+RMOpc2FjdGl2ZXIgLyBBY3RpdmVyIGNvdWxldXIgZGUgcmVtcGxpc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI5IiBuYW1lPSJjaGFuZ2Vfd2lkdGhfYXJyb3dfZG93bl9zbGlkZXIiPgorICAgIDx2YWx1ZT5DaGFuZ2VyIGxhIGxhcmdldXIgZGUgbGlnbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMwIiBuYW1lPSJjbG9zZV9zbWFsbF9wb3B1cHMiPgorICAgIDx2YWx1ZT5GZXJtZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMxIiBuYW1lPSJwYWludF90b29sX2xldHRlciI+CisgICAgPHZhbHVlPkNoYW5nZXIgbGEgdGFpbGxlIGRlIGxhIHBvbGljZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzIiIG5hbWU9InJlY29yZGluZ3NsaXN0X2RlbGV0ZSI+CisgICAgPHZhbHVlPkVmZmFjZXIgbCdlbnJlZ2lzdHJlbWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzMiIG5hbWU9InJlY29yZGluZ3NsaXN0X3JlY29yZGVkQnlHdWVzdCI+CisgICAgPHZhbHVlPkludml0w6k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM0IiBuYW1lPSJyZWNvcmRpbmdzbGlzdF9yZWNvcmRlZGJ5Ij4KKyAgICA8dmFsdWU+UGFyIDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM1IiBuYW1lPSJyZWNvcmRpbmdzX3RhYmxlX2hlYWRfbmFtZSI+CisgICAgPHZhbHVlPk5vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzYiIG5hbWU9InJlY29yZGluZ3NfdGFibGVfaGVhZF9yb29tIj4KKyAgICA8dmFsdWU+U2FsbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM3IiBuYW1lPSJyZWNvcmRpbmdzX3RhYmxlX2hlYWRfZGF0ZSI+CisgICAgPHZhbHVlPkRhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM4IiBuYW1lPSJyZWNvcmRfc3RhcnRfY2FuY2VsIj4KKyAgICA8dmFsdWU+QW5udWxlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzkiIG5hbWU9InJlY29yZF9zdGFydF9zdGFydCI+CisgICAgPHZhbHVlPkTDqW1hcnJlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDAiIG5hbWU9ImZpbGVzYnJvd3Nlcl90YWJsZV9oZWFkX25hbWUiPgorICAgIDx2YWx1ZT5Ob208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQxIiBuYW1lPSJmaWxlc2Jyb3dzZXJfdGFibGVfaGVhZF9kYXRlIj4KKyAgICA8dmFsdWU+RGF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDIiIG5hbWU9ImNoYXRfY2xlYXJfaGlzdG9yeSI+CisgICAgPHZhbHVlPkVmZmFjZXIgbCdoaXN0b3JpcXVlIGR1IHQnY2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDMiIG5hbWU9ImNoYXRfb3ZlcmFsbF9oZWFkZXIiPgorICAgIDx2YWx1ZT5UJ2NoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ0IiBuYW1lPSJjaGF0X3NlbmRfYnRuIj4KKyAgICA8dmFsdWU+RW52b3llciBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NSIgbmFtZT0iY2hhdF9lbW90X2J0biI+CisgICAgPHZhbHVlPkVtb3RpY8O0bmVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NiIgbmFtZT0iY2hhdF9lbW90X3dpbiI+CisgICAgPHZhbHVlPkVtb3RpY8O0bmVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NyIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzIj4KKyAgICA8dmFsdWU+Q2hvaXNpc3NleiBsZSBww6lyaXBow6lyaXF1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDgiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPkF1ZGlvIGV0IFZpZMOpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDkiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPkF1ZGlvIHNldWxlbWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTAiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPlZpZMOpbyBzZXVsZW1lbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUxIiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT5QYXMgZCdhdWRpbyBuaSBkZSB2aWTDqW8gKGltYWdlIHN0YXRpcXVlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTIiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19pbmZvX3RleHQiPgorICAgIDx2YWx1ZT5BdWN1biBmbHV4IEF1ZGlvL1ZpZMOpbyBuZSBzZXJhIMOpbWlzLCDDoCBsYSBwbGFjZSBsJ2ltYWdlIGRlIHZvdHJlIHByb2ZpbCBzZXJhIGFmZmljaMOpZS4gQ2hvaXNpc3NleiBjZXR0ZSBjb25maWd1cmF0aW9uIGVuIGNhcyBkZSBwcm9ibMOobWUgZGUgYmFuZGUgcGFzc2FudGUgb3Ugc2kgdm90cmUgY29ubmV4aW9uIGludGVybmV0IGVzdCBsZW50ZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUzIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX21vbmRheSI+CisgICAgPHZhbHVlPkxVPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV90dWVzZGF5Ij4KKyAgICA8dmFsdWU+TUE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU1IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3dlZG5lc2RheSI+CisgICAgPHZhbHVlPk1FPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NiIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV90aHVyc2RheSI+CisgICAgPHZhbHVlPkpFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NyIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9mcmlkYXkiPgorICAgIDx2YWx1ZT5WRTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTgiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfc2F0dXJkYXkiPgorICAgIDx2YWx1ZT5TQTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTkiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfc3VuZGF5Ij4KKyAgICA8dmFsdWU+REk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYwIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX21vbmRheSI+CisgICAgPHZhbHVlPkx1bmRpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9UdWVzZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5NYXJkaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjIiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfV2VkbmVzZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5NZXJjcmVkaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjMiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfVGh1cnNkYXlMYWJlbCI+CisgICAgPHZhbHVlPkpldWRpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9GcmlkYXlMYWJlbCI+CisgICAgPHZhbHVlPlZlbmRyZWRpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9TYXR1cmRheUxhYmVsIj4KKyAgICA8dmFsdWU+U2FtZWRpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NiIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9TdW5kYXlMYWJlbCI+CisgICAgPHZhbHVlPkRpbWFuY2hlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NyIgbmFtZT0iY2FsZW5kYXJfd2Vla251bWJlcl9oZWFkZXIiPgorICAgIDx2YWx1ZT5DUzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjgiIG5hbWU9ImNhbGVuZGFyX3dlZWtudW1iZXJfaGVhZGVyVG9vbHRpcCI+CisgICAgPHZhbHVlPkNhbGVuZHJpZXIgc2VtYWluZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjkiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5KYW52aWVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3MCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPkbDqXZyaWVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3MSIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPk1hcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDcyIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+QXZyaWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDczIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+TWFpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3NCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPkp1aW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc1IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+SnVpbGxldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzYiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5Bb8O7dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzciIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5TZXB0ZW1icmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc4IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+T2N0b2JyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzkiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5Ob3ZlbWJyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODAiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5Ew6ljZW1icmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgxIiBuYW1lPSJjYWxlbmRhcndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5DYWxlbmRyaWVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4MiIgbmFtZT0icm9vbWFkbWluX2xhYmVsTnVtYmVyT2ZQYXJ0aWNpcGFudHMiPgorICAgIDx2YWx1ZT5QYXJ0aWNpcGFudHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgzIiBuYW1lPSJyb29tVmFsdWVfYWR2YW5jZWRTZXR0aW5ncyI+CisgICAgPHZhbHVlPk1vbnRyZXIgbGEgZGlzcG9zaXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg0IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3ZpZGVvWCI+CisgICAgPHZhbHVlPlggfCBZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NSIgbmFtZT0icm9vbUFkbWluX2xheW91dF92aWRlb1kiPgorICAgIDx2YWx1ZT5MYXJnZXVyIHwgSGF1dGV1cjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODYiIG5hbWU9InJvb21BZG1pbl9sYXlvdXQiPgorICAgIDx2YWx1ZT5Db250ZW5ldXItdmlkw6lvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NyIgbmFtZT0icm9vbUFkbWluX2xheW91dF9tb2QiPgorICAgIDx2YWx1ZT5Db250ZW5ldXItbW9kw6lyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg4IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X21vZF9wb3MiPgorICAgIDx2YWx1ZT5YPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4OSIgbmFtZT0icm9vbUFkbWluX2xheW91dF93aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+Q29udGVuZXVyLXRhYmxlYXUgYmxhbmM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkwIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmRfc2hvdyI+CisgICAgPHZhbHVlPkFjdGl2w6k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkxIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmRfcG9zIj4KKyAgICA8dmFsdWU+WCB8IFk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkyIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5MYXJnZXVyIHwgSGF1dGV1cjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTMiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXMiPgorICAgIDx2YWx1ZT5Db250ZW5ldXIgRmljaGllcix0J2NoYXQscGFydGljaXBhbnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NCIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlc19zaG93Ij4KKyAgICA8dmFsdWU+QWN0aXbDqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTUiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXNfcG9zIj4KKyAgICA8dmFsdWU+WCB8WTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTYiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXMiPgorICAgIDx2YWx1ZT5MYXJnZXVyIHwgSGF1dGV1cjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTciIG5hbWU9Im1vZGVyYXRvcl9nb25lX21lc3NhZ2UiPgorICAgIDx2YWx1ZT5MZSBtb2TDqXJhdGV1ciBhIHF1aXR0w6kgbGEgc2FsbGUuIFBlcnNvbm5lIG4nZXN0IHByw6lzZW50IGFjdHVlbGxlbWVudC4gVm91cyBwb3V2ZXogZGVtYW5kZXIgbGEgbW9kw6lyYXRpb24gb3UgYXR0ZW5kcmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5OCIgbmFtZT0ibW9kZXJhdG9yX21lc3NhZ2VfZXZlbnRfbm9fbW9kIj4KKyAgICA8dmFsdWU+SWwgbid5IGEgcGFzIGRlIG1vZMOpcmF0ZXVyIGRhbnMgY2V0dGUgc2FsbGUsIG1haXMgaWwgcmVzdGUgZGVzIHBhcnRpY2lwYW50cy4gVm91cyBwb3V2ZXogZGVtYW5kZXIgbGEgbW9kw6lyYXRpb24gb3UgYXR0ZW5kcmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5OSIgbmFtZT0iZmVlZGJhY2tfdGVtcGxhdGVfc3ViamVjdCI+CisgICAgPHZhbHVlPlNlbnRpbWVudHMgc3VyICRBUFBfTkFNRTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDAiIG5hbWU9Imludml0YXRpb25fdGVtcGxhdGVfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSAtIEludml0YXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAxIiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfZnJvbSI+CisgICAgPHZhbHVlPk1lc3NhZ2UgZGUgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDIiIG5hbWU9Imludml0YXRpb25fdGV4dF9tZXNzYWdlIj4KKyAgICA8dmFsdWU+TWVzc2FnZSA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwMyIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X2NsaWNrX3RleHQiPgorICAgIDx2YWx1ZT5DbGlxdWV6IHN1ciBsZSBsaWVuIHBvdXIgcGFydGljaXBlciDDoCBsYSBjb25mw6lyZW5jZSA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwNCIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X2NsaWNrX3RleHRfbGluayI+CisgICAgPHZhbHVlPkNsaXF1ZXogcG91ciBlbnRyZXIgZGFucyBsYSBzYWxsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDUiIG5hbWU9Imludml0YXRpb25fdGV4dF9jbGlja190ZXh0X2hlbHAiPgorICAgIDx2YWx1ZT5TaSBjZSBsaWVuIG5lIGZvbmN0aW9ubmUgcGFzLCBjb3BpZXIvY29sbGVyLWxlIGRhbnMgdm90cmUgbmF2aWdhdGV1ci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA2IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfaGVhZCI+CisgICAgPHZhbHVlPkluc2NyaXB0aW9uICRBUFBfTkFNRTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDciIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9oZWFkMiI+CisgICAgPHZhbHVlPlZvcyBkb25uw6llcyB1dGlsaXNhdGV1ciA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwOCIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X3VzZXJuYW1lIj4KKyAgICA8dmFsdWU+TG9naW46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwOSIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X3Bhc3MiPgorICAgIDx2YWx1ZT5Nb3QgZGUgcGFzc2UgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTAiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9tYWlsIj4KKyAgICA8dmFsdWU+RS1tYWlsIDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTExIiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfYnllIj4KKyAgICA8dmFsdWU+RXF1aXBlLSRBUFBfTkFNRTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTIiIG5hbWU9InJlZ2lzdGVyX21haWxfc3ViamVjdCI+CisgICAgPHZhbHVlPkluc2NyaXB0aW9uICRBUFBfTkFNRTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTMiIG5hbWU9InJlc2V0X3Bhc3N3b3JkX3RlbXBsYXRlX2hlYWQiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgLSBSw6lpbml0aWFsaXNlciBtb3QgZGUgcGFzc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE0IiBuYW1lPSJyZXNldF9wYXNzd29yZF90ZW1wbGF0ZV90ZXN0X2xpbmsiPgorICAgIDx2YWx1ZT5DbGlxdWV6IHN1ciBsZSBsaWVuIHBvdXIgc2Fpc2lyIHVuIG5vdXZlYXUgbW90IGRlIHBhc3NlIDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE1IiBuYW1lPSJyZXNldF9wYXNzd29yZF90ZW1wbGF0ZV90ZXh0Ml9saW5rIj4KKyAgICA8dmFsdWU+Q2xpcXVleiBpY2kgcG91ciBzYWlzaXIgdW4gbm91dmVhdSBtb3QgZGUgcGFzc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE2IiBuYW1lPSJyZXNldF9wYXNzd29yZF90ZW1wbGF0ZV90ZXh0M19saW5rIj4KKyAgICA8dmFsdWU+U2kgY2UgbGllbiBuZSBmb25jdGlvbm5lIHBhcywgY29waWVyL2NvbGxlci1sZSBkYW5zIHZvdHJlIG5hdmlnYXRldXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNyIgbmFtZT0icmVzZXRfcGFzc3dvcmRfbWFpbF9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIG5vdXZlYXUgbW90IGRlIHBhc3NlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxOCIgbmFtZT0iZGF0ZVJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+RW50cmV6IHVuZSBkYXRlIHZhbGlkZSwgcGFyIGV4ZW1wbGUgMjQuMTIuMjAwMSAoamoubW0uYWFhYSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE5IiBuYW1lPSJlbWFpbFJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+RW50cmV6IHVuIGUtbWFpbCB2YWxpZGUsIHBhciBleGVtcGxlIG5hbWVAbWFpbC5jb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIwIiBuYW1lPSJmbG9hdFJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+RW50cmV6IHVuIG5vbWJyZSBkw6ljaW1hbCB2YWxpZGUsIHBhciBleGVtcGxlIDEuMDA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIxIiBuYW1lPSJudW1iZXJSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPkVudHJleiB1biBlbnRpZXIgdmFsaWRlLCBwYXIgZXhlbXBsZSAxMDA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIyIiBuYW1lPSJwaG9uZVJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+RW50cmV6IHVuIG51bcOpcm8gZGUgdMOpbMOpcGhvbmUgdmFsaWRlLCBwYXIgZXhlbXBsZSAwMSAwMiAwMyAwNCAwNTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjMiIG5hbWU9InRpbWVSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPkVudHJleiB1bmUgaGV1cmUgdmFsaWRlLCBwYXIgZXhlbXBsZSAxMjoyMyAoaGg6bW0pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3ciPgorICAgIDx2YWx1ZT5Qcm90w6lnw6kgcGFyIG1vdCBkZSBwYXNzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjUiIG5hbWU9Imludml0YXRpb25fd2luZG93X3Bhc3N3b3JkTGFiZWwiPgorICAgIDx2YWx1ZT5Nb3QgZGUgcGFzc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI2IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZExhYmVsIj4KKyAgICA8dmFsdWU+UMOpcmlvZGUgZGUgdmFsaWRpdMOpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNyIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWQiPgorICAgIDx2YWx1ZT5JbmTDqWZpbmllPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyOCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWQiPgorICAgIDx2YWx1ZT5UZW1wb3JhaXJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyOSIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWQiPgorICAgIDx2YWx1ZT5VbmUgY29ubmV4aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWRGcm9tTGFiZWwiPgorICAgIDx2YWx1ZT5WYWxpZGUgw6AgcGFydGlyIGRlIDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMxIiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZFRvTGFiZWwiPgorICAgIDx2YWx1ZT5WYWxpZGUganVzcXUnw6AgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzIiIG5hbWU9Imludml0YXRpb25fd2luZG93X01haWxTdWJqZWN0Ij4KKyAgICA8dmFsdWU+SW52aXRhdGlvbiDDoCB1bmUgY29uZsOpcmVuY2UgJEFQUF9OQU1FPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMyIgbmFtZT0iaW52aXRhdGlvbl9lcnJvciI+CisgICAgPHZhbHVlPlBhcyBkJ2ludml0YXRpb24gZGlzcG9uaWJsZSBwb3VyIGNlIGNvZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM0IiBuYW1lPSJpbnZpdGF0aW9uX2Vycm9yIj4KKyAgICA8dmFsdWU+TCdpbnZpdGF0aW9uIGVzdCBkw6lqw6AgdXRpbGlzw6kuIEltcG9zc2libGUgZCdhY2PDqWRlciDDoCBsYSByw6l1bmlvbi9jb25mw6lyZW5jZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM1IiBuYW1lPSJpbnZpdGF0aW9uX2Vycm9yIj4KKyAgICA8dmFsdWU+Q2UgY29kZSBkJ2ludml0YXRpb24gbidlc3QgcGFzIHZhbGlkZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM2IiBuYW1lPSJpbnZpdGF0aW9uX3Bhc3MiPgorICAgIDx2YWx1ZT5Nb3QgZGUgcGFzc2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzNyIgbmFtZT0iaW52aXRhdGlvbl9wYXNzX2J0biI+CisgICAgPHZhbHVlPlbDqXJpZmljYXRpb24gZHUgbW90IGRlIHBhc3NlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzOCIgbmFtZT0iaW52aXRhdGlvbl9wYXNzX2Vycm9yIj4KKyAgICA8dmFsdWU+TW90IGRlIHBhc3NlIG5vbiB2YWxpZGUgITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzkiIG5hbWU9IkJyb3dzZXIiPgorICAgIDx2YWx1ZT5OYXZpZ2F0ZXVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0MCIgbmFtZT0iYXVkaW9fdmlkZW8iPgorICAgIDx2YWx1ZT5TeW5jaHJvbmlzZXIgQXVkaW8vVmlkw6lvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0MSIgbmFtZT0iZXJyb3JDb2RlX2ludmFsaWRTZXNzaW9uIj4KKyAgICA8dmFsdWU+Vm90cmUgbW90IGRlIHBhc3NlIGVzdCBjb3JyZWN0IG1haXMgbGEgc2Vzc2lvbiBlc3QgaW5hY3RpdmUuIFZvdXMgZGV2ZXogcsOpY3Vww6lyZXIgdW5lIG5vdXZlbGxlIElEIGRlIHNlc3Npb24gZXQgdm91cyByZWNvbm5lY3Rlci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQyIiBuYW1lPSJlcnJvcmNvZGVfc2V0VXNlck9iamVjdCI+CisgICAgPHZhbHVlPkwnSUQgZGUgc2Vzc2lvbiBuJ2VzdCBwYXMgY29ubmVjdMOpIG91IG5lIHBvc3PDqGRlIHBhcyBsZXMgZHJvaXRzIGQnYWRtaW5pc3RyYXRpb24uIExhIHBhc3NlcmVsbGUgU09BUCBuw6ljZXNzaXRlIHVuIHV0aWxpc2F0ZXVyIGF5YW50IGxlcyBkcm9pdHMgZCdhZG1pbmlzdHJhdGlvbiBwb3VyIGludMOpZ3JlciBkZSBub3V2ZWF1eCB1dGlsaXNhdGV1cnMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0MyIgbmFtZT0iZXJyb3Jjb2RlX2xvZ2luQnlSZW1vdGVVc2VyIj4KKyAgICA8dmFsdWU+Q2V0dGUgc2Vzc2lvbiBuJ2EgcGFzIGQndXRpbGlzYXRldXIgZGlzdGFudCBjb25uZWN0w6kuIFNvaXQgdm91cyBuJ2F2ZXogcGFzIGFwcGVsw6kgbGEgcGFzc2VyZWxsZSBTT0FTIGF2YW50IGQnYWNjw6lkZXIgw6AgbCdhcHBsaWNhdGlvbiwgc29pdCB2b3VzIHV0aWxpc2V6IHVuZSBtYXV2YWlzZSBJRCBkZSBzZXNzaW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDQiIG5hbWU9ImRlYnVnX21lc3NhZ2VfcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TCdlbnJlZ2lzdHJlbWVudCBlc3QgZW4gY29uc3RydWN0aW9uLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0NSIgbmFtZT0icHJvcGVydHlQYW5lbFhWYWx1ZSI+CisgICAgPHZhbHVlPng8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ2IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWFZhbHVlTGFiZWwiPgorICAgIDx2YWx1ZT5heGUteDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDciIG5hbWU9InByb3BlcnR5UGFuZWxZVmFsdWUiPgorICAgIDx2YWx1ZT55PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0OCIgbmFtZT0icHJvcGVydHlQYW5lbFlWYWx1ZUxhYmVsIj4KKyAgICA8dmFsdWU+YXhlLXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ5IiBuYW1lPSJwcm9wZXJ0eVBhbmVsV2lkdGhWYWx1ZSI+CisgICAgPHZhbHVlPnc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUwIiBuYW1lPSJwcm9wZXJ0eVBhbmVsV2lkdGhWYWx1ZUxhYmVsIj4KKyAgICA8dmFsdWU+TGFyZ2V1cjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTEiIG5hbWU9InByb3BlcnR5UGFuZWxIZWlnaHRWYWx1ZSI+CisgICAgPHZhbHVlPmg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUyIiBuYW1lPSJwcm9wZXJ0eVBhbmVsSGVpZ2h0VmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPkhhdXRldXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUzIiBuYW1lPSJwcm9wZXJ0eU9wYWNpdHlTbGlkZXIiPgorICAgIDx2YWx1ZT5Nb2RpZmllciBsYSB0cmFuc3BhcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU0IiBuYW1lPSJicm93c2VyT3BlbiI+CisgICAgPHZhbHVlPk5hdmlnYXRldXIgb3V2ZXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1NSIgbmFtZT0iYnJvd3NlckNsb3NlIj4KKyAgICA8dmFsdWU+TmF2aWdhdGV1ciBmZXJtw6k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU2IiBuYW1lPSJjb25uZWN0aW9uTG9zdE1lc3NhZ2UiPgorICAgIDx2YWx1ZT5MYSBjb25uZXhpb24gYXZlYyBsZSBzZXJ2ZXVyIGVzdCBpbnRlcnJvbXB1ZS4gVsOpcmlmaWV6IGxlIHLDqXNlYXUgb3UgY29udGFjdGV6IGwnYWRtaW5pdHJhdGV1ci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU3IiBuYW1lPSI1NTciPgorICAgIDx2YWx1ZT5Qb2ludGV1cjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTgiIG5hbWU9InN5bmMgbWVzc2FnZSBoZWFkZXIiPgorICAgIDx2YWx1ZT5TeW5jaHJvbmlzYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU5IiBuYW1lPSJTeW5jaHJvbml6aW5nIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TeW5jaHJvbmlzYXRpb24gZGVzIHV0aWxpc2F0ZXVycywgcGF0aWVudGV6IHMnaWwgdm91cyBwbGFpdC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjAiIG5hbWU9ImV4cG9ydFRvU1ZHIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7VMOpbMOpY2hhcmdlciBlbiBTVkcmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MSIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O1TDqWzDqWNoYXJnZXIgZW4gUE5HJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjIiIG5hbWU9ImV4cG9ydFRvSW1hZ2UiPgorICAgIDx2YWx1ZT4mbHQ7dSZndDtUw6lsw6ljaGFyZ2VyIGVuIEpQRyZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYzIiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7VMOpbMOpY2hhcmdlciBlbiBQREYmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2NCIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O1TDqWzDqWNoYXJnZXIgZW4gVElGJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjUiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5SYXBwZWwgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjYiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5DYXTDqWdvcmllOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjciIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5Sw6lww6l0aXRpb246PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2OCIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPk51bDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjkiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5MaWV1IDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTcwIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+RMOpYnV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkZpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzIiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5UaXRyZSA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MyIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkNvbW1lbnRhaXJlIDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc0IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+SW52aXRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzUiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5Kb3VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NiIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPk1vaXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc3IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+QW5uw6llPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3OCIgbmFtZT0iYWxlcnQiPgorICAgIDx2YWx1ZT5GaW4gZGUgcmVuZGV6LXZvdXMgZXN0IGFwcsOocyBkw6lidXQgZGUgcmVuZGV6LXZvdXMgITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzkiIG5hbWU9ImFsZXJ0Ij4KKyAgICA8dmFsdWU+SW5kaXF1ZXogdW4gdGl0cmUgcydpbCB2b3VzIHBsYWl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MCIgbmFtZT0iNTgwIj4KKyAgICA8dmFsdWU+UlRMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MSIgbmFtZT0iNTgxIj4KKyAgICA8dmFsdWU+Q29jaGV6IGNldHRlIGNhc2UgcG91ciDDqWNyaXJlIGRlIGRyb2l0ZSDDoCBnYXVjaGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgyIiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPlRhYmxlYXUgZGUgYm9yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODMiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+VmlzaW9ubmVyIHZvcyByw6l1bmlvbnMgb3UgY29uZsOpcmVuY2VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4NCIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT5BY2PDqWRlciBhdXggcsOpdW5pb25zIGVuIGNvdXJzJmx0O2JyLyZndDtUb3V0IGxlIG1vbmRlIHBvdXJyYSBwYXJsZXIgZXQgZW50ZW5kcmUgbCdlbnNlbWJsZSBkZXMgY29udmVyc2F0aW9ucy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg1IiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPkFjY8OpZGVyIGF1eCBjb25mw6lyZW5jZXMgZW4gY291cnMmbHQ7YnIvJmd0O0xlIGRyb2l0IGRlIHBhcm9sZSBlc3QgcsOpc2VydsOpZSBhdSBjb25mw6lyZW5jaWVyLiBWb3VzIG5lIHBvdXJyZXogcXUnw6ljb3V0ZXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4NiIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT5DcsOpZXIgdW4gdXRpbGlzYXRldXIsIHVuZSByw6l1bmlvbiwgdW5lIG9yZ2FuaXNhdGlvbi4mbHQ7YnIvJmd0OyArIGNoYW5nZXIgbGEgY29uZmlndXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODciIG5hbWU9InJvb20gQWRtaW5pc3RyYXRpb24gcm9vbWNsaWVudHMgbGlzdCI+CisgICAgPHZhbHVlPlV0aWxpc2F0ZXVycyBhY3R1ZWxsZW1lbnQgZGFucyBjZXR0ZSByw6l1bmlvbiA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4OCIgbmFtZT0icm9vbSBBZG1pbmlzdHJhdGlvbiByb29tY2xpZW50cyBsaXN0Ij4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg5IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTAiIG5hbWU9InJvb20gQWRtaW5pc3RyYXRpb24gcm9vbWNsaWVudHMgbGlzdCI+CisgICAgPHZhbHVlPkQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkxIiBuYW1lPSJzd2Ygc3luYyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RG9jdW1lbnQgZW4gY2hhcmdlbWVudC4gQXR0ZW5kZXogcXVlIHRvdXMgbGVzIHV0aWxpc2F0ZXVycyBzb2llbnQgc3luY2hyb25pc8Opcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkyIiBuYW1lPSJ1cGxvYWQgZGlhbG9nIj4KKyAgICA8dmFsdWU+VMOpbMOpY2hhcmdlbWVudCBvaywgY29udmVyc2lvbiBlbiBjb3Vycy4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTMiIG5hbWU9InVwbG9hZCBkaWFsb2ciPgorICAgIDx2YWx1ZT5Ew6ltYXJyZXIgbCdpbXBvcnRhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTQiIG5hbWU9InVwbG9hZCBkaWFsb2ciPgorICAgIDx2YWx1ZT5Tw6lsZWN0aW9ubmV6IHVuIGZpY2hpZXIgc3VyIHZvdHJlIGRpc3F1ZSA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NSIgbmFtZT0idXBsb2FkIERpYWxvZyI+CisgICAgPHZhbHVlPlF1aXR0ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk2IiBuYW1lPSJ1cGxvYWQgRGlhbG9nIj4KKyAgICA8dmFsdWU+U8OpbGVjdGlvbm5lciB1biBmaWNoaWVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NyIgbmFtZT0iYWRtaW5pc3RyYXRpb24gbmF2aWdhdGlvbiI+CisgICAgPHZhbHVlPkNvbm5leGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk4IiBuYW1lPSJjb25mYWRtaW4gdmFsdWUgbGlzdCI+CisgICAgPHZhbHVlPlZhbGV1cjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTkiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5TdHJlYW1pZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDAiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDEiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5Db25uZWN0w6kgZGVwdWlzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwMiIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPlNhbGxlIC8gTGltaXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwMyIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPlNvcnRpciB1dGlsaXNhdGV1cjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDQiIG5hbWU9ImtpY2sgdXNlciBjb25maXJtYXRpb24gZGlhbG9nIj4KKyAgICA8dmFsdWU+U29ydGlyIHV0aWxpc2F0ZXVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwNSIgbmFtZT0ia2ljayB1c2VyIGNvbmZpcm1hdGlvbiBkaWFsb2ciPgorICAgIDx2YWx1ZT5Wb3VsZXotdm91cyB2cmFpbWVudCBzb3J0aXIgY2V0IHV0aWxpc2F0ZXVyID8mbHQ7YnIvJmd0OyBDZWxhIHN1cHByaW1lcmEgbGUgY2xpZW50IGRlIGxhIHLDqXVuaW9uIGFjdHVlbGxlIG1haXMgaWwgcG91cnJhIHNlIHJlY29ubmVjdGVyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDYiIG5hbWU9ImtpY2sgdXNlciBtZXNzYWdlIGRpYWxvZyI+CisgICAgPHZhbHVlPlZvdHJlIHNlc3Npb24gYSDDqXTDqSBpbnRlcnJvbXB1ZSBwYXIgbCdhZG1pbmlzdHJhdGV1ciBvdSBsZSBtb2TDqXJhdGV1ci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA3IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Bob25lIj4KKyAgICA8dmFsdWU+VMOpbMOpcGhvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA4IiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5Nb2TDqXJhdGV1ciBkZSBjZXR0ZSByw6l1bmlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDkiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPkF1dG9yaXNlci9SZWZ1c2VyIGxlIGRyb2l0IGRlIGRlc3NpbmVyIHN1ciBsZSB0YWJsZWF1IGJsYW5jPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMCIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+KFJlKSBEw6ltYXJyZXIgYXVkaW8vdmlkw6lvIG91IGNoYW5nZXIgbGVzIHBhcmFtw6h0cmVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMSIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+QXV0b3Jpc2VyIGNldCB1dGlsaXNhdGV1ciDDoCBkZXNzaW5lciBzdXIgbGUgdGFibGVhdSBibGFuYzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTIiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPlJldGlyZXIgbGUgZHJvaXQgZGUgZGVzc2luZXIgc3VyIGxlIHRhYmxlYXUgYmxhbmMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMyIgbmFtZT0iY29uZmVyZW5jZVBhbmVscyI+CisgICAgPHZhbHVlPlV0aWxpc2F0ZXVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTQiIG5hbWU9ImNvbmZlcmVuY2VQYW5lbHMiPgorICAgIDx2YWx1ZT5GaWNoaWVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTUiIG5hbWU9ImNvbmZlcmVuY2VQYW5lbHMiPgorICAgIDx2YWx1ZT5UYWJsZWF1IGJsYW5jPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxNiIgbmFtZT0iY29uZmVyZW5jZVBhbmVscyI+CisgICAgPHZhbHVlPlQnY2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTciIG5hbWU9Im9yZ2FuaXphdGlvbiBjaG9vc2UgaW5mbyI+CisgICAgPHZhbHVlPlZvdHJlIGNvbXB0ZSBlc3QgYXNzaWduw6kgw6AgcGx1c2lldXJzIG9yZ2FuaXNhdGlvbnMuIENob2lzaXNzZXotZW4gdW5lIHBvdXIgY2V0dGUgc2Vzc2lvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE4IiBuYW1lPSJlcnJvciBtZXNzYWdlIHJvb20gZnVsbCI+CisgICAgPHZhbHVlPkxlIG5vbWJyZSBtYXguIGQndXRpbGlzYXRldXJzIGVzdCBhdHRlaW50LiBWZXVpbGxleiByw6llc3NheWV6IHBsdXMgdGFyZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE5IiBuYW1lPSJyb29tdHlwZXMiPgorICAgIDx2YWx1ZT5UeXBlIGRlIHNhbGxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyMCIgbmFtZT0iYXBwb2ludGVkX3Jvb20iPgorICAgIDx2YWx1ZT5TYWxsZSB0ZW1wb3JhaXJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyMSIgbmFtZT0ic2VydmVydGltZSI+CisgICAgPHZhbHVlPkhldXJlIHNlcnZldXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIyIiBuYW1lPSJpbnZfcmVtaW5kZXJfdGVtcGxhdGVfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSAtIFJhcHBlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjMiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2Zyb20iPgorICAgIDx2YWx1ZT5NZXNzYWdlIGRlIGwndXRpbGlzYXRldXIgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjQiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X21lc3NhZ2UiPgorICAgIDx2YWx1ZT5NZXNzYWdlIDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI1IiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9jbGlja190ZXh0Ij4KKyAgICA8dmFsdWU+Q2xpcXVleiBzdXIgY2UgbGllbiBwb3VyIHBhcnRpY2lwZXIgw6AgbGEgcsOpdW5pb24gOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjYiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2NsaWNrX3RleHRfbGluayI+CisgICAgPHZhbHVlPkNsaXF1ZXogaWNpIHBvdXIgZW50cmVyIGRhbnMgbGEgc2FsbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI3IiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9jbGlja190ZXh0X2hlbHAiPgorICAgIDx2YWx1ZT5TaSB2b3VzIGF2ZXogdW4gcHJvYmzDqG1lIGF2ZWMgbGUgbGllbiwgY29waWVyLWNvbGxlci1sZSBkYW5zIHZvdHJlIG5hdmlnYXRldXIgcy52LnAuIDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI4IiBuYW1lPSJidG5fc2VhcmNoX2ludGVybiI+CisgICAgPHZhbHVlPnJlY2hlcmNoZSBpbnRlcm5lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyOSIgbmFtZT0iYnRuX3NlYXJjaF9leHRlcm4iPgorICAgIDx2YWx1ZT5Bam91dGVyIHVuIHV0aWxpc2F0ZXVyIGV4dMOpcmlldXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMwIiBuYW1lPSJsYmxfcHJlbmFtZSI+CisgICAgPHZhbHVlPlByw6lub208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMxIiBuYW1lPSJsYmxfbmFtZSI+CisgICAgPHZhbHVlPk5vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzIiIG5hbWU9ImxibF9lbWFpbCI+CisgICAgPHZhbHVlPkUtbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzMiIG5hbWU9ImxvZ291dENvbmZpcm1fdGl0bGUiPgorICAgIDx2YWx1ZT5Db25maXJtZXIgbGEgc29ydGllPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNCIgbmFtZT0ibG9nb3V0Q29uZmlybV9zdXJlX3RvX2xvZ291dF9xdWVzdGlvbiI+CisgICAgPHZhbHVlPkV0ZXMtdm91cyBzw7tyIGRlIHZvdWxvaXIgcXVpdHRlciA/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNSIgbmFtZT0ibWFpbiBtZW51Ij4KKyAgICA8dmFsdWU+QWN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzYiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5TYWxsZSBEw6ltbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5IZXVyZSBEw6ltbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzgiIG5hbWU9Im1lZXRpbmcgVGltZXIiPgorICAgIDx2YWx1ZT5UZW1wcyBkZSByw6l1bmlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzkiIG5hbWU9Im1lZXRpbmcgVGltZXIiPgorICAgIDx2YWx1ZT5DJ2VzdCB1bmUgc2FsbGUgZGUgRMOpbW8uIFBvdXIgZMOpc2FjdGl2ZXIgY2UgbWVzc2FnZSB2b3VzIGRldmV6IHV0aWxpc2VyIHVuZSByw6l1bmlvbiBwcml2w6llIHBvdXIgdm90cmUgdXNhZ2UgcGVyc29ubmVsIG91IGF2b2lyIHZvdHJlIHByb3ByZSBzZXJ2ZXVyLiBWb3VzIGFsbGV6IMOqdHJlIGF1dG9tYXRpcXVlbWVudCBkw6ljb25uZWN0w6kgZGFucyA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MCIgbmFtZT0ibWVldGluZyByb29tIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+TW9kw6lyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQxIiBuYW1lPSJtb2RlcmF0ZWQgcm9vbSB3YWl0aW5nIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TLlYuUC4gYXR0ZW5kZXogcXVlIGxlIG1vZMOpcmF0ZXVyIHJlam9pZ25lIGxhIHNhbGxlLiZsdDtici8mZ3Q7TGUgbW9kw6lyYXRldXIgcGV1dC3DqnRyZSB1biBlbnNlaWduYW50LCZsdDtici8mZ3Q7bCdhZG1pbmlzdHJhdGV1ciBvdSBsZSBjcsOpYXRldXIgZGUmbHQ7YnIvJmd0OyBjZXR0ZSByw6l1bmlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQyIiBuYW1lPSJlcnJvciBwb3B1cCI+CisgICAgPHZhbHVlPk9rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MyIgbmFtZT0id2luZG93IHNjcmVlbnNoYXJpbmciPgorICAgIDx2YWx1ZT5Ob3V2ZWF1IHBhcnRhZ2UgZCfDqWNyYW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ0IiBuYW1lPSJ3aW5kb3cgc2NyZWVuIHNoYXJpbmciPgorICAgIDx2YWx1ZT5DJ2VzdCB1biBub3V2ZWF1IHBhcnRhZ2UgZCfDqWNyYW4gZGUgY2V0IHV0aWxpc2F0ZXVyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDUiIG5hbWU9IndpbmRvdyBzY3JlZW4gc2hhcmluZyI+CisgICAgPHZhbHVlPkTDqW1hcnJlciBsZSBwYXJ0YWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0NiIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Bam91dGVyIHVuZSBub3V2ZWxsZSByw6l1bmlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDciIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+U2FsbGUgZGUgcsOpdW5pb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ4IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPlNhbGxlIGRlIGNvbmbDqXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0OSIgbmFtZT0ibWFpbiBtZW51IG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Nb2TDqXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTAiIG5hbWU9Im1lbnUgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPk1vZMOpcmVyIGxlcyB1dGlsaXNhdGV1cnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUxIiBuYW1lPSJtZW51IG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5TYWxsZXMgbW9kw6lyw6llczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTIiIG5hbWU9Im1vZGVyYXRvciBvcmciPgorICAgIDx2YWx1ZT5NPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1MyIgbmFtZT0iY29uZmlybSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+Vm91bGV6LXZvdXMgcXVlIGNldCB1dGlsaXNhdGV1ciBkZXZpZW5uZSB1biBtb2TDqXJhdGV1ciBkZSBjZXR0ZSBvcmdhbmlzYXRpb24gPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTQiIG5hbWU9ImVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DaG9pc2lzc2V6IHVuZSBvcmdhbmlzYXRpb24gYXZhbnQgZGUgbHVpIGFqb3V0ZXIgdW4gdXRpbGlzYXRldXIgcy52LnAuICE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU1IiBuYW1lPSJjaG9vc2UgdXNlciB3aW5kb3ciPgorICAgIDx2YWx1ZT5PcmdhbmlzYXRpb24gLSBNb2TDqXJhdGV1cjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTYiIG5hbWU9Im1vZGVyYXRvciBvcmcgdXNlcnMiPgorICAgIDx2YWx1ZT5Wb3VsZXotdm91cyByw6llbGxlbWVudCBzdXBwcmltZXIgY2V0IHV0aWxpc2F0ZXVyIGRlIGNldHRlIG9yZ2FuaXNhdGlvbj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU3IiBuYW1lPSJvcmcgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkNldCB1dGlsaXNhdGV1ciBlc3QgdW4gbW9kw6lyYXRldXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU4IiBuYW1lPSJvcmcgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkNldCB1dGlsaXNhdGV1ciBuJ2VzdCBwYXMgdW4gbW9kw6lyYXRldXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU5IiBuYW1lPSJlcnJvciBtZXNzYWdlIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Wb3VsZXotdm91cyBxdWUgY2V0IHV0aWxpc2F0ZXVyIG5lIHNvaXQgcGFzIHVuIG1vZMOpcmF0ZXVyIGRlIGNldHRlIG9yZ2FuaXNhdGlvbiA/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MCIgbmFtZT0ibW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkFqb3V0ZXIgb3Ugc3VwcHJpbWVyIGRlcyB1dGlsaXNhdGV1cnMgb3UgZGVzIHNhbGxlcyBkZSB2b3RyZSBvcmdhbmlzYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYxIiBuYW1lPSJkZWxldGUgY29uZmlybSBxdWVzdGlvbiI+CisgICAgPHZhbHVlPlZvdWxlei12b3VzIHLDqWVsbGVtZW50IHN1cHByaW1lciBjZXQgZW5yZWdpc3RyZW1lbnQgPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjIiIG5hbWU9ImRlbGV0ZSBjb25maXJtIHF1ZXN0aW9uIHVzZXIgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPlZvdWxlei12b3VzIHLDqWVsbGVtZW50IHN1cHByaW1lciBjZXQgdXRpbGlzYXRldXIgZGUgdm90cmUgb3JnYW5pc2F0aW9uID8gVm91cyBzdXBwcmltZXogc2V1bGVtZW50IGxlIGxpZW4gZW50cmUgY2V0IHV0aWxpc2F0ZXVyIGV0IHZvdHJlIG9yZ2FuaXNhdGlvbiwgcG91ciBzdXBwcmltZXIgcsOpZWxsZW1lbnQgY2V0IHV0aWxpc2F0ZXVyIHZvdXMgZGV2ZXogYWxsZXIgZGFucyBsJ29uZ2xldCBkJ2FkbWluaXN0cmF0aW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjMiIG5hbWU9ImVycm9yIG1lc3NhZ2Ugc2VsZiBkZWxldGluZyI+CisgICAgPHZhbHVlPlZvdXMgbmUgcG91dmV6IHBhcyB2b3VzIHN1cHByaW1lciAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NCIgbmFtZT0iZXJyb3IgbWVzc2FnZSBhdXRoIj4KKyAgICA8dmFsdWU+Q2V0dGUgbcOpdGhvZGUgbsOpY2Vzc2l0ZSBkZXMgZHJvaXRzIGQnYWRtaW5pc3RyYXRpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NSIgbmFtZT0iZXJyb3IgbWVzc2FnZSBTT0FQIj4KKyAgICA8dmFsdWU+SWwgbid5IGEgcGFzIGRlIHNlc3Npb24gYXNzb2Npw6llIMOgIGNldCBJRC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY2IiBuYW1lPSJlcnJvciBtZXNzYWdlIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5DJ2VzdCB1biBjb21wdGUgZCdhZG1pbmlzdHJhdGlvbiBvdSBkZSBtb2TDqXJhdGV1ci4gVm91cyBuZSBwb3V2ZXogbCfDqWRpdGVyIHF1J8OgIHRyYXZlcnMgbCdvbmdsZXQgZCdhZG1pbmlzdHJhdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY3IiBuYW1lPSJlbWFpbCB2ZXJpZmljYXRpb24iPgorICAgIDx2YWx1ZT5Qb3VyIHRlcm1pbmVyIHZvdHJlIGVucmVnaXN0cmVtZW50IHZldWlsbGV6IGNsaXF1ZXIgc3VyIGxlIGxpZW4gc3VpdmFudC4gT3UgY29waWVyIGwnVVJMIGRhbnMgbGEgYmFycmUgZCdhZHJlc3NlIGRlIHZvdHJlIG5hdmlnYXRldXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2OCIgbmFtZT0iZW1haWwgdmVyaWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+Q2xpcXVleiBwb3VyIHbDqXJpZmllciB2b3RyZSBFLW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY5IiBuYW1lPSJlcnJvck1lc3NhZ2VfVXNlckFjdGl2YXRpb25TZXJ2bGV0IFtBY3RpdmF0ZVVzZXJdIj4KKyAgICA8dmFsdWU+QXVjdW4gdXRpbGlzYXRldXIgcG91ciBjZSBoYWNoYWdlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzAiIG5hbWU9ImVycm9yTWVzc2FnZV9Vc2VyQWN0aXZhdGlvblNlcnZsZXQgW0FjdGl2YXRlVXNlcl0iPgorICAgIDx2YWx1ZT5DZXQgdXRpbGlzYXRldXIgZXN0IGTDqWrDoCBhY3RpdsOpICE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjcxIiBuYW1lPSJlcnJvck1lc3NhZ2VfVXNlckFjdGl2YXRpb25TZXJ2bGV0IFtBY3RpdmF0ZVVzZXJdIj4KKyAgICA8dmFsdWU+Vm91cyBhdmV6IGFjdGl2w6kgdm90cmUgY29tcHRlIGF2ZWMgc3VjY8OocyAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3MiIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPlNlIGNvbm5lY3RlciBtYWludGVuYW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3MyIgbmFtZT0ibG9naW5FcnJvck1lc3NhZ2UgPSB1c2VyIHdhcyBub3QgYWN0aXZhdGVkIj4KKyAgICA8dmFsdWU+Vm90cmUgY29tcHRlIG4nZXN0IHBhcyBhY3RpZi4gVXRpbGlzZXogbGUgbGllbiBkYW5zIGwnZS1tYWlsIHF1ZSB2b3VzIGF2ZXogcmXDp3UgcG91ciBsJ2VucmVnaXN0cmVtZW50LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzQiIG5hbWU9InJlZ2lzdGVyIHZlcmlmaWNhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Vm91cyDDqnRlcyBlbnJlZ2lzdHLDqS4gTm91cyB2b3VzIGF2b25zIGVudm95w6kgdW4gZS1tYWlsIGF2ZWMgdW4gY29kZSBkZSB2w6lyaWZpY2F0aW9uLiBSZWdhcmRleiB2b3RyZSBib2l0ZSBkZSBtZXNzYWdlcmllLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzUiIG5hbWU9InBhcnRpY2lwYW50cyBwYW5lbCI+CisgICAgPHZhbHVlPkVubGV2ZXIgbGUgcsO0bGUgZGUgbW9kw6lyYXRldXIgw6AgY2V0IHV0aWxpc2F0ZXVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3NiIgbmFtZT0icGFydGljaXBhbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+RG9ubmVyIGxlcyBkcm9pdHMgZGUgbW9kw6lyYXRpb24gw6AgY2V0IHV0aWxpc2F0ZXVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3NyIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+VXRpbGlzYXRldXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc4IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5BY2PDqHMgYXUgdGFibGVhdSBibGFuYzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzkiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPk1vZMOpcmF0ZXVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+TW9kw6lyYXRpb24gOiBDaG9pc2lzc2V6IHVuIHV0aWxpc2F0ZXVyIGRlIGNldHRlIGxpc3RlIHBvdXIgbHVpIGRvbm5lciBhY2PDqHMgYXUgdGFibGVhdSBibGFuYywgw6AgbGEgbW9kw6lyYXRpb24gb3Ugw6AgbGEgdmlkw6lvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODEiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkNldCB1dGlsaXNhdGV1ciBlc3QgZMOpasOgIG1vZMOpcmF0ZXVyLCBkb25jIGlsIGEgbGUgZHJvaXQgZGUgZGVzc2luZXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MiIgbmFtZT0iZXZlbnQgdXNlciBsaXN0IGVycm9yIj4KKyAgICA8dmFsdWU+SWwgcydhZ2l0IGRlIHZvdXMgISBWb3VzIG5lIHBvdXZleiBwYXMgdm91cyByZXRpcmVyICZsdDtici8mZ3Q7bGVzIGRyb2l0cyBkZSBtb2TDqXJhdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgzIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5BdXRvcmlzZXIgY2V0IHV0aWxpc2F0ZXVyIMOgIHB1YmxpZXIgc29uIEF1ZGlvL1ZpZMOpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODQiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlN1cHByaW1lciBsJ0F1ZGlvL1ZpZMOpbyBkZSBjZXQgdXRpbGlzYXRldXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg1IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5KZSBzb3VoYWl0ZXJhaXMgb2J0ZW5pciBsZSBtb2TDqXJhdGlvbiBkZSBjZXR0ZSBzYWxsZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg2IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5KZSBzb3VoYWl0ZXJhaXMgZGVzc2luZXIgc3VyIGxlIHRhYmxlYXUgYmxhbmM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg3IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5KZSBzb3VoYWl0ZXJhaXMgcGFydGFnZXIgbW9uIGF1ZGlvL3ZpZMOpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODgiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlZvdXMgw6p0ZXMgbGUgbW9kw6lyYXRldXIgZGUgY2V0dGUgc2FsbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg5IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Wb3VzIMOqdGVzIGF1dG9yaXPDqSDDoCBkZXNzaW5lciBzdXIgbGUgdGFibGVhdSBibGFuYzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTAiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlZvdXMgw6p0ZXMgYXV0b3Jpc8OpIMOgIHBhcnRhZ2VyIHZvdHJlIEF1ZGlvL1ZpZMOpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkxIiBuYW1lPSJlcnJvcnR5cGUiPgorICAgIDx2YWx1ZT5NZXNzYWdlIGF1IG1vZMOpcmF0ZXVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5MiIgbmFtZT0iYXBwbHkgZm9yIG1vZCBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TCd1dGlsaXNhdGV1cjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTMiIG5hbWU9ImFwcGx5IGZvciBtb2QgbWVzc2FnZSI+CisgICAgPHZhbHVlPiZsdDtici8mZ3Q7ZGVtYW5kZSBsYSBtb2TDqXJhdGlvbi4gVXRpbGlzZXogbCdpY8O0bmUgZGFucyBsYSBsaXN0ZSBkZXMgdXRpbGlzYXRldXJzIHBvdXIgYWpvdXRlciBvdSBlbmxldmVyIGxhIG1vZMOpcmF0aW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTQiIG5hbWU9ImFwcGx5IGZvciB3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+Jmx0O2JyLyZndDtkZW1hbmRlIGwnYWNjw6hzIGF1IHRhYmxlYXUgYmxhbmMuIFV0aWxpc2V6IGwnaWPDtG5lIGRhbnMgbGEgbGlzdGUgZGVzIHV0aWxpc2F0ZXVycyBwb3VyIGFqb3V0ZXIgb3UgZW5sZXZlciBsZSBkcm9pdCBkZSBkZXNzaW5lciBzdXIgbGUgdGFibGVhdSBibGFuYy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk1IiBuYW1lPSI2OTUiPgorICAgIDx2YWx1ZT4mbHQ7YnIvJmd0O2RlbWFuZGUgbGUgcGFydGFnZSBhdWRpby92aWTDqW8uIFV0aWxpc2V6IGwnaWPDtG5lIGRhbnMgbGEgbGlzdGUgZGVzIHV0aWxpc2F0ZXVycyBwb3VyIGFqb3V0ZXIgb3UgZW5sZXZlciBsZSBkcm9pdCBkZSBwYXJ0YWdlciBsJ2F1ZGlvL3ZpZMOpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk2IiBuYW1lPSJtb2RlcmF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Wb3VzIGRldmV6IGF0dGVuZHJlIHF1J3VuIG1vZMOpcmF0ZXVyIGVudHJlIGRhbnMgbGEgc2FsbGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5NyIgbmFtZT0iY2FsZW5kYXIgYnV0dG9uIj4KKyAgICA8dmFsdWU+QW5udWxlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTgiIG5hbWU9ImNhbGVuZGFyIGJ1dHRvbiI+CisgICAgPHZhbHVlPlNhdXZlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTkiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPkpvdXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAwIiBuYW1lPSJjYWxlbmRhciBjb21wb25lbnQiPgorICAgIDx2YWx1ZT5Nb2lzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwMSIgbmFtZT0iY2FsZW5kYXIgY29tcG9uZW50Ij4KKyAgICA8dmFsdWU+QW5uw6llPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwMiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkFqb3V0ZXIgdW4gZmljaGllcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDMiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Bam91dGVyIHVuIGRvc3NpZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA0IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+UmFmcmFpY2hpcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDUiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Qb3ViZWxsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDYiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5NZXMgZmljaGllcnMgcGVyc29ubmVsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDciIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5MZXMgZmljaGllcnMgZGUgbGEgc2FsbGUgKFB1YmxpYyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA4IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+QWpvdXRlciB1biBmaWNoaWVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwOSIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkFqb3V0ZXIgdW4gZG9zc2llcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTAiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5TdXBwcmltZXIgdW4gZG9zc2llcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTEiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Nb2RpZmllciBsZSBub208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzEyIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+Tm91dmVhdSBkb3NzaWVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMyIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkV0ZXMtdm91cyBzw7tyIGRlIHZvdWxvaXIgc3VwcHJpbWVyIGNldCBpdGVtID88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE0IiBuYW1lPSJ1c2VyIGFkbWluIj4KKyAgICA8dmFsdWU+UmVjaGVyY2hlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxNSIgbmFtZT0idXNlciBhZG1pbiI+CisgICAgPHZhbHVlPlJlY2hlcmNoZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTYiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5PdXZyaXIgbGUgZG9jdW1lbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE3IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+TW9udHJlciB0b3VzIGxlcyBmaWNoaWVycyAoQXJib3Jlc2NlbmNlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTgiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5GZXJtZXIgbGUgZG9jdW1lbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE5IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+U3VwcHJpbWVyIGxlIGZpY2hpZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIwIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+VGFibGVhdSBibGFuYyBub24gYXV0b3Jpc8OpLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjEiIG5hbWU9InByb3BlcnR5IHBhbmVsIj4KKyAgICA8dmFsdWU+UHJvcHJpw6l0w6lzIERvY3VtZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyMiIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+K25ldCArbG9uZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjMiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPmNvbnNlaWxsw6k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI0IiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5VbiB1dGlsaXNhdGV1ciBzb3VoYWl0ZSBwYXJ0YWdlciBzb24gw6ljcmFuLiBWb3VsZXotdm91cyBsZSB2b2lyID88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI1IiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5Wb3VzIHBhcnRhZ2V6IGFjdHVlbGxlbWVudCB2b3RyZSDDqWNyYW4uIFBvdXIgYXJyw6p0ZXIgY2UgcGFydGFnZSwgY2xpcXVleiBzdXIgbGUgYm91dG9uIFNvcnRpZSBkZSBsYSBmZW7DqnRyZSBkZSBwYXJ0YWdlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjYiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPlNlc3Npb24gZGUgcGFydGFnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjciIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPlZvdXMgcGFydGFnZXogZMOpasOgIHZvdHJlIMOpY3JhbiAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyOCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5WdWUgZCfDqWNyYW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI5IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlNvcnRpZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzAiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UGFydGFnZSBkJ8OpY3JhbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzEiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+Q2xpcXVleiBzdXIgUGFydGFnZXIgcG91ciBwdWJsaWVyIHZvdHJlIMOpY3JhbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzIiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UGFydGFnZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMzIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkFycsOqdGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5Tw6lsZWN0aW9ubmVyIGxhIHBhcnRpZSBkJ8OpY3JhbiA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5DaGFuZ2VyIGxhIGxhcmdldXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM2IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkxhIHNlc3Npb24gZGUgcGFydGFnZSBlc3QgdGVybWluw6llICE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM3IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkNoYW5nZXIgbGEgaGF1dGV1cjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+TWFyZ2UtWDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzkiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+TWFyZ2UtWTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDAiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+TGFyZ2V1ciA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0MSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5IYXV0ZXVyIDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQyIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkxhIGNvbm5lY3Rpb24gYSDDqXTDqSBmZXJtw6llIHBhciBsZSBzZXJ2ZXVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0MyIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5Bbm51bGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NCIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT4rIG5ldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDUiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+U2kgdm91cyBmZXJtZXogY2V0dGUgc2Vzc2lvbiB2b3VzIG5lIHBvdXJyZXogcGx1cyByZWRlbWFycmVyIGxlIHBhcnRhZ2UgcG91ciBjZXR0ZSBzZXNzaW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDYiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+Q29uZmlybWV6IGxhIGZlcm1ldHVyZSBkZSBjZXR0ZSBzZXNzaW9uIGRlIHBhcnRhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ3IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPkVjcmFuIHBhcnRhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ4IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPkVucmVnaXN0cmVtZW50IGRlIGxhIHNlc3Npb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ5IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+TmF2aWdhdGlvbiBjb2xsYWJvcmF0aXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MCIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPk91cHMuLi4gRmlyZWZveCBldCBXaW5kb3dzIG5lIHBlcm1ldHRlbnQgcGFzIHVuZSBib25uZSBuYXZpZ2F0aW9uIGNvbGxhYm9yYXRpdmUuIFZldWlsbGV6IHV0aWxpc2VyIHVuIGF1dHJlIG5hdmlnYXRldXIgcG91ciB1dGlsaXNlciBjZXR0ZSBmb25jdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUxIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+UHLDqWPDqWRlbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUyIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+U3VpdmFudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTMiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5SZWNoYXJnZW1lbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU0IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+QWNjdWVpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTUiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5DaGFyZ2VtZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1NiIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPkFqb3V0ZXIgY2Ugc2l0ZSB3ZWIgY29tbWUgc2l0ZSBwYXIgZMOpZmF1dCBwb3VyIHZvdHJlIHByb2ZpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTciIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5UZXN0IFNldHVwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1OCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlRlc3RleiB2b3RyZSBtaWNybyBldCB2b3RyZSBjYW3DqXJhIGF2YW50IGQnZW50cmVyIGRhbnMgbGEgcsOpdW5pb24gZW4gZW5yZWdpc3RyYW50IHF1ZWxxdWVzIHNlY29uZGVzLiBWb3VzIHBvdXJyZXogYWxvcnMgcmVqb3VlciB2b3RyZSBlbnJlZ2lzdHJlbWVudCBwb3VyIHbDqXJpZmljYXRpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1OSIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPk5lIHBsdXMgbW9udHJlciBjZSB0ZXN0IChtb2RpZmlhYmxlIGRhbnMgbGUgcHJvZmlsKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjAiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5Bbm51bGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MSIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPkTDqWJ1dCBkZSByw6l1bmlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjIiIG5hbWU9ImVkaXQgdmlkZW8gc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5OZSBwbHVzIHBvc2VyIGNldHRlIHF1ZXN0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MyIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlJFQzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjQiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5QTEFZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NSIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlZvdXMgcG91dmV6IGNvbnRpbnVlciBzYW5zIHRlc3RlciBzaSB2b3VzIG5lIHBlbnNleiBwYXMgcHVibGllciB2b3RyZSB2b2l4IG91IHZvdHJlIHZpZMOpby4gTGVzIHBhcnRpY2lwYW50cyBzYW5zIGF1ZGlvIG91IHZpZMOpbyBwZXV2ZW50IHV0aWxpc2VyIGxlIHRhYmxlYXUgYmxhbmMsIHBhcnRhZ2VyIGxldXIgw6ljcmFuIG91IMOpY3JpcmUgZGVzIG1lc3NhZ2VzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjYiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5TVE9QPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NyIgbmFtZT0iNzY3Ij4KKyAgICA8dmFsdWU+Tml2ZWF1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2OCIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPkNsaXF1ZXIgc3VyIETDqWJ1dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjkiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5Db21tZW5jZXIgbGEgcsOpdW5pb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzcwIiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+Q29tbWVuY2VyIGxhIGNvbmbDqXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MSIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPkNob2lzaXIgbGEgc2FsbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzcyIiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+QXV0by10ZXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MyIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPkNvbW1lbmNlciBsYSByw6l1bmlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzQiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5DaHJvbm9sb2dpZSBkJ2VtcGxvaSA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NSIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPkTDqWJ1dCBkJ2VucmVnLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzYiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5OZSBwYXMgbW9udHJlciBsZSB0ZXN0IGF1ZGlvL3ZpZMOpbyAoRW5yZWdpc3RyZW1lbnQpIGF2YW50IGQnZW50cmVyIGVuIHLDqXVuaW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzciIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT5TYWxsZXMgcHVibGlxdWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3OCIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPkxlcyBzYWxsZXMgcHVibGlxdWVzIHNvbnQgYWNjZXNzaWJsZXMgw6AgdG91cyBsZXMgdXRpbGlzYXRldXJzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzkiIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT5TYWxsZXMgcHJpdsOpZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgwIiBuYW1lPSJQcml2YXRlIFJvb21zIj4KKyAgICA8dmFsdWU+TGVzIHNhbGxlcyBwcml2w6llcyBuZSBzb250IGFjY2Vzc2libGVzIHF1J2F1eCB1dGlsaXNhdGV1cnMgZGUgbCdvcmdhbmlzYXRpb24gcG91ciBsYXF1ZWxsZSBlbGxlcyBvbnQgw6l0w6kgY3LDqcOpZXMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MSIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPk1lcyBzYWxsZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgyIiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+SWNpIGxlcyBzYWxsZXMgc29udCBjcsOpw6llcyBwb3VyIHVuIHVzYWdlIHBlcnNvbm5lbC4gRWxsZXMgc29udCBjcsOpw6llcyBwYXIgbGUgY2FsZW5kcmllciBldCBvbnQgdW5lIGRhdGUgZGUgZMOpYnV0IGV0IGRlIGZpbi4gRWxsZXMgbmUgc29udCBsaXN0w6llcyBpY2kgcXVlIHRhbnQgcXUnZWxsZXMgc29udCB2YWxpZGVzIGRhbnMgbGUgam91ciBKIChhdWpvdXJkJ2h1aSkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MyIgbmFtZT0icmVzdHJpY3RlZCByb29tIj4KKyAgICA8dmFsdWU+Vm91cyBkZXZleiDDqnRyZSBtb2TDqXJhdGV1ciBwb3VyIGZhaXJlIGNlbGEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NCIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT5EZW1hbmRlciBsYSBtb2TDqXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODUiIG5hbWU9Im1lbnUgb3B0aW9uIj4KKyAgICA8dmFsdWU+RGVtYW5kZXIgbCdhY2PDqHMgYXUgdGFibGVhdSBibGFuYzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODYiIG5hbWU9Im1lbnUgb3B0aW9uIj4KKyAgICA8dmFsdWU+RGVtYW5kZXIgbCdhY2PDqHMgw6AgY2Ftw6lyYS9taWNybzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODciIG5hbWU9ImVycm9yIG1lc3NhZ2Ugc29hcCBzZWN1cmUgbG9naW4iPgorICAgIDx2YWx1ZT5DZSBoYWNoYWdlIGVzdCBkw6lqw6AgdXRpbGlzw6kuIFZvdXMgbmUgcG91dmV6IGwndXRpbGlzZXIgZGV1eCBmb2lzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODgiIG5hbWU9ImRhc2hib2FyZCBidXR0b24iPgorICAgIDx2YWx1ZT5ERUJVVDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODkiIG5hbWU9ImV4aXQgY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPlNvcnRpZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTAiIG5hbWU9ImNvbmZlcmVuY2UgdmlldyI+CisgICAgPHZhbHVlPlZvdWxlei12b3VzIHLDqWVsbGVtZW50IHNvcnRpciA/IFZvdXMgZGV2cmlleiBwZXV0LcOqdHJlIHByw6lhbGFibGVtZW50IG5ldHRveWVyIGxlcyBkb2N1bWVudHMgY2hhcmfDqXMsIGxlIHRhYmxlYXUgYmxhbmMgb3UgbGVzIG1lc3NhZ2VzIGluc3RhbnRhbsOpcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkxIiBuYW1lPSJjb25mZXJlbmNlIHZpZXciPgorICAgIDx2YWx1ZT5Tb3J0aWUgZGUgcsOpdW5pb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkyIiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT5TYWxsZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkzIiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT5DaG9pc2lyIHVuZSBzYWxsZSBwb3VyIGxhIHLDqXVuaW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5NCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5JbCB5IGEgdW4gw6l2w6huZW1lbnQgbm9uIHNhdXZlZ2FyZMOpIGRhbnMgbGUgY2FsZW5kcmllci4gUy5WLlAuIHNhdXZlZ2FyZGV6LWxlIG91IHN1cHByaW1lei1sZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk1IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPlMuVi5QLiBham91dGV6IGF1IG1vaW5zIHVuIHBhcnRpY2lwYW50IMOgIHZvdHJlIHLDqXVuaW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5NiIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Wb3VsZXotdm91cyByw6llbGxlbWVudCBzdXBwcmltZXIgY2V0IMOpdsOobmVtZW50ID88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk3IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkF0dGVudGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTgiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QWpvdXRlciB1biDDqXbDqG5lbWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTkiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+am91cjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDAiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+c2VtYWluZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDEiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+bW9pczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDIiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RGVzY3JpcHRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAzIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPlBhcnRpY2lwYW50czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSwgdm90cmUgcGxhdGVmb3JtZSBkZSBjb25mw6lyZW5jZSB3ZWIuIFN1aXZleiBsZXMgaW5zdHJ1Y3Rpb25zLiZsdDtici8mZ3Q7Q2xpcXVleiBzdXIgbGUgYm91dG9uICdEw6lidXQnIHBvdXIgY29tbWVuY2VyIHVuZSByw6l1bmlvbiBpbW3DqWRpYXRlbWVudCBvdSBhbGxleiBhdSBjYWxlbmRyaWVyIHBvdXIgcGxhbmlmaWVyIHVuZSByw6l1bmlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA1IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5QbGFuaWZpZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA2IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+UG91ciBwbGFuaWZpZXIgdW5lIHLDqXVuaW9uIHZvdXMgcG91dmV6IGNyw6llciB1biDDqXbDqW5lbWVudCBkYW5zIGxlIGNhbGVuZHJpZXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNyIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPkJlc29pbiBkJ2FpZGUgPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDgiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5BY2PDqHMgcsOpc2VydsOpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwOSIgbmFtZT0ibHpjYWxlbmRlciI+CisgICAgPHZhbHVlPlJlY2hlcmNoZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTAiIG5hbWU9Imx6Y2FsZW5kZXIiPgorICAgIDx2YWx1ZT5Bam91dGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMSIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPklsIG4neSBhIHBhcyBkJ3V0aWxpc2F0ZXVyIHPDqWxlY3Rpb25uw6kuIFMuVi5QLiBjaG9pc2lzc2V6IHVuIHV0aWxpc2F0ZXVyIGRhbnMgbGEgbGlzdGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMiIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPkFqb3V0ZXIgdW4gcGFydGljaXBhbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEzIiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+U2F1dmVnYXJkZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTQiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5TdXBwcmltZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE1IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RMOpdGFpbHMgZGUgbCfDqXbDqG5lbWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTYiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5Nb2TDqXJhdGV1cnMgcGFyIGTDqWZhdXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+U3VwZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE4IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE5IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+Tm9tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyMCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkUtbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjEiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5Bam91dGVyIHVuIG5vdXZlYXUgbW9kw6lyYXRldXIgcGFyIGTDqWZhdXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIyIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+Qydlc3QgbGUgc3VwZXIgbW9kw6lyYXRldXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIzIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+U2kgbGEgc2FsbGUgZXN0IG1vZMOpcsOpZSwgdW4gdXRpbGlzYXRldXIgYXZlYyBsZSBuaXZlYXUgbW9kw6lyYXRldXIgb3UgYWRtaW5pc3RyYXRldXIgZXN0IGF1dG9tYXRpcXVlbWVudCBtb2TDqXJhdGV1ciBzJ2lsIHBhcnRpY2lwZSDDoCBsYSByw6l1bmlvbi4gU2kgdm91cyBuZSB2b3VsZXogcGFzIGRlIGNlIGZvbmN0aW9ubmVtZW50IGV0IHF1ZSB2b3VsZXogcXUndW4gY2VydGFpbiB1dGlsaXNhdGV1ciBkZXZpZW5uZSBtb2TDqXJhdGV1ciwgdXRpbGlzZXogbCdvcHRpb24gbW9kw6lyYXRldXIgcGFyIGTDqWZhdXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPlVuIHN1cGVyIG1vZMOpcmF0ZXVyIGVzdCB0b3Vqb3VycyBtb2TDqXJhdGV1ciBxdWFuZCBpbCBwYXJ0aWNpcGUgw6AgdW5lIHLDqXVuaW9uLCBldCBwZXJzb25uZSBuZSBwZXV0IGx1aSByZXRpcmVyIGNlIGRyb2l0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkFwcGxpcXVlciBsYSBzdXBlci1tb2TDqXJhdGlvbiDDoCBjZXQgdXRpbGlzYXRldXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI2IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+UmV0aXJlciBsYSBzdXBlci1tb2TDqXJhdGlvbiDDoCBjZXQgdXRpbGlzYXRldXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjgiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5TaSB2b3VzIHNww6ljaWZpZXogdW5lIG9yZ2FuaXNhdGlvbiBwb3VyIGxhIHLDqXVuaW9uLCBzZXVscyBsZXMgdXRpbGlzYXRldXJzIHF1aSBhcHBhcnRpZW5uZW50IMOgIGNldHRlIG9yZ2FuaXNhdGlvbiB5IG9udCBhY2PDqHMgKFMnaWwgbmUgcydhZ2l0IHBhcyBkJ3VuZSByw6l1bmlvbiBwdWJsaXF1ZSAhKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjkiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5Nb2RlcmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzMCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkxpbWl0YXRpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzMSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPk9yZ2FuaXNhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzIiIG5hbWU9ImNvbmZpcm0gYWN0aW9uIj4KKyAgICA8dmFsdWU+RXRlcy12b3VzIHPDu3IgPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzMiIG5hbWU9ImNvbmZpcm0gZGVsZXRlIj4KKyAgICA8dmFsdWU+Vm91bGV6LXZvdXMgcsOpZWxsZW1lbnQgc3VwcHJpbWVyIGNldCBpdGVtID8gVm91cyBkZXZleiB1dGlsaXNlciBsZSBib3V0b24gU2F1dmVnYXJkZSBwb3VyIGdhcmRlciBsZXMgbW9kaWZpY2F0aW9ucyAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNCIgbmFtZT0idXNlciBjaG9vc2UgZXJyb3IiPgorICAgIDx2YWx1ZT5BdWN1biB1dGlsaXNhdGV1ciBzw6lsZWN0aW9ubsOpLiBTLlYuUC4gc8OpbGVjdGlvbm5leiBlbiB1biBhdmFudCBkZSBsJ2Fqb3V0ZXIgITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzUiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5Bam91dGVyIHVuIG5vdXZlYXUgbW9kw6lyYXRldXIgcGFyIGTDqWZhdXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM2IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+Vm91bGV6LXZvdXMgcXVlIGNldCB1dGlsaXNhdGV1ciBzb2l0IHN1cGVyLW1vZMOpcmF0ZXVyID8gVW4gc3VwZXItbW9kw6lyYXRldXIgbidlc3QgcGFzIHNldWxlbWVudCBtb2TDqXJhdGV1ciBkZSBsYSByw6l1bmlvbiwgc29uIHLDtGxlIG5lIHBldXQgZGUgcGx1cyDDqnRyZSBlbmxldsOpIHBhciBhdWN1biBhdXRyZSBtb2TDqXJhdGV1ci4gVm91cyBkZXZleiBzYXV2ZWdhcmRlciBsYSBzYWxsZSBwb3VyIHNhdXZlZ2FyZGVyIGNlcyBwYXJhbcOodHJlcyAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNyIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPlZvdWxlei12b3VzIHJldGlyZXIgbGEgc3VwZXItbW9kw6lyYXRpb24gw6AgY2V0IHV0aWxpc2F0ZXVyID8gVm91cyBkZXZleiBzYXV2ZWdhcmRlciBsYSBzYWxsZSBwb3VyIHNhdXZlZ2FyZGVyIGNlcyBwYXJhbcOodHJlcyAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzOCIgbmFtZT0ic3VwZXIgbW9kZXJhdG9yIj4KKyAgICA8dmFsdWU+Q2V0IHV0aWxpc2F0ZXVyIGVzdCB1biBzdXBlci1tb2TDqXJhdGV1ci4gVm91cyBuZSBwb3V2ZXogcGFzIGVubGV2ZXIgbGEgbW9kw6lyYXRpb24gw6AgdW4gc3VwZXItbW9kw6lyYXRldXIgITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzkiIG5hbWU9ImNvbmZpcm0gZGVsZXRlIj4KKyAgICA8dmFsdWU+Vm91bGV6LXZvdXMgcsOpZWxsZW1lbnQgc3VwcHJpbWVyIGNlIGZpY2hpZXIvZG9zc2llciA/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0MCIgbmFtZT0iY29uZmlybSBkZWxldGUiPgorICAgIDx2YWx1ZT5TdXBwcmltZXIgRmljaGllci9Eb3NzaWVyID88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQxIiBuYW1lPSJzYWx1dGF0aW9uIj4KKyAgICA8dmFsdWU+TWxsZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQyIiBuYW1lPSJzYWx1dGF0aW9uIj4KKyAgICA8dmFsdWU+RHIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0MyIgbmFtZT0icHJvcGVydHkgcGFuZWwgd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPlByb3ByacOpdMOpczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDQiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5Nb250cmVyIGxhIHNvdXJpcyBzdXIgbCfDqWNyYW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ1IiBuYW1lPSJwdWJsaXNoIG9wdGlvbiI+CisgICAgPHZhbHVlPlBhcnRhZ2VyIGwnYXVkaW8gYXZlYyBsJ2FwcGxldCBTSVA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ2IiBuYW1lPSJwdWJsaXNoIG9wdGlvbiI+CisgICAgPHZhbHVlPlBhcnRhZ2VyIGwnYXVkaW8gYXZlYyBTSVAgZXQgbGEgdmlkw6lvIGF2ZWMgRmxhc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ3IiBuYW1lPSJkb2N1bWVudCBwYW5lbCI+CisgICAgPHZhbHVlPlpvb20gMTAwJTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDgiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlZvaXIgw6ljcmFuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0OSIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+TCd1dGlsaXNhdGV1cjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTAiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPnNvdWhhaXRlIHBhcnRhZ2VyIHNvbiDDqWNyYW4uIFZvdWxlei12b3VzIGxlIHZvaXIgPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTEiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkZlcm1lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTIiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5ab29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MyIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPkxhIHNlc3Npb24gYSDDqXTDqSBmZXJtw6llIHBhciBsJ3V0aWxpc2F0ZXVyIHF1aSBwYXJ0YWdlYWl0IHNvbiDDqWNyYW4hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1NCIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPlBhdXNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1NSIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPk5vdXZlYXUgcGFydGFnZSBkJ8OpY3JhbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTYiIG5hbWU9InByZXNlbnRlciBtaW5pIGljb24iPgorICAgIDx2YWx1ZT5Sw6lkdWlyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTciIG5hbWU9InByZXNlbnRlciBtaW5pIGljb24iPgorICAgIDx2YWx1ZT5NYXhpbWlzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU4IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5WaWTDqW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU5IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5DaHJvbm9sb2dpZSBkZSBsJ2VucmVnaXN0cmVtZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TWVzIGVucmVnaXN0cmVtZW50czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjEiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkVucmVnaXN0cmVtZW50cyBwdWJsaWNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+SW5mbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjMiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk5vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjQiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkR1csOpZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjUiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkRhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5wYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY3IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5QTEFZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2OCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TWFpbiAtIFZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2OSIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+RW5yZWdpc3RyZW1lbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcwIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Wb3VzIHBvdXZleiBlbnJlZ2lzdHJlciBldCBwYXJ0YWdlciB2b3RyZSDDqWNyYW4gZW4gbcOqbWUgdGVtcHMuIFBvdXIgcGVybWV0dHJlIGF1eCBhdXRyZXMgZGUgdm9pciB2b3RyZSDDqWNyYW4sIGNsaXF1ZXogbGUgYm91dG9uIFBhcnRhZ2VyIGVuIGhhdXQuIFBvdXIgc2V1bGVtZW50IGVucmVnaXN0cmVyIGxhIHNlc3Npb24sIGlsIHN1ZmZpdCBkZSBjbGlxdWVyIHN1ciBEw6ltYXJyZXIgbCdlbnJlZ2lzdHJlbWVudC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcxIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Ew6ltYXJyZXIgbCdlbnJlZ2lzdHJlbWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzIiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkFycsOqdGVyIGwnZW5yZWdpc3RyZW1lbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODczIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Uw6lsw6ljaGFyZ2VyIGxlIGZpY2hpZXIgRkxWPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3NCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+U2FsbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc1IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Kb3VlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzYiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlN0b3A8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc3IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5MJ3V0aWxpc2F0ZXVyIGEgc29uIG1pY3JvIGFjdGl2w6k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc4IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkFycsOqdGVyIGxlIHBhcnRhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc5IiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPkFjY2VwdGVyIGxlcyBxdWVzdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgwIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPkTDqXNhY3RpdmV6IGNlY2kgcG91ciDDqXZpdGVyIHF1ZSBsZXMgdXRpbGlzYXRldXJzIG5lIHZvdXMgZGlzdHVyYmVudCBkYW5zIGxhIHNhbGxlLiBDZWxhIGEgcG91ciBlZmZldCBkZSBtYXNxdWVyIGxlIGJvdXRvbiBwZXJtZXR0YW50IGRlIGRlbWFuZGVyIGxhIG1vZMOpcmF0aW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODEiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+RHJvaXRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+VMOpbMOpY2hhcmdlciBsZSBmaWNoaWVyIEFWSTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODMiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkZMVjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODQiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkFWSTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODUiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkVjcmFuIHZpZMOpbyBicnV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QXVkaW8gc2V1bGVtZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+SWwgeSBhIGV1IGRlcyBlcnJldXJzIGR1cmFudCBsZSB0cmFpdGVtZW50IGRlIGwnZW5yZWdpc3RyZW1lbnQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4OCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TCdlbnJlZ2lzdHJlbWVudCBuJ2VzdCBwYXMgZW5jb3JlIHByw6p0IMOgIMOqdHJlIHZpc2lvbm7DqS4gVmV1aWxsZXogcsOpZXNzYXllciBkYW5zIHF1ZWxxdWVzIG1pbnV0ZXMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4OSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TG9nIDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkwIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5NZXNzYWdlIGRlIGwnZW5yZWdpc3RyZXVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+T2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkyIiBuYW1lPSJzaXAgYXBwbGV0Ij4KKyAgICA8dmFsdWU+TCdhcHBsZXQgU0lQIG4nZXN0IHBhcyBwcsOqdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTMiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5QYXJhbcOodHJlIGNvbXB0ZSBTSVA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk0IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+UGFyYW3DqHRyZXMgU0lQIHBvdXIgY2hhcXVlIHV0aWxpc2F0ZXVyLiBWb3VzIHBvdXZleiBhY3RpdmVyIG91IGTDqXNhY3RpdmVyIFNJUCB2aWEgQWRtaW5pc3RyYXRpb24gJmd0OyBDb25maWd1cmF0aW9uIChDaGFtcCA6IGVuYWJsZV9zaXApLiBMZXMgZG9ubsOpZXMgU0lQIHBvdXIgY2hhcXVlIHV0aWxpc2F0ZXVyIGRldnJhaWVudCDDqnRyZSBjcsOpw6llcyBhdXRvbWF0aXF1ZW1lbnQuIFZvdXMgcG91dmV6IHJlY3LDqWVyIGxlcyBkb25uw6llcyBlbiBjb2NoYW50ICJSZWfDqW7DqXJlciBsZXMgZG9ubsOpZXMgU0lQIjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTUiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TSVAtVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTYiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TaXAtUGFzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTciIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TaXAtQXV0aC1JZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTgiIG5hbWU9InNpcCBzdGF0dXMgbWVzc2FnZSI+CisgICAgPHZhbHVlPkxhIGNvbm5leGlvbiDDoCBsYSBwYXNzZXJlbGxlIFNJUCBhIMOpY2hvdcOpLiBWb3VzIGRldnJpZXIgdsOpcmlmaWVyIGxlcyBkb25uw6llcyBkJ2F1dGVudGlmaWNhdGlvbiBkZSB2b3RyZSBmb3Vybmlzc2V1ciBTSVAgZXQgbGVzIGRvbm7DqWVzIGRlcyBjb21wdGVzIFNJUCBkZSBjaGFxdWUgdXRpbGlzYXRldXIuIEVuIHRhbnQgcXUnYWRtaW5pc3RyYXRldXIgdm91cyBwb3V2ZXogdG91am91cnMgdm91cyBjb25uZWN0ZXIgZXQgdsOpcmlmaWVyIGxhIGNvbmZpZ3VyYXRpb24uIEVuIHRhbnQgcXUndXRpbGlzYXRldXIgb3UgbW9kw6lyYXRldXIgdm91cyBuZSBwb3VycmV6IHBhcyBpbnRlcnJhZ2lyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTkiIG5hbWU9InNpcCBzdGF0dXMgbWVzc2FnZSI+CisgICAgPHZhbHVlPkxhIGNvbm5leGlvbiDDoCBsYSBwYXNzZXJlbGxlIFNJUCBhIMOpY2hvdcOpLiBWZXVpbGxlciBjb250YWN0ZXIgdm90cmUgw6lxdWlwZSBkZSBzdXBwb3J0ICE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAwIiBuYW1lPSJzaXAgc3RhdHVzIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Db25uZXhpb24gw6AgbGEgcGFzc2VyZWxsZSBTSVAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAxIiBuYW1lPSJzaXAgc3RhdHVzIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Db25uZXhpb24gw6AgbGEgcGFzc2VyZWxsZSBTSVAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAyIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Nb250cmVyIGxlIGpvdXJuYWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAzIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Kb3VybmFsaXNlciBsZXMgbWVzc2FnZXMgZGUgcG9zdCB0cmFpdGVtZW50IGRlIGwnZW5yZWdpc3RyZXVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwNCIgbmFtZT0ic2lwIGxvZ2luIj4KKyAgICA8dmFsdWU+TWVzc2FnZSBkZSBsJ2FwcGxldCBTSVA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA1IiBuYW1lPSJzaXAgbG9naW4iPgorICAgIDx2YWx1ZT5MJ2FwcGxldCBTSVAgbidlc3QgcGFzIHByw6p0LiBBY2NlcHRleiBsJ2FwcGxldCBldCBjbGlxdWV6IG9rICE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA2IiBuYW1lPSJtb2RlcmF0b3IgcG9wIHVwIj4KKyAgICA8dmFsdWU+T2J0ZW5pciBsYSBtb2TDqXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDciIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5TYXV2ZWdhcmRlciBsZXMgbW9kaWZpY2F0aW9ucyBkZSBsYSByw6l1bmlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDgiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5MYSByw6l1bmlvbiBhIMOpdMOpIG1vZGlmacOpZS4gVm91bGV6LXZvdXMgc2F1dmVnYXJkZXIgbGVzIGNoYW5nZW1lbnRzID8gJmx0O2JyLyZndDsmbHQ7YnIvJmd0O1RvdXMgbGVzIHBhcnRpY2lwYW50cyDDoCBsYSByw6l1bmlvbiByZWNldnJvbnQgdW4gZS1tYWlsIGF2ZWMgbGEgZGF0ZSBldCBsJ2hldXJlIG1pc2VzIMOgIGpvdXIgKGNlbGEgZMOpcGVuZCBkdSB0eXBlIGRlIG5vdGlmaWNhdGlvbiBwb3VyIGNldHRlIHLDqXVuaW9uKS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA5IiBuYW1lPSJmbHYgcmVjb3JkZXIgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPlBvdXIgYWNjw6lkZXIgw6AgZCdhdXRyZXMgZW5yZWdpc3RyZW1lbnRzIHZvdXMgZGV2ZXogdm91cyBjb25uZWN0ZXIgw6AgbCdhcHBsaWNhdGlvbiAkQVBQX05BTUUgQXBwbGljYXRpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMCIgbmFtZT0iaW50ZXJ2aWV3IHZpZGVvIHBvZCI+CisgICAgPHZhbHVlPkNob2lzaXNzZXogbCd1dGlsaXNhdGV1ciBwb3VyIGNldHRlIHZpZMOpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTEiIG5hbWU9ImludGVydmlldyB2aWRlbyBjaG9vc2UgdXNlciI+CisgICAgPHZhbHVlPlV0aWxpc2F0ZXVycyBkaXNwb25pYmxlcyBwb3VyIGNlIGNvbnRlbmV1cjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTIiIG5hbWU9ImludGVydmlldyBpbmZvIj4KKyAgICA8dmFsdWU+Vm91cyDDqnRlcyB1biBtb2TDqXJhdGV1ciBkYW5zIGNldHRlIHNhbGxlIGQnaW50ZXJ2aWV3LiBWb3VzIHBvdXZleiBkw6ljaWRlciBkZSBxdWkgcGFybGUgZXQgdm91cyBwb3V2ZXogZMOpbWFycmVyL2FycsOqdGVyIGwnZW5yZWdpc3RyZW1lbnQgZGUgbGEgc2Vzc2lvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTEzIiBuYW1lPSJpbnRlcnZpZXcgYnV0dG9uIHJlY29yZGluZyI+CisgICAgPHZhbHVlPkTDqW1hcnJlciBsJ2VucmVnaXN0ci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE0IiBuYW1lPSJpbnRlcnZpZXcgYnV0dG9uIHJlY29yZGluZyI+CisgICAgPHZhbHVlPkFycsOqdGVyIGwnZW5yZWdpc3RyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTUiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TCdlbnJlZ2lzcmVtZW50IGRlIGwnaW50ZXJ2aWV3IGVzdCBkw6lqw6AgZMOpbWFycsOpLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTYiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TCdlbnJlZ2lzdHJlbWVudCBlc3QgZMOpasOgIGFycsOqdMOpIG91IG4nYSBwYXMgZW5jb3JlIGTDqW1hcnLDqS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE3IiBuYW1lPSJpbnRlcnZpZXcgcmVjb3JkaW5nIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5MJ2VucmVnaXN0cmVtZW50IHBvdXIgY2V0dGUgaW50ZXJ2aWV3IGEgZMOpasOgIGTDqW1hcnLDqSAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxOCIgbmFtZT0iaW50ZXJ2aWV3IGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Bbm51bGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxOSIgbmFtZT0iaW50ZXJ2aWV3IGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5MZSBwb3N0IHRyYWl0ZW1lbnQgZCd1bmUgaW50ZXJ2aWV3IGR1cmUgNSBtaW51dGVzIHBhciBtaW51dGUgZCdpbnRlcnZpZXcuIEwnYXZhbmNlbWVudCBhY3R1ZWwgZHUgcG9zdCB0cmFpdGVtZW50IGVzdCA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyMCIgbmFtZT0ic2lwIGNyZWF0aW9uIj4KKyAgICA8dmFsdWU+Vm91cyBkZXZleiBlbnRyZXIgdm90cmUgbW90IGRlIHBhc3NlIMOgIG5vdXZlYXUgcG91ciBjcsOpZXIgYXV0b21hdGlxdWVtZW50IGxlcyBkb25uw6llcyBTSVA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIxIiBuYW1lPSJzaXAgY3JlYXRpb24iPgorICAgIDx2YWx1ZT5SZWfDqW7DqXJlciBsZXMgZG9ubsOpZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIyIiBuYW1lPSJmaWxlZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Wb3VzIG5lIHBvdXZleiBkw6lwbGFjZXIgY2UgZmljaGllciBvdSBkb3NzaWVyIGRhbnMgc29uIHByb3ByZSBzb3VzLWRvc3NpZXIgITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjMiIG5hbWU9ImZpbGUgZXhwbG9yZXIgIj4KKyAgICA8dmFsdWU+VGFpbGxlIGR1IGRpc3F1ZSBsb2NhbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjQiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5UYWlsbGUgZHUgZGlzcXVlIHB1YmxpYzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjUiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5QYXJhbcOodHJlcyBkZSBsYSBsaWNlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNiIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPlZvdXMgcG91dmV6IHNvaXQgbGllciBsJ3V0aWxpc2F0ZXVyIMOgIHVuZSBkYXRlIGQnZXhwaXJhdGlvbiBvdSDDoCB1biBub21icmUgZGUgbWludXRlcyBsb3JzcXVlIHZvdXMgYWN0aXZleiBsYSBsaWNlbmNlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjciIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5Ww6lyaWZpZXIgbGEgbGljZW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjgiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5Gb3JmYWl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyOSIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPkRhdGUgZCdleHBpcmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMCIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPlNlY29uZGVzIHJlc3RhbnRlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzEiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5UZW1wcyB0b3RhbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzIiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlZvdHJlIGxpY2VuY2UgYSBleHBpcsOpLiBWb3VzIGRldmV6IHNvaXQgYWNoZXRlciBkZXMgbWludXRlcyAocGFpZW1lbnQgw6AgbGEgbWludXRlKSBzb2l0IHVuIHZvbHVtZSBmb3JmYWl0YWlyZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMzIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5DbGlxdWV6IGV0IGFjaGV0ZXo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM0IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5UZW1wcyByZXN0YW50IHN1ciB2b3RyZSBjb21wdGUgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzUiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkluZm9ybWF0aW9uIGxpY2VuY2UgdXRpbGlzYXRldXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM2IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5JbmZvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzNyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+RmVybWVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzOCIgbmFtZT0ibGljZW5zZS1pbmZvIj4KKyAgICA8dmFsdWU+Vm90cmUgbGljZW5jZSBhIGV4cGlyw6kuIFZvdXMgZGV2ZXogc29pdCBhY2hldGVyIGRlcyBtaW51dGVzIChwYWllbWVudCDDoCBsYSBtaW51dGUpIHNvaXQgdW4gdm9sdW1lIGZvcmZhaXRhaXJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzOSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+UGFyYW3DqHRyZXMgZGUgbGEgbGljZW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDAiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlZvdXMgcG91dmV6IHNvaXQgYWNoZXRlciBkZXMgbWludXRlcyBwb3VyIGZhaXJlIGRlcyBjb25mw6lyZW5jZXMgZW4gbGlnbmUgKHBhaWVtZW50IMOgIGxhIG1pbnV0ZSkuJmx0O2JyLyZndDsmbHQ7YnIvJmd0OyBPdSBhY2hldGVyIHVuIHZvbHVtZSBmb3JmYWl0YWlyZSBkZSAzLTEyIG1vaXMuJmx0O2JyLyZndDsmbHQ7YnIvJmd0O0Vudm95ZXIgZGVzIGludml0YXRpb25zIChsaWVucyBkaXJlY3RzIHZlcnMgbGVzIHNhbGxlcyBkZSBjb25mw6lyZW5jZXMpIG91IGNyw6llciBkZXMgc2FsbGVzIGRlIGNvbmbDqXJlbmNlcyB2aWEgbGUgY2FsZW5kcmllciBwb3VyIGRlcyB1dGlsaXNhdGV1cnMgZXh0ZXJuZXMgZXN0IHNldWxlbWVudCBwb3NzaWJsZSBhdmVjIHVuIHZvbHVtZSBmb3JmYWl0YWlyZSAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QWNoZXRlciA2MCBtaW51dGVzIDksOTkgZXVyb3MgKDE2IGNlbnRzIHBhciBtaW51dGUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QWNoZXRlciA1IGhldXJlcyAxOSw5OSBldXJvcyAoNiBjZW50cyBwYXIgbWludXRlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDMiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkFjaGV0ZXIgMyBtb2lzIHBvdXIgMjksOTkgZXVyb3MgKDksOTkgZXVyb3MgcGFyIG1vaXMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QWNoZXRlciA2IG1vaXMgcG91ciAzOSw5OSBldXJvcyAoNiw2NiBldXJvcyBwYXIgbW9pcyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ1IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5QYWllbWVudCDDoCBsYSBtaW51dGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ2IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Wb2x1bWUgZm9yZmFpdGFpcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ3IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Wb3VzIGF2ZXogdW5lIGxpY2VuY2UgaWxsaW1pdMOpZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDgiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlZvdHJlIGxpY2VuY2UgZXhwaXJlcmEgw6AgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDkiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlZvdXMgYXZleiBlZmZlY3R1w6kgdW4gcGFpZW1lbnQgw6AgbGEgbWludXRlLiBJbCB2b3VzIHJlc3RlIDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUwIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5BY2hldGVyIHVuIG5vdXZlYXUgY3LDqWRpdCAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Vm91bGV6LXZvdXMgdm90cmUgcHJvcHJlIHNlcnZldXIgPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTIiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlZvdXMgdm91ZHJpZXogYXZvaXIgJEFQUF9OQU1FIGluc3RhbGzDqSBzdXIgdm90cmUgc2VydmV1ciBvdSBpbnTDqWdyw6kgZGFucyBNb29kbGUsIFN1Z2FyQ1JNLCB2b3RyZSBzaXRlIHdlYiBvdSBpbnRyYW5ldCA/IExlcyBwcml4IGNvbW1lbmNlbnQgw6AgNTAwIGV1cm9zIHBhciBpbnN0YWxsYXRpb24gITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTMiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPk91IGVudm95ZXotbm91cyB1biBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1NCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+UsOpcG9uZHJlIMOgIDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU1IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5NZXNzYWdlIDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU2IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5FbnZveWVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1NyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Q2xpcXVleiBpY2kgcG91ciBvYnRlbmlyIGRlcyBpbmZvcyBldCBsZXMgcHJpeDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTgiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkTDqXRhaWxzIGRlIGxhIGNhcnRlIGRlIGNyw6lkaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU5IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5QcsOpbm9tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2MCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Tm9tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2MSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+VHlwZSBkZSBjYXJ0ZSBkZSBjcsOpZGl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2MiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q2FydGUgVklTQTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjMiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPk1hc3RlckNhcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY0IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5EaXNjb3ZlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjUiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkFtZXJpY2FuIEV4cHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY2IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5OdW3DqXJvIGRlIGNhcnRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2NyIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+RGF0ZSBkJ2V4cGlyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY4IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5OdW3DqXJvIGRlIHbDqXJpZmljYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY5IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5BZHJlc3NlIGRlIGZhY3R1cmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+QWRyZXNzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzEiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzIiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlZpbGxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MyIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+UGF5czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzQiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkV0YXQgKHNldWxlbWVudCBVU0EpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q29kZSBwb3N0YWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc2IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5Nb250YW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NyIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U291bWV0dHJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3OCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+RXRhcGUgMTogJEFQUF9OQU1FIC0gRm9ybXVsYWlyZSBkZSBwYWllbWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzkiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkUtbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODAiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNsaXF1ZXogIlLDqWdsZXIgYXZlYyBQYXlwYWwiIHBvdXIgcGF5ZXIuJmx0O2JyLyZndDsgUGF5cGFsIGFjY2VwdGUgVklTQSwgTWFzdGVyQ2FyZCwgRGlzY292ZXIgb3UgQW1lcmljYW4gRXhwcmVzcy4gJmx0O2JyLyZndDtJbCBuZSBmYXV0IHBhcyBzJ2luc2NyaXJlIGNoZXogUGF5cGFsLiAmbHQ7YnIvJmd0O0xlcyBjaXRveWVucyBhbGxlbWFuZHMgcGV1dmVudCBhdXNzaSBwYXllciBhdmVjIHVuIGTDqWJpdCBkaXJlY3QgKFBlciBMYXN0c2NocmlmdC1FaW56dWcpLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODEiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPk1lcmNpIGQnYXZvaXIgYWNoZXTDqSAkQVBQX05BTUUuICZsdDtici8mZ3Q7ICZsdDtici8mZ3Q7IETDqHMgcXVlIG5vdXMgYXVyb25zIHJlw6d1IGxlIHBhaWVtZW50LCB2b3RyZSBjb21wdGUgc2VyYSBtaXMgw6Agam91ci4mbHQ7YnIvJmd0OyBWb3VzIHJlY2V2cmV6IHVuIGUtbWFpbCBhdmVjIHZvdHJlIGZhY3R1cmUgZW4gUERGLiZsdDtici8mZ3Q7Vm91cyBwb3V2ZXogw6lnYWxlbWVudCB2w6lyaWZpZXIgbGVzIHRyYW5zYWN0aW9ucyBwYXNzw6llcyBldCBhY3R1ZWxsZXMgZGFuc2Qgdm90cmUgcHJvZmlsLiZsdDtici8mZ3Q7Jmx0O2JyLyZndDsmbHQ7YnIvJmd0O1ZvdXMgcG91dmV6IGZlcm1lciBjZXR0ZSBmZW7DqnRyZSBtYWludGVuYW50IGV0IHJldG91cm5lciDDoCAkQVBQX05BTUUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U291bWV0dHJlIGV0IGFjaGV0ZXIgITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODMiIG5hbWU9InBheW1lbnQtZnJvbSI+CisgICAgPHZhbHVlPkNsaXF1ZXIgZXQgYWNoZXRlciAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4NCIgbmFtZT0icGF5bWVudC1mcm9tIj4KKyAgICA8dmFsdWU+RXRhcGUgMyA6IFBhaWVtZW50ICRBUFBfTkFNRSAtIFbDqXJpZmllciBsYSBjb21tYW5kZSBldCBhY2hldGVyICE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg1IiBuYW1lPSJwYXltZW50LWZyb20iPgorICAgIDx2YWx1ZT5Ob208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg2IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5QYWllbWVudCByZcOndSAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4NyIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+Qm9uam91ciw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg4IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5Ob3VzIGF2b25zIHJlw6d1IHZvdHJlIHBhaWVtZW50LiBWb3RyZSBwcm9maWwgdXRpbGlzYXRldXIgYSDDqXTDqSBtaXMtw6Atam91ci4gVm9pciB2b3RyZSBmYWN0dXJlIGNpLWF0dGFjaMOpZS4gTGEgZmFjdHVyZSBhbnNpIHF1ZSB0b3V0ZXMgbGVzIGZhY3R1cmVzIHBhc3PDqWVzIHBldXZlbnQgw6p0cmUgdMOpbMOpY2hhcmfDqWVzIGRhbnMgdm90cmUgcHJvZmlsIHV0aWxpc2F0ZXVyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODkiIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPk1lcmNpIGQndXRpbGlzZXIgJEFQUF9OQU1FITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTAiIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPlBhaWVtZW50ICRBUFBfTkFNRSByZcOndS08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkxIiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+U3RhdHV0IGRlcyBwYWllbWVudHMgZXQgdHJhbnNhY3Rpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MiIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPkhhY2hhZ2UgZGUgdHJhbnNhY3Rpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkzIiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+TWludXRlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTQiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Nb2lzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NSIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPkVVUjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTYiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TdGF0dXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk3IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+RmFjdHVyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTgiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk5IiBuYW1lPSJlcnJvci1saWNlbnNlLWZsYXQiPgorICAgIDx2YWx1ZT5Wb3VzIGRldmV6IGFjaGV0ZXIgdW4gdm9sdW1lIGZvcmZhaXRhaXJlIHBvdXIgcG91dm9pciBlbnZveWVyIGRlcyBpbnZpdGF0aW9ucyBvdSBjcsOpZXIgZGVzIHLDqXVuaW9ucyB2aWEgbGUgY2FsZW5kcmllci4gQXZlYyB1biBwYWllbWVudCDDoCBsYSBtaW51dGUgaWwgbmUgdm91cyBlc3QgcG9zc2libGUgcXVlIGQnYWNjw6lkZXIgw6AgJEFQUF9OQU1FLiBWb3VzIG5lIHBvdXZleiBwYXMgcGVybWV0dHJlIMOgIGRlcyB0aWVycyBkZSBwYXJ0aWNpcGVyIMOgIHVuZSByw6l1bmlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwMCIgbmFtZT0iZXJyb3IgdXNlciI+CisgICAgPHZhbHVlPkNldHRlIGFkcmVzc2UgZS1tYWlsIGVzdCBkw6lqw6AgdXRpbGlzw6llIHBhciB1biBhdXRyZSB1dGlsaXNhdGV1ci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwMSIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlBhcmFtw6h0cmVzIFNJUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAyIiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+TGUgbnVtw6lybyBkZSBjb25mw6lyZW5jZSBldCBQSU4gc29udCBjcsOpw6lzIGF1dG9tYXRpcXVlbWVudCB2aWEgbGEgcGFzc2VyZWxsZSBPcGVuWEcgUlBDPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDMiIG5hbWU9InJvb20tYWRtaW4iPgorICAgIDx2YWx1ZT5OdW3DqXJvIFNJUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA0IiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+UElOPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDUiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5TdXBwcmltZXIgbGVzIG9iamV0cyBzdXIgbGUgZG9jdW1lbnQgYWN0dWVsIHNldWxlbWVudCAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDYiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5TZXVsZSBsJ1VSTCBlbnRyw6llIGRhbnMgbGEgYmFycmUgZGUgc3RhdHV0IGVzdCBlbnZvecOpZSBhdXggcGFydGljaXBhbnRzICE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNyw6llciBkZXMgZ3JvdXBlcyBkZSB0cmF2YWlsIFtHcm91cGVzIHJlc3RyZWludHNdPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DaG9pc2lyIGxlcyB1dGlsaXNhdGV1cnMgcG91ciB1biBub3V2ZWF1IGdyb3VwZSBkZSB0cmF2YWlsICE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlZvdXMgcG91dmV6IGNob2lzaXIgbGVzIHV0aWxpc2F0ZXVycyBpY2kgZXQgY3LDqWVyIHVuZSBub3V2ZWxsZSBzYWxsZSBkZSBjb25mw6lyZW5jZSAoIkdyb3VwZSBkZSB0cmF2YWlsIikgcG91ciBldXguIExlcyB1dGlsaXNhdGV1cnMgY2hvaXNpcyBzZXJvbnQgYXV0b21hdGlxdWVtZW50IHRyYW5zZsOpcsOpcyBkYW5zIGxhIG5vdXZlbGxlIHNhbGxlIG91IHJlY2V2cm9udCB1bmUgbm90aWZpY2F0aW9uLiBMZXMgbW9kw6lyYXRldXJzIGRlcyBncm91cGVzIGRlIHRyYXZhaWwgcmVjZXZyb250IGVuIHBsdXMgdW5lIGxpc3RlIGRlcyBzYWxsZXMgYWN0dWVsbGVzIGFmaW4gcXUnaWxzIHB1aXNzZW50IGNoYW5nZXIgZGUgc2FsbGUgc2kgbsOpY2Vzc2FpcmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Ob20gZCd1dGlsaXNhdGV1cjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDExIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VXRpbGlzYXRldXJzIHBvdXIgbGUgbm91dmVhdSBncm91cGUgZGUgdHJhdmFpbCA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DcsOpZXIgdW4gZ3JvdXBlIGRlIHRyYXZhaWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkFubnVsZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNob2lzaXNzZXogYXUgbW9pbnMgdW4gdXRpbGlzYXRldXIgcG91ciBsZSBncm91cGUgZGUgdHJhdmFpbCAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Bam91dGVyIHV0aWxpc2F0ZXVyIGF1IGdyb3VwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U3VwcHJpbWVyIHV0aWxpc2F0ZXVyIGR1IGdyb3VwZSBkZSB0cmF2YWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5MJ3V0aWxpc2F0ZXVyIGVzdCBtb2TDqXJhdGV1ciBkdSBncm91cGUgZGUgdHJhdmFpbCAoSWwgcGV1dCBnw6lyZXIgbGVzIGdyb3VwZXMgZGUgdHJhdmFpbCBldCBsZXMgdXRpbGlzYXRldXJzIGRlcyBncm91cGVzIGRlIHRyYXZhaWwgcGV1dmVudCBsdWkgZGVtYW5kZXIgZGUgdmVuaXIgZGFucyBsYSBzYWxsZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlR5cGUgZGUgc2FsbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlNpIHZvdXMgY29jaGV6ICJGb3JjZXIgdXRpbGlzYXRldXIgw6AgY2hhbmdlciBkZSBncm91cGUgZGUgdHJhdmFpbCIsIHRvdXMgbGVzIHV0aWxpc2F0ZXVycyBjaG9pc2lzIHNlcm9udCBhdXRvbWF0aXF1ZW1lbnQgdHJhbnNmw6lyw6lzIHZlcnMgbGEgbm91dmVsbGUgc2FsbGUuIEF1dHJlbWVudCBpbHMgcmVjZXZyb250IHVuZSBub3RpZmljYXRpb24gYXZlYyB1biBib3V0b24gYWZpbiBxdSdpbHMgJmx0O2kmZ3Q7cHVpc3NlbnQmbHQ7L2kmZ3Q7IGFsbGVyIGRhbnMgbGEgbm91dmVsbGUgc2FsbGUuIExlcyBtb2TDqXJhdGV1cnMgZGUgZ3JvdXBlcyBkZSB0cmF2YWlsIG9udCB0b3Vqb3VycyBsYSBwb3NzaWJpbGl0w6kgZGUgZ8OpcmVyIGxlcyBncm91cGVzIGRlIHRyYXZhaWwgZXQgZGUgcGFzc2VyIGRlIGwndW4gw6AgbCdhdXRyZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkfDqXJlciBsZXMgZ3JvdXBlcyBkZSB0cmF2YWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Wb3VzIHBvdXZleiBpY2kgcGFzc2VyIGQndW4gZ3JvdXBlIGRlIHRyYXZhaWwgw6AgbCdhdXRyZSBwb3VyIGxlc3F1ZWxzIHZvdXMgw6p0ZXMgbW9kw6lyYXRldXIuIExlcyB1dGlsaXNhdGV1cnMgZGFucyBsZXMgZ3JvdXBlcyBkZSB0cmF2YWlsIHBldXZlbnQgdm91cyBlbnZveWVyIHVuIG1lc3NhZ2UsIHBhciBleGVtcGxlIHBvdXIgdm91cyBkZW1hbmRlciBkZSBwYXNzZXIgbGVzIGFpZGVyLiBWb3VzIHBvdXZleiDDqWdhbGVtZW50IHRlcm1pbmVyIHVuIGdyb3VwZSBkZSB0cmF2aWwgZXQgdG91cyBsZXMgdXRpbGlzYXRldXJzIHNlcm9udCBhbG9ycyBkw6ljb25uZWN0w6lzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Rm9yY2VyIHV0aWxpc2F0ZXVyIMOgIHBhc3NlciBkYW5zIHVuIG5vdXZlYXUgZ3JvdXBlIGRlIHRyYXZhaWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk5vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q3LDqcOpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VXRpbGlzYXRldXJzIGRpc3BvbmlibGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Bam91dGVyIHVuIHV0aWxpc2F0ZXVyIGF2ZWMgbGUgJ3BsdXMnIMOgIGdhdWNoZSBvdSBsZSBzdXBwcmltZXIgYXZlYyBsYSBjcm9peCDDoCBkcm9pdGUgITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MSkgUGFyYW3DqHRyZXMgZHUgZ3JvdXBlIGRlIHRyYXZhaWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjIpIEFqb3V0ZXIgZGVzIHV0aWxpc2F0ZXVycyBhdSBncm91cGUgZGUgdHJhdmFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Tm9tIGR1IGdyb3VwZSBkZSB0cmF2YWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Hcm91cGUgZGUgdHJhdmFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+QWxsZXIgZGFucyBsYSBzYWxsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2hhbmdlciBwb3VyIGNlIGdyb3VwZSBkZSB0cmF2YWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZXJtaW5lciBsZSBncm91cGUgZGUgdHJhdmFpbCBldCBkw6ljb25uZWN0ZXIgdG91cyBsZXMgdXRpbGlzYXRldXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Ob3V2ZWF1IGdyb3VwZSBkZSB0cmF2YWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5JbCB5IGEgdW4gbm91dmVhdSBncm91cGUgZGUgdHJhdmFpbCBkaXNwb25pYmxlIHBvdXIgdm91cy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkFsbGVyIGRhbnMgbGUgZ3JvdXBlIGRlIHRyYXZhaWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkFjdGlvbnMgZHUgZ3JvdXBlIGRlIHRyYXZhaWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlZvdXMgcG91dmV6IHLDqW91dnJpciBjZXR0ZSBmZW7DqnRyZSB2aWEgbGUgbWVudSBwcmluY2lwYWwgZGFucyBsYSBzZWRjdGlvbiAiQWN0aW9ucyIgITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+RW52b3llciB1biBtZXNzYWdlIGF1IG1vZMOpcmF0ZXVyIGR1IGdyb3VwZSBkZSB0cmF2YWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Ob3V2ZWF1IGdyb3VwZSBkZSB0cmF2YWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5JbCB5IGEgdW4gbm91dmVhdSBncm91cGUgZGUgdHJhdmFpbCBkaXNwb25pYmxlLiBWb3VzIHBvdXZleiBwYXNzZXIgZGFucyBjZXR0ZSBzYWxsZS4gTGVzIGdyb3VwZXMgZGUgdHJhdmFpbCBzb250IGRlcyBncm91cGVzIHJlc3RyZWludHMgYXZlYyBsYSBwb3NzaWJpbGl0w6kgZGUgZGVtYW5kZXIgZGUgbCdhaWRlIGF1IG1vZMOpcmF0ZXVyLiBWb3RyZSBncm91cGUgZGUgdHJhdmFpbCBlc3Qgw6lnYWxlbWVudCBhY2Nlc3NpYmxlIGRhbnMgbGEgc2VjdGlvbiAnTWVzIHLDqXVuaW9ucycuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5BbGxlciBhdSBncm91cGUgZGUgdHJhdmFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQ3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q3LDqcOpIHBhciA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Ob20gZHUgZ3JvdXBlIGRlIHRyYXZhaWwgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQ5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2V0dGUgZmVuw6p0cmUgcmVzdGVyYSBvdXZlcnRlIG3Dqm1lIHNpIHZvdXMgcXVpdHRleiBsYSBzYWxsZSAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5VdGlsaXNhdGV1cnMgcG91ciBjZSBncm91cGUgZGUgdHJhdmFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MykgQXV0cmVzIGdyb3VwZXMgZGUgdHJhdmFpbCBhdXhxdWVscyB2b3VzIGF2ZXogYWNjw6hzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5FbnZveWVyIHVuIG1lc3NhZ2UgYXUgbW9kw6lyYXRldXIgZHUgZ3JvdXBlIGRlIHRyYXZhaWwuIFBhciBleGVtcGxlIHNpIHZvdXMgZGV2ZXogbW9kw6lyZXIgbGEgc2FsbGUgb3Ugc2kgdm91cyBhdmV6IHVuZSBxdWVzdGlvbiBwYXJ0aWN1bGnDqHJlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+RW52b3llcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MikgVXRpbGlzYXRldXJzIGludml0w6lzIMOgIGNlIGdyb3VwZSBkZSB0cmF2YWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Fc3QgbW9kw6lyYXRldXIgZHUgZ3JvdXBlIGRlIHRyYXZhaWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1NiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlZvaWNpIHRvdXMgbGVzIHV0aWxpc2F0ZXVycyBxdWkgb250IMOpdMOpIGludml0w6lzIMOgIGNlIGdyb3VwZSBkZSB0cmF2YWlsIHBhciBsZSBtb2TDqXJhdGV1ci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1NyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPklsIG4neSBhIHBhcyBkZSBtb2TDqXJhdGV1ciBjb25uZWN0w6kgcG91ciBsZSBtb21lbnQgITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VmV1aWxsZXogZW50cmVyIHVuIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1OSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlZldWlsbGV6IHZlbmlyIG5vdXMgYWlkZXIsIG5vdXMgYXZvbnMgdW4gcHJvYmzDqG1lIGRhbnMgbm90cmUgZ3JvdXBlIGRlIHRyYXZhaWwgITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VW4gdXRpbGlzYXRldXIgZCd1biBncm91cGUgZGUgdHJhdmFpbCBhIGJlc29pbiBkZSB2b3RyZSBhaWRlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+R3JvdXBlIGRlIHRyYXZhaWwgZGVtYW5kZSBkZSBsJ2FpZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2MiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk1lc3NhZ2UgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+RGUgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Vm91cyBuJ8OqdGVzIHBvdXIgbGUgbW9tZW50IGRhbnMgYXVjdW4gZ3JvdXBlIGRlIHRyYXZhaWwuIE1haXMgdm91cyBwb3V2ZXogYWNjw6lkZXIgaWNpIMOgIHRvdXMgbGVzIGdyb3VwZXMgZGUgdHJhdmFpbCBhdXhxdWVscyB2b3VzIGF2ZXogYWNjw6hzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY1IiBuYW1lPSJiYWNrdXBDb250ZW50Ij4KKyAgICA8dmFsdWU+U2F1dmVnYXJkZXIgbGUgc3lzdMOobWUuIExhIHNhdXZlZ2FyZGUgaW5jbHV0IHRvdXRlcyBsZXMgZG9ubsOpZXMgZ8OpbsOpcsOpZXMgcGFyIGxlcyB1dGlsaXNhdGV1cnMuIExhIGNvbmZpZ3VyYXRpb24gbidlc3QgcGFzIGluY2x1ZSBhaW5zaSBxdWUgbGVzIMOpdGlxdWV0dGVzIGRlcyBsYW5ndWVzIGNhciBjZXMgZG9ubsOpZXMgc29udCBpbXBvcnTDqWVzIGF2ZWMgbCdpbnN0YWxsYXRldXIgZHUgc3lzdMOobWUuIFBvdXIgbWV0dHJlIHZvdHJlIHN5c3TDqG1lIMOgIGpvdXIsIGV4cG9ydGV6IHZvdHJlIHN5c3TDqG1lICgxKSByw6lpbnN0YWxsZXogbGEgbm91dmVsbGUgdmVyc2lvbiBkYW5zIHVuZSBub3V2ZWxsZSBiYXNlIGRlIGRvbm7DqWVzICgyKSBldCBpbXBvcnRleiBsYSBzYXV2ZWdhcmRlICgzKS4gTGEgc2F1dmVnYXJkZSBkZXZyYWl0IMOqdHJlIGltcG9ydMOpZSBhdmFudCBkZSBnw6luw6lyZXIgZGUgbm91dmVsbGVzIGRvbm7DqWVzIGF2ZWMgbGUgbm91dmVhdSBzeXN0w6htZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2NiIgbmFtZT0iYmFja3VwQ29udGVudCI+CisgICAgPHZhbHVlPlNhdXZlZ2FyZGUgc3lzdMOobWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2NyIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+UGVybWV0dHJlIMOgIGwndXRpbGlzYXRldXIgZGUgcGFydGFnZXIvZW5yZWdpc3RyZXIgc29uIMOpY3JhbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY4IiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT5SZWZ1c2VyIMOgIGwndXRpbGlzYXRldXIgZGUgcGFydGFnZXIvZW5yZWdpc3RyZXIgc29uIMOpY3JhbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY5IiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT5MJ3V0aWxpc2F0ZXVyIGVzdCBtb2TDqXJhdGV1ciwgaWwgcGV1dCB0b3V0IGZhaXJlICE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3MCIgbmFtZT0iYXBwbHkgZm9yIHNjcmVlbi9yZWNvcmRpbmciPgorICAgIDx2YWx1ZT52b3VkcmFpdCBwYXJ0YWdlci9lbnJlZ2lzdHJlciBzb24gw6ljcmFuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDcxIiBuYW1lPSJtb2RlcmF0aW9uIG1pbmkgaWNvbnMiPgorICAgIDx2YWx1ZT5Wb3VzIGF2ZXogbGEgcGVybWlzc2lvbiBkZSBwYXJ0YWdlci9lbnJlZ2lzdHJlciB2b3RyZSDDqWNyYW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3MiIgbmFtZT0ibW9kZXJhdGlvbiBtaW5pIGljb25zIj4KKyAgICA8dmFsdWU+RGVtYW5kZXIgbGUgZHJvaXQgZGUgcGFydGFnZXIvZW5yZWdpc3RyZXIgbCfDqWNyYW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzMiIG5hbWU9Im1vZGVyYXRpb24gbWluaSBpY29ucyBjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+QXV0b3Jpc2VyL1JlZnVzZXIgbGUgZHJvaXQgZGUgcGFydGFnZXIvZW5yZWdpc3RyZXIgbCfDqWNyYW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3NCIgbmFtZT0ic291bmQgaWNvbiI+CisgICAgPHZhbHVlPkNvdXBlciBsZSBzb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3NSIgbmFtZT0ic291bmQgaWNvbiI+CisgICAgPHZhbHVlPk1ldHRyZSBsZSBzb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3NiIgbmFtZT0icm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNhbGxlIGF1ZGlvIHNldWxlbWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc3IiBuYW1lPSJyb29tIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+QWN0aXZleiBjZSBjaGFtcCBldCBsZXMgdXRpbGlzYXRldXJzIGF1cm9udCBzZXVsZW1lbnQgbCdvcHRpb24gYXVkaW8gZXQgbm9uIHZpZMOpbyBkYW5zIHVuZSBzYWxsZSBkZSBjb25mw6lyZW5jZS4gQ2VjaSBwZXV0LcOqdHJlIGJvbiBwb3VyIMOpY29ub21pc2VyIGRlIGxhIGJhbmRlIHBhc3NhbnRlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc4IiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5QZXJtZXR0cmUgbGUgY29udHLDtGxlIMOgIGRpc3RhbmNlIChEdXJhbnQgdW4gcGFydGFnZSBkJ8OpY3Jhbik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3OSIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+UmVmdXNlciBsZSBjb250csO0bGUgw6AgZGlzdGFuY2UgKER1cmFudCB1biBwYXJ0YWdlIGQnw6ljcmFuKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgwIiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5EZW1hbmRlciBsZSBkcm9pdCBkZSBjb250csO0bGVyIMOgIGRpc3RhbmNlIChEdXJhbnQgdW4gcGFydGFnZSBkJ8OpY3Jhbik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MSIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+Vm91cyBhdmV6IGxlIGRyb2l0IGRlIGNvbnRyw7RsZXIgw6AgZGlzdGFuY2UgKER1cmFudCB1biBwYXJ0YWdlIGQnw6ljcmFuKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgyIiBuYW1lPSJhcHBseSBmb3IgcmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5zb3VoYWl0ZSBjb250csO0bGVyIMOgIGRpc3RhbmNlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgzIiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5MJ3V0aWxpc2F0ZXVyIGVzdCBtb2TDqXJhdGV1ciwgaWwgcGV1dCB0b3V0IGZhaXJlIChDb250w7RsZSBkdSBidXJlYXUgw6AgZGlzdGFuY2UpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODQiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkF1dG9yaXNlci9SZWZ1c2VyIGxlIGRyb2l0IGF1IGNvbnRyw7RsZSDDoCBkaXN0YW5jZSAoRHVyYW50IHVuIHBhcnRhZ2UgZCfDqWNyYW4pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODUiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPjEpIFBvdXIgY29waWVyIGV0IGNvbGxlciBkdSB0ZXh0ZSBkZSB2b3RyZSBwcmVzc2UtcGFwaWVyIHZlcnMgbCfDqWNyYW4gZHUgUEMgZGlzdGFudCwgY2xpcXVleiBzdXIgbCfDqWNyYW4sIGVuc3VpdGUgY2xpcXVleiBhdmVjIGxlIGJvdXRvbiBkcm9pdCBkYW5zIGxlIGNoYW1wIGRlIHRleHRlIGV0IGNob2lzaXNzZXogIkluc8OpcmVyIiBkdSBtZW51IGNvbnRleHR1ZWwuJmx0O2JyLyZndDsmbHQ7YnIvJmd0OzIpIFBvdXIgY29waWVyIGR1IHRleHRlIGRlcHVpcyBsZSBQQyBkaXN0YW50IHZlcnMgbGUgcHJlc3NlLXBhcGllciBkZSB2b3RyZSBQQywgbWV0dGV6IGxlIHRleHRlIGVuIHN1cmJyaWxsYW5jZSBzdXIgbCfDqWNyYW4gZHUgUEMgZGlzdGFudCwgZW5zdWl0ZSBjbGlxdWV6IGF2ZWMgbGUgYm91dG9uIGRyb2l0IGV0IGNob2lzaXNzZXogJmx0O2kmZ3Q7Q29waWVyIGxlIHRleHRlIGVuIHN1cmJyaWxsYW5jZXQmbHQ7L2kmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODYiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNvcGllciBldCBjb2xsZXIgZHUgdGV4dGUgZGUgdm90cmUgUEMgdmVycyB1biBQQyBkaXN0YW50IGV0IHZpY2UtdmVyc2EuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg3IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Db3BpZXIgbGUgdGV4dGUgZW4gc3VyYnJpbGxhbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODgiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNvbW1lbnQgY29waWVyLWNvbGxlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg5IiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5RdWFsaXTDqSBkdSBwYXJ0YWdlIGQnw6ljcmFuIDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5MCIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+dHLDqHMgaGF1dGUgcXVhbGl0w6k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5MSIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+SGF1dGUgcXVhbGl0w6k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5MiIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+UXVhbGl0w6kgbW95ZW5uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkzIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5CYXNzZSBxdWFsaXTDqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk0IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPmVuX1VTPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTUiIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+ZGVfREU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NiIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5DbGF2aWVyIDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NyIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5GZXJtZXIgbGUgV2ViaW5hciAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTgiIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+TGUgV2ViaW5hciBlc3QgZMOpasOgIGZlcm3DqSwgdm91cyBhbGxleiDDqnRyZSByZWRpcmlnw6kgdmVycyB1bmUgb2ZmcmUgaW50w6lyZXNzYW50ZSBkYW5zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTkiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+RmVybWVyIGxhIHNhbGxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDAiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+VVJMIGRlIHNvcnRpZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAxIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPlBhcmFtw6h0cmVzIGRlIGZlcm1ldHVyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAyIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPlNpIGxhIHNhbGxlIGVzdCBmZXJtw6llIGxlcyB1dGlsaXNhdGV1cnMgc2Vyb250IHJlZGlyaWfDqXMgdmVycyBsJ1VSTCBkZSBzb3J0aWUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDMiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+TGRhcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA0IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPklEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDUiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+Tm9tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDYiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+RmljaGllciBkZSBjb25maWd1cmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDciIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+Q29uZmlndXJhdGlvbiBMZGFwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDgiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+Tm9tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDkiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+QWN0aXbDqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEwIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkluc8OpcsOpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTEiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+SW5zw6lyw6kgcGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTIiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+TWlzIMOgIGpvdXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5NaXMgw6Agam91ciBwYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5MZXMgZmljaGllcnMgZGUgY29uZmlndXJhdGlvbiBzb250IGRhbnMgbGUgcsOpcGVydG9pcmUgd2ViYXBwcy9vcGVubWVldGluZ3MvY29uZi4gVm91cyBkZXZleiBjaGFyZ2VyIG1hbnVlbGxlbWVudCBsZXMgZmljaGllcnMgdmVycyBjZSByw6lwZXJ0b2lyZS4gTGVzIG1vZGlmaWNhdGlvbnMgZGFucyBsZSBmaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24gc29udCBlbiBsaWduZSBpbW3DqWRpYXRlbWVudC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5Ob20gZHUgZmljaGllcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE2IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPlNpIHZvdXMgYWN0aXZleiAiQWpvdXRlciBsZSBkb21haW5lIGF1IG5vbSBkJ3V0aWxpc2F0ZXVyIiBsYSB2ZWxldXIgZHUgY2hhbXAgImRvbWFpbmUiIHNlcmEgYWpvdXTDqWUgw6AgY2hhcXVlIGxvZ2luIGVudHLDqSBkYW5zIGxhIGZlbsOqdHJlIGRlIGxvZ2luLiBDZWNpIHBldXQtw6p0cmUgdXRpbGUgc2kgbGUgbG9naW4gZGFucyBsZSBMZGFwIGVzdCBlbnJlZ2lzdHLDqSBlbiBpbmNsdWFudCBsZSBub20gZGUgZG9tYWluZS4gUGFyIGV4ZW1wbGUgOiB1biB1dGlsaXNhdGV1ciBlbnRyZSAiaGFucyIgbGUgZG9tYWluZSBzcMOpY2lmacOpIMOpdGFudCAibG9jYWxob3N0LmNvbSIsIGxlIGxvZ2luIHbDqXJpZmnDqSBhdmVjIExkYXAgc2VyYSA6IGhhbnNAbG9jYWxob3N0LmNvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE3IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkFqb3V0ZXIgbGUgZG9tYWluZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE4IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkRvbWFpbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExOSIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5JbnPDqXJlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIwIiBuYW1lPSJyZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPkNvcGllciBsZSB0ZXh0ZSBlbiBzdXJicmlsbGFuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMSIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5UZXh0ZSBkdSBwcmVzc2UtcGFwaWVyIGRpc3RhbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMiIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5Nb250cmVyIGxlIHByZXNzZS1wYXBpZXIgZGlzdGFudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIzIiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5OZSBwbHVzIG1vbnRyZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNCIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+Q29waWVyIGxlIHRleHRlIGljaS4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI1IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Wb3VzIGRldmV6IGF2b2lyIGxlIGRyb2l0IGRlIGNvbnTDtGxlciDDoCBkaXN0YW5jZSAob3UgYXZvaXIgbGEgbW9kw6lyYXRpb24pIHBvdXIgY29waWVyIGV0IGNvbGxlciBkdSB0ZXh0ZSBkZSBvdSB2ZXJzIGwnw6ljcmFuIGRpc3RhbnQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjYiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkVkaXRlciBsZXMgcGFyYW3DqHRyZXMgcGFyIGTDqWZhdXQuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNyIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+TmUgcGFzIG1vbnRyZXIgbGEgYm9pdGUgZCdpbmZvIGRhbnMgbGUgY29udHLDtGxlIMOgIGRpc3RhbmNlIMOgIHByb3BvcyBkdSBjb3BpZXItY29sbGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjgiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+U2F1dmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjkiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RW5sZXZlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMwIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkFubnVsZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMSIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkludml0ZXIgbCd1dGlsaXNhdGV1ciBkYW5zIGxhIHNhbGxlIGRlIGNvbmbDqXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzIiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5DaG9pc2lzc2V6IHVuZSBzYWxsZSBkZSBjb25mw6lyZW5jZS4gTCd1dGlsaXNhdGV1ciBpbnZpdMOpIHJlY2V2cmEgdW4gbWVzc2FnZSBhdmVjIHZvdHJlIG5vbSBldCB1biBsaWVuIHZlcnMgbGEgc2FsbGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzMiIG5hbWU9ImNoYXQgdXNlciI+CisgICAgPHZhbHVlPkNvbm5lY3TDqSBkZXB1aXMgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM0IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+RW50cmVyIGRhbnMgbGEgc2FsbGUgYXByw6hzIGwnZW52b2kgZGUgbCdpbnZpdGF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzUiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5JbnZpdGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzYiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5NZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzciIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5zb3VoYWl0ZSB2b3VzIGludml0ZXIgZGFucyBsYSBzYWxsZSBkZSBjb25mw6lyZW5jZSA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzgiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5NZXNzYWdlIGQnaW52aXRhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM5IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+RW52b3llciBpbnZpdGF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDAiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5uJ2EgJmx0O2ImZ3Q7cGFzJmx0Oy9iJmd0OyBhY2NlcHTDqSB2b3RyZSBpbnZpdGF0aW9uICE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0MSIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkFjY2VwdGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDIiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5SZWZ1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDMiIG5hbWU9InVzZXIgcHJvZmlsZSI+CisgICAgPHZhbHVlPkZ1cy4gaG9yYWlyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ0IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5Ew6l0YWlscyBkZSBsJ8OpdsOpbmVtZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDUiIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPk5vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ2IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5EZXNjcmlwdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ3IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5DcsOpw6kgcGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDgiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5NZXNzYWdlIGR1IGZ1cy4gaG9yLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ5IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+VsOpcmlmaWV6ICJsZSBtZXNzYWdlIGR1IGZ1c2VhdSBob3JhaXJlIiBwb3VyIHRyYW5zbWV0dHJlIGF1eCB1dGlsaXNhdGV1cnMgdW4gbWVzc2FnZSBsYSBmb2lzIHByb2NoYWluZSBxdSdpbHMgc2UgY29ubmVjdGVudC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MCIgbmFtZT0idGltZSB6b25lIHVwZGF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VmV1aWxsZXogdsOpcmlmaWVyIGxlIGZ1c2VhdSBob3JhaXJlIGRhbnMgdm90cmUgcHJvZmlsIHV0aWxpc2F0ZXVyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUxIiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Ob3V2ZWxsZSBjb25mw6lyZW5jZSAkQVBQX05BTUUgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUyIiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Ew6l0YWlscyA6Jmx0O2JyLyZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MyIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RMOpYnV0IDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NCIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RmluIDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NSIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q29uZsOpcmVuY2UgJEFQUF9OQU1FIG1vZGlmacOpZSA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTYiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPk9yZ2FuaXNhdGV1ciA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTciIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkNvbmbDqXJlbmNlICRBUFBfTkFNRSBhbm51bMOpZSA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTgiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPlJhcHBlbCBjb25mw6lyZW5jZSAkQVBQX05BTUUgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU5IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+UGFyYW3DqHRyZXMgY29tbXVuYXV0YWlyZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk1vbnRyZXIgbGVzIGRvbm7DqWVzIGRlIGNvbnRhY3Qgw6AgdG91dCBsZSBtb25kZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYxIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+QWpvdXRleiBkZXMgY2hhbXBzIGQnaW50w6lyw6p0IHF1ZSB2b3VzIGF2ZXogb3UgcXVlIHZvdXMgY2hlcmNoZXogYWZpbiBkZSB0cm91dmVyIGRlcyBwYXJ0ZW5haXJlcyBpbnTDqXJlc3NhbnRzIHBvdXIgdW5lIGNvbmbDqXJlbmNlLiBTw6lwYXJleiBsZXMgdGVybWVzIHBhciBkZXMgdmlyZ3VsZXMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjIiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NZXMgaW50w6lyw6p0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYzIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+SmUgY2hlcmNoZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY0IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+Tm9tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjUiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5GdXMuIGhvcmFpcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2NiIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkNlbnRyZXMgZCdpbnTDqXLDqnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2NyIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkluZm9ybWF0aW9uIGRlIGNvbnRhY3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2OCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk1vbnRyZXIgbGVzIGRvbm7DqWVzIGRlIGNvbnRhY3QgYXV4IGNvbnRhY3RzIHNldWxlbWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY5IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+TmUgbW9udHJlciBsZXMgZG9ubsOpZXMgZGUgY29udGFjdCDDoCBwZXJzb25uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTcwIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+TW9uIHByb2ZpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTcxIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+RWRpdGVyIGxlcyBwYXJhbcOodHJlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTcyIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+Q2hlcmNoZXIgZGVzIHV0aWxpc2F0ZXVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTczIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+Vm9pciB2b3RyZSBwcm9maWwgY29tbWUgbGVzIGF1dHJlcyBsZSB2b2llbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkVkaXRlciB2b3MgcGFyYW3DqHRyZXMsIGFqb3V0ZXIgdm9zIGNlbnRyZXMgZCdpbnTDqXLDqnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzUiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5DaGVyY2hlciBkJ2F1dHJlcyB1dGlsaXNhdGV1cnMgZXQgw6l0ZW5kcmUgdm90cmUgcsOpc2VhdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc2IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkNoZXJjaGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzciIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+VXRpbGlzYXRldXIgb2ZmcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3OCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5VdGlsaXNhdGV1ciBjaGVyY2hlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzkiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+VGV4dGUgbGlicmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5Ob208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MSIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5GdXMuIGhvcmFpcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MiIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5PZmZyZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MyIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5SZWNoZXJjaGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODQiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+UsOpc3VsdGF0IDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NSIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5BY3Rpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODYiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+QWpvdXRlciDDoCB2b3MgY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NyIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5FbnZveWVyIHVuIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4OCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5Db250YWN0cyBldCBNZXNzYWdlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg5IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkNvbnRhY3RzIGVuIGF0dGVudGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkFjY2VwdGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTEiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5SZWZ1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTIiIG5hbWU9InVzZXIgY29udGFjdCByZXF1ZXN0Ij4KKyAgICA8dmFsdWU+Qm9uam91ciw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MyIgbmFtZT0idXNlciBjb250YWN0IHJlcXVlc3QiPgorICAgIDx2YWx1ZT5zb3VoYWl0ZSB2b3VzIGFqb3V0ZXIgw6Agc2EgbGlzdGUgZGUgY29udGFjdHMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTQiIG5hbWU9InVzZXIgY29udGFjdCByZXF1ZXN0Ij4KKyAgICA8dmFsdWU+VsOpcmlmaWV6IHZvcyBkZW1hbmRlcyBkZSBjb250YWN0IGRhbnMgJEFQUF9OQU1FIG91IGNsaXF1ZXogc3VyIGxlcyBsaWVucyBwb3VyIGFjY2VwdGVyIG91IHJlZnVzZXIgbGVzIGRlbWFuZGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTUiIG5hbWU9ImFkZCB1c2VyIGNvbnRhY3QiPgorICAgIDx2YWx1ZT5jZXQgdXRpbGlzYXRldXIgZXN0IGTDqWrDoCBkYW5zIHZvcyBjb250YWN0cyBvdSBhIHJlw6d1IHVuZSBpbnZpdGF0aW9uIMOgIHZvdHJlIGxpc3RlIGRlIGNvbnRhY3Qgw6AgbGFxdWVsbGUgaWwgbidhIHBhcyBlbmNvcmUgcsOpcG9uZHUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTYiIG5hbWU9InVzZXIgY29udGFjdCBtYWlsIj4KKyAgICA8dmFsdWU+Vm90cmUgbGlzdGUgZGUgY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkVkaXRleiB2b3MgY29udGFjdHMgZXQgbWVzc2FnZXMsJmx0O2JyLyZndDsgZ8OpcmV6IHZvcyBjb250YWN0cyBlbiBhdHRlbnRlICE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5OCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPnZvdXMgYSBjb25maXJtw6kgY29tbWUgY29udGFjdCAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTkiIG5hbWU9ImNoYXQgaW5mbyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDAiIG5hbWU9ImNoYXQgbG9nIGljb24iPgorICAgIDx2YWx1ZT5BZmZpY2hlci9Db3BpZXIgbGUgam91cm5hbCBkdSB0J2NoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMSIgbmFtZT0iY2hhdCBsb2cgd2luZG93Ij4KKyAgICA8dmFsdWU+Sm91cm5hbCBkdSB0J2NoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3VqZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RW52b3llcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWVzc2FnZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Tm91dmVhdSBtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkNsaXF1ZXogcG91ciDDqWNyaXJlIHVuIG5vdXZlYXUgbWVzc2FnZSDDoCBuJ2ltcG9ydGUgcXVlbCBkZSB2b3MgY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwOSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RWNyaXJlIHVuIG5vdXZlYXUgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjEwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BIDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3VqZXQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTIiIG5hbWU9IndoaXRlYm9hcmQgZnVsbC1maXQiPgorICAgIDx2YWx1ZT5BY3RpdmV6IGxlIHpvb20gMTAwJSBldCBsZSB0YWJsZWF1IGJsYW5jIHpvb21lcmEgZGUgdGVsbGUgc29ydGUgcXVlIHRvdXMgbGVzJmx0O2JyLyZndDtkb2N1bWVudHMgc2Vyb250IHZpc2libGVzIHN1aXZhbnQgbGEgcsOpc29sdXRpb24gZCfDqWNyYW4gZGUgY2hhcXVlIHBhcnRpY2lwYW50LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjEzIiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT5FamVjdGVyIGwndXRpbGlzYXRldXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNCIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+Vm91cyBuZSBwb3V2ZXogcGFzIHZvdXMgw6lqZWN0ZXIgdm91cy1tw6ptZSBkZSBsYSBzYWxsZSBkZSBjb25mw6lyZW5jZSAhIFNpIHZvdXMgZMOpc2lyZXogc29ydGlyLCBmZXJtZXogdm90cmUgbmF2aWdhdGV1ciBvdSB1dGlsaXNleiBsZSBib3V0b24gZGUgc29ydGllICE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNSIgbmFtZT0ia2ljay11c2VyIj4KKyAgICA8dmFsdWU+Vm91bGV6LXZvdXMgdnJhaW1lbnQgZMOpY29ubmVjdGVyIGNldCB1dGlsaXNhdGV1ciBkZSBjZXR0ZSBzYWxsZSBkZSBjb25mw6lyZW5jZSA/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTYiIG5hbWU9ImtpY2stdXNlciI+CisgICAgPHZhbHVlPkNvbmZpcm1leiBsJ2FjdGlvbi4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE3IiBuYW1lPSJraWNrLXVzZXIiPgorICAgIDx2YWx1ZT5Wb3VzIG5lIHBvdXZleiBwYXMgw6lqZWN0ZXIgdW4gc3VwZXItbW9kw6lyYXRldXIgZCd1bmUgc2FsbGUgITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Sw6lzZXJ2ZXIgdW5lIHNhbGxlIGRlIGNvbmbDqXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkTDqWJ1dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5GaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWpvdXRlciB1bmUgcmVxdcOqdGUgb3Bpb25uZWxsZSBwb3VyIGxhIHLDqXVuaW9uIGV0IGNyw6llciBsYSBzYWxsZS4gTCfDqXbDqW5lbWVudCBzZXJhIGFsb3JzIGNvcGnDqSBkYW5zIGxlIGNhbGVuZHJpZXIgZGUgY2hhcXVlIHBhcnRpY2lwYW50LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Cb2l0ZSBkZSByw6ljZXB0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkVudm95w6k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+UG91YmVsbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Qydlc3Qgdm91cyAhIFZvdXMgbmUgcG91dmV6IHBhcyB2b3VzIGFqb3V0ZXIgdm91cy1tw6ptZSDDoCB2b3MgcHJvcHJlcyBjb250YWN0cy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkwndXRpbGlzYXRldXIgYSBkw6lqw6Agw6l0w6kgcmVmdXPDqSAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjciIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5MJ3V0aWxpc2F0ZXVyIGEgZMOpasOgIMOpdMOpIGFwcHJvdXbDqSAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjgiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5MZSBoYWNoYWdlIGRlIGNlIGNvbnRhY3Qgbidlc3QgcGFzIHZhbGlkZSAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjkiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5VdGlsaXNhdGV1ciBham91dMOpIMOgIGxhIGxpc3RlIGRlIGNvbnRhY3QgITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMwIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VXRpbGlzYXRldXIgcmVmdXPDqSBjb21tZSBjb250YWN0IGV0IHN1cHByaW3DqSBkZSBsYSBsaXN0ZSBkZXMgY29udGFjdHMgZW4gYXR0ZW50ZSAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzEiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5JbCBuJ3kgYSBwYXMgdW4gdGVsIGNvbnRhY3QgITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMyIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+Vm91cyB2b3VsZXogdnJhaW1lbnQgc3VwcHJpbWVyIGNlIGNvbnRhY3QgPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMzIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+Q29uZmlybWV6IGxhIHN1cHByZXNzaW9uIGR1IGNvbnRhY3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlN1cHByaW1lciBsZSBjb250YWN0IGRlIGxhIGxpc3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzUiIG5hbWU9InVzZXIgcHJvZmlsZSI+CisgICAgPHZhbHVlPlByb2ZpbCB1dGlsaXNhdGV1cjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM2IiBuYW1lPSJ1c2VyIHByb2ZpbGUiPgorICAgIDx2YWx1ZT5BZmZpY2hlciBsZSBwcm9maWwgdXRpbGlzYXRldXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWVzc2FnZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzOCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2hlcmNoZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzOSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VG91dCBzw6lsZWN0aW9ubmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDAiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlPDqWxlY3Rpb25uZXIgYXVjdW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0MSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U8OpbGVjdGlvbm5lciBub24gbHVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlPDqWxlY3Rpb25uZXIgbHVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkTDqXBsYWNlciB2ZXJzIHLDqXBlcnRvaXJlLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFqb3V0ZXIgbm91dmVhdSByw6lwZXJ0b2lyZS4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TdXBwcmltZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGVzIG1haWxzIGVmZmFjw6lzIHNlIHRyb3V2ZW50IHRvdWpvdXJzIGRhbnMgdm90cmUgcG91YmVsbGUgITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ3IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5NYXJxdWVyIG5vbiBsdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5NYXJxdWVyIGx1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlLDqXBvbmRyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Sw6lwb25kcmUgw6AgdG91czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5GYWlyZSBzdWl2cmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWN0aW9ucy4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUzIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+RW52b3llciB1biBtZXNzYWdlIHByaXbDqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5SaWVuIGRlIHPDqWxlY3Rpb25uw6kgITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Ew6lwbGFjZXIgZGFucyBsYSBib2l0ZSBkZSByw6ljZXB0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTYiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlN1cHByaW1lciAoZmluYWwpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTciIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkNldHRlIGFjdGlvbiBuZSBwZXV0IMOqdHJlIGFubnVsw6llICE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1OCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q3LDqWVyIGRvc3NpZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1OSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWpvdXRlciBkZXMgZG9zc2llcnMgZXQgb3JnYW5pc2VyIHZvcyBtZXNzYWdlcyAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjAiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFqb3V0ZXIgdW4gZG9zc2llcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Bam91dGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSBmb2xkZXIiPgorICAgIDx2YWx1ZT5TdXBwcmltZXIgdW4gZG9zc2llcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+Vm91cyBuZSBwb3V2ZXogc3VwcHJpbWVyIGNlIGRvc3NpZXIsIGlsIGNvbnRpZW50IHRvdWpvdXJzIGRlcyBtZXNzYWdlcyAhIFN1cHByaW1lei1sZXMgZCdhYm9yZCBvdSBkw6lwbGFjZXotbGVzIHZlcnMgdW4gYXV0cmUgZG9zc2llci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPkVkaXRlciBsZSBub208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPlZvdWxlei12b3VzIHZyYWltZW50IHN1cHByaW1lciBjZSBkb3NzaWVyID8gSWwgbidlc3QgcGFzIHBvc3NpYmxlIGQnYW5udWxlciBjZXR0ZSBhY3Rpb24gcGFyIGxhIHN1aXRlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY2IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+Vm90cmUgZGVtYW5kZSBhIMOpdMOpIGVudm95w6llIMOgIGwndXRpbGlzYXRldXIuIEwndXRpbGlzYXRldXIgdmEgcmVjZXZvaXIgdW5lIG5vdGlmaWNhdGlvbiBwb3VyIGFjY2VwdGVyIG91IHJlZnVzZXIgdm90cmUgZGVtYW5kZS4gQmllbiDDqXZpZGVtbWVudCwgc2V1bGVzIGxlcyBkZW1hbmRlcyBhY2NlcHTDqWVzIHNlIHRyb3V2ZW50IGRhbnMgdm9yZSBsaXN0ZSBkZSBjb250YWN0cyAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjciIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5NZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjgiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+TCd1dGlsaXNhdGV1ciBuZSBwYXJ0YWdlIHBhcyBzZXMgZG9ubsOpZXMgcGVyc29ubmVsbGVzIGRlIGNvbnRhY3QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjkiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+TCd1dGlsaXNhdGV1ciBuZSBwYXJ0YWdlIHNlcyBkb25uw6llcyBwZXJzb25uZWxsZXMgZGUgY29udGFjdCBxdSdhdmVjIHNlcyBjb250YWN0cy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3MCIgbmFtZT0idXNlciB2aWV3IHByb2ZpbGUiPgorICAgIDx2YWx1ZT5BZHJlc3NlICZhbXA7IHTDqWwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzEiIG5hbWU9ImVycm9yIGNvZGUiPgorICAgIDx2YWx1ZT5Wb3RyZSBjb2RlIGQnaW52aXRhdGlvbiBuJ2VzdCBwYXMgdmFsaWRlLCBsZSBjb2RlIG4nZXN0IHZhbGlkZSBxdWUgZHVyYW50IGNldHRlIGRhdGUgZXQgaGV1cmUgc3DDqWNpZmlxdWVzIDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3MiIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPkNldCDDqXbDqW5lbWVudCBlc3QgY29ubmVjdMOpIMOgIHBsdXNpZXVycyBjYWxlbmRyaWVycyBkJ2F1dHJlcyB1dGlsaXNhdGV1cnMuIFZvcyBtb2RpZmljYXRpb25zIHNlcm9udCDDqWdhbGVtZW50IG1pc2VzLcOgLWpvdXIgZGFucyBsZXVycyBjYWxlbmRyaWVycy4gVm91bGV6Ki12b3VzIHZyYWltZW50IG1ldHRyZSDDoCBqb3VyIGwnw6l2w6luZW1lbnQgPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjczIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Q29uZmlybWV6IGxhIG1pc2Ugw6Agam91cjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc0IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+UGVybWV0dHJlIGF1IGNvbnRhY3QgZGUgdm9pciBsZSBjYWxlbmRyaWVyICh2b2lyIHNldWxlbWVudCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPk5lIHBhcyBwYXJ0YWdlciBsZSBjYWxlbmRyaWVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzYiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5DYWxlbmRyaWVycyBkZXMgY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlZvcyBjb250YWN0cyBkb2l2ZW50IHZvdXMgYXBwcm91dmVyIGQnYWJvcmQgYXZhbnQgcXVlIHZvdXMgbmUgcHVpc3NpZXogdm9pciBsZXVycyBjYWxlbmRyaWVycy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3OCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlZvdXMgbmUgcG91dmV6IHBhcyBlbnJlZ2lzdHJlciBvdSBzdXBwcmltZXIgZGVzIMOpdsOpbmVtZW50cyBkJ3VuIGF1dHJlIGNhbGVuZHJpZXIgcXVlIGxlIHbDtHRyZSAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzkiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Nb250cmVyIG1vbiBwcm9wcmUgY2FsZW5kcmllciDDoCBub3V2ZWF1ICE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4MCIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPkNldCDDqXbDqW5lbWVudCBlc3QgY29ubmVjdMOpIMOgIHBsdXNpZXVycyBjYWxlbmRyaWVycyBkJ2F1dHJlcyB1dGlsaXNhdGV1cnMuIFZvdHJlIGFjdGlvbiB2YSDDqWdhbGVtZW50IHN1cHByaW1lciBsJ8OpdsOpbmVtZW50IGRlIGxldXJzIGNhbGVuZHJpZXJzLiBWb3VsZXotdm91cyB2cmFpbWVudCBzdXBwcmltZXIgY2V0IMOpdsOpbmVtZW50ID88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4MSIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPkNvbmZpcm1leiBsJ2FjdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgyIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RW50cmVyIGRhbnMgbGEgc2FsbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4MyIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPkFjY8OpZGVyIMOgIGxhIHNhbGxlIGRlIGNvbmbDqXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPklsIHkgYSB1biDDqXbDqW5lbWVudCBldCB1bmUgc2FsbGUgZGUgY29uZsOpcmVuY2UgbGnDqWUgw6AgY2UgbWVzc2FnZSBwcml2w6kuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODUiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Wb3VzIGRldmV6IGVucmVnaXN0cmVyIGwnw6l2w6luZW1lbnQgZCdhYm9yZCAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODYiIG5hbWU9ImFjY2VzcyByb29tcyBlcnJvciI+CisgICAgPHZhbHVlPklsIG4neSBhIHBhcyBkZSB0ZWxsZSBzYWxsZSBsaWJyZS4gTCfDqXbDqW5lbWVudCBkYW5zIGxlIGNhbGVuZHJpZXIgZXQgZGUgbGEgc2FsbGUgYXNzb2Npw6llIGEgZMOpasOgIMOpdMOpIHN1cHByaW3DqSAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODciIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPkNob2lzaXNzZXogdm90cmUgcHNldWRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODgiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPlByw6lub208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4OSIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+Tm9tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTAiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPkUtbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkxIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5PazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkyIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5Mb25ndWV1ciBtaW5pbXVtIGRlIDQgY2FyYWN0w6hyZXMgcG91ciBsZSBwcsOpbm9tIGV0IGxlIG5vbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MyIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+VmV1aWxsZXogZW50cmVyIHVuIGUtbWFpbCB2YWxpZGUgITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk0IiBuYW1lPSJhdXRoIGZyb20iPgorICAgIDx2YWx1ZT5GYWNlYm9vazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk1IiBuYW1lPSJhdXRoIGZvcm0iPgorICAgIDx2YWx1ZT5Wb3VzIGNvbm5lY3RlciBhdmVjIHZvdHJlIGxvZ2luIEZhY2Vib29rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTYiIG5hbWU9InZpZXcgcHJvZmlsZSI+CisgICAgPHZhbHVlPkRhdGUgaW5zY3IuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTciIG5hbWU9ImRpcmVjdCBsb2dpbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Vm91cyDDqnRlcyBjb25uZWN0w6kgYXZlYyB2b3RyZSBjb21wdGUgRmFjZWJvb2suIFZvdXMgZGV2cmlleiBtZXR0cmUgw6Agam91ciB2b3RyZSBwcm9maWwgYXZlYyBsJ2UtbWFpbCBjb3JyZWN0LiBTYW5zIHF1b2kgdm91cyBuZSByZWNldnJleiBwYXMgbGVzIGludml0YXRpb25zIGV0IG1lc3NhZ2VzIHByaXbDqXMgZGVzIGF1dHJlcyB1dGlsaXNhdGV1cnMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTgiIG5hbWU9ImRpcmVjdCBsb2dpbiBtZXNzYWdlIGhlYWRlciI+CisgICAgPHZhbHVlPk1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5OSIgbmFtZT0iZGlyZWN0IGxvZ2luIG1lc3NhZ2UgY2hlY2tib3ggY29udHJvbCI+CisgICAgPHZhbHVlPk5lIHBsdXMgbW9udHJlciBsZSBtZXNzYWdlIGRlIG1pc2Ugw6Agam91ciBkdSBwcm9maWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMCIgbmFtZT0icHJvZmlsZSBzZXR0aW5ncyBidXR0b24iPgorICAgIDx2YWx1ZT5wbHVzIGQnb3B0aW9ucyBkJ2FmZmljaGFnZS4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Ob3V2ZWF1IG1lc3NhZ2UgcHJpdsOpIDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2xpcXVleiBpY2kgcG91ciBhbGxlciBkYW5zIHZvdHJlIHByb2ZpbCBldCB2b2lyIGxlIG1lc3NhZ2UgY29tcGxldC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Sw6lwb25kcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwNCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+U2FsbGVzIGV0IHQnY2hhdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwNSIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+TWVzIHNhbGxlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA2IiBuYW1lPSJteSByb29tcyI+CisgICAgPHZhbHVlPk1hIHNhbGxlIGRlIGNvbmbDqXJlbmNlIChwb3VyIDEtMTYgdXRpbGlzYXRldXJzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA3IiBuYW1lPSJteSByb29tcyI+CisgICAgPHZhbHVlPk1hIHNhbGxlIHdlYmluYXIgKHBvdXIgMS0xMjAgdXRpbGlzYXRldXJzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA4IiBuYW1lPSJyb29tIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+SWQgZHUgcHJvcHJpw6l0YWlyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA5IiBuYW1lPSJsb2dpbiBlcnJvciI+CisgICAgPHZhbHVlPlZldWlsbGV6IGVudHJlciB1biBtb3QgZGUgcGFzc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMCIgbmFtZT0ibG9naW4gZXJyb3IiPgorICAgIDx2YWx1ZT5Wb3VzIGRldmV6IGF2b2lyIHVuIGNvbXB0ZSBkZSBuaXZlYXUgVXRpbGlzYXRldXIsIE1vZMOpcmF0ZXVyIG91IEFkbWluaXN0cmF0ZXVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTEiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TZXJ2aWNlLVdlYiAoYWNjZXNzaWJsZSBzZXVsZW1lbnQgdmlhIFNPQVApPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTIiIG5hbWU9InVwbG9hZCBmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+Q2hhcmdlciBkaXJlY3RlbWVudCBzdXIgbGUgdGFibGVhdSBibGFuYzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzEzIiBuYW1lPSJ3aGl0ZWJvYXJkIGNsb3NlIGNvbmZpcm1hdGlvbiI+CisgICAgPHZhbHVlPlZvdWxlei12b3VzIHZyYWltZW50IHN1cHByaW1lciBjZSB0YWJsZWF1IGJsYW5jID8gQ2V0dGUgYWN0aW9uIG5lIHBldXQgw6p0cmUgYW5udWzDqWUgITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE0IiBuYW1lPSJ3aGl0ZWJvYXJkIGxvYWQgV01MIj4KKyAgICA8dmFsdWU+Q2hhcmdlciBzdXIgbGUgdGFibGVhdSBibGFuYzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE1IiBuYW1lPSJyZWNvcmRpbmcgZmxhZyI+CisgICAgPHZhbHVlPk4nb3VibGlleiBwYXMgZGUgY29tbWVuY2VyIGwnZW5yZWdpc3RyZW1lbnQgISBVbiB1dGlsaXNhdGV1ciBwYXIgc2FsbGUgZG9pdCB0b3Vqb3VycyBsZSBjb21tZW5jZXIgc2kgdm91cyBzb3VoYWl0ZXogYXZvaXIgbCdlbnJlZ2lzdHJlbWVudCBwYXIgbGEgc3VpdGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTYiIG5hbWU9InJlY29yZGluZyBmbGFnIj4KKyAgICA8dmFsdWU+Q29tbWVuY2VyIGwnZW5yZWdpc3RyZW1lbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxNyIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT5GbMOoY2hlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTgiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+Q2VyY2xlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTkiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+TGlnbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyMCIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT5DYXJyw6k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyMSIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT5UcmlhbmdsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIyIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+VGV4dGUvTm90ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIzIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+Q2xpcGFydHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkRlc3NpbiBsaWJyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI1IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+U8OpbGVjdGlvbm5lci9Ew6lwbGFjZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNiIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkRlc3NpbmVyIEZvcm1lczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI3IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+Q291cGVyL0TDqXBsYWNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI4IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+Wm9vbSArLy08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyOSIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkltcHJpbWVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzAiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5Ew6lmYWlyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMxIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+UG91YmVsbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMiIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkFqb3V0ZXIgR3JpbGxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzMiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5QYXJ0YWdlciBGaWNoaWVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzQiIG5hbWU9Imljb24gc3VibWVudSI+CisgICAgPHZhbHVlPlPDqWxlY3Rpb25uZXIgRm9ybWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNSIgbmFtZT0iaWNvbiBzdWJtZW51Ij4KKyAgICA8dmFsdWU+U8OpbGVjdGlvbm5lciBDbGlwYXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzYiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5Db3BpZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNyIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkNvdXBlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM4IiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+Q29sbGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzkiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5FZmZhY2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDAiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5Wb3VsZXotdm91cyB2cmFpbWVudCBlZmZhY2VyIGxlIGNvbnRlbnUgZW50aWVyIGR1IHRhYmxlYXUgYmxhbmMgPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQxIiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+Q2hhcmdlciBkaXJlY3RlbWVudCBzdXIgbGUgdGFibGVhdSBibGFuYzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQyIiBuYW1lPSJhdHRlbmRlZXMiPgorICAgIDx2YWx1ZT5QYXJ0aWNpcGFudHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MyIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+R2VzdGlvbm5haXJlIGRlIHBhcnRpY2lwYW50czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ0IiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5QcsOpc2VudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ1IiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5Db250csO0bGUgw6AgZGlzdGFuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NiIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+RWplY3RlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ3IiBuYW1lPSJjaGF0Ij4KKyAgICA8dmFsdWU+VCdjaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDgiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPkludml0ZXIgUGFydGljaXBhbnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDkiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPlBhciBlLW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1MCIgbmFtZT0iaW52aXRlIGF0dGVuZGVlIj4KKyAgICA8dmFsdWU+TCd1dGlsaXNhdGV1ciBlc3QgbW9kw6lyYXRldXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1MSIgbmFtZT0iaW52aXRlIGF0dGVuZGVlIj4KKyAgICA8dmFsdWU+TCd1dGlsaXNhdGV1ciBhIHNhIHdlYmNhbSBjb25uZWN0w6llPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTIiIG5hbWU9ImZpbGxfb3B0aW9uIj4KKyAgICA8dmFsdWU+RMOpc2FjdGl2ZXIgbGUgcmVtcGxpc3NhZ2UgZGUgZm9ybWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1MyIgbmFtZT0iZmlsbF9vcHRpb24iPgorICAgIDx2YWx1ZT5BY3RpdmVyIGxlIHJlbXBsaXNzYWdlIGRlIGZvcm1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTQiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5BaW1hbnRlciDDoCBsYSBncmlsbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NSIgbmFtZT0iYWxsb3dfcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QXV0b3Jpc2VyIGwnZW5yZWdpc3RyZW1lbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NiIgbmFtZT0id2FpdF9mb3JfcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QXR0ZW5kcmUgbCdlbnJlZ2lzdHJlbWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU3IiBuYW1lPSJoaWRlX3RvcF9iYXIiPgorICAgIDx2YWx1ZT5DYWNoZXIgbGEgYmFycmUgc3Vww6lyaWV1cmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1OCIgbmFtZT0iZmlsZUV4cGxvcmVyIj4KKyAgICA8dmFsdWU+Sm91ZXIgbGEgdmlkw6lvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTkiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5Wb3VsZXotdm91cyB2cmFpbWVudCBzdXBwcmltZXIgbGUgY29udGVudSBkdSBkb2N1bWVudCBhY3RpZiA/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjAiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPkFjY2VwdGVyIGV0IGRvbm5lciBsZSBkcm9pdCDDoCBsJ3V0aWxpc2F0ZXVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjEiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPlJlZnVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2MiIgbmFtZT0iYWN0aXZpdHlfd2luZG93Ij4KKyAgICA8dmFsdWU+SmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2MyIgbmFtZT0iYWN0aXZpdHlfd2luZG93Ij4KKyAgICA8dmFsdWU+QWN0aXZpdMOpcyBldCBhY3Rpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjQiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5TdXBwcmltZXIgbGUgdGFibGVhdSBibGFuYzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY1IiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+Vm91cyBkZXZleiBhdm9pciBsYSBtb2TDqXJhdGlvbiBvdSBsZSBkcm9pdCBkZSBkZXNzaW5lciBzdXIgbGUgdGFibGVhdSBibGFuYyBwb3VyIHN1cHByaW1lciB1biB0YWJsZWF1IGJsYW5jICE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NiIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPlBhcyBwZXJtaXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NyIgbmFtZT0idXNlcl9sZWZ0X2FjdF9tc2ciPgorICAgIDx2YWx1ZT5hIHF1aXR0w6kgbGEgc2FsbGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjgiIG5hbWU9ImNsaXBhcnQgaWNvbnMiPgorICAgIDx2YWx1ZT5JY8O0bmVzIG1hdGjDqW1hdGlxdWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjkiIG5hbWU9ImNsaXBhcnQgaWNvbnMiPgorICAgIDx2YWx1ZT5QYXMgZGUgY2F0w6lnb3JpZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzcwIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5TdHlsZSBkZSBjb3VsZXVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzcxIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5RdWFsaXTDqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzcyIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5Eb21haW5lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzMiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnZpc2l0ZXo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NCIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+cm91Z2Utb3JhbmdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzUiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnZlcnQgb2PDqWFuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzYiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPmJsZXUgYWNpZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NyIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+YmxldSBhY2llciBjbGFpcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc4IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5yb3VnZSBkb3LDqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc5IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5ncmlzIGFyZ2VudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgwIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5kw6lmaW5pIHBhciBsJ3V0aWxpc2F0ZXVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODEiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPm1laWxsZXVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODIiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPmNoYXJnZXIvZMOpcG9zZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4MyIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+bW95ZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NCIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPkNvdXBlciBsZSBtaWNybyBnbG9iYWxlbWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg1IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5BY3RpdmVyIGxlIG1pY3JvIGdsb2JhbGVtZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODYiIG5hbWU9ImdpdmUgZXhjbHVzaXZlIGF1ZGlvIj4KKyAgICA8dmFsdWU+Q291cGVyIGxlIG1pY3JvIGRlcyBhdXRyZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NyIgbmFtZT0ibXV0ZSBzZWxmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Wb3RyZSBtaWNybyBhIMOpdMOpIGdsb2JhbGVtZW50IGNvdXDDqSBwYXIgbGUgbW9kw6lyYXRldXIuIFZvdXMgbmUgcG91dmV6IHBhcyBsJ2FjdGl2ZXIgdm91cy1tw6ptZSAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODgiIG5hbWU9Im11dGUgc2VsZiBjb25maXJtIG1lc3NhZ2UgdGl0bGUiPgorICAgIDx2YWx1ZT5Db3VwZXIgbGUgbWljcm8gZ2xvYmFsZW1lbnQgPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg5IiBuYW1lPSJtdXRlIHNlbGYgY29uZmlybSBtZXNzYWdlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Wb3VsZXotdm91cyB2cmFpbWVudCBjb3VwZXIgdm90cmUgcHJvcHJlIG1pY3JvIGdsb2JhbGVtZW50ID8gUGx1cyBwZXJzb25uZSBuZSBwb3VycmEgcGx1cyB2b3VzIGVudGVuZHJlICE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5MCIgbmFtZT0ibXV0ZSBvdGhlcnMgY29uZmlybSBtZXNzYWdlIHRpdGxlIj4KKyAgICA8dmFsdWU+Q291cGVyIGxlIG1pY3JvIGxvY2FsZW1lbnQgPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkxIiBuYW1lPSJtdXRlIG90aGVycyBjb25maXJtIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Wb3VsZXotdm91cyB2cmFpbWVudCBjb3VwZXIgY2UgbWljcm8gPyBWb3VzIG5lIHBvdXZleiBsZSBjb3VwZXIgcXVlIGxvY2FsZW1lbnQgc3VyIHZvdHJlIMOpY3Jhbi4gQ2VsYSBuJ2EgcGFzIGQnZWZmZXQgc3VyIGxlcyBhdXRyZXMgdXRpbGlzYXRldXJzLiBTZXVscyBsZXMgbW9kw6lyYXRldXJzIHBldXZlbnQgY291cGVyIHVuIG1pY3JvIGdsb2JhbGVtZW50ICE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5MiIgbmFtZT0ibXV0ZSBvdGhlcnMgY29uZmlybSBtZXNzYWdlIHRpdGxlIj4KKyAgICA8dmFsdWU+Q291cGVyIGxlIG1pY3JvIGdsb2JhbGVtZW50ID88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5MyIgbmFtZT0ibXV0ZSBvdGhlcnMgbW9kZXJhdG9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Wb3VsZXotdnJhaW1lbnQgY291cGVyIGxlIG1pY3JvIGRlIGNldCB1dGlsaXNhdGV1ciBnbG9iYWxlbWVudCA/IFBsdXMgcGVyc29ubmUgbmUgcG91cnJhIGwnZW50ZW5kcmUgITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk0IiBuYW1lPSJtdXRlIHN0YXR1cyBpY29ucyI+CisgICAgPHZhbHVlPlZvdHJlIG1pY3JvIGVzdCBhbGx1bcOpLiBDbGlxdWV6IGljaSBwb3VyIGVudm95ZXIgdW4gbWVzc2FnZSBhdSBtb2TDqXJhdGV1ciBhZmluIHF1J2lsIGNvdXBlIHZvdHJlIG1pY3JvIGdsb2JhbGVtZW50IChkYW5zIHRvdXRlIGxhIHNhbGxlKSAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTUiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+Vm90cmUgbWljcm8gZXN0IGNvdXDDqS4gQ2xpcXVleiBpY2kgcG91ciBlbnZveWVyIHVuIG1lc3NhZ2UgYXUgbW9kw6lyYXRldXIgYWZpbiBxdSdpbCBhY3RpdmUgdm90cmUgbWljcm8gZ2xvYmFsZW1lbnQgKGRhbnMgdG91dGUgbGEgc2FsbGUpICE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5NiIgbmFtZT0ibXV0ZSBhcHBseSBzZWxmIG9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5zb3VoYWl0ZSBxdWUgbGUgbW9kw6lyYXRldXIgY291cGUgbW9uIG1pY3JvIGdsb2JhbGVtZW50LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk3IiBuYW1lPSJtdXRlIGFwcGx5IHNlbGYgb2ZmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5zb3VoYWl0ZSBxdWUgbGUgbW9kw6lyYXRldXIgYWN0aXZlIG1vbiBtaWNybyBnbG9iYWxlbWVudC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5OCIgbmFtZT0ibXV0ZSBhcHBseSBvZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+c291aGFpdGUgcXVlIGxlIG1vZMOpcmF0ZXVyIGFjdGl2ZSBzb24gbWljcm8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTkiIG5hbWU9Im11dGUgYXBwbHkgb2YgbWVzc2FnZSI+CisgICAgPHZhbHVlPnNvdWhhaXRlIHF1ZSBsZSBtb2TDqXJhdGV1ciBjb3VwZSBzb24gbWljcm8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDAiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+QWN0aXZlciBtaWNyby4gQ2xpcXVleiBpY2kgcG91ciBjb3VwZXIgc29uIG1pY3JvIGdsb2JhbGVtZW50ICE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMSIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5Db3VwZXIgbWljcm8uIENsaXF1ZXogaWNpIHBvdXIgYWN0aXZlciBzb24gbWljcm8gZ2xvYmFsZW1lbnQgITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDAyIiBuYW1lPSJtdXRlIHNlbGYgbWVzc2FnZSI+CisgICAgPHZhbHVlPkxlIG1pY3JvIGRlIGNldCB1dGlsaXNhdGV1ciBlc3QgY291cMOpIGdsb2JhbGVtZW50IHBhciBsZSBtb2TDqXJhdGV1ci4gVm91cyBuZSBwb3V2ZXogcGFzIGwnYWN0aXZlciAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDMiIG5hbWU9Im11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5Db3VwZXIgdm90cmUgbWljcm8gZ2xvYmFsZW1lbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwNCIgbmFtZT0idW5tdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+QWN0aXZlciB2b3RyZSBtaWNybyBnbG9iYWxlbWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA1IiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+Q291cGVyIG1pY3JvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDYiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPkFjdGl2ZXIgbWljcm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwNyIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPkNvdXBlciBsZSBtaWNybyBnbG9iYWxlbWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA4IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5BY3RpdmVyIG1pY3JvIGdsb2JhbGVtZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDkiIG5hbWU9Im11dGUgbW9kZXJhdG9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZXVscyBsZXMgbW9kw6lyYXRldXJzIHBldXZlbnQgY291cGVyIG91IGFjdGl2ZXIgbGUgbWljcm8gZCd1biB1dGlsaXNhdGV1ciBnbG9iYWxlbWVudCAhIFBvdXIgY291cGVyIHZvdHJlIHByb3ByZSBtaWNybyA6IHZldWlsbGV6IHV0aWxpc2VyIGwnaWPDtG5lIG1pY3JvcGhvbmUgc3VyIHZvdHJlIGZlbsOqdHJlIHZpZMOpbyAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTAiIG5hbWU9InBvbGxfbmFtZSI+CisgICAgPHZhbHVlPk5vbSBkdSBzb25kYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTEiIG5hbWU9InBvbGxfbmFtZSI+CisgICAgPHZhbHVlPlZvdXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMiIgbmFtZT0iYXJjaGl2ZWRfcG9sbHMiPgorICAgIDx2YWx1ZT5Tb25kYWdlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDEzIiBuYW1lPSJhY3RpdmVfcG9sbCI+CisgICAgPHZhbHVlPmFjdGlmPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTQiIG5hbWU9ImNoYXJ0X3NpbXBsZSI+CisgICAgPHZhbHVlPlNpbXBsZSBncmFwaGlxdWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNSIgbmFtZT0iY2hhcnRfcGllIj4KKyAgICA8dmFsdWU+R3JhcGhpcXVlIGNhbWVtYmVydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE2IiBuYW1lPSJzaWduX3VwX3ZhbGlkYXRpb24iPgorICAgIDx2YWx1ZT5WZXVpbGxleiBlbnRyZXIgZS1tYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTciIG5hbWU9ImNoYXRfbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+Tm91dmVhdSh4KSBtZXNzYWdlKHMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTgiIG5hbWU9InBvbGxfY2xvc2UiPgorICAgIDx2YWx1ZT5DbMO0dHVyZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxOSIgbmFtZT0icG9sbF9jbG9zZV9jb25maXJtIj4KKyAgICA8dmFsdWU+RXRlcy12b3VzIHPDu3IgZGUgdm91bG9pciBjbG9yZSBjZSBzb25kYWdlID8gUGx1cyBwZXJzb25uZSBuZSBwb3VycmEgcGx1cyB2b3Rlci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMCIgbmFtZT0icG9sbF9kZWxldGUiPgorICAgIDx2YWx1ZT5TdXBwcmltZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMSIgbmFtZT0icG9sbF9kZWxldGVfY29uZmlybSI+CisgICAgPHZhbHVlPkV0ZXMtdm91cyBzw7tyIGRlIHZvdWxvaXIgc3VwcHJpbWVyIGNlIHNvbmRhZ2UgPyBMZXMgcsOpc3VsdGF0cyBzZXJvbnQgc3VwcHJpbcOpcyDDqWdhbGVtZW50LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIyIiBuYW1lPSJsYW5ndWFnZV9jb2RlIj4KKyAgICA8dmFsdWU+Q29kZSBJUyBkZSBsYSBsYW5ndWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMyIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX3Blcm1pc3Npb24iPgorICAgIDx2YWx1ZT5BdXRvcmlzZXIvUmVmdXNlciBsZSBkcm9pdCBkZSBkb25uZXIgbCdhdWRpbyBleGNsdXNpZjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI0IiBuYW1lPSJhbGxvd19leGNsdXNpdmVfYXVkaW9fcGVybWlzc2lvbiI+CisgICAgPHZhbHVlPkF1dG9yaXNlciBsJ3V0aWxpc2F0ZXVyIMOgIGRvbm5lciBsJ2F1ZGlvIGV4Y2x1c2lmPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjUiIG5hbWU9ImRlbnlfZXhjbHVzaXZlX2F1ZGlvX3Blcm1pc3Npb24iPgorICAgIDx2YWx1ZT5SZWZ1c2VyIMOgIGwndXRpbGlzYXRldXIgZGUgZG9ubmVyIGwnYXVkaW8gZXhjbHVzaWY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNiIgbmFtZT0iZXhjbF9hdWRpbyBhcHBseSBzZWxmIG9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5zb3VoYWl0ZSBhdm9pciBsYSBwZXJtaXNzaW9uIGQnYXZvaXIgbCdhdWRpbyBleGNsdXNpZi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNyIgbmFtZT0iZXhjbF9hdWRpbyBhcHBseSBvZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+c291aGFpdGUgcXVlIGxlIG1vZMOpcmF0ZXVyIG1lIGRvbm5lIGxhIHBlcm1pc3Npb24gZCdhdWRpbyBleGNsdXNpZi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyOCIgbmFtZT0iZXhjbF9hdWRpbyBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5Eb25uZXIgdW5lIHBlcm1pc3Npb24gZCdhdWRpbyBleGNsdXNpZi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyOSIgbmFtZT0iY2FtX3Jlc29sdXRpb24iPgorICAgIDx2YWx1ZT5Sw6lzb2x1dGlvbiBjYW3DqXJhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzAiIG5hbWU9ImNhbV9yZXNvbHV0aW9uX2luZm8iPgorICAgIDx2YWx1ZT5DaGFuZ2VyIGxhIHLDqXNvbHV0aW9uIGFmZmVjdGUgbGEgYmFuZGUgcGFzc2FudGUsIHVuZSBpbWFnZSBwbHVzIGdyYW5kZSDDoCBiZXNvaW4gZGUgcGx1cyBkZSBiYW5kZSBwYXNzYW50ZSAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzEiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19lcnJvciI+CisgICAgPHZhbHVlPlZvdXMgbidhdmV6IHBhcyBsJ2F1dG9yaXNhdGlvbiBkZSB2b3VzIGRvbm5lciDDoCB2b3VzIG91IGF1eCBhdXRyZXMgbCdhdWRpbyBleGNsdXNpZi4gVm91cyBkZXZleiBkZW1hbmRlciBjZXR0ZSBhdXRvcmlzYXRpb24gYXUgbW9kw6lyYXRldXIgb3UgbHVpIGRlbWFuZGVyIGRlIGxlIGZhaXJlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMyIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fYXNrIj4KKyAgICA8dmFsdWU+SmUgc291aGFpdGUgYXZvaXIgbGUgZHJvaXQgZCdhdm9pciBsJ2F1ZGlvIGV4Y2x1c2lmPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzMiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19hY3Rpb24iPgorICAgIDx2YWx1ZT5NZSBkb25uZSBsJ2F1ZGlvIGV4Y2x1c2lmIChhbHRlcm5hdGl2ZW1lbnQgY2xpcXVleiBzdXIgdm90cmUgZmVuw6p0cmUgdmlkw6lvIG91IGFwcHV5ZXogc3VyIEYxMik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNCIgbmFtZT0ibWljcm8gaXMgb24iPgorICAgIDx2YWx1ZT5NaWNyb3Bob25lIGVzdCBhbGx1bcOpICE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNSIgbmFtZT0ibWljcm8gaXMgb2ZmIj4KKyAgICA8dmFsdWU+TWljcm9waG9uZSBlc3QgY291cMOpICE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNiIgbmFtZT0iaGlkZV9jaGF0Ij4KKyAgICA8dmFsdWU+Q2FjaGVyIGxlIHQnY2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM3IiBuYW1lPSJoaWRlX2FjdGl2aXRpZXNfYW5kX2FjdGlvbnMiPgorICAgIDx2YWx1ZT5DYWNoZXIgbGVzIGFjdGl2aXTDqXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzOCIgbmFtZT0iaGlkZV9maWxlc19leHBsb3JlciI+CisgICAgPHZhbHVlPkNhY2hlciBsJ2V4cGxvcmF0ZXVyIGRlIGZpY2hpZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzkiIG5hbWU9ImhpZGVfYWN0aW9uc19tZW51Ij4KKyAgICA8dmFsdWU+Q2FjaGVyIGxlIG1lbnUgYWN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQwIiBuYW1lPSJoaWRlX3NjcmVlbl9zaGFyaW5nIj4KKyAgICA8dmFsdWU+Q2FjaGVyIGxlIHBhcnRhZ2UgZCfDqWNyYW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MSIgbmFtZT0iaGlkZV93aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+Q2FjaGVyIGxlIHRhYmxlYXUgYmxhbmM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MiIgbmFtZT0ic2hvdyBtaWNyb3Bob25lIHN0YXR1cyI+CisgICAgPHZhbHVlPkFmZmljaGVyIGxlIHN0YXR1dCBkdSBtaWNybzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQzIiBuYW1lPSJsYXlvdXRfb3B0aW9ucyI+CisgICAgPHZhbHVlPk9wdGlvbnMgZGUgZGlzcG9zaXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0NCIgbmFtZT0iY2FsZW5kYXIgbmV3IGJ1dHRvbiI+CisgICAgPHZhbHVlPk5vdXZlbCDDqXbDqW5lbWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ1IiBuYW1lPSJjYWxlbmRhciBwYXNzd29yZCBpbmZvIHRleHQiPgorICAgIDx2YWx1ZT5MZXMgbGllbnMgZW52b3nDqXMgYXV4IHBhcnRpY2lwYW50cyBwb3VyIHVuZSBjb25mw6lyZW5jZSBsb3JzcXVlIHZvdXMgc2F1dmV6IGxlIGNhbGVuZHJpZXIgc29udCBwcm90w6lnw6lzIHBhciBtb3QgZGUgcGFzc2UsIHBhcyBsYSBzYWxsZSAhIENlbGEgc2lnbmlmaWUgcXVlIHNpIHZvdXMgc2F1dmV6IGwnw6l2w6luZW1lbnQgcGx1c2lldXJzIGZvaXMgYXZlYyB1biBtb3QgZGUgcGFzc2UgZGlmZsOpcmVudCwgY2hhcXVlIHBhcnRpY2lwYW50IHJlY2V2cmEgdW4gbm91dmVhdSBsaWVuIGF2ZWMgdW4gbW90IGRlIHBhc3NlIGRpZmbDqXJlbnQuIExlcyBhbmNpZW5zIGxpZW5zIHNvbnQgdG91am91cnMgdmFsYWJsZXMgdW5lIGZvaXMgZW52b3nDqXMgITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ2IiBuYW1lPSJjYWxlbmRhciBlZGl0IGJ1dHRvbiI+CisgICAgPHZhbHVlPkVkaXRlciBsZXMgZMOpdGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0NyIgbmFtZT0ic2lwIHNob3cgZGlhbGVyIj4KKyAgICA8dmFsdWU+QWZmaWNoZXIgY29tcG9zZXVyIFNJUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ4IiBuYW1lPSJzaXAgY2FsbCI+CisgICAgPHZhbHVlPkFwcGVsZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0OSIgbmFtZT0iY2FsZW5kYXIgY29udGFjdCBsaXN0Ij4KKyAgICA8dmFsdWU+QWZmaWNoZXIgbGVzIMOpdsOpbmVtZW50cyBkdSBjb250YWN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTAiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPlZvdHJlIHBhZ2UgZCdhY2N1ZWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTEiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk9yZ2FuaXNlciBsZXMgcsOpdW5pb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTIiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPlJlZ2FyZGVyIGxlcyBlbnJlZ2lzdHJlbWVudHMgZXQgbGVzIGludGVydmlld3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MyIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+Q2hvaXNpciBldCBkw6ltYXJyZXIgdW5lIGNvbmbDqXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTQiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPkfDqXJlciBsZXMgdXRpbGlzYXRldXJzIGV0IGxlcyBkcm9pdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1NSIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+R8OpcmVyIGxlcyBjb25uZWN0aW9ucyBldCDDqWplY3RlciBkZXMgdXRpbGlzYXRldXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTYiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPkfDqXJlciBsZXMgZ3JvdXBlcyBkJ3V0aWxpc2F0ZXVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU3IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5Hw6lyZXIgbGVzIHNhbGxlcyBkZSBjb25mw6lyZW5jZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1OCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+R8OpcmVyIGxlcyBwYXJhbcOodHJlcyBzeXN0w6htZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU5IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5Hw6lyZXIgbGVzIMOpdGlxdWV0dGVzIGV0IGxlcyBmb3JtdWxhdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+R8OpcmVyIGxlcyBjb25maWd1cmF0aW9ucyBMREFQIGV0IEFEUzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYxIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5FeHBvcnRlci9JbXBvcnRlciBsZXMgc2F1dmVnYXJkZXMgc3lzdMOobWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlZvdXMgZGV2ZXogw6p0cmUgbW9kw6lyYXRldXIgb3UgYXZvaXIgbGUgZHJvaXQgZCdhY2PDqWRlciBhdSB0YWJsZWF1IGJsYW5jIHBvdXIgcG91dm9pciBkw6lwb3NlciBvdSB0w6lsw6ljaGFyZ2VyIGRlcyBmaWNoaWVycyBvdSBwb3VyIGFqb3V0ZXIgb3Ugc3VwcHJpbWVyIGRlcyBkb3NzaWVycy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MyIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkVkaXRlciB0ZXh0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY0IiBuYW1lPSJzYWx1dGF0aW9uIj4KKyAgICA8dmFsdWU+UHJvZjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY1IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlB1YmxpZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2NiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5Db21tZW5jZXIgbGEgZGlmZnVzaW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjciIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+QXJyw6p0ZXIgbGEgZGlmZnVzaW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+SMO0dGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2OSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5BcHA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDcxIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlLDqWR1aXNleiBsYSBsYXJnZXVyIGRlIGwnw6ljcmFuIGF2YW50IGRlIGxlIGTDqXBsYWNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDcyIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlLDqWR1aXNleiBsYSBoYXV0ZXVyIGRlIGwnw6ljcmFuIGF2YW50IGRlIGxlIGTDqXBsYWNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDczIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlLDqWR1aXNleiAneCcgYXZhbnQgZCdhZ3JhbmRpcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc0IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlLDqWR1aXNleiAneScgYXZhbnQgZCdhZ3JhbmRpcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc1IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkNvbXBsw6l0ZXogY2VzIHBhcmFtw6h0cmVzIHBvdXIgZGlmZnVzZXIgdm90cmUgw6ljcmFuIHZlcnMgdW4gc2l0ZSB0aWVycy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3NiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5WZXVpbGxleiBkw6ltYXJyZXIgbGUgcGFydGFnZSBkJ8OpY3JhbiBwb3VyIHBvdXZvaXIgbGUgZGlmZnVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3NyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5MYSBwZXJtaXNzaW9uIGR1IG1vZMOpcmF0ZXVyIGVzdCByZXF1aXNlIHBvdXIgZW5yZWdpc3RyZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3OCIgbmFtZT0ibm8gcmlnaHQgZm9yIGV4Y2x1c2l2ZSBhdWRpbyI+CisgICAgPHZhbHVlPlZvdXMgbidhdmV6IHBhcyBsYSBwZXJtaXNzaW9uIGRlIGRvbm5lciBsJ2F1ZGlvIGV4Y2x1c2lmIMOgIHVuIHBhcnRpY2lwYW50LiBWb3VzIGRldmV6IMOqdHJlIG1vZMOpcmF0ZXVyIG91IGF2b2lyIGxlIGRyb2l0IGRlIGRvbm5lciBsJ2F1ZGlvIGV4Y2x1c2lmLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc5IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5DaGFyZ2VyIHVuIGZpY2hpZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+T3V2cmUgbGEgZmVuw6p0cmUgZGVzIHBhcmFtw6h0cmVzIGR1IHBhcnRhZ2UgZCfDqWNyYW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+VW4gbW9kw6lyYXRldXIgZXhpc3RhbnQgZG9pdCBsJ2FwcHJvdXZlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgyIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5EZW1hbmRlciBhdSBtb2TDqXJhdGV1ciBkZSBwb3V2b2lyIHBhcnRhZ2VyIHZvdHJlIG1pY3JvL2NhbcOpcmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MyIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+UHJvcG9zZXogYXV4IHV0aWxpc2F0ZXVycyBkZSB2b3RlciBlbiByw6lwb25kYW50IMOgIHVuIHNvbmRhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+TGVzIHLDqXN1bHRhdHMgZ3JhcGhpcXVlcyBkZXMgc29uZGFnZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Vm90ZXIgcydpbCBleGlzdGUgdW4gc29uZGFnZSBhY3RpdsOpIGRhbnMgY2V0dGUgc2FsbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NiIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+RWRpdGVyIGxlcyBwYXJhbcOodHJlcyBkZSBsYSBjYW3DqXJhIGV0IGR1IG1pY3JvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODciIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkNvbmZpcm1lciBldCBxdWl0dGVyIGxhIHNhbGxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODgiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkFwcGVsZXIgdW5lIHBlcnNvbm5lIGV4dMOpcmlldXJlIHZpYSBWb0lQL1NJUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg5IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5FbnZveWVyIHVuIG1haWwgYXZlYyB1biBsaWVuIGRpcmVjdCB2ZXJzIGNldHRlIHNhbGxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTAiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkNoYW5nZXIgbGVzIHBhcmFtw6h0cmVzIGRlIHZvdHJlIHRhYmxlYXUgYmxhbmM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MSIgbmFtZT0iYmFja3VwIGFkbWluIj4KKyAgICA8dmFsdWU+VGFpbGxlIG1heGltdW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MiIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+RGVtYW5kZXIgYXUgbW9kw6lyYXRldXIgbGUgZHJvaXQgZGUgcGFydGFnZXIgdm90cmUgdGFibGVhdSBibGFuYzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkzIiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5Ew6ltYXJyZXIgdCdjaGF0IHByaXbDqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk0IiBuYW1lPSJhbGxfcHJpdmF0ZV9jaGF0Ij4KKyAgICA8dmFsdWU+VG91czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk1IiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5Wb3VzIG5lIHBvdXZleiBwYXMgZMOpbWFycmVyIHVuIHQnY2hhdCBwcml2w6kgYXZlYyB2b3VzLW3Dqm1lLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk2IiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5Wb3VzIGF2ZXogZMOpasOgIGTDqW1hcnLDqSB1biB0J2NoYXQgcHJpdsOpIGF2ZWMgY2UgcGFydGljaXBhbnQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTciIG5hbWU9InByaXZhdGUgY2hhdCI+CisgICAgPHZhbHVlPlZvdWxlei12b3VzIHZyYWltZW50IHN1cHByaW1lciBjZSB0J2NoYXQgcHJpdsOpID88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5OCIgbmFtZT0iU2VydmVycyI+CisgICAgPHZhbHVlPlNlcnZldXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTkiIG5hbWU9IlNlcnZlcnMiPgorICAgIDx2YWx1ZT5TZXJ2ZXVycyBkYW5zIGxlIGdyb3VwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAwIiBuYW1lPSJTZXJ2ZXIgbmFtZSI+CisgICAgPHZhbHVlPk5vbSBkdSBzZXJ2ZXVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDEiIG5hbWU9IlNlcnZlciBBZGRyZXNzIj4KKyAgICA8dmFsdWU+QWRyZXNzZSBkdSBzZXJ2ZXVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDIiIG5hbWU9IlNlcnZlciBkZXRhaWxzIj4KKyAgICA8dmFsdWU+RMOpdGFpbHMgZHUgc2VydmV1cjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAzIiBuYW1lPSJTZW5kIFNNUyI+CisgICAgPHZhbHVlPkVudm95ZXIgU01TPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDQiIG5hbWU9InB1Ymxpc2hpbmdfbWVzc2FnZSI+CisgICAgPHZhbHVlPlB1YmxpZXIuIFV0aWxpc2F0ZXVyIDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNSIgbmFtZT0iY21kX2xpbmVfYWRtaW4iPgorICAgIDx2YWx1ZT5Qb3VyIMOpY29ub21pc2VyIGR1IHRlbXBzIGV0IGRlIGxhIGJhbmRlIHBhc3NhbnRlIHZvdXMgcG91dmV6IHV0aWxpc2VyIGxhIGxpZ25lIGRlIGNvbW1hbmRlIHBvdXIgc2F1dmVnYXJkZXIvcmVzdGF1cmVyL21ldHRyZSDDoCBuaXZlYXUgdm90cmUgc3lzdMOobWUgOlxuIDEpIEFsbGVyIGRhbnMgbGUgcsOpcGVydG9pcmUgZCdpbnN0YWxsYXRpb24gZCdPTSAocGFyIGV4LiAvb3B0L3JlZDUpIFxuIDIpIEFycsOqdGVyIE9NIChwYXIgZXguIC4vcmVkNS1zaHV0ZG93bi5zaClcbiAzKSAuL2FkbWluLnNoIC1iIC1maWxlIH4vbm9tX2R1X2JhY2t1cC56aXAgKGNyw6llciBsYSBzYXV2ZWdhcmRlIGQnT00pXG4gNCkgdMOpbMOpY2hhcmdlciBsYSBub3V2ZWxsZSB2ZXJzaW9uIGQnT01cbiA1KSBtdiAvb3B0L3JlZDUgL29wdC5yZWQ1LmJhayAoZMOpcGxhY2VyIGxhIHZlcnNpb24gZCdPTSBxdWkgZm9uY3Rpb25uZSBwYXIgc8OpY3VyaXTDqS4pXG4gNikgZXh0cmFpcmUgbGEgbm91dmVsbGUgdmVyc2lvbiBkJ09NIGRhbnMgL29wdC9yZWQ1XG4gNykgLi9hZG1pbi5zaCAtaSAtZmlsZSB+L3RvZGF5X29tX2JhY2t1cC56aXAgKG91ICcuL2FkbWluLnNoIC1pIC1maWxlIH4vdG9kYXlfb21fYmFja3VwLnppcCAtLWRiLXR5cGUgbXlzcWwgLS1kYi11c2VyIG9tX3VzZXIgLS1kYi1wYXNzIG9tX3VzZXJfcGFzcycgZGFucyBsZSBjYXMgZCd1bmUgQkQgcXVpIG4nZXN0IHBhcyBjZWxsZSBwYXIgZMOpZmF1dCApXG4gOCkgRMOpbWFycmVyIE9NXG48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNiIgbmFtZT0icHVibGljX3Jvb21fdG9vbHRpcCI+CisgICAgPHZhbHVlPlNhbGxlcyBwb3VyIHRvdXMgbGVzIHV0aWxpc2F0ZXVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA3IiBuYW1lPSJwcml2YXRlX3Jvb21fdG9vbHRpcCI+CisgICAgPHZhbHVlPlNhbGxlcyBwb3VyIGxlcyB1dGlsaXNhdGV1cnMgZHUgZ3JvdXBlIGFjdHVlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA4IiBuYW1lPSJteV9yb29tX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5TYWxsZXMgZGUgbCd1dGlsaXNhdGV1cjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA5IiBuYW1lPSJjcmVhdGVfbmV3X3Jvb20iPgorICAgIDx2YWx1ZT5DcsOpZXIvTW9kaWZpZXIgc2FsbGUgcGFydGljdWxpw6hyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTEwIiBuYW1lPSJtdWx0aXBsZV9hZGRyZXNzZXMiPgorICAgIDx2YWx1ZT5Wb3VzIHBvdXZleiBlbnRyZXIgcGx1c2lldXJzIGFkcmVzc2VzIHNvdXMgbGUgZm9ybWF0IDogcHLDqW5vbTEgbm9tMSAmbHQ7ZS1tYWlsMSZndDssInByw6lub20yIG5vbTIiICZsdDtlLW1haWwyJmd0OywncHLDqW5vbTMgbm9tMycgJmx0O2UtbWFpbDMmZ3Q7LCAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxMSIgbmFtZT0ic3RyZWFtX3ZvbHVtZSI+CisgICAgPHZhbHVlPkFqdXN0ZXIgbGUgdm9sdW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTIiIG5hbWU9Im1pY3JvcGhvbmVfdm9sdW1lIj4KKyAgICA8dmFsdWU+QWp1c3RlciBsZSB2b2x1bWUgZHUgbWljcm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxMyIgbmFtZT0iY2hhdF9tb2RlcmF0ZWQiPgorICAgIDx2YWx1ZT5UJ2NoYXQgZXN0LXQtaWwgbW9kw6lyw6k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNCIgbmFtZT0iY2hhdF9tb2RlcmF0ZWQiPgorICAgIDx2YWx1ZT5BdXRvcmlzZXIgbGVzIG1lc3NhZ2VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTUiIG5hbWU9ImNoYXRfb3BlbmVkIj4KKyAgICA8dmFsdWU+UGFubmVhdSBkZSB0J2NoYXQgb3V2ZXJ0IHBhciBkw6lmYXV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTYiIG5hbWU9ImZpbGVzX29wZW5lZCI+CisgICAgPHZhbHVlPlBhbm5lYXUgZGVzIGZpY2hpZXJzIG91dmVydCBwYXIgZMOpZmF1dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE3IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gc2VjdGlvbiBsYXN0cGluZyI+CisgICAgPHZhbHVlPkRlcm5pZXIgcGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE4IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gc2VjdGlvbiBsYXN0cGluZyBpbmZvIj4KKyAgICA8dmFsdWU+Q2hhcXVlICdlc2NsYXZlJyBlbnZvaWUgdW4gcGluZyBhdSBtYWl0cmUgdG91dGVzIGxlcyAzIHNlY29uZGVzIChjb25maWd1cmFibGUpLiBMZSBkZXJuaWVyIHBpbmcgZG9pdCDDqnRyZSBpbmbDqXJpZXVyIMOgIDEgbWludXRlIHBvdXIgcXVlIGxlIG1haXRyZSB1dGlsaXNlIGwnZXNjbGF2ZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxOSIgbmFtZT0ic2VydmVyIGFkbWluIHBvcnQiPgorICAgIDx2YWx1ZT5Qb3J0IEhUVFA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyMCIgbmFtZT0ic2VydmVyIGFkbWluIHVzZXIiPgorICAgIDx2YWx1ZT5VdGlsaXNhdGV1ciAoQWNjw6hzIFNPQVApPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjEiIG5hbWU9InNlcnZlciBhZG1pbiBwYXNzd29yZCI+CisgICAgPHZhbHVlPk1vdCBkZSBwYXNzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIyIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gd2ViYXBwIHBhdGgiPgorICAgIDx2YWx1ZT5DaGVtaW4gdmVycyBXZWJhcHA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyMyIgbmFtZT0ic2VydmVyIGFkbWluIHByb3RvY29sIj4KKyAgICA8dmFsdWU+UHJvdG9jb2xlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjQiIG5hbWU9InNlcnZlciBhZG1pbiBwaW5nIHJ1bm5pbmciPgorICAgIDx2YWx1ZT5QaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjUiIG5hbWU9InNlcnZlciBhZG1pbiBhY3RpdmUiPgorICAgIDx2YWx1ZT5BY3RpZjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI2IiBuYW1lPSJnZW5lcmF0ZV9oYXNoIj4KKyAgICA8dmFsdWU+R8OpbsOpcmVyIFVSTDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI3IiBuYW1lPSJuZXR3b3JrIHRlc3RpbmcgbGluayI+CisgICAgPHZhbHVlPlRlc3QgcsOpc2VhdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI4IiBuYW1lPSJyb29tX29wdGlvbnMiPgorICAgIDx2YWx1ZT5Tw6lsZWN0aW9uIGF1dG8gZGUgbGEgZmVuw6p0cmUgdmlkw6lvIGRlIGwnaW50ZXJ2aWV3PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjkiIG5hbWU9ImZvbnRfdW5kZXJsaW5lIj4KKyAgICA8dmFsdWU+U291bGlnbsOpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzAiIG5hbWU9ImZvbnRfc3R5bGUiPgorICAgIDx2YWx1ZT5TdHlsZSBkZSBwb2xpY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMSIgbmFtZT0iYWxsb3dfZm9udF9zdHlsZXMiPgorICAgIDx2YWx1ZT5BdXRvcmlzZXIgbGVzIHN0eWxlcyBkZSBwb2xpY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMiIgbmFtZT0iZm9udF9jb2xvciI+CisgICAgPHZhbHVlPkNvdWxldXIgZGUgcG9saWNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzMiIG5hbWU9Imh5cGVybGluayI+CisgICAgPHZhbHVlPkh5cGVybGllbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM0IiBuYW1lPSJjb25uZWN0aW9uIGFkbWluIj4KKyAgICA8dmFsdWU+TW9udHJlciBsZXMgc3RhdGlzdGlxdWVzIGRlIHNlc3Npb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNSIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbiI+CisgICAgPHZhbHVlPkTDqXRhaWxzIGRlIHNlc3Npb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNiIgbmFtZT0ic3lzdGVtX2ltcG9ydCI+CisgICAgPHZhbHVlPkltcG9ydGVyIFN5c3TDqG1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzciIG5hbWU9ImluY2x1ZGVfaW50b19iYWNrdXAiPgorICAgIDx2YWx1ZT5JbmNsdXJlIGxlcyBmaWNoaWVycyB1cGxvYWTDqXMgZXQgbGVzIGVucmVnaXN0cmVtZW50cyBkYW5zIGxlIGJhY2t1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM4IiBuYW1lPSJyb29tX2FkbWluX3NpcCI+CisgICAgPHZhbHVlPkFjdGl2ZXIgbGUgdHJhbnNwb3J0IFNJUCBkYW5zIGxhIHNhbGxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzkiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19jb25maXJtIj4KKyAgICA8dmFsdWU+Vm91bGV6LXZvdXMgdnJhaW1lbnQgZG9ubmVyIGwnYXVkaW8gZXhjbHVzaWYgw6AgY2V0IHV0aWxpc2F0ZXVyID88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU0MCIgbmFtZT0ibm9fdGltZXpvbmUiPgorICAgIDx2YWx1ZT5QbGVhc2Ugc3BlY2lmeSB5b3VyIHRpbWV6b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NDUiIG5hbWU9ImNvbnRlbnRfaXNfc2F2aW5nIj4KKyAgICA8dmFsdWU+Q29udGVudCBpcyBTYXZpbmcsIFBsZWFzZSB3YWl0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorPC9sYW5ndWFnZT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL2dhbGljaWFuLnhtbCBiL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL2dhbGljaWFuLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjg2ZmYwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9sYW5ndWFnZXMvZ2FsaWNpYW4ueG1sCkBAIC0wLDAgKzEsNDY1MiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKworPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworVGhpcyBGaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5IHRoZSBMYW5ndWFnZUVkaXRvciAKK3RvIGFkZCBuZXcgTGFuZ3VhZ2VzIG9yIG1vZGlmeS9jdXN0b21pemUgaXQgdXNlIHRoZSBMYW5ndWFnZUVkaXRvciAKK3NlZSBodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvTGFuZ3VhZ2VFZGl0b3IuaHRtbCBmb3IgRGV0YWlscyAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjLS0+Cis8bGFuZ3VhZ2UgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeG1sbnM6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbj0ibGFuZ3VhZ2UueHNkIj4KKyAgPHN0cmluZyBpZD0iMSIgbmFtZT0iY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPkNvbmZlcmVuY2lhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIiIG5hbWU9Im1lZXRpbmciPgorICAgIDx2YWx1ZT5YdW50YW56YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzIiBuYW1lPSJjbGFzc3Jvb20iPgorICAgIDx2YWx1ZT5FdmVudG9zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQiIG5hbWU9InNldHRpbmdzIj4KKyAgICA8dmFsdWU+QXh1c3RlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1IiBuYW1lPSJiZW51dHplciI+CisgICAgPHZhbHVlPlBlcmbDrWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNiIgbmFtZT0iYWRtaW4iPgorICAgIDx2YWx1ZT5BZG1pbmlzdHJhY2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNyIgbmFtZT0ic3RvcCI+CisgICAgPHZhbHVlPlBhcmFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkdyYXZhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5IiBuYW1lPSJub2ZpbGUiPgorICAgIDx2YWx1ZT5Ob24gaGFpIG5pbmfDrW4gZmljaGVpcm8gZGlzcG/DscOtYmVsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwIiBuYW1lPSJyZWNvcmRieXRlYWNoZXIiPgorICAgIDx2YWx1ZT5HcmF2YWRvIHBvbG8gcHJvZmVzb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEiIG5hbWU9ImNvbm5lY3RlZHVzZXJzIj4KKyAgICA8dmFsdWU+VXN1YXJpb3MgY29uZWN0YWRvczo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIiIG5hbWU9InN0YXJ0Y29uZiI+CisgICAgPHZhbHVlPkluaWNpYXIgdW5oYSBjb25mZXJlbmNpYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMyIgbmFtZT0ibXluYW1lIj4KKyAgICA8dmFsdWU+TyBtZXUgbm9tZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNCIgbmFtZT0idmlkZW9jb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+VsOtZGVvIGNvbmZlcmVuY2lhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1IiBuYW1lPSJpbXBvcnQiPgorICAgIDx2YWx1ZT5FbnZpYXIgdW4gZmljaGVpcm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYiIG5hbWU9InJlZnJlc2hmaWxlcyI+CisgICAgPHZhbHVlPkFjdHVhbGl6YXIgYSBsaXN0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNyIgbmFtZT0idG9tYWluZmlsZSI+CisgICAgPHZhbHVlPk1hcmNhciBjb21vIGZpY2hlaXJvIHByaW5jaXBhbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOCIgbmFtZT0ibmV3cG9sbCI+CisgICAgPHZhbHVlPk5vdmEgZW5xdWlzYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOSIgbmFtZT0ibmV3cG9sbGhlYWRlciI+CisgICAgPHZhbHVlPk5vdmEgZW5xdWlzYSBwYXJhIGEgY29uZmVyZW5jaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAiIG5hbWU9InF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+UHJlZ3VudGE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxIiBuYW1lPSJwb2xsdHlwZSI+CisgICAgPHZhbHVlPlRpcG8gZGUgZW5xdWlzYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIiIG5hbWU9ImNyZWF0ZSI+CisgICAgPHZhbHVlPkNyZWFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzIiBuYW1lPSJpbmZvbWVzc2FnZSI+CisgICAgPHZhbHVlPkluZm9ybWFjacOzbjogQ2FkYSB1c3VhcmlvIGNvbmVjdGFkbyByZWNpYmUgdW5oYSBtZW5zYXhlIGNvYSBub3ZhIGVucXVpc2EuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0IiBuYW1lPSJjcmVhdHBvbGwiPgorICAgIDx2YWx1ZT5DcmVhciB1bmhhIGVucXVpc2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUiIG5hbWU9ImNhbmNlbCI+CisgICAgPHZhbHVlPkNhbmNlbGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2IiBuYW1lPSJ5ZXNubyI+CisgICAgPHZhbHVlPlPDrS9Ob248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjciIG5hbWU9Im51bWVyaWMiPgorICAgIDx2YWx1ZT5WYWxvciBudW3DqXJpY28gMS0xMDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOCIgbmFtZT0icG9sbCI+CisgICAgPHZhbHVlPkVucXVpc2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkiIG5hbWU9Im1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5QcmVjaXNhc2Ugc2VyIG1vZGVyYWRvciBwYXJhIGNyZWFyIHVuaGEgZW5xdWlzYS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAiIG5hbWU9InZvdGUiPgorICAgIDx2YWx1ZT5PIHNldSB2b3RvIGZvaSByZXhpc3RyYWRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxIiBuYW1lPSJhbHJlYWR5dm90ZWQiPgorICAgIDx2YWx1ZT5YYSByZXNwb3N0b3Ugw6EgZW5xdWlzYSBwcmV2aWFtZW50ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMiIgbmFtZT0idm90aW5nIj4KKyAgICA8dmFsdWU+Vm90YXIhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzIiBuYW1lPSJhbnN3ZXIiPgorICAgIDx2YWx1ZT5BIHPDumEgcmVzcG9zdGE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0IiBuYW1lPSJ5ZXMiPgorICAgIDx2YWx1ZT5Tw608L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUiIG5hbWU9Im5vIj4KKyAgICA8dmFsdWU+Tm9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2IiBuYW1lPSJxdWVzdGlvbndhbnQiPgorICAgIDx2YWx1ZT5kZXNleGEgY2/DsWVjZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3IiBuYW1lPSJwb2xscmVzdWx0cyI+CisgICAgPHZhbHVlPlJlc3VsdGFkb3MgZGEgZW5xdWlzYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOCIgbmFtZT0icXVlc3Rpb24iPgorICAgIDx2YWx1ZT5QcmVndW50YTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkiIG5hbWU9InJlc3VsdHMiPgorICAgIDx2YWx1ZT5SZXN1bHRhZG9zOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MCIgbmFtZT0iYW5zd2VycyI+CisgICAgPHZhbHVlPlJlc3Bvc3Rhczo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDEiIG5hbWU9Im5vcG9sbCI+CisgICAgPHZhbHVlPk5vbiBoYWkgZW5xdWlzYXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIiIG5hbWU9InZvdGluZ3MiPgorICAgIDx2YWx1ZT5Wb3RhciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMiIG5hbWU9Im1lZXRpbmciPgorICAgIDx2YWx1ZT5SZXVuacOzbiAobWF4IDQgcG9zdG9zKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NCIgbmFtZT0iY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPkNvbmZlcmVuY2lhIChtYXggNTAgcG9zdG9zKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NSIgbmFtZT0idHlwZSI+CisgICAgPHZhbHVlPlRpcG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYiIG5hbWU9InJlbWFpbmluZ3NlYXRzIj4KKyAgICA8dmFsdWU+T3V0cm9zIHBvc3RvczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NyIgbmFtZT0iYWxyZWFkeWNob3NlbiI+CisgICAgPHZhbHVlPlhhIGZvaSBzZWxlY2Npb25hZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgiIG5hbWU9ImVudGVyIj4KKyAgICA8dmFsdWU+RW50cmFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5IiBuYW1lPSJtb2RsZWF2ZSI+CisgICAgPHZhbHVlPk8gbW9kZXJhZG9yIGFiYW5kb25vdSBhIHJldW5pw7NuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MCIgbmFtZT0ic3lzdGVtbWVzc2FnZSI+CisgICAgPHZhbHVlPkluZm9ybWFjacOzbiBkbyBzaXN0ZW1hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxIiBuYW1lPSJjaG9zc2VkZXZpY2UiPgorICAgIDx2YWx1ZT5TZWxlY2Npb25hciB1biBkaXNwb3NpdGl2bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MiIgbmFtZT0iY2hvb3NlY2FtIj4KKyAgICA8dmFsdWU+U2VsZWNjaW9uYXIgYSBjw6FtYXJhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MyIgbmFtZT0iY2hvb3NlbWljIj4KKyAgICA8dmFsdWU+U2VsZWNjaW9uYXIgbyBtaWNyw7Nmb25vOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NCIgbmFtZT0ib2siPgorICAgIDx2YWx1ZT5BY2VwdGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1IiBuYW1lPSJjYW5jZWwyIj4KKyAgICA8dmFsdWU+Q2FuY2VsYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYiIG5hbWU9InJlY29uZWVjdG5lZWRlZCI+CisgICAgPHZhbHVlPlByZWNpc2Egdm9sdmVyc2UgY29uZWN0YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTciIG5hbWU9ImVkaXRzZXR1cCI+CisgICAgPHZhbHVlPkVkaXRhciBhIGNvbmZpZ3VyYWNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4IiBuYW1lPSJjb3Vyc2UiPgorICAgIDx2YWx1ZT5DdXJzbzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkiIG5hbWU9Imxhbmd1YWdlIj4KKyAgICA8dmFsdWU+SWRpb21hOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MCIgbmFtZT0ib2syIj4KKyAgICA8dmFsdWU+QWNlcHRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MSIgbmFtZT0iY2FuY2VsMyI+CisgICAgPHZhbHVlPkNhbmNlbGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyIiBuYW1lPSJjbGVhcndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5Cb3JyYXIgbyB0YWJvbGVpcm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMiIG5hbWU9ImNsZWFyd2hpdGVib2FyZHF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+RGVzZXhhIGxpbXBhciBvIHRhYm9sZWlybyBhbnRlcyBkZSBlbmdhZGlyIG91dHJvIGdyw6FmaWNvPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NCIgbmFtZT0iZG9udGFza2FnYWluIj4KKyAgICA8dmFsdWU+Tm9uIHZvbHZlciBwcmVndW50YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUiIG5hbWU9Im5vIj4KKyAgICA8dmFsdWU+bm9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2IiBuYW1lPSJlZGl0c2V0dXAyIj4KKyAgICA8dmFsdWU+RWRpdGFyIGEgY29uZmlndXJhY2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjciIG5hbWU9Im5lZWRjb25maXJtYXRpb253aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+UmVxdWlyaXIgY29uZmlybWFjacOzbiBhbnRlcyBkZSBsaW1wYXIgbyB0YWJvbGVpcm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgiIG5hbWU9InVzZXJpbmZvIj4KKyAgICA8dmFsdWU+SW5mb3JtYWNpw7NuIGRvIHVzdWFyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkiIG5hbWU9ImNsZWFyZHJhd2FyZWEiPgorICAgIDx2YWx1ZT5MaW1wYXIgbyB0YWJvbGVpcm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAiIG5hbWU9InVuZG8iPgorICAgIDx2YWx1ZT5EZXNmYWNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MSIgbmFtZT0icmVkbyI+CisgICAgPHZhbHVlPlJlZmFjZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIiIG5hbWU9InNlbGVjdG9iamVjdCI+CisgICAgPHZhbHVlPlNlbGVjY2lvbmFyIHVuIG9ieGV0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MyIgbmFtZT0idGV4dCI+CisgICAgPHZhbHVlPlRleHRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0IiBuYW1lPSJwYWludCI+CisgICAgPHZhbHVlPlBpbnRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NSIgbmFtZT0iZHJhd2xpbmUiPgorICAgIDx2YWx1ZT5EZWJ1eGFyIHVuaGEgbGnDsWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYiIG5hbWU9ImRyYXd1Ij4KKyAgICA8dmFsdWU+RGVidXhhciB1biBzdWJyYWlhZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzciIG5hbWU9InJlY3QiPgorICAgIDx2YWx1ZT5SZWN0w6FuZ3VsbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OCIgbmFtZT0iZWxsaXBzZSI+CisgICAgPHZhbHVlPkVsaXBzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OSIgbmFtZT0iYXJyb3ciPgorICAgIDx2YWx1ZT5GcmVjaGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAiIG5hbWU9ImRlbGV0ZWNob3NlbiI+CisgICAgPHZhbHVlPkJvcnJhciBvIGVsZW1lbnRvIGVzY29sbGlkbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MSIgbmFtZT0iYXBwbGl5bW9kIj4KKyAgICA8dmFsdWU+U29saWNpdGFyIHNlciBtb2RlcmFkb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIiIG5hbWU9ImFwcGx5Ij4KKyAgICA8dmFsdWU+U29saWNpdGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzIiBuYW1lPSJjYW5jZWwiPgorICAgIDx2YWx1ZT5DYW5jZWxhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NCIgbmFtZT0ibW9kIj4KKyAgICA8dmFsdWU+VGXDsW8gdW5oYSBwcmVndW50YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NSIgbmFtZT0iY2xvc2UiPgorICAgIDx2YWx1ZT5QZWNoYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYiIG5hbWU9Iml0YWxpYyI+CisgICAgPHZhbHVlPkN1cnNpdmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODciIG5hbWU9ImJvbGQiPgorICAgIDx2YWx1ZT5OZWdyacOxYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OCIgbmFtZT0id2FpdGluZyI+CisgICAgPHZhbHVlPkVTUEVSQU5ETzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OSIgbmFtZT0iYXBwbHlNZXNzYWdlIj4KKyAgICA8dmFsdWU+VW4gdXN1YXJpbyBkZXNleGEgZmFjZXJzZSBtb2RlcmFkb3IsIHBvZGUgY29uY2VkZXJsbGUgYWNjZXNvIHPDsyBhbyB0YWJvbGVpcm8gb3UgY2FtYmlhciBwb3IgY29tcGxldG8gbyByb2wgZGEgbW9kZXJhY2nDs24uIFVzdWFyaW86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwIiBuYW1lPSJhY2NlcHQiPgorICAgIDx2YWx1ZT5BY2VwdGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxIiBuYW1lPSJyZWplY3QiPgorICAgIDx2YWx1ZT5SZXhlaXRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MiIgbmFtZT0iY2FuY2VsIj4KKyAgICA8dmFsdWU+Q2FuY2VsYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMiIG5hbWU9InNlbmRtb2RyZXF1ZXN0bWVzc2FnZSI+CisgICAgPHZhbHVlPkVudmlhbmRvIHNvbGljaXR1ZGVzIGFvcyBzZWd1aW50ZXMgdXN1YXJpb3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQiIG5hbWU9ImFjY2VwdCI+CisgICAgPHZhbHVlPkFjZXB0YWRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1IiBuYW1lPSJyZWplY3QiPgorICAgIDx2YWx1ZT5SZXhlaXRhZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYiIG5hbWU9ImNoYW5nZW1vZCI+CisgICAgPHZhbHVlPkNhbWJpYXIgZGUgbW9kZXJhZG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3IiBuYW1lPSJub25tb2RlcnJvcm1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Wb3N0ZWRlIG5vbiDDqSBtb2RlcmFkb3IgZGVzdGUgY3Vyc28hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4IiBuYW1lPSJtb2RlcmF0b3IiPgorICAgIDx2YWx1ZT5Nb2RlcmFkb3I6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5IiBuYW1lPSJyb29tZnVsbG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZW50aW1vbG8gcGVybyBlc3RhIGF1bGEgZXN0w6EgY29tcGxldGEuIFTDqW50ZW8gbcOhaXMgdGFyZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwIiBuYW1lPSJlbGxsaXBzZSI+CisgICAgPHZhbHVlPkVsaXBzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEiIG5hbWU9ImNsb3NlIj4KKyAgICA8dmFsdWU+UGVjaGFkbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIiIG5hbWU9IkF1dGhFcnJvciI+CisgICAgPHZhbHVlPmVycm8gbmEgZW50cmFkYSBkZSBkYXRvczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMiIG5hbWU9Im1pbjR1c2VybmFtZSI+CisgICAgPHZhbHVlPm8gbm9tZSBkZSB1c3VhcmlvIGRlYmUgY29udGVyIGFsbyBtZW5vcyA0IGNhcmFjdGVyZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0IiBuYW1lPSJtaW40cGFzcyI+CisgICAgPHZhbHVlPm8gY29udHJhc2luYWwgZGUgdXN1YXJpbyBkZWJlIGNvbnRlciBhbG8gbWVub3MgNCBjYXJhY3RlcmVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNSIgbmFtZT0idXNlcm5hbWV0YWtlbiI+CisgICAgPHZhbHVlPkVzdGUgbm9tZSBkZSB1c3VhcmlvIHhhIGV4aXN0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYiIG5hbWU9ImVtYWlsdGFrZW4iPgorICAgIDx2YWx1ZT5Fc3RlIGNvcnJlby1lIHhhIGVzdMOhIHJleGlzdHJhZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3IiBuYW1lPSJlbWFpbHRha2VuIj4KKyAgICA8dmFsdWU+RXJybyBkbyBzaXN0ZW1hLCBwb3IgZmF2b3IgY29udGFjdGUgY28gYWRtaW5pc3RyYWRvciBkbyBzaXN0ZW1hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOCIgbmFtZT0iQXV0aGxvZ2luIj4KKyAgICA8dmFsdWU+SW5pY2lvIGRlIHNlc2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5IiBuYW1lPSJBdXRodXNlciI+CisgICAgPHZhbHVlPlVzdWFyaW8gb3UgY29ycmVvLWU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMCIgbmFtZT0iQXV0aHBhc3MiPgorICAgIDx2YWx1ZT5Db250cmFzaW5hbDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExIiBuYW1lPSJBdXRobGFuZyI+CisgICAgPHZhbHVlPklkaW9tYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIiIG5hbWU9IkF1dGhyZWciPgorICAgIDx2YWx1ZT5Db25lY3RhcnNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMyIgbmFtZT0icmVnZm9ybWhlYWQiPgorICAgIDx2YWx1ZT5SZXhpc3RyYXJzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQiIG5hbWU9InJlZ2Zvcm11c2VyIj4KKyAgICA8dmFsdWU+VXN1YXJpbzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1IiBuYW1lPSJyZWdmb3JtcGFzcyI+CisgICAgPHZhbHVlPkNvbnRyYXNpbmFsOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYiIG5hbWU9InJlZ2Zvcm1yZXR5cGUiPgorICAgIDx2YWx1ZT5Db250cmFzaW5hbCAoZGUgbm92byk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNyIgbmFtZT0icmVnZm9ybWZpcnN0bmFtZSI+CisgICAgPHZhbHVlPk5vbWU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOCIgbmFtZT0icmVnZm9ybWxhc3RuYW1lIj4KKyAgICA8dmFsdWU+QXBlbGlkbyhzKTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5IiBuYW1lPSJyZWdmb3JtbWFpbCI+CisgICAgPHZhbHVlPkNvcnJlbyBFbGVjdHLDs25pY286PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMCIgbmFtZT0icmVnZm9ybXN0YXRlIj4KKyAgICA8dmFsdWU+UGHDrXM6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMSIgbmFtZT0icmVnZm9ybWJ0bjEiPgorICAgIDx2YWx1ZT5SZXhpc3RyYXJzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIiIG5hbWU9InJlZ2Zvcm1idG4yIj4KKyAgICA8dmFsdWU+Q2FuY2VsYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzIiBuYW1lPSJBdXRoYnRuMiI+CisgICAgPHZhbHVlPk5vbiBlc3TDoSByZXhpc3RyYWRvPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPkluaWNpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUiIG5hbWU9InVzZXJhZG1pbiI+CisgICAgPHZhbHVlPlVzdWFyaW9zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNiIgbmFtZT0iZ3JvdXBhZG1pbiI+CisgICAgPHZhbHVlPkdydXBvczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjciIG5hbWU9Im9yZ2FkbWluIj4KKyAgICA8dmFsdWU+T3JnYW5pemFjacOzbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4IiBuYW1lPSJoZWFkY29uZiI+CisgICAgPHZhbHVlPlNhbGFzIGRlIHh1bnRhbnphczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkiIG5hbWU9ImNvbmZfcHViIj4KKyAgICA8dmFsdWU+cMO6YmxpY288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwIiBuYW1lPSJoZWFkX29yZyI+CisgICAgPHZhbHVlPk9yZ2FuaXphY2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxIiBuYW1lPSJidG5fZW50ZXJyb29tIj4KKyAgICA8dmFsdWU+RW50cmFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMiIgbmFtZT0idXNlcmFsdGVyc2VsZl9sb2dpbiI+CisgICAgPHZhbHVlPkluaWNpbyBkZSBzZXNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMyIgbmFtZT0idXNlcmFsdGVyc2VsZl9wYXNzIj4KKyAgICA8dmFsdWU+Q29udHJhc2luYWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Bhc3NyZXR5cGUiPgorICAgIDx2YWx1ZT5Db250cmFzaW5hbCAoZGUgbm92byk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2ZpcnN0bmFtZSI+CisgICAgPHZhbHVlPk5vbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2xhc3RuYW1lIj4KKyAgICA8dmFsdWU+QXBlbGlkbyhzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzciIG5hbWU9InVzZXJhbHRlcnNlbGZfZW1haWwiPgorICAgIDx2YWx1ZT5Db3JyZW8gRWxlY3Ryw7NuaWNvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOCIgbmFtZT0idXNlcmFsdGVyc2VsZl9iaXJ0aCI+CisgICAgPHZhbHVlPkRhdGEgZGUgbmFjZW1lbnRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOSIgbmFtZT0idXNlcmFsdGVyc2VsZl9zdHJlZXRubyI+CisgICAgPHZhbHVlPkVuZGVyZXpvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MCIgbmFtZT0idXNlcmFsdGVyc2VsZl90b3duIj4KKyAgICA8dmFsdWU+Q8OzZGlnbyBwb3N0YWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3N0YXRlIj4KKyAgICA8dmFsdWU+UGHDrXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2FkcmVzc2NvbW1lbnQiPgorICAgIDx2YWx1ZT5JbmZvcm1hY2nDs24gYWRpY2lvbmFsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MyIgbmFtZT0idXNlcmFsdGVyc2VsZl9oZWFkZXIiPgorICAgIDx2YWx1ZT5EYXRvcyBkbyB1c3VhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NCIgbmFtZT0ic2F2ZW1lbnViYXJfc2F2ZWxhYmVsIj4KKyAgICA8dmFsdWU+R2FyZGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NSIgbmFtZT0ic2F2ZW1lbnViYXJfc2F2ZWxhYmVsIj4KKyAgICA8dmFsdWU+R2FyZGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NiIgbmFtZT0iYWRtaW5fdXNlcmxpc3RfdXNlcl9pZCI+CisgICAgPHZhbHVlPklEIGRvIHVzdWFyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3IiBuYW1lPSJhZG1pbl91c2VybGlzdF9sb2dpbiI+CisgICAgPHZhbHVlPkluaWNpbyBkZSBzZXNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OCIgbmFtZT0iYWRtaW5fdXNlcmxpc3RfZmlyc3RuYW0iPgorICAgIDx2YWx1ZT5Ob21lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OSIgbmFtZT0iYWRtaW5fdXNlcmxpc3RfbGFzdG5hbWUiPgorICAgIDx2YWx1ZT5BcGVsaWRvKHMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MCIgbmFtZT0idHVybm92ZXJsaXN0X25leHQiPgorICAgIDx2YWx1ZT5Nb3N0cmFyIG8gc2VndWludGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxIiBuYW1lPSJ0dXJub3Zlcmxpc3RfcHJlIj4KKyAgICA8dmFsdWU+TW9zdHJhciBvIGFudGVyaW9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MiIgbmFtZT0ic2F2ZWNvbnRlbnRfY29uZmlybSI+CisgICAgPHZhbHVlPkVsaW1pbmFyIG8gcmV4aXN0cm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzIiBuYW1lPSJzYXZlY29udGVudF9jb25maXJtX2NhbmNlbF9idG4iPgorICAgIDx2YWx1ZT5DYW5jZWxhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTQiIG5hbWU9InNhdmVjb250ZW50X2NvbmZpcm1fY29uZmlybV9idG4iPgorICAgIDx2YWx1ZT5FbGltaW5hcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTUiIG5hbWU9InNhdmVtZW51YmFyX2FkZGxhYmVsIj4KKyAgICA8dmFsdWU+Tm92byByZXhpc3RybzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTYiIG5hbWU9InNhdmVtZW51YmFyX3JlbG9hZGxhYmVsIj4KKyAgICA8dmFsdWU+QWN0dWFsaXphciBvIHJleGlzdHJvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NyIgbmFtZT0ic2F2ZW1lbnViYXJfZGVsZXRlbGFiZWwiPgorICAgIDx2YWx1ZT5FbGltaW5hciBvIHJleGlzdHJvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1OCIgbmFtZT0idXNlcmFsdGVyX2FkbWluX3N0YXR1cyI+CisgICAgPHZhbHVlPkVzdGFkbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTkiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9zdGF0dXNJdGVtIj4KKyAgICA8dmFsdWU+ZGVzYWN0aXZhZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYwIiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fc3RhdHVzSXRlbSI+CisgICAgPHZhbHVlPmFjdGl2YWRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2MSIgbmFtZT0idXNlcmFsdGVyX2FkbWluX29yZ2FuaXNhdGlvbiI+CisgICAgPHZhbHVlPk9yZ2FuaXphY2nDs25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2MiIgbmFtZT0iY2FsZW5kYXJfaWNvbmxhYmVsIj4KKyAgICA8dmFsdWU+Q2FsZW5kYXJpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjMiIG5hbWU9InNhdmV3aW5kb3dfYnRuIj4KKyAgICA8dmFsdWU+UGVjaGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2NCIgbmFtZT0ib3JnYW5pc2F0aW9udGFibGVsaXN0X2lkcm93Ij4KKyAgICA8dmFsdWU+SUQgZGEgb3JnYW5pemFjacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjUiIG5hbWU9Im9yZ2FuaXNhdGlvbnRhYmxlbGlzdF9uYW1lcm93Ij4KKyAgICA8dmFsdWU+Tm9tZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjYiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGlkMSI+CisgICAgPHZhbHVlPlVzdWFyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY3IiBuYW1lPSJ1c2VydmFsdWVfbGV2ZWxpZDIiPgorICAgIDx2YWx1ZT5Nb2RlcmFkb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY4IiBuYW1lPSJ1c2VydmFsdWVfbGV2ZWxpZDMiPgorICAgIDx2YWx1ZT5BZG1pbmlzdHJhZG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2OSIgbmFtZT0idXNlcnZhbHVlX2xldmVsbGFiZWwiPgorICAgIDx2YWx1ZT5OaXZlbCBkZSB1c3VhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MCIgbmFtZT0ib3JndmFsdWVfaGVhZGVyIj4KKyAgICA8dmFsdWU+T3JnYW5pemFjacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzEiIG5hbWU9Im9yZ3ZhbHVlX29yZ25hbWUiPgorICAgIDx2YWx1ZT5ub21lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MiIgbmFtZT0ib3JndmFsdWVfb3JnbmFtZSI+CisgICAgPHZhbHVlPkVuZ2FkaXIgdW5oYSBvcmdhbml6YWNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MyIgbmFtZT0ib3JndmFsdWVfb3JnbmFtZSI+CisgICAgPHZhbHVlPkVuZ2FkaXIgdW5oYSBvcmdhbml6YWNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3NCIgbmFtZT0ib3JndmFsdWVfdXNlcndpbiI+CisgICAgPHZhbHVlPkNhbmNlbGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3NSIgbmFtZT0ib3JndmFsdWVfdXNlcndpbiI+CisgICAgPHZhbHVlPkVuZ2FkaXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc2IiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luIj4KKyAgICA8dmFsdWU+RWxpbWluYXIgdW5oYSBvcmdhbml6YWNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3NyIgbmFtZT0ib3JndmFsdWVfdXNlcmxpc3QiPgorICAgIDx2YWx1ZT5Vc3VhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3OCIgbmFtZT0ib3JndmFsdWVfdXNlcmxpc3RhZGQiPgorICAgIDx2YWx1ZT5FbmdhZGlyIHVuIHVzdWFyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc5IiBuYW1lPSJvcmd2YWx1ZV91c2VybGlzdGRlbGV0ZSI+CisgICAgPHZhbHVlPkVsaW1pbmFyIHVuIHVzdWFyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgwIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luaGVhZGVyIj4KKyAgICA8dmFsdWU+RW5nYWRpciB1biB1c3VhcmlvIMOhIG9yZ2FuaXphY2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgxIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luc2VhcmNoZmllbGQiPgorICAgIDx2YWx1ZT5CdXNjYXIgdW4gdXN1YXJpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODIiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5zZWFyY2hidG4iPgorICAgIDx2YWx1ZT5CdXNjYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgzIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luc2VhcmNocmVzdWx0Ij4KKyAgICA8dmFsdWU+VXN1YXJpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODQiIG5hbWU9ImxvZ2lud2luX2Nob29zZW9yZ2FuaXNhdGlvbiI+CisgICAgPHZhbHVlPk9yZ2FuaXphY2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg1IiBuYW1lPSJsb2dpbndpbl9jaG9vc2VvcmdhbmlzYXRpb25idG4iPgorICAgIDx2YWx1ZT5FbnRyYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg2IiBuYW1lPSJuYXZpX3Jvb21hZG1pbiI+CisgICAgPHZhbHVlPlNhbGFzIGRlIGNvbmZlcmVuY2lhczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODciIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5TYWxhcyBkZSBjb25mZXJlbmNpYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODgiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODkiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5Ob21lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5MCIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPnDDumJsaWNhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5MSIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPk9yZ2FuaXphY2nDs25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5MiIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPlNhbGFzIGRlIHh1bnRhbnphczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTMiIG5hbWU9InJvb212YWx1ZV9uYW1lIj4KKyAgICA8dmFsdWU+Tm9tZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTQiIG5hbWU9InJvb212YWx1ZV90eXBlIj4KKyAgICA8dmFsdWU+VGlwbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTUiIG5hbWU9InJvb212YWx1ZV9pc3B1YmxpYyI+CisgICAgPHZhbHVlPlDDumJsaWNhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NiIgbmFtZT0icm9vbXZhbHVlX2NvbW1lbnQiPgorICAgIDx2YWx1ZT5Db21lbnRhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NyIgbmFtZT0id2hpdGVib2FyZF9zYXZlaWNvbiI+CisgICAgPHZhbHVlPkdhcmRhciBlIGV4cG9ydGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5OCIgbmFtZT0id2hpdGVib2FyZF9vcGVuaWNvbiI+CisgICAgPHZhbHVlPmNhcmdhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTkiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2luaGVhZGVyIj4KKyAgICA8dmFsdWU+R2FyZGFyIGNvbW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAwIiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbnRleHQiPgorICAgIDx2YWx1ZT5Ob21lIGRvIGZpY2hlaXJvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMSIgbmFtZT0iZmlsZXMiPgorICAgIDx2YWx1ZT5ub21lIGRvIGZpY2hlaXJvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMiIgbmFtZT0id2hpdGVib2FyZF9zYXZlYXN3aW5idG4xIj4KKyAgICA8dmFsdWU+Q2FuY2VsYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAzIiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbmJ0bjIiPgorICAgIDx2YWx1ZT5HYXJkYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA0IiBuYW1lPSJycGNlcnJvcndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5FcnJvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNSIgbmFtZT0ibG9hZHdtbF9oZWFkZXIiPgorICAgIDx2YWx1ZT5DYXJnYW5kbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDYiIG5hbWU9ImxvYWR3bWxfbWVzc3Nsb2FkIj4KKyAgICA8dmFsdWU+T2J4ZXRvcyBjYXJnYWRvczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDciIG5hbWU9ImxvYWR3bWxfbWVzc3N5bmMiPgorICAgIDx2YWx1ZT5TaW5jcm9uaXphbmRvLCB1c3VhcmlvcyBlbiBlc3BlcmE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwOCIgbmFtZT0ibG9hZGltYWdlX21lc3Nsb2FkIj4KKyAgICA8dmFsdWU+Q2FyZ2FuZG8gZGF0b3MgZGUgaW1heGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA5IiBuYW1lPSJsb2FkaW1hZ2VfbWVzc3N5bmMiPgorICAgIDx2YWx1ZT5TaW5jcm9uaXphbmRvLCB1c3VhcmlvcyBlbiBlc3BlcmE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMCIgbmFtZT0ibG9hZHdtbF9jb25maXJtaGVhZGVyIj4KKyAgICA8dmFsdWU+TGltcGFyIG8gdGFib2xlaXJvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMSIgbmFtZT0ibG9hZHdtbF9jb25maXJtbWVzcyI+CisgICAgPHZhbHVlPmxpbXBpYXIgbyB0YWJvbGVpcm8sIHBlcmRlcmFzZSB0b2RhIGEgaW5mb3JtYWNpw7NuIGRvIHRhYm9sZWlybzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTIiIG5hbWU9ImxvYWR3bWxfY29uZmlybW1lc3MyIj4KKyAgICA8dmFsdWU+Q29uZmlybWFyIGFudGVzIGRlIGNhcmdhciB1biBmaWNoZWlybzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTMiIG5hbWU9InNlbmRfaW52aXRhdGlvbl9idG4iPgorICAgIDx2YWx1ZT5FbnZpYXIgY29udml0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTQiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5FbnZpYXIgY29udml0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTUiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+QXN1bnRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNiIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX3JlY2lwaWVudCI+CisgICAgPHZhbHVlPkRlc3RpbmF0YXJpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTciIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9tZXNzYWdlIj4KKyAgICA8dmFsdWU+TWVuc2F4ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTgiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9idG5fY29uZmlybSI+CisgICAgPHZhbHVlPkVudmlhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTkiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9idG5fY2FuY2VsIj4KKyAgICA8dmFsdWU+Y2FuY2VsYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIwIiBuYW1lPSJzZW5kX2NoYXRfdGV4dF9idG4iPgorICAgIDx2YWx1ZT5lbnZpYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIxIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5faGVhZGVyIj4KKyAgICA8dmFsdWU+RGF0b3MgZG8gdXN1YXJpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjIiIG5hbWU9Imludml0ZWRfdXNlcndpbl9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+TyBzZXUgYWxjdW1lIHBhcmEgZXN0YSBjb25mZXJlbmNpYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjMiIG5hbWU9Imludml0ZWRfdXNlcndpbl9sb2dpbiI+CisgICAgPHZhbHVlPkFsY3VtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjQiIG5hbWU9Imludml0ZWRfdXNlcndpbl9maXJzdG5hbWUiPgorICAgIDx2YWx1ZT5Ob21lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNSIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2xhc3RuYW1lIj4KKyAgICA8dmFsdWU+QXBlbGlkbyhzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjYiIG5hbWU9Imludml0ZWRfdXNlcndpbl9tYWlsIj4KKyAgICA8dmFsdWU+Q29ycmVvLWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI3IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fbGFuZyI+CisgICAgPHZhbHVlPklkaW9tYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjgiIG5hbWU9Imludml0ZWRfdXNlcndpbl9lbnRlciI+CisgICAgPHZhbHVlPmVudHJhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjkiIG5hbWU9Imludml0ZWRfdXNlcndpbl9lbnRlciI+CisgICAgPHZhbHVlPkNhcmdhbmRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMCIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2VudGVyIj4KKyAgICA8dmFsdWU+Q2FyZ2FuZG8gZGF0b3MsIGVzcGVyZSB1biBtb21lbnRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMSIgbmFtZT0idXNlcl9yZWdpc3RlckZhbHNlUFdEIj4KKyAgICA8dmFsdWU+Q29udHJhc2luYWwgaW5jb3JyZWN0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzIiIG5hbWU9InVzZXJfcmVnaXN0ZXJGYWxzZVBXREhlYWRlciI+CisgICAgPHZhbHVlPlBvciBmYXZvciBpbnRyb2R1emEgZMO6YXMgdmVjZXMgbyBtZXNtbyBjb250cmFzaW5hbCBjb24gdW4gbcOtbmltbyBkZSA2IGNhcmFjdGVyZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMzIiBuYW1lPSJ1c2VyX3JlZ2lzdGVyTWFpbEVycm9yIj4KKyAgICA8dmFsdWU+Q29ycmVvIGluY29ycmVjdG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM0IiBuYW1lPSJ1c2VyX3JlZ2lzdGVyTWFpbEVycm9ySGVhZGVyIj4KKyAgICA8dmFsdWU+Vm9zdGVkZSBpbnRyb2R1Y2l1IHVuIGVuZGVyZXpvIGRlIGNvcnJlbyBlbGVjdHLDs25pY28gaW5jb3JyZWN0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzUiIG5hbWU9InVzZXJfcmVnaXN0ZXJTdWNjZXNzIj4KKyAgICA8dmFsdWU+TyByZXhpc3RybyBjb21wbGV0b3VzZSBzYXRpc2ZhY3RvcmlhbWVudGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM2IiBuYW1lPSJ1c2VyX3JlZ2lzdGVyU3VjY2Vzc0hlYWRlciI+CisgICAgPHZhbHVlPkEgc8O6YSBjb250YSBmb2kgY3JlYWRhLCBhIHBhcnRpcmVzIGRlc3RlIG1vbWVudG8geGEgcG9kZSBpbmljaWFyIHVuaGEgc2VzacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzciIG5hbWU9InVzZXJfc2hhcmluZ19tZXNzYWdlIj4KKyAgICA8dmFsdWU+Vm9zdGVkZSBub24gcG9kZSBjb21wYXJ0aXIgbyBzZXUgZXNjcml0b3JpbyBuZXN0ZSBtb21lbnRvLiBBbGd1w6luIGVzdMOhIHhhIGEgY29tcGFydGlyIG8gc2V1IGVzY3JpdG9yaW8gbmVzdGUgbW9tZW50by48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM4IiBuYW1lPSJ1c2VyX3NoYXJpbmdfbWVzc2FnZUhlYWRlciI+CisgICAgPHZhbHVlPkNvbXBhcnRpY2nDs24gbm9uIHBlcm1pdGlkYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzkiIG5hbWU9InVzZXJfZG9TdGFydFNjcmVlblZpZXdlciI+CisgICAgPHZhbHVlPkNvbXBhcnRpci9ncmF2YXIgbyBzZXUgZXNjcml0b3JpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDAiIG5hbWU9InNjcmVlbl93YXJuQmFuZHdpZHRoIj4KKyAgICA8dmFsdWU+UHJvYmxlbWFzIGRlIGNvbmV4acOzbjogTyBzZXUgbGFyZ28gZGUgYmFuZGEgbm9uIMOpIGFib25kbyBlIHBlcmRlcmFzZSBpbmZvcm1hY2nDs24uIFNpIGEgbWVuc2F4ZSBzZSByZXBpdGUgY29uIGZyZWN1ZW5jaWEgc29saWNpdGVsbGUgYW8gbW9kZXJhZG9yIHF1ZSByZWR1emEgYSBjYWxpZGFkZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQxIiBuYW1lPSJzY3JlZW5fdXNlcmxhYmVsIj4KKyAgICA8dmFsdWU+RXNjcml0b3JpbyBkZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQyIiBuYW1lPSJ3aGl0ZWJvYXJkX3RhYl9wYWludCI+CisgICAgPHZhbHVlPkRlYnV4YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQzIiBuYW1lPSJ3aGl0ZWJvYXJkX3RhYl9kb2N1bWVudCI+CisgICAgPHZhbHVlPkRvY3VtZW50bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDQiIG5hbWU9InRhYmJhcl9jaGF0aWNvbiI+CisgICAgPHZhbHVlPkNvbnZlcnNhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0NSIgbmFtZT0idGFiYmFyX2ZpbGVzaWNvbiI+CisgICAgPHZhbHVlPkZpY2hlaXJvczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDYiIG5hbWU9InRhYmJhcl9wYXJ0aWNpcGFudHNpY29uIj4KKyAgICA8dmFsdWU+TWVtYnJvczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDciIG5hbWU9InN3ZnByZXNlbnRhdGlvbl9saXN0c2F2ZW9yaWciPgorICAgIDx2YWx1ZT5EZXNjYXJnYXIgbyBkb2N1bWVudG8gb3JpeGluYWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ4IiBuYW1lPSJzd2ZwcmVzZW50YXRpb25fbGlzdHNhdmVwZGYiPgorICAgIDx2YWx1ZT5EZXNjYXJnYXIgbyBkb2N1bWVudG8gZW4gcGRmPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0OSIgbmFtZT0ic3dmcHJlc2VudGF0aW9uX2xpc3Rsb2Fkc3dmIj4KKyAgICA8dmFsdWU+Q2FyZ2FyIHVuaGEgcHJlc2VudGFjacOzbiBubyB0YWJvbGVpcm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUwIiBuYW1lPSJuYXZpbWFpbl9jb25maWciPgorICAgIDx2YWx1ZT5Db25maWd1cmFjacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTEiIG5hbWU9IndoaXRlYm9hcmRfYm91bmRpbmdib3hfZHJhZyI+CisgICAgPHZhbHVlPkFycmFzdHJhciBlc3RlIG9ieGVjdG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUyIiBuYW1lPSJ3aGl0ZWJvYXJkX2JvdW5kaW5nYm94X3Jlc2l6ZSI+CisgICAgPHZhbHVlPkF4dXN0YXIgbyB0YW1hw7FvIGRvIG9ieGVjdG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUzIiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl96b29tIj4KKyAgICA8dmFsdWU+JTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTQiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3NsaWRlIj4KKyAgICA8dmFsdWU+ZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU1IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9maXJzdHNsaWRlIj4KKyAgICA8dmFsdWU+SXIgw6EgcHJpbWVpcmEgcMOheGluYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTYiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3ByZXNsaWRlIj4KKyAgICA8dmFsdWU+SXIgw6EgcMOheGluYSBhbnRlcmlvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTciIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX25leHRzbGlkZSI+CisgICAgPHZhbHVlPklyIMOhIHDDoXhpbmEgc2VndWludGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU4IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9sYXN0c2xpZGUiPgorICAgIDx2YWx1ZT5JciDDoSDDumx0aW1hIHDDoXhpbmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU5IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl96b29tbWludXMiPgorICAgIDx2YWx1ZT5EaW1pbnVpciBab29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MCIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfem9vbXBsdXMiPgorICAgIDx2YWx1ZT5BdW1lbnRhciBab29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MSIgbmFtZT0ic2FsdXRhdGlvbl9tciI+CisgICAgPHZhbHVlPlNyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjIiIG5hbWU9InNhbHV0YXRpb25fbWlzcyI+CisgICAgPHZhbHVlPlNyYS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYzIiBuYW1lPSJuYXZpbWFpbl9jb25mYWRtaW4iPgorICAgIDx2YWx1ZT5Db25maWd1cmFjacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjQiIG5hbWU9ImNvbmZ0YWJsZV9oZWFkZXJJZCI+CisgICAgPHZhbHVlPklEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2NSIgbmFtZT0iY29uZnRhYmxlX2hlYWRlcmtleSI+CisgICAgPHZhbHVlPkNoYXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2NiIgbmFtZT0iY29uZmFkbWluZm9ybV9oZWFkZXIiPgorICAgIDx2YWx1ZT5Db25maWd1cmFjacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjciIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWxrZXkiPgorICAgIDx2YWx1ZT5DaGF2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjgiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWx1cGRhdGVkIj4KKyAgICA8dmFsdWU+w7psdGltYSBhY3R1YWxpemFjacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjkiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWx1cGRhdGVkYnkiPgorICAgIDx2YWx1ZT5hY3R1YWxpemFkbyBwb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjcwIiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsY29tbWVudCI+CisgICAgPHZhbHVlPmNvbWVudGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MSIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbGtleSI+CisgICAgPHZhbHVlPlZhbG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MiIgbmFtZT0idHVybm92ZXJsaXN0X21heHJlc3VsdHMiPgorICAgIDx2YWx1ZT5kZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzMiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2hlYWRlciI+CisgICAgPHZhbHVlPlVzdWFyaW9zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NCIgbmFtZT0ib3JnYW5pc2F0aW9uX3VzZXJzaWNvbmRlbGV0ZSI+CisgICAgPHZhbHVlPkVsaW1pbmFyIHVuIHVzdWFyaW8gZGEgb3JnYW5pemFjacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzUiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2RlbGV0ZWRoZWFkIj4KKyAgICA8dmFsdWU+RTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzYiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2FscmVhZGFkZGVkIj4KKyAgICA8dmFsdWU+RXN0ZSB1c3VhcmlvIHhhIMOpIG1lbWJybyBkYSBvcmdhbml6YWNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NyIgbmFtZT0iZGFzaGJvYXJkX25ld3NoZWFkZXIiPgorICAgIDx2YWx1ZT5Ob3ZhczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzgiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtzaGVhZGVyIj4KKyAgICA8dmFsdWU+TGlnYXrDs25zIHLDoXBpZGFzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3OSIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua0NvbmYiPgorICAgIDx2YWx1ZT5JciDDoSBjb25mZXJlbmNpYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODAiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtBdWRpdCI+CisgICAgPHZhbHVlPklyIGFvIGF1ZGl0b3JpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODEiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtzdXBwb3J0Ij4KKyAgICA8dmFsdWU+QXh1ZGEgZSBhc2lzdGVuY2lhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MiIgbmFtZT0iZGFzaGJvYXJkX3F1aWNraG9tZXBhZ2V1cmwiPgorICAgIDx2YWx1ZT5odHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MyIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbWFpbGluZ2xpc3R1cmwiPgorICAgIDx2YWx1ZT5odHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvbWFpbC1saXN0cy5odG1sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4NCIgbmFtZT0iZGFzaGJvYXJkX3JlcG9ydGJ1Z3MiPgorICAgIDx2YWx1ZT5JbmZvcm1hciBkdW4gZmFsbG8hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4NSIgbmFtZT0iZGFzaGJvYXJkX3Jzc2xpc3RpdGVtbGlua3RleHQiPgorICAgIDx2YWx1ZT5tw6FpczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODYiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtob21lcGFnZWxhYmVsIj4KKyAgICA8dmFsdWU+U2l0aW8gd2ViIGRvIHByb3hlY3RvIChodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4NyIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua21haWxpbmdsaXN0bGFiZWwiPgorICAgIDx2YWx1ZT5MaXN0YSBkZSBjb3JyZW8gZG8gUHJveGVjdG8gKGh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9tYWlsLWxpc3RzLmh0bWwpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4OCIgbmFtZT0ibG9naW5fcmVtZW1iZXJ1c2VyIj4KKyAgICA8dmFsdWU+TGVtYnJhciBvIGluaWNpbyBkZSBzZXNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4OSIgbmFtZT0ibWFpbl9uYXZpIj4KKyAgICA8dmFsdWU+Q29udGlkbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTAiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5BIG1pw7FhIHDDoXhpbmEgZGUgaW5pY2lvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MSIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPkFzIG1pw7FhcyB4dW50YW56YXMgcHJvZ3JhbWFkYXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkyIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+T3MgbWV1cyBldmVudG9zIHByb2dyYW1hZG9zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MyIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPlh1bnRhbnphcyBww7pibGljYXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk0IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+WHVudGFuemFzIHByaXZhZGFzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NSIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPkV2ZW50b3MgcMO6YmxpY29zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NiIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPkV2ZW50b3MgcHJpdmFkb3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk3IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+Q29udGlkbyBww7pibGljbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTgiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5Db250aWRvIHByaXZhZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk5IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+Q29udGlkbyBwZXJzb2FsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPi4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDEiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5Nb2RlcmFjacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDIiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5UZcOxbyB1bmhhIHByZWd1bnRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMyIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPkVucXVpc2FzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNCIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPlNlbGVjY2lvbmUgdW4gZmljaGVpcm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA1IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+QXh1c3RlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDYiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5BeHVzdGVzIGRlIGPDoW1hcmEgZSBtaWNyw7Nmb25vPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNyIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPkNvbmZpZ3VyYWNpw7NuIGRvIHRhYm9sZWlybzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDgiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5TYcOtcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDkiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5Wb2x2ZXIgw6FzIHNhbGFzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMCIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPlNhw61yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5Fc3F1ZWNldSBvIHNldSBjb250cmFzaW5hbD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEyIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlJlc3RhYmxlY2VyIG8gY29udHJhc2luYWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEzIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlBvciBjb3JyZW8tZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTQiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+UG9yIGluaWNpbyBkZSBzZXNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxNSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5PIHNldSBjb3JyZW8tZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTYiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+TyBzZXUgaW5pY2lvIGRlIHNlY2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE3IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPkVudmlhciBjb3JyZW8tZSBjb24gbGlnYXrDs24gZGUgcmVzdGFibGVjZW1lbnRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxOCIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5Ob3NlIGF0b3BvdSBvIGVuZGVyZXpvIGRlIGNvcnJlbyBlbGVjdHLDs25pY28uIEFzZWfDunJlc2UgZGUgaW50cm9kdWNpciBvIG1lc21vIGVuZGVyZXpvIGRlIGNvcnJlbyBlbGVjdHLDs25pY28gcXVlIHV0aWxpem91IHBhcmEgY3JlYXIgYSBzw7phIGNvbnRhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTkiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+RXNjcmliYSBvIHNldSBjb3JyZW8tZSBvdSBvIG5vbWUgZGUgdXN1YXJpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjAiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+Tm9uIGhhaSBuaW5ndW4gdXN1YXJpbyBjb24gZXN0ZSBub21lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyMSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5FbnZpb3VzZWxsZSB1biBjb3JyZW8tZSBjdW5oYSBsaWdhesOzbiBlc3BlY2lhbCwgcmV2aXNlIGEgc8O6YSBiYW5kZXhhIGRlIGVudHJhZGEgZGUgY29ycmVvLiBTZSBub24gYXRvcGEgZXN0ZSBjb3JyZW8gcmV2aXNlIGEgY29uZmlndXJhY2nDs24gZGUgc3BhbSBkbyBzZXUgc2Vydmlkb3IgZSByZWVudmllIG8gY29ycmVvIGRlIGNvbmZpcm1hY2nDs24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyMiIgbmFtZT0iZXJyb3J0eXBlIj4KKyAgICA8dmFsdWU+RXJybzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjMiIG5hbWU9ImVycm9ydHlwZSI+CisgICAgPHZhbHVlPk1lbnNheGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI0IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5Ob24gc2UgYXRvcG91IMOzIHVzdWFyaW8gKGhhc2ggaW5jb3JyZWN0bykuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNSIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+WGVyYXIgY29udHJhc2luYWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI2IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5JbmljaW8gZGUgc2VzacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjciIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPmNhbWJpYXIgbyBjb250cmFzaW5hbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjgiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPm5vdm8gY29udHJhc2luYWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI5IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT52b2x2YSBhIGVzY3JpYmlyIG8gY29udHJhc2luYWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMwIiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5PcyBjb250cmFzaW5haXMgaW50cm9kdWNpZG9zIG5vbiBzb24gaWRlbnRpY29zLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzEiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPkVzY3JpYmEgNCBvdSBtw6FpcyBjYXJhY3RlcmVzLiBEaWZlcsOpbmNpYW5zZSBhcyBtYWnDunNjdWxhczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzIiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPkNhbWJpb3VzZSBvIGNvbnRyYXNpbmFsLCBhZ29yYSBwb2RlIGEgaW5pY2lhciBzZXNpw7NuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzMiIG5hbWU9InJwY2NhbGxiYWNrIj4KKyAgICA8dmFsdWU+QWNlcHRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzQiIG5hbWU9InJwY2dlbmVyYWxlcnJvciI+CisgICAgPHZhbHVlPkVycm8gZGVzY2/DsWVjaWRvLiBJbmZvcm1lIGFvIGFkbWluaXN0cmFkb3Jlcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM1IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPk5vbiBzZSBhdG9wb3UgbyBub21lIGRlIHVzdWFyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM2IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPkNvbnRyYXNpbmFsIGluY29ycmVjdG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM3IiBuYW1lPSJsb2dvdXQiPgorICAgIDx2YWx1ZT5Wb3N0ZWRlIHNhaXUgZG8gc2lzdGVtYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzgiIG5hbWU9InJlZ2lzdHJhdGlvbiI+CisgICAgPHZhbHVlPkEgZmVycmFtZW50YSBkZSByZXhpc3RybyBlc3TDoSBkZXNhY3RpdmFkYS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM5IiBuYW1lPSJyZWdpc3RyYXRpb24iPgorICAgIDx2YWx1ZT5Db3JyZW8tZSBpbmNvcnJlY3RvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MCIgbmFtZT0icmVnaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+bm9tZSBkZSBmaWNoZWlybyBkdXBsaWNhZG8sIHBvciBmYXZvciBlbGl4YSBvdXRybzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDEiIG5hbWU9ImZpbGVicm93c2VyIj4KKyAgICA8dmFsdWU+byBub21lIGRlIGZpY2hlaXJvIMOpIG1vaSBjdXJ0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDIiIG5hbWU9ImZpbGVicm93c2VyIj4KKyAgICA8dmFsdWU+Tm9uIHNlIHB1aWRvIGdhcmRhciBvIGVuZGVyZXpvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MyIgbmFtZT0idXNlcmFkbWluIj4KKyAgICA8dmFsdWU+TyB1c3VhcmlvIGZvaSBlbmdhZGlkbywgbcOhaXMgZGViZXLDoSBlbmdhZGlsbyBhIHVuaGEgb3JnYW5pemFjacOzbiwgb3Ugbm9uIHBvZGVyw6EgY29uZWN0YXJzZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ0IiBuYW1lPSJhZG1pbmZvcm1zIj4KKyAgICA8dmFsdWU+Tm92YSBncmF2YWNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+Tm9uIHNlIGF0b3BvdSB1biBjYW1wbyBuZXN0ZSBGaWVsZElkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDYiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPk5vbiBzZSBhdG9wb3UgdW5oYSBldGlxdWV0YSBwYXJhIGVzdGUgY2FtcG8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NyIgbmFtZT0iZXJyb3JtZXNzYWdlIj4KKyAgICA8dmFsdWU+UHJlY2lzYXNlIGF1dG9yaXphY2nDs24gZG8gYWRtaW5pc3RyYWRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDgiIG5hbWU9Im1haW5uYXZpIj4KKyAgICA8dmFsdWU+RWRpdG9yIGRlIGlkaW9tYS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ5IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5JZGlvbWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUwIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5JRCBkYSBldGlxdWV0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTEiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPk5vbWUgZGEgZXRpcXVldGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUyIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5WYWxvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTMiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPlZhbG9yZXMgZG8gY2FtcG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU0IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5Ob21lIGRhIGV0aXF1ZXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1NSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+VmFsb3IgZGEgZXRpcXVldGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU2IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5JRCBkYSBldGlxdWV0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTciIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPlZvc3RlZGUgc8OzIGVsaW1pbm91IGEgZXRpcXVldGEgcGVybyBOT04gbyBjYW1wbyEgTm9uIHNlIHBvZGUgZWxpbWluYXIgdW4gY2FtcG8sIMOpIHByb2LDoWJlbCBxdWUgZXhpc3RhbiBldGlxdWV0YXMgbm91dHJvcyBpZGlvbWFzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTgiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPklEIGRlIGV0aXF1ZXRhIGluY29ycmVjdG8uIE8gc2V1IEZpZWxkTGFuZ3VhZ2VzdmFsdWVzX0lkIG5vbiBzZSBhdG9wb3UgbmEgYmFzZSBkZSBkYXRvcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU5IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5Wb3N0ZWRlIG5vbiBwb2RlIGVsaW1pbmFyIGVzdGUgY2FtcG8sIHPDsyBwb2RlIGVsaW1pbmFyIGV0aXF1ZXRhcywgTk9OIGNhbXBvcy4gTm9uIGhhaSB1bmhhIGV0aXF1ZXRhIGNhcmdhZGEgcG9sbyBtb21lbnRvLCBvdSBub24gaGFpIG5pbmfDum4gY2FtcG8gc2VsZWNjaW9uYWRvLCBvdSBub24gw6kgdW5oYSBldGlxdWV0YSBwYXJhIGVzdGUgaWRpb21hIHBhcmEgbyBjYW1wbyBkZWZpbmlkby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYwIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5leHBvcnRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjEiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPlByZWNpc2EgcGVjaGFyIGEgc2VzacOzbiBwYXJhIHZlciBvcyBjYW1iaW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+RW5nYWRpciB1biBub3ZvIGlkaW9tYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjMiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPmVsaW1pbmFyIHVuIGlkaW9tYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjQiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkVuZ2FkaXIgdW4gbm92byBpZGlvbWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY1IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5Ob21lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+ZW5nYWRpciB1biBpZGlvbWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY3IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5Db3BpYSBkZSBzZWd1cmFuemE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY4IiBuYW1lPSJ0dXJub3Zlcmxpc3QiPgorICAgIDx2YWx1ZT5pciBhbyBpbmljaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY5IiBuYW1lPSJ0dXJub3Zlcmxpc3QiPgorICAgIDx2YWx1ZT5pciDDoSBhbnRlcmlvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzAiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPmlyIMOhIHNlZ3VpbnRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MSIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+aXIgYW8gZmluYWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzcyIiBuYW1lPSJ2aWRlb2JveCI+CisgICAgPHZhbHVlPm8gdXN1YXJpbyBmYWxhIChCeSBjbGlja2luZyBoZXJlIHlvdSBjYW4gZ2l2ZSBleGNsdXNpdmUgYXVkaW8gLyBtdXRlIHRoZSBtaWNyb3Bob25lIG9mIG90aGVycyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzczIiBuYW1lPSJ2aWRlb2JveCI+CisgICAgPHZhbHVlPmFjZW5kZXIgb3UgYXBhZ2FyIG8gc29uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3NCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+U2lzdGVtYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzUiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPk9zIHNldXMgYXh1c3RlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzYiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPm9sYSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc3IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5FZGl0YXIgbyBzZXUgcGVyZmlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3OCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+Tm92YXMgbWVuc2F4ZXM6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3OSIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+Q2FyZ2FyIHVuaGEgbm92YSBpbWF4ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODAiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+RGF0b3MgZG8gdXN1YXJpbyAtIEV4cG9ydGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4MSIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5Ub2RhcyBhcyBvcmdhbml6YWNpw7NucyBkZWJlbiBleGlzdGlyIHByZXZpYW1lbnRlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODIiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+aW5pY2lhciBhIGV4cG9ydGFjacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODMiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+UG9yIG9yZ2FuaXphY2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg0IiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPmluaWNpYXIgYSBleHBvcnRhY2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg1IiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPkRhdG9zIGRvIHVzdWFyaW8gLSBJbXBvcnRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODYiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+ZWxpeGEgdXNlcnMueG1sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+aW1wb3J0YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg4IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5FeHBvcnRhciBhIFhNTCAtIEVzdG9zIGZpY2hlaXJvcyBwb2RlbiBzZXIgdXNhZG9zIHBhcmE6Jmx0O2JyLyZndDsgLSBDb250cmlidWlyIGFvIHByb3hlY3RvIC0gSW1wb3J0YWxvcyBhIG91dHJvIHNpc3RlbWEmbHQ7YnIvJmd0OyAtIENvcGlhIGRlIHNlZ3VyYW56YSAtIFBlcnNvbmFsaXphY2nDs24mbHQ7YnIvJmd0OyAtIENvbG9jYWxvIG5vIGRpcmVjdG9yaW8gZGUgaWRpb21hcyBwYXJhIGEgcHLDs3hpbWEgaW5zdGFsYWNpw7NuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODkiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPlNlbGVjY2lvbmUgdW4gZmljaGVpcm8gZGUgaWRpb21hIGEgaW1wb3J0YXIuICZsdDtici8mZ3Q7U2VsZWNjaW9uZSBjb3JyZWN0YW1lbnRlIG8gaWRpb21hIG5vIHNlbGVjdG9yISAmbHQ7YnIvJmd0O25vbiBpbXBvcnRhIGNhbCBzZXhhIG8gbm9tZSBkbyBmaWNoZWlybywgJmx0O2JyLyZndDtzZXLDoSBpbXBvcnRhZG8gYSBlc2UgaWRpb21hITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTAiIG5hbWU9ImltcG9ydHdpbmRvdyI+CisgICAgPHZhbHVlPmltcG9ydGFyIC0gZXNjb2xsZXIgZmljaGVpcm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkxIiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+R2FyZGFyIGNvbW8uLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkyIiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+Tm9tZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkzIiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+Q29tZW50YXJpbzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk0IiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+Z2FyZGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+R3JhdmFjacOzbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk2IiBuYW1lPSJyZWNvcmRlciI+CisgICAgPHZhbHVlPlZpc29yIGRlIGdyYXZhY2nDs25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NyIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+R3JhdmFjacOzbnMgZGUgc2FsYXMgcMO6YmxpY2FzIGUgcHJpdmFkYXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk4IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5Vc3Vhcmlvczo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk5IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5Vbmlkbzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAwIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAxIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5Vc3VhcmlvcyBuYSBzYWxhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDIiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPmFjdHVhbGl6YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAzIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5BIHNhbGEgZXN0w6EgY2hlYSwgcG9yIGZhdm9yIHRlbnRlbyBudW5zIG1pbnV0b3MuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNCIgbmFtZT0icm9vbXNMaXN0Ij4KKyAgICA8dmFsdWU+cHJlbWEgbnVuaGEgc2FsYSBwYXJhIHZlciBvcyBkZXRhbGxlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDUiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPkNvbnZlcnNhciBjb3MgdXN1YXJpb3MgZGVzdGEgc2FsYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA2IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5TYWxhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDciIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPlVzdWFyaW9zIG5lc3RhIHNhbGE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwOCIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+ZGVzZGU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwOSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+cmVwcm9kdWNpciBhIGdyYXZhY2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDEwIiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5EdXJhY2nDs246PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+RGF0YTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDEyIiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5Nb2RvIGRlIGdyYXZhY2nDs24hIE5vbiBwb2RlIGNhbWJpYXIgbmluZ8O6biB2YWxvciB4YSBxdWUgc2UgdHJhdGEgZHVuIGZpY2hlaXJvIGdyYXZhZG8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMyIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+UmVwcm9kdWNpciBlc3RhIGdyYXZhY2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE0IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5SZXByb2R1Y2lyIC8gUGF1c2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE1IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5HcmF2YXIgZXN0YSB4dW50YW56YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTYiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPnBhcmFyIGEgZ3JhdmFjacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTciIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkdyYXZhY2nDs246PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxOCIgbmFtZT0icmVjb3JkX2Vycm9yX21zZyI+CisgICAgPHZhbHVlPkFsZ3XDqW4gZXN0YSBhIGdyYXZhciBhZ29yYSBlc3RhIHh1bnRhbnphOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTkiIG5hbWU9InJlY29yZF9tZXNzYWdlIj4KKyAgICA8dmFsdWU+R3JhdmFuZG8hIFBvbG8gdXN1YXJpbzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIwIiBuYW1lPSJyZWNvcmRfY2FuY2VsIj4KKyAgICA8dmFsdWU+Y2FuY2VsYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIxIiBuYW1lPSJyZWNvcmRfY2FuY2FsX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5BIGdyYXZhY2nDs24gc2Vyw6EgY2FuY2VsYWRhIGUgbm9uIGdhcmRhZGEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyMiIgbmFtZT0iY2FuY2VsX2RpYWxvZ19yZXN1bWUiPgorICAgIDx2YWx1ZT5yZWFudWRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjMiIG5hbWU9ImNhbmNlbF9kaWFsb2dfcmVzdW1lX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5QZWNoYXIgZXN0YSBmaWVzdHJhIGUgcmVhbnVkYXIgYSBncmF2YWNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyNCIgbmFtZT0icGFpbnR0b29sc19lbGxpcHNlX2NvbG9yIj4KKyAgICA8dmFsdWU+Q2FtYmlhciBhIGxpw7FhIGRlIGNvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjUiIG5hbWU9ImNvbG9ycGlja2VyX2hlYWQiPgorICAgIDx2YWx1ZT5TZWxlY2Npb25hciBjb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI2IiBuYW1lPSJwYWludHRvb2xzX2xpbmVfZGlzYWJsZSI+CisgICAgPHZhbHVlPkRlc2FjdGl2YXIgLyBhY3RpdmFyIGEgbGnDsWEgZGUgY29yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyNyIgbmFtZT0icGFpbnR0b29sc19maWxsX2Rpc2FibGUiPgorICAgIDx2YWx1ZT5jYW1iaWFyIGEgY29yIGRlIHJlY2hlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjgiIG5hbWU9InBhaW50dG9vbHNfbGluZV9kaXNhYmxlIj4KKyAgICA8dmFsdWU+RGVzYWN0aXZhciAvIGFjdGl2YXIgbyByZWNoZW8gZGUgY29yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyOSIgbmFtZT0iY2hhbmdlX3dpZHRoX2Fycm93X2Rvd25fc2xpZGVyIj4KKyAgICA8dmFsdWU+Q2FtYmlhciBvIGdyb3NvIGRhIGxpw7FhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzMCIgbmFtZT0iY2xvc2Vfc21hbGxfcG9wdXBzIj4KKyAgICA8dmFsdWU+UGVjaGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzMSIgbmFtZT0icGFpbnRfdG9vbF9sZXR0ZXIiPgorICAgIDx2YWx1ZT5jYW1iaWFyIHRhbWHDsW8gZGUgbGV0cmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMyIiBuYW1lPSJyZWNvcmRpbmdzbGlzdF9kZWxldGUiPgorICAgIDx2YWx1ZT5FbGltaW5hciBhIGdyYXZhY2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMzIiBuYW1lPSJyZWNvcmRpbmdzbGlzdF9yZWNvcmRlZEJ5R3Vlc3QiPgorICAgIDx2YWx1ZT5Db252aWRhZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM0IiBuYW1lPSJyZWNvcmRpbmdzbGlzdF9yZWNvcmRlZGJ5Ij4KKyAgICA8dmFsdWU+UG9yOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzUiIG5hbWU9InJlY29yZGluZ3NfdGFibGVfaGVhZF9uYW1lIj4KKyAgICA8dmFsdWU+Tm9tZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzYiIG5hbWU9InJlY29yZGluZ3NfdGFibGVfaGVhZF9yb29tIj4KKyAgICA8dmFsdWU+U2FsYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzciIG5hbWU9InJlY29yZGluZ3NfdGFibGVfaGVhZF9kYXRlIj4KKyAgICA8dmFsdWU+RGF0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzgiIG5hbWU9InJlY29yZF9zdGFydF9jYW5jZWwiPgorICAgIDx2YWx1ZT5jYW5jZWxhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzkiIG5hbWU9InJlY29yZF9zdGFydF9zdGFydCI+CisgICAgPHZhbHVlPmluaWNpYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQwIiBuYW1lPSJmaWxlc2Jyb3dzZXJfdGFibGVfaGVhZF9uYW1lIj4KKyAgICA8dmFsdWU+Tm9tZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDEiIG5hbWU9ImZpbGVzYnJvd3Nlcl90YWJsZV9oZWFkX2RhdGUiPgorICAgIDx2YWx1ZT5EYXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MiIgbmFtZT0iY2hhdF9jbGVhcl9oaXN0b3J5Ij4KKyAgICA8dmFsdWU+RWxpbWluYXIgbyByZXhpc3RybyBkYSBjb252ZXJzYSBubyBzZXJ2aWRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDMiIG5hbWU9ImNoYXRfb3ZlcmFsbF9oZWFkZXIiPgorICAgIDx2YWx1ZT5Db252ZXJzYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDQiIG5hbWU9ImNoYXRfc2VuZF9idG4iPgorICAgIDx2YWx1ZT5lbnZpYXIgYSBtZW5zYXhlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NSIgbmFtZT0iY2hhdF9lbW90X2J0biI+CisgICAgPHZhbHVlPkVtb3RpY29uYXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ2IiBuYW1lPSJjaGF0X2Vtb3Rfd2luIj4KKyAgICA8dmFsdWU+RW1vdGljb25hczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDciIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5ncyI+CisgICAgPHZhbHVlPkVzY29sbGEgb3MgZGlzcG9zaXRpdm9zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0OCIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2NvbWJvIj4KKyAgICA8dmFsdWU+U8OzbiBlIHbDrWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDkiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPlPDsyBzb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUwIiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT5Tw7MgdsOtZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1MSIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2NvbWJvIj4KKyAgICA8dmFsdWU+U2VuIHNvbi92w61kZW8gKGltw6F4ZSBmaXhhKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTIiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19pbmZvX3RleHQiPgorICAgIDx2YWx1ZT5Ob24gc2UgZW52aWFyw6Egc29uL3bDrWRlbyBkZXNkZSBvIHNldSBjb21wdXRhZG9yLCBubyBzZXUgbHVnYXIgbW9zdHJhcmFzZSBhIGltw6F4ZSBkbyBzZXUgcGVyZmlsLiBTZWxlY2Npb25lIGVzdGEgY29uZmlndXJhY2nDs24gc2Ugdm9zdGVkZSB0w6luIHByb2JsZW1hcyBjbyBzZXUgbGFyZ28gZGUgYmFuZGEgb3UgdW5oYSBjb25leGnDs24gZGUgSW50ZXJuZXQgbGVudGEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1MyIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9tb25kYXkiPgorICAgIDx2YWx1ZT5MVTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTQiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfdHVlc2RheSI+CisgICAgPHZhbHVlPk1BPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV93ZWRuZXNkYXkiPgorICAgIDx2YWx1ZT5NRTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTYiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfdGh1cnNkYXkiPgorICAgIDx2YWx1ZT5YTzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTciIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfZnJpZGF5Ij4KKyAgICA8dmFsdWU+VkU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU4IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3NhdHVyZGF5Ij4KKyAgICA8dmFsdWU+U0E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU5IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3N1bmRheSI+CisgICAgPHZhbHVlPkRPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9tb25kYXkiPgorICAgIDx2YWx1ZT5Mw7puczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjEiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfVHVlc2RheUxhYmVsIj4KKyAgICA8dmFsdWU+TWFydGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MiIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9XZWRuZXNkYXlMYWJlbCI+CisgICAgPHZhbHVlPk3DqXJjb3JlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjMiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfVGh1cnNkYXlMYWJlbCI+CisgICAgPHZhbHVlPlhvdmVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9GcmlkYXlMYWJlbCI+CisgICAgPHZhbHVlPlZlbnJlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjUiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfU2F0dXJkYXlMYWJlbCI+CisgICAgPHZhbHVlPlPDoWJhZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY2IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1N1bmRheUxhYmVsIj4KKyAgICA8dmFsdWU+RG9taW5nbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjciIG5hbWU9ImNhbGVuZGFyX3dlZWtudW1iZXJfaGVhZGVyIj4KKyAgICA8dmFsdWU+UzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjgiIG5hbWU9ImNhbGVuZGFyX3dlZWtudW1iZXJfaGVhZGVyVG9vbHRpcCI+CisgICAgPHZhbHVlPk7Dum1lcm8gZGUgc2VtYW5hIGRvIGNhbGVuZGFyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY5IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+WGFuZWlybzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzAiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5GZWJyZWlybzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzEiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5NYXJ6bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzIiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5BYnJpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzMiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5NYWlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3NCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPlh1w7FvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3NSIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPlh1bGxvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3NiIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPkFnb3N0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzciIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5TZXRlbWJybzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzgiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5PdXR1YnJvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3OSIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPk5vdmVtYnJvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4MCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPkRlY2VtYnJvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4MSIgbmFtZT0iY2FsZW5kYXJ3aW5faGVhZGVyIj4KKyAgICA8dmFsdWU+Q2FsZW5kYXJpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODIiIG5hbWU9InJvb21hZG1pbl9sYWJlbE51bWJlck9mUGFydGljaXBhbnRzIj4KKyAgICA8dmFsdWU+UGFydGljaXBhbnRlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODMiIG5hbWU9InJvb21WYWx1ZV9hZHZhbmNlZFNldHRpbmdzIj4KKyAgICA8dmFsdWU+TW9zdHJhciBvcyBheHVzdGVzIGRlIGRlc2XDsW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg0IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3ZpZGVvWCI+CisgICAgPHZhbHVlPlggfCBZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NSIgbmFtZT0icm9vbUFkbWluX2xheW91dF92aWRlb1kiPgorICAgIDx2YWx1ZT5MYXJnbyB8IEFsdG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg2IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0Ij4KKyAgICA8dmFsdWU+Q29udGVkb3IgZGUgdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg3IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X21vZCI+CisgICAgPHZhbHVlPkNvbnRlZG9yIGRlIG1vZGVyYWNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4OCIgbmFtZT0icm9vbUFkbWluX2xheW91dF9tb2RfcG9zIj4KKyAgICA8dmFsdWU+WDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODkiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkNvbnRlZG9yIGRlIHRhYm9sZWlybzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTAiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZF9zaG93Ij4KKyAgICA8dmFsdWU+QWN0aXZhZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkxIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmRfcG9zIj4KKyAgICA8dmFsdWU+WCB8IFk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkyIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5MYXJnbyB8IEFsdG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkzIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X2ZpbGVzIj4KKyAgICA8dmFsdWU+Q29udGVkb3IgZGUgZmljaGVpcm9zLCBjb252ZXJzYXMsIHBhcnRpY2lwYW50ZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk0IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X2ZpbGVzX3Nob3ciPgorICAgIDx2YWx1ZT5BY3RpdmFkbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTUiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXNfcG9zIj4KKyAgICA8dmFsdWU+WCB8WTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTYiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXMiPgorICAgIDx2YWx1ZT5MYXJnbyB8IEFsdG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk3IiBuYW1lPSJtb2RlcmF0b3JfZ29uZV9tZXNzYWdlIj4KKyAgICA8dmFsdWU+TyBtb2RlcmFkb3IgcmV0aXJvdXNlLCBwb2xvIHF1ZSBuaW5ndcOpbiBlc3TDoSBhIHJlYWxpemFyIHVuaGEgcHJlc2VudGFjacOzbiBhY3R1YWxtZW50ZS4gVm9zdGVkZSBwb2RlIGFnYXJkYXIgb3Ugc29saWNpdGFyIHNlciBtb2RlcmFkb3IuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5OCIgbmFtZT0ibW9kZXJhdG9yX21lc3NhZ2VfZXZlbnRfbm9fbW9kIj4KKyAgICA8dmFsdWU+Tm9uIGhhaSBtb2RlcmFkb3IgbmVzdGEgc2FsYSwgcGVybyBzaSBwYXJ0aWNpcGFudGVzLiBWb3N0ZWRlIHBvZGUgZXNwZXJhciBvdSBzb2xpY2l0YXIgc2VyIG1vZGVyYWRvci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk5IiBuYW1lPSJmZWVkYmFja190ZW1wbGF0ZV9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+Q29tZW50YXJpbyBkZSAkQVBQX05BTUU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAwIiBuYW1lPSJpbnZpdGF0aW9uX3RlbXBsYXRlX2hlYWQiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgLSBDb252aXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwMSIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X2Zyb20iPgorICAgIDx2YWx1ZT5NZW5zYXhlIGRvIHVzdWFyaW86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwMiIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X21lc3NhZ2UiPgorICAgIDx2YWx1ZT5NZW5zYXhlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDMiIG5hbWU9Imludml0YXRpb25fdGV4dF9jbGlja190ZXh0Ij4KKyAgICA8dmFsdWU+UHJlbWEgbmVzdGEgbGlnYXrDs24gcGFyYSBwb2RlciBwYXJ0aWNpcGFyIG5hIHh1bnRhbnphOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDQiIG5hbWU9Imludml0YXRpb25fdGV4dF9jbGlja190ZXh0X2xpbmsiPgorICAgIDx2YWx1ZT5QcmVtYSBhcXXDrSBwYXJhIGVudHJhciDDoSBzYWxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwNSIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X2NsaWNrX3RleHRfaGVscCI+CisgICAgPHZhbHVlPlNlIHRlbiBwcm9ibGVtYXMgY29hIGxpZ2F6w7NuLCBzdXhlcsOtbW9zbGxlIHF1ZSBjb3BpZSBlIHBlZ3VlIG8gc2VndWludGUgdGV4dG8gbm8gc2V1IG5hdmVnYWRvcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA2IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSwgcmV4aXN0cm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA3IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfaGVhZDIiPgorICAgIDx2YWx1ZT5PcyBzZXVzIGRhdG9zIGRlIHVzdWFyaW86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwOCIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X3VzZXJuYW1lIj4KKyAgICA8dmFsdWU+SW5pY2lhciBzZXNpw7NuOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDkiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9wYXNzIj4KKyAgICA8dmFsdWU+Q29udHJhc2luYWw6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxMCIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X21haWwiPgorICAgIDx2YWx1ZT5Db3JyZW8tZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTExIiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfYnllIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIC0gRXF1aXBvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxMiIgbmFtZT0icmVnaXN0ZXJfbWFpbF9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+JEFQUF9OQU1FLCByZXhpc3RybzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTMiIG5hbWU9InJlc2V0X3Bhc3N3b3JkX3RlbXBsYXRlX2hlYWQiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgLSBSZXN0YWJsZWNlciBvIGNvbnRyYXNpbmFsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNCIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfdGVzdF9saW5rIj4KKyAgICA8dmFsdWU+UHJlbWEgbmEgc2VndWllbnRlIGxpZ2F6w7NuIHBhcmEgaW50cm9kdWNpciB1biBub3ZvIGNvbnRyYXNpbmFsOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTUiIG5hbWU9InJlc2V0X3Bhc3N3b3JkX3RlbXBsYXRlX3RleHQyX2xpbmsiPgorICAgIDx2YWx1ZT5QcmVtYSBhcXXDrSBwYXJhIGludHJvZHVjaXIgdW4gbm92byBjb250cmFzaW5hbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTYiIG5hbWU9InJlc2V0X3Bhc3N3b3JkX3RlbXBsYXRlX3RleHQzX2xpbmsiPgorICAgIDx2YWx1ZT5TZSB0ZW4gcHJvYmxlbWFzIGNvYSBsaWdhesOzbiwgc3V4ZXJpbW9zbGxlIHF1ZSBjb3BpZSBlIHBlZ3VlIG8gc2VndWludGUgdGV4dG8gbm8gc2V1IG5hdmVnYWRvcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE3IiBuYW1lPSJyZXNldF9wYXNzd29yZF9tYWlsX3N1YmplY3QiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUsIHJlc3RhYmxlY2VyIG8gY29udHJhc2luYWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE4IiBuYW1lPSJkYXRlUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5Qb3IgZmF2b3IgaW50cm9kdXphIHVuaGEgZGF0YSBjb3JyZWN0YSBubyBmb3JtYXRvIGRkLm1tLmFhYWEsIHAuZXguIDI0LjEyLjIwMDE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE5IiBuYW1lPSJlbWFpbFJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+UG9yIGZhdm9yIGludHJvZHV6YSB1biBlbmRlcmV6byBkZSBjb3JyZW8tZSBjb3JlY3RvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyMCIgbmFtZT0iZmxvYXRSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPlBvciBmYXZvciBpbnRyb2R1emEgdW4gbsO6bWVybyBkZWNpbWFsLCBwLmV4LiAxLjAwICh1c2UgcHVudG8gZSBub24gY29tYSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIxIiBuYW1lPSJudW1iZXJSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPlBvciBmYXZvciBpbnRyb2R1emEgdW4gbsO6bWVybyBlbnRlaXJvLCBwLmV4LiAxMDA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIyIiBuYW1lPSJwaG9uZVJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+UG9yIGZhdm9yIGludHJvZHV6YSB1biBuw7ptZXJvIGRlIHRlbMOpZm9ubyBjb3JyZWN0bywgcC5leCArMzQgOTk5IDExMSAxMTE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIzIiBuYW1lPSJ0aW1lUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5Qb3IgZmF2b3IgaW50cm9kdXphIHVuaGEgaG9yYSB2w6FsaWRhIG5vIGZvcm1hdG8gaGg6bW0sIHAuZXguIDEyOjM0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3ciPgorICAgIDx2YWx1ZT5Db250cmFzaW5hbCBwcm90ZXhpZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI1IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd19wYXNzd29yZExhYmVsIj4KKyAgICA8dmFsdWU+Q29udHJhc2luYWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI2IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZExhYmVsIj4KKyAgICA8dmFsdWU+UGVyw61vZG8gZGUgdmFsaWRlejwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjciIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkIj4KKyAgICA8dmFsdWU+SW50ZXJtaW5hYmxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyOCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWQiPgorICAgIDx2YWx1ZT5QZXLDrW9kbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjkiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkIj4KKyAgICA8dmFsdWU+VW5oYSB2ZXo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMwIiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZEZyb21MYWJlbCI+CisgICAgPHZhbHVlPlbDoWxpZG8gZGVzZGU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMSIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWRUb0xhYmVsIj4KKyAgICA8dmFsdWU+VsOhbGlkbyBhdMOpOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzIiIG5hbWU9Imludml0YXRpb25fd2luZG93X01haWxTdWJqZWN0Ij4KKyAgICA8dmFsdWU+Q29udml0ZSBhICRBUFBfTkFNRTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzMiIG5hbWU9Imludml0YXRpb25fZXJyb3IiPgorICAgIDx2YWx1ZT5Ob24gZXhpc3RlIHVuIGNvbnZpdGUgZGlzcG/DscOtYmVsIHBhcmEgZXN0ZSBjw7NkaWdvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzQiIG5hbWU9Imludml0YXRpb25fZXJyb3IiPgorICAgIDx2YWx1ZT5Fc3RlIGNvbnZpdGUgeGEgZm9pIHVzYWRvIGUgbm9uIHBvZGUgdXRpbGl6YXJzZSBkZSBub3ZvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzUiIG5hbWU9Imludml0YXRpb25fZXJyb3IiPgorICAgIDx2YWx1ZT5PIGPDs2RpZ28gZG8gY29udml0ZSDDqSBpbmNvcnJlY3RvLiBPIGNvbnZpdGUgYW8gdHJhdsOpcyBkZSBsaWdhesOzbiB0ZW4gdmFsaWRleiBzw7Mgbm8gbW9tZW50byBkYSB4dW50YW56YSEgdm9zdGVkZSBub24gcG9kZSBhY2NlZGVyIMOhIHNhbGEgYW50ZXMgb3UgZGVzcG9pcyBkYSByZXVuacOzbiBhIHRyYXbDqXMgZGVzYSBsaWdhesOzbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM2IiBuYW1lPSJpbnZpdGF0aW9uX3Bhc3MiPgorICAgIDx2YWx1ZT5Db250cmFzaW5hbDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM3IiBuYW1lPSJpbnZpdGF0aW9uX3Bhc3NfYnRuIj4KKyAgICA8dmFsdWU+VmVyaWZpY2FyIG8gY29udHJhc2luYWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM4IiBuYW1lPSJpbnZpdGF0aW9uX3Bhc3NfZXJyb3IiPgorICAgIDx2YWx1ZT5Db250cmFzaW5hbCBpbmNvcnJlY3RvITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzkiIG5hbWU9IkJyb3dzZXIiPgorICAgIDx2YWx1ZT5OYXZlZ2Fkb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQwIiBuYW1lPSJhdWRpb192aWRlbyI+CisgICAgPHZhbHVlPlNpbmNyb25pemFyIHNvbi92w61kZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQxIiBuYW1lPSJlcnJvckNvZGVfaW52YWxpZFNlc3Npb24iPgorICAgIDx2YWx1ZT5PIGFjY2VzbyDDqSBjb3JyZWN0bywgcGVybyBhIHNlc2nDs24gbm9uIGVzdMOhIGFjdGl2YSBvdSBnYXJkYWRhIG5vIHNlcnZpZG9yLlZvc3RlZGUgdGVuIHF1ZSBjb25zZWd1aXIgdW4gbm92byBpZGVudGlmaWNhZG9yIGRlIHNlc2nDs24gZSB2b2x2ZXIgYSBhY2NlZGVyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDIiIG5hbWU9ImVycm9yY29kZV9zZXRVc2VyT2JqZWN0Ij4KKyAgICA8dmFsdWU+TyBpZGVudGlmaWNhZG9yIGRlIHNlc2nDs24gbm9uIGVzdMOhIGluaWNpYWRvIG91IG5vbiB0ZW4gcGVybWlzb3MgZGUgQWRtaW5pc3RyYWNpw7NuLiBBIHBhc2FyZWxhIFNPQVAgcHJlY2lzYSB1biB1c3VhcmlvIGNvbiBkZXJlaXRvcyBkZSBhZG1pbmlzdHJhZG9yIHBhcmEgZW5nYWRpciBub3ZvcyB1c3Vhcmlvcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQzIiBuYW1lPSJlcnJvcmNvZGVfbG9naW5CeVJlbW90ZVVzZXIiPgorICAgIDx2YWx1ZT5Fc3RhIHNlc2nDs24gbm9uIHRlbiBkYXRvcyBkbyB1c3VhcmlvIHJlbW90byBjb25lY3RhZG8uIFF1aXphaXMgbm9uIGNoYW1vdSDDoSBwYXNhcmVsYSBTT0FQIGFudGVzIGRlIGFjY2VkZXIgYW8gYXBsaWNhdGl2byBvdSBlc3TDoSB1c2FuZG8gdW4gaWRlbnRpZmljYWRvciBkZSBzZXNpw7NuIGluY29ycmVjdG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ0IiBuYW1lPSJkZWJ1Z19tZXNzYWdlX3JlY29yZGluZyI+CisgICAgPHZhbHVlPk8gZ3JhdmFkb3IgYcOtbmRhIGVzdMOhIGVuIGZhc2UgQmV0YSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ1IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWFZhbHVlIj4KKyAgICA8dmFsdWU+eDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDYiIG5hbWU9InByb3BlcnR5UGFuZWxYVmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPmVpeG8teDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDciIG5hbWU9InByb3BlcnR5UGFuZWxZVmFsdWUiPgorICAgIDx2YWx1ZT55PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0OCIgbmFtZT0icHJvcGVydHlQYW5lbFlWYWx1ZUxhYmVsIj4KKyAgICA8dmFsdWU+ZWl4by15PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0OSIgbmFtZT0icHJvcGVydHlQYW5lbFdpZHRoVmFsdWUiPgorICAgIDx2YWx1ZT5sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1MCIgbmFtZT0icHJvcGVydHlQYW5lbFdpZHRoVmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPmxhcmdvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1MSIgbmFtZT0icHJvcGVydHlQYW5lbEhlaWdodFZhbHVlIj4KKyAgICA8dmFsdWU+YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTIiIG5hbWU9InByb3BlcnR5UGFuZWxIZWlnaHRWYWx1ZUxhYmVsIj4KKyAgICA8dmFsdWU+YWx0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTMiIG5hbWU9InByb3BlcnR5T3BhY2l0eVNsaWRlciI+CisgICAgPHZhbHVlPkNhbWJpYXIgdHJhbnNwYXJlbmNpYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTQiIG5hbWU9ImJyb3dzZXJPcGVuIj4KKyAgICA8dmFsdWU+QWJyaXIgbyBuYXZlZ2Fkb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU1IiBuYW1lPSJicm93c2VyQ2xvc2UiPgorICAgIDx2YWx1ZT5QZWNoYXIgbyBuYXZlZ2Fkb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU2IiBuYW1lPSJjb25uZWN0aW9uTG9zdE1lc3NhZ2UiPgorICAgIDx2YWx1ZT5QZXJkZXVzZSBhIGNvbmV4acOzbiBjbyBzZXJ2aWRvci4gVm9zdGVkZSBwcmVjaXNhIHJlaW5pY2lhciBvIGFwbGljYXRpdm8gZS9vdSBjb21wcm9iYXIgYSBzw7phIHJlZGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1NyIgbmFtZT0iNTU3Ij4KKyAgICA8dmFsdWU+UHVudGVpcm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU4IiBuYW1lPSJzeW5jIG1lc3NhZ2UgaGVhZGVyIj4KKyAgICA8dmFsdWU+U2luY3Jvbml6YW5kbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTkiIG5hbWU9IlN5bmNocm9uaXppbmcgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNpbmNyb25pemFuZG8sIHBvciBmYXZvciBhZ2FyZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYwIiBuYW1lPSJleHBvcnRUb1NWRyI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O0Rlc2NhcmdhciBjb21vIFNWRyZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYxIiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7RGVzY2FyZ2FyIGNvbW8gUE5HJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjIiIG5hbWU9ImV4cG9ydFRvSW1hZ2UiPgorICAgIDx2YWx1ZT4mbHQ7dSZndDtEZXNjYXJnYXIgY29tbyBKUEcmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MyIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O0Rlc2NhcmdhciBjb21vIFBERiZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY0IiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7RGVzY2FyZ2FyIGNvbW8gVElGJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjUiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5MZW1icmFuemE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2NiIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkNhdGVnb3LDrWE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2NyIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPlJlcGV0aWNpw7NuOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjgiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5uYWRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2OSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPlViaWNhY2nDs246PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MCIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkNvbWV6YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzEiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5SZW1hdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTcyIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+VMOtdHVsbzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTczIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+Q29tZW50YXJpbzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc0IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+Q29udmlkYXIgeGVudGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc1IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+RGlhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NiIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPk1lbnN1YWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc3IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+QW51YWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc4IiBuYW1lPSJhbGVydCI+CisgICAgPHZhbHVlPkEgZGF0YSBkZSBmaW4gw6kgZGVzcG9pcyBkYSBkYXRhIGRlIGNvbWV6byE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc5IiBuYW1lPSJhbGVydCI+CisgICAgPHZhbHVlPlBvciBmYXZvciwgaW5zaXJhIHVuIHTDrXR1bG8hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MCIgbmFtZT0iNTgwIj4KKyAgICA8dmFsdWU+UlRMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MSIgbmFtZT0iNTgxIj4KKyAgICA8dmFsdWU+QWN0aXZlIGlzdG8gc2Ugdm9zdGVkZSBlc2NyaWJlIG51bmhhIGxpbmd1YSBkZSBkZXJlaXRhIGEgZXNxdWVyZGEgKG9yZGUgaW52ZXJzYSBkZSBwYWxhYnJhcyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgyIiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPlBhbmVsIGRlIGNvbnRyb2w8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgzIiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPlZlciBldmVudG9zIG91IHh1bnRhbnphcyBncmF2YWRhczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODQiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+WHVudGFuemEgLSBGYWNlciB1bmhhIGNvbmZlcmVuY2lhIGNvbiA0IChhdGEgMTYpIFVzdWFyaW9zJmx0O2JyLyZndDt0b2RvcyB0ZXLDoW4gYWNjZXNvIGRlIHNvbiArIHbDrWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODUiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+RXZlbnRvIC0gRmFjZXIgdW5oYSBjb25mZXJlbmNpYSBjb24gYXRhIDIwMCBwYXJ0aWNpcGFudGVzJmx0O2JyLyZndDtTw7MgbyBtb2RlcmFkb3IgdGVyw6Egc29uL3ZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4NiIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT5DcmVhciB1c3Vhcmlvcywgc2FsYXMsIG9yZ2FuaXphY2nDs25zJmx0O2JyLyZndDsgKyBjYW1iaWFyIGEgY29uZmlndXJhY2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg3IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5Vc3VhcmlvcyBuZXN0YSBzYWxhIGFnb3JhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4OCIgbmFtZT0icm9vbSBBZG1pbmlzdHJhdGlvbiByb29tY2xpZW50cyBsaXN0Ij4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg5IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5JbmljaW8gZGUgc2VzacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTAiIG5hbWU9InJvb20gQWRtaW5pc3RyYXRpb24gcm9vbWNsaWVudHMgbGlzdCI+CisgICAgPHZhbHVlPkQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkxIiBuYW1lPSJzd2Ygc3luYyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2FyZ2FuZG8gbyBkb2N1bWVudG8uIFBvciBmYXZvciBhZ2FyZGUgYXRhIHF1ZSB0b2RvcyBvcyBjbGllbnRlcyBlc3RlYW4gc2luY3Jvbml6YWRvcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkyIiBuYW1lPSJ1cGxvYWQgZGlhbG9nIj4KKyAgICA8dmFsdWU+Q2FyZ2EgY29tcGxldGEsIGNvbnZlcnRpbmRvIERvY3VtZW50byAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkzIiBuYW1lPSJ1cGxvYWQgZGlhbG9nIj4KKyAgICA8dmFsdWU+Q29tZXphciBjYXJnYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTQiIG5hbWU9InVwbG9hZCBkaWFsb2ciPgorICAgIDx2YWx1ZT5EaWFsb2dvIGRlIGNhcmdhciBlIGltcG9ydGFyLiBQb3IgZmF2b3IgZXNjb2xsYSB1biBmaWNoZWlybyBkbyBzZXUgZGlzY28uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NSIgbmFtZT0idXBsb2FkIERpYWxvZyI+CisgICAgPHZhbHVlPkNhbmNlbGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NiIgbmFtZT0idXBsb2FkIERpYWxvZyI+CisgICAgPHZhbHVlPlNlbGVjY2lvbmFyIGZpY2hlaXJvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NyIgbmFtZT0iYWRtaW5pc3RyYXRpb24gbmF2aWdhdGlvbiI+CisgICAgPHZhbHVlPkNvbmV4acOzbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk4IiBuYW1lPSJjb25mYWRtaW4gdmFsdWUgbGlzdCI+CisgICAgPHZhbHVlPlZhbG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5OSIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPklkZW50aWZpY2Fkb3IgZGUgZmx1eG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAwIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+SW5pY2lhciBzZXNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwMSIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPkNvbmVjdGFkbyBkZXNkZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDIiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5TYWxhIC8gQWxjYW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDMiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5FeHB1bHNhciB1c3VhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwNCIgbmFtZT0ia2ljayB1c2VyIGNvbmZpcm1hdGlvbiBkaWFsb2ciPgorICAgIDx2YWx1ZT5FeHB1bHNhciBhIHVuIHVzdWFyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA1IiBuYW1lPSJraWNrIHVzZXIgY29uZmlybWF0aW9uIGRpYWxvZyI+CisgICAgPHZhbHVlPlJlYWxtZW50ZSBxdWVyZSBleHB1bHNhciBlc3RlIGNsaWVudGUgZGEgY29uZXhpw7NuPyZsdDtici8mZ3Q7IElzdG8gc8OzIGJvcnJhIGFvIGNsaWVudGUgZGEgc2FsYSBhY3R1YWwuIE8gY2xpZW50ZSBwb2RlIHZvbHZlciBhIGFjY2VkZXIgZGUgbm92by48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA2IiBuYW1lPSJraWNrIHVzZXIgbWVzc2FnZSBkaWFsb2ciPgorICAgIDx2YWx1ZT5BIHPDumEgc2VzacOzbiBmb2kgcGVjaGFkYSBwb3IgdW4gYWRtaW5pc3RyYWRvciBvdSB1biBtb2RlcmFkb3IuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwNyIgbmFtZT0idXNlcmFsdGVyc2VsZl9waG9uZSI+CisgICAgPHZhbHVlPlRlbMOpZm9ubzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDgiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPk8gdXN1YXJpbyDDqSBtb2RlcmFkb3IgZGVzdGEgc2FsYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDkiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPk8gdXN1YXJpbyBlc3TDoSBhdXRvcml6YWRvIGEgZXNjcmliaXIgbm8gdGFib2xlaXJvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMCIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+KFJlKWluaWNpYXIgbyBzb24vdsOtZGVvIG91IGNhbWJpYXIgYSBjb25maWd1cmFjacOzbiBkb3MgZGlzcG9zaXRpdm9zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMSIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+QXV0b3JpemFyIGEgZXN0ZSB1c3VhcmlvIGEgZGVidXhhciBubyB0YWJvbGVpcm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEyIiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5EZW5lZ2FyIG8gcGVybWlzbyBhIGRlYnV4YXIgbm8gdGFib2xlaXJvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMyIgbmFtZT0iY29uZmVyZW5jZVBhbmVscyI+CisgICAgPHZhbHVlPlVzdWFyaW9zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxNCIgbmFtZT0iY29uZmVyZW5jZVBhbmVscyI+CisgICAgPHZhbHVlPkZpbHRyb3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE1IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+VGFib2xlaXJvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxNiIgbmFtZT0iY29uZmVyZW5jZVBhbmVscyI+CisgICAgPHZhbHVlPkNvbnZlcnNhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxNyIgbmFtZT0ib3JnYW5pemF0aW9uIGNob29zZSBpbmZvIj4KKyAgICA8dmFsdWU+QSBzw7phIGNvbnRhIGVzdMOhIGFzaWduYWRhIGEgbXVsdGlwbGVzIG9yZ2FuaXphY2nDs25zLiBQb3IgZmF2b3IgZXNjb2xsYSB1bmhhIHBhcmEgZXN0YSBzZXNpw7NuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTgiIG5hbWU9ImVycm9yIG1lc3NhZ2Ugcm9vbSBmdWxsIj4KKyAgICA8dmFsdWU+RXN0YSBzYWxhIGF0w7NwYXNlIGNvbXBsZXRhIG5lc3RlIG1vbWVudG8uIFBvciBmYXZvciwgdMOpbnRlbyBkZSBub3ZvIG3DoWlzIHRhcmRlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTkiIG5hbWU9InJvb210eXBlcyI+CisgICAgPHZhbHVlPlRpcG8gZGUgc2FsYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjAiIG5hbWU9ImFwcG9pbnRlZF9yb29tIj4KKyAgICA8dmFsdWU+Tm9tZWFkbyBkYSBzYWxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyMSIgbmFtZT0ic2VydmVydGltZSI+CisgICAgPHZhbHVlPkhvcmEgZG8gc2Vydmlkb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIyIiBuYW1lPSJpbnZfcmVtaW5kZXJfdGVtcGxhdGVfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSAtIExlbWJyYW56YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjMiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2Zyb20iPgorICAgIDx2YWx1ZT5NZW5zYXhlIGRvIHVzdWFyaW86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNCIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfbWVzc2FnZSI+CisgICAgPHZhbHVlPk1lbnNheGU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNSIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfY2xpY2tfdGV4dCI+CisgICAgPHZhbHVlPlByZW1hIG5lc3RhIGxpZ2F6w7NuIHBhcmEgcGFydGljaXBhciBuYSB4dW50YW56YTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI2IiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9jbGlja190ZXh0X2xpbmsiPgorICAgIDx2YWx1ZT5QcmVtYSBhcXXDrSBwYXJhIGVudHJhciBuYSBzYWxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNyIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfY2xpY2tfdGV4dF9oZWxwIj4KKyAgICA8dmFsdWU+c2UgdGVuIHByb2JsZW1hcyBjb2EgbGlnYXrDs24sIHBvciBmYXZvciBjb3BpZSBlIHBlZ3VlIG5vIHNldSBuYXZlZ2Fkb3I6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyOCIgbmFtZT0iYnRuX3NlYXJjaF9pbnRlcm4iPgorICAgIDx2YWx1ZT5idXNjYSBpbnRlcm5hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyOSIgbmFtZT0iYnRuX3NlYXJjaF9leHRlcm4iPgorICAgIDx2YWx1ZT5FbmdhZGlyIGV4dGVybm9zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzMCIgbmFtZT0ibGJsX3ByZW5hbWUiPgorICAgIDx2YWx1ZT5Ob21lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzMSIgbmFtZT0ibGJsX25hbWUiPgorICAgIDx2YWx1ZT5BcGVsaWRvKHMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzMiIgbmFtZT0ibGJsX2VtYWlsIj4KKyAgICA8dmFsdWU+Q29ycmVvLWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMzIiBuYW1lPSJsb2dvdXRDb25maXJtX3RpdGxlIj4KKyAgICA8dmFsdWU+Q29uZmlybWUgYSBzYcOtZGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM0IiBuYW1lPSJsb2dvdXRDb25maXJtX3N1cmVfdG9fbG9nb3V0X3F1ZXN0aW9uIj4KKyAgICA8dmFsdWU+VGVuIGEgY2VydGV6YSBkZSBxdWVyZXIgc2HDrXIgYWdvcmE/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNSIgbmFtZT0ibWFpbiBtZW51Ij4KKyAgICA8dmFsdWU+QWNjY2nDs25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPlNhbGEgZGUgZGVtb3N0cmFjacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5Ib3JhIGRhIGRlbW9zdHJhY2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM4IiBuYW1lPSJtZWV0aW5nIFRpbWVyIj4KKyAgICA8dmFsdWU+SG9yYXJpbyBkYSB4dW50YW56YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzkiIG5hbWU9Im1lZXRpbmcgVGltZXIiPgorICAgIDx2YWx1ZT5Fc3RhIMOpIHVuaGEgc2FsYSBkZSBkZW1vc3RyYWNpw7NuLiBQYXJhIGRlc2FjdGl2YXIgZXN0YSBhZHZlcnRlbmNpYSBkZWJlcsOtYSBjb25zZWd1aXIgdW5oYSBzYWxhIHByaXZhZGEgcGFyYSBvIHNldSB1c28gcGVyc29hbCBvdSBvYnRlciB1biBzZXJ2aWRvciBwcm9waW8uIFNlcsOhIGF1dG9tYXRpY2FtZW50ZSByZWRpcml4aWRvIGRlbnRybzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQwIiBuYW1lPSJtZWV0aW5nIHJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5Nb2RlcmFkbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDEiIG5hbWU9Im1vZGVyYXRlZCByb29tIHdhaXRpbmcgbWVzc2FnZSI+CisgICAgPHZhbHVlPlBvciBmYXZvciwgYWdhcmRlIGF0YSBxdWUgbyBtb2RlcmFkb3IgZW50cmUgbmEgc2FsYS4gTyBtb2RlcmFkb3IgcG9kZSBzZXIgdW4gcHJvZmVzb3IsIGFkbWluaXN0cmFkb3IsIG91IG8gY3JlYWRvciBkZXN0YSBzYWxhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDIiIG5hbWU9ImVycm9yIHBvcHVwIj4KKyAgICA8dmFsdWU+QWNlcHRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDMiIG5hbWU9IndpbmRvdyBzY3JlZW5zaGFyaW5nIj4KKyAgICA8dmFsdWU+UmVjaWJpbmRvIG8gZXNjcml0b3JpbyBjb21wYXJ0aWRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0NCIgbmFtZT0id2luZG93IHNjcmVlbiBzaGFyaW5nIj4KKyAgICA8dmFsdWU+SGFpIHVuaGEgbm92YSByZWNlcGNpw7NuIGRlIGVzY3JpdG9yaW8gY29tcGFydGlkbyBkbyB1c3VhcmlvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDUiIG5hbWU9IndpbmRvdyBzY3JlZW4gc2hhcmluZyI+CisgICAgPHZhbHVlPkluaWNpYXIgYSBjb21wYXJ0aWNpw7NuIGRvIGVzY3JpdG9yaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ2IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkVuZ2FkaXIgbm92YSB4dW50YW56YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDciIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+U2FsYSBkZSB4dW50YW56YXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ4IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPlNhbGEgZGUgZXZlbnRvczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDkiIG5hbWU9Im1haW4gbWVudSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+TW9kZXJhY2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUwIiBuYW1lPSJtZW51IG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Nb2RlcmFyIHVzdWFyaW9zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1MSIgbmFtZT0ibWVudSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+TW9kZXJhciBzYWxhczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTIiIG5hbWU9Im1vZGVyYXRvciBvcmciPgorICAgIDx2YWx1ZT5NPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1MyIgbmFtZT0iY29uZmlybSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+RGVzZXhhIHF1ZSBlc3RlIHVzdWFyaW8gc2UgY29udmlydGEgZW4gbW9kZXJhZG9yIGRlc2Egb3JnYW5pemFjacOzbj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU0IiBuYW1lPSJlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+UG9yIGZhdm9yLCBlc2NvbGxhIHVuaGEgb3JnYW5pemFjacOzbiBhbnRlcyBkZSB0ZW50YXIgZW5nYWRpciB1biB1c3VhcmlvIGEgZWxhITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTUiIG5hbWU9ImNob29zZSB1c2VyIHdpbmRvdyI+CisgICAgPHZhbHVlPk9yZ2FuaXphY2nDs24gLSBNb2RlcmFkb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU2IiBuYW1lPSJtb2RlcmF0b3Igb3JnIHVzZXJzIj4KKyAgICA8dmFsdWU+VGVuIGEgY2VydGV6YSBkZSBxdWUgZGVzZXhhIGVsaW1pbmFyIGVzdGUgdXN1YXJpbyBkYSBvcmdhbml6YWNpw7NuPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTciIG5hbWU9Im9yZyBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+RXN0ZSB1c3VhcmlvIMOpIG1vZGVyYWRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTgiIG5hbWU9Im9yZyBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+RXN0ZSB1c3VhcmlvIG5vbiDDqSBtb2RlcmFkb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU5IiBuYW1lPSJlcnJvciBtZXNzYWdlIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5EZXNleGEgcXVlIGVzdGUgdXN1YXJpbyBub24gc2V4YSBtb2RlcmFkb3IgZGVzdGEgb3JnYW5pemFjacOzbj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYwIiBuYW1lPSJtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+RW5nYWRpciBvdSBlbGltaW5hciB1c3VhcmlvcyBvdSBzYWxhcyBuYSBzw7phIG9yZ2FuaXphY2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYxIiBuYW1lPSJkZWxldGUgY29uZmlybSBxdWVzdGlvbiI+CisgICAgPHZhbHVlPkRlc2V4YSBlbG1pbmluYXIgZXN0ZSByZXhpc3Rybz88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYyIiBuYW1lPSJkZWxldGUgY29uZmlybSBxdWVzdGlvbiB1c2VyIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5SZWxtZW50ZSBkZXNleGEgZWxpbWluYXIgZXN0ZSB1c3VhcmlvIGRhIHPDumEgb3JnYW5pemFjacOzbj8gU8OzIGVsaW1pbmFyw6EgYSByZWxhY2nDs24gZW50cmUgbyB1c3VhcmlvIGUgYSBvcmdhbml6YWNpw7NuLCBwYXJhIGVsaW1pbmFyIGRlZmluaXRpdmFtZW50ZSBhbyB1c3VhcmlvIHRlbiBxdWUgZW50cmFyIG5vIG1lbsO6IGRlIGFkbWluaXN0cmFjacOzbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYzIiBuYW1lPSJlcnJvciBtZXNzYWdlIHNlbGYgZGVsZXRpbmciPgorICAgIDx2YWx1ZT5Ob24gcG9kZSBlbGltaW5hciBvIHNldSBwcm9waW8gdXN1YXJpbyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY0IiBuYW1lPSJlcnJvciBtZXNzYWdlIGF1dGgiPgorICAgIDx2YWx1ZT5QYXJhIHVzYXIgZXN0ZSBtw6l0b2RvIHByZWNpc2EgZHVuaGEgY29udGEgZGUgYWRtaW5pc3RyYWRvciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY1IiBuYW1lPSJlcnJvciBtZXNzYWdlIFNPQVAiPgorICAgIDx2YWx1ZT5Ob24gaGFpIHVuaGEgc2VzacOzbiBhc29jaWFkYSBjb24gZXN0ZSBJRC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY2IiBuYW1lPSJlcnJvciBtZXNzYWdlIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Fc3RhIMOpIHVuaGEgY29udGEgZGUgYWRtaW5pc3RyYWRvciBvdSBtb2RlcmFkb3IuIFPDsyBwb2RlIGVkaXRhciBlc3RhIGNvbnRhIGEgdHJhdsOpcyBkbyBwYW5lbCBkZSBhZG1pbmlzdHJhY2nDs24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NyIgbmFtZT0iZW1haWwgdmVyaWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+UGFyYSBjb21wbGV0YXIgbyBzZXUgcmV4aXN0cm8sIHBvciBmYXZvciBwcmVtYSBuYSBzZWd1aW50ZSBsaWdhesOzbi4gT3UgY29waWUgbyBVUkwgbmEgYmFycmEgZGUgbmF2ZWdhY2nDs24gZG8gc2V1IG5hdmVnYWRvci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY4IiBuYW1lPSJlbWFpbCB2ZXJpZmljYXRpb24iPgorICAgIDx2YWx1ZT5QcmVtYSBwYXJhIHZlcmlmaWNhciBvIHNldSBjb3JyZW8tZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjkiIG5hbWU9ImVycm9yTWVzc2FnZV9Vc2VyQWN0aXZhdGlvblNlcnZsZXQgW0FjdGl2YXRlVXNlcl0iPgorICAgIDx2YWx1ZT5Ob24gc2UgYXRvcG91IHVuIHVzdWFyaW8gcGFyYSBlc3RlIEhhc2guPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3MCIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPkVzdGUgdXN1YXJpbyB4YSBlc3TDoSBhY3RpdmFkbyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjcxIiBuYW1lPSJlcnJvck1lc3NhZ2VfVXNlckFjdGl2YXRpb25TZXJ2bGV0IFtBY3RpdmF0ZVVzZXJdIj4KKyAgICA8dmFsdWU+QSBzw7phIGNvbnRhIGZvaSBhY3RpdmFkYSBzYXRpc2ZhY3RvcmlhbWVudGUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3MiIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPkluaWNpYXIgc2VzacOzbiBhZ29yYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzMiIG5hbWU9ImxvZ2luRXJyb3JNZXNzYWdlID0gdXNlciB3YXMgbm90IGFjdGl2YXRlZCI+CisgICAgPHZhbHVlPkEgc8O6YSBjb250YSBub24gZXN0w6EgYWN0aXZhZGEuIEFudGVzIHVzZSBhIGxpZ2F6w7NuIGRvIGNvcnJlby1lIHF1ZSByZWNlYml1IGR1cmFudGUgbyByZXhpc3Ryby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc0IiBuYW1lPSJyZWdpc3RlciB2ZXJpZmljYXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPlJleGlzdHJvdXNlIGNvcnJlY3RhbWVudGUuIEVudmlhbW9zbGxlIHVuIGNvcnJlby1lIGN1biBjw7NkaWdvIGRlIHZlcmlmaWNhY2nDs24uIFBvciBmYXZvciwgY29tcHJvYmUgYSBzw7phIGJhbmRleGEgZGUgZW50cmFkYSBkZSBjb3JyZW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3NSIgbmFtZT0icGFydGljaXBhbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+RWxpbWluYXIgbyByb2wgZGUgbW9kZXJhZG9yIGRlc3RlIHVzdWFyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc2IiBuYW1lPSJwYXJ0aWNpcGFudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5EYXIgZGVyZWl0b3MgZGUgbW9kZXJhZG9yIGEgZXN0ZSB1c3VhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3NyIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+VXN1YXJpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzgiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFjY2VzbyBhbyB0YWJvbGVpcm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc5IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Nb2RlcmFkb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgwIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Nb2RlcmFjacOzbjogUG9yIGZhdm9yIGVzY29sbGEgdW4gdXN1YXJpbyBkYSBsaXN0YSBwYXJhIGRhcmxsZSBhY2Nlc28gYW8gdGFib2xlaXJvLCBtb2RlcmFjacOzbiBvdSB2aWRlby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgxIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Fc3RlIHVzdWFyaW8geGEgw6kgbW9kZXJhZG9yLCB0ZW4gYXV0b23DoXRpY2FtZW50ZSBhY2Nlc28gcGFyYSBkZWJ1eGFyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODIiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCBlcnJvciI+CisgICAgPHZhbHVlPkVzdGUgw6kgdm9zdGVkZSEgTm9uIMOpIHBvc8OtYmVsIHF1aXRhcnNlIGRlcmVpdG9zIGRlIG1vZGVyYWRvciBhIHVuIG1lc21vLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODMiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlBlcm1pdGlyIGEgZXN0ZSB1c3VhcmlvIGVudmlhciBvIHNldSBzb24gLyB2w61kZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg0IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5FbGltaW5hciBzb24vdsOtZGVvIGRlc3RlIHVzdWFyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg1IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5UZcOxbyB1bmhhIHByZWd1bnRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4NiIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+R3VzdGFyaWFsbGUgZGVidXhhciBubyB0YWJvbGVpcm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg3IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5HdXN0YXJpYWxsZSBjb21wYXJ0aXIgbyBtZXUgc29uL3bDrWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODgiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlZvc3RlZGUgw6kgbW9kZXJhZG9yIGRlc3RhIHNhbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg5IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Wb3N0ZWRlIHRlbiBhY2Nlc28gYSBkZWJ1eGFyIG5vIHRhYm9sZWlybzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTAiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPk5vbiBsbGUgZXN0w6EgcGVybWl0aWRvIGNvbXBhcnRpciBvIHNldSBzb24vdsOtZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5MSIgbmFtZT0iZXJyb3J0eXBlIj4KKyAgICA8dmFsdWU+TWVuc2F4ZSBhbyBtb2RlcmFkb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkyIiBuYW1lPSJhcHBseSBmb3IgbW9kIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5PIHVzdWFyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkzIiBuYW1lPSJhcHBseSBmb3IgbW9kIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5ndXN0YXJpYWxsZSBmYWNlciB1bmhhIHByZWd1bnRhLiZsdDtici8mZ3Q7Jmx0O2JyLyZndDsgJmx0O2kmZ3Q7KFVzZSBhcyBpY29uYXMgZGUgZXN0YWRvIGNlcmNhIGRvIHVzdWFyaW8gbmEgbGlzdGEgZGUgdXN1YXJpb3MgcGFyYSBlbmdhZGlyIG91IGVsaW1pbmFyIGRlcmVpdG9zIGRlIG1vZGVyYWNpw7NuLikmbHQ7N2kmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5NCIgbmFtZT0iYXBwbHkgZm9yIHdoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5ndXN0YXJpYWxsZSBkZWJ1eGFyIG5vIHRhYm9sZWlyby4gVXNlIGFzIGljb25hcyBkZSBlc3RhZG8gY2VyY2EgZG8gdXN1YXJpbyBuYSBsaXN0YSBkZSB1c3VhcmlvcyBwYXJhIGVuZ2FkaXIgb3UgZWxpbWluYXIgZGVyZWl0b3MgZGUgZGVidXhvIG5vIHRhYm9sZWlyby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk1IiBuYW1lPSI2OTUiPgorICAgIDx2YWx1ZT5ndXN0YXJpYWxsZSBjb21wYXJ0aXIgbyBzZXUgc29uL3bDrWRlby4gVXNlIG9zIGljb25vcyBkZSBlc3RhZG8gcHJldG8gZG8gdXN1YXJpbyBuYSBsaXN0YSBkZSB1c3VhcmlvcyBwYXJhIGRhciBvdSBxdWl0YXIgZGVyZWl0b3MgZGUgQXVkaW8vdsOtZGVvIHBhcmEgY2FscXVlcmEgdXN1YXJpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk2IiBuYW1lPSJtb2RlcmF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UZW4gcXVlIGFnYXJkYXIgYXTDqSBxdWUgdW4gbW9kZXJhZG9yIGVudHJlIG5hIHNhbGEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5NyIgbmFtZT0iY2FsZW5kYXIgYnV0dG9uIj4KKyAgICA8dmFsdWU+Q2FuY2VsYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk4IiBuYW1lPSJjYWxlbmRhciBidXR0b24iPgorICAgIDx2YWx1ZT5HYXJkYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk5IiBuYW1lPSJjYWxlbmRhciBjb21wb25lbnQiPgorICAgIDx2YWx1ZT5Ew61hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwMCIgbmFtZT0iY2FsZW5kYXIgY29tcG9uZW50Ij4KKyAgICA8dmFsdWU+TWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwMSIgbmFtZT0iY2FsZW5kYXIgY29tcG9uZW50Ij4KKyAgICA8dmFsdWU+QW5vPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwMiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkNhcmdhciB1biBmaWNoZWlybzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDMiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5FbmdhZGlyIHVuIGZpY2hlaXJvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwNCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkFjdHVhbGl6YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA1IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+TGl4bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDYiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5NZXVzIGZpY2hlaXJvcyBGaWxlcyAoRGlzcG9zaXRpdm8gcGVyc29uYWwpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwNyIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkZpY2hlaXJvcyBkYSBzYWxhIChEaXNwb3NpdGl2byBww7pibGljbyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA4IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+RW5nYWRpciBmaWNoZWlybzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDkiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5FbmdhZGlyIGNhcnRhZm9sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkJvcnJhciBjYXJ0YWZvbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTEiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5FZGl0YXIgbyBub21lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPk5vdm8gY2FydGFmb2w8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzEzIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+VGVuIGEgY2VydGV6YSBkZSBxdWUgZGVzZXhhIGVsaW1pbmFyIGVzdGUgZWxlbWVudG8/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxNCIgbmFtZT0idXNlciBhZG1pbiI+CisgICAgPHZhbHVlPkJ1c2NhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTUiIG5hbWU9InVzZXIgYWRtaW4iPgorICAgIDx2YWx1ZT5CdXNjYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE2IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+QWJyaXIgbyBkb2N1bWVudG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE3IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+TW9zdHJhciB0b2RvcyBvcyBmaWNoZWlybyAoVmlzdGEgZW4gw6FyYm9yZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE4IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+UGVjaGFyIG8gZG9jdW1lbnRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxOSIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkJvcnJhciBvIGZpY2hlaXJvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyMCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPk5vbiB0ZW4gcGVybWlzb3MgcGFyYSBlc2NyaWJpciBvdSBkZWJ1amFyIG5vIHRhYm9sZWlyby4gRGViZSBzZXIgbW9kZXJhZG9yIG91LCBhbG8gbWVub3MsIHRlciBwZXJtaXNvcyBkZSBlZGljacOzbiBkbyB0YWJvbGVpcm8uIFNvbGljw610ZWxsbyBhIHVuIG1vZGVyYWRvci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIxIiBuYW1lPSJwcm9wZXJ0eSBwYW5lbCI+CisgICAgPHZhbHVlPlByb3BpZWRhZGVzIGRvIGRvY3VtZW50bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjIiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPkluaWNpYXIgSmF2YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjMiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPkluaWNpYXIgRmxhc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI0IiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5VbiB1c3VhcmlvIGRlc2V4YSBjb21wYXJ0aXIgbyBzZXUgZXNjcml0b3Jpby4gUXVlcmUgdmlzdWFsaXphbGE/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNSIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+QWN0dWFsbWVudGUgZXN0w6EgY29tcGFydGluZG8gbyBzZXUgZXNjcml0b3Jpby4gUGFyYSBkZWl4YXIgZGUgZmFjZWxvLCBwcmVtYSBubyBib3TDs24gUGFyYXIgbm8gY2xpZW50ZSBkZSBjb21wYXJ0aWNpw7NuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjYiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPkNvbXBhcnRpbmRvIGEgc2VzacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjciIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPlhhIGVzdMOhIGNvbXBhcnRpbmRvIG8gc2V1IGVzY3JpdG9yaW8hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyOCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5WaXNvciBkZSBlc2NyaXRvcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyOSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5QYXJhciBhIGNvbXBhcnRpY2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMwIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkNvbXBhcnRpY2nDs24gZGUgZXNjcml0b3JpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzEiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UHVsc2UgSW5pY2lhciBwYXJhIHB1YmxpY2FyIG8gc2V1IGVzY3JpdG9yaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMyIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkluaWNpYXIgYSBjb21wYXJ0aWNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5QYXVzYSBuYSBjb21wYXJ0aWNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TZWxlY2Npb25lIHVuIMOhcmVhIGRhIHBhbnRhbGxhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzUiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+Q2FtYmlhciBhIGxhcmd1cmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM2IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlbWF0b3UgYSBzZXNpw7NuIGRlIGNvbXBhcnRpY2nDs24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5DYW1iaWFyIGEgYWx0dXJhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczOCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5EZXNwcmF6YW1lbnRvLVg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM5IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkRlc3ByYXphbWVudG8tWTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDAiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+TGFyZ286PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0MSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5BbHRvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDIiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+TyBzZXJ2aWRvciBwZWNob3UgYSBjb25leGnDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQzIiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPkNhbmNlbGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NCIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5JbmljaWFyIEphdmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ1IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPlNlIHBlY2hhIGNvbXBsZXRhbWVudGUgZXN0YSBzZXNpw7NuLCBub24gc2Vyw6EgcG9zw61iZWwgcmVpbmljaWFyIG8gdmlzb3IgZHVyYW50ZSBlc3RhIHNlc2nDs24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NiIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5Db25maXJtZSBvIHBlY2hlIGRhIHNlc2nDs24gZG8gdmlzb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ3IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPkNvbXBhcnRpciBlc2NyaXRvcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0OCIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5HcmF2YXIgYSBzZXNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0OSIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPkNvLW5hdmVnYWNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MCIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPlVtbS4uLiBGaXJlZm94IGVuIHdpbmRvd3Mgbm9uIG1vc3RyYSBhIGNvLW5hdmVnYWNpw7NuIGNvbiBjbGFyaWRhZGUuIFBvciBmYXZvciwgdXRpbGljZSBvdXRybyBuYXZlZ2Fkb3Igb3UgcGVjaGUgZXN0YSBmdW5jaW9uYWxpZGFkZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUxIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+QW50ZXJpb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUyIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+U2VndWludGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUzIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+UmVjYXJnYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU0IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+SW5pY2lvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1NSIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPkNhcmdhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTYiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5FbmdhZGlyIGVzdGUgc2l0aW8gYW8gc2V1IHBlcmZpbCBjb21vIHNpdGlvIHByZWRldGVybWluYWRvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTciIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5Qcm9iYXIgYSBjb25maWd1cmFjacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTgiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5Db21wcm9iZSBhIGNvbmZpZ3VyYWNpw7NuIGRvIHNldSBtaWNyw7Nmb25vIGUvb3UgY8OhbWFyYSBhbnRlcyBkZSBlbnRyYXIgbmEgc2FsYS4gUGFyYSBlbCBncmF2ZSBkdXJhbnRlIGFsZ8O6bnMgc2VndW5kb3MgZSByZXByb2TDunphbywgZGViZXLDoSBlc2NvaXRhciBhIHPDumEgdm96IGUgdmVyIGEgc8O6YSBpbWF4ZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU5IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+Tm9uIHZvbHZlciBhIG1vc3RyYXIgZXN0YSBwcm9iYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjAiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5DYW5jZWxhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjEiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5JbmljaWFyIHVuaGEgY29uZmVyZW5jaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYyIiBuYW1lPSJlZGl0IHZpZGVvIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+Tm9uIHZvbHZlciBhIHByZWd1bnRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjMiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5SRUM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY0IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+UExBWTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjUiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5Qb2RlIGNvbnRpbnVhciBzZW4gZmFjZXIgYSBjb21wcm9iYWNpw7NuIHNlIG5vbiBkZXNleGEgcHVibGljYXIgYSBpbWF4ZSBlL291IG8gc29uLiBPcyBwYXJ0aWNpcGFudGVzIHNlbiBzb24gb3Ugc2VuIHbDrWRlbyBwb2RlbiBlbiB0b2RvIGNhc28gdXRpbGl6YXIgbyB0YWJvbGVpcm8sIGNvbXBhcnRpciBvIHNldSBlc2NyaXRvcmlvIG91IGVudmlhciBtZW5zYXhlcyB1dGlsaXphbmRvIGEgbGnDsWEgZGUgY29udmVyc2FzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjYiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5TVE9QPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NyIgbmFtZT0iNzY3Ij4KKyAgICA8dmFsdWU+TWVkaWRvciBkZSBuaXZlaXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY4IiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+UHJlbWEgZW4gSW5pY2lhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjkiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5JbmljaWFyIGEgY29uZmVyZW5jaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzcwIiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+SW5pY2lhciBvIGV2ZW50bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzEiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5FbGl4aXIgYSBzYWxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MiIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPlByb2JhciBhIGNvbmZpZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzczIiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+SW5pY2lhciBhIGNvbmZlcmVuY2lhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NCIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPkluc3RydWNjacOzbnMgwqtDb25mZXJlbmNpYcK7OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzUiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5JbmljaWFyIGEgZ3JhdmFjacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzYiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5Ob24gbW9zdHJhciBhIHByb2JhIGRlIHNvbiAvdsOtZGVvIGFudGVzIGRlIGVudHJhciBudW5oYSBjb25mZXJlbmNpYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzciIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT5TYWxhcyBww7pibGljYXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc4IiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+QXMgc2FsYXMgcMO6YmxpY2FzIHNvbiBhY2Nlc8OtYmVpcyBwYXJhIHRvZG9zIG9zIHVzdWFyaW9zLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzkiIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT5TYWxhcyBwcml2YWRhczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODAiIG5hbWU9IlByaXZhdGUgUm9vbXMiPgorICAgIDx2YWx1ZT5BcyBzYWxhcyBwcml2YWRhcyBzb24gYWNjZXPDrWJlaXMgc8OzIHBhcmEgb3MgdXN1YXJpb3MgZGEgbWVzbWEgb3JnYW5pemFjacOzbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgxIiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+QXMgbWnDsWFzIHNhbGFzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MiIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPkFzIHNhbGFzIG5lc3RhIHNlY2Npw7NuIHNvbiBwYXJhIHVzbyBwZXJzb2FsLiBDcmVhbnNlIHV0aWxpemFuZG8gbyBjYWxlbmRhcmlvIGUgdGXDsWVuIHVuaGEgZGF0YSBkZSBpbmljaW8gZSBkZSBmaW5hbC4gU8OzIGVzdMOhbiBsaXN0YWRhcyBuZXN0YSBzZWNjacOzbiBkdXJhbnRlIG8gcGVyw61vZG8gZGUgdGVtcG8gZW4gcXVlIHRlw7FlbiB2YWxpZGV6LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODMiIG5hbWU9InJlc3RyaWN0ZWQgcm9vbSI+CisgICAgPHZhbHVlPlRlbiBxdWUgc2VyIG1vZGVyYWRvciBwYXJhIHBvZGVyIGZhY2VyIGlzdG8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NCIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT5Tb2xpY2l0YXIgYSBtb2RlcmFjacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODUiIG5hbWU9Im1lbnUgb3B0aW9uIj4KKyAgICA8dmFsdWU+U29saWNpdGFyIGFjY2VzbyBhbyB0YWJvbGVpcm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg2IiBuYW1lPSJtZW51IG9wdGlvbiI+CisgICAgPHZhbHVlPlNvbGljaXRhciBhY2Nlc28gw6EgY8OhbWFyYS9taWNyw7Nmb25vPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NyIgbmFtZT0iZXJyb3IgbWVzc2FnZSBzb2FwIHNlY3VyZSBsb2dpbiI+CisgICAgPHZhbHVlPkEgYXV0ZW50aWNhY2nDs24gSGFzaCBkZXN0YSBzZXNpw7NuIHhhIGZvaSB1c2FkYS4gTm9uIHBvZGUgZmFjZXJzZSBkw7phcyB2ZWNlcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg4IiBuYW1lPSJkYXNoYm9hcmQgYnV0dG9uIj4KKyAgICA8dmFsdWU+SU5JQ0lBUjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODkiIG5hbWU9ImV4aXQgY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPlNBw41SPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5MCIgbmFtZT0iY29uZmVyZW5jZSB2aWV3Ij4KKyAgICA8dmFsdWU+VGVuIGEgY2VydGV6YSBkZSBxdWUgZGVzZXhhIHNhw61yPyBTZXLDrWEgY29udmludGUgcXVlIGFudGVzIGxpbXBlIG9zIGRvY3VtZW50b3MgY2FyZ2Fkb3MsIG8gdGFib2xlaXJvIGUgbyBoaXN0b3JpYWwgZGUgY29udmVyc2FzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTEiIG5hbWU9ImNvbmZlcmVuY2UgdmlldyI+CisgICAgPHZhbHVlPlNhw61yIGRhIGNvbmZlcmVuY2lhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5MiIgbmFtZT0ibWFpbiBtZW51Ij4KKyAgICA8dmFsdWU+U2FsYXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkzIiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT5FbGl4YSB1bmhhIHNhbGEgcGFyYSBhIHh1bnRhbnphPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5NCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5IYWkgdW4gZXZlbnRvIHNlbiBnYXJkYXIgbm8gY2FsZW5kYXJpby4gR2FyZGVvIG91IGVsaW1pbmVvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTUiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RW5nYWRhLCBwb2xvIG1lbm9zLCB1biBwYXJ0aWNpcGFudGUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5NiIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5UZW4gYSBjZXJ0ZXphIGRlIHF1ZSBkZXNleGEgZWxpbWluYXIgZXN0ZSBldmVudG8/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5NyIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5BdmlzbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTgiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RW5nYWRpciB1biBldmVudG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk5IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPmTDrWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAwIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPnNlbWFuYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDEiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+bWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMiIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5EZXNjcmljacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDMiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QXNpc3RlbnRlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSwgYSBzw7phIFBsYXRhZm9ybWEgV2ViIGRlIFZpZGVvY29uZmVyZW5jaWEuIFRhbiBzw7MgdGVuIHF1ZSBzZWdpciBhcyBpbnN0cnVjY2nDs25zLCBwcmVtYSBubyBib3TDs24gcGFyYSBpbmljaWFyIHVuaGEgY29uZmVyZW5jaWEgaW5tZWRpYXRhbWVudGUgb3UgdmFpYSBhbyBjYWxlbmRhcmlvIHBhcmEgcGxhbmlmaWNhciB1bmhhIGNvbmZlcmVuY2lhIHBhcmEgbyBmdXR1cm8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNSIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+UGxhbmlmaWNhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDYiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5QYXJhIHBsYW5pZmljYXIgdW5oYSBjb25mZXJlbmNpYSwgZW5nYWRhIHVuIG5vdm8gZXZlbnRvIG5vIGNhbGVuZGFyaW8uIFBhcmEgY2FkYSBldmVudG8gY3JlYXJhc2UgYXV0b21hdGljYW1lbnRlIHVuaGEgc2FsYS4gVm9zdGVkZSBlIG8gcmVzdG8gZGUgYXNpc3RlbnRlcyByZWNpYmlyw6FuIHVuIGNvcnJlby1lIGN1bmhhIGxpZ2F6w7NuIMOhIHNhbGEuJmx0O2JyLyZndDsmbHQ7YnIvJmd0O1BvZGUgZXNjb2xsZXIgZW50cmUgZGlmZXJlbnRlcyB0aXBvcyBkZSBzYWxhcyBjb24gZGlmZXJlbnRlcyBkZXNlw7FvcyBlIHNpc3RlbWFzIGRlIG1vZGVyYWNpw7NuLiBUYW3DqW4gcG9kZSBlc2NvbGxlciBlbnRyZSBkaWZlcmVudGVzIHRpcG9zIGRlIG5vdGlmaWNhY2nDs24gZGUgY29ycmVvLWUgcXVlIHNlIGVudsOtZW4gZW4gY2FkYSBldmVudG8gZG8gY2FsZW5kYXJpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA3IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+TmVjZXNpdGEgYXh1ZGE/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwOCIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlJlc3RyaW54aWRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwOSIgbmFtZT0ibHpjYWxlbmRlciI+CisgICAgPHZhbHVlPkJ1c2NhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTAiIG5hbWU9Imx6Y2FsZW5kZXIiPgorICAgIDx2YWx1ZT5FbmdhZGlyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMSIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPk5vbiBoYWkgbmluZ8O6biB1c3VhcmlvIHNlbGVjY2lvbmFkby4gU2VsZWNjaW9uZSBwcmltZXJvIHVuIMOtdGVtIGRhIGxpc3RhIGUgcHJlbWEgZW4gRW5nYWRpci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEyIiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RW5nYWRpciB1biBhc2lzdGVudGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEzIiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+R2FyZGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxNCIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPkJvcmFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxNSIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPkRldGFsbGVzIGRvIGV2ZW50bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTYiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5Nb2RlcmFkb3JlcyBwcmVkZXRlcm1pbmFkb3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+U3VwZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE4IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE5IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+Tm9tZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjAiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5Db3JyZW8tZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjEiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5FbmdhZGlyIG5vdm8gbW9kZXJhZG9yIHByZWRldGVybWluYWRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyMiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPsOJIHN1cGVybW9kZXJhZG9ycmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIzIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+U2UgYSBzYWxhIGVzdMOhIG1vZGVyYWRhLCBzZXhhIHF1ZW4gc2V4YSB4YSBvIG1vZGVyYWRvciBzZWd1aXLDoSBhIHNlbG8uIFNlIG5vbiBkZXNleGEgcXVlIHNleGEgYXPDrSwgZSBxdWVyZSBxdWUgc8OzIGRldGVybWluYWRvIHVzdWFyaW8gc2V4YSBvIG1vZGVyYWRvciwgdXRpbGljZSBhIG9wY2nDs24gZGUgbW9kZXJhZG9yIHByZWRldGVybWluYWRvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjQiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5VbiBzdXBlcm1vZGVyYWRvciDDqSBzZW1wcmUgbyBtb2RlcmFkb3IgZHVuaGEgc2FsYSBjYW5kbyBlbnRyYSBuZWxhLiBBZGVtw6FpcywgbmFpZGUgcG9kZSBxdWl0YXJsbGUgYSBtYXJjYSBkZSBtb2RlcmFjacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjUiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5BcGxpY2FyIGEgc3VwZXJtb2RlcmFjacOzbiBhbyB1c3VhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkVsaW1pbmFyIGEgc3VwZXJtb2RlcmFjacOzbiBhbyB1c3VhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNyIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI4IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+U2UgZW5nYWRlIHVuaGEgb3JnYW5pemFjacOzbiDDoSBzYWxhLCBzw7Mgb3MgdXN1YXJpb3MgZGUgZGl0YSBvcmdhbml6YWNpw7NuIHRlcsOhbiBhY2Nlc28gw6EgbWVzbWEgKGlzdG8gc8OzIMOpIGFzw60gc2UgYSBtYXJjYSBkZSBQw7pibGljYSBlc3TDoSBjb25maWd1cmFkYSBjb21vIGZhbHNhISk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI5IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+TW9kZXJhY2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODMwIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+TGltaXRhY2nDs25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzMSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPk9yZ2FuaXphY2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODMyIiBuYW1lPSJjb25maXJtIGFjdGlvbiI+CisgICAgPHZhbHVlPlRlbiBjZXJ0ZXphPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzMiIG5hbWU9ImNvbmZpcm0gZGVsZXRlIj4KKyAgICA8dmFsdWU+VGVuIGEgY2VydGV6YSBkZSBxdWUgZGVzZXhhIGJvcmFyIGVzdGUgZWxlbWVudG8/IFRlbiBxdWUgcHJlbWVyIG5vIGJvdMOzbiBHYXJkYXIgcGFyYSBhbG1hY2VuYXIgb3MgY2FtYmlvcyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM0IiBuYW1lPSJ1c2VyIGNob29zZSBlcnJvciI+CisgICAgPHZhbHVlPk5vbiBoYWkgbmluZ8O6biB1c3VhcmlvIHNlbGVjY2lvbmFkby4gU2VsZWNjacOzbmVvIGFudGVzIHBhcmEgZW5nYWRpbG8hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkVuZ2FkaXIgdW4gbm92byBtb2RlcmFyb3IgcHJlZGV0ZXJtaW5hZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM2IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+VGVuIGEgY2VydGV6YSBkZSBxdWUgZGVzZXhhIGVuZ2FkaXIgdW5oYSBtYXJjYSBkZSBzdXBlcm1vZGVyYWRvciBhIGVzdGUgdXN1YXJpbz8gTGVtYnJlIHF1ZSB1biBzdXBlcm1vZGVyYWRvciBub24gc8OzIMOpIG8gbW9kZXJhZG9yIGR1bmhhIHNhbGEsIHNlbm9uIHF1ZSBhZGVtw6FpcyBuaW5nw7puIG91dHJvIG1vZGVyYWRvciBwb2RlcsOhIGJvcnJhciBhIG1hcmNhIGRlIG1vZGVyYWNpw7NuLiBOZWNlc2l0YSBnYXJkYXIgbyBvYnhlY3RvIHNhbGEgcGFyYSBhbG1hY2VuYXIgZXN0YXMgY29uZmlndXJhY2nDs25zITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5UZW4gYSBjZXJ0ZXphIGRlIHF1ZSBkZXNleGEgZWxpbWluYXIgYSBtYXJjYSBkZSBzdXBlcm1vZGVyYWRvciBhIGVzdGUgdXN1YXJpbz8gTmVjZXNpdGEgZ2FyZGFyIG8gb2J4ZWN0byBzYWxhIHBhcmEgYWxtYWNlbmFyIGVzdGFzIGNvbmZpZ3VyYWNpw7NucyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM4IiBuYW1lPSJzdXBlciBtb2RlcmF0b3IiPgorICAgIDx2YWx1ZT5Fc3RlIHVzdWFyaW8gw6kgc3VwZXJtb2RlcmFkb3IuIE5vbiBwb2RlIHF1aXRhcmxsZSBhIG1hcmNhIGRlIG1vZGVyYWNpw7NuIGEgdW4gc3VwZXJtb2RlcmFkb3IhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzOSIgbmFtZT0iY29uZmlybSBkZWxldGUiPgorICAgIDx2YWx1ZT5UZW4gYSBjZXJ0ZXphIGRlIHF1ZSBkZXNleGEgYm9ycmFyIGVzdGUgZmljaGVpcm8vY2FydGFmb2w/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0MCIgbmFtZT0iY29uZmlybSBkZWxldGUiPgorICAgIDx2YWx1ZT5Cb3JyYXIgdW4gZmljaGVpcm8vY2FydGFmb2w/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0MSIgbmFtZT0ic2FsdXRhdGlvbiI+CisgICAgPHZhbHVlPkRuYS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQyIiBuYW1lPSJzYWx1dGF0aW9uIj4KKyAgICA8dmFsdWU+RC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQzIiBuYW1lPSJwcm9wZXJ0eSBwYW5lbCB3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+UHJvcGllZGFkZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ0IiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+TW9zdHJhciBhIHBvc2ljacOzbiBkbyByYXRvIGFvcyBwYXJ0aWNpcGFudGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NSIgbmFtZT0icHVibGlzaCBvcHRpb24iPgorICAgIDx2YWx1ZT5Db21wYXJ0aXIgbyBzb24gY28gbWluaWFwbGljYXRpdm8gU0lQPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NiIgbmFtZT0icHVibGlzaCBvcHRpb24iPgorICAgIDx2YWx1ZT5Db21wYXJ0aXIgbyBzb24gY29uIFNJUCBlIG8gdsOtZGVvIGNvbiBGbGFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDciIG5hbWU9ImRvY3VtZW50IHBhbmVsIj4KKyAgICA8dmFsdWU+UGFudGFsbGEgY29tcGxldGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ4IiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5WZXIgbyBlc2NyaXRvcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0OSIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+TyB1c3VhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MCIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+ZGVzZXhhIGNvbXBhcnRpciBvIHNldSBlc2NyaXRvcmlvLiBEZXNleGEgdmlzdWFsaXphbG8/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MSIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+UGVjaGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MiIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPlpvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUzIiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+QSBzZXNpw7NuIGZvaSBwZWNoYWRhIHBvciBxdWVuIGNvbXBhcnRpYSBvIGVzY3JpdG9yaW8hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1NCIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPlBhdXNhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1NSIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPk5vbmEgY29tcGFydGljacOzbiBkZSBlc2NyaXRvcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1NiIgbmFtZT0icHJlc2VudGVyIG1pbmkgaWNvbiI+CisgICAgPHZhbHVlPk1pbmltaXphcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTciIG5hbWU9InByZXNlbnRlciBtaW5pIGljb24iPgorICAgIDx2YWx1ZT5NYXhpbWl6YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU4IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Ww61kZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU5IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5MacOxYSB0ZW1wb3JhbCBkYSBncmF2YWNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QXMgbWnDsWFzIGdyYXZhY2nDs25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+R3JhdmFjacOzbnMgcMO6YmxpY2FzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+SW5mb3JtYWNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+Tm9tZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjQiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkxvbnhpdHVkZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjUiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkRhdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Qb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY3IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5EZXNjYXJnYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjgiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlByaW5jaXBhbCAtIFbDrWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjkiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkdyYXZhY2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcwIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Qb2RlIGdyYXZhciBlIGNvbXBhcnRpciBvIGVzY3JpdG9yaW8gZGUgdmV6LiBQYXJhIHBlcm1pdGlyIHF1ZSBvdXRyb3MgdmVhYW4gbyBzZXUgZXNjcml0b3JpbyBwcmVtYSBubyBib3TDs24gSW5pY2lhciBuYSBwYXJ0ZSBzdXBlcmlvci4gUGFyYSBzw7MgZ3JhdmFyIGEgc2VzacOzbiwgw6kgYWJvbmRvIHF1ZSBwcmVtYSBlbiBJbmljaWFyIGEgZ3JhYmFjacOzbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcxIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5JbmljaWFyIGEgZ3JhdmFjacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzIiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlBhcmFyIGEgZ3JhdmFjacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzMiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkRlc2NhcmdhciBvIGZpY2hlaXJvIEZMVjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzQiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlNhbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc1IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5SZXByb2R1Y2lyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3NiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UGFyYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc3IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5PIHVzdWFyaW8gdGVuIG8gbWljcsOzZm9ubyBhY3RpdmFkbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UGFyYXIgYSBjb21wYXJ0aWNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3OSIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5QZXJtaXRpciBhcyBwcmVndW50YXMgZG8gdXN1YXJpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODAiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+RGVzYWN0aXZlIGVzdGEgb3BjacOzbiBwYXJhIGV2aXRhciBxdWUgY2FscXVlcmEgdXN1YXJpbyBvIG1vbGVzdGUgbmVzdGEgc2FsYS4gRmFjZW5kb28gbyBib3RvbiBwYXJhIHNvbGljaXRhciBhIG1vZGVyYWNpw7NuICjCq1Rlw7FvIHVuaGEgcHJlZ3VudGHCuykgbm9uIMOpIHZpc2libGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MSIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5QZXJtaXNvczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODIiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkRlc2NhcmdhciBjb21vIEFWSTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODMiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkZMVjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODQiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkFWSTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODUiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlJhdyBTY3JlZW52aWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODYiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlPDsyBzb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg3IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Ib3VibyBhbGfDum4gZXJybyBtZW50cmVzIGRlIHByb2Nlc2FiYSBhIGdyYXZhY2nDs24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4OCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TGEgZ3JhYmFjacOzbiBubyBlc3TDoSBhw61uZGEgcHJlcGFyYWRhIHBhcmEgdmVyLiBUZW50ZW8gZGUgbm92byBkZW50cm8gZHVuIHBhciBkZSBtaW51dG9zLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODkiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlJleGlzdHJvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTAiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk1lbnNheGUgZG8gZ3JhdmFkb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkxIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5PazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTIiIG5hbWU9InNpcCBhcHBsZXQiPgorICAgIDx2YWx1ZT5PIG1pbmlhcGxpY2F0aXZvIFNJUCBub24gZXN0w6EgcHJlcGFyYWRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MyIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPkF4dXN0ZXMgZGEgY29udGEgU0lQPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NCIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNJUCBzZXR0aW5ncyBmb3IgZWFjaCB1c2VyLiBZb3UgY2FuIHR1cm4gb24gb3Igb2ZmIFNJUCB2aWEgdGhlIEFkbWluaXN0cmF0aW9uICZndDsgQ29uZmlndXJhdGlvbiAoS2V5OiBlbmFibGVfc2lwKS4gVGhlIFNJUCBkYXRhIGZvciBlYWNoIHVzZXIgc2hvdWxkIGJlIGNyZWF0ZWQgYXV0b21hdGljYWxseS4gWW91IGNhbiByZS1jcmVhdGUgdGhlIGRhdGEgYnkgY2hlY2tpbmcgIlJlLWdlbmVyYXRlIFNJUCBEYXRhIjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTUiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TSVAtVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTYiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TaXAtUGFzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTciIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TaXAtQXV0aC1JZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTgiIG5hbWU9InNpcCBzdGF0dXMgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSBMb2dpbiB0byB0aGUgU0lQIEdhdGV3YXkgaGFzIGZhaWxlZC4gWW91IHNob3VsZCBjaGVjayB0aGUgYXV0aGVudGlmaWNhdGlvbiBkYXRhIG9mIHlvdXIgU0lQLVByb3ZpZGVyIGFuZCB0aGUgU0lQLUFjY291bnQgRGF0YSBmb3IgZWFjaCBVc2VyLiBBcyBBZG1pbmlzdHJhdG9yIHlvdSBhcmUgc3RpbGwgYWJsZSB0byBsb2dpbiBhbmQgY2hlY2sgdGhlIENvbmZpZ3VyYXRpb24uIEFzIFVzZXIgb3IgTW9kZXJhdG9yIHlvdSB3aWxsIGJlIGJsb2NrZWQgZnJvbSBhbnkgaW50ZXJhY3Rpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5OSIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIExvZ2luIHRvIHRoZSBTSVAgR2F0ZXdheSBoYXMgZmFpbGVkLiBDb250YWN0IHlvdXIgU2VydmljZSBUZWFtITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDAiIG5hbWU9InNpcCBzdGF0dXMgbWVzc2FnZSI+CisgICAgPHZhbHVlPkxvZ2dpbmcgaW4gdG8gU0lQLUdhdGV3YXkgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwMSIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TG9nZ2luZyBpbiB0byBTSVAtR2F0ZXdheSAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAyIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TaG93IExvZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDMiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkxvZyBtZXNzYWdlcyBmcm9tIHBvc3QgcmVjb3JkZXIgcHJvY2VzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDQiIG5hbWU9InNpcCBsb2dpbiI+CisgICAgPHZhbHVlPlNJUC1BcHBsZXQgTWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDUiIG5hbWU9InNpcCBsb2dpbiI+CisgICAgPHZhbHVlPlRoZSBTSVAtQXBwbGV0IGlzIG5vdCByZWFkeS4gQWNjZXB0IHRoZSBBcHBsZXQgcGxlYXNlIGFuZCBjbGljayBvayE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA2IiBuYW1lPSJtb2RlcmF0b3IgcG9wIHVwIj4KKyAgICA8dmFsdWU+R2V0IE1vZGVyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA3IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+U2F2ZSBBcHBvaW50bWVudCBDaGFuZ2VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwOCIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlRoZSBhcHBvaW50ZW1lbnQgaGFzIGJlZW4gY2hhbmdlZC4gRG8geW91IHdhbnQgdG8gc2F2ZSB0aG9zZSBjaGFuZ2VzPyAmbHQ7YnIvJmd0OyZsdDtici8mZ3Q7QWxsIGF0dGVuZGVlcyBvZiB0aGUgYXBwb2ludG1lbnQgd2lsbCByZWNlaXZlIGEgRU1haWwgd2l0aCB0aGUgdXBkYXRlZCBkYXRlIGFuZCB0aW1lIChkZXBlbmRpbmcgb24gdGhlIG5vdGlmaWNhdGlvbiB0eXBlIG9mIHRoaXMgYXBwb2ludG1lbnQpLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDkiIG5hbWU9ImZsdiByZWNvcmRlciBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VG8gYWNjZXNzIG90aGVyIHJlY29yZGluZ3MgeW91IGhhdmUgdG8gbG9naW4gdGhlICRBUFBfTkFNRSBBcHBsaWNhdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTEwIiBuYW1lPSJpbnRlcnZpZXcgdmlkZW8gcG9kIj4KKyAgICA8dmFsdWU+Q2hvb3NlIHRoZSBVc2VyIGZvciB0aGlzIFZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMSIgbmFtZT0iaW50ZXJ2aWV3IHZpZGVvIGNob29zZSB1c2VyIj4KKyAgICA8dmFsdWU+QXZhaWxhYmxlIFVzZXJzIGZvciB0aGlzIFBvZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTIiIG5hbWU9ImludGVydmlldyBpbmZvIj4KKyAgICA8dmFsdWU+WW91IGFyZSBhIE1vZGVyYXRvciBpbiB0aGlzIEludGVydmlldy4gWW91IGNhbiBkZWNpZGUgd2hvIGlzIHNwZWFraW5nIGluIHRoaXMgaW50ZXJ2aWV3IGFuZCB5b3UgY2FuIHN0YXJ0IC8gc3RvcCB0aGUgcmVjb3JkaW5nIG9mIHRoZSBTZXNzaW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTMiIG5hbWU9ImludGVydmlldyBidXR0b24gcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+U3RhcnQgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxNCIgbmFtZT0iaW50ZXJ2aWV3IGJ1dHRvbiByZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TdG9wIFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTUiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIHJlY29yZGluZyBvZiB0aGUgSW50ZXJ2aWV3IGlzIGFscmVhZHkgc3RhcnRlZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE2IiBuYW1lPSJpbnRlcnZpZXcgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSByZWNvcmRpbmcgaXMgYWxyZWFkeSBzdG9wcGVkIG9yIG5vdCBiZWVuIHN0YXJ0ZWQgeWV0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTciIG5hbWU9ImludGVydmlldyByZWNvcmRpbmcgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSByZWNvcmRpbmcgZm9yIHRoaXMgaW50ZXJ2aWV3IGlzIGFscmVhZHkgc3RhcnRlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE4IiBuYW1lPSJpbnRlcnZpZXcgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTkiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIHBvc3QtcHJvY2Vzc2luZyBvZiBhbiBpbnRlcnZpZXcgdGFrZXMgNSBtaW51dGVzIHBlciAxIG1pbnV0ZSBpbnRlcnZpZXcuIFRoZSBjdXJyZW50IHByb2dyZXNzIG9mIHRoZSBpbnRlcnZpZXcgcG9zdC1wcm9jZXNzaW5nIHRyYW5zY29kaW5nIGlzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjAiIG5hbWU9InNpcCBjcmVhdGlvbiI+CisgICAgPHZhbHVlPllvdSBoYXZlIHRvIGVudGVyIHlvdXIgcGFzc3dvcmQgYWdhaW4gdG8gYXV0byBjcmVhdGUgdGhlIFNJUCBEYXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyMSIgbmFtZT0ic2lwIGNyZWF0aW9uIj4KKyAgICA8dmFsdWU+UmUtZ2VuZXJhdGUgU0lQIERhdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIyIiBuYW1lPSJmaWxlZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IG1vdmUgdGhpcyBmaWxlIG9yIGZvbGRlciBpbnRvIGl0cyBvd24gc3ViIGZvbGRlciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIzIiBuYW1lPSJmaWxlIGV4cGxvcmVyICI+CisgICAgPHZhbHVlPkhvbWUgZHJpdmUgc2l6ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjQiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5QdWJsaWMgZHJpdmUgc2l6ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjUiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5MaWNlbnNlIFNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNiIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPllvdSBjYW4gZWl0aGVyIGJpbmQgdGhlIHVzZXIgdG8gYSBleHBpcmUgRGF0ZSBvciB0byBhIG1heGltdW0gbnVtYmVyIG9mIG1pbnV0ZXMgd2hlbiB5b3UgZW5hYmxlIGxpY2Vuc2luZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI3IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+Q2hlY2sgbGljZW5zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjgiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5GbGF0cmF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjkiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5FeHBpcmUgZGF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzAiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5TZWNvbmRzIGxlZnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMxIiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+VG90YWwgdGltZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzIiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdXIgTGljZW5zZSBoYXMgZXhwaXJlZC4gWW91IG5lZWQgdG8gYnV5IG5ldyBtaW51dGVzIChQYXktcGVyLW1pbnV0ZSkgb3IgYSB2b2x1bWUgZmxhdHJhdGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Q2xpY2sgYW5kIGJ1eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzQiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlRpbWUgTGVmdCBvbiB5b3VyIGFjY291bnQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzNSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+VXNlciBMaWNlbnNlIEluZm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM2IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5JbmZvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzNyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Q2xvc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM4IiBuYW1lPSJsaWNlbnNlLWluZm8iPgorICAgIDx2YWx1ZT5Zb3VyIGxpY2Vuc2UgaGFzIGV4cGlyZWQuIFlvdSBuZWVkIGVpdGhlciB0byBidXkgYSBtaW51dGUgcGFja2FnZSAoUGF5LXBlci1taW51dGUpIG9yIGEgdm9sdW1lIGZsYXRyYXRlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzkiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkxpY2Vuc2Ugc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQwIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIGVpdGhlciBidXkgbWludXRlcyB0byBtYWtlIFdlYi1Db25mZXJlbmNpbmcgKFBheS1wZXItbWludXRlKS4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7IE9yIHlvdSBidXkgYSB2b2x1bWUgZmxhdHJhdGUgYWJvdXQgMy0xMiBtb250aHMuJmx0O2JyLyZndDsmbHQ7YnIvJmd0O1NlbmRpbmcgaW52aXRhdGlvbnMgKGRpcmVjdCBsaW5rcyBpbnRvIENvbmZlcmVuY2UgUm9vbXMpIG9yIGNyZWF0aW5nIGNvbmZlcmVuY2UgUm9vbXMgdmlhIHRoZSBDYWxlbmRhciB3aXRoIGV4dGVybmFsIFVzZXJzIGlzIG9ubHkgYWxsb3dlZCB3aXRoIGEgdm9sdW1lIGZsYXRyYXRlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDEiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSA2MCBNaW51dGVzIDksOTkgRVVSTyAoMTYgQ2VudCBwZXIgTWludXRlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDIiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSA1IGhvdXJzIDE5LDk5IEVVUk8gKDYgQ2VudCBwZXIgbWludXRlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDMiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSAzIG1vbnRoIGZvciAyOSw5OSBFVVJPICg5LDk5IEV1cm8gcGVyIE1vbnRoKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDQiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSA2IG1vbnRoIGZvciAzOSw5OSBFVVJPICg2LDY2IEV1cm8gcGVyIG1vbnRoKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDUiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlBheS1wZXItbWludXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Vm9sdW1lIGZsYXRyYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91IGhhdmUgdW5saW1pdGVkIExpY2Vuc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ4IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3VyIGxpY2Vuc2Ugd2lsbCBleHBpcmUgYXQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0OSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91IGJvdWdodCBQYXktcGVyLW1pbnV0ZS4gWW91IHN0aWxsIGhhdmU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IG5ldyBjcmVkaXQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+V2FudCB5b3VyIG93biBTZXJ2ZXI/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91IHdvdWxkIGxpa2UgdG8gaGF2ZSAkQVBQX05BTUUgaW5zdGFsbGVkIG9uIHlvdXIgU2VydmVyIG9yIGludGVncmF0ZWQgaW50byB5b3VyIE1vb2RsZSwgU3VnYXJDUk0sIFdlYnNpdGUgb3IgSW50cmFuZXQ/IFByaXppbmdzIHN0YXJ0IGF0IDUwMCBFdXJvIHBlciBJbnN0YWxsYXRpb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+T3Igc2VuZCB1cyBhIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU0IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5BbnN3ZXIgdG86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1NSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+TWVzc2FnZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU2IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5TZW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1NyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Q2xpY2sgaGVyZSB0byBnZXQgY29udGFjdCBJbmZvIGFuZCBQcml6aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTgiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNyZWRpdCBDYXJkIERldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU5IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5GaXJzdG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYwIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5MYXN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjEiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNyZWRpdCBDYXJkIFR5cGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYyIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5WSVNBIENhcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYzIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5NYXN0ZXJDYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2NCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+RGlzY292ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY1IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5BbWVyaWNhbiBFeHByZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2NiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q3JlZGl0IENhcmQgTnVtYmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2NyIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+RXhwaXJhdGlvbiBEYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2OCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q2FyZCBWZXJpZmljYXRpb24gTnVtYmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2OSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+QmlsbGluZyBBZGRyZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+QWRkcmVzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzEiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzIiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTczIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5Db3VudHJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U3RhdGUgKE9ubHkgVVMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+WklQPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+QW1vdW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NyIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U3VibWl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3OCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U3RlcCAxOiAkQVBQX05BTUUgLSBQYXltZW50IEZvcm08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc5IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5FTWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODAiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNsaWNrICJDaGVjayBvdXQgd2l0aCBQYXlwYWwiIHRvIHBheS4mbHQ7YnIvJmd0OyBQYXlwYWwgYWNjZXB0cyBWSVNBLCBNYXN0ZXJDYXJkLCBEaXNjb3ZlciBvciBBbWVyaWNhbiBFeHByZXNzLiAmbHQ7YnIvJmd0O0l0IGRvZXMgbm90IHJlcXVpcmUgdG8gc2lnbiB1cCB3aXRoIFBheXBhbC4gJmx0O2JyLyZndDtDaXRpemVucyBmcm9tIEdlcm1hbnkgY2FuIGFsc28gcGF5IHdpdGggZGlyZWN0IGRlYml0IChQZXIgTGFzdHNjaHJpZnQtRWluenVnKS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgxIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5UaGFuayB5b3UgZm9yIGJ1eWluZyAkQVBQX05BTUUuICZsdDtici8mZ3Q7ICZsdDtici8mZ3Q7IEFzIHNvb24gYXMgd2UgcmVjZWl2ZWQgdGhlIHBheW1lbnQgeW91ciBhY2NvdW50IHdpbGwgYmUgdXBkYXRlZC4mbHQ7YnIvJmd0OyBZb3Ugd2lsbCByZWNlaXZlIGFuIEVNYWlsIHdpdGggeW91ciBpbnZvaWNlIGFzIFBERi4mbHQ7YnIvJmd0O1lvdSBjYW4gYWxzbyBjaGVjayBjdXJyZW50IGFuZCBwYXN0IHRyYW5zYWN0aW9ucyBpbiB5b3VyIHByb2ZpbGUgc2V0dGluZ3MuJmx0O2JyLyZndDsmbHQ7YnIvJmd0OyZsdDtici8mZ3Q7WW91IGNhbiBjbG9zZSB0aGlzIGJyb3dzZXIgd2luZG93L3RhYiBub3cgYW5kIHJldHVybiB0byAkQVBQX05BTUUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U3VibWl0IGFuZCBCdXkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MyIgbmFtZT0icGF5bWVudC1mcm9tIj4KKyAgICA8dmFsdWU+Q2xpY2sgYW5kIEJ1eSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg0IiBuYW1lPSJwYXltZW50LWZyb20iPgorICAgIDx2YWx1ZT5TdGVwIDM6ICRBUFBfTkFNRSBQYXltZW50IC0gQ2hlY2sgb3JkZXIgYW5kIGJ1eSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg1IiBuYW1lPSJwYXltZW50LWZyb20iPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4NiIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+UGF5bWVudCByZWNlaXZlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg3IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5IaSw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg4IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5XZSBoYXZlIHJlY2VpdmVkIHlvdXIgcGF5bWVudC4gWW91ciB1c2VyIHByb2ZpbGUgaXMgdXBkYXRlZCBub3cuIFNlZSBhdHRhY2hlZCB5b3VyIEludm9pY2UuIFRoZSBJbnZvaWNlIGFuZCBhbGwgcGFzdCBJbnZvaWNlIGNhbiBhbHNvIGJlIGRvd25sb2FkZWQgaW4geW91ciB1c2VyIHByb2ZpbGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4OSIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+VGhhbmsgeW91IGZvciB1c2luZyAkQVBQX05BTUUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MCIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+UGF5bWVudCBSZWNlaXZlZCAkQVBQX05BTUUgLTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTEiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5QYXltZW50IGFuZCBUcmFuc2FjdGlvbiBTdGF0dXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkyIiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+VHJhbnNjYXRpb24gSGFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTMiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NaW51dGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NCIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPk1vbnRoczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTUiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5FVVI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk2IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+U3RhdHVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NyIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPkludm9pY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk4IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5OSIgbmFtZT0iZXJyb3ItbGljZW5zZS1mbGF0Ij4KKyAgICA8dmFsdWU+WW91IG5lZWQgdG8gYnV5IGEgdm9sdW1lIGZsYXRyYXRlIHRvIGJlIGFibGUgdG8gc2VuZCBpbnZpdGF0aW9ucyBvciBjcmVhdGUgbWVldGluZ3MgdmlhIHRoZSBjYWxlbmRhci4gV2l0aCBQYXktcGVyLW1pbnV0ZSBpdCBpcyBvbmx5IHBvc3NpYmxlIGZvciB5b3UgdG8gYWNjZXNzICRBUFBfTkFNRS4gWW91IGNhbm5vdCBhbGxvdyAzdGggUGFydGllcyB0byBhY2Nlc3MgYSBNZWV0aW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAwIiBuYW1lPSJlcnJvciB1c2VyIj4KKyAgICA8dmFsdWU+VGhpcyBFbWFpbCBpcyBhbHJlYWR5IHVzZWQgYnkgYW5vdGhlciBVc2VyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAxIiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+U0lQLVNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDIiIG5hbWU9InJvb20tYWRtaW4iPgorICAgIDx2YWx1ZT5UaGUgQ29uZmVyZW5jZSBOdW1iZXIgYW5kIFBJTiBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgdmlhIHRoZSBPcGVuWEcgUlBDLUdhdGV3YXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwMyIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlNJUCBOdW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNCIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlBJTjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA1IiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+Q2xlYXIgb2JqZWN0cyBvbiBjdXJyZW50IHNsaWRlIG9ubHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDYiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5Pbmx5IHRoZSBVUkwgZW50ZXJlZCBpbiB0aGUgU3RhdHVzIGJhciBpcyBzZW5kIHRvIHBhcnRpY2lwYW50cyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk1ha2UgVGVhbS1Sb29tcyBbQnJlYWtvdXQgc2Vzc2lvbl08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNob29zZSB1c2VycyBmb3IgYSBuZXcgVGVhbS1Sb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+WW91IGNhbiBjaG9vc2UgdXNlcnMgaGVyZSBhbmQgY3JlYXRlIGEgbmV3IENvbmZlcmVuY2UgUm9vbSAoIlRlYW0gUm9vbSIpIGZvciB0aGVtLiBUaGUgY2hvc2VuIHVzZXJzIHdpbGwgYXV0b21hdGljYWxseSBzd2l0Y2ggdG8gdGhlIG5ldyBUZWFtLVJvb20gb3IgZ2V0IGEgbm90aWZpY2F0aW9uLiBUZWFtLVJvb20gTW9kZXJhdG9ycyB3aWxsIGdldCBhZGRpdGlvbmFsbHkgYSBsaXN0IG9mIGN1cnJlbnQgcm9vbXMgc28gdGhhdCB0aGV5IGNhbiBzd2l0Y2ggdG8gZWFjaCByb29tIGlmIHRoZXJlIGFyZSBpcyBuZWVkIGZvciBhIE1vZGVyYXRvci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Vc2VycyBmb3IgdGhlIG5ldyBUZWFtLVJvb206PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DcmVhdGUgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNob29zZSBhdCBsZWFzdCBvbmUgdXNlciBmb3IgdGhlIFRlYW0tUm9vbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkFkZCB1c2VyIHRvIHRlYW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlJlbW92ZSB1c2VyIGZyb20gVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Vc2VyIGlzIFRlYW0tUm9vbSBNb2RlcmF0b3IgKEhlIGlzIGFibGUgdG8gbWFuYWdlIFRlYW0tUm9vbXMgYW5kIHVzZXJzIG9mIHRoZSBUZWFtLVJvb20gY2FuIGFzayBoaW0gdG8gY29tZSBpbnNpZGUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Sb29tdHlwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+SWYgeW91IGNoZWNrICJGb3JjZSB1c2VyIHRvIHN3aXRjaCB0byBuZXcgVGVhbS1Sb29tIiBhbGwgY2hvc2VuIHVzZXJzIHdpbGwgYXV0b21hdGljYWxseSBzd2l0Y2ggdG8gdGhlIG5ld2x5IGNyZWF0ZWQgVGVhbS1Sb29tLiBPdGhlcndpc2UgdGhleSBnZXQgYSBub3RpZmljYXRpb24gd2l0aCBhIGJ1dHRvbiB0aGF0IHRoZXkgJmx0O2kmZ3Q7Y2FuJmx0Oy9pJmd0OyBzd2l0Y2ggdG8gdGhlIG5ldyByb29tLiBUZWFtLU1vZGVyYXRvcnMgYWx3YXlzIGhhdmUgdGhlIGZyZWUgY2hvaWNlIHRvIG1hbmFnZSB0aGUgVGVhbS1Sb29tcyBhbmQgc3dpdGNoIGJldHdlZW4gdGhlbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk1hbmFnZSBUZWFtLVJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIHN3aXRjaCBoZXJlIGJldHdlZW4gYWxsIFRlYW0tUm9vbXMgdGhhdCB5b3UgYXJlIGFzc2lnbmVkIGFzIFRlYW0tUm9vbSBNb2RlcmF0b3IuIFVzZXJzIGluc2lkZSB0aGUgVGVhbS1Sb29tIGNhbiBzZW5kIHlvdSBhIG1lc3NhZ2UsIGZvciBleGFtcGxlIHRvIGFzayB5b3UgdG8gY29tZSB0byB0aGVpciByb29tIGFuZCBoZWxwIHRoZW0uIFlvdSBjYW4gYWxzbyB0ZXJtaW5hdGUgdGhlIFRlYW0tUm9vbSBhbmQgYWxsIFVzZXJzIHdpbGwgYmUgbG9nZ2VkIG91dC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkZvcmNlIHVzZXIgdG8gc3dpdGNoIHRvIG5ldyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNyZWF0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Vc2VycyBhdmFpbGFibGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkFkZCBhIHVzZXIgd2l0aCB0aGUgcGx1cyBmcm9tIHRoZSBsZWZ0IG9yIHJlbW92ZSBpdCB3aXRoIHRoZSBjcm9zcyBmcm9tIHRoZSByaWdodCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjEpIFRlYW0tUm9vbSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MikgQWRkIHVzZXJzIHRvIHRoZSBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW0tUm9vbSBOYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNoYW5nZSB0byB0aGUgUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U3dpdGNoIHRvIHRoaXMgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZXJtaW5hdGUgVGVhbS1Sb29tIGFuZCBsb2dvdXQgYWxsIFVzZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5OZXcgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBhIG5ldyBUZWFtLVJvb20gYXZhaWxhYmxlIGZvciB5b3UuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Td2l0Y2ggdG8gVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb20gQWN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+WW91IGNhbiByZS1vcGVuIHRoaXMgd2luZG93IHZpYSB0aGUgbWFpbiBtZW51IGluIHRoZSAiQWN0aW9ucyIgc2VjdGlvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlNlbmQgbWVzc2FnZSB0byBUZWFtLVJvb20gTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5OZXcgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBhIG5ldyBUZWFtLVJvb20gYXZhaWxhYmxlLiBZb3UgY2FuIHN3aXRjaCB0byB0aGF0IFJvb20uIFRlYW0tUm9vbXMgYXJlIGxpa2UgIldvcmtncm91cHMiIHdpdGggYWRkaXRpb25hbGx5IHBvc3NpYmlsaXRpZXMgdG8gYXNrIHRoZSBUZWFtLVJvb20gTW9kZXJhdG9yIGZvciBoZWxwLiBZb3VyIFRlYW0tUm9vbXMgYXJlIGFsc28gYXZhaWxhYmxlIGluIHRoZSAiTXkgTWVldGluZ3MiIHNlY3Rpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Td2l0Y2ggdG8gVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DcmVhdGVkIGJ5OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQ4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVhbS1Sb29tIG5hbWU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGlzIFdpbmRvdyB3aWxsIHN0YXkgb3BlbiBldmVuIGlmIHlvdSBsZWF2ZSB0aGUgcm9vbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1MCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJzIGZvciB0aGlzIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MykgT3RoZXIgVGVhbS1Sb29tcyB0aGF0IHlvdSBjb3VsZCBzd2l0Y2ggdG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1MiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlNlbmQgYSBtZXNzYWdlIHRvIHRoZSBUZWFtLVJvb20gTW9kZXJhdG9ycy4gRm9yIGV4YW1wbGUgaWYgeW91IG5lZWQgaGVscCBpbiBNb2RlcmF0aW5nIHRoZSBSb29tIG9yIGlmIHlvdSBoYXZlIGEgcXVlc3Rpb24gYWJvdXQgdGhlIHRvcGljLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U2VuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MikgVXNlcnMgdGhhdCBhcmUgaW52aXRlZCB0byB0aGlzIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+SXMgVGVhbS1Sb29tIE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGhlc2UgYXJlIGFsbCB1c2VycyB0aGF0IHRoZSBtb2RlcmF0b3IgaGFzIGludml0ZWQgdG8gdGhpcyBUZWFtLVJvb20uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBUZWFtLU1vZGVyYXRvciBsb2dnZWQgaW4gYXQgdGhlIG1vbWVudCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1OCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1OSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlBsZWFzZSBoZWxwIHVzLCB3ZSBoYXZlIGEgcHJvYmxlbSBpbiBvdXIgVGVhbS1Sb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+QSB1c2VyIGZyb20gYSBUZWFtLVJvb20gcmVxdWVzdHMgeW91ciBoZWxwLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVhbS1Sb29tIHJlcXVlc3QgZm9yIGhlbHA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2MiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk1lc3NhZ2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Gcm9tOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+WW91IGFyZSBjdXJyZW50bHkgbm90IGluIGFueSBUZWFtLVJvb20uIEJ1dCB5b3UgY2FuIHN3aXRjaCBoZXJlIHRvIGFsbCBUZWFtLVJvb21zIHRoYXQgeW91IGhhdmUgYWNjZXNzIHRvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY1IiBuYW1lPSJiYWNrdXBDb250ZW50Ij4KKyAgICA8dmFsdWU+QmFja3VwIHRoZSBTeXN0ZW0uIFRoZSBCYWNrdXAgaW5jbHVkZXMgYWxsIFVzZXIgZ2VuZXJhdGVkIGRhdGEuIFRoZSBjb25maWd1cmF0aW9uIGlzIG5vdCBpbmNsdWRlZCBhcyB3ZWxsIGFzIHRoZSBsYW5ndWFnZSBsYWJlbHMuIEJlY2F1c2UgdGhvc2UgdmFsdWVzIGFyZSBpbXBvcnRlZCB3aXRoIHRoZSBTeXN0ZW0gSW5zdGFsbGVyLiBUbyB1cGRhdGUgeW91ciBTeXN0ZW0sIGV4cG9ydCB5b3VyIG9sZCBzeXN0ZW0gKDEpIHJlLWluc3RhbGwgaW50byBhIG5ldyBkYXRhYmFzZSB0aGUgbmV3IHBhY2thZ2UgKDIpIGFuZCBpbXBvcnQgdGhlIEJhY2t1cCBmaWxlIGFnYWluICgzKS4gVGhlIEJhY2t1cCBzaG91bGQgYmUgaW1wb3J0ZWQgYmVmb3JlIGdlbmVyYXRpbmcgZGF0YSBpbiB0aGUgbmV3bHkgaW5zdGFsbGVkIHN5c3RlbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2NiIgbmFtZT0iYmFja3VwQ29udGVudCI+CisgICAgPHZhbHVlPlN5c3RlbSBCYWNrdXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2NyIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+QWxsb3cgdXNlciB0byBzaGFyZSBTY3JlZW4vUmVjb3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjgiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPkRlbnkgdXNlciB0byBzaGFyZSBTY3JlZW4vUmVjb3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjkiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPlVzZXIgaXMgTW9kZXJhdG9yLCBoZSBjYW4gZG8gYW55dGhpbmchPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzAiIG5hbWU9ImFwcGx5IGZvciBzY3JlZW4vcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0byBzaGFyZS9yZWNvcmQgc2NyZWVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDcxIiBuYW1lPSJtb2RlcmF0aW9uIG1pbmkgaWNvbnMiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGFsbG93ZWQgdG8gc2hhcmUvcmVjb3JkIHNjcmVlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDcyIiBuYW1lPSJtb2RlcmF0aW9uIG1pbmkgaWNvbnMiPgorICAgIDx2YWx1ZT5BcHBseSBmb3IgcmlnaHQgdG8gc2hhcmUvcmVjb3JkIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3MyIgbmFtZT0ibW9kZXJhdGlvbiBtaW5pIGljb25zIGNvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT5BbGxvdy9EZW55IHJpZ2h0IHRvIHNoYXJlL3JlY29yZCBzY3JlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzQiIG5hbWU9InNvdW5kIGljb24iPgorICAgIDx2YWx1ZT5UdXJuIHNvdW5kIG9mZjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc1IiBuYW1lPSJzb3VuZCBpY29uIj4KKyAgICA8dmFsdWU+VHVybiBzb3VuZCBvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc2IiBuYW1lPSJyb29tIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+QXVkaW8gb25seSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzciIG5hbWU9InJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5UdXJuIHRoaXMgRmxhZyBvbiBhbmQgdGhlIHVzZXJzIHdpbGwgaGF2ZSBvbmx5IHRoZSBBdWRpby1PcHRpb24gYW5kIG5vIFZpZGVvIGluIGEgY29uZmVyZW5jZSByb29tLiBUaGlzIGNhbiBieSBnb29kIHRvIHNhdmUgYmFuZHdpZHRoLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc4IiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5BbGxvdyBSZW1vdGUgQ29udHJvbCAoRHVyaW5nIFNjcmVlbiBTaGFyaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc5IiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5EZW55IFJlbW90ZSBDb250cm9sIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODAiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFwcGx5IGZvciByaWdodCB0byBSZW1vdGUgQ29udHJvbCBTY3JlZW4gKER1cmluZyBTY3JlZW4gU2hhcmluZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MSIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+WW91IGFyZSBhbGxvd2VkIHRvIFJlbW90ZSBDb250cm9sIFNjcmVlbiAoRHVyaW5nIFNjcmVlbiBTaGFyaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgyIiBuYW1lPSJhcHBseSBmb3IgcmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIHJlbW90ZSBjb250cm9sIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MyIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+VXNlciBpcyBNb2RlcmF0b3IsIGhlIGNhbiBkbyBhbnl0aGluZyEgW1JlbW90ZSBEZXNrdG9wIENvbnRyb2xdPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODQiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFsbG93L0RlbnkgcmlnaHQgdG8gUmVtb3RlIENvbnRyb2wgU2NyZWVuIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODUiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPjEpIFlvdXIgUEMgdG8gcmVtb3RlIFBDOiBUbyBjb3B5IGFuZCBwYXN0ZSB0ZXh0IGZyb20geW91ciBjbGlwYm9hcmQgaW50byB0aGUgcmVtb3RlIGNvbnRyb2xsZWQgc2NyZWVuLCBjbGljayBvbiB0aGUgc2NyZWVuLCB0aGVuIHJpZ2h0IGNsaWNrIGluIHRoZSB0ZXh0IGZpZWxkIGFuZCBjaG9vc2UgIkluc2VydCIgZnJvbSB0aGUgY29udGV4dCAocmlnaHQgY2xpY2spIG1lbnUuJmx0O2JyLyZndDsmbHQ7YnIvJmd0OzIpIEZyb20gcmVtb3RlIFBDIHRvIHlvdXIgUEM6IFRvIGNvcHkgdGV4dCBmcm9tIHRoZSByZW1vdGUgUEMgdG8geW91ciBQQydzIGNsaXBib2FyZCwgaGlnaGxpZ2h0IHRoZSB0ZXh0IHdpdGggdGhlIG1vdXNlIG9uIHRoZSByZW1vdGUgc2NyZWVuLCB0aGVuIHJpZ2h0LWNsaWNrIG9uIHRoZSByZW1vdGUgc2NyZWVuIGFuZCBjaG9vc2UgJmx0O2kmZ3Q7Q29weSBoaWdobGlnaHRlZCB0ZXh0Jmx0Oy9pJmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg2IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Db3B5IGFuZCBQYXN0ZSB0ZXh0IGZyb20geW91ciBQQyB0byByZW1vdGUgUEMgYW5kIHZpY2UtdmVyc2EuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODciIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNvcHkgaGlnaGxpZ2h0ZWQgdGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg4IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Ib3cgdG8gY29weSBuIHBhc3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODkiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPlF1YWxpdHkgb2YgdGhlIFNjcmVlblNoYXJlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkwIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5WZXJ5IGhpZ2ggUXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkxIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5IaWdoIFF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5MiIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+TWVkaXVtIFF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5MyIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+TG93IFF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NCIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5lbl9VUzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk1IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPmRlX0RFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTYiIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+S2V5Ym9hcmQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTciIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+Q2xvc2UgV2ViaW5hciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5OCIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5UaGUgV2ViaW5hciBpcyBhbHJlYWR5IGNsb3NlZCwgeW91IHdpbGwgYmUgcmVkaXJlY3RlZCB0byBzb21lIGludGVyZXN0aW5nIG9mZmVyaW5ncyBpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk5IiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPkNsb3NlIFJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMCIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5FeGl0IFVSTDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAxIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPlJvb20gdGVybWluYXRpb24gc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMiIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5JZiB0aGUgcm9vbSBpcyBjbG9zZWQgdXNlcnMgd2lsbCBiZSByZWRpcmVjdGVkIHRvIHRoZSBleGl0IFVSTC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5MZGFwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDQiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDYiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+Q29uZmlnIEZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5MZGFwIENvbmZpZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA4IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwOSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5FbmFibGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTAiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+SW5zZXJ0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JbnNlcnRlZCBieTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEyIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPlVwZGF0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5VcGRhdGVkIGJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTQiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+VGhlIGNvbmZpZyBmaWxlcyBhcmUgaW4gdGhlIGZvbGRlciB3ZWJhcHBzL29wZW5tZWV0aW5ncy9jb25mLiBZb3UgbmVlZCB0byBtYW51YWxseSB1cGxvYWQgdGhlIGZpbGVzIHRvIHRoaXMgZm9sZGVyLiBDaGFuZ2VzIHRvIHRoZSBjb25maWcgZmlsZSBhcmUgaW1tZWRpYXRlbHkgb25saW5lLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE1IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkNvbmZpZyBmaWxlIG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNiIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JZiB5b3UgZW5hYmxlICJBZGQgRG9tYWluIHRvIHVzZXJuYW1lIiB0aGUgdmFsdWUgb2YgdGhlIGZpZWxkICJkb21haW4iIGlzIGFkZGVkIHRvIGVhY2ggbG9naW4gdGhhdCB0aGUgdXNlciBlbnRlcnMgaW4gdGhlIGxvZ2luIGJveC4gVGhpcyBpcyB1c2VmdWwgaWYgdGhlIExvZ2luIGluIHRoZSBMZGFwIGlzIHN0b3JlZCBpbmNsdWRpbmcgdGhlIGRvbWFpbiBuYW1lLiBFeGFtcGxlOiBVc2VyIGVudGVycyAiaGFucyIgZG9tYWluIGlzIHNwZWNpZmllZCBhcyAibG9jYWxob3N0LmNvbSIsIGxvZ2luIHRoYXQgaXMgdmVyaWZpZWQgYWdhaW5zdCBMZGFwIGlzOiBoYW5zQGxvY2FsaG9zdC5jb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5BZGQgRG9tYWluIHRvIHVzZXJuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTgiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+RG9tYWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTkiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+SW5zZXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjAiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+Q29weSBoaWdobGlnaHRlZCB0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjEiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+UmVtb3RlIENsaXBib2FyZCBUZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjIiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+U2hvdyByZW1vdGUgQ2xpcGJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjMiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkRvIG5vdCBzaG93IGFnYWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjQiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNvcHkgdGV4dCBoZXJlIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI1IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0aGUgcmlnaHQgdG8gcmVtb3RlIGNvbnRyb2wgKG9yIHRoZSBtb2RlcmF0aW9uKSB0byBjb3B5IGFuZCBwYXN0ZSB0ZXh0IHRvIG9yIGZyb20gdGhlIHJlbW90ZSBzY3JlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjYiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkVkaXQgZGVmYXVsdCBzZXR0aW5ncyAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNyIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+RG8gbm90IHNob3cgaW5mbyBib3ggaW4gUmVtb3RlIENvbnRyb2wgYWJvdXQgQ29weSBhbmQgUGFzdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyOCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5TYXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjkiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+UmVtb3ZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzAiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzEiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5JbnZpdGUgdXNlciB0byBjb25mZXJlbmNlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMiIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkNob29zZSBhIGNvbmZlcmVuY2Ugcm9vbS4gVGhlIGludml0ZWQgdXNlciB3aWxsIGdldCBhIG1lc3NhZ2Ugd2l0aCB5b3VyIG5hbWUgYW5kIGEgbGluayB0byB0aGUgcm9vbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMyIgbmFtZT0iY2hhdCB1c2VyIj4KKyAgICA8dmFsdWU+Q29ubmVjdGVkIHNpbmNlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM0IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+RW50ZXIgcm9vbSBhZnRlciBzZW5kaW5nIGludml0YXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzNSIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkludml0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM2IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+TWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM3IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0byBpbnZpdGUgeW91IHRvIHRoZSBjb25mZXJlbmNlIHJvb206PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzgiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5JbnZpdGUgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM5IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+U2VuZCBJbnZpdGF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDAiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5kaWQgJmx0O2ImZ3Q7bm90Jmx0Oy9iJmd0OyBhY2NlcHQgeW91ciBpbnZpdGF0aW9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQxIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+QWNjZXB0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDIiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5EZW55PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDMiIG5hbWU9InVzZXIgcHJvZmlsZSI+CisgICAgPHZhbHVlPlRpbWV6b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDQiIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPkV2ZW50IERldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0NSIgbmFtZT0iYXBwb2ludG1lbnQgbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ2IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5EZXNjcmlwdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ3IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5DcmVhdGVkIGJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDgiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5UaW1lWm9uZSBNZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDkiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5DaGVjayAiVGltZVpvbmUgTWVzc2FnZSIgdG8gZ2l2ZSB1c2VycyBhIG1lc3NhZ2UgbmV4dCB0aW1lIHRoZXkgbG9naW4gdG8gdXBkYXRlIHRoZWlyIHByb2ZpbGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTAiIG5hbWU9InRpbWUgem9uZSB1cGRhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlBsZWFzZSBjaGVjayB0aGUgdGltZSB6b25lIGluIHlvdXIgdXNlciBwcm9maWxlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUxIiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5OZXcgJEFQUF9OQU1FIGNvbmZlcmVuY2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTIiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkRldGFpbHM6Jmx0O2JyLyZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MyIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3RhcnQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTQiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkVuZDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NSIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2hhbmdlZCAkQVBQX05BTUUgY29uZmVyZW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NiIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+T3JnYW5pemVyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU3IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DYW5jZWxlZCAkQVBQX05BTUUgY29uZmVyZW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1OCIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIGNvbmZlcmVuY2UgUmVtaW5kZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTkiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Db21tdW5pdHkgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlNob3cgY29udGFjdCBkYXRhIHRvIGV2ZXJ5Ym9keTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYxIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+QWRkIGZpZWxkcyBvZiBpbnRlcmVzdCB0aGF0IHlvdSBvZmZlciBvciB0aGF0IHlvdSBhcmUgc2VhcmNoaW5nIHRvIGZpbmQgaW50ZXJlc3RpbmcgcGFydG5lcnMgZm9yIGEgY29uZmVyZW5jZS4gQ29tbWEgc2VwYXJhdGUgdGhlIHRlcm1zIChmb3IgZXhhbXBsZTogTWVkaWNhbCBTZXJ2aWNlLCBIZWFsdGggYXNzdXJhbmNlLCAuLi4pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjIiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NeSBvZmZlcmluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MyIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk15IGludGVyZXN0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY0IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY1IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+VGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2NiIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkZpZWxkcyBvZiBpbnRlcmVzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY3IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+Q29udGFjdCBpbmZvcm1hdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY4IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2hvdyBjb250YWN0IGRhdGEgdG8gY29udGFjdHMgb25seTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY5IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2hvdyBjb250YWN0IGRhdGEgdG8gbm9ib2R5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzAiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NeSBQcm9maWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzEiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5FZGl0IHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzIiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TZWFyY2ggdXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MyIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPldhdGNoIHlvdXIgcHJvZmlsZSBsaWtlIG90aGVyIHNlZSB5b3U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkVkaXQgeW91ciBzZXR0aW5ncywgYWRkIHlvdXIgaW50ZXJlc3RzIHRvIGJlIGZvdW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzUiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TZWFyY2ggZm9yIG90aGVyIHVzZXJzIGFuZCBleHRlbmQgeW91ciBuZXR3b3JrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzYiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+U2VhcmNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzciIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+VXNlciBvZmZlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3OCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5Vc2VyIGxvb2tzIGZvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc5IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkZyZWV0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODAiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgxIiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlRpbWV6b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODIiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+T2ZmZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODMiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+U2VhcmNoczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg0IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlNlYXJjaHJlc3VsdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg1IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkFjdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NiIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5BZGQgdG8gY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NyIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5TZW5kIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4OCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5Db250YWN0cyBhbmQgTWVzc2FnZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4OSIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5QZW5kaW5nIGNvbnRhY3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTAiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5BY2NlcHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkRlbnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MiIgbmFtZT0idXNlciBjb250YWN0IHJlcXVlc3QiPgorICAgIDx2YWx1ZT5IaSw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MyIgbmFtZT0idXNlciBjb250YWN0IHJlcXVlc3QiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGFkZCB5b3UgYXMgY29udGFjdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NCIgbmFtZT0idXNlciBjb250YWN0IHJlcXVlc3QiPgorICAgIDx2YWx1ZT5DaGVjayB5b3VyIGNvbnRhY3QgcmVxdWVzdHMgaW4gJEFQUF9OQU1FIG9yIGNsaWNrIG9uIHRob3NlIGxpbmtzIHRvIGFjY2VwdCBvciBkZW55IHRoZSByZXF1ZXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTUiIG5hbWU9ImFkZCB1c2VyIGNvbnRhY3QiPgorICAgIDx2YWx1ZT5UaGlzIHVzZXIgaXMgYWxyZWFkeSBpbiB5b3VyIGNvbnRhY3QgbGlzdCBvciBoYXMgcmVjZWl2ZWQgYW4gaW52aXRhdGlvbiB0byB5b3VyIGNvbnRhY3QgbGlzdCB0aGF0IGlzIG5vdCBhbnN3ZXJlZCB5ZXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTYiIG5hbWU9InVzZXIgY29udGFjdCBtYWlsIj4KKyAgICA8dmFsdWU+WW91ciBjb250YWN0IGxpc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkVkaXQgeW91ciBjb250YWN0IGFuZCBtZXNzYWdlcywmbHQ7YnIvJmd0OyBtYW5hZ2UgeW91ciBwZW5kaW5nIGNvbnRhY3RzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk4IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+Y29uZmlybWVkIHlvdSBhcyBjb250YWN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk5IiBuYW1lPSJjaGF0IGluZm8gbWVzc2FnZSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAwIiBuYW1lPSJjaGF0IGxvZyBpY29uIj4KKyAgICA8dmFsdWU+U2hvdyAvIENvcHkgY2hhdCBsb2c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMSIgbmFtZT0iY2hhdCBsb2cgd2luZG93Ij4KKyAgICA8dmFsdWU+Q2hhdCBMb2c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RnJvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TdWJqZWN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDYiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1lc3NhZ2VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDciIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk5ldyBNYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkNsaWNrIHRvIHdyaXRlIGEgbmV3IG1lc3NhZ2UgdG8gYW55IG9mIHlvdXIgY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwOSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+V3JpdGUgbmV3IG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VG86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlN1YmplY3Q6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTIiIG5hbWU9IndoaXRlYm9hcmQgZnVsbC1maXQiPgorICAgIDx2YWx1ZT5FbmFibGUgZnVsbCBmaXQgYW5kIHRoZSB3aGl0ZWJvYXJkIHdpbGwgem9vbSB0aGUgd2hvbGUgd2hpdGVib2FyZCBzbyB0aGF0IGFsbCZsdDtici8mZ3Q7ZG9jdW1lbnRzIGFyZSB2aXNpYmxlIGFjY29yZGluZyB0byBlYWNoIHBhcnRpY2lwYW50cyBzY3JlZW4gcmVzb2x1dGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMyIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+S2ljayB1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTQiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPllvdSBjYW5ub3Qga2ljayB5b3Vyc2VsZiBvdXQgb2YgdGhlIGNvbmZlcmVuY2Ugcm9vbSEgSWYgeW91IHdhbnQgdG8gbGVhdmUgaXQgY2xvc2UgdGhlIGJyb3dzZXIgb3IgdXNlIHRoZSBleGl0IGJ1dHRvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNSIgbmFtZT0ia2ljay11c2VyIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRpc2Nvbm5lY3QgdGhpcyB1c2VyIGZyb20gdGhpcyBjb25mZXJlbmNlIHJvb20/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTYiIG5hbWU9ImtpY2stdXNlciI+CisgICAgPHZhbHVlPkNvbmZpcm0gYWN0aW9uIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE3IiBuYW1lPSJraWNrLXVzZXIiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IGtpY2sgYSBTdXBlci1Nb2RlcmF0b3Igb3V0IG9mIGEgcm9vbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxOCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Qm9vayBjb25mZXJlbmNlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxOSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3RhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZCBhbiBvcHRpb25hbCByZXF1ZXN0IGZvciBtZWV0aW5nIHRvIHRoZSBtZXNzYWdlIGFuZCBjcmVhdGUgYSBjb25mZXJlbmNlIHJvb20uIFRoZSBFdmVudCBpcyB0aGVuIGNvcGllZCBpbiB0aGUgY2FsZW5kYXIgb2YgZXZlcnkgcGFydGljaXBhbnQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkluYm94PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VHJhc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhpcyBpcyB5b3UhIFlvdSBjYW5ub3QgYWRkIHlvdXJzZWxmIGFzIHlvdXIgb3duIGNvbnRhY3QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjYiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5UaGUgdXNlciBpcyBhbHJlYWR5IGRlbmllZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoZSB1c2VyIGlzIGFscmVhZHkgYXBwcm92ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjgiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5UaGlzIHVzZXIgY29udGFjdCBoYXNoIGlzIGludmFsaWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjkiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Vc2VyIGFkZGVkIHRvIGNvbnRhY3QgbGlzdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlVzZXIgZGVuaWVkIGFzIGNvbnRhY3QgYW5kIHJlbW92ZWQgZnJvbSBwZW5kaW5nIGNvbnRhY3QgbGlzdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIHN1Y2ggY29udGFjdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPldvdWxkIHlvdSByZWFsbHkgbGlrZSB0byByZW1vdmUgdGhhdCBjb250YWN0PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMzIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+Q29uZmlybSBjb250YWN0IHJlbW92YWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkRlbGV0ZSBjb250YWN0IGZyb20gbGlzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM1IiBuYW1lPSJ1c2VyIHByb2ZpbGUiPgorICAgIDx2YWx1ZT5Vc2VyIFByb2ZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNiIgbmFtZT0idXNlciBwcm9maWxlIj4KKyAgICA8dmFsdWU+U2hvdyB1c2VyIHByb2ZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWVzc2FnZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzOCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VhcmNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbGVjdCBhbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0MCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VsZWN0IG5vbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0MSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VsZWN0IHVucmVhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWxlY3QgcmVhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Nb3ZlIHRvIGZvbGRlciAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIG5ldyBmb2xkZXIgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRlbGV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ2IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EZWxldGVkIG1haWxzIGFyZSBzdGlsbCBpbiB5b3VyIHRyYXNoIGZvbGRlciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWFyayB1bnJlYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0OCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWFyayByZWFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFuc3dlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BbnN3ZXIgZXZlcnlib2R5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkZvcndhcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWN0aW9ucyAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlNlbmQgcHJpdmF0ZSBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk5vdGhpbmcgc2VsZWN0ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1vdmUgdG8gSW5ib3g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGVsZXRlIChmaW5hbCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1OCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIGZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgZm9sZGVycyBhbmQgb3JnYW5pemUgeW91ciBtZXNzYWdlcyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIGZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPkRlbGV0ZSBmb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPllvdSBjYW5ub3QgZGVsZXRlIHRoaXMgZm9sZGVyLCB0aGVyZSBhcmUgc3RpbGwgbWVzc2FnZXMgaW5zaWRlISBEZWxldGUgZmlyc3QgdGhlIG1lc3NhZ2VzIG9yIG1vdmUgdGhlbSB0byBhbm90aGVyIGZvbGRlci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPkVkaXQgbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGZvbGRlcj8gVGhlcmUgaXMgbm8gd2F5IHRvIHVuZG8gdGhhdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPllvdXIgcmVxdWVzdCB3YXMgc2VuZCB0byB0aGUgdXNlci4gVGhlIHVzZXIgd2lsbCByZWNlaXZlIGEgbm90aWZpY2F0aW9uIHRvIGFjY2VwdCBvciBkZW55IHlvdXIgcmVxdWVzdC4gT25seSBhY2NlcHRlZCByZXF1ZXN0cyBhcmUgaW4geW91ciBjb250YWN0IGxpc3Qgb2YgY291cnNlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+TWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY4IiBuYW1lPSJ1c2VyIHZpZXcgcHJvZmlsZSI+CisgICAgPHZhbHVlPlRoZSB1c2VyIGRvZXMgbm90IHNoYXJlIGhpcyBwZXJzb25hbCBjb250YWN0IGRhdGEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjkiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+VGhlIHVzZXIgZG9lcyBzaGFyZSBoaXMgcGVyc29uYWwgY29udGFjdCBkYXRhIG9ubHkgdG8gY29udGFjdHMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzAiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+QWRkcmVzcyAmYW1wOyBQaG9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjcxIiBuYW1lPSJlcnJvciBjb2RlIj4KKyAgICA8dmFsdWU+WW91IGludml0YXRpb24gY29kZSBpcyBubyB2YWxpZCwgdGhlIGNvZGUgaXMgb25seSB2YWxpZCBkdXJpbmcgdGhpcyBzcGVjaWZpYyBkYXRlIGFuZCB0aW1lOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjcyIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhpcyBldmVudCBpcyBjb25uZWN0ZWQgdG8gc2V2ZXJhbCBjYWxlbmRhcnMgb2Ygb3RoZXIgdXNlcnMuIFlvdXIgY2hhbmdlIHdpbGwgYWxzbyB1cGRhdGUgdGhlaXIgY2FsZW5kYXIuIFdvdWxkIHlvdSByZWFsbHkgbGlrZSB0byB1cGRhdGUgdGhlIGV2ZW50PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjczIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Q29uZmlybSB1cGRhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkFsbG93IGNvbnRhY3QgdG8gc2VlIG15IGNhbGVuZGFyICh2aWV3IG9ubHkpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzUiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5EbyBub3Qgc2hhcmUgY2FsZW5kYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkNhbGVuZGFyIG9mIGNvbnRhY3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzciIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Zb3VyIGNvbnRhY3RzIG5lZWQgdG8gYXBwcm92ZSB5b3UgZmlyc3QgdG8gYmUgYWJsZSB0byBzZWUgdGhlaXIgY2FsZW5kYXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzgiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IHN0b3JlIG9yIGRlbGV0ZSBldmVudHMgZnJvbSBvdGhlciBjYWxlbmRhcnMgdGhlbiB5b3VyIG93biE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3OSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlNob3cgbXkgb3duIGNhbGVuZGFyIGFnYWluITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgwIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhpcyBldmVudCBpcyBjb25uZWN0ZWQgdG8gc2V2ZXJhbCBjYWxlbmRhcnMgb2Ygb3RoZXIgdXNlcnMuIFlvdXIgYWN0aW9uIHdpbGwgYWxzbyBkZWxldGUgdGhlIGV2ZW50IGZyb20gdGhlaXIgY2FsZW5kYXIuIFdvdWxkIHlvdSByZWFsbHkgbGlrZSB0byBkZWxldGUgdGhlIGV2ZW50PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgxIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Q29uZmlybSBhY3Rpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4MiIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPkVudGVyIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4MyIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPkFjY2VzcyB0aGUgY29uZmVyZW5jZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGEgY29uZmVyZW5jZSByb29tIGFuZCBldmVudCBib29rZWQgd2l0aCB0aGlzIHByaXZhdGUgbWVzc2FnZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NSIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPllvdSBuZWVkIHRvIHN0b3JlIHRoZSBldmVudCBmaXJzdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NiIgbmFtZT0iYWNjZXNzIHJvb21zIGVycm9yIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgbm8gc3VjaCByb29tIGF2YWlsYWJsZS4gVGhlIGV2ZW50IGluIHRoZSBjYWxlbmRhciBhbmQgY29ubmVjdGVkIHJvb20gaXMgYWxyZWFkeSBkZWxldGVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg3IiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5DaG9vc2UgeW91ciBuaWNrbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg4IiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5GaXJzdG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4OSIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+TGFzdG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MCIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+RW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MSIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+T2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MiIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+TWluaW11bSBsZW5ndGggNCBjaGFycyEgRm9yIGJvdGgsIGZpcnN0bmFtZSBhbmQgbGFzdG5hbWUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTMiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIHZhbGlkIGVtYWlsITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk0IiBuYW1lPSJhdXRoIGZyb20iPgorICAgIDx2YWx1ZT5GYWNlYm9vazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk1IiBuYW1lPSJhdXRoIGZvcm0iPgorICAgIDx2YWx1ZT5Mb2dpbiB3aXRoIHlvdXIgRmFjZWJvb2sgYWNjb3VudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk2IiBuYW1lPSJ2aWV3IHByb2ZpbGUiPgorICAgIDx2YWx1ZT5NZW1iZXIgc2luY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5NyIgbmFtZT0iZGlyZWN0IGxvZ2luIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Zb3UndmUgbG9nZ2VkIHdpdGggeW91ciBGYWNlYm9vayBhY2NvdW50LiBZb3Ugc2hvdWxkIHVwZGF0ZSB5b3VyIHByb2ZpbGUgd2l0aCB0aGUgY29ycmVjdCBlbWFpbC4gT3RoZXJ3aXNlIHlvdSB3aWxsIG5vdCByZWNlaXZlIGludml0YXRpb25zIGFuZCBwcml2YXRlIG1lc3NhZ2VzIGZyb20gb3RoZXIgdXNlcnMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTgiIG5hbWU9ImRpcmVjdCBsb2dpbiBtZXNzYWdlIGhlYWRlciI+CisgICAgPHZhbHVlPk1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5OSIgbmFtZT0iZGlyZWN0IGxvZ2luIG1lc3NhZ2UgY2hlY2tib3ggY29udHJvbCI+CisgICAgPHZhbHVlPkRvIG5vdCBzaG93IHVwZGF0ZSBwcm9maWxlIG1lc3NhZ2UgYWdhaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMCIgbmFtZT0icHJvZmlsZSBzZXR0aW5ncyBidXR0b24iPgorICAgIDx2YWx1ZT5tb3JlIGRpc3BsYXkgb3B0aW9ucyAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TmV3IHByaXZhdGUgbWVzc2FnZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2xpY2sgaGVyZSB0byB2aXNpdCB5b3VyIHByb2ZpbGUgdG8gc2VlIHRoZSBmdWxsIG1lc3NhZ2UgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlJlcGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPlJvb21zIGFuZCBjaGF0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA1IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5NeSByb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA2IiBuYW1lPSJteSByb29tcyI+CisgICAgPHZhbHVlPk15IGNvbmZlcmVuY2Ugcm9vbSAoZm9yIDEtMTYgdXNlcnMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDciIG5hbWU9Im15IHJvb21zIj4KKyAgICA8dmFsdWU+TXkgd2ViaW5hciByb29tIChmb3IgMS0xMjAgdXNlcnMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDgiIG5hbWU9InJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5Pd25lciBJZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA5IiBuYW1lPSJsb2dpbiBlcnJvciI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIHBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTAiIG5hbWU9ImxvZ2luIGVycm9yIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgYW4gYWNjb3VudCB3aXRoIFVzZXItTGV2ZWwgVXNlciwgTW9kZXJhdG9yIG9yIEFkbWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTEiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5XZWItU2VydmljZSAob25seSBhY2Nlc3MgdmlhIFNPQVApPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTIiIG5hbWU9InVwbG9hZCBmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+RG8gZGlyZWN0bHkgbG9hZCB0byB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTMiIG5hbWU9IndoaXRlYm9hcmQgY2xvc2UgY29uZmlybWF0aW9uIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIHJlbW92ZSB0aGlzIHdoaXRlYm9hcmQ/IFRoaXMgYWN0aW9uIGNhbm5vdCBiZSB1bmRvbmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTQiIG5hbWU9IndoaXRlYm9hcmQgbG9hZCBXTUwiPgorICAgIDx2YWx1ZT5Mb2FkIHRvIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxNSIgbmFtZT0icmVjb3JkaW5nIGZsYWciPgorICAgIDx2YWx1ZT5EbyBub3QgZm9yZ2V0IHN0YXJ0IHJlY29yZGluZyEgT25lIHVzZXIgcGVyIHJvb20gYWx3YXlzIG5lZWRzIHRvIHN0YXJ0IGl0IHRvIGhhdmUgdGhlIHJlY29yZGluZyBhZnRlcndhcmRzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE2IiBuYW1lPSJyZWNvcmRpbmcgZmxhZyI+CisgICAgPHZhbHVlPlN0YXJ0IFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE3IiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPkFycm93PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTgiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+Q2lyY2xlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTkiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+TGluZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIwIiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPlNxdWFyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIxIiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPlRyaWFuZ2xlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjIiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5UZXh0L05vdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyMyIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkNsaXBhcnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjQiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5EcmF3IEZyZWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNSIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlNlbGVjdC9Nb3ZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjYiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5EcmF3IFNoYXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjciIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5DdXQvTW92ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI4IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+Wm9vbSBJbi9PdXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyOSIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlByaW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzAiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5VbmRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzEiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5UcmFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMyIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+QWRkIEdyaWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMyIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlNoYXJlIEZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNCIgbmFtZT0iaWNvbiBzdWJtZW51Ij4KKyAgICA8dmFsdWU+U2VsZWN0IFNoYXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzUiIG5hbWU9Imljb24gc3VibWVudSI+CisgICAgPHZhbHVlPlNlbGVjdCBDbGlwYXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzYiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5Db3B5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzciIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5DdXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzOCIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPlBhc3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzkiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5EZWxldGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MCIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhlIGNvbXBsZXRlIGNvbnRlbnQgb24gdGhlIHdoaXRlYm9hcmQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDEiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5Mb2FkIGRpcmVjdGx5IHRvIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MiIgbmFtZT0iYXR0ZW5kZWVzIj4KKyAgICA8dmFsdWU+QXR0ZW5kZWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDMiIG5hbWU9ImF0ZW5kZWUgbWFuYWdlciI+CisgICAgPHZhbHVlPkF0dGVuZGVlIE1hbmFnZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NCIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+UHJlc2VudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ1IiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5SZW1vdGUgQ29udHJvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NiIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+RWplY3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NyIgbmFtZT0iY2hhdCI+CisgICAgPHZhbHVlPkNoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0OCIgbmFtZT0iaW52aXRlIGF0dGVuZGVlIj4KKyAgICA8dmFsdWU+SW52aXRlIEF0dGVuZGVlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ5IiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5CeSBFbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUwIiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5Vc2VyIGlzIG1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUxIiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5Vc2VyIGhhcyB3ZWJjYW0gc3dpdGNoZWQgb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1MiIgbmFtZT0iZmlsbF9vcHRpb24iPgorICAgIDx2YWx1ZT5EZWFjdGl2YXRlIHNoYXBlIGZpbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1MyIgbmFtZT0iZmlsbF9vcHRpb24iPgorICAgIDx2YWx1ZT5BY3RpdmF0ZSBzaGFwZSBmaWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTQiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5TbmFwIHRvIEdyaWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NSIgbmFtZT0iYWxsb3dfcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QWxsb3cgcmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTYiIG5hbWU9IndhaXRfZm9yX3JlY29yZGluZyI+CisgICAgPHZhbHVlPldhaXQgZm9yIHJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU3IiBuYW1lPSJoaWRlX3RvcF9iYXIiPgorICAgIDx2YWx1ZT5IaWRlIHRvcGJhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU4IiBuYW1lPSJmaWxlRXhwbG9yZXIiPgorICAgIDx2YWx1ZT5QbGF5IHZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTkiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoZSBjb250ZW50IG9uIHRoZSBjdXJyZW50IHNsaWRlPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYwIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT5BY2NlcHQgYW5kIGdyYW50IHVzZXIgcmlnaHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2MSIgbmFtZT0iYWN0aXZpdHlfd2luZG93Ij4KKyAgICA8dmFsdWU+RGVueTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYyIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT5JPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjMiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPkFjdGl2aXRpZXMgYW5kIGFjdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NCIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPlJlbW92ZSB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjUiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0aGUgbW9kZXJhdGlvbiBvciB0aGUgcmlnaHQgdG8gZHJhdyBvbiB0aGUgd2hpdGVib2FyZCB0byByZW1vdmUgd2hpdGVib2FyZHMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjYiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5Ob3QgYWxsb3dlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY3IiBuYW1lPSJ1c2VyX2xlZnRfYWN0X21zZyI+CisgICAgPHZhbHVlPmhhcyBsZWZ0IHRoZSByb29tLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY4IiBuYW1lPSJjbGlwYXJ0IGljb25zIj4KKyAgICA8dmFsdWU+TWF0aCBpY29uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY5IiBuYW1lPSJjbGlwYXJ0IGljb25zIj4KKyAgICA8dmFsdWU+Tm8gY2F0ZWdvcnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MCIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+Q29sb3ItU3R5bGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+UXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzcyIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5Eb21haW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MyIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+dmlzaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NCIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+cmVkb3JhbmdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzUiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPm1lZGl1bXNlYWdyZWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzYiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnN0ZWVsYmx1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc3IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5saWdodHN0ZWVsYmx1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc4IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5nb2xkZW5yZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3OSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+c2lsdmVyZ3JheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgwIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT51c2VyZGVmaW5lZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgxIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5iZXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODIiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnVwbG9hZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgzIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5tZWRpdW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NCIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg1IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5Vbm11dGUgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg2IiBuYW1lPSJnaXZlIGV4Y2x1c2l2ZSBhdWRpbyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBvZiBvdGhlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NyIgbmFtZT0ibXV0ZSBzZWxmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGdsb2JhbGx5IG11dGVkIGJ5IHRoZSBtb2RlcmF0b3IuIFlvdSBjYW5ub3QgdW5tdXRlIHlvdXJzZWxmITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg4IiBuYW1lPSJtdXRlIHNlbGYgY29uZmlybSBtZXNzYWdlIHRpdGxlIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg5IiBuYW1lPSJtdXRlIHNlbGYgY29uZmlybSBtZXNzYWdlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gbXV0ZSB5b3Vyc2VsZiBnbG9iYWxseT8gTm8gb3RoZXIgdXNlciB3aWxsIGhlYXIgeW91IGFueW1vcmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTAiIG5hbWU9Im11dGUgb3RoZXJzIGNvbmZpcm0gbWVzc2FnZSB0aXRsZSI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBsb2NhbGx5PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkxIiBuYW1lPSJtdXRlIG90aGVycyBjb25maXJtIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gbXV0ZSB0aGlzIG1pY3JvcGhvbmU/IFlvdSBjYW4gb25seSBtdXRlIGl0IGxvY2FsbHkgb24geW91ciBzY3JlZW4uIEl0IGhhcyBubyBlZmZlY3QgdG8gaG93IG90aGVyIHVzZXJzIGhlYXIgdGhpcyB1c2VyLiBPbmx5IG1vZGVyYXRvcnMgY2FuIHR1cm4gaXQgb2ZmIGdsb2JhbGx5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkyIiBuYW1lPSJtdXRlIG90aGVycyBjb25maXJtIG1lc3NhZ2UgdGl0bGUiPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgb2ZmIGdsb2JhbGx5PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkzIiBuYW1lPSJtdXRlIG90aGVycyBtb2RlcmF0b3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBtdXRlIHRoaXMgdXNlciBnbG9iYWxseT8gTm8gb3RoZXIgdXNlciB3aWxsIGhlYXIgaGltIGFueW1vcmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTQiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+WW91ciBzb3VuZCBpcyBvbi4gQ2xpY2sgaGVyZSB0byBzZW5kIG1vZGVyYXRvciBtZXNzYWdlIHRvIG11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5IChpbiB0aGUgY29tcGxldGUgY29uZmVyZW5jZSByb29tKSBvZmYhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTUiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+WW91ciBzb3VuZCBpcyBvZmYuIENsaWNrIGhlcmUgdG8gc2VuZCBtb2RlcmF0b3IgbWVzc2FnZSB0byB1bm11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5IChpbiB0aGUgY29tcGxldGUgY29uZmVyZW5jZSByb29tKSBvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5NiIgbmFtZT0ibXV0ZSBhcHBseSBzZWxmIG9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRoYXQgdGhlIG1vZGVyYXRvciBtdXRlcyBteSBtaWNyb3Bob25lIGdsb2JhbGx5LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk3IiBuYW1lPSJtdXRlIGFwcGx5IHNlbGYgb2ZmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRoYXQgdGhlIG1vZGVyYXRvciB1bm11dGVzIG15IG1pY3JvcGhvbmUgZ2xvYmFsbHkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTgiIG5hbWU9Im11dGUgYXBwbHkgb2YgbWVzc2FnZSI+CisgICAgPHZhbHVlPndhbnQgdGhhdCB0aGUgbW9kZXJhdG9yIHVubXV0ZXMgaGlzL2hlciBtaWNyb3Bob25lLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk5IiBuYW1lPSJtdXRlIGFwcGx5IG9mIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53YW50IHRoYXQgdGhlIG1vZGVyYXRvciBtdXRlcyBoaXMvaGVyIG1pY3JvcGhvbmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDAiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+VW5tdXRlIG1pY3JvcGhvbmUuIENsaWNrIGhlcmUgdG8gbXV0ZSBoaXMvaGVyIG1pY3JvcGhvbmUgZ2xvYmFsbHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDEiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lLiBDbGljayBoZXJlIHRvIHVubXV0ZSBoaXMvaGVyIG1pY3JvcGhvbmUgZ2xvYmFsbHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDIiIG5hbWU9Im11dGUgc2VsZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhpcyB1c2VyIGlzIGdsb2JhbGx5IG11dGVkIGJ5IHRoZSBtb2RlcmF0b3IuIFlvdSBjYW5ub3QgdW5tdXRlIGhpbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMyIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDQiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSB5b3VyIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwNSIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA2IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5Vbm11dGUgbWljcm9waG9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA3IiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDgiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDkiIG5hbWU9Im11dGUgbW9kZXJhdG9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Pbmx5IG1vZGVyYXRvcnMgY2FuIG11dGUgb3IgdW5tdXRlIGFuIHVzZXIgZ2xvYmFsbHkhIFRvIG11dGUgeW91ciBvd24gbWljcm9waG9uZTogUGxlYXNlIHVzZSB0aGUgbWljcm9waG9uZSBpY29uIGluIHlvdXIgdmlkZW8gcG9kITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDEwIiBuYW1lPSJwb2xsX25hbWUiPgorICAgIDx2YWx1ZT5Qb2xsIE5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMSIgbmFtZT0icG9sbF9uYW1lIj4KKyAgICA8dmFsdWU+WW91PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTIiIG5hbWU9ImFyY2hpdmVkX3BvbGxzIj4KKyAgICA8dmFsdWU+QXJjaGlldmVkIFBvbGxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTMiIG5hbWU9ImFjdGl2ZV9wb2xsIj4KKyAgICA8dmFsdWU+YWN0aXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTQiIG5hbWU9ImNoYXJ0X3NpbXBsZSI+CisgICAgPHZhbHVlPlNpbXBsZSBDaGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE1IiBuYW1lPSJjaGFydF9waWUiPgorICAgIDx2YWx1ZT5QaWUgQ2hhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNiIgbmFtZT0ic2lnbl91cF92YWxpZGF0aW9uIj4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTciIG5hbWU9ImNoYXRfbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+TmV3IG1lc3NhZ2Uocyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxOCIgbmFtZT0icG9sbF9jbG9zZSI+CisgICAgPHZhbHVlPkNsb3NlIFBvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxOSIgbmFtZT0icG9sbF9jbG9zZV9jb25maXJtIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNsb3NlIHRoaXMgUG9sbD8gTm8gb25lIHdpbGwgYmUgYWJsZSB0byB2b3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjAiIG5hbWU9InBvbGxfZGVsZXRlIj4KKyAgICA8dmFsdWU+RGVsZXRlIFBvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMSIgbmFtZT0icG9sbF9kZWxldGVfY29uZmlybSI+CisgICAgPHZhbHVlPkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBQb2xsPyBUaGUgcmVzdWx0cyB3aWxsIGJlIGRlbGV0ZWQgYXMgd2VsbC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMiIgbmFtZT0ibGFuZ3VhZ2VfY29kZSI+CisgICAgPHZhbHVlPkxhbmd1YWdlIElTTyBDb2RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjMiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19wZXJtaXNzaW9uIj4KKyAgICA8dmFsdWU+QWxsb3cvRGVueSByaWdodCB0byBnaXZlIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNCIgbmFtZT0iYWxsb3dfZXhjbHVzaXZlX2F1ZGlvX3Blcm1pc3Npb24iPgorICAgIDx2YWx1ZT5BbGxvdyB1c2VyIHRvIGdpdmUgZXhjbHVzaXZlIGF1ZGlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjUiIG5hbWU9ImRlbnlfZXhjbHVzaXZlX2F1ZGlvX3Blcm1pc3Npb24iPgorICAgIDx2YWx1ZT5EZW55IHVzZXIgdG8gZ2l2ZSBleGNsdXNpdmUgYXVkaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNiIgbmFtZT0iZXhjbF9hdWRpbyBhcHBseSBzZWxmIG9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGdldCBhIHBlcm1pc3Npb24gZm9yIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNyIgbmFtZT0iZXhjbF9hdWRpbyBhcHBseSBvZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+d2FudCB0aGF0IHRoZSBtb2RlcmF0b3IgZ2l2ZXMgbWUgYSBwZXJtaXNzaW9uIGZvciBleGNsdXNpdmUgYXVkaW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjgiIG5hbWU9ImV4Y2xfYXVkaW8gc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+R2l2ZSBhIHBlcm1pc3Npb24gZm9yIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyOSIgbmFtZT0iY2FtX3Jlc29sdXRpb24iPgorICAgIDx2YWx1ZT5DYW0gcmVzb2x1dGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMwIiBuYW1lPSJjYW1fcmVzb2x1dGlvbl9pbmZvIj4KKyAgICA8dmFsdWU+Q2hhbmdpbmcgdGhlIHJlc29sdXRpb24gYWZmZWN0cyBiYW5kd2lkdGgsIGJpZ2dlciBwaWN0dXJlIG5lZWRzIG1vcmUgYmFuZHdpdGghPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzEiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19lcnJvciI+CisgICAgPHZhbHVlPllvdSBkb24ndCBoYXZlIHRoZSByaWdodCB0byBnaXZlIHlvdXJzZWxmIG9yIG90aGVycyBleGNsdXNpdmUgYXVkaW8uIFlvdSBuZWVkIHRvIGFwcGx5IGZvciB0aGUgcmlnaHQgZnJvbSB0aGUgbW9kZXJhdG9yIG9yIGFzayB0aGUgbW9kZXJhdG9yIHRvIGdpdmUgeW91IGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzMiIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2FzayI+CisgICAgPHZhbHVlPkkgd291bGQgbGlrZSB0byBnZXQgdGhlIHJpZ2h0IGZvciBleGNsdXNpdmUgYXVkaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzMyIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2FjdGlvbiI+CisgICAgPHZhbHVlPkdpdmUgZXhjbHVzaXZlIGF1ZGlvIHRvIG1lIChhbHRlcm5hdGl2ZWx5IGNsaWNrIG9uIHlvdXIgdmlkZW8gcG9kIG9yIHByZXNzIEYxMik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNCIgbmFtZT0ibWljcm8gaXMgb24iPgorICAgIDx2YWx1ZT5NaWNyb3Bob25lIGlzIG9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM1IiBuYW1lPSJtaWNybyBpcyBvZmYiPgorICAgIDx2YWx1ZT5NaWNyb3Bob25lIGlzIG11dGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzYiIG5hbWU9ImhpZGVfY2hhdCI+CisgICAgPHZhbHVlPkhpZGUgY2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM3IiBuYW1lPSJoaWRlX2FjdGl2aXRpZXNfYW5kX2FjdGlvbnMiPgorICAgIDx2YWx1ZT5IaWRlIGFjdGl2aXRpZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzOCIgbmFtZT0iaGlkZV9maWxlc19leHBsb3JlciI+CisgICAgPHZhbHVlPkhpZGUgZmlsZXMgZXhwbG9yZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzOSIgbmFtZT0iaGlkZV9hY3Rpb25zX21lbnUiPgorICAgIDx2YWx1ZT5IaWRlIGFjdGlvbnMgbWVudTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQwIiBuYW1lPSJoaWRlX3NjcmVlbl9zaGFyaW5nIj4KKyAgICA8dmFsdWU+SGlkZSBzY3JlZW4gc2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQxIiBuYW1lPSJoaWRlX3doaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5IaWRlIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MiIgbmFtZT0ic2hvdyBtaWNyb3Bob25lIHN0YXR1cyI+CisgICAgPHZhbHVlPlNob3cgbWljcm8gc3RhdHVzIGluIHZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDMiIG5hbWU9ImxheW91dF9vcHRpb25zIj4KKyAgICA8dmFsdWU+TGF5b3V0IG9wdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0NCIgbmFtZT0iY2FsZW5kYXIgbmV3IGJ1dHRvbiI+CisgICAgPHZhbHVlPk5ldyBFdmVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ1IiBuYW1lPSJjYWxlbmRhciBwYXNzd29yZCBpbmZvIHRleHQiPgorICAgIDx2YWx1ZT5QYXNzd29yZCBwcm90ZWN0ZWQgYXJlIHRoZSBsaW5rcyB0byB0aGUgY29uZmVyZW5jZSB0aGF0IGFyZSBzZW5kIHRvIHRoZSBwYXJ0aWNpcGVudHMgd2hlbiB5b3Ugc2F2ZSB0aGUgY2FsZW5kYXIgZXZlbnQsIG5vdCB0aGUgcm9vbSEgVGhhdCBtZWFucyBpZiB5b3Ugc2F2ZSB0aGUgZXZlbnQgbXVsdGlwbGUgdGltZXMgYnV0IHdpdGggZGlmZmVyZW50IHBhc3N3b3JkcyBldmVyeSBwYXJ0aWNpcGVudCByZWNlaXZlcyBhIG5ldyBsaW5rIHRoYXQgaGFzIGEgZGlmZmVyZW50IHBhc3N3b3JkLiBCdXQgb2xkIGxpbmtzIHN0aWxsIHdvcmsgb25jZSBzZW5kITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ2IiBuYW1lPSJjYWxlbmRhciBlZGl0IGJ1dHRvbiI+CisgICAgPHZhbHVlPkVkaXQgZGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ3IiBuYW1lPSJzaXAgc2hvdyBkaWFsZXIiPgorICAgIDx2YWx1ZT5TaG93IHNpcCBkaWFsZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0OCIgbmFtZT0ic2lwIGNhbGwiPgorICAgIDx2YWx1ZT5DYWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDkiIG5hbWU9ImNhbGVuZGFyIGNvbnRhY3QgbGlzdCI+CisgICAgPHZhbHVlPlNob3cgY2FsZW5kYXIgZXZlbnRzIG9mIGNvbnRhY3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+WW91ciBob21lITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUxIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5QbGFuIHlvdXIgbWVldGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MiIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+V2F0Y2ggcmVjb3JkaW5nIGFuZCBpbnRlcnZpZXdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTMiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPkNob29zZSBhbmQgc3RhcnQgYSB3ZWItY29uZmVyZW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU0IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgdXNlcnMgYW5kIHJpZ2h0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU1IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgY29ubmVjdGlvbnMgYW5kIGtpY2sgdXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1NiIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIHVzZXJncm91cHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1NyIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIGNvbmZlcmVuY2Ugcm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1OCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIHN5c3RlbSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU5IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgbGFiZWxzIGFuZCB3b3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjAiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBMREFQIGFuZCBBRFMgY29uZmlndXJhdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MSIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+RXhwb3J0L0ltcG9ydCBTeXN0ZW0gQmFja3VwczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYyIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgbW9kZXJhdGlvbiBvciB0aGUgcmlnaHQgdG8gZHJhdyBvbiB3aGl0ZWJvYXJkIHRvIHVwbG9hZCwgYWRkLCBkZWxldGUgb3IgbG9hZCBmaWxlcyBhbmQgZm9sZGVycy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MyIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkVkaXQgdGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY0IiBuYW1lPSJzYWx1dGF0aW9uIj4KKyAgICA8dmFsdWU+UHJvZjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY1IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlB1Ymxpc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2NiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdGFydCBQdWJsaXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjciIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U3RvcCBQdWJsaXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+SG9zdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY5IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlB1Ymxpc2ggQXBwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzAiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UHVibGlzaCBJZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDcxIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHVjZSB0aGUgd2lkdGggb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbW92ZSBpdCBsZWZ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzIiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UmVkdWNlIHRoZSBoZWlnaHQgb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbW92ZSBpdCBib3R0b208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5SZWR1Y2UgdGhlIHggb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbWFrZSBpdCB3aWRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc0IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHVjZSB0aGUgeSBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtYWtlIGl0IGhpZ2hlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc1IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkZpbGwgdGhlc2Ugc2V0dGluZ3Mgc3RyZWFtIHlvdXIgc2NyZWVuIGRhdGEgdG8gM3RoIHBhcnR5IHByb3ZpZGVycyBsaWtlIGp1c3Rpbi50djwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc2IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlBsZWFzZSBzdGFydCBTY3JlZW4gc2hhcmluZyB0byBiZSBhYmxlIHRvIHB1Ymxpc2ggaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3NyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5Nb2RlcmF0b3IgcGVybWlzc2lvbiByZXF1aXJlZCB0byBzdGFydCByZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3OCIgbmFtZT0ibm8gcmlnaHQgZm9yIGV4Y2x1c2l2ZSBhdWRpbyI+CisgICAgPHZhbHVlPllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gYXBwbHkgZXhjbHVzaXZlIGF1ZGlvIHRvIGFueSBwYXJ0aWNpcGFudC4gWW91IG5lZWQgbW9kZXJhdGlvbiByb2xlIG9yIHRoZSByaWdodCBmb3IgZXhjbHVzaXZlIGF1ZGlvIHRvIG1ha2UgYW55IG1pY3JvcGhvbmUgZXhjbHVzaXZlIHR1cm5lZCBvbi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzkiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlVwbG9hZCBuZXcgZmlsZSB0byBmaWxlIGV4cGxvcmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODAiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPk9wZW4gbmV3IGRpYWxvZyB3aXRoIHNoYXJpbmcgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+QW4gZXhpc3RpbmcgbW9kZXJhdG9yIG11c3QgYXBwcm92ZSBpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgyIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5Bc2sgbW9kZXJhdG9yIHRvIHNoYXJlIHlvdXIgd2ViY2FtL21pY3JvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODMiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkdhdGhlciBmZWVkYmFjayBieSBjcmVhdGluZyBhIHBvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+UGFzdCBhbmQgY3VycmVudCBwb2xsIHJlc3VsdHMgYXMgY2hhcnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODUiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlZvdGUgaWYgdGhlcmUgaXMgYSBwb2xsIGZvciB0aGlzIGNvbmZlcmVuY2Ugcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg2IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5FZGl0IGNhbSBhbmQgbWljIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODciIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkNvbmZpcm0gYW5kIGxlYXZlIHRoZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODgiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkNhbGwgZXh0ZXJuYWwgcGVvcGxlIHZpYSBWb0lQL1NJUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg5IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5TZW5kIGFuIGVtYWlsIHdpdGggYSBkaXJlY3QgbGluayB0byB0aGlzIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Q2hhbmdlIHlvdXIgd2hpdGVib2FyZCBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkxIiBuYW1lPSJiYWNrdXAgYWRtaW4iPgorICAgIDx2YWx1ZT5NYXggdXBsb2FkIHNpemU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MiIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+QXNrIG1vZGVyYXRvciB0byBzaGFyZSB5b3VyIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MyIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+U3RhcnQgUHJpdmF0ZSBDaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTQiIG5hbWU9ImFsbF9wcml2YXRlX2NoYXQiPgorICAgIDx2YWx1ZT5BbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NSIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBzdGFydCBhIHByaXZhdGUgY2hhdCB3aXRoIHlvdXJzZWxmLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk2IiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5Zb3UndmUgYWxyZWFkeSBzdGFydGVkIGEgcHJpdmF0ZSBjaGF0IHdpdGggdGhpcyBwYXJ0aWNpcGFudC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NyIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHByaXZhdGUgY2hhdD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5OCIgbmFtZT0iU2VydmVycyI+CisgICAgPHZhbHVlPlNlcnZlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5OSIgbmFtZT0iU2VydmVycyI+CisgICAgPHZhbHVlPlNlcnZlcnMgcGFydGljaXBhdGluZyBpbiBjbHVzdGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDAiIG5hbWU9IlNlcnZlciBuYW1lIj4KKyAgICA8dmFsdWU+U2VydmVyIE5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMSIgbmFtZT0iU2VydmVyIEFkZHJlc3MiPgorICAgIDx2YWx1ZT5TZXJ2ZXIgQWRkcmVzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAyIiBuYW1lPSJTZXJ2ZXIgZGV0YWlscyI+CisgICAgPHZhbHVlPlNlcnZlciBkZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDMiIG5hbWU9IlNlbmQgU01TIj4KKyAgICA8dmFsdWU+U2VuZCBTTVM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNCIgbmFtZT0icHVibGlzaGluZ19tZXNzYWdlIj4KKyAgICA8dmFsdWU+UHVibGlzaGluZy4gVXNlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNSIgbmFtZT0iY21kX2xpbmVfYWRtaW4iPgorICAgIDx2YWx1ZT5UbyBzYXZlIHRpbWUgYW5kIGludGVybmV0IHRyYWZmaWMgeW91IGNhbiB1c2UgY29tbWFuZCBsaW5lIGFkbWluIHRvIGJhY2t1cC9yZXN0b3JlL3VwZ3JhZGU6XG4gMSkgZ28gdG8gT00gaW5zdGFsbCBkaXIgKGZvciBleC4gL29wdC9yZWQ1KSBcbiAyKSBzdG9wIE9NIChmb3IgZXguIC4vcmVkNS1zaHV0ZG93bi5zaClcbiAzKSAuL2FkbWluLnNoIC1iIC1maWxlIH4vdG9kYXlfb21fYmFja3VwLnppcCAoY3JlYXRlIGJhY2t1cCBvZiBjdXJyZW50IE9NKVxuIDQpIGRvd25sb2FkIGFyY2hpdmUgd2l0aCBuZXcgT01cbiA1KSBtdiAvb3B0L3JlZDUgL29wdC5yZWQ1LmJhayAobW92ZSB3b3JraW5nIHZlcnNpb24gb2YgT00ganVzdCBpbiBjYXNlIDopKVxuIDYpIGV4dHJhY3QgZG93bmxvYWRlZCBPTSB0byB0aGUgL29wdC9yZWQ1XG4gNykgLi9hZG1pbi5zaCAtaSAtZmlsZSB+L3RvZGF5X29tX2JhY2t1cC56aXAgKG9yICcuL2FkbWluLnNoIC1pIC1maWxlIH4vdG9kYXlfb21fYmFja3VwLnppcCAtLWRiLXR5cGUgbXlzcWwgLS1kYi11c2VyIG9tX3VzZXIgLS1kYi1wYXNzIG9tX3VzZXJfcGFzcycgaW4gY2FzZSBvZiB5b3UgYXJlIHVzaW5nIG5vbi1kZWZhdWx0IERCIClcbiA4KSBzdGFydCBPTVxuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDYiIG5hbWU9InB1YmxpY19yb29tX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5Sb29tcyBjb21tb24gdG8gYWxsIHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNyIgbmFtZT0icHJpdmF0ZV9yb29tX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5Sb29tcyBjb21tb24gdG8gdGhlIGN1cnJlbnQgdXNlciBncm91cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA4IiBuYW1lPSJteV9yb29tX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5Sb29tcyBvZiB0aGUgY3VycmVudCB1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDkiIG5hbWU9ImNyZWF0ZV9uZXdfcm9vbSI+CisgICAgPHZhbHVlPkNyZWF0ZS9Nb2RpZnkgYXBwb2ludG1lbnQgc3BlY2lhbCByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTAiIG5hbWU9Im11bHRpcGxlX2FkZHJlc3NlcyI+CisgICAgPHZhbHVlPllvdSBjYW4gZW50ZXIgbXVsdGlwbGUgYWRkcmVzc2VzIGluIHRoZSBmb3JtYXQ6IGZpcnN0bmFtZTEgbGFzdG5hbWUxICZsdDtlbWFpbDEmZ3Q7LCJmaXJzdG5hbWUyIGxhc3RuYW1lMiIgJmx0O2VtYWlsMiZndDssJ2ZpcnN0bmFtZTMgbGFzdG5hbWUzJyAmbHQ7ZW1haWwzJmd0OywgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTEiIG5hbWU9InN0cmVhbV92b2x1bWUiPgorICAgIDx2YWx1ZT5BZGp1c3Qgc3RyZWFtIHZvbHVtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTEyIiBuYW1lPSJtaWNyb3Bob25lX3ZvbHVtZSI+CisgICAgPHZhbHVlPkFkanVzdCBtaWNyb3Bob25lIHZvbHVtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTEzIiBuYW1lPSJjaGF0X21vZGVyYXRlZCI+CisgICAgPHZhbHVlPklzIGNoYXQgbW9kZXJhdGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTQiIG5hbWU9ImNoYXRfbW9kZXJhdGVkIj4KKyAgICA8dmFsdWU+QWxsb3cgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE1IiBuYW1lPSJjaGF0X29wZW5lZCI+CisgICAgPHZhbHVlPkNoYXQgcGFuZWwgb3BlbmVkIGJ5IGRlZmF1bHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNiIgbmFtZT0iZmlsZXNfb3BlbmVkIj4KKyAgICA8dmFsdWU+RmlsZXMgcGFuZWwgb3BlbmVkIGJ5IGRlZmF1bHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNyIgbmFtZT0ic2VydmVyIGFkbWluIHNlY3Rpb24gbGFzdHBpbmciPgorICAgIDx2YWx1ZT5MYXN0IHBpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxOCIgbmFtZT0ic2VydmVyIGFkbWluIHNlY3Rpb24gbGFzdHBpbmcgaW5mbyI+CisgICAgPHZhbHVlPkV2ZXJ5IHNsYXZlIHNlbmRzIGEgcGluZyB0byB0aGUgbWFzdGVyIGV2ZXJ5IDMgc2Vjb25kcyAoY29uZmlndXJhYmxlKS4gU2xhdmUgbGFzdFBpbmcgbXVzdCBiZSBzbWFsbGVyIHRoZW4gMSBtaW51dGUgc28gdGhhdCB0aGUgbWFzdGVyIHVzZXMgdGhlIHNsYXZlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE5IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcG9ydCI+CisgICAgPHZhbHVlPkhUVFAgUG9ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIwIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gdXNlciI+CisgICAgPHZhbHVlPlVzZXIgKFNPQVAtQWNjZXNzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIxIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcGFzc3dvcmQiPgorICAgIDx2YWx1ZT5QYXNzd29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIyIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gd2ViYXBwIHBhdGgiPgorICAgIDx2YWx1ZT5XZWJhcHAgcGF0aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIzIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcHJvdG9jb2wiPgorICAgIDx2YWx1ZT5Qcm90b2NvbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI0IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcGluZyBydW5uaW5nIj4KKyAgICA8dmFsdWU+UGluZyBydW5uaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjUiIG5hbWU9InNlcnZlciBhZG1pbiBhY3RpdmUiPgorICAgIDx2YWx1ZT5BY3RpdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyNiIgbmFtZT0iZ2VuZXJhdGVfaGFzaCI+CisgICAgPHZhbHVlPkdlbmVyYXRlIFVSTDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI3IiBuYW1lPSJuZXR3b3JrIHRlc3RpbmcgbGluayI+CisgICAgPHZhbHVlPk5ldHdvcmsgdGVzdGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI4IiBuYW1lPSJyb29tX29wdGlvbnMiPgorICAgIDx2YWx1ZT5BdXRvIHNlbGVjdCBpbnRlcnZpZXcgdmlkZW8gcG9kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjkiIG5hbWU9ImZvbnRfdW5kZXJsaW5lIj4KKyAgICA8dmFsdWU+VW5kZXJsaW5lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzAiIG5hbWU9ImZvbnRfc3R5bGUiPgorICAgIDx2YWx1ZT5Gb250IHN0eWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzEiIG5hbWU9ImFsbG93X2ZvbnRfc3R5bGVzIj4KKyAgICA8dmFsdWU+QWxsb3cgZm9udCBzdHlsZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMiIgbmFtZT0iZm9udF9jb2xvciI+CisgICAgPHZhbHVlPkZvbnQgY29sb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMyIgbmFtZT0iaHlwZXJsaW5rIj4KKyAgICA8dmFsdWU+SHlwZXJsaW5rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzQiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW4iPgorICAgIDx2YWx1ZT5TaG93IHNlc3Npb24gc3RhdGlzdGljczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM1IiBuYW1lPSJjb25uZWN0aW9uIGFkbWluIj4KKyAgICA8dmFsdWU+U2Vzc2lvbiBkZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzYiIG5hbWU9InN5c3RlbV9pbXBvcnQiPgorICAgIDx2YWx1ZT5TeXN0ZW0gaW1wb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzciIG5hbWU9ImluY2x1ZGVfaW50b19iYWNrdXAiPgorICAgIDx2YWx1ZT5JbmNsdWRlIHVwbG9hZGVkIGZpbGVzIGFuZCByZWNvcmRpbmdzIGluIGJhY2t1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM4IiBuYW1lPSJyb29tX2FkbWluX3NpcCI+CisgICAgPHZhbHVlPkVuYWJsZSBTSVAgdHJhbnNwb3J0IGluIHRoZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzkiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19jb25maXJtIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIHByb3ZpZGUgdGhpcyB1c2VyIGFuIGV4Y2x1c2l2ZSBhdWRpbz88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU0MCIgbmFtZT0ibm9fdGltZXpvbmUiPgorICAgIDx2YWx1ZT5QbGVhc2Ugc3BlY2lmeSB5b3VyIHRpbWV6b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NDUiIG5hbWU9ImNvbnRlbnRfaXNfc2F2aW5nIj4KKyAgICA8dmFsdWU+Q29udGVudCBpcyBTYXZpbmcsIFBsZWFzZSB3YWl0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorPC9sYW5ndWFnZT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL2dyZWVrLnhtbCBiL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL2dyZWVrLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZWYzYjFlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9sYW5ndWFnZXMvZ3JlZWsueG1sCkBAIC0wLDAgKzEsNDY1MiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKworPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworVGhpcyBGaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5IHRoZSBMYW5ndWFnZUVkaXRvciAKK3RvIGFkZCBuZXcgTGFuZ3VhZ2VzIG9yIG1vZGlmeS9jdXN0b21pemUgaXQgdXNlIHRoZSBMYW5ndWFnZUVkaXRvciAKK3NlZSBodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvTGFuZ3VhZ2VFZGl0b3IuaHRtbCBmb3IgRGV0YWlscyAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjLS0+Cis8bGFuZ3VhZ2UgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeG1sbnM6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbj0ibGFuZ3VhZ2UueHNkIj4KKyAgPHN0cmluZyBpZD0iMSIgbmFtZT0iY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPs6jz4XOvc60zrnOrM+DzrrOtc+Izrc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMiIgbmFtZT0ibWVldGluZyI+CisgICAgPHZhbHVlPs6jz4XOvc6szr3PhM63z4POtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzIiBuYW1lPSJjbGFzc3Jvb20iPgorICAgIDx2YWx1ZT7Ok861zrPOv869z4zPhM6xPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQiIG5hbWU9InNldHRpbmdzIj4KKyAgICA8dmFsdWU+zqHPhc64zrzOr8+DzrXOuc+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUiIG5hbWU9ImJlbnV0emVyIj4KKyAgICA8dmFsdWU+zqDPgc6/z4bOr867PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYiIG5hbWU9ImFkbWluIj4KKyAgICA8dmFsdWU+zpTOuc6xz4fOtc6vz4HOuc+Dzrc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNyIgbmFtZT0ic3RvcCI+CisgICAgPHZhbHVlPs6UzrnOsc66zr/PgM6uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPs6VzrPOs8+BzrHPhs6uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkiIG5hbWU9Im5vZmlsZSI+CisgICAgPHZhbHVlPs6kzr8gzrHPgc+HzrXOr86/IM60zrXOvSDOss+Bzq3OuM63zrrOtSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAiIG5hbWU9InJlY29yZGJ5dGVhY2hlciI+CisgICAgPHZhbHVlPs6VzrPOs8+BzrHPhs6uIM66zrHPhM6sIM6UzqzPg866zrHOu86/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExIiBuYW1lPSJjb25uZWN0ZWR1c2VycyI+CisgICAgPHZhbHVlPs6jz4XOvc60zrXOtM61zrzOrc69zr/OuSDOp8+Bzq7Pg8+EzrXPgjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIiIG5hbWU9InN0YXJ0Y29uZiI+CisgICAgPHZhbHVlPs6Izr3Osc+Bzr7OtyDOo8+Fzr3OtM65zqzPg866zrXPiM63z4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMiIG5hbWU9Im15bmFtZSI+CisgICAgPHZhbHVlPs6kzr8gzozOvc6/zrzOrCDOnM6/z4U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQiIG5hbWU9InZpZGVvY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPs6SzrnOvc+EzrXOv86jz4XOvc60zrnOrM+DzrrOtc+Izrc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUiIG5hbWU9ImltcG9ydCI+CisgICAgPHZhbHVlPs6mz4zPgc+Ez4nPg863IM6Rz4HPh861zq/Ov8+FPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2IiBuYW1lPSJyZWZyZXNoZmlsZXMiPgorICAgIDx2YWx1ZT7Okc69zrHOvc6tz4nPg863IM6bzq/Pg8+EzrHPgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNyIgbmFtZT0idG9tYWluZmlsZSI+CisgICAgPHZhbHVlPs6jz4TOvyDOks6xz4POuc66z4wgzpHPgc+HzrXOr86/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4IiBuYW1lPSJuZXdwb2xsIj4KKyAgICA8dmFsdWU+zp3Orc6xIM6ozrfPhs6/z4bOv8+Bzq/OsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOSIgbmFtZT0ibmV3cG9sbGhlYWRlciI+CisgICAgPHZhbHVlPs6dzq3OsSDOqM63z4bOv8+Gzr/Pgc6vzrEgzqPPhc69zrTOuc6sz4POus61z4jOt8+CLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMCIgbmFtZT0icXVlc3Rpb24iPgorICAgIDx2YWx1ZT7Olc+Bz47PhM63z4POtzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEiIG5hbWU9InBvbGx0eXBlIj4KKyAgICA8dmFsdWU+zqTPjc+Azr/PgiDOqM63z4bOv8+Gzr/Pgc6vzrHPgjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIiIG5hbWU9ImNyZWF0ZSI+CisgICAgPHZhbHVlPs6UzrfOvM65zr/Phc+BzrPOr86xPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzIiBuYW1lPSJpbmZvbWVzc2FnZSI+CisgICAgPHZhbHVlPs6Vzr3Ot868zq3Pgc+Jz4POtzogzprOrM64zrUgz4PPhc69zrTOtc60zrXOvM6tzr3Ov8+CIM6nz4HOrs+Dz4TOt8+CIM67zrHOvM6yzqzOvc61zrkgzq3Ovc6xIM68zq7Ovc+FzrzOsSDOvM61IM+Ezrcgzr3Orc6xIM6ozrfPhs6/z4bOv8+Bzq/OsS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQiIG5hbWU9ImNyZWF0cG9sbCI+CisgICAgPHZhbHVlPs6UzrfOvM65zr/Phc+BzrPOr86xIM6ozrfPhs6/z4bOv8+Bzq/Osc+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1IiBuYW1lPSJjYW5jZWwiPgorICAgIDx2YWx1ZT7Okc66z43Pgc+Jz4POtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNiIgbmFtZT0ieWVzbm8iPgorICAgIDx2YWx1ZT7Onc6xzrkvzozPh865PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3IiBuYW1lPSJudW1lcmljIj4KKyAgICA8dmFsdWU+zpHPgc65zrjOvM+Mz4IgMS0xMDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOCIgbmFtZT0icG9sbCI+CisgICAgPHZhbHVlPs6ozrfPhs6/z4bOv8+Bzq/OsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOSIgbmFtZT0ibW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPs6cz4zOvc6/IM6/IM6jz4XOvc+Ezr/Ovc65z4PPhM6uz4IgzrzPgM6/z4HOtc6vIM69zrEgzrTOt868zrnOv8+Fz4HOs861zq8gzpXPgc+Jz4TOrs+DzrXOuc+CITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMCIgbmFtZT0idm90ZSI+CisgICAgPHZhbHVlPs6XIM6ozq7Phs6/z4Igz4POsc+CIM66zrHPhM6xz4fPic+Bzq7OuM63zrrOtS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEiIG5hbWU9ImFscmVhZHl2b3RlZCI+CisgICAgPHZhbHVlPs6Iz4fOtc+EzrUgzq7OtM63IM+Dz4XOvM68zrXPhM6sz4PPh861zrkgz4POtSDOsc+Fz4TOrs69IM+EzrfOvSDOqM63z4bOv8+Gzr/Pgc6vzrEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyIiBuYW1lPSJ2b3RpbmciPgorICAgIDx2YWx1ZT7OqM63z4bOr8+Dz4TOtSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMiIG5hbWU9ImFuc3dlciI+CisgICAgPHZhbHVlPs6XIM6Rz4DOrM69z4TOt8+Dzq4gzqPOsc+COjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNCIgbmFtZT0ieWVzIj4KKyAgICA8dmFsdWU+zp3Osc65PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1IiBuYW1lPSJubyI+CisgICAgPHZhbHVlPs6Mz4fOuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNiIgbmFtZT0icXVlc3Rpb253YW50Ij4KKyAgICA8dmFsdWU+zrjOrc67zrXOuSDOvc6xIM6+zq3Pgc61zrk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3IiBuYW1lPSJwb2xscmVzdWx0cyI+CisgICAgPHZhbHVlPs6Rz4DOv8+EzrXOu86tz4POvM6xz4TOsSDOqM63z4bOv8+Gzr/Pgc6vzrHPgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOCIgbmFtZT0icXVlc3Rpb24iPgorICAgIDx2YWx1ZT7Olc+Bz47PhM63z4POtzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkiIG5hbWU9InJlc3VsdHMiPgorICAgIDx2YWx1ZT7Okc+Azr/PhM61zrvOrc+DzrzOsc+EzrE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwIiBuYW1lPSJhbnN3ZXJzIj4KKyAgICA8dmFsdWU+zpHPgM6xzr3PhM6uz4POtc65z4I6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxIiBuYW1lPSJub3BvbGwiPgorICAgIDx2YWx1ZT7OlM61zr0gzq3Ph861zrkgzr7Otc66zrnOvc6uz4POtc65IM66zrHOvM6vzrEgzqjOt8+Gzr/Phs6/z4HOr86xLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MiIgbmFtZT0idm90aW5ncyI+CisgICAgPHZhbHVlPs6ozrfPhs6vz4PPhM61ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MyIgbmFtZT0ibWVldGluZyI+CisgICAgPHZhbHVlPs6jz4XOvc6szr3PhM63z4POtyAozrzOrc6zzrnPg8+Ezr8gNCDOuM6tz4POtc65z4IpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0IiBuYW1lPSJjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+zqPPhc69zrTOuc6sz4POus61z4jOtyAozrzOrc6zzrnPg8+Ezr8gNTAgzrjOrc+DzrXOuc+CKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NSIgbmFtZT0idHlwZSI+CisgICAgPHZhbHVlPs6kz43PgM6/z4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYiIG5hbWU9InJlbWFpbmluZ3NlYXRzIj4KKyAgICA8dmFsdWU+zobOu867zrXPgiDOmM6tz4POtc65z4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDciIG5hbWU9ImFscmVhZHljaG9zZW4iPgorICAgIDx2YWx1ZT7Oic60zrcgzpXPgM65zrvOtc6zzrzOrc69zrc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgiIG5hbWU9ImVudGVyIj4KKyAgICA8dmFsdWU+zpXOr8+Dzr/OtM6/z4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkiIG5hbWU9Im1vZGxlYXZlIj4KKyAgICA8dmFsdWU+zp8gzqPPhc69z4TOv869zrnPg8+Ezq7PgiDOtc6zzrrOsc+Ezq3Ou861zrnPiM61IM+EzrcgzqPPhc69zqzOvc+EzrfPg863LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MCIgbmFtZT0ic3lzdGVtbWVzc2FnZSI+CisgICAgPHZhbHVlPs6gzrvOt8+Bzr/Phs6/z4HOr861z4IgzqPPhc+Dz4TOrs68zrHPhM6/z4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTEiIG5hbWU9ImNob3NzZWRldmljZSI+CisgICAgPHZhbHVlPs6Vz4DOuc67zr/Os86uIM6jz4XPg866zrXPhc6uz4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIiIG5hbWU9ImNob29zZWNhbSI+CisgICAgPHZhbHVlPs6Vz4DOuc67zr/Os86uIFdlYiDOms6szrzOtc+BzrHPgjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMiIG5hbWU9ImNob29zZW1pYyI+CisgICAgPHZhbHVlPs6Vz4DOuc67zr/Os86uIM6czrnOus+Bzr/Phs+Ozr3Ov8+FOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NCIgbmFtZT0ib2siPgorICAgIDx2YWx1ZT7Olc69z4TOrM6+zrXOuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NSIgbmFtZT0iY2FuY2VsMiI+CisgICAgPHZhbHVlPs6RzrrPjc+Bz4nPg863PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2IiBuYW1lPSJyZWNvbmVlY3RuZWVkZWQiPgorICAgIDx2YWx1ZT7OoM+Bzq3PgM61zrkgzr3OsSDPg8+Fzr3OtM61zrjOtc6vz4TOtSDOvs6xzr3OrCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTciIG5hbWU9ImVkaXRzZXR1cCI+CisgICAgPHZhbHVlPs6kz4HOv8+Azr/PgM6/zq/Ot8+DzrcgzpXOs866zrHPhM6sz4PPhM6xz4POt8+CLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OCIgbmFtZT0iY291cnNlIj4KKyAgICA8dmFsdWU+zpzOrM64zrfOvM6xOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OSIgbmFtZT0ibGFuZ3VhZ2UiPgorICAgIDx2YWx1ZT7Ok867z47Pg8+DzrE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwIiBuYW1lPSJvazIiPgorICAgIDx2YWx1ZT7Olc69z4TOrM6+zrXOuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MSIgbmFtZT0iY2FuY2VsMyI+CisgICAgPHZhbHVlPs6RzrrPjc+Bz4nPg863PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyIiBuYW1lPSJjbGVhcndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT7Olc66zrrOsc64zqzPgc65z4POtyDOoM6vzr3Osc66zrE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMiIG5hbWU9ImNsZWFyd2hpdGVib2FyZHF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+zp3OsSDOsc60zrXOuc6szrbOtc65IM6/IM6gzq/Ovc6xzrrOsc+CIM+Az4HOuc69IM6xz4DPjCDPhM63zr0gz4DPgc6/z4POuM6uzrrOtyDOnc6tzrHPgiDOlc65zrrPjM69zrHPgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NCIgbmFtZT0iZG9udGFza2FnYWluIj4KKyAgICA8dmFsdWU+zp3OsSDOvM63zr0gzrXPgc+Jz4TOt864z44gzr7Osc69zqwhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1IiBuYW1lPSJubyI+CisgICAgPHZhbHVlPs6Mz4fOuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NiIgbmFtZT0iZWRpdHNldHVwMiI+CisgICAgPHZhbHVlPs6hz43OuM68zrnPg863IM6VzrPOus6xz4TOrM+Dz4TOsc+DzrfPgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NyIgbmFtZT0ibmVlZGNvbmZpcm1hdGlvbndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT7Onc6xIM62zrfPhM61zq/PhM6xzrkgzpXPgM65zrLOtc6yzrHOr8+Jz4POtyDPgM+BzrnOvSDOsc+Az4wgz4TOt869IM61zrrOus6xzrjOrM+BzrnPg863IM+Ezr/PhSDOoM6vzr3Osc66zrE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgiIG5hbWU9InVzZXJpbmZvIj4KKyAgICA8dmFsdWU+zqDOu863z4HOv8+Gzr/Pgc6vzrXPgiDOp8+Bzq7Pg8+Ezrc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkiIG5hbWU9ImNsZWFyZHJhd2FyZWEiPgorICAgIDx2YWx1ZT7Olc66zrrOsc64zqzPgc65z4POtyDOoM61z4HOuc6/z4fOrs+CIM6jz4fOtc60zq/Osc+DzrfPgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MCIgbmFtZT0idW5kbyI+CisgICAgPHZhbHVlPs6Rzr3Osc6vz4HOtc+Dzrc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzEiIG5hbWU9InJlZG8iPgorICAgIDx2YWx1ZT7Olc+AzrHOvc6xz4bOv8+Bzqw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIiIG5hbWU9InNlbGVjdG9iamVjdCI+CisgICAgPHZhbHVlPs6Vz4DOuc67zr/Os86uIM6Rzr3PhM65zrrOtc65zrzOrc69zr/PhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MyIgbmFtZT0idGV4dCI+CisgICAgPHZhbHVlPs6azrXOr868zrXOvc6/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0IiBuYW1lPSJwYWludCI+CisgICAgPHZhbHVlPs6Wz4nOs8+BzrHPhs65zrrOrjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NSIgbmFtZT0iZHJhd2xpbmUiPgorICAgIDx2YWx1ZT7Oo8+HzrXOtM6vzrHPg863IM6Tz4HOsc68zrzOrs+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2IiBuYW1lPSJkcmF3dSI+CisgICAgPHZhbHVlPs6jz4fOtc60zq/Osc+DzrcgzqXPgM6/zrPPgc6szrzOvM65z4POt8+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3IiBuYW1lPSJyZWN0Ij4KKyAgICA8dmFsdWU+zp/Pgc64zr/Os8+Ozr3Ouc6/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4IiBuYW1lPSJlbGxpcHNlIj4KKyAgICA8dmFsdWU+zojOu867zrXOuc+Izrc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkiIG5hbWU9ImFycm93Ij4KKyAgICA8dmFsdWU+zpLOrc67zr/PgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MCIgbmFtZT0iZGVsZXRlY2hvc2VuIj4KKyAgICA8dmFsdWU+zpTOuc6xzrPPgc6xz4bOriDOlc+AzrnOu861zrPOvM6tzr3Ov8+FIM6jz4TOv865z4fOtc6vzr/PhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MSIgbmFtZT0iYXBwbGl5bW9kIj4KKyAgICA8dmFsdWU+zpHOr8+EzrfPg863IM6zzrnOsSDOo8+Fzr3PhM6/zr3Ouc+DzrzPjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MiIgbmFtZT0iYXBwbHkiPgorICAgIDx2YWx1ZT7Okc6vz4TOt8+Dzrc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODMiIG5hbWU9ImNhbmNlbCI+CisgICAgPHZhbHVlPs6RzrrPjc+Bz4nPg863PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0IiBuYW1lPSJtb2QiPgorICAgIDx2YWx1ZT7Ok86vzr3Otc+EzrUgzqPPhc69z4TOv869zrnPg8+Ezq7PgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NSIgbmFtZT0iY2xvc2UiPgorICAgIDx2YWx1ZT7Oms67zrXOr8+DzrnOvM6/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2IiBuYW1lPSJpdGFsaWMiPgorICAgIDx2YWx1ZT5JdGFsaWM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODciIG5hbWU9ImJvbGQiPgorICAgIDx2YWx1ZT5Cb2xkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4IiBuYW1lPSJ3YWl0aW5nIj4KKyAgICA8dmFsdWU+zqPOtSDOkc69zrHOvM6/zr3OrjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OSIgbmFtZT0iYXBwbHlNZXNzYWdlIj4KKyAgICA8dmFsdWU+zprOrM+Azr/Ouc6/z4IgzqfPgc6uz4PPhM63z4IgzrjOrc67zrXOuSDOvc6xIM66zqzOvc61zrkgzpHOr8+EzrfPg863IM6zzrnOsSDOo8+Fzr3PhM6/zr3Ouc+DzrzPjC4gzpzPgM6/z4HOtc6vz4TOtSDOvc6xIM+Ezr/PhSDPgM6xz4HOsc+Hz4nPgc6uz4POtc+EzrUgz4DPgc+Mz4POss6xz4POtyDOvM+Mzr3OvyDPg8+Ezr/OvSDOoM6vzr3Osc66zrEgzq4gzr3OsSDOvM61z4TOsc+Dz4TPgc6tz4jOtc+EzrUgz4DOu86uz4HPic+CIM+Ezr8gz4HPjM67zr8gzqPPhc69z4TOv869zrnPg868zr/PjS4gzqfPgc6uz4PPhM63z4I6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwIiBuYW1lPSJhY2NlcHQiPgorICAgIDx2YWx1ZT7Okc+Azr/OtM6/z4fOrjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MSIgbmFtZT0icmVqZWN0Ij4KKyAgICA8dmFsdWU+zpHPgM+Mz4HPgc65z4jOtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MiIgbmFtZT0iY2FuY2VsIj4KKyAgICA8dmFsdWU+zpHOus+Nz4HPic+Dzrc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMiIG5hbWU9InNlbmRtb2RyZXF1ZXN0bWVzc2FnZSI+CisgICAgPHZhbHVlPs6Rz4DOv8+Dz4TOv867zq4gzpHOuc+Ezq7OvM6xz4TOv8+CIM+Dz4TOv8+Fz4IgzrHOus+MzrvOv8+FzrjOv8+Fz4IgzqfPgc6uz4PPhM61z4I6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0IiBuYW1lPSJhY2NlcHQiPgorICAgIDx2YWx1ZT7Okc+Azr/OtM61zrrPhM+MPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1IiBuYW1lPSJyZWplY3QiPgorICAgIDx2YWx1ZT7OnM63IM6Rz4DOv860zrXOus+Ez4w8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYiIG5hbWU9ImNoYW5nZW1vZCI+CisgICAgPHZhbHVlPs6RzrvOu86xzrPOriDOo8+Fzr3PhM6/zr3Ouc+Dz4TOrjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NyIgbmFtZT0ibm9ubW9kZXJyb3JtZXNzYWdlIj4KKyAgICA8dmFsdWU+zpTOtc69IM+Dz4XOvc+Ezr/Ovc6vzrbOtc+EzrUgzrXPg861zq/PgiDOsc+Fz4TPjCDPhM6/IM6czqzOuM63zrzOsSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgiIG5hbWU9Im1vZGVyYXRvciI+CisgICAgPHZhbHVlPs6jz4XOvc+Ezr/Ovc65z4PPhM6uz4I6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5IiBuYW1lPSJyb29tZnVsbG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7Okc+Fz4TPjCDPhM6/IM6Uz4nOvM6sz4TOuc6/IM61zq/Ovc6xzrkgz4DOu86uz4HOtc+CLiDOoM6xz4HOsc66zrHOu86/z43OvM61IM60zr/Ous65zrzOrM+Dz4TOtSDOvs6xzr3OrCDOsc+BzrPPjM+EzrXPgc6xLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAiIG5hbWU9ImVsbGxpcHNlIj4KKyAgICA8dmFsdWU+zojOu867zrXOuc+Izrc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxIiBuYW1lPSJjbG9zZSI+CisgICAgPHZhbHVlPs6azrvOtc6vz4POuc68zr88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyIiBuYW1lPSJBdXRoRXJyb3IiPgorICAgIDx2YWx1ZT7Oo8+GzqzOu868zrEgzpTOtc60zr/OvM6tzr3Pic69IM6VzrnPg8+MzrTOv8+FPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMyIgbmFtZT0ibWluNHVzZXJuYW1lIj4KKyAgICA8dmFsdWU+NCDOriDOoM61z4HOuc+Dz4PPjM+EzrXPgc6/zrkgzqfOsc+BzrHOus+Ezq7Pgc61z4I6IM6gz4HOv86yzrvOrs68zrHPhM6xIM6azrHPhM6xz4fPjs+BzrfPg863z4IgzrzOtSDOms61z4bOsc67zrHOr86xIM6Tz4HOrM68zrzOsc+EzrEhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNCIgbmFtZT0ibWluNHBhc3MiPgorICAgIDx2YWx1ZT7OnyDOms+JzrTOuc66z4zPgiDOp8+Bzq7Pg8+Ezrcgz4DPgc6tz4DOtc65IM69zrEgz4DOtc+BzrnOrc+HzrXOuSDPhM6/z4XOu86sz4fOuc+Dz4TOv869IDQgzqfOsc+BzrHOus+Ezq7Pgc61z4IhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNSIgbmFtZT0idXNlcm5hbWV0YWtlbiI+CisgICAgPHZhbHVlPs6kzr8gz4PPhc6zzrrOtc66z4HOuc68zq3Ovc6/IM6Mzr3Ov868zrEgzqfPgc6uz4PPhM63IM6tz4fOtc65IM61z4DOuc67zrXOs861zq8gzq7OtM63ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYiIG5hbWU9ImVtYWlsdGFrZW4iPgorICAgIDx2YWx1ZT7OpM6/IM+Dz4XOs866zrXOus+BzrnOvM6tzr3OvyBFbWFpbCDOrc+HzrXOuSDOus6xz4TOsc+Hz4nPgc63zrjOtc6vIM6uzrTOtyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3IiBuYW1lPSJlbWFpbHRha2VuIj4KKyAgICA8dmFsdWU+zqPPhs6szrvOvM6xIM6jz4XPg8+Ezq7OvM6xz4TOv8+COiDOoM6xz4HOsc66zrHOu86/z43OvM61IM61z4DOuc66zr/Ouc69z4nOvc6uz4PPhM61IM68zrUgz4TOv8+Fz4IgzpTOuc6xz4fOtc65z4HOuc+Dz4TOrc+CIM6jz4XPg8+Ezq7OvM6xz4TOv8+CITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgiIG5hbWU9IkF1dGhsb2dpbiI+CisgICAgPHZhbHVlPkxvZ2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOSIgbmFtZT0iQXV0aHVzZXIiPgorICAgIDx2YWx1ZT7Op8+Bzq7Pg8+EzrfPgiDOriBFbWFpbDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwIiBuYW1lPSJBdXRocGFzcyI+CisgICAgPHZhbHVlPs6az4nOtM65zrrPjM+COjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEiIG5hbWU9IkF1dGhsYW5nIj4KKyAgICA8dmFsdWU+zpPOu8+Oz4PPg86xPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMiIgbmFtZT0iQXV0aHJlZyI+CisgICAgPHZhbHVlPs6jz43Ovc60zrXPg863PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMyIgbmFtZT0icmVnZm9ybWhlYWQiPgorICAgIDx2YWx1ZT7Olc6zzrPPgc6xz4bOrjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQiIG5hbWU9InJlZ2Zvcm11c2VyIj4KKyAgICA8dmFsdWU+zqfPgc6uz4PPhM63z4I6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNSIgbmFtZT0icmVnZm9ybXBhc3MiPgorICAgIDx2YWx1ZT7Oms+JzrTOuc66z4zPgjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2IiBuYW1lPSJyZWdmb3JtcmV0eXBlIj4KKyAgICA8dmFsdWU+zpXPgM6xzr0uIM6az4nOtM65zrrOv8+NOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTciIG5hbWU9InJlZ2Zvcm1maXJzdG5hbWUiPgorICAgIDx2YWx1ZT7OjM69zr/OvM6xOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgiIG5hbWU9InJlZ2Zvcm1sYXN0bmFtZSI+CisgICAgPHZhbHVlPs6Vz4DPjs69z4XOvM6/OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkiIG5hbWU9InJlZ2Zvcm1tYWlsIj4KKyAgICA8dmFsdWU+RW1haWw6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMCIgbmFtZT0icmVnZm9ybXN0YXRlIj4KKyAgICA8dmFsdWU+zqfPjs+BzrE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMSIgbmFtZT0icmVnZm9ybWJ0bjEiPgorICAgIDx2YWx1ZT7Oms6xz4TOsc+Hz47Pgc63z4POtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIiIG5hbWU9InJlZ2Zvcm1idG4yIj4KKyAgICA8dmFsdWU+zpHOus+Nz4HPic+Dzrc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzIiBuYW1lPSJBdXRoYnRuMiI+CisgICAgPHZhbHVlPs6UzrXOvSDOtc6vz4PPhM61IM6czq3Ou86/z4I7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+zpHPgc+HzrnOus6uIM6jzrXOu86vzrTOsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUiIG5hbWU9InVzZXJhZG1pbiI+CisgICAgPHZhbHVlPs6nz4HOrs+Dz4TOtc+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNiIgbmFtZT0iZ3JvdXBhZG1pbiI+CisgICAgPHZhbHVlPs6fzrzOrM60zrXPgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjciIG5hbWU9Im9yZ2FkbWluIj4KKyAgICA8dmFsdWU+zp/Pgc6zzrHOvc65z4POvM6/zq88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4IiBuYW1lPSJoZWFkY29uZiI+CisgICAgPHZhbHVlPs6Uz4nOvM6sz4TOuc6xIM6jz4XOvc6xzr3PhM6uz4POtc+Jzr08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5IiBuYW1lPSJjb25mX3B1YiI+CisgICAgPHZhbHVlPs6azr/Ouc69z4w8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwIiBuYW1lPSJoZWFkX29yZyI+CisgICAgPHZhbHVlPs6fz4HOs86xzr3Ouc+DzrzPjM+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMSIgbmFtZT0iYnRuX2VudGVycm9vbSI+CisgICAgPHZhbHVlPs6Vzq/Pg86/zrTOv8+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMiIgbmFtZT0idXNlcmFsdGVyc2VsZl9sb2dpbiI+CisgICAgPHZhbHVlPkxvZ2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMyIgbmFtZT0idXNlcmFsdGVyc2VsZl9wYXNzIj4KKyAgICA8dmFsdWU+zprPic60zrnOus+Mz4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Bhc3NyZXR5cGUiPgorICAgIDx2YWx1ZT7Olc+AzrHOvS4gzprPic60zrnOus6/z408L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2ZpcnN0bmFtZSI+CisgICAgPHZhbHVlPs6Mzr3Ov868zrE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2xhc3RuYW1lIj4KKyAgICA8dmFsdWU+zpXPgM+Ozr3Phc68zr88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2VtYWlsIj4KKyAgICA8dmFsdWU+RW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2JpcnRoIj4KKyAgICA8dmFsdWU+zpPOtc69zq3OuM67zrnOsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkiIG5hbWU9InVzZXJhbHRlcnNlbGZfc3RyZWV0bm8iPgorICAgIDx2YWx1ZT7On860z4zPgi/Okc+BzrnOuM68z4zPgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDAiIG5hbWU9InVzZXJhbHRlcnNlbGZfdG93biI+CisgICAgPHZhbHVlPs6kLs6aLi/OoM+MzrvOtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDEiIG5hbWU9InVzZXJhbHRlcnNlbGZfc3RhdGUiPgorICAgIDx2YWx1ZT7Op8+Oz4HOsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIiIG5hbWU9InVzZXJhbHRlcnNlbGZfYWRyZXNzY29tbWVudCI+CisgICAgPHZhbHVlPs6UzrnOtc+NzrjPhc69z4POtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMiIG5hbWU9InVzZXJhbHRlcnNlbGZfaGVhZGVyIj4KKyAgICA8dmFsdWU+zqPPhM6/zrnPh861zq/OsSDOp8+Bzq7Pg8+Ezrc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0IiBuYW1lPSJzYXZlbWVudWJhcl9zYXZlbGFiZWwiPgorICAgIDx2YWx1ZT7Okc+Azr/OuM6uzrrOtc+Fz4POtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUiIG5hbWU9InNhdmVtZW51YmFyX3NhdmVsYWJlbCI+CisgICAgPHZhbHVlPs6Rz4DOv864zq7Ous61z4XPg863PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NiIgbmFtZT0iYWRtaW5fdXNlcmxpc3RfdXNlcl9pZCI+CisgICAgPHZhbHVlPklEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NyIgbmFtZT0iYWRtaW5fdXNlcmxpc3RfbG9naW4iPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgiIG5hbWU9ImFkbWluX3VzZXJsaXN0X2ZpcnN0bmFtIj4KKyAgICA8dmFsdWU+zozOvc6/zrzOsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkiIG5hbWU9ImFkbWluX3VzZXJsaXN0X2xhc3RuYW1lIj4KKyAgICA8dmFsdWU+zpXPgM+Ozr3Phc68zr88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwIiBuYW1lPSJ0dXJub3Zlcmxpc3RfbmV4dCI+CisgICAgPHZhbHVlPs6Vz4DPjM68zrXOvc6/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MSIgbmFtZT0idHVybm92ZXJsaXN0X3ByZSI+CisgICAgPHZhbHVlPs6gz4HOv863zrPOv8+NzrzOtc69zr88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyIiBuYW1lPSJzYXZlY29udGVudF9jb25maXJtIj4KKyAgICA8dmFsdWU+zpTOuc6xzrPPgc6xz4bOriDOlc6zzrPPgc6xz4bOrs+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MyIgbmFtZT0ic2F2ZWNvbnRlbnRfY29uZmlybV9jYW5jZWxfYnRuIj4KKyAgICA8dmFsdWU+zpHOus+Nz4HPic+Dzrc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU0IiBuYW1lPSJzYXZlY29udGVudF9jb25maXJtX2NvbmZpcm1fYnRuIj4KKyAgICA8dmFsdWU+zpTOuc6xzrPPgc6xz4bOrjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTUiIG5hbWU9InNhdmVtZW51YmFyX2FkZGxhYmVsIj4KKyAgICA8dmFsdWU+zp3Orc6xIM6VzrPOs8+BzrHPhs6uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NiIgbmFtZT0ic2F2ZW1lbnViYXJfcmVsb2FkbGFiZWwiPgorICAgIDx2YWx1ZT7Okc69zrHOvc6tz4nPg863IM6VzrPOs8+BzrHPhs6uz4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU3IiBuYW1lPSJzYXZlbWVudWJhcl9kZWxldGVsYWJlbCI+CisgICAgPHZhbHVlPs6UzrnOsc6zz4HOsc+Gzq4gzpXOs86zz4HOsc+Gzq7PgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTgiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9zdGF0dXMiPgorICAgIDx2YWx1ZT7Oms6xz4TOrM+Dz4TOsc+Dzrc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU5IiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fc3RhdHVzSXRlbSI+CisgICAgPHZhbHVlPs6Rz4DOtc69zrXPgc6zzr/PgM6/zrnOt868zq3Ovc63PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2MCIgbmFtZT0idXNlcmFsdGVyX2FkbWluX3N0YXR1c0l0ZW0iPgorICAgIDx2YWx1ZT7Olc69zrXPgc6zzr/PgM6/zrnOt868zq3Ovc63PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2MSIgbmFtZT0idXNlcmFsdGVyX2FkbWluX29yZ2FuaXNhdGlvbiI+CisgICAgPHZhbHVlPs6fz4HOs86xzr3Ouc+DzrzOv86vPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2MiIgbmFtZT0iY2FsZW5kYXJfaWNvbmxhYmVsIj4KKyAgICA8dmFsdWU+zpfOvM61z4HOv867z4zOs865zr88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYzIiBuYW1lPSJzYXZld2luZG93X2J0biI+CisgICAgPHZhbHVlPs6azrvOtc6vz4POuc68zr88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY0IiBuYW1lPSJvcmdhbmlzYXRpb250YWJsZWxpc3RfaWRyb3ciPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjUiIG5hbWU9Im9yZ2FuaXNhdGlvbnRhYmxlbGlzdF9uYW1lcm93Ij4KKyAgICA8dmFsdWU+zozOvc6/zrzOsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjYiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGlkMSI+CisgICAgPHZhbHVlPs6nz4HOrs+Dz4TOt8+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2NyIgbmFtZT0idXNlcnZhbHVlX2xldmVsaWQyIj4KKyAgICA8dmFsdWU+zqPPhc69z4TOv869zrnPg8+Ezq7PgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjgiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGlkMyI+CisgICAgPHZhbHVlPs6UzrnOsc+HzrXOuc+BzrnPg8+Ezq7PgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjkiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGxhYmVsIj4KKyAgICA8dmFsdWU+zpXPgM6vz4DOtc60zr8gzqfPgc6uz4PPhM63PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MCIgbmFtZT0ib3JndmFsdWVfaGVhZGVyIj4KKyAgICA8dmFsdWU+zp/Pgc6zzrHOvc65z4POvM+Mz4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTcxIiBuYW1lPSJvcmd2YWx1ZV9vcmduYW1lIj4KKyAgICA8dmFsdWU+zozOvc6/zrzOsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzIiIG5hbWU9Im9yZ3ZhbHVlX29yZ25hbWUiPgorICAgIDx2YWx1ZT7OoM+Bzr/Pg864zq7Ous63IM6fz4HOs86xzr3Ouc+DzrzOv8+NPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MyIgbmFtZT0ib3JndmFsdWVfb3JnbmFtZSI+CisgICAgPHZhbHVlPs6gz4HOv8+DzrjOrs66zrcgzp/Pgc6zzrHOvc65z4POvM6/z408L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc0IiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luIj4KKyAgICA8dmFsdWU+zpHOus+Nz4HPic+Dzrc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc1IiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luIj4KKyAgICA8dmFsdWU+zqDPgc6/z4POuM6uzrrOtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzYiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW4iPgorICAgIDx2YWx1ZT7Okc+GzrHOr8+BzrXPg863IM6fz4HOs86xzr3Ouc+DzrzOv8+NPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3NyIgbmFtZT0ib3JndmFsdWVfdXNlcmxpc3QiPgorICAgIDx2YWx1ZT7Op8+Bzq7Pg8+EzrfPgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzgiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJsaXN0YWRkIj4KKyAgICA8dmFsdWU+zqDPgc6/z4POuM6uzrrOtyDOp8+Bzq7Pg8+Ezrc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc5IiBuYW1lPSJvcmd2YWx1ZV91c2VybGlzdGRlbGV0ZSI+CisgICAgPHZhbHVlPs6UzrnOsc6zz4HOsc+Gzq4gzqfPgc6uz4PPhM63PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4MCIgbmFtZT0ib3JndmFsdWVfdXNlcndpbmhlYWRlciI+CisgICAgPHZhbHVlPs6gz4HOv8+DzrjOrs66zrcgzqfPgc6uz4PPhM63IM+DzrUgzp/Pgc6zzrHOvc65z4POvM+MPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4MSIgbmFtZT0ib3JndmFsdWVfdXNlcndpbnNlYXJjaGZpZWxkIj4KKyAgICA8dmFsdWU+zpXPjc+BzrXPg863IM6nz4HOrs+Dz4TOtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODIiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5zZWFyY2hidG4iPgorICAgIDx2YWx1ZT7Olc+Nz4HOtc+Dzrc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgzIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luc2VhcmNocmVzdWx0Ij4KKyAgICA8dmFsdWU+zqfPgc6uz4PPhM63z4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg0IiBuYW1lPSJsb2dpbndpbl9jaG9vc2VvcmdhbmlzYXRpb24iPgorICAgIDx2YWx1ZT7On8+BzrPOsc69zrnPg868z4zPgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODUiIG5hbWU9ImxvZ2lud2luX2Nob29zZW9yZ2FuaXNhdGlvbmJ0biI+CisgICAgPHZhbHVlPs6Vzq/Pg86/zrTOv8+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NiIgbmFtZT0ibmF2aV9yb29tYWRtaW4iPgorICAgIDx2YWx1ZT7OlM+JzrzOrM+EzrnOsSDOo8+Fzr3OtM65zrHPg866zq3PiM61z4nOvTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODciIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT7OlM+JzrzOrM+EzrnOvyDOo8+Fzr3OtM65zqzPg866zq3PiM61z4nOvTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODgiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT7Okc+BzrnOuM68z4zPgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODkiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT7OjM69zr/OvM6xPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5MCIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPs6UzrfOvM+Mz4POuc6/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5MSIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPs6fz4HOs86xzr3Ouc+DzrzOv86vPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5MiIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPs6Uz4nOvM6sz4TOuc6xIM6jz4XOvc6xzr3PhM6uz4POtc+Jzr08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkzIiBuYW1lPSJyb29tdmFsdWVfbmFtZSI+CisgICAgPHZhbHVlPs6Mzr3Ov868zrE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk0IiBuYW1lPSJyb29tdmFsdWVfdHlwZSI+CisgICAgPHZhbHVlPs6kz43PgM6/z4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk1IiBuYW1lPSJyb29tdmFsdWVfaXNwdWJsaWMiPgorICAgIDx2YWx1ZT7OlM63zrzPjM+DzrnOvzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTYiIG5hbWU9InJvb212YWx1ZV9jb21tZW50Ij4KKyAgICA8dmFsdWU+zqPPh8+MzrvOuc6/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NyIgbmFtZT0id2hpdGVib2FyZF9zYXZlaWNvbiI+CisgICAgPHZhbHVlPs6Rz4DOv864zq7Ous61z4XPg863IM66zrHOuSDOlc6+zrHOs8+JzrPOrjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTgiIG5hbWU9IndoaXRlYm9hcmRfb3Blbmljb24iPgorICAgIDx2YWx1ZT7Ops+Mz4HPhM+Jz4POtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTkiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2luaGVhZGVyIj4KKyAgICA8dmFsdWU+zpHPgM6/zrjOrs66zrXPhc+Dzrcgz4nPgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDAiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2ludGV4dCI+CisgICAgPHZhbHVlPs6Mzr3Ov868zrEgzpHPgc+HzrXOr86/z4U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAxIiBuYW1lPSJmaWxlcyI+CisgICAgPHZhbHVlPs6Mzr3Ov868zrEgzpHPgc+HzrXOr86/z4U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAyIiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbmJ0bjEiPgorICAgIDx2YWx1ZT7Okc66z43Pgc+Jz4POtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDMiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2luYnRuMiI+CisgICAgPHZhbHVlPs6Rz4DOv864zq7Ous61z4XPg863PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNCIgbmFtZT0icnBjZXJyb3J3aW5faGVhZGVyIj4KKyAgICA8dmFsdWU+zpzOrs69z4XOvM6xPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNSIgbmFtZT0ibG9hZHdtbF9oZWFkZXIiPgorICAgIDx2YWx1ZT7Ops+Mz4HPhM+Jz4POtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDYiIG5hbWU9ImxvYWR3bWxfbWVzc3Nsb2FkIj4KKyAgICA8dmFsdWU+zqTOsSDOkc69z4TOuc66zrXOr868zrXOvc6xIM6mzr/Pgc+Ez47OuM63zrrOsc69IM68zrUgzpXPgM65z4TPhc+Hzq/OsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDciIG5hbWU9ImxvYWR3bWxfbWVzc3N5bmMiPgorICAgIDx2YWx1ZT7Oo8+FzrPPh8+Bzr/Ovc65z4POvM+Mz4Igz4DOtc67zrHPhM+Ozr0uIM6gzrXOu86sz4TOtc+CIM+Az4HOv8+CIM6Rzr3Osc68zr/Ovc6uOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDgiIG5hbWU9ImxvYWRpbWFnZV9tZXNzbG9hZCI+CisgICAgPHZhbHVlPs6mz4zPgc+Ez4nPg863IM6UzrXOtM6/zrzOrc69z4nOvSDOlc65zrrPjM69zrHPgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDkiIG5hbWU9ImxvYWRpbWFnZV9tZXNzc3luYyI+CisgICAgPHZhbHVlPs6jz4XOs8+Hz4HOv869zrnPg868z4zPgiDPgM61zrvOsc+Ez47OvS4gzqDOtc67zqzPhM61z4Igz4DPgc6/z4IgzpHOvc6xzrzOv869zq46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMCIgbmFtZT0ibG9hZHdtbF9jb25maXJtaGVhZGVyIj4KKyAgICA8dmFsdWU+zpXOus66zrHOuM6sz4HOuc+DzrcgzqDOtc+BzrnOv8+Hzq7PgiDOo8+HzrXOtM6vzrHPg863z4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjExIiBuYW1lPSJsb2Fkd21sX2NvbmZpcm1tZXNzIj4KKyAgICA8dmFsdWU+zpXOus66zrHOuM6sz4HOuc+DzrcgzqDOtc+BzrnOv8+Hzq7PgiDOo8+HzrXOtM6vzrHPg863z4I6IM6MzrvOsSDPhM6xIM60zrXOtM6/zrzOrc69zrEgz4TOv8+FIM6gzq/Ovc6xzrrOsSDOuM6xIM+HzrHOuM6/z43OvSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEyIiBuYW1lPSJsb2Fkd21sX2NvbmZpcm1tZXNzMiI+CisgICAgPHZhbHVlPs6dzrEgzrbOt8+EzrXOr8+EzrHOuSDOlc+AzrnOss61zrLOsc6vz4nPg863IM+Az4HOuc69IM6xz4DPjCDPhM63zr0gzqbPjM+Bz4TPic+DzrcgzpHPgc+HzrXOr86/z4U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEzIiBuYW1lPSJzZW5kX2ludml0YXRpb25fYnRuIj4KKyAgICA8dmFsdWU+zpHPgM6/z4PPhM6/zrvOriDOoM+Bz4zPg866zrvOt8+DzrfPgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTQiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT7Okc+Azr/Pg8+Ezr/Ou86uIM6gz4HPjM+DzrrOu863z4POt8+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNSIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX3N1YmplY3QiPgorICAgIDx2YWx1ZT7OmM6tzrzOsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTYiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9yZWNpcGllbnQiPgorICAgIDx2YWx1ZT7OoM6xz4HOsc67zq7PgM+EzrfPgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTciIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9tZXNzYWdlIj4KKyAgICA8dmFsdWU+zpzOrs69z4XOvM6xPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxOCIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX2J0bl9jb25maXJtIj4KKyAgICA8dmFsdWU+zpHPgM6/z4PPhM6/zrvOrjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTkiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9idG5fY2FuY2VsIj4KKyAgICA8dmFsdWU+zpHOus+Nz4HPic+Dzrc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIwIiBuYW1lPSJzZW5kX2NoYXRfdGV4dF9idG4iPgorICAgIDx2YWx1ZT5Bz4DOv8+Dz4TOv867zq48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIxIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5faGVhZGVyIj4KKyAgICA8dmFsdWU+zqPPhM6/zrnPh861zq/OsSDOp8+Bzq7Pg8+Ezrc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIyIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fc3ViamVjdCI+CisgICAgPHZhbHVlPs6ozrXPhc60z47Ovc+FzrzOvyDOs865zrEgzrHPhc+Ezq7OvSDPhM63IM6jz4XOvc60zrnOrM+DzrrOtc+Izrc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIzIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fbG9naW4iPgorICAgIDx2YWx1ZT7OqM61z4XOtM+Ozr3Phc68zr88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI0IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZmlyc3RuYW1lIj4KKyAgICA8dmFsdWU+zozOvc6/zrzOsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjUiIG5hbWU9Imludml0ZWRfdXNlcndpbl9sYXN0bmFtZSI+CisgICAgPHZhbHVlPs6Vz4DPjs69z4XOvM6/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNiIgbmFtZT0iaW52aXRlZF91c2Vyd2luX21haWwiPgorICAgIDx2YWx1ZT5FbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjciIG5hbWU9Imludml0ZWRfdXNlcndpbl9sYW5nIj4KKyAgICA8dmFsdWU+zpPOu8+Oz4PPg86xPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyOCIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2VudGVyIj4KKyAgICA8dmFsdWU+zpXOr8+Dzr/OtM6/z4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI5IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZW50ZXIiPgorICAgIDx2YWx1ZT7Ops+Mz4HPhM+Jz4POtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzAiIG5hbWU9Imludml0ZWRfdXNlcndpbl9lbnRlciI+CisgICAgPHZhbHVlPs6mz4zPgc+Ez4nPg863IM6UzrXOtM6/zrzOrc69z4nOvTogzqDOsc+BzrHOus6xzrvOv8+NzrzOtSDPgM61z4HOuc68zq3Ovc61z4TOtSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMxIiBuYW1lPSJ1c2VyX3JlZ2lzdGVyRmFsc2VQV0QiPgorICAgIDx2YWx1ZT7Om86szrjOv8+CIM6az4nOtM65zrrPjM+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMiIgbmFtZT0idXNlcl9yZWdpc3RlckZhbHNlUFdESGVhZGVyIj4KKyAgICA8dmFsdWU+zqDOsc+BzrHOus6xzrvOv8+NzrzOtSDOtc65z4POrM6zzrXPhM61IM60z43OvyDPgM6xzr3Ov868zr/Ouc+Mz4TPhc+Azr/Phc+CIM6az4nOtM65zrrOv8+Nz4Igz4TOv8+FzrvOrM+HzrnPg8+Ezr/OvSA2IM6nzrHPgc6xzrrPhM6uz4HPic69ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzMiIG5hbWU9InVzZXJfcmVnaXN0ZXJNYWlsRXJyb3IiPgorICAgIDx2YWx1ZT7Om86szrjOv8+CIEVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzNCIgbmFtZT0idXNlcl9yZWdpc3Rlck1haWxFcnJvckhlYWRlciI+CisgICAgPHZhbHVlPs6czrcgzojOs866z4XPgc63IM6UzrnOtc+NzrjPhc69z4POtyBFbWFpbCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM1IiBuYW1lPSJ1c2VyX3JlZ2lzdGVyU3VjY2VzcyI+CisgICAgPHZhbHVlPs6XIEvOsc+EzrHPh8+Oz4HOt8+DzrcgT867zr/Ous67zrfPgc+OzrjOt866zrU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM2IiBuYW1lPSJ1c2VyX3JlZ2lzdGVyU3VjY2Vzc0hlYWRlciI+CisgICAgPHZhbHVlPs6fIM6bzr/Os86xz4HOuc6xz4POvM+Mz4Igz4POsc+CIM60zrfOvM65zr/Phc+BzrPOrs64zrfOus61IM68zrUgzrXPgM65z4TPhc+Hzq/OsS4gzqTPjs+BzrEgzrzPgM6/z4HOtc6vz4TOtSDOvc6xIM+Dz4XOvc60zrXOuM61zq/PhM61LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzciIG5hbWU9InVzZXJfc2hhcmluZ19tZXNzYWdlIj4KKyAgICA8dmFsdWU+zpTOtc69IM68z4DOv8+BzrXOr8+EzrUgzr3OsSDOvM6/zrnPgc6xz4PPhM61zq/PhM61IM+EzrfOvSDOn864z4zOvc63IM+DzrHPgiDOsc+Fz4TOriDPhM63IM+Dz4TOuc6zzrzOriEgzprOrM+Azr/Ouc6/z4IgzqzOu867zr/PgiDOvM6/zrnPgc6szrbOtc+EzrHOuSDOrs60zrcgz4TOt869IM60zrnOus6uIM+Ezr/PhS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM4IiBuYW1lPSJ1c2VyX3NoYXJpbmdfbWVzc2FnZUhlYWRlciI+CisgICAgPHZhbHVlPs6UzrnOsc68zr/Or8+BzrHPg863IM6Rz4DOsc6zzr/Pgc61z4XOvM6tzr3OtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzkiIG5hbWU9InVzZXJfZG9TdGFydFNjcmVlblZpZXdlciI+CisgICAgPHZhbHVlPs6UzrnOsc68zr/Or8+BzrHPg863IM6fzrjPjM69zrfPgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDAiIG5hbWU9InNjcmVlbl93YXJuQmFuZHdpZHRoIj4KKyAgICA8dmFsdWU+zprOsc66z4wgQmFuZHdpZHRoOiDOlM61zr0gzrzPgM6/z4HOrc+DzrHPhM61IM69zrEgz4PPhc6zz4fPgc6/zr3Or8+DzrXPhM61IM+EzrfOvSDOn864z4zOvc63LiDOms6sz4DOv865zrEgz4DOu86xzq/Pg865zrEgzrjOsSDPh86xzrjOv8+Nzr0uIM6Rzr0gzrHPhc+Ezq4gzrcgzrXOuc60zr/PgM6/zq/Ot8+DzrcgzrXOvM+GzrHOvc6vzrbOtc+EzrHOuSDPg8+Fz4fOvc6sIM68z4DOv8+BzrXOr8+EzrUgzr3OsSDOts63z4TOrs+DzrXPhM61IM+Dz4TOvyDPg8+Fzr3PhM6/zr3Ouc+Dz4TOriDOvc6xIM68zrXOuc+Oz4POtc65IM+EzrfOvSDOoM6/zrnPjM+EzrfPhM6xLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDEiIG5hbWU9InNjcmVlbl91c2VybGFiZWwiPgorICAgIDx2YWx1ZT7On864z4zOvc63IM+Ezr/PhTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQyIiBuYW1lPSJ3aGl0ZWJvYXJkX3RhYl9wYWludCI+CisgICAgPHZhbHVlPs6Wz4nOs8+BzrHPhs65zrrOrjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDMiIG5hbWU9IndoaXRlYm9hcmRfdGFiX2RvY3VtZW50Ij4KKyAgICA8dmFsdWU+zojOs86zz4HOsc+GzrE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ0IiBuYW1lPSJ0YWJiYXJfY2hhdGljb24iPgorICAgIDx2YWx1ZT7Oo8+Fzr3Ov868zrnOu86vzrE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ1IiBuYW1lPSJ0YWJiYXJfZmlsZXNpY29uIj4KKyAgICA8dmFsdWU+zpHPgc+HzrXOr86xPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0NiIgbmFtZT0idGFiYmFyX3BhcnRpY2lwYW50c2ljb24iPgorICAgIDx2YWx1ZT7OnM6tzrvOtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDciIG5hbWU9InN3ZnByZXNlbnRhdGlvbl9saXN0c2F2ZW9yaWciPgorICAgIDx2YWx1ZT7Okc+Azr/OuM6uzrrOtc+Fz4POtyDOk869zq7Pg865zr/PhSDOlc6zzrPPgc6sz4bOv8+FPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0OCIgbmFtZT0ic3dmcHJlc2VudGF0aW9uX2xpc3RzYXZlcGRmIj4KKyAgICA8dmFsdWU+zpHPgM6/zrjOrs66zrXPhc+DzrcgcGRmIM6VzrPOs8+BzqzPhs6/z4U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ5IiBuYW1lPSJzd2ZwcmVzZW50YXRpb25fbGlzdGxvYWRzd2YiPgorICAgIDx2YWx1ZT7Ops+Mz4HPhM+Jz4POtyDOoM6xz4HOv8+Fz4POr86xz4POt8+CIM+Dz4TOv869IM6gzq/Ovc6xzrrOsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTAiIG5hbWU9Im5hdmltYWluX2NvbmZpZyI+CisgICAgPHZhbHVlPs6UzrnOsc68z4zPgc+Gz4nPg863PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MSIgbmFtZT0id2hpdGVib2FyZF9ib3VuZGluZ2JveF9kcmFnIj4KKyAgICA8dmFsdWU+zqPPjc+BzrXPhM61IM+Ezr8gzpHOvc+EzrnOus61zq/OvM61zr3OvzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTIiIG5hbWU9IndoaXRlYm9hcmRfYm91bmRpbmdib3hfcmVzaXplIj4KKyAgICA8dmFsdWU+zpHOu867zqzOvs+EzrUgz4TOvyDOvM6tzrPOtc64zr/PgiDPhM6/z4UgzpHOvc+EzrnOus61zrnOvM6tzr3Ov8+FPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MyIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfem9vbSI+CisgICAgPHZhbHVlPiU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU0IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9zbGlkZSI+CisgICAgPHZhbHVlPs6xz4DPjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTUiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX2ZpcnN0c2xpZGUiPgorICAgIDx2YWx1ZT7OnM61z4TOsc+Gzr/Pgc6sIM+Dz4TOt869IM6gz4HPjs+EzrcgzqPOtc67zq/OtM6xPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1NiIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfcHJlc2xpZGUiPgorICAgIDx2YWx1ZT7OnM61z4TOsc+Gzr/Pgc6sIM+Dz4TOt869IM6gz4HOv863zrPOv8+NzrzOtc69zrcgzqPOtc67zq/OtM6xPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1NyIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfbmV4dHNsaWRlIj4KKyAgICA8dmFsdWU+zpzOtc+EzrHPhs6/z4HOrCDPg8+EzrfOvSDOlc+Az4zOvM61zr3OtyDOo861zrvOr860zrE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU4IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9sYXN0c2xpZGUiPgorICAgIDx2YWx1ZT7OnM61z4TOsc+Gzr/Pgc6sIM+Dz4TOt869IM6kzrXOu861z4XPhM6xzq/OsSDOo861zrvOr860zrE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU5IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl96b29tbWludXMiPgorICAgIDx2YWx1ZT7Olc+Dz4TOr86xz4POtyAtLTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjAiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3pvb21wbHVzIj4KKyAgICA8dmFsdWU+zpXPg8+Ezq/Osc+DzrcgKys8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYxIiBuYW1lPSJzYWx1dGF0aW9uX21yIj4KKyAgICA8dmFsdWU+zprOv8+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MiIgbmFtZT0ic2FsdXRhdGlvbl9taXNzIj4KKyAgICA8dmFsdWU+zprOsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjMiIG5hbWU9Im5hdmltYWluX2NvbmZhZG1pbiI+CisgICAgPHZhbHVlPs6UzrnOsc68z4zPgc+Gz4nPg863PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2NCIgbmFtZT0iY29uZnRhYmxlX2hlYWRlcklkIj4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY1IiBuYW1lPSJjb25mdGFibGVfaGVhZGVya2V5Ij4KKyAgICA8dmFsdWU+zprOu861zrnOtM6vPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2NiIgbmFtZT0iY29uZmFkbWluZm9ybV9oZWFkZXIiPgorICAgIDx2YWx1ZT7OlM65zrHOvM+Mz4HPhs+Jz4POtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjciIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWxrZXkiPgorICAgIDx2YWx1ZT7Oms67zrXOuc60zq88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY4IiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsdXBkYXRlZCI+CisgICAgPHZhbHVlPs6kzrXOu861z4XPhM6xzq/OsSDOpM+Bzr/PgM6/z4DOv86vzrfPg863PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2OSIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbHVwZGF0ZWRieSI+CisgICAgPHZhbHVlPs6kz4HOv8+Azr/PgM6/zrnOt868zq3Ovc6/IM6xz4DPjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzAiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWxjb21tZW50Ij4KKyAgICA8dmFsdWU+zqPPh8+MzrvOuc6/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MSIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbGtleSI+CisgICAgPHZhbHVlPs6kzrnOvM6uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MiIgbmFtZT0idHVybm92ZXJsaXN0X21heHJlc3VsdHMiPgorICAgIDx2YWx1ZT7Osc+Az4w8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjczIiBuYW1lPSJvcmdhbmlzYXRpb25fdXNlcnNoZWFkZXIiPgorICAgIDx2YWx1ZT7Op8+Bzq7Pg8+EzrXPgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzQiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2ljb25kZWxldGUiPgorICAgIDx2YWx1ZT7OlM65zrHOs8+BzrHPhs6uIM6nz4HOrs+Dz4TOtyDOsc+Az4wgzp/Pgc6zzrHOvc65z4POvM+MPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NSIgbmFtZT0ib3JnYW5pc2F0aW9uX3VzZXJzZGVsZXRlZGhlYWQiPgorICAgIDx2YWx1ZT7OlDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzYiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2FscmVhZGFkZGVkIj4KKyAgICA8dmFsdWU+zp8gzqfPgc6uz4PPhM63z4IgzrXOr869zrHOuSDOrs60zrcgzpzOrc67zr/PgiDPhM6/z4Ugz4PPhc6zzrrOtc66z4HOuc68zq3Ovc6/z4Ugzp/Pgc6zzrHOvc65z4POvM6/z40hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NyIgbmFtZT0iZGFzaGJvYXJkX25ld3NoZWFkZXIiPgorICAgIDx2YWx1ZT7Onc6tzrE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc4IiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rc2hlYWRlciI+CisgICAgPHZhbHVlPs6Tz4HOrs6zzr/Pgc6/zrkgzqPPjc69zrTOtc+DzrzOv865PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3OSIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua0NvbmYiPgorICAgIDx2YWx1ZT7Oo8+Fzr3OtM65zqzPg866zrXPiM63PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MCIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua0F1ZGl0Ij4KKyAgICA8dmFsdWU+zpHOvM+GzrnOuM6tzrHPhM+Bzr88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgxIiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rc3VwcG9ydCI+CisgICAgPHZhbHVlPs6Szr/Ors64zrXOuc6xIM66zrHOuSDOpc+Azr/Pg8+Ezq7Pgc65zr7OtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODIiIG5hbWU9ImRhc2hib2FyZF9xdWlja2hvbWVwYWdldXJsIj4KKyAgICA8dmFsdWU+aHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnLzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODMiIG5hbWU9ImRhc2hib2FyZF9xdWlja21haWxpbmdsaXN0dXJsIj4KKyAgICA8dmFsdWU+aHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnL21haWwtbGlzdHMuaHRtbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODQiIG5hbWU9ImRhc2hib2FyZF9yZXBvcnRidWdzIj4KKyAgICA8dmFsdWU+zpHOvc6xz4bOv8+BzqwgQnVnITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODUiIG5hbWU9ImRhc2hib2FyZF9yc3NsaXN0aXRlbWxpbmt0ZXh0Ij4KKyAgICA8dmFsdWU+zqDOtc+BzrnPg8+Dz4zPhM61z4HOsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODYiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtob21lcGFnZWxhYmVsIj4KKyAgICA8dmFsdWU+UHJvamVjdCBXZWJzaXRlIChodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4NyIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua21haWxpbmdsaXN0bGFiZWwiPgorICAgIDx2YWx1ZT7Om86vz4PPhM6xIM68zrUgRW1haWwgzqfPgc63z4PPhM+Ozr0gKGh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9tYWlsLWxpc3RzLmh0bWwpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4OCIgbmFtZT0ibG9naW5fcmVtZW1iZXJ1c2VyIj4KKyAgICA8dmFsdWU+zqXPgM61zr3OuM+NzrzOuc+DzrcgTG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg5IiBuYW1lPSJtYWluX25hdmkiPgorICAgIDx2YWx1ZT7OoM61z4HOuc61z4fPjM68zrXOvc6/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPs6XIM6Rz4HPh865zrrOriDOnM6/z4UgzqPOtc67zq/OtM6xPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MSIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPs6gz4HOv86zz4HOsc68zrzOsc+EzrnPg868zq3Ovc61z4IgzqPPhc69zrHOvc+Ezq7Pg861zrnPgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTIiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT7OoM+Bzr/Os8+BzrHOvM68zrHPhM65z4POvM6tzr3OsSDOo8+FzrzOss6szr3PhM6xPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MyIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPs6UzrfOvM+Mz4POuc61z4IgzqPPhc69zrHOvc+Ezq7Pg861zrnPgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTQiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT7Omc60zrnPic+EzrnOus6tz4IgzqPPhc69zrHOvc+Ezq7Pg861zrnPgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTUiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT7OlM63zrzPjM+DzrnOsSDOo8+FzrzOss6szr3PhM6xPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NiIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPs6ZzrTOuc+Jz4TOuc66zqwgzqPPhc68zrLOrM69z4TOsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTciIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT7OlM63zrzPjM+DzrnOvyDOoM61z4HOuc61z4fPjM68zrXOvc6/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5OCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPs6ZzrTOuc+Jz4TOuc66z4wgzqDOtc+BzrnOtc+Hz4zOvM61zr3OvzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTkiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT7OoM+Bzr/Pg8+Jz4DOuc66z4wgzqDOtc+BzrnOtc+Hz4zOvM61zr3OvzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDAiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAxIiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+zqPPhc69z4TOv869zrnPg868z4zPgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDIiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT7Okc6vz4TOt8+DzrcgzrPOuc6xIM6jz4XOvc+Ezr/Ovc65z4POvM+MPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMyIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPs6ozrfPhs6/z4bOv8+Bzq/Otc+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNCIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPs6Vz4DOuc67zr/Os86uIM6Rz4HPh861zq/Ov8+FPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNSIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPs6hz4XOuM68zq/Pg861zrnPgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDYiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT7Oms6szrzOtc+BzrEgJmFtcDsgzpzOuc66z4HPjM+Gz4nOvc6/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNyIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPs6gzq/Ovc6xzrrOsc+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwOCIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPs6Izr7Ov860zr/PgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDkiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT7OoM6vz4PPiSDPg8+EzrEgzpTPic68zqzPhM65zrE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEwIiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+TG9nb3V0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7Ons61z4fOrM+DzrHPhM61IM+Ezr/OvSDOms+JzrTOuc66z4wgz4POsc+CPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTIiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+zpHOu867zqzOvs+EzrUgzprPic60zrnOus+MPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMyIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7OnM6tz4PPiSBFbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTQiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+zpzOrc+Dz4kgTG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE1IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlRvIEVtYWlsIM6jzrHPgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTYiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+zqTOvyBMb2dpbiDOo86xz4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE3IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPs6Rz4DOv8+Dz4TOv867zq4gRW1haWwgzrzOtSDOo8+Nzr3OtM61z4POvM6/IM61zrogzr3Orc6/z4Ugz4HPjc64zrzOuc+DzrfPgiAocmVzZXQpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxOCIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7OlyDOtM65zrXPjc64z4XOvc+DzrcgRW1haWwgzrTOtc69IM6yz4HOrc64zrfOus61ISDOlc65z4POrM6zzrXPhM61IM+EzrfOvSDOr860zrnOsSDOtM65zrXPjc64z4XOvc+DzrcgRW1haWwgzrzOtSDOtc66zrXOr869zrfOvSDPgM6/z4Ugz4fPgc63z4POuc68zr/PgM6/zrnOrs+DzrHPhM61IM6zzrnOsSDPhM63IM60zrfOvM65zr/Phc+BzrPOr86xIM+Ezr/PhSDOm86/zrPOsc+BzrnOsc+DzrzOv8+NIM+DzrHPgi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE5IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPs6gzrHPgc6xzrrOsc67zr/Pjc68zrUgzrXOuc+DzqzOs861z4TOtSDOlM65zrXPjc64z4XOvc+DzrcgRW1haWwgzq4gzozOvc6/zrzOsSDOp8+Bzq7Pg8+Ezrc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIwIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPs6UzrXOvSDOss+Bzq3OuM63zrrOtSDOp8+Bzq7Pg8+EzrfPgiDPgM6/z4Ugzr3OsSDOsc69z4TOuc+Dz4TOv865z4fOtc6vIM+Dz4TOvyDPg8+FzrPOus61zrrPgc65zrzOrc69zr8gzozOvc6/zrzOsSDOp8+Bzq7Pg8+EzrchPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyMSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7OiM69zrEgbWFpbCDOvM61IM6VzrnOtM65zrrPjCDOo8+Nzr3OtM61z4POvM6/IM6tz4fOtc65IM+Dz4TOsc67zrXOryDPg8+EzrcgzrTOuc61z43OuM+Fzr3Pg863IEVtYWlsIM+DzrHPgi4gzqDOsc+BzrHOus6xzrvOv8+NzrzOtSDOtc67zq3Os86+z4TOtSDPhM6/IM+EzrHPh8+FzrTPgc6/zrzOtc6vzr8gz4POsc+CLiDOkc69IM60zrXOvSDOrc+HzrXPhM61IM67zqzOss61zrkgzrHOus+MzrzOsSBtYWlsLCDPgM6xz4HOsc66zrHOu86/z43OvM61IM+Az4HOv8+DzrHPgc68z4zPg8+EzrUgz4TOuc+CIM+Bz4XOuM68zq/Pg861zrnPgiBzcGFtIM+Ezr/PhSDPhM6xz4fPhc60z4HOv868zrXOr86/z4Ugz4POsc+CIM66zrHOuSDOtc+AzrHOvc6xzrvOrM6yzrHPhM61IM+EzrfOvSDOsc+Azr/Pg8+Ezr/Ou86uIM+Ezr/PhSBtYWlsIM6Vz4DOuc6yzrXOss6xzq/Pic+DzrfPgi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIyIiBuYW1lPSJlcnJvcnR5cGUiPgorICAgIDx2YWx1ZT7OnM6uzr3Phc68zrE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIzIiBuYW1lPSJlcnJvcnR5cGUiPgorICAgIDx2YWx1ZT7OnM6uzr3Phc68zrE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI0IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT7OnM63IM6IzrPOus+Fz4HOtyDOpM65zrzOriBIYXNoISDOlM61zr0gzrLPgc6tzrjOt866zrHOvSDOp8+Bzq7Pg8+EzrXPgi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI1IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT7Okc67zrvOrM6+z4TOtSDPhM6/zr0gzprPic60zrnOus+MIM+DzrHPgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjYiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPkxvZ2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNyIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+zpHOu867zrHOs86uIM6az4nOtM65zrrOv8+NPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyOCIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+zp3Orc6/z4IgzprPic60zrnOus+Mz4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI5IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT7Olc+AzrHOvc6szrvOt8+IzrcgzprPic60zrnOus6/z408L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMwIiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT7On865IM6az4nOtM65zrrOv86vIM+Azr/PhSDPgM67zrfOus+Ez4HOv867zr/Os86uz4POsc+EzrUgzrTOtc69IM61zq/Ovc6xzrkgzq/OtM65zr/OuSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMxIiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT40IM6uIM6gzrXPgc65z4PPg8+Mz4TOtc+Bzr/OuSDOp86xz4HOsc66z4TOrs+BzrXPgjogzqDPgc6/zrLOu86uzrzOsc+EzrEgzprOsc+EzrHPh8+Oz4HOt8+DzrfPgiDOvM61IM6azrXPhs6xzrvOsc6vzrEgzpPPgc6szrzOvM6xz4TOsSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMyIiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT7OnyDOms+JzrTOuc66z4zPgiDPgc+FzrjOvM6vz4PPhM63zrrOtS4gzqTPjs+BzrEgzrzPgM6/z4HOtc6vz4TOtSDOvc6xIM+Dz4XOvc60zrXOuM61zq/PhM61LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzMiIG5hbWU9InJwY2NhbGxiYWNrIj4KKyAgICA8dmFsdWU+zpXOvc+EzqzOvs61zrk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM0IiBuYW1lPSJycGNnZW5lcmFsZXJyb3IiPgorICAgIDx2YWx1ZT7Ohs6zzr3Pic+Dz4TOvyDOo8+GzqzOu868zrE6IM6gzrHPgc6xzrrOsc67zr/Pjc68zrUgzr3OsSDPhM6/IM6xzr3Osc+Gzq3Pgc61z4TOtSDPg8+EzrfOvSDOn868zqzOtM6xIM6Vzr7Phc+AzrfPgc6tz4TOt8+Dzq7PgiDPg86xz4IuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7OpM6/IM6Mzr3Ov868zrEgzqfPgc6uz4PPhM63IM60zrXOvSDOss+Bzq3OuM63zrrOtS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM2IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPs6czrcgzojOs866z4XPgc6/z4IgzprPic60zrnOus+Mz4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM3IiBuYW1lPSJsb2dvdXQiPgorICAgIDx2YWx1ZT7Olc+AzrnPhM+Fz4fOrs+CIM6Rz4DOv8+Dz43Ovc60zrXPg863PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzOCIgbmFtZT0icmVnaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+RnJvbnRlbmQgzpXOs86zz4HOsc+Gzq3PgiDOkc+AzrXOvc61z4HOs86/z4DOv865zrfOvM6tzr3Otc+CLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzkiIG5hbWU9InJlZ2lzdHJhdGlvbiI+CisgICAgPHZhbHVlPs6czrcgzojOs866z4XPgc6/IEVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MCIgbmFtZT0icmVnaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+zpXPgM6xzr3OrM67zrfPiM63IM6fzr3PjM68zrHPhM6/z4IgzpHPgc+HzrXOr86/z4U6IM6gzrHPgc6xzrrOsc67zr/Pjc68zrUgzrXPgM65zrvOrc6+z4TOtSDOtM65zrHPhs6/z4HOtc+EzrnOus+MIM6Mzr3Ov868zrEgzpHPgc+HzrXOr86/z4UhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MSIgbmFtZT0iZmlsZWJyb3dzZXIiPgorICAgIDx2YWx1ZT7OoM6/zrvPjSDOvM65zrrPgc+MIM6Mzr3Ov868zrEgzpHPgc+HzrXOr86/z4UhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MiIgbmFtZT0iZmlsZWJyb3dzZXIiPgorICAgIDx2YWx1ZT7Okc60z4XOvc6xzrzOr86xIM6Rz4DOv864zq7Ous61z4XPg863z4IgzpTOuc61z43OuM+Fzr3Pg863z4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQzIiBuYW1lPSJ1c2VyYWRtaW4iPgorICAgIDx2YWx1ZT7OnyDOp8+Bzq7Pg8+EzrfPgiDPgM+Bzr/Pg8+Ezq3OuM63zrrOtSDOtc+AzrnPhM+Fz4fPjs+CLCDOsc67zrvOrCDPgM+Bzq3PgM61zrkgzr3OsSDPhM6/z4DOv864zrXPhM63zrjOtc6vIM+DzrUgzrrOrM+Azr/Ouc6/zr0gzp/Pgc6zzrHOvc65z4POvM+MLCDOsc67zrvOuc+Oz4IgzrTOtc69IM64zrEgzrzPgM6/z4HOtc6vIM69zrEgz4PPhc69zrTOtc64zrXOryE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ0IiBuYW1lPSJhZG1pbmZvcm1zIj4KKyAgICA8dmFsdWU+zp3Orc6xIM6VzrPOs8+BzrHPhs6uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+zpTOtc69IM6yz4HOrc64zrfOus61IM6gzrXOtM6vzr8gzrzOtSDPhM6/IM+Dz4XOs866zrXOus+BzrnOvM6tzr3OvyBJRCAozprPic60zrnOus+MIM6Rz4HOuc64zrzPjCkgzqDOtc60zq/Ov8+FITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDYiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPs6UzrXOvSDOss+Bzq3OuM63zrrOtSDOlc+EzrnOus6tz4TOsSDOs865zrEgz4TOvyDPg8+FzrPOus61zrrPgc65zrzOrc69zr8gzqDOtc60zq/OvyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ3IiBuYW1lPSJlcnJvcm1lc3NhZ2UiPgorICAgIDx2YWx1ZT7Okc+AzrHOuc+EzrXOr8+EzrHOuSDOlc6+zr/Phc+DzrnOv860z4zPhM63z4POtyDOsc+Az4wgz4TOvyDOlM65zrHPh861zrnPgc65z4PPhM6uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDgiIG5hbWU9Im1haW5uYXZpIj4KKyAgICA8dmFsdWU+zqPPjc69z4TOsc6+zrcgzpPOu8+Oz4PPg86xz4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ5IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7Ok867z47Pg8+DzrE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUwIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5JRCDOlc+EzrnOus6tz4TOsc+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1MSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+zozOvc6/zrzOsSDOlc+EzrnOus6tz4TOsc+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1MiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+zqTOuc68zq48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUzIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7OpM65zrzOrc+CIM6gzrXOtM6vzr/PhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTQiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPs6Mzr3Ov868zrEgzpXPhM65zrrOrc+EzrHPgjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU1IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7OpM65zrzOriDOlc+EzrnOus6tz4TOsc+COjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTYiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPs6Rz4HOuc64zrzPjM+CIM6Vz4TOuc66zq3PhM6xz4I6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1NyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+zpTOuc6xzrPPgc6sz4jOsc+EzrUgzrzPjM69zr8gz4TOt869IM6Vz4TOuc66zq3PhM6xIM66zrHOuSDOn86nzpkgz4TOvyDOoM61zrTOr86/ISDOlM61zr0gzrzPgM6/z4HOtc6vz4TOtSDOvc6xIM60zrnOsc6zz4HOrM+IzrXPhM61IM+Ezr8gzqDOtc60zq/OvywgzrTOuc+Mz4TOuSDOtc69zrTOrc+HzrXPhM6xzrkgzr3OsSDPgM61z4HOuc6tz4fOtc65IM6Vz4TOuc66zq3PhM61z4Igz4POtSDOrM67zrvOtc+CIM6TzrvPjs+Dz4POtc+CLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTgiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPs6czrcgzojOs866z4XPgc6/IElEICjOms+JzrTOuc66z4zPgiDOkc+BzrnOuM68z4zPgikgzpXPhM65zrrOrc+EzrHPgiEgzpTOtc69IM6yz4HOrc64zrfOus61IM66zrHPhM6xz4fPic+BzrfOvM6tzr3OvyDPg8+EzrcgzpLOrM+DzrcgzpTOtc60zr/OvM6tzr3Pic69LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTkiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPs6UzrXOvSDOvM+Azr/Pgc61zq/PhM61IM69zrEgzrTOuc6xzrPPgc6sz4jOtc+EzrUgz4TOvyDPg8+FzrPOus61zrrPgc65zrzOrc69zr8gzqDOtc60zq/OvyEgzpzPgM6/z4HOtc6vz4TOtSDOvc6xIM60zrnOsc6zz4HOrM+GzrXPhM61IM6Vz4TOuc66zq3PhM61z4IgzrHOu867zqwgzp/Op86ZIM6gzrXOtM6vzrEuIM6Rz4XPhM6uIM+Ezrcgz4PPhM65zrPOvM6uIM60zrXOvSDOrc+HzrXOuSDOtc+AzrnOu861zrPOtc6vIM66zqzPgM6/zrnOsSDOlc+EzrnOus6tz4TOsS4gzpXOr8+EzrUgzrTOtc69IM6tzrPOuc69zrUgzrXPgM65zrvOv86zzq4gzpXPhM65zrrOrc+EzrHPgiDOsc+Az4wgzrrOsc69zq3Ovc6xIM6gzrXOtM6vzr8sIM61zq/PhM61IM60zrXOvSDPhc+AzqzPgc+HzrXOuSDOlc+EzrnOus6tz4TOsSDOs865zrEgz4TOt869IM+Dz4XOs866zrXOus+BzrnOvM6tzr3OtyDOk867z47Pg8+DzrEgzrrOsc65IM+Ezr8gz4PPhc6zzrrOtc66z4HOuc68zq3Ovc6/IM6gzrXOtM6vzr8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+zpXOvs6xzrPPic6zzq48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYxIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7OoM+Bzq3PgM61zrkgzr3OsSDOsc+Azr/Pg8+Fzr3OtM61zrjOtc6vz4TOtSDOs865zrEgzr3OsSDOtM61zq/PhM61IM+EzrnPgiDOsc67zrvOsc6zzq3PgiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYyIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7OoM+Bzr/Pg864zq7Ous63IM6dzq3Osc+CIM6TzrvPjs+Dz4POsc+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+zpTOuc6xzrPPgc6xz4bOriDOk867z47Pg8+DzrHPgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjQiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPs6gz4HOv8+DzrjOrs66zrcgzp3Orc6xz4IgzpPOu8+Oz4PPg86xz4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY1IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7OjM69zr/OvM6xPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+zqDPgc6/z4POuM6uzrrOtyDOk867z47Pg8+DzrHPgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjciIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPs6Rzr3PhM6vzrPPgc6xz4bOsSDOkc+Dz4bOsc67zrXOr86xz4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY4IiBuYW1lPSJ0dXJub3Zlcmxpc3QiPgorICAgIDx2YWx1ZT7Okc+Bz4fOrjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjkiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPs6gz4HOv863zrPOv8+NzrzOtc69zr88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzcwIiBuYW1lPSJ0dXJub3Zlcmxpc3QiPgorICAgIDx2YWx1ZT7Olc+Az4zOvM61zr3OvzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzEiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPs6kzq3Ou86/z4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzcyIiBuYW1lPSJ2aWRlb2JveCI+CisgICAgPHZhbHVlPs6fIM6nz4HOrs+Dz4TOt8+CIM68zrnOu86szrXOuSAoQnkgY2xpY2tpbmcgaGVyZSB5b3UgY2FuIGdpdmUgZXhjbHVzaXZlIGF1ZGlvIC8gbXV0ZSB0aGUgbWljcm9waG9uZSBvZiBvdGhlcnMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MyIgbmFtZT0idmlkZW9ib3giPgorICAgIDx2YWx1ZT7Okc69zr/Ouc6zzrzOsS/Oms67zrXOr8+DzrnOvM6/IM6Jz4fOv8+FPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3NCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+zqPPjc+Dz4TOt868zrE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc1IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT7On865IM6hz4XOuM68zq/Pg861zrnPgiDOo86xz4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc2IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT7Ok861zrnOrCDPg86xz4IsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3NyIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+zpXPgM61zr7Otc+BzrPOsc+Dzq/OsSDOoM+Bzr/Phs6vzrs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc4IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT7Onc6tzrEgzpzOt869z43OvM6xz4TOsTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc5IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT7Okc67zrvOsc6zzq4gzpXOuc66z4zOvc6xz4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgwIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPs6UzrXOtM6/zrzOrc69zrEgzqfPgc6uz4PPhM63IC0gzpXOvs6xzrPPic6zzq48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgxIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPs6MzrvOv865IM6/zrkgT8+BzrPOsc69zrnPg868zr/OryDPgM+Bzq3PgM61zrkgzr3OsSDOtc6vzr3Osc65IM6uzrTOtyDPhc+AzqzPgc+Hzr/Ovc+EzrXPgiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgyIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPs6VzrrOus6vzr3Ot8+DzrcgzpXOvs6xzrPPic6zzq7PgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODMiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+zprOsc+Ezqwgzp/Pgc6zzrHOvc65z4POvM+MPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NCIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT7Olc66zrrOr869zrfPg863IM6Vzr7Osc6zz4nOs86uz4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg1IiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPs6UzrXOtM6/zrzOrc69zrEgzqfPgc6uz4PPhM63IC0gzpXOuc+DzrHOs8+JzrPOrjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODYiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+zpXPgM65zrvOv86zzq4gdXNlcnMueG1sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+zpXOuc+DzrHOs8+JzrPOrjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODgiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPs6Vzr7Osc6zz4nOs86uIM+DzrUgWE1MIM6Rz4HPh861zq/Ovy4gzqTOvyDOkc+Bz4fOtc6vzr8gzrHPhc+Ez4wgzrzPgM6/z4HOtc6vIM69zrEgz4fPgc63z4POuc68zr/PgM6/zrnOt864zrXOryDOs865zrE6Jmx0O2JyLyZndDsgLSDOo8+Fzr3Otc65z4PPhs6/z4HOrCDPg8+Ezr8gUHJvamVjdCAmbHQ7YnIvJmd0OyAtIM6VzrnPg86xzrPPic6zzq4gz4POtSDOrM67zrvOvyDOo8+Nz4PPhM63zrzOsSZsdDtici8mZ3Q7IC0gzpHOvc+Ezq/Os8+BzrHPhs6/IM6Rz4PPhs6xzrvOtc6vzrHPgiAmbHQ7YnIvJmd0OyAtIM6Vzr7Osc+Ezr/OvM6vzrrOtc+Fz4POtyZsdDtici8mZ3Q7IC0gzpXOuc+DzrHOs8+JzrPOriDPg8+Ezr8gz4bOrM66zrXOu86/IM6TzrvPic+Dz4PPjs69IM6zzrnOsSDOtc+Az4zOvM61zr3OtyDOlc6zzrrOsc+EzqzPg8+EzrHPg863PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4OSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+zpXPgM65zrvOv86zzq4gzpHPgc+HzrXOr86/z4UgzpPOu8+Oz4PPg86xz4IgzrPOuc6xIM6VzrnPg86xzrPPic6zzq4uICZsdDtici8mZ3Q7zqDOoc6fzqPOn86nzpc6IM6Vz4DOuc67zq3Ovs+EzrUgz4TOtyDPg8+Jz4PPhM6uIM6TzrvPjs+Dz4POsSDOsc+Az4wgz4TOtyDOu86vz4PPhM6xISAmbHQ7YnIvJmd0O86Mz4DOv865zr8gzrrOsc65IM69zrEgzrXOr869zrHOuSDPhM6/IM+Mzr3Ov868zrEgz4TOv8+FIM6xz4HPh861zq/Ov8+FJmx0O2JyLyZndDvOuM6xIM61zrnPg86xz4fOuM61zq8gz4PPhM63zr0gzrXPgM65zrvOtc6zzrzOrc69zrcgzrPOu8+Oz4PPg86xITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTAiIG5hbWU9ImltcG9ydHdpbmRvdyI+CisgICAgPHZhbHVlPs6VzrnPg86xzrPPic6zzq4gLSDOlc+AzrnOu86/zrPOriDOkc+Bz4fOtc6vzr/PhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTEiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT7Okc+Azr/OuM6uzrrOtc+Fz4POtyDPic+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5MiIgbmFtZT0icmVjb3JkaW5nc2F2ZXdpbiI+CisgICAgPHZhbHVlPs6Mzr3Ov868zrE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5MyIgbmFtZT0icmVjb3JkaW5nc2F2ZXdpbiI+CisgICAgPHZhbHVlPs6jz4fPjM67zrnOvzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk0IiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+zpHPgM6/zrjOrs66zrXPhc+Dzrc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk1IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT7OnM6xzrPOvc63z4TOv8+DzrrOv8+Azq7Pg861zrnPgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTYiIG5hbWU9InJlY29yZGVyIj4KKyAgICA8dmFsdWU+zqDPgc6/zrLOv867zq3Osc+CIM6czrHOs869zrfPhM6/z4POus6/z4DOrs+DzrXPic69PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NyIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+zpzOsc6zzr3Ot8+Ezr/Pg866zr/PgM6uz4POtc65z4IgzpTOt868zr/Pg86vz4nOvSDOus6xzrkgzpnOtM65z4nPhM65zrrPjs69IM6Uz4nOvM6xz4TOr8+Jzr0uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5OCIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+zqfPgc6uz4PPhM61z4IgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTkiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPs6jz4XOvc60zrXOtM61zrzOrc69zr/OuTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAwIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAxIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT7Op8+Bzq7Pg8+EzrXPgiDPg861IM6xz4XPhM+MIM+Ezr8gzpTPic68zqzPhM65zr86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMiIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+zpHOvc6xzr3Orc+Jz4POtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDMiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPs6Rz4XPhM+MIM+Ezr8gzpTPic68zqzPhM65zr8gzrXOr869zrHOuSDPgM67zq7Pgc61z4IhIM6Uzr/Ous65zrzOrM+Dz4TOtSDOvs6xzr3OrCDPg861IM68zrXPgc65zrrOrCDOu861z4DPhM6sLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDQiIG5hbWU9InJvb21zTGlzdCI+CisgICAgPHZhbHVlPs6Vz4DOuc67zq3Ovs+EzrUgzq3Ovc6xIM6Uz4nOvM6sz4TOuc6/IM6zzrnOsSDOvc6xIM60zrXOr8+EzrUgzpvOtc+Az4TOv868zq3Pgc61zrnOtc+CLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDUiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPs6jz4XOvc6/zrzOuc67zq7Pg8+EzrUgzrzOtSDPhM6/z4XPgiDOp8+Bzq7Pg8+EzrXPgiDPg861IM6xz4XPhM+MIM+Ezr8gzpTPic68zqzPhM65zr86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNiIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+zpTPic68zqzPhM65zr86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNyIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+zqfPgc6uz4PPhM61z4Igz4POtSDOsc+Fz4TPjCDPhM6/IM6Uz4nOvM6sz4TOuc6/OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDgiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPs6Rz4DPjDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA5IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT7Okc69zrHPgM6xz4HOsc6zz4nOs86uIM6czrHOs869zrfPhM6/z4POus+Mz4DOt8+DzrfPgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTAiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPs6czq7Ous6/z4I6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+zpfOvM61z4HOv868zrfOvc6vzrE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMiIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+zpvOtc65z4TOv8+Fz4HOs86vzrEgzpzOsc6zzr3Ot8+Ezr/Pg866z4zPgM63z4POt8+CISDOlM61zr0gzrzPgM6/z4HOtc6vz4TOtSDOvc6xIM68zrXPhM6xzrLOrM67zrvOtc+EzrUgzrrOsc68zq/OsSDOpM65zrzOri4gzqDPgc+MzrrOtc65z4TOsc65IM6zzrnOsSDOrc69zrEgzrzOsc6zzr3Ot8+Ezr/Pg866zr/PgM63zrzOrc69zr8gzpHPgc+HzrXOr86/ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTMiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPs6Rzr3Osc+AzrHPgc6xzrPPic6zzq48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE0IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT7Okc69zrHPgM6xz4HOsc6zz4nOs86uIC8gzqDOsc+Nz4POtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTUiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPs6Izr3Osc+Bzr7OtyDOnM6xzrPOvc63z4TOv8+DzrrPjM+AzrfPg863z4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE2IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT7Om86uzr7OtyDOnM6xzrPOvc63z4TOv8+DzrrPjM+AzrfPg863z4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE3IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT7OnM6xzrPOvc63z4TOv8+DzrrPjM+AzrfPg863OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTgiIG5hbWU9InJlY29yZF9lcnJvcl9tc2ciPgorICAgIDx2YWx1ZT7Oms6sz4DOv865zr/PgiDOrM67zrvOv8+CIM68zrHOs869zrfPhM6/z4POus6/z4DOtc6vIM6uzrTOtyDOsc+Fz4TOriDPhM63IM+Dz4TOuc6zzrzOrjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE5IiBuYW1lPSJyZWNvcmRfbWVzc2FnZSI+CisgICAgPHZhbHVlPs6czrHOs869zrfPhM6/z4POus+Mz4DOt8+DzrchIM6Rz4DPjCDPhM6/zr0gzqfPgc6uz4PPhM63OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjAiIG5hbWU9InJlY29yZF9jYW5jZWwiPgorICAgIDx2YWx1ZT7Okc66z43Pgc+Jz4POtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjEiIG5hbWU9InJlY29yZF9jYW5jYWxfdG9vbHRpcCI+CisgICAgPHZhbHVlPs6RzrrPjc+Bz4nPg863IM6czrHOs869zrfPhM6/z4POus+Mz4DOt8+DzrfPgiDPh8+Jz4HOr8+CIM6Rz4DOv864zq7Ous61z4XPg863ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjIiIG5hbWU9ImNhbmNlbF9kaWFsb2dfcmVzdW1lIj4KKyAgICA8dmFsdWU+zqPPhc69zq3Ph861zrnOsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjMiIG5hbWU9ImNhbmNlbF9kaWFsb2dfcmVzdW1lX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT7Oms67zrXOr8+DzrnOvM6/IM6gzrHPgc6xzrjPjc+Bzr/PhSDOus6xzrkgzqPPhc69zq3Ph861zrnOsSDOnM6xzrPOvc63z4TOv8+DzrrPjM+AzrfPg863z4IuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyNCIgbmFtZT0icGFpbnR0b29sc19lbGxpcHNlX2NvbG9yIj4KKyAgICA8dmFsdWU+zpHOu867zrHOs86uIM6nz4HPjs68zrHPhM6/z4IgzpPPgc6xzrzOvM6uz4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI1IiBuYW1lPSJjb2xvcnBpY2tlcl9oZWFkIj4KKyAgICA8dmFsdWU+zpXPgM65zrvOv86zzq4gzqfPgc+OzrzOsc+Ezr/PgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjYiIG5hbWU9InBhaW50dG9vbHNfbGluZV9kaXNhYmxlIj4KKyAgICA8dmFsdWU+zpHPgM61zr3Otc+BzrPOv8+Azr/Or863z4POtyAvIM6Vzr3Otc+BzrPOv8+Azr/Or863z4POtyDOp8+Bz47OvM6xz4TOv8+CIM6Tz4HOsc68zrzOrs+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyNyIgbmFtZT0icGFpbnR0b29sc19maWxsX2Rpc2FibGUiPgorICAgIDx2YWx1ZT7Okc67zrvOsc6zzq4gzqfPgc+OzrzOsc+Ezr/PgiDOk861zrzOr8+DzrzOsc+Ezr/PgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjgiIG5hbWU9InBhaW50dG9vbHNfbGluZV9kaXNhYmxlIj4KKyAgICA8dmFsdWU+zpHPgM61zr3Otc+BzrPOv8+Azr/Or863z4POtyAvIM6Vzr3Otc+BzrPOv8+Azr/Or863z4POtyDOp8+Bz47OvM6xz4TOv8+CIM6TzrXOvM6vz4POvM6xz4TOv8+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyOSIgbmFtZT0iY2hhbmdlX3dpZHRoX2Fycm93X2Rvd25fc2xpZGVyIj4KKyAgICA8dmFsdWU+zpHOu867zrHOs86uIM6gzrvOrM+Ezr/Phc+CIM6Tz4HOsc68zrzOrs+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzMCIgbmFtZT0iY2xvc2Vfc21hbGxfcG9wdXBzIj4KKyAgICA8dmFsdWU+zprOu861zq/Pg865zrzOvzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzEiIG5hbWU9InBhaW50X3Rvb2xfbGV0dGVyIj4KKyAgICA8dmFsdWU+zpHOu867zrHOs86uIM6czrXOs86tzrjOv8+Fz4IgzpPPgc6xzrzOvM6xz4TOv8+DzrXOuc+BzqzPgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzIiIG5hbWU9InJlY29yZGluZ3NsaXN0X2RlbGV0ZSI+CisgICAgPHZhbHVlPs6UzrnOsc6zz4HOsc+Gzq4gzpzOsc6zzr3Ot8+Ezr/Pg866z4zPgM63z4POt8+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzMyIgbmFtZT0icmVjb3JkaW5nc2xpc3RfcmVjb3JkZWRCeUd1ZXN0Ij4KKyAgICA8dmFsdWU+zpXPgM65z4POus6tz4DPhM63z4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM0IiBuYW1lPSJyZWNvcmRpbmdzbGlzdF9yZWNvcmRlZGJ5Ij4KKyAgICA8dmFsdWU+zpHPgM+MOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzUiIG5hbWU9InJlY29yZGluZ3NfdGFibGVfaGVhZF9uYW1lIj4KKyAgICA8dmFsdWU+zozOvc6/zrzOsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzYiIG5hbWU9InJlY29yZGluZ3NfdGFibGVfaGVhZF9yb29tIj4KKyAgICA8dmFsdWU+zpTPic68zqzPhM65zr88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM3IiBuYW1lPSJyZWNvcmRpbmdzX3RhYmxlX2hlYWRfZGF0ZSI+CisgICAgPHZhbHVlPs6XzrzOtc+Bzr/OvM63zr3Or86xPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzOCIgbmFtZT0icmVjb3JkX3N0YXJ0X2NhbmNlbCI+CisgICAgPHZhbHVlPs6RzrrPjc+Bz4nPg863PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzOSIgbmFtZT0icmVjb3JkX3N0YXJ0X3N0YXJ0Ij4KKyAgICA8dmFsdWU+zojOvc6xz4HOvs63PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MCIgbmFtZT0iZmlsZXNicm93c2VyX3RhYmxlX2hlYWRfbmFtZSI+CisgICAgPHZhbHVlPs6Mzr3Ov868zrE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQxIiBuYW1lPSJmaWxlc2Jyb3dzZXJfdGFibGVfaGVhZF9kYXRlIj4KKyAgICA8dmFsdWU+zpfOvM61z4HOv868zrfOvc6vzrE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQyIiBuYW1lPSJjaGF0X2NsZWFyX2hpc3RvcnkiPgorICAgIDx2YWx1ZT7OlM65zrHOs8+BzrHPhs6uIENoYXRsb2cgzrHPgM+MIM+Ezr8gzpTOuc6xzrrOv868zrnPg8+Ezq48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQzIiBuYW1lPSJjaGF0X292ZXJhbGxfaGVhZGVyIj4KKyAgICA8dmFsdWU+zqPPhc69zr/OvM65zrvOr86xPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NCIgbmFtZT0iY2hhdF9zZW5kX2J0biI+CisgICAgPHZhbHVlPkHPgM6/z4PPhM6/zrvOriDOnM63zr3Pjc68zrHPhM6/z4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ1IiBuYW1lPSJjaGF0X2Vtb3RfYnRuIj4KKyAgICA8dmFsdWU+RW1vdGljb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NiIgbmFtZT0iY2hhdF9lbW90X3dpbiI+CisgICAgPHZhbHVlPkVtb3RpY29uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDciIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5ncyI+CisgICAgPHZhbHVlPs6Vz4DOuc67zr/Os86uIM6UzrfOvM6/z4POuc61z4XOvM6tzr3Pic69IM6jz4XPg866zrXPhc+Ozr08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ4IiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT7Oic+Hzr/PgiDOus6xzrkgzpLOr869z4TOtc6/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0OSIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2NvbWJvIj4KKyAgICA8dmFsdWU+zonPh86/z4IgzrzPjM69zr88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUwIiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT7Oks6vzr3PhM61zr8gzrzPjM69zr88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUxIiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT7Op8+Jz4HOr8+CIM6Xz4fPjC/Oks6vzr3PhM61zr8gKM6jz4TOsc+EzrnOus6uIM6VzrnOus+Mzr3OsSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUyIiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfaW5mb190ZXh0Ij4KKyAgICA8dmFsdWU+zpTOtc69IM64zrEgzrTOt868zr/Pg865zrXPjc61z4TOsc65IM6/z43PhM61IM6Jz4fOv8+CIM6/z43PhM61IM6Szq/Ovc+EzrXOvyDOsc+Az4wgz4TOvyBQQyDPg86xz4IuIM6Rzr3PhM6vIM6xz4XPhM6/z40gzrjOsSDOtc68z4bOsc69zq/Ots61z4TOsc65IM63IM6VzrnOus+Mzr3OsSDPhM6/z4UgzqDPgc6/z4bOr867IM+DzrHPgi4gzpXPgM65zrvOrc6+z4TOtSDOsc+Fz4TOrs69IM+Ezrcgz4HPjc64zrzOuc+DzrcgzrHOvSDOrc+HzrXPhM61IM+Az4HOv86yzrvOrs68zrHPhM6xIM68zrUgz4TOvyBiYW5kd2lkdGggz4POsc+CIM6uIM68zrnOsSDPgM6/zrvPjSDOsc+BzrPOriDOo8+Nzr3OtM61z4POtyBJbnRlcm5ldC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUzIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX21vbmRheSI+CisgICAgPHZhbHVlPs6UzpXOpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTQiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfdHVlc2RheSI+CisgICAgPHZhbHVlPs6kzqHOmTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTUiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfd2VkbmVzZGF5Ij4KKyAgICA8dmFsdWU+zqTOlc6kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NiIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV90aHVyc2RheSI+CisgICAgPHZhbHVlPs6gzpXOnDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTciIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfZnJpZGF5Ij4KKyAgICA8dmFsdWU+zqDOkc6hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1OCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9zYXR1cmRheSI+CisgICAgPHZhbHVlPs6jzpHOkjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTkiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfc3VuZGF5Ij4KKyAgICA8dmFsdWU+zprOpc6hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9tb25kYXkiPgorICAgIDx2YWx1ZT7OlM61z4XPhM6tz4HOsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjEiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfVHVlc2RheUxhYmVsIj4KKyAgICA8dmFsdWU+zqTPgc6vz4TOtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjIiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfV2VkbmVzZGF5TGFiZWwiPgorICAgIDx2YWx1ZT7OpM61z4TOrM+Bz4TOtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjMiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfVGh1cnNkYXlMYWJlbCI+CisgICAgPHZhbHVlPs6gzq3OvM+Az4TOtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjQiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfRnJpZGF5TGFiZWwiPgorICAgIDx2YWx1ZT7OoM6xz4HOsc+DzrrOtc+Fzq48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY1IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1NhdHVyZGF5TGFiZWwiPgorICAgIDx2YWx1ZT7Oo86szrLOss6xz4TOvzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjYiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfU3VuZGF5TGFiZWwiPgorICAgIDx2YWx1ZT7Oms+Fz4HOuc6xzrrOrjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjciIG5hbWU9ImNhbGVuZGFyX3dlZWtudW1iZXJfaGVhZGVyIj4KKyAgICA8dmFsdWU+zpfOlTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjgiIG5hbWU9ImNhbGVuZGFyX3dlZWtudW1iZXJfaGVhZGVyVG9vbHRpcCI+CisgICAgPHZhbHVlPs6XzrzOtc+Bzr/Ou86/zrPOuc6xzrrOriDOlc6yzrTOv868zqzOtM6xPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2OSIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPs6ZzrHOvc6/z4XOrM+BzrnOv8+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3MCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPs6mzrXOss+Bzr/Phc6sz4HOuc6/z4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDcxIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+zpzOrM+Bz4TOuc6/z4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDcyIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+zpHPgM+Bzq/Ou865zr/PgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzMiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT7OnM6szrnOv8+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3NCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPs6Zzr/Pjc69zrnOv8+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3NSIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPs6Zzr/Pjc67zrnOv8+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3NiIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPs6Rz43Os86/z4XPg8+Ezr/PgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzciIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT7Oo861z4DPhM6tzrzOss+BzrnOv8+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3OCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPs6fzrrPhM+OzrLPgc65zr/PgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzkiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT7Onc6/zq3OvM6yz4HOuc6/z4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgwIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+zpTOtc66zq3OvM6yz4HOuc6/z4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgxIiBuYW1lPSJjYWxlbmRhcndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT7Ol868zrXPgc6/zrvPjM6zzrnOvzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODIiIG5hbWU9InJvb21hZG1pbl9sYWJlbE51bWJlck9mUGFydGljaXBhbnRzIj4KKyAgICA8dmFsdWU+zqPPhc68zrzOtc+Ezq3Ph86/zr3PhM61z4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgzIiBuYW1lPSJyb29tVmFsdWVfYWR2YW5jZWRTZXR0aW5ncyI+CisgICAgPHZhbHVlPs6VzrzPhs6szr3Ouc+DzrcgzqHPhc64zrzOr8+DzrXPic69IM6UzrnOrM+EzrHOvs63z4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg0IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3ZpZGVvWCI+CisgICAgPHZhbHVlPlggfCBZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NSIgbmFtZT0icm9vbUFkbWluX2xheW91dF92aWRlb1kiPgorICAgIDx2YWx1ZT7OoM67zqzPhM6/z4IgfCDOjs+Izr/PgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODYiIG5hbWU9InJvb21BZG1pbl9sYXlvdXQiPgorICAgIDx2YWx1ZT7Op8+Oz4HOv8+CIM6Szq/Ovc+EzrXOvzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODciIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfbW9kIj4KKyAgICA8dmFsdWU+zqfPjs+Bzr/PgiDOo8+Fzr3PhM6/zr3Ouc+DzrzOv8+NPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4OCIgbmFtZT0icm9vbUFkbWluX2xheW91dF9tb2RfcG9zIj4KKyAgICA8dmFsdWU+WDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODkiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPs6nz47Pgc6/z4IgzqDOr869zrHOus6xPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5MCIgbmFtZT0icm9vbUFkbWluX2xheW91dF93aGl0ZWJvYXJkX3Nob3ciPgorICAgIDx2YWx1ZT7Olc69zrXPgc6zzr/PgM6/zrnOt868zq3Ovc6/z4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkxIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmRfcG9zIj4KKyAgICA8dmFsdWU+WCB8IFk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkyIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmQiPgorICAgIDx2YWx1ZT7OoM67zqzPhM6/z4IgfCDOjs+Izr/PgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTMiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXMiPgorICAgIDx2YWx1ZT7Op8+Oz4HOv8+CIM6Rz4HPh861zq/Pic69LCDOo8+Fzr3Ov868zrnOu865z47OvSDOus6xzrkgzqPPhc68zrzOtc+EzrXPh8+Mzr3PhM+Jzr08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk0IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X2ZpbGVzX3Nob3ciPgorICAgIDx2YWx1ZT7Olc69zrXPgc6zzr/PgM6/zrnOt868zq3Ovc6/z4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk1IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X2ZpbGVzX3BvcyI+CisgICAgPHZhbHVlPlggfFk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk2IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X2ZpbGVzIj4KKyAgICA8dmFsdWU+zqDOu86sz4TOv8+CIHwgzo7PiM6/z4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk3IiBuYW1lPSJtb2RlcmF0b3JfZ29uZV9tZXNzYWdlIj4KKyAgICA8dmFsdWU+zp8gzqPPhc69z4TOv869zrnPg8+Ezq7PgiDOtc6zzrrOsc+Ezq3Ou861zrnPiM61IM+Ezr8gzpTPic68zqzPhM65zr8uIM6azrHOvc61zq/PgiDOtM61zr0gz4DOsc+Bzr/Phc+DzrnOrM62zrXOuSDOsc+Fz4TOrs69IM+Ezrcgz4PPhM65zrPOvM6uLiDOnM+Azr/Pgc61zq/PhM61IM69zrEgzrrOrM69zrXPhM61IM6xzq/PhM63z4POtyDOs865zrEgzqPPhc69z4TOv869zrnPg868z4wgzq4gzr3OsSDPgM61z4HOuc68zq3Ovc61z4TOtS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk4IiBuYW1lPSJtb2RlcmF0b3JfbWVzc2FnZV9ldmVudF9ub19tb2QiPgorICAgIDx2YWx1ZT7OlM61zr0gz4XPgM6sz4HPh861zrkgzqPPhc69z4TOv869zrnPg8+Ezq7PgiDPg861IM6xz4XPhM+MIM+Ezr8gzpTPic68zqzPhM65zr8sIM6xzrvOu86sIM+Fz4DOrM+Bz4fOv8+Fzr0gzrrOrM+Azr/Ouc6/zrkgzqPPhc68zrzOtc+Ezq3Ph86/zr3PhM61z4IuIM6gz4HOrc+AzrXOuSDOvc6xIM66zqzOvc61z4TOtSDOsc6vz4TOt8+DzrcgzrPOuc6xIM6jz4XOvc+Ezr/Ovc65z4POvM+MIM6uIM69zrEgz4DOtc+BzrnOvM6tzr3Otc+EzrUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5OSIgbmFtZT0iZmVlZGJhY2tfdGVtcGxhdGVfc3ViamVjdCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSAtIM6Rzr3OrM60z4HOsc+Dzrc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAwIiBuYW1lPSJpbnZpdGF0aW9uX3RlbXBsYXRlX2hlYWQiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgLSDOoM+Bz4zPg866zrvOt8+Dzrc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAxIiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfZnJvbSI+CisgICAgPHZhbHVlPs6czq7Ovc+FzrzOsSDOsc+Az4wgz4TOvyDOp8+Bzq7Pg8+Ezrc6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwMiIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X21lc3NhZ2UiPgorICAgIDx2YWx1ZT7OnM6uzr3Phc68zrE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwMyIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X2NsaWNrX3RleHQiPgorICAgIDx2YWx1ZT7Oms6szr3PhM61IM66zrvOuc66IM+DzrUgzrHPhc+Ez4zOvSDPhM6/IM6jz43Ovc60zrXPg868zr8gzrPOuc6xIM69zrEgz4PPhc68zrzOtc+EzqzPg8+HzrXPhM61IM+Dz4TOuc+CIM6jz4XOvc6xzr3PhM6uz4POtc65z4I6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwNCIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X2NsaWNrX3RleHRfbGluayI+CisgICAgPHZhbHVlPs6azqzOvc+EzrUgzrrOu865zrogzrXOtM+OIM6zzrnOsSDOvc6xIM68z4DOtc6vz4TOtSDPg861IM66zqzPgM6/zrnOvyDOlM+JzrzOrM+EzrnOvy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA1IiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfY2xpY2tfdGV4dF9oZWxwIj4KKyAgICA8dmFsdWU+zpHOvSDOrc+HzrXPhM61IM+Az4HOv86yzrvOrs68zrHPhM6xIM68zrUgz4TOvyDOo8+Nzr3OtM61z4POvM6/LCDPgM6xz4HOsc66zrHOu86/z43OvM61IM6xzr3PhM65zrPPgc6sz4jPhM61IM66zrHOuSDOtc+AzrnOus6/zrvOu86uz4PPhM61IM6xz4XPhM+MIM+Dz4TOvyDOps+FzrvOu86/zrzOtc+Ez4HOt8+Ezq4gz4POsc+COjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDYiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9oZWFkIj4KKyAgICA8dmFsdWU+zpXOs86zz4HOsc+Gzq4gz4PPhM6/ICRBUFBfTkFNRTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDciIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9oZWFkMiI+CisgICAgPHZhbHVlPs6kzrEgzqPPhM6/zrnPh861zq/OsSDOo86xz4I6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwOCIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X3VzZXJuYW1lIj4KKyAgICA8dmFsdWU+TG9naW46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwOSIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X3Bhc3MiPgorICAgIDx2YWx1ZT7Oms+JzrTOuc66z4zPgjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTEwIiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfbWFpbCI+CisgICAgPHZhbHVlPkVtYWlsOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTEiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9ieWUiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgLSDOn868zqzOtM6xPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxMiIgbmFtZT0icmVnaXN0ZXJfbWFpbF9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIC0gzpXOs86zz4HOsc+Gzq4gzpzOrc67zr/Phc+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxMyIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSAtIM6RzrvOu86xzrPOriDOms+JzrTOuc66zr/PjTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTQiIG5hbWU9InJlc2V0X3Bhc3N3b3JkX3RlbXBsYXRlX3Rlc3RfbGluayI+CisgICAgPHZhbHVlPs6azqzOvc+EzrUgzrrOu865zrogz4POtSDOsc+Fz4TPjM69IM+Ezr8gzqPPjc69zrTOtc+DzrzOvyDOs865zrEgzr3OsSDOtc65z4POrM6zzrXPhM61IM6tzr3Osc69IM69zq3OvyDOms+JzrTOuc66z4w6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNSIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfdGV4dDJfbGluayI+CisgICAgPHZhbHVlPs6azqzOvc+EzrUgzrrOu865zrogzrXOtM+OIM6zzrnOsSDOvc6xIM61zrnPg86szrPOtc+EzrUgzq3Ovc6xzr0gzr3Orc6/IM6az4nOtM65zrrPjC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE2IiBuYW1lPSJyZXNldF9wYXNzd29yZF90ZW1wbGF0ZV90ZXh0M19saW5rIj4KKyAgICA8dmFsdWU+zpHOvSDOrc+HzrXPhM61IM+Az4HOv86yzrvOrs68zrHPhM6xIM68zrUgz4TOvyDOo8+Nzr3OtM61z4POvM6/LCDPgM6xz4HOsc66zrHOu86/z43OvM61IM6xzr3PhM65zrPPgc6sz4jPhM61IM66zrHOuSDOtc+AzrnOus6/zrvOu86uz4PPhM61IM6xz4XPhM+MIM+Dz4TOvyDOps+FzrvOu86/zrzOtc+Ez4HOt8+Ezq4gz4POsc+COjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTciIG5hbWU9InJlc2V0X3Bhc3N3b3JkX21haWxfc3ViamVjdCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSAtIM6RzrvOu86xzrPOriDOms+JzrTOuc66zr/PjTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTgiIG5hbWU9ImRhdGVSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPs6gzrHPgc6xzrrOsc67zr/Pjc68zrUgzrXOuc+DzqzOs861z4TOtSDOvM65zrEgzq3Os866z4XPgc63IM6XzrzOtc+Bzr/OvM63zr3Or86xLCDOs865zrEgz4DOsc+BzqzOtM61zrnOs868zrE6IDI0LjEyLjIwMDEgKM6XzpcuzpzOnC7Olc6VzpXOlSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE5IiBuYW1lPSJlbWFpbFJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+zqDOsc+BzrHOus6xzrvOv8+NzrzOtSDOtc65z4POrM6zzrXPhM61IM6tzr3OsSDOrc6zzrrPhc+Bzr8gRW1haWwsIM6zzrnOsSDPgM6xz4HOrM60zrXOuc6zzrzOsTogbmFtZUBtYWlsLmNvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjAiIG5hbWU9ImZsb2F0UmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT7OoM6xz4HOsc66zrHOu86/z43OvM61IM61zrnPg86szrPOtc+EzrUgzq3Ovc6xzr0gz4DPgc6xzrPOvM6xz4TOuc66z4wgQc+BzrnOuM68z4wsIM6zzrnOsSDPgM6xz4HOrM60zrXOuc6zzrzOsTogMS4wMDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjEiIG5hbWU9Im51bWJlclJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+zqDOsc+BzrHOus6xzrvOv8+NzrzOtSDOtc65z4POrM6zzrXPhM61IM6tzr3Osc69IM6xzrrOrc+BzrHOuc6/IEHPgc65zrjOvM+MLCDOs865zrEgz4DOsc+BzqzOtM61zrnOs868zrE6IDEwMDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjIiIG5hbWU9InBob25lUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT7OoM6xz4HOsc66zrHOu86/z43OvM61IM61zrnPg86szrPOtc+EzrUgzq3Ovc6xzr0gzq3Os866z4XPgc6/IEHPgc65zrjOvM+MIFTOt867zrXPhs+Ozr3Ov8+FLCDOs865zrEgz4DOsc+BzqzOtM61zrnOs868zrE6ICsrMzAgMjEwIDU3MzEyMzA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIzIiBuYW1lPSJ0aW1lUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT7OoM6xz4HOsc66zrHOu86/z43OvM61IM61zrnPg86szrPOtc+EzrUgzrzOuc6xIM6tzrPOus+Fz4HOtyDOj8+BzrEsIM6zzrnOsSDPgM6xz4HOrM60zrXOuc6zzrzOsTogMTI6MjMgKM6pzqk6zpvOmyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI0IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvdyI+CisgICAgPHZhbHVlPs6gz4HOv8+Dz4TOsc+EzrXPhc68zq3Ovc6/IM68zrUgzprPic60zrnOus+MPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNSIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfcGFzc3dvcmRMYWJlbCI+CisgICAgPHZhbHVlPs6az4nOtM65zrrPjM+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNiIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWRMYWJlbCI+CisgICAgPHZhbHVlPs6VzrPOus+Fz4HPjM+EzrfPhM6xPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNyIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWQiPgorICAgIDx2YWx1ZT7Okc+AzrXPgc65z4zPgc65z4PPhM63PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyOCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWQiPgorICAgIDx2YWx1ZT7OoM61z4HOr86/zrTOv8+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyOSIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWQiPgorICAgIDx2YWx1ZT7OnM6vzrEgzqbOv8+Bzqw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMwIiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZEZyb21MYWJlbCI+CisgICAgPHZhbHVlPs6IzrPOus+Fz4HOvyDOkc+Az4w6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMSIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWRUb0xhYmVsIj4KKyAgICA8dmFsdWU+zojOs866z4XPgc6/IM6Iz4nPgjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMyIiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd19NYWlsU3ViamVjdCI+CisgICAgPHZhbHVlPs6gz4HPjM+DzrrOu863z4POtyDPg8+Ezr8gJEFQUF9OQU1FPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMyIgbmFtZT0iaW52aXRhdGlvbl9lcnJvciI+CisgICAgPHZhbHVlPs6UzrXOvSDPhc+AzqzPgc+HzrXOuSDOtM65zrHOuM6tz4POuc68zrcgzqDPgc+Mz4POus67zrfPg863IM6zzrnOsSDPhM6/IM+Dz4XOs866zrXOus+BzrnOvM6tzr3OvyDOms+JzrTOuc66z4whPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzNCIgbmFtZT0iaW52aXRhdGlvbl9lcnJvciI+CisgICAgPHZhbHVlPs6XIM6gz4HPjM+DzrrOu863z4POtyDOrc+HzrXOuSDOrs60zrcgz4fPgc63z4POuc68zr/PgM6/zrnOt864zrXOryEgzpHPhc+Ez4zPgiDOvyDPhM+Nz4DOv8+CIM6gz4HPjM+DzrrOu863z4POt8+CIM60zrXOvSDOvM+Azr/Pgc61zq8gzr3OsSDPh8+BzrfPg865zrzOv8+Azr/Ouc63zrjOtc6vIM6+zrHOvc6sLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzUiIG5hbWU9Imludml0YXRpb25fZXJyb3IiPgorICAgIDx2YWx1ZT7OnyDPg8+FzrPOus61zrrPgc65zrzOrc69zr/PgiDOms+JzrTOuc66z4zPgiDOoM+Bz4zPg866zrvOt8+DzrfPgiDOtM61zr0gzrXOr869zrHOuSDOrc6zzrrPhc+Bzr/PgiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM2IiBuYW1lPSJpbnZpdGF0aW9uX3Bhc3MiPgorICAgIDx2YWx1ZT7Oms+JzrTOuc66z4zPgjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM3IiBuYW1lPSJpbnZpdGF0aW9uX3Bhc3NfYnRuIj4KKyAgICA8dmFsdWU+zojOu861zrPPh86/z4IgzprPic60zrnOus6/z408L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM4IiBuYW1lPSJpbnZpdGF0aW9uX3Bhc3NfZXJyb3IiPgorICAgIDx2YWx1ZT7OnM63IM6IzrPOus+Fz4HOv8+CIM6az4nOtM65zrrPjM+CITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzkiIG5hbWU9IkJyb3dzZXIiPgorICAgIDx2YWx1ZT7Oic+Hzr/Pgi/Oks6vzr3PhM61zr88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQwIiBuYW1lPSJhdWRpb192aWRlbyI+CisgICAgPHZhbHVlPs6jz4XOs8+Hz4HOv869zrnPg868z4zPgiDOic+Hzr/PhS/Oks6vzr3PhM61zr88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQxIiBuYW1lPSJlcnJvckNvZGVfaW52YWxpZFNlc3Npb24iPgorICAgIDx2YWx1ZT7OpM6/IGxvZ2luIM6uz4TOsc69IM+Dz4nPg8+Ez4wsIM6xzrvOu86sIM63IM6jz43Ovc6/zrTOv8+CIM+Azr/PhSDOtM6/zrrOuc68zqzPg86xz4TOtSDOtM61zr0gzrXOr869zrHOuSDOtc69zrXPgc6zzq4gzq4gzrTOtc69IM61zq/Ovc6xzrkgzrHPgM6/zrjOt866zrXPhc68zq3Ovc63IM+Dz4TOv869IM6UzrnOsc66zr/OvM65z4PPhM6uLiDOoM+Bzq3PgM61zrkgzr3OsSDOsc+Azr/Ous+Ezq7Pg861z4TOtSDOvc6tzr8gzpHPgc65zrjOvM+MIM6jz4XOvc+MzrTOv8+FIM66zrHOuSDOvc6xIM60zr/Ous65zrzOrM+DzrXPhM61IM69zrEgz4PPhc69zrTOtc64zrXOr8+EzrUgzr7Osc69zqwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0MiIgbmFtZT0iZXJyb3Jjb2RlX3NldFVzZXJPYmplY3QiPgorICAgIDx2YWx1ZT7OnyDOkc+BzrnOuM68z4zPgiDOo8+Fzr3PjM60zr/PhSDOtM61zr0gzrXOr869zrHOuSDOtc69zrXPgc6zz4zPgiDOriDOtM61zr0gzq3Ph861zrkgzrTOuc66zrHOuc+OzrzOsc+EzrEgzpTOuc6xz4fOtc6vz4HOuc+DzrfPgi4gzpcgz4DPjc67zrcgU09BUCDPh8+BzrXOuc6szrbOtc+EzrHOuSDOrc69zrHOvSDOp8+Bzq7Pg8+EzrcgzrzOtSDOlM65zrrOsc65z47OvM6xz4TOsSDOlM65zrHPh861zq/Pgc65z4POt8+CIM6zzrnOsSDPhM63zr0gzrXOvc+Dz4nOvM6sz4TPic+Dzrcgzr3Orc+Jzr0gzqfPgc63z4PPhM+Ozr0uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0MyIgbmFtZT0iZXJyb3Jjb2RlX2xvZ2luQnlSZW1vdGVVc2VyIj4KKyAgICA8dmFsdWU+zpcgz4PPhc6zzrrOtc66z4HOuc68zq3Ovc63IM6jz43Ovc6/zrTOv8+CIM60zrXOvSDOrc+HzrXOuSDPg8+Fzr3OtM61zrTOtc68zq3Ovc6xIM6jz4TOv865z4fOtc6vzrEgzpHPgM6/zrzOsc66z4HPhc+DzrzOrc69zr/PhSDOp8+Bzq7Pg8+EzrcuIM6Vzq/PhM61IM60zrXOvSDOus6xzrvOrc+DzrHPhM61IM+EzrfOvSDPgM+NzrvOtyBTT0FQIM+Az4HOuc69IM+EzrfOvSDPgM+Bz4zPg86yzrHPg863IM+Dz4TOt869IM6Vz4bOsc+BzrzOv86zzq4sIM61zq/PhM61IM+Hz4HOt8+DzrnOvM6/z4DOv865zrXOr8+EzrUgzrvOrM64zr/PgiDOkc+BzrnOuM68z4wgzqPPhc69z4zOtM6/z4UuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0NCIgbmFtZT0iZGVidWdfbWVzc2FnZV9yZWNvcmRpbmciPgorICAgIDx2YWx1ZT7OlyDOo8+Fz4POus61z4XOriDOlc6zzrPPgc6xz4bOrs+CIM61zq/Ovc6xzrkgz4POtSDPgM61zrnPgc6xzrzOsc+EzrnOus+MIM+Dz4TOrM60zrnOvyDPgM+Bzr/PgiDPhM6/IM+AzrHPgc+Mzr0hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0NSIgbmFtZT0icHJvcGVydHlQYW5lbFhWYWx1ZSI+CisgICAgPHZhbHVlPng8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ2IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWFZhbHVlTGFiZWwiPgorICAgIDx2YWx1ZT7Ohs6+zr/Ovc6xz4IteDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDciIG5hbWU9InByb3BlcnR5UGFuZWxZVmFsdWUiPgorICAgIDx2YWx1ZT55PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0OCIgbmFtZT0icHJvcGVydHlQYW5lbFlWYWx1ZUxhYmVsIj4KKyAgICA8dmFsdWU+zobOvs6/zr3Osc+CLXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ5IiBuYW1lPSJwcm9wZXJ0eVBhbmVsV2lkdGhWYWx1ZSI+CisgICAgPHZhbHVlPs+APC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1MCIgbmFtZT0icHJvcGVydHlQYW5lbFdpZHRoVmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPs6gzrvOrM+Ezr/PgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTEiIG5hbWU9InByb3BlcnR5UGFuZWxIZWlnaHRWYWx1ZSI+CisgICAgPHZhbHVlPs+FPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1MiIgbmFtZT0icHJvcGVydHlQYW5lbEhlaWdodFZhbHVlTGFiZWwiPgorICAgIDx2YWx1ZT7Ojs+Izr/PgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTMiIG5hbWU9InByb3BlcnR5T3BhY2l0eVNsaWRlciI+CisgICAgPHZhbHVlPs6RzrvOu86xzrPOriDOks6xzrjOvM6/z40gzpTOuc6xz4bOrM69zrXOuc6xz4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU0IiBuYW1lPSJicm93c2VyT3BlbiI+CisgICAgPHZhbHVlPs6Gzr3Ov865zrPOvM6xIM6mz4XOu867zr/OvM61z4TPgc63z4TOrjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTUiIG5hbWU9ImJyb3dzZXJDbG9zZSI+CisgICAgPHZhbHVlPs6azrvOtc6vz4POuc68zr8gzqbPhc67zrvOv868zrXPhM+BzrfPhM6uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1NiIgbmFtZT0iY29ubmVjdGlvbkxvc3RNZXNzYWdlIj4KKyAgICA8dmFsdWU+zpcgzqPPjc69zrTOtc+DzrcgzrzOtSDPhM6/IM6UzrnOsc66zr/OvM65z4PPhM6uIM+HzqzOuM63zrrOtS4gzqDPgc6tz4DOtc65IM69zrEgz4bOv8+Bz4TPjs+DzrXPhM61IM6+zrHOvc6sIM+EzrfOvSDOlc+GzrHPgc68zr/Os86uIM6uL866zrHOuSDOvc6xIM61zrvOrc6zzr7Otc+EzrUgz4TOvyDOlM6vzrrPhM+Fz4wgz4POsc+CLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTciIG5hbWU9IjU1NyI+CisgICAgPHZhbHVlPs6UzrXOr866z4TOt8+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1OCIgbmFtZT0ic3luYyBtZXNzYWdlIGhlYWRlciI+CisgICAgPHZhbHVlPs6jz4XOs8+Hz4HOv869zrnPg868z4zPgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTkiIG5hbWU9IlN5bmNocm9uaXppbmcgbWVzc2FnZSI+CisgICAgPHZhbHVlPs6jz4XOs8+Hz4HOv869zrnPg868z4zPgiDOp8+BzrfPg8+Ez47OvS4gzqDOsc+BzrHOus6xzrvOv8+NzrzOtSDPgM61z4HOuc68zq3Ovc61z4TOtS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYwIiBuYW1lPSJleHBvcnRUb1NWRyI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O86Rz4DOv864zq7Ous61z4XPg863IM+Jz4IgU1ZHJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjEiIG5hbWU9ImV4cG9ydFRvSW1hZ2UiPgorICAgIDx2YWx1ZT4mbHQ7dSZndDvOkc+Azr/OuM6uzrrOtc+Fz4POtyDPic+CIFBORyZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYyIiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7zpHPgM6/zrjOrs66zrXPhc+Dzrcgz4nPgiBKUEcmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MyIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O86Rz4DOv864zq7Ous61z4XPg863IM+Jz4IgUERGJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjQiIG5hbWU9ImV4cG9ydFRvSW1hZ2UiPgorICAgIDx2YWx1ZT4mbHQ7dSZndDvOkc+Azr/OuM6uzrrOtc+Fz4POtyDPic+CIFRJRiZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY1IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+zqXPgM61zr3OuM+NzrzOuc+Dzrc6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2NiIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPs6azrHPhM63zrPOv8+Bzq/OsTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY3IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+zpXPgM6xzr3OrM67zrfPiM63OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjgiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT7Oms6xzrzOr86xPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2OSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPs6kzr/PgM6/zrjOtc+Dzq/OsTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTcwIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+zojOvc6xz4HOvs63PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPs6bzq7Ovs63PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MiIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPs6kzq/PhM67zr/Pgjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTczIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+zqPPh8+MzrvOuc6/OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzQiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT7OoM+Bzr/Pg866zrHOu86tz4PPhM61IM6az4zPg868zr88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc1IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+zprOsc64zrfOvM61z4HOuc69zqw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc2IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+zprOrM64zrUgzpzOrs69zrE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc3IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+zprOrM64zrUgzojPhM6/z4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc4IiBuYW1lPSJhbGVydCI+CisgICAgPHZhbHVlPs6XIM6bzq7Ovs63IM68zrnOsc+CIM6jz4XOvc6szr3PhM63z4POt8+CIM+Az4HOrc+AzrXOuSDOvc6xIM61zq/Ovc6xzrkgzrzOtc+EzqwgzrHPgM+MIM+EzrfOvSDOiM69zrHPgc6+zrcgz4TOt8+CIM6jz4XOvc6szr3PhM63z4POt8+CITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzkiIG5hbWU9ImFsZXJ0Ij4KKyAgICA8dmFsdWU+zqDOsc+BzrHOus6xzrvOv8+NzrzOtSDOtc65z4POrM6zzrXPhM61IM6kzq/PhM67zr8hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MCIgbmFtZT0iNTgwIj4KKyAgICA8dmFsdWU+UlRMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MSIgbmFtZT0iNTgxIj4KKyAgICA8dmFsdWU+zpXOvc61z4HOs86/z4DOv865zq7Pg8+EzrUgzrHPhc+Ez4wgzrPOuc6xIM6zzrvPjs+Dz4POtc+CIM68zrUgzrTOuc6sz4TOsc6+zrcgzrHPgM+MIM+EzrEgzrTOtc6+zrnOrCDPgM+Bzr/PgiDPhM6xIM6xz4HOuc+Dz4TOtc+BzqwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MiIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT7Okc+Bz4fOuc66z4wgzqTOsc68z4DOu8+MPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MyIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT7OoM6xz4HOsc66zr/Ou86/z4XOuM6uz4PPhM61IM68zrHOs869zrfPhM6/z4bPic69zrfOvM6tzr3Otc+CIM6jz4XOvc6xzr3PhM6uz4POtc65z4Igzq4gzqPPhc68zrLOrM69z4TOsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODQiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+zqPPhc69zqzOvc+EzrfPg863IC0gzqPPhc69zrTOuc6sz4POus61z4jOtyDOvM61IDQgKM6tz4nPgiAxNikgzqfPgc6uz4PPhM61z4ImbHQ7YnIvJmd0O86MzrvOv865IM64zrEgzq3Ph86/z4XOvSDPgM+Bz4zPg86yzrHPg863IM+DzrUgzonPh86/IM66zrHOuSDOks6vzr3PhM61zr8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4NSIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT7Oo8+FzrzOss6szr0gLSDOo8+Fzr3OtM65zqzPg866zrXPiM63IM68zrUgzq3Pic+CIM66zrHOuSAyMDAgz4PPhc68zrzOtc+Ezq3Ph86/zr3PhM61z4ImbHQ7YnIvJmd0O86cz4zOvc6/IM6/IM6jz4XOvc+Ezr/Ovc65z4PPhM6uz4IgzrjOsSDOrc+HzrXOuSDOic+Hzr8gzrrOsc65IM6Szq/Ovc+EzrXOvy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg2IiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPs6UzrfOvM65zr/Phc+BzrPOr86xIM6nz4HOt8+Dz4TPjs69LCDOlM+JzrzOsc+Ezq/Pic69LCDOn8+BzrPOsc69zrnPg868z47OvSZsdDtici8mZ3Q7IM66zrHOuSDOkc67zrvOsc6zzq4gzpTOuc6xzrzPjM+Bz4bPic+DzrfPgi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg3IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT7Op8+Bzq7Pg8+EzrXPgiDOlM+JzrzOsc+Ezq/Ov8+FPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4OCIgbmFtZT0icm9vbSBBZG1pbmlzdHJhdGlvbiByb29tY2xpZW50cyBsaXN0Ij4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg5IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTAiIG5hbWU9InJvb20gQWRtaW5pc3RyYXRpb24gcm9vbWNsaWVudHMgbGlzdCI+CisgICAgPHZhbHVlPs6UPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5MSIgbmFtZT0ic3dmIHN5bmMgbWVzc2FnZSI+CisgICAgPHZhbHVlPs6mz4zPgc+Ez4nPg863IM6VzrPOs8+BzqzPhs6/z4UuIM6gzrHPgc6xzrrOsc67zr/Pjc68zrUgz4DOtc+BzrnOvM6tzr3Otc+EzrUgzrzOrc+Hz4HOuSDOvc6xIM+Dz4XOs8+Hz4HOv869zrnPg8+Ezr/Pjc69IM+MzrvOv865IM6/zrkgzqDOtc67zqzPhM61z4IuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5MiIgbmFtZT0idXBsb2FkIGRpYWxvZyI+CisgICAgPHZhbHVlPs6XIM6mz4zPgc+Ez4nPg863IM6fzrvOv866zrvOt8+Bz47OuM63zrrOtS4gzpzOtc+EzrHPhM+Bzr/PgM6uIM6VzrPOs8+BzqzPhs6/z4UgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5MyIgbmFtZT0idXBsb2FkIGRpYWxvZyI+CisgICAgPHZhbHVlPs6Izr3Osc+Bzr7OtyDOps+Mz4HPhM+Jz4POt8+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NCIgbmFtZT0idXBsb2FkIGRpYWxvZyI+CisgICAgPHZhbHVlPs6UzrnOrM67zr/Os86/z4IgzqbPjM+Bz4TPic+DzrfPgiDOus6xzrkgzpXOuc+DzrHOs8+JzrPOrs+COiDOoM6xz4HOsc66zrHOu86/z43OvM61IM61z4DOuc67zq3Ovs+EzrUgzq3Ovc6xIM6Rz4HPh861zq/OvyDOsc+Az4wgz4TOvyDOlM6vz4POus6/LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTUiIG5hbWU9InVwbG9hZCBEaWFsb2ciPgorICAgIDx2YWx1ZT7Okc66z43Pgc+Jz4POtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTYiIG5hbWU9InVwbG9hZCBEaWFsb2ciPgorICAgIDx2YWx1ZT7Olc+AzrnOu86/zrPOriDOkc+Bz4fOtc6vzr/PhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTciIG5hbWU9ImFkbWluaXN0cmF0aW9uIG5hdmlnYXRpb24iPgorICAgIDx2YWx1ZT7Oo8+Fzr3OtM6tz4POtc65z4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk4IiBuYW1lPSJjb25mYWRtaW4gdmFsdWUgbGlzdCI+CisgICAgPHZhbHVlPs6kzrnOvM6uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5OSIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPlN0cmVhbWlkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwMCIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPkxvZ2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwMSIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPs6jz4XOvc60zrXOtM61zrzOrc69zr/PgiDOkc+Az4w8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAyIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+zpTPic68zqzPhM65zr8gLyDOoM67zrHOr8+DzrnOvzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDMiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT7Okc+GzrHOr8+BzrXPg863IM6nz4HOrs+Dz4TOtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDQiIG5hbWU9ImtpY2sgdXNlciBjb25maXJtYXRpb24gZGlhbG9nIj4KKyAgICA8dmFsdWU+zpHPhs6xzq/Pgc61z4POtyDOp8+Bzq7Pg8+Ezrc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA1IiBuYW1lPSJraWNrIHVzZXIgY29uZmlybWF0aW9uIGRpYWxvZyI+CisgICAgPHZhbHVlPs6Yzq3Ou861z4TOtSDPgM+BzrHOs868zrHPhM65zrrOrCDOvc6xIM6yzrPOrM67zrXPhM61IM6xz4XPhM+Mzr0gz4TOv869IM6gzrXOu86sz4TOtyDOsc+Az4wgz4TOtyDOo8+Nzr3OtM61z4POtzsmbHQ7YnIvJmd0OyDOnM61IM6xz4XPhM+Mzr0gz4TOv869IM+Ez4HPjM+Azr8gzr8gzqDOtc67zqzPhM63z4IgzrHPhs6xzrnPgc61zq/PhM6xzrkgzrzPjM69zr8gzrHPgM+MIM+Ezr8gz4TPgc6tz4fOv869IM6Uz4nOvM6sz4TOuc6/IM66zrHOuSDOvM+Azr/Pgc61zq8gzr3OsSDPg8+Fzr3OtM61zrjOtc6vIM6+zrHOvc6sLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDYiIG5hbWU9ImtpY2sgdXNlciBtZXNzYWdlIGRpYWxvZyI+CisgICAgPHZhbHVlPs6XIM6jz43Ovc6/zrTPjM+CIM+DzrHPgiDOrc+HzrXOuSDOus67zrXOr8+DzrXOuSDOsc+Az4wgzpTOuc6xz4fOtc65z4HOuc+Dz4TOriDOriDOo8+Fzr3PhM6/zr3Ouc+Dz4TOri48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA3IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Bob25lIj4KKyAgICA8dmFsdWU+zqTOt867zq3Phs+Jzr3OvzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDgiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPs6fIM6nz4HOrs+Dz4TOt8+CIM61zq/Ovc6xzrkgzr8gzqPPhc69z4TOv869zrnPg8+Ezq7PgiDPhM6/z4Ugz4PPhc6zzrrOtc66z4HOuc68zq3Ovc6/z4UgzpTPic68zrHPhM6vzr/PhSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA5IiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT7OnyDOp8+Bzq7Pg8+EzrfPgiDOtc+AzrnPhM+Bzq3PgM61z4TOsc65IM69zrEgz4PPh861zrTOuc6sz4POtc65IM+AzqzOvc+JIM+Dz4TOv869IM6gzq/Ovc6xzrrOsS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEwIiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT4ozpXPgM6xzr0pzpXOus66zq/Ovc63z4POtyDOic+Hzr/PhS/Oks6vzr3PhM61zr8gzq4gzpHOu867zrHOs86uIM6hz4XOuM68zq/Pg861z4nOvSDOo8+Fz4POus61z4XOrs+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMSIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+zpXPgM65z4TPgc6tz4jPhM61IM+Dz4TOvyDOp8+Bzq7Pg8+Ezrcgzr3OsSDPg8+HzrXOtM65zqzPg861zrkgz4DOrM69z4kgz4PPhM6/zr0gzqDOr869zrHOus6xPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMiIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+zpHPhs6xzrnPgc6tz4PPhM61IM+EzrcgzrTPhc69zrHPhM+Mz4TOt8+EzrEgz4PPh861zrTOr86xz4POt8+CIM+AzqzOvc+JIM+Dz4TOv869IM6gzq/Ovc6xzrrOsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTMiIG5hbWU9ImNvbmZlcmVuY2VQYW5lbHMiPgorICAgIDx2YWx1ZT7Op8+Bzq7Pg8+EzrXPgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTQiIG5hbWU9ImNvbmZlcmVuY2VQYW5lbHMiPgorICAgIDx2YWx1ZT7Okc+Bz4fOtc6vzrE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE1IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+zqDOr869zrHOus6xz4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE2IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+zqPPhc69zr/OvM65zrvOr86xPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxNyIgbmFtZT0ib3JnYW5pemF0aW9uIGNob29zZSBpbmZvIj4KKyAgICA8dmFsdWU+zp8gzpvOv86zzrHPgc65zrHPg868z4zPgiDPg86xz4IgzrHOvc+EzrnPg8+Ezr/Ouc+HzrXOryDPg861IM+Azr/Ou867zrHPgM67zr/Pjc+CIM6fz4HOs86xzr3Ouc+DzrzOv8+Nz4IuIM6gzrHPgc6xzrrOsc67zr/Pjc68zrUgzrXPgM65zrvOrc6+z4TOtSDOrc69zrHOvSDOsc+Az4wgzrHPhc+Ezr/Pjc+CIM6zzrnOsSDPhM63IM+Dz4XOs866zrXOus+BzrnOvM6tzr3OtyDOo8+Nzr3Ov860zr8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxOCIgbmFtZT0iZXJyb3IgbWVzc2FnZSByb29tIGZ1bGwiPgorICAgIDx2YWx1ZT7Okc+Fz4TPjCDPhM6/IM6Uz4nOvM6sz4TOuc6/IM61zq/Ovc6xzrkgz4DOu86uz4HOtc+CLiDOoM6xz4HOsc66zrHOu86/z43OvM61IM60zr/Ous65zrzOrM+Dz4TOtSDOvs6xzr3OrCDOsc+BzrPPjM+EzrXPgc6xLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTkiIG5hbWU9InJvb210eXBlcyI+CisgICAgPHZhbHVlPs6kz43PgM6/z4IgzpTPic68zrHPhM6vzr/PhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjAiIG5hbWU9ImFwcG9pbnRlZF9yb29tIj4KKyAgICA8dmFsdWU+zpTPic68zqzPhM65zr8gzqPPhc69zqzOvc+EzrfPg863z4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIxIiBuYW1lPSJzZXJ2ZXJ0aW1lIj4KKyAgICA8dmFsdWU+zqfPgc+Mzr3Ov8+CIM6UzrnOsc66zr/OvM65z4PPhM6uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyMiIgbmFtZT0iaW52X3JlbWluZGVyX3RlbXBsYXRlX2hlYWQiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgLSDOpc+AzrXOvc64z43OvM65z4POtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjMiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2Zyb20iPgorICAgIDx2YWx1ZT7OnM6uzr3Phc68zrEgzrHPgM+MIM+Ezr/OvSDOp8+Bzq7Pg8+Ezrc6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNCIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfbWVzc2FnZSI+CisgICAgPHZhbHVlPs6czq7Ovc+FzrzOsTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI1IiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9jbGlja190ZXh0Ij4KKyAgICA8dmFsdWU+zprOrM69z4TOtSDOus67zrnOuiDPg861IM6xz4XPhM+Mzr0gz4TOvyDOo8+Nzr3OtM61z4POvM6/IM6zzrnOsSDOvc6xIM+Dz4XOvM68zrXPhM6sz4PPh861z4TOtSDPg8+EzrnPgiDOo8+Fzr3Osc69z4TOrs+DzrXOuc+COjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjYiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2NsaWNrX3RleHRfbGluayI+CisgICAgPHZhbHVlPs6azqzOvc+EzrUgzrrOu865zrogzrXOtM+OIM6zzrnOsSDOvc6xIM61zrnPg86tzrvOuM61z4TOtSDPg8+Ezr8gzpTPic68zqzPhM65zr88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI3IiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9jbGlja190ZXh0X2hlbHAiPgorICAgIDx2YWx1ZT7Okc69IM6tz4fOtc+EzrUgz4DPgc6/zrLOu86uzrzOsc+EzrEgzrzOtSDPhM6/IM6jz43Ovc60zrXPg868zr8sIM+AzrHPgc6xzrrOsc67zr/Pjc68zrUgzrHOvc+EzrnOs8+BzqzPiM+EzrUgzrrOsc65IM61z4DOuc66zr/Ou867zq7Pg8+EzrUgzrHPhc+Ez4wgz4PPhM6/IM6mz4XOu867zr/OvM61z4TPgc63z4TOriDPg86xz4I6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyOCIgbmFtZT0iYnRuX3NlYXJjaF9pbnRlcm4iPgorICAgIDx2YWx1ZT7Olc+Dz4nPhM61z4HOuc66zq4gzpHOvc6xzrbOrs+EzrfPg863PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyOSIgbmFtZT0iYnRuX3NlYXJjaF9leHRlcm4iPgorICAgIDx2YWx1ZT7Olc6+z4nPhM61z4HOuc66zq4gzqDPgc6/z4POuM6uzrrOtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzAiIG5hbWU9ImxibF9wcmVuYW1lIj4KKyAgICA8dmFsdWU+zozOvc6/zrzOsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzEiIG5hbWU9ImxibF9uYW1lIj4KKyAgICA8dmFsdWU+zpXPgM+Ozr3Phc68zr88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMyIiBuYW1lPSJsYmxfZW1haWwiPgorICAgIDx2YWx1ZT5FbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzMiIG5hbWU9ImxvZ291dENvbmZpcm1fdGl0bGUiPgorICAgIDx2YWx1ZT7Olc+AzrnOss61zrLOsc6vz4nPg863IM6Rz4DOv8+Dz43Ovc60zrXPg863z4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM0IiBuYW1lPSJsb2dvdXRDb25maXJtX3N1cmVfdG9fbG9nb3V0X3F1ZXN0aW9uIj4KKyAgICA8dmFsdWU+zpjOrc67zrXPhM61IM+Dzq/Os86/z4XPgc6xIM69zrEgzrHPgM6/z4PPhc69zrTOtc64zrXOr8+EzrU7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNSIgbmFtZT0ibWFpbiBtZW51Ij4KKyAgICA8dmFsdWU+zpXOvc6tz4HOs861zrnOtc+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPs6Uz4nOvM6sz4TOuc6/IM6Vz4DOuc60zrXOr86+zrXPic69PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNyIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPs6nz4HPjM69zr/PgiDOlc+Azq/OtM61zrnOvs63z4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM4IiBuYW1lPSJtZWV0aW5nIFRpbWVyIj4KKyAgICA8dmFsdWU+zqfPgc6/zr3PjM68zrXPhM+Bzr8gzqPPhc69zqzOvc+EzrfPg863z4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM5IiBuYW1lPSJtZWV0aW5nIFRpbWVyIj4KKyAgICA8dmFsdWU+zpHPhc+Ez4wgz4TOvyDOlM+JzrzOrM+EzrnOvyDOtc6vzr3Osc65IM6tzr3OsSDOlM+JzrzOrM+EzrnOvyDOlc+AzrnOtM61zq/Ovs61z4nOvS4gzpPOuc6xIM69zrEgzrHPgM61zr3Otc+BzrPOv8+Azr/Ouc6uzrjOtc6vIM6xz4XPhM6uIM63IM61zrnOtM6/z4DOv86vzrfPg863IM+Az4HOrc+AzrXOuSDOvc6xIM6yz4HOtc6vz4TOtSDOrc69zrEgzpnOtM65z4nPhM65zrrPjCDOlM+JzrzOrM+EzrnOvyDOo8+Fzr3Osc69z4TOrs+DzrXPic69IM6zzrnOsSDPgM+Bzr/Pg8+Jz4DOuc66zq4gz4fPgc6uz4POtyDOriDOvc6xIM61zrPOus6xz4TOsc+Dz4TOrs+DzrXPhM61IM6UzrnOsc66zr/OvM65z4PPhM6uIM+EzrfPgiDOus+Fz4HOuc+Mz4TOt8+EzqzPgiDPg86xz4IuIM6Rz4XPhM+MzrzOsc+EzrcgzpHPgM6/z4PPjc69zrTOtc+Dzrcgz4POtTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQwIiBuYW1lPSJtZWV0aW5nIHJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT7Opc+Az4wgzqPPhc69z4TOv869zrnPg868z4w8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQxIiBuYW1lPSJtb2RlcmF0ZWQgcm9vbSB3YWl0aW5nIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7OoM6xz4HOsc66zrHOu86/z43OvM61IM+AzrXPgc65zrzOrc69zrXPhM61IM68zq3Ph8+Bzrkgzr3OsSDOtc65z4POrc67zrjOtc65IM+Dz4TOvyDOlM+JzrzOrM+EzrnOvyDOo8+Fzr3PhM6/zr3Ouc+Dz4TOrs+CLiDOvyDOo8+Fzr3PhM6/zr3Ouc+Dz4TOrs+CIM68z4DOv8+BzrXOryDOvc6xIM61zq/Ovc6xzrkgzrrOrM+Azr/Ouc6/z4IgzpTOrM+DzrrOsc67zr/PgiwgzpTOuc6xz4fOtc65z4HOuc+Dz4TOrs+CIM6uIM6/IM60zrfOvM65zr/Phc+BzrPPjM+CIM+Ezr/PhSDOlM+JzrzOsc+Ezq/Ov8+FLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDIiIG5hbWU9ImVycm9yIHBvcHVwIj4KKyAgICA8dmFsdWU+zpXOvc+EzqzOvs61zrk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQzIiBuYW1lPSJ3aW5kb3cgc2NyZWVuc2hhcmluZyI+CisgICAgPHZhbHVlPs6VzrnPg861z4HPh8+MzrzOtc69zrcgzpTOuc6xzrzOv86vz4HOsc+Dzrcgzp/OuM+Mzr3Ot8+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0NCIgbmFtZT0id2luZG93IHNjcmVlbiBzaGFyaW5nIj4KKyAgICA8dmFsdWU+zqXPgM6sz4HPh861zrkgzrzOuc6xIM69zq3OsSDOtc65z4POtc+Bz4fPjM68zrXOvc63IM6UzrnOsc68zr/Or8+BzrHPg863IM6fzrjPjM69zrfPgiDOsc+Az4wgz4TOvyDOp8+Bzq7Pg8+Ezrc6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0NSIgbmFtZT0id2luZG93IHNjcmVlbiBzaGFyaW5nIj4KKyAgICA8dmFsdWU+zojOvc6xz4HOvs63IM6UzrnOsc68zr/Or8+BzrHPg863z4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ2IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPs6gz4HOv8+DzrjOrs66zrcgzp3Orc6xz4IgzqPPhc69zqzOvc+EzrfPg863z4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ3IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPs6Uz4nOvM6sz4TOuc6/IM6jz4XOvc6xzr3PhM6uz4POtc+Jzr08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ4IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPs6Uz4nOvM6sz4TOuc6/IM6jz4XOvM6yzqzOvc+Ez4nOvTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDkiIG5hbWU9Im1haW4gbWVudSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+zqPPhc69z4TOv869zrnPg868z4zPgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTAiIG5hbWU9Im1lbnUgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPs6jz4XOvc+Ezr/Ovc65z4POvM+Mz4IgzqfPgc63z4PPhM+Ozr08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUxIiBuYW1lPSJtZW51IG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT7Oo8+Fzr3PhM6/zr3Ouc+DzrzPjM+CIM6Uz4nOvM6xz4TOr8+Jzr08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUyIiBuYW1lPSJtb2RlcmF0b3Igb3JnIj4KKyAgICA8dmFsdWU+zqM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUzIiBuYW1lPSJjb25maXJtIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT7OmM6xIM64zq3Ou86xz4TOtSDOvc6xIM68zrXPhM6xz4TPgc6tz4jOtc+EzrUgzrHPhc+Ez4zOvSDPhM6/IM6nz4HOrs+Dz4TOtyDPg861IM6jz4XOvc+Ezr/Ovc65z4PPhM6uIM+Ezr/PhSDOn8+BzrPOsc69zrnPg868zr/PjTs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU0IiBuYW1lPSJlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+zqDOsc+BzrHOus6xzrvOv8+NzrzOtSDOtc+AzrnOu86tzr7PhM61IM6tzr3Osc69IM6fz4HOs86xzr3Ouc+DzrzPjCDPgM+BzrnOvSDPgM+Bzr/Pg8+AzrHOuM6uz4POtc+EzrUgzr3OsSDPgM+Bzr/Pg864zq3Pg861z4TOtSDOus6sz4DOv865zr/OvSDOp8+Bzq7Pg8+Ezrcgz4POtSDOsc+Fz4TPjM69ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTUiIG5hbWU9ImNob29zZSB1c2VyIHdpbmRvdyI+CisgICAgPHZhbHVlPs6fz4HOs86xzr3Ouc+DzrzPjM+CIC0gzqPPhc69z4TOv869zrnPg8+Ezq7PgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTYiIG5hbWU9Im1vZGVyYXRvciBvcmcgdXNlcnMiPgorICAgIDx2YWx1ZT7OmM6tzrvOtc+EzrUgz4DPgc6xzrPOvM6xz4TOuc66zqwgzr3OsSDOtM65zrHOs8+BzqzPiM61z4TOtSDOsc+Fz4TPjM69IM+Ezr8gzqfPgc6uz4PPhM63IM6xz4DPjCDPhM6/zr0gzp/Pgc6zzrHOvc65z4POvM+MOzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTciIG5hbWU9Im9yZyBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+zpHPhc+Ez4zPgiDOvyDOp8+Bzq7Pg8+EzrfPgiDOtc6vzr3Osc65IM6jz4XOvc+Ezr/Ovc65z4PPhM6uz4IhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1OCIgbmFtZT0ib3JnIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT7Okc+Fz4TPjM+CIM6/IM6nz4HOrs+Dz4TOt8+CIM60zrXOvSDOtc6vzr3Osc65IM6jz4XOvc+Ezr/Ovc65z4PPhM6uz4IuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1OSIgbmFtZT0iZXJyb3IgbWVzc2FnZSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+zpjOrc67zrXPhM61IM6xz4XPhM+Mz4Igzr8gzqfPgc6uz4PPhM63z4Igzr3OsSDOvM63zr0gzrXOr869zrHOuSDOo8+Fzr3PhM6/zr3Ouc+Dz4TOrs+CIM+Ezr/PhSDOn8+BzrPOsc69zrnPg868zr/PjTs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYwIiBuYW1lPSJtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+zqDPgc6/z4POuM6tz4PPhM61IM6uIM60zrnOsc6zz4HOrM+Iz4TOtSDOp8+Bzq7Pg8+EzrXPgi/OlM+JzrzOrM+EzrnOsSDPg8+Ezr/OvSDOn8+BzrPOsc69zrnPg868z4wgz4POsc+CLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjEiIG5hbWU9ImRlbGV0ZSBjb25maXJtIHF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+zpjOrc67zrXPhM61IM+Az4HOsc6zzrzOsc+EzrnOus6sIM69zrEgzrTOuc6xzrPPgc6sz4jOtc+EzrUgzrHPhc+Ezq7OvSDPhM63zr0gzpXOs86zz4HOsc+Gzq47PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MiIgbmFtZT0iZGVsZXRlIGNvbmZpcm0gcXVlc3Rpb24gdXNlciBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+zpjOrc67zrXPhM61IM+Az4HOsc6zzrzOsc+EzrnOus6sIM69zrEgzrTOuc6xzrPPgc6sz4jOtc+EzrUgzrHPhc+Ez4zOvSDPhM6/IM6nz4HOrs+Dz4TOtyDOsc+Az4wgz4TOv869IM6fz4HOs86xzr3Ouc+DzrzPjCDPg86xz4I7IM6YzrEgzrTOuc6xzrPPgc6xz4bOtc6vIM68z4zOvc6/IM63IM6jz43Ovc60zrXPg863IM68zrXPhM6xzr7PjSDPhM6/z4UgzqfPgc6uz4PPhM63IM66zrHOuSDPhM6/z4Ugzp/Pgc6zzrHOvc65z4POvM6/z40uIM6TzrnOsSDOvc6xIM60zrnOsc6zz4HOrM+IzrXPhM61IM+Az4HOsc6zzrzOsc+EzrnOus6sIM+Ezr/OvSDOp8+Bzq7Pg8+Ezrcgz4DPgc6tz4DOtc65IM69zrEgz4PPhc69zrTOtc64zrXOr8+EzrUgz4PPhM6/zr0gzqDOr869zrHOus6xIM6UzrnOsc+HzrXOr8+BzrnPg863z4IuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MyIgbmFtZT0iZXJyb3IgbWVzc2FnZSBzZWxmIGRlbGV0aW5nIj4KKyAgICA8dmFsdWU+zpTOtc69IM68z4DOv8+BzrXOr8+EzrUgzr3OsSDOtM65zrHOs8+BzqzPiM61z4TOtSDPhM6/IM60zrnOus+MIM+DzrHPgiDOp8+Bzq7Pg8+EzrchPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NCIgbmFtZT0iZXJyb3IgbWVzc2FnZSBhdXRoIj4KKyAgICA8dmFsdWU+zpHPhc+Ezq4gzrcgzpzOrc64zr/OtM6/z4Igz4fPgc61zrnOrM62zrXPhM6xzrkgzpvOv86zzrHPgc65zrHPg868z4wgzpTOuc6xz4fOtc65z4HOuc+Dz4TOriDOs865zrEgzr3OsSDOtc66z4TOtc67zrXPg8+EzrXOryE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY1IiBuYW1lPSJlcnJvciBtZXNzYWdlIFNPQVAiPgorICAgIDx2YWx1ZT7OlM61zr0gz4XPgM6sz4HPh861zrkgzqPPjc69zr/OtM6/z4Igz4DOv8+FIM69zrEgz4PPh861z4TOr862zrXPhM6xzrkgzrzOtSDPhM6/IM+Dz4XOs866zrXOus+BzrnOvM6tzr3OvyDOms+JzrTOuc66z4wgzpHPgc65zrjOvM+MIChJRCkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NiIgbmFtZT0iZXJyb3IgbWVzc2FnZSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+zqDPgc+MzrrOtc65z4TOsc65IM6zzrnOsSDOm86/zrPOsc+BzrnOsc+DzrzPjCDOlM65zrHPh861zrnPgc65z4PPhM6uIM6uIM6jz4XOvc+Ezr/Ovc65z4PPhM6uISDOlyDOtc+AzrXOvs61z4HOs86xz4POr86xIM+Ezq3PhM6/zrnPic69IM6bzr/Os86xz4HOuc6xz4POvM+Ozr0gzrXOr869zrHOuSDOtM+Fzr3Osc+Ezq4gzrzPjM69zr8gzrHPgM+MIM+Ezr/OvSDOoM6vzr3Osc66zrEgzpTOuc6xz4fOtc6vz4HOuc+DzrfPgi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY3IiBuYW1lPSJlbWFpbCB2ZXJpZmljYXRpb24iPgorICAgIDx2YWx1ZT7Ok865zrEgz4TOt869IM6/zrvOv866zrvOrs+Bz4nPg863IM+EzrfPgiDOlc6zzrPPgc6xz4bOrs+CIM+DzrHPgiDPgM6xz4HOsc66zrHOu86/z43OvM61IM66zqzOvc+EzrUgzrrOu865zrogz4PPhM6/zr0gz4DOsc+BzrHOus6sz4TPiSDOo8+Nzr3OtM61z4POvM6/IM6uIM6xzr3PhM65zrPPgc6sz4jPhM61IM+Ezr8gVVJMIM+Dz4TOt869IM68z4DOrM+BzrEgz4TOv8+FIM6mz4XOu867zr/OvM61z4TPgc63z4TOriDPg86xz4IuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2OCIgbmFtZT0iZW1haWwgdmVyaWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+zprOrM69z4TOtSDOus67zrnOuiDOs865zrEgzr3OsSDOtc+AzrnOss61zrLOsc65z47Pg861z4TOtSDPhM6/IEVtYWlsIM+DzrHPgi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY5IiBuYW1lPSJlcnJvck1lc3NhZ2VfVXNlckFjdGl2YXRpb25TZXJ2bGV0IFtBY3RpdmF0ZVVzZXJdIj4KKyAgICA8dmFsdWU+zpTOtc69IM6yz4HOrc64zrfOus61IFjPgc6uz4PPhM63z4IgzrPOuc6xIM+Ezrcgz4PPhc6zzrrOtc66z4HOuc68zq3Ovc63IM+EzrnOvM6uIEhhc2guPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3MCIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPs6Rz4XPhM+Mz4Igzr8gWM+Bzq7Pg8+EzrfPgiDOrc+HzrXOuSDOtc69zrXPgc6zzr/PgM6/zrnOt864zrXOryDOrs60zrchPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3MSIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPs6fIM6bzr/Os86xz4HOuc6xz4POvM+Mz4Igz4POsc+CIM61zr3Otc+BzrPOv8+Azr/Ouc6uzrjOt866zrUgzrzOtSDOtc+AzrnPhM+Fz4fOr86xITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzIiIG5hbWU9ImVycm9yTWVzc2FnZV9Vc2VyQWN0aXZhdGlvblNlcnZsZXQgW0FjdGl2YXRlVXNlcl0iPgorICAgIDx2YWx1ZT7Oo8+Fzr3OtM61zrjOtc6vz4TOtSDOpM+Oz4HOsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzMiIG5hbWU9ImxvZ2luRXJyb3JNZXNzYWdlID0gdXNlciB3YXMgbm90IGFjdGl2YXRlZCI+CisgICAgPHZhbHVlPs6fIM6bzr/Os86xz4HOuc6xz4POvM+Mz4Igz4POsc+CIM60zrXOvSDOtc6vzr3Osc65IM61zr3Otc+BzrPOv8+Azr/Ouc63zrzOrc69zr/PgiEgzqfPgc63z4POuc68zr/PgM6/zrnOtc6vz4PPhM61IM+Az4HPjs+EzrEgz4TOvyDOo8+Nzr3OtM61z4POvM6/IM+Azr/PhSDOss+Bzq/Pg866zrXPhM6xzrkgz4PPhM6/IEVtYWlsIM+Azr/PhSDOu86szrLOsc+EzrUgzrrOsc+Ezqwgz4TOt869IM60zrnOrM+BzrrOtc65zrEgz4TOt8+CIM6VzrPOs8+BzrHPhs6uz4Igz4POsc+CLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzQiIG5hbWU9InJlZ2lzdGVyIHZlcmlmaWNhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+zpXOs86zz4HOsc+Gzq7Ous6xz4TOtSDOvM61IM61z4DOuc+Ez4XPh86vzrEuIM6Izr3OsSDOvM6uzr3Phc68zrEgzrzOtSDOlc+AzrHOvc6xzrvOt8+Az4TOuc66z4wgzprPic60zrnOus+MIM6tz4fOtc65IM+Dz4TOsc67zrXOryDPg8+Ezr8gRW1haWwgz4POsc+CLiDOoM6xz4HOsc66zrHOu86/z43OvM61IM61zrvOrc6zzr7PhM61IM+Ezr8gzqTOsc+Hz4XOtM+Bzr/OvM61zq/OvyDPg86xz4IuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3NSIgbmFtZT0icGFydGljaXBhbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+zpHPhs6xzq/Pgc61z4POtyDOo8+Fzr3PhM6/zr3Ouc+Dz4TOuc66zr/PjSDOoc+MzrvOv8+FIM6xz4DPjCDOsc+Fz4TPjM69IM+Ezr8gzqfPgc6uz4PPhM63LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzYiIG5hbWU9InBhcnRpY2lwYW50cyBwYW5lbCI+CisgICAgPHZhbHVlPs6gzrHPgc6xz4fPjs+BzrfPg863IM6UzrnOus6xzrnPic68zqzPhM+Jzr0gzqPPhc69z4TOv869zrnPg868zr/PjSDPg861IM6xz4XPhM+Mzr0gz4TOvyDOp8+Bzq7Pg8+EzrcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3NyIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+zqfPgc6uz4PPhM63z4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc4IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7OoM+Bz4zPg86yzrHPg863IM+Dz4TOv869IM6gzq/Ovc6xzrrOsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzkiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPs6jz4XOvc+Ezr/Ovc65z4PPhM6uz4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgwIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7Oo8+Fzr3PhM6/zr3Ouc+DzrzPjM+COiDOlc+AzrnOu86tzr7PhM61IM66zqzPgM6/zrnOv869IM6nz4HOrs+Dz4TOtyDOsc+Az4wgz4TOtyDOm86vz4PPhM6xIM6zzrnOsSDOvc6xIM+Ezr/PhSDPgM6xz4HOsc+Hz4nPgc6uz4POtc+EzrUgz4TOvyDOo8+Fzr3PhM6/zr3Ouc+DzrzPjCDOus6xzrkgz4DPgc+Mz4POss6xz4POtyDPg861IM6gzq/Ovc6xzrrOsSDOriDOks6vzr3PhM61zr8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+zpHPhc+Ez4zPgiDOvyDOp8+Bzq7Pg8+EzrfPgiDOtc6vzr3Osc65IM6uzrTOtyDOo8+Fzr3PhM6/zr3Ouc+Dz4TOrs+CLCDOv8+Az4zPhM61IM6tz4fOtc65IM6xz4XPhM+MzrzOsc+EzrEgzpTOuc66zrHOuc+OzrzOsc+EzrEgzqPPh861zrTOr86xz4POt8+CLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODIiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCBlcnJvciI+CisgICAgPHZhbHVlPs6gz4HPjM66zrXOuc+EzrHOuSDOs865zrEgzrXPg86sz4IhIM6UzrXOvSDOvM+Azr/Pgc61zq/PhM61IM69zrEgzrHPhs6xzrnPgc6tz4POtc+EzrUgzrTOuc66zrHOuc+OzrzOsc+EzrEgzqPPhc69z4TOv869zrnPg868zr/PjSDOsc+Az4wgz4TOv869IM61zrHPhc+Ez4wgz4POsc+CLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODMiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPs6Vz4DOuc+Ez4HOrc+Iz4TOtSDPg861IM6xz4XPhM+Mzr0gz4TOv869IM6nz4HOrs+Dz4TOtyDOvc6xIM6UzrfOvM6/z4POuc61z43Pg861zrkgz4TOv869IM6Jz4fOvy/Oks6vzr3PhM61z4wgz4TOv8+FLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODQiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPs6Rz4bOsc6vz4HOtc+DzrcgzonPh86/z4UvzpLOr869z4TOtc6/IM+Ezr/PhSDPg8+FzrPOus61zrrPgc65zrzOrc69zr/PhSDOp8+Bzq7Pg8+EzrcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4NSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+zpjOsSDOrs64zrXOu86xIM69zrEgzrHOvc6xzrvOrM6yz4kgz4TOv869IM6jz4XOvc+Ezr/Ovc65z4POvM+MIM6xz4XPhM6/z40gz4TOv8+FIM6Uz4nOvM6xz4TOr86/z4UuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4NiIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+zpjOsSDOrs64zrXOu86xIM69zrEgz4PPh861zrTOuc6sz4PPiSDPgM6szr3PiSDPg8+Ezr/OvSDOoM6vzr3Osc66zrEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4NyIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+zpjOsSDOrs64zrXOu86xIM69zrEgzrzOv865z4HOsc+Dz4TPjiDPhM6/zr0gzonPh86/L86Szq/Ovc+EzrXPjCDOvM6/z4UuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4OCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+zpXOr8+DzrHPg8+EzrUgzr8gzqPPhc69z4TOv869zrnPg8+Ezq7PgiDOsc+Fz4TOv8+NIM+Ezr/PhSDOlM+JzrzOsc+Ezq/Ov8+FLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODkiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPs6cz4DOv8+BzrXOr8+EzrUgzr3OsSDPg8+HzrXOtM65zqzPg861z4TOtSDPgM6szr3PiSDPg8+Ezr/OvSDOoM6vzr3Osc66zrEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5MCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+zpzPgM6/z4HOtc6vz4TOtSDOvc6xIM68zr/Ouc+BzrHPg8+EzrXOr8+EzrUgz4TOv869IM6Jz4fOvy/Oks6vzr3PhM61z4wgz4POsc+CLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTEiIG5hbWU9ImVycm9ydHlwZSI+CisgICAgPHZhbHVlPs6czq7Ovc+FzrzOsSDPg8+Ezr8gzqPPhc69z4TOv869zrnPg8+Ezq48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkyIiBuYW1lPSJhcHBseSBmb3IgbW9kIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7OnyDOp8+Bzq7Pg8+EzrfPgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTMiIG5hbWU9ImFwcGx5IGZvciBtb2QgbWVzc2FnZSI+CisgICAgPHZhbHVlPs64zrEgzq7OuM61zrvOtSDOvc6xIM6xzr3Osc67zqzOss61zrkgz4TOvyDOo8+Fzr3PhM6/zr3Ouc+DzrzPjC4gzqfPgc63z4POuc68zr/PgM6/zrnOrs+Dz4TOtSDPhM6xIM6VzrnOus6/zr3Or860zrnOsSDOms6xz4TOrM+Dz4TOsc+DzrfPgiDOtM6vz4DOu86xIM+Dz4TOvyDOp8+Bzq7Pg8+EzrcgKM6bzq/Pg8+EzrEgzqfPgc63z4PPhM+Ozr0pIM6zzrnOsSDOvc6xIM6xzr3Osc64zq3Pg861z4TOtSDOriDOvc6xIM6xz4bOsc65z4HOrc+DzrXPhM61IM+Ezr8gzqPPhc69z4TOv869zrnPg868z4wuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5NCIgbmFtZT0iYXBwbHkgZm9yIHdoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT7OuM6xIM6uzrjOtc67zrUgzr3OsSDPg8+HzrXOtM65zqzPg861zrkgz4DOrM69z4kgz4PPhM6/zr0gzqDOr869zrHOus6xLiDOp8+BzrfPg865zrzOv8+Azr/Ouc61zq/Pg8+EzrUgz4TOsSDOlc65zrrOv869zq/OtM65zrEgzprOsc+EzqzPg8+EzrHPg863z4IgzrTOr8+AzrvOsSDPg8+Ezr8gzqfPgc6uz4PPhM63ICjOm86vz4PPhM6xIM6nz4HOt8+Dz4TPjs69KSDOs865zrEgzr3OsSDPgM6xz4HOsc+Hz4nPgc6uz4POtc+EzrUgzq4gzr3OsSDOsc+GzrHOuc+Bzq3Pg861z4TOtSDOtM65zrrOsc65z47OvM6xz4TOsSDPg8+HzrXOtM6vzrHPg863z4Igz4DOrM69z4kgz4PPhM6/zr0gzqDOr869zrHOus6xLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTUiIG5hbWU9IjY5NSI+CisgICAgPHZhbHVlPs64zrEgzq7OuM61zrvOtSDOvc6xIM68zr/Ouc+BzrHPg8+EzrXOryDPhM6/zr0gzonPh86/L86Szq/Ovc+EzrXPjCDPhM6/z4UuIM6nz4HOt8+DzrnOvM6/z4DOv865zrXOr8+Dz4TOtSDPhM6xIM6VzrnOus6/zr3Or860zrnOsSDOms6xz4TOrM+Dz4TOsc+DzrfPgiDOtM6vz4DOu86xIM+Dz4TOvyDOp8+Bzq7Pg8+EzrcgKM6bzq/Pg8+EzrEgzqfPgc63z4PPhM+Ozr0pIM6zzrnOsSDOvc6xIM+AzrHPgc6xz4fPic+Bzq7Pg861z4TOtSDOriDOvc6xIM6xz4bOsc65z4HOrc+DzrXPhM61IM+Ezr8gzrTOuc66zrHOr8+JzrzOsSDOv8+Azr/Ouc6/z4XOtM6uz4DOv8+EzrUgzqfPgc6uz4PPhM63IM69zrEgzrzOv865z4HOrM62zrXPhM6xzrkgzonPh86/L86Szq/Ovc+EzrXOvy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk2IiBuYW1lPSJtb2RlcmF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7OoM+Bzq3PgM61zrkgzr3OsSDPgM61z4HOuc68zq3Ovc61z4TOtSDOvM6tz4fPgc65IM69zrEgzrXOuc+Dzq3Ou864zrXOuSDOus6sz4DOv865zr/PgiDOo8+Fzr3PhM6/zr3Ouc+Dz4TOrs+CIM+Dz4TOvyDOlM+JzrzOrM+EzrnOvy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk3IiBuYW1lPSJjYWxlbmRhciBidXR0b24iPgorICAgIDx2YWx1ZT7Okc66z43Pgc+Jz4POtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTgiIG5hbWU9ImNhbGVuZGFyIGJ1dHRvbiI+CisgICAgPHZhbHVlPs6Rz4DOv864zq7Ous61z4XPg863PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5OSIgbmFtZT0iY2FsZW5kYXIgY29tcG9uZW50Ij4KKyAgICA8dmFsdWU+zpfOvM6tz4HOsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDAiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPs6czq7Ovc6xz4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAxIiBuYW1lPSJjYWxlbmRhciBjb21wb25lbnQiPgorICAgIDx2YWx1ZT7OiM+Ezr/PgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDIiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7Ops+Mz4HPhM+Jz4POtyDOkc+Bz4fOtc6vzr/PhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDMiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7OoM+Bzr/Pg864zq7Ous63IM6mzrHOus6tzrvOv8+FPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwNCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPs6Rzr3Osc69zq3Pic+Dzrc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA1IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+zqPOus6/z4XPgM6vzrTOuc6xPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwNiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPs6kzrEgzpHPgc+HzrXOr86xIM6czr/PhSAoSG9tZSBEcml2ZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA3IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+zpHPgc+HzrXOr86xIM6Uz4nOvM6xz4TOr86/z4UgKFB1YmxpYyBEcml2ZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA4IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+zqDPgc6/z4POuM6uzrrOtyDOkc+Bz4fOtc6vzr/PhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDkiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7OoM+Bzr/Pg864zq7Ous63IM6mzrHOus6tzrvOv8+FPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPs6UzrnOsc6zz4HOsc+Gzq4gzqbOsc66zq3Ou86/z4U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzExIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+zpXPgM61zr7Otc+BzrPOsc+Dzq/OsSDOn869z4zOvM6xz4TOv8+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPs6dzq3Ov8+CIM6mzqzOus61zrvOv8+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMyIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPs6Yzq3Ou861z4TOtSDPg86vzrPOv8+Fz4HOsSDOvc6xIM60zrnOsc6zz4HOrM+IzrXPhM61IM+Ezr8gz4PPhc6zzrrOtc66z4HOuc68zq3Ovc6/IM6jz4TOv865z4fOtc6vzr87PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxNCIgbmFtZT0idXNlciBhZG1pbiI+CisgICAgPHZhbHVlPs6Rzr3Osc62zq7PhM63z4POtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTUiIG5hbWU9InVzZXIgYWRtaW4iPgorICAgIDx2YWx1ZT7Okc69zrHOts6uz4TOt8+Dzrc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE2IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+zobOvc6/zrnOs868zrEgzpXOs86zz4HOrM+Gzr/PhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTciIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7Olc68z4bOrM69zrnPg863IM+MzrvPic69IM+Ez4nOvSDOkc+Bz4fOtc6vz4nOvSAozpTOtc69zrTPgc65zrrOriDOlc65zrrPjM69zrEpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxOCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPs6azrvOtc6vz4POuc68zr8gzpXOs86zz4HOrM+Gzr/PhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTkiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7OlM65zrHOs8+BzrHPhs6uIM6Rz4HPh861zq/Ov8+FPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyMCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPs6UzrXOvSDOtc+AzrnPhM+Bzq3PgM61z4TOsc65IM69zrEgz4PPh861zrTOuc6sz4POtc+EzrUgz4TOr8+Azr/PhM6xIM+AzqzOvc+JIM+Dz4TOv869IM6gzq/Ovc6xzrrOsS4gzqDPgc6tz4DOtc65IM69zrEgzrPOr869zrXPhM61IM6jz4XOvc+Ezr/Ovc65z4PPhM6uz4Igzq4gz4TOv8+FzrvOrM+HzrnPg8+Ezr/OvSDOvc6xIM6xz4DOv866z4TOrs+DzrXPhM61IM60zrnOus6xzrnPjs68zrHPhM6xIM6Vz4DOtc6+zrXPgc6zzrHPg86vzrHPgiDPhM6/z4UgzqDOr869zrHOus6xLiDOnM+Azr/Pgc61zq/PhM61IM69zrEgzrbOt8+Ezq7Pg861z4TOtSDOsc+Az4wgzq3Ovc6xIM6jz4XOvc+Ezr/Ovc65z4PPhM6uIM69zrEgz4POsc+CIM+AzrHPgc6xz4fPic+Bzq7Pg861zrkgz4TOrc+Ezr/Ouc6xIM60zrnOus6xzrnPjs68zrHPhM6xLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjEiIG5hbWU9InByb3BlcnR5IHBhbmVsIj4KKyAgICA8dmFsdWU+zpnOtM65z4zPhM63z4TOtc+CIM6VzrPOs8+BzqzPhs6/z4U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIyIiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT7OiM69zrHPgc6+zrcgzqDOtc67zqzPhM63IChleHRlcm5hbCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIzIiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT7OiM69zrHPgc6+zrcgzqDOtc67zqzPhM63IChIVFRQKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjQiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPs6azqzPgM6/zrnOv8+CIM6nz4HOrs+Dz4TOt8+CIM64zq3Ou861zrkgzr3OsSDOvM6/zrnPgc6xz4PPhM61zq8gz4TOt869IM6fzrjPjM69zrcgz4TOv8+FLiDOlc+AzrnOuM+FzrzOtc6vz4TOtSDOvc6xIM+EzrfOvSDOtM61zq/PhM61PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjUiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPs6Rz4XPhM6uzr0gz4TOtyDPg8+EzrnOs868zq4gzrzOv865z4HOrM62zrXPg8+EzrUgz4TOt869IM6Vz4DOuc+GzqzOvc61zrnOsSDOlc+BzrPOsc+Dzq/Osc+CIM+DzrHPgi4gzpPOuc6xIM+EzrfOvSDOtM65zrHOus6/z4DOriDPhM63z4IgzqPPhc69z4zOtM6/z4UgzpTOuc6xzrzOv86vz4HOsc+DzrfPgiDPgM6xz4HOsc66zrHOu86/z43OvM61IM+AzrHPhM6uz4PPhM61IM+Ezr8gzrrOv8+FzrzPgM6vIM6UzrnOsc66zr/PgM6uz4Igz4PPhM6/IM6UzrnOsc68zr/Ouc+BzrHOts+MzrzOtc69zr8gzqDOtc67zqzPhM63LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjYiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPs6jz43Ovc6/zrTOv8+CIM6UzrnOsc68zr/Or8+BzrHPg863z4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI3IiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT7Oic60zrcgzrzOv865z4HOrM62zrXPg8+EzrUgz4TOt869IM6Vz4DOuc+GzqzOvc61zrnOsSDOlc+BzrPOsc+Dzq/Osc+CIM+DzrHPgiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI4IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPs6gz4HOv86yzr/Ou86uIM6Vz4DOuc+GzqzOvc61zrnOsc+CIM6Vz4HOs86xz4POr86xz4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI5IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPs6Izr7Ov860zr/PgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzAiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+zpTOuc6xzrzOv865z4HOsc+Dz4TOrs+CIM6Vz4DOuc+GzqzOvc61zrnOsc+CIM6Vz4HOs86xz4POr86xz4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMxIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPs6gzrHPhM6uz4PPhM61ICLOiM69zrHPgc6+zrcgzpTOuc6xzrzOv86vz4HOsc+DzrfPgiIgzrPOuc6xIM69zrEgzrTOt868zr/Pg865zr/PgM6/zrnOrs+DzrXPhM61IM+EzrfOvSDOn864z4zOvc63IM+DzrHPgi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMyIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPs6Izr3Osc+Bzr7OtyDOlM65zrHOvM6/zq/Pgc6xz4POt8+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT7OpM61z4HOvM6xz4TOuc+DzrzPjM+CIM6UzrnOsc68zr/Or8+BzrHPg863z4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM0IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPs6Vz4DOuc67zr/Os86uIM6gzrXPgc65zr/Ph86uz4Igzp/OuM+Mzr3Ot8+COjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzUiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+zpzOtc+EzrHOss6/zrvOriDOoM67zqzPhM6/z4XPgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzYiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+zp8gzpTOuc6xzrzOv865z4HOsc+Dz4TOrs+CIM+EzrXPgc68zqzPhM65z4POtSDPhM63zr0gz4PPhc6zzrrOtc66z4HOuc68zq3Ovc63IM6jz43Ovc6/zrTOvyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM3IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPs6czrXPhM6xzrLOv867zq4gzo7PiM6/z4XPgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+zpHPgc+HzrnOus+MIM6jzrfOvM61zq/Ovy1YPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczOSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT7Okc+Bz4fOuc66z4wgzqPOt868zrXOr86/LVk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQwIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPs6gzrvOrM+Ezr/Pgjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQxIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPs6Oz4jOv8+COjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDIiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+zpcgzqPPjc69zrTOtc+Dzrcgzq3Ous67zrXOuc+DzrUgzrHPgM+MIM+Ezr/OvSDOlM65zrHOus6/zrzOuc+Dz4TOriE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQzIiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPs6RzrrPjc+Bz4nPg863PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NCIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT7Olc6+z4nPhM61z4HOuc66zq4gzojOvc6xz4HOvs63PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NSIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT7Okc69IM66zrvOtc6vz4POtc+EzrUgz4DOu86uz4HPic+CIM6xz4XPhM6uzr0gz4TOt869IM6jz43Ovc6/zrTOvyDOtM61zr0gzrjOsSDOvM+Azr/Pgc61zq/PhM61IM69zrEgzrXPgM6xzr3Otc66zrrOuc69zq7Pg861z4TOtSDPhM63zr0gz4DPgc6/zrLOv867zq4gzrPOuc6xIM+EzrfOvSDPg8+FzrPOus61zrrPgc65zrzOrc69zrcgzqPPjc69zr/OtM6/ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDYiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+zpXPgM65zrLOtc6yzrHOr8+Jz4POtyDOpM61z4HOvM6xz4TOuc+DzrzOv8+NIM6jz4XOvc+MzrTOv8+FIM6gz4HOv86yzr/Ou86uz4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ3IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPs6UzrnOsc68zr/Or8+BzrHPg863IM6fzrjPjM69zrfPgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDgiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+zqPPjc69zr/OtM6/z4IgzpXOs86zz4HOsc+Gzq7PgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDkiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT7Okc+Az4wgzprOv865zr3Ov8+NIM6mz4XOu867zr/OvM6tz4TPgc63z4POtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTAiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT7Om8+Fz4DOv8+NzrzOsc+Dz4TOtSwgLi4uIM6fIEZpcmVmb3ggz4PPhM6xIFdpbmRvd3MgzrTOtc69IM61zrzPhs6xzr3Or862zrXOuSDOus6xzrjOsc+Bzqwgz4TOt869IM6Rz4DPjCDOms6/zrnOvc6/z40gzqbPhc67zrvOv868zq3PhM+BzrfPg863IChDby1Ccm93c2luZykuIM6gzrHPgc6xzrrOsc67zr/Pjc68zrUgz4fPgc63z4POuc68zr/PgM6/zrnOrs+Dz4TOtSDOus6sz4DOv865zr/OvSDOrM67zrvOvyDOps+FzrvOv868zrXPhM+BzrfPhM6uIM6zzrnOsSDOvc6xIM66zqzOvc61z4TOtSDPh8+Bzq7Pg863IM+Ezr/PhSDPg8+FzrPOus61zrrPgc65zrzOrc69zr/PhSDPh86xz4HOsc66z4TOt8+BzrnPg8+EzrnOus6/z40uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MSIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPs6gz4HOv863zrPOv8+NzrzOtc69zr88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUyIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+zpXPgM+MzrzOtc69zr88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUzIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+zpXPgM6xzr3Osc+Gz4zPgc+Ez4nPg863PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1NCIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPs6Rz4HPh865zrrOriDOo861zrvOr860zrE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU1IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+zqbPjM+Bz4TPic+Dzrc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU2IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+zqDPgc6/z4POuM6uzrrOtyDPhM6/z4Ugz4PPhc6zzrrOtc66z4HOuc68zq3Ovc6/z4UgV2Vic2l0ZSDPic+CIM6Vzr4nzr/Pgc65z4POvM6/z40gV2Vic2l0ZSDPg8+Ezr8gzqDPgc6/z4bOr867IM+DzrHPgi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU3IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+zpTOv866zrnOvM6uIM6VzrPOus6xz4TOrM+Dz4TOsc+DzrfPgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTgiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT7Olc67zq3Os86+z4TOtSDPhM63zr0gzrXOs866zrHPhM6sz4PPhM6xz4POtyDPhM6/z4UgzpzOuc66z4HOv8+Gz47Ovc6/z4UgzrrOsc65IM+EzrfPgiDOms6szrzOtc+BzqzPgiDPg86xz4Igz4DPgc65zr0gzrXOuc+Dzq3Ou864zrXPhM61IM+DzrUgzrrOrM+Azr/Ouc6/IM6Uz4nOvM6sz4TOuc6/LCDOvM6xzrPOvc63z4TOv8+DzrrOv8+Az47Ovc+EzrHPgiDOs865zrEgzrrOrM+Azr/Ouc6xIM60zrXPhc+EzrXPgc+MzrvOtc+Az4TOsS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU5IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+zp3OsSDOvM63zr0gzrXOvM+GzrHOvc65z4PPhM61zq8gzrHPhc+Ez4zPgiDOvyDOrc67zrXOs8+Hzr/PgiDOvs6xzr3OrC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYwIiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+zpHOus+Nz4HPic+Dzrc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYxIiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+zqPPhc69zrTOuc6sz4POus61z4jOtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjIiIG5hbWU9ImVkaXQgdmlkZW8gc2V0dGluZ3MiPgorICAgIDx2YWx1ZT7Onc6xIM68zrfOvSDOtc+Bz4nPhM63zrjPjiDOvs6xzr3OrC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYzIiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+UkVDPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlBMQVk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY1IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+zpzPgM6/z4HOtc6vz4TOtSDOvc6xIM+Dz4XOvc61z4fOr8+DzrXPhM61IM+Hz4nPgc6vz4IgzrXOu86tzrPPh86/z4XPgiDOsc69IM60zrXOvSDPg8+HzrXOtM65zqzOts61z4TOtSDOvc6xIM60zrfOvM6/z4POuc6/z4DOv865zq7Pg861z4TOtSDPhM63zr0gz4bPic69zq4gzq4gz4TOt869IM61zrnOus+Mzr3OsSDPg86xz4IuIM6fzrkgzqPPhc68zrzOtc+Ezq3Ph86/zr3PhM61z4Igz4fPic+Bzq/PgiDOic+Hzr8gzq4gzpLOr869z4TOtc6/IM68z4DOv8+Bzr/Pjc69IM69zrEgzrrOrM69zr/Phc69IM+Hz4HOrs+Dzrcgz4TOv8+FIM6gzq/Ovc6xzrrOsSwgzr3OsSDOvM6/zrnPgc6szrbOv869z4TOsc65IM+EzrfOvSDOlc+AzrnPhs6szr3Otc65zrEgzpXPgc6zzrHPg86vzrHPgiDPhM6/z4XPgiDOriDOvc6xIM6zz4HOrM+Gzr/Phc69IM68zrfOvc+NzrzOsc+EzrEgzqPPhc69zr/OvM65zrvOuc+Ozr0uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NiIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlNUT1A8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY3IiBuYW1lPSI3NjciPgorICAgIDx2YWx1ZT7OnM6tz4TPgc6/IM6Vz4DOuc+Azq3OtM6/z4U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY4IiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+zojOvc6xz4HOvs63PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2OSIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPs6Izr3Osc+Bzr7OtyDOo8+Fzr3OtM65zqzPg866zrXPiM63z4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzcwIiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+zojOvc6xz4HOvs63IM6jz4XOvM6yzqzOvc+Ezr/PgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzEiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT7Olc+AzrnOu86/zrPOriDOlM+JzrzOsc+Ezq/Ov8+FPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MiIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPs6IzrvOtc6zz4fOv8+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MyIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPs6Izr3Osc+Bzr7OtyDOo8+Fzr3OtM65zqzPg866zrXPiM63z4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc0IiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+zpTOuc6xzrTOuc66zrHPg86vzrEgzqPPhc69zrTOuc6sz4POus61z4jOt8+COjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzUiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT7OnM6xzrPOvc63z4TOv8+DzrrPjM+AzrfPg863PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NiIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPs6dzrEgzrzOt869IM6zzq/Ovc61z4TOsc65IM6IzrvOtc6zz4fOv8+CIM6Jz4fOv8+FL86Szq/Ovc+EzrXOvyAozpzOsc6zzr3Ot8+Ezr/Pg866z4zPgM63z4POtykgz4DPgc65zr0gzrHPgM+MIM+EzrfOvSDOtc6vz4POv860zr8gz4POtSDOo8+Fzr3OtM65zqzPg866zrXPiM63LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzciIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT7OlM63zrzPjM+DzrnOsSDOlM+JzrzOrM+EzrnOsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzgiIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT7Oo8+EzrEgzpTOt868z4zPg865zrEgzpTPic68zqzPhM65zrEgzq3Ph86/z4XOvSDPgM+Bz4zPg86yzrHPg863IM+MzrvOv865IM6/zrkgzqfPgc6uz4PPhM61z4IuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3OSIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPs6ZzrTOuc+Jz4TOuc66zqwgzpTPic68zqzPhM65zrE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgwIiBuYW1lPSJQcml2YXRlIFJvb21zIj4KKyAgICA8dmFsdWU+zqPPhM6xIM6ZzrTOuc+Jz4TOuc66zqwgzpTPic68zqzPhM65zrEgzq3Ph86/z4XOvSDPgM+Bz4zPg86yzrHPg863IM68z4zOvc6/IM6/zrkgzqfPgc6uz4PPhM61z4Igz4TOv8+FIM6vzrTOuc6/z4Ugzp/Pgc6zzrHOvc65z4POvM6/z40uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MSIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPs6kzrEgzpTPic68zqzPhM65zqwgzpzOv8+FPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MiIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPs6kzrEgzpTPic68zqzPhM65zrEgz4TOv8+FIM+Dz4XOs866zrXOus+BzrnOvM6tzr3Ov8+FIM+EzrzOrs68zrHPhM6/z4IgzrTOt868zrnOv8+Fz4HOs86/z43Ovc+EzrHOuSDOs865zrEgz4DPgc6/z4PPic+AzrnOus6uIM+Hz4HOrs+DzrcgzrzOrc+DzrEgzrHPgM+MIM+Ezr8gzpfOvM61z4HOv867z4zOs865zr8gzrrOsc65IM60zrnOsc64zq3PhM6/z4XOvSDOvM65zrEgzrHPgc+HzrnOus6uIM66zrHOuSDOvM65zrEgz4TOtc67zrnOus6uIM63zrzOtc+Bzr/OvM63zr3Or86xLiDOnM+Mzr3OvyDOrc6zzrrPhc+BzrEgzpTPic68zqzPhM65zrEgzrXOvM+GzrHOvc6vzrbOv869z4TOsc65IM61zrTPji48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgzIiBuYW1lPSJyZXN0cmljdGVkIHJvb20iPgorICAgIDx2YWx1ZT7OoM+Bzq3PgM61zrkgzr3OsSDOtc6vz4POsc+Dz4TOtSDOo8+Fzr3PhM6/zr3Ouc+Dz4TOrs+CIM6zzrnOsSDOvc6xIM+Az4HOsc6zzrzOsc+Ezr/PgM6/zrnOrs+DzrXPhM61IM+EzrfOvSDPg8+FzrPOus61zrrPgc65zrzOrc69zrcgzrXOvc6tz4HOs861zrnOsS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg0IiBuYW1lPSJtZW51IG9wdGlvbiI+CisgICAgPHZhbHVlPs6Rzq/PhM63z4POtyDOo8+Fzr3PhM6/zr3Ouc+DzrzOv8+NPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NSIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT7Okc6vz4TOt8+DzrcgzqDPgc+Mz4POss6xz4POt8+CIM+Dz4TOv869IM6gzq/Ovc6xzrrOsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODYiIG5hbWU9Im1lbnUgb3B0aW9uIj4KKyAgICA8dmFsdWU+zpHOr8+EzrfPg863IM6gz4HPjM+DzrLOsc+DzrfPgiDPg861IM6azqzOvM61z4HOsS/OnM65zrrPgc+Mz4bPic69zr88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg3IiBuYW1lPSJlcnJvciBtZXNzYWdlIHNvYXAgc2VjdXJlIGxvZ2luIj4KKyAgICA8dmFsdWU+zpcgz4PPhc6zzrrOtc66z4HOuc68zq3Ovc63IM+EzrnOvM6uIEhhc2ggzqPPhc69z4zOtM6/z4Ugzq3Ph861zrkgz4fPgc63z4POuc68zr/PgM6/zrnOt864zrXOryDOrs60zrcuIM6UzrXOvSDOvM+Azr/Pgc61zq/PhM61IM69zrEgz4TOt869IM+Hz4HOt8+DzrnOvM6/z4DOv865zq7Pg861z4TOtSDOvs6xzr3OrCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg4IiBuYW1lPSJkYXNoYm9hcmQgYnV0dG9uIj4KKyAgICA8dmFsdWU+zpXOnc6RzqHOns6XPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4OSIgbmFtZT0iZXhpdCBjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+zpXOp86ZzqQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkwIiBuYW1lPSJjb25mZXJlbmNlIHZpZXciPgorICAgIDx2YWx1ZT7OmM6tzrvOtc+EzrUgz4DPgc6xzrPOvM6xz4TOuc66zqwgzr3OsSDOtc6zzrrOsc+EzrHOu861zq/PiM61z4TOtSDPhM63zr0gzqPPhc69zrTOuc6sz4POus61z4jOtzsgzprOsc67z4wgzrjOsSDOrs+EzrHOvSDOvc6xIM66zrHOuM6xz4HOr8+DzrXPhM61IM+Ezr/OvSDOoM6vzr3Osc66zrEgzrrOsc65IM+Ezr8gzpnPg8+Ezr/Pgc65zrrPjCDOo8+Fzr3Ov868zrnOu865z47OvSDOus6xzrkgzr3OsSDOsc+GzrHOuc+Bzq3Pg861z4TOtSDOiM6zzrPPgc6xz4bOsSDPgM6/z4Ugz4DOuc64zrHOvc+Oz4Igzq3Ph86/z4XOvSDPhs6/z4HPhM+JzrjOtc6vLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTEiIG5hbWU9ImNvbmZlcmVuY2UgdmlldyI+CisgICAgPHZhbHVlPs6Izr7Ov860zr/PgiDOsc+Az4wgz4TOt869IM6jz4XOvc60zrnOrM+DzrrOtc+Izrc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkyIiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT7OlM+JzrzOrM+EzrnOsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTMiIG5hbWU9Im1haW4gbWVudSI+CisgICAgPHZhbHVlPs6Vz4DOuc67zq3Ovs+EzrUgzpTPic68zqzPhM65zr8gzrPOuc6xIM6jz4XOvc6szr3PhM63z4POtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTQiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+zqXPgM6sz4HPh861zrkgzrrOrM+Azr/Ouc6/IM68zrcgzrHPgM6/zrjOt866zrXPhc68zq3Ovc6/IM6jz4XOvM6yzqzOvSDPg8+Ezr8gzpfOvM61z4HOv867z4zOs865zr8uIM6gzrHPgc6xzrrOsc67zr/Pjc68zrUgzrXOr8+EzrUgzr3OsSDPhM6/IM6xz4DOv864zrfOus61z43Pg861z4TOtSDOtc6vz4TOtSDOvc6xIM+Ezr8gzrHPhs6xzrnPgc6tz4POtc+EzrUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5NSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT7OoM6xz4HOsc66zrHOu86/z43OvM61IM+Az4HOv8+DzrjOrc+Dz4TOtSDPhM6/z4XOu86sz4fOuc+Dz4TOv869IM6tzr3Osc69IM6jz4XOvM68zrXPhM6tz4fOv869z4TOsSDPg8+EzrfOvSDOo8+Fzr3OrM69z4TOt8+Dzq4gz4POsc+CITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTYiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+zpjOrc67zrXPhM61IM+Az4HOsc6zzrzOsc+EzrnOus6sIM69zrEgzrTOuc6xzrPPgc6sz4jOtc+EzrUgzrHPhc+Ez4wgz4TOvyDOo8+FzrzOss6szr07PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5NyIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT7OoM+Bzr/Otc65zrTOv8+Azr/Or863z4POtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTgiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+zqDPgc6/z4POuM6uzrrOtyDOo8+FzrzOss6szr3PhM6/z4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk5IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPs6czq3Pgc6xPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT7Olc6yzrTOv868zqzOtM6xPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT7OnM6uzr3Osc+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMiIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT7OoM61z4HOuc6zz4HOsc+Gzq48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAzIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPs6jz4XOvM68zrXPhM6tz4fOv869z4TOtc+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FOiDOlyDOoM67zrHPhM+Gz4zPgc68zrEgzqPOsc+CIM6zzrnOsSBXZWIgzqPPhc69zrTOuc6xz4POus6tz4jOtc65z4IuIM6cz4DOv8+BzrXOr8+EzrUgzr3OsSDOsc66zr/Ou86/z4XOuM6uz4POtc+EzrUgz4TOuc+CIM6fzrTOt86zzq/Otc+CLCDOvc6xIM+AzrHPhM6uz4POtc+EzrUgz4TOvyDOus6/z4XOvM+Azq8gzojOvc6xz4HOvs63z4IgzrrOsc65IM69zrEgzr7Otc66zrnOvc6uz4POtc+EzrUgzrHOvM6tz4PPic+CIM68zrnOsSDOo8+Fzr3OtM65zqzPg866zrXPiM63IM6uIM69zrEgzrzOtc+EzrEtz4bOtc+BzrjOtc6vz4TOtSDPg8+Ezr8gzpfOvM61z4HOv867z4zOs865zr8gzrrOsc65IM69zrEgz4DPgc6/zrPPgc6xzrzOvM6xz4TOr8+DzrXPhM61IM68zrnOsSDOo8+Fzr3OtM65zqzPg866zrXPiM63IM6zzrnOsSDPhM6/IM68zq3Ou867zr/OvS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA1IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT7Oo8+Hzq3OtM65zr8gzqPPhc69zqzOvc+EzrfPg863z4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA2IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+zpPOuc6xIM69zrEgz4DPgc6/zrPPgc6xzrzOvM6xz4TOr8+DzrXPhM61IM68zrnOsSDOo8+Fzr3OtM65zqzPg866zrXPiM63IM68z4DOv8+BzrXOr8+EzrUgzr3OsSDPgM+Bzr/Pg864zq3Pg861z4TOtSDOrc69zrEgzr3Orc6/IM6jz4XOvM6yzqzOvSDPg8+Ezr8gzpfOvM61z4HOv867z4zOs865zr8uIM6TzrnOsSDOus6szrjOtSDOo8+FzrzOss6szr0gz4TOv8+FIM6XzrzOtc+Bzr/Ou86/zrPOr86/z4UgzrTOt868zrnOv8+Fz4HOs861zq/PhM6xzrkgzrHPhc+Ez4zOvM6xz4TOsSDOrc69zrEgzpTPic68zqzPhM65zr8gzqPPhc69zrTOuc6xz4POus6tz4jOtc+Jzr0uIM6Vz4POtc6vz4IsIM68zqzOts65IM68zrUgz4zOu86/z4XPgiDPhM6/z4XPgiDOo8+FzrzOvM61z4TOrc+Hzr/Ovc+EzrXPgiDPg8+EzrfOvSDOo8+Fzr3OtM65zqzPg866zrXPiM63LCDOuM6xIM67zqzOss61z4TOtSDOrc69zrEgbWFpbCDOvM61IM+Dz43Ovc60zrXPg868zr8gz4PPhM6/IM+Dz4XOs866zrXOus+BzrnOvM6tzr3OvyDOlM+JzrzOrM+EzrnOvy4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7zpzPgM6/z4HOtc6vz4TOtSDOvc6xIM61z4DOuc67zq3Ovs61z4TOtSDOvM61z4TOsc6+z40gzrTOuc6xz4bOv8+BzrXPhM65zrrPjs69IM+Ez43PgM+Jzr0gzpTPic68zrHPhM6vz4nOvSDPgM6/z4Ugzq3Ph86/z4XOvSDOtM65zrHPhs6/z4HOtc+EzrnOus6tz4IgzrTOuc6xz4TOrM6+zrXOuc+CIM66zrHOuSDOtM65zrHPhs6/z4HOtc+EzrnOus6sIM+Dz4XPg8+Ezq7OvM6xz4TOsSDOo8+Fzr3PhM6/zr3Ouc+DzrzOv8+NLiDOnM+Azr/Pgc61zq/PhM61IM61z4DOr8+DzrfPgiDOvc6xIM61z4DOuc67zq3Ovs61z4TOtSDOvM61z4TOsc6+z40gzrTOuc6xz4bOv8+BzrXPhM65zrrPjs69IM+Ez43PgM+Jzr0gzpXOuc60zr/PgM6/zq/Ot8+DzrfPgiDOs865zrEgz4TOvyBtYWlsIM+Azr/PhSDOuM6xIM+Dz4TOsc67zrXOryDOs865zrEgzrrOrM64zrUgzqPPhc68zrLOrM69IM+Ezr/PhSDOl868zrXPgc6/zrvOv86zzq/Ov8+FLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDciIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT7Op8+BzrXOuc6szrbOtc+Dz4TOtSDOks6/zq7OuM61zrnOsTs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA4IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+zqDOtc+BzrnOv8+BzrnPg868zq3Ovc63PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwOSIgbmFtZT0ibHpjYWxlbmRlciI+CisgICAgPHZhbHVlPs6Rzr3Osc62zq7PhM63z4POtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTAiIG5hbWU9Imx6Y2FsZW5kZXIiPgorICAgIDx2YWx1ZT7OoM+Bzr/Pg864zq7Ous63PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMSIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPs6UzrXOvSDOrc+HzrXOuSDOtc+AzrnOu861zrPOtc6vIM6nz4HOrs+Dz4TOt8+CISDOoM6xz4HOsc66zrHOu86/z43OvM61IM61z4DOuc67zq3Ovs+EzrUgz4DPgc+Oz4TOsSDOrc69zrEgz4PPhM6/zrnPh861zq/OvyDOsc+Az4wgz4TOtyDOu86vz4PPhM6xIM66zrHOuSDOrc+AzrXOuc+EzrEgz4DOsc+Ezq7Pg8+EzrUgIs6gz4HOv8+DzrjOrs66zrciLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTIiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT7OoM+Bzr/Pg864zq7Ous63IM6jz4XOvM68zrXPhM6tz4fOv869z4TOsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTMiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT7Okc+Azr/OuM6uzrrOtc+Fz4POtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTQiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT7OlM65zrHOs8+BzrHPhs6uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxNSIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPs6bzrXPgM+Ezr/OvM6tz4HOtc65zrXPgiDOo8+FzrzOss6szr3PhM6/z4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE2IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+zpXOviBPz4HOuc+DzrzOv8+NIM6jz4XOvc+Ezr/Ovc65z4PPhM6tz4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+zpHOvc+Oz4TOtc+Bzr/PgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTgiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTkiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT7OjM69zr/OvM6xPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyMCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyMSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPs6gz4HOv8+DzrjOrs66zrcgzp3Orc6/z4UgzpXOviBPz4HOuc+DzrzOv8+NIM6jz4XOvc+Ezr/Ovc65z4PPhM6uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyMiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPs6Vzq/Ovc6xzrkgzpHOvc+Oz4TOtc+Bzr/PgiDOo8+Fzr3PhM6/zr3Ouc+Dz4TOrs+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyMyIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPs6Rzr0gz4TOvyDOlM+JzrzOrM+EzrnOvyDOtc6vzr3Osc65IM+Dz4XOvc+Ezr/Ovc65zrbPjM68zrXOvc6/LCDOv865IM6nz4HOrs+Dz4TOtc+CIM61z4DOuc+Azq3OtM6/z4UgzqPPhc69z4TOv869zrnPg8+Ezq4gzq4gzpTOuc6xz4fOtc65z4HOuc+Dz4TOriDOs86vzr3Ov869z4TOsc65IM6xz4XPhM+MzrzOsc+EzrEgzqPPhc69z4TOv869zrnPg8+Ezq3PgiDPjM+EzrHOvSDOtc65z4POrc67zrjOv8+Fzr0gz4PPhM6/IM6Uz4nOvM6sz4TOuc6/LiDOkc69IM64zq3Ou861z4TOtSDOvM+Mzr3OvyDOus6sz4DOv865zr/PgiDPg8+FzrPOus61zrrPgc65zrzOrc69zr/PgiDOp8+Bzq7Pg8+EzrfPgiDOvc6xIM6zzq/Ovc61zrkgzqPPhc69z4TOv869zrnPg8+Ezq7PgiDPh8+BzrfPg865zrzOv8+Azr/Ouc6uz4PPhM61IM+EzrfOvSDOtc+AzrnOu86/zrPOriDOlc6+IM6fz4HOuc+DzrzOv8+NIM6jz4XOvc+Ezr/Ovc65z4PPhM6uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjQiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT7OiM69zrHPgiDOkc69z47PhM61z4HOv8+CIM6jz4XOvc+Ezr/Ovc65z4PPhM6uz4IgzrXOr869zrHOuSDPgM6szr3PhM6xIM6jz4XOvc+Ezr/Ovc65z4PPhM6uz4Igz4zPhM6xzr0gzrXOuc+Dzq3Pgc+HzrXPhM6xzrkgz4POtSDOus6sz4DOv865zr8gzpTPic68zqzPhM65zr8gzrrOsc65IM66zrHOvc61zq/PgiDOtM61zr0gzrzPgM6/z4HOtc6vIM69zrEgzrHPhs6xzrnPgc6tz4POtc65IM+Ezr8gzqPOrs68zrEgzqPPhc69z4TOv869zrnPg868zr/PjSDOsc+Az4wgzrHPhc+Ez4zOvS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI1IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+zpXPhs6xz4HOvM6/zrPOriDOkc69z47PhM61z4HOv8+FIM6jz4XOvc+Ezr/Ovc65z4POvM6/z40gz4POtSDOp8+Bzq7Pg8+Ezrc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI2IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+zpHPhs6xzq/Pgc61z4POtyDOkc69z47PhM61z4HOv8+FIM6jz4XOvc+Ezr/Ovc65z4POvM6/z40gzrHPgM+MIM6nz4HOrs+Dz4TOtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT7OlDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjgiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT7OnM61IM+EzrfOvSDPgM+Bzr/Pg864zq7Ous63IM61zr3PjM+CIM6fz4HOs86xzr3Ouc+DzrzOv8+NIM+DzrUgzq3Ovc6xIM6Uz4nOvM6sz4TOuc6/LCDOvM+Mzr3OvyDOv865IM6nz4HOrs+Dz4TOtc+CIM+Azr/PhSDOsc69zq7Ous6/z4XOvSDPg8+Ezr/OvSDPg8+FzrPOus61zrrPgc65zrzOrc69zr8gzp/Pgc6zzrHOvc65z4POvM+MIM6tz4fOv8+Fzr0gz4DPgc+Mz4POss6xz4POtyDPg8+Ezr8gz4PPhc6zzrrOtc66z4HOuc68zq3Ovc6/IM60z4nOvM6sz4TOuc6/ICjOkc+Fz4TPjCDOuc+Dz4fPjc61zrkgzrzPjM69zr8gz4zPhM6xzr0gzrcgz4TOuc68zq4gIs6UzrfOvM+Mz4POuc6/IiDOtc6vzr3Osc65IM6vz4POtyDOvM61IGZhbHNlISkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyOSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPs6jz4XOvc+Ezr/Ovc65z4POvM+Mz4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODMwIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+zqDOtc+BzrnOv8+BzrnPg868zr/OrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzEiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT7On8+BzrPOsc69zrnPg868z4zPgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzIiIG5hbWU9ImNvbmZpcm0gYWN0aW9uIj4KKyAgICA8dmFsdWU+zpXOr8+Dz4TOtSDPg86vzrPOv8+Fz4HOv8+COzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzMiIG5hbWU9ImNvbmZpcm0gZGVsZXRlIj4KKyAgICA8dmFsdWU+zpjOrc67zrXPhM61IM+Az4HOsc6zzrzOsc+EzrnOus6sIM69zrEgzrTOuc6xzrPPgc6sz4jOtc+EzrUgz4TOvyDPg8+FzrPOus61zrrPgc65zrzOrc69zr8gzqPPhM6/zrnPh861zq/OvzsgzqDPgc6tz4DOtc65IM69zrEgz4DOsc+Ezq7Pg861z4TOtSDPhM6/IM66zr/Phc68z4DOryDOsc+Azr/OuM6uzrrOtc+Fz4POt8+CIM6zzrnOsSDOvc6xIM6xz4DOv864zrfOus61z4XPhM6/z43OvSDOv865IM6xzrvOu86xzrPOrc+CITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzQiIG5hbWU9InVzZXIgY2hvb3NlIGVycm9yIj4KKyAgICA8dmFsdWU+zpTOtc69IM6tz4fOtc65IM61z4DOuc67zrXOs861zq8gzrrOrM+Azr/Ouc6/z4IgzqfPgc6uz4PPhM63z4IhIM6gzrHPgc6xzrrOsc67zr/Pjc68zrUgzrXPgM65zrvOrc6+z4TOtSDPgM+Bz47PhM6xIM6tzr3Osc69IM6nz4HOrs+Dz4TOtyDOus6xzrkgzrzOtc+EzqwgzrrOrM69z4TOtSDPgM+Bzr/Pg864zq7Ous63LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzUiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT7OoM+Bzr/Pg864zq7Ous63IM6dzq3Ov8+FIM6Vzr4gzp/Pgc65z4POvM6/z40gzqPPhc69z4TOv869zrnPg8+Ezq48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM2IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+zpXPgM65zrjPhc68zrXOr8+EzrUgzr3OsSDPgM+Bzr/Pg864zq3Pg861z4TOtSDPhM6/IM6jzq7OvM6xIM6Rzr3Pjs+EzrXPgc6/z4UgzqPPhc69z4TOv869zrnPg868zr/PjSDPg861IM6xz4XPhM+Mzr0gz4TOv869IM6nz4HOrs+Dz4TOtzsgzojOvc6xz4IgzpHOvc+Oz4TOtc+Bzr/PgiDOo8+Fzr3PhM6/zr3Ouc+Dz4TOrs+CIM60zrXOvSDOtc6vzr3Osc65IM68z4zOvc6/IM6jz4XOvc+Ezr/Ovc65z4PPhM6uz4IgzrrOrM+Azr/Ouc6/z4UgzpTPic68zrHPhM6vzr/PhS4gzpXPgM65z4DOu86tzr/OvSwgzrrOsc69zq3Ovc6xz4IgzqzOu867zr/PgiDOo8+Fzr3PhM6/zr3Ouc+Dz4TOrs+CIM60zrXOvSDOvM+Azr/Pgc61zq8gzr3OsSDOsc+GzrHOuc+Bzq3Pg861zrkgz4TOvyDOo86uzrzOsSDOo8+Fzr3PhM6/zr3Ouc+DzrzOv8+NIM6xz4DPjCDOsc+Fz4TPjM69LiDOoM+Bzq3PgM61zrkgzr3OsSDOsc+Azr/OuM63zrrOtc+Nz4POtc+EzrUgz4TOvyDOkc69z4TOuc66zrXOr868zrXOvc6/IM6Uz4nOvM6xz4TOr86/z4UgzrPOuc6xIM+EzrfOvSDOsc+Azr/OuM6uzrrOtc+Fz4POtyDPhM+Jzr0gz4PPhc6zzrrOtc66z4HOuc68zq3Ovc+Jzr0gz4HPhc64zrzOr8+DzrXPic69ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT7Olc+AzrnOuM+FzrzOtc6vz4TOtSDOvc6xIM6xz4bOsc65z4HOrc+DzrXPhM61IM+Ezr8gzqPOrs68zrEgzpHOvc+Oz4TOtc+Bzr/PhSDOo8+Fzr3PhM6/zr3Ouc+DzrzOv8+NIM6xz4DPjCDOsc+Fz4TPjM69IM+Ezr/OvSDOp8+Bzq7Pg8+Ezrc7IM6gz4HOrc+AzrXOuSDOvc6xIM6xz4DOv864zrfOus61z43Pg861z4TOtSDPhM6/IM6Rzr3PhM65zrrOtc6vzrzOtc69zr8gzpTPic68zrHPhM6vzr/PhSDOs865zrEgz4TOt869IM6xz4DOv864zq7Ous61z4XPg863IM+Ez4nOvSDPg8+FzrPOus61zrrPgc65zrzOrc69z4nOvSDPgc+FzrjOvM6vz4POtc+Jzr0hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzOCIgbmFtZT0ic3VwZXIgbW9kZXJhdG9yIj4KKyAgICA8dmFsdWU+zpHPhc+Ez4zPgiDOvyDOp8+Bzq7Pg8+EzrfPgiDOtc6vzr3Osc65IM6Rzr3Pjs+EzrXPgc6/z4IgzqPPhc69z4TOv869zrnPg8+Ezq7PgiEgzpTOtc69IM68z4DOv8+BzrXOr8+EzrUgzr3OsSDOsc+GzrHOuc+Bzq3Pg861z4TOtSDPhM6/IM6jzq7OvM6xIM6jz4XOvc+Ezr/Ovc65z4POvM6/z40gzrHPgM+MIM6tzr3Osc69IM6Rzr3Pjs+EzrXPgc6/IM6jz4XOvc+Ezr/Ovc65z4PPhM6uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzkiIG5hbWU9ImNvbmZpcm0gZGVsZXRlIj4KKyAgICA8dmFsdWU+zpjOrc67zrXPhM61IM+Az4HOsc6zzrzOsc+EzrnOus6sIM69zrEgzrTOuc6xzrPPgc6sz4jOtc+EzrUgz4TOvyDPg8+FzrPOus61zrrPgc65zrzOrc69zr8gzpHPgc+HzrXOr86/L86mzqzOus61zrvOvzs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQwIiBuYW1lPSJjb25maXJtIGRlbGV0ZSI+CisgICAgPHZhbHVlPs6UzrnOsc6zz4HOsc+Gzq4gzpHPgc+HzrXOr86/z4UvzqbOsc66zq3Ou86/z4U7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0MSIgbmFtZT0ic2FsdXRhdGlvbiI+CisgICAgPHZhbHVlPs6UzrnPgi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQyIiBuYW1lPSJzYWx1dGF0aW9uIj4KKyAgICA8dmFsdWU+zpTPgS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQzIiBuYW1lPSJwcm9wZXJ0eSBwYW5lbCB3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+zpnOtM65z4zPhM63z4TOtc+CPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NCIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPs6VzrzPhs6szr3Ouc+DzrcgzrjOrc+DzrfPgiDPgM6/zr3PhM65zrrOuc6/z40gz4PPhM6/z4XPgiDOuM61zrHPhM6tz4I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ1IiBuYW1lPSJwdWJsaXNoIG9wdGlvbiI+CisgICAgPHZhbHVlPlNoYXJlIEF1ZGlvIHdpdGggU0lQIEFwcGxldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDYiIG5hbWU9InB1Ymxpc2ggb3B0aW9uIj4KKyAgICA8dmFsdWU+U2hhcmUgQXVkaW8gd2l0aCBTSVAgYW5kIFZpZGVvIHdpdGggRmxhc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ3IiBuYW1lPSJkb2N1bWVudCBwYW5lbCI+CisgICAgPHZhbHVlPkZ1bGwtRml0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0OCIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+VmlldyBTY3JlZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ5IiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5UaGUgdXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTAiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPndhbnRzIHRvIHNoYXJlIGl0cyBzY3JlZW4uIERvIHlvdSB3YW50IHRvIHNlZSBpdD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUxIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5DbG9zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTIiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5ab29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MyIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPlRoZSBTZXNzaW9uIHdhcyBjbG9zZWQgYnkgdGhlIHNoYXJpbmcgVXNlciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU0IiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+UGF1c2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU1IiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+TmV3IFNjcmVlbiBTaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1NiIgbmFtZT0icHJlc2VudGVyIG1pbmkgaWNvbiI+CisgICAgPHZhbHVlPk1pbmltaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1NyIgbmFtZT0icHJlc2VudGVyIG1pbmkgaWNvbiI+CisgICAgPHZhbHVlPk1heGltaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1OCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+VmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU5IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5SZWNvcmRpbmcgVGltZWxpbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYwIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5NeSBSZWNvcmRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UHVibGljIFJlY29yZGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYyIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5JbmZvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjQiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkxlbmd0aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjUiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkRhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5CeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjciIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlBMQVk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY4IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5NYWluIC0gVmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY5IiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5SZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcwIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Zb3UgbWF5IHJlY29yZCBhbmQgc2hhcmUgeW91ciBzY3JlZW4gYXQgdGhlIHNhbWUgdGltZS4gVG8gZW5hYmxlIG90aGVycyB0byBzZWUgeW91ciBzY3JlZW4ganVzdCBoaXQgdGhlIHN0YXJ0IGJ1dHRvbiBvbiB0aGUgdG9wLiBUbyBvbmx5IHJlY29yZCB0aGUgU2Vzc2lvbiBpdCBpcyBzdWZmaWNpZW50IHRvIGNsaWNrIHN0YXJ0IHJlY29yZGluZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcxIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5TdGFydCBSZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcyIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5TdG9wIFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzMiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkRvd25sb2FkIHRoZSBGTFYtRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzQiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc1IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5QbGF5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3NiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+U3RvcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzciIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlVzZXIgaGFzIG1pY3JvcGhvbmUgb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc4IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlN0b3AgU2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzkiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+QWxsb3cgVXNlciBRdWVzdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgwIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPlR1cm4gdGhpcyBvZmYgdG8gcHJldmVudCB0aGF0IGFueSB1c2VyIGlzIGRpc3R1cmJpbmcgeW91IGluIHRoaXMgcm9vbS4gRWZmZWN0IGlzIHRoYXQgdGhlIEJ1dHRvbiB0byBhc2sgZm9yIE1vZGVyYXRpb24gKCJJIGhhdmUgYSBxdWVzdGlvbiIpIGlzIG5vdCB2aXNpYmxlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODEiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+UmlnaHRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RG93bmxvYWQgYXMgQVZJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RkxWPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QVZJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UmF3IFNjcmVlbnZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QXVkaW8gb25seTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODciIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlRoZSBoYXZlIGJlZW4gZXJyb3JzIHdoaWxlIHByb2Nlc3NpbmcgdGhlIFJlY29yZGluZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg4IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5UaGUgUmVjb3JkaW5nIGlzIG5vdCB5ZXQgcmVhZHkgZm9yIHdhdGNoaW5nLiBQbGVhc2UgcmV0cnkgaW4gYSBjb3VwbGUgb2YgbWludXRlcyBhZ2Fpbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg5IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Mb2c6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UmVjb3JkZXIgTWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTEiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk9rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MiIgbmFtZT0ic2lwIGFwcGxldCI+CisgICAgPHZhbHVlPlNJUCBBcHBsZXQgaXMgbm90IFJlYWR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MyIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNJUC1BY2NvdW50IFNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NCIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNJUCBzZXR0aW5ncyBmb3IgZWFjaCB1c2VyLiBZb3UgY2FuIHR1cm4gb24gb3Igb2ZmIFNJUCB2aWEgdGhlIEFkbWluaXN0cmF0aW9uICZndDsgQ29uZmlndXJhdGlvbiAoS2V5OiBlbmFibGVfc2lwKS4gVGhlIFNJUCBkYXRhIGZvciBlYWNoIHVzZXIgc2hvdWxkIGJlIGNyZWF0ZWQgYXV0b21hdGljYWxseS4gWW91IGNhbiByZS1jcmVhdGUgdGhlIGRhdGEgYnkgY2hlY2tpbmcgIlJlLWdlbmVyYXRlIFNJUCBEYXRhIjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTUiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TSVAtVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTYiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TaXAtUGFzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTciIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TaXAtQXV0aC1JZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTgiIG5hbWU9InNpcCBzdGF0dXMgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSBMb2dpbiB0byB0aGUgU0lQIEdhdGV3YXkgaGFzIGZhaWxlZC4gWW91IHNob3VsZCBjaGVjayB0aGUgYXV0aGVudGlmaWNhdGlvbiBkYXRhIG9mIHlvdXIgU0lQLVByb3ZpZGVyIGFuZCB0aGUgU0lQLUFjY291bnQgRGF0YSBmb3IgZWFjaCBVc2VyLiBBcyBBZG1pbmlzdHJhdG9yIHlvdSBhcmUgc3RpbGwgYWJsZSB0byBsb2dpbiBhbmQgY2hlY2sgdGhlIENvbmZpZ3VyYXRpb24uIEFzIFVzZXIgb3IgTW9kZXJhdG9yIHlvdSB3aWxsIGJlIGJsb2NrZWQgZnJvbSBhbnkgaW50ZXJhY3Rpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5OSIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIExvZ2luIHRvIHRoZSBTSVAgR2F0ZXdheSBoYXMgZmFpbGVkLiBDb250YWN0IHlvdXIgU2VydmljZSBUZWFtITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDAiIG5hbWU9InNpcCBzdGF0dXMgbWVzc2FnZSI+CisgICAgPHZhbHVlPkxvZ2dpbmcgaW4gdG8gU0lQLUdhdGV3YXkgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwMSIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TG9nZ2luZyBpbiB0byBTSVAtR2F0ZXdheSAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAyIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TaG93IExvZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDMiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkxvZyBtZXNzYWdlcyBmcm9tIHBvc3QgcmVjb3JkZXIgcHJvY2VzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDQiIG5hbWU9InNpcCBsb2dpbiI+CisgICAgPHZhbHVlPlNJUC1BcHBsZXQgTWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDUiIG5hbWU9InNpcCBsb2dpbiI+CisgICAgPHZhbHVlPlRoZSBTSVAtQXBwbGV0IGlzIG5vdCByZWFkeS4gQWNjZXB0IHRoZSBBcHBsZXQgcGxlYXNlIGFuZCBjbGljayBvayE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA2IiBuYW1lPSJtb2RlcmF0b3IgcG9wIHVwIj4KKyAgICA8dmFsdWU+R2V0IE1vZGVyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA3IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+U2F2ZSBBcHBvaW50bWVudCBDaGFuZ2VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwOCIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlRoZSBhcHBvaW50ZW1lbnQgaGFzIGJlZW4gY2hhbmdlZC4gRG8geW91IHdhbnQgdG8gc2F2ZSB0aG9zZSBjaGFuZ2VzPyAmbHQ7YnIvJmd0OyZsdDtici8mZ3Q7QWxsIGF0dGVuZGVlcyBvZiB0aGUgYXBwb2ludG1lbnQgd2lsbCByZWNlaXZlIGEgRU1haWwgd2l0aCB0aGUgdXBkYXRlZCBkYXRlIGFuZCB0aW1lIChkZXBlbmRpbmcgb24gdGhlIG5vdGlmaWNhdGlvbiB0eXBlIG9mIHRoaXMgYXBwb2ludG1lbnQpLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDkiIG5hbWU9ImZsdiByZWNvcmRlciBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VG8gYWNjZXNzIG90aGVyIHJlY29yZGluZ3MgeW91IGhhdmUgdG8gbG9naW4gdGhlICRBUFBfTkFNRSBBcHBsaWNhdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTEwIiBuYW1lPSJpbnRlcnZpZXcgdmlkZW8gcG9kIj4KKyAgICA8dmFsdWU+Q2hvb3NlIHRoZSBVc2VyIGZvciB0aGlzIFZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMSIgbmFtZT0iaW50ZXJ2aWV3IHZpZGVvIGNob29zZSB1c2VyIj4KKyAgICA8dmFsdWU+QXZhaWxhYmxlIFVzZXJzIGZvciB0aGlzIFBvZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTIiIG5hbWU9ImludGVydmlldyBpbmZvIj4KKyAgICA8dmFsdWU+WW91IGFyZSBhIE1vZGVyYXRvciBpbiB0aGlzIEludGVydmlldy4gWW91IGNhbiBkZWNpZGUgd2hvIGlzIHNwZWFraW5nIGluIHRoaXMgaW50ZXJ2aWV3IGFuZCB5b3UgY2FuIHN0YXJ0IC8gc3RvcCB0aGUgcmVjb3JkaW5nIG9mIHRoZSBTZXNzaW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTMiIG5hbWU9ImludGVydmlldyBidXR0b24gcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+U3RhcnQgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxNCIgbmFtZT0iaW50ZXJ2aWV3IGJ1dHRvbiByZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TdG9wIFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTUiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIHJlY29yZGluZyBvZiB0aGUgSW50ZXJ2aWV3IGlzIGFscmVhZHkgc3RhcnRlZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE2IiBuYW1lPSJpbnRlcnZpZXcgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSByZWNvcmRpbmcgaXMgYWxyZWFkeSBzdG9wcGVkIG9yIG5vdCBiZWVuIHN0YXJ0ZWQgeWV0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTciIG5hbWU9ImludGVydmlldyByZWNvcmRpbmcgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSByZWNvcmRpbmcgZm9yIHRoaXMgaW50ZXJ2aWV3IGlzIGFscmVhZHkgc3RhcnRlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE4IiBuYW1lPSJpbnRlcnZpZXcgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTkiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIHBvc3QtcHJvY2Vzc2luZyBvZiBhbiBpbnRlcnZpZXcgdGFrZXMgNSBtaW51dGVzIHBlciAxIG1pbnV0ZSBpbnRlcnZpZXcuIFRoZSBjdXJyZW50IHByb2dyZXNzIG9mIHRoZSBpbnRlcnZpZXcgcG9zdC1wcm9jZXNzaW5nIHRyYW5zY29kaW5nIGlzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjAiIG5hbWU9InNpcCBjcmVhdGlvbiI+CisgICAgPHZhbHVlPllvdSBoYXZlIHRvIGVudGVyIHlvdXIgcGFzc3dvcmQgYWdhaW4gdG8gYXV0byBjcmVhdGUgdGhlIFNJUCBEYXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyMSIgbmFtZT0ic2lwIGNyZWF0aW9uIj4KKyAgICA8dmFsdWU+UmUtZ2VuZXJhdGUgU0lQIERhdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIyIiBuYW1lPSJmaWxlZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IG1vdmUgdGhpcyBmaWxlIG9yIGZvbGRlciBpbnRvIGl0cyBvd24gc3ViIGZvbGRlciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIzIiBuYW1lPSJmaWxlIGV4cGxvcmVyICI+CisgICAgPHZhbHVlPkhvbWUgZHJpdmUgc2l6ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjQiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5QdWJsaWMgZHJpdmUgc2l6ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjUiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5MaWNlbnNlIFNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNiIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPllvdSBjYW4gZWl0aGVyIGJpbmQgdGhlIHVzZXIgdG8gYSBleHBpcmUgRGF0ZSBvciB0byBhIG1heGltdW0gbnVtYmVyIG9mIG1pbnV0ZXMgd2hlbiB5b3UgZW5hYmxlIGxpY2Vuc2luZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI3IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+Q2hlY2sgbGljZW5zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjgiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5GbGF0cmF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjkiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5FeHBpcmUgZGF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzAiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5TZWNvbmRzIGxlZnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMxIiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+VG90YWwgdGltZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzIiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdXIgTGljZW5zZSBoYXMgZXhwaXJlZC4gWW91IG5lZWQgdG8gYnV5IG5ldyBtaW51dGVzIChQYXktcGVyLW1pbnV0ZSkgb3IgYSB2b2x1bWUgZmxhdHJhdGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Q2xpY2sgYW5kIGJ1eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzQiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlRpbWUgTGVmdCBvbiB5b3VyIGFjY291bnQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzNSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+VXNlciBMaWNlbnNlIEluZm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM2IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5JbmZvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzNyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Q2xvc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM4IiBuYW1lPSJsaWNlbnNlLWluZm8iPgorICAgIDx2YWx1ZT5Zb3VyIGxpY2Vuc2UgaGFzIGV4cGlyZWQuIFlvdSBuZWVkIGVpdGhlciB0byBidXkgYSBtaW51dGUgcGFja2FnZSAoUGF5LXBlci1taW51dGUpIG9yIGEgdm9sdW1lIGZsYXRyYXRlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzkiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkxpY2Vuc2Ugc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQwIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIGVpdGhlciBidXkgbWludXRlcyB0byBtYWtlIFdlYi1Db25mZXJlbmNpbmcgKFBheS1wZXItbWludXRlKS4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7IE9yIHlvdSBidXkgYSB2b2x1bWUgZmxhdHJhdGUgYWJvdXQgMy0xMiBtb250aHMuJmx0O2JyLyZndDsmbHQ7YnIvJmd0O1NlbmRpbmcgaW52aXRhdGlvbnMgKGRpcmVjdCBsaW5rcyBpbnRvIENvbmZlcmVuY2UgUm9vbXMpIG9yIGNyZWF0aW5nIGNvbmZlcmVuY2UgUm9vbXMgdmlhIHRoZSBDYWxlbmRhciB3aXRoIGV4dGVybmFsIFVzZXJzIGlzIG9ubHkgYWxsb3dlZCB3aXRoIGEgdm9sdW1lIGZsYXRyYXRlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDEiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSA2MCBNaW51dGVzIDksOTkgRVVSTyAoMTYgQ2VudCBwZXIgTWludXRlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDIiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSA1IGhvdXJzIDE5LDk5IEVVUk8gKDYgQ2VudCBwZXIgbWludXRlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDMiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSAzIG1vbnRoIGZvciAyOSw5OSBFVVJPICg5LDk5IEV1cm8gcGVyIE1vbnRoKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDQiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSA2IG1vbnRoIGZvciAzOSw5OSBFVVJPICg2LDY2IEV1cm8gcGVyIG1vbnRoKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDUiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlBheS1wZXItbWludXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Vm9sdW1lIGZsYXRyYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91IGhhdmUgdW5saW1pdGVkIExpY2Vuc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ4IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3VyIGxpY2Vuc2Ugd2lsbCBleHBpcmUgYXQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0OSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91IGJvdWdodCBQYXktcGVyLW1pbnV0ZS4gWW91IHN0aWxsIGhhdmU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IG5ldyBjcmVkaXQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+V2FudCB5b3VyIG93biBTZXJ2ZXI/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91IHdvdWxkIGxpa2UgdG8gaGF2ZSAkQVBQX05BTUUgaW5zdGFsbGVkIG9uIHlvdXIgU2VydmVyIG9yIGludGVncmF0ZWQgaW50byB5b3VyIE1vb2RsZSwgU3VnYXJDUk0sIFdlYnNpdGUgb3IgSW50cmFuZXQ/IFByaXppbmdzIHN0YXJ0IGF0IDUwMCBFdXJvIHBlciBJbnN0YWxsYXRpb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+T3Igc2VuZCB1cyBhIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU0IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5BbnN3ZXIgdG86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1NSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+TWVzc2FnZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU2IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5TZW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1NyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Q2xpY2sgaGVyZSB0byBnZXQgY29udGFjdCBJbmZvIGFuZCBQcml6aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTgiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNyZWRpdCBDYXJkIERldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU5IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5GaXJzdG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYwIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5MYXN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjEiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNyZWRpdCBDYXJkIFR5cGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYyIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5WSVNBIENhcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYzIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5NYXN0ZXJDYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2NCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+RGlzY292ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY1IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5BbWVyaWNhbiBFeHByZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2NiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q3JlZGl0IENhcmQgTnVtYmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2NyIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+RXhwaXJhdGlvbiBEYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2OCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q2FyZCBWZXJpZmljYXRpb24gTnVtYmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2OSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+QmlsbGluZyBBZGRyZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+QWRkcmVzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzEiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzIiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTczIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5Db3VudHJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U3RhdGUgKE9ubHkgVVMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+WklQPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+QW1vdW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NyIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U3VibWl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3OCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U3RlcCAxOiAkQVBQX05BTUUgLSBQYXltZW50IEZvcm08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc5IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5FTWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODAiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNsaWNrICJDaGVjayBvdXQgd2l0aCBQYXlwYWwiIHRvIHBheS4mbHQ7YnIvJmd0OyBQYXlwYWwgYWNjZXB0cyBWSVNBLCBNYXN0ZXJDYXJkLCBEaXNjb3ZlciBvciBBbWVyaWNhbiBFeHByZXNzLiAmbHQ7YnIvJmd0O0l0IGRvZXMgbm90IHJlcXVpcmUgdG8gc2lnbiB1cCB3aXRoIFBheXBhbC4gJmx0O2JyLyZndDtDaXRpemVucyBmcm9tIEdlcm1hbnkgY2FuIGFsc28gcGF5IHdpdGggZGlyZWN0IGRlYml0IChQZXIgTGFzdHNjaHJpZnQtRWluenVnKS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgxIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5UaGFuayB5b3UgZm9yIGJ1eWluZyAkQVBQX05BTUUuICZsdDtici8mZ3Q7ICZsdDtici8mZ3Q7IEFzIHNvb24gYXMgd2UgcmVjZWl2ZWQgdGhlIHBheW1lbnQgeW91ciBhY2NvdW50IHdpbGwgYmUgdXBkYXRlZC4mbHQ7YnIvJmd0OyBZb3Ugd2lsbCByZWNlaXZlIGFuIEVNYWlsIHdpdGggeW91ciBpbnZvaWNlIGFzIFBERi4mbHQ7YnIvJmd0O1lvdSBjYW4gYWxzbyBjaGVjayBjdXJyZW50IGFuZCBwYXN0IHRyYW5zYWN0aW9ucyBpbiB5b3VyIHByb2ZpbGUgc2V0dGluZ3MuJmx0O2JyLyZndDsmbHQ7YnIvJmd0OyZsdDtici8mZ3Q7WW91IGNhbiBjbG9zZSB0aGlzIGJyb3dzZXIgd2luZG93L3RhYiBub3cgYW5kIHJldHVybiB0byAkQVBQX05BTUUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U3VibWl0IGFuZCBCdXkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MyIgbmFtZT0icGF5bWVudC1mcm9tIj4KKyAgICA8dmFsdWU+Q2xpY2sgYW5kIEJ1eSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg0IiBuYW1lPSJwYXltZW50LWZyb20iPgorICAgIDx2YWx1ZT5TdGVwIDM6ICRBUFBfTkFNRSBQYXltZW50IC0gQ2hlY2sgb3JkZXIgYW5kIGJ1eSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg1IiBuYW1lPSJwYXltZW50LWZyb20iPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4NiIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+UGF5bWVudCByZWNlaXZlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg3IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5IaSw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg4IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5XZSBoYXZlIHJlY2VpdmVkIHlvdXIgcGF5bWVudC4gWW91ciB1c2VyIHByb2ZpbGUgaXMgdXBkYXRlZCBub3cuIFNlZSBhdHRhY2hlZCB5b3VyIEludm9pY2UuIFRoZSBJbnZvaWNlIGFuZCBhbGwgcGFzdCBJbnZvaWNlIGNhbiBhbHNvIGJlIGRvd25sb2FkZWQgaW4geW91ciB1c2VyIHByb2ZpbGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4OSIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+VGhhbmsgeW91IGZvciB1c2luZyAkQVBQX05BTUUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MCIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+UGF5bWVudCBSZWNlaXZlZCAkQVBQX05BTUUgLTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTEiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5QYXltZW50IGFuZCBUcmFuc2FjdGlvbiBTdGF0dXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkyIiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+VHJhbnNjYXRpb24gSGFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTMiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NaW51dGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NCIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPk1vbnRoczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTUiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5FVVI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk2IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+U3RhdHVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NyIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPkludm9pY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk4IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5OSIgbmFtZT0iZXJyb3ItbGljZW5zZS1mbGF0Ij4KKyAgICA8dmFsdWU+WW91IG5lZWQgdG8gYnV5IGEgdm9sdW1lIGZsYXRyYXRlIHRvIGJlIGFibGUgdG8gc2VuZCBpbnZpdGF0aW9ucyBvciBjcmVhdGUgbWVldGluZ3MgdmlhIHRoZSBjYWxlbmRhci4gV2l0aCBQYXktcGVyLW1pbnV0ZSBpdCBpcyBvbmx5IHBvc3NpYmxlIGZvciB5b3UgdG8gYWNjZXNzICRBUFBfTkFNRS4gWW91IGNhbm5vdCBhbGxvdyAzdGggUGFydGllcyB0byBhY2Nlc3MgYSBNZWV0aW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAwIiBuYW1lPSJlcnJvciB1c2VyIj4KKyAgICA8dmFsdWU+VGhpcyBFbWFpbCBpcyBhbHJlYWR5IHVzZWQgYnkgYW5vdGhlciBVc2VyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAxIiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+U0lQLVNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDIiIG5hbWU9InJvb20tYWRtaW4iPgorICAgIDx2YWx1ZT5UaGUgQ29uZmVyZW5jZSBOdW1iZXIgYW5kIFBJTiBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgdmlhIHRoZSBPcGVuWEcgUlBDLUdhdGV3YXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwMyIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlNJUCBOdW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNCIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlBJTjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA1IiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+Q2xlYXIgb2JqZWN0cyBvbiBjdXJyZW50IHNsaWRlIG9ubHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDYiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5Pbmx5IHRoZSBVUkwgZW50ZXJlZCBpbiB0aGUgU3RhdHVzIGJhciBpcyBzZW5kIHRvIHBhcnRpY2lwYW50cyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk1ha2UgVGVhbS1Sb29tcyBbQnJlYWtvdXQgc2Vzc2lvbl08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNob29zZSB1c2VycyBmb3IgYSBuZXcgVGVhbS1Sb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+WW91IGNhbiBjaG9vc2UgdXNlcnMgaGVyZSBhbmQgY3JlYXRlIGEgbmV3IENvbmZlcmVuY2UgUm9vbSAoIlRlYW0gUm9vbSIpIGZvciB0aGVtLiBUaGUgY2hvc2VuIHVzZXJzIHdpbGwgYXV0b21hdGljYWxseSBzd2l0Y2ggdG8gdGhlIG5ldyBUZWFtLVJvb20gb3IgZ2V0IGEgbm90aWZpY2F0aW9uLiBUZWFtLVJvb20gTW9kZXJhdG9ycyB3aWxsIGdldCBhZGRpdGlvbmFsbHkgYSBsaXN0IG9mIGN1cnJlbnQgcm9vbXMgc28gdGhhdCB0aGV5IGNhbiBzd2l0Y2ggdG8gZWFjaCByb29tIGlmIHRoZXJlIGFyZSBpcyBuZWVkIGZvciBhIE1vZGVyYXRvci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Vc2VycyBmb3IgdGhlIG5ldyBUZWFtLVJvb206PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DcmVhdGUgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNob29zZSBhdCBsZWFzdCBvbmUgdXNlciBmb3IgdGhlIFRlYW0tUm9vbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkFkZCB1c2VyIHRvIHRlYW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlJlbW92ZSB1c2VyIGZyb20gVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Vc2VyIGlzIFRlYW0tUm9vbSBNb2RlcmF0b3IgKEhlIGlzIGFibGUgdG8gbWFuYWdlIFRlYW0tUm9vbXMgYW5kIHVzZXJzIG9mIHRoZSBUZWFtLVJvb20gY2FuIGFzayBoaW0gdG8gY29tZSBpbnNpZGUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Sb29tdHlwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+SWYgeW91IGNoZWNrICJGb3JjZSB1c2VyIHRvIHN3aXRjaCB0byBuZXcgVGVhbS1Sb29tIiBhbGwgY2hvc2VuIHVzZXJzIHdpbGwgYXV0b21hdGljYWxseSBzd2l0Y2ggdG8gdGhlIG5ld2x5IGNyZWF0ZWQgVGVhbS1Sb29tLiBPdGhlcndpc2UgdGhleSBnZXQgYSBub3RpZmljYXRpb24gd2l0aCBhIGJ1dHRvbiB0aGF0IHRoZXkgJmx0O2kmZ3Q7Y2FuJmx0Oy9pJmd0OyBzd2l0Y2ggdG8gdGhlIG5ldyByb29tLiBUZWFtLU1vZGVyYXRvcnMgYWx3YXlzIGhhdmUgdGhlIGZyZWUgY2hvaWNlIHRvIG1hbmFnZSB0aGUgVGVhbS1Sb29tcyBhbmQgc3dpdGNoIGJldHdlZW4gdGhlbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk1hbmFnZSBUZWFtLVJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIHN3aXRjaCBoZXJlIGJldHdlZW4gYWxsIFRlYW0tUm9vbXMgdGhhdCB5b3UgYXJlIGFzc2lnbmVkIGFzIFRlYW0tUm9vbSBNb2RlcmF0b3IuIFVzZXJzIGluc2lkZSB0aGUgVGVhbS1Sb29tIGNhbiBzZW5kIHlvdSBhIG1lc3NhZ2UsIGZvciBleGFtcGxlIHRvIGFzayB5b3UgdG8gY29tZSB0byB0aGVpciByb29tIGFuZCBoZWxwIHRoZW0uIFlvdSBjYW4gYWxzbyB0ZXJtaW5hdGUgdGhlIFRlYW0tUm9vbSBhbmQgYWxsIFVzZXJzIHdpbGwgYmUgbG9nZ2VkIG91dC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkZvcmNlIHVzZXIgdG8gc3dpdGNoIHRvIG5ldyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNyZWF0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Vc2VycyBhdmFpbGFibGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkFkZCBhIHVzZXIgd2l0aCB0aGUgcGx1cyBmcm9tIHRoZSBsZWZ0IG9yIHJlbW92ZSBpdCB3aXRoIHRoZSBjcm9zcyBmcm9tIHRoZSByaWdodCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjEpIFRlYW0tUm9vbSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MikgQWRkIHVzZXJzIHRvIHRoZSBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW0tUm9vbSBOYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNoYW5nZSB0byB0aGUgUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U3dpdGNoIHRvIHRoaXMgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZXJtaW5hdGUgVGVhbS1Sb29tIGFuZCBsb2dvdXQgYWxsIFVzZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5OZXcgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBhIG5ldyBUZWFtLVJvb20gYXZhaWxhYmxlIGZvciB5b3UuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Td2l0Y2ggdG8gVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb20gQWN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+WW91IGNhbiByZS1vcGVuIHRoaXMgd2luZG93IHZpYSB0aGUgbWFpbiBtZW51IGluIHRoZSAiQWN0aW9ucyIgc2VjdGlvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlNlbmQgbWVzc2FnZSB0byBUZWFtLVJvb20gTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5OZXcgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBhIG5ldyBUZWFtLVJvb20gYXZhaWxhYmxlLiBZb3UgY2FuIHN3aXRjaCB0byB0aGF0IFJvb20uIFRlYW0tUm9vbXMgYXJlIGxpa2UgIldvcmtncm91cHMiIHdpdGggYWRkaXRpb25hbGx5IHBvc3NpYmlsaXRpZXMgdG8gYXNrIHRoZSBUZWFtLVJvb20gTW9kZXJhdG9yIGZvciBoZWxwLiBZb3VyIFRlYW0tUm9vbXMgYXJlIGFsc28gYXZhaWxhYmxlIGluIHRoZSAiTXkgTWVldGluZ3MiIHNlY3Rpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Td2l0Y2ggdG8gVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DcmVhdGVkIGJ5OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQ4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVhbS1Sb29tIG5hbWU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGlzIFdpbmRvdyB3aWxsIHN0YXkgb3BlbiBldmVuIGlmIHlvdSBsZWF2ZSB0aGUgcm9vbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1MCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJzIGZvciB0aGlzIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MykgT3RoZXIgVGVhbS1Sb29tcyB0aGF0IHlvdSBjb3VsZCBzd2l0Y2ggdG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1MiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlNlbmQgYSBtZXNzYWdlIHRvIHRoZSBUZWFtLVJvb20gTW9kZXJhdG9ycy4gRm9yIGV4YW1wbGUgaWYgeW91IG5lZWQgaGVscCBpbiBNb2RlcmF0aW5nIHRoZSBSb29tIG9yIGlmIHlvdSBoYXZlIGEgcXVlc3Rpb24gYWJvdXQgdGhlIHRvcGljLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U2VuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MikgVXNlcnMgdGhhdCBhcmUgaW52aXRlZCB0byB0aGlzIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+SXMgVGVhbS1Sb29tIE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGhlc2UgYXJlIGFsbCB1c2VycyB0aGF0IHRoZSBtb2RlcmF0b3IgaGFzIGludml0ZWQgdG8gdGhpcyBUZWFtLVJvb20uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBUZWFtLU1vZGVyYXRvciBsb2dnZWQgaW4gYXQgdGhlIG1vbWVudCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1OCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1OSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlBsZWFzZSBoZWxwIHVzLCB3ZSBoYXZlIGEgcHJvYmxlbSBpbiBvdXIgVGVhbS1Sb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+QSB1c2VyIGZyb20gYSBUZWFtLVJvb20gcmVxdWVzdHMgeW91ciBoZWxwLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVhbS1Sb29tIHJlcXVlc3QgZm9yIGhlbHA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2MiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk1lc3NhZ2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Gcm9tOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+WW91IGFyZSBjdXJyZW50bHkgbm90IGluIGFueSBUZWFtLVJvb20uIEJ1dCB5b3UgY2FuIHN3aXRjaCBoZXJlIHRvIGFsbCBUZWFtLVJvb21zIHRoYXQgeW91IGhhdmUgYWNjZXNzIHRvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY1IiBuYW1lPSJiYWNrdXBDb250ZW50Ij4KKyAgICA8dmFsdWU+QmFja3VwIHRoZSBTeXN0ZW0uIFRoZSBCYWNrdXAgaW5jbHVkZXMgYWxsIFVzZXIgZ2VuZXJhdGVkIGRhdGEuIFRoZSBjb25maWd1cmF0aW9uIGlzIG5vdCBpbmNsdWRlZCBhcyB3ZWxsIGFzIHRoZSBsYW5ndWFnZSBsYWJlbHMuIEJlY2F1c2UgdGhvc2UgdmFsdWVzIGFyZSBpbXBvcnRlZCB3aXRoIHRoZSBTeXN0ZW0gSW5zdGFsbGVyLiBUbyB1cGRhdGUgeW91ciBTeXN0ZW0sIGV4cG9ydCB5b3VyIG9sZCBzeXN0ZW0gKDEpIHJlLWluc3RhbGwgaW50byBhIG5ldyBkYXRhYmFzZSB0aGUgbmV3IHBhY2thZ2UgKDIpIGFuZCBpbXBvcnQgdGhlIEJhY2t1cCBmaWxlIGFnYWluICgzKS4gVGhlIEJhY2t1cCBzaG91bGQgYmUgaW1wb3J0ZWQgYmVmb3JlIGdlbmVyYXRpbmcgZGF0YSBpbiB0aGUgbmV3bHkgaW5zdGFsbGVkIHN5c3RlbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2NiIgbmFtZT0iYmFja3VwQ29udGVudCI+CisgICAgPHZhbHVlPlN5c3RlbSBCYWNrdXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2NyIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+QWxsb3cgdXNlciB0byBzaGFyZSBTY3JlZW4vUmVjb3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjgiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPkRlbnkgdXNlciB0byBzaGFyZSBTY3JlZW4vUmVjb3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjkiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPlVzZXIgaXMgTW9kZXJhdG9yLCBoZSBjYW4gZG8gYW55dGhpbmchPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzAiIG5hbWU9ImFwcGx5IGZvciBzY3JlZW4vcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0byBzaGFyZS9yZWNvcmQgc2NyZWVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDcxIiBuYW1lPSJtb2RlcmF0aW9uIG1pbmkgaWNvbnMiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGFsbG93ZWQgdG8gc2hhcmUvcmVjb3JkIHNjcmVlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDcyIiBuYW1lPSJtb2RlcmF0aW9uIG1pbmkgaWNvbnMiPgorICAgIDx2YWx1ZT5BcHBseSBmb3IgcmlnaHQgdG8gc2hhcmUvcmVjb3JkIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3MyIgbmFtZT0ibW9kZXJhdGlvbiBtaW5pIGljb25zIGNvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT5BbGxvdy9EZW55IHJpZ2h0IHRvIHNoYXJlL3JlY29yZCBzY3JlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzQiIG5hbWU9InNvdW5kIGljb24iPgorICAgIDx2YWx1ZT5UdXJuIHNvdW5kIG9mZjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc1IiBuYW1lPSJzb3VuZCBpY29uIj4KKyAgICA8dmFsdWU+VHVybiBzb3VuZCBvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc2IiBuYW1lPSJyb29tIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+QXVkaW8gb25seSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzciIG5hbWU9InJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5UdXJuIHRoaXMgRmxhZyBvbiBhbmQgdGhlIHVzZXJzIHdpbGwgaGF2ZSBvbmx5IHRoZSBBdWRpby1PcHRpb24gYW5kIG5vIFZpZGVvIGluIGEgY29uZmVyZW5jZSByb29tLiBUaGlzIGNhbiBieSBnb29kIHRvIHNhdmUgYmFuZHdpZHRoLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc4IiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5BbGxvdyBSZW1vdGUgQ29udHJvbCAoRHVyaW5nIFNjcmVlbiBTaGFyaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc5IiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5EZW55IFJlbW90ZSBDb250cm9sIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODAiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFwcGx5IGZvciByaWdodCB0byBSZW1vdGUgQ29udHJvbCBTY3JlZW4gKER1cmluZyBTY3JlZW4gU2hhcmluZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MSIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+WW91IGFyZSBhbGxvd2VkIHRvIFJlbW90ZSBDb250cm9sIFNjcmVlbiAoRHVyaW5nIFNjcmVlbiBTaGFyaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgyIiBuYW1lPSJhcHBseSBmb3IgcmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIHJlbW90ZSBjb250cm9sIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MyIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+VXNlciBpcyBNb2RlcmF0b3IsIGhlIGNhbiBkbyBhbnl0aGluZyEgW1JlbW90ZSBEZXNrdG9wIENvbnRyb2xdPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODQiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFsbG93L0RlbnkgcmlnaHQgdG8gUmVtb3RlIENvbnRyb2wgU2NyZWVuIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODUiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPjEpIFlvdXIgUEMgdG8gcmVtb3RlIFBDOiBUbyBjb3B5IGFuZCBwYXN0ZSB0ZXh0IGZyb20geW91ciBjbGlwYm9hcmQgaW50byB0aGUgcmVtb3RlIGNvbnRyb2xsZWQgc2NyZWVuLCBjbGljayBvbiB0aGUgc2NyZWVuLCB0aGVuIHJpZ2h0IGNsaWNrIGluIHRoZSB0ZXh0IGZpZWxkIGFuZCBjaG9vc2UgIkluc2VydCIgZnJvbSB0aGUgY29udGV4dCAocmlnaHQgY2xpY2spIG1lbnUuJmx0O2JyLyZndDsmbHQ7YnIvJmd0OzIpIEZyb20gcmVtb3RlIFBDIHRvIHlvdXIgUEM6IFRvIGNvcHkgdGV4dCBmcm9tIHRoZSByZW1vdGUgUEMgdG8geW91ciBQQydzIGNsaXBib2FyZCwgaGlnaGxpZ2h0IHRoZSB0ZXh0IHdpdGggdGhlIG1vdXNlIG9uIHRoZSByZW1vdGUgc2NyZWVuLCB0aGVuIHJpZ2h0LWNsaWNrIG9uIHRoZSByZW1vdGUgc2NyZWVuIGFuZCBjaG9vc2UgJmx0O2kmZ3Q7Q29weSBoaWdobGlnaHRlZCB0ZXh0Jmx0Oy9pJmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg2IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Db3B5IGFuZCBQYXN0ZSB0ZXh0IGZyb20geW91ciBQQyB0byByZW1vdGUgUEMgYW5kIHZpY2UtdmVyc2EuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODciIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNvcHkgaGlnaGxpZ2h0ZWQgdGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg4IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Ib3cgdG8gY29weSBuIHBhc3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODkiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPlF1YWxpdHkgb2YgdGhlIFNjcmVlblNoYXJlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkwIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5WZXJ5IGhpZ2ggUXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkxIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5IaWdoIFF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5MiIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+TWVkaXVtIFF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5MyIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+TG93IFF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NCIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5lbl9VUzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk1IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPmRlX0RFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTYiIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+S2V5Ym9hcmQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTciIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+Q2xvc2UgV2ViaW5hciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5OCIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5UaGUgV2ViaW5hciBpcyBhbHJlYWR5IGNsb3NlZCwgeW91IHdpbGwgYmUgcmVkaXJlY3RlZCB0byBzb21lIGludGVyZXN0aW5nIG9mZmVyaW5ncyBpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk5IiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPkNsb3NlIFJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMCIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5FeGl0IFVSTDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAxIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPlJvb20gdGVybWluYXRpb24gc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMiIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5JZiB0aGUgcm9vbSBpcyBjbG9zZWQgdXNlcnMgd2lsbCBiZSByZWRpcmVjdGVkIHRvIHRoZSBleGl0IFVSTC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5MZGFwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDQiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDYiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+Q29uZmlnIEZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5MZGFwIENvbmZpZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA4IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwOSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5FbmFibGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTAiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+SW5zZXJ0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JbnNlcnRlZCBieTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEyIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPlVwZGF0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5VcGRhdGVkIGJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTQiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+VGhlIGNvbmZpZyBmaWxlcyBhcmUgaW4gdGhlIGZvbGRlciB3ZWJhcHBzL29wZW5tZWV0aW5ncy9jb25mLiBZb3UgbmVlZCB0byBtYW51YWxseSB1cGxvYWQgdGhlIGZpbGVzIHRvIHRoaXMgZm9sZGVyLiBDaGFuZ2VzIHRvIHRoZSBjb25maWcgZmlsZSBhcmUgaW1tZWRpYXRlbHkgb25saW5lLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE1IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkNvbmZpZyBmaWxlIG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNiIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JZiB5b3UgZW5hYmxlICJBZGQgRG9tYWluIHRvIHVzZXJuYW1lIiB0aGUgdmFsdWUgb2YgdGhlIGZpZWxkICJkb21haW4iIGlzIGFkZGVkIHRvIGVhY2ggbG9naW4gdGhhdCB0aGUgdXNlciBlbnRlcnMgaW4gdGhlIGxvZ2luIGJveC4gVGhpcyBpcyB1c2VmdWwgaWYgdGhlIExvZ2luIGluIHRoZSBMZGFwIGlzIHN0b3JlZCBpbmNsdWRpbmcgdGhlIGRvbWFpbiBuYW1lLiBFeGFtcGxlOiBVc2VyIGVudGVycyAiaGFucyIgZG9tYWluIGlzIHNwZWNpZmllZCBhcyAibG9jYWxob3N0LmNvbSIsIGxvZ2luIHRoYXQgaXMgdmVyaWZpZWQgYWdhaW5zdCBMZGFwIGlzOiBoYW5zQGxvY2FsaG9zdC5jb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5BZGQgRG9tYWluIHRvIHVzZXJuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTgiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+RG9tYWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTkiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+SW5zZXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjAiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+Q29weSBoaWdobGlnaHRlZCB0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjEiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+UmVtb3RlIENsaXBib2FyZCBUZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjIiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+U2hvdyByZW1vdGUgQ2xpcGJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjMiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkRvIG5vdCBzaG93IGFnYWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjQiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNvcHkgdGV4dCBoZXJlIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI1IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0aGUgcmlnaHQgdG8gcmVtb3RlIGNvbnRyb2wgKG9yIHRoZSBtb2RlcmF0aW9uKSB0byBjb3B5IGFuZCBwYXN0ZSB0ZXh0IHRvIG9yIGZyb20gdGhlIHJlbW90ZSBzY3JlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjYiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkVkaXQgZGVmYXVsdCBzZXR0aW5ncyAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNyIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+RG8gbm90IHNob3cgaW5mbyBib3ggaW4gUmVtb3RlIENvbnRyb2wgYWJvdXQgQ29weSBhbmQgUGFzdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyOCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5TYXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjkiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+UmVtb3ZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzAiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzEiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5JbnZpdGUgdXNlciB0byBjb25mZXJlbmNlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMiIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkNob29zZSBhIGNvbmZlcmVuY2Ugcm9vbS4gVGhlIGludml0ZWQgdXNlciB3aWxsIGdldCBhIG1lc3NhZ2Ugd2l0aCB5b3VyIG5hbWUgYW5kIGEgbGluayB0byB0aGUgcm9vbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMyIgbmFtZT0iY2hhdCB1c2VyIj4KKyAgICA8dmFsdWU+Q29ubmVjdGVkIHNpbmNlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM0IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+RW50ZXIgcm9vbSBhZnRlciBzZW5kaW5nIGludml0YXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzNSIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkludml0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM2IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+TWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM3IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0byBpbnZpdGUgeW91IHRvIHRoZSBjb25mZXJlbmNlIHJvb206PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzgiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5JbnZpdGUgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM5IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+U2VuZCBJbnZpdGF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDAiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5kaWQgJmx0O2ImZ3Q7bm90Jmx0Oy9iJmd0OyBhY2NlcHQgeW91ciBpbnZpdGF0aW9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQxIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+QWNjZXB0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDIiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5EZW55PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDMiIG5hbWU9InVzZXIgcHJvZmlsZSI+CisgICAgPHZhbHVlPlRpbWV6b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDQiIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPkV2ZW50IERldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0NSIgbmFtZT0iYXBwb2ludG1lbnQgbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ2IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5EZXNjcmlwdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ3IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5DcmVhdGVkIGJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDgiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5UaW1lWm9uZSBNZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDkiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5DaGVjayAiVGltZVpvbmUgTWVzc2FnZSIgdG8gZ2l2ZSB1c2VycyBhIG1lc3NhZ2UgbmV4dCB0aW1lIHRoZXkgbG9naW4gdG8gdXBkYXRlIHRoZWlyIHByb2ZpbGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTAiIG5hbWU9InRpbWUgem9uZSB1cGRhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlBsZWFzZSBjaGVjayB0aGUgdGltZSB6b25lIGluIHlvdXIgdXNlciBwcm9maWxlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUxIiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5OZXcgJEFQUF9OQU1FIGNvbmZlcmVuY2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTIiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkRldGFpbHM6Jmx0O2JyLyZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MyIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3RhcnQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTQiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkVuZDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NSIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2hhbmdlZCAkQVBQX05BTUUgY29uZmVyZW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NiIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+T3JnYW5pemVyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU3IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DYW5jZWxlZCAkQVBQX05BTUUgY29uZmVyZW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1OCIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIGNvbmZlcmVuY2UgUmVtaW5kZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTkiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Db21tdW5pdHkgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlNob3cgY29udGFjdCBkYXRhIHRvIGV2ZXJ5Ym9keTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYxIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+QWRkIGZpZWxkcyBvZiBpbnRlcmVzdCB0aGF0IHlvdSBvZmZlciBvciB0aGF0IHlvdSBhcmUgc2VhcmNoaW5nIHRvIGZpbmQgaW50ZXJlc3RpbmcgcGFydG5lcnMgZm9yIGEgY29uZmVyZW5jZS4gQ29tbWEgc2VwYXJhdGUgdGhlIHRlcm1zIChmb3IgZXhhbXBsZTogTWVkaWNhbCBTZXJ2aWNlLCBIZWFsdGggYXNzdXJhbmNlLCAuLi4pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjIiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NeSBvZmZlcmluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MyIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk15IGludGVyZXN0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY0IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY1IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+VGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2NiIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkZpZWxkcyBvZiBpbnRlcmVzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY3IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+Q29udGFjdCBpbmZvcm1hdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY4IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2hvdyBjb250YWN0IGRhdGEgdG8gY29udGFjdHMgb25seTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY5IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2hvdyBjb250YWN0IGRhdGEgdG8gbm9ib2R5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzAiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NeSBQcm9maWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzEiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5FZGl0IHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzIiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TZWFyY2ggdXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MyIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPldhdGNoIHlvdXIgcHJvZmlsZSBsaWtlIG90aGVyIHNlZSB5b3U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkVkaXQgeW91ciBzZXR0aW5ncywgYWRkIHlvdXIgaW50ZXJlc3RzIHRvIGJlIGZvdW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzUiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TZWFyY2ggZm9yIG90aGVyIHVzZXJzIGFuZCBleHRlbmQgeW91ciBuZXR3b3JrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzYiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+U2VhcmNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzciIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+VXNlciBvZmZlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3OCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5Vc2VyIGxvb2tzIGZvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc5IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkZyZWV0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODAiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgxIiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlRpbWV6b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODIiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+T2ZmZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODMiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+U2VhcmNoczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg0IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlNlYXJjaHJlc3VsdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg1IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkFjdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NiIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5BZGQgdG8gY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NyIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5TZW5kIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4OCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5Db250YWN0cyBhbmQgTWVzc2FnZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4OSIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5QZW5kaW5nIGNvbnRhY3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTAiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5BY2NlcHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkRlbnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MiIgbmFtZT0idXNlciBjb250YWN0IHJlcXVlc3QiPgorICAgIDx2YWx1ZT5IaSw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MyIgbmFtZT0idXNlciBjb250YWN0IHJlcXVlc3QiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGFkZCB5b3UgYXMgY29udGFjdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NCIgbmFtZT0idXNlciBjb250YWN0IHJlcXVlc3QiPgorICAgIDx2YWx1ZT5DaGVjayB5b3VyIGNvbnRhY3QgcmVxdWVzdHMgaW4gJEFQUF9OQU1FIG9yIGNsaWNrIG9uIHRob3NlIGxpbmtzIHRvIGFjY2VwdCBvciBkZW55IHRoZSByZXF1ZXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTUiIG5hbWU9ImFkZCB1c2VyIGNvbnRhY3QiPgorICAgIDx2YWx1ZT5UaGlzIHVzZXIgaXMgYWxyZWFkeSBpbiB5b3VyIGNvbnRhY3QgbGlzdCBvciBoYXMgcmVjZWl2ZWQgYW4gaW52aXRhdGlvbiB0byB5b3VyIGNvbnRhY3QgbGlzdCB0aGF0IGlzIG5vdCBhbnN3ZXJlZCB5ZXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTYiIG5hbWU9InVzZXIgY29udGFjdCBtYWlsIj4KKyAgICA8dmFsdWU+WW91ciBjb250YWN0IGxpc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkVkaXQgeW91ciBjb250YWN0IGFuZCBtZXNzYWdlcywmbHQ7YnIvJmd0OyBtYW5hZ2UgeW91ciBwZW5kaW5nIGNvbnRhY3RzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk4IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+Y29uZmlybWVkIHlvdSBhcyBjb250YWN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk5IiBuYW1lPSJjaGF0IGluZm8gbWVzc2FnZSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAwIiBuYW1lPSJjaGF0IGxvZyBpY29uIj4KKyAgICA8dmFsdWU+U2hvdyAvIENvcHkgY2hhdCBsb2c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMSIgbmFtZT0iY2hhdCBsb2cgd2luZG93Ij4KKyAgICA8dmFsdWU+Q2hhdCBMb2c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RnJvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TdWJqZWN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDYiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1lc3NhZ2VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDciIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk5ldyBNYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkNsaWNrIHRvIHdyaXRlIGEgbmV3IG1lc3NhZ2UgdG8gYW55IG9mIHlvdXIgY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwOSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+V3JpdGUgbmV3IG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VG86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlN1YmplY3Q6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTIiIG5hbWU9IndoaXRlYm9hcmQgZnVsbC1maXQiPgorICAgIDx2YWx1ZT5FbmFibGUgZnVsbCBmaXQgYW5kIHRoZSB3aGl0ZWJvYXJkIHdpbGwgem9vbSB0aGUgd2hvbGUgd2hpdGVib2FyZCBzbyB0aGF0IGFsbCZsdDtici8mZ3Q7ZG9jdW1lbnRzIGFyZSB2aXNpYmxlIGFjY29yZGluZyB0byBlYWNoIHBhcnRpY2lwYW50cyBzY3JlZW4gcmVzb2x1dGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMyIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+S2ljayB1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTQiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPllvdSBjYW5ub3Qga2ljayB5b3Vyc2VsZiBvdXQgb2YgdGhlIGNvbmZlcmVuY2Ugcm9vbSEgSWYgeW91IHdhbnQgdG8gbGVhdmUgaXQgY2xvc2UgdGhlIGJyb3dzZXIgb3IgdXNlIHRoZSBleGl0IGJ1dHRvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNSIgbmFtZT0ia2ljay11c2VyIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRpc2Nvbm5lY3QgdGhpcyB1c2VyIGZyb20gdGhpcyBjb25mZXJlbmNlIHJvb20/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTYiIG5hbWU9ImtpY2stdXNlciI+CisgICAgPHZhbHVlPkNvbmZpcm0gYWN0aW9uIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE3IiBuYW1lPSJraWNrLXVzZXIiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IGtpY2sgYSBTdXBlci1Nb2RlcmF0b3Igb3V0IG9mIGEgcm9vbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxOCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Qm9vayBjb25mZXJlbmNlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxOSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3RhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZCBhbiBvcHRpb25hbCByZXF1ZXN0IGZvciBtZWV0aW5nIHRvIHRoZSBtZXNzYWdlIGFuZCBjcmVhdGUgYSBjb25mZXJlbmNlIHJvb20uIFRoZSBFdmVudCBpcyB0aGVuIGNvcGllZCBpbiB0aGUgY2FsZW5kYXIgb2YgZXZlcnkgcGFydGljaXBhbnQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkluYm94PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VHJhc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhpcyBpcyB5b3UhIFlvdSBjYW5ub3QgYWRkIHlvdXJzZWxmIGFzIHlvdXIgb3duIGNvbnRhY3QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjYiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5UaGUgdXNlciBpcyBhbHJlYWR5IGRlbmllZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoZSB1c2VyIGlzIGFscmVhZHkgYXBwcm92ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjgiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5UaGlzIHVzZXIgY29udGFjdCBoYXNoIGlzIGludmFsaWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjkiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Vc2VyIGFkZGVkIHRvIGNvbnRhY3QgbGlzdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlVzZXIgZGVuaWVkIGFzIGNvbnRhY3QgYW5kIHJlbW92ZWQgZnJvbSBwZW5kaW5nIGNvbnRhY3QgbGlzdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIHN1Y2ggY29udGFjdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPldvdWxkIHlvdSByZWFsbHkgbGlrZSB0byByZW1vdmUgdGhhdCBjb250YWN0PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMzIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+Q29uZmlybSBjb250YWN0IHJlbW92YWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkRlbGV0ZSBjb250YWN0IGZyb20gbGlzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM1IiBuYW1lPSJ1c2VyIHByb2ZpbGUiPgorICAgIDx2YWx1ZT5Vc2VyIFByb2ZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNiIgbmFtZT0idXNlciBwcm9maWxlIj4KKyAgICA8dmFsdWU+U2hvdyB1c2VyIHByb2ZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWVzc2FnZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzOCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VhcmNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbGVjdCBhbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0MCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VsZWN0IG5vbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0MSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VsZWN0IHVucmVhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWxlY3QgcmVhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Nb3ZlIHRvIGZvbGRlciAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIG5ldyBmb2xkZXIgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRlbGV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ2IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EZWxldGVkIG1haWxzIGFyZSBzdGlsbCBpbiB5b3VyIHRyYXNoIGZvbGRlciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWFyayB1bnJlYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0OCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWFyayByZWFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFuc3dlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BbnN3ZXIgZXZlcnlib2R5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkZvcndhcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWN0aW9ucyAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlNlbmQgcHJpdmF0ZSBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk5vdGhpbmcgc2VsZWN0ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1vdmUgdG8gSW5ib3g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGVsZXRlIChmaW5hbCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1OCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIGZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgZm9sZGVycyBhbmQgb3JnYW5pemUgeW91ciBtZXNzYWdlcyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIGZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPkRlbGV0ZSBmb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPllvdSBjYW5ub3QgZGVsZXRlIHRoaXMgZm9sZGVyLCB0aGVyZSBhcmUgc3RpbGwgbWVzc2FnZXMgaW5zaWRlISBEZWxldGUgZmlyc3QgdGhlIG1lc3NhZ2VzIG9yIG1vdmUgdGhlbSB0byBhbm90aGVyIGZvbGRlci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPkVkaXQgbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGZvbGRlcj8gVGhlcmUgaXMgbm8gd2F5IHRvIHVuZG8gdGhhdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPllvdXIgcmVxdWVzdCB3YXMgc2VuZCB0byB0aGUgdXNlci4gVGhlIHVzZXIgd2lsbCByZWNlaXZlIGEgbm90aWZpY2F0aW9uIHRvIGFjY2VwdCBvciBkZW55IHlvdXIgcmVxdWVzdC4gT25seSBhY2NlcHRlZCByZXF1ZXN0cyBhcmUgaW4geW91ciBjb250YWN0IGxpc3Qgb2YgY291cnNlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+TWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY4IiBuYW1lPSJ1c2VyIHZpZXcgcHJvZmlsZSI+CisgICAgPHZhbHVlPlRoZSB1c2VyIGRvZXMgbm90IHNoYXJlIGhpcyBwZXJzb25hbCBjb250YWN0IGRhdGEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjkiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+VGhlIHVzZXIgZG9lcyBzaGFyZSBoaXMgcGVyc29uYWwgY29udGFjdCBkYXRhIG9ubHkgdG8gY29udGFjdHMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzAiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+QWRkcmVzcyAmYW1wOyBQaG9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjcxIiBuYW1lPSJlcnJvciBjb2RlIj4KKyAgICA8dmFsdWU+WW91IGludml0YXRpb24gY29kZSBpcyBubyB2YWxpZCwgdGhlIGNvZGUgaXMgb25seSB2YWxpZCBkdXJpbmcgdGhpcyBzcGVjaWZpYyBkYXRlIGFuZCB0aW1lOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjcyIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhpcyBldmVudCBpcyBjb25uZWN0ZWQgdG8gc2V2ZXJhbCBjYWxlbmRhcnMgb2Ygb3RoZXIgdXNlcnMuIFlvdXIgY2hhbmdlIHdpbGwgYWxzbyB1cGRhdGUgdGhlaXIgY2FsZW5kYXIuIFdvdWxkIHlvdSByZWFsbHkgbGlrZSB0byB1cGRhdGUgdGhlIGV2ZW50PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjczIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Q29uZmlybSB1cGRhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkFsbG93IGNvbnRhY3QgdG8gc2VlIG15IGNhbGVuZGFyICh2aWV3IG9ubHkpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzUiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5EbyBub3Qgc2hhcmUgY2FsZW5kYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkNhbGVuZGFyIG9mIGNvbnRhY3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzciIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Zb3VyIGNvbnRhY3RzIG5lZWQgdG8gYXBwcm92ZSB5b3UgZmlyc3QgdG8gYmUgYWJsZSB0byBzZWUgdGhlaXIgY2FsZW5kYXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzgiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IHN0b3JlIG9yIGRlbGV0ZSBldmVudHMgZnJvbSBvdGhlciBjYWxlbmRhcnMgdGhlbiB5b3VyIG93biE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3OSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlNob3cgbXkgb3duIGNhbGVuZGFyIGFnYWluITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgwIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhpcyBldmVudCBpcyBjb25uZWN0ZWQgdG8gc2V2ZXJhbCBjYWxlbmRhcnMgb2Ygb3RoZXIgdXNlcnMuIFlvdXIgYWN0aW9uIHdpbGwgYWxzbyBkZWxldGUgdGhlIGV2ZW50IGZyb20gdGhlaXIgY2FsZW5kYXIuIFdvdWxkIHlvdSByZWFsbHkgbGlrZSB0byBkZWxldGUgdGhlIGV2ZW50PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgxIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Q29uZmlybSBhY3Rpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4MiIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPkVudGVyIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4MyIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPkFjY2VzcyB0aGUgY29uZmVyZW5jZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGEgY29uZmVyZW5jZSByb29tIGFuZCBldmVudCBib29rZWQgd2l0aCB0aGlzIHByaXZhdGUgbWVzc2FnZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NSIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPllvdSBuZWVkIHRvIHN0b3JlIHRoZSBldmVudCBmaXJzdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NiIgbmFtZT0iYWNjZXNzIHJvb21zIGVycm9yIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgbm8gc3VjaCByb29tIGF2YWlsYWJsZS4gVGhlIGV2ZW50IGluIHRoZSBjYWxlbmRhciBhbmQgY29ubmVjdGVkIHJvb20gaXMgYWxyZWFkeSBkZWxldGVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg3IiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5DaG9vc2UgeW91ciBuaWNrbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg4IiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5GaXJzdG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4OSIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+TGFzdG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MCIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+RW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MSIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+T2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MiIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+TWluaW11bSBsZW5ndGggNCBjaGFycyEgRm9yIGJvdGgsIGZpcnN0bmFtZSBhbmQgbGFzdG5hbWUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTMiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIHZhbGlkIGVtYWlsITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk0IiBuYW1lPSJhdXRoIGZyb20iPgorICAgIDx2YWx1ZT5GYWNlYm9vazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk1IiBuYW1lPSJhdXRoIGZvcm0iPgorICAgIDx2YWx1ZT5Mb2dpbiB3aXRoIHlvdXIgRmFjZWJvb2sgYWNjb3VudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk2IiBuYW1lPSJ2aWV3IHByb2ZpbGUiPgorICAgIDx2YWx1ZT5NZW1iZXIgc2luY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5NyIgbmFtZT0iZGlyZWN0IGxvZ2luIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Zb3UndmUgbG9nZ2VkIHdpdGggeW91ciBGYWNlYm9vayBhY2NvdW50LiBZb3Ugc2hvdWxkIHVwZGF0ZSB5b3VyIHByb2ZpbGUgd2l0aCB0aGUgY29ycmVjdCBlbWFpbC4gT3RoZXJ3aXNlIHlvdSB3aWxsIG5vdCByZWNlaXZlIGludml0YXRpb25zIGFuZCBwcml2YXRlIG1lc3NhZ2VzIGZyb20gb3RoZXIgdXNlcnMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTgiIG5hbWU9ImRpcmVjdCBsb2dpbiBtZXNzYWdlIGhlYWRlciI+CisgICAgPHZhbHVlPk1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5OSIgbmFtZT0iZGlyZWN0IGxvZ2luIG1lc3NhZ2UgY2hlY2tib3ggY29udHJvbCI+CisgICAgPHZhbHVlPkRvIG5vdCBzaG93IHVwZGF0ZSBwcm9maWxlIG1lc3NhZ2UgYWdhaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMCIgbmFtZT0icHJvZmlsZSBzZXR0aW5ncyBidXR0b24iPgorICAgIDx2YWx1ZT5tb3JlIGRpc3BsYXkgb3B0aW9ucyAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TmV3IHByaXZhdGUgbWVzc2FnZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2xpY2sgaGVyZSB0byB2aXNpdCB5b3VyIHByb2ZpbGUgdG8gc2VlIHRoZSBmdWxsIG1lc3NhZ2UgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlJlcGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPlJvb21zIGFuZCBjaGF0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA1IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5NeSByb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA2IiBuYW1lPSJteSByb29tcyI+CisgICAgPHZhbHVlPk15IGNvbmZlcmVuY2Ugcm9vbSAoZm9yIDEtMTYgdXNlcnMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDciIG5hbWU9Im15IHJvb21zIj4KKyAgICA8dmFsdWU+TXkgd2ViaW5hciByb29tIChmb3IgMS0xMjAgdXNlcnMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDgiIG5hbWU9InJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5Pd25lciBJZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA5IiBuYW1lPSJsb2dpbiBlcnJvciI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIHBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTAiIG5hbWU9ImxvZ2luIGVycm9yIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgYW4gYWNjb3VudCB3aXRoIFVzZXItTGV2ZWwgVXNlciwgTW9kZXJhdG9yIG9yIEFkbWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTEiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5XZWItU2VydmljZSAob25seSBhY2Nlc3MgdmlhIFNPQVApPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTIiIG5hbWU9InVwbG9hZCBmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+RG8gZGlyZWN0bHkgbG9hZCB0byB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTMiIG5hbWU9IndoaXRlYm9hcmQgY2xvc2UgY29uZmlybWF0aW9uIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIHJlbW92ZSB0aGlzIHdoaXRlYm9hcmQ/IFRoaXMgYWN0aW9uIGNhbm5vdCBiZSB1bmRvbmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTQiIG5hbWU9IndoaXRlYm9hcmQgbG9hZCBXTUwiPgorICAgIDx2YWx1ZT5Mb2FkIHRvIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxNSIgbmFtZT0icmVjb3JkaW5nIGZsYWciPgorICAgIDx2YWx1ZT5EbyBub3QgZm9yZ2V0IHN0YXJ0IHJlY29yZGluZyEgT25lIHVzZXIgcGVyIHJvb20gYWx3YXlzIG5lZWRzIHRvIHN0YXJ0IGl0IHRvIGhhdmUgdGhlIHJlY29yZGluZyBhZnRlcndhcmRzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE2IiBuYW1lPSJyZWNvcmRpbmcgZmxhZyI+CisgICAgPHZhbHVlPlN0YXJ0IFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE3IiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPkFycm93PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTgiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+Q2lyY2xlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTkiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+TGluZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIwIiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPlNxdWFyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIxIiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPlRyaWFuZ2xlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjIiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5UZXh0L05vdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyMyIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkNsaXBhcnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjQiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5EcmF3IEZyZWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNSIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlNlbGVjdC9Nb3ZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjYiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5EcmF3IFNoYXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjciIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5DdXQvTW92ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI4IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+Wm9vbSBJbi9PdXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyOSIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlByaW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzAiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5VbmRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzEiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5UcmFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMyIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+QWRkIEdyaWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMyIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlNoYXJlIEZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNCIgbmFtZT0iaWNvbiBzdWJtZW51Ij4KKyAgICA8dmFsdWU+U2VsZWN0IFNoYXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzUiIG5hbWU9Imljb24gc3VibWVudSI+CisgICAgPHZhbHVlPlNlbGVjdCBDbGlwYXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzYiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5Db3B5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzciIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5DdXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzOCIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPlBhc3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzkiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5EZWxldGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MCIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhlIGNvbXBsZXRlIGNvbnRlbnQgb24gdGhlIHdoaXRlYm9hcmQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDEiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5Mb2FkIGRpcmVjdGx5IHRvIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MiIgbmFtZT0iYXR0ZW5kZWVzIj4KKyAgICA8dmFsdWU+QXR0ZW5kZWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDMiIG5hbWU9ImF0ZW5kZWUgbWFuYWdlciI+CisgICAgPHZhbHVlPkF0dGVuZGVlIE1hbmFnZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NCIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+UHJlc2VudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ1IiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5SZW1vdGUgQ29udHJvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NiIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+RWplY3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NyIgbmFtZT0iY2hhdCI+CisgICAgPHZhbHVlPkNoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0OCIgbmFtZT0iaW52aXRlIGF0dGVuZGVlIj4KKyAgICA8dmFsdWU+SW52aXRlIEF0dGVuZGVlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ5IiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5CeSBFbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUwIiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5Vc2VyIGlzIG1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUxIiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5Vc2VyIGhhcyB3ZWJjYW0gc3dpdGNoZWQgb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1MiIgbmFtZT0iZmlsbF9vcHRpb24iPgorICAgIDx2YWx1ZT5EZWFjdGl2YXRlIHNoYXBlIGZpbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1MyIgbmFtZT0iZmlsbF9vcHRpb24iPgorICAgIDx2YWx1ZT5BY3RpdmF0ZSBzaGFwZSBmaWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTQiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5TbmFwIHRvIEdyaWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NSIgbmFtZT0iYWxsb3dfcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QWxsb3cgcmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTYiIG5hbWU9IndhaXRfZm9yX3JlY29yZGluZyI+CisgICAgPHZhbHVlPldhaXQgZm9yIHJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU3IiBuYW1lPSJoaWRlX3RvcF9iYXIiPgorICAgIDx2YWx1ZT5IaWRlIHRvcGJhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU4IiBuYW1lPSJmaWxlRXhwbG9yZXIiPgorICAgIDx2YWx1ZT5QbGF5IHZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTkiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoZSBjb250ZW50IG9uIHRoZSBjdXJyZW50IHNsaWRlPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYwIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT5BY2NlcHQgYW5kIGdyYW50IHVzZXIgcmlnaHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2MSIgbmFtZT0iYWN0aXZpdHlfd2luZG93Ij4KKyAgICA8dmFsdWU+RGVueTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYyIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT5JPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjMiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPkFjdGl2aXRpZXMgYW5kIGFjdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NCIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPlJlbW92ZSB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjUiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0aGUgbW9kZXJhdGlvbiBvciB0aGUgcmlnaHQgdG8gZHJhdyBvbiB0aGUgd2hpdGVib2FyZCB0byByZW1vdmUgd2hpdGVib2FyZHMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjYiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5Ob3QgYWxsb3dlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY3IiBuYW1lPSJ1c2VyX2xlZnRfYWN0X21zZyI+CisgICAgPHZhbHVlPmhhcyBsZWZ0IHRoZSByb29tLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY4IiBuYW1lPSJjbGlwYXJ0IGljb25zIj4KKyAgICA8dmFsdWU+TWF0aCBpY29uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY5IiBuYW1lPSJjbGlwYXJ0IGljb25zIj4KKyAgICA8dmFsdWU+Tm8gY2F0ZWdvcnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MCIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+Q29sb3ItU3R5bGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+UXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzcyIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5Eb21haW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MyIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+dmlzaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NCIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+cmVkb3JhbmdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzUiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPm1lZGl1bXNlYWdyZWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzYiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnN0ZWVsYmx1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc3IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5saWdodHN0ZWVsYmx1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc4IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5nb2xkZW5yZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3OSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+c2lsdmVyZ3JheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgwIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT51c2VyZGVmaW5lZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgxIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5iZXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODIiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnVwbG9hZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgzIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5tZWRpdW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NCIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg1IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5Vbm11dGUgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg2IiBuYW1lPSJnaXZlIGV4Y2x1c2l2ZSBhdWRpbyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBvZiBvdGhlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NyIgbmFtZT0ibXV0ZSBzZWxmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGdsb2JhbGx5IG11dGVkIGJ5IHRoZSBtb2RlcmF0b3IuIFlvdSBjYW5ub3QgdW5tdXRlIHlvdXJzZWxmITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg4IiBuYW1lPSJtdXRlIHNlbGYgY29uZmlybSBtZXNzYWdlIHRpdGxlIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg5IiBuYW1lPSJtdXRlIHNlbGYgY29uZmlybSBtZXNzYWdlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gbXV0ZSB5b3Vyc2VsZiBnbG9iYWxseT8gTm8gb3RoZXIgdXNlciB3aWxsIGhlYXIgeW91IGFueW1vcmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTAiIG5hbWU9Im11dGUgb3RoZXJzIGNvbmZpcm0gbWVzc2FnZSB0aXRsZSI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBsb2NhbGx5PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkxIiBuYW1lPSJtdXRlIG90aGVycyBjb25maXJtIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gbXV0ZSB0aGlzIG1pY3JvcGhvbmU/IFlvdSBjYW4gb25seSBtdXRlIGl0IGxvY2FsbHkgb24geW91ciBzY3JlZW4uIEl0IGhhcyBubyBlZmZlY3QgdG8gaG93IG90aGVyIHVzZXJzIGhlYXIgdGhpcyB1c2VyLiBPbmx5IG1vZGVyYXRvcnMgY2FuIHR1cm4gaXQgb2ZmIGdsb2JhbGx5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkyIiBuYW1lPSJtdXRlIG90aGVycyBjb25maXJtIG1lc3NhZ2UgdGl0bGUiPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgb2ZmIGdsb2JhbGx5PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkzIiBuYW1lPSJtdXRlIG90aGVycyBtb2RlcmF0b3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBtdXRlIHRoaXMgdXNlciBnbG9iYWxseT8gTm8gb3RoZXIgdXNlciB3aWxsIGhlYXIgaGltIGFueW1vcmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTQiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+WW91ciBzb3VuZCBpcyBvbi4gQ2xpY2sgaGVyZSB0byBzZW5kIG1vZGVyYXRvciBtZXNzYWdlIHRvIG11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5IChpbiB0aGUgY29tcGxldGUgY29uZmVyZW5jZSByb29tKSBvZmYhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTUiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+WW91ciBzb3VuZCBpcyBvZmYuIENsaWNrIGhlcmUgdG8gc2VuZCBtb2RlcmF0b3IgbWVzc2FnZSB0byB1bm11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5IChpbiB0aGUgY29tcGxldGUgY29uZmVyZW5jZSByb29tKSBvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5NiIgbmFtZT0ibXV0ZSBhcHBseSBzZWxmIG9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRoYXQgdGhlIG1vZGVyYXRvciBtdXRlcyBteSBtaWNyb3Bob25lIGdsb2JhbGx5LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk3IiBuYW1lPSJtdXRlIGFwcGx5IHNlbGYgb2ZmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRoYXQgdGhlIG1vZGVyYXRvciB1bm11dGVzIG15IG1pY3JvcGhvbmUgZ2xvYmFsbHkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTgiIG5hbWU9Im11dGUgYXBwbHkgb2YgbWVzc2FnZSI+CisgICAgPHZhbHVlPndhbnQgdGhhdCB0aGUgbW9kZXJhdG9yIHVubXV0ZXMgaGlzL2hlciBtaWNyb3Bob25lLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk5IiBuYW1lPSJtdXRlIGFwcGx5IG9mIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53YW50IHRoYXQgdGhlIG1vZGVyYXRvciBtdXRlcyBoaXMvaGVyIG1pY3JvcGhvbmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDAiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+VW5tdXRlIG1pY3JvcGhvbmUuIENsaWNrIGhlcmUgdG8gbXV0ZSBoaXMvaGVyIG1pY3JvcGhvbmUgZ2xvYmFsbHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDEiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lLiBDbGljayBoZXJlIHRvIHVubXV0ZSBoaXMvaGVyIG1pY3JvcGhvbmUgZ2xvYmFsbHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDIiIG5hbWU9Im11dGUgc2VsZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhpcyB1c2VyIGlzIGdsb2JhbGx5IG11dGVkIGJ5IHRoZSBtb2RlcmF0b3IuIFlvdSBjYW5ub3QgdW5tdXRlIGhpbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMyIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDQiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSB5b3VyIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwNSIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA2IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5Vbm11dGUgbWljcm9waG9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA3IiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDgiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDkiIG5hbWU9Im11dGUgbW9kZXJhdG9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Pbmx5IG1vZGVyYXRvcnMgY2FuIG11dGUgb3IgdW5tdXRlIGFuIHVzZXIgZ2xvYmFsbHkhIFRvIG11dGUgeW91ciBvd24gbWljcm9waG9uZTogUGxlYXNlIHVzZSB0aGUgbWljcm9waG9uZSBpY29uIGluIHlvdXIgdmlkZW8gcG9kITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDEwIiBuYW1lPSJwb2xsX25hbWUiPgorICAgIDx2YWx1ZT5Qb2xsIE5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMSIgbmFtZT0icG9sbF9uYW1lIj4KKyAgICA8dmFsdWU+WW91PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTIiIG5hbWU9ImFyY2hpdmVkX3BvbGxzIj4KKyAgICA8dmFsdWU+QXJjaGlldmVkIFBvbGxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTMiIG5hbWU9ImFjdGl2ZV9wb2xsIj4KKyAgICA8dmFsdWU+YWN0aXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTQiIG5hbWU9ImNoYXJ0X3NpbXBsZSI+CisgICAgPHZhbHVlPlNpbXBsZSBDaGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE1IiBuYW1lPSJjaGFydF9waWUiPgorICAgIDx2YWx1ZT5QaWUgQ2hhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNiIgbmFtZT0ic2lnbl91cF92YWxpZGF0aW9uIj4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTciIG5hbWU9ImNoYXRfbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+TmV3IG1lc3NhZ2Uocyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxOCIgbmFtZT0icG9sbF9jbG9zZSI+CisgICAgPHZhbHVlPkNsb3NlIFBvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxOSIgbmFtZT0icG9sbF9jbG9zZV9jb25maXJtIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNsb3NlIHRoaXMgUG9sbD8gTm8gb25lIHdpbGwgYmUgYWJsZSB0byB2b3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjAiIG5hbWU9InBvbGxfZGVsZXRlIj4KKyAgICA8dmFsdWU+RGVsZXRlIFBvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMSIgbmFtZT0icG9sbF9kZWxldGVfY29uZmlybSI+CisgICAgPHZhbHVlPkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBQb2xsPyBUaGUgcmVzdWx0cyB3aWxsIGJlIGRlbGV0ZWQgYXMgd2VsbC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMiIgbmFtZT0ibGFuZ3VhZ2VfY29kZSI+CisgICAgPHZhbHVlPkxhbmd1YWdlIElTTyBDb2RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjMiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19wZXJtaXNzaW9uIj4KKyAgICA8dmFsdWU+QWxsb3cvRGVueSByaWdodCB0byBnaXZlIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNCIgbmFtZT0iYWxsb3dfZXhjbHVzaXZlX2F1ZGlvX3Blcm1pc3Npb24iPgorICAgIDx2YWx1ZT5BbGxvdyB1c2VyIHRvIGdpdmUgZXhjbHVzaXZlIGF1ZGlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjUiIG5hbWU9ImRlbnlfZXhjbHVzaXZlX2F1ZGlvX3Blcm1pc3Npb24iPgorICAgIDx2YWx1ZT5EZW55IHVzZXIgdG8gZ2l2ZSBleGNsdXNpdmUgYXVkaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNiIgbmFtZT0iZXhjbF9hdWRpbyBhcHBseSBzZWxmIG9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGdldCBhIHBlcm1pc3Npb24gZm9yIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNyIgbmFtZT0iZXhjbF9hdWRpbyBhcHBseSBvZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+d2FudCB0aGF0IHRoZSBtb2RlcmF0b3IgZ2l2ZXMgbWUgYSBwZXJtaXNzaW9uIGZvciBleGNsdXNpdmUgYXVkaW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjgiIG5hbWU9ImV4Y2xfYXVkaW8gc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+R2l2ZSBhIHBlcm1pc3Npb24gZm9yIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyOSIgbmFtZT0iY2FtX3Jlc29sdXRpb24iPgorICAgIDx2YWx1ZT5DYW0gcmVzb2x1dGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMwIiBuYW1lPSJjYW1fcmVzb2x1dGlvbl9pbmZvIj4KKyAgICA8dmFsdWU+Q2hhbmdpbmcgdGhlIHJlc29sdXRpb24gYWZmZWN0cyBiYW5kd2lkdGgsIGJpZ2dlciBwaWN0dXJlIG5lZWRzIG1vcmUgYmFuZHdpdGghPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzEiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19lcnJvciI+CisgICAgPHZhbHVlPllvdSBkb24ndCBoYXZlIHRoZSByaWdodCB0byBnaXZlIHlvdXJzZWxmIG9yIG90aGVycyBleGNsdXNpdmUgYXVkaW8uIFlvdSBuZWVkIHRvIGFwcGx5IGZvciB0aGUgcmlnaHQgZnJvbSB0aGUgbW9kZXJhdG9yIG9yIGFzayB0aGUgbW9kZXJhdG9yIHRvIGdpdmUgeW91IGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzMiIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2FzayI+CisgICAgPHZhbHVlPkkgd291bGQgbGlrZSB0byBnZXQgdGhlIHJpZ2h0IGZvciBleGNsdXNpdmUgYXVkaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzMyIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2FjdGlvbiI+CisgICAgPHZhbHVlPkdpdmUgZXhjbHVzaXZlIGF1ZGlvIHRvIG1lIChhbHRlcm5hdGl2ZWx5IGNsaWNrIG9uIHlvdXIgdmlkZW8gcG9kIG9yIHByZXNzIEYxMik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNCIgbmFtZT0ibWljcm8gaXMgb24iPgorICAgIDx2YWx1ZT5NaWNyb3Bob25lIGlzIG9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM1IiBuYW1lPSJtaWNybyBpcyBvZmYiPgorICAgIDx2YWx1ZT5NaWNyb3Bob25lIGlzIG11dGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzYiIG5hbWU9ImhpZGVfY2hhdCI+CisgICAgPHZhbHVlPkhpZGUgY2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM3IiBuYW1lPSJoaWRlX2FjdGl2aXRpZXNfYW5kX2FjdGlvbnMiPgorICAgIDx2YWx1ZT5IaWRlIGFjdGl2aXRpZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzOCIgbmFtZT0iaGlkZV9maWxlc19leHBsb3JlciI+CisgICAgPHZhbHVlPkhpZGUgZmlsZXMgZXhwbG9yZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzOSIgbmFtZT0iaGlkZV9hY3Rpb25zX21lbnUiPgorICAgIDx2YWx1ZT5IaWRlIGFjdGlvbnMgbWVudTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQwIiBuYW1lPSJoaWRlX3NjcmVlbl9zaGFyaW5nIj4KKyAgICA8dmFsdWU+SGlkZSBzY3JlZW4gc2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQxIiBuYW1lPSJoaWRlX3doaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5IaWRlIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MiIgbmFtZT0ic2hvdyBtaWNyb3Bob25lIHN0YXR1cyI+CisgICAgPHZhbHVlPlNob3cgbWljcm8gc3RhdHVzIGluIHZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDMiIG5hbWU9ImxheW91dF9vcHRpb25zIj4KKyAgICA8dmFsdWU+TGF5b3V0IG9wdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0NCIgbmFtZT0iY2FsZW5kYXIgbmV3IGJ1dHRvbiI+CisgICAgPHZhbHVlPk5ldyBFdmVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ1IiBuYW1lPSJjYWxlbmRhciBwYXNzd29yZCBpbmZvIHRleHQiPgorICAgIDx2YWx1ZT5QYXNzd29yZCBwcm90ZWN0ZWQgYXJlIHRoZSBsaW5rcyB0byB0aGUgY29uZmVyZW5jZSB0aGF0IGFyZSBzZW5kIHRvIHRoZSBwYXJ0aWNpcGVudHMgd2hlbiB5b3Ugc2F2ZSB0aGUgY2FsZW5kYXIgZXZlbnQsIG5vdCB0aGUgcm9vbSEgVGhhdCBtZWFucyBpZiB5b3Ugc2F2ZSB0aGUgZXZlbnQgbXVsdGlwbGUgdGltZXMgYnV0IHdpdGggZGlmZmVyZW50IHBhc3N3b3JkcyBldmVyeSBwYXJ0aWNpcGVudCByZWNlaXZlcyBhIG5ldyBsaW5rIHRoYXQgaGFzIGEgZGlmZmVyZW50IHBhc3N3b3JkLiBCdXQgb2xkIGxpbmtzIHN0aWxsIHdvcmsgb25jZSBzZW5kITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ2IiBuYW1lPSJjYWxlbmRhciBlZGl0IGJ1dHRvbiI+CisgICAgPHZhbHVlPkVkaXQgZGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ3IiBuYW1lPSJzaXAgc2hvdyBkaWFsZXIiPgorICAgIDx2YWx1ZT5TaG93IHNpcCBkaWFsZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0OCIgbmFtZT0ic2lwIGNhbGwiPgorICAgIDx2YWx1ZT5DYWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDkiIG5hbWU9ImNhbGVuZGFyIGNvbnRhY3QgbGlzdCI+CisgICAgPHZhbHVlPlNob3cgY2FsZW5kYXIgZXZlbnRzIG9mIGNvbnRhY3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+WW91ciBob21lITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUxIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5QbGFuIHlvdXIgbWVldGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MiIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+V2F0Y2ggcmVjb3JkaW5nIGFuZCBpbnRlcnZpZXdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTMiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPkNob29zZSBhbmQgc3RhcnQgYSB3ZWItY29uZmVyZW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU0IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgdXNlcnMgYW5kIHJpZ2h0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU1IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgY29ubmVjdGlvbnMgYW5kIGtpY2sgdXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1NiIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIHVzZXJncm91cHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1NyIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIGNvbmZlcmVuY2Ugcm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1OCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIHN5c3RlbSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU5IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgbGFiZWxzIGFuZCB3b3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjAiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBMREFQIGFuZCBBRFMgY29uZmlndXJhdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MSIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+RXhwb3J0L0ltcG9ydCBTeXN0ZW0gQmFja3VwczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYyIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgbW9kZXJhdGlvbiBvciB0aGUgcmlnaHQgdG8gZHJhdyBvbiB3aGl0ZWJvYXJkIHRvIHVwbG9hZCwgYWRkLCBkZWxldGUgb3IgbG9hZCBmaWxlcyBhbmQgZm9sZGVycy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MyIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkVkaXQgdGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY0IiBuYW1lPSJzYWx1dGF0aW9uIj4KKyAgICA8dmFsdWU+UHJvZjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY1IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlB1Ymxpc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2NiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdGFydCBQdWJsaXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjciIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U3RvcCBQdWJsaXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+SG9zdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY5IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlB1Ymxpc2ggQXBwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzAiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UHVibGlzaCBJZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDcxIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHVjZSB0aGUgd2lkdGggb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbW92ZSBpdCBsZWZ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzIiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UmVkdWNlIHRoZSBoZWlnaHQgb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbW92ZSBpdCBib3R0b208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5SZWR1Y2UgdGhlIHggb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbWFrZSBpdCB3aWRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc0IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHVjZSB0aGUgeSBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtYWtlIGl0IGhpZ2hlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc1IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkZpbGwgdGhlc2Ugc2V0dGluZ3Mgc3RyZWFtIHlvdXIgc2NyZWVuIGRhdGEgdG8gM3RoIHBhcnR5IHByb3ZpZGVycyBsaWtlIGp1c3Rpbi50djwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc2IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlBsZWFzZSBzdGFydCBTY3JlZW4gc2hhcmluZyB0byBiZSBhYmxlIHRvIHB1Ymxpc2ggaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3NyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5Nb2RlcmF0b3IgcGVybWlzc2lvbiByZXF1aXJlZCB0byBzdGFydCByZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3OCIgbmFtZT0ibm8gcmlnaHQgZm9yIGV4Y2x1c2l2ZSBhdWRpbyI+CisgICAgPHZhbHVlPllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gYXBwbHkgZXhjbHVzaXZlIGF1ZGlvIHRvIGFueSBwYXJ0aWNpcGFudC4gWW91IG5lZWQgbW9kZXJhdGlvbiByb2xlIG9yIHRoZSByaWdodCBmb3IgZXhjbHVzaXZlIGF1ZGlvIHRvIG1ha2UgYW55IG1pY3JvcGhvbmUgZXhjbHVzaXZlIHR1cm5lZCBvbi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzkiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlVwbG9hZCBuZXcgZmlsZSB0byBmaWxlIGV4cGxvcmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODAiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPk9wZW4gbmV3IGRpYWxvZyB3aXRoIHNoYXJpbmcgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+QW4gZXhpc3RpbmcgbW9kZXJhdG9yIG11c3QgYXBwcm92ZSBpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgyIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5Bc2sgbW9kZXJhdG9yIHRvIHNoYXJlIHlvdXIgd2ViY2FtL21pY3JvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODMiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkdhdGhlciBmZWVkYmFjayBieSBjcmVhdGluZyBhIHBvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+UGFzdCBhbmQgY3VycmVudCBwb2xsIHJlc3VsdHMgYXMgY2hhcnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODUiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlZvdGUgaWYgdGhlcmUgaXMgYSBwb2xsIGZvciB0aGlzIGNvbmZlcmVuY2Ugcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg2IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5FZGl0IGNhbSBhbmQgbWljIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODciIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkNvbmZpcm0gYW5kIGxlYXZlIHRoZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODgiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkNhbGwgZXh0ZXJuYWwgcGVvcGxlIHZpYSBWb0lQL1NJUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg5IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5TZW5kIGFuIGVtYWlsIHdpdGggYSBkaXJlY3QgbGluayB0byB0aGlzIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Q2hhbmdlIHlvdXIgd2hpdGVib2FyZCBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkxIiBuYW1lPSJiYWNrdXAgYWRtaW4iPgorICAgIDx2YWx1ZT5NYXggdXBsb2FkIHNpemU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MiIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+QXNrIG1vZGVyYXRvciB0byBzaGFyZSB5b3VyIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MyIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+U3RhcnQgUHJpdmF0ZSBDaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTQiIG5hbWU9ImFsbF9wcml2YXRlX2NoYXQiPgorICAgIDx2YWx1ZT5BbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NSIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBzdGFydCBhIHByaXZhdGUgY2hhdCB3aXRoIHlvdXJzZWxmLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk2IiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5Zb3UndmUgYWxyZWFkeSBzdGFydGVkIGEgcHJpdmF0ZSBjaGF0IHdpdGggdGhpcyBwYXJ0aWNpcGFudC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NyIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHByaXZhdGUgY2hhdD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5OCIgbmFtZT0iU2VydmVycyI+CisgICAgPHZhbHVlPlNlcnZlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5OSIgbmFtZT0iU2VydmVycyI+CisgICAgPHZhbHVlPlNlcnZlcnMgcGFydGljaXBhdGluZyBpbiBjbHVzdGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDAiIG5hbWU9IlNlcnZlciBuYW1lIj4KKyAgICA8dmFsdWU+U2VydmVyIE5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMSIgbmFtZT0iU2VydmVyIEFkZHJlc3MiPgorICAgIDx2YWx1ZT5TZXJ2ZXIgQWRkcmVzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAyIiBuYW1lPSJTZXJ2ZXIgZGV0YWlscyI+CisgICAgPHZhbHVlPlNlcnZlciBkZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDMiIG5hbWU9IlNlbmQgU01TIj4KKyAgICA8dmFsdWU+U2VuZCBTTVM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNCIgbmFtZT0icHVibGlzaGluZ19tZXNzYWdlIj4KKyAgICA8dmFsdWU+UHVibGlzaGluZy4gVXNlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNSIgbmFtZT0iY21kX2xpbmVfYWRtaW4iPgorICAgIDx2YWx1ZT5UbyBzYXZlIHRpbWUgYW5kIGludGVybmV0IHRyYWZmaWMgeW91IGNhbiB1c2UgY29tbWFuZCBsaW5lIGFkbWluIHRvIGJhY2t1cC9yZXN0b3JlL3VwZ3JhZGU6XG4gMSkgZ28gdG8gT00gaW5zdGFsbCBkaXIgKGZvciBleC4gL29wdC9yZWQ1KSBcbiAyKSBzdG9wIE9NIChmb3IgZXguIC4vcmVkNS1zaHV0ZG93bi5zaClcbiAzKSAuL2FkbWluLnNoIC1iIC1maWxlIH4vdG9kYXlfb21fYmFja3VwLnppcCAoY3JlYXRlIGJhY2t1cCBvZiBjdXJyZW50IE9NKVxuIDQpIGRvd25sb2FkIGFyY2hpdmUgd2l0aCBuZXcgT01cbiA1KSBtdiAvb3B0L3JlZDUgL29wdC5yZWQ1LmJhayAobW92ZSB3b3JraW5nIHZlcnNpb24gb2YgT00ganVzdCBpbiBjYXNlIDopKVxuIDYpIGV4dHJhY3QgZG93bmxvYWRlZCBPTSB0byB0aGUgL29wdC9yZWQ1XG4gNykgLi9hZG1pbi5zaCAtaSAtZmlsZSB+L3RvZGF5X29tX2JhY2t1cC56aXAgKG9yICcuL2FkbWluLnNoIC1pIC1maWxlIH4vdG9kYXlfb21fYmFja3VwLnppcCAtLWRiLXR5cGUgbXlzcWwgLS1kYi11c2VyIG9tX3VzZXIgLS1kYi1wYXNzIG9tX3VzZXJfcGFzcycgaW4gY2FzZSBvZiB5b3UgYXJlIHVzaW5nIG5vbi1kZWZhdWx0IERCIClcbiA4KSBzdGFydCBPTVxuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDYiIG5hbWU9InB1YmxpY19yb29tX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5Sb29tcyBjb21tb24gdG8gYWxsIHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNyIgbmFtZT0icHJpdmF0ZV9yb29tX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5Sb29tcyBjb21tb24gdG8gdGhlIGN1cnJlbnQgdXNlciBncm91cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA4IiBuYW1lPSJteV9yb29tX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5Sb29tcyBvZiB0aGUgY3VycmVudCB1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDkiIG5hbWU9ImNyZWF0ZV9uZXdfcm9vbSI+CisgICAgPHZhbHVlPkNyZWF0ZS9Nb2RpZnkgYXBwb2ludG1lbnQgc3BlY2lhbCByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTAiIG5hbWU9Im11bHRpcGxlX2FkZHJlc3NlcyI+CisgICAgPHZhbHVlPllvdSBjYW4gZW50ZXIgbXVsdGlwbGUgYWRkcmVzc2VzIGluIHRoZSBmb3JtYXQ6IGZpcnN0bmFtZTEgbGFzdG5hbWUxICZsdDtlbWFpbDEmZ3Q7LCJmaXJzdG5hbWUyIGxhc3RuYW1lMiIgJmx0O2VtYWlsMiZndDssJ2ZpcnN0bmFtZTMgbGFzdG5hbWUzJyAmbHQ7ZW1haWwzJmd0OywgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTEiIG5hbWU9InN0cmVhbV92b2x1bWUiPgorICAgIDx2YWx1ZT5BZGp1c3Qgc3RyZWFtIHZvbHVtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTEyIiBuYW1lPSJtaWNyb3Bob25lX3ZvbHVtZSI+CisgICAgPHZhbHVlPkFkanVzdCBtaWNyb3Bob25lIHZvbHVtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTEzIiBuYW1lPSJjaGF0X21vZGVyYXRlZCI+CisgICAgPHZhbHVlPklzIGNoYXQgbW9kZXJhdGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTQiIG5hbWU9ImNoYXRfbW9kZXJhdGVkIj4KKyAgICA8dmFsdWU+QWxsb3cgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE1IiBuYW1lPSJjaGF0X29wZW5lZCI+CisgICAgPHZhbHVlPkNoYXQgcGFuZWwgb3BlbmVkIGJ5IGRlZmF1bHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNiIgbmFtZT0iZmlsZXNfb3BlbmVkIj4KKyAgICA8dmFsdWU+RmlsZXMgcGFuZWwgb3BlbmVkIGJ5IGRlZmF1bHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNyIgbmFtZT0ic2VydmVyIGFkbWluIHNlY3Rpb24gbGFzdHBpbmciPgorICAgIDx2YWx1ZT5MYXN0IHBpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxOCIgbmFtZT0ic2VydmVyIGFkbWluIHNlY3Rpb24gbGFzdHBpbmcgaW5mbyI+CisgICAgPHZhbHVlPkV2ZXJ5IHNsYXZlIHNlbmRzIGEgcGluZyB0byB0aGUgbWFzdGVyIGV2ZXJ5IDMgc2Vjb25kcyAoY29uZmlndXJhYmxlKS4gU2xhdmUgbGFzdFBpbmcgbXVzdCBiZSBzbWFsbGVyIHRoZW4gMSBtaW51dGUgc28gdGhhdCB0aGUgbWFzdGVyIHVzZXMgdGhlIHNsYXZlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE5IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcG9ydCI+CisgICAgPHZhbHVlPkhUVFAgUG9ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIwIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gdXNlciI+CisgICAgPHZhbHVlPlVzZXIgKFNPQVAtQWNjZXNzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIxIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcGFzc3dvcmQiPgorICAgIDx2YWx1ZT5QYXNzd29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIyIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gd2ViYXBwIHBhdGgiPgorICAgIDx2YWx1ZT5XZWJhcHAgcGF0aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIzIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcHJvdG9jb2wiPgorICAgIDx2YWx1ZT5Qcm90b2NvbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI0IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcGluZyBydW5uaW5nIj4KKyAgICA8dmFsdWU+UGluZyBydW5uaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjUiIG5hbWU9InNlcnZlciBhZG1pbiBhY3RpdmUiPgorICAgIDx2YWx1ZT5BY3RpdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyNiIgbmFtZT0iZ2VuZXJhdGVfaGFzaCI+CisgICAgPHZhbHVlPkdlbmVyYXRlIFVSTDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI3IiBuYW1lPSJuZXR3b3JrIHRlc3RpbmcgbGluayI+CisgICAgPHZhbHVlPk5ldHdvcmsgdGVzdGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI4IiBuYW1lPSJyb29tX29wdGlvbnMiPgorICAgIDx2YWx1ZT5BdXRvIHNlbGVjdCBpbnRlcnZpZXcgdmlkZW8gcG9kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjkiIG5hbWU9ImZvbnRfdW5kZXJsaW5lIj4KKyAgICA8dmFsdWU+VW5kZXJsaW5lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzAiIG5hbWU9ImZvbnRfc3R5bGUiPgorICAgIDx2YWx1ZT5Gb250IHN0eWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzEiIG5hbWU9ImFsbG93X2ZvbnRfc3R5bGVzIj4KKyAgICA8dmFsdWU+QWxsb3cgZm9udCBzdHlsZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMiIgbmFtZT0iZm9udF9jb2xvciI+CisgICAgPHZhbHVlPkZvbnQgY29sb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMyIgbmFtZT0iaHlwZXJsaW5rIj4KKyAgICA8dmFsdWU+SHlwZXJsaW5rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzQiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW4iPgorICAgIDx2YWx1ZT5TaG93IHNlc3Npb24gc3RhdGlzdGljczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM1IiBuYW1lPSJjb25uZWN0aW9uIGFkbWluIj4KKyAgICA8dmFsdWU+U2Vzc2lvbiBkZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzYiIG5hbWU9InN5c3RlbV9pbXBvcnQiPgorICAgIDx2YWx1ZT5TeXN0ZW0gaW1wb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzciIG5hbWU9ImluY2x1ZGVfaW50b19iYWNrdXAiPgorICAgIDx2YWx1ZT5JbmNsdWRlIHVwbG9hZGVkIGZpbGVzIGFuZCByZWNvcmRpbmdzIGluIGJhY2t1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM4IiBuYW1lPSJyb29tX2FkbWluX3NpcCI+CisgICAgPHZhbHVlPkVuYWJsZSBTSVAgdHJhbnNwb3J0IGluIHRoZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzkiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19jb25maXJtIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIHByb3ZpZGUgdGhpcyB1c2VyIGFuIGV4Y2x1c2l2ZSBhdWRpbz88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU0MCIgbmFtZT0ibm9fdGltZXpvbmUiPgorICAgIDx2YWx1ZT5QbGVhc2Ugc3BlY2lmeSB5b3VyIHRpbWV6b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NDUiIG5hbWU9ImNvbnRlbnRfaXNfc2F2aW5nIj4KKyAgICA8dmFsdWU+Q29udGVudCBpcyBTYXZpbmcsIFBsZWFzZSB3YWl0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorPC9sYW5ndWFnZT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL2hlYnJldy54bWwgYi9XZWJDb250ZW50L2xhbmd1YWdlcy9oZWJyZXcueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExMjM5YzcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L2xhbmd1YWdlcy9oZWJyZXcueG1sCkBAIC0wLDAgKzEsNDY1MiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKworPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworVGhpcyBGaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5IHRoZSBMYW5ndWFnZUVkaXRvciAKK3RvIGFkZCBuZXcgTGFuZ3VhZ2VzIG9yIG1vZGlmeS9jdXN0b21pemUgaXQgdXNlIHRoZSBMYW5ndWFnZUVkaXRvciAKK3NlZSBodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvTGFuZ3VhZ2VFZGl0b3IuaHRtbCBmb3IgRGV0YWlscyAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjLS0+Cis8bGFuZ3VhZ2UgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeG1sbnM6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbj0ibGFuZ3VhZ2UueHNkIj4KKyAgPHN0cmluZyBpZD0iMSIgbmFtZT0iY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPkNvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMiIgbmFtZT0ibWVldGluZyI+CisgICAgPHZhbHVlPk1lZXRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMyIgbmFtZT0iY2xhc3Nyb29tIj4KKyAgICA8dmFsdWU+RXZlbnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQiIG5hbWU9InNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNSIgbmFtZT0iYmVudXR6ZXIiPgorICAgIDx2YWx1ZT5Qcm9maWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYiIG5hbWU9ImFkbWluIj4KKyAgICA8dmFsdWU+QWRtaW5pc3RyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNyIgbmFtZT0ic3RvcCI+CisgICAgPHZhbHVlPlN0b3A8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOCIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+UmVjb3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkiIG5hbWU9Im5vZmlsZSI+CisgICAgPHZhbHVlPk5vIGZpbGUgYXZhaWxhYmxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwIiBuYW1lPSJyZWNvcmRieXRlYWNoZXIiPgorICAgIDx2YWx1ZT5SZWNvcmQgYnkgVGVhY2hlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMSIgbmFtZT0iY29ubmVjdGVkdXNlcnMiPgorICAgIDx2YWx1ZT5Db25uZWN0ZWQgdXNlcnM6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyIiBuYW1lPSJzdGFydGNvbmYiPgorICAgIDx2YWx1ZT5TdGFydCBhIGNvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMiIG5hbWU9Im15bmFtZSI+CisgICAgPHZhbHVlPk15IE5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQiIG5hbWU9InZpZGVvY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPlZpZGVvQ29uZmVyZW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNSIgbmFtZT0iaW1wb3J0Ij4KKyAgICA8dmFsdWU+RmlsZSBVcGxvYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYiIG5hbWU9InJlZnJlc2hmaWxlcyI+CisgICAgPHZhbHVlPlJlZnJlc2ggbGlzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNyIgbmFtZT0idG9tYWluZmlsZSI+CisgICAgPHZhbHVlPlRvIE1haW4gRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOCIgbmFtZT0ibmV3cG9sbCI+CisgICAgPHZhbHVlPm5ldyBwb2xsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5IiBuYW1lPSJuZXdwb2xsaGVhZGVyIj4KKyAgICA8dmFsdWU+QSBuZXcgcG9sbCBmb3IgdGhlIGNvbmZlcmVuY2UuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwIiBuYW1lPSJxdWVzdGlvbiI+CisgICAgPHZhbHVlPlF1ZXN0aW9uOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMSIgbmFtZT0icG9sbHR5cGUiPgorICAgIDx2YWx1ZT5UeXBlIG9mIHBvbGw6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyIiBuYW1lPSJjcmVhdGUiPgorICAgIDx2YWx1ZT5DcmVhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMiIG5hbWU9ImluZm9tZXNzYWdlIj4KKyAgICA8dmFsdWU+SW5mbzogRWFjaCBjb25uZWN0ZWQgdXNlciByZWNlaXZlcyBhIG1lc3NhZ2Ugd2l0aCB0aGUgbmV3IHBvbGwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0IiBuYW1lPSJjcmVhdHBvbGwiPgorICAgIDx2YWx1ZT5DcmVhdGUgYSBwb2xsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1IiBuYW1lPSJjYW5jZWwiPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYiIG5hbWU9Inllc25vIj4KKyAgICA8dmFsdWU+WWVzL05vPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3IiBuYW1lPSJudW1lcmljIj4KKyAgICA8dmFsdWU+TnVtZXJpYyAxLTEwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4IiBuYW1lPSJwb2xsIj4KKyAgICA8dmFsdWU+UG9sbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOSIgbmFtZT0ibW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPk11c3QgYmUgTW9kZXJhdG9yIHRvIGNyZWF0ZSBhbiBxdWVzdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMCIgbmFtZT0idm90ZSI+CisgICAgPHZhbHVlPllvdXIgdm90ZSBpcyByZWdpc3RlcmVkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMSIgbmFtZT0iYWxyZWFkeXZvdGVkIj4KKyAgICA8dmFsdWU+WW91ciBoYXZlIGFscmVhZHkgdm90ZWQgaW4gdGhpcyBwb2xsLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMiIgbmFtZT0idm90aW5nIj4KKyAgICA8dmFsdWU+Vm90ZSAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzIiBuYW1lPSJhbnN3ZXIiPgorICAgIDx2YWx1ZT5Zb3VyIHJlc3BvbnNlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNCIgbmFtZT0ieWVzIj4KKyAgICA8dmFsdWU+WWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1IiBuYW1lPSJubyI+CisgICAgPHZhbHVlPk5vPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2IiBuYW1lPSJxdWVzdGlvbndhbnQiPgorICAgIDx2YWx1ZT53YW50cyB0byBrbm93OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNyIgbmFtZT0icG9sbHJlc3VsdHMiPgorICAgIDx2YWx1ZT5Qb2xsIHJlc3VsdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgiIG5hbWU9InF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+UXVlc3Rpb246PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5IiBuYW1lPSJyZXN1bHRzIj4KKyAgICA8dmFsdWU+UmVzdWx0czo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAiIG5hbWU9ImFuc3dlcnMiPgorICAgIDx2YWx1ZT5BbnN3ZXJzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MSIgbmFtZT0ibm9wb2xsIj4KKyAgICA8dmFsdWU+Tm8gcG9sbHMgaGF2ZSBiZWVuIHN0YXJ0ZWQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyIiBuYW1lPSJ2b3RpbmdzIj4KKyAgICA8dmFsdWU+Vm90ZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMiIG5hbWU9Im1lZXRpbmciPgorICAgIDx2YWx1ZT5NZWV0aW5nIChtYXggNCBzZWF0cyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQiIG5hbWU9ImNvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT5Db25mZXJlbmNlIChtYXggNTAgc2VhdHMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1IiBuYW1lPSJ0eXBlIj4KKyAgICA8dmFsdWU+VHlwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NiIgbmFtZT0icmVtYWluaW5nc2VhdHMiPgorICAgIDx2YWx1ZT5PdGhlciBzZWF0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NyIgbmFtZT0iYWxyZWFkeWNob3NlbiI+CisgICAgPHZhbHVlPkFscmVhZHkgY2hvc2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4IiBuYW1lPSJlbnRlciI+CisgICAgPHZhbHVlPmVudGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5IiBuYW1lPSJtb2RsZWF2ZSI+CisgICAgPHZhbHVlPlRoZSBtb2RlcmF0b3IgaGFzIGxlZnQgdGhlIG1lZXRpbmcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwIiBuYW1lPSJzeXN0ZW1tZXNzYWdlIj4KKyAgICA8dmFsdWU+U3lzdGVtIGluZm9ybWF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxIiBuYW1lPSJjaG9zc2VkZXZpY2UiPgorICAgIDx2YWx1ZT5DaG9vc2UgZGV2aWNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyIiBuYW1lPSJjaG9vc2VjYW0iPgorICAgIDx2YWx1ZT5DaG9vc2Ugd2ViY2FtOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MyIgbmFtZT0iY2hvb3NlbWljIj4KKyAgICA8dmFsdWU+Q2hvb3NlIG1pY3JvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NCIgbmFtZT0ib2siPgorICAgIDx2YWx1ZT5vazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NSIgbmFtZT0iY2FuY2VsMiI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NiIgbmFtZT0icmVjb25lZWN0bmVlZGVkIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgdG8gcmVjb25uZWN0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NyIgbmFtZT0iZWRpdHNldHVwIj4KKyAgICA8dmFsdWU+RWRpdCBzZXR1cC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgiIG5hbWU9ImNvdXJzZSI+CisgICAgPHZhbHVlPkNvdXJzZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkiIG5hbWU9Imxhbmd1YWdlIj4KKyAgICA8dmFsdWU+TGFuZ3VhZ2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwIiBuYW1lPSJvazIiPgorICAgIDx2YWx1ZT5vazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MSIgbmFtZT0iY2FuY2VsMyI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MiIgbmFtZT0iY2xlYXJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+Q2xlYXIgd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MyIgbmFtZT0iY2xlYXJ3aGl0ZWJvYXJkcXVlc3Rpb24iPgorICAgIDx2YWx1ZT5EbyB5b3Ugd2FudCB0aGF0IHRoZSB3aGl0ZWJvYXJkIHRvIGJlIGVtcHRpZWQgYmVmb3JlIGEgbmV3IHBpY3R1cmUgaXMgYWRkZWQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0IiBuYW1lPSJkb250YXNrYWdhaW4iPgorICAgIDx2YWx1ZT5Eb24ndCBhc2sgYWdhaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUiIG5hbWU9Im5vIj4KKyAgICA8dmFsdWU+bm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYiIG5hbWU9ImVkaXRzZXR1cDIiPgorICAgIDx2YWx1ZT5FZGl0IHNldHVwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3IiBuYW1lPSJuZWVkY29uZmlybWF0aW9ud2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkNvbmZpcm1hdGlvbiByZXF1ZXN0IGJlZm9yZSBlbXB0eWluZyB0aGUgd2hpdGVib2FyZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgiIG5hbWU9InVzZXJpbmZvIj4KKyAgICA8dmFsdWU+VXNlciBJbmZvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5IiBuYW1lPSJjbGVhcmRyYXdhcmVhIj4KKyAgICA8dmFsdWU+Q2xlYXIgV2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MCIgbmFtZT0idW5kbyI+CisgICAgPHZhbHVlPlVuZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzEiIG5hbWU9InJlZG8iPgorICAgIDx2YWx1ZT5SZWRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyIiBuYW1lPSJzZWxlY3RvYmplY3QiPgorICAgIDx2YWx1ZT5TZWxlY3QgYW4gT2JqZWN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczIiBuYW1lPSJ0ZXh0Ij4KKyAgICA8dmFsdWU+VGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NCIgbmFtZT0icGFpbnQiPgorICAgIDx2YWx1ZT5QYWludDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NSIgbmFtZT0iZHJhd2xpbmUiPgorICAgIDx2YWx1ZT5EcmF3IExpbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYiIG5hbWU9ImRyYXd1Ij4KKyAgICA8dmFsdWU+RHJhdyBVbmRlcmxpbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzciIG5hbWU9InJlY3QiPgorICAgIDx2YWx1ZT5SZWN0YW5nbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgiIG5hbWU9ImVsbGlwc2UiPgorICAgIDx2YWx1ZT5FbGxpcHNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5IiBuYW1lPSJhcnJvdyI+CisgICAgPHZhbHVlPkFycm93PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwIiBuYW1lPSJkZWxldGVjaG9zZW4iPgorICAgIDx2YWx1ZT5EZWxldGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEiIG5hbWU9ImFwcGxpeW1vZCI+CisgICAgPHZhbHVlPkFwcGx5IGZvciBtb2RlcmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyIiBuYW1lPSJhcHBseSI+CisgICAgPHZhbHVlPkFwcGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzIiBuYW1lPSJjYW5jZWwiPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQiIG5hbWU9Im1vZCI+CisgICAgPHZhbHVlPkkgaGF2ZSBhIHF1ZXN0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1IiBuYW1lPSJjbG9zZSI+CisgICAgPHZhbHVlPkNsb3NlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2IiBuYW1lPSJpdGFsaWMiPgorICAgIDx2YWx1ZT5pdGFsaWM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODciIG5hbWU9ImJvbGQiPgorICAgIDx2YWx1ZT5ib2xkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4IiBuYW1lPSJ3YWl0aW5nIj4KKyAgICA8dmFsdWU+V0FJVElORzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OSIgbmFtZT0iYXBwbHlNZXNzYWdlIj4KKyAgICA8dmFsdWU+QSBVc2VyIHdhbnRzIHRvIGFwcGx5IGZvciBtb2RlcmF0aW9uLCB5b3UgY2FuIGVpdGhlciBncmFudCBoaW0gb25seSBhY2Nlc3MgdG8gdGhlIHdoaXRlYm9hcmQgb3IgY29tcGxldGVseSBzd2l0Y2ggdGhlIG1vZGVyYXRpb24gcm9sZS4gVXNlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAiIG5hbWU9ImFjY2VwdCI+CisgICAgPHZhbHVlPkFjY2VwdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MSIgbmFtZT0icmVqZWN0Ij4KKyAgICA8dmFsdWU+UmVqZWN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyIiBuYW1lPSJjYW5jZWwiPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMiIG5hbWU9InNlbmRtb2RyZXF1ZXN0bWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbmRpbmcgcmVxdWVzdCB0byBmb2xsb3dpbmcgVXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQiIG5hbWU9ImFjY2VwdCI+CisgICAgPHZhbHVlPkFjY2VwdGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1IiBuYW1lPSJyZWplY3QiPgorICAgIDx2YWx1ZT5SZWplY3RlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NiIgbmFtZT0iY2hhbmdlbW9kIj4KKyAgICA8dmFsdWU+Q2hhbmdlIE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NyIgbmFtZT0ibm9ubW9kZXJyb3JtZXNzYWdlIj4KKyAgICA8dmFsdWU+WW91IGFyZSBub3QgbW9kZXJhdGluZyB0aGlzIGNvdXJzZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgiIG5hbWU9Im1vZGVyYXRvciI+CisgICAgPHZhbHVlPk1vZGVyYXRvcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkiIG5hbWU9InJvb21mdWxsbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoaXMgUm9vbSBpcyBmdWxsLiBTb3JyeSBwbGVhc2UgdHJ5IGFnYWluIGxhdGVyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAiIG5hbWU9ImVsbGxpcHNlIj4KKyAgICA8dmFsdWU+RWxsaXBzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEiIG5hbWU9ImNsb3NlIj4KKyAgICA8dmFsdWU+Q2xvc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyIiBuYW1lPSJBdXRoRXJyb3IiPgorICAgIDx2YWx1ZT5pbnB1dCBkYXRhIGVycm9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMyIgbmFtZT0ibWluNHVzZXJuYW1lIj4KKyAgICA8dmFsdWU+NCBvciBtb3JlIGNoYXJhY3RlcnM7IGNhcGl0YWxpemF0aW9uIG1hdHRlcnMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNCIgbmFtZT0ibWluNHBhc3MiPgorICAgIDx2YWx1ZT51c2VycGFzcyBtdXN0IGJlIGF0IGxlYXN0IDQgY2hhcmFjdGVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUiIG5hbWU9InVzZXJuYW1ldGFrZW4iPgorICAgIDx2YWx1ZT5UaGUgdXNlcm5hbWUgaXMgYWxyZWFkeSB0YWtlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYiIG5hbWU9ImVtYWlsdGFrZW4iPgorICAgIDx2YWx1ZT5UaGUgZW1haWwgaXMgYWxyZWFkeSByZWdpc3RlcmVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNyIgbmFtZT0iZW1haWx0YWtlbiI+CisgICAgPHZhbHVlPlN5c3RlbSBlcnJvciBwbGVhc2UgY29udGFjdCBTeXN0ZW0tQWRtaW5zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOCIgbmFtZT0iQXV0aGxvZ2luIj4KKyAgICA8dmFsdWU+TG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5IiBuYW1lPSJBdXRodXNlciI+CisgICAgPHZhbHVlPlVzZXIgb3IgRU1haWw6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMCIgbmFtZT0iQXV0aHBhc3MiPgorICAgIDx2YWx1ZT5QYXNzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEiIG5hbWU9IkF1dGhsYW5nIj4KKyAgICA8dmFsdWU+TGFuZ3VhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyIiBuYW1lPSJBdXRocmVnIj4KKyAgICA8dmFsdWU+U2lnbiBJbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMiIG5hbWU9InJlZ2Zvcm1oZWFkIj4KKyAgICA8dmFsdWU+U2lnbiBVcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQiIG5hbWU9InJlZ2Zvcm11c2VyIj4KKyAgICA8dmFsdWU+VXNlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1IiBuYW1lPSJyZWdmb3JtcGFzcyI+CisgICAgPHZhbHVlPlBhc3M6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNiIgbmFtZT0icmVnZm9ybXJldHlwZSI+CisgICAgPHZhbHVlPlJlVHlwZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3IiBuYW1lPSJyZWdmb3JtZmlyc3RuYW1lIj4KKyAgICA8dmFsdWU+Rmlyc3RuYW1lOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgiIG5hbWU9InJlZ2Zvcm1sYXN0bmFtZSI+CisgICAgPHZhbHVlPkxhc3RuYW1lOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkiIG5hbWU9InJlZ2Zvcm1tYWlsIj4KKyAgICA8dmFsdWU+TWFpbDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwIiBuYW1lPSJyZWdmb3Jtc3RhdGUiPgorICAgIDx2YWx1ZT5Db3VudHJ5OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjEiIG5hbWU9InJlZ2Zvcm1idG4xIj4KKyAgICA8dmFsdWU+UmVnaXN0ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyIiBuYW1lPSJyZWdmb3JtYnRuMiI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMiIG5hbWU9IkF1dGhidG4yIj4KKyAgICA8dmFsdWU+Tm90IGEgbWVtYmVyPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPkhvbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1IiBuYW1lPSJ1c2VyYWRtaW4iPgorICAgIDx2YWx1ZT7Xntep16rXntep15nXnTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYiIG5hbWU9Imdyb3VwYWRtaW4iPgorICAgIDx2YWx1ZT5Hcm91cHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3IiBuYW1lPSJvcmdhZG1pbiI+CisgICAgPHZhbHVlPk9yZ2FuaXNhdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4IiBuYW1lPSJoZWFkY29uZiI+CisgICAgPHZhbHVlPk1lZXRpbmctUm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5IiBuYW1lPSJjb25mX3B1YiI+CisgICAgPHZhbHVlPnB1YmxpYzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAiIG5hbWU9ImhlYWRfb3JnIj4KKyAgICA8dmFsdWU+T3JnYW5pc2F0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMSIgbmFtZT0iYnRuX2VudGVycm9vbSI+CisgICAgPHZhbHVlPkVudGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMiIgbmFtZT0idXNlcmFsdGVyc2VsZl9sb2dpbiI+CisgICAgPHZhbHVlPkxvZ2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMyIgbmFtZT0idXNlcmFsdGVyc2VsZl9wYXNzIj4KKyAgICA8dmFsdWU+UGFzc3dvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Bhc3NyZXR5cGUiPgorICAgIDx2YWx1ZT5SZXR5cGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2ZpcnN0bmFtZSI+CisgICAgPHZhbHVlPkZpcnN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYiIG5hbWU9InVzZXJhbHRlcnNlbGZfbGFzdG5hbWUiPgorICAgIDx2YWx1ZT5MYXN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzciIG5hbWU9InVzZXJhbHRlcnNlbGZfZW1haWwiPgorICAgIDx2YWx1ZT5NYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOCIgbmFtZT0idXNlcmFsdGVyc2VsZl9iaXJ0aCI+CisgICAgPHZhbHVlPkJpcnRoZGF5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOSIgbmFtZT0idXNlcmFsdGVyc2VsZl9zdHJlZXRubyI+CisgICAgPHZhbHVlPlN0cmVldC9ObzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDAiIG5hbWU9InVzZXJhbHRlcnNlbGZfdG93biI+CisgICAgPHZhbHVlPlpJUC9Ub3duPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MSIgbmFtZT0idXNlcmFsdGVyc2VsZl9zdGF0ZSI+CisgICAgPHZhbHVlPkNvdW50cnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2FkcmVzc2NvbW1lbnQiPgorICAgIDx2YWx1ZT5BZHJlc3MtSW5mbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMiIG5hbWU9InVzZXJhbHRlcnNlbGZfaGVhZGVyIj4KKyAgICA8dmFsdWU+VXNlcmRhdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0IiBuYW1lPSJzYXZlbWVudWJhcl9zYXZlbGFiZWwiPgorICAgIDx2YWx1ZT5TYXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NSIgbmFtZT0ic2F2ZW1lbnViYXJfc2F2ZWxhYmVsIj4KKyAgICA8dmFsdWU+U2F2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYiIG5hbWU9ImFkbWluX3VzZXJsaXN0X3VzZXJfaWQiPgorICAgIDx2YWx1ZT5VU0VSLUlEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NyIgbmFtZT0iYWRtaW5fdXNlcmxpc3RfbG9naW4iPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgiIG5hbWU9ImFkbWluX3VzZXJsaXN0X2ZpcnN0bmFtIj4KKyAgICA8dmFsdWU+Rmlyc3RuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OSIgbmFtZT0iYWRtaW5fdXNlcmxpc3RfbGFzdG5hbWUiPgorICAgIDx2YWx1ZT5MYXN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAiIG5hbWU9InR1cm5vdmVybGlzdF9uZXh0Ij4KKyAgICA8dmFsdWU+U2hvdyBuZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MSIgbmFtZT0idHVybm92ZXJsaXN0X3ByZSI+CisgICAgPHZhbHVlPlNob3cgcHJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MiIgbmFtZT0ic2F2ZWNvbnRlbnRfY29uZmlybSI+CisgICAgPHZhbHVlPkRlbGV0ZSByZWNvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzIiBuYW1lPSJzYXZlY29udGVudF9jb25maXJtX2NhbmNlbF9idG4iPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU0IiBuYW1lPSJzYXZlY29udGVudF9jb25maXJtX2NvbmZpcm1fYnRuIj4KKyAgICA8dmFsdWU+RGVsZXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NSIgbmFtZT0ic2F2ZW1lbnViYXJfYWRkbGFiZWwiPgorICAgIDx2YWx1ZT5OZXcgcmVjb3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NiIgbmFtZT0ic2F2ZW1lbnViYXJfcmVsb2FkbGFiZWwiPgorICAgIDx2YWx1ZT5SZWZyZXNoIHJlY29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTciIG5hbWU9InNhdmVtZW51YmFyX2RlbGV0ZWxhYmVsIj4KKyAgICA8dmFsdWU+RGVsZXRlIHJlY29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTgiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9zdGF0dXMiPgorICAgIDx2YWx1ZT5TdGF0dXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU5IiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fc3RhdHVzSXRlbSI+CisgICAgPHZhbHVlPmRpc2FibGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2MCIgbmFtZT0idXNlcmFsdGVyX2FkbWluX3N0YXR1c0l0ZW0iPgorICAgIDx2YWx1ZT5lbmFibGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2MSIgbmFtZT0idXNlcmFsdGVyX2FkbWluX29yZ2FuaXNhdGlvbiI+CisgICAgPHZhbHVlPk9yZ2FuaXNhdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYyIiBuYW1lPSJjYWxlbmRhcl9pY29ubGFiZWwiPgorICAgIDx2YWx1ZT5DYWxlbmRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjMiIG5hbWU9InNhdmV3aW5kb3dfYnRuIj4KKyAgICA8dmFsdWU+Q2xvc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY0IiBuYW1lPSJvcmdhbmlzYXRpb250YWJsZWxpc3RfaWRyb3ciPgorICAgIDx2YWx1ZT5PcmdhbmlzYXRpb24tSUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY1IiBuYW1lPSJvcmdhbmlzYXRpb250YWJsZWxpc3RfbmFtZXJvdyI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY2IiBuYW1lPSJ1c2VydmFsdWVfbGV2ZWxpZDEiPgorICAgIDx2YWx1ZT5Vc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2NyIgbmFtZT0idXNlcnZhbHVlX2xldmVsaWQyIj4KKyAgICA8dmFsdWU+TW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2OCIgbmFtZT0idXNlcnZhbHVlX2xldmVsaWQzIj4KKyAgICA8dmFsdWU+QWRtaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY5IiBuYW1lPSJ1c2VydmFsdWVfbGV2ZWxsYWJlbCI+CisgICAgPHZhbHVlPlVzZXJsZXZlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzAiIG5hbWU9Im9yZ3ZhbHVlX2hlYWRlciI+CisgICAgPHZhbHVlPk9yZ2FuaXNhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzEiIG5hbWU9Im9yZ3ZhbHVlX29yZ25hbWUiPgorICAgIDx2YWx1ZT5uYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MiIgbmFtZT0ib3JndmFsdWVfb3JnbmFtZSI+CisgICAgPHZhbHVlPkFkZCBvcmdhbmlzYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTczIiBuYW1lPSJvcmd2YWx1ZV9vcmduYW1lIj4KKyAgICA8dmFsdWU+QWRkIG9yZ2FuaXNhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzQiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW4iPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc1IiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luIj4KKyAgICA8dmFsdWU+QWRkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3NiIgbmFtZT0ib3JndmFsdWVfdXNlcndpbiI+CisgICAgPHZhbHVlPlJlbW92ZSBPcmdhbmlzYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc3IiBuYW1lPSJvcmd2YWx1ZV91c2VybGlzdCI+CisgICAgPHZhbHVlPlVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc4IiBuYW1lPSJvcmd2YWx1ZV91c2VybGlzdGFkZCI+CisgICAgPHZhbHVlPkFkZCB1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3OSIgbmFtZT0ib3JndmFsdWVfdXNlcmxpc3RkZWxldGUiPgorICAgIDx2YWx1ZT5EZWxldGUgdXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODAiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5oZWFkZXIiPgorICAgIDx2YWx1ZT5BZGQgdXNlciB0byBPcmdhbml6YXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgxIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luc2VhcmNoZmllbGQiPgorICAgIDx2YWx1ZT5TZWFyY2ggdXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODIiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5zZWFyY2hidG4iPgorICAgIDx2YWx1ZT5TZWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgzIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luc2VhcmNocmVzdWx0Ij4KKyAgICA8dmFsdWU+VXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODQiIG5hbWU9ImxvZ2lud2luX2Nob29zZW9yZ2FuaXNhdGlvbiI+CisgICAgPHZhbHVlPk9yZ2FuaXNhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODUiIG5hbWU9ImxvZ2lud2luX2Nob29zZW9yZ2FuaXNhdGlvbmJ0biI+CisgICAgPHZhbHVlPkVudGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NiIgbmFtZT0ibmF2aV9yb29tYWRtaW4iPgorICAgIDx2YWx1ZT5Db25mZXJlbmNlcm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg3IiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+Q29uZmVyZW5jZXJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4OCIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPklEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4OSIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkwIiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+cHVibGljPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5MSIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPk9yZ2FuaXNhdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkyIiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+TWVldGluZ3Jvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5MyIgbmFtZT0icm9vbXZhbHVlX25hbWUiPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NCIgbmFtZT0icm9vbXZhbHVlX3R5cGUiPgorICAgIDx2YWx1ZT5UeXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NSIgbmFtZT0icm9vbXZhbHVlX2lzcHVibGljIj4KKyAgICA8dmFsdWU+UHVibGljPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NiIgbmFtZT0icm9vbXZhbHVlX2NvbW1lbnQiPgorICAgIDx2YWx1ZT5Db21tZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NyIgbmFtZT0id2hpdGVib2FyZF9zYXZlaWNvbiI+CisgICAgPHZhbHVlPlNhdmUgYW5kIEV4cG9ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTgiIG5hbWU9IndoaXRlYm9hcmRfb3Blbmljb24iPgorICAgIDx2YWx1ZT5sb2FkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5OSIgbmFtZT0id2hpdGVib2FyZF9zYXZlYXN3aW5oZWFkZXIiPgorICAgIDx2YWx1ZT5TYXZlIEFzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMCIgbmFtZT0id2hpdGVib2FyZF9zYXZlYXN3aW50ZXh0Ij4KKyAgICA8dmFsdWU+RmlsZW5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAxIiBuYW1lPSJmaWxlcyI+CisgICAgPHZhbHVlPten15HXpteZ1508L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAyIiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbmJ0bjEiPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAzIiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbmJ0bjIiPgorICAgIDx2YWx1ZT5TYXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNCIgbmFtZT0icnBjZXJyb3J3aW5faGVhZGVyIj4KKyAgICA8dmFsdWU+RXJyb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA1IiBuYW1lPSJsb2Fkd21sX2hlYWRlciI+CisgICAgPHZhbHVlPkxvYWRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA2IiBuYW1lPSJsb2Fkd21sX21lc3NzbG9hZCI+CisgICAgPHZhbHVlPk9iamVjdHMgbG9hZGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNyIgbmFtZT0ibG9hZHdtbF9tZXNzc3luYyI+CisgICAgPHZhbHVlPlN5bmNocm9uaXppbmcsIFVzZXJzIHRvIHdhaXQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwOCIgbmFtZT0ibG9hZGltYWdlX21lc3Nsb2FkIj4KKyAgICA8dmFsdWU+TG9hZGluZyBJbWFnZWRhdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA5IiBuYW1lPSJsb2FkaW1hZ2VfbWVzc3N5bmMiPgorICAgIDx2YWx1ZT5TeW5jaHJvbml6aW5nLCBVc2VycyB0byB3YWl0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTAiIG5hbWU9ImxvYWR3bWxfY29uZmlybWhlYWRlciI+CisgICAgPHZhbHVlPkNsZWFyIFdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjExIiBuYW1lPSJsb2Fkd21sX2NvbmZpcm1tZXNzIj4KKyAgICA8dmFsdWU+Q2xlYXIgV2hpdGVib2FyZCwgYWxsIGRhdGEgb24gV2hpdGVib2FyZCB3aWxsIGJlIGxvc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEyIiBuYW1lPSJsb2Fkd21sX2NvbmZpcm1tZXNzMiI+CisgICAgPHZhbHVlPkNvbmZpcm0gYmVmb3JlIGxvYWRpbmcgYSBmaWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMyIgbmFtZT0ic2VuZF9pbnZpdGF0aW9uX2J0biI+CisgICAgPHZhbHVlPlNlbmQgaW52aXRhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTQiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5TZW5kIGludml0YXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE1IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fc3ViamVjdCI+CisgICAgPHZhbHVlPlN1YmplY3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE2IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fcmVjaXBpZW50Ij4KKyAgICA8dmFsdWU+UmVjaXBpZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNyIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX21lc3NhZ2UiPgorICAgIDx2YWx1ZT5NZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxOCIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX2J0bl9jb25maXJtIj4KKyAgICA8dmFsdWU+U2VuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTkiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9idG5fY2FuY2VsIj4KKyAgICA8dmFsdWU+Y2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyMCIgbmFtZT0ic2VuZF9jaGF0X3RleHRfYnRuIj4KKyAgICA8dmFsdWU+c2VuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjEiIG5hbWU9Imludml0ZWRfdXNlcndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5Vc2VyZGF0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjIiIG5hbWU9Imludml0ZWRfdXNlcndpbl9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+WW91ciBuaWNrbmFtZSBmb3IgdGhpcyBjb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyMyIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2xvZ2luIj4KKyAgICA8dmFsdWU+TmljazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjQiIG5hbWU9Imludml0ZWRfdXNlcndpbl9maXJzdG5hbWUiPgorICAgIDx2YWx1ZT5GaXJzdG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI1IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fbGFzdG5hbWUiPgorICAgIDx2YWx1ZT5MYXN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjYiIG5hbWU9Imludml0ZWRfdXNlcndpbl9tYWlsIj4KKyAgICA8dmFsdWU+RW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI3IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fbGFuZyI+CisgICAgPHZhbHVlPkxhbmd1YWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyOCIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2VudGVyIj4KKyAgICA8dmFsdWU+ZW50ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI5IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZW50ZXIiPgorICAgIDx2YWx1ZT5Mb2FkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMCIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2VudGVyIj4KKyAgICA8dmFsdWU+RGF0YSBsb2FkaW5nLCBwbGVhc2Ugd2FpdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMxIiBuYW1lPSJ1c2VyX3JlZ2lzdGVyRmFsc2VQV0QiPgorICAgIDx2YWx1ZT5Xcm9uZyBQYXNzd29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzIiIG5hbWU9InVzZXJfcmVnaXN0ZXJGYWxzZVBXREhlYWRlciI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciB0d28gaWRlbnRpY2FsIHBhc3N3b3JkcyB3aXRoIGF0IGxlYXN0IDYgY2hhcmFjdGVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzMiIG5hbWU9InVzZXJfcmVnaXN0ZXJNYWlsRXJyb3IiPgorICAgIDx2YWx1ZT5Xcm9uZyBNYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzNCIgbmFtZT0idXNlcl9yZWdpc3Rlck1haWxFcnJvckhlYWRlciI+CisgICAgPHZhbHVlPllvdSBoYXZlIGVudGVyZWQgYW4gaW52YWxpZCBNYWlsLUFkcmVzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzUiIG5hbWU9InVzZXJfcmVnaXN0ZXJTdWNjZXNzIj4KKyAgICA8dmFsdWU+UmVnaXN0cmF0aW9uIENvbXBsZXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzNiIgbmFtZT0idXNlcl9yZWdpc3RlclN1Y2Nlc3NIZWFkZXIiPgorICAgIDx2YWx1ZT5Zb3VyIGFjY291bnQgaGFzIGJlZW4gY3JlYXRlZC4gWW91IGNhbiBsb2dpbiBub3cuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzNyIgbmFtZT0idXNlcl9zaGFyaW5nX21lc3NhZ2UiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IHNoYXJlIHlvdXIgc2NyZWVuIGF0IHRoZSBtb21lbnQuIFNvbWVib2R5IGVsc2UgYWxyZWFkeSBzaGFyZSdzIGl0cyBzY3JlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzOCIgbmFtZT0idXNlcl9zaGFyaW5nX21lc3NhZ2VIZWFkZXIiPgorICAgIDx2YWx1ZT5TaGFyaW5nIGZvcmJpZGRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzkiIG5hbWU9InVzZXJfZG9TdGFydFNjcmVlblZpZXdlciI+CisgICAgPHZhbHVlPlNoYXJlL1JlY29yZCBTY3JlZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQwIiBuYW1lPSJzY3JlZW5fd2FybkJhbmR3aWR0aCI+CisgICAgPHZhbHVlPkJhZCBCYW5kd2lkdGg6IFlvdSBoYXZlIG5vdCBiZWVuIGFibGUgdG8gc3luY3Jvbml6ZSB0aGUgU2NyZWVuLiBGcmFtZXMgd2lsbCBiZSBkcm9wcGVkLiBJZiB0aGlzIFdhcm5pbmcgaXMgc2hvd24gb2Z0ZW4geW91IGNvdWxkIGFzayB0aGUgbW9kZXJhdG9yIHRvIHJlZHVjZSB0aGUgUXVhbGl0eS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQxIiBuYW1lPSJzY3JlZW5fdXNlcmxhYmVsIj4KKyAgICA8dmFsdWU+U2NyZWVuIG9mOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDIiIG5hbWU9IndoaXRlYm9hcmRfdGFiX3BhaW50Ij4KKyAgICA8dmFsdWU+UGFpbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQzIiBuYW1lPSJ3aGl0ZWJvYXJkX3RhYl9kb2N1bWVudCI+CisgICAgPHZhbHVlPkRvY3VtZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0NCIgbmFtZT0idGFiYmFyX2NoYXRpY29uIj4KKyAgICA8dmFsdWU+Q2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDUiIG5hbWU9InRhYmJhcl9maWxlc2ljb24iPgorICAgIDx2YWx1ZT7Xp9eR16bXmdedPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0NiIgbmFtZT0idGFiYmFyX3BhcnRpY2lwYW50c2ljb24iPgorICAgIDx2YWx1ZT5NZW1iZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0NyIgbmFtZT0ic3dmcHJlc2VudGF0aW9uX2xpc3RzYXZlb3JpZyI+CisgICAgPHZhbHVlPkRvd25sb2FkIG9yaWdpbmFsIGRvY3VtZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0OCIgbmFtZT0ic3dmcHJlc2VudGF0aW9uX2xpc3RzYXZlcGRmIj4KKyAgICA8dmFsdWU+RG93bmxvYWQgcGRmIGRvY3VtZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0OSIgbmFtZT0ic3dmcHJlc2VudGF0aW9uX2xpc3Rsb2Fkc3dmIj4KKyAgICA8dmFsdWU+TG9hZCBQcmVzZW50YXRpb24gdG8gd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTAiIG5hbWU9Im5hdmltYWluX2NvbmZpZyI+CisgICAgPHZhbHVlPkNvbmZpZ3VyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUxIiBuYW1lPSJ3aGl0ZWJvYXJkX2JvdW5kaW5nYm94X2RyYWciPgorICAgIDx2YWx1ZT5EcmFnIHRoaXMgT2JqZWN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MiIgbmFtZT0id2hpdGVib2FyZF9ib3VuZGluZ2JveF9yZXNpemUiPgorICAgIDx2YWx1ZT5SZXNpemUgdGhpcyBPYmplY3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUzIiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl96b29tIj4KKyAgICA8dmFsdWU+JTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTQiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3NsaWRlIj4KKyAgICA8dmFsdWU+b2Y8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU1IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9maXJzdHNsaWRlIj4KKyAgICA8dmFsdWU+R28gdG8gZmlyc3QgUGFnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTYiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3ByZXNsaWRlIj4KKyAgICA8dmFsdWU+R28gdG8gcHJldmlvdXMgUGFnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTciIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX25leHRzbGlkZSI+CisgICAgPHZhbHVlPkdvIHRvIG5leHQgUGFnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTgiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX2xhc3RzbGlkZSI+CisgICAgPHZhbHVlPkdvIHRvIGxhc3QgUGFnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTkiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3pvb21taW51cyI+CisgICAgPHZhbHVlPlpvb20gLS08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYwIiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl96b29tcGx1cyI+CisgICAgPHZhbHVlPlpvb20gKys8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYxIiBuYW1lPSJzYWx1dGF0aW9uX21yIj4KKyAgICA8dmFsdWU+TXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MiIgbmFtZT0ic2FsdXRhdGlvbl9taXNzIj4KKyAgICA8dmFsdWU+TXMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MyIgbmFtZT0ibmF2aW1haW5fY29uZmFkbWluIj4KKyAgICA8dmFsdWU+Q29uZmlndXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjQiIG5hbWU9ImNvbmZ0YWJsZV9oZWFkZXJJZCI+CisgICAgPHZhbHVlPklEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2NSIgbmFtZT0iY29uZnRhYmxlX2hlYWRlcmtleSI+CisgICAgPHZhbHVlPktleTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjYiIG5hbWU9ImNvbmZhZG1pbmZvcm1faGVhZGVyIj4KKyAgICA8dmFsdWU+Q29uZmlndXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjciIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWxrZXkiPgorICAgIDx2YWx1ZT5LZXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY4IiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsdXBkYXRlZCI+CisgICAgPHZhbHVlPmxhc3QgdXBkYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2OSIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbHVwZGF0ZWRieSI+CisgICAgPHZhbHVlPnVwZGF0ZWRieTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzAiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWxjb21tZW50Ij4KKyAgICA8dmFsdWU+Y29tbWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzEiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWxrZXkiPgorICAgIDx2YWx1ZT5WYWx1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzIiIG5hbWU9InR1cm5vdmVybGlzdF9tYXhyZXN1bHRzIj4KKyAgICA8dmFsdWU+b2Y8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjczIiBuYW1lPSJvcmdhbmlzYXRpb25fdXNlcnNoZWFkZXIiPgorICAgIDx2YWx1ZT7Xntep16rXntep15nXnTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzQiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2ljb25kZWxldGUiPgorICAgIDx2YWx1ZT5kZWxldGUgdXNlciBmcm9tIG9yZ2FuaXNhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzUiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2RlbGV0ZWRoZWFkIj4KKyAgICA8dmFsdWU+RDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzYiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2FscmVhZGFkZGVkIj4KKyAgICA8dmFsdWU+VGhpcyB1c2VyIGlzIGFscmVhZHkgbWVtYmVyIG9mIHRoaXMgb3JnYW5pc2F0aW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzciIG5hbWU9ImRhc2hib2FyZF9uZXdzaGVhZGVyIj4KKyAgICA8dmFsdWU+TmV3czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzgiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtzaGVhZGVyIj4KKyAgICA8dmFsdWU+UXVpY2tsaW5rczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzkiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtDb25mIj4KKyAgICA8dmFsdWU+R290byBDb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MCIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua0F1ZGl0Ij4KKyAgICA8dmFsdWU+R290byBBdWRpdG9yaXVtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MSIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua3N1cHBvcnQiPgorICAgIDx2YWx1ZT5IZWxwIGFuZCBTdXBwb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MiIgbmFtZT0iZGFzaGJvYXJkX3F1aWNraG9tZXBhZ2V1cmwiPgorICAgIDx2YWx1ZT5odHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MyIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbWFpbGluZ2xpc3R1cmwiPgorICAgIDx2YWx1ZT5odHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvbWFpbC1saXN0cy5odG1sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4NCIgbmFtZT0iZGFzaGJvYXJkX3JlcG9ydGJ1Z3MiPgorICAgIDx2YWx1ZT5SZXBvcnQgYSBidWchPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4NSIgbmFtZT0iZGFzaGJvYXJkX3Jzc2xpc3RpdGVtbGlua3RleHQiPgorICAgIDx2YWx1ZT5tb3JlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4NiIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua2hvbWVwYWdlbGFiZWwiPgorICAgIDx2YWx1ZT5Qcm9qZWN0IFdlYnNpZGUgKGh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg3IiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rbWFpbGluZ2xpc3RsYWJlbCI+CisgICAgPHZhbHVlPlVzZXIgTWFpbGluZyBMaXN0IChodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvbWFpbC1saXN0cy5odG1sKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODgiIG5hbWU9ImxvZ2luX3JlbWVtYmVydXNlciI+CisgICAgPHZhbHVlPlJlbWVtYmVyIExvZ2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4OSIgbmFtZT0ibWFpbl9uYXZpIj4KKyAgICA8dmFsdWU+Q29udGVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTAiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5NeSBIb21lIFBhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkxIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+TXkgU2NoZWR1bGVkIE1lZXRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MiIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPk15IFNjaGVkdWxlZCBFdmVudHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkzIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+UHVibGljIE1lZXRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPlByaXZhdGUgTWVldGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk1IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+UHVibGljIEV2ZW50czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTYiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5Qcml2YXRlIEV2ZW50czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTciIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5QdWJsaWMgQ29udGVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTgiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5Qcml2YXRlIENvbnRlbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk5IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+UGVyc29uYWwgQ29udGVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDAiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAxIiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+TW9kZXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDIiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5JIGhhdmUgYSBxdWVzdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDMiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5Qb2xsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDQiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5DaG9vc2UgYSBmaWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNSIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPlNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNiIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPkNhbSBhbmQgTWljIFNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNyIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPldoaXRlYm9hcmQgU2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA4IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+RXhpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDkiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5CYWNrIHRvIFJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMCIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPkxvZ291dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTEiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+Rm9yZ290IHlvdXIgcGFzc3dvcmQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMiIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5SZXNldCBQYXNzd29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTMiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+QnkgTWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTQiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+QnkgTG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE1IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPllvdXIgTWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTYiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+WW91ciBMb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTciIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+U2VuZCBNYWlsIHdpdGggcmVzZXQgTGluazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTgiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+Tm8gc3VjaCBlbWFpbCBhZGRyZXNzIHdhcyBmb3VuZC4gTWFrZSBzdXJlIHlvdSBlbnRlciB0aGUgc2FtZSBlbWFpbCBhZGRyZXNzIHlvdSB1c2VkIHRvIGNyZWF0ZSB5b3VyIGFjY291bnQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxOSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5QbGVhc2UgZW50ZXIgZWl0aGVyIGEgTWFpbCBvciBhIFVzZXJuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyMCIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBVc2VyIGNvbm5lY3RlZCB0byB0aGlzIFVzZXJuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyMSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5UaGUgZW1haWwgY29udGFpbmluZyBhIHNwZWNpYWwgbGluayBoYXMgYmVlbiBzZW50IHRvIHlvdXIgZW1haWwgYWRkcmVzcywgcGxlYXNlIGNoZWNrIHlvdXIgbWFpbGJveC4gSWYgeW91IHN0aWxsIGhhdmUgbm90IHJlY2VpdmVkIGEgZW1haWwsIHBsZWFzZSBhZGp1c3QgeW91ciBlbWFpbCBzcGFtIHNldHRpbmdzIGFuZCByZXNlbmQgY29uZmlybWF0aW9uIGVtYWlsLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjIiIG5hbWU9ImVycm9ydHlwZSI+CisgICAgPHZhbHVlPkVycm9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyMyIgbmFtZT0iZXJyb3J0eXBlIj4KKyAgICA8dmFsdWU+TWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjQiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPkludmFsaWQgSGFzaC4gTm8gVXNlciBmb3VuZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI1IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5SZXNldCBZb3VyIFBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNiIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+TG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI3IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5jaGFuZ2UgUGFzc3dvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI4IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5uZXcgUGFzc3dvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI5IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5yZS1lbnRlciBQYXNzd29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzAiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPlRoZSBQYXNzd29yZHMgeW91IGVudGVyZWQgd2VyZW4ndCBpZGVudGljYWwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzMSIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+NCBvciBtb3JlIGNoYXJhY3RlcnM7IGNhcGl0YWxpemF0aW9uIG1hdHRlcnMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzMiIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+UGFzc3dvcmQgc2V0LiBZb3UgY2FuIGxvZ2luIG5vdy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMzIiBuYW1lPSJycGNjYWxsYmFjayI+CisgICAgPHZhbHVlPk9LPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNCIgbmFtZT0icnBjZ2VuZXJhbGVycm9yIj4KKyAgICA8dmFsdWU+VW5rb3duIEVycm9yLiBQbGVhc2UgcmVwb3J0IHRoaXMgdG8geW91ciBTZXJ2aWNlLVRlYW0uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5Vc2VybmFtZSBub3QgZm91bmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM2IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPkludmFsaWQgUGFzc3dvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM3IiBuYW1lPSJsb2dvdXQiPgorICAgIDx2YWx1ZT5TdWNjZXNzZnVsbHkgTG9nZ2VkIG91dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzgiIG5hbWU9InJlZ2lzdHJhdGlvbiI+CisgICAgPHZhbHVlPkZyb250ZW5kIFJlZ2lzdHJhdGlvbiBkaXNhYmxlZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM5IiBuYW1lPSJyZWdpc3RyYXRpb24iPgorICAgIDx2YWx1ZT5JbnZhbGlkIEVNYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MCIgbmFtZT0icmVnaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+ZHVwbGljYXRlIGZpbGVuYW1lLCBwbGVhc2UgY2hvb3NlIGFub3RoZXIgZmlsZW5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQxIiBuYW1lPSJmaWxlYnJvd3NlciI+CisgICAgPHZhbHVlPmZpbGVuYW1lIHRvbyBzaG9ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDIiIG5hbWU9ImZpbGVicm93c2VyIj4KKyAgICA8dmFsdWU+Q291bGQgbm90IHNhdmUgQWRkcmVzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDMiIG5hbWU9InVzZXJhZG1pbiI+CisgICAgPHZhbHVlPlVzZXIgYWRkZWQgYnV0IHlvdSBuZWVkIHRvIGFzc2lnbiB0aGlzIFVzZXIgdG8gYW4gT3JnYW5pc2F0aW9uLCBvdGhlcndpc2UgaGUgd29uJ3QgYmUgYWJsZSB0byBzaWduLWluLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDQiIG5hbWU9ImFkbWluZm9ybXMiPgorICAgIDx2YWx1ZT5OZXcgUmVjb3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+Tm8gRmllbGQgZm91bmQgd2l0aCB0aGlzIEZpZWxkSWQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+Tm8gTGFiZWwgZm91bmQgZm9yIHRoYXQgRmllbGQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NyIgbmFtZT0iZXJyb3JtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRtaW4gQXV0aG9yaXphdGlvbiByZXF1aXJlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDgiIG5hbWU9Im1haW5uYXZpIj4KKyAgICA8dmFsdWU+TGFuZ3VhZ2UtRWRpdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0OSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TGFuZ3VhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUwIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5MYWJlbC1JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTEiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkxhYmVsLU5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUyIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5WYWx1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTMiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkZpZWxkdmFsdWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1NCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TGFiZWxOYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1NSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TGFiZWxWYWx1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTYiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkxhYmVsLUlEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1NyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+WW91IGRpZCBvbmx5IGRlbGV0ZSB0aGUgTGFiZWwgTk9UIHRoZSBGaWVsZCEgWW91IGNhbm5vdCBkZWxldGUgdGhlIEZpZWxkLCBpdCBtYXkgaGFzIExhYmVscyBpbiBvdGhlciBMYW5ndWFnZXMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1OCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+SW52YWxpZCBMYWJlbGlkLiBUaGUgRmllbGRMYW5ndWFnZXN2YWx1ZXNfSWQgY2Fubm90IGJlIGZvdW5kIGluIHRoZSBkYXRhYmFzZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU5IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IGRlbGV0ZSB0aGlzIEZpZWxkLiBZb3UgY2FuIG9ubHkgZGVsZXRlIExhYmVscyBOT1QgRmllbGRzLiBUaGVyZSBpcyBubyBMYWJlbCBsb2FkZWQgYXQgdGhlIG1vbWVudCwgd2V0aGVyIGl0IGlzIG5vdCBzZWxlY3RlZCBhbnkgRmllbGQgb3IgdGhlcmUgaXMgbm8gTGFiZWwgZm9yIHRoaXMgTGFuZ3VhZ2UgZm9yIHRoYXQgRmllbGQgZGVmaW5lZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYwIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5leHBvcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYxIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0byBsb2dvdXQgdG8gc2VlIGFueSBjaGFuZ2VzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjIiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkFkZCBuZXcgbGFuZ3VhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYzIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5kZWxldGUgbGFuZ3VhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY0IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5BZGQgbmV3IGxhbmd1YWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjYiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPmFkZCBsYW5ndWFnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjciIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkJhY2t1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjgiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPmdvdG8gZmlyc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY5IiBuYW1lPSJ0dXJub3Zlcmxpc3QiPgorICAgIDx2YWx1ZT5nb3RvIHByZXZpb3VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MCIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+Z290byBuZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MSIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+Z290byBsYXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MiIgbmFtZT0idmlkZW9ib3giPgorICAgIDx2YWx1ZT51c2VyIHNwZWFrcyAoQnkgY2xpY2tpbmcgaGVyZSB5b3UgY2FuIGdpdmUgZXhjbHVzaXZlIGF1ZGlvIC8gbXV0ZSB0aGUgbWljcm9waG9uZSBvZiBvdGhlcnMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MyIgbmFtZT0idmlkZW9ib3giPgorICAgIDx2YWx1ZT50dXJuIHNvdW5kIG9uL29mZjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPlN5c3RlbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzUiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPllvdXIgU2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc2IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5oaSw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc3IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5FZGl0IHlvdXIgcHJvZmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzgiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPk5ldyBNZXNzYWdlczo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc5IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5VcGxvYWQgbmV3IEltYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4MCIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5Vc2VyZGF0YSAtIEV4cG9ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODEiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+QWxsIG9yZ2FuaXNhdGlvbnMgbXVzdCBiZSBhbHJlYWR5IGV4aXN0aW5nITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODIiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+c3RhcnQgZXhwb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4MyIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5CeSBvcmdhbmlzYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg0IiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPnN0YXJ0IGV4cG9ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODUiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+VXNlcmRhdGEgLSBJbXBvcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg2IiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPmNob29zZSB1c2Vycy54bWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg3IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5pbXBvcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg4IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5FeHBvcnQgdG8gWE1MIC0gVGhlc2UgZmlsZXMgY2FuIGJlIHVzZWQgdG86Jmx0O2JyLyZndDsgLSBDb250cmlidXRlIHRvIHRoZSBwcm9qZWN0IC0gSW1wb3J0IGludG8gYW5vdGhlciBTeXN0ZW0mbHQ7YnIvJmd0OyAtIEJhY2t1cCAtIEN1c3RvbWl6YXRpb24mbHQ7YnIvJmd0OyAtIFB1dCBpdCBpbnRvIHRoZSBsYW5ndWFnZS1kaXJlY3RvcnkgZm9yIHlvdXIgbmV4dCBpbnN0YWxsYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg5IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5DaG9vc2UgYSBsYW5ndWFnZSBmaWxlIHRvIGltcG9ydC4gJmx0O2JyLyZndDtDaG9vc2UgdGhlIHJpZ2h0IExhbmdhdWdlIGZyb20gdGhlIENvbWJvYm94ISAmbHQ7YnIvJmd0O05vIG1hdHRlciB3aGF0IHRoZSBuYW1lIG9mIHRoZSBmaWxlIGlzLCAmbHQ7YnIvJmd0O2l0IHdpbGwgYmUgaW1wb3J0ZWQgaW50byB0aGlzIGxhbmd1YWdlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTAiIG5hbWU9ImltcG9ydHdpbmRvdyI+CisgICAgPHZhbHVlPmltcG9ydCAtIGNob29zZSBmaWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5MSIgbmFtZT0icmVjb3JkaW5nc2F2ZXdpbiI+CisgICAgPHZhbHVlPlNhdmUgYXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkyIiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+TmFtZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkzIiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+Q29tbWVudDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk0IiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+c2F2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTUiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPlJlY29yZGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk2IiBuYW1lPSJyZWNvcmRlciI+CisgICAgPHZhbHVlPlJlY29yZGluZ3MgVmlld2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NyIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+UmVjb3JkaW5ncyBvZiBwdWJsaWMgYW5kIHByaXZhdGUgUm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk4IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT7Xntep16rXntep15nXnSA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5OSIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+Sm9pbmVkOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDAiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDEiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPlVzZXJzIGluIHRoaXMgUm9vbTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAyIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5yZWZyZXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMyIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+VGhpcyBSb29tIGlzIEZ1bGwuIFRyeSBhZ2FpbiBpbiBhIGZldyBtaW51dGVzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDQiIG5hbWU9InJvb21zTGlzdCI+CisgICAgPHZhbHVlPmNsaWNrIG9uIGEgcm9vbSB0byBnZXQgZGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDUiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPkNoYXQgd2l0aCB0aGUgdXNlcnMgaW4gdGhpcyBSb29tOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDYiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPlJvb206PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNyIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+VXNlcnMgaW4gdGhpcyByb29tOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDgiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPnNpbmNlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDkiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPnBsYXkgcmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMCIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+TGVuZ3RoOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTEiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkRhdGU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMiIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+UmVjb3JkZXIgTW9kZSEgWW91IGNhbm5vdCBjaGFuZ2UgYW55IHZhbHVlcywgdGhpcyBpcyBhIHJlY29yZGVkIEZpbGUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMyIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+UGxheSB0aGlzIHJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTQiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPlBsYXkgLyBQYXVzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTUiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPlJlY29yZCB0aGlzIE1lZXRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE2IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5zdG9wIHJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTciIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPlJlY29yZGluZzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE4IiBuYW1lPSJyZWNvcmRfZXJyb3JfbXNnIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgYWxyZWFkeSBzb21lYm9keSByZWNvcmRpbmcgaW4gdGhpcyBtZWV0aW5nITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTkiIG5hbWU9InJlY29yZF9tZXNzYWdlIj4KKyAgICA8dmFsdWU+UmVjb3JkaW5nISBCeSBVc2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjAiIG5hbWU9InJlY29yZF9jYW5jZWwiPgorICAgIDx2YWx1ZT5jYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIxIiBuYW1lPSJyZWNvcmRfY2FuY2FsX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5SZWNvcmRpbmcgd2lsbCBiZSBjYW5jZWxlZCBhbmQgbm90IHNhdmVkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjIiIG5hbWU9ImNhbmNlbF9kaWFsb2dfcmVzdW1lIj4KKyAgICA8dmFsdWU+cmVzdW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyMyIgbmFtZT0iY2FuY2VsX2RpYWxvZ19yZXN1bWVfdG9vbHRpcCI+CisgICAgPHZhbHVlPkNsb3NlIHRoaXMgd2luZG93IGFuZCByZXN1bWUgcmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyNCIgbmFtZT0icGFpbnR0b29sc19lbGxpcHNlX2NvbG9yIj4KKyAgICA8dmFsdWU+Y2hhbmdlIExpbmVjb2xvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjUiIG5hbWU9ImNvbG9ycGlja2VyX2hlYWQiPgorICAgIDx2YWx1ZT5DaG9vc2UgQ29sb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI2IiBuYW1lPSJwYWludHRvb2xzX2xpbmVfZGlzYWJsZSI+CisgICAgPHZhbHVlPkRpc2FibGUgLyBFbmFibGUgTGluZWNvbG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyNyIgbmFtZT0icGFpbnR0b29sc19maWxsX2Rpc2FibGUiPgorICAgIDx2YWx1ZT5jaGFuZ2UgRmlsbGNvbG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyOCIgbmFtZT0icGFpbnR0b29sc19saW5lX2Rpc2FibGUiPgorICAgIDx2YWx1ZT5EaXNhYmxlIC8gRW5hYmxlIEZpbGxjb2xvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjkiIG5hbWU9ImNoYW5nZV93aWR0aF9hcnJvd19kb3duX3NsaWRlciI+CisgICAgPHZhbHVlPkNoYW5nZSBMaW5ld2lkdGg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMwIiBuYW1lPSJjbG9zZV9zbWFsbF9wb3B1cHMiPgorICAgIDx2YWx1ZT5DbG9zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzEiIG5hbWU9InBhaW50X3Rvb2xfbGV0dGVyIj4KKyAgICA8dmFsdWU+Y2hhbmdlIEZvbnRzaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzMiIgbmFtZT0icmVjb3JkaW5nc2xpc3RfZGVsZXRlIj4KKyAgICA8dmFsdWU+RGVsZXRlIFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzMiIG5hbWU9InJlY29yZGluZ3NsaXN0X3JlY29yZGVkQnlHdWVzdCI+CisgICAgPHZhbHVlPkd1ZXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNCIgbmFtZT0icmVjb3JkaW5nc2xpc3RfcmVjb3JkZWRieSI+CisgICAgPHZhbHVlPkJ5OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzUiIG5hbWU9InJlY29yZGluZ3NfdGFibGVfaGVhZF9uYW1lIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzYiIG5hbWU9InJlY29yZGluZ3NfdGFibGVfaGVhZF9yb29tIj4KKyAgICA8dmFsdWU+Um9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzciIG5hbWU9InJlY29yZGluZ3NfdGFibGVfaGVhZF9kYXRlIj4KKyAgICA8dmFsdWU+RGF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzgiIG5hbWU9InJlY29yZF9zdGFydF9jYW5jZWwiPgorICAgIDx2YWx1ZT5jYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM5IiBuYW1lPSJyZWNvcmRfc3RhcnRfc3RhcnQiPgorICAgIDx2YWx1ZT5zdGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDAiIG5hbWU9ImZpbGVzYnJvd3Nlcl90YWJsZV9oZWFkX25hbWUiPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MSIgbmFtZT0iZmlsZXNicm93c2VyX3RhYmxlX2hlYWRfZGF0ZSI+CisgICAgPHZhbHVlPkRhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQyIiBuYW1lPSJjaGF0X2NsZWFyX2hpc3RvcnkiPgorICAgIDx2YWx1ZT5EZWxldGUgU2VydmVyLUNoYXRsb2c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQzIiBuYW1lPSJjaGF0X292ZXJhbGxfaGVhZGVyIj4KKyAgICA8dmFsdWU+Q2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDQiIG5hbWU9ImNoYXRfc2VuZF9idG4iPgorICAgIDx2YWx1ZT5zZW5kIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ1IiBuYW1lPSJjaGF0X2Vtb3RfYnRuIj4KKyAgICA8dmFsdWU+RW1vdGljb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NiIgbmFtZT0iY2hhdF9lbW90X3dpbiI+CisgICAgPHZhbHVlPkVtb3RpY29uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDciIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5ncyI+CisgICAgPHZhbHVlPkNob29zZSBQdWJsaXNoZWQgRGV2aWNlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDgiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPkF1ZGlvIGFuZCBWaWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDkiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPkF1ZGlvIG9ubHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUwIiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT5WaWRlbyBvbmx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1MSIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2NvbWJvIj4KKyAgICA8dmFsdWU+bm8gQXVkaW8vVmlkZW8gKHN0YXRpYyBJbWFnZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUyIiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfaW5mb190ZXh0Ij4KKyAgICA8dmFsdWU+Tm8gQXVkaW8vVmlkZW8gZnJvbSB5b3VyIFBDIHdpbGwgYmUgcHVibGlzaGVkLCBpbnN0ZWFkIG9mIHRoYXQgYSBwaWN0dXJlIGZyb20geW91ciBwcm9maWxlIHdpbGwgYmUgc2hvd24uIENob29zZSB0aGVzZSBzZXR0aW5ncyBpZiB5b3UgaGF2ZSBwcm9ibGVtcyB3aXRoIHlvdXIgYmFuZHdpZHRoIG9yIGEgdmVyeSBzbG93IEludGVybmV0IGNvbm5lY3Rpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1MyIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9tb25kYXkiPgorICAgIDx2YWx1ZT5NTzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTQiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfdHVlc2RheSI+CisgICAgPHZhbHVlPlRVPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV93ZWRuZXNkYXkiPgorICAgIDx2YWx1ZT5XRTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTYiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfdGh1cnNkYXkiPgorICAgIDx2YWx1ZT5USDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTciIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfZnJpZGF5Ij4KKyAgICA8dmFsdWU+RlI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU4IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3NhdHVyZGF5Ij4KKyAgICA8dmFsdWU+U0E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU5IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3N1bmRheSI+CisgICAgPHZhbHVlPlNVPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9tb25kYXkiPgorICAgIDx2YWx1ZT5Nb25kYXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYxIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1R1ZXNkYXlMYWJlbCI+CisgICAgPHZhbHVlPlR1ZXNkYXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYyIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1dlZG5lc2RheUxhYmVsIj4KKyAgICA8dmFsdWU+V2VkbmVzZGF5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MyIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9UaHVyc2RheUxhYmVsIj4KKyAgICA8dmFsdWU+VGh1cnNkYXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY0IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX0ZyaWRheUxhYmVsIj4KKyAgICA8dmFsdWU+RnJpZGF5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9TYXR1cmRheUxhYmVsIj4KKyAgICA8dmFsdWU+U2F0dXJkYXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY2IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1N1bmRheUxhYmVsIj4KKyAgICA8dmFsdWU+U3VuZGF5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NyIgbmFtZT0iY2FsZW5kYXJfd2Vla251bWJlcl9oZWFkZXIiPgorICAgIDx2YWx1ZT5DVzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjgiIG5hbWU9ImNhbGVuZGFyX3dlZWtudW1iZXJfaGVhZGVyVG9vbHRpcCI+CisgICAgPHZhbHVlPkNhbGVuZGFyIHdlZWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY5IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+SmFudWFyeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzAiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5GZWJydWFyeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzEiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5NYXJjaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzIiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5BcHJpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzMiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5NYXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc0IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+SnVuZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzUiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5KdWx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3NiIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPkF1Z3VzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzciIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5TZXB0ZW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc4IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+T2N0b2JlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzkiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5Ob3ZlbWJlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODAiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5EZWNlbWJlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODEiIG5hbWU9ImNhbGVuZGFyd2luX2hlYWRlciI+CisgICAgPHZhbHVlPkNhbGVuZGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4MiIgbmFtZT0icm9vbWFkbWluX2xhYmVsTnVtYmVyT2ZQYXJ0aWNpcGFudHMiPgorICAgIDx2YWx1ZT5QYXJ0aWNpcGFudHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgzIiBuYW1lPSJyb29tVmFsdWVfYWR2YW5jZWRTZXR0aW5ncyI+CisgICAgPHZhbHVlPlNob3cgTGF5b3V0IFNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NCIgbmFtZT0icm9vbUFkbWluX2xheW91dF92aWRlb1giPgorICAgIDx2YWx1ZT5YIHwgWTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODUiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfdmlkZW9ZIj4KKyAgICA8dmFsdWU+V2lkdGggfCBIZWlnaHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg2IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0Ij4KKyAgICA8dmFsdWU+VmlkZW8tQ29udGFpbmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NyIgbmFtZT0icm9vbUFkbWluX2xheW91dF9tb2QiPgorICAgIDx2YWx1ZT5Nb2RlcmF0aW9uLUNvbnRhaW5lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODgiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfbW9kX3BvcyI+CisgICAgPHZhbHVlPlg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg5IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5XaGl0ZWJvYXJkLUNvbnRhaW5lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTAiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZF9zaG93Ij4KKyAgICA8dmFsdWU+RW5hYmxlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTEiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZF9wb3MiPgorICAgIDx2YWx1ZT5YIHwgWTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTIiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPldpZHRoIHwgSGVpZ2h0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5MyIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlcyI+CisgICAgPHZhbHVlPkZpbGVzLENoYXQsUGFydGljaXBhbnRzIC0gQ29udGFpbmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NCIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlc19zaG93Ij4KKyAgICA8dmFsdWU+RW5hYmxlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTUiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXNfcG9zIj4KKyAgICA8dmFsdWU+WCB8WTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTYiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXMiPgorICAgIDx2YWx1ZT5XaWR0aCB8IEhlaWdodDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTciIG5hbWU9Im1vZGVyYXRvcl9nb25lX21lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgTW9kZXJhdG9yIGhhcyBsZWZ0IHRoZSBSb29tLiBObyBvbmUgaXMgcHJlc2VudGluZyBhdCB0aGUgTW9tZW50LiBZb3UgY291bGQgYXBwbHkgZm9yIE1vZGVyYXRpb24gb3Igd2FpdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk4IiBuYW1lPSJtb2RlcmF0b3JfbWVzc2FnZV9ldmVudF9ub19tb2QiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBNb2RlcmF0b3IgaW4gdGhpcyBSb29tLCBidXQgdGhlcmUgYXJlIHNvbWUgUGFydGljaXBhbnRzLiBZb3UgaGF2ZSB0byBhcHBseSBmb3IgTW9kZXJhdGlvbiBvciB3YWl0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTkiIG5hbWU9ImZlZWRiYWNrX3RlbXBsYXRlX3N1YmplY3QiPgorICAgIDx2YWx1ZT5GZWVkYmFjayAkQVBQX05BTUU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAwIiBuYW1lPSJpbnZpdGF0aW9uX3RlbXBsYXRlX2hlYWQiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgLSBJbnZpdGF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwMSIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X2Zyb20iPgorICAgIDx2YWx1ZT5NZXNzYWdlIGZyb20gVXNlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAyIiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfbWVzc2FnZSI+CisgICAgPHZhbHVlPk1lc3NhZ2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwMyIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X2NsaWNrX3RleHQiPgorICAgIDx2YWx1ZT5DbGljayB0aGlzIGxpbmsgdG8gcGFydGljaXBhdGUgaW4gdGhlIE1lZXRpbmdzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDQiIG5hbWU9Imludml0YXRpb25fdGV4dF9jbGlja190ZXh0X2xpbmsiPgorICAgIDx2YWx1ZT5DbGljayBoZXJlIHRvIGVudGVyIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA1IiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfY2xpY2tfdGV4dF9oZWxwIj4KKyAgICA8dmFsdWU+aWYgeW91IGhhdmUgcHJvYmxlbXMgd2l0aCB0aGUgbGluaywgcGxlYXNlIGNvcHkgYW5kIHBhc3RlIHRoaXMgdG8geW91ciBicm93c2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDYiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9oZWFkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIFNpZ25VcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDciIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9oZWFkMiI+CisgICAgPHZhbHVlPllvdXIgdXNlcmRhdGE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwOCIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X3VzZXJuYW1lIj4KKyAgICA8dmFsdWU+TG9naW46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwOSIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X3Bhc3MiPgorICAgIDx2YWx1ZT5QYXNzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTAiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9tYWlsIj4KKyAgICA8dmFsdWU+RU1haWw6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxMSIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X2J5ZSI+CisgICAgPHZhbHVlPiRBUFBfTkFNRS1UZWFtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxMiIgbmFtZT0icmVnaXN0ZXJfbWFpbF9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIFNpZ24tVXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTEzIiBuYW1lPSJyZXNldF9wYXNzd29yZF90ZW1wbGF0ZV9oZWFkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIC0gUmVzZXQgUGFzc3dvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE0IiBuYW1lPSJyZXNldF9wYXNzd29yZF90ZW1wbGF0ZV90ZXN0X2xpbmsiPgorICAgIDx2YWx1ZT5DbGljayBvbiB0aGlzIGxpbmsgdG8gZW50ZXIgYSBuZXcgcGFzc3dvcmQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNSIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfdGV4dDJfbGluayI+CisgICAgPHZhbHVlPkNsaWNrIGhlcmUgdG8gZW50ZXIgYSBuZXcgUGFzc3dvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE2IiBuYW1lPSJyZXNldF9wYXNzd29yZF90ZW1wbGF0ZV90ZXh0M19saW5rIj4KKyAgICA8dmFsdWU+aWYgeW91IGhhdmUgcHJvYmxlbXMgd2l0aCB0aGUgbGluaywgcGxlYXNlIGNvcHkgYW5kIHBhc3RlIHRoaXMgdG8geW91ciBicm93c2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTciIG5hbWU9InJlc2V0X3Bhc3N3b3JkX21haWxfc3ViamVjdCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSBQYXNzd29yZCBSZXNldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTgiIG5hbWU9ImRhdGVSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIHZhbGlkIERhdGUsIGZvciBleGFtcGxlIDI0LjEyLjIwMDEgKGRkLm1tLnl5eXkpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxOSIgbmFtZT0iZW1haWxSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIHZhbGlkIEVNYWlsLCBmb3IgZXhhbXBsZSBuYW1lQG1haWwuY29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyMCIgbmFtZT0iZmxvYXRSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIEZsb2F0LU51bWJlciwgZm9yIGV4YW1wbGUgMS4wMDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjEiIG5hbWU9Im51bWJlclJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGEgTnVtYmVyIChJbnRlZ2VyKSwgZm9yIGV4YW1wbGUgMTAwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyMiIgbmFtZT0icGhvbmVSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIHZhbGlkIFBob25lIG51bWJlciwgZm9yIGV4YW1wbGUgKys0OSAwMTIzIDEyMzEyMzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjMiIG5hbWU9InRpbWVSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIHZhbGlkIHRpbWUsIGZvciBleGFtcGxlIDEyOjIzIChoaDptbSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI0IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvdyI+CisgICAgPHZhbHVlPlBhc3N3b3JkIHByb3RlY3RlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjUiIG5hbWU9Imludml0YXRpb25fd2luZG93X3Bhc3N3b3JkTGFiZWwiPgorICAgIDx2YWx1ZT5QYXNzd29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjYiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkTGFiZWwiPgorICAgIDx2YWx1ZT5WYWxpZGl0eSBwZXJpb2Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI3IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZCI+CisgICAgPHZhbHVlPkVuZGxlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI4IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZCI+CisgICAgPHZhbHVlPlBlcmlvZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjkiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkIj4KKyAgICA8dmFsdWU+T25lLVRpbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMwIiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZEZyb21MYWJlbCI+CisgICAgPHZhbHVlPlZhbGlkIEZyb206PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMSIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWRUb0xhYmVsIj4KKyAgICA8dmFsdWU+VmFsaWQgdG86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMiIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfTWFpbFN1YmplY3QiPgorICAgIDx2YWx1ZT5JbnZpdGF0aW9uIFRvICRBUFBfTkFNRTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzMiIG5hbWU9Imludml0YXRpb25fZXJyb3IiPgorICAgIDx2YWx1ZT5Ob3QgSW52aXRhdGlvbiBhdmFpbGlibGUgZm9yIHRoaXMgSW52aXRhdGlvbi1Db2RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzNCIgbmFtZT0iaW52aXRhdGlvbl9lcnJvciI+CisgICAgPHZhbHVlPlRoZSBJbnZpdGF0aW9uIHdhcyBhbHJlYWR5IHVzZWQuIFRoaXMgdHlwZSBvZiBJbnZpdGF0aW9uIGNhbm5vdCBiZSByZS11c2VkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzUiIG5hbWU9Imludml0YXRpb25fZXJyb3IiPgorICAgIDx2YWx1ZT5UaGlzIEludml0YXRpb24tQ29kZSBpcyBub3QgdmFsaWQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzNiIgbmFtZT0iaW52aXRhdGlvbl9wYXNzIj4KKyAgICA8dmFsdWU+UGFzc3dvcmQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzNyIgbmFtZT0iaW52aXRhdGlvbl9wYXNzX2J0biI+CisgICAgPHZhbHVlPkNoZWNrIFBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzOCIgbmFtZT0iaW52aXRhdGlvbl9wYXNzX2Vycm9yIj4KKyAgICA8dmFsdWU+SW52YWxpZCBQYXNzd29yZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM5IiBuYW1lPSJCcm93c2VyIj4KKyAgICA8dmFsdWU+QXVkaW9fVmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQwIiBuYW1lPSJhdWRpb192aWRlbyI+CisgICAgPHZhbHVlPlN5bmNyb25pemUgQXVkaW8vVmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQxIiBuYW1lPSJlcnJvckNvZGVfaW52YWxpZFNlc3Npb24iPgorICAgIDx2YWx1ZT5Mb2dpbiB3YXMgY29ycmVjdCwgYnV0IHRoZSBTZXNzaW9uIHlvdSB0cmllZCBpcyBub3QgYWN0aXZlIG9yIHN0b3JlZCBvbiB0aGUgU2VydmVyLiBZb3UgaGF2ZSB0byBnZXQgYSBuZXcgU2Vzc2lvbklkIGFuZCByZXRyeSBsb2dpbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQyIiBuYW1lPSJlcnJvcmNvZGVfc2V0VXNlck9iamVjdCI+CisgICAgPHZhbHVlPlRoZSBTZXNzaW9uSWQgaXMgbm90IGxvZ2dlZGluIG9yIGhhcyBubyBBZG1pbiByaWdodHMuIFRoZSBTT0FQIEdhdGV3YXkgbmVlZHMgYW4gVXNlciB3aXRoIEFkbWluLVJpZ2h0cyB0byBlbWJlZCBuZXcgVXNlcnMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0MyIgbmFtZT0iZXJyb3Jjb2RlX2xvZ2luQnlSZW1vdGVVc2VyIj4KKyAgICA8dmFsdWU+VGhpcyBTZXNzaW9uIGhhcyBubyBSZW1vdGV1c2VyLURhdGEgY29ubmVjdGVkLiBXZXRoZXIgeW91IGRpZCBub3QgY2FsbCB0aGUgU09BUC1HYXRld2F5IGJlZm9yZSBhY2Nlc3NpbmcgdGhlIEFwcGxpY2F0aW9uIG9yIHlvdSBhcmUgdXNuaWcgYSB3cm9uZyBTZXNzaW9uLUlEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0NCIgbmFtZT0iZGVidWdfbWVzc2FnZV9yZWNvcmRpbmciPgorICAgIDx2YWx1ZT5UaGUgcmVjb3JkZXIgaXMgY3VycmVudGx5IEJldGEhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0NSIgbmFtZT0icHJvcGVydHlQYW5lbFhWYWx1ZSI+CisgICAgPHZhbHVlPng8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ2IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWFZhbHVlTGFiZWwiPgorICAgIDx2YWx1ZT54LWF4aXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ3IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWVZhbHVlIj4KKyAgICA8dmFsdWU+eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDgiIG5hbWU9InByb3BlcnR5UGFuZWxZVmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPnktYXhpczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDkiIG5hbWU9InByb3BlcnR5UGFuZWxXaWR0aFZhbHVlIj4KKyAgICA8dmFsdWU+dzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTAiIG5hbWU9InByb3BlcnR5UGFuZWxXaWR0aFZhbHVlTGFiZWwiPgorICAgIDx2YWx1ZT53aWR0aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTEiIG5hbWU9InByb3BlcnR5UGFuZWxIZWlnaHRWYWx1ZSI+CisgICAgPHZhbHVlPmg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUyIiBuYW1lPSJwcm9wZXJ0eVBhbmVsSGVpZ2h0VmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPmhlaWdodDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTMiIG5hbWU9InByb3BlcnR5T3BhY2l0eVNsaWRlciI+CisgICAgPHZhbHVlPkNoYW5nZSBUcmFuc3BhcmVuY3k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU0IiBuYW1lPSJicm93c2VyT3BlbiI+CisgICAgPHZhbHVlPkJyb3dzZXIgT3BlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTUiIG5hbWU9ImJyb3dzZXJDbG9zZSI+CisgICAgPHZhbHVlPkJyb3dzZXIgQ2xvc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU2IiBuYW1lPSJjb25uZWN0aW9uTG9zdE1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgQ29ubmVjdGlvbiB0byB0aGUgU2VydmVyIGlzIGxvc3QuIFlvdSBuZWVkIHRvIHJlbG9hZCB0aGUgQXBwbGljYXRpb24gb3IvYW5kIGNoZWNrIHlvdXIgTmV0d29yay48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU3IiBuYW1lPSI1NTciPgorICAgIDx2YWx1ZT5Qb2ludGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1OCIgbmFtZT0ic3luYyBtZXNzYWdlIGhlYWRlciI+CisgICAgPHZhbHVlPlN5bmNocm9uaXppbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU5IiBuYW1lPSJTeW5jaHJvbml6aW5nIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TeW5jaHJvbml6aW5nLCBwbGVhc2Ugd2FpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjAiIG5hbWU9ImV4cG9ydFRvU1ZHIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7RG93bmxvYWQgYXMgU1ZHJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjEiIG5hbWU9ImV4cG9ydFRvSW1hZ2UiPgorICAgIDx2YWx1ZT4mbHQ7dSZndDtEb3dubG9hZCBhcyBQTkcmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MiIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O0Rvd25sb2FkIGFzIEpQRyZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYzIiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7RG93bmxvYWQgYXMgUERGJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjQiIG5hbWU9ImV4cG9ydFRvSW1hZ2UiPgorICAgIDx2YWx1ZT4mbHQ7dSZndDtEb3dubG9hZCBhcyBUSUYmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2NSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPlJlbWluZGVyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjYiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5DYXRlZ29yeTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY3IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+UmVwZXRpdGlvbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY4IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+bm9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjkiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5Mb2NhdGlvbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTcwIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+U3RhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTcxIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+RW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MiIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPlRpdGxlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzMiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5Db21tZW50OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzQiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5JbnZpdGUgUGVvcGxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkRhaWx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NiIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPk1vbnRobHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc3IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+WWVhcmx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3OCIgbmFtZT0iYWxlcnQiPgorICAgIDx2YWx1ZT5BcHBvaW50bWVudC1lbmQgaXMgYWZ0ZXIgb2YgYXBwb2ludG1lbnQtc3RhcnQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3OSIgbmFtZT0iYWxlcnQiPgorICAgIDx2YWx1ZT5QbGVhc2UgaW5zZXJ0IGEgdGl0bGUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MCIgbmFtZT0iNTgwIj4KKyAgICA8dmFsdWU+UlRMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MSIgbmFtZT0iNTgxIj4KKyAgICA8dmFsdWU+QWN0aXZhdGUgdGhpcyBpZiB5b3Ugd3JpdGUgaW4gYSByaWdodCB0byBsZWZ0IGxhbmd1YWdlIChpbnZlcnNlIHdvcmQgb3JkZXIpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MiIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT5EYXNoYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgzIiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPldhdGNoIHJlY29yZGVkIE1lZXRpbmdzIG9yIEV2ZW50czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODQiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+TWVldGluZyAtIE1ha2UgYSBjb25mZXJlbmNlIHdpdGggNCAodXAgdG8gMTYpIFVzZXJzJmx0O2JyLyZndDtldmVyeWJvZHkgd2lsbCBoYXZlIGF1ZGlvICsgdmlkZW8gYWNjZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4NSIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT5FdmVudCAtIE1ha2UgYSBjb25mZXJlbmNlIHdpdGggdXAgdG8gMjAwIHBhcnRpY2lwZW50cyZsdDtici8mZ3Q7T25seSB0aGUgTW9kZXJhdG9yIHdpbGwgaGF2ZSBhdWRpby92aWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODYiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+Q3JlYXRlIHVzZXJzLCByb29tcywgb3JnYW5pemF0aW9ucyZsdDtici8mZ3Q7ICsgY2hhbmdlIGNvbmZpZ3VyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg3IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5Vc2VycyBpbiB0aGlzIFJvb20gbm93PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4OCIgbmFtZT0icm9vbSBBZG1pbmlzdHJhdGlvbiByb29tY2xpZW50cyBsaXN0Ij4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg5IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTAiIG5hbWU9InJvb20gQWRtaW5pc3RyYXRpb24gcm9vbWNsaWVudHMgbGlzdCI+CisgICAgPHZhbHVlPkQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkxIiBuYW1lPSJzd2Ygc3luYyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TG9hZGluZyBEb2N1bWVudC4gUGxlYXNlIHdhaXQgdW50aWxsIGFsbCBDbGllbnQgaGF2ZSBiZWVuIHN5bmNocm9uaXplZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkyIiBuYW1lPSJ1cGxvYWQgZGlhbG9nIj4KKyAgICA8dmFsdWU+VXBsb2FkIGNvbXBsZXRlLCBjb252ZXJ0aW5nIERvY3VtZW50IC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTMiIG5hbWU9InVwbG9hZCBkaWFsb2ciPgorICAgIDx2YWx1ZT5TdGFydCBVcGxvYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk0IiBuYW1lPSJ1cGxvYWQgZGlhbG9nIj4KKyAgICA8dmFsdWU+VXBsb2FkIGFuZCBJbXBvcnQgRGlhbG9nLiBQbGVhc2Ugc2VsZWN0IGEgRmlsZSBmcm9tIHlvdXIgRGlzay48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk1IiBuYW1lPSJ1cGxvYWQgRGlhbG9nIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NiIgbmFtZT0idXBsb2FkIERpYWxvZyI+CisgICAgPHZhbHVlPlNlbGVjdCBGaWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NyIgbmFtZT0iYWRtaW5pc3RyYXRpb24gbmF2aWdhdGlvbiI+CisgICAgPHZhbHVlPkNvbm5lY3Rpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5OCIgbmFtZT0iY29uZmFkbWluIHZhbHVlIGxpc3QiPgorICAgIDx2YWx1ZT5WYWx1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTkiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5TdHJlYW1pZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDAiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDEiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5Db25uZWN0ZWQgc2luY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAyIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+Um9vbSAvIFNjb3BlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwMyIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPktpY2sgVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDQiIG5hbWU9ImtpY2sgdXNlciBjb25maXJtYXRpb24gZGlhbG9nIj4KKyAgICA8dmFsdWU+S2ljayBVc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwNSIgbmFtZT0ia2ljayB1c2VyIGNvbmZpcm1hdGlvbiBkaWFsb2ciPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8ga2ljayB0aGlzIENsaWVudCBmcm9tIHRoZSBDb25uZWN0aW9uPyZsdDtici8mZ3Q7IFRoaXMgZG9lcyBvbmx5IHJlbW92ZSB0aGUgQ2xpZW50IGZyb20gdGhlIGN1cnJlbnQgUm9vbS5UaGUgQ2xpZW50IGNvdWxkIHJlLWxvZ2luIGFnYWluLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDYiIG5hbWU9ImtpY2sgdXNlciBtZXNzYWdlIGRpYWxvZyI+CisgICAgPHZhbHVlPllvdXIgc2Vzc2lvbiBoYXMgYmVlbiBjbG9zZWQgYnkgYW4gQWRtaW5pc3RyYXRvciBvciBNb2RlcmF0b3IuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwNyIgbmFtZT0idXNlcmFsdGVyc2VsZl9waG9uZSI+CisgICAgPHZhbHVlPlBob25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwOCIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+VXNlciBpcyB0aGUgTW9kZXJhdG9yIG9mIHRoaXMgUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDkiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPlVzZXIgaXMgYWxsb3dlZCB0byBkcmF3IG9uIHRoZSBXaGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMCIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+KFJlKSBTdGFydCBBdWRpby9WaWRlbyBvciBjaGFuZ2UgRGV2aWNlIFNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMSIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+QWxsb3cgdGhpcyBVc2VyIHRvIGRyYXcgb24gdGhlIFdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEyIiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5SZW1vdmUgYWJpbGl0eSB0byBkcmF3IG9uIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEzIiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+157Xqdeq157XqdeZ1508L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE0IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+16fXkdem15nXnTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTUiIG5hbWU9ImNvbmZlcmVuY2VQYW5lbHMiPgorICAgIDx2YWx1ZT5XaGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxNiIgbmFtZT0iY29uZmVyZW5jZVBhbmVscyI+CisgICAgPHZhbHVlPkNoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE3IiBuYW1lPSJvcmdhbml6YXRpb24gY2hvb3NlIGluZm8iPgorICAgIDx2YWx1ZT5Zb3VyIGFjY291bnQgaXMgYXNzaWduZWQgdG8gbXVsdGlwbGUgT3JnYW5pemF0aW9ucy4gUGxlYXNlIGNob29zZSBvbmUgZm9yIHRoaXMgU2Vzc2lvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE4IiBuYW1lPSJlcnJvciBtZXNzYWdlIHJvb20gZnVsbCI+CisgICAgPHZhbHVlPlRoaXMgcm9vbSBpcyBmdWxsIGF0IHRoZSBtb21lbnQuIFBsZWFzZSB0cnkgYWdhaW4gbGF0ZXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxOSIgbmFtZT0icm9vbXR5cGVzIj4KKyAgICA8dmFsdWU+Um9vbSBUeXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyMCIgbmFtZT0iYXBwb2ludGVkX3Jvb20iPgorICAgIDx2YWx1ZT5BcHBvaW50bWVudCBSb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyMSIgbmFtZT0ic2VydmVydGltZSI+CisgICAgPHZhbHVlPlNlcnZlciBUaW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyMiIgbmFtZT0iaW52X3JlbWluZGVyX3RlbXBsYXRlX2hlYWQiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgLSBSZW1pbmRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjMiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2Zyb20iPgorICAgIDx2YWx1ZT5NZXNzYWdlIGZyb20gVXNlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI0IiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9tZXNzYWdlIj4KKyAgICA8dmFsdWU+TWVzc2FnZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI1IiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9jbGlja190ZXh0Ij4KKyAgICA8dmFsdWU+Q2xpY2sgdGhpcyBsaW5rIHRvIHBhcnRpY2lwYXRlIGluIHRoZSBNZWV0aW5nczo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI2IiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9jbGlja190ZXh0X2xpbmsiPgorICAgIDx2YWx1ZT5DbGljayBoZXJlIHRvIGVudGVyIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI3IiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9jbGlja190ZXh0X2hlbHAiPgorICAgIDx2YWx1ZT5pZiB5b3UgaGF2ZSBwcm9ibGVtcyB3aXRoIHRoZSBsaW5rLCBwbGVhc2UgY29weSBhbmQgcGFzdGUgdGhpcyB0byB5b3VyIGJyb3dzZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyOCIgbmFtZT0iYnRuX3NlYXJjaF9pbnRlcm4iPgorICAgIDx2YWx1ZT5zZWFyY2ggaW50ZXJuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyOSIgbmFtZT0iYnRuX3NlYXJjaF9leHRlcm4iPgorICAgIDx2YWx1ZT5BZGQgZXh0ZXJuYWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMwIiBuYW1lPSJsYmxfcHJlbmFtZSI+CisgICAgPHZhbHVlPkZpcnN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzEiIG5hbWU9ImxibF9uYW1lIj4KKyAgICA8dmFsdWU+TGFzdG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMyIiBuYW1lPSJsYmxfZW1haWwiPgorICAgIDx2YWx1ZT5FLU1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMzIiBuYW1lPSJsb2dvdXRDb25maXJtX3RpdGxlIj4KKyAgICA8dmFsdWU+Q29uZmlybSBsb2dvdXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM0IiBuYW1lPSJsb2dvdXRDb25maXJtX3N1cmVfdG9fbG9nb3V0X3F1ZXN0aW9uIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGxvZ291dCBub3c/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNSIgbmFtZT0ibWFpbiBtZW51Ij4KKyAgICA8dmFsdWU+QWN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzYiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EZW1vIFJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RGVtbyBUaW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzOCIgbmFtZT0ibWVldGluZyBUaW1lciI+CisgICAgPHZhbHVlPk1lZXRpbmcgVGltZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM5IiBuYW1lPSJtZWV0aW5nIFRpbWVyIj4KKyAgICA8dmFsdWU+VGhpcyBSb29tIGlzIGEgRGVtbyBSb29tLiBUbyBkaXNhYmxlIHRoaXMgd2FybmluZyB5b3UgZWl0aGVyIHNob3VsZCBnZXQgYSBwcml2YXRlIG1lZXRpbmcgcm9vbSBmb3IgeW91ciBwZXJzb25hbCB1c2FnZSBvciBzZXQgdXAgYW4gb3duIFNlcnZlci4gWW91IHdpbGwgYmUgYXV0b21hdGljYWxseSBsb2dnZWQgb2ZmIGluOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDAiIG5hbWU9Im1lZXRpbmcgcm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPk1vZGVyYXRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDEiIG5hbWU9Im1vZGVyYXRlZCByb29tIHdhaXRpbmcgbWVzc2FnZSI+CisgICAgPHZhbHVlPlBsZWFzZSB3YWl0IHVudGlsbCB0aGUgTW9kZXJhdG9yIGhhcyBlbnRlcmVkIHRoZSBSb29tLiBUaGUgTW9kZXJhdG9yIGNhbiBiZSBlaXRoZXIgYSBUZWFjaGVyLCBBZG1pbiBvciB0aGUgY3JlYXRvciBvZiB0aGlzIFJvb20uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MiIgbmFtZT0iZXJyb3IgcG9wdXAiPgorICAgIDx2YWx1ZT5PazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDMiIG5hbWU9IndpbmRvdyBzY3JlZW5zaGFyaW5nIj4KKyAgICA8dmFsdWU+SW5jb21pbmcgU2NyZWVuIFNoYXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ0IiBuYW1lPSJ3aW5kb3cgc2NyZWVuIHNoYXJpbmciPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBhIG5ldyBTY3JlZW4gU2hhcmluZyBpbmNvbWluZyBmcm9tIHRoZSBVc2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDUiIG5hbWU9IndpbmRvdyBzY3JlZW4gc2hhcmluZyI+CisgICAgPHZhbHVlPlN0YXJ0IFNoYXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ2IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkFkZCBuZXcgTWVldGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDciIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+TWVldGluZyBSb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0OCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5FdmVudCBSb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0OSIgbmFtZT0ibWFpbiBtZW51IG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Nb2RlcmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1MCIgbmFtZT0ibWVudSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+TW9kZXJhdGUgVXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUxIiBuYW1lPSJtZW51IG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Nb2RlcmF0ZSBSb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTIiIG5hbWU9Im1vZGVyYXRvciBvcmciPgorICAgIDx2YWx1ZT5NPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1MyIgbmFtZT0iY29uZmlybSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+RG8geW91IHdhbnQgdG8gY2hhbmdlIHRoaXMgVXNlciB0byBiZWNvbWUgYSBNb2RlcmF0b3Igb2YgdGhhdCBPcmdhbml6YXRpb24/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1NCIgbmFtZT0iZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPlBsZWFzZSBjaG9vc2UgYW4gT3JnYW5pemF0aW9uIGJlZm9yZSB5b3UgdHJ5IHRvIGFkZCBhIFVzZXIgdG8gaXQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1NSIgbmFtZT0iY2hvb3NlIHVzZXIgd2luZG93Ij4KKyAgICA8dmFsdWU+T3JnYW5pemF0aW9uIC0gTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1NiIgbmFtZT0ibW9kZXJhdG9yIG9yZyB1c2VycyI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBVc2VyIGZyb20gdGhlIE9yZ2FuaXphdGlvbj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU3IiBuYW1lPSJvcmcgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPlRoaXMgVXNlciBpcyBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU4IiBuYW1lPSJvcmcgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPlRoaXMgVXNlciBpcyBOby1Nb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU5IiBuYW1lPSJlcnJvciBtZXNzYWdlIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5EbyB5b3Ugd2FudCB0aGlzIFVzZXIgdG8gYmUgbm90IGEgTW9kZXJhdG9yIG9mIHRoaXMgT3JnYW5pemF0aW9uPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjAiIG5hbWU9Im1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5BZGQgb3IgZGVsZXRlIFVzZXJzIG9yIFJvb21zIHdpdGhpbiB5b3VyIE9yZ2FuaXphdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjEiIG5hbWU9ImRlbGV0ZSBjb25maXJtIHF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHJlY29yZD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYyIiBuYW1lPSJkZWxldGUgY29uZmlybSBxdWVzdGlvbiB1c2VyIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgdXNlciBmcm9tIHlvdXIgb3JnYW5pemF0aW9uPyBZb3Ugd2lsbCBvbmx5IGRlbGV0ZSB0aGUgY29ubmVjdGlvbiBiZXR3ZWVuIHRoZSB1c2VyIGFuZCB5b3VyIG9yZ2FuaXphdGlvbiwgdG8gcmVhbGx5IGRlbGV0ZSB0aGUgdXNlciBoaW1zZWxmIHlvdSBoYXZlIHRvIGxvZ2luIGludG8gdGhlIEFkbWluaXN0cmF0aW9uLVBhbmVsLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjMiIG5hbWU9ImVycm9yIG1lc3NhZ2Ugc2VsZiBkZWxldGluZyI+CisgICAgPHZhbHVlPllvdSBjYW5ub3QgZGVsZXRlIHlvdXIgb3duIFVzZXIhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NCIgbmFtZT0iZXJyb3IgbWVzc2FnZSBhdXRoIj4KKyAgICA8dmFsdWU+VGhpcyBNZXRob2QgbmVlZHMgYW4gQWRtaW5zdHJhdGlvbiBBY2NvdW50IHRvIGJlIGludm9rZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NSIgbmFtZT0iZXJyb3IgbWVzc2FnZSBTT0FQIj4KKyAgICA8dmFsdWU+VGhlcmUgd2FzIG5vIFNlc3Npb24gYXNzb2NpYXRlZCB3aXRoIHRoaXMgSUQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NiIgbmFtZT0iZXJyb3IgbWVzc2FnZSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+VGhpcyBpcyBhbiBBZG1pbmlzdHJhdG9yIG9yIE1vZGVyYXRvciBhY2NvdW50LiBZb3UgY2FuIG9ubHkgZWRpdCB0aGlzIGFjY291bnQgdGhyb3VnaCB0aGUgQWRtaW5pc3RyYXRpb24gUGFuZWwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NyIgbmFtZT0iZW1haWwgdmVyaWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+VG8gY29tcGxldGUgeW91ciByZWdpc3RyYXRpb24gcGxlYXNlIGNsaWNrIG9uIHRoZSBmb2xsb3dpbmcgbGluay4gT3IgY29weSB0aGUgVVJMIHRvIHlvdXIgYnJvd3NlciBiYXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2OCIgbmFtZT0iZW1haWwgdmVyaWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+Q2xpY2sgdG8gdmVyaWZ5IHlvdXIgRS1NYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2OSIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPk5vIHVzZXIgd2FzIGZvdW5kIGZvciB0aGlzIEhhc2guPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3MCIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPlRoaXMgdXNlciBpcyBhbHJlYWR5IGFjdGl2YXRlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjcxIiBuYW1lPSJlcnJvck1lc3NhZ2VfVXNlckFjdGl2YXRpb25TZXJ2bGV0IFtBY3RpdmF0ZVVzZXJdIj4KKyAgICA8dmFsdWU+WW91IGRpZCBzdWNjZXNzZnVsbHkgYWN0aXZhdGUgeW91ciBhY2NvdW50ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzIiIG5hbWU9ImVycm9yTWVzc2FnZV9Vc2VyQWN0aXZhdGlvblNlcnZsZXQgW0FjdGl2YXRlVXNlcl0iPgorICAgIDx2YWx1ZT5Mb2dpbiBOb3c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjczIiBuYW1lPSJsb2dpbkVycm9yTWVzc2FnZSA9IHVzZXIgd2FzIG5vdCBhY3RpdmF0ZWQiPgorICAgIDx2YWx1ZT5Zb3VyIGFjY291bnQgaXMgbm90IGFjdGl2YXRlZC4gRmlyc3QgdXNlIHRoZSBsaW5rIGluIHRoZSBFbWFpbCB5b3UndmUgcmVjZWl2ZWQgZHVyaW5nIHJlZ2lzdHJhdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc0IiBuYW1lPSJyZWdpc3RlciB2ZXJpZmljYXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPllvdSBzdWNjZXNzZnVsbHkgc2lnbmVkIHVwLiBXZSd2ZSBzZW5kIGFuIEVNYWlsIHdpdGggYSB2ZXJpZmljYXRpb24gQ29kZSB0byB5b3VyIE1haWwuIFBsZWFzZSBjaGVjayB5b3VyIEluYm94LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzUiIG5hbWU9InBhcnRpY2lwYW50cyBwYW5lbCI+CisgICAgPHZhbHVlPlJlbW92ZSBNb2RlcmF0aW9uIFJvbGUgZnJvbSB0aGlzIFVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc2IiBuYW1lPSJwYXJ0aWNpcGFudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5HcmFudCBNb2RlcmF0aW9uIFJpZ2h0cyB0byB0aGlzIFVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc3IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Vc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3OCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QWNjZXNzIHRvIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc5IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Nb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgwIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Nb2RlcmF0aW9uOiBQbGVhc2UgY2hvb3NlIGFueSBVc2VyIG9uIHRoZSBMaXN0IHRvIGdyYW50IGhpbSBhY2Nlc3MgdG8gdGhlIFdoaXRlYm9hcmQsIE1vZGVyYXRpb24gb3IgVmlkZW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+VGhpcyBVc2VyIGlzIGFscmVhZHkgTW9kZXJhdG9yLCBzbyBoZSBoYXMgYXV0b21hdGljYWxseSB0aGUgcmlnaHQgdG8gZHJhdy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgyIiBuYW1lPSJldmVudCB1c2VyIGxpc3QgZXJyb3IiPgorICAgIDx2YWx1ZT5UaGlzIGlzIHlvdSEgWW91IGNhbm5vdCByZW1vdmUgdGhlIE1vZGVyYXRpb24gcmlnaHRzIGZyb20geW91cnNlbGYuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MyIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QWxsb3cgdGhpcyBVc2VyIHRvIFB1Ymxpc2ggaGlzIEF1ZGlvIC8gVmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg0IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5SZW1vdmUgQXVkaW8vVmlkZW8gb2YgdGhpcyBVc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4NSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+SSBoYXZlIGEgcXVlc3Rpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg2IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5JIHdvdWxkIGxpa2UgdG8gZHJhdyBvbiB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4NyIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+SSB3b3VsZCBsaWtlIHRvIHNoYXJlIG15IEF1ZGlvL1ZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4OCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+WW91IGFyZSBtb2RlcmF0b3Igb2YgdGhpcyByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4OSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+WW91IGFyZSBhbGxvd2VkIHRvIGRyYXcgb24gd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTAiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPllvdSBhcmUgYWxsb3dlZCB0byBzaGFyZSB5b3VyIEF1ZGlvL1ZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5MSIgbmFtZT0iZXJyb3J0eXBlIj4KKyAgICA8dmFsdWU+TWVzc2FnZSB0byBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkyIiBuYW1lPSJhcHBseSBmb3IgbW9kIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTMiIG5hbWU9ImFwcGx5IGZvciBtb2QgbWVzc2FnZSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gYXNrIGEgcXVlc3Rpb24uJmx0O2JyLyZndDsmbHQ7YnIvJmd0OyAmbHQ7aSZndDsoVXNlIHRoZSBzdGF0dXMgSWNvbnMgbmV4dCB0byB0aGUgdXNlciBpbiB0aGUgTGlzdCBvZiBVc2VycyB0byBhZGQgb3IgcmVtb3ZlIHRoZSBNb2RlcmF0aW9uLikmbHQ7N2kmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5NCIgbmFtZT0iYXBwbHkgZm9yIHdoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGRyYXcgb24gd2hpdGVib2FyZC4gVXNlIHRoZSBzdGF0dXMgSWNvbnMgbmV4dCB0byB0aGUgdXNlciBpbiB0aGUgTGlzdCBvZiBVc2VycyB0byBhZGQgb3IgcmVtb3ZlIHRoZSByaWdodCB0byBkcmF3IGFueXRoaW5nIG9uIHRoZSB3aGl0ZWJvYXJkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTUiIG5hbWU9IjY5NSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gc2hhcmUgaGlzIEF1ZGlvL1ZpZGVvLiBVc2UgdGhlIHN0YXR1cyBJY29ucyBuZXh0IHRvIHRoZSB1c2VyIGluIHRoZSBMaXN0IG9mIFVzZXJzIHRvIGFkZCBvciByZW1vdmUgdGhlIHJpZ2h0IHRvIHNoYXJlIEF1ZGlvL1ZpZGVvIGZvciBhbnkgVXNlci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk2IiBuYW1lPSJtb2RlcmF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Zb3UgaGF2ZSB0byB3YWl0IHVudGlsIGEgTW9kZXJhdG9yIGVudGVycyB0aGUgcm9vbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk3IiBuYW1lPSJjYWxlbmRhciBidXR0b24iPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk4IiBuYW1lPSJjYWxlbmRhciBidXR0b24iPgorICAgIDx2YWx1ZT5TYXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5OSIgbmFtZT0iY2FsZW5kYXIgY29tcG9uZW50Ij4KKyAgICA8dmFsdWU+RGF5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwMCIgbmFtZT0iY2FsZW5kYXIgY29tcG9uZW50Ij4KKyAgICA8dmFsdWU+TW9udGg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAxIiBuYW1lPSJjYWxlbmRhciBjb21wb25lbnQiPgorICAgIDx2YWx1ZT5ZZWFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwMiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlVwbG9hZCBGaWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwMyIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkFkZCBGb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA0IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+UmVmcmVzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDUiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5UcmFzaCAoRHJhZyBhbmQgRHJvcCBpdGVtIGhlcmUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwNiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPk15IEZpbGVzIChIb21lIERyaXZlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDciIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Sb29tIEZpbGVzIChQdWJsaWMgRHJpdmUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwOCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkFkZCBGaWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwOSIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkFkZCBGb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzEwIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+RGVsZXRlIEZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTEiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5FZGl0IE5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzEyIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+TmV3IEZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTMiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgSXRlbT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE0IiBuYW1lPSJ1c2VyIGFkbWluIj4KKyAgICA8dmFsdWU+U2VhcmNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxNSIgbmFtZT0idXNlciBhZG1pbiI+CisgICAgPHZhbHVlPlNlYXJjaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTYiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5PcGVuIERvY3VtZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxNyIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlNob3cgYWxsIEZpbGVzIChUcmVlIFZpZXcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxOCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkNsb3NlIERvY3VtZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxOSIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkRlbGV0ZSBGaWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyMCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPllvdSBhcmUgbm90IGFsbG93ZWQgdG8gZHJhdyBhbnl0aGluZyBvbiB0aGUgV2hpdGVib2FyZC4gWW91IGhhdmUgdG8gYmVjb21lIE1vZGVyYXRvciBvciBhdCBsZWFzdCBnZXQgdGhlIFJpZ2h0IHRvIGVkaXQgV2hpdGVib2FyZC4gWW91IG1heSBhc2sgYSBNb2RlcmF0b3IgdG8gZ2l2ZSB5b3UgdGhhdCByaWdodC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIxIiBuYW1lPSJwcm9wZXJ0eSBwYW5lbCI+CisgICAgPHZhbHVlPkRvY3VtZW50IFByb3BlcnRpZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIyIiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5TdGFydCBKYXZhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyMyIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+U3RhcnQgRmxhc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI0IiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5BIHVzZXIgd2FudCB0byBzaGFyZSBoaXMgc2NyZWVuLiBEbyB5b3Ugd2FudCB0byBzZWUgaXQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNSIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+WW91IGFyZSBjdXJyZW50bHkgc2hhcmluZyB5b3VyIERlc2t0b3AuIEZvciBzdG9wcGluZyB0aGUgU2hhcmluZyBTZXNzaW9uIHBsZWFzZSBoaXQgdGhlIFN0b3AgYnV0dG9uIGluIHRoZSBTaGFyaW5nIENsaWVudC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI2IiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5TaGFyaW5nIFNlc3Npb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI3IiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGFscmVhZHkgc2hhcmluZyB5b3VyIGRlc2t0b3AhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyOCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5EZXNrdG9wIFZpZXdlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjkiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U3RvcCBTaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5EZXNrdG9wIFNoYXJlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzEiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+Q2xpY2sgU3RhcnQgdG8gcHVibGlzaCB5b3VyIHNjcmVlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzIiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U3RhcnQgU2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzMiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UGF1c2UgU2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzQiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U2VsZWN0IHlvdXIgc2NyZWVuIGFyZWE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5DaGFuZ2Ugd2lkdGg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM2IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlRoZSBTaGFyZXIgaGFzIGZpbmlzaGVkIHRoaXMgc2Vzc2lvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM3IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkNoYW5nZSBoZWlnaHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM4IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlgtT2Zmc2V0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczOSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5ZLU9mZnNldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDAiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+V2lkdGg6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0MSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5IZWlnaHQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0MiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5Db25uZWN0aW9uIHdhcyBjbG9zZWQgYnkgU2VydmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0MyIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ0IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPlN0YXJ0IEphdmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ1IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPklmIHlvdSBjbG9zZSB0aGlzIHNlc3Npb24gY29tcGxldGVseSB5b3UgYXJlIG5vdCBhYmxlIHRvIHJlc3RhcnQgdGhlIHZpZXdlciBmb3IgdGhpcyBzZXNzaW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDYiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+Q29uZmlybSBDbG9zaW5nIFZpZXdlciBTZXNzaW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NyIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5TaGFyZSBTY3JlZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ4IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPlJlY29yZCBTZXNzaW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0OSIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPkNvLUJyb3dzaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MCIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPk9vb3BzLCAuLi4gRmlyZWZveCBvbiBXaW5kb3dzIGRvZXMgbm90IHNob3cgY2xlYXIgQ28tQnJvd3NpbmcuIFBsZWFzZSB1c2UgYW5vdGhlciBCcm93c2VyIGZvciB1c2luZyB0aGUgQ28tQnJvd3NpbmcgZmVhdHVyZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUxIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+UHJldmlvdXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUyIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+TmV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTMiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5SZWxvYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU0IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+SG9tZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTUiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5Mb2FkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1NiIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPkFkZCB0aGlzIHdlYnNpdGUgYXMgRGVmYXVsdCB3ZWJzaXRlIHRvIHlvdXIgUHJvZmlsZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU3IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+VGVzdCBTZXR1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTgiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5Vc2UgQXVkaW8gb3IgVmlkZW8gc2V0dXAgYmVmb3JlIHlvdSBlbnRlciBhIHJvb20gYnkgcmVjb3JkaW5nIGZvciBhIGZldyBzZWNvbmRzLiBZb3UgY2FuIHRoZW4gcmVwbGF5IHlvdXIgcmVjb3JkaW5nIHRvIGNoZWNrIHlvdXIgdm9pY2UgYW5kIHBpY3R1cmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1OSIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPkRvbid0IHNob3cgdGhpcyB0ZXN0IGFueW1vcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYwIiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MSIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlN0YXJ0IENvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYyIiBuYW1lPSJlZGl0IHZpZGVvIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+RG8gbm90IGFzayBhZ2FpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjMiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5SRUM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY0IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+UExBWTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjUiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5Zb3UgbWF5IHByb2NlZWQgd2l0aG91dCB0ZXN0aW5nIGlmIHlvdSBkbyBub3QgcGxhbiB0byBwdWJsaXNoIHlvdXIgdm9pY2Ugb3IgcGljdHVyZS4gUGFydGljaXBhbnRzIHdpdGhvdXQgQXVkaW8gb3IgVmlkZW8gY2FuIHN0aWxsIHVzZSB0aGUgV2hpdGVib2FyZCwgc2hhcmUgdGhlaXIgRGVza3RvcCBvciB3cml0ZSBDaGF0IG1lc3NhZ2VzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjYiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5TVE9QPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NyIgbmFtZT0iNzY3Ij4KKyAgICA8dmFsdWU+TGV2ZWwtTWV0ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY4IiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+UHJlc3MgU3RhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY5IiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+U3RhcnQgQ29uZmVyZW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzAiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5TdGFydCBFdmVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzEiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5DaG9vc2UgUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzIiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5DaGVjayBTZXR1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzMiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5TdGFydCBDb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NCIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPkhvdyB0byBjb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NSIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlN0YXJ0IFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzYiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5EbyBub3Qgc2hvdyBBdWRpbyAvIFZpZGVvIFRlc3QgKFJlY29yZGluZykgYmVmb3JlIGVudGVyaW5nIGEgQ29uZmVyZW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzciIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT5QdWJsaWMgUm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc4IiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+UHVibGljIFJvb21zIGFyZSBhY2Nlc3NpYmxlIGZvciBhbGwgVXNlcnMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3OSIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPlByaXZhdGUgUm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgwIiBuYW1lPSJQcml2YXRlIFJvb21zIj4KKyAgICA8dmFsdWU+UHJpdmF0ZSBSb29tcyBhcmUgb25seSBhY2Nlc3NpYmxlIGZvciB1c2VycyBvZiB0aGUgc2FtZSBvcmdhbml6YXRpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MSIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPk15IFJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MiIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPlJvb21zIGluIHRoaXMgc2VjdGlvbiBhcmUgY3JlYXRlZCBmb3IgcGVyc29uYWwgdXNhZ2UuIFRoZXkgYXJlIGNyZWF0ZWQgdGhyb3VnaCB0aGUgY2FsZW5kYXIgYW5kIGhhdmUgYSBzdGFydCBhbmQgYSBlbmQgZGF0ZS4gVGhleSBhcmUgb25seSBsaXN0ZWQgaW4gdGhpcyBzZWN0aW9uIGFzIGxvbmcgYXMgdGhleSBhcmUgdmFsaWQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MyIgbmFtZT0icmVzdHJpY3RlZCByb29tIj4KKyAgICA8dmFsdWU+WW91IGhhdmUgdG8gYmUgbW9kZXJhdG9yIHRvIGRvIHRoaXMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NCIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT5BcHBseSBmb3IgbW9kZXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODUiIG5hbWU9Im1lbnUgb3B0aW9uIj4KKyAgICA8dmFsdWU+QXBwbHkgZm9yIHdoaXRlYm9hcmQgYWNjZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NiIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT5BcHBseSBmb3IgY2FtZXJhL21pY3JvcGhvbmUgYWNjZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NyIgbmFtZT0iZXJyb3IgbWVzc2FnZSBzb2FwIHNlY3VyZSBsb2dpbiI+CisgICAgPHZhbHVlPlRoaXMgU2Vzc2lvbiBIYXNoIHdhcyBhbHJlYWR5IHVzZWQuIFlvdSBjYW5ub3QgdXNlIGl0IHR3aWNlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODgiIG5hbWU9ImRhc2hib2FyZCBidXR0b24iPgorICAgIDx2YWx1ZT5TVEFSVDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODkiIG5hbWU9ImV4aXQgY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPteZ16bXmdeQ15Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkwIiBuYW1lPSJjb25mZXJlbmNlIHZpZXciPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZXhpdD8gWW91IG1pZ2h0IHNob3VsZCBjbGVhciB1cGxvYWRlZCBkb2N1bWVudHMsIHdoaXRlYm9hcmQgYW5kIHRoZSBjaGF0IGhpc3RvcnkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5MSIgbmFtZT0iY29uZmVyZW5jZSB2aWV3Ij4KKyAgICA8dmFsdWU+RXhpdCBjb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5MiIgbmFtZT0ibWFpbiBtZW51Ij4KKyAgICA8dmFsdWU+Um9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkzIiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT5DaG9vc2UgYSByb29tIGZvciBhIG1lZXRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk0IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGFuIHVuc2F2ZWQgRXZlbnQgaW4gdGhlIENhbGVuZGFyLiBQbGVhc2UgZWl0aGVyIHNhdmUgaXQgb3IgcmVtb3ZlIGl0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTUiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+UGxlYXNlIGFkZCBhdCBsZWFzdCBvbmUgYXR0ZW5kZWUgZm9yIHlvdXIgbWVldGluZyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk2IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBFdmVudD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk3IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPldhcm5pbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk4IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkFkZCBFdmVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTkiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RGF5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5XZWVrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Nb250aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDIiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RGVzY3JpcHRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAzIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkF0dGVuZGVlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSwgeW91ciBXZWIgQ29uZmVyZW5jaW5nIFBsYXRmb3JtLiBFaXRoZXIgZm9sbG93IHRoZSBJbnN0cnVjdGlvbnMsIHByZXNzIHRoZSBzdGFydCBidXR0b24gdG8gc3RhcnQgdG8gY29uZmVyZW5jZSBpbW1lZGlhdGVsbHkgb3IgeW91IGdvdG8gdGhlIENhbGVuZGFyIGFuZCBzZXQgdXAgYSBDb25mZXJlbmNlIGZvciB0aGUgZnV0dXJlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDUiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPlBsYW4gYSBNZWV0aW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNiIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlRvIHNldCB1cCBhIGNvbmZlcmVuY2UgeW91IGNhbiBhZGQgYSBuZXcgRXZlbnQgaW4gdGhlIENhbGVuZGFyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDciIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5OZWVkIGhlbHA/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwOCIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlJlc3RyaWN0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA5IiBuYW1lPSJsemNhbGVuZGVyIj4KKyAgICA8dmFsdWU+U2VhcmNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMCIgbmFtZT0ibHpjYWxlbmRlciI+CisgICAgPHZhbHVlPkFkZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTEiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBVc2VyIHNlbGVjdGVkLiBQbGVhc2Ugc2VsZWN0IGFuIGl0ZW0gZnJvbSB0aGUgbGlzdCBmaXJzdCBhbmQgdGhlbiBoaXQgYWRkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTIiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5BZGQgQXR0ZW5kZWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEzIiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+U2F2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTQiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5EZWxldGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE1IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RXZlbnQgRGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTYiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EZWZhdWx0IE1vZGVyYXRvcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+U3VwZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE4IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE5IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjAiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5FLU1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIxIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+QWRkIG5ldyBkZWZhdWx0IE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjIiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5JcyBTdXBlciBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIzIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+SWYgdGhlIFJvb20gaXMgbW9kZXJhdGVkLCBVc2VyIHdpdGggTGV2ZWwgTW9kZXJhdG9yIG9yIEFkbWluaXN0cmF0b3IgYXJlIGF1dG9tYXRpY2FsbHkgTW9kZXJhdG9yIGlmIHRoZXkgZW50ZXIgdGhlIFJvb20uIElmIHlvdSBkb24ndCB3YW50IHRvIHNwZWNpZnkgdGhhdCBhbmQgb25seSB3YW50IGEgY2VydGFpbiBVc2VyIHRvIGJlY29tZSBNb2RlcmF0b3IgdXNlIHRoZSBEZWZhdWx0IE1vZGVyYXRvciBvcHRpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkEgU3VwZXIgTW9kZXJhdG9yIGlzIGFsd2F5cyBhIE1vZGVyYXRvciB3aGVuIGhlIGVudGVycyBhIFJvb20sIGFuZCBub2JvZHkgY2FuIHJlbW92ZSB0aGUgTW9kZXJhdGlvbiBGbGFnIGZyb20gaGltPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkFwcGx5IFN1cGVyLU1vZGVyYXRpb24gdG8gVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjYiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5SZW1vdmUgU3VwZXIgTW9kZXJhdGlvbiBmcm9tIFVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjgiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5JZiB5b3UgYWRkIGFuIE9yZ2FuaXphdGlvbiB0byB0aGUgcm9vbSBvbmx5IHVzZXJzIG9mIHRoYXQgT3JnYW5pemF0aW9uIGhhdmUgYWNjZXNzIHRvIGl0IChUaGlzIGlzIG9ubHkgdmFsaWQgaWYgdGhlIGlzUHVibGljIGZsYWcgaXMgc2V0IHRvIGZhbHNlISk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI5IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+TW9kZXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzAiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5MaW1pdGF0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzEiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5Pcmdhbml6YXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODMyIiBuYW1lPSJjb25maXJtIGFjdGlvbiI+CisgICAgPHZhbHVlPkFyZSB5b3Ugc3VyZT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODMzIiBuYW1lPSJjb25maXJtIGRlbGV0ZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBJdGVtPyBZb3UgaGF2ZSB0byBwcmVzcyB0aGUgc2F2ZSBidXR0b24gdG8gc3RvcmUgdGhlIGNoYW5nZXMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNCIgbmFtZT0idXNlciBjaG9vc2UgZXJyb3IiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBVc2VyIHNlbGVjdGVkLiBQbGVhc2Ugc2VsZWN0IGZpcnN0IGJlZm9yZSB5b3UgYWRkIGl0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzUiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5BZGQgbmV3IERlZmF1bHQgTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkRvIHlvdSB3YW50IHRvIGFkZCB0aGUgU3VwZXIgTW9kZXJhdGlvbiBGbGFnIGZvciB0aGlzIFVzZXI/IEEgU3VwZXIgTW9kZXJhdG9yIGlzIG5vdCBvbmx5IE1vZGVyYXRvciBvZiBhIFJvb20sIGJ1dCBhbHNvIG5vIG90aGVyIE1vZGVyYXRvciBjYW4gcmVtb3ZlIHRoZSBNb2RlcmF0aW9uIEZsYWcgZm9yIHRoaXMgVXNlci4gWW91IG5lZWQgdG8gc2F2ZSB0aGUgUm9vbSBPYmplY3QgdG8gc2F2ZSB0aGVzZSBzZXR0aW5ncyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RG8geW91IHdhbnQgdG8gcmVtb3ZlIHRoZSBTdXBlciBNb2RlcmF0aW9uIEZsYWcgZm9yIHRoaXMgVXNlcj8gWW91IG5lZWQgdG8gc2F2ZSB0aGUgUm9vbSBPYmplY3QgdG8gc2F2ZSB0aGVzZSBzZXR0aW5ncyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM4IiBuYW1lPSJzdXBlciBtb2RlcmF0b3IiPgorICAgIDx2YWx1ZT5UaGlzIFVzZXIgaXMgYSBTdXBlci1Nb2RlcmF0b3IuIFlvdSBjYW5ub3QgcmVtb3ZlIHRoZSBNb2RlcmF0aW9uIGZsYWcgZnJvbSBhIFN1cGVyLU1vZGVyYXRvciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM5IiBuYW1lPSJjb25maXJtIGRlbGV0ZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGaWxlL0ZvbGRlcj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQwIiBuYW1lPSJjb25maXJtIGRlbGV0ZSI+CisgICAgPHZhbHVlPkRlbGV0ZSBGaWxlL0ZvbGRlcj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQxIiBuYW1lPSJzYWx1dGF0aW9uIj4KKyAgICA8dmFsdWU+TXJzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDIiIG5hbWU9InNhbHV0YXRpb24iPgorICAgIDx2YWx1ZT5Eci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQzIiBuYW1lPSJwcm9wZXJ0eSBwYW5lbCB3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+UHJvcGVydGllczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDQiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5TaG93IG1vdXNlIHBvc2l0aW9uIHRvIHZpZXdlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ1IiBuYW1lPSJwdWJsaXNoIG9wdGlvbiI+CisgICAgPHZhbHVlPlNoYXJlIEF1ZGlvIHdpdGggU0lQIEFwcGxldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDYiIG5hbWU9InB1Ymxpc2ggb3B0aW9uIj4KKyAgICA8dmFsdWU+U2hhcmUgQXVkaW8gd2l0aCBTSVAgYW5kIFZpZGVvIHdpdGggRmxhc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ3IiBuYW1lPSJkb2N1bWVudCBwYW5lbCI+CisgICAgPHZhbHVlPkZ1bGwtRml0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0OCIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+VmlldyBTY3JlZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ5IiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5UaGUgdXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTAiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPndhbnRzIHRvIHNoYXJlIGl0cyBzY3JlZW4uIERvIHlvdSB3YW50IHRvIHNlZSBpdD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUxIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5DbG9zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTIiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5ab29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MyIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPlRoZSBTZXNzaW9uIHdhcyBjbG9zZWQgYnkgdGhlIHNoYXJpbmcgVXNlciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU0IiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+UGF1c2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU1IiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+TmV3IFNjcmVlbiBTaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1NiIgbmFtZT0icHJlc2VudGVyIG1pbmkgaWNvbiI+CisgICAgPHZhbHVlPk1pbmltaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1NyIgbmFtZT0icHJlc2VudGVyIG1pbmkgaWNvbiI+CisgICAgPHZhbHVlPk1heGltaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1OCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+VmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU5IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5SZWNvcmRpbmcgVGltZWxpbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYwIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5NeSBSZWNvcmRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UHVibGljIFJlY29yZGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYyIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5JbmZvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjQiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkxlbmd0aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjUiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkRhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5CeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjciIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkRvd25sb2FkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2OCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TWFpbiAtIFZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2OSIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+UmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3MCIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+WW91IG1heSByZWNvcmQgYW5kIHNoYXJlIHlvdXIgc2NyZWVuIGF0IHRoZSBzYW1lIHRpbWUuIFRvIGVuYWJsZSBvdGhlcnMgdG8gc2VlIHlvdXIgc2NyZWVuIGp1c3QgaGl0IHRoZSBzdGFydCBidXR0b24gb24gdGhlIHRvcC4gVG8gb25seSByZWNvcmQgdGhlIFNlc3Npb24gaXQgaXMgc3VmZmljaWVudCB0byBjbGljayBzdGFydCByZWNvcmRpbmcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3MSIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+U3RhcnQgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3MiIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+U3RvcCBSZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODczIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Eb3dubG9hZCB0aGUgRkxWLUZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc0IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3NSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UGxheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzYiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlN0b3A8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc3IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Vc2VyIGhhcyBtaWNyb3Bob25lIG9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3OCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdG9wIFNoYXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc5IiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPkFsbG93IFVzZXIgUXVlc3Rpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MCIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5UdXJuIHRoaXMgb2ZmIHRvIHByZXZlbnQgdGhhdCBhbnkgdXNlciBpcyBkaXN0dXJiaW5nIHlvdSBpbiB0aGlzIHJvb20uIEVmZmVjdCBpcyB0aGF0IHRoZSBCdXR0b24gdG8gYXNrIGZvciBNb2RlcmF0aW9uICgiSSBoYXZlIGEgcXVlc3Rpb24iKSBpcyBub3QgdmlzaWJsZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgxIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPlJpZ2h0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODIiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkRvd25sb2FkIGFzIEFWSTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODMiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkZMVjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODQiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkFWSTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODUiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlJhdyBTY3JlZW52aWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODYiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkF1ZGlvIG9ubHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg3IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5UaGUgaGF2ZSBiZWVuIGVycm9ycyB3aGlsZSBwcm9jZXNzaW5nIHRoZSBSZWNvcmRpbmcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4OCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+VGhlIFJlY29yZGluZyBpcyBub3QgeWV0IHJlYWR5IGZvciB3YXRjaGluZy4gUGxlYXNlIHJldHJ5IGluIGEgY291cGxlIG9mIG1pbnV0ZXMgYWdhaW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4OSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TG9nOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTAiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlJlY29yZGVyIE1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkxIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5PazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTIiIG5hbWU9InNpcCBhcHBsZXQiPgorICAgIDx2YWx1ZT5TSVAgQXBwbGV0IGlzIG5vdCBSZWFkeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTMiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TSVAtQWNjb3VudCBTZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTQiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TSVAgc2V0dGluZ3MgZm9yIGVhY2ggdXNlci4gWW91IGNhbiB0dXJuIG9uIG9yIG9mZiBTSVAgdmlhIHRoZSBBZG1pbmlzdHJhdGlvbiAmZ3Q7IENvbmZpZ3VyYXRpb24gKEtleTogZW5hYmxlX3NpcCkuIFRoZSBTSVAgZGF0YSBmb3IgZWFjaCB1c2VyIHNob3VsZCBiZSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkuIFlvdSBjYW4gcmUtY3JlYXRlIHRoZSBkYXRhIGJ5IGNoZWNraW5nICJSZS1nZW5lcmF0ZSBTSVAgRGF0YSI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk1IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+U0lQLVVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk2IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+U2lwLVBhc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk3IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+U2lwLUF1dGgtSWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk4IiBuYW1lPSJzaXAgc3RhdHVzIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgTG9naW4gdG8gdGhlIFNJUCBHYXRld2F5IGhhcyBmYWlsZWQuIFlvdSBzaG91bGQgY2hlY2sgdGhlIGF1dGhlbnRpZmljYXRpb24gZGF0YSBvZiB5b3VyIFNJUC1Qcm92aWRlciBhbmQgdGhlIFNJUC1BY2NvdW50IERhdGEgZm9yIGVhY2ggVXNlci4gQXMgQWRtaW5pc3RyYXRvciB5b3UgYXJlIHN0aWxsIGFibGUgdG8gbG9naW4gYW5kIGNoZWNrIHRoZSBDb25maWd1cmF0aW9uLiBBcyBVc2VyIG9yIE1vZGVyYXRvciB5b3Ugd2lsbCBiZSBibG9ja2VkIGZyb20gYW55IGludGVyYWN0aW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTkiIG5hbWU9InNpcCBzdGF0dXMgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSBMb2dpbiB0byB0aGUgU0lQIEdhdGV3YXkgaGFzIGZhaWxlZC4gQ29udGFjdCB5b3VyIFNlcnZpY2UgVGVhbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAwIiBuYW1lPSJzaXAgc3RhdHVzIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Mb2dnaW5nIGluIHRvIFNJUC1HYXRld2F5IC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDEiIG5hbWU9InNpcCBzdGF0dXMgbWVzc2FnZSI+CisgICAgPHZhbHVlPkxvZ2dpbmcgaW4gdG8gU0lQLUdhdGV3YXkgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwMiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+U2hvdyBMb2c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAzIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Mb2cgbWVzc2FnZXMgZnJvbSBwb3N0IHJlY29yZGVyIHByb2Nlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA0IiBuYW1lPSJzaXAgbG9naW4iPgorICAgIDx2YWx1ZT5TSVAtQXBwbGV0IE1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA1IiBuYW1lPSJzaXAgbG9naW4iPgorICAgIDx2YWx1ZT5UaGUgU0lQLUFwcGxldCBpcyBub3QgcmVhZHkuIEFjY2VwdCB0aGUgQXBwbGV0IHBsZWFzZSBhbmQgY2xpY2sgb2shPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwNiIgbmFtZT0ibW9kZXJhdG9yIHBvcCB1cCI+CisgICAgPHZhbHVlPkdldCBNb2RlcmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwNyIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlNhdmUgQXBwb2ludG1lbnQgQ2hhbmdlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDgiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5UaGUgYXBwb2ludGVtZW50IGhhcyBiZWVuIGNoYW5nZWQuIERvIHlvdSB3YW50IHRvIHNhdmUgdGhvc2UgY2hhbmdlcz8gJmx0O2JyLyZndDsmbHQ7YnIvJmd0O0FsbCBhdHRlbmRlZXMgb2YgdGhlIGFwcG9pbnRtZW50IHdpbGwgcmVjZWl2ZSBhIEVNYWlsIHdpdGggdGhlIHVwZGF0ZWQgZGF0ZSBhbmQgdGltZSAoZGVwZW5kaW5nIG9uIHRoZSBub3RpZmljYXRpb24gdHlwZSBvZiB0aGlzIGFwcG9pbnRtZW50KS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA5IiBuYW1lPSJmbHYgcmVjb3JkZXIgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRvIGFjY2VzcyBvdGhlciByZWNvcmRpbmdzIHlvdSBoYXZlIHRvIGxvZ2luIHRoZSAkQVBQX05BTUUgQXBwbGljYXRpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMCIgbmFtZT0iaW50ZXJ2aWV3IHZpZGVvIHBvZCI+CisgICAgPHZhbHVlPkNob29zZSB0aGUgVXNlciBmb3IgdGhpcyBWaWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTEiIG5hbWU9ImludGVydmlldyB2aWRlbyBjaG9vc2UgdXNlciI+CisgICAgPHZhbHVlPkF2YWlsYWJsZSBVc2VycyBmb3IgdGhpcyBQb2Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTEyIiBuYW1lPSJpbnRlcnZpZXcgaW5mbyI+CisgICAgPHZhbHVlPllvdSBhcmUgYSBNb2RlcmF0b3IgaW4gdGhpcyBJbnRlcnZpZXcuIFlvdSBjYW4gZGVjaWRlIHdobyBpcyBzcGVha2luZyBpbiB0aGlzIGludGVydmlldyBhbmQgeW91IGNhbiBzdGFydCAvIHN0b3AgdGhlIHJlY29yZGluZyBvZiB0aGUgU2Vzc2lvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTEzIiBuYW1lPSJpbnRlcnZpZXcgYnV0dG9uIHJlY29yZGluZyI+CisgICAgPHZhbHVlPlN0YXJ0IFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTQiIG5hbWU9ImludGVydmlldyBidXR0b24gcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+U3RvcCBSZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE1IiBuYW1lPSJpbnRlcnZpZXcgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSByZWNvcmRpbmcgb2YgdGhlIEludGVydmlldyBpcyBhbHJlYWR5IHN0YXJ0ZWQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxNiIgbmFtZT0iaW50ZXJ2aWV3IGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgcmVjb3JkaW5nIGlzIGFscmVhZHkgc3RvcHBlZCBvciBub3QgYmVlbiBzdGFydGVkIHlldC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE3IiBuYW1lPSJpbnRlcnZpZXcgcmVjb3JkaW5nIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgcmVjb3JkaW5nIGZvciB0aGlzIGludGVydmlldyBpcyBhbHJlYWR5IHN0YXJ0ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxOCIgbmFtZT0iaW50ZXJ2aWV3IGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE5IiBuYW1lPSJpbnRlcnZpZXcgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSBwb3N0LXByb2Nlc3Npbmcgb2YgYW4gaW50ZXJ2aWV3IHRha2VzIDUgbWludXRlcyBwZXIgMSBtaW51dGUgaW50ZXJ2aWV3LiBUaGUgY3VycmVudCBwcm9ncmVzcyBvZiB0aGUgaW50ZXJ2aWV3IHBvc3QtcHJvY2Vzc2luZyB0cmFuc2NvZGluZyBpczo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIwIiBuYW1lPSJzaXAgY3JlYXRpb24iPgorICAgIDx2YWx1ZT5Zb3UgaGF2ZSB0byBlbnRlciB5b3VyIHBhc3N3b3JkIGFnYWluIHRvIGF1dG8gY3JlYXRlIHRoZSBTSVAgRGF0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjEiIG5hbWU9InNpcCBjcmVhdGlvbiI+CisgICAgPHZhbHVlPlJlLWdlbmVyYXRlIFNJUCBEYXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyMiIgbmFtZT0iZmlsZWV4cGxvcmVyIj4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBtb3ZlIHRoaXMgZmlsZSBvciBmb2xkZXIgaW50byBpdHMgb3duIHN1YiBmb2xkZXIhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyMyIgbmFtZT0iZmlsZSBleHBsb3JlciAiPgorICAgIDx2YWx1ZT5Ib21lIGRyaXZlIHNpemU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI0IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+UHVibGljIGRyaXZlIHNpemU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI1IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+TGljZW5zZSBTZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjYiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5Zb3UgY2FuIGVpdGhlciBiaW5kIHRoZSB1c2VyIHRvIGEgZXhwaXJlIERhdGUgb3IgdG8gYSBtYXhpbXVtIG51bWJlciBvZiBtaW51dGVzIHdoZW4geW91IGVuYWJsZSBsaWNlbnNpbmcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNyIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPkNoZWNrIGxpY2Vuc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI4IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+RmxhdHJhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI5IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+RXhwaXJlIGRhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMwIiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+U2Vjb25kcyBsZWZ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMSIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPlRvdGFsIHRpbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMyIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3VyIExpY2Vuc2UgaGFzIGV4cGlyZWQuIFlvdSBuZWVkIHRvIGJ1eSBuZXcgbWludXRlcyAoUGF5LXBlci1taW51dGUpIG9yIGEgdm9sdW1lIGZsYXRyYXRlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzMiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkNsaWNrIGFuZCBidXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM0IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5UaW1lIExlZnQgb24geW91ciBhY2NvdW50OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzUiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlVzZXIgTGljZW5zZSBJbmZvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzNiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+SW5mbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzciIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkNsb3NlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzOCIgbmFtZT0ibGljZW5zZS1pbmZvIj4KKyAgICA8dmFsdWU+WW91ciBsaWNlbnNlIGhhcyBleHBpcmVkLiBZb3UgbmVlZCBlaXRoZXIgdG8gYnV5IGEgbWludXRlIHBhY2thZ2UgKFBheS1wZXItbWludXRlKSBvciBhIHZvbHVtZSBmbGF0cmF0ZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM5IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5MaWNlbnNlIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91IGNhbiBlaXRoZXIgYnV5IG1pbnV0ZXMgdG8gbWFrZSBXZWItQ29uZmVyZW5jaW5nIChQYXktcGVyLW1pbnV0ZSkuJmx0O2JyLyZndDsmbHQ7YnIvJmd0OyBPciB5b3UgYnV5IGEgdm9sdW1lIGZsYXRyYXRlIGFib3V0IDMtMTIgbW9udGhzLiZsdDtici8mZ3Q7Jmx0O2JyLyZndDtTZW5kaW5nIGludml0YXRpb25zIChkaXJlY3QgbGlua3MgaW50byBDb25mZXJlbmNlIFJvb21zKSBvciBjcmVhdGluZyBjb25mZXJlbmNlIFJvb21zIHZpYSB0aGUgQ2FsZW5kYXIgd2l0aCBleHRlcm5hbCBVc2VycyBpcyBvbmx5IGFsbG93ZWQgd2l0aCBhIHZvbHVtZSBmbGF0cmF0ZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQxIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5CdXkgNjAgTWludXRlcyA5LDk5IEVVUk8gKDE2IENlbnQgcGVyIE1pbnV0ZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQyIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5CdXkgNSBob3VycyAxOSw5OSBFVVJPICg2IENlbnQgcGVyIG1pbnV0ZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQzIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5CdXkgMyBtb250aCBmb3IgMjksOTkgRVVSTyAoOSw5OSBFdXJvIHBlciBNb250aCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ0IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5CdXkgNiBtb250aCBmb3IgMzksOTkgRVVSTyAoNiw2NiBFdXJvIHBlciBtb250aCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ1IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5QYXktcGVyLW1pbnV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDYiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlZvbHVtZSBmbGF0cmF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDciIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdSBoYXZlIHVubGltaXRlZCBMaWNlbnNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0OCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91ciBsaWNlbnNlIHdpbGwgZXhwaXJlIGF0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDkiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdSBib3VnaHQgUGF5LXBlci1taW51dGUuIFlvdSBzdGlsbCBoYXZlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTAiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSBuZXcgY3JlZGl0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTEiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPldhbnQgeW91ciBvd24gU2VydmVyPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTIiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdSB3b3VsZCBsaWtlIHRvIGhhdmUgJEFQUF9OQU1FIGluc3RhbGxlZCBvbiB5b3VyIFNlcnZlciBvciBpbnRlZ3JhdGVkIGludG8geW91ciBNb29kbGUsIFN1Z2FyQ1JNLCBXZWJzaXRlIG9yIEludHJhbmV0PyBQcml6aW5ncyBzdGFydCBhdCA1MDAgRXVybyBwZXIgSW5zdGFsbGF0aW9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTMiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPk9yIHNlbmQgdXMgYSBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1NCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QW5zd2VyIHRvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTUiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPk1lc3NhZ2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1NiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+U2VuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTciIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkNsaWNrIGhlcmUgdG8gZ2V0IGNvbnRhY3QgSW5mbyBhbmQgUHJpemluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU4IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DcmVkaXQgQ2FyZCBEZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1OSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Rmlyc3RuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2MCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+TGFzdG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYxIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DcmVkaXQgQ2FyZCBUeXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2MiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+VklTQSBDYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2MyIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+TWFzdGVyQ2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjQiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkRpc2NvdmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2NSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+QW1lcmljYW4gRXhwcmVzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjYiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNyZWRpdCBDYXJkIE51bWJlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjciIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkV4cGlyYXRpb24gRGF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjgiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNhcmQgVmVyaWZpY2F0aW9uIE51bWJlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjkiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkJpbGxpbmcgQWRkcmVzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzAiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkFkZHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTcxIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTcyIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DaXR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MyIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q291bnRyeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzQiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlN0YXRlIChPbmx5IFVTKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzUiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlpJUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzYiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkFtb3VudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzciIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlN1Ym1pdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzgiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlN0ZXAgMTogJEFQUF9OQU1FIC0gUGF5bWVudCBGb3JtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3OSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+RU1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgwIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DbGljayAiQ2hlY2sgb3V0IHdpdGggUGF5cGFsIiB0byBwYXkuJmx0O2JyLyZndDsgUGF5cGFsIGFjY2VwdHMgVklTQSwgTWFzdGVyQ2FyZCwgRGlzY292ZXIgb3IgQW1lcmljYW4gRXhwcmVzcy4gJmx0O2JyLyZndDtJdCBkb2VzIG5vdCByZXF1aXJlIHRvIHNpZ24gdXAgd2l0aCBQYXlwYWwuICZsdDtici8mZ3Q7Q2l0aXplbnMgZnJvbSBHZXJtYW55IGNhbiBhbHNvIHBheSB3aXRoIGRpcmVjdCBkZWJpdCAoUGVyIExhc3RzY2hyaWZ0LUVpbnp1ZykuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+VGhhbmsgeW91IGZvciBidXlpbmcgJEFQUF9OQU1FLiAmbHQ7YnIvJmd0OyAmbHQ7YnIvJmd0OyBBcyBzb29uIGFzIHdlIHJlY2VpdmVkIHRoZSBwYXltZW50IHlvdXIgYWNjb3VudCB3aWxsIGJlIHVwZGF0ZWQuJmx0O2JyLyZndDsgWW91IHdpbGwgcmVjZWl2ZSBhbiBFTWFpbCB3aXRoIHlvdXIgaW52b2ljZSBhcyBQREYuJmx0O2JyLyZndDtZb3UgY2FuIGFsc28gY2hlY2sgY3VycmVudCBhbmQgcGFzdCB0cmFuc2FjdGlvbnMgaW4geW91ciBwcm9maWxlIHNldHRpbmdzLiZsdDtici8mZ3Q7Jmx0O2JyLyZndDsmbHQ7YnIvJmd0O1lvdSBjYW4gY2xvc2UgdGhpcyBicm93c2VyIHdpbmRvdy90YWIgbm93IGFuZCByZXR1cm4gdG8gJEFQUF9OQU1FLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODIiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlN1Ym1pdCBhbmQgQnV5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODMiIG5hbWU9InBheW1lbnQtZnJvbSI+CisgICAgPHZhbHVlPkNsaWNrIGFuZCBCdXkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4NCIgbmFtZT0icGF5bWVudC1mcm9tIj4KKyAgICA8dmFsdWU+U3RlcCAzOiAkQVBQX05BTUUgUGF5bWVudCAtIENoZWNrIG9yZGVyIGFuZCBidXkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4NSIgbmFtZT0icGF5bWVudC1mcm9tIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODYiIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPlBheW1lbnQgcmVjZWl2ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4NyIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+SGksPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4OCIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+V2UgaGF2ZSByZWNlaXZlZCB5b3VyIHBheW1lbnQuIFlvdXIgdXNlciBwcm9maWxlIGlzIHVwZGF0ZWQgbm93LiBTZWUgYXR0YWNoZWQgeW91ciBJbnZvaWNlLiBUaGUgSW52b2ljZSBhbmQgYWxsIHBhc3QgSW52b2ljZSBjYW4gYWxzbyBiZSBkb3dubG9hZGVkIGluIHlvdXIgdXNlciBwcm9maWxlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODkiIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPlRoYW5rIHlvdSBmb3IgdXNpbmcgJEFQUF9OQU1FITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTAiIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPlBheW1lbnQgUmVjZWl2ZWQgJEFQUF9OQU1FIC08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkxIiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+UGF5bWVudCBhbmQgVHJhbnNhY3Rpb24gU3RhdHVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MiIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPlRyYW5zY2F0aW9uIEhhc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkzIiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+TWludXRlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTQiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Nb250aHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk1IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+RVVSPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NiIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPlN0YXR1czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTciIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5JbnZvaWNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5OCIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTkiIG5hbWU9ImVycm9yLWxpY2Vuc2UtZmxhdCI+CisgICAgPHZhbHVlPllvdSBuZWVkIHRvIGJ1eSBhIHZvbHVtZSBmbGF0cmF0ZSB0byBiZSBhYmxlIHRvIHNlbmQgaW52aXRhdGlvbnMgb3IgY3JlYXRlIG1lZXRpbmdzIHZpYSB0aGUgY2FsZW5kYXIuIFdpdGggUGF5LXBlci1taW51dGUgaXQgaXMgb25seSBwb3NzaWJsZSBmb3IgeW91IHRvIGFjY2VzcyAkQVBQX05BTUUuIFlvdSBjYW5ub3QgYWxsb3cgM3RoIFBhcnRpZXMgdG8gYWNjZXNzIGEgTWVldGluZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwMCIgbmFtZT0iZXJyb3IgdXNlciI+CisgICAgPHZhbHVlPlRoaXMgRW1haWwgaXMgYWxyZWFkeSB1c2VkIGJ5IGFub3RoZXIgVXNlci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwMSIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlNJUC1TZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAyIiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+VGhlIENvbmZlcmVuY2UgTnVtYmVyIGFuZCBQSU4gaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIHZpYSB0aGUgT3BlblhHIFJQQy1HYXRld2F5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDMiIG5hbWU9InJvb20tYWRtaW4iPgorICAgIDx2YWx1ZT5TSVAgTnVtYmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDQiIG5hbWU9InJvb20tYWRtaW4iPgorICAgIDx2YWx1ZT5QSU48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNSIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkNsZWFyIG9iamVjdHMgb24gY3VycmVudCBzbGlkZSBvbmx5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA2IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+T25seSB0aGUgVVJMIGVudGVyZWQgaW4gdGhlIFN0YXR1cyBiYXIgaXMgc2VuZCB0byBwYXJ0aWNpcGFudHMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5NYWtlIFRlYW0tUm9vbXMgW0JyZWFrb3V0IHNlc3Npb25dPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DaG9vc2UgdXNlcnMgZm9yIGEgbmV3IFRlYW0tUm9vbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPllvdSBjYW4gY2hvb3NlIHVzZXJzIGhlcmUgYW5kIGNyZWF0ZSBhIG5ldyBDb25mZXJlbmNlIFJvb20gKCJUZWFtIFJvb20iKSBmb3IgdGhlbS4gVGhlIGNob3NlbiB1c2VycyB3aWxsIGF1dG9tYXRpY2FsbHkgc3dpdGNoIHRvIHRoZSBuZXcgVGVhbS1Sb29tIG9yIGdldCBhIG5vdGlmaWNhdGlvbi4gVGVhbS1Sb29tIE1vZGVyYXRvcnMgd2lsbCBnZXQgYWRkaXRpb25hbGx5IGEgbGlzdCBvZiBjdXJyZW50IHJvb21zIHNvIHRoYXQgdGhleSBjYW4gc3dpdGNoIHRvIGVhY2ggcm9vbSBpZiB0aGVyZSBhcmUgaXMgbmVlZCBmb3IgYSBNb2RlcmF0b3IuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Vc2VybmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDExIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VXNlcnMgZm9yIHRoZSBuZXcgVGVhbS1Sb29tOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q3JlYXRlIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DaG9vc2UgYXQgbGVhc3Qgb25lIHVzZXIgZm9yIHRoZSBUZWFtLVJvb20hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5BZGQgdXNlciB0byB0ZWFtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5SZW1vdmUgdXNlciBmcm9tIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VXNlciBpcyBUZWFtLVJvb20gTW9kZXJhdG9yIChIZSBpcyBhYmxlIHRvIG1hbmFnZSBUZWFtLVJvb21zIGFuZCB1c2VycyBvZiB0aGUgVGVhbS1Sb29tIGNhbiBhc2sgaGltIHRvIGNvbWUgaW5zaWRlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Um9vbXR5cGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPklmIHlvdSBjaGVjayAiRm9yY2UgdXNlciB0byBzd2l0Y2ggdG8gbmV3IFRlYW0tUm9vbSIgYWxsIGNob3NlbiB1c2VycyB3aWxsIGF1dG9tYXRpY2FsbHkgc3dpdGNoIHRvIHRoZSBuZXdseSBjcmVhdGVkIFRlYW0tUm9vbS4gT3RoZXJ3aXNlIHRoZXkgZ2V0IGEgbm90aWZpY2F0aW9uIHdpdGggYSBidXR0b24gdGhhdCB0aGV5ICZsdDtpJmd0O2NhbiZsdDsvaSZndDsgc3dpdGNoIHRvIHRoZSBuZXcgcm9vbS4gVGVhbS1Nb2RlcmF0b3JzIGFsd2F5cyBoYXZlIHRoZSBmcmVlIGNob2ljZSB0byBtYW5hZ2UgdGhlIFRlYW0tUm9vbXMgYW5kIHN3aXRjaCBiZXR3ZWVuIHRoZW0uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5NYW5hZ2UgVGVhbS1Sb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+WW91IGNhbiBzd2l0Y2ggaGVyZSBiZXR3ZWVuIGFsbCBUZWFtLVJvb21zIHRoYXQgeW91IGFyZSBhc3NpZ25lZCBhcyBUZWFtLVJvb20gTW9kZXJhdG9yLiBVc2VycyBpbnNpZGUgdGhlIFRlYW0tUm9vbSBjYW4gc2VuZCB5b3UgYSBtZXNzYWdlLCBmb3IgZXhhbXBsZSB0byBhc2sgeW91IHRvIGNvbWUgdG8gdGhlaXIgcm9vbSBhbmQgaGVscCB0aGVtLiBZb3UgY2FuIGFsc28gdGVybWluYXRlIHRoZSBUZWFtLVJvb20gYW5kIGFsbCBVc2VycyB3aWxsIGJlIGxvZ2dlZCBvdXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Gb3JjZSB1c2VyIHRvIHN3aXRjaCB0byBuZXcgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DcmVhdGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VXNlcnMgYXZhaWxhYmxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5BZGQgYSB1c2VyIHdpdGggdGhlIHBsdXMgZnJvbSB0aGUgbGVmdCBvciByZW1vdmUgaXQgd2l0aCB0aGUgY3Jvc3MgZnJvbSB0aGUgcmlnaHQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4xKSBUZWFtLVJvb20gc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjIpIEFkZCB1c2VycyB0byB0aGUgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb20gTmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DaGFuZ2UgdG8gdGhlIFJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlN3aXRjaCB0byB0aGlzIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVybWluYXRlIFRlYW0tUm9vbSBhbmQgbG9nb3V0IGFsbCBVc2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TmV3IFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGhlcmUgaXMgYSBuZXcgVGVhbS1Sb29tIGF2YWlsYWJsZSBmb3IgeW91LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U3dpdGNoIHRvIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVhbS1Sb29tIEFjdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPllvdSBjYW4gcmUtb3BlbiB0aGlzIHdpbmRvdyB2aWEgdGhlIG1haW4gbWVudSBpbiB0aGUgIkFjdGlvbnMiIHNlY3Rpb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5TZW5kIG1lc3NhZ2UgdG8gVGVhbS1Sb29tIE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQ0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TmV3IFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQ1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGhlcmUgaXMgYSBuZXcgVGVhbS1Sb29tIGF2YWlsYWJsZS4gWW91IGNhbiBzd2l0Y2ggdG8gdGhhdCBSb29tLiBUZWFtLVJvb21zIGFyZSBsaWtlICJXb3JrZ3JvdXBzIiB3aXRoIGFkZGl0aW9uYWxseSBwb3NzaWJpbGl0aWVzIHRvIGFzayB0aGUgVGVhbS1Sb29tIE1vZGVyYXRvciBmb3IgaGVscC4gWW91ciBUZWFtLVJvb21zIGFyZSBhbHNvIGF2YWlsYWJsZSBpbiB0aGUgIk15IE1lZXRpbmdzIiBzZWN0aW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQ2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U3dpdGNoIHRvIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQ3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q3JlYXRlZCBieTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0OCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW0tUm9vbSBuYW1lOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQ5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGhpcyBXaW5kb3cgd2lsbCBzdGF5IG9wZW4gZXZlbiBpZiB5b3UgbGVhdmUgdGhlIHJvb20hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Vc2VycyBmb3IgdGhpcyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1MSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjMpIE90aGVyIFRlYW0tUm9vbXMgdGhhdCB5b3UgY291bGQgc3dpdGNoIHRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5TZW5kIGEgbWVzc2FnZSB0byB0aGUgVGVhbS1Sb29tIE1vZGVyYXRvcnMuIEZvciBleGFtcGxlIGlmIHlvdSBuZWVkIGhlbHAgaW4gTW9kZXJhdGluZyB0aGUgUm9vbSBvciBpZiB5b3UgaGF2ZSBhIHF1ZXN0aW9uIGFib3V0IHRoZSB0b3BpYy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1MyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlNlbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1NCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjIpIFVzZXJzIHRoYXQgYXJlIGludml0ZWQgdG8gdGhpcyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1NSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPklzIFRlYW0tUm9vbSBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1NiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoZXNlIGFyZSBhbGwgdXNlcnMgdGhhdCB0aGUgbW9kZXJhdG9yIGhhcyBpbnZpdGVkIHRvIHRoaXMgVGVhbS1Sb29tLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGhlcmUgaXMgbm8gVGVhbS1Nb2RlcmF0b3IgbG9nZ2VkIGluIGF0IHRoZSBtb21lbnQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5QbGVhc2UgZW50ZXIgYSBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5QbGVhc2UgaGVscCB1cywgd2UgaGF2ZSBhIHByb2JsZW0gaW4gb3VyIFRlYW0tUm9vbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2MCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkEgdXNlciBmcm9tIGEgVGVhbS1Sb29tIHJlcXVlc3RzIHlvdXIgaGVscC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2MSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW0tUm9vbSByZXF1ZXN0IGZvciBoZWxwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5NZXNzYWdlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+RnJvbTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2NCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPllvdSBhcmUgY3VycmVudGx5IG5vdCBpbiBhbnkgVGVhbS1Sb29tLiBCdXQgeW91IGNhbiBzd2l0Y2ggaGVyZSB0byBhbGwgVGVhbS1Sb29tcyB0aGF0IHlvdSBoYXZlIGFjY2VzcyB0by48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2NSIgbmFtZT0iYmFja3VwQ29udGVudCI+CisgICAgPHZhbHVlPkJhY2t1cCB0aGUgU3lzdGVtLiBUaGUgQmFja3VwIGluY2x1ZGVzIGFsbCBVc2VyIGdlbmVyYXRlZCBkYXRhLiBUaGUgY29uZmlndXJhdGlvbiBpcyBub3QgaW5jbHVkZWQgYXMgd2VsbCBhcyB0aGUgbGFuZ3VhZ2UgbGFiZWxzLiBCZWNhdXNlIHRob3NlIHZhbHVlcyBhcmUgaW1wb3J0ZWQgd2l0aCB0aGUgU3lzdGVtIEluc3RhbGxlci4gVG8gdXBkYXRlIHlvdXIgU3lzdGVtLCBleHBvcnQgeW91ciBvbGQgc3lzdGVtICgxKSByZS1pbnN0YWxsIGludG8gYSBuZXcgZGF0YWJhc2UgdGhlIG5ldyBwYWNrYWdlICgyKSBhbmQgaW1wb3J0IHRoZSBCYWNrdXAgZmlsZSBhZ2FpbiAoMykuIFRoZSBCYWNrdXAgc2hvdWxkIGJlIGltcG9ydGVkIGJlZm9yZSBnZW5lcmF0aW5nIGRhdGEgaW4gdGhlIG5ld2x5IGluc3RhbGxlZCBzeXN0ZW0uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjYiIG5hbWU9ImJhY2t1cENvbnRlbnQiPgorICAgIDx2YWx1ZT5TeXN0ZW0gQmFja3VwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjciIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPkFsbG93IHVzZXIgdG8gc2hhcmUgU2NyZWVuL1JlY29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY4IiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT5EZW55IHVzZXIgdG8gc2hhcmUgU2NyZWVuL1JlY29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY5IiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT5Vc2VyIGlzIE1vZGVyYXRvciwgaGUgY2FuIGRvIGFueXRoaW5nITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDcwIiBuYW1lPSJhcHBseSBmb3Igc2NyZWVuL3JlY29yZGluZyI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gc2hhcmUvcmVjb3JkIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3MSIgbmFtZT0ibW9kZXJhdGlvbiBtaW5pIGljb25zIj4KKyAgICA8dmFsdWU+WW91IGFyZSBhbGxvd2VkIHRvIHNoYXJlL3JlY29yZCBzY3JlZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3MiIgbmFtZT0ibW9kZXJhdGlvbiBtaW5pIGljb25zIj4KKyAgICA8dmFsdWU+QXBwbHkgZm9yIHJpZ2h0IHRvIHNoYXJlL3JlY29yZCBzY3JlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzMiIG5hbWU9Im1vZGVyYXRpb24gbWluaSBpY29ucyBjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+QWxsb3cvRGVueSByaWdodCB0byBzaGFyZS9yZWNvcmQgc2NyZWVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc0IiBuYW1lPSJzb3VuZCBpY29uIj4KKyAgICA8dmFsdWU+VHVybiBzb3VuZCBvZmY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3NSIgbmFtZT0ic291bmQgaWNvbiI+CisgICAgPHZhbHVlPlR1cm4gc291bmQgb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3NiIgbmFtZT0icm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPkF1ZGlvIG9ubHkgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc3IiBuYW1lPSJyb29tIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+VHVybiB0aGlzIEZsYWcgb24gYW5kIHRoZSB1c2VycyB3aWxsIGhhdmUgb25seSB0aGUgQXVkaW8tT3B0aW9uIGFuZCBubyBWaWRlbyBpbiBhIGNvbmZlcmVuY2Ugcm9vbS4gVGhpcyBjYW4gYnkgZ29vZCB0byBzYXZlIGJhbmR3aWR0aC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3OCIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QWxsb3cgUmVtb3RlIENvbnRyb2wgKER1cmluZyBTY3JlZW4gU2hhcmluZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3OSIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+RGVueSBSZW1vdGUgQ29udHJvbCAoRHVyaW5nIFNjcmVlbiBTaGFyaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgwIiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5BcHBseSBmb3IgcmlnaHQgdG8gUmVtb3RlIENvbnRyb2wgU2NyZWVuIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODEiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPllvdSBhcmUgYWxsb3dlZCB0byBSZW1vdGUgQ29udHJvbCBTY3JlZW4gKER1cmluZyBTY3JlZW4gU2hhcmluZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MiIgbmFtZT0iYXBwbHkgZm9yIHJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0byByZW1vdGUgY29udHJvbCBzY3JlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODMiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlVzZXIgaXMgTW9kZXJhdG9yLCBoZSBjYW4gZG8gYW55dGhpbmchIFtSZW1vdGUgRGVza3RvcCBDb250cm9sXTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg0IiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5BbGxvdy9EZW55IHJpZ2h0IHRvIFJlbW90ZSBDb250cm9sIFNjcmVlbiAoRHVyaW5nIFNjcmVlbiBTaGFyaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg1IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT4xKSBZb3VyIFBDIHRvIHJlbW90ZSBQQzogVG8gY29weSBhbmQgcGFzdGUgdGV4dCBmcm9tIHlvdXIgY2xpcGJvYXJkIGludG8gdGhlIHJlbW90ZSBjb250cm9sbGVkIHNjcmVlbiwgY2xpY2sgb24gdGhlIHNjcmVlbiwgdGhlbiByaWdodCBjbGljayBpbiB0aGUgdGV4dCBmaWVsZCBhbmQgY2hvb3NlICJJbnNlcnQiIGZyb20gdGhlIGNvbnRleHQgKHJpZ2h0IGNsaWNrKSBtZW51LiZsdDtici8mZ3Q7Jmx0O2JyLyZndDsyKSBGcm9tIHJlbW90ZSBQQyB0byB5b3VyIFBDOiBUbyBjb3B5IHRleHQgZnJvbSB0aGUgcmVtb3RlIFBDIHRvIHlvdXIgUEMncyBjbGlwYm9hcmQsIGhpZ2hsaWdodCB0aGUgdGV4dCB3aXRoIHRoZSBtb3VzZSBvbiB0aGUgcmVtb3RlIHNjcmVlbiwgdGhlbiByaWdodC1jbGljayBvbiB0aGUgcmVtb3RlIHNjcmVlbiBhbmQgY2hvb3NlICZsdDtpJmd0O0NvcHkgaGlnaGxpZ2h0ZWQgdGV4dCZsdDsvaSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4NiIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+Q29weSBhbmQgUGFzdGUgdGV4dCBmcm9tIHlvdXIgUEMgdG8gcmVtb3RlIFBDIGFuZCB2aWNlLXZlcnNhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg3IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Db3B5IGhpZ2hsaWdodGVkIHRleHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4OCIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+SG93IHRvIGNvcHkgbiBwYXN0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg5IiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5RdWFsaXR5IG9mIHRoZSBTY3JlZW5TaGFyZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5MCIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+VmVyeSBoaWdoIFF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5MSIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+SGlnaCBRdWFsaXR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTIiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPk1lZGl1bSBRdWFsaXR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTMiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPkxvdyBRdWFsaXR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTQiIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+ZW5fVVM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NSIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5kZV9ERTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk2IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPktleWJvYXJkOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk3IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPkNsb3NlIFdlYmluYXIhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTgiIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+VGhlIFdlYmluYXIgaXMgYWxyZWFkeSBjbG9zZWQsIHlvdSB3aWxsIGJlIHJlZGlyZWN0ZWQgdG8gc29tZSBpbnRlcmVzdGluZyBvZmZlcmluZ3MgaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5OSIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5DbG9zZSBSb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDAiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+RXhpdCBVUkw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMSIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5Sb29tIHRlcm1pbmF0aW9uIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDIiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+SWYgdGhlIHJvb20gaXMgY2xvc2VkIHVzZXJzIHdpbGwgYmUgcmVkaXJlY3RlZCB0byB0aGUgZXhpdCBVUkwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDMiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+TGRhcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA0IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPklEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDUiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA2IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkNvbmZpZyBGaWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDciIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+TGRhcCBDb25maWc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwOCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDkiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+RW5hYmxlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEwIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkluc2VydGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTEiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+SW5zZXJ0ZWQgYnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMiIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5VcGRhdGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTMiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+VXBkYXRlZCBieTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE0IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPlRoZSBjb25maWcgZmlsZXMgYXJlIGluIHRoZSBmb2xkZXIgd2ViYXBwcy9vcGVubWVldGluZ3MvY29uZi4gWW91IG5lZWQgdG8gbWFudWFsbHkgdXBsb2FkIHRoZSBmaWxlcyB0byB0aGlzIGZvbGRlci4gQ2hhbmdlcyB0byB0aGUgY29uZmlnIGZpbGUgYXJlIGltbWVkaWF0ZWx5IG9ubGluZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5Db25maWcgZmlsZSBuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTYiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+SWYgeW91IGVuYWJsZSAiQWRkIERvbWFpbiB0byB1c2VybmFtZSIgdGhlIHZhbHVlIG9mIHRoZSBmaWVsZCAiZG9tYWluIiBpcyBhZGRlZCB0byBlYWNoIGxvZ2luIHRoYXQgdGhlIHVzZXIgZW50ZXJzIGluIHRoZSBsb2dpbiBib3guIFRoaXMgaXMgdXNlZnVsIGlmIHRoZSBMb2dpbiBpbiB0aGUgTGRhcCBpcyBzdG9yZWQgaW5jbHVkaW5nIHRoZSBkb21haW4gbmFtZS4gRXhhbXBsZTogVXNlciBlbnRlcnMgImhhbnMiIGRvbWFpbiBpcyBzcGVjaWZpZWQgYXMgImxvY2FsaG9zdC5jb20iLCBsb2dpbiB0aGF0IGlzIHZlcmlmaWVkIGFnYWluc3QgTGRhcCBpczogaGFuc0Bsb2NhbGhvc3QuY29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTciIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+QWRkIERvbWFpbiB0byB1c2VybmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE4IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkRvbWFpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE5IiBuYW1lPSJyZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPkluc2VydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIwIiBuYW1lPSJyZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPkNvcHkgaGlnaGxpZ2h0ZWQgdGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIxIiBuYW1lPSJyZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPlJlbW90ZSBDbGlwYm9hcmQgVGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIyIiBuYW1lPSJyZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPlNob3cgcmVtb3RlIENsaXBib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIzIiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5EbyBub3Qgc2hvdyBhZ2FpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI0IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Db3B5IHRleHQgaGVyZSAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNSIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgdGhlIHJpZ2h0IHRvIHJlbW90ZSBjb250cm9sIChvciB0aGUgbW9kZXJhdGlvbikgdG8gY29weSBhbmQgcGFzdGUgdGV4dCB0byBvciBmcm9tIHRoZSByZW1vdGUgc2NyZWVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI2IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5FZGl0IGRlZmF1bHQgc2V0dGluZ3MgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjciIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkRvIG5vdCBzaG93IGluZm8gYm94IGluIFJlbW90ZSBDb250cm9sIGFib3V0IENvcHkgYW5kIFBhc3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjgiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+U2F2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI5IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPlJlbW92ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMwIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMxIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+SW52aXRlIHVzZXIgdG8gY29uZmVyZW5jZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzIiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5DaG9vc2UgYSBjb25mZXJlbmNlIHJvb20uIFRoZSBpbnZpdGVkIHVzZXIgd2lsbCBnZXQgYSBtZXNzYWdlIHdpdGggeW91ciBuYW1lIGFuZCBhIGxpbmsgdG8gdGhlIHJvb20uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzMiIG5hbWU9ImNoYXQgdXNlciI+CisgICAgPHZhbHVlPkNvbm5lY3RlZCBzaW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzNCIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkVudGVyIHJvb20gYWZ0ZXIgc2VuZGluZyBpbnZpdGF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzUiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5JbnZpdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzNiIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPk1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzNyIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gaW52aXRlIHlvdSB0byB0aGUgY29uZmVyZW5jZSByb29tOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM4IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+SW52aXRlIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzOSIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPlNlbmQgSW52aXRhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQwIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+ZGlkICZsdDtiJmd0O25vdCZsdDsvYiZndDsgYWNjZXB0IHlvdXIgaW52aXRhdGlvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0MSIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkFjY2VwdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQyIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+RGVueTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQzIiBuYW1lPSJ1c2VyIHByb2ZpbGUiPgorICAgIDx2YWx1ZT5UaW1lem9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ0IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5FdmVudCBEZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDUiIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0NiIgbmFtZT0iYXBwb2ludG1lbnQgbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+RGVzY3JpcHRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0NyIgbmFtZT0iYXBwb2ludG1lbnQgbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+Q3JlYXRlZCBieTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ4IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+VGltZVpvbmUgTWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ5IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+Q2hlY2sgIlRpbWVab25lIE1lc3NhZ2UiIHRvIGdpdmUgdXNlcnMgYSBtZXNzYWdlIG5leHQgdGltZSB0aGV5IGxvZ2luIHRvIHVwZGF0ZSB0aGVpciBwcm9maWxlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUwIiBuYW1lPSJ0aW1lIHpvbmUgdXBkYXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5QbGVhc2UgY2hlY2sgdGhlIHRpbWUgem9uZSBpbiB5b3VyIHVzZXIgcHJvZmlsZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MSIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TmV3ICRBUFBfTkFNRSBjb25mZXJlbmNlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUyIiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EZXRhaWxzOiZsdDtici8mZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTMiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPlN0YXJ0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU0IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5FbmQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTUiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkNoYW5nZWQgJEFQUF9OQU1FIGNvbmZlcmVuY2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTYiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPk9yZ2FuaXplcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NyIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2FuY2VsZWQgJEFQUF9OQU1FIGNvbmZlcmVuY2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTgiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSBjb25mZXJlbmNlIFJlbWluZGVyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU5IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+Q29tbXVuaXR5IHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjAiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TaG93IGNvbnRhY3QgZGF0YSB0byBldmVyeWJvZHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkFkZCBmaWVsZHMgb2YgaW50ZXJlc3QgdGhhdCB5b3Ugb2ZmZXIgb3IgdGhhdCB5b3UgYXJlIHNlYXJjaGluZyB0byBmaW5kIGludGVyZXN0aW5nIHBhcnRuZXJzIGZvciBhIGNvbmZlcmVuY2UuIENvbW1hIHNlcGFyYXRlIHRoZSB0ZXJtcyAoZm9yIGV4YW1wbGU6IE1lZGljYWwgU2VydmljZSwgSGVhbHRoIGFzc3VyYW5jZSwgLi4uKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYyIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+TXkgb2ZmZXJpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjMiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NeSBpbnRlcmVzdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2NCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2NSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlRpbWV6b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjYiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5GaWVsZHMgb2YgaW50ZXJlc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2NyIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkNvbnRhY3QgaW5mb3JtYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2OCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlNob3cgY29udGFjdCBkYXRhIHRvIGNvbnRhY3RzIG9ubHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2OSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlNob3cgY29udGFjdCBkYXRhIHRvIG5vYm9keTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTcwIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+TXkgUHJvZmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTcxIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+RWRpdCBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTcyIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2VhcmNoIHVzZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzMiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5XYXRjaCB5b3VyIHByb2ZpbGUgbGlrZSBvdGhlciBzZWUgeW91PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzQiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5FZGl0IHlvdXIgc2V0dGluZ3MsIGFkZCB5b3VyIGludGVyZXN0cyB0byBiZSBmb3VuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc1IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2VhcmNoIGZvciBvdGhlciB1c2VycyBhbmQgZXh0ZW5kIHlvdXIgbmV0d29yazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc2IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlNlYXJjaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc3IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlVzZXIgb2ZmZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzgiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+VXNlciBsb29rcyBmb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3OSIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5GcmVldGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgwIiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MSIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5UaW1lem9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgyIiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPk9mZmVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgzIiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlNlYXJjaHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5TZWFyY2hyZXN1bHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NSIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5BY3Rpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODYiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+QWRkIHRvIGNvbnRhY3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODciIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+U2VuZCBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODgiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+Q29udGFjdHMgYW5kIE1lc3NhZ2VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODkiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+UGVuZGluZyBjb250YWN0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkwIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+QWNjZXB0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTEiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5EZW55PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTIiIG5hbWU9InVzZXIgY29udGFjdCByZXF1ZXN0Ij4KKyAgICA8dmFsdWU+SGksPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTMiIG5hbWU9InVzZXIgY29udGFjdCByZXF1ZXN0Ij4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0byBhZGQgeW91IGFzIGNvbnRhY3QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTQiIG5hbWU9InVzZXIgY29udGFjdCByZXF1ZXN0Ij4KKyAgICA8dmFsdWU+Q2hlY2sgeW91ciBjb250YWN0IHJlcXVlc3RzIGluICRBUFBfTkFNRSBvciBjbGljayBvbiB0aG9zZSBsaW5rcyB0byBhY2NlcHQgb3IgZGVueSB0aGUgcmVxdWVzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk1IiBuYW1lPSJhZGQgdXNlciBjb250YWN0Ij4KKyAgICA8dmFsdWU+VGhpcyB1c2VyIGlzIGFscmVhZHkgaW4geW91ciBjb250YWN0IGxpc3Qgb3IgaGFzIHJlY2VpdmVkIGFuIGludml0YXRpb24gdG8geW91ciBjb250YWN0IGxpc3QgdGhhdCBpcyBub3QgYW5zd2VyZWQgeWV0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk2IiBuYW1lPSJ1c2VyIGNvbnRhY3QgbWFpbCI+CisgICAgPHZhbHVlPllvdXIgY29udGFjdCBsaXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTciIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5FZGl0IHlvdXIgY29udGFjdCBhbmQgbWVzc2FnZXMsJmx0O2JyLyZndDsgbWFuYWdlIHlvdXIgcGVuZGluZyBjb250YWN0cyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5OCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPmNvbmZpcm1lZCB5b3UgYXMgY29udGFjdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5OSIgbmFtZT0iY2hhdCBpbmZvIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMCIgbmFtZT0iY2hhdCBsb2cgaWNvbiI+CisgICAgPHZhbHVlPlNob3cgLyBDb3B5IGNoYXQgbG9nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDEiIG5hbWU9ImNoYXQgbG9nIHdpbmRvdyI+CisgICAgPHZhbHVlPkNoYXQgTG9nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkZyb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3ViamVjdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA2IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5NZXNzYWdlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA3IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5OZXcgTWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DbGljayB0byB3cml0ZSBhIG5ldyBtZXNzYWdlIHRvIGFueSBvZiB5b3VyIGNvbnRhY3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPldyaXRlIG5ldyBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTAiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjExIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TdWJqZWN0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjEyIiBuYW1lPSJ3aGl0ZWJvYXJkIGZ1bGwtZml0Ij4KKyAgICA8dmFsdWU+RW5hYmxlIGZ1bGwgZml0IGFuZCB0aGUgd2hpdGVib2FyZCB3aWxsIHpvb20gdGhlIHdob2xlIHdoaXRlYm9hcmQgc28gdGhhdCBhbGwmbHQ7YnIvJmd0O2RvY3VtZW50cyBhcmUgdmlzaWJsZSBhY2NvcmRpbmcgdG8gZWFjaCBwYXJ0aWNpcGFudHMgc2NyZWVuIHJlc29sdXRpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTMiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPktpY2sgdXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE0IiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IGtpY2sgeW91cnNlbGYgb3V0IG9mIHRoZSBjb25mZXJlbmNlIHJvb20hIElmIHlvdSB3YW50IHRvIGxlYXZlIGl0IGNsb3NlIHRoZSBicm93c2VyIG9yIHVzZSB0aGUgZXhpdCBidXR0b24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTUiIG5hbWU9ImtpY2stdXNlciI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkaXNjb25uZWN0IHRoaXMgdXNlciBmcm9tIHRoaXMgY29uZmVyZW5jZSByb29tPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE2IiBuYW1lPSJraWNrLXVzZXIiPgorICAgIDx2YWx1ZT5Db25maXJtIGFjdGlvbiAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNyIgbmFtZT0ia2ljay11c2VyIj4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBraWNrIGEgU3VwZXItTW9kZXJhdG9yIG91dCBvZiBhIHJvb20hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkJvb2sgY29uZmVyZW5jZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlN0YXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjAiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkVuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgYW4gb3B0aW9uYWwgcmVxdWVzdCBmb3IgbWVldGluZyB0byB0aGUgbWVzc2FnZSBhbmQgY3JlYXRlIGEgY29uZmVyZW5jZSByb29tLiBUaGUgRXZlbnQgaXMgdGhlbiBjb3BpZWQgaW4gdGhlIGNhbGVuZGFyIG9mIGV2ZXJ5IHBhcnRpY2lwYW50LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5JbmJveDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRyYXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoaXMgaXMgeW91ISBZb3UgY2Fubm90IGFkZCB5b3Vyc2VsZiBhcyB5b3VyIG93biBjb250YWN0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI2IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VGhlIHVzZXIgaXMgYWxyZWFkeSBkZW5pZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjciIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5UaGUgdXNlciBpcyBhbHJlYWR5IGFwcHJvdmVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI4IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VGhpcyB1c2VyIGNvbnRhY3QgaGFzaCBpcyBpbnZhbGlkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI5IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VXNlciBhZGRlZCB0byBjb250YWN0IGxpc3QhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzAiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Vc2VyIGRlbmllZCBhcyBjb250YWN0IGFuZCByZW1vdmVkIGZyb20gcGVuZGluZyBjb250YWN0IGxpc3QhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzEiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBzdWNoIGNvbnRhY3QhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzIiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Xb3VsZCB5b3UgcmVhbGx5IGxpa2UgdG8gcmVtb3ZlIHRoYXQgY29udGFjdD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkNvbmZpcm0gY29udGFjdCByZW1vdmFsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzQiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5EZWxldGUgY29udGFjdCBmcm9tIGxpc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNSIgbmFtZT0idXNlciBwcm9maWxlIj4KKyAgICA8dmFsdWU+VXNlciBQcm9maWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzYiIG5hbWU9InVzZXIgcHJvZmlsZSI+CisgICAgPHZhbHVlPlNob3cgdXNlciBwcm9maWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzciIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1lc3NhZ2VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlYXJjaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWxlY3QgYWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDAiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbGVjdCBub25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbGVjdCB1bnJlYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0MiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VsZWN0IHJlYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0MyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TW92ZSB0byBmb2xkZXIgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZCBuZXcgZm9sZGVyIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EZWxldGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGVsZXRlZCBtYWlscyBhcmUgc3RpbGwgaW4geW91ciB0cmFzaCBmb2xkZXIhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDciIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1hcmsgdW5yZWFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1hcmsgcmVhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BbnN3ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QW5zd2VyIGV2ZXJ5Ym9keTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Gb3J3YXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFjdGlvbnMgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTMiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5TZW5kIHByaXZhdGUgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Ob3RoaW5nIHNlbGVjdGVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Nb3ZlIHRvIEluYm94PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTYiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRlbGV0ZSAoZmluYWwpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTciIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoaXMgYWN0aW9uIGNhbm5vdCBiZSB1bmRvbmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZCBmb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1OSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIGZvbGRlcnMgYW5kIG9yZ2FuaXplIHlvdXIgbWVzc2FnZXMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjAiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZCBmb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSBmb2xkZXIiPgorICAgIDx2YWx1ZT5EZWxldGUgZm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSBmb2xkZXIiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IGRlbGV0ZSB0aGlzIGZvbGRlciwgdGhlcmUgYXJlIHN0aWxsIG1lc3NhZ2VzIGluc2lkZSEgRGVsZXRlIGZpcnN0IHRoZSBtZXNzYWdlcyBvciBtb3ZlIHRoZW0gdG8gYW5vdGhlciBmb2xkZXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSBmb2xkZXIiPgorICAgIDx2YWx1ZT5FZGl0IG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBmb2xkZXI/IFRoZXJlIGlzIG5vIHdheSB0byB1bmRvIHRoYXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjYiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Zb3VyIHJlcXVlc3Qgd2FzIHNlbmQgdG8gdGhlIHVzZXIuIFRoZSB1c2VyIHdpbGwgcmVjZWl2ZSBhIG5vdGlmaWNhdGlvbiB0byBhY2NlcHQgb3IgZGVueSB5b3VyIHJlcXVlc3QuIE9ubHkgYWNjZXB0ZWQgcmVxdWVzdHMgYXJlIGluIHlvdXIgY29udGFjdCBsaXN0IG9mIGNvdXJzZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPk1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2OCIgbmFtZT0idXNlciB2aWV3IHByb2ZpbGUiPgorICAgIDx2YWx1ZT5UaGUgdXNlciBkb2VzIG5vdCBzaGFyZSBoaXMgcGVyc29uYWwgY29udGFjdCBkYXRhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY5IiBuYW1lPSJ1c2VyIHZpZXcgcHJvZmlsZSI+CisgICAgPHZhbHVlPlRoZSB1c2VyIGRvZXMgc2hhcmUgaGlzIHBlcnNvbmFsIGNvbnRhY3QgZGF0YSBvbmx5IHRvIGNvbnRhY3RzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjcwIiBuYW1lPSJ1c2VyIHZpZXcgcHJvZmlsZSI+CisgICAgPHZhbHVlPkFkZHJlc3MgJmFtcDsgUGhvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3MSIgbmFtZT0iZXJyb3IgY29kZSI+CisgICAgPHZhbHVlPllvdSBpbnZpdGF0aW9uIGNvZGUgaXMgbm8gdmFsaWQsIHRoZSBjb2RlIGlzIG9ubHkgdmFsaWQgZHVyaW5nIHRoaXMgc3BlY2lmaWMgZGF0ZSBhbmQgdGltZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3MiIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPlRoaXMgZXZlbnQgaXMgY29ubmVjdGVkIHRvIHNldmVyYWwgY2FsZW5kYXJzIG9mIG90aGVyIHVzZXJzLiBZb3VyIGNoYW5nZSB3aWxsIGFsc28gdXBkYXRlIHRoZWlyIGNhbGVuZGFyLiBXb3VsZCB5b3UgcmVhbGx5IGxpa2UgdG8gdXBkYXRlIHRoZSBldmVudD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3MyIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPkNvbmZpcm0gdXBkYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzQiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5BbGxvdyBjb250YWN0IHRvIHNlZSBteSBjYWxlbmRhciAodmlldyBvbmx5KTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc1IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+RG8gbm90IHNoYXJlIGNhbGVuZGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzYiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5DYWxlbmRhciBvZiBjb250YWN0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+WW91ciBjb250YWN0cyBuZWVkIHRvIGFwcHJvdmUgeW91IGZpcnN0IHRvIGJlIGFibGUgdG8gc2VlIHRoZWlyIGNhbGVuZGFyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc4IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBzdG9yZSBvciBkZWxldGUgZXZlbnRzIGZyb20gb3RoZXIgY2FsZW5kYXJzIHRoZW4geW91ciBvd24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzkiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5TaG93IG15IG93biBjYWxlbmRhciBhZ2FpbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4MCIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPlRoaXMgZXZlbnQgaXMgY29ubmVjdGVkIHRvIHNldmVyYWwgY2FsZW5kYXJzIG9mIG90aGVyIHVzZXJzLiBZb3VyIGFjdGlvbiB3aWxsIGFsc28gZGVsZXRlIHRoZSBldmVudCBmcm9tIHRoZWlyIGNhbGVuZGFyLiBXb3VsZCB5b3UgcmVhbGx5IGxpa2UgdG8gZGVsZXRlIHRoZSBldmVudD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4MSIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPkNvbmZpcm0gYWN0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODIiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5FbnRlciByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODMiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5BY2Nlc3MgdGhlIGNvbmZlcmVuY2Ugcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBhIGNvbmZlcmVuY2Ugcm9vbSBhbmQgZXZlbnQgYm9va2VkIHdpdGggdGhpcyBwcml2YXRlIG1lc3NhZ2UuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODUiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0byBzdG9yZSB0aGUgZXZlbnQgZmlyc3QhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODYiIG5hbWU9ImFjY2VzcyByb29tcyBlcnJvciI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIHN1Y2ggcm9vbSBhdmFpbGFibGUuIFRoZSBldmVudCBpbiB0aGUgY2FsZW5kYXIgYW5kIGNvbm5lY3RlZCByb29tIGlzIGFscmVhZHkgZGVsZXRlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NyIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+Q2hvb3NlIHlvdXIgbmlja25hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4OCIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+Rmlyc3RuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODkiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPkxhc3RuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTAiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPkVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTEiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPk9rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTIiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPk1pbmltdW0gbGVuZ3RoIDQgY2hhcnMhIEZvciBib3RoLCBmaXJzdG5hbWUgYW5kIGxhc3RuYW1lLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkzIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5QbGVhc2UgZW50ZXIgYSB2YWxpZCBlbWFpbCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5NCIgbmFtZT0iYXV0aCBmcm9tIj4KKyAgICA8dmFsdWU+RmFjZWJvb2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5NSIgbmFtZT0iYXV0aCBmb3JtIj4KKyAgICA8dmFsdWU+TG9naW4gd2l0aCB5b3VyIEZhY2Vib29rIGFjY291bnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5NiIgbmFtZT0idmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+TWVtYmVyIHNpbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTciIG5hbWU9ImRpcmVjdCBsb2dpbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+WW91J3ZlIGxvZ2dlZCB3aXRoIHlvdXIgRmFjZWJvb2sgYWNjb3VudC4gWW91IHNob3VsZCB1cGRhdGUgeW91ciBwcm9maWxlIHdpdGggdGhlIGNvcnJlY3QgZW1haWwuIE90aGVyd2lzZSB5b3Ugd2lsbCBub3QgcmVjZWl2ZSBpbnZpdGF0aW9ucyBhbmQgcHJpdmF0ZSBtZXNzYWdlcyBmcm9tIG90aGVyIHVzZXJzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk4IiBuYW1lPSJkaXJlY3QgbG9naW4gbWVzc2FnZSBoZWFkZXIiPgorICAgIDx2YWx1ZT5NZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTkiIG5hbWU9ImRpcmVjdCBsb2dpbiBtZXNzYWdlIGNoZWNrYm94IGNvbnRyb2wiPgorICAgIDx2YWx1ZT5EbyBub3Qgc2hvdyB1cGRhdGUgcHJvZmlsZSBtZXNzYWdlIGFnYWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDAiIG5hbWU9InByb2ZpbGUgc2V0dGluZ3MgYnV0dG9uIj4KKyAgICA8dmFsdWU+bW9yZSBkaXNwbGF5IG9wdGlvbnMgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk5ldyBwcml2YXRlIG1lc3NhZ2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkNsaWNrIGhlcmUgdG8gdmlzaXQgeW91ciBwcm9maWxlIHRvIHNlZSB0aGUgZnVsbCBtZXNzYWdlIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5SZXBseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA0IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5Sb29tcyBhbmQgY2hhdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwNSIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+TXkgcm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwNiIgbmFtZT0ibXkgcm9vbXMiPgorICAgIDx2YWx1ZT5NeSBjb25mZXJlbmNlIHJvb20gKGZvciAxLTE2IHVzZXJzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA3IiBuYW1lPSJteSByb29tcyI+CisgICAgPHZhbHVlPk15IHdlYmluYXIgcm9vbSAoZm9yIDEtMTIwIHVzZXJzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA4IiBuYW1lPSJyb29tIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+T3duZXIgSWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwOSIgbmFtZT0ibG9naW4gZXJyb3IiPgorICAgIDx2YWx1ZT5QbGVhc2UgZW50ZXIgYSBwYXNzd29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzEwIiBuYW1lPSJsb2dpbiBlcnJvciI+CisgICAgPHZhbHVlPllvdSBuZWVkIGFuIGFjY291bnQgd2l0aCBVc2VyLUxldmVsIFVzZXIsIE1vZGVyYXRvciBvciBBZG1pbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzExIiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+V2ViLVNlcnZpY2UgKG9ubHkgYWNjZXNzIHZpYSBTT0FQKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzEyIiBuYW1lPSJ1cGxvYWQgZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkRvIGRpcmVjdGx5IGxvYWQgdG8gd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzEzIiBuYW1lPSJ3aGl0ZWJvYXJkIGNsb3NlIGNvbmZpcm1hdGlvbiI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byByZW1vdmUgdGhpcyB3aGl0ZWJvYXJkPyBUaGlzIGFjdGlvbiBjYW5ub3QgYmUgdW5kb25lITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE0IiBuYW1lPSJ3aGl0ZWJvYXJkIGxvYWQgV01MIj4KKyAgICA8dmFsdWU+TG9hZCB0byB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTUiIG5hbWU9InJlY29yZGluZyBmbGFnIj4KKyAgICA8dmFsdWU+RG8gbm90IGZvcmdldCBzdGFydCByZWNvcmRpbmchIE9uZSB1c2VyIHBlciByb29tIGFsd2F5cyBuZWVkcyB0byBzdGFydCBpdCB0byBoYXZlIHRoZSByZWNvcmRpbmcgYWZ0ZXJ3YXJkcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxNiIgbmFtZT0icmVjb3JkaW5nIGZsYWciPgorICAgIDx2YWx1ZT5TdGFydCBSZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxNyIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT5BcnJvdzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE4IiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPkNpcmNsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE5IiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPkxpbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyMCIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT5TcXVhcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyMSIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT5UcmlhbmdsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIyIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+VGV4dC9Ob3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjMiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5DbGlwYXJ0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI0IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+RHJhdyBGcmVlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjUiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5TZWxlY3QvTW92ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI2IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+RHJhdyBTaGFwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI3IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+Q3V0L01vdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyOCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlpvb20gSW4vT3V0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjkiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5QcmludDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMwIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+VW5kbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMxIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+VHJhc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMiIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkFkZCBHcmlkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzMiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5TaGFyZSBGaWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzQiIG5hbWU9Imljb24gc3VibWVudSI+CisgICAgPHZhbHVlPlNlbGVjdCBTaGFwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM1IiBuYW1lPSJpY29uIHN1Ym1lbnUiPgorICAgIDx2YWx1ZT5TZWxlY3QgQ2xpcGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM2IiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+Q29weTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM3IiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+Q3V0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzgiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5QYXN0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM5IiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+RGVsZXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDAiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoZSBjb21wbGV0ZSBjb250ZW50IG9uIHRoZSB3aGl0ZWJvYXJkPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQxIiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+TG9hZCBkaXJlY3RseSB0byB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDIiIG5hbWU9ImF0dGVuZGVlcyI+CisgICAgPHZhbHVlPkF0dGVuZGVlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQzIiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5BdHRlbmRlZSBNYW5hZ2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDQiIG5hbWU9ImF0ZW5kZWUgbWFuYWdlciI+CisgICAgPHZhbHVlPlByZXNlbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NSIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+UmVtb3RlIENvbnRyb2xsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDYiIG5hbWU9ImF0ZW5kZWUgbWFuYWdlciI+CisgICAgPHZhbHVlPkVqZWN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDciIG5hbWU9ImNoYXQiPgorICAgIDx2YWx1ZT5DaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDgiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPkludml0ZSBBdHRlbmRlZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0OSIgbmFtZT0iaW52aXRlIGF0dGVuZGVlIj4KKyAgICA8dmFsdWU+QnkgRW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1MCIgbmFtZT0iaW52aXRlIGF0dGVuZGVlIj4KKyAgICA8dmFsdWU+VXNlciBpcyBtb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1MSIgbmFtZT0iaW52aXRlIGF0dGVuZGVlIj4KKyAgICA8dmFsdWU+VXNlciBoYXMgd2ViY2FtIHN3aXRjaGVkIG9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTIiIG5hbWU9ImZpbGxfb3B0aW9uIj4KKyAgICA8dmFsdWU+RGVhY3RpdmF0ZSBzaGFwZSBmaWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTMiIG5hbWU9ImZpbGxfb3B0aW9uIj4KKyAgICA8dmFsdWU+QWN0aXZhdGUgc2hhcGUgZmlsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU0IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+U25hcCB0byBHcmlkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTUiIG5hbWU9ImFsbG93X3JlY29yZGluZyI+CisgICAgPHZhbHVlPkFsbG93IHJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU2IiBuYW1lPSJ3YWl0X2Zvcl9yZWNvcmRpbmciPgorICAgIDx2YWx1ZT5XYWl0IGZvciByZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NyIgbmFtZT0iaGlkZV90b3BfYmFyIj4KKyAgICA8dmFsdWU+SGlkZSB0b3BiYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1OCIgbmFtZT0iZmlsZUV4cGxvcmVyIj4KKyAgICA8dmFsdWU+UGxheSB2aWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU5IiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGUgY29udGVudCBvbiB0aGUgY3VycmVudCBzbGlkZT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2MCIgbmFtZT0iYWN0aXZpdHlfd2luZG93Ij4KKyAgICA8dmFsdWU+QWNjZXB0IGFuZCBncmFudCB1c2VyIHJpZ2h0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjEiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPkRlbnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2MiIgbmFtZT0iYWN0aXZpdHlfd2luZG93Ij4KKyAgICA8dmFsdWU+STwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYzIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT5BY3Rpdml0aWVzIGFuZCBhY3Rpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjQiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5SZW1vdmUgd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY1IiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgdGhlIG1vZGVyYXRpb24gb3IgdGhlIHJpZ2h0IHRvIGRyYXcgb24gdGhlIHdoaXRlYm9hcmQgdG8gcmVtb3ZlIHdoaXRlYm9hcmRzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY2IiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+Tm90IGFsbG93ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NyIgbmFtZT0idXNlcl9sZWZ0X2FjdF9tc2ciPgorICAgIDx2YWx1ZT5oYXMgbGVmdCB0aGUgcm9vbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2OCIgbmFtZT0iY2xpcGFydCBpY29ucyI+CisgICAgPHZhbHVlPk1hdGggaWNvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2OSIgbmFtZT0iY2xpcGFydCBpY29ucyI+CisgICAgPHZhbHVlPk5vIGNhdGVnb3J5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzAiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPkNvbG9yLVN0eWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzEiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPlF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MiIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+RG9tYWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzMiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnZpc2l0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzQiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnJlZG9yYW5nZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc1IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5tZWRpdW1zZWFncmVlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc2IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5zdGVlbGJsdWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NyIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+bGlnaHRzdGVlbGJsdWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3OCIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+Z29sZGVucmVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzkiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnNpbHZlcmdyYXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4MCIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+dXNlcmRlZmluZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4MSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+YmVzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgyIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT51cGxvYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4MyIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+bWVkaXVtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODQiIG5hbWU9Im11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NSIgbmFtZT0idW5tdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+VW5tdXRlIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NiIgbmFtZT0iZ2l2ZSBleGNsdXNpdmUgYXVkaW8iPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgb2Ygb3RoZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODciIG5hbWU9Im11dGUgc2VsZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+WW91IGFyZSBnbG9iYWxseSBtdXRlZCBieSB0aGUgbW9kZXJhdG9yLiBZb3UgY2Fubm90IHVubXV0ZSB5b3Vyc2VsZiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4OCIgbmFtZT0ibXV0ZSBzZWxmIGNvbmZpcm0gbWVzc2FnZSB0aXRsZSI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBnbG9iYWxseT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4OSIgbmFtZT0ibXV0ZSBzZWxmIGNvbmZpcm0gbWVzc2FnZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIG11dGUgeW91cnNlbGYgZ2xvYmFsbHk/IE5vIG90aGVyIHVzZXIgd2lsbCBoZWFyIHlvdSBhbnltb3JlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkwIiBuYW1lPSJtdXRlIG90aGVycyBjb25maXJtIG1lc3NhZ2UgdGl0bGUiPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgbG9jYWxseT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5MSIgbmFtZT0ibXV0ZSBvdGhlcnMgY29uZmlybSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIG11dGUgdGhpcyBtaWNyb3Bob25lPyBZb3UgY2FuIG9ubHkgbXV0ZSBpdCBsb2NhbGx5IG9uIHlvdXIgc2NyZWVuLiBJdCBoYXMgbm8gZWZmZWN0IHRvIGhvdyBvdGhlciB1c2VycyBoZWFyIHRoaXMgdXNlci4gT25seSBtb2RlcmF0b3JzIGNhbiB0dXJuIGl0IG9mZiBnbG9iYWxseSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5MiIgbmFtZT0ibXV0ZSBvdGhlcnMgY29uZmlybSBtZXNzYWdlIHRpdGxlIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIG9mZiBnbG9iYWxseT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5MyIgbmFtZT0ibXV0ZSBvdGhlcnMgbW9kZXJhdG9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gbXV0ZSB0aGlzIHVzZXIgZ2xvYmFsbHk/IE5vIG90aGVyIHVzZXIgd2lsbCBoZWFyIGhpbSBhbnltb3JlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk0IiBuYW1lPSJtdXRlIHN0YXR1cyBpY29ucyI+CisgICAgPHZhbHVlPllvdXIgc291bmQgaXMgb24uIENsaWNrIGhlcmUgdG8gc2VuZCBtb2RlcmF0b3IgbWVzc2FnZSB0byBtdXRlIHlvdXIgbWljcm9waG9uZSBnbG9iYWxseSAoaW4gdGhlIGNvbXBsZXRlIGNvbmZlcmVuY2Ugcm9vbSkgb2ZmITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk1IiBuYW1lPSJtdXRlIHN0YXR1cyBpY29ucyI+CisgICAgPHZhbHVlPllvdXIgc291bmQgaXMgb2ZmLiBDbGljayBoZXJlIHRvIHNlbmQgbW9kZXJhdG9yIG1lc3NhZ2UgdG8gdW5tdXRlIHlvdXIgbWljcm9waG9uZSBnbG9iYWxseSAoaW4gdGhlIGNvbXBsZXRlIGNvbmZlcmVuY2Ugcm9vbSkgb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTYiIG5hbWU9Im11dGUgYXBwbHkgc2VsZiBvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0aGF0IHRoZSBtb2RlcmF0b3IgbXV0ZXMgbXkgbWljcm9waG9uZSBnbG9iYWxseS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5NyIgbmFtZT0ibXV0ZSBhcHBseSBzZWxmIG9mZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0aGF0IHRoZSBtb2RlcmF0b3IgdW5tdXRlcyBteSBtaWNyb3Bob25lIGdsb2JhbGx5LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk4IiBuYW1lPSJtdXRlIGFwcGx5IG9mIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53YW50IHRoYXQgdGhlIG1vZGVyYXRvciB1bm11dGVzIGhpcy9oZXIgbWljcm9waG9uZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5OSIgbmFtZT0ibXV0ZSBhcHBseSBvZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+d2FudCB0aGF0IHRoZSBtb2RlcmF0b3IgbXV0ZXMgaGlzL2hlciBtaWNyb3Bob25lLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDAwIiBuYW1lPSJtdXRlIHN0YXR1cyBpY29ucyI+CisgICAgPHZhbHVlPlVubXV0ZSBtaWNyb3Bob25lLiBDbGljayBoZXJlIHRvIG11dGUgaGlzL2hlciBtaWNyb3Bob25lIGdsb2JhbGx5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDAxIiBuYW1lPSJtdXRlIHN0YXR1cyBpY29ucyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZS4gQ2xpY2sgaGVyZSB0byB1bm11dGUgaGlzL2hlciBtaWNyb3Bob25lIGdsb2JhbGx5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDAyIiBuYW1lPSJtdXRlIHNlbGYgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoaXMgdXNlciBpcyBnbG9iYWxseSBtdXRlZCBieSB0aGUgbW9kZXJhdG9yLiBZb3UgY2Fubm90IHVubXV0ZSBoaW0hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDMiIG5hbWU9Im11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5NdXRlIHlvdXIgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA0IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5Vbm11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDUiIG5hbWU9Im11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwNiIgbmFtZT0idW5tdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+VW5tdXRlIG1pY3JvcGhvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwNyIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA4IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5Vbm11dGUgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA5IiBuYW1lPSJtdXRlIG1vZGVyYXRvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+T25seSBtb2RlcmF0b3JzIGNhbiBtdXRlIG9yIHVubXV0ZSBhbiB1c2VyIGdsb2JhbGx5ISBUbyBtdXRlIHlvdXIgb3duIG1pY3JvcGhvbmU6IFBsZWFzZSB1c2UgdGhlIG1pY3JvcGhvbmUgaWNvbiBpbiB5b3VyIHZpZGVvIHBvZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMCIgbmFtZT0icG9sbF9uYW1lIj4KKyAgICA8dmFsdWU+UG9sbCBOYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTEiIG5hbWU9InBvbGxfbmFtZSI+CisgICAgPHZhbHVlPllvdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDEyIiBuYW1lPSJhcmNoaXZlZF9wb2xscyI+CisgICAgPHZhbHVlPkFyY2hpZXZlZCBQb2xsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDEzIiBuYW1lPSJhY3RpdmVfcG9sbCI+CisgICAgPHZhbHVlPmFjdGl2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE0IiBuYW1lPSJjaGFydF9zaW1wbGUiPgorICAgIDx2YWx1ZT5TaW1wbGUgQ2hhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNSIgbmFtZT0iY2hhcnRfcGllIj4KKyAgICA8dmFsdWU+UGllIENoYXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTYiIG5hbWU9InNpZ25fdXBfdmFsaWRhdGlvbiI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBlbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE3IiBuYW1lPSJjaGF0X25vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPk5ldyBtZXNzYWdlKHMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTgiIG5hbWU9InBvbGxfY2xvc2UiPgorICAgIDx2YWx1ZT5DbG9zZSBQb2xsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTkiIG5hbWU9InBvbGxfY2xvc2VfY29uZmlybSI+CisgICAgPHZhbHVlPkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjbG9zZSB0aGlzIFBvbGw/IE5vIG9uZSB3aWxsIGJlIGFibGUgdG8gdm90ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIwIiBuYW1lPSJwb2xsX2RlbGV0ZSI+CisgICAgPHZhbHVlPkRlbGV0ZSBQb2xsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjEiIG5hbWU9InBvbGxfZGVsZXRlX2NvbmZpcm0iPgorICAgIDx2YWx1ZT5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgUG9sbD8gVGhlIHJlc3VsdHMgd2lsbCBiZSBkZWxldGVkIGFzIHdlbGwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjIiIG5hbWU9Imxhbmd1YWdlX2NvZGUiPgorICAgIDx2YWx1ZT5MYW5ndWFnZSBJU08gQ29kZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIzIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fcGVybWlzc2lvbiI+CisgICAgPHZhbHVlPkFsbG93L0RlbnkgcmlnaHQgdG8gZ2l2ZSBleGNsdXNpdmUgYXVkaW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjQiIG5hbWU9ImFsbG93X2V4Y2x1c2l2ZV9hdWRpb19wZXJtaXNzaW9uIj4KKyAgICA8dmFsdWU+QWxsb3cgdXNlciB0byBnaXZlIGV4Y2x1c2l2ZSBhdWRpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI1IiBuYW1lPSJkZW55X2V4Y2x1c2l2ZV9hdWRpb19wZXJtaXNzaW9uIj4KKyAgICA8dmFsdWU+RGVueSB1c2VyIHRvIGdpdmUgZXhjbHVzaXZlIGF1ZGlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjYiIG5hbWU9ImV4Y2xfYXVkaW8gYXBwbHkgc2VsZiBvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0byBnZXQgYSBwZXJtaXNzaW9uIGZvciBleGNsdXNpdmUgYXVkaW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjciIG5hbWU9ImV4Y2xfYXVkaW8gYXBwbHkgb2YgbWVzc2FnZSI+CisgICAgPHZhbHVlPndhbnQgdGhhdCB0aGUgbW9kZXJhdG9yIGdpdmVzIG1lIGEgcGVybWlzc2lvbiBmb3IgZXhjbHVzaXZlIGF1ZGlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI4IiBuYW1lPSJleGNsX2F1ZGlvIHN0YXR1cyBpY29ucyI+CisgICAgPHZhbHVlPkdpdmUgYSBwZXJtaXNzaW9uIGZvciBleGNsdXNpdmUgYXVkaW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjkiIG5hbWU9ImNhbV9yZXNvbHV0aW9uIj4KKyAgICA8dmFsdWU+Q2FtIHJlc29sdXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzMCIgbmFtZT0iY2FtX3Jlc29sdXRpb25faW5mbyI+CisgICAgPHZhbHVlPkNoYW5naW5nIHRoZSByZXNvbHV0aW9uIGFmZmVjdHMgYmFuZHdpZHRoLCBiaWdnZXIgcGljdHVyZSBuZWVkcyBtb3JlIGJhbmR3aXRoITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMxIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fZXJyb3IiPgorICAgIDx2YWx1ZT5Zb3UgZG9uJ3QgaGF2ZSB0aGUgcmlnaHQgdG8gZ2l2ZSB5b3Vyc2VsZiBvciBvdGhlcnMgZXhjbHVzaXZlIGF1ZGlvLiBZb3UgbmVlZCB0byBhcHBseSBmb3IgdGhlIHJpZ2h0IGZyb20gdGhlIG1vZGVyYXRvciBvciBhc2sgdGhlIG1vZGVyYXRvciB0byBnaXZlIHlvdSBleGNsdXNpdmUgYXVkaW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzIiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19hc2siPgorICAgIDx2YWx1ZT5JIHdvdWxkIGxpa2UgdG8gZ2V0IHRoZSByaWdodCBmb3IgZXhjbHVzaXZlIGF1ZGlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzMiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19hY3Rpb24iPgorICAgIDx2YWx1ZT5HaXZlIGV4Y2x1c2l2ZSBhdWRpbyB0byBtZSAoYWx0ZXJuYXRpdmVseSBjbGljayBvbiB5b3VyIHZpZGVvIHBvZCBvciBwcmVzcyBGMTIpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzQiIG5hbWU9Im1pY3JvIGlzIG9uIj4KKyAgICA8dmFsdWU+TWljcm9waG9uZSBpcyBvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNSIgbmFtZT0ibWljcm8gaXMgb2ZmIj4KKyAgICA8dmFsdWU+TWljcm9waG9uZSBpcyBtdXRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM2IiBuYW1lPSJoaWRlX2NoYXQiPgorICAgIDx2YWx1ZT5IaWRlIGNoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNyIgbmFtZT0iaGlkZV9hY3Rpdml0aWVzX2FuZF9hY3Rpb25zIj4KKyAgICA8dmFsdWU+SGlkZSBhY3Rpdml0aWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzgiIG5hbWU9ImhpZGVfZmlsZXNfZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5IaWRlIGZpbGVzIGV4cGxvcmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzkiIG5hbWU9ImhpZGVfYWN0aW9uc19tZW51Ij4KKyAgICA8dmFsdWU+SGlkZSBhY3Rpb25zIG1lbnU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MCIgbmFtZT0iaGlkZV9zY3JlZW5fc2hhcmluZyI+CisgICAgPHZhbHVlPkhpZGUgc2NyZWVuIHNoYXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MSIgbmFtZT0iaGlkZV93aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+SGlkZSB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDIiIG5hbWU9InNob3cgbWljcm9waG9uZSBzdGF0dXMiPgorICAgIDx2YWx1ZT5TaG93IG1pY3JvIHN0YXR1cyBpbiB2aWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQzIiBuYW1lPSJsYXlvdXRfb3B0aW9ucyI+CisgICAgPHZhbHVlPkxheW91dCBvcHRpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDQiIG5hbWU9ImNhbGVuZGFyIG5ldyBidXR0b24iPgorICAgIDx2YWx1ZT5OZXcgRXZlbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0NSIgbmFtZT0iY2FsZW5kYXIgcGFzc3dvcmQgaW5mbyB0ZXh0Ij4KKyAgICA8dmFsdWU+UGFzc3dvcmQgcHJvdGVjdGVkIGFyZSB0aGUgbGlua3MgdG8gdGhlIGNvbmZlcmVuY2UgdGhhdCBhcmUgc2VuZCB0byB0aGUgcGFydGljaXBlbnRzIHdoZW4geW91IHNhdmUgdGhlIGNhbGVuZGFyIGV2ZW50LCBub3QgdGhlIHJvb20hIFRoYXQgbWVhbnMgaWYgeW91IHNhdmUgdGhlIGV2ZW50IG11bHRpcGxlIHRpbWVzIGJ1dCB3aXRoIGRpZmZlcmVudCBwYXNzd29yZHMgZXZlcnkgcGFydGljaXBlbnQgcmVjZWl2ZXMgYSBuZXcgbGluayB0aGF0IGhhcyBhIGRpZmZlcmVudCBwYXNzd29yZC4gQnV0IG9sZCBsaW5rcyBzdGlsbCB3b3JrIG9uY2Ugc2VuZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0NiIgbmFtZT0iY2FsZW5kYXIgZWRpdCBidXR0b24iPgorICAgIDx2YWx1ZT5FZGl0IGRldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0NyIgbmFtZT0ic2lwIHNob3cgZGlhbGVyIj4KKyAgICA8dmFsdWU+U2hvdyBzaXAgZGlhbGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDgiIG5hbWU9InNpcCBjYWxsIj4KKyAgICA8dmFsdWU+Q2FsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ5IiBuYW1lPSJjYWxlbmRhciBjb250YWN0IGxpc3QiPgorICAgIDx2YWx1ZT5TaG93IGNhbGVuZGFyIGV2ZW50cyBvZiBjb250YWN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTAiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPllvdXIgaG9tZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MSIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+UGxhbiB5b3VyIG1lZXRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTIiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPldhdGNoIHJlY29yZGluZyBhbmQgaW50ZXJ2aWV3czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUzIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5DaG9vc2UgYW5kIHN0YXJ0IGEgd2ViLWNvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1NCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIHVzZXJzIGFuZCByaWdodHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1NSIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIGNvbm5lY3Rpb25zIGFuZCBraWNrIHVzZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTYiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSB1c2VyZ3JvdXBzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTciIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBjb25mZXJlbmNlIHJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTgiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBzeXN0ZW0gc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1OSIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIGxhYmVscyBhbmQgd29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYwIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgTERBUCBhbmQgQURTIGNvbmZpZ3VyYXRpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjEiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPkV4cG9ydC9JbXBvcnQgU3lzdGVtIEJhY2t1cHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPllvdSBuZWVkIG1vZGVyYXRpb24gb3IgdGhlIHJpZ2h0IHRvIGRyYXcgb24gd2hpdGVib2FyZCB0byB1cGxvYWQsIGFkZCwgZGVsZXRlIG9yIGxvYWQgZmlsZXMgYW5kIGZvbGRlcnMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjMiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5FZGl0IHRleHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2NCIgbmFtZT0ic2FsdXRhdGlvbiI+CisgICAgPHZhbHVlPlByb2Y8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2NSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5QdWJsaXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjYiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U3RhcnQgUHVibGlzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY3IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlN0b3AgUHVibGlzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY4IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkhvc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2OSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5QdWJsaXNoIEFwcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDcwIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlB1Ymxpc2ggSWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5SZWR1Y2UgdGhlIHdpZHRoIG9mIHRoZSBTaGFyaW5nU2NyZWVuIGJlZm9yZSB5b3UgdHJ5IHRvIG1vdmUgaXQgbGVmdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDcyIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHVjZSB0aGUgaGVpZ2h0IG9mIHRoZSBTaGFyaW5nU2NyZWVuIGJlZm9yZSB5b3UgdHJ5IHRvIG1vdmUgaXQgYm90dG9tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzMiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UmVkdWNlIHRoZSB4IG9mIHRoZSBTaGFyaW5nU2NyZWVuIGJlZm9yZSB5b3UgdHJ5IHRvIG1ha2UgaXQgd2lkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3NCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5SZWR1Y2UgdGhlIHkgb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbWFrZSBpdCBoaWdoZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3NSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5GaWxsIHRoZXNlIHNldHRpbmdzIHN0cmVhbSB5b3VyIHNjcmVlbiBkYXRhIHRvIDN0aCBwYXJ0eSBwcm92aWRlcnMgbGlrZSBqdXN0aW4udHY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3NiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5QbGVhc2Ugc3RhcnQgU2NyZWVuIHNoYXJpbmcgdG8gYmUgYWJsZSB0byBwdWJsaXNoIGl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzciIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+TW9kZXJhdG9yIHBlcm1pc3Npb24gcmVxdWlyZWQgdG8gc3RhcnQgcmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzgiIG5hbWU9Im5vIHJpZ2h0IGZvciBleGNsdXNpdmUgYXVkaW8iPgorICAgIDx2YWx1ZT5Zb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFwcGx5IGV4Y2x1c2l2ZSBhdWRpbyB0byBhbnkgcGFydGljaXBhbnQuIFlvdSBuZWVkIG1vZGVyYXRpb24gcm9sZSBvciB0aGUgcmlnaHQgZm9yIGV4Y2x1c2l2ZSBhdWRpbyB0byBtYWtlIGFueSBtaWNyb3Bob25lIGV4Y2x1c2l2ZSB0dXJuZWQgb24uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc5IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5VcGxvYWQgbmV3IGZpbGUgdG8gZmlsZSBleHBsb3JlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgwIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5PcGVuIG5ldyBkaWFsb2cgd2l0aCBzaGFyaW5nIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODEiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkFuIGV4aXN0aW5nIG1vZGVyYXRvciBtdXN0IGFwcHJvdmUgaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MiIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+QXNrIG1vZGVyYXRvciB0byBzaGFyZSB5b3VyIHdlYmNhbS9taWNybzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgzIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5HYXRoZXIgZmVlZGJhY2sgYnkgY3JlYXRpbmcgYSBwb2xsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODQiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlBhc3QgYW5kIGN1cnJlbnQgcG9sbCByZXN1bHRzIGFzIGNoYXJ0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg1IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5Wb3RlIGlmIHRoZXJlIGlzIGEgcG9sbCBmb3IgdGhpcyBjb25mZXJlbmNlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NiIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+RWRpdCBjYW0gYW5kIG1pYyBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg3IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5Db25maXJtIGFuZCBsZWF2ZSB0aGUgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg4IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5DYWxsIGV4dGVybmFsIHBlb3BsZSB2aWEgVm9JUC9TSVA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4OSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+U2VuZCBhbiBlbWFpbCB3aXRoIGEgZGlyZWN0IGxpbmsgdG8gdGhpcyByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTAiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkNoYW5nZSB5b3VyIHdoaXRlYm9hcmQgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MSIgbmFtZT0iYmFja3VwIGFkbWluIj4KKyAgICA8dmFsdWU+TWF4IHVwbG9hZCBzaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTIiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkFzayBtb2RlcmF0b3IgdG8gc2hhcmUgeW91ciB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTMiIG5hbWU9InByaXZhdGUgY2hhdCI+CisgICAgPHZhbHVlPlN0YXJ0IFByaXZhdGUgQ2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk0IiBuYW1lPSJhbGxfcHJpdmF0ZV9jaGF0Ij4KKyAgICA8dmFsdWU+QWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTUiIG5hbWU9InByaXZhdGUgY2hhdCI+CisgICAgPHZhbHVlPllvdSBjYW5ub3Qgc3RhcnQgYSBwcml2YXRlIGNoYXQgd2l0aCB5b3Vyc2VsZi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NiIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+WW91J3ZlIGFscmVhZHkgc3RhcnRlZCBhIHByaXZhdGUgY2hhdCB3aXRoIHRoaXMgcGFydGljaXBhbnQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTciIG5hbWU9InByaXZhdGUgY2hhdCI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBwcml2YXRlIGNoYXQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTgiIG5hbWU9IlNlcnZlcnMiPgorICAgIDx2YWx1ZT5TZXJ2ZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTkiIG5hbWU9IlNlcnZlcnMiPgorICAgIDx2YWx1ZT5TZXJ2ZXJzIHBhcnRpY2lwYXRpbmcgaW4gY2x1c3RlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAwIiBuYW1lPSJTZXJ2ZXIgbmFtZSI+CisgICAgPHZhbHVlPlNlcnZlciBOYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDEiIG5hbWU9IlNlcnZlciBBZGRyZXNzIj4KKyAgICA8dmFsdWU+U2VydmVyIEFkZHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMiIgbmFtZT0iU2VydmVyIGRldGFpbHMiPgorICAgIDx2YWx1ZT5TZXJ2ZXIgZGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAzIiBuYW1lPSJTZW5kIFNNUyI+CisgICAgPHZhbHVlPlNlbmQgU01TPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDQiIG5hbWU9InB1Ymxpc2hpbmdfbWVzc2FnZSI+CisgICAgPHZhbHVlPlB1Ymxpc2hpbmcuIFVzZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDUiIG5hbWU9ImNtZF9saW5lX2FkbWluIj4KKyAgICA8dmFsdWU+VG8gc2F2ZSB0aW1lIGFuZCBpbnRlcm5ldCB0cmFmZmljIHlvdSBjYW4gdXNlIGNvbW1hbmQgbGluZSBhZG1pbiB0byBiYWNrdXAvcmVzdG9yZS91cGdyYWRlOlxuIDEpIGdvIHRvIE9NIGluc3RhbGwgZGlyIChmb3IgZXguIC9vcHQvcmVkNSkgXG4gMikgc3RvcCBPTSAoZm9yIGV4LiAuL3JlZDUtc2h1dGRvd24uc2gpXG4gMykgLi9hZG1pbi5zaCAtYiAtZmlsZSB+L3RvZGF5X29tX2JhY2t1cC56aXAgKGNyZWF0ZSBiYWNrdXAgb2YgY3VycmVudCBPTSlcbiA0KSBkb3dubG9hZCBhcmNoaXZlIHdpdGggbmV3IE9NXG4gNSkgbXYgL29wdC9yZWQ1IC9vcHQucmVkNS5iYWsgKG1vdmUgd29ya2luZyB2ZXJzaW9uIG9mIE9NIGp1c3QgaW4gY2FzZSA6KSlcbiA2KSBleHRyYWN0IGRvd25sb2FkZWQgT00gdG8gdGhlIC9vcHQvcmVkNVxuIDcpIC4vYWRtaW4uc2ggLWkgLWZpbGUgfi90b2RheV9vbV9iYWNrdXAuemlwIChvciAnLi9hZG1pbi5zaCAtaSAtZmlsZSB+L3RvZGF5X29tX2JhY2t1cC56aXAgLS1kYi10eXBlIG15c3FsIC0tZGItdXNlciBvbV91c2VyIC0tZGItcGFzcyBvbV91c2VyX3Bhc3MnIGluIGNhc2Ugb2YgeW91IGFyZSB1c2luZyBub24tZGVmYXVsdCBEQiApXG4gOCkgc3RhcnQgT01cbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA2IiBuYW1lPSJwdWJsaWNfcm9vbV90b29sdGlwIj4KKyAgICA8dmFsdWU+Um9vbXMgY29tbW9uIHRvIGFsbCB1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDciIG5hbWU9InByaXZhdGVfcm9vbV90b29sdGlwIj4KKyAgICA8dmFsdWU+Um9vbXMgY29tbW9uIHRvIHRoZSBjdXJyZW50IHVzZXIgZ3JvdXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwOCIgbmFtZT0ibXlfcm9vbV90b29sdGlwIj4KKyAgICA8dmFsdWU+Um9vbXMgb2YgdGhlIGN1cnJlbnQgdXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA5IiBuYW1lPSJjcmVhdGVfbmV3X3Jvb20iPgorICAgIDx2YWx1ZT5DcmVhdGUvTW9kaWZ5IGFwcG9pbnRtZW50IHNwZWNpYWwgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTEwIiBuYW1lPSJtdWx0aXBsZV9hZGRyZXNzZXMiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIGVudGVyIG11bHRpcGxlIGFkZHJlc3NlcyBpbiB0aGUgZm9ybWF0OiBmaXJzdG5hbWUxIGxhc3RuYW1lMSAmbHQ7ZW1haWwxJmd0OywiZmlyc3RuYW1lMiBsYXN0bmFtZTIiICZsdDtlbWFpbDImZ3Q7LCdmaXJzdG5hbWUzIGxhc3RuYW1lMycgJmx0O2VtYWlsMyZndDssIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTExIiBuYW1lPSJzdHJlYW1fdm9sdW1lIj4KKyAgICA8dmFsdWU+QWRqdXN0IHN0cmVhbSB2b2x1bWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxMiIgbmFtZT0ibWljcm9waG9uZV92b2x1bWUiPgorICAgIDx2YWx1ZT5BZGp1c3QgbWljcm9waG9uZSB2b2x1bWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxMyIgbmFtZT0iY2hhdF9tb2RlcmF0ZWQiPgorICAgIDx2YWx1ZT5JcyBjaGF0IG1vZGVyYXRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE0IiBuYW1lPSJjaGF0X21vZGVyYXRlZCI+CisgICAgPHZhbHVlPkFsbG93IG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNSIgbmFtZT0iY2hhdF9vcGVuZWQiPgorICAgIDx2YWx1ZT5DaGF0IHBhbmVsIG9wZW5lZCBieSBkZWZhdWx0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTYiIG5hbWU9ImZpbGVzX29wZW5lZCI+CisgICAgPHZhbHVlPkZpbGVzIHBhbmVsIG9wZW5lZCBieSBkZWZhdWx0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTciIG5hbWU9InNlcnZlciBhZG1pbiBzZWN0aW9uIGxhc3RwaW5nIj4KKyAgICA8dmFsdWU+TGFzdCBwaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTgiIG5hbWU9InNlcnZlciBhZG1pbiBzZWN0aW9uIGxhc3RwaW5nIGluZm8iPgorICAgIDx2YWx1ZT5FdmVyeSBzbGF2ZSBzZW5kcyBhIHBpbmcgdG8gdGhlIG1hc3RlciBldmVyeSAzIHNlY29uZHMgKGNvbmZpZ3VyYWJsZSkuIFNsYXZlIGxhc3RQaW5nIG11c3QgYmUgc21hbGxlciB0aGVuIDEgbWludXRlIHNvIHRoYXQgdGhlIG1hc3RlciB1c2VzIHRoZSBzbGF2ZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxOSIgbmFtZT0ic2VydmVyIGFkbWluIHBvcnQiPgorICAgIDx2YWx1ZT5IVFRQIFBvcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyMCIgbmFtZT0ic2VydmVyIGFkbWluIHVzZXIiPgorICAgIDx2YWx1ZT5Vc2VyIChTT0FQLUFjY2Vzcyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyMSIgbmFtZT0ic2VydmVyIGFkbWluIHBhc3N3b3JkIj4KKyAgICA8dmFsdWU+UGFzc3dvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyMiIgbmFtZT0ic2VydmVyIGFkbWluIHdlYmFwcCBwYXRoIj4KKyAgICA8dmFsdWU+V2ViYXBwIHBhdGg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyMyIgbmFtZT0ic2VydmVyIGFkbWluIHByb3RvY29sIj4KKyAgICA8dmFsdWU+UHJvdG9jb2w8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyNCIgbmFtZT0ic2VydmVyIGFkbWluIHBpbmcgcnVubmluZyI+CisgICAgPHZhbHVlPlBpbmcgcnVubmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI1IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gYWN0aXZlIj4KKyAgICA8dmFsdWU+QWN0aXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjYiIG5hbWU9ImdlbmVyYXRlX2hhc2giPgorICAgIDx2YWx1ZT5HZW5lcmF0ZSBVUkw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyNyIgbmFtZT0ibmV0d29yayB0ZXN0aW5nIGxpbmsiPgorICAgIDx2YWx1ZT5OZXR3b3JrIHRlc3Rpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyOCIgbmFtZT0icm9vbV9vcHRpb25zIj4KKyAgICA8dmFsdWU+QXV0byBzZWxlY3QgaW50ZXJ2aWV3IHZpZGVvIHBvZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI5IiBuYW1lPSJmb250X3VuZGVybGluZSI+CisgICAgPHZhbHVlPlVuZGVybGluZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMwIiBuYW1lPSJmb250X3N0eWxlIj4KKyAgICA8dmFsdWU+Rm9udCBzdHlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMxIiBuYW1lPSJhbGxvd19mb250X3N0eWxlcyI+CisgICAgPHZhbHVlPkFsbG93IGZvbnQgc3R5bGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzIiIG5hbWU9ImZvbnRfY29sb3IiPgorICAgIDx2YWx1ZT5Gb250IGNvbG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzMiIG5hbWU9Imh5cGVybGluayI+CisgICAgPHZhbHVlPkh5cGVybGluazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM0IiBuYW1lPSJjb25uZWN0aW9uIGFkbWluIj4KKyAgICA8dmFsdWU+U2hvdyBzZXNzaW9uIHN0YXRpc3RpY3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNSIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbiI+CisgICAgPHZhbHVlPlNlc3Npb24gZGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM2IiBuYW1lPSJzeXN0ZW1faW1wb3J0Ij4KKyAgICA8dmFsdWU+U3lzdGVtIGltcG9ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM3IiBuYW1lPSJpbmNsdWRlX2ludG9fYmFja3VwIj4KKyAgICA8dmFsdWU+SW5jbHVkZSB1cGxvYWRlZCBmaWxlcyBhbmQgcmVjb3JkaW5ncyBpbiBiYWNrdXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzOCIgbmFtZT0icm9vbV9hZG1pbl9zaXAiPgorICAgIDx2YWx1ZT5FbmFibGUgU0lQIHRyYW5zcG9ydCBpbiB0aGUgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM5IiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fY29uZmlybSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBwcm92aWRlIHRoaXMgdXNlciBhbiBleGNsdXNpdmUgYXVkaW8/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NDAiIG5hbWU9Im5vX3RpbWV6b25lIj4KKyAgICA8dmFsdWU+UGxlYXNlIHNwZWNpZnkgeW91ciB0aW1lem9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTQ1IiBuYW1lPSJjb250ZW50X2lzX3NhdmluZyI+CisgICAgPHZhbHVlPkNvbnRlbnQgaXMgU2F2aW5nLCBQbGVhc2Ugd2FpdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKzwvbGFuZ3VhZ2U+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L2xhbmd1YWdlcy9odW5nYXJpYW4ueG1sIGIvV2ViQ29udGVudC9sYW5ndWFnZXMvaHVuZ2FyaWFuLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDM5MTg2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9sYW5ndWFnZXMvaHVuZ2FyaWFuLnhtbApAQCAtMCwwICsxLDQ2NTIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+CisKKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCisKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK1RoaXMgRmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBieSB0aGUgTGFuZ3VhZ2VFZGl0b3IgCit0byBhZGQgbmV3IExhbmd1YWdlcyBvciBtb2RpZnkvY3VzdG9taXplIGl0IHVzZSB0aGUgTGFuZ3VhZ2VFZGl0b3IgCitzZWUgaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnL0xhbmd1YWdlRWRpdG9yLmh0bWwgZm9yIERldGFpbHMgCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy0tPgorPGxhbmd1YWdlIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOm5vTmFtZXNwYWNlU2NoZW1hTG9jYXRpb249Imxhbmd1YWdlLnhzZCI+CisgIDxzdHJpbmcgaWQ9IjEiIG5hbWU9ImNvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT5Lb25mZXJlbmNpYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyIiBuYW1lPSJtZWV0aW5nIj4KKyAgICA8dmFsdWU+VGFsw6Fsa296w7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMyIgbmFtZT0iY2xhc3Nyb29tIj4KKyAgICA8dmFsdWU+RWzFkWFkw6FzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQiIG5hbWU9InNldHRpbmdzIj4KKyAgICA8dmFsdWU+QmXDoWxsw610w6Fzb2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNSIgbmFtZT0iYmVudXR6ZXIiPgorICAgIDx2YWx1ZT5CZcOhbGzDrXTDoXNvazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2IiBuYW1lPSJhZG1pbiI+CisgICAgPHZhbHVlPkFkbWluaXN6dHLDoWNpw7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNyIgbmFtZT0ic3RvcCI+CisgICAgPHZhbHVlPsOBbGxqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkZlbHbDqXRlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5IiBuYW1lPSJub2ZpbGUiPgorICAgIDx2YWx1ZT5OaW5jcyBlbMOpcmhldMWRIGbDoWpsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwIiBuYW1lPSJyZWNvcmRieXRlYWNoZXIiPgorICAgIDx2YWx1ZT5GZWx2w6l0ZWwgYXogZWzFkWFkw7Nuw6FsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExIiBuYW1lPSJjb25uZWN0ZWR1c2VycyI+CisgICAgPHZhbHVlPkNzYXRsYWtvem90dCBmZWxoYXN6bsOhbMOzazo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIiIG5hbWU9InN0YXJ0Y29uZiI+CisgICAgPHZhbHVlPktvbmZlcmVuY2lhIGluZMOtdMOhc2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMiIG5hbWU9Im15bmFtZSI+CisgICAgPHZhbHVlPk5ldmVtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0IiBuYW1lPSJ2aWRlb2NvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT5WaWRlb0tvbmZlcmVuY2lhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1IiBuYW1lPSJpbXBvcnQiPgorICAgIDx2YWx1ZT5Gw6FqbCBmZWx0w7ZsdMOpczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNiIgbmFtZT0icmVmcmVzaGZpbGVzIj4KKyAgICA8dmFsdWU+TGlzdGEgZnJpc3PDrXTDqXNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3IiBuYW1lPSJ0b21haW5maWxlIj4KKyAgICA8dmFsdWU+VG8gTWFpbiBGaWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4IiBuYW1lPSJuZXdwb2xsIj4KKyAgICA8dmFsdWU+w7pqIHN6YXZhesOhczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOSIgbmFtZT0ibmV3cG9sbGhlYWRlciI+CisgICAgPHZhbHVlPsOaaiBzemF2YXrDoXMgYSBrb25mZXJlbmNpw6FuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMCIgbmFtZT0icXVlc3Rpb24iPgorICAgIDx2YWx1ZT5Lw6lyZMOpczo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEiIG5hbWU9InBvbGx0eXBlIj4KKyAgICA8dmFsdWU+QSBzemF2YXrDoXMgdMOtcHVzYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIiIG5hbWU9ImNyZWF0ZSI+CisgICAgPHZhbHVlPkzDqXRyZWhvejwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMyIgbmFtZT0iaW5mb21lc3NhZ2UiPgorICAgIDx2YWx1ZT5JbmbDszogTWluZGVuIGJlamVsZW50a2V6ZXR0IGZlbGhhc3puw6Fsw7Mgw6lydGVzw7xsIGF6IMO6aiBzemF2YXrDoXNyw7NsLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNCIgbmFtZT0iY3JlYXRwb2xsIj4KKyAgICA8dmFsdWU+U3phdmF6w6FzIGzDqXRyZWhvesOhc2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUiIG5hbWU9ImNhbmNlbCI+CisgICAgPHZhbHVlPk3DqWdzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNiIgbmFtZT0ieWVzbm8iPgorICAgIDx2YWx1ZT5JZ2VuL05lbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNyIgbmFtZT0ibnVtZXJpYyI+CisgICAgPHZhbHVlPlN6w6FtIDEtMTA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgiIG5hbWU9InBvbGwiPgorICAgIDx2YWx1ZT5TemF2YXrDoXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkiIG5hbWU9Im1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5FbMWRYWTDs25hayBrZWxsIGxlbm5lZCwgaG9neSBmZWx0ZWhlc3Mga8OpcmTDqXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwIiBuYW1lPSJ2b3RlIj4KKyAgICA8dmFsdWU+QSBzemF2YXphdG90IGVsZm9nYWR0dWsuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxIiBuYW1lPSJhbHJlYWR5dm90ZWQiPgorICAgIDx2YWx1ZT5FcnJlIGEga8OpcmTDqXNyZSBtw6FyIHN6YXZhenTDoWwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyIiBuYW1lPSJ2b3RpbmciPgorICAgIDx2YWx1ZT5TemF2YXp6ICE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMiIG5hbWU9ImFuc3dlciI+CisgICAgPHZhbHVlPlbDoWxhc3o6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0IiBuYW1lPSJ5ZXMiPgorICAgIDx2YWx1ZT5JZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1IiBuYW1lPSJubyI+CisgICAgPHZhbHVlPk5lbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNiIgbmFtZT0icXVlc3Rpb253YW50Ij4KKyAgICA8dmFsdWU+VHVkbmkgYWthcmphOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNyIgbmFtZT0icG9sbHJlc3VsdHMiPgorICAgIDx2YWx1ZT5TemF2YXrDoXMgZXJlZG3DqW55ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOCIgbmFtZT0icXVlc3Rpb24iPgorICAgIDx2YWx1ZT5Lw6lyZMOpczo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkiIG5hbWU9InJlc3VsdHMiPgorICAgIDx2YWx1ZT5FcmVkbcOpbnk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwIiBuYW1lPSJhbnN3ZXJzIj4KKyAgICA8dmFsdWU+VsOhbGFzem9rOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MSIgbmFtZT0ibm9wb2xsIj4KKyAgICA8dmFsdWU+TmluY3MgZWxpbmTDrXRvdHQgc3phdmF6w6FzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MiIgbmFtZT0idm90aW5ncyI+CisgICAgPHZhbHVlPlN6YXZhenohPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzIiBuYW1lPSJtZWV0aW5nIj4KKyAgICA8dmFsdWU+VGFsw6Fsa296w7MgKG1heC4gNCDDvGzFkWhlbHkpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0IiBuYW1lPSJjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+RWzFkWFkw6FzIChtYXguIDUwIMO8bMWRaGVseSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUiIG5hbWU9InR5cGUiPgorICAgIDx2YWx1ZT5Uw61wdXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYiIG5hbWU9InJlbWFpbmluZ3NlYXRzIj4KKyAgICA8dmFsdWU+U3phYmFkIMO8bMWRaGVseWVrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3IiBuYW1lPSJhbHJlYWR5Y2hvc2VuIj4KKyAgICA8dmFsdWU+Rm9nbGFsdCDDvGzFkWhlbHllazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OCIgbmFtZT0iZW50ZXIiPgorICAgIDx2YWx1ZT5iZXZpdGVsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5IiBuYW1lPSJtb2RsZWF2ZSI+CisgICAgPHZhbHVlPkEgZWzFkWFkw7MgZWxoYWd5dGEgYSB0YWzDoWxrb3rDs3QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwIiBuYW1lPSJzeXN0ZW1tZXNzYWdlIj4KKyAgICA8dmFsdWU+UmVuZHN6ZXIgaW5mb3Jtw6FjacOzazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MSIgbmFtZT0iY2hvc3NlZGV2aWNlIj4KKyAgICA8dmFsdWU+VsOhbGFzc3ogZXN6a8O2enQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIiIG5hbWU9ImNob29zZWNhbSI+CisgICAgPHZhbHVlPlbDoWxhc3N6IHdlYmthbWVyw6F0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MyIgbmFtZT0iY2hvb3NlbWljIj4KKyAgICA8dmFsdWU+VsOhbGFzc3ogbWlrcm9mb250OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NCIgbmFtZT0ib2siPgorICAgIDx2YWx1ZT5SZW5kYmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1IiBuYW1lPSJjYW5jZWwyIj4KKyAgICA8dmFsdWU+TcOpZ3NlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2IiBuYW1lPSJyZWNvbmVlY3RuZWVkZWQiPgorICAgIDx2YWx1ZT7DmmpyYSBiZSBrZWxsIGplbGVudGtlem5lZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTciIG5hbWU9ImVkaXRzZXR1cCI+CisgICAgPHZhbHVlPkJlw6FsbMOtdMOhc29rIG3Ds2Rvc8OtdMOhc2EuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4IiBuYW1lPSJjb3Vyc2UiPgorICAgIDx2YWx1ZT5Uw6ltYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkiIG5hbWU9Imxhbmd1YWdlIj4KKyAgICA8dmFsdWU+TnllbHY6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwIiBuYW1lPSJvazIiPgorICAgIDx2YWx1ZT5SZW5kYmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxIiBuYW1lPSJjYW5jZWwzIj4KKyAgICA8dmFsdWU+TcOpZ3NlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyIiBuYW1lPSJjbGVhcndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5Uw6FibGEgdMO2cmzDqXNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzIiBuYW1lPSJjbGVhcndoaXRlYm9hcmRxdWVzdGlvbiI+CisgICAgPHZhbHVlPlN6ZXJldG7DqWQsIGhvZ3kgYSB0w6FibGEgdMO2csO2bHZlIGxlZ3llbiBtaWVsxZF0dCDDumoga8OpcCBsZXN6IGhvenrDoWFkdmE/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0IiBuYW1lPSJkb250YXNrYWdhaW4iPgorICAgIDx2YWx1ZT5OZSBrw6lyZGV6ZCB0w7ZiYnN6w7ZyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1IiBuYW1lPSJubyI+CisgICAgPHZhbHVlPk5lbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NiIgbmFtZT0iZWRpdHNldHVwMiI+CisgICAgPHZhbHVlPkJlw6FsbMOtdMOhc29rIG3Ds2Rvc8OtdMOhc2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjciIG5hbWU9Im5lZWRjb25maXJtYXRpb253aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+TWVnZXLFkXPDrXTDqXMgYSB0w6FibGEgdMO2cmzDqXNlIGVsxZF0dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OCIgbmFtZT0idXNlcmluZm8iPgorICAgIDx2YWx1ZT5GZWxoYXN6bsOhbMOzaSBpbmZvcm3DoWNpw7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkiIG5hbWU9ImNsZWFyZHJhd2FyZWEiPgorICAgIDx2YWx1ZT5SYWp6dGVyw7xsZXQgdMO2cmzDqXNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwIiBuYW1lPSJ1bmRvIj4KKyAgICA8dmFsdWU+Vmlzc3phPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxIiBuYW1lPSJyZWRvIj4KKyAgICA8dmFsdWU+w5pqcmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIiIG5hbWU9InNlbGVjdG9iamVjdCI+CisgICAgPHZhbHVlPlbDoWxhc3N6IG9iamVrdHVtb3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMiIG5hbWU9InRleHQiPgorICAgIDx2YWx1ZT5TesO2dmVnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0IiBuYW1lPSJwYWludCI+CisgICAgPHZhbHVlPlJhano8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUiIG5hbWU9ImRyYXdsaW5lIj4KKyAgICA8dmFsdWU+Vm9uYWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYiIG5hbWU9ImRyYXd1Ij4KKyAgICA8dmFsdWU+QWzDoWjDunrDoXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzciIG5hbWU9InJlY3QiPgorICAgIDx2YWx1ZT5Ow6lneXN6w7ZnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4IiBuYW1lPSJlbGxpcHNlIj4KKyAgICA8dmFsdWU+RWxsaXBzemlzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5IiBuYW1lPSJhcnJvdyI+CisgICAgPHZhbHVlPk55w61sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwIiBuYW1lPSJkZWxldGVjaG9zZW4iPgorICAgIDx2YWx1ZT5hIGtpdsOhbGFzenRvdHQgZWxlbSB0w7ZybMOpc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEiIG5hbWU9ImFwcGxpeW1vZCI+CisgICAgPHZhbHVlPkplbGVudGtlesOpcyBlbMWRYWTDs25hazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MiIgbmFtZT0iYXBwbHkiPgorICAgIDx2YWx1ZT5iZcOhbGzDrXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODMiIG5hbWU9ImNhbmNlbCI+CisgICAgPHZhbHVlPk3DqWdzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NCIgbmFtZT0ibW9kIj4KKyAgICA8dmFsdWU+RWzFkWFkw7N2w6EgdsOhbG5pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1IiBuYW1lPSJjbG9zZSI+CisgICAgPHZhbHVlPmJlesOhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NiIgbmFtZT0iaXRhbGljIj4KKyAgICA8dmFsdWU+ZMWRbHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODciIG5hbWU9ImJvbGQiPgorICAgIDx2YWx1ZT5mw6lsa8O2dsOpcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OCIgbmFtZT0id2FpdGluZyI+CisgICAgPHZhbHVlPlbDgVJBS09aSUs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkiIG5hbWU9ImFwcGx5TWVzc2FnZSI+CisgICAgPHZhbHVlPkEgZmVsaGFzem7DoWzDsyBlbMWRYWTDs25hayBqZWxlbnRrZXppazo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAiIG5hbWU9ImFjY2VwdCI+CisgICAgPHZhbHVlPmVsZm9nYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTEiIG5hbWU9InJlamVjdCI+CisgICAgPHZhbHVlPmVsdXRhc8OtdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MiIgbmFtZT0iY2FuY2VsIj4KKyAgICA8dmFsdWU+bcOpZ3NlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzIiBuYW1lPSJzZW5kbW9kcmVxdWVzdG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Lw6lyZWxlbSBrw7xsZMOpc2UgZmVsaGFzem7DoWzDs2tuYWs6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0IiBuYW1lPSJhY2NlcHQiPgorICAgIDx2YWx1ZT5FbGZvZ2FkdmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUiIG5hbWU9InJlamVjdCI+CisgICAgPHZhbHVlPkVsdXRhc8OtdHZhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2IiBuYW1lPSJjaGFuZ2Vtb2QiPgorICAgIDx2YWx1ZT5FbMWRYWTDsyB2w6FsdG96dGF0w6FzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3IiBuYW1lPSJub25tb2RlcnJvcm1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UZSBuZW0gbW9kZXLDoWxvZCBlenQgYXogw7xsw6lzdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgiIG5hbWU9Im1vZGVyYXRvciI+CisgICAgPHZhbHVlPkVsxZFhZMOzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OSIgbmFtZT0icm9vbWZ1bGxtZXNzYWdlIj4KKyAgICA8dmFsdWU+QSB0ZXJlbSB0ZWxlIHZhbi4gS8OpcmVtIHByw7Niw6FsamEga8Opc8WRYmIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMCIgbmFtZT0iZWxsbGlwc2UiPgorICAgIDx2YWx1ZT5FbGxpcHN6aXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxIiBuYW1lPSJjbG9zZSI+CisgICAgPHZhbHVlPmJlesOhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIiIG5hbWU9IkF1dGhFcnJvciI+CisgICAgPHZhbHVlPmJldml0ZWxpIGFkYXRoaWJhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMyIgbmFtZT0ibWluNHVzZXJuYW1lIj4KKyAgICA8dmFsdWU+NCB2YWd5IHTDtmJiIGthcmFrdGVyOyBraXMvbmFneWJldMWxIHN6w6Ftw610ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQiIG5hbWU9Im1pbjRwYXNzIj4KKyAgICA8dmFsdWU+YSBmZWxoYXN6bsOhbMOzaSBqZWxzesOzbmFrIGxlZ2Fsw6FiYiA0IGthcmFrdGVybmVrIGtlbGwgbGVubmllPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNSIgbmFtZT0idXNlcm5hbWV0YWtlbiI+CisgICAgPHZhbHVlPkEgZmVsaGFzem7DoWzDsyBtw6FyIGzDqXRlemlrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNiIgbmFtZT0iZW1haWx0YWtlbiI+CisgICAgPHZhbHVlPkF6IGUtbWFpbCBjw61tIG3DoXIgcmVnaXN6dHLDoWx2YSB2YW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3IiBuYW1lPSJlbWFpbHRha2VuIj4KKyAgICA8dmFsdWU+UmVuZHN6ZXJoaWJhLCBrZXJlc3NlIGZlbCBhIHJlbmRzemVyZ2F6ZMOhdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4IiBuYW1lPSJBdXRobG9naW4iPgorICAgIDx2YWx1ZT5CZWplbGVudGtlesOpczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkiIG5hbWU9IkF1dGh1c2VyIj4KKyAgICA8dmFsdWU+RmVsaGFzem7DoWzDszo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwIiBuYW1lPSJBdXRocGFzcyI+CisgICAgPHZhbHVlPkplbHN6w7M6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMSIgbmFtZT0iQXV0aGxhbmciPgorICAgIDx2YWx1ZT5OeWVsdjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIiIG5hbWU9IkF1dGhyZWciPgorICAgIDx2YWx1ZT5CZWplbGVudGtlesOpczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMiIG5hbWU9InJlZ2Zvcm1oZWFkIj4KKyAgICA8dmFsdWU+QmVqZWxlbnRrZXpuaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQiIG5hbWU9InJlZ2Zvcm11c2VyIj4KKyAgICA8dmFsdWU+RmVsaGFzem7DoWzDszo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1IiBuYW1lPSJyZWdmb3JtcGFzcyI+CisgICAgPHZhbHVlPkplbHN6w7M6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNiIgbmFtZT0icmVnZm9ybXJldHlwZSI+CisgICAgPHZhbHVlPsOaanJhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTciIG5hbWU9InJlZ2Zvcm1maXJzdG5hbWUiPgorICAgIDx2YWx1ZT5LZXJlc3p0bsOpdjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4IiBuYW1lPSJyZWdmb3JtbGFzdG5hbWUiPgorICAgIDx2YWx1ZT5Dc2Fsw6FkbsOpdjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5IiBuYW1lPSJyZWdmb3JtbWFpbCI+CisgICAgPHZhbHVlPkUtbWFpbDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwIiBuYW1lPSJyZWdmb3Jtc3RhdGUiPgorICAgIDx2YWx1ZT5PcnN6w6FnOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjEiIG5hbWU9InJlZ2Zvcm1idG4xIj4KKyAgICA8dmFsdWU+UmVnaXN6dHLDoWNpw7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyIiBuYW1lPSJyZWdmb3JtYnRuMiI+CisgICAgPHZhbHVlPk3DqWdzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMiIG5hbWU9IkF1dGhidG4yIj4KKyAgICA8dmFsdWU+UmVnaXN6dHLDoWNpw7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5OeWl0w7Mgb2xkYWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1IiBuYW1lPSJ1c2VyYWRtaW4iPgorICAgIDx2YWx1ZT5GZWxoYXN6bsOhbMOzazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYiIG5hbWU9Imdyb3VwYWRtaW4iPgorICAgIDx2YWx1ZT5Dc29wb3J0b2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3IiBuYW1lPSJvcmdhZG1pbiI+CisgICAgPHZhbHVlPlN6ZXJ2ZXpldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgiIG5hbWU9ImhlYWRjb25mIj4KKyAgICA8dmFsdWU+RWzFkWFkw6FzLXN6b2JhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOSIgbmFtZT0iY29uZl9wdWIiPgorICAgIDx2YWx1ZT5ueWlsdsOhbm9zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMCIgbmFtZT0iaGVhZF9vcmciPgorICAgIDx2YWx1ZT5TemVydmV6ZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxIiBuYW1lPSJidG5fZW50ZXJyb29tIj4KKyAgICA8dmFsdWU+YmVsw6lww6lzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMiIgbmFtZT0idXNlcmFsdGVyc2VsZl9sb2dpbiI+CisgICAgPHZhbHVlPkJlamVsZW50a2V6w6lzaSBuw6l2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMyIgbmFtZT0idXNlcmFsdGVyc2VsZl9wYXNzIj4KKyAgICA8dmFsdWU+SmVsc3rDszwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQiIG5hbWU9InVzZXJhbHRlcnNlbGZfcGFzc3JldHlwZSI+CisgICAgPHZhbHVlPsOaanJhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNSIgbmFtZT0idXNlcmFsdGVyc2VsZl9maXJzdG5hbWUiPgorICAgIDx2YWx1ZT5LZXJlc3p0bsOpdjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYiIG5hbWU9InVzZXJhbHRlcnNlbGZfbGFzdG5hbWUiPgorICAgIDx2YWx1ZT5Dc2Fsw6FkbsOpdjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzciIG5hbWU9InVzZXJhbHRlcnNlbGZfZW1haWwiPgorICAgIDx2YWx1ZT5FLW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2JpcnRoIj4KKyAgICA8dmFsdWU+U3rDvGxldMOpc25hcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkiIG5hbWU9InVzZXJhbHRlcnNlbGZfc3RyZWV0bm8iPgorICAgIDx2YWx1ZT5VdGNhIGhzei48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Rvd24iPgorICAgIDx2YWx1ZT5Jci5zesOhbS9UZWxlcMO8bMOpczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDEiIG5hbWU9InVzZXJhbHRlcnNlbGZfc3RhdGUiPgorICAgIDx2YWx1ZT5PcnN6w6FnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MiIgbmFtZT0idXNlcmFsdGVyc2VsZl9hZHJlc3Njb21tZW50Ij4KKyAgICA8dmFsdWU+TWVnamVneXrDqXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2hlYWRlciI+CisgICAgPHZhbHVlPkZlbGhhc3puw6Fsw7NpIGFkYXRvazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQiIG5hbWU9InNhdmVtZW51YmFyX3NhdmVsYWJlbCI+CisgICAgPHZhbHVlPm1lbnTDqXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1IiBuYW1lPSJzYXZlbWVudWJhcl9zYXZlbGFiZWwiPgorICAgIDx2YWx1ZT5NZW50w6lzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NiIgbmFtZT0iYWRtaW5fdXNlcmxpc3RfdXNlcl9pZCI+CisgICAgPHZhbHVlPlVTRVItSUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3IiBuYW1lPSJhZG1pbl91c2VybGlzdF9sb2dpbiI+CisgICAgPHZhbHVlPkJlamVsZW50a2V6w6lzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OCIgbmFtZT0iYWRtaW5fdXNlcmxpc3RfZmlyc3RuYW0iPgorICAgIDx2YWx1ZT5LZXJlc3p0bsOpdjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkiIG5hbWU9ImFkbWluX3VzZXJsaXN0X2xhc3RuYW1lIj4KKyAgICA8dmFsdWU+Q3NhbMOhZG7DqXY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwIiBuYW1lPSJ0dXJub3Zlcmxpc3RfbmV4dCI+CisgICAgPHZhbHVlPmvDtnZldGtlesWRIG11dGF0w6FzYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTEiIG5hbWU9InR1cm5vdmVybGlzdF9wcmUiPgorICAgIDx2YWx1ZT5lbMWResWRIG11dGF0w6FzYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIiIG5hbWU9InNhdmVjb250ZW50X2NvbmZpcm0iPgorICAgIDx2YWx1ZT5iZWplZ3l6w6lzIHTDtnJsw6lzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMiIG5hbWU9InNhdmVjb250ZW50X2NvbmZpcm1fY2FuY2VsX2J0biI+CisgICAgPHZhbHVlPm3DqWdzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTQiIG5hbWU9InNhdmVjb250ZW50X2NvbmZpcm1fY29uZmlybV9idG4iPgorICAgIDx2YWx1ZT50w7ZybMOpczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTUiIG5hbWU9InNhdmVtZW51YmFyX2FkZGxhYmVsIj4KKyAgICA8dmFsdWU+w7pqIGJlamVneXrDqXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU2IiBuYW1lPSJzYXZlbWVudWJhcl9yZWxvYWRsYWJlbCI+CisgICAgPHZhbHVlPmJlamVneXrDqXMgZnJpc3PDrXTDqXNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NyIgbmFtZT0ic2F2ZW1lbnViYXJfZGVsZXRlbGFiZWwiPgorICAgIDx2YWx1ZT5iZWplZ3l6w6lzIHTDtnJsw6lzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTgiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9zdGF0dXMiPgorICAgIDx2YWx1ZT5zdMOhdHVzejwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTkiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9zdGF0dXNJdGVtIj4KKyAgICA8dmFsdWU+dGlsdG90dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjAiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9zdGF0dXNJdGVtIj4KKyAgICA8dmFsdWU+ZW5nZWTDqWx5ZXpldHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYxIiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fb3JnYW5pc2F0aW9uIj4KKyAgICA8dmFsdWU+U3plcnZlemV0ZWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYyIiBuYW1lPSJjYWxlbmRhcl9pY29ubGFiZWwiPgorICAgIDx2YWx1ZT5uYXB0w6FyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2MyIgbmFtZT0ic2F2ZXdpbmRvd19idG4iPgorICAgIDx2YWx1ZT5iZXrDoXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY0IiBuYW1lPSJvcmdhbmlzYXRpb250YWJsZWxpc3RfaWRyb3ciPgorICAgIDx2YWx1ZT5TemVydmV6ZXQtSUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY1IiBuYW1lPSJvcmdhbmlzYXRpb250YWJsZWxpc3RfbmFtZXJvdyI+CisgICAgPHZhbHVlPk7DqXY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY2IiBuYW1lPSJ1c2VydmFsdWVfbGV2ZWxpZDEiPgorICAgIDx2YWx1ZT5GZWxoYXN6bsOhbMOzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2NyIgbmFtZT0idXNlcnZhbHVlX2xldmVsaWQyIj4KKyAgICA8dmFsdWU+RWzFkWFkw7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY4IiBuYW1lPSJ1c2VydmFsdWVfbGV2ZWxpZDMiPgorICAgIDx2YWx1ZT5BZG1pbmlzenRyw6F0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY5IiBuYW1lPSJ1c2VydmFsdWVfbGV2ZWxsYWJlbCI+CisgICAgPHZhbHVlPmZlbGhhc3puw6Fsw7Mgc3ppbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTcwIiBuYW1lPSJvcmd2YWx1ZV9oZWFkZXIiPgorICAgIDx2YWx1ZT5TemVydmV6ZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTcxIiBuYW1lPSJvcmd2YWx1ZV9vcmduYW1lIj4KKyAgICA8dmFsdWU+bsOpdjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzIiIG5hbWU9Im9yZ3ZhbHVlX29yZ25hbWUiPgorICAgIDx2YWx1ZT5zemVydmV6ZXQgaG96esOhYWTDoXNhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MyIgbmFtZT0ib3JndmFsdWVfb3JnbmFtZSI+CisgICAgPHZhbHVlPnN6ZXJ2ZXpldCBob3p6w6FhZMOhc2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc0IiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luIj4KKyAgICA8dmFsdWU+bcOpZ3NlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3NSIgbmFtZT0ib3JndmFsdWVfdXNlcndpbiI+CisgICAgPHZhbHVlPmhvenrDoWFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3NiIgbmFtZT0ib3JndmFsdWVfdXNlcndpbiI+CisgICAgPHZhbHVlPnN6ZXJ2ZXpldCB0w7ZybMOpc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc3IiBuYW1lPSJvcmd2YWx1ZV91c2VybGlzdCI+CisgICAgPHZhbHVlPmZlbGhhc3puw6Fsw7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc4IiBuYW1lPSJvcmd2YWx1ZV91c2VybGlzdGFkZCI+CisgICAgPHZhbHVlPmZlbGhhc3puw6Fsw7MgaG96esOhYWTDoXNhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3OSIgbmFtZT0ib3JndmFsdWVfdXNlcmxpc3RkZWxldGUiPgorICAgIDx2YWx1ZT5mZWxoYXN6bsOhbMOzIHTDtnJsw6lzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODAiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5oZWFkZXIiPgorICAgIDx2YWx1ZT5mZWxoYXN6bsOhbMOzIGhvenrDoWFkw6FzYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODEiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5zZWFyY2hmaWVsZCI+CisgICAgPHZhbHVlPmZlbGhhc3puw6Fsw7Mga2VyZXPDqXNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4MiIgbmFtZT0ib3JndmFsdWVfdXNlcndpbnNlYXJjaGJ0biI+CisgICAgPHZhbHVlPmtlcmVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4MyIgbmFtZT0ib3JndmFsdWVfdXNlcndpbnNlYXJjaHJlc3VsdCI+CisgICAgPHZhbHVlPmZlbGhhc3puw6Fsw7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg0IiBuYW1lPSJsb2dpbndpbl9jaG9vc2VvcmdhbmlzYXRpb24iPgorICAgIDx2YWx1ZT5TemVydmV6ZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg1IiBuYW1lPSJsb2dpbndpbl9jaG9vc2VvcmdhbmlzYXRpb25idG4iPgorICAgIDx2YWx1ZT5CZWzDqXDDqXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg2IiBuYW1lPSJuYXZpX3Jvb21hZG1pbiI+CisgICAgPHZhbHVlPktvbmZlcmVuY2lhdGVybWVrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NyIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPktvbmZlcmVuY2lhdGVybWVrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4OCIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPmlkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4OSIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPk7DqXY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkwIiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+bnlpbHbDoW5vczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTEiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5TemVydmV6ZXRlazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTIiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5UYWzDoWxrb3rDs3N6b2LDoWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkzIiBuYW1lPSJyb29tdmFsdWVfbmFtZSI+CisgICAgPHZhbHVlPk7DqXY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk0IiBuYW1lPSJyb29tdmFsdWVfdHlwZSI+CisgICAgPHZhbHVlPlTDrXB1czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTUiIG5hbWU9InJvb212YWx1ZV9pc3B1YmxpYyI+CisgICAgPHZhbHVlPk55aWx2w6Fub3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk2IiBuYW1lPSJyb29tdmFsdWVfY29tbWVudCI+CisgICAgPHZhbHVlPk1lZ2plZ3l6w6lzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NyIgbmFtZT0id2hpdGVib2FyZF9zYXZlaWNvbiI+CisgICAgPHZhbHVlPm1lbnTDqXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk4IiBuYW1lPSJ3aGl0ZWJvYXJkX29wZW5pY29uIj4KKyAgICA8dmFsdWU+YmV0w7ZsdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTkiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2luaGVhZGVyIj4KKyAgICA8dmFsdWU+bWVudMOpcyBtaW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMCIgbmFtZT0id2hpdGVib2FyZF9zYXZlYXN3aW50ZXh0Ij4KKyAgICA8dmFsdWU+RsOhamxuw6l2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMSIgbmFtZT0iZmlsZXMiPgorICAgIDx2YWx1ZT5mw6FqbG7DqXY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAyIiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbmJ0bjEiPgorICAgIDx2YWx1ZT5tw6lnc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAzIiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbmJ0bjIiPgorICAgIDx2YWx1ZT5tZW50w6lzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNCIgbmFtZT0icnBjZXJyb3J3aW5faGVhZGVyIj4KKyAgICA8dmFsdWU+aGliYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDUiIG5hbWU9ImxvYWR3bWxfaGVhZGVyIj4KKyAgICA8dmFsdWU+YmV0w7ZsdMOpczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDYiIG5hbWU9ImxvYWR3bWxfbWVzc3Nsb2FkIj4KKyAgICA8dmFsdWU+b2JqZWt0dW0gYmV0w7ZsdHZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNyIgbmFtZT0ibG9hZHdtbF9tZXNzc3luYyI+CisgICAgPHZhbHVlPmtsaWVuc2VrIHN6aW5rcm9uaXrDoWzDoXNhLCB2w6FyYWtvesOzIGtsaWVuc2VrOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDgiIG5hbWU9ImxvYWRpbWFnZV9tZXNzbG9hZCI+CisgICAgPHZhbHVlPkvDqXBpbmZvcm3DoWNpw7NrIGJldMO2bHTDqXNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwOSIgbmFtZT0ibG9hZGltYWdlX21lc3NzeW5jIj4KKyAgICA8dmFsdWU+a2xpZW5zZWsgc3ppbmtyb25pesOhbMOhc2EsIHbDoXJha296w7Mga2xpZW5zZWs6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMCIgbmFtZT0ibG9hZHdtbF9jb25maXJtaGVhZGVyIj4KKyAgICA8dmFsdWU+cmFqenRlcsO8bGV0IHTDtnJsw6lzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTEiIG5hbWU9ImxvYWR3bWxfY29uZmlybW1lc3MiPgorICAgIDx2YWx1ZT5yYWp6dGVyw7xsZXQgdMO2cmzDqXNlLCBhIHTDoWJsYSBhZGF0YWkgZWx2ZXN6bmVrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMiIgbmFtZT0ibG9hZHdtbF9jb25maXJtbWVzczIiPgorICAgIDx2YWx1ZT5NZWdlcsWRc8OtdMOpcyBtaWVsxZF0dCBhIGbDoWpsdCBiZXTDtmx0ZW7DqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTMiIG5hbWU9InNlbmRfaW52aXRhdGlvbl9idG4iPgorICAgIDx2YWx1ZT5NZWdow612w7Mga8O8bGTDqXNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNCIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX2hlYWRlciI+CisgICAgPHZhbHVlPk1lZ2jDrXbDsyBrw7xsZMOpc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE1IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fc3ViamVjdCI+CisgICAgPHZhbHVlPlTDoXJneTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTYiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9yZWNpcGllbnQiPgorICAgIDx2YWx1ZT5Dw61temV0dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTciIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9tZXNzYWdlIj4KKyAgICA8dmFsdWU+w5x6ZW5ldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTgiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9idG5fY29uZmlybSI+CisgICAgPHZhbHVlPkVsa8O8bGQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE5IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fYnRuX2NhbmNlbCI+CisgICAgPHZhbHVlPm3DqWdzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjAiIG5hbWU9InNlbmRfY2hhdF90ZXh0X2J0biI+CisgICAgPHZhbHVlPmVsa8O8bGQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIxIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5faGVhZGVyIj4KKyAgICA8dmFsdWU+RmVsaGFzem7DoWzDs2kgYWRhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjIiIG5hbWU9Imludml0ZWRfdXNlcndpbl9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+QSBiZWNlbmV2ZWQgZWhoZXogYSBrb25mZXJlbmNpw6Fob3o8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIzIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fbG9naW4iPgorICAgIDx2YWx1ZT5CZWNlbsOpdjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjQiIG5hbWU9Imludml0ZWRfdXNlcndpbl9maXJzdG5hbWUiPgorICAgIDx2YWx1ZT5LZXJlc3p0bsOpdjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjUiIG5hbWU9Imludml0ZWRfdXNlcndpbl9sYXN0bmFtZSI+CisgICAgPHZhbHVlPkNzYWzDoWRuw6l2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNiIgbmFtZT0iaW52aXRlZF91c2Vyd2luX21haWwiPgorICAgIDx2YWx1ZT5FbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjciIG5hbWU9Imludml0ZWRfdXNlcndpbl9sYW5nIj4KKyAgICA8dmFsdWU+TnllbHY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI4IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZW50ZXIiPgorICAgIDx2YWx1ZT5iZXZpdGVsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyOSIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2VudGVyIj4KKyAgICA8dmFsdWU+QmV0w7ZsdMOpczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzAiIG5hbWU9Imludml0ZWRfdXNlcndpbl9lbnRlciI+CisgICAgPHZhbHVlPkFkYXRvayBiZXTDtmx0w6lzZSwga8OpcmxlayB2w6FyaiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMxIiBuYW1lPSJ1c2VyX3JlZ2lzdGVyRmFsc2VQV0QiPgorICAgIDx2YWx1ZT5Sb3NzeiBqZWxzesOzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMiIgbmFtZT0idXNlcl9yZWdpc3RlckZhbHNlUFdESGVhZGVyIj4KKyAgICA8dmFsdWU+QWRqIG1lZyBrw6l0IG1lZ2VneWV6xZEgbGVnYWzDoWJiIDYga2FyYWt0ZXIgaG9zc3rDuiBqZWxzesOzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzMiIG5hbWU9InVzZXJfcmVnaXN0ZXJNYWlsRXJyb3IiPgorICAgIDx2YWx1ZT5IaWLDoXMgZS1tYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzNCIgbmFtZT0idXNlcl9yZWdpc3Rlck1haWxFcnJvckhlYWRlciI+CisgICAgPHZhbHVlPkhpYsOhcyBlLW1haWwgY8OtbWV0IGFkdMOhbCBtZWc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM1IiBuYW1lPSJ1c2VyX3JlZ2lzdGVyU3VjY2VzcyI+CisgICAgPHZhbHVlPkEgcmVnaXN6dHLDoWNpw7MgbWVndMO2cnTDqW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzNiIgbmFtZT0idXNlcl9yZWdpc3RlclN1Y2Nlc3NIZWFkZXIiPgorICAgIDx2YWx1ZT5BeiBmacOza29kIGVsa8Opc3rDvGx0LiBCZWzDqXBoZXRzei48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM3IiBuYW1lPSJ1c2VyX3NoYXJpbmdfbWVzc2FnZSI+CisgICAgPHZhbHVlPkEga8OpcGVybnnFkWRldCBuZW0gb3N6dGhhdG9kIG1lZyBtb3N0LiBWYWxha2kgbcOhcyBtw6FyIG1lZ29zenRvdHRhIGF6IMO2dsOpdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM4IiBuYW1lPSJ1c2VyX3NoYXJpbmdfbWVzc2FnZUhlYWRlciI+CisgICAgPHZhbHVlPk1lZ29zenTDoXMgbWVndGlsdHZhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzOSIgbmFtZT0idXNlcl9kb1N0YXJ0U2NyZWVuVmlld2VyIj4KKyAgICA8dmFsdWU+S8OpcGVybnnFkW1lZ29zenTDoXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQwIiBuYW1lPSJzY3JlZW5fd2FybkJhbmR3aWR0aCI+CisgICAgPHZhbHVlPkhpYsOhcyBzw6F2c3rDqWxlc3PDqWc6IE5lbSBsZWhldGV0dCBzemlua3Jvbml6w6FsbmkgYSBrw6lwZW55xZFkZXQuIEVsIGxlc3puYWsgZG9idmEga8OpcGtvY2vDoWsuIEhhIHNva3N6b3IgamVsZW5payBtZWcgZXogYSBmaWd5ZWxtZXp0ZXTDqXMsIGvDqXJkIG1lZyBhIGVsxZFhZMOzdCwgaG9neSBhIG1pbsWRc8OpZ2V0IHZlZ3llIHZpc3N6YS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQxIiBuYW1lPSJzY3JlZW5fdXNlcmxhYmVsIj4KKyAgICA8dmFsdWU+S8OpcGVybnnFkTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQyIiBuYW1lPSJ3aGl0ZWJvYXJkX3RhYl9wYWludCI+CisgICAgPHZhbHVlPlJhano8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQzIiBuYW1lPSJ3aGl0ZWJvYXJkX3RhYl9kb2N1bWVudCI+CisgICAgPHZhbHVlPkRva3VtZW50dW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ0IiBuYW1lPSJ0YWJiYXJfY2hhdGljb24iPgorICAgIDx2YWx1ZT5Dc2V2ZWo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ1IiBuYW1lPSJ0YWJiYXJfZmlsZXNpY29uIj4KKyAgICA8dmFsdWU+RsOhamxvazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDYiIG5hbWU9InRhYmJhcl9wYXJ0aWNpcGFudHNpY29uIj4KKyAgICA8dmFsdWU+VGFnb2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ3IiBuYW1lPSJzd2ZwcmVzZW50YXRpb25fbGlzdHNhdmVvcmlnIj4KKyAgICA8dmFsdWU+RXJlZGV0aSBkb2t1bWVudHVtIGxldMO2bHTDqXNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0OCIgbmFtZT0ic3dmcHJlc2VudGF0aW9uX2xpc3RzYXZlcGRmIj4KKyAgICA8dmFsdWU+cGRmIGxldMO2bHTDqXNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0OSIgbmFtZT0ic3dmcHJlc2VudGF0aW9uX2xpc3Rsb2Fkc3dmIj4KKyAgICA8dmFsdWU+QmVtdXRhdMOzIGJldMO2bHTDqXNlIGEgdMOhYmzDoXJhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MCIgbmFtZT0ibmF2aW1haW5fY29uZmlnIj4KKyAgICA8dmFsdWU+QmXDoWxsw610w6Fzb2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUxIiBuYW1lPSJ3aGl0ZWJvYXJkX2JvdW5kaW5nYm94X2RyYWciPgorICAgIDx2YWx1ZT5PYmpla3R1bSBtb3pnYXTDoXNhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MiIgbmFtZT0id2hpdGVib2FyZF9ib3VuZGluZ2JveF9yZXNpemUiPgorICAgIDx2YWx1ZT5PYmpla3R1bSDDoXRtw6lyZXRlesOpc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUzIiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl96b29tIj4KKyAgICA8dmFsdWU+JTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTQiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3NsaWRlIj4KKyAgICA8dmFsdWU+LTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTUiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX2ZpcnN0c2xpZGUiPgorICAgIDx2YWx1ZT5VZ3LDoXMgYXogZWxzxZEgb2xkYWxyYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTYiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3ByZXNsaWRlIj4KKyAgICA8dmFsdWU+VWdyw6FzIGF6IGVsxZF6xZEgb2xkYWxyYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTciIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX25leHRzbGlkZSI+CisgICAgPHZhbHVlPlVncsOhcyBhIGvDtnZldGtlesWRIG9sZGFscmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU4IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9sYXN0c2xpZGUiPgorICAgIDx2YWx1ZT5VZ3LDoXMgYXogdXRvbHPDsyBvbGRhbHJhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1OSIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfem9vbW1pbnVzIj4KKyAgICA8dmFsdWU+S2ljc2luecOtdCAtLTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjAiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3pvb21wbHVzIj4KKyAgICA8dmFsdWU+TmFnecOtdCArKzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjEiIG5hbWU9InNhbHV0YXRpb25fbXIiPgorICAgIDx2YWx1ZT7DmnI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYyIiBuYW1lPSJzYWx1dGF0aW9uX21pc3MiPgorICAgIDx2YWx1ZT5Iw7ZsZ3k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYzIiBuYW1lPSJuYXZpbWFpbl9jb25mYWRtaW4iPgorICAgIDx2YWx1ZT5CZcOhbGzDrXTDoXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY0IiBuYW1lPSJjb25mdGFibGVfaGVhZGVySWQiPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjUiIG5hbWU9ImNvbmZ0YWJsZV9oZWFkZXJrZXkiPgorICAgIDx2YWx1ZT5LdWxjczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjYiIG5hbWU9ImNvbmZhZG1pbmZvcm1faGVhZGVyIj4KKyAgICA8dmFsdWU+QmXDoWxsw610w6FzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2NyIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbGtleSI+CisgICAgPHZhbHVlPkt1bGNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2OCIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbHVwZGF0ZWQiPgorICAgIDx2YWx1ZT51dG9sc8OzIG3Ds2Rvc8OtdMOhczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjkiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWx1cGRhdGVkYnkiPgorICAgIDx2YWx1ZT5tw7Nkb3PDrXR2YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzAiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWxjb21tZW50Ij4KKyAgICA8dmFsdWU+bWVnamVneXrDqXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjcxIiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsa2V5Ij4KKyAgICA8dmFsdWU+w4lydMOpazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzIiIG5hbWU9InR1cm5vdmVybGlzdF9tYXhyZXN1bHRzIj4KKyAgICA8dmFsdWU+LTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzMiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2hlYWRlciI+CisgICAgPHZhbHVlPkZlbGhhc3puw6Fsw7NrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NCIgbmFtZT0ib3JnYW5pc2F0aW9uX3VzZXJzaWNvbmRlbGV0ZSI+CisgICAgPHZhbHVlPmZlbGhhc3puw6Fsw7MgdMO2cmzDqXNlIGEgc3plcnZlemV0YsWRbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzUiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2RlbGV0ZWRoZWFkIj4KKyAgICA8dmFsdWU+dMO2csO2bDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzYiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2FscmVhZGFkZGVkIj4KKyAgICA8dmFsdWU+RXogYSBmZWxoYXN6bsOhbMOzIG3DoXIgdGFnamEgYSBzemVydmV6ZXRuZWsuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NyIgbmFtZT0iZGFzaGJvYXJkX25ld3NoZWFkZXIiPgorICAgIDx2YWx1ZT5Iw61yZWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc4IiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rc2hlYWRlciI+CisgICAgPHZhbHVlPkd5b3JzbGlua2VrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3OSIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua0NvbmYiPgorICAgIDx2YWx1ZT5Lb25mZXJlbmNpw6FyYSBtZWd5ZWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgwIiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rQXVkaXQiPgorICAgIDx2YWx1ZT5FbMWRYWTDoXNyYSBtZWd5ZWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgxIiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rc3VwcG9ydCI+CisgICAgPHZhbHVlPlNlZ8OtdHPDqWc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgyIiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tob21lcGFnZXVybCI+CisgICAgPHZhbHVlPmh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgzIiBuYW1lPSJkYXNoYm9hcmRfcXVpY2ttYWlsaW5nbGlzdHVybCI+CisgICAgPHZhbHVlPmh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9tYWlsLWxpc3RzLmh0bWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg0IiBuYW1lPSJkYXNoYm9hcmRfcmVwb3J0YnVncyI+CisgICAgPHZhbHVlPkhpYmFiZWplbC4hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4NSIgbmFtZT0iZGFzaGJvYXJkX3Jzc2xpc3RpdGVtbGlua3RleHQiPgorICAgIDx2YWx1ZT50b3bDoWJiPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4NiIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua2hvbWVwYWdlbGFiZWwiPgorICAgIDx2YWx1ZT5Qcm9qZWt0IHdlYm9sZGFsYSAoaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODciIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmttYWlsaW5nbGlzdGxhYmVsIj4KKyAgICA8dmFsdWU+RmVsaGFzem7DoWzDs2kgbGV2ZWxlesWRbGlzdGEgKGh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9tYWlsLWxpc3RzLmh0bWwpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4OCIgbmFtZT0ibG9naW5fcmVtZW1iZXJ1c2VyIj4KKyAgICA8dmFsdWU+QmVqZWxlbnRrZXrDqXMgbWVnamVneXrDqXNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4OSIgbmFtZT0ibWFpbl9uYXZpIj4KKyAgICA8dmFsdWU+VGFydGFsb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkwIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+S2V6ZMWRb2xkYWxhbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTEiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5UYWzDoWxrb3rDs2ltPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MiIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPkVzZW3DqW55ZWltPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MyIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPk55aWx2w6Fub3MgdGFsw6Fsa296w7NrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPlrDoXJ0a8O2csWxIHRhbMOhbGtvesOzazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTUiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5OeWlsdsOhbm9zIGVsxZFhZMOhc29rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NiIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPlrDoXJ0a8O2csWxIGVsxZFhZMOhc29rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NyIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPk55aWx2w6Fub3MgdGFydGFsbWFrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5OCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPlrDoXJ0a8O2csWxIHRhcnRhbG1hazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTkiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5TemVtw6lseWVzIHRhcnRhbG1hazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDAiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAxIiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+TW9kZXLDoWzDoXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAyIiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+SmVsZW50a2V6w6lzIGVsxZFhZMOzbmFrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMyIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPlN6YXZhesOhczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDQiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5Gw6FqbCB2w6FsYXN6dMOhczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDUiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5CZcOhbGzDrXTDoXNvazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDYiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5LYW1lcmEgw6lzIG1pa3JvZm9uIGJlw6FsbMOtdMOhc29rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNyIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPlTDoWJsYSBiZcOhbGzDrXTDoXNvazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDgiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5LaWzDqXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA5IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+Vmlzc3phIGEgc3pvYsOha2hvejwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTAiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5LaWzDqXDDqXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzExIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPkVsZmVsZWp0ZXR0ZWQgYSBqZWxzemF2YWQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMiIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5KZWxzesOzIHTDtnJsw6lzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTMiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+RS1tYWlsIGFsYXBqw6FuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxNCIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5CZWplbGVudGtlesOpcyBhbGFwasOhbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTUiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+QXogZS1tYWlsIGPDrW1lZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTYiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+QSBiZWplbGVudGtlesWRIG5ldmVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxNyIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5MZXbDqWwga8O8bGTDqXNlICh3aXRoIHJlc2V0IGxpbmspPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxOCIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5OZW0gdGFsw6FsaGF0w7MgYXogZS1tYWlsIGPDrW0uIEVsbGVuxZFyaXpkLCBob2d5IHVneWFuYXp0IGF6IGUtbWFpbCBjw61tZXQgYWR0YWQgbWVnIGFtaXQgYSBmZWxoYXN6bsOhbMOzIGzDqXRyZWhvesOhc8OhaG96IGhhc3puw6FsdMOhbC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE5IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPkvDqXJsZWsgYWRkIG1lZyBheiBlLW1haWwgY8OtbWV0IHZhZ3kgZmVsaGFzem7DoWzDs2kgbmV2ZXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyMCIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5OaW5jcyBmZWxoYXN6bsOhbMOzIGVoaGV6IGEgbsOpdmhlei48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIxIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPkEgbGV2w6lsLCBhbWl0IGvDvGxkdMO8bmsgbmVrZWQsIHRhcnRhbG1heiBlZ3kgc3BlY2nDoWxpcyBsaW5rZXQsIGVsbGVuxZFyaXpkIGEgcG9zdGFmacOza29kYXQuIEhhIG3DqWcgbmVtIGthcHRhZCBtZWcgYSBsZXZlbGV0LCDDoWxsw610c2QgYmUgYSBzcGFtc3rFsXLFkWRldCDDqXMga8O8bGRkIMO6anJhIGEgbWVnZXLFkXPDrXTFkSBlLW1haWwtdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIyIiBuYW1lPSJlcnJvcnR5cGUiPgorICAgIDx2YWx1ZT5IaWJhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyMyIgbmFtZT0iZXJyb3J0eXBlIj4KKyAgICA8dmFsdWU+w5x6ZW5ldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjQiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPlJvc3N6IEhhc2guIEEgZmVsaGFzem7DoWxoYXTDsyBuZW0gdGFsw6FsaGF0w7MuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNSIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+SmVsc3rDsyB0w7ZybMOpc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI2IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5CZWplbGVudGtlesWRIG7DqXY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI3IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5KZWxzesOzdsOhbHTDoXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI4IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT7DmmogamVsc3rDszwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjkiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPkplbHN6w7Mgw7pqcmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMwIiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5BIGJlZ8OpcGVsdCBqZWxzemF2YWsgbmVtIGVneWV6bmVrIG1lZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMxIiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT40IHZhZ3kgdMO2YmIga2FyYWt0ZXI7IGtpcy9uYWd5YmV0xbEgc3rDoW3DrXQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzMiIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+SmVsc3rDsyBiZcOhbGzDrXR2YS4gQmVqZWxlbnRrZXpoZXRzei48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMzIiBuYW1lPSJycGNjYWxsYmFjayI+CisgICAgPHZhbHVlPlJlbmRiZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM0IiBuYW1lPSJycGNnZW5lcmFsZXJyb3IiPgorICAgIDx2YWx1ZT5Jc21lcmV0bGVuIGhpYmEuIMONcmQgbWVnIGEgZmVqbGVzenTFkWtuZWsuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5GZWxoYXN6bsOhbMOzbsOpdiBuZW0gdGFsw6FsaGF0w7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM2IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPkhpYsOhcyBqZWxzesOzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNyIgbmFtZT0ibG9nb3V0Ij4KKyAgICA8dmFsdWU+U2lrZXJlcyBraWplbGVudGtlesOpczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzgiIG5hbWU9InJlZ2lzdHJhdGlvbiI+CisgICAgPHZhbHVlPlJlZ2lzenRyw6FjacOzIGxldGlsdHZhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzkiIG5hbWU9InJlZ2lzdHJhdGlvbiI+CisgICAgPHZhbHVlPkhpYsOhcyBFLW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQwIiBuYW1lPSJyZWdpc3RyYXRpb24iPgorICAgIDx2YWx1ZT5sw6l0ZXrFkSBmw6FqbG7DqXYsIHbDoWxhc3N6IG3DoXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MSIgbmFtZT0iZmlsZWJyb3dzZXIiPgorICAgIDx2YWx1ZT5hIGbDoWpsbsOpdiB0w7psIHLDtnZpZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDIiIG5hbWU9ImZpbGVicm93c2VyIj4KKyAgICA8dmFsdWU+Q8OtbSBuZW0gbWVudGhldMWRPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MyIgbmFtZT0idXNlcmFkbWluIj4KKyAgICA8dmFsdWU+RmVsaGFzem7DoWzDsyBob3p6w6FhZHZhIGRlIGhvenrDoSBrZWxsIHJlbmRlbG5pIFN6ZXJ2ZXpldGhleiwga8O8bMO2bmJlbiBuZW0gZm9nIHR1ZG5pIGJlamVsZW50a2V6bmkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NCIgbmFtZT0iYWRtaW5mb3JtcyI+CisgICAgPHZhbHVlPsOaaiBiZWplZ3l6w6lzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+Tm8gRmllbGQgZm91bmQgd2l0aCB0aGlzIEZpZWxkSWQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+Tm8gTGFiZWwgZm91bmQgZm9yIHRoYXQgRmllbGQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NyIgbmFtZT0iZXJyb3JtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRtaW5pc3p0csOhdG9yaSBqb2cgc3rDvGtzw6lnZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ4IiBuYW1lPSJtYWlubmF2aSI+CisgICAgPHZhbHVlPk55ZWx2LXN6ZXJrZXN6dMWRPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0OSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TnllbHY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUwIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5DaW1rZS1JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTEiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkNpbWtlLW7DqXY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUyIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7DiXJ0w6lrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1MyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TWV6xZHDqXJ0w6lrZWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU0IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5DaW1rZW7DqXY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU1IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5DaW1rZcOpcnTDqWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU2IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5DaW1rZS1JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTciIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkNzYWsgYSBjaW1rZSDDqXJ0w6lrw6l0IHTDtnLDtmxoZXRlZCDDqXMgbmVtIGEgbWV6xZF0ISBBIG1lesWRdCBuZW0gdMO2csO2bGhldGVkLCBtZXJ0IG3DoXMgbnllbHZiZW4gc3rDvGtzw6lnZXMgbGVoZXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1OCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+SGliw6FzIGNpbWtlLUlELiBBIEZpZWxkTGFuZ3VhZ2VzdmFsdWVzX0lkIG5lbSB0YWzDoWxoYXTDsyBheiBhZGF0YsOhemlzYmFuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTkiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkV6IGEgbWV6xZEgbmVtIHTDtnLDtmxoZXTFkS4gQ3NhayBhIGNpbWtlIMOpcnTDqWvDqXQgdMO2csO2bGhldGVkLiBOaW5jcyBiZXTDtmx0w7Z0dCBjaW1rZSwgdmFneSBuaW5jcyBraXbDoWxhc3p0dmEgdmFneSBuaW5jcyBkZWZpbmnDoWx2YSBlaGhleiBhIG55ZWx2aGV6LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjAiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPmV4cG9ydMOhbMOhczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjEiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPktpIGtlbGwgamVsZW50a2V6bmVkLCBob2d5IGzDoXNkIGEgdsOhbHRvesOhc29rYXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+w5pqIG55ZWx2IGhvenrDoWFkw6FzYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjMiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPk55ZWx2IHTDtnJsw6lzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjQiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPsOaaiBueWVsdiBob3p6w6FhZMOhc2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY1IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5Ow6l2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+bnllbHYgaG96esOhYWTDoXNhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TWVudMOpczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjgiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPnVncsOhcyBheiBlbHPFkXJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2OSIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+dWdyw6FzIGF6IGVsxZF6xZFyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzAiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPnVncsOhcyBhIGvDtnZldGtlesWRcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzcxIiBuYW1lPSJ0dXJub3Zlcmxpc3QiPgorICAgIDx2YWx1ZT51Z3LDoXMgYXogdXRvbHPDs3JhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MiIgbmFtZT0idmlkZW9ib3giPgorICAgIDx2YWx1ZT5hIGZlbGhhc3puw6Fsw7MgYmVzesOpbCAoQnkgY2xpY2tpbmcgaGVyZSB5b3UgY2FuIGdpdmUgZXhjbHVzaXZlIGF1ZGlvIC8gbXV0ZSB0aGUgbWljcm9waG9uZSBvZiBvdGhlcnMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MyIgbmFtZT0idmlkZW9ib3giPgorICAgIDx2YWx1ZT5oYW5nIGtpL2Jla2FwY3NvbMOhc2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc0IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5SZW5kc3plcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzUiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPkJlw6FsbMOtdMOhc2FpZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzYiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPsOcZHYsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3NyIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+U3plbcOpbHllcyBhZGF0b2sgc3plcmtlc3p0w6lzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzgiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPsOaaiDDvHplbmV0ZWs6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3OSIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+w5pqIGvDqXAgZmVsdMO2bHTDqXNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4MCIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5GZWxoLmFkYXRvayAtIG1lbnTDqXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgxIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPk1pbmRlbiBzemVydmV6ZXRuZWsgbMOpdGV6bmllIGtlbGwhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4MiIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5leHBvcnTDoWzDoXMgaW5kw610w6FzYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODMiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+U3plcnZlemV0ZWsgc3plcmludDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODQiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+ZXhwb3J0w6Fsw6FzIGluZMOtdMOhc2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg1IiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPkZlbGguYWRhdG9rIC0gYmV0w7ZsdMOpczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODYiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+dsOhbGFzc3ogdXNlcnMueG1sIC10PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+YmV0w7ZsdMOpczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODgiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPlhNTC1iZSBtZW50w6lzIC0gRXplayBhIGbDoWpsb2sgZmVsaGFzem7DoWxoYXTDs2s6IC0gQSBwcm9qZWt0bmVrIGZlbGFqw6FubGhhdMOzIC0gTcOhcyByZW5kc3plcmJlIGJldMO2bHRoZXTFkSAtIE1lbnTDqXMgLSBTemVtw6lseXJlIHN6YWJoYXTDsyAtIEJldGVoZXTFkSBhIGxhbmd1YWdlIGvDtm55dnTDoXJiYSB0ZWxlcMOtdMOpc2hlejwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODkiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPlbDoWxhc3N6IGtpIGVneSBiZXTDtmx0ZW5kxZEgbnllbHZpIGbDoWpsdC4gVsOhbGFzemQga2kgYSBrw612w6FudCBueWVsdmV0IGEgbGVnw7ZyZMO8bMWRIG1lbsO8YsWRbCEgTWluZGVneSwgaG9neSBhIGbDoWpsbmFrIG1pIGEgbmV2ZSwgYSBraXbDoWxhc3p0b3R0IG55ZWx2aGV6IGxlc3ogbWVudHZlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTAiIG5hbWU9ImltcG9ydHdpbmRvdyI+CisgICAgPHZhbHVlPmJldMO2bHTDqXMgLSB2w6FsYXNzeiBmw6FqbHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkxIiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+TWVudMOpcyBtaW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5MiIgbmFtZT0icmVjb3JkaW5nc2F2ZXdpbiI+CisgICAgPHZhbHVlPk7DqXY6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5MyIgbmFtZT0icmVjb3JkaW5nc2F2ZXdpbiI+CisgICAgPHZhbHVlPk1lZ2plZ3l6w6lzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTQiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT5tZW50w6lzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+RmVsdsOpdGVsZWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk2IiBuYW1lPSJyZWNvcmRlciI+CisgICAgPHZhbHVlPkZlbHbDqXRlbGVrIG1lZ3Rla2ludMOpc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk3IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5OeWlsdsOhbm9zIMOpcyB6w6FydGvDtnLFsSBzem9iw6FrIGZlbHbDqXRlbGVpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5OCIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+RmVsaGFzem7DoWzDs2sgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTkiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPkNzYXRsYWtvem90dDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAwIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAxIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5GZWxoYXN6bsOhbMOzayBlYmJlbiBhIHN6b2LDoWJhbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAyIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5mcmlzc8OtdMOpczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDMiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPkEgc3pvYmEgbWVndGVsdC4gUHLDs2LDoWxrb3p6IHDDoXIgcGVyYyBtw7psdmEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNCIgbmFtZT0icm9vbXNMaXN0Ij4KKyAgICA8dmFsdWU+a2F0dGludHMgYSBzem9iw6FyYSBheiBpbmZvcm3DoWNpw7Nrw6lyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNSIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+Q3NldmVnw6lzIGEgZmVsaGFzem7DoWzDs2trYWwgYSBzem9iw6FiYW46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNiIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+U3pvYmE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNyIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+RmVsaGFzem7DoWzDs2sgYSBzem9iw6FiYW46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwOCIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+aW5uZW50xZFsOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDkiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPmZlbHbDqXRlbCBsZWrDoXRzesOhc2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDEwIiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5Ib3Nzejo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDExIiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5Ew6F0dW06PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMiIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+RmVsdsOpdGVsIMO8emVtbcOzZCEgTmVtIHbDoWx0b3p0YXRoYXTDsyBtZWcgZWd5IMOpcnTDqWsgc2VtLCBtZXJ0IGV6IGVneSBmZWx2ZXR0IGbDoWpsITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTMiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkEgZmVsdsOpdGVsIGxlasOhdHN6w6FzYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTQiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkxlasOhdHN6w6FzIC8gTWVnw6FsbMOtdMOhczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTUiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkZlbHbDqXRlbCBpbmTDrXTDoXNhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxNiIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+RmVsdsOpdGVsIG1lZ8OhbGzDrXTDoXNhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxNyIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+RmVsdsOpdGVsOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTgiIG5hbWU9InJlY29yZF9lcnJvcl9tc2ciPgorICAgIDx2YWx1ZT5Nw6FyIHZhbGFraSBmZWx2w6l0ZWx0IGvDqXN6w610OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTkiIG5hbWU9InJlY29yZF9tZXNzYWdlIj4KKyAgICA8dmFsdWU+RmVsdsOpdGVsISBGZWxoYXN6bsOhbMOzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjAiIG5hbWU9InJlY29yZF9jYW5jZWwiPgorICAgIDx2YWx1ZT5tw6lnc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIxIiBuYW1lPSJyZWNvcmRfY2FuY2FsX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5BIGZlbHbDqXRlbCBtZWcgbGVzeiBzemFrw610dmEgbWVudMOpcyBuw6lsa8O8bC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIyIiBuYW1lPSJjYW5jZWxfZGlhbG9nX3Jlc3VtZSI+CisgICAgPHZhbHVlPsO6anJhaW5kw610PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyMyIgbmFtZT0iY2FuY2VsX2RpYWxvZ19yZXN1bWVfdG9vbHRpcCI+CisgICAgPHZhbHVlPlrDoXJkIGJlIGF6IGFibGFrb3Qgw6lzIGluZMOtdHNkIMO6anJhIGEgZmVsdsOpdGVsdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI0IiBuYW1lPSJwYWludHRvb2xzX2VsbGlwc2VfY29sb3IiPgorICAgIDx2YWx1ZT5Wb25hbHN6aW4gdsOhbHRvenRhdMOhczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjUiIG5hbWU9ImNvbG9ycGlja2VyX2hlYWQiPgorICAgIDx2YWx1ZT5TemluIHbDoWxhc3p0w6FzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyNiIgbmFtZT0icGFpbnR0b29sc19saW5lX2Rpc2FibGUiPgorICAgIDx2YWx1ZT5LaSAvIEJla2FwY3NvbGphIGEgdm9uYWxzemludDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjciIG5hbWU9InBhaW50dG9vbHNfZmlsbF9kaXNhYmxlIj4KKyAgICA8dmFsdWU+S2l0w7ZsdMWRc3ppbiB2w6FsdG96dGF0w6FzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyOCIgbmFtZT0icGFpbnR0b29sc19saW5lX2Rpc2FibGUiPgorICAgIDx2YWx1ZT5LaSAvIEJla2FwY3NvbGphIGEga2l0w7ZsdMOpc3N6aW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyOSIgbmFtZT0iY2hhbmdlX3dpZHRoX2Fycm93X2Rvd25fc2xpZGVyIj4KKyAgICA8dmFsdWU+Vm9uYWx2YXN0YWdzw6FnIHbDoWx0b3p0YXTDoXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMwIiBuYW1lPSJjbG9zZV9zbWFsbF9wb3B1cHMiPgorICAgIDx2YWx1ZT5iZXrDoXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMxIiBuYW1lPSJwYWludF90b29sX2xldHRlciI+CisgICAgPHZhbHVlPkJldMWxbcOpcmV0IHbDoWx0b3p0YXTDoXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMyIiBuYW1lPSJyZWNvcmRpbmdzbGlzdF9kZWxldGUiPgorICAgIDx2YWx1ZT5GZWx2w6l0ZWwgdMO2cmzDqXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMzIiBuYW1lPSJyZWNvcmRpbmdzbGlzdF9yZWNvcmRlZEJ5R3Vlc3QiPgorICAgIDx2YWx1ZT5WZW5kw6lnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNCIgbmFtZT0icmVjb3JkaW5nc2xpc3RfcmVjb3JkZWRieSI+CisgICAgPHZhbHVlPktpdMWRbDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM1IiBuYW1lPSJyZWNvcmRpbmdzX3RhYmxlX2hlYWRfbmFtZSI+CisgICAgPHZhbHVlPk7DqXY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM2IiBuYW1lPSJyZWNvcmRpbmdzX3RhYmxlX2hlYWRfcm9vbSI+CisgICAgPHZhbHVlPlN6b2JhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNyIgbmFtZT0icmVjb3JkaW5nc190YWJsZV9oZWFkX2RhdGUiPgorICAgIDx2YWx1ZT5Ew6F0dW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM4IiBuYW1lPSJyZWNvcmRfc3RhcnRfY2FuY2VsIj4KKyAgICA8dmFsdWU+bcOpZ3NlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzOSIgbmFtZT0icmVjb3JkX3N0YXJ0X3N0YXJ0Ij4KKyAgICA8dmFsdWU+ZmVsdsOpdGVsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MCIgbmFtZT0iZmlsZXNicm93c2VyX3RhYmxlX2hlYWRfbmFtZSI+CisgICAgPHZhbHVlPk7DqXY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQxIiBuYW1lPSJmaWxlc2Jyb3dzZXJfdGFibGVfaGVhZF9kYXRlIj4KKyAgICA8dmFsdWU+RMOhdHVtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MiIgbmFtZT0iY2hhdF9jbGVhcl9oaXN0b3J5Ij4KKyAgICA8dmFsdWU+U3plcnZlci1jc2V2ZWfDqXNpIG5hcGzDsyB0w7ZybMOpczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDMiIG5hbWU9ImNoYXRfb3ZlcmFsbF9oZWFkZXIiPgorICAgIDx2YWx1ZT5Dc2V2ZWfDqXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ0IiBuYW1lPSJjaGF0X3NlbmRfYnRuIj4KKyAgICA8dmFsdWU+w7x6ZW5ldCBrw7xsZMOpc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ1IiBuYW1lPSJjaGF0X2Vtb3RfYnRuIj4KKyAgICA8dmFsdWU+RW1vdGljb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NiIgbmFtZT0iY2hhdF9lbW90X3dpbiI+CisgICAgPHZhbHVlPkVtb3RpY29uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDciIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5ncyI+CisgICAgPHZhbHVlPlbDoWxhc3N6IGVuZ2Vkw6lseWV6ZXR0IGVzemvDtnp0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0OCIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2NvbWJvIj4KKyAgICA8dmFsdWU+SGFuZyDDqXMga8OpcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDkiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPkNzYWsgaGFuZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTAiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPkNzYWsga8OpcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTEiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPkhhbmcgw6lzIGvDqXAgbsOpbGvDvGwgKMOhbGzDsyBrw6lwKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTIiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19pbmZvX3RleHQiPgorICAgIDx2YWx1ZT5TZW0gaGFuZyBzZW0ga8OpcCBuZW0ga2Vyw7xsIG1lZ29zenTDoXNyYSBhIGfDqXBlZHLFkWwsIGhhbmVtIGEgZmVsaGFzem7DoWzDs2kgYWRhdGFpZGLDs2wgYSBmZWx0w7ZsdMO2dHQga8OpcC4gSGFzem7DoWxkIGV6dCwgaGEgZ29uZGphaWQgdmFubmFrIGEgc8OhdnN6w6lsZXNzw6lnZ2VsIHZhZ3kgbmFneW9uIGxhc3PDuiBheiBJbnRlcm5ldGVkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTMiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfbW9uZGF5Ij4KKyAgICA8dmFsdWU+aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTQiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfdHVlc2RheSI+CisgICAgPHZhbHVlPms8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU1IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3dlZG5lc2RheSI+CisgICAgPHZhbHVlPnN6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NiIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV90aHVyc2RheSI+CisgICAgPHZhbHVlPmNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NyIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9mcmlkYXkiPgorICAgIDx2YWx1ZT5wPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1OCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9zYXR1cmRheSI+CisgICAgPHZhbHVlPnN6bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTkiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfc3VuZGF5Ij4KKyAgICA8dmFsdWU+djwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjAiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfbW9uZGF5Ij4KKyAgICA8dmFsdWU+aMOpdGbFkTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjEiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfVHVlc2RheUxhYmVsIj4KKyAgICA8dmFsdWU+a2VkZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjIiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfV2VkbmVzZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5zemVyZGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYzIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1RodXJzZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5jc8O8dMO2cnTDtms8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY0IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX0ZyaWRheUxhYmVsIj4KKyAgICA8dmFsdWU+cMOpbnRlazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjUiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfU2F0dXJkYXlMYWJlbCI+CisgICAgPHZhbHVlPnN6b21iYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY2IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1N1bmRheUxhYmVsIj4KKyAgICA8dmFsdWU+dmFzw6FybmFwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NyIgbmFtZT0iY2FsZW5kYXJfd2Vla251bWJlcl9oZWFkZXIiPgorICAgIDx2YWx1ZT5oc3o8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY4IiBuYW1lPSJjYWxlbmRhcl93ZWVrbnVtYmVyX2hlYWRlclRvb2x0aXAiPgorICAgIDx2YWx1ZT5IZXRlayBzesOhbWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY5IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+amFudcOhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzAiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5mZWJydcOhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzEiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5tw6FyY2l1czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzIiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT7DoXByaWxpczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzMiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5tw6FqdXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc0IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+asO6bml1czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzUiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5qw7psaXVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3NiIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPmF1Z3VzenR1czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzciIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5zemVwdGVtYmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3OCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPm9rdMOzYmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3OSIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPm5vdmVtYmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4MCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPmRlY2VtYmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4MSIgbmFtZT0iY2FsZW5kYXJ3aW5faGVhZGVyIj4KKyAgICA8dmFsdWU+TmFwdMOhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODIiIG5hbWU9InJvb21hZG1pbl9sYWJlbE51bWJlck9mUGFydGljaXBhbnRzIj4KKyAgICA8dmFsdWU+UsOpc3p0dmV2xZFrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4MyIgbmFtZT0icm9vbVZhbHVlX2FkdmFuY2VkU2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Ow6l6ZXQgYmXDoWxsw610w6Fzb2sgbWVndGVraW50w6lzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODQiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfdmlkZW9YIj4KKyAgICA8dmFsdWU+WCB8IFk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg1IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3ZpZGVvWSI+CisgICAgPHZhbHVlPlN6w6lsLiB8IE1hZ2Fzc8OhZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODYiIG5hbWU9InJvb21BZG1pbl9sYXlvdXQiPgorICAgIDx2YWx1ZT5WaWRlby1BYmxhazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODciIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfbW9kIj4KKyAgICA8dmFsdWU+RWzFkWFkw7NpLUFibGFrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4OCIgbmFtZT0icm9vbUFkbWluX2xheW91dF9tb2RfcG9zIj4KKyAgICA8dmFsdWU+WDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODkiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPlTDoWJsYS1BYmxhazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTAiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZF9zaG93Ij4KKyAgICA8dmFsdWU+RW5nZWTDqWx5ZXpldHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkxIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmRfcG9zIj4KKyAgICA8dmFsdWU+WCB8IFk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkyIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5TesOpbC4gfCBNYWdhc3PDoWc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkzIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X2ZpbGVzIj4KKyAgICA8dmFsdWU+RsOhamxvayxjc2V2ZWfDqXMscsOpc3p0dmV2xZFrIC0gQWJsYWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk0IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X2ZpbGVzX3Nob3ciPgorICAgIDx2YWx1ZT5FbmdlZMOpbHllemV0dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTUiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXNfcG9zIj4KKyAgICA8dmFsdWU+WCB8WTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTYiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXMiPgorICAgIDx2YWx1ZT5TesOpbC4gfCBNYWdhc3PDoWc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk3IiBuYW1lPSJtb2RlcmF0b3JfZ29uZV9tZXNzYWdlIj4KKyAgICA8dmFsdWU+QXogZWzFkWFkw7MgZWxoYWd5dGEgYSBzem9iw6F0LiBKZWxlbmxlZyBuaW5jcyBlbMWRYWTDsy4gSmVsZW50a2V6aGV0c3ogZWzFkWFkw7NuYWsgdmFneSB2w6FyaGF0c3ouPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5OCIgbmFtZT0ibW9kZXJhdG9yX21lc3NhZ2VfZXZlbnRfbm9fbW9kIj4KKyAgICA8dmFsdWU+TmluY3MgZWzFkWFkw7MgYSBzem9iw6FiYW4sIGRlIHZhbm5hayByw6lzenR2ZXbFkWsuIEplbGVudGtlenogZWzFkWFkw7NuYWsgdmFneSB2w6Fyai48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk5IiBuYW1lPSJmZWVkYmFja190ZW1wbGF0ZV9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIHZpc3N6YWplbHrDqXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAwIiBuYW1lPSJpbnZpdGF0aW9uX3RlbXBsYXRlX2hlYWQiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgLSBNZWdow612w7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAxIiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfZnJvbSI+CisgICAgPHZhbHVlPsOcemVuZXQgZXR0xZFsIGEgZmVsaGFzem7DoWzDs3TDs2w6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwMiIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X21lc3NhZ2UiPgorICAgIDx2YWx1ZT7DnHplbmV0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDMiIG5hbWU9Imludml0YXRpb25fdGV4dF9jbGlja190ZXh0Ij4KKyAgICA8dmFsdWU+S2F0dGludHMgZXJyZSBhIGxpbmtyZSBhIHRhbMOhbGtvesOza29uIHZhbMOzIHLDqXN6dsOpdGVsaGV6OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDQiIG5hbWU9Imludml0YXRpb25fdGV4dF9jbGlja190ZXh0X2xpbmsiPgorICAgIDx2YWx1ZT5LYXR0aW50cyBpZGUgYSBzem9iw6FiYSB2YWzDsyBiZWzDqXDDqXNoZXo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA1IiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfY2xpY2tfdGV4dF9oZWxwIj4KKyAgICA8dmFsdWU+aGEgcHJvYmzDqW3DoWQgYWTDs2RpayBhIGxpbmtrZWwgYWtrb3IgZXp0IG3DoXNvbGQgYSBiw7ZuZ8Opc3rFkSBjw61tc29yw6FiYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA2IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSBSZWdpc3p0csOhY2nDszwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDciIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9oZWFkMiI+CisgICAgPHZhbHVlPkZlbGhhc3puw6Fsw7NpIGFkYXRhaWQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwOCIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X3VzZXJuYW1lIj4KKyAgICA8dmFsdWU+QmVqZWwubsOpdjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA5IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfcGFzcyI+CisgICAgPHZhbHVlPkplbHN6w7M6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxMCIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X21haWwiPgorICAgIDx2YWx1ZT5FTWFpbDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTExIiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfYnllIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FLUNzYXBhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTIiIG5hbWU9InJlZ2lzdGVyX21haWxfc3ViamVjdCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSBSZWdpc3p0csOhY2nDszwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTMiIG5hbWU9InJlc2V0X3Bhc3N3b3JkX3RlbXBsYXRlX2hlYWQiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgLSBKZWxzesOzIGNzZXJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNCIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfdGVzdF9saW5rIj4KKyAgICA8dmFsdWU+S2F0dGludHMgZXJyZSBhIGxpbmtyZSBhIGplbHN6w7MgY3NlcsOpaGV6OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTUiIG5hbWU9InJlc2V0X3Bhc3N3b3JkX3RlbXBsYXRlX3RleHQyX2xpbmsiPgorICAgIDx2YWx1ZT5LYXR0aW50cyBpZGUgYXogw7pqIGplbHN6w7MgbWVnYWTDoXPDoWhvejwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTYiIG5hbWU9InJlc2V0X3Bhc3N3b3JkX3RlbXBsYXRlX3RleHQzX2xpbmsiPgorICAgIDx2YWx1ZT5oYSBwcm9ibMOpbcOhZCBhZMOzZG5hIGEgbGlua2tlbCwga8OpcmxlayBtw6Fzb2xkIMOhdCBlenQgYSBiw7ZuZ8Opc3rFkWQgY8OtbXNvcsOhYmE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNyIgbmFtZT0icmVzZXRfcGFzc3dvcmRfbWFpbF9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIEplbHN6w7MgdsOhbHTDoXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE4IiBuYW1lPSJkYXRlUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5Lw6lybGVrIGFkaiBtZWcgZWd5IMOpcnbDqW55ZXMgZMOhdHVtb3QsIHDDqWxkw6F1bCAyNC4xMi4yMDAxIChubi5oaC7DqcOpw6nDqSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE5IiBuYW1lPSJlbWFpbFJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+S8OpcmxlayBhZGogbWVnIGVneSDDqXJ2w6lueWVzIGUtbWFpbCBjw61tZXQsIHDDqWxkw6F1bCBuYW1lQG1haWwuY29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyMCIgbmFtZT0iZmxvYXRSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPkvDqXJsZWsgYWRqIG1lZyBlZ3kgc3rDoW1vdCwgcMOpbGTDoXVsIDEuMDA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIxIiBuYW1lPSJudW1iZXJSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPkvDqXJsZWsgZWfDqXN6IHN6w6Ftb3ogYWRqIG1lZywgcMOpbGTDoXVsIDEwMDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjIiIG5hbWU9InBob25lUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5Lw6lybGVrIMOpcnbDqW55ZXMgdGVsZWZvbnN6w6Ftb3QgYWRqIG1lZywgcMOpbGTDoXVsICsrNDkgMDEyMyAxMjMxMjM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIzIiBuYW1lPSJ0aW1lUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5Lw6lybGVrIMOpcnbDqW55ZXMgaWTFkXBvbnRvdCBhZGogbWVnLCBww6lsZMOhdWwgMTI6MjMgKMOzw7M6cHApPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3ciPgorICAgIDx2YWx1ZT5KZWxzesOzdmFsIHbDqWR2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjUiIG5hbWU9Imludml0YXRpb25fd2luZG93X3Bhc3N3b3JkTGFiZWwiPgorICAgIDx2YWx1ZT5KZWxzesOzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNiIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWRMYWJlbCI+CisgICAgPHZhbHVlPsOJcnbDqW55ZXNzw6lnaSBwZXJpw7NkdXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI3IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZCI+CisgICAgPHZhbHVlPlbDqWd0ZWxlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjgiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkIj4KKyAgICA8dmFsdWU+SWTFkXN6YWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI5IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZCI+CisgICAgPHZhbHVlPkVneXN6ZXIgaGFzem7DoWxoYXTDszwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzAiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkRnJvbUxhYmVsIj4KKyAgICA8dmFsdWU+RXR0xZFsIMOpcnbDqW55ZXM6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMSIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWRUb0xhYmVsIj4KKyAgICA8dmFsdWU+RWRkaWcgw6lydsOpbnllczo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMyIiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd19NYWlsU3ViamVjdCI+CisgICAgPHZhbHVlPk1lZ2jDrXbDoXMgT3Blbk1lZXRpbmdyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzMiIG5hbWU9Imludml0YXRpb25fZXJyb3IiPgorICAgIDx2YWx1ZT5OaW5jcyBtZWdow612w6FzIGVoaGV6IGEgbWVnaMOtdsOzIGvDs2Rob3ouPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzNCIgbmFtZT0iaW52aXRhdGlvbl9lcnJvciI+CisgICAgPHZhbHVlPkEgbWVnaMOtdsOhcyBtw6FyIGhhc3puw6FsdmEgdm9sdC4gRXogYSB0w61wdXPDuiBtZWdow612w6FzIG5lbSBoYXN6bsOhbGhhdMOzIGZlbCB0w7ZiYnN6w7ZyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzUiIG5hbWU9Imludml0YXRpb25fZXJyb3IiPgorICAgIDx2YWx1ZT5BIG1lZ2jDrXbDsyBrw7NkIG5lbSDDqXJ2w6lueWVzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzYiIG5hbWU9Imludml0YXRpb25fcGFzcyI+CisgICAgPHZhbHVlPkplbHN6w7M6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzNyIgbmFtZT0iaW52aXRhdGlvbl9wYXNzX2J0biI+CisgICAgPHZhbHVlPkplbHN6w7MgZWxsZW7FkXJ6w6lzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzOCIgbmFtZT0iaW52aXRhdGlvbl9wYXNzX2Vycm9yIj4KKyAgICA8dmFsdWU+SGliw6FzIGplbHN6w7MhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzOSIgbmFtZT0iQnJvd3NlciI+CisgICAgPHZhbHVlPkLDtm5nw6lzesWRPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0MCIgbmFtZT0iYXVkaW9fdmlkZW8iPgorICAgIDx2YWx1ZT5IYW5nL2vDqXAgc3ppbmtyb25pesOhY2nDszwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDEiIG5hbWU9ImVycm9yQ29kZV9pbnZhbGlkU2Vzc2lvbiI+CisgICAgPHZhbHVlPkEgYmVqZWxlbnRrZXrDqXMgaGVseWVzIHZvbHQsIGRlIHNlc3Npb24gdmFneSBuZW0gYWt0w612IHZhZ3kgbmluY3MgYSBzemVydmVyZW4gdMOhcm9sdmEuIMOaanJhIGJlIGtlbGwgamVsZW50a2V6bmVkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDIiIG5hbWU9ImVycm9yY29kZV9zZXRVc2VyT2JqZWN0Ij4KKyAgICA8dmFsdWU+RXogYSBTZXNzaW9uSWQgbmluY3MgYmVqZWxlbnRrZXp2ZSwgdmFneSBuaW5jc2VuIGFkbWluaXN6dHLDoXRvcmkgam9nYS4gQSBTT0FQIMOhdGrDoXLDs25hayBhZG1pbmlzenRyw6F0b3JpIGpvZ29ra2FsIGtlbGwgZWd5IGZlbGhhc3puw6Fsw7Mgw7pqIGZlbGhhc3puw6Fsw7MgYmXDoWd5YXrDoXPDoWhvei48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQzIiBuYW1lPSJlcnJvcmNvZGVfbG9naW5CeVJlbW90ZVVzZXIiPgorICAgIDx2YWx1ZT5FaGhleiBhIFNlc3Npb24taMO2eiBuaW5jcyBSZW1vdGV1c2VyLURhdGEga2FwY3NvbGF0LiBXZXRoZXIgeW91IGRpZCBub3QgY2FsbCB0aGUgU09BUC1HYXRld2F5IGJlZm9yZSBhY2Nlc3NpbmcgdGhlIEFwcGxpY2F0aW9uIG9yIHlvdSBhcmUgdXNuaWcgYSB3cm9uZyBTZXNzaW9uLUlEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0NCIgbmFtZT0iZGVidWdfbWVzc2FnZV9yZWNvcmRpbmciPgorICAgIDx2YWx1ZT5BIGZlbHbDqXRlbGvDqXN6w610xZEgZWd5ZW5sxZFyZSBiw6l0YSDDoWxsYXBvdMO6ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDUiIG5hbWU9InByb3BlcnR5UGFuZWxYVmFsdWUiPgorICAgIDx2YWx1ZT54PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0NiIgbmFtZT0icHJvcGVydHlQYW5lbFhWYWx1ZUxhYmVsIj4KKyAgICA8dmFsdWU+eC1heGlzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0NyIgbmFtZT0icHJvcGVydHlQYW5lbFlWYWx1ZSI+CisgICAgPHZhbHVlPnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ4IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWVZhbHVlTGFiZWwiPgorICAgIDx2YWx1ZT55LWF4aXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ5IiBuYW1lPSJwcm9wZXJ0eVBhbmVsV2lkdGhWYWx1ZSI+CisgICAgPHZhbHVlPnc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUwIiBuYW1lPSJwcm9wZXJ0eVBhbmVsV2lkdGhWYWx1ZUxhYmVsIj4KKyAgICA8dmFsdWU+d2lkdGg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUxIiBuYW1lPSJwcm9wZXJ0eVBhbmVsSGVpZ2h0VmFsdWUiPgorICAgIDx2YWx1ZT5oPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1MiIgbmFtZT0icHJvcGVydHlQYW5lbEhlaWdodFZhbHVlTGFiZWwiPgorICAgIDx2YWx1ZT5oZWlnaHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUzIiBuYW1lPSJwcm9wZXJ0eU9wYWNpdHlTbGlkZXIiPgorICAgIDx2YWx1ZT5DaGFuZ2UgVHJhbnNwYXJlbmN5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1NCIgbmFtZT0iYnJvd3Nlck9wZW4iPgorICAgIDx2YWx1ZT5Ccm93c2VyIE9wZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU1IiBuYW1lPSJicm93c2VyQ2xvc2UiPgorICAgIDx2YWx1ZT5Ccm93c2VyIENsb3NlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1NiIgbmFtZT0iY29ubmVjdGlvbkxvc3RNZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIENvbm5lY3Rpb24gdG8gdGhlIFNlcnZlciBpcyBsb3N0LiBZb3UgbmVlZCB0byByZWxvYWQgdGhlIEFwcGxpY2F0aW9uIG9yL2FuZCBjaGVjayB5b3VyIE5ldHdvcmsuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1NyIgbmFtZT0iNTU3Ij4KKyAgICA8dmFsdWU+UG9pbnRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTgiIG5hbWU9InN5bmMgbWVzc2FnZSBoZWFkZXIiPgorICAgIDx2YWx1ZT5TeW5jaHJvbml6aW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1OSIgbmFtZT0iU3luY2hyb25pemluZyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3luY2hyb25pemluZyBVc2VycywgcGxlYXNlIHdhaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYwIiBuYW1lPSJleHBvcnRUb1NWRyI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O0Rvd25sb2FkIGFzIFNWRyZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYxIiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7RG93bmxvYWQgYXMgUE5HJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjIiIG5hbWU9ImV4cG9ydFRvSW1hZ2UiPgorICAgIDx2YWx1ZT4mbHQ7dSZndDtEb3dubG9hZCBhcyBKUEcmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MyIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O0Rvd25sb2FkIGFzIFBERiZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY0IiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7RG93bmxvYWQgYXMgVElGJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjUiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5SZW1pbmRlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY2IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+Q2F0ZWdvcnk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2NyIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPlJlcGV0aXRpb246PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2OCIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPm5vbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY5IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+TG9jYXRpb246PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MCIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPlN0YXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkVuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzIiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5UaXRsZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTczIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+Q29tbWVudDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc0IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+SW52aXRlIFBlb3BsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzUiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5EYWlseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzYiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5Nb250aGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NyIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPlllYXJseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzgiIG5hbWU9ImFsZXJ0Ij4KKyAgICA8dmFsdWU+QXBwb2ludG1lbnQtZW5kIGlzIGFmdGVyIG9mIGFwcG9pbnRtZW50LXN0YXJ0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzkiIG5hbWU9ImFsZXJ0Ij4KKyAgICA8dmFsdWU+UGxlYXNlIGluc2VydCBhIHRpdGxlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODAiIG5hbWU9IjU4MCI+CisgICAgPHZhbHVlPlJUTDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODEiIG5hbWU9IjU4MSI+CisgICAgPHZhbHVlPkFjdGl2YXRlIHRoaXMgaWYgeW91IHdyaXRlIGluIGEgcmlnaHQgdG8gbGVmdCBsYW5ndWFnZSAoaW52ZXJzZSB3b3JkIG9yZGVyKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODIiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+RGFzaGJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MyIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT5XYXRjaCByZWNvcmRlZCBNZWV0aW5ncyBvciBFdmVudHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg0IiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPk1lZXRpbmcgLSBNYWtlIGEgY29uZmVyZW5jZSB3aXRoIDQgKHVwIHRvIDE2KSBVc2VycyZsdDtici8mZ3Q7ZXZlcnlib2R5IHdpbGwgaGF2ZSBhdWRpbyArIHZpZGVvIGFjY2VzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODUiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+RXZlbnQgLSBNYWtlIGEgY29uZmVyZW5jZSB3aXRoIHVwIHRvIDIwMCBwYXJ0aWNpcGVudHMmbHQ7YnIvJmd0O09ubHkgdGhlIE1vZGVyYXRvciB3aWxsIGhhdmUgYXVkaW8vdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg2IiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPkNyZWF0ZSB1c2Vycywgcm9vbXMsIG9yZ2FuaXphdGlvbnMmbHQ7YnIvJmd0OyArIGNoYW5nZSBjb25maWd1cmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4NyIgbmFtZT0icm9vbSBBZG1pbmlzdHJhdGlvbiByb29tY2xpZW50cyBsaXN0Ij4KKyAgICA8dmFsdWU+VXNlcnMgaW4gdGhpcyBSb29tIG5vdzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODgiIG5hbWU9InJvb20gQWRtaW5pc3RyYXRpb24gcm9vbWNsaWVudHMgbGlzdCI+CisgICAgPHZhbHVlPklEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4OSIgbmFtZT0icm9vbSBBZG1pbmlzdHJhdGlvbiByb29tY2xpZW50cyBsaXN0Ij4KKyAgICA8dmFsdWU+TG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkwIiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5EPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5MSIgbmFtZT0ic3dmIHN5bmMgbWVzc2FnZSI+CisgICAgPHZhbHVlPkxvYWRpbmcgRG9jdW1lbnQuIFBsZWFzZSB3YWl0IHVudGlsbCBhbGwgQ2xpZW50IGhhdmUgYmVlbiBzeW5jaHJvbml6ZWQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5MiIgbmFtZT0idXBsb2FkIGRpYWxvZyI+CisgICAgPHZhbHVlPlVwbG9hZCBjb21wbGV0ZSwgY29udmVydGluZyBEb2N1bWVudCAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkzIiBuYW1lPSJ1cGxvYWQgZGlhbG9nIj4KKyAgICA8dmFsdWU+U3RhcnQgVXBsb2FkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NCIgbmFtZT0idXBsb2FkIGRpYWxvZyI+CisgICAgPHZhbHVlPlVwbG9hZCBhbmQgSW1wb3J0IERpYWxvZy4gUGxlYXNlIHNlbGVjdCBhIEZpbGUgZnJvbSB5b3VyIERpc2suPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NSIgbmFtZT0idXBsb2FkIERpYWxvZyI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTYiIG5hbWU9InVwbG9hZCBEaWFsb2ciPgorICAgIDx2YWx1ZT5TZWxlY3QgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTciIG5hbWU9ImFkbWluaXN0cmF0aW9uIG5hdmlnYXRpb24iPgorICAgIDx2YWx1ZT5Db25uZWN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTgiIG5hbWU9ImNvbmZhZG1pbiB2YWx1ZSBsaXN0Ij4KKyAgICA8dmFsdWU+VmFsdWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk5IiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+U3RyZWFtaWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAwIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+TG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAxIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+Q29ubmVjdGVkIHNpbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwMiIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPlJvb20gLyBTY29wZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDMiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5LaWNrIFVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA0IiBuYW1lPSJraWNrIHVzZXIgY29uZmlybWF0aW9uIGRpYWxvZyI+CisgICAgPHZhbHVlPktpY2sgVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDUiIG5hbWU9ImtpY2sgdXNlciBjb25maXJtYXRpb24gZGlhbG9nIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGtpY2sgdGhpcyBDbGllbnQgZnJvbSB0aGUgQ29ubmVjdGlvbj8mbHQ7YnIvJmd0OyBUaGlzIGRvZXMgb25seSByZW1vdmUgdGhlIENsaWVudCBmcm9tIHRoZSBjdXJyZW50IFJvb20uVGhlIENsaWVudCBjb3VsZCByZS1sb2dpbiBhZ2Fpbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA2IiBuYW1lPSJraWNrIHVzZXIgbWVzc2FnZSBkaWFsb2ciPgorICAgIDx2YWx1ZT5Zb3VyIHNlc3Npb24gaGFzIGJlZW4gY2xvc2VkIGJ5IGFuIEFkbWluaXN0cmF0b3Igb3IgTW9kZXJhdG9yLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDciIG5hbWU9InVzZXJhbHRlcnNlbGZfcGhvbmUiPgorICAgIDx2YWx1ZT5QaG9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDgiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPlVzZXIgaXMgdGhlIE1vZGVyYXRvciBvZiB0aGlzIFJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA5IiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5Vc2VyIGlzIGFsbG93ZWQgdG8gZHJhdyBvbiB0aGUgV2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTAiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPihSZSkgU3RhcnQgQXVkaW8vVmlkZW8gb3IgY2hhbmdlIERldmljZSBTZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTEiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPkFsbG93IHRoaXMgVXNlciB0byBkcmF3IG9uIHRoZSBXaGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMiIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+UmVtb3ZlIGFiaWxpdHkgdG8gZHJhdyBvbiB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMyIgbmFtZT0iY29uZmVyZW5jZVBhbmVscyI+CisgICAgPHZhbHVlPlVzZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxNCIgbmFtZT0iY29uZmVyZW5jZVBhbmVscyI+CisgICAgPHZhbHVlPkZpbGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxNSIgbmFtZT0iY29uZmVyZW5jZVBhbmVscyI+CisgICAgPHZhbHVlPldoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE2IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+Q2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTciIG5hbWU9Im9yZ2FuaXphdGlvbiBjaG9vc2UgaW5mbyI+CisgICAgPHZhbHVlPllvdXIgYWNjb3VudCBpcyBhc3NpZ25lZCB0byBtdWx0aXBsZSBPcmdhbml6YXRpb25zLiBQbGVhc2UgY2hvb3NlIG9uZSBmb3IgdGhpcyBTZXNzaW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTgiIG5hbWU9ImVycm9yIG1lc3NhZ2Ugcm9vbSBmdWxsIj4KKyAgICA8dmFsdWU+VGhpcyByb29tIGlzIGZ1bGwgYXQgdGhlIG1vbWVudC4gUGxlYXNlIHRyeSBhZ2FpbiBsYXRlci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE5IiBuYW1lPSJyb29tdHlwZXMiPgorICAgIDx2YWx1ZT5Sb29tIFR5cGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIwIiBuYW1lPSJhcHBvaW50ZWRfcm9vbSI+CisgICAgPHZhbHVlPkFwcG9pbnRtZW50IFJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIxIiBuYW1lPSJzZXJ2ZXJ0aW1lIj4KKyAgICA8dmFsdWU+U2VydmVyIFRpbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIyIiBuYW1lPSJpbnZfcmVtaW5kZXJfdGVtcGxhdGVfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSAtIFJlbWluZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyMyIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfZnJvbSI+CisgICAgPHZhbHVlPk1lc3NhZ2UgZnJvbSBVc2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjQiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X21lc3NhZ2UiPgorICAgIDx2YWx1ZT5NZXNzYWdlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjUiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2NsaWNrX3RleHQiPgorICAgIDx2YWx1ZT5DbGljayB0aGlzIGxpbmsgdG8gcGFydGljaXBhdGUgaW4gdGhlIE1lZXRpbmdzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjYiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2NsaWNrX3RleHRfbGluayI+CisgICAgPHZhbHVlPkNsaWNrIGhlcmUgdG8gZW50ZXIgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjciIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2NsaWNrX3RleHRfaGVscCI+CisgICAgPHZhbHVlPmlmIHlvdSBoYXZlIHByb2JsZW1zIHdpdGggdGhlIGxpbmssIHBsZWFzZSBjb3B5IGFuZCBwYXN0ZSB0aGlzIHRvIHlvdXIgYnJvd3Nlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI4IiBuYW1lPSJidG5fc2VhcmNoX2ludGVybiI+CisgICAgPHZhbHVlPnNlYXJjaCBpbnRlcm48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI5IiBuYW1lPSJidG5fc2VhcmNoX2V4dGVybiI+CisgICAgPHZhbHVlPmV4dGVybiB1c2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzAiIG5hbWU9ImxibF9wcmVuYW1lIj4KKyAgICA8dmFsdWU+cHJlIG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMxIiBuYW1lPSJsYmxfbmFtZSI+CisgICAgPHZhbHVlPm5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMyIiBuYW1lPSJsYmxfZW1haWwiPgorICAgIDx2YWx1ZT5FLW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMzIiBuYW1lPSJsb2dvdXRDb25maXJtX3RpdGxlIj4KKyAgICA8dmFsdWU+Q29uZmlybSBsb2dvdXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM0IiBuYW1lPSJsb2dvdXRDb25maXJtX3N1cmVfdG9fbG9nb3V0X3F1ZXN0aW9uIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGxvZ291dCBub3c/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNSIgbmFtZT0ibWFpbiBtZW51Ij4KKyAgICA8dmFsdWU+QWN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzYiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EZW1vIFJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RGVtbyBUaW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzOCIgbmFtZT0ibWVldGluZyBUaW1lciI+CisgICAgPHZhbHVlPk1lZXRpbmcgVGltZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM5IiBuYW1lPSJtZWV0aW5nIFRpbWVyIj4KKyAgICA8dmFsdWU+VGhpcyBSb29tIGlzIGEgRGVtbyBSb29tLiBUbyBkaXNhYmxlIHRoaXMgd2FybmluZyB5b3UgZWl0aGVyIHNob3VsZCBnZXQgYSBwcml2YXRlIG1lZXRpbmcgcm9vbSBmb3IgeW91ciBwZXJzb25hbCB1c2FnZSBvciBzZXQgdXAgYW4gb3duIFNlcnZlci4gWW91IHdpbGwgYmUgYXV0b21hdGljYWxseSBsb2dnZWQgb2ZmIGluOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDAiIG5hbWU9Im1lZXRpbmcgcm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPk1vZGVyYXRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDEiIG5hbWU9Im1vZGVyYXRlZCByb29tIHdhaXRpbmcgbWVzc2FnZSI+CisgICAgPHZhbHVlPlBsZWFzZSB3YWl0IHVudGlsbCB0aGUgTW9kZXJhdG9yIGhhcyBlbnRlcmVkIHRoZSBSb29tLiBUaGUgTW9kZXJhdG9yIGNhbiBiZSBlaXRoZXIgYSBUZWFjaGVyLCBBZG1pbiBvciB0aGUgY3JlYXRvciBvZiB0aGlzIFJvb20uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MiIgbmFtZT0iZXJyb3IgcG9wdXAiPgorICAgIDx2YWx1ZT5PazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDMiIG5hbWU9IndpbmRvdyBzY3JlZW5zaGFyaW5nIj4KKyAgICA8dmFsdWU+SW5jb21pbmcgU2NyZWVuIFNoYXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ0IiBuYW1lPSJ3aW5kb3cgc2NyZWVuIHNoYXJpbmciPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBhIG5ldyBTY3JlZW4gU2hhcmluZyBpbmNvbWluZyBmcm9tIHRoZSBVc2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDUiIG5hbWU9IndpbmRvdyBzY3JlZW4gc2hhcmluZyI+CisgICAgPHZhbHVlPlN0YXJ0IFNoYXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ2IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkFkZCBuZXcgTWVldGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDciIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+TWVldGluZyBSb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0OCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5FdmVudCBSb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0OSIgbmFtZT0ibWFpbiBtZW51IG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Nb2RlcmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1MCIgbmFtZT0ibWVudSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+TW9kZXJhdGUgVXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUxIiBuYW1lPSJtZW51IG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Nb2RlcmF0ZSBSb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTIiIG5hbWU9Im1vZGVyYXRvciBvcmciPgorICAgIDx2YWx1ZT5NPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1MyIgbmFtZT0iY29uZmlybSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+RG8geW91IHdhbnQgdG8gY2hhbmdlIHRoaXMgVXNlciB0byBiZWNvbWUgYSBNb2RlcmF0b3Igb2YgdGhhdCBPcmdhbml6YXRpb24/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1NCIgbmFtZT0iZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPlBsZWFzZSBjaG9vc2UgYW4gT3JnYW5pemF0aW9uIGJlZm9yZSB5b3UgdHJ5IHRvIGFkZCBhIFVzZXIgdG8gaXQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1NSIgbmFtZT0iY2hvb3NlIHVzZXIgd2luZG93Ij4KKyAgICA8dmFsdWU+T3JnYW5pemF0aW9uIC0gTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1NiIgbmFtZT0ibW9kZXJhdG9yIG9yZyB1c2VycyI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBVc2VyIGZyb20gdGhlIE9yZ2FuaXphdGlvbj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU3IiBuYW1lPSJvcmcgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPlRoaXMgVXNlciBpcyBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU4IiBuYW1lPSJvcmcgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPlRoaXMgVXNlciBpcyBOby1Nb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU5IiBuYW1lPSJlcnJvciBtZXNzYWdlIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5EbyB5b3Ugd2FudCB0aGlzIFVzZXIgdG8gYmUgbm90IGEgTW9kZXJhdG9yIG9mIHRoaXMgT3JnYW5pemF0aW9uPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjAiIG5hbWU9Im1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5BZGQgb3IgZGVsZXRlIFVzZXJzIG9yIFJvb21zIHdpdGhpbiB5b3VyIE9yZ2FuaXphdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjEiIG5hbWU9ImRlbGV0ZSBjb25maXJtIHF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHJlY29yZD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYyIiBuYW1lPSJkZWxldGUgY29uZmlybSBxdWVzdGlvbiB1c2VyIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgdXNlciBmcm9tIHlvdXIgb3JnYW5pemF0aW9uPyBZb3Ugd2lsbCBvbmx5IGRlbGV0ZSB0aGUgY29ubmVjdGlvbiBiZXR3ZWVuIHRoZSB1c2VyIGFuZCB5b3VyIG9yZ2FuaXphdGlvbiwgdG8gcmVhbGx5IGRlbGV0ZSB0aGUgdXNlciBpdHNlbGYgeW91IGhhdmUgdG8gbG9naW4gaW50byB0aGUgQWRtaW5pc3RyYXRpb24tUGFuZWwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MyIgbmFtZT0iZXJyb3IgbWVzc2FnZSBzZWxmIGRlbGV0aW5nIj4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBkZWxldGUgeW91ciBvd24gVXNlciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY0IiBuYW1lPSJlcnJvciBtZXNzYWdlIGF1dGgiPgorICAgIDx2YWx1ZT5UaGlzIE1ldGhvZCBuZWVkcyBhIEFkbWluc3RyYXRpb24gQWNjb3VudCB0byBiZSBpbnZva2VkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjUiIG5hbWU9ImVycm9yIG1lc3NhZ2UgU09BUCI+CisgICAgPHZhbHVlPlRoZXJlIHdhcyBubyBTZXNzaW9uIGFzc29jaWF0ZWQgd2l0aCB0aGlzIElELjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjYiIG5hbWU9ImVycm9yIG1lc3NhZ2UgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPlRoaXMgaXMgYW4gQWRtaW5pc3RyYXRvciBvciBNb2RlcmF0b3IgYWNjb3VudC4gWW91IGNhbiBvbmx5IGVkaXQgdGhpcyBhY2NvdW50IHRocm91Z2ggdGhlIEFkbWluaXN0cmF0aW9uIFBhbmVsLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjciIG5hbWU9ImVtYWlsIHZlcmlmaWNhdGlvbiI+CisgICAgPHZhbHVlPlRvIGNvbXBsZXRlIHlvdXIgcmVnaXN0cmF0aW9uIHBsZWFzZSBjbGljayBvbiB0aGUgZm9sbG93aW5nIGxpbmsuIE9yIGNvcHkgdGhlIFVSTCB0byB5b3VyIGJyb3dzZXIgYmFyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjgiIG5hbWU9ImVtYWlsIHZlcmlmaWNhdGlvbiI+CisgICAgPHZhbHVlPkNsaWNrIHRvIHZlcmlmeSB5b3VyIEUtTWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjkiIG5hbWU9ImVycm9yTWVzc2FnZV9Vc2VyQWN0aXZhdGlvblNlcnZsZXQgW0FjdGl2YXRlVXNlcl0iPgorICAgIDx2YWx1ZT5ObyB1c2VyIHdhcyBmb3VuZCBmb3IgdGhpcyBIYXNoLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzAiIG5hbWU9ImVycm9yTWVzc2FnZV9Vc2VyQWN0aXZhdGlvblNlcnZsZXQgW0FjdGl2YXRlVXNlcl0iPgorICAgIDx2YWx1ZT5UaGlzIHVzZXIgaXMgYWxyZWFkeSBhY3RpdmF0ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3MSIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPllvdSBkaWQgc3VjY2Vzc2Z1bGx5IGFjdGl2YXRlIHlvdXIgYWNjb3VudCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjcyIiBuYW1lPSJlcnJvck1lc3NhZ2VfVXNlckFjdGl2YXRpb25TZXJ2bGV0IFtBY3RpdmF0ZVVzZXJdIj4KKyAgICA8dmFsdWU+TG9naW4gTm93PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3MyIgbmFtZT0ibG9naW5FcnJvck1lc3NhZ2UgPSB1c2VyIHdhcyBub3QgYWN0aXZhdGVkIj4KKyAgICA8dmFsdWU+WW91ciBhY2NvdW50IGlzIG5vdCBhY3RpdmF0ZWQuIEZpcnN0IHVzZSB0aGUgbGluayBpbiB0aGUgRW1haWwgeW91J3ZlIHJlY2VpdmVkIGR1cmluZyByZWdpc3RyYXRpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3NCIgbmFtZT0icmVnaXN0ZXIgdmVyaWZpY2F0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Zb3Ugc3VjY2Vzc2Z1bGx5IHNpZ25lZCB1cC4gV2UndmUgc2VuZCBhbiBFTWFpbCB3aXRoIGEgdmVyaWZpY2F0aW9uIENvZGUgdG8geW91ciBNYWlsLiBQbGVhc2UgY2hlY2sgeW91ciBJbmJveC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc1IiBuYW1lPSJwYXJ0aWNpcGFudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5SZW1vdmUgTW9kZXJhdGlvbiBSb2xlIGZyb20gdGhpcyBVc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3NiIgbmFtZT0icGFydGljaXBhbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+R3JhbnQgTW9kZXJhdGlvbiBSaWdodHMgdG8gdGhpcyBVc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3NyIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+VXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzgiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFjY2VzcyB0byB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3OSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+TW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+TW9kZXJhdGlvbjogUGxlYXNlIGNob29zZSBhbnkgVXNlciBvbiB0aGUgTGlzdCB0byBncmFudCBoaW0gYWNjZXNzIHRvIHRoZSBXaGl0ZWJvYXJkLCBNb2RlcmF0aW9uIG9yIFZpZGVvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODEiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlRoaXMgVXNlciBpcyBhbHJlYWR5IE1vZGVyYXRvciwgc28gaGUgaGFzIGF1dG9tYXRpY2FsbHkgdGhlIHJpZ2h0IHRvIGRyYXcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MiIgbmFtZT0iZXZlbnQgdXNlciBsaXN0IGVycm9yIj4KKyAgICA8dmFsdWU+VGhpcyBpcyB5b3UhIFlvdSBjYW5ub3QgcmVtb3ZlIHRoZSBNb2RlcmF0aW9uIHJpZ2h0cyBmcm9tIHlvdXJzZWxmLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODMiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFsbG93IHRoaXMgVXNlciB0byBQdWJsaXNoIGhpcyBBdWRpbyAvIFZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4NCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+UmVtb3ZlIEF1ZGlvL1ZpZGVvIG9mIHRoaXMgVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODUiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkkgd291bGQgbGlrZSB0byBnZXQgdGhlIG1vZGVyYXRpb24gb2YgdGhpcyByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4NiIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+SSB3b3VsZCBsaWtlIHRvIGRyYXcgb24gd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODciIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkkgd291bGQgbGlrZSB0byBzaGFyZSBteSBBdWRpby9WaWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODgiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPllvdSBhcmUgbW9kZXJhdG9yIG9mIHRoaXMgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODkiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPllvdSBhcmUgYWxsb3dlZCB0byBkcmF3IG9uIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkwIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGFsbG93ZWQgdG8gc2hhcmUgeW91ciBBdWRpby9WaWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTEiIG5hbWU9ImVycm9ydHlwZSI+CisgICAgPHZhbHVlPk1lc3NhZ2UgdG8gTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5MiIgbmFtZT0iYXBwbHkgZm9yIG1vZCBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIFVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkzIiBuYW1lPSJhcHBseSBmb3IgbW9kIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGdldCB0aGUgTW9kZXJhdGlvbi4gVXNlIHRoZSBzdGF0dXMgSWNvbnMgbmV4dCB0byB0aGUgdXNlciBpbiB0aGUgTGlzdCBvZiBVc2VycyB0byBhZGQgb3IgcmVtb3ZlIHRoZSBNb2RlcmF0aW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTQiIG5hbWU9ImFwcGx5IGZvciB3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0byBkcmF3IG9uIHdoaXRlYm9hcmQuIFVzZSB0aGUgc3RhdHVzIEljb25zIG5leHQgdG8gdGhlIHVzZXIgaW4gdGhlIExpc3Qgb2YgVXNlcnMgdG8gYWRkIG9yIHJlbW92ZSB0aGUgcmlnaHQgdG8gZHJhdyBhbnl0aGluZyBvbiB0aGUgd2hpdGVib2FyZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk1IiBuYW1lPSI2OTUiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIHNoYXJlIGhpcyBBdWRpby9WaWRlby4gVXNlIHRoZSBzdGF0dXMgSWNvbnMgbmV4dCB0byB0aGUgdXNlciBpbiB0aGUgTGlzdCBvZiBVc2VycyB0byBhZGQgb3IgcmVtb3ZlIHRoZSByaWdodCB0byBzaGFyZSBBdWRpby9WaWRlbyBmb3IgYW55IFVzZXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5NiIgbmFtZT0ibW9kZXJhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+WW91IGhhdmUgdG8gd2FpdCB1bnRpbGwgYSBNb2RlcmF0b3IgZW50ZXJzIHRoZSByb29tLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTciIG5hbWU9ImNhbGVuZGFyIGJ1dHRvbiI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTgiIG5hbWU9ImNhbGVuZGFyIGJ1dHRvbiI+CisgICAgPHZhbHVlPlNhdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk5IiBuYW1lPSJjYWxlbmRhciBjb21wb25lbnQiPgorICAgIDx2YWx1ZT5EYXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAwIiBuYW1lPSJjYWxlbmRhciBjb21wb25lbnQiPgorICAgIDx2YWx1ZT5Nb250aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDEiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPlllYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAyIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+VXBsb2FkIEZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAzIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+QWRkIEZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDQiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5SZWZyZXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwNSIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlRyYXNoIChEcmFnIGFuZCBEcm9wIGl0ZW0gaGVyZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA2IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+TXkgRmlsZXMgKEhvbWUgRHJpdmUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwNyIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlJvb20gRmlsZXMgKFB1YmxpYyBEcml2ZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA4IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+QWRkIEZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA5IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+QWRkIEZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTAiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5EZWxldGUgRm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMSIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkVkaXQgTmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTIiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5OZXcgRm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMyIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBJdGVtPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTQiIG5hbWU9InVzZXIgYWRtaW4iPgorICAgIDx2YWx1ZT5TZWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE1IiBuYW1lPSJ1c2VyIGFkbWluIj4KKyAgICA8dmFsdWU+U2VhcmNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxNiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPk9wZW4gRG9jdW1lbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE3IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+U2hvdyBhbGwgRmlsZXMgKFRyZWUgVmlldyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE4IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+Q2xvc2UgRG9jdW1lbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE5IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+RGVsZXRlIEZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIwIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+WW91IGFyZSBub3QgYWxsb3dlZCB0byBkcmF3IGFueXRoaW5nIG9uIHRoZSBXaGl0ZWJvYXJkLiBZb3UgaGF2ZSB0byBiZWNvbWUgTW9kZXJhdG9yIG9yIGF0IGxlYXN0IGdldCB0aGUgUmlnaHQgdG8gZWRpdCBXaGl0ZWJvYXJkLiBZb3UgbWF5IGFzayBhIE1vZGVyYXRvciB0byBnaXZlIHlvdSB0aGF0IHJpZ2h0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjEiIG5hbWU9InByb3BlcnR5IHBhbmVsIj4KKyAgICA8dmFsdWU+RG9jdW1lbnQgUHJvcGVydGllczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjIiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPlN0YXJ0IENsaWVudCAoZXh0ZXJuYWwpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyMyIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+U3RhcnQgQ2xpZW50IChIVFRQKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjQiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPkEgdXNlciB3YW50IHRvIHNoYXJlIGhpcyBzY3JlZW4uIERvIHlvdSB3YW50IHRvIHNlZSBpdD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI1IiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGN1cnJlbnRseSBzaGFyaW5nIHlvdXIgRGVza3RvcC4gRm9yIHN0b3BwaW5nIHRoZSBTaGFyaW5nIFNlc3Npb24gcGxlYXNlIGhpdCB0aGUgU3RvcCBidXR0b24gaW4gdGhlIFNoYXJpbmcgQ2xpZW50LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjYiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPlNoYXJpbmcgU2Vzc2lvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjciIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPllvdSBhcmUgYWxyZWFkeSBzaGFyaW5nIHlvdXIgZGVza3RvcCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI4IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkRlc2t0b3AgVmlld2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyOSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5FeGl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5EZXNrdG9wIFNoYXJlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzEiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+Q2xpY2sgU3RhcnQgdG8gcHVibGlzaCB5b3VyIHNjcmVlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzIiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U3RhcnQgU2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzMiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U3RvcCBTaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TZWxlY3QgeW91ciBzY3JlZW4gYXJlYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM1IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkNoYW5nZSB3aWR0aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzYiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+VGhlIFNoYXJlciBoYXMgZmluaXNoZWQgdGhpcyBzZXNzaW9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzciIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+Q2hhbmdlIGhlaWdodDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+WC1PZmZzZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM5IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlktT2Zmc2V0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0MCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5XaWR0aDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQxIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkhlaWdodDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQyIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkNvbm5lY3Rpb24gd2FzIGNsb3NlZCBieSBTZXJ2ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQzIiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDQiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+U3RhcnQgRXh0ZXJuYWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ1IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPklmIHlvdSBjbG9zZSB0aGlzIHNlc3Npb24gY29tcGxldGVseSB5b3UgYXJlIG5vdCBhYmxlIHRvIHJlc3RhcnQgdGhlIHZpZXdlciBmb3IgdGhpcyBzZXNzaW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDYiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+Q29uZmlybSBDbG9zaW5nIFZpZXdlciBTZXNzaW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NyIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5TaGFyZSBTY3JlZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ4IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPlJlY29yZCBTZXNzaW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0OSIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPkNvLUJyb3dzaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MCIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPk9vb3BzLCAuLi4gRmlyZWZveCBvbiBXaW5kb3dzIGRvZXMgbm90IHNob3cgY2xlYXIgQ28tQnJvd3NpbmcuIFBsZWFzZSB1c2UgYW5vdGhlciBCcm93c2VyIGZvciB1c2luZyB0aGUgQ28tQnJvd3NpbmcgZmVhdHVyZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUxIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+UHJldmlvdXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUyIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+TmV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTMiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5SZWxvYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU0IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+SG9tZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTUiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5Mb2FkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1NiIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPkFkZCB0aGlzIHdlYnNpdGUgYXMgRGVmYXVsdCB3ZWJzaXRlIHRvIHlvdXIgUHJvZmlsZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU3IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+VGVzdCBTZXR1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTgiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5DaGVjayB5b3UgTWljcm9waG9uZSBhbmQgQ2FtZXJhIHNldHVwIGJlZm9yZSB5b3UgZW50ZXIgYSByb29tIGJ5IHJlY29yZGluZyBzb21lIHNlY29uZHMuIFlvdSBjYW4gdGhlbiByZXBsYXkgeW91ciByZWNvcmRpbmcgdG8gY2hlY2sgeW91ciB2b2ljZSBhbmQgcGljdHVyZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU5IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+RG9uJ3Qgc2hvdyB0aGlzIHRlc3QgYW55bW9yZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjAiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYxIiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+U3RhcnQgQ29uZmVyZW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjIiIG5hbWU9ImVkaXQgdmlkZW8gc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5EbyBub3QgYXNrIGFnYWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MyIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlJFQzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjQiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5QTEFZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NSIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPllvdSBtYXkgcHJvY2VlZCB3aXRob3V0IHRlc3RpbmcgaWYgeW91IGRvIG5vdCBwbGFuIHRvIHB1Ymxpc2ggeW91ciB2b2ljZSBvciBwaWN0dXJlLiBQYXJ0aWNpcGFudHMgd2l0aG91dCBBdWRpbyBvciBWaWRlbyBjYW4gc3RpbGwgdXNlIHRoZSBXaGl0ZWJvYXJkLCBzaGFyZSB0aGVpciBEZXNrdG9wIG9yIHdyaXRlIENoYXQgbWVzc2FnZXMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NiIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlNUT1A8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY3IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+TGV2ZWwtTWV0ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY4IiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+UHJlc3MgU3RhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY5IiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+U3RhcnQgQ29uZmVyZW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzAiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5TdGFydCBFdmVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzEiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5DaG9vc2UgUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzIiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5DaGVjayBTZXR1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzMiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5TdGFydCBDb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NCIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPkhvdyB0byBjb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NSIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlN0YXJ0IFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzYiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5EbyBub3Qgc2hvdyBBdWRpbyAvIFZpZGVvIFRlc3QgKFJlY29yZGluZykgYmVmb3JlIGVudGVyaW5nIGEgQ29uZmVyZW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzciIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT5QdWJsaWMgUm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc4IiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+UHVibGljIFJvb21zIGFyZSBhY2Nlc3NpYmxlIGZvciBhbGwgVXNlcnMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3OSIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPlByaXZhdGUgUm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgwIiBuYW1lPSJQcml2YXRlIFJvb21zIj4KKyAgICA8dmFsdWU+UHJpdmF0ZSBSb29tcyBhcmUgb25seSBhY2Nlc3NpYmxlIGZvciB1c2VycyBvZiB0aGUgc2FtZSBvcmdhbml6YXRpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MSIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPk15IFJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MiIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPlJvb21zIGluIHRoaXMgc2VjdGlvbiBhcmUgY3JlYXRlZCBmb3IgcGVyc29uYWwgdXNhZ2UuIFRoZXkgYXJlIGNyZWF0ZWQgdGhyb3VnaCB0aGUgY2FsZW5kYXIgYW5kIGhhdmUgYSBzdGFydCBhbmQgYSBlbmQgZGF0ZS4gVGhleSBhcmUgb25seSBsaXN0ZWQgaW4gdGhpcyBzZWN0aW9uIGFzIGxvbmcgYXMgdGhleSBhcmUgdmFsaWQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MyIgbmFtZT0icmVzdHJpY3RlZCByb29tIj4KKyAgICA8dmFsdWU+WW91IGhhdmUgdG8gYmUgbW9kZXJhdG9yIHRvIGRvIHRoaXMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NCIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT5BcHBseSBmb3IgbW9kZXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODUiIG5hbWU9Im1lbnUgb3B0aW9uIj4KKyAgICA8dmFsdWU+QXBwbHkgZm9yIHdoaXRlYm9hcmQgYWNjZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NiIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT5BcHBseSBmb3IgY2FtZXJhL21pY3JvcGhvbmUgYWNjZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NyIgbmFtZT0iZXJyb3IgbWVzc2FnZSBzb2FwIHNlY3VyZSBsb2dpbiI+CisgICAgPHZhbHVlPlRoaXMgU2Vzc2lvbiBIYXNoIHdhcyBhbHJlYWR5IHVzZWQuIFlvdSBjYW5ub3QgdXNlIGl0IHR3aWNlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODgiIG5hbWU9ImRhc2hib2FyZCBidXR0b24iPgorICAgIDx2YWx1ZT5TVEFSVDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODkiIG5hbWU9ImV4aXQgY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPkVYSVQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkwIiBuYW1lPSJjb25mZXJlbmNlIHZpZXciPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZXhpdD8gWW91IG1pZ2h0IHNob3VsZCBjbGVhciB1cGxvYWRlZCBkb2N1bWVudHMsIHdoaXRlYm9hcmQgYW5kIHRoZSBjaGF0IGhpc3RvcnkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5MSIgbmFtZT0iY29uZmVyZW5jZSB2aWV3Ij4KKyAgICA8dmFsdWU+RXhpdCBjb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5MiIgbmFtZT0ibWFpbiBtZW51Ij4KKyAgICA8dmFsdWU+Um9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkzIiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT5DaG9vc2UgYSByb29tIGZvciBhIG1lZXRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk0IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGFuIHVuc2F2ZWQgRXZlbnQgaW4gdGhlIENhbGVuZGFyLiBQbGVhc2UgZWl0aGVyIHNhdmUgaXQgb3IgcmVtb3ZlIGl0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTUiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+UGxlYXNlIGFkZCBhdCBsZWFzdCBvbmUgYXR0ZW5kZWUgZm9yIHlvdXIgbWVldGluZyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk2IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBFdmVudD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk3IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPldhcm5pbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk4IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkFkZCBFdmVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTkiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RGF5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5XZWVrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Nb250aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDIiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RGVzY3JpcHRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAzIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkF0dGVuZGVlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSwgeW91ciBXZWIgQ29uZmVyZW5jaW5nIFBsYXRmb3JtLiBFaXRoZXIgZm9sbG93IHRoZSBJbnN0cnVjdGlvbnMsIHByZXNzIHRoZSBzdGFydCBidXR0b24gdG8gc3RhcnQgdG8gY29uZmVyZW5jZSBpbW1lZGlhdGVsbHkgb3IgeW91IGdvdG8gdGhlIENhbGVuZGFyIGFuZCBzZXQgdXAgYSBDb25mZXJlbmNlIGZvciB0aGUgZnV0dXJlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDUiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPlBsYW4gYSBNZWV0aW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNiIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlRvIHNldCB1cCBhIGNvbmZlcmVuY2UgeW91IGNhbiBhZGQgYSBuZXcgRXZlbnQgaW4gdGhlIENhbGVuZGFyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDciIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5OZWVkIGhlbHA/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwOCIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlJlc3RyaWN0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA5IiBuYW1lPSJsemNhbGVuZGVyIj4KKyAgICA8dmFsdWU+U2VhcmNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMCIgbmFtZT0ibHpjYWxlbmRlciI+CisgICAgPHZhbHVlPkFkZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTEiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBVc2VyIHNlbGVjdGVkLiBQbGVhc2Ugc2VsZWN0IGFuIGl0ZW0gZnJvbSB0aGUgbGlzdCBmaXJzdCBhbmQgdGhlbiBoaXQgYWRkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTIiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5BZGQgQXR0ZW5kZWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEzIiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+U2F2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTQiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5EZWxldGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE1IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RXZlbnQgRGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTYiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EZWZhdWx0IE1vZGVyYXRvcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+U3VwZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE4IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE5IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjAiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5FLU1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIxIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+QWRkIG5ldyBkZWZhdWx0IE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjIiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5JcyBTdXBlciBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIzIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+SWYgdGhlIFJvb20gaXMgbW9kZXJhdGVkLCBVc2VyIHdpdGggTGV2ZWwgTW9kZXJhdG9yIG9yIEFkbWluaXN0cmF0b3IgYXJlIGF1dG9tYXRpY2FsbHkgTW9kZXJhdG9yIGlmIHRoZXkgZW50ZXIgdGhlIFJvb20uIElmIHlvdSBkb24ndCB3YW50IHRvIHNwZWNpZnkgdGhhdCBhbmQgb25seSB3YW50IGEgY2VydGFpbiBVc2VyIHRvIGJlY29tZSBNb2RlcmF0b3IgdXNlIHRoZSBEZWZhdWx0IE1vZGVyYXRvciBvcHRpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkEgU3VwZXIgTW9kZXJhdG9yIGlzIGFsd2F5cyBhIE1vZGVyYXRvciB3aGVuIGhlIGVudGVycyBhIFJvb20sIGFuZCBub2JvZHkgY2FuIHJlbW92ZSB0aGUgTW9kZXJhdGlvbiBGbGFnIGZyb20gaGltPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkFwcGx5IFN1cGVyLU1vZGVyYXRpb24gdG8gVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjYiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5SZW1vdmUgU3VwZXIgTW9kZXJhdGlvbiBmcm9tIFVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjgiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5JZiB5b3UgYWRkIGFuIE9yZ2FuaXphdGlvbiB0byB0aGUgcm9vbSBvbmx5IHVzZXJzIG9mIHRoYXQgT3JnYW5pemF0aW9uIGhhdmUgYWNjZXNzIHRvIGl0IChUaGlzIGlzIG9ubHkgdmFsaWQgaWYgdGhlIGlzUHVibGljIGZsYWcgaXMgc2V0IHRvIGZhbHNlISk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI5IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+TW9kZXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzAiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5MaW1pdGF0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzEiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5Pcmdhbml6YXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODMyIiBuYW1lPSJjb25maXJtIGFjdGlvbiI+CisgICAgPHZhbHVlPkFyZSB5b3Ugc3VyZT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODMzIiBuYW1lPSJjb25maXJtIGRlbGV0ZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBJdGVtPyBZb3UgaGF2ZSB0byBwcmVzcyB0aGUgc2F2ZSBidXR0b24gdG8gc3RvcmUgdGhlIGNoYW5nZXMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNCIgbmFtZT0idXNlciBjaG9vc2UgZXJyb3IiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBVc2VyIHNlbGVjdGVkLiBQbGVhc2Ugc2VsZWN0IGZpcnN0IGJlZm9yZSB5b3UgYWRkIGl0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzUiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5BZGQgbmV3IERlZmF1bHQgTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkRvIHlvdSB3YW50IHRvIGFkZCB0aGUgU3VwZXIgTW9kZXJhdGlvbiBGbGFnIGZvciB0aGlzIFVzZXI/IEEgU3VwZXIgTW9kZXJhdG9yIGlzIG5vdCBvbmx5IE1vZGVyYXRvciBvZiBhIFJvb20sIGJ1dCBhbHNvIG5vIG90aGVyIE1vZGVyYXRvciBjYW4gcmVtb3ZlIHRoZSBNb2RlcmF0aW9uIEZsYWcgZm9yIHRoaXMgVXNlci4gWW91IG5lZWQgdG8gc2F2ZSB0aGUgUm9vbSBPYmplY3QgdG8gc2F2ZSB0aGVzZSBzZXR0aW5ncyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RG8geW91IHdhbnQgdG8gcmVtb3ZlIHRoZSBTdXBlciBNb2RlcmF0aW9uIEZsYWcgZm9yIHRoaXMgVXNlcj8gWW91IG5lZWQgdG8gc2F2ZSB0aGUgUm9vbSBPYmplY3QgdG8gc2F2ZSB0aGVzZSBzZXR0aW5ncyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM4IiBuYW1lPSJzdXBlciBtb2RlcmF0b3IiPgorICAgIDx2YWx1ZT5UaGlzIFVzZXIgaXMgYSBTdXBlci1Nb2RlcmF0b3IuIFlvdSBjYW5ub3QgcmVtb3ZlIHRoZSBNb2RlcmF0aW9uIGZsYWcgZnJvbSBhIFN1cGVyLU1vZGVyYXRvciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM5IiBuYW1lPSJjb25maXJtIGRlbGV0ZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGaWxlL0ZvbGRlcj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQwIiBuYW1lPSJjb25maXJtIGRlbGV0ZSI+CisgICAgPHZhbHVlPkRlbGV0ZSBGaWxlL0ZvbGRlcj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQxIiBuYW1lPSJzYWx1dGF0aW9uIj4KKyAgICA8dmFsdWU+TXJzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDIiIG5hbWU9InNhbHV0YXRpb24iPgorICAgIDx2YWx1ZT5Eci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQzIiBuYW1lPSJwcm9wZXJ0eSBwYW5lbCB3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+UHJvcGVydGllczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDQiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5TaG93IG1vdXNlIHBvc2l0aW9uIHRvIHZpZXdlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ1IiBuYW1lPSJwdWJsaXNoIG9wdGlvbiI+CisgICAgPHZhbHVlPlNoYXJlIEF1ZGlvIHdpdGggU0lQIEFwcGxldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDYiIG5hbWU9InB1Ymxpc2ggb3B0aW9uIj4KKyAgICA8dmFsdWU+U2hhcmUgQXVkaW8gd2l0aCBTSVAgYW5kIFZpZGVvIHdpdGggRmxhc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ3IiBuYW1lPSJkb2N1bWVudCBwYW5lbCI+CisgICAgPHZhbHVlPkZ1bGwtRml0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0OCIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+VmlldyBTY3JlZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ5IiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5UaGUgdXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTAiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPndhbnRzIHRvIHNoYXJlIGl0cyBzY3JlZW4uIERvIHlvdSB3YW50IHRvIHNlZSBpdD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUxIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5DbG9zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTIiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5ab29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MyIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPlRoZSBTZXNzaW9uIHdhcyBjbG9zZWQgYnkgdGhlIHNoYXJpbmcgVXNlciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU0IiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+UGF1c2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU1IiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+TmV3IFNjcmVlbiBTaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1NiIgbmFtZT0icHJlc2VudGVyIG1pbmkgaWNvbiI+CisgICAgPHZhbHVlPk1pbmltaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1NyIgbmFtZT0icHJlc2VudGVyIG1pbmkgaWNvbiI+CisgICAgPHZhbHVlPk1heGltaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1OCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+VmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU5IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5SZWNvcmRpbmcgVGltZWxpbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYwIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5NeSBSZWNvcmRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UHVibGljIFJlY29yZGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYyIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5JbmZvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjQiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkxlbmd0aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjUiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkRhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5CeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjciIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlBMQVk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY4IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5NYWluIC0gVmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY5IiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5SZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcwIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Zb3UgbWF5IHJlY29yZCBhbmQgc2hhcmUgeW91ciBzY3JlZW4gYXQgdGhlIHNhbWUgdGltZS4gVG8gZW5hYmxlIG90aGVycyB0byBzZWUgeW91ciBzY3JlZW4ganVzdCBoaXQgdGhlIHN0YXJ0IGJ1dHRvbiBvbiB0aGUgdG9wLiBUbyBvbmx5IHJlY29yZCB0aGUgU2Vzc2lvbiBpdCBpcyBzdWZmaWNpZW50IHRvIGNsaWNrIHN0YXJ0IHJlY29yZGluZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcxIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5TdGFydCBSZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcyIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5TdG9wIFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzMiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkRvd25sb2FkIHRoZSBGTFYtRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzQiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc1IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5QbGF5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3NiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+U3RvcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzciIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlVzZXIgaGFzIG1pY3JvcGhvbmUgb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc4IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlN0b3AgU2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzkiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+QWxsb3cgVXNlciBRdWVzdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgwIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPlR1cm4gdGhpcyBvZmYgdG8gcHJldmVudCB0aGF0IGFueSB1c2VyIGlzIGRpc3R1cmJpbmcgeW91IGluIHRoaXMgcm9vbS4gRWZmZWN0IGlzIHRoYXQgdGhlIEJ1dHRvbiB0byBhc2sgZm9yIE1vZGVyYXRpb24gKCJJIGhhdmUgYSBxdWVzdGlvbiIpIGlzIG5vdCB2aXNpYmxlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODEiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+UmlnaHRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RG93bmxvYWQgYXMgQVZJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RkxWPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QVZJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UmF3IFNjcmVlbnZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QXVkaW8gb25seTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODciIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlRoZSBoYXZlIGJlZW4gZXJyb3JzIHdoaWxlIHByb2Nlc3NpbmcgdGhlIFJlY29yZGluZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg4IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5UaGUgUmVjb3JkaW5nIGlzIG5vdCB5ZXQgcmVhZHkgZm9yIHdhdGNoaW5nLiBQbGVhc2UgcmV0cnkgaW4gYSBjb3VwbGUgb2YgbWludXRlcyBhZ2Fpbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg5IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Mb2c6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UmVjb3JkZXIgTWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTEiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk9rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MiIgbmFtZT0ic2lwIGFwcGxldCI+CisgICAgPHZhbHVlPlNJUCBBcHBsZXQgaXMgbm90IFJlYWR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MyIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNJUC1BY2NvdW50IFNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NCIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNJUCBzZXR0aW5ncyBmb3IgZWFjaCB1c2VyLiBZb3UgY2FuIHR1cm4gb24gb3Igb2ZmIFNJUCB2aWEgdGhlIEFkbWluaXN0cmF0aW9uICZndDsgQ29uZmlndXJhdGlvbiAoS2V5OiBlbmFibGVfc2lwKS4gVGhlIFNJUCBkYXRhIGZvciBlYWNoIHVzZXIgc2hvdWxkIGJlIGNyZWF0ZWQgYXV0b21hdGljYWxseS4gWW91IGNhbiByZS1jcmVhdGUgdGhlIGRhdGEgYnkgY2hlY2tpbmcgIlJlLWdlbmVyYXRlIFNJUCBEYXRhIjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTUiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TSVAtVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTYiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TaXAtUGFzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTciIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TaXAtQXV0aC1JZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTgiIG5hbWU9InNpcCBzdGF0dXMgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSBMb2dpbiB0byB0aGUgU0lQIEdhdGV3YXkgaGFzIGZhaWxlZC4gWW91IHNob3VsZCBjaGVjayB0aGUgYXV0aGVudGlmaWNhdGlvbiBkYXRhIG9mIHlvdXIgU0lQLVByb3ZpZGVyIGFuZCB0aGUgU0lQLUFjY291bnQgRGF0YSBmb3IgZWFjaCBVc2VyLiBBcyBBZG1pbmlzdHJhdG9yIHlvdSBhcmUgc3RpbGwgYWJsZSB0byBsb2dpbiBhbmQgY2hlY2sgdGhlIENvbmZpZ3VyYXRpb24uIEFzIFVzZXIgb3IgTW9kZXJhdG9yIHlvdSB3aWxsIGJlIGJsb2NrZWQgZnJvbSBhbnkgaW50ZXJhY3Rpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5OSIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIExvZ2luIHRvIHRoZSBTSVAgR2F0ZXdheSBoYXMgZmFpbGVkLiBDb250YWN0IHlvdXIgU2VydmljZSBUZWFtITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDAiIG5hbWU9InNpcCBzdGF0dXMgbWVzc2FnZSI+CisgICAgPHZhbHVlPkxvZ2dpbmcgaW4gdG8gU0lQLUdhdGV3YXkgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwMSIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TG9nZ2luZyBpbiB0byBTSVAtR2F0ZXdheSAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAyIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TaG93IExvZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDMiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkxvZyBtZXNzYWdlcyBmcm9tIHBvc3QgcmVjb3JkZXIgcHJvY2VzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDQiIG5hbWU9InNpcCBsb2dpbiI+CisgICAgPHZhbHVlPlNJUC1BcHBsZXQgTWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDUiIG5hbWU9InNpcCBsb2dpbiI+CisgICAgPHZhbHVlPlRoZSBTSVAtQXBwbGV0IGlzIG5vdCByZWFkeS4gQWNjZXB0IHRoZSBBcHBsZXQgcGxlYXNlIGFuZCBjbGljayBvayE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA2IiBuYW1lPSJtb2RlcmF0b3IgcG9wIHVwIj4KKyAgICA8dmFsdWU+R2V0IE1vZGVyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA3IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+U2F2ZSBBcHBvaW50bWVudCBDaGFuZ2VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwOCIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlRoZSBhcHBvaW50ZW1lbnQgaGFzIGJlZW4gY2hhbmdlZC4gRG8geW91IHdhbnQgdG8gc2F2ZSB0aG9zZSBjaGFuZ2VzPyAmbHQ7YnIvJmd0OyZsdDtici8mZ3Q7QWxsIGF0dGVuZGVlcyBvZiB0aGUgYXBwb2ludG1lbnQgd2lsbCByZWNlaXZlIGEgRU1haWwgd2l0aCB0aGUgdXBkYXRlZCBkYXRlIGFuZCB0aW1lIChkZXBlbmRpbmcgb24gdGhlIG5vdGlmaWNhdGlvbiB0eXBlIG9mIHRoaXMgYXBwb2ludG1lbnQpLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDkiIG5hbWU9ImZsdiByZWNvcmRlciBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VG8gYWNjZXNzIG90aGVyIHJlY29yZGluZ3MgeW91IGhhdmUgdG8gbG9naW4gdGhlICRBUFBfTkFNRSBBcHBsaWNhdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTEwIiBuYW1lPSJpbnRlcnZpZXcgdmlkZW8gcG9kIj4KKyAgICA8dmFsdWU+Q2hvb3NlIHRoZSBVc2VyIGZvciB0aGlzIFZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMSIgbmFtZT0iaW50ZXJ2aWV3IHZpZGVvIGNob29zZSB1c2VyIj4KKyAgICA8dmFsdWU+QXZhaWxhYmxlIFVzZXJzIGZvciB0aGlzIFBvZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTIiIG5hbWU9ImludGVydmlldyBpbmZvIj4KKyAgICA8dmFsdWU+WW91IGFyZSBhIE1vZGVyYXRvciBpbiB0aGlzIEludGVydmlldy4gWW91IGNhbiBkZWNpZGUgd2hvIGlzIHNwZWFraW5nIGluIHRoaXMgaW50ZXJ2aWV3IGFuZCB5b3UgY2FuIHN0YXJ0IC8gc3RvcCB0aGUgcmVjb3JkaW5nIG9mIHRoZSBTZXNzaW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTMiIG5hbWU9ImludGVydmlldyBidXR0b24gcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+U3RhcnQgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxNCIgbmFtZT0iaW50ZXJ2aWV3IGJ1dHRvbiByZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TdG9wIFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTUiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIHJlY29yZGluZyBvZiB0aGUgSW50ZXJ2aWV3IGlzIGFscmVhZHkgc3RhcnRlZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE2IiBuYW1lPSJpbnRlcnZpZXcgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSByZWNvcmRpbmcgaXMgYWxyZWFkeSBzdG9wcGVkIG9yIG5vdCBiZWVuIHN0YXJ0ZWQgeWV0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTciIG5hbWU9ImludGVydmlldyByZWNvcmRpbmcgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSByZWNvcmRpbmcgZm9yIHRoaXMgaW50ZXJ2aWV3IGlzIGFscmVhZHkgc3RhcnRlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE4IiBuYW1lPSJpbnRlcnZpZXcgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTkiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIHBvc3QtcHJvY2Vzc2luZyBvZiBhbiBpbnRlcnZpZXcgdGFrZXMgNSBtaW51dGVzIHBlciAxIG1pbnV0ZSBpbnRlcnZpZXcuIFRoZSBjdXJyZW50IHByb2dyZXNzIG9mIHRoZSBpbnRlcnZpZXcgcG9zdC1wcm9jZXNzaW5nIHRyYW5zY29kaW5nIGlzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjAiIG5hbWU9InNpcCBjcmVhdGlvbiI+CisgICAgPHZhbHVlPllvdSBoYXZlIHRvIGVudGVyIHlvdXIgcGFzc3dvcmQgYWdhaW4gdG8gYXV0byBjcmVhdGUgdGhlIFNJUCBEYXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyMSIgbmFtZT0ic2lwIGNyZWF0aW9uIj4KKyAgICA8dmFsdWU+UmUtZ2VuZXJhdGUgU0lQIERhdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIyIiBuYW1lPSJmaWxlZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IG1vdmUgdGhpcyBmaWxlIG9yIGZvbGRlciBpbnRvIGl0cyBvd24gc3ViIGZvbGRlciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIzIiBuYW1lPSJmaWxlIGV4cGxvcmVyICI+CisgICAgPHZhbHVlPkhvbWUgZHJpdmUgc2l6ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjQiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5QdWJsaWMgZHJpdmUgc2l6ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjUiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5MaWNlbnNlIFNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNiIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPllvdSBjYW4gZWl0aGVyIGJpbmQgdGhlIHVzZXIgdG8gYSBleHBpcmUgRGF0ZSBvciB0byBhIG1heGltdW0gbnVtYmVyIG9mIG1pbnV0ZXMgd2hlbiB5b3UgZW5hYmxlIGxpY2Vuc2luZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI3IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+Q2hlY2sgbGljZW5zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjgiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5GbGF0cmF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjkiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5FeHBpcmUgZGF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzAiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5TZWNvbmRzIGxlZnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMxIiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+VG90YWwgdGltZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzIiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdXIgTGljZW5zZSBoYXMgZXhwaXJlZC4gWW91IG5lZWQgdG8gYnV5IG5ldyBtaW51dGVzIChQYXktcGVyLW1pbnV0ZSkgb3IgYSB2b2x1bWUgZmxhdHJhdGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Q2xpY2sgYW5kIGJ1eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzQiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlRpbWUgTGVmdCBvbiB5b3VyIGFjY291bnQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzNSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+VXNlciBMaWNlbnNlIEluZm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM2IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5JbmZvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzNyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Q2xvc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM4IiBuYW1lPSJsaWNlbnNlLWluZm8iPgorICAgIDx2YWx1ZT5Zb3VyIGxpY2Vuc2UgaGFzIGV4cGlyZWQuIFlvdSBuZWVkIGVpdGhlciB0byBidXkgYSBtaW51dGUgcGFja2FnZSAoUGF5LXBlci1taW51dGUpIG9yIGEgdm9sdW1lIGZsYXRyYXRlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzkiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkxpY2Vuc2Ugc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQwIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIGVpdGhlciBidXkgbWludXRlcyB0byBtYWtlIFdlYi1Db25mZXJlbmNpbmcgKFBheS1wZXItbWludXRlKS4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7IE9yIHlvdSBidXkgYSB2b2x1bWUgZmxhdHJhdGUgYWJvdXQgMy0xMiBtb250aHMuJmx0O2JyLyZndDsmbHQ7YnIvJmd0O1NlbmRpbmcgaW52aXRhdGlvbnMgKGRpcmVjdCBsaW5rcyBpbnRvIENvbmZlcmVuY2UgUm9vbXMpIG9yIGNyZWF0aW5nIGNvbmZlcmVuY2UgUm9vbXMgdmlhIHRoZSBDYWxlbmRhciB3aXRoIGV4dGVybmFsIFVzZXJzIGlzIG9ubHkgYWxsb3dlZCB3aXRoIGEgdm9sdW1lIGZsYXRyYXRlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDEiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSA2MCBNaW51dGVzIDksOTkgRVVSTyAoMTYgQ2VudCBwZXIgTWludXRlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDIiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSA1IGhvdXJzIDE5LDk5IEVVUk8gKDYgQ2VudCBwZXIgbWludXRlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDMiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSAzIG1vbnRoIGZvciAyOSw5OSBFVVJPICg5LDk5IEV1cm8gcGVyIE1vbnRoKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDQiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSA2IG1vbnRoIGZvciAzOSw5OSBFVVJPICg2LDY2IEV1cm8gcGVyIG1vbnRoKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDUiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlBheS1wZXItbWludXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Vm9sdW1lIGZsYXRyYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91IGhhdmUgdW5saW1pdGVkIExpY2Vuc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ4IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3VyIGxpY2Vuc2Ugd2lsbCBleHBpcmUgYXQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0OSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91IGJvdWdodCBQYXktcGVyLW1pbnV0ZS4gWW91IHN0aWxsIGhhdmU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IG5ldyBjcmVkaXQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+V2FudCB5b3VyIG93biBTZXJ2ZXI/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91IHdvdWxkIGxpa2UgdG8gaGF2ZSAkQVBQX05BTUUgaW5zdGFsbGVkIG9uIHlvdXIgU2VydmVyIG9yIGludGVncmF0ZWQgaW50byB5b3VyIE1vb2RsZSwgU3VnYXJDUk0sIFdlYnNpdGUgb3IgSW50cmFuZXQ/IFByaXppbmdzIHN0YXJ0IGF0IDUwMCBFdXJvIHBlciBJbnN0YWxsYXRpb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+T3Igc2VuZCB1cyBhIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU0IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5BbnN3ZXIgdG86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1NSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+TWVzc2FnZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU2IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5TZW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1NyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Q2xpY2sgaGVyZSB0byBnZXQgY29udGFjdCBJbmZvIGFuZCBQcml6aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTgiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNyZWRpdCBDYXJkIERldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU5IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5GaXJzdG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYwIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5MYXN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjEiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNyZWRpdCBDYXJkIFR5cGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYyIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5WSVNBIENhcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYzIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5NYXN0ZXJDYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2NCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+RGlzY292ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY1IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5BbWVyaWNhbiBFeHByZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2NiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q3JlZGl0IENhcmQgTnVtYmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2NyIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+RXhwaXJhdGlvbiBEYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2OCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q2FyZCBWZXJpZmljYXRpb24gTnVtYmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2OSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+QmlsbGluZyBBZGRyZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+QWRkcmVzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzEiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzIiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTczIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5Db3VudHJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U3RhdGUgKE9ubHkgVVMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+WklQPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+QW1vdW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NyIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U3VibWl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3OCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U3RlcCAxOiAkQVBQX05BTUUgLSBQYXltZW50IEZvcm08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc5IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5FTWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODAiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNsaWNrICJDaGVjayBvdXQgd2l0aCBQYXlwYWwiIHRvIHBheS4mbHQ7YnIvJmd0OyBQYXlwYWwgYWNjZXB0cyBWSVNBLCBNYXN0ZXJDYXJkLCBEaXNjb3ZlciBvciBBbWVyaWNhbiBFeHByZXNzLiAmbHQ7YnIvJmd0O0l0IGRvZXMgbm90IHJlcXVpcmUgdG8gc2lnbiB1cCB3aXRoIFBheXBhbC4gJmx0O2JyLyZndDtDaXRpemVucyBmcm9tIEdlcm1hbnkgY2FuIGFsc28gcGF5IHdpdGggZGlyZWN0IGRlYml0IChQZXIgTGFzdHNjaHJpZnQtRWluenVnKS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgxIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5UaGFuayB5b3UgZm9yIGJ1eWluZyAkQVBQX05BTUUuICZsdDtici8mZ3Q7ICZsdDtici8mZ3Q7IEFzIHNvb24gYXMgd2UgcmVjZWl2ZWQgdGhlIHBheW1lbnQgeW91ciBhY2NvdW50IHdpbGwgYmUgdXBkYXRlZC4mbHQ7YnIvJmd0OyBZb3Ugd2lsbCByZWNlaXZlIGFuIEVNYWlsIHdpdGggeW91ciBpbnZvaWNlIGFzIFBERi4mbHQ7YnIvJmd0O1lvdSBjYW4gYWxzbyBjaGVjayBjdXJyZW50IGFuZCBwYXN0IHRyYW5zYWN0aW9ucyBpbiB5b3VyIHByb2ZpbGUgc2V0dGluZ3MuJmx0O2JyLyZndDsmbHQ7YnIvJmd0OyZsdDtici8mZ3Q7WW91IGNhbiBjbG9zZSB0aGlzIGJyb3dzZXIgd2luZG93L3RhYiBub3cgYW5kIHJldHVybiB0byAkQVBQX05BTUUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U3VibWl0IGFuZCBCdXkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MyIgbmFtZT0icGF5bWVudC1mcm9tIj4KKyAgICA8dmFsdWU+Q2xpY2sgYW5kIEJ1eSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg0IiBuYW1lPSJwYXltZW50LWZyb20iPgorICAgIDx2YWx1ZT5TdGVwIDM6ICRBUFBfTkFNRSBQYXltZW50IC0gQ2hlY2sgb3JkZXIgYW5kIGJ1eSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg1IiBuYW1lPSJwYXltZW50LWZyb20iPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4NiIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+UGF5bWVudCByZWNlaXZlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg3IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5IaSw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg4IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5XZSBoYXZlIHJlY2VpdmVkIHlvdXIgcGF5bWVudC4gWW91ciB1c2VyIHByb2ZpbGUgaXMgdXBkYXRlZCBub3cuIFNlZSBhdHRhY2hlZCB5b3VyIEludm9pY2UuIFRoZSBJbnZvaWNlIGFuZCBhbGwgcGFzdCBJbnZvaWNlIGNhbiBhbHNvIGJlIGRvd25sb2FkZWQgaW4geW91ciB1c2VyIHByb2ZpbGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4OSIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+VGhhbmsgeW91IGZvciB1c2luZyAkQVBQX05BTUUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MCIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+UGF5bWVudCBSZWNlaXZlZCAkQVBQX05BTUUgLTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTEiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5QYXltZW50IGFuZCBUcmFuc2FjdGlvbiBTdGF0dXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkyIiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+VHJhbnNjYXRpb24gSGFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTMiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NaW51dGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NCIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPk1vbnRoczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTUiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5FVVI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk2IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+U3RhdHVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NyIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPkludm9pY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk4IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5OSIgbmFtZT0iZXJyb3ItbGljZW5zZS1mbGF0Ij4KKyAgICA8dmFsdWU+WW91IG5lZWQgdG8gYnV5IGEgdm9sdW1lIGZsYXRyYXRlIHRvIGJlIGFibGUgdG8gc2VuZCBpbnZpdGF0aW9ucyBvciBjcmVhdGUgbWVldGluZ3MgdmlhIHRoZSBjYWxlbmRhci4gV2l0aCBQYXktcGVyLW1pbnV0ZSBpdCBpcyBvbmx5IHBvc3NpYmxlIGZvciB5b3UgdG8gYWNjZXNzICRBUFBfTkFNRS4gWW91IGNhbm5vdCBhbGxvdyAzdGggUGFydGllcyB0byBhY2Nlc3MgYSBNZWV0aW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAwIiBuYW1lPSJlcnJvciB1c2VyIj4KKyAgICA8dmFsdWU+VGhpcyBFbWFpbCBpcyBhbHJlYWR5IHVzZWQgYnkgYW5vdGhlciBVc2VyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAxIiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+U0lQLVNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDIiIG5hbWU9InJvb20tYWRtaW4iPgorICAgIDx2YWx1ZT5UaGUgQ29uZmVyZW5jZSBOdW1iZXIgYW5kIFBJTiBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgdmlhIHRoZSBPcGVuWEcgUlBDLUdhdGV3YXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwMyIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlNJUCBOdW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNCIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlBJTjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA1IiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+Q2xlYXIgb2JqZWN0cyBvbiBjdXJyZW50IHNsaWRlIG9ubHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDYiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5Pbmx5IHRoZSBVUkwgZW50ZXJlZCBpbiB0aGUgU3RhdHVzIGJhciBpcyBzZW5kIHRvIHBhcnRpY2lwYW50cyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk1ha2UgVGVhbS1Sb29tcyBbQnJlYWtvdXQgc2Vzc2lvbl08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNob29zZSB1c2VycyBmb3IgYSBuZXcgVGVhbS1Sb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+WW91IGNhbiBjaG9vc2UgdXNlcnMgaGVyZSBhbmQgY3JlYXRlIGEgbmV3IENvbmZlcmVuY2UgUm9vbSAoIlRlYW0gUm9vbSIpIGZvciB0aGVtLiBUaGUgY2hvc2VuIHVzZXJzIHdpbGwgYXV0b21hdGljYWxseSBzd2l0Y2ggdG8gdGhlIG5ldyBUZWFtLVJvb20gb3IgZ2V0IGEgbm90aWZpY2F0aW9uLiBUZWFtLVJvb20gTW9kZXJhdG9ycyB3aWxsIGdldCBhZGRpdGlvbmFsbHkgYSBsaXN0IG9mIGN1cnJlbnQgcm9vbXMgc28gdGhhdCB0aGV5IGNhbiBzd2l0Y2ggdG8gZWFjaCByb29tIGlmIHRoZXJlIGFyZSBpcyBuZWVkIGZvciBhIE1vZGVyYXRvci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Vc2VycyBmb3IgdGhlIG5ldyBUZWFtLVJvb206PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DcmVhdGUgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNob29zZSBhdCBsZWFzdCBvbmUgdXNlciBmb3IgdGhlIFRlYW0tUm9vbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkFkZCB1c2VyIHRvIHRlYW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlJlbW92ZSB1c2VyIGZyb20gVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Vc2VyIGlzIFRlYW0tUm9vbSBNb2RlcmF0b3IgKEhlIGlzIGFibGUgdG8gbWFuYWdlIFRlYW0tUm9vbXMgYW5kIHVzZXJzIG9mIHRoZSBUZWFtLVJvb20gY2FuIGFzayBoaW0gdG8gY29tZSBpbnNpZGUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Sb29tdHlwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+SWYgeW91IGNoZWNrICJGb3JjZSB1c2VyIHRvIHN3aXRjaCB0byBuZXcgVGVhbS1Sb29tIiBhbGwgY2hvc2VuIHVzZXJzIHdpbGwgYXV0b21hdGljYWxseSBzd2l0Y2ggdG8gdGhlIG5ld2x5IGNyZWF0ZWQgVGVhbS1Sb29tLiBPdGhlcndpc2UgdGhleSBnZXQgYSBub3RpZmljYXRpb24gd2l0aCBhIGJ1dHRvbiB0aGF0IHRoZXkgJmx0O2kmZ3Q7Y2FuJmx0Oy9pJmd0OyBzd2l0Y2ggdG8gdGhlIG5ldyByb29tLiBUZWFtLU1vZGVyYXRvcnMgYWx3YXlzIGhhdmUgdGhlIGZyZWUgY2hvaWNlIHRvIG1hbmFnZSB0aGUgVGVhbS1Sb29tcyBhbmQgc3dpdGNoIGJldHdlZW4gdGhlbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk1hbmFnZSBUZWFtLVJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIHN3aXRjaCBoZXJlIGJldHdlZW4gYWxsIFRlYW0tUm9vbXMgdGhhdCB5b3UgYXJlIGFzc2lnbmVkIGFzIFRlYW0tUm9vbSBNb2RlcmF0b3IuIFVzZXJzIGluc2lkZSB0aGUgVGVhbS1Sb29tIGNhbiBzZW5kIHlvdSBhIG1lc3NhZ2UsIGZvciBleGFtcGxlIHRvIGFzayB5b3UgdG8gY29tZSB0byB0aGVpciByb29tIGFuZCBoZWxwIHRoZW0uIFlvdSBjYW4gYWxzbyB0ZXJtaW5hdGUgdGhlIFRlYW0tUm9vbSBhbmQgYWxsIFVzZXJzIHdpbGwgYmUgbG9nZ2VkIG91dC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkZvcmNlIHVzZXIgdG8gc3dpdGNoIHRvIG5ldyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNyZWF0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Vc2VycyBhdmFpbGFibGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkFkZCBhIHVzZXIgd2l0aCB0aGUgcGx1cyBmcm9tIHRoZSBsZWZ0IG9yIHJlbW92ZSBpdCB3aXRoIHRoZSBjcm9zcyBmcm9tIHRoZSByaWdodCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjEpIFRlYW0tUm9vbSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MikgQWRkIHVzZXJzIHRvIHRoZSBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW0tUm9vbSBOYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNoYW5nZSB0byB0aGUgUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U3dpdGNoIHRvIHRoaXMgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZXJtaW5hdGUgVGVhbS1Sb29tIGFuZCBsb2dvdXQgYWxsIFVzZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5OZXcgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBhIG5ldyBUZWFtLVJvb20gYXZhaWxhYmxlIGZvciB5b3UuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Td2l0Y2ggdG8gVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb20gQWN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+WW91IGNhbiByZS1vcGVuIHRoaXMgd2luZG93IHZpYSB0aGUgbWFpbiBtZW51IGluIHRoZSAiQWN0aW9ucyIgc2VjdGlvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlNlbmQgbWVzc2FnZSB0byBUZWFtLVJvb20gTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5OZXcgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBhIG5ldyBUZWFtLVJvb20gYXZhaWxhYmxlLiBZb3UgY2FuIHN3aXRjaCB0byB0aGF0IFJvb20uIFRlYW0tUm9vbXMgYXJlIGxpa2UgIldvcmtncm91cHMiIHdpdGggYWRkaXRpb25hbGx5IHBvc3NpYmlsaXRpZXMgdG8gYXNrIHRoZSBUZWFtLVJvb20gTW9kZXJhdG9yIGZvciBoZWxwLiBZb3VyIFRlYW0tUm9vbXMgYXJlIGFsc28gYXZhaWxhYmxlIGluIHRoZSAiTXkgTWVldGluZ3MiIHNlY3Rpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Td2l0Y2ggdG8gVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DcmVhdGVkIGJ5OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQ4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVhbS1Sb29tIG5hbWU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGlzIFdpbmRvdyB3aWxsIHN0YXkgb3BlbiBldmVuIGlmIHlvdSBsZWF2ZSB0aGUgcm9vbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1MCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJzIGZvciB0aGlzIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MykgT3RoZXIgVGVhbS1Sb29tcyB0aGF0IHlvdSBjb3VsZCBzd2l0Y2ggdG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1MiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlNlbmQgYSBtZXNzYWdlIHRvIHRoZSBUZWFtLVJvb20gTW9kZXJhdG9ycy4gRm9yIGV4YW1wbGUgaWYgeW91IG5lZWQgaGVscCBpbiBNb2RlcmF0aW5nIHRoZSBSb29tIG9yIGlmIHlvdSBoYXZlIGEgcXVlc3Rpb24gYWJvdXQgdGhlIHRvcGljLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U2VuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MikgVXNlcnMgdGhhdCBhcmUgaW52aXRlZCB0byB0aGlzIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+SXMgVGVhbS1Sb29tIE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGhlc2UgYXJlIGFsbCB1c2VycyB0aGF0IHRoZSBtb2RlcmF0b3IgaGFzIGludml0ZWQgdG8gdGhpcyBUZWFtLVJvb20uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBUZWFtLU1vZGVyYXRvciBsb2dnZWQgaW4gYXQgdGhlIG1vbWVudCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1OCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1OSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlBsZWFzZSBoZWxwIHVzLCB3ZSBoYXZlIGEgcHJvYmxlbSBpbiBvdXIgVGVhbS1Sb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+QSB1c2VyIGZyb20gYSBUZWFtLVJvb20gcmVxdWVzdHMgeW91ciBoZWxwLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVhbS1Sb29tIHJlcXVlc3QgZm9yIGhlbHA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2MiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk1lc3NhZ2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Gcm9tOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+WW91IGFyZSBjdXJyZW50bHkgbm90IGluIGFueSBUZWFtLVJvb20uIEJ1dCB5b3UgY2FuIHN3aXRjaCBoZXJlIHRvIGFsbCBUZWFtLVJvb21zIHRoYXQgeW91IGhhdmUgYWNjZXNzIHRvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY1IiBuYW1lPSJiYWNrdXBDb250ZW50Ij4KKyAgICA8dmFsdWU+QmFja3VwIHRoZSBTeXN0ZW0uIFRoZSBCYWNrdXAgaW5jbHVkZXMgYWxsIFVzZXIgZ2VuZXJhdGVkIGRhdGEuIFRoZSBjb25maWd1cmF0aW9uIGlzIG5vdCBpbmNsdWRlZCBhcyB3ZWxsIGFzIHRoZSBsYW5ndWFnZSBsYWJlbHMuIEJlY2F1c2UgdGhvc2UgdmFsdWVzIGFyZSBpbXBvcnRlZCB3aXRoIHRoZSBTeXN0ZW0gSW5zdGFsbGVyLiBUbyB1cGRhdGUgeW91ciBTeXN0ZW0sIGV4cG9ydCB5b3VyIG9sZCBzeXN0ZW0gKDEpIHJlLWluc3RhbGwgaW50byBhIG5ldyBkYXRhYmFzZSB0aGUgbmV3IHBhY2thZ2UgKDIpIGFuZCBpbXBvcnQgdGhlIEJhY2t1cCBmaWxlIGFnYWluICgzKS4gVGhlIEJhY2t1cCBzaG91bGQgYmUgaW1wb3J0ZWQgYmVmb3JlIGdlbmVyYXRpbmcgZGF0YSBpbiB0aGUgbmV3bHkgaW5zdGFsbGVkIHN5c3RlbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2NiIgbmFtZT0iYmFja3VwQ29udGVudCI+CisgICAgPHZhbHVlPlN5c3RlbSBCYWNrdXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2NyIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+QWxsb3cgdXNlciB0byBzaGFyZSBTY3JlZW4vUmVjb3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjgiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPkRlbnkgdXNlciB0byBzaGFyZSBTY3JlZW4vUmVjb3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjkiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPlVzZXIgaXMgTW9kZXJhdG9yLCBoZSBjYW4gZG8gYW55dGhpbmchPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzAiIG5hbWU9ImFwcGx5IGZvciBzY3JlZW4vcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0byBzaGFyZS9yZWNvcmQgc2NyZWVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDcxIiBuYW1lPSJtb2RlcmF0aW9uIG1pbmkgaWNvbnMiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGFsbG93ZWQgdG8gc2hhcmUvcmVjb3JkIHNjcmVlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDcyIiBuYW1lPSJtb2RlcmF0aW9uIG1pbmkgaWNvbnMiPgorICAgIDx2YWx1ZT5BcHBseSBmb3IgcmlnaHQgdG8gc2hhcmUvcmVjb3JkIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3MyIgbmFtZT0ibW9kZXJhdGlvbiBtaW5pIGljb25zIGNvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT5BbGxvdy9EZW55IHJpZ2h0IHRvIHNoYXJlL3JlY29yZCBzY3JlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzQiIG5hbWU9InNvdW5kIGljb24iPgorICAgIDx2YWx1ZT5UdXJuIHNvdW5kIG9mZjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc1IiBuYW1lPSJzb3VuZCBpY29uIj4KKyAgICA8dmFsdWU+VHVybiBzb3VuZCBvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc2IiBuYW1lPSJyb29tIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+QXVkaW8gb25seSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzciIG5hbWU9InJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5UdXJuIHRoaXMgRmxhZyBvbiBhbmQgdGhlIHVzZXJzIHdpbGwgaGF2ZSBvbmx5IHRoZSBBdWRpby1PcHRpb24gYW5kIG5vIFZpZGVvIGluIGEgY29uZmVyZW5jZSByb29tLiBUaGlzIGNhbiBieSBnb29kIHRvIHNhdmUgYmFuZHdpZHRoLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc4IiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5BbGxvdyBSZW1vdGUgQ29udHJvbCAoRHVyaW5nIFNjcmVlbiBTaGFyaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc5IiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5EZW55IFJlbW90ZSBDb250cm9sIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODAiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFwcGx5IGZvciByaWdodCB0byBSZW1vdGUgQ29udHJvbCBTY3JlZW4gKER1cmluZyBTY3JlZW4gU2hhcmluZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MSIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+WW91IGFyZSBhbGxvd2VkIHRvIFJlbW90ZSBDb250cm9sIFNjcmVlbiAoRHVyaW5nIFNjcmVlbiBTaGFyaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgyIiBuYW1lPSJhcHBseSBmb3IgcmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIHJlbW90ZSBjb250cm9sIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MyIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+VXNlciBpcyBNb2RlcmF0b3IsIGhlIGNhbiBkbyBhbnl0aGluZyEgW1JlbW90ZSBEZXNrdG9wIENvbnRyb2xdPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODQiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFsbG93L0RlbnkgcmlnaHQgdG8gUmVtb3RlIENvbnRyb2wgU2NyZWVuIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODUiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPjEpIFlvdXIgUEMgdG8gcmVtb3RlIFBDOiBUbyBjb3B5IGFuZCBwYXN0ZSB0ZXh0IGZyb20geW91ciBjbGlwYm9hcmQgaW50byB0aGUgcmVtb3RlIGNvbnRyb2xsZWQgc2NyZWVuLCBjbGljayBvbiB0aGUgc2NyZWVuLCB0aGVuIHJpZ2h0IGNsaWNrIGluIHRoZSB0ZXh0IGZpZWxkIGFuZCBjaG9vc2UgIkluc2VydCIgZnJvbSB0aGUgY29udGV4dCAocmlnaHQgY2xpY2spIG1lbnUuJmx0O2JyLyZndDsmbHQ7YnIvJmd0OzIpIEZyb20gcmVtb3RlIFBDIHRvIHlvdXIgUEM6IFRvIGNvcHkgdGV4dCBmcm9tIHRoZSByZW1vdGUgUEMgdG8geW91ciBQQydzIGNsaXBib2FyZCwgaGlnaGxpZ2h0IHRoZSB0ZXh0IHdpdGggdGhlIG1vdXNlIG9uIHRoZSByZW1vdGUgc2NyZWVuLCB0aGVuIHJpZ2h0LWNsaWNrIG9uIHRoZSByZW1vdGUgc2NyZWVuIGFuZCBjaG9vc2UgJmx0O2kmZ3Q7Q29weSBoaWdobGlnaHRlZCB0ZXh0Jmx0Oy9pJmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg2IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Db3B5IGFuZCBQYXN0ZSB0ZXh0IGZyb20geW91ciBQQyB0byByZW1vdGUgUEMgYW5kIHZpY2UtdmVyc2EuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODciIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNvcHkgaGlnaGxpZ2h0ZWQgdGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg4IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Ib3cgdG8gY29weSBuIHBhc3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODkiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPlF1YWxpdHkgb2YgdGhlIFNjcmVlblNoYXJlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkwIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5WZXJ5IGhpZ2ggUXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkxIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5IaWdoIFF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5MiIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+TWVkaXVtIFF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5MyIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+TG93IFF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NCIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5lbl9VUzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk1IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPmRlX0RFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTYiIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+S2V5Ym9hcmQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTciIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+Q2xvc2UgV2ViaW5hciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5OCIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5UaGUgV2ViaW5hciBpcyBhbHJlYWR5IGNsb3NlZCwgeW91IHdpbGwgYmUgcmVkaXJlY3RlZCB0byBzb21lIGludGVyZXN0aW5nIG9mZmVyaW5ncyBpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk5IiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPkNsb3NlIFJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMCIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5FeGl0IFVSTDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAxIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPlJvb20gdGVybWluYXRpb24gc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMiIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5JZiB0aGUgcm9vbSBpcyBjbG9zZWQgdXNlcnMgd2lsbCBiZSByZWRpcmVjdGVkIHRvIHRoZSBleGl0IFVSTC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5MZGFwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDQiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDYiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+Q29uZmlnIEZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5MZGFwIENvbmZpZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA4IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwOSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5FbmFibGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTAiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+SW5zZXJ0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JbnNlcnRlZCBieTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEyIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPlVwZGF0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5VcGRhdGVkIGJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTQiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+VGhlIGNvbmZpZyBmaWxlcyBhcmUgaW4gdGhlIGZvbGRlciB3ZWJhcHBzL29wZW5tZWV0aW5ncy9jb25mLiBZb3UgbmVlZCB0byBtYW51YWxseSB1cGxvYWQgdGhlIGZpbGVzIHRvIHRoaXMgZm9sZGVyLiBDaGFuZ2VzIHRvIHRoZSBjb25maWcgZmlsZSBhcmUgaW1tZWRpYXRlbHkgb25saW5lLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE1IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkNvbmZpZyBmaWxlIG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNiIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JZiB5b3UgZW5hYmxlICJBZGQgRG9tYWluIHRvIHVzZXJuYW1lIiB0aGUgdmFsdWUgb2YgdGhlIGZpZWxkICJkb21haW4iIGlzIGFkZGVkIHRvIGVhY2ggbG9naW4gdGhhdCB0aGUgdXNlciBlbnRlcnMgaW4gdGhlIGxvZ2luIGJveC4gVGhpcyBpcyB1c2VmdWwgaWYgdGhlIExvZ2luIGluIHRoZSBMZGFwIGlzIHN0b3JlZCBpbmNsdWRpbmcgdGhlIGRvbWFpbiBuYW1lLiBFeGFtcGxlOiBVc2VyIGVudGVycyAiaGFucyIgZG9tYWluIGlzIHNwZWNpZmllZCBhcyAibG9jYWxob3N0LmNvbSIsIGxvZ2luIHRoYXQgaXMgdmVyaWZpZWQgYWdhaW5zdCBMZGFwIGlzOiBoYW5zQGxvY2FsaG9zdC5jb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5BZGQgRG9tYWluIHRvIHVzZXJuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTgiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+RG9tYWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTkiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+SW5zZXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjAiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+Q29weSBoaWdobGlnaHRlZCB0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjEiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+UmVtb3RlIENsaXBib2FyZCBUZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjIiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+U2hvdyByZW1vdGUgQ2xpcGJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjMiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkRvIG5vdCBzaG93IGFnYWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjQiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNvcHkgdGV4dCBoZXJlIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI1IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0aGUgcmlnaHQgdG8gcmVtb3RlIGNvbnRyb2wgKG9yIHRoZSBtb2RlcmF0aW9uKSB0byBjb3B5IGFuZCBwYXN0ZSB0ZXh0IHRvIG9yIGZyb20gdGhlIHJlbW90ZSBzY3JlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjYiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkVkaXQgZGVmYXVsdCBzZXR0aW5ncyAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNyIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+RG8gbm90IHNob3cgaW5mbyBib3ggaW4gUmVtb3RlIENvbnRyb2wgYWJvdXQgQ29weSBhbmQgUGFzdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyOCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5TYXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjkiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+UmVtb3ZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzAiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzEiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5JbnZpdGUgdXNlciB0byBjb25mZXJlbmNlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMiIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkNob29zZSBhIGNvbmZlcmVuY2Ugcm9vbS4gVGhlIGludml0ZWQgdXNlciB3aWxsIGdldCBhIG1lc3NhZ2Ugd2l0aCB5b3VyIG5hbWUgYW5kIGEgbGluayB0byB0aGUgcm9vbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMyIgbmFtZT0iY2hhdCB1c2VyIj4KKyAgICA8dmFsdWU+Q29ubmVjdGVkIHNpbmNlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM0IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+RW50ZXIgcm9vbSBhZnRlciBzZW5kaW5nIGludml0YXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzNSIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkludml0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM2IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+TWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM3IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0byBpbnZpdGUgeW91IHRvIHRoZSBjb25mZXJlbmNlIHJvb206PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzgiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5JbnZpdGUgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM5IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+U2VuZCBJbnZpdGF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDAiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5kaWQgJmx0O2ImZ3Q7bm90Jmx0Oy9iJmd0OyBhY2NlcHQgeW91ciBpbnZpdGF0aW9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQxIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+QWNjZXB0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDIiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5EZW55PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDMiIG5hbWU9InVzZXIgcHJvZmlsZSI+CisgICAgPHZhbHVlPlRpbWV6b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDQiIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPkV2ZW50IERldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0NSIgbmFtZT0iYXBwb2ludG1lbnQgbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ2IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5EZXNjcmlwdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ3IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5DcmVhdGVkIGJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDgiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5UaW1lWm9uZSBNZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDkiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5DaGVjayAiVGltZVpvbmUgTWVzc2FnZSIgdG8gZ2l2ZSB1c2VycyBhIG1lc3NhZ2UgbmV4dCB0aW1lIHRoZXkgbG9naW4gdG8gdXBkYXRlIHRoZWlyIHByb2ZpbGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTAiIG5hbWU9InRpbWUgem9uZSB1cGRhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlBsZWFzZSBjaGVjayB0aGUgdGltZSB6b25lIGluIHlvdXIgdXNlciBwcm9maWxlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUxIiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5OZXcgJEFQUF9OQU1FIGNvbmZlcmVuY2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTIiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkRldGFpbHM6Jmx0O2JyLyZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MyIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3RhcnQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTQiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkVuZDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NSIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2hhbmdlZCAkQVBQX05BTUUgY29uZmVyZW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NiIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+T3JnYW5pemVyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU3IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DYW5jZWxlZCAkQVBQX05BTUUgY29uZmVyZW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1OCIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIGNvbmZlcmVuY2UgUmVtaW5kZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTkiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Db21tdW5pdHkgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlNob3cgY29udGFjdCBkYXRhIHRvIGV2ZXJ5Ym9keTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYxIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+QWRkIGZpZWxkcyBvZiBpbnRlcmVzdCB0aGF0IHlvdSBvZmZlciBvciB0aGF0IHlvdSBhcmUgc2VhcmNoaW5nIHRvIGZpbmQgaW50ZXJlc3RpbmcgcGFydG5lcnMgZm9yIGEgY29uZmVyZW5jZS4gQ29tbWEgc2VwYXJhdGUgdGhlIHRlcm1zIChmb3IgZXhhbXBsZTogTWVkaWNhbCBTZXJ2aWNlLCBIZWFsdGggYXNzdXJhbmNlLCAuLi4pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjIiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NeSBvZmZlcmluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MyIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk15IGludGVyZXN0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY0IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY1IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+VGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2NiIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkZpZWxkcyBvZiBpbnRlcmVzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY3IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+Q29udGFjdCBpbmZvcm1hdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY4IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2hvdyBjb250YWN0IGRhdGEgdG8gY29udGFjdHMgb25seTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY5IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2hvdyBjb250YWN0IGRhdGEgdG8gbm9ib2R5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzAiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NeSBQcm9maWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzEiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5FZGl0IHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzIiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TZWFyY2ggdXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MyIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPldhdGNoIHlvdXIgcHJvZmlsZSBsaWtlIG90aGVyIHNlZSB5b3U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkVkaXQgeW91ciBzZXR0aW5ncywgYWRkIHlvdXIgaW50ZXJlc3RzIHRvIGJlIGZvdW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzUiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TZWFyY2ggZm9yIG90aGVyIHVzZXJzIGFuZCBleHRlbmQgeW91ciBuZXR3b3JrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzYiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+U2VhcmNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzciIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+VXNlciBvZmZlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3OCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5Vc2VyIGxvb2tzIGZvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc5IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkZyZWV0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODAiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgxIiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlRpbWV6b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODIiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+T2ZmZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODMiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+U2VhcmNoczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg0IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlNlYXJjaHJlc3VsdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg1IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkFjdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NiIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5BZGQgdG8gY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NyIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5TZW5kIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4OCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5Db250YWN0cyBhbmQgTWVzc2FnZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4OSIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5QZW5kaW5nIGNvbnRhY3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTAiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5BY2NlcHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkRlbnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MiIgbmFtZT0idXNlciBjb250YWN0IHJlcXVlc3QiPgorICAgIDx2YWx1ZT5IaSw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MyIgbmFtZT0idXNlciBjb250YWN0IHJlcXVlc3QiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGFkZCB5b3UgYXMgY29udGFjdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NCIgbmFtZT0idXNlciBjb250YWN0IHJlcXVlc3QiPgorICAgIDx2YWx1ZT5DaGVjayB5b3VyIGNvbnRhY3QgcmVxdWVzdHMgaW4gJEFQUF9OQU1FIG9yIGNsaWNrIG9uIHRob3NlIGxpbmtzIHRvIGFjY2VwdCBvciBkZW55IHRoZSByZXF1ZXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTUiIG5hbWU9ImFkZCB1c2VyIGNvbnRhY3QiPgorICAgIDx2YWx1ZT5UaGlzIHVzZXIgaXMgYWxyZWFkeSBpbiB5b3VyIGNvbnRhY3QgbGlzdCBvciBoYXMgcmVjZWl2ZWQgYW4gaW52aXRhdGlvbiB0byB5b3VyIGNvbnRhY3QgbGlzdCB0aGF0IGlzIG5vdCBhbnN3ZXJlZCB5ZXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTYiIG5hbWU9InVzZXIgY29udGFjdCBtYWlsIj4KKyAgICA8dmFsdWU+WW91ciBjb250YWN0IGxpc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkVkaXQgeW91ciBjb250YWN0IGFuZCBtZXNzYWdlcywmbHQ7YnIvJmd0OyBtYW5hZ2UgeW91ciBwZW5kaW5nIGNvbnRhY3RzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk4IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+Y29uZmlybWVkIHlvdSBhcyBjb250YWN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk5IiBuYW1lPSJjaGF0IGluZm8gbWVzc2FnZSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAwIiBuYW1lPSJjaGF0IGxvZyBpY29uIj4KKyAgICA8dmFsdWU+U2hvdyAvIENvcHkgY2hhdCBsb2c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMSIgbmFtZT0iY2hhdCBsb2cgd2luZG93Ij4KKyAgICA8dmFsdWU+Q2hhdCBMb2c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RnJvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TdWJqZWN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDYiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1lc3NhZ2VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDciIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk5ldyBNYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkNsaWNrIHRvIHdyaXRlIGEgbmV3IG1lc3NhZ2UgdG8gYW55IG9mIHlvdXIgY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwOSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+V3JpdGUgbmV3IG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VG86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlN1YmplY3Q6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTIiIG5hbWU9IndoaXRlYm9hcmQgZnVsbC1maXQiPgorICAgIDx2YWx1ZT5FbmFibGUgZnVsbCBmaXQgYW5kIHRoZSB3aGl0ZWJvYXJkIHdpbGwgem9vbSB0aGUgd2hvbGUgd2hpdGVib2FyZCBzbyB0aGF0IGFsbCZsdDtici8mZ3Q7ZG9jdW1lbnRzIGFyZSB2aXNpYmxlIGFjY29yZGluZyB0byBlYWNoIHBhcnRpY2lwYW50cyBzY3JlZW4gcmVzb2x1dGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMyIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+S2ljayB1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTQiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPllvdSBjYW5ub3Qga2ljayB5b3Vyc2VsZiBvdXQgb2YgdGhlIGNvbmZlcmVuY2Ugcm9vbSEgSWYgeW91IHdhbnQgdG8gbGVhdmUgaXQgY2xvc2UgdGhlIGJyb3dzZXIgb3IgdXNlIHRoZSBleGl0IGJ1dHRvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNSIgbmFtZT0ia2ljay11c2VyIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRpc2Nvbm5lY3QgdGhpcyB1c2VyIGZyb20gdGhpcyBjb25mZXJlbmNlIHJvb20/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTYiIG5hbWU9ImtpY2stdXNlciI+CisgICAgPHZhbHVlPkNvbmZpcm0gYWN0aW9uIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE3IiBuYW1lPSJraWNrLXVzZXIiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IGtpY2sgYSBTdXBlci1Nb2RlcmF0b3Igb3V0IG9mIGEgcm9vbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxOCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Qm9vayBjb25mZXJlbmNlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxOSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3RhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZCBhbiBvcHRpb25hbCByZXF1ZXN0IGZvciBtZWV0aW5nIHRvIHRoZSBtZXNzYWdlIGFuZCBjcmVhdGUgYSBjb25mZXJlbmNlIHJvb20uIFRoZSBFdmVudCBpcyB0aGVuIGNvcGllZCBpbiB0aGUgY2FsZW5kYXIgb2YgZXZlcnkgcGFydGljaXBhbnQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkluYm94PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VHJhc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhpcyBpcyB5b3UhIFlvdSBjYW5ub3QgYWRkIHlvdXJzZWxmIGFzIHlvdXIgb3duIGNvbnRhY3QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjYiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5UaGUgdXNlciBpcyBhbHJlYWR5IGRlbmllZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoZSB1c2VyIGlzIGFscmVhZHkgYXBwcm92ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjgiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5UaGlzIHVzZXIgY29udGFjdCBoYXNoIGlzIGludmFsaWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjkiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Vc2VyIGFkZGVkIHRvIGNvbnRhY3QgbGlzdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlVzZXIgZGVuaWVkIGFzIGNvbnRhY3QgYW5kIHJlbW92ZWQgZnJvbSBwZW5kaW5nIGNvbnRhY3QgbGlzdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIHN1Y2ggY29udGFjdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPldvdWxkIHlvdSByZWFsbHkgbGlrZSB0byByZW1vdmUgdGhhdCBjb250YWN0PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMzIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+Q29uZmlybSBjb250YWN0IHJlbW92YWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkRlbGV0ZSBjb250YWN0IGZyb20gbGlzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM1IiBuYW1lPSJ1c2VyIHByb2ZpbGUiPgorICAgIDx2YWx1ZT5Vc2VyIFByb2ZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNiIgbmFtZT0idXNlciBwcm9maWxlIj4KKyAgICA8dmFsdWU+U2hvdyB1c2VyIHByb2ZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWVzc2FnZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzOCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VhcmNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbGVjdCBhbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0MCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VsZWN0IG5vbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0MSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VsZWN0IHVucmVhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWxlY3QgcmVhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Nb3ZlIHRvIGZvbGRlciAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIG5ldyBmb2xkZXIgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRlbGV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ2IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EZWxldGVkIG1haWxzIGFyZSBzdGlsbCBpbiB5b3VyIHRyYXNoIGZvbGRlciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWFyayB1bnJlYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0OCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWFyayByZWFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFuc3dlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BbnN3ZXIgZXZlcnlib2R5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkZvcndhcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWN0aW9ucyAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlNlbmQgcHJpdmF0ZSBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk5vdGhpbmcgc2VsZWN0ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1vdmUgdG8gSW5ib3g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGVsZXRlIChmaW5hbCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1OCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIGZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgZm9sZGVycyBhbmQgb3JnYW5pemUgeW91ciBtZXNzYWdlcyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIGZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPkRlbGV0ZSBmb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPllvdSBjYW5ub3QgZGVsZXRlIHRoaXMgZm9sZGVyLCB0aGVyZSBhcmUgc3RpbGwgbWVzc2FnZXMgaW5zaWRlISBEZWxldGUgZmlyc3QgdGhlIG1lc3NhZ2VzIG9yIG1vdmUgdGhlbSB0byBhbm90aGVyIGZvbGRlci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPkVkaXQgbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGZvbGRlcj8gVGhlcmUgaXMgbm8gd2F5IHRvIHVuZG8gdGhhdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPllvdXIgcmVxdWVzdCB3YXMgc2VuZCB0byB0aGUgdXNlci4gVGhlIHVzZXIgd2lsbCByZWNlaXZlIGEgbm90aWZpY2F0aW9uIHRvIGFjY2VwdCBvciBkZW55IHlvdXIgcmVxdWVzdC4gT25seSBhY2NlcHRlZCByZXF1ZXN0cyBhcmUgaW4geW91ciBjb250YWN0IGxpc3Qgb2YgY291cnNlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+TWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY4IiBuYW1lPSJ1c2VyIHZpZXcgcHJvZmlsZSI+CisgICAgPHZhbHVlPlRoZSB1c2VyIGRvZXMgbm90IHNoYXJlIGhpcyBwZXJzb25hbCBjb250YWN0IGRhdGEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjkiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+VGhlIHVzZXIgZG9lcyBzaGFyZSBoaXMgcGVyc29uYWwgY29udGFjdCBkYXRhIG9ubHkgdG8gY29udGFjdHMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzAiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+QWRkcmVzcyAmYW1wOyBQaG9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjcxIiBuYW1lPSJlcnJvciBjb2RlIj4KKyAgICA8dmFsdWU+WW91IGludml0YXRpb24gY29kZSBpcyBubyB2YWxpZCwgdGhlIGNvZGUgaXMgb25seSB2YWxpZCBkdXJpbmcgdGhpcyBzcGVjaWZpYyBkYXRlIGFuZCB0aW1lOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjcyIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhpcyBldmVudCBpcyBjb25uZWN0ZWQgdG8gc2V2ZXJhbCBjYWxlbmRhcnMgb2Ygb3RoZXIgdXNlcnMuIFlvdXIgY2hhbmdlIHdpbGwgYWxzbyB1cGRhdGUgdGhlaXIgY2FsZW5kYXIuIFdvdWxkIHlvdSByZWFsbHkgbGlrZSB0byB1cGRhdGUgdGhlIGV2ZW50PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjczIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Q29uZmlybSB1cGRhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkFsbG93IGNvbnRhY3QgdG8gc2VlIG15IGNhbGVuZGFyICh2aWV3IG9ubHkpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzUiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5EbyBub3Qgc2hhcmUgY2FsZW5kYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkNhbGVuZGFyIG9mIGNvbnRhY3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzciIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Zb3VyIGNvbnRhY3RzIG5lZWQgdG8gYXBwcm92ZSB5b3UgZmlyc3QgdG8gYmUgYWJsZSB0byBzZWUgdGhlaXIgY2FsZW5kYXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzgiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IHN0b3JlIG9yIGRlbGV0ZSBldmVudHMgZnJvbSBvdGhlciBjYWxlbmRhcnMgdGhlbiB5b3VyIG93biE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3OSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlNob3cgbXkgb3duIGNhbGVuZGFyIGFnYWluITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgwIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhpcyBldmVudCBpcyBjb25uZWN0ZWQgdG8gc2V2ZXJhbCBjYWxlbmRhcnMgb2Ygb3RoZXIgdXNlcnMuIFlvdXIgYWN0aW9uIHdpbGwgYWxzbyBkZWxldGUgdGhlIGV2ZW50IGZyb20gdGhlaXIgY2FsZW5kYXIuIFdvdWxkIHlvdSByZWFsbHkgbGlrZSB0byBkZWxldGUgdGhlIGV2ZW50PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgxIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Q29uZmlybSBhY3Rpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4MiIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPkVudGVyIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4MyIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPkFjY2VzcyB0aGUgY29uZmVyZW5jZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGEgY29uZmVyZW5jZSByb29tIGFuZCBldmVudCBib29rZWQgd2l0aCB0aGlzIHByaXZhdGUgbWVzc2FnZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NSIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPllvdSBuZWVkIHRvIHN0b3JlIHRoZSBldmVudCBmaXJzdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NiIgbmFtZT0iYWNjZXNzIHJvb21zIGVycm9yIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgbm8gc3VjaCByb29tIGF2YWlsYWJsZS4gVGhlIGV2ZW50IGluIHRoZSBjYWxlbmRhciBhbmQgY29ubmVjdGVkIHJvb20gaXMgYWxyZWFkeSBkZWxldGVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg3IiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5DaG9vc2UgeW91ciBuaWNrbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg4IiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5GaXJzdG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4OSIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+TGFzdG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MCIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+RW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MSIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+T2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MiIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+TWluaW11bSBsZW5ndGggNCBjaGFycyEgRm9yIGJvdGgsIGZpcnN0bmFtZSBhbmQgbGFzdG5hbWUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTMiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIHZhbGlkIGVtYWlsITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk0IiBuYW1lPSJhdXRoIGZyb20iPgorICAgIDx2YWx1ZT5GYWNlYm9vazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk1IiBuYW1lPSJhdXRoIGZvcm0iPgorICAgIDx2YWx1ZT5Mb2dpbiB3aXRoIHlvdXIgRmFjZWJvb2sgYWNjb3VudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk2IiBuYW1lPSJ2aWV3IHByb2ZpbGUiPgorICAgIDx2YWx1ZT5NZW1iZXIgc2luY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5NyIgbmFtZT0iZGlyZWN0IGxvZ2luIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Zb3UndmUgbG9nZ2VkIHdpdGggeW91ciBGYWNlYm9vayBhY2NvdW50LiBZb3Ugc2hvdWxkIHVwZGF0ZSB5b3VyIHByb2ZpbGUgd2l0aCB0aGUgY29ycmVjdCBlbWFpbC4gT3RoZXJ3aXNlIHlvdSB3aWxsIG5vdCByZWNlaXZlIGludml0YXRpb25zIGFuZCBwcml2YXRlIG1lc3NhZ2VzIGZyb20gb3RoZXIgdXNlcnMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTgiIG5hbWU9ImRpcmVjdCBsb2dpbiBtZXNzYWdlIGhlYWRlciI+CisgICAgPHZhbHVlPk1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5OSIgbmFtZT0iZGlyZWN0IGxvZ2luIG1lc3NhZ2UgY2hlY2tib3ggY29udHJvbCI+CisgICAgPHZhbHVlPkRvIG5vdCBzaG93IHVwZGF0ZSBwcm9maWxlIG1lc3NhZ2UgYWdhaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMCIgbmFtZT0icHJvZmlsZSBzZXR0aW5ncyBidXR0b24iPgorICAgIDx2YWx1ZT5tb3JlIGRpc3BsYXkgb3B0aW9ucyAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TmV3IHByaXZhdGUgbWVzc2FnZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2xpY2sgaGVyZSB0byB2aXNpdCB5b3VyIHByb2ZpbGUgdG8gc2VlIHRoZSBmdWxsIG1lc3NhZ2UgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlJlcGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPlJvb21zIGFuZCBjaGF0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA1IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5NeSByb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA2IiBuYW1lPSJteSByb29tcyI+CisgICAgPHZhbHVlPk15IGNvbmZlcmVuY2Ugcm9vbSAoZm9yIDEtMTYgdXNlcnMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDciIG5hbWU9Im15IHJvb21zIj4KKyAgICA8dmFsdWU+TXkgd2ViaW5hciByb29tIChmb3IgMS0xMjAgdXNlcnMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDgiIG5hbWU9InJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5Pd25lciBJZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA5IiBuYW1lPSJsb2dpbiBlcnJvciI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIHBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTAiIG5hbWU9ImxvZ2luIGVycm9yIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgYW4gYWNjb3VudCB3aXRoIFVzZXItTGV2ZWwgVXNlciwgTW9kZXJhdG9yIG9yIEFkbWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTEiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5XZWItU2VydmljZSAob25seSBhY2Nlc3MgdmlhIFNPQVApPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTIiIG5hbWU9InVwbG9hZCBmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+RG8gZGlyZWN0bHkgbG9hZCB0byB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTMiIG5hbWU9IndoaXRlYm9hcmQgY2xvc2UgY29uZmlybWF0aW9uIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIHJlbW92ZSB0aGlzIHdoaXRlYm9hcmQ/IFRoaXMgYWN0aW9uIGNhbm5vdCBiZSB1bmRvbmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTQiIG5hbWU9IndoaXRlYm9hcmQgbG9hZCBXTUwiPgorICAgIDx2YWx1ZT5Mb2FkIHRvIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxNSIgbmFtZT0icmVjb3JkaW5nIGZsYWciPgorICAgIDx2YWx1ZT5EbyBub3QgZm9yZ2V0IHN0YXJ0IHJlY29yZGluZyEgT25lIHVzZXIgcGVyIHJvb20gYWx3YXlzIG5lZWRzIHRvIHN0YXJ0IGl0IHRvIGhhdmUgdGhlIHJlY29yZGluZyBhZnRlcndhcmRzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE2IiBuYW1lPSJyZWNvcmRpbmcgZmxhZyI+CisgICAgPHZhbHVlPlN0YXJ0IFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE3IiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPkFycm93PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTgiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+Q2lyY2xlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTkiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+TGluZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIwIiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPlNxdWFyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIxIiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPlRyaWFuZ2xlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjIiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5UZXh0L05vdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyMyIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkNsaXBhcnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjQiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5EcmF3IEZyZWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNSIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlNlbGVjdC9Nb3ZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjYiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5EcmF3IFNoYXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjciIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5DdXQvTW92ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI4IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+Wm9vbSBJbi9PdXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyOSIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlByaW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzAiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5VbmRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzEiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5UcmFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMyIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+QWRkIEdyaWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMyIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlNoYXJlIEZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNCIgbmFtZT0iaWNvbiBzdWJtZW51Ij4KKyAgICA8dmFsdWU+U2VsZWN0IFNoYXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzUiIG5hbWU9Imljb24gc3VibWVudSI+CisgICAgPHZhbHVlPlNlbGVjdCBDbGlwYXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzYiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5Db3B5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzciIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5DdXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzOCIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPlBhc3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzkiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5EZWxldGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MCIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhlIGNvbXBsZXRlIGNvbnRlbnQgb24gdGhlIHdoaXRlYm9hcmQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDEiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5Mb2FkIGRpcmVjdGx5IHRvIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MiIgbmFtZT0iYXR0ZW5kZWVzIj4KKyAgICA8dmFsdWU+QXR0ZW5kZWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDMiIG5hbWU9ImF0ZW5kZWUgbWFuYWdlciI+CisgICAgPHZhbHVlPkF0dGVuZGVlIE1hbmFnZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NCIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+UHJlc2VudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ1IiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5SZW1vdGUgQ29udHJvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NiIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+RWplY3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NyIgbmFtZT0iY2hhdCI+CisgICAgPHZhbHVlPkNoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0OCIgbmFtZT0iaW52aXRlIGF0dGVuZGVlIj4KKyAgICA8dmFsdWU+SW52aXRlIEF0dGVuZGVlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ5IiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5CeSBFbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUwIiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5Vc2VyIGlzIG1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUxIiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5Vc2VyIGhhcyB3ZWJjYW0gc3dpdGNoZWQgb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1MiIgbmFtZT0iZmlsbF9vcHRpb24iPgorICAgIDx2YWx1ZT5EZWFjdGl2YXRlIHNoYXBlIGZpbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1MyIgbmFtZT0iZmlsbF9vcHRpb24iPgorICAgIDx2YWx1ZT5BY3RpdmF0ZSBzaGFwZSBmaWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTQiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5TbmFwIHRvIEdyaWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NSIgbmFtZT0iYWxsb3dfcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QWxsb3cgcmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTYiIG5hbWU9IndhaXRfZm9yX3JlY29yZGluZyI+CisgICAgPHZhbHVlPldhaXQgZm9yIHJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU3IiBuYW1lPSJoaWRlX3RvcF9iYXIiPgorICAgIDx2YWx1ZT5IaWRlIHRvcGJhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU4IiBuYW1lPSJmaWxlRXhwbG9yZXIiPgorICAgIDx2YWx1ZT5QbGF5IHZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTkiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoZSBjb250ZW50IG9uIHRoZSBjdXJyZW50IHNsaWRlPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYwIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT5BY2NlcHQgYW5kIGdyYW50IHVzZXIgcmlnaHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2MSIgbmFtZT0iYWN0aXZpdHlfd2luZG93Ij4KKyAgICA8dmFsdWU+RGVueTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYyIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT5JPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjMiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPkFjdGl2aXRpZXMgYW5kIGFjdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NCIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPlJlbW92ZSB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjUiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0aGUgbW9kZXJhdGlvbiBvciB0aGUgcmlnaHQgdG8gZHJhdyBvbiB0aGUgd2hpdGVib2FyZCB0byByZW1vdmUgd2hpdGVib2FyZHMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjYiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5Ob3QgYWxsb3dlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY3IiBuYW1lPSJ1c2VyX2xlZnRfYWN0X21zZyI+CisgICAgPHZhbHVlPmhhcyBsZWZ0IHRoZSByb29tLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY4IiBuYW1lPSJjbGlwYXJ0IGljb25zIj4KKyAgICA8dmFsdWU+TWF0aCBpY29uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY5IiBuYW1lPSJjbGlwYXJ0IGljb25zIj4KKyAgICA8dmFsdWU+Tm8gY2F0ZWdvcnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MCIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+Q29sb3ItU3R5bGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+UXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzcyIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5Eb21haW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MyIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+dmlzaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NCIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+cmVkb3JhbmdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzUiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPm1lZGl1bXNlYWdyZWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzYiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnN0ZWVsYmx1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc3IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5saWdodHN0ZWVsYmx1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc4IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5nb2xkZW5yZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3OSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+c2lsdmVyZ3JheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgwIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT51c2VyZGVmaW5lZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgxIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5iZXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODIiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnVwbG9hZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgzIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5tZWRpdW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NCIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg1IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5Vbm11dGUgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg2IiBuYW1lPSJnaXZlIGV4Y2x1c2l2ZSBhdWRpbyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBvZiBvdGhlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NyIgbmFtZT0ibXV0ZSBzZWxmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGdsb2JhbGx5IG11dGVkIGJ5IHRoZSBtb2RlcmF0b3IuIFlvdSBjYW5ub3QgdW5tdXRlIHlvdXJzZWxmITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg4IiBuYW1lPSJtdXRlIHNlbGYgY29uZmlybSBtZXNzYWdlIHRpdGxlIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg5IiBuYW1lPSJtdXRlIHNlbGYgY29uZmlybSBtZXNzYWdlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gbXV0ZSB5b3Vyc2VsZiBnbG9iYWxseT8gTm8gb3RoZXIgdXNlciB3aWxsIGhlYXIgeW91IGFueW1vcmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTAiIG5hbWU9Im11dGUgb3RoZXJzIGNvbmZpcm0gbWVzc2FnZSB0aXRsZSI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBsb2NhbGx5PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkxIiBuYW1lPSJtdXRlIG90aGVycyBjb25maXJtIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gbXV0ZSB0aGlzIG1pY3JvcGhvbmU/IFlvdSBjYW4gb25seSBtdXRlIGl0IGxvY2FsbHkgb24geW91ciBzY3JlZW4uIEl0IGhhcyBubyBlZmZlY3QgdG8gaG93IG90aGVyIHVzZXJzIGhlYXIgdGhpcyB1c2VyLiBPbmx5IG1vZGVyYXRvcnMgY2FuIHR1cm4gaXQgb2ZmIGdsb2JhbGx5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkyIiBuYW1lPSJtdXRlIG90aGVycyBjb25maXJtIG1lc3NhZ2UgdGl0bGUiPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgb2ZmIGdsb2JhbGx5PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkzIiBuYW1lPSJtdXRlIG90aGVycyBtb2RlcmF0b3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBtdXRlIHRoaXMgdXNlciBnbG9iYWxseT8gTm8gb3RoZXIgdXNlciB3aWxsIGhlYXIgaGltIGFueW1vcmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTQiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+WW91ciBzb3VuZCBpcyBvbi4gQ2xpY2sgaGVyZSB0byBzZW5kIG1vZGVyYXRvciBtZXNzYWdlIHRvIG11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5IChpbiB0aGUgY29tcGxldGUgY29uZmVyZW5jZSByb29tKSBvZmYhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTUiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+WW91ciBzb3VuZCBpcyBvZmYuIENsaWNrIGhlcmUgdG8gc2VuZCBtb2RlcmF0b3IgbWVzc2FnZSB0byB1bm11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5IChpbiB0aGUgY29tcGxldGUgY29uZmVyZW5jZSByb29tKSBvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5NiIgbmFtZT0ibXV0ZSBhcHBseSBzZWxmIG9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRoYXQgdGhlIG1vZGVyYXRvciBtdXRlcyBteSBtaWNyb3Bob25lIGdsb2JhbGx5LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk3IiBuYW1lPSJtdXRlIGFwcGx5IHNlbGYgb2ZmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRoYXQgdGhlIG1vZGVyYXRvciB1bm11dGVzIG15IG1pY3JvcGhvbmUgZ2xvYmFsbHkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTgiIG5hbWU9Im11dGUgYXBwbHkgb2YgbWVzc2FnZSI+CisgICAgPHZhbHVlPndhbnQgdGhhdCB0aGUgbW9kZXJhdG9yIHVubXV0ZXMgaGlzL2hlciBtaWNyb3Bob25lLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk5IiBuYW1lPSJtdXRlIGFwcGx5IG9mIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53YW50IHRoYXQgdGhlIG1vZGVyYXRvciBtdXRlcyBoaXMvaGVyIG1pY3JvcGhvbmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDAiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+VW5tdXRlIG1pY3JvcGhvbmUuIENsaWNrIGhlcmUgdG8gbXV0ZSBoaXMvaGVyIG1pY3JvcGhvbmUgZ2xvYmFsbHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDEiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lLiBDbGljayBoZXJlIHRvIHVubXV0ZSBoaXMvaGVyIG1pY3JvcGhvbmUgZ2xvYmFsbHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDIiIG5hbWU9Im11dGUgc2VsZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhpcyB1c2VyIGlzIGdsb2JhbGx5IG11dGVkIGJ5IHRoZSBtb2RlcmF0b3IuIFlvdSBjYW5ub3QgdW5tdXRlIGhpbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMyIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDQiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSB5b3VyIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwNSIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA2IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5Vbm11dGUgbWljcm9waG9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA3IiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDgiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDkiIG5hbWU9Im11dGUgbW9kZXJhdG9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Pbmx5IG1vZGVyYXRvcnMgY2FuIG11dGUgb3IgdW5tdXRlIGFuIHVzZXIgZ2xvYmFsbHkhIFRvIG11dGUgeW91ciBvd24gbWljcm9waG9uZTogUGxlYXNlIHVzZSB0aGUgbWljcm9waG9uZSBpY29uIGluIHlvdXIgdmlkZW8gcG9kITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDEwIiBuYW1lPSJwb2xsX25hbWUiPgorICAgIDx2YWx1ZT5Qb2xsIE5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMSIgbmFtZT0icG9sbF9uYW1lIj4KKyAgICA8dmFsdWU+WW91PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTIiIG5hbWU9ImFyY2hpdmVkX3BvbGxzIj4KKyAgICA8dmFsdWU+QXJjaGlldmVkIFBvbGxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTMiIG5hbWU9ImFjdGl2ZV9wb2xsIj4KKyAgICA8dmFsdWU+YWN0aXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTQiIG5hbWU9ImNoYXJ0X3NpbXBsZSI+CisgICAgPHZhbHVlPlNpbXBsZSBDaGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE1IiBuYW1lPSJjaGFydF9waWUiPgorICAgIDx2YWx1ZT5QaWUgQ2hhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNiIgbmFtZT0ic2lnbl91cF92YWxpZGF0aW9uIj4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTciIG5hbWU9ImNoYXRfbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+TmV3IG1lc3NhZ2Uocyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxOCIgbmFtZT0icG9sbF9jbG9zZSI+CisgICAgPHZhbHVlPkNsb3NlIFBvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxOSIgbmFtZT0icG9sbF9jbG9zZV9jb25maXJtIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNsb3NlIHRoaXMgUG9sbD8gTm8gb25lIHdpbGwgYmUgYWJsZSB0byB2b3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjAiIG5hbWU9InBvbGxfZGVsZXRlIj4KKyAgICA8dmFsdWU+RGVsZXRlIFBvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMSIgbmFtZT0icG9sbF9kZWxldGVfY29uZmlybSI+CisgICAgPHZhbHVlPkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBQb2xsPyBUaGUgcmVzdWx0cyB3aWxsIGJlIGRlbGV0ZWQgYXMgd2VsbC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMiIgbmFtZT0ibGFuZ3VhZ2VfY29kZSI+CisgICAgPHZhbHVlPkxhbmd1YWdlIElTTyBDb2RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjMiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19wZXJtaXNzaW9uIj4KKyAgICA8dmFsdWU+QWxsb3cvRGVueSByaWdodCB0byBnaXZlIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNCIgbmFtZT0iYWxsb3dfZXhjbHVzaXZlX2F1ZGlvX3Blcm1pc3Npb24iPgorICAgIDx2YWx1ZT5BbGxvdyB1c2VyIHRvIGdpdmUgZXhjbHVzaXZlIGF1ZGlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjUiIG5hbWU9ImRlbnlfZXhjbHVzaXZlX2F1ZGlvX3Blcm1pc3Npb24iPgorICAgIDx2YWx1ZT5EZW55IHVzZXIgdG8gZ2l2ZSBleGNsdXNpdmUgYXVkaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNiIgbmFtZT0iZXhjbF9hdWRpbyBhcHBseSBzZWxmIG9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGdldCBhIHBlcm1pc3Npb24gZm9yIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNyIgbmFtZT0iZXhjbF9hdWRpbyBhcHBseSBvZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+d2FudCB0aGF0IHRoZSBtb2RlcmF0b3IgZ2l2ZXMgbWUgYSBwZXJtaXNzaW9uIGZvciBleGNsdXNpdmUgYXVkaW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjgiIG5hbWU9ImV4Y2xfYXVkaW8gc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+R2l2ZSBhIHBlcm1pc3Npb24gZm9yIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyOSIgbmFtZT0iY2FtX3Jlc29sdXRpb24iPgorICAgIDx2YWx1ZT5DYW0gcmVzb2x1dGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMwIiBuYW1lPSJjYW1fcmVzb2x1dGlvbl9pbmZvIj4KKyAgICA8dmFsdWU+Q2hhbmdpbmcgdGhlIHJlc29sdXRpb24gYWZmZWN0cyBiYW5kd2lkdGgsIGJpZ2dlciBwaWN0dXJlIG5lZWRzIG1vcmUgYmFuZHdpdGghPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzEiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19lcnJvciI+CisgICAgPHZhbHVlPllvdSBkb24ndCBoYXZlIHRoZSByaWdodCB0byBnaXZlIHlvdXJzZWxmIG9yIG90aGVycyBleGNsdXNpdmUgYXVkaW8uIFlvdSBuZWVkIHRvIGFwcGx5IGZvciB0aGUgcmlnaHQgZnJvbSB0aGUgbW9kZXJhdG9yIG9yIGFzayB0aGUgbW9kZXJhdG9yIHRvIGdpdmUgeW91IGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzMiIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2FzayI+CisgICAgPHZhbHVlPkkgd291bGQgbGlrZSB0byBnZXQgdGhlIHJpZ2h0IGZvciBleGNsdXNpdmUgYXVkaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzMyIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2FjdGlvbiI+CisgICAgPHZhbHVlPkdpdmUgZXhjbHVzaXZlIGF1ZGlvIHRvIG1lIChhbHRlcm5hdGl2ZWx5IGNsaWNrIG9uIHlvdXIgdmlkZW8gcG9kIG9yIHByZXNzIEYxMik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNCIgbmFtZT0ibWljcm8gaXMgb24iPgorICAgIDx2YWx1ZT5NaWNyb3Bob25lIGlzIG9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM1IiBuYW1lPSJtaWNybyBpcyBvZmYiPgorICAgIDx2YWx1ZT5NaWNyb3Bob25lIGlzIG11dGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzYiIG5hbWU9ImhpZGVfY2hhdCI+CisgICAgPHZhbHVlPkhpZGUgY2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM3IiBuYW1lPSJoaWRlX2FjdGl2aXRpZXNfYW5kX2FjdGlvbnMiPgorICAgIDx2YWx1ZT5IaWRlIGFjdGl2aXRpZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzOCIgbmFtZT0iaGlkZV9maWxlc19leHBsb3JlciI+CisgICAgPHZhbHVlPkhpZGUgZmlsZXMgZXhwbG9yZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzOSIgbmFtZT0iaGlkZV9hY3Rpb25zX21lbnUiPgorICAgIDx2YWx1ZT5IaWRlIGFjdGlvbnMgbWVudTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQwIiBuYW1lPSJoaWRlX3NjcmVlbl9zaGFyaW5nIj4KKyAgICA8dmFsdWU+SGlkZSBzY3JlZW4gc2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQxIiBuYW1lPSJoaWRlX3doaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5IaWRlIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MiIgbmFtZT0ic2hvdyBtaWNyb3Bob25lIHN0YXR1cyI+CisgICAgPHZhbHVlPlNob3cgbWljcm8gc3RhdHVzIGluIHZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDMiIG5hbWU9ImxheW91dF9vcHRpb25zIj4KKyAgICA8dmFsdWU+TGF5b3V0IG9wdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0NCIgbmFtZT0iY2FsZW5kYXIgbmV3IGJ1dHRvbiI+CisgICAgPHZhbHVlPk5ldyBFdmVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ1IiBuYW1lPSJjYWxlbmRhciBwYXNzd29yZCBpbmZvIHRleHQiPgorICAgIDx2YWx1ZT5QYXNzd29yZCBwcm90ZWN0ZWQgYXJlIHRoZSBsaW5rcyB0byB0aGUgY29uZmVyZW5jZSB0aGF0IGFyZSBzZW5kIHRvIHRoZSBwYXJ0aWNpcGVudHMgd2hlbiB5b3Ugc2F2ZSB0aGUgY2FsZW5kYXIgZXZlbnQsIG5vdCB0aGUgcm9vbSEgVGhhdCBtZWFucyBpZiB5b3Ugc2F2ZSB0aGUgZXZlbnQgbXVsdGlwbGUgdGltZXMgYnV0IHdpdGggZGlmZmVyZW50IHBhc3N3b3JkcyBldmVyeSBwYXJ0aWNpcGVudCByZWNlaXZlcyBhIG5ldyBsaW5rIHRoYXQgaGFzIGEgZGlmZmVyZW50IHBhc3N3b3JkLiBCdXQgb2xkIGxpbmtzIHN0aWxsIHdvcmsgb25jZSBzZW5kITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ2IiBuYW1lPSJjYWxlbmRhciBlZGl0IGJ1dHRvbiI+CisgICAgPHZhbHVlPkVkaXQgZGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ3IiBuYW1lPSJzaXAgc2hvdyBkaWFsZXIiPgorICAgIDx2YWx1ZT5TaG93IHNpcCBkaWFsZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0OCIgbmFtZT0ic2lwIGNhbGwiPgorICAgIDx2YWx1ZT5DYWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDkiIG5hbWU9ImNhbGVuZGFyIGNvbnRhY3QgbGlzdCI+CisgICAgPHZhbHVlPlNob3cgY2FsZW5kYXIgZXZlbnRzIG9mIGNvbnRhY3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+WW91ciBob21lITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUxIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5QbGFuIHlvdXIgbWVldGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MiIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+V2F0Y2ggcmVjb3JkaW5nIGFuZCBpbnRlcnZpZXdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTMiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPkNob29zZSBhbmQgc3RhcnQgYSB3ZWItY29uZmVyZW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU0IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgdXNlcnMgYW5kIHJpZ2h0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU1IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgY29ubmVjdGlvbnMgYW5kIGtpY2sgdXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1NiIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIHVzZXJncm91cHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1NyIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIGNvbmZlcmVuY2Ugcm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1OCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIHN5c3RlbSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU5IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgbGFiZWxzIGFuZCB3b3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjAiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBMREFQIGFuZCBBRFMgY29uZmlndXJhdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MSIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+RXhwb3J0L0ltcG9ydCBTeXN0ZW0gQmFja3VwczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYyIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgbW9kZXJhdGlvbiBvciB0aGUgcmlnaHQgdG8gZHJhdyBvbiB3aGl0ZWJvYXJkIHRvIHVwbG9hZCwgYWRkLCBkZWxldGUgb3IgbG9hZCBmaWxlcyBhbmQgZm9sZGVycy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MyIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkVkaXQgdGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY0IiBuYW1lPSJzYWx1dGF0aW9uIj4KKyAgICA8dmFsdWU+UHJvZjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY1IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlB1Ymxpc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2NiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdGFydCBQdWJsaXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjciIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U3RvcCBQdWJsaXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+SG9zdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY5IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlB1Ymxpc2ggQXBwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzAiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UHVibGlzaCBJZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDcxIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHVjZSB0aGUgd2lkdGggb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbW92ZSBpdCBsZWZ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzIiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UmVkdWNlIHRoZSBoZWlnaHQgb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbW92ZSBpdCBib3R0b208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5SZWR1Y2UgdGhlIHggb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbWFrZSBpdCB3aWRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc0IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHVjZSB0aGUgeSBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtYWtlIGl0IGhpZ2hlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc1IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkZpbGwgdGhlc2Ugc2V0dGluZ3Mgc3RyZWFtIHlvdXIgc2NyZWVuIGRhdGEgdG8gM3RoIHBhcnR5IHByb3ZpZGVycyBsaWtlIGp1c3Rpbi50djwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc2IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlBsZWFzZSBzdGFydCBTY3JlZW4gc2hhcmluZyB0byBiZSBhYmxlIHRvIHB1Ymxpc2ggaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3NyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5Nb2RlcmF0b3IgcGVybWlzc2lvbiByZXF1aXJlZCB0byBzdGFydCByZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3OCIgbmFtZT0ibm8gcmlnaHQgZm9yIGV4Y2x1c2l2ZSBhdWRpbyI+CisgICAgPHZhbHVlPllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gYXBwbHkgZXhjbHVzaXZlIGF1ZGlvIHRvIGFueSBwYXJ0aWNpcGFudC4gWW91IG5lZWQgbW9kZXJhdGlvbiByb2xlIG9yIHRoZSByaWdodCBmb3IgZXhjbHVzaXZlIGF1ZGlvIHRvIG1ha2UgYW55IG1pY3JvcGhvbmUgZXhjbHVzaXZlIHR1cm5lZCBvbi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzkiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlVwbG9hZCBuZXcgZmlsZSB0byBmaWxlIGV4cGxvcmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODAiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPk9wZW4gbmV3IGRpYWxvZyB3aXRoIHNoYXJpbmcgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+QW4gZXhpc3RpbmcgbW9kZXJhdG9yIG11c3QgYXBwcm92ZSBpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgyIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5Bc2sgbW9kZXJhdG9yIHRvIHNoYXJlIHlvdXIgd2ViY2FtL21pY3JvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODMiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkdhdGhlciBmZWVkYmFjayBieSBjcmVhdGluZyBhIHBvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+UGFzdCBhbmQgY3VycmVudCBwb2xsIHJlc3VsdHMgYXMgY2hhcnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODUiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlZvdGUgaWYgdGhlcmUgaXMgYSBwb2xsIGZvciB0aGlzIGNvbmZlcmVuY2Ugcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg2IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5FZGl0IGNhbSBhbmQgbWljIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODciIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkNvbmZpcm0gYW5kIGxlYXZlIHRoZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODgiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkNhbGwgZXh0ZXJuYWwgcGVvcGxlIHZpYSBWb0lQL1NJUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg5IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5TZW5kIGFuIGVtYWlsIHdpdGggYSBkaXJlY3QgbGluayB0byB0aGlzIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Q2hhbmdlIHlvdXIgd2hpdGVib2FyZCBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkxIiBuYW1lPSJiYWNrdXAgYWRtaW4iPgorICAgIDx2YWx1ZT5NYXggdXBsb2FkIHNpemU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MiIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+QXNrIG1vZGVyYXRvciB0byBzaGFyZSB5b3VyIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MyIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+U3RhcnQgUHJpdmF0ZSBDaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTQiIG5hbWU9ImFsbF9wcml2YXRlX2NoYXQiPgorICAgIDx2YWx1ZT5BbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NSIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBzdGFydCBhIHByaXZhdGUgY2hhdCB3aXRoIHlvdXJzZWxmLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk2IiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5Zb3UndmUgYWxyZWFkeSBzdGFydGVkIGEgcHJpdmF0ZSBjaGF0IHdpdGggdGhpcyBwYXJ0aWNpcGFudC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NyIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHByaXZhdGUgY2hhdD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5OCIgbmFtZT0iU2VydmVycyI+CisgICAgPHZhbHVlPlNlcnZlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5OSIgbmFtZT0iU2VydmVycyI+CisgICAgPHZhbHVlPlNlcnZlcnMgcGFydGljaXBhdGluZyBpbiBjbHVzdGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDAiIG5hbWU9IlNlcnZlciBuYW1lIj4KKyAgICA8dmFsdWU+U2VydmVyIE5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMSIgbmFtZT0iU2VydmVyIEFkZHJlc3MiPgorICAgIDx2YWx1ZT5TZXJ2ZXIgQWRkcmVzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAyIiBuYW1lPSJTZXJ2ZXIgZGV0YWlscyI+CisgICAgPHZhbHVlPlNlcnZlciBkZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDMiIG5hbWU9IlNlbmQgU01TIj4KKyAgICA8dmFsdWU+U2VuZCBTTVM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNCIgbmFtZT0icHVibGlzaGluZ19tZXNzYWdlIj4KKyAgICA8dmFsdWU+UHVibGlzaGluZy4gVXNlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNSIgbmFtZT0iY21kX2xpbmVfYWRtaW4iPgorICAgIDx2YWx1ZT5UbyBzYXZlIHRpbWUgYW5kIGludGVybmV0IHRyYWZmaWMgeW91IGNhbiB1c2UgY29tbWFuZCBsaW5lIGFkbWluIHRvIGJhY2t1cC9yZXN0b3JlL3VwZ3JhZGU6XG4gMSkgZ28gdG8gT00gaW5zdGFsbCBkaXIgKGZvciBleC4gL29wdC9yZWQ1KSBcbiAyKSBzdG9wIE9NIChmb3IgZXguIC4vcmVkNS1zaHV0ZG93bi5zaClcbiAzKSAuL2FkbWluLnNoIC1iIC1maWxlIH4vdG9kYXlfb21fYmFja3VwLnppcCAoY3JlYXRlIGJhY2t1cCBvZiBjdXJyZW50IE9NKVxuIDQpIGRvd25sb2FkIGFyY2hpdmUgd2l0aCBuZXcgT01cbiA1KSBtdiAvb3B0L3JlZDUgL29wdC5yZWQ1LmJhayAobW92ZSB3b3JraW5nIHZlcnNpb24gb2YgT00ganVzdCBpbiBjYXNlIDopKVxuIDYpIGV4dHJhY3QgZG93bmxvYWRlZCBPTSB0byB0aGUgL29wdC9yZWQ1XG4gNykgLi9hZG1pbi5zaCAtaSAtZmlsZSB+L3RvZGF5X29tX2JhY2t1cC56aXAgKG9yICcuL2FkbWluLnNoIC1pIC1maWxlIH4vdG9kYXlfb21fYmFja3VwLnppcCAtLWRiLXR5cGUgbXlzcWwgLS1kYi11c2VyIG9tX3VzZXIgLS1kYi1wYXNzIG9tX3VzZXJfcGFzcycgaW4gY2FzZSBvZiB5b3UgYXJlIHVzaW5nIG5vbi1kZWZhdWx0IERCIClcbiA4KSBzdGFydCBPTVxuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDYiIG5hbWU9InB1YmxpY19yb29tX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5Sb29tcyBjb21tb24gdG8gYWxsIHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNyIgbmFtZT0icHJpdmF0ZV9yb29tX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5Sb29tcyBjb21tb24gdG8gdGhlIGN1cnJlbnQgdXNlciBncm91cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA4IiBuYW1lPSJteV9yb29tX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5Sb29tcyBvZiB0aGUgY3VycmVudCB1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDkiIG5hbWU9ImNyZWF0ZV9uZXdfcm9vbSI+CisgICAgPHZhbHVlPkNyZWF0ZS9Nb2RpZnkgYXBwb2ludG1lbnQgc3BlY2lhbCByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTAiIG5hbWU9Im11bHRpcGxlX2FkZHJlc3NlcyI+CisgICAgPHZhbHVlPllvdSBjYW4gZW50ZXIgbXVsdGlwbGUgYWRkcmVzc2VzIGluIHRoZSBmb3JtYXQ6IGZpcnN0bmFtZTEgbGFzdG5hbWUxICZsdDtlbWFpbDEmZ3Q7LCJmaXJzdG5hbWUyIGxhc3RuYW1lMiIgJmx0O2VtYWlsMiZndDssJ2ZpcnN0bmFtZTMgbGFzdG5hbWUzJyAmbHQ7ZW1haWwzJmd0OywgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTEiIG5hbWU9InN0cmVhbV92b2x1bWUiPgorICAgIDx2YWx1ZT5BZGp1c3Qgc3RyZWFtIHZvbHVtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTEyIiBuYW1lPSJtaWNyb3Bob25lX3ZvbHVtZSI+CisgICAgPHZhbHVlPkFkanVzdCBtaWNyb3Bob25lIHZvbHVtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTEzIiBuYW1lPSJjaGF0X21vZGVyYXRlZCI+CisgICAgPHZhbHVlPklzIGNoYXQgbW9kZXJhdGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTQiIG5hbWU9ImNoYXRfbW9kZXJhdGVkIj4KKyAgICA8dmFsdWU+QWxsb3cgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE1IiBuYW1lPSJjaGF0X29wZW5lZCI+CisgICAgPHZhbHVlPkNoYXQgcGFuZWwgb3BlbmVkIGJ5IGRlZmF1bHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNiIgbmFtZT0iZmlsZXNfb3BlbmVkIj4KKyAgICA8dmFsdWU+RmlsZXMgcGFuZWwgb3BlbmVkIGJ5IGRlZmF1bHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNyIgbmFtZT0ic2VydmVyIGFkbWluIHNlY3Rpb24gbGFzdHBpbmciPgorICAgIDx2YWx1ZT5MYXN0IHBpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxOCIgbmFtZT0ic2VydmVyIGFkbWluIHNlY3Rpb24gbGFzdHBpbmcgaW5mbyI+CisgICAgPHZhbHVlPkV2ZXJ5IHNsYXZlIHNlbmRzIGEgcGluZyB0byB0aGUgbWFzdGVyIGV2ZXJ5IDMgc2Vjb25kcyAoY29uZmlndXJhYmxlKS4gU2xhdmUgbGFzdFBpbmcgbXVzdCBiZSBzbWFsbGVyIHRoZW4gMSBtaW51dGUgc28gdGhhdCB0aGUgbWFzdGVyIHVzZXMgdGhlIHNsYXZlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE5IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcG9ydCI+CisgICAgPHZhbHVlPkhUVFAgUG9ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIwIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gdXNlciI+CisgICAgPHZhbHVlPlVzZXIgKFNPQVAtQWNjZXNzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIxIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcGFzc3dvcmQiPgorICAgIDx2YWx1ZT5QYXNzd29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIyIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gd2ViYXBwIHBhdGgiPgorICAgIDx2YWx1ZT5XZWJhcHAgcGF0aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIzIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcHJvdG9jb2wiPgorICAgIDx2YWx1ZT5Qcm90b2NvbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI0IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcGluZyBydW5uaW5nIj4KKyAgICA8dmFsdWU+UGluZyBydW5uaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjUiIG5hbWU9InNlcnZlciBhZG1pbiBhY3RpdmUiPgorICAgIDx2YWx1ZT5BY3RpdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyNiIgbmFtZT0iZ2VuZXJhdGVfaGFzaCI+CisgICAgPHZhbHVlPkdlbmVyYXRlIFVSTDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI3IiBuYW1lPSJuZXR3b3JrIHRlc3RpbmcgbGluayI+CisgICAgPHZhbHVlPk5ldHdvcmsgdGVzdGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI4IiBuYW1lPSJyb29tX29wdGlvbnMiPgorICAgIDx2YWx1ZT5BdXRvIHNlbGVjdCBpbnRlcnZpZXcgdmlkZW8gcG9kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjkiIG5hbWU9ImZvbnRfdW5kZXJsaW5lIj4KKyAgICA8dmFsdWU+VW5kZXJsaW5lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzAiIG5hbWU9ImZvbnRfc3R5bGUiPgorICAgIDx2YWx1ZT5Gb250IHN0eWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzEiIG5hbWU9ImFsbG93X2ZvbnRfc3R5bGVzIj4KKyAgICA8dmFsdWU+QWxsb3cgZm9udCBzdHlsZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMiIgbmFtZT0iZm9udF9jb2xvciI+CisgICAgPHZhbHVlPkZvbnQgY29sb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMyIgbmFtZT0iaHlwZXJsaW5rIj4KKyAgICA8dmFsdWU+SHlwZXJsaW5rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzQiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW4iPgorICAgIDx2YWx1ZT5TaG93IHNlc3Npb24gc3RhdGlzdGljczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM1IiBuYW1lPSJjb25uZWN0aW9uIGFkbWluIj4KKyAgICA8dmFsdWU+U2Vzc2lvbiBkZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzYiIG5hbWU9InN5c3RlbV9pbXBvcnQiPgorICAgIDx2YWx1ZT5TeXN0ZW0gaW1wb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzciIG5hbWU9ImluY2x1ZGVfaW50b19iYWNrdXAiPgorICAgIDx2YWx1ZT5JbmNsdWRlIHVwbG9hZGVkIGZpbGVzIGFuZCByZWNvcmRpbmdzIGluIGJhY2t1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM4IiBuYW1lPSJyb29tX2FkbWluX3NpcCI+CisgICAgPHZhbHVlPkVuYWJsZSBTSVAgdHJhbnNwb3J0IGluIHRoZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzkiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19jb25maXJtIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIHByb3ZpZGUgdGhpcyB1c2VyIGFuIGV4Y2x1c2l2ZSBhdWRpbz88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU0MCIgbmFtZT0ibm9fdGltZXpvbmUiPgorICAgIDx2YWx1ZT5QbGVhc2Ugc3BlY2lmeSB5b3VyIHRpbWV6b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NDUiIG5hbWU9ImNvbnRlbnRfaXNfc2F2aW5nIj4KKyAgICA8dmFsdWU+Q29udGVudCBpcyBTYXZpbmcsIFBsZWFzZSB3YWl0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorPC9sYW5ndWFnZT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL2luZG9uZXNpYW4ueG1sIGIvV2ViQ29udGVudC9sYW5ndWFnZXMvaW5kb25lc2lhbi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzM4NTYyZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL2luZG9uZXNpYW4ueG1sCkBAIC0wLDAgKzEsNDY1MiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKworPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworVGhpcyBGaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5IHRoZSBMYW5ndWFnZUVkaXRvciAKK3RvIGFkZCBuZXcgTGFuZ3VhZ2VzIG9yIG1vZGlmeS9jdXN0b21pemUgaXQgdXNlIHRoZSBMYW5ndWFnZUVkaXRvciAKK3NlZSBodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvTGFuZ3VhZ2VFZGl0b3IuaHRtbCBmb3IgRGV0YWlscyAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjLS0+Cis8bGFuZ3VhZ2UgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeG1sbnM6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbj0ibGFuZ3VhZ2UueHNkIj4KKyAgPHN0cmluZyBpZD0iMSIgbmFtZT0iY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPktvbmZlcmVuc2k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMiIgbmFtZT0ibWVldGluZyI+CisgICAgPHZhbHVlPlJhcGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMiIG5hbWU9ImNsYXNzcm9vbSI+CisgICAgPHZhbHVlPkV2ZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQiIG5hbWU9InNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2V0aW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUiIG5hbWU9ImJlbnV0emVyIj4KKyAgICA8dmFsdWU+UHJvZmlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYiIG5hbWU9ImFkbWluIj4KKyAgICA8dmFsdWU+QWRtaW5pc3RyYXNpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjciIG5hbWU9InN0b3AiPgorICAgIDx2YWx1ZT5TdG9wPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPlJla2FtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkiIG5hbWU9Im5vZmlsZSI+CisgICAgPHZhbHVlPkZpbGUgdGlkYWsgdGVyc2VkaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAiIG5hbWU9InJlY29yZGJ5dGVhY2hlciI+CisgICAgPHZhbHVlPlJla2FtYW4gZHIgZG9zZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEiIG5hbWU9ImNvbm5lY3RlZHVzZXJzIj4KKyAgICA8dmFsdWU+UGVuZ2d1bmEgdGVya29uZWtzaTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIiIG5hbWU9InN0YXJ0Y29uZiI+CisgICAgPHZhbHVlPk11bGFpIEtvbmZlcmVuc2k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMiIG5hbWU9Im15bmFtZSI+CisgICAgPHZhbHVlPk5hbWEgU2F5YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNCIgbmFtZT0idmlkZW9jb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+VmlkZW8gS29uZmVyZW5zaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNSIgbmFtZT0iaW1wb3J0Ij4KKyAgICA8dmFsdWU+U2ltcGFuIEZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYiIG5hbWU9InJlZnJlc2hmaWxlcyI+CisgICAgPHZhbHVlPlBhbmdnaWwgVWxhbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTciIG5hbWU9InRvbWFpbmZpbGUiPgorICAgIDx2YWx1ZT5LZSBGaWxlIFV0YW1hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4IiBuYW1lPSJuZXdwb2xsIj4KKyAgICA8dmFsdWU+UG9saW5nIEJhcnU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkiIG5hbWU9Im5ld3BvbGxoZWFkZXIiPgorICAgIDx2YWx1ZT5Qb2xpbmcgQmFydSB1bnR1ayBLb25mZXJlbnNpLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMCIgbmFtZT0icXVlc3Rpb24iPgorICAgIDx2YWx1ZT5QZXJ0YW55YWFuOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMSIgbmFtZT0icG9sbHR5cGUiPgorICAgIDx2YWx1ZT5Nb2RlbCBQb2xpbmc6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyIiBuYW1lPSJjcmVhdGUiPgorICAgIDx2YWx1ZT5CdWF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzIiBuYW1lPSJpbmZvbWVzc2FnZSI+CisgICAgPHZhbHVlPkNhdGF0YW46IFNldGlhcCB1c2VyIHRlcmtvbmVrc2kgYWthbiBtZW5lcmltYSBwZXNhbiBkYW5nYW4gcG9saW5nIGJhcnUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0IiBuYW1lPSJjcmVhdHBvbGwiPgorICAgIDx2YWx1ZT5CdWF0IFBvbGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNSIgbmFtZT0iY2FuY2VsIj4KKyAgICA8dmFsdWU+QmF0YWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYiIG5hbWU9Inllc25vIj4KKyAgICA8dmFsdWU+WWEvVGlkYWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjciIG5hbWU9Im51bWVyaWMiPgorICAgIDx2YWx1ZT5BbmdrYSBkYXJpIDEtMTA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgiIG5hbWU9InBvbGwiPgorICAgIDx2YWx1ZT5Qb2xpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkiIG5hbWU9Im1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5IYW55YSBtb2RlcmF0b3IgeWFuZyBiaXNhIG1lbWJ1YXQgcGVydGFueWFhbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMCIgbmFtZT0idm90ZSI+CisgICAgPHZhbHVlPlBpbGloYW4gYW5kYSB1ZGFoIHRlcmNhdGF0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMSIgbmFtZT0iYWxyZWFkeXZvdGVkIj4KKyAgICA8dmFsdWU+QW5kYSB0ZWxhaCBtZWxha3VrYW4gcGlsaWhhbiBwYWRhIFBvbGluZyBpbmkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyIiBuYW1lPSJ2b3RpbmciPgorICAgIDx2YWx1ZT5QaWxpaCAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzIiBuYW1lPSJhbnN3ZXIiPgorICAgIDx2YWx1ZT5SZXNwb24gQW5kYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQiIG5hbWU9InllcyI+CisgICAgPHZhbHVlPllhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1IiBuYW1lPSJubyI+CisgICAgPHZhbHVlPlRpZGFrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2IiBuYW1lPSJxdWVzdGlvbndhbnQiPgorICAgIDx2YWx1ZT5ZYW5nIGRpaW5naW5rYW46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3IiBuYW1lPSJwb2xscmVzdWx0cyI+CisgICAgPHZhbHVlPkhhc2lsIFBvbGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOCIgbmFtZT0icXVlc3Rpb24iPgorICAgIDx2YWx1ZT5QZXJ0YW55YWFuOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOSIgbmFtZT0icmVzdWx0cyI+CisgICAgPHZhbHVlPkhhc2lsOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MCIgbmFtZT0iYW5zd2VycyI+CisgICAgPHZhbHVlPkphd2FiYW46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxIiBuYW1lPSJub3BvbGwiPgorICAgIDx2YWx1ZT5CZWx1bSBhZGEgcG9saW5nIHlhbmcgZGltdWxhaS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIiIG5hbWU9InZvdGluZ3MiPgorICAgIDx2YWx1ZT5QaWxpaCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMiIG5hbWU9Im1lZXRpbmciPgorICAgIDx2YWx1ZT5SYXBhdCAoNCBrdXJzaSBtYWtzaW11bSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQiIG5hbWU9ImNvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT5Lb25mZXJlbnNpICg1MCBrdXJzaSBtYWtzaW11bSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUiIG5hbWU9InR5cGUiPgorICAgIDx2YWx1ZT5UaXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2IiBuYW1lPSJyZW1haW5pbmdzZWF0cyI+CisgICAgPHZhbHVlPkt1cnNpIGxhaW5ueWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDciIG5hbWU9ImFscmVhZHljaG9zZW4iPgorICAgIDx2YWx1ZT5TdWRhaCBkaXBpbGloPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4IiBuYW1lPSJlbnRlciI+CisgICAgPHZhbHVlPm1hc3VrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5IiBuYW1lPSJtb2RsZWF2ZSI+CisgICAgPHZhbHVlPk1vZGVyYXRvciBtZW5pbmdnYWxrYW4gcmFwYXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwIiBuYW1lPSJzeXN0ZW1tZXNzYWdlIj4KKyAgICA8dmFsdWU+U2lzdGVtIGluZm9ybWFzaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MSIgbmFtZT0iY2hvc3NlZGV2aWNlIj4KKyAgICA8dmFsdWU+UGlsaWggcGVyYW5na2F0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyIiBuYW1lPSJjaG9vc2VjYW0iPgorICAgIDx2YWx1ZT5QaWxpaCB3ZWJjYW06PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzIiBuYW1lPSJjaG9vc2VtaWMiPgorICAgIDx2YWx1ZT5QaWxpaCBNaWM6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0IiBuYW1lPSJvayI+CisgICAgPHZhbHVlPm9rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1IiBuYW1lPSJjYW5jZWwyIj4KKyAgICA8dmFsdWU+YmF0YWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYiIG5hbWU9InJlY29uZWVjdG5lZWRlZCI+CisgICAgPHZhbHVlPkFuZGEgaGFydXMga29uZWsga2VtYmFsaS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTciIG5hbWU9ImVkaXRzZXR1cCI+CisgICAgPHZhbHVlPkVkaXQgc2V0aW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OCIgbmFtZT0iY291cnNlIj4KKyAgICA8dmFsdWU+S3Vyc3VzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OSIgbmFtZT0ibGFuZ3VhZ2UiPgorICAgIDx2YWx1ZT5CYWhhc2E6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwIiBuYW1lPSJvazIiPgorICAgIDx2YWx1ZT5vazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MSIgbmFtZT0iY2FuY2VsMyI+CisgICAgPHZhbHVlPmJhdGFsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyIiBuYW1lPSJjbGVhcndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5oYXB1cyB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzIiBuYW1lPSJjbGVhcndoaXRlYm9hcmRxdWVzdGlvbiI+CisgICAgPHZhbHVlPkFuZGEgaW5naW4gd2hpdGJvYXJkIGRpIGJlcnNpaGthbiBzZWJlbHVtIGdhbWJhciBiYXJ1IGRpdGFtYmFoa2FuPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NCIgbmFtZT0iZG9udGFza2FnYWluIj4KKyAgICA8dmFsdWU+SmFuZ2FuIGJlcnRhbnlhIGxhZ2k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUiIG5hbWU9Im5vIj4KKyAgICA8dmFsdWU+VGlkYWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYiIG5hbWU9ImVkaXRzZXR1cDIiPgorICAgIDx2YWx1ZT5FZGl0IHNldGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NyIgbmFtZT0ibmVlZGNvbmZpcm1hdGlvbndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5EaXBlcmx1a2FuIEtvbmZpcm1hc2kgc2ViZWx1bSBtZW1iZXJzaWhrYW4gd2hpdGVib2FyZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgiIG5hbWU9InVzZXJpbmZvIj4KKyAgICA8dmFsdWU+SW5mbyBQZW5nZ3VuYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OSIgbmFtZT0iY2xlYXJkcmF3YXJlYSI+CisgICAgPHZhbHVlPmJlcnNpaGthbiBBcmVhIEdhbWJhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MCIgbmFtZT0idW5kbyI+CisgICAgPHZhbHVlPkJhdGFsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxIiBuYW1lPSJyZWRvIj4KKyAgICA8dmFsdWU+VWxhbmdpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyIiBuYW1lPSJzZWxlY3RvYmplY3QiPgorICAgIDx2YWx1ZT5QaWxpaCBPYmplazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MyIgbmFtZT0idGV4dCI+CisgICAgPHZhbHVlPlR1bGlzYW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQiIG5hbWU9InBhaW50Ij4KKyAgICA8dmFsdWU+R2FtYmFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1IiBuYW1lPSJkcmF3bGluZSI+CisgICAgPHZhbHVlPkdhbWJhciBnYXJpczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NiIgbmFtZT0iZHJhd3UiPgorICAgIDx2YWx1ZT5HYW1iYXIgZ2FyaXMgYmF3YWg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzciIG5hbWU9InJlY3QiPgorICAgIDx2YWx1ZT5Lb3RhazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OCIgbmFtZT0iZWxsaXBzZSI+CisgICAgPHZhbHVlPkxvbmpvbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkiIG5hbWU9ImFycm93Ij4KKyAgICA8dmFsdWU+UGFuYWg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAiIG5hbWU9ImRlbGV0ZWNob3NlbiI+CisgICAgPHZhbHVlPkhhcHVzIGl0ZW0geWcgZGlwaWxpaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MSIgbmFtZT0iYXBwbGl5bW9kIj4KKyAgICA8dmFsdWU+VGFtYmFoa2FuIGtlIG1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MiIgbmFtZT0iYXBwbHkiPgorICAgIDx2YWx1ZT5UYW1iYWg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODMiIG5hbWU9ImNhbmNlbCI+CisgICAgPHZhbHVlPmJhdGFsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0IiBuYW1lPSJtb2QiPgorICAgIDx2YWx1ZT5NZW5qYWRpIE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NSIgbmFtZT0iY2xvc2UiPgorICAgIDx2YWx1ZT50dXRwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2IiBuYW1lPSJpdGFsaWMiPgorICAgIDx2YWx1ZT5jZXRhayBtaXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODciIG5hbWU9ImJvbGQiPgorICAgIDx2YWx1ZT5jZXRhayB0ZWJhbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OCIgbmFtZT0id2FpdGluZyI+CisgICAgPHZhbHVlPlRVTkdHVTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OSIgbmFtZT0iYXBwbHlNZXNzYWdlIj4KKyAgICA8dmFsdWU+UGVzZXJ0YSBtZW5naW5naW5rYW4gbWFzdWsgbWVuamFkaSBtb2RlcmF0b3I6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwIiBuYW1lPSJhY2NlcHQiPgorICAgIDx2YWx1ZT5kaXRlcmltYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MSIgbmFtZT0icmVqZWN0Ij4KKyAgICA8dmFsdWU+ZGl0b2xhazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MiIgbmFtZT0iY2FuY2VsIj4KKyAgICA8dmFsdWU+YmF0YWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMiIG5hbWU9InNlbmRtb2RyZXF1ZXN0bWVzc2FnZSI+CisgICAgPHZhbHVlPktpcmlta2FuIHBlcm1pbnRhYW4ga2UgYmViZXJhcGEgcGVzZXJ0YSBiZXJpa3V0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0IiBuYW1lPSJhY2NlcHQiPgorICAgIDx2YWx1ZT5EaXRlcmltYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NSIgbmFtZT0icmVqZWN0Ij4KKyAgICA8dmFsdWU+RGl0b2xhazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NiIgbmFtZT0iY2hhbmdlbW9kIj4KKyAgICA8dmFsdWU+R2FudGkgTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3IiBuYW1lPSJub25tb2RlcnJvcm1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BbmRhIGJ1a2FuIG1vZGVyYXRvciBkYWxhbSBrdXJzdXMgaW5pITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OCIgbmFtZT0ibW9kZXJhdG9yIj4KKyAgICA8dmFsdWU+TW9kZXJhdG9yOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OSIgbmFtZT0icm9vbWZ1bGxtZXNzYWdlIj4KKyAgICA8dmFsdWU+S2VsYXMgcGVudWgsIGNvYmEgbGFnaSBuYW50aS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwIiBuYW1lPSJlbGxsaXBzZSI+CisgICAgPHZhbHVlPkJlbnR1ayBMb25qb25nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMSIgbmFtZT0iY2xvc2UiPgorICAgIDx2YWx1ZT50dXR1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIiIG5hbWU9IkF1dGhFcnJvciI+CisgICAgPHZhbHVlPmVudHJpIGRhdGEgc2FsYWg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzIiBuYW1lPSJtaW40dXNlcm5hbWUiPgorICAgIDx2YWx1ZT40IGthcmFrdGVyIGF0YXUgbGViaWg7IGh1cnVwIGthcGl0YWwgc2VtdWEhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNCIgbmFtZT0ibWluNHBhc3MiPgorICAgIDx2YWx1ZT51c2VycGFzcyBoYXJ1cyBsZWJpaCBkYXJpIDQga2FyYWt0ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1IiBuYW1lPSJ1c2VybmFtZXRha2VuIj4KKyAgICA8dmFsdWU+dXNlcm5hbWUgc3VkYWggdGVycGFrYWk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2IiBuYW1lPSJlbWFpbHRha2VuIj4KKyAgICA8dmFsdWU+ZW1haWwgc3VkYWggZGlyZWdpc3RyYXNpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNyIgbmFtZT0iZW1haWx0YWtlbiI+CisgICAgPHZhbHVlPlN5c3RlbSBlcnJvciBzaWxhaGthbiBrb250YWsgQWRtaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4IiBuYW1lPSJBdXRobG9naW4iPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkiIG5hbWU9IkF1dGh1c2VyIj4KKyAgICA8dmFsdWU+VXNlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwIiBuYW1lPSJBdXRocGFzcyI+CisgICAgPHZhbHVlPlBhc3M6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMSIgbmFtZT0iQXV0aGxhbmciPgorICAgIDx2YWx1ZT5CYWhhc2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyIiBuYW1lPSJBdXRocmVnIj4KKyAgICA8dmFsdWU+TWFzdWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzIiBuYW1lPSJyZWdmb3JtaGVhZCI+CisgICAgPHZhbHVlPk1lbmRhZnRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQiIG5hbWU9InJlZ2Zvcm11c2VyIj4KKyAgICA8dmFsdWU+VXNlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1IiBuYW1lPSJyZWdmb3JtcGFzcyI+CisgICAgPHZhbHVlPlBhc3M6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNiIgbmFtZT0icmVnZm9ybXJldHlwZSI+CisgICAgPHZhbHVlPlVsYW5naSBQYXNzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTciIG5hbWU9InJlZ2Zvcm1maXJzdG5hbWUiPgorICAgIDx2YWx1ZT5OYW1hIERlcGFuOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgiIG5hbWU9InJlZ2Zvcm1sYXN0bmFtZSI+CisgICAgPHZhbHVlPk5hbWEgQmVsYWthbmc6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOSIgbmFtZT0icmVnZm9ybW1haWwiPgorICAgIDx2YWx1ZT5FbWFpbDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwIiBuYW1lPSJyZWdmb3Jtc3RhdGUiPgorICAgIDx2YWx1ZT5OZWdhcmE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMSIgbmFtZT0icmVnZm9ybWJ0bjEiPgorICAgIDx2YWx1ZT5EYWZ0YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyIiBuYW1lPSJyZWdmb3JtYnRuMiI+CisgICAgPHZhbHVlPkJhdGFsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMyIgbmFtZT0iQXV0aGJ0bjIiPgorICAgIDx2YWx1ZT5CdWthbiBhbmdnb3RhPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPkhhbGFtYW4gVXRhbWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1IiBuYW1lPSJ1c2VyYWRtaW4iPgorICAgIDx2YWx1ZT5Vc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNiIgbmFtZT0iZ3JvdXBhZG1pbiI+CisgICAgPHZhbHVlPkdyb3VwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNyIgbmFtZT0ib3JnYWRtaW4iPgorICAgIDx2YWx1ZT5PcmdhbmlzYXNpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOCIgbmFtZT0iaGVhZGNvbmYiPgorICAgIDx2YWx1ZT5SdWFuZy1SYXBhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkiIG5hbWU9ImNvbmZfcHViIj4KKyAgICA8dmFsdWU+cHVibGlrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMCIgbmFtZT0iaGVhZF9vcmciPgorICAgIDx2YWx1ZT5vcmdhbmlzYXNpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMSIgbmFtZT0iYnRuX2VudGVycm9vbSI+CisgICAgPHZhbHVlPm1hc3VrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMiIgbmFtZT0idXNlcmFsdGVyc2VsZl9sb2dpbiI+CisgICAgPHZhbHVlPkxvZ2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMyIgbmFtZT0idXNlcmFsdGVyc2VsZl9wYXNzIj4KKyAgICA8dmFsdWU+UGFzc3dvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Bhc3NyZXR5cGUiPgorICAgIDx2YWx1ZT5VbGFuZ2kgUGFzc3dvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2ZpcnN0bmFtZSI+CisgICAgPHZhbHVlPk5hbWEgRGVwYW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2xhc3RuYW1lIj4KKyAgICA8dmFsdWU+TmFtYSBCZWxha2FuZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzciIG5hbWU9InVzZXJhbHRlcnNlbGZfZW1haWwiPgorICAgIDx2YWx1ZT5FbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgiIG5hbWU9InVzZXJhbHRlcnNlbGZfYmlydGgiPgorICAgIDx2YWx1ZT5VbGFuZyB0YWh1bjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkiIG5hbWU9InVzZXJhbHRlcnNlbGZfc3RyZWV0bm8iPgorICAgIDx2YWx1ZT5KYWxhbi9ObzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDAiIG5hbWU9InVzZXJhbHRlcnNlbGZfdG93biI+CisgICAgPHZhbHVlPktvZGVwb3MvS290YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDEiIG5hbWU9InVzZXJhbHRlcnNlbGZfc3RhdGUiPgorICAgIDx2YWx1ZT5OZWdhcmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2FkcmVzc2NvbW1lbnQiPgorICAgIDx2YWx1ZT5JbmZvcm1hc2kgYWxhbWF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MyIgbmFtZT0idXNlcmFsdGVyc2VsZl9oZWFkZXIiPgorICAgIDx2YWx1ZT5EYXRhIFVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0IiBuYW1lPSJzYXZlbWVudWJhcl9zYXZlbGFiZWwiPgorICAgIDx2YWx1ZT5zaW1wYW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1IiBuYW1lPSJzYXZlbWVudWJhcl9zYXZlbGFiZWwiPgorICAgIDx2YWx1ZT5TaW1wYW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2IiBuYW1lPSJhZG1pbl91c2VybGlzdF91c2VyX2lkIj4KKyAgICA8dmFsdWU+SUQgVVNFUjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDciIG5hbWU9ImFkbWluX3VzZXJsaXN0X2xvZ2luIj4KKyAgICA8dmFsdWU+bG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4IiBuYW1lPSJhZG1pbl91c2VybGlzdF9maXJzdG5hbSI+CisgICAgPHZhbHVlPm5hbWEgZGVwYW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5IiBuYW1lPSJhZG1pbl91c2VybGlzdF9sYXN0bmFtZSI+CisgICAgPHZhbHVlPm5hbWEgYmVsYWthbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwIiBuYW1lPSJ0dXJub3Zlcmxpc3RfbmV4dCI+CisgICAgPHZhbHVlPnNlbGFuanV0bnlhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MSIgbmFtZT0idHVybm92ZXJsaXN0X3ByZSI+CisgICAgPHZhbHVlPnNlYmVsdW1ueWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyIiBuYW1lPSJzYXZlY29udGVudF9jb25maXJtIj4KKyAgICA8dmFsdWU+aGFwdXMgcmVrb3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzIiBuYW1lPSJzYXZlY29udGVudF9jb25maXJtX2NhbmNlbF9idG4iPgorICAgIDx2YWx1ZT5iYXRhbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTQiIG5hbWU9InNhdmVjb250ZW50X2NvbmZpcm1fY29uZmlybV9idG4iPgorICAgIDx2YWx1ZT5oYXB1czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTUiIG5hbWU9InNhdmVtZW51YmFyX2FkZGxhYmVsIj4KKyAgICA8dmFsdWU+cmVrb3QgYmFydTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTYiIG5hbWU9InNhdmVtZW51YmFyX3JlbG9hZGxhYmVsIj4KKyAgICA8dmFsdWU+cGFuZ2dpbCB1bGFuZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTciIG5hbWU9InNhdmVtZW51YmFyX2RlbGV0ZWxhYmVsIj4KKyAgICA8dmFsdWU+aGFwdXMgcmVrb3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU4IiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fc3RhdHVzIj4KKyAgICA8dmFsdWU+c3RhdHVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1OSIgbmFtZT0idXNlcmFsdGVyX2FkbWluX3N0YXR1c0l0ZW0iPgorICAgIDx2YWx1ZT5hYmFpa2FuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2MCIgbmFtZT0idXNlcmFsdGVyX2FkbWluX3N0YXR1c0l0ZW0iPgorICAgIDx2YWx1ZT5ha3RpZmthbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjEiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9vcmdhbmlzYXRpb24iPgorICAgIDx2YWx1ZT5vcmdhbmlzYXNpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2MiIgbmFtZT0iY2FsZW5kYXJfaWNvbmxhYmVsIj4KKyAgICA8dmFsdWU+a2FsZW5kZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYzIiBuYW1lPSJzYXZld2luZG93X2J0biI+CisgICAgPHZhbHVlPnR1dHVwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2NCIgbmFtZT0ib3JnYW5pc2F0aW9udGFibGVsaXN0X2lkcm93Ij4KKyAgICA8dmFsdWU+SUQgT3JnYW5pc2FzaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjUiIG5hbWU9Im9yZ2FuaXNhdGlvbnRhYmxlbGlzdF9uYW1lcm93Ij4KKyAgICA8dmFsdWU+bmFtYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjYiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGlkMSI+CisgICAgPHZhbHVlPnVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY3IiBuYW1lPSJ1c2VydmFsdWVfbGV2ZWxpZDIiPgorICAgIDx2YWx1ZT5tb2Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY4IiBuYW1lPSJ1c2VydmFsdWVfbGV2ZWxpZDMiPgorICAgIDx2YWx1ZT5hZG1pbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjkiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGxhYmVsIj4KKyAgICA8dmFsdWU+bGV2ZWwgdXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzAiIG5hbWU9Im9yZ3ZhbHVlX2hlYWRlciI+CisgICAgPHZhbHVlPm9yZ2FuaXNhc2k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTcxIiBuYW1lPSJvcmd2YWx1ZV9vcmduYW1lIj4KKyAgICA8dmFsdWU+bmFtYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzIiIG5hbWU9Im9yZ3ZhbHVlX29yZ25hbWUiPgorICAgIDx2YWx1ZT50YW1iYWhrYW4gb3JnYW5pc2FzaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzMiIG5hbWU9Im9yZ3ZhbHVlX29yZ25hbWUiPgorICAgIDx2YWx1ZT50YW1iYWhrYW4gb3JnYW5pc2FzaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzQiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW4iPgorICAgIDx2YWx1ZT5iYXRhbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzUiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW4iPgorICAgIDx2YWx1ZT50YW1iYWg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc2IiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luIj4KKyAgICA8dmFsdWU+aGFwdXMgb3JnYW5pc2FzaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzciIG5hbWU9Im9yZ3ZhbHVlX3VzZXJsaXN0Ij4KKyAgICA8dmFsdWU+dXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzgiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJsaXN0YWRkIj4KKyAgICA8dmFsdWU+dGFtYmFoIHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc5IiBuYW1lPSJvcmd2YWx1ZV91c2VybGlzdGRlbGV0ZSI+CisgICAgPHZhbHVlPmhhcHVzIHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgwIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luaGVhZGVyIj4KKyAgICA8dmFsdWU+dGFtYmFoIHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgxIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luc2VhcmNoZmllbGQiPgorICAgIDx2YWx1ZT5jYXJpIHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgyIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luc2VhcmNoYnRuIj4KKyAgICA8dmFsdWU+Y2FyaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODMiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5zZWFyY2hyZXN1bHQiPgorICAgIDx2YWx1ZT51c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NCIgbmFtZT0ibG9naW53aW5fY2hvb3Nlb3JnYW5pc2F0aW9uIj4KKyAgICA8dmFsdWU+b3JnYW5pc2FzaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODUiIG5hbWU9ImxvZ2lud2luX2Nob29zZW9yZ2FuaXNhdGlvbmJ0biI+CisgICAgPHZhbHVlPm1hc3VrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NiIgbmFtZT0ibmF2aV9yb29tYWRtaW4iPgorICAgIDx2YWx1ZT5ydWFuZyBrb25mZXJlbnNpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NyIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPlJ1YW5nIEtvbmZlcmVuc2k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg4IiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+aWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg5IiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+TmFtYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTAiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5wdWJsaWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkxIiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+b3JnYW5pc2FzaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTIiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5SdWFuZyBSYXBhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTMiIG5hbWU9InJvb212YWx1ZV9uYW1lIj4KKyAgICA8dmFsdWU+bmFtYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTQiIG5hbWU9InJvb212YWx1ZV90eXBlIj4KKyAgICA8dmFsdWU+dGlwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTUiIG5hbWU9InJvb212YWx1ZV9pc3B1YmxpYyI+CisgICAgPHZhbHVlPnB1YmxpazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTYiIG5hbWU9InJvb212YWx1ZV9jb21tZW50Ij4KKyAgICA8dmFsdWU+a29tZW50YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk3IiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVpY29uIj4KKyAgICA8dmFsdWU+c2ltcGFuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5OCIgbmFtZT0id2hpdGVib2FyZF9vcGVuaWNvbiI+CisgICAgPHZhbHVlPnBhbmdnaWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk5IiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbmhlYWRlciI+CisgICAgPHZhbHVlPnNpbXBhbiBzZWJhZ2FpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMCIgbmFtZT0id2hpdGVib2FyZF9zYXZlYXN3aW50ZXh0Ij4KKyAgICA8dmFsdWU+bmFtYSBmaWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMSIgbmFtZT0iZmlsZXMiPgorICAgIDx2YWx1ZT5uYW1hIGZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAyIiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbmJ0bjEiPgorICAgIDx2YWx1ZT5iYXRhbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDMiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2luYnRuMiI+CisgICAgPHZhbHVlPnNpbXBhbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDQiIG5hbWU9InJwY2Vycm9yd2luX2hlYWRlciI+CisgICAgPHZhbHVlPnNhbGFoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNSIgbmFtZT0ibG9hZHdtbF9oZWFkZXIiPgorICAgIDx2YWx1ZT5wYW5nZ2lsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNiIgbmFtZT0ibG9hZHdtbF9tZXNzc2xvYWQiPgorICAgIDx2YWx1ZT5vYmplayB0ZXJwYW5nZ2lsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNyIgbmFtZT0ibG9hZHdtbF9tZXNzc3luYyI+CisgICAgPHZhbHVlPnNpbmtyb25hc2kga2xpZW4sIGhhcmFwIG1lbnVuZ2d1OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDgiIG5hbWU9ImxvYWRpbWFnZV9tZXNzbG9hZCI+CisgICAgPHZhbHVlPlBhbmdnaWwgZGF0YSBnYW1iYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA5IiBuYW1lPSJsb2FkaW1hZ2VfbWVzc3N5bmMiPgorICAgIDx2YWx1ZT5zaW5rcm9uYXNpIGtsaWVuLCBoYXJhcCBtZW51bmdndTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEwIiBuYW1lPSJsb2Fkd21sX2NvbmZpcm1oZWFkZXIiPgorICAgIDx2YWx1ZT5iZXJzaWhrYW4gYXJlYSBnYW1iYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjExIiBuYW1lPSJsb2Fkd21sX2NvbmZpcm1tZXNzIj4KKyAgICA8dmFsdWU+YXJlYSBnYW1iYXIgZGkgYmVyc2loa2FuLCBzZW11YSBkYXRhIGFrYW4gaGlsYW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMiIgbmFtZT0ibG9hZHdtbF9jb25maXJtbWVzczIiPgorICAgIDx2YWx1ZT5Lb25maXJtYXNpIHNlYmVsdW0gcGFuZ2dpbCBmaWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMyIgbmFtZT0ic2VuZF9pbnZpdGF0aW9uX2J0biI+CisgICAgPHZhbHVlPktpcmltIHVuZGFuZ2FuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNCIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX2hlYWRlciI+CisgICAgPHZhbHVlPktpcmltIHVuZGFuZ2FuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNSIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX3N1YmplY3QiPgorICAgIDx2YWx1ZT5KdWR1bDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTYiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9yZWNpcGllbnQiPgorICAgIDx2YWx1ZT5QZW5lcmltYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTciIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9tZXNzYWdlIj4KKyAgICA8dmFsdWU+UGVzYW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE4IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fYnRuX2NvbmZpcm0iPgorICAgIDx2YWx1ZT5LaXJpbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTkiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9idG5fY2FuY2VsIj4KKyAgICA8dmFsdWU+QmF0YWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIwIiBuYW1lPSJzZW5kX2NoYXRfdGV4dF9idG4iPgorICAgIDx2YWx1ZT5iYXRhbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjEiIG5hbWU9Imludml0ZWRfdXNlcndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5EYXRhIFVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIyIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fc3ViamVjdCI+CisgICAgPHZhbHVlPk5hbWEgcGFuZ2dpbGFuIGFuZGEgdW50dWsga29uZmVyZW5zaSBpbmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIzIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fbG9naW4iPgorICAgIDx2YWx1ZT5QYW5nZ2lsYW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI0IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZmlyc3RuYW1lIj4KKyAgICA8dmFsdWU+bmFtYSBkZXBhbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjUiIG5hbWU9Imludml0ZWRfdXNlcndpbl9sYXN0bmFtZSI+CisgICAgPHZhbHVlPm5hbWEgYmVsYWthbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI2IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fbWFpbCI+CisgICAgPHZhbHVlPmVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNyIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2xhbmciPgorICAgIDx2YWx1ZT5iYWhhc2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI4IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZW50ZXIiPgorICAgIDx2YWx1ZT5tYXN1azwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjkiIG5hbWU9Imludml0ZWRfdXNlcndpbl9lbnRlciI+CisgICAgPHZhbHVlPlBhbmdnaWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMwIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZW50ZXIiPgorICAgIDx2YWx1ZT5EYXRhIHNlZGFuZyBkaXBhbmdnaWwsIHR1bmdndSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMxIiBuYW1lPSJ1c2VyX3JlZ2lzdGVyRmFsc2VQV0QiPgorICAgIDx2YWx1ZT5QYXNzd29yZCBzYWxhaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzIiIG5hbWU9InVzZXJfcmVnaXN0ZXJGYWxzZVBXREhlYWRlciI+CisgICAgPHZhbHVlPlNpbGFoa2FuIG1hc3VrYW4gZHVhIHBhc3N3b3JkIHlhbmcgc2FtYSwgbWluaW1hbCA2IGthcmFrdGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMyIgbmFtZT0idXNlcl9yZWdpc3Rlck1haWxFcnJvciI+CisgICAgPHZhbHVlPkVtYWlsIHNhbGFoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzNCIgbmFtZT0idXNlcl9yZWdpc3Rlck1haWxFcnJvckhlYWRlciI+CisgICAgPHZhbHVlPkFsYW1hdCBlbWFpbCB5YW5nIGFuZGEgbWFzdWthbiBzYWxhaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzUiIG5hbWU9InVzZXJfcmVnaXN0ZXJTdWNjZXNzIj4KKyAgICA8dmFsdWU+UmVnaXN0cmFzaSBLb21wbGV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzNiIgbmFtZT0idXNlcl9yZWdpc3RlclN1Y2Nlc3NIZWFkZXIiPgorICAgIDx2YWx1ZT5Ba3VuIGFuZGEgdWRhaCBkaWJ1YXQsIHNpbGFoa2FuIGxvZ2luIHNla2FyYW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzciIG5hbWU9InVzZXJfc2hhcmluZ19tZXNzYWdlIj4KKyAgICA8dmFsdWU+QW5kYSB0aWRhayBkYXBhdCBtZWxha3VrYW4gc2hhcmluZyBsYXlhciBhbmRhLCBzZXNlb3Jhbmcgc2VkYW5nIG1lbGFrdWthbm55YS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM4IiBuYW1lPSJ1c2VyX3NoYXJpbmdfbWVzc2FnZUhlYWRlciI+CisgICAgPHZhbHVlPlRpZGFrIGRpcGVyYm9sZWthbiBtZWxha3VrYW4gU2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzkiIG5hbWU9InVzZXJfZG9TdGFydFNjcmVlblZpZXdlciI+CisgICAgPHZhbHVlPlNoYXJpbmcgbGF5YXIgYW5kYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDAiIG5hbWU9InNjcmVlbl93YXJuQmFuZHdpZHRoIj4KKyAgICA8dmFsdWU+QmFuZHdpZHRoIGt1cmFuZzogQW5kYSB0aWRhayBkYXBhdCBtZWxha3VrYW4gc2lua3JvbmFzaS4gSmlrYSBwZXJpbmdhdGFuIGluaSB0ZXJqYWRpIHRlcnVzIG1lbmVydXMsIHNpbGFoa2FuIG1lbWludGEgbW9kZXJhdG9yIHVudHVrIG1lbnVydW5rYW4gdGluZ2thdCBrdWFsaXRhcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQxIiBuYW1lPSJzY3JlZW5fdXNlcmxhYmVsIj4KKyAgICA8dmFsdWU+TGF5YXIgZGFyaTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQyIiBuYW1lPSJ3aGl0ZWJvYXJkX3RhYl9wYWludCI+CisgICAgPHZhbHVlPkdhbWJhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDMiIG5hbWU9IndoaXRlYm9hcmRfdGFiX2RvY3VtZW50Ij4KKyAgICA8dmFsdWU+RG9rdW1lbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDQiIG5hbWU9InRhYmJhcl9jaGF0aWNvbiI+CisgICAgPHZhbHVlPkNoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ1IiBuYW1lPSJ0YWJiYXJfZmlsZXNpY29uIj4KKyAgICA8dmFsdWU+RmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDYiIG5hbWU9InRhYmJhcl9wYXJ0aWNpcGFudHNpY29uIj4KKyAgICA8dmFsdWU+QW5nZ290YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDciIG5hbWU9InN3ZnByZXNlbnRhdGlvbl9saXN0c2F2ZW9yaWciPgorICAgIDx2YWx1ZT5BbWJpbCBkb2t1bWVuIGFzbGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ4IiBuYW1lPSJzd2ZwcmVzZW50YXRpb25fbGlzdHNhdmVwZGYiPgorICAgIDx2YWx1ZT5BbWJpbCBkb2t1bWVuIHBkZjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDkiIG5hbWU9InN3ZnByZXNlbnRhdGlvbl9saXN0bG9hZHN3ZiI+CisgICAgPHZhbHVlPlBhbmdnaWwgcHJlc2VudGFzaSBrZSBkYWxhbSB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MCIgbmFtZT0ibmF2aW1haW5fY29uZmlnIj4KKyAgICA8dmFsdWU+S29uZmlndXJhc2k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUxIiBuYW1lPSJ3aGl0ZWJvYXJkX2JvdW5kaW5nYm94X2RyYWciPgorICAgIDx2YWx1ZT5EcmFnIE9iamVrIGluaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTIiIG5hbWU9IndoaXRlYm9hcmRfYm91bmRpbmdib3hfcmVzaXplIj4KKyAgICA8dmFsdWU+QXR1ciB1bGFuZyBPYmplayBpbmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUzIiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl96b29tIj4KKyAgICA8dmFsdWU+JTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTQiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3NsaWRlIj4KKyAgICA8dmFsdWU+ZGFyaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTUiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX2ZpcnN0c2xpZGUiPgorICAgIDx2YWx1ZT5LZSBoYWxhbWFuIHV0YW1hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1NiIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfcHJlc2xpZGUiPgorICAgIDx2YWx1ZT5LZSBoYWxhbWFuIHNlYmVsdW1ueWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU3IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9uZXh0c2xpZGUiPgorICAgIDx2YWx1ZT5LZSBoYWxhbWFuIHNlbGFuanV0bnlhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1OCIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfbGFzdHNsaWRlIj4KKyAgICA8dmFsdWU+S2UgaGFsYW1hbiB0ZXJha2hpcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTkiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3pvb21taW51cyI+CisgICAgPHZhbHVlPktlY2lsa2FuIC0tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MCIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfem9vbXBsdXMiPgorICAgIDx2YWx1ZT5CZXNhcmthbiArKzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjEiIG5hbWU9InNhbHV0YXRpb25fbXIiPgorICAgIDx2YWx1ZT5UdWFuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjIiIG5hbWU9InNhbHV0YXRpb25fbWlzcyI+CisgICAgPHZhbHVlPk55b255YS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYzIiBuYW1lPSJuYXZpbWFpbl9jb25mYWRtaW4iPgorICAgIDx2YWx1ZT5Lb25maWd1cmFzaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjQiIG5hbWU9ImNvbmZ0YWJsZV9oZWFkZXJJZCI+CisgICAgPHZhbHVlPklEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2NSIgbmFtZT0iY29uZnRhYmxlX2hlYWRlcmtleSI+CisgICAgPHZhbHVlPkt1bmNpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2NiIgbmFtZT0iY29uZmFkbWluZm9ybV9oZWFkZXIiPgorICAgIDx2YWx1ZT5Lb25maWd1cmFzaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjciIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWxrZXkiPgorICAgIDx2YWx1ZT5LdW5jaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjgiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWx1cGRhdGVkIj4KKyAgICA8dmFsdWU+dXBkYXRlIHRlcmFraXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY5IiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsdXBkYXRlZGJ5Ij4KKyAgICA8dmFsdWU+ZGl1cGRhdGUgb2xlaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzAiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWxjb21tZW50Ij4KKyAgICA8dmFsdWU+a29tZW50YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjcxIiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsa2V5Ij4KKyAgICA8dmFsdWU+a3VuY2k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjcyIiBuYW1lPSJ0dXJub3Zlcmxpc3RfbWF4cmVzdWx0cyI+CisgICAgPHZhbHVlPmRhcmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjczIiBuYW1lPSJvcmdhbmlzYXRpb25fdXNlcnNoZWFkZXIiPgorICAgIDx2YWx1ZT5Vc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NCIgbmFtZT0ib3JnYW5pc2F0aW9uX3VzZXJzaWNvbmRlbGV0ZSI+CisgICAgPHZhbHVlPmhhcHVzIHVzZXIgZGFyaSBvcmdhbmlzYXNpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NSIgbmFtZT0ib3JnYW5pc2F0aW9uX3VzZXJzZGVsZXRlZGhlYWQiPgorICAgIDx2YWx1ZT5oYXB1czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzYiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2FscmVhZGFkZGVkIj4KKyAgICA8dmFsdWU+VXNlciBpbmkgdWRhaCB0ZXJlZ2lzdHJhc2kgZGFsYW0gb3JnYW5pc2FzaSBpbmkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NyIgbmFtZT0iZGFzaGJvYXJkX25ld3NoZWFkZXIiPgorICAgIDx2YWx1ZT5CZXJpdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc4IiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rc2hlYWRlciI+CisgICAgPHZhbHVlPkphbGFuIHNpbmdrYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc5IiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rQ29uZiI+CisgICAgPHZhbHVlPmtlIEtvbmZlcmVuc2k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgwIiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rQXVkaXQiPgorICAgIDx2YWx1ZT5rZSBBdWRpdG9yaXVtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MSIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua3N1cHBvcnQiPgorICAgIDx2YWx1ZT5TdXBwb3J0IGRhbiBCYW50dWFuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MiIgbmFtZT0iZGFzaGJvYXJkX3F1aWNraG9tZXBhZ2V1cmwiPgorICAgIDx2YWx1ZT5odHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MyIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbWFpbGluZ2xpc3R1cmwiPgorICAgIDx2YWx1ZT5odHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvbWFpbC1saXN0cy5odG1sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4NCIgbmFtZT0iZGFzaGJvYXJkX3JlcG9ydGJ1Z3MiPgorICAgIDx2YWx1ZT5sYXBvcmthbiBidWchPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4NSIgbmFtZT0iZGFzaGJvYXJkX3Jzc2xpc3RpdGVtbGlua3RleHQiPgorICAgIDx2YWx1ZT5TZWxlYmlobnlhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4NiIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua2hvbWVwYWdlbGFiZWwiPgorICAgIDx2YWx1ZT5XZWJzaXRlIChodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4NyIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua21haWxpbmdsaXN0bGFiZWwiPgorICAgIDx2YWx1ZT5NYWlsaW5nIExpc3QgKGh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9tYWlsLWxpc3RzLmh0bWwpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4OCIgbmFtZT0ibG9naW5fcmVtZW1iZXJ1c2VyIj4KKyAgICA8dmFsdWU+SW5nYXQgc2F5YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODkiIG5hbWU9Im1haW5fbmF2aSI+CisgICAgPHZhbHVlPktvbnRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTAiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5Ib21lIFBhZ2Ugc2F5YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTEiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5KYWR3YWwgUmFwYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkyIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+SmFkd2FsIEFjYXJhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MyIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPlJhcGF0IFVtdW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk0IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+UmFwYXQgVGVydHV0dXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk1IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+QWNhcmEgVW11bTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTYiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5BY2FyYSBLaHVzdXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk3IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+S29udGVuIFB1YmxpazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTgiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5Lb250ZW4gS2h1c3VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5OSIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPktvbnRlbiBQZXJzb25hbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDAiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAxIiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+TW9kZXJhc2k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAyIiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+VGFtYmFoa2FuIGtlIG1vZGVyYXNpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMyIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPlBvbGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDQiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5QaWxpaCBmaWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNSIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPlNldGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDYiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5TZXRpbmcgS2FtZXJhIGRhbiBNaWM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA3IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+U2V0aW5nIFdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA4IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+S2VsdWFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwOSIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPktlbWJhbGkga2UgcnVhbmdhbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTAiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5LZWx1YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzExIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPkx1cGEgcGFzc3dvcmQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMiIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5VYmFoIHBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMyIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5MZXdhdCBFbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTQiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+TGV3YXQgTG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE1IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPkVtYWlsIEFuZGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE2IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPkxvZ2luIEFuZGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE3IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPktpcmltIGVtYWlsIGRlbmdhbiBhbGFtYXQgdWJhaCBwYXNzd29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTgiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+RW1haWwgdGlkYWsgZGl0ZW11a2FuLiBQYXN0aWthbiBlbWFpbCB0ZXJzZWJ1dCBhbmRhIGd1bmFrYW4gc2FhdCBtZW1idWF0IGFrdW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxOSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5TaWxhaGthbiBtYXN1a2FuIGFsYW1hdCBlbWFpbCB5YW5nIGxhaW4gYXRhdSBVc2VybmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjAiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+VGlkYWsgYWRhIFVzZXIgdGVya29uZWtzaSBkZW5nYW4gVXNlcm5hbWUgaW5pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyMSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5FbWFpbCB5YW5nIGJlcmlzaSBpbmZvcm1hc2kgYWxhbWF0IGJhcnUgdGVsYWggZGlraXJpbSBrZSBlbWFpbCBhbmRhLCBzaWxhaGthbiBjZWsgZW1haWwgYW5kYS4gSmlrYSBhbmRhIGJlbHVtIG1lbmRhcGF0a2FuIGVtYWlsLCBwYXN0aWthbiBwYWRhIGJhaWdhbiBzZXRpbmcgc3BhbWluZyBwYWRhIGtvbmZpZ3VyYXNpIGVtYWlsIGFuZGEgZGFuIGtpcmlta2FuIGVtYWlsIGxhZ2kuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyMiIgbmFtZT0iZXJyb3J0eXBlIj4KKyAgICA8dmFsdWU+U2FsYWg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIzIiBuYW1lPSJlcnJvcnR5cGUiPgorICAgIDx2YWx1ZT5QZXNhbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjQiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPkhhc2ggdGlkYWsgdmFsaWQuIFVzZXIgdGlkYWsgZGl0ZW11a2FuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjUiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPklzaSBVbGFuZyBQYXNzd29yZCBBbmRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNiIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+TG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI3IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT51YmFoIFBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyOCIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+UGFzc3dvcmQgYmFydTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjkiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPlR1bGlzIGxhZ2kgUGFzc3dvcmQgYW5kYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzAiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPlBhc3dvcmQgYmVyYmVkYSwgc2lsYWhrYW4gdWxhbmdpIGxhZ2kuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzMSIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+NCBrYXJha3RlciBhdGF1IGxlYmloLCBodXJ1ZiBrYXBpdGFsIGJlcm1hc2FsYWghPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzMiIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+UGFzc3dvcmQgc3VkYWggZGkgc2V0aW5nLiBBbmRhIGRhcGF0IGxvZ2luIHNla2FyYW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzMiIG5hbWU9InJwY2NhbGxiYWNrIj4KKyAgICA8dmFsdWU+T0s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM0IiBuYW1lPSJycGNnZW5lcmFsZXJyb3IiPgorICAgIDx2YWx1ZT5LZXNhbGFoYW4gYmVsdW0gdGVybGFjYWsuIFNpbGFoa2FuIGxhcG9ya2FuIGtlIFRlYW0gU2VydmlzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzUiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+VXNlcm5hbWUgdGlkYWsgZGl0ZW11a2FuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNiIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5QYXNzd29yZCB0aWRhayB2YWxpZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzciIG5hbWU9ImxvZ291dCI+CisgICAgPHZhbHVlPlN1a3NlcyBrZWx1YXIgZGFyaSBzaXN0ZW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM4IiBuYW1lPSJyZWdpc3RyYXRpb24iPgorICAgIDx2YWx1ZT5IYWxhbWFuIGRlcGFuIHJlZ2lzdHJhc2kgZGltYXRpa2FuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzkiIG5hbWU9InJlZ2lzdHJhdGlvbiI+CisgICAgPHZhbHVlPkVNYWlsIHRpZGFrIHZhbGlkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MCIgbmFtZT0icmVnaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+RHVwbGlrYXNpIG5hbWEgZmlsZSwgc2lsYWhrYW4gbWVuZ2d1bmFrYW4gbmFtYSBsYWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MSIgbmFtZT0iZmlsZWJyb3dzZXIiPgorICAgIDx2YWx1ZT5uYW1hIGZpbGUgdGVybGFsdSBwZW5kZWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQyIiBuYW1lPSJmaWxlYnJvd3NlciI+CisgICAgPHZhbHVlPkFsYW1hdCB0aWRhayBkYXBhdCBkaXNpbXBhbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDMiIG5hbWU9InVzZXJhZG1pbiI+CisgICAgPHZhbHVlPlVzZXIgdGVsYWggZGl0YW1iYWhrYW4gdGV0YXBpIGFuZGEgaGFydXMgbWVtYXN1a2FuIGtlZGFsYW0gc2FsYWggc2F0dSBvcmdhbmlzYXNpLCBqaWthIHRpZGFrIGFrYW4gbWVuZ2FraWJhdGthbiBnYWdhbCBsb2dpbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ0IiBuYW1lPSJhZG1pbmZvcm1zIj4KKyAgICA8dmFsdWU+UmVrb3QgYmFydTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDUiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPlRpZGFrIGRpdGVtdWthbiBLb2xvbSBkZW5nYW4gSUQga29sb20gaW5pLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDYiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPlRpZGFrIGRpdGVtdWthbiBMYWJlbCB1bnR1ayBrb2xvbSB0ZXJzZWJ1dC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ3IiBuYW1lPSJlcnJvcm1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EaWJ1dHVoa2FuIEF1dG9yaXNhc2kgc2ViYWdhaSBBZG1pbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDgiIG5hbWU9Im1haW5uYXZpIj4KKyAgICA8dmFsdWU+RWRpdG9yIEJhaGFzYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDkiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkJhaGFzYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTAiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPklEIExhYmVsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1MSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TmFtYSBMYWJlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTIiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPk5pbGFpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1MyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TmlsYWkgS29sb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU0IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5OYW1hIExhYmVsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1NSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TmlsYWkgTGFiZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU2IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5JRCBMYWJlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTciIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkFuZGEgaGFueWEgYmlzYSBoYXB1cyBsYWJlbCBidWthbiBrb2xvbSEgQW5kYSB0aWRhayBkYXBhdCBtZW5naGFwdXMga29sb20sIG11bmdraW4gYWRhIGxhYmVsIGRpZGFsYW0gYmFoYXNhIHlhbmcgbGFpbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU4IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5JRCBMYWJlbCB0aWRhayB2YWxpZC4gS29sb20gRmllbGRMYW5ndWFnZXN2YWx1ZXNfSWQgdGlkYWsgZGFwYXQgZGl0ZW11a2FuIGRhbGFtIGRhdGFiYXNlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTkiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkFuZGEgdGlkYWsgZGFwYXQgbWVuZ2hhcHVzIGtvbG9tIGluaS4gQW5kYSBoYW55YSBkYXBhdCBtZW5naGFwdXMgbGFiZWwgYnVrYW4ga29sb20uIFRpZGFrIGFkYSBsYWJlbCB5YW5nIGRpcGFuZ2dpbCBzZWthcmFuZywgTXVuZ2tpbiBiZWx1bSBkaXBpbGlhaCBzYWxhaCBzYXR1IGtvbG9tIGF0YXUgdGlkYWsgYWRhIGRlZmluaXNpIGxhYmVsIHVudHVrIGtvbG9tIHlhbmcgZGltYWtzdWQgcGFkYSBwaWxpaGFuIGJhaGFzYSBpbmkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+ZXhwb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYxIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5BbmRhIGhhcnVzIGtlbHVhciBkYWh1bHUgdW50dWsgbWVsaWhhdCBwZXJ1YmFoYW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+VGFtYmFoIHBpbGloYW4gYmFoYXNhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+aGFwdXMgcGlsaWhhbiBiYWhhc2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY0IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5UYW1iYWggcGlsaWhhbiBiYWhhc2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY1IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5OYW1hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+VGFtYmFoIHBpbGloYW4gYmFoYXNhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+QnVhdCBBcnNpcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjgiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPmF3YWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY5IiBuYW1lPSJ0dXJub3Zlcmxpc3QiPgorICAgIDx2YWx1ZT5zZWJlbHVtbnlhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MCIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+c2VsYW5qdXRueWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzcxIiBuYW1lPSJ0dXJub3Zlcmxpc3QiPgorICAgIDx2YWx1ZT5ha2hpcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzIiIG5hbWU9InZpZGVvYm94Ij4KKyAgICA8dmFsdWU+dXNlciB5YW5nIGJlcmJpY2FyYSAoQnkgY2xpY2tpbmcgaGVyZSB5b3UgY2FuIGdpdmUgZXhjbHVzaXZlIGF1ZGlvIC8gbXV0ZSB0aGUgbWljcm9waG9uZSBvZiBvdGhlcnMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MyIgbmFtZT0idmlkZW9ib3giPgorICAgIDx2YWx1ZT5tb2RlIHN1YXJhIG55YWxhL21hdGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc0IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5TaXN0ZW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc1IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5TZXRpbmdhbiBBbmRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3NiIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+SG9sYSw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc3IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5FZGl0IHByb2ZpbCBhbmRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3OCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+UGVzYW4gYmFydTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc5IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5LaXJpbSBHYW1iYXIgYmFydTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODAiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+RXhwb3IgLSBEYXRhIFVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgxIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPlNlbXVhIG9yZ2FuaXNhc2kgaGFydXMgc3VkYWggdGVyc2VkaWEhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4MiIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5tdWxhaSBleHBvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODMiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+QmVyZGFzYXJrYW4gb3JnYW5pc2FzaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODQiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+bXVsYWkgZXhwb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg1IiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPkFtYmlsIC0gRGF0YSBVc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NiIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5QaWxpaCB1c2Vycy54bWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg3IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5hbWJpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODgiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkV4cG9yIGRhbGFtIFhNTCAtIEZpbGUgaW5pIGRhcGF0IGRpIGd1bmFrYW4gdW50dWsgOiAtIEtvbnRyaWJ1c2kga2VkYWxhbSBwcm9qZWN0IC0gS2lyaW0ga2Ugc2lzdGVtIGxhaW4gLSBBcnNpcCAtIE9wc2kgcGlsaWhhbiAtIFNpbXBhbiBrZSBkYWxhbSBkaXJla3RvcmkgYmFoYXNhIC0gZGlyZWt0b3JpIHVudHVrIGluc3RhbGFzaSBiZXJpa3V0bnlhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4OSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+UGlsaWggZmlsZSBiYWhhc2EgeWFuZyBha2FuIGRpIGFtYmlsLiBQaWxpaCBiYWhhc2EgeWFuZyBiZW5hciBkYXJpIGZvcm0gcGlsaWhhbiEgQXBhcHVuIG5hbWEgZmlsZW55YSwgeWFuZyBkaXBpbGloIHlhbmcgYWthbiBkaWFtYmlsIGtlZGFsYW0gcGlsaWhhbiBiYWhhc2EgaW5pITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTAiIG5hbWU9ImltcG9ydHdpbmRvdyI+CisgICAgPHZhbHVlPkFtYmlsIC0gcGlsaWggZmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTEiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT5TaW1wYW4gc2ViYWdhaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTIiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT5OYW1hOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTMiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT5rb21lbnRhcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk0IiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+c2ltcGFuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+UHJvc2VzIHJla2FtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NiIgbmFtZT0icmVjb3JkZXIiPgorICAgIDx2YWx1ZT5Qcm9zZXMgcmVrYW0gVGFtcGlsYW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk3IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5Qcm9zZXMgcmVrYW0gZGFyaSBSdWFuZ2FuIHVtdW0gYXRhdSBraHVzdXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk4IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5Vc2VycyA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5OSIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+VGVya29uZWtzaTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAwIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAxIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5Vc2VycyBkYWxhbSBydWFuZ2FuIGluaTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAyIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5wYW5nZ2lsIHVsYW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMyIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+UnVhbmdhbiBpbmkgcGVudWgsIHNpbGFoa2FuIG1lbmNvYmEgbGFnaSBkYWxhbSBiZWJlcmFwYSBtZW5pdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA0IiBuYW1lPSJyb29tc0xpc3QiPgorICAgIDx2YWx1ZT5LbGlrIHBhZGEgSnVkdWwgcnVhbmdhbiB1bnR1ayBtZWxpaGF0IGRldGlsbnlhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNSIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+Q2hhdCBkZW5nYW4gdXNlciBkYWxhbSBydWFuZ2FuIGluaTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA2IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5SdWFuZ2FuOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDciIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPlVzZXJzIGRhbGFtIHJ1YW5nYW4gaW5pOjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA4IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5tdWxhaSBzZWphazo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA5IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5QdXRhciBSZWthbWFuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMCIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+RHVyYXNpOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTEiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPlRhbmdnYWw6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMiIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+TW9kdXMgUmVrYW0hIEFuZGEgdGlkYWsgZGFwYXQgbWVsYWt1a2FuIHBlcnViYWhhbi4gSW5pIGFkYWxhaCBmaWxlIGhhc2lsIHJla2FtYW4hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMyIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+UHV0YXIgaGFzaWwgcmVrYW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE0IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5QbGF5IC8gUGF1c2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE1IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5NdWxhaSBSZWthbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTYiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPlN0b3AgUmVrYW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE3IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5NZXJla2FtOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTgiIG5hbWU9InJlY29yZF9lcnJvcl9tc2ciPgorICAgIDx2YWx1ZT5TZXNlb3Jhbmcgc2VkYW5nIG1lcmVrYW0gc2VrYXJhbmcgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTkiIG5hbWU9InJlY29yZF9tZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VkYW5nIFJla2FtISBPbGVoOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjAiIG5hbWU9InJlY29yZF9jYW5jZWwiPgorICAgIDx2YWx1ZT5CYXRhbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjEiIG5hbWU9InJlY29yZF9jYW5jYWxfdG9vbHRpcCI+CisgICAgPHZhbHVlPlByb3NlcyByZWthbSBkaWJhdGFsa2FuIGRhbiB0aWRhayBkaXNpbXBhbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIyIiBuYW1lPSJjYW5jZWxfZGlhbG9nX3Jlc3VtZSI+CisgICAgPHZhbHVlPmxhbmp1dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjMiIG5hbWU9ImNhbmNlbF9kaWFsb2dfcmVzdW1lX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5UdXR1cCBqZW5kZWxhIGluaSBkYW4gbGFuanV0IHJla2FtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyNCIgbmFtZT0icGFpbnR0b29sc19lbGxpcHNlX2NvbG9yIj4KKyAgICA8dmFsdWU+VWJhaCB3YXJuYWdhcmlzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyNSIgbmFtZT0iY29sb3JwaWNrZXJfaGVhZCI+CisgICAgPHZhbHVlPlBpbGloIFdhcm5hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyNiIgbmFtZT0icGFpbnR0b29sc19saW5lX2Rpc2FibGUiPgorICAgIDx2YWx1ZT5Ba3RpcGthbiAvIE1hdGlrYW4gd2FybmFnYXJpczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjciIG5hbWU9InBhaW50dG9vbHNfZmlsbF9kaXNhYmxlIj4KKyAgICA8dmFsdWU+VWJhaCBpc2lhbndhcm5hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyOCIgbmFtZT0icGFpbnR0b29sc19saW5lX2Rpc2FibGUiPgorICAgIDx2YWx1ZT5Ba3RpcGthbiAvIE1hdGlrYW4gaXNpYW53YXJuYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjkiIG5hbWU9ImNoYW5nZV93aWR0aF9hcnJvd19kb3duX3NsaWRlciI+CisgICAgPHZhbHVlPlViYWggYmVzYXJhbiBnYXJpczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzAiIG5hbWU9ImNsb3NlX3NtYWxsX3BvcHVwcyI+CisgICAgPHZhbHVlPnR1dHVwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzMSIgbmFtZT0icGFpbnRfdG9vbF9sZXR0ZXIiPgorICAgIDx2YWx1ZT51YmFoIHVrdXJhbiBodXJ1ZjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzIiIG5hbWU9InJlY29yZGluZ3NsaXN0X2RlbGV0ZSI+CisgICAgPHZhbHVlPkhhcHVzIFJla2FtYW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMzIiBuYW1lPSJyZWNvcmRpbmdzbGlzdF9yZWNvcmRlZEJ5R3Vlc3QiPgorICAgIDx2YWx1ZT5UYW11PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNCIgbmFtZT0icmVjb3JkaW5nc2xpc3RfcmVjb3JkZWRieSI+CisgICAgPHZhbHVlPk9sZWg6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNSIgbmFtZT0icmVjb3JkaW5nc190YWJsZV9oZWFkX25hbWUiPgorICAgIDx2YWx1ZT5OYW1hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNiIgbmFtZT0icmVjb3JkaW5nc190YWJsZV9oZWFkX3Jvb20iPgorICAgIDx2YWx1ZT5SdWFuZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzciIG5hbWU9InJlY29yZGluZ3NfdGFibGVfaGVhZF9kYXRlIj4KKyAgICA8dmFsdWU+VGFuZ2dhbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzgiIG5hbWU9InJlY29yZF9zdGFydF9jYW5jZWwiPgorICAgIDx2YWx1ZT5iYXRhbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzkiIG5hbWU9InJlY29yZF9zdGFydF9zdGFydCI+CisgICAgPHZhbHVlPm11bGFpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MCIgbmFtZT0iZmlsZXNicm93c2VyX3RhYmxlX2hlYWRfbmFtZSI+CisgICAgPHZhbHVlPk5hbWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQxIiBuYW1lPSJmaWxlc2Jyb3dzZXJfdGFibGVfaGVhZF9kYXRlIj4KKyAgICA8dmFsdWU+VGFuZ2dhbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDIiIG5hbWU9ImNoYXRfY2xlYXJfaGlzdG9yeSI+CisgICAgPHZhbHVlPkhhcHVzIExvZyBjaGF0IGRpIFNlcnZlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDMiIG5hbWU9ImNoYXRfb3ZlcmFsbF9oZWFkZXIiPgorICAgIDx2YWx1ZT5DaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NCIgbmFtZT0iY2hhdF9zZW5kX2J0biI+CisgICAgPHZhbHVlPmtpcmltIHBlc2FuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NSIgbmFtZT0iY2hhdF9lbW90X2J0biI+CisgICAgPHZhbHVlPkVtb3RpY29uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDYiIG5hbWU9ImNoYXRfZW1vdF93aW4iPgorICAgIDx2YWx1ZT5FbW90aWNvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ3IiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5QaWxpaCBQZXJhbmdrYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ4IiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT5BdWRpbyBkYW4gVmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ5IiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT5IYW55YSBBdWRpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTAiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPkhhbnlhIFZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1MSIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2NvbWJvIj4KKyAgICA8dmFsdWU+VGlkYWsgYWRhIEF1ZGlvL1ZpZGVvIChnYW1iYXIgc2FqYSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUyIiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfaW5mb190ZXh0Ij4KKyAgICA8dmFsdWU+VGlkYWsgYWRhIEF1ZGlvL1ZpZGVvIGRhcmkgUEMgYW5kYSwgaGFueWEgYWthbiBtZW5hbXBpbGthbiBnYW1iYXIgYW5kYSBkYXJpIHByb2ZpbGUuIEtlbXVuZ2tpbmFuIGFuZGEgbWVuZ2FsYW1pIGdhbmdndWFuIGtvbmVrc2kgaW50ZXJuZXQgYXRhdSBrb25la3NpIGludGVybmV0IGFuZGEgbGFtYmF0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTMiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfbW9uZGF5Ij4KKyAgICA8dmFsdWU+U248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU0IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3R1ZXNkYXkiPgorICAgIDx2YWx1ZT5TbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTUiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfd2VkbmVzZGF5Ij4KKyAgICA8dmFsdWU+UmI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU2IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3RodXJzZGF5Ij4KKyAgICA8dmFsdWU+S208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU3IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX2ZyaWRheSI+CisgICAgPHZhbHVlPkptPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1OCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9zYXR1cmRheSI+CisgICAgPHZhbHVlPlNiPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1OSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9zdW5kYXkiPgorICAgIDx2YWx1ZT5NZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjAiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfbW9uZGF5Ij4KKyAgICA8dmFsdWU+U2VuaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYxIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1R1ZXNkYXlMYWJlbCI+CisgICAgPHZhbHVlPlNlbGFzYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjIiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfV2VkbmVzZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5SYWJ1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MyIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9UaHVyc2RheUxhYmVsIj4KKyAgICA8dmFsdWU+S2FtaXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY0IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX0ZyaWRheUxhYmVsIj4KKyAgICA8dmFsdWU+SnVtYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY1IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1NhdHVyZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5TYWJ0dTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjYiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfU3VuZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5NaW5nZ3U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY3IiBuYW1lPSJjYWxlbmRhcl93ZWVrbnVtYmVyX2hlYWRlciI+CisgICAgPHZhbHVlPkNXPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2OCIgbmFtZT0iY2FsZW5kYXJfd2Vla251bWJlcl9oZWFkZXJUb29sdGlwIj4KKyAgICA8dmFsdWU+S2VsZW5kYXIgbWluZ2d1YW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY5IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+SmFudWFyaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzAiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5QZWJydWFyaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzEiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5NYXJldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzIiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5BcHJpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzMiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5NZWk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc0IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+SnVuaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzUiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5KdWxpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3NiIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPkFndXN0dXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc3IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+U2VwdGVtYmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3OCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPk9rdG9iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc5IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+Tm92ZW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgwIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+RGVzZW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgxIiBuYW1lPSJjYWxlbmRhcndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5LYWxlbmRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODIiIG5hbWU9InJvb21hZG1pbl9sYWJlbE51bWJlck9mUGFydGljaXBhbnRzIj4KKyAgICA8dmFsdWU+UGVzZXJ0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODMiIG5hbWU9InJvb21WYWx1ZV9hZHZhbmNlZFNldHRpbmdzIj4KKyAgICA8dmFsdWU+VGFtcGlsa2FuIFNldGluZ2FuIExheW91dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODQiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfdmlkZW9YIj4KKyAgICA8dmFsdWU+WCB8IFk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg1IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3ZpZGVvWSI+CisgICAgPHZhbHVlPkxlYmFyIHwgVGluZ2dpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NiIgbmFtZT0icm9vbUFkbWluX2xheW91dCI+CisgICAgPHZhbHVlPkplbmRlbGEgVmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg3IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X21vZCI+CisgICAgPHZhbHVlPkplbmRlbGEgTW9kZXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODgiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfbW9kX3BvcyI+CisgICAgPHZhbHVlPlg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg5IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5KZW5kZWxhIFdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkwIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmRfc2hvdyI+CisgICAgPHZhbHVlPkZ1bmdzaWthbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTEiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZF9wb3MiPgorICAgIDx2YWx1ZT5YIHwgWTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTIiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkxlYmFyIHwgVGluZ2dpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5MyIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlcyI+CisgICAgPHZhbHVlPkplbmRlbGEgRmlsZXMsQ2hhdCxQYXJ0aXppcGFudHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk0IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X2ZpbGVzX3Nob3ciPgorICAgIDx2YWx1ZT5GdW5nc2lrYW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk1IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X2ZpbGVzX3BvcyI+CisgICAgPHZhbHVlPlggfFk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk2IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X2ZpbGVzIj4KKyAgICA8dmFsdWU+TGViYXIgfCBUaW5nZ2k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk3IiBuYW1lPSJtb2RlcmF0b3JfZ29uZV9tZXNzYWdlIj4KKyAgICA8dmFsdWU+TW9kZXJhdG9yIG1lbmluZ2dhbGthbiBSdWFuZy4gVGlkYWsgYWRhIG1vZGVyYXRvciBzZWthcmFuZy4gQW5kYSBkYXBhdCBtZW5qYWRpIG1vZGVyYXRvciBhdGF1IG1lbnVuZ2d1IHNlYmVudGFyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTgiIG5hbWU9Im1vZGVyYXRvcl9tZXNzYWdlX2V2ZW50X25vX21vZCI+CisgICAgPHZhbHVlPlRpZGFrIGFkYSBtb2RlcmF0b3Igc2VrYXJhbmcsIHRldGFwaSBhZGEgYmViZXJhcGEgcGVzZXJ0YS4gQW5kYSBoYXJ1cyBtZW5qYWRpIG1vZGVyYXRvciBhdGF1IHR1bmdndS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk5IiBuYW1lPSJmZWVkYmFja190ZW1wbGF0ZV9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+S29tZW50YXIgdGVudGFuZyAkQVBQX05BTUU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAwIiBuYW1lPSJpbnZpdGF0aW9uX3RlbXBsYXRlX2hlYWQiPgorICAgIDx2YWx1ZT5VbmRhbmdhbiAtICRBUFBfTkFNRTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDEiIG5hbWU9Imludml0YXRpb25fdGV4dF9mcm9tIj4KKyAgICA8dmFsdWU+UGVzYW4gZGFyaSBwZXNlcnRhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDIiIG5hbWU9Imludml0YXRpb25fdGV4dF9tZXNzYWdlIj4KKyAgICA8dmFsdWU+UGVzYW46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwMyIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X2NsaWNrX3RleHQiPgorICAgIDx2YWx1ZT5LbGlrIGxpbmsgYmVyaWt1dCB1bnR1ayBiZXJnYWJ1bmcgZGFsYW0gcmFwYXQgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDQiIG5hbWU9Imludml0YXRpb25fdGV4dF9jbGlja190ZXh0X2xpbmsiPgorICAgIDx2YWx1ZT5LbGlrIGRpc2luaSB1bnR1ayBtYXN1ayBrZSByYXBhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDUiIG5hbWU9Imludml0YXRpb25fdGV4dF9jbGlja190ZXh0X2hlbHAiPgorICAgIDx2YWx1ZT5KaWthIGFuZGEgbWVuZ2FsYW1pIGtlc3VsaXRhbiwgc2lsYWhrYW4gY29weSBkYW4gcGFzdGUgbGluayBiZXJpa3V0IGtlIGJyb3dzZXIgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDYiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9oZWFkIj4KKyAgICA8dmFsdWU+RGFwdGFyIGtlICRBUFBfTkFNRTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDciIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9oZWFkMiI+CisgICAgPHZhbHVlPkRhdGEgYW5kYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA4IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfdXNlcm5hbWUiPgorICAgIDx2YWx1ZT5Mb2dpbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA5IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfcGFzcyI+CisgICAgPHZhbHVlPlBhc3M6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxMCIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X21haWwiPgorICAgIDx2YWx1ZT5FbWFpbDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTExIiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfYnllIj4KKyAgICA8dmFsdWU+VGltIC0gJEFQUF9OQU1FPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxMiIgbmFtZT0icmVnaXN0ZXJfbWFpbF9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+RGFmdGFyIGtlICRBUFBfTkFNRTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTMiIG5hbWU9InJlc2V0X3Bhc3N3b3JkX3RlbXBsYXRlX2hlYWQiPgorICAgIDx2YWx1ZT5TZXRpbmcgdWxhbmcgcGFzc3dvcmQgLSRBUFBfTkFNRTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTQiIG5hbWU9InJlc2V0X3Bhc3N3b3JkX3RlbXBsYXRlX3Rlc3RfbGluayI+CisgICAgPHZhbHVlPktsaWsgbGluayBiZXJpa3V0IHVudHVrIG1lbnNldGluZyB1bGFuZyBwYXNzd29yZCA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNSIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfdGV4dDJfbGluayI+CisgICAgPHZhbHVlPktsaWsgZGlzaW5pIHVudHVrIGlzaSBwYXNzd29yZCBiYXJ1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNiIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfdGV4dDNfbGluayI+CisgICAgPHZhbHVlPmlrYSBhbmRhIG1lbmdhbGFtaSBrZXN1bGl0YW4gZGVuZ2FuIGxpbmssIHNpbGFoa2FuIGNvcHkgZGFuIHBhc3RlIGtlIGJyb3dzZXIgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTciIG5hbWU9InJlc2V0X3Bhc3N3b3JkX21haWxfc3ViamVjdCI+CisgICAgPHZhbHVlPlNldGluZyB1bGFuZyBwYXNzd29yZCAkQVBQX05BTUU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE4IiBuYW1lPSJkYXRlUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5TaWxhaGthbiBpc2kgdGFuZ2dhbCBkZW5nYW4gYmVuYXIsIGNvbnRvaCAyNC0xMi0yMDAxIChkZC1tbS15eXl5KTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTkiIG5hbWU9ImVtYWlsUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5TaWxhaGthbiBpc2kgYWxhbWF0IGVtYWlsIGRlbmdhbiBiZW5hciwgY29udG9oIG5hbWFAYWxhbWF0LmNvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjAiIG5hbWU9ImZsb2F0UmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5TaWxhaGthbiBtYXN1a2FuIGFuZ2thIHBlY2FoYW4sIGNvbnRvaCAxLDA1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyMSIgbmFtZT0ibnVtYmVyUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5TaWxhaGthbiBtYXN1a2FuIGFuZ2thLCBjb250b2ggMTAwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyMiIgbmFtZT0icGhvbmVSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPlNpbGFoa2FuIG1hc3VrYW4gbm9tb3IgdGVsZXBvbiwgY29udG9oICs2MiAyNzQgNDg2ODgzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyMyIgbmFtZT0idGltZVJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+U2lsYWhrYW4gbWFzdWthbiBmb3JtYXQgamFtLCBjb250b2ggMTI6MjQgKGhoOm1tKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjQiIG5hbWU9Imludml0YXRpb25fd2luZG93Ij4KKyAgICA8dmFsdWU+VGVycHJvdGVrc2kgZGVuZ2FuIFBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNSIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfcGFzc3dvcmRMYWJlbCI+CisgICAgPHZhbHVlPlBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNiIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWRMYWJlbCI+CisgICAgPHZhbHVlPlBlcmlvZGUgVmFsaWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI3IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZCI+CisgICAgPHZhbHVlPlRlcmFraGlyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyOCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWQiPgorICAgIDx2YWx1ZT5QZXJpb2RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyOSIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWQiPgorICAgIDx2YWx1ZT5TZWthbGkgd2FrdHU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMwIiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZEZyb21MYWJlbCI+CisgICAgPHZhbHVlPlZhbGlkIGRhcmkgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzEiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkVG9MYWJlbCI+CisgICAgPHZhbHVlPlZhbGlkIHNhbXBhaSBkZW5nYW46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMiIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfTWFpbFN1YmplY3QiPgorICAgIDx2YWx1ZT5VbmRhbmdhbiBrZSAkQVBQX05BTUU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMzIiBuYW1lPSJpbnZpdGF0aW9uX2Vycm9yIj4KKyAgICA8dmFsdWU+VGlkYWsgYWRhIFVuZGFuZ2FuIHVudHUgS29kZSB1bmRhbmdhbiBpbmkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzNCIgbmFtZT0iaW52aXRhdGlvbl9lcnJvciI+CisgICAgPHZhbHVlPlVuZGFuZ2FuIHN1ZGFoIHRlcnBha2FpLCB0aWRhayBiaXNhIGRpcGVyZ3VuYWthbiBsYWdpLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzUiIG5hbWU9Imludml0YXRpb25fZXJyb3IiPgorICAgIDx2YWx1ZT5Lb2RlIC0gVW5kYW5nYW4gdGlkYWsgdmFsaWQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzNiIgbmFtZT0iaW52aXRhdGlvbl9wYXNzIj4KKyAgICA8dmFsdWU+UGFzc3dvcmQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzNyIgbmFtZT0iaW52aXRhdGlvbl9wYXNzX2J0biI+CisgICAgPHZhbHVlPlBlcmlrc2EgUGFzc3dvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM4IiBuYW1lPSJpbnZpdGF0aW9uX3Bhc3NfZXJyb3IiPgorICAgIDx2YWx1ZT5QYXNzd29yZCBzYWxhaCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM5IiBuYW1lPSJCcm93c2VyIj4KKyAgICA8dmFsdWU+YXVkaW9fdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQwIiBuYW1lPSJhdWRpb192aWRlbyI+CisgICAgPHZhbHVlPlN5bmNyb25pemUgQXVkaW8vVmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQxIiBuYW1lPSJlcnJvckNvZGVfaW52YWxpZFNlc3Npb24iPgorICAgIDx2YWx1ZT5Mb2dpbiB3YXMgY29ycmVjdCwgYnV0IHRoZSBTZXNzaW9uIHlvdSB0cmllZCBpcyBub3QgYWN0aXZlIG9yIHN0b3JlZCBvbiB0aGUgU2VydmVyLiBZb3UgaGF2ZSB0byBnZXQgYSBuZXcgU2Vzc2lvbklkIGFuZCByZXRyeSBsb2dpbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQyIiBuYW1lPSJlcnJvcmNvZGVfc2V0VXNlck9iamVjdCI+CisgICAgPHZhbHVlPlRoZSBTZXNzaW9uSWQgaXMgbm90IGxvZ2dlZGluIG9yIGhhcyBubyBBZG1pbiByaWdodHMuIFRoZSBTT0FQIEdhdGV3YXkgbmVlZHMgYW4gVXNlciB3aXRoIEFkbWluLVJpZ2h0cyB0byBlbWJlZCBuZXcgVXNlcnMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0MyIgbmFtZT0iZXJyb3Jjb2RlX2xvZ2luQnlSZW1vdGVVc2VyIj4KKyAgICA8dmFsdWU+VGhpcyBTZXNzaW9uIGhhcyBubyBSZW1vdGV1c2VyLURhdGEgY29ubmVjdGVkLiBXZXRoZXIgeW91IGRpZCBub3QgY2FsbCB0aGUgU09BUC1HYXRld2F5IGJlZm9yZSBhY2Nlc3NpbmcgdGhlIEFwcGxpY2F0aW9uIG9yIHlvdSBhcmUgdXNuaWcgYSB3cm9uZyBTZXNzaW9uLUlEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0NCIgbmFtZT0iZGVidWdfbWVzc2FnZV9yZWNvcmRpbmciPgorICAgIDx2YWx1ZT5UaGUgcmVjb3JkZXIgaXMgY3VycmVudGx5IEJldGEhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0NSIgbmFtZT0icHJvcGVydHlQYW5lbFhWYWx1ZSI+CisgICAgPHZhbHVlPng8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ2IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWFZhbHVlTGFiZWwiPgorICAgIDx2YWx1ZT54LWF4aXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ3IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWVZhbHVlIj4KKyAgICA8dmFsdWU+eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDgiIG5hbWU9InByb3BlcnR5UGFuZWxZVmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPnktYXhpczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDkiIG5hbWU9InByb3BlcnR5UGFuZWxXaWR0aFZhbHVlIj4KKyAgICA8dmFsdWU+dzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTAiIG5hbWU9InByb3BlcnR5UGFuZWxXaWR0aFZhbHVlTGFiZWwiPgorICAgIDx2YWx1ZT53aWR0aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTEiIG5hbWU9InByb3BlcnR5UGFuZWxIZWlnaHRWYWx1ZSI+CisgICAgPHZhbHVlPmg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUyIiBuYW1lPSJwcm9wZXJ0eVBhbmVsSGVpZ2h0VmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPmhlaWdodDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTMiIG5hbWU9InByb3BlcnR5T3BhY2l0eVNsaWRlciI+CisgICAgPHZhbHVlPkNoYW5nZSBUcmFuc3BhcmVuY3k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU0IiBuYW1lPSJicm93c2VyT3BlbiI+CisgICAgPHZhbHVlPkJyb3dzZXIgT3BlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTUiIG5hbWU9ImJyb3dzZXJDbG9zZSI+CisgICAgPHZhbHVlPkJyb3dzZXIgQ2xvc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU2IiBuYW1lPSJjb25uZWN0aW9uTG9zdE1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgQ29ubmVjdGlvbiB0byB0aGUgU2VydmVyIGlzIGxvc3QuIFlvdSBuZWVkIHRvIHJlbG9hZCB0aGUgQXBwbGljYXRpb24gb3IvYW5kIGNoZWNrIHlvdXIgTmV0d29yay48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU3IiBuYW1lPSI1NTciPgorICAgIDx2YWx1ZT5Qb2ludGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1OCIgbmFtZT0ic3luYyBtZXNzYWdlIGhlYWRlciI+CisgICAgPHZhbHVlPlN5bmNocm9uaXppbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU5IiBuYW1lPSJTeW5jaHJvbml6aW5nIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TeW5jaHJvbml6aW5nIFVzZXJzLCBwbGVhc2Ugd2FpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjAiIG5hbWU9ImV4cG9ydFRvU1ZHIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7RG93bmxvYWQgYXMgU1ZHJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjEiIG5hbWU9ImV4cG9ydFRvSW1hZ2UiPgorICAgIDx2YWx1ZT4mbHQ7dSZndDtEb3dubG9hZCBhcyBQTkcmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MiIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O0Rvd25sb2FkIGFzIEpQRyZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYzIiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7RG93bmxvYWQgYXMgUERGJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjQiIG5hbWU9ImV4cG9ydFRvSW1hZ2UiPgorICAgIDx2YWx1ZT4mbHQ7dSZndDtEb3dubG9hZCBhcyBUSUYmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2NSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPlJlbWluZGVyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjYiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5DYXRlZ29yeTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY3IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+UmVwZXRpdGlvbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY4IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+bm9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjkiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5Mb2NhdGlvbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTcwIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+U3RhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTcxIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+RW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MiIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPlRpdGxlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzMiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5Db21tZW50OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzQiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5JbnZpdGUgUGVvcGxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkRhaWx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NiIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPk1vbnRobHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc3IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+WWVhcmx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3OCIgbmFtZT0iYWxlcnQiPgorICAgIDx2YWx1ZT5BcHBvaW50bWVudC1lbmQgaXMgYWZ0ZXIgb2YgYXBwb2ludG1lbnQtc3RhcnQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3OSIgbmFtZT0iYWxlcnQiPgorICAgIDx2YWx1ZT5QbGVhc2UgaW5zZXJ0IGEgdGl0bGUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MCIgbmFtZT0iNTgwIj4KKyAgICA8dmFsdWU+UlRMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MSIgbmFtZT0iNTgxIj4KKyAgICA8dmFsdWU+QWN0aXZhdGUgdGhpcyBpZiB5b3Ugd3JpdGUgaW4gYSByaWdodCB0byBsZWZ0IGxhbmd1YWdlIChpbnZlcnNlIHdvcmQgb3JkZXIpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MiIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT5EYXNoYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgzIiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPldhdGNoIHJlY29yZGVkIE1lZXRpbmdzIG9yIEV2ZW50czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODQiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+TWVldGluZyAtIE1ha2UgYSBjb25mZXJlbmNlIHdpdGggNCAodXAgdG8gMTYpIFVzZXJzJmx0O2JyLyZndDtldmVyeWJvZHkgd2lsbCBoYXZlIGF1ZGlvICsgdmlkZW8gYWNjZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4NSIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT5FdmVudCAtIE1ha2UgYSBjb25mZXJlbmNlIHdpdGggdXAgdG8gMjAwIHBhcnRpY2lwZW50cyZsdDtici8mZ3Q7T25seSB0aGUgTW9kZXJhdG9yIHdpbGwgaGF2ZSBhdWRpby92aWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODYiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+Q3JlYXRlIHVzZXJzLCByb29tcywgb3JnYW5pemF0aW9ucyZsdDtici8mZ3Q7ICsgY2hhbmdlIGNvbmZpZ3VyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg3IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5Vc2VycyBpbiB0aGlzIFJvb20gbm93PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4OCIgbmFtZT0icm9vbSBBZG1pbmlzdHJhdGlvbiByb29tY2xpZW50cyBsaXN0Ij4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg5IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTAiIG5hbWU9InJvb20gQWRtaW5pc3RyYXRpb24gcm9vbWNsaWVudHMgbGlzdCI+CisgICAgPHZhbHVlPkQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkxIiBuYW1lPSJzd2Ygc3luYyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TG9hZGluZyBEb2N1bWVudC4gUGxlYXNlIHdhaXQgdW50aWxsIGFsbCBDbGllbnQgaGF2ZSBiZWVuIHN5bmNocm9uaXplZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkyIiBuYW1lPSJ1cGxvYWQgZGlhbG9nIj4KKyAgICA8dmFsdWU+VXBsb2FkIGNvbXBsZXRlLCBjb252ZXJ0aW5nIERvY3VtZW50IC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTMiIG5hbWU9InVwbG9hZCBkaWFsb2ciPgorICAgIDx2YWx1ZT5TdGFydCBVcGxvYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk0IiBuYW1lPSJ1cGxvYWQgZGlhbG9nIj4KKyAgICA8dmFsdWU+VXBsb2FkIGFuZCBJbXBvcnQgRGlhbG9nLiBQbGVhc2Ugc2VsZWN0IGEgRmlsZSBmcm9tIHlvdXIgRGlzay48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk1IiBuYW1lPSJ1cGxvYWQgRGlhbG9nIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NiIgbmFtZT0idXBsb2FkIERpYWxvZyI+CisgICAgPHZhbHVlPlNlbGVjdCBGaWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NyIgbmFtZT0iYWRtaW5pc3RyYXRpb24gbmF2aWdhdGlvbiI+CisgICAgPHZhbHVlPkNvbm5lY3Rpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5OCIgbmFtZT0iY29uZmFkbWluIHZhbHVlIGxpc3QiPgorICAgIDx2YWx1ZT5WYWx1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTkiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5TdHJlYW1pZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDAiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDEiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5Db25uZWN0ZWQgc2luY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAyIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+Um9vbSAvIFNjb3BlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwMyIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPktpY2sgVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDQiIG5hbWU9ImtpY2sgdXNlciBjb25maXJtYXRpb24gZGlhbG9nIj4KKyAgICA8dmFsdWU+S2ljayBVc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwNSIgbmFtZT0ia2ljayB1c2VyIGNvbmZpcm1hdGlvbiBkaWFsb2ciPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8ga2ljayB0aGlzIENsaWVudCBmcm9tIHRoZSBDb25uZWN0aW9uPyZsdDtici8mZ3Q7IFRoaXMgZG9lcyBvbmx5IHJlbW92ZSB0aGUgQ2xpZW50IGZyb20gdGhlIGN1cnJlbnQgUm9vbS5UaGUgQ2xpZW50IGNvdWxkIHJlLWxvZ2luIGFnYWluLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDYiIG5hbWU9ImtpY2sgdXNlciBtZXNzYWdlIGRpYWxvZyI+CisgICAgPHZhbHVlPllvdXIgc2Vzc2lvbiBoYXMgYmVlbiBjbG9zZWQgYnkgYW4gQWRtaW5pc3RyYXRvciBvciBNb2RlcmF0b3IuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwNyIgbmFtZT0idXNlcmFsdGVyc2VsZl9waG9uZSI+CisgICAgPHZhbHVlPlBob25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwOCIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+VXNlciBpcyB0aGUgTW9kZXJhdG9yIG9mIHRoaXMgUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDkiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPlVzZXIgaXMgYWxsb3dlZCB0byBkcmF3IG9uIHRoZSBXaGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMCIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+KFJlKSBTdGFydCBBdWRpby9WaWRlbyBvciBjaGFuZ2UgRGV2aWNlIFNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMSIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+QWxsb3cgdGhpcyBVc2VyIHRvIGRyYXcgb24gdGhlIFdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEyIiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5SZW1vdmUgYWJpbGl0eSB0byBkcmF3IG9uIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEzIiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+VXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE0IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+RmlsZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE1IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+V2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTYiIG5hbWU9ImNvbmZlcmVuY2VQYW5lbHMiPgorICAgIDx2YWx1ZT5DaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxNyIgbmFtZT0ib3JnYW5pemF0aW9uIGNob29zZSBpbmZvIj4KKyAgICA8dmFsdWU+WW91ciBhY2NvdW50IGlzIGFzc2lnbmVkIHRvIG11bHRpcGxlIE9yZ2FuaXphdGlvbnMuIFBsZWFzZSBjaG9vc2Ugb25lIGZvciB0aGlzIFNlc3Npb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxOCIgbmFtZT0iZXJyb3IgbWVzc2FnZSByb29tIGZ1bGwiPgorICAgIDx2YWx1ZT5UaGlzIHJvb20gaXMgZnVsbCBhdCB0aGUgbW9tZW50LiBQbGVhc2UgdHJ5IGFnYWluIGxhdGVyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTkiIG5hbWU9InJvb210eXBlcyI+CisgICAgPHZhbHVlPlJvb20gVHlwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjAiIG5hbWU9ImFwcG9pbnRlZF9yb29tIj4KKyAgICA8dmFsdWU+QXBwb2ludG1lbnQgUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjEiIG5hbWU9InNlcnZlcnRpbWUiPgorICAgIDx2YWx1ZT5TZXJ2ZXIgVGltZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjIiIG5hbWU9Imludl9yZW1pbmRlcl90ZW1wbGF0ZV9oZWFkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIC0gUmVtaW5kZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIzIiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9mcm9tIj4KKyAgICA8dmFsdWU+TWVzc2FnZSBmcm9tIFVzZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNCIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfbWVzc2FnZSI+CisgICAgPHZhbHVlPk1lc3NhZ2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNSIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfY2xpY2tfdGV4dCI+CisgICAgPHZhbHVlPkNsaWNrIHRoaXMgbGluayB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgTWVldGluZ3M6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNiIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfY2xpY2tfdGV4dF9saW5rIj4KKyAgICA8dmFsdWU+Q2xpY2sgaGVyZSB0byBlbnRlciByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNyIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfY2xpY2tfdGV4dF9oZWxwIj4KKyAgICA8dmFsdWU+aWYgeW91IGhhdmUgcHJvYmxlbXMgd2l0aCB0aGUgbGluaywgcGxlYXNlIGNvcHkgYW5kIHBhc3RlIHRoaXMgdG8geW91ciBicm93c2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjgiIG5hbWU9ImJ0bl9zZWFyY2hfaW50ZXJuIj4KKyAgICA8dmFsdWU+c2VhcmNoIGludGVybjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjkiIG5hbWU9ImJ0bl9zZWFyY2hfZXh0ZXJuIj4KKyAgICA8dmFsdWU+ZXh0ZXJuIHVzZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzMCIgbmFtZT0ibGJsX3ByZW5hbWUiPgorICAgIDx2YWx1ZT5wcmUgbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzEiIG5hbWU9ImxibF9uYW1lIj4KKyAgICA8dmFsdWU+bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzIiIG5hbWU9ImxibF9lbWFpbCI+CisgICAgPHZhbHVlPkUtbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzMiIG5hbWU9ImxvZ291dENvbmZpcm1fdGl0bGUiPgorICAgIDx2YWx1ZT5Db25maXJtIGxvZ291dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzQiIG5hbWU9ImxvZ291dENvbmZpcm1fc3VyZV90b19sb2dvdXRfcXVlc3Rpb24iPgorICAgIDx2YWx1ZT5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gbG9nb3V0IG5vdz88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM1IiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT5BY3Rpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkRlbW8gUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EZW1vIFRpbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM4IiBuYW1lPSJtZWV0aW5nIFRpbWVyIj4KKyAgICA8dmFsdWU+TWVldGluZyBUaW1lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzkiIG5hbWU9Im1lZXRpbmcgVGltZXIiPgorICAgIDx2YWx1ZT5UaGlzIFJvb20gaXMgYSBEZW1vIFJvb20uIFRvIGRpc2FibGUgdGhpcyB3YXJuaW5nIHlvdSBlaXRoZXIgc2hvdWxkIGdldCBhIHByaXZhdGUgbWVldGluZyByb29tIGZvciB5b3VyIHBlcnNvbmFsIHVzYWdlIG9yIHNldCB1cCBhbiBvd24gU2VydmVyLiBZb3Ugd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGxvZ2dlZCBvZmYgaW46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MCIgbmFtZT0ibWVldGluZyByb29tIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+TW9kZXJhdGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MSIgbmFtZT0ibW9kZXJhdGVkIHJvb20gd2FpdGluZyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+UGxlYXNlIHdhaXQgdW50aWxsIHRoZSBNb2RlcmF0b3IgaGFzIGVudGVyZWQgdGhlIFJvb20uIFRoZSBNb2RlcmF0b3IgY2FuIGJlIGVpdGhlciBhIFRlYWNoZXIsIEFkbWluIG9yIHRoZSBjcmVhdG9yIG9mIHRoaXMgUm9vbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQyIiBuYW1lPSJlcnJvciBwb3B1cCI+CisgICAgPHZhbHVlPk9rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MyIgbmFtZT0id2luZG93IHNjcmVlbnNoYXJpbmciPgorICAgIDx2YWx1ZT5JbmNvbWluZyBTY3JlZW4gU2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDQiIG5hbWU9IndpbmRvdyBzY3JlZW4gc2hhcmluZyI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGEgbmV3IFNjcmVlbiBTaGFyaW5nIGluY29taW5nIGZyb20gdGhlIFVzZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0NSIgbmFtZT0id2luZG93IHNjcmVlbiBzaGFyaW5nIj4KKyAgICA8dmFsdWU+U3RhcnQgU2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDYiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QWRkIG5ldyBNZWV0aW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0NyIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5NZWV0aW5nIFJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ4IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkV2ZW50IFJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ5IiBuYW1lPSJtYWluIG1lbnUgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPk1vZGVyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUwIiBuYW1lPSJtZW51IG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Nb2RlcmF0ZSBVc2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTEiIG5hbWU9Im1lbnUgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPk1vZGVyYXRlIFJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1MiIgbmFtZT0ibW9kZXJhdG9yIG9yZyI+CisgICAgPHZhbHVlPk08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUzIiBuYW1lPSJjb25maXJtIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5EbyB5b3Ugd2FudCB0byBjaGFuZ2UgdGhpcyBVc2VyIHRvIGJlY29tZSBhIE1vZGVyYXRvciBvZiB0aGF0IE9yZ2FuaXphdGlvbj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU0IiBuYW1lPSJlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+UGxlYXNlIGNob29zZSBhbiBPcmdhbml6YXRpb24gYmVmb3JlIHlvdSB0cnkgdG8gYWRkIGEgVXNlciB0byBpdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU1IiBuYW1lPSJjaG9vc2UgdXNlciB3aW5kb3ciPgorICAgIDx2YWx1ZT5Pcmdhbml6YXRpb24gLSBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU2IiBuYW1lPSJtb2RlcmF0b3Igb3JnIHVzZXJzIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIFVzZXIgZnJvbSB0aGUgT3JnYW5pemF0aW9uPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTciIG5hbWU9Im9yZyBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+VGhpcyBVc2VyIGlzIE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTgiIG5hbWU9Im9yZyBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+VGhpcyBVc2VyIGlzIE5vLU1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTkiIG5hbWU9ImVycm9yIG1lc3NhZ2UgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkRvIHlvdSB3YW50IHRoaXMgVXNlciB0byBiZSBub3QgYSBNb2RlcmF0b3Igb2YgdGhpcyBPcmdhbml6YXRpb24/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MCIgbmFtZT0ibW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkFkZCBvciBkZWxldGUgVXNlcnMgb3IgUm9vbXMgd2l0aGluIHlvdXIgT3JnYW5pemF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MSIgbmFtZT0iZGVsZXRlIGNvbmZpcm0gcXVlc3Rpb24iPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcmVjb3JkPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjIiIG5hbWU9ImRlbGV0ZSBjb25maXJtIHF1ZXN0aW9uIHVzZXIgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyB1c2VyIGZyb20geW91ciBvcmdhbml6YXRpb24/IFlvdSB3aWxsIG9ubHkgZGVsZXRlIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gdGhlIHVzZXIgYW5kIHlvdXIgb3JnYW5pemF0aW9uLCB0byByZWFsbHkgZGVsZXRlIHRoZSB1c2VyIGl0c2VsZiB5b3UgaGF2ZSB0byBsb2dpbiBpbnRvIHRoZSBBZG1pbmlzdHJhdGlvbi1QYW5lbC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYzIiBuYW1lPSJlcnJvciBtZXNzYWdlIHNlbGYgZGVsZXRpbmciPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IGRlbGV0ZSB5b3VyIG93biBVc2VyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjQiIG5hbWU9ImVycm9yIG1lc3NhZ2UgYXV0aCI+CisgICAgPHZhbHVlPlRoaXMgTWV0aG9kIG5lZWRzIGEgQWRtaW5zdHJhdGlvbiBBY2NvdW50IHRvIGJlIGludm9rZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NSIgbmFtZT0iZXJyb3IgbWVzc2FnZSBTT0FQIj4KKyAgICA8dmFsdWU+VGhlcmUgd2FzIG5vIFNlc3Npb24gYXNzb2NpYXRlZCB3aXRoIHRoaXMgSUQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NiIgbmFtZT0iZXJyb3IgbWVzc2FnZSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+VGhpcyBpcyBhbiBBZG1pbmlzdHJhdG9yIG9yIE1vZGVyYXRvciBhY2NvdW50LiBZb3UgY2FuIG9ubHkgZWRpdCB0aGlzIGFjY291bnQgdGhyb3VnaCB0aGUgQWRtaW5pc3RyYXRpb24gUGFuZWwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NyIgbmFtZT0iZW1haWwgdmVyaWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+VG8gY29tcGxldGUgeW91ciByZWdpc3RyYXRpb24gcGxlYXNlIGNsaWNrIG9uIHRoZSBmb2xsb3dpbmcgbGluay4gT3IgY29weSB0aGUgVVJMIHRvIHlvdXIgYnJvd3NlciBiYXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2OCIgbmFtZT0iZW1haWwgdmVyaWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+Q2xpY2sgdG8gdmVyaWZ5IHlvdXIgRS1NYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2OSIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPk5vIHVzZXIgd2FzIGZvdW5kIGZvciB0aGlzIEhhc2guPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3MCIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPlRoaXMgdXNlciBpcyBhbHJlYWR5IGFjdGl2YXRlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjcxIiBuYW1lPSJlcnJvck1lc3NhZ2VfVXNlckFjdGl2YXRpb25TZXJ2bGV0IFtBY3RpdmF0ZVVzZXJdIj4KKyAgICA8dmFsdWU+WW91IGRpZCBzdWNjZXNzZnVsbHkgYWN0aXZhdGUgeW91ciBhY2NvdW50ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzIiIG5hbWU9ImVycm9yTWVzc2FnZV9Vc2VyQWN0aXZhdGlvblNlcnZsZXQgW0FjdGl2YXRlVXNlcl0iPgorICAgIDx2YWx1ZT5Mb2dpbiBOb3c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjczIiBuYW1lPSJsb2dpbkVycm9yTWVzc2FnZSA9IHVzZXIgd2FzIG5vdCBhY3RpdmF0ZWQiPgorICAgIDx2YWx1ZT5Zb3VyIGFjY291bnQgaXMgbm90IGFjdGl2YXRlZC4gRmlyc3QgdXNlIHRoZSBsaW5rIGluIHRoZSBFbWFpbCB5b3UndmUgcmVjZWl2ZWQgZHVyaW5nIHJlZ2lzdHJhdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc0IiBuYW1lPSJyZWdpc3RlciB2ZXJpZmljYXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPllvdSBzdWNjZXNzZnVsbHkgc2lnbmVkIHVwLiBXZSd2ZSBzZW5kIGFuIEVNYWlsIHdpdGggYSB2ZXJpZmljYXRpb24gQ29kZSB0byB5b3VyIE1haWwuIFBsZWFzZSBjaGVjayB5b3VyIEluYm94LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzUiIG5hbWU9InBhcnRpY2lwYW50cyBwYW5lbCI+CisgICAgPHZhbHVlPlJlbW92ZSBNb2RlcmF0aW9uIFJvbGUgZnJvbSB0aGlzIFVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc2IiBuYW1lPSJwYXJ0aWNpcGFudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5HcmFudCBNb2RlcmF0aW9uIFJpZ2h0cyB0byB0aGlzIFVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc3IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Vc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3OCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QWNjZXNzIHRvIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc5IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Nb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgwIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Nb2RlcmF0aW9uOiBQbGVhc2UgY2hvb3NlIGFueSBVc2VyIG9uIHRoZSBMaXN0IHRvIGdyYW50IGhpbSBhY2Nlc3MgdG8gdGhlIFdoaXRlYm9hcmQsIE1vZGVyYXRpb24gb3IgVmlkZW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+VGhpcyBVc2VyIGlzIGFscmVhZHkgTW9kZXJhdG9yLCBzbyBoZSBoYXMgYXV0b21hdGljYWxseSB0aGUgcmlnaHQgdG8gZHJhdy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgyIiBuYW1lPSJldmVudCB1c2VyIGxpc3QgZXJyb3IiPgorICAgIDx2YWx1ZT5UaGlzIGlzIHlvdSEgWW91IGNhbm5vdCByZW1vdmUgdGhlIE1vZGVyYXRpb24gcmlnaHRzIGZyb20geW91cnNlbGYuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MyIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QWxsb3cgdGhpcyBVc2VyIHRvIFB1Ymxpc2ggaGlzIEF1ZGlvIC8gVmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg0IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5SZW1vdmUgQXVkaW8vVmlkZW8gb2YgdGhpcyBVc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4NSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+SSB3b3VsZCBsaWtlIHRvIGdldCB0aGUgbW9kZXJhdGlvbiBvZiB0aGlzIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg2IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5JIHdvdWxkIGxpa2UgdG8gZHJhdyBvbiB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4NyIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+SSB3b3VsZCBsaWtlIHRvIHNoYXJlIG15IEF1ZGlvL1ZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4OCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+WW91IGFyZSBtb2RlcmF0b3Igb2YgdGhpcyByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4OSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+WW91IGFyZSBhbGxvd2VkIHRvIGRyYXcgb24gd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTAiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPllvdSBhcmUgYWxsb3dlZCB0byBzaGFyZSB5b3VyIEF1ZGlvL1ZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5MSIgbmFtZT0iZXJyb3J0eXBlIj4KKyAgICA8dmFsdWU+TWVzc2FnZSB0byBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkyIiBuYW1lPSJhcHBseSBmb3IgbW9kIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTMiIG5hbWU9ImFwcGx5IGZvciBtb2QgbWVzc2FnZSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gZ2V0IHRoZSBNb2RlcmF0aW9uLiBVc2UgdGhlIHN0YXR1cyBJY29ucyBuZXh0IHRvIHRoZSB1c2VyIGluIHRoZSBMaXN0IG9mIFVzZXJzIHRvIGFkZCBvciByZW1vdmUgdGhlIE1vZGVyYXRpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5NCIgbmFtZT0iYXBwbHkgZm9yIHdoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGRyYXcgb24gd2hpdGVib2FyZC4gVXNlIHRoZSBzdGF0dXMgSWNvbnMgbmV4dCB0byB0aGUgdXNlciBpbiB0aGUgTGlzdCBvZiBVc2VycyB0byBhZGQgb3IgcmVtb3ZlIHRoZSByaWdodCB0byBkcmF3IGFueXRoaW5nIG9uIHRoZSB3aGl0ZWJvYXJkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTUiIG5hbWU9IjY5NSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gc2hhcmUgaGlzIEF1ZGlvL1ZpZGVvLiBVc2UgdGhlIHN0YXR1cyBJY29ucyBuZXh0IHRvIHRoZSB1c2VyIGluIHRoZSBMaXN0IG9mIFVzZXJzIHRvIGFkZCBvciByZW1vdmUgdGhlIHJpZ2h0IHRvIHNoYXJlIEF1ZGlvL1ZpZGVvIGZvciBhbnkgVXNlci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk2IiBuYW1lPSJtb2RlcmF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Zb3UgaGF2ZSB0byB3YWl0IHVudGlsbCBhIE1vZGVyYXRvciBlbnRlcnMgdGhlIHJvb20uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5NyIgbmFtZT0iY2FsZW5kYXIgYnV0dG9uIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5OCIgbmFtZT0iY2FsZW5kYXIgYnV0dG9uIj4KKyAgICA8dmFsdWU+U2F2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTkiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPkRheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDAiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPk1vbnRoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwMSIgbmFtZT0iY2FsZW5kYXIgY29tcG9uZW50Ij4KKyAgICA8dmFsdWU+WWVhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDIiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5VcGxvYWQgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDMiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5BZGQgRm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwNCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlJlZnJlc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA1IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+VHJhc2ggKERyYWcgYW5kIERyb3AgaXRlbSBoZXJlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDYiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5NeSBGaWxlcyAoSG9tZSBEcml2ZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA3IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+Um9vbSBGaWxlcyAoUHVibGljIERyaXZlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDgiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5BZGQgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDkiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5BZGQgRm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkRlbGV0ZSBGb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzExIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+RWRpdCBOYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPk5ldyBGb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzEzIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIEl0ZW0/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxNCIgbmFtZT0idXNlciBhZG1pbiI+CisgICAgPHZhbHVlPlNlYXJjaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTUiIG5hbWU9InVzZXIgYWRtaW4iPgorICAgIDx2YWx1ZT5TZWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE2IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+T3BlbiBEb2N1bWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTciIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5TaG93IGFsbCBGaWxlcyAoVHJlZSBWaWV3KTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTgiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5DbG9zZSBEb2N1bWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTkiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5EZWxldGUgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjAiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIG5vdCBhbGxvd2VkIHRvIGRyYXcgYW55dGhpbmcgb24gdGhlIFdoaXRlYm9hcmQuIFlvdSBoYXZlIHRvIGJlY29tZSBNb2RlcmF0b3Igb3IgYXQgbGVhc3QgZ2V0IHRoZSBSaWdodCB0byBlZGl0IFdoaXRlYm9hcmQuIFlvdSBtYXkgYXNrIGEgTW9kZXJhdG9yIHRvIGdpdmUgeW91IHRoYXQgcmlnaHQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyMSIgbmFtZT0icHJvcGVydHkgcGFuZWwiPgorICAgIDx2YWx1ZT5Eb2N1bWVudCBQcm9wZXJ0aWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyMiIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+U3RhcnQgQ2xpZW50IChleHRlcm5hbCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIzIiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5TdGFydCBDbGllbnQgKEhUVFApPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNCIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+QSB1c2VyIHdhbnQgdG8gc2hhcmUgaGlzIHNjcmVlbi4gRG8geW91IHdhbnQgdG8gc2VlIGl0PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjUiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPllvdSBhcmUgY3VycmVudGx5IHNoYXJpbmcgeW91ciBEZXNrdG9wLiBGb3Igc3RvcHBpbmcgdGhlIFNoYXJpbmcgU2Vzc2lvbiBwbGVhc2UgaGl0IHRoZSBTdG9wIGJ1dHRvbiBpbiB0aGUgU2hhcmluZyBDbGllbnQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNiIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+U2hhcmluZyBTZXNzaW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNyIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+WW91IGFyZSBhbHJlYWR5IHNoYXJpbmcgeW91ciBkZXNrdG9wITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+RGVza3RvcCBWaWV3ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI5IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkV4aXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMwIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkRlc2t0b3AgU2hhcmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5DbGljayBTdGFydCB0byBwdWJsaXNoIHlvdXIgc2NyZWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdGFydCBTaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdG9wIFNoYXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM0IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlNlbGVjdCB5b3VyIHNjcmVlbiBhcmVhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzUiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+Q2hhbmdlIHdpZHRoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5UaGUgU2hhcmVyIGhhcyBmaW5pc2hlZCB0aGlzIHNlc3Npb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5DaGFuZ2UgaGVpZ2h0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczOCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5YLU9mZnNldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzkiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+WS1PZmZzZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQwIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPldpZHRoOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDEiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+SGVpZ2h0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDIiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+Q29ubmVjdGlvbiB3YXMgY2xvc2VkIGJ5IFNlcnZlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDMiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NCIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5TdGFydCBFeHRlcm5hbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDUiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+SWYgeW91IGNsb3NlIHRoaXMgc2Vzc2lvbiBjb21wbGV0ZWx5IHlvdSBhcmUgbm90IGFibGUgdG8gcmVzdGFydCB0aGUgdmlld2VyIGZvciB0aGlzIHNlc3Npb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NiIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5Db25maXJtIENsb3NpbmcgVmlld2VyIFNlc3Npb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ3IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPlNoYXJlIFNjcmVlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDgiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+UmVjb3JkIFNlc3Npb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ5IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+Q28tQnJvd3Npbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUwIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+T29vcHMsIC4uLiBGaXJlZm94IG9uIFdpbmRvd3MgZG9lcyBub3Qgc2hvdyBjbGVhciBDby1Ccm93c2luZy4gUGxlYXNlIHVzZSBhbm90aGVyIEJyb3dzZXIgZm9yIHVzaW5nIHRoZSBDby1Ccm93c2luZyBmZWF0dXJlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTEiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5QcmV2aW91czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTIiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5OZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MyIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPlJlbG9hZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTQiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5Ib21lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1NSIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPkxvYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU2IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+QWRkIHRoaXMgd2Vic2l0ZSBhcyBEZWZhdWx0IHdlYnNpdGUgdG8geW91ciBQcm9maWxlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTciIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5UZXN0IFNldHVwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1OCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPkNoZWNrIHlvdSBNaWNyb3Bob25lIGFuZCBDYW1lcmEgc2V0dXAgYmVmb3JlIHlvdSBlbnRlciBhIHJvb20gYnkgcmVjb3JkaW5nIHNvbWUgc2Vjb25kcy4gWW91IGNhbiB0aGVuIHJlcGxheSB5b3VyIHJlY29yZGluZyB0byBjaGVjayB5b3VyIHZvaWNlIGFuZCBwaWN0dXJlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTkiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5Eb24ndCBzaG93IHRoaXMgdGVzdCBhbnltb3JlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjEiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5TdGFydCBDb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MiIgbmFtZT0iZWRpdCB2aWRlbyBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkRvIG5vdCBhc2sgYWdhaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYzIiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+UkVDPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlBMQVk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY1IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+WW91IG1heSBwcm9jZWVkIHdpdGhvdXQgdGVzdGluZyBpZiB5b3UgZG8gbm90IHBsYW4gdG8gcHVibGlzaCB5b3VyIHZvaWNlIG9yIHBpY3R1cmUuIFBhcnRpY2lwYW50cyB3aXRob3V0IEF1ZGlvIG9yIFZpZGVvIGNhbiBzdGlsbCB1c2UgdGhlIFdoaXRlYm9hcmQsIHNoYXJlIHRoZWlyIERlc2t0b3Agb3Igd3JpdGUgQ2hhdCBtZXNzYWdlcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY2IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+U1RPUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjciIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5MZXZlbC1NZXRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjgiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5QcmVzcyBTdGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjkiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5TdGFydCBDb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MCIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPlN0YXJ0IEV2ZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MSIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPkNob29zZSBSb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MiIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPkNoZWNrIFNldHVwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MyIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPlN0YXJ0IENvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc0IiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+SG93IHRvIGNvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc1IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+U3RhcnQgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NiIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPkRvIG5vdCBzaG93IEF1ZGlvIC8gVmlkZW8gVGVzdCAoUmVjb3JkaW5nKSBiZWZvcmUgZW50ZXJpbmcgYSBDb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NyIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPlB1YmxpYyBSb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzgiIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT5QdWJsaWMgUm9vbXMgYXJlIGFjY2Vzc2libGUgZm9yIGFsbCBVc2Vycy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc5IiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+UHJpdmF0ZSBSb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODAiIG5hbWU9IlByaXZhdGUgUm9vbXMiPgorICAgIDx2YWx1ZT5Qcml2YXRlIFJvb21zIGFyZSBvbmx5IGFjY2Vzc2libGUgZm9yIHVzZXJzIG9mIHRoZSBzYW1lIG9yZ2FuaXphdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgxIiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+TXkgUm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgyIiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+Um9vbXMgaW4gdGhpcyBzZWN0aW9uIGFyZSBjcmVhdGVkIGZvciBwZXJzb25hbCB1c2FnZS4gVGhlcmUgYXJlIHNvbWUgc3RhbmRhcmQgcm9vbXMgcGx1cyB0aGUgb25lcyB0aGF0IGFyZSBjcmVhdGVkIHRocm91Z2ggdGhlIGNhbGVuZGFyIGFuZCBoYXZlIGEgc3RhcnQgYW5kIGFuIGVuZCBkYXRlLiBUaGUgcm9vbXMgY3JlYXRlZCB2aWEgdGhlIGNhbGVuZGFyIGFyZSBvbmx5IGxpc3RlZCBpbiB0aGlzIHNlY3Rpb24gYXMgbG9uZyBhcyB0aGV5IGFyZSB2YWxpZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgzIiBuYW1lPSJyZXN0cmljdGVkIHJvb20iPgorICAgIDx2YWx1ZT5Zb3UgaGF2ZSB0byBiZSBtb2RlcmF0b3IgdG8gZG8gdGhpcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg0IiBuYW1lPSJtZW51IG9wdGlvbiI+CisgICAgPHZhbHVlPkFwcGx5IGZvciBtb2RlcmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NSIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT5BcHBseSBmb3Igd2hpdGVib2FyZCBhY2Nlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg2IiBuYW1lPSJtZW51IG9wdGlvbiI+CisgICAgPHZhbHVlPkFwcGx5IGZvciBjYW1lcmEvbWljcm9waG9uZSBhY2Nlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg3IiBuYW1lPSJlcnJvciBtZXNzYWdlIHNvYXAgc2VjdXJlIGxvZ2luIj4KKyAgICA8dmFsdWU+VGhpcyBTZXNzaW9uIEhhc2ggd2FzIGFscmVhZHkgdXNlZC4gWW91IGNhbm5vdCB1c2UgaXQgdHdpY2UuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4OCIgbmFtZT0iZGFzaGJvYXJkIGJ1dHRvbiI+CisgICAgPHZhbHVlPlNUQVJUPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4OSIgbmFtZT0iZXhpdCBjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+RVhJVDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTAiIG5hbWU9ImNvbmZlcmVuY2UgdmlldyI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBleGl0PyBZb3UgbWlnaHQgc2hvdWxkIGNsZWFyIHVwbG9hZGVkIGRvY3VtZW50cywgd2hpdGVib2FyZCBhbmQgdGhlIGNoYXQgaGlzdG9yeS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkxIiBuYW1lPSJjb25mZXJlbmNlIHZpZXciPgorICAgIDx2YWx1ZT5FeGl0IGNvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkyIiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT5Sb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTMiIG5hbWU9Im1haW4gbWVudSI+CisgICAgPHZhbHVlPkNob29zZSBhIHJvb20gZm9yIGEgbWVldGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTQiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgYW4gdW5zYXZlZCBFdmVudCBpbiB0aGUgQ2FsZW5kYXIuIFBsZWFzZSBlaXRoZXIgc2F2ZSBpdCBvciByZW1vdmUgaXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5NSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5QbGVhc2UgYWRkIGF0IGxlYXN0IG9uZSBhdHRlbmRlZSBmb3IgeW91ciBtZWV0aW5nITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTYiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEV2ZW50PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTciIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+V2FybmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTgiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QWRkIEV2ZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5OSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5EYXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAwIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPldlZWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAxIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPk1vbnRoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMiIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5EZXNjcmlwdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDMiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QXR0ZW5kZWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FLCB5b3VyIFdlYiBDb25mZXJlbmNpbmcgUGxhdGZvcm0uIEVpdGhlciBmb2xsb3cgdGhlIEluc3RydWN0aW9ucywgcHJlc3MgdGhlIHN0YXJ0IGJ1dHRvbiB0byBzdGFydCB0byBjb25mZXJlbmNlIGltbWVkaWF0ZWxseSBvciB5b3UgZ290byB0aGUgQ2FsZW5kYXIgYW5kIHNldCB1cCBhIENvbmZlcmVuY2UgZm9yIHRoZSBmdXR1cmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNSIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+UGxhbiBhIE1lZXRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA2IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VG8gc2V0IHVwIGEgY29uZmVyZW5jZSB5b3UgY2FuIGFkZCBhIG5ldyBFdmVudCBpbiB0aGUgQ2FsZW5kYXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNyIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPk5lZWQgaGVscD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA4IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+UmVzdHJpY3RlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDkiIG5hbWU9Imx6Y2FsZW5kZXIiPgorICAgIDx2YWx1ZT5TZWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEwIiBuYW1lPSJsemNhbGVuZGVyIj4KKyAgICA8dmFsdWU+QWRkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMSIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIFVzZXIgc2VsZWN0ZWQuIFBsZWFzZSBzZWxlY3QgYW4gaXRlbSBmcm9tIHRoZSBsaXN0IGZpcnN0IGFuZCB0aGVuIGhpdCBhZGQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMiIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPkFkZCBBdHRlbmRlZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTMiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5TYXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxNCIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPkRlbGV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTUiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5FdmVudCBEZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkRlZmF1bHQgTW9kZXJhdG9yczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5TdXBlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTgiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTkiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyMCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkUtTWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjEiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5BZGQgbmV3IGRlZmF1bHQgTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyMiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPklzIFN1cGVyIE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjMiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5JZiB0aGUgUm9vbSBpcyBtb2RlcmF0ZWQsIFVzZXIgd2l0aCBMZXZlbCBNb2RlcmF0b3Igb3IgQWRtaW5pc3RyYXRvciBhcmUgYXV0b21hdGljYWxseSBNb2RlcmF0b3IgaWYgdGhleSBlbnRlciB0aGUgUm9vbS4gSWYgeW91IGRvbid0IHdhbnQgdG8gc3BlY2lmeSB0aGF0IGFuZCBvbmx5IHdhbnQgYSBjZXJ0YWluIFVzZXIgdG8gYmVjb21lIE1vZGVyYXRvciB1c2UgdGhlIERlZmF1bHQgTW9kZXJhdG9yIG9wdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI0IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+QSBTdXBlciBNb2RlcmF0b3IgaXMgYWx3YXlzIGEgTW9kZXJhdG9yIHdoZW4gaGUgZW50ZXJzIGEgUm9vbSwgYW5kIG5vYm9keSBjYW4gcmVtb3ZlIHRoZSBNb2RlcmF0aW9uIEZsYWcgZnJvbSBoaW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI1IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+QXBwbHkgU3VwZXItTW9kZXJhdGlvbiB0byBVc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPlJlbW92ZSBTdXBlciBNb2RlcmF0aW9uIGZyb20gVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyOCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPklmIHlvdSBhZGQgYW4gT3JnYW5pemF0aW9uIHRvIHRoZSByb29tIG9ubHkgdXNlcnMgb2YgdGhhdCBPcmdhbml6YXRpb24gaGF2ZSBhY2Nlc3MgdG8gaXQgKFRoaXMgaXMgb25seSB2YWxpZCBpZiB0aGUgaXNQdWJsaWMgZmxhZyBpcyBzZXQgdG8gZmFsc2UhKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjkiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5Nb2RlcmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzMCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkxpbWl0YXRpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzMSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPk9yZ2FuaXphdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzIiIG5hbWU9ImNvbmZpcm0gYWN0aW9uIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzMiIG5hbWU9ImNvbmZpcm0gZGVsZXRlIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEl0ZW0/IFlvdSBoYXZlIHRvIHByZXNzIHRoZSBzYXZlIGJ1dHRvbiB0byBzdG9yZSB0aGUgY2hhbmdlcyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM0IiBuYW1lPSJ1c2VyIGNob29zZSBlcnJvciI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIFVzZXIgc2VsZWN0ZWQuIFBsZWFzZSBzZWxlY3QgZmlyc3QgYmVmb3JlIHlvdSBhZGQgaXQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkFkZCBuZXcgRGVmYXVsdCBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM2IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RG8geW91IHdhbnQgdG8gYWRkIHRoZSBTdXBlciBNb2RlcmF0aW9uIEZsYWcgZm9yIHRoaXMgVXNlcj8gQSBTdXBlciBNb2RlcmF0b3IgaXMgbm90IG9ubHkgTW9kZXJhdG9yIG9mIGEgUm9vbSwgYnV0IGFsc28gbm8gb3RoZXIgTW9kZXJhdG9yIGNhbiByZW1vdmUgdGhlIE1vZGVyYXRpb24gRmxhZyBmb3IgdGhpcyBVc2VyLiBZb3UgbmVlZCB0byBzYXZlIHRoZSBSb29tIE9iamVjdCB0byBzYXZlIHRoZXNlIHNldHRpbmdzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EbyB5b3Ugd2FudCB0byByZW1vdmUgdGhlIFN1cGVyIE1vZGVyYXRpb24gRmxhZyBmb3IgdGhpcyBVc2VyPyBZb3UgbmVlZCB0byBzYXZlIHRoZSBSb29tIE9iamVjdCB0byBzYXZlIHRoZXNlIHNldHRpbmdzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzgiIG5hbWU9InN1cGVyIG1vZGVyYXRvciI+CisgICAgPHZhbHVlPlRoaXMgVXNlciBpcyBhIFN1cGVyLU1vZGVyYXRvci4gWW91IGNhbm5vdCByZW1vdmUgdGhlIE1vZGVyYXRpb24gZmxhZyBmcm9tIGEgU3VwZXItTW9kZXJhdG9yITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzkiIG5hbWU9ImNvbmZpcm0gZGVsZXRlIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZpbGUvRm9sZGVyPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDAiIG5hbWU9ImNvbmZpcm0gZGVsZXRlIj4KKyAgICA8dmFsdWU+RGVsZXRlIEZpbGUvRm9sZGVyPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDEiIG5hbWU9InNhbHV0YXRpb24iPgorICAgIDx2YWx1ZT5NcnMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0MiIgbmFtZT0ic2FsdXRhdGlvbiI+CisgICAgPHZhbHVlPkRyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDMiIG5hbWU9InByb3BlcnR5IHBhbmVsIHdoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5Qcm9wZXJ0aWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NCIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPlNob3cgbW91c2UgcG9zaXRpb24gdG8gdmlld2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDUiIG5hbWU9InB1Ymxpc2ggb3B0aW9uIj4KKyAgICA8dmFsdWU+U2hhcmUgQXVkaW8gd2l0aCBTSVAgQXBwbGV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NiIgbmFtZT0icHVibGlzaCBvcHRpb24iPgorICAgIDx2YWx1ZT5TaGFyZSBBdWRpbyB3aXRoIFNJUCBhbmQgVmlkZW8gd2l0aCBGbGFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDciIG5hbWU9ImRvY3VtZW50IHBhbmVsIj4KKyAgICA8dmFsdWU+RnVsbC1GaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ4IiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5WaWV3IFNjcmVlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDkiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlRoZSB1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MCIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+d2FudHMgdG8gc2hhcmUgaXRzIHNjcmVlbi4gRG8geW91IHdhbnQgdG8gc2VlIGl0PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTEiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNsb3NlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MiIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPlpvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUzIiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+VGhlIFNlc3Npb24gd2FzIGNsb3NlZCBieSB0aGUgc2hhcmluZyBVc2VyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTQiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5QYXVzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTUiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5OZXcgU2NyZWVuIFNoYXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU2IiBuYW1lPSJwcmVzZW50ZXIgbWluaSBpY29uIj4KKyAgICA8dmFsdWU+TWluaW1pemU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU3IiBuYW1lPSJwcmVzZW50ZXIgbWluaSBpY29uIj4KKyAgICA8dmFsdWU+TWF4aW1pemU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU4IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5WaWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTkiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlJlY29yZGluZyBUaW1lbGluZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjAiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk15IFJlY29yZGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYxIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5QdWJsaWMgUmVjb3JkaW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjIiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkluZm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYzIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TGVuZ3RoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RGF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjYiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UExBWTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjgiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk1haW4gLSBWaWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjkiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzAiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPllvdSBtYXkgcmVjb3JkIGFuZCBzaGFyZSB5b3VyIHNjcmVlbiBhdCB0aGUgc2FtZSB0aW1lLiBUbyBlbmFibGUgb3RoZXJzIHRvIHNlZSB5b3VyIHNjcmVlbiBqdXN0IGhpdCB0aGUgc3RhcnQgYnV0dG9uIG9uIHRoZSB0b3AuIFRvIG9ubHkgcmVjb3JkIHRoZSBTZXNzaW9uIGl0IGlzIHN1ZmZpY2llbnQgdG8gY2xpY2sgc3RhcnQgcmVjb3JkaW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzEiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlN0YXJ0IFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzIiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlN0b3AgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3MyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RG93bmxvYWQgdGhlIEZMVi1GaWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3NCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+Um9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzUiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlBsYXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TdG9wPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3NyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+VXNlciBoYXMgbWljcm9waG9uZSBvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U3RvcCBTaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3OSIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5BbGxvdyBVc2VyIFF1ZXN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODAiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+VHVybiB0aGlzIG9mZiB0byBwcmV2ZW50IHRoYXQgYW55IHVzZXIgaXMgZGlzdHVyYmluZyB5b3UgaW4gdGhpcyByb29tLiBFZmZlY3QgaXMgdGhhdCB0aGUgQnV0dG9uIHRvIGFzayBmb3IgTW9kZXJhdGlvbiAoIkkgaGF2ZSBhIHF1ZXN0aW9uIikgaXMgbm90IHZpc2libGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MSIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5SaWdodHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgyIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Eb3dubG9hZCBhcyBBVkk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgzIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5GTFY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg0IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5BVkk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg1IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5SYXcgU2NyZWVudmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5BdWRpbyBvbmx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+VGhlIGhhdmUgYmVlbiBlcnJvcnMgd2hpbGUgcHJvY2Vzc2luZyB0aGUgUmVjb3JkaW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODgiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlRoZSBSZWNvcmRpbmcgaXMgbm90IHlldCByZWFkeSBmb3Igd2F0Y2hpbmcuIFBsZWFzZSByZXRyeSBpbiBhIGNvdXBsZSBvZiBtaW51dGVzIGFnYWluLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODkiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkxvZzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkwIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5SZWNvcmRlciBNZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+T2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkyIiBuYW1lPSJzaXAgYXBwbGV0Ij4KKyAgICA8dmFsdWU+U0lQIEFwcGxldCBpcyBub3QgUmVhZHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkzIiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+U0lQLUFjY291bnQgU2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk0IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+U0lQIHNldHRpbmdzIGZvciBlYWNoIHVzZXIuIFlvdSBjYW4gdHVybiBvbiBvciBvZmYgU0lQIHZpYSB0aGUgQWRtaW5pc3RyYXRpb24gJmd0OyBDb25maWd1cmF0aW9uIChLZXk6IGVuYWJsZV9zaXApLiBUaGUgU0lQIGRhdGEgZm9yIGVhY2ggdXNlciBzaG91bGQgYmUgY3JlYXRlZCBhdXRvbWF0aWNhbGx5LiBZb3UgY2FuIHJlLWNyZWF0ZSB0aGUgZGF0YSBieSBjaGVja2luZyAiUmUtZ2VuZXJhdGUgU0lQIERhdGEiPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NSIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNJUC1Vc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NiIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNpcC1QYXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NyIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNpcC1BdXRoLUlkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5OCIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIExvZ2luIHRvIHRoZSBTSVAgR2F0ZXdheSBoYXMgZmFpbGVkLiBZb3Ugc2hvdWxkIGNoZWNrIHRoZSBhdXRoZW50aWZpY2F0aW9uIGRhdGEgb2YgeW91ciBTSVAtUHJvdmlkZXIgYW5kIHRoZSBTSVAtQWNjb3VudCBEYXRhIGZvciBlYWNoIFVzZXIuIEFzIEFkbWluaXN0cmF0b3IgeW91IGFyZSBzdGlsbCBhYmxlIHRvIGxvZ2luIGFuZCBjaGVjayB0aGUgQ29uZmlndXJhdGlvbi4gQXMgVXNlciBvciBNb2RlcmF0b3IgeW91IHdpbGwgYmUgYmxvY2tlZCBmcm9tIGFueSBpbnRlcmFjdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk5IiBuYW1lPSJzaXAgc3RhdHVzIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgTG9naW4gdG8gdGhlIFNJUCBHYXRld2F5IGhhcyBmYWlsZWQuIENvbnRhY3QgeW91ciBTZXJ2aWNlIFRlYW0hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwMCIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TG9nZ2luZyBpbiB0byBTSVAtR2F0ZXdheSAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAxIiBuYW1lPSJzaXAgc3RhdHVzIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Mb2dnaW5nIGluIHRvIFNJUC1HYXRld2F5IC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDIiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlNob3cgTG9nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwMyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TG9nIG1lc3NhZ2VzIGZyb20gcG9zdCByZWNvcmRlciBwcm9jZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwNCIgbmFtZT0ic2lwIGxvZ2luIj4KKyAgICA8dmFsdWU+U0lQLUFwcGxldCBNZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwNSIgbmFtZT0ic2lwIGxvZ2luIj4KKyAgICA8dmFsdWU+VGhlIFNJUC1BcHBsZXQgaXMgbm90IHJlYWR5LiBBY2NlcHQgdGhlIEFwcGxldCBwbGVhc2UgYW5kIGNsaWNrIG9rITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDYiIG5hbWU9Im1vZGVyYXRvciBwb3AgdXAiPgorICAgIDx2YWx1ZT5HZXQgTW9kZXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDciIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5TYXZlIEFwcG9pbnRtZW50IENoYW5nZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA4IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhlIGFwcG9pbnRlbWVudCBoYXMgYmVlbiBjaGFuZ2VkLiBEbyB5b3Ugd2FudCB0byBzYXZlIHRob3NlIGNoYW5nZXM/ICZsdDtici8mZ3Q7Jmx0O2JyLyZndDtBbGwgYXR0ZW5kZWVzIG9mIHRoZSBhcHBvaW50bWVudCB3aWxsIHJlY2VpdmUgYSBFTWFpbCB3aXRoIHRoZSB1cGRhdGVkIGRhdGUgYW5kIHRpbWUgKGRlcGVuZGluZyBvbiB0aGUgbm90aWZpY2F0aW9uIHR5cGUgb2YgdGhpcyBhcHBvaW50bWVudCkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwOSIgbmFtZT0iZmx2IHJlY29yZGVyIGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UbyBhY2Nlc3Mgb3RoZXIgcmVjb3JkaW5ncyB5b3UgaGF2ZSB0byBsb2dpbiB0aGUgJEFQUF9OQU1FIEFwcGxpY2F0aW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTAiIG5hbWU9ImludGVydmlldyB2aWRlbyBwb2QiPgorICAgIDx2YWx1ZT5DaG9vc2UgdGhlIFVzZXIgZm9yIHRoaXMgVmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTExIiBuYW1lPSJpbnRlcnZpZXcgdmlkZW8gY2hvb3NlIHVzZXIiPgorICAgIDx2YWx1ZT5BdmFpbGFibGUgVXNlcnMgZm9yIHRoaXMgUG9kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMiIgbmFtZT0iaW50ZXJ2aWV3IGluZm8iPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGEgTW9kZXJhdG9yIGluIHRoaXMgSW50ZXJ2aWV3LiBZb3UgY2FuIGRlY2lkZSB3aG8gaXMgc3BlYWtpbmcgaW4gdGhpcyBpbnRlcnZpZXcgYW5kIHlvdSBjYW4gc3RhcnQgLyBzdG9wIHRoZSByZWNvcmRpbmcgb2YgdGhlIFNlc3Npb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMyIgbmFtZT0iaW50ZXJ2aWV3IGJ1dHRvbiByZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TdGFydCBSZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE0IiBuYW1lPSJpbnRlcnZpZXcgYnV0dG9uIHJlY29yZGluZyI+CisgICAgPHZhbHVlPlN0b3AgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxNSIgbmFtZT0iaW50ZXJ2aWV3IGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgcmVjb3JkaW5nIG9mIHRoZSBJbnRlcnZpZXcgaXMgYWxyZWFkeSBzdGFydGVkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTYiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIHJlY29yZGluZyBpcyBhbHJlYWR5IHN0b3BwZWQgb3Igbm90IGJlZW4gc3RhcnRlZCB5ZXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxNyIgbmFtZT0iaW50ZXJ2aWV3IHJlY29yZGluZyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIHJlY29yZGluZyBmb3IgdGhpcyBpbnRlcnZpZXcgaXMgYWxyZWFkeSBzdGFydGVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTgiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxOSIgbmFtZT0iaW50ZXJ2aWV3IGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgcG9zdC1wcm9jZXNzaW5nIG9mIGFuIGludGVydmlldyB0YWtlcyA1IG1pbnV0ZXMgcGVyIDEgbWludXRlIGludGVydmlldy4gVGhlIGN1cnJlbnQgcHJvZ3Jlc3Mgb2YgdGhlIGludGVydmlldyBwb3N0LXByb2Nlc3NpbmcgdHJhbnNjb2RpbmcgaXM6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyMCIgbmFtZT0ic2lwIGNyZWF0aW9uIj4KKyAgICA8dmFsdWU+WW91IGhhdmUgdG8gZW50ZXIgeW91ciBwYXNzd29yZCBhZ2FpbiB0byBhdXRvIGNyZWF0ZSB0aGUgU0lQIERhdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIxIiBuYW1lPSJzaXAgY3JlYXRpb24iPgorICAgIDx2YWx1ZT5SZS1nZW5lcmF0ZSBTSVAgRGF0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjIiIG5hbWU9ImZpbGVleHBsb3JlciI+CisgICAgPHZhbHVlPllvdSBjYW5ub3QgbW92ZSB0aGlzIGZpbGUgb3IgZm9sZGVyIGludG8gaXRzIG93biBzdWIgZm9sZGVyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjMiIG5hbWU9ImZpbGUgZXhwbG9yZXIgIj4KKyAgICA8dmFsdWU+SG9tZSBkcml2ZSBzaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlB1YmxpYyBkcml2ZSBzaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNSIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPkxpY2Vuc2UgU2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI2IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+WW91IGNhbiBlaXRoZXIgYmluZCB0aGUgdXNlciB0byBhIGV4cGlyZSBEYXRlIG9yIHRvIGEgbWF4aW11bSBudW1iZXIgb2YgbWludXRlcyB3aGVuIHlvdSBlbmFibGUgbGljZW5zaW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjciIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5DaGVjayBsaWNlbnNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyOCIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPkZsYXRyYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyOSIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPkV4cGlyZSBkYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMCIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPlNlY29uZHMgbGVmdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzEiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5Ub3RhbCB0aW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91ciBMaWNlbnNlIGhhcyBleHBpcmVkLiBZb3UgbmVlZCB0byBidXkgbmV3IG1pbnV0ZXMgKFBheS1wZXItbWludXRlKSBvciBhIHZvbHVtZSBmbGF0cmF0ZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMzIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5DbGljayBhbmQgYnV5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzNCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+VGltZSBMZWZ0IG9uIHlvdXIgYWNjb3VudDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM1IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Vc2VyIExpY2Vuc2UgSW5mbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzYiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkluZm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM3IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5DbG9zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzgiIG5hbWU9ImxpY2Vuc2UtaW5mbyI+CisgICAgPHZhbHVlPllvdXIgbGljZW5zZSBoYXMgZXhwaXJlZC4gWW91IG5lZWQgZWl0aGVyIHRvIGJ1eSBhIG1pbnV0ZSBwYWNrYWdlIChQYXktcGVyLW1pbnV0ZSkgb3IgYSB2b2x1bWUgZmxhdHJhdGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzOSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+TGljZW5zZSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDAiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdSBjYW4gZWl0aGVyIGJ1eSBtaW51dGVzIHRvIG1ha2UgV2ViLUNvbmZlcmVuY2luZyAoUGF5LXBlci1taW51dGUpLiZsdDtici8mZ3Q7Jmx0O2JyLyZndDsgT3IgeW91IGJ1eSBhIHZvbHVtZSBmbGF0cmF0ZSBhYm91dCAzLTEyIG1vbnRocy4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7U2VuZGluZyBpbnZpdGF0aW9ucyAoZGlyZWN0IGxpbmtzIGludG8gQ29uZmVyZW5jZSBSb29tcykgb3IgY3JlYXRpbmcgY29uZmVyZW5jZSBSb29tcyB2aWEgdGhlIENhbGVuZGFyIHdpdGggZXh0ZXJuYWwgVXNlcnMgaXMgb25seSBhbGxvd2VkIHdpdGggYSB2b2x1bWUgZmxhdHJhdGUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDYwIE1pbnV0ZXMgOSw5OSBFVVJPICgxNiBDZW50IHBlciBNaW51dGUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDUgaG91cnMgMTksOTkgRVVSTyAoNiBDZW50IHBlciBtaW51dGUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDMgbW9udGggZm9yIDI5LDk5IEVVUk8gKDksOTkgRXVybyBwZXIgTW9udGgpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDYgbW9udGggZm9yIDM5LDk5IEVVUk8gKDYsNjYgRXVybyBwZXIgbW9udGgpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+UGF5LXBlci1taW51dGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ2IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Wb2x1bWUgZmxhdHJhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ3IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3UgaGF2ZSB1bmxpbWl0ZWQgTGljZW5zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDgiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdXIgbGljZW5zZSB3aWxsIGV4cGlyZSBhdDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ5IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3UgYm91Z2h0IFBheS1wZXItbWludXRlLiBZb3Ugc3RpbGwgaGF2ZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUwIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5CdXkgbmV3IGNyZWRpdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUxIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5XYW50IHlvdXIgb3duIFNlcnZlcj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUyIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3Ugd291bGQgbGlrZSB0byBoYXZlICRBUFBfTkFNRSBpbnN0YWxsZWQgb24geW91ciBTZXJ2ZXIgb3IgaW50ZWdyYXRlZCBpbnRvIHlvdXIgTW9vZGxlLCBTdWdhckNSTSwgV2Vic2l0ZSBvciBJbnRyYW5ldD8gUHJpemluZ3Mgc3RhcnQgYXQgNTAwIEV1cm8gcGVyIEluc3RhbGxhdGlvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUzIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5PciBzZW5kIHVzIGEgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTQiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkFuc3dlciB0bzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU1IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5NZXNzYWdlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTYiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlNlbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU3IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5DbGljayBoZXJlIHRvIGdldCBjb250YWN0IEluZm8gYW5kIFByaXppbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1OCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q3JlZGl0IENhcmQgRGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTkiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkZpcnN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjAiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkxhc3RuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2MSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q3JlZGl0IENhcmQgVHlwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjIiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlZJU0EgQ2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjMiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPk1hc3RlckNhcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY0IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5EaXNjb3ZlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjUiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkFtZXJpY2FuIEV4cHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY2IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DcmVkaXQgQ2FyZCBOdW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY3IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5FeHBpcmF0aW9uIERhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY4IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DYXJkIFZlcmlmaWNhdGlvbiBOdW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY5IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5CaWxsaW5nIEFkZHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTcwIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5BZGRyZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q2l0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzMiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNvdW50cnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc0IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdGF0ZSAoT25seSBVUyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc1IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5aSVA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc2IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5BbW91bnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc3IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdWJtaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc4IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdGVwIDE6ICRBUFBfTkFNRSAtIFBheW1lbnQgRm9ybTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzkiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkVNYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q2xpY2sgIkNoZWNrIG91dCB3aXRoIFBheXBhbCIgdG8gcGF5LiZsdDtici8mZ3Q7IFBheXBhbCBhY2NlcHRzIFZJU0EsIE1hc3RlckNhcmQsIERpc2NvdmVyIG9yIEFtZXJpY2FuIEV4cHJlc3MuICZsdDtici8mZ3Q7SXQgZG9lcyBub3QgcmVxdWlyZSB0byBzaWduIHVwIHdpdGggUGF5cGFsLiAmbHQ7YnIvJmd0O0NpdGl6ZW5zIGZyb20gR2VybWFueSBjYW4gYWxzbyBwYXkgd2l0aCBkaXJlY3QgZGViaXQgKFBlciBMYXN0c2NocmlmdC1FaW56dWcpLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODEiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlRoYW5rIHlvdSBmb3IgYnV5aW5nICRBUFBfTkFNRS4gJmx0O2JyLyZndDsgJmx0O2JyLyZndDsgQXMgc29vbiBhcyB3ZSByZWNlaXZlZCB0aGUgcGF5bWVudCB5b3VyIGFjY291bnQgd2lsbCBiZSB1cGRhdGVkLiZsdDtici8mZ3Q7IFlvdSB3aWxsIHJlY2VpdmUgYW4gRU1haWwgd2l0aCB5b3VyIGludm9pY2UgYXMgUERGLiZsdDtici8mZ3Q7WW91IGNhbiBhbHNvIGNoZWNrIGN1cnJlbnQgYW5kIHBhc3QgdHJhbnNhY3Rpb25zIGluIHlvdXIgcHJvZmlsZSBzZXR0aW5ncy4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7Jmx0O2JyLyZndDtZb3UgY2FuIGNsb3NlIHRoaXMgYnJvd3NlciB3aW5kb3cvdGFiIG5vdyBhbmQgcmV0dXJuIHRvICRBUFBfTkFNRS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgyIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdWJtaXQgYW5kIEJ1eSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgzIiBuYW1lPSJwYXltZW50LWZyb20iPgorICAgIDx2YWx1ZT5DbGljayBhbmQgQnV5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODQiIG5hbWU9InBheW1lbnQtZnJvbSI+CisgICAgPHZhbHVlPlN0ZXAgMzogJEFQUF9OQU1FIFBheW1lbnQgLSBDaGVjayBvcmRlciBhbmQgYnV5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODUiIG5hbWU9InBheW1lbnQtZnJvbSI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg2IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5QYXltZW50IHJlY2VpdmVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODciIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPkhpLDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODgiIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPldlIGhhdmUgcmVjZWl2ZWQgeW91ciBwYXltZW50LiBZb3VyIHVzZXIgcHJvZmlsZSBpcyB1cGRhdGVkIG5vdy4gU2VlIGF0dGFjaGVkIHlvdXIgSW52b2ljZS4gVGhlIEludm9pY2UgYW5kIGFsbCBwYXN0IEludm9pY2UgY2FuIGFsc28gYmUgZG93bmxvYWRlZCBpbiB5b3VyIHVzZXIgcHJvZmlsZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg5IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5UaGFuayB5b3UgZm9yIHVzaW5nICRBUFBfTkFNRSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkwIiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5QYXltZW50IFJlY2VpdmVkICRBUFBfTkFNRSAtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MSIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPlBheW1lbnQgYW5kIFRyYW5zYWN0aW9uIFN0YXR1czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTIiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5UcmFuc2NhdGlvbiBIYXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MyIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPk1pbnV0ZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk0IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+TW9udGhzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NSIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPkVVUjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTYiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TdGF0dXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk3IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+SW52b2ljZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTgiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk5IiBuYW1lPSJlcnJvci1saWNlbnNlLWZsYXQiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0byBidXkgYSB2b2x1bWUgZmxhdHJhdGUgdG8gYmUgYWJsZSB0byBzZW5kIGludml0YXRpb25zIG9yIGNyZWF0ZSBtZWV0aW5ncyB2aWEgdGhlIGNhbGVuZGFyLiBXaXRoIFBheS1wZXItbWludXRlIGl0IGlzIG9ubHkgcG9zc2libGUgZm9yIHlvdSB0byBhY2Nlc3MgJEFQUF9OQU1FLiBZb3UgY2Fubm90IGFsbG93IDN0aCBQYXJ0aWVzIHRvIGFjY2VzcyBhIE1lZXRpbmcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDAiIG5hbWU9ImVycm9yIHVzZXIiPgorICAgIDx2YWx1ZT5UaGlzIEVtYWlsIGlzIGFscmVhZHkgdXNlZCBieSBhbm90aGVyIFVzZXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDEiIG5hbWU9InJvb20tYWRtaW4iPgorICAgIDx2YWx1ZT5TSVAtU2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwMiIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlRoZSBDb25mZXJlbmNlIE51bWJlciBhbmQgUElOIGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB2aWEgdGhlIE9wZW5YRyBSUEMtR2F0ZXdheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAzIiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+U0lQIE51bWJlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA0IiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+UElOPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDUiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5DbGVhciBvYmplY3RzIG9uIGN1cnJlbnQgc2xpZGUgb25seSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNiIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPk9ubHkgdGhlIFVSTCBlbnRlcmVkIGluIHRoZSBTdGF0dXMgYmFyIGlzIHNlbmQgdG8gcGFydGljaXBhbnRzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TWFrZSBUZWFtLVJvb21zIFtCcmVha291dCBzZXNzaW9uXTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2hvb3NlIHVzZXJzIGZvciBhIG5ldyBUZWFtLVJvb20hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIGNob29zZSB1c2VycyBoZXJlIGFuZCBjcmVhdGUgYSBuZXcgQ29uZmVyZW5jZSBSb29tICgiVGVhbSBSb29tIikgZm9yIHRoZW0uIFRoZSBjaG9zZW4gdXNlcnMgd2lsbCBhdXRvbWF0aWNhbGx5IHN3aXRjaCB0byB0aGUgbmV3IFRlYW0tUm9vbSBvciBnZXQgYSBub3RpZmljYXRpb24uIFRlYW0tUm9vbSBNb2RlcmF0b3JzIHdpbGwgZ2V0IGFkZGl0aW9uYWxseSBhIGxpc3Qgb2YgY3VycmVudCByb29tcyBzbyB0aGF0IHRoZXkgY2FuIHN3aXRjaCB0byBlYWNoIHJvb20gaWYgdGhlcmUgYXJlIGlzIG5lZWQgZm9yIGEgTW9kZXJhdG9yLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VXNlcm5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkxvZ2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJzIGZvciB0aGUgbmV3IFRlYW0tUm9vbTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNyZWF0ZSBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2hvb3NlIGF0IGxlYXN0IG9uZSB1c2VyIGZvciB0aGUgVGVhbS1Sb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+QWRkIHVzZXIgdG8gdGVhbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+UmVtb3ZlIHVzZXIgZnJvbSBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXIgaXMgVGVhbS1Sb29tIE1vZGVyYXRvciAoSGUgaXMgYWJsZSB0byBtYW5hZ2UgVGVhbS1Sb29tcyBhbmQgdXNlcnMgb2YgdGhlIFRlYW0tUm9vbSBjYW4gYXNrIGhpbSB0byBjb21lIGluc2lkZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlJvb210eXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5JZiB5b3UgY2hlY2sgIkZvcmNlIHVzZXIgdG8gc3dpdGNoIHRvIG5ldyBUZWFtLVJvb20iIGFsbCBjaG9zZW4gdXNlcnMgd2lsbCBhdXRvbWF0aWNhbGx5IHN3aXRjaCB0byB0aGUgbmV3bHkgY3JlYXRlZCBUZWFtLVJvb20uIE90aGVyd2lzZSB0aGV5IGdldCBhIG5vdGlmaWNhdGlvbiB3aXRoIGEgYnV0dG9uIHRoYXQgdGhleSAmbHQ7aSZndDtjYW4mbHQ7L2kmZ3Q7IHN3aXRjaCB0byB0aGUgbmV3IHJvb20uIFRlYW0tTW9kZXJhdG9ycyBhbHdheXMgaGF2ZSB0aGUgZnJlZSBjaG9pY2UgdG8gbWFuYWdlIHRoZSBUZWFtLVJvb21zIGFuZCBzd2l0Y2ggYmV0d2VlbiB0aGVtLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TWFuYWdlIFRlYW0tUm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPllvdSBjYW4gc3dpdGNoIGhlcmUgYmV0d2VlbiBhbGwgVGVhbS1Sb29tcyB0aGF0IHlvdSBhcmUgYXNzaWduZWQgYXMgVGVhbS1Sb29tIE1vZGVyYXRvci4gVXNlcnMgaW5zaWRlIHRoZSBUZWFtLVJvb20gY2FuIHNlbmQgeW91IGEgbWVzc2FnZSwgZm9yIGV4YW1wbGUgdG8gYXNrIHlvdSB0byBjb21lIHRvIHRoZWlyIHJvb20gYW5kIGhlbHAgdGhlbS4gWW91IGNhbiBhbHNvIHRlcm1pbmF0ZSB0aGUgVGVhbS1Sb29tIGFuZCBhbGwgVXNlcnMgd2lsbCBiZSBsb2dnZWQgb3V0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Rm9yY2UgdXNlciB0byBzd2l0Y2ggdG8gbmV3IFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q3JlYXRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJzIGF2YWlsYWJsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+QWRkIGEgdXNlciB3aXRoIHRoZSBwbHVzIGZyb20gdGhlIGxlZnQgb3IgcmVtb3ZlIGl0IHdpdGggdGhlIGNyb3NzIGZyb20gdGhlIHJpZ2h0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MSkgVGVhbS1Sb29tIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4yKSBBZGQgdXNlcnMgdG8gdGhlIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVhbS1Sb29tIE5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2hhbmdlIHRvIHRoZSBSb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Td2l0Y2ggdG8gdGhpcyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlcm1pbmF0ZSBUZWFtLVJvb20gYW5kIGxvZ291dCBhbGwgVXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk5ldyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGEgbmV3IFRlYW0tUm9vbSBhdmFpbGFibGUgZm9yIHlvdS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlN3aXRjaCB0byBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW0tUm9vbSBBY3Rpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIHJlLW9wZW4gdGhpcyB3aW5kb3cgdmlhIHRoZSBtYWluIG1lbnUgaW4gdGhlICJBY3Rpb25zIiBzZWN0aW9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U2VuZCBtZXNzYWdlIHRvIFRlYW0tUm9vbSBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk5ldyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGEgbmV3IFRlYW0tUm9vbSBhdmFpbGFibGUuIFlvdSBjYW4gc3dpdGNoIHRvIHRoYXQgUm9vbS4gVGVhbS1Sb29tcyBhcmUgbGlrZSAiV29ya2dyb3VwcyIgd2l0aCBhZGRpdGlvbmFsbHkgcG9zc2liaWxpdGllcyB0byBhc2sgdGhlIFRlYW0tUm9vbSBNb2RlcmF0b3IgZm9yIGhlbHAuIFlvdXIgVGVhbS1Sb29tcyBhcmUgYWxzbyBhdmFpbGFibGUgaW4gdGhlICJNeSBNZWV0aW5ncyIgc2VjdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlN3aXRjaCB0byBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNyZWF0ZWQgYnk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb20gbmFtZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0OSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoaXMgV2luZG93IHdpbGwgc3RheSBvcGVuIGV2ZW4gaWYgeW91IGxlYXZlIHRoZSByb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VXNlcnMgZm9yIHRoaXMgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4zKSBPdGhlciBUZWFtLVJvb21zIHRoYXQgeW91IGNvdWxkIHN3aXRjaCB0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U2VuZCBhIG1lc3NhZ2UgdG8gdGhlIFRlYW0tUm9vbSBNb2RlcmF0b3JzLiBGb3IgZXhhbXBsZSBpZiB5b3UgbmVlZCBoZWxwIGluIE1vZGVyYXRpbmcgdGhlIFJvb20gb3IgaWYgeW91IGhhdmUgYSBxdWVzdGlvbiBhYm91dCB0aGUgdG9waWMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5TZW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4yKSBVc2VycyB0aGF0IGFyZSBpbnZpdGVkIHRvIHRoaXMgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5JcyBUZWFtLVJvb20gTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVzZSBhcmUgYWxsIHVzZXJzIHRoYXQgdGhlIG1vZGVyYXRvciBoYXMgaW52aXRlZCB0byB0aGlzIFRlYW0tUm9vbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1NyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIFRlYW0tTW9kZXJhdG9yIGxvZ2dlZCBpbiBhdCB0aGUgbW9tZW50ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGEgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+UGxlYXNlIGhlbHAgdXMsIHdlIGhhdmUgYSBwcm9ibGVtIGluIG91ciBUZWFtLVJvb20hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5BIHVzZXIgZnJvbSBhIFRlYW0tUm9vbSByZXF1ZXN0cyB5b3VyIGhlbHAuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb20gcmVxdWVzdCBmb3IgaGVscDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TWVzc2FnZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2MyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkZyb206PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGN1cnJlbnRseSBub3QgaW4gYW55IFRlYW0tUm9vbS4gQnV0IHlvdSBjYW4gc3dpdGNoIGhlcmUgdG8gYWxsIFRlYW0tUm9vbXMgdGhhdCB5b3UgaGF2ZSBhY2Nlc3MgdG8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjUiIG5hbWU9ImJhY2t1cENvbnRlbnQiPgorICAgIDx2YWx1ZT5CYWNrdXAgdGhlIFN5c3RlbS4gVGhlIEJhY2t1cCBpbmNsdWRlcyBhbGwgVXNlciBnZW5lcmF0ZWQgZGF0YS4gVGhlIGNvbmZpZ3VyYXRpb24gaXMgbm90IGluY2x1ZGVkIGFzIHdlbGwgYXMgdGhlIGxhbmd1YWdlIGxhYmVscy4gQmVjYXVzZSB0aG9zZSB2YWx1ZXMgYXJlIGltcG9ydGVkIHdpdGggdGhlIFN5c3RlbSBJbnN0YWxsZXIuIFRvIHVwZGF0ZSB5b3VyIFN5c3RlbSwgZXhwb3J0IHlvdXIgb2xkIHN5c3RlbSAoMSkgcmUtaW5zdGFsbCBpbnRvIGEgbmV3IGRhdGFiYXNlIHRoZSBuZXcgcGFja2FnZSAoMikgYW5kIGltcG9ydCB0aGUgQmFja3VwIGZpbGUgYWdhaW4gKDMpLiBUaGUgQmFja3VwIHNob3VsZCBiZSBpbXBvcnRlZCBiZWZvcmUgZ2VuZXJhdGluZyBkYXRhIGluIHRoZSBuZXdseSBpbnN0YWxsZWQgc3lzdGVtLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY2IiBuYW1lPSJiYWNrdXBDb250ZW50Ij4KKyAgICA8dmFsdWU+U3lzdGVtIEJhY2t1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY3IiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT5BbGxvdyB1c2VyIHRvIHNoYXJlIFNjcmVlbi9SZWNvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2OCIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+RGVueSB1c2VyIHRvIHNoYXJlIFNjcmVlbi9SZWNvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2OSIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+VXNlciBpcyBNb2RlcmF0b3IsIGhlIGNhbiBkbyBhbnl0aGluZyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3MCIgbmFtZT0iYXBwbHkgZm9yIHNjcmVlbi9yZWNvcmRpbmciPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIHNoYXJlL3JlY29yZCBzY3JlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzEiIG5hbWU9Im1vZGVyYXRpb24gbWluaSBpY29ucyI+CisgICAgPHZhbHVlPllvdSBhcmUgYWxsb3dlZCB0byBzaGFyZS9yZWNvcmQgc2NyZWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzIiIG5hbWU9Im1vZGVyYXRpb24gbWluaSBpY29ucyI+CisgICAgPHZhbHVlPkFwcGx5IGZvciByaWdodCB0byBzaGFyZS9yZWNvcmQgc2NyZWVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDczIiBuYW1lPSJtb2RlcmF0aW9uIG1pbmkgaWNvbnMgY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPkFsbG93L0RlbnkgcmlnaHQgdG8gc2hhcmUvcmVjb3JkIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3NCIgbmFtZT0ic291bmQgaWNvbiI+CisgICAgPHZhbHVlPlR1cm4gc291bmQgb2ZmPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzUiIG5hbWU9InNvdW5kIGljb24iPgorICAgIDx2YWx1ZT5UdXJuIHNvdW5kIG9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzYiIG5hbWU9InJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5BdWRpbyBvbmx5IHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3NyIgbmFtZT0icm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlR1cm4gdGhpcyBGbGFnIG9uIGFuZCB0aGUgdXNlcnMgd2lsbCBoYXZlIG9ubHkgdGhlIEF1ZGlvLU9wdGlvbiBhbmQgbm8gVmlkZW8gaW4gYSBjb25mZXJlbmNlIHJvb20uIFRoaXMgY2FuIGJ5IGdvb2QgdG8gc2F2ZSBiYW5kd2lkdGguPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzgiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFsbG93IFJlbW90ZSBDb250cm9sIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzkiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkRlbnkgUmVtb3RlIENvbnRyb2wgKER1cmluZyBTY3JlZW4gU2hhcmluZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MCIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QXBwbHkgZm9yIHJpZ2h0IHRvIFJlbW90ZSBDb250cm9sIFNjcmVlbiAoRHVyaW5nIFNjcmVlbiBTaGFyaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgxIiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGFsbG93ZWQgdG8gUmVtb3RlIENvbnRyb2wgU2NyZWVuIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODIiIG5hbWU9ImFwcGx5IGZvciByZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gcmVtb3RlIGNvbnRyb2wgc2NyZWVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgzIiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Vc2VyIGlzIE1vZGVyYXRvciwgaGUgY2FuIGRvIGFueXRoaW5nISBbUmVtb3RlIERlc2t0b3AgQ29udHJvbF08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4NCIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QWxsb3cvRGVueSByaWdodCB0byBSZW1vdGUgQ29udHJvbCBTY3JlZW4gKER1cmluZyBTY3JlZW4gU2hhcmluZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4NSIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+MSkgWW91ciBQQyB0byByZW1vdGUgUEM6IFRvIGNvcHkgYW5kIHBhc3RlIHRleHQgZnJvbSB5b3VyIGNsaXBib2FyZCBpbnRvIHRoZSByZW1vdGUgY29udHJvbGxlZCBzY3JlZW4sIGNsaWNrIG9uIHRoZSBzY3JlZW4sIHRoZW4gcmlnaHQgY2xpY2sgaW4gdGhlIHRleHQgZmllbGQgYW5kIGNob29zZSAiSW5zZXJ0IiBmcm9tIHRoZSBjb250ZXh0IChyaWdodCBjbGljaykgbWVudS4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7MikgRnJvbSByZW1vdGUgUEMgdG8geW91ciBQQzogVG8gY29weSB0ZXh0IGZyb20gdGhlIHJlbW90ZSBQQyB0byB5b3VyIFBDJ3MgY2xpcGJvYXJkLCBoaWdobGlnaHQgdGhlIHRleHQgd2l0aCB0aGUgbW91c2Ugb24gdGhlIHJlbW90ZSBzY3JlZW4sIHRoZW4gcmlnaHQtY2xpY2sgb24gdGhlIHJlbW90ZSBzY3JlZW4gYW5kIGNob29zZSAmbHQ7aSZndDtDb3B5IGhpZ2hsaWdodGVkIHRleHQmbHQ7L2kmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODYiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNvcHkgYW5kIFBhc3RlIHRleHQgZnJvbSB5b3VyIFBDIHRvIHJlbW90ZSBQQyBhbmQgdmljZS12ZXJzYS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4NyIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+Q29weSBoaWdobGlnaHRlZCB0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODgiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkhvdyB0byBjb3B5IG4gcGFzdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4OSIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+UXVhbGl0eSBvZiB0aGUgU2NyZWVuU2hhcmU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTAiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPlZlcnkgaGlnaCBRdWFsaXR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTEiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPkhpZ2ggUXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkyIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5NZWRpdW0gUXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkzIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5Mb3cgUXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk0IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPmVuX1VTPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTUiIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+ZGVfREU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NiIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5LZXlib2FyZDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NyIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5DbG9zZSBXZWJpbmFyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk4IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPlRoZSBXZWJpbmFyIGlzIGFscmVhZHkgY2xvc2VkLCB5b3Ugd2lsbCBiZSByZWRpcmVjdGVkIHRvIHNvbWUgaW50ZXJlc3Rpbmcgb2ZmZXJpbmdzIGluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTkiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+Q2xvc2UgUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAwIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPkV4aXQgVVJMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDEiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+Um9vbSB0ZXJtaW5hdGlvbiBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAyIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPklmIHRoZSByb29tIGlzIGNsb3NlZCB1c2VycyB3aWxsIGJlIHJlZGlyZWN0ZWQgdG8gdGhlIGV4aXQgVVJMLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAzIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkxkYXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA1IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNiIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5Db25maWcgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA3IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkxkYXAgQ29uZmlnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDgiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA5IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkVuYWJsZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JbnNlcnRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTExIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkluc2VydGVkIGJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTIiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+VXBkYXRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEzIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPlVwZGF0ZWQgYnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5UaGUgY29uZmlnIGZpbGVzIGFyZSBpbiB0aGUgZm9sZGVyIHdlYmFwcHMvb3Blbm1lZXRpbmdzL2NvbmYuIFlvdSBuZWVkIHRvIG1hbnVhbGx5IHVwbG9hZCB0aGUgZmlsZXMgdG8gdGhpcyBmb2xkZXIuIENoYW5nZXMgdG8gdGhlIGNvbmZpZyBmaWxlIGFyZSBpbW1lZGlhdGVseSBvbmxpbmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTUiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+Q29uZmlnIGZpbGUgbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE2IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPklmIHlvdSBlbmFibGUgIkFkZCBEb21haW4gdG8gdXNlcm5hbWUiIHRoZSB2YWx1ZSBvZiB0aGUgZmllbGQgImRvbWFpbiIgaXMgYWRkZWQgdG8gZWFjaCBsb2dpbiB0aGF0IHRoZSB1c2VyIGVudGVycyBpbiB0aGUgbG9naW4gYm94LiBUaGlzIGlzIHVzZWZ1bCBpZiB0aGUgTG9naW4gaW4gdGhlIExkYXAgaXMgc3RvcmVkIGluY2x1ZGluZyB0aGUgZG9tYWluIG5hbWUuIEV4YW1wbGU6IFVzZXIgZW50ZXJzICJoYW5zIiBkb21haW4gaXMgc3BlY2lmaWVkIGFzICJsb2NhbGhvc3QuY29tIiwgbG9naW4gdGhhdCBpcyB2ZXJpZmllZCBhZ2FpbnN0IExkYXAgaXM6IGhhbnNAbG9jYWxob3N0LmNvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE3IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkFkZCBEb21haW4gdG8gdXNlcm5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExOCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5Eb21haW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExOSIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5JbnNlcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMCIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5Db3B5IGhpZ2hsaWdodGVkIHRleHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMSIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5SZW1vdGUgQ2xpcGJvYXJkIFRleHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMiIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5TaG93IHJlbW90ZSBDbGlwYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMyIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+RG8gbm90IHNob3cgYWdhaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNCIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+Q29weSB0ZXh0IGhlcmUgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjUiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPllvdSBuZWVkIHRoZSByaWdodCB0byByZW1vdGUgY29udHJvbCAob3IgdGhlIG1vZGVyYXRpb24pIHRvIGNvcHkgYW5kIHBhc3RlIHRleHQgdG8gb3IgZnJvbSB0aGUgcmVtb3RlIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNiIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+RWRpdCBkZWZhdWx0IHNldHRpbmdzIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI3IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5EbyBub3Qgc2hvdyBpbmZvIGJveCBpbiBSZW1vdGUgQ29udHJvbCBhYm91dCBDb3B5IGFuZCBQYXN0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI4IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPlNhdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyOSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5SZW1vdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMSIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkludml0ZSB1c2VyIHRvIGNvbmZlcmVuY2Ugcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMyIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+Q2hvb3NlIGEgY29uZmVyZW5jZSByb29tLiBUaGUgaW52aXRlZCB1c2VyIHdpbGwgZ2V0IGEgbWVzc2FnZSB3aXRoIHlvdXIgbmFtZSBhbmQgYSBsaW5rIHRvIHRoZSByb29tLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMzIiBuYW1lPSJjaGF0IHVzZXIiPgorICAgIDx2YWx1ZT5Db25uZWN0ZWQgc2luY2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzQiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5FbnRlciByb29tIGFmdGVyIHNlbmRpbmcgaW52aXRhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM1IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+SW52aXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzYiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5NZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzciIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGludml0ZSB5b3UgdG8gdGhlIGNvbmZlcmVuY2Ugcm9vbTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzOCIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkludml0ZSBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzkiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5TZW5kIEludml0YXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0MCIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPmRpZCAmbHQ7YiZndDtub3QmbHQ7L2ImZ3Q7IGFjY2VwdCB5b3VyIGludml0YXRpb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDEiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5BY2NlcHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0MiIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkRlbnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0MyIgbmFtZT0idXNlciBwcm9maWxlIj4KKyAgICA8dmFsdWU+VGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0NCIgbmFtZT0iYXBwb2ludG1lbnQgbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+RXZlbnQgRGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ1IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDYiIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPkRlc2NyaXB0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDciIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPkNyZWF0ZWQgYnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0OCIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlRpbWVab25lIE1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0OSIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPkNoZWNrICJUaW1lWm9uZSBNZXNzYWdlIiB0byBnaXZlIHVzZXJzIGEgbWVzc2FnZSBuZXh0IHRpbWUgdGhleSBsb2dpbiB0byB1cGRhdGUgdGhlaXIgcHJvZmlsZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MCIgbmFtZT0idGltZSB6b25lIHVwZGF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+UGxlYXNlIGNoZWNrIHRoZSB0aW1lIHpvbmUgaW4geW91ciB1c2VyIHByb2ZpbGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTEiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPk5ldyAkQVBQX05BTUUgY29uZmVyZW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MiIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGV0YWlsczombHQ7YnIvJmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUzIiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TdGFydDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NCIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RW5kOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU1IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DaGFuZ2VkICRBUFBfTkFNRSBjb25mZXJlbmNlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU2IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Pcmdhbml6ZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTciIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkNhbmNlbGVkICRBUFBfTkFNRSBjb25mZXJlbmNlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU4IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgY29uZmVyZW5jZSBSZW1pbmRlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1OSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkNvbW11bml0eSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYwIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2hvdyBjb250YWN0IGRhdGEgdG8gZXZlcnlib2R5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjEiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5BZGQgZmllbGRzIG9mIGludGVyZXN0IHRoYXQgeW91IG9mZmVyIG9yIHRoYXQgeW91IGFyZSBzZWFyY2hpbmcgdG8gZmluZCBpbnRlcmVzdGluZyBwYXJ0bmVycyBmb3IgYSBjb25mZXJlbmNlLiBDb21tYSBzZXBhcmF0ZSB0aGUgdGVybXMgKGZvciBleGFtcGxlOiBNZWRpY2FsIFNlcnZpY2UsIEhlYWx0aCBhc3N1cmFuY2UsIC4uLik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MiIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk15IG9mZmVyaW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYzIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+TXkgaW50ZXJlc3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjQiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjUiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5UaW1lem9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY2IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+RmllbGRzIG9mIGludGVyZXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjciIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Db250YWN0IGluZm9ybWF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjgiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TaG93IGNvbnRhY3QgZGF0YSB0byBjb250YWN0cyBvbmx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjkiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TaG93IGNvbnRhY3QgZGF0YSB0byBub2JvZHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk15IFByb2ZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkVkaXQgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MiIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlNlYXJjaCB1c2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTczIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+V2F0Y2ggeW91ciBwcm9maWxlIGxpa2Ugb3RoZXIgc2VlIHlvdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc0IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+RWRpdCB5b3VyIHNldHRpbmdzLCBhZGQgeW91ciBpbnRlcmVzdHMgdG8gYmUgZm91bmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlNlYXJjaCBmb3Igb3RoZXIgdXNlcnMgYW5kIGV4dGVuZCB5b3VyIG5ldHdvcms8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NiIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5TZWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NyIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5Vc2VyIG9mZmVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc4IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlVzZXIgbG9va3MgZm9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzkiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+RnJlZXRleHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODEiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+VGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MiIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5PZmZlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MyIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5TZWFyY2hzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODQiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+U2VhcmNocmVzdWx0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODUiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+QWN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg2IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkFkZCB0byBjb250YWN0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg3IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlNlbmQgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg4IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkNvbnRhY3RzIGFuZCBNZXNzYWdlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg5IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlBlbmRpbmcgY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkFjY2VwdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkxIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+RGVueTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkyIiBuYW1lPSJ1c2VyIGNvbnRhY3QgcmVxdWVzdCI+CisgICAgPHZhbHVlPkhpLDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkzIiBuYW1lPSJ1c2VyIGNvbnRhY3QgcmVxdWVzdCI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gYWRkIHlvdSBhcyBjb250YWN0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk0IiBuYW1lPSJ1c2VyIGNvbnRhY3QgcmVxdWVzdCI+CisgICAgPHZhbHVlPkNoZWNrIHlvdXIgY29udGFjdCByZXF1ZXN0cyBpbiAkQVBQX05BTUUgb3IgY2xpY2sgb24gdGhvc2UgbGlua3MgdG8gYWNjZXB0IG9yIGRlbnkgdGhlIHJlcXVlc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NSIgbmFtZT0iYWRkIHVzZXIgY29udGFjdCI+CisgICAgPHZhbHVlPlRoaXMgdXNlciBpcyBhbHJlYWR5IGluIHlvdXIgY29udGFjdCBsaXN0IG9yIGhhcyByZWNlaXZlZCBhbiBpbnZpdGF0aW9uIHRvIHlvdXIgY29udGFjdCBsaXN0IHRoYXQgaXMgbm90IGFuc3dlcmVkIHlldC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NiIgbmFtZT0idXNlciBjb250YWN0IG1haWwiPgorICAgIDx2YWx1ZT5Zb3VyIGNvbnRhY3QgbGlzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+RWRpdCB5b3VyIGNvbnRhY3QgYW5kIG1lc3NhZ2VzLCZsdDtici8mZ3Q7IG1hbmFnZSB5b3VyIHBlbmRpbmcgY29udGFjdHMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTgiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5jb25maXJtZWQgeW91IGFzIGNvbnRhY3QhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTkiIG5hbWU9ImNoYXQgaW5mbyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDAiIG5hbWU9ImNoYXQgbG9nIGljb24iPgorICAgIDx2YWx1ZT5TaG93IC8gQ29weSBjaGF0IGxvZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAxIiBuYW1lPSJjaGF0IGxvZyB3aW5kb3ciPgorICAgIDx2YWx1ZT5DaGF0IExvZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Gcm9tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlN1YmplY3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWVzc2FnZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TmV3IE1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwOCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2xpY2sgdG8gd3JpdGUgYSBuZXcgbWVzc2FnZSB0byBhbnkgb2YgeW91ciBjb250YWN0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Xcml0ZSBuZXcgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjEwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Ubzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3ViamVjdDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMiIgbmFtZT0id2hpdGVib2FyZCBmdWxsLWZpdCI+CisgICAgPHZhbHVlPkVuYWJsZSBmdWxsIGZpdCBhbmQgdGhlIHdoaXRlYm9hcmQgd2lsbCB6b29tIHRoZSB3aG9sZSB3aGl0ZWJvYXJkIHNvIHRoYXQgYWxsJmx0O2JyLyZndDtkb2N1bWVudHMgYXJlIHZpc2libGUgYWNjb3JkaW5nIHRvIGVhY2ggcGFydGljaXBhbnRzIHNjcmVlbiByZXNvbHV0aW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjEzIiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT5LaWNrIHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNCIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBraWNrIHlvdXJzZWxmIG91dCBvZiB0aGUgY29uZmVyZW5jZSByb29tISBJZiB5b3Ugd2FudCB0byBsZWF2ZSBpdCBjbG9zZSB0aGUgYnJvd3NlciBvciB1c2UgdGhlIGV4aXQgYnV0dG9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE1IiBuYW1lPSJraWNrLXVzZXIiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGlzY29ubmVjdCB0aGlzIHVzZXIgZnJvbSB0aGlzIGNvbmZlcmVuY2Ugcm9vbT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNiIgbmFtZT0ia2ljay11c2VyIj4KKyAgICA8dmFsdWU+Q29uZmlybSBhY3Rpb24gLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTciIG5hbWU9ImtpY2stdXNlciI+CisgICAgPHZhbHVlPllvdSBjYW5ub3Qga2ljayBhIFN1cGVyLU1vZGVyYXRvciBvdXQgb2YgYSByb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Cb29rIGNvbmZlcmVuY2Ugcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TdGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5FbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIGFuIG9wdGlvbmFsIHJlcXVlc3QgZm9yIG1lZXRpbmcgdG8gdGhlIG1lc3NhZ2UgYW5kIGNyZWF0ZSBhIGNvbmZlcmVuY2Ugcm9vbS4gVGhlIEV2ZW50IGlzIHRoZW4gY29waWVkIGluIHRoZSBjYWxlbmRhciBvZiBldmVyeSBwYXJ0aWNpcGFudC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+SW5ib3g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UcmFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGlzIGlzIHlvdSEgWW91IGNhbm5vdCBhZGQgeW91cnNlbGYgYXMgeW91ciBvd24gY29udGFjdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoZSB1c2VyIGlzIGFscmVhZHkgZGVuaWVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VGhlIHVzZXIgaXMgYWxyZWFkeSBhcHByb3ZlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyOCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoaXMgdXNlciBjb250YWN0IGhhc2ggaXMgaW52YWxpZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyOSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlVzZXIgYWRkZWQgdG8gY29udGFjdCBsaXN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMwIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VXNlciBkZW5pZWQgYXMgY29udGFjdCBhbmQgcmVtb3ZlZCBmcm9tIHBlbmRpbmcgY29udGFjdCBsaXN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMxIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgbm8gc3VjaCBjb250YWN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMyIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+V291bGQgeW91IHJlYWxseSBsaWtlIHRvIHJlbW92ZSB0aGF0IGNvbnRhY3Q/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzMiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Db25maXJtIGNvbnRhY3QgcmVtb3ZhbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM0IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+RGVsZXRlIGNvbnRhY3QgZnJvbSBsaXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzUiIG5hbWU9InVzZXIgcHJvZmlsZSI+CisgICAgPHZhbHVlPlVzZXIgUHJvZmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM2IiBuYW1lPSJ1c2VyIHByb2ZpbGUiPgorICAgIDx2YWx1ZT5TaG93IHVzZXIgcHJvZmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM3IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5NZXNzYWdlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzOSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VsZWN0IGFsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWxlY3Qgbm9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWxlY3QgdW5yZWFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbGVjdCByZWFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1vdmUgdG8gZm9sZGVyIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgbmV3IGZvbGRlciAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGVsZXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDYiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRlbGV0ZWQgbWFpbHMgYXJlIHN0aWxsIGluIHlvdXIgdHJhc2ggZm9sZGVyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ3IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5NYXJrIHVucmVhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5NYXJrIHJlYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0OSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QW5zd2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTAiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFuc3dlciBldmVyeWJvZHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Rm9yd2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BY3Rpb25zIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUzIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+U2VuZCBwcml2YXRlIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Tm90aGluZyBzZWxlY3RlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TW92ZSB0byBJbmJveDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU2IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EZWxldGUgKGZpbmFsKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU3IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGlzIGFjdGlvbiBjYW5ub3QgYmUgdW5kb25lITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgZm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZCBmb2xkZXJzIGFuZCBvcmdhbml6ZSB5b3VyIG1lc3NhZ2VzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgZm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+RGVsZXRlIGZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBkZWxldGUgdGhpcyBmb2xkZXIsIHRoZXJlIGFyZSBzdGlsbCBtZXNzYWdlcyBpbnNpZGUhIERlbGV0ZSBmaXJzdCB0aGUgbWVzc2FnZXMgb3IgbW92ZSB0aGVtIHRvIGFub3RoZXIgZm9sZGVyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+RWRpdCBuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSBmb2xkZXIiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgZm9sZGVyPyBUaGVyZSBpcyBubyB3YXkgdG8gdW5kbyB0aGF0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY2IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+WW91ciByZXF1ZXN0IHdhcyBzZW5kIHRvIHRoZSB1c2VyLiBUaGUgdXNlciB3aWxsIHJlY2VpdmUgYSBub3RpZmljYXRpb24gdG8gYWNjZXB0IG9yIGRlbnkgeW91ciByZXF1ZXN0LiBPbmx5IGFjY2VwdGVkIHJlcXVlc3RzIGFyZSBpbiB5b3VyIGNvbnRhY3QgbGlzdCBvZiBjb3Vyc2UhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjciIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5NZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjgiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+VGhlIHVzZXIgZG9lcyBub3Qgc2hhcmUgaGlzIHBlcnNvbmFsIGNvbnRhY3QgZGF0YS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2OSIgbmFtZT0idXNlciB2aWV3IHByb2ZpbGUiPgorICAgIDx2YWx1ZT5UaGUgdXNlciBkb2VzIHNoYXJlIGhpcyBwZXJzb25hbCBjb250YWN0IGRhdGEgb25seSB0byBjb250YWN0cy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3MCIgbmFtZT0idXNlciB2aWV3IHByb2ZpbGUiPgorICAgIDx2YWx1ZT5BZGRyZXNzICZhbXA7IFBob25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzEiIG5hbWU9ImVycm9yIGNvZGUiPgorICAgIDx2YWx1ZT5Zb3UgaW52aXRhdGlvbiBjb2RlIGlzIG5vIHZhbGlkLCB0aGUgY29kZSBpcyBvbmx5IHZhbGlkIGR1cmluZyB0aGlzIHNwZWNpZmljIGRhdGUgYW5kIHRpbWU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzIiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5UaGlzIGV2ZW50IGlzIGNvbm5lY3RlZCB0byBzZXZlcmFsIGNhbGVuZGFycyBvZiBvdGhlciB1c2Vycy4gWW91ciBjaGFuZ2Ugd2lsbCBhbHNvIHVwZGF0ZSB0aGVpciBjYWxlbmRhci4gV291bGQgeW91IHJlYWxseSBsaWtlIHRvIHVwZGF0ZSB0aGUgZXZlbnQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzMiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Db25maXJtIHVwZGF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc0IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+QWxsb3cgY29udGFjdCB0byBzZWUgbXkgY2FsZW5kYXIgKHZpZXcgb25seSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkRvIG5vdCBzaGFyZSBjYWxlbmRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc2IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+Q2FsZW5kYXIgb2YgY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPllvdXIgY29udGFjdHMgbmVlZCB0byBhcHByb3ZlIHlvdSBmaXJzdCB0byBiZSBhYmxlIHRvIHNlZSB0aGVpciBjYWxlbmRhci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3OCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPllvdSBjYW5ub3Qgc3RvcmUgb3IgZGVsZXRlIGV2ZW50cyBmcm9tIG90aGVyIGNhbGVuZGFycyB0aGVuIHlvdXIgb3duITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc5IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+U2hvdyBteSBvd24gY2FsZW5kYXIgYWdhaW4hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODAiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5UaGlzIGV2ZW50IGlzIGNvbm5lY3RlZCB0byBzZXZlcmFsIGNhbGVuZGFycyBvZiBvdGhlciB1c2Vycy4gWW91ciBhY3Rpb24gd2lsbCBhbHNvIGRlbGV0ZSB0aGUgZXZlbnQgZnJvbSB0aGVpciBjYWxlbmRhci4gV291bGQgeW91IHJlYWxseSBsaWtlIHRvIGRlbGV0ZSB0aGUgZXZlbnQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODEiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Db25maXJtIGFjdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgyIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RW50ZXIgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgzIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QWNjZXNzIHRoZSBjb25mZXJlbmNlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgYSBjb25mZXJlbmNlIHJvb20gYW5kIGV2ZW50IGJvb2tlZCB3aXRoIHRoaXMgcHJpdmF0ZSBtZXNzYWdlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg1IiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgdG8gc3RvcmUgdGhlIGV2ZW50IGZpcnN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg2IiBuYW1lPSJhY2Nlc3Mgcm9vbXMgZXJyb3IiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBzdWNoIHJvb20gYXZhaWxhYmxlLiBUaGUgZXZlbnQgaW4gdGhlIGNhbGVuZGFyIGFuZCBjb25uZWN0ZWQgcm9vbSBpcyBhbHJlYWR5IGRlbGV0ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODciIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPkNob29zZSB5b3VyIG5pY2tuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODgiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPkZpcnN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg5IiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5MYXN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkwIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5FbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkxIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5PazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkyIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5NaW5pbXVtIGxlbmd0aCA0IGNoYXJzISBGb3IgYm90aCwgZmlyc3RuYW1lIGFuZCBsYXN0bmFtZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MyIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGEgdmFsaWQgZW1haWwhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTQiIG5hbWU9ImF1dGggZnJvbSI+CisgICAgPHZhbHVlPkZhY2Vib29rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTUiIG5hbWU9ImF1dGggZm9ybSI+CisgICAgPHZhbHVlPkxvZ2luIHdpdGggeW91ciBGYWNlYm9vayBhY2NvdW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTYiIG5hbWU9InZpZXcgcHJvZmlsZSI+CisgICAgPHZhbHVlPk1lbWJlciBzaW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk3IiBuYW1lPSJkaXJlY3QgbG9naW4gbWVzc2FnZSI+CisgICAgPHZhbHVlPllvdSd2ZSBsb2dnZWQgd2l0aCB5b3VyIEZhY2Vib29rIGFjY291bnQuIFlvdSBzaG91bGQgdXBkYXRlIHlvdXIgcHJvZmlsZSB3aXRoIHRoZSBjb3JyZWN0IGVtYWlsLiBPdGhlcndpc2UgeW91IHdpbGwgbm90IHJlY2VpdmUgaW52aXRhdGlvbnMgYW5kIHByaXZhdGUgbWVzc2FnZXMgZnJvbSBvdGhlciB1c2Vycy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5OCIgbmFtZT0iZGlyZWN0IGxvZ2luIG1lc3NhZ2UgaGVhZGVyIj4KKyAgICA8dmFsdWU+TWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk5IiBuYW1lPSJkaXJlY3QgbG9naW4gbWVzc2FnZSBjaGVja2JveCBjb250cm9sIj4KKyAgICA8dmFsdWU+RG8gbm90IHNob3cgdXBkYXRlIHByb2ZpbGUgbWVzc2FnZSBhZ2FpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAwIiBuYW1lPSJwcm9maWxlIHNldHRpbmdzIGJ1dHRvbiI+CisgICAgPHZhbHVlPm1vcmUgZGlzcGxheSBvcHRpb25zIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5OZXcgcHJpdmF0ZSBtZXNzYWdlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DbGljayBoZXJlIHRvIHZpc2l0IHlvdXIgcHJvZmlsZSB0byBzZWUgdGhlIGZ1bGwgbWVzc2FnZSAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+UmVwbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwNCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+Um9vbXMgYW5kIGNoYXRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDUiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPk15IHJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDYiIG5hbWU9Im15IHJvb21zIj4KKyAgICA8dmFsdWU+TXkgY29uZmVyZW5jZSByb29tIChmb3IgMS0xNiB1c2Vycyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwNyIgbmFtZT0ibXkgcm9vbXMiPgorICAgIDx2YWx1ZT5NeSB3ZWJpbmFyIHJvb20gKGZvciAxLTEyMCB1c2Vycyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwOCIgbmFtZT0icm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPk93bmVyIElkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDkiIG5hbWU9ImxvZ2luIGVycm9yIj4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGEgcGFzc3dvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMCIgbmFtZT0ibG9naW4gZXJyb3IiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCBhbiBhY2NvdW50IHdpdGggVXNlci1MZXZlbCBVc2VyLCBNb2RlcmF0b3Igb3IgQWRtaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMSIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPldlYi1TZXJ2aWNlIChvbmx5IGFjY2VzcyB2aWEgU09BUCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMiIgbmFtZT0idXBsb2FkIGZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5EbyBkaXJlY3RseSBsb2FkIHRvIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMyIgbmFtZT0id2hpdGVib2FyZCBjbG9zZSBjb25maXJtYXRpb24iPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gcmVtb3ZlIHRoaXMgd2hpdGVib2FyZD8gVGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxNCIgbmFtZT0id2hpdGVib2FyZCBsb2FkIFdNTCI+CisgICAgPHZhbHVlPkxvYWQgdG8gd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE1IiBuYW1lPSJyZWNvcmRpbmcgZmxhZyI+CisgICAgPHZhbHVlPkRvIG5vdCBmb3JnZXQgc3RhcnQgcmVjb3JkaW5nISBPbmUgdXNlciBwZXIgcm9vbSBhbHdheXMgbmVlZHMgdG8gc3RhcnQgaXQgdG8gaGF2ZSB0aGUgcmVjb3JkaW5nIGFmdGVyd2FyZHMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTYiIG5hbWU9InJlY29yZGluZyBmbGFnIj4KKyAgICA8dmFsdWU+U3RhcnQgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTciIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+QXJyb3c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxOCIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT5DaXJjbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxOSIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT5MaW5lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjAiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+U3F1YXJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjEiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+VHJpYW5nbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyMiIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlRleHQvTm90ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIzIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+Q2xpcGFydHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkRyYXcgRnJlZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI1IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+U2VsZWN0L01vdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNiIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkRyYXcgU2hhcGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNyIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkN1dC9Nb3ZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjgiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5ab29tIEluL091dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI5IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+UHJpbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlVuZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMSIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlRyYXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzIiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5BZGQgR3JpZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMzIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+U2hhcmUgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM0IiBuYW1lPSJpY29uIHN1Ym1lbnUiPgorICAgIDx2YWx1ZT5TZWxlY3QgU2hhcGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNSIgbmFtZT0iaWNvbiBzdWJtZW51Ij4KKyAgICA8dmFsdWU+U2VsZWN0IENsaXBhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNiIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkNvcHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNyIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkN1dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM4IiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+UGFzdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzOSIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkRlbGV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQwIiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGUgY29tcGxldGUgY29udGVudCBvbiB0aGUgd2hpdGVib2FyZD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MSIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkxvYWQgZGlyZWN0bHkgdG8gd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQyIiBuYW1lPSJhdHRlbmRlZXMiPgorICAgIDx2YWx1ZT5BdHRlbmRlZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MyIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+QXR0ZW5kZWUgTWFuYWdlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ0IiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5QcmVzZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDUiIG5hbWU9ImF0ZW5kZWUgbWFuYWdlciI+CisgICAgPHZhbHVlPlJlbW90ZSBDb250cm9sbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ2IiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5FamVjdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ3IiBuYW1lPSJjaGF0Ij4KKyAgICA8dmFsdWU+Q2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ4IiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5JbnZpdGUgQXR0ZW5kZWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDkiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPkJ5IEVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTAiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPlVzZXIgaXMgbW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTEiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPlVzZXIgaGFzIHdlYmNhbSBzd2l0Y2hlZCBvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUyIiBuYW1lPSJmaWxsX29wdGlvbiI+CisgICAgPHZhbHVlPkRlYWN0aXZhdGUgc2hhcGUgZmlsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUzIiBuYW1lPSJmaWxsX29wdGlvbiI+CisgICAgPHZhbHVlPkFjdGl2YXRlIHNoYXBlIGZpbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlNuYXAgdG8gR3JpZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU1IiBuYW1lPSJhbGxvd19yZWNvcmRpbmciPgorICAgIDx2YWx1ZT5BbGxvdyByZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NiIgbmFtZT0id2FpdF9mb3JfcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+V2FpdCBmb3IgcmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTciIG5hbWU9ImhpZGVfdG9wX2JhciI+CisgICAgPHZhbHVlPkhpZGUgdG9wYmFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTgiIG5hbWU9ImZpbGVFeHBsb3JlciI+CisgICAgPHZhbHVlPlBsYXkgdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1OSIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhlIGNvbnRlbnQgb24gdGhlIGN1cnJlbnQgc2xpZGU/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjAiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPkFjY2VwdCBhbmQgZ3JhbnQgdXNlciByaWdodDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYxIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT5EZW55PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjIiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPkk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2MyIgbmFtZT0iYWN0aXZpdHlfd2luZG93Ij4KKyAgICA8dmFsdWU+QWN0aXZpdGllcyBhbmQgYWN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY0IiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+UmVtb3ZlIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NSIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPllvdSBuZWVkIHRoZSBtb2RlcmF0aW9uIG9yIHRoZSByaWdodCB0byBkcmF3IG9uIHRoZSB3aGl0ZWJvYXJkIHRvIHJlbW92ZSB3aGl0ZWJvYXJkcyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NiIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPk5vdCBhbGxvd2VkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjciIG5hbWU9InVzZXJfbGVmdF9hY3RfbXNnIj4KKyAgICA8dmFsdWU+aGFzIGxlZnQgdGhlIHJvb20uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjgiIG5hbWU9ImNsaXBhcnQgaWNvbnMiPgorICAgIDx2YWx1ZT5NYXRoIGljb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjkiIG5hbWU9ImNsaXBhcnQgaWNvbnMiPgorICAgIDx2YWx1ZT5ObyBjYXRlZ29yeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzcwIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5Db2xvci1TdHlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzcxIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5RdWFsaXR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzIiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPkRvbWFpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzczIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT52aXNpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc0IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5yZWRvcmFuZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+bWVkaXVtc2VhZ3JlZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NiIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+c3RlZWxibHVlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzciIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPmxpZ2h0c3RlZWxibHVlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzgiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPmdvbGRlbnJlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc5IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5zaWx2ZXJncmF5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODAiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnVzZXJkZWZpbmVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODEiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPmJlc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4MiIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+dXBsb2FkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODMiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPm1lZGl1bTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg0IiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODUiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODYiIG5hbWU9ImdpdmUgZXhjbHVzaXZlIGF1ZGlvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIG9mIG90aGVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg3IiBuYW1lPSJtdXRlIHNlbGYgbWVzc2FnZSI+CisgICAgPHZhbHVlPllvdSBhcmUgZ2xvYmFsbHkgbXV0ZWQgYnkgdGhlIG1vZGVyYXRvci4gWW91IGNhbm5vdCB1bm11dGUgeW91cnNlbGYhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODgiIG5hbWU9Im11dGUgc2VsZiBjb25maXJtIG1lc3NhZ2UgdGl0bGUiPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgZ2xvYmFsbHk/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODkiIG5hbWU9Im11dGUgc2VsZiBjb25maXJtIG1lc3NhZ2UgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBtdXRlIHlvdXJzZWxmIGdsb2JhbGx5PyBObyBvdGhlciB1c2VyIHdpbGwgaGVhciB5b3UgYW55bW9yZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5MCIgbmFtZT0ibXV0ZSBvdGhlcnMgY29uZmlybSBtZXNzYWdlIHRpdGxlIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGxvY2FsbHk/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTEiIG5hbWU9Im11dGUgb3RoZXJzIGNvbmZpcm0gbWVzc2FnZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBtdXRlIHRoaXMgbWljcm9waG9uZT8gWW91IGNhbiBvbmx5IG11dGUgaXQgbG9jYWxseSBvbiB5b3VyIHNjcmVlbi4gSXQgaGFzIG5vIGVmZmVjdCB0byBob3cgb3RoZXIgdXNlcnMgaGVhciB0aGlzIHVzZXIuIE9ubHkgbW9kZXJhdG9ycyBjYW4gdHVybiBpdCBvZmYgZ2xvYmFsbHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTIiIG5hbWU9Im11dGUgb3RoZXJzIGNvbmZpcm0gbWVzc2FnZSB0aXRsZSI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBvZmYgZ2xvYmFsbHk/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTMiIG5hbWU9Im11dGUgb3RoZXJzIG1vZGVyYXRvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIG11dGUgdGhpcyB1c2VyIGdsb2JhbGx5PyBObyBvdGhlciB1c2VyIHdpbGwgaGVhciBoaW0gYW55bW9yZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5NCIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5Zb3VyIHNvdW5kIGlzIG9uLiBDbGljayBoZXJlIHRvIHNlbmQgbW9kZXJhdG9yIG1lc3NhZ2UgdG8gbXV0ZSB5b3VyIG1pY3JvcGhvbmUgZ2xvYmFsbHkgKGluIHRoZSBjb21wbGV0ZSBjb25mZXJlbmNlIHJvb20pIG9mZiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5NSIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5Zb3VyIHNvdW5kIGlzIG9mZi4gQ2xpY2sgaGVyZSB0byBzZW5kIG1vZGVyYXRvciBtZXNzYWdlIHRvIHVubXV0ZSB5b3VyIG1pY3JvcGhvbmUgZ2xvYmFsbHkgKGluIHRoZSBjb21wbGV0ZSBjb25mZXJlbmNlIHJvb20pIG9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk2IiBuYW1lPSJtdXRlIGFwcGx5IHNlbGYgb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdGhhdCB0aGUgbW9kZXJhdG9yIG11dGVzIG15IG1pY3JvcGhvbmUgZ2xvYmFsbHkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTciIG5hbWU9Im11dGUgYXBwbHkgc2VsZiBvZmYgbWVzc2FnZSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdGhhdCB0aGUgbW9kZXJhdG9yIHVubXV0ZXMgbXkgbWljcm9waG9uZSBnbG9iYWxseS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5OCIgbmFtZT0ibXV0ZSBhcHBseSBvZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+d2FudCB0aGF0IHRoZSBtb2RlcmF0b3IgdW5tdXRlcyBoaXMvaGVyIG1pY3JvcGhvbmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTkiIG5hbWU9Im11dGUgYXBwbHkgb2YgbWVzc2FnZSI+CisgICAgPHZhbHVlPndhbnQgdGhhdCB0aGUgbW9kZXJhdG9yIG11dGVzIGhpcy9oZXIgbWljcm9waG9uZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMCIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5Vbm11dGUgbWljcm9waG9uZS4gQ2xpY2sgaGVyZSB0byBtdXRlIGhpcy9oZXIgbWljcm9waG9uZSBnbG9iYWxseSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMSIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUuIENsaWNrIGhlcmUgdG8gdW5tdXRlIGhpcy9oZXIgbWljcm9waG9uZSBnbG9iYWxseSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMiIgbmFtZT0ibXV0ZSBzZWxmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGlzIHVzZXIgaXMgZ2xvYmFsbHkgbXV0ZWQgYnkgdGhlIG1vZGVyYXRvci4gWW91IGNhbm5vdCB1bm11dGUgaGltITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDAzIiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TXV0ZSB5b3VyIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwNCIgbmFtZT0idW5tdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+VW5tdXRlIHlvdXIgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA1IiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDYiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSBtaWNyb3Bob25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDciIG5hbWU9Im11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwOCIgbmFtZT0idW5tdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+VW5tdXRlIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwOSIgbmFtZT0ibXV0ZSBtb2RlcmF0b3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPk9ubHkgbW9kZXJhdG9ycyBjYW4gbXV0ZSBvciB1bm11dGUgYW4gdXNlciBnbG9iYWxseSEgVG8gbXV0ZSB5b3VyIG93biBtaWNyb3Bob25lOiBQbGVhc2UgdXNlIHRoZSBtaWNyb3Bob25lIGljb24gaW4geW91ciB2aWRlbyBwb2QhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTAiIG5hbWU9InBvbGxfbmFtZSI+CisgICAgPHZhbHVlPlBvbGwgTmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDExIiBuYW1lPSJwb2xsX25hbWUiPgorICAgIDx2YWx1ZT5Zb3U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMiIgbmFtZT0iYXJjaGl2ZWRfcG9sbHMiPgorICAgIDx2YWx1ZT5BcmNoaWV2ZWQgUG9sbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMyIgbmFtZT0iYWN0aXZlX3BvbGwiPgorICAgIDx2YWx1ZT5hY3RpdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNCIgbmFtZT0iY2hhcnRfc2ltcGxlIj4KKyAgICA8dmFsdWU+U2ltcGxlIENoYXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTUiIG5hbWU9ImNoYXJ0X3BpZSI+CisgICAgPHZhbHVlPlBpZSBDaGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE2IiBuYW1lPSJzaWduX3VwX3ZhbGlkYXRpb24iPgorICAgIDx2YWx1ZT5QbGVhc2UgZW50ZXIgZW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNyIgbmFtZT0iY2hhdF9ub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5OZXcgbWVzc2FnZShzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE4IiBuYW1lPSJwb2xsX2Nsb3NlIj4KKyAgICA8dmFsdWU+Q2xvc2UgUG9sbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE5IiBuYW1lPSJwb2xsX2Nsb3NlX2NvbmZpcm0iPgorICAgIDx2YWx1ZT5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gY2xvc2UgdGhpcyBQb2xsPyBObyBvbmUgd2lsbCBiZSBhYmxlIHRvIHZvdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMCIgbmFtZT0icG9sbF9kZWxldGUiPgorICAgIDx2YWx1ZT5EZWxldGUgUG9sbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIxIiBuYW1lPSJwb2xsX2RlbGV0ZV9jb25maXJtIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIFBvbGw/IFRoZSByZXN1bHRzIHdpbGwgYmUgZGVsZXRlZCBhcyB3ZWxsLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIyIiBuYW1lPSJsYW5ndWFnZV9jb2RlIj4KKyAgICA8dmFsdWU+TGFuZ3VhZ2UgSVNPIENvZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMyIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX3Blcm1pc3Npb24iPgorICAgIDx2YWx1ZT5BbGxvdy9EZW55IHJpZ2h0IHRvIGdpdmUgZXhjbHVzaXZlIGF1ZGlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI0IiBuYW1lPSJhbGxvd19leGNsdXNpdmVfYXVkaW9fcGVybWlzc2lvbiI+CisgICAgPHZhbHVlPkFsbG93IHVzZXIgdG8gZ2l2ZSBleGNsdXNpdmUgYXVkaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNSIgbmFtZT0iZGVueV9leGNsdXNpdmVfYXVkaW9fcGVybWlzc2lvbiI+CisgICAgPHZhbHVlPkRlbnkgdXNlciB0byBnaXZlIGV4Y2x1c2l2ZSBhdWRpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI2IiBuYW1lPSJleGNsX2F1ZGlvIGFwcGx5IHNlbGYgb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gZ2V0IGEgcGVybWlzc2lvbiBmb3IgZXhjbHVzaXZlIGF1ZGlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI3IiBuYW1lPSJleGNsX2F1ZGlvIGFwcGx5IG9mIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53YW50IHRoYXQgdGhlIG1vZGVyYXRvciBnaXZlcyBtZSBhIHBlcm1pc3Npb24gZm9yIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyOCIgbmFtZT0iZXhjbF9hdWRpbyBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5HaXZlIGEgcGVybWlzc2lvbiBmb3IgZXhjbHVzaXZlIGF1ZGlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI5IiBuYW1lPSJjYW1fcmVzb2x1dGlvbiI+CisgICAgPHZhbHVlPkNhbSByZXNvbHV0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzAiIG5hbWU9ImNhbV9yZXNvbHV0aW9uX2luZm8iPgorICAgIDx2YWx1ZT5DaGFuZ2luZyB0aGUgcmVzb2x1dGlvbiBhZmZlY3RzIGJhbmR3aWR0aCwgYmlnZ2VyIHBpY3R1cmUgbmVlZHMgbW9yZSBiYW5kd2l0aCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzMSIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2Vycm9yIj4KKyAgICA8dmFsdWU+WW91IGRvbid0IGhhdmUgdGhlIHJpZ2h0IHRvIGdpdmUgeW91cnNlbGYgb3Igb3RoZXJzIGV4Y2x1c2l2ZSBhdWRpby4gWW91IG5lZWQgdG8gYXBwbHkgZm9yIHRoZSByaWdodCBmcm9tIHRoZSBtb2RlcmF0b3Igb3IgYXNrIHRoZSBtb2RlcmF0b3IgdG8gZ2l2ZSB5b3UgZXhjbHVzaXZlIGF1ZGlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMyIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fYXNrIj4KKyAgICA8dmFsdWU+SSB3b3VsZCBsaWtlIHRvIGdldCB0aGUgcmlnaHQgZm9yIGV4Y2x1c2l2ZSBhdWRpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMzIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fYWN0aW9uIj4KKyAgICA8dmFsdWU+R2l2ZSBleGNsdXNpdmUgYXVkaW8gdG8gbWUgKGFsdGVybmF0aXZlbHkgY2xpY2sgb24geW91ciB2aWRlbyBwb2Qgb3IgcHJlc3MgRjEyKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM0IiBuYW1lPSJtaWNybyBpcyBvbiI+CisgICAgPHZhbHVlPk1pY3JvcGhvbmUgaXMgb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzUiIG5hbWU9Im1pY3JvIGlzIG9mZiI+CisgICAgPHZhbHVlPk1pY3JvcGhvbmUgaXMgbXV0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNiIgbmFtZT0iaGlkZV9jaGF0Ij4KKyAgICA8dmFsdWU+SGlkZSBjaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzciIG5hbWU9ImhpZGVfYWN0aXZpdGllc19hbmRfYWN0aW9ucyI+CisgICAgPHZhbHVlPkhpZGUgYWN0aXZpdGllczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM4IiBuYW1lPSJoaWRlX2ZpbGVzX2V4cGxvcmVyIj4KKyAgICA8dmFsdWU+SGlkZSBmaWxlcyBleHBsb3JlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM5IiBuYW1lPSJoaWRlX2FjdGlvbnNfbWVudSI+CisgICAgPHZhbHVlPkhpZGUgYWN0aW9ucyBtZW51PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDAiIG5hbWU9ImhpZGVfc2NyZWVuX3NoYXJpbmciPgorICAgIDx2YWx1ZT5IaWRlIHNjcmVlbiBzaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDEiIG5hbWU9ImhpZGVfd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkhpZGUgd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQyIiBuYW1lPSJzaG93IG1pY3JvcGhvbmUgc3RhdHVzIj4KKyAgICA8dmFsdWU+U2hvdyBtaWNybyBzdGF0dXMgaW4gdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MyIgbmFtZT0ibGF5b3V0X29wdGlvbnMiPgorICAgIDx2YWx1ZT5MYXlvdXQgb3B0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ0IiBuYW1lPSJjYWxlbmRhciBuZXcgYnV0dG9uIj4KKyAgICA8dmFsdWU+TmV3IEV2ZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDUiIG5hbWU9ImNhbGVuZGFyIHBhc3N3b3JkIGluZm8gdGV4dCI+CisgICAgPHZhbHVlPlBhc3N3b3JkIHByb3RlY3RlZCBhcmUgdGhlIGxpbmtzIHRvIHRoZSBjb25mZXJlbmNlIHRoYXQgYXJlIHNlbmQgdG8gdGhlIHBhcnRpY2lwZW50cyB3aGVuIHlvdSBzYXZlIHRoZSBjYWxlbmRhciBldmVudCwgbm90IHRoZSByb29tISBUaGF0IG1lYW5zIGlmIHlvdSBzYXZlIHRoZSBldmVudCBtdWx0aXBsZSB0aW1lcyBidXQgd2l0aCBkaWZmZXJlbnQgcGFzc3dvcmRzIGV2ZXJ5IHBhcnRpY2lwZW50IHJlY2VpdmVzIGEgbmV3IGxpbmsgdGhhdCBoYXMgYSBkaWZmZXJlbnQgcGFzc3dvcmQuIEJ1dCBvbGQgbGlua3Mgc3RpbGwgd29yayBvbmNlIHNlbmQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDYiIG5hbWU9ImNhbGVuZGFyIGVkaXQgYnV0dG9uIj4KKyAgICA8dmFsdWU+RWRpdCBkZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDciIG5hbWU9InNpcCBzaG93IGRpYWxlciI+CisgICAgPHZhbHVlPlNob3cgc2lwIGRpYWxlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ4IiBuYW1lPSJzaXAgY2FsbCI+CisgICAgPHZhbHVlPkNhbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0OSIgbmFtZT0iY2FsZW5kYXIgY29udGFjdCBsaXN0Ij4KKyAgICA8dmFsdWU+U2hvdyBjYWxlbmRhciBldmVudHMgb2YgY29udGFjdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUwIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5Zb3VyIGhvbWUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTEiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPlBsYW4geW91ciBtZWV0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUyIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5XYXRjaCByZWNvcmRpbmcgYW5kIGludGVydmlld3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MyIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+Q2hvb3NlIGFuZCBzdGFydCBhIHdlYi1jb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTQiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSB1c2VycyBhbmQgcmlnaHRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTUiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBjb25uZWN0aW9ucyBhbmQga2ljayB1c2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU2IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgdXNlcmdyb3VwczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU3IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgY29uZmVyZW5jZSByb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU4IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2Ugc3lzdGVtIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTkiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBsYWJlbHMgYW5kIHdvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIExEQVAgYW5kIEFEUyBjb25maWd1cmF0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYxIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5FeHBvcnQvSW1wb3J0IFN5c3RlbSBCYWNrdXBzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjIiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCBtb2RlcmF0aW9uIG9yIHRoZSByaWdodCB0byBkcmF3IG9uIHdoaXRlYm9hcmQgdG8gdXBsb2FkLCBhZGQsIGRlbGV0ZSBvciBsb2FkIGZpbGVzIGFuZCBmb2xkZXJzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYzIiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+RWRpdCB0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjQiIG5hbWU9InNhbHV0YXRpb24iPgorICAgIDx2YWx1ZT5Qcm9mPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjUiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UHVibGlzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY2IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlN0YXJ0IFB1Ymxpc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2NyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdG9wIFB1Ymxpc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2OCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5Ib3N0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjkiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UHVibGlzaCBBcHA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5QdWJsaXNoIElkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzEiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UmVkdWNlIHRoZSB3aWR0aCBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtb3ZlIGl0IGxlZnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5SZWR1Y2UgdGhlIGhlaWdodCBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtb3ZlIGl0IGJvdHRvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDczIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHVjZSB0aGUgeCBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtYWtlIGl0IHdpZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzQiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UmVkdWNlIHRoZSB5IG9mIHRoZSBTaGFyaW5nU2NyZWVuIGJlZm9yZSB5b3UgdHJ5IHRvIG1ha2UgaXQgaGlnaGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzUiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+RmlsbCB0aGVzZSBzZXR0aW5ncyBzdHJlYW0geW91ciBzY3JlZW4gZGF0YSB0byAzdGggcGFydHkgcHJvdmlkZXJzIGxpa2UganVzdGluLnR2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzYiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UGxlYXNlIHN0YXJ0IFNjcmVlbiBzaGFyaW5nIHRvIGJlIGFibGUgdG8gcHVibGlzaCBpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc3IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPk1vZGVyYXRvciBwZXJtaXNzaW9uIHJlcXVpcmVkIHRvIHN0YXJ0IHJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc4IiBuYW1lPSJubyByaWdodCBmb3IgZXhjbHVzaXZlIGF1ZGlvIj4KKyAgICA8dmFsdWU+WW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byBhcHBseSBleGNsdXNpdmUgYXVkaW8gdG8gYW55IHBhcnRpY2lwYW50LiBZb3UgbmVlZCBtb2RlcmF0aW9uIHJvbGUgb3IgdGhlIHJpZ2h0IGZvciBleGNsdXNpdmUgYXVkaW8gdG8gbWFrZSBhbnkgbWljcm9waG9uZSBleGNsdXNpdmUgdHVybmVkIG9uLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3OSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+VXBsb2FkIG5ldyBmaWxlIHRvIGZpbGUgZXhwbG9yZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+T3BlbiBuZXcgZGlhbG9nIHdpdGggc2hhcmluZyBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgxIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5BbiBleGlzdGluZyBtb2RlcmF0b3IgbXVzdCBhcHByb3ZlIGl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODIiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkFzayBtb2RlcmF0b3IgdG8gc2hhcmUgeW91ciB3ZWJjYW0vbWljcm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MyIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+R2F0aGVyIGZlZWRiYWNrIGJ5IGNyZWF0aW5nIGEgcG9sbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg0IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5QYXN0IGFuZCBjdXJyZW50IHBvbGwgcmVzdWx0cyBhcyBjaGFydHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Vm90ZSBpZiB0aGVyZSBpcyBhIHBvbGwgZm9yIHRoaXMgY29uZmVyZW5jZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODYiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkVkaXQgY2FtIGFuZCBtaWMgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NyIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Q29uZmlybSBhbmQgbGVhdmUgdGhlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4OCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Q2FsbCBleHRlcm5hbCBwZW9wbGUgdmlhIFZvSVAvU0lQPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODkiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlNlbmQgYW4gZW1haWwgd2l0aCBhIGRpcmVjdCBsaW5rIHRvIHRoaXMgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkwIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5DaGFuZ2UgeW91ciB3aGl0ZWJvYXJkIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTEiIG5hbWU9ImJhY2t1cCBhZG1pbiI+CisgICAgPHZhbHVlPk1heCB1cGxvYWQgc2l6ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkyIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5Bc2sgbW9kZXJhdG9yIHRvIHNoYXJlIHlvdXIgd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkzIiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5TdGFydCBQcml2YXRlIENoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NCIgbmFtZT0iYWxsX3ByaXZhdGVfY2hhdCI+CisgICAgPHZhbHVlPkFsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk1IiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IHN0YXJ0IGEgcHJpdmF0ZSBjaGF0IHdpdGggeW91cnNlbGYuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTYiIG5hbWU9InByaXZhdGUgY2hhdCI+CisgICAgPHZhbHVlPllvdSd2ZSBhbHJlYWR5IHN0YXJ0ZWQgYSBwcml2YXRlIGNoYXQgd2l0aCB0aGlzIHBhcnRpY2lwYW50LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk3IiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcHJpdmF0ZSBjaGF0PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk4IiBuYW1lPSJTZXJ2ZXJzIj4KKyAgICA8dmFsdWU+U2VydmVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk5IiBuYW1lPSJTZXJ2ZXJzIj4KKyAgICA8dmFsdWU+U2VydmVycyBwYXJ0aWNpcGF0aW5nIGluIGNsdXN0ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMCIgbmFtZT0iU2VydmVyIG5hbWUiPgorICAgIDx2YWx1ZT5TZXJ2ZXIgTmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAxIiBuYW1lPSJTZXJ2ZXIgQWRkcmVzcyI+CisgICAgPHZhbHVlPlNlcnZlciBBZGRyZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDIiIG5hbWU9IlNlcnZlciBkZXRhaWxzIj4KKyAgICA8dmFsdWU+U2VydmVyIGRldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMyIgbmFtZT0iU2VuZCBTTVMiPgorICAgIDx2YWx1ZT5TZW5kIFNNUzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA0IiBuYW1lPSJwdWJsaXNoaW5nX21lc3NhZ2UiPgorICAgIDx2YWx1ZT5QdWJsaXNoaW5nLiBVc2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA1IiBuYW1lPSJjbWRfbGluZV9hZG1pbiI+CisgICAgPHZhbHVlPlRvIHNhdmUgdGltZSBhbmQgaW50ZXJuZXQgdHJhZmZpYyB5b3UgY2FuIHVzZSBjb21tYW5kIGxpbmUgYWRtaW4gdG8gYmFja3VwL3Jlc3RvcmUvdXBncmFkZTpcbiAxKSBnbyB0byBPTSBpbnN0YWxsIGRpciAoZm9yIGV4LiAvb3B0L3JlZDUpIFxuIDIpIHN0b3AgT00gKGZvciBleC4gLi9yZWQ1LXNodXRkb3duLnNoKVxuIDMpIC4vYWRtaW4uc2ggLWIgLWZpbGUgfi90b2RheV9vbV9iYWNrdXAuemlwIChjcmVhdGUgYmFja3VwIG9mIGN1cnJlbnQgT00pXG4gNCkgZG93bmxvYWQgYXJjaGl2ZSB3aXRoIG5ldyBPTVxuIDUpIG12IC9vcHQvcmVkNSAvb3B0LnJlZDUuYmFrIChtb3ZlIHdvcmtpbmcgdmVyc2lvbiBvZiBPTSBqdXN0IGluIGNhc2UgOikpXG4gNikgZXh0cmFjdCBkb3dubG9hZGVkIE9NIHRvIHRoZSAvb3B0L3JlZDVcbiA3KSAuL2FkbWluLnNoIC1pIC1maWxlIH4vdG9kYXlfb21fYmFja3VwLnppcCAob3IgJy4vYWRtaW4uc2ggLWkgLWZpbGUgfi90b2RheV9vbV9iYWNrdXAuemlwIC0tZGItdHlwZSBteXNxbCAtLWRiLXVzZXIgb21fdXNlciAtLWRiLXBhc3Mgb21fdXNlcl9wYXNzJyBpbiBjYXNlIG9mIHlvdSBhcmUgdXNpbmcgbm9uLWRlZmF1bHQgREIgKVxuIDgpIHN0YXJ0IE9NXG48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNiIgbmFtZT0icHVibGljX3Jvb21fdG9vbHRpcCI+CisgICAgPHZhbHVlPlJvb21zIGNvbW1vbiB0byBhbGwgdXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA3IiBuYW1lPSJwcml2YXRlX3Jvb21fdG9vbHRpcCI+CisgICAgPHZhbHVlPlJvb21zIGNvbW1vbiB0byB0aGUgY3VycmVudCB1c2VyIGdyb3VwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDgiIG5hbWU9Im15X3Jvb21fdG9vbHRpcCI+CisgICAgPHZhbHVlPlJvb21zIG9mIHRoZSBjdXJyZW50IHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwOSIgbmFtZT0iY3JlYXRlX25ld19yb29tIj4KKyAgICA8dmFsdWU+Q3JlYXRlL01vZGlmeSBhcHBvaW50bWVudCBzcGVjaWFsIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxMCIgbmFtZT0ibXVsdGlwbGVfYWRkcmVzc2VzIj4KKyAgICA8dmFsdWU+WW91IGNhbiBlbnRlciBtdWx0aXBsZSBhZGRyZXNzZXMgaW4gdGhlIGZvcm1hdDogZmlyc3RuYW1lMSBsYXN0bmFtZTEgJmx0O2VtYWlsMSZndDssImZpcnN0bmFtZTIgbGFzdG5hbWUyIiAmbHQ7ZW1haWwyJmd0OywnZmlyc3RuYW1lMyBsYXN0bmFtZTMnICZsdDtlbWFpbDMmZ3Q7LCAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxMSIgbmFtZT0ic3RyZWFtX3ZvbHVtZSI+CisgICAgPHZhbHVlPkFkanVzdCBzdHJlYW0gdm9sdW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTIiIG5hbWU9Im1pY3JvcGhvbmVfdm9sdW1lIj4KKyAgICA8dmFsdWU+QWRqdXN0IG1pY3JvcGhvbmUgdm9sdW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTMiIG5hbWU9ImNoYXRfbW9kZXJhdGVkIj4KKyAgICA8dmFsdWU+SXMgY2hhdCBtb2RlcmF0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNCIgbmFtZT0iY2hhdF9tb2RlcmF0ZWQiPgorICAgIDx2YWx1ZT5BbGxvdyBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTUiIG5hbWU9ImNoYXRfb3BlbmVkIj4KKyAgICA8dmFsdWU+Q2hhdCBwYW5lbCBvcGVuZWQgYnkgZGVmYXVsdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE2IiBuYW1lPSJmaWxlc19vcGVuZWQiPgorICAgIDx2YWx1ZT5GaWxlcyBwYW5lbCBvcGVuZWQgYnkgZGVmYXVsdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE3IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gc2VjdGlvbiBsYXN0cGluZyI+CisgICAgPHZhbHVlPkxhc3QgcGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE4IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gc2VjdGlvbiBsYXN0cGluZyBpbmZvIj4KKyAgICA8dmFsdWU+RXZlcnkgc2xhdmUgc2VuZHMgYSBwaW5nIHRvIHRoZSBtYXN0ZXIgZXZlcnkgMyBzZWNvbmRzIChjb25maWd1cmFibGUpLiBTbGF2ZSBsYXN0UGluZyBtdXN0IGJlIHNtYWxsZXIgdGhlbiAxIG1pbnV0ZSBzbyB0aGF0IHRoZSBtYXN0ZXIgdXNlcyB0aGUgc2xhdmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTkiIG5hbWU9InNlcnZlciBhZG1pbiBwb3J0Ij4KKyAgICA8dmFsdWU+SFRUUCBQb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjAiIG5hbWU9InNlcnZlciBhZG1pbiB1c2VyIj4KKyAgICA8dmFsdWU+VXNlciAoU09BUC1BY2Nlc3MpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjEiIG5hbWU9InNlcnZlciBhZG1pbiBwYXNzd29yZCI+CisgICAgPHZhbHVlPlBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjIiIG5hbWU9InNlcnZlciBhZG1pbiB3ZWJhcHAgcGF0aCI+CisgICAgPHZhbHVlPldlYmFwcCBwYXRoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjMiIG5hbWU9InNlcnZlciBhZG1pbiBwcm90b2NvbCI+CisgICAgPHZhbHVlPlByb3RvY29sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjQiIG5hbWU9InNlcnZlciBhZG1pbiBwaW5nIHJ1bm5pbmciPgorICAgIDx2YWx1ZT5QaW5nIHJ1bm5pbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyNSIgbmFtZT0ic2VydmVyIGFkbWluIGFjdGl2ZSI+CisgICAgPHZhbHVlPkFjdGl2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI2IiBuYW1lPSJnZW5lcmF0ZV9oYXNoIj4KKyAgICA8dmFsdWU+R2VuZXJhdGUgVVJMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjciIG5hbWU9Im5ldHdvcmsgdGVzdGluZyBsaW5rIj4KKyAgICA8dmFsdWU+TmV0d29yayB0ZXN0aW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjgiIG5hbWU9InJvb21fb3B0aW9ucyI+CisgICAgPHZhbHVlPkF1dG8gc2VsZWN0IGludGVydmlldyB2aWRlbyBwb2Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyOSIgbmFtZT0iZm9udF91bmRlcmxpbmUiPgorICAgIDx2YWx1ZT5VbmRlcmxpbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMCIgbmFtZT0iZm9udF9zdHlsZSI+CisgICAgPHZhbHVlPkZvbnQgc3R5bGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMSIgbmFtZT0iYWxsb3dfZm9udF9zdHlsZXMiPgorICAgIDx2YWx1ZT5BbGxvdyBmb250IHN0eWxlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMyIiBuYW1lPSJmb250X2NvbG9yIj4KKyAgICA8dmFsdWU+Rm9udCBjb2xvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMzIiBuYW1lPSJoeXBlcmxpbmsiPgorICAgIDx2YWx1ZT5IeXBlcmxpbms8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNCIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbiI+CisgICAgPHZhbHVlPlNob3cgc2Vzc2lvbiBzdGF0aXN0aWNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzUiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW4iPgorICAgIDx2YWx1ZT5TZXNzaW9uIGRldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNiIgbmFtZT0ic3lzdGVtX2ltcG9ydCI+CisgICAgPHZhbHVlPlN5c3RlbSBpbXBvcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNyIgbmFtZT0iaW5jbHVkZV9pbnRvX2JhY2t1cCI+CisgICAgPHZhbHVlPkluY2x1ZGUgdXBsb2FkZWQgZmlsZXMgYW5kIHJlY29yZGluZ3MgaW4gYmFja3VwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzgiIG5hbWU9InJvb21fYWRtaW5fc2lwIj4KKyAgICA8dmFsdWU+RW5hYmxlIFNJUCB0cmFuc3BvcnQgaW4gdGhlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzOSIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2NvbmZpcm0iPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gcHJvdmlkZSB0aGlzIHVzZXIgYW4gZXhjbHVzaXZlIGF1ZGlvPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTQwIiBuYW1lPSJub190aW1lem9uZSI+CisgICAgPHZhbHVlPlBsZWFzZSBzcGVjaWZ5IHlvdXIgdGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU0NSIgbmFtZT0iY29udGVudF9pc19zYXZpbmciPgorICAgIDx2YWx1ZT5Db250ZW50IGlzIFNhdmluZywgUGxlYXNlIHdhaXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+Cis8L2xhbmd1YWdlPgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9sYW5ndWFnZXMvaXRhbGlhbi54bWwgYi9XZWJDb250ZW50L2xhbmd1YWdlcy9pdGFsaWFuLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZmIzMjNkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9sYW5ndWFnZXMvaXRhbGlhbi54bWwKQEAgLTAsMCArMSw0NjUyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorCis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitUaGlzIEZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgYnkgdGhlIExhbmd1YWdlRWRpdG9yIAordG8gYWRkIG5ldyBMYW5ndWFnZXMgb3IgbW9kaWZ5L2N1c3RvbWl6ZSBpdCB1c2UgdGhlIExhbmd1YWdlRWRpdG9yIAorc2VlIGh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9MYW5ndWFnZUVkaXRvci5odG1sIGZvciBEZXRhaWxzIAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMtLT4KKzxsYW5ndWFnZSB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczpub05hbWVzcGFjZVNjaGVtYUxvY2F0aW9uPSJsYW5ndWFnZS54c2QiPgorICA8c3RyaW5nIGlkPSIxIiBuYW1lPSJjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+Q29uZmVyZW56YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyIiBuYW1lPSJtZWV0aW5nIj4KKyAgICA8dmFsdWU+Uml1bmlvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMyIgbmFtZT0iY2xhc3Nyb29tIj4KKyAgICA8dmFsdWU+QXVkaXRvcml1bTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0IiBuYW1lPSJzZXR0aW5ncyI+CisgICAgPHZhbHVlPkltcG9zdGF6aW9uaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1IiBuYW1lPSJiZW51dHplciI+CisgICAgPHZhbHVlPlV0ZW50ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2IiBuYW1lPSJhZG1pbiI+CisgICAgPHZhbHVlPkFtbWluaXN0cmF6aW9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3IiBuYW1lPSJzdG9wIj4KKyAgICA8dmFsdWU+U3RvcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5SZWdpc3RyYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5IiBuYW1lPSJub2ZpbGUiPgorICAgIDx2YWx1ZT5OZXNzdW4gZmlsZSBkaXNwb25pYmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMCIgbmFtZT0icmVjb3JkYnl0ZWFjaGVyIj4KKyAgICA8dmFsdWU+U29sbyBpbCBkb2NlbnRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExIiBuYW1lPSJjb25uZWN0ZWR1c2VycyI+CisgICAgPHZhbHVlPlV0ZW50aSBjb25uZXNzaTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIiIG5hbWU9InN0YXJ0Y29uZiI+CisgICAgPHZhbHVlPkluaXppYSB1bmEgY29uZmVyZW56YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMyIgbmFtZT0ibXluYW1lIj4KKyAgICA8dmFsdWU+SWwgbWlvIG5vbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQiIG5hbWU9InZpZGVvY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPlZpZGVvIENvbmZlcmVuemE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUiIG5hbWU9ImltcG9ydCI+CisgICAgPHZhbHVlPkNhcmljYSBwcmVzZW50YXppb25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2IiBuYW1lPSJyZWZyZXNoZmlsZXMiPgorICAgIDx2YWx1ZT5BZ2dpb3JuYSBsYSBsaXN0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNyIgbmFtZT0idG9tYWluZmlsZSI+CisgICAgPHZhbHVlPkFsbCdhcmNoaXZpbyBwcmluY2lwYWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4IiBuYW1lPSJuZXdwb2xsIj4KKyAgICA8dmFsdWU+TnVvdm8gc29uZGFnZ2lvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5IiBuYW1lPSJuZXdwb2xsaGVhZGVyIj4KKyAgICA8dmFsdWU+VW4gbnVvdm8gc29uZGFnZ2lvIHBlciBsYSBjb25mZXJlbnphLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMCIgbmFtZT0icXVlc3Rpb24iPgorICAgIDx2YWx1ZT5Eb21hbmRhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMSIgbmFtZT0icG9sbHR5cGUiPgorICAgIDx2YWx1ZT5UaXBvIGRpIHNvbmRhZ2dpbzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIiIG5hbWU9ImNyZWF0ZSI+CisgICAgPHZhbHVlPkNyZWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMiIG5hbWU9ImluZm9tZXNzYWdlIj4KKyAgICA8dmFsdWU+SW5mb3JtYXppb25lOiBPZ25pIHV0ZW50ZSBjb25uZXNzbyByaWNldmUgdW4gbWVzc2FnZ2lvIGNvbiBpbCBudW92byBzb25kYWdnaW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0IiBuYW1lPSJjcmVhdHBvbGwiPgorICAgIDx2YWx1ZT5DcmVhIHVuIHNvbmRhZ2dpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNSIgbmFtZT0iY2FuY2VsIj4KKyAgICA8dmFsdWU+Q2FuY2VsbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYiIG5hbWU9Inllc25vIj4KKyAgICA8dmFsdWU+U2kvTm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjciIG5hbWU9Im51bWVyaWMiPgorICAgIDx2YWx1ZT5OdW1lcmljbyAxLTEwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4IiBuYW1lPSJwb2xsIj4KKyAgICA8dmFsdWU+U29uZGFnZ2lvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5IiBuYW1lPSJtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+RGV2aSBlc3NlcmUgbW9kZXJhdG9yZSBwZXIgY3JlYXJlIHVuYSBkb21hbmRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwIiBuYW1lPSJ2b3RlIj4KKyAgICA8dmFsdWU+SWwgdHVvIHZvdG8gw6ggc3RhdG8gcmVnaXN0cmF0by48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEiIG5hbWU9ImFscmVhZHl2b3RlZCI+CisgICAgPHZhbHVlPkhhaSBnacOgIHZvdGF0byBwZXIgcXVlc3RvIHNvbmRhZ2dpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIiIG5hbWU9InZvdGluZyI+CisgICAgPHZhbHVlPlZvdGEhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzIiBuYW1lPSJhbnN3ZXIiPgorICAgIDx2YWx1ZT5MYSB0dWEgcmlzcG9zdGE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0IiBuYW1lPSJ5ZXMiPgorICAgIDx2YWx1ZT5TaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNSIgbmFtZT0ibm8iPgorICAgIDx2YWx1ZT5ObzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNiIgbmFtZT0icXVlc3Rpb253YW50Ij4KKyAgICA8dmFsdWU+UmlzcG9uZGkgYWxsZSBkb21hbmRlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNyIgbmFtZT0icG9sbHJlc3VsdHMiPgorICAgIDx2YWx1ZT5SaXN1bHRhdGkgZGVsIHNvbmRhZ2dpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOCIgbmFtZT0icXVlc3Rpb24iPgorICAgIDx2YWx1ZT5Eb21hbmRhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOSIgbmFtZT0icmVzdWx0cyI+CisgICAgPHZhbHVlPnJpc3VsdGF0aTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAiIG5hbWU9ImFuc3dlcnMiPgorICAgIDx2YWx1ZT5SaXNwb3N0ZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDEiIG5hbWU9Im5vcG9sbCI+CisgICAgPHZhbHVlPk5lc3N1biBzb25kYWdnaW8gw6ggYXR0aXZvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MiIgbmFtZT0idm90aW5ncyI+CisgICAgPHZhbHVlPlZvdGEhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzIiBuYW1lPSJtZWV0aW5nIj4KKyAgICA8dmFsdWU+Uml1bmlvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQiIG5hbWU9ImNvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT5BdWRpdG9yaXVtIChtYXNzaW1vIDIwMCBwYXJ0ZWNpcGFudGkpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1IiBuYW1lPSJ0eXBlIj4KKyAgICA8dmFsdWU+VGlwbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NiIgbmFtZT0icmVtYWluaW5nc2VhdHMiPgorICAgIDx2YWx1ZT5BbHRyaSBwYXJ0ZWNpcGFudGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDciIG5hbWU9ImFscmVhZHljaG9zZW4iPgorICAgIDx2YWx1ZT5HacOgIHNjZWx0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OCIgbmFtZT0iZW50ZXIiPgorICAgIDx2YWx1ZT5lbnRyYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OSIgbmFtZT0ibW9kbGVhdmUiPgorICAgIDx2YWx1ZT5JbCBtb2RlcmF0b3JlIGhhIGxhc2NpYXRvIGxhIHJpdW5pb25lLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MCIgbmFtZT0ic3lzdGVtbWVzc2FnZSI+CisgICAgPHZhbHVlPkluZm9ybWF6aW9uaSBkaSBzaXN0ZW1hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxIiBuYW1lPSJjaG9zc2VkZXZpY2UiPgorICAgIDx2YWx1ZT5TY2VnbGkgaWwgZGlzcG9zaXRpdm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIiIG5hbWU9ImNob29zZWNhbSI+CisgICAgPHZhbHVlPlNjZWdsaSBsYSB3ZWJjYW06PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzIiBuYW1lPSJjaG9vc2VtaWMiPgorICAgIDx2YWx1ZT5TY2VnbGkgaWwgbWljcm9mb25vOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NCIgbmFtZT0ib2siPgorICAgIDx2YWx1ZT5vazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NSIgbmFtZT0iY2FuY2VsMiI+CisgICAgPHZhbHVlPmFubnVsbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYiIG5hbWU9InJlY29uZWVjdG5lZWRlZCI+CisgICAgPHZhbHVlPkRldmkgcmljb25uZXR0ZXJ0aS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTciIG5hbWU9ImVkaXRzZXR1cCI+CisgICAgPHZhbHVlPk1vZGlmaWNhIGxlIGltcG9zdGF6aW9uaS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgiIG5hbWU9ImNvdXJzZSI+CisgICAgPHZhbHVlPkNvcnNvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OSIgbmFtZT0ibGFuZ3VhZ2UiPgorICAgIDx2YWx1ZT5MaW5ndWE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwIiBuYW1lPSJvazIiPgorICAgIDx2YWx1ZT5vazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MSIgbmFtZT0iY2FuY2VsMyI+CisgICAgPHZhbHVlPmFubnVsbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIiIG5hbWU9ImNsZWFyd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkNhbmNlbGxhIGxhIGxhdmFnbmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMiIG5hbWU9ImNsZWFyd2hpdGVib2FyZHF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+VnVvaSBjaGUgbGEgbGF2YWduYSBzaWEgcHVsaXRhIHByaW1hIGRpIGFnZ2l1bmdlcmUgdW5hIG51b3ZhIGltbWFnaW5lPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NCIgbmFtZT0iZG9udGFza2FnYWluIj4KKyAgICA8dmFsdWU+Tm9uIGNoaWVkZXJlIGFuY29yYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NSIgbmFtZT0ibm8iPgorICAgIDx2YWx1ZT5ubzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NiIgbmFtZT0iZWRpdHNldHVwMiI+CisgICAgPHZhbHVlPk1vZGlmaWNhIGltcG9zdGF6aW9uaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NyIgbmFtZT0ibmVlZGNvbmZpcm1hdGlvbndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5SaWNoaWVzdGEgZGkgY29uZmVybWEgcHJpbWEgZGkgcHVsaXJlIGxhIGxhdmFnbmEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4IiBuYW1lPSJ1c2VyaW5mbyI+CisgICAgPHZhbHVlPkluZm9ybWF6aW9uaSBzdWxsJ3V0ZW50ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OSIgbmFtZT0iY2xlYXJkcmF3YXJlYSI+CisgICAgPHZhbHVlPlB1bGlzY2kgbGEgbGF2YWduYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MCIgbmFtZT0idW5kbyI+CisgICAgPHZhbHVlPkFubnVsbGEgbGUgbW9kaWZpY2hlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxIiBuYW1lPSJyZWRvIj4KKyAgICA8dmFsdWU+UmlwcmlzdGluYSBsZSBtb2RpZmljaGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIiIG5hbWU9InNlbGVjdG9iamVjdCI+CisgICAgPHZhbHVlPlNlbGV6aW9uYSB1bidvZ2dldHRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczIiBuYW1lPSJ0ZXh0Ij4KKyAgICA8dmFsdWU+VGVzdG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQiIG5hbWU9InBhaW50Ij4KKyAgICA8dmFsdWU+RGlzZWduYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NSIgbmFtZT0iZHJhd2xpbmUiPgorICAgIDx2YWx1ZT5EaXNlZ25hIHVuYSBsaW5lYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NiIgbmFtZT0iZHJhd3UiPgorICAgIDx2YWx1ZT5FdmlkZW56aWF0b3JlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3IiBuYW1lPSJyZWN0Ij4KKyAgICA8dmFsdWU+UmV0dGFuZ29sbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OCIgbmFtZT0iZWxsaXBzZSI+CisgICAgPHZhbHVlPkVsbGlzc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkiIG5hbWU9ImFycm93Ij4KKyAgICA8dmFsdWU+RnJlY2NpYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MCIgbmFtZT0iZGVsZXRlY2hvc2VuIj4KKyAgICA8dmFsdWU+Q2FuY2VsbGEgbCdvZ2dldHRvIHNlbGV6aW9uYXRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxIiBuYW1lPSJhcHBsaXltb2QiPgorICAgIDx2YWx1ZT5Tb3R0b3BvbmkgYWwgbW9kZXJhdG9yZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MiIgbmFtZT0iYXBwbHkiPgorICAgIDx2YWx1ZT5hcHBsaWNhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzIiBuYW1lPSJjYW5jZWwiPgorICAgIDx2YWx1ZT5jYW5jZWxsYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NCIgbmFtZT0ibW9kIj4KKyAgICA8dmFsdWU+RGl2ZW50YSBtb2RlcmF0b3JlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1IiBuYW1lPSJjbG9zZSI+CisgICAgPHZhbHVlPmNoaXVkaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NiIgbmFtZT0iaXRhbGljIj4KKyAgICA8dmFsdWU+Y29yc2l2bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NyIgbmFtZT0iYm9sZCI+CisgICAgPHZhbHVlPmdyYXNzZXR0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OCIgbmFtZT0id2FpdGluZyI+CisgICAgPHZhbHVlPkFUVEVOREVSRTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OSIgbmFtZT0iYXBwbHlNZXNzYWdlIj4KKyAgICA8dmFsdWU+VW4gdXRlbnRlIHZ1b2xlIHNvdHRvcG9ycmUgYWwgbW9kZXJhdG9yZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAiIG5hbWU9ImFjY2VwdCI+CisgICAgPHZhbHVlPmFjY2V0dGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTEiIG5hbWU9InJlamVjdCI+CisgICAgPHZhbHVlPnJpZml1dGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIiIG5hbWU9ImNhbmNlbCI+CisgICAgPHZhbHVlPmNhbmNlbGxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzIiBuYW1lPSJzZW5kbW9kcmVxdWVzdG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5JbnZpYSBsYSByaWNoaWVzdGEgYWdsaSB1dGVudGkgc2VndWVudGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQiIG5hbWU9ImFjY2VwdCI+CisgICAgPHZhbHVlPkFjY2V0dGF0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NSIgbmFtZT0icmVqZWN0Ij4KKyAgICA8dmFsdWU+UmlmaXV0YXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2IiBuYW1lPSJjaGFuZ2Vtb2QiPgorICAgIDx2YWx1ZT5DYW1iaWEgbW9kZXJhdG9yZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NyIgbmFtZT0ibm9ubW9kZXJyb3JtZXNzYWdlIj4KKyAgICA8dmFsdWU+Tm9uIHNlaSBpbCBtb2RlcmF0b3JlIHBlciBxdWVzdG8gY29yc28hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4IiBuYW1lPSJtb2RlcmF0b3IiPgorICAgIDx2YWx1ZT5Nb2RlcmF0b3JlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OSIgbmFtZT0icm9vbWZ1bGxtZXNzYWdlIj4KKyAgICA8dmFsdWU+TGEgc3RhbnphIMOoIHBpZW5hLiBTcGlhY2VudGkgcmlwcm92YXJlIHBpw7kgdGFyZGkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMCIgbmFtZT0iZWxsbGlwc2UiPgorICAgIDx2YWx1ZT5FbGxpc3NlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMSIgbmFtZT0iY2xvc2UiPgorICAgIDx2YWx1ZT5jaGl1ZGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyIiBuYW1lPSJBdXRoRXJyb3IiPgorICAgIDx2YWx1ZT5lcnJvcmkgbmVpIGRhdGkgaW5zZXJpdGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzIiBuYW1lPSJtaW40dXNlcm5hbWUiPgorICAgIDx2YWx1ZT5JbCBub21lIHV0ZW50ZSBkZXZlIGVzc2VyZSBkaSBhbG1lbm8gNCBjYXJhdHRlcmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0IiBuYW1lPSJtaW40cGFzcyI+CisgICAgPHZhbHVlPmxhIHBhc3N3b3JkIGRldmUgZXNzZXJlIGRpIGFsbWVubyA0IGNhcmF0dGVyaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUiIG5hbWU9InVzZXJuYW1ldGFrZW4iPgorICAgIDx2YWx1ZT5JbCBub21lIHV0ZW50ZSDDqCBnacOgIGluIHVzbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYiIG5hbWU9ImVtYWlsdGFrZW4iPgorICAgIDx2YWx1ZT5MJ2luZGlyaXp6byBlbWFpbCDDqCBnacOgIHN0YXRvIHVzYXRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNyIgbmFtZT0iZW1haWx0YWtlbiI+CisgICAgPHZhbHVlPkVycm9yZSBkaSBzaXN0ZW1hLCBjb250YXR0YXJlIGwnYW1taW5pc3RyYXRvcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4IiBuYW1lPSJBdXRobG9naW4iPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkiIG5hbWU9IkF1dGh1c2VyIj4KKyAgICA8dmFsdWU+Tm9tZSB1dGVudGU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMCIgbmFtZT0iQXV0aHBhc3MiPgorICAgIDx2YWx1ZT5QYXNzd29yZDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExIiBuYW1lPSJBdXRobGFuZyI+CisgICAgPHZhbHVlPkxpbmd1YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIiIG5hbWU9IkF1dGhyZWciPgorICAgIDx2YWx1ZT5FbnRyYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMiIG5hbWU9InJlZ2Zvcm1oZWFkIj4KKyAgICA8dmFsdWU+SXNjcml2aXRpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNCIgbmFtZT0icmVnZm9ybXVzZXIiPgorICAgIDx2YWx1ZT5Ob21lIHV0ZW50ZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1IiBuYW1lPSJyZWdmb3JtcGFzcyI+CisgICAgPHZhbHVlPlBhc3N3b3JkOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYiIG5hbWU9InJlZ2Zvcm1yZXR5cGUiPgorICAgIDx2YWx1ZT5SaXNjcml2ZXJlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTciIG5hbWU9InJlZ2Zvcm1maXJzdG5hbWUiPgorICAgIDx2YWx1ZT5Ob21lOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgiIG5hbWU9InJlZ2Zvcm1sYXN0bmFtZSI+CisgICAgPHZhbHVlPkNvZ25vbWU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOSIgbmFtZT0icmVnZm9ybW1haWwiPgorICAgIDx2YWx1ZT5FbWFpbDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwIiBuYW1lPSJyZWdmb3Jtc3RhdGUiPgorICAgIDx2YWx1ZT5TdGF0bzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxIiBuYW1lPSJyZWdmb3JtYnRuMSI+CisgICAgPHZhbHVlPlJlZ2lzdHJhdGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyIiBuYW1lPSJyZWdmb3JtYnRuMiI+CisgICAgPHZhbHVlPkFubnVsbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzIiBuYW1lPSJBdXRoYnRuMiI+CisgICAgPHZhbHVlPlJlZ2lzdHJhdGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5ob21lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNSIgbmFtZT0idXNlcmFkbWluIj4KKyAgICA8dmFsdWU+VXRlbnRpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNiIgbmFtZT0iZ3JvdXBhZG1pbiI+CisgICAgPHZhbHVlPkdydXBwaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjciIG5hbWU9Im9yZ2FkbWluIj4KKyAgICA8dmFsdWU+T3JnYW5penphemlvbmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4IiBuYW1lPSJoZWFkY29uZiI+CisgICAgPHZhbHVlPlN0YW56ZSBkZWxsZSBjb25mZXJlbnplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOSIgbmFtZT0iY29uZl9wdWIiPgorICAgIDx2YWx1ZT5wdWJibGljbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAiIG5hbWU9ImhlYWRfb3JnIj4KKyAgICA8dmFsdWU+b3JnYW5penphemlvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxIiBuYW1lPSJidG5fZW50ZXJyb29tIj4KKyAgICA8dmFsdWU+ZW50cmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2xvZ2luIj4KKyAgICA8dmFsdWU+TG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Bhc3MiPgorICAgIDx2YWx1ZT5QYXNzd29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQiIG5hbWU9InVzZXJhbHRlcnNlbGZfcGFzc3JldHlwZSI+CisgICAgPHZhbHVlPlJpc2NyaXZlcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2ZpcnN0bmFtZSI+CisgICAgPHZhbHVlPk5vbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2xhc3RuYW1lIj4KKyAgICA8dmFsdWU+Q29nbm9tZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzciIG5hbWU9InVzZXJhbHRlcnNlbGZfZW1haWwiPgorICAgIDx2YWx1ZT5FbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgiIG5hbWU9InVzZXJhbHRlcnNlbGZfYmlydGgiPgorICAgIDx2YWx1ZT5EYXRhIGRpIG5hc2NpdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3N0cmVldG5vIj4KKyAgICA8dmFsdWU+SW5kaXJpenpvL2NpdmljbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDAiIG5hbWU9InVzZXJhbHRlcnNlbGZfdG93biI+CisgICAgPHZhbHVlPkMuQS5QL0NpdHTDoDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDEiIG5hbWU9InVzZXJhbHRlcnNlbGZfc3RhdGUiPgorICAgIDx2YWx1ZT5TdGF0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIiIG5hbWU9InVzZXJhbHRlcnNlbGZfYWRyZXNzY29tbWVudCI+CisgICAgPHZhbHVlPkluZm9ybWF6aW9uaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMiIG5hbWU9InVzZXJhbHRlcnNlbGZfaGVhZGVyIj4KKyAgICA8dmFsdWU+RGF0aSB1dGVudGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0IiBuYW1lPSJzYXZlbWVudWJhcl9zYXZlbGFiZWwiPgorICAgIDx2YWx1ZT5zYWx2YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUiIG5hbWU9InNhdmVtZW51YmFyX3NhdmVsYWJlbCI+CisgICAgPHZhbHVlPnNhbHZhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NiIgbmFtZT0iYWRtaW5fdXNlcmxpc3RfdXNlcl9pZCI+CisgICAgPHZhbHVlPklELVV0ZW50ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDciIG5hbWU9ImFkbWluX3VzZXJsaXN0X2xvZ2luIj4KKyAgICA8dmFsdWU+TG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4IiBuYW1lPSJhZG1pbl91c2VybGlzdF9maXJzdG5hbSI+CisgICAgPHZhbHVlPm5vbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5IiBuYW1lPSJhZG1pbl91c2VybGlzdF9sYXN0bmFtZSI+CisgICAgPHZhbHVlPmNvZ25vbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwIiBuYW1lPSJ0dXJub3Zlcmxpc3RfbmV4dCI+CisgICAgPHZhbHVlPm1vc3RyYSBwcm9zc2ltbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTEiIG5hbWU9InR1cm5vdmVybGlzdF9wcmUiPgorICAgIDx2YWx1ZT5tb3N0cmEgcHJlY2VkZW50ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIiIG5hbWU9InNhdmVjb250ZW50X2NvbmZpcm0iPgorICAgIDx2YWx1ZT5FbGltaW5hIGlsIHJlY29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMiIG5hbWU9InNhdmVjb250ZW50X2NvbmZpcm1fY2FuY2VsX2J0biI+CisgICAgPHZhbHVlPmFubnVsbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU0IiBuYW1lPSJzYXZlY29udGVudF9jb25maXJtX2NvbmZpcm1fYnRuIj4KKyAgICA8dmFsdWU+ZWxpbWluYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTUiIG5hbWU9InNhdmVtZW51YmFyX2FkZGxhYmVsIj4KKyAgICA8dmFsdWU+bnVvdm8gcmVjb3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NiIgbmFtZT0ic2F2ZW1lbnViYXJfcmVsb2FkbGFiZWwiPgorICAgIDx2YWx1ZT5hZ2dpb3JuYSByZWNvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU3IiBuYW1lPSJzYXZlbWVudWJhcl9kZWxldGVsYWJlbCI+CisgICAgPHZhbHVlPmVsaW1pbmEgcmVjb3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1OCIgbmFtZT0idXNlcmFsdGVyX2FkbWluX3N0YXR1cyI+CisgICAgPHZhbHVlPnN0YXRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1OSIgbmFtZT0idXNlcmFsdGVyX2FkbWluX3N0YXR1c0l0ZW0iPgorICAgIDx2YWx1ZT5kaXNhYmlsaXRhdG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYwIiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fc3RhdHVzSXRlbSI+CisgICAgPHZhbHVlPmFiaWxpdGF0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjEiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9vcmdhbmlzYXRpb24iPgorICAgIDx2YWx1ZT5vcmdhbml6emF6aW9uaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjIiIG5hbWU9ImNhbGVuZGFyX2ljb25sYWJlbCI+CisgICAgPHZhbHVlPmNhbGVuZGFyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYzIiBuYW1lPSJzYXZld2luZG93X2J0biI+CisgICAgPHZhbHVlPmNoaXVkaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjQiIG5hbWU9Im9yZ2FuaXNhdGlvbnRhYmxlbGlzdF9pZHJvdyI+CisgICAgPHZhbHVlPklELW9yZ2FuaXp6YXppb25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2NSIgbmFtZT0ib3JnYW5pc2F0aW9udGFibGVsaXN0X25hbWVyb3ciPgorICAgIDx2YWx1ZT5ub21lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2NiIgbmFtZT0idXNlcnZhbHVlX2xldmVsaWQxIj4KKyAgICA8dmFsdWU+dXRlbnRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2NyIgbmFtZT0idXNlcnZhbHVlX2xldmVsaWQyIj4KKyAgICA8dmFsdWU+bW9kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2OCIgbmFtZT0idXNlcnZhbHVlX2xldmVsaWQzIj4KKyAgICA8dmFsdWU+YW1taW5pc3RyYXRvcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY5IiBuYW1lPSJ1c2VydmFsdWVfbGV2ZWxsYWJlbCI+CisgICAgPHZhbHVlPmxpdmVsbG8gdXRlbnRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MCIgbmFtZT0ib3JndmFsdWVfaGVhZGVyIj4KKyAgICA8dmFsdWU+b3JnYW5penphemlvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTcxIiBuYW1lPSJvcmd2YWx1ZV9vcmduYW1lIj4KKyAgICA8dmFsdWU+bm9tZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzIiIG5hbWU9Im9yZ3ZhbHVlX29yZ25hbWUiPgorICAgIDx2YWx1ZT5hZ2dpdW5naSB1bidvcmdhbml6emF6aW9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzMiIG5hbWU9Im9yZ3ZhbHVlX29yZ25hbWUiPgorICAgIDx2YWx1ZT5hZ2dpdW5naSB1bidvcmdhbml6emF6aW9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzQiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW4iPgorICAgIDx2YWx1ZT5hbm51bGxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3NSIgbmFtZT0ib3JndmFsdWVfdXNlcndpbiI+CisgICAgPHZhbHVlPmFnZ2l1bmdpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3NiIgbmFtZT0ib3JndmFsdWVfdXNlcndpbiI+CisgICAgPHZhbHVlPnJpbXVvdmkgbCdvcmdhbml6emF6aW9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzciIG5hbWU9Im9yZ3ZhbHVlX3VzZXJsaXN0Ij4KKyAgICA8dmFsdWU+dXRlbnRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3OCIgbmFtZT0ib3JndmFsdWVfdXNlcmxpc3RhZGQiPgorICAgIDx2YWx1ZT5hZ2dpdW5naSB1bid1dGVudGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc5IiBuYW1lPSJvcmd2YWx1ZV91c2VybGlzdGRlbGV0ZSI+CisgICAgPHZhbHVlPmVsaW1pbmEgbCd1dGVudGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgwIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luaGVhZGVyIj4KKyAgICA8dmFsdWU+YWdnaXVuZ2kgbCd1dGVudGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgxIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luc2VhcmNoZmllbGQiPgorICAgIDx2YWx1ZT5jZXJjYSB1biB1dGVudGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgyIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luc2VhcmNoYnRuIj4KKyAgICA8dmFsdWU+Y2VyY2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgzIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luc2VhcmNocmVzdWx0Ij4KKyAgICA8dmFsdWU+dXRlbnRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NCIgbmFtZT0ibG9naW53aW5fY2hvb3Nlb3JnYW5pc2F0aW9uIj4KKyAgICA8dmFsdWU+b3JnYW5penphemlvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg1IiBuYW1lPSJsb2dpbndpbl9jaG9vc2VvcmdhbmlzYXRpb25idG4iPgorICAgIDx2YWx1ZT5lbnRyYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODYiIG5hbWU9Im5hdmlfcm9vbWFkbWluIj4KKyAgICA8dmFsdWU+c3RhbnplIGRlbGxlIGNvbmZlcmVuemU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg3IiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+c3RhbnplIGRlbGxlIGNvbmZlcmVuemU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg4IiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+aWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg5IiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+Tm9tZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTAiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5wdWJibGljbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTEiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5vcmdhbml6emF6aW9uaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTIiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5zdGFuemUgZGVsbGUgY29uZmVyZW56ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTMiIG5hbWU9InJvb212YWx1ZV9uYW1lIj4KKyAgICA8dmFsdWU+bm9tZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTQiIG5hbWU9InJvb212YWx1ZV90eXBlIj4KKyAgICA8dmFsdWU+dGlwbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTUiIG5hbWU9InJvb212YWx1ZV9pc3B1YmxpYyI+CisgICAgPHZhbHVlPnB1YmJsaWNvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NiIgbmFtZT0icm9vbXZhbHVlX2NvbW1lbnQiPgorICAgIDx2YWx1ZT5jb21tZW50bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTciIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWljb24iPgorICAgIDx2YWx1ZT5zYWx2YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTgiIG5hbWU9IndoaXRlYm9hcmRfb3Blbmljb24iPgorICAgIDx2YWx1ZT5jYXJpY2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk5IiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbmhlYWRlciI+CisgICAgPHZhbHVlPnNhbHZhIGNvbiBub21lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMCIgbmFtZT0id2hpdGVib2FyZF9zYXZlYXN3aW50ZXh0Ij4KKyAgICA8dmFsdWU+bm9tZSBkZWwgZmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDEiIG5hbWU9ImZpbGVzIj4KKyAgICA8dmFsdWU+bm9tZSBkZWwgZmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDIiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2luYnRuMSI+CisgICAgPHZhbHVlPmFubnVsbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAzIiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbmJ0bjIiPgorICAgIDx2YWx1ZT5zYWx2YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDQiIG5hbWU9InJwY2Vycm9yd2luX2hlYWRlciI+CisgICAgPHZhbHVlPmVycm9yZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDUiIG5hbWU9ImxvYWR3bWxfaGVhZGVyIj4KKyAgICA8dmFsdWU+Y2FyaWNhbWVudG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA2IiBuYW1lPSJsb2Fkd21sX21lc3NzbG9hZCI+CisgICAgPHZhbHVlPm9nZ2V0dG8gY2FyaWNhdG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA3IiBuYW1lPSJsb2Fkd21sX21lc3NzeW5jIj4KKyAgICA8dmFsdWU+c2luY3Jvbml6emF6aW9uZSBjb24gaSBjbGllbnQsIGF0dGVuZGVyZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA4IiBuYW1lPSJsb2FkaW1hZ2VfbWVzc2xvYWQiPgorICAgIDx2YWx1ZT5DYXJpY2FtZW50byBkZWxsZSBpbW1hZ2luaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDkiIG5hbWU9ImxvYWRpbWFnZV9tZXNzc3luYyI+CisgICAgPHZhbHVlPnNpbmNyb25penphemlvbmUgY29uIGkgY2xpZW50LCBhdHRlbmRlcmU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMCIgbmFtZT0ibG9hZHdtbF9jb25maXJtaGVhZGVyIj4KKyAgICA8dmFsdWU+cHVsaXNjaSBsYSBsYXZhZ25hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMSIgbmFtZT0ibG9hZHdtbF9jb25maXJtbWVzcyI+CisgICAgPHZhbHVlPnB1bGlzY2kgbGEgbGF2YWduYSwgdHV0dGUgbGUgaW5mb3JtYXppb25pIHN1IGRpIGVzc2Egc2FyYW5ubyBwZXJzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTIiIG5hbWU9ImxvYWR3bWxfY29uZmlybW1lc3MyIj4KKyAgICA8dmFsdWU+Q29uZmVybWEgcHJpbWEgZGkgY2FyaWNhcmUgaWwgZmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTMiIG5hbWU9InNlbmRfaW52aXRhdGlvbl9idG4iPgorICAgIDx2YWx1ZT5JbnZpYSB1biBpbnZpdG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE0IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5faGVhZGVyIj4KKyAgICA8dmFsdWU+SW52aWEgdW4gaW52aXRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNSIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX3N1YmplY3QiPgorICAgIDx2YWx1ZT5Tb2dnZXR0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTYiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9yZWNpcGllbnQiPgorICAgIDx2YWx1ZT5EZXN0aW5hdGFyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE3IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fbWVzc2FnZSI+CisgICAgPHZhbHVlPk1lc3NhZ2dpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTgiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9idG5fY29uZmlybSI+CisgICAgPHZhbHVlPkludmlhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxOSIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX2J0bl9jYW5jZWwiPgorICAgIDx2YWx1ZT5hbm51bGxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyMCIgbmFtZT0ic2VuZF9jaGF0X3RleHRfYnRuIj4KKyAgICA8dmFsdWU+aW52aWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIxIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5faGVhZGVyIj4KKyAgICA8dmFsdWU+ZGF0aSB1dGVudGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIyIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fc3ViamVjdCI+CisgICAgPHZhbHVlPklsIHR1byBhcHBlbGxhdGl2byBwZXIgbGEgY29uZmVyZW56YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjMiIG5hbWU9Imludml0ZWRfdXNlcndpbl9sb2dpbiI+CisgICAgPHZhbHVlPmFwcGVsbGF0aXZvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNCIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2ZpcnN0bmFtZSI+CisgICAgPHZhbHVlPm5vbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI1IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fbGFzdG5hbWUiPgorICAgIDx2YWx1ZT5jb2dub21lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNiIgbmFtZT0iaW52aXRlZF91c2Vyd2luX21haWwiPgorICAgIDx2YWx1ZT5FbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjciIG5hbWU9Imludml0ZWRfdXNlcndpbl9sYW5nIj4KKyAgICA8dmFsdWU+bGluZ3VhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyOCIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2VudGVyIj4KKyAgICA8dmFsdWU+ZW50cmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI5IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZW50ZXIiPgorICAgIDx2YWx1ZT5DYXJpY2FtZW50bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzAiIG5hbWU9Imludml0ZWRfdXNlcndpbl9lbnRlciI+CisgICAgPHZhbHVlPkNhcmljYW1lbnRvIGRhdGksIGF0dGVuZGVyZSBwcmVnbyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMxIiBuYW1lPSJ1c2VyX3JlZ2lzdGVyRmFsc2VQV0QiPgorICAgIDx2YWx1ZT5QYXNzd29yZCBzYmFnbGlhdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMyIiBuYW1lPSJ1c2VyX3JlZ2lzdGVyRmFsc2VQV0RIZWFkZXIiPgorICAgIDx2YWx1ZT5JbnNlcmlzY2kgZHVlIHBhc3N3b3JkIGlkZW50aWNoZSBkaSBtaW5pbW8gNiBjYXJhdHRlcmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMzIiBuYW1lPSJ1c2VyX3JlZ2lzdGVyTWFpbEVycm9yIj4KKyAgICA8dmFsdWU+TWFpbCBzYmFnbGlhdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM0IiBuYW1lPSJ1c2VyX3JlZ2lzdGVyTWFpbEVycm9ySGVhZGVyIj4KKyAgICA8dmFsdWU+SGFpIGluc2VyaXRvIHVuYSBtYWlsIG5vbiB2YWxpZGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM1IiBuYW1lPSJ1c2VyX3JlZ2lzdGVyU3VjY2VzcyI+CisgICAgPHZhbHVlPlJlZ2lzdHJhemlvbmUgY29tcGxldGF0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzYiIG5hbWU9InVzZXJfcmVnaXN0ZXJTdWNjZXNzSGVhZGVyIj4KKyAgICA8dmFsdWU+SWwgdHVvIHByb2ZpbG8gw6ggc3RhdG8gY3JlYXRvIGNvcnJldHRhbWVudGUuIFB1b2kgZWZmZXR0dWFyZSBpbCBsb2dpbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM3IiBuYW1lPSJ1c2VyX3NoYXJpbmdfbWVzc2FnZSI+CisgICAgPHZhbHVlPk5vbiDDqCBwb3NzaWJpbGUgY29uZGl2aWRlcmUgaWwgdHVvIGRlc2t0b3AgaW4gcXVlc3RvIG1vbWVudG8uIFBvdHJlYmJlIGVzc2VyZSBpbiBjb25kaXZpc2lvbmUgY29uIHF1YWxjdW4nYWx0cm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM4IiBuYW1lPSJ1c2VyX3NoYXJpbmdfbWVzc2FnZUhlYWRlciI+CisgICAgPHZhbHVlPkNvbmRpdmlzaW9uZSBub24gcGVybWVzc2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM5IiBuYW1lPSJ1c2VyX2RvU3RhcnRTY3JlZW5WaWV3ZXIiPgorICAgIDx2YWx1ZT5Db25kaXZpc2lvbmUgZGVza3RvcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDAiIG5hbWU9InNjcmVlbl93YXJuQmFuZHdpZHRoIj4KKyAgICA8dmFsdWU+bGFyZ2hlenphIGRpIGJhbmRhIGluc3VmZmljaWVudGU6IE5vbiBzZWkgYWJpbGl0YXRvIGEgc2luY3Jvbml6emFyZSBsZSBpbW1hZ2luaS4gaSBGcmFtZXMgc2FyYW5ubyBsYXNjaWF0aS4gU2UgdmlzdWFsaXp6aSBxdWVzdG8gbWVzc2FnZ2lvIGNoaWVkaSBhbCBtb2RlcmF0b3JlIGRpIGFiYmFzc2FyZSBsYSBxdWFsaXTDoC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQxIiBuYW1lPSJzY3JlZW5fdXNlcmxhYmVsIj4KKyAgICA8dmFsdWU+aW1tYWdpbmUgZGk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0MiIgbmFtZT0id2hpdGVib2FyZF90YWJfcGFpbnQiPgorICAgIDx2YWx1ZT5EaXNlZ25hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0MyIgbmFtZT0id2hpdGVib2FyZF90YWJfZG9jdW1lbnQiPgorICAgIDx2YWx1ZT5Eb2N1bWVudG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ0IiBuYW1lPSJ0YWJiYXJfY2hhdGljb24iPgorICAgIDx2YWx1ZT5DaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0NSIgbmFtZT0idGFiYmFyX2ZpbGVzaWNvbiI+CisgICAgPHZhbHVlPkZpbGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0NiIgbmFtZT0idGFiYmFyX3BhcnRpY2lwYW50c2ljb24iPgorICAgIDx2YWx1ZT5NZW1icmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ3IiBuYW1lPSJzd2ZwcmVzZW50YXRpb25fbGlzdHNhdmVvcmlnIj4KKyAgICA8dmFsdWU+U2NhcmljYSBpbCBkb2N1bWVudG8gb3JpZ2luYWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0OCIgbmFtZT0ic3dmcHJlc2VudGF0aW9uX2xpc3RzYXZlcGRmIj4KKyAgICA8dmFsdWU+U2NhcmljYSBpbCBkb2N1bWVudG8gUERGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0OSIgbmFtZT0ic3dmcHJlc2VudGF0aW9uX2xpc3Rsb2Fkc3dmIj4KKyAgICA8dmFsdWU+Q2FyaWNhIGxhIHByZXNlbnRhemlvbmUgc3VsbGEgbGF2YWduYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTAiIG5hbWU9Im5hdmltYWluX2NvbmZpZyI+CisgICAgPHZhbHVlPkNvbmZpZ3VyYXppb25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MSIgbmFtZT0id2hpdGVib2FyZF9ib3VuZGluZ2JveF9kcmFnIj4KKyAgICA8dmFsdWU+TXVvdmkgcXVlc3Qnb2dnZXR0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTIiIG5hbWU9IndoaXRlYm9hcmRfYm91bmRpbmdib3hfcmVzaXplIj4KKyAgICA8dmFsdWU+UmlwcmlzdGluYSBxdWVzdCdvZ2dldHRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MyIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfem9vbSI+CisgICAgPHZhbHVlPiU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU0IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9zbGlkZSI+CisgICAgPHZhbHVlPmRpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1NSIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfZmlyc3RzbGlkZSI+CisgICAgPHZhbHVlPlZhaSBhbGxhIHByaW1hIHBhZ2luYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTYiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3ByZXNsaWRlIj4KKyAgICA8dmFsdWU+VmFpIGFsbGEgcGFnaW5hIHByZWNlZGVudGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU3IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9uZXh0c2xpZGUiPgorICAgIDx2YWx1ZT5WYWkgYWxsYSBwcm9zc2ltYSBwYWdpbmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU4IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9sYXN0c2xpZGUiPgorICAgIDx2YWx1ZT5WYWkgYWxsJ3VsdGltYSBwYWdpbmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU5IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl96b29tbWludXMiPgorICAgIDx2YWx1ZT5ab29tIC0tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MCIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfem9vbXBsdXMiPgorICAgIDx2YWx1ZT5ab29tICsrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MSIgbmFtZT0ic2FsdXRhdGlvbl9tciI+CisgICAgPHZhbHVlPnNpZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYyIiBuYW1lPSJzYWx1dGF0aW9uX21pc3MiPgorICAgIDx2YWx1ZT5TaWcucmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYzIiBuYW1lPSJuYXZpbWFpbl9jb25mYWRtaW4iPgorICAgIDx2YWx1ZT5Db25maWd1cmF6aW9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjQiIG5hbWU9ImNvbmZ0YWJsZV9oZWFkZXJJZCI+CisgICAgPHZhbHVlPklEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2NSIgbmFtZT0iY29uZnRhYmxlX2hlYWRlcmtleSI+CisgICAgPHZhbHVlPkNoaWF2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjYiIG5hbWU9ImNvbmZhZG1pbmZvcm1faGVhZGVyIj4KKyAgICA8dmFsdWU+Q29uZmlndXJhemlvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY3IiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsa2V5Ij4KKyAgICA8dmFsdWU+Q2hpYXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2OCIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbHVwZGF0ZWQiPgorICAgIDx2YWx1ZT5VbHRpbW8gYWdnaW9ybmFtZW50bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjkiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWx1cGRhdGVkYnkiPgorICAgIDx2YWx1ZT5hZ2dpb3JuYXRvIGRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MCIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbGNvbW1lbnQiPgorICAgIDx2YWx1ZT5jb21tZW50aTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzEiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWxrZXkiPgorICAgIDx2YWx1ZT5jaGlhdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjcyIiBuYW1lPSJ0dXJub3Zlcmxpc3RfbWF4cmVzdWx0cyI+CisgICAgPHZhbHVlPmRpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MyIgbmFtZT0ib3JnYW5pc2F0aW9uX3VzZXJzaGVhZGVyIj4KKyAgICA8dmFsdWU+VXRlbnRpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NCIgbmFtZT0ib3JnYW5pc2F0aW9uX3VzZXJzaWNvbmRlbGV0ZSI+CisgICAgPHZhbHVlPkNhbmNlbGxhIGwndXRlbnRlIGRhbGwnb3JnYW5penphemlvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc1IiBuYW1lPSJvcmdhbmlzYXRpb25fdXNlcnNkZWxldGVkaGVhZCI+CisgICAgPHZhbHVlPmNhbmNlbGxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NiIgbmFtZT0ib3JnYW5pc2F0aW9uX3VzZXJzYWxyZWFkYWRkZWQiPgorICAgIDx2YWx1ZT5RdWVzdG8gdXRlbnRlIMOoIGdpw6AgbWVtYnJvIGRpIHF1ZXN0YSBvcmdhbml6emF6aW9uZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc3IiBuYW1lPSJkYXNoYm9hcmRfbmV3c2hlYWRlciI+CisgICAgPHZhbHVlPk5ld3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc4IiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rc2hlYWRlciI+CisgICAgPHZhbHVlPkxpbmsgdmVsb2NlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3OSIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua0NvbmYiPgorICAgIDx2YWx1ZT5WYWkgYWxsYSBSaXVuaW9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODAiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtBdWRpdCI+CisgICAgPHZhbHVlPlZhaSBhbGwnQXVkaXRvcml1bTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODEiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtzdXBwb3J0Ij4KKyAgICA8dmFsdWU+QWl1dG8gZSBzdXBwb3J0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODIiIG5hbWU9ImRhc2hib2FyZF9xdWlja2hvbWVwYWdldXJsIj4KKyAgICA8dmFsdWU+aHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnLzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODMiIG5hbWU9ImRhc2hib2FyZF9xdWlja21haWxpbmdsaXN0dXJsIj4KKyAgICA8dmFsdWU+aHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnL21haWwtbGlzdHMuaHRtbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODQiIG5hbWU9ImRhc2hib2FyZF9yZXBvcnRidWdzIj4KKyAgICA8dmFsdWU+QnVnITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODUiIG5hbWU9ImRhc2hib2FyZF9yc3NsaXN0aXRlbWxpbmt0ZXh0Ij4KKyAgICA8dmFsdWU+QWx0cmUgaW5mb3JtYXppb25pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4NiIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua2hvbWVwYWdlbGFiZWwiPgorICAgIDx2YWx1ZT5TaXRvIHdlYiBkZWwgcHJvZ2V0dG8gKGh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg3IiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rbWFpbGluZ2xpc3RsYWJlbCI+CisgICAgPHZhbHVlPk1haWxpbmcgTGlzdCB1dGVudGkgKGh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9tYWlsLWxpc3RzLmh0bWwpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4OCIgbmFtZT0ibG9naW5fcmVtZW1iZXJ1c2VyIj4KKyAgICA8dmFsdWU+Umljb3JkYSB1dGVudGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg5IiBuYW1lPSJtYWluX25hdmkiPgorICAgIDx2YWx1ZT5Db250ZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPk1pYSBIb21lIFBhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkxIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+TWllIGNvbmZlcmVuemUgZmlzc2F0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTIiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5NaWVpIGV2ZW50aSBmaXNzYXRpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MyIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPkNvbmZlcmVuemUgcHViYmxpY2hlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPkNvbmZlcmVuemUgcHJpdmF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTUiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5FdmVudGkgcHViYmxpY2k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk2IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+RXZlbnRpIHByaXZhdGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk3IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+Q29udGVudXRpIHB1YmJsaWNpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5OCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPkNvbnRlbnV0aSBwcml2YXRpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5OSIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPkNvbnRlbnV0aSBwZXJzb25hbGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAwIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMSIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPk1vZGVyYXRvcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAyIiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+QXNzZWduYSBtb2RlcmF0b3JlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMyIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPlNvbmRhZ2dpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDQiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5TY2VnbGkgdW4gZmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDUiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5JbXBvc3Rhemlvbmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA2IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+SW1wb3N0YXppb25pIENhbSBlIE1pYzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDciIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5JbXBvc3RhemlvbmkgbGF2YWduYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDgiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5Fc2NpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwOSIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPlRvcm5hIGFsbGUgc3RhbnplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMCIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPkxvZ291dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTEiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+VmlzdWFsaXp6YXRvcmUgZGVza3RvcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTIiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+QXZ2aWEgdmlzdWFsaXp6YXRvcmUgZGVza3RvcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTMiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+VmlkZW8gZSBBdWRpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTQiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+Q2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTUiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+TGF2YWduYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTYiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+TW9kZXJhdG9yZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTciIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+RmlsZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE4IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlV0ZW50aTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTkiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+U29uZGFnZ2lvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyMCIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5Ob24gY2kgc29ubyB1dGVudGkgY29sbGVnYXRpIGNvbiBxdWVzdG8gVXNlcm5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIxIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlVuYSBtYWlsLCBjb250ZW5lbnRlIHVuIGxpbmssIMOoIHN0YXRhIGludmlhdGEgYWwgdHVvIGluZGlyaXp6byBlbWFpbCwgY29udHJvbGxhIGxhIHR1YSBwb3N0YS4gU2Ugbm9uIGhhaSByaWNldnV0byBsYSBtYWlsLCBjb250cm9sbGEgaWwgdHVvIGZpbHRybyBkaSBzcGFtIGUgcmljaGllZGkgbnVvdmFtZW50ZSBsYSBtYWlsIGRpIGNvbmZlcm1hLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjIiIG5hbWU9ImVycm9ydHlwZSI+CisgICAgPHZhbHVlPkVycm9yZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjMiIG5hbWU9ImVycm9ydHlwZSI+CisgICAgPHZhbHVlPk1lc3NhZ2dpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjQiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPkhhc2ggbm9uIHZhbGlkYS4gVXRlbnRlIG5vbiB0cm92YXRvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjUiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPlJlc2V0dGEgbGEgdHVhIHBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNiIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+TG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI3IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5jYW1iaWEgcGFzc3dvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI4IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5udW92YSBwYXNzd29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjkiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPnJpcGV0aSBsYSBwYXNzd29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzAiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPkxlIHBhc3N3b3JkIGluc2VyaXRlIG5vbiBzb25vIGlkZW50aWNoZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMxIiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT40IG8gcGnDuSBjYXJhdHRlcmk7IHNlbnNpYmlsZSBhbGxlIG1haXVzY29sZTs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMyIiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5QYXNzd29yZCBpbXBvc3RhdGEuIE9yYSBwdW9pIGNvbGxlZ2FydGkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzMyIgbmFtZT0icnBjY2FsbGJhY2siPgorICAgIDx2YWx1ZT5PSzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzQiIG5hbWU9InJwY2dlbmVyYWxlcnJvciI+CisgICAgPHZhbHVlPkVycm9yZSBzY29ub3NjaXV0by4gQ29udGF0dGEgaWwgdHVvIGFtbWluaXN0cmF0b3JlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzUiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+VXNlcm5hbWUgbm9uIHRyb3ZhdG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM2IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlBhc3N3b3JkIG5vbiB2YWxpZGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM3IiBuYW1lPSJsb2dvdXQiPgorICAgIDx2YWx1ZT5TY29sbGVnYW1lbnRvIGVmZmV0dHVhdG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM4IiBuYW1lPSJyZWdpc3RyYXRpb24iPgorICAgIDx2YWx1ZT5SZWdpc3RyYXppb25pIGRpc2FiaWxpdGF0ZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM5IiBuYW1lPSJyZWdpc3RyYXRpb24iPgorICAgIDx2YWx1ZT5FTWFpbCBub24gdmFsaWRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MCIgbmFtZT0icmVnaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+bm9tZSBkZWwgZmlsZSBkdXBsaWNhdG8sIHNjZWdsaSB1biBhbHRybyBub21lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MSIgbmFtZT0iZmlsZWJyb3dzZXIiPgorICAgIDx2YWx1ZT5ub21lIGRpIGZpbGUgdHJvcHBvIGNvcnRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MiIgbmFtZT0iZmlsZWJyb3dzZXIiPgorICAgIDx2YWx1ZT5TYWx2YXRhZ2dpbyBkaSBpbmRpcml6em8gbm9uIHBvc3NpYmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDMiIG5hbWU9InVzZXJhZG1pbiI+CisgICAgPHZhbHVlPlV0ZW50ZSBhZ2dpdW50bywgbWEgZGV2ZSBlc3NlcmUgYXNzZWduYXRvIGFkIHVuJ29yZ2FuaXp6YXppb25lLCBhbHRyaW1lbnRpIG5vbiBwb3Ryw6AgY29sbGVnYXJzaS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ0IiBuYW1lPSJhZG1pbmZvcm1zIj4KKyAgICA8dmFsdWU+TnVvdmEgcmVnaXN0cmF6aW9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDUiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPk5lc3N1biB0ZXN0byB0cm92YXRvIGNvbiBxdWVzdG8gSUQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TmVzc3VuIHZhbG9yZSB0cm92YXRvIHBlciBxdWVzdG8gZWxlbWVudG8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NyIgbmFtZT0iZXJyb3JtZXNzYWdlIj4KKyAgICA8dmFsdWU+UGVybWVzc2kgZGEgYW1taW5pc3RyYXRvcmUgcmljaGllc3RpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0OCIgbmFtZT0ibWFpbm5hdmkiPgorICAgIDx2YWx1ZT5FZGl0b3IgbGluZ3VhZ2dpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0OSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TGluZ3VhZ2dpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1MCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+SWRlbnRpZmljYXRpdm8tSUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUxIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5JZGVudGlmaWNhdGl2by1Ob21lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1MiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+VmFsb3JlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1MyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+UmVjb3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1NCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+Tm9tZSBkZWxsJ2lkZW50aWZpY2F0aXZvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1NSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+VGVzdG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU2IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTciIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPlB1b2kgY2FuY2VsbGFyZSBzb2xvIGwnaWRlbnRpZmljYXRpdm8sIG5vbiBpbCByZWNvcmQhIFBvdHJlYmJlIGVzc2VyZSB1dGlsaXp6YXRvIGluIGFsdHJpIGxpbmd1YWdnaS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU4IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5JRCBub24gdmFsaWRvLiBsJ2lkZW50aWZpY2F0aXZvIGRlbCBsaW5ndWFnZ2lvIG5vbiDDqCBwcmVzZW50ZSBuZWwgZGF0YWJhc2UuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1OSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+Tm9uIHB1b2kgY2FuY2VsbGFyZSBxdWVzdG8gY2FtcG8uIFB1b2kgc29sbyBjYW5jZWxsYXJlIGlsIGNvbnRlbnV0byBub24gaWwgY2FtcG8uIE5vbiBjaSBzb25vIGRhdGkgY29udGVudXRpIGNhcmljYXRpIGluIHF1ZXN0byBtb21lbnRvLCBwb3RyZWJiZSBub24gZXNzZXIgc3RhdG8gc2NlbHRvIHVuIGNhbXBvIG8gbm9uIGNpIHNvbm8gY29udGVudXRpIGltcG9zdGF0aSBwZXIgcXVlc3RvIGxpbmd1YWdnaW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+ZXNwb3J0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjEiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkRldmkgc2NvbGxlZ2FydGkgcGVyIHZlZGVyZSBpIGNhbWJpYW1lbnRpLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjIiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkFnZ2l1bmdpIHVuIG51b3ZvIGxpbmd1YWdnaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYzIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5jYW5jZWxsYSBsaW5ndWFnZ2lvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+QWdnaXVuZ2kgbnVvdm8gbGluZ3VhZ2dpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjUiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPk5vbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY2IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5hZ2dpdW5naSBsaW5ndWFnZ2lvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+QmFja3VwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2OCIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+dmFpIGFsIHByaW1vPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2OSIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+dmFpIGFsIHByZWNlZGVudGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzcwIiBuYW1lPSJ0dXJub3Zlcmxpc3QiPgorICAgIDx2YWx1ZT52YWkgYWwgcHJvc3NpbW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzcxIiBuYW1lPSJ0dXJub3Zlcmxpc3QiPgorICAgIDx2YWx1ZT52YWkgYWxsJ3VsdGltbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzIiIG5hbWU9InZpZGVvYm94Ij4KKyAgICA8dmFsdWU+dXRlbnRlIHBhcmxhIChCeSBjbGlja2luZyBoZXJlIHlvdSBjYW4gZ2l2ZSBleGNsdXNpdmUgYXVkaW8gLyBtdXRlIHRoZSBtaWNyb3Bob25lIG9mIG90aGVycyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzczIiBuYW1lPSJ2aWRlb2JveCI+CisgICAgPHZhbHVlPnN1b25vIG9uL29mZjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPlNpc3RlbWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc1IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5JIHR1b2kgc2V0dGFnZ2k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc2IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5jaWFvLDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzciIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPk1vZGlmaWNhIGlsIHByb2ZpbG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc4IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5OdW92aSBtZXNzYWdnaTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc5IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5DYXJpY2EgbnVvdmUgaW1tYWdpbmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgwIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPkVzcG9ydGEgZGF0aSB1dGVudGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgxIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPkxlIG9yZ2FuaXp6YXppb25pIGRldm9ubyBlc2lzdGVyZSB0dXR0ZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgyIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPkluaXppYSBlc3BvcnRhemlvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgzIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPlBlciBvcmdhbml6emF6aW9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODQiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+aW5pemlhIGVzcG9ydGF6aW9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODUiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+RGF0aSB1dGVudGUgLSBJbXBvcnRhemlvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg2IiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPnNjZWdsaSB1c2Vycy54bWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg3IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5pbXBvcnRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4OCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+ZXNwb3J0YSBpbiBYTUwgLSBRdWVzdGkgZmlsZSBwb3Nzb25vIGVzc2VyZSB1c2F0aSBwZXI6IC0gQ29udHJpYnVpcmUgYWwgcHJvZ2V0dG8gLSBJbXBvcnRhcmUgaW4gYWx0cm8gc2lzdGVtYSAtIEJhY2t1cCAtIFBlcnNvbmFsaXp6YXppb25lIC0gSW5zZXJpcmUgbmVsbGEgZGlyZWN0b3kgZGVpIGxpbmd1YWdnaSBkZWxsYSB0dWEgcHJvc3NpbWEgaW5zdGFsbGF6aW9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODkiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPlNjZWdsaSB1biBmaWxlIGRpIGxpbmd1YWdnaW8gZGEgaW1wb3J0YXJlLiBTY2VnbGkgaWwgZ2l1c3RvIGxpbmd1YWdnaW8gZGFsbGEgY29tYm9ib3ghIE5vbiBpbXBvcnRhIGlsIG5vbWUgZGVsIGZpbGUsIGVzc28gc2Fyw6AgaW1wb3J0YXRvIGluIHF1ZXN0byBsaW5ndWFnZ2lvITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTAiIG5hbWU9ImltcG9ydHdpbmRvdyI+CisgICAgPHZhbHVlPmltcG9ydGF6aW9uZSAtIGZpbGUgc2NlbHRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5MSIgbmFtZT0icmVjb3JkaW5nc2F2ZXdpbiI+CisgICAgPHZhbHVlPlNhbHZhIGNvbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkyIiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+Tm9tZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkzIiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+Q29tbWVudG86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NCIgbmFtZT0icmVjb3JkaW5nc2F2ZXdpbiI+CisgICAgPHZhbHVlPnNhdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk1IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5SZWdpc3RyYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTYiIG5hbWU9InJlY29yZGVyIj4KKyAgICA8dmFsdWU+VmlzdWFsaXp6YXRvcmUgZGVsbGUgcmVnaXN0cmF6aW9uaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTciIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPlJlZ2lzdHJhemlvbmkgZGkgc3RhbnplIHByaXZhdGUgZSBwdWJibGljaGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk4IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5VdGVudGk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5OSIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+QWNjZWRpOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDAiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDEiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPlV0ZW50aSBuZWxsYSBzdGFuemE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMiIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+cmljYXJpY2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAzIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5RdWVzdGEgc3RhbnphIMOoIHBpZW5hLiBSaXByb3ZhIGZyYSBxdWFsY2hlIG1pbnV0by48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA0IiBuYW1lPSJyb29tc0xpc3QiPgorICAgIDx2YWx1ZT5wcmVtaSBzdSB1bmEgc3RhbnphIHBlciBhdmVyZSBkZXR0YWdsaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDUiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPlBhcmxhIGNvbiBnbGkgdXRlbnRpIG5lbGxhIHN0YW56YTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA2IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5TdGFuemE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNyIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+VXRlbnRpIGluIHF1ZXN0YSBzdGFuemE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwOCIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+Zmlubzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA5IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT52ZWRpIHJlZ2lzdHJhemlvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDEwIiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5EdXJhdGE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+RGF0YTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDEyIiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5SZWdpc3RyYXppb25lISBOb24gcHVvaSBjYW1iaWFyZSBuZXNzdW5hIGltcG9zdGF6aW9uZSwgw6ggdW5hIHJlZ2lzdHJhemlvbmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMyIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+VmVkaSBxdWVzdGEgcmVnaXN0cmF6aW9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTQiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPlBsYXkgLyBQYXVzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTUiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkF2dmlhIHJlZ2lzdHJhemlvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE2IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5mZXJtYSByZWdpc3RyYXppb25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxNyIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+UmVnaXN0cmF6aW9uZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE4IiBuYW1lPSJyZWNvcmRfZXJyb3JfbXNnIj4KKyAgICA8dmFsdWU+QydlJyBnacOgIHF1YWxjdW5vIGNoZSBzdGEgcmVnaXN0cmFuZG8gaW4gcXVlc3RvIG1vbWVudG86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxOSIgbmFtZT0icmVjb3JkX21lc3NhZ2UiPgorICAgIDx2YWx1ZT5SZWdpc3RyYXppb25lISBkYWxsJ3V0ZW50ZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIwIiBuYW1lPSJyZWNvcmRfY2FuY2VsIj4KKyAgICA8dmFsdWU+Y2FuY2VsbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIxIiBuYW1lPSJyZWNvcmRfY2FuY2FsX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5MYSByZWdpc3RyYXppb25lIHNhcsOgIGNhbmNlbGxhdGEgZSBub24gc2FsdmF0YS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIyIiBuYW1lPSJjYW5jZWxfZGlhbG9nX3Jlc3VtZSI+CisgICAgPHZhbHVlPnJlY3VwZXJhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyMyIgbmFtZT0iY2FuY2VsX2RpYWxvZ19yZXN1bWVfdG9vbHRpcCI+CisgICAgPHZhbHVlPkNoaXVkaSBxdWVzdGEgZmluZXN0cmEgZSByZWN1cGVyYSByZWdpc3RyYXppb25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyNCIgbmFtZT0icGFpbnR0b29sc19lbGxpcHNlX2NvbG9yIj4KKyAgICA8dmFsdWU+Y2FtYmlhIGNvbG9yZSBkZWxsYSBsaW5lYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjUiIG5hbWU9ImNvbG9ycGlja2VyX2hlYWQiPgorICAgIDx2YWx1ZT5TY2VnbGkgY29sb3JlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyNiIgbmFtZT0icGFpbnR0b29sc19saW5lX2Rpc2FibGUiPgorICAgIDx2YWx1ZT5EaXNhYmlsaXRhIC8gQWJpbGl0YSBpbCBjb2xvcmUgZGVsbGEgbGluZWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI3IiBuYW1lPSJwYWludHRvb2xzX2ZpbGxfZGlzYWJsZSI+CisgICAgPHZhbHVlPmNhbWJpYSBpbCBjb2xvcmUgZGkgcmllbXBpbWVudG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI4IiBuYW1lPSJwYWludHRvb2xzX2xpbmVfZGlzYWJsZSI+CisgICAgPHZhbHVlPkRpc2FiaWxpdGEgLyBhYmlsaXRhIHJpZW1waW1lbnRvIGNvbG9yZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjkiIG5hbWU9ImNoYW5nZV93aWR0aF9hcnJvd19kb3duX3NsaWRlciI+CisgICAgPHZhbHVlPkNhbWJpYSBzcGVzc29yZSBsaW5lYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzAiIG5hbWU9ImNsb3NlX3NtYWxsX3BvcHVwcyI+CisgICAgPHZhbHVlPmNoaXVkaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzEiIG5hbWU9InBhaW50X3Rvb2xfbGV0dGVyIj4KKyAgICA8dmFsdWU+Y2FtYmlhIGdyYW5kZXp6YSBjYXJhdHRlcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMyIiBuYW1lPSJyZWNvcmRpbmdzbGlzdF9kZWxldGUiPgorICAgIDx2YWx1ZT5DYW5jZWxsYSByZWdpc3RyYXppb25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzMyIgbmFtZT0icmVjb3JkaW5nc2xpc3RfcmVjb3JkZWRCeUd1ZXN0Ij4KKyAgICA8dmFsdWU+T3NwaXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNCIgbmFtZT0icmVjb3JkaW5nc2xpc3RfcmVjb3JkZWRieSI+CisgICAgPHZhbHVlPkRhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzUiIG5hbWU9InJlY29yZGluZ3NfdGFibGVfaGVhZF9uYW1lIj4KKyAgICA8dmFsdWU+Tm9tZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzYiIG5hbWU9InJlY29yZGluZ3NfdGFibGVfaGVhZF9yb29tIj4KKyAgICA8dmFsdWU+U3RhbnphPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNyIgbmFtZT0icmVjb3JkaW5nc190YWJsZV9oZWFkX2RhdGUiPgorICAgIDx2YWx1ZT5EYXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzOCIgbmFtZT0icmVjb3JkX3N0YXJ0X2NhbmNlbCI+CisgICAgPHZhbHVlPmNhbmNlbGxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzOSIgbmFtZT0icmVjb3JkX3N0YXJ0X3N0YXJ0Ij4KKyAgICA8dmFsdWU+aW5pemlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MCIgbmFtZT0iZmlsZXNicm93c2VyX3RhYmxlX2hlYWRfbmFtZSI+CisgICAgPHZhbHVlPk5vbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQxIiBuYW1lPSJmaWxlc2Jyb3dzZXJfdGFibGVfaGVhZF9kYXRlIj4KKyAgICA8dmFsdWU+RGF0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDIiIG5hbWU9ImNoYXRfY2xlYXJfaGlzdG9yeSI+CisgICAgPHZhbHVlPkNhbmNlbGxhIGkgbG9nIGRlbGxhIGNoYXQgc3VsIHNlcnZlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDMiIG5hbWU9ImNoYXRfb3ZlcmFsbF9oZWFkZXIiPgorICAgIDx2YWx1ZT5DaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NCIgbmFtZT0iY2hhdF9zZW5kX2J0biI+CisgICAgPHZhbHVlPmludmlhIG1lc3NhZ2dpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDUiIG5hbWU9ImNoYXRfZW1vdF9idG4iPgorICAgIDx2YWx1ZT5FbW90aWNvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ2IiBuYW1lPSJjaGF0X2Vtb3Rfd2luIj4KKyAgICA8dmFsdWU+RW1vdGljb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NyIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzIj4KKyAgICA8dmFsdWU+U2NlZ2xpIGkgZGV2aWNlcyBkYSBwdWJibGljYXJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0OCIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2NvbWJvIj4KKyAgICA8dmFsdWU+QXVkaW8gZSBWaWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDkiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPnNvbG8gQXVkaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUwIiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT5zb2xvIFZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1MSIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2NvbWJvIj4KKyAgICA8dmFsdWU+bm8gQXVkaW8vVmlkZW8gKGltbWFnaW5lIHN0YXRpY2EpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1MiIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2luZm9fdGV4dCI+CisgICAgPHZhbHVlPk5lc3N1biBBdWRpby9WaWRlbyBkZWwgdHVvIFBDIHNhcmFubm8gcHViYmxpY2F0aSwgYWwgbG9ybyBwb3N0byBzYXLDoCB2aXN1YWxpenphdGEgbCdpbW1hZ2luZSBkZWwgdHVvIHByb2ZpbG8uIFNjZWdsaSBxdWVzdGEgaW1wb3N0YXppb25lIHNlIGhhaSBwcm9ibGVtaSBkaSBiYW5kYSBvIHZlbG9jaXTDoCBkaSBJbnRlcm5ldC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUzIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX21vbmRheSI+CisgICAgPHZhbHVlPkxVPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV90dWVzZGF5Ij4KKyAgICA8dmFsdWU+TUE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU1IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3dlZG5lc2RheSI+CisgICAgPHZhbHVlPk1FPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NiIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV90aHVyc2RheSI+CisgICAgPHZhbHVlPkdJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NyIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9mcmlkYXkiPgorICAgIDx2YWx1ZT5WRTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTgiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfc2F0dXJkYXkiPgorICAgIDx2YWx1ZT5TQTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTkiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfc3VuZGF5Ij4KKyAgICA8dmFsdWU+RE88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYwIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX21vbmRheSI+CisgICAgPHZhbHVlPkx1bmVkaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjEiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfVHVlc2RheUxhYmVsIj4KKyAgICA8dmFsdWU+TWFydGVkaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjIiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfV2VkbmVzZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5NZXJjb2xlZGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYzIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1RodXJzZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5HaW92ZWRpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9GcmlkYXlMYWJlbCI+CisgICAgPHZhbHVlPlZlbmVyZGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY1IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1NhdHVyZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5TYWJhdG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY2IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1N1bmRheUxhYmVsIj4KKyAgICA8dmFsdWU+RG9tZW5pY2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY3IiBuYW1lPSJjYWxlbmRhcl93ZWVrbnVtYmVyX2hlYWRlciI+CisgICAgPHZhbHVlPkNXPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2OCIgbmFtZT0iY2FsZW5kYXJfd2Vla251bWJlcl9oZWFkZXJUb29sdGlwIj4KKyAgICA8dmFsdWU+Q2FsZW5kYXJpbyBzZXR0aW1hbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY5IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+R2VubmFpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzAiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5GZWJicmFpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzEiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5NYXJ6bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzIiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5BcHJpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDczIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+TWFnZ2lvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3NCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPkdpdWdubzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzUiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5MdWdsaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc2IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+QWdvc3RvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3NyIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPlNldHRlbWJyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzgiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5PdHRvYnJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3OSIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPk5vdmVtYnJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4MCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPkRpY2VtYnJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4MSIgbmFtZT0iY2FsZW5kYXJ3aW5faGVhZGVyIj4KKyAgICA8dmFsdWU+Q2FsZW5kYXJpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODIiIG5hbWU9InJvb21hZG1pbl9sYWJlbE51bWJlck9mUGFydGljaXBhbnRzIj4KKyAgICA8dmFsdWU+UGFydGVjaXBhbnRpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4MyIgbmFtZT0icm9vbVZhbHVlX2FkdmFuY2VkU2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Nb3N0cmEgaSBzZXR0YWdnaSBkZWwgbGF5b3V0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NCIgbmFtZT0icm9vbUFkbWluX2xheW91dF92aWRlb1giPgorICAgIDx2YWx1ZT5YIHwgWTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODUiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfdmlkZW9ZIj4KKyAgICA8dmFsdWU+TGFyZ2hlenphIHwgQWx0ZXp6YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODYiIG5hbWU9InJvb21BZG1pbl9sYXlvdXQiPgorICAgIDx2YWx1ZT5WaWRlby1Db250YWluZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg3IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X21vZCI+CisgICAgPHZhbHVlPk1vZGVyYXRvcmUtQ29udGFpbmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4OCIgbmFtZT0icm9vbUFkbWluX2xheW91dF9tb2RfcG9zIj4KKyAgICA8dmFsdWU+WDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODkiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkxhdmFnbmEtQ29udGFpbmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5MCIgbmFtZT0icm9vbUFkbWluX2xheW91dF93aGl0ZWJvYXJkX3Nob3ciPgorICAgIDx2YWx1ZT5BYmlsaXRhdG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkxIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmRfcG9zIj4KKyAgICA8dmFsdWU+WCB8IFk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkyIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5MYXJnaGV6emEgfCBBbHRlenphPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5MyIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlcyI+CisgICAgPHZhbHVlPkZpbGVzLENoYXQsUGFydGVjaXBhbnRpIC0gQ29udGFpbmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NCIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlc19zaG93Ij4KKyAgICA8dmFsdWU+QWJpbGl0YXRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NSIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlc19wb3MiPgorICAgIDx2YWx1ZT5YIHxZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NiIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlcyI+CisgICAgPHZhbHVlPkxhcmdoZXp6YSB8IEFsdGV6emE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk3IiBuYW1lPSJtb2RlcmF0b3JfZ29uZV9tZXNzYWdlIj4KKyAgICA8dmFsdWU+SWwgbW9kZXJhdG9yZSBoYSBsYXNjaWF0byBsYSBzdGFuemEuIE5lc3N1bm8gw6ggcHJlc2VudGUgaW4gcXVlc3RvIG1vbWVudG8uIFR1IHB1b2kgZGl2ZW50YXJlIG1vZGVyYXRvcmUgbyBhdHRlbmRlcmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5OCIgbmFtZT0ibW9kZXJhdG9yX21lc3NhZ2VfZXZlbnRfbm9fbW9kIj4KKyAgICA8dmFsdWU+Tm9uIGNpIHNvbm8gbW9kZXJhdG9yaSBpbiBxdWVzdGEgc3RhbnphLCBtYSBjaSBzb25vIGRlaSBwYXJ0ZWNpcGFudGkuIFB1b2kgZGl2ZW50YXJlIG1vZGVyYXRvcmUgbyBhdHRlbmRlcmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5OSIgbmFtZT0iZmVlZGJhY2tfdGVtcGxhdGVfc3ViamVjdCI+CisgICAgPHZhbHVlPkZlZWRiYWNrICRBUFBfTkFNRTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDAiIG5hbWU9Imludml0YXRpb25fdGVtcGxhdGVfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSAtIEludml0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDEiIG5hbWU9Imludml0YXRpb25fdGV4dF9mcm9tIj4KKyAgICA8dmFsdWU+TWVzc2FnZ2lvIGRhbGwndXRlbnRlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDIiIG5hbWU9Imludml0YXRpb25fdGV4dF9tZXNzYWdlIj4KKyAgICA8dmFsdWU+TWVzc2FnZ2lvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDMiIG5hbWU9Imludml0YXRpb25fdGV4dF9jbGlja190ZXh0Ij4KKyAgICA8dmFsdWU+Q2xpY2NhIHF1ZXN0byBsaW5rIHBlciBwYXJ0ZWNpcGFyZSBhbGxhIGNvbmZlcmVuemE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwNCIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X2NsaWNrX3RleHRfbGluayI+CisgICAgPHZhbHVlPkNsaWNjYSBxdWkgcGVyIGVudHJhcmUgbmVsbGEgc3RhbnphPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwNSIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X2NsaWNrX3RleHRfaGVscCI+CisgICAgPHZhbHVlPnNlIGhhaSBwcm9ibGVtaSBjb24gaWwgbGluaywgcGVyIGZhdm9yZSBjb3BpYSBlIGluY29sbGEgcXVlc3RvIHN1bCBicm93c2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDYiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9oZWFkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIFNpZ25VcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDciIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9oZWFkMiI+CisgICAgPHZhbHVlPkkgdHVvaSBkYXRpOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDgiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF91c2VybmFtZSI+CisgICAgPHZhbHVlPkxvZ2luOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDkiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9wYXNzIj4KKyAgICA8dmFsdWU+UGFzczo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTEwIiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfbWFpbCI+CisgICAgPHZhbHVlPkVNYWlsOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTEiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9ieWUiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUtVGVhbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTIiIG5hbWU9InJlZ2lzdGVyX21haWxfc3ViamVjdCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSBBY2Nlc3NvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxMyIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSAtIFJlLWltcG9zdGEgcGFzc3dvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE0IiBuYW1lPSJyZXNldF9wYXNzd29yZF90ZW1wbGF0ZV90ZXN0X2xpbmsiPgorICAgIDx2YWx1ZT5DbGljY2Egc3UgcXVlc3RvIGxpbmsgcGVyIGluc2VyaXJlIHVuYSBudW92YSBwYXNzd29yZDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE1IiBuYW1lPSJyZXNldF9wYXNzd29yZF90ZW1wbGF0ZV90ZXh0Ml9saW5rIj4KKyAgICA8dmFsdWU+Q2xpY2NhIHF1aSBwZXIgaW5zZXJpcmUgdW5hIG51b3ZhIHBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNiIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfdGV4dDNfbGluayI+CisgICAgPHZhbHVlPnNlIGhhaSBwcm9ibGVtaSBjb24gaWwgbGluaywgcGVyIGZhdm9yZSBjb3BpYSBlIGluY29sbGEgcXVlc3RvIHN1bCBicm93c2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTciIG5hbWU9InJlc2V0X3Bhc3N3b3JkX21haWxfc3ViamVjdCI+CisgICAgPHZhbHVlPlJlc2V0IGRlbGxhIHBhc3N3b3JkIGRpICRBUFBfTkFNRTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTgiIG5hbWU9ImRhdGVSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPmluc2VyaXNjaSB1bmEgZGF0YSB2YWxpZGEsIHBlciBlc2VtcGlvIDI0LjEyLjIwMDEgKGRkLm1tLnl5eXkpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxOSIgbmFtZT0iZW1haWxSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPkluc2VyaXNjaSB1biBlbWFpbCB2YWxpZG8sIHBlciBlc2VtcGlvIG5hbWVAbWFpbC5jb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIwIiBuYW1lPSJmbG9hdFJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+SW5zZXJpc2NpIHVuIG51bWVybyBkZWNpbWFsZSwgcGVyIGVzZW1waW8gMS4wMDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjEiIG5hbWU9Im51bWJlclJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+SW5zZXJpc2NpIHVuIG51bWVybyAoSW50ZXJvKSwgcGVyIGVzZW1waW8gMTAwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyMiIgbmFtZT0icGhvbmVSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPkluc2VyaXNjaSB1biBudW1lcm8gZGkgdGVsZWZvbm8gdmFsaWRvLCBwZXIgZXNlbXBpbyArKzM5IDA0NjEgMTIzMTIzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyMyIgbmFtZT0idGltZVJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+SW5zZXJpc2NpIHVuIG9yYXJpbyB2YWxpZG8sIHBlciBlc2VtcGlvIDEyOjIzIChoaDptbSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI0IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvdyI+CisgICAgPHZhbHVlPlByb3RldHRvIGRhIHBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNSIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfcGFzc3dvcmRMYWJlbCI+CisgICAgPHZhbHVlPlBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNiIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWRMYWJlbCI+CisgICAgPHZhbHVlPlBlcmlvZG8gZGkgdmFsaWRpdMOgPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNyIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWQiPgorICAgIDx2YWx1ZT5TZW56YSBzY2FkZW56YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjgiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkIj4KKyAgICA8dmFsdWU+UGVyaW9kbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjkiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkIj4KKyAgICA8dmFsdWU+VW5hIHZvbHRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWRGcm9tTGFiZWwiPgorICAgIDx2YWx1ZT5WYWxpZG8gZGE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMSIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWRUb0xhYmVsIj4KKyAgICA8dmFsdWU+VmFsaWRvIGZpbm86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMiIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfTWFpbFN1YmplY3QiPgorICAgIDx2YWx1ZT5JbnZpdG8gYSAkQVBQX05BTUU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMzIiBuYW1lPSJpbnZpdGF0aW9uX2Vycm9yIj4KKyAgICA8dmFsdWU+TmVzc3VuIGludml0byBwcmVzZW50ZSBwZXIgcXVlc3RvIGNvZGljZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM0IiBuYW1lPSJpbnZpdGF0aW9uX2Vycm9yIj4KKyAgICA8dmFsdWU+TCdpbnZpdG8gw6ggZ2nDoCBzdGF0byB1dGlsaXp6YXRvLiBRdWVzdG8gdGlwbyBkaSBpbnZpdG8gbm9uIHB1w7IgZXNzZXJlIHJpdXRpbGl6emF0by48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM1IiBuYW1lPSJpbnZpdGF0aW9uX2Vycm9yIj4KKyAgICA8dmFsdWU+SWwgY29kaWNlIGRpIGludml0byBub24gw6ggdmFsaWRvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzYiIG5hbWU9Imludml0YXRpb25fcGFzcyI+CisgICAgPHZhbHVlPlBhc3N3b3JkOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzciIG5hbWU9Imludml0YXRpb25fcGFzc19idG4iPgorICAgIDx2YWx1ZT5Db250cm9sbGEgcGFzc3dvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM4IiBuYW1lPSJpbnZpdGF0aW9uX3Bhc3NfZXJyb3IiPgorICAgIDx2YWx1ZT5QYXNzd29yZCBub24gdmFsaWRhITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzkiIG5hbWU9IkJyb3dzZXIiPgorICAgIDx2YWx1ZT5Ccm93c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0MCIgbmFtZT0iYXVkaW9fdmlkZW8iPgorICAgIDx2YWx1ZT5TaW5jcm9uaXp6YXppb25lIEF1ZGlvL3ZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0MSIgbmFtZT0iZXJyb3JDb2RlX2ludmFsaWRTZXNzaW9uIj4KKyAgICA8dmFsdWU+QWNjZXNzbyBjb3JyZXR0bywgbWEgbGEgc2Vzc2lvbmUgbm9uIMOoIGF0dGl2YSBvIHByZXNlbnRlIHN1bCBzZXJ2ZXIuIFNhcsOgIGFzc2VnbmF0byB1bmEgbnVvdmEgc2Vzc2lvbmUgZSBkb3Zyw6AgZXNzZXJlIHJpcGV0dXRvIGwnYWNjZXNzby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQyIiBuYW1lPSJlcnJvcmNvZGVfc2V0VXNlck9iamVjdCI+CisgICAgPHZhbHVlPkxhIHNlc3Npb25lIG5vbiDDqCBjb2xsZWdhdGEgbyBub24gaGEgZGlyaXR0aSBkaSBhbW1pbmlzdHJhemlvbmUuIFRoZSBTT0FQIEdhdGV3YXkgbmVjZXNzaXRhIGRpIHVuIHV0ZW50ZSBjb24gZGlyaXR0aSBkaSBhbW1pbmlzdHJhemlvbmUgcGVyIGNyZWFyZSB1biB1dGVudGUuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDMiIG5hbWU9ImVycm9yY29kZV9sb2dpbkJ5UmVtb3RlVXNlciI+CisgICAgPHZhbHVlPkxhIHNlc3Npb25lIG5vbiBoYSB1dGVudGkgcmVtb3RpLWRhdGkgY29ubmVzc2kuIFBvdHJlYmJlIGVzc2VyIHN0YXRvIGNoaWFtYXRvIGlsIFNPQVAtR2F0ZXdheSBwcmltYSBkaSBlZmZldHR1YXJlIGwnYWNjZXNzbyBhbGwnYXBwbGljYXppb25lIG8gw6ggc3RhdG8gdXRpbGl6emF0byB1biBpZCBkaSBzZXNzaW9uZSBlcnJhdG8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0NCIgbmFtZT0iZGVidWdfbWVzc2FnZV9yZWNvcmRpbmciPgorICAgIDx2YWx1ZT5MYSByZWdpc3RyYXppb25lIMOoIGluIGZhc2UgYmV0YSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ1IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWFZhbHVlIj4KKyAgICA8dmFsdWU+eDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDYiIG5hbWU9InByb3BlcnR5UGFuZWxYVmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPngtYXhpczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDciIG5hbWU9InByb3BlcnR5UGFuZWxZVmFsdWUiPgorICAgIDx2YWx1ZT55PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0OCIgbmFtZT0icHJvcGVydHlQYW5lbFlWYWx1ZUxhYmVsIj4KKyAgICA8dmFsdWU+eS1heGlzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0OSIgbmFtZT0icHJvcGVydHlQYW5lbFdpZHRoVmFsdWUiPgorICAgIDx2YWx1ZT53PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1MCIgbmFtZT0icHJvcGVydHlQYW5lbFdpZHRoVmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPmxhcmdoZXp6YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTEiIG5hbWU9InByb3BlcnR5UGFuZWxIZWlnaHRWYWx1ZSI+CisgICAgPHZhbHVlPmg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUyIiBuYW1lPSJwcm9wZXJ0eVBhbmVsSGVpZ2h0VmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPmFsdGV6emE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUzIiBuYW1lPSJwcm9wZXJ0eU9wYWNpdHlTbGlkZXIiPgorICAgIDx2YWx1ZT5DYW1iaWEgdHJhc3BhcmVuemE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU0IiBuYW1lPSJicm93c2VyT3BlbiI+CisgICAgPHZhbHVlPkFwcmkgYnJvd3NlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTUiIG5hbWU9ImJyb3dzZXJDbG9zZSI+CisgICAgPHZhbHVlPkNoaXVkaSBicm93c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1NiIgbmFtZT0iY29ubmVjdGlvbkxvc3RNZXNzYWdlIj4KKyAgICA8dmFsdWU+TGEgY29ubmVzc2lvbmUgYWwgc2VydmUgw6ggc3RhdGEgcGVyc2EuIEUnIG5lY2Vzc2FyaW8gcmljb2xsZWdhcnNpIGFsbCdhcHBsaWNhemlvbmUgZS9vIGNvbnRyb2xsYXJlIGxhIHJldGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1NyIgbmFtZT0iNTU3Ij4KKyAgICA8dmFsdWU+UHVudGF0b3JlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1OCIgbmFtZT0ic3luYyBtZXNzYWdlIGhlYWRlciI+CisgICAgPHZhbHVlPlNpbmNyb25penphemlvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU5IiBuYW1lPSJTeW5jaHJvbml6aW5nIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TaW5jcm9uaXp6YXppb25lIHV0ZW50aSwgYXR0ZW5kZXJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MCIgbmFtZT0iZXhwb3J0VG9TVkciPgorICAgIDx2YWx1ZT5TY2FyaWNhIGNvbWUgU1ZHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MSIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPlNjYXJpY2EgY29tZSBQTkc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYyIiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+U2NhcmljYSBjb21lIEpQRzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjMiIG5hbWU9ImV4cG9ydFRvSW1hZ2UiPgorICAgIDx2YWx1ZT5TY2FyaWNhIGNvbWUgUERGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2NCIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPlNjYXJpY2EgY29tZSBUSUY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY1IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+UHJvbWVtb3JpYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY2IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+Q2F0ZWdvcmlhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjciIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5SaXBldGl6aW9uZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY4IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+bmllbnRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2OSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkxvY2FsaXTDoDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTcwIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+SW5pemlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkZpbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTcyIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+VGl0b2xvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzMiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5Db21tZW50bzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc0IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+SW52aXRhIHBhcnRlY2lwYW50aTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzUiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5HaW9ybmFsaWVybzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzYiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5NZW5zaWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NyIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkFubnVhbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc4IiBuYW1lPSJhbGVydCI+CisgICAgPHZhbHVlPkxhIGRhdGEgZGkgZmluZSDDqCBkb3BvIHF1ZWxsYSBkaSBpbml6aW8gZGVsbCdhcHB1bnRhbWVudG8hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3OSIgbmFtZT0iYWxlcnQiPgorICAgIDx2YWx1ZT5JbnNlcmlzY2kgdW4gdGl0b2xvITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODAiIG5hbWU9IjU4MCI+CisgICAgPHZhbHVlPlJUTDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODEiIG5hbWU9IjU4MSI+CisgICAgPHZhbHVlPkF0dGl2YSBsZSBsYSBzY3JpdHR1cmEgZGVsIHR1byBsaW5ndWFnZ2lvIHZhIGRhIGRlc3RyYSBhIHNpbmlzdHJhIChpbnZlcnRlIG9yZGluZSBwYXJvbGUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MiIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT5DcnVzY290dG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgzIiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPkd1YXJkYSBldmVudGkgZSBjb25mZXJlbnplIHJlZ2lzdHJhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg0IiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPkNvbmZlcmVuemEgLSBDb25mZXJlbnplIGNvbiA0IChmaW5vIGEgMTYpIHV0ZW50aTsgdHV0dGkgaGFubm8gYWNjZXNzbyBhIGF1ZGlvIGUgdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg1IiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPkV2ZW50aSAtIENvbmZlcmVuemUgZmlubyBhIDIwMCB1dGVudGkuIFNvbG8gaWwgbW9kZXJhdG9yZSBoYSBhdWRpbyBlIHZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4NiIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT5DcmVhIHV0ZW50aSwgc3RhbnplLCBvcmdhbml6emF6aW9uaSArIGNhbWJpYSBjb25maWd1cmF6aW9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODciIG5hbWU9InJvb20gQWRtaW5pc3RyYXRpb24gcm9vbWNsaWVudHMgbGlzdCI+CisgICAgPHZhbHVlPlV0ZW50aSBuZWxsYSBzdGFuemEgb3JhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4OCIgbmFtZT0icm9vbSBBZG1pbmlzdHJhdGlvbiByb29tY2xpZW50cyBsaXN0Ij4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg5IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTAiIG5hbWU9InJvb20gQWRtaW5pc3RyYXRpb24gcm9vbWNsaWVudHMgbGlzdCI+CisgICAgPHZhbHVlPkQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkxIiBuYW1lPSJzd2Ygc3luYyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2FyaWNhbWVudG8gZG9jdW1lbnRvLiBBc3BldHRhcmUgZmluY2jDqSBpIGNsaWVudCBzb25vIHNpbmNyb25penphdGkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5MiIgbmFtZT0idXBsb2FkIGRpYWxvZyI+CisgICAgPHZhbHVlPkNhcmljYW1lbnRvIGNvbXBsZXRhdG8sIGNvbnZlcnNpb25lIGRlbCBkb2N1bWVudG8gaW4gY29yc28gLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5MyIgbmFtZT0idXBsb2FkIGRpYWxvZyI+CisgICAgPHZhbHVlPkluaXppYSBjYXJpY2FtZW50bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTQiIG5hbWU9InVwbG9hZCBkaWFsb2ciPgorICAgIDx2YWx1ZT5DYXJpY2EgZSBpbXBvcnRhIGlsIGRpYWxvZ28uIFNjZWdsaSB1biBmaWxlIGRhbCBkaXNjby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk1IiBuYW1lPSJ1cGxvYWQgRGlhbG9nIj4KKyAgICA8dmFsdWU+QW5udWxsYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTYiIG5hbWU9InVwbG9hZCBEaWFsb2ciPgorICAgIDx2YWx1ZT5TY2VsdGEgZmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTciIG5hbWU9ImFkbWluaXN0cmF0aW9uIG5hdmlnYXRpb24iPgorICAgIDx2YWx1ZT5Db25uZXNzaW9uaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTgiIG5hbWU9ImNvbmZhZG1pbiB2YWx1ZSBsaXN0Ij4KKyAgICA8dmFsdWU+VmFsdWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk5IiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+U3RyZWFtaWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAwIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+TG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAxIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+Q29ubmVzc28gZGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAyIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+Um9vbSAvIFNjb3BlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwMyIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPkNhY2NpYSB1dGVudGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA0IiBuYW1lPSJraWNrIHVzZXIgY29uZmlybWF0aW9uIGRpYWxvZyI+CisgICAgPHZhbHVlPkNhY2NpYSB1dGVudGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA1IiBuYW1lPSJraWNrIHVzZXIgY29uZmlybWF0aW9uIGRpYWxvZyI+CisgICAgPHZhbHVlPlNlaSBzaWN1cm8gZGkgdm9sZXIgY2hpdWRlcmUgbGEgY29ubmVzc2lvbmUgYSBxdWVzdG8gY2xpZW50PyBJbCBjbGllbnQgc2Fyw6Agc29sYW1lbnRlIHJpbW9zc28gZGFsbGEgc3RhbnphIGNvcnJlbnRlLiBJbCBjbGllbnQgcG90csOgIHJpY29sbGVnYXJzaS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA2IiBuYW1lPSJraWNrIHVzZXIgbWVzc2FnZSBkaWFsb2ciPgorICAgIDx2YWx1ZT5MYSB0dWEgc2Vzc2lvbmUgw6ggc3RhdGEgY2hpdXNhIGRhIHVuIGFtbWluaXN0cmF0b3JlIG8gbW9kZXJhdG9yZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDciIG5hbWU9InVzZXJhbHRlcnNlbGZfcGhvbmUiPgorICAgIDx2YWx1ZT5UZWxlZm9ubzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDgiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPkwndXRlbnRlIMOoIGlsIG1vZGVyYXRvcmUgZGkgcXVlc3RhIHN0YW56YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDkiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPkwndXRlbnRlIMOoIGFiaWxpdGF0byBhIGRpc2VnbmFyZSBzdWxsYSBsYXZhZ25hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMCIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+KFJpKSBhdHRpdmEgQXVkaW8vVmlkZW8gbyBjYW1iaWEgbGUgaW1wb3N0YXppb25pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMSIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+QWJpbGl0YSBxdWVzdG8gdXRlbnRlIGEgZGlzZWduYXJlIHN1bGxhIGxhdmFnbmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEyIiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5SaW11b3ZpIHBvc3NpYmlsaXTDoCBkaSBkaXNlZ25hcmUgc3VsbGEgbGF2YWduYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTMiIG5hbWU9ImNvbmZlcmVuY2VQYW5lbHMiPgorICAgIDx2YWx1ZT5VdGVudGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE0IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+RmlsZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE1IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+TGF2YWduYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTYiIG5hbWU9ImNvbmZlcmVuY2VQYW5lbHMiPgorICAgIDx2YWx1ZT5DaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxNyIgbmFtZT0ib3JnYW5pemF0aW9uIGNob29zZSBpbmZvIj4KKyAgICA8dmFsdWU+SWwgdHVvIGFjY291bnQgw6ggYXNzZWduYXRvIGEgcGnDuSBvcmdhbml6emF6aW9uaS4gUGVyIGZhdm9yZSBzY2VnbGluZSB1bmEgcGVyIHF1ZXN0YSBzZXNzaW9uZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE4IiBuYW1lPSJlcnJvciBtZXNzYWdlIHJvb20gZnVsbCI+CisgICAgPHZhbHVlPlF1ZXN0YSBzdGFuemEgw6ggcGllbmEgYWwgbW9tZW50by4gUGVyIGZhdm9yZSByaXByb3ZhIHBpw7kgdGFyZGkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxOSIgbmFtZT0icm9vbXR5cGVzIj4KKyAgICA8dmFsdWU+VGlwbyBzdGFuemE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIwIiBuYW1lPSJhcHBvaW50ZWRfcm9vbSI+CisgICAgPHZhbHVlPlN0YW56YSBhcHB1bnRhbWVudGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIxIiBuYW1lPSJzZXJ2ZXJ0aW1lIj4KKyAgICA8dmFsdWU+T3JhIGRlbCBzZXJ2ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIyIiBuYW1lPSJpbnZfcmVtaW5kZXJfdGVtcGxhdGVfaGVhZCI+CisgICAgPHZhbHVlPkFnZW5kYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjMiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2Zyb20iPgorICAgIDx2YWx1ZT5NZXNzYWdnaW8gZGFsbCd1dGVudGU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNCIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfbWVzc2FnZSI+CisgICAgPHZhbHVlPk1lc3NhZ2dpbzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI1IiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9jbGlja190ZXh0Ij4KKyAgICA8dmFsdWU+Q2xpY2NhIHF1ZXN0byBsaW5rIHBlciBwYXJ0ZWNpcGFyZSBhbGxhIHZpZGVvY29uZmVyZW56YTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI2IiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9jbGlja190ZXh0X2xpbmsiPgorICAgIDx2YWx1ZT5DbGljY2EgcXVpIHBlciBlbnRyYXJlIG5lbGxhIHN0YW56YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjciIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2NsaWNrX3RleHRfaGVscCI+CisgICAgPHZhbHVlPnNlIGhhaSBwcm9ibGVtaSBjb24gaWwgbGluaywgY29waWEgZSBpbmNvbGxhIHN1bCBicm93c2VyIGlsIHNlZ3VlbnRlIGxpbms6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyOCIgbmFtZT0iYnRuX3NlYXJjaF9pbnRlcm4iPgorICAgIDx2YWx1ZT5yaWNlcmNhIGludGVybmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI5IiBuYW1lPSJidG5fc2VhcmNoX2V4dGVybiI+CisgICAgPHZhbHVlPnV0ZW50ZSBlc3Rlcm5vPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzMCIgbmFtZT0ibGJsX3ByZW5hbWUiPgorICAgIDx2YWx1ZT50aXRvbG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMxIiBuYW1lPSJsYmxfbmFtZSI+CisgICAgPHZhbHVlPm5vbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMyIiBuYW1lPSJsYmxfZW1haWwiPgorICAgIDx2YWx1ZT5FLW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMzIiBuYW1lPSJsb2dvdXRDb25maXJtX3RpdGxlIj4KKyAgICA8dmFsdWU+Q29uZmVybWEgdXNjaXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNCIgbmFtZT0ibG9nb3V0Q29uZmlybV9zdXJlX3RvX2xvZ291dF9xdWVzdGlvbiI+CisgICAgPHZhbHVlPlNlaSBzaWN1cm8gZGkgdm9sZXIgdXNjaXJlPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzUiIG5hbWU9Im1haW4gbWVudSI+CisgICAgPHZhbHVlPkF6aW9uaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzYiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5TdGFuemEgZGVtbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5PcmFyaW8gZGVtbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzgiIG5hbWU9Im1lZXRpbmcgVGltZXIiPgorICAgIDx2YWx1ZT5PcmFyaW8gbWVldGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzkiIG5hbWU9Im1lZXRpbmcgVGltZXIiPgorICAgIDx2YWx1ZT5RdWVzdGEgc3RhbnphIMOoIHVuYSBzdGFuemEgZGVtby4gUGVyIGRpc2FiaWxpdGFyZSBxdWVzdG8gYXZ2aXNvIMOoIG5lY2Vzc2FyaW8gYXR0aXZhcmUgdW5hIGNvbmZlcmVuemEgcHJpdmF0YSBwZXIgdXNvIHJpc3RyZXR0byBvIGF0dGl2YXJlIHVuIHNlcnZlciBkZWRpY2F0by4gU2FyYWkgYXV0b21hdGljYW1lbnRlIHNjb25uZXNzbyBpbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQwIiBuYW1lPSJtZWV0aW5nIHJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5tb2RlcmF0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDEiIG5hbWU9Im1vZGVyYXRlZCByb29tIHdhaXRpbmcgbWVzc2FnZSI+CisgICAgPHZhbHVlPlBlcmZhdm9yZSBhdHRlbmRpIGZpbmNow6ggdW4gbW9kZXJhdG9yZSBzaSBjb2xsZWdhIGFsbGEgc3RhbnphLiBJbCBtb2RlcmF0b3JlIHB1w7IgZXNzZXJlIHVuIGluc2VnbmFudGUsIHVuIGFtbWluaXN0cmF0b3JlIG8gaWwgY3JlYXRvcmUgZGVsbGEgc3RhbnphLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDIiIG5hbWU9ImVycm9yIHBvcHVwIj4KKyAgICA8dmFsdWU+T2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQzIiBuYW1lPSJ3aW5kb3cgc2NyZWVuc2hhcmluZyI+CisgICAgPHZhbHVlPkNvbmRpdmlzaW9uZSBzY2hlcm1vIGluIGluZ3Jlc3NvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0NCIgbmFtZT0id2luZG93IHNjcmVlbiBzaGFyaW5nIj4KKyAgICA8dmFsdWU+QyfDqCB1bmEgbnVvdmEgY29uZGl2aXNpb25lIGRpIHNjaGVybW8gaW4gaW5ncmVzc28gZGFsbCd1dGVudGU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0NSIgbmFtZT0id2luZG93IHNjcmVlbiBzaGFyaW5nIj4KKyAgICA8dmFsdWU+SW5pemlhIGNvbmRpdmlzaW9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDYiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QWdnaXVuZ2kgbnVvdm8gbWVldGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDciIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+U3RhbnphIG1lZXRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ4IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPlN0YW56YSBldmVudGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ5IiBuYW1lPSJtYWluIG1lbnUgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPk1vZGVyYXppb25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1MCIgbmFtZT0ibWVudSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+VXRlbnRpIG1vZGVyYXRvcmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUxIiBuYW1lPSJtZW51IG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5TdGFuemUgbW9kZXJhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUyIiBuYW1lPSJtb2RlcmF0b3Igb3JnIj4KKyAgICA8dmFsdWU+TTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTMiIG5hbWU9ImNvbmZpcm0gbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPlZ1b2kgbW9kaWZpY2FyZSBxdWVzdG8gdXRlbnRlIGEgZGl2ZW50YXJlIG1vZGVyYXRvcmUgZGVsbCdvcmdhbml6emF6aW9uZT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU0IiBuYW1lPSJlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+UGVyZmF2b3JlIHNjZWdsaSB1biBvcmdhbml6emF6aW9uZSBwcmltYSBkaSBhZ2dpdW5nZXJlIGwndXRlbnRlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTUiIG5hbWU9ImNob29zZSB1c2VyIHdpbmRvdyI+CisgICAgPHZhbHVlPk9yZ2FuaXp6YXppb25lIC0gTW9kZXJhdG9yaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTYiIG5hbWU9Im1vZGVyYXRvciBvcmcgdXNlcnMiPgorICAgIDx2YWx1ZT5TZWkgc2ljdXJvIGRpIGNhbmNlbGxhcmUgcXVlc3RvIHV0ZW50ZSBkYWxsJ29yZ2FuaXp6YXppb25lPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTciIG5hbWU9Im9yZyBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+UXVlc3RvIHV0ZW50ZSDDqCBtb2RlcmF0b3JlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1OCIgbmFtZT0ib3JnIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5RdWVzdG8gdXRlbnRlIG5vbiDDqCBtb2RlcmF0b3JlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1OSIgbmFtZT0iZXJyb3IgbWVzc2FnZSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+VnVvaSBjaGUgcXVlc3RvIHV0ZW50ZSBub24gc2lhIG1vZGVyYXRvcmUgZGVsbCdvcmdhbml6emF6aW9uZT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYwIiBuYW1lPSJtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+QWdnaXVuZ2kgbyBjYW5jZWxsYSB1dGVudGkgbyBzdGFuemUgZGVsbGEgdHVhIG9yZ2FuaXp6YXppb25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MSIgbmFtZT0iZGVsZXRlIGNvbmZpcm0gcXVlc3Rpb24iPgorICAgIDx2YWx1ZT5TZWkgc2ljdXJvIGRpIGNhbmNlbGxhcmUgcXVlc3RvIHJlY29yZD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYyIiBuYW1lPSJkZWxldGUgY29uZmlybSBxdWVzdGlvbiB1c2VyIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5TZWkgc2ljdXJvIGRpIGNhbmNlbGxhcmUgcXVlc3RvIHV0ZW50ZSBkYWxsJ29yZ2FuaXp6YXppb25lPyBTYXLDoCBjYW5jZWxsYXRvIGlsIGxlZ2FtZSB0cmEgdXRlbnRlIGUgb3JnYW5penphemlvbmUsIHBlciBjYW5jZWxsYXJlIGNvbXBsZXRhbWVudGUgbCd1dGVudGUgZGV2aSBjb2xsZWdhcnRpIGFsIHBhbm5lbGxvIGRpIGFtbWluaXN0cmF0b3JlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjMiIG5hbWU9ImVycm9yIG1lc3NhZ2Ugc2VsZiBkZWxldGluZyI+CisgICAgPHZhbHVlPk5vbiBwdW9pIGNhbmNlbGxhcmUgdGUgc3Rlc3NvITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjQiIG5hbWU9ImVycm9yIG1lc3NhZ2UgYXV0aCI+CisgICAgPHZhbHVlPlF1ZXN0byBtZXRvZG8gaGEgYmlzb2dubyBkaSB1biBhY2NvdW50IGRhIGFtbWluaXN0cmF0b3JlIHBlciBlc3NlcmUgY2hpYW1hdG8hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NSIgbmFtZT0iZXJyb3IgbWVzc2FnZSBTT0FQIj4KKyAgICA8dmFsdWU+Tm9uIGNpIHNvbm8gc2Vzc2lvbmkgY29sbGVnYXRlIGEgcXVlc3RvIElELjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjYiIG5hbWU9ImVycm9yIG1lc3NhZ2UgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPlF1ZXN0byB1dGVudGUgw6ggdW4gYW1taW5pc3RyYXRvcmUgbyBtb2RlcmF0b3JlLiBQdW9pIGVkaXRhcmUgcXVlc3RvIGFjY291bnQgc29sbyBkYWwgcGFubmVsbG8gZGkgYW1taW5pc3RyYXRvcmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NyIgbmFtZT0iZW1haWwgdmVyaWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+UGVyIGNvbXBsZXRhcmUgbGEgcmVnaXN0cmF6aW9uZSBwZXIgZmF2b3JlIGNsaWNjYSBzdWwgc2VndWVudGUgbGluayBvIGNvcGlhIGwndXJsIG5lbCB0dW8gYnJvd3Nlci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY4IiBuYW1lPSJlbWFpbCB2ZXJpZmljYXRpb24iPgorICAgIDx2YWx1ZT5jbGljY2EgcGVyIGNvbnZhbGlkYXJlIGxhIHR1YSBlLW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY5IiBuYW1lPSJlcnJvck1lc3NhZ2VfVXNlckFjdGl2YXRpb25TZXJ2bGV0IFtBY3RpdmF0ZVVzZXJdIj4KKyAgICA8dmFsdWU+TmVzc3VuIHV0ZW50ZSDDqCBzdGF0byB0cm92YXRvIHBlciBxdWVzdG8gY29kaWNlIGhhc2guPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3MCIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPlF1ZXN0byB1dGVudGUgw6ggZ2nDoCBzdGF0byBhdHRpdmF0byE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjcxIiBuYW1lPSJlcnJvck1lc3NhZ2VfVXNlckFjdGl2YXRpb25TZXJ2bGV0IFtBY3RpdmF0ZVVzZXJdIj4KKyAgICA8dmFsdWU+SGFpIGF0dGl2YXRvIGNvcnJldHRhbWVudGUgaWwgdHVvIHV0ZW50ZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjcyIiBuYW1lPSJlcnJvck1lc3NhZ2VfVXNlckFjdGl2YXRpb25TZXJ2bGV0IFtBY3RpdmF0ZVVzZXJdIj4KKyAgICA8dmFsdWU+Q29sbGVnYXRpIG9yYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzMiIG5hbWU9ImxvZ2luRXJyb3JNZXNzYWdlID0gdXNlciB3YXMgbm90IGFjdGl2YXRlZCI+CisgICAgPHZhbHVlPklsIHR1byB1dGVudGUgbm9uIMOoIGF0dGl2by4gUGVyIHByaW1hIGNvc2EgY2xpY2NhIHN1bCBsaW5rIHByZXNlbnRlIG5lbGxhIG1haWwgcmljZXZ1dGEgbmVsIHByb2Nlc3NvIGRpIHJlZ2lzdHJhemlvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc0IiBuYW1lPSJyZWdpc3RlciB2ZXJpZmljYXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPlRpIHNlaSByZWdpc3RyYXRvIGNvcnJldHRhbWVudGUuIEUnIHN0YXRhIGludmlhdGEgdW5hIGUtbWFpbCBwZXIgbGEgdmVyaWZpY2EgZGVsbCd1dGVudGUuIFBlciBmYXZvcmUgY29udHJvbGxhIGxhIHR1YSBwb3N0YSBpbiBhcnJpdm8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3NSIgbmFtZT0icGFydGljaXBhbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+UmltdW92aSBpbCBydW9sbyBkaSBtb2RlcmF0b3JlIGRhIHF1ZXN0byB1dGVudGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3NiIgbmFtZT0icGFydGljaXBhbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+QXNzZWduYSBpIGRpcml0dGkgZGkgbW9kZXJhdG9yZSBhIHF1ZXN0byB1dGVudGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3NyIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+VXRlbnRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3OCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QWNjZXNzbyBhbGxhIGxhdmFnbmEgdmlydHVhbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc5IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Nb2RlcmF0b3JlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+TW9kZXJhemlvbmU6IFBlciBmYXZvcmUgc2NlZ2xpIGRhbGxhIGxpc3RhIGdsaSB1dGVudGkgYSBjdWkgYXNzZWduYXJlIGkgZGlyaXR0aSBkZWxsYSBsYXZhZ25hIHZpcnR1YWxlLCBsYSBtb2RlcmF6aW9uZSBvIGlsIHZpZGVvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODEiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlF1ZXN0byB1dGVudGUgw6ggZ2nDoCBtb2RlcmF0b3JlLCBoYSBhdXRvbWF0aWNhbWVudGUgaSBkaXJpdHRpIGRpIGRpc2Vnbm8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MiIgbmFtZT0iZXZlbnQgdXNlciBsaXN0IGVycm9yIj4KKyAgICA8dmFsdWU+U2VpIHR1ISBOb24gcHVvaSB0b2dsaWVydGkgaSBkaXJpdHRpIGRpIGFtbWluaXN0cmF0b3JlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODMiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFiaWxpdGEgcXVlc3RvIHV0ZW50ZSBhIHB1YmJsaWNhcmUgVmlkZW8gZSBBdWRpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODQiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlJpbXVvdmkgQXVkaW8gZSBWaWRlbyBhIHF1ZXN0byB1dGVudGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg1IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Wb3JyZWkgcmljZXZlcmUgbGEgbW9kZXJhemlvbmUgZGkgcXVlc3RhIHN0YW56YS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg2IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Wb3JyZWkgZGlzZWduYXJlIHN1bGxhIGxhdmFnbmEgdmlydHVhbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg3IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Wb3JyZWkgY29uZGl2aWRlcmUgaWwgbWlvIEF1ZGlvIGUgVmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg4IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5TZWkgaWwgbW9kZXJhdG9yZSBkZWxsYSBzdGFuemE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg5IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5IYWkgaSBkaXJpdHRpIGRpIGRpc2VnbmFyZSBzdWxsYSBsYXZhZ25hIHZpcnR1YWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5MCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+U2VpIGFiaWxpdGF0byBhIGludmlhcmUgaWwgdHVvIEF1ZGlvIGUgVmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkxIiBuYW1lPSJlcnJvcnR5cGUiPgorICAgIDx2YWx1ZT5NZXNzYWdnaW8gYWwgbW9kZXJhdG9yZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTIiIG5hbWU9ImFwcGx5IGZvciBtb2QgbWVzc2FnZSI+CisgICAgPHZhbHVlPkwndXRlbnRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5MyIgbmFtZT0iYXBwbHkgZm9yIG1vZCBtZXNzYWdlIj4KKyAgICA8dmFsdWU+dm9ycmViYmUgZGl2ZW50YXJlIG1vZGVyYXRvcmUuIFV0aWxpenphIGwnaWNvbmEgZGkgc3RhdG8gdmljaW5vIGFsbCd1dGVudGUgbmVsbGEgbGlzdGEgdXRlbnRpIHBlciBhZ2dpdW5nZXJlIGUgcmltdW92ZXJlIGkgbW9kZXJhdG9yaS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk0IiBuYW1lPSJhcHBseSBmb3Igd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPnZvcnJlYmJlIGRpc2VnbmFyZSBzdWxsYSBsYXZhZ25hIHZpcnR1YWxlLiBVdGlsaXp6YSBsJ2ljb25hIGRpIHN0YXRvIHZpY2lubyBhbGwndXRlbnRlIG5lbGxhIGxpc3RhIHV0ZW50aSBwZXIgYWdnaXVuZ2VyZSBlIHJpbXVvdmVyZSBpIGRpcml0dGkgZGkgdXNvIGRlbGxhIGxhdmFnbmEgdmlydHVhbGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5NSIgbmFtZT0iNjk1Ij4KKyAgICA8dmFsdWU+dm9ycmViYmUgY29uZGl2aWRlcmUgaSBzdW9pIEF1ZGlvIGUgVmlkZW8uIFV0aWxpenphIGwnaWNvbmEgZGkgc3RhdG8gdmljaW5vIGFsbCd1dGVudGUgbmVsbGEgbGlzdGEgdXRlbnRpIHBlciBhZ2dpdW5nZXJlIGUgcmltdW92ZXJlIGkgZGlyaXR0aSBkaSBjb25kaXZpc2lvbmUgQXVkaW8gZSBWaWRlby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk2IiBuYW1lPSJtb2RlcmF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EZXZpIGF0dGVuZGVyZSBmaW5vIGEgcXVhbmRvIHVuIG1vZGVyYXRvcmUgZW50cmEgbmVsbGEgc3RhbnphLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTciIG5hbWU9ImNhbGVuZGFyIGJ1dHRvbiI+CisgICAgPHZhbHVlPkFubnVsbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk4IiBuYW1lPSJjYWxlbmRhciBidXR0b24iPgorICAgIDx2YWx1ZT5TYWx2YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTkiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPkdpb3JubzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDAiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPk1lc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAxIiBuYW1lPSJjYWxlbmRhciBjb21wb25lbnQiPgorICAgIDx2YWx1ZT5Bbm5vPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwMiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkNhcmljYSBGaWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwMyIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkFnZ2l1bmdpIGRpcmVjdG9yeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDQiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5BZ2dpb3JuYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDUiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5DZXN0aW5vPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwNiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPk1pZWkgRmlsZSAoU3BhemlvIHByaXZhdG8pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwNyIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkZpbGVzIGRlbGxhIHN0YW56YSAoU3BhemlvIHB1YmJsaWNvKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDgiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5BZ2dpdW5naSBGaWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwOSIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkFnZ2l1bmdpIGRpcmVjdG9yeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTAiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5DYW5jZWxsYSBkaXJlY3Rvcnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzExIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+TW9kaWZpY2Egbm9tZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTIiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5OdW92YSBkaXJlY3Rvcnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzEzIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+U2VpIHNpY3VybyBkaSB2b2xlciBjYW5jZWxsYXJlIHF1ZXN0byBlbGVtZW50bz88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE0IiBuYW1lPSJ1c2VyIGFkbWluIj4KKyAgICA8dmFsdWU+UmljZXJjYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTUiIG5hbWU9InVzZXIgYWRtaW4iPgorICAgIDx2YWx1ZT5SaWNlcmNhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxNiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkFwcmkgZG9jdW1lbnRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxNyIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPk1vc3RyYSB0dXR0aSBpIGZpbGUgKFZpc3VhbGl6emF6aW9uZSBhZCBhbGJlcm8pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxOCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkNoaXVkaSBkb2N1bWVudG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE5IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+Q2FuY2VsbGEgZmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjAiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Ob24gc2VpIGF1dG9yaXp6YXRvIGEgZGlzZWduYXJlIHN1bGxhIGxhdmFnbmEuIERldmkgZGl2ZW50YXJlIG1vZGVyYXRvcmUgbyBhbG1lbm8gcmljZXZlcmUgaSBkaXJpdHRpIHBlciBsYXZvcmFyZSBzdWxsYSBsYXZhZ25hLiBDaGllZGkgYWwgbW9kZXJhdG9yZSBsJ2Fzc2VnbmF6aW9uZSBkaSBxdWVzdGkgZGlyaXR0aS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIxIiBuYW1lPSJwcm9wZXJ0eSBwYW5lbCI+CisgICAgPHZhbHVlPlByb3ByaWV0w6AgZG9jdW1lbnRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyMiIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+QXZ2aWEgQ2xpZW50IChleHRlcm5hbCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIzIiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5BdnZpYSBDbGllbnQgKEhUVFApPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNCIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+VW4gdXRlbnRlIHZ1b2wgY29uZGl2aWRlcmUgaWwgc3VvIHNjaGVybW8uIFZ1b2kgdmVkZXJsbz88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI1IiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5PcmEgc3RhaSBjb25kaXZpZGVuZG8gaWwgdHVvIGRlc2t0b3AuIFBlciBpbnRlcnJvbXBlcmUgbGEgc2Vzc2lvbmUgZGkgY29uZGl2aXNpb25lLCBwcmVtaSBzdWwgYm90dG9uZSBkaSBTdG9wIG5lbGxhIGZpbmVzdHJhIGRpIGNvbmRpdmlzaW9uZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI2IiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5Db25kaXZpc2kgc2Vzc2lvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI3IiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5TdGFpIGdpw6AgY29uZGl2aWRlbmRvIGlsIHR1byBkZXNrdG9wITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+VmlzdWFsaXp6YXRvcmUgRGVza3RvcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjkiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+RXNjaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzAiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+Q29uZGl2aWRpIERlc2t0b3A8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMxIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkNsaWNjYSBhdnZpYSBwZXIgcHViYmxpY2FyZSBpbCB0dW8gdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMyIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkF2dmlhIGNvbmRpdmlzaW9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzMiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+RmVybWEgY29uZGl2aXNpb25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TY2VnbGkgbCdhcmVhIGRlbCB0dW8gc2NoZXJtbzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM1IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkNhbWJpYSBsYXJnaGV6emE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM2IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkxhIGNvbmRpdmlzaW9uZSBoYSBmaW5pdG8gbGEgc2Vzc2lvbmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5DYW1iaWEgYWx0ZXp6YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+WC1PZmZzZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM5IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlktT2Zmc2V0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0MCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5MYXJnaGV6emE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0MSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5BbHRlenphOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDIiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+Q29ubmVzc2lvbmUgY2hpdXNhIGRhbCBTZXJ2ZXIhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0MyIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5Bbm51bGxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NCIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5BdnZpYSBFeHRlcm5hbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDUiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+SWYgeW91IGNsb3NlIHRoaXMgc2Vzc2lvbiBjb21wbGV0ZWx5IHlvdSBhcmUgbm90IGFibGUgdG8gcmVzdGFydCB0aGUgdmlld2VyIGZvciB0aGlzIHNlc3Npb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NiIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5Db25maXJtIENsb3NpbmcgVmlld2VyIFNlc3Npb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ3IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPkNvbmRpdmlkaSBzY2hlcm1vPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0OCIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5SZWdpc3RyYSBzZXNzaW9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDkiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5Dby1Ccm93c2luZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTAiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5Pb29wcywgLi4uIEZpcmVmb3ggb24gV2luZG93cyBkb2VzIG5vdCBzaG93IGNsZWFyIENvLUJyb3dzaW5nLiBQbGVhc2UgdXNlIGFub3RoZXIgQnJvd3NlciBmb3IgdXNpbmcgdGhlIENvLUJyb3dzaW5nIGZlYXR1cmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MSIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPlByZWNlZGVudGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUyIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+QXZhbnRpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MyIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPlJpY2FyaWNhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1NCIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPkhvbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU1IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+Q2FyaWNhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1NiIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPkltcG9zdGEgcXVlc3RvIHNpdG8gY29tZSBkZWZhdWx0IG5lbCB0dW8gcHJvZmlsby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU3IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+VGVzdCBTZXR1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTgiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5WZXJpZmljYSBsZSBpbXBvc3RhemlvbmkgZGVsIHR1byBtaWNyb2Zvbm8gZSBkZWxsYSB0dWEgY2FtIHByaW1hIGRpIGVudHJhcmUgbmVsbGEgc3RhbnphLCByZWdpc3RyYW5kbyBxdWFsY2hlIHNlY29uZG8uIFBvdHJhaSBwb2kgcml2ZWRlcmUgbGEgcmVnaXN0cmF6aW9uZSBwZXIgdmVyaWZpY2FyZSBsJ2F1ZGlvIGUgaWwgdmlkZW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1OSIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPk5vbiBtb3N0cmFyZSBwacO5IHF1ZXN0byB0ZXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPkFubnVsbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYxIiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+QXZ2aWEgY29uZmVyZW56YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjIiIG5hbWU9ImVkaXQgdmlkZW8gc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Ob24gcmljaGllZGVyZSBhbmNvcmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYzIiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+UkVDPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlBMQVk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY1IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+UHVvaSBwcm9jZWRlcmUgc2VuemEgdmVyaWZpY2FyZSBzZSBoYWkgaW50ZW56aW9uZSBkaSBub24gY29uZGl2aWRlcmUgbGEgdHVhIHZvY2UgZSB2aWRlby4gSSBwYXJ0ZWNpcGFudGkgc2VuemEgYXVkaW8gZSB2aWRlbyBwb3Nzb25vIHVndWFsbWVudGUgdXRpbGl6emFyZSBsYSBsYXZhZ25hLCBjb25kaXZpZGVyZSBpbCBwcm9wcmlvIGRlc2t0b3AgbyBzY3JpdmVyZSBtZXNzYWdnaSBpbiBjaGF0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjYiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5TVE9QPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NyIgbmFtZT0iNzY3Ij4KKyAgICA8dmFsdWU+TGV2ZWwtTWV0ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY4IiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+UHJlbWkgQXZ2aWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY5IiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+QXZ2aWEgY29uZmVyZW56YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzAiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5BdnZpYSBldmVudG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzcxIiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+U2NlZ2xpIGxhIHN0YW56YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzIiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5WZXJpZmljYSBpbXBvc3Rhemlvbmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzczIiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+QXZ2aWEgY29uZmVyZW56YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzQiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5Db21lIGZhcmUgdW5hIHZpZGVvY29uZmVyZW56YTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc1IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+QXZ2aWEgcmVnaXN0cmF6aW9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzYiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5Ob24gbW9zdHJhdGUgaWwgdGVzdCBBdWRpby9WaWRlbyAocmVnaXN0cmF6aW9uZSkgcHJpbWEgZGkgZW50cmFyZSBpbiB1bmEgY29uZmVyZW56YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzciIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT5TdGFuemUgcHViYmxpY2hlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3OCIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPkxlIHN0YW56ZSBwdWJibGljaGUgc29ubyBhY2Nlc3NpYmlsaSBkYSB0dXR0aSBnbGkgdXRlbnRpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3OSIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPlN0YW56ZSBwcml2YXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MCIgbmFtZT0iUHJpdmF0ZSBSb29tcyI+CisgICAgPHZhbHVlPkxlIHN0YW56ZSBwcml2YXRlIHNvbm8gYWNjZXNzaWJpbGkgc29sbyBkYWdsaSB1dGVudGkgZGVsbGEgcmlzcGV0dGl2YSBvcmdhbml6emF6aW9uZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgxIiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+TWllIHN0YW56ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODIiIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT5MZSBzdGFuemUgZGkgcXVlc3RhIHNlemlvbmUgc29ubyBjcmVhdGUgcGVyIHVzaSBwZXJzb25hbGkuIFNvbm8gY3JlYXRlIGF0dHJhdmVyc28gaWwgY2FsZW5kYXJpbyBlIGhhbm5vIHVuYSBkYXRhIGRpIGluaXppbyBlIGRpIGZpbmUuIFNvbm8gdmlzaWJpbGkgaW4gcXVlc3RhIHNlemlvbmUgc29sbyBwZXIgbGEgZHVyYXRhIGRlbGxhIGxvcm8gdmFsaWRpdOKImuKAoC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgzIiBuYW1lPSJyZXN0cmljdGVkIHJvb20iPgorICAgIDx2YWx1ZT5EZXZpIGVzc2VyZSBtb2RlcmF0b3JlIHBlciBmYXJlIHF1ZXN0YSBhemlvbmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NCIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT5Bc3NlZ25hIG1vZGVyYXRvcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg1IiBuYW1lPSJtZW51IG9wdGlvbiI+CisgICAgPHZhbHVlPkFzc2VnbmEgYWNjZXNzbyBhbGxhIGxhdmFnbmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg2IiBuYW1lPSJtZW51IG9wdGlvbiI+CisgICAgPHZhbHVlPkFzc2VnbmEgYWNjZXNzbyBhIGNhbS9taWNyb2Zvbm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg3IiBuYW1lPSJlcnJvciBtZXNzYWdlIHNvYXAgc2VjdXJlIGxvZ2luIj4KKyAgICA8dmFsdWU+UXVlc3RhIGhhc2ggZGkgc2Vzc2lvbmUg4oiawq4gZ2niiJrigKAgaW4gdXNvLiBOb24gcHVvaSBhY2NlZGVyZSBjb250ZW1wb3JhbmVhbWVudGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4OCIgbmFtZT0iZGFzaGJvYXJkIGJ1dHRvbiI+CisgICAgPHZhbHVlPklOSVpJTzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODkiIG5hbWU9ImV4aXQgY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPkVTQ0k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkwIiBuYW1lPSJjb25mZXJlbmNlIHZpZXciPgorICAgIDx2YWx1ZT5TZWkgc2ljdXJvIGRpIHZvbGVyIHVzY2lyZT8gUG90cmVzdGkgZG92ZXIgcHVsaXJlIGkgZG9jdW1lbnRpIGNhcmljYXRpLCBsYSBsYXZhZ25hIGUgbGEgY2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTEiIG5hbWU9ImNvbmZlcmVuY2UgdmlldyI+CisgICAgPHZhbHVlPkVzY2kgY29uZmVyZW56YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTIiIG5hbWU9Im1haW4gbWVudSI+CisgICAgPHZhbHVlPlN0YW56ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTMiIG5hbWU9Im1haW4gbWVudSI+CisgICAgPHZhbHVlPlNjZWdsaSBsYSBzdGFuemEgcGVyIHVuIG1lZXRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk0IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkUnIHByZXNlbnRlIHVuIGV2ZW50byBub24gc2FsdmF0byBuZWwgY2FsZW5kYXJpby4gUGVyIGZhdm9yZSBzYWx2YWxvIG8gY2FuY2VsbGFsby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk1IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPlNpIHByZWdhIGRpIGFnZ2l1bmdlcmUgYWxtZW5vIHVuIHBhcnRlY2lwYW50ZSBwZXIgbGEgcml1bmlvbmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5NiIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5TZWkgc2ljdXJvIGRpIHZvbGVyIGNhbmNlbGxhcmUgcXVlc3RvIGV2ZW50bz88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk3IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkF0dGVuemlvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk4IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkFnZ2l1bmdpIGV2ZW50bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTkiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Z2lvcm5vPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5zZXR0aW1hbmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAxIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPm1lc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAyIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkRlc2NyaXppb25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMyIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5QYXJ0ZWNpcGFudGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA0IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUsIGxhIHR1YSBwaWF0dGFmb3JtYSBkaSB2aWRlb2NvbmZlcmVuemEuIFNlZ3VpIGxlIGlzdHJ1emlvbmkgcHJlbWVuZG8gaWwgdGFzdG8gaW5pemlvIHBlciBjb21pbmNpYXJlIHN1Yml0byB1bmEgdmlkZW9jb25mZXJlbnphLCBvIHZhaSBhbCBjYWxlbmRhcmlvIGUgcGlhbmlmaWNhIHVuYSBjb25mZXJlbnphIHBlciBpbCBmdXR1cm8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNSIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+UGlhbmlmaWNhIHVuYSBjb25mZXJlbnphPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNiIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlBlciBwaWFuaWZpY2FyZSB1bmEgY29uZmVyZW56YSB0dSBwdW9pIGFnZ2l1bmdlcmUgdW4gZXZlbnRvIG5lbCBjYWxlbmRhcmlvLiBQZXIgb2duaSBldmVudG8gc2Fy4oia4oCgIGNyZWF0YSB1biBhcHBvc2l0YSBzdGFuemEuIFR1IGUgdHV0dGkgZ2xpIGludml0YXRpIHJpY2V2ZXJldGUgdW5hIG1haWwgY29uIHVuIGxpbmsgcGVyIGFjY2VkZXJlIGFsbGEgc3RhbnphLiZsdDtici8mZ3Q7Jmx0O2JyLyZndDtQdW9pIHNjZWdsaWVyZSB0cmEgZGl2ZXJzZSB0aXBvbG9naWUgZGkgc3RhbnplIGNvbiBkaWZmZXJlbnRpIHRpcG9sb2dpZSBkaSBsYXlvdXQgZSBtZG9lcmF6aW9uZS4gUHVvaSBhbmNoZSBzY2VnbGllcmUgdHJhIGRpdmVyc2kgdGlwaSBkaSBub3RpZmljYSB2aWEgZW1haWwgY2hlIGF2dmlzYW5vIGRlbGwnZXZlbnRvIGluIGNhbGVuZGFyaW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNyIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlNlcnZlIGFpdXRvPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDgiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5SaXN0cmV0dG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA5IiBuYW1lPSJsemNhbGVuZGVyIj4KKyAgICA8dmFsdWU+Q2VyY2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEwIiBuYW1lPSJsemNhbGVuZGVyIj4KKyAgICA8dmFsdWU+QWdnaXVuZ2k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODExIiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Tm9uIGNpIHNvbm8gdXRlbnRpIHNlbGV6aW9uYXRpLiBTaSBwcmVnYSBkaSBzY2VnbGllcmUgdW4gZWxlbWVudG8gZGFsbGEgbGlzdGEgZSBwb2kgcHJlbWVyZSBhZ2dpdW5naS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEyIiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QWdnaXVuZ2kgcGFydGVjaXBhbnRpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMyIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlNhbHZhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxNCIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPkNhbmNlbGxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxNSIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPkRldHRhZ2xpIGV2ZW50bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTYiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EZWZhdWx0IE1vZGVyYXRvcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+U3VwZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE4IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE5IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjAiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5FLU1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIxIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+QWRkIG5ldyBkZWZhdWx0IE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjIiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5JcyBTdXBlciBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIzIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+SWYgdGhlIFJvb20gaXMgbW9kZXJhdGVkLCBVc2VyIHdpdGggTGV2ZWwgTW9kZXJhdG9yIG9yIEFkbWluaXN0cmF0b3IgYXJlIGF1dG9tYXRpY2FsbHkgTW9kZXJhdG9yIGlmIHRoZXkgZW50ZXIgdGhlIFJvb20uIElmIHlvdSBkb24ndCB3YW50IHRvIHNwZWNpZnkgdGhhdCBhbmQgb25seSB3YW50IGEgY2VydGFpbiBVc2VyIHRvIGJlY29tZSBNb2RlcmF0b3IgdXNlIHRoZSBEZWZhdWx0IE1vZGVyYXRvciBvcHRpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkEgU3VwZXIgTW9kZXJhdG9yIGlzIGFsd2F5cyBhIE1vZGVyYXRvciB3aGVuIGhlIGVudGVycyBhIFJvb20sIGFuZCBub2JvZHkgY2FuIHJlbW92ZSB0aGUgTW9kZXJhdGlvbiBGbGFnIGZyb20gaGltPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkFwcGx5IFN1cGVyLU1vZGVyYXRpb24gdG8gVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjYiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5SZW1vdmUgU3VwZXIgTW9kZXJhdGlvbiBmcm9tIFVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjgiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5JZiB5b3UgYWRkIGFuIE9yZ2FuaXphdGlvbiB0byB0aGUgcm9vbSBvbmx5IHVzZXJzIG9mIHRoYXQgT3JnYW5pemF0aW9uIGhhdmUgYWNjZXNzIHRvIGl0IChUaGlzIGlzIG9ubHkgdmFsaWQgaWYgdGhlIGlzUHVibGljIGZsYWcgaXMgc2V0IHRvIGZhbHNlISk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI5IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+TW9kZXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzAiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5MaW1pdGF0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzEiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5Pcmdhbml6YXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODMyIiBuYW1lPSJjb25maXJtIGFjdGlvbiI+CisgICAgPHZhbHVlPkFyZSB5b3Ugc3VyZT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODMzIiBuYW1lPSJjb25maXJtIGRlbGV0ZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBJdGVtPyBZb3UgaGF2ZSB0byBwcmVzcyB0aGUgc2F2ZSBidXR0b24gdG8gc3RvcmUgdGhlIGNoYW5nZXMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNCIgbmFtZT0idXNlciBjaG9vc2UgZXJyb3IiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBVc2VyIHNlbGVjdGVkLiBQbGVhc2Ugc2VsZWN0IGZpcnN0IGJlZm9yZSB5b3UgYWRkIGl0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzUiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5BZGQgbmV3IERlZmF1bHQgTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkRvIHlvdSB3YW50IHRvIGFkZCB0aGUgU3VwZXIgTW9kZXJhdGlvbiBGbGFnIGZvciB0aGlzIFVzZXI/IEEgU3VwZXIgTW9kZXJhdG9yIGlzIG5vdCBvbmx5IE1vZGVyYXRvciBvZiBhIFJvb20sIGJ1dCBhbHNvIG5vIG90aGVyIE1vZGVyYXRvciBjYW4gcmVtb3ZlIHRoZSBNb2RlcmF0aW9uIEZsYWcgZm9yIHRoaXMgVXNlci4gWW91IG5lZWQgdG8gc2F2ZSB0aGUgUm9vbSBPYmplY3QgdG8gc2F2ZSB0aGVzZSBzZXR0aW5ncyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RG8geW91IHdhbnQgdG8gcmVtb3ZlIHRoZSBTdXBlciBNb2RlcmF0aW9uIEZsYWcgZm9yIHRoaXMgVXNlcj8gWW91IG5lZWQgdG8gc2F2ZSB0aGUgUm9vbSBPYmplY3QgdG8gc2F2ZSB0aGVzZSBzZXR0aW5ncyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM4IiBuYW1lPSJzdXBlciBtb2RlcmF0b3IiPgorICAgIDx2YWx1ZT5UaGlzIFVzZXIgaXMgYSBTdXBlci1Nb2RlcmF0b3IuIFlvdSBjYW5ub3QgcmVtb3ZlIHRoZSBNb2RlcmF0aW9uIGZsYWcgZnJvbSBhIFN1cGVyLU1vZGVyYXRvciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM5IiBuYW1lPSJjb25maXJtIGRlbGV0ZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGaWxlL0ZvbGRlcj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQwIiBuYW1lPSJjb25maXJtIGRlbGV0ZSI+CisgICAgPHZhbHVlPkRlbGV0ZSBGaWxlL0ZvbGRlcj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQxIiBuYW1lPSJzYWx1dGF0aW9uIj4KKyAgICA8dmFsdWU+TXJzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDIiIG5hbWU9InNhbHV0YXRpb24iPgorICAgIDx2YWx1ZT5Eci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQzIiBuYW1lPSJwcm9wZXJ0eSBwYW5lbCB3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+UHJvcGVydGllczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDQiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5TaG93IG1vdXNlIHBvc2l0aW9uIHRvIHZpZXdlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ1IiBuYW1lPSJwdWJsaXNoIG9wdGlvbiI+CisgICAgPHZhbHVlPlNoYXJlIEF1ZGlvIHdpdGggU0lQIEFwcGxldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDYiIG5hbWU9InB1Ymxpc2ggb3B0aW9uIj4KKyAgICA8dmFsdWU+U2hhcmUgQXVkaW8gd2l0aCBTSVAgYW5kIFZpZGVvIHdpdGggRmxhc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ3IiBuYW1lPSJkb2N1bWVudCBwYW5lbCI+CisgICAgPHZhbHVlPkZ1bGwtRml0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0OCIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+VmlldyBTY3JlZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ5IiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5UaGUgdXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTAiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPndhbnRzIHRvIHNoYXJlIGl0cyBzY3JlZW4uIERvIHlvdSB3YW50IHRvIHNlZSBpdD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUxIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5DbG9zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTIiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5ab29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MyIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPlRoZSBTZXNzaW9uIHdhcyBjbG9zZWQgYnkgdGhlIHNoYXJpbmcgVXNlciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU0IiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+UGF1c2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU1IiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+TmV3IFNjcmVlbiBTaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1NiIgbmFtZT0icHJlc2VudGVyIG1pbmkgaWNvbiI+CisgICAgPHZhbHVlPk1pbmltaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1NyIgbmFtZT0icHJlc2VudGVyIG1pbmkgaWNvbiI+CisgICAgPHZhbHVlPk1heGltaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1OCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+VmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU5IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5SZWNvcmRpbmcgVGltZWxpbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYwIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5NeSBSZWNvcmRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UHVibGljIFJlY29yZGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYyIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5JbmZvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjQiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkxlbmd0aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjUiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkRhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5CeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjciIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlBMQVk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY4IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5NYWluIC0gVmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY5IiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5SZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcwIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Zb3UgbWF5IHJlY29yZCBhbmQgc2hhcmUgeW91ciBzY3JlZW4gYXQgdGhlIHNhbWUgdGltZS4gVG8gZW5hYmxlIG90aGVycyB0byBzZWUgeW91ciBzY3JlZW4ganVzdCBoaXQgdGhlIHN0YXJ0IGJ1dHRvbiBvbiB0aGUgdG9wLiBUbyBvbmx5IHJlY29yZCB0aGUgU2Vzc2lvbiBpdCBpcyBzdWZmaWNpZW50IHRvIGNsaWNrIHN0YXJ0IHJlY29yZGluZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcxIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5TdGFydCBSZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcyIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5TdG9wIFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzMiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkRvd25sb2FkIHRoZSBGTFYtRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzQiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc1IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5QbGF5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3NiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+U3RvcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzciIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlVzZXIgaGFzIG1pY3JvcGhvbmUgb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc4IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlN0b3AgU2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzkiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+QWxsb3cgVXNlciBRdWVzdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgwIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPlR1cm4gdGhpcyBvZmYgdG8gcHJldmVudCB0aGF0IGFueSB1c2VyIGlzIGRpc3R1cmJpbmcgeW91IGluIHRoaXMgcm9vbS4gRWZmZWN0IGlzIHRoYXQgdGhlIEJ1dHRvbiB0byBhc2sgZm9yIE1vZGVyYXRpb24gKCJJIGhhdmUgYSBxdWVzdGlvbiIpIGlzIG5vdCB2aXNpYmxlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODEiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+UmlnaHRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RG93bmxvYWQgYXMgQVZJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RkxWPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QVZJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UmF3IFNjcmVlbnZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QXVkaW8gb25seTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODciIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlRoZSBoYXZlIGJlZW4gZXJyb3JzIHdoaWxlIHByb2Nlc3NpbmcgdGhlIFJlY29yZGluZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg4IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5UaGUgUmVjb3JkaW5nIGlzIG5vdCB5ZXQgcmVhZHkgZm9yIHdhdGNoaW5nLiBQbGVhc2UgcmV0cnkgaW4gYSBjb3VwbGUgb2YgbWludXRlcyBhZ2Fpbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg5IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Mb2c6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UmVjb3JkZXIgTWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTEiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk9rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MiIgbmFtZT0ic2lwIGFwcGxldCI+CisgICAgPHZhbHVlPlNJUCBBcHBsZXQgaXMgbm90IFJlYWR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MyIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNJUC1BY2NvdW50IFNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NCIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNJUCBzZXR0aW5ncyBmb3IgZWFjaCB1c2VyLiBZb3UgY2FuIHR1cm4gb24gb3Igb2ZmIFNJUCB2aWEgdGhlIEFkbWluaXN0cmF0aW9uICZndDsgQ29uZmlndXJhdGlvbiAoS2V5OiBlbmFibGVfc2lwKS4gVGhlIFNJUCBkYXRhIGZvciBlYWNoIHVzZXIgc2hvdWxkIGJlIGNyZWF0ZWQgYXV0b21hdGljYWxseS4gWW91IGNhbiByZS1jcmVhdGUgdGhlIGRhdGEgYnkgY2hlY2tpbmcgIlJlLWdlbmVyYXRlIFNJUCBEYXRhIjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTUiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TSVAtVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTYiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TaXAtUGFzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTciIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TaXAtQXV0aC1JZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTgiIG5hbWU9InNpcCBzdGF0dXMgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSBMb2dpbiB0byB0aGUgU0lQIEdhdGV3YXkgaGFzIGZhaWxlZC4gWW91IHNob3VsZCBjaGVjayB0aGUgYXV0aGVudGlmaWNhdGlvbiBkYXRhIG9mIHlvdXIgU0lQLVByb3ZpZGVyIGFuZCB0aGUgU0lQLUFjY291bnQgRGF0YSBmb3IgZWFjaCBVc2VyLiBBcyBBZG1pbmlzdHJhdG9yIHlvdSBhcmUgc3RpbGwgYWJsZSB0byBsb2dpbiBhbmQgY2hlY2sgdGhlIENvbmZpZ3VyYXRpb24uIEFzIFVzZXIgb3IgTW9kZXJhdG9yIHlvdSB3aWxsIGJlIGJsb2NrZWQgZnJvbSBhbnkgaW50ZXJhY3Rpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5OSIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIExvZ2luIHRvIHRoZSBTSVAgR2F0ZXdheSBoYXMgZmFpbGVkLiBDb250YWN0IHlvdXIgU2VydmljZSBUZWFtITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDAiIG5hbWU9InNpcCBzdGF0dXMgbWVzc2FnZSI+CisgICAgPHZhbHVlPkxvZ2dpbmcgaW4gdG8gU0lQLUdhdGV3YXkgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwMSIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TG9nZ2luZyBpbiB0byBTSVAtR2F0ZXdheSAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAyIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TaG93IExvZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDMiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkxvZyBtZXNzYWdlcyBmcm9tIHBvc3QgcmVjb3JkZXIgcHJvY2VzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDQiIG5hbWU9InNpcCBsb2dpbiI+CisgICAgPHZhbHVlPlNJUC1BcHBsZXQgTWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDUiIG5hbWU9InNpcCBsb2dpbiI+CisgICAgPHZhbHVlPlRoZSBTSVAtQXBwbGV0IGlzIG5vdCByZWFkeS4gQWNjZXB0IHRoZSBBcHBsZXQgcGxlYXNlIGFuZCBjbGljayBvayE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA2IiBuYW1lPSJtb2RlcmF0b3IgcG9wIHVwIj4KKyAgICA8dmFsdWU+R2V0IE1vZGVyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA3IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+U2F2ZSBBcHBvaW50bWVudCBDaGFuZ2VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwOCIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlRoZSBhcHBvaW50ZW1lbnQgaGFzIGJlZW4gY2hhbmdlZC4gRG8geW91IHdhbnQgdG8gc2F2ZSB0aG9zZSBjaGFuZ2VzPyAmbHQ7YnIvJmd0OyZsdDtici8mZ3Q7QWxsIGF0dGVuZGVlcyBvZiB0aGUgYXBwb2ludG1lbnQgd2lsbCByZWNlaXZlIGEgRU1haWwgd2l0aCB0aGUgdXBkYXRlZCBkYXRlIGFuZCB0aW1lIChkZXBlbmRpbmcgb24gdGhlIG5vdGlmaWNhdGlvbiB0eXBlIG9mIHRoaXMgYXBwb2ludG1lbnQpLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDkiIG5hbWU9ImZsdiByZWNvcmRlciBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VG8gYWNjZXNzIG90aGVyIHJlY29yZGluZ3MgeW91IGhhdmUgdG8gbG9naW4gdGhlICRBUFBfTkFNRSBBcHBsaWNhdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTEwIiBuYW1lPSJpbnRlcnZpZXcgdmlkZW8gcG9kIj4KKyAgICA8dmFsdWU+Q2hvb3NlIHRoZSBVc2VyIGZvciB0aGlzIFZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMSIgbmFtZT0iaW50ZXJ2aWV3IHZpZGVvIGNob29zZSB1c2VyIj4KKyAgICA8dmFsdWU+QXZhaWxhYmxlIFVzZXJzIGZvciB0aGlzIFBvZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTIiIG5hbWU9ImludGVydmlldyBpbmZvIj4KKyAgICA8dmFsdWU+WW91IGFyZSBhIE1vZGVyYXRvciBpbiB0aGlzIEludGVydmlldy4gWW91IGNhbiBkZWNpZGUgd2hvIGlzIHNwZWFraW5nIGluIHRoaXMgaW50ZXJ2aWV3IGFuZCB5b3UgY2FuIHN0YXJ0IC8gc3RvcCB0aGUgcmVjb3JkaW5nIG9mIHRoZSBTZXNzaW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTMiIG5hbWU9ImludGVydmlldyBidXR0b24gcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+U3RhcnQgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxNCIgbmFtZT0iaW50ZXJ2aWV3IGJ1dHRvbiByZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TdG9wIFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTUiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIHJlY29yZGluZyBvZiB0aGUgSW50ZXJ2aWV3IGlzIGFscmVhZHkgc3RhcnRlZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE2IiBuYW1lPSJpbnRlcnZpZXcgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSByZWNvcmRpbmcgaXMgYWxyZWFkeSBzdG9wcGVkIG9yIG5vdCBiZWVuIHN0YXJ0ZWQgeWV0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTciIG5hbWU9ImludGVydmlldyByZWNvcmRpbmcgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSByZWNvcmRpbmcgZm9yIHRoaXMgaW50ZXJ2aWV3IGlzIGFscmVhZHkgc3RhcnRlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE4IiBuYW1lPSJpbnRlcnZpZXcgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTkiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIHBvc3QtcHJvY2Vzc2luZyBvZiBhbiBpbnRlcnZpZXcgdGFrZXMgNSBtaW51dGVzIHBlciAxIG1pbnV0ZSBpbnRlcnZpZXcuIFRoZSBjdXJyZW50IHByb2dyZXNzIG9mIHRoZSBpbnRlcnZpZXcgcG9zdC1wcm9jZXNzaW5nIHRyYW5zY29kaW5nIGlzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjAiIG5hbWU9InNpcCBjcmVhdGlvbiI+CisgICAgPHZhbHVlPllvdSBoYXZlIHRvIGVudGVyIHlvdXIgcGFzc3dvcmQgYWdhaW4gdG8gYXV0byBjcmVhdGUgdGhlIFNJUCBEYXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyMSIgbmFtZT0ic2lwIGNyZWF0aW9uIj4KKyAgICA8dmFsdWU+UmUtZ2VuZXJhdGUgU0lQIERhdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIyIiBuYW1lPSJmaWxlZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IG1vdmUgdGhpcyBmaWxlIG9yIGZvbGRlciBpbnRvIGl0cyBvd24gc3ViIGZvbGRlciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIzIiBuYW1lPSJmaWxlIGV4cGxvcmVyICI+CisgICAgPHZhbHVlPkhvbWUgZHJpdmUgc2l6ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjQiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5QdWJsaWMgZHJpdmUgc2l6ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjUiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5MaWNlbnNlIFNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNiIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPllvdSBjYW4gZWl0aGVyIGJpbmQgdGhlIHVzZXIgdG8gYSBleHBpcmUgRGF0ZSBvciB0byBhIG1heGltdW0gbnVtYmVyIG9mIG1pbnV0ZXMgd2hlbiB5b3UgZW5hYmxlIGxpY2Vuc2luZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI3IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+Q2hlY2sgbGljZW5zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjgiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5GbGF0cmF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjkiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5FeHBpcmUgZGF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzAiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5TZWNvbmRzIGxlZnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMxIiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+VG90YWwgdGltZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzIiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdXIgTGljZW5zZSBoYXMgZXhwaXJlZC4gWW91IG5lZWQgdG8gYnV5IG5ldyBtaW51dGVzIChQYXktcGVyLW1pbnV0ZSkgb3IgYSB2b2x1bWUgZmxhdHJhdGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Q2xpY2sgYW5kIGJ1eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzQiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlRpbWUgTGVmdCBvbiB5b3VyIGFjY291bnQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzNSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+VXNlciBMaWNlbnNlIEluZm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM2IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5JbmZvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzNyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Q2xvc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM4IiBuYW1lPSJsaWNlbnNlLWluZm8iPgorICAgIDx2YWx1ZT5Zb3VyIGxpY2Vuc2UgaGFzIGV4cGlyZWQuIFlvdSBuZWVkIGVpdGhlciB0byBidXkgYSBtaW51dGUgcGFja2FnZSAoUGF5LXBlci1taW51dGUpIG9yIGEgdm9sdW1lIGZsYXRyYXRlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzkiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkxpY2Vuc2Ugc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQwIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIGVpdGhlciBidXkgbWludXRlcyB0byBtYWtlIFdlYi1Db25mZXJlbmNpbmcgKFBheS1wZXItbWludXRlKS4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7IE9yIHlvdSBidXkgYSB2b2x1bWUgZmxhdHJhdGUgYWJvdXQgMy0xMiBtb250aHMuJmx0O2JyLyZndDsmbHQ7YnIvJmd0O1NlbmRpbmcgaW52aXRhdGlvbnMgKGRpcmVjdCBsaW5rcyBpbnRvIENvbmZlcmVuY2UgUm9vbXMpIG9yIGNyZWF0aW5nIGNvbmZlcmVuY2UgUm9vbXMgdmlhIHRoZSBDYWxlbmRhciB3aXRoIGV4dGVybmFsIFVzZXJzIGlzIG9ubHkgYWxsb3dlZCB3aXRoIGEgdm9sdW1lIGZsYXRyYXRlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDEiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSA2MCBNaW51dGVzIDksOTkgRVVSTyAoMTYgQ2VudCBwZXIgTWludXRlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDIiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSA1IGhvdXJzIDE5LDk5IEVVUk8gKDYgQ2VudCBwZXIgbWludXRlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDMiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSAzIG1vbnRoIGZvciAyOSw5OSBFVVJPICg5LDk5IEV1cm8gcGVyIE1vbnRoKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDQiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSA2IG1vbnRoIGZvciAzOSw5OSBFVVJPICg2LDY2IEV1cm8gcGVyIG1vbnRoKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDUiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlBheS1wZXItbWludXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Vm9sdW1lIGZsYXRyYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91IGhhdmUgdW5saW1pdGVkIExpY2Vuc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ4IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3VyIGxpY2Vuc2Ugd2lsbCBleHBpcmUgYXQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0OSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91IGJvdWdodCBQYXktcGVyLW1pbnV0ZS4gWW91IHN0aWxsIGhhdmU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IG5ldyBjcmVkaXQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+V2FudCB5b3VyIG93biBTZXJ2ZXI/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91IHdvdWxkIGxpa2UgdG8gaGF2ZSAkQVBQX05BTUUgaW5zdGFsbGVkIG9uIHlvdXIgU2VydmVyIG9yIGludGVncmF0ZWQgaW50byB5b3VyIE1vb2RsZSwgU3VnYXJDUk0sIFdlYnNpdGUgb3IgSW50cmFuZXQ/IFByaXppbmdzIHN0YXJ0IGF0IDUwMCBFdXJvIHBlciBJbnN0YWxsYXRpb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+T3Igc2VuZCB1cyBhIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU0IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5BbnN3ZXIgdG86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1NSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+TWVzc2FnZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU2IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5TZW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1NyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Q2xpY2sgaGVyZSB0byBnZXQgY29udGFjdCBJbmZvIGFuZCBQcml6aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTgiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNyZWRpdCBDYXJkIERldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU5IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5GaXJzdG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYwIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5MYXN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjEiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNyZWRpdCBDYXJkIFR5cGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYyIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5WSVNBIENhcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYzIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5NYXN0ZXJDYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2NCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+RGlzY292ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY1IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5BbWVyaWNhbiBFeHByZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2NiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q3JlZGl0IENhcmQgTnVtYmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2NyIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+RXhwaXJhdGlvbiBEYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2OCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q2FyZCBWZXJpZmljYXRpb24gTnVtYmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2OSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+QmlsbGluZyBBZGRyZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+QWRkcmVzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzEiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzIiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTczIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5Db3VudHJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U3RhdGUgKE9ubHkgVVMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+WklQPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+QW1vdW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NyIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U3VibWl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3OCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U3RlcCAxOiAkQVBQX05BTUUgLSBQYXltZW50IEZvcm08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc5IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5FTWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODAiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNsaWNrICJDaGVjayBvdXQgd2l0aCBQYXlwYWwiIHRvIHBheS4mbHQ7YnIvJmd0OyBQYXlwYWwgYWNjZXB0cyBWSVNBLCBNYXN0ZXJDYXJkLCBEaXNjb3ZlciBvciBBbWVyaWNhbiBFeHByZXNzLiAmbHQ7YnIvJmd0O0l0IGRvZXMgbm90IHJlcXVpcmUgdG8gc2lnbiB1cCB3aXRoIFBheXBhbC4gJmx0O2JyLyZndDtDaXRpemVucyBmcm9tIEdlcm1hbnkgY2FuIGFsc28gcGF5IHdpdGggZGlyZWN0IGRlYml0IChQZXIgTGFzdHNjaHJpZnQtRWluenVnKS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgxIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5UaGFuayB5b3UgZm9yIGJ1eWluZyAkQVBQX05BTUUuICZsdDtici8mZ3Q7ICZsdDtici8mZ3Q7IEFzIHNvb24gYXMgd2UgcmVjZWl2ZWQgdGhlIHBheW1lbnQgeW91ciBhY2NvdW50IHdpbGwgYmUgdXBkYXRlZC4mbHQ7YnIvJmd0OyBZb3Ugd2lsbCByZWNlaXZlIGFuIEVNYWlsIHdpdGggeW91ciBpbnZvaWNlIGFzIFBERi4mbHQ7YnIvJmd0O1lvdSBjYW4gYWxzbyBjaGVjayBjdXJyZW50IGFuZCBwYXN0IHRyYW5zYWN0aW9ucyBpbiB5b3VyIHByb2ZpbGUgc2V0dGluZ3MuJmx0O2JyLyZndDsmbHQ7YnIvJmd0OyZsdDtici8mZ3Q7WW91IGNhbiBjbG9zZSB0aGlzIGJyb3dzZXIgd2luZG93L3RhYiBub3cgYW5kIHJldHVybiB0byAkQVBQX05BTUUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U3VibWl0IGFuZCBCdXkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MyIgbmFtZT0icGF5bWVudC1mcm9tIj4KKyAgICA8dmFsdWU+Q2xpY2sgYW5kIEJ1eSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg0IiBuYW1lPSJwYXltZW50LWZyb20iPgorICAgIDx2YWx1ZT5TdGVwIDM6ICRBUFBfTkFNRSBQYXltZW50IC0gQ2hlY2sgb3JkZXIgYW5kIGJ1eSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg1IiBuYW1lPSJwYXltZW50LWZyb20iPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4NiIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+UGF5bWVudCByZWNlaXZlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg3IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5IaSw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg4IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5XZSBoYXZlIHJlY2VpdmVkIHlvdXIgcGF5bWVudC4gWW91ciB1c2VyIHByb2ZpbGUgaXMgdXBkYXRlZCBub3cuIFNlZSBhdHRhY2hlZCB5b3VyIEludm9pY2UuIFRoZSBJbnZvaWNlIGFuZCBhbGwgcGFzdCBJbnZvaWNlIGNhbiBhbHNvIGJlIGRvd25sb2FkZWQgaW4geW91ciB1c2VyIHByb2ZpbGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4OSIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+VGhhbmsgeW91IGZvciB1c2luZyAkQVBQX05BTUUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MCIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+UGF5bWVudCBSZWNlaXZlZCAkQVBQX05BTUUgLTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTEiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5QYXltZW50IGFuZCBUcmFuc2FjdGlvbiBTdGF0dXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkyIiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+VHJhbnNjYXRpb24gSGFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTMiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NaW51dGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NCIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPk1vbnRoczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTUiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5FVVI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk2IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+U3RhdHVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NyIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPkludm9pY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk4IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5OSIgbmFtZT0iZXJyb3ItbGljZW5zZS1mbGF0Ij4KKyAgICA8dmFsdWU+WW91IG5lZWQgdG8gYnV5IGEgdm9sdW1lIGZsYXRyYXRlIHRvIGJlIGFibGUgdG8gc2VuZCBpbnZpdGF0aW9ucyBvciBjcmVhdGUgbWVldGluZ3MgdmlhIHRoZSBjYWxlbmRhci4gV2l0aCBQYXktcGVyLW1pbnV0ZSBpdCBpcyBvbmx5IHBvc3NpYmxlIGZvciB5b3UgdG8gYWNjZXNzICRBUFBfTkFNRS4gWW91IGNhbm5vdCBhbGxvdyAzdGggUGFydGllcyB0byBhY2Nlc3MgYSBNZWV0aW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAwIiBuYW1lPSJlcnJvciB1c2VyIj4KKyAgICA8dmFsdWU+VGhpcyBFbWFpbCBpcyBhbHJlYWR5IHVzZWQgYnkgYW5vdGhlciBVc2VyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAxIiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+U0lQLVNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDIiIG5hbWU9InJvb20tYWRtaW4iPgorICAgIDx2YWx1ZT5UaGUgQ29uZmVyZW5jZSBOdW1iZXIgYW5kIFBJTiBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgdmlhIHRoZSBPcGVuWEcgUlBDLUdhdGV3YXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwMyIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlNJUCBOdW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNCIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlBJTjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA1IiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+Q2xlYXIgb2JqZWN0cyBvbiBjdXJyZW50IHNsaWRlIG9ubHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDYiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5Pbmx5IHRoZSBVUkwgZW50ZXJlZCBpbiB0aGUgU3RhdHVzIGJhciBpcyBzZW5kIHRvIHBhcnRpY2lwYW50cyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk1ha2UgVGVhbS1Sb29tcyBbQnJlYWtvdXQgc2Vzc2lvbl08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNob29zZSB1c2VycyBmb3IgYSBuZXcgVGVhbS1Sb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+WW91IGNhbiBjaG9vc2UgdXNlcnMgaGVyZSBhbmQgY3JlYXRlIGEgbmV3IENvbmZlcmVuY2UgUm9vbSAoIlRlYW0gUm9vbSIpIGZvciB0aGVtLiBUaGUgY2hvc2VuIHVzZXJzIHdpbGwgYXV0b21hdGljYWxseSBzd2l0Y2ggdG8gdGhlIG5ldyBUZWFtLVJvb20gb3IgZ2V0IGEgbm90aWZpY2F0aW9uLiBUZWFtLVJvb20gTW9kZXJhdG9ycyB3aWxsIGdldCBhZGRpdGlvbmFsbHkgYSBsaXN0IG9mIGN1cnJlbnQgcm9vbXMgc28gdGhhdCB0aGV5IGNhbiBzd2l0Y2ggdG8gZWFjaCByb29tIGlmIHRoZXJlIGFyZSBpcyBuZWVkIGZvciBhIE1vZGVyYXRvci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Vc2VycyBmb3IgdGhlIG5ldyBUZWFtLVJvb206PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DcmVhdGUgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNob29zZSBhdCBsZWFzdCBvbmUgdXNlciBmb3IgdGhlIFRlYW0tUm9vbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkFkZCB1c2VyIHRvIHRlYW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlJlbW92ZSB1c2VyIGZyb20gVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Vc2VyIGlzIFRlYW0tUm9vbSBNb2RlcmF0b3IgKEhlIGlzIGFibGUgdG8gbWFuYWdlIFRlYW0tUm9vbXMgYW5kIHVzZXJzIG9mIHRoZSBUZWFtLVJvb20gY2FuIGFzayBoaW0gdG8gY29tZSBpbnNpZGUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Sb29tdHlwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+SWYgeW91IGNoZWNrICJGb3JjZSB1c2VyIHRvIHN3aXRjaCB0byBuZXcgVGVhbS1Sb29tIiBhbGwgY2hvc2VuIHVzZXJzIHdpbGwgYXV0b21hdGljYWxseSBzd2l0Y2ggdG8gdGhlIG5ld2x5IGNyZWF0ZWQgVGVhbS1Sb29tLiBPdGhlcndpc2UgdGhleSBnZXQgYSBub3RpZmljYXRpb24gd2l0aCBhIGJ1dHRvbiB0aGF0IHRoZXkgJmx0O2kmZ3Q7Y2FuJmx0Oy9pJmd0OyBzd2l0Y2ggdG8gdGhlIG5ldyByb29tLiBUZWFtLU1vZGVyYXRvcnMgYWx3YXlzIGhhdmUgdGhlIGZyZWUgY2hvaWNlIHRvIG1hbmFnZSB0aGUgVGVhbS1Sb29tcyBhbmQgc3dpdGNoIGJldHdlZW4gdGhlbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk1hbmFnZSBUZWFtLVJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIHN3aXRjaCBoZXJlIGJldHdlZW4gYWxsIFRlYW0tUm9vbXMgdGhhdCB5b3UgYXJlIGFzc2lnbmVkIGFzIFRlYW0tUm9vbSBNb2RlcmF0b3IuIFVzZXJzIGluc2lkZSB0aGUgVGVhbS1Sb29tIGNhbiBzZW5kIHlvdSBhIG1lc3NhZ2UsIGZvciBleGFtcGxlIHRvIGFzayB5b3UgdG8gY29tZSB0byB0aGVpciByb29tIGFuZCBoZWxwIHRoZW0uIFlvdSBjYW4gYWxzbyB0ZXJtaW5hdGUgdGhlIFRlYW0tUm9vbSBhbmQgYWxsIFVzZXJzIHdpbGwgYmUgbG9nZ2VkIG91dC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkZvcmNlIHVzZXIgdG8gc3dpdGNoIHRvIG5ldyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNyZWF0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Vc2VycyBhdmFpbGFibGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkFkZCBhIHVzZXIgd2l0aCB0aGUgcGx1cyBmcm9tIHRoZSBsZWZ0IG9yIHJlbW92ZSBpdCB3aXRoIHRoZSBjcm9zcyBmcm9tIHRoZSByaWdodCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjEpIFRlYW0tUm9vbSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MikgQWRkIHVzZXJzIHRvIHRoZSBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW0tUm9vbSBOYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNoYW5nZSB0byB0aGUgUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U3dpdGNoIHRvIHRoaXMgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZXJtaW5hdGUgVGVhbS1Sb29tIGFuZCBsb2dvdXQgYWxsIFVzZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5OZXcgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBhIG5ldyBUZWFtLVJvb20gYXZhaWxhYmxlIGZvciB5b3UuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Td2l0Y2ggdG8gVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb20gQWN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+WW91IGNhbiByZS1vcGVuIHRoaXMgd2luZG93IHZpYSB0aGUgbWFpbiBtZW51IGluIHRoZSAiQWN0aW9ucyIgc2VjdGlvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlNlbmQgbWVzc2FnZSB0byBUZWFtLVJvb20gTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5OZXcgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBhIG5ldyBUZWFtLVJvb20gYXZhaWxhYmxlLiBZb3UgY2FuIHN3aXRjaCB0byB0aGF0IFJvb20uIFRlYW0tUm9vbXMgYXJlIGxpa2UgIldvcmtncm91cHMiIHdpdGggYWRkaXRpb25hbGx5IHBvc3NpYmlsaXRpZXMgdG8gYXNrIHRoZSBUZWFtLVJvb20gTW9kZXJhdG9yIGZvciBoZWxwLiBZb3VyIFRlYW0tUm9vbXMgYXJlIGFsc28gYXZhaWxhYmxlIGluIHRoZSAiTXkgTWVldGluZ3MiIHNlY3Rpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Td2l0Y2ggdG8gVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DcmVhdGVkIGJ5OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQ4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVhbS1Sb29tIG5hbWU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGlzIFdpbmRvdyB3aWxsIHN0YXkgb3BlbiBldmVuIGlmIHlvdSBsZWF2ZSB0aGUgcm9vbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1MCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJzIGZvciB0aGlzIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MykgT3RoZXIgVGVhbS1Sb29tcyB0aGF0IHlvdSBjb3VsZCBzd2l0Y2ggdG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1MiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlNlbmQgYSBtZXNzYWdlIHRvIHRoZSBUZWFtLVJvb20gTW9kZXJhdG9ycy4gRm9yIGV4YW1wbGUgaWYgeW91IG5lZWQgaGVscCBpbiBNb2RlcmF0aW5nIHRoZSBSb29tIG9yIGlmIHlvdSBoYXZlIGEgcXVlc3Rpb24gYWJvdXQgdGhlIHRvcGljLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U2VuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MikgVXNlcnMgdGhhdCBhcmUgaW52aXRlZCB0byB0aGlzIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+SXMgVGVhbS1Sb29tIE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGhlc2UgYXJlIGFsbCB1c2VycyB0aGF0IHRoZSBtb2RlcmF0b3IgaGFzIGludml0ZWQgdG8gdGhpcyBUZWFtLVJvb20uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBUZWFtLU1vZGVyYXRvciBsb2dnZWQgaW4gYXQgdGhlIG1vbWVudCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1OCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1OSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlBsZWFzZSBoZWxwIHVzLCB3ZSBoYXZlIGEgcHJvYmxlbSBpbiBvdXIgVGVhbS1Sb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+QSB1c2VyIGZyb20gYSBUZWFtLVJvb20gcmVxdWVzdHMgeW91ciBoZWxwLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVhbS1Sb29tIHJlcXVlc3QgZm9yIGhlbHA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2MiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk1lc3NhZ2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Gcm9tOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+WW91IGFyZSBjdXJyZW50bHkgbm90IGluIGFueSBUZWFtLVJvb20uIEJ1dCB5b3UgY2FuIHN3aXRjaCBoZXJlIHRvIGFsbCBUZWFtLVJvb21zIHRoYXQgeW91IGhhdmUgYWNjZXNzIHRvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY1IiBuYW1lPSJiYWNrdXBDb250ZW50Ij4KKyAgICA8dmFsdWU+QmFja3VwIHRoZSBTeXN0ZW0uIFRoZSBCYWNrdXAgaW5jbHVkZXMgYWxsIFVzZXIgZ2VuZXJhdGVkIGRhdGEuIFRoZSBjb25maWd1cmF0aW9uIGlzIG5vdCBpbmNsdWRlZCBhcyB3ZWxsIGFzIHRoZSBsYW5ndWFnZSBsYWJlbHMuIEJlY2F1c2UgdGhvc2UgdmFsdWVzIGFyZSBpbXBvcnRlZCB3aXRoIHRoZSBTeXN0ZW0gSW5zdGFsbGVyLiBUbyB1cGRhdGUgeW91ciBTeXN0ZW0sIGV4cG9ydCB5b3VyIG9sZCBzeXN0ZW0gKDEpIHJlLWluc3RhbGwgaW50byBhIG5ldyBkYXRhYmFzZSB0aGUgbmV3IHBhY2thZ2UgKDIpIGFuZCBpbXBvcnQgdGhlIEJhY2t1cCBmaWxlIGFnYWluICgzKS4gVGhlIEJhY2t1cCBzaG91bGQgYmUgaW1wb3J0ZWQgYmVmb3JlIGdlbmVyYXRpbmcgZGF0YSBpbiB0aGUgbmV3bHkgaW5zdGFsbGVkIHN5c3RlbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2NiIgbmFtZT0iYmFja3VwQ29udGVudCI+CisgICAgPHZhbHVlPlN5c3RlbSBCYWNrdXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2NyIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+QWxsb3cgdXNlciB0byBzaGFyZSBTY3JlZW4vUmVjb3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjgiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPkRlbnkgdXNlciB0byBzaGFyZSBTY3JlZW4vUmVjb3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjkiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPlVzZXIgaXMgTW9kZXJhdG9yLCBoZSBjYW4gZG8gYW55dGhpbmchPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzAiIG5hbWU9ImFwcGx5IGZvciBzY3JlZW4vcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0byBzaGFyZS9yZWNvcmQgc2NyZWVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDcxIiBuYW1lPSJtb2RlcmF0aW9uIG1pbmkgaWNvbnMiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGFsbG93ZWQgdG8gc2hhcmUvcmVjb3JkIHNjcmVlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDcyIiBuYW1lPSJtb2RlcmF0aW9uIG1pbmkgaWNvbnMiPgorICAgIDx2YWx1ZT5BcHBseSBmb3IgcmlnaHQgdG8gc2hhcmUvcmVjb3JkIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3MyIgbmFtZT0ibW9kZXJhdGlvbiBtaW5pIGljb25zIGNvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT5BbGxvdy9EZW55IHJpZ2h0IHRvIHNoYXJlL3JlY29yZCBzY3JlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzQiIG5hbWU9InNvdW5kIGljb24iPgorICAgIDx2YWx1ZT5UdXJuIHNvdW5kIG9mZjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc1IiBuYW1lPSJzb3VuZCBpY29uIj4KKyAgICA8dmFsdWU+VHVybiBzb3VuZCBvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc2IiBuYW1lPSJyb29tIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+QXVkaW8gb25seSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzciIG5hbWU9InJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5UdXJuIHRoaXMgRmxhZyBvbiBhbmQgdGhlIHVzZXJzIHdpbGwgaGF2ZSBvbmx5IHRoZSBBdWRpby1PcHRpb24gYW5kIG5vIFZpZGVvIGluIGEgY29uZmVyZW5jZSByb29tLiBUaGlzIGNhbiBieSBnb29kIHRvIHNhdmUgYmFuZHdpZHRoLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc4IiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5BbGxvdyBSZW1vdGUgQ29udHJvbCAoRHVyaW5nIFNjcmVlbiBTaGFyaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc5IiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5EZW55IFJlbW90ZSBDb250cm9sIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODAiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFwcGx5IGZvciByaWdodCB0byBSZW1vdGUgQ29udHJvbCBTY3JlZW4gKER1cmluZyBTY3JlZW4gU2hhcmluZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MSIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+WW91IGFyZSBhbGxvd2VkIHRvIFJlbW90ZSBDb250cm9sIFNjcmVlbiAoRHVyaW5nIFNjcmVlbiBTaGFyaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgyIiBuYW1lPSJhcHBseSBmb3IgcmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIHJlbW90ZSBjb250cm9sIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MyIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+VXNlciBpcyBNb2RlcmF0b3IsIGhlIGNhbiBkbyBhbnl0aGluZyEgW1JlbW90ZSBEZXNrdG9wIENvbnRyb2xdPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODQiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFsbG93L0RlbnkgcmlnaHQgdG8gUmVtb3RlIENvbnRyb2wgU2NyZWVuIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODUiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPjEpIFlvdXIgUEMgdG8gcmVtb3RlIFBDOiBUbyBjb3B5IGFuZCBwYXN0ZSB0ZXh0IGZyb20geW91ciBjbGlwYm9hcmQgaW50byB0aGUgcmVtb3RlIGNvbnRyb2xsZWQgc2NyZWVuLCBjbGljayBvbiB0aGUgc2NyZWVuLCB0aGVuIHJpZ2h0IGNsaWNrIGluIHRoZSB0ZXh0IGZpZWxkIGFuZCBjaG9vc2UgIkluc2VydCIgZnJvbSB0aGUgY29udGV4dCAocmlnaHQgY2xpY2spIG1lbnUuJmx0O2JyLyZndDsmbHQ7YnIvJmd0OzIpIEZyb20gcmVtb3RlIFBDIHRvIHlvdXIgUEM6IFRvIGNvcHkgdGV4dCBmcm9tIHRoZSByZW1vdGUgUEMgdG8geW91ciBQQydzIGNsaXBib2FyZCwgaGlnaGxpZ2h0IHRoZSB0ZXh0IHdpdGggdGhlIG1vdXNlIG9uIHRoZSByZW1vdGUgc2NyZWVuLCB0aGVuIHJpZ2h0LWNsaWNrIG9uIHRoZSByZW1vdGUgc2NyZWVuIGFuZCBjaG9vc2UgJmx0O2kmZ3Q7Q29weSBoaWdobGlnaHRlZCB0ZXh0Jmx0Oy9pJmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg2IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Db3B5IGFuZCBQYXN0ZSB0ZXh0IGZyb20geW91ciBQQyB0byByZW1vdGUgUEMgYW5kIHZpY2UtdmVyc2EuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODciIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNvcHkgaGlnaGxpZ2h0ZWQgdGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg4IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Ib3cgdG8gY29weSBuIHBhc3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODkiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPlF1YWxpdHkgb2YgdGhlIFNjcmVlblNoYXJlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkwIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5WZXJ5IGhpZ2ggUXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkxIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5IaWdoIFF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5MiIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+TWVkaXVtIFF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5MyIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+TG93IFF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NCIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5lbl9VUzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk1IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPmRlX0RFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTYiIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+S2V5Ym9hcmQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTciIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+Q2xvc2UgV2ViaW5hciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5OCIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5UaGUgV2ViaW5hciBpcyBhbHJlYWR5IGNsb3NlZCwgeW91IHdpbGwgYmUgcmVkaXJlY3RlZCB0byBzb21lIGludGVyZXN0aW5nIG9mZmVyaW5ncyBpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk5IiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPkNsb3NlIFJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMCIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5FeGl0IFVSTDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAxIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPlJvb20gdGVybWluYXRpb24gc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMiIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5JZiB0aGUgcm9vbSBpcyBjbG9zZWQgdXNlcnMgd2lsbCBiZSByZWRpcmVjdGVkIHRvIHRoZSBleGl0IFVSTC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5MZGFwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDQiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDYiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+Q29uZmlnIEZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5MZGFwIENvbmZpZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA4IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwOSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5FbmFibGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTAiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+SW5zZXJ0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JbnNlcnRlZCBieTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEyIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPlVwZGF0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5VcGRhdGVkIGJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTQiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+VGhlIGNvbmZpZyBmaWxlcyBhcmUgaW4gdGhlIGZvbGRlciB3ZWJhcHBzL29wZW5tZWV0aW5ncy9jb25mLiBZb3UgbmVlZCB0byBtYW51YWxseSB1cGxvYWQgdGhlIGZpbGVzIHRvIHRoaXMgZm9sZGVyLiBDaGFuZ2VzIHRvIHRoZSBjb25maWcgZmlsZSBhcmUgaW1tZWRpYXRlbHkgb25saW5lLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE1IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkNvbmZpZyBmaWxlIG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNiIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JZiB5b3UgZW5hYmxlICJBZGQgRG9tYWluIHRvIHVzZXJuYW1lIiB0aGUgdmFsdWUgb2YgdGhlIGZpZWxkICJkb21haW4iIGlzIGFkZGVkIHRvIGVhY2ggbG9naW4gdGhhdCB0aGUgdXNlciBlbnRlcnMgaW4gdGhlIGxvZ2luIGJveC4gVGhpcyBpcyB1c2VmdWwgaWYgdGhlIExvZ2luIGluIHRoZSBMZGFwIGlzIHN0b3JlZCBpbmNsdWRpbmcgdGhlIGRvbWFpbiBuYW1lLiBFeGFtcGxlOiBVc2VyIGVudGVycyAiaGFucyIgZG9tYWluIGlzIHNwZWNpZmllZCBhcyAibG9jYWxob3N0LmNvbSIsIGxvZ2luIHRoYXQgaXMgdmVyaWZpZWQgYWdhaW5zdCBMZGFwIGlzOiBoYW5zQGxvY2FsaG9zdC5jb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5BZGQgRG9tYWluIHRvIHVzZXJuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTgiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+RG9tYWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTkiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+SW5zZXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjAiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+Q29weSBoaWdobGlnaHRlZCB0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjEiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+UmVtb3RlIENsaXBib2FyZCBUZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjIiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+U2hvdyByZW1vdGUgQ2xpcGJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjMiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkRvIG5vdCBzaG93IGFnYWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjQiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNvcHkgdGV4dCBoZXJlIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI1IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0aGUgcmlnaHQgdG8gcmVtb3RlIGNvbnRyb2wgKG9yIHRoZSBtb2RlcmF0aW9uKSB0byBjb3B5IGFuZCBwYXN0ZSB0ZXh0IHRvIG9yIGZyb20gdGhlIHJlbW90ZSBzY3JlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjYiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkVkaXQgZGVmYXVsdCBzZXR0aW5ncyAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNyIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+RG8gbm90IHNob3cgaW5mbyBib3ggaW4gUmVtb3RlIENvbnRyb2wgYWJvdXQgQ29weSBhbmQgUGFzdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyOCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5TYXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjkiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+UmVtb3ZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzAiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzEiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5JbnZpdGUgdXNlciB0byBjb25mZXJlbmNlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMiIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkNob29zZSBhIGNvbmZlcmVuY2Ugcm9vbS4gVGhlIGludml0ZWQgdXNlciB3aWxsIGdldCBhIG1lc3NhZ2Ugd2l0aCB5b3VyIG5hbWUgYW5kIGEgbGluayB0byB0aGUgcm9vbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMyIgbmFtZT0iY2hhdCB1c2VyIj4KKyAgICA8dmFsdWU+Q29ubmVjdGVkIHNpbmNlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM0IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+RW50ZXIgcm9vbSBhZnRlciBzZW5kaW5nIGludml0YXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzNSIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkludml0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM2IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+TWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM3IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0byBpbnZpdGUgeW91IHRvIHRoZSBjb25mZXJlbmNlIHJvb206PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzgiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5JbnZpdGUgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM5IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+U2VuZCBJbnZpdGF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDAiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5kaWQgJmx0O2ImZ3Q7bm90Jmx0Oy9iJmd0OyBhY2NlcHQgeW91ciBpbnZpdGF0aW9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQxIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+QWNjZXB0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDIiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5EZW55PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDMiIG5hbWU9InVzZXIgcHJvZmlsZSI+CisgICAgPHZhbHVlPlRpbWV6b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDQiIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPkV2ZW50IERldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0NSIgbmFtZT0iYXBwb2ludG1lbnQgbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ2IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5EZXNjcmlwdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ3IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5DcmVhdGVkIGJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDgiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5UaW1lWm9uZSBNZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDkiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5DaGVjayAiVGltZVpvbmUgTWVzc2FnZSIgdG8gZ2l2ZSB1c2VycyBhIG1lc3NhZ2UgbmV4dCB0aW1lIHRoZXkgbG9naW4gdG8gdXBkYXRlIHRoZWlyIHByb2ZpbGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTAiIG5hbWU9InRpbWUgem9uZSB1cGRhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlBsZWFzZSBjaGVjayB0aGUgdGltZSB6b25lIGluIHlvdXIgdXNlciBwcm9maWxlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUxIiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5OZXcgJEFQUF9OQU1FIGNvbmZlcmVuY2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTIiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkRldGFpbHM6Jmx0O2JyLyZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MyIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3RhcnQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTQiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkVuZDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NSIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2hhbmdlZCAkQVBQX05BTUUgY29uZmVyZW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NiIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+T3JnYW5pemVyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU3IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DYW5jZWxlZCAkQVBQX05BTUUgY29uZmVyZW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1OCIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIGNvbmZlcmVuY2UgUmVtaW5kZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTkiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Db21tdW5pdHkgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlNob3cgY29udGFjdCBkYXRhIHRvIGV2ZXJ5Ym9keTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYxIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+QWRkIGZpZWxkcyBvZiBpbnRlcmVzdCB0aGF0IHlvdSBvZmZlciBvciB0aGF0IHlvdSBhcmUgc2VhcmNoaW5nIHRvIGZpbmQgaW50ZXJlc3RpbmcgcGFydG5lcnMgZm9yIGEgY29uZmVyZW5jZS4gQ29tbWEgc2VwYXJhdGUgdGhlIHRlcm1zIChmb3IgZXhhbXBsZTogTWVkaWNhbCBTZXJ2aWNlLCBIZWFsdGggYXNzdXJhbmNlLCAuLi4pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjIiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NeSBvZmZlcmluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MyIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk15IGludGVyZXN0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY0IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY1IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+VGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2NiIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkZpZWxkcyBvZiBpbnRlcmVzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY3IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+Q29udGFjdCBpbmZvcm1hdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY4IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2hvdyBjb250YWN0IGRhdGEgdG8gY29udGFjdHMgb25seTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY5IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2hvdyBjb250YWN0IGRhdGEgdG8gbm9ib2R5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzAiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NeSBQcm9maWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzEiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5FZGl0IHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzIiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TZWFyY2ggdXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MyIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPldhdGNoIHlvdXIgcHJvZmlsZSBsaWtlIG90aGVyIHNlZSB5b3U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkVkaXQgeW91ciBzZXR0aW5ncywgYWRkIHlvdXIgaW50ZXJlc3RzIHRvIGJlIGZvdW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzUiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TZWFyY2ggZm9yIG90aGVyIHVzZXJzIGFuZCBleHRlbmQgeW91ciBuZXR3b3JrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzYiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+U2VhcmNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzciIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+VXNlciBvZmZlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3OCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5Vc2VyIGxvb2tzIGZvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc5IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkZyZWV0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODAiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgxIiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlRpbWV6b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODIiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+T2ZmZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODMiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+U2VhcmNoczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg0IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlNlYXJjaHJlc3VsdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg1IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkFjdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NiIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5BZGQgdG8gY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NyIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5TZW5kIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4OCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5Db250YWN0cyBhbmQgTWVzc2FnZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4OSIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5QZW5kaW5nIGNvbnRhY3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTAiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5BY2NlcHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkRlbnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MiIgbmFtZT0idXNlciBjb250YWN0IHJlcXVlc3QiPgorICAgIDx2YWx1ZT5IaSw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MyIgbmFtZT0idXNlciBjb250YWN0IHJlcXVlc3QiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGFkZCB5b3UgYXMgY29udGFjdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NCIgbmFtZT0idXNlciBjb250YWN0IHJlcXVlc3QiPgorICAgIDx2YWx1ZT5DaGVjayB5b3VyIGNvbnRhY3QgcmVxdWVzdHMgaW4gJEFQUF9OQU1FIG9yIGNsaWNrIG9uIHRob3NlIGxpbmtzIHRvIGFjY2VwdCBvciBkZW55IHRoZSByZXF1ZXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTUiIG5hbWU9ImFkZCB1c2VyIGNvbnRhY3QiPgorICAgIDx2YWx1ZT5UaGlzIHVzZXIgaXMgYWxyZWFkeSBpbiB5b3VyIGNvbnRhY3QgbGlzdCBvciBoYXMgcmVjZWl2ZWQgYW4gaW52aXRhdGlvbiB0byB5b3VyIGNvbnRhY3QgbGlzdCB0aGF0IGlzIG5vdCBhbnN3ZXJlZCB5ZXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTYiIG5hbWU9InVzZXIgY29udGFjdCBtYWlsIj4KKyAgICA8dmFsdWU+WW91ciBjb250YWN0IGxpc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkVkaXQgeW91ciBjb250YWN0IGFuZCBtZXNzYWdlcywmbHQ7YnIvJmd0OyBtYW5hZ2UgeW91ciBwZW5kaW5nIGNvbnRhY3RzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk4IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+Y29uZmlybWVkIHlvdSBhcyBjb250YWN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk5IiBuYW1lPSJjaGF0IGluZm8gbWVzc2FnZSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAwIiBuYW1lPSJjaGF0IGxvZyBpY29uIj4KKyAgICA8dmFsdWU+U2hvdyAvIENvcHkgY2hhdCBsb2c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMSIgbmFtZT0iY2hhdCBsb2cgd2luZG93Ij4KKyAgICA8dmFsdWU+Q2hhdCBMb2c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RnJvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TdWJqZWN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDYiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1lc3NhZ2VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDciIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk5ldyBNYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkNsaWNrIHRvIHdyaXRlIGEgbmV3IG1lc3NhZ2UgdG8gYW55IG9mIHlvdXIgY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwOSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+V3JpdGUgbmV3IG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VG86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlN1YmplY3Q6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTIiIG5hbWU9IndoaXRlYm9hcmQgZnVsbC1maXQiPgorICAgIDx2YWx1ZT5FbmFibGUgZnVsbCBmaXQgYW5kIHRoZSB3aGl0ZWJvYXJkIHdpbGwgem9vbSB0aGUgd2hvbGUgd2hpdGVib2FyZCBzbyB0aGF0IGFsbCZsdDtici8mZ3Q7ZG9jdW1lbnRzIGFyZSB2aXNpYmxlIGFjY29yZGluZyB0byBlYWNoIHBhcnRpY2lwYW50cyBzY3JlZW4gcmVzb2x1dGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMyIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+S2ljayB1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTQiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPllvdSBjYW5ub3Qga2ljayB5b3Vyc2VsZiBvdXQgb2YgdGhlIGNvbmZlcmVuY2Ugcm9vbSEgSWYgeW91IHdhbnQgdG8gbGVhdmUgaXQgY2xvc2UgdGhlIGJyb3dzZXIgb3IgdXNlIHRoZSBleGl0IGJ1dHRvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNSIgbmFtZT0ia2ljay11c2VyIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRpc2Nvbm5lY3QgdGhpcyB1c2VyIGZyb20gdGhpcyBjb25mZXJlbmNlIHJvb20/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTYiIG5hbWU9ImtpY2stdXNlciI+CisgICAgPHZhbHVlPkNvbmZpcm0gYWN0aW9uIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE3IiBuYW1lPSJraWNrLXVzZXIiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IGtpY2sgYSBTdXBlci1Nb2RlcmF0b3Igb3V0IG9mIGEgcm9vbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxOCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Qm9vayBjb25mZXJlbmNlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxOSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3RhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZCBhbiBvcHRpb25hbCByZXF1ZXN0IGZvciBtZWV0aW5nIHRvIHRoZSBtZXNzYWdlIGFuZCBjcmVhdGUgYSBjb25mZXJlbmNlIHJvb20uIFRoZSBFdmVudCBpcyB0aGVuIGNvcGllZCBpbiB0aGUgY2FsZW5kYXIgb2YgZXZlcnkgcGFydGljaXBhbnQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkluYm94PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VHJhc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhpcyBpcyB5b3UhIFlvdSBjYW5ub3QgYWRkIHlvdXJzZWxmIGFzIHlvdXIgb3duIGNvbnRhY3QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjYiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5UaGUgdXNlciBpcyBhbHJlYWR5IGRlbmllZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoZSB1c2VyIGlzIGFscmVhZHkgYXBwcm92ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjgiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5UaGlzIHVzZXIgY29udGFjdCBoYXNoIGlzIGludmFsaWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjkiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Vc2VyIGFkZGVkIHRvIGNvbnRhY3QgbGlzdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlVzZXIgZGVuaWVkIGFzIGNvbnRhY3QgYW5kIHJlbW92ZWQgZnJvbSBwZW5kaW5nIGNvbnRhY3QgbGlzdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIHN1Y2ggY29udGFjdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPldvdWxkIHlvdSByZWFsbHkgbGlrZSB0byByZW1vdmUgdGhhdCBjb250YWN0PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMzIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+Q29uZmlybSBjb250YWN0IHJlbW92YWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkRlbGV0ZSBjb250YWN0IGZyb20gbGlzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM1IiBuYW1lPSJ1c2VyIHByb2ZpbGUiPgorICAgIDx2YWx1ZT5Vc2VyIFByb2ZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNiIgbmFtZT0idXNlciBwcm9maWxlIj4KKyAgICA8dmFsdWU+U2hvdyB1c2VyIHByb2ZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWVzc2FnZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzOCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VhcmNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbGVjdCBhbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0MCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VsZWN0IG5vbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0MSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VsZWN0IHVucmVhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWxlY3QgcmVhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Nb3ZlIHRvIGZvbGRlciAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIG5ldyBmb2xkZXIgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRlbGV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ2IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EZWxldGVkIG1haWxzIGFyZSBzdGlsbCBpbiB5b3VyIHRyYXNoIGZvbGRlciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWFyayB1bnJlYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0OCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWFyayByZWFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFuc3dlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BbnN3ZXIgZXZlcnlib2R5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkZvcndhcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWN0aW9ucyAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlNlbmQgcHJpdmF0ZSBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk5vdGhpbmcgc2VsZWN0ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1vdmUgdG8gSW5ib3g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGVsZXRlIChmaW5hbCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1OCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIGZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgZm9sZGVycyBhbmQgb3JnYW5pemUgeW91ciBtZXNzYWdlcyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIGZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPkRlbGV0ZSBmb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPllvdSBjYW5ub3QgZGVsZXRlIHRoaXMgZm9sZGVyLCB0aGVyZSBhcmUgc3RpbGwgbWVzc2FnZXMgaW5zaWRlISBEZWxldGUgZmlyc3QgdGhlIG1lc3NhZ2VzIG9yIG1vdmUgdGhlbSB0byBhbm90aGVyIGZvbGRlci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPkVkaXQgbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGZvbGRlcj8gVGhlcmUgaXMgbm8gd2F5IHRvIHVuZG8gdGhhdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPllvdXIgcmVxdWVzdCB3YXMgc2VuZCB0byB0aGUgdXNlci4gVGhlIHVzZXIgd2lsbCByZWNlaXZlIGEgbm90aWZpY2F0aW9uIHRvIGFjY2VwdCBvciBkZW55IHlvdXIgcmVxdWVzdC4gT25seSBhY2NlcHRlZCByZXF1ZXN0cyBhcmUgaW4geW91ciBjb250YWN0IGxpc3Qgb2YgY291cnNlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+TWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY4IiBuYW1lPSJ1c2VyIHZpZXcgcHJvZmlsZSI+CisgICAgPHZhbHVlPlRoZSB1c2VyIGRvZXMgbm90IHNoYXJlIGhpcyBwZXJzb25hbCBjb250YWN0IGRhdGEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjkiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+VGhlIHVzZXIgZG9lcyBzaGFyZSBoaXMgcGVyc29uYWwgY29udGFjdCBkYXRhIG9ubHkgdG8gY29udGFjdHMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzAiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+QWRkcmVzcyAmYW1wOyBQaG9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjcxIiBuYW1lPSJlcnJvciBjb2RlIj4KKyAgICA8dmFsdWU+WW91IGludml0YXRpb24gY29kZSBpcyBubyB2YWxpZCwgdGhlIGNvZGUgaXMgb25seSB2YWxpZCBkdXJpbmcgdGhpcyBzcGVjaWZpYyBkYXRlIGFuZCB0aW1lOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjcyIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhpcyBldmVudCBpcyBjb25uZWN0ZWQgdG8gc2V2ZXJhbCBjYWxlbmRhcnMgb2Ygb3RoZXIgdXNlcnMuIFlvdXIgY2hhbmdlIHdpbGwgYWxzbyB1cGRhdGUgdGhlaXIgY2FsZW5kYXIuIFdvdWxkIHlvdSByZWFsbHkgbGlrZSB0byB1cGRhdGUgdGhlIGV2ZW50PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjczIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Q29uZmlybSB1cGRhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkFsbG93IGNvbnRhY3QgdG8gc2VlIG15IGNhbGVuZGFyICh2aWV3IG9ubHkpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzUiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5EbyBub3Qgc2hhcmUgY2FsZW5kYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkNhbGVuZGFyIG9mIGNvbnRhY3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzciIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Zb3VyIGNvbnRhY3RzIG5lZWQgdG8gYXBwcm92ZSB5b3UgZmlyc3QgdG8gYmUgYWJsZSB0byBzZWUgdGhlaXIgY2FsZW5kYXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzgiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IHN0b3JlIG9yIGRlbGV0ZSBldmVudHMgZnJvbSBvdGhlciBjYWxlbmRhcnMgdGhlbiB5b3VyIG93biE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3OSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlNob3cgbXkgb3duIGNhbGVuZGFyIGFnYWluITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgwIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhpcyBldmVudCBpcyBjb25uZWN0ZWQgdG8gc2V2ZXJhbCBjYWxlbmRhcnMgb2Ygb3RoZXIgdXNlcnMuIFlvdXIgYWN0aW9uIHdpbGwgYWxzbyBkZWxldGUgdGhlIGV2ZW50IGZyb20gdGhlaXIgY2FsZW5kYXIuIFdvdWxkIHlvdSByZWFsbHkgbGlrZSB0byBkZWxldGUgdGhlIGV2ZW50PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgxIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Q29uZmlybSBhY3Rpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4MiIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPkVudGVyIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4MyIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPkFjY2VzcyB0aGUgY29uZmVyZW5jZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGEgY29uZmVyZW5jZSByb29tIGFuZCBldmVudCBib29rZWQgd2l0aCB0aGlzIHByaXZhdGUgbWVzc2FnZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NSIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPllvdSBuZWVkIHRvIHN0b3JlIHRoZSBldmVudCBmaXJzdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NiIgbmFtZT0iYWNjZXNzIHJvb21zIGVycm9yIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgbm8gc3VjaCByb29tIGF2YWlsYWJsZS4gVGhlIGV2ZW50IGluIHRoZSBjYWxlbmRhciBhbmQgY29ubmVjdGVkIHJvb20gaXMgYWxyZWFkeSBkZWxldGVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg3IiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5DaG9vc2UgeW91ciBuaWNrbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg4IiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5GaXJzdG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4OSIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+TGFzdG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MCIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+RW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MSIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+T2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MiIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+TWluaW11bSBsZW5ndGggNCBjaGFycyEgRm9yIGJvdGgsIGZpcnN0bmFtZSBhbmQgbGFzdG5hbWUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTMiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIHZhbGlkIGVtYWlsITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk0IiBuYW1lPSJhdXRoIGZyb20iPgorICAgIDx2YWx1ZT5GYWNlYm9vazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk1IiBuYW1lPSJhdXRoIGZvcm0iPgorICAgIDx2YWx1ZT5Mb2dpbiB3aXRoIHlvdXIgRmFjZWJvb2sgYWNjb3VudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk2IiBuYW1lPSJ2aWV3IHByb2ZpbGUiPgorICAgIDx2YWx1ZT5NZW1iZXIgc2luY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5NyIgbmFtZT0iZGlyZWN0IGxvZ2luIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Zb3UndmUgbG9nZ2VkIHdpdGggeW91ciBGYWNlYm9vayBhY2NvdW50LiBZb3Ugc2hvdWxkIHVwZGF0ZSB5b3VyIHByb2ZpbGUgd2l0aCB0aGUgY29ycmVjdCBlbWFpbC4gT3RoZXJ3aXNlIHlvdSB3aWxsIG5vdCByZWNlaXZlIGludml0YXRpb25zIGFuZCBwcml2YXRlIG1lc3NhZ2VzIGZyb20gb3RoZXIgdXNlcnMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTgiIG5hbWU9ImRpcmVjdCBsb2dpbiBtZXNzYWdlIGhlYWRlciI+CisgICAgPHZhbHVlPk1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5OSIgbmFtZT0iZGlyZWN0IGxvZ2luIG1lc3NhZ2UgY2hlY2tib3ggY29udHJvbCI+CisgICAgPHZhbHVlPkRvIG5vdCBzaG93IHVwZGF0ZSBwcm9maWxlIG1lc3NhZ2UgYWdhaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMCIgbmFtZT0icHJvZmlsZSBzZXR0aW5ncyBidXR0b24iPgorICAgIDx2YWx1ZT5tb3JlIGRpc3BsYXkgb3B0aW9ucyAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TmV3IHByaXZhdGUgbWVzc2FnZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2xpY2sgaGVyZSB0byB2aXNpdCB5b3VyIHByb2ZpbGUgdG8gc2VlIHRoZSBmdWxsIG1lc3NhZ2UgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlJlcGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPlJvb21zIGFuZCBjaGF0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA1IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5NeSByb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA2IiBuYW1lPSJteSByb29tcyI+CisgICAgPHZhbHVlPk15IGNvbmZlcmVuY2Ugcm9vbSAoZm9yIDEtMTYgdXNlcnMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDciIG5hbWU9Im15IHJvb21zIj4KKyAgICA8dmFsdWU+TXkgd2ViaW5hciByb29tIChmb3IgMS0xMjAgdXNlcnMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDgiIG5hbWU9InJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5Pd25lciBJZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA5IiBuYW1lPSJsb2dpbiBlcnJvciI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIHBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTAiIG5hbWU9ImxvZ2luIGVycm9yIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgYW4gYWNjb3VudCB3aXRoIFVzZXItTGV2ZWwgVXNlciwgTW9kZXJhdG9yIG9yIEFkbWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTEiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5XZWItU2VydmljZSAob25seSBhY2Nlc3MgdmlhIFNPQVApPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTIiIG5hbWU9InVwbG9hZCBmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+RG8gZGlyZWN0bHkgbG9hZCB0byB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTMiIG5hbWU9IndoaXRlYm9hcmQgY2xvc2UgY29uZmlybWF0aW9uIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIHJlbW92ZSB0aGlzIHdoaXRlYm9hcmQ/IFRoaXMgYWN0aW9uIGNhbm5vdCBiZSB1bmRvbmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTQiIG5hbWU9IndoaXRlYm9hcmQgbG9hZCBXTUwiPgorICAgIDx2YWx1ZT5Mb2FkIHRvIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxNSIgbmFtZT0icmVjb3JkaW5nIGZsYWciPgorICAgIDx2YWx1ZT5EbyBub3QgZm9yZ2V0IHN0YXJ0IHJlY29yZGluZyEgT25lIHVzZXIgcGVyIHJvb20gYWx3YXlzIG5lZWRzIHRvIHN0YXJ0IGl0IHRvIGhhdmUgdGhlIHJlY29yZGluZyBhZnRlcndhcmRzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE2IiBuYW1lPSJyZWNvcmRpbmcgZmxhZyI+CisgICAgPHZhbHVlPlN0YXJ0IFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE3IiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPkFycm93PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTgiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+Q2lyY2xlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTkiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+TGluZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIwIiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPlNxdWFyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIxIiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPlRyaWFuZ2xlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjIiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5UZXh0L05vdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyMyIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkNsaXBhcnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjQiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5EcmF3IEZyZWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNSIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlNlbGVjdC9Nb3ZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjYiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5EcmF3IFNoYXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjciIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5DdXQvTW92ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI4IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+Wm9vbSBJbi9PdXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyOSIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlByaW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzAiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5VbmRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzEiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5UcmFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMyIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+QWRkIEdyaWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMyIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlNoYXJlIEZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNCIgbmFtZT0iaWNvbiBzdWJtZW51Ij4KKyAgICA8dmFsdWU+U2VsZWN0IFNoYXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzUiIG5hbWU9Imljb24gc3VibWVudSI+CisgICAgPHZhbHVlPlNlbGVjdCBDbGlwYXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzYiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5Db3B5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzciIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5DdXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzOCIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPlBhc3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzkiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5EZWxldGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MCIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhlIGNvbXBsZXRlIGNvbnRlbnQgb24gdGhlIHdoaXRlYm9hcmQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDEiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5Mb2FkIGRpcmVjdGx5IHRvIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MiIgbmFtZT0iYXR0ZW5kZWVzIj4KKyAgICA8dmFsdWU+QXR0ZW5kZWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDMiIG5hbWU9ImF0ZW5kZWUgbWFuYWdlciI+CisgICAgPHZhbHVlPkF0dGVuZGVlIE1hbmFnZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NCIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+UHJlc2VudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ1IiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5SZW1vdGUgQ29udHJvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NiIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+RWplY3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NyIgbmFtZT0iY2hhdCI+CisgICAgPHZhbHVlPkNoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0OCIgbmFtZT0iaW52aXRlIGF0dGVuZGVlIj4KKyAgICA8dmFsdWU+SW52aXRlIEF0dGVuZGVlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ5IiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5CeSBFbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUwIiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5Vc2VyIGlzIG1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUxIiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5Vc2VyIGhhcyB3ZWJjYW0gc3dpdGNoZWQgb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1MiIgbmFtZT0iZmlsbF9vcHRpb24iPgorICAgIDx2YWx1ZT5EZWFjdGl2YXRlIHNoYXBlIGZpbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1MyIgbmFtZT0iZmlsbF9vcHRpb24iPgorICAgIDx2YWx1ZT5BY3RpdmF0ZSBzaGFwZSBmaWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTQiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5TbmFwIHRvIEdyaWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NSIgbmFtZT0iYWxsb3dfcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QWxsb3cgcmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTYiIG5hbWU9IndhaXRfZm9yX3JlY29yZGluZyI+CisgICAgPHZhbHVlPldhaXQgZm9yIHJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU3IiBuYW1lPSJoaWRlX3RvcF9iYXIiPgorICAgIDx2YWx1ZT5IaWRlIHRvcGJhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU4IiBuYW1lPSJmaWxlRXhwbG9yZXIiPgorICAgIDx2YWx1ZT5QbGF5IHZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTkiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoZSBjb250ZW50IG9uIHRoZSBjdXJyZW50IHNsaWRlPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYwIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT5BY2NlcHQgYW5kIGdyYW50IHVzZXIgcmlnaHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2MSIgbmFtZT0iYWN0aXZpdHlfd2luZG93Ij4KKyAgICA8dmFsdWU+RGVueTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYyIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT5JPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjMiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPkFjdGl2aXRpZXMgYW5kIGFjdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NCIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPlJlbW92ZSB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjUiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0aGUgbW9kZXJhdGlvbiBvciB0aGUgcmlnaHQgdG8gZHJhdyBvbiB0aGUgd2hpdGVib2FyZCB0byByZW1vdmUgd2hpdGVib2FyZHMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjYiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5Ob3QgYWxsb3dlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY3IiBuYW1lPSJ1c2VyX2xlZnRfYWN0X21zZyI+CisgICAgPHZhbHVlPmhhcyBsZWZ0IHRoZSByb29tLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY4IiBuYW1lPSJjbGlwYXJ0IGljb25zIj4KKyAgICA8dmFsdWU+TWF0aCBpY29uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY5IiBuYW1lPSJjbGlwYXJ0IGljb25zIj4KKyAgICA8dmFsdWU+Tm8gY2F0ZWdvcnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MCIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+Q29sb3ItU3R5bGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+UXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzcyIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5Eb21haW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MyIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+dmlzaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NCIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+cmVkb3JhbmdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzUiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPm1lZGl1bXNlYWdyZWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzYiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnN0ZWVsYmx1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc3IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5saWdodHN0ZWVsYmx1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc4IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5nb2xkZW5yZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3OSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+c2lsdmVyZ3JheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgwIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT51c2VyZGVmaW5lZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgxIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5iZXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODIiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnVwbG9hZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgzIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5tZWRpdW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NCIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg1IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5Vbm11dGUgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg2IiBuYW1lPSJnaXZlIGV4Y2x1c2l2ZSBhdWRpbyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBvZiBvdGhlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NyIgbmFtZT0ibXV0ZSBzZWxmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGdsb2JhbGx5IG11dGVkIGJ5IHRoZSBtb2RlcmF0b3IuIFlvdSBjYW5ub3QgdW5tdXRlIHlvdXJzZWxmITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg4IiBuYW1lPSJtdXRlIHNlbGYgY29uZmlybSBtZXNzYWdlIHRpdGxlIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg5IiBuYW1lPSJtdXRlIHNlbGYgY29uZmlybSBtZXNzYWdlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gbXV0ZSB5b3Vyc2VsZiBnbG9iYWxseT8gTm8gb3RoZXIgdXNlciB3aWxsIGhlYXIgeW91IGFueW1vcmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTAiIG5hbWU9Im11dGUgb3RoZXJzIGNvbmZpcm0gbWVzc2FnZSB0aXRsZSI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBsb2NhbGx5PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkxIiBuYW1lPSJtdXRlIG90aGVycyBjb25maXJtIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gbXV0ZSB0aGlzIG1pY3JvcGhvbmU/IFlvdSBjYW4gb25seSBtdXRlIGl0IGxvY2FsbHkgb24geW91ciBzY3JlZW4uIEl0IGhhcyBubyBlZmZlY3QgdG8gaG93IG90aGVyIHVzZXJzIGhlYXIgdGhpcyB1c2VyLiBPbmx5IG1vZGVyYXRvcnMgY2FuIHR1cm4gaXQgb2ZmIGdsb2JhbGx5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkyIiBuYW1lPSJtdXRlIG90aGVycyBjb25maXJtIG1lc3NhZ2UgdGl0bGUiPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgb2ZmIGdsb2JhbGx5PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkzIiBuYW1lPSJtdXRlIG90aGVycyBtb2RlcmF0b3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBtdXRlIHRoaXMgdXNlciBnbG9iYWxseT8gTm8gb3RoZXIgdXNlciB3aWxsIGhlYXIgaGltIGFueW1vcmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTQiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+WW91ciBzb3VuZCBpcyBvbi4gQ2xpY2sgaGVyZSB0byBzZW5kIG1vZGVyYXRvciBtZXNzYWdlIHRvIG11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5IChpbiB0aGUgY29tcGxldGUgY29uZmVyZW5jZSByb29tKSBvZmYhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTUiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+WW91ciBzb3VuZCBpcyBvZmYuIENsaWNrIGhlcmUgdG8gc2VuZCBtb2RlcmF0b3IgbWVzc2FnZSB0byB1bm11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5IChpbiB0aGUgY29tcGxldGUgY29uZmVyZW5jZSByb29tKSBvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5NiIgbmFtZT0ibXV0ZSBhcHBseSBzZWxmIG9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRoYXQgdGhlIG1vZGVyYXRvciBtdXRlcyBteSBtaWNyb3Bob25lIGdsb2JhbGx5LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk3IiBuYW1lPSJtdXRlIGFwcGx5IHNlbGYgb2ZmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRoYXQgdGhlIG1vZGVyYXRvciB1bm11dGVzIG15IG1pY3JvcGhvbmUgZ2xvYmFsbHkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTgiIG5hbWU9Im11dGUgYXBwbHkgb2YgbWVzc2FnZSI+CisgICAgPHZhbHVlPndhbnQgdGhhdCB0aGUgbW9kZXJhdG9yIHVubXV0ZXMgaGlzL2hlciBtaWNyb3Bob25lLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk5IiBuYW1lPSJtdXRlIGFwcGx5IG9mIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53YW50IHRoYXQgdGhlIG1vZGVyYXRvciBtdXRlcyBoaXMvaGVyIG1pY3JvcGhvbmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDAiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+VW5tdXRlIG1pY3JvcGhvbmUuIENsaWNrIGhlcmUgdG8gbXV0ZSBoaXMvaGVyIG1pY3JvcGhvbmUgZ2xvYmFsbHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDEiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lLiBDbGljayBoZXJlIHRvIHVubXV0ZSBoaXMvaGVyIG1pY3JvcGhvbmUgZ2xvYmFsbHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDIiIG5hbWU9Im11dGUgc2VsZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhpcyB1c2VyIGlzIGdsb2JhbGx5IG11dGVkIGJ5IHRoZSBtb2RlcmF0b3IuIFlvdSBjYW5ub3QgdW5tdXRlIGhpbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMyIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDQiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSB5b3VyIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwNSIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA2IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5Vbm11dGUgbWljcm9waG9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA3IiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDgiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDkiIG5hbWU9Im11dGUgbW9kZXJhdG9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Pbmx5IG1vZGVyYXRvcnMgY2FuIG11dGUgb3IgdW5tdXRlIGFuIHVzZXIgZ2xvYmFsbHkhIFRvIG11dGUgeW91ciBvd24gbWljcm9waG9uZTogUGxlYXNlIHVzZSB0aGUgbWljcm9waG9uZSBpY29uIGluIHlvdXIgdmlkZW8gcG9kITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDEwIiBuYW1lPSJwb2xsX25hbWUiPgorICAgIDx2YWx1ZT5Qb2xsIE5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMSIgbmFtZT0icG9sbF9uYW1lIj4KKyAgICA8dmFsdWU+WW91PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTIiIG5hbWU9ImFyY2hpdmVkX3BvbGxzIj4KKyAgICA8dmFsdWU+QXJjaGlldmVkIFBvbGxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTMiIG5hbWU9ImFjdGl2ZV9wb2xsIj4KKyAgICA8dmFsdWU+YWN0aXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTQiIG5hbWU9ImNoYXJ0X3NpbXBsZSI+CisgICAgPHZhbHVlPlNpbXBsZSBDaGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE1IiBuYW1lPSJjaGFydF9waWUiPgorICAgIDx2YWx1ZT5QaWUgQ2hhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNiIgbmFtZT0ic2lnbl91cF92YWxpZGF0aW9uIj4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTciIG5hbWU9ImNoYXRfbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+TmV3IG1lc3NhZ2Uocyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxOCIgbmFtZT0icG9sbF9jbG9zZSI+CisgICAgPHZhbHVlPkNsb3NlIFBvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxOSIgbmFtZT0icG9sbF9jbG9zZV9jb25maXJtIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNsb3NlIHRoaXMgUG9sbD8gTm8gb25lIHdpbGwgYmUgYWJsZSB0byB2b3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjAiIG5hbWU9InBvbGxfZGVsZXRlIj4KKyAgICA8dmFsdWU+RGVsZXRlIFBvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMSIgbmFtZT0icG9sbF9kZWxldGVfY29uZmlybSI+CisgICAgPHZhbHVlPkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBQb2xsPyBUaGUgcmVzdWx0cyB3aWxsIGJlIGRlbGV0ZWQgYXMgd2VsbC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMiIgbmFtZT0ibGFuZ3VhZ2VfY29kZSI+CisgICAgPHZhbHVlPkxhbmd1YWdlIElTTyBDb2RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjMiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19wZXJtaXNzaW9uIj4KKyAgICA8dmFsdWU+QWxsb3cvRGVueSByaWdodCB0byBnaXZlIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNCIgbmFtZT0iYWxsb3dfZXhjbHVzaXZlX2F1ZGlvX3Blcm1pc3Npb24iPgorICAgIDx2YWx1ZT5BbGxvdyB1c2VyIHRvIGdpdmUgZXhjbHVzaXZlIGF1ZGlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjUiIG5hbWU9ImRlbnlfZXhjbHVzaXZlX2F1ZGlvX3Blcm1pc3Npb24iPgorICAgIDx2YWx1ZT5EZW55IHVzZXIgdG8gZ2l2ZSBleGNsdXNpdmUgYXVkaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNiIgbmFtZT0iZXhjbF9hdWRpbyBhcHBseSBzZWxmIG9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGdldCBhIHBlcm1pc3Npb24gZm9yIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNyIgbmFtZT0iZXhjbF9hdWRpbyBhcHBseSBvZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+d2FudCB0aGF0IHRoZSBtb2RlcmF0b3IgZ2l2ZXMgbWUgYSBwZXJtaXNzaW9uIGZvciBleGNsdXNpdmUgYXVkaW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjgiIG5hbWU9ImV4Y2xfYXVkaW8gc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+R2l2ZSBhIHBlcm1pc3Npb24gZm9yIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyOSIgbmFtZT0iY2FtX3Jlc29sdXRpb24iPgorICAgIDx2YWx1ZT5DYW0gcmVzb2x1dGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMwIiBuYW1lPSJjYW1fcmVzb2x1dGlvbl9pbmZvIj4KKyAgICA8dmFsdWU+Q2hhbmdpbmcgdGhlIHJlc29sdXRpb24gYWZmZWN0cyBiYW5kd2lkdGgsIGJpZ2dlciBwaWN0dXJlIG5lZWRzIG1vcmUgYmFuZHdpdGghPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzEiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19lcnJvciI+CisgICAgPHZhbHVlPllvdSBkb24ndCBoYXZlIHRoZSByaWdodCB0byBnaXZlIHlvdXJzZWxmIG9yIG90aGVycyBleGNsdXNpdmUgYXVkaW8uIFlvdSBuZWVkIHRvIGFwcGx5IGZvciB0aGUgcmlnaHQgZnJvbSB0aGUgbW9kZXJhdG9yIG9yIGFzayB0aGUgbW9kZXJhdG9yIHRvIGdpdmUgeW91IGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzMiIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2FzayI+CisgICAgPHZhbHVlPkkgd291bGQgbGlrZSB0byBnZXQgdGhlIHJpZ2h0IGZvciBleGNsdXNpdmUgYXVkaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzMyIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2FjdGlvbiI+CisgICAgPHZhbHVlPkdpdmUgZXhjbHVzaXZlIGF1ZGlvIHRvIG1lIChhbHRlcm5hdGl2ZWx5IGNsaWNrIG9uIHlvdXIgdmlkZW8gcG9kIG9yIHByZXNzIEYxMik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNCIgbmFtZT0ibWljcm8gaXMgb24iPgorICAgIDx2YWx1ZT5NaWNyb3Bob25lIGlzIG9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM1IiBuYW1lPSJtaWNybyBpcyBvZmYiPgorICAgIDx2YWx1ZT5NaWNyb3Bob25lIGlzIG11dGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzYiIG5hbWU9ImhpZGVfY2hhdCI+CisgICAgPHZhbHVlPkhpZGUgY2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM3IiBuYW1lPSJoaWRlX2FjdGl2aXRpZXNfYW5kX2FjdGlvbnMiPgorICAgIDx2YWx1ZT5IaWRlIGFjdGl2aXRpZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzOCIgbmFtZT0iaGlkZV9maWxlc19leHBsb3JlciI+CisgICAgPHZhbHVlPkhpZGUgZmlsZXMgZXhwbG9yZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzOSIgbmFtZT0iaGlkZV9hY3Rpb25zX21lbnUiPgorICAgIDx2YWx1ZT5IaWRlIGFjdGlvbnMgbWVudTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQwIiBuYW1lPSJoaWRlX3NjcmVlbl9zaGFyaW5nIj4KKyAgICA8dmFsdWU+SGlkZSBzY3JlZW4gc2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQxIiBuYW1lPSJoaWRlX3doaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5IaWRlIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MiIgbmFtZT0ic2hvdyBtaWNyb3Bob25lIHN0YXR1cyI+CisgICAgPHZhbHVlPlNob3cgbWljcm8gc3RhdHVzIGluIHZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDMiIG5hbWU9ImxheW91dF9vcHRpb25zIj4KKyAgICA8dmFsdWU+TGF5b3V0IG9wdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0NCIgbmFtZT0iY2FsZW5kYXIgbmV3IGJ1dHRvbiI+CisgICAgPHZhbHVlPk5ldyBFdmVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ1IiBuYW1lPSJjYWxlbmRhciBwYXNzd29yZCBpbmZvIHRleHQiPgorICAgIDx2YWx1ZT5QYXNzd29yZCBwcm90ZWN0ZWQgYXJlIHRoZSBsaW5rcyB0byB0aGUgY29uZmVyZW5jZSB0aGF0IGFyZSBzZW5kIHRvIHRoZSBwYXJ0aWNpcGVudHMgd2hlbiB5b3Ugc2F2ZSB0aGUgY2FsZW5kYXIgZXZlbnQsIG5vdCB0aGUgcm9vbSEgVGhhdCBtZWFucyBpZiB5b3Ugc2F2ZSB0aGUgZXZlbnQgbXVsdGlwbGUgdGltZXMgYnV0IHdpdGggZGlmZmVyZW50IHBhc3N3b3JkcyBldmVyeSBwYXJ0aWNpcGVudCByZWNlaXZlcyBhIG5ldyBsaW5rIHRoYXQgaGFzIGEgZGlmZmVyZW50IHBhc3N3b3JkLiBCdXQgb2xkIGxpbmtzIHN0aWxsIHdvcmsgb25jZSBzZW5kITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ2IiBuYW1lPSJjYWxlbmRhciBlZGl0IGJ1dHRvbiI+CisgICAgPHZhbHVlPkVkaXQgZGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ3IiBuYW1lPSJzaXAgc2hvdyBkaWFsZXIiPgorICAgIDx2YWx1ZT5TaG93IHNpcCBkaWFsZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0OCIgbmFtZT0ic2lwIGNhbGwiPgorICAgIDx2YWx1ZT5DYWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDkiIG5hbWU9ImNhbGVuZGFyIGNvbnRhY3QgbGlzdCI+CisgICAgPHZhbHVlPlNob3cgY2FsZW5kYXIgZXZlbnRzIG9mIGNvbnRhY3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+WW91ciBob21lITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUxIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5QbGFuIHlvdXIgbWVldGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MiIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+V2F0Y2ggcmVjb3JkaW5nIGFuZCBpbnRlcnZpZXdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTMiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPkNob29zZSBhbmQgc3RhcnQgYSB3ZWItY29uZmVyZW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU0IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgdXNlcnMgYW5kIHJpZ2h0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU1IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgY29ubmVjdGlvbnMgYW5kIGtpY2sgdXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1NiIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIHVzZXJncm91cHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1NyIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIGNvbmZlcmVuY2Ugcm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1OCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIHN5c3RlbSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU5IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgbGFiZWxzIGFuZCB3b3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjAiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBMREFQIGFuZCBBRFMgY29uZmlndXJhdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MSIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+RXhwb3J0L0ltcG9ydCBTeXN0ZW0gQmFja3VwczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYyIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgbW9kZXJhdGlvbiBvciB0aGUgcmlnaHQgdG8gZHJhdyBvbiB3aGl0ZWJvYXJkIHRvIHVwbG9hZCwgYWRkLCBkZWxldGUgb3IgbG9hZCBmaWxlcyBhbmQgZm9sZGVycy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MyIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkVkaXQgdGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY0IiBuYW1lPSJzYWx1dGF0aW9uIj4KKyAgICA8dmFsdWU+UHJvZjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY1IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlB1Ymxpc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2NiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdGFydCBQdWJsaXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjciIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U3RvcCBQdWJsaXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+SG9zdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY5IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlB1Ymxpc2ggQXBwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzAiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UHVibGlzaCBJZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDcxIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHVjZSB0aGUgd2lkdGggb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbW92ZSBpdCBsZWZ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzIiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UmVkdWNlIHRoZSBoZWlnaHQgb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbW92ZSBpdCBib3R0b208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5SZWR1Y2UgdGhlIHggb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbWFrZSBpdCB3aWRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc0IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHVjZSB0aGUgeSBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtYWtlIGl0IGhpZ2hlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc1IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkZpbGwgdGhlc2Ugc2V0dGluZ3Mgc3RyZWFtIHlvdXIgc2NyZWVuIGRhdGEgdG8gM3RoIHBhcnR5IHByb3ZpZGVycyBsaWtlIGp1c3Rpbi50djwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc2IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlBsZWFzZSBzdGFydCBTY3JlZW4gc2hhcmluZyB0byBiZSBhYmxlIHRvIHB1Ymxpc2ggaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3NyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5Nb2RlcmF0b3IgcGVybWlzc2lvbiByZXF1aXJlZCB0byBzdGFydCByZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3OCIgbmFtZT0ibm8gcmlnaHQgZm9yIGV4Y2x1c2l2ZSBhdWRpbyI+CisgICAgPHZhbHVlPllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gYXBwbHkgZXhjbHVzaXZlIGF1ZGlvIHRvIGFueSBwYXJ0aWNpcGFudC4gWW91IG5lZWQgbW9kZXJhdGlvbiByb2xlIG9yIHRoZSByaWdodCBmb3IgZXhjbHVzaXZlIGF1ZGlvIHRvIG1ha2UgYW55IG1pY3JvcGhvbmUgZXhjbHVzaXZlIHR1cm5lZCBvbi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzkiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlVwbG9hZCBuZXcgZmlsZSB0byBmaWxlIGV4cGxvcmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODAiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPk9wZW4gbmV3IGRpYWxvZyB3aXRoIHNoYXJpbmcgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+QW4gZXhpc3RpbmcgbW9kZXJhdG9yIG11c3QgYXBwcm92ZSBpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgyIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5Bc2sgbW9kZXJhdG9yIHRvIHNoYXJlIHlvdXIgd2ViY2FtL21pY3JvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODMiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkdhdGhlciBmZWVkYmFjayBieSBjcmVhdGluZyBhIHBvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+UGFzdCBhbmQgY3VycmVudCBwb2xsIHJlc3VsdHMgYXMgY2hhcnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODUiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlZvdGUgaWYgdGhlcmUgaXMgYSBwb2xsIGZvciB0aGlzIGNvbmZlcmVuY2Ugcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg2IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5FZGl0IGNhbSBhbmQgbWljIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODciIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkNvbmZpcm0gYW5kIGxlYXZlIHRoZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODgiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkNhbGwgZXh0ZXJuYWwgcGVvcGxlIHZpYSBWb0lQL1NJUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg5IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5TZW5kIGFuIGVtYWlsIHdpdGggYSBkaXJlY3QgbGluayB0byB0aGlzIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Q2hhbmdlIHlvdXIgd2hpdGVib2FyZCBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkxIiBuYW1lPSJiYWNrdXAgYWRtaW4iPgorICAgIDx2YWx1ZT5NYXggdXBsb2FkIHNpemU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MiIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+QXNrIG1vZGVyYXRvciB0byBzaGFyZSB5b3VyIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MyIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+U3RhcnQgUHJpdmF0ZSBDaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTQiIG5hbWU9ImFsbF9wcml2YXRlX2NoYXQiPgorICAgIDx2YWx1ZT5BbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NSIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBzdGFydCBhIHByaXZhdGUgY2hhdCB3aXRoIHlvdXJzZWxmLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk2IiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5Zb3UndmUgYWxyZWFkeSBzdGFydGVkIGEgcHJpdmF0ZSBjaGF0IHdpdGggdGhpcyBwYXJ0aWNpcGFudC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NyIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHByaXZhdGUgY2hhdD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5OCIgbmFtZT0iU2VydmVycyI+CisgICAgPHZhbHVlPlNlcnZlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5OSIgbmFtZT0iU2VydmVycyI+CisgICAgPHZhbHVlPlNlcnZlcnMgcGFydGljaXBhdGluZyBpbiBjbHVzdGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDAiIG5hbWU9IlNlcnZlciBuYW1lIj4KKyAgICA8dmFsdWU+U2VydmVyIE5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMSIgbmFtZT0iU2VydmVyIEFkZHJlc3MiPgorICAgIDx2YWx1ZT5TZXJ2ZXIgQWRkcmVzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAyIiBuYW1lPSJTZXJ2ZXIgZGV0YWlscyI+CisgICAgPHZhbHVlPlNlcnZlciBkZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDMiIG5hbWU9IlNlbmQgU01TIj4KKyAgICA8dmFsdWU+U2VuZCBTTVM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNCIgbmFtZT0icHVibGlzaGluZ19tZXNzYWdlIj4KKyAgICA8dmFsdWU+UHVibGlzaGluZy4gVXNlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNSIgbmFtZT0iY21kX2xpbmVfYWRtaW4iPgorICAgIDx2YWx1ZT5UbyBzYXZlIHRpbWUgYW5kIGludGVybmV0IHRyYWZmaWMgeW91IGNhbiB1c2UgY29tbWFuZCBsaW5lIGFkbWluIHRvIGJhY2t1cC9yZXN0b3JlL3VwZ3JhZGU6XG4gMSkgZ28gdG8gT00gaW5zdGFsbCBkaXIgKGZvciBleC4gL29wdC9yZWQ1KSBcbiAyKSBzdG9wIE9NIChmb3IgZXguIC4vcmVkNS1zaHV0ZG93bi5zaClcbiAzKSAuL2FkbWluLnNoIC1iIC1maWxlIH4vdG9kYXlfb21fYmFja3VwLnppcCAoY3JlYXRlIGJhY2t1cCBvZiBjdXJyZW50IE9NKVxuIDQpIGRvd25sb2FkIGFyY2hpdmUgd2l0aCBuZXcgT01cbiA1KSBtdiAvb3B0L3JlZDUgL29wdC5yZWQ1LmJhayAobW92ZSB3b3JraW5nIHZlcnNpb24gb2YgT00ganVzdCBpbiBjYXNlIDopKVxuIDYpIGV4dHJhY3QgZG93bmxvYWRlZCBPTSB0byB0aGUgL29wdC9yZWQ1XG4gNykgLi9hZG1pbi5zaCAtaSAtZmlsZSB+L3RvZGF5X29tX2JhY2t1cC56aXAgKG9yICcuL2FkbWluLnNoIC1pIC1maWxlIH4vdG9kYXlfb21fYmFja3VwLnppcCAtLWRiLXR5cGUgbXlzcWwgLS1kYi11c2VyIG9tX3VzZXIgLS1kYi1wYXNzIG9tX3VzZXJfcGFzcycgaW4gY2FzZSBvZiB5b3UgYXJlIHVzaW5nIG5vbi1kZWZhdWx0IERCIClcbiA4KSBzdGFydCBPTVxuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDYiIG5hbWU9InB1YmxpY19yb29tX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5Sb29tcyBjb21tb24gdG8gYWxsIHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNyIgbmFtZT0icHJpdmF0ZV9yb29tX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5Sb29tcyBjb21tb24gdG8gdGhlIGN1cnJlbnQgdXNlciBncm91cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA4IiBuYW1lPSJteV9yb29tX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5Sb29tcyBvZiB0aGUgY3VycmVudCB1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDkiIG5hbWU9ImNyZWF0ZV9uZXdfcm9vbSI+CisgICAgPHZhbHVlPkNyZWF0ZS9Nb2RpZnkgYXBwb2ludG1lbnQgc3BlY2lhbCByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTAiIG5hbWU9Im11bHRpcGxlX2FkZHJlc3NlcyI+CisgICAgPHZhbHVlPllvdSBjYW4gZW50ZXIgbXVsdGlwbGUgYWRkcmVzc2VzIGluIHRoZSBmb3JtYXQ6IGZpcnN0bmFtZTEgbGFzdG5hbWUxICZsdDtlbWFpbDEmZ3Q7LCJmaXJzdG5hbWUyIGxhc3RuYW1lMiIgJmx0O2VtYWlsMiZndDssJ2ZpcnN0bmFtZTMgbGFzdG5hbWUzJyAmbHQ7ZW1haWwzJmd0OywgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTEiIG5hbWU9InN0cmVhbV92b2x1bWUiPgorICAgIDx2YWx1ZT5BZGp1c3Qgc3RyZWFtIHZvbHVtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTEyIiBuYW1lPSJtaWNyb3Bob25lX3ZvbHVtZSI+CisgICAgPHZhbHVlPkFkanVzdCBtaWNyb3Bob25lIHZvbHVtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTEzIiBuYW1lPSJjaGF0X21vZGVyYXRlZCI+CisgICAgPHZhbHVlPklzIGNoYXQgbW9kZXJhdGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTQiIG5hbWU9ImNoYXRfbW9kZXJhdGVkIj4KKyAgICA8dmFsdWU+QWxsb3cgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE1IiBuYW1lPSJjaGF0X29wZW5lZCI+CisgICAgPHZhbHVlPkNoYXQgcGFuZWwgb3BlbmVkIGJ5IGRlZmF1bHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNiIgbmFtZT0iZmlsZXNfb3BlbmVkIj4KKyAgICA8dmFsdWU+RmlsZXMgcGFuZWwgb3BlbmVkIGJ5IGRlZmF1bHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNyIgbmFtZT0ic2VydmVyIGFkbWluIHNlY3Rpb24gbGFzdHBpbmciPgorICAgIDx2YWx1ZT5MYXN0IHBpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxOCIgbmFtZT0ic2VydmVyIGFkbWluIHNlY3Rpb24gbGFzdHBpbmcgaW5mbyI+CisgICAgPHZhbHVlPkV2ZXJ5IHNsYXZlIHNlbmRzIGEgcGluZyB0byB0aGUgbWFzdGVyIGV2ZXJ5IDMgc2Vjb25kcyAoY29uZmlndXJhYmxlKS4gU2xhdmUgbGFzdFBpbmcgbXVzdCBiZSBzbWFsbGVyIHRoZW4gMSBtaW51dGUgc28gdGhhdCB0aGUgbWFzdGVyIHVzZXMgdGhlIHNsYXZlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE5IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcG9ydCI+CisgICAgPHZhbHVlPkhUVFAgUG9ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIwIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gdXNlciI+CisgICAgPHZhbHVlPlVzZXIgKFNPQVAtQWNjZXNzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIxIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcGFzc3dvcmQiPgorICAgIDx2YWx1ZT5QYXNzd29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIyIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gd2ViYXBwIHBhdGgiPgorICAgIDx2YWx1ZT5XZWJhcHAgcGF0aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIzIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcHJvdG9jb2wiPgorICAgIDx2YWx1ZT5Qcm90b2NvbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI0IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcGluZyBydW5uaW5nIj4KKyAgICA8dmFsdWU+UGluZyBydW5uaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjUiIG5hbWU9InNlcnZlciBhZG1pbiBhY3RpdmUiPgorICAgIDx2YWx1ZT5BY3RpdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyNiIgbmFtZT0iZ2VuZXJhdGVfaGFzaCI+CisgICAgPHZhbHVlPkdlbmVyYXRlIFVSTDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI3IiBuYW1lPSJuZXR3b3JrIHRlc3RpbmcgbGluayI+CisgICAgPHZhbHVlPk5ldHdvcmsgdGVzdGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI4IiBuYW1lPSJyb29tX29wdGlvbnMiPgorICAgIDx2YWx1ZT5BdXRvIHNlbGVjdCBpbnRlcnZpZXcgdmlkZW8gcG9kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjkiIG5hbWU9ImZvbnRfdW5kZXJsaW5lIj4KKyAgICA8dmFsdWU+VW5kZXJsaW5lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzAiIG5hbWU9ImZvbnRfc3R5bGUiPgorICAgIDx2YWx1ZT5Gb250IHN0eWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzEiIG5hbWU9ImFsbG93X2ZvbnRfc3R5bGVzIj4KKyAgICA8dmFsdWU+QWxsb3cgZm9udCBzdHlsZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMiIgbmFtZT0iZm9udF9jb2xvciI+CisgICAgPHZhbHVlPkZvbnQgY29sb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMyIgbmFtZT0iaHlwZXJsaW5rIj4KKyAgICA8dmFsdWU+SHlwZXJsaW5rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzQiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW4iPgorICAgIDx2YWx1ZT5TaG93IHNlc3Npb24gc3RhdGlzdGljczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM1IiBuYW1lPSJjb25uZWN0aW9uIGFkbWluIj4KKyAgICA8dmFsdWU+U2Vzc2lvbiBkZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzYiIG5hbWU9InN5c3RlbV9pbXBvcnQiPgorICAgIDx2YWx1ZT5TeXN0ZW0gaW1wb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzciIG5hbWU9ImluY2x1ZGVfaW50b19iYWNrdXAiPgorICAgIDx2YWx1ZT5JbmNsdWRlIHVwbG9hZGVkIGZpbGVzIGFuZCByZWNvcmRpbmdzIGluIGJhY2t1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM4IiBuYW1lPSJyb29tX2FkbWluX3NpcCI+CisgICAgPHZhbHVlPkVuYWJsZSBTSVAgdHJhbnNwb3J0IGluIHRoZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzkiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19jb25maXJtIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIHByb3ZpZGUgdGhpcyB1c2VyIGFuIGV4Y2x1c2l2ZSBhdWRpbz88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU0MCIgbmFtZT0ibm9fdGltZXpvbmUiPgorICAgIDx2YWx1ZT5QbGVhc2Ugc3BlY2lmeSB5b3VyIHRpbWV6b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NDUiIG5hbWU9ImNvbnRlbnRfaXNfc2F2aW5nIj4KKyAgICA8dmFsdWU+Q29udGVudCBpcyBTYXZpbmcsIFBsZWFzZSB3YWl0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorPC9sYW5ndWFnZT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL2phcGFuZXNlLnhtbCBiL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL2phcGFuZXNlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZmI5M2RlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9sYW5ndWFnZXMvamFwYW5lc2UueG1sCkBAIC0wLDAgKzEsNDY1MiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKworPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworVGhpcyBGaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5IHRoZSBMYW5ndWFnZUVkaXRvciAKK3RvIGFkZCBuZXcgTGFuZ3VhZ2VzIG9yIG1vZGlmeS9jdXN0b21pemUgaXQgdXNlIHRoZSBMYW5ndWFnZUVkaXRvciAKK3NlZSBodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvTGFuZ3VhZ2VFZGl0b3IuaHRtbCBmb3IgRGV0YWlscyAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjLS0+Cis8bGFuZ3VhZ2UgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeG1sbnM6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbj0ibGFuZ3VhZ2UueHNkIj4KKyAgPHN0cmluZyBpZD0iMSIgbmFtZT0iY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPuS8muitsOWupDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyIiBuYW1lPSJtZWV0aW5nIj4KKyAgICA8dmFsdWU+5Lya6K2wPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMiIG5hbWU9ImNsYXNzcm9vbSI+CisgICAgPHZhbHVlPuism+a8lDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0IiBuYW1lPSJzZXR0aW5ncyI+CisgICAgPHZhbHVlPuioreWumjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1IiBuYW1lPSJiZW51dHplciI+CisgICAgPHZhbHVlPuODpuODvOOCtjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2IiBuYW1lPSJhZG1pbiI+CisgICAgPHZhbHVlPueuoeeQhjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3IiBuYW1lPSJzdG9wIj4KKyAgICA8dmFsdWU+5YGc5q2iPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPumMsueUuzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5IiBuYW1lPSJub2ZpbGUiPgorICAgIDx2YWx1ZT7liKnnlKjlj6/og73jgarjg5XjgqHjgqTjg6vjgYzjgYLjgorjgb7jgZvjgpM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAiIG5hbWU9InJlY29yZGJ5dGVhY2hlciI+CisgICAgPHZhbHVlPuism+W4q+OBq+OCiOOCi+mMsueUuzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMSIgbmFtZT0iY29ubmVjdGVkdXNlcnMiPgorICAgIDx2YWx1ZT7mjqXntprmuIjjgb/jg6bjg7zjgrY6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyIiBuYW1lPSJzdGFydGNvbmYiPgorICAgIDx2YWx1ZT7kvJrorbDplovlp4s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMiIG5hbWU9Im15bmFtZSI+CisgICAgPHZhbHVlPuWQjeWJjTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNCIgbmFtZT0idmlkZW9jb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+44OT44OH44Kq5Lya6K2wPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1IiBuYW1lPSJpbXBvcnQiPgorICAgIDx2YWx1ZT7jgqLjg4Pjg5fjg63jg7zjg4k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYiIG5hbWU9InJlZnJlc2hmaWxlcyI+CisgICAgPHZhbHVlPuODleOCoeOCpOODq+ODquOCueODiOihqOekuuabtOaWsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNyIgbmFtZT0idG9tYWluZmlsZSI+CisgICAgPHZhbHVlPuODleOCoeOCpOODq+ODquOCueODiOOBuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOCIgbmFtZT0ibmV3cG9sbCI+CisgICAgPHZhbHVlPuaWsOimj+aKleelqDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOSIgbmFtZT0ibmV3cG9sbGhlYWRlciI+CisgICAgPHZhbHVlPuaWsOimj+aKleelqDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMCIgbmFtZT0icXVlc3Rpb24iPgorICAgIDx2YWx1ZT7os6rllY86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxIiBuYW1lPSJwb2xsdHlwZSI+CisgICAgPHZhbHVlPuaKleelqOOCv+OCpOODlzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIiIG5hbWU9ImNyZWF0ZSI+CisgICAgPHZhbHVlPuS9nOaIkDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMyIgbmFtZT0iaW5mb21lc3NhZ2UiPgorICAgIDx2YWx1ZT7jg5Ljg7Pjg4g6IOaOpee2muS4reOBruWFqOWPguWKoOiAheOBq+WvvuOBl+OBpuOAgeaKleelqOOCkuS/g+OBmeODoeODg+OCu+ODvOOCuOOCkumAgeS/oeOBl+OBvuOBmTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNCIgbmFtZT0iY3JlYXRwb2xsIj4KKyAgICA8dmFsdWU+5oqV56Wo44Gu5L2c5oiQPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1IiBuYW1lPSJjYW5jZWwiPgorICAgIDx2YWx1ZT7jgq3jg6Pjg7Pjgrvjg6s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYiIG5hbWU9Inllc25vIj4KKyAgICA8dmFsdWU+44Gv44GEL+OBhOOBhOOBiDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNyIgbmFtZT0ibnVtZXJpYyI+CisgICAgPHZhbHVlPjHvvZ4xMOOBruaVsOWtlzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOCIgbmFtZT0icG9sbCI+CisgICAgPHZhbHVlPuaKleelqDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOSIgbmFtZT0ibW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPuizquWVj+OCkuS9nOaIkOOBmeOCi+OBq+OBr+WPuOS8muiAheOBq+OBquOCi+W/heimgeOBjOOBguOCiuOBvuOBmTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMCIgbmFtZT0idm90ZSI+CisgICAgPHZhbHVlPuaKleelqOOBjOeZu+mMsuOBleOCjOOBvuOBl+OBnzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMSIgbmFtZT0iYWxyZWFkeXZvdGVkIj4KKyAgICA8dmFsdWU+5oqV56Wo5riI44G/44Gn44GZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyIiBuYW1lPSJ2b3RpbmciPgorICAgIDx2YWx1ZT7mipXnpajjgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMiIG5hbWU9ImFuc3dlciI+CisgICAgPHZhbHVlPuOBguOBquOBn+OBruWbnuetlDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQiIG5hbWU9InllcyI+CisgICAgPHZhbHVlPuOBr+OBhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNSIgbmFtZT0ibm8iPgorICAgIDx2YWx1ZT7jgYTjgYTjgYg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYiIG5hbWU9InF1ZXN0aW9ud2FudCI+CisgICAgPHZhbHVlPuizquWVj+WGheWuuTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzciIG5hbWU9InBvbGxyZXN1bHRzIj4KKyAgICA8dmFsdWU+5oqV56Wo57WQ5p6c6Zay6KanPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4IiBuYW1lPSJxdWVzdGlvbiI+CisgICAgPHZhbHVlPuizquWVjzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkiIG5hbWU9InJlc3VsdHMiPgorICAgIDx2YWx1ZT7ntZDmnpw6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwIiBuYW1lPSJhbnN3ZXJzIj4KKyAgICA8dmFsdWU+5Zue562UOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MSIgbmFtZT0ibm9wb2xsIj4KKyAgICA8dmFsdWU+6ZaL5aeL44GV44KM44Gm44GE44KL5oqV56Wo44Gv44GC44KK44G+44Gb44KTPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyIiBuYW1lPSJ2b3RpbmdzIj4KKyAgICA8dmFsdWU+5oqV56WoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzIiBuYW1lPSJtZWV0aW5nIj4KKyAgICA8dmFsdWU+44Of44O844OG44Kj44Oz44KwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0IiBuYW1lPSJjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+5Lya6K2wPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1IiBuYW1lPSJ0eXBlIj4KKyAgICA8dmFsdWU+44K/44Kk44OXPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2IiBuYW1lPSJyZW1haW5pbmdzZWF0cyI+CisgICAgPHZhbHVlPuS7luOBruW4rTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NyIgbmFtZT0iYWxyZWFkeWNob3NlbiI+CisgICAgPHZhbHVlPuaXouOBq+mBuOaKnuOBleOCjOOBpuOBhOOBvuOBmTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OCIgbmFtZT0iZW50ZXIiPgorICAgIDx2YWx1ZT7lhaXlrqQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkiIG5hbWU9Im1vZGxlYXZlIj4KKyAgICA8dmFsdWU+5Y+45Lya6ICF44GM6YCA5a6k44GX44G+44GX44GfPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwIiBuYW1lPSJzeXN0ZW1tZXNzYWdlIj4KKyAgICA8dmFsdWU+44K344K544OG44Og5oOF5aCxPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxIiBuYW1lPSJjaG9zc2VkZXZpY2UiPgorICAgIDx2YWx1ZT7jg4fjg5DjgqTjgrnpgbjmip48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIiIG5hbWU9ImNob29zZWNhbSI+CisgICAgPHZhbHVlPldlYuOCq+ODoeODqTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMiIG5hbWU9ImNob29zZW1pYyI+CisgICAgPHZhbHVlPuODnuOCpOOCrzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQiIG5hbWU9Im9rIj4KKyAgICA8dmFsdWU+44Gv44GEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1IiBuYW1lPSJjYW5jZWwyIj4KKyAgICA8dmFsdWU+44Kt44Oj44Oz44K744OrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2IiBuYW1lPSJyZWNvbmVlY3RuZWVkZWQiPgorICAgIDx2YWx1ZT7lho3mjqXntprjgYzlv4XopoHjgafjgZnjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTciIG5hbWU9ImVkaXRzZXR1cCI+CisgICAgPHZhbHVlPuODh+ODkOOCpOOCueioreWumuOBrue3qOmbhjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OCIgbmFtZT0iY291cnNlIj4KKyAgICA8dmFsdWU+44Kz44O844K5OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OSIgbmFtZT0ibGFuZ3VhZ2UiPgorICAgIDx2YWx1ZT7oqIDoqp46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwIiBuYW1lPSJvazIiPgorICAgIDx2YWx1ZT5PSzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MSIgbmFtZT0iY2FuY2VsMyI+CisgICAgPHZhbHVlPuOCreODo+ODs+OCu+ODqzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MiIgbmFtZT0iY2xlYXJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+44Ob44Ov44Kk44OI44Oc44O844OJ44Gu44Kv44Oq44KiPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzIiBuYW1lPSJjbGVhcndoaXRlYm9hcmRxdWVzdGlvbiI+CisgICAgPHZhbHVlPuODm+ODr+OCpOODiOODnOODvOODieOCkuOCr+ODquOCouOBl+OBvuOBmeOBiz88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQiIG5hbWU9ImRvbnRhc2thZ2FpbiI+CisgICAgPHZhbHVlPuasoeWbnuOBi+OCieWFpeWKm+OCkuecgeeVpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NSIgbmFtZT0ibm8iPgorICAgIDx2YWx1ZT7jgYTjgYTjgYg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYiIG5hbWU9ImVkaXRzZXR1cDIiPgorICAgIDx2YWx1ZT7oqK3lrprjga7nt6jpm4Y8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjciIG5hbWU9Im5lZWRjb25maXJtYXRpb253aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+44Ob44Ov44Kk44OI44Oc44O844OJ44KS44Kv44Oq44Ki44GZ44KL5YmN44Gr56K66KqN44KS6KaB5rGCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4IiBuYW1lPSJ1c2VyaW5mbyI+CisgICAgPHZhbHVlPuODpuODvOOCtuaDheWgsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OSIgbmFtZT0iY2xlYXJkcmF3YXJlYSI+CisgICAgPHZhbHVlPuaPj+eUu+mgmOWfn+OBruOCr+ODquOCojwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MCIgbmFtZT0idW5kbyI+CisgICAgPHZhbHVlPuWPluOCiua2iOOBlzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MSIgbmFtZT0icmVkbyI+CisgICAgPHZhbHVlPue5sOOCiui/lOOBlzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MiIgbmFtZT0ic2VsZWN0b2JqZWN0Ij4KKyAgICA8dmFsdWU+44Kq44OW44K444Kn44Kv44OI6YG45oqePC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczIiBuYW1lPSJ0ZXh0Ij4KKyAgICA8dmFsdWU+5paH5a2X5YiXPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0IiBuYW1lPSJwYWludCI+CisgICAgPHZhbHVlPuiHqueUsee3mjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NSIgbmFtZT0iZHJhd2xpbmUiPgorICAgIDx2YWx1ZT7nm7Tnt5o8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYiIG5hbWU9ImRyYXd1Ij4KKyAgICA8dmFsdWU+5LiL57eaPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3IiBuYW1lPSJyZWN0Ij4KKyAgICA8dmFsdWU+5Zub6KeS5b2iPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4IiBuYW1lPSJlbGxpcHNlIj4KKyAgICA8dmFsdWU+5qWV5YaGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5IiBuYW1lPSJhcnJvdyI+CisgICAgPHZhbHVlPuefouWNsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MCIgbmFtZT0iZGVsZXRlY2hvc2VuIj4KKyAgICA8dmFsdWU+5YmK6ZmkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxIiBuYW1lPSJhcHBsaXltb2QiPgorICAgIDx2YWx1ZT7lj7jkvJrogIXjgavjgarjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIiIG5hbWU9ImFwcGx5Ij4KKyAgICA8dmFsdWU+6YGp55SoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzIiBuYW1lPSJjYW5jZWwiPgorICAgIDx2YWx1ZT7jgq3jg6Pjg7Pjgrvjg6s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQiIG5hbWU9Im1vZCI+CisgICAgPHZhbHVlPuWPuOS8muiAheOBq+OBquOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NSIgbmFtZT0iY2xvc2UiPgorICAgIDx2YWx1ZT7plonjgZjjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYiIG5hbWU9Iml0YWxpYyI+CisgICAgPHZhbHVlPuOCpOOCv+ODquODg+OCrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NyIgbmFtZT0iYm9sZCI+CisgICAgPHZhbHVlPuODnOODvOODq+ODiTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OCIgbmFtZT0id2FpdGluZyI+CisgICAgPHZhbHVlPuW+heapn+S4rTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OSIgbmFtZT0iYXBwbHlNZXNzYWdlIj4KKyAgICA8dmFsdWU+5Y+45Lya6ICF5biM5pyb44Gu44Om44O844K2OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MCIgbmFtZT0iYWNjZXB0Ij4KKyAgICA8dmFsdWU+6Kix5Y+vPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxIiBuYW1lPSJyZWplY3QiPgorICAgIDx2YWx1ZT7mi5LlkKY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIiIG5hbWU9ImNhbmNlbCI+CisgICAgPHZhbHVlPuOCreODo+ODs+OCu+ODqzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MyIgbmFtZT0ic2VuZG1vZHJlcXVlc3RtZXNzYWdlIj4KKyAgICA8dmFsdWU+5qyh44Gu44Om44O844K244Gr44Oq44Kv44Ko44K544OI44KS6YCB5L+hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0IiBuYW1lPSJhY2NlcHQiPgorICAgIDx2YWx1ZT7oqLHlj6/jgZXjgozjgb7jgZfjgZ88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUiIG5hbWU9InJlamVjdCI+CisgICAgPHZhbHVlPuaLkuWQpuOBleOCjOOBvuOBl+OBnzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NiIgbmFtZT0iY2hhbmdlbW9kIj4KKyAgICA8dmFsdWU+5Y+45Lya6ICF44Gu5aSJ5pu0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3IiBuYW1lPSJub25tb2RlcnJvcm1lc3NhZ2UiPgorICAgIDx2YWx1ZT7jgYLjgarjgZ/jga/lj7jkvJrogIXjgafjga/jgYLjgorjgb7jgZvjgpPjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgiIG5hbWU9Im1vZGVyYXRvciI+CisgICAgPHZhbHVlPuWPuOS8muiAhTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkiIG5hbWU9InJvb21mdWxsbWVzc2FnZSI+CisgICAgPHZhbHVlPuOBk+OBruS8muitsOWupOOBr+a6gOWupOOBp+OBmeOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAiIG5hbWU9ImVsbGxpcHNlIj4KKyAgICA8dmFsdWU+5qWV5YaGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMSIgbmFtZT0iY2xvc2UiPgorICAgIDx2YWx1ZT7plonjgZjjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyIiBuYW1lPSJBdXRoRXJyb3IiPgorICAgIDx2YWx1ZT7lhaXlipvjg4fjg7zjgr/jgqjjg6njg7w8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzIiBuYW1lPSJtaW40dXNlcm5hbWUiPgorICAgIDx2YWx1ZT7jg6bjg7zjgrblkI3jga/mnIDkvY405paH5a2X5Lul5LiK5b+F6KaB44Gn44GZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNCIgbmFtZT0ibWluNHBhc3MiPgorICAgIDx2YWx1ZT7jg5Hjgrnjg6/jg7zjg4njga/mnIDkvY405paH5a2X5Lul5LiK5b+F6KaB44Gn44GZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNSIgbmFtZT0idXNlcm5hbWV0YWtlbiI+CisgICAgPHZhbHVlPuOBneOBruODpuODvOOCtuWQjeOBr+aXouOBq+S9v+OCj+OCjOOBpuOBhOOBvuOBmTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYiIG5hbWU9ImVtYWlsdGFrZW4iPgorICAgIDx2YWx1ZT7jgZ3jga7jg6Hjg7zjg6vjgqLjg4njg6zjgrnjga/ml6LjgavnmbvpjLLjgZXjgozjgabjgYTjgb7jgZk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3IiBuYW1lPSJlbWFpbHRha2VuIj4KKyAgICA8dmFsdWU+44K344K544OG44Og44Ko44Op44O844CC566h55CG6ICF44Gr6YCj57Wh44GX44Gm44GP44Gg44GV44GE44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOCIgbmFtZT0iQXV0aGxvZ2luIj4KKyAgICA8dmFsdWU+44Ot44Kw44Kk44OzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOSIgbmFtZT0iQXV0aHVzZXIiPgorICAgIDx2YWx1ZT7jg6bjg7zjgrY6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMCIgbmFtZT0iQXV0aHBhc3MiPgorICAgIDx2YWx1ZT7jg5Hjgrnjg6/jg7zjg4k6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMSIgbmFtZT0iQXV0aGxhbmciPgorICAgIDx2YWx1ZT7oqIDoqp48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyIiBuYW1lPSJBdXRocmVnIj4KKyAgICA8dmFsdWU+44Ot44Kw44Kk44OzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMyIgbmFtZT0icmVnZm9ybWhlYWQiPgorICAgIDx2YWx1ZT7jgrXjgqTjg7PjgqLjg4Pjg5c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0IiBuYW1lPSJyZWdmb3JtdXNlciI+CisgICAgPHZhbHVlPuODpuODvOOCtjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1IiBuYW1lPSJyZWdmb3JtcGFzcyI+CisgICAgPHZhbHVlPuODkeOCueODr+ODvOODiTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2IiBuYW1lPSJyZWdmb3JtcmV0eXBlIj4KKyAgICA8dmFsdWU+44OR44K544Ov44O844OJ5YaN5YWl5YqbOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTciIG5hbWU9InJlZ2Zvcm1maXJzdG5hbWUiPgorICAgIDx2YWx1ZT7lkI06PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOCIgbmFtZT0icmVnZm9ybWxhc3RuYW1lIj4KKyAgICA8dmFsdWU+5aeTOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkiIG5hbWU9InJlZ2Zvcm1tYWlsIj4KKyAgICA8dmFsdWU+44Oh44O844Or44Ki44OJ44Os44K5OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAiIG5hbWU9InJlZ2Zvcm1zdGF0ZSI+CisgICAgPHZhbHVlPuWbveWQjTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxIiBuYW1lPSJyZWdmb3JtYnRuMSI+CisgICAgPHZhbHVlPueZu+mMsjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIiIG5hbWU9InJlZ2Zvcm1idG4yIj4KKyAgICA8dmFsdWU+44Kt44Oj44Oz44K744OrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMyIgbmFtZT0iQXV0aGJ0bjIiPgorICAgIDx2YWx1ZT7nmbvpjLI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT7jg5vjg7zjg6A8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1IiBuYW1lPSJ1c2VyYWRtaW4iPgorICAgIDx2YWx1ZT7jg6bjg7zjgrbnrqHnkIY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2IiBuYW1lPSJncm91cGFkbWluIj4KKyAgICA8dmFsdWU+44Kw44Or44O844OXPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNyIgbmFtZT0ib3JnYWRtaW4iPgorICAgIDx2YWx1ZT7ntYTnuZTnrqHnkIY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4IiBuYW1lPSJoZWFkY29uZiI+CisgICAgPHZhbHVlPuS8muitsOWupOS4gOimpzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkiIG5hbWU9ImNvbmZfcHViIj4KKyAgICA8dmFsdWU+5YWs6ZaLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMCIgbmFtZT0iaGVhZF9vcmciPgorICAgIDx2YWx1ZT7ntYTnuZQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxIiBuYW1lPSJidG5fZW50ZXJyb29tIj4KKyAgICA8dmFsdWU+5YWl5a6kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMiIgbmFtZT0idXNlcmFsdGVyc2VsZl9sb2dpbiI+CisgICAgPHZhbHVlPuODreOCsOOCpOODs+WQjTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMiIG5hbWU9InVzZXJhbHRlcnNlbGZfcGFzcyI+CisgICAgPHZhbHVlPuODkeOCueODr+ODvOODiTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQiIG5hbWU9InVzZXJhbHRlcnNlbGZfcGFzc3JldHlwZSI+CisgICAgPHZhbHVlPuODkeOCueODr+ODvOODieWGjeWFpeWKmzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUiIG5hbWU9InVzZXJhbHRlcnNlbGZfZmlyc3RuYW1lIj4KKyAgICA8dmFsdWU+5ZCNPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNiIgbmFtZT0idXNlcmFsdGVyc2VsZl9sYXN0bmFtZSI+CisgICAgPHZhbHVlPuWnkzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzciIG5hbWU9InVzZXJhbHRlcnNlbGZfZW1haWwiPgorICAgIDx2YWx1ZT7jg6Hjg7zjg6vjgqLjg4njg6zjgrk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2JpcnRoIj4KKyAgICA8dmFsdWU+6KqV55Sf5pelPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOSIgbmFtZT0idXNlcmFsdGVyc2VsZl9zdHJlZXRubyI+CisgICAgPHZhbHVlPuW4gueUuuadkS/nlarlnLA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Rvd24iPgorICAgIDx2YWx1ZT7pg7Xkvr/nlarlj7cv6YO96YGT5bqc55yMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MSIgbmFtZT0idXNlcmFsdGVyc2VsZl9zdGF0ZSI+CisgICAgPHZhbHVlPuWbveWQjTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIiIG5hbWU9InVzZXJhbHRlcnNlbGZfYWRyZXNzY29tbWVudCI+CisgICAgPHZhbHVlPuOBneOBruS7luaDheWgsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMiIG5hbWU9InVzZXJhbHRlcnNlbGZfaGVhZGVyIj4KKyAgICA8dmFsdWU+44Om44O844K244OX44Ot44OV44Kj44O844OrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NCIgbmFtZT0ic2F2ZW1lbnViYXJfc2F2ZWxhYmVsIj4KKyAgICA8dmFsdWU+5L+d5a2YPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NSIgbmFtZT0ic2F2ZW1lbnViYXJfc2F2ZWxhYmVsIj4KKyAgICA8dmFsdWU+5L+d5a2YPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NiIgbmFtZT0iYWRtaW5fdXNlcmxpc3RfdXNlcl9pZCI+CisgICAgPHZhbHVlPuODpuODvOOCtklEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NyIgbmFtZT0iYWRtaW5fdXNlcmxpc3RfbG9naW4iPgorICAgIDx2YWx1ZT7jg63jgrDjgqTjg7PlkI08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4IiBuYW1lPSJhZG1pbl91c2VybGlzdF9maXJzdG5hbSI+CisgICAgPHZhbHVlPuWQjTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkiIG5hbWU9ImFkbWluX3VzZXJsaXN0X2xhc3RuYW1lIj4KKyAgICA8dmFsdWU+5aeTPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MCIgbmFtZT0idHVybm92ZXJsaXN0X25leHQiPgorICAgIDx2YWx1ZT7mrKE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxIiBuYW1lPSJ0dXJub3Zlcmxpc3RfcHJlIj4KKyAgICA8dmFsdWU+5YmNPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MiIgbmFtZT0ic2F2ZWNvbnRlbnRfY29uZmlybSI+CisgICAgPHZhbHVlPuWJiumZpDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMiIG5hbWU9InNhdmVjb250ZW50X2NvbmZpcm1fY2FuY2VsX2J0biI+CisgICAgPHZhbHVlPuOCreODo+ODs+OCu+ODqzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTQiIG5hbWU9InNhdmVjb250ZW50X2NvbmZpcm1fY29uZmlybV9idG4iPgorICAgIDx2YWx1ZT7liYrpmaQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU1IiBuYW1lPSJzYXZlbWVudWJhcl9hZGRsYWJlbCI+CisgICAgPHZhbHVlPuaWsOimj+S9nOaIkDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTYiIG5hbWU9InNhdmVtZW51YmFyX3JlbG9hZGxhYmVsIj4KKyAgICA8dmFsdWU+5pu05pawPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NyIgbmFtZT0ic2F2ZW1lbnViYXJfZGVsZXRlbGFiZWwiPgorICAgIDx2YWx1ZT7liYrpmaQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU4IiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fc3RhdHVzIj4KKyAgICA8dmFsdWU+44K544OG44O844K/44K5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1OSIgbmFtZT0idXNlcmFsdGVyX2FkbWluX3N0YXR1c0l0ZW0iPgorICAgIDx2YWx1ZT7nhKHlirk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYwIiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fc3RhdHVzSXRlbSI+CisgICAgPHZhbHVlPuacieWKuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjEiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9vcmdhbmlzYXRpb24iPgorICAgIDx2YWx1ZT7ntYTnuZQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYyIiBuYW1lPSJjYWxlbmRhcl9pY29ubGFiZWwiPgorICAgIDx2YWx1ZT7jgqvjg6zjg7Pjg4Djg7w8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYzIiBuYW1lPSJzYXZld2luZG93X2J0biI+CisgICAgPHZhbHVlPumWieOBmOOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjQiIG5hbWU9Im9yZ2FuaXNhdGlvbnRhYmxlbGlzdF9pZHJvdyI+CisgICAgPHZhbHVlPue1hOe5lC1JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjUiIG5hbWU9Im9yZ2FuaXNhdGlvbnRhYmxlbGlzdF9uYW1lcm93Ij4KKyAgICA8dmFsdWU+5ZCN5YmNPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2NiIgbmFtZT0idXNlcnZhbHVlX2xldmVsaWQxIj4KKyAgICA8dmFsdWU+44Om44O844K2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2NyIgbmFtZT0idXNlcnZhbHVlX2xldmVsaWQyIj4KKyAgICA8dmFsdWU+5Y+45Lya6ICFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2OCIgbmFtZT0idXNlcnZhbHVlX2xldmVsaWQzIj4KKyAgICA8dmFsdWU+566h55CG6ICFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2OSIgbmFtZT0idXNlcnZhbHVlX2xldmVsbGFiZWwiPgorICAgIDx2YWx1ZT7jg6bjg7zjgrbjg6zjg5njg6s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTcwIiBuYW1lPSJvcmd2YWx1ZV9oZWFkZXIiPgorICAgIDx2YWx1ZT7ntYTnuZQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTcxIiBuYW1lPSJvcmd2YWx1ZV9vcmduYW1lIj4KKyAgICA8dmFsdWU+5ZCN5YmNPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MiIgbmFtZT0ib3JndmFsdWVfb3JnbmFtZSI+CisgICAgPHZhbHVlPue1hOe5lOOBrui/veWKoDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzMiIG5hbWU9Im9yZ3ZhbHVlX29yZ25hbWUiPgorICAgIDx2YWx1ZT7ntYTnuZTjga7ov73liqA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc0IiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luIj4KKyAgICA8dmFsdWU+44Kt44Oj44Oz44K744OrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3NSIgbmFtZT0ib3JndmFsdWVfdXNlcndpbiI+CisgICAgPHZhbHVlPui/veWKoDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzYiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW4iPgorICAgIDx2YWx1ZT7ntYTnuZTjga7liYrpmaQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc3IiBuYW1lPSJvcmd2YWx1ZV91c2VybGlzdCI+CisgICAgPHZhbHVlPuODpuODvOOCtjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzgiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJsaXN0YWRkIj4KKyAgICA8dmFsdWU+44Om44O844K26L+95YqgPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3OSIgbmFtZT0ib3JndmFsdWVfdXNlcmxpc3RkZWxldGUiPgorICAgIDx2YWx1ZT7jg6bjg7zjgrbliYrpmaQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgwIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luaGVhZGVyIj4KKyAgICA8dmFsdWU+44Om44O844K26L+95YqgPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4MSIgbmFtZT0ib3JndmFsdWVfdXNlcndpbnNlYXJjaGZpZWxkIj4KKyAgICA8dmFsdWU+44Om44O844K25qSc57SiPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4MiIgbmFtZT0ib3JndmFsdWVfdXNlcndpbnNlYXJjaGJ0biI+CisgICAgPHZhbHVlPuaknOe0ojwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODMiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5zZWFyY2hyZXN1bHQiPgorICAgIDx2YWx1ZT7jg6bjg7zjgrY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg0IiBuYW1lPSJsb2dpbndpbl9jaG9vc2VvcmdhbmlzYXRpb24iPgorICAgIDx2YWx1ZT7ntYTnuZQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg1IiBuYW1lPSJsb2dpbndpbl9jaG9vc2VvcmdhbmlzYXRpb25idG4iPgorICAgIDx2YWx1ZT7lhaXlrqQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg2IiBuYW1lPSJuYXZpX3Jvb21hZG1pbiI+CisgICAgPHZhbHVlPuS8muitsOWupOeuoeeQhjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODciIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT7kvJrorbDlrqQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg4IiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+aWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg5IiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+5ZCN5YmNPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5MCIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPuWFrOmWizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTEiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT7ntYTnuZQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkyIiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+5Lya6K2w5a6kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5MyIgbmFtZT0icm9vbXZhbHVlX25hbWUiPgorICAgIDx2YWx1ZT7lkI3liY08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk0IiBuYW1lPSJyb29tdmFsdWVfdHlwZSI+CisgICAgPHZhbHVlPuOCv+OCpOODlzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTUiIG5hbWU9InJvb212YWx1ZV9pc3B1YmxpYyI+CisgICAgPHZhbHVlPuWFrOmWizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTYiIG5hbWU9InJvb212YWx1ZV9jb21tZW50Ij4KKyAgICA8dmFsdWU+44Kz44Oh44Oz44OIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NyIgbmFtZT0id2hpdGVib2FyZF9zYXZlaWNvbiI+CisgICAgPHZhbHVlPuS/neWtmDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTgiIG5hbWU9IndoaXRlYm9hcmRfb3Blbmljb24iPgorICAgIDx2YWx1ZT7jg63jg7zjg4k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk5IiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbmhlYWRlciI+CisgICAgPHZhbHVlPuWQjeWJjeOCkuS7mOOBkeOBpuS/neWtmDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDAiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2ludGV4dCI+CisgICAgPHZhbHVlPuODleOCoeOCpOODq+WQjTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDEiIG5hbWU9ImZpbGVzIj4KKyAgICA8dmFsdWU+44OV44Kh44Kk44Or5ZCNPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMiIgbmFtZT0id2hpdGVib2FyZF9zYXZlYXN3aW5idG4xIj4KKyAgICA8dmFsdWU+44Kt44Oj44Oz44K744OrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMyIgbmFtZT0id2hpdGVib2FyZF9zYXZlYXN3aW5idG4yIj4KKyAgICA8dmFsdWU+5L+d5a2YPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNCIgbmFtZT0icnBjZXJyb3J3aW5faGVhZGVyIj4KKyAgICA8dmFsdWU+44Ko44Op44O8PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNSIgbmFtZT0ibG9hZHdtbF9oZWFkZXIiPgorICAgIDx2YWx1ZT7jg63jg7zjg4nkuK08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA2IiBuYW1lPSJsb2Fkd21sX21lc3NzbG9hZCI+CisgICAgPHZhbHVlPuOCquODluOCuOOCp+OCr+ODiOOBjOODreODvOODieOBleOCjOOBvuOBl+OBnzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDciIG5hbWU9ImxvYWR3bWxfbWVzc3N5bmMiPgorICAgIDx2YWx1ZT7jgq/jg6njgqTjgqLjg7Pjg4jlkIzmnJ/kuK3jgIHlvoXmqZ/kuK3jga7jgq/jg6njgqTjgqLjg7Pjg4g6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwOCIgbmFtZT0ibG9hZGltYWdlX21lc3Nsb2FkIj4KKyAgICA8dmFsdWU+44Kk44Oh44O844K444OH44O844K/44Ot44O844OJ5LitPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwOSIgbmFtZT0ibG9hZGltYWdlX21lc3NzeW5jIj4KKyAgICA8dmFsdWU+44Kv44Op44Kk44Ki44Oz44OI5ZCM5pyf5Lit44CB5b6F5qmf5Lit44Gu44Kv44Op44Kk44Ki44Oz44OIOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTAiIG5hbWU9ImxvYWR3bWxfY29uZmlybWhlYWRlciI+CisgICAgPHZhbHVlPuODm+ODr+OCpOODiOODnOODvOODieOCr+ODquOCojwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTEiIG5hbWU9ImxvYWR3bWxfY29uZmlybW1lc3MiPgorICAgIDx2YWx1ZT7jg5vjg6/jgqTjg4jjg5zjg7zjg4njga7lhoXlrrnjgYzjgq/jg6rjgqLjgZXjgozjgb7jgZnjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEyIiBuYW1lPSJsb2Fkd21sX2NvbmZpcm1tZXNzMiI+CisgICAgPHZhbHVlPuODleOCoeOCpOODq+ODreODvOODieWJjeOBrueiuuiqjTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTMiIG5hbWU9InNlbmRfaW52aXRhdGlvbl9idG4iPgorICAgIDx2YWx1ZT7mi5vlvoXjg6Hjg7zjg6vjgpLpgIHkv6E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE0IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5faGVhZGVyIj4KKyAgICA8dmFsdWU+5oub5b6F44Oh44O844Or44KS6YCB5L+hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNSIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX3N1YmplY3QiPgorICAgIDx2YWx1ZT7ku7blkI08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE2IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fcmVjaXBpZW50Ij4KKyAgICA8dmFsdWU+55u45omLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNyIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX21lc3NhZ2UiPgorICAgIDx2YWx1ZT7jg6Hjg4Pjgrvjg7zjgrg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE4IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fYnRuX2NvbmZpcm0iPgorICAgIDx2YWx1ZT7pgIHkv6E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE5IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fYnRuX2NhbmNlbCI+CisgICAgPHZhbHVlPuOCreODo+ODs+OCu+ODqzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjAiIG5hbWU9InNlbmRfY2hhdF90ZXh0X2J0biI+CisgICAgPHZhbHVlPueZuuiogDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjEiIG5hbWU9Imludml0ZWRfdXNlcndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT7jg6bjg7zjgrbjg4fjg7zjgr88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIyIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fc3ViamVjdCI+CisgICAgPHZhbHVlPuOBk+OBruS8muitsOOBruWIpeWQjTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjMiIG5hbWU9Imludml0ZWRfdXNlcndpbl9sb2dpbiI+CisgICAgPHZhbHVlPuWIpeWQjTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjQiIG5hbWU9Imludml0ZWRfdXNlcndpbl9maXJzdG5hbWUiPgorICAgIDx2YWx1ZT7lkI08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI1IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fbGFzdG5hbWUiPgorICAgIDx2YWx1ZT7lp5M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI2IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fbWFpbCI+CisgICAgPHZhbHVlPuODoeODvOODq+OCouODieODrOOCuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjciIG5hbWU9Imludml0ZWRfdXNlcndpbl9sYW5nIj4KKyAgICA8dmFsdWU+6KiA6KqePC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyOCIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2VudGVyIj4KKyAgICA8dmFsdWU+5YWl5a6kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyOSIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2VudGVyIj4KKyAgICA8dmFsdWU+44Ot44O844OJ5LitPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMCIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2VudGVyIj4KKyAgICA8dmFsdWU+44OH44O844K/44Ot44O844OJ5Lit44CC44GK5b6F44Gh44GP44Gg44GV44GE44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMSIgbmFtZT0idXNlcl9yZWdpc3RlckZhbHNlUFdEIj4KKyAgICA8dmFsdWU+44OR44K544Ov44O844OJ44GM6ZaT6YGV44Gj44Gm44GE44G+44GZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMiIgbmFtZT0idXNlcl9yZWdpc3RlckZhbHNlUFdESGVhZGVyIj4KKyAgICA8dmFsdWU+NOaWh+Wtl+S7peS4iuOBruWQjOS4gOOBruODkeOCueODr+ODvOODieOCkjLlm57lhaXlipvjgZfjgabjgY/jgaDjgZXjgYQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMzIiBuYW1lPSJ1c2VyX3JlZ2lzdGVyTWFpbEVycm9yIj4KKyAgICA8dmFsdWU+44Oh44O844Or44Ki44OJ44Os44K544GM6ZaT6YGV44Gj44Gm44GE44G+44GZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzNCIgbmFtZT0idXNlcl9yZWdpc3Rlck1haWxFcnJvckhlYWRlciI+CisgICAgPHZhbHVlPuODoeODvOODq+OCouODieODrOOCueOBjOeEoeWKueOBp+OBmTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzUiIG5hbWU9InVzZXJfcmVnaXN0ZXJTdWNjZXNzIj4KKyAgICA8dmFsdWU+55m76Yyy5a6M5LqGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzNiIgbmFtZT0idXNlcl9yZWdpc3RlclN1Y2Nlc3NIZWFkZXIiPgorICAgIDx2YWx1ZT7jgqLjgqvjgqbjg7Pjg4jjgYzkvZzmiJDjgZXjgozjgb7jgZfjgZ/jgILjg63jgrDjgqTjg7Plj6/og73jgafjgZnjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM3IiBuYW1lPSJ1c2VyX3NoYXJpbmdfbWVzc2FnZSI+CisgICAgPHZhbHVlPuOBn+OBoOOBhOOBvuODh+OCueOCr+ODiOODg+ODl+WFseacieOBjOOBp+OBjeOBvuOBm+OCk+OAguiqsOOBi+OBjOaXouOBq+WFseacieOBl+OBpuOBhOOBvuOBmeOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzgiIG5hbWU9InVzZXJfc2hhcmluZ19tZXNzYWdlSGVhZGVyIj4KKyAgICA8dmFsdWU+5YWx5pyJ44Gv6Kix5Y+v44GV44KM44Gm44GE44G+44Gb44KT44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzOSIgbmFtZT0idXNlcl9kb1N0YXJ0U2NyZWVuVmlld2VyIj4KKyAgICA8dmFsdWU+55S76Z2i44Gu5YWx5pyJL+mMsueUuzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDAiIG5hbWU9InNjcmVlbl93YXJuQmFuZHdpZHRoIj4KKyAgICA8dmFsdWU+5biv5Z+f5LiN6ImvOiDnlLvpnaLjga7lkIzmnJ/jgYzjgafjgY3jgb7jgZvjgpPjgILjg5Xjg6zjg7zjg6DjgYzokL3jgaHjgb7jgZnjgILjgZPjga7orablkYrjgYzpoLvnmbrjgZnjgovloLTlkIjjgIHlk4Hos6rjgpLokL3jgajjgZnjgojjgYbjgavlj7jkvJrogIXjgavkvp3poLzjgZfjgabjgY/jgaDjgZXjgYTjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQxIiBuYW1lPSJzY3JlZW5fdXNlcmxhYmVsIj4KKyAgICA8dmFsdWU+55S76Z2iOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDIiIG5hbWU9IndoaXRlYm9hcmRfdGFiX3BhaW50Ij4KKyAgICA8dmFsdWU+44Oa44Kk44Oz44OIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0MyIgbmFtZT0id2hpdGVib2FyZF90YWJfZG9jdW1lbnQiPgorICAgIDx2YWx1ZT7jg4njgq3jg6Xjg6Hjg7Pjg4g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ0IiBuYW1lPSJ0YWJiYXJfY2hhdGljb24iPgorICAgIDx2YWx1ZT7jg4Hjg6Pjg4Pjg4g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ1IiBuYW1lPSJ0YWJiYXJfZmlsZXNpY29uIj4KKyAgICA8dmFsdWU+44OV44Kh44Kk44OrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0NiIgbmFtZT0idGFiYmFyX3BhcnRpY2lwYW50c2ljb24iPgorICAgIDx2YWx1ZT7jg6Hjg7Pjg5Djg7w8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ3IiBuYW1lPSJzd2ZwcmVzZW50YXRpb25fbGlzdHNhdmVvcmlnIj4KKyAgICA8dmFsdWU+44Kq44Oq44K444OK44Or44OJ44Kt44Ol44Oh44Oz44OI44Gu44OA44Km44Oz44Ot44O844OJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0OCIgbmFtZT0ic3dmcHJlc2VudGF0aW9uX2xpc3RzYXZlcGRmIj4KKyAgICA8dmFsdWU+UERG44OJ44Kt44Ol44Oh44Oz44OI44Gu44OA44Km44Oz44Ot44O844OJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0OSIgbmFtZT0ic3dmcHJlc2VudGF0aW9uX2xpc3Rsb2Fkc3dmIj4KKyAgICA8dmFsdWU+44OX44Os44K844Oz44OG44O844K344On44Oz44KS44Ob44Ov44Kk44OI44Oc44O844OJ44Gr44Ot44O844OJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MCIgbmFtZT0ibmF2aW1haW5fY29uZmlnIj4KKyAgICA8dmFsdWU+44Kw44Ot44O844OQ44Or6Kit5a6aPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MSIgbmFtZT0id2hpdGVib2FyZF9ib3VuZGluZ2JveF9kcmFnIj4KKyAgICA8dmFsdWU+44OJ44Op44OD44KwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MiIgbmFtZT0id2hpdGVib2FyZF9ib3VuZGluZ2JveF9yZXNpemUiPgorICAgIDx2YWx1ZT7jgrXjgqTjgrrlpInmm7Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUzIiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl96b29tIj4KKyAgICA8dmFsdWU+JTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTQiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3NsaWRlIj4KKyAgICA8dmFsdWU+LzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTUiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX2ZpcnN0c2xpZGUiPgorICAgIDx2YWx1ZT7mnIDliJ3jgbg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU2IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9wcmVzbGlkZSI+CisgICAgPHZhbHVlPuWJjeOBuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTciIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX25leHRzbGlkZSI+CisgICAgPHZhbHVlPuasoeOBuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTgiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX2xhc3RzbGlkZSI+CisgICAgPHZhbHVlPuacgOW+jOOBuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTkiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3pvb21taW51cyI+CisgICAgPHZhbHVlPue4ruWwjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjAiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3pvb21wbHVzIj4KKyAgICA8dmFsdWU+5ouh5aSnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MSIgbmFtZT0ic2FsdXRhdGlvbl9tciI+CisgICAgPHZhbHVlPk1yLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjIiIG5hbWU9InNhbHV0YXRpb25fbWlzcyI+CisgICAgPHZhbHVlPk1zLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjMiIG5hbWU9Im5hdmltYWluX2NvbmZhZG1pbiI+CisgICAgPHZhbHVlPuOCsOODreODvOODkOODq+ioreWumjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjQiIG5hbWU9ImNvbmZ0YWJsZV9oZWFkZXJJZCI+CisgICAgPHZhbHVlPklEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2NSIgbmFtZT0iY29uZnRhYmxlX2hlYWRlcmtleSI+CisgICAgPHZhbHVlPuOCreODvDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjYiIG5hbWU9ImNvbmZhZG1pbmZvcm1faGVhZGVyIj4KKyAgICA8dmFsdWU+6Kit5a6aPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2NyIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbGtleSI+CisgICAgPHZhbHVlPuOCreODvDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjgiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWx1cGRhdGVkIj4KKyAgICA8dmFsdWU+5pyA57WC5pu05paw5pelPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2OSIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbHVwZGF0ZWRieSI+CisgICAgPHZhbHVlPuabtOaWsOiAhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzAiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWxjb21tZW50Ij4KKyAgICA8dmFsdWU+44Kz44Oh44Oz44OIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MSIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbGtleSI+CisgICAgPHZhbHVlPuOCreODvOWApDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzIiIG5hbWU9InR1cm5vdmVybGlzdF9tYXhyZXN1bHRzIj4KKyAgICA8dmFsdWU+LzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzMiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2hlYWRlciI+CisgICAgPHZhbHVlPuODpuODvOOCtjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzQiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2ljb25kZWxldGUiPgorICAgIDx2YWx1ZT7ntYTnuZTjgYvjgonjg6bjg7zjgrbjgpLliYrpmaQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc1IiBuYW1lPSJvcmdhbmlzYXRpb25fdXNlcnNkZWxldGVkaGVhZCI+CisgICAgPHZhbHVlPuWJiumZpDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzYiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2FscmVhZGFkZGVkIj4KKyAgICA8dmFsdWU+44GT44Gu44Om44O844K244Gv5pei44Gr44GT44Gu57WE57mU44Gu44Oh44Oz44OQ44O844Gn44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NyIgbmFtZT0iZGFzaGJvYXJkX25ld3NoZWFkZXIiPgorICAgIDx2YWx1ZT7jg4vjg6Xjg7zjgrk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc4IiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rc2hlYWRlciI+CisgICAgPHZhbHVlPuODquODs+OCrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzkiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtDb25mIj4KKyAgICA8dmFsdWU+5Lya6K2w5a6k44Oq44K544OIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MCIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua0F1ZGl0Ij4KKyAgICA8dmFsdWU+6Kyb5ryU5a6k44Oq44K544OIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MSIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua3N1cHBvcnQiPgorICAgIDx2YWx1ZT7jg5jjg6vjg5fjg7vjgrXjg53jg7zjg4g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgyIiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tob21lcGFnZXVybCI+CisgICAgPHZhbHVlPmh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgzIiBuYW1lPSJkYXNoYm9hcmRfcXVpY2ttYWlsaW5nbGlzdHVybCI+CisgICAgPHZhbHVlPmh0dHA6Ly9tYWlsLWFyY2hpdmVzLmFwYWNoZS5vcmcvbW9kX21ib3gvb3Blbm1lZXRpbmdzLXVzZXIvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4NCIgbmFtZT0iZGFzaGJvYXJkX3JlcG9ydGJ1Z3MiPgorICAgIDx2YWx1ZT7jg5DjgrDloLHlkYo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg1IiBuYW1lPSJkYXNoYm9hcmRfcnNzbGlzdGl0ZW1saW5rdGV4dCI+CisgICAgPHZhbHVlPue2muOBjeODu+ODu+ODuzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODYiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtob21lcGFnZWxhYmVsIj4KKyAgICA8dmFsdWU+44OX44Ot44K444Kn44Kv44OIV2Vi44K144Kk44OIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4NyIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua21haWxpbmdsaXN0bGFiZWwiPgorICAgIDx2YWx1ZT7jg6bjg7zjgrbjg6Hjg7zjg6rjg7PjgrDjg6rjgrnjg4g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg4IiBuYW1lPSJsb2dpbl9yZW1lbWJlcnVzZXIiPgorICAgIDx2YWx1ZT7mrKHlm57jgYvjgonlhaXlipvjgpLnnIHnlaU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg5IiBuYW1lPSJtYWluX25hdmkiPgorICAgIDx2YWx1ZT7jgrPjg7Pjg4bjg7Pjg4Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkwIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+44Oe44Kk44Oa44O844K4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MSIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPuOCueOCseOCuOODpeODvOODq+a4iOOBv+S8muitsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTIiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT7jgrnjgrHjgrjjg6Xjg7zjg6vmuIjjgb/jgqTjg5njg7Pjg4g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkzIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+44OR44OW44Oq44OD44Kv5Lya6K2wPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPuODl+ODqeOCpOODmeODvOODiOS8muitsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTUiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT7jg5Hjg5bjg6rjg4Pjgq/jgqTjg5njg7Pjg4g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk2IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+44OX44Op44Kk44OZ44O844OI44Kk44OZ44Oz44OIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NyIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPuODkeODluODquODg+OCr+OCs+ODs+ODhuODs+ODhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTgiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT7jg5fjg6njgqTjg5njg7zjg4jjgrPjg7Pjg4bjg7Pjg4Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk5IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+44OR44O844K944OK44Or44Kz44Oz44OG44Oz44OEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDEiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT7lj7jkvJrogIU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAyIiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+6LOq5ZWP44GM44GC44KK44G+44GZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMyIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPuaKleelqDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDQiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT7jg5XjgqPjg6vpgbjmip48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA1IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+6Kit5a6aPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNiIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPuOCq+ODoeODqeOBqOODnuOCpOOCr+OBruioreWumjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDciIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT7jg5vjg6/jgqTjg4jjg5zjg7zjg4noqK3lrpo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA4IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+6YCA5a6k44GZ44KLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwOSIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPuS8muitsOWupOS4gOimp+OBq+aIu+OCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTAiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT7jg63jgrDjgqLjgqbjg4g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzExIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPuODkeOCueODr+ODvOODieOCkuW/mOOCjOOBnzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTIiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+44OR44K544Ov44O844OJ44Gu44Oq44K744OD44OIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMyIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7jg6Hjg7zjg6vjgafjg6rjgrvjg4Pjg4g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE0IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPuODreOCsOOCpOODs+OBp+ODquOCu+ODg+ODiDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTUiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+44Oh44O844Or44Ki44OJ44Os44K5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxNiIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7jg63jgrDjgqTjg7PlkI08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE3IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPuODkeOCueODr+ODvOODieODu+ODquOCu+ODg+ODiOeUqOODquODs+OCr+OCkuWQq+OCgOODoeODvOODq+OCkumAgeS/oeOBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTgiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+5oyH5a6a44GV44KM44Gf44Oh44O844Or44O744Ki44OJ44Os44K544GM6KaL44Gk44GL44KK44G+44Gb44KT44CC44Ki44Kr44Km44Oz44OI5L2c5oiQ5pmC44Gr5oyH5a6a44GX44Gf44Oh44O844Or44O744Ki44OJ44Os44K544KS5oyH5a6a44GX44Gm44GP44Gg44GV44GE44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxOSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7jg6Hjg7zjg6vjg7vjgqLjg4njg6zjgrnjgb7jgZ/jga/jg6bjg7zjgrblkI3jgpLlhaXlipvjgZfjgabjgY/jgaDjgZXjgYTjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIwIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPuOBk+OBruODpuODvOOCtuWQjeOBp+aOpee2muOBmeOCi+ODpuODvOOCtuOBr+OBguOCiuOBvuOBm+OCk+OAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjEiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+5bCC55So44Oq44Oz44Kv44KS5ZCr44KA44Oh44O844Or44KS44GC44Gq44Gf44Gu44Oh44O844Or44O744Ki44OJ44Os44K544Gr5a++44GX44Gm6YCB5L+h44GX44G+44GX44Gf44CC44Oh44O844Or5Y+X5L+h566x44KS44GU56K66KqN44GP44Gg44GV44GE44CC44KC44GX5Y+X5L+h44Gn44GN44Gq44GE5aC05ZCI44Gv44CB44K544OR44Og44Go44GX44Gm6Zmk5aSW44GV44KM44Gm44GE44KL5Y+v6IO95oCn44GM44GC44KK44G+44GZ44CC44Gd44Gu5aC05ZCI44Gv44K544OR44Og6Kit5a6a44KS6KaL55u044GX44CB5YaN5bqm44CB56K66KqN44Oh44O844Or44KS6YCB5L+h44GX44Gm44GP44Gg44GV44GE44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyMiIgbmFtZT0iZXJyb3J0eXBlIj4KKyAgICA8dmFsdWU+44Ko44Op44O8PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyMyIgbmFtZT0iZXJyb3J0eXBlIj4KKyAgICA8dmFsdWU+44Oh44OD44K744O844K4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNCIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+44OP44OD44K344Ol5YCk44GM5LiN5q2j44Gn44GZ44CC44Om44O844K244GM6KaL44Gk44GL44KK44G+44Gb44KT44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNSIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+44OR44K544Ov44O844OJ44Gu44Oq44K744OD44OIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNiIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+44Ot44Kw44Kk44OzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNyIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+44OR44K544Ov44O844OJ5aSJ5pu0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyOCIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+5paw44GX44GE44OR44K544Ov44O844OJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyOSIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+44OR44K544Ov44O844OJ5YaN5YWl5YqbPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzMCIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+44OR44K544Ov44O844OJ44GM5ZCI44Gj44Gm44GE44G+44Gb44KT44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzMSIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+NOaWh+Wtl+S7peS4iuW/heimgeOBp+OBmeOAguWkp+aWh+Wtl+Wwj+aWh+Wtl+OBruWMuuWIpeOBjOOBguOCiuOBvuOBmeOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzIiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPuODkeOCueODr+ODvOODieOBjOioreWumuOBleOCjOOBvuOBl+OBn+OAguODreOCsOOCpOODs+WPr+iDveOBp+OBmeOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzMiIG5hbWU9InJwY2NhbGxiYWNrIj4KKyAgICA8dmFsdWU+T0s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM0IiBuYW1lPSJycGNnZW5lcmFsZXJyb3IiPgorICAgIDx2YWx1ZT7mnKrnn6Xjga7jgqjjg6njg7zjgafjgZnjgILnrqHnkIbogIXjgavloLHlkYrjgZfjgabjgY/jgaDjgZXjgYTjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM1IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPuODpuODvOOCtuWQjeOBjOimi+OBpOOBi+OCiuOBvuOBm+OCk+OAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzYiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+44OR44K544Ov44O844OJ44GM54Sh5Yq544Gn44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNyIgbmFtZT0ibG9nb3V0Ij4KKyAgICA8dmFsdWU+44Ot44Kw44Ki44Km44OI5a6M5LqGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzOCIgbmFtZT0icmVnaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+44OV44Ot44Oz44OI44Ko44Oz44OJ55m76Yyy44Gv54Sh5Yq544Gn44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzOSIgbmFtZT0icmVnaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+54Sh5Yq544Gq44Oh44O844Or44Ki44OJ44Os44K544Gn44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MCIgbmFtZT0icmVnaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+44OV44Kh44Kk44Or5ZCN44GM6YeN6KSH44GX44Gm44GE44G+44GZ44CC5Yil44Gu5ZCN5YmN44Gr44GX44Gm44GP44Gg44GV44GE44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MSIgbmFtZT0iZmlsZWJyb3dzZXIiPgorICAgIDx2YWx1ZT7jg5XjgqHjgqTjg6vlkI3jgYznn63jgZnjgY7jgb7jgZnjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQyIiBuYW1lPSJmaWxlYnJvd3NlciI+CisgICAgPHZhbHVlPuOCouODieODrOOCueOBjOS/neWtmOOBp+OBjeOBvuOBm+OCk+OBp+OBl+OBn+OAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDMiIG5hbWU9InVzZXJhZG1pbiI+CisgICAgPHZhbHVlPuODpuODvOOCtuOBr+i/veWKoOOBleOCjOOBvuOBl+OBn+OAguOBk+OBruODpuODvOOCtuOBr+WwkeOBquOBj+OBqOOCguS4gOOBpOOBrue1hOe5lOOBq+aJgOWxnuOBleOBm+OCi+W/heimgeOBjOOBguOCiuOBvuOBmeOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDQiIG5hbWU9ImFkbWluZm9ybXMiPgorICAgIDx2YWx1ZT7mlrDopo/kvZzmiJA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ1IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7jgZPjga7jg5XjgqPjg7zjg6vjg4lJROOBruODleOCo+ODvOODq+ODieOBjOimi+OBpOOBi+OCiuOBvuOBm+OCk+OAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDYiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPuOBk+OBruODleOCo+ODvOODq+ODieOBruODqeODmeODq+OBjOimi+OBpOOBi+OCiuOBvuOBm+OCk+OAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDciIG5hbWU9ImVycm9ybWVzc2FnZSI+CisgICAgPHZhbHVlPueuoeeQhuiAheaoqemZkOOBjOW/heimgeOBp+OBmeOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDgiIG5hbWU9Im1haW5uYXZpIj4KKyAgICA8dmFsdWU+6KiA6Kqe44Ko44OH44Kj44K/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0OSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+6KiA6KqePC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1MCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+44Op44OZ44OrSUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUxIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7jg6njg5njg6vlkI08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUyIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7lgKQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUzIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7jg5XjgqPjg7zjg6vjg4nlgKQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU0IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7jg6njg5njg6vlkI08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU1IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7lgKQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU2IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7jg6njg5njg6tJRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTciIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPuODqeODmeODq+OCkuWJiumZpOOBl+OBvuOBl+OBn+OAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTgiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPuODqeODmeODq0lE44GM54Sh5Yq544Gn44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1OSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+44GT44Gu44OV44Kj44O844Or44OJ44Gv5YmK6Zmk5LiN5Y+v44Gn44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+44Ko44Kv44K544Od44O844OIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+5aSJ5pu057WQ5p6c44KS5Y+N5pig44GZ44KL44Gr44Gv5YaN44Ot44Kw44Kk44Oz44GM5b+F6KaB44Gn44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+5paw44GX44GE6KiA6Kqe44Gu6L+95YqgPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+6KiA6Kqe44Gu5YmK6ZmkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+5paw44GX44GE6KiA6Kqe44Gu6L+95YqgPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+5ZCN5YmNPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+6KiA6Kqe44Gu6L+95YqgPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+44OQ44OD44Kv44Ki44OD44OXPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2OCIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+5pyA5Yid44G4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2OSIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+5YmN44G4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MCIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+5qyh44G4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MSIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+5pyA5b6M44G4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MiIgbmFtZT0idmlkZW9ib3giPgorICAgIDx2YWx1ZT7jg6bjg7zjgrbjgYzoqbHjgZfkuK0gKEJ5IGNsaWNraW5nIGhlcmUgeW91IGNhbiBnaXZlIGV4Y2x1c2l2ZSBhdWRpbyAvIG11dGUgdGhlIG1pY3JvcGhvbmUgb2Ygb3RoZXJzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzMiIG5hbWU9InZpZGVvYm94Ij4KKyAgICA8dmFsdWU+6Z+z5aOw44Kq44OzL+OCquODlTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPuOCt+OCueODhuODoDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzUiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPuioreWumjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzYiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPuODpuODvOOCtjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc3IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT7jg5fjg63jg5XjgqPjg7zjg6vnt6jpm4Y8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc4IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT7mlrDjgZfjgYTjg6Hjg4Pjgrvjg7zjgrg6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3OSIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+55S75YOP44Ki44OD44OX44Ot44O844OJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4MCIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT7jg6bjg7zjgrbjga7jgqjjgq/jgrnjg53jg7zjg4g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgxIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPuOBmeOBueOBpuOBruODpuODvOOCtuOCkuOCqOOCr+OCueODneODvOODiOOBl+OBvuOBmeOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODIiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+5YWo44Om44O844K244Ko44Kv44K544Od44O844OIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4MyIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT7jg6bjg7zjgrbjgpLntYTnuZTjgZTjgajjgavjgqjjgq/jgrnjg53jg7zjg4jjgZfjgb7jgZk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NCIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT7ntYTnuZTliKXjg6bjg7zjgrbjga7jgqjjgq/jgrnjg53jg7zjg4g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg1IiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPuODpuODvOOCtuOBruOCpOODs+ODneODvOODiDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODYiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+44Kk44Oz44Od44O844OI44OV44Kh44Kk44OrKHVzZXJzLnhtbCnjga7pgbjmip48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg3IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7jgqTjg7Pjg53jg7zjg4g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg4IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5YTUzjg5XjgqHjgqTjg6vjgavjgqjjgq/jgrnjg53jg7zjg4gg5Li744Gq55So6YCUOiAtIOODl+ODreOCuOOCp+OCr+ODiOOBuOOBruOCs+ODs+ODiOODquODk+ODpeODvOODiCAtIOS7luOBruOCt+OCueODhuODoOOBuOOBruOCpOODs+ODneODvOODiCAtIOODkOODg+OCr+OCouODg+ODlyAtIOOCq+OCueOCv+ODnuOCpOOCuiBsYW5ndWFnZXPjg4fjgqPjg6zjgq/jg4jjg6rjgavjgrPjg5Tjg7zjgZfjgabjgIEg5YaN44Kk44Oz44K544OI44O844Or44GX44Gf5b6M44Gr5Y+N5pig44GV44KM44G+44GZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4OSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+44Kk44Oz44Od44O844OI44GZ44KL6KiA6Kqe44OV44Kh44Kk44Or44KS6YG45oqe44GX44Gm44GP44Gg44GV44GE44CCIOODleOCoeOCpOODq+WQjeOBq+mWouOCj+OCieOBmumBuOaKnuOBl+OBn+OCguOBruOBjOOCpOODs+ODneODvOODiOOBleOCjOOBvuOBmeOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTAiIG5hbWU9ImltcG9ydHdpbmRvdyI+CisgICAgPHZhbHVlPuOCpOODs+ODneODvOODiCAtIOODleOCoeOCpOODq+mBuOaKnjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTEiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT7lkI3liY3jgpLku5jjgZHjgabkv53lrZg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkyIiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+5ZCN5YmNOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTMiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT7jgrPjg6Hjg7Pjg4g6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NCIgbmFtZT0icmVjb3JkaW5nc2F2ZXdpbiI+CisgICAgPHZhbHVlPuS/neWtmDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTUiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPumMsueUuzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTYiIG5hbWU9InJlY29yZGVyIj4KKyAgICA8dmFsdWU+6Yyy55S744OV44Kh44Kk44OrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NyIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+44OR44OW44Oq44OD44KvL+ODl+ODqeOCpOODmeODvOODiOS8muitsOWupOOBrumMsueUu+ODleOCoeOCpOODqzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTgiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPuWFpeWupOiAheaVsDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk5IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT7lj4LliqDogIXmlbA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMCIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+5Lya6K2w5a6k44Oq44K544OIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMSIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+5Lya6K2w5a6k5YaF44Gu44Om44O844K2OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDIiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPuabtOaWsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDMiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPuOBk+OBruS8muitsOWupOOBr+a6gOWToeOBp+OBmeOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDQiIG5hbWU9InJvb21zTGlzdCI+CisgICAgPHZhbHVlPuips+e0sOihqOekujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDUiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPuS8muitsOWupOWGheOBruODpuODvOOCtuOBqOODgeODo+ODg+ODiDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA2IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT7kvJrorbDlrqQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNyIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+5Lya6K2w5a6k44Gr44GE44KL44Om44O844K2OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDgiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPuWFpeWupOaZguWIuzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA5IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT7pjLLnlLvjg5XjgqHjgqTjg6vjga7lho3nlJ88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDEwIiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT7plbfjgZU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+5pel5LuYOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTIiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPuWGjeeUn+S4reOBp+OBmeOAgueUu+mdouS4iuOBp+OBr+S9leOCguWkieabtOOBp+OBjeOBvuOBm+OCk+OAguOBk+OCjOOBr+mMsueUu+ODleOCoeOCpOODq+OBp+OBmeOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTMiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPumMsueUu+ODleOCoeOCpOODq+OBruWGjeeUnzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTQiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPuWGjeeUnyAvIOS4gOaZguWBnOatojwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTUiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPumMsueUu+mWi+WnizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTYiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPumMsueUu+WBnOatojwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTciIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPumMsueUuzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE4IiBuYW1lPSJyZWNvcmRfZXJyb3JfbXNnIj4KKyAgICA8dmFsdWU+54++5Zyo44CB5LuW44Gu5Lq644GM6Yyy55S75Lit44Gn44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxOSIgbmFtZT0icmVjb3JkX21lc3NhZ2UiPgorICAgIDx2YWx1ZT7pjLLnlLvkuK3jgafjgZnjgILlrp/ooYzjg6bjg7zjgrbjga86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyMCIgbmFtZT0icmVjb3JkX2NhbmNlbCI+CisgICAgPHZhbHVlPuOCreODo+ODs+OCu+ODqzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjEiIG5hbWU9InJlY29yZF9jYW5jYWxfdG9vbHRpcCI+CisgICAgPHZhbHVlPumMsueUu+OBr+OCreODo+ODs+OCu+ODq+OBleOCjOOAgeS/neWtmOOBleOCjOOBvuOBm+OCk+OAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjIiIG5hbWU9ImNhbmNlbF9kaWFsb2dfcmVzdW1lIj4KKyAgICA8dmFsdWU+5YaN6ZaLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyMyIgbmFtZT0iY2FuY2VsX2RpYWxvZ19yZXN1bWVfdG9vbHRpcCI+CisgICAgPHZhbHVlPuOBk+OBruOCpuOCo+ODs+ODieOCpuOCkumWieOBmOOAgemMsueUu+OCkuWGjemWi+OBl+OBvuOBmTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjQiIG5hbWU9InBhaW50dG9vbHNfZWxsaXBzZV9jb2xvciI+CisgICAgPHZhbHVlPue3muOBruiJsjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjUiIG5hbWU9ImNvbG9ycGlja2VyX2hlYWQiPgorICAgIDx2YWx1ZT7oibLpgbjmip48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI2IiBuYW1lPSJwYWludHRvb2xzX2xpbmVfZGlzYWJsZSI+CisgICAgPHZhbHVlPue3muOBruiJsuWkieabtOOBruacieWKuS/nhKHlirk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI3IiBuYW1lPSJwYWludHRvb2xzX2ZpbGxfZGlzYWJsZSI+CisgICAgPHZhbHVlPuWhl+OCiuOBpOOBtuOBlzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjgiIG5hbWU9InBhaW50dG9vbHNfbGluZV9kaXNhYmxlIj4KKyAgICA8dmFsdWU+5aGX44KK44Gk44G244GX6Imy5aSJ5pu044Gu5pyJ5Yq5L+eEoeWKuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjkiIG5hbWU9ImNoYW5nZV93aWR0aF9hcnJvd19kb3duX3NsaWRlciI+CisgICAgPHZhbHVlPue3muOBruWkquOBlTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzAiIG5hbWU9ImNsb3NlX3NtYWxsX3BvcHVwcyI+CisgICAgPHZhbHVlPumWieOBmOOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzEiIG5hbWU9InBhaW50X3Rvb2xfbGV0dGVyIj4KKyAgICA8dmFsdWU+44OV44Kp44Oz44OI44K144Kk44K65aSJ5pu0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzMiIgbmFtZT0icmVjb3JkaW5nc2xpc3RfZGVsZXRlIj4KKyAgICA8dmFsdWU+6Yyy55S744OV44Kh44Kk44Or44Gu5YmK6ZmkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzMyIgbmFtZT0icmVjb3JkaW5nc2xpc3RfcmVjb3JkZWRCeUd1ZXN0Ij4KKyAgICA8dmFsdWU+44Ky44K544OIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNCIgbmFtZT0icmVjb3JkaW5nc2xpc3RfcmVjb3JkZWRieSI+CisgICAgPHZhbHVlPuS9nOaIkOiAhTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM1IiBuYW1lPSJyZWNvcmRpbmdzX3RhYmxlX2hlYWRfbmFtZSI+CisgICAgPHZhbHVlPuWQjeWJjTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzYiIG5hbWU9InJlY29yZGluZ3NfdGFibGVfaGVhZF9yb29tIj4KKyAgICA8dmFsdWU+5Lya6K2w5a6kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNyIgbmFtZT0icmVjb3JkaW5nc190YWJsZV9oZWFkX2RhdGUiPgorICAgIDx2YWx1ZT7ml6Xku5g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM4IiBuYW1lPSJyZWNvcmRfc3RhcnRfY2FuY2VsIj4KKyAgICA8dmFsdWU+44Kt44Oj44Oz44K744OrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzOSIgbmFtZT0icmVjb3JkX3N0YXJ0X3N0YXJ0Ij4KKyAgICA8dmFsdWU+6ZaL5aeLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MCIgbmFtZT0iZmlsZXNicm93c2VyX3RhYmxlX2hlYWRfbmFtZSI+CisgICAgPHZhbHVlPuWQjeWJjTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDEiIG5hbWU9ImZpbGVzYnJvd3Nlcl90YWJsZV9oZWFkX2RhdGUiPgorICAgIDx2YWx1ZT7ml6Xku5g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQyIiBuYW1lPSJjaGF0X2NsZWFyX2hpc3RvcnkiPgorICAgIDx2YWx1ZT7jg4Hjg6Pjg4Pjg4joqJjpjLLjga7liYrpmaQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQzIiBuYW1lPSJjaGF0X292ZXJhbGxfaGVhZGVyIj4KKyAgICA8dmFsdWU+44OB44Oj44OD44OIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NCIgbmFtZT0iY2hhdF9zZW5kX2J0biI+CisgICAgPHZhbHVlPuODoeODg+OCu+ODvOOCuOmAgeS/oTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDUiIG5hbWU9ImNoYXRfZW1vdF9idG4iPgorICAgIDx2YWx1ZT7poZTmloflrZc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ2IiBuYW1lPSJjaGF0X2Vtb3Rfd2luIj4KKyAgICA8dmFsdWU+6aGU5paH5a2XPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NyIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzIj4KKyAgICA8dmFsdWU+44OH44OQ44Kk44K544Gu6YG45oqePC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0OCIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2NvbWJvIj4KKyAgICA8dmFsdWU+6Z+z5aOwL+aYoOWDjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDkiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPumfs+WjsOOBruOBvzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTAiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPuaYoOWDj+OBruOBvzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTEiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPumfs+WjsC/mmKDlg4/jgarjgZco6Z2Z5q2i55S75YOPKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTIiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19pbmZvX3RleHQiPgorICAgIDx2YWx1ZT7jgZPjga5QQ+OBi+OCiemfs+WjsOOCguaYoOWDj+OCgumAgeS/oeOBleOCjOOBvuOBm+OCk+OAguS7o+OCj+OCiuOBq+ODpuODvOOCtuODl+ODreODleOCo+ODvOODq+OBrueUu+WDj+OBjOihqOekuuOBleOCjOOBvuOBmeOAgiDjgZPjga7jgqrjg5fjgrfjg6fjg7Pjga/jgIHjg43jg4Pjg4jjg6/jg7zjgq/luK/ln5/jgavllY/poYzjgYzjgYLjgovloLTlkIjjgoTjgIHjgqTjg7Pjgr/jg7zjg43jg4Pjg4jmjqXntprjgYzokZfjgZfjgY/pgYXjgYTloLTlkIjjgavpgbjmip7jgZfjgabjgY/jgaDjgZXjgYTjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUzIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX21vbmRheSI+CisgICAgPHZhbHVlPuaciDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTQiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfdHVlc2RheSI+CisgICAgPHZhbHVlPueBqzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTUiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfd2VkbmVzZGF5Ij4KKyAgICA8dmFsdWU+5rC0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NiIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV90aHVyc2RheSI+CisgICAgPHZhbHVlPuacqDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTciIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfZnJpZGF5Ij4KKyAgICA8dmFsdWU+6YeRPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1OCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9zYXR1cmRheSI+CisgICAgPHZhbHVlPuWcnzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTkiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfc3VuZGF5Ij4KKyAgICA8dmFsdWU+5pelPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9tb25kYXkiPgorICAgIDx2YWx1ZT7mnIjmm5w8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYxIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1R1ZXNkYXlMYWJlbCI+CisgICAgPHZhbHVlPueBq+abnDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjIiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfV2VkbmVzZGF5TGFiZWwiPgorICAgIDx2YWx1ZT7msLTmm5w8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYzIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1RodXJzZGF5TGFiZWwiPgorICAgIDx2YWx1ZT7mnKjmm5w8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY0IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX0ZyaWRheUxhYmVsIj4KKyAgICA8dmFsdWU+6YeR5pucPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9TYXR1cmRheUxhYmVsIj4KKyAgICA8dmFsdWU+5Zyf5pucPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NiIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9TdW5kYXlMYWJlbCI+CisgICAgPHZhbHVlPuaXpeabnDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjciIG5hbWU9ImNhbGVuZGFyX3dlZWtudW1iZXJfaGVhZGVyIj4KKyAgICA8dmFsdWU+6YCx55WqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2OCIgbmFtZT0iY2FsZW5kYXJfd2Vla251bWJlcl9oZWFkZXJUb29sdGlwIj4KKyAgICA8dmFsdWU+6YCx55Wq5Y+3PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2OSIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPjHmnIg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDcwIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+MuaciDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzEiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT4z5pyIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3MiIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPjTmnIg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDczIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+NeaciDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzQiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT425pyIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3NSIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPjfmnIg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc2IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+OOaciDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzciIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT455pyIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3OCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPjEw5pyIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3OSIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPjEx5pyIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4MCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPjEy5pyIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4MSIgbmFtZT0iY2FsZW5kYXJ3aW5faGVhZGVyIj4KKyAgICA8dmFsdWU+44Kr44Os44Oz44OA44O8PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4MiIgbmFtZT0icm9vbWFkbWluX2xhYmVsTnVtYmVyT2ZQYXJ0aWNpcGFudHMiPgorICAgIDx2YWx1ZT7lrprlk6E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgzIiBuYW1lPSJyb29tVmFsdWVfYWR2YW5jZWRTZXR0aW5ncyI+CisgICAgPHZhbHVlPuODrOOCpOOCouOCpuODiOioreWumuOBruihqOekujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODQiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfdmlkZW9YIj4KKyAgICA8dmFsdWU+5qiqKHgpIHwg57imKHkpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NSIgbmFtZT0icm9vbUFkbWluX2xheW91dF92aWRlb1kiPgorICAgIDx2YWx1ZT7luYUgfCDpq5jjgZU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg2IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0Ij4KKyAgICA8dmFsdWU+5YuV55S755S76Z2i44OW44Ot44OD44KvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NyIgbmFtZT0icm9vbUFkbWluX2xheW91dF9tb2QiPgorICAgIDx2YWx1ZT7lj7jkvJrogIXjg5bjg63jg4Pjgq88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg4IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X21vZF9wb3MiPgorICAgIDx2YWx1ZT5YPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4OSIgbmFtZT0icm9vbUFkbWluX2xheW91dF93aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+44Ob44Ov44Kk44OI44Oc44O844OJ44OW44Ot44OD44KvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5MCIgbmFtZT0icm9vbUFkbWluX2xheW91dF93aGl0ZWJvYXJkX3Nob3ciPgorICAgIDx2YWx1ZT7mnInlirk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkxIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmRfcG9zIj4KKyAgICA8dmFsdWU+5qiqKHgpIHwg57imKHkpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5MiIgbmFtZT0icm9vbUFkbWluX2xheW91dF93aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+5bmFIHwg6auY44GVPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5MyIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlcyI+CisgICAgPHZhbHVlPuODgeODo+ODg+ODiOOAgeODleOCoeOCpOODq+OAgeODoeODs+ODkOODvOODluODreODg+OCrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTQiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXNfc2hvdyI+CisgICAgPHZhbHVlPuacieWKuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTUiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXNfcG9zIj4KKyAgICA8dmFsdWU+5qiqKHgpIHwg57imKHkpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NiIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlcyI+CisgICAgPHZhbHVlPuW5hSB8IOmrmOOBlTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTciIG5hbWU9Im1vZGVyYXRvcl9nb25lX21lc3NhZ2UiPgorICAgIDx2YWx1ZT7lj7jkvJrogIXjga/pgIDlrqTjgZfjgb7jgZfjgZ/jga7jgafkuLvlgqzogIXjgYzkuI3lnKjjgafjgZnjgILlj7jkvJrogIXjgavjgarjgovjgYvku5bjga7kurrjgYzlj7jkvJrogIXjgavjgarjgovjga7jgpLjgYrlvoXjgaHjgY/jgaDjgZXjgYTjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk4IiBuYW1lPSJtb2RlcmF0b3JfbWVzc2FnZV9ldmVudF9ub19tb2QiPgorICAgIDx2YWx1ZT7jgZPjga7kvJrorbDlrqTjgavjga/jgIHlj4LliqDogIXjga/jgYTjgb7jgZnjgYzlj7jkvJrogIXjgYzjgYTjgb7jgZvjgpPjgILlj7jkvJrogIXjgavjgarjgovjgYvku5bjga7kurrjgYzlj7jkvJrogIXjgavjgarjgovjga7jgpLjgYrlvoXjgaHjgY/jgaDjgZXjgYTjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk5IiBuYW1lPSJmZWVkYmFja190ZW1wbGF0ZV9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIOODleOCo+ODvOODieODkOODg+OCrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDAiIG5hbWU9Imludml0YXRpb25fdGVtcGxhdGVfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSAtIOS8muitsOWPguWKoOS+nemgvDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDEiIG5hbWU9Imludml0YXRpb25fdGV4dF9mcm9tIj4KKyAgICA8dmFsdWU+5a6b5YWI44Om44O844K2OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDIiIG5hbWU9Imludml0YXRpb25fdGV4dF9tZXNzYWdlIj4KKyAgICA8dmFsdWU+44Oh44OD44K744O844K4OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDMiIG5hbWU9Imludml0YXRpb25fdGV4dF9jbGlja190ZXh0Ij4KKyAgICA8dmFsdWU+5Lya6K2w44Gr5Y+C5Yqg44GZ44KL44Gr44GvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDQiIG5hbWU9Imludml0YXRpb25fdGV4dF9jbGlja190ZXh0X2xpbmsiPgorICAgIDx2YWx1ZT7kvJrorbDlrqTjgavlhaXlrqTjgZnjgovjgavjga/jgZPjgZPjgpLjgq/jg6rjg4Pjgq/jgZfjgabjgY/jgaDjgZXjgYTjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA1IiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfY2xpY2tfdGV4dF9oZWxwIj4KKyAgICA8dmFsdWU+44Oq44Oz44Kv44GM5YuV5L2c44GX44Gq44GE5aC05ZCI44CB44OW44Op44Km44K244Gr5LiL6KiYVVJM44KS44Kz44OU44O8JmFtcDvjg5rjg7zjgrnjg4jjgZfjgabjgY/jgaDjgZXjgYTjgII6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwNiIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X2hlYWQiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUg44K144Kk44Oz44Ki44OD44OXPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwNyIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X2hlYWQyIj4KKyAgICA8dmFsdWU+44GC44Gq44Gf44Gu5oOF5aCxOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDgiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF91c2VybmFtZSI+CisgICAgPHZhbHVlPuODreOCsOOCpOODs+WQjTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA5IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfcGFzcyI+CisgICAgPHZhbHVlPuODkeOCueODr+ODvOODiTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTEwIiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfbWFpbCI+CisgICAgPHZhbHVlPuODoeODvOODq+OCouODieODrOOCuTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTExIiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfYnllIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FLeODgeODvOODoDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTIiIG5hbWU9InJlZ2lzdGVyX21haWxfc3ViamVjdCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSDjgrXjgqTjg7PjgqLjg4Pjg5c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTEzIiBuYW1lPSJyZXNldF9wYXNzd29yZF90ZW1wbGF0ZV9oZWFkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIC0g44OR44K544Ov44O844OJ44Oq44K744OD44OIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNCIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfdGVzdF9saW5rIj4KKyAgICA8dmFsdWU+5paw44GX44GE44OR44K544Ov44O844OJ44KS5YWl5Yqb44GZ44KL44Gr44Gv44GT44Gu44Oq44Oz44Kv44KS44Kv44Oq44OD44Kv44GX44Gm44GP44Gg44GV44GEOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTUiIG5hbWU9InJlc2V0X3Bhc3N3b3JkX3RlbXBsYXRlX3RleHQyX2xpbmsiPgorICAgIDx2YWx1ZT7mlrDjgZfjgYTjg5Hjgrnjg6/jg7zjg4njgpLlhaXlipvjgZnjgovjgavjga/jgZPjgZPjgpLjgq/jg6rjg4Pjgq/jgZfjgabjgY/jgaDjgZXjgYTjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE2IiBuYW1lPSJyZXNldF9wYXNzd29yZF90ZW1wbGF0ZV90ZXh0M19saW5rIj4KKyAgICA8dmFsdWU+44Oq44Oz44Kv44GM5YuV5L2c44GX44Gq44GE5aC05ZCI44CB44OW44Op44Km44K244Gr44Kz44OU44O8JmFtcDvjg5rjg7zjgrnjg4jjgZfjgabjgY/jgaDjgZXjgYTjgII6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNyIgbmFtZT0icmVzZXRfcGFzc3dvcmRfbWFpbF9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIOODkeOCueODr+ODvOODieODquOCu+ODg+ODiDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTgiIG5hbWU9ImRhdGVSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPuato+OBl+OBhOODleOCqeODvOODnuODg+ODiOOBp+aXpeS7mOOCkuWFpeWKm+OBl+OBpuOBj+OBoOOBleOBhOOAgu+8iOS+i++8iTI0LjEyLjIwMDEgKOaXpS7mnIgu5bm0KTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTkiIG5hbWU9ImVtYWlsUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT7mraPjgZfjgYTjg6Hjg7zjg6vjgqLjg4njg6zjgrnjgpLlhaXlipvjgZfjgabjgY/jgaDjgZXjgYTjgIIo5L6LKSBuYW1lQG1haWwuY29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyMCIgbmFtZT0iZmxvYXRSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPuWun+aVsOOCkuWFpeWKm+OBl+OBpuOBj+OBoOOBleOBhOOAgijkvospIDEuMDA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIxIiBuYW1lPSJudW1iZXJSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPuaVtOaVsOOCkuWFpeWKm+OBl+OBpuOBj+OBoOOBleOBhOOAgijkvospIDEwMDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjIiIG5hbWU9InBob25lUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT7mraPjgZfjgYTpm7voqbHnlarlj7fjgpLlhaXlipvjgZfjgabjgY/jgaDjgZXjgYTjgIIo5L6LKSArKzgxIDAxMjMgMTIzMTIzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyMyIgbmFtZT0idGltZVJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+5q2j44GX44GE5pmC5Yi744KS5YWl5Yqb44GX44Gm44GP44Gg44GV44GE44CCKOS+iykxMjoyMyAo5pmCOuWIhik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI0IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvdyI+CisgICAgPHZhbHVlPuODkeOCueODr+ODvOODieS/neitt+OBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjUiIG5hbWU9Imludml0YXRpb25fd2luZG93X3Bhc3N3b3JkTGFiZWwiPgorICAgIDx2YWx1ZT7jg5Hjgrnjg6/jg7zjg4k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI2IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZExhYmVsIj4KKyAgICA8dmFsdWU+5Yip55So5pyf6ZaTPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNyIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWQiPgorICAgIDx2YWx1ZT7jgqjjg7Pjg4njg6zjgrk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI4IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZCI+CisgICAgPHZhbHVlPuacn+mWk+aMh+WumjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjkiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkIj4KKyAgICA8dmFsdWU+44Ov44Oz44K/44Kk44OgPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWRGcm9tTGFiZWwiPgorICAgIDx2YWx1ZT7plovlp4s6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMSIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWRUb0xhYmVsIj4KKyAgICA8dmFsdWU+57WC5LqGOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzIiIG5hbWU9Imludml0YXRpb25fd2luZG93X01haWxTdWJqZWN0Ij4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIOS8muitsOWPguWKoOS+nemgvDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzMiIG5hbWU9Imludml0YXRpb25fZXJyb3IiPgorICAgIDx2YWx1ZT7jgZPjga7mi5vlvoXjgrPjg7zjg4njgafliKnnlKjlj6/og73jgarmi5vlvoXjga/jgYLjgorjgb7jgZvjgpPjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM0IiBuYW1lPSJpbnZpdGF0aW9uX2Vycm9yIj4KKyAgICA8dmFsdWU+44Gd44Gu5oub5b6F44Gv44GZ44Gn44Gr5L2/44KP44KM44Gm44GE44G+44GZ44CC44GT44Gu44K/44Kk44OX44Gu5oub5b6F44Gv5YaN5Yip55So44GM44Gn44GN44G+44Gb44KT44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzNSIgbmFtZT0iaW52aXRhdGlvbl9lcnJvciI+CisgICAgPHZhbHVlPuOBk+OBruaLm+W+heOCs+ODvOODieOBr+eEoeWKueOBp+OBmeOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzYiIG5hbWU9Imludml0YXRpb25fcGFzcyI+CisgICAgPHZhbHVlPuODkeOCueODr+ODvOODiTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM3IiBuYW1lPSJpbnZpdGF0aW9uX3Bhc3NfYnRuIj4KKyAgICA8dmFsdWU+44OR44K544Ov44O844OJ44OB44Kn44OD44KvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzOCIgbmFtZT0iaW52aXRhdGlvbl9wYXNzX2Vycm9yIj4KKyAgICA8dmFsdWU+44OR44K544Ov44O844OJ44GM6ZaT6YGV44Gj44Gm44GE44G+44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzOSIgbmFtZT0iQnJvd3NlciI+CisgICAgPHZhbHVlPuODluODqeOCpuOCtjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDAiIG5hbWU9ImF1ZGlvX3ZpZGVvIj4KKyAgICA8dmFsdWU+6Z+z5aOwL+ODk+ODh+OCquOBruWQjOacn+WHpueQhjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDEiIG5hbWU9ImVycm9yQ29kZV9pbnZhbGlkU2Vzc2lvbiI+CisgICAgPHZhbHVlPuODreOCsOOCpOODs+OBq+OBr+aIkOWKn+OBl+OBvuOBl+OBn+OBjOOAgeOCu+ODg+OCt+ODp+ODs+OBruWPluW+l+OBq+WkseaVl+OBl+OBvuOBl+OBn+OAguaWsOOBl+OBhOOCu+ODg+OCt+ODp+ODs+OCkuWPluW+l+OBmeOCi+OBn+OCgeOBq+WGjeW6puODreOCsOOCpOODs+OBl+OBpuOBj+OBoOOBleOBhOOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDIiIG5hbWU9ImVycm9yY29kZV9zZXRVc2VyT2JqZWN0Ij4KKyAgICA8dmFsdWU+44GT44Gu44K744OD44K344On44Oz44Gn44Gv5pON5L2c44Gn44GN44G+44Gb44KT44CCU09BUCBHYXRld2F544Gv44Ki44OJ44Of44Oz5qip6ZmQ44GM5b+F6KaB44Gn44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0MyIgbmFtZT0iZXJyb3Jjb2RlX2xvZ2luQnlSZW1vdGVVc2VyIj4KKyAgICA8dmFsdWU+44GT44Gu44K744OD44K344On44Oz44Gv44KC44GG5pyJ5Yq544Gn44Gv44GC44KK44G+44Gb44KT44CC44Ki44OX44Oq44Kx44O844K344On44Oz44Gr44Ki44Kv44K744K544GZ44KL5YmN44GrU09BUC1HYXRld2F544KS5ZG844Gz5Ye644GX44Gf44GL44CB5L2/44Gj44Gm44GE44KL44K744OD44K344On44OzSUTjgYzmraPjgZfjgY/jgarjgYTjgojjgYbjgafjgZnjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ0IiBuYW1lPSJkZWJ1Z19tZXNzYWdlX3JlY29yZGluZyI+CisgICAgPHZhbHVlPuOBk+OBruapn+iDveOBr+ODmeODvOOCv+eJiOOBp+OBmTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDUiIG5hbWU9InByb3BlcnR5UGFuZWxYVmFsdWUiPgorICAgIDx2YWx1ZT54PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0NiIgbmFtZT0icHJvcGVydHlQYW5lbFhWYWx1ZUxhYmVsIj4KKyAgICA8dmFsdWU+eOi7uDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDciIG5hbWU9InByb3BlcnR5UGFuZWxZVmFsdWUiPgorICAgIDx2YWx1ZT55PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0OCIgbmFtZT0icHJvcGVydHlQYW5lbFlWYWx1ZUxhYmVsIj4KKyAgICA8dmFsdWU+eei7uDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDkiIG5hbWU9InByb3BlcnR5UGFuZWxXaWR0aFZhbHVlIj4KKyAgICA8dmFsdWU+dzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTAiIG5hbWU9InByb3BlcnR5UGFuZWxXaWR0aFZhbHVlTGFiZWwiPgorICAgIDx2YWx1ZT7luYU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUxIiBuYW1lPSJwcm9wZXJ0eVBhbmVsSGVpZ2h0VmFsdWUiPgorICAgIDx2YWx1ZT5oPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1MiIgbmFtZT0icHJvcGVydHlQYW5lbEhlaWdodFZhbHVlTGFiZWwiPgorICAgIDx2YWx1ZT7pq5jjgZU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUzIiBuYW1lPSJwcm9wZXJ0eU9wYWNpdHlTbGlkZXIiPgorICAgIDx2YWx1ZT7pgI/pgY7njoflpInmm7Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU0IiBuYW1lPSJicm93c2VyT3BlbiI+CisgICAgPHZhbHVlPuODluODqeOCpuOCtumWi+OBjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTUiIG5hbWU9ImJyb3dzZXJDbG9zZSI+CisgICAgPHZhbHVlPuODluODqeOCpuOCtumWieOBmOOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTYiIG5hbWU9ImNvbm5lY3Rpb25Mb3N0TWVzc2FnZSI+CisgICAgPHZhbHVlPuOCteODvOODkOOBuOOBruaOpee2muOBjOWIh+aWreOBleOCjOOBvuOBl+OBn+OAguOCouODl+ODquOCseODvOOCt+ODp+ODs+OBruWGjeODreODvOODieOCkuihjOOBhuOBi+OAgeOBvuOBn+OBr+ODjeODg+ODiOODr+ODvOOCr+aOpee2muOCkueiuuiqjeOBl+OBpuOBj+OBoOOBleOBhOOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTciIG5hbWU9IjU1NyI+CisgICAgPHZhbHVlPuODneOCpOODs+OCvzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTgiIG5hbWU9InN5bmMgbWVzc2FnZSBoZWFkZXIiPgorICAgIDx2YWx1ZT7lkIzmnJ/jgZfjgabjgYTjgb7jgZk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU5IiBuYW1lPSJTeW5jaHJvbml6aW5nIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7jg6bjg7zjgrbjgpLlkIzmnJ/jgZfjgabjgYTjgb7jgZnjgILjgZfjgbDjgonjgY/jgYrlvoXjgaHjgY/jgaDjgZXjgYTjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYwIiBuYW1lPSJleHBvcnRUb1NWRyI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O1NWR+OBqOOBl+OBpuODgOOCpuODs+ODreODvOODiSZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYxIiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7UE5H44Go44GX44Gm44OA44Km44Oz44Ot44O844OJJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjIiIG5hbWU9ImV4cG9ydFRvSW1hZ2UiPgorICAgIDx2YWx1ZT4mbHQ7dSZndDtKUEfjgajjgZfjgabjg4Djgqbjg7Pjg63jg7zjg4kmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MyIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O1BERuOBqOOBl+OBpuODgOOCpuODs+ODreODvOODiSZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY0IiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7VElG44Go44GX44Gm44OA44Km44Oz44Ot44O844OJJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjUiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT7jg6rjg57jgqTjg7Pjg4A6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2NiIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPuOCq+ODhuOCtOODqjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY3IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+57mw44KK6L+U44GXOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjgiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT7nhKHjgZc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY5IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+5aC05omAOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzAiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT7plovlp4s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTcxIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+57WC5LqGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MiIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPuOCv+OCpOODiOODqzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTczIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+5YKZ6ICDOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzQiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT7lj4LliqDogIU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc1IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+5q+O5pelPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NiIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPuavjuaciDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzciIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT7mr47lubQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc4IiBuYW1lPSJhbGVydCI+CisgICAgPHZhbHVlPkFwcG9pbnRtZW50LWVuZCBpcyBhZnRlciBvZiBhcHBvaW50bWVudC1zdGFydCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc5IiBuYW1lPSJhbGVydCI+CisgICAgPHZhbHVlPuOCv+OCpOODiOODq+OCkuWFpeWKm+OBl+OBpuOBj+OBoOOBleOBhCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgwIiBuYW1lPSI1ODAiPgorICAgIDx2YWx1ZT7lj7PjgYvjgonlt6bmlrnlkJHjgbjmm7jjgY/oqIDoqp48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgxIiBuYW1lPSI1ODEiPgorICAgIDx2YWx1ZT7lj7PjgYvjgonlt6bmlrnlkJHjgbjmm7jjgY/oqIDoqp7jga7loLTlkIg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgyIiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPuODgOODg+OCt+ODpeODnOODvOODiTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODMiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+6Yyy55S75riI44G/44Gu44Of44O844OG44Kj44Oz44KwL+OCpOODmeODs+ODiOOCkuimluiBtOOBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODQiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+44Of44O844OG44Kj44Oz44KwIC0gNOWQje+8iOacgOWkpzE25ZCN77yJ44G+44Gn44Gu5Lya6K2wJmx0O2JyLyZndDvlj4LliqDogIXlhajlk6HjgYzpn7Plo7Ar44OT44OH44Kq44KS5Yip55So44Gn44GN44G+44GZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4NSIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT7jgqTjg5njg7Pjg4ggLSDmnIDlpKcyMDDlkI3jgb7jgafjga7kvJrorbAmbHQ7YnIvJmd0O+WPuOS8muiAheOBoOOBkeOBjOmfs+WjsC/jg5Pjg4fjgqrjgpLliKnnlKjjgafjgY3jgb7jgZk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg2IiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPuODpuODvOOCtuOAgeS8muitsOWupOOAgee1hOe5lOOCkuS9nOaIkOOBmeOCiyZsdDtici8mZ3Q7ICsg5qeL5oiQ44KS5aSJ5pu044GZ44KLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4NyIgbmFtZT0icm9vbSBBZG1pbmlzdHJhdGlvbiByb29tY2xpZW50cyBsaXN0Ij4KKyAgICA8dmFsdWU+44GT44Gu5Lya6K2w5a6k44Gr5YWl5a6k5Lit44Gu44Om44O844K2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4OCIgbmFtZT0icm9vbSBBZG1pbmlzdHJhdGlvbiByb29tY2xpZW50cyBsaXN0Ij4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg5IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT7jg63jgrDjgqTjg7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkwIiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5EPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5MSIgbmFtZT0ic3dmIHN5bmMgbWVzc2FnZSI+CisgICAgPHZhbHVlPuODieOCreODpeODoeODs+ODiOOCkuODreODvOODieOBl+OBpuOBhOOBvuOBmeOAguWFqOOCr+ODqeOCpOOCouODs+ODiOOBruWQjOacn+OBjOWujOS6huOBmeOCi+OBvuOBp+OBl+OBsOOCieOBj+OBiuW+heOBoeOBj+OBoOOBleOBhOOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTIiIG5hbWU9InVwbG9hZCBkaWFsb2ciPgorICAgIDx2YWx1ZT7jgqLjg4Pjg5fjg63jg7zjg4nlrozkuobjgILjg4njgq3jg6Xjg6Hjg7Pjg4jjgpLlpInmj5vjgZfjgabjgYTjgb7jgZkuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkzIiBuYW1lPSJ1cGxvYWQgZGlhbG9nIj4KKyAgICA8dmFsdWU+44Ki44OD44OX44Ot44O844OJ44KS6ZaL5aeL44GZ44KLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NCIgbmFtZT0idXBsb2FkIGRpYWxvZyI+CisgICAgPHZhbHVlPuOCouODg+ODl+ODreODvOODiS/jgqTjg7Pjg53jg7zjg4jjgpLooYzjgYTjgb7jgZnjgILjg63jg7zjgqvjg6vjg7vjg4fjgqPjgrnjgq/kuIrjga7jg5XjgqHjgqTjg6vjgpLpgbjmip7jgZfjgabjgY/jgaDjgZXjgYTjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk1IiBuYW1lPSJ1cGxvYWQgRGlhbG9nIj4KKyAgICA8dmFsdWU+44Kt44Oj44Oz44K744OrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NiIgbmFtZT0idXBsb2FkIERpYWxvZyI+CisgICAgPHZhbHVlPuODleOCoeOCpOODq+OCkumBuOaKnuOBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTciIG5hbWU9ImFkbWluaXN0cmF0aW9uIG5hdmlnYXRpb24iPgorICAgIDx2YWx1ZT7mjqXntpo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk4IiBuYW1lPSJjb25mYWRtaW4gdmFsdWUgbGlzdCI+CisgICAgPHZhbHVlPuWApDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTkiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5TdHJlYW1pZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDAiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT7jg63jgrDjgqTjg7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAxIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+5o6l57aa6ZaL5aeL5pmC5Yi7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwMiIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPuS8muitsOWupCAvIOOCueOCs+ODvOODlzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDMiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT7jg6bjg7zjgrbjgpLov73jgYTlh7rjgZk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA0IiBuYW1lPSJraWNrIHVzZXIgY29uZmlybWF0aW9uIGRpYWxvZyI+CisgICAgPHZhbHVlPuODpuODvOOCtuOCkui/veOBhOWHuuOBmTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDUiIG5hbWU9ImtpY2sgdXNlciBjb25maXJtYXRpb24gZGlhbG9nIj4KKyAgICA8dmFsdWU+6Lui5YCS44Gr44GT44Gu44Kv44Op44Kk44Ki44Oz44OI44KS6L+944GE5Ye644GX44Gm44KI44KN44GX44GE44Gn44GZ44GLPyZsdDtici8mZ3Q7IOi/veOBhOWHuuOBmeOBqOOAgeOCr+ODqeOCpOOCouODs+ODiOOBr+WNmOOBq+OBk+OBruS8muitsOWupOOBi+OCiei/veOBhOWHuuOBleOCjOOCi+OBoOOBkeOBp+OBmeOAguOCr+ODqeOCpOOCouODs+ODiOOBr+OAgeWGjeW6puODreOCsOOCpOODs+OBl+OBpuOBj+OCi+OBi+OCguOBl+OCjOOBvuOBm+OCk+OAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDYiIG5hbWU9ImtpY2sgdXNlciBtZXNzYWdlIGRpYWxvZyI+CisgICAgPHZhbHVlPueuoeeQhuiAheOBvuOBn+OBr+WPuOS8muiAheOBq+OCiOOBo+OBpuOAgeOCu+ODg+OCt+ODp+ODs+OBjOWIh+aWreOBleOCjOOBvuOBl+OBn+OAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDciIG5hbWU9InVzZXJhbHRlcnNlbGZfcGhvbmUiPgorICAgIDx2YWx1ZT7pm7voqbE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA4IiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT7kvJrorbDlrqTjga7lj7jkvJrpgLLooYzmqKnpmZA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA5IiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT7jg5vjg6/jgqTjg4jjg5zjg7zjg4njga7liKnnlKjlj6/lkKY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEwIiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT7pn7Plo7Av44OT44OH44Kq44KS6ZaL5aeL77yI5YaN6ZaL77yJ44GZ44KL44CB44G+44Gf44Gv44OH44OQ44Kk44K56Kit5a6a44KS5aSJ5pu044GZ44KLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMSIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+44Ob44Ov44Kk44OI44Oc44O844OJ44Gu5Yip55So44KS6Kix5Y+v44GZ44KLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMiIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+44Ob44Ov44Kk44OI44Oc44O844OJ44Gu5Yip55So44KS56aB5q2i44GZ44KLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMyIgbmFtZT0iY29uZmVyZW5jZVBhbmVscyI+CisgICAgPHZhbHVlPuODpuODvOOCtjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTQiIG5hbWU9ImNvbmZlcmVuY2VQYW5lbHMiPgorICAgIDx2YWx1ZT7jg5XjgqHjgqTjg6s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE1IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+44Ob44Ov44Kk44OI44Oc44O844OJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxNiIgbmFtZT0iY29uZmVyZW5jZVBhbmVscyI+CisgICAgPHZhbHVlPuODgeODo+ODg+ODiDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTciIG5hbWU9Im9yZ2FuaXphdGlvbiBjaG9vc2UgaW5mbyI+CisgICAgPHZhbHVlPuOBguOBquOBn+OBruOCouOCq+OCpuODs+ODiOOBr+ikh+aVsOOBrue1hOe5lOOBq+aJgOWxnuOBl+OBpuOBhOOBvuOBmeOAguOBk+OBruOCu+ODg+OCt+ODp+ODs+OBp+S9v+eUqOOBmeOCi+e1hOe5lOOCkumBuOaKnuOBl+OBpuOBj+OBoOOBleOBhOOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTgiIG5hbWU9ImVycm9yIG1lc3NhZ2Ugcm9vbSBmdWxsIj4KKyAgICA8dmFsdWU+5Lya6K2w5a6k44Gv54++5Zyo5rqA5a6k44Gn44GZ44CC6ZaT44KS572u44GE44Gm5YaN5YWl5a6k44GX44Gm44GP44Gg44GV44GE44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxOSIgbmFtZT0icm9vbXR5cGVzIj4KKyAgICA8dmFsdWU+5Lya6K2w5a6k44K/44Kk44OXPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyMCIgbmFtZT0iYXBwb2ludGVkX3Jvb20iPgorICAgIDx2YWx1ZT7kvJrorbDlrqQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIxIiBuYW1lPSJzZXJ2ZXJ0aW1lIj4KKyAgICA8dmFsdWU+44K144O844OQ5pmC5Yi7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyMiIgbmFtZT0iaW52X3JlbWluZGVyX3RlbXBsYXRlX2hlYWQiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgLSDjg6rjg57jgqTjg7Pjg4A8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIzIiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9mcm9tIj4KKyAgICA8dmFsdWU+44Oh44OD44K744O844K46YCB5L+h6ICFOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjQiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X21lc3NhZ2UiPgorICAgIDx2YWx1ZT7jg6Hjg4Pjgrvjg7zjgrg6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNSIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfY2xpY2tfdGV4dCI+CisgICAgPHZhbHVlPuODn+ODvOODhuOCo+ODs+OCsOOBq+WPguWKoOOBmeOCi+OBq+OBr+OAgeOBk+OBruODquODs+OCr+OCkuOCr+ODquODg+OCr+OBl+OBpuOBj+OBoOOBleOBhDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI2IiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9jbGlja190ZXh0X2xpbmsiPgorICAgIDx2YWx1ZT7lhaXlrqTjgZnjgovjgavjga/jgZPjga7jg6rjg7Pjgq/jgpLjgq/jg6rjg4Pjgq/jgZfjgabjgY/jgaDjgZXjgYQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI3IiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9jbGlja190ZXh0X2hlbHAiPgorICAgIDx2YWx1ZT7jg6rjg7Pjgq/jgYzmqZ/og73jgZfjgarjgYTloLTlkIjjga/jgIHkuIvoqJhVUkzjgpLjg5bjg6njgqbjgrbjgavjgrPjg5Tjg7zjg7vjg5rjg7zjgrnjg4jjgZfjgabjgY/jgaDjgZXjgYQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyOCIgbmFtZT0iYnRuX3NlYXJjaF9pbnRlcm4iPgorICAgIDx2YWx1ZT5zZWFyY2ggaW50ZXJuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyOSIgbmFtZT0iYnRuX3NlYXJjaF9leHRlcm4iPgorICAgIDx2YWx1ZT7lpJbpg6jjg6bjg7zjgrY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMwIiBuYW1lPSJsYmxfcHJlbmFtZSI+CisgICAgPHZhbHVlPuWQjTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzEiIG5hbWU9ImxibF9uYW1lIj4KKyAgICA8dmFsdWU+5aeTPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzMiIgbmFtZT0ibGJsX2VtYWlsIj4KKyAgICA8dmFsdWU+44Oh44O844Or44O744Ki44OJ44Os44K5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzMyIgbmFtZT0ibG9nb3V0Q29uZmlybV90aXRsZSI+CisgICAgPHZhbHVlPuODreOCsOOCouOCpuODiOOBrueiuuiqjTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzQiIG5hbWU9ImxvZ291dENvbmZpcm1fc3VyZV90b19sb2dvdXRfcXVlc3Rpb24iPgorICAgIDx2YWx1ZT7jg63jgrDjgqLjgqbjg4jjgZfjgabjgojjgo3jgZfjgYTjgafjgZnjgYs/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNSIgbmFtZT0ibWFpbiBtZW51Ij4KKyAgICA8dmFsdWU+44Ki44Kv44K344On44OzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPuODh+ODouODu+ODq+ODvOODoDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT7jg4fjg6LmmYLplpM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM4IiBuYW1lPSJtZWV0aW5nIFRpbWVyIj4KKyAgICA8dmFsdWU+TWVldGluZyBUaW1lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzkiIG5hbWU9Im1lZXRpbmcgVGltZXIiPgorICAgIDx2YWx1ZT5UaGlzIFJvb20gaXMgYSBEZW1vIFJvb20uIFRvIGRpc2FibGUgdGhpcyB3YXJuaW5nIHlvdSBlaXRoZXIgc2hvdWxkIGdldCBhIHByaXZhdGUgbWVldGluZyByb29tIGZvciB5b3VyIHBlcnNvbmFsIHVzYWdlIG9yIHNldCB1cCBhbiBvd24gU2VydmVyLiBZb3Ugd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGxvZ2dlZCBvZmYgaW46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MCIgbmFtZT0ibWVldGluZyByb29tIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+5Y+45Lya5qip5L+d5oyB6ICF44GM5LuV5YiH44KLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MSIgbmFtZT0ibW9kZXJhdGVkIHJvb20gd2FpdGluZyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+5Y+45Lya6ICF44GM5YWl5a6k44GZ44KL44G+44Gn44GX44Gw44KJ44GP44GK5b6F44Gh44GP44Gg44GV44GE44CC5Y+45Lya6ICF44Gv5pys5Lya6K2w5a6k44Gu566h55CG6ICFL+S9nOaIkOiAhS/orJvluKvjgavjgarjgorjgb7jgZnjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQyIiBuYW1lPSJlcnJvciBwb3B1cCI+CisgICAgPHZhbHVlPk9rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MyIgbmFtZT0id2luZG93IHNjcmVlbnNoYXJpbmciPgorICAgIDx2YWx1ZT7mlrDopo/nlLvpnaLlhbHmnIk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ0IiBuYW1lPSJ3aW5kb3cgc2NyZWVuIHNoYXJpbmciPgorICAgIDx2YWx1ZT7mlrDnnYDjga7nlLvpnaLlhbHmnInjgYzjgYLjgorjgb7jgZnjgILpgIHkv6HogIXvvJo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ1IiBuYW1lPSJ3aW5kb3cgc2NyZWVuIHNoYXJpbmciPgorICAgIDx2YWx1ZT7lhbHmnInjgpLplovlp4vjgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ2IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPuaWsOimj+ODn+ODvOODhuOCo+ODs+OCsOOCkui/veWKoOOBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDciIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+44Of44O844OG44Kj44Oz44Kw44O744Or44O844OgPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0OCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT7jgqTjg5njg7Pjg4jjg7vjg6vjg7zjg6A8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ5IiBuYW1lPSJtYWluIG1lbnUgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPueuoeeQhjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTAiIG5hbWU9Im1lbnUgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPuODpuODvOOCtueuoeeQhjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTEiIG5hbWU9Im1lbnUgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPuS8muitsOWupOeuoeeQhjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTIiIG5hbWU9Im1vZGVyYXRvciBvcmciPgorICAgIDx2YWx1ZT5NPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1MyIgbmFtZT0iY29uZmlybSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+44GT44Gu44Om44O844K244KS5omA5bGe57WE57mU44Gu5Y+45Lya6ICF44Gr6Kit5a6a44GX44Gm44KI44KN44GX44GE44Gn44GZ44GL77yfPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1NCIgbmFtZT0iZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPuaJgOWxnue1hOe5lOOCkuaMh+WumuOBl+OBpuOBj+OBoOOBleOBhOOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTUiIG5hbWU9ImNob29zZSB1c2VyIHdpbmRvdyI+CisgICAgPHZhbHVlPue1hOe5lCAtIOWPuOS8muiAhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTYiIG5hbWU9Im1vZGVyYXRvciBvcmcgdXNlcnMiPgorICAgIDx2YWx1ZT7jgZPjga7jg6bjg7zjgrbjgpLmiYDlsZ7ntYTnuZTjgYvjgonpmaTlpJbjgZfjgabjgojjgo3jgZfjgYTjgafjgZnjgYvvvJ88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU3IiBuYW1lPSJvcmcgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPuOBk+OBruODpuODvOOCtuOBr+WPuOS8muiAheOBp+OBmTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTgiIG5hbWU9Im9yZyBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+44GT44Gu44Om44O844K244Gv5Y+45Lya6ICF44Gn44Gv44GC44KK44G+44Gb44KTPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1OSIgbmFtZT0iZXJyb3IgbWVzc2FnZSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+44GT44Gu44Om44O844K244KS5omA5bGe57WE57mU44Gu5Y+45Lya6ICF44GL44KJ6Zmk5aSW44GX44Gm44KI44KN44GX44GE44Gn44GZ44GL77yfPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MCIgbmFtZT0ibW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPuaJgOWxnue1hOe5lOWGheOBq+ODpuODvOOCtuOBvuOBn+OBr+S8muitsOWupOOCkui/veWKoOODu+WJiumZpOOBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjEiIG5hbWU9ImRlbGV0ZSBjb25maXJtIHF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+5YmK6Zmk44GX44Gm44KI44KN44GX44GE44Gn44GZ44GL77yfPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MiIgbmFtZT0iZGVsZXRlIGNvbmZpcm0gcXVlc3Rpb24gdXNlciBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+44GT44Gu44Om44O844K244KS44GC44Gq44Gf44Gu5omA5bGe57WE57mU44GL44KJ6Zmk5aSW44GX44Gm44KI44KN44GX44GE44Gn44GZ44GL77yf44GT44Gu5pON5L2c44Gv44CB44Om44O844K244KS5omA5bGe44GZ44KL57WE57mU44GL44KJ6Zmk5aSW44GZ44KL44Gg44GR44Gn44GZ44CC44GT44Gu44Om44O844K244KS44K344K544OG44Og44GL44KJ5YmK6Zmk44GZ44KL44Gf44KB44Gr44Gv44CB566h55CG6ICF44OR44ON44Or44Gr44Ot44Kw44Kk44Oz44GZ44KL5b+F6KaB44GM44GC44KK44G+44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MyIgbmFtZT0iZXJyb3IgbWVzc2FnZSBzZWxmIGRlbGV0aW5nIj4KKyAgICA8dmFsdWU+44GC44Gq44Gf6Ieq6Lqr44KS5YmK6Zmk44GZ44KL44GT44Go44Gv44Gn44GN44G+44Gb44KTITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjQiIG5hbWU9ImVycm9yIG1lc3NhZ2UgYXV0aCI+CisgICAgPHZhbHVlPueuoeeQhuiAheOBp+OBquOBkeOCjOOBsOWun+ihjOOBp+OBjeOBvuOBm+OCkyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY1IiBuYW1lPSJlcnJvciBtZXNzYWdlIFNPQVAiPgorICAgIDx2YWx1ZT5UaGVyZSB3YXMgbm8gU2Vzc2lvbiBhc3NvY2lhdGVkIHdpdGggdGhpcyBJRC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY2IiBuYW1lPSJlcnJvciBtZXNzYWdlIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT7jgZPjga7jg6bjg7zjgrbjga/nrqHnkIbogIXjgIHjgb7jgZ/jga/lj7jkvJrogIXjgqLjgqvjgqbjg7Pjg4jjgafjgZnjgILjgZPjga7jgqLjgqvjgqbjg7Pjg4jjga/jgIHnrqHnkIbogIXjg5Hjg43jg6vkuIrjgafjgZfjgYvlpInmm7TjgafjgY3jgb7jgZvjgpPjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY3IiBuYW1lPSJlbWFpbCB2ZXJpZmljYXRpb24iPgorICAgIDx2YWx1ZT7nmbvpjLLjgpLlrozkuobjgZnjgovjgZ/jgoHjgavjga/jgIHkuIvoqJjjga7jg6rjg7Pjgq/jgpLjgq/jg6rjg4Pjgq/jgZfjgabjgY/jgaDjgZXjgYTjgILjgYLjgovjgYTjga/kuIvoqJhVUkzjgpLjg5bjg6njgqbjgrbjgavjgrPjg5Tjg7zjg7vjg5rjg7zjgrnjg4jjgZfjgabjgY/jgaDjgZXjgYTjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY4IiBuYW1lPSJlbWFpbCB2ZXJpZmljYXRpb24iPgorICAgIDx2YWx1ZT7jg6Hjg7zjg6vjgpLnorroqo3jgZnjgovjgavjga/jgZPjgZPjgpLjgq/jg6rjg4Pjgq/jgZfjgabjgY/jgaDjgZXjgYQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY5IiBuYW1lPSJlcnJvck1lc3NhZ2VfVXNlckFjdGl2YXRpb25TZXJ2bGV0IFtBY3RpdmF0ZVVzZXJdIj4KKyAgICA8dmFsdWU+Tm8gdXNlciB3YXMgZm91bmQgZm9yIHRoaXMgSGFzaC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjcwIiBuYW1lPSJlcnJvck1lc3NhZ2VfVXNlckFjdGl2YXRpb25TZXJ2bGV0IFtBY3RpdmF0ZVVzZXJdIj4KKyAgICA8dmFsdWU+44Om44O844K244Gv5pei44Gr5pyJ5Yq55YyW44GV44KM44Gm44GE44G+44GZITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzEiIG5hbWU9ImVycm9yTWVzc2FnZV9Vc2VyQWN0aXZhdGlvblNlcnZsZXQgW0FjdGl2YXRlVXNlcl0iPgorICAgIDx2YWx1ZT7jgqLjgqvjgqbjg7Pjg4jjga7mnInlirnljJbjgYzlrozkuobjgZfjgb7jgZfjgZ/jgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjcyIiBuYW1lPSJlcnJvck1lc3NhZ2VfVXNlckFjdGl2YXRpb25TZXJ2bGV0IFtBY3RpdmF0ZVVzZXJdIj4KKyAgICA8dmFsdWU+44Ot44Kw44Kk44Oz44GX44Gm44GP44Gg44GV44GEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3MyIgbmFtZT0ibG9naW5FcnJvck1lc3NhZ2UgPSB1c2VyIHdhcyBub3QgYWN0aXZhdGVkIj4KKyAgICA8dmFsdWU+44Ki44Kr44Km44Oz44OI44GM5pyJ5Yq55YyW44GV44KM44Gm44GE44G+44Gb44KT44CC44Ki44Kr44Km44Oz44OI55m76Yyy5pmC44Gr5Y+X5L+h44GX44Gf44Oh44O844Or5Lit44Gu44Oq44Oz44Kv44KS44Kv44Oq44OD44Kv44GX44Gm44Ki44Kr44Km44Oz44OI44KS5pyJ5Yq55YyW44GX44Gm44GP44Gg44GV44GE44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3NCIgbmFtZT0icmVnaXN0ZXIgdmVyaWZpY2F0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7jgrXjgqTjg7PjgqLjg4Pjg5fjgYzlrozkuobjgZfjgb7jgZfjgZ/jgILnmbvpjLLjg6Hjg7zjg6vjgqLjg4njg6zjgrnjgavlr77jgZfjgabnorroqo3jgrPjg7zjg4njgpLpgIHku5jjgZfjgb7jgZfjgZ/jga7jgafjgIHjg6Hjg7zjg6vlj5fkv6HnrrHjgpLjgZTnorroqo3jgY/jgaDjgZXjgYTjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc1IiBuYW1lPSJwYXJ0aWNpcGFudHMgcGFuZWwiPgorICAgIDx2YWx1ZT7lj7jkvJrogIXmqKnpmZDjgpLliaXlparjgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc2IiBuYW1lPSJwYXJ0aWNpcGFudHMgcGFuZWwiPgorICAgIDx2YWx1ZT7lj7jkvJrogIXmqKnpmZDjgpLku5jkuI7jgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc3IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7jg6bjg7zjgrY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc4IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7jg5vjg6/jgqTjg4jjg5zjg7zjg4njg7vjgqLjgq/jgrvjgrk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc5IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7lj7jkvJrogIU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgwIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7jg5vjg6/jgqTjg4jjg5zjg7zjg4nkvb/nlKjmqKnpmZDjgIHlj7jkvJrogIXmqKnpmZDjgIHjg5Pjg4fjgqrlhbHmnInmqKnpmZDjgpLku5jkuI7jgZnjgovjg6bjg7zjgrbjgpLpgbjmip7jgZfjgabjgY/jgaDjgZXjgYTjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgxIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7jgZPjga7jg6bjg7zjgrbjga/ml6Ljgavlj7jkvJrogIXmqKnpmZDjgpLmnInjgZnjgovjgZ/jgoHjgIHjg5vjg6/jgqTjg4jjg5zjg7zjg4nkvb/nlKjmqKnpmZDjgpLmnInjgZfjgabjgYTjgb7jgZnjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgyIiBuYW1lPSJldmVudCB1c2VyIGxpc3QgZXJyb3IiPgorICAgIDx2YWx1ZT7oh6rliIboh6rouqvjgYvjgonlj7jkvJrogIXmqKnpmZDjgpLliaXlparjgZnjgovjgZPjgajjga/jgafjgY3jgb7jgZvjgpPjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgzIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7jg5Pjg4fjgqrlhbHmnInmqKnpmZDjgpLku5jkuI7jgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg0IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7jg5Pjg4fjgqrlhbHmnInmqKnpmZDjgpLliaXlparjgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg1IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7os6rllY/jgYzjgYLjgorjgb7jgZk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg2IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7jg5vjg6/jgqTjg4jjg5zjg7zjg4njgpLkvb/jgYTjgZ/jgYQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg3IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7jg5Pjg4fjgqrjg7vpn7Plo7DjgpLlhbHmnInjgZfjgZ/jgYQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg4IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7jgYLjgarjgZ/jga/lj7jkvJrogIXjgafjgZk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg5IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7jg5vjg6/jgqTjg4jjg5zjg7zjg4njga7kvb/nlKjjgpLoqLHlj6/jgZXjgozjgabjgYTjgb7jgZk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkwIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7jg5Pjg4fjgqrjg7vpn7Plo7Djga7lhbHmnInjgpLoqLHlj6/jgZXjgozjgb7jgZfjgZ88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkxIiBuYW1lPSJlcnJvcnR5cGUiPgorICAgIDx2YWx1ZT7lj7jkvJrogIXjgbjjg6Hjg4Pjgrvjg7zjgrjjgpLpgIHkv6E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkyIiBuYW1lPSJhcHBseSBmb3IgbW9kIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkzIiBuYW1lPSJhcHBseSBmb3IgbW9kIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7jgZXjgpPjgYzjgIHlj7jkvJrogIUo6Kmx6ICFKeaoqemZkOOCkuimgeaxguOBl+OBpuOBhOOBvuOBmeOAguODpuODvOOCtuS4gOimp+OBruODpuODvOOCtuWQjeWPs+WBtOOBq+OBguOCi+OCueODhuODvOOCv+OCueODu+OCouOCpOOCs+ODs+OCkuS9v+OBo+OBpuWPuOS8muiAheaoqemZkOOBruS4juWlquOCkuihjOOBhOOBvuOBmeOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTQiIG5hbWU9ImFwcGx5IGZvciB3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+44GV44KT44GM44CB44Ob44Ov44Kk44OI44Oc44O844OJ44Gu5L2/55So44KS6KaB5rGC44GX44Gm44GE44G+44GZ44CC44Om44O844K25LiA6Kan44Gu44Om44O844K25ZCN5Y+z5YG044Gr44GC44KL44K544OG44O844K/44K544O744Ki44Kk44Kz44Oz44KS5L2/44Gj44Gm44Ob44Ov44Kk44OI44Oc44O844OJ5L2/55So5qip6ZmQ44Gu5LiO5aWq44KS6KGM44GE44G+44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5NSIgbmFtZT0iNjk1Ij4KKyAgICA8dmFsdWU+44GV44KT44GM44CB44OT44OH44Kq44O76Z+z5aOw44Gu5YWx5pyJ44KS6KaB5rGC44GX44Gm44GE44G+44GZ44CC44Om44O844K25LiA6Kan44Gu44Om44O844K25ZCN5Y+z5YG044Gr44GC44KL44K544OG44O844K/44K544O744Ki44Kk44Kz44Oz44KS5L2/44Gj44Gm44OT44OH44Kq5YWx5pyJ5qip6ZmQ44Gu5LiO5aWq44KS6KGM44GE44G+44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5NiIgbmFtZT0ibW9kZXJhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+5Y+45Lya6ICF44GM5YWl5a6k44GZ44KL44G+44Gn44GX44Gw44KJ44GP44GK5b6F44Gh44GP44Gg44GV44GE44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5NyIgbmFtZT0iY2FsZW5kYXIgYnV0dG9uIj4KKyAgICA8dmFsdWU+44Kt44Oj44Oz44K744OrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5OCIgbmFtZT0iY2FsZW5kYXIgYnV0dG9uIj4KKyAgICA8dmFsdWU+5L+d5a2YPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5OSIgbmFtZT0iY2FsZW5kYXIgY29tcG9uZW50Ij4KKyAgICA8dmFsdWU+5pelPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwMCIgbmFtZT0iY2FsZW5kYXIgY29tcG9uZW50Ij4KKyAgICA8dmFsdWU+5pyIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwMSIgbmFtZT0iY2FsZW5kYXIgY29tcG9uZW50Ij4KKyAgICA8dmFsdWU+5bm0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwMiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPuODleOCoeOCpOODq+OCkuOCouODg+ODl+ODreODvOODieOBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDMiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7jg5Xjgqnjg6vjg4DjgpLov73liqDjgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA0IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+44Oq44OV44Os44OD44K344OlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwNSIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPuOCtOODn+eusSAo44Ki44Kk44OG44Og44KS44GT44GT44Gr44OJ44Op44OD44KwJmFtcDvjg4njg63jg4Pjg5cpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwNiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPuengeOBruODleOCoeOCpOODqyAo44Ob44O844Og44O744OJ44Op44Kk44OWKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDciIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7kvJrorbDlrqTjga7jg5XjgqHjgqTjg6sgKOODkeODluODquODg+OCr+ODu+ODieODqeOCpOODlik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA4IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+44OV44Kh44Kk44Or44KS6L+95Yqg44GZ44KLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwOSIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPuODleOCqeODq+ODgOOCkui/veWKoOOBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTAiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7jg5XjgqHjgqTjg6sv44OV44Kp44Or44OA44KS5raI5Y6744GZ44KLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMSIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPuWQjeWJjeOCkue3qOmbhuOBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTIiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7mlrDopo/jg5Xjgqnjg6vjg4A8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzEzIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+44GT44Gu44Ki44Kk44OG44Og44KS5raI5Y6744GX44Gm44KI44KN44GX44GE44Gn44GZ44GLPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTQiIG5hbWU9InVzZXIgYWRtaW4iPgorICAgIDx2YWx1ZT7mpJzntKI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE1IiBuYW1lPSJ1c2VyIGFkbWluIj4KKyAgICA8dmFsdWU+5qSc57SiPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxNiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPuODieOCreODpeODoeODs+ODiOOCkumWi+OBjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTciIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7lhajjgabjga7jg5XjgqHjgqTjg6vjgpLooajnpLrjgZnjgosgKOODhOODquODvOODu+ODk+ODpeODvCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE4IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+44OJ44Kt44Ol44Oh44Oz44OI44KS6ZaJ44GY44KLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxOSIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPuODleOCoeOCpOODq+OCkua2iOWOu+OBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjAiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7jg5vjg6/jgqTjg4jjg5zjg7zjg4njgavlr77jgZnjgovmm7jjgY3ovrzjgb/jgYzoqLHlj6/jgZXjgozjgabjgYTjgb7jgZvjgpPjgILmm7jjgY3ovrzjgb/jgpLjgZnjgovjgavjga/jgIHlj7jkvJrogIXjgavjgarjgovjgYvjgIHmm7jjgY3ovrzjgb/mqKnpmZDjgpLku5jkuI7jgZfjgabjgoLjgonjgYblv4XopoHjgYzjgYLjgorjgb7jgZnjgILlj7jkvJrogIXjgavmqKnpmZDku5jkuI7jgpLkvp3poLzjgZfjgabjgY/jgaDjgZXjgYTjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIxIiBuYW1lPSJwcm9wZXJ0eSBwYW5lbCI+CisgICAgPHZhbHVlPuODieOCreODpeODoeODs+ODiOODu+ODl+ODreODkeODhuOCozwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjIiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPuOCr+ODqeOCpOOCouODs+ODiOOCkumWi+WniyAo5aSW6YOo44OX44Ot44Kw44Op44Og5L2/55SoKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjMiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPuOCr+ODqeOCpOOCouODs+ODiOOCkumWi+WniyAoSFRUUCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI0IiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT7jg6bjg7zjgrbjgYzjg4fjgrnjgq/jg4jjg4Pjg5flhbHmnInjgpLmj5DkvpvjgZfjgabjgYTjgb7jgZnjgILnlLvpnaLjgpLplrLopqfjgZfjgb7jgZnjgYvvvJ88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI1IiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT7nj77lnKjjgIHjgYLjgarjgZ/jga7jg4fjgrnjgq/jg4jjg4Pjg5fjga/lhbHmnInjgZXjgozjgabjgYTjgb7jgZnjgILjg4fjgrnjgq/jg4jjg4Pjg5flhbHmnInjgpLlgZzmraLjgZnjgovpmpvjga/jgIHlhbHmnInjgq/jg6njgqTjgqLjg7Pjg4jkuIrjga7lgZzmraLjg5zjgr/jg7PjgpLmirzjgZfjgabjgY/jgaDjgZXjgYTjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI2IiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT7jgrvjg4Pjgrfjg6fjg7PlhbHmnIk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI3IiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT7jgYLjgarjgZ/jga7jg4fjgrnjgq/jg4jjg4Pjg5fjga/ml6LjgavlhbHmnInjgZXjgozjgabjgYTjgb7jgZkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyOCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT7jg4fjgrnjgq/jg4jjg4Pjg5fjg7vjg5Pjg6Xjg7zjgqI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI5IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPue1guS6hjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzAiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+44OH44K544Kv44OI44OD44OX5YWx5pyJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT7plovlp4vjgpLjgq/jg6rjg4Pjgq/jgZfjgabnlLvpnaLjgpLlhbHmnInjgZfjgb7jgZk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMyIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPuWFseacieOCkumWi+Wni+OBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzMiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+5YWx5pyJ44KS5YGc5q2i44GZ44KLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT7lhbHmnInjgZnjgovnlLvpnaLpoJjln5/jgpLpgbjmip7jgZfjgabjgY/jgaDjgZXjgYQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT7luYXjgpLlpInmm7TjgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM2IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlRoZSBTaGFyZXIgaGFzIGZpbmlzaGVkIHRoaXMgc2Vzc2lvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM3IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPumrmOOBleOCkuWkieabtOOBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+WCDjgqrjg5Xjgrvjg4Pjg4g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM5IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlkg44Kq44OV44K744OD44OIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0MCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT7luYU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0MSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT7pq5jjgZU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0MiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT7jgrXjg7zjg5DjgavjgojjgaPjgabmjqXntprjgYzliIfmlq3jgZXjgozjgb7jgZfjgZ/jgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQzIiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPuOCreODo+ODs+OCu+ODqzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDQiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+5aSW6YOo44OT44Ol44O844Ki44KS6ZaL5aeLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NSIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT7jg5Pjg6Xjg7zjgqLjgpLlrozlhajjgavplonjgZjjgabjgZfjgb7jgYbjgajjgIHmnKzjgrvjg4Pjgrfjg6fjg7PkuK3jga/jg5Pjg6Xjg7zjgqLjgpLlho3plovjgZnjgovjgZPjgajjgYzjgafjgY3jgb7jgZvjgpPjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ2IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPuODk+ODpeODvOOCoue1guS6hueiuuiqjTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDciIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+55S76Z2i44KS5YWx5pyJ44GZ44KLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0OCIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT7pjLLnlLvjgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ5IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+5Lim6KGM44OW44Op44Km44K444Oz44KwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MCIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPldpbmRvd3PniYhGaXJlZm9444Gn44Gv5Lim6KGM44OW44Op44Km44K444Oz44Kw5qmf6IO944KS44Kv44Oq44Ki44Gr6KGo56S644GZ44KL44GT44Go44GM44Gn44GN44G+44Gb44KT44CC5LuW44Gu44OW44Op44Km44K244KS44GU5Yip55So44GP44Gg44GV44GE44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MSIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPuWJjeOBuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTIiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT7mrKHjgbg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUzIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+44Oq44Ot44O844OJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1NCIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPuODm+ODvOODoDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTUiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT7jg63jg7zjg4k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU2IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+44GT44Gu44Km44Kn44OW44K144Kk44OI44KS44GC44Gq44Gf44Gu44OH44OV44Kp44Or44OI44O744Km44Kn44OW44K144Kk44OI44Gr6Kit5a6a44GZ44KL44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1NyIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPuioreWumuOBruODhuOCueODiDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTgiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT7lhaXlrqTjgZnjgovliY3jgavjgIHjg57jgqTjgq/jgajjgqvjg6Hjg6njga7oqK3lrprjgpLnorroqo3jgZfjgabjgY/jgaDjgZXjgYTjgILjgb7jgZrpjLLnlLvjg7vpjLLpn7PjgpLmlbDnp5LplpPlrp/mlr3jgZfjgabjgY/jgaDjgZXjgYTjgILntprjgYTjgabjgZ3jgozjgpLlho3nlJ/jgZfjgIHpjLLnlLvjg7vpjLLpn7PnirbmhYvjgYzpganmraPjgafjgYLjgovjgZPjgajjgpLjgZTnorroqo3jgY/jgaDjgZXjgYTjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU5IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+5Lul6ZmN44GT44Gu44OG44K544OI55S76Z2i44KS6KGo56S644GX44Gq44GEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPuOCreODo+ODs+OCu+ODqzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjEiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT7kvJrorbDjgpLplovlp4vjgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYyIiBuYW1lPSJlZGl0IHZpZGVvIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+5Lul6ZmN6KGo56S644GX44Gq44GEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MyIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPumMsueUuzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjQiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT7lho3nlJ88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY1IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+6Z+z5aOw44O755S75YOP44KS6YCB5L+h44GZ44KL5LqI5a6a44GM54Sh44GE5aC05ZCI44Gv44OG44K544OI44KS55yB55Wl44GZ44KL44GT44Go44GM44Gn44GN44G+44GZ44CC6Z+z5aOw44O755S75YOP44KS5Yip55So44GX44Gq44GE5Y+C5Yqg6ICF44KC44CB44Ob44Ov44Kk44OI44Oc44O844OJ44CB44OH44K544Kv44OI44OD44OX5YWx5pyJ44CB44OB44Oj44OD44OI44KS5Yip55So44GZ44KL44GT44Go44Gv5Y+v6IO944Gn44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NiIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPuWBnOatojwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjciIG5hbWU9Ijc2NyI+CisgICAgPHZhbHVlPuODrOODmeODq+ODu+ODoeODvOOCvzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjgiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT7jgIzplovlp4vjgI3jgpLmirzjgZfjgabjgY/jgaDjgZXjgYQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY5IiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+5Lya6K2w44KS6ZaL5aeL44GZ44KLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MCIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPuOCpOODmeODs+ODiOOCkumWi+Wni+OBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzEiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT7kvJrorbDlrqTjgpLpgbjmip7jgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzcyIiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+6Kit5a6a44KS56K66KqN44GZ44KLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MyIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPuS8muitsOOCkumWi+Wni+OBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzQiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT7kvb/nlKjmlrnms5U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NSIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPumMsueUuy/pjLLpn7Plk4Hos6rjga7jg4bjgrnjg4g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc2IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+5YWl5a6k44Gu6Zqb44Gr6Z+z5aOwL+ODk+ODh+OCquOBruODhuOCueODiOeUu+mdouOCkuihqOekuuOBl+OBquOBhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzciIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT7jg5Hjg5bjg6rjg4Pjgq/kvJrorbDlrqQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc4IiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+44OR44OW44Oq44OD44Kv5Lya6K2w5a6k44Gv44Gg44KM44Gn44KC44Ki44Kv44K744K544GZ44KL44GT44Go44GM44Gn44GN44G+44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3OSIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPuODl+ODqeOCpOODmeODvOODiOS8muitsOWupDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODAiIG5hbWU9IlByaXZhdGUgUm9vbXMiPgorICAgIDx2YWx1ZT7jg5fjg6njgqTjg5njg7zjg4jkvJrorbDlrqTjga/jgIHlkIzjgZjntYTnuZTjgavmiYDlsZ7jgZnjgovlj4LliqDogIXjga7jgb/lhaXlrqTjgZnjgovjgZPjgajjgYzjgafjgY3jgb7jgZnjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgxIiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+56eB44Gu5Lya6K2w5a6kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MiIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPuOBk+OBruOCu+OCr+OCt+ODp+ODs+OBruS8muitsOWupOOBr+WAi+S6uuS9v+eUqO+8iOOBvuOBn+OBr+WwkeS6uuaVsOS9v+eUqO+8ieebrueahOOBp+OBmeOAgumWi+Wni++9pee1guS6huaZguWIu+OCkuaMh+WumuOBl+OBpuS9nOaIkOOBl+OBvuOBmeOAguS8muitsOWupOOBjOacieWKueOBp+OBguOCi+acn+mWk+OAgeOCq+ODrOODs+ODgOODvOOBq+ihqOekuuOBleOCjOOBvuOBmeOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODMiIG5hbWU9InJlc3RyaWN0ZWQgcm9vbSI+CisgICAgPHZhbHVlPuWPuOS8muiAheS7peWkluOBruaWueOBr+Wun+ihjOOBp+OBjeOBvuOBm+OCk+OAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODQiIG5hbWU9Im1lbnUgb3B0aW9uIj4KKyAgICA8dmFsdWU+5Y+45Lya6ICF5qip6ZmQ44KS6Kix5Y+vPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NSIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT7jg5vjg6/jgqTjg4jjg5zjg7zjg4njgbjjga7jgqLjgq/jgrvjgrnjgpLoqLHlj688L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg2IiBuYW1lPSJtZW51IG9wdGlvbiI+CisgICAgPHZhbHVlPuOCq+ODoeODqeODu+ODnuOCpOOCr+OBuOOBruOCouOCr+OCu+OCueOCkuioseWPrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODciIG5hbWU9ImVycm9yIG1lc3NhZ2Ugc29hcCBzZWN1cmUgbG9naW4iPgorICAgIDx2YWx1ZT5UaGlzIFNlc3Npb24gSGFzaCB3YXMgYWxyZWFkeSB1c2VkLiBZb3UgY2Fubm90IHVzZSBpdCB0d2ljZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg4IiBuYW1lPSJkYXNoYm9hcmQgYnV0dG9uIj4KKyAgICA8dmFsdWU+6ZaL5aeLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4OSIgbmFtZT0iZXhpdCBjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+57WC5LqGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5MCIgbmFtZT0iY29uZmVyZW5jZSB2aWV3Ij4KKyAgICA8dmFsdWU+57WC5LqG44GX44Gm44KI44KN44GX44GE44Gn44GZ44GLPyDntYLkuobjgZfjgabjgoLjgIHjgqLjg4Pjg5fjg63jg7zjg4nmuIjjgb/jga7jg4njgq3jg6Xjg6Hjg7Pjg4jjgIHjg5vjg6/jgqTjg4jjg5zjg7zjg4njgIHjg4Hjg6Pjg4Pjg4jlhoXlrrnjga/mtojljrvjgZXjgozjgZrjgavmrovjgovjgZPjgajjgavjgZTms6jmhI/jgY/jgaDjgZXjgYTjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkxIiBuYW1lPSJjb25mZXJlbmNlIHZpZXciPgorICAgIDx2YWx1ZT7ntYLkuobnorroqo08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkyIiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT7kvJrorbDlrqQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkzIiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT7kvJrorbDlrqTjgpLpgbjmip7jgZfjgabjgY/jgaDjgZXjgYTjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk0IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPuacquS/neWtmOOBruOCpOODmeODs+ODiOOBjOOBguOCiuOBvuOBmeOAguS/neWtmOOBmeOCi+OBi+OAgeWJiumZpOOBl+OBpuOBj+OBoOOBleOBhOOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTUiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+5pyA5L2O5LiA5Lq65Lul5LiK44Gu5Y+C5Yqg6ICF44KS6YG45oqe44GX44Gm44GP44Gg44GV44GEITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTYiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+44GT44Gu44Kk44OZ44Oz44OI44KS5YmK6Zmk44GX44Gm44KI44KN44GX44GE44Gn44GZ44GLPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTciIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+6K2m5ZGKPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5OCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT7jgqTjg5njg7Pjg4jjgpLov73liqDjgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk5IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPuaXpeihqOekujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDAiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+6YCx6KGo56S6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT7mnIjooajnpLo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAyIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPuamguimgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDMiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+5Y+C5Yqg6ICFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FICjjgqrjg7zjg5fjg7Pjg7vjg5/jg7zjg4bjgqPjg7PjgrDjgrkpIOOCpuOCp+ODluS8muitsOODl+ODqeODg+ODiOODm+ODvOODoDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDUiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPuS8muitsOOCkuS6iOe0hOOBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDYiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT7jgqTjg5njg7Pjg4jjgpLjgqvjg6zjg7Pjg4Djg7zjgavov73liqDjgZfjgabkvJrorbDjgpLoqK3lrprjgZfjgb7jgZnjgILjgqTjg5njg7Pjg4jjga7jgZ3jgozjgZ7jgozjgavjgaTjgYTjgabkvJrorbDlrqTjgYzoh6rli5XnlJ/miJDjgZXjgozjgb7jgZnjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA3IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+44GK5Zuw44KK44Gn44GZ44GLPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDgiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT7luK/ln5/liLbpmZDku5jkvJrorbDlrqQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA5IiBuYW1lPSJsemNhbGVuZGVyIj4KKyAgICA8dmFsdWU+5qSc57SiPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMCIgbmFtZT0ibHpjYWxlbmRlciI+CisgICAgPHZhbHVlPui/veWKoDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTEiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBVc2VyIHNlbGVjdGVkLiBQbGVhc2Ugc2VsZWN0IGFuIGl0ZW0gZnJvbSB0aGUgbGlzdCBmaXJzdCBhbmQgdGhlbiBoaXQgYWRkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTIiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT7lj4LliqDogIXjgpLov73liqA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEzIiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+5L+d5a2YPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxNCIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPuWJiumZpDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTUiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT7jgqTjg5njg7Pjg4joqbPntLA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE2IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+44OH44OV44Kp44Or44OI5Y+45Lya6ICFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxNyIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPueJueaoqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTgiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTkiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT7lp5PlkI08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIwIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+ReODoeODvOODqzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjEiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT7jg4fjg5Xjgqnjg6vjg4jlj7jkvJrogIXjgpLov73liqA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIyIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+44Gv54m55qip5Y+45Lya6ICF44Gn44GZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyMyIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPuOBk+OBrumgheebruOBjOmBuOaKnuOBleOCjOOBpuOBhOOCi+WgtOWQiOOAgeWPuOS8mumAsuihjOaoqeS/neaMgeiAhSjjgb7jgZ/jga/nrqHnkIbogIUp44Gv5YWl5a6k44Gr44KI44Gj44Gm6Ieq5YuV55qE44Gr5Y+45Lya6ICF5qip6ZmQ44KS5LiO44GI44KJ44KM44G+44GZ44CC5Lya6K2w44Gu6Zqb44CB54m55a6a44Gu44Om44O844K244KS5Y+45Lya6ICF44Gr5oyH5a6a44GX44Gf44GE5aC05ZCI44Gv44CB44GT44Gu6aCF55uu44KS6YG45oqe44GX44Gq44GE44Gn44GP44Gg44GV44GE44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPueJueWIpeWPuOS8mumAsuihjOaoqeS/neaMgeiAheOBr+OAgeWFpeWupOOBq+OCiOOBo+OBpuiHquWLleeahOOBq+WPuOS8muiAheaoqemZkOOCkuS4juOBiOOCieOCjOOBvuOBmSjku5bjga7jg6bjg7zjgrbjgYzjgZPjga7jg6bjg7zjgrbjgYvjgonlj7jkvJrogIXmqKnpmZDjgpLlparjgYTlj5bjgovjgZPjgajjga/jgafjgY3jgb7jgZvjgpMp44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPuOBk+OBruODpuODvOOCtuOBq+eJueWIpeWPuOS8mumAsuihjOaoqeOCkuS7mOS4juOBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjYiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT7jgZPjga7jg6bjg7zjgrbjga7nibnliKXlj7jkvJrpgLLooYzmqKnjgpLliaXlparjgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjgiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT7ntYTnuZTjgpLkvJrorbDlrqTjgavnmbvpjLLjgZnjgovjgajjgIHnmbvpjLLjgZXjgozjgZ/ntYTnuZTjgavmiYDlsZ7jgZnjgovjg6bjg7zjgrbjga7jgb/jgYzjgZ3jga7kvJrorbDlrqTjgavlhaXlrqTjgZnjgovjgZPjgajjgYzjgafjgY3jgb7jgZnjgIIo44CM5YWs6ZaL44CN44GM6YG45oqe44GV44KM44Gm44GE44Gq44GE5aC05ZCIKOOBpOOBvuOCiumdnuWFrOmWi+OBruWgtOWQiCnjga7jgb/pgannlKgpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyOSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPuWPuOS8mumAsuihjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzAiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT7liLbpmZA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODMxIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+57WE57mUPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzMiIgbmFtZT0iY29uZmlybSBhY3Rpb24iPgorICAgIDx2YWx1ZT7jgojjgo3jgZfjgYTjgafjgZnjgYs/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzMyIgbmFtZT0iY29uZmlybSBkZWxldGUiPgorICAgIDx2YWx1ZT7pgbjmip7jgZXjgozjgZ/poIXnm67jgpLliYrpmaTjgZfjgabjgojjgo3jgZfjgYTjgafjgZnjgYvvvJ/lpInmm7TjgZfjgZ/lhoXlrrnjga/jgIHkv53lrZjjgZnjgovlv4XopoHjgYzjgYLjgorjgb7jgZnjgILntprjgYTjgabkv53lrZjjg5zjgr/jg7PjgpLmirzjgZfjgabjgY/jgaDjgZXjgYTjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM0IiBuYW1lPSJ1c2VyIGNob29zZSBlcnJvciI+CisgICAgPHZhbHVlPuODpuODvOOCtuOBjOmBuOaKnuOBleOCjOOBpuOBhOOBvuOBm+OCk+OAgui/veWKoOOBmeOCi+ODpuODvOOCtuOCkumBuOaKnuOBl+OBpuOBj+OBoOOBleOBhOOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzUiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT7lj7jkvJrogIXjgpLov73liqDjgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM2IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+44GT44Gu44Om44O844K244Gr54m55Yil5Y+45Lya6YCy6KGM5qip44KS5LuY5LiO44GX44G+44GZ44GL77yf54m55Yil5Y+45Lya6YCy6KGM5qip5L+d5oyB6ICF44Gv44CB5Lya6K2w5a6k44Gu5Y+45Lya6ICF44Gr44Gq44KL44GT44Go44GM44Gn44GN44G+44GZKOS7luOBruODpuODvOOCtuOBr+eJueWIpeWPuOS8mumAsuihjOaoqeS/neaMgeiAheOBi+OCieWPuOS8muaoqemZkOOCkuWlquOBhOWPluOCi+OBk+OBqOOBr+OBp+OBjeOBvuOBm+OCkynjgILlpInmm7TjgZfjgZ/lhoXlrrnjga/jgIHkv53lrZjjgZnjgovlv4XopoHjgYzjgYLjgorjgb7jgZnjgILntprjgYTjgabkv53lrZjjg5zjgr/jg7PjgpLmirzjgZfjgabjgY/jgaDjgZXjgYTjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+44GT44Gu44Om44O844K244Gu54m55Yil5Y+45Lya6YCy6KGM5qip44KS5Yml5aWq44GX44G+44GZ44GL77yf5aSJ5pu044GX44Gf5YaF5a6544Gv44CB5L+d5a2Y44GZ44KL5b+F6KaB44GM44GC44KK44G+44GZ44CC57aa44GE44Gm5L+d5a2Y44Oc44K/44Oz44KS5oq844GX44Gm44GP44Gg44GV44GE44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzOCIgbmFtZT0ic3VwZXIgbW9kZXJhdG9yIj4KKyAgICA8dmFsdWU+44GT44Gu5Y+C5Yqg6ICF44Gv44CB54m55Yil5Y+45Lya6YCy6KGM5qip44KS5LuY5LiO44GV44KM44Gm44GE44G+44GZ44CC44GC44Gq44Gf44Gv44CB54m55Yil5Y+45Lya6YCy6KGM5qip5L+d5oyB6ICF44GL44KJ5b2T6Kmy5qip5Yip44KS5Yml5aWq44GZ44KL44GT44Go44Gv44Gn44GN44G+44Gb44KT44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzOSIgbmFtZT0iY29uZmlybSBkZWxldGUiPgorICAgIDx2YWx1ZT7jgZPjga7jg5XjgqHjgqTjg6sv44OV44Kp44Or44OA44KS5YmK6Zmk44GX44Gm44KI44KN44GX44GE44Gn44GZ44GL77yfPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0MCIgbmFtZT0iY29uZmlybSBkZWxldGUiPgorICAgIDx2YWx1ZT7jg5XjgqHjgqTjg6sv44OV44Kp44Or44OA44KS5YmK6Zmk44GX44G+44GZ44GL77yfPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0MSIgbmFtZT0ic2FsdXRhdGlvbiI+CisgICAgPHZhbHVlPk1ycy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQyIiBuYW1lPSJzYWx1dGF0aW9uIj4KKyAgICA8dmFsdWU+RHIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0MyIgbmFtZT0icHJvcGVydHkgcGFuZWwgd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPuODl+ODreODkeODhuOCozwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDQiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT7jg5Pjg6Xjg7zjgqLkuIrjgafjg57jgqbjgrnjg7vjg53jgqTjg7Pjgr/jgpLooajnpLrjgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ1IiBuYW1lPSJwdWJsaXNoIG9wdGlvbiI+CisgICAgPHZhbHVlPlNJUOOCouODl+ODrOODg+ODiOOBqOmfs+WjsOOCkuWFseacieOBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDYiIG5hbWU9InB1Ymxpc2ggb3B0aW9uIj4KKyAgICA8dmFsdWU+U0lQ44Go6Z+z5aOw44KS44CBRmxhc2jjgajnlLvlg4/jgpLlhbHmnInjgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ3IiBuYW1lPSJkb2N1bWVudCBwYW5lbCI+CisgICAgPHZhbHVlPueUu+mdouOCteOCpOOCuuOBq+WQiOOCj+OBm+OCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDgiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPuODh+OCueOCr+ODiOODg+ODl+OCkuihqOekuuOBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDkiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPuODpuODvOOCtuOAjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTAiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPuOAjeOBleOCk+OBjOODh+OCueOCr+ODiOODg+ODl+WFseacieOCkuimgeaxguOBl+OBpuOBvuOBmeOAguihqOekuuOBl+OBvuOBmeOBiz88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUxIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT7plonjgZjjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUyIiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+44K644O844OgPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MyIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPueUu+mdouOBjOWFseacieODpuODvOOCtuOBq+OCiOOBo+OBpumWieOBmOOCieOCjOOBvuOBl+OBnyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU0IiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+5LiA5pmC5YGc5q2iPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1NSIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPuaWsOimj+eUu+mdouWFseaciTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTYiIG5hbWU9InByZXNlbnRlciBtaW5pIGljb24iPgorICAgIDx2YWx1ZT7mnIDlsI/ljJY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU3IiBuYW1lPSJwcmVzZW50ZXIgbWluaSBpY29uIj4KKyAgICA8dmFsdWU+5pyA5aSn5YyWPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1OCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+44OT44OH44KqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1OSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+44K/44Kk44Og44Op44Kk44OzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+56eB44Gu6Yyy55S7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+44OR44OW44Oq44OD44Kv6Yyy55S7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+5YKZ6ICDPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+5ZCN56ewPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+5YWo6ZW3PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+5pel5pmCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+5L2c5oiQ6ICFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+5YaN55SfPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2OCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+44Oh44Kk44OzIC0g44OT44OH44KqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2OSIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+6Yyy55S7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3MCIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+44OH44K544Kv44OI44OD44OX5YWx5pyJ44Go5ZCM5pmC44Gr6Yyy55S744KC44Gn44GN44G+44GZ44CC44OH44K544Kv44OI44OD44OX44KS5YWs6ZaL44GZ44KL44Gf44KB44Gr44Gv44CM5YWx5pyJ44KS6ZaL5aeL44GZ44KL44CN44Oc44K/44Oz44KS5oq844GX44Gm44GP44Gg44GV44GE44CC6Yyy55S744KS44GZ44KLKOWFseacieeEoeOBlynjgZ/jgoHjgavjga/jgIzpjLLnlLvjgpLplovlp4vjgZnjgovjgI3jgpLjgq/jg6rjg4Pjgq/jgZfjgabjgY/jgaDjgZXjgYTjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcxIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT7pjLLnlLvjgpLplovlp4vjgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcyIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT7pjLLnlLvjgpLlgZzmraLjgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODczIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5GTFblvaLlvI/jgafjg4Djgqbjg7Pjg63jg7zjg4njgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc0IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT7kvJrorbDlrqQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc1IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT7lho3nlJ88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT7lgZzmraI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc3IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Vc2VyIGhhcyBtaWNyb3Bob25lIG9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3OCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT7lhbHmnInjgpLlgZzmraLjgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc5IiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPuizqueWkeOCkuioseWPr+OBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODAiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+6LOq55aR44KS6Kix5Y+v44GZ44KL44Go44CB44CM6LOq5ZWP44GM44GC44KK44G+44GZ44CN44Oc44K/44Oz44GM6KGo56S644GV44KM44G+44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MSIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT7mqKnpmZA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgyIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5BVknlvaLlvI/jgafjg4Djgqbjg7Pjg63jg7zjg4njgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgzIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5GTFY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg0IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5BVkk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg1IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5SYXcg44K544Kv44Oq44O844Oz44O744OT44OH44KqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+6Z+z5aOw44Gu44G/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+VGhlIGhhdmUgYmVlbiBlcnJvcnMgd2hpbGUgcHJvY2Vzc2luZyB0aGUgUmVjb3JkaW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODgiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPumMsueUu+imluiBtOOBrua6luWCmeOBjOOBvuOBoOaVtOOBo+OBpuOBhOOBvuOBm+OCk+OAguaVsOWIhuW+jOOBq+WGjeWun+ihjOOBl+OBpuOBj+OBoOOBleOBhOOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODkiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPuODreOCsDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkwIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT7kvZzmiJDogIXjg6Hjg4Pjgrvjg7zjgrg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkxIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5PazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTIiIG5hbWU9InNpcCBhcHBsZXQiPgorICAgIDx2YWx1ZT5TSVDjgqLjg5fjg6zjg4Pjg4jjga7mupblgpnjgYzlrozkuobjgZfjgabjgYTjgb7jgZvjgpPjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkzIiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+U0lQIOOCouOCq+OCpuODs+ODiOioreWumjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTQiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT7jg6bjg7zjgrbmr47jgatTSVDjgpLoqK3lrprjgZfjgb7jgZnjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk1IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+U0lQIOODpuODvOOCtjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTYiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TaXAg44OR44K544Ov44O844OJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NyIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNpcCDoqo3oqLxJRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTgiIG5hbWU9InNpcCBzdGF0dXMgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNJUOOCsuODvOODiOOCpuOCp+OCpOOBq+ODreOCsOOCpOODs+OBp+OBjeOBvuOBm+OCk+OBp+OBl+OBn+OAglNJUOODl+ODreODkOOCpOODgOOBruiqjeiovOaDheWgseOAgeOBiuOCiOOBs+WQhOODpuODvOOCtuOBrlNJUOOCouOCq+OCpuODs+ODiOaDheWgseOCkueiuuiqjeOBl+OBpuOBj+OBoOOBleOBhOOAgueuoeeQhuiAheOBp+ODreOCsOOCpOODs+OBl+OBpuOAgeani+aIkOOCkueiuuiqjeOBl+OBpuOBj+OBoOOBleOBhOOAgijkuIDoiKzjg6bjg7zjgrbjga/jg5bjg63jg4Pjgq/jgZXjgozjgb7jgZkpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5OSIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U0lQ44Ky44O844OI44Km44Kn44Kk44Gr44Ot44Kw44Kk44Oz44Gn44GN44G+44Gb44KT44Gn44GX44Gf44CC44K144O844OT44K5566h55CG6ICF44Gr44GK5ZWP44GE5ZCI44KP44Gb44GP44Gg44GV44GE44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwMCIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U0lQ44Ky44O844OI44Km44Kn44Kk44Gr44Ot44Kw44Kk44Oz44GX44Gm44GE44G+44GZIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDEiIG5hbWU9InNpcCBzdGF0dXMgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNJUOOCsuODvOODiOOCpuOCp+OCpOOBq+ODreOCsOOCpOODs+OBl+OBpuOBhOOBvuOBmSAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAyIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT7jg63jgrDjgpLooajnpLrjgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAzIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT7pjLLnlLvntYLkuobmmYLjga7lpInmj5vlh6bnkIbjga7jg63jgrA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA0IiBuYW1lPSJzaXAgbG9naW4iPgorICAgIDx2YWx1ZT5TSVAt44Ki44OX44Os44OD44OI44O744Oh44OD44K744O844K4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwNSIgbmFtZT0ic2lwIGxvZ2luIj4KKyAgICA8dmFsdWU+U0lQ44Ki44OX44Os44OD44OI44Gu5rqW5YKZ44GM5a6M5LqG44GX44Gm44GE44G+44Gb44KT44CC44Ki44OX44Os44OD44OI44KS5om/6KqN44GX44GmT0vjg5zjgr/jg7PjgpLmirzjgZfjgabjgY/jgaDjgZXjgYTjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA2IiBuYW1lPSJtb2RlcmF0b3IgcG9wIHVwIj4KKyAgICA8dmFsdWU+5Y+45Lya6ICF44Gr44Gq44KLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwNyIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPuOCouODneOCpOODs+ODiOODoeODs+ODiOOBruWkieabtOOCkuS/neWtmOOBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDgiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT7jgqLjg53jgqTjg7Pjg4jjg6Hjg7Pjg4jjgYzlpInmm7TjgZXjgozjgb7jgZfjgZ/jgILlpInmm7TjgpLkv53lrZjjgZfjgb7jgZnjgYvvvJ88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA5IiBuYW1lPSJmbHYgcmVjb3JkZXIgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPuS7luOBrumMsueUu+OCkuimi+OCi+OBn+OCgeOBq+OBr+OAgSRBUFBfTkFNReOBq+ODreOCsOOCpOODs+OBmeOCi+W/heimgeOBjOOBguOCiuOBvuOBmeOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTAiIG5hbWU9ImludGVydmlldyB2aWRlbyBwb2QiPgorICAgIDx2YWx1ZT7jg5Pjg4fjgqrooajnpLrjgZnjgovjg6bjg7zjgrbjgpLpgbjmip48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTExIiBuYW1lPSJpbnRlcnZpZXcgdmlkZW8gY2hvb3NlIHVzZXIiPgorICAgIDx2YWx1ZT5BdmFpbGFibGUgVXNlcnMgZm9yIHRoaXMgUG9kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMiIgbmFtZT0iaW50ZXJ2aWV3IGluZm8iPgorICAgIDx2YWx1ZT7jgYLjgarjgZ/jga/jgZPjga7jgqTjg7Pjgr/jg5Pjg6Xjg7zjga7lj7jkvJrogIXjgafjgZnjgILjgYLjgarjgZ/jga/jgIHoqbHogIXjgpLpgbjmip7jgZfjgZ/jgorjgIHpjLLnlLvjg7vpjLLpn7Pjga7plovlp4vjg7vlgZzmraLjgpLjgZnjgovjgZPjgajjgYzjgafjgY3jgb7jgZnjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTEzIiBuYW1lPSJpbnRlcnZpZXcgYnV0dG9uIHJlY29yZGluZyI+CisgICAgPHZhbHVlPumMsueUu+ODu+mMsumfs+OCkumWi+WnizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTQiIG5hbWU9ImludGVydmlldyBidXR0b24gcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+6Yyy55S744O76Yyy6Z+z44KS5YGc5q2iPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxNSIgbmFtZT0iaW50ZXJ2aWV3IGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7jgqTjg7Pjgr/jg5Pjg6Xjg7zpjLLnlLvjga/ml6Ljgavplovlp4vjgZXjgozjgabjgYTjgb7jgZnjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE2IiBuYW1lPSJpbnRlcnZpZXcgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPuOCpOODs+OCv+ODk+ODpeODvOmMsueUu+OBr+aXouOBq+WBnOatouOBl+OBpuOBhOOCi+OBi+OAgeOBvuOBoOmWi+Wni+OBleOCjOOBpuOBhOOBvuOBm+OCk+OAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTciIG5hbWU9ImludGVydmlldyByZWNvcmRpbmcgbWVzc2FnZSI+CisgICAgPHZhbHVlPuOCpOODs+OCv+ODk+ODpeODvOmMsueUu+OBr+aXouOBq+mWi+Wni+OBleOCjOOBpuOBhOOBvuOBmeOAgiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE4IiBuYW1lPSJpbnRlcnZpZXcgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPuOCreODo+ODs+OCu+ODqzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTkiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+44Kk44Oz44K/44OT44Ol44O857WC5LqG5pmC44Gu5aSJ5o+b5Yem55CG44Gr44Gv44CB44Kk44Oz44K/44OT44Ol44O877yR5YiG44GC44Gf44KK77yV5YiG44KS6KaB44GX44G+44GZ44CC54++5Zyo44Gu5Yem55CG44Gu6YCy5o2X44GvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjAiIG5hbWU9InNpcCBjcmVhdGlvbiI+CisgICAgPHZhbHVlPlNJUOODh+ODvOOCv+OCkueUn+aIkOOBmeOCi+OBn+OCgeOBq+OBr+OAgeODkeOCueODr+ODvOODieOCkuWGjeWFpeWKm+OBl+OBpuOBj+OBoOOBleOBhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjEiIG5hbWU9InNpcCBjcmVhdGlvbiI+CisgICAgPHZhbHVlPlNJUOODh+ODvOOCv+OCkuWGjeeUn+aIkOOBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjIiIG5hbWU9ImZpbGVleHBsb3JlciI+CisgICAgPHZhbHVlPuOBk+OBruODleOCoeOCpOODqy/jg5Xjgqnjg6vjg4DjgpLjgIHjgZ3jgozoh6rouqvjga7jgrXjg5bjg5Xjgqnjg6vjg4Djgavnp7vli5XjgZnjgovjgZPjgajjga/jgafjgY3jgb7jgZvjgpPjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIzIiBuYW1lPSJmaWxlIGV4cGxvcmVyICI+CisgICAgPHZhbHVlPuODm+ODvOODoOODu+ODieODqeOCpOODluS9v+eUqOmHjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjQiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7jg5Hjg5bjg6rjg4Pjgq/jg7vjg4njg6njgqTjg5bkvb/nlKjph488L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI1IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+TGljZW5zZSBTZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjYiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT7lkITjg6bjg7zjgrbjgavjg6njgqTjgrvjg7PjgrnjgpLku5jkuI7jgZnjgovpmpvjgIHkvb/nlKjmnJ/pmZDjgpLoqK3lrprjgZnjgovjgYvjgIHmnIDlpKfkvb/nlKjph4/liLbpmZAo5YiG44Gn5oyH5a6aKeOCkuioreWumuOBmeOCi+OBk+OBqOOBjOOBp+OBjeOBvuOBmeOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjciIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT7jg6njgqTjgrvjg7PjgrnjgpLmpJzoqLzjgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI4IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+5L2/44GE5pS+6aGM44Kz44O844K5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyOSIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPuacieWKueacn+mZkDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzAiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT7mrovjgornp5LmlbA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMxIiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+5ZCI6KiI5pmC6ZaTPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+44Op44Kk44K744Oz44K544Gu5pyJ5Yq55pyf6ZmQ44GM5YiH44KM44G+44GX44Gf44CC5paw44Gf44Gr44Op44Kk44K744Oz44K544KS6LO85YWl44GX44Gm44GP44Gg44GV44GE44CCKOWIhuWNmOS9jeODqeOCpOOCu+ODs+OCueOAgeOBvuOBn+OBr+OAjOS9v+OBhOaUvumhjOOCs+ODvOOCueOAjeODqeOCpOOCu+ODs+OCueOBjOOBguOCiuOBvuOBmSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMzIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT7os7zlhaXjgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM0IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5UaW1lIExlZnQgb24geW91ciBhY2NvdW50OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzUiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPuODpuODvOOCtuODu+ODqeOCpOOCu+ODs+OCueaDheWgsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzYiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPuaDheWgsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzciIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPumWieOBmOOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzgiIG5hbWU9ImxpY2Vuc2UtaW5mbyI+CisgICAgPHZhbHVlPuODqeOCpOOCu+ODs+OCueOBruacieWKueacn+mZkOOBjOWIh+OCjOOBvuOBl+OBn+OAguaWsOOBn+OBq+ODqeOCpOOCu+ODs+OCueOCkuizvOWFpeOBl+OBpuOBj+OBoOOBleOBhOOAgijliIbljZjkvY3jg6njgqTjgrvjg7PjgrnjgIHjgb7jgZ/jga/jgIzkvb/jgYTmlL7poYzjgrPjg7zjgrnjgI3jg6njgqTjgrvjg7PjgrnjgYzjgYLjgorjgb7jgZkpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzOSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+44Op44Kk44K744Oz44K56Kit5a6aPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91IGNhbiBlaXRoZXIgYnV5IG1pbnV0ZXMgdG8gbWFrZSBXZWItQ29uZmVyZW5jaW5nIChQYXktcGVyLW1pbnV0ZSkuJmx0O2JyLyZndDsmbHQ7YnIvJmd0OyBPciB5b3UgYnV5IGEgdm9sdW1lIGZsYXRyYXRlIGFib3V0IDMtMTIgbW9udGhzLiZsdDtici8mZ3Q7Jmx0O2JyLyZndDtTZW5kaW5nIGludml0YXRpb25zIChkaXJlY3QgbGlua3MgaW50byBDb25mZXJlbmNlIFJvb21zKSBvciBjcmVhdGluZyBjb25mZXJlbmNlIFJvb21zIHZpYSB0aGUgQ2FsZW5kYXIgd2l0aCBleHRlcm5hbCBVc2VycyBpcyBvbmx5IGFsbG93ZWQgd2l0aCBhIHZvbHVtZSBmbGF0cmF0ZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQxIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5CdXkgNjAgTWludXRlcyA5LDk5IEVVUk8gKDE2IENlbnQgcGVyIE1pbnV0ZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQyIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5CdXkgNSBob3VycyAxOSw5OSBFVVJPICg2IENlbnQgcGVyIG1pbnV0ZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQzIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5CdXkgMyBtb250aCBmb3IgMjksOTkgRVVSTyAoOSw5OSBFdXJvIHBlciBNb250aCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ0IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5CdXkgNiBtb250aCBmb3IgMzksOTkgRVVSTyAoNiw2NiBFdXJvIHBlciBtb250aCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ1IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5QYXktcGVyLW1pbnV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDYiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlZvbHVtZSBmbGF0cmF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDciIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdSBoYXZlIHVubGltaXRlZCBMaWNlbnNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0OCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91ciBsaWNlbnNlIHdpbGwgZXhwaXJlIGF0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDkiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdSBib3VnaHQgUGF5LXBlci1taW51dGUuIFlvdSBzdGlsbCBoYXZlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTAiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSBuZXcgY3JlZGl0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTEiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPldhbnQgeW91ciBvd24gU2VydmVyPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTIiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdSB3b3VsZCBsaWtlIHRvIGhhdmUgJEFQUF9OQU1FIGluc3RhbGxlZCBvbiB5b3VyIFNlcnZlciBvciBpbnRlZ3JhdGVkIGludG8geW91ciBNb29kbGUsIFN1Z2FyQ1JNLCBXZWJzaXRlIG9yIEludHJhbmV0PyBQcml6aW5ncyBzdGFydCBhdCA1MDAgRXVybyBwZXIgSW5zdGFsbGF0aW9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTMiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPk9yIHNlbmQgdXMgYSBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1NCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QW5zd2VyIHRvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTUiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPk1lc3NhZ2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1NiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+U2VuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTciIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkNsaWNrIGhlcmUgdG8gZ2V0IGNvbnRhY3QgSW5mbyBhbmQgUHJpemluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU4IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DcmVkaXQgQ2FyZCBEZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1OSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Rmlyc3RuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2MCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+TGFzdG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYxIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DcmVkaXQgQ2FyZCBUeXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2MiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+VklTQSBDYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2MyIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+TWFzdGVyQ2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjQiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkRpc2NvdmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2NSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+QW1lcmljYW4gRXhwcmVzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjYiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNyZWRpdCBDYXJkIE51bWJlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjciIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkV4cGlyYXRpb24gRGF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjgiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNhcmQgVmVyaWZpY2F0aW9uIE51bWJlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjkiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkJpbGxpbmcgQWRkcmVzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzAiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkFkZHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTcxIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTcyIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DaXR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MyIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q291bnRyeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzQiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlN0YXRlIChPbmx5IFVTKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzUiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlpJUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzYiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkFtb3VudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzciIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlN1Ym1pdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzgiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlN0ZXAgMTogJEFQUF9OQU1FIC0gUGF5bWVudCBGb3JtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3OSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+RU1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgwIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DbGljayAiQ2hlY2sgb3V0IHdpdGggUGF5cGFsIiB0byBwYXkuJmx0O2JyLyZndDsgUGF5cGFsIGFjY2VwdHMgVklTQSwgTWFzdGVyQ2FyZCwgRGlzY292ZXIgb3IgQW1lcmljYW4gRXhwcmVzcy4gJmx0O2JyLyZndDtJdCBkb2VzIG5vdCByZXF1aXJlIHRvIHNpZ24gdXAgd2l0aCBQYXlwYWwuICZsdDtici8mZ3Q7Q2l0aXplbnMgZnJvbSBHZXJtYW55IGNhbiBhbHNvIHBheSB3aXRoIGRpcmVjdCBkZWJpdCAoUGVyIExhc3RzY2hyaWZ0LUVpbnp1ZykuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+VGhhbmsgeW91IGZvciBidXlpbmcgJEFQUF9OQU1FLiAmbHQ7YnIvJmd0OyAmbHQ7YnIvJmd0OyBBcyBzb29uIGFzIHdlIHJlY2VpdmVkIHRoZSBwYXltZW50IHlvdXIgYWNjb3VudCB3aWxsIGJlIHVwZGF0ZWQuJmx0O2JyLyZndDsgWW91IHdpbGwgcmVjZWl2ZSBhbiBFTWFpbCB3aXRoIHlvdXIgaW52b2ljZSBhcyBQREYuJmx0O2JyLyZndDtZb3UgY2FuIGFsc28gY2hlY2sgY3VycmVudCBhbmQgcGFzdCB0cmFuc2FjdGlvbnMgaW4geW91ciBwcm9maWxlIHNldHRpbmdzLiZsdDtici8mZ3Q7Jmx0O2JyLyZndDsmbHQ7YnIvJmd0O1lvdSBjYW4gY2xvc2UgdGhpcyBicm93c2VyIHdpbmRvdy90YWIgbm93IGFuZCByZXR1cm4gdG8gJEFQUF9OQU1FLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODIiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlN1Ym1pdCBhbmQgQnV5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODMiIG5hbWU9InBheW1lbnQtZnJvbSI+CisgICAgPHZhbHVlPkNsaWNrIGFuZCBCdXkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4NCIgbmFtZT0icGF5bWVudC1mcm9tIj4KKyAgICA8dmFsdWU+U3RlcCAzOiAkQVBQX05BTUUgUGF5bWVudCAtIENoZWNrIG9yZGVyIGFuZCBidXkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4NSIgbmFtZT0icGF5bWVudC1mcm9tIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODYiIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPlBheW1lbnQgcmVjZWl2ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4NyIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+SGksPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4OCIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+V2UgaGF2ZSByZWNlaXZlZCB5b3VyIHBheW1lbnQuIFlvdXIgdXNlciBwcm9maWxlIGlzIHVwZGF0ZWQgbm93LiBTZWUgYXR0YWNoZWQgeW91ciBJbnZvaWNlLiBUaGUgSW52b2ljZSBhbmQgYWxsIHBhc3QgSW52b2ljZSBjYW4gYWxzbyBiZSBkb3dubG9hZGVkIGluIHlvdXIgdXNlciBwcm9maWxlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODkiIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPiRBUFBfTkFNReOBruOBlOWIqeeUqOOBguOCiuOBjOOBqOOBhuOBlOOBluOBhOOBvuOBl+OBnyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkwIiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5QYXltZW50IFJlY2VpdmVkICRBUFBfTkFNRSAtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MSIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPlBheW1lbnQgYW5kIFRyYW5zYWN0aW9uIFN0YXR1czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTIiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5UcmFuc2NhdGlvbiBIYXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MyIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPk1pbnV0ZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk0IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+TW9udGhzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NSIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPkVVUjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTYiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT7nirbmhYs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk3IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+57SN5ZOB5pu4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5OCIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTkiIG5hbWU9ImVycm9yLWxpY2Vuc2UtZmxhdCI+CisgICAgPHZhbHVlPllvdSBuZWVkIHRvIGJ1eSBhIHZvbHVtZSBmbGF0cmF0ZSB0byBiZSBhYmxlIHRvIHNlbmQgaW52aXRhdGlvbnMgb3IgY3JlYXRlIG1lZXRpbmdzIHZpYSB0aGUgY2FsZW5kYXIuIFdpdGggUGF5LXBlci1taW51dGUgaXQgaXMgb25seSBwb3NzaWJsZSBmb3IgeW91IHRvIGFjY2VzcyAkQVBQX05BTUUuIFlvdSBjYW5ub3QgYWxsb3cgM3RoIFBhcnRpZXMgdG8gYWNjZXNzIGEgTWVldGluZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwMCIgbmFtZT0iZXJyb3IgdXNlciI+CisgICAgPHZhbHVlPuOBk+OBruODoeODvOODq+ODu+OCouODieODrOOCueOBr+aXouOBq+S7luOBruODpuODvOOCtuOBq+S9v+eUqOOBleOCjOOBpuOBhOOBvuOBmeOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAxIiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+U0lQ6Kit5a6aPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDIiIG5hbWU9InJvb20tYWRtaW4iPgorICAgIDx2YWx1ZT7kvJrorbDnlarlj7fjgIHjgYrjgojjgbNQSU7jga/jgIFPcGVuWEcgUlBD44Ky44O844OI44Km44Kn44Kk57WM55Sx44Gn6Ieq5YuV55Sf5oiQ44GV44KM44G+44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDMiIG5hbWU9InJvb20tYWRtaW4iPgorICAgIDx2YWx1ZT5TSVDnlarlj7c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNCIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlBJTjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA1IiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+54++5Zyo6KGo56S65Lit44Gu44K544Op44Kk44OJ5YaF44Gu44Kq44OW44K444Kn44Kv44OI44Gg44GR44KS5raI5Y67ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA2IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+44K544OG44O844K/44K544O744OQ44O844Gr5YWl5Yqb44GV44KM44GfVVJM44Gu44G/44GM5Y+C5Yqg6ICF44Gr6YCB5LuY44GV44KM44G+44GZITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+44OB44O844Og44O744Or44O844Og44Gu5L2c5oiQIFtCcmVha291dCBzZXNzaW9uXTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+5L2c5oiQ44GZ44KL44OB44O844Og44O744Or44O844Og44Gr5omA5bGe44GV44Gb44KL44Om44O844K244KS6YG45oqe44GX44Gm44GP44Gg44GV44GE44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7jg6Hjg7Pjg5Djg7zjgpLmjIflrprjgZfjgabjgIHmlrDjgZfjgYTlsI/kvJrorbDlrqQgKOODgeODvOODoOODu+ODq+ODvOODoCkg44Gr56e75YuV44GZ44KL44GT44Go44GM44Gn44GN44G+44GZ44CC5oyH5a6a44GV44KM44Gf44Oh44Oz44OQ44O844Gv44CB5by35Yi255qE44Gr44OB44O844Og44O744Or44O844Og44Gr56e75YuV44GV44Gb44KJ44KM44KL44GL44CB44GC44KL44GE44Gv44CB6YCa55+l44Oh44OD44K744O844K444GM6YCB5L+h44GV44KM44G+44GZ44CC44G+44Gf44CB44OB44O844Og44O744Or44O844Og5a6k6ZW3KOeuoeeQhuiAhSnjgavjga/jgIHliqDjgYjjgabjgIHnrqHnkIbkuIvjga7jg4Hjg7zjg6Djg7vjg6vjg7zjg6DkuIDopqfjgYzooajnpLrjgZXjgozjgIHlrqTplbfjga/lv4XopoHjgavlv5zjgZjjgablkITjg4Hjg7zjg6Djg7vjg6vjg7zjg6Djga7lv5zmj7Tjgavpp4bjgZHjgaTjgZHjgovjgZPjgajjgYzjgafjgY3jgb7jgZnjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPuODpuODvOOCtuWQjTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDExIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+44Ot44Kw44Kk44OzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPuODpuODvOOCtuS4gOimpyDjg4Hjg7zjg6Djg7vjg6vjg7zjg6A6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7jg4Hjg7zjg6Djg7vjg6vjg7zjg6DjgpLkvZzmiJDjgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPuOCreODo+ODs+OCu+ODqzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+5pyA5L2O44Gy44Go44KK5Lul5LiK44Gu44Om44O844K244KS44OB44O844Og44Gr55m76Yyy44GZ44KL5b+F6KaB44GM44GC44KK44G+44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7jg6bjg7zjgrbjgpLjg4Hjg7zjg6Djgavov73liqDjgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPuODpuODvOOCtuOCkuODgeODvOODoOOBi+OCieWJiumZpOOBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+44Om44O844K244Gv44CB44OB44O844Og44O744Or44O844Og5a6k6ZW344Gn44GZ44CCKOWupOmVt+OBr+OAgeODgeODvOODoOODu+ODq+ODvOODoOOBrueuoeeQhuiAheOBp+OBmeOAguODoeODs+ODkOODvOOBr+OBhOOBpOOBp+OCguWupOmVt+OCkuODgeODvOODoOODu+ODq+ODvOODoOOBq+WRvOOBs+WHuuOBmeOBk+OBqOOBjOOBp+OBjeOBvuOBmSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPuODq+ODvOODoOODu+OCv+OCpOODlzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+44CM44Oh44Oz44OQ44O844KS5paw6KaP44OB44O844Og44O744Or44O844Og44Gr5by35Yi256e75YuV44GZ44KL44CN44KS6YG45oqe44GX44Gf5aC05ZCI44CB6YG45oqe44GV44KM44Gf44Oh44Oz44OQ44O844Gv44OB44O844Og44O744Or44O844Og44Gr6Ieq5YuV55qE44Gr56e75YuV44GX44G+44GZ44CC5by35Yi256e75YuV44KS6YG45oqe44GX44Gq44GL44Gj44Gf5aC05ZCI44CB5ZCE44Oh44Oz44OQ44O844Gr44Gv6YCa55+l44Oh44OD44K744O844K444GM6YCB5LuY44GV44KM44G+44GZ44CC6YCa55+l44Oh44OD44K744O844K444Gr44Gv44CB44OB44O844Og44O744Or44O844Og44GrJmx0O2kmZ3Q756e75YuV44GZ44KL44GT44Go44GM44Gn44GN44KLJmx0O2kmZ3Q744Oc44K/44Oz44GM44GC44KK44CB44Gd44KM44KS5oq844GZ44GT44Go44Gr44KI44Gj44Gm44OB44O844Og44O744Or44O844Og44Gr56e75YuV44GZ44KL44GT44Go44GM44Gn44GN44G+44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7jg4Hjg7zjg6Djg7vjg6vjg7zjg6DnrqHnkIY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPuOBguOBquOBn+OBr+OAgeOBguOBquOBn+OBjOeuoeeQhuOBmeOCi+ODgeODvOODoOODu+ODq+ODvOODoCjjgYLjgarjgZ/jgYzlrqTplbfjga7jg4Hjg7zjg6Djg7vjg6vjg7zjg6Ap44Gu6ZaT44KS6Ieq55Sx44Gr6KGM44GN5p2l44Gn44GN44G+44GZ44CC566h55CG5LiL44Gu44OB44O844Og44O744Oh44Oz44OQ44O844Gv44CB44GC44Gq44Gf44Gr44GE44Gk44Gn44KC5b+c5o+06KaB6KuL44Oh44OD44K744O844K444KS6YCB5L+h44GZ44KL44GT44Go44GM44Gn44GN44G+44GZ44CC44G+44Gf44CB44GC44Gq44Gf44Gv566h55CG44GZ44KL44OB44O844Og44O744Or44O844Og44KS44GE44Gk44Gn44KC6ZaJ6Y6W44GZ44KL44GT44Go44KC44Gn44GN44G+44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7jg6Hjg7Pjg5Djg7zjgpLmlrDopo/jg4Hjg7zjg6Djg7vjg6vjg7zjg6DjgavlvLfliLbnp7vli5XjgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPuODgeODvOODoOWQjTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+5L2c5oiQ5pel5pmCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+6L+95Yqg44GZ44KL44Oh44Oz44OQ44O8PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7jg6Hjg7Pjg5Djg7zjgpLov73liqDjgZnjgovjgavjga/jgIzvvIvjgI3jgpLjgIHliYrpmaTjgZnjgovjgavjga/jgIzvvI3jgI3jgpLmirzjgZfjgabjgY/jgaDjgZXjgYQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4xKSDjg4Hjg7zjg6Djg7vjg6vjg7zjg6Djga7oqK3lrpo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjIpIOODgeODvOODoOODu+ODoeODs+ODkOODvOOBrui/veWKoDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+44OB44O844Og44O744Or44O844Og5ZCNPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7jg4Hjg7zjg6Djg7vjg6vjg7zjg6A8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPuS8muitsOWupOWkieabtDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+44GT44Gu44OB44O844Og44O744Or44O844Og44Gr56e75YuV44GZ44KLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7jg4Hjg7zjg6Djg7vjg6vjg7zjg6DjgpLntYLkuobjgZfjgIHlhajjg6Hjg7Pjg5Djg7zjgpLjg63jgrDjgqLjgqbjg4jjgZXjgZvjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPuaWsOimj+ODgeODvOODoOODu+ODq+ODvOODoDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+5paw6KaP44OB44O844Og44O744Or44O844Og44GM44GC44KK44G+44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7jg4Hjg7zjg6Djg7vjg6vjg7zjg6Djgavnp7vli5U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPuODgeODvOODoOODu+ODq+ODvOODoOODu+OCouOCr+OCt+ODp+ODszwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+5YaN5bqm44GT44Gu44Km44Kj44Oz44OJ44Km44KS6ZaL44GP5aC05ZCI44Gv44CB44CM44Ki44Kv44K344On44Oz44CN44GL44KJ6KGM44Gj44Gm44GP44Gg44GV44GE44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7jg4Hjg7zjg6Djg7vjg6vjg7zjg6DlrqTplbfjgavjg6Hjg4Pjgrvjg7zjgrjjgpLpgIHkv6HjgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPuaWsOimj+ODgeODvOODoOODu+ODq+ODvOODoDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQ1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+5paw6KaP44OB44O844Og44O744Or44O844Og44GM44GC44KK44G+44GZ44CC44GC44Gq44Gf44Gv44CB44Gd44Gu44OB44O844Og44O744Or44O844Og44Gr5YWl5a6k44GZ44KL44GT44Go44GM44Gn44GN44G+44GZ44CC44OB44O844Og44O744Or44O844Og44Gv44CB6KiA44KP44Gw44CM44Ov44O844Kv44K344On44OD44OX44O744Kw44Or44O844OX44CN44Gu44KI44GG44Gq44KC44Gu44Gn44GZ44CC44GC44Gq44Gf44Gu44OB44O844Og44O744Or44O844Og44Gr44Gv44CB44CM56eB44Gu5Lya6K2w5a6k44CN44GL44KJ44KC5YWl5a6k44Gn44GN44G+44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7jg4Hjg7zjg6Djg7vjg6vjg7zjg6Djgavnp7vli5U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPuS9nOaIkOiAhTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0OCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPuODgeODvOODoOODu+ODq+ODvOODoOWQjTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0OSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPuOBk+OBruOCpuOCo+ODs+ODieOCpuOBr+OAgeOBguOBquOBn+OBrumAgOWupOW+jOOCgumWi+OBhOOBn+OBvuOBvuOBq+OBquOCiuOBvuOBmSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1MCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPuODgeODvOODoOODu+ODq+ODvOODoOOBruODoeODs+ODkOODvDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Mykg44GC44Gq44Gf44GM56e75YuV44GZ44KL44GT44Go44GM44Gn44GN44KL44CB44OB44O844Og44O744Or44O844OgPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7jg4Hjg7zjg6Djg7vjg6vjg7zjg6DlrqTplbfjgavjg6Hjg4Pjgrvjg7zjgrjjgpLpgIHkv6HjgZfjgb7jgZnjgILkvovjgYjjgbDjgIHoqI7oq5bkuK3jga7ku7bjgafkvZXjgYvos6rllY/jgZfjgZ/jgYTjgZPjgajjgYzjgafjgY3jgIHlrqTplbfjgavlv5zmj7TjgpLkvp3poLzjgZfjgZ/jgYTjgajjgY3jgarjganjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1MyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPumAgeS/oTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Mikg44GT44Gu44OB44O844Og44O744Or44O844Og44Gr5Y+C5Yqg6KaB6KuL44GX44Gf44Oh44Oz44OQ44O8PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7jgZXjgpPjga/jgIHjg4Hjg7zjg6Djg7vjg6vjg7zjg6DlrqTplbfjgafjgZnjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1NiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPuWPguWKoOimgeiri+OBl+OBn+ODoeODs+ODkOODvOWFqOWToeOBjOaPg+OBhOOBvuOBl+OBn+OAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+44OB44O844Og44O744Or44O844Og5a6k6ZW344GM44GE44G+44Gb44KTITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+44Oh44OD44K744O844K444KS5YWl5Yqb44GX44Gm44GP44Gg44GV44GE44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7np4HjgZ/jgaHjga7jg4Hjg7zjg6DjgYzllY/poYzjgpLmirHjgYjjgabjgYTjgovjga7jgafjgIHlv5zmj7TjgpLjgYrpoZjjgYTjgZfjgb7jgZkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7jg4Hjg7zjg6DjgYzjgIHjgYLjgarjgZ/jga7lv5zmj7TjgpLopoHoq4vjgZfjgabjgYTjgb7jgZnjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2MSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPuODgeODvOODoOODu+ODq+ODvOODoOOBi+OCieW/nOaPtOimgeirizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+44Oh44OD44K744O844K4OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+6YCB5L+h6ICFOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+44GC44Gq44Gf44Gv54++5Zyo44CB44Gp44Gu44OB44O844Og44O744Or44O844Og44Gr44KC5YWl5a6k44GX44Gm44GE44G+44Gb44KT44GM44CB6YGO5Y6744Gr5YWl5a6k44GX44Gf44GT44Go44Gu44GC44KL44OB44O844Og44O744Or44O844Og44Gr5YWl5a6k44GZ44KL44GT44Go44GM44Gn44GN44G+44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjUiIG5hbWU9ImJhY2t1cENvbnRlbnQiPgorICAgIDx2YWx1ZT7jgrfjgrnjg4bjg6DjgpLjg5Djg4Pjgq/jgqLjg4Pjg5fjgZfjgb7jgZnjgILjg5Djg4Pjgq/jgqLjg4Pjg5fjgavjga/jgIHjg6bjg7zjgrbjgYznlJ/miJDjgZfjgZ/jgIHjgYLjgonjgobjgovjg4fjg7zjgr/jgYzlkKvjgb7jgozjgb7jgZnjgILjgrXjg7zjg5DoqK3lrprjgIHjgYrjgojjgbPlkIToqIDoqp7jg6njg5njg6vjga/jg5Djg4Pjgq/jgqLjg4Pjg5fjgZXjgozjgb7jgZvjgpPjgILjgrfjgrnjg4bjg6DjgpLjgojjgormlrDjgZfjgYTjg5Djg7zjgrjjg6fjg7PjgavjgqLjg4Pjg5fjg4fjg7zjg4jjgZnjgovloLTlkIjjga/jgIEoMSnjgb7jgZrjg5Djg4Pjgq/jgqLjg4Pjg5fjg7vjg5XjgqHjgqTjg6vjgavjgqjjgq/jgrnjg53jg7zjg4jjgZfjgIEoMinmlrDopo/jgavkvZzmiJDjgZfjgZ/jg4fjg7zjgr/jg5njg7zjgrnkuIrjgavjgqLjg5fjg6rjgrHjg7zjgrfjg6fjg7PjgpLlho3jgqTjg7Pjgrnjg4jjg7zjg6vjgZfjgIEoMynjg5Djg4Pjgq/jgqLjg4Pjg5fjg7vjg5XjgqHjgqTjg6vjgpLjgqTjg7Pjg53jg7zjg4jjgIHjgZfjgabjgY/jgaDjgZXjgYTjgILjg5Djg4Pjgq/jgqLjg4Pjg5fjg7vjg5XjgqHjgqTjg6vjga7jgqTjg7Pjg53jg7zjg4jjga/jgIHmlrDjgrfjgrnjg4bjg6DkuIrjgafmnIDliJ3jgavooYzjgYblv4XopoHjgYzjgYLjgorjgb7jgZnjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2NiIgbmFtZT0iYmFja3VwQ29udGVudCI+CisgICAgPHZhbHVlPuOCt+OCueODhuODoO+9peODkOODg+OCr+OCouODg+ODlzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY3IiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT7jg6bjg7zjgrbjgavlr77jgZfnlLvpnaLlhbHmnIkv6Yyy55S744KS6Kix5Y+v44GZ44KLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjgiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPuODpuODvOOCtuOBq+WvvuOBl+eUu+mdouWFseaciS/pjLLnlLvjgpLmi5LlkKbjgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2OSIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+44GT44Gu44Om44O844K244Gv5Y+45Lya6ICF44Gn44GC44KL44Gf44KB5YWo44Gm44Gu5qip6ZmQ44KS5LiO44GI44KJ44KM44Gm44GE44G+44GZITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDcwIiBuYW1lPSJhcHBseSBmb3Igc2NyZWVuL3JlY29yZGluZyI+CisgICAgPHZhbHVlPuOBleOCk+OBjOeUu+mdouOBruWFseaciS/pjLLnlLvjgpLopoHmsYLjgZfjgabjgYTjgb7jgZnjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3MSIgbmFtZT0ibW9kZXJhdGlvbiBtaW5pIGljb25zIj4KKyAgICA8dmFsdWU+44GC44Gq44Gf44Gv55S76Z2i44Gu5YWx5pyJL+mMsueUu+OCkuOBmeOCi+aoqemZkOOCkuS4juOBiOOCieOCjOOBpuOBhOOBvuOBmTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDcyIiBuYW1lPSJtb2RlcmF0aW9uIG1pbmkgaWNvbnMiPgorICAgIDx2YWx1ZT7nlLvpnaLjga7lhbHmnIkv6Yyy55S744KS6KGM44GG5qip6ZmQ44KS6YGp55So44GZ44KL44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzMiIG5hbWU9Im1vZGVyYXRpb24gbWluaSBpY29ucyBjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+55S76Z2iL+mMsueUu+OBruWFseacieOCkuihjOOBhuOBk+OBqOOCkuioseWPry/mi5LlkKbjgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3NCIgbmFtZT0ic291bmQgaWNvbiI+CisgICAgPHZhbHVlPuOCteOCpuODs+ODieOCkuOCquODlTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc1IiBuYW1lPSJzb3VuZCBpY29uIj4KKyAgICA8dmFsdWU+44K144Km44Oz44OJ44KS44Kq44OzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzYiIG5hbWU9InJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT7pn7Plo7Djga7jgb/jga7kvJrorbDlrqQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3NyIgbmFtZT0icm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPuOBk+OBruODleODqeODg+OCsOOCkuOCquODs+OBq+OBmeOCi+OBqOOAgeODpuODvOOCtuOBr+S8muitsOWupOOBp+mfs+WjsOOBruOBv+S9v+eUqOOBp+OBjeOCi+OCiOOBhuOBq+OBquOCiuOBvuOBmSjjg5Pjg4fjgqrnhKHjgZcp44CC44GT44KM44Gr44KI44KK44CB44ON44OD44OI44Ov44O844Kv5biv5Z+f44KS56+A57SE44GZ44KL44GT44Go44GM44Gn44GN44G+44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzgiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPuODquODouODvOODiOWItuW+oeOCkuioseWPryAo44OH44K544Kv44OI44OD44OX5YWx5pyJ5LitKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc5IiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7jg6rjg6Ljg7zjg4jliLblvqHjgpLmi5LlkKYgKOODh+OCueOCr+ODiOODg+ODl+WFseacieS4rSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MCIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+44Oq44Oi44O844OI5Yi25b6h5qip6ZmQ44KS6YGp55So44GZ44KLICjjg4fjgrnjgq/jg4jjg4Pjg5flhbHmnInkuK0pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODEiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPuOBguOBquOBn+OBr+OAgeODquODouODvOODiOeUu+mdouOBruWItuW+oeOCkuioseWPr+OBleOCjOOBpuOBhOOBvuOBmSjjg4fjgrnjgq/jg4jjg4Pjg5flhbHmnInmmYIpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODIiIG5hbWU9ImFwcGx5IGZvciByZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPuOBleOCk+OBjOODquODouODvOODiOeUu+mdouOBruWItuW+oeaoqemZkOOCkuimgeaxguOBl+OBpuOBhOOBvuOBmeOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgzIiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7jg6bjg7zjgrbjga/lj7jkvJrogIXjgafjgZnjgILlj7jkvJrogIXjga/jgZnjgbnjgabjga7jgqLjgq/jgrfjg6fjg7PjgpLooYzjgYbjgZPjgajjgYzjgafjgY3jgb7jgZkhIFvjg6rjg6Ljg7zjg4jjg7vjg4fjgrnjgq/jg4jjg4Pjg5fliLblvqFdPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODQiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPuODh+OCueOCr+ODiOODg+ODl+WFseacieS4reOBruODquODouODvOODiOODu+OCs+ODs+ODiOODreODvOODq+OCkuioseWPry/mi5LlkKbjgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4NSIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+MSkg44GC44Gq44Gf44GuUEPjgYvjgonjg6rjg6Ljg7zjg4hQQ+OBuDog44GC44Gq44Gf44GuUEPjga7jgq/jg6rjg4Pjg5fjg5zjg7zjg4njgYvjgonjg6rjg6Ljg7zjg4hQQ+eUu+mdouOBq+ODhuOCreOCueODiOOCkuOCs+ODlOODvOOBmeOCi+OBq+OBr+OAgeeUu+mdouOCkuOCr+ODquODg+OCr+OBl+e2muOBhOOBpuODhuOCreOCueODiOS4iuOBp+WPs+OCr+ODquODg+OCr+OBl+OBpuODoeODi+ODpeODvOOCkuihqOekuuOBl+OBpuOAjOaMv+WFpeOAjeOCkumBuOaKnuOBl+OBvuOBmeOAgiZsdDtici8mZ3Q7Jmx0O2JyLyZndDsyKSDjg6rjg6Ljg7zjg4hQQ+OBi+OCieOBguOBquOBn+OBrlBD44G4OiDjg6rjg6Ljg7zjg4hQQ+OBi+OCieOBguOBquOBn+OBrlBD44Gu44Kv44Oq44OD44OX44Oc44O844OJ44Gr44OG44Kt44K544OI44KS44Kz44OU44O844GZ44KL44Gr44Gv44CB44Oq44Oi44O844OI55S76Z2i5LiK44Gu44OG44Kt44K544OI5LiK44Gn44OG44Kt44K544OI44KS44OP44Kk44Op44Kk44OI6YG45oqe44GX44CB44Oq44Oi44O844OI55S76Z2i5LiK44Gn5Y+z44Kv44Oq44OD44Kv44GX44Gm44Oh44OL44Ol44O844KS6KGo56S644GX44CMJmx0O2kmZ3Q744OP44Kk44Op44Kk44OI44GV44KM44Gf44OG44Kt44K544OI44KS44Kz44OU44O8JmFtcDtsdDsvaSZndDvjgI3jgpLpgbjmip7jgZfjgb7jgZnjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4NiIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+44GC44Gq44Gf44GuUEPjgajjg6rjg6Ljg7zjg4hQQ+OBrumWk+OBp+ebuOS6kuOBq+ODhuOCreOCueODiOOBruOCs+ODlOODvCZhbXA744Oa44O844K544OI44KS6KGM44GG44Gr44GvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODciIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPuODj+OCpOODqeOCpOODiOOBleOCjOOBn+ODhuOCreOCueODiOOCkuOCs+ODlOODvDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg4IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT7jgrPjg5Tjg7wmYW1wO+ODmuODvOOCueODiOaJi+mghjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg5IiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT7nlLvpnaLlhbHmnInjga7lk4Hos6o6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTAiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPui2hemrmOWTgeizqjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkxIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT7pq5jlk4Hos6o8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5MiIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+5Lit5ZOB6LOqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTMiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPuS9juWTgeizqjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk0IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPmVuX1VTPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTUiIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+ZGVfREU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NiIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT7jgq3jg7zjg5zjg7zjg4k6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTciIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+44Km44Kn44OT44OK44O844KS6ZaJ44GY44KLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTgiIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+44Km44Kn44OT44OK44O844Gv5pei44Gr57WC5LqG44GX44Gm44GE44G+44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTkiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+5Lya6K2w5a6k44KS6ZaJ6Y6W44GZ44KLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDAiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+57WC5LqGVVJMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDEiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+6ZaJ6Y6W6Kit5a6aPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDIiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+5Lya6K2w5a6k44KS6ZaJ6Y6W44GZ44KL44Go44CB44Om44O844K244Gv57WC5LqGVVJM44Gr44Oq44OA44Kk44Os44Kv44OI44GV44KM44G+44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDMiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+TERBUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA0IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPklEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDUiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+6K2Y5Yil5ZCNPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDYiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+6Kit5a6a44OV44Kh44Kk44OrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDciIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+TERBUOioreWumjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA4IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPuitmOWIpeWQjTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA5IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPuacieWKueWMljwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEwIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPueZu+mMsuaXpeaZgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTExIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPueZu+mMsuiAhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEyIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPuabtOaWsOaXpeaZgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEzIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPuabtOaWsOiAhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE0IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPuioreWumuODleOCoeOCpOODq+OBr+OAgeODleOCqeODq+ODgCAnb3Blbm1lZXRpbmdzL3JlZDUvd2ViYXBwcy9vcGVubWVldGluZ3MvY29uZicg44Gr572u44GL44KM44Gm44GE44KL5b+F6KaB44GM44GC44KK44G+44GZ44CC5YmN44KC44Gj44Gm5omL5YuV44Ki44OD44OX44Ot44O844OJ44GX44Gm44GK44GE44Gm44GP44Gg44GV44GE44CC6Kit5a6a44OV44Kh44Kk44Or44Gr5a++44GZ44KL5aSJ5pu044Gv6YCQ5qyh44Kq44Oz44Op44Kk44Oz5Y+N5pig44GV44KM44G+44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTUiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+6Kit5a6a44OV44Kh44Kk44Or5ZCNPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTYiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+44CM44OJ44Oh44Kk44Oz44KS44Om44O844K25ZCN44Gr5LuY5Yqg44GZ44KL44CN44KS6YG45oqe44GZ44KL44Go44CB5oyH5a6a44GX44Gf44OJ44Oh44Kk44Oz44GM44CB44Ot44Kw44Kk44Oz55S76Z2i44Gn5oyH5a6a44GX44Gf44Ot44Kw44Kk44Oz5ZCN44Gr6Ieq5YuV55qE44Gr5LuY5Yqg44GV44KM44G+44GZ44CC44KC44GXTERBUOOBq+OAgeODieODoeOCpOODs+WQjeS7mOOBjeOBruODreOCsOOCpOODs+WQjeOBjOS/neWtmOOBleOCjOOBpuOBhOOCi+WgtOWQiOOBq+WIqeeUqOOBl+OBpuOBj+OBoOOBleOBhOOAguS+izog44Ot44Kw44Kk44Oz5ZCN44CMaGFuc+OAjeOAgeODieODoeOCpOODs+WQjeOAjGxvY2FsaG9zdC5jb23jgI3jga7loLTlkIjjgIHjgIxoYW5zQGxvY2FsaG9zdC5jb23jgI3jgadMREFQ6KqN6Ki844KS6KGM44GE44G+44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTciIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+44OJ44Oh44Kk44Oz44KS44Om44O844K25ZCN44Gr5LuY5Yqg44GZ44KLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTgiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+44OJ44Oh44Kk44OzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTkiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+5oy/5YWlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjAiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+44OP44Kk44Op44Kk44OI44GV44KM44Gf44OG44Kt44K544OI44KS44Kz44OU44O8PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjEiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+44Oq44Oi44O844OIUEPjga7jgq/jg6rjg4Pjg5fjg5zjg7zjg4njg7vjg4bjgq3jgrnjg4g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMiIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT7jg6rjg6Ljg7zjg4hQQ+OBruOCr+ODquODg+ODl+ODnOODvOODieOCkuihqOekuuOBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIzIiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT7mrKHlm57jga/ooajnpLrjgZfjgarjgYQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNCIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+44OG44Kt44K544OI44KS44GT44GT44Gr44Kz44OU44O844GZ44KLIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI1IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT7jg6rjg6Ljg7zjg4jnlLvpnaLjgajjga7plpPjgafjgrPjg5Tjg7wmYW1wO+ODmuODvOOCueODiOOBmeOCi+OBn+OCgeOBq+OBr+OAgeODquODouODvOODiOWItuW+oSjjgb7jgZ/jga/jg6Ljg4fjg7zjg6zjg7zjgrfjg6fjg7Mp5qip6ZmQ44GM5b+F6KaB44Gn44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjYiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPuODh+ODleOCqeODq+ODiOioreWumuOCkue3qOmbhuOBmeOCiyAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNyIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+44Oq44Oi44O844OI44O744Kz44Oz44OI44Ot44O844Or44Gn44Kz44OU44O8JmFtcDvjg5rjg7zjgrnjg4jjgavjgaTjgYTjgabjga7mg4XloLHjg5zjg4Pjgq/jgrnjgpLooajnpLrjgZfjgarjgYQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyOCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT7kv53lrZg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyOSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT7liYrpmaQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT7jgq3jg6Pjg7Pjgrvjg6s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMSIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPuODpuODvOOCtuOCkuS8muitsOWupOOBq+aLm+W+heOBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMyIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+5Lya6K2w5a6k44KS6YG45oqe44GX44Gm44GP44Gg44GV44GE44CC5Y+C5Yqg5L6d6aC844KS5Y+X44GR44KL44Om44O844K244Gr44Gv44CB44GC44Gq44Gf44Gu5ZCN5YmN44CB44Oh44OD44K744O844K444Go44Go44KC44Gr5Lya6K2w5a6k44G444Gu44Oq44Oz44Kv44GM55m66KGM44GV44KM44G+44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzMiIG5hbWU9ImNoYXQgdXNlciI+CisgICAgPHZhbHVlPuODreOCsOOCpOODs+aXpeaZgjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzNCIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPuWPguWKoOS+nemgvOOBrumAgeS/oeW+jOOBq+WFpeWupOOBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM1IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+5Y+C5Yqg44KS5L6d6aC844GZ44KLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzYiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT7jg6Hjg4Pjgrvjg7zjgrg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzNyIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPuS8muitsOOBuOOBruWPguWKoOOCkuS+nemgvOOBleOCjOOBpuOBhOOBvuOBmeOAguS+nemgvOiAhe+8nTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM4IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+5Y+C5Yqg5L6d6aC844Oh44OD44K744O844K4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzkiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT7lj4LliqDkvp3poLzjgpLpgIHkv6HjgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0MCIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPuOBleOCk+OBr+OAgeOBguOBquOBn+OBi+OCieOBruWPguWKoOS+nemgvOOCkmRpZCAmbHQ7YiZndDvmi5LlkKYmbHQ7L2ImZ3Q744GX44G+44GX44GfITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQxIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+5om/6KqNPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDIiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT7mi5LlkKY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0MyIgbmFtZT0idXNlciBwcm9maWxlIj4KKyAgICA8dmFsdWU+44K/44Kk44Og44K+44O844OzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDQiIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPuOCpOODmeODs+ODiOips+e0sDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ1IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT7lkI3np7A8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0NiIgbmFtZT0iYXBwb2ludG1lbnQgbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+5qaC6KaBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDciIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPuS9nOaIkOiAhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ4IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+44K/44Kk44Og44K+44O844Oz6Kit5a6a44KS5Yun5aWoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDkiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT7mrKHlm57jg63jgrDjgqTjg7PmmYLjgavjgr/jgqTjg6Djgr7jg7zjg7PoqK3lrprjgpLooYzjgYbjgZPjgajjgpLpgLLjgoHjgovjg6Hjg4Pjgrvjg7zjgrjjgpLooajnpLrjgZnjgovloLTlkIjjgavjg4Hjgqfjg4Pjgq/jgpLlhaXjgozjgabjgY/jgaDjgZXjgYTjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MCIgbmFtZT0idGltZSB6b25lIHVwZGF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+44Om44O844K244O744OX44Ot44OV44Kj44O844Or44Gu44K/44Kk44Og44K+44O844Oz6Kit5a6a44KS56K66KqN44GX44Gm44GP44Gg44GV44GE44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTEiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPiRBUFBfTkFNReS8muitsOOBjOioreWumuOBleOCjOOBvuOBl+OBnzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MiIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Jmx0O2JyLyZndDvoqbPntLA6Jmx0O2JyLyZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MyIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+6ZaL5aeL5pmC5Yi7OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU0IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7ntYLkuobmmYLliLs6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTUiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPiRBUFBfTkFNReS8muitsOOBjOabtOaWsOOBleOCjOOBvuOBl+OBnzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NiIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+5Li75YKs6ICFOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU3IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT4kQVBQX05BTUXkvJrorbDjgYzjgq3jg6Pjg7Pjgrvjg6vjgZXjgozjgb7jgZfjgZ86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTgiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPiRBUFBfTkFNReS8muitsOODquODnuOCpOODs+ODgDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1OSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPuOCs+ODn+ODpeODi+ODhuOCo+ioreWumjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYwIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+44Kz44Oz44K/44Kv44OI44O744OH44O844K/44KS5YWo5ZOh44Gr5YWs6ZaL44GZ44KLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjEiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT7jgYLjgarjgZ/jga7jgYrli6fjgoHjgoTjgIHoiIjlkbPjgYLjgovjgoLjga7jgpLmjIflrprjgZfjgb7jgZnjgILjgZPjgozjgonjga/jg5Hjg7zjg4jjg4rjg7zjgpLmpJzntKLjgZnjgovpmpvjgavliKnnlKjjgZXjgozjgb7jgZnjgILopIfmlbDpoIXnm67jgpLmjIflrprjgZnjgovloLTlkIjjga/jgIHlkITpoIXnm67jgpLjgrPjg7Pjg57jgafljLrliIfjgaPjgabmjIflrprjgZfjgabjgY/jgaDjgZXjgYTjgIIo5L6LOiDljLvnmYLjgrXjg7zjg5PjgrksIOWBpeW6t+S/nemZuiwgLi4uKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYyIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+56eB44Gu44GK5Yun44KBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjMiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT7np4Hjga7plqLlv4M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2NCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPuWnk+WQjTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY1IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+44K/44Kk44Og44K+44O844OzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjYiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT7oiIjlkbPjg7vplqLlv4M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2NyIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPuOCs+ODs+OCv+OCr+ODiOaDheWgsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY4IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+44Kz44Oz44K/44Kv44OI44O744OH44O844K/44KS44Kz44Oz44K/44Kv44OI44Gr44Gu44G/5YWs6ZaL44GZ44KLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjkiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT7jgrPjg7Pjgr/jgq/jg4jjg7vjg4fjg7zjgr/jgpLpnZ7lhazplovjgavjgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPuODl+ODreODleOCo+ODvOODqzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTcxIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+6Kit5a6aPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzIiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT7jg6bjg7zjgrbmpJzntKI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MyIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPuS7luOBruODpuODvOOCtuOBjOimi+OCi+OBruOBqOWQjOOBmOihqOekuuW9ouaFi+OBp+OBguOBquOBn+OBruODl+ODreODleOCo+ODvOODq+OCkuihqOekuuOBl+OBvuOBmTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc0IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+44OX44Ot44OV44Kj44O844Or44KS6Kit5a6a44GX44G+44GZ44CC6Zai5b+D5LqL6aCF44KS6Kit5a6a44GX44Gm5LuW44Gu44Om44O844K244GM5qSc57Si44Gn44GN44KL44KI44GG44Gr44Gn44GN44G+44GZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzUiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT7jg6bjg7zjgrbjgpLmpJzntKLjgZfjgabjgIHjgYLjgarjgZ/jga7jg43jg4Pjg4jjg6/jg7zjgq/jgpLluoPjgZLjgb7jgZfjgofjgYY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NiIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT7mpJzntKI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NyIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT7jgYrli6fjgoE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3OCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT7jg6bjg7zjgrblkI08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3OSIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT7mpJzntKLjg4bjgq3jgrnjg4g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT7lp5PlkI08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MSIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT7jgr/jgqTjg6Djgr7jg7zjg7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MiIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT7jgYrli6fjgoE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MyIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT7plqLlv4M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT7mpJzntKLntZDmnpw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NSIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT7jgqLjgq/jgrfjg6fjg7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NiIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT7jgrPjg7Pjgr/jgq/jg4jjgpLov73liqDjgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NyIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT7jg6Hjg4Pjgrvjg7zjgrjjgpLpgIHkv6HjgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4OCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT7jgrPjg7Pjgr/jgq/jg4jjgajjg6Hjg4Pjgrvjg7zjgrg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4OSIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT7mib/oqo3lvoXjgaHjgrPjg7Pjgr/jgq/jg4g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPuaJv+iqjTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkxIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+5ouS5ZCmPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTIiIG5hbWU9InVzZXIgY29udGFjdCByZXF1ZXN0Ij4KKyAgICA8dmFsdWU+44GT44Gh44KJ44GvJEFQUF9OQU1F44Gn44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTMiIG5hbWU9InVzZXIgY29udGFjdCByZXF1ZXN0Ij4KKyAgICA8dmFsdWU+44GV44KT44GM44CB44GC44Gf44Gq44KS44Kz44Oz44K/44Kv44OI44Gr5Yqg44GI44KL44GT44Go44KS5biM5pyb44GX44Gm44GE44G+44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTQiIG5hbWU9InVzZXIgY29udGFjdCByZXF1ZXN0Ij4KKyAgICA8dmFsdWU+JEFQUF9OQU1F44Gu44Kz44Oz44K/44Kv44OI6KaB5rGC44KS56K66KqN44GZ44KL44GL44CB5om/6KqNL+aLkuWQpuOBruODquODs+OCr+OBruOBhOOBmuOCjOOBi+OCkuOCr+ODquODg+OCr+OBl+OBpuOBj+OBoOOBleOBhOOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk1IiBuYW1lPSJhZGQgdXNlciBjb250YWN0Ij4KKyAgICA8dmFsdWU+44GT44Gu44Om44O844K244Gv5pei44Gr44Kz44Oz44K/44Kv44OI44O744Oq44K544OI44Gr55m76Yyy5riI44G/44GL44CB5pyq5Zue562U44Gu44Kz44Oz44K/44Kv44OI6L+95Yqg6KaB6KuL44Oh44OD44K744O844K444KS5Y+X5L+h5riI44G/44Gn44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTYiIG5hbWU9InVzZXIgY29udGFjdCBtYWlsIj4KKyAgICA8dmFsdWU+44Kz44Oz44K/44Kv44OI44O744Oq44K544OIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTciIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT7jgrPjg7Pjgr/jgq/jg4jjgajjg6Hjg4Pjgrvjg7zjgrjjgpLnt6jpm4bjgZfjgZ/jgoosJmx0O2JyLyZndDsg5om/6KqN5b6F44Gh44Kz44Oz44K/44Kv44OI44Gu5Yem55CG44KS6KGM44GE44G+44GZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTgiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT7jgZXjgpPjgYzjgIHjgYLjgarjgZ/jgpLjgrPjg7Pjgr/jgq/jg4jjgajjgZfjgabmib/oqo3jgZfjgb7jgZfjgZ8hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTkiIG5hbWU9ImNoYXQgaW5mbyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDAiIG5hbWU9ImNoYXQgbG9nIGljb24iPgorICAgIDx2YWx1ZT7jg4Hjg6Pjg4Pjg4jvvaXjg63jgrDjgpLooajnpLov44Kz44OU44O844GZ44KLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDEiIG5hbWU9ImNoYXQgbG9nIHdpbmRvdyI+CisgICAgPHZhbHVlPuODgeODo+ODg+ODiOODu+ODreOCsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7pgIHkv6HogIU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+5Lu25ZCNPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPumAgeS/oTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+44Oh44OD44K744O844K4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDciIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPuaWsOimj+ODoeODvOODqzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7jgrPjg7Pjgr/jgq/jg4jjgavpgIHkv6HjgZnjgovjg6Hjg4Pjgrvjg7zjgrjjgpLmlrDopo/jgavkvZzmiJDjgZfjgb7jgZk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwOSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+5paw6KaP44Oh44OD44K744O844K4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTAiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPuWum+WFiDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+5Lu25ZCNOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjEyIiBuYW1lPSJ3aGl0ZWJvYXJkIGZ1bGwtZml0Ij4KKyAgICA8dmFsdWU+5ZCE44Om44O844K244Gu55S76Z2i6Kej5YOP5bqm44Gr5ZCI44GG44KI44GG44Gr44Ob44Ov44Kk44OI44Oc44O844OJ44Go44OJ44Kt44Ol44Oh44Oz44OI44Gu44K144Kk44K644KS5aSJ5pu044GZ44KL44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTMiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPuODpuODvOOCtuOCkui/veOBhOWHuuOBmTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE0IiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT7jgYLjgarjgZ/oh6rouqvjgpLkvJrorbDlrqTjgYvjgonov73jgYTlh7rjgZnjgZPjgajjga/jgafjgY3jgb7jgZvjgpMhIOmAgOWHuuOBmeOCi+WgtOWQiOOBr+OAgee1guS6huODnOOCv+ODs+OCkuOCr+ODquODg+OCr+OBmeOCi+OBi+ODluODqeOCpuOCtuOCkumWieOBmOOBpuOBj+OBoOOBleOBhCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNSIgbmFtZT0ia2ljay11c2VyIj4KKyAgICA8dmFsdWU+44GT44Gu44Om44O844K244KS5Lya6K2w5a6k44GL44KJ5YiH5pat44GX44Gm44KI44KN44GX44GE44Gn44GZ44GLPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE2IiBuYW1lPSJraWNrLXVzZXIiPgorICAgIDx2YWx1ZT7jgqLjgq/jgrfjg6fjg7Pjga7norroqo0gLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTciIG5hbWU9ImtpY2stdXNlciI+CisgICAgPHZhbHVlPueJueaoqeWPuOS8muiAheOCkuS8muitsOWupOOBi+OCiei/veOBhOWHuuOBmeOBk+OBqOOBr+OBp+OBjeOBvuOBm+OCkyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxOCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+5Lya6K2w5a6k44KS5LqI57SE44GZ44KLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPumWi+WnizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7ntYLkuoY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+44Of44O844OG44Kj44Oz44Kw44KS44K544Kx44K444Ol44O844Or44GX44G+44GZ44CC5YWo44Gm44Gu44Of44O844OG44Kj44Oz44Kw5Y+C5Yqg5LqI5a6a6ICF44Gu44Kr44Os44Oz44OA44O844Gr44Kk44OZ44Oz44OI44GM6L+95Yqg44GV44KM44G+44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPuWPl+S/oeeusTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7pgIHkv6E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+44K044Of566xPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPuOBguOBquOBn+iHqui6q+OCkuOCs+ODs+OCv+OCr+ODiOOBq+WKoOOBiOOCi+OBk+OBqOOBr+OBp+OBjeOBvuOBm+OCk+OAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI2IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+44Om44O844K244Gv5pei44Gr5ouS5ZCm44GV44KM44Gm44GE44G+44GZITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+44Om44O844K244Gv5pei44Gr5om/6KqN44GV44KM44Gm44GE44G+44GZITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI4IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+44Kz44Oz44K/44Kv44OI44O744OP44OD44K344Ol44GM5LiN5q2j44Gn44GZITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI5IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+44Kz44Oz44K/44Kv44OI44O744Oq44K544OI44Gr6L+95Yqg44GV44KM44G+44GX44GfITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMwIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+44Om44O844K244Gv5ouS5ZCm44GV44KM44G+44GX44Gf44CC5om/6KqN5b6F44Gh44Oq44K544OI44GL44KJ44KC5YmK6Zmk44GV44KM44G+44GX44Gf44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzEiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT7oqbLlvZPjgZnjgovjgrPjg7Pjgr/jgq/jg4jjgYzjgYLjgorjgb7jgZvjgpMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzIiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT7jgrPjg7Pjgr/jgq/jg4jjgpLliYrpmaTjgZfjgabjgojjgo3jgZfjgYTjgafjgZnjgYs/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzMiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT7jgrPjg7Pjgr/jgq/jg4jliYrpmaTjga7norroqo08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPuOCs+ODs+OCv+OCr+ODiOOCkuS4gOimp+OBi+OCieWJiumZpOOBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM1IiBuYW1lPSJ1c2VyIHByb2ZpbGUiPgorICAgIDx2YWx1ZT7jg6bjg7zjgrbjg7vjg5fjg63jg5XjgqPjg7zjg6s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNiIgbmFtZT0idXNlciBwcm9maWxlIj4KKyAgICA8dmFsdWU+44Om44O844K244O744OX44Ot44OV44Kj44O844Or44KS6KGo56S644GZ44KLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzciIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPuODoeODg+OCu+ODvOOCuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7mpJzntKI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzOSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+5YWo44Gm44KS6YG45oqePC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDAiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPumBuOaKnuOCkuino+mZpDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7mnKroqq3jgpLpgbjmip48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0MiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+5pei6Kqt44KS6YG45oqePC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPuODleOCqeODq+ODgOOBq+enu+WLlSAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+5paw6KaP44OV44Kp44Or44OA44KS6L+95YqgIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7liYrpmaQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+5YmK6Zmk44GX44Gf44Oh44O844Or44Gv44CB44K044Of566x44Gu5Lit44Gr44G+44Gg5q6L44GV44KM44Gm44GE44G+44GZITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ3IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7mnKroqq3jgavjgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0OCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+5pei6Kqt44Gr44GZ44KLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPuWbnuetlDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7lhajlk6Hjgavlm57nrZQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+44OV44Kp44Ov44O844OJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPuOCouOCr+OCt+ODp+ODsyAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPuODl+ODqeOCpOODmeODvOODiOODu+ODoeODg+OCu+ODvOOCuOOCkumAgeS/oeOBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7pgbjmip7jgYzjgYLjgorjgb7jgZvjgpM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+5Y+X5L+h566x44Gr56e75YuV44GZ44KLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTYiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPuWJiumZpOOBmeOCiyAo5pyA57WCKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU3IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGlzIGFjdGlvbiBjYW5ub3QgYmUgdW5kb25lITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7mlrDopo/jg5Xjgqnjg6vjg4A8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1OSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+44OV44Kp44Or44OA44KS6L+95Yqg44GX44Gm44Oh44OD44K744O844K444KS5pW055CG44GX44G+44GZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjAiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPuaWsOimj+ODleOCqeODq+ODgDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7ov73liqA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPuODleOCqeODq+ODgOOCkuWJiumZpOOBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+44OV44Kp44Or44OA44KS5YmK6Zmk44Gn44GN44G+44Gb44KT44CC44OV44Kp44Or44OA5YaF44Gr44Oh44OD44K744O844K444GM5a2Y5Zyo44GX44G+44GZISDjgYLjgonjgYvjgZjjgoHjg6Hjg4Pjgrvjg7zjgrjjgpLliYrpmaTjgZnjgovjgYvjgIHku5bjga7jg5Xjgqnjg6vjg4Djgavnp7vli5XjgZfjgabjgY/jgaDjgZXjgYTjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPuWnk+WQjeOCkue3qOmbhuOBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+44OV44Kp44Or44OA44KS5YmK6Zmk44GX44Gm44KI44KN44GX44GE44Gn44GZ44GLPyDliYrpmaTjgZXjgozjgZ/jg5Xjgqnjg6vjg4Djga/lvqnlhYPjgafjgY3jgarjgYTjgZPjgajjgavjgZTms6jmhI/jgY/jgaDjgZXjgYTjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPuaJv+iqjeS+nemgvOOBjOmAgeS/oeOBleOCjOOBvuOBl+OBn+OAguaJv+iqjeOBleOCjOOBn+ODpuODvOOCtuOBruOBv+OBjOOCs+ODs+OCv+OCr+ODiOODu+ODquOCueODiOOBq+i/veWKoOOBleOCjOOBvuOBmeOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+44Oh44OD44K744O844K4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjgiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+44Om44O844K244Gv5YCL5Lq644Kz44Oz44K/44Kv44OI44O744OH44O844K/44KS5YWx5pyJ44GX44Gm44GE44G+44Gb44KT44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjkiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+44Om44O844K244Gv5YCL5Lq644Kz44Oz44K/44Kv44OI44O744OH44O844K/44KS44Kz44Oz44K/44Kv44OI44Go44Gu44G/5YWx5pyJ44GX44Gm44GE44G+44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzAiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+5L2P5omAICZhbXA7IOmbu+ipseeVquWPtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjcxIiBuYW1lPSJlcnJvciBjb2RlIj4KKyAgICA8dmFsdWU+5Y+C5Yqg5L6d6aC844Kz44O844OJ44GM54Sh5Yq544Gn44GZ44CC5Y+C5Yqg5L6d6aC844Kz44O844OJ44Gv5LiA5a6a5pyf6ZaT44Gu44G/5pyJ5Yq544Gn44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzIiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT7jgZPjga7jgqTjg5njg7Pjg4jjga/ku5bjga7jg6bjg7zjgrbjga7jgqvjg6zjg7Pjg4Djg7zjgavjg6rjg7Pjgq/jgZfjgabjgYTjgb7jgZnjgILjgqTjg5njg7Pjg4jjgpLmm7TmlrDjgZnjgovjgajjgIHku5bjga7jg6bjg7zjgrbjga7jgqvjg6zjg7Pjg4Djg7zjgavjgoLmm7TmlrDjgYzlj43mmKDjgZXjgozjgb7jgZnjgILjgqTjg5njg7Pjg4jjgpLmm7TmlrDjgZfjgabjgojjgo3jgZfjgYTjgafjgZnjgYs/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzMiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT7mm7TmlrDjga7norroqo08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPuOCs+ODs+OCv+OCr+ODiOOBq+engeOBruOCq+ODrOODs+ODgOODvOOCkuWFrOmWi+OBmeOCiyAo5pu444GN6L6844G/44Gv44Gn44GN44G+44Gb44KTKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc1IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+44Kr44Os44Oz44OA44O844KS5YWx5pyJ44GX44Gq44GEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzYiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT7jgrPjg7Pjgr/jgq/jg4jjga7jgqvjg6zjg7Pjg4Djg7w8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPuOCs+ODs+OCv+OCr+ODiOOBruOCq+ODrOODs+ODgOODvOOCkuimi+OCi+OBn+OCgeOBq+OBr+OAgeOCs+ODs+OCv+OCr+ODiOOBruaJv+iqjeOBjOW/heimgeOBp+OBmeOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc4IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+5LuW44Gu44Om44O844K244Gu44Kr44Os44Oz44OA44O844GL44KJ44Kk44OZ44Oz44OI44KS5YmK6ZmkL+S/neWtmOOBmeOCi+OBk+OBqOOBr+OBp+OBjeOBvuOBm+OCkyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3OSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPuOCq+ODrOODs+ODgOODvOOCkuWGjeihqOekuuOBmeOCiyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4MCIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPuOBk+OBruOCpOODmeODs+ODiOOBr+S7luOBruODpuODvOOCtuOBruOCq+ODrOODs+ODgOODvOOBq+ODquODs+OCr+OBl+OBpuOBhOOBvuOBmeOAguOCpOODmeODs+ODiOOCkuWJiumZpOOBmeOCi+OBqOOAgeS7luOBruODpuODvOOCtuOBruOCq+ODrOODs+ODgOODvOOBi+OCieOCguWJiumZpOOBleOCjOOBvuOBmeOAguOCpOODmeODs+ODiOOCkuWJiumZpOOBl+OBpuOCiOOCjeOBl+OBhOOBp+OBmeOBiz88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4MSIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPuOCouOCr+OCt+ODp+ODs+OBrueiuuiqjTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgyIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+5YWl5a6kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODMiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT7kvJrorbDlrqTjgavjgqLjgq/jgrvjgrnjgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+44OX44Op44Kk44OZ44O844OI44O744Oh44OD44K744O844K45LuY44GN5Lya6K2w5a6kL+OCpOODmeODs+ODiOOBjOOBguOCiuOBvuOBmeOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg1IiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+44GC44KJ44GL44GY44KB44Kk44OZ44Oz44OI44KS5L+d5a2Y44GX44Gm44GP44Gg44GV44GEITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg2IiBuYW1lPSJhY2Nlc3Mgcm9vbXMgZXJyb3IiPgorICAgIDx2YWx1ZT7mjIflrprjgZXjgozjgZ/kvJrorbDlrqTjgYzopovjgaTjgYvjgorjgb7jgZvjgpPjgILjgqTjg5njg7Pjg4jjgYrjgojjgbPkvJrorbDlrqTjga/ml6LjgavliYrpmaTjgZXjgozjgabjgYTjgb7jgZkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODciIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPuODi+ODg+OCr+ODjeODvOODoOOCkumBuOaKnuOBl+OBpuOBj+OBoOOBleOBhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg4IiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT7lkI08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4OSIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+5aeTPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTAiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPkXjg6Hjg7zjg6s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MSIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+T2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MiIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+5aeT44O75ZCN44Go44KC44GrNOaWh+Wtl+S7peS4iuOBrumVt+OBleOBjOW/heimgeOBp+OBmeOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkzIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5F44Oh44O844Or44O744Ki44OJ44Os44K544GM54Sh5Yq544Gn44GZITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk0IiBuYW1lPSJhdXRoIGZyb20iPgorICAgIDx2YWx1ZT5GYWNlYm9vazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk1IiBuYW1lPSJhdXRoIGZvcm0iPgorICAgIDx2YWx1ZT5GYWNlYm9va+OCouOCq+OCpuODs+ODiOOBp+ODreOCsOOCpOODs+OBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk2IiBuYW1lPSJ2aWV3IHByb2ZpbGUiPgorICAgIDx2YWx1ZT7nmbvpjLLml6U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5NyIgbmFtZT0iZGlyZWN0IGxvZ2luIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5GYWNlYm9va+OCouOCq+OCpuODs+ODiOOBp+ODreOCsOOCpOODs+OBl+OBvuOBl+OBn+OAguODl+ODreODleOCo+ODvOODq+OBq+mBqeWIh+OBqkXjg6Hjg7zjg6vjg7vjgqLjg4njg6zjgrnjgpLoqK3lrprjgZfjgabjgY/jgaDjgZXjgYTjgILjgZXjgoLjgarjgYTjgajjgIHlj4LliqDkvp3poLzjgoTjg5fjg6njgqTjg5njg7zjg4jjg7vjg6Hjg4Pjgrvjg7zjgrjjgpLlj5fkv6HjgZnjgovjgZPjgajjgYzjgafjgY3jgb7jgZvjgpPjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5OCIgbmFtZT0iZGlyZWN0IGxvZ2luIG1lc3NhZ2UgaGVhZGVyIj4KKyAgICA8dmFsdWU+44Oh44OD44K744O844K4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTkiIG5hbWU9ImRpcmVjdCBsb2dpbiBtZXNzYWdlIGNoZWNrYm94IGNvbnRyb2wiPgorICAgIDx2YWx1ZT7jg5fjg63jg5XjgqPjg7zjg6vmm7TmlrDjgavjgaTjgYTjgabjga7jg6Hjg4Pjgrvjg7zjgrjjgpLku4rlvozooajnpLrjgZfjgarjgYQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMCIgbmFtZT0icHJvZmlsZSBzZXR0aW5ncyBidXR0b24iPgorICAgIDx2YWx1ZT7oqbPntLDooajnpLrjgqrjg5fjgrfjg6fjg7MgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPuaWsOimj+ODl+ODqeOCpOODmeODvOODiOODu+ODoeODg+OCu+ODvOOCuDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+44Oh44OD44K744O844K45YWo5L2T44KS6KaL44KL44Gr44Gv44GT44GT44KS44Kv44Oq44OD44Kv44GX44Gm44GP44Gg44GV44GEIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7lho3nlJ88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwNCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+5Lya6K2w5a6k44Go44OB44Oj44OD44OIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDUiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPuengeOBruS8muitsOWupDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA2IiBuYW1lPSJteSByb29tcyI+CisgICAgPHZhbHVlPuengeOBruS8muitsOWupCAo44Om44O844K25pWwIDEtMTYg5ZCR44GRKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA3IiBuYW1lPSJteSByb29tcyI+CisgICAgPHZhbHVlPuOCpuOCp+ODk+ODiuODvCAo44Om44O844K25pWwIDEtMTIwIOWQkeOBkSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwOCIgbmFtZT0icm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPuS8muitsOWupOOBrueuoeeQhuiAhSjlrqTplbcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDkiIG5hbWU9ImxvZ2luIGVycm9yIj4KKyAgICA8dmFsdWU+44OR44K544Ov44O844OJ44KS5YWl5Yqb44GX44Gm44GP44Gg44GV44GEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTAiIG5hbWU9ImxvZ2luIGVycm9yIj4KKyAgICA8dmFsdWU+44Om44O844K244O744Os44OZ44Or44CB5Y+45Lya6ICF44CB44G+44Gf44Gv566h55CG6ICF5qip6ZmQ44KS5pyJ44GZ44KL44Ki44Kr44Km44Oz44OI44GM5b+F6KaB44Gn44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTEiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT7jgqbjgqfjg5bjg7vjgrXjg7zjg5PjgrkgKFNPQVDjgafjga7jgb/pgannlKgpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTIiIG5hbWU9InVwbG9hZCBmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+44Ob44Ov44Kk44OI44Oc44O844OJ44Gr55u05o6l44Ot44O844OJ44GZ44KLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTMiIG5hbWU9IndoaXRlYm9hcmQgY2xvc2UgY29uZmlybWF0aW9uIj4KKyAgICA8dmFsdWU+44Ob44Ov44Kk44OI44Oc44O844OJ44KS5YmK6Zmk44GX44Gm44KI44KN44GX44GE44Gn44GZ44GL77yfIOazqOaEj++8muWJiumZpOOBl+OBn+ODm+ODr+OCpOODiOODnOODvOODieOBr+WFg+OBq+aIu+OBm+OBvuOBm+OCkyEhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTQiIG5hbWU9IndoaXRlYm9hcmQgbG9hZCBXTUwiPgorICAgIDx2YWx1ZT7jg5vjg6/jgqTjg4jjg5zjg7zjg4njgavjg63jg7zjg4njgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxNSIgbmFtZT0icmVjb3JkaW5nIGZsYWciPgorICAgIDx2YWx1ZT7pjLLnlLvjgZnjgovlv4XopoHjgYzjgYLjgovloLTlkIjjga/jgIHpjLLnlLvjgpLplovlp4vjgZfjgabjgY/jgaDjgZXjgYTjgILjgaDjgozjgYvjgYzpjLLnlLvjgpLplovlp4vjgZfjgarjgYTpmZDjgorjgIHkvJrorbDjga7pjLLnlLvjga/jgZXjgozjgb7jgZvjgpPjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxNiIgbmFtZT0icmVjb3JkaW5nIGZsYWciPgorICAgIDx2YWx1ZT7pjLLnlLvjgpLplovlp4s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxNyIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT7nn6LljbA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxOCIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT7lhoY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxOSIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT7nt5o8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyMCIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT7lm5vop5LlvaI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyMSIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT7kuInop5LlvaI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyMiIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPuODhuOCreOCueODiOODu+azqOmHiDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIzIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+44Kv44Oq44OD44OX44Ki44O844OIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjQiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT7jg5Xjg6rjg7zjg6njgqTjg7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNSIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPumBuOaKnuODu+enu+WLlTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI2IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+5Zuz5b2i5o+P55S7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjciIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT7liIfjgorlj5bjgorjg7vnp7vli5U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyOCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPuOCuuODvOODoOODu+OCpOODsy/jgqLjgqbjg4g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyOSIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPuWNsOWItzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMwIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+5YWD44Gr5oi744GZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzEiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT7jgrTjg5/nrrE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMiIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPuOCsOODquODg+ODiee3muOCkuihqOekujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMzIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+44OV44Kh44Kk44Or5YWx5pyJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzQiIG5hbWU9Imljb24gc3VibWVudSI+CisgICAgPHZhbHVlPuWbs+W9ouOCkumBuOaKnjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM1IiBuYW1lPSJpY29uIHN1Ym1lbnUiPgorICAgIDx2YWx1ZT7jgq/jg6rjg4Pjg5fjgqLjg7zjg4jjgpLpgbjmip48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNiIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPuOCs+ODlOODvDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM3IiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+5YiH44KK5Y+W44KKPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzgiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT7osrzjgorku5jjgZE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzOSIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPuWJiumZpDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQwIiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+44Ob44Ov44Kk44OI44Oc44O844OJ44Gu5YaF5a6544KS5YWo44Gm5YmK6Zmk44GX44Gm44KI44KN44GX44GE44Gn44GZ44GL77yfPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDEiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT7jg5vjg6/jgqTjg4jjg5zjg7zjg4njgavnm7TmjqXjg63jg7zjg4njgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MiIgbmFtZT0iYXR0ZW5kZWVzIj4KKyAgICA8dmFsdWU+5Y+C5Yqg6ICFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDMiIG5hbWU9ImF0ZW5kZWUgbWFuYWdlciI+CisgICAgPHZhbHVlPuWPguWKoOiAheODnuODjeODvOOCuOODozwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ0IiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT7lnKjluK08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NSIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+44Oq44Oi44O844OI44Kz44Oz44OI44Ot44O844OrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDYiIG5hbWU9ImF0ZW5kZWUgbWFuYWdlciI+CisgICAgPHZhbHVlPui/veOBhOWHuuOBmTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ3IiBuYW1lPSJjaGF0Ij4KKyAgICA8dmFsdWU+44OB44Oj44OD44OIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDgiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPuWPguWKoOiAheOCkuaLm+W+heOBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ5IiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT7jg6Hjg7zjg6vkvb/nlKg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1MCIgbmFtZT0iaW52aXRlIGF0dGVuZGVlIj4KKyAgICA8dmFsdWU+44Om44O844K244Gv5Y+45Lya6ICF44Gn44GZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTEiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPuODpuODvOOCtuOBr+OCpuOCp+ODluOCq+ODoeODqeOCkuOCquODs+ODqeOCpOODs+OBq+OBl+OBvuOBl+OBnzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUyIiBuYW1lPSJmaWxsX29wdGlvbiI+CisgICAgPHZhbHVlPuWhl+OCiuOBpOOBtuOBl+OCkueEoeWKueOBq+OBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUzIiBuYW1lPSJmaWxsX29wdGlvbiI+CisgICAgPHZhbHVlPuWhl+OCiuOBpOOBtuOBl+OCkuacieWKueOBq+OBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU0IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+44Kw44Oq44OD44OJ44Gr5L2N572u44KS5ZCI44KP44Gb44KLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTUiIG5hbWU9ImFsbG93X3JlY29yZGluZyI+CisgICAgPHZhbHVlPumMsueUu+OCkuioseWPr+OBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU2IiBuYW1lPSJ3YWl0X2Zvcl9yZWNvcmRpbmciPgorICAgIDx2YWx1ZT7pjLLnlLvplovlp4vjgb7jgaflvoXmqZ/jgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NyIgbmFtZT0iaGlkZV90b3BfYmFyIj4KKyAgICA8dmFsdWU+44OI44OD44OX44OQ44O844KS6Zqg44GZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTgiIG5hbWU9ImZpbGVFeHBsb3JlciI+CisgICAgPHZhbHVlPumMsueUu+OCkuWGjeeUn+OBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU5IiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+6KGo56S65Lit44Gu44K544Op44Kk44OJ44Gu5YaF5a6544KS5YmK6Zmk44GX44Gm44KI44KN44GX44GE44Gn44GZ44GL77yfPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjAiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPuODpuODvOOCtuaoqemZkOOCkuioseWPr+OBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYxIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT7jg6Hjg4Pjgrvjg7zjgrjjgpLmi5LlkKbjgZfjgabliYrpmaTjgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2MiIgbmFtZT0iYWN0aXZpdHlfd2luZG93Ij4KKyAgICA8dmFsdWU+56eBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjMiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPuOCouOCr+ODhuOCo+ODk+ODhuOCoy/jgqLjgq/jgrfjg6fjg7M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NCIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPuODm+ODr+OCpOODiOODnOODvOODieOCkuWJiumZpOOBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY1IiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+44Ob44Ov44Kk44OI44Oc44O844OJ44KS5YmK6Zmk44GX44Gf44KK44CB5pu444GN6L6844KT44Gg44KK44GZ44KL44Gf44KB44Gr44Gv5qip6ZmQ44G+44Gf44Gv6Kix5Y+v44GM5b+F6KaB44Gn44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjYiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT7oqLHlj6/jgZXjgozjgabjgYTjgb7jgZvjgpM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NyIgbmFtZT0idXNlcl9sZWZ0X2FjdF9tc2ciPgorICAgIDx2YWx1ZT7jgZXjgpPjga/kvJrorbDlrqTjgYvjgonpgIDlrqTjgZfjgb7jgZfjgZ88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2OCIgbmFtZT0iY2xpcGFydCBpY29ucyI+CisgICAgPHZhbHVlPuaVsOW8j+OCouOCpOOCs+ODszwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY5IiBuYW1lPSJjbGlwYXJ0IGljb25zIj4KKyAgICA8dmFsdWU+44Kr44OG44K044Oq54Sh44GXPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzAiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPuOCq+ODqeODvOODu+OCueOCv+OCpOODqzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzcxIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT7lm57nt5rlk4Hos6o8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MiIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+44OJ44Oh44Kk44OzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzMiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPuODl+ODreOCuOOCp+OCr+ODiDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc0IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT7jg6zjg4Pjg4njgqrjg6zjg7Pjgrg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+5rW357eR6ImyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzYiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPuaal+mdkueBsOiJsjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc3IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT7pnZLngbDoibI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3OCIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+44K044O844Or44OH44Oz44Os44OD44OJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzkiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPumKgOeZveiJsjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgwIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT7jg6bjg7zjgrblrprnvqk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4MSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+5pyA6auYPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODIiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPuOCouODg+ODl+ODreODvOODiTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgzIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT7kuK3kvY08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NCIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPuODnuOCpOOCr+OCkueEoeWKueOBq+OBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg1IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT7jg57jgqTjgq/jgpLmnInlirnjgavjgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NiIgbmFtZT0iZ2l2ZSBleGNsdXNpdmUgYXVkaW8iPgorICAgIDx2YWx1ZT7ku5bjga7lj4LliqDogIXjga7jg57jgqTjgq/jgpLnhKHlirnjgavjgZfjgabnp4Hjga7jg57jgqTjgq/jgaDjgZHjgpLmnInlirnjgavjgZnjgosgKEYxMik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NyIgbmFtZT0ibXV0ZSBzZWxmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7jgYLjgarjgZ/jga7jg57jgqTjgq/jga/jgIHlj7jkvJrogIXjgavjgojjgaPjgabnhKHlirnljJbjgZXjgozjgabjgYTjgb7jgZnjgILjgYLjgarjgZ/oh6rouqvjga7miYvjgafjg57jgqTjgq/jgpLmnInlirnljJbjgZnjgovjgZPjgajjga/jgafjgY3jgb7jgZvjgpPjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4OCIgbmFtZT0ibXV0ZSBzZWxmIGNvbmZpcm0gbWVzc2FnZSB0aXRsZSI+CisgICAgPHZhbHVlPuOBguOBquOBn+OBruODnuOCpOOCr+OCkueEoeWKueOBq+OBl+OBvuOBmeOBi++8nzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg5IiBuYW1lPSJtdXRlIHNlbGYgY29uZmlybSBtZXNzYWdlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7jgYLjgarjgZ/jga7jg57jgqTjgq/jgpLnhKHlirnjgavjgZfjgabjgojjgo3jgZfjgYTjgafjgZnjgYvvvJ/nhKHlirnjgavjgZnjgovjgajjgIHku5bjga7lj4LliqDogIXjga/jgaDjgozjgoLjgIHjgYLjgarjgZ/jga7pn7Plo7DjgpLogZ7jgY/jgZPjgajjgYzjgafjgY3jgarjgY/jgarjgorjgb7jgZnjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5MCIgbmFtZT0ibXV0ZSBvdGhlcnMgY29uZmlybSBtZXNzYWdlIHRpdGxlIj4KKyAgICA8dmFsdWU+5raI6Z+z44GX44Gm44KI44KN44GX44GE44Gn44GZ44GL77yfPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTEiIG5hbWU9Im11dGUgb3RoZXJzIGNvbmZpcm0gbWVzc2FnZSI+CisgICAgPHZhbHVlPuOBk+OBruWPguWKoOiAheOBruODnuOCpOOCr+OBi+OCieOBrumfs+WjsOOCkua2iOmfs+OBl+OBpuOCiOOCjeOBl+OBhOOBp+OBmeOBi++8n+OBk+OBruaTjeS9nOOBr+OAgeOBguOBquOBn+OBruerr+acq+S4iuOBp+a2iOmfs+OBmeOCi+OBoOOBkeOBp+OBguOBo+OBpuOAgeS7luOBruWPguWKoOiAheOBr+aMh+WumuOBruODnuOCpOOCr+OBi+OCieOBrumfs+WjsOOCkuW8leOBjee2muOBjeiBnuOBj+OBk+OBqOOBjOOBp+OBjeOBvuOBmeOAguWPuOS8muiAheOBoOOBkeOBjOOAgeWFqOWPguWKoOiAheOBruODnuOCpOOCr+OBruacieWKueWMluODu+eEoeWKueWMluOCkuihjOOBhuOBk+OBqOOBjOOBp+OBjeOBvuOBmeOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkyIiBuYW1lPSJtdXRlIG90aGVycyBjb25maXJtIG1lc3NhZ2UgdGl0bGUiPgorICAgIDx2YWx1ZT7jg57jgqTjgq/jgpLnhKHlirnjgavjgZfjgabjgojjgo3jgZfjgYTjgafjgZnjgYvvvJ88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5MyIgbmFtZT0ibXV0ZSBvdGhlcnMgbW9kZXJhdG9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7jgZPjga7lj4LliqDogIXjga7jg57jgqTjgq/jgpLnhKHlirnljJbjgZfjgabjgojjgo3jgZfjgYTjgafjgZnjgYvvvJ/ku5bjga7lj4LliqDogIXjga/jgaDjgozjgoLjgIHjgZPjga7lj4LliqDogIXjga7pn7Plo7DjgpLogZ7jgY/jgZPjgajjgYzjgafjgY3jgarjgY/jgarjgorjgb7jgZnjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5NCIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT7jgYLjgarjgZ/jga7jg57jgqTjgq/jga/mnInlirnjgafjgZnjgILjgZPjgZPjgpLjgq/jg6rjg4Pjgq/jgZfjgabjgIHlj7jkvJrogIXjgavjg57jgqTjgq/jga7nhKHlirnljJbjgpLkvp3poLzjgZnjgovjgZPjgajjgYzjgafjgY3jgb7jgZnjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5NSIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT7jgYLjgarjgZ/jga7jg57jgqTjgq/jga/nhKHlirnjgafjgZnjgILjgZPjgZPjgpLjgq/jg6rjg4Pjgq/jgZfjgabjgIHlj7jkvJrogIXjgavjg57jgqTjgq/jga7mnInlirnljJbjgpLkvp3poLzjgZnjgovjgZPjgajjgYzjgafjgY3jgb7jgZnjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5NiIgbmFtZT0ibXV0ZSBhcHBseSBzZWxmIG9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7jga/jgIHjg57jgqTjgq/jga7nhKHlirnljJbjgpLkvp3poLzjgZfjgb7jgZnjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5NyIgbmFtZT0ibXV0ZSBhcHBseSBzZWxmIG9mZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+44Gv44CB44Oe44Kk44Kv44Gu5pyJ5Yq55YyW44KS5L6d6aC844GX44G+44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTgiIG5hbWU9Im11dGUgYXBwbHkgb2YgbWVzc2FnZSI+CisgICAgPHZhbHVlPuOBleOCk+OBjOOAgeWPguWKoOiAheOBruODnuOCpOOCr+OBruacieWKueWMluOCkuS+nemgvOOBl+OBpuOBhOOBvuOBmeOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk5IiBuYW1lPSJtdXRlIGFwcGx5IG9mIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7jgZXjgpPjgYzjgIHlj4LliqDogIXjga7jg57jgqTjgq/jga7nhKHlirnljJbjgpLkvp3poLzjgZfjgabjgYTjgb7jgZnjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMCIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT7jg57jgqTjgq/jgpLmnInlirnljJbjgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMSIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT7jg57jgqTjgq/jgpLnhKHlirnljJbjgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMiIgbmFtZT0ibXV0ZSBzZWxmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7jgZPjga7lj4LliqDogIXjga/jgIHlj7jkvJrogIXjgavjgojjgaPjgabjg57jgqTjgq/jgpLnhKHlirnjgavjgZXjgozjgabjgYTjgb7jgZnjgILjgYLjgarjgZ/jga7miYvjgafmnInlirnljJbjgZnjgovjgZPjgajjga/jgafjgY3jgb7jgZvjgpPjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMyIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPuOBguOBquOBn+OBruODnuOCpOOCr+OCkueEoeWKueWMluOBl+OBvuOBmTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA0IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT7jgYLjgarjgZ/jga7jg57jgqTjgq/jgpLmnInlirnljJbjgZfjgb7jgZk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwNSIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPuODnuOCpOOCr+OCkueEoeWKueOBq+OBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA2IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT7jg57jgqTjgq/jgpLmnInlirnjgavjgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwNyIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPuODnuOCpOOCr+OCkueEoeWKueOBq+OBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA4IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT7jg57jgqTjgq/jgpLmnInlirnjgavjgZnjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwOSIgbmFtZT0ibXV0ZSBtb2RlcmF0b3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPuWPuOS8muiAheOBoOOBkeOBjOWQhOWPguWKoOiAheOBruODnuOCpOOCr+OBruacieWKueODu+eEoeWKueOCkuioreWumuOBp+OBjeOBvuOBmeOAguOBguOBquOBn+iHqui6q+OBruODnuOCpOOCr+OCkua2iOmfs+OBl+OBn+OBhOWgtOWQiOOBr+OAgeOBguOBquOBn+OBruODk+ODh+OCqueUu+mdouS4reOBruODnuOCpOOCr+ODu+OCouOCpOOCs+ODs+OCkuS9v+OBo+OBpuOBj+OBoOOBleOBhOOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDEwIiBuYW1lPSJwb2xsX25hbWUiPgorICAgIDx2YWx1ZT7mipXnpajlkI08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMSIgbmFtZT0icG9sbF9uYW1lIj4KKyAgICA8dmFsdWU+44GC44Gq44GfPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTIiIG5hbWU9ImFyY2hpdmVkX3BvbGxzIj4KKyAgICA8dmFsdWU+6YGO5Y6744Gu5oqV56WoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTMiIG5hbWU9ImFjdGl2ZV9wb2xsIj4KKyAgICA8dmFsdWU+5a6f5pa95Lit44Gu5oqV56WoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTQiIG5hbWU9ImNoYXJ0X3NpbXBsZSI+CisgICAgPHZhbHVlPuOCt+ODs+ODl+ODq+ODu+ODgeODo+ODvOODiDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE1IiBuYW1lPSJjaGFydF9waWUiPgorICAgIDx2YWx1ZT7jg5HjgqTjg7vjg4Hjg6Pjg7zjg4g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNiIgbmFtZT0ic2lnbl91cF92YWxpZGF0aW9uIj4KKyAgICA8dmFsdWU+44Oh44O844Or44Ki44OJ44Os44K544KS5YWl5Yqb44GX44Gm44GP44Gg44GV44GEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTciIG5hbWU9ImNoYXRfbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+5paw552A44Oh44OD44K744O844K4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTgiIG5hbWU9InBvbGxfY2xvc2UiPgorICAgIDx2YWx1ZT7mipXnpajjgpLnt6DjgoHliIfjgos8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxOSIgbmFtZT0icG9sbF9jbG9zZV9jb25maXJtIj4KKyAgICA8dmFsdWU+5oqV56Wo44KS57eg44KB5YiH44Gj44Gm44KI44KN44GX44GE44Gn44GZ44GL77yfPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjAiIG5hbWU9InBvbGxfZGVsZXRlIj4KKyAgICA8dmFsdWU+5oqV56Wo44KS5YmK6Zmk44GZ44KLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjEiIG5hbWU9InBvbGxfZGVsZXRlX2NvbmZpcm0iPgorICAgIDx2YWx1ZT7jgZPjga7mipXnpajjgpLliYrpmaTjgZfjgabjgojjgo3jgZfjgYTjgafjgZnjgYvvvJ/lkIzmmYLjgavmipXnpajntZDmnpzjgoLliYrpmaTjgZXjgozjgb7jgZnjgII8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMiIgbmFtZT0ibGFuZ3VhZ2VfY29kZSI+CisgICAgPHZhbHVlPklTT+iogOiqnuOCs+ODvOODiTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIzIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fcGVybWlzc2lvbiI+CisgICAgPHZhbHVlPuWNmOeLrOipseiAheOBq+OBquOCi+OBk+OBqOOCkuioseWPr+ODu+aLkuWQpuOBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI0IiBuYW1lPSJhbGxvd19leGNsdXNpdmVfYXVkaW9fcGVybWlzc2lvbiI+CisgICAgPHZhbHVlPuWNmOeLrOipseiAheOBq+OBquOCi+OBk+OBqOOCkuioseWPr+OBmeOCizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI1IiBuYW1lPSJkZW55X2V4Y2x1c2l2ZV9hdWRpb19wZXJtaXNzaW9uIj4KKyAgICA8dmFsdWU+5Y2Y54us6Kmx6ICF44Gr44Gq44KL44GT44Go44KS5ouS5ZCm44GZ44KLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjYiIG5hbWU9ImV4Y2xfYXVkaW8gYXBwbHkgc2VsZiBvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+44Gv44CB5Y2Y54us6Kmx6ICF44Gr44Gq44KL44GT44Go44KS5biM5pyb44GX44G+44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjciIG5hbWU9ImV4Y2xfYXVkaW8gYXBwbHkgb2YgbWVzc2FnZSI+CisgICAgPHZhbHVlPuOBleOCk+OBjOOAgeWNmOeLrOipseiAheOBq+OBquOCi+OBk+OBqOOCkuW4jOacm+OBl+OBpuOBhOOBvuOBmeOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI4IiBuYW1lPSJleGNsX2F1ZGlvIHN0YXR1cyBpY29ucyI+CisgICAgPHZhbHVlPuWNmOeLrOipseiAheOBq+OBquOCi+OBk+OBqOOCkuioseWPr+OBmeOCi+OAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI5IiBuYW1lPSJjYW1fcmVzb2x1dGlvbiI+CisgICAgPHZhbHVlPuOCq+ODoeODqeino+WDj+W6pjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMwIiBuYW1lPSJjYW1fcmVzb2x1dGlvbl9pbmZvIj4KKyAgICA8dmFsdWU+6Kej5YOP5bqm44Gu5aSJ5pu044Gv44ON44OD44OI44Ov44O844Kv5biv5Z+f44Gr5b2x6Z+/44GX44G+44GZ44CC6auY6Kej5YOP5bqm44Gu44OT44OH44Kq55S75YOP44Gv44CB44KI44KK5aSa44GP44Gu44ON44OD44OI44Ov44O844Kv5biv5Z+f44KS5b+F6KaB44Go44GX44G+44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzEiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19lcnJvciI+CisgICAgPHZhbHVlPuOBguOBquOBn+OBr+OAgeOBguOBquOBn+iHqui6q+OCkuOAgeOBguOCi+OBhOOBr+S7luOBruWPguWKoOiAheOCkuWNmOeLrOipseiAheOBq+OBmeOCi+aoqemZkOOCkuaMgeOBo+OBpuOBhOOBvuOBm+OCk+OAguWPuOS8muiAheOBq+aoqemZkOOCkuS7mOS4juOBl+OBpuOCguOCieOBhuOBi+OAgeWPuOS8muiAheOBq+WNmOeLrOipseiAheOBruaMh+WumuOCkuS+nemgvOOBl+OBpuOBj+OBoOOBleOBhOOAgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMyIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fYXNrIj4KKyAgICA8dmFsdWU+56eB44Gv44CB5Y2Y54us6Kmx6ICF44Gr44Gq44KL44GT44Go44GM44Gn44GN44KL5qip6ZmQ44Gu5LuY5LiO44KS5L6d6aC844GX44G+44GZ44CCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzMiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19hY3Rpb24iPgorICAgIDx2YWx1ZT7jgYLjgarjgZ/jga/jgIHoh6rliIboh6rouqvjga7miYvjgafljZjni6zoqbHogIXjgavjgarjgovjgZPjgajjgYzjgafjgY3jgb7jgZnjgILljZjni6zoqbHogIXjgavjgarjgovjgavjga/jgIHjgZPjgZPjgpLjgq/jg6rjg4Pjgq/jgZfjgabjgY/jgaDjgZXjgYTjgIIo44G+44Gf44Gv44CB44GC44Gq44Gf44Gu44OT44OH44Kq55S76Z2i44Gn44Kv44Oq44OD44Kv44CB44GC44KL44GE44GvRjEy5oq85LiL44Gn44KC5Y+v6IO944Gn44GZKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM0IiBuYW1lPSJtaWNybyBpcyBvbiI+CisgICAgPHZhbHVlPk1pY3JvcGhvbmUgaXMgb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzUiIG5hbWU9Im1pY3JvIGlzIG9mZiI+CisgICAgPHZhbHVlPk1pY3JvcGhvbmUgaXMgbXV0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNiIgbmFtZT0iaGlkZV9jaGF0Ij4KKyAgICA8dmFsdWU+SGlkZSBjaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzciIG5hbWU9ImhpZGVfYWN0aXZpdGllc19hbmRfYWN0aW9ucyI+CisgICAgPHZhbHVlPkhpZGUgYWN0aXZpdGllczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM4IiBuYW1lPSJoaWRlX2ZpbGVzX2V4cGxvcmVyIj4KKyAgICA8dmFsdWU+SGlkZSBmaWxlcyBleHBsb3JlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM5IiBuYW1lPSJoaWRlX2FjdGlvbnNfbWVudSI+CisgICAgPHZhbHVlPkhpZGUgYWN0aW9ucyBtZW51PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDAiIG5hbWU9ImhpZGVfc2NyZWVuX3NoYXJpbmciPgorICAgIDx2YWx1ZT5IaWRlIHNjcmVlbiBzaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDEiIG5hbWU9ImhpZGVfd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkhpZGUgd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQyIiBuYW1lPSJzaG93IG1pY3JvcGhvbmUgc3RhdHVzIj4KKyAgICA8dmFsdWU+U2hvdyBtaWNybyBzdGF0dXMgaW4gdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MyIgbmFtZT0ibGF5b3V0X29wdGlvbnMiPgorICAgIDx2YWx1ZT5MYXlvdXQgb3B0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ0IiBuYW1lPSJjYWxlbmRhciBuZXcgYnV0dG9uIj4KKyAgICA8dmFsdWU+TmV3IEV2ZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDUiIG5hbWU9ImNhbGVuZGFyIHBhc3N3b3JkIGluZm8gdGV4dCI+CisgICAgPHZhbHVlPlBhc3N3b3JkIHByb3RlY3RlZCBhcmUgdGhlIGxpbmtzIHRvIHRoZSBjb25mZXJlbmNlIHRoYXQgYXJlIHNlbmQgdG8gdGhlIHBhcnRpY2lwZW50cyB3aGVuIHlvdSBzYXZlIHRoZSBjYWxlbmRhciBldmVudCwgbm90IHRoZSByb29tISBUaGF0IG1lYW5zIGlmIHlvdSBzYXZlIHRoZSBldmVudCBtdWx0aXBsZSB0aW1lcyBidXQgd2l0aCBkaWZmZXJlbnQgcGFzc3dvcmRzIGV2ZXJ5IHBhcnRpY2lwZW50IHJlY2VpdmVzIGEgbmV3IGxpbmsgdGhhdCBoYXMgYSBkaWZmZXJlbnQgcGFzc3dvcmQuIEJ1dCBvbGQgbGlua3Mgc3RpbGwgd29yayBvbmNlIHNlbmQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDYiIG5hbWU9ImNhbGVuZGFyIGVkaXQgYnV0dG9uIj4KKyAgICA8dmFsdWU+RWRpdCBkZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDciIG5hbWU9InNpcCBzaG93IGRpYWxlciI+CisgICAgPHZhbHVlPlNob3cgc2lwIGRpYWxlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ4IiBuYW1lPSJzaXAgY2FsbCI+CisgICAgPHZhbHVlPkNhbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0OSIgbmFtZT0iY2FsZW5kYXIgY29udGFjdCBsaXN0Ij4KKyAgICA8dmFsdWU+U2hvdyBjYWxlbmRhciBldmVudHMgb2YgY29udGFjdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUwIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5Zb3VyIGhvbWUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTEiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPlBsYW4geW91ciBtZWV0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUyIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5XYXRjaCByZWNvcmRpbmcgYW5kIGludGVydmlld3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MyIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+Q2hvb3NlIGFuZCBzdGFydCBhIHdlYi1jb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTQiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSB1c2VycyBhbmQgcmlnaHRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTUiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBjb25uZWN0aW9ucyBhbmQga2ljayB1c2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU2IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgdXNlcmdyb3VwczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU3IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgY29uZmVyZW5jZSByb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU4IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2Ugc3lzdGVtIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTkiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBsYWJlbHMgYW5kIHdvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIExEQVAgYW5kIEFEUyBjb25maWd1cmF0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYxIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5FeHBvcnQvSW1wb3J0IFN5c3RlbSBCYWNrdXBzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjIiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCBtb2RlcmF0aW9uIG9yIHRoZSByaWdodCB0byBkcmF3IG9uIHdoaXRlYm9hcmQgdG8gdXBsb2FkLCBhZGQsIGRlbGV0ZSBvciBsb2FkIGZpbGVzIGFuZCBmb2xkZXJzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYzIiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+RWRpdCB0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjQiIG5hbWU9InNhbHV0YXRpb24iPgorICAgIDx2YWx1ZT5Qcm9mPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjUiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UHVibGlzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY2IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlN0YXJ0IFB1Ymxpc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2NyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdG9wIFB1Ymxpc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2OCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5Ib3N0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjkiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UHVibGlzaCBBcHA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5QdWJsaXNoIElkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzEiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UmVkdWNlIHRoZSB3aWR0aCBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtb3ZlIGl0IGxlZnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5SZWR1Y2UgdGhlIGhlaWdodCBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtb3ZlIGl0IGJvdHRvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDczIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHVjZSB0aGUgeCBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtYWtlIGl0IHdpZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzQiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UmVkdWNlIHRoZSB5IG9mIHRoZSBTaGFyaW5nU2NyZWVuIGJlZm9yZSB5b3UgdHJ5IHRvIG1ha2UgaXQgaGlnaGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzUiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+RmlsbCB0aGVzZSBzZXR0aW5ncyBzdHJlYW0geW91ciBzY3JlZW4gZGF0YSB0byAzdGggcGFydHkgcHJvdmlkZXJzIGxpa2UganVzdGluLnR2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzYiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UGxlYXNlIHN0YXJ0IFNjcmVlbiBzaGFyaW5nIHRvIGJlIGFibGUgdG8gcHVibGlzaCBpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc3IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPk1vZGVyYXRvciBwZXJtaXNzaW9uIHJlcXVpcmVkIHRvIHN0YXJ0IHJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc4IiBuYW1lPSJubyByaWdodCBmb3IgZXhjbHVzaXZlIGF1ZGlvIj4KKyAgICA8dmFsdWU+WW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byBhcHBseSBleGNsdXNpdmUgYXVkaW8gdG8gYW55IHBhcnRpY2lwYW50LiBZb3UgbmVlZCBtb2RlcmF0aW9uIHJvbGUgb3IgdGhlIHJpZ2h0IGZvciBleGNsdXNpdmUgYXVkaW8gdG8gbWFrZSBhbnkgbWljcm9waG9uZSBleGNsdXNpdmUgdHVybmVkIG9uLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3OSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+VXBsb2FkIG5ldyBmaWxlIHRvIGZpbGUgZXhwbG9yZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+T3BlbiBuZXcgZGlhbG9nIHdpdGggc2hhcmluZyBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgxIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5BbiBleGlzdGluZyBtb2RlcmF0b3IgbXVzdCBhcHByb3ZlIGl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODIiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkFzayBtb2RlcmF0b3IgdG8gc2hhcmUgeW91ciB3ZWJjYW0vbWljcm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MyIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+R2F0aGVyIGZlZWRiYWNrIGJ5IGNyZWF0aW5nIGEgcG9sbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg0IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5QYXN0IGFuZCBjdXJyZW50IHBvbGwgcmVzdWx0cyBhcyBjaGFydHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Vm90ZSBpZiB0aGVyZSBpcyBhIHBvbGwgZm9yIHRoaXMgY29uZmVyZW5jZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODYiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkVkaXQgY2FtIGFuZCBtaWMgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NyIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Q29uZmlybSBhbmQgbGVhdmUgdGhlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4OCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Q2FsbCBleHRlcm5hbCBwZW9wbGUgdmlhIFZvSVAvU0lQPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODkiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlNlbmQgYW4gZW1haWwgd2l0aCBhIGRpcmVjdCBsaW5rIHRvIHRoaXMgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkwIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5DaGFuZ2UgeW91ciB3aGl0ZWJvYXJkIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTEiIG5hbWU9ImJhY2t1cCBhZG1pbiI+CisgICAgPHZhbHVlPk1heCB1cGxvYWQgc2l6ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkyIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5Bc2sgbW9kZXJhdG9yIHRvIHNoYXJlIHlvdXIgd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkzIiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5TdGFydCBQcml2YXRlIENoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NCIgbmFtZT0iYWxsX3ByaXZhdGVfY2hhdCI+CisgICAgPHZhbHVlPkFsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk1IiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IHN0YXJ0IGEgcHJpdmF0ZSBjaGF0IHdpdGggeW91cnNlbGYuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTYiIG5hbWU9InByaXZhdGUgY2hhdCI+CisgICAgPHZhbHVlPllvdSd2ZSBhbHJlYWR5IHN0YXJ0ZWQgYSBwcml2YXRlIGNoYXQgd2l0aCB0aGlzIHBhcnRpY2lwYW50LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk3IiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcHJpdmF0ZSBjaGF0PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk4IiBuYW1lPSJTZXJ2ZXJzIj4KKyAgICA8dmFsdWU+U2VydmVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk5IiBuYW1lPSJTZXJ2ZXJzIj4KKyAgICA8dmFsdWU+U2VydmVycyBwYXJ0aWNpcGF0aW5nIGluIGNsdXN0ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMCIgbmFtZT0iU2VydmVyIG5hbWUiPgorICAgIDx2YWx1ZT5TZXJ2ZXIgTmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAxIiBuYW1lPSJTZXJ2ZXIgQWRkcmVzcyI+CisgICAgPHZhbHVlPlNlcnZlciBBZGRyZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDIiIG5hbWU9IlNlcnZlciBkZXRhaWxzIj4KKyAgICA8dmFsdWU+U2VydmVyIGRldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMyIgbmFtZT0iU2VuZCBTTVMiPgorICAgIDx2YWx1ZT5TZW5kIFNNUzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA0IiBuYW1lPSJwdWJsaXNoaW5nX21lc3NhZ2UiPgorICAgIDx2YWx1ZT5QdWJsaXNoaW5nLiBVc2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA1IiBuYW1lPSJjbWRfbGluZV9hZG1pbiI+CisgICAgPHZhbHVlPlRvIHNhdmUgdGltZSBhbmQgaW50ZXJuZXQgdHJhZmZpYyB5b3UgY2FuIHVzZSBjb21tYW5kIGxpbmUgYWRtaW4gdG8gYmFja3VwL3Jlc3RvcmUvdXBncmFkZTpcbiAxKSBnbyB0byBPTSBpbnN0YWxsIGRpciAoZm9yIGV4LiAvb3B0L3JlZDUpIFxuIDIpIHN0b3AgT00gKGZvciBleC4gLi9yZWQ1LXNodXRkb3duLnNoKVxuIDMpIC4vYWRtaW4uc2ggLWIgLWZpbGUgfi90b2RheV9vbV9iYWNrdXAuemlwIChjcmVhdGUgYmFja3VwIG9mIGN1cnJlbnQgT00pXG4gNCkgZG93bmxvYWQgYXJjaGl2ZSB3aXRoIG5ldyBPTVxuIDUpIG12IC9vcHQvcmVkNSAvb3B0LnJlZDUuYmFrIChtb3ZlIHdvcmtpbmcgdmVyc2lvbiBvZiBPTSBqdXN0IGluIGNhc2UgOikpXG4gNikgZXh0cmFjdCBkb3dubG9hZGVkIE9NIHRvIHRoZSAvb3B0L3JlZDVcbiA3KSAuL2FkbWluLnNoIC1pIC1maWxlIH4vdG9kYXlfb21fYmFja3VwLnppcCAob3IgJy4vYWRtaW4uc2ggLWkgLWZpbGUgfi90b2RheV9vbV9iYWNrdXAuemlwIC0tZGItdHlwZSBteXNxbCAtLWRiLXVzZXIgb21fdXNlciAtLWRiLXBhc3Mgb21fdXNlcl9wYXNzJyBpbiBjYXNlIG9mIHlvdSBhcmUgdXNpbmcgbm9uLWRlZmF1bHQgREIgKVxuIDgpIHN0YXJ0IE9NXG48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNiIgbmFtZT0icHVibGljX3Jvb21fdG9vbHRpcCI+CisgICAgPHZhbHVlPlJvb21zIGNvbW1vbiB0byBhbGwgdXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA3IiBuYW1lPSJwcml2YXRlX3Jvb21fdG9vbHRpcCI+CisgICAgPHZhbHVlPlJvb21zIGNvbW1vbiB0byB0aGUgY3VycmVudCB1c2VyIGdyb3VwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDgiIG5hbWU9Im15X3Jvb21fdG9vbHRpcCI+CisgICAgPHZhbHVlPlJvb21zIG9mIHRoZSBjdXJyZW50IHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwOSIgbmFtZT0iY3JlYXRlX25ld19yb29tIj4KKyAgICA8dmFsdWU+Q3JlYXRlL01vZGlmeSBhcHBvaW50bWVudCBzcGVjaWFsIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxMCIgbmFtZT0ibXVsdGlwbGVfYWRkcmVzc2VzIj4KKyAgICA8dmFsdWU+WW91IGNhbiBlbnRlciBtdWx0aXBsZSBhZGRyZXNzZXMgaW4gdGhlIGZvcm1hdDogZmlyc3RuYW1lMSBsYXN0bmFtZTEgJmx0O2VtYWlsMSZndDssImZpcnN0bmFtZTIgbGFzdG5hbWUyIiAmbHQ7ZW1haWwyJmd0OywnZmlyc3RuYW1lMyBsYXN0bmFtZTMnICZsdDtlbWFpbDMmZ3Q7LCAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxMSIgbmFtZT0ic3RyZWFtX3ZvbHVtZSI+CisgICAgPHZhbHVlPkFkanVzdCBzdHJlYW0gdm9sdW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTIiIG5hbWU9Im1pY3JvcGhvbmVfdm9sdW1lIj4KKyAgICA8dmFsdWU+QWRqdXN0IG1pY3JvcGhvbmUgdm9sdW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTMiIG5hbWU9ImNoYXRfbW9kZXJhdGVkIj4KKyAgICA8dmFsdWU+SXMgY2hhdCBtb2RlcmF0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNCIgbmFtZT0iY2hhdF9tb2RlcmF0ZWQiPgorICAgIDx2YWx1ZT5BbGxvdyBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTUiIG5hbWU9ImNoYXRfb3BlbmVkIj4KKyAgICA8dmFsdWU+Q2hhdCBwYW5lbCBvcGVuZWQgYnkgZGVmYXVsdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE2IiBuYW1lPSJmaWxlc19vcGVuZWQiPgorICAgIDx2YWx1ZT5GaWxlcyBwYW5lbCBvcGVuZWQgYnkgZGVmYXVsdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE3IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gc2VjdGlvbiBsYXN0cGluZyI+CisgICAgPHZhbHVlPkxhc3QgcGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE4IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gc2VjdGlvbiBsYXN0cGluZyBpbmZvIj4KKyAgICA8dmFsdWU+RXZlcnkgc2xhdmUgc2VuZHMgYSBwaW5nIHRvIHRoZSBtYXN0ZXIgZXZlcnkgMyBzZWNvbmRzIChjb25maWd1cmFibGUpLiBTbGF2ZSBsYXN0UGluZyBtdXN0IGJlIHNtYWxsZXIgdGhlbiAxIG1pbnV0ZSBzbyB0aGF0IHRoZSBtYXN0ZXIgdXNlcyB0aGUgc2xhdmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTkiIG5hbWU9InNlcnZlciBhZG1pbiBwb3J0Ij4KKyAgICA8dmFsdWU+SFRUUCBQb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjAiIG5hbWU9InNlcnZlciBhZG1pbiB1c2VyIj4KKyAgICA8dmFsdWU+VXNlciAoU09BUC1BY2Nlc3MpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjEiIG5hbWU9InNlcnZlciBhZG1pbiBwYXNzd29yZCI+CisgICAgPHZhbHVlPlBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjIiIG5hbWU9InNlcnZlciBhZG1pbiB3ZWJhcHAgcGF0aCI+CisgICAgPHZhbHVlPldlYmFwcCBwYXRoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjMiIG5hbWU9InNlcnZlciBhZG1pbiBwcm90b2NvbCI+CisgICAgPHZhbHVlPlByb3RvY29sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjQiIG5hbWU9InNlcnZlciBhZG1pbiBwaW5nIHJ1bm5pbmciPgorICAgIDx2YWx1ZT5QaW5nIHJ1bm5pbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyNSIgbmFtZT0ic2VydmVyIGFkbWluIGFjdGl2ZSI+CisgICAgPHZhbHVlPkFjdGl2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI2IiBuYW1lPSJnZW5lcmF0ZV9oYXNoIj4KKyAgICA8dmFsdWU+R2VuZXJhdGUgVVJMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjciIG5hbWU9Im5ldHdvcmsgdGVzdGluZyBsaW5rIj4KKyAgICA8dmFsdWU+TmV0d29yayB0ZXN0aW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjgiIG5hbWU9InJvb21fb3B0aW9ucyI+CisgICAgPHZhbHVlPkF1dG8gc2VsZWN0IGludGVydmlldyB2aWRlbyBwb2Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyOSIgbmFtZT0iZm9udF91bmRlcmxpbmUiPgorICAgIDx2YWx1ZT5VbmRlcmxpbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMCIgbmFtZT0iZm9udF9zdHlsZSI+CisgICAgPHZhbHVlPkZvbnQgc3R5bGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMSIgbmFtZT0iYWxsb3dfZm9udF9zdHlsZXMiPgorICAgIDx2YWx1ZT5BbGxvdyBmb250IHN0eWxlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMyIiBuYW1lPSJmb250X2NvbG9yIj4KKyAgICA8dmFsdWU+Rm9udCBjb2xvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMzIiBuYW1lPSJoeXBlcmxpbmsiPgorICAgIDx2YWx1ZT5IeXBlcmxpbms8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNCIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbiI+CisgICAgPHZhbHVlPlNob3cgc2Vzc2lvbiBzdGF0aXN0aWNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzUiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW4iPgorICAgIDx2YWx1ZT5TZXNzaW9uIGRldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNiIgbmFtZT0ic3lzdGVtX2ltcG9ydCI+CisgICAgPHZhbHVlPlN5c3RlbSBpbXBvcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNyIgbmFtZT0iaW5jbHVkZV9pbnRvX2JhY2t1cCI+CisgICAgPHZhbHVlPkluY2x1ZGUgdXBsb2FkZWQgZmlsZXMgYW5kIHJlY29yZGluZ3MgaW4gYmFja3VwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzgiIG5hbWU9InJvb21fYWRtaW5fc2lwIj4KKyAgICA8dmFsdWU+RW5hYmxlIFNJUCB0cmFuc3BvcnQgaW4gdGhlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzOSIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2NvbmZpcm0iPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gcHJvdmlkZSB0aGlzIHVzZXIgYW4gZXhjbHVzaXZlIGF1ZGlvPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTQwIiBuYW1lPSJub190aW1lem9uZSI+CisgICAgPHZhbHVlPlBsZWFzZSBzcGVjaWZ5IHlvdXIgdGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU0NSIgbmFtZT0iY29udGVudF9pc19zYXZpbmciPgorICAgIDx2YWx1ZT5Db250ZW50IGlzIFNhdmluZywgUGxlYXNlIHdhaXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+Cis8L2xhbmd1YWdlPgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9sYW5ndWFnZXMva29yZWFuLnhtbCBiL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL2tvcmVhbi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2QwNjdjYQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL2tvcmVhbi54bWwKQEAgLTAsMCArMSw0NjUyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorCis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitUaGlzIEZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgYnkgdGhlIExhbmd1YWdlRWRpdG9yIAordG8gYWRkIG5ldyBMYW5ndWFnZXMgb3IgbW9kaWZ5L2N1c3RvbWl6ZSBpdCB1c2UgdGhlIExhbmd1YWdlRWRpdG9yIAorc2VlIGh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9MYW5ndWFnZUVkaXRvci5odG1sIGZvciBEZXRhaWxzIAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMtLT4KKzxsYW5ndWFnZSB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczpub05hbWVzcGFjZVNjaGVtYUxvY2F0aW9uPSJsYW5ndWFnZS54c2QiPgorICA8c3RyaW5nIGlkPSIxIiBuYW1lPSJjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+7ZqM7J2YPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIiIG5hbWU9Im1lZXRpbmciPgorICAgIDx2YWx1ZT7rqqjsnoQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMyIgbmFtZT0iY2xhc3Nyb29tIj4KKyAgICA8dmFsdWU+6rWQ7IukPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQiIG5hbWU9InNldHRpbmdzIj4KKyAgICA8dmFsdWU+7IS465SpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUiIG5hbWU9ImJlbnV0emVyIj4KKyAgICA8dmFsdWU+7Jyg7KCAPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYiIG5hbWU9ImFkbWluIj4KKyAgICA8dmFsdWU+6rSA66asPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjciIG5hbWU9InN0b3AiPgorICAgIDx2YWx1ZT7soJXsp4A8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOCIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+6riw66GdPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkiIG5hbWU9Im5vZmlsZSI+CisgICAgPHZhbHVlPuycoO2aqO2VnCDtjIzsnbwg7JeG7J2MPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwIiBuYW1lPSJyZWNvcmRieXRlYWNoZXIiPgorICAgIDx2YWx1ZT7qtZDsgqwg6riw66GdPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExIiBuYW1lPSJjb25uZWN0ZWR1c2VycyI+CisgICAgPHZhbHVlPuyXsOqysOuQnCDsnKDsoIA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyIiBuYW1lPSJzdGFydGNvbmYiPgorICAgIDx2YWx1ZT7tmozsnZgg7Iuc7J6RPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzIiBuYW1lPSJteW5hbWUiPgorICAgIDx2YWx1ZT7rs7jsnbgg7J2066aEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0IiBuYW1lPSJ2aWRlb2NvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT7ruYTrjbDsmKQg7ZqM7J2YPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1IiBuYW1lPSJpbXBvcnQiPgorICAgIDx2YWx1ZT7qsIDsp4Dqs6DsmKgg6riw7ZqN7JWIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2IiBuYW1lPSJyZWZyZXNoZmlsZXMiPgorICAgIDx2YWx1ZT7sg4jroZzsmrQg66qp66GdPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3IiBuYW1lPSJ0b21haW5maWxlIj4KKyAgICA8dmFsdWU+66mU7J247YyM7J287JeQPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4IiBuYW1lPSJuZXdwb2xsIj4KKyAgICA8dmFsdWU+7IOIIOyEoOqxsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOSIgbmFtZT0ibmV3cG9sbGhlYWRlciI+CisgICAgPHZhbHVlPuyDiCDshKDqsbDsnZjsnqU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAiIG5hbWU9InF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+7KeI66y4OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMSIgbmFtZT0icG9sbHR5cGUiPgorICAgIDx2YWx1ZT7shKDqsbAg7KKF66WYOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMiIgbmFtZT0iY3JlYXRlIj4KKyAgICA8dmFsdWU+7LC97JWI7ZWY64ukPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzIiBuYW1lPSJpbmZvbWVzc2FnZSI+CisgICAgPHZhbHVlPkluZm86IEVhY2ggY29ubmVjdGVkIHVzZXIgcmVjZWl2ZXMgYSBtZXNzYWdlIHdpdGggdGhlIG5ldyBwb2xsLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNCIgbmFtZT0iY3JlYXRwb2xsIj4KKyAgICA8dmFsdWU+7ISg6rGw66W8IOunjOuTnOyFqOyKteuLiOuLpC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUiIG5hbWU9ImNhbmNlbCI+CisgICAgPHZhbHVlPuustO2aqDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNiIgbmFtZT0ieWVzbm8iPgorICAgIDx2YWx1ZT7rhKQv7JWE64uI7JikPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3IiBuYW1lPSJudW1lcmljIj4KKyAgICA8dmFsdWU+7Iir7J6QIDEtMTA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgiIG5hbWU9InBvbGwiPgorICAgIDx2YWx1ZT7tiKztkZw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkiIG5hbWU9Im1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT7sp4jrrLjsnYQg66eM65Ok6riwIOychO2VtOyEnCDsnZjsnqXsnbQg65CY7Ja07JW87ZWp64uI64ukLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMCIgbmFtZT0idm90ZSI+CisgICAgPHZhbHVlPuuLueyLoOydmCDtiKztkZzqsIAg65Ox66GdIOuQmOyXiOyKteuLiOuLpC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEiIG5hbWU9ImFscmVhZHl2b3RlZCI+CisgICAgPHZhbHVlPuydtOuyiCDshKDqsbDsl5Ag67KM7I2oIO2IrO2RnO2VmOyFqOyKteuLiOuLpC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIiIG5hbWU9InZvdGluZyI+CisgICAgPHZhbHVlPu2IrO2RnCAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzIiBuYW1lPSJhbnN3ZXIiPgorICAgIDx2YWx1ZT7ri7nsi6DsnZgg7J2R64u1OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNCIgbmFtZT0ieWVzIj4KKyAgICA8dmFsdWU+64SkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1IiBuYW1lPSJubyI+CisgICAgPHZhbHVlPuyVhOuLiOyYpDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNiIgbmFtZT0icXVlc3Rpb253YW50Ij4KKyAgICA8dmFsdWU+d2lsbCB3aXNzZW46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3IiBuYW1lPSJwb2xscmVzdWx0cyI+CisgICAgPHZhbHVlPuyEoOqxsCDqsrDqs7w6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4IiBuYW1lPSJxdWVzdGlvbiI+CisgICAgPHZhbHVlPuyniOusuDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkiIG5hbWU9InJlc3VsdHMiPgorICAgIDx2YWx1ZT7qsrDqs7w6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwIiBuYW1lPSJhbnN3ZXJzIj4KKyAgICA8dmFsdWU+64yA64u1OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MSIgbmFtZT0ibm9wb2xsIj4KKyAgICA8dmFsdWU+7Iuc7J6R65CcIOyEoOqxsOqwgCDsl4bsirXri4jri6QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyIiBuYW1lPSJ2b3RpbmdzIj4KKyAgICA8dmFsdWU+7ISg6rGwITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MyIgbmFtZT0ibWVldGluZyI+CisgICAgPHZhbHVlPuuvuOuUqSAo7LWc6rOgIDQg7J6Q66as6rmM7KeAKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NCIgbmFtZT0iY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPu2ajOydmCAo7LWc6rOgIDUwIOyekOumrOq5jOyngCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUiIG5hbWU9InR5cGUiPgorICAgIDx2YWx1ZT7sooXrpZg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYiIG5hbWU9InJlbWFpbmluZ3NlYXRzIj4KKyAgICA8dmFsdWU+64uk66W4IOyekOumrDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NyIgbmFtZT0iYWxyZWFkeWNob3NlbiI+CisgICAgPHZhbHVlPuydtOuvuCDshKDtg50g7ZWY7IWo7Iq164uI64ukLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OCIgbmFtZT0iZW50ZXIiPgorICAgIDx2YWx1ZT7rk6TslrTqsIDri6QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5IiBuYW1lPSJtb2RsZWF2ZSI+CisgICAgPHZhbHVlPuydmOyepeydtCDrr7jrlKnsl5DshJwg64KY6rCA7IWo7Iq164uI64ukPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwIiBuYW1lPSJzeXN0ZW1tZXNzYWdlIj4KKyAgICA8dmFsdWU+7Iuc7Iqk7YWcIOyEpOuqhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MSIgbmFtZT0iY2hvc3NlZGV2aWNlIj4KKyAgICA8dmFsdWU+65SU67CU7J207Iqk66W8IOyEoO2Dne2VmOyLreyLnOyalC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIiIG5hbWU9ImNob29zZWNhbSI+CisgICAgPHZhbHVlPuybuey5tOuplOudvOulvCDshKDtg53tlbQg7KO87Iut7Iuc7JqUOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MyIgbmFtZT0iY2hvb3NlbWljIj4KKyAgICA8dmFsdWU+66eI7J207YGs66W8IOyEoO2Dne2VtCDso7zsi63si5zsmpQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0IiBuYW1lPSJvayI+CisgICAgPHZhbHVlPuuEpDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NSIgbmFtZT0iY2FuY2VsMiI+CisgICAgPHZhbHVlPuustO2aqDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NiIgbmFtZT0icmVjb25lZWN0bmVlZGVkIj4KKyAgICA8dmFsdWU+64uk7IucIOyXsOqysOydtCDtlYTsmpTtlojsirXri4jri6QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3IiBuYW1lPSJlZGl0c2V0dXAiPgorICAgIDx2YWx1ZT7shYvsl4Ug7Y647KeRPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4IiBuYW1lPSJjb3Vyc2UiPgorICAgIDx2YWx1ZT7sp4Ttlok6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5IiBuYW1lPSJsYW5ndWFnZSI+CisgICAgPHZhbHVlPuyWuOyWtDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAiIG5hbWU9Im9rMiI+CisgICAgPHZhbHVlPuuEpDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MSIgbmFtZT0iY2FuY2VsMyI+CisgICAgPHZhbHVlPuustO2aqDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MiIgbmFtZT0iY2xlYXJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+7Lmg7YyQIOyngOyasOq4sDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MyIgbmFtZT0iY2xlYXJ3aGl0ZWJvYXJkcXVlc3Rpb24iPgorICAgIDx2YWx1ZT7sg4jroZzsmrQg6re466a87J2EIOuEo+q4sOyghOyXkCDsuaDtjJDsnYQg7KeA7Jqw6ri4IOybkO2VmOyLreuLiOq5jD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQiIG5hbWU9ImRvbnRhc2thZ2FpbiI+CisgICAgPHZhbHVlPuuLpOyLnCDsp4jrrLjsnYQg7ZW07KO87Iuc66eI7Iut7Iuc7JqUPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1IiBuYW1lPSJubyI+CisgICAgPHZhbHVlPuyVhOuLiOyYpDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NiIgbmFtZT0iZWRpdHNldHVwMiI+CisgICAgPHZhbHVlPuyFi+yXhSDtjrjsp5EyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3IiBuYW1lPSJuZWVkY29uZmlybWF0aW9ud2hpdGVib2FyZCI+CisgICAgPHZhbHVlPuy5oO2MkOyngOyasOyLnOyghCDtmZXsnbgg7JqU7LKtLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OCIgbmFtZT0idXNlcmluZm8iPgorICAgIDx2YWx1ZT7snKDsoIAg7KCV67O0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5IiBuYW1lPSJjbGVhcmRyYXdhcmVhIj4KKyAgICA8dmFsdWU+6re466as64qUIOyekOumrCDsp4Dsm4A8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAiIG5hbWU9InVuZG8iPgorICAgIDx2YWx1ZT7sm5DrnpjrjIDroZwg64+M66Ck64aT64ukLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MSIgbmFtZT0icmVkbyI+CisgICAgPHZhbHVlPuuLpOyLnO2VmOuLpDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MiIgbmFtZT0ic2VsZWN0b2JqZWN0Ij4KKyAgICA8dmFsdWU+66y86rG07J2EIOyEoO2Dne2VtOyjvOyLreyLnOyalC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMiIG5hbWU9InRleHQiPgorICAgIDx2YWx1ZT7sm5DrrLg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQiIG5hbWU9InBhaW50Ij4KKyAgICA8dmFsdWU+7Y6Y7J247Yq4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1IiBuYW1lPSJkcmF3bGluZSI+CisgICAgPHZhbHVlPuyEoCDquIvquLA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYiIG5hbWU9ImRyYXd1Ij4KKyAgICA8dmFsdWU+67CR7KSEIOq4i+q4sDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NyIgbmFtZT0icmVjdCI+CisgICAgPHZhbHVlPuyngeyCrOqwge2YlTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OCIgbmFtZT0iZWxsaXBzZSI+CisgICAgPHZhbHVlPu2DgOybkO2YlTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OSIgbmFtZT0iYXJyb3ciPgorICAgIDx2YWx1ZT7tmZTsgrTtkZw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAiIG5hbWU9ImRlbGV0ZWNob3NlbiI+CisgICAgPHZhbHVlPuyEoO2Dne2VnCDtla3rqqkg7IKt7KCcPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxIiBuYW1lPSJhcHBsaXltb2QiPgorICAgIDx2YWx1ZT7slYzrp57qsowg7Iug7LKt7ZWY7Iut7Iuc7JqULjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MiIgbmFtZT0iYXBwbHkiPgorICAgIDx2YWx1ZT7si6Dssq3tlZjri6QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzIiBuYW1lPSJjYW5jZWwiPgorICAgIDx2YWx1ZT7sgq3soJw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQiIG5hbWU9Im1vZCI+CisgICAgPHZhbHVlPuyCrO2ajOyekOqwgCDrj7zri6Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUiIG5hbWU9ImNsb3NlIj4KKyAgICA8dmFsdWU+64ur64ukPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2IiBuYW1lPSJpdGFsaWMiPgorICAgIDx2YWx1ZT5pdGFsaWM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODciIG5hbWU9ImJvbGQiPgorICAgIDx2YWx1ZT7qtbXsnYAg7LK0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4IiBuYW1lPSJ3YWl0aW5nIj4KKyAgICA8dmFsdWU+6riw64uk66a8PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5IiBuYW1lPSJhcHBseU1lc3NhZ2UiPgorICAgIDx2YWx1ZT7snKDsoIDqsIAg7IKs7ZqM7J6QIOyLoOyyreydhCDsm5Dtlanri4jri6Q6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwIiBuYW1lPSJhY2NlcHQiPgorICAgIDx2YWx1ZT7rsJvslYTrk6TsnbTri6QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxIiBuYW1lPSJyZWplY3QiPgorICAgIDx2YWx1ZT7qsbDrtoDtlZjri6QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyIiBuYW1lPSJjYW5jZWwiPgorICAgIDx2YWx1ZT7sgq3soJw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMiIG5hbWU9InNlbmRtb2RyZXF1ZXN0bWVzc2FnZSI+CisgICAgPHZhbHVlPuuwkeydmCDsnKDsoLjrk6Tsl5DqsIAg7JqU7LKt7J2EIOuztOuDhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NCIgbmFtZT0iYWNjZXB0Ij4KKyAgICA8dmFsdWU+7ZmV7J6E7J20IOuQqeyKteuLiOuLpC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUiIG5hbWU9InJlamVjdCI+CisgICAgPHZhbHVlPuqxsOu2gOqwgOuQqeyKteuLiOuLpC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYiIG5hbWU9ImNoYW5nZW1vZCI+CisgICAgPHZhbHVlPuyCrO2ajOyekOuhnCDrsJTrgbA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTciIG5hbWU9Im5vbm1vZGVycm9ybWVzc2FnZSI+CisgICAgPHZhbHVlPllvdSBhcmUgbm90IG1vZGVyYXRpbmcgdGhpcyBjb3Vyc2UhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4IiBuYW1lPSJtb2RlcmF0b3IiPgorICAgIDx2YWx1ZT7sgqztmozsnpA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5IiBuYW1lPSJyb29tZnVsbG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7snbTrsKkg7KCV7JuQ7J2AIOq9iSDssL7sirXri4jri6QuIOyjhOyGoe2VqeuLiOuLpC4g64uk7J2M7JeQIOyYpOyLreyLnOyalC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwIiBuYW1lPSJlbGxsaXBzZSI+CisgICAgPHZhbHVlPu2DgOybkDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEiIG5hbWU9ImNsb3NlIj4KKyAgICA8dmFsdWU+64ur64ukPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMiIgbmFtZT0iQXV0aEVycm9yIj4KKyAgICA8dmFsdWU+642w7J2064ukIOyYpOulmCDsnoXroKU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzIiBuYW1lPSJtaW40dXNlcm5hbWUiPgorICAgIDx2YWx1ZT7snKDsoIAg7J2066aE7J2AIOy1nOyGjCA0IOusuOyekOqwgCDrj7zslrTslbztlanri4jri6QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNCIgbmFtZT0ibWluNHBhc3MiPgorICAgIDx2YWx1ZT7snKDsoIAg67mE67CA67KI7Zi464qUIOy1nOyGjCA0IOusuOyekOqwgCDrj7zsl6zslbztlanri4jri6QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNSIgbmFtZT0idXNlcm5hbWV0YWtlbiI+CisgICAgPHZhbHVlPuuYkeqwmeydgCDsnKDsoIDsnbTrpoTsnbQg7KG07J6s7ZWp64uI64ukLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYiIG5hbWU9ImVtYWlsdGFrZW4iPgorICAgIDx2YWx1ZT7rmJHqsJnsnYAg7J2066mU7J28IOyjvOyGjOqwgCDsnbTrr7gg65Ox66Gd64+87Ja0IOyeiOyKteuLiOuLpC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3IiBuYW1lPSJlbWFpbHRha2VuIj4KKyAgICA8dmFsdWU+7Iuc7Iqk7YWcIOyYpOulmOqwgCDsg53qsrzsirXri4jri6QuIOyLnOyKpO2FnCDqtIDrpqzsnpDsl5Ag7Jew65297KO87Iut7Iuc7JqULjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgiIG5hbWU9IkF1dGhsb2dpbiI+CisgICAgPHZhbHVlPuuhnOq4tDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkiIG5hbWU9IkF1dGh1c2VyIj4KKyAgICA8dmFsdWU+7Jyg7KCAOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAiIG5hbWU9IkF1dGhwYXNzIj4KKyAgICA8dmFsdWU+7Yyo7IqkOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEiIG5hbWU9IkF1dGhsYW5nIj4KKyAgICA8dmFsdWU+7Ja47Ja0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMiIgbmFtZT0iQXV0aHJlZyI+CisgICAgPHZhbHVlPuuhnOq4tDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMiIG5hbWU9InJlZ2Zvcm1oZWFkIj4KKyAgICA8dmFsdWU+65Ox66GdPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNCIgbmFtZT0icmVnZm9ybXVzZXIiPgorICAgIDx2YWx1ZT7snKDsoIA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNSIgbmFtZT0icmVnZm9ybXBhc3MiPgorICAgIDx2YWx1ZT7tjKjsiqQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNiIgbmFtZT0icmVnZm9ybXJldHlwZSI+CisgICAgPHZhbHVlPuuLpOyLnO2DgOyehDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3IiBuYW1lPSJyZWdmb3JtZmlyc3RuYW1lIj4KKyAgICA8dmFsdWU+7J2066aEOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgiIG5hbWU9InJlZ2Zvcm1sYXN0bmFtZSI+CisgICAgPHZhbHVlPuyEsTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5IiBuYW1lPSJyZWdmb3JtbWFpbCI+CisgICAgPHZhbHVlPuyjvOyGjDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwIiBuYW1lPSJyZWdmb3Jtc3RhdGUiPgorICAgIDx2YWx1ZT7rgpjrnbw6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMSIgbmFtZT0icmVnZm9ybWJ0bjEiPgorICAgIDx2YWx1ZT7rk7HroZ08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyIiBuYW1lPSJyZWdmb3JtYnRuMiI+CisgICAgPHZhbHVlPuy3qOyGjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMiIG5hbWU9IkF1dGhidG4yIj4KKyAgICA8dmFsdWU+65Ox66GdPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+7KeRPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNSIgbmFtZT0idXNlcmFkbWluIj4KKyAgICA8dmFsdWU+7Jyg7KCAPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNiIgbmFtZT0iZ3JvdXBhZG1pbiI+CisgICAgPHZhbHVlPuuLpOyytDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjciIG5hbWU9Im9yZ2FkbWluIj4KKyAgICA8dmFsdWU+7KGw7KeBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOCIgbmFtZT0iaGVhZGNvbmYiPgorICAgIDx2YWx1ZT7tmozsnZjsi6Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5IiBuYW1lPSJjb25mX3B1YiI+CisgICAgPHZhbHVlPuqzteqzteyepeyGjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAiIG5hbWU9ImhlYWRfb3JnIj4KKyAgICA8dmFsdWU+7KGw7KeBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMSIgbmFtZT0iYnRuX2VudGVycm9vbSI+CisgICAgPHZhbHVlPuuTpOyWtOqwgOuLpDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIiIG5hbWU9InVzZXJhbHRlcnNlbGZfbG9naW4iPgorICAgIDx2YWx1ZT7roZzquLQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Bhc3MiPgorICAgIDx2YWx1ZT7ruYTrsIDrsojtmLg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Bhc3NyZXR5cGUiPgorICAgIDx2YWx1ZT7ri6Tsi5wg7YOA7J207ZSEIOy5mOuLpC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2ZpcnN0bmFtZSI+CisgICAgPHZhbHVlPuydtOumhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYiIG5hbWU9InVzZXJhbHRlcnNlbGZfbGFzdG5hbWUiPgorICAgIDx2YWx1ZT7shLE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2VtYWlsIj4KKyAgICA8dmFsdWU+7KO87IaMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOCIgbmFtZT0idXNlcmFsdGVyc2VsZl9iaXJ0aCI+CisgICAgPHZhbHVlPuyDneydvDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkiIG5hbWU9InVzZXJhbHRlcnNlbGZfc3RyZWV0bm8iPgorICAgIDx2YWx1ZT7quLjsnbTrpoQv67KI7Zi4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MCIgbmFtZT0idXNlcmFsdGVyc2VsZl90b3duIj4KKyAgICA8dmFsdWU+7Jqw7Y6467KI7Zi4L+uPmeuEpDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDEiIG5hbWU9InVzZXJhbHRlcnNlbGZfc3RhdGUiPgorICAgIDx2YWx1ZT7rgpjrnbw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2FkcmVzc2NvbW1lbnQiPgorICAgIDx2YWx1ZT7so7zshowg7J247Zi4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MyIgbmFtZT0idXNlcmFsdGVyc2VsZl9oZWFkZXIiPgorICAgIDx2YWx1ZT7snKDsoLjrjbDsnbTri6Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0IiBuYW1lPSJzYXZlbWVudWJhcl9zYXZlbGFiZWwiPgorICAgIDx2YWx1ZT7soIDsnqU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1IiBuYW1lPSJzYXZlbWVudWJhcl9zYXZlbGFiZWwiPgorICAgIDx2YWx1ZT7soIDsnqU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2IiBuYW1lPSJhZG1pbl91c2VybGlzdF91c2VyX2lkIj4KKyAgICA8dmFsdWU+VVNFUi1JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDciIG5hbWU9ImFkbWluX3VzZXJsaXN0X2xvZ2luIj4KKyAgICA8dmFsdWU+66Gc6ri0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OCIgbmFtZT0iYWRtaW5fdXNlcmxpc3RfZmlyc3RuYW0iPgorICAgIDx2YWx1ZT7snbTrpoQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5IiBuYW1lPSJhZG1pbl91c2VybGlzdF9sYXN0bmFtZSI+CisgICAgPHZhbHVlPuyEsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAiIG5hbWU9InR1cm5vdmVybGlzdF9uZXh0Ij4KKyAgICA8dmFsdWU+64uk7J2M7Jy866GcIOuztOyXrOyjvOuLpDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTEiIG5hbWU9InR1cm5vdmVybGlzdF9wcmUiPgorICAgIDx2YWx1ZT7rqLzsoIAg67O07Jes7KSMLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIiIG5hbWU9InNhdmVjb250ZW50X2NvbmZpcm0iPgorICAgIDx2YWx1ZT7quLDroZ3snYQg7KeA7Jqw64ukLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMiIG5hbWU9InNhdmVjb250ZW50X2NvbmZpcm1fY2FuY2VsX2J0biI+CisgICAgPHZhbHVlPuyCreygnDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTQiIG5hbWU9InNhdmVjb250ZW50X2NvbmZpcm1fY29uZmlybV9idG4iPgorICAgIDx2YWx1ZT7sgq3soJw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU1IiBuYW1lPSJzYXZlbWVudWJhcl9hZGRsYWJlbCI+CisgICAgPHZhbHVlPuyDiOuhnOyatCDquLDroZ08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU2IiBuYW1lPSJzYXZlbWVudWJhcl9yZWxvYWRsYWJlbCI+CisgICAgPHZhbHVlPuq4sOuhneydhCDri6Tsi5wg7J6s7IOd7ZWY64ukPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NyIgbmFtZT0ic2F2ZW1lbnViYXJfZGVsZXRlbGFiZWwiPgorICAgIDx2YWx1ZT7quLDroZ3snYQg7KeA7Jqw64ukPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1OCIgbmFtZT0idXNlcmFsdGVyX2FkbWluX3N0YXR1cyI+CisgICAgPHZhbHVlPuyDge2DnDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTkiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9zdGF0dXNJdGVtIj4KKyAgICA8dmFsdWU+66y066Cl7ZWY6rKMIO2VmOuLpDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjAiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9zdGF0dXNJdGVtIj4KKyAgICA8dmFsdWU+6raM7ZWc7J2EIOyjvOuLpDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjEiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9vcmdhbmlzYXRpb24iPgorICAgIDx2YWx1ZT7sobDsp4E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYyIiBuYW1lPSJjYWxlbmRhcl9pY29ubGFiZWwiPgorICAgIDx2YWx1ZT7ri6zroKU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYzIiBuYW1lPSJzYXZld2luZG93X2J0biI+CisgICAgPHZhbHVlPuuLq+uLpDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjQiIG5hbWU9Im9yZ2FuaXNhdGlvbnRhYmxlbGlzdF9pZHJvdyI+CisgICAgPHZhbHVlPuyhsOyngSDrsojtmLg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY1IiBuYW1lPSJvcmdhbmlzYXRpb250YWJsZWxpc3RfbmFtZXJvdyI+CisgICAgPHZhbHVlPuydtOumhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjYiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGlkMSI+CisgICAgPHZhbHVlPuycoOyggDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjciIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGlkMiI+CisgICAgPHZhbHVlPuuwlOuBsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjgiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGlkMyI+CisgICAgPHZhbHVlPuq0gOumrOyekDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjkiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGxhYmVsIj4KKyAgICA8dmFsdWU+7Jyg7KCA64aS7J20PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MCIgbmFtZT0ib3JndmFsdWVfaGVhZGVyIj4KKyAgICA8dmFsdWU+7KGw7KeBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MSIgbmFtZT0ib3JndmFsdWVfb3JnbmFtZSI+CisgICAgPHZhbHVlPuydtOumhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzIiIG5hbWU9Im9yZ3ZhbHVlX29yZ25hbWUiPgorICAgIDx2YWx1ZT7sobDsp4Eg7LaU6rCAPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MyIgbmFtZT0ib3JndmFsdWVfb3JnbmFtZSI+CisgICAgPHZhbHVlPuyhsOyngSDstpTqsIA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc0IiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luIj4KKyAgICA8dmFsdWU+7IKt7KCcPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3NSIgbmFtZT0ib3JndmFsdWVfdXNlcndpbiI+CisgICAgPHZhbHVlPuy2lOqwgO2VmOuLpDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzYiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW4iPgorICAgIDx2YWx1ZT7sobDsp4Eg7LaU6rCAPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3NyIgbmFtZT0ib3JndmFsdWVfdXNlcmxpc3QiPgorICAgIDx2YWx1ZT7snKDsoIA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc4IiBuYW1lPSJvcmd2YWx1ZV91c2VybGlzdGFkZCI+CisgICAgPHZhbHVlPuycoOyggOy2lOqwgDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzkiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJsaXN0ZGVsZXRlIj4KKyAgICA8dmFsdWU+7Jyg7KCAIOyngOyasOq4sDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODAiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5oZWFkZXIiPgorICAgIDx2YWx1ZT7snKDsoIAg7LaU6rCAPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4MSIgbmFtZT0ib3JndmFsdWVfdXNlcndpbnNlYXJjaGZpZWxkIj4KKyAgICA8dmFsdWU+7Jyg7KCAIOywvuq4sDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODIiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5zZWFyY2hidG4iPgorICAgIDx2YWx1ZT7ssL7quLA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgzIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luc2VhcmNocmVzdWx0Ij4KKyAgICA8dmFsdWU+7Jyg7KCAPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NCIgbmFtZT0ibG9naW53aW5fY2hvb3Nlb3JnYW5pc2F0aW9uIj4KKyAgICA8dmFsdWU+7KGw7KeBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NSIgbmFtZT0ibG9naW53aW5fY2hvb3Nlb3JnYW5pc2F0aW9uYnRuIj4KKyAgICA8dmFsdWU+7J6F66ClPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NiIgbmFtZT0ibmF2aV9yb29tYWRtaW4iPgorICAgIDx2YWx1ZT7tmozsnZjsi6Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg3IiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+7ZqM7J2Y7IukPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4OCIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPuyVhOydtOuUlDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODkiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT7snbTrpoQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkwIiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+6rO16rO17J6l7IaMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5MSIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPuyhsOyngTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTIiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT7tmozsnZjsi6Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkzIiBuYW1lPSJyb29tdmFsdWVfbmFtZSI+CisgICAgPHZhbHVlPuydtOumhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTQiIG5hbWU9InJvb212YWx1ZV90eXBlIj4KKyAgICA8dmFsdWU+7KKF66WYPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NSIgbmFtZT0icm9vbXZhbHVlX2lzcHVibGljIj4KKyAgICA8dmFsdWU+6rO16rO17J6l7IaMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NiIgbmFtZT0icm9vbXZhbHVlX2NvbW1lbnQiPgorICAgIDx2YWx1ZT7snZjqsqw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk3IiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVpY29uIj4KKyAgICA8dmFsdWU+7KCA7J6lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5OCIgbmFtZT0id2hpdGVib2FyZF9vcGVuaWNvbiI+CisgICAgPHZhbHVlPuyeheugpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTkiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2luaGVhZGVyIj4KKyAgICA8dmFsdWU+Li7smYAg6rCZ7J20IOyggOyepSDtlZjri6Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAwIiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbnRleHQiPgorICAgIDx2YWx1ZT7tjIzsnbzsnbTrpoQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAxIiBuYW1lPSJmaWxlcyI+CisgICAgPHZhbHVlPu2MjOydvOydtOumhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDIiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2luYnRuMSI+CisgICAgPHZhbHVlPuyCreygnDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDMiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2luYnRuMiI+CisgICAgPHZhbHVlPuyggOyepTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDQiIG5hbWU9InJwY2Vycm9yd2luX2hlYWRlciI+CisgICAgPHZhbHVlPuyYpOulmDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDUiIG5hbWU9ImxvYWR3bWxfaGVhZGVyIj4KKyAgICA8dmFsdWU+7J6l7KCEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNiIgbmFtZT0ibG9hZHdtbF9tZXNzc2xvYWQiPgorICAgIDx2YWx1ZT7rrLzssrQg7J6l7KCEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNyIgbmFtZT0ibG9hZHdtbF9tZXNzc3luYyI+CisgICAgPHZhbHVlPnNueWNocm9uaXppbmcgY2xpZW50cywgY2xpZW50cyB0byB3YWl0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDgiIG5hbWU9ImxvYWRpbWFnZV9tZXNzbG9hZCI+CisgICAgPHZhbHVlPuydtOuvuOyngOuNsOydtOuLpCDroZzrlKk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA5IiBuYW1lPSJsb2FkaW1hZ2VfbWVzc3N5bmMiPgorICAgIDx2YWx1ZT5zbnljaHJvbml6aW5nIGNsaWVudHMsIGNsaWVudHMgdG8gd2FpdDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEwIiBuYW1lPSJsb2Fkd21sX2NvbmZpcm1oZWFkZXIiPgorICAgIDx2YWx1ZT7qt7jrpqzripQg6rOzIOyngOyasOq4sDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTEiIG5hbWU9ImxvYWR3bWxfY29uZmlybW1lc3MiPgorICAgIDx2YWx1ZT7qt7jrpqzripQg6rOzIOyngOyasOq4sCDsuaDtjJDsnITsl5Ag66qo65OgIOuNsOydtOuLpOqwgCDsl4bslrTsp5Hri4jri6QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMiIgbmFtZT0ibG9hZHdtbF9jb25maXJtbWVzczIiPgorICAgIDx2YWx1ZT7tjIzsnbzsnbQg66Gc65Sp64+86riw7KCE7JeQIO2ZleyduO2VtOyjvOyLreyLnOyalC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEzIiBuYW1lPSJzZW5kX2ludml0YXRpb25fYnRuIj4KKyAgICA8dmFsdWU+7LSI64yA7J6l7J2EIOuztOuCtOuLpC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE0IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5faGVhZGVyIj4KKyAgICA8dmFsdWU+7LSI64yA7J6l7J2EIOuztOuCtOuLpC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE1IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fc3ViamVjdCI+CisgICAgPHZhbHVlPuyjvOygnDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTYiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9yZWNpcGllbnQiPgorICAgIDx2YWx1ZT7siJjroLnsnbg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE3IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fbWVzc2FnZSI+CisgICAgPHZhbHVlPuuplOyEuOyngDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTgiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9idG5fY29uZmlybSI+CisgICAgPHZhbHVlPuuztOuCtOq4sDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTkiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9idG5fY2FuY2VsIj4KKyAgICA8dmFsdWU+7IKt7KCcPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyMCIgbmFtZT0ic2VuZF9jaGF0X3RleHRfYnRuIj4KKyAgICA8dmFsdWU+67O064K06riwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyMSIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2hlYWRlciI+CisgICAgPHZhbHVlPuycoOyggOuNsOydtOuLpDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjIiIG5hbWU9Imludml0ZWRfdXNlcndpbl9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+7J2067KIIO2ajOydmOydmCDri4jtgazrhKTsnoQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIzIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fbG9naW4iPgorICAgIDx2YWx1ZT5uaWNrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNCIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2ZpcnN0bmFtZSI+CisgICAgPHZhbHVlPuydtOumhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjUiIG5hbWU9Imludml0ZWRfdXNlcndpbl9sYXN0bmFtZSI+CisgICAgPHZhbHVlPuyEsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjYiIG5hbWU9Imludml0ZWRfdXNlcndpbl9tYWlsIj4KKyAgICA8dmFsdWU+7J2066mU7J28PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNyIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2xhbmciPgorICAgIDx2YWx1ZT7slrjslrQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI4IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZW50ZXIiPgorICAgIDx2YWx1ZT7snoXroKU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI5IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZW50ZXIiPgorICAgIDx2YWx1ZT7roZzrlKk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMwIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZW50ZXIiPgorICAgIDx2YWx1ZT7rjbDsnbTri6TroZzrlKksIOq4sOuLpOugpOyjvOyLreyLnOyalCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMxIiBuYW1lPSJ1c2VyX3JlZ2lzdGVyRmFsc2VQV0QiPgorICAgIDx2YWx1ZT7snpjrqrvrkJwg7Yyo7Iqk7JuM65OcPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMiIgbmFtZT0idXNlcl9yZWdpc3RlckZhbHNlUFdESGVhZGVyIj4KKyAgICA8dmFsdWU+7LWc7IaMIDQg6rCcIOusuOyekOuhnOuQnCDrkZDqsJzsnZgg65iR6rCZ7J2AIO2MqOyKpOybjOuTnOulvCDsnoXroKXsi5zsvJzso7zsi63si5zsmpQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMzIiBuYW1lPSJ1c2VyX3JlZ2lzdGVyTWFpbEVycm9yIj4KKyAgICA8dmFsdWU+64uk66W4IOuplOydvDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzQiIG5hbWU9InVzZXJfcmVnaXN0ZXJNYWlsRXJyb3JIZWFkZXIiPgorICAgIDx2YWx1ZT7snpjrqrvrkJwg7J2066mc7KO87IaM66W8IOyeheugpe2VmOyYgOyKteuLiOuLpC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM1IiBuYW1lPSJ1c2VyX3JlZ2lzdGVyU3VjY2VzcyI+CisgICAgPHZhbHVlPuuTseuhneydtCDrkKzsirXri4jri6QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzNiIgbmFtZT0idXNlcl9yZWdpc3RlclN1Y2Nlc3NIZWFkZXIiPgorICAgIDx2YWx1ZT7ri7nsi6DsnZgg7Ja07Lm07Jq07Yq46rCAIOyDneqyvOyKteuLiOuLpC4g7KeA6riIIOuhnOq4tOydtOuPvOyWtCDsnojsirXri4jri6QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzNyIgbmFtZT0idXNlcl9zaGFyaW5nX21lc3NhZ2UiPgorICAgIDx2YWx1ZT7ri7nsi6DsnZgg7Iqk7YGs66aw7J2EIOyngOq4iCDqs7XsnKDtlaDsiJgg7JeG7Iq164uI64ukLiDri6TrpbjsgqzrnozsnbQg7J2066+4IOyKpO2BrOumsOydhCDqs7XsnKDtlZjqs6Ag7J6I7Iq164uI64ukLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzgiIG5hbWU9InVzZXJfc2hhcmluZ19tZXNzYWdlSGVhZGVyIj4KKyAgICA8dmFsdWU+6rO17Jyg6riI7KeAPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzOSIgbmFtZT0idXNlcl9kb1N0YXJ0U2NyZWVuVmlld2VyIj4KKyAgICA8dmFsdWU+64u57Iug7J2YIOyKpO2BrOumsOydhCDqs7XsnKDtlZjri6QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0MCIgbmFtZT0ic2NyZWVuX3dhcm5CYW5kd2lkdGgiPgorICAgIDx2YWx1ZT5CYWQgQmFuZHdpZHRoOiBZb3UgaGF2ZSBub3QgYmVlbiBhYmxlIHRvIHN5bmNyb25pemUgdGhlIFNjcmVlbi4gRnJhbWVzIHdpbGwgYmUgZHJvcHBlZC4gSWYgdGhpcyBXYXJuaW5nIGlzIHNob3duIG9mdGVuIHlvdSBjb3VsZCBhc2sgdGhlIG1vZGVyYXRvciB0byByZWR1Y2UgdGhlIFF1YWxpdHkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0MSIgbmFtZT0ic2NyZWVuX3VzZXJsYWJlbCI+CisgICAgPHZhbHVlPlNjcmVlbiBvZjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQyIiBuYW1lPSJ3aGl0ZWJvYXJkX3RhYl9wYWludCI+CisgICAgPHZhbHVlPlBhaW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0MyIgbmFtZT0id2hpdGVib2FyZF90YWJfZG9jdW1lbnQiPgorICAgIDx2YWx1ZT5Eb2N1bWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDQiIG5hbWU9InRhYmJhcl9jaGF0aWNvbiI+CisgICAgPHZhbHVlPkNoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ1IiBuYW1lPSJ0YWJiYXJfZmlsZXNpY29uIj4KKyAgICA8dmFsdWU+RmlsZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ2IiBuYW1lPSJ0YWJiYXJfcGFydGljaXBhbnRzaWNvbiI+CisgICAgPHZhbHVlPk1lbWJlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ3IiBuYW1lPSJzd2ZwcmVzZW50YXRpb25fbGlzdHNhdmVvcmlnIj4KKyAgICA8dmFsdWU+RG93bmxvYWQgb3JpZ2luYWwgZG9jdW1lbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ4IiBuYW1lPSJzd2ZwcmVzZW50YXRpb25fbGlzdHNhdmVwZGYiPgorICAgIDx2YWx1ZT5Eb3dubG9hZCBwZGYgZG9jdW1lbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ5IiBuYW1lPSJzd2ZwcmVzZW50YXRpb25fbGlzdGxvYWRzd2YiPgorICAgIDx2YWx1ZT5Mb2FkIFByZXNlbnRhdGlvbiB0byB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MCIgbmFtZT0ibmF2aW1haW5fY29uZmlnIj4KKyAgICA8dmFsdWU+Q29uZmlndXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTEiIG5hbWU9IndoaXRlYm9hcmRfYm91bmRpbmdib3hfZHJhZyI+CisgICAgPHZhbHVlPkRyYWcgdGhpcyBPYmplY3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUyIiBuYW1lPSJ3aGl0ZWJvYXJkX2JvdW5kaW5nYm94X3Jlc2l6ZSI+CisgICAgPHZhbHVlPlJlc2l6ZSB0aGlzIE9iamVjdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTMiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3pvb20iPgorICAgIDx2YWx1ZT4lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1NCIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfc2xpZGUiPgorICAgIDx2YWx1ZT5vZjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTUiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX2ZpcnN0c2xpZGUiPgorICAgIDx2YWx1ZT5HbyB0byBmaXJzdCBQYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1NiIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfcHJlc2xpZGUiPgorICAgIDx2YWx1ZT5HbyB0byBwcmV2aW91cyBQYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1NyIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfbmV4dHNsaWRlIj4KKyAgICA8dmFsdWU+R28gdG8gbmV4dCBQYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1OCIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfbGFzdHNsaWRlIj4KKyAgICA8dmFsdWU+R28gdG8gbGFzdCBQYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1OSIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfem9vbW1pbnVzIj4KKyAgICA8dmFsdWU+Wm9vbSAtLTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjAiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3pvb21wbHVzIj4KKyAgICA8dmFsdWU+Wm9vbSArKzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjEiIG5hbWU9InNhbHV0YXRpb25fbXIiPgorICAgIDx2YWx1ZT5Nci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYyIiBuYW1lPSJzYWx1dGF0aW9uX21pc3MiPgorICAgIDx2YWx1ZT5Ncy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYzIiBuYW1lPSJuYXZpbWFpbl9jb25mYWRtaW4iPgorICAgIDx2YWx1ZT5Db25maWd1cmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2NCIgbmFtZT0iY29uZnRhYmxlX2hlYWRlcklkIj4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY1IiBuYW1lPSJjb25mdGFibGVfaGVhZGVya2V5Ij4KKyAgICA8dmFsdWU+S2V5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2NiIgbmFtZT0iY29uZmFkbWluZm9ybV9oZWFkZXIiPgorICAgIDx2YWx1ZT5Db25maWd1cmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2NyIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbGtleSI+CisgICAgPHZhbHVlPktleTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjgiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWx1cGRhdGVkIj4KKyAgICA8dmFsdWU+bGFzdCB1cGRhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY5IiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsdXBkYXRlZGJ5Ij4KKyAgICA8dmFsdWU+dXBkYXRlZGJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MCIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbGNvbW1lbnQiPgorICAgIDx2YWx1ZT5jb21tZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MSIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbGtleSI+CisgICAgPHZhbHVlPmtleTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzIiIG5hbWU9InR1cm5vdmVybGlzdF9tYXhyZXN1bHRzIj4KKyAgICA8dmFsdWU+b2Y8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjczIiBuYW1lPSJvcmdhbmlzYXRpb25fdXNlcnNoZWFkZXIiPgorICAgIDx2YWx1ZT5Vc2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzQiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2ljb25kZWxldGUiPgorICAgIDx2YWx1ZT5kZWxldGUgdXNlciBmcm9tIG9yZ2FuaXNhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzUiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2RlbGV0ZWRoZWFkIj4KKyAgICA8dmFsdWU+ZGVsZXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NiIgbmFtZT0ib3JnYW5pc2F0aW9uX3VzZXJzYWxyZWFkYWRkZWQiPgorICAgIDx2YWx1ZT5UaGlzIHVzZXIgaXMgYWxyZWFkeSBtZW1iZXIgb2YgdGhpcyBvcmdhbmlzYXRpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NyIgbmFtZT0iZGFzaGJvYXJkX25ld3NoZWFkZXIiPgorICAgIDx2YWx1ZT5OZXdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3OCIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua3NoZWFkZXIiPgorICAgIDx2YWx1ZT5RdWlja2xpbmtzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3OSIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua0NvbmYiPgorICAgIDx2YWx1ZT5Hb3RvIENvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgwIiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rQXVkaXQiPgorICAgIDx2YWx1ZT5Hb3RvIEF1ZGl0b3JpdW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgxIiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rc3VwcG9ydCI+CisgICAgPHZhbHVlPkhlbHAgYW5kIFN1cHBvcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgyIiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tob21lcGFnZXVybCI+CisgICAgPHZhbHVlPmh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgzIiBuYW1lPSJkYXNoYm9hcmRfcXVpY2ttYWlsaW5nbGlzdHVybCI+CisgICAgPHZhbHVlPmh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9tYWlsLWxpc3RzLmh0bWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg0IiBuYW1lPSJkYXNoYm9hcmRfcmVwb3J0YnVncyI+CisgICAgPHZhbHVlPlJlcG9ydCBhIGJ1ZyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg1IiBuYW1lPSJkYXNoYm9hcmRfcnNzbGlzdGl0ZW1saW5rdGV4dCI+CisgICAgPHZhbHVlPm1vcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg2IiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5raG9tZXBhZ2VsYWJlbCI+CisgICAgPHZhbHVlPlByb2plY3QgV2Vic2l0ZSAoaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODciIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmttYWlsaW5nbGlzdGxhYmVsIj4KKyAgICA8dmFsdWU+VXNlciBNYWlsaW5nIExpc3QgKGh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9tYWlsLWxpc3RzLmh0bWwpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4OCIgbmFtZT0ibG9naW5fcmVtZW1iZXJ1c2VyIj4KKyAgICA8dmFsdWU+UmVtZW1iZXIgTG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg5IiBuYW1lPSJtYWluX25hdmkiPgorICAgIDx2YWx1ZT5Db250ZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPk15IEhvbWUgUGFnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTEiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5NeSBTY2hlZHVsZWQgTWVldGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkyIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+TXkgU2NoZWR1bGVkIEV2ZW50czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTMiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5QdWJsaWMgTWVldGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk0IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+UHJpdmF0ZSBNZWV0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTUiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5QdWJsaWMgRXZlbnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NiIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPlByaXZhdGUgRXZlbnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NyIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPlB1YmxpYyBDb250ZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5OCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPlByaXZhdGUgQ29udGVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTkiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5QZXJzb25hbCBDb250ZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDEiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5Nb2RlcmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMiIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPkFwcGx5IGZvciBNb2RlcmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMyIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPlBvbGxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNCIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPkNob29zZSBhIGZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA1IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+U2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA2IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+Q2FtIGFuZCBNaWMgU2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA3IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+V2hpdGVib2FyZCBTZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDgiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5FeGl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwOSIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPkJhY2sgdG8gUm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEwIiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+TG9nb3V0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5EZXNrdG9wIFZpZXdlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTIiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+c3RhcnQgRGVza3RvcCBWaWV3ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEzIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlZpZGVvIGFuZCBBdWRpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTQiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+Q2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTUiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+V2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTYiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+TW9kZXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTciIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+RmlsZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE4IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlVzZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxOSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5Qb2xsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjAiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+VGhlcmUgaXMgbm8gVXNlciBjb25uZWN0ZWQgdG8gdGhpcyBVc2VybmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjEiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+VGhlIGVtYWlsIGNvbnRhaW5pbmcgYSBzcGVjaWFsIGxpbmsgaGFzIGJlZW4gc2VudCB0byB5b3VyIGVtYWlsIGFkZHJlc3MsIHBsZWFzZSBjaGVjayB5b3VyIG1haWxib3guIElmIHlvdSBzdGlsbCBoYXZlIG5vdCByZWNlaXZlZCBhIGVtYWlsLCBwbGVhc2UgYWRqdXN0IHlvdXIgZW1haWwgc3BhbSBzZXR0aW5ncyBhbmQgcmVzZW5kIGNvbmZpcm1hdGlvbiBlbWFpbC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIyIiBuYW1lPSJlcnJvcnR5cGUiPgorICAgIDx2YWx1ZT5FcnJvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjMiIG5hbWU9ImVycm9ydHlwZSI+CisgICAgPHZhbHVlPk1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI0IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5JbnZhbGlkIEhhc2guIE5vIFVzZXIgZm91bmQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNSIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+UmVzZXQgWW91ciBQYXNzd29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjYiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPkxvZ2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNyIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+Y2hhbmdlIFBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyOCIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+bmV3IFBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyOSIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+cmUtZW50ZXIgUGFzc3dvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMwIiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5UaGUgUGFzc3dvcmRzIHlvdSBlbnRlcmVkIHdlcmVuJ3QgaWRlbnRpY2FsLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzEiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPjQgb3IgbW9yZSBjaGFyYWN0ZXJzOyBjYXBpdGFsaXphdGlvbiBtYXR0ZXJzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzIiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPlBhc3N3b3JkIHNldC4gWW91IGNhbiBsb2dpbiBub3cuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzMyIgbmFtZT0icnBjY2FsbGJhY2siPgorICAgIDx2YWx1ZT5PSzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzQiIG5hbWU9InJwY2dlbmVyYWxlcnJvciI+CisgICAgPHZhbHVlPlVua293biBFcnJvci4gUGxlYXNlIHJlcG9ydCB0aGlzIHRvIHlvdXIgU2VydmljZS1UZWFtLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzUiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+VXNlcm5hbWUgbm90IGZvdW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNiIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5JbnZhbGlkIFBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNyIgbmFtZT0ibG9nb3V0Ij4KKyAgICA8dmFsdWU+U3VjY2Vzc2Z1bGx5IExvZ2dlZCBvdXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM4IiBuYW1lPSJyZWdpc3RyYXRpb24iPgorICAgIDx2YWx1ZT5Gcm9udGVuZCBSZWdpc3RyYXRpb24gZGlzYWJsZWQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzOSIgbmFtZT0icmVnaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+SW52YWxpZCBFTWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDAiIG5hbWU9InJlZ2lzdHJhdGlvbiI+CisgICAgPHZhbHVlPmR1cGxpY2F0ZSBmaWxlbmFtZSwgcGxlYXNlIGNob29zZSBhbm90aGVyIGZpbGVuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MSIgbmFtZT0iZmlsZWJyb3dzZXIiPgorICAgIDx2YWx1ZT5maWxlbmFtZSB0b28gc2hvcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQyIiBuYW1lPSJmaWxlYnJvd3NlciI+CisgICAgPHZhbHVlPkNvdWxkIG5vdCBzYXZlIEFkZHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQzIiBuYW1lPSJ1c2VyYWRtaW4iPgorICAgIDx2YWx1ZT5Vc2VyIGFkZGVkIGJ1dCB5b3UgbmVlZCB0byBhc3NpZ24gdGhpcyBVc2VyIHRvIGFuIE9yZ2FuaXNhdGlvbiwgb3RoZXJ3aXNlIGhlIHdvbid0IGJlIGFibGUgdG8gc2lnbi1pbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ0IiBuYW1lPSJhZG1pbmZvcm1zIj4KKyAgICA8dmFsdWU+TmV3IFJlY29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDUiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPk5vIEZpZWxkIGZvdW5kIHdpdGggdGhpcyBGaWVsZElkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDYiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPk5vIExhYmVsIGZvdW5kIGZvciB0aGF0IEZpZWxkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDciIG5hbWU9ImVycm9ybWVzc2FnZSI+CisgICAgPHZhbHVlPkFkbWluIEF1dGhvcml6YXRpb24gcmVxdWlyZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ4IiBuYW1lPSJtYWlubmF2aSI+CisgICAgPHZhbHVlPkxhbmd1YWdlLUVkaXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDkiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkxhbmd1YWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1MCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TGFiZWwtSUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUxIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5MYWJlbC1OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1MiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+VmFsdWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUzIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5GaWVsZHZhbHVlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTQiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkxhYmVsTmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTUiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkxhYmVsVmFsdWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU2IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5MYWJlbC1JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTciIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPllvdSBkaWQgb25seSBkZWxldGUgdGhlIExhYmVsIE5PVCB0aGUgRmllbGQhIFlvdSBjYW5ub3QgZGVsZXRlIHRoZSBGaWVsZCwgaXQgbWF5IGhhcyBMYWJlbHMgaW4gb3RoZXIgTGFuZ3VhZ2VzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTgiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkludmFsaWQgTGFiZWxpZC4gVGhlIEZpZWxkTGFuZ3VhZ2VzdmFsdWVzX0lkIGNhbm5vdCBiZSBmb3VuZCBpbiB0aGUgZGF0YWJhc2UuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1OSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBkZWxldGUgdGhpcyBGaWVsZC4gWW91IGNhbiBvbmx5IGRlbGV0ZSBMYWJlbHMgTk9UIEZpZWxkcy4gVGhlcmUgaXMgbm8gTGFiZWwgbG9hZGVkIGF0IHRoZSBtb21lbnQsIHdldGhlciBpdCBpcyBub3Qgc2VsZWN0ZWQgYW55IEZpZWxkIG9yIHRoZXJlIGlzIG5vIExhYmVsIGZvciB0aGlzIExhbmd1YWdlIGZvciB0aGF0IEZpZWxkIGRlZmluZWQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+ZXhwb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgdG8gbG9nb3V0IHRvIHNlZSBhbnkgY2hhbmdlcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYyIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5BZGQgbmV3IGxhbmd1YWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+ZGVsZXRlIGxhbmd1YWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+QWRkIG5ldyBsYW5ndWFnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjUiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY2IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5hZGQgbGFuZ3VhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY3IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5CYWNrdXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY4IiBuYW1lPSJ0dXJub3Zlcmxpc3QiPgorICAgIDx2YWx1ZT5nb3RvIGZpcnN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2OSIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+Z290byBwcmV2aW91czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzAiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPmdvdG8gbmV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzEiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPmdvdG8gbGFzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzIiIG5hbWU9InZpZGVvYm94Ij4KKyAgICA8dmFsdWU+dXNlciBzcGVha3MgKEJ5IGNsaWNraW5nIGhlcmUgeW91IGNhbiBnaXZlIGV4Y2x1c2l2ZSBhdWRpbyAvIG11dGUgdGhlIG1pY3JvcGhvbmUgb2Ygb3RoZXJzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzMiIG5hbWU9InZpZGVvYm94Ij4KKyAgICA8dmFsdWU+dHVybiBzb3VuZCBvbi9vZmY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc0IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5TeXN0ZW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc1IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5Zb3VyIFNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3NiIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+aGksPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3NyIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+RWRpdCB5b3VyIHByb2ZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc4IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5OZXcgTWVzc2FnZXM6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3OSIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+VXBsb2FkIG5ldyBJbWFnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODAiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+VXNlcmRhdGEgLSBFeHBvcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgxIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPkFsbCBvcmdhbmlzYXRpb25zIG11c3QgYmUgYWxyZWFkeSBleGlzdGluZyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgyIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPnN0YXJ0IGV4cG9ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODMiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+Qnkgb3JnYW5pc2F0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NCIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5zdGFydCBleHBvcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg1IiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPlVzZXJkYXRhIC0gSW1wb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NiIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5jaG9vc2UgdXNlcnMueG1sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+aW1wb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4OCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+RXhwb3J0IHRvIFhNTCAtIFRoZXNlIGZpbGVzIGNhbiBiZSB1c2VkIHRvOiAtIENvbnRyaWJ1dGUgdG8gdGhlIHByb2plY3QgLSBJbXBvcnQgaW50byBhbm90aGVyIFN5c3RlbSAtIEJhY2t1cCAtIEN1c3RvbWl6YXRpb24gLSBQdXQgaXQgaW50byB0aGUgbGFuZ3VhZ2UtZGlyZWN0b3J5IGZvciB5b3VyIG5leHQgaW5zdGFsbGF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4OSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+Q2hvb3NlIGEgbGFuZ3VhZ2UgZmlsZSB0byBpbXBvcnQuIENob29zZSB0aGUgcmlnaHQgTGFuZ2F1Z2UgZnJvbSB0aGUgQ29tYm9ib3ghIE5vIG1hdHRlciB3aGF0IHRoZSBuYW1lIG9mIHRoZSBmaWxlIGlzLCBpdCB3aWxsIGJlIGltcG9ydGVkIGludG8gdGhpcyBsYW5ndWFnZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkwIiBuYW1lPSJpbXBvcnR3aW5kb3ciPgorICAgIDx2YWx1ZT5pbXBvcnQgLSBjaG9vc2UgZmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTEiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT5TYXZlIGFzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5MiIgbmFtZT0icmVjb3JkaW5nc2F2ZXdpbiI+CisgICAgPHZhbHVlPk5hbWU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5MyIgbmFtZT0icmVjb3JkaW5nc2F2ZXdpbiI+CisgICAgPHZhbHVlPkNvbW1lbnQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NCIgbmFtZT0icmVjb3JkaW5nc2F2ZXdpbiI+CisgICAgPHZhbHVlPnNhdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk1IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5SZWNvcmRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NiIgbmFtZT0icmVjb3JkZXIiPgorICAgIDx2YWx1ZT5SZWNvcmRpbmdzIFZpZXdlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTciIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPlJlY29yZGluZ3Mgb2YgcHVibGljIGFuZCBwcml2YXRlIFJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5OCIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+VXNlcnMgOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTkiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPkpvaW5lZDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAwIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAxIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5Vc2VycyBpbiB0aGlzIFJvb206PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMiIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+cmVmcmVzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDMiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPlRoaXMgUm9vbSBpcyBGdWxsLiBUcnkgYWdhaW4gaW4gYSBmZXcgbWludXRlcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA0IiBuYW1lPSJyb29tc0xpc3QiPgorICAgIDx2YWx1ZT5jbGljayBvbiBhIHJvb20gdG8gZ2V0IGRldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA1IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5DaGF0IHdpdGggdGhlIHVzZXJzIGluIHRoaXMgUm9vbTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA2IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5Sb29tOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDciIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPlVzZXJzIGluIHRoaXMgcm9vbTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA4IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5zaW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA5IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5wbGF5IHJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTAiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkxlbmd0aDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDExIiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5EYXRlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTIiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPlJlY29yZGVyIE1vZGUhIFlvdSBjYW5ub3QgY2hhbmdlIGFueSB2YWx1ZXMsIHRoaXMgaXMgYSByZWNvcmRlZCBGaWxlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTMiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPlBsYXkgdGhpcyByZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE0IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5QbGF5IC8gUGF1c2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE1IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5TdGFydCByZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE2IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5zdG9wIHJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTciIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPlJlY29yZGluZzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE4IiBuYW1lPSJyZWNvcmRfZXJyb3JfbXNnIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgYWxyZWFkeSBzb21lYm9keSByZWNvcmRpbmcgYXQgdGhlIG1vbWVudDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE5IiBuYW1lPSJyZWNvcmRfbWVzc2FnZSI+CisgICAgPHZhbHVlPlJlY29yZGluZyEgQnkgVXNlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIwIiBuYW1lPSJyZWNvcmRfY2FuY2VsIj4KKyAgICA8dmFsdWU+Y2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyMSIgbmFtZT0icmVjb3JkX2NhbmNhbF90b29sdGlwIj4KKyAgICA8dmFsdWU+UmVjb3JkaW5nIHdpbGwgYmUgY2FuY2VsZWQgYW5kIG5vdCBzYXZlZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIyIiBuYW1lPSJjYW5jZWxfZGlhbG9nX3Jlc3VtZSI+CisgICAgPHZhbHVlPnJlc3VtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjMiIG5hbWU9ImNhbmNlbF9kaWFsb2dfcmVzdW1lX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5DbG9zZSB0aGlzIHdpbmRvdyBhbmQgcmVzdW1lIHJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjQiIG5hbWU9InBhaW50dG9vbHNfZWxsaXBzZV9jb2xvciI+CisgICAgPHZhbHVlPmNoYW5nZSBMaW5lY29sb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI1IiBuYW1lPSJjb2xvcnBpY2tlcl9oZWFkIj4KKyAgICA8dmFsdWU+Q2hvb3NlIENvbG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyNiIgbmFtZT0icGFpbnR0b29sc19saW5lX2Rpc2FibGUiPgorICAgIDx2YWx1ZT5EaXNhYmxlIC8gRW5hYmxlIExpbmVjb2xvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjciIG5hbWU9InBhaW50dG9vbHNfZmlsbF9kaXNhYmxlIj4KKyAgICA8dmFsdWU+Y2hhbmdlIEZpbGxjb2xvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjgiIG5hbWU9InBhaW50dG9vbHNfbGluZV9kaXNhYmxlIj4KKyAgICA8dmFsdWU+RGlzYWJsZSAvIEVuYWJsZSBGaWxsY29sb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI5IiBuYW1lPSJjaGFuZ2Vfd2lkdGhfYXJyb3dfZG93bl9zbGlkZXIiPgorICAgIDx2YWx1ZT5DaGFuZ2UgTGluZXdpZHRoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzMCIgbmFtZT0iY2xvc2Vfc21hbGxfcG9wdXBzIj4KKyAgICA8dmFsdWU+Y2xvc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMxIiBuYW1lPSJwYWludF90b29sX2xldHRlciI+CisgICAgPHZhbHVlPmNoYW5nZSBGb250c2l6ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzIiIG5hbWU9InJlY29yZGluZ3NsaXN0X2RlbGV0ZSI+CisgICAgPHZhbHVlPkRlbGV0ZSBSZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMzIiBuYW1lPSJyZWNvcmRpbmdzbGlzdF9yZWNvcmRlZEJ5R3Vlc3QiPgorICAgIDx2YWx1ZT5HdWVzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzQiIG5hbWU9InJlY29yZGluZ3NsaXN0X3JlY29yZGVkYnkiPgorICAgIDx2YWx1ZT5CeTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM1IiBuYW1lPSJyZWNvcmRpbmdzX3RhYmxlX2hlYWRfbmFtZSI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM2IiBuYW1lPSJyZWNvcmRpbmdzX3RhYmxlX2hlYWRfcm9vbSI+CisgICAgPHZhbHVlPlJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM3IiBuYW1lPSJyZWNvcmRpbmdzX3RhYmxlX2hlYWRfZGF0ZSI+CisgICAgPHZhbHVlPkRhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM4IiBuYW1lPSJyZWNvcmRfc3RhcnRfY2FuY2VsIj4KKyAgICA8dmFsdWU+Y2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzOSIgbmFtZT0icmVjb3JkX3N0YXJ0X3N0YXJ0Ij4KKyAgICA8dmFsdWU+c3RhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQwIiBuYW1lPSJmaWxlc2Jyb3dzZXJfdGFibGVfaGVhZF9uYW1lIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDEiIG5hbWU9ImZpbGVzYnJvd3Nlcl90YWJsZV9oZWFkX2RhdGUiPgorICAgIDx2YWx1ZT5EYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MiIgbmFtZT0iY2hhdF9jbGVhcl9oaXN0b3J5Ij4KKyAgICA8dmFsdWU+RGVsZXRlIFNlcnZlci1DaGF0bG9nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MyIgbmFtZT0iY2hhdF9vdmVyYWxsX2hlYWRlciI+CisgICAgPHZhbHVlPkNoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ0IiBuYW1lPSJjaGF0X3NlbmRfYnRuIj4KKyAgICA8dmFsdWU+c2VuZCBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NSIgbmFtZT0iY2hhdF9lbW90X2J0biI+CisgICAgPHZhbHVlPkVtb3RpY29uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDYiIG5hbWU9ImNoYXRfZW1vdF93aW4iPgorICAgIDx2YWx1ZT5FbW90aWNvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ3IiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5DaG9vc2UgUHVibGlzaGVkIERldmljZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ4IiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT5BdWRpbyBhbmQgVmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ5IiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT5BdWRpbyBvbmx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1MCIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2NvbWJvIj4KKyAgICA8dmFsdWU+VmlkZW8gb25seTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTEiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPm5vIEF1ZGlvL1ZpZGVvIChzdGF0aWMgSW1hZ2UpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1MiIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2luZm9fdGV4dCI+CisgICAgPHZhbHVlPk5vIEF1ZGlvL1ZpZGVvIGZyb20geW91ciBQQyB3aWxsIGJlIHB1Ymxpc2hlZCwgaW5zdGVhZCBvZiB0aGF0IGEgcGljdHVyZSBmcm9tIHlvdXIgcHJvZmlsZSB3aWxsIGJlIHNob3duLiBDaG9vc2UgdGhlc2Ugc2V0dGluZ3MgaWYgeW91IGhhdmUgcHJvYmxlbXMgd2l0aCB5b3VyIGJhbmR3aWR0aCBvciBhIHZlcnkgc2xvdyBJbnRlcm5ldCBjb25uZWN0aW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTMiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfbW9uZGF5Ij4KKyAgICA8dmFsdWU+TU88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU0IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3R1ZXNkYXkiPgorICAgIDx2YWx1ZT5UVTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTUiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfd2VkbmVzZGF5Ij4KKyAgICA8dmFsdWU+V0U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU2IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3RodXJzZGF5Ij4KKyAgICA8dmFsdWU+VEg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU3IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX2ZyaWRheSI+CisgICAgPHZhbHVlPkZSPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1OCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9zYXR1cmRheSI+CisgICAgPHZhbHVlPlNBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1OSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9zdW5kYXkiPgorICAgIDx2YWx1ZT5TVTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjAiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfbW9uZGF5Ij4KKyAgICA8dmFsdWU+TW9uZGF5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9UdWVzZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5UdWVzZGF5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MiIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9XZWRuZXNkYXlMYWJlbCI+CisgICAgPHZhbHVlPldlZG5lc2RheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjMiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfVGh1cnNkYXlMYWJlbCI+CisgICAgPHZhbHVlPlRodXJzZGF5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9GcmlkYXlMYWJlbCI+CisgICAgPHZhbHVlPkZyaWRheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjUiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfU2F0dXJkYXlMYWJlbCI+CisgICAgPHZhbHVlPlNhdHVyZGF5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NiIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9TdW5kYXlMYWJlbCI+CisgICAgPHZhbHVlPlN1bmRheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjciIG5hbWU9ImNhbGVuZGFyX3dlZWtudW1iZXJfaGVhZGVyIj4KKyAgICA8dmFsdWU+Q1c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY4IiBuYW1lPSJjYWxlbmRhcl93ZWVrbnVtYmVyX2hlYWRlclRvb2x0aXAiPgorICAgIDx2YWx1ZT5DYWxlbmRhciB3ZWVrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2OSIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPkphbnVhcnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDcwIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+RmVicnVhcnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDcxIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+TWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDcyIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+QXByaWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDczIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+TWF5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3NCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPkp1bmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc1IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+SnVseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzYiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5BdWd1c3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc3IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+U2VwdGVtYmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3OCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPk9jdG9iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc5IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+Tm92ZW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgwIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+RGVjZW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgxIiBuYW1lPSJjYWxlbmRhcndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5DYWxlbmRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODIiIG5hbWU9InJvb21hZG1pbl9sYWJlbE51bWJlck9mUGFydGljaXBhbnRzIj4KKyAgICA8dmFsdWU+UGFydGljaXBhbnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4MyIgbmFtZT0icm9vbVZhbHVlX2FkdmFuY2VkU2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TaG93IExheW91dCBTZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODQiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfdmlkZW9YIj4KKyAgICA8dmFsdWU+WCB8IFk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg1IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3ZpZGVvWSI+CisgICAgPHZhbHVlPldpZHRoIHwgSGVpZ2h0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NiIgbmFtZT0icm9vbUFkbWluX2xheW91dCI+CisgICAgPHZhbHVlPlZpZGVvLUNvbnRhaW5lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODciIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfbW9kIj4KKyAgICA8dmFsdWU+TW9kZXJhdGlvbi1Db250YWluZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg4IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X21vZF9wb3MiPgorICAgIDx2YWx1ZT5YPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4OSIgbmFtZT0icm9vbUFkbWluX2xheW91dF93aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+V2hpdGVib2FyZC1Db250YWluZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkwIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmRfc2hvdyI+CisgICAgPHZhbHVlPkVuYWJsZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkxIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmRfcG9zIj4KKyAgICA8dmFsdWU+WCB8IFk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkyIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5XaWR0aCB8IEhlaWdodDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTMiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXMiPgorICAgIDx2YWx1ZT5GaWxlcyxDaGF0LFBhcnRpemlwYW50cyAtIENvbnRhaW5lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTQiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXNfc2hvdyI+CisgICAgPHZhbHVlPkVuYWJsZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk1IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X2ZpbGVzX3BvcyI+CisgICAgPHZhbHVlPlggfFk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk2IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X2ZpbGVzIj4KKyAgICA8dmFsdWU+V2lkdGggfCBIZWlnaHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk3IiBuYW1lPSJtb2RlcmF0b3JfZ29uZV9tZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIE1vZGVyYXRvciBoYXMgbGVmdCB0aGUgUm9vbS4gTm8gb25lIGlzIHByZXNlbnRpbmcgYXQgdGhlIE1vbWVudC4gWW91IGNvdWxkIGFwcGx5IGZvciBNb2RlcmF0aW9uIG9yIHdhaXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5OCIgbmFtZT0ibW9kZXJhdG9yX21lc3NhZ2VfZXZlbnRfbm9fbW9kIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgbm8gTW9kZXJhdG9yIGluIHRoaXMgUm9vbSwgYnV0IHRoZXJlIGFyZSBzb21lIFBhcnRpY2lwYW50cy4gWW91IGhhdmUgdG8gYXBwbHkgZm9yIE1vZGVyYXRpb24gb3Igd2FpdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk5IiBuYW1lPSJmZWVkYmFja190ZW1wbGF0ZV9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+RmVlZGJhY2sgJEFQUF9OQU1FPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwMCIgbmFtZT0iaW52aXRhdGlvbl90ZW1wbGF0ZV9oZWFkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIC0gSW52aXRhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDEiIG5hbWU9Imludml0YXRpb25fdGV4dF9mcm9tIj4KKyAgICA8dmFsdWU+TWVzc2FnZSBmcm9tIFVzZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwMiIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X21lc3NhZ2UiPgorICAgIDx2YWx1ZT5NZXNzYWdlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDMiIG5hbWU9Imludml0YXRpb25fdGV4dF9jbGlja190ZXh0Ij4KKyAgICA8dmFsdWU+Q2xpY2sgdGhpcyBsaW5rIHRvIHBhcnRpY2lwYXRlIGluIHRoZSBNZWV0aW5nczo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA0IiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfY2xpY2tfdGV4dF9saW5rIj4KKyAgICA8dmFsdWU+Q2xpY2sgaGVyZSB0byBlbnRlciByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwNSIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X2NsaWNrX3RleHRfaGVscCI+CisgICAgPHZhbHVlPmlmIHlvdSBoYXZlIHByb2JsZW1zIHdpdGggdGhlIGxpbmssIHBsZWFzZSBjb3B5IGFuZCBwYXN0ZSB0aGlzIHRvIHlvdXIgYnJvd3Nlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA2IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSBTaWduVXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA3IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfaGVhZDIiPgorICAgIDx2YWx1ZT5Zb3VyIHVzZXJkYXRhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDgiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF91c2VybmFtZSI+CisgICAgPHZhbHVlPkxvZ2luOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDkiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9wYXNzIj4KKyAgICA8dmFsdWU+UGFzczo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTEwIiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfbWFpbCI+CisgICAgPHZhbHVlPkVNYWlsOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTEiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9ieWUiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUtVGVhbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTIiIG5hbWU9InJlZ2lzdGVyX21haWxfc3ViamVjdCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSBTaWduLVVwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxMyIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSAtIFJlc2V0IFBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNCIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfdGVzdF9saW5rIj4KKyAgICA8dmFsdWU+Q2xpY2sgb24gdGhpcyBsaW5rIHRvIGVudGVyIGEgbmV3IHBhc3N3b3JkOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTUiIG5hbWU9InJlc2V0X3Bhc3N3b3JkX3RlbXBsYXRlX3RleHQyX2xpbmsiPgorICAgIDx2YWx1ZT5DbGljayBoZXJlIHRvIGVudGVyIGEgbmV3IFBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNiIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfdGV4dDNfbGluayI+CisgICAgPHZhbHVlPmlmIHlvdSBoYXZlIHByb2JsZW1zIHdpdGggdGhlIGxpbmssIHBsZWFzZSBjb3B5IGFuZCBwYXN0ZSB0aGlzIHRvIHlvdXIgYnJvd3Nlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE3IiBuYW1lPSJyZXNldF9wYXNzd29yZF9tYWlsX3N1YmplY3QiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgUGFzc3dvcmQgUmVzZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE4IiBuYW1lPSJkYXRlUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5QbGVhc2UgZW50ZXIgYSB2YWxpZCBEYXRlLCBmb3IgZXhhbXBsZSAyNC4xMi4yMDAxIChkZC5tbS55eXl5KTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTkiIG5hbWU9ImVtYWlsUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5QbGVhc2UgZW50ZXIgYSB2YWxpZCBFTWFpbCwgZm9yIGV4YW1wbGUgbmFtZUBtYWlsLmNvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjAiIG5hbWU9ImZsb2F0UmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5QbGVhc2UgZW50ZXIgYSBGbG9hdC1OdW1iZXIsIGZvciBleGFtcGxlIDEuMDA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIxIiBuYW1lPSJudW1iZXJSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIE51bWJlciAoSW50ZWdlciksIGZvciBleGFtcGxlIDEwMDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjIiIG5hbWU9InBob25lUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5QbGVhc2UgZW50ZXIgYSB2YWxpZCBQaG9uZSBudW1iZXIsIGZvciBleGFtcGxlICsrNDkgMDEyMyAxMjMxMjM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIzIiBuYW1lPSJ0aW1lUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5QbGVhc2UgZW50ZXIgYSB2YWxpZCB0aW1lLCBmb3IgZXhhbXBsZSAxMjoyMyAoaGg6bW0pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3ciPgorICAgIDx2YWx1ZT5QYXNzd29ydCBwcm90ZWN0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI1IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd19wYXNzd29yZExhYmVsIj4KKyAgICA8dmFsdWU+UGFzc3dvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI2IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZExhYmVsIj4KKyAgICA8dmFsdWU+VmFsaWRpdHkgcGVyaW9kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNyIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWQiPgorICAgIDx2YWx1ZT5FbmRsZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyOCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWQiPgorICAgIDx2YWx1ZT5QZXJpb2Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI5IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZCI+CisgICAgPHZhbHVlPk9uZS1UaW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWRGcm9tTGFiZWwiPgorICAgIDx2YWx1ZT5WYWxpZCBGcm9tOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzEiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkVG9MYWJlbCI+CisgICAgPHZhbHVlPlZhbGlkIHRvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzIiIG5hbWU9Imludml0YXRpb25fd2luZG93X01haWxTdWJqZWN0Ij4KKyAgICA8dmFsdWU+SW52aXRhdGlvbiBUbyAkQVBQX05BTUU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMzIiBuYW1lPSJpbnZpdGF0aW9uX2Vycm9yIj4KKyAgICA8dmFsdWU+Tm90IEludml0YXRpb24gYXZhaWxpYmxlIGZvciB0aGlzIEludml0YXRpb24tQ29kZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzQiIG5hbWU9Imludml0YXRpb25fZXJyb3IiPgorICAgIDx2YWx1ZT5UaGUgSW52aXRhdGlvbiB3YXMgYWxyZWFkeSB1c2VkLiBUaGlzIHR5cGUgb2YgSW52aXRhdGlvbiBjYW5ub3QgYmUgcmUtdXNlZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM1IiBuYW1lPSJpbnZpdGF0aW9uX2Vycm9yIj4KKyAgICA8dmFsdWU+VGhpcyBJbnZpdGF0aW9uLUNvZGUgaXMgbm90IHZhbGlkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzYiIG5hbWU9Imludml0YXRpb25fcGFzcyI+CisgICAgPHZhbHVlPlBhc3N3b3JkOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzciIG5hbWU9Imludml0YXRpb25fcGFzc19idG4iPgorICAgIDx2YWx1ZT5DaGVjayBQYXNzd29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzgiIG5hbWU9Imludml0YXRpb25fcGFzc19lcnJvciI+CisgICAgPHZhbHVlPkludmFsaWQgUGFzc3dvcmQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzOSIgbmFtZT0iQnJvd3NlciI+CisgICAgPHZhbHVlPkJyb3dzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQwIiBuYW1lPSJhdWRpb192aWRlbyI+CisgICAgPHZhbHVlPlN5bmNyb25pemUgQXVkaW8vVmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQxIiBuYW1lPSJlcnJvckNvZGVfaW52YWxpZFNlc3Npb24iPgorICAgIDx2YWx1ZT5Mb2dpbiB3YXMgY29ycmVjdCwgYnV0IHRoZSBTZXNzaW9uIHlvdSB0cmllZCBpcyBub3QgYWN0aXZlIG9yIHN0b3JlZCBvbiB0aGUgU2VydmVyLiBZb3UgaGF2ZSB0byBnZXQgYSBuZXcgU2Vzc2lvbklkIGFuZCByZXRyeSBsb2dpbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQyIiBuYW1lPSJlcnJvcmNvZGVfc2V0VXNlck9iamVjdCI+CisgICAgPHZhbHVlPlRoZSBTZXNzaW9uSWQgaXMgbm90IGxvZ2dlZGluIG9yIGhhcyBubyBBZG1pbiByaWdodHMuIFRoZSBTT0FQIEdhdGV3YXkgbmVlZHMgYW4gVXNlciB3aXRoIEFkbWluLVJpZ2h0cyB0byBlbWJlZCBuZXcgVXNlcnMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0MyIgbmFtZT0iZXJyb3Jjb2RlX2xvZ2luQnlSZW1vdGVVc2VyIj4KKyAgICA8dmFsdWU+VGhpcyBTZXNzaW9uIGhhcyBubyBSZW1vdGV1c2VyLURhdGEgY29ubmVjdGVkLiBXZXRoZXIgeW91IGRpZCBub3QgY2FsbCB0aGUgU09BUC1HYXRld2F5IGJlZm9yZSBhY2Nlc3NpbmcgdGhlIEFwcGxpY2F0aW9uIG9yIHlvdSBhcmUgdXNuaWcgYSB3cm9uZyBTZXNzaW9uLUlEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0NCIgbmFtZT0iZGVidWdfbWVzc2FnZV9yZWNvcmRpbmciPgorICAgIDx2YWx1ZT5UaGUgcmVjb3JkZXIgaXMgY3VycmVudGx5IEJldGEhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0NSIgbmFtZT0icHJvcGVydHlQYW5lbFhWYWx1ZSI+CisgICAgPHZhbHVlPng8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ2IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWFZhbHVlTGFiZWwiPgorICAgIDx2YWx1ZT54LWF4aXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ3IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWVZhbHVlIj4KKyAgICA8dmFsdWU+eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDgiIG5hbWU9InByb3BlcnR5UGFuZWxZVmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPnktYXhpczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDkiIG5hbWU9InByb3BlcnR5UGFuZWxXaWR0aFZhbHVlIj4KKyAgICA8dmFsdWU+dzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTAiIG5hbWU9InByb3BlcnR5UGFuZWxXaWR0aFZhbHVlTGFiZWwiPgorICAgIDx2YWx1ZT53aWR0aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTEiIG5hbWU9InByb3BlcnR5UGFuZWxIZWlnaHRWYWx1ZSI+CisgICAgPHZhbHVlPmg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUyIiBuYW1lPSJwcm9wZXJ0eVBhbmVsSGVpZ2h0VmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPmhlaWdodDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTMiIG5hbWU9InByb3BlcnR5T3BhY2l0eVNsaWRlciI+CisgICAgPHZhbHVlPkNoYW5nZSBUcmFuc3BhcmVuY3k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU0IiBuYW1lPSJicm93c2VyT3BlbiI+CisgICAgPHZhbHVlPkJyb3dzZXIgT3BlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTUiIG5hbWU9ImJyb3dzZXJDbG9zZSI+CisgICAgPHZhbHVlPkJyb3dzZXIgQ2xvc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU2IiBuYW1lPSJjb25uZWN0aW9uTG9zdE1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgQ29ubmVjdGlvbiB0byB0aGUgU2VydmVyIGlzIGxvc3QuIFlvdSBuZWVkIHRvIHJlbG9hZCB0aGUgQXBwbGljYXRpb24gb3IvYW5kIGNoZWNrIHlvdXIgTmV0d29yay48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU3IiBuYW1lPSI1NTciPgorICAgIDx2YWx1ZT5Qb2ludGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1OCIgbmFtZT0ic3luYyBtZXNzYWdlIGhlYWRlciI+CisgICAgPHZhbHVlPlN5bmNocm9uaXppbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU5IiBuYW1lPSJTeW5jaHJvbml6aW5nIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TeW5jaHJvbml6aW5nIFVzZXJzLCBwbGVhc2Ugd2FpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjAiIG5hbWU9ImV4cG9ydFRvU1ZHIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7RG93bmxvYWQgYXMgU1ZHJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjEiIG5hbWU9ImV4cG9ydFRvSW1hZ2UiPgorICAgIDx2YWx1ZT4mbHQ7dSZndDtEb3dubG9hZCBhcyBQTkcmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MiIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O0Rvd25sb2FkIGFzIEpQRyZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYzIiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7RG93bmxvYWQgYXMgUERGJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjQiIG5hbWU9ImV4cG9ydFRvSW1hZ2UiPgorICAgIDx2YWx1ZT4mbHQ7dSZndDtEb3dubG9hZCBhcyBUSUYmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2NSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPlJlbWluZGVyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjYiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5DYXRlZ29yeTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY3IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+UmVwZXRpdGlvbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY4IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+bm9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjkiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5Mb2NhdGlvbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTcwIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+U3RhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTcxIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+RW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MiIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPlRpdGxlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzMiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5Db21tZW50OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzQiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5JbnZpdGUgUGVvcGxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkRhaWx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NiIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPk1vbnRobHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc3IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+WWVhcmx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3OCIgbmFtZT0iYWxlcnQiPgorICAgIDx2YWx1ZT5BcHBvaW50bWVudC1lbmQgaXMgYWZ0ZXIgb2YgYXBwb2ludG1lbnQtc3RhcnQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3OSIgbmFtZT0iYWxlcnQiPgorICAgIDx2YWx1ZT5QbGVhc2UgaW5zZXJ0IGEgdGl0bGUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MCIgbmFtZT0iNTgwIj4KKyAgICA8dmFsdWU+UlRMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MSIgbmFtZT0iNTgxIj4KKyAgICA8dmFsdWU+QWN0aXZhdGUgdGhpcyBpZiB5b3Ugd3JpdGUgaW4gYSByaWdodCB0byBsZWZ0IGxhbmd1YWdlIChpbnZlcnNlIHdvcmQgb3JkZXIpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MiIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT5EYXNoYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgzIiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPldhdGNoIHJlY29yZGVkIE1lZXRpbmdzIG9yIEV2ZW50czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODQiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+TWVldGluZyAtIE1ha2UgYSBjb25mZXJlbmNlIHdpdGggNCAodXAgdG8gMTYpIFVzZXJzJmx0O2JyLyZndDtldmVyeWJvZHkgd2lsbCBoYXZlIGF1ZGlvICsgdmlkZW8gYWNjZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4NSIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT5FdmVudCAtIE1ha2UgYSBjb25mZXJlbmNlIHdpdGggdXAgdG8gMjAwIHBhcnRpY2lwZW50cyZsdDtici8mZ3Q7T25seSB0aGUgTW9kZXJhdG9yIHdpbGwgaGF2ZSBhdWRpby92aWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODYiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+Q3JlYXRlIHVzZXJzLCByb29tcywgb3JnYW5pemF0aW9ucyZsdDtici8mZ3Q7ICsgY2hhbmdlIGNvbmZpZ3VyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg3IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5Vc2VycyBpbiB0aGlzIFJvb20gbm93PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4OCIgbmFtZT0icm9vbSBBZG1pbmlzdHJhdGlvbiByb29tY2xpZW50cyBsaXN0Ij4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg5IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTAiIG5hbWU9InJvb20gQWRtaW5pc3RyYXRpb24gcm9vbWNsaWVudHMgbGlzdCI+CisgICAgPHZhbHVlPkQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkxIiBuYW1lPSJzd2Ygc3luYyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TG9hZGluZyBEb2N1bWVudC4gUGxlYXNlIHdhaXQgdW50aWxsIGFsbCBDbGllbnQgaGF2ZSBiZWVuIHN5bmNocm9uaXplZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkyIiBuYW1lPSJ1cGxvYWQgZGlhbG9nIj4KKyAgICA8dmFsdWU+VXBsb2FkIGNvbXBsZXRlLCBjb252ZXJ0aW5nIERvY3VtZW50IC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTMiIG5hbWU9InVwbG9hZCBkaWFsb2ciPgorICAgIDx2YWx1ZT5TdGFydCBVcGxvYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk0IiBuYW1lPSJ1cGxvYWQgZGlhbG9nIj4KKyAgICA8dmFsdWU+VXBsb2FkIGFuZCBJbXBvcnQgRGlhbG9nLiBQbGVhc2Ugc2VsZWN0IGEgRmlsZSBmcm9tIHlvdXIgRGlzay48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk1IiBuYW1lPSJ1cGxvYWQgRGlhbG9nIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NiIgbmFtZT0idXBsb2FkIERpYWxvZyI+CisgICAgPHZhbHVlPlNlbGVjdCBGaWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NyIgbmFtZT0iYWRtaW5pc3RyYXRpb24gbmF2aWdhdGlvbiI+CisgICAgPHZhbHVlPkNvbm5lY3Rpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5OCIgbmFtZT0iY29uZmFkbWluIHZhbHVlIGxpc3QiPgorICAgIDx2YWx1ZT5WYWx1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTkiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5TdHJlYW1pZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDAiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDEiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5Db25uZWN0ZWQgc2luY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAyIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+Um9vbSAvIFNjb3BlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwMyIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPktpY2sgVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDQiIG5hbWU9ImtpY2sgdXNlciBjb25maXJtYXRpb24gZGlhbG9nIj4KKyAgICA8dmFsdWU+S2ljayBVc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwNSIgbmFtZT0ia2ljayB1c2VyIGNvbmZpcm1hdGlvbiBkaWFsb2ciPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8ga2ljayB0aGlzIENsaWVudCBmcm9tIHRoZSBDb25uZWN0aW9uPyZsdDtici8mZ3Q7IFRoaXMgZG9lcyBvbmx5IHJlbW92ZSB0aGUgQ2xpZW50IGZyb20gdGhlIGN1cnJlbnQgUm9vbS5UaGUgQ2xpZW50IGNvdWxkIHJlLWxvZ2luIGFnYWluLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDYiIG5hbWU9ImtpY2sgdXNlciBtZXNzYWdlIGRpYWxvZyI+CisgICAgPHZhbHVlPllvdXIgc2Vzc2lvbiBoYXMgYmVlbiBjbG9zZWQgYnkgYW4gQWRtaW5pc3RyYXRvciBvciBNb2RlcmF0b3IuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwNyIgbmFtZT0idXNlcmFsdGVyc2VsZl9waG9uZSI+CisgICAgPHZhbHVlPlBob25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwOCIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+VXNlciBpcyB0aGUgTW9kZXJhdG9yIG9mIHRoaXMgUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDkiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPlVzZXIgaXMgYWxsb3dlZCB0byBkcmF3IG9uIHRoZSBXaGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMCIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+KFJlKSBTdGFydCBBdWRpby9WaWRlbyBvciBjaGFuZ2UgRGV2aWNlIFNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMSIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+QWxsb3cgdGhpcyBVc2VyIHRvIGRyYXcgb24gdGhlIFdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEyIiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5SZW1vdmUgYWJpbGl0eSB0byBkcmF3IG9uIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEzIiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+VXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE0IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+RmlsZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE1IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+V2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTYiIG5hbWU9ImNvbmZlcmVuY2VQYW5lbHMiPgorICAgIDx2YWx1ZT5DaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxNyIgbmFtZT0ib3JnYW5pemF0aW9uIGNob29zZSBpbmZvIj4KKyAgICA8dmFsdWU+WW91ciBhY2NvdW50IGlzIGFzc2lnbmVkIHRvIG11bHRpcGxlIE9yZ2FuaXphdGlvbnMuIFBsZWFzZSBjaG9vc2Ugb25lIGZvciB0aGlzIFNlc3Npb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxOCIgbmFtZT0iZXJyb3IgbWVzc2FnZSByb29tIGZ1bGwiPgorICAgIDx2YWx1ZT5UaGlzIHJvb20gaXMgZnVsbCBhdCB0aGUgbW9tZW50LiBQbGVhc2UgdHJ5IGFnYWluIGxhdGVyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTkiIG5hbWU9InJvb210eXBlcyI+CisgICAgPHZhbHVlPlJvb20gVHlwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjAiIG5hbWU9ImFwcG9pbnRlZF9yb29tIj4KKyAgICA8dmFsdWU+QXBwb2ludG1lbnQgUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjEiIG5hbWU9InNlcnZlcnRpbWUiPgorICAgIDx2YWx1ZT5TZXJ2ZXIgVGltZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjIiIG5hbWU9Imludl9yZW1pbmRlcl90ZW1wbGF0ZV9oZWFkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIC0gUmVtaW5kZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIzIiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9mcm9tIj4KKyAgICA8dmFsdWU+TWVzc2FnZSBmcm9tIFVzZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNCIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfbWVzc2FnZSI+CisgICAgPHZhbHVlPk1lc3NhZ2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNSIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfY2xpY2tfdGV4dCI+CisgICAgPHZhbHVlPkNsaWNrIHRoaXMgbGluayB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgTWVldGluZ3M6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNiIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfY2xpY2tfdGV4dF9saW5rIj4KKyAgICA8dmFsdWU+Q2xpY2sgaGVyZSB0byBlbnRlciByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNyIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfY2xpY2tfdGV4dF9oZWxwIj4KKyAgICA8dmFsdWU+aWYgeW91IGhhdmUgcHJvYmxlbXMgd2l0aCB0aGUgbGluaywgcGxlYXNlIGNvcHkgYW5kIHBhc3RlIHRoaXMgdG8geW91ciBicm93c2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjgiIG5hbWU9ImJ0bl9zZWFyY2hfaW50ZXJuIj4KKyAgICA8dmFsdWU+c2VhcmNoIGludGVybjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjkiIG5hbWU9ImJ0bl9zZWFyY2hfZXh0ZXJuIj4KKyAgICA8dmFsdWU+ZXh0ZXJuIHVzZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzMCIgbmFtZT0ibGJsX3ByZW5hbWUiPgorICAgIDx2YWx1ZT5wcmUgbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzEiIG5hbWU9ImxibF9uYW1lIj4KKyAgICA8dmFsdWU+bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzIiIG5hbWU9ImxibF9lbWFpbCI+CisgICAgPHZhbHVlPkUtbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzMiIG5hbWU9ImxvZ291dENvbmZpcm1fdGl0bGUiPgorICAgIDx2YWx1ZT5Db25maXJtIGxvZ291dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzQiIG5hbWU9ImxvZ291dENvbmZpcm1fc3VyZV90b19sb2dvdXRfcXVlc3Rpb24iPgorICAgIDx2YWx1ZT5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gbG9nb3V0IG5vdz88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM1IiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT5BY3Rpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkRlbW8gUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EZW1vIFRpbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM4IiBuYW1lPSJtZWV0aW5nIFRpbWVyIj4KKyAgICA8dmFsdWU+TWVldGluZyBUaW1lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzkiIG5hbWU9Im1lZXRpbmcgVGltZXIiPgorICAgIDx2YWx1ZT5UaGlzIFJvb20gaXMgYSBEZW1vIFJvb20uIFRvIGRpc2FibGUgdGhpcyB3YXJuaW5nIHlvdSBlaXRoZXIgc2hvdWxkIGdldCBhIHByaXZhdGUgbWVldGluZyByb29tIGZvciB5b3VyIHBlcnNvbmFsIHVzYWdlIG9yIHNldCB1cCBhbiBvd24gU2VydmVyLiBZb3Ugd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGxvZ2dlZCBvZmYgaW46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MCIgbmFtZT0ibWVldGluZyByb29tIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+TW9kZXJhdGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MSIgbmFtZT0ibW9kZXJhdGVkIHJvb20gd2FpdGluZyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+UGxlYXNlIHdhaXQgdW50aWxsIHRoZSBNb2RlcmF0b3IgaGFzIGVudGVyZWQgdGhlIFJvb20uIFRoZSBNb2RlcmF0b3IgY2FuIGJlIGVpdGhlciBhIFRlYWNoZXIsIEFkbWluIG9yIHRoZSBjcmVhdG9yIG9mIHRoaXMgUm9vbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQyIiBuYW1lPSJlcnJvciBwb3B1cCI+CisgICAgPHZhbHVlPk9rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MyIgbmFtZT0id2luZG93IHNjcmVlbnNoYXJpbmciPgorICAgIDx2YWx1ZT5JbmNvbWluZyBTY3JlZW4gU2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDQiIG5hbWU9IndpbmRvdyBzY3JlZW4gc2hhcmluZyI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGEgbmV3IFNjcmVlbiBTaGFyaW5nIGluY29taW5nIGZyb20gdGhlIFVzZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0NSIgbmFtZT0id2luZG93IHNjcmVlbiBzaGFyaW5nIj4KKyAgICA8dmFsdWU+U3RhcnQgU2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDYiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QWRkIG5ldyBNZWV0aW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0NyIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5NZWV0aW5nIFJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ4IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkV2ZW50IFJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ5IiBuYW1lPSJtYWluIG1lbnUgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPk1vZGVyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUwIiBuYW1lPSJtZW51IG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Nb2RlcmF0ZSBVc2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTEiIG5hbWU9Im1lbnUgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPk1vZGVyYXRlIFJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1MiIgbmFtZT0ibW9kZXJhdG9yIG9yZyI+CisgICAgPHZhbHVlPk08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUzIiBuYW1lPSJjb25maXJtIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5EbyB5b3Ugd2FudCB0byBjaGFuZ2UgdGhpcyBVc2VyIHRvIGJlY29tZSBhIE1vZGVyYXRvciBvZiB0aGF0IE9yZ2FuaXphdGlvbj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU0IiBuYW1lPSJlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+UGxlYXNlIGNob29zZSBhbiBPcmdhbml6YXRpb24gYmVmb3JlIHlvdSB0cnkgdG8gYWRkIGEgVXNlciB0byBpdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU1IiBuYW1lPSJjaG9vc2UgdXNlciB3aW5kb3ciPgorICAgIDx2YWx1ZT5Pcmdhbml6YXRpb24gLSBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU2IiBuYW1lPSJtb2RlcmF0b3Igb3JnIHVzZXJzIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIFVzZXIgZnJvbSB0aGUgT3JnYW5pemF0aW9uPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTciIG5hbWU9Im9yZyBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+VGhpcyBVc2VyIGlzIE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTgiIG5hbWU9Im9yZyBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+VGhpcyBVc2VyIGlzIE5vLU1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTkiIG5hbWU9ImVycm9yIG1lc3NhZ2UgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkRvIHlvdSB3YW50IHRoaXMgVXNlciB0byBiZSBub3QgYSBNb2RlcmF0b3Igb2YgdGhpcyBPcmdhbml6YXRpb24/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MCIgbmFtZT0ibW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkFkZCBvciBkZWxldGUgVXNlcnMgb3IgUm9vbXMgd2l0aGluIHlvdXIgT3JnYW5pemF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MSIgbmFtZT0iZGVsZXRlIGNvbmZpcm0gcXVlc3Rpb24iPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcmVjb3JkPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjIiIG5hbWU9ImRlbGV0ZSBjb25maXJtIHF1ZXN0aW9uIHVzZXIgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyB1c2VyIGZyb20geW91ciBvcmdhbml6YXRpb24/IFlvdSB3aWxsIG9ubHkgZGVsZXRlIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gdGhlIHVzZXIgYW5kIHlvdXIgb3JnYW5pemF0aW9uLCB0byByZWFsbHkgZGVsZXRlIHRoZSB1c2VyIGl0c2VsZiB5b3UgaGF2ZSB0byBsb2dpbiBpbnRvIHRoZSBBZG1pbmlzdHJhdGlvbi1QYW5lbC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYzIiBuYW1lPSJlcnJvciBtZXNzYWdlIHNlbGYgZGVsZXRpbmciPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IGRlbGV0ZSB5b3VyIG93biBVc2VyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjQiIG5hbWU9ImVycm9yIG1lc3NhZ2UgYXV0aCI+CisgICAgPHZhbHVlPlRoaXMgTWV0aG9kIG5lZWRzIGEgQWRtaW5zdHJhdGlvbiBBY2NvdW50IHRvIGJlIGludm9rZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NSIgbmFtZT0iZXJyb3IgbWVzc2FnZSBTT0FQIj4KKyAgICA8dmFsdWU+VGhlcmUgd2FzIG5vIFNlc3Npb24gYXNzb2NpYXRlZCB3aXRoIHRoaXMgSUQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NiIgbmFtZT0iZXJyb3IgbWVzc2FnZSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+VGhpcyBpcyBhbiBBZG1pbmlzdHJhdG9yIG9yIE1vZGVyYXRvciBhY2NvdW50LiBZb3UgY2FuIG9ubHkgZWRpdCB0aGlzIGFjY291bnQgdGhyb3VnaCB0aGUgQWRtaW5pc3RyYXRpb24gUGFuZWwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NyIgbmFtZT0iZW1haWwgdmVyaWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+VG8gY29tcGxldGUgeW91ciByZWdpc3RyYXRpb24gcGxlYXNlIGNsaWNrIG9uIHRoZSBmb2xsb3dpbmcgbGluay4gT3IgY29weSB0aGUgVVJMIHRvIHlvdXIgYnJvd3NlciBiYXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2OCIgbmFtZT0iZW1haWwgdmVyaWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+Q2xpY2sgdG8gdmVyaWZ5IHlvdXIgRS1NYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2OSIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPk5vIHVzZXIgd2FzIGZvdW5kIGZvciB0aGlzIEhhc2guPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3MCIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPlRoaXMgdXNlciBpcyBhbHJlYWR5IGFjdGl2YXRlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjcxIiBuYW1lPSJlcnJvck1lc3NhZ2VfVXNlckFjdGl2YXRpb25TZXJ2bGV0IFtBY3RpdmF0ZVVzZXJdIj4KKyAgICA8dmFsdWU+WW91IGRpZCBzdWNjZXNzZnVsbHkgYWN0aXZhdGUgeW91ciBhY2NvdW50ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzIiIG5hbWU9ImVycm9yTWVzc2FnZV9Vc2VyQWN0aXZhdGlvblNlcnZsZXQgW0FjdGl2YXRlVXNlcl0iPgorICAgIDx2YWx1ZT5Mb2dpbiBOb3c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjczIiBuYW1lPSJsb2dpbkVycm9yTWVzc2FnZSA9IHVzZXIgd2FzIG5vdCBhY3RpdmF0ZWQiPgorICAgIDx2YWx1ZT5Zb3VyIGFjY291bnQgaXMgbm90IGFjdGl2YXRlZC4gRmlyc3QgdXNlIHRoZSBsaW5rIGluIHRoZSBFbWFpbCB5b3UndmUgcmVjZWl2ZWQgZHVyaW5nIHJlZ2lzdHJhdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc0IiBuYW1lPSJyZWdpc3RlciB2ZXJpZmljYXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPllvdSBzdWNjZXNzZnVsbHkgc2lnbmVkIHVwLiBXZSd2ZSBzZW5kIGFuIEVNYWlsIHdpdGggYSB2ZXJpZmljYXRpb24gQ29kZSB0byB5b3VyIE1haWwuIFBsZWFzZSBjaGVjayB5b3VyIEluYm94LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzUiIG5hbWU9InBhcnRpY2lwYW50cyBwYW5lbCI+CisgICAgPHZhbHVlPlJlbW92ZSBNb2RlcmF0aW9uIFJvbGUgZnJvbSB0aGlzIFVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc2IiBuYW1lPSJwYXJ0aWNpcGFudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5HcmFudCBNb2RlcmF0aW9uIFJpZ2h0cyB0byB0aGlzIFVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc3IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Vc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3OCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QWNjZXNzIHRvIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc5IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Nb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgwIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Nb2RlcmF0aW9uOiBQbGVhc2UgY2hvb3NlIGFueSBVc2VyIG9uIHRoZSBMaXN0IHRvIGdyYW50IGhpbSBhY2Nlc3MgdG8gdGhlIFdoaXRlYm9hcmQsIE1vZGVyYXRpb24gb3IgVmlkZW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+VGhpcyBVc2VyIGlzIGFscmVhZHkgTW9kZXJhdG9yLCBzbyBoZSBoYXMgYXV0b21hdGljYWxseSB0aGUgcmlnaHQgdG8gZHJhdy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgyIiBuYW1lPSJldmVudCB1c2VyIGxpc3QgZXJyb3IiPgorICAgIDx2YWx1ZT5UaGlzIGlzIHlvdSEgWW91IGNhbm5vdCByZW1vdmUgdGhlIE1vZGVyYXRpb24gcmlnaHRzIGZyb20geW91cnNlbGYuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MyIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QWxsb3cgdGhpcyBVc2VyIHRvIFB1Ymxpc2ggaGlzIEF1ZGlvIC8gVmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg0IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5SZW1vdmUgQXVkaW8vVmlkZW8gb2YgdGhpcyBVc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4NSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+SSB3b3VsZCBsaWtlIHRvIGdldCB0aGUgbW9kZXJhdGlvbiBvZiB0aGlzIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg2IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5JIHdvdWxkIGxpa2UgdG8gZHJhdyBvbiB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4NyIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+SSB3b3VsZCBsaWtlIHRvIHNoYXJlIG15IEF1ZGlvL1ZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4OCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+WW91IGFyZSBtb2RlcmF0b3Igb2YgdGhpcyByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4OSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+WW91IGFyZSBhbGxvd2VkIHRvIGRyYXcgb24gd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTAiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPllvdSBhcmUgYWxsb3dlZCB0byBzaGFyZSB5b3VyIEF1ZGlvL1ZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5MSIgbmFtZT0iZXJyb3J0eXBlIj4KKyAgICA8dmFsdWU+TWVzc2FnZSB0byBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkyIiBuYW1lPSJhcHBseSBmb3IgbW9kIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTMiIG5hbWU9ImFwcGx5IGZvciBtb2QgbWVzc2FnZSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gZ2V0IHRoZSBNb2RlcmF0aW9uLiBVc2UgdGhlIHN0YXR1cyBJY29ucyBuZXh0IHRvIHRoZSB1c2VyIGluIHRoZSBMaXN0IG9mIFVzZXJzIHRvIGFkZCBvciByZW1vdmUgdGhlIE1vZGVyYXRpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5NCIgbmFtZT0iYXBwbHkgZm9yIHdoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGRyYXcgb24gd2hpdGVib2FyZC4gVXNlIHRoZSBzdGF0dXMgSWNvbnMgbmV4dCB0byB0aGUgdXNlciBpbiB0aGUgTGlzdCBvZiBVc2VycyB0byBhZGQgb3IgcmVtb3ZlIHRoZSByaWdodCB0byBkcmF3IGFueXRoaW5nIG9uIHRoZSB3aGl0ZWJvYXJkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTUiIG5hbWU9IjY5NSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gc2hhcmUgaGlzIEF1ZGlvL1ZpZGVvLiBVc2UgdGhlIHN0YXR1cyBJY29ucyBuZXh0IHRvIHRoZSB1c2VyIGluIHRoZSBMaXN0IG9mIFVzZXJzIHRvIGFkZCBvciByZW1vdmUgdGhlIHJpZ2h0IHRvIHNoYXJlIEF1ZGlvL1ZpZGVvIGZvciBhbnkgVXNlci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk2IiBuYW1lPSJtb2RlcmF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Zb3UgaGF2ZSB0byB3YWl0IHVudGlsbCBhIE1vZGVyYXRvciBlbnRlcnMgdGhlIHJvb20uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5NyIgbmFtZT0iY2FsZW5kYXIgYnV0dG9uIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5OCIgbmFtZT0iY2FsZW5kYXIgYnV0dG9uIj4KKyAgICA8dmFsdWU+U2F2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTkiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPkRheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDAiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPk1vbnRoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwMSIgbmFtZT0iY2FsZW5kYXIgY29tcG9uZW50Ij4KKyAgICA8dmFsdWU+WWVhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDIiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5VcGxvYWQgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDMiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5BZGQgRm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwNCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlJlZnJlc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA1IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+VHJhc2ggKERyYWcgYW5kIERyb3AgaXRlbSBoZXJlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDYiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5NeSBGaWxlcyAoSG9tZSBEcml2ZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA3IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+Um9vbSBGaWxlcyAoUHVibGljIERyaXZlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDgiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5BZGQgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDkiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5BZGQgRm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkRlbGV0ZSBGb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzExIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+RWRpdCBOYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPk5ldyBGb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzEzIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIEl0ZW0/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxNCIgbmFtZT0idXNlciBhZG1pbiI+CisgICAgPHZhbHVlPlNlYXJjaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTUiIG5hbWU9InVzZXIgYWRtaW4iPgorICAgIDx2YWx1ZT5TZWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE2IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+T3BlbiBEb2N1bWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTciIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5TaG93IGFsbCBGaWxlcyAoVHJlZSBWaWV3KTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTgiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5DbG9zZSBEb2N1bWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTkiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5EZWxldGUgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjAiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIG5vdCBhbGxvd2VkIHRvIGRyYXcgYW55dGhpbmcgb24gdGhlIFdoaXRlYm9hcmQuIFlvdSBoYXZlIHRvIGJlY29tZSBNb2RlcmF0b3Igb3IgYXQgbGVhc3QgZ2V0IHRoZSBSaWdodCB0byBlZGl0IFdoaXRlYm9hcmQuIFlvdSBtYXkgYXNrIGEgTW9kZXJhdG9yIHRvIGdpdmUgeW91IHRoYXQgcmlnaHQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyMSIgbmFtZT0icHJvcGVydHkgcGFuZWwiPgorICAgIDx2YWx1ZT5Eb2N1bWVudCBQcm9wZXJ0aWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyMiIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+U3RhcnQgQ2xpZW50IChleHRlcm5hbCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIzIiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5TdGFydCBDbGllbnQgKEhUVFApPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNCIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+QSB1c2VyIHdhbnQgdG8gc2hhcmUgaGlzIHNjcmVlbi4gRG8geW91IHdhbnQgdG8gc2VlIGl0PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjUiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPllvdSBhcmUgY3VycmVudGx5IHNoYXJpbmcgeW91ciBEZXNrdG9wLiBGb3Igc3RvcHBpbmcgdGhlIFNoYXJpbmcgU2Vzc2lvbiBwbGVhc2UgaGl0IHRoZSBTdG9wIGJ1dHRvbiBpbiB0aGUgU2hhcmluZyBDbGllbnQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNiIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+U2hhcmluZyBTZXNzaW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNyIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+WW91IGFyZSBhbHJlYWR5IHNoYXJpbmcgeW91ciBkZXNrdG9wITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+RGVza3RvcCBWaWV3ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI5IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkV4aXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMwIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkRlc2t0b3AgU2hhcmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5DbGljayBTdGFydCB0byBwdWJsaXNoIHlvdXIgc2NyZWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdGFydCBTaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdG9wIFNoYXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM0IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlNlbGVjdCB5b3VyIHNjcmVlbiBhcmVhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzUiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+Q2hhbmdlIHdpZHRoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5UaGUgU2hhcmVyIGhhcyBmaW5pc2hlZCB0aGlzIHNlc3Npb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5DaGFuZ2UgaGVpZ2h0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczOCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5YLU9mZnNldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzkiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+WS1PZmZzZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQwIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPldpZHRoOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDEiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+SGVpZ2h0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDIiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+Q29ubmVjdGlvbiB3YXMgY2xvc2VkIGJ5IFNlcnZlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDMiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NCIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5TdGFydCBFeHRlcm5hbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDUiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+SWYgeW91IGNsb3NlIHRoaXMgc2Vzc2lvbiBjb21wbGV0ZWx5IHlvdSBhcmUgbm90IGFibGUgdG8gcmVzdGFydCB0aGUgdmlld2VyIGZvciB0aGlzIHNlc3Npb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NiIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5Db25maXJtIENsb3NpbmcgVmlld2VyIFNlc3Npb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ3IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPlNoYXJlIFNjcmVlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDgiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+UmVjb3JkIFNlc3Npb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ5IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+Q28tQnJvd3Npbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUwIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+T29vcHMsIC4uLiBGaXJlZm94IG9uIFdpbmRvd3MgZG9lcyBub3Qgc2hvdyBjbGVhciBDby1Ccm93c2luZy4gUGxlYXNlIHVzZSBhbm90aGVyIEJyb3dzZXIgZm9yIHVzaW5nIHRoZSBDby1Ccm93c2luZyBmZWF0dXJlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTEiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5QcmV2aW91czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTIiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5OZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MyIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPlJlbG9hZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTQiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5Ib21lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1NSIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPkxvYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU2IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+QWRkIHRoaXMgd2Vic2l0ZSBhcyBEZWZhdWx0IHdlYnNpdGUgdG8geW91ciBQcm9maWxlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTciIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5UZXN0IFNldHVwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1OCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPkNoZWNrIHlvdSBNaWNyb3Bob25lIGFuZCBDYW1lcmEgc2V0dXAgYmVmb3JlIHlvdSBlbnRlciBhIHJvb20gYnkgcmVjb3JkaW5nIHNvbWUgc2Vjb25kcy4gWW91IGNhbiB0aGVuIHJlcGxheSB5b3VyIHJlY29yZGluZyB0byBjaGVjayB5b3VyIHZvaWNlIGFuZCBwaWN0dXJlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTkiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5Eb24ndCBzaG93IHRoaXMgdGVzdCBhbnltb3JlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjEiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5TdGFydCBDb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MiIgbmFtZT0iZWRpdCB2aWRlbyBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkRvIG5vdCBhc2sgYWdhaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYzIiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+UkVDPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlBMQVk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY1IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+WW91IG1heSBwcm9jZWVkIHdpdGhvdXQgdGVzdGluZyBpZiB5b3UgZG8gbm90IHBsYW4gdG8gcHVibGlzaCB5b3VyIHZvaWNlIG9yIHBpY3R1cmUuIFBhcnRpY2lwYW50cyB3aXRob3V0IEF1ZGlvIG9yIFZpZGVvIGNhbiBzdGlsbCB1c2UgdGhlIFdoaXRlYm9hcmQsIHNoYXJlIHRoZWlyIERlc2t0b3Agb3Igd3JpdGUgQ2hhdCBtZXNzYWdlcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY2IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+U1RPUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjciIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5MZXZlbC1NZXRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjgiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5QcmVzcyBTdGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjkiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5TdGFydCBDb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MCIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPlN0YXJ0IEV2ZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MSIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPkNob29zZSBSb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MiIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPkNoZWNrIFNldHVwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MyIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPlN0YXJ0IENvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc0IiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+SG93IHRvIGNvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc1IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+U3RhcnQgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NiIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPkRvIG5vdCBzaG93IEF1ZGlvIC8gVmlkZW8gVGVzdCAoUmVjb3JkaW5nKSBiZWZvcmUgZW50ZXJpbmcgYSBDb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NyIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPlB1YmxpYyBSb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzgiIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT5QdWJsaWMgUm9vbXMgYXJlIGFjY2Vzc2libGUgZm9yIGFsbCBVc2Vycy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc5IiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+UHJpdmF0ZSBSb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODAiIG5hbWU9IlByaXZhdGUgUm9vbXMiPgorICAgIDx2YWx1ZT5Qcml2YXRlIFJvb21zIGFyZSBvbmx5IGFjY2Vzc2libGUgZm9yIHVzZXJzIG9mIHRoZSBzYW1lIG9yZ2FuaXphdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgxIiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+TXkgUm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgyIiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+Um9vbXMgaW4gdGhpcyBzZWN0aW9uIGFyZSBjcmVhdGVkIGZvciBwZXJzb25hbCB1c2FnZS4gVGhlcmUgYXJlIHNvbWUgc3RhbmRhcmQgcm9vbXMgcGx1cyB0aGUgb25lcyB0aGF0IGFyZSBjcmVhdGVkIHRocm91Z2ggdGhlIGNhbGVuZGFyIGFuZCBoYXZlIGEgc3RhcnQgYW5kIGFuIGVuZCBkYXRlLiBUaGUgcm9vbXMgY3JlYXRlZCB2aWEgdGhlIGNhbGVuZGFyIGFyZSBvbmx5IGxpc3RlZCBpbiB0aGlzIHNlY3Rpb24gYXMgbG9uZyBhcyB0aGV5IGFyZSB2YWxpZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgzIiBuYW1lPSJyZXN0cmljdGVkIHJvb20iPgorICAgIDx2YWx1ZT5Zb3UgaGF2ZSB0byBiZSBtb2RlcmF0b3IgdG8gZG8gdGhpcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg0IiBuYW1lPSJtZW51IG9wdGlvbiI+CisgICAgPHZhbHVlPkFwcGx5IGZvciBtb2RlcmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NSIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT5BcHBseSBmb3Igd2hpdGVib2FyZCBhY2Nlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg2IiBuYW1lPSJtZW51IG9wdGlvbiI+CisgICAgPHZhbHVlPkFwcGx5IGZvciBjYW1lcmEvbWljcm9waG9uZSBhY2Nlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg3IiBuYW1lPSJlcnJvciBtZXNzYWdlIHNvYXAgc2VjdXJlIGxvZ2luIj4KKyAgICA8dmFsdWU+VGhpcyBTZXNzaW9uIEhhc2ggd2FzIGFscmVhZHkgdXNlZC4gWW91IGNhbm5vdCB1c2UgaXQgdHdpY2UuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4OCIgbmFtZT0iZGFzaGJvYXJkIGJ1dHRvbiI+CisgICAgPHZhbHVlPlNUQVJUPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4OSIgbmFtZT0iZXhpdCBjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+RVhJVDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTAiIG5hbWU9ImNvbmZlcmVuY2UgdmlldyI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBleGl0PyBZb3UgbWlnaHQgc2hvdWxkIGNsZWFyIHVwbG9hZGVkIGRvY3VtZW50cywgd2hpdGVib2FyZCBhbmQgdGhlIGNoYXQgaGlzdG9yeS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkxIiBuYW1lPSJjb25mZXJlbmNlIHZpZXciPgorICAgIDx2YWx1ZT5FeGl0IGNvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkyIiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT5Sb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTMiIG5hbWU9Im1haW4gbWVudSI+CisgICAgPHZhbHVlPkNob29zZSBhIHJvb20gZm9yIGEgbWVldGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTQiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgYW4gdW5zYXZlZCBFdmVudCBpbiB0aGUgQ2FsZW5kYXIuIFBsZWFzZSBlaXRoZXIgc2F2ZSBpdCBvciByZW1vdmUgaXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5NSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5QbGVhc2UgYWRkIGF0IGxlYXN0IG9uZSBhdHRlbmRlZSBmb3IgeW91ciBtZWV0aW5nITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTYiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEV2ZW50PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTciIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+V2FybmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTgiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QWRkIEV2ZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5OSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5EYXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAwIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPldlZWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAxIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPk1vbnRoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMiIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5EZXNjcmlwdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDMiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QXR0ZW5kZWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FLCB5b3VyIFdlYiBDb25mZXJlbmNpbmcgUGxhdGZvcm0uIEVpdGhlciBmb2xsb3cgdGhlIEluc3RydWN0aW9ucywgcHJlc3MgdGhlIHN0YXJ0IGJ1dHRvbiB0byBzdGFydCB0byBjb25mZXJlbmNlIGltbWVkaWF0ZWxseSBvciB5b3UgZ290byB0aGUgQ2FsZW5kYXIgYW5kIHNldCB1cCBhIENvbmZlcmVuY2UgZm9yIHRoZSBmdXR1cmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNSIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+UGxhbiBhIE1lZXRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA2IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VG8gc2V0IHVwIGEgY29uZmVyZW5jZSB5b3UgY2FuIGFkZCBhIG5ldyBFdmVudCBpbiB0aGUgQ2FsZW5kYXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNyIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPk5lZWQgaGVscD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA4IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+UmVzdHJpY3RlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDkiIG5hbWU9Imx6Y2FsZW5kZXIiPgorICAgIDx2YWx1ZT5TZWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEwIiBuYW1lPSJsemNhbGVuZGVyIj4KKyAgICA8dmFsdWU+QWRkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMSIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIFVzZXIgc2VsZWN0ZWQuIFBsZWFzZSBzZWxlY3QgYW4gaXRlbSBmcm9tIHRoZSBsaXN0IGZpcnN0IGFuZCB0aGVuIGhpdCBhZGQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMiIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPkFkZCBBdHRlbmRlZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTMiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5TYXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxNCIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPkRlbGV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTUiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5FdmVudCBEZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkRlZmF1bHQgTW9kZXJhdG9yczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5TdXBlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTgiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTkiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyMCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkUtTWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjEiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5BZGQgbmV3IGRlZmF1bHQgTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyMiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPklzIFN1cGVyIE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjMiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5JZiB0aGUgUm9vbSBpcyBtb2RlcmF0ZWQsIFVzZXIgd2l0aCBMZXZlbCBNb2RlcmF0b3Igb3IgQWRtaW5pc3RyYXRvciBhcmUgYXV0b21hdGljYWxseSBNb2RlcmF0b3IgaWYgdGhleSBlbnRlciB0aGUgUm9vbS4gSWYgeW91IGRvbid0IHdhbnQgdG8gc3BlY2lmeSB0aGF0IGFuZCBvbmx5IHdhbnQgYSBjZXJ0YWluIFVzZXIgdG8gYmVjb21lIE1vZGVyYXRvciB1c2UgdGhlIERlZmF1bHQgTW9kZXJhdG9yIG9wdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI0IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+QSBTdXBlciBNb2RlcmF0b3IgaXMgYWx3YXlzIGEgTW9kZXJhdG9yIHdoZW4gaGUgZW50ZXJzIGEgUm9vbSwgYW5kIG5vYm9keSBjYW4gcmVtb3ZlIHRoZSBNb2RlcmF0aW9uIEZsYWcgZnJvbSBoaW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI1IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+QXBwbHkgU3VwZXItTW9kZXJhdGlvbiB0byBVc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPlJlbW92ZSBTdXBlciBNb2RlcmF0aW9uIGZyb20gVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyOCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPklmIHlvdSBhZGQgYW4gT3JnYW5pemF0aW9uIHRvIHRoZSByb29tIG9ubHkgdXNlcnMgb2YgdGhhdCBPcmdhbml6YXRpb24gaGF2ZSBhY2Nlc3MgdG8gaXQgKFRoaXMgaXMgb25seSB2YWxpZCBpZiB0aGUgaXNQdWJsaWMgZmxhZyBpcyBzZXQgdG8gZmFsc2UhKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjkiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5Nb2RlcmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzMCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkxpbWl0YXRpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzMSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPk9yZ2FuaXphdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzIiIG5hbWU9ImNvbmZpcm0gYWN0aW9uIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzMiIG5hbWU9ImNvbmZpcm0gZGVsZXRlIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEl0ZW0/IFlvdSBoYXZlIHRvIHByZXNzIHRoZSBzYXZlIGJ1dHRvbiB0byBzdG9yZSB0aGUgY2hhbmdlcyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM0IiBuYW1lPSJ1c2VyIGNob29zZSBlcnJvciI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIFVzZXIgc2VsZWN0ZWQuIFBsZWFzZSBzZWxlY3QgZmlyc3QgYmVmb3JlIHlvdSBhZGQgaXQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkFkZCBuZXcgRGVmYXVsdCBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM2IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RG8geW91IHdhbnQgdG8gYWRkIHRoZSBTdXBlciBNb2RlcmF0aW9uIEZsYWcgZm9yIHRoaXMgVXNlcj8gQSBTdXBlciBNb2RlcmF0b3IgaXMgbm90IG9ubHkgTW9kZXJhdG9yIG9mIGEgUm9vbSwgYnV0IGFsc28gbm8gb3RoZXIgTW9kZXJhdG9yIGNhbiByZW1vdmUgdGhlIE1vZGVyYXRpb24gRmxhZyBmb3IgdGhpcyBVc2VyLiBZb3UgbmVlZCB0byBzYXZlIHRoZSBSb29tIE9iamVjdCB0byBzYXZlIHRoZXNlIHNldHRpbmdzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EbyB5b3Ugd2FudCB0byByZW1vdmUgdGhlIFN1cGVyIE1vZGVyYXRpb24gRmxhZyBmb3IgdGhpcyBVc2VyPyBZb3UgbmVlZCB0byBzYXZlIHRoZSBSb29tIE9iamVjdCB0byBzYXZlIHRoZXNlIHNldHRpbmdzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzgiIG5hbWU9InN1cGVyIG1vZGVyYXRvciI+CisgICAgPHZhbHVlPlRoaXMgVXNlciBpcyBhIFN1cGVyLU1vZGVyYXRvci4gWW91IGNhbm5vdCByZW1vdmUgdGhlIE1vZGVyYXRpb24gZmxhZyBmcm9tIGEgU3VwZXItTW9kZXJhdG9yITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzkiIG5hbWU9ImNvbmZpcm0gZGVsZXRlIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZpbGUvRm9sZGVyPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDAiIG5hbWU9ImNvbmZpcm0gZGVsZXRlIj4KKyAgICA8dmFsdWU+RGVsZXRlIEZpbGUvRm9sZGVyPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDEiIG5hbWU9InNhbHV0YXRpb24iPgorICAgIDx2YWx1ZT5NcnMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0MiIgbmFtZT0ic2FsdXRhdGlvbiI+CisgICAgPHZhbHVlPkRyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDMiIG5hbWU9InByb3BlcnR5IHBhbmVsIHdoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5Qcm9wZXJ0aWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NCIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPlNob3cgbW91c2UgcG9zaXRpb24gdG8gdmlld2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDUiIG5hbWU9InB1Ymxpc2ggb3B0aW9uIj4KKyAgICA8dmFsdWU+U2hhcmUgQXVkaW8gd2l0aCBTSVAgQXBwbGV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NiIgbmFtZT0icHVibGlzaCBvcHRpb24iPgorICAgIDx2YWx1ZT5TaGFyZSBBdWRpbyB3aXRoIFNJUCBhbmQgVmlkZW8gd2l0aCBGbGFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDciIG5hbWU9ImRvY3VtZW50IHBhbmVsIj4KKyAgICA8dmFsdWU+RnVsbC1GaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ4IiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5WaWV3IFNjcmVlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDkiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlRoZSB1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MCIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+d2FudHMgdG8gc2hhcmUgaXRzIHNjcmVlbi4gRG8geW91IHdhbnQgdG8gc2VlIGl0PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTEiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNsb3NlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MiIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPlpvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUzIiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+VGhlIFNlc3Npb24gd2FzIGNsb3NlZCBieSB0aGUgc2hhcmluZyBVc2VyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTQiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5QYXVzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTUiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5OZXcgU2NyZWVuIFNoYXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU2IiBuYW1lPSJwcmVzZW50ZXIgbWluaSBpY29uIj4KKyAgICA8dmFsdWU+TWluaW1pemU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU3IiBuYW1lPSJwcmVzZW50ZXIgbWluaSBpY29uIj4KKyAgICA8dmFsdWU+TWF4aW1pemU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU4IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5WaWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTkiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlJlY29yZGluZyBUaW1lbGluZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjAiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk15IFJlY29yZGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYxIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5QdWJsaWMgUmVjb3JkaW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjIiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkluZm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYzIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TGVuZ3RoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RGF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjYiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UExBWTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjgiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk1haW4gLSBWaWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjkiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzAiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPllvdSBtYXkgcmVjb3JkIGFuZCBzaGFyZSB5b3VyIHNjcmVlbiBhdCB0aGUgc2FtZSB0aW1lLiBUbyBlbmFibGUgb3RoZXJzIHRvIHNlZSB5b3VyIHNjcmVlbiBqdXN0IGhpdCB0aGUgc3RhcnQgYnV0dG9uIG9uIHRoZSB0b3AuIFRvIG9ubHkgcmVjb3JkIHRoZSBTZXNzaW9uIGl0IGlzIHN1ZmZpY2llbnQgdG8gY2xpY2sgc3RhcnQgcmVjb3JkaW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzEiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlN0YXJ0IFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzIiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlN0b3AgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3MyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RG93bmxvYWQgdGhlIEZMVi1GaWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3NCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+Um9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzUiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlBsYXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TdG9wPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3NyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+VXNlciBoYXMgbWljcm9waG9uZSBvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U3RvcCBTaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3OSIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5BbGxvdyBVc2VyIFF1ZXN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODAiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+VHVybiB0aGlzIG9mZiB0byBwcmV2ZW50IHRoYXQgYW55IHVzZXIgaXMgZGlzdHVyYmluZyB5b3UgaW4gdGhpcyByb29tLiBFZmZlY3QgaXMgdGhhdCB0aGUgQnV0dG9uIHRvIGFzayBmb3IgTW9kZXJhdGlvbiAoIkkgaGF2ZSBhIHF1ZXN0aW9uIikgaXMgbm90IHZpc2libGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MSIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5SaWdodHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgyIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Eb3dubG9hZCBhcyBBVkk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgzIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5GTFY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg0IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5BVkk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg1IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5SYXcgU2NyZWVudmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5BdWRpbyBvbmx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+VGhlIGhhdmUgYmVlbiBlcnJvcnMgd2hpbGUgcHJvY2Vzc2luZyB0aGUgUmVjb3JkaW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODgiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlRoZSBSZWNvcmRpbmcgaXMgbm90IHlldCByZWFkeSBmb3Igd2F0Y2hpbmcuIFBsZWFzZSByZXRyeSBpbiBhIGNvdXBsZSBvZiBtaW51dGVzIGFnYWluLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODkiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkxvZzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkwIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5SZWNvcmRlciBNZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+T2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkyIiBuYW1lPSJzaXAgYXBwbGV0Ij4KKyAgICA8dmFsdWU+U0lQIEFwcGxldCBpcyBub3QgUmVhZHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkzIiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+U0lQLUFjY291bnQgU2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk0IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+U0lQIHNldHRpbmdzIGZvciBlYWNoIHVzZXIuIFlvdSBjYW4gdHVybiBvbiBvciBvZmYgU0lQIHZpYSB0aGUgQWRtaW5pc3RyYXRpb24gJmd0OyBDb25maWd1cmF0aW9uIChLZXk6IGVuYWJsZV9zaXApLiBUaGUgU0lQIGRhdGEgZm9yIGVhY2ggdXNlciBzaG91bGQgYmUgY3JlYXRlZCBhdXRvbWF0aWNhbGx5LiBZb3UgY2FuIHJlLWNyZWF0ZSB0aGUgZGF0YSBieSBjaGVja2luZyAiUmUtZ2VuZXJhdGUgU0lQIERhdGEiPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NSIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNJUC1Vc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NiIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNpcC1QYXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NyIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNpcC1BdXRoLUlkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5OCIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIExvZ2luIHRvIHRoZSBTSVAgR2F0ZXdheSBoYXMgZmFpbGVkLiBZb3Ugc2hvdWxkIGNoZWNrIHRoZSBhdXRoZW50aWZpY2F0aW9uIGRhdGEgb2YgeW91ciBTSVAtUHJvdmlkZXIgYW5kIHRoZSBTSVAtQWNjb3VudCBEYXRhIGZvciBlYWNoIFVzZXIuIEFzIEFkbWluaXN0cmF0b3IgeW91IGFyZSBzdGlsbCBhYmxlIHRvIGxvZ2luIGFuZCBjaGVjayB0aGUgQ29uZmlndXJhdGlvbi4gQXMgVXNlciBvciBNb2RlcmF0b3IgeW91IHdpbGwgYmUgYmxvY2tlZCBmcm9tIGFueSBpbnRlcmFjdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk5IiBuYW1lPSJzaXAgc3RhdHVzIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgTG9naW4gdG8gdGhlIFNJUCBHYXRld2F5IGhhcyBmYWlsZWQuIENvbnRhY3QgeW91ciBTZXJ2aWNlIFRlYW0hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwMCIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TG9nZ2luZyBpbiB0byBTSVAtR2F0ZXdheSAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAxIiBuYW1lPSJzaXAgc3RhdHVzIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Mb2dnaW5nIGluIHRvIFNJUC1HYXRld2F5IC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDIiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlNob3cgTG9nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwMyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TG9nIG1lc3NhZ2VzIGZyb20gcG9zdCByZWNvcmRlciBwcm9jZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwNCIgbmFtZT0ic2lwIGxvZ2luIj4KKyAgICA8dmFsdWU+U0lQLUFwcGxldCBNZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwNSIgbmFtZT0ic2lwIGxvZ2luIj4KKyAgICA8dmFsdWU+VGhlIFNJUC1BcHBsZXQgaXMgbm90IHJlYWR5LiBBY2NlcHQgdGhlIEFwcGxldCBwbGVhc2UgYW5kIGNsaWNrIG9rITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDYiIG5hbWU9Im1vZGVyYXRvciBwb3AgdXAiPgorICAgIDx2YWx1ZT5HZXQgTW9kZXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDciIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5TYXZlIEFwcG9pbnRtZW50IENoYW5nZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA4IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhlIGFwcG9pbnRlbWVudCBoYXMgYmVlbiBjaGFuZ2VkLiBEbyB5b3Ugd2FudCB0byBzYXZlIHRob3NlIGNoYW5nZXM/ICZsdDtici8mZ3Q7Jmx0O2JyLyZndDtBbGwgYXR0ZW5kZWVzIG9mIHRoZSBhcHBvaW50bWVudCB3aWxsIHJlY2VpdmUgYSBFTWFpbCB3aXRoIHRoZSB1cGRhdGVkIGRhdGUgYW5kIHRpbWUgKGRlcGVuZGluZyBvbiB0aGUgbm90aWZpY2F0aW9uIHR5cGUgb2YgdGhpcyBhcHBvaW50bWVudCkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwOSIgbmFtZT0iZmx2IHJlY29yZGVyIGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UbyBhY2Nlc3Mgb3RoZXIgcmVjb3JkaW5ncyB5b3UgaGF2ZSB0byBsb2dpbiB0aGUgJEFQUF9OQU1FIEFwcGxpY2F0aW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTAiIG5hbWU9ImludGVydmlldyB2aWRlbyBwb2QiPgorICAgIDx2YWx1ZT5DaG9vc2UgdGhlIFVzZXIgZm9yIHRoaXMgVmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTExIiBuYW1lPSJpbnRlcnZpZXcgdmlkZW8gY2hvb3NlIHVzZXIiPgorICAgIDx2YWx1ZT5BdmFpbGFibGUgVXNlcnMgZm9yIHRoaXMgUG9kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMiIgbmFtZT0iaW50ZXJ2aWV3IGluZm8iPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGEgTW9kZXJhdG9yIGluIHRoaXMgSW50ZXJ2aWV3LiBZb3UgY2FuIGRlY2lkZSB3aG8gaXMgc3BlYWtpbmcgaW4gdGhpcyBpbnRlcnZpZXcgYW5kIHlvdSBjYW4gc3RhcnQgLyBzdG9wIHRoZSByZWNvcmRpbmcgb2YgdGhlIFNlc3Npb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMyIgbmFtZT0iaW50ZXJ2aWV3IGJ1dHRvbiByZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TdGFydCBSZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE0IiBuYW1lPSJpbnRlcnZpZXcgYnV0dG9uIHJlY29yZGluZyI+CisgICAgPHZhbHVlPlN0b3AgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxNSIgbmFtZT0iaW50ZXJ2aWV3IGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgcmVjb3JkaW5nIG9mIHRoZSBJbnRlcnZpZXcgaXMgYWxyZWFkeSBzdGFydGVkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTYiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIHJlY29yZGluZyBpcyBhbHJlYWR5IHN0b3BwZWQgb3Igbm90IGJlZW4gc3RhcnRlZCB5ZXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxNyIgbmFtZT0iaW50ZXJ2aWV3IHJlY29yZGluZyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIHJlY29yZGluZyBmb3IgdGhpcyBpbnRlcnZpZXcgaXMgYWxyZWFkeSBzdGFydGVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTgiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxOSIgbmFtZT0iaW50ZXJ2aWV3IGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgcG9zdC1wcm9jZXNzaW5nIG9mIGFuIGludGVydmlldyB0YWtlcyA1IG1pbnV0ZXMgcGVyIDEgbWludXRlIGludGVydmlldy4gVGhlIGN1cnJlbnQgcHJvZ3Jlc3Mgb2YgdGhlIGludGVydmlldyBwb3N0LXByb2Nlc3NpbmcgdHJhbnNjb2RpbmcgaXM6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyMCIgbmFtZT0ic2lwIGNyZWF0aW9uIj4KKyAgICA8dmFsdWU+WW91IGhhdmUgdG8gZW50ZXIgeW91ciBwYXNzd29yZCBhZ2FpbiB0byBhdXRvIGNyZWF0ZSB0aGUgU0lQIERhdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIxIiBuYW1lPSJzaXAgY3JlYXRpb24iPgorICAgIDx2YWx1ZT5SZS1nZW5lcmF0ZSBTSVAgRGF0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjIiIG5hbWU9ImZpbGVleHBsb3JlciI+CisgICAgPHZhbHVlPllvdSBjYW5ub3QgbW92ZSB0aGlzIGZpbGUgb3IgZm9sZGVyIGludG8gaXRzIG93biBzdWIgZm9sZGVyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjMiIG5hbWU9ImZpbGUgZXhwbG9yZXIgIj4KKyAgICA8dmFsdWU+SG9tZSBkcml2ZSBzaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlB1YmxpYyBkcml2ZSBzaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNSIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPkxpY2Vuc2UgU2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI2IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+WW91IGNhbiBlaXRoZXIgYmluZCB0aGUgdXNlciB0byBhIGV4cGlyZSBEYXRlIG9yIHRvIGEgbWF4aW11bSBudW1iZXIgb2YgbWludXRlcyB3aGVuIHlvdSBlbmFibGUgbGljZW5zaW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjciIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5DaGVjayBsaWNlbnNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyOCIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPkZsYXRyYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyOSIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPkV4cGlyZSBkYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMCIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPlNlY29uZHMgbGVmdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzEiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5Ub3RhbCB0aW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91ciBMaWNlbnNlIGhhcyBleHBpcmVkLiBZb3UgbmVlZCB0byBidXkgbmV3IG1pbnV0ZXMgKFBheS1wZXItbWludXRlKSBvciBhIHZvbHVtZSBmbGF0cmF0ZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMzIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5DbGljayBhbmQgYnV5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzNCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+VGltZSBMZWZ0IG9uIHlvdXIgYWNjb3VudDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM1IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Vc2VyIExpY2Vuc2UgSW5mbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzYiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkluZm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM3IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5DbG9zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzgiIG5hbWU9ImxpY2Vuc2UtaW5mbyI+CisgICAgPHZhbHVlPllvdXIgbGljZW5zZSBoYXMgZXhwaXJlZC4gWW91IG5lZWQgZWl0aGVyIHRvIGJ1eSBhIG1pbnV0ZSBwYWNrYWdlIChQYXktcGVyLW1pbnV0ZSkgb3IgYSB2b2x1bWUgZmxhdHJhdGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzOSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+TGljZW5zZSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDAiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdSBjYW4gZWl0aGVyIGJ1eSBtaW51dGVzIHRvIG1ha2UgV2ViLUNvbmZlcmVuY2luZyAoUGF5LXBlci1taW51dGUpLiZsdDtici8mZ3Q7Jmx0O2JyLyZndDsgT3IgeW91IGJ1eSBhIHZvbHVtZSBmbGF0cmF0ZSBhYm91dCAzLTEyIG1vbnRocy4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7U2VuZGluZyBpbnZpdGF0aW9ucyAoZGlyZWN0IGxpbmtzIGludG8gQ29uZmVyZW5jZSBSb29tcykgb3IgY3JlYXRpbmcgY29uZmVyZW5jZSBSb29tcyB2aWEgdGhlIENhbGVuZGFyIHdpdGggZXh0ZXJuYWwgVXNlcnMgaXMgb25seSBhbGxvd2VkIHdpdGggYSB2b2x1bWUgZmxhdHJhdGUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDYwIE1pbnV0ZXMgOSw5OSBFVVJPICgxNiBDZW50IHBlciBNaW51dGUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDUgaG91cnMgMTksOTkgRVVSTyAoNiBDZW50IHBlciBtaW51dGUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDMgbW9udGggZm9yIDI5LDk5IEVVUk8gKDksOTkgRXVybyBwZXIgTW9udGgpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDYgbW9udGggZm9yIDM5LDk5IEVVUk8gKDYsNjYgRXVybyBwZXIgbW9udGgpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+UGF5LXBlci1taW51dGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ2IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Wb2x1bWUgZmxhdHJhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ3IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3UgaGF2ZSB1bmxpbWl0ZWQgTGljZW5zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDgiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdXIgbGljZW5zZSB3aWxsIGV4cGlyZSBhdDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ5IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3UgYm91Z2h0IFBheS1wZXItbWludXRlLiBZb3Ugc3RpbGwgaGF2ZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUwIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5CdXkgbmV3IGNyZWRpdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUxIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5XYW50IHlvdXIgb3duIFNlcnZlcj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUyIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3Ugd291bGQgbGlrZSB0byBoYXZlICRBUFBfTkFNRSBpbnN0YWxsZWQgb24geW91ciBTZXJ2ZXIgb3IgaW50ZWdyYXRlZCBpbnRvIHlvdXIgTW9vZGxlLCBTdWdhckNSTSwgV2Vic2l0ZSBvciBJbnRyYW5ldD8gUHJpemluZ3Mgc3RhcnQgYXQgNTAwIEV1cm8gcGVyIEluc3RhbGxhdGlvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUzIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5PciBzZW5kIHVzIGEgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTQiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkFuc3dlciB0bzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU1IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5NZXNzYWdlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTYiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlNlbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU3IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5DbGljayBoZXJlIHRvIGdldCBjb250YWN0IEluZm8gYW5kIFByaXppbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1OCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q3JlZGl0IENhcmQgRGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTkiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkZpcnN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjAiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkxhc3RuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2MSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q3JlZGl0IENhcmQgVHlwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjIiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlZJU0EgQ2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjMiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPk1hc3RlckNhcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY0IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5EaXNjb3ZlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjUiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkFtZXJpY2FuIEV4cHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY2IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DcmVkaXQgQ2FyZCBOdW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY3IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5FeHBpcmF0aW9uIERhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY4IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DYXJkIFZlcmlmaWNhdGlvbiBOdW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY5IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5CaWxsaW5nIEFkZHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTcwIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5BZGRyZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q2l0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzMiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNvdW50cnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc0IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdGF0ZSAoT25seSBVUyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc1IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5aSVA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc2IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5BbW91bnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc3IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdWJtaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc4IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdGVwIDE6ICRBUFBfTkFNRSAtIFBheW1lbnQgRm9ybTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzkiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkVNYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q2xpY2sgIkNoZWNrIG91dCB3aXRoIFBheXBhbCIgdG8gcGF5LiZsdDtici8mZ3Q7IFBheXBhbCBhY2NlcHRzIFZJU0EsIE1hc3RlckNhcmQsIERpc2NvdmVyIG9yIEFtZXJpY2FuIEV4cHJlc3MuICZsdDtici8mZ3Q7SXQgZG9lcyBub3QgcmVxdWlyZSB0byBzaWduIHVwIHdpdGggUGF5cGFsLiAmbHQ7YnIvJmd0O0NpdGl6ZW5zIGZyb20gR2VybWFueSBjYW4gYWxzbyBwYXkgd2l0aCBkaXJlY3QgZGViaXQgKFBlciBMYXN0c2NocmlmdC1FaW56dWcpLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODEiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlRoYW5rIHlvdSBmb3IgYnV5aW5nICRBUFBfTkFNRS4gJmx0O2JyLyZndDsgJmx0O2JyLyZndDsgQXMgc29vbiBhcyB3ZSByZWNlaXZlZCB0aGUgcGF5bWVudCB5b3VyIGFjY291bnQgd2lsbCBiZSB1cGRhdGVkLiZsdDtici8mZ3Q7IFlvdSB3aWxsIHJlY2VpdmUgYW4gRU1haWwgd2l0aCB5b3VyIGludm9pY2UgYXMgUERGLiZsdDtici8mZ3Q7WW91IGNhbiBhbHNvIGNoZWNrIGN1cnJlbnQgYW5kIHBhc3QgdHJhbnNhY3Rpb25zIGluIHlvdXIgcHJvZmlsZSBzZXR0aW5ncy4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7Jmx0O2JyLyZndDtZb3UgY2FuIGNsb3NlIHRoaXMgYnJvd3NlciB3aW5kb3cvdGFiIG5vdyBhbmQgcmV0dXJuIHRvICRBUFBfTkFNRS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgyIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdWJtaXQgYW5kIEJ1eSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgzIiBuYW1lPSJwYXltZW50LWZyb20iPgorICAgIDx2YWx1ZT5DbGljayBhbmQgQnV5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODQiIG5hbWU9InBheW1lbnQtZnJvbSI+CisgICAgPHZhbHVlPlN0ZXAgMzogJEFQUF9OQU1FIFBheW1lbnQgLSBDaGVjayBvcmRlciBhbmQgYnV5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODUiIG5hbWU9InBheW1lbnQtZnJvbSI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg2IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5QYXltZW50IHJlY2VpdmVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODciIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPkhpLDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODgiIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPldlIGhhdmUgcmVjZWl2ZWQgeW91ciBwYXltZW50LiBZb3VyIHVzZXIgcHJvZmlsZSBpcyB1cGRhdGVkIG5vdy4gU2VlIGF0dGFjaGVkIHlvdXIgSW52b2ljZS4gVGhlIEludm9pY2UgYW5kIGFsbCBwYXN0IEludm9pY2UgY2FuIGFsc28gYmUgZG93bmxvYWRlZCBpbiB5b3VyIHVzZXIgcHJvZmlsZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg5IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5UaGFuayB5b3UgZm9yIHVzaW5nICRBUFBfTkFNRSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkwIiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5QYXltZW50IFJlY2VpdmVkICRBUFBfTkFNRSAtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MSIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPlBheW1lbnQgYW5kIFRyYW5zYWN0aW9uIFN0YXR1czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTIiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5UcmFuc2NhdGlvbiBIYXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MyIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPk1pbnV0ZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk0IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+TW9udGhzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NSIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPkVVUjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTYiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TdGF0dXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk3IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+SW52b2ljZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTgiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk5IiBuYW1lPSJlcnJvci1saWNlbnNlLWZsYXQiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0byBidXkgYSB2b2x1bWUgZmxhdHJhdGUgdG8gYmUgYWJsZSB0byBzZW5kIGludml0YXRpb25zIG9yIGNyZWF0ZSBtZWV0aW5ncyB2aWEgdGhlIGNhbGVuZGFyLiBXaXRoIFBheS1wZXItbWludXRlIGl0IGlzIG9ubHkgcG9zc2libGUgZm9yIHlvdSB0byBhY2Nlc3MgJEFQUF9OQU1FLiBZb3UgY2Fubm90IGFsbG93IDN0aCBQYXJ0aWVzIHRvIGFjY2VzcyBhIE1lZXRpbmcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDAiIG5hbWU9ImVycm9yIHVzZXIiPgorICAgIDx2YWx1ZT5UaGlzIEVtYWlsIGlzIGFscmVhZHkgdXNlZCBieSBhbm90aGVyIFVzZXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDEiIG5hbWU9InJvb20tYWRtaW4iPgorICAgIDx2YWx1ZT5TSVAtU2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwMiIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlRoZSBDb25mZXJlbmNlIE51bWJlciBhbmQgUElOIGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB2aWEgdGhlIE9wZW5YRyBSUEMtR2F0ZXdheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAzIiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+U0lQIE51bWJlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA0IiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+UElOPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDUiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5DbGVhciBvYmplY3RzIG9uIGN1cnJlbnQgc2xpZGUgb25seSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNiIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPk9ubHkgdGhlIFVSTCBlbnRlcmVkIGluIHRoZSBTdGF0dXMgYmFyIGlzIHNlbmQgdG8gcGFydGljaXBhbnRzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TWFrZSBUZWFtLVJvb21zIFtCcmVha291dCBzZXNzaW9uXTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2hvb3NlIHVzZXJzIGZvciBhIG5ldyBUZWFtLVJvb20hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIGNob29zZSB1c2VycyBoZXJlIGFuZCBjcmVhdGUgYSBuZXcgQ29uZmVyZW5jZSBSb29tICgiVGVhbSBSb29tIikgZm9yIHRoZW0uIFRoZSBjaG9zZW4gdXNlcnMgd2lsbCBhdXRvbWF0aWNhbGx5IHN3aXRjaCB0byB0aGUgbmV3IFRlYW0tUm9vbSBvciBnZXQgYSBub3RpZmljYXRpb24uIFRlYW0tUm9vbSBNb2RlcmF0b3JzIHdpbGwgZ2V0IGFkZGl0aW9uYWxseSBhIGxpc3Qgb2YgY3VycmVudCByb29tcyBzbyB0aGF0IHRoZXkgY2FuIHN3aXRjaCB0byBlYWNoIHJvb20gaWYgdGhlcmUgYXJlIGlzIG5lZWQgZm9yIGEgTW9kZXJhdG9yLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VXNlcm5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkxvZ2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJzIGZvciB0aGUgbmV3IFRlYW0tUm9vbTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNyZWF0ZSBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2hvb3NlIGF0IGxlYXN0IG9uZSB1c2VyIGZvciB0aGUgVGVhbS1Sb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+QWRkIHVzZXIgdG8gdGVhbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+UmVtb3ZlIHVzZXIgZnJvbSBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXIgaXMgVGVhbS1Sb29tIE1vZGVyYXRvciAoSGUgaXMgYWJsZSB0byBtYW5hZ2UgVGVhbS1Sb29tcyBhbmQgdXNlcnMgb2YgdGhlIFRlYW0tUm9vbSBjYW4gYXNrIGhpbSB0byBjb21lIGluc2lkZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlJvb210eXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5JZiB5b3UgY2hlY2sgIkZvcmNlIHVzZXIgdG8gc3dpdGNoIHRvIG5ldyBUZWFtLVJvb20iIGFsbCBjaG9zZW4gdXNlcnMgd2lsbCBhdXRvbWF0aWNhbGx5IHN3aXRjaCB0byB0aGUgbmV3bHkgY3JlYXRlZCBUZWFtLVJvb20uIE90aGVyd2lzZSB0aGV5IGdldCBhIG5vdGlmaWNhdGlvbiB3aXRoIGEgYnV0dG9uIHRoYXQgdGhleSAmbHQ7aSZndDtjYW4mbHQ7L2kmZ3Q7IHN3aXRjaCB0byB0aGUgbmV3IHJvb20uIFRlYW0tTW9kZXJhdG9ycyBhbHdheXMgaGF2ZSB0aGUgZnJlZSBjaG9pY2UgdG8gbWFuYWdlIHRoZSBUZWFtLVJvb21zIGFuZCBzd2l0Y2ggYmV0d2VlbiB0aGVtLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TWFuYWdlIFRlYW0tUm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPllvdSBjYW4gc3dpdGNoIGhlcmUgYmV0d2VlbiBhbGwgVGVhbS1Sb29tcyB0aGF0IHlvdSBhcmUgYXNzaWduZWQgYXMgVGVhbS1Sb29tIE1vZGVyYXRvci4gVXNlcnMgaW5zaWRlIHRoZSBUZWFtLVJvb20gY2FuIHNlbmQgeW91IGEgbWVzc2FnZSwgZm9yIGV4YW1wbGUgdG8gYXNrIHlvdSB0byBjb21lIHRvIHRoZWlyIHJvb20gYW5kIGhlbHAgdGhlbS4gWW91IGNhbiBhbHNvIHRlcm1pbmF0ZSB0aGUgVGVhbS1Sb29tIGFuZCBhbGwgVXNlcnMgd2lsbCBiZSBsb2dnZWQgb3V0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Rm9yY2UgdXNlciB0byBzd2l0Y2ggdG8gbmV3IFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q3JlYXRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJzIGF2YWlsYWJsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+QWRkIGEgdXNlciB3aXRoIHRoZSBwbHVzIGZyb20gdGhlIGxlZnQgb3IgcmVtb3ZlIGl0IHdpdGggdGhlIGNyb3NzIGZyb20gdGhlIHJpZ2h0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MSkgVGVhbS1Sb29tIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4yKSBBZGQgdXNlcnMgdG8gdGhlIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVhbS1Sb29tIE5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2hhbmdlIHRvIHRoZSBSb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Td2l0Y2ggdG8gdGhpcyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlcm1pbmF0ZSBUZWFtLVJvb20gYW5kIGxvZ291dCBhbGwgVXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk5ldyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGEgbmV3IFRlYW0tUm9vbSBhdmFpbGFibGUgZm9yIHlvdS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlN3aXRjaCB0byBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW0tUm9vbSBBY3Rpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIHJlLW9wZW4gdGhpcyB3aW5kb3cgdmlhIHRoZSBtYWluIG1lbnUgaW4gdGhlICJBY3Rpb25zIiBzZWN0aW9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U2VuZCBtZXNzYWdlIHRvIFRlYW0tUm9vbSBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk5ldyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGEgbmV3IFRlYW0tUm9vbSBhdmFpbGFibGUuIFlvdSBjYW4gc3dpdGNoIHRvIHRoYXQgUm9vbS4gVGVhbS1Sb29tcyBhcmUgbGlrZSAiV29ya2dyb3VwcyIgd2l0aCBhZGRpdGlvbmFsbHkgcG9zc2liaWxpdGllcyB0byBhc2sgdGhlIFRlYW0tUm9vbSBNb2RlcmF0b3IgZm9yIGhlbHAuIFlvdXIgVGVhbS1Sb29tcyBhcmUgYWxzbyBhdmFpbGFibGUgaW4gdGhlICJNeSBNZWV0aW5ncyIgc2VjdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlN3aXRjaCB0byBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNyZWF0ZWQgYnk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb20gbmFtZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0OSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoaXMgV2luZG93IHdpbGwgc3RheSBvcGVuIGV2ZW4gaWYgeW91IGxlYXZlIHRoZSByb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VXNlcnMgZm9yIHRoaXMgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4zKSBPdGhlciBUZWFtLVJvb21zIHRoYXQgeW91IGNvdWxkIHN3aXRjaCB0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U2VuZCBhIG1lc3NhZ2UgdG8gdGhlIFRlYW0tUm9vbSBNb2RlcmF0b3JzLiBGb3IgZXhhbXBsZSBpZiB5b3UgbmVlZCBoZWxwIGluIE1vZGVyYXRpbmcgdGhlIFJvb20gb3IgaWYgeW91IGhhdmUgYSBxdWVzdGlvbiBhYm91dCB0aGUgdG9waWMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5TZW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4yKSBVc2VycyB0aGF0IGFyZSBpbnZpdGVkIHRvIHRoaXMgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5JcyBUZWFtLVJvb20gTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVzZSBhcmUgYWxsIHVzZXJzIHRoYXQgdGhlIG1vZGVyYXRvciBoYXMgaW52aXRlZCB0byB0aGlzIFRlYW0tUm9vbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1NyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIFRlYW0tTW9kZXJhdG9yIGxvZ2dlZCBpbiBhdCB0aGUgbW9tZW50ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGEgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+UGxlYXNlIGhlbHAgdXMsIHdlIGhhdmUgYSBwcm9ibGVtIGluIG91ciBUZWFtLVJvb20hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5BIHVzZXIgZnJvbSBhIFRlYW0tUm9vbSByZXF1ZXN0cyB5b3VyIGhlbHAuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb20gcmVxdWVzdCBmb3IgaGVscDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TWVzc2FnZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2MyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkZyb206PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGN1cnJlbnRseSBub3QgaW4gYW55IFRlYW0tUm9vbS4gQnV0IHlvdSBjYW4gc3dpdGNoIGhlcmUgdG8gYWxsIFRlYW0tUm9vbXMgdGhhdCB5b3UgaGF2ZSBhY2Nlc3MgdG8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjUiIG5hbWU9ImJhY2t1cENvbnRlbnQiPgorICAgIDx2YWx1ZT5CYWNrdXAgdGhlIFN5c3RlbS4gVGhlIEJhY2t1cCBpbmNsdWRlcyBhbGwgVXNlciBnZW5lcmF0ZWQgZGF0YS4gVGhlIGNvbmZpZ3VyYXRpb24gaXMgbm90IGluY2x1ZGVkIGFzIHdlbGwgYXMgdGhlIGxhbmd1YWdlIGxhYmVscy4gQmVjYXVzZSB0aG9zZSB2YWx1ZXMgYXJlIGltcG9ydGVkIHdpdGggdGhlIFN5c3RlbSBJbnN0YWxsZXIuIFRvIHVwZGF0ZSB5b3VyIFN5c3RlbSwgZXhwb3J0IHlvdXIgb2xkIHN5c3RlbSAoMSkgcmUtaW5zdGFsbCBpbnRvIGEgbmV3IGRhdGFiYXNlIHRoZSBuZXcgcGFja2FnZSAoMikgYW5kIGltcG9ydCB0aGUgQmFja3VwIGZpbGUgYWdhaW4gKDMpLiBUaGUgQmFja3VwIHNob3VsZCBiZSBpbXBvcnRlZCBiZWZvcmUgZ2VuZXJhdGluZyBkYXRhIGluIHRoZSBuZXdseSBpbnN0YWxsZWQgc3lzdGVtLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY2IiBuYW1lPSJiYWNrdXBDb250ZW50Ij4KKyAgICA8dmFsdWU+U3lzdGVtIEJhY2t1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY3IiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT5BbGxvdyB1c2VyIHRvIHNoYXJlIFNjcmVlbi9SZWNvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2OCIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+RGVueSB1c2VyIHRvIHNoYXJlIFNjcmVlbi9SZWNvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2OSIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+VXNlciBpcyBNb2RlcmF0b3IsIGhlIGNhbiBkbyBhbnl0aGluZyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3MCIgbmFtZT0iYXBwbHkgZm9yIHNjcmVlbi9yZWNvcmRpbmciPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIHNoYXJlL3JlY29yZCBzY3JlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzEiIG5hbWU9Im1vZGVyYXRpb24gbWluaSBpY29ucyI+CisgICAgPHZhbHVlPllvdSBhcmUgYWxsb3dlZCB0byBzaGFyZS9yZWNvcmQgc2NyZWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzIiIG5hbWU9Im1vZGVyYXRpb24gbWluaSBpY29ucyI+CisgICAgPHZhbHVlPkFwcGx5IGZvciByaWdodCB0byBzaGFyZS9yZWNvcmQgc2NyZWVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDczIiBuYW1lPSJtb2RlcmF0aW9uIG1pbmkgaWNvbnMgY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPkFsbG93L0RlbnkgcmlnaHQgdG8gc2hhcmUvcmVjb3JkIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3NCIgbmFtZT0ic291bmQgaWNvbiI+CisgICAgPHZhbHVlPlR1cm4gc291bmQgb2ZmPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzUiIG5hbWU9InNvdW5kIGljb24iPgorICAgIDx2YWx1ZT5UdXJuIHNvdW5kIG9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzYiIG5hbWU9InJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5BdWRpbyBvbmx5IHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3NyIgbmFtZT0icm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlR1cm4gdGhpcyBGbGFnIG9uIGFuZCB0aGUgdXNlcnMgd2lsbCBoYXZlIG9ubHkgdGhlIEF1ZGlvLU9wdGlvbiBhbmQgbm8gVmlkZW8gaW4gYSBjb25mZXJlbmNlIHJvb20uIFRoaXMgY2FuIGJ5IGdvb2QgdG8gc2F2ZSBiYW5kd2lkdGguPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzgiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFsbG93IFJlbW90ZSBDb250cm9sIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzkiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkRlbnkgUmVtb3RlIENvbnRyb2wgKER1cmluZyBTY3JlZW4gU2hhcmluZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MCIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QXBwbHkgZm9yIHJpZ2h0IHRvIFJlbW90ZSBDb250cm9sIFNjcmVlbiAoRHVyaW5nIFNjcmVlbiBTaGFyaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgxIiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGFsbG93ZWQgdG8gUmVtb3RlIENvbnRyb2wgU2NyZWVuIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODIiIG5hbWU9ImFwcGx5IGZvciByZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gcmVtb3RlIGNvbnRyb2wgc2NyZWVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgzIiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Vc2VyIGlzIE1vZGVyYXRvciwgaGUgY2FuIGRvIGFueXRoaW5nISBbUmVtb3RlIERlc2t0b3AgQ29udHJvbF08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4NCIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QWxsb3cvRGVueSByaWdodCB0byBSZW1vdGUgQ29udHJvbCBTY3JlZW4gKER1cmluZyBTY3JlZW4gU2hhcmluZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4NSIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+MSkgWW91ciBQQyB0byByZW1vdGUgUEM6IFRvIGNvcHkgYW5kIHBhc3RlIHRleHQgZnJvbSB5b3VyIGNsaXBib2FyZCBpbnRvIHRoZSByZW1vdGUgY29udHJvbGxlZCBzY3JlZW4sIGNsaWNrIG9uIHRoZSBzY3JlZW4sIHRoZW4gcmlnaHQgY2xpY2sgaW4gdGhlIHRleHQgZmllbGQgYW5kIGNob29zZSAiSW5zZXJ0IiBmcm9tIHRoZSBjb250ZXh0IChyaWdodCBjbGljaykgbWVudS4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7MikgRnJvbSByZW1vdGUgUEMgdG8geW91ciBQQzogVG8gY29weSB0ZXh0IGZyb20gdGhlIHJlbW90ZSBQQyB0byB5b3VyIFBDJ3MgY2xpcGJvYXJkLCBoaWdobGlnaHQgdGhlIHRleHQgd2l0aCB0aGUgbW91c2Ugb24gdGhlIHJlbW90ZSBzY3JlZW4sIHRoZW4gcmlnaHQtY2xpY2sgb24gdGhlIHJlbW90ZSBzY3JlZW4gYW5kIGNob29zZSAmbHQ7aSZndDtDb3B5IGhpZ2hsaWdodGVkIHRleHQmbHQ7L2kmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODYiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNvcHkgYW5kIFBhc3RlIHRleHQgZnJvbSB5b3VyIFBDIHRvIHJlbW90ZSBQQyBhbmQgdmljZS12ZXJzYS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4NyIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+Q29weSBoaWdobGlnaHRlZCB0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODgiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkhvdyB0byBjb3B5IG4gcGFzdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4OSIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+UXVhbGl0eSBvZiB0aGUgU2NyZWVuU2hhcmU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTAiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPlZlcnkgaGlnaCBRdWFsaXR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTEiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPkhpZ2ggUXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkyIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5NZWRpdW0gUXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkzIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5Mb3cgUXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk0IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPmVuX1VTPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTUiIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+ZGVfREU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NiIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5LZXlib2FyZDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NyIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5DbG9zZSBXZWJpbmFyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk4IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPlRoZSBXZWJpbmFyIGlzIGFscmVhZHkgY2xvc2VkLCB5b3Ugd2lsbCBiZSByZWRpcmVjdGVkIHRvIHNvbWUgaW50ZXJlc3Rpbmcgb2ZmZXJpbmdzIGluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTkiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+Q2xvc2UgUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAwIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPkV4aXQgVVJMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDEiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+Um9vbSB0ZXJtaW5hdGlvbiBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAyIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPklmIHRoZSByb29tIGlzIGNsb3NlZCB1c2VycyB3aWxsIGJlIHJlZGlyZWN0ZWQgdG8gdGhlIGV4aXQgVVJMLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAzIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkxkYXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA1IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNiIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5Db25maWcgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA3IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkxkYXAgQ29uZmlnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDgiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA5IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkVuYWJsZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JbnNlcnRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTExIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkluc2VydGVkIGJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTIiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+VXBkYXRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEzIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPlVwZGF0ZWQgYnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5UaGUgY29uZmlnIGZpbGVzIGFyZSBpbiB0aGUgZm9sZGVyIHdlYmFwcHMvb3Blbm1lZXRpbmdzL2NvbmYuIFlvdSBuZWVkIHRvIG1hbnVhbGx5IHVwbG9hZCB0aGUgZmlsZXMgdG8gdGhpcyBmb2xkZXIuIENoYW5nZXMgdG8gdGhlIGNvbmZpZyBmaWxlIGFyZSBpbW1lZGlhdGVseSBvbmxpbmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTUiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+Q29uZmlnIGZpbGUgbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE2IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPklmIHlvdSBlbmFibGUgIkFkZCBEb21haW4gdG8gdXNlcm5hbWUiIHRoZSB2YWx1ZSBvZiB0aGUgZmllbGQgImRvbWFpbiIgaXMgYWRkZWQgdG8gZWFjaCBsb2dpbiB0aGF0IHRoZSB1c2VyIGVudGVycyBpbiB0aGUgbG9naW4gYm94LiBUaGlzIGlzIHVzZWZ1bCBpZiB0aGUgTG9naW4gaW4gdGhlIExkYXAgaXMgc3RvcmVkIGluY2x1ZGluZyB0aGUgZG9tYWluIG5hbWUuIEV4YW1wbGU6IFVzZXIgZW50ZXJzICJoYW5zIiBkb21haW4gaXMgc3BlY2lmaWVkIGFzICJsb2NhbGhvc3QuY29tIiwgbG9naW4gdGhhdCBpcyB2ZXJpZmllZCBhZ2FpbnN0IExkYXAgaXM6IGhhbnNAbG9jYWxob3N0LmNvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE3IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkFkZCBEb21haW4gdG8gdXNlcm5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExOCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5Eb21haW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExOSIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5JbnNlcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMCIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5Db3B5IGhpZ2hsaWdodGVkIHRleHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMSIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5SZW1vdGUgQ2xpcGJvYXJkIFRleHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMiIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5TaG93IHJlbW90ZSBDbGlwYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMyIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+RG8gbm90IHNob3cgYWdhaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNCIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+Q29weSB0ZXh0IGhlcmUgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjUiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPllvdSBuZWVkIHRoZSByaWdodCB0byByZW1vdGUgY29udHJvbCAob3IgdGhlIG1vZGVyYXRpb24pIHRvIGNvcHkgYW5kIHBhc3RlIHRleHQgdG8gb3IgZnJvbSB0aGUgcmVtb3RlIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNiIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+RWRpdCBkZWZhdWx0IHNldHRpbmdzIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI3IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5EbyBub3Qgc2hvdyBpbmZvIGJveCBpbiBSZW1vdGUgQ29udHJvbCBhYm91dCBDb3B5IGFuZCBQYXN0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI4IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPlNhdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyOSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5SZW1vdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMSIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkludml0ZSB1c2VyIHRvIGNvbmZlcmVuY2Ugcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMyIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+Q2hvb3NlIGEgY29uZmVyZW5jZSByb29tLiBUaGUgaW52aXRlZCB1c2VyIHdpbGwgZ2V0IGEgbWVzc2FnZSB3aXRoIHlvdXIgbmFtZSBhbmQgYSBsaW5rIHRvIHRoZSByb29tLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMzIiBuYW1lPSJjaGF0IHVzZXIiPgorICAgIDx2YWx1ZT5Db25uZWN0ZWQgc2luY2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzQiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5FbnRlciByb29tIGFmdGVyIHNlbmRpbmcgaW52aXRhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM1IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+SW52aXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzYiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5NZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzciIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGludml0ZSB5b3UgdG8gdGhlIGNvbmZlcmVuY2Ugcm9vbTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzOCIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkludml0ZSBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzkiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5TZW5kIEludml0YXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0MCIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPmRpZCAmbHQ7YiZndDtub3QmbHQ7L2ImZ3Q7IGFjY2VwdCB5b3VyIGludml0YXRpb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDEiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5BY2NlcHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0MiIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkRlbnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0MyIgbmFtZT0idXNlciBwcm9maWxlIj4KKyAgICA8dmFsdWU+VGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0NCIgbmFtZT0iYXBwb2ludG1lbnQgbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+RXZlbnQgRGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ1IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDYiIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPkRlc2NyaXB0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDciIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPkNyZWF0ZWQgYnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0OCIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlRpbWVab25lIE1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0OSIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPkNoZWNrICJUaW1lWm9uZSBNZXNzYWdlIiB0byBnaXZlIHVzZXJzIGEgbWVzc2FnZSBuZXh0IHRpbWUgdGhleSBsb2dpbiB0byB1cGRhdGUgdGhlaXIgcHJvZmlsZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MCIgbmFtZT0idGltZSB6b25lIHVwZGF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+UGxlYXNlIGNoZWNrIHRoZSB0aW1lIHpvbmUgaW4geW91ciB1c2VyIHByb2ZpbGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTEiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPk5ldyAkQVBQX05BTUUgY29uZmVyZW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MiIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGV0YWlsczombHQ7YnIvJmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUzIiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TdGFydDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NCIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RW5kOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU1IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DaGFuZ2VkICRBUFBfTkFNRSBjb25mZXJlbmNlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU2IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Pcmdhbml6ZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTciIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkNhbmNlbGVkICRBUFBfTkFNRSBjb25mZXJlbmNlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU4IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgY29uZmVyZW5jZSBSZW1pbmRlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1OSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkNvbW11bml0eSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYwIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2hvdyBjb250YWN0IGRhdGEgdG8gZXZlcnlib2R5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjEiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5BZGQgZmllbGRzIG9mIGludGVyZXN0IHRoYXQgeW91IG9mZmVyIG9yIHRoYXQgeW91IGFyZSBzZWFyY2hpbmcgdG8gZmluZCBpbnRlcmVzdGluZyBwYXJ0bmVycyBmb3IgYSBjb25mZXJlbmNlLiBDb21tYSBzZXBhcmF0ZSB0aGUgdGVybXMgKGZvciBleGFtcGxlOiBNZWRpY2FsIFNlcnZpY2UsIEhlYWx0aCBhc3N1cmFuY2UsIC4uLik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MiIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk15IG9mZmVyaW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYzIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+TXkgaW50ZXJlc3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjQiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjUiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5UaW1lem9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY2IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+RmllbGRzIG9mIGludGVyZXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjciIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Db250YWN0IGluZm9ybWF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjgiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TaG93IGNvbnRhY3QgZGF0YSB0byBjb250YWN0cyBvbmx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjkiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TaG93IGNvbnRhY3QgZGF0YSB0byBub2JvZHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk15IFByb2ZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkVkaXQgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MiIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlNlYXJjaCB1c2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTczIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+V2F0Y2ggeW91ciBwcm9maWxlIGxpa2Ugb3RoZXIgc2VlIHlvdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc0IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+RWRpdCB5b3VyIHNldHRpbmdzLCBhZGQgeW91ciBpbnRlcmVzdHMgdG8gYmUgZm91bmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlNlYXJjaCBmb3Igb3RoZXIgdXNlcnMgYW5kIGV4dGVuZCB5b3VyIG5ldHdvcms8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NiIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5TZWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NyIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5Vc2VyIG9mZmVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc4IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlVzZXIgbG9va3MgZm9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzkiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+RnJlZXRleHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODEiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+VGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MiIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5PZmZlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MyIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5TZWFyY2hzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODQiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+U2VhcmNocmVzdWx0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODUiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+QWN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg2IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkFkZCB0byBjb250YWN0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg3IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlNlbmQgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg4IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkNvbnRhY3RzIGFuZCBNZXNzYWdlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg5IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlBlbmRpbmcgY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkFjY2VwdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkxIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+RGVueTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkyIiBuYW1lPSJ1c2VyIGNvbnRhY3QgcmVxdWVzdCI+CisgICAgPHZhbHVlPkhpLDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkzIiBuYW1lPSJ1c2VyIGNvbnRhY3QgcmVxdWVzdCI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gYWRkIHlvdSBhcyBjb250YWN0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk0IiBuYW1lPSJ1c2VyIGNvbnRhY3QgcmVxdWVzdCI+CisgICAgPHZhbHVlPkNoZWNrIHlvdXIgY29udGFjdCByZXF1ZXN0cyBpbiAkQVBQX05BTUUgb3IgY2xpY2sgb24gdGhvc2UgbGlua3MgdG8gYWNjZXB0IG9yIGRlbnkgdGhlIHJlcXVlc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NSIgbmFtZT0iYWRkIHVzZXIgY29udGFjdCI+CisgICAgPHZhbHVlPlRoaXMgdXNlciBpcyBhbHJlYWR5IGluIHlvdXIgY29udGFjdCBsaXN0IG9yIGhhcyByZWNlaXZlZCBhbiBpbnZpdGF0aW9uIHRvIHlvdXIgY29udGFjdCBsaXN0IHRoYXQgaXMgbm90IGFuc3dlcmVkIHlldC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NiIgbmFtZT0idXNlciBjb250YWN0IG1haWwiPgorICAgIDx2YWx1ZT5Zb3VyIGNvbnRhY3QgbGlzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+RWRpdCB5b3VyIGNvbnRhY3QgYW5kIG1lc3NhZ2VzLCZsdDtici8mZ3Q7IG1hbmFnZSB5b3VyIHBlbmRpbmcgY29udGFjdHMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTgiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5jb25maXJtZWQgeW91IGFzIGNvbnRhY3QhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTkiIG5hbWU9ImNoYXQgaW5mbyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDAiIG5hbWU9ImNoYXQgbG9nIGljb24iPgorICAgIDx2YWx1ZT5TaG93IC8gQ29weSBjaGF0IGxvZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAxIiBuYW1lPSJjaGF0IGxvZyB3aW5kb3ciPgorICAgIDx2YWx1ZT5DaGF0IExvZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Gcm9tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlN1YmplY3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWVzc2FnZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TmV3IE1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwOCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2xpY2sgdG8gd3JpdGUgYSBuZXcgbWVzc2FnZSB0byBhbnkgb2YgeW91ciBjb250YWN0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Xcml0ZSBuZXcgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjEwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Ubzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3ViamVjdDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMiIgbmFtZT0id2hpdGVib2FyZCBmdWxsLWZpdCI+CisgICAgPHZhbHVlPkVuYWJsZSBmdWxsIGZpdCBhbmQgdGhlIHdoaXRlYm9hcmQgd2lsbCB6b29tIHRoZSB3aG9sZSB3aGl0ZWJvYXJkIHNvIHRoYXQgYWxsJmx0O2JyLyZndDtkb2N1bWVudHMgYXJlIHZpc2libGUgYWNjb3JkaW5nIHRvIGVhY2ggcGFydGljaXBhbnRzIHNjcmVlbiByZXNvbHV0aW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjEzIiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT5LaWNrIHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNCIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBraWNrIHlvdXJzZWxmIG91dCBvZiB0aGUgY29uZmVyZW5jZSByb29tISBJZiB5b3Ugd2FudCB0byBsZWF2ZSBpdCBjbG9zZSB0aGUgYnJvd3NlciBvciB1c2UgdGhlIGV4aXQgYnV0dG9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE1IiBuYW1lPSJraWNrLXVzZXIiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGlzY29ubmVjdCB0aGlzIHVzZXIgZnJvbSB0aGlzIGNvbmZlcmVuY2Ugcm9vbT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNiIgbmFtZT0ia2ljay11c2VyIj4KKyAgICA8dmFsdWU+Q29uZmlybSBhY3Rpb24gLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTciIG5hbWU9ImtpY2stdXNlciI+CisgICAgPHZhbHVlPllvdSBjYW5ub3Qga2ljayBhIFN1cGVyLU1vZGVyYXRvciBvdXQgb2YgYSByb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Cb29rIGNvbmZlcmVuY2Ugcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TdGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5FbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIGFuIG9wdGlvbmFsIHJlcXVlc3QgZm9yIG1lZXRpbmcgdG8gdGhlIG1lc3NhZ2UgYW5kIGNyZWF0ZSBhIGNvbmZlcmVuY2Ugcm9vbS4gVGhlIEV2ZW50IGlzIHRoZW4gY29waWVkIGluIHRoZSBjYWxlbmRhciBvZiBldmVyeSBwYXJ0aWNpcGFudC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+SW5ib3g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UcmFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGlzIGlzIHlvdSEgWW91IGNhbm5vdCBhZGQgeW91cnNlbGYgYXMgeW91ciBvd24gY29udGFjdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoZSB1c2VyIGlzIGFscmVhZHkgZGVuaWVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VGhlIHVzZXIgaXMgYWxyZWFkeSBhcHByb3ZlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyOCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoaXMgdXNlciBjb250YWN0IGhhc2ggaXMgaW52YWxpZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyOSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlVzZXIgYWRkZWQgdG8gY29udGFjdCBsaXN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMwIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VXNlciBkZW5pZWQgYXMgY29udGFjdCBhbmQgcmVtb3ZlZCBmcm9tIHBlbmRpbmcgY29udGFjdCBsaXN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMxIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgbm8gc3VjaCBjb250YWN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMyIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+V291bGQgeW91IHJlYWxseSBsaWtlIHRvIHJlbW92ZSB0aGF0IGNvbnRhY3Q/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzMiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Db25maXJtIGNvbnRhY3QgcmVtb3ZhbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM0IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+RGVsZXRlIGNvbnRhY3QgZnJvbSBsaXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzUiIG5hbWU9InVzZXIgcHJvZmlsZSI+CisgICAgPHZhbHVlPlVzZXIgUHJvZmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM2IiBuYW1lPSJ1c2VyIHByb2ZpbGUiPgorICAgIDx2YWx1ZT5TaG93IHVzZXIgcHJvZmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM3IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5NZXNzYWdlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzOSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VsZWN0IGFsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWxlY3Qgbm9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWxlY3QgdW5yZWFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbGVjdCByZWFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1vdmUgdG8gZm9sZGVyIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgbmV3IGZvbGRlciAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGVsZXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDYiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRlbGV0ZWQgbWFpbHMgYXJlIHN0aWxsIGluIHlvdXIgdHJhc2ggZm9sZGVyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ3IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5NYXJrIHVucmVhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5NYXJrIHJlYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0OSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QW5zd2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTAiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFuc3dlciBldmVyeWJvZHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Rm9yd2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BY3Rpb25zIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUzIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+U2VuZCBwcml2YXRlIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Tm90aGluZyBzZWxlY3RlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TW92ZSB0byBJbmJveDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU2IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EZWxldGUgKGZpbmFsKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU3IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGlzIGFjdGlvbiBjYW5ub3QgYmUgdW5kb25lITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgZm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZCBmb2xkZXJzIGFuZCBvcmdhbml6ZSB5b3VyIG1lc3NhZ2VzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgZm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+RGVsZXRlIGZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBkZWxldGUgdGhpcyBmb2xkZXIsIHRoZXJlIGFyZSBzdGlsbCBtZXNzYWdlcyBpbnNpZGUhIERlbGV0ZSBmaXJzdCB0aGUgbWVzc2FnZXMgb3IgbW92ZSB0aGVtIHRvIGFub3RoZXIgZm9sZGVyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+RWRpdCBuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSBmb2xkZXIiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgZm9sZGVyPyBUaGVyZSBpcyBubyB3YXkgdG8gdW5kbyB0aGF0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY2IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+WW91ciByZXF1ZXN0IHdhcyBzZW5kIHRvIHRoZSB1c2VyLiBUaGUgdXNlciB3aWxsIHJlY2VpdmUgYSBub3RpZmljYXRpb24gdG8gYWNjZXB0IG9yIGRlbnkgeW91ciByZXF1ZXN0LiBPbmx5IGFjY2VwdGVkIHJlcXVlc3RzIGFyZSBpbiB5b3VyIGNvbnRhY3QgbGlzdCBvZiBjb3Vyc2UhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjciIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5NZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjgiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+VGhlIHVzZXIgZG9lcyBub3Qgc2hhcmUgaGlzIHBlcnNvbmFsIGNvbnRhY3QgZGF0YS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2OSIgbmFtZT0idXNlciB2aWV3IHByb2ZpbGUiPgorICAgIDx2YWx1ZT5UaGUgdXNlciBkb2VzIHNoYXJlIGhpcyBwZXJzb25hbCBjb250YWN0IGRhdGEgb25seSB0byBjb250YWN0cy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3MCIgbmFtZT0idXNlciB2aWV3IHByb2ZpbGUiPgorICAgIDx2YWx1ZT5BZGRyZXNzICZhbXA7IFBob25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzEiIG5hbWU9ImVycm9yIGNvZGUiPgorICAgIDx2YWx1ZT5Zb3UgaW52aXRhdGlvbiBjb2RlIGlzIG5vIHZhbGlkLCB0aGUgY29kZSBpcyBvbmx5IHZhbGlkIGR1cmluZyB0aGlzIHNwZWNpZmljIGRhdGUgYW5kIHRpbWU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzIiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5UaGlzIGV2ZW50IGlzIGNvbm5lY3RlZCB0byBzZXZlcmFsIGNhbGVuZGFycyBvZiBvdGhlciB1c2Vycy4gWW91ciBjaGFuZ2Ugd2lsbCBhbHNvIHVwZGF0ZSB0aGVpciBjYWxlbmRhci4gV291bGQgeW91IHJlYWxseSBsaWtlIHRvIHVwZGF0ZSB0aGUgZXZlbnQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzMiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Db25maXJtIHVwZGF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc0IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+QWxsb3cgY29udGFjdCB0byBzZWUgbXkgY2FsZW5kYXIgKHZpZXcgb25seSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkRvIG5vdCBzaGFyZSBjYWxlbmRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc2IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+Q2FsZW5kYXIgb2YgY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPllvdXIgY29udGFjdHMgbmVlZCB0byBhcHByb3ZlIHlvdSBmaXJzdCB0byBiZSBhYmxlIHRvIHNlZSB0aGVpciBjYWxlbmRhci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3OCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPllvdSBjYW5ub3Qgc3RvcmUgb3IgZGVsZXRlIGV2ZW50cyBmcm9tIG90aGVyIGNhbGVuZGFycyB0aGVuIHlvdXIgb3duITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc5IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+U2hvdyBteSBvd24gY2FsZW5kYXIgYWdhaW4hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODAiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5UaGlzIGV2ZW50IGlzIGNvbm5lY3RlZCB0byBzZXZlcmFsIGNhbGVuZGFycyBvZiBvdGhlciB1c2Vycy4gWW91ciBhY3Rpb24gd2lsbCBhbHNvIGRlbGV0ZSB0aGUgZXZlbnQgZnJvbSB0aGVpciBjYWxlbmRhci4gV291bGQgeW91IHJlYWxseSBsaWtlIHRvIGRlbGV0ZSB0aGUgZXZlbnQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODEiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Db25maXJtIGFjdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgyIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RW50ZXIgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgzIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QWNjZXNzIHRoZSBjb25mZXJlbmNlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgYSBjb25mZXJlbmNlIHJvb20gYW5kIGV2ZW50IGJvb2tlZCB3aXRoIHRoaXMgcHJpdmF0ZSBtZXNzYWdlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg1IiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgdG8gc3RvcmUgdGhlIGV2ZW50IGZpcnN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg2IiBuYW1lPSJhY2Nlc3Mgcm9vbXMgZXJyb3IiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBzdWNoIHJvb20gYXZhaWxhYmxlLiBUaGUgZXZlbnQgaW4gdGhlIGNhbGVuZGFyIGFuZCBjb25uZWN0ZWQgcm9vbSBpcyBhbHJlYWR5IGRlbGV0ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODciIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPkNob29zZSB5b3VyIG5pY2tuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODgiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPkZpcnN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg5IiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5MYXN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkwIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5FbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkxIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5PazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkyIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5NaW5pbXVtIGxlbmd0aCA0IGNoYXJzISBGb3IgYm90aCwgZmlyc3RuYW1lIGFuZCBsYXN0bmFtZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MyIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGEgdmFsaWQgZW1haWwhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTQiIG5hbWU9ImF1dGggZnJvbSI+CisgICAgPHZhbHVlPkZhY2Vib29rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTUiIG5hbWU9ImF1dGggZm9ybSI+CisgICAgPHZhbHVlPkxvZ2luIHdpdGggeW91ciBGYWNlYm9vayBhY2NvdW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTYiIG5hbWU9InZpZXcgcHJvZmlsZSI+CisgICAgPHZhbHVlPk1lbWJlciBzaW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk3IiBuYW1lPSJkaXJlY3QgbG9naW4gbWVzc2FnZSI+CisgICAgPHZhbHVlPllvdSd2ZSBsb2dnZWQgd2l0aCB5b3VyIEZhY2Vib29rIGFjY291bnQuIFlvdSBzaG91bGQgdXBkYXRlIHlvdXIgcHJvZmlsZSB3aXRoIHRoZSBjb3JyZWN0IGVtYWlsLiBPdGhlcndpc2UgeW91IHdpbGwgbm90IHJlY2VpdmUgaW52aXRhdGlvbnMgYW5kIHByaXZhdGUgbWVzc2FnZXMgZnJvbSBvdGhlciB1c2Vycy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5OCIgbmFtZT0iZGlyZWN0IGxvZ2luIG1lc3NhZ2UgaGVhZGVyIj4KKyAgICA8dmFsdWU+TWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk5IiBuYW1lPSJkaXJlY3QgbG9naW4gbWVzc2FnZSBjaGVja2JveCBjb250cm9sIj4KKyAgICA8dmFsdWU+RG8gbm90IHNob3cgdXBkYXRlIHByb2ZpbGUgbWVzc2FnZSBhZ2FpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAwIiBuYW1lPSJwcm9maWxlIHNldHRpbmdzIGJ1dHRvbiI+CisgICAgPHZhbHVlPm1vcmUgZGlzcGxheSBvcHRpb25zIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5OZXcgcHJpdmF0ZSBtZXNzYWdlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DbGljayBoZXJlIHRvIHZpc2l0IHlvdXIgcHJvZmlsZSB0byBzZWUgdGhlIGZ1bGwgbWVzc2FnZSAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+UmVwbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwNCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+Um9vbXMgYW5kIGNoYXRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDUiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPk15IHJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDYiIG5hbWU9Im15IHJvb21zIj4KKyAgICA8dmFsdWU+TXkgY29uZmVyZW5jZSByb29tIChmb3IgMS0xNiB1c2Vycyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwNyIgbmFtZT0ibXkgcm9vbXMiPgorICAgIDx2YWx1ZT5NeSB3ZWJpbmFyIHJvb20gKGZvciAxLTEyMCB1c2Vycyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwOCIgbmFtZT0icm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPk93bmVyIElkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDkiIG5hbWU9ImxvZ2luIGVycm9yIj4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGEgcGFzc3dvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMCIgbmFtZT0ibG9naW4gZXJyb3IiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCBhbiBhY2NvdW50IHdpdGggVXNlci1MZXZlbCBVc2VyLCBNb2RlcmF0b3Igb3IgQWRtaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMSIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPldlYi1TZXJ2aWNlIChvbmx5IGFjY2VzcyB2aWEgU09BUCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMiIgbmFtZT0idXBsb2FkIGZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5EbyBkaXJlY3RseSBsb2FkIHRvIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMyIgbmFtZT0id2hpdGVib2FyZCBjbG9zZSBjb25maXJtYXRpb24iPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gcmVtb3ZlIHRoaXMgd2hpdGVib2FyZD8gVGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxNCIgbmFtZT0id2hpdGVib2FyZCBsb2FkIFdNTCI+CisgICAgPHZhbHVlPkxvYWQgdG8gd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE1IiBuYW1lPSJyZWNvcmRpbmcgZmxhZyI+CisgICAgPHZhbHVlPkRvIG5vdCBmb3JnZXQgc3RhcnQgcmVjb3JkaW5nISBPbmUgdXNlciBwZXIgcm9vbSBhbHdheXMgbmVlZHMgdG8gc3RhcnQgaXQgdG8gaGF2ZSB0aGUgcmVjb3JkaW5nIGFmdGVyd2FyZHMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTYiIG5hbWU9InJlY29yZGluZyBmbGFnIj4KKyAgICA8dmFsdWU+U3RhcnQgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTciIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+QXJyb3c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxOCIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT5DaXJjbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxOSIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT5MaW5lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjAiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+U3F1YXJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjEiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+VHJpYW5nbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyMiIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlRleHQvTm90ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIzIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+Q2xpcGFydHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkRyYXcgRnJlZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI1IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+U2VsZWN0L01vdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNiIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkRyYXcgU2hhcGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNyIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkN1dC9Nb3ZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjgiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5ab29tIEluL091dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI5IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+UHJpbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlVuZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMSIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlRyYXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzIiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5BZGQgR3JpZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMzIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+U2hhcmUgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM0IiBuYW1lPSJpY29uIHN1Ym1lbnUiPgorICAgIDx2YWx1ZT5TZWxlY3QgU2hhcGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNSIgbmFtZT0iaWNvbiBzdWJtZW51Ij4KKyAgICA8dmFsdWU+U2VsZWN0IENsaXBhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNiIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkNvcHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNyIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkN1dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM4IiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+UGFzdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzOSIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkRlbGV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQwIiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGUgY29tcGxldGUgY29udGVudCBvbiB0aGUgd2hpdGVib2FyZD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MSIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkxvYWQgZGlyZWN0bHkgdG8gd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQyIiBuYW1lPSJhdHRlbmRlZXMiPgorICAgIDx2YWx1ZT5BdHRlbmRlZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MyIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+QXR0ZW5kZWUgTWFuYWdlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ0IiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5QcmVzZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDUiIG5hbWU9ImF0ZW5kZWUgbWFuYWdlciI+CisgICAgPHZhbHVlPlJlbW90ZSBDb250cm9sbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ2IiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5FamVjdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ3IiBuYW1lPSJjaGF0Ij4KKyAgICA8dmFsdWU+Q2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ4IiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5JbnZpdGUgQXR0ZW5kZWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDkiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPkJ5IEVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTAiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPlVzZXIgaXMgbW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTEiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPlVzZXIgaGFzIHdlYmNhbSBzd2l0Y2hlZCBvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUyIiBuYW1lPSJmaWxsX29wdGlvbiI+CisgICAgPHZhbHVlPkRlYWN0aXZhdGUgc2hhcGUgZmlsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUzIiBuYW1lPSJmaWxsX29wdGlvbiI+CisgICAgPHZhbHVlPkFjdGl2YXRlIHNoYXBlIGZpbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlNuYXAgdG8gR3JpZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU1IiBuYW1lPSJhbGxvd19yZWNvcmRpbmciPgorICAgIDx2YWx1ZT5BbGxvdyByZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NiIgbmFtZT0id2FpdF9mb3JfcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+V2FpdCBmb3IgcmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTciIG5hbWU9ImhpZGVfdG9wX2JhciI+CisgICAgPHZhbHVlPkhpZGUgdG9wYmFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTgiIG5hbWU9ImZpbGVFeHBsb3JlciI+CisgICAgPHZhbHVlPlBsYXkgdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1OSIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhlIGNvbnRlbnQgb24gdGhlIGN1cnJlbnQgc2xpZGU/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjAiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPkFjY2VwdCBhbmQgZ3JhbnQgdXNlciByaWdodDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYxIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT5EZW55PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjIiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPkk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2MyIgbmFtZT0iYWN0aXZpdHlfd2luZG93Ij4KKyAgICA8dmFsdWU+QWN0aXZpdGllcyBhbmQgYWN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY0IiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+UmVtb3ZlIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NSIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPllvdSBuZWVkIHRoZSBtb2RlcmF0aW9uIG9yIHRoZSByaWdodCB0byBkcmF3IG9uIHRoZSB3aGl0ZWJvYXJkIHRvIHJlbW92ZSB3aGl0ZWJvYXJkcyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NiIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPk5vdCBhbGxvd2VkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjciIG5hbWU9InVzZXJfbGVmdF9hY3RfbXNnIj4KKyAgICA8dmFsdWU+aGFzIGxlZnQgdGhlIHJvb20uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjgiIG5hbWU9ImNsaXBhcnQgaWNvbnMiPgorICAgIDx2YWx1ZT5NYXRoIGljb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjkiIG5hbWU9ImNsaXBhcnQgaWNvbnMiPgorICAgIDx2YWx1ZT5ObyBjYXRlZ29yeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzcwIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5Db2xvci1TdHlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzcxIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5RdWFsaXR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzIiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPkRvbWFpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzczIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT52aXNpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc0IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5yZWRvcmFuZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+bWVkaXVtc2VhZ3JlZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NiIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+c3RlZWxibHVlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzciIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPmxpZ2h0c3RlZWxibHVlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzgiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPmdvbGRlbnJlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc5IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5zaWx2ZXJncmF5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODAiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnVzZXJkZWZpbmVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODEiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPmJlc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4MiIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+dXBsb2FkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODMiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPm1lZGl1bTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg0IiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODUiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODYiIG5hbWU9ImdpdmUgZXhjbHVzaXZlIGF1ZGlvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIG9mIG90aGVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg3IiBuYW1lPSJtdXRlIHNlbGYgbWVzc2FnZSI+CisgICAgPHZhbHVlPllvdSBhcmUgZ2xvYmFsbHkgbXV0ZWQgYnkgdGhlIG1vZGVyYXRvci4gWW91IGNhbm5vdCB1bm11dGUgeW91cnNlbGYhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODgiIG5hbWU9Im11dGUgc2VsZiBjb25maXJtIG1lc3NhZ2UgdGl0bGUiPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgZ2xvYmFsbHk/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODkiIG5hbWU9Im11dGUgc2VsZiBjb25maXJtIG1lc3NhZ2UgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBtdXRlIHlvdXJzZWxmIGdsb2JhbGx5PyBObyBvdGhlciB1c2VyIHdpbGwgaGVhciB5b3UgYW55bW9yZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5MCIgbmFtZT0ibXV0ZSBvdGhlcnMgY29uZmlybSBtZXNzYWdlIHRpdGxlIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGxvY2FsbHk/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTEiIG5hbWU9Im11dGUgb3RoZXJzIGNvbmZpcm0gbWVzc2FnZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBtdXRlIHRoaXMgbWljcm9waG9uZT8gWW91IGNhbiBvbmx5IG11dGUgaXQgbG9jYWxseSBvbiB5b3VyIHNjcmVlbi4gSXQgaGFzIG5vIGVmZmVjdCB0byBob3cgb3RoZXIgdXNlcnMgaGVhciB0aGlzIHVzZXIuIE9ubHkgbW9kZXJhdG9ycyBjYW4gdHVybiBpdCBvZmYgZ2xvYmFsbHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTIiIG5hbWU9Im11dGUgb3RoZXJzIGNvbmZpcm0gbWVzc2FnZSB0aXRsZSI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBvZmYgZ2xvYmFsbHk/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTMiIG5hbWU9Im11dGUgb3RoZXJzIG1vZGVyYXRvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIG11dGUgdGhpcyB1c2VyIGdsb2JhbGx5PyBObyBvdGhlciB1c2VyIHdpbGwgaGVhciBoaW0gYW55bW9yZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5NCIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5Zb3VyIHNvdW5kIGlzIG9uLiBDbGljayBoZXJlIHRvIHNlbmQgbW9kZXJhdG9yIG1lc3NhZ2UgdG8gbXV0ZSB5b3VyIG1pY3JvcGhvbmUgZ2xvYmFsbHkgKGluIHRoZSBjb21wbGV0ZSBjb25mZXJlbmNlIHJvb20pIG9mZiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5NSIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5Zb3VyIHNvdW5kIGlzIG9mZi4gQ2xpY2sgaGVyZSB0byBzZW5kIG1vZGVyYXRvciBtZXNzYWdlIHRvIHVubXV0ZSB5b3VyIG1pY3JvcGhvbmUgZ2xvYmFsbHkgKGluIHRoZSBjb21wbGV0ZSBjb25mZXJlbmNlIHJvb20pIG9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk2IiBuYW1lPSJtdXRlIGFwcGx5IHNlbGYgb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdGhhdCB0aGUgbW9kZXJhdG9yIG11dGVzIG15IG1pY3JvcGhvbmUgZ2xvYmFsbHkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTciIG5hbWU9Im11dGUgYXBwbHkgc2VsZiBvZmYgbWVzc2FnZSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdGhhdCB0aGUgbW9kZXJhdG9yIHVubXV0ZXMgbXkgbWljcm9waG9uZSBnbG9iYWxseS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5OCIgbmFtZT0ibXV0ZSBhcHBseSBvZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+d2FudCB0aGF0IHRoZSBtb2RlcmF0b3IgdW5tdXRlcyBoaXMvaGVyIG1pY3JvcGhvbmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTkiIG5hbWU9Im11dGUgYXBwbHkgb2YgbWVzc2FnZSI+CisgICAgPHZhbHVlPndhbnQgdGhhdCB0aGUgbW9kZXJhdG9yIG11dGVzIGhpcy9oZXIgbWljcm9waG9uZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMCIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5Vbm11dGUgbWljcm9waG9uZS4gQ2xpY2sgaGVyZSB0byBtdXRlIGhpcy9oZXIgbWljcm9waG9uZSBnbG9iYWxseSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMSIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUuIENsaWNrIGhlcmUgdG8gdW5tdXRlIGhpcy9oZXIgbWljcm9waG9uZSBnbG9iYWxseSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMiIgbmFtZT0ibXV0ZSBzZWxmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGlzIHVzZXIgaXMgZ2xvYmFsbHkgbXV0ZWQgYnkgdGhlIG1vZGVyYXRvci4gWW91IGNhbm5vdCB1bm11dGUgaGltITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDAzIiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TXV0ZSB5b3VyIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwNCIgbmFtZT0idW5tdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+VW5tdXRlIHlvdXIgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA1IiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDYiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSBtaWNyb3Bob25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDciIG5hbWU9Im11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwOCIgbmFtZT0idW5tdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+VW5tdXRlIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwOSIgbmFtZT0ibXV0ZSBtb2RlcmF0b3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPk9ubHkgbW9kZXJhdG9ycyBjYW4gbXV0ZSBvciB1bm11dGUgYW4gdXNlciBnbG9iYWxseSEgVG8gbXV0ZSB5b3VyIG93biBtaWNyb3Bob25lOiBQbGVhc2UgdXNlIHRoZSBtaWNyb3Bob25lIGljb24gaW4geW91ciB2aWRlbyBwb2QhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTAiIG5hbWU9InBvbGxfbmFtZSI+CisgICAgPHZhbHVlPlBvbGwgTmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDExIiBuYW1lPSJwb2xsX25hbWUiPgorICAgIDx2YWx1ZT5Zb3U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMiIgbmFtZT0iYXJjaGl2ZWRfcG9sbHMiPgorICAgIDx2YWx1ZT5BcmNoaWV2ZWQgUG9sbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMyIgbmFtZT0iYWN0aXZlX3BvbGwiPgorICAgIDx2YWx1ZT5hY3RpdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNCIgbmFtZT0iY2hhcnRfc2ltcGxlIj4KKyAgICA8dmFsdWU+U2ltcGxlIENoYXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTUiIG5hbWU9ImNoYXJ0X3BpZSI+CisgICAgPHZhbHVlPlBpZSBDaGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE2IiBuYW1lPSJzaWduX3VwX3ZhbGlkYXRpb24iPgorICAgIDx2YWx1ZT5QbGVhc2UgZW50ZXIgZW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNyIgbmFtZT0iY2hhdF9ub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5OZXcgbWVzc2FnZShzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE4IiBuYW1lPSJwb2xsX2Nsb3NlIj4KKyAgICA8dmFsdWU+Q2xvc2UgUG9sbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE5IiBuYW1lPSJwb2xsX2Nsb3NlX2NvbmZpcm0iPgorICAgIDx2YWx1ZT5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gY2xvc2UgdGhpcyBQb2xsPyBObyBvbmUgd2lsbCBiZSBhYmxlIHRvIHZvdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMCIgbmFtZT0icG9sbF9kZWxldGUiPgorICAgIDx2YWx1ZT5EZWxldGUgUG9sbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIxIiBuYW1lPSJwb2xsX2RlbGV0ZV9jb25maXJtIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIFBvbGw/IFRoZSByZXN1bHRzIHdpbGwgYmUgZGVsZXRlZCBhcyB3ZWxsLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIyIiBuYW1lPSJsYW5ndWFnZV9jb2RlIj4KKyAgICA8dmFsdWU+TGFuZ3VhZ2UgSVNPIENvZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMyIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX3Blcm1pc3Npb24iPgorICAgIDx2YWx1ZT5BbGxvdy9EZW55IHJpZ2h0IHRvIGdpdmUgZXhjbHVzaXZlIGF1ZGlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI0IiBuYW1lPSJhbGxvd19leGNsdXNpdmVfYXVkaW9fcGVybWlzc2lvbiI+CisgICAgPHZhbHVlPkFsbG93IHVzZXIgdG8gZ2l2ZSBleGNsdXNpdmUgYXVkaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNSIgbmFtZT0iZGVueV9leGNsdXNpdmVfYXVkaW9fcGVybWlzc2lvbiI+CisgICAgPHZhbHVlPkRlbnkgdXNlciB0byBnaXZlIGV4Y2x1c2l2ZSBhdWRpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI2IiBuYW1lPSJleGNsX2F1ZGlvIGFwcGx5IHNlbGYgb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gZ2V0IGEgcGVybWlzc2lvbiBmb3IgZXhjbHVzaXZlIGF1ZGlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI3IiBuYW1lPSJleGNsX2F1ZGlvIGFwcGx5IG9mIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53YW50IHRoYXQgdGhlIG1vZGVyYXRvciBnaXZlcyBtZSBhIHBlcm1pc3Npb24gZm9yIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyOCIgbmFtZT0iZXhjbF9hdWRpbyBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5HaXZlIGEgcGVybWlzc2lvbiBmb3IgZXhjbHVzaXZlIGF1ZGlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI5IiBuYW1lPSJjYW1fcmVzb2x1dGlvbiI+CisgICAgPHZhbHVlPkNhbSByZXNvbHV0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzAiIG5hbWU9ImNhbV9yZXNvbHV0aW9uX2luZm8iPgorICAgIDx2YWx1ZT5DaGFuZ2luZyB0aGUgcmVzb2x1dGlvbiBhZmZlY3RzIGJhbmR3aWR0aCwgYmlnZ2VyIHBpY3R1cmUgbmVlZHMgbW9yZSBiYW5kd2l0aCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzMSIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2Vycm9yIj4KKyAgICA8dmFsdWU+WW91IGRvbid0IGhhdmUgdGhlIHJpZ2h0IHRvIGdpdmUgeW91cnNlbGYgb3Igb3RoZXJzIGV4Y2x1c2l2ZSBhdWRpby4gWW91IG5lZWQgdG8gYXBwbHkgZm9yIHRoZSByaWdodCBmcm9tIHRoZSBtb2RlcmF0b3Igb3IgYXNrIHRoZSBtb2RlcmF0b3IgdG8gZ2l2ZSB5b3UgZXhjbHVzaXZlIGF1ZGlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMyIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fYXNrIj4KKyAgICA8dmFsdWU+SSB3b3VsZCBsaWtlIHRvIGdldCB0aGUgcmlnaHQgZm9yIGV4Y2x1c2l2ZSBhdWRpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMzIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fYWN0aW9uIj4KKyAgICA8dmFsdWU+R2l2ZSBleGNsdXNpdmUgYXVkaW8gdG8gbWUgKGFsdGVybmF0aXZlbHkgY2xpY2sgb24geW91ciB2aWRlbyBwb2Qgb3IgcHJlc3MgRjEyKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM0IiBuYW1lPSJtaWNybyBpcyBvbiI+CisgICAgPHZhbHVlPk1pY3JvcGhvbmUgaXMgb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzUiIG5hbWU9Im1pY3JvIGlzIG9mZiI+CisgICAgPHZhbHVlPk1pY3JvcGhvbmUgaXMgbXV0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNiIgbmFtZT0iaGlkZV9jaGF0Ij4KKyAgICA8dmFsdWU+SGlkZSBjaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzciIG5hbWU9ImhpZGVfYWN0aXZpdGllc19hbmRfYWN0aW9ucyI+CisgICAgPHZhbHVlPkhpZGUgYWN0aXZpdGllczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM4IiBuYW1lPSJoaWRlX2ZpbGVzX2V4cGxvcmVyIj4KKyAgICA8dmFsdWU+SGlkZSBmaWxlcyBleHBsb3JlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM5IiBuYW1lPSJoaWRlX2FjdGlvbnNfbWVudSI+CisgICAgPHZhbHVlPkhpZGUgYWN0aW9ucyBtZW51PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDAiIG5hbWU9ImhpZGVfc2NyZWVuX3NoYXJpbmciPgorICAgIDx2YWx1ZT5IaWRlIHNjcmVlbiBzaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDEiIG5hbWU9ImhpZGVfd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkhpZGUgd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQyIiBuYW1lPSJzaG93IG1pY3JvcGhvbmUgc3RhdHVzIj4KKyAgICA8dmFsdWU+U2hvdyBtaWNybyBzdGF0dXMgaW4gdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MyIgbmFtZT0ibGF5b3V0X29wdGlvbnMiPgorICAgIDx2YWx1ZT5MYXlvdXQgb3B0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ0IiBuYW1lPSJjYWxlbmRhciBuZXcgYnV0dG9uIj4KKyAgICA8dmFsdWU+TmV3IEV2ZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDUiIG5hbWU9ImNhbGVuZGFyIHBhc3N3b3JkIGluZm8gdGV4dCI+CisgICAgPHZhbHVlPlBhc3N3b3JkIHByb3RlY3RlZCBhcmUgdGhlIGxpbmtzIHRvIHRoZSBjb25mZXJlbmNlIHRoYXQgYXJlIHNlbmQgdG8gdGhlIHBhcnRpY2lwZW50cyB3aGVuIHlvdSBzYXZlIHRoZSBjYWxlbmRhciBldmVudCwgbm90IHRoZSByb29tISBUaGF0IG1lYW5zIGlmIHlvdSBzYXZlIHRoZSBldmVudCBtdWx0aXBsZSB0aW1lcyBidXQgd2l0aCBkaWZmZXJlbnQgcGFzc3dvcmRzIGV2ZXJ5IHBhcnRpY2lwZW50IHJlY2VpdmVzIGEgbmV3IGxpbmsgdGhhdCBoYXMgYSBkaWZmZXJlbnQgcGFzc3dvcmQuIEJ1dCBvbGQgbGlua3Mgc3RpbGwgd29yayBvbmNlIHNlbmQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDYiIG5hbWU9ImNhbGVuZGFyIGVkaXQgYnV0dG9uIj4KKyAgICA8dmFsdWU+RWRpdCBkZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDciIG5hbWU9InNpcCBzaG93IGRpYWxlciI+CisgICAgPHZhbHVlPlNob3cgc2lwIGRpYWxlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ4IiBuYW1lPSJzaXAgY2FsbCI+CisgICAgPHZhbHVlPkNhbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0OSIgbmFtZT0iY2FsZW5kYXIgY29udGFjdCBsaXN0Ij4KKyAgICA8dmFsdWU+U2hvdyBjYWxlbmRhciBldmVudHMgb2YgY29udGFjdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUwIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5Zb3VyIGhvbWUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTEiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPlBsYW4geW91ciBtZWV0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUyIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5XYXRjaCByZWNvcmRpbmcgYW5kIGludGVydmlld3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MyIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+Q2hvb3NlIGFuZCBzdGFydCBhIHdlYi1jb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTQiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSB1c2VycyBhbmQgcmlnaHRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTUiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBjb25uZWN0aW9ucyBhbmQga2ljayB1c2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU2IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgdXNlcmdyb3VwczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU3IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgY29uZmVyZW5jZSByb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU4IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2Ugc3lzdGVtIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTkiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBsYWJlbHMgYW5kIHdvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIExEQVAgYW5kIEFEUyBjb25maWd1cmF0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYxIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5FeHBvcnQvSW1wb3J0IFN5c3RlbSBCYWNrdXBzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjIiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCBtb2RlcmF0aW9uIG9yIHRoZSByaWdodCB0byBkcmF3IG9uIHdoaXRlYm9hcmQgdG8gdXBsb2FkLCBhZGQsIGRlbGV0ZSBvciBsb2FkIGZpbGVzIGFuZCBmb2xkZXJzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYzIiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+RWRpdCB0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjQiIG5hbWU9InNhbHV0YXRpb24iPgorICAgIDx2YWx1ZT5Qcm9mPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjUiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UHVibGlzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY2IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlN0YXJ0IFB1Ymxpc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2NyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdG9wIFB1Ymxpc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2OCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5Ib3N0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjkiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UHVibGlzaCBBcHA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5QdWJsaXNoIElkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzEiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UmVkdWNlIHRoZSB3aWR0aCBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtb3ZlIGl0IGxlZnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5SZWR1Y2UgdGhlIGhlaWdodCBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtb3ZlIGl0IGJvdHRvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDczIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHVjZSB0aGUgeCBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtYWtlIGl0IHdpZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzQiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UmVkdWNlIHRoZSB5IG9mIHRoZSBTaGFyaW5nU2NyZWVuIGJlZm9yZSB5b3UgdHJ5IHRvIG1ha2UgaXQgaGlnaGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzUiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+RmlsbCB0aGVzZSBzZXR0aW5ncyBzdHJlYW0geW91ciBzY3JlZW4gZGF0YSB0byAzdGggcGFydHkgcHJvdmlkZXJzIGxpa2UganVzdGluLnR2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzYiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UGxlYXNlIHN0YXJ0IFNjcmVlbiBzaGFyaW5nIHRvIGJlIGFibGUgdG8gcHVibGlzaCBpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc3IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPk1vZGVyYXRvciBwZXJtaXNzaW9uIHJlcXVpcmVkIHRvIHN0YXJ0IHJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc4IiBuYW1lPSJubyByaWdodCBmb3IgZXhjbHVzaXZlIGF1ZGlvIj4KKyAgICA8dmFsdWU+WW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byBhcHBseSBleGNsdXNpdmUgYXVkaW8gdG8gYW55IHBhcnRpY2lwYW50LiBZb3UgbmVlZCBtb2RlcmF0aW9uIHJvbGUgb3IgdGhlIHJpZ2h0IGZvciBleGNsdXNpdmUgYXVkaW8gdG8gbWFrZSBhbnkgbWljcm9waG9uZSBleGNsdXNpdmUgdHVybmVkIG9uLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3OSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+VXBsb2FkIG5ldyBmaWxlIHRvIGZpbGUgZXhwbG9yZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+T3BlbiBuZXcgZGlhbG9nIHdpdGggc2hhcmluZyBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgxIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5BbiBleGlzdGluZyBtb2RlcmF0b3IgbXVzdCBhcHByb3ZlIGl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODIiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkFzayBtb2RlcmF0b3IgdG8gc2hhcmUgeW91ciB3ZWJjYW0vbWljcm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MyIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+R2F0aGVyIGZlZWRiYWNrIGJ5IGNyZWF0aW5nIGEgcG9sbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg0IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5QYXN0IGFuZCBjdXJyZW50IHBvbGwgcmVzdWx0cyBhcyBjaGFydHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Vm90ZSBpZiB0aGVyZSBpcyBhIHBvbGwgZm9yIHRoaXMgY29uZmVyZW5jZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODYiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkVkaXQgY2FtIGFuZCBtaWMgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NyIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Q29uZmlybSBhbmQgbGVhdmUgdGhlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4OCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Q2FsbCBleHRlcm5hbCBwZW9wbGUgdmlhIFZvSVAvU0lQPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODkiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlNlbmQgYW4gZW1haWwgd2l0aCBhIGRpcmVjdCBsaW5rIHRvIHRoaXMgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkwIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5DaGFuZ2UgeW91ciB3aGl0ZWJvYXJkIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTEiIG5hbWU9ImJhY2t1cCBhZG1pbiI+CisgICAgPHZhbHVlPk1heCB1cGxvYWQgc2l6ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkyIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5Bc2sgbW9kZXJhdG9yIHRvIHNoYXJlIHlvdXIgd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkzIiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5TdGFydCBQcml2YXRlIENoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NCIgbmFtZT0iYWxsX3ByaXZhdGVfY2hhdCI+CisgICAgPHZhbHVlPkFsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk1IiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IHN0YXJ0IGEgcHJpdmF0ZSBjaGF0IHdpdGggeW91cnNlbGYuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTYiIG5hbWU9InByaXZhdGUgY2hhdCI+CisgICAgPHZhbHVlPllvdSd2ZSBhbHJlYWR5IHN0YXJ0ZWQgYSBwcml2YXRlIGNoYXQgd2l0aCB0aGlzIHBhcnRpY2lwYW50LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk3IiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcHJpdmF0ZSBjaGF0PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk4IiBuYW1lPSJTZXJ2ZXJzIj4KKyAgICA8dmFsdWU+U2VydmVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk5IiBuYW1lPSJTZXJ2ZXJzIj4KKyAgICA8dmFsdWU+U2VydmVycyBwYXJ0aWNpcGF0aW5nIGluIGNsdXN0ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMCIgbmFtZT0iU2VydmVyIG5hbWUiPgorICAgIDx2YWx1ZT5TZXJ2ZXIgTmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAxIiBuYW1lPSJTZXJ2ZXIgQWRkcmVzcyI+CisgICAgPHZhbHVlPlNlcnZlciBBZGRyZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDIiIG5hbWU9IlNlcnZlciBkZXRhaWxzIj4KKyAgICA8dmFsdWU+U2VydmVyIGRldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMyIgbmFtZT0iU2VuZCBTTVMiPgorICAgIDx2YWx1ZT5TZW5kIFNNUzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA0IiBuYW1lPSJwdWJsaXNoaW5nX21lc3NhZ2UiPgorICAgIDx2YWx1ZT5QdWJsaXNoaW5nLiBVc2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA1IiBuYW1lPSJjbWRfbGluZV9hZG1pbiI+CisgICAgPHZhbHVlPlRvIHNhdmUgdGltZSBhbmQgaW50ZXJuZXQgdHJhZmZpYyB5b3UgY2FuIHVzZSBjb21tYW5kIGxpbmUgYWRtaW4gdG8gYmFja3VwL3Jlc3RvcmUvdXBncmFkZTpcbiAxKSBnbyB0byBPTSBpbnN0YWxsIGRpciAoZm9yIGV4LiAvb3B0L3JlZDUpIFxuIDIpIHN0b3AgT00gKGZvciBleC4gLi9yZWQ1LXNodXRkb3duLnNoKVxuIDMpIC4vYWRtaW4uc2ggLWIgLWZpbGUgfi90b2RheV9vbV9iYWNrdXAuemlwIChjcmVhdGUgYmFja3VwIG9mIGN1cnJlbnQgT00pXG4gNCkgZG93bmxvYWQgYXJjaGl2ZSB3aXRoIG5ldyBPTVxuIDUpIG12IC9vcHQvcmVkNSAvb3B0LnJlZDUuYmFrIChtb3ZlIHdvcmtpbmcgdmVyc2lvbiBvZiBPTSBqdXN0IGluIGNhc2UgOikpXG4gNikgZXh0cmFjdCBkb3dubG9hZGVkIE9NIHRvIHRoZSAvb3B0L3JlZDVcbiA3KSAuL2FkbWluLnNoIC1pIC1maWxlIH4vdG9kYXlfb21fYmFja3VwLnppcCAob3IgJy4vYWRtaW4uc2ggLWkgLWZpbGUgfi90b2RheV9vbV9iYWNrdXAuemlwIC0tZGItdHlwZSBteXNxbCAtLWRiLXVzZXIgb21fdXNlciAtLWRiLXBhc3Mgb21fdXNlcl9wYXNzJyBpbiBjYXNlIG9mIHlvdSBhcmUgdXNpbmcgbm9uLWRlZmF1bHQgREIgKVxuIDgpIHN0YXJ0IE9NXG48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNiIgbmFtZT0icHVibGljX3Jvb21fdG9vbHRpcCI+CisgICAgPHZhbHVlPlJvb21zIGNvbW1vbiB0byBhbGwgdXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA3IiBuYW1lPSJwcml2YXRlX3Jvb21fdG9vbHRpcCI+CisgICAgPHZhbHVlPlJvb21zIGNvbW1vbiB0byB0aGUgY3VycmVudCB1c2VyIGdyb3VwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDgiIG5hbWU9Im15X3Jvb21fdG9vbHRpcCI+CisgICAgPHZhbHVlPlJvb21zIG9mIHRoZSBjdXJyZW50IHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwOSIgbmFtZT0iY3JlYXRlX25ld19yb29tIj4KKyAgICA8dmFsdWU+Q3JlYXRlL01vZGlmeSBhcHBvaW50bWVudCBzcGVjaWFsIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxMCIgbmFtZT0ibXVsdGlwbGVfYWRkcmVzc2VzIj4KKyAgICA8dmFsdWU+WW91IGNhbiBlbnRlciBtdWx0aXBsZSBhZGRyZXNzZXMgaW4gdGhlIGZvcm1hdDogZmlyc3RuYW1lMSBsYXN0bmFtZTEgJmx0O2VtYWlsMSZndDssImZpcnN0bmFtZTIgbGFzdG5hbWUyIiAmbHQ7ZW1haWwyJmd0OywnZmlyc3RuYW1lMyBsYXN0bmFtZTMnICZsdDtlbWFpbDMmZ3Q7LCAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxMSIgbmFtZT0ic3RyZWFtX3ZvbHVtZSI+CisgICAgPHZhbHVlPkFkanVzdCBzdHJlYW0gdm9sdW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTIiIG5hbWU9Im1pY3JvcGhvbmVfdm9sdW1lIj4KKyAgICA8dmFsdWU+QWRqdXN0IG1pY3JvcGhvbmUgdm9sdW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTMiIG5hbWU9ImNoYXRfbW9kZXJhdGVkIj4KKyAgICA8dmFsdWU+SXMgY2hhdCBtb2RlcmF0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNCIgbmFtZT0iY2hhdF9tb2RlcmF0ZWQiPgorICAgIDx2YWx1ZT5BbGxvdyBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTUiIG5hbWU9ImNoYXRfb3BlbmVkIj4KKyAgICA8dmFsdWU+Q2hhdCBwYW5lbCBvcGVuZWQgYnkgZGVmYXVsdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE2IiBuYW1lPSJmaWxlc19vcGVuZWQiPgorICAgIDx2YWx1ZT5GaWxlcyBwYW5lbCBvcGVuZWQgYnkgZGVmYXVsdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE3IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gc2VjdGlvbiBsYXN0cGluZyI+CisgICAgPHZhbHVlPkxhc3QgcGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE4IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gc2VjdGlvbiBsYXN0cGluZyBpbmZvIj4KKyAgICA8dmFsdWU+RXZlcnkgc2xhdmUgc2VuZHMgYSBwaW5nIHRvIHRoZSBtYXN0ZXIgZXZlcnkgMyBzZWNvbmRzIChjb25maWd1cmFibGUpLiBTbGF2ZSBsYXN0UGluZyBtdXN0IGJlIHNtYWxsZXIgdGhlbiAxIG1pbnV0ZSBzbyB0aGF0IHRoZSBtYXN0ZXIgdXNlcyB0aGUgc2xhdmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTkiIG5hbWU9InNlcnZlciBhZG1pbiBwb3J0Ij4KKyAgICA8dmFsdWU+SFRUUCBQb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjAiIG5hbWU9InNlcnZlciBhZG1pbiB1c2VyIj4KKyAgICA8dmFsdWU+VXNlciAoU09BUC1BY2Nlc3MpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjEiIG5hbWU9InNlcnZlciBhZG1pbiBwYXNzd29yZCI+CisgICAgPHZhbHVlPlBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjIiIG5hbWU9InNlcnZlciBhZG1pbiB3ZWJhcHAgcGF0aCI+CisgICAgPHZhbHVlPldlYmFwcCBwYXRoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjMiIG5hbWU9InNlcnZlciBhZG1pbiBwcm90b2NvbCI+CisgICAgPHZhbHVlPlByb3RvY29sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjQiIG5hbWU9InNlcnZlciBhZG1pbiBwaW5nIHJ1bm5pbmciPgorICAgIDx2YWx1ZT5QaW5nIHJ1bm5pbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyNSIgbmFtZT0ic2VydmVyIGFkbWluIGFjdGl2ZSI+CisgICAgPHZhbHVlPkFjdGl2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI2IiBuYW1lPSJnZW5lcmF0ZV9oYXNoIj4KKyAgICA8dmFsdWU+R2VuZXJhdGUgVVJMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjciIG5hbWU9Im5ldHdvcmsgdGVzdGluZyBsaW5rIj4KKyAgICA8dmFsdWU+TmV0d29yayB0ZXN0aW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjgiIG5hbWU9InJvb21fb3B0aW9ucyI+CisgICAgPHZhbHVlPkF1dG8gc2VsZWN0IGludGVydmlldyB2aWRlbyBwb2Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyOSIgbmFtZT0iZm9udF91bmRlcmxpbmUiPgorICAgIDx2YWx1ZT5VbmRlcmxpbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMCIgbmFtZT0iZm9udF9zdHlsZSI+CisgICAgPHZhbHVlPkZvbnQgc3R5bGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMSIgbmFtZT0iYWxsb3dfZm9udF9zdHlsZXMiPgorICAgIDx2YWx1ZT5BbGxvdyBmb250IHN0eWxlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMyIiBuYW1lPSJmb250X2NvbG9yIj4KKyAgICA8dmFsdWU+Rm9udCBjb2xvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMzIiBuYW1lPSJoeXBlcmxpbmsiPgorICAgIDx2YWx1ZT5IeXBlcmxpbms8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNCIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbiI+CisgICAgPHZhbHVlPlNob3cgc2Vzc2lvbiBzdGF0aXN0aWNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzUiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW4iPgorICAgIDx2YWx1ZT5TZXNzaW9uIGRldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNiIgbmFtZT0ic3lzdGVtX2ltcG9ydCI+CisgICAgPHZhbHVlPlN5c3RlbSBpbXBvcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNyIgbmFtZT0iaW5jbHVkZV9pbnRvX2JhY2t1cCI+CisgICAgPHZhbHVlPkluY2x1ZGUgdXBsb2FkZWQgZmlsZXMgYW5kIHJlY29yZGluZ3MgaW4gYmFja3VwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzgiIG5hbWU9InJvb21fYWRtaW5fc2lwIj4KKyAgICA8dmFsdWU+RW5hYmxlIFNJUCB0cmFuc3BvcnQgaW4gdGhlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzOSIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2NvbmZpcm0iPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gcHJvdmlkZSB0aGlzIHVzZXIgYW4gZXhjbHVzaXZlIGF1ZGlvPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTQwIiBuYW1lPSJub190aW1lem9uZSI+CisgICAgPHZhbHVlPlBsZWFzZSBzcGVjaWZ5IHlvdXIgdGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU0NSIgbmFtZT0iY29udGVudF9pc19zYXZpbmciPgorICAgIDx2YWx1ZT5Db250ZW50IGlzIFNhdmluZywgUGxlYXNlIHdhaXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+Cis8L2xhbmd1YWdlPgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9sYW5ndWFnZXMvbGFuZ3VhZ2UueHNkIGIvV2ViQ29udGVudC9sYW5ndWFnZXMvbGFuZ3VhZ2UueHNkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhZDgzNzcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L2xhbmd1YWdlcy9sYW5ndWFnZS54c2QKQEAgLTAsMCArMSw0OCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPHhzOnNjaGVtYSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIj4NCisgIDx4czplbGVtZW50IG5hbWU9Imxhbmd1YWdlIj4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czpzZXF1ZW5jZT4NCisgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InN0cmluZyIvPg0KKyAgICAgIDwveHM6c2VxdWVuY2U+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJzdHJpbmciPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOnNlcXVlbmNlPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ2YWx1ZSIvPg0KKyAgICAgIDwveHM6c2VxdWVuY2U+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpZCIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6aW50ZWdlciIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdXNlPSJyZXF1aXJlZCIvPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0idmFsdWUiPg0KKyAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPg0KKyAgICAgIDx4czpzZXF1ZW5jZT4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0iYnIiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImkiIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIC8+DQorICAgICAgPC94czpzZXF1ZW5jZT4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9ImJyIi8+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJpIiB0eXBlPSJ4czpzdHJpbmciLz4NCis8L3hzOnNjaGVtYT4NCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L2xhbmd1YWdlcy9sYW5ndWFnZXMueG1sIGIvV2ViQ29udGVudC9sYW5ndWFnZXMvbGFuZ3VhZ2VzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jY2Q1OTM4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9sYW5ndWFnZXMvbGFuZ3VhZ2VzLnhtbApAQCAtMCwwICsxLDU1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxhbmd1YWdlIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIAorICAgIHhzaTpub05hbWVzcGFjZVNjaGVtYUxvY2F0aW9uPSJsYW5ndWFnZXMueHNkIj4KKwk8bGFuZyBpZD0iMSIgcmlnaHRUb0xlZnQ9ImZhbHNlIiBjb2RlPSJlbiI+ZW5nbGlzaDwvbGFuZz4KKwk8bGFuZyBpZD0iMiIgcmlnaHRUb0xlZnQ9ImZhbHNlIiBjb2RlPSJkZSI+ZGV1dHNjaDwvbGFuZz4KKwk8bGFuZyBpZD0iMyIgcmlnaHRUb0xlZnQ9ImZhbHNlIiBjb2RlPSJkZS1TdHVkSVAiPmRldXRzY2ggKHN0dWRJUCk8L2xhbmc+CisJPGxhbmcgaWQ9IjQiIHJpZ2h0VG9MZWZ0PSJmYWxzZSIgY29kZT0iZnIiPmZyZW5jaDwvbGFuZz4KKwk8bGFuZyBpZD0iNSIgcmlnaHRUb0xlZnQ9ImZhbHNlIiBjb2RlPSJpdCI+aXRhbGlhbjwvbGFuZz4KKwk8bGFuZyBpZD0iNiIgcmlnaHRUb0xlZnQ9ImZhbHNlIiBjb2RlPSJwdCI+cG9ydHVndWVzPC9sYW5nPgorCTxsYW5nIGlkPSI3IiByaWdodFRvTGVmdD0iZmFsc2UiIGNvZGU9InB0LWJyIj5wb3J0dWd1ZXMgYnJhemlsPC9sYW5nPgorCTxsYW5nIGlkPSI4IiByaWdodFRvTGVmdD0iZmFsc2UiIGNvZGU9ImVzIj5zcGFuaXNoPC9sYW5nPgorCTxsYW5nIGlkPSI5IiByaWdodFRvTGVmdD0iZmFsc2UiIGNvZGU9InJ1Ij5ydXNzaWFuPC9sYW5nPgorCTxsYW5nIGlkPSIxMCIgcmlnaHRUb0xlZnQ9ImZhbHNlIiBjb2RlPSJzdiI+c3dlZGlzaDwvbGFuZz4KKwk8bGFuZyBpZD0iMTEiIHJpZ2h0VG9MZWZ0PSJmYWxzZSIgY29kZT0iemgtQ04iPmNoaW5lc2Ugc2ltcGxpZmllZDwvbGFuZz4KKwk8bGFuZyBpZD0iMTIiIHJpZ2h0VG9MZWZ0PSJmYWxzZSIgY29kZT0iemgtVFciPmNoaW5lc2UgdHJhZGl0aW9uYWw8L2xhbmc+CisJPGxhbmcgaWQ9IjEzIiByaWdodFRvTGVmdD0iZmFsc2UiIGNvZGU9ImtvIj5rb3JlYW48L2xhbmc+CisJPGxhbmcgaWQ9IjE0IiByaWdodFRvTGVmdD0idHJ1ZSIgY29kZT0iYXIiPmFyYWJpYzwvbGFuZz4KKwk8bGFuZyBpZD0iMTUiIHJpZ2h0VG9MZWZ0PSJmYWxzZSIgY29kZT0iamEiPmphcGFuZXNlPC9sYW5nPgorCTxsYW5nIGlkPSIxNiIgcmlnaHRUb0xlZnQ9ImZhbHNlIiBjb2RlPSJpZCI+aW5kb25lc2lhbjwvbGFuZz4KKwk8bGFuZyBpZD0iMTciIHJpZ2h0VG9MZWZ0PSJmYWxzZSIgY29kZT0iaHUiPmh1bmdhcmlhbjwvbGFuZz4KKyAgICA8bGFuZyBpZD0iMTgiIHJpZ2h0VG9MZWZ0PSJmYWxzZSIgY29kZT0idHIiPnR1cmtpc2g8L2xhbmc+CisgICAgPGxhbmcgaWQ9IjE5IiByaWdodFRvTGVmdD0iZmFsc2UiIGNvZGU9InVrIj51a3JhaW5pYW48L2xhbmc+CisgICAgPGxhbmcgaWQ9IjIwIiByaWdodFRvTGVmdD0iZmFsc2UiIGNvZGU9InRoIj50aGFpPC9sYW5nPgorICAgIDxsYW5nIGlkPSIyMSIgcmlnaHRUb0xlZnQ9ImZhbHNlIiBjb2RlPSJmYSI+cGVyc2lhbjwvbGFuZz4KKyAgICA8bGFuZyBpZD0iMjIiIHJpZ2h0VG9MZWZ0PSJmYWxzZSIgY29kZT0iY3MiPmN6ZWNoPC9sYW5nPgorICAgIDxsYW5nIGlkPSIyMyIgcmlnaHRUb0xlZnQ9ImZhbHNlIiBjb2RlPSJnbCI+Z2FsaWNpYW48L2xhbmc+CisgICAgPGxhbmcgaWQ9IjI0IiByaWdodFRvTGVmdD0iZmFsc2UiIGNvZGU9ImZpIj5maW5uaXNoPC9sYW5nPgorICAgIDxsYW5nIGlkPSIyNSIgcmlnaHRUb0xlZnQ9ImZhbHNlIiBjb2RlPSJwbCI+cG9saXNoPC9sYW5nPgorICAgIDxsYW5nIGlkPSIyNiIgcmlnaHRUb0xlZnQ9ImZhbHNlIiBjb2RlPSJlbCI+Z3JlZWs8L2xhbmc+CisgICAgPGxhbmcgaWQ9IjI3IiByaWdodFRvTGVmdD0iZmFsc2UiIGNvZGU9Im5sIj5kdXRjaDwvbGFuZz4KKyAgICA8bGFuZyBpZD0iMjgiIHJpZ2h0VG9MZWZ0PSJ0cnVlIiBjb2RlPSJoZSI+aGVicmV3PC9sYW5nPgorICAgIDxsYW5nIGlkPSIyOSIgcmlnaHRUb0xlZnQ9ImZhbHNlIiBjb2RlPSJjYSI+Y2F0YWxhbjwvbGFuZz4KKyAgICA8bGFuZyBpZD0iMzAiIHJpZ2h0VG9MZWZ0PSJmYWxzZSIgY29kZT0iYmciPmJ1bGdhcmlhbjwvbGFuZz4KKyAgICA8bGFuZyBpZD0iMzEiIHJpZ2h0VG9MZWZ0PSJmYWxzZSIgY29kZT0iZGEiPmRhbmlzaDwvbGFuZz4KKyAgICA8bGFuZyBpZD0iMzIiIHJpZ2h0VG9MZWZ0PSJmYWxzZSIgY29kZT0ic2siPnNsb3ZhazwvbGFuZz4KKzwvbGFuZ3VhZ2U+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L2xhbmd1YWdlcy9sYW5ndWFnZXMueHNkIGIvV2ViQ29udGVudC9sYW5ndWFnZXMvbGFuZ3VhZ2VzLnhzZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNmEwNTkyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9sYW5ndWFnZXMvbGFuZ3VhZ2VzLnhzZApAQCAtMCwwICsxLDM2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0NCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgIA0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAgICAJICANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAgdW5kZXIgdGhlIExpY2Vuc2UuDQorICANCistLT4NCis8eHM6c2NoZW1hIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiPg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0ibGFuZ3VhZ2UiPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOnNlcXVlbmNlPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibGFuZyIvPg0KKyAgICAgIDwveHM6c2VxdWVuY2U+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJsYW5nIj4NCisgICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvZGUiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOk5DTmFtZSIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaWQiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOmludGVnZXIiLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJpZ2h0VG9MZWZ0IiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czpib29sZWFuIi8+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorPC94czpzY2hlbWE+DQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9sYW5ndWFnZXMvcGVyc2lhbi54bWwgYi9XZWJDb250ZW50L2xhbmd1YWdlcy9wZXJzaWFuLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjgzYzg0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9sYW5ndWFnZXMvcGVyc2lhbi54bWwKQEAgLTAsMCArMSw0NjUyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorCis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitUaGlzIEZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgYnkgdGhlIExhbmd1YWdlRWRpdG9yIAordG8gYWRkIG5ldyBMYW5ndWFnZXMgb3IgbW9kaWZ5L2N1c3RvbWl6ZSBpdCB1c2UgdGhlIExhbmd1YWdlRWRpdG9yIAorc2VlIGh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9MYW5ndWFnZUVkaXRvci5odG1sIGZvciBEZXRhaWxzIAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMtLT4KKzxsYW5ndWFnZSB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczpub05hbWVzcGFjZVNjaGVtYUxvY2F0aW9uPSJsYW5ndWFnZS54c2QiPgorICA8c3RyaW5nIGlkPSIxIiBuYW1lPSJjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+2YPZhtmB2LHYp9mG2LM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMiIgbmFtZT0ibWVldGluZyI+CisgICAgPHZhbHVlPtmF2YTYp9mC2KfYqjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzIiBuYW1lPSJjbGFzc3Jvb20iPgorICAgIDx2YWx1ZT7Yr9ix2LMg2YPZhNin2LM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNCIgbmFtZT0ic2V0dGluZ3MiPgorICAgIDx2YWx1ZT7YqtmG2LjZitmF2KfYqjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1IiBuYW1lPSJiZW51dHplciI+CisgICAgPHZhbHVlPtmB2LHYr9mKINmF2LTYrti12KfYqjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2IiBuYW1lPSJhZG1pbiI+CisgICAgPHZhbHVlPtmF2K/bjNix24zYqjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3IiBuYW1lPSJzdG9wIj4KKyAgICA8dmFsdWU+2KrZiNmC2YE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOCIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+2LbYqNi3PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkiIG5hbWU9Im5vZmlsZSI+CisgICAgPHZhbHVlPtiv2LPYqtix2LMg2YLYp9io2YQg2LrZitixINmB2KfZitmEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwIiBuYW1lPSJyZWNvcmRieXRlYWNoZXIiPgorICAgIDx2YWx1ZT7Yp9iz2KrYp9ivINiq2YjYs9i3INi22KjYtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMSIgbmFtZT0iY29ubmVjdGVkdXNlcnMiPgorICAgIDx2YWx1ZT7Yrdin2LbYsSDZg9in2LHYqNix2KfZhjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMiIgbmFtZT0ic3RhcnRjb25mIj4KKyAgICA8dmFsdWU+2YPZhtmB2LHYp9mG2LMg2YrZgyDYtNix2YjYuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMyIgbmFtZT0ibXluYW1lIj4KKyAgICA8dmFsdWU+2YXZhiDZhtin2YU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQiIG5hbWU9InZpZGVvY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPtmI2YrYr9mK2YjZitmKINmD2YbZgdix2KfZhtizPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1IiBuYW1lPSJpbXBvcnQiPgorICAgIDx2YWx1ZT7YqNin2LHar9iw2KfYsdmKPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2IiBuYW1lPSJyZWZyZXNoZmlsZXMiPgorICAgIDx2YWx1ZT7ZhNmK2LPYqiDYqNin2LLYqNmK2YbZijwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNyIgbmFtZT0idG9tYWluZmlsZSI+CisgICAgPHZhbHVlPtin2LXZhNmKINmB2KfZitmEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4IiBuYW1lPSJuZXdwb2xsIj4KKyAgICA8dmFsdWU+2KzYr9mK2K8g2LPZhtis2Yog2YbYuNixPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5IiBuYW1lPSJuZXdwb2xsaGVhZGVyIj4KKyAgICA8dmFsdWU+2YPZhtmB2LHYp9mG2LMg2KjYsdin2Yog2KzYr9mK2K8g2LHYp9mKINmK2YM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAiIG5hbWU9InF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+Otm+2LHYs9i0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxIiBuYW1lPSJwb2xsdHlwZSI+CisgICAgPHZhbHVlPjrYs9mG2KzZiiDZhti42LEg2KfZhtmI2KfYuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMiIgbmFtZT0iY3JlYXRlIj4KKyAgICA8dmFsdWU+2KfZitis2KfYrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMyIgbmFtZT0iaW5mb21lc3NhZ2UiPgorICAgIDx2YWx1ZT7Yp9i32YTYp9i52KfYqiDZvtmK2KfZhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNCIgbmFtZT0iY3JlYXRwb2xsIj4KKyAgICA8dmFsdWU+2LPZhtis2Yog2YbYuNixINmK2YMg2KfZitis2KfYrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNSIgbmFtZT0iY2FuY2VsIj4KKyAgICA8dmFsdWU+2KfZhti12LHYp9mBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2IiBuYW1lPSJ5ZXNubyI+CisgICAgPHZhbHVlPtiu2YrYsS/YqNmE2Yc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjciIG5hbWU9Im51bWVyaWMiPgorICAgIDx2YWx1ZT4xLTEwINin2LnYr9in2K88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgiIG5hbWU9InBvbGwiPgorICAgIDx2YWx1ZT7Ys9mG2KzZiiDZhti42LE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkiIG5hbWU9Im1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT7Yp9i52KrYr9in2YQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAiIG5hbWU9InZvdGUiPgorICAgIDx2YWx1ZT7Ysdin2Yo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEiIG5hbWU9ImFscmVhZHl2b3RlZCI+CisgICAgPHZhbHVlPtm+2YrYtNmK2YYg2KLYsdinPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyIiBuYW1lPSJ2b3RpbmciPgorICAgIDx2YWx1ZT7Ysdin2Yo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMiIG5hbWU9ImFuc3dlciI+CisgICAgPHZhbHVlPtm+2KfYs9iuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0IiBuYW1lPSJ5ZXMiPgorICAgIDx2YWx1ZT7YqNmE2Yc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUiIG5hbWU9Im5vIj4KKyAgICA8dmFsdWU+2K7ZitixPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2IiBuYW1lPSJxdWVzdGlvbndhbnQiPgorICAgIDx2YWx1ZT462b7Yp9iz2K4g2K/Ysdiu2YjYp9iz2Ko8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzciIG5hbWU9InBvbGxyZXN1bHRzIj4KKyAgICA8dmFsdWU+2LHYp9mKINm+2YrYp9mF2K88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgiIG5hbWU9InF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+Otm+2LHYs9i0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5IiBuYW1lPSJyZXN1bHRzIj4KKyAgICA8dmFsdWU+Otm+2YrYp9mF2K88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAiIG5hbWU9ImFuc3dlcnMiPgorICAgIDx2YWx1ZT462b7Yp9iz2K48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDEiIG5hbWU9Im5vcG9sbCI+CisgICAgPHZhbHVlPtin2LPYqiDZhti02K/ZhyDYoti62KfYsiDYs9mG2KzZiiDZhti42LEg2YfZitqGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyIiBuYW1lPSJ2b3RpbmdzIj4KKyAgICA8dmFsdWU+2KLYsdinPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzIiBuYW1lPSJtZWV0aW5nIj4KKyAgICA8dmFsdWU+2KzZhNiz2Yc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQiIG5hbWU9ImNvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT7Zg9mG2YHYsdin2YbYszwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NSIgbmFtZT0idHlwZSI+CisgICAgPHZhbHVlPtmG2YjYuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NiIgbmFtZT0icmVtYWluaW5nc2VhdHMiPgorICAgIDx2YWx1ZT7Yr9mK2q/YsSDYrNin2Yrar9in2Yc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDciIG5hbWU9ImFscmVhZHljaG9zZW4iPgorICAgIDx2YWx1ZT7ZvtmK2LTZitmGINin2YbYqtiu2KfYqNmH2KfZijwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OCIgbmFtZT0iZW50ZXIiPgorICAgIDx2YWx1ZT7ZiNix2YjYrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OSIgbmFtZT0ibW9kbGVhdmUiPgorICAgIDx2YWx1ZT4u2qnYsdiv2YbYryDYqtix2qkg2LHYpyDYrNmE2LPZhyDYs9mK2LPYqtmFINmF2K/ZitixPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwIiBuYW1lPSJzeXN0ZW1tZXNzYWdlIj4KKyAgICA8dmFsdWU+2LPZitiz2KrZhSDZvtmK2KfZhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MSIgbmFtZT0iY2hvc3NlZGV2aWNlIj4KKyAgICA8dmFsdWU+2KfZhtiq2K7Yp9ioINi02YrZiNmHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyIiBuYW1lPSJjaG9vc2VjYW0iPgorICAgIDx2YWx1ZT7Yr9mI2LHYqNmK2YYg2KfZhtiq2K7Yp9ioPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzIiBuYW1lPSJjaG9vc2VtaWMiPgorICAgIDx2YWx1ZT7ZhdmK2YPYsdmI2YHZhiDYp9mG2KrYrtin2Kg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQiIG5hbWU9Im9rIj4KKyAgICA8dmFsdWU+2KfYr9in2YXZhzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NSIgbmFtZT0iY2FuY2VsMiI+CisgICAgPHZhbHVlPtin2YbYtdix2KfZgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NiIgbmFtZT0icmVjb25lZWN0bmVlZGVkIj4KKyAgICA8dmFsdWU+2K/Yp9ix2YrYryDZhdis2K/YryDYp9iq2LXYp9mEINio2Ycg2KfYrdiq2YrYp9isINi02YXYpzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NyIgbmFtZT0iZWRpdHNldHVwIj4KKyAgICA8dmFsdWU+2KrZhti42YrZhdin2Kog2YjZitix2KfZiti0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4IiBuYW1lPSJjb3Vyc2UiPgorICAgIDx2YWx1ZT7Ysdi02KrZhzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OSIgbmFtZT0ibGFuZ3VhZ2UiPgorICAgIDx2YWx1ZT462LLYqNin2YY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAiIG5hbWU9Im9rMiI+CisgICAgPHZhbHVlPtin2K/Yp9mF2Yc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEiIG5hbWU9ImNhbmNlbDMiPgorICAgIDx2YWx1ZT7Yp9mG2LXYsdin2YE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIiIG5hbWU9ImNsZWFyd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPtmF2KfZhtmK2KrZiNixINi12YHYrdmHINmD2LHYr9mGINm+2KfZgzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MyIgbmFtZT0iY2xlYXJ3aGl0ZWJvYXJkcXVlc3Rpb24iPgorICAgIDx2YWx1ZT7YtNmI2K/YnyDYp9i22KfZgdmHINis2K/ZitivINi52YPYsyDZitmDINin2YrZhtmD2Ycg2KfYsiDZgtio2YQg2LTZiNivINiu2KfZhNmKINmF2KfZhtmK2KrZiNixINi12YHYrdmHINmF2YrYrtmI2KfZh9mK2K8g2KLZitinPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0IiBuYW1lPSJkb250YXNrYWdhaW4iPgorICAgIDx2YWx1ZT7ZhtmB2LHZhdin2YrZitivINiz2YjYp9mEINiv2YjYqNin2LHZhzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NSIgbmFtZT0ibm8iPgorICAgIDx2YWx1ZT7YrtmK2LE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYiIG5hbWU9ImVkaXRzZXR1cDIiPgorICAgIDx2YWx1ZT7Zhti12Kgg2KrYtdit2YrYrTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NyIgbmFtZT0ibmVlZGNvbmZpcm1hdGlvbndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgiIG5hbWU9InVzZXJpbmZvIj4KKyAgICA8dmFsdWU+2YPYp9ix2KjYsSDYp9i32YTYp9i52KfYqjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OSIgbmFtZT0iY2xlYXJkcmF3YXJlYSI+CisgICAgPHZhbHVlPti02K/ZhyDYqtix2LPZitmFINmF2K3Ziti3INmI2LbZiNitPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwIiBuYW1lPSJ1bmRvIj4KKyAgICA8dmFsdWU+2YPYsdiv2YYg2K7Zhtir2Yo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzEiIG5hbWU9InJlZG8iPgorICAgIDx2YWx1ZT7Yr9mI2KjYp9ix2Ycg2KfZhtis2KfZhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MiIgbmFtZT0ic2VsZWN0b2JqZWN0Ij4KKyAgICA8dmFsdWU+2YbYuNixINmF2YjYsdivINmF2YjYttmI2Lk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMiIG5hbWU9InRleHQiPgorICAgIDx2YWx1ZT7Zhdiq2YY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQiIG5hbWU9InBhaW50Ij4KKyAgICA8dmFsdWU+2YPYsdiv2YYg2YbZgtin2LTZijwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NSIgbmFtZT0iZHJhd2xpbmUiPgorICAgIDx2YWx1ZT7Zg9i02YrYr9mGINiu2Lc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYiIG5hbWU9ImRyYXd1Ij4KKyAgICA8dmFsdWU+2YPYsdiv2YYg2K/Yp9ixINiu2Lcg2LLZitixPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3IiBuYW1lPSJyZWN0Ij4KKyAgICA8dmFsdWU+2q/ZiNi0INqG2YfYp9ixPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4IiBuYW1lPSJlbGxpcHNlIj4KKyAgICA8dmFsdWU+2KjZiti22Yo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkiIG5hbWU9ImFycm93Ij4KKyAgICA8dmFsdWU+2b7ZitmD2KfZhjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MCIgbmFtZT0iZGVsZXRlY2hvc2VuIj4KKyAgICA8dmFsdWU+2KfZhtiq2K7Yp9io2Yog2KLZitiq2YUg2K3YsNmBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxIiBuYW1lPSJhcHBsaXltb2QiPgorICAgIDx2YWx1ZT7Zhdiv2YrYsdmK2Kog2K/Ysdiu2YjYp9iz2Ko8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIiIG5hbWU9ImFwcGx5Ij4KKyAgICA8dmFsdWU+2KfYrNix2Kcg2YLYp9io2YQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODMiIG5hbWU9ImNhbmNlbCI+CisgICAgPHZhbHVlPtin2YbYtdix2KfZgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NCIgbmFtZT0ibW9kIj4KKyAgICA8dmFsdWU+2YXYr9mK2LHZitiqINiv2LHYrtmI2KfYs9iqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1IiBuYW1lPSJjbG9zZSI+CisgICAgPHZhbHVlPtio2LPYqtmGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2IiBuYW1lPSJpdGFsaWMiPgorICAgIDx2YWx1ZT7Zg9isINit2LHZiNmBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3IiBuYW1lPSJib2xkIj4KKyAgICA8dmFsdWU+2KrZiNm+2LEg2K3YsdmI2YE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgiIG5hbWU9IndhaXRpbmciPgorICAgIDx2YWx1ZT7Zhdin2YbYr9mGINmF2YbYqti42LE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkiIG5hbWU9ImFwcGx5TWVzc2FnZSI+CisgICAgPHZhbHVlPtin2KzYsdinINmC2KfYqNmEINm+2YrYutin2YU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAiIG5hbWU9ImFjY2VwdCI+CisgICAgPHZhbHVlPtm+2LDZitix2YHYqtmGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxIiBuYW1lPSJyZWplY3QiPgorICAgIDx2YWx1ZT7Zg9ix2K/ZhiDYsdivPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyIiBuYW1lPSJjYW5jZWwiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMiIG5hbWU9InNlbmRtb2RyZXF1ZXN0bWVzc2FnZSI+CisgICAgPHZhbHVlPtiz2YrYs9iq2YUg2YXYr9mK2LEg2KjZhyDYr9ix2K7ZiNin2LPYqiDZvtmK2KfZhSDYp9ix2LPYp9mEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0IiBuYW1lPSJhY2NlcHQiPgorICAgIDx2YWx1ZT7Zvtiw2YrYsdmB2KrZhjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NSIgbmFtZT0icmVqZWN0Ij4KKyAgICA8dmFsdWU+2YPYsdiv2YYg2LHYrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NiIgbmFtZT0iY2hhbmdlbW9kIj4KKyAgICA8dmFsdWU+2LPZitiz2KrZhSDZhdiv2YrYsSDYqti62YrZitixPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3IiBuYW1lPSJub25tb2RlcnJvcm1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIG5vdCBtb2RlcmF0aW5nIHRoaXMgY291cnNlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OCIgbmFtZT0ibW9kZXJhdG9yIj4KKyAgICA8dmFsdWU+Otiz2YrYs9iq2YUg2YXYr9mK2LE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkiIG5hbWU9InJvb21mdWxsbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoaXMgUm9vbSBpcyBmdWxsLiBTb3JyeSBwbGVhc2UgdHJ5IGFnYWluIGxhdGVyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAiIG5hbWU9ImVsbGxpcHNlIj4KKyAgICA8dmFsdWU+2KjZiti22Yo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxIiBuYW1lPSJjbG9zZSI+CisgICAgPHZhbHVlPtio2LPYqtmGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMiIgbmFtZT0iQXV0aEVycm9yIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMyIgbmFtZT0ibWluNHVzZXJuYW1lIj4KKyAgICA8dmFsdWU+2YPYp9ix2KfZg9iq2LEgNCDYp9iyINio2YrYtCDZitinIDQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0IiBuYW1lPSJtaW40cGFzcyI+CisgICAgPHZhbHVlPtio2KfYtNivINmD2KfYsdin2YPYqtixIDQg2K3Yr9in2YLZhCDYqNin2YrYryDYudio2YjYsSDYsdmF2LI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1IiBuYW1lPSJ1c2VybmFtZXRha2VuIj4KKyAgICA8dmFsdWU+VGhlIHVzZXJuYW1lIGlzIGFscmVhZHkgdGFrZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2IiBuYW1lPSJlbWFpbHRha2VuIj4KKyAgICA8dmFsdWU+VGhlIGVtYWlsIGlzIGFscmVhZHkgcmVnaXN0ZXJlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDciIG5hbWU9ImVtYWlsdGFrZW4iPgorICAgIDx2YWx1ZT7Ys9mK2LPYqtmFINin2K7Yt9in2LE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4IiBuYW1lPSJBdXRobG9naW4iPgorICAgIDx2YWx1ZT7Yp9ix2KrYqNin2Lcg2YLYt9i5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOSIgbmFtZT0iQXV0aHVzZXIiPgorICAgIDx2YWx1ZT462YPYp9ix2KjYsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAiIG5hbWU9IkF1dGhwYXNzIj4KKyAgICA8dmFsdWU+Oti52KjZiNixINix2YXYsjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEiIG5hbWU9IkF1dGhsYW5nIj4KKyAgICA8dmFsdWU+Otiy2KjYp9mGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMiIgbmFtZT0iQXV0aHJlZyI+CisgICAgPHZhbHVlPtiz2YrYs9iq2YUg2KjZhyDZiNix2YjYrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMiIG5hbWU9InJlZ2Zvcm1oZWFkIj4KKyAgICA8dmFsdWU+U2lnbiBVcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQiIG5hbWU9InJlZ2Zvcm11c2VyIj4KKyAgICA8dmFsdWU+OtmD2KfYsdio2LE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1IiBuYW1lPSJyZWdmb3JtcGFzcyI+CisgICAgPHZhbHVlPti52KjZiNixINix2YXYsjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2IiBuYW1lPSJyZWdmb3JtcmV0eXBlIj4KKyAgICA8dmFsdWU+2KrYp9mK2b4g2KjYp9iy2KjZitmG2Yo6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNyIgbmFtZT0icmVnZm9ybWZpcnN0bmFtZSI+CisgICAgPHZhbHVlPjrZhtin2YU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4IiBuYW1lPSJyZWdmb3JtbGFzdG5hbWUiPgorICAgIDx2YWx1ZT462K7Yp9mG2YjYp9iv2q/ZiiDZhtin2YU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5IiBuYW1lPSJyZWdmb3JtbWFpbCI+CisgICAgPHZhbHVlPjrYp9mK2YXZitmEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMCIgbmFtZT0icmVnZm9ybXN0YXRlIj4KKyAgICA8dmFsdWU+OtmD2LTZiNixPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMSIgbmFtZT0icmVnZm9ybWJ0bjEiPgorICAgIDx2YWx1ZT7Yq9io2Ko8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyIiBuYW1lPSJyZWdmb3JtYnRuMiI+CisgICAgPHZhbHVlPtin2YbYtdix2KfZgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMiIG5hbWU9IkF1dGhidG4yIj4KKyAgICA8dmFsdWU+Tm90IGEgbWVtYmVyPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPtin2LXZhNmKINi12YHYrdmHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNSIgbmFtZT0idXNlcmFkbWluIj4KKyAgICA8dmFsdWU+2YPYp9ix2KjYsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYiIG5hbWU9Imdyb3VwYWRtaW4iPgorICAgIDx2YWx1ZT7Zh9inINqv2LHZiNmHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNyIgbmFtZT0ib3JnYWRtaW4iPgorICAgIDx2YWx1ZT7Yr9mH2Yog2LPYp9iy2YXYp9mGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOCIgbmFtZT0iaGVhZGNvbmYiPgorICAgIDx2YWx1ZT7ar9mB2Krar9mIINin2LfYp9mCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOSIgbmFtZT0iY29uZl9wdWIiPgorICAgIDx2YWx1ZT7Zh9mF2q/Yp9mG2Yo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwIiBuYW1lPSJoZWFkX29yZyI+CisgICAgPHZhbHVlPtiv2YfZiiDYs9in2LLZhdin2YY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxIiBuYW1lPSJidG5fZW50ZXJyb29tIj4KKyAgICA8dmFsdWU+2YjYsdmI2K88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2xvZ2luIj4KKyAgICA8dmFsdWU+2KfYsdiq2KjYp9i3INmC2LfYuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMiIG5hbWU9InVzZXJhbHRlcnNlbGZfcGFzcyI+CisgICAgPHZhbHVlPti52KjZiNixINix2YXYsjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQiIG5hbWU9InVzZXJhbHRlcnNlbGZfcGFzc3JldHlwZSI+CisgICAgPHZhbHVlPtiq2KfZitm+INio2KfYstio2YrZhtmKPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNSIgbmFtZT0idXNlcmFsdGVyc2VsZl9maXJzdG5hbWUiPgorICAgIDx2YWx1ZT462YbYp9mFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNiIgbmFtZT0idXNlcmFsdGVyc2VsZl9sYXN0bmFtZSI+CisgICAgPHZhbHVlPjrYrtin2YbZiNin2K/ar9mKINmG2KfZhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzciIG5hbWU9InVzZXJhbHRlcnNlbGZfZW1haWwiPgorICAgIDx2YWx1ZT462KfZitmF2YrZhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgiIG5hbWU9InVzZXJhbHRlcnNlbGZfYmlydGgiPgorICAgIDx2YWx1ZT462KrZiNmE2K8g2KrYp9ix2YrYrjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkiIG5hbWU9InVzZXJhbHRlcnNlbGZfc3RyZWV0bm8iPgorICAgIDx2YWx1ZT462LPZg9mI2YbYqiDZhdit2YQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Rvd24iPgorICAgIDx2YWx1ZT462YPYr9m+2LPYqtmKPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MSIgbmFtZT0idXNlcmFsdGVyc2VsZl9zdGF0ZSI+CisgICAgPHZhbHVlPjrZg9i02YjYsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIiIG5hbWU9InVzZXJhbHRlcnNlbGZfYWRyZXNzY29tbWVudCI+CisgICAgPHZhbHVlPjrYotiv2LHYszwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMiIG5hbWU9InVzZXJhbHRlcnNlbGZfaGVhZGVyIj4KKyAgICA8dmFsdWU+2YPYp9ix2KjYsSDYs9mI2KfYqNmCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NCIgbmFtZT0ic2F2ZW1lbnViYXJfc2F2ZWxhYmVsIj4KKyAgICA8dmFsdWU+2LDYrtmK2LHZhzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUiIG5hbWU9InNhdmVtZW51YmFyX3NhdmVsYWJlbCI+CisgICAgPHZhbHVlPtiw2K7Zitix2Yc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2IiBuYW1lPSJhZG1pbl91c2VybGlzdF91c2VyX2lkIj4KKyAgICA8dmFsdWU+2YPYp9ix2KjYsSDYtNmG2KfYs9mHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NyIgbmFtZT0iYWRtaW5fdXNlcmxpc3RfbG9naW4iPgorICAgIDx2YWx1ZT7Yp9ix2KrYqNin2Lcg2YLYt9i5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OCIgbmFtZT0iYWRtaW5fdXNlcmxpc3RfZmlyc3RuYW0iPgorICAgIDx2YWx1ZT7Zhtin2YU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5IiBuYW1lPSJhZG1pbl91c2VybGlzdF9sYXN0bmFtZSI+CisgICAgPHZhbHVlPtiu2KfZhtmI2KfYr9qv2Yog2YbYp9mFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MCIgbmFtZT0idHVybm92ZXJsaXN0X25leHQiPgorICAgIDx2YWx1ZT7YqNi52K/ZiiDZhtmF2KfZiti0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MSIgbmFtZT0idHVybm92ZXJsaXN0X3ByZSI+CisgICAgPHZhbHVlPtmC2KjZhNmKINmG2YXYp9mK2LQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyIiBuYW1lPSJzYXZlY29udGVudF9jb25maXJtIj4KKyAgICA8dmFsdWU+2LbYqNi3INit2LDZgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMiIG5hbWU9InNhdmVjb250ZW50X2NvbmZpcm1fY2FuY2VsX2J0biI+CisgICAgPHZhbHVlPtin2YbYtdix2KfZgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTQiIG5hbWU9InNhdmVjb250ZW50X2NvbmZpcm1fY29uZmlybV9idG4iPgorICAgIDx2YWx1ZT7Yrdiw2YE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU1IiBuYW1lPSJzYXZlbWVudWJhcl9hZGRsYWJlbCI+CisgICAgPHZhbHVlPtis2K/ZitivINi22KjYtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTYiIG5hbWU9InNhdmVtZW51YmFyX3JlbG9hZGxhYmVsIj4KKyAgICA8dmFsdWU+2LbYqNi3INio2YrZhtmKINio2KfYsjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTciIG5hbWU9InNhdmVtZW51YmFyX2RlbGV0ZWxhYmVsIj4KKyAgICA8dmFsdWU+2LbYqNi3INit2LDZgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTgiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9zdGF0dXMiPgorICAgIDx2YWx1ZT7ZiNi22LnZitiqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1OSIgbmFtZT0idXNlcmFsdGVyX2FkbWluX3N0YXR1c0l0ZW0iPgorICAgIDx2YWx1ZT7YtdmE2KfYrdmK2Kog2YHYp9mC2K88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYwIiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fc3RhdHVzSXRlbSI+CisgICAgPHZhbHVlPtiz2KfYrtiq2YYg2YLYp9iv2LE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYxIiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fb3JnYW5pc2F0aW9uIj4KKyAgICA8dmFsdWU+2K/Zh9mKINiz2KfYstmF2KfZhjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjIiIG5hbWU9ImNhbGVuZGFyX2ljb25sYWJlbCI+CisgICAgPHZhbHVlPtiq2YLZiNmK2YU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYzIiBuYW1lPSJzYXZld2luZG93X2J0biI+CisgICAgPHZhbHVlPtio2LPYqtmGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2NCIgbmFtZT0ib3JnYW5pc2F0aW9udGFibGVsaXN0X2lkcm93Ij4KKyAgICA8dmFsdWU+2LPYp9iy2YXYp9mGINi02YbYp9iz2Yc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY1IiBuYW1lPSJvcmdhbmlzYXRpb250YWJsZWxpc3RfbmFtZXJvdyI+CisgICAgPHZhbHVlPtmG2KfZhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjYiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGlkMSI+CisgICAgPHZhbHVlPtmD2KfYsdio2LE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY3IiBuYW1lPSJ1c2VydmFsdWVfbGV2ZWxpZDIiPgorICAgIDx2YWx1ZT7Ys9mK2LPYqtmFINmF2K/ZitixPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2OCIgbmFtZT0idXNlcnZhbHVlX2xldmVsaWQzIj4KKyAgICA8dmFsdWU+2LPZitiz2KrZhSDZhdiv2YrYsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjkiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGxhYmVsIj4KKyAgICA8dmFsdWU+2YPYp9ix2KjYsSDYs9i32K08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTcwIiBuYW1lPSJvcmd2YWx1ZV9oZWFkZXIiPgorICAgIDx2YWx1ZT7Yr9mH2Yog2LPYp9iy2YXYp9mGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MSIgbmFtZT0ib3JndmFsdWVfb3JnbmFtZSI+CisgICAgPHZhbHVlPtmG2KfZhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzIiIG5hbWU9Im9yZ3ZhbHVlX29yZ25hbWUiPgorICAgIDx2YWx1ZT7Yr9mH2Yog2LPYp9iy2YXYp9mGINin2YHYstmI2K/ZhjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzMiIG5hbWU9Im9yZ3ZhbHVlX29yZ25hbWUiPgorICAgIDx2YWx1ZT7Yr9mH2Yog2LPYp9iy2YXYp9mGINin2YHYstmI2K/ZhjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzQiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW4iPgorICAgIDx2YWx1ZT7Yp9mG2LXYsdin2YE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc1IiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luIj4KKyAgICA8dmFsdWU+2KfZgdiy2YjYr9mGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3NiIgbmFtZT0ib3JndmFsdWVfdXNlcndpbiI+CisgICAgPHZhbHVlPnJlbW92ZSBvcmdhbmlzYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc3IiBuYW1lPSJvcmd2YWx1ZV91c2VybGlzdCI+CisgICAgPHZhbHVlPtmD2KfYsdio2LE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc4IiBuYW1lPSJvcmd2YWx1ZV91c2VybGlzdGFkZCI+CisgICAgPHZhbHVlPtin2LbYp9mB2Ycg2YPYp9ix2KjYsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzkiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJsaXN0ZGVsZXRlIj4KKyAgICA8dmFsdWU+2YPYp9ix2KjYsSDYrdiw2YE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgwIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luaGVhZGVyIj4KKyAgICA8dmFsdWU+2YPYp9ix2KjYsSDYp9mB2LLZiNiv2YY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgxIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luc2VhcmNoZmllbGQiPgorICAgIDx2YWx1ZT7Zg9in2LHYqNixINis2LPYqtis2YjZijwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODIiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5zZWFyY2hidG4iPgorICAgIDx2YWx1ZT7Zg9in2YjYtDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODMiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5zZWFyY2hyZXN1bHQiPgorICAgIDx2YWx1ZT7Zg9in2LHYqNixPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NCIgbmFtZT0ibG9naW53aW5fY2hvb3Nlb3JnYW5pc2F0aW9uIj4KKyAgICA8dmFsdWU+2K/Zh9mKINiz2KfYstmF2KfZhjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODUiIG5hbWU9ImxvZ2lud2luX2Nob29zZW9yZ2FuaXNhdGlvbmJ0biI+CisgICAgPHZhbHVlPtmI2LHZiNivPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NiIgbmFtZT0ibmF2aV9yb29tYWRtaW4iPgorICAgIDx2YWx1ZT7Zg9mG2YHYsdin2YbYsyDYp9i32KfZgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODciIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT7Zg9mG2YHYsdin2YbYsyDYp9i32KfZgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODgiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT7YtNmG2KfYs9mHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4OSIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPtmG2KfZhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTAiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT7Zh9mF2q/Yp9mG2Yo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkxIiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+2K/Zh9mKINiz2KfYstmF2KfZhjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTIiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT7ar9mB2Krar9mIINin2LfYp9mCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5MyIgbmFtZT0icm9vbXZhbHVlX25hbWUiPgorICAgIDx2YWx1ZT7Zhtin2YU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk0IiBuYW1lPSJyb29tdmFsdWVfdHlwZSI+CisgICAgPHZhbHVlPtiq2KfZitm+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NSIgbmFtZT0icm9vbXZhbHVlX2lzcHVibGljIj4KKyAgICA8dmFsdWU+2YfZhdqv2KfZhtmKPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NiIgbmFtZT0icm9vbXZhbHVlX2NvbW1lbnQiPgorICAgIDx2YWx1ZT7YqtmB2LPZitixPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NyIgbmFtZT0id2hpdGVib2FyZF9zYXZlaWNvbiI+CisgICAgPHZhbHVlPtiw2K7Zitix2Yc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk4IiBuYW1lPSJ3aGl0ZWJvYXJkX29wZW5pY29uIj4KKyAgICA8dmFsdWU+2q/YsNin2LHZiiDYqNin2LE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk5IiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbmhlYWRlciI+CisgICAgPHZhbHVlPtin2LIg2LDYrtmK2LHZhzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDAiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2ludGV4dCI+CisgICAgPHZhbHVlPtmB2KfZitmEINmG2KfZhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDEiIG5hbWU9ImZpbGVzIj4KKyAgICA8dmFsdWU+2YHYp9mK2YQg2YbYp9mFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMiIgbmFtZT0id2hpdGVib2FyZF9zYXZlYXN3aW5idG4xIj4KKyAgICA8dmFsdWU+2KfZhti12LHYp9mBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMyIgbmFtZT0id2hpdGVib2FyZF9zYXZlYXN3aW5idG4yIj4KKyAgICA8dmFsdWU+2LDYrtmK2LHZhzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDQiIG5hbWU9InJwY2Vycm9yd2luX2hlYWRlciI+CisgICAgPHZhbHVlPtiu2LfYpzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDUiIG5hbWU9ImxvYWR3bWxfaGVhZGVyIj4KKyAgICA8dmFsdWU+2q/YsNin2LHZiiDYqNin2LE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA2IiBuYW1lPSJsb2Fkd21sX21lc3NzbG9hZCI+CisgICAgPHZhbHVlPtmF2YjYttmI2Lkg2KjYp9ix2q/YsNin2LHZijwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDciIG5hbWU9ImxvYWR3bWxfbWVzc3N5bmMiPgorICAgIDx2YWx1ZT5zbnljaHJvbml6aW5nIGNsaWVudHMsIGNsaWVudHMgdG8gd2FpdDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA4IiBuYW1lPSJsb2FkaW1hZ2VfbWVzc2xvYWQiPgorICAgIDx2YWx1ZT7Yqti12YjZitix2Yog2YfYp9mKINiv2KfYr9mHINqv2LDYp9ix2Yog2KjYp9ixPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwOSIgbmFtZT0ibG9hZGltYWdlX21lc3NzeW5jIj4KKyAgICA8dmFsdWU+c255Y2hyb25pemluZyBjbGllbnRzLCBjbGllbnRzIHRvIHdhaXQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMCIgbmFtZT0ibG9hZHdtbF9jb25maXJtaGVhZGVyIj4KKyAgICA8dmFsdWU+2LTYr9mHINiq2LHYs9mK2YUg2YXYrdmK2Lcg2YjYttmI2K08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjExIiBuYW1lPSJsb2Fkd21sX2NvbmZpcm1tZXNzIj4KKyAgICA8dmFsdWU+Y2xlYXIgZHJhd2FyZWEsIGFsbCBkYXRhIG9uIHdoaXRlYm9hcmQgd2lsbCBiZSBsb3N0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMiIgbmFtZT0ibG9hZHdtbF9jb25maXJtbWVzczIiPgorICAgIDx2YWx1ZT7Zgdin2YrZhCDar9iw2KfYsdmKINio2KfYsSDYp9iyINmC2KjZhCDYqtir2KjZitiqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMyIgbmFtZT0ic2VuZF9pbnZpdGF0aW9uX2J0biI+CisgICAgPHZhbHVlPtmG2KfZhdmHINiv2LnZiNiqINin2LHYs9in2YQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE0IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5faGVhZGVyIj4KKyAgICA8dmFsdWU+2YbYp9mF2Ycg2K/YudmI2Kog2KfYsdiz2KfZhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTUiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+2YXZiNi22YjYuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTYiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9yZWNpcGllbnQiPgorICAgIDx2YWx1ZT7ar9mK2LHZhtiv2Yc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE3IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fbWVzc2FnZSI+CisgICAgPHZhbHVlPtm+2YrYp9mFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxOCIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX2J0bl9jb25maXJtIj4KKyAgICA8dmFsdWU+2KfYsdiz2KfZhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTkiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9idG5fY2FuY2VsIj4KKyAgICA8dmFsdWU+2KfZhti12LHYp9mBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyMCIgbmFtZT0ic2VuZF9jaGF0X3RleHRfYnRuIj4KKyAgICA8dmFsdWU+2KfYsdiz2KfZhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjEiIG5hbWU9Imludml0ZWRfdXNlcndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT7Zg9in2LHYqNixINiv2KfYr9mHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyMiIgbmFtZT0iaW52aXRlZF91c2Vyd2luX3N1YmplY3QiPgorICAgIDx2YWx1ZT7Zg9mG2YHYsdin2YbYsyDYp9mK2YYg2KjYsdin2Yog2LTZhdinINin2K7Yqti12KfYsSDZhtin2YU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIzIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fbG9naW4iPgorICAgIDx2YWx1ZT7Zhdiz2KrYudin2LEg2YbYp9mFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNCIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2ZpcnN0bmFtZSI+CisgICAgPHZhbHVlPtmG2KfZhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjUiIG5hbWU9Imludml0ZWRfdXNlcndpbl9sYXN0bmFtZSI+CisgICAgPHZhbHVlPtiu2KfZhtmI2KfYr9qv2Yog2YbYp9mFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNiIgbmFtZT0iaW52aXRlZF91c2Vyd2luX21haWwiPgorICAgIDx2YWx1ZT7Yp9mK2YXZitmEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNyIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2xhbmciPgorICAgIDx2YWx1ZT7Ystio2KfZhjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjgiIG5hbWU9Imludml0ZWRfdXNlcndpbl9lbnRlciI+CisgICAgPHZhbHVlPtmI2LHZiNivPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyOSIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2VudGVyIj4KKyAgICA8dmFsdWU+2q/YsNin2LHZiiDYqNin2LE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMwIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZW50ZXIiPgorICAgIDx2YWx1ZT7Zg9mG2YrYryDYtdio2LEg2YTYt9mB2Kct2KfYt9mE2KfYudin2Kog2q/YsNin2LHZiiDYqNin2LEg2K3Yp9mEINiv2LE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMxIiBuYW1lPSJ1c2VyX3JlZ2lzdGVyRmFsc2VQV0QiPgorICAgIDx2YWx1ZT7ZiNix2YjYryDYsdmF2LIg2KfYrti32KfYsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzIiIG5hbWU9InVzZXJfcmVnaXN0ZXJGYWxzZVBXREhlYWRlciI+CisgICAgPHZhbHVlPtmD2YbZitivINmI2KfYsdivINi52KjZiNixINix2YXYsiDYr9mIINmE2LfZgdinPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMyIgbmFtZT0idXNlcl9yZWdpc3Rlck1haWxFcnJvciI+CisgICAgPHZhbHVlPtin2YrZhdmK2YQg2KfYrti32KfYsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzQiIG5hbWU9InVzZXJfcmVnaXN0ZXJNYWlsRXJyb3JIZWFkZXIiPgorICAgIDx2YWx1ZT7Zg9ix2K/ZitivINmI2KfYsdivINi12K3ZititINmG2Kcg2b7Ys9iq2Yog2KLYr9ix2LM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM1IiBuYW1lPSJ1c2VyX3JlZ2lzdGVyU3VjY2VzcyI+CisgICAgPHZhbHVlPlJlZ2lzdHJhdGlvbiBDb21wbGV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzYiIG5hbWU9InVzZXJfcmVnaXN0ZXJTdWNjZXNzSGVhZGVyIj4KKyAgICA8dmFsdWU+2KfYs9iqINi02K/ZhyDYp9mK2KzYp9ivINi02YXYpyDYp9mD2KfZhtiqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzNyIgbmFtZT0idXNlcl9zaGFyaW5nX21lc3NhZ2UiPgorICAgIDx2YWx1ZT7YqNqv2LDYp9ix2YrYryDYp9i02KrYsdin2YMg2KjZhyDYsdinINiu2YjYryDYtdmB2K3ZhyDZhtmF2YrYqtmI2KfZhtmK2K8g2LTZhdinPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzOCIgbmFtZT0idXNlcl9zaGFyaW5nX21lc3NhZ2VIZWFkZXIiPgorICAgIDx2YWx1ZT7ZhdmF2YbZiNi5INqv2LDYp9ix2Yog2KfYtNiq2LHYp9mDINio2Yc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM5IiBuYW1lPSJ1c2VyX2RvU3RhcnRTY3JlZW5WaWV3ZXIiPgorICAgIDx2YWx1ZT7YtNmF2Kcg2LXZgdit2Ycg2q/YsNin2LHZiiDYp9i02KrYsdin2YM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQwIiBuYW1lPSJzY3JlZW5fd2FybkJhbmR3aWR0aCI+CisgICAgPHZhbHVlPkJhZCBCYW5kd2lkdGg6IFlvdSBoYXZlIG5vdCBiZWVuIGFibGUgdG8gc3luY3Jvbml6ZSB0aGUgU2NyZWVuLiBGcmFtZXMgd2lsbCBiZSBkcm9wcGVkLiBJZiB0aGlzIFdhcm5pbmcgaXMgc2hvd24gb2Z0ZW4geW91IGNvdWxkIGFzayB0aGUgbW9kZXJhdG9yIHRvIHJlZHVjZSB0aGUgUXVhbGl0eS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQxIiBuYW1lPSJzY3JlZW5fdXNlcmxhYmVsIj4KKyAgICA8dmFsdWU+Oti12YHYrdmHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0MiIgbmFtZT0id2hpdGVib2FyZF90YWJfcGFpbnQiPgorICAgIDx2YWx1ZT7Zg9ix2K/ZhiDZhtmC2KfYtNmKPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0MyIgbmFtZT0id2hpdGVib2FyZF90YWJfZG9jdW1lbnQiPgorICAgIDx2YWx1ZT7Ys9mG2K88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ0IiBuYW1lPSJ0YWJiYXJfY2hhdGljb24iPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ1IiBuYW1lPSJ0YWJiYXJfZmlsZXNpY29uIj4KKyAgICA8dmFsdWU+2YfYpyDZgdin2YrZhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDYiIG5hbWU9InRhYmJhcl9wYXJ0aWNpcGFudHNpY29uIj4KKyAgICA8dmFsdWU+2KfYudi22Kc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ3IiBuYW1lPSJzd2ZwcmVzZW50YXRpb25fbGlzdHNhdmVvcmlnIj4KKyAgICA8dmFsdWU+2KfYtdmE2Yog2LPZhtivINiv2KfZhtmE2YjYrzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDgiIG5hbWU9InN3ZnByZXNlbnRhdGlvbl9saXN0c2F2ZXBkZiI+CisgICAgPHZhbHVlPnBkZiDYs9mG2K8g2K/Yp9mG2YTZiNivPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0OSIgbmFtZT0ic3dmcHJlc2VudGF0aW9uX2xpc3Rsb2Fkc3dmIj4KKyAgICA8dmFsdWU+TG9hZCBQcmVzZW50YXRpb24gdG8gd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTAiIG5hbWU9Im5hdmltYWluX2NvbmZpZyI+CisgICAgPHZhbHVlPtio2YbYr9mKINm+2YrZg9ix2Yc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUxIiBuYW1lPSJ3aGl0ZWJvYXJkX2JvdW5kaW5nYm94X2RyYWciPgorICAgIDx2YWx1ZT7ZhdmI2LbZiNi5INin2YrZhiDZg9i02YrYr9mGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MiIgbmFtZT0id2hpdGVib2FyZF9ib3VuZGluZ2JveF9yZXNpemUiPgorICAgIDx2YWx1ZT7ZhdmI2LbZiNi5INin2YrZhiDYs9in2YrYsiDYqti62YrZitixPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MyIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfem9vbSI+CisgICAgPHZhbHVlPtiv2LHYtdivPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1NCIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfc2xpZGUiPgorICAgIDx2YWx1ZT7Zhdio2K/YpzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTUiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX2ZpcnN0c2xpZGUiPgorICAgIDx2YWx1ZT7Yp9mI2YQg2LXZgdit2Ycg2KjZhyDYqNin2LLar9i02Ko8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU2IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9wcmVzbGlkZSI+CisgICAgPHZhbHVlPtmC2KjZhNmKINi12YHYrdmHINio2Ycg2KjYp9iy2q/YtNiqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1NyIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfbmV4dHNsaWRlIj4KKyAgICA8dmFsdWU+2KjYudiv2Yog2LXZgdit2Ycg2KjZhyDYsdmB2KrZhjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTgiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX2xhc3RzbGlkZSI+CisgICAgPHZhbHVlPtii2K7YsSDYtdmB2K3ZhyDYqNmHINix2YHYqtmGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1OSIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfem9vbW1pbnVzIj4KKyAgICA8dmFsdWU+LS0g2LLZiNmFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MCIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfem9vbXBsdXMiPgorICAgIDx2YWx1ZT4rKyDYstmI2YU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYxIiBuYW1lPSJzYWx1dGF0aW9uX21yIj4KKyAgICA8dmFsdWU+TXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MiIgbmFtZT0ic2FsdXRhdGlvbl9taXNzIj4KKyAgICA8dmFsdWU+TXMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MyIgbmFtZT0ibmF2aW1haW5fY29uZmFkbWluIj4KKyAgICA8dmFsdWU+2YXZiNmC2LnZitiqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2NCIgbmFtZT0iY29uZnRhYmxlX2hlYWRlcklkIj4KKyAgICA8dmFsdWU+2LTZhtin2LPZhzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjUiIG5hbWU9ImNvbmZ0YWJsZV9oZWFkZXJrZXkiPgorICAgIDx2YWx1ZT7Ysdin2YfZhtmF2Kc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY2IiBuYW1lPSJjb25mYWRtaW5mb3JtX2hlYWRlciI+CisgICAgPHZhbHVlPtmF2YjZgti52YrYqjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjciIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWxrZXkiPgorICAgIDx2YWx1ZT7Ysdin2YfZhtmF2Kc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY4IiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsdXBkYXRlZCI+CisgICAgPHZhbHVlPtix2LPYp9mG2Yog2KjYsdmI2LIg2KLYrtix2YrZhjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjkiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWx1cGRhdGVkYnkiPgorICAgIDx2YWx1ZT7YqtmI2LPYtyDYtNiv2Ycg2LHZiNiyINio2Yc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjcwIiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsY29tbWVudCI+CisgICAgPHZhbHVlPtiq2YHYs9mK2LE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjcxIiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsa2V5Ij4KKyAgICA8dmFsdWU+2KjZh9inPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MiIgbmFtZT0idHVybm92ZXJsaXN0X21heHJlc3VsdHMiPgorICAgIDx2YWx1ZT7Zhdio2K/YpzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzMiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2hlYWRlciI+CisgICAgPHZhbHVlPtmD2KfYsdio2LE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc0IiBuYW1lPSJvcmdhbmlzYXRpb25fdXNlcnNpY29uZGVsZXRlIj4KKyAgICA8dmFsdWU+2LPYp9iy2YXYp9mGINin2LIg2YPYp9ix2KjYsSDYrdiw2YE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc1IiBuYW1lPSJvcmdhbmlzYXRpb25fdXNlcnNkZWxldGVkaGVhZCI+CisgICAgPHZhbHVlPtit2LDZgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzYiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2FscmVhZGFkZGVkIj4KKyAgICA8dmFsdWU+VGhpcyB1c2VyIGlzIGFscmVhZHkgbWVtYmVyIG9mIHRoaXMgb3JnYW5pc2F0aW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzciIG5hbWU9ImRhc2hib2FyZF9uZXdzaGVhZGVyIj4KKyAgICA8dmFsdWU+2K7YqNixPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3OCIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua3NoZWFkZXIiPgorICAgIDx2YWx1ZT5RdWlja2xpbmtzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3OSIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua0NvbmYiPgorICAgIDx2YWx1ZT7Zg9mG2YHYsdin2YbYsyDYqNmHINio2KfYstqv2LTYqjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODAiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtBdWRpdCI+CisgICAgPHZhbHVlPtmD2YbZgdix2KfZhtizINiq2KfZhNin2LEg2KjZhyDYqNin2LLar9i02Ko8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgxIiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rc3VwcG9ydCI+CisgICAgPHZhbHVlPtm+2LTYqtmK2KjYp9mG2Yog2Ygg2YfZhdmD2KfYsdmKPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MiIgbmFtZT0iZGFzaGJvYXJkX3F1aWNraG9tZXBhZ2V1cmwiPgorICAgIDx2YWx1ZT5odHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MyIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbWFpbGluZ2xpc3R1cmwiPgorICAgIDx2YWx1ZT5odHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvbWFpbC1saXN0cy5odG1sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4NCIgbmFtZT0iZGFzaGJvYXJkX3JlcG9ydGJ1Z3MiPgorICAgIDx2YWx1ZT4h2KfYtNmD2KfZhCDZitmDINi22KjYtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODUiIG5hbWU9ImRhc2hib2FyZF9yc3NsaXN0aXRlbWxpbmt0ZXh0Ij4KKyAgICA8dmFsdWU+2KjZiti02KrYsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODYiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtob21lcGFnZWxhYmVsIj4KKyAgICA8dmFsdWU+UHJvamVjdCB3ZWJzaXRlIChodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODciIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmttYWlsaW5nbGlzdGxhYmVsIj4KKyAgICA8dmFsdWU+VXNlciBtYWlsaW5nIGxpc3QgKGh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9tYWlsLWxpc3RzLmh0bWwpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4OCIgbmFtZT0ibG9naW5fcmVtZW1iZXJ1c2VyIj4KKyAgICA8dmFsdWU+UmVtZW1iZXIgTG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg5IiBuYW1lPSJtYWluX25hdmkiPgorICAgIDx2YWx1ZT7Zhdit2KrZiNinPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPtmF2YYg2K7Yp9mG2q/ZiiDYtdmB2K3ZhzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTEiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5NeSBTY2hlZHVsZWQgTWVldGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkyIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+TXkgU2NoZWR1bGVkIEV2ZW50czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTMiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT7Zh9mF2q/Yp9mG2Yog2q/Zgdiq2q/ZiNmKPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPtmH2YXar9in2YbZiiDar9mB2Krar9mIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NSIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPtmH2YXar9in2YbZiiDZiNmC2KfZiti5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NiIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPtiu2LXZiNi12Yog2YjZgtin2YrYuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTciIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT7Zh9mF2q/Yp9mG2Yog2YXYrdiq2YjYpzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTgiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT7Yrti12YjYtdmKINmF2K3YqtmI2KfZijwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTkiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT7YtNiu2LXZiiDZhdit2KrZiNin2Yo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAwIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMSIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPtmF2K/Zitix2YrYqjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDIiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT7Zhdiv2YrYsdmK2Kog2K/Ysdiu2YjYp9iz2Ko8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAzIiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+2LPZhtis2Yog2YbYuNixPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNCIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPtmB2KfZitmEINmK2YMg2KfZhtiq2K7Yp9ioPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNSIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPtiq2YbYuNmK2YXYp9iqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNiIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPtiv2YjYsdio2YrZhiDZiCDZhdmK2YPYsdmI2YHZhiDYqtmG2LjZitmF2KfYqjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDciIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT7Zhdin2YbZitiq2YjYsSDYtdmB2K3ZhyDYqtmG2LjZitmF2KfYqjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDgiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT7Yrtix2YjYrDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDkiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT7Yp9iq2KfZgiDYqNmHINio2KfYstqv2LTYqjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTAiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT7Yrtix2YjYrDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTEiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+2KfZitiv2J/Zg9ix2K/ZhyDZgdix2KfZhdmI2LQg2LHYpyDYrtmI2K/Yudio2YjYsSDYsdmF2LI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEyIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlJlc2V0IFBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMyIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7Yp9mK2YXZitmEINiq2YjYs9i3PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxNCIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5CeSBMb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTUiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+2LTZhdinINin2YrZhdmK2YQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE2IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPllvdXIgTG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE3IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlNlbmQgTWFpbCB3aXRoIHJlc2V0IExpbms8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE4IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPk5vIHN1Y2ggZW1haWwgYWRkcmVzcyB3YXMgZm91bmQuIE1ha2Ugc3VyZSB5b3UgZW50ZXIgdGhlIHNhbWUgZW1haWwgYWRkcmVzcyB5b3UgdXNlZCB0byBjcmVhdGUgeW91ciBhY2NvdW50LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTkiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGVpdGhlciBhIE1haWwgb3IgYSBVc2VybmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjAiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+VGhlcmUgaXMgbm8gVXNlciBjb25uZWN0ZWQgdG8gdGhpcyBVc2VybmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjEiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+VGhlIGVtYWlsIGNvbnRhaW5pbmcgYSBzcGVjaWFsIGxpbmsgaGFzIGJlZW4gc2VudCB0byB5b3VyIGVtYWlsIGFkZHJlc3MsIHBsZWFzZSBjaGVjayB5b3VyIG1haWxib3guIElmIHlvdSBzdGlsbCBoYXZlIG5vdCByZWNlaXZlZCBhIGVtYWlsLCBwbGVhc2UgYWRqdXN0IHlvdXIgZW1haWwgc3BhbSBzZXR0aW5ncyBhbmQgcmVzZW5kIGNvbmZpcm1hdGlvbiBlbWFpbC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIyIiBuYW1lPSJlcnJvcnR5cGUiPgorICAgIDx2YWx1ZT7Yrti32Kc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIzIiBuYW1lPSJlcnJvcnR5cGUiPgorICAgIDx2YWx1ZT7ZvtmK2KfZhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjQiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPkludmFsaWQgSGFzaC4gTm8gVXNlciBmb3VuZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI1IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5SZXNldCBZb3VyIFBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNiIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+2KfYsdiq2KjYp9i3INmC2LfYuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjciIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPti52KjZiNixINix2YXYsiDYqti62YrZitixPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyOCIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+2KzYr9mK2K8g2LnYqNmI2LEg2LHZhdiyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyOSIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+2LnYqNmI2LEg2LHZhdiyINmF2KzYr9ivINmI2LHZiNivPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzMCIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+VGhlIFBhc3N3b3JkcyB5b3UgZW50ZXJlZCB3ZXJlbid0IGlkZW50aWNhbC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMxIiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT40INin2LIg2KjZiti0INmK2Kcg2YPYp9ix2KfZg9iq2LEgNDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzIiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPlBhc3N3b3JkIHNldC4gWW91IGNhbiBsb2dpbiBub3cuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzMyIgbmFtZT0icnBjY2FsbGJhY2siPgorICAgIDx2YWx1ZT7Yp9iv2KfZhdmHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNCIgbmFtZT0icnBjZ2VuZXJhbGVycm9yIj4KKyAgICA8dmFsdWU+VW5rb3duIEVycm9yLiBQbGVhc2UgcmVwb3J0IHRoaXMgdG8geW91ciBTZXJ2aWNlLVRlYW0uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5Vc2VybmFtZSBub3QgZm91bmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM2IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPti12K3ZititINmG2Kcg2LnYqNmI2LEg2LHZhdiyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNyIgbmFtZT0ibG9nb3V0Ij4KKyAgICA8dmFsdWU+U3VjY2Vzc2Z1bGx5IExvZ2dlZCBvdXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM4IiBuYW1lPSJyZWdpc3RyYXRpb24iPgorICAgIDx2YWx1ZT5Gcm9udGVuZCBSZWdpc3RyYXRpb24gZGlzYWJsZWQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzOSIgbmFtZT0icmVnaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+2LXYrdmK2K0g2YbYpyDYp9mK2YXZitmEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MCIgbmFtZT0icmVnaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+2YPZhtmK2K8g2YjYp9ix2K8g2LHYpyDYr9mK2q/YsdmKINmB2KfZitmEINmG2KfZhSDZhNi32YHYpyDYp9iz2Kog2KrZg9ix2KfYsdmKINmB2KfZitmEINmG2KfZhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDEiIG5hbWU9ImZpbGVicm93c2VyIj4KKyAgICA8dmFsdWU+2KfYs9iqINmD2YjYqtin2Ycg2K7ZitmE2Yog2YHYp9mK2YQg2YbYp9mFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MiIgbmFtZT0iZmlsZWJyb3dzZXIiPgorICAgIDx2YWx1ZT7Zg9mG2YrYryDYsNiu2YrYsdmHINiq2YjYp9mG2YrYryDZhtmF2Yog2LHYpyDYotiv2LHYszwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDMiIG5hbWU9InVzZXJhZG1pbiI+CisgICAgPHZhbHVlPlVzZXIgYWRkZWQgYnV0IHlvdSBuZWVkIHRvIGFzc2lnbiB0aGlzIFVzZXIgdG8gYW4gT3JnYW5pc2F0aW9uLCBvdGhlcndpc2UgaGUgd29uJ3QgYmUgYWJsZSB0byBzaWduLWluLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDQiIG5hbWU9ImFkbWluZm9ybXMiPgorICAgIDx2YWx1ZT7YrNiv2YrYryDYttio2Lc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ1IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5ObyBGaWVsZCBmb3VuZCB3aXRoIHRoaXMgRmllbGRJZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ2IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5ObyBMYWJlbCBmb3VuZCBmb3IgdGhhdCBGaWVsZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ3IiBuYW1lPSJlcnJvcm1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZG1pbiBBdXRob3JpemF0aW9uIHJlcXVpcmVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0OCIgbmFtZT0ibWFpbm5hdmkiPgorICAgIDx2YWx1ZT5MYW5ndWFnZS1FZGl0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ5IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7Ystio2KfZhjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTAiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkxhYmVsLUlEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1MSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TGFiZWwtTmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTIiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPlZhbHVlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1MyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+RmllbGR2YWx1ZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU0IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5MYWJlbE5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU1IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5MYWJlbFZhbHVlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1NiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TGFiZWwtSUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU3IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5Zb3UgZGlkIG9ubHkgZGVsZXRlIHRoZSBMYWJlbCBOT1QgdGhlIEZpZWxkISBZb3UgY2Fubm90IGRlbGV0ZSB0aGUgRmllbGQsIGl0IG1heSBoYXMgTGFiZWxzIGluIG90aGVyIExhbmd1YWdlcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU4IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5JbnZhbGlkIExhYmVsaWQuIFRoZSBGaWVsZExhbmd1YWdlc3ZhbHVlc19JZCBjYW5ub3QgYmUgZm91bmQgaW4gdGhlIGRhdGFiYXNlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTkiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPllvdSBjYW5ub3QgZGVsZXRlIHRoaXMgRmllbGQuIFlvdSBjYW4gb25seSBkZWxldGUgTGFiZWxzIE5PVCBGaWVsZHMuIFRoZXJlIGlzIG5vIExhYmVsIGxvYWRlZCBhdCB0aGUgbW9tZW50LCB3ZXRoZXIgaXQgaXMgbm90IHNlbGVjdGVkIGFueSBGaWVsZCBvciB0aGVyZSBpcyBubyBMYWJlbCBmb3IgdGhpcyBMYW5ndWFnZSBmb3IgdGhhdCBGaWVsZCBkZWZpbmVkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjAiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPmV4cG9ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjEiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPllvdSBuZWVkIHRvIGxvZ291dCB0byBzZWUgYW55IGNoYW5nZXMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+2KzYr9mK2K8g2LLYqNin2YYg2KfZgdiy2YjYr9mGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+2LLYqNin2YYg2K3YsNmBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+2KzYr9mK2K8g2LLYqNin2YYg2KfZgdiy2YjYr9mGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+2YbYp9mFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+2LLYqNin2YYg2KfZgdiy2YjYr9mGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+2b7YtNiq2YrYqNin2YY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY4IiBuYW1lPSJ0dXJub3Zlcmxpc3QiPgorICAgIDx2YWx1ZT7Yp9mI2YTZitmGINio2Ycg2KjYp9iy2q/YtNiqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2OSIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+2YLYqNmE2Yog2KjZhyDYqNin2LLar9i02Ko8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzcwIiBuYW1lPSJ0dXJub3Zlcmxpc3QiPgorICAgIDx2YWx1ZT7YqNi52K/ZiiDYqNmHINix2YHYqtmGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MSIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+2KLYrtixINio2Ycg2LHZgdiq2YY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzcyIiBuYW1lPSJ2aWRlb2JveCI+CisgICAgPHZhbHVlPtmD2KfYsdio2LEg2q/Zgdiq2q/ZiNmKIChCeSBjbGlja2luZyBoZXJlIHlvdSBjYW4gZ2l2ZSBleGNsdXNpdmUgYXVkaW8gLyBtdXRlIHRoZSBtaWNyb3Bob25lIG9mIG90aGVycyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzczIiBuYW1lPSJ2aWRlb2JveCI+CisgICAgPHZhbHVlPti12K/YpyDZg9ix2K/ZhiDYrtin2YXZiNi0L9ix2YjYtNmGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3NCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+2LPZitiz2KrZhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzUiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPti02YXYpyDYqtmG2LjZitmF2KfYqjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzYiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPtiz2YTYp9mFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3NyIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+2LTZhdinINmG2YXZiNiv2KfYsSDZiNmK2LHYp9mK2LQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc4IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT462KzYr9mK2K8g2b7Zitin2YU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc5IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT7YrNiv2YrYryDYqti12YjZitixINqv2LDYp9ix2Yog2KjYp9ixPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4MCIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5Vc2VyZGF0YSAtIEV4cG9ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODEiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+2KjZhtiv2Yog2LfYqNmC2Ycg2YfZhdmHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4MiIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5zdGFydCBleHBvcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgzIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPtio2YbYr9mKINi32KjZgtmHINio2YjYs9mK2YTZhzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODQiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+c3RhcnQgZXhwb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NSIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT7Zg9in2LHYqNixINiv2KfYr9mHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NiIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT7Zg9in2LHYqNixINin2YbYqtiu2KfYqDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODciIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPtin2YfZhdmK2Ko8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg4IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5FeHBvcnQgdG8gWE1MIC0gVGhlc2UgZmlsZXMgY2FuIGJlIHVzZWQgdG86IC0gQ29udHJpYnV0ZSB0byB0aGUgcHJvamVjdCAtIEltcG9ydCBpbnRvIGFub3RoZXIgU3lzdGVtIC0gQmFja3VwIC0gQ3VzdG9taXphdGlvbiAtIFB1dCBpdCBpbnRvIHRoZSBsYW5ndWFnZS1kaXJlY3RvcnkgZm9yIHlvdXIgbmV4dCBpbnN0YWxsYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg5IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5DaG9vc2UgYSBsYW5ndWFnZSBmaWxlIHRvIGltcG9ydC4gQ2hvb3NlIHRoZSByaWdodCBMYW5nYXVnZSBmcm9tIHRoZSBDb21ib2JveCEgTm8gbWF0dGVyIHdoYXQgdGhlIG5hbWUgb2YgdGhlIGZpbGUgaXMsIGl0IHdpbGwgYmUgaW1wb3J0ZWQgaW50byB0aGlzIGxhbmd1YWdlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTAiIG5hbWU9ImltcG9ydHdpbmRvdyI+CisgICAgPHZhbHVlPtmB2KfZitmEINin2YbYqtiu2KfYqDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTEiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT7Yp9iyINiw2K7Zitix2Yc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkyIiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+OtmG2KfZhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTMiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT462KrZiNi22YrYrTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTQiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT7YsNiu2YrYsdmHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+2KjYp9uM2q/Yp9mG24w8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk2IiBuYW1lPSJyZWNvcmRlciI+CisgICAgPHZhbHVlPlJlY29yZGluZ3MgVmlld2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NyIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+UmVjb3JkaW5ncyBvZiBwdWJsaWMgYW5kIHByaXZhdGUgUm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk4IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT462YPYp9ix2KjYsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTkiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPjrZvtmK2YjYs9iq2YY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAwIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAxIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT462KfYt9in2YIg2KfZitmGINiv2LEg2YPYp9ix2KjYsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDIiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPtio2YrZhtmKINio2KfYsjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDMiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPlRoaXMgUm9vbSBpcyBGdWxsLiBUcnkgYWdhaW4gaW4gYSBmZXcgbWludXRlcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA0IiBuYW1lPSJyb29tc0xpc3QiPgorICAgIDx2YWx1ZT5jbGljayBvbiBhIHJvb20gdG8gZ2V0IGRldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA1IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5DaGF0IHdpdGggdGhlIHVzZXJzIGluIHRoaXMgUm9vbTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA2IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT462KfYt9in2YI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA3IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT462KfYt9in2YIg2K/YsSDZg9in2LHYqNixPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwOCIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+Otin2KjYqtiv2Kcg2KfYsjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDkiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPnBsYXkgcmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMCIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+Oti32YjZhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTEiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPjrYqtin2LHZitiuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMiIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+UmVjb3JkZXIgTW9kZSEgWW91IGNhbm5vdCBjaGFuZ2UgYW55IHZhbHVlcywgdGhpcyBpcyBhIHJlY29yZGVkIEZpbGUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMyIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+UGxheSB0aGlzIHJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTQiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPtmF2YPYqy88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE1IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT7Yttio2Lcg2LTYsdmI2Lk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE2IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT7Yttio2Lcg2KrZiNmC2YE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE3IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT462LbYqNi3PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxOCIgbmFtZT0icmVjb3JkX2Vycm9yX21zZyI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGFscmVhZHkgc29tZWJvZHkgcmVjb3JkaW5nIGF0IHRoZSBtb21lbnQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxOSIgbmFtZT0icmVjb3JkX21lc3NhZ2UiPgorICAgIDx2YWx1ZT7Zg9in2LHYqNixINiq2YjYs9i3Idi22KjYtzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjAiIG5hbWU9InJlY29yZF9jYW5jZWwiPgorICAgIDx2YWx1ZT7Yp9mG2LXYsdin2YE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIxIiBuYW1lPSJyZWNvcmRfY2FuY2FsX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5SZWNvcmRpbmcgd2lsbCBiZSBjYW5jZWxlZCBhbmQgbm90IHNhdmVkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjIiIG5hbWU9ImNhbmNlbF9kaWFsb2dfcmVzdW1lIj4KKyAgICA8dmFsdWU+2YXYt9in2YTYqCDYrtmE2KfYtdmHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyMyIgbmFtZT0iY2FuY2VsX2RpYWxvZ19yZXN1bWVfdG9vbHRpcCI+CisgICAgPHZhbHVlPti02YjYryDYttio2Lcg2YXYt9in2YTYqCDYrtmE2KfYtdmHINmIINi02YjYryDYqNiz2KrZhyDZvtmG2KzYsdmHINin2YrZhjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjQiIG5hbWU9InBhaW50dG9vbHNfZWxsaXBzZV9jb2xvciI+CisgICAgPHZhbHVlPtiu2Lcg2LHZhtqvINiq2LrZitmK2LE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI1IiBuYW1lPSJjb2xvcnBpY2tlcl9oZWFkIj4KKyAgICA8dmFsdWU+2LHZhtqvINin2YbYqtiu2KfYqDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjYiIG5hbWU9InBhaW50dG9vbHNfbGluZV9kaXNhYmxlIj4KKyAgICA8dmFsdWU+2K7YtyDYsdmG2q8g2LPYp9iu2KrZhiDYqtmI2KfZhtin2YrZiiDYudiv2YUgL9iq2YjYp9mG2KfZitmKPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyNyIgbmFtZT0icGFpbnR0b29sc19maWxsX2Rpc2FibGUiPgorICAgIDx2YWx1ZT7YsdmG2q8g2LPYt9mEINiz2KfYrtiq2YYg2KrZiNin2YbYp9mK2Yog2LnYr9mFL9iq2YjYp9mG2KfZitmKPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyOCIgbmFtZT0icGFpbnR0b29sc19saW5lX2Rpc2FibGUiPgorICAgIDx2YWx1ZT7Yrti3INix2YbaryDYs9in2K7YqtmGINiq2YjYp9mG2KfZitmKINi52K/ZhS/YqtmI2KfZhtin2YrZijwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjkiIG5hbWU9ImNoYW5nZV93aWR0aF9hcnJvd19kb3duX3NsaWRlciI+CisgICAgPHZhbHVlPtiu2Lcg2LbYrtin2YXYqiDYqti62YrZitixPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzMCIgbmFtZT0iY2xvc2Vfc21hbGxfcG9wdXBzIj4KKyAgICA8dmFsdWU+2KjYs9iq2YY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMxIiBuYW1lPSJwYWludF90b29sX2xldHRlciI+CisgICAgPHZhbHVlPtmB2YjZhtiqINiq2LrZitmK2LE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMyIiBuYW1lPSJyZWNvcmRpbmdzbGlzdF9kZWxldGUiPgorICAgIDx2YWx1ZT7Yttio2Lcg2K3YsNmBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzMyIgbmFtZT0icmVjb3JkaW5nc2xpc3RfcmVjb3JkZWRCeUd1ZXN0Ij4KKyAgICA8dmFsdWU+2YXZh9mF2KfZhjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzQiIG5hbWU9InJlY29yZGluZ3NsaXN0X3JlY29yZGVkYnkiPgorICAgIDx2YWx1ZT462KjZiNiz2YrZhNmHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNSIgbmFtZT0icmVjb3JkaW5nc190YWJsZV9oZWFkX25hbWUiPgorICAgIDx2YWx1ZT7Zhtin2YU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM2IiBuYW1lPSJyZWNvcmRpbmdzX3RhYmxlX2hlYWRfcm9vbSI+CisgICAgPHZhbHVlPtin2LfYp9mCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNyIgbmFtZT0icmVjb3JkaW5nc190YWJsZV9oZWFkX2RhdGUiPgorICAgIDx2YWx1ZT7Yqtin2LHZitiuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzOCIgbmFtZT0icmVjb3JkX3N0YXJ0X2NhbmNlbCI+CisgICAgPHZhbHVlPtin2YbYtdix2KfZgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzkiIG5hbWU9InJlY29yZF9zdGFydF9zdGFydCI+CisgICAgPHZhbHVlPti02LHZiNi5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MCIgbmFtZT0iZmlsZXNicm93c2VyX3RhYmxlX2hlYWRfbmFtZSI+CisgICAgPHZhbHVlPtmG2KfZhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDEiIG5hbWU9ImZpbGVzYnJvd3Nlcl90YWJsZV9oZWFkX2RhdGUiPgorICAgIDx2YWx1ZT7Yqtin2LHZitiuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MiIgbmFtZT0iY2hhdF9jbGVhcl9oaXN0b3J5Ij4KKyAgICA8dmFsdWU+2LPYsdmI2LEg2K3YsNmBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MyIgbmFtZT0iY2hhdF9vdmVyYWxsX2hlYWRlciI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDQiIG5hbWU9ImNoYXRfc2VuZF9idG4iPgorICAgIDx2YWx1ZT7ZvtmK2KfZhSDYp9ix2LPYp9mEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NSIgbmFtZT0iY2hhdF9lbW90X2J0biI+CisgICAgPHZhbHVlPtin2K3Ys9in2LPYp9iqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NiIgbmFtZT0iY2hhdF9lbW90X3dpbiI+CisgICAgPHZhbHVlPtin2K3Ys9in2LPYp9iqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NyIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzIj4KKyAgICA8dmFsdWU+Q2hvb3NlIFB1Ymxpc2hlZCBEZXZpY2VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0OCIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2NvbWJvIj4KKyAgICA8dmFsdWU+2KjYtdix2Yog2Ygg2LPZhdi52Yo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ5IiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT7Ys9mF2LnZiiDZgdmC2Lc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUwIiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT7YqNi12LHZiiDZgdmC2Lc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUxIiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT7YqNi12LHZiiDZhtmHL9iz2YXYudmKINmG2Yc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUyIiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfaW5mb190ZXh0Ij4KKyAgICA8dmFsdWU+2KjYtdix2Yog2YbZhy/Ys9mF2LnZiiDZhtmHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1MyIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9tb25kYXkiPgorICAgIDx2YWx1ZT7Yr9mI2LTZhtio2Yc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU0IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3R1ZXNkYXkiPgorICAgIDx2YWx1ZT7YtNmG2KjZhyDYs9mHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV93ZWRuZXNkYXkiPgorICAgIDx2YWx1ZT7YtNmG2KjZhyDahtmH2KfYsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTYiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfdGh1cnNkYXkiPgorICAgIDx2YWx1ZT7YtNmG2KjZhyDZvtmG2Kw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU3IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX2ZyaWRheSI+CisgICAgPHZhbHVlPtis2YXYudmHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1OCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9zYXR1cmRheSI+CisgICAgPHZhbHVlPti02YbYqNmHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1OSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9zdW5kYXkiPgorICAgIDx2YWx1ZT7YtNmG2KjZhyDZitmDPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9tb25kYXkiPgorICAgIDx2YWx1ZT7YtNmG2KjZhyDYr9mIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9UdWVzZGF5TGFiZWwiPgorICAgIDx2YWx1ZT7YtNmG2KjZhyDYs9mHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MiIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9XZWRuZXNkYXlMYWJlbCI+CisgICAgPHZhbHVlPti02YbYqNmHINqG2YfYp9ixPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MyIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9UaHVyc2RheUxhYmVsIj4KKyAgICA8dmFsdWU+2LTZhtio2Ycg2b7ZhtisPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9GcmlkYXlMYWJlbCI+CisgICAgPHZhbHVlPtis2YXYudmHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9TYXR1cmRheUxhYmVsIj4KKyAgICA8dmFsdWU+2LTZhtio2Yc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY2IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1N1bmRheUxhYmVsIj4KKyAgICA8dmFsdWU+2LTZhtio2Ycg2YrZgzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjciIG5hbWU9ImNhbGVuZGFyX3dlZWtudW1iZXJfaGVhZGVyIj4KKyAgICA8dmFsdWU+2YfZgdiq2q/ZiiDYqtmC2YjZitmFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2OCIgbmFtZT0iY2FsZW5kYXJfd2Vla251bWJlcl9oZWFkZXJUb29sdGlwIj4KKyAgICA8dmFsdWU+2YfZgdiq2q/ZiiDYqtmC2YjZitmFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2OSIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPtqY2KfZhtmI2YrZhzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzAiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT7ZgdmI2LHZitmHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3MSIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPtmF2KfYsdizPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3MiIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPtii2YjYsdmK2YQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDczIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+2YXZhzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzQiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT7amNmI2KbZhjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzUiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT7YrNmI2YTYp9mKPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3NiIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPtii2q/ZiNiz2Ko8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc3IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+2LPZvtiq2KfZhdio2LE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc4IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+2KfZg9iq2KjYsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzkiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT7ZhtmI2KfZhdio2LE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgwIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+2K/Ys9in2YXYqNixPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4MSIgbmFtZT0iY2FsZW5kYXJ3aW5faGVhZGVyIj4KKyAgICA8dmFsdWU+2KrZgtmI2YrZhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODIiIG5hbWU9InJvb21hZG1pbl9sYWJlbE51bWJlck9mUGFydGljaXBhbnRzIj4KKyAgICA8dmFsdWU+2YPZhtmG2K/ar9in2YYg2LTYsdmD2Ko8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgzIiBuYW1lPSJyb29tVmFsdWVfYWR2YW5jZWRTZXR0aW5ncyI+CisgICAgPHZhbHVlPlNob3cgTGF5b3V0IFNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NCIgbmFtZT0icm9vbUFkbWluX2xheW91dF92aWRlb1giPgorICAgIDx2YWx1ZT5YIHwgWTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODUiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfdmlkZW9ZIj4KKyAgICA8dmFsdWU+2LnYsdi2L9i32YjZhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODYiIG5hbWU9InJvb21BZG1pbl9sYXlvdXQiPgorICAgIDx2YWx1ZT5WaWRlby1Db250YWluZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg3IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X21vZCI+CisgICAgPHZhbHVlPk1vZGVyYXRpb24tQ29udGFpbmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4OCIgbmFtZT0icm9vbUFkbWluX2xheW91dF9tb2RfcG9zIj4KKyAgICA8dmFsdWU+WDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODkiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPldoaXRlYm9hcmQtQ29udGFpbmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5MCIgbmFtZT0icm9vbUFkbWluX2xheW91dF93aGl0ZWJvYXJkX3Nob3ciPgorICAgIDx2YWx1ZT7Ys9in2K7YqtmGINmC2KfYr9ixPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5MSIgbmFtZT0icm9vbUFkbWluX2xheW91dF93aGl0ZWJvYXJkX3BvcyI+CisgICAgPHZhbHVlPlggfCBZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5MiIgbmFtZT0icm9vbUFkbWluX2xheW91dF93aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+V2lkdGggfCBIZWlnaHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkzIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X2ZpbGVzIj4KKyAgICA8dmFsdWU+RmlsZXMsQ2hhdCxQYXJ0aWNpcGFudHMgLSBDb250YWluZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk0IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X2ZpbGVzX3Nob3ciPgorICAgIDx2YWx1ZT7Ys9in2K7YqtmGINmC2KfYr9ixPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NSIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlc19wb3MiPgorICAgIDx2YWx1ZT5YIHxZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NiIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlcyI+CisgICAgPHZhbHVlPti52LHYti/Yt9mI2YQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk3IiBuYW1lPSJtb2RlcmF0b3JfZ29uZV9tZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIE1vZGVyYXRvciBoYXMgbGVmdCB0aGUgUm9vbS4gTm8gb25lIGlzIHByZXNlbnRpbmcgYXQgdGhlIE1vbWVudC4gWW91IGNvdWxkIGFwcGx5IGZvciBNb2RlcmF0aW9uIG9yIHdhaXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5OCIgbmFtZT0ibW9kZXJhdG9yX21lc3NhZ2VfZXZlbnRfbm9fbW9kIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgbm8gTW9kZXJhdG9yIGluIHRoaXMgUm9vbSwgYnV0IHRoZXJlIGFyZSBzb21lIFBhcnRpY2lwYW50cy4gWW91IGhhdmUgdG8gYXBwbHkgZm9yIE1vZGVyYXRpb24gb3Igd2FpdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk5IiBuYW1lPSJmZWVkYmFja190ZW1wbGF0ZV9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+RmVlZGJhY2sgJEFQUF9OQU1FPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwMCIgbmFtZT0iaW52aXRhdGlvbl90ZW1wbGF0ZV9oZWFkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIC0gSW52aXRhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDEiIG5hbWU9Imludml0YXRpb25fdGV4dF9mcm9tIj4KKyAgICA8dmFsdWU+2YPYp9ix2KjYsSDYqNix2KfZiiDZvtmK2KfZhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDIiIG5hbWU9Imludml0YXRpb25fdGV4dF9tZXNzYWdlIj4KKyAgICA8dmFsdWU+Otm+2YrYp9mFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwMyIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X2NsaWNrX3RleHQiPgorICAgIDx2YWx1ZT462YPZhtmK2K8g2YPZhNmK2YMg2YPZhtmG2K/ar9in2YYg2LTYsdmD2Kog2KjYpyDar9mB2Krar9mIINio2LHYp9mKINmE2YrZhtmDINin2YrZhiDYr9ixPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwNCIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X2NsaWNrX3RleHRfbGluayI+CisgICAgPHZhbHVlPtmD2YbZitivINmD2YTZitmDINix2Kcg2KfZitmG2KzYpyDYp9i32KfZgiDYqNmHINmI2LHZiNivINio2LHYp9mKPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwNSIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X2NsaWNrX3RleHRfaGVscCI+CisgICAgPHZhbHVlPmlmIHlvdSBoYXZlIHByb2JsZW1zIHdpdGggdGhlIGxpbmssIHBsZWFzZSBjb3B5IGFuZCBwYXN0ZSB0aGlzIHRvIHlvdXIgYnJvd3Nlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA2IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSBTaWduVXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA3IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfaGVhZDIiPgorICAgIDx2YWx1ZT462LTZhdinINmD2KfYsdio2LEg2K/Yp9iv2Yc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA4IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfdXNlcm5hbWUiPgorICAgIDx2YWx1ZT5Mb2dpbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA5IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfcGFzcyI+CisgICAgPHZhbHVlPjrYudio2YjYsSDYsdmF2LI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTEwIiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfbWFpbCI+CisgICAgPHZhbHVlPjrYp9mK2YXZitmEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxMSIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X2J5ZSI+CisgICAgPHZhbHVlPiRBUFBfTkFNRS1UZWFtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxMiIgbmFtZT0icmVnaXN0ZXJfbWFpbF9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIFNpZ24tVXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTEzIiBuYW1lPSJyZXNldF9wYXNzd29yZF90ZW1wbGF0ZV9oZWFkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIC0gUmVzZXQgUGFzc3dvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE0IiBuYW1lPSJyZXNldF9wYXNzd29yZF90ZW1wbGF0ZV90ZXN0X2xpbmsiPgorICAgIDx2YWx1ZT5DbGljayBvbiB0aGlzIGxpbmsgdG8gZW50ZXIgYSBuZXcgcGFzc3dvcmQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNSIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfdGV4dDJfbGluayI+CisgICAgPHZhbHVlPtmD2YbZitivINmD2YTZitmDINin2YrZhtis2Kcg2KzYr9mK2K8g2LnYqNmI2LEg2LHZhdiyINmI2LHZiNivINio2LHYp9mKPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNiIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfdGV4dDNfbGluayI+CisgICAgPHZhbHVlPmlmIHlvdSBoYXZlIHByb2JsZW1zIHdpdGggdGhlIGxpbmssIHBsZWFzZSBjb3B5IGFuZCBwYXN0ZSB0aGlzIHRvIHlvdXIgYnJvd3Nlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE3IiBuYW1lPSJyZXNldF9wYXNzd29yZF9tYWlsX3N1YmplY3QiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgUGFzc3dvcmQgUmVzZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE4IiBuYW1lPSJkYXRlUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT4oZGQubW0ueXl5eSkyNC8xMi8yMDAxINmF2KvYp9mEINi52YbZiNin2YYg2KjZhyDZg9mG2YrYryDZiNin2LHYryDYtdit2YrYrSDYqtin2LHZitiuINmK2YMg2YTYt9mB2Kc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE5IiBuYW1lPSJlbWFpbFJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+bmFtZUBtYWlsLmNvbSDZhdir2KfZhCDYudmG2YjYp9mGINio2Ycg2YPZhtmK2K8g2YjYp9ix2K8g2LXYrdmK2K0g2KfZitmF2YrZhCDZitmDINmE2LfZgdinPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyMCIgbmFtZT0iZmxvYXRSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIEZsb2F0LU51bWJlciwgZm9yIGV4YW1wbGUgMS4wMDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjEiIG5hbWU9Im51bWJlclJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+MTAwINmF2KvYp9mEINi52YbZiNin2YYg2KjZhyDZg9mG2YrYryDZiNin2LHYryDYudiv2K8g2YrZgyDZhNi32YHYpzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjIiIG5hbWU9InBob25lUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT4rKzQ5MDEyMzEyMzEyM9mF2KvYp9mEINi52YbZiNin2YYg2KjZhyDZg9mG2YrYryDZiNin2LHYryDYtdit2YrYrSDYqtmE2YHZhiDZitmDINmE2LfZgdinPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyMyIgbmFtZT0idGltZVJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+KGhoOm1tKTEyOjIzINmF2KvYp9mEINi52YbZiNin2YYg2KjZhyDZg9mG2YrYryDZiNin2LHYryDYtdit2YrYrSDYstmF2KfZhiDZitmDINmE2LfZgdinPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3ciPgorICAgIDx2YWx1ZT7Yudio2YjYsSDYsdmF2LIg2K3Zgdin2LjYqjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjUiIG5hbWU9Imludml0YXRpb25fd2luZG93X3Bhc3N3b3JkTGFiZWwiPgorICAgIDx2YWx1ZT7Yudio2YjYsSDYsdmF2LI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI2IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZExhYmVsIj4KKyAgICA8dmFsdWU+2K/ZiNix2Ycg2KfYudiq2KjYp9ixPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNyIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWQiPgorICAgIDx2YWx1ZT7Zhtin2b7YsNmK2LEg2b7Yp9mK2KfZhjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjgiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkIj4KKyAgICA8dmFsdWU+2K/ZiNix2Ycg2YrZgzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjkiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkIj4KKyAgICA8dmFsdWU+2KfZiNmEINiv2YjYsdmHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWRGcm9tTGFiZWwiPgorICAgIDx2YWx1ZT462KfYsiDYp9i52KrYqNin2LE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMxIiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZFRvTGFiZWwiPgorICAgIDx2YWx1ZT462KrYpyDYp9i52KrYqNin2LE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMyIiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd19NYWlsU3ViamVjdCI+CisgICAgPHZhbHVlPtii2YbZhNin2YrZhiDZg9mE2KfYsyDYqNmHINiv2LnZiNiqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMyIgbmFtZT0iaW52aXRhdGlvbl9lcnJvciI+CisgICAgPHZhbHVlPk5vdCBJbnZpdGF0aW9uIGF2YWlsaWJsZSBmb3IgdGhpcyBJbnZpdGF0aW9uLUNvZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM0IiBuYW1lPSJpbnZpdGF0aW9uX2Vycm9yIj4KKyAgICA8dmFsdWU+VGhlIEludml0YXRpb24gd2FzIGFscmVhZHkgdXNlZC4gVGhpcyB0eXBlIG9mIEludml0YXRpb24gY2Fubm90IGJlIHJlLXVzZWQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzNSIgbmFtZT0iaW52aXRhdGlvbl9lcnJvciI+CisgICAgPHZhbHVlPlRoaXMgSW52aXRhdGlvbi1Db2RlIGlzIG5vdCB2YWxpZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM2IiBuYW1lPSJpbnZpdGF0aW9uX3Bhc3MiPgorICAgIDx2YWx1ZT462LnYqNmI2LEg2LHZhdiyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzNyIgbmFtZT0iaW52aXRhdGlvbl9wYXNzX2J0biI+CisgICAgPHZhbHVlPkNoZWNrIFBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzOCIgbmFtZT0iaW52aXRhdGlvbl9wYXNzX2Vycm9yIj4KKyAgICA8dmFsdWU+SW52YWxpZCBQYXNzd29yZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM5IiBuYW1lPSJCcm93c2VyIj4KKyAgICA8dmFsdWU+2q/YsNin2LTYqtmGINin2KzYsdinINio2Yc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQwIiBuYW1lPSJhdWRpb192aWRlbyI+CisgICAgPHZhbHVlPtio2LXYsdmKIC/Ys9mF2LnZiiDYqNmI2K/ZhiDZhdi32KfYqNmCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0MSIgbmFtZT0iZXJyb3JDb2RlX2ludmFsaWRTZXNzaW9uIj4KKyAgICA8dmFsdWU+TG9naW4gd2FzIGNvcnJlY3QsIGJ1dCB0aGUgU2Vzc2lvbiB5b3UgdHJpZWQgaXMgbm90IGFjdGl2ZSBvciBzdG9yZWQgb24gdGhlIFNlcnZlci4gWW91IGhhdmUgdG8gZ2V0IGEgbmV3IFNlc3Npb25JZCBhbmQgcmV0cnkgbG9naW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0MiIgbmFtZT0iZXJyb3Jjb2RlX3NldFVzZXJPYmplY3QiPgorICAgIDx2YWx1ZT5UaGUgU2Vzc2lvbklkIGlzIG5vdCBsb2dnZWRpbiBvciBoYXMgbm8gQWRtaW4gcmlnaHRzLiBUaGUgU09BUCBHYXRld2F5IG5lZWRzIGFuIFVzZXIgd2l0aCBBZG1pbi1SaWdodHMgdG8gZW1iZWQgbmV3IFVzZXJzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDMiIG5hbWU9ImVycm9yY29kZV9sb2dpbkJ5UmVtb3RlVXNlciI+CisgICAgPHZhbHVlPlRoaXMgU2Vzc2lvbiBoYXMgbm8gUmVtb3RldXNlci1EYXRhIGNvbm5lY3RlZC4gV2V0aGVyIHlvdSBkaWQgbm90IGNhbGwgdGhlIFNPQVAtR2F0ZXdheSBiZWZvcmUgYWNjZXNzaW5nIHRoZSBBcHBsaWNhdGlvbiBvciB5b3UgYXJlIHVzbmlnIGEgd3JvbmcgU2Vzc2lvbi1JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDQiIG5hbWU9ImRlYnVnX21lc3NhZ2VfcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+VGhlIHJlY29yZGVyIGlzIGN1cnJlbnRseSBCZXRhITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDUiIG5hbWU9InByb3BlcnR5UGFuZWxYVmFsdWUiPgorICAgIDx2YWx1ZT54PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0NiIgbmFtZT0icHJvcGVydHlQYW5lbFhWYWx1ZUxhYmVsIj4KKyAgICA8dmFsdWU+eC1heGlzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0NyIgbmFtZT0icHJvcGVydHlQYW5lbFlWYWx1ZSI+CisgICAgPHZhbHVlPnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ4IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWVZhbHVlTGFiZWwiPgorICAgIDx2YWx1ZT55LWF4aXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ5IiBuYW1lPSJwcm9wZXJ0eVBhbmVsV2lkdGhWYWx1ZSI+CisgICAgPHZhbHVlPnc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUwIiBuYW1lPSJwcm9wZXJ0eVBhbmVsV2lkdGhWYWx1ZUxhYmVsIj4KKyAgICA8dmFsdWU+d2lkdGg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUxIiBuYW1lPSJwcm9wZXJ0eVBhbmVsSGVpZ2h0VmFsdWUiPgorICAgIDx2YWx1ZT5oPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1MiIgbmFtZT0icHJvcGVydHlQYW5lbEhlaWdodFZhbHVlTGFiZWwiPgorICAgIDx2YWx1ZT5oZWlnaHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUzIiBuYW1lPSJwcm9wZXJ0eU9wYWNpdHlTbGlkZXIiPgorICAgIDx2YWx1ZT5DaGFuZ2UgVHJhbnNwYXJlbmN5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1NCIgbmFtZT0iYnJvd3Nlck9wZW4iPgorICAgIDx2YWx1ZT5Ccm93c2VyIE9wZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU1IiBuYW1lPSJicm93c2VyQ2xvc2UiPgorICAgIDx2YWx1ZT5Ccm93c2VyIENsb3NlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1NiIgbmFtZT0iY29ubmVjdGlvbkxvc3RNZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIENvbm5lY3Rpb24gdG8gdGhlIFNlcnZlciBpcyBsb3N0LiBZb3UgbmVlZCB0byByZWxvYWQgdGhlIEFwcGxpY2F0aW9uIG9yL2FuZCBjaGVjayB5b3VyIE5ldHdvcmsuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1NyIgbmFtZT0iNTU3Ij4KKyAgICA8dmFsdWU+UG9pbnRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTgiIG5hbWU9InN5bmMgbWVzc2FnZSBoZWFkZXIiPgorICAgIDx2YWx1ZT5TeW5jaHJvbml6aW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1OSIgbmFtZT0iU3luY2hyb25pemluZyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3luY2hyb25pemluZyBVc2VycywgcGxlYXNlIHdhaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYwIiBuYW1lPSJleHBvcnRUb1NWRyI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O0Rvd25sb2FkIGFzIFNWRyZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYxIiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7RG93bmxvYWQgYXMgUE5HJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjIiIG5hbWU9ImV4cG9ydFRvSW1hZ2UiPgorICAgIDx2YWx1ZT4mbHQ7dSZndDtEb3dubG9hZCBhcyBKUEcmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MyIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O0Rvd25sb2FkIGFzIFBERiZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY0IiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7RG93bmxvYWQgYXMgVElGJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjUiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5SZW1pbmRlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY2IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+Q2F0ZWdvcnk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2NyIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPlJlcGV0aXRpb246PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2OCIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPm5vbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY5IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+TG9jYXRpb246PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MCIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPlN0YXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkVuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzIiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5UaXRsZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTczIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+Q29tbWVudDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc0IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+SW52aXRlIFBlb3BsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzUiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5EYWlseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzYiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5Nb250aGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NyIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPlllYXJseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzgiIG5hbWU9ImFsZXJ0Ij4KKyAgICA8dmFsdWU+QXBwb2ludG1lbnQtZW5kIGlzIGFmdGVyIG9mIGFwcG9pbnRtZW50LXN0YXJ0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzkiIG5hbWU9ImFsZXJ0Ij4KKyAgICA8dmFsdWU+UGxlYXNlIGluc2VydCBhIHRpdGxlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODAiIG5hbWU9IjU4MCI+CisgICAgPHZhbHVlPlJUTDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODEiIG5hbWU9IjU4MSI+CisgICAgPHZhbHVlPkFjdGl2YXRlIHRoaXMgaWYgeW91IHdyaXRlIGluIGEgcmlnaHQgdG8gbGVmdCBsYW5ndWFnZSAoaW52ZXJzZSB3b3JkIG9yZGVyKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODIiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+RGFzaGJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MyIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT5XYXRjaCByZWNvcmRlZCBNZWV0aW5ncyBvciBFdmVudHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg0IiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPk1lZXRpbmcgLSBNYWtlIGEgY29uZmVyZW5jZSB3aXRoIDQgKHVwIHRvIDE2KSBVc2VycyZsdDtici8mZ3Q7ZXZlcnlib2R5IHdpbGwgaGF2ZSBhdWRpbyArIHZpZGVvIGFjY2VzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODUiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+RXZlbnQgLSBNYWtlIGEgY29uZmVyZW5jZSB3aXRoIHVwIHRvIDIwMCBwYXJ0aWNpcGVudHMmbHQ7YnIvJmd0O09ubHkgdGhlIE1vZGVyYXRvciB3aWxsIGhhdmUgYXVkaW8vdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg2IiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPkNyZWF0ZSB1c2Vycywgcm9vbXMsIG9yZ2FuaXphdGlvbnMmbHQ7YnIvJmd0OyArIGNoYW5nZSBjb25maWd1cmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4NyIgbmFtZT0icm9vbSBBZG1pbmlzdHJhdGlvbiByb29tY2xpZW50cyBsaXN0Ij4KKyAgICA8dmFsdWU+VXNlcnMgaW4gdGhpcyBSb29tIG5vdzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODgiIG5hbWU9InJvb20gQWRtaW5pc3RyYXRpb24gcm9vbWNsaWVudHMgbGlzdCI+CisgICAgPHZhbHVlPklEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4OSIgbmFtZT0icm9vbSBBZG1pbmlzdHJhdGlvbiByb29tY2xpZW50cyBsaXN0Ij4KKyAgICA8dmFsdWU+TG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkwIiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5EPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5MSIgbmFtZT0ic3dmIHN5bmMgbWVzc2FnZSI+CisgICAgPHZhbHVlPkxvYWRpbmcgRG9jdW1lbnQuIFBsZWFzZSB3YWl0IHVudGlsbCBhbGwgQ2xpZW50IGhhdmUgYmVlbiBzeW5jaHJvbml6ZWQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5MiIgbmFtZT0idXBsb2FkIGRpYWxvZyI+CisgICAgPHZhbHVlPlVwbG9hZCBjb21wbGV0ZSwgY29udmVydGluZyBEb2N1bWVudCAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkzIiBuYW1lPSJ1cGxvYWQgZGlhbG9nIj4KKyAgICA8dmFsdWU+U3RhcnQgVXBsb2FkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NCIgbmFtZT0idXBsb2FkIGRpYWxvZyI+CisgICAgPHZhbHVlPlVwbG9hZCBhbmQgSW1wb3J0IERpYWxvZy4gUGxlYXNlIHNlbGVjdCBhIEZpbGUgZnJvbSB5b3VyIERpc2suPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NSIgbmFtZT0idXBsb2FkIERpYWxvZyI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTYiIG5hbWU9InVwbG9hZCBEaWFsb2ciPgorICAgIDx2YWx1ZT5TZWxlY3QgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTciIG5hbWU9ImFkbWluaXN0cmF0aW9uIG5hdmlnYXRpb24iPgorICAgIDx2YWx1ZT5Db25uZWN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTgiIG5hbWU9ImNvbmZhZG1pbiB2YWx1ZSBsaXN0Ij4KKyAgICA8dmFsdWU+VmFsdWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk5IiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+U3RyZWFtaWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAwIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+TG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAxIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+Q29ubmVjdGVkIHNpbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwMiIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPlJvb20gLyBTY29wZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDMiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5LaWNrIFVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA0IiBuYW1lPSJraWNrIHVzZXIgY29uZmlybWF0aW9uIGRpYWxvZyI+CisgICAgPHZhbHVlPktpY2sgVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDUiIG5hbWU9ImtpY2sgdXNlciBjb25maXJtYXRpb24gZGlhbG9nIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGtpY2sgdGhpcyBDbGllbnQgZnJvbSB0aGUgQ29ubmVjdGlvbj8mbHQ7YnIvJmd0OyBUaGlzIGRvZXMgb25seSByZW1vdmUgdGhlIENsaWVudCBmcm9tIHRoZSBjdXJyZW50IFJvb20uVGhlIENsaWVudCBjb3VsZCByZS1sb2dpbiBhZ2Fpbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA2IiBuYW1lPSJraWNrIHVzZXIgbWVzc2FnZSBkaWFsb2ciPgorICAgIDx2YWx1ZT5Zb3VyIHNlc3Npb24gaGFzIGJlZW4gY2xvc2VkIGJ5IGFuIEFkbWluaXN0cmF0b3Igb3IgTW9kZXJhdG9yLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDciIG5hbWU9InVzZXJhbHRlcnNlbGZfcGhvbmUiPgorICAgIDx2YWx1ZT5UZWxlZm9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwOCIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+VXNlciBpcyB0aGUgTW9kZXJhdG9yIG9mIHRoaXMgUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDkiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPlVzZXIgaXMgYWxsb3dlZCB0byBkcmF3IG9uIHRoZSBXaGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMCIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+KFJlKSBTdGFydCBBdWRpby9WaWRlbyBvciBjaGFuZ2UgRGV2aWNlIFNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMSIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+QWxsb3cgdGhpcyBVc2VyIHRvIGRyYXcgb24gdGhlIFdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEyIiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5SZW1vdmUgYWJpbGl0eSB0byBkcmF3IG9uIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEzIiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+VXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE0IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+RmlsZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE1IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+V2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTYiIG5hbWU9ImNvbmZlcmVuY2VQYW5lbHMiPgorICAgIDx2YWx1ZT5DaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxNyIgbmFtZT0ib3JnYW5pemF0aW9uIGNob29zZSBpbmZvIj4KKyAgICA8dmFsdWU+WW91ciBhY2NvdW50IGlzIGFzc2lnbmVkIHRvIG11bHRpcGxlIE9yZ2FuaXphdGlvbnMuIFBsZWFzZSBjaG9vc2Ugb25lIGZvciB0aGlzIFNlc3Npb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxOCIgbmFtZT0iZXJyb3IgbWVzc2FnZSByb29tIGZ1bGwiPgorICAgIDx2YWx1ZT5UaGlzIHJvb20gaXMgZnVsbCBhdCB0aGUgbW9tZW50LiBQbGVhc2UgdHJ5IGFnYWluIGxhdGVyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTkiIG5hbWU9InJvb210eXBlcyI+CisgICAgPHZhbHVlPlJvb20gVHlwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjAiIG5hbWU9ImFwcG9pbnRlZF9yb29tIj4KKyAgICA8dmFsdWU+QXBwb2ludG1lbnQgUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjEiIG5hbWU9InNlcnZlcnRpbWUiPgorICAgIDx2YWx1ZT5TZXJ2ZXIgVGltZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjIiIG5hbWU9Imludl9yZW1pbmRlcl90ZW1wbGF0ZV9oZWFkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIC0gUmVtaW5kZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIzIiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9mcm9tIj4KKyAgICA8dmFsdWU+TWVzc2FnZSBmcm9tIFVzZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNCIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfbWVzc2FnZSI+CisgICAgPHZhbHVlPk1lc3NhZ2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNSIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfY2xpY2tfdGV4dCI+CisgICAgPHZhbHVlPkNsaWNrIHRoaXMgbGluayB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgTWVldGluZ3M6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNiIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfY2xpY2tfdGV4dF9saW5rIj4KKyAgICA8dmFsdWU+Q2xpY2sgaGVyZSB0byBlbnRlciByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNyIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfY2xpY2tfdGV4dF9oZWxwIj4KKyAgICA8dmFsdWU+aWYgeW91IGhhdmUgcHJvYmxlbXMgd2l0aCB0aGUgbGluaywgcGxlYXNlIGNvcHkgYW5kIHBhc3RlIHRoaXMgdG8geW91ciBicm93c2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjgiIG5hbWU9ImJ0bl9zZWFyY2hfaW50ZXJuIj4KKyAgICA8dmFsdWU+c2VhcmNoIGludGVybjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjkiIG5hbWU9ImJ0bl9zZWFyY2hfZXh0ZXJuIj4KKyAgICA8dmFsdWU+ZXh0ZXJuIHVzZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzMCIgbmFtZT0ibGJsX3ByZW5hbWUiPgorICAgIDx2YWx1ZT5wcmUgbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzEiIG5hbWU9ImxibF9uYW1lIj4KKyAgICA8dmFsdWU+bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzIiIG5hbWU9ImxibF9lbWFpbCI+CisgICAgPHZhbHVlPkUtbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzMiIG5hbWU9ImxvZ291dENvbmZpcm1fdGl0bGUiPgorICAgIDx2YWx1ZT5Db25maXJtIGxvZ291dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzQiIG5hbWU9ImxvZ291dENvbmZpcm1fc3VyZV90b19sb2dvdXRfcXVlc3Rpb24iPgorICAgIDx2YWx1ZT5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gbG9nb3V0IG5vdz88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM1IiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT5BY3Rpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkRlbW8gUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EZW1vIFRpbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM4IiBuYW1lPSJtZWV0aW5nIFRpbWVyIj4KKyAgICA8dmFsdWU+TWVldGluZyBUaW1lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzkiIG5hbWU9Im1lZXRpbmcgVGltZXIiPgorICAgIDx2YWx1ZT5UaGlzIFJvb20gaXMgYSBEZW1vIFJvb20uIFRvIGRpc2FibGUgdGhpcyB3YXJuaW5nIHlvdSBlaXRoZXIgc2hvdWxkIGdldCBhIHByaXZhdGUgbWVldGluZyByb29tIGZvciB5b3VyIHBlcnNvbmFsIHVzYWdlIG9yIHNldCB1cCBhbiBvd24gU2VydmVyLiBZb3Ugd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGxvZ2dlZCBvZmYgaW46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MCIgbmFtZT0ibWVldGluZyByb29tIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+TW9kZXJhdGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MSIgbmFtZT0ibW9kZXJhdGVkIHJvb20gd2FpdGluZyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+UGxlYXNlIHdhaXQgdW50aWxsIHRoZSBNb2RlcmF0b3IgaGFzIGVudGVyZWQgdGhlIFJvb20uIFRoZSBNb2RlcmF0b3IgY2FuIGJlIGVpdGhlciBhIFRlYWNoZXIsIEFkbWluIG9yIHRoZSBjcmVhdG9yIG9mIHRoaXMgUm9vbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQyIiBuYW1lPSJlcnJvciBwb3B1cCI+CisgICAgPHZhbHVlPk9rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MyIgbmFtZT0id2luZG93IHNjcmVlbnNoYXJpbmciPgorICAgIDx2YWx1ZT5JbmNvbWluZyBTY3JlZW4gU2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDQiIG5hbWU9IndpbmRvdyBzY3JlZW4gc2hhcmluZyI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGEgbmV3IFNjcmVlbiBTaGFyaW5nIGluY29taW5nIGZyb20gdGhlIFVzZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0NSIgbmFtZT0id2luZG93IHNjcmVlbiBzaGFyaW5nIj4KKyAgICA8dmFsdWU+U3RhcnQgU2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDYiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QWRkIG5ldyBNZWV0aW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0NyIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5NZWV0aW5nIFJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ4IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkV2ZW50IFJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ5IiBuYW1lPSJtYWluIG1lbnUgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPk1vZGVyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUwIiBuYW1lPSJtZW51IG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Nb2RlcmF0ZSBVc2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTEiIG5hbWU9Im1lbnUgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPk1vZGVyYXRlIFJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1MiIgbmFtZT0ibW9kZXJhdG9yIG9yZyI+CisgICAgPHZhbHVlPk08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUzIiBuYW1lPSJjb25maXJtIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5EbyB5b3Ugd2FudCB0byBjaGFuZ2UgdGhpcyBVc2VyIHRvIGJlY29tZSBhIE1vZGVyYXRvciBvZiB0aGF0IE9yZ2FuaXphdGlvbj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU0IiBuYW1lPSJlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+UGxlYXNlIGNob29zZSBhbiBPcmdhbml6YXRpb24gYmVmb3JlIHlvdSB0cnkgdG8gYWRkIGEgVXNlciB0byBpdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU1IiBuYW1lPSJjaG9vc2UgdXNlciB3aW5kb3ciPgorICAgIDx2YWx1ZT5Pcmdhbml6YXRpb24gLSBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU2IiBuYW1lPSJtb2RlcmF0b3Igb3JnIHVzZXJzIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIFVzZXIgZnJvbSB0aGUgT3JnYW5pemF0aW9uPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTciIG5hbWU9Im9yZyBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+VGhpcyBVc2VyIGlzIE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTgiIG5hbWU9Im9yZyBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+VGhpcyBVc2VyIGlzIE5vLU1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTkiIG5hbWU9ImVycm9yIG1lc3NhZ2UgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkRvIHlvdSB3YW50IHRoaXMgVXNlciB0byBiZSBub3QgYSBNb2RlcmF0b3Igb2YgdGhpcyBPcmdhbml6YXRpb24/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MCIgbmFtZT0ibW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkFkZCBvciBkZWxldGUgVXNlcnMgb3IgUm9vbXMgd2l0aGluIHlvdXIgT3JnYW5pemF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MSIgbmFtZT0iZGVsZXRlIGNvbmZpcm0gcXVlc3Rpb24iPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcmVjb3JkPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjIiIG5hbWU9ImRlbGV0ZSBjb25maXJtIHF1ZXN0aW9uIHVzZXIgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyB1c2VyIGZyb20geW91ciBvcmdhbml6YXRpb24/IFlvdSB3aWxsIG9ubHkgZGVsZXRlIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gdGhlIHVzZXIgYW5kIHlvdXIgb3JnYW5pemF0aW9uLCB0byByZWFsbHkgZGVsZXRlIHRoZSB1c2VyIGl0c2VsZiB5b3UgaGF2ZSB0byBsb2dpbiBpbnRvIHRoZSBBZG1pbmlzdHJhdGlvbi1QYW5lbC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYzIiBuYW1lPSJlcnJvciBtZXNzYWdlIHNlbGYgZGVsZXRpbmciPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IGRlbGV0ZSB5b3VyIG93biBVc2VyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjQiIG5hbWU9ImVycm9yIG1lc3NhZ2UgYXV0aCI+CisgICAgPHZhbHVlPlRoaXMgTWV0aG9kIG5lZWRzIGEgQWRtaW5zdHJhdGlvbiBBY2NvdW50IHRvIGJlIGludm9rZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NSIgbmFtZT0iZXJyb3IgbWVzc2FnZSBTT0FQIj4KKyAgICA8dmFsdWU+VGhlcmUgd2FzIG5vIFNlc3Npb24gYXNzb2NpYXRlZCB3aXRoIHRoaXMgSUQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NiIgbmFtZT0iZXJyb3IgbWVzc2FnZSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+VGhpcyBpcyBhbiBBZG1pbmlzdHJhdG9yIG9yIE1vZGVyYXRvciBhY2NvdW50LiBZb3UgY2FuIG9ubHkgZWRpdCB0aGlzIGFjY291bnQgdGhyb3VnaCB0aGUgQWRtaW5pc3RyYXRpb24gUGFuZWwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NyIgbmFtZT0iZW1haWwgdmVyaWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+VG8gY29tcGxldGUgeW91ciByZWdpc3RyYXRpb24gcGxlYXNlIGNsaWNrIG9uIHRoZSBmb2xsb3dpbmcgbGluay4gT3IgY29weSB0aGUgVVJMIHRvIHlvdXIgYnJvd3NlciBiYXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2OCIgbmFtZT0iZW1haWwgdmVyaWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+Q2xpY2sgdG8gdmVyaWZ5IHlvdXIgRS1NYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2OSIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPk5vIHVzZXIgd2FzIGZvdW5kIGZvciB0aGlzIEhhc2guPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3MCIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPlRoaXMgdXNlciBpcyBhbHJlYWR5IGFjdGl2YXRlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjcxIiBuYW1lPSJlcnJvck1lc3NhZ2VfVXNlckFjdGl2YXRpb25TZXJ2bGV0IFtBY3RpdmF0ZVVzZXJdIj4KKyAgICA8dmFsdWU+WW91IGRpZCBzdWNjZXNzZnVsbHkgYWN0aXZhdGUgeW91ciBhY2NvdW50ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzIiIG5hbWU9ImVycm9yTWVzc2FnZV9Vc2VyQWN0aXZhdGlvblNlcnZsZXQgW0FjdGl2YXRlVXNlcl0iPgorICAgIDx2YWx1ZT5Mb2dpbiBOb3c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjczIiBuYW1lPSJsb2dpbkVycm9yTWVzc2FnZSA9IHVzZXIgd2FzIG5vdCBhY3RpdmF0ZWQiPgorICAgIDx2YWx1ZT5Zb3VyIGFjY291bnQgaXMgbm90IGFjdGl2YXRlZC4gRmlyc3QgdXNlIHRoZSBsaW5rIGluIHRoZSBFbWFpbCB5b3UndmUgcmVjZWl2ZWQgZHVyaW5nIHJlZ2lzdHJhdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc0IiBuYW1lPSJyZWdpc3RlciB2ZXJpZmljYXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPllvdSBzdWNjZXNzZnVsbHkgc2lnbmVkIHVwLiBXZSd2ZSBzZW5kIGFuIEVNYWlsIHdpdGggYSB2ZXJpZmljYXRpb24gQ29kZSB0byB5b3VyIE1haWwuIFBsZWFzZSBjaGVjayB5b3VyIEluYm94LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzUiIG5hbWU9InBhcnRpY2lwYW50cyBwYW5lbCI+CisgICAgPHZhbHVlPlJlbW92ZSBNb2RlcmF0aW9uIFJvbGUgZnJvbSB0aGlzIFVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc2IiBuYW1lPSJwYXJ0aWNpcGFudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5HcmFudCBNb2RlcmF0aW9uIFJpZ2h0cyB0byB0aGlzIFVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc3IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Vc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3OCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QWNjZXNzIHRvIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc5IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Nb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgwIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Nb2RlcmF0aW9uOiBQbGVhc2UgY2hvb3NlIGFueSBVc2VyIG9uIHRoZSBMaXN0IHRvIGdyYW50IGhpbSBhY2Nlc3MgdG8gdGhlIFdoaXRlYm9hcmQsIE1vZGVyYXRpb24gb3IgVmlkZW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+VGhpcyBVc2VyIGlzIGFscmVhZHkgTW9kZXJhdG9yLCBzbyBoZSBoYXMgYXV0b21hdGljYWxseSB0aGUgcmlnaHQgdG8gZHJhdy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgyIiBuYW1lPSJldmVudCB1c2VyIGxpc3QgZXJyb3IiPgorICAgIDx2YWx1ZT5UaGlzIGlzIHlvdSEgWW91IGNhbm5vdCByZW1vdmUgdGhlIE1vZGVyYXRpb24gcmlnaHRzIGZyb20geW91cnNlbGYuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MyIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QWxsb3cgdGhpcyBVc2VyIHRvIFB1Ymxpc2ggaGlzIEF1ZGlvIC8gVmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg0IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5SZW1vdmUgQXVkaW8vVmlkZW8gb2YgdGhpcyBVc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4NSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+SSB3b3VsZCBsaWtlIHRvIGdldCB0aGUgbW9kZXJhdGlvbiBvZiB0aGlzIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg2IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5JIHdvdWxkIGxpa2UgdG8gZHJhdyBvbiB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4NyIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+SSB3b3VsZCBsaWtlIHRvIHNoYXJlIG15IEF1ZGlvL1ZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4OCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+WW91IGFyZSBtb2RlcmF0b3Igb2YgdGhpcyByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4OSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+WW91IGFyZSBhbGxvd2VkIHRvIGRyYXcgb24gd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTAiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPllvdSBhcmUgYWxsb3dlZCB0byBzaGFyZSB5b3VyIEF1ZGlvL1ZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5MSIgbmFtZT0iZXJyb3J0eXBlIj4KKyAgICA8dmFsdWU+TWVzc2FnZSB0byBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkyIiBuYW1lPSJhcHBseSBmb3IgbW9kIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTMiIG5hbWU9ImFwcGx5IGZvciBtb2QgbWVzc2FnZSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gZ2V0IHRoZSBNb2RlcmF0aW9uLiBVc2UgdGhlIHN0YXR1cyBJY29ucyBuZXh0IHRvIHRoZSB1c2VyIGluIHRoZSBMaXN0IG9mIFVzZXJzIHRvIGFkZCBvciByZW1vdmUgdGhlIE1vZGVyYXRpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5NCIgbmFtZT0iYXBwbHkgZm9yIHdoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGRyYXcgb24gd2hpdGVib2FyZC4gVXNlIHRoZSBzdGF0dXMgSWNvbnMgbmV4dCB0byB0aGUgdXNlciBpbiB0aGUgTGlzdCBvZiBVc2VycyB0byBhZGQgb3IgcmVtb3ZlIHRoZSByaWdodCB0byBkcmF3IGFueXRoaW5nIG9uIHRoZSB3aGl0ZWJvYXJkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTUiIG5hbWU9IjY5NSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gc2hhcmUgaGlzIEF1ZGlvL1ZpZGVvLiBVc2UgdGhlIHN0YXR1cyBJY29ucyBuZXh0IHRvIHRoZSB1c2VyIGluIHRoZSBMaXN0IG9mIFVzZXJzIHRvIGFkZCBvciByZW1vdmUgdGhlIHJpZ2h0IHRvIHNoYXJlIEF1ZGlvL1ZpZGVvIGZvciBhbnkgVXNlci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk2IiBuYW1lPSJtb2RlcmF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Zb3UgaGF2ZSB0byB3YWl0IHVudGlsbCBhIE1vZGVyYXRvciBlbnRlcnMgdGhlIHJvb20uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5NyIgbmFtZT0iY2FsZW5kYXIgYnV0dG9uIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5OCIgbmFtZT0iY2FsZW5kYXIgYnV0dG9uIj4KKyAgICA8dmFsdWU+U2F2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTkiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPkRheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDAiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPk1vbnRoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwMSIgbmFtZT0iY2FsZW5kYXIgY29tcG9uZW50Ij4KKyAgICA8dmFsdWU+WWVhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDIiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5VcGxvYWQgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDMiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5BZGQgRm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwNCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlJlZnJlc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA1IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+VHJhc2ggKERyYWcgYW5kIERyb3AgaXRlbSBoZXJlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDYiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5NeSBGaWxlcyAoSG9tZSBEcml2ZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA3IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+Um9vbSBGaWxlcyAoUHVibGljIERyaXZlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDgiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5BZGQgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDkiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5BZGQgRm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkRlbGV0ZSBGb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzExIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+RWRpdCBOYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPk5ldyBGb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzEzIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIEl0ZW0/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxNCIgbmFtZT0idXNlciBhZG1pbiI+CisgICAgPHZhbHVlPlNlYXJjaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTUiIG5hbWU9InVzZXIgYWRtaW4iPgorICAgIDx2YWx1ZT5TZWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE2IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+T3BlbiBEb2N1bWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTciIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5TaG93IGFsbCBGaWxlcyAoVHJlZSBWaWV3KTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTgiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5DbG9zZSBEb2N1bWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTkiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5EZWxldGUgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjAiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIG5vdCBhbGxvd2VkIHRvIGRyYXcgYW55dGhpbmcgb24gdGhlIFdoaXRlYm9hcmQuIFlvdSBoYXZlIHRvIGJlY29tZSBNb2RlcmF0b3Igb3IgYXQgbGVhc3QgZ2V0IHRoZSBSaWdodCB0byBlZGl0IFdoaXRlYm9hcmQuIFlvdSBtYXkgYXNrIGEgTW9kZXJhdG9yIHRvIGdpdmUgeW91IHRoYXQgcmlnaHQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyMSIgbmFtZT0icHJvcGVydHkgcGFuZWwiPgorICAgIDx2YWx1ZT5Eb2N1bWVudCBQcm9wZXJ0aWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyMiIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+U3RhcnQgQ2xpZW50IChleHRlcm5hbCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIzIiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5TdGFydCBDbGllbnQgKEhUVFApPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNCIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+QSB1c2VyIHdhbnQgdG8gc2hhcmUgaGlzIHNjcmVlbi4gRG8geW91IHdhbnQgdG8gc2VlIGl0PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjUiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPllvdSBhcmUgY3VycmVudGx5IHNoYXJpbmcgeW91ciBEZXNrdG9wLiBGb3Igc3RvcHBpbmcgdGhlIFNoYXJpbmcgU2Vzc2lvbiBwbGVhc2UgaGl0IHRoZSBTdG9wIGJ1dHRvbiBpbiB0aGUgU2hhcmluZyBDbGllbnQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNiIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+U2hhcmluZyBTZXNzaW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNyIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+WW91IGFyZSBhbHJlYWR5IHNoYXJpbmcgeW91ciBkZXNrdG9wITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+RGVza3RvcCBWaWV3ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI5IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkV4aXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMwIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkRlc2t0b3AgU2hhcmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5DbGljayBTdGFydCB0byBwdWJsaXNoIHlvdXIgc2NyZWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdGFydCBTaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdG9wIFNoYXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM0IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlNlbGVjdCB5b3VyIHNjcmVlbiBhcmVhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzUiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+Q2hhbmdlIHdpZHRoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5UaGUgU2hhcmVyIGhhcyBmaW5pc2hlZCB0aGlzIHNlc3Npb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5DaGFuZ2UgaGVpZ2h0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczOCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5YLU9mZnNldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzkiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+WS1PZmZzZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQwIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPldpZHRoOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDEiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+SGVpZ2h0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDIiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+Q29ubmVjdGlvbiB3YXMgY2xvc2VkIGJ5IFNlcnZlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDMiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NCIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5TdGFydCBFeHRlcm5hbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDUiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+SWYgeW91IGNsb3NlIHRoaXMgc2Vzc2lvbiBjb21wbGV0ZWx5IHlvdSBhcmUgbm90IGFibGUgdG8gcmVzdGFydCB0aGUgdmlld2VyIGZvciB0aGlzIHNlc3Npb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NiIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5Db25maXJtIENsb3NpbmcgVmlld2VyIFNlc3Npb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ3IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPlNoYXJlIFNjcmVlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDgiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+UmVjb3JkIFNlc3Npb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ5IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+Q28tQnJvd3Npbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUwIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+T29vcHMsIC4uLiBGaXJlZm94IG9uIFdpbmRvd3MgZG9lcyBub3Qgc2hvdyBjbGVhciBDby1Ccm93c2luZy4gUGxlYXNlIHVzZSBhbm90aGVyIEJyb3dzZXIgZm9yIHVzaW5nIHRoZSBDby1Ccm93c2luZyBmZWF0dXJlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTEiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5QcmV2aW91czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTIiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5OZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MyIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPlJlbG9hZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTQiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5Ib21lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1NSIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPkxvYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU2IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+QWRkIHRoaXMgd2Vic2l0ZSBhcyBEZWZhdWx0IHdlYnNpdGUgdG8geW91ciBQcm9maWxlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTciIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5UZXN0IFNldHVwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1OCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPkNoZWNrIHlvdSBNaWNyb3Bob25lIGFuZCBDYW1lcmEgc2V0dXAgYmVmb3JlIHlvdSBlbnRlciBhIHJvb20gYnkgcmVjb3JkaW5nIHNvbWUgc2Vjb25kcy4gWW91IGNhbiB0aGVuIHJlcGxheSB5b3VyIHJlY29yZGluZyB0byBjaGVjayB5b3VyIHZvaWNlIGFuZCBwaWN0dXJlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTkiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5Eb24ndCBzaG93IHRoaXMgdGVzdCBhbnltb3JlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjEiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5TdGFydCBDb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MiIgbmFtZT0iZWRpdCB2aWRlbyBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkRvIG5vdCBhc2sgYWdhaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYzIiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+UkVDPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlBMQVk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY1IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+WW91IG1heSBwcm9jZWVkIHdpdGhvdXQgdGVzdGluZyBpZiB5b3UgZG8gbm90IHBsYW4gdG8gcHVibGlzaCB5b3VyIHZvaWNlIG9yIHBpY3R1cmUuIFBhcnRpY2lwYW50cyB3aXRob3V0IEF1ZGlvIG9yIFZpZGVvIGNhbiBzdGlsbCB1c2UgdGhlIFdoaXRlYm9hcmQsIHNoYXJlIHRoZWlyIERlc2t0b3Agb3Igd3JpdGUgQ2hhdCBtZXNzYWdlcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY2IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+U1RPUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjciIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5MZXZlbC1NZXRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjgiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5QcmVzcyBTdGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjkiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5TdGFydCBDb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MCIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPlN0YXJ0IEV2ZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MSIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPkNob29zZSBSb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MiIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPkNoZWNrIFNldHVwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MyIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPlN0YXJ0IENvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc0IiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+SG93IHRvIGNvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc1IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+U3RhcnQgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NiIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPkRvIG5vdCBzaG93IEF1ZGlvIC8gVmlkZW8gVGVzdCAoUmVjb3JkaW5nKSBiZWZvcmUgZW50ZXJpbmcgYSBDb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NyIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPlB1YmxpYyBSb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzgiIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT5QdWJsaWMgUm9vbXMgYXJlIGFjY2Vzc2libGUgZm9yIGFsbCBVc2Vycy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc5IiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+UHJpdmF0ZSBSb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODAiIG5hbWU9IlByaXZhdGUgUm9vbXMiPgorICAgIDx2YWx1ZT5Qcml2YXRlIFJvb21zIGFyZSBvbmx5IGFjY2Vzc2libGUgZm9yIHVzZXJzIG9mIHRoZSBzYW1lIG9yZ2FuaXphdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgxIiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+TXkgUm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgyIiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+Um9vbXMgaW4gdGhpcyBzZWN0aW9uIGFyZSBjcmVhdGVkIGZvciBwZXJzb25hbCB1c2FnZS4gVGhlcmUgYXJlIHNvbWUgc3RhbmRhcmQgcm9vbXMgcGx1cyB0aGUgb25lcyB0aGF0IGFyZSBjcmVhdGVkIHRocm91Z2ggdGhlIGNhbGVuZGFyIGFuZCBoYXZlIGEgc3RhcnQgYW5kIGFuIGVuZCBkYXRlLiBUaGUgcm9vbXMgY3JlYXRlZCB2aWEgdGhlIGNhbGVuZGFyIGFyZSBvbmx5IGxpc3RlZCBpbiB0aGlzIHNlY3Rpb24gYXMgbG9uZyBhcyB0aGV5IGFyZSB2YWxpZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgzIiBuYW1lPSJyZXN0cmljdGVkIHJvb20iPgorICAgIDx2YWx1ZT5Zb3UgaGF2ZSB0byBiZSBtb2RlcmF0b3IgdG8gZG8gdGhpcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg0IiBuYW1lPSJtZW51IG9wdGlvbiI+CisgICAgPHZhbHVlPkFwcGx5IGZvciBtb2RlcmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NSIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT5BcHBseSBmb3Igd2hpdGVib2FyZCBhY2Nlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg2IiBuYW1lPSJtZW51IG9wdGlvbiI+CisgICAgPHZhbHVlPkFwcGx5IGZvciBjYW1lcmEvbWljcm9waG9uZSBhY2Nlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg3IiBuYW1lPSJlcnJvciBtZXNzYWdlIHNvYXAgc2VjdXJlIGxvZ2luIj4KKyAgICA8dmFsdWU+VGhpcyBTZXNzaW9uIEhhc2ggd2FzIGFscmVhZHkgdXNlZC4gWW91IGNhbm5vdCB1c2UgaXQgdHdpY2UuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4OCIgbmFtZT0iZGFzaGJvYXJkIGJ1dHRvbiI+CisgICAgPHZhbHVlPlNUQVJUPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4OSIgbmFtZT0iZXhpdCBjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+RVhJVDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTAiIG5hbWU9ImNvbmZlcmVuY2UgdmlldyI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBleGl0PyBZb3UgbWlnaHQgc2hvdWxkIGNsZWFyIHVwbG9hZGVkIGRvY3VtZW50cywgd2hpdGVib2FyZCBhbmQgdGhlIGNoYXQgaGlzdG9yeS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkxIiBuYW1lPSJjb25mZXJlbmNlIHZpZXciPgorICAgIDx2YWx1ZT5FeGl0IGNvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkyIiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT5Sb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTMiIG5hbWU9Im1haW4gbWVudSI+CisgICAgPHZhbHVlPkNob29zZSBhIHJvb20gZm9yIGEgbWVldGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTQiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgYW4gdW5zYXZlZCBFdmVudCBpbiB0aGUgQ2FsZW5kYXIuIFBsZWFzZSBlaXRoZXIgc2F2ZSBpdCBvciByZW1vdmUgaXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5NSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5QbGVhc2UgYWRkIGF0IGxlYXN0IG9uZSBhdHRlbmRlZSBmb3IgeW91ciBtZWV0aW5nITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTYiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEV2ZW50PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTciIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+V2FybmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTgiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QWRkIEV2ZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5OSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5EYXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAwIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPldlZWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAxIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPk1vbnRoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMiIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5EZXNjcmlwdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDMiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QXR0ZW5kZWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FLCB5b3VyIFdlYiBDb25mZXJlbmNpbmcgUGxhdGZvcm0uIEVpdGhlciBmb2xsb3cgdGhlIEluc3RydWN0aW9ucywgcHJlc3MgdGhlIHN0YXJ0IGJ1dHRvbiB0byBzdGFydCB0byBjb25mZXJlbmNlIGltbWVkaWF0ZWxseSBvciB5b3UgZ290byB0aGUgQ2FsZW5kYXIgYW5kIHNldCB1cCBhIENvbmZlcmVuY2UgZm9yIHRoZSBmdXR1cmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNSIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+UGxhbiBhIE1lZXRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA2IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VG8gc2V0IHVwIGEgY29uZmVyZW5jZSB5b3UgY2FuIGFkZCBhIG5ldyBFdmVudCBpbiB0aGUgQ2FsZW5kYXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNyIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPk5lZWQgaGVscD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA4IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+UmVzdHJpY3RlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDkiIG5hbWU9Imx6Y2FsZW5kZXIiPgorICAgIDx2YWx1ZT5TZWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEwIiBuYW1lPSJsemNhbGVuZGVyIj4KKyAgICA8dmFsdWU+QWRkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMSIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIFVzZXIgc2VsZWN0ZWQuIFBsZWFzZSBzZWxlY3QgYW4gaXRlbSBmcm9tIHRoZSBsaXN0IGZpcnN0IGFuZCB0aGVuIGhpdCBhZGQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMiIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPkFkZCBBdHRlbmRlZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTMiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5TYXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxNCIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPkRlbGV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTUiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5FdmVudCBEZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkRlZmF1bHQgTW9kZXJhdG9yczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5TdXBlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTgiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTkiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyMCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkUtTWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjEiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5BZGQgbmV3IGRlZmF1bHQgTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyMiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPklzIFN1cGVyIE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjMiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5JZiB0aGUgUm9vbSBpcyBtb2RlcmF0ZWQsIFVzZXIgd2l0aCBMZXZlbCBNb2RlcmF0b3Igb3IgQWRtaW5pc3RyYXRvciBhcmUgYXV0b21hdGljYWxseSBNb2RlcmF0b3IgaWYgdGhleSBlbnRlciB0aGUgUm9vbS4gSWYgeW91IGRvbid0IHdhbnQgdG8gc3BlY2lmeSB0aGF0IGFuZCBvbmx5IHdhbnQgYSBjZXJ0YWluIFVzZXIgdG8gYmVjb21lIE1vZGVyYXRvciB1c2UgdGhlIERlZmF1bHQgTW9kZXJhdG9yIG9wdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI0IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+QSBTdXBlciBNb2RlcmF0b3IgaXMgYWx3YXlzIGEgTW9kZXJhdG9yIHdoZW4gaGUgZW50ZXJzIGEgUm9vbSwgYW5kIG5vYm9keSBjYW4gcmVtb3ZlIHRoZSBNb2RlcmF0aW9uIEZsYWcgZnJvbSBoaW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI1IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+QXBwbHkgU3VwZXItTW9kZXJhdGlvbiB0byBVc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPlJlbW92ZSBTdXBlciBNb2RlcmF0aW9uIGZyb20gVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyOCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPklmIHlvdSBhZGQgYW4gT3JnYW5pemF0aW9uIHRvIHRoZSByb29tIG9ubHkgdXNlcnMgb2YgdGhhdCBPcmdhbml6YXRpb24gaGF2ZSBhY2Nlc3MgdG8gaXQgKFRoaXMgaXMgb25seSB2YWxpZCBpZiB0aGUgaXNQdWJsaWMgZmxhZyBpcyBzZXQgdG8gZmFsc2UhKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjkiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5Nb2RlcmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzMCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkxpbWl0YXRpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzMSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPk9yZ2FuaXphdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzIiIG5hbWU9ImNvbmZpcm0gYWN0aW9uIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzMiIG5hbWU9ImNvbmZpcm0gZGVsZXRlIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEl0ZW0/IFlvdSBoYXZlIHRvIHByZXNzIHRoZSBzYXZlIGJ1dHRvbiB0byBzdG9yZSB0aGUgY2hhbmdlcyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM0IiBuYW1lPSJ1c2VyIGNob29zZSBlcnJvciI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIFVzZXIgc2VsZWN0ZWQuIFBsZWFzZSBzZWxlY3QgZmlyc3QgYmVmb3JlIHlvdSBhZGQgaXQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkFkZCBuZXcgRGVmYXVsdCBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM2IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RG8geW91IHdhbnQgdG8gYWRkIHRoZSBTdXBlciBNb2RlcmF0aW9uIEZsYWcgZm9yIHRoaXMgVXNlcj8gQSBTdXBlciBNb2RlcmF0b3IgaXMgbm90IG9ubHkgTW9kZXJhdG9yIG9mIGEgUm9vbSwgYnV0IGFsc28gbm8gb3RoZXIgTW9kZXJhdG9yIGNhbiByZW1vdmUgdGhlIE1vZGVyYXRpb24gRmxhZyBmb3IgdGhpcyBVc2VyLiBZb3UgbmVlZCB0byBzYXZlIHRoZSBSb29tIE9iamVjdCB0byBzYXZlIHRoZXNlIHNldHRpbmdzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EbyB5b3Ugd2FudCB0byByZW1vdmUgdGhlIFN1cGVyIE1vZGVyYXRpb24gRmxhZyBmb3IgdGhpcyBVc2VyPyBZb3UgbmVlZCB0byBzYXZlIHRoZSBSb29tIE9iamVjdCB0byBzYXZlIHRoZXNlIHNldHRpbmdzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzgiIG5hbWU9InN1cGVyIG1vZGVyYXRvciI+CisgICAgPHZhbHVlPlRoaXMgVXNlciBpcyBhIFN1cGVyLU1vZGVyYXRvci4gWW91IGNhbm5vdCByZW1vdmUgdGhlIE1vZGVyYXRpb24gZmxhZyBmcm9tIGEgU3VwZXItTW9kZXJhdG9yITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzkiIG5hbWU9ImNvbmZpcm0gZGVsZXRlIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZpbGUvRm9sZGVyPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDAiIG5hbWU9ImNvbmZpcm0gZGVsZXRlIj4KKyAgICA8dmFsdWU+RGVsZXRlIEZpbGUvRm9sZGVyPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDEiIG5hbWU9InNhbHV0YXRpb24iPgorICAgIDx2YWx1ZT5NcnMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0MiIgbmFtZT0ic2FsdXRhdGlvbiI+CisgICAgPHZhbHVlPkRyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDMiIG5hbWU9InByb3BlcnR5IHBhbmVsIHdoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5Qcm9wZXJ0aWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NCIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPlNob3cgbW91c2UgcG9zaXRpb24gdG8gdmlld2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDUiIG5hbWU9InB1Ymxpc2ggb3B0aW9uIj4KKyAgICA8dmFsdWU+U2hhcmUgQXVkaW8gd2l0aCBTSVAgQXBwbGV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NiIgbmFtZT0icHVibGlzaCBvcHRpb24iPgorICAgIDx2YWx1ZT5TaGFyZSBBdWRpbyB3aXRoIFNJUCBhbmQgVmlkZW8gd2l0aCBGbGFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDciIG5hbWU9ImRvY3VtZW50IHBhbmVsIj4KKyAgICA8dmFsdWU+RnVsbC1GaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ4IiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5WaWV3IFNjcmVlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDkiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlRoZSB1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MCIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+d2FudHMgdG8gc2hhcmUgaXRzIHNjcmVlbi4gRG8geW91IHdhbnQgdG8gc2VlIGl0PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTEiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNsb3NlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MiIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPlpvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUzIiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+VGhlIFNlc3Npb24gd2FzIGNsb3NlZCBieSB0aGUgc2hhcmluZyBVc2VyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTQiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5QYXVzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTUiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5OZXcgU2NyZWVuIFNoYXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU2IiBuYW1lPSJwcmVzZW50ZXIgbWluaSBpY29uIj4KKyAgICA8dmFsdWU+TWluaW1pemU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU3IiBuYW1lPSJwcmVzZW50ZXIgbWluaSBpY29uIj4KKyAgICA8dmFsdWU+TWF4aW1pemU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU4IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5WaWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTkiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlJlY29yZGluZyBUaW1lbGluZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjAiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk15IFJlY29yZGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYxIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5QdWJsaWMgUmVjb3JkaW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjIiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkluZm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYzIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TGVuZ3RoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RGF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjYiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UExBWTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjgiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk1haW4gLSBWaWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjkiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzAiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPllvdSBtYXkgcmVjb3JkIGFuZCBzaGFyZSB5b3VyIHNjcmVlbiBhdCB0aGUgc2FtZSB0aW1lLiBUbyBlbmFibGUgb3RoZXJzIHRvIHNlZSB5b3VyIHNjcmVlbiBqdXN0IGhpdCB0aGUgc3RhcnQgYnV0dG9uIG9uIHRoZSB0b3AuIFRvIG9ubHkgcmVjb3JkIHRoZSBTZXNzaW9uIGl0IGlzIHN1ZmZpY2llbnQgdG8gY2xpY2sgc3RhcnQgcmVjb3JkaW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzEiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlN0YXJ0IFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzIiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlN0b3AgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3MyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RG93bmxvYWQgdGhlIEZMVi1GaWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3NCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+Um9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzUiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlBsYXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TdG9wPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3NyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+VXNlciBoYXMgbWljcm9waG9uZSBvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U3RvcCBTaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3OSIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5BbGxvdyBVc2VyIFF1ZXN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODAiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+VHVybiB0aGlzIG9mZiB0byBwcmV2ZW50IHRoYXQgYW55IHVzZXIgaXMgZGlzdHVyYmluZyB5b3UgaW4gdGhpcyByb29tLiBFZmZlY3QgaXMgdGhhdCB0aGUgQnV0dG9uIHRvIGFzayBmb3IgTW9kZXJhdGlvbiAoIkkgaGF2ZSBhIHF1ZXN0aW9uIikgaXMgbm90IHZpc2libGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MSIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5SaWdodHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgyIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Eb3dubG9hZCBhcyBBVkk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgzIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5GTFY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg0IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5BVkk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg1IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5SYXcgU2NyZWVudmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5BdWRpbyBvbmx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+VGhlIGhhdmUgYmVlbiBlcnJvcnMgd2hpbGUgcHJvY2Vzc2luZyB0aGUgUmVjb3JkaW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODgiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlRoZSBSZWNvcmRpbmcgaXMgbm90IHlldCByZWFkeSBmb3Igd2F0Y2hpbmcuIFBsZWFzZSByZXRyeSBpbiBhIGNvdXBsZSBvZiBtaW51dGVzIGFnYWluLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODkiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkxvZzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkwIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5SZWNvcmRlciBNZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+T2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkyIiBuYW1lPSJzaXAgYXBwbGV0Ij4KKyAgICA8dmFsdWU+U0lQIEFwcGxldCBpcyBub3QgUmVhZHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkzIiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+U0lQLUFjY291bnQgU2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk0IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+U0lQIHNldHRpbmdzIGZvciBlYWNoIHVzZXIuIFlvdSBjYW4gdHVybiBvbiBvciBvZmYgU0lQIHZpYSB0aGUgQWRtaW5pc3RyYXRpb24gJmd0OyBDb25maWd1cmF0aW9uIChLZXk6IGVuYWJsZV9zaXApLiBUaGUgU0lQIGRhdGEgZm9yIGVhY2ggdXNlciBzaG91bGQgYmUgY3JlYXRlZCBhdXRvbWF0aWNhbGx5LiBZb3UgY2FuIHJlLWNyZWF0ZSB0aGUgZGF0YSBieSBjaGVja2luZyAiUmUtZ2VuZXJhdGUgU0lQIERhdGEiPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NSIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNJUC1Vc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NiIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNpcC1QYXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NyIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNpcC1BdXRoLUlkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5OCIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIExvZ2luIHRvIHRoZSBTSVAgR2F0ZXdheSBoYXMgZmFpbGVkLiBZb3Ugc2hvdWxkIGNoZWNrIHRoZSBhdXRoZW50aWZpY2F0aW9uIGRhdGEgb2YgeW91ciBTSVAtUHJvdmlkZXIgYW5kIHRoZSBTSVAtQWNjb3VudCBEYXRhIGZvciBlYWNoIFVzZXIuIEFzIEFkbWluaXN0cmF0b3IgeW91IGFyZSBzdGlsbCBhYmxlIHRvIGxvZ2luIGFuZCBjaGVjayB0aGUgQ29uZmlndXJhdGlvbi4gQXMgVXNlciBvciBNb2RlcmF0b3IgeW91IHdpbGwgYmUgYmxvY2tlZCBmcm9tIGFueSBpbnRlcmFjdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk5IiBuYW1lPSJzaXAgc3RhdHVzIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgTG9naW4gdG8gdGhlIFNJUCBHYXRld2F5IGhhcyBmYWlsZWQuIENvbnRhY3QgeW91ciBTZXJ2aWNlIFRlYW0hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwMCIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TG9nZ2luZyBpbiB0byBTSVAtR2F0ZXdheSAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAxIiBuYW1lPSJzaXAgc3RhdHVzIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Mb2dnaW5nIGluIHRvIFNJUC1HYXRld2F5IC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDIiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlNob3cgTG9nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwMyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TG9nIG1lc3NhZ2VzIGZyb20gcG9zdCByZWNvcmRlciBwcm9jZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwNCIgbmFtZT0ic2lwIGxvZ2luIj4KKyAgICA8dmFsdWU+U0lQLUFwcGxldCBNZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwNSIgbmFtZT0ic2lwIGxvZ2luIj4KKyAgICA8dmFsdWU+VGhlIFNJUC1BcHBsZXQgaXMgbm90IHJlYWR5LiBBY2NlcHQgdGhlIEFwcGxldCBwbGVhc2UgYW5kIGNsaWNrIG9rITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDYiIG5hbWU9Im1vZGVyYXRvciBwb3AgdXAiPgorICAgIDx2YWx1ZT5HZXQgTW9kZXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDciIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5TYXZlIEFwcG9pbnRtZW50IENoYW5nZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA4IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhlIGFwcG9pbnRlbWVudCBoYXMgYmVlbiBjaGFuZ2VkLiBEbyB5b3Ugd2FudCB0byBzYXZlIHRob3NlIGNoYW5nZXM/ICZsdDtici8mZ3Q7Jmx0O2JyLyZndDtBbGwgYXR0ZW5kZWVzIG9mIHRoZSBhcHBvaW50bWVudCB3aWxsIHJlY2VpdmUgYSBFTWFpbCB3aXRoIHRoZSB1cGRhdGVkIGRhdGUgYW5kIHRpbWUgKGRlcGVuZGluZyBvbiB0aGUgbm90aWZpY2F0aW9uIHR5cGUgb2YgdGhpcyBhcHBvaW50bWVudCkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwOSIgbmFtZT0iZmx2IHJlY29yZGVyIGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UbyBhY2Nlc3Mgb3RoZXIgcmVjb3JkaW5ncyB5b3UgaGF2ZSB0byBsb2dpbiB0aGUgJEFQUF9OQU1FIEFwcGxpY2F0aW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTAiIG5hbWU9ImludGVydmlldyB2aWRlbyBwb2QiPgorICAgIDx2YWx1ZT5DaG9vc2UgdGhlIFVzZXIgZm9yIHRoaXMgVmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTExIiBuYW1lPSJpbnRlcnZpZXcgdmlkZW8gY2hvb3NlIHVzZXIiPgorICAgIDx2YWx1ZT5BdmFpbGFibGUgVXNlcnMgZm9yIHRoaXMgUG9kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMiIgbmFtZT0iaW50ZXJ2aWV3IGluZm8iPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGEgTW9kZXJhdG9yIGluIHRoaXMgSW50ZXJ2aWV3LiBZb3UgY2FuIGRlY2lkZSB3aG8gaXMgc3BlYWtpbmcgaW4gdGhpcyBpbnRlcnZpZXcgYW5kIHlvdSBjYW4gc3RhcnQgLyBzdG9wIHRoZSByZWNvcmRpbmcgb2YgdGhlIFNlc3Npb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMyIgbmFtZT0iaW50ZXJ2aWV3IGJ1dHRvbiByZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TdGFydCBSZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE0IiBuYW1lPSJpbnRlcnZpZXcgYnV0dG9uIHJlY29yZGluZyI+CisgICAgPHZhbHVlPlN0b3AgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxNSIgbmFtZT0iaW50ZXJ2aWV3IGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgcmVjb3JkaW5nIG9mIHRoZSBJbnRlcnZpZXcgaXMgYWxyZWFkeSBzdGFydGVkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTYiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIHJlY29yZGluZyBpcyBhbHJlYWR5IHN0b3BwZWQgb3Igbm90IGJlZW4gc3RhcnRlZCB5ZXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxNyIgbmFtZT0iaW50ZXJ2aWV3IHJlY29yZGluZyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIHJlY29yZGluZyBmb3IgdGhpcyBpbnRlcnZpZXcgaXMgYWxyZWFkeSBzdGFydGVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTgiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxOSIgbmFtZT0iaW50ZXJ2aWV3IGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgcG9zdC1wcm9jZXNzaW5nIG9mIGFuIGludGVydmlldyB0YWtlcyA1IG1pbnV0ZXMgcGVyIDEgbWludXRlIGludGVydmlldy4gVGhlIGN1cnJlbnQgcHJvZ3Jlc3Mgb2YgdGhlIGludGVydmlldyBwb3N0LXByb2Nlc3NpbmcgdHJhbnNjb2RpbmcgaXM6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyMCIgbmFtZT0ic2lwIGNyZWF0aW9uIj4KKyAgICA8dmFsdWU+WW91IGhhdmUgdG8gZW50ZXIgeW91ciBwYXNzd29yZCBhZ2FpbiB0byBhdXRvIGNyZWF0ZSB0aGUgU0lQIERhdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIxIiBuYW1lPSJzaXAgY3JlYXRpb24iPgorICAgIDx2YWx1ZT5SZS1nZW5lcmF0ZSBTSVAgRGF0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjIiIG5hbWU9ImZpbGVleHBsb3JlciI+CisgICAgPHZhbHVlPllvdSBjYW5ub3QgbW92ZSB0aGlzIGZpbGUgb3IgZm9sZGVyIGludG8gaXRzIG93biBzdWIgZm9sZGVyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjMiIG5hbWU9ImZpbGUgZXhwbG9yZXIgIj4KKyAgICA8dmFsdWU+SG9tZSBkcml2ZSBzaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlB1YmxpYyBkcml2ZSBzaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNSIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPkxpY2Vuc2UgU2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI2IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+WW91IGNhbiBlaXRoZXIgYmluZCB0aGUgdXNlciB0byBhIGV4cGlyZSBEYXRlIG9yIHRvIGEgbWF4aW11bSBudW1iZXIgb2YgbWludXRlcyB3aGVuIHlvdSBlbmFibGUgbGljZW5zaW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjciIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5DaGVjayBsaWNlbnNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyOCIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPkZsYXRyYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyOSIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPkV4cGlyZSBkYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMCIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPlNlY29uZHMgbGVmdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzEiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5Ub3RhbCB0aW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91ciBMaWNlbnNlIGhhcyBleHBpcmVkLiBZb3UgbmVlZCB0byBidXkgbmV3IG1pbnV0ZXMgKFBheS1wZXItbWludXRlKSBvciBhIHZvbHVtZSBmbGF0cmF0ZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMzIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5DbGljayBhbmQgYnV5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzNCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+VGltZSBMZWZ0IG9uIHlvdXIgYWNjb3VudDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM1IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Vc2VyIExpY2Vuc2UgSW5mbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzYiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkluZm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM3IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5DbG9zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzgiIG5hbWU9ImxpY2Vuc2UtaW5mbyI+CisgICAgPHZhbHVlPllvdXIgbGljZW5zZSBoYXMgZXhwaXJlZC4gWW91IG5lZWQgZWl0aGVyIHRvIGJ1eSBhIG1pbnV0ZSBwYWNrYWdlIChQYXktcGVyLW1pbnV0ZSkgb3IgYSB2b2x1bWUgZmxhdHJhdGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzOSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+TGljZW5zZSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDAiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdSBjYW4gZWl0aGVyIGJ1eSBtaW51dGVzIHRvIG1ha2UgV2ViLUNvbmZlcmVuY2luZyAoUGF5LXBlci1taW51dGUpLiZsdDtici8mZ3Q7Jmx0O2JyLyZndDsgT3IgeW91IGJ1eSBhIHZvbHVtZSBmbGF0cmF0ZSBhYm91dCAzLTEyIG1vbnRocy4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7U2VuZGluZyBpbnZpdGF0aW9ucyAoZGlyZWN0IGxpbmtzIGludG8gQ29uZmVyZW5jZSBSb29tcykgb3IgY3JlYXRpbmcgY29uZmVyZW5jZSBSb29tcyB2aWEgdGhlIENhbGVuZGFyIHdpdGggZXh0ZXJuYWwgVXNlcnMgaXMgb25seSBhbGxvd2VkIHdpdGggYSB2b2x1bWUgZmxhdHJhdGUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDYwIE1pbnV0ZXMgOSw5OSBFVVJPICgxNiBDZW50IHBlciBNaW51dGUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDUgaG91cnMgMTksOTkgRVVSTyAoNiBDZW50IHBlciBtaW51dGUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDMgbW9udGggZm9yIDI5LDk5IEVVUk8gKDksOTkgRXVybyBwZXIgTW9udGgpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDYgbW9udGggZm9yIDM5LDk5IEVVUk8gKDYsNjYgRXVybyBwZXIgbW9udGgpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+UGF5LXBlci1taW51dGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ2IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Wb2x1bWUgZmxhdHJhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ3IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3UgaGF2ZSB1bmxpbWl0ZWQgTGljZW5zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDgiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdXIgbGljZW5zZSB3aWxsIGV4cGlyZSBhdDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ5IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3UgYm91Z2h0IFBheS1wZXItbWludXRlLiBZb3Ugc3RpbGwgaGF2ZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUwIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5CdXkgbmV3IGNyZWRpdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUxIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5XYW50IHlvdXIgb3duIFNlcnZlcj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUyIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3Ugd291bGQgbGlrZSB0byBoYXZlICRBUFBfTkFNRSBpbnN0YWxsZWQgb24geW91ciBTZXJ2ZXIgb3IgaW50ZWdyYXRlZCBpbnRvIHlvdXIgTW9vZGxlLCBTdWdhckNSTSwgV2Vic2l0ZSBvciBJbnRyYW5ldD8gUHJpemluZ3Mgc3RhcnQgYXQgNTAwIEV1cm8gcGVyIEluc3RhbGxhdGlvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUzIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5PciBzZW5kIHVzIGEgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTQiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkFuc3dlciB0bzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU1IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5NZXNzYWdlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTYiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlNlbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU3IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5DbGljayBoZXJlIHRvIGdldCBjb250YWN0IEluZm8gYW5kIFByaXppbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1OCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q3JlZGl0IENhcmQgRGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTkiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkZpcnN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjAiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkxhc3RuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2MSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q3JlZGl0IENhcmQgVHlwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjIiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlZJU0EgQ2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjMiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPk1hc3RlckNhcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY0IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5EaXNjb3ZlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjUiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkFtZXJpY2FuIEV4cHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY2IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DcmVkaXQgQ2FyZCBOdW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY3IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5FeHBpcmF0aW9uIERhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY4IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DYXJkIFZlcmlmaWNhdGlvbiBOdW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY5IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5CaWxsaW5nIEFkZHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTcwIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5BZGRyZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q2l0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzMiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNvdW50cnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc0IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdGF0ZSAoT25seSBVUyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc1IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5aSVA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc2IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5BbW91bnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc3IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdWJtaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc4IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdGVwIDE6ICRBUFBfTkFNRSAtIFBheW1lbnQgRm9ybTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzkiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkVNYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q2xpY2sgIkNoZWNrIG91dCB3aXRoIFBheXBhbCIgdG8gcGF5LiZsdDtici8mZ3Q7IFBheXBhbCBhY2NlcHRzIFZJU0EsIE1hc3RlckNhcmQsIERpc2NvdmVyIG9yIEFtZXJpY2FuIEV4cHJlc3MuICZsdDtici8mZ3Q7SXQgZG9lcyBub3QgcmVxdWlyZSB0byBzaWduIHVwIHdpdGggUGF5cGFsLiAmbHQ7YnIvJmd0O0NpdGl6ZW5zIGZyb20gR2VybWFueSBjYW4gYWxzbyBwYXkgd2l0aCBkaXJlY3QgZGViaXQgKFBlciBMYXN0c2NocmlmdC1FaW56dWcpLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODEiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlRoYW5rIHlvdSBmb3IgYnV5aW5nICRBUFBfTkFNRS4gJmx0O2JyLyZndDsgJmx0O2JyLyZndDsgQXMgc29vbiBhcyB3ZSByZWNlaXZlZCB0aGUgcGF5bWVudCB5b3VyIGFjY291bnQgd2lsbCBiZSB1cGRhdGVkLiZsdDtici8mZ3Q7IFlvdSB3aWxsIHJlY2VpdmUgYW4gRU1haWwgd2l0aCB5b3VyIGludm9pY2UgYXMgUERGLiZsdDtici8mZ3Q7WW91IGNhbiBhbHNvIGNoZWNrIGN1cnJlbnQgYW5kIHBhc3QgdHJhbnNhY3Rpb25zIGluIHlvdXIgcHJvZmlsZSBzZXR0aW5ncy4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7Jmx0O2JyLyZndDtZb3UgY2FuIGNsb3NlIHRoaXMgYnJvd3NlciB3aW5kb3cvdGFiIG5vdyBhbmQgcmV0dXJuIHRvICRBUFBfTkFNRS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgyIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdWJtaXQgYW5kIEJ1eSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgzIiBuYW1lPSJwYXltZW50LWZyb20iPgorICAgIDx2YWx1ZT5DbGljayBhbmQgQnV5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODQiIG5hbWU9InBheW1lbnQtZnJvbSI+CisgICAgPHZhbHVlPlN0ZXAgMzogJEFQUF9OQU1FIFBheW1lbnQgLSBDaGVjayBvcmRlciBhbmQgYnV5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODUiIG5hbWU9InBheW1lbnQtZnJvbSI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg2IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5QYXltZW50IHJlY2VpdmVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODciIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPkhpLDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODgiIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPldlIGhhdmUgcmVjZWl2ZWQgeW91ciBwYXltZW50LiBZb3VyIHVzZXIgcHJvZmlsZSBpcyB1cGRhdGVkIG5vdy4gU2VlIGF0dGFjaGVkIHlvdXIgSW52b2ljZS4gVGhlIEludm9pY2UgYW5kIGFsbCBwYXN0IEludm9pY2UgY2FuIGFsc28gYmUgZG93bmxvYWRlZCBpbiB5b3VyIHVzZXIgcHJvZmlsZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg5IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5UaGFuayB5b3UgZm9yIHVzaW5nICRBUFBfTkFNRSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkwIiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5QYXltZW50IFJlY2VpdmVkICRBUFBfTkFNRSAtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MSIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPlBheW1lbnQgYW5kIFRyYW5zYWN0aW9uIFN0YXR1czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTIiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5UcmFuc2NhdGlvbiBIYXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MyIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPk1pbnV0ZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk0IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+TW9udGhzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NSIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPkVVUjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTYiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TdGF0dXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk3IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+SW52b2ljZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTgiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk5IiBuYW1lPSJlcnJvci1saWNlbnNlLWZsYXQiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0byBidXkgYSB2b2x1bWUgZmxhdHJhdGUgdG8gYmUgYWJsZSB0byBzZW5kIGludml0YXRpb25zIG9yIGNyZWF0ZSBtZWV0aW5ncyB2aWEgdGhlIGNhbGVuZGFyLiBXaXRoIFBheS1wZXItbWludXRlIGl0IGlzIG9ubHkgcG9zc2libGUgZm9yIHlvdSB0byBhY2Nlc3MgJEFQUF9OQU1FLiBZb3UgY2Fubm90IGFsbG93IDN0aCBQYXJ0aWVzIHRvIGFjY2VzcyBhIE1lZXRpbmcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDAiIG5hbWU9ImVycm9yIHVzZXIiPgorICAgIDx2YWx1ZT5UaGlzIEVtYWlsIGlzIGFscmVhZHkgdXNlZCBieSBhbm90aGVyIFVzZXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDEiIG5hbWU9InJvb20tYWRtaW4iPgorICAgIDx2YWx1ZT5TSVAtU2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwMiIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlRoZSBDb25mZXJlbmNlIE51bWJlciBhbmQgUElOIGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB2aWEgdGhlIE9wZW5YRyBSUEMtR2F0ZXdheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAzIiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+U0lQIE51bWJlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA0IiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+UElOPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDUiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5DbGVhciBvYmplY3RzIG9uIGN1cnJlbnQgc2xpZGUgb25seSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNiIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPk9ubHkgdGhlIFVSTCBlbnRlcmVkIGluIHRoZSBTdGF0dXMgYmFyIGlzIHNlbmQgdG8gcGFydGljaXBhbnRzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TWFrZSBUZWFtLVJvb21zIFtCcmVha291dCBzZXNzaW9uXTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2hvb3NlIHVzZXJzIGZvciBhIG5ldyBUZWFtLVJvb20hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIGNob29zZSB1c2VycyBoZXJlIGFuZCBjcmVhdGUgYSBuZXcgQ29uZmVyZW5jZSBSb29tICgiVGVhbSBSb29tIikgZm9yIHRoZW0uIFRoZSBjaG9zZW4gdXNlcnMgd2lsbCBhdXRvbWF0aWNhbGx5IHN3aXRjaCB0byB0aGUgbmV3IFRlYW0tUm9vbSBvciBnZXQgYSBub3RpZmljYXRpb24uIFRlYW0tUm9vbSBNb2RlcmF0b3JzIHdpbGwgZ2V0IGFkZGl0aW9uYWxseSBhIGxpc3Qgb2YgY3VycmVudCByb29tcyBzbyB0aGF0IHRoZXkgY2FuIHN3aXRjaCB0byBlYWNoIHJvb20gaWYgdGhlcmUgYXJlIGlzIG5lZWQgZm9yIGEgTW9kZXJhdG9yLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VXNlcm5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkxvZ2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJzIGZvciB0aGUgbmV3IFRlYW0tUm9vbTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNyZWF0ZSBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2hvb3NlIGF0IGxlYXN0IG9uZSB1c2VyIGZvciB0aGUgVGVhbS1Sb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+QWRkIHVzZXIgdG8gdGVhbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+UmVtb3ZlIHVzZXIgZnJvbSBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXIgaXMgVGVhbS1Sb29tIE1vZGVyYXRvciAoSGUgaXMgYWJsZSB0byBtYW5hZ2UgVGVhbS1Sb29tcyBhbmQgdXNlcnMgb2YgdGhlIFRlYW0tUm9vbSBjYW4gYXNrIGhpbSB0byBjb21lIGluc2lkZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlJvb210eXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5JZiB5b3UgY2hlY2sgIkZvcmNlIHVzZXIgdG8gc3dpdGNoIHRvIG5ldyBUZWFtLVJvb20iIGFsbCBjaG9zZW4gdXNlcnMgd2lsbCBhdXRvbWF0aWNhbGx5IHN3aXRjaCB0byB0aGUgbmV3bHkgY3JlYXRlZCBUZWFtLVJvb20uIE90aGVyd2lzZSB0aGV5IGdldCBhIG5vdGlmaWNhdGlvbiB3aXRoIGEgYnV0dG9uIHRoYXQgdGhleSAmbHQ7aSZndDtjYW4mbHQ7L2kmZ3Q7IHN3aXRjaCB0byB0aGUgbmV3IHJvb20uIFRlYW0tTW9kZXJhdG9ycyBhbHdheXMgaGF2ZSB0aGUgZnJlZSBjaG9pY2UgdG8gbWFuYWdlIHRoZSBUZWFtLVJvb21zIGFuZCBzd2l0Y2ggYmV0d2VlbiB0aGVtLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TWFuYWdlIFRlYW0tUm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPllvdSBjYW4gc3dpdGNoIGhlcmUgYmV0d2VlbiBhbGwgVGVhbS1Sb29tcyB0aGF0IHlvdSBhcmUgYXNzaWduZWQgYXMgVGVhbS1Sb29tIE1vZGVyYXRvci4gVXNlcnMgaW5zaWRlIHRoZSBUZWFtLVJvb20gY2FuIHNlbmQgeW91IGEgbWVzc2FnZSwgZm9yIGV4YW1wbGUgdG8gYXNrIHlvdSB0byBjb21lIHRvIHRoZWlyIHJvb20gYW5kIGhlbHAgdGhlbS4gWW91IGNhbiBhbHNvIHRlcm1pbmF0ZSB0aGUgVGVhbS1Sb29tIGFuZCBhbGwgVXNlcnMgd2lsbCBiZSBsb2dnZWQgb3V0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Rm9yY2UgdXNlciB0byBzd2l0Y2ggdG8gbmV3IFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q3JlYXRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJzIGF2YWlsYWJsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+QWRkIGEgdXNlciB3aXRoIHRoZSBwbHVzIGZyb20gdGhlIGxlZnQgb3IgcmVtb3ZlIGl0IHdpdGggdGhlIGNyb3NzIGZyb20gdGhlIHJpZ2h0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MSkgVGVhbS1Sb29tIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4yKSBBZGQgdXNlcnMgdG8gdGhlIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVhbS1Sb29tIE5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2hhbmdlIHRvIHRoZSBSb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Td2l0Y2ggdG8gdGhpcyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlcm1pbmF0ZSBUZWFtLVJvb20gYW5kIGxvZ291dCBhbGwgVXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk5ldyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGEgbmV3IFRlYW0tUm9vbSBhdmFpbGFibGUgZm9yIHlvdS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlN3aXRjaCB0byBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW0tUm9vbSBBY3Rpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIHJlLW9wZW4gdGhpcyB3aW5kb3cgdmlhIHRoZSBtYWluIG1lbnUgaW4gdGhlICJBY3Rpb25zIiBzZWN0aW9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U2VuZCBtZXNzYWdlIHRvIFRlYW0tUm9vbSBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk5ldyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGEgbmV3IFRlYW0tUm9vbSBhdmFpbGFibGUuIFlvdSBjYW4gc3dpdGNoIHRvIHRoYXQgUm9vbS4gVGVhbS1Sb29tcyBhcmUgbGlrZSAiV29ya2dyb3VwcyIgd2l0aCBhZGRpdGlvbmFsbHkgcG9zc2liaWxpdGllcyB0byBhc2sgdGhlIFRlYW0tUm9vbSBNb2RlcmF0b3IgZm9yIGhlbHAuIFlvdXIgVGVhbS1Sb29tcyBhcmUgYWxzbyBhdmFpbGFibGUgaW4gdGhlICJNeSBNZWV0aW5ncyIgc2VjdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlN3aXRjaCB0byBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNyZWF0ZWQgYnk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb20gbmFtZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0OSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoaXMgV2luZG93IHdpbGwgc3RheSBvcGVuIGV2ZW4gaWYgeW91IGxlYXZlIHRoZSByb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VXNlcnMgZm9yIHRoaXMgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4zKSBPdGhlciBUZWFtLVJvb21zIHRoYXQgeW91IGNvdWxkIHN3aXRjaCB0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U2VuZCBhIG1lc3NhZ2UgdG8gdGhlIFRlYW0tUm9vbSBNb2RlcmF0b3JzLiBGb3IgZXhhbXBsZSBpZiB5b3UgbmVlZCBoZWxwIGluIE1vZGVyYXRpbmcgdGhlIFJvb20gb3IgaWYgeW91IGhhdmUgYSBxdWVzdGlvbiBhYm91dCB0aGUgdG9waWMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5TZW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4yKSBVc2VycyB0aGF0IGFyZSBpbnZpdGVkIHRvIHRoaXMgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5JcyBUZWFtLVJvb20gTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVzZSBhcmUgYWxsIHVzZXJzIHRoYXQgdGhlIG1vZGVyYXRvciBoYXMgaW52aXRlZCB0byB0aGlzIFRlYW0tUm9vbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1NyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIFRlYW0tTW9kZXJhdG9yIGxvZ2dlZCBpbiBhdCB0aGUgbW9tZW50ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGEgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+UGxlYXNlIGhlbHAgdXMsIHdlIGhhdmUgYSBwcm9ibGVtIGluIG91ciBUZWFtLVJvb20hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5BIHVzZXIgZnJvbSBhIFRlYW0tUm9vbSByZXF1ZXN0cyB5b3VyIGhlbHAuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb20gcmVxdWVzdCBmb3IgaGVscDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TWVzc2FnZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2MyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkZyb206PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGN1cnJlbnRseSBub3QgaW4gYW55IFRlYW0tUm9vbS4gQnV0IHlvdSBjYW4gc3dpdGNoIGhlcmUgdG8gYWxsIFRlYW0tUm9vbXMgdGhhdCB5b3UgaGF2ZSBhY2Nlc3MgdG8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjUiIG5hbWU9ImJhY2t1cENvbnRlbnQiPgorICAgIDx2YWx1ZT5CYWNrdXAgdGhlIFN5c3RlbS4gVGhlIEJhY2t1cCBpbmNsdWRlcyBhbGwgVXNlciBnZW5lcmF0ZWQgZGF0YS4gVGhlIGNvbmZpZ3VyYXRpb24gaXMgbm90IGluY2x1ZGVkIGFzIHdlbGwgYXMgdGhlIGxhbmd1YWdlIGxhYmVscy4gQmVjYXVzZSB0aG9zZSB2YWx1ZXMgYXJlIGltcG9ydGVkIHdpdGggdGhlIFN5c3RlbSBJbnN0YWxsZXIuIFRvIHVwZGF0ZSB5b3VyIFN5c3RlbSwgZXhwb3J0IHlvdXIgb2xkIHN5c3RlbSAoMSkgcmUtaW5zdGFsbCBpbnRvIGEgbmV3IGRhdGFiYXNlIHRoZSBuZXcgcGFja2FnZSAoMikgYW5kIGltcG9ydCB0aGUgQmFja3VwIGZpbGUgYWdhaW4gKDMpLiBUaGUgQmFja3VwIHNob3VsZCBiZSBpbXBvcnRlZCBiZWZvcmUgZ2VuZXJhdGluZyBkYXRhIGluIHRoZSBuZXdseSBpbnN0YWxsZWQgc3lzdGVtLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY2IiBuYW1lPSJiYWNrdXBDb250ZW50Ij4KKyAgICA8dmFsdWU+U3lzdGVtIEJhY2t1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY3IiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT5BbGxvdyB1c2VyIHRvIHNoYXJlIFNjcmVlbi9SZWNvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2OCIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+RGVueSB1c2VyIHRvIHNoYXJlIFNjcmVlbi9SZWNvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2OSIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+VXNlciBpcyBNb2RlcmF0b3IsIGhlIGNhbiBkbyBhbnl0aGluZyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3MCIgbmFtZT0iYXBwbHkgZm9yIHNjcmVlbi9yZWNvcmRpbmciPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIHNoYXJlL3JlY29yZCBzY3JlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzEiIG5hbWU9Im1vZGVyYXRpb24gbWluaSBpY29ucyI+CisgICAgPHZhbHVlPllvdSBhcmUgYWxsb3dlZCB0byBzaGFyZS9yZWNvcmQgc2NyZWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzIiIG5hbWU9Im1vZGVyYXRpb24gbWluaSBpY29ucyI+CisgICAgPHZhbHVlPkFwcGx5IGZvciByaWdodCB0byBzaGFyZS9yZWNvcmQgc2NyZWVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDczIiBuYW1lPSJtb2RlcmF0aW9uIG1pbmkgaWNvbnMgY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPkFsbG93L0RlbnkgcmlnaHQgdG8gc2hhcmUvcmVjb3JkIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3NCIgbmFtZT0ic291bmQgaWNvbiI+CisgICAgPHZhbHVlPlR1cm4gc291bmQgb2ZmPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzUiIG5hbWU9InNvdW5kIGljb24iPgorICAgIDx2YWx1ZT5UdXJuIHNvdW5kIG9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzYiIG5hbWU9InJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5BdWRpbyBvbmx5IHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3NyIgbmFtZT0icm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlR1cm4gdGhpcyBGbGFnIG9uIGFuZCB0aGUgdXNlcnMgd2lsbCBoYXZlIG9ubHkgdGhlIEF1ZGlvLU9wdGlvbiBhbmQgbm8gVmlkZW8gaW4gYSBjb25mZXJlbmNlIHJvb20uIFRoaXMgY2FuIGJ5IGdvb2QgdG8gc2F2ZSBiYW5kd2lkdGguPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzgiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFsbG93IFJlbW90ZSBDb250cm9sIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzkiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkRlbnkgUmVtb3RlIENvbnRyb2wgKER1cmluZyBTY3JlZW4gU2hhcmluZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MCIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QXBwbHkgZm9yIHJpZ2h0IHRvIFJlbW90ZSBDb250cm9sIFNjcmVlbiAoRHVyaW5nIFNjcmVlbiBTaGFyaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgxIiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGFsbG93ZWQgdG8gUmVtb3RlIENvbnRyb2wgU2NyZWVuIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODIiIG5hbWU9ImFwcGx5IGZvciByZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gcmVtb3RlIGNvbnRyb2wgc2NyZWVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgzIiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Vc2VyIGlzIE1vZGVyYXRvciwgaGUgY2FuIGRvIGFueXRoaW5nISBbUmVtb3RlIERlc2t0b3AgQ29udHJvbF08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4NCIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QWxsb3cvRGVueSByaWdodCB0byBSZW1vdGUgQ29udHJvbCBTY3JlZW4gKER1cmluZyBTY3JlZW4gU2hhcmluZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4NSIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+MSkgWW91ciBQQyB0byByZW1vdGUgUEM6IFRvIGNvcHkgYW5kIHBhc3RlIHRleHQgZnJvbSB5b3VyIGNsaXBib2FyZCBpbnRvIHRoZSByZW1vdGUgY29udHJvbGxlZCBzY3JlZW4sIGNsaWNrIG9uIHRoZSBzY3JlZW4sIHRoZW4gcmlnaHQgY2xpY2sgaW4gdGhlIHRleHQgZmllbGQgYW5kIGNob29zZSAiSW5zZXJ0IiBmcm9tIHRoZSBjb250ZXh0IChyaWdodCBjbGljaykgbWVudS4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7MikgRnJvbSByZW1vdGUgUEMgdG8geW91ciBQQzogVG8gY29weSB0ZXh0IGZyb20gdGhlIHJlbW90ZSBQQyB0byB5b3VyIFBDJ3MgY2xpcGJvYXJkLCBoaWdobGlnaHQgdGhlIHRleHQgd2l0aCB0aGUgbW91c2Ugb24gdGhlIHJlbW90ZSBzY3JlZW4sIHRoZW4gcmlnaHQtY2xpY2sgb24gdGhlIHJlbW90ZSBzY3JlZW4gYW5kIGNob29zZSAmbHQ7aSZndDtDb3B5IGhpZ2hsaWdodGVkIHRleHQmbHQ7L2kmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODYiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNvcHkgYW5kIFBhc3RlIHRleHQgZnJvbSB5b3VyIFBDIHRvIHJlbW90ZSBQQyBhbmQgdmljZS12ZXJzYS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4NyIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+Q29weSBoaWdobGlnaHRlZCB0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODgiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkhvdyB0byBjb3B5IG4gcGFzdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4OSIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+UXVhbGl0eSBvZiB0aGUgU2NyZWVuU2hhcmU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTAiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPlZlcnkgaGlnaCBRdWFsaXR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTEiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPkhpZ2ggUXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkyIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5NZWRpdW0gUXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkzIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5Mb3cgUXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk0IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPmVuX1VTPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTUiIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+ZGVfREU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NiIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5LZXlib2FyZDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NyIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5DbG9zZSBXZWJpbmFyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk4IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPlRoZSBXZWJpbmFyIGlzIGFscmVhZHkgY2xvc2VkLCB5b3Ugd2lsbCBiZSByZWRpcmVjdGVkIHRvIHNvbWUgaW50ZXJlc3Rpbmcgb2ZmZXJpbmdzIGluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTkiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+Q2xvc2UgUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAwIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPkV4aXQgVVJMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDEiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+Um9vbSB0ZXJtaW5hdGlvbiBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAyIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPklmIHRoZSByb29tIGlzIGNsb3NlZCB1c2VycyB3aWxsIGJlIHJlZGlyZWN0ZWQgdG8gdGhlIGV4aXQgVVJMLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAzIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkxkYXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA1IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNiIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5Db25maWcgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA3IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkxkYXAgQ29uZmlnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDgiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA5IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkVuYWJsZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JbnNlcnRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTExIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkluc2VydGVkIGJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTIiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+VXBkYXRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEzIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPlVwZGF0ZWQgYnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5UaGUgY29uZmlnIGZpbGVzIGFyZSBpbiB0aGUgZm9sZGVyIHdlYmFwcHMvb3Blbm1lZXRpbmdzL2NvbmYuIFlvdSBuZWVkIHRvIG1hbnVhbGx5IHVwbG9hZCB0aGUgZmlsZXMgdG8gdGhpcyBmb2xkZXIuIENoYW5nZXMgdG8gdGhlIGNvbmZpZyBmaWxlIGFyZSBpbW1lZGlhdGVseSBvbmxpbmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTUiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+Q29uZmlnIGZpbGUgbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE2IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPklmIHlvdSBlbmFibGUgIkFkZCBEb21haW4gdG8gdXNlcm5hbWUiIHRoZSB2YWx1ZSBvZiB0aGUgZmllbGQgImRvbWFpbiIgaXMgYWRkZWQgdG8gZWFjaCBsb2dpbiB0aGF0IHRoZSB1c2VyIGVudGVycyBpbiB0aGUgbG9naW4gYm94LiBUaGlzIGlzIHVzZWZ1bCBpZiB0aGUgTG9naW4gaW4gdGhlIExkYXAgaXMgc3RvcmVkIGluY2x1ZGluZyB0aGUgZG9tYWluIG5hbWUuIEV4YW1wbGU6IFVzZXIgZW50ZXJzICJoYW5zIiBkb21haW4gaXMgc3BlY2lmaWVkIGFzICJsb2NhbGhvc3QuY29tIiwgbG9naW4gdGhhdCBpcyB2ZXJpZmllZCBhZ2FpbnN0IExkYXAgaXM6IGhhbnNAbG9jYWxob3N0LmNvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE3IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkFkZCBEb21haW4gdG8gdXNlcm5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExOCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5Eb21haW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExOSIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5JbnNlcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMCIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5Db3B5IGhpZ2hsaWdodGVkIHRleHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMSIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5SZW1vdGUgQ2xpcGJvYXJkIFRleHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMiIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5TaG93IHJlbW90ZSBDbGlwYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMyIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+RG8gbm90IHNob3cgYWdhaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNCIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+Q29weSB0ZXh0IGhlcmUgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjUiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPllvdSBuZWVkIHRoZSByaWdodCB0byByZW1vdGUgY29udHJvbCAob3IgdGhlIG1vZGVyYXRpb24pIHRvIGNvcHkgYW5kIHBhc3RlIHRleHQgdG8gb3IgZnJvbSB0aGUgcmVtb3RlIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNiIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+RWRpdCBkZWZhdWx0IHNldHRpbmdzIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI3IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5EbyBub3Qgc2hvdyBpbmZvIGJveCBpbiBSZW1vdGUgQ29udHJvbCBhYm91dCBDb3B5IGFuZCBQYXN0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI4IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPlNhdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyOSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5SZW1vdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMSIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkludml0ZSB1c2VyIHRvIGNvbmZlcmVuY2Ugcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMyIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+Q2hvb3NlIGEgY29uZmVyZW5jZSByb29tLiBUaGUgaW52aXRlZCB1c2VyIHdpbGwgZ2V0IGEgbWVzc2FnZSB3aXRoIHlvdXIgbmFtZSBhbmQgYSBsaW5rIHRvIHRoZSByb29tLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMzIiBuYW1lPSJjaGF0IHVzZXIiPgorICAgIDx2YWx1ZT5Db25uZWN0ZWQgc2luY2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzQiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5FbnRlciByb29tIGFmdGVyIHNlbmRpbmcgaW52aXRhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM1IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+SW52aXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzYiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5NZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzciIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGludml0ZSB5b3UgdG8gdGhlIGNvbmZlcmVuY2Ugcm9vbTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzOCIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkludml0ZSBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzkiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5TZW5kIEludml0YXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0MCIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPmRpZCAmbHQ7YiZndDtub3QmbHQ7L2ImZ3Q7IGFjY2VwdCB5b3VyIGludml0YXRpb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDEiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5BY2NlcHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0MiIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkRlbnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0MyIgbmFtZT0idXNlciBwcm9maWxlIj4KKyAgICA8dmFsdWU+VGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0NCIgbmFtZT0iYXBwb2ludG1lbnQgbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+RXZlbnQgRGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ1IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDYiIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPkRlc2NyaXB0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDciIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPkNyZWF0ZWQgYnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0OCIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlRpbWVab25lIE1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0OSIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPkNoZWNrICJUaW1lWm9uZSBNZXNzYWdlIiB0byBnaXZlIHVzZXJzIGEgbWVzc2FnZSBuZXh0IHRpbWUgdGhleSBsb2dpbiB0byB1cGRhdGUgdGhlaXIgcHJvZmlsZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MCIgbmFtZT0idGltZSB6b25lIHVwZGF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+UGxlYXNlIGNoZWNrIHRoZSB0aW1lIHpvbmUgaW4geW91ciB1c2VyIHByb2ZpbGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTEiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPk5ldyAkQVBQX05BTUUgY29uZmVyZW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MiIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGV0YWlsczombHQ7YnIvJmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUzIiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TdGFydDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NCIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RW5kOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU1IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DaGFuZ2VkICRBUFBfTkFNRSBjb25mZXJlbmNlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU2IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Pcmdhbml6ZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTciIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkNhbmNlbGVkICRBUFBfTkFNRSBjb25mZXJlbmNlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU4IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgY29uZmVyZW5jZSBSZW1pbmRlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1OSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkNvbW11bml0eSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYwIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2hvdyBjb250YWN0IGRhdGEgdG8gZXZlcnlib2R5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjEiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5BZGQgZmllbGRzIG9mIGludGVyZXN0IHRoYXQgeW91IG9mZmVyIG9yIHRoYXQgeW91IGFyZSBzZWFyY2hpbmcgdG8gZmluZCBpbnRlcmVzdGluZyBwYXJ0bmVycyBmb3IgYSBjb25mZXJlbmNlLiBDb21tYSBzZXBhcmF0ZSB0aGUgdGVybXMgKGZvciBleGFtcGxlOiBNZWRpY2FsIFNlcnZpY2UsIEhlYWx0aCBhc3N1cmFuY2UsIC4uLik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MiIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk15IG9mZmVyaW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYzIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+TXkgaW50ZXJlc3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjQiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjUiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5UaW1lem9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY2IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+RmllbGRzIG9mIGludGVyZXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjciIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Db250YWN0IGluZm9ybWF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjgiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TaG93IGNvbnRhY3QgZGF0YSB0byBjb250YWN0cyBvbmx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjkiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TaG93IGNvbnRhY3QgZGF0YSB0byBub2JvZHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk15IFByb2ZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkVkaXQgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MiIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlNlYXJjaCB1c2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTczIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+V2F0Y2ggeW91ciBwcm9maWxlIGxpa2Ugb3RoZXIgc2VlIHlvdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc0IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+RWRpdCB5b3VyIHNldHRpbmdzLCBhZGQgeW91ciBpbnRlcmVzdHMgdG8gYmUgZm91bmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlNlYXJjaCBmb3Igb3RoZXIgdXNlcnMgYW5kIGV4dGVuZCB5b3VyIG5ldHdvcms8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NiIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5TZWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NyIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5Vc2VyIG9mZmVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc4IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlVzZXIgbG9va3MgZm9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzkiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+RnJlZXRleHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODEiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+VGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MiIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5PZmZlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MyIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5TZWFyY2hzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODQiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+U2VhcmNocmVzdWx0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODUiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+QWN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg2IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkFkZCB0byBjb250YWN0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg3IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlNlbmQgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg4IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkNvbnRhY3RzIGFuZCBNZXNzYWdlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg5IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlBlbmRpbmcgY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkFjY2VwdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkxIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+RGVueTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkyIiBuYW1lPSJ1c2VyIGNvbnRhY3QgcmVxdWVzdCI+CisgICAgPHZhbHVlPkhpLDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkzIiBuYW1lPSJ1c2VyIGNvbnRhY3QgcmVxdWVzdCI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gYWRkIHlvdSBhcyBjb250YWN0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk0IiBuYW1lPSJ1c2VyIGNvbnRhY3QgcmVxdWVzdCI+CisgICAgPHZhbHVlPkNoZWNrIHlvdXIgY29udGFjdCByZXF1ZXN0cyBpbiAkQVBQX05BTUUgb3IgY2xpY2sgb24gdGhvc2UgbGlua3MgdG8gYWNjZXB0IG9yIGRlbnkgdGhlIHJlcXVlc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NSIgbmFtZT0iYWRkIHVzZXIgY29udGFjdCI+CisgICAgPHZhbHVlPlRoaXMgdXNlciBpcyBhbHJlYWR5IGluIHlvdXIgY29udGFjdCBsaXN0IG9yIGhhcyByZWNlaXZlZCBhbiBpbnZpdGF0aW9uIHRvIHlvdXIgY29udGFjdCBsaXN0IHRoYXQgaXMgbm90IGFuc3dlcmVkIHlldC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NiIgbmFtZT0idXNlciBjb250YWN0IG1haWwiPgorICAgIDx2YWx1ZT5Zb3VyIGNvbnRhY3QgbGlzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+RWRpdCB5b3VyIGNvbnRhY3QgYW5kIG1lc3NhZ2VzLCZsdDtici8mZ3Q7IG1hbmFnZSB5b3VyIHBlbmRpbmcgY29udGFjdHMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTgiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5jb25maXJtZWQgeW91IGFzIGNvbnRhY3QhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTkiIG5hbWU9ImNoYXQgaW5mbyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDAiIG5hbWU9ImNoYXQgbG9nIGljb24iPgorICAgIDx2YWx1ZT5TaG93IC8gQ29weSBjaGF0IGxvZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAxIiBuYW1lPSJjaGF0IGxvZyB3aW5kb3ciPgorICAgIDx2YWx1ZT5DaGF0IExvZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Gcm9tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlN1YmplY3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWVzc2FnZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TmV3IE1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwOCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2xpY2sgdG8gd3JpdGUgYSBuZXcgbWVzc2FnZSB0byBhbnkgb2YgeW91ciBjb250YWN0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Xcml0ZSBuZXcgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjEwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Ubzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3ViamVjdDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMiIgbmFtZT0id2hpdGVib2FyZCBmdWxsLWZpdCI+CisgICAgPHZhbHVlPkVuYWJsZSBmdWxsIGZpdCBhbmQgdGhlIHdoaXRlYm9hcmQgd2lsbCB6b29tIHRoZSB3aG9sZSB3aGl0ZWJvYXJkIHNvIHRoYXQgYWxsJmx0O2JyLyZndDtkb2N1bWVudHMgYXJlIHZpc2libGUgYWNjb3JkaW5nIHRvIGVhY2ggcGFydGljaXBhbnRzIHNjcmVlbiByZXNvbHV0aW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjEzIiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT5LaWNrIHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNCIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBraWNrIHlvdXJzZWxmIG91dCBvZiB0aGUgY29uZmVyZW5jZSByb29tISBJZiB5b3Ugd2FudCB0byBsZWF2ZSBpdCBjbG9zZSB0aGUgYnJvd3NlciBvciB1c2UgdGhlIGV4aXQgYnV0dG9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE1IiBuYW1lPSJraWNrLXVzZXIiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGlzY29ubmVjdCB0aGlzIHVzZXIgZnJvbSB0aGlzIGNvbmZlcmVuY2Ugcm9vbT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNiIgbmFtZT0ia2ljay11c2VyIj4KKyAgICA8dmFsdWU+Q29uZmlybSBhY3Rpb24gLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTciIG5hbWU9ImtpY2stdXNlciI+CisgICAgPHZhbHVlPllvdSBjYW5ub3Qga2ljayBhIFN1cGVyLU1vZGVyYXRvciBvdXQgb2YgYSByb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Cb29rIGNvbmZlcmVuY2Ugcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TdGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5FbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIGFuIG9wdGlvbmFsIHJlcXVlc3QgZm9yIG1lZXRpbmcgdG8gdGhlIG1lc3NhZ2UgYW5kIGNyZWF0ZSBhIGNvbmZlcmVuY2Ugcm9vbS4gVGhlIEV2ZW50IGlzIHRoZW4gY29waWVkIGluIHRoZSBjYWxlbmRhciBvZiBldmVyeSBwYXJ0aWNpcGFudC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+SW5ib3g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UcmFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGlzIGlzIHlvdSEgWW91IGNhbm5vdCBhZGQgeW91cnNlbGYgYXMgeW91ciBvd24gY29udGFjdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoZSB1c2VyIGlzIGFscmVhZHkgZGVuaWVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VGhlIHVzZXIgaXMgYWxyZWFkeSBhcHByb3ZlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyOCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoaXMgdXNlciBjb250YWN0IGhhc2ggaXMgaW52YWxpZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyOSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlVzZXIgYWRkZWQgdG8gY29udGFjdCBsaXN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMwIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VXNlciBkZW5pZWQgYXMgY29udGFjdCBhbmQgcmVtb3ZlZCBmcm9tIHBlbmRpbmcgY29udGFjdCBsaXN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMxIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgbm8gc3VjaCBjb250YWN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMyIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+V291bGQgeW91IHJlYWxseSBsaWtlIHRvIHJlbW92ZSB0aGF0IGNvbnRhY3Q/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzMiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Db25maXJtIGNvbnRhY3QgcmVtb3ZhbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM0IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+RGVsZXRlIGNvbnRhY3QgZnJvbSBsaXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzUiIG5hbWU9InVzZXIgcHJvZmlsZSI+CisgICAgPHZhbHVlPlVzZXIgUHJvZmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM2IiBuYW1lPSJ1c2VyIHByb2ZpbGUiPgorICAgIDx2YWx1ZT5TaG93IHVzZXIgcHJvZmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM3IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5NZXNzYWdlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzOSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VsZWN0IGFsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWxlY3Qgbm9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWxlY3QgdW5yZWFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbGVjdCByZWFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1vdmUgdG8gZm9sZGVyIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgbmV3IGZvbGRlciAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGVsZXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDYiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRlbGV0ZWQgbWFpbHMgYXJlIHN0aWxsIGluIHlvdXIgdHJhc2ggZm9sZGVyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ3IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5NYXJrIHVucmVhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5NYXJrIHJlYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0OSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QW5zd2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTAiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFuc3dlciBldmVyeWJvZHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Rm9yd2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BY3Rpb25zIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUzIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+U2VuZCBwcml2YXRlIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Tm90aGluZyBzZWxlY3RlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TW92ZSB0byBJbmJveDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU2IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EZWxldGUgKGZpbmFsKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU3IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGlzIGFjdGlvbiBjYW5ub3QgYmUgdW5kb25lITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgZm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZCBmb2xkZXJzIGFuZCBvcmdhbml6ZSB5b3VyIG1lc3NhZ2VzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgZm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+RGVsZXRlIGZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBkZWxldGUgdGhpcyBmb2xkZXIsIHRoZXJlIGFyZSBzdGlsbCBtZXNzYWdlcyBpbnNpZGUhIERlbGV0ZSBmaXJzdCB0aGUgbWVzc2FnZXMgb3IgbW92ZSB0aGVtIHRvIGFub3RoZXIgZm9sZGVyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+RWRpdCBuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSBmb2xkZXIiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgZm9sZGVyPyBUaGVyZSBpcyBubyB3YXkgdG8gdW5kbyB0aGF0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY2IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+WW91ciByZXF1ZXN0IHdhcyBzZW5kIHRvIHRoZSB1c2VyLiBUaGUgdXNlciB3aWxsIHJlY2VpdmUgYSBub3RpZmljYXRpb24gdG8gYWNjZXB0IG9yIGRlbnkgeW91ciByZXF1ZXN0LiBPbmx5IGFjY2VwdGVkIHJlcXVlc3RzIGFyZSBpbiB5b3VyIGNvbnRhY3QgbGlzdCBvZiBjb3Vyc2UhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjciIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5NZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjgiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+VGhlIHVzZXIgZG9lcyBub3Qgc2hhcmUgaGlzIHBlcnNvbmFsIGNvbnRhY3QgZGF0YS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2OSIgbmFtZT0idXNlciB2aWV3IHByb2ZpbGUiPgorICAgIDx2YWx1ZT5UaGUgdXNlciBkb2VzIHNoYXJlIGhpcyBwZXJzb25hbCBjb250YWN0IGRhdGEgb25seSB0byBjb250YWN0cy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3MCIgbmFtZT0idXNlciB2aWV3IHByb2ZpbGUiPgorICAgIDx2YWx1ZT5BZGRyZXNzICZhbXA7IFBob25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzEiIG5hbWU9ImVycm9yIGNvZGUiPgorICAgIDx2YWx1ZT5Zb3UgaW52aXRhdGlvbiBjb2RlIGlzIG5vIHZhbGlkLCB0aGUgY29kZSBpcyBvbmx5IHZhbGlkIGR1cmluZyB0aGlzIHNwZWNpZmljIGRhdGUgYW5kIHRpbWU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzIiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5UaGlzIGV2ZW50IGlzIGNvbm5lY3RlZCB0byBzZXZlcmFsIGNhbGVuZGFycyBvZiBvdGhlciB1c2Vycy4gWW91ciBjaGFuZ2Ugd2lsbCBhbHNvIHVwZGF0ZSB0aGVpciBjYWxlbmRhci4gV291bGQgeW91IHJlYWxseSBsaWtlIHRvIHVwZGF0ZSB0aGUgZXZlbnQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzMiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Db25maXJtIHVwZGF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc0IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+QWxsb3cgY29udGFjdCB0byBzZWUgbXkgY2FsZW5kYXIgKHZpZXcgb25seSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkRvIG5vdCBzaGFyZSBjYWxlbmRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc2IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+Q2FsZW5kYXIgb2YgY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPllvdXIgY29udGFjdHMgbmVlZCB0byBhcHByb3ZlIHlvdSBmaXJzdCB0byBiZSBhYmxlIHRvIHNlZSB0aGVpciBjYWxlbmRhci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3OCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPllvdSBjYW5ub3Qgc3RvcmUgb3IgZGVsZXRlIGV2ZW50cyBmcm9tIG90aGVyIGNhbGVuZGFycyB0aGVuIHlvdXIgb3duITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc5IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+U2hvdyBteSBvd24gY2FsZW5kYXIgYWdhaW4hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODAiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5UaGlzIGV2ZW50IGlzIGNvbm5lY3RlZCB0byBzZXZlcmFsIGNhbGVuZGFycyBvZiBvdGhlciB1c2Vycy4gWW91ciBhY3Rpb24gd2lsbCBhbHNvIGRlbGV0ZSB0aGUgZXZlbnQgZnJvbSB0aGVpciBjYWxlbmRhci4gV291bGQgeW91IHJlYWxseSBsaWtlIHRvIGRlbGV0ZSB0aGUgZXZlbnQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODEiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Db25maXJtIGFjdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgyIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RW50ZXIgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgzIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QWNjZXNzIHRoZSBjb25mZXJlbmNlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgYSBjb25mZXJlbmNlIHJvb20gYW5kIGV2ZW50IGJvb2tlZCB3aXRoIHRoaXMgcHJpdmF0ZSBtZXNzYWdlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg1IiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgdG8gc3RvcmUgdGhlIGV2ZW50IGZpcnN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg2IiBuYW1lPSJhY2Nlc3Mgcm9vbXMgZXJyb3IiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBzdWNoIHJvb20gYXZhaWxhYmxlLiBUaGUgZXZlbnQgaW4gdGhlIGNhbGVuZGFyIGFuZCBjb25uZWN0ZWQgcm9vbSBpcyBhbHJlYWR5IGRlbGV0ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODciIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPkNob29zZSB5b3VyIG5pY2tuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODgiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPkZpcnN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg5IiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5MYXN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkwIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5FbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkxIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5PazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkyIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5NaW5pbXVtIGxlbmd0aCA0IGNoYXJzISBGb3IgYm90aCwgZmlyc3RuYW1lIGFuZCBsYXN0bmFtZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MyIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGEgdmFsaWQgZW1haWwhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTQiIG5hbWU9ImF1dGggZnJvbSI+CisgICAgPHZhbHVlPkZhY2Vib29rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTUiIG5hbWU9ImF1dGggZm9ybSI+CisgICAgPHZhbHVlPkxvZ2luIHdpdGggeW91ciBGYWNlYm9vayBhY2NvdW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTYiIG5hbWU9InZpZXcgcHJvZmlsZSI+CisgICAgPHZhbHVlPk1lbWJlciBzaW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk3IiBuYW1lPSJkaXJlY3QgbG9naW4gbWVzc2FnZSI+CisgICAgPHZhbHVlPllvdSd2ZSBsb2dnZWQgd2l0aCB5b3VyIEZhY2Vib29rIGFjY291bnQuIFlvdSBzaG91bGQgdXBkYXRlIHlvdXIgcHJvZmlsZSB3aXRoIHRoZSBjb3JyZWN0IGVtYWlsLiBPdGhlcndpc2UgeW91IHdpbGwgbm90IHJlY2VpdmUgaW52aXRhdGlvbnMgYW5kIHByaXZhdGUgbWVzc2FnZXMgZnJvbSBvdGhlciB1c2Vycy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5OCIgbmFtZT0iZGlyZWN0IGxvZ2luIG1lc3NhZ2UgaGVhZGVyIj4KKyAgICA8dmFsdWU+TWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk5IiBuYW1lPSJkaXJlY3QgbG9naW4gbWVzc2FnZSBjaGVja2JveCBjb250cm9sIj4KKyAgICA8dmFsdWU+RG8gbm90IHNob3cgdXBkYXRlIHByb2ZpbGUgbWVzc2FnZSBhZ2FpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAwIiBuYW1lPSJwcm9maWxlIHNldHRpbmdzIGJ1dHRvbiI+CisgICAgPHZhbHVlPm1vcmUgZGlzcGxheSBvcHRpb25zIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5OZXcgcHJpdmF0ZSBtZXNzYWdlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DbGljayBoZXJlIHRvIHZpc2l0IHlvdXIgcHJvZmlsZSB0byBzZWUgdGhlIGZ1bGwgbWVzc2FnZSAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+UmVwbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwNCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+Um9vbXMgYW5kIGNoYXRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDUiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPk15IHJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDYiIG5hbWU9Im15IHJvb21zIj4KKyAgICA8dmFsdWU+TXkgY29uZmVyZW5jZSByb29tIChmb3IgMS0xNiB1c2Vycyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwNyIgbmFtZT0ibXkgcm9vbXMiPgorICAgIDx2YWx1ZT5NeSB3ZWJpbmFyIHJvb20gKGZvciAxLTEyMCB1c2Vycyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwOCIgbmFtZT0icm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPk93bmVyIElkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDkiIG5hbWU9ImxvZ2luIGVycm9yIj4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGEgcGFzc3dvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMCIgbmFtZT0ibG9naW4gZXJyb3IiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCBhbiBhY2NvdW50IHdpdGggVXNlci1MZXZlbCBVc2VyLCBNb2RlcmF0b3Igb3IgQWRtaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMSIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPldlYi1TZXJ2aWNlIChvbmx5IGFjY2VzcyB2aWEgU09BUCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMiIgbmFtZT0idXBsb2FkIGZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5EbyBkaXJlY3RseSBsb2FkIHRvIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMyIgbmFtZT0id2hpdGVib2FyZCBjbG9zZSBjb25maXJtYXRpb24iPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gcmVtb3ZlIHRoaXMgd2hpdGVib2FyZD8gVGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxNCIgbmFtZT0id2hpdGVib2FyZCBsb2FkIFdNTCI+CisgICAgPHZhbHVlPkxvYWQgdG8gd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE1IiBuYW1lPSJyZWNvcmRpbmcgZmxhZyI+CisgICAgPHZhbHVlPkRvIG5vdCBmb3JnZXQgc3RhcnQgcmVjb3JkaW5nISBPbmUgdXNlciBwZXIgcm9vbSBhbHdheXMgbmVlZHMgdG8gc3RhcnQgaXQgdG8gaGF2ZSB0aGUgcmVjb3JkaW5nIGFmdGVyd2FyZHMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTYiIG5hbWU9InJlY29yZGluZyBmbGFnIj4KKyAgICA8dmFsdWU+U3RhcnQgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTciIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+QXJyb3c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxOCIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT5DaXJjbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxOSIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT5MaW5lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjAiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+U3F1YXJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjEiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+VHJpYW5nbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyMiIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlRleHQvTm90ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIzIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+Q2xpcGFydHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkRyYXcgRnJlZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI1IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+U2VsZWN0L01vdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNiIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkRyYXcgU2hhcGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNyIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkN1dC9Nb3ZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjgiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5ab29tIEluL091dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI5IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+UHJpbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlVuZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMSIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlRyYXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzIiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5BZGQgR3JpZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMzIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+U2hhcmUgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM0IiBuYW1lPSJpY29uIHN1Ym1lbnUiPgorICAgIDx2YWx1ZT5TZWxlY3QgU2hhcGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNSIgbmFtZT0iaWNvbiBzdWJtZW51Ij4KKyAgICA8dmFsdWU+U2VsZWN0IENsaXBhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNiIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkNvcHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNyIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkN1dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM4IiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+UGFzdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzOSIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkRlbGV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQwIiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGUgY29tcGxldGUgY29udGVudCBvbiB0aGUgd2hpdGVib2FyZD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MSIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkxvYWQgZGlyZWN0bHkgdG8gd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQyIiBuYW1lPSJhdHRlbmRlZXMiPgorICAgIDx2YWx1ZT5BdHRlbmRlZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MyIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+QXR0ZW5kZWUgTWFuYWdlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ0IiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5QcmVzZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDUiIG5hbWU9ImF0ZW5kZWUgbWFuYWdlciI+CisgICAgPHZhbHVlPlJlbW90ZSBDb250cm9sbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ2IiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5FamVjdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ3IiBuYW1lPSJjaGF0Ij4KKyAgICA8dmFsdWU+Q2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ4IiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5JbnZpdGUgQXR0ZW5kZWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDkiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPkJ5IEVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTAiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPlVzZXIgaXMgbW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTEiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPlVzZXIgaGFzIHdlYmNhbSBzd2l0Y2hlZCBvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUyIiBuYW1lPSJmaWxsX29wdGlvbiI+CisgICAgPHZhbHVlPkRlYWN0aXZhdGUgc2hhcGUgZmlsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUzIiBuYW1lPSJmaWxsX29wdGlvbiI+CisgICAgPHZhbHVlPkFjdGl2YXRlIHNoYXBlIGZpbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlNuYXAgdG8gR3JpZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU1IiBuYW1lPSJhbGxvd19yZWNvcmRpbmciPgorICAgIDx2YWx1ZT5BbGxvdyByZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NiIgbmFtZT0id2FpdF9mb3JfcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+V2FpdCBmb3IgcmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTciIG5hbWU9ImhpZGVfdG9wX2JhciI+CisgICAgPHZhbHVlPkhpZGUgdG9wYmFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTgiIG5hbWU9ImZpbGVFeHBsb3JlciI+CisgICAgPHZhbHVlPlBsYXkgdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1OSIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhlIGNvbnRlbnQgb24gdGhlIGN1cnJlbnQgc2xpZGU/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjAiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPkFjY2VwdCBhbmQgZ3JhbnQgdXNlciByaWdodDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYxIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT5EZW55PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjIiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPkk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2MyIgbmFtZT0iYWN0aXZpdHlfd2luZG93Ij4KKyAgICA8dmFsdWU+QWN0aXZpdGllcyBhbmQgYWN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY0IiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+UmVtb3ZlIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NSIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPllvdSBuZWVkIHRoZSBtb2RlcmF0aW9uIG9yIHRoZSByaWdodCB0byBkcmF3IG9uIHRoZSB3aGl0ZWJvYXJkIHRvIHJlbW92ZSB3aGl0ZWJvYXJkcyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NiIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPk5vdCBhbGxvd2VkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjciIG5hbWU9InVzZXJfbGVmdF9hY3RfbXNnIj4KKyAgICA8dmFsdWU+aGFzIGxlZnQgdGhlIHJvb20uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjgiIG5hbWU9ImNsaXBhcnQgaWNvbnMiPgorICAgIDx2YWx1ZT5NYXRoIGljb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjkiIG5hbWU9ImNsaXBhcnQgaWNvbnMiPgorICAgIDx2YWx1ZT5ObyBjYXRlZ29yeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzcwIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5Db2xvci1TdHlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzcxIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5RdWFsaXR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzIiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPkRvbWFpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzczIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT52aXNpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc0IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5yZWRvcmFuZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+bWVkaXVtc2VhZ3JlZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NiIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+c3RlZWxibHVlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzciIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPmxpZ2h0c3RlZWxibHVlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzgiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPmdvbGRlbnJlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc5IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5zaWx2ZXJncmF5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODAiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnVzZXJkZWZpbmVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODEiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPmJlc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4MiIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+dXBsb2FkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODMiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPm1lZGl1bTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg0IiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODUiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODYiIG5hbWU9ImdpdmUgZXhjbHVzaXZlIGF1ZGlvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIG9mIG90aGVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg3IiBuYW1lPSJtdXRlIHNlbGYgbWVzc2FnZSI+CisgICAgPHZhbHVlPllvdSBhcmUgZ2xvYmFsbHkgbXV0ZWQgYnkgdGhlIG1vZGVyYXRvci4gWW91IGNhbm5vdCB1bm11dGUgeW91cnNlbGYhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODgiIG5hbWU9Im11dGUgc2VsZiBjb25maXJtIG1lc3NhZ2UgdGl0bGUiPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgZ2xvYmFsbHk/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODkiIG5hbWU9Im11dGUgc2VsZiBjb25maXJtIG1lc3NhZ2UgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBtdXRlIHlvdXJzZWxmIGdsb2JhbGx5PyBObyBvdGhlciB1c2VyIHdpbGwgaGVhciB5b3UgYW55bW9yZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5MCIgbmFtZT0ibXV0ZSBvdGhlcnMgY29uZmlybSBtZXNzYWdlIHRpdGxlIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGxvY2FsbHk/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTEiIG5hbWU9Im11dGUgb3RoZXJzIGNvbmZpcm0gbWVzc2FnZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBtdXRlIHRoaXMgbWljcm9waG9uZT8gWW91IGNhbiBvbmx5IG11dGUgaXQgbG9jYWxseSBvbiB5b3VyIHNjcmVlbi4gSXQgaGFzIG5vIGVmZmVjdCB0byBob3cgb3RoZXIgdXNlcnMgaGVhciB0aGlzIHVzZXIuIE9ubHkgbW9kZXJhdG9ycyBjYW4gdHVybiBpdCBvZmYgZ2xvYmFsbHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTIiIG5hbWU9Im11dGUgb3RoZXJzIGNvbmZpcm0gbWVzc2FnZSB0aXRsZSI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBvZmYgZ2xvYmFsbHk/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTMiIG5hbWU9Im11dGUgb3RoZXJzIG1vZGVyYXRvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIG11dGUgdGhpcyB1c2VyIGdsb2JhbGx5PyBObyBvdGhlciB1c2VyIHdpbGwgaGVhciBoaW0gYW55bW9yZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5NCIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5Zb3VyIHNvdW5kIGlzIG9uLiBDbGljayBoZXJlIHRvIHNlbmQgbW9kZXJhdG9yIG1lc3NhZ2UgdG8gbXV0ZSB5b3VyIG1pY3JvcGhvbmUgZ2xvYmFsbHkgKGluIHRoZSBjb21wbGV0ZSBjb25mZXJlbmNlIHJvb20pIG9mZiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5NSIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5Zb3VyIHNvdW5kIGlzIG9mZi4gQ2xpY2sgaGVyZSB0byBzZW5kIG1vZGVyYXRvciBtZXNzYWdlIHRvIHVubXV0ZSB5b3VyIG1pY3JvcGhvbmUgZ2xvYmFsbHkgKGluIHRoZSBjb21wbGV0ZSBjb25mZXJlbmNlIHJvb20pIG9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk2IiBuYW1lPSJtdXRlIGFwcGx5IHNlbGYgb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdGhhdCB0aGUgbW9kZXJhdG9yIG11dGVzIG15IG1pY3JvcGhvbmUgZ2xvYmFsbHkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTciIG5hbWU9Im11dGUgYXBwbHkgc2VsZiBvZmYgbWVzc2FnZSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdGhhdCB0aGUgbW9kZXJhdG9yIHVubXV0ZXMgbXkgbWljcm9waG9uZSBnbG9iYWxseS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5OCIgbmFtZT0ibXV0ZSBhcHBseSBvZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+d2FudCB0aGF0IHRoZSBtb2RlcmF0b3IgdW5tdXRlcyBoaXMvaGVyIG1pY3JvcGhvbmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTkiIG5hbWU9Im11dGUgYXBwbHkgb2YgbWVzc2FnZSI+CisgICAgPHZhbHVlPndhbnQgdGhhdCB0aGUgbW9kZXJhdG9yIG11dGVzIGhpcy9oZXIgbWljcm9waG9uZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMCIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5Vbm11dGUgbWljcm9waG9uZS4gQ2xpY2sgaGVyZSB0byBtdXRlIGhpcy9oZXIgbWljcm9waG9uZSBnbG9iYWxseSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMSIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUuIENsaWNrIGhlcmUgdG8gdW5tdXRlIGhpcy9oZXIgbWljcm9waG9uZSBnbG9iYWxseSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMiIgbmFtZT0ibXV0ZSBzZWxmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGlzIHVzZXIgaXMgZ2xvYmFsbHkgbXV0ZWQgYnkgdGhlIG1vZGVyYXRvci4gWW91IGNhbm5vdCB1bm11dGUgaGltITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDAzIiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TXV0ZSB5b3VyIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwNCIgbmFtZT0idW5tdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+VW5tdXRlIHlvdXIgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA1IiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDYiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSBtaWNyb3Bob25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDciIG5hbWU9Im11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwOCIgbmFtZT0idW5tdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+VW5tdXRlIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwOSIgbmFtZT0ibXV0ZSBtb2RlcmF0b3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPk9ubHkgbW9kZXJhdG9ycyBjYW4gbXV0ZSBvciB1bm11dGUgYW4gdXNlciBnbG9iYWxseSEgVG8gbXV0ZSB5b3VyIG93biBtaWNyb3Bob25lOiBQbGVhc2UgdXNlIHRoZSBtaWNyb3Bob25lIGljb24gaW4geW91ciB2aWRlbyBwb2QhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTAiIG5hbWU9InBvbGxfbmFtZSI+CisgICAgPHZhbHVlPlBvbGwgTmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDExIiBuYW1lPSJwb2xsX25hbWUiPgorICAgIDx2YWx1ZT5Zb3U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMiIgbmFtZT0iYXJjaGl2ZWRfcG9sbHMiPgorICAgIDx2YWx1ZT5BcmNoaWV2ZWQgUG9sbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMyIgbmFtZT0iYWN0aXZlX3BvbGwiPgorICAgIDx2YWx1ZT5hY3RpdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNCIgbmFtZT0iY2hhcnRfc2ltcGxlIj4KKyAgICA8dmFsdWU+U2ltcGxlIENoYXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTUiIG5hbWU9ImNoYXJ0X3BpZSI+CisgICAgPHZhbHVlPlBpZSBDaGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE2IiBuYW1lPSJzaWduX3VwX3ZhbGlkYXRpb24iPgorICAgIDx2YWx1ZT5QbGVhc2UgZW50ZXIgZW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNyIgbmFtZT0iY2hhdF9ub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5OZXcgbWVzc2FnZShzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE4IiBuYW1lPSJwb2xsX2Nsb3NlIj4KKyAgICA8dmFsdWU+Q2xvc2UgUG9sbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE5IiBuYW1lPSJwb2xsX2Nsb3NlX2NvbmZpcm0iPgorICAgIDx2YWx1ZT5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gY2xvc2UgdGhpcyBQb2xsPyBObyBvbmUgd2lsbCBiZSBhYmxlIHRvIHZvdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMCIgbmFtZT0icG9sbF9kZWxldGUiPgorICAgIDx2YWx1ZT5EZWxldGUgUG9sbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIxIiBuYW1lPSJwb2xsX2RlbGV0ZV9jb25maXJtIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIFBvbGw/IFRoZSByZXN1bHRzIHdpbGwgYmUgZGVsZXRlZCBhcyB3ZWxsLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIyIiBuYW1lPSJsYW5ndWFnZV9jb2RlIj4KKyAgICA8dmFsdWU+TGFuZ3VhZ2UgSVNPIENvZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMyIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX3Blcm1pc3Npb24iPgorICAgIDx2YWx1ZT5BbGxvdy9EZW55IHJpZ2h0IHRvIGdpdmUgZXhjbHVzaXZlIGF1ZGlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI0IiBuYW1lPSJhbGxvd19leGNsdXNpdmVfYXVkaW9fcGVybWlzc2lvbiI+CisgICAgPHZhbHVlPkFsbG93IHVzZXIgdG8gZ2l2ZSBleGNsdXNpdmUgYXVkaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNSIgbmFtZT0iZGVueV9leGNsdXNpdmVfYXVkaW9fcGVybWlzc2lvbiI+CisgICAgPHZhbHVlPkRlbnkgdXNlciB0byBnaXZlIGV4Y2x1c2l2ZSBhdWRpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI2IiBuYW1lPSJleGNsX2F1ZGlvIGFwcGx5IHNlbGYgb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gZ2V0IGEgcGVybWlzc2lvbiBmb3IgZXhjbHVzaXZlIGF1ZGlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI3IiBuYW1lPSJleGNsX2F1ZGlvIGFwcGx5IG9mIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53YW50IHRoYXQgdGhlIG1vZGVyYXRvciBnaXZlcyBtZSBhIHBlcm1pc3Npb24gZm9yIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyOCIgbmFtZT0iZXhjbF9hdWRpbyBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5HaXZlIGEgcGVybWlzc2lvbiBmb3IgZXhjbHVzaXZlIGF1ZGlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI5IiBuYW1lPSJjYW1fcmVzb2x1dGlvbiI+CisgICAgPHZhbHVlPkNhbSByZXNvbHV0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzAiIG5hbWU9ImNhbV9yZXNvbHV0aW9uX2luZm8iPgorICAgIDx2YWx1ZT5DaGFuZ2luZyB0aGUgcmVzb2x1dGlvbiBhZmZlY3RzIGJhbmR3aWR0aCwgYmlnZ2VyIHBpY3R1cmUgbmVlZHMgbW9yZSBiYW5kd2l0aCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzMSIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2Vycm9yIj4KKyAgICA8dmFsdWU+WW91IGRvbid0IGhhdmUgdGhlIHJpZ2h0IHRvIGdpdmUgeW91cnNlbGYgb3Igb3RoZXJzIGV4Y2x1c2l2ZSBhdWRpby4gWW91IG5lZWQgdG8gYXBwbHkgZm9yIHRoZSByaWdodCBmcm9tIHRoZSBtb2RlcmF0b3Igb3IgYXNrIHRoZSBtb2RlcmF0b3IgdG8gZ2l2ZSB5b3UgZXhjbHVzaXZlIGF1ZGlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMyIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fYXNrIj4KKyAgICA8dmFsdWU+SSB3b3VsZCBsaWtlIHRvIGdldCB0aGUgcmlnaHQgZm9yIGV4Y2x1c2l2ZSBhdWRpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMzIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fYWN0aW9uIj4KKyAgICA8dmFsdWU+R2l2ZSBleGNsdXNpdmUgYXVkaW8gdG8gbWUgKGFsdGVybmF0aXZlbHkgY2xpY2sgb24geW91ciB2aWRlbyBwb2Qgb3IgcHJlc3MgRjEyKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM0IiBuYW1lPSJtaWNybyBpcyBvbiI+CisgICAgPHZhbHVlPk1pY3JvcGhvbmUgaXMgb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzUiIG5hbWU9Im1pY3JvIGlzIG9mZiI+CisgICAgPHZhbHVlPk1pY3JvcGhvbmUgaXMgbXV0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNiIgbmFtZT0iaGlkZV9jaGF0Ij4KKyAgICA8dmFsdWU+SGlkZSBjaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzciIG5hbWU9ImhpZGVfYWN0aXZpdGllc19hbmRfYWN0aW9ucyI+CisgICAgPHZhbHVlPkhpZGUgYWN0aXZpdGllczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM4IiBuYW1lPSJoaWRlX2ZpbGVzX2V4cGxvcmVyIj4KKyAgICA8dmFsdWU+SGlkZSBmaWxlcyBleHBsb3JlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM5IiBuYW1lPSJoaWRlX2FjdGlvbnNfbWVudSI+CisgICAgPHZhbHVlPkhpZGUgYWN0aW9ucyBtZW51PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDAiIG5hbWU9ImhpZGVfc2NyZWVuX3NoYXJpbmciPgorICAgIDx2YWx1ZT5IaWRlIHNjcmVlbiBzaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDEiIG5hbWU9ImhpZGVfd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkhpZGUgd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQyIiBuYW1lPSJzaG93IG1pY3JvcGhvbmUgc3RhdHVzIj4KKyAgICA8dmFsdWU+U2hvdyBtaWNybyBzdGF0dXMgaW4gdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MyIgbmFtZT0ibGF5b3V0X29wdGlvbnMiPgorICAgIDx2YWx1ZT5MYXlvdXQgb3B0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ0IiBuYW1lPSJjYWxlbmRhciBuZXcgYnV0dG9uIj4KKyAgICA8dmFsdWU+TmV3IEV2ZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDUiIG5hbWU9ImNhbGVuZGFyIHBhc3N3b3JkIGluZm8gdGV4dCI+CisgICAgPHZhbHVlPlBhc3N3b3JkIHByb3RlY3RlZCBhcmUgdGhlIGxpbmtzIHRvIHRoZSBjb25mZXJlbmNlIHRoYXQgYXJlIHNlbmQgdG8gdGhlIHBhcnRpY2lwZW50cyB3aGVuIHlvdSBzYXZlIHRoZSBjYWxlbmRhciBldmVudCwgbm90IHRoZSByb29tISBUaGF0IG1lYW5zIGlmIHlvdSBzYXZlIHRoZSBldmVudCBtdWx0aXBsZSB0aW1lcyBidXQgd2l0aCBkaWZmZXJlbnQgcGFzc3dvcmRzIGV2ZXJ5IHBhcnRpY2lwZW50IHJlY2VpdmVzIGEgbmV3IGxpbmsgdGhhdCBoYXMgYSBkaWZmZXJlbnQgcGFzc3dvcmQuIEJ1dCBvbGQgbGlua3Mgc3RpbGwgd29yayBvbmNlIHNlbmQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDYiIG5hbWU9ImNhbGVuZGFyIGVkaXQgYnV0dG9uIj4KKyAgICA8dmFsdWU+RWRpdCBkZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDciIG5hbWU9InNpcCBzaG93IGRpYWxlciI+CisgICAgPHZhbHVlPlNob3cgc2lwIGRpYWxlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ4IiBuYW1lPSJzaXAgY2FsbCI+CisgICAgPHZhbHVlPkNhbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0OSIgbmFtZT0iY2FsZW5kYXIgY29udGFjdCBsaXN0Ij4KKyAgICA8dmFsdWU+U2hvdyBjYWxlbmRhciBldmVudHMgb2YgY29udGFjdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUwIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5Zb3VyIGhvbWUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTEiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPlBsYW4geW91ciBtZWV0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUyIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5XYXRjaCByZWNvcmRpbmcgYW5kIGludGVydmlld3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MyIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+Q2hvb3NlIGFuZCBzdGFydCBhIHdlYi1jb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTQiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSB1c2VycyBhbmQgcmlnaHRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTUiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBjb25uZWN0aW9ucyBhbmQga2ljayB1c2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU2IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgdXNlcmdyb3VwczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU3IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgY29uZmVyZW5jZSByb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU4IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2Ugc3lzdGVtIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTkiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBsYWJlbHMgYW5kIHdvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIExEQVAgYW5kIEFEUyBjb25maWd1cmF0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYxIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5FeHBvcnQvSW1wb3J0IFN5c3RlbSBCYWNrdXBzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjIiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCBtb2RlcmF0aW9uIG9yIHRoZSByaWdodCB0byBkcmF3IG9uIHdoaXRlYm9hcmQgdG8gdXBsb2FkLCBhZGQsIGRlbGV0ZSBvciBsb2FkIGZpbGVzIGFuZCBmb2xkZXJzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYzIiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+RWRpdCB0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjQiIG5hbWU9InNhbHV0YXRpb24iPgorICAgIDx2YWx1ZT5Qcm9mPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjUiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UHVibGlzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY2IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlN0YXJ0IFB1Ymxpc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2NyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdG9wIFB1Ymxpc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2OCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5Ib3N0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjkiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UHVibGlzaCBBcHA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5QdWJsaXNoIElkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzEiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UmVkdWNlIHRoZSB3aWR0aCBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtb3ZlIGl0IGxlZnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5SZWR1Y2UgdGhlIGhlaWdodCBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtb3ZlIGl0IGJvdHRvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDczIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHVjZSB0aGUgeCBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtYWtlIGl0IHdpZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzQiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UmVkdWNlIHRoZSB5IG9mIHRoZSBTaGFyaW5nU2NyZWVuIGJlZm9yZSB5b3UgdHJ5IHRvIG1ha2UgaXQgaGlnaGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzUiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+RmlsbCB0aGVzZSBzZXR0aW5ncyBzdHJlYW0geW91ciBzY3JlZW4gZGF0YSB0byAzdGggcGFydHkgcHJvdmlkZXJzIGxpa2UganVzdGluLnR2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzYiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UGxlYXNlIHN0YXJ0IFNjcmVlbiBzaGFyaW5nIHRvIGJlIGFibGUgdG8gcHVibGlzaCBpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc3IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPk1vZGVyYXRvciBwZXJtaXNzaW9uIHJlcXVpcmVkIHRvIHN0YXJ0IHJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc4IiBuYW1lPSJubyByaWdodCBmb3IgZXhjbHVzaXZlIGF1ZGlvIj4KKyAgICA8dmFsdWU+WW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byBhcHBseSBleGNsdXNpdmUgYXVkaW8gdG8gYW55IHBhcnRpY2lwYW50LiBZb3UgbmVlZCBtb2RlcmF0aW9uIHJvbGUgb3IgdGhlIHJpZ2h0IGZvciBleGNsdXNpdmUgYXVkaW8gdG8gbWFrZSBhbnkgbWljcm9waG9uZSBleGNsdXNpdmUgdHVybmVkIG9uLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3OSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+VXBsb2FkIG5ldyBmaWxlIHRvIGZpbGUgZXhwbG9yZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+T3BlbiBuZXcgZGlhbG9nIHdpdGggc2hhcmluZyBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgxIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5BbiBleGlzdGluZyBtb2RlcmF0b3IgbXVzdCBhcHByb3ZlIGl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODIiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkFzayBtb2RlcmF0b3IgdG8gc2hhcmUgeW91ciB3ZWJjYW0vbWljcm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MyIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+R2F0aGVyIGZlZWRiYWNrIGJ5IGNyZWF0aW5nIGEgcG9sbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg0IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5QYXN0IGFuZCBjdXJyZW50IHBvbGwgcmVzdWx0cyBhcyBjaGFydHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Vm90ZSBpZiB0aGVyZSBpcyBhIHBvbGwgZm9yIHRoaXMgY29uZmVyZW5jZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODYiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkVkaXQgY2FtIGFuZCBtaWMgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NyIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Q29uZmlybSBhbmQgbGVhdmUgdGhlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4OCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Q2FsbCBleHRlcm5hbCBwZW9wbGUgdmlhIFZvSVAvU0lQPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODkiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlNlbmQgYW4gZW1haWwgd2l0aCBhIGRpcmVjdCBsaW5rIHRvIHRoaXMgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkwIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5DaGFuZ2UgeW91ciB3aGl0ZWJvYXJkIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTEiIG5hbWU9ImJhY2t1cCBhZG1pbiI+CisgICAgPHZhbHVlPk1heCB1cGxvYWQgc2l6ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkyIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5Bc2sgbW9kZXJhdG9yIHRvIHNoYXJlIHlvdXIgd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkzIiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5TdGFydCBQcml2YXRlIENoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NCIgbmFtZT0iYWxsX3ByaXZhdGVfY2hhdCI+CisgICAgPHZhbHVlPkFsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk1IiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IHN0YXJ0IGEgcHJpdmF0ZSBjaGF0IHdpdGggeW91cnNlbGYuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTYiIG5hbWU9InByaXZhdGUgY2hhdCI+CisgICAgPHZhbHVlPllvdSd2ZSBhbHJlYWR5IHN0YXJ0ZWQgYSBwcml2YXRlIGNoYXQgd2l0aCB0aGlzIHBhcnRpY2lwYW50LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk3IiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcHJpdmF0ZSBjaGF0PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk4IiBuYW1lPSJTZXJ2ZXJzIj4KKyAgICA8dmFsdWU+U2VydmVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk5IiBuYW1lPSJTZXJ2ZXJzIj4KKyAgICA8dmFsdWU+U2VydmVycyBwYXJ0aWNpcGF0aW5nIGluIGNsdXN0ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMCIgbmFtZT0iU2VydmVyIG5hbWUiPgorICAgIDx2YWx1ZT5TZXJ2ZXIgTmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAxIiBuYW1lPSJTZXJ2ZXIgQWRkcmVzcyI+CisgICAgPHZhbHVlPlNlcnZlciBBZGRyZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDIiIG5hbWU9IlNlcnZlciBkZXRhaWxzIj4KKyAgICA8dmFsdWU+U2VydmVyIGRldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMyIgbmFtZT0iU2VuZCBTTVMiPgorICAgIDx2YWx1ZT5TZW5kIFNNUzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA0IiBuYW1lPSJwdWJsaXNoaW5nX21lc3NhZ2UiPgorICAgIDx2YWx1ZT5QdWJsaXNoaW5nLiBVc2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA1IiBuYW1lPSJjbWRfbGluZV9hZG1pbiI+CisgICAgPHZhbHVlPlRvIHNhdmUgdGltZSBhbmQgaW50ZXJuZXQgdHJhZmZpYyB5b3UgY2FuIHVzZSBjb21tYW5kIGxpbmUgYWRtaW4gdG8gYmFja3VwL3Jlc3RvcmUvdXBncmFkZTpcbiAxKSBnbyB0byBPTSBpbnN0YWxsIGRpciAoZm9yIGV4LiAvb3B0L3JlZDUpIFxuIDIpIHN0b3AgT00gKGZvciBleC4gLi9yZWQ1LXNodXRkb3duLnNoKVxuIDMpIC4vYWRtaW4uc2ggLWIgLWZpbGUgfi90b2RheV9vbV9iYWNrdXAuemlwIChjcmVhdGUgYmFja3VwIG9mIGN1cnJlbnQgT00pXG4gNCkgZG93bmxvYWQgYXJjaGl2ZSB3aXRoIG5ldyBPTVxuIDUpIG12IC9vcHQvcmVkNSAvb3B0LnJlZDUuYmFrIChtb3ZlIHdvcmtpbmcgdmVyc2lvbiBvZiBPTSBqdXN0IGluIGNhc2UgOikpXG4gNikgZXh0cmFjdCBkb3dubG9hZGVkIE9NIHRvIHRoZSAvb3B0L3JlZDVcbiA3KSAuL2FkbWluLnNoIC1pIC1maWxlIH4vdG9kYXlfb21fYmFja3VwLnppcCAob3IgJy4vYWRtaW4uc2ggLWkgLWZpbGUgfi90b2RheV9vbV9iYWNrdXAuemlwIC0tZGItdHlwZSBteXNxbCAtLWRiLXVzZXIgb21fdXNlciAtLWRiLXBhc3Mgb21fdXNlcl9wYXNzJyBpbiBjYXNlIG9mIHlvdSBhcmUgdXNpbmcgbm9uLWRlZmF1bHQgREIgKVxuIDgpIHN0YXJ0IE9NXG48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNiIgbmFtZT0icHVibGljX3Jvb21fdG9vbHRpcCI+CisgICAgPHZhbHVlPlJvb21zIGNvbW1vbiB0byBhbGwgdXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA3IiBuYW1lPSJwcml2YXRlX3Jvb21fdG9vbHRpcCI+CisgICAgPHZhbHVlPlJvb21zIGNvbW1vbiB0byB0aGUgY3VycmVudCB1c2VyIGdyb3VwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDgiIG5hbWU9Im15X3Jvb21fdG9vbHRpcCI+CisgICAgPHZhbHVlPlJvb21zIG9mIHRoZSBjdXJyZW50IHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwOSIgbmFtZT0iY3JlYXRlX25ld19yb29tIj4KKyAgICA8dmFsdWU+Q3JlYXRlL01vZGlmeSBhcHBvaW50bWVudCBzcGVjaWFsIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxMCIgbmFtZT0ibXVsdGlwbGVfYWRkcmVzc2VzIj4KKyAgICA8dmFsdWU+WW91IGNhbiBlbnRlciBtdWx0aXBsZSBhZGRyZXNzZXMgaW4gdGhlIGZvcm1hdDogZmlyc3RuYW1lMSBsYXN0bmFtZTEgJmx0O2VtYWlsMSZndDssImZpcnN0bmFtZTIgbGFzdG5hbWUyIiAmbHQ7ZW1haWwyJmd0OywnZmlyc3RuYW1lMyBsYXN0bmFtZTMnICZsdDtlbWFpbDMmZ3Q7LCAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxMSIgbmFtZT0ic3RyZWFtX3ZvbHVtZSI+CisgICAgPHZhbHVlPkFkanVzdCBzdHJlYW0gdm9sdW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTIiIG5hbWU9Im1pY3JvcGhvbmVfdm9sdW1lIj4KKyAgICA8dmFsdWU+QWRqdXN0IG1pY3JvcGhvbmUgdm9sdW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTMiIG5hbWU9ImNoYXRfbW9kZXJhdGVkIj4KKyAgICA8dmFsdWU+SXMgY2hhdCBtb2RlcmF0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNCIgbmFtZT0iY2hhdF9tb2RlcmF0ZWQiPgorICAgIDx2YWx1ZT5BbGxvdyBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTUiIG5hbWU9ImNoYXRfb3BlbmVkIj4KKyAgICA8dmFsdWU+Q2hhdCBwYW5lbCBvcGVuZWQgYnkgZGVmYXVsdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE2IiBuYW1lPSJmaWxlc19vcGVuZWQiPgorICAgIDx2YWx1ZT5GaWxlcyBwYW5lbCBvcGVuZWQgYnkgZGVmYXVsdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE3IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gc2VjdGlvbiBsYXN0cGluZyI+CisgICAgPHZhbHVlPkxhc3QgcGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE4IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gc2VjdGlvbiBsYXN0cGluZyBpbmZvIj4KKyAgICA8dmFsdWU+RXZlcnkgc2xhdmUgc2VuZHMgYSBwaW5nIHRvIHRoZSBtYXN0ZXIgZXZlcnkgMyBzZWNvbmRzIChjb25maWd1cmFibGUpLiBTbGF2ZSBsYXN0UGluZyBtdXN0IGJlIHNtYWxsZXIgdGhlbiAxIG1pbnV0ZSBzbyB0aGF0IHRoZSBtYXN0ZXIgdXNlcyB0aGUgc2xhdmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTkiIG5hbWU9InNlcnZlciBhZG1pbiBwb3J0Ij4KKyAgICA8dmFsdWU+SFRUUCBQb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjAiIG5hbWU9InNlcnZlciBhZG1pbiB1c2VyIj4KKyAgICA8dmFsdWU+VXNlciAoU09BUC1BY2Nlc3MpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjEiIG5hbWU9InNlcnZlciBhZG1pbiBwYXNzd29yZCI+CisgICAgPHZhbHVlPlBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjIiIG5hbWU9InNlcnZlciBhZG1pbiB3ZWJhcHAgcGF0aCI+CisgICAgPHZhbHVlPldlYmFwcCBwYXRoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjMiIG5hbWU9InNlcnZlciBhZG1pbiBwcm90b2NvbCI+CisgICAgPHZhbHVlPlByb3RvY29sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjQiIG5hbWU9InNlcnZlciBhZG1pbiBwaW5nIHJ1bm5pbmciPgorICAgIDx2YWx1ZT5QaW5nIHJ1bm5pbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyNSIgbmFtZT0ic2VydmVyIGFkbWluIGFjdGl2ZSI+CisgICAgPHZhbHVlPkFjdGl2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI2IiBuYW1lPSJnZW5lcmF0ZV9oYXNoIj4KKyAgICA8dmFsdWU+R2VuZXJhdGUgVVJMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjciIG5hbWU9Im5ldHdvcmsgdGVzdGluZyBsaW5rIj4KKyAgICA8dmFsdWU+TmV0d29yayB0ZXN0aW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjgiIG5hbWU9InJvb21fb3B0aW9ucyI+CisgICAgPHZhbHVlPkF1dG8gc2VsZWN0IGludGVydmlldyB2aWRlbyBwb2Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyOSIgbmFtZT0iZm9udF91bmRlcmxpbmUiPgorICAgIDx2YWx1ZT5VbmRlcmxpbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMCIgbmFtZT0iZm9udF9zdHlsZSI+CisgICAgPHZhbHVlPkZvbnQgc3R5bGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMSIgbmFtZT0iYWxsb3dfZm9udF9zdHlsZXMiPgorICAgIDx2YWx1ZT5BbGxvdyBmb250IHN0eWxlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMyIiBuYW1lPSJmb250X2NvbG9yIj4KKyAgICA8dmFsdWU+Rm9udCBjb2xvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMzIiBuYW1lPSJoeXBlcmxpbmsiPgorICAgIDx2YWx1ZT5IeXBlcmxpbms8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNCIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbiI+CisgICAgPHZhbHVlPlNob3cgc2Vzc2lvbiBzdGF0aXN0aWNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzUiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW4iPgorICAgIDx2YWx1ZT5TZXNzaW9uIGRldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNiIgbmFtZT0ic3lzdGVtX2ltcG9ydCI+CisgICAgPHZhbHVlPlN5c3RlbSBpbXBvcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNyIgbmFtZT0iaW5jbHVkZV9pbnRvX2JhY2t1cCI+CisgICAgPHZhbHVlPkluY2x1ZGUgdXBsb2FkZWQgZmlsZXMgYW5kIHJlY29yZGluZ3MgaW4gYmFja3VwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzgiIG5hbWU9InJvb21fYWRtaW5fc2lwIj4KKyAgICA8dmFsdWU+RW5hYmxlIFNJUCB0cmFuc3BvcnQgaW4gdGhlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzOSIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2NvbmZpcm0iPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gcHJvdmlkZSB0aGlzIHVzZXIgYW4gZXhjbHVzaXZlIGF1ZGlvPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTQwIiBuYW1lPSJub190aW1lem9uZSI+CisgICAgPHZhbHVlPlBsZWFzZSBzcGVjaWZ5IHlvdXIgdGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU0NSIgbmFtZT0iY29udGVudF9pc19zYXZpbmciPgorICAgIDx2YWx1ZT5Db250ZW50IGlzIFNhdmluZywgUGxlYXNlIHdhaXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+Cis8L2xhbmd1YWdlPgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9sYW5ndWFnZXMvcG9saXNoLnhtbCBiL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL3BvbGlzaC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM1NDBlMwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL3BvbGlzaC54bWwKQEAgLTAsMCArMSw0NjUyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorCis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitUaGlzIEZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgYnkgdGhlIExhbmd1YWdlRWRpdG9yIAordG8gYWRkIG5ldyBMYW5ndWFnZXMgb3IgbW9kaWZ5L2N1c3RvbWl6ZSBpdCB1c2UgdGhlIExhbmd1YWdlRWRpdG9yIAorc2VlIGh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9MYW5ndWFnZUVkaXRvci5odG1sIGZvciBEZXRhaWxzIAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMtLT4KKzxsYW5ndWFnZSB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczpub05hbWVzcGFjZVNjaGVtYUxvY2F0aW9uPSJsYW5ndWFnZS54c2QiPgorICA8c3RyaW5nIGlkPSIxIiBuYW1lPSJjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+S29uZmVyZW5jamE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMiIgbmFtZT0ibWVldGluZyI+CisgICAgPHZhbHVlPlNwb3RrYW5pYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzIiBuYW1lPSJjbGFzc3Jvb20iPgorICAgIDx2YWx1ZT5XeWvFgmFkeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0IiBuYW1lPSJzZXR0aW5ncyI+CisgICAgPHZhbHVlPlVzdGF3aWVuaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNSIgbmFtZT0iYmVudXR6ZXIiPgorICAgIDx2YWx1ZT5Qcm9maWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNiIgbmFtZT0iYWRtaW4iPgorICAgIDx2YWx1ZT5BZG1pbmlzdHJhY2phPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjciIG5hbWU9InN0b3AiPgorICAgIDx2YWx1ZT5TdG9wPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPk5hZ3J5d2FuaWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOSIgbmFtZT0ibm9maWxlIj4KKyAgICA8dmFsdWU+QnJhayBwbGlrdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMCIgbmFtZT0icmVjb3JkYnl0ZWFjaGVyIj4KKyAgICA8dmFsdWU+TmFncnl3YW5pZSBwcnpleiB3eWvFgmFkb3djxJk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEiIG5hbWU9ImNvbm5lY3RlZHVzZXJzIj4KKyAgICA8dmFsdWU+UG9kxYJhY3plbmkgdcW8eXRrb3duaWN5OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMiIgbmFtZT0ic3RhcnRjb25mIj4KKyAgICA8dmFsdWU+Um96cG9jem5paiBrb25mZXJlbmNqxJk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMiIG5hbWU9Im15bmFtZSI+CisgICAgPHZhbHVlPk1vamUgaW1pxJk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQiIG5hbWU9InZpZGVvY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPldpZGVva29uZmVyZW5jamE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUiIG5hbWU9ImltcG9ydCI+CisgICAgPHZhbHVlPlByemVzxYJhbmllIHBsaWt1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2IiBuYW1lPSJyZWZyZXNoZmlsZXMiPgorICAgIDx2YWx1ZT5PZMWbd2llxbxlbmllIGxpc3R5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3IiBuYW1lPSJ0b21haW5maWxlIj4KKyAgICA8dmFsdWU+RG8gcGxpa3UgZ8WCw7N3bmVnbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOCIgbmFtZT0ibmV3cG9sbCI+CisgICAgPHZhbHVlPm5vd2UgZ8WCb3Nvd2FuaWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkiIG5hbWU9Im5ld3BvbGxoZWFkZXIiPgorICAgIDx2YWx1ZT5Ob3dlIGfFgm9zb3dhbmllLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMCIgbmFtZT0icXVlc3Rpb24iPgorICAgIDx2YWx1ZT5QeXRhbmllOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMSIgbmFtZT0icG9sbHR5cGUiPgorICAgIDx2YWx1ZT5Sb2R6YWogZ8WCb3Nvd2FuaWE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyIiBuYW1lPSJjcmVhdGUiPgorICAgIDx2YWx1ZT5VdHfDs3J6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzIiBuYW1lPSJpbmZvbWVzc2FnZSI+CisgICAgPHZhbHVlPlV3YWdhOiBLYcW8ZHkgcG/FgsSFY3pvbnkgdcW8eXRrb3duaWsgb3RyenltYSB3aWFkb21vxZvEhyB6IG5vd3ltIGfFgm9zb3dhbmllbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQiIG5hbWU9ImNyZWF0cG9sbCI+CisgICAgPHZhbHVlPlV0d8OzcnogZ8WCb3Nvd2FuaWUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1IiBuYW1lPSJjYW5jZWwiPgorICAgIDx2YWx1ZT5BbnVsdWo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYiIG5hbWU9Inllc25vIj4KKyAgICA8dmFsdWU+VGFrL05pZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNyIgbmFtZT0ibnVtZXJpYyI+CisgICAgPHZhbHVlPkxpY3piYSAxLTEwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4IiBuYW1lPSJwb2xsIj4KKyAgICA8dmFsdWU+R8WCb3Nvd2FuaWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkiIG5hbWU9Im1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5NdXNpc3ogYnnEhyBtb2RlcmF0b3JlbSBhYnkgdXR3b3J6ecSHIHB5dGFuaWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAiIG5hbWU9InZvdGUiPgorICAgIDx2YWx1ZT5Ud8OzaiBnxYJvcyB6b3N0YcWCIHphcmVqZXN0cm93YW55LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMSIgbmFtZT0iYWxyZWFkeXZvdGVkIj4KKyAgICA8dmFsdWU+SnXFvCBnxYJvc293YcWCZcWbIHcgdHltIGfFgm9zb3dhbml1Li48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIiIG5hbWU9InZvdGluZyI+CisgICAgPHZhbHVlPkfFgm9zdWogITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMyIgbmFtZT0iYW5zd2VyIj4KKyAgICA8dmFsdWU+VHdvamEgb2Rwb3dpZWTFujo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQiIG5hbWU9InllcyI+CisgICAgPHZhbHVlPlRhazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNSIgbmFtZT0ibm8iPgorICAgIDx2YWx1ZT5OaWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYiIG5hbWU9InF1ZXN0aW9ud2FudCI+CisgICAgPHZhbHVlPmNoY2lhxYIoYSlieSB3aWVkemllxIc6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3IiBuYW1lPSJwb2xscmVzdWx0cyI+CisgICAgPHZhbHVlPld5bmlraSBnxYJvc293YW5pYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOCIgbmFtZT0icXVlc3Rpb24iPgorICAgIDx2YWx1ZT5QeXRhbmllOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOSIgbmFtZT0icmVzdWx0cyI+CisgICAgPHZhbHVlPld5bmlraTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAiIG5hbWU9ImFuc3dlcnMiPgorICAgIDx2YWx1ZT5PZHBvd2llZHppOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MSIgbmFtZT0ibm9wb2xsIj4KKyAgICA8dmFsdWU+TmllIHJvenBvY3rEmXRvIMW8YWRuZWdvIGfFgm9zb3dhbmlhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MiIgbmFtZT0idm90aW5ncyI+CisgICAgPHZhbHVlPkfFgm9zdWogITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MyIgbmFtZT0ibWVldGluZyI+CisgICAgPHZhbHVlPlNwb3RrYW5pZSAobWFrcy4gNCBtaWVqc2NhKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NCIgbmFtZT0iY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPktvbmZlcmVuY2phIChtYWtzLiA1MCBtaWVqc2MpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1IiBuYW1lPSJ0eXBlIj4KKyAgICA8dmFsdWU+Um9kemFqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2IiBuYW1lPSJyZW1haW5pbmdzZWF0cyI+CisgICAgPHZhbHVlPlBvem9zdGHFgmUgbWllanNjYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NyIgbmFtZT0iYWxyZWFkeWNob3NlbiI+CisgICAgPHZhbHVlPkp1xbwgd3licmFubzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OCIgbmFtZT0iZW50ZXIiPgorICAgIDx2YWx1ZT53ZWpkxbo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkiIG5hbWU9Im1vZGxlYXZlIj4KKyAgICA8dmFsdWU+TW9kZXJhdG9yIHd5c3plZMWCIHplIHNwb3RrYW5pYS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAiIG5hbWU9InN5c3RlbW1lc3NhZ2UiPgorICAgIDx2YWx1ZT5JbmZvcm1hY2phIHN5c3RlbW93YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MSIgbmFtZT0iY2hvc3NlZGV2aWNlIj4KKyAgICA8dmFsdWU+V3liaWVyeiB1cnrEhWR6ZW5pZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MiIgbmFtZT0iY2hvb3NlY2FtIj4KKyAgICA8dmFsdWU+V3liaWVyeiBrYW1lcsSZOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MyIgbmFtZT0iY2hvb3NlbWljIj4KKyAgICA8dmFsdWU+V3liaWVyeiBtaWtyb2Zvbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQiIG5hbWU9Im9rIj4KKyAgICA8dmFsdWU+b2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUiIG5hbWU9ImNhbmNlbDIiPgorICAgIDx2YWx1ZT5hbnVsdWo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYiIG5hbWU9InJlY29uZWVjdG5lZWRlZCI+CisgICAgPHZhbHVlPlBvxYLEhWN6IHNpxJkgcG93dMOzcm5pZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTciIG5hbWU9ImVkaXRzZXR1cCI+CisgICAgPHZhbHVlPkVkeXR1aiB1c3Rhd2llbmlhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OCIgbmFtZT0iY291cnNlIj4KKyAgICA8dmFsdWU+S3Vyczo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkiIG5hbWU9Imxhbmd1YWdlIj4KKyAgICA8dmFsdWU+SsSZenlrOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MCIgbmFtZT0ib2syIj4KKyAgICA8dmFsdWU+b2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEiIG5hbWU9ImNhbmNlbDMiPgorICAgIDx2YWx1ZT5hbnVsdWo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIiIG5hbWU9ImNsZWFyd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPld5Y3p5xZvEhyB0YWJsaWPEmTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MyIgbmFtZT0iY2xlYXJ3aGl0ZWJvYXJkcXVlc3Rpb24iPgorICAgIDx2YWx1ZT5DenkgY2hjZXN6IHd5Y3p5xZtjacWEIHRhYmxpY8SZIHByemVkIGRvZGFuaWVtIG5vd2VnbyBvYnJhemthPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NCIgbmFtZT0iZG9udGFza2FnYWluIj4KKyAgICA8dmFsdWU+TmllIHB5dGFqIHdpxJljZWo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUiIG5hbWU9Im5vIj4KKyAgICA8dmFsdWU+bmllPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2IiBuYW1lPSJlZGl0c2V0dXAyIj4KKyAgICA8dmFsdWU+RWR5dHVqIHVzdGF3aWVuaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjciIG5hbWU9Im5lZWRjb25maXJtYXRpb253aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+UHJvc3rEmSBwb3R3aWVyZHppxZsgem1hemFuaWUgdGFibGljeS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgiIG5hbWU9InVzZXJpbmZvIj4KKyAgICA8dmFsdWU+SW5mb3JtYWNqZSBvIHXFvHl0a293bmlrdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OSIgbmFtZT0iY2xlYXJkcmF3YXJlYSI+CisgICAgPHZhbHVlPld5Y3p5xZvEhyBvYnN6YXIgcnlzb3dhbmlhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwIiBuYW1lPSJ1bmRvIj4KKyAgICA8dmFsdWU+Q29mbmlqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxIiBuYW1lPSJyZWRvIj4KKyAgICA8dmFsdWU+UG93cnTDs3J6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyIiBuYW1lPSJzZWxlY3RvYmplY3QiPgorICAgIDx2YWx1ZT5Xc2thxbwgb2JpZWt0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczIiBuYW1lPSJ0ZXh0Ij4KKyAgICA8dmFsdWU+VGVrc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQiIG5hbWU9InBhaW50Ij4KKyAgICA8dmFsdWU+TWFsb3dhbmllPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1IiBuYW1lPSJkcmF3bGluZSI+CisgICAgPHZhbHVlPlJ5c3VqIGxpbmnEmTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NiIgbmFtZT0iZHJhd3UiPgorICAgIDx2YWx1ZT5Qb2RrcmXFm2w8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzciIG5hbWU9InJlY3QiPgorICAgIDx2YWx1ZT5Qcm9zdG9rxIV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4IiBuYW1lPSJlbGxpcHNlIj4KKyAgICA8dmFsdWU+RWxpcHNhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5IiBuYW1lPSJhcnJvdyI+CisgICAgPHZhbHVlPlN0cnphxYJrYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MCIgbmFtZT0iZGVsZXRlY2hvc2VuIj4KKyAgICA8dmFsdWU+U2thc3VqIHdza2F6YW55IG9iaWVrdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MSIgbmFtZT0iYXBwbGl5bW9kIj4KKyAgICA8dmFsdWU+WsWCw7PFvCB3bmlvc2VrIG8gbW9kZXJhY2rEmTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MiIgbmFtZT0iYXBwbHkiPgorICAgIDx2YWx1ZT56xYLDs8W8PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzIiBuYW1lPSJjYW5jZWwiPgorICAgIDx2YWx1ZT5hbnVsdWo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQiIG5hbWU9Im1vZCI+CisgICAgPHZhbHVlPlpvc3RhxYQgbW9kZXJhdG9yZW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUiIG5hbWU9ImNsb3NlIj4KKyAgICA8dmFsdWU+emFta25pajwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NiIgbmFtZT0iaXRhbGljIj4KKyAgICA8dmFsdWU+a3Vyc3l3YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NyIgbmFtZT0iYm9sZCI+CisgICAgPHZhbHVlPnBvZ3J1Ymlvbnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgiIG5hbWU9IndhaXRpbmciPgorICAgIDx2YWx1ZT5DWkVLQU08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkiIG5hbWU9ImFwcGx5TWVzc2FnZSI+CisgICAgPHZhbHVlPlXFvHl0a293bmlrIHByb3NpIG8gcHJhd2EgbW9kZXJhdG9yYS4gTW/FvGVzeiBuYWRhxIcgbXUgdHlsa28gZG9zdMSZcCBkbyB0YWJsaWN5LCBhbGJvIHBlxYJuZSBwcmF3YSBtb2RlcmF0b3Jza2llLiBVxbx5dGtvd25pazo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAiIG5hbWU9ImFjY2VwdCI+CisgICAgPHZhbHVlPmFrY2VwdHVqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxIiBuYW1lPSJyZWplY3QiPgorICAgIDx2YWx1ZT5vZHJ6dcSHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyIiBuYW1lPSJjYW5jZWwiPgorICAgIDx2YWx1ZT5hbnVsdWo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMiIG5hbWU9InNlbmRtb2RyZXF1ZXN0bWVzc2FnZSI+CisgICAgPHZhbHVlPld5c3nFgmFtIHByb8WbYsSZIGRvIG5hc3TEmXB1asSFY3ljaCB1xbx5dGtvd25pa8Ozdzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQiIG5hbWU9ImFjY2VwdCI+CisgICAgPHZhbHVlPlByenlqxJl0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NSIgbmFtZT0icmVqZWN0Ij4KKyAgICA8dmFsdWU+T2RyenVjb25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2IiBuYW1lPSJjaGFuZ2Vtb2QiPgorICAgIDx2YWx1ZT5abWllxYQgbW9kZXJhdG9yYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NyIgbmFtZT0ibm9ubW9kZXJyb3JtZXNzYWdlIj4KKyAgICA8dmFsdWU+TmllIGplc3RlxZsgdHV0YWogbW9kZXJhdG9yZW0hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4IiBuYW1lPSJtb2RlcmF0b3IiPgorICAgIDx2YWx1ZT5Nb2RlcmF0b3I6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5IiBuYW1lPSJyb29tZnVsbG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UZW4gcG9rw7NqIGplc3QgcGXFgm55LiBaYWpyenlqIHDDs8W6bmllai48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwIiBuYW1lPSJlbGxsaXBzZSI+CisgICAgPHZhbHVlPkVsaXBzYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEiIG5hbWU9ImNsb3NlIj4KKyAgICA8dmFsdWU+emFta25pajwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIiIG5hbWU9IkF1dGhFcnJvciI+CisgICAgPHZhbHVlPmLFgsSFZCB3IGRhbnljaCB3ZWrFm2Npb3d5Y2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzIiBuYW1lPSJtaW40dXNlcm5hbWUiPgorICAgIDx2YWx1ZT40IGx1YiB3acSZY2VqIHpuYWvDs3c7IGR1xbxlIGkgbWHFgmUgbGl0ZXJ5IG1hasSFIHpuYWN6ZW5pZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0IiBuYW1lPSJtaW40cGFzcyI+CisgICAgPHZhbHVlPkhhc8WCbyBtdXNpIHNrxYJhZGHEhyBzacSZIHByenluYWptbmllaiB6IDQgem5ha8OzdzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUiIG5hbWU9InVzZXJuYW1ldGFrZW4iPgorICAgIDx2YWx1ZT5UYSBuYXp3YSB1xbx5dGtvd25pa2EgamVzdCBqdcW8IHphasSZdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2IiBuYW1lPSJlbWFpbHRha2VuIj4KKyAgICA8dmFsdWU+VGVuIGFkcmVzIGUtbWFpbCBqZXN0IGp1xbwgemFyZWplc3Ryb3dhbnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3IiBuYW1lPSJlbWFpbHRha2VuIj4KKyAgICA8dmFsdWU+QsWCxIVkIHN5c3RlbXUuIFNrb250YWt0dWogc2nEmSB6IGFkbWluaXN0cmF0b3JlbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4IiBuYW1lPSJBdXRobG9naW4iPgorICAgIDx2YWx1ZT5Mb2dvd2FuaWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5IiBuYW1lPSJBdXRodXNlciI+CisgICAgPHZhbHVlPlXFvHl0a293bmlrOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAiIG5hbWU9IkF1dGhwYXNzIj4KKyAgICA8dmFsdWU+SGFzxYJvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEiIG5hbWU9IkF1dGhsYW5nIj4KKyAgICA8dmFsdWU+SsSZenlrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMiIgbmFtZT0iQXV0aHJlZyI+CisgICAgPHZhbHVlPlphcGlzeiBzacSZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMyIgbmFtZT0icmVnZm9ybWhlYWQiPgorICAgIDx2YWx1ZT5aYXBpc3ogc2nEmTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQiIG5hbWU9InJlZ2Zvcm11c2VyIj4KKyAgICA8dmFsdWU+VcW8eXRrb3duaWs6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNSIgbmFtZT0icmVnZm9ybXBhc3MiPgorICAgIDx2YWx1ZT5IYXPFgm86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNiIgbmFtZT0icmVnZm9ybXJldHlwZSI+CisgICAgPHZhbHVlPlBvd3TDs3J6OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTciIG5hbWU9InJlZ2Zvcm1maXJzdG5hbWUiPgorICAgIDx2YWx1ZT5JbWnEmTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4IiBuYW1lPSJyZWdmb3JtbGFzdG5hbWUiPgorICAgIDx2YWx1ZT5OYXp3aXNrbzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5IiBuYW1lPSJyZWdmb3JtbWFpbCI+CisgICAgPHZhbHVlPmUtbWFpbDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwIiBuYW1lPSJyZWdmb3Jtc3RhdGUiPgorICAgIDx2YWx1ZT5LcmFqOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjEiIG5hbWU9InJlZ2Zvcm1idG4xIj4KKyAgICA8dmFsdWU+WmFyZWplc3RydWo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyIiBuYW1lPSJyZWdmb3JtYnRuMiI+CisgICAgPHZhbHVlPkFudWx1ajwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMiIG5hbWU9IkF1dGhidG4yIj4KKyAgICA8dmFsdWU+TmllIHphcGlzYcWCZcWbIHNpxJkgamVzemN6ZT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5TdHJvbmEgc3RhcnRvd2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1IiBuYW1lPSJ1c2VyYWRtaW4iPgorICAgIDx2YWx1ZT5Vxbx5dGtvd25pY3k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2IiBuYW1lPSJncm91cGFkbWluIj4KKyAgICA8dmFsdWU+R3J1cHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3IiBuYW1lPSJvcmdhZG1pbiI+CisgICAgPHZhbHVlPk9yZ2FuaXphY2plPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOCIgbmFtZT0iaGVhZGNvbmYiPgorICAgIDx2YWx1ZT5Qb2tvamUgc3BvdGthxYQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5IiBuYW1lPSJjb25mX3B1YiI+CisgICAgPHZhbHVlPnB1YmxpY3puZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAiIG5hbWU9ImhlYWRfb3JnIj4KKyAgICA8dmFsdWU+T3JnYW5pemFjamE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxIiBuYW1lPSJidG5fZW50ZXJyb29tIj4KKyAgICA8dmFsdWU+V2VqZMW6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMiIgbmFtZT0idXNlcmFsdGVyc2VsZl9sb2dpbiI+CisgICAgPHZhbHVlPkxvZ2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMyIgbmFtZT0idXNlcmFsdGVyc2VsZl9wYXNzIj4KKyAgICA8dmFsdWU+SGFzxYJvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNCIgbmFtZT0idXNlcmFsdGVyc2VsZl9wYXNzcmV0eXBlIj4KKyAgICA8dmFsdWU+UG93dMOzcno8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2ZpcnN0bmFtZSI+CisgICAgPHZhbHVlPkltacSZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNiIgbmFtZT0idXNlcmFsdGVyc2VsZl9sYXN0bmFtZSI+CisgICAgPHZhbHVlPk5hendpc2tvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNyIgbmFtZT0idXNlcmFsdGVyc2VsZl9lbWFpbCI+CisgICAgPHZhbHVlPmUtbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgiIG5hbWU9InVzZXJhbHRlcnNlbGZfYmlydGgiPgorICAgIDx2YWx1ZT5Vcm9kemlueTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkiIG5hbWU9InVzZXJhbHRlcnNlbGZfc3RyZWV0bm8iPgorICAgIDx2YWx1ZT5VbGljYS9OdW1lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDAiIG5hbWU9InVzZXJhbHRlcnNlbGZfdG93biI+CisgICAgPHZhbHVlPktvZC9NaWFzdG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3N0YXRlIj4KKyAgICA8dmFsdWU+S3JhajwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIiIG5hbWU9InVzZXJhbHRlcnNlbGZfYWRyZXNzY29tbWVudCI+CisgICAgPHZhbHVlPkluZm9ybWFjamUgYWRlc293ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMiIG5hbWU9InVzZXJhbHRlcnNlbGZfaGVhZGVyIj4KKyAgICA8dmFsdWU+RGFuZSB1xbx5dGtvd25pa2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0IiBuYW1lPSJzYXZlbWVudWJhcl9zYXZlbGFiZWwiPgorICAgIDx2YWx1ZT5aYXBpc3o8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1IiBuYW1lPSJzYXZlbWVudWJhcl9zYXZlbGFiZWwiPgorICAgIDx2YWx1ZT5aYXBpc3o8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2IiBuYW1lPSJhZG1pbl91c2VybGlzdF91c2VyX2lkIj4KKyAgICA8dmFsdWU+SUQtdcW8eXRrb3duaWthPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NyIgbmFtZT0iYWRtaW5fdXNlcmxpc3RfbG9naW4iPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgiIG5hbWU9ImFkbWluX3VzZXJsaXN0X2ZpcnN0bmFtIj4KKyAgICA8dmFsdWU+SW1pxJk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5IiBuYW1lPSJhZG1pbl91c2VybGlzdF9sYXN0bmFtZSI+CisgICAgPHZhbHVlPk5hendpc2tvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MCIgbmFtZT0idHVybm92ZXJsaXN0X25leHQiPgorICAgIDx2YWx1ZT5Qb2thxbwgbmFzdMSZcG55PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MSIgbmFtZT0idHVybm92ZXJsaXN0X3ByZSI+CisgICAgPHZhbHVlPlBva2HFvCBwb3ByemVkbmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyIiBuYW1lPSJzYXZlY29udGVudF9jb25maXJtIj4KKyAgICA8dmFsdWU+U2thc3VqIHdwaXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzIiBuYW1lPSJzYXZlY29udGVudF9jb25maXJtX2NhbmNlbF9idG4iPgorICAgIDx2YWx1ZT5BbnVsdWo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU0IiBuYW1lPSJzYXZlY29udGVudF9jb25maXJtX2NvbmZpcm1fYnRuIj4KKyAgICA8dmFsdWU+U2thc3VqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NSIgbmFtZT0ic2F2ZW1lbnViYXJfYWRkbGFiZWwiPgorICAgIDx2YWx1ZT5Ob3d5IHdwaXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU2IiBuYW1lPSJzYXZlbWVudWJhcl9yZWxvYWRsYWJlbCI+CisgICAgPHZhbHVlPk9kxZt3aWVyeiB3cGlzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NyIgbmFtZT0ic2F2ZW1lbnViYXJfZGVsZXRlbGFiZWwiPgorICAgIDx2YWx1ZT5Ta2FzdWogd3BpczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTgiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9zdGF0dXMiPgorICAgIDx2YWx1ZT5TdGF0dXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU5IiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fc3RhdHVzSXRlbSI+CisgICAgPHZhbHVlPnphYmxva293YW55PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2MCIgbmFtZT0idXNlcmFsdGVyX2FkbWluX3N0YXR1c0l0ZW0iPgorICAgIDx2YWx1ZT5vZGJsb2tvd2FueTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjEiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9vcmdhbmlzYXRpb24iPgorICAgIDx2YWx1ZT5Pcmdhbml6YWNqZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjIiIG5hbWU9ImNhbGVuZGFyX2ljb25sYWJlbCI+CisgICAgPHZhbHVlPkthbGVuZGFyejwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjMiIG5hbWU9InNhdmV3aW5kb3dfYnRuIj4KKyAgICA8dmFsdWU+emFta25pajwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjQiIG5hbWU9Im9yZ2FuaXNhdGlvbnRhYmxlbGlzdF9pZHJvdyI+CisgICAgPHZhbHVlPklELW9yZ2FuaXphY2ppPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2NSIgbmFtZT0ib3JnYW5pc2F0aW9udGFibGVsaXN0X25hbWVyb3ciPgorICAgIDx2YWx1ZT5OYXp3YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjYiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGlkMSI+CisgICAgPHZhbHVlPlXFvHl0a293bmlrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2NyIgbmFtZT0idXNlcnZhbHVlX2xldmVsaWQyIj4KKyAgICA8dmFsdWU+TW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2OCIgbmFtZT0idXNlcnZhbHVlX2xldmVsaWQzIj4KKyAgICA8dmFsdWU+QWRtaW5pc3RyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjkiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGxhYmVsIj4KKyAgICA8dmFsdWU+UHJhd2EgdcW8eXRrb3duaWthPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MCIgbmFtZT0ib3JndmFsdWVfaGVhZGVyIj4KKyAgICA8dmFsdWU+T3JnYW5pemFjamE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTcxIiBuYW1lPSJvcmd2YWx1ZV9vcmduYW1lIj4KKyAgICA8dmFsdWU+bmF6d2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTcyIiBuYW1lPSJvcmd2YWx1ZV9vcmduYW1lIj4KKyAgICA8dmFsdWU+RG9kYWogb3JnYW5pemFjasSZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MyIgbmFtZT0ib3JndmFsdWVfb3JnbmFtZSI+CisgICAgPHZhbHVlPkRvZGFqIG9yZ2FuaXphY2rEmTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzQiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW4iPgorICAgIDx2YWx1ZT5BbnVsdWo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc1IiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luIj4KKyAgICA8dmFsdWU+RG9kYWo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc2IiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luIj4KKyAgICA8dmFsdWU+c2thc3VqIG9yZ2FuaXphY2rEmTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzciIG5hbWU9Im9yZ3ZhbHVlX3VzZXJsaXN0Ij4KKyAgICA8dmFsdWU+VcW8eXRrb3duaWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc4IiBuYW1lPSJvcmd2YWx1ZV91c2VybGlzdGFkZCI+CisgICAgPHZhbHVlPmRvZGFqIHXFvHl0a293bmlrYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzkiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJsaXN0ZGVsZXRlIj4KKyAgICA8dmFsdWU+c2thc3VqIHXFvHl0a293bmlrYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODAiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5oZWFkZXIiPgorICAgIDx2YWx1ZT5Eb2RhaiB1enl0a293bmlrYSBkbyBvcmdhbml6YWNqaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODEiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5zZWFyY2hmaWVsZCI+CisgICAgPHZhbHVlPld5c3p1a2FqIHXFvHl0a293bmlrYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODIiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5zZWFyY2hidG4iPgorICAgIDx2YWx1ZT5XeXN6dWthajwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODMiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5zZWFyY2hyZXN1bHQiPgorICAgIDx2YWx1ZT5Vxbx5dGtvd25pazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODQiIG5hbWU9ImxvZ2lud2luX2Nob29zZW9yZ2FuaXNhdGlvbiI+CisgICAgPHZhbHVlPk9yZ2FuaXphY2phPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NSIgbmFtZT0ibG9naW53aW5fY2hvb3Nlb3JnYW5pc2F0aW9uYnRuIj4KKyAgICA8dmFsdWU+V3Byb3dhZMW6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NiIgbmFtZT0ibmF2aV9yb29tYWRtaW4iPgorICAgIDx2YWx1ZT5Qb2tvamUga29uZmVyZW5jeWpuZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODciIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5Qb2tvamUga29uZmVyZW5jeWpuZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODgiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5pZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODkiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5OYXp3YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTAiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5wdWJsaWN6bnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkxIiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+T3JnYW5pemFjamU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkyIiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+UG9rb2plIHNwb3RrYcWEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5MyIgbmFtZT0icm9vbXZhbHVlX25hbWUiPgorICAgIDx2YWx1ZT5OYXp3YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTQiIG5hbWU9InJvb212YWx1ZV90eXBlIj4KKyAgICA8dmFsdWU+Um9kemFqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NSIgbmFtZT0icm9vbXZhbHVlX2lzcHVibGljIj4KKyAgICA8dmFsdWU+UHVibGljem55PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NiIgbmFtZT0icm9vbXZhbHVlX2NvbW1lbnQiPgorICAgIDx2YWx1ZT5Lb21lbnRhcno8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk3IiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVpY29uIj4KKyAgICA8dmFsdWU+emFwaXN6IGkgZWtzcG9ydHVqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5OCIgbmFtZT0id2hpdGVib2FyZF9vcGVuaWNvbiI+CisgICAgPHZhbHVlPndjenl0YWo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk5IiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbmhlYWRlciI+CisgICAgPHZhbHVlPnphcGlzeiBqYWtvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMCIgbmFtZT0id2hpdGVib2FyZF9zYXZlYXN3aW50ZXh0Ij4KKyAgICA8dmFsdWU+TmF6d2EgcGxpa3U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAxIiBuYW1lPSJmaWxlcyI+CisgICAgPHZhbHVlPm5hendhIHBsaWt1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMiIgbmFtZT0id2hpdGVib2FyZF9zYXZlYXN3aW5idG4xIj4KKyAgICA8dmFsdWU+YW51bHVqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMyIgbmFtZT0id2hpdGVib2FyZF9zYXZlYXN3aW5idG4yIj4KKyAgICA8dmFsdWU+emFwaXN6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNCIgbmFtZT0icnBjZXJyb3J3aW5faGVhZGVyIj4KKyAgICA8dmFsdWU+QsWCxIVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNSIgbmFtZT0ibG9hZHdtbF9oZWFkZXIiPgorICAgIDx2YWx1ZT53Y3p5dHVqxJk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA2IiBuYW1lPSJsb2Fkd21sX21lc3NzbG9hZCI+CisgICAgPHZhbHVlPndjenl0YW5lIG9iaWVrdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA3IiBuYW1lPSJsb2Fkd21sX21lc3NzeW5jIj4KKyAgICA8dmFsdWU+c3luY2hyb25penVqxJkga2xpZW50w7N3OyBrbGllbmNpIG9jemVrdWrEhWN5OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDgiIG5hbWU9ImxvYWRpbWFnZV9tZXNzbG9hZCI+CisgICAgPHZhbHVlPldjenl0dWrEmSBvYnJhemVrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwOSIgbmFtZT0ibG9hZGltYWdlX21lc3NzeW5jIj4KKyAgICA8dmFsdWU+c3luY2hyb25penVqxJkga2xpZW50w7N3OyBrbGllbmNpIG9jemVrdWrEhWN5OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTAiIG5hbWU9ImxvYWR3bWxfY29uZmlybWhlYWRlciI+CisgICAgPHZhbHVlPnd5Y3p5xZvEhyBvYnN6YXIgcnlzb3dhbmlhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMSIgbmFtZT0ibG9hZHdtbF9jb25maXJtbWVzcyI+CisgICAgPHZhbHVlPnd5Y3p5xZvEhyBvYnN6YXIgcnlzb3dhbmlhIC0gem5pa27EhSB3c3p5c3RraWUgaW5mb3JtYWNqZSB6IHRhYmxpY3k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEyIiBuYW1lPSJsb2Fkd21sX2NvbmZpcm1tZXNzMiI+CisgICAgPHZhbHVlPlBvdHdpZXJkxbogemFuaW0gd2N6eXRhbSBwbGlrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMyIgbmFtZT0ic2VuZF9pbnZpdGF0aW9uX2J0biI+CisgICAgPHZhbHVlPld5xZtsaWogemFwcm9zemVuaWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE0IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5faGVhZGVyIj4KKyAgICA8dmFsdWU+V3nFm2xpaiB6YXByb3N6ZW5pZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTUiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+VGVtYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE2IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fcmVjaXBpZW50Ij4KKyAgICA8dmFsdWU+RG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE3IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fbWVzc2FnZSI+CisgICAgPHZhbHVlPlRyZcWbxIcgemFwcm9zemVuaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE4IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fYnRuX2NvbmZpcm0iPgorICAgIDx2YWx1ZT5XecWbbGlqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxOSIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX2J0bl9jYW5jZWwiPgorICAgIDx2YWx1ZT5hbnVsdWo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIwIiBuYW1lPSJzZW5kX2NoYXRfdGV4dF9idG4iPgorICAgIDx2YWx1ZT53ecWbbGlqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyMSIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2hlYWRlciI+CisgICAgPHZhbHVlPkRhbmUgdcW8eXRrb3duaWthPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyMiIgbmFtZT0iaW52aXRlZF91c2Vyd2luX3N1YmplY3QiPgorICAgIDx2YWx1ZT5Ud8OzaiBwc2V1ZG9uaW0gbmEgcG90cnplYnkgdGVqIGtvbmZlcmVuY2ppPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyMyIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2xvZ2luIj4KKyAgICA8dmFsdWU+UHNldWRvbmltPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNCIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2ZpcnN0bmFtZSI+CisgICAgPHZhbHVlPkltacSZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNSIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2xhc3RuYW1lIj4KKyAgICA8dmFsdWU+TmF6d2lza288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI2IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fbWFpbCI+CisgICAgPHZhbHVlPmUtbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjciIG5hbWU9Imludml0ZWRfdXNlcndpbl9sYW5nIj4KKyAgICA8dmFsdWU+SsSZenlrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyOCIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2VudGVyIj4KKyAgICA8dmFsdWU+d2VqZMW6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyOSIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2VudGVyIj4KKyAgICA8dmFsdWU+V2N6eXR1asSZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMCIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2VudGVyIj4KKyAgICA8dmFsdWU+V2N6eXR5d2FuaWUgZGFueWNoLCBwcm9zesSZIGN6ZWthxIchPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMSIgbmFtZT0idXNlcl9yZWdpc3RlckZhbHNlUFdEIj4KKyAgICA8dmFsdWU+TmllcG9wcmF3bmUgaGFzbG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMyIiBuYW1lPSJ1c2VyX3JlZ2lzdGVyRmFsc2VQV0RIZWFkZXIiPgorICAgIDx2YWx1ZT5Qcm9zesSZIHdwcm93YWR6acSHIGR3YSBpZGVudHljem5lIGhhc8WCYSBvIGTFgnVnb8WbY2kgcHJ6eW5ham1uaWVqIDYgem5ha8Ozdy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMzIiBuYW1lPSJ1c2VyX3JlZ2lzdGVyTWFpbEVycm9yIj4KKyAgICA8dmFsdWU+TmllcG9wcmF3bnkgZS1tYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzNCIgbmFtZT0idXNlcl9yZWdpc3Rlck1haWxFcnJvckhlYWRlciI+CisgICAgPHZhbHVlPldwcm93YWR6acWCZShhKcWbIG5pZXBvcHJhd255IGFkcmVzIGUtbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzUiIG5hbWU9InVzZXJfcmVnaXN0ZXJTdWNjZXNzIj4KKyAgICA8dmFsdWU+UmVqZXN0cmFjamEgemFrb8WEY3pvbmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM2IiBuYW1lPSJ1c2VyX3JlZ2lzdGVyU3VjY2Vzc0hlYWRlciI+CisgICAgPHZhbHVlPktvbnRvIHV0d29yem9uZS4gTW/FvGVzeiBzacSZIHphbG9nb3dhxIcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzNyIgbmFtZT0idXNlcl9zaGFyaW5nX21lc3NhZ2UiPgorICAgIDx2YWx1ZT5OaWUgbW/FvGVzeiB0ZXJheiBwb2themHEhyBzd29qZWdvIGVrcmFudS4gS3RvxZsgaW5ueSBwb2thenVqZSB0ZXJheiBzd8OzaiBla3Jhbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM4IiBuYW1lPSJ1c2VyX3NoYXJpbmdfbWVzc2FnZUhlYWRlciI+CisgICAgPHZhbHVlPlBva2F6eXdhbmllIGVrcmFudSBuaWUgamVzdCB0ZXJheiBkb3B1c3pjemFsbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM5IiBuYW1lPSJ1c2VyX2RvU3RhcnRTY3JlZW5WaWV3ZXIiPgorICAgIDx2YWx1ZT5Qb2thxbwgc3fDs2ogZWtyYW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQwIiBuYW1lPSJzY3JlZW5fd2FybkJhbmR3aWR0aCI+CisgICAgPHZhbHVlPlpieXQgbmlza2EgcHJ6ZXB1c3Rvd2/Fm8SHIMWCxIVjemE6IHN5bmNocm9uaXphY2phIG5pZSBwb3dpb2TFgmEgc2nEmS4gUG9taW5pxJl0byBraWxrYSByYW1lay4gSmXFm2xpIHRlbiBrb211bmlrYXQgcG93dGFyemEgc2nEmSBjesSZc3RvIHBvcHJvxZsgbW9kZXJhdG9yYSBvIG9ibmnFvGVuaWUgamFrb8WbY2kgdHJhbnNtaXNqaS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQxIiBuYW1lPSJzY3JlZW5fdXNlcmxhYmVsIj4KKyAgICA8dmFsdWU+RWtyYW4gdcW8eXRrb3duaWthOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDIiIG5hbWU9IndoaXRlYm9hcmRfdGFiX3BhaW50Ij4KKyAgICA8dmFsdWU+T2JyYXo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQzIiBuYW1lPSJ3aGl0ZWJvYXJkX3RhYl9kb2N1bWVudCI+CisgICAgPHZhbHVlPkRva3VtZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0NCIgbmFtZT0idGFiYmFyX2NoYXRpY29uIj4KKyAgICA8dmFsdWU+Q3phdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDUiIG5hbWU9InRhYmJhcl9maWxlc2ljb24iPgorICAgIDx2YWx1ZT5QbGlraTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDYiIG5hbWU9InRhYmJhcl9wYXJ0aWNpcGFudHNpY29uIj4KKyAgICA8dmFsdWU+VWN6ZXN0bmljeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDciIG5hbWU9InN3ZnByZXNlbnRhdGlvbl9saXN0c2F2ZW9yaWciPgorICAgIDx2YWx1ZT5Qb2JpZXJ6IG9yeWdpbmFsbnkgZG9rdW1lbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ4IiBuYW1lPSJzd2ZwcmVzZW50YXRpb25fbGlzdHNhdmVwZGYiPgorICAgIDx2YWx1ZT5Qb2JpZXJ6IGRva3VtZW50IGpha28gUERGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0OSIgbmFtZT0ic3dmcHJlc2VudGF0aW9uX2xpc3Rsb2Fkc3dmIj4KKyAgICA8dmFsdWU+UG9rYcW8IHByZXplbnRhY2rEmSBuYSB0YWJsaWN5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MCIgbmFtZT0ibmF2aW1haW5fY29uZmlnIj4KKyAgICA8dmFsdWU+S29uZmlndXJhY2phPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MSIgbmFtZT0id2hpdGVib2FyZF9ib3VuZGluZ2JveF9kcmFnIj4KKyAgICA8dmFsdWU+UHJ6ZXN1xYQgb2JpZWt0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MiIgbmFtZT0id2hpdGVib2FyZF9ib3VuZGluZ2JveF9yZXNpemUiPgorICAgIDx2YWx1ZT5Ta2FsdWogb2JpZWt0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MyIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfem9vbSI+CisgICAgPHZhbHVlPiU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU0IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9zbGlkZSI+CisgICAgPHZhbHVlPno8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU1IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9maXJzdHNsaWRlIj4KKyAgICA8dmFsdWU+UHJ6ZWpkxbogZG8gcGllcndzemVqIHN0cm9ueTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTYiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3ByZXNsaWRlIj4KKyAgICA8dmFsdWU+UHJ6ZWpkxbogZG8gcG9wcnplZG5pZWogc3Ryb255PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1NyIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfbmV4dHNsaWRlIj4KKyAgICA8dmFsdWU+UHJ6ZWpkxbogZG8gbmFzdMSZcG5laiBzdHJvbnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU4IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9sYXN0c2xpZGUiPgorICAgIDx2YWx1ZT5QcnplamTFuiBkbyBvc3RhdG5pZWogc3Ryb255PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1OSIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfem9vbW1pbnVzIj4KKyAgICA8dmFsdWU+Wm1uaWVqc3o8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYwIiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl96b29tcGx1cyI+CisgICAgPHZhbHVlPlBvd2nEmWtzejwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjEiIG5hbWU9InNhbHV0YXRpb25fbXIiPgorICAgIDx2YWx1ZT5QYW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYyIiBuYW1lPSJzYWx1dGF0aW9uX21pc3MiPgorICAgIDx2YWx1ZT5QYW5pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MyIgbmFtZT0ibmF2aW1haW5fY29uZmFkbWluIj4KKyAgICA8dmFsdWU+S29uZmlndXJhY2phPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2NCIgbmFtZT0iY29uZnRhYmxlX2hlYWRlcklkIj4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY1IiBuYW1lPSJjb25mdGFibGVfaGVhZGVya2V5Ij4KKyAgICA8dmFsdWU+S2x1Y3o8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY2IiBuYW1lPSJjb25mYWRtaW5mb3JtX2hlYWRlciI+CisgICAgPHZhbHVlPktvbmZpZ3VyYWNqYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjciIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWxrZXkiPgorICAgIDx2YWx1ZT5LbHVjejwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjgiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWx1cGRhdGVkIj4KKyAgICA8dmFsdWU+b3N0YXRuaW8gYWt0dWFsaXpvd2FuZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjkiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWx1cGRhdGVkYnkiPgorICAgIDx2YWx1ZT5ha3R1YWxpem93YW5lIHByemV6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MCIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbGNvbW1lbnQiPgorICAgIDx2YWx1ZT5rb21lbnRhcno8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjcxIiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsa2V5Ij4KKyAgICA8dmFsdWU+V2FydG/Fm8SHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MiIgbmFtZT0idHVybm92ZXJsaXN0X21heHJlc3VsdHMiPgorICAgIDx2YWx1ZT56PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MyIgbmFtZT0ib3JnYW5pc2F0aW9uX3VzZXJzaGVhZGVyIj4KKyAgICA8dmFsdWU+VcW8eXRrb3duaWN5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NCIgbmFtZT0ib3JnYW5pc2F0aW9uX3VzZXJzaWNvbmRlbGV0ZSI+CisgICAgPHZhbHVlPnVzdcWEIHXFvHl0a293bmlrYSB6IG9yZ2FuaXphY2ppPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NSIgbmFtZT0ib3JnYW5pc2F0aW9uX3VzZXJzZGVsZXRlZGhlYWQiPgorICAgIDx2YWx1ZT5Tay48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc2IiBuYW1lPSJvcmdhbmlzYXRpb25fdXNlcnNhbHJlYWRhZGRlZCI+CisgICAgPHZhbHVlPlXFvHl0a293bmlrIGp1xbwgbmFsZcW8eSB0byB0ZWogb3JnYW5pemFjamkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NyIgbmFtZT0iZGFzaGJvYXJkX25ld3NoZWFkZXIiPgorICAgIDx2YWx1ZT5XaWFkb21vxZtjaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzgiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtzaGVhZGVyIj4KKyAgICA8dmFsdWU+xYHEhWN6YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzkiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtDb25mIj4KKyAgICA8dmFsdWU+UHJ6ZWpkxbogZG8ga29uZmVyZW5jamk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgwIiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rQXVkaXQiPgorICAgIDx2YWx1ZT5QcnplamTFuiBkbyBzYWxpIHd5a8WCYWRvd2VqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MSIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua3N1cHBvcnQiPgorICAgIDx2YWx1ZT5Qb21vYyBpIHdzcGFyY2llPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MiIgbmFtZT0iZGFzaGJvYXJkX3F1aWNraG9tZXBhZ2V1cmwiPgorICAgIDx2YWx1ZT5odHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MyIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbWFpbGluZ2xpc3R1cmwiPgorICAgIDx2YWx1ZT5odHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvbWFpbC1saXN0cy5odG1sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4NCIgbmFtZT0iZGFzaGJvYXJkX3JlcG9ydGJ1Z3MiPgorICAgIDx2YWx1ZT5aZ8WCb8WbIGLFgsSFZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg1IiBuYW1lPSJkYXNoYm9hcmRfcnNzbGlzdGl0ZW1saW5rdGV4dCI+CisgICAgPHZhbHVlPndpxJljZWo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg2IiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5raG9tZXBhZ2VsYWJlbCI+CisgICAgPHZhbHVlPldpdHJ5bmEgcHJvamVrdHUgKGh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg3IiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rbWFpbGluZ2xpc3RsYWJlbCI+CisgICAgPHZhbHVlPkxpc3RhIG1haWxpbmdvd2EgdcW8eXRrb3duaWvDs3cgKGh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9tYWlsLWxpc3RzLmh0bWwpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4OCIgbmFtZT0ibG9naW5fcmVtZW1iZXJ1c2VyIj4KKyAgICA8dmFsdWU+WmFwYW1pxJl0YWogbG9naW4gaSBoYXPFgm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg5IiBuYW1lPSJtYWluX25hdmkiPgorICAgIDx2YWx1ZT5aYXdhcnRvxZvEhzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTAiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5Nb2phIHN0cm9uYSBzdGFydG93YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTEiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5Nb2plIHphcGxhbm93YW5lIHNwb3RrYW5pYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTIiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5Nb2plIHphcGxhbm93YW5lIHd5a8WCYWR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MyIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPlB1YmxpY3puZSBzcG90a2FuaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk0IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+UHJ5d2F0bmUgc3BvdGthbmlhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NSIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPlB1YmxpY3puZSB3eWvFgmFkeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTYiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5Qcnl3YXRuZSB3eWvFgmFkeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTciIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5QdWJsaWMgQ29udGVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTgiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5Qcnl3YXRuYSB6YXdhcnRvxZvEhzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTkiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5Pc29iaXN0YSB6YXdhcnRvxZvEhzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDAiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAxIiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+TW9kZXJhY2phPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMiIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPlBvcHJvxZsgbyBtb2RlcmFjasSZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMyIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPkfFgm9zb3dhbmlhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNCIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPld5YmllcnogcGxpazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDUiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5Vc3Rhd2llbmlhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNiIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPlVzdGF3aWVuaWEga2FtZXJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNyIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPlVzdGF3aWVuaWEgdGFibGljeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDgiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5XeWrFm2NpZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDkiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5XcsOzxIcgZG8gbGlzdHkgcG9rb2rDs3c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEwIiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+V3lsb2d1ajwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTEiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+WmFwb21uaWHFgmUoYSnFmyBoYXPFgmE/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMiIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5Vc3RhdyBub3dlIGhhc8WCbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTMiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+V2VkxYJ1ZyBtYWlsYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTQiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+V2VkxYJ1ZyBsb2dpbnU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE1IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlR3w7NqIGFkcmVzIGUtbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTYiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+VHfDs2ogbG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE3IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPld5xZtsaWogZS1tYWlsIHogcHJvxZtixIUgbyBwb3R3aWVyZHplbmllIHptaWFueSBoYXPFgmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE4IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPk5pZSB6bmFsZXppb25vIGFkcmVzdS4gVXBld25paiBzacSZLCDFvGUgd3Bpc2HFgmUoYSnFmyB0ZW4gc2FtIGFkcmVzLCBqYWtpIHBvZGHFgmUoYSnFmyBwcnp5IHpha8WCYWRhbml1IGtvbnRhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTkiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+UHJvc3rEmSBwb2RhxIcgZS1tYWlsIGx1YiBuYXp3xJkgdcW8eXRrb3duaWthLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjAiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+TmllIG1hIHXFvHl0a293bmlrYSBvIHRha2llaiBuYXp3aWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIxIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPkUtbWFpbCB6YXdpZXJhasSFY3kgc3BlY2phbG5lIMWCxIVjemUgKGxpbmspIHpvc3RhxYIgd3lzxYJhbnkgbmEgdHfDs2ogYWRyZXMuIFNwcmF3ZMW6IHN3b2rEhSBwb2N6dMSZLiBKZcWbbGkgbmllIG90cnp5bWHFgmUoYSnFmyBsaXN0dSwgc3ByYXdkxbovem1pZcWEIHVzdGF3aWVuaWEgYW50eXNwYW1vd2Ugc3dvamVqIHNrcnp5bmtpIGkgcG9ub3duaWUgd3lnZW5lcnVqIG1haWwgcG90d2llcmR6YWrEhWN5IHptaWFuxJkgaGFzxYJhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjIiIG5hbWU9ImVycm9ydHlwZSI+CisgICAgPHZhbHVlPkluZm9ybWFjamE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIzIiBuYW1lPSJlcnJvcnR5cGUiPgorICAgIDx2YWx1ZT5CxYLEhWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI0IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5OaWVwb3ByYXdueSBrb2QuIE5pZSBtYSB0YWtpZWdvIHXFvHl0a293bmlrYS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI1IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5Vc3RhdyBub3dlIGhhc8WCby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI2IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjciIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPnptaWXFhCBoYXPFgm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI4IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5ub3dlIGhhc8WCbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjkiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPnBvd3TDs3J6IGhhc8WCbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzAiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPkhhc8WCYSwga3TDs3JlIHdwaXNhxYJlKGEpxZsgbmllIGJ5xYJ5IGlkZW50eWN6bmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzMSIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+NCBsdWIgd2nEmWNlaiB6bmFrw7N3OyBtYcWCZSBpIGR1xbxlIGxpdGVyeSBtYWrEhSB6bmFjemVuaWUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzMiIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+SGFzxYJvIHVzdGF3aW9uZS4gTW/FvGVzeiBzacSZIHphbG9nb3dhxIcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzMyIgbmFtZT0icnBjY2FsbGJhY2siPgorICAgIDx2YWx1ZT5PSzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzQiIG5hbWU9InJwY2dlbmVyYWxlcnJvciI+CisgICAgPHZhbHVlPk5pZXpuYW55IGLFgsSFZC4gUHJvc3rEmSBwb2luZm9ybW93YcSHIGFkbWluaXN0cmF0b3JhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzUiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+TmllIG1hIHRha2llZ28gdcW8eXRrb3duaWthPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNiIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5OaWVwb3ByYXduZSBoYXPFgm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM3IiBuYW1lPSJsb2dvdXQiPgorICAgIDx2YWx1ZT5Qb3ByYXduaWUgd3lsb2dvd2Fuby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM4IiBuYW1lPSJyZWdpc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TYW1vZHppZWxuYSByZWplc3RyYWNqYSBuaWUgamVzdCBtb8W8bGl3YS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM5IiBuYW1lPSJyZWdpc3RyYXRpb24iPgorICAgIDx2YWx1ZT5OaWVwb3ByYXdueSBlLW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQwIiBuYW1lPSJyZWdpc3RyYXRpb24iPgorICAgIDx2YWx1ZT5wbGlrIG8gdGVqIG5hendpZSBpc3RuaWVqZSwgcHJvc3rEmSB3eWJyYWMgaW5uxIUgbmF6d8SZIHBsaWt1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MSIgbmFtZT0iZmlsZWJyb3dzZXIiPgorICAgIDx2YWx1ZT5uYXp3YSBwbGlrdSB6YSBrcsOzdGthPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MiIgbmFtZT0iZmlsZWJyb3dzZXIiPgorICAgIDx2YWx1ZT5OaWUgbW9nxYJlbSB6YXBpc2HEhyBhZHJlc3U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQzIiBuYW1lPSJ1c2VyYWRtaW4iPgorICAgIDx2YWx1ZT5Eb2Rhbm8gdcW8eXRrb3duaWthLCBhbGUgbmFsZcW8eSBnbyBwcnp5cGlzYcSHIGRvIG9yZ2FuaXphY2ppLCBibyB3IGlubnltIHByenlwYWRrdSBuaWUgYsSZZHppZSBtw7NnxYIgc2nEmSB6YWxvZ293YcSHLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDQiIG5hbWU9ImFkbWluZm9ybXMiPgorICAgIDx2YWx1ZT5Ob3d5IHdwaXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ1IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5OaWUgbWEgcG9sYSBvIHRha2ltIGlkZW50eWZpa2F0b3J6ZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ2IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5UbyBwb2xlIG5pZSBtYSBldHlraWV0eS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ3IiBuYW1lPSJlcnJvcm1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Qb3RyemVibmUgemV6d29sZW5pZSBhZG1pbmlzdHJhdG9yYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDgiIG5hbWU9Im1haW5uYXZpIj4KKyAgICA8dmFsdWU+RWR5dG9yIGrEmXp5a2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ5IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5KxJl6eWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUwIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5JRC1ldHlraWV0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTEiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPk5hendhIGV0eWtpZXR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1MiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+V2FydG/Fm8SHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1MyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+V2FydG/Fm2NpIHBvbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU0IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5OYXp3YSBldHlraWV0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTUiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPldhcnRvxZvEhyBldHlraWV0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTYiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPklELWV0eWtpZXR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1NyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+U2thc293YcWCZcWbIHR5bGtvIGV0eWtpZXTEmSwgYSBuaWUgcG9sZSEgTmllIG1vxbxlc3ogc2thc293YcSHIHBvbGEsIG1vxbxlIG1pZcSHIGV0eWtpZXR5IHcgaW5ueWNoIGrEmXp5a2FjaC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU4IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5OaWVwb3ByYXduZSBJRCBldHlraWV0eS4gRmllbGRMYW5ndWFnZXN2YWx1ZXNfSWQgbmllIHpvc3RhxYJvIHpuYWxlemlvbmUgdyBiYXppZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU5IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5OaWUgbW/FvG5hIHNrYXNvd2HEhyB0ZWdvIHBvbGEuIE1vxbxuYSBrYXNvd2HEhyB0eWxrbyBldHlraWV0eSwgYSBuaWUgcG9sYS4gT2JlY25pZSBicmFrIGV0eWtpZXR5LiBBbGJvIG5pZSB3c2themFubyDFvGFkbmVnbyBwb2xhLCBhbGJvIHRvIHBvbGUgbmllIG1hIGV0eWtpZXR5IHcgasSZenlrdSwga3TDs3R5IGVkeXR1amVzei48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYwIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5la3Nwb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TXVzaXN6IHNpxJkgcHJ6ZWxvZ293YcSHLCBhYnkgem9iYWN6ecSHIHptaWFueS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYyIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5Eb2RhaiBub3d5IGrEmXp5azwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjMiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPnNrYXN1aiBqxJl6eWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY0IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5Eb2RhaiBub3d5IGrEmXp5azwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjUiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPk5hendhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+ZG9kYWogasSZenlrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+S29waWEgemFwYXNvd2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY4IiBuYW1lPSJ0dXJub3Zlcmxpc3QiPgorICAgIDx2YWx1ZT5waWVyd3N6eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjkiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPnBvcHJ6ZWRuaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzAiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPm5hc3TEmXBueTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzEiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPm9zdGF0bmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzcyIiBuYW1lPSJ2aWRlb2JveCI+CisgICAgPHZhbHVlPnXFvHl0a293bmlrIG3Ds3dpIChCeSBjbGlja2luZyBoZXJlIHlvdSBjYW4gZ2l2ZSBleGNsdXNpdmUgYXVkaW8gLyBtdXRlIHRoZSBtaWNyb3Bob25lIG9mIG90aGVycyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzczIiBuYW1lPSJ2aWRlb2JveCI+CisgICAgPHZhbHVlPnfFgsSFY3ovd3nFgsSFY3ogZMW6d2nEmWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc0IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5TeXN0ZW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc1IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5Ud29qZSB1c3Rhd2llbmlhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3NiIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+Y3plxZvEhyw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc3IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5FZHl0dWogc3fDs2ogcHJvZmlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3OCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+Tm93ZSB3aWFkb21vxZtjaTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc5IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5QcnplxZtsaWogbm93eSBvYnJhemVrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4MCIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5EYW5lIHXFvHl0a293bmlrw7N3IC0gZWtzcG9ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODEiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+V3N6eXN0a2llIG9yZ2FuaXphY2plIG11c3rEhSBqdcW8IGlzdG5pZcSHITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODIiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+cm96cG9jem5paiBla3Nwb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4MyIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT53ZyBvcmdhbml6YWNqaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODQiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+cm96cG9jem5paiBla3Nwb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NSIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5EYW5lIHXFvHl0a293bmlrw7N3IC0gaW1wb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NiIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT53c2thxbwgdXNlcnMueG1sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+aW1wb3J0dWo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg4IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5Fa3Nwb3J0IGRvIFhNTC1hLiBUZSBwbGlraSBtb2fEhSBiecSHIHXFvHl0ZTombHQ7YnIvJmd0OyAtIGpha28gdHfDs2ogd2vFgmFkIGRvIHByb2pla3R1IC0gZG8gemFpbXBvcnRvd2FuaWEgZG8gaW5uZWdvIHN5c3RlbXUmbHQ7YnIvJmd0OyAtIGpha28ga29waWEgemFwYXNvd2EgLSBkbyBkb3N0b3Nvd2FuaWEga29tdW5pa2F0w7N3IGRvIHN3b2ljaCBwb3RyemViJmx0O2JyLyZndDsgLSBkbyB1bWllc3pjemVuaWEgdyBrYXRhbG9ndSB6IHBsaWthbWkgasSZenlrb3d5bWkgcHJ6ZWQga29sZWpuxIUgaW5zdGFsYWNqxIU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg5IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5Xc2thxbwgcGxpayBqxJl6eWtvd3kgZG8gemFpbXBvcnRvd2FuaWEuICZsdDtici8mZ3Q7V3liaWVyeiBqxJl6eWsgeiBsaXN0eSEgJmx0O2JyLyZndDtOaWUgd2HFvG5lIGpha2EgamVzdCBuYXp3YSBwbGlrdSwgJmx0O2JyLyAmZ3Q7em9zdGFuaWUgb24gemFpbXBvcnRvd2FueSBkbyB0ZWdvIGrEmXp5a2EhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5MCIgbmFtZT0iaW1wb3J0d2luZG93Ij4KKyAgICA8dmFsdWU+aW1wb3J0IC0gd3NrYcW8IHBsaWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkxIiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+WmFwaXN6IGpha288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkyIiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+TmF6d2E6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5MyIgbmFtZT0icmVjb3JkaW5nc2F2ZXdpbiI+CisgICAgPHZhbHVlPktvbWVudGFyejo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk0IiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+emFwaXN6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+TmFncmFuaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk2IiBuYW1lPSJyZWNvcmRlciI+CisgICAgPHZhbHVlPlByemVnbMSFZGFya2EgbmFncmHFhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTciIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPk5hZ3JhbmlhIHogcG9rb2rDs3cgcHVibGljem55Y2ggaSBwcnl3YXRueWNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5OCIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+VcW8eXRrb3duaWN5OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTkiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPkRvxYLEhWN6eWxpOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDAiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDEiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPlXFvHl0a293bmljeSB3IHR5bSBwb2tvanU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMiIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+b2TFm3dpZcW8PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMyIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+UG9rw7NqIGplc3QgcGXFgm55LiBaYWpyenlqIHphIHBhcsSZIG1pbnV0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDQiIG5hbWU9InJvb21zTGlzdCI+CisgICAgPHZhbHVlPmtsaWtuaWogbmEgcG9rw7NqLCBhYnkgem9iYWN6ecSHIHN6Y3plZ8OzxYJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNSIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+Q3phdHVqIHogdcW8eXRrb3duaWthbWkgdGVnbyBwb2tvanU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNiIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+UG9rw7NqOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDciIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPlXFvHl0a293bmljeSB3IHR5bSBwb2tvanU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwOCIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+b2Q6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwOSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+b2R0d8OzcnogbmFncmFuaWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDEwIiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5ExYJ1Z2/Fm8SHOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTEiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkRhdGE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMiIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+TmllIG1vxbxlc3ogdHUgbmljIHptaWVuaWHEhy4gVG8gamVzdCBuYWdyYW5pZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDEzIiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5PZHR3YXJ6YWogdG8gbmFncmFuaWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE0IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5PZHR3YXJ6YWogLyBQYXV6YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTUiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPlJvenBvY3puaWogbmFncnl3YW5pZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTYiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPnpha2/FhGN6IG5hZ3J5d2FuaWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE3IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5OYWdyeXdhbmllOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTgiIG5hbWU9InJlY29yZF9lcnJvcl9tc2ciPgorICAgIDx2YWx1ZT5KdcW8IGt0b8WbIHRvIHcgdGVqIGNod2lsaSBuYWdyeXdhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTkiIG5hbWU9InJlY29yZF9tZXNzYWdlIj4KKyAgICA8dmFsdWU+TmFncnl3YW5lIHByemV6IHXFvHl0a293bmlrYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIwIiBuYW1lPSJyZWNvcmRfY2FuY2VsIj4KKyAgICA8dmFsdWU+YW51bHVqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyMSIgbmFtZT0icmVjb3JkX2NhbmNhbF90b29sdGlwIj4KKyAgICA8dmFsdWU+TmFncnl3YW5pZSB6b3N0YW5pZSBhbnVsb3dhbmUgaSBuaWUgYsSZZHppZSB6YXBpc2FuZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIyIiBuYW1lPSJjYW5jZWxfZGlhbG9nX3Jlc3VtZSI+CisgICAgPHZhbHVlPmtvbnR5bnV1ajwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjMiIG5hbWU9ImNhbmNlbF9kaWFsb2dfcmVzdW1lX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5aYW1rbmlqIHRvIG9rbm8gaSBwb3dyw7PEhyBkbyBuYWdyeXdhbmlhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyNCIgbmFtZT0icGFpbnR0b29sc19lbGxpcHNlX2NvbG9yIj4KKyAgICA8dmFsdWU+em1pZcWEIGtvbG9yIGxpbmlpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyNSIgbmFtZT0iY29sb3JwaWNrZXJfaGVhZCI+CisgICAgPHZhbHVlPld5Ymllcnoga29sb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI2IiBuYW1lPSJwYWludHRvb2xzX2xpbmVfZGlzYWJsZSI+CisgICAgPHZhbHVlPld5xYLEhWN6IC8gV8WCxIVjeiBrb2xvciBsaW5paTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjciIG5hbWU9InBhaW50dG9vbHNfZmlsbF9kaXNhYmxlIj4KKyAgICA8dmFsdWU+em1pZcWEIGtvbG9yIHd5cGXFgm5pZW5pYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjgiIG5hbWU9InBhaW50dG9vbHNfbGluZV9kaXNhYmxlIj4KKyAgICA8dmFsdWU+V3nFgsSFY3ogLyBXxYLEhWN6IGtvbG9yIHd5cGXFgm5pZW5pYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjkiIG5hbWU9ImNoYW5nZV93aWR0aF9hcnJvd19kb3duX3NsaWRlciI+CisgICAgPHZhbHVlPlptaWXFhCBncnVib8WbxIcgbGluaWk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMwIiBuYW1lPSJjbG9zZV9zbWFsbF9wb3B1cHMiPgorICAgIDx2YWx1ZT56YW1rbmlqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzMSIgbmFtZT0icGFpbnRfdG9vbF9sZXR0ZXIiPgorICAgIDx2YWx1ZT56bWllxYQgcm96bWlhciBjemNpb25raTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzIiIG5hbWU9InJlY29yZGluZ3NsaXN0X2RlbGV0ZSI+CisgICAgPHZhbHVlPlNrYXN1aiBuYWdyYW5pZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzMiIG5hbWU9InJlY29yZGluZ3NsaXN0X3JlY29yZGVkQnlHdWVzdCI+CisgICAgPHZhbHVlPkdvxZvEhzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzQiIG5hbWU9InJlY29yZGluZ3NsaXN0X3JlY29yZGVkYnkiPgorICAgIDx2YWx1ZT5Qcnplejo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM1IiBuYW1lPSJyZWNvcmRpbmdzX3RhYmxlX2hlYWRfbmFtZSI+CisgICAgPHZhbHVlPk5hendhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNiIgbmFtZT0icmVjb3JkaW5nc190YWJsZV9oZWFkX3Jvb20iPgorICAgIDx2YWx1ZT5Qb2vDs2o8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM3IiBuYW1lPSJyZWNvcmRpbmdzX3RhYmxlX2hlYWRfZGF0ZSI+CisgICAgPHZhbHVlPkRhdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM4IiBuYW1lPSJyZWNvcmRfc3RhcnRfY2FuY2VsIj4KKyAgICA8dmFsdWU+YW51bHVqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzOSIgbmFtZT0icmVjb3JkX3N0YXJ0X3N0YXJ0Ij4KKyAgICA8dmFsdWU+c3RhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQwIiBuYW1lPSJmaWxlc2Jyb3dzZXJfdGFibGVfaGVhZF9uYW1lIj4KKyAgICA8dmFsdWU+TmF6d2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQxIiBuYW1lPSJmaWxlc2Jyb3dzZXJfdGFibGVfaGVhZF9kYXRlIj4KKyAgICA8dmFsdWU+RGF0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDIiIG5hbWU9ImNoYXRfY2xlYXJfaGlzdG9yeSI+CisgICAgPHZhbHVlPlNrYXN1aiB0cmFuc2tyeXB0IGN6YXR1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MyIgbmFtZT0iY2hhdF9vdmVyYWxsX2hlYWRlciI+CisgICAgPHZhbHVlPkN6YXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ0IiBuYW1lPSJjaGF0X3NlbmRfYnRuIj4KKyAgICA8dmFsdWU+d3nFm2xpaiB3aWFkb21vxZvEhzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDUiIG5hbWU9ImNoYXRfZW1vdF9idG4iPgorICAgIDx2YWx1ZT5FbW90aWtvbnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ2IiBuYW1lPSJjaGF0X2Vtb3Rfd2luIj4KKyAgICA8dmFsdWU+RW1vdGlrb255PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NyIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzIj4KKyAgICA8dmFsdWU+V3liaWVyeiB1ZG9zdMSZcG5pYW5lIHVyesSFZHplbmlhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0OCIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2NvbWJvIj4KKyAgICA8dmFsdWU+RMW6d2nEmWsgYW5kIFdpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0OSIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2NvbWJvIj4KKyAgICA8dmFsdWU+VHlsa28gZMW6d2nEmWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUwIiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT5UeWxrbyBvYnJhejwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTEiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPmJleiB0cmFuc21pc2ppIEF1ZGlvL1dpZGVvIChzdGF0eWN6bnkgb2JyYXplayk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUyIiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfaW5mb190ZXh0Ij4KKyAgICA8dmFsdWU+TmllIGLEmWR6aWUgdHJhbnNtaXNqaSBhdWRpby93aWRlbyB6IHR3b2plZ28ga29tcHV0ZXJhLiBaYW1pYXN0IHRlZ28gem9zdGFuaWUgcG9rYXphbnkgb2JyYXplayAoYXdhdGFyKSB6IHR3b2plZ28gcHJvZmlsdS4gV3liaWVyeiB0ZSB1c3Rhd2llbmlhLCBqZcWbbGkgbWFzeiBwcm9ibGVteSB6IHByemVwdXN0b3dvxZtjacSFIGx1YiBiYXJkem8gd29sbmUgxYLEhWN6ZSBpbnRlcm5ldG93ZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUzIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX21vbmRheSI+CisgICAgPHZhbHVlPlBPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV90dWVzZGF5Ij4KKyAgICA8dmFsdWU+V1Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU1IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3dlZG5lc2RheSI+CisgICAgPHZhbHVlPsWaUjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTYiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfdGh1cnNkYXkiPgorICAgIDx2YWx1ZT5DWjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTciIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfZnJpZGF5Ij4KKyAgICA8dmFsdWU+UFQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU4IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3NhdHVyZGF5Ij4KKyAgICA8dmFsdWU+U088L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU5IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3N1bmRheSI+CisgICAgPHZhbHVlPk5EPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9tb25kYXkiPgorICAgIDx2YWx1ZT5Qb25pZWR6aWHFgmVrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9UdWVzZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5XdG9yZWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYyIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1dlZG5lc2RheUxhYmVsIj4KKyAgICA8dmFsdWU+xZpyb2RhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MyIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9UaHVyc2RheUxhYmVsIj4KKyAgICA8dmFsdWU+Q3p3YXJ0ZWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY0IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX0ZyaWRheUxhYmVsIj4KKyAgICA8dmFsdWU+UGnEhXRlazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjUiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfU2F0dXJkYXlMYWJlbCI+CisgICAgPHZhbHVlPlNvYm90YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjYiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfU3VuZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5OaWVkemllbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY3IiBuYW1lPSJjYWxlbmRhcl93ZWVrbnVtYmVyX2hlYWRlciI+CisgICAgPHZhbHVlPlRZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2OCIgbmFtZT0iY2FsZW5kYXJfd2Vla251bWJlcl9oZWFkZXJUb29sdGlwIj4KKyAgICA8dmFsdWU+VHlkemllxYQga2FsZW5kYXJ6b3d5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2OSIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPlN0eWN6ZcWEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3MCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPkx1dHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDcxIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+TWFyemVjPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3MiIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPkt3aWVjaWXFhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzMiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5NYWo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc0IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+Q3plcndpZWM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc1IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+TGlwaWVjPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3NiIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPlNpZXJwaWXFhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzciIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5Xcnplc2llxYQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc4IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+UGHFumR6aWVybmlrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3OSIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPkxpc3RvcGFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4MCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPkdydWR6aWXFhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODEiIG5hbWU9ImNhbGVuZGFyd2luX2hlYWRlciI+CisgICAgPHZhbHVlPkthbGVuZGFyejwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODIiIG5hbWU9InJvb21hZG1pbl9sYWJlbE51bWJlck9mUGFydGljaXBhbnRzIj4KKyAgICA8dmFsdWU+VWN6ZXRuaWN5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4MyIgbmFtZT0icm9vbVZhbHVlX2FkdmFuY2VkU2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Qb2thxbwgdXN0YXdpZW5pYSB3eWdsxIVkdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODQiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfdmlkZW9YIj4KKyAgICA8dmFsdWU+WCB8IFk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg1IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3ZpZGVvWSI+CisgICAgPHZhbHVlPlN6ZXJva2/Fm8SHIHwgV3lzb2tvxZvEhzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODYiIG5hbWU9InJvb21BZG1pbl9sYXlvdXQiPgorICAgIDx2YWx1ZT5Lb250ZW5lciB3aWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODciIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfbW9kIj4KKyAgICA8dmFsdWU+S29udGVuZXIgbW9kZXJhY2ppPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4OCIgbmFtZT0icm9vbUFkbWluX2xheW91dF9tb2RfcG9zIj4KKyAgICA8dmFsdWU+WDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODkiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPktvbnRlbmVyIHRhYmxpY3k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkwIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmRfc2hvdyI+CisgICAgPHZhbHVlPlfFgsSFY3pvbnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkxIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmRfcG9zIj4KKyAgICA8dmFsdWU+WCB8IFk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkyIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5TemVyb2tvxZvEhyB8IFd5c29rb8WbxIc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkzIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X2ZpbGVzIj4KKyAgICA8dmFsdWU+S29udGVuZXIgcGxpa8OzdywgY3phdHUsIHVjemVzdG5pa8OzdzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTQiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXNfc2hvdyI+CisgICAgPHZhbHVlPlfFgsSFY3pvbnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk1IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X2ZpbGVzX3BvcyI+CisgICAgPHZhbHVlPlggfFk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk2IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X2ZpbGVzIj4KKyAgICA8dmFsdWU+U3plcm9rb8WbxIcgfCBXeXNva2/Fm8SHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NyIgbmFtZT0ibW9kZXJhdG9yX2dvbmVfbWVzc2FnZSI+CisgICAgPHZhbHVlPk1vZGVyYXRvciB3eXN6ZWTFgiB6IHBva29qdS4gTmlrdCBvYmVjbmllIG5pZSBwcnplcHJvd2FkemEgcHJlemVudGFjamkuIE1vxbxlc3ogd3lzdMSFcGnEhyB6IHduaW9za2llbSBvIHpvc3RhbmllIG1vZGVyYXRvcmVtLCBhbGJvIHBvY3pla2HEhy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk4IiBuYW1lPSJtb2RlcmF0b3JfbWVzc2FnZV9ldmVudF9ub19tb2QiPgorICAgIDx2YWx1ZT5XIHBva29qdSBuaWUgbWEgbW9kZXJhdG9yYSwgYWxlIHPEhSB1Y3plc3RuaWN5LiBNb8W8ZXN6IHd5c3TEhXBpxIcgeiB3bmlvc2tpZW0gbyB6b3N0YW5pZSBtb2RlcmF0b3JlbSwgYWxibyBwb2N6ZWthxIcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5OSIgbmFtZT0iZmVlZGJhY2tfdGVtcGxhdGVfc3ViamVjdCI+CisgICAgPHZhbHVlPkZlZWRiYWNrICRBUFBfTkFNRTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDAiIG5hbWU9Imludml0YXRpb25fdGVtcGxhdGVfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSAtIFphcHJvc3plbmllPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwMSIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X2Zyb20iPgorICAgIDx2YWx1ZT5XaWFkb21vxZvEhyBvZCB1xbx5dGtvd25pa2E6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwMiIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X21lc3NhZ2UiPgorICAgIDx2YWx1ZT5XaWFkb21vxZvEhzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAzIiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfY2xpY2tfdGV4dCI+CisgICAgPHZhbHVlPktsaWtuaWogbmEgbGluaywgYWJ5IHd6acSFxIcgdWR6aWHFgiB3IHNwb3RrYW5pdTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA0IiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfY2xpY2tfdGV4dF9saW5rIj4KKyAgICA8dmFsdWU+S2xpa25paiB0dSwgYW55IHdlasWbxIcgZG8gcG9rb2p1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwNSIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X2NsaWNrX3RleHRfaGVscCI+CisgICAgPHZhbHVlPmplxZtsaSBtYXN6IGvFgm9wb3QgeiBsaW5raWVtLCBza29waXVqIGdvIGkgd2tsZWogZG8gcGFza2EgYWRyZXN1IHcgcHJ6ZWdsxIVkYXJjZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA2IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSBaYXBpc3k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA3IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfaGVhZDIiPgorICAgIDx2YWx1ZT5Ud29qZSBkYW5lIHXFvHl0a293bmlrYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA4IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfdXNlcm5hbWUiPgorICAgIDx2YWx1ZT5Mb2dpbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA5IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfcGFzcyI+CisgICAgPHZhbHVlPkhhc8WCbzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTEwIiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfbWFpbCI+CisgICAgPHZhbHVlPmUtbWFpbDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTExIiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfYnllIj4KKyAgICA8dmFsdWU+WmVzcMOzxYIgJEFQUF9OQU1FPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxMiIgbmFtZT0icmVnaXN0ZXJfbWFpbF9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIFphcGlzeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTMiIG5hbWU9InJlc2V0X3Bhc3N3b3JkX3RlbXBsYXRlX2hlYWQiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgLSB6bWlhbmEgaGFzxYJhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNCIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfdGVzdF9saW5rIj4KKyAgICA8dmFsdWU+S2xpa25paiBuYSB0ZW4gbGluaywgYWJ5IHdwcm93YWR6acSHIG5vd2UgaGFzxYJvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTUiIG5hbWU9InJlc2V0X3Bhc3N3b3JkX3RlbXBsYXRlX3RleHQyX2xpbmsiPgorICAgIDx2YWx1ZT5LbGlrbmlqIHR1dGFqLCBhYnkgd3Byb3dhZHppxIcgbm93ZSBoYXPFgm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE2IiBuYW1lPSJyZXNldF9wYXNzd29yZF90ZW1wbGF0ZV90ZXh0M19saW5rIj4KKyAgICA8dmFsdWU+amXFm2xpIG1hc3oga8WCb3BvdCB6IGxpbmtpZW0sIHNrb3BpdWogZ28gaSB3a2xlaiBkbyBwYXNrYSBhZHJlc3UgdyBwcnplZ2zEhWRhcmNlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTciIG5hbWU9InJlc2V0X3Bhc3N3b3JkX21haWxfc3ViamVjdCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSBabWlhbmEgaGFzxYJhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxOCIgbmFtZT0iZGF0ZVJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+UHJvc3rEmSB3cHJvd2FkemnEhyBwb3ByYXduxIUgZGF0xJksIG5wLiAyNC4xMi4yMDAxIChkZC5tbS5ycnJyKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTkiIG5hbWU9ImVtYWlsUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5Qcm9zesSZIHdwcm93YWR6acSHIHBvcHJhd255IGFkcmVzIGUtbWFpbCwgbnAuIG5hbWVAbWFpbC5jb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIwIiBuYW1lPSJmbG9hdFJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+UHJvc3rEmSB3cGlzYcSHIGxpY3pixJkgZHppZXNpxJl0bsSFLCBucC4gMS4wMDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjEiIG5hbWU9Im51bWJlclJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+UHJvc3rEmSB3cGlzYcSHIGxpY3pixJkgY2HFgmtvd2l0xIUsIG5wLiAxMDA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIyIiBuYW1lPSJwaG9uZVJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+UHJvc3rEmSB3cGlzYcSHIHBvcHJhd255IG51bWVyIHRlbGVmb251LCBucC4gKzQ4IDEyIDEyMzQ1Njc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIzIiBuYW1lPSJ0aW1lUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5Qcm9zesSZIHdwaXNhxIcgcG9wcmF3bnkgY3phcywgbnAuIDEyOjIzIChnZzptbSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI0IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvdyI+CisgICAgPHZhbHVlPlphYmV6cGllY3pvbmUgaGFzxYJlbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjUiIG5hbWU9Imludml0YXRpb25fd2luZG93X3Bhc3N3b3JkTGFiZWwiPgorICAgIDx2YWx1ZT5IYXPFgm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI2IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZExhYmVsIj4KKyAgICA8dmFsdWU+T2tyZXMgd2HFvG5vxZtjaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjciIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkIj4KKyAgICA8dmFsdWU+Tmllc2tvxYRjem9ueTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjgiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkIj4KKyAgICA8dmFsdWU+T2tyZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI5IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZCI+CisgICAgPHZhbHVlPkplZG5vcmF6b3dlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWRGcm9tTGFiZWwiPgorICAgIDx2YWx1ZT5XYcW8bmUgb2Q6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMSIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWRUb0xhYmVsIj4KKyAgICA8dmFsdWU+V2HFvG5lIGRvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzIiIG5hbWU9Imludml0YXRpb25fd2luZG93X01haWxTdWJqZWN0Ij4KKyAgICA8dmFsdWU+WmFwcm9zemVuaWUgZG8gJEFQUF9OQU1FPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMyIgbmFtZT0iaW52aXRhdGlvbl9lcnJvciI+CisgICAgPHZhbHVlPk5pZSBtYSB6YXByb3N6ZW5pYSB6IHRha2ltIGtvZGVtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzNCIgbmFtZT0iaW52aXRhdGlvbl9lcnJvciI+CisgICAgPHZhbHVlPlRvIHphcHJvc3plbmllIGJ5xYJvIGp1xbwgdXp5dGUuIFRlbiByb2R6YWogemFwcm9zemVuaWEgbmllIG1vxbxlIGJ5xIcgd3lrb3J6eXN0YW55IHBvd3TDs3JuaWUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzNSIgbmFtZT0iaW52aXRhdGlvbl9lcnJvciI+CisgICAgPHZhbHVlPlRlbiBrb2QgemFwcm9zemVuaWEgamVzdCBuaWV3YcW8bnkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzNiIgbmFtZT0iaW52aXRhdGlvbl9wYXNzIj4KKyAgICA8dmFsdWU+SGFzxYJvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzciIG5hbWU9Imludml0YXRpb25fcGFzc19idG4iPgorICAgIDx2YWx1ZT5TcHJhd2TFuiBoYXPFgm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM4IiBuYW1lPSJpbnZpdGF0aW9uX3Bhc3NfZXJyb3IiPgorICAgIDx2YWx1ZT5OaWVwb3ByYXduZSBoYXPFgm8hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzOSIgbmFtZT0iQnJvd3NlciI+CisgICAgPHZhbHVlPkF1ZGlvX1dpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0MCIgbmFtZT0iYXVkaW9fdmlkZW8iPgorICAgIDx2YWx1ZT5TeW5jaHJvbml6dWogQXVkaW8vV2lkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQxIiBuYW1lPSJlcnJvckNvZGVfaW52YWxpZFNlc3Npb24iPgorICAgIDx2YWx1ZT5aYWxvZ293YW5pZSBiecWCbyBwb3ByYXduZSwgYWxlIHBvZGFuYSBzZXNqYSBuaWUgamVzdCBha3R5d25hIGx1YiBwcnplY2hvd3l3YW5hIG5hIHNlcndlcnplLiBNdXNpc3ogb3RyenltYcSHIG5vd3kgaWRlbnR5ZmlrYXRvciBzZXNqaSBpIHBvdMOzcnp5xIcgbG9nb3dhbmllLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDIiIG5hbWU9ImVycm9yY29kZV9zZXRVc2VyT2JqZWN0Ij4KKyAgICA8dmFsdWU+VGVuIGlkZW50eWZpa2F0b3Igc2VzamkgbmllIGplc3QgemFsb2dvd2FueSwgYWxibyBuaWUgbWEgdXByYXduaWXFhCBhZG1pbmlzdHJhdG9yc2tpY2guIEJyYW1hIFNPQVAgd3ltYWdhIHXFvHl0a293bmlrYSBvIHVwcmF3bmllbmlhY2ggYWRtaW5pc3RyYXRvcmEgZG8gemFtaWVzemN6YW5pYSBub3d5Y2ggdcW8eXRrb3duaWvDs3cuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0MyIgbmFtZT0iZXJyb3Jjb2RlX2xvZ2luQnlSZW1vdGVVc2VyIj4KKyAgICA8dmFsdWU+VGEgc2VzamEgbmllIG1hIHByennFgmFjem9ueWNoIGRhbnljaCB1xbx5dGtvd25pa2EuIEFsYm8gbmllIHd1d2/FgmHFgmXFmyBwb3ByYXduaWUgYnJhbXkgU09BUCBwcnplZCBkb3N0xJlwZW0gZG8gYXBsaWthY2ppLCBhbGJvIHXFvHl3YXN6IG5pZXfFgmHFm2Npd2VnbyBpZGVudHlmaWthdG9yYSBzZXNqaS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ0IiBuYW1lPSJkZWJ1Z19tZXNzYWdlX3JlY29yZGluZyI+CisgICAgPHZhbHVlPk5hZ3J5d2FuaWUgamVzdCBvYmVjbmllIHcgZmF6aWUgQkVUQSB0ZXN0w7N3ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDUiIG5hbWU9InByb3BlcnR5UGFuZWxYVmFsdWUiPgorICAgIDx2YWx1ZT54PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0NiIgbmFtZT0icHJvcGVydHlQYW5lbFhWYWx1ZUxhYmVsIj4KKyAgICA8dmFsdWU+b8WbLXg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ3IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWVZhbHVlIj4KKyAgICA8dmFsdWU+eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDgiIG5hbWU9InByb3BlcnR5UGFuZWxZVmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPm/Fmy15PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0OSIgbmFtZT0icHJvcGVydHlQYW5lbFdpZHRoVmFsdWUiPgorICAgIDx2YWx1ZT5zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1MCIgbmFtZT0icHJvcGVydHlQYW5lbFdpZHRoVmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPnN6ZXJva2/Fm8SHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1MSIgbmFtZT0icHJvcGVydHlQYW5lbEhlaWdodFZhbHVlIj4KKyAgICA8dmFsdWU+dzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTIiIG5hbWU9InByb3BlcnR5UGFuZWxIZWlnaHRWYWx1ZUxhYmVsIj4KKyAgICA8dmFsdWU+d3lzb2tvxZvEhzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTMiIG5hbWU9InByb3BlcnR5T3BhY2l0eVNsaWRlciI+CisgICAgPHZhbHVlPlptaWXFhCBwcnplenJvY3p5c3RvxZvEhzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTQiIG5hbWU9ImJyb3dzZXJPcGVuIj4KKyAgICA8dmFsdWU+T3R3w7NyeiBwcnplZ2zEhWRhcmvEmTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTUiIG5hbWU9ImJyb3dzZXJDbG9zZSI+CisgICAgPHZhbHVlPlphbWtuaWogcHJ6ZWdsxIVkYXJrxJk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU2IiBuYW1lPSJjb25uZWN0aW9uTG9zdE1lc3NhZ2UiPgorICAgIDx2YWx1ZT5VdHJhY29ubyBwb8WCxIVjemVuaWUgeiBzZXJ3ZXJlbS4gUHJ6ZcWCYWR1aiBhcGxpa2FjasSZIGx1YiBzcHJhd2TFuiBzd29qZSBwb8WCYWN6ZW5pZSBzaWVjaW93ZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU3IiBuYW1lPSI1NTciPgorICAgIDx2YWx1ZT5Xc2thxbpuaWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU4IiBuYW1lPSJzeW5jIG1lc3NhZ2UgaGVhZGVyIj4KKyAgICA8dmFsdWU+U3luY2hyb25penVqxJk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU5IiBuYW1lPSJTeW5jaHJvbml6aW5nIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TeW5jaHJvbml6dWrEmSB1xbx5dGtvd25pa8OzdywgcHJvc3rEmSBjemVrYcSHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MCIgbmFtZT0iZXhwb3J0VG9TVkciPgorICAgIDx2YWx1ZT4mbHQ7dSZndDtQb2JpZXJ6IGpha28gU1ZHJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjEiIG5hbWU9ImV4cG9ydFRvSW1hZ2UiPgorICAgIDx2YWx1ZT4mbHQ7dSZndDtQb2JpZXJ6IGpha28gUE5HJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjIiIG5hbWU9ImV4cG9ydFRvSW1hZ2UiPgorICAgIDx2YWx1ZT4mbHQ7dSZndDtQb2JpZXJ6IGpha28gSlBHJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjMiIG5hbWU9ImV4cG9ydFRvSW1hZ2UiPgorICAgIDx2YWx1ZT4mbHQ7dSZndDtQb2JpZXJ6IGpha28gUERGJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjQiIG5hbWU9ImV4cG9ydFRvSW1hZ2UiPgorICAgIDx2YWx1ZT4mbHQ7dSZndDtQb2JpZXJ6IGpha28gVElGJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjUiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5UeXAgemFwcm9zemVuaWE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2NiIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkthdGVnb3JpYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY3IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+UG93dGFyemFuaWU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2OCIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPmJyYWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY5IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+bG9rYWxpemFjamE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MCIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPlN0YXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPktvbmllYzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzIiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5UeXR1xYI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MyIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPktvbWVudGFyejo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc0IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+WmFwcm/FmyBsdWR6aTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzUiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5Db2R6aWVubmllPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NiIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkNvIG1pZXNpxIVjPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NyIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkNvIHJva3U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc4IiBuYW1lPSJhbGVydCI+CisgICAgPHZhbHVlPktvbmllYyBva3Jlc3UgamVzdCBwcnplZCBqZWdvIHBvY3rEhXRraWVtITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzkiIG5hbWU9ImFsZXJ0Ij4KKyAgICA8dmFsdWU+UHJvc3rEmSBwb2RhxIcgdHl0dcWCITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODAiIG5hbWU9IjU4MCI+CisgICAgPHZhbHVlPlBETDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODEiIG5hbWU9IjU4MSI+CisgICAgPHZhbHVlPlfFgsSFY3ogdG8sIGplxZtsaSBwaXN6ZXN6IG9kIHByYXdlaiBkbyBsZXdlajwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODIiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+VGFibGljYSByb3pkemllbGN6YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODMiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+T2dsxIVkYWogbmFncmFuZSBzcG90a2F2aWEgaSB3eWvFgmFkeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODQiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+U3BvdGthbmllIC0ga29uZmVyZW5jamEgeiA0IChkbyAxNikgdcW8eXRrb3duaWthbWkmbHQ7YnIvICZndDtrYcW8ZHkgbWEgbW/FvGxpd2/Fm8SHIG5hZGF3YW5pYSBhdWRpby93aWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODUiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+V3lrxYJhZCAtIGtvbmZlcmVuY2phIGRvIDIwMCB1Y3plc3RuaWvDs3cmbHQ7YnIvJmd0O1R5bGtvIG1vZGVyYXRvciBtb8W8ZSBuYWRhd2HEhyBhdWRpby93aWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODYiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+VXR3w7NyeiB1xbx5dGtvd25pa8OzdywgcG9rb2plLCBvcmdhbml6YWNqZSZsdDtici8mZ3Q7ICsgem1pZcWEIGtvbmZpZ3VyYWNqxJk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg3IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5Vxbx5dGtvd25pY3kgdyB0eW0gcG9rb2p1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4OCIgbmFtZT0icm9vbSBBZG1pbmlzdHJhdGlvbiByb29tY2xpZW50cyBsaXN0Ij4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg5IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTAiIG5hbWU9InJvb20gQWRtaW5pc3RyYXRpb24gcm9vbWNsaWVudHMgbGlzdCI+CisgICAgPHZhbHVlPkQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkxIiBuYW1lPSJzd2Ygc3luYyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+V2N6eXR1asSZIGRva3VtZW50LiBQcm9zesSZIGN6ZWthxIcgbmEgenN5bmNocm9uaXpvd2FuaWUgc3RhY2ppIGtsaWVuY2tpY2guPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5MiIgbmFtZT0idXBsb2FkIGRpYWxvZyI+CisgICAgPHZhbHVlPlByemVzecWCYW5pZSB6YWtvxYRjem9uZSwgcHJ6ZXByb3dhZHphbSBrb253ZXJzasSZIGRva3VtZW50dSAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkzIiBuYW1lPSJ1cGxvYWQgZGlhbG9nIj4KKyAgICA8dmFsdWU+WmFjem5paiBwcnplc3nFgmFuaWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk0IiBuYW1lPSJ1cGxvYWQgZGlhbG9nIj4KKyAgICA8dmFsdWU+UHJ6ZXN5xYJhbmllIGkgaW1wb3J0LiBQcm9zesSZIHd5YnJhxIcgcGxpayB6IGR5c2t1LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTUiIG5hbWU9InVwbG9hZCBEaWFsb2ciPgorICAgIDx2YWx1ZT5BbnVsdWo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk2IiBuYW1lPSJ1cGxvYWQgRGlhbG9nIj4KKyAgICA8dmFsdWU+V3liaWVyeiBwbGlrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NyIgbmFtZT0iYWRtaW5pc3RyYXRpb24gbmF2aWdhdGlvbiI+CisgICAgPHZhbHVlPlBvxYLEhWN6ZW5pYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTgiIG5hbWU9ImNvbmZhZG1pbiB2YWx1ZSBsaXN0Ij4KKyAgICA8dmFsdWU+V2FydG/Fm8SHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5OSIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPklEIHN0cnVtaWVuaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAwIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+TG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAxIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+UG/FgsSFY3pvbnkgb2Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAyIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+UG9rw7NqIC8gemFrcmVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwMyIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPld5cnp1xIcgdcW8eXRrb3duaWthPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwNCIgbmFtZT0ia2ljayB1c2VyIGNvbmZpcm1hdGlvbiBkaWFsb2ciPgorICAgIDx2YWx1ZT5XeXJ6dcSHIHXFvHl0a293bmlrYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDUiIG5hbWU9ImtpY2sgdXNlciBjb25maXJtYXRpb24gZGlhbG9nIj4KKyAgICA8dmFsdWU+Q3p5IGNoY2VzeiB3eXJ6dWNpxIcgKHJvesWCxIVjennEhykgcG/FgsSFY3plbmllIHRlZ28gdcW8eXRrb3duaWthPyAmbHQ7YnIvJmd0OyBXeXJ6dWNpc3ogdcW8eXRrb3duaWthIHogcG9rb2p1LCBhbGUgbW/FvGUgb24gc2nEmSBwb3d0w7NybmllIHphbG9nb3dhxIcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwNiIgbmFtZT0ia2ljayB1c2VyIG1lc3NhZ2UgZGlhbG9nIj4KKyAgICA8dmFsdWU+UG/FgsSFY3plbmllIHByemVyd2FuZSBwcnpleiBhZG1pbmlzdHJhdG9yYSBsdWIgbW9kZXJhdG9yYS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA3IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Bob25lIj4KKyAgICA8dmFsdWU+VGVsZWZvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDgiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPlXFvHl0a293bmlrIGplc3QgbW9kZXJhdG9yZW0gdGVnbyBwb2tvanU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA5IiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5Vxbx5dGtvd25payBtYSBwcmF3byBkbyByeXNvd2FuaWEgbmEgdGFibGljeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTAiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPihSZSlzdGFydHVqIEF1ZGlvL1dpZGVvIHptaWXFhCB1c3Rhd2llbmlhIHVyesSFZHplxYQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjExIiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5Qb3p3w7NsIHRlbXUgdcW8eXRrb3duaWtvd2kgcnlzb3dhxIcgbmEgdGFibGljeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTIiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPlphYmllcnogdGVtdSB1xbx5dGtvd25pa293aSBwcmF3byBkbyByeXNvd2FuaWEgbmEgdGFibGljeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTMiIG5hbWU9ImNvbmZlcmVuY2VQYW5lbHMiPgorICAgIDx2YWx1ZT5Vxbx5dGtvd25pY3k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE0IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+UGxpa2k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE1IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+VGFibGljYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTYiIG5hbWU9ImNvbmZlcmVuY2VQYW5lbHMiPgorICAgIDx2YWx1ZT5DemF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxNyIgbmFtZT0ib3JnYW5pemF0aW9uIGNob29zZSBpbmZvIj4KKyAgICA8dmFsdWU+VHdvamUga29udG8gamVzdCBwcnp5cGlzYW5lIGRvIGtpbGt1IG9yZ2FuaXphY2ppLiBQcm9zesSZIHd5YnJhxIcgamVkbsSFIHogbmljaCBuYSBwb3RyemVieSBiaWXFvMSFY2VqIHNlc2ppLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTgiIG5hbWU9ImVycm9yIG1lc3NhZ2Ugcm9vbSBmdWxsIj4KKyAgICA8dmFsdWU+VGVuIHBva8OzaiBqZXN0IGNod2lsb3dvIHBlxYJueS4gWmFqcnp5aiBww7PFum5pZWouPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxOSIgbmFtZT0icm9vbXR5cGVzIj4KKyAgICA8dmFsdWU+Um9kemFqIHBva29qdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjAiIG5hbWU9ImFwcG9pbnRlZF9yb29tIj4KKyAgICA8dmFsdWU+UG9rw7NqIHNwb3RrYcWEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyMSIgbmFtZT0ic2VydmVydGltZSI+CisgICAgPHZhbHVlPkN6YXMgc2Vyd2VyYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjIiIG5hbWU9Imludl9yZW1pbmRlcl90ZW1wbGF0ZV9oZWFkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIC0gcHJ6eXBvbW5pZW5pZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjMiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2Zyb20iPgorICAgIDx2YWx1ZT5XaWFkb21vxZvEhyBvZCB1xbx5dGtvd25pa2E6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNCIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfbWVzc2FnZSI+CisgICAgPHZhbHVlPldpYWRvbW/Fm8SHOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjUiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2NsaWNrX3RleHQiPgorICAgIDx2YWx1ZT5LbGlrbmlqIG5hIHRlbiBsaW5rLCBhYnkgd3ppxIXEhyB1ZHppYcWCIHcgc3BvdGthbml1OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjYiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2NsaWNrX3RleHRfbGluayI+CisgICAgPHZhbHVlPktsaWtuaWogdHV0YWosIGFieSB3ZWrFm8SHIGRvIHBva29qdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjciIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2NsaWNrX3RleHRfaGVscCI+CisgICAgPHZhbHVlPmplxZtsaSBtYXN6IGvFgm9wb3QgeiBsaW5raWVtLCBza29waXVqIGdvIGkgd2tsZWogZG8gcGFza2EgYWRyZXN1IHcgcHJ6ZWdsxIVkYXJjZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI4IiBuYW1lPSJidG5fc2VhcmNoX2ludGVybiI+CisgICAgPHZhbHVlPnd5c3p1a2l3YW5pZSB3ZXduxJl0cnpuZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjkiIG5hbWU9ImJ0bl9zZWFyY2hfZXh0ZXJuIj4KKyAgICA8dmFsdWU+emV3bsSZdHJ6bmkgdcW8eXRrb3duaWN5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzMCIgbmFtZT0ibGJsX3ByZW5hbWUiPgorICAgIDx2YWx1ZT5wcmUtbmF6d2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMxIiBuYW1lPSJsYmxfbmFtZSI+CisgICAgPHZhbHVlPm5hendhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzMiIgbmFtZT0ibGJsX2VtYWlsIj4KKyAgICA8dmFsdWU+ZS1tYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzMyIgbmFtZT0ibG9nb3V0Q29uZmlybV90aXRsZSI+CisgICAgPHZhbHVlPnBvdHdpZXJkxbogd3lsb2dvd2FuaWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM0IiBuYW1lPSJsb2dvdXRDb25maXJtX3N1cmVfdG9fbG9nb3V0X3F1ZXN0aW9uIj4KKyAgICA8dmFsdWU+V3lsb2dvd2FuaWUuIEplc3RlxZsgcGV3aWVuPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzUiIG5hbWU9Im1haW4gbWVudSI+CisgICAgPHZhbHVlPkR6aWHFgmFuaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM2IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+UG9rw7NqIGRlbW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+Q3phcyBkZW1vbnN0cmFjamk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM4IiBuYW1lPSJtZWV0aW5nIFRpbWVyIj4KKyAgICA8dmFsdWU+WmVnYXIgc3BvdGthbmlhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzOSIgbmFtZT0ibWVldGluZyBUaW1lciI+CisgICAgPHZhbHVlPlRlbiBwb2vDs2ogamVzdCBwb2tvamVtIGRlbW8uIEFieSB3ecWCxIVjennEhyB0byBvc3RyemXFvGVuaWUgdXR3w7NyeiBwcnl3YXRueSBwb2vDs2ogc3BvdGthxYQsIGRsYSB3xYJhc25lZ28gdcW8eXRrdSwgYWxibyBwb3N0YXcgd8WCYXNueSBzZXJ3ZXIuIFpvc3Rhbmllc3ogd3lsb2dvd2FueSBhdXRvbWF0eWN6bmllIHphOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDAiIG5hbWU9Im1lZXRpbmcgcm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPk1vZGVyb3dhbnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQxIiBuYW1lPSJtb2RlcmF0ZWQgcm9vbSB3YWl0aW5nIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Qb2N6ZWthaiwgYcW8IG1vZGVyYXRvciB3ZWpkemllIGRvIHBva29qdS4gTW9kZXJhdG9yZW0gbW/FvGUgYnnEhyB3eWvFgmFkb3djYSwgYWRtaW5pc3RyYXRvciBsdWIgdHfDs3JjYSB0ZWdvIHBva29qdS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQyIiBuYW1lPSJlcnJvciBwb3B1cCI+CisgICAgPHZhbHVlPk9rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MyIgbmFtZT0id2luZG93IHNjcmVlbnNoYXJpbmciPgorICAgIDx2YWx1ZT5Qb2phd2lhIHNpxJkgdWRvc3TEmXBuaW9ueSBla3JhbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDQiIG5hbWU9IndpbmRvdyBzY3JlZW4gc2hhcmluZyI+CisgICAgPHZhbHVlPlBvamF3aWEgc2nEmSBub3d5IGVrcmFuIHVkb3N0xJlwbmlvbnkgcHJ6ZXo6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0NSIgbmFtZT0id2luZG93IHNjcmVlbiBzaGFyaW5nIj4KKyAgICA8dmFsdWU+Um96cG9jem5paiB1ZG9zdMSZcG5pYW5pZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDYiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RG9kYWogbm93ZSBzcG90a2FuaWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ3IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPlBva8OzaiBzcG90a2HFhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDgiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+U2FsYSB3eWvFgmFkb3dhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0OSIgbmFtZT0ibWFpbiBtZW51IG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Nb2RlcmFjamE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUwIiBuYW1lPSJtZW51IG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Nb2RlcnVqIHXFvHl0a293bmlrw7N3PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1MSIgbmFtZT0ibWVudSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+TW9kZXJ1aiBwb2tvamU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUyIiBuYW1lPSJtb2RlcmF0b3Igb3JnIj4KKyAgICA8dmFsdWU+TTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTMiIG5hbWU9ImNvbmZpcm0gbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkN6eSBjaGNlc3ogYWJ5IHXFvHl0a293bmlrIHpvc3RhxYIgbW9kZXJhdG9yZW0gdGVqIG9yZ2FuaXphY2ppPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTQiIG5hbWU9ImVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Qcm9zesSZIHdza2F6YcSHIG9yZ2FuaXphY2rEmSwgemFuaW0gc3Byw7NidWplc3ogcHJ6eXBpc2HEhyBkbyBuaWVqIHXFvHl0a293bmlrYSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU1IiBuYW1lPSJjaG9vc2UgdXNlciB3aW5kb3ciPgorICAgIDx2YWx1ZT5Pcmdhbml6YWNqYSAtIE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTYiIG5hbWU9Im1vZGVyYXRvciBvcmcgdXNlcnMiPgorICAgIDx2YWx1ZT5DenkgcnplY3p5d2nFm2NpZSBjaGNlc3ogdXN1bsSFxIcgdcW8eXRrb3duaWthIHogb3JnYW5pemFjamk/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1NyIgbmFtZT0ib3JnIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5UZW4gdcW8eXRrb3duaWsgamVzdCBtb2RlcmF0b3JlbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTgiIG5hbWU9Im9yZyBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+VGVuIHXFvHl0a293bmlrIG5pZSBqZXN0IG1vZGVyYXRvcmVtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1OSIgbmFtZT0iZXJyb3IgbWVzc2FnZSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+Q3p5IGNoY2VzeiBhYnkgdcW8eXRrb3duaWsgbmllIGJ5xYIgbW9kZXJhdG9yZW0gdGVqIG9yZ2FuaXphY2ppPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjAiIG5hbWU9Im1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Eb2Rhd2FqIGkga2FzdWogdcW8eXRrb3duaWvDs3cgaSBwb2tvamUgdyBzd29qZWogb3JnYW5pemFjamk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYxIiBuYW1lPSJkZWxldGUgY29uZmlybSBxdWVzdGlvbiI+CisgICAgPHZhbHVlPkN6eSByemVjenl3acWbY2llIGNoY2VzeiBza2Fzb3dhxIcgdGVuIHdwaXM/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MiIgbmFtZT0iZGVsZXRlIGNvbmZpcm0gcXVlc3Rpb24gdXNlciBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+Q3p5IHJ6ZWN6eXdpxZtjaWUgY2hjZXN6IHVzdW7EhcSHIHXFvHl0a293bmlrYSB6IG9yZ2FuaXphY2ppPyBVc3VuaWVzeiB0eWxrbyBwb3dpxIV6YW5pZSB1xbx5dGtvd25pa2EgeiB0xIUgb3JnYW5pemFjasSFLiBBYnkgcnplY3p5d2nFm2NpZSB1c3VuxIXEhyBzYW1lZ28gdcW8eXRrb3duaWthLCBtdXNpc3ogemFsb2dvd2HEhyBzacSZIGRvIHBhbmVsdSBhZG1pbmlzdHJhdG9yc2tpZWdvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjMiIG5hbWU9ImVycm9yIG1lc3NhZ2Ugc2VsZiBkZWxldGluZyI+CisgICAgPHZhbHVlPk5pZSBtb8W8ZXN6IHVzdW7EhcSHIHNhbWVnbyBzaWViaWUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NCIgbmFtZT0iZXJyb3IgbWVzc2FnZSBhdXRoIj4KKyAgICA8dmFsdWU+VGEgbWV0b2RhIHd5bWFnYSB1xbx5Y2lhIGtvbnRhIGFkbWluaXN0cmF0b3Jza2llZ28hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NSIgbmFtZT0iZXJyb3IgbWVzc2FnZSBTT0FQIj4KKyAgICA8dmFsdWU+TmllIG1hIHNlc2ppIHBvd2nEhXphbnltIHogdHltIElELjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjYiIG5hbWU9ImVycm9yIG1lc3NhZ2UgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPlRvIGplc3Qga29udG8gYWRtaW5pc3RyYXRvcmEgbHViIG1vZGVyYXRvcmEuIE1vxbxlc3ogZXRkeXRvd2HEhyB0byBrb250byB0eWxrbyBwb3ByemV6IHBhbmVsIGFkbWluaXN0cmFjeWpueS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY3IiBuYW1lPSJlbWFpbCB2ZXJpZmljYXRpb24iPgorICAgIDx2YWx1ZT5BYnkgZG9rb8WEY3p5xIcgcmVqZXN0cmFjasSZIHByb3N6xJkga2xpa27EhcSHIG5hIGxpbmssIGFsYm8gc2tvcGlvd2HEhyBVUkwgZG8gcGFza2EgYWRyZXN1IHcgcHJ6ZWdsxIVkYXJjZSBpbnRlcm5ldG93ZWouPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2OCIgbmFtZT0iZW1haWwgdmVyaWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+S2xpa25paiB0dSwgYWJ5IHBvdHdpZXJkemnEhyBlLW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY5IiBuYW1lPSJlcnJvck1lc3NhZ2VfVXNlckFjdGl2YXRpb25TZXJ2bGV0ICAgW0FjdGl2YXRlVXNlcl0iPgorICAgIDx2YWx1ZT5OaWUgem5hbGV6aW9ubyB1xbx5dGtvd25pa2EgZGxhIHRlZ28ga29kdS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjcwIiBuYW1lPSJlcnJvck1lc3NhZ2VfVXNlckFjdGl2YXRpb25TZXJ2bGV0ICAgW0FjdGl2YXRlVXNlcl0iPgorICAgIDx2YWx1ZT5UZW4gdcW8eXRrb3duaWsganXFvCBqZXN0IHpha3R5d293YW55ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzEiIG5hbWU9ImVycm9yTWVzc2FnZV9Vc2VyQWN0aXZhdGlvblNlcnZsZXQgICBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPlBvcHJhd25pZSBha3R5d293YcWCZShhKcWbIHN3b2plIGtvbnRvITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzIiIG5hbWU9ImVycm9yTWVzc2FnZV9Vc2VyQWN0aXZhdGlvblNlcnZsZXQgICBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPlphbG9ndWogc2nEmTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzMiIG5hbWU9ImxvZ2luRXJyb3JNZXNzYWdlID0gdXNlciB3YXMgbm90IGFjdGl2YXRlZCI+CisgICAgPHZhbHVlPlR3b2plIGtvbnRvIG5pZSB6b3N0YcWCbyBha3R5d293YW5lLiBOYWpwaWVydyBtdXNpc3oga2xpa27EhcSHIG5hIGxpbmsgdyBlLW1haWx1LCBrdMOzcnkgb3RyenltYcWCZcWbIHBvZGN6YXMgcmVqZXN0cmFjamkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3NCIgbmFtZT0icmVnaXN0ZXIgdmVyaWZpY2F0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Qb3ByYXduaWUgc2nEmSB6YXBpc2HFgmUoYSnFmy4gV3lzxYJhbGnFm215IENpIGUtbWFpbCB6IGtvZGVtIHBvdHdpZXJkemFqxIVjeW0uIFByb3N6xJkgc3ByYXdkxbogc3dvasSFIHNrcnp5bmvEmS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc1IiBuYW1lPSJwYXJ0aWNpcGFudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5aYWJpZXJ6IHByYXdhIG1vZGVyYXRvcmEgdGVtdSB1xbx5dGtvd25pa293aTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzYiIG5hbWU9InBhcnRpY2lwYW50cyBwYW5lbCI+CisgICAgPHZhbHVlPk5hZGFqIHByYXdhIG1vZGVyYXRvcmEgdGVtdSB1xbx5dGtvd25pa293aTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzciIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlXFvHl0a293bmlrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3OCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+RG9zdMSZcCBkbyB0YWJsaWN5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3OSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+TW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+TW9kZXJhY2phOiBQcm9zesSZIHd5YnJhxIcgdcW8eXRrb3duaWthIHogbGlzdHksIGFieSBuYWRhxIcgbXUgcHJhd2EgZG9zdMSZcHUgZG8gdGFibGljeSwgbW9kZXJhY2ppIGx1YiBwcnplc3nFgmFuaWEgd2lkZW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+VGVuIHXFvHl0a293bmlrIGplc3QganXFvCBtb2RlcmF0b3JlbSwgd2nEmWMgYXV0b21hdHljem5pZSBtYSBwcmF3YSBkbyByeXNvd2FuaWEgbmEgdGFibGljeS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgyIiBuYW1lPSJldmVudCB1c2VyIGxpc3QgZXJyb3IiPgorICAgIDx2YWx1ZT5UbyB0eSEgTmllIG1vxbxlc3ogb2RlYnJhxIcgcHJhdyBtb2RlcmF0b3JhIHNhbWVtdSBzb2JpZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgzIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5aZXp3w7NsIHXFvHl0a293bmlrb3dpIHByemVzecWCYcSHIGplZ28gZ8WCb3MgaSBvYnJheiB3aWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODQiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlVzdcWEIGfFgm9zIGkgd2lkZW8gdGVnbyB1xbx5dGtvd25pa2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg1IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5DaGNpYcWCKGEpYnltIG90cnp5bWHEhyBwcmF3YSBtb2RlcmF0b3JhIHRlZ28gcG9rb2p1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4NiIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+Q2hjaWHFgihhKWJ5bSBvdHJ6eW1hxIcgcHJhd28gZG8gcnlzb3dhbmlhIG5hIHRhYmxpY3k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg3IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5DY2lhxYIoYSlieW0gcHJ6ZXN5xYJhxIcgZ8WCb3MgaSBvYnJheiB3aWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODgiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkplc3RlxZsgbW9kZXJhdG9yZW0gdGVnbyBwb2tvanU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg5IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5NYXN6IHByYXdvIHJ5c293YcSHIG5hIHRhYmxpY3k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkwIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Nb8W8ZXN6IHRyYW5zbWl0b3dhxIcgZMW6d2nEmWsgaSBvYnJheiB3aWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTEiIG5hbWU9ImVycm9ydHlwZSI+CisgICAgPHZhbHVlPldpYWRvbW/Fm8SHIGRsYSBtb2RlcmF0b3JhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5MiIgbmFtZT0iYXBwbHkgZm9yIG1vZCBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VcW8eXRrb3duaWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkzIiBuYW1lPSJhcHBseSBmb3IgbW9kIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5jaGNpYcWCYnkgb3RyenltYcSHIHByYXdhIG1vZGVyYXRvcnNraWUuIFXFvHlqIGlrb25raSBzdGF0dXN1IHByenkgdcW8eXRrb3duaWt1IG5hIGxpxZtjaWUsIGFieSBkYcSHIGx1YiBvZGVicmHEhyBtdSBwcmF3byBtb2RlcmFjamkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5NCIgbmFtZT0iYXBwbHkgZm9yIHdoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5yeXNvd2HEhyBuYSB0YWJsaWN5LiBVxbx5aiBpa29ua2kgc3RhdHVzdSBwcnp5IHXFvHl0a293bmlrdSBuYSBsacWbY2llLCBhYnkgZGHEhyBsdWIgb2RlYnJhxIcgbXUgcHJhd28gZG8gcnlzb3dhbmlhIG5hIHRhYmxpY3kuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5NSIgbmFtZT0iNjk1Ij4KKyAgICA8dmFsdWU+Y2hjaWHFgmJ5IHRyYW5zbWl0b3dhxIcgc3fDs2ogZ8WCb3MgaSBvYnJheiB3aWRlby4gVcW8eWogaWtvbmtpIHN0YXR1c3UgcHJ6eSB1xbx5dGtvd25pa3UgbmEgbGnFm2NpZSwgYWJ5IGRhxIcgbHViIG9kZWJyYcSHIG11IHByYXdvIGRvIHRyYW5zbWl0b3dhbmlhIGfFgm9zdSBpIG9icmF6dSB3aWRlby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk2IiBuYW1lPSJtb2RlcmF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5NdXNpc3ogcG9jemVrYcSHLCBhxbwgbW9kZXJhdG9yIHdlamR6aWUgZG8gcG9rb2p1LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTciIG5hbWU9ImNhbGVuZGFyIGJ1dHRvbiI+CisgICAgPHZhbHVlPkFudWx1ajwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTgiIG5hbWU9ImNhbGVuZGFyIGJ1dHRvbiI+CisgICAgPHZhbHVlPlphcGlzejwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTkiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPkR6aWXFhDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDAiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPk1pZXNpxIVjPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwMSIgbmFtZT0iY2FsZW5kYXIgY29tcG9uZW50Ij4KKyAgICA8dmFsdWU+Um9rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwMiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlByemXFm2xpaiBwbGlrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwMyIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPk5vd3kgZmlsZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwNCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPk9kxZt3aWXFvDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDUiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7Fmm1pZXRuaWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA2IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+TW9qZSBwbGlraTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDciIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5QbGlraSBwdWJsaWN6bmUgKGRsYSBwb2tvanUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwOCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPk5vd3kgcGxpazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDkiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Ob3d5IGZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTAiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Ta2FzdWogZm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMSIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlptaWXFhCBuYXp3xJk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzEyIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+Tm93eSBmb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzEzIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+SmVzdGXFmyBwZXdpZW4sIMW8ZSBjaGNlc3ogdG8gc2thc293YcSHPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTQiIG5hbWU9InVzZXIgYWRtaW4iPgorICAgIDx2YWx1ZT5TenVrYWo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE1IiBuYW1lPSJ1c2VyIGFkbWluIj4KKyAgICA8dmFsdWU+U3p1a2FqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxNiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPk90d8OzcnogZG9rdW1lbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE3IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+UG9rYXJ6IHBsaWtpICh3aWRvayBkcnpld2EpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxOCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlphbWtuaWogZG9rdW1lbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE5IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+U2thc3VqIHBsaWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIwIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+VGVzdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIxIiBuYW1lPSJwcm9wZXJ0eSBwYW5lbCI+CisgICAgPHZhbHVlPkRvY3VtZW50IFByb3BlcnRpZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIyIiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5TdGFydCBDbGllbnQgKGV4dGVybmFsKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjMiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPlN0YXJ0IENsaWVudCAoSFRUUCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI0IiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5BIHVzZXIgd2FudCB0byBzaGFyZSBoaXMgc2NyZWVuLiBEbyB5b3Ugd2FudCB0byBzZWUgaXQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNSIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+WW91IGFyZSBjdXJyZW50bHkgc2hhcmluZyB5b3VyIERlc2t0b3AuIEZvciBzdG9wcGluZyB0aGUgU2hhcmluZyBTZXNzaW9uIHBsZWFzZSBoaXQgdGhlIFN0b3AgYnV0dG9uIGluIHRoZSBTaGFyaW5nIENsaWVudC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI2IiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5TaGFyaW5nIFNlc3Npb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI3IiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGFscmVhZHkgc2hhcmluZyB5b3VyIGRlc2t0b3AhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyOCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5EZXNrdG9wIFZpZXdlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjkiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+RXhpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzAiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+RGVza3RvcCBTaGFyZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMxIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkNsaWNrIFN0YXJ0IHRvIHB1Ymxpc2ggeW91ciBzY3JlZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMyIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlN0YXJ0IFNoYXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMzIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlN0b3AgU2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzQiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U2VsZWN0IHlvdXIgc2NyZWVuIGFyZWE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5DaGFuZ2Ugd2lkdGg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM2IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlRoZSBTaGFyZXIgaGFzIGZpbmlzaGVkIHRoaXMgc2Vzc2lvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM3IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkNoYW5nZSBoZWlnaHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM4IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlgtT2Zmc2V0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczOSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5ZLU9mZnNldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDAiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+V2lkdGg6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0MSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5IZWlnaHQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0MiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5Db25uZWN0aW9uIHdhcyBjbG9zZWQgYnkgU2VydmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0MyIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ0IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPlN0YXJ0IEV4dGVybmFsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NSIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5JZiB5b3UgY2xvc2UgdGhpcyBzZXNzaW9uIGNvbXBsZXRlbHkgeW91IGFyZSBub3QgYWJsZSB0byByZXN0YXJ0IHRoZSB2aWV3ZXIgZm9yIHRoaXMgc2Vzc2lvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ2IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPkNvbmZpcm0gQ2xvc2luZyBWaWV3ZXIgU2Vzc2lvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDciIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+U2hhcmUgU2NyZWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0OCIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5SZWNvcmQgU2Vzc2lvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDkiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5Dby1Ccm93c2luZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTAiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5Pb29wcywgLi4uIEZpcmVmb3ggb24gV2luZG93cyBkb2VzIG5vdCBzaG93IGNsZWFyIENvLUJyb3dzaW5nLiBQbGVhc2UgdXNlIGFub3RoZXIgQnJvd3NlciBmb3IgdXNpbmcgdGhlIENvLUJyb3dzaW5nIGZlYXR1cmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MSIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPlByZXZpb3VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MiIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPk5leHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUzIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+UmVsb2FkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1NCIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPkhvbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU1IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+TG9hZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTYiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5BZGQgdGhpcyB3ZWJzaXRlIGFzIERlZmF1bHQgd2Vic2l0ZSB0byB5b3VyIFByb2ZpbGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1NyIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlRlc3QgU2V0dXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU4IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+Q2hlY2sgeW91IE1pY3JvcGhvbmUgYW5kIENhbWVyYSBzZXR1cCBiZWZvcmUgeW91IGVudGVyIGEgcm9vbSBieSByZWNvcmRpbmcgc29tZSBzZWNvbmRzLiBZb3UgY2FuIHRoZW4gcmVwbGF5IHlvdXIgcmVjb3JkaW5nIHRvIGNoZWNrIHlvdXIgdm9pY2UgYW5kIHBpY3R1cmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1OSIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPkRvbid0IHNob3cgdGhpcyB0ZXN0IGFueW1vcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYwIiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MSIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlN0YXJ0IENvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYyIiBuYW1lPSJlZGl0IHZpZGVvIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+RG8gbm90IGFzayBhZ2FpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjMiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5SRUM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY0IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+UExBWTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjUiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5Zb3UgbWF5IHByb2NlZWQgd2l0aG91dCB0ZXN0aW5nIGlmIHlvdSBkbyBub3QgcGxhbiB0byBwdWJsaXNoIHlvdXIgdm9pY2Ugb3IgcGljdHVyZS4gUGFydGljaXBhbnRzIHdpdGhvdXQgQXVkaW8gb3IgVmlkZW8gY2FuIHN0aWxsIHVzZSB0aGUgV2hpdGVib2FyZCwgc2hhcmUgdGhlaXIgRGVza3RvcCBvciB3cml0ZSBDaGF0IG1lc3NhZ2VzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjYiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5TVE9QPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NyIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPkxldmVsLU1ldGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2OCIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPlByZXNzIFN0YXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2OSIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPlN0YXJ0IENvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzcwIiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+U3RhcnQgRXZlbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzcxIiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+Q2hvb3NlIFJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzcyIiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+Q2hlY2sgU2V0dXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzczIiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+U3RhcnQgQ29uZmVyZW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzQiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5Ib3cgdG8gY29uZmVyZW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzUiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5TdGFydCBSZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc2IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+RG8gbm90IHNob3cgQXVkaW8gLyBWaWRlbyBUZXN0IChSZWNvcmRpbmcpIGJlZm9yZSBlbnRlcmluZyBhIENvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc3IiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+UHVibGljIFJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3OCIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPlB1YmxpYyBSb29tcyBhcmUgYWNjZXNzaWJsZSBmb3IgYWxsIFVzZXJzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzkiIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT5Qcml2YXRlIFJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MCIgbmFtZT0iUHJpdmF0ZSBSb29tcyI+CisgICAgPHZhbHVlPlByaXZhdGUgUm9vbXMgYXJlIG9ubHkgYWNjZXNzaWJsZSBmb3IgdXNlcnMgb2YgdGhlIHNhbWUgb3JnYW5pemF0aW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODEiIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT5NeSBSb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODIiIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT5Sb29tcyBpbiB0aGlzIHNlY3Rpb24gYXJlIGNyZWF0ZWQgZm9yIHBlcnNvbmFsIHVzYWdlLiBUaGVyZSBhcmUgc29tZSBzdGFuZGFyZCByb29tcyBwbHVzIHRoZSBvbmVzIHRoYXQgYXJlIGNyZWF0ZWQgdGhyb3VnaCB0aGUgY2FsZW5kYXIgYW5kIGhhdmUgYSBzdGFydCBhbmQgYW4gZW5kIGRhdGUuIFRoZSByb29tcyBjcmVhdGVkIHZpYSB0aGUgY2FsZW5kYXIgYXJlIG9ubHkgbGlzdGVkIGluIHRoaXMgc2VjdGlvbiBhcyBsb25nIGFzIHRoZXkgYXJlIHZhbGlkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODMiIG5hbWU9InJlc3RyaWN0ZWQgcm9vbSI+CisgICAgPHZhbHVlPllvdSBoYXZlIHRvIGJlIG1vZGVyYXRvciB0byBkbyB0aGlzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODQiIG5hbWU9Im1lbnUgb3B0aW9uIj4KKyAgICA8dmFsdWU+QXBwbHkgZm9yIG1vZGVyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg1IiBuYW1lPSJtZW51IG9wdGlvbiI+CisgICAgPHZhbHVlPkFwcGx5IGZvciB3aGl0ZWJvYXJkIGFjY2VzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODYiIG5hbWU9Im1lbnUgb3B0aW9uIj4KKyAgICA8dmFsdWU+QXBwbHkgZm9yIGNhbWVyYS9taWNyb3Bob25lIGFjY2VzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODciIG5hbWU9ImVycm9yIG1lc3NhZ2Ugc29hcCBzZWN1cmUgbG9naW4iPgorICAgIDx2YWx1ZT5UaGlzIFNlc3Npb24gSGFzaCB3YXMgYWxyZWFkeSB1c2VkLiBZb3UgY2Fubm90IHVzZSBpdCB0d2ljZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg4IiBuYW1lPSJkYXNoYm9hcmQgYnV0dG9uIj4KKyAgICA8dmFsdWU+U1RBUlQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg5IiBuYW1lPSJleGl0IGNvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT5FWElUPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5MCIgbmFtZT0iY29uZmVyZW5jZSB2aWV3Ij4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGV4aXQ/IFlvdSBtaWdodCBzaG91bGQgY2xlYXIgdXBsb2FkZWQgZG9jdW1lbnRzLCB3aGl0ZWJvYXJkIGFuZCB0aGUgY2hhdCBoaXN0b3J5LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTEiIG5hbWU9ImNvbmZlcmVuY2UgdmlldyI+CisgICAgPHZhbHVlPkV4aXQgY29uZmVyZW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTIiIG5hbWU9Im1haW4gbWVudSI+CisgICAgPHZhbHVlPlJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5MyIgbmFtZT0ibWFpbiBtZW51Ij4KKyAgICA8dmFsdWU+Q2hvb3NlIGEgcm9vbSBmb3IgYSBtZWV0aW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5NCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBhbiB1bnNhdmVkIEV2ZW50IGluIHRoZSBDYWxlbmRhci4gUGxlYXNlIGVpdGhlciBzYXZlIGl0IG9yIHJlbW92ZSBpdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk1IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPlBsZWFzZSBhZGQgYXQgbGVhc3Qgb25lIGF0dGVuZGVlIGZvciB5b3VyIG1lZXRpbmchPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5NiIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRXZlbnQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5NyIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5XYXJuaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5OCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5BZGQgRXZlbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk5IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkRheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDAiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+V2VlazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDEiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+TW9udGg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAyIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkRlc2NyaXB0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMyIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5BdHRlbmRlZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA0IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUsIHlvdXIgV2ViIENvbmZlcmVuY2luZyBQbGF0Zm9ybS4gRWl0aGVyIGZvbGxvdyB0aGUgSW5zdHJ1Y3Rpb25zLCBwcmVzcyB0aGUgc3RhcnQgYnV0dG9uIHRvIHN0YXJ0IHRvIGNvbmZlcmVuY2UgaW1tZWRpYXRlbGx5IG9yIHlvdSBnb3RvIHRoZSBDYWxlbmRhciBhbmQgc2V0IHVwIGEgQ29uZmVyZW5jZSBmb3IgdGhlIGZ1dHVyZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA1IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5QbGFuIGEgTWVldGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDYiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5UbyBzZXQgdXAgYSBjb25mZXJlbmNlIHlvdSBjYW4gYWRkIGEgbmV3IEV2ZW50IGluIHRoZSBDYWxlbmRhci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA3IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+TmVlZCBoZWxwPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDgiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5SZXN0cmljdGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwOSIgbmFtZT0ibHpjYWxlbmRlciI+CisgICAgPHZhbHVlPlNlYXJjaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTAiIG5hbWU9Imx6Y2FsZW5kZXIiPgorICAgIDx2YWx1ZT5BZGQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODExIiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgbm8gVXNlciBzZWxlY3RlZC4gUGxlYXNlIHNlbGVjdCBhbiBpdGVtIGZyb20gdGhlIGxpc3QgZmlyc3QgYW5kIHRoZW4gaGl0IGFkZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEyIiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QWRkIEF0dGVuZGVlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMyIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlNhdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE0IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RGVsZXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxNSIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPkV2ZW50IERldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE2IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RGVmYXVsdCBNb2RlcmF0b3JzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxNyIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPlN1cGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxOCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPklEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxOSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIwIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RS1NYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyMSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkFkZCBuZXcgZGVmYXVsdCBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIyIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+SXMgU3VwZXIgTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyMyIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPklmIHRoZSBSb29tIGlzIG1vZGVyYXRlZCwgVXNlciB3aXRoIExldmVsIE1vZGVyYXRvciBvciBBZG1pbmlzdHJhdG9yIGFyZSBhdXRvbWF0aWNhbGx5IE1vZGVyYXRvciBpZiB0aGV5IGVudGVyIHRoZSBSb29tLiBJZiB5b3UgZG9uJ3Qgd2FudCB0byBzcGVjaWZ5IHRoYXQgYW5kIG9ubHkgd2FudCBhIGNlcnRhaW4gVXNlciB0byBiZWNvbWUgTW9kZXJhdG9yIHVzZSB0aGUgRGVmYXVsdCBNb2RlcmF0b3Igb3B0aW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjQiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5BIFN1cGVyIE1vZGVyYXRvciBpcyBhbHdheXMgYSBNb2RlcmF0b3Igd2hlbiBoZSBlbnRlcnMgYSBSb29tLCBhbmQgbm9ib2R5IGNhbiByZW1vdmUgdGhlIE1vZGVyYXRpb24gRmxhZyBmcm9tIGhpbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjUiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5BcHBseSBTdXBlci1Nb2RlcmF0aW9uIHRvIFVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI2IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+UmVtb3ZlIFN1cGVyIE1vZGVyYXRpb24gZnJvbSBVc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNyIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI4IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+SWYgeW91IGFkZCBhbiBPcmdhbml6YXRpb24gdG8gdGhlIHJvb20gb25seSB1c2VycyBvZiB0aGF0IE9yZ2FuaXphdGlvbiBoYXZlIGFjY2VzcyB0byBpdCAoVGhpcyBpcyBvbmx5IHZhbGlkIGlmIHRoZSBpc1B1YmxpYyBmbGFnIGlzIHNldCB0byBmYWxzZSEpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyOSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPk1vZGVyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODMwIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+TGltaXRhdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODMxIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+T3JnYW5pemF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzMiIgbmFtZT0iY29uZmlybSBhY3Rpb24iPgorICAgIDx2YWx1ZT5BcmUgeW91IHN1cmU/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzMyIgbmFtZT0iY29uZmlybSBkZWxldGUiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgSXRlbT8gWW91IGhhdmUgdG8gcHJlc3MgdGhlIHNhdmUgYnV0dG9uIHRvIHN0b3JlIHRoZSBjaGFuZ2VzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzQiIG5hbWU9InVzZXIgY2hvb3NlIGVycm9yIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgbm8gVXNlciBzZWxlY3RlZC4gUGxlYXNlIHNlbGVjdCBmaXJzdCBiZWZvcmUgeW91IGFkZCBpdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM1IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+QWRkIG5ldyBEZWZhdWx0IE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzYiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EbyB5b3Ugd2FudCB0byBhZGQgdGhlIFN1cGVyIE1vZGVyYXRpb24gRmxhZyBmb3IgdGhpcyBVc2VyPyBBIFN1cGVyIE1vZGVyYXRvciBpcyBub3Qgb25seSBNb2RlcmF0b3Igb2YgYSBSb29tLCBidXQgYWxzbyBubyBvdGhlciBNb2RlcmF0b3IgY2FuIHJlbW92ZSB0aGUgTW9kZXJhdGlvbiBGbGFnIGZvciB0aGlzIFVzZXIuIFlvdSBuZWVkIHRvIHNhdmUgdGhlIFJvb20gT2JqZWN0IHRvIHNhdmUgdGhlc2Ugc2V0dGluZ3MhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNyIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkRvIHlvdSB3YW50IHRvIHJlbW92ZSB0aGUgU3VwZXIgTW9kZXJhdGlvbiBGbGFnIGZvciB0aGlzIFVzZXI/IFlvdSBuZWVkIHRvIHNhdmUgdGhlIFJvb20gT2JqZWN0IHRvIHNhdmUgdGhlc2Ugc2V0dGluZ3MhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzOCIgbmFtZT0ic3VwZXIgbW9kZXJhdG9yIj4KKyAgICA8dmFsdWU+VGhpcyBVc2VyIGlzIGEgU3VwZXItTW9kZXJhdG9yLiBZb3UgY2Fubm90IHJlbW92ZSB0aGUgTW9kZXJhdGlvbiBmbGFnIGZyb20gYSBTdXBlci1Nb2RlcmF0b3IhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzOSIgbmFtZT0iY29uZmlybSBkZWxldGUiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgRmlsZS9Gb2xkZXI/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0MCIgbmFtZT0iY29uZmlybSBkZWxldGUiPgorICAgIDx2YWx1ZT5EZWxldGUgRmlsZS9Gb2xkZXI/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0MSIgbmFtZT0ic2FsdXRhdGlvbiI+CisgICAgPHZhbHVlPk1ycy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQyIiBuYW1lPSJzYWx1dGF0aW9uIj4KKyAgICA8dmFsdWU+RHIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0MyIgbmFtZT0icHJvcGVydHkgcGFuZWwgd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPlByb3BlcnRpZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ0IiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+U2hvdyBtb3VzZSBwb3NpdGlvbiB0byB2aWV3ZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NSIgbmFtZT0icHVibGlzaCBvcHRpb24iPgorICAgIDx2YWx1ZT5TaGFyZSBBdWRpbyB3aXRoIFNJUCBBcHBsZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ2IiBuYW1lPSJwdWJsaXNoIG9wdGlvbiI+CisgICAgPHZhbHVlPlNoYXJlIEF1ZGlvIHdpdGggU0lQIGFuZCBWaWRlbyB3aXRoIEZsYXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NyIgbmFtZT0iZG9jdW1lbnQgcGFuZWwiPgorICAgIDx2YWx1ZT5GdWxsLUZpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDgiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlZpZXcgU2NyZWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0OSIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+VGhlIHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUwIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT53YW50cyB0byBzaGFyZSBpdHMgc2NyZWVuLiBEbyB5b3Ugd2FudCB0byBzZWUgaXQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MSIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+Q2xvc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUyIiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+Wm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTMiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5UaGUgU2Vzc2lvbiB3YXMgY2xvc2VkIGJ5IHRoZSBzaGFyaW5nIFVzZXIhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1NCIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPlBhdXNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1NSIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPk5ldyBTY3JlZW4gU2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTYiIG5hbWU9InByZXNlbnRlciBtaW5pIGljb24iPgorICAgIDx2YWx1ZT5NaW5pbWl6ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTciIG5hbWU9InByZXNlbnRlciBtaW5pIGljb24iPgorICAgIDx2YWx1ZT5NYXhpbWl6ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTgiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1OSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UmVjb3JkaW5nIFRpbWVsaW5lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TXkgUmVjb3JkaW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjEiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlB1YmxpYyBSZWNvcmRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+SW5mbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjMiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY0IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5MZW5ndGg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY1IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5EYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+Qnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY3IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5QTEFZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2OCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TWFpbiAtIFZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2OSIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+UmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3MCIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+WW91IG1heSByZWNvcmQgYW5kIHNoYXJlIHlvdXIgc2NyZWVuIGF0IHRoZSBzYW1lIHRpbWUuIFRvIGVuYWJsZSBvdGhlcnMgdG8gc2VlIHlvdXIgc2NyZWVuIGp1c3QgaGl0IHRoZSBzdGFydCBidXR0b24gb24gdGhlIHRvcC4gVG8gb25seSByZWNvcmQgdGhlIFNlc3Npb24gaXQgaXMgc3VmZmljaWVudCB0byBjbGljayBzdGFydCByZWNvcmRpbmcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3MSIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+U3RhcnQgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3MiIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+U3RvcCBSZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODczIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Eb3dubG9hZCB0aGUgRkxWLUZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc0IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3NSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UGxheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzYiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlN0b3A8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc3IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Vc2VyIGhhcyBtaWNyb3Bob25lIG9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3OCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdG9wIFNoYXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc5IiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPkFsbG93IFVzZXIgUXVlc3Rpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MCIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5UdXJuIHRoaXMgb2ZmIHRvIHByZXZlbnQgdGhhdCBhbnkgdXNlciBpcyBkaXN0dXJiaW5nIHlvdSBpbiB0aGlzIHJvb20uIEVmZmVjdCBpcyB0aGF0IHRoZSBCdXR0b24gdG8gYXNrIGZvciBNb2RlcmF0aW9uICgiSSBoYXZlIGEgcXVlc3Rpb24iKSBpcyBub3QgdmlzaWJsZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgxIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPlJpZ2h0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODIiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkRvd25sb2FkIGFzIEFWSTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODMiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkZMVjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODQiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkFWSTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODUiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlJhdyBTY3JlZW52aWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODYiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkF1ZGlvIG9ubHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg3IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5UaGUgaGF2ZSBiZWVuIGVycm9ycyB3aGlsZSBwcm9jZXNzaW5nIHRoZSBSZWNvcmRpbmcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4OCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+VGhlIFJlY29yZGluZyBpcyBub3QgeWV0IHJlYWR5IGZvciB3YXRjaGluZy4gUGxlYXNlIHJldHJ5IGluIGEgY291cGxlIG9mIG1pbnV0ZXMgYWdhaW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4OSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TG9nOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTAiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlJlY29yZGVyIE1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkxIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5PazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTIiIG5hbWU9InNpcCBhcHBsZXQiPgorICAgIDx2YWx1ZT5TSVAgQXBwbGV0IGlzIG5vdCBSZWFkeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTMiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TSVAtQWNjb3VudCBTZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTQiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TSVAgc2V0dGluZ3MgZm9yIGVhY2ggdXNlci4gWW91IGNhbiB0dXJuIG9uIG9yIG9mZiBTSVAgdmlhIHRoZSBBZG1pbmlzdHJhdGlvbiAmZ3Q7IENvbmZpZ3VyYXRpb24gKEtleTogZW5hYmxlX3NpcCkuIFRoZSBTSVAgZGF0YSBmb3IgZWFjaCB1c2VyIHNob3VsZCBiZSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkuIFlvdSBjYW4gcmUtY3JlYXRlIHRoZSBkYXRhIGJ5IGNoZWNraW5nICJSZS1nZW5lcmF0ZSBTSVAgRGF0YSI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk1IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+U0lQLVVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk2IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+U2lwLVBhc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk3IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+U2lwLUF1dGgtSWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk4IiBuYW1lPSJzaXAgc3RhdHVzIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgTG9naW4gdG8gdGhlIFNJUCBHYXRld2F5IGhhcyBmYWlsZWQuIFlvdSBzaG91bGQgY2hlY2sgdGhlIGF1dGhlbnRpZmljYXRpb24gZGF0YSBvZiB5b3VyIFNJUC1Qcm92aWRlciBhbmQgdGhlIFNJUC1BY2NvdW50IERhdGEgZm9yIGVhY2ggVXNlci4gQXMgQWRtaW5pc3RyYXRvciB5b3UgYXJlIHN0aWxsIGFibGUgdG8gbG9naW4gYW5kIGNoZWNrIHRoZSBDb25maWd1cmF0aW9uLiBBcyBVc2VyIG9yIE1vZGVyYXRvciB5b3Ugd2lsbCBiZSBibG9ja2VkIGZyb20gYW55IGludGVyYWN0aW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTkiIG5hbWU9InNpcCBzdGF0dXMgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSBMb2dpbiB0byB0aGUgU0lQIEdhdGV3YXkgaGFzIGZhaWxlZC4gQ29udGFjdCB5b3VyIFNlcnZpY2UgVGVhbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAwIiBuYW1lPSJzaXAgc3RhdHVzIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Mb2dnaW5nIGluIHRvIFNJUC1HYXRld2F5IC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDEiIG5hbWU9InNpcCBzdGF0dXMgbWVzc2FnZSI+CisgICAgPHZhbHVlPkxvZ2dpbmcgaW4gdG8gU0lQLUdhdGV3YXkgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwMiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+U2hvdyBMb2c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAzIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Mb2cgbWVzc2FnZXMgZnJvbSBwb3N0IHJlY29yZGVyIHByb2Nlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA0IiBuYW1lPSJzaXAgbG9naW4iPgorICAgIDx2YWx1ZT5TSVAtQXBwbGV0IE1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA1IiBuYW1lPSJzaXAgbG9naW4iPgorICAgIDx2YWx1ZT5UaGUgU0lQLUFwcGxldCBpcyBub3QgcmVhZHkuIEFjY2VwdCB0aGUgQXBwbGV0IHBsZWFzZSBhbmQgY2xpY2sgb2shPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwNiIgbmFtZT0ibW9kZXJhdG9yIHBvcCB1cCI+CisgICAgPHZhbHVlPkdldCBNb2RlcmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwNyIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlNhdmUgQXBwb2ludG1lbnQgQ2hhbmdlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDgiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5UaGUgYXBwb2ludGVtZW50IGhhcyBiZWVuIGNoYW5nZWQuIERvIHlvdSB3YW50IHRvIHNhdmUgdGhvc2UgY2hhbmdlcz8gJmx0O2JyLyZndDsmbHQ7YnIvJmd0O0FsbCBhdHRlbmRlZXMgb2YgdGhlIGFwcG9pbnRtZW50IHdpbGwgcmVjZWl2ZSBhIEVNYWlsIHdpdGggdGhlIHVwZGF0ZWQgZGF0ZSBhbmQgdGltZSAoZGVwZW5kaW5nIG9uIHRoZSBub3RpZmljYXRpb24gdHlwZSBvZiB0aGlzIGFwcG9pbnRtZW50KS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA5IiBuYW1lPSJmbHYgcmVjb3JkZXIgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRvIGFjY2VzcyBvdGhlciByZWNvcmRpbmdzIHlvdSBoYXZlIHRvIGxvZ2luIHRoZSAkQVBQX05BTUUgQXBwbGljYXRpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMCIgbmFtZT0iaW50ZXJ2aWV3IHZpZGVvIHBvZCI+CisgICAgPHZhbHVlPkNob29zZSB0aGUgVXNlciBmb3IgdGhpcyBWaWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTEiIG5hbWU9ImludGVydmlldyB2aWRlbyBjaG9vc2UgdXNlciI+CisgICAgPHZhbHVlPkF2YWlsYWJsZSBVc2VycyBmb3IgdGhpcyBQb2Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTEyIiBuYW1lPSJpbnRlcnZpZXcgaW5mbyI+CisgICAgPHZhbHVlPllvdSBhcmUgYSBNb2RlcmF0b3IgaW4gdGhpcyBJbnRlcnZpZXcuIFlvdSBjYW4gZGVjaWRlIHdobyBpcyBzcGVha2luZyBpbiB0aGlzIGludGVydmlldyBhbmQgeW91IGNhbiBzdGFydCAvIHN0b3AgdGhlIHJlY29yZGluZyBvZiB0aGUgU2Vzc2lvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTEzIiBuYW1lPSJpbnRlcnZpZXcgYnV0dG9uIHJlY29yZGluZyI+CisgICAgPHZhbHVlPlN0YXJ0IFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTQiIG5hbWU9ImludGVydmlldyBidXR0b24gcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+U3RvcCBSZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE1IiBuYW1lPSJpbnRlcnZpZXcgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSByZWNvcmRpbmcgb2YgdGhlIEludGVydmlldyBpcyBhbHJlYWR5IHN0YXJ0ZWQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxNiIgbmFtZT0iaW50ZXJ2aWV3IGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgcmVjb3JkaW5nIGlzIGFscmVhZHkgc3RvcHBlZCBvciBub3QgYmVlbiBzdGFydGVkIHlldC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE3IiBuYW1lPSJpbnRlcnZpZXcgcmVjb3JkaW5nIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgcmVjb3JkaW5nIGZvciB0aGlzIGludGVydmlldyBpcyBhbHJlYWR5IHN0YXJ0ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxOCIgbmFtZT0iaW50ZXJ2aWV3IGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE5IiBuYW1lPSJpbnRlcnZpZXcgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSBwb3N0LXByb2Nlc3Npbmcgb2YgYW4gaW50ZXJ2aWV3IHRha2VzIDUgbWludXRlcyBwZXIgMSBtaW51dGUgaW50ZXJ2aWV3LiBUaGUgY3VycmVudCBwcm9ncmVzcyBvZiB0aGUgaW50ZXJ2aWV3IHBvc3QtcHJvY2Vzc2luZyB0cmFuc2NvZGluZyBpczo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIwIiBuYW1lPSJzaXAgY3JlYXRpb24iPgorICAgIDx2YWx1ZT5Zb3UgaGF2ZSB0byBlbnRlciB5b3VyIHBhc3N3b3JkIGFnYWluIHRvIGF1dG8gY3JlYXRlIHRoZSBTSVAgRGF0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjEiIG5hbWU9InNpcCBjcmVhdGlvbiI+CisgICAgPHZhbHVlPlJlLWdlbmVyYXRlIFNJUCBEYXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyMiIgbmFtZT0iZmlsZWV4cGxvcmVyIj4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBtb3ZlIHRoaXMgZmlsZSBvciBmb2xkZXIgaW50byBpdHMgb3duIHN1YiBmb2xkZXIhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyMyIgbmFtZT0iZmlsZSBleHBsb3JlciAiPgorICAgIDx2YWx1ZT5Ib21lIGRyaXZlIHNpemU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI0IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+UHVibGljIGRyaXZlIHNpemU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI1IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+TGljZW5zZSBTZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjYiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5Zb3UgY2FuIGVpdGhlciBiaW5kIHRoZSB1c2VyIHRvIGEgZXhwaXJlIERhdGUgb3IgdG8gYSBtYXhpbXVtIG51bWJlciBvZiBtaW51dGVzIHdoZW4geW91IGVuYWJsZSBsaWNlbnNpbmcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNyIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPkNoZWNrIGxpY2Vuc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI4IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+RmxhdHJhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI5IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+RXhwaXJlIGRhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMwIiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+U2Vjb25kcyBsZWZ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMSIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPlRvdGFsIHRpbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMyIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3VyIExpY2Vuc2UgaGFzIGV4cGlyZWQuIFlvdSBuZWVkIHRvIGJ1eSBuZXcgbWludXRlcyAoUGF5LXBlci1taW51dGUpIG9yIGEgdm9sdW1lIGZsYXRyYXRlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzMiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkNsaWNrIGFuZCBidXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM0IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5UaW1lIExlZnQgb24geW91ciBhY2NvdW50OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzUiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlVzZXIgTGljZW5zZSBJbmZvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzNiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+SW5mbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzciIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkNsb3NlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzOCIgbmFtZT0ibGljZW5zZS1pbmZvIj4KKyAgICA8dmFsdWU+WW91ciBsaWNlbnNlIGhhcyBleHBpcmVkLiBZb3UgbmVlZCBlaXRoZXIgdG8gYnV5IGEgbWludXRlIHBhY2thZ2UgKFBheS1wZXItbWludXRlKSBvciBhIHZvbHVtZSBmbGF0cmF0ZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM5IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5MaWNlbnNlIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91IGNhbiBlaXRoZXIgYnV5IG1pbnV0ZXMgdG8gbWFrZSBXZWItQ29uZmVyZW5jaW5nIChQYXktcGVyLW1pbnV0ZSkuJmx0O2JyLyZndDsmbHQ7YnIvJmd0OyBPciB5b3UgYnV5IGEgdm9sdW1lIGZsYXRyYXRlIGFib3V0IDMtMTIgbW9udGhzLiZsdDtici8mZ3Q7Jmx0O2JyLyZndDtTZW5kaW5nIGludml0YXRpb25zIChkaXJlY3QgbGlua3MgaW50byBDb25mZXJlbmNlIFJvb21zKSBvciBjcmVhdGluZyBjb25mZXJlbmNlIFJvb21zIHZpYSB0aGUgQ2FsZW5kYXIgd2l0aCBleHRlcm5hbCBVc2VycyBpcyBvbmx5IGFsbG93ZWQgd2l0aCBhIHZvbHVtZSBmbGF0cmF0ZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQxIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5CdXkgNjAgTWludXRlcyA5LDk5IEVVUk8gKDE2IENlbnQgcGVyIE1pbnV0ZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQyIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5CdXkgNSBob3VycyAxOSw5OSBFVVJPICg2IENlbnQgcGVyIG1pbnV0ZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQzIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5CdXkgMyBtb250aCBmb3IgMjksOTkgRVVSTyAoOSw5OSBFdXJvIHBlciBNb250aCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ0IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5CdXkgNiBtb250aCBmb3IgMzksOTkgRVVSTyAoNiw2NiBFdXJvIHBlciBtb250aCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ1IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5QYXktcGVyLW1pbnV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDYiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlZvbHVtZSBmbGF0cmF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDciIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdSBoYXZlIHVubGltaXRlZCBMaWNlbnNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0OCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91ciBsaWNlbnNlIHdpbGwgZXhwaXJlIGF0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDkiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdSBib3VnaHQgUGF5LXBlci1taW51dGUuIFlvdSBzdGlsbCBoYXZlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTAiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSBuZXcgY3JlZGl0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTEiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPldhbnQgeW91ciBvd24gU2VydmVyPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTIiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdSB3b3VsZCBsaWtlIHRvIGhhdmUgJEFQUF9OQU1FIGluc3RhbGxlZCBvbiB5b3VyIFNlcnZlciBvciBpbnRlZ3JhdGVkIGludG8geW91ciBNb29kbGUsIFN1Z2FyQ1JNLCBXZWJzaXRlIG9yIEludHJhbmV0PyBQcml6aW5ncyBzdGFydCBhdCA1MDAgRXVybyBwZXIgSW5zdGFsbGF0aW9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTMiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPk9yIHNlbmQgdXMgYSBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1NCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QW5zd2VyIHRvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTUiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPk1lc3NhZ2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1NiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+U2VuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTciIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkNsaWNrIGhlcmUgdG8gZ2V0IGNvbnRhY3QgSW5mbyBhbmQgUHJpemluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU4IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DcmVkaXQgQ2FyZCBEZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1OSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Rmlyc3RuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2MCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+TGFzdG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYxIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DcmVkaXQgQ2FyZCBUeXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2MiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+VklTQSBDYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2MyIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+TWFzdGVyQ2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjQiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkRpc2NvdmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2NSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+QW1lcmljYW4gRXhwcmVzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjYiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNyZWRpdCBDYXJkIE51bWJlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjciIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkV4cGlyYXRpb24gRGF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjgiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNhcmQgVmVyaWZpY2F0aW9uIE51bWJlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjkiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkJpbGxpbmcgQWRkcmVzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzAiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkFkZHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTcxIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTcyIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DaXR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MyIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q291bnRyeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzQiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlN0YXRlIChPbmx5IFVTKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzUiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlpJUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzYiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkFtb3VudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzciIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlN1Ym1pdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzgiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlN0ZXAgMTogJEFQUF9OQU1FIC0gUGF5bWVudCBGb3JtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3OSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+RU1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgwIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DbGljayAiQ2hlY2sgb3V0IHdpdGggUGF5cGFsIiB0byBwYXkuJmx0O2JyLyZndDsgUGF5cGFsIGFjY2VwdHMgVklTQSwgTWFzdGVyQ2FyZCwgRGlzY292ZXIgb3IgQW1lcmljYW4gRXhwcmVzcy4gJmx0O2JyLyZndDtJdCBkb2VzIG5vdCByZXF1aXJlIHRvIHNpZ24gdXAgd2l0aCBQYXlwYWwuICZsdDtici8mZ3Q7Q2l0aXplbnMgZnJvbSBHZXJtYW55IGNhbiBhbHNvIHBheSB3aXRoIGRpcmVjdCBkZWJpdCAoUGVyIExhc3RzY2hyaWZ0LUVpbnp1ZykuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+VGhhbmsgeW91IGZvciBidXlpbmcgJEFQUF9OQU1FLiAmbHQ7YnIvJmd0OyAmbHQ7YnIvJmd0OyBBcyBzb29uIGFzIHdlIHJlY2VpdmVkIHRoZSBwYXltZW50IHlvdXIgYWNjb3VudCB3aWxsIGJlIHVwZGF0ZWQuJmx0O2JyLyZndDsgWW91IHdpbGwgcmVjZWl2ZSBhbiBFTWFpbCB3aXRoIHlvdXIgaW52b2ljZSBhcyBQREYuJmx0O2JyLyZndDtZb3UgY2FuIGFsc28gY2hlY2sgY3VycmVudCBhbmQgcGFzdCB0cmFuc2FjdGlvbnMgaW4geW91ciBwcm9maWxlIHNldHRpbmdzLiZsdDtici8mZ3Q7Jmx0O2JyLyZndDsmbHQ7YnIvJmd0O1lvdSBjYW4gY2xvc2UgdGhpcyBicm93c2VyIHdpbmRvdy90YWIgbm93IGFuZCByZXR1cm4gdG8gJEFQUF9OQU1FLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODIiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlN1Ym1pdCBhbmQgQnV5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODMiIG5hbWU9InBheW1lbnQtZnJvbSI+CisgICAgPHZhbHVlPkNsaWNrIGFuZCBCdXkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4NCIgbmFtZT0icGF5bWVudC1mcm9tIj4KKyAgICA8dmFsdWU+U3RlcCAzOiAkQVBQX05BTUUgUGF5bWVudCAtIENoZWNrIG9yZGVyIGFuZCBidXkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4NSIgbmFtZT0icGF5bWVudC1mcm9tIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODYiIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPlBheW1lbnQgcmVjZWl2ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4NyIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+SGksPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4OCIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+V2UgaGF2ZSByZWNlaXZlZCB5b3VyIHBheW1lbnQuIFlvdXIgdXNlciBwcm9maWxlIGlzIHVwZGF0ZWQgbm93LiBTZWUgYXR0YWNoZWQgeW91ciBJbnZvaWNlLiBUaGUgSW52b2ljZSBhbmQgYWxsIHBhc3QgSW52b2ljZSBjYW4gYWxzbyBiZSBkb3dubG9hZGVkIGluIHlvdXIgdXNlciBwcm9maWxlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODkiIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPlRoYW5rIHlvdSBmb3IgdXNpbmcgJEFQUF9OQU1FITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTAiIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPlBheW1lbnQgUmVjZWl2ZWQgJEFQUF9OQU1FIC08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkxIiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+UGF5bWVudCBhbmQgVHJhbnNhY3Rpb24gU3RhdHVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MiIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPlRyYW5zY2F0aW9uIEhhc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkzIiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+TWludXRlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTQiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Nb250aHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk1IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+RVVSPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NiIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPlN0YXR1czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTciIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5JbnZvaWNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5OCIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTkiIG5hbWU9ImVycm9yLWxpY2Vuc2UtZmxhdCI+CisgICAgPHZhbHVlPllvdSBuZWVkIHRvIGJ1eSBhIHZvbHVtZSBmbGF0cmF0ZSB0byBiZSBhYmxlIHRvIHNlbmQgaW52aXRhdGlvbnMgb3IgY3JlYXRlIG1lZXRpbmdzIHZpYSB0aGUgY2FsZW5kYXIuIFdpdGggUGF5LXBlci1taW51dGUgaXQgaXMgb25seSBwb3NzaWJsZSBmb3IgeW91IHRvIGFjY2VzcyAkQVBQX05BTUUuIFlvdSBjYW5ub3QgYWxsb3cgM3RoIFBhcnRpZXMgdG8gYWNjZXNzIGEgTWVldGluZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwMCIgbmFtZT0iZXJyb3IgdXNlciI+CisgICAgPHZhbHVlPlRoaXMgRW1haWwgaXMgYWxyZWFkeSB1c2VkIGJ5IGFub3RoZXIgVXNlci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwMSIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlNJUC1TZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAyIiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+VGhlIENvbmZlcmVuY2UgTnVtYmVyIGFuZCBQSU4gaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIHZpYSB0aGUgT3BlblhHIFJQQy1HYXRld2F5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDMiIG5hbWU9InJvb20tYWRtaW4iPgorICAgIDx2YWx1ZT5TSVAgTnVtYmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDQiIG5hbWU9InJvb20tYWRtaW4iPgorICAgIDx2YWx1ZT5QSU48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNSIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkNsZWFyIG9iamVjdHMgb24gY3VycmVudCBzbGlkZSBvbmx5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA2IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+T25seSB0aGUgVVJMIGVudGVyZWQgaW4gdGhlIFN0YXR1cyBiYXIgaXMgc2VuZCB0byBwYXJ0aWNpcGFudHMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5NYWtlIFRlYW0tUm9vbXMgW0JyZWFrb3V0IHNlc3Npb25dPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DaG9vc2UgdXNlcnMgZm9yIGEgbmV3IFRlYW0tUm9vbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPllvdSBjYW4gY2hvb3NlIHVzZXJzIGhlcmUgYW5kIGNyZWF0ZSBhIG5ldyBDb25mZXJlbmNlIFJvb20gKCJUZWFtIFJvb20iKSBmb3IgdGhlbS4gVGhlIGNob3NlbiB1c2VycyB3aWxsIGF1dG9tYXRpY2FsbHkgc3dpdGNoIHRvIHRoZSBuZXcgVGVhbS1Sb29tIG9yIGdldCBhIG5vdGlmaWNhdGlvbi4gVGVhbS1Sb29tIE1vZGVyYXRvcnMgd2lsbCBnZXQgYWRkaXRpb25hbGx5IGEgbGlzdCBvZiBjdXJyZW50IHJvb21zIHNvIHRoYXQgdGhleSBjYW4gc3dpdGNoIHRvIGVhY2ggcm9vbSBpZiB0aGVyZSBhcmUgaXMgbmVlZCBmb3IgYSBNb2RlcmF0b3IuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Vc2VybmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDExIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VXNlcnMgZm9yIHRoZSBuZXcgVGVhbS1Sb29tOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q3JlYXRlIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DaG9vc2UgYXQgbGVhc3Qgb25lIHVzZXIgZm9yIHRoZSBUZWFtLVJvb20hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5BZGQgdXNlciB0byB0ZWFtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5SZW1vdmUgdXNlciBmcm9tIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VXNlciBpcyBUZWFtLVJvb20gTW9kZXJhdG9yIChIZSBpcyBhYmxlIHRvIG1hbmFnZSBUZWFtLVJvb21zIGFuZCB1c2VycyBvZiB0aGUgVGVhbS1Sb29tIGNhbiBhc2sgaGltIHRvIGNvbWUgaW5zaWRlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Um9vbXR5cGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPklmIHlvdSBjaGVjayAiRm9yY2UgdXNlciB0byBzd2l0Y2ggdG8gbmV3IFRlYW0tUm9vbSIgYWxsIGNob3NlbiB1c2VycyB3aWxsIGF1dG9tYXRpY2FsbHkgc3dpdGNoIHRvIHRoZSBuZXdseSBjcmVhdGVkIFRlYW0tUm9vbS4gT3RoZXJ3aXNlIHRoZXkgZ2V0IGEgbm90aWZpY2F0aW9uIHdpdGggYSBidXR0b24gdGhhdCB0aGV5ICZsdDtpJmd0O2NhbiZsdDsvaSZndDsgc3dpdGNoIHRvIHRoZSBuZXcgcm9vbS4gVGVhbS1Nb2RlcmF0b3JzIGFsd2F5cyBoYXZlIHRoZSBmcmVlIGNob2ljZSB0byBtYW5hZ2UgdGhlIFRlYW0tUm9vbXMgYW5kIHN3aXRjaCBiZXR3ZWVuIHRoZW0uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5NYW5hZ2UgVGVhbS1Sb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+WW91IGNhbiBzd2l0Y2ggaGVyZSBiZXR3ZWVuIGFsbCBUZWFtLVJvb21zIHRoYXQgeW91IGFyZSBhc3NpZ25lZCBhcyBUZWFtLVJvb20gTW9kZXJhdG9yLiBVc2VycyBpbnNpZGUgdGhlIFRlYW0tUm9vbSBjYW4gc2VuZCB5b3UgYSBtZXNzYWdlLCBmb3IgZXhhbXBsZSB0byBhc2sgeW91IHRvIGNvbWUgdG8gdGhlaXIgcm9vbSBhbmQgaGVscCB0aGVtLiBZb3UgY2FuIGFsc28gdGVybWluYXRlIHRoZSBUZWFtLVJvb20gYW5kIGFsbCBVc2VycyB3aWxsIGJlIGxvZ2dlZCBvdXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Gb3JjZSB1c2VyIHRvIHN3aXRjaCB0byBuZXcgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DcmVhdGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VXNlcnMgYXZhaWxhYmxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5BZGQgYSB1c2VyIHdpdGggdGhlIHBsdXMgZnJvbSB0aGUgbGVmdCBvciByZW1vdmUgaXQgd2l0aCB0aGUgY3Jvc3MgZnJvbSB0aGUgcmlnaHQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4xKSBUZWFtLVJvb20gc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjIpIEFkZCB1c2VycyB0byB0aGUgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb20gTmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DaGFuZ2UgdG8gdGhlIFJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlN3aXRjaCB0byB0aGlzIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVybWluYXRlIFRlYW0tUm9vbSBhbmQgbG9nb3V0IGFsbCBVc2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TmV3IFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGhlcmUgaXMgYSBuZXcgVGVhbS1Sb29tIGF2YWlsYWJsZSBmb3IgeW91LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U3dpdGNoIHRvIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVhbS1Sb29tIEFjdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPllvdSBjYW4gcmUtb3BlbiB0aGlzIHdpbmRvdyB2aWEgdGhlIG1haW4gbWVudSBpbiB0aGUgIkFjdGlvbnMiIHNlY3Rpb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5TZW5kIG1lc3NhZ2UgdG8gVGVhbS1Sb29tIE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQ0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TmV3IFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQ1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGhlcmUgaXMgYSBuZXcgVGVhbS1Sb29tIGF2YWlsYWJsZS4gWW91IGNhbiBzd2l0Y2ggdG8gdGhhdCBSb29tLiBUZWFtLVJvb21zIGFyZSBsaWtlICJXb3JrZ3JvdXBzIiB3aXRoIGFkZGl0aW9uYWxseSBwb3NzaWJpbGl0aWVzIHRvIGFzayB0aGUgVGVhbS1Sb29tIE1vZGVyYXRvciBmb3IgaGVscC4gWW91ciBUZWFtLVJvb21zIGFyZSBhbHNvIGF2YWlsYWJsZSBpbiB0aGUgIk15IE1lZXRpbmdzIiBzZWN0aW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQ2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U3dpdGNoIHRvIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQ3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q3JlYXRlZCBieTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0OCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW0tUm9vbSBuYW1lOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQ5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGhpcyBXaW5kb3cgd2lsbCBzdGF5IG9wZW4gZXZlbiBpZiB5b3UgbGVhdmUgdGhlIHJvb20hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Vc2VycyBmb3IgdGhpcyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1MSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjMpIE90aGVyIFRlYW0tUm9vbXMgdGhhdCB5b3UgY291bGQgc3dpdGNoIHRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5TZW5kIGEgbWVzc2FnZSB0byB0aGUgVGVhbS1Sb29tIE1vZGVyYXRvcnMuIEZvciBleGFtcGxlIGlmIHlvdSBuZWVkIGhlbHAgaW4gTW9kZXJhdGluZyB0aGUgUm9vbSBvciBpZiB5b3UgaGF2ZSBhIHF1ZXN0aW9uIGFib3V0IHRoZSB0b3BpYy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1MyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlNlbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1NCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjIpIFVzZXJzIHRoYXQgYXJlIGludml0ZWQgdG8gdGhpcyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1NSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPklzIFRlYW0tUm9vbSBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1NiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoZXNlIGFyZSBhbGwgdXNlcnMgdGhhdCB0aGUgbW9kZXJhdG9yIGhhcyBpbnZpdGVkIHRvIHRoaXMgVGVhbS1Sb29tLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGhlcmUgaXMgbm8gVGVhbS1Nb2RlcmF0b3IgbG9nZ2VkIGluIGF0IHRoZSBtb21lbnQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5QbGVhc2UgZW50ZXIgYSBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5QbGVhc2UgaGVscCB1cywgd2UgaGF2ZSBhIHByb2JsZW0gaW4gb3VyIFRlYW0tUm9vbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2MCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkEgdXNlciBmcm9tIGEgVGVhbS1Sb29tIHJlcXVlc3RzIHlvdXIgaGVscC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2MSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW0tUm9vbSByZXF1ZXN0IGZvciBoZWxwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5NZXNzYWdlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+RnJvbTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2NCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPllvdSBhcmUgY3VycmVudGx5IG5vdCBpbiBhbnkgVGVhbS1Sb29tLiBCdXQgeW91IGNhbiBzd2l0Y2ggaGVyZSB0byBhbGwgVGVhbS1Sb29tcyB0aGF0IHlvdSBoYXZlIGFjY2VzcyB0by48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2NSIgbmFtZT0iYmFja3VwQ29udGVudCI+CisgICAgPHZhbHVlPkJhY2t1cCB0aGUgU3lzdGVtLiBUaGUgQmFja3VwIGluY2x1ZGVzIGFsbCBVc2VyIGdlbmVyYXRlZCBkYXRhLiBUaGUgY29uZmlndXJhdGlvbiBpcyBub3QgaW5jbHVkZWQgYXMgd2VsbCBhcyB0aGUgbGFuZ3VhZ2UgbGFiZWxzLiBCZWNhdXNlIHRob3NlIHZhbHVlcyBhcmUgaW1wb3J0ZWQgd2l0aCB0aGUgU3lzdGVtIEluc3RhbGxlci4gVG8gdXBkYXRlIHlvdXIgU3lzdGVtLCBleHBvcnQgeW91ciBvbGQgc3lzdGVtICgxKSByZS1pbnN0YWxsIGludG8gYSBuZXcgZGF0YWJhc2UgdGhlIG5ldyBwYWNrYWdlICgyKSBhbmQgaW1wb3J0IHRoZSBCYWNrdXAgZmlsZSBhZ2FpbiAoMykuIFRoZSBCYWNrdXAgc2hvdWxkIGJlIGltcG9ydGVkIGJlZm9yZSBnZW5lcmF0aW5nIGRhdGEgaW4gdGhlIG5ld2x5IGluc3RhbGxlZCBzeXN0ZW0uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjYiIG5hbWU9ImJhY2t1cENvbnRlbnQiPgorICAgIDx2YWx1ZT5TeXN0ZW0gQmFja3VwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjciIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPkFsbG93IHVzZXIgdG8gc2hhcmUgU2NyZWVuL1JlY29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY4IiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT5EZW55IHVzZXIgdG8gc2hhcmUgU2NyZWVuL1JlY29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY5IiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT5Vc2VyIGlzIE1vZGVyYXRvciwgaGUgY2FuIGRvIGFueXRoaW5nITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDcwIiBuYW1lPSJhcHBseSBmb3Igc2NyZWVuL3JlY29yZGluZyI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gc2hhcmUvcmVjb3JkIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3MSIgbmFtZT0ibW9kZXJhdGlvbiBtaW5pIGljb25zIj4KKyAgICA8dmFsdWU+WW91IGFyZSBhbGxvd2VkIHRvIHNoYXJlL3JlY29yZCBzY3JlZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3MiIgbmFtZT0ibW9kZXJhdGlvbiBtaW5pIGljb25zIj4KKyAgICA8dmFsdWU+QXBwbHkgZm9yIHJpZ2h0IHRvIHNoYXJlL3JlY29yZCBzY3JlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzMiIG5hbWU9Im1vZGVyYXRpb24gbWluaSBpY29ucyBjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+QWxsb3cvRGVueSByaWdodCB0byBzaGFyZS9yZWNvcmQgc2NyZWVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc0IiBuYW1lPSJzb3VuZCBpY29uIj4KKyAgICA8dmFsdWU+VHVybiBzb3VuZCBvZmY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3NSIgbmFtZT0ic291bmQgaWNvbiI+CisgICAgPHZhbHVlPlR1cm4gc291bmQgb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3NiIgbmFtZT0icm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPkF1ZGlvIG9ubHkgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc3IiBuYW1lPSJyb29tIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+VHVybiB0aGlzIEZsYWcgb24gYW5kIHRoZSB1c2VycyB3aWxsIGhhdmUgb25seSB0aGUgQXVkaW8tT3B0aW9uIGFuZCBubyBWaWRlbyBpbiBhIGNvbmZlcmVuY2Ugcm9vbS4gVGhpcyBjYW4gYnkgZ29vZCB0byBzYXZlIGJhbmR3aWR0aC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3OCIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QWxsb3cgUmVtb3RlIENvbnRyb2wgKER1cmluZyBTY3JlZW4gU2hhcmluZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3OSIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+RGVueSBSZW1vdGUgQ29udHJvbCAoRHVyaW5nIFNjcmVlbiBTaGFyaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgwIiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5BcHBseSBmb3IgcmlnaHQgdG8gUmVtb3RlIENvbnRyb2wgU2NyZWVuIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODEiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPllvdSBhcmUgYWxsb3dlZCB0byBSZW1vdGUgQ29udHJvbCBTY3JlZW4gKER1cmluZyBTY3JlZW4gU2hhcmluZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MiIgbmFtZT0iYXBwbHkgZm9yIHJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0byByZW1vdGUgY29udHJvbCBzY3JlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODMiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlVzZXIgaXMgTW9kZXJhdG9yLCBoZSBjYW4gZG8gYW55dGhpbmchIFtSZW1vdGUgRGVza3RvcCBDb250cm9sXTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg0IiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5BbGxvdy9EZW55IHJpZ2h0IHRvIFJlbW90ZSBDb250cm9sIFNjcmVlbiAoRHVyaW5nIFNjcmVlbiBTaGFyaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg1IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT4xKSBZb3VyIFBDIHRvIHJlbW90ZSBQQzogVG8gY29weSBhbmQgcGFzdGUgdGV4dCBmcm9tIHlvdXIgY2xpcGJvYXJkIGludG8gdGhlIHJlbW90ZSBjb250cm9sbGVkIHNjcmVlbiwgY2xpY2sgb24gdGhlIHNjcmVlbiwgdGhlbiByaWdodCBjbGljayBpbiB0aGUgdGV4dCBmaWVsZCBhbmQgY2hvb3NlICJJbnNlcnQiIGZyb20gdGhlIGNvbnRleHQgKHJpZ2h0IGNsaWNrKSBtZW51LiZsdDtici8mZ3Q7Jmx0O2JyLyZndDsyKSBGcm9tIHJlbW90ZSBQQyB0byB5b3VyIFBDOiBUbyBjb3B5IHRleHQgZnJvbSB0aGUgcmVtb3RlIFBDIHRvIHlvdXIgUEMncyBjbGlwYm9hcmQsIGhpZ2hsaWdodCB0aGUgdGV4dCB3aXRoIHRoZSBtb3VzZSBvbiB0aGUgcmVtb3RlIHNjcmVlbiwgdGhlbiByaWdodC1jbGljayBvbiB0aGUgcmVtb3RlIHNjcmVlbiBhbmQgY2hvb3NlICZsdDtpJmd0O0NvcHkgaGlnaGxpZ2h0ZWQgdGV4dCZsdDsvaSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4NiIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+Q29weSBhbmQgUGFzdGUgdGV4dCBmcm9tIHlvdXIgUEMgdG8gcmVtb3RlIFBDIGFuZCB2aWNlLXZlcnNhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg3IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Db3B5IGhpZ2hsaWdodGVkIHRleHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4OCIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+SG93IHRvIGNvcHkgbiBwYXN0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg5IiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5RdWFsaXR5IG9mIHRoZSBTY3JlZW5TaGFyZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5MCIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+VmVyeSBoaWdoIFF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5MSIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+SGlnaCBRdWFsaXR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTIiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPk1lZGl1bSBRdWFsaXR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTMiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPkxvdyBRdWFsaXR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTQiIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+ZW5fVVM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NSIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5kZV9ERTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk2IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPktleWJvYXJkOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk3IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPkNsb3NlIFdlYmluYXIhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTgiIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+VGhlIFdlYmluYXIgaXMgYWxyZWFkeSBjbG9zZWQsIHlvdSB3aWxsIGJlIHJlZGlyZWN0ZWQgdG8gc29tZSBpbnRlcmVzdGluZyBvZmZlcmluZ3MgaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5OSIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5DbG9zZSBSb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDAiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+RXhpdCBVUkw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMSIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5Sb29tIHRlcm1pbmF0aW9uIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDIiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+SWYgdGhlIHJvb20gaXMgY2xvc2VkIHVzZXJzIHdpbGwgYmUgcmVkaXJlY3RlZCB0byB0aGUgZXhpdCBVUkwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDMiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+TGRhcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA0IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPklEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDUiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA2IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkNvbmZpZyBGaWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDciIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+TGRhcCBDb25maWc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwOCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDkiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+RW5hYmxlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEwIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkluc2VydGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTEiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+SW5zZXJ0ZWQgYnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMiIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5VcGRhdGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTMiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+VXBkYXRlZCBieTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE0IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPlRoZSBjb25maWcgZmlsZXMgYXJlIGluIHRoZSBmb2xkZXIgd2ViYXBwcy9vcGVubWVldGluZ3MvY29uZi4gWW91IG5lZWQgdG8gbWFudWFsbHkgdXBsb2FkIHRoZSBmaWxlcyB0byB0aGlzIGZvbGRlci4gQ2hhbmdlcyB0byB0aGUgY29uZmlnIGZpbGUgYXJlIGltbWVkaWF0ZWx5IG9ubGluZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5Db25maWcgZmlsZSBuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTYiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+SWYgeW91IGVuYWJsZSAiQWRkIERvbWFpbiB0byB1c2VybmFtZSIgdGhlIHZhbHVlIG9mIHRoZSBmaWVsZCAiZG9tYWluIiBpcyBhZGRlZCB0byBlYWNoIGxvZ2luIHRoYXQgdGhlIHVzZXIgZW50ZXJzIGluIHRoZSBsb2dpbiBib3guIFRoaXMgaXMgdXNlZnVsIGlmIHRoZSBMb2dpbiBpbiB0aGUgTGRhcCBpcyBzdG9yZWQgaW5jbHVkaW5nIHRoZSBkb21haW4gbmFtZS4gRXhhbXBsZTogVXNlciBlbnRlcnMgImhhbnMiIGRvbWFpbiBpcyBzcGVjaWZpZWQgYXMgImxvY2FsaG9zdC5jb20iLCBsb2dpbiB0aGF0IGlzIHZlcmlmaWVkIGFnYWluc3QgTGRhcCBpczogaGFuc0Bsb2NhbGhvc3QuY29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTciIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+QWRkIERvbWFpbiB0byB1c2VybmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE4IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkRvbWFpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE5IiBuYW1lPSJyZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPkluc2VydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIwIiBuYW1lPSJyZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPkNvcHkgaGlnaGxpZ2h0ZWQgdGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIxIiBuYW1lPSJyZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPlJlbW90ZSBDbGlwYm9hcmQgVGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIyIiBuYW1lPSJyZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPlNob3cgcmVtb3RlIENsaXBib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIzIiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5EbyBub3Qgc2hvdyBhZ2FpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI0IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Db3B5IHRleHQgaGVyZSAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNSIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgdGhlIHJpZ2h0IHRvIHJlbW90ZSBjb250cm9sIChvciB0aGUgbW9kZXJhdGlvbikgdG8gY29weSBhbmQgcGFzdGUgdGV4dCB0byBvciBmcm9tIHRoZSByZW1vdGUgc2NyZWVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI2IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5FZGl0IGRlZmF1bHQgc2V0dGluZ3MgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjciIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkRvIG5vdCBzaG93IGluZm8gYm94IGluIFJlbW90ZSBDb250cm9sIGFib3V0IENvcHkgYW5kIFBhc3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjgiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+U2F2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI5IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPlJlbW92ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMwIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMxIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+SW52aXRlIHVzZXIgdG8gY29uZmVyZW5jZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzIiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5DaG9vc2UgYSBjb25mZXJlbmNlIHJvb20uIFRoZSBpbnZpdGVkIHVzZXIgd2lsbCBnZXQgYSBtZXNzYWdlIHdpdGggeW91ciBuYW1lIGFuZCBhIGxpbmsgdG8gdGhlIHJvb20uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzMiIG5hbWU9ImNoYXQgdXNlciI+CisgICAgPHZhbHVlPkNvbm5lY3RlZCBzaW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzNCIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkVudGVyIHJvb20gYWZ0ZXIgc2VuZGluZyBpbnZpdGF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzUiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5JbnZpdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzNiIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPk1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzNyIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gaW52aXRlIHlvdSB0byB0aGUgY29uZmVyZW5jZSByb29tOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM4IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+SW52aXRlIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzOSIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPlNlbmQgSW52aXRhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQwIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+ZGlkICZsdDtiJmd0O25vdCZsdDsvYiZndDsgYWNjZXB0IHlvdXIgaW52aXRhdGlvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0MSIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkFjY2VwdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQyIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+RGVueTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQzIiBuYW1lPSJ1c2VyIHByb2ZpbGUiPgorICAgIDx2YWx1ZT5UaW1lem9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ0IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5FdmVudCBEZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDUiIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0NiIgbmFtZT0iYXBwb2ludG1lbnQgbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+RGVzY3JpcHRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0NyIgbmFtZT0iYXBwb2ludG1lbnQgbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+Q3JlYXRlZCBieTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ4IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+VGltZVpvbmUgTWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ5IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+Q2hlY2sgIlRpbWVab25lIE1lc3NhZ2UiIHRvIGdpdmUgdXNlcnMgYSBtZXNzYWdlIG5leHQgdGltZSB0aGV5IGxvZ2luIHRvIHVwZGF0ZSB0aGVpciBwcm9maWxlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUwIiBuYW1lPSJ0aW1lIHpvbmUgdXBkYXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5QbGVhc2UgY2hlY2sgdGhlIHRpbWUgem9uZSBpbiB5b3VyIHVzZXIgcHJvZmlsZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MSIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TmV3ICRBUFBfTkFNRSBjb25mZXJlbmNlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUyIiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EZXRhaWxzOiZsdDtici8mZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTMiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPlN0YXJ0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU0IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5FbmQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTUiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkNoYW5nZWQgJEFQUF9OQU1FIGNvbmZlcmVuY2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTYiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPk9yZ2FuaXplcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NyIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2FuY2VsZWQgJEFQUF9OQU1FIGNvbmZlcmVuY2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTgiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSBjb25mZXJlbmNlIFJlbWluZGVyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU5IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+Q29tbXVuaXR5IHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjAiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TaG93IGNvbnRhY3QgZGF0YSB0byBldmVyeWJvZHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkFkZCBmaWVsZHMgb2YgaW50ZXJlc3QgdGhhdCB5b3Ugb2ZmZXIgb3IgdGhhdCB5b3UgYXJlIHNlYXJjaGluZyB0byBmaW5kIGludGVyZXN0aW5nIHBhcnRuZXJzIGZvciBhIGNvbmZlcmVuY2UuIENvbW1hIHNlcGFyYXRlIHRoZSB0ZXJtcyAoZm9yIGV4YW1wbGU6IE1lZGljYWwgU2VydmljZSwgSGVhbHRoIGFzc3VyYW5jZSwgLi4uKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYyIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+TXkgb2ZmZXJpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjMiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NeSBpbnRlcmVzdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2NCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2NSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlRpbWV6b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjYiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5GaWVsZHMgb2YgaW50ZXJlc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2NyIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkNvbnRhY3QgaW5mb3JtYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2OCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlNob3cgY29udGFjdCBkYXRhIHRvIGNvbnRhY3RzIG9ubHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2OSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlNob3cgY29udGFjdCBkYXRhIHRvIG5vYm9keTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTcwIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+TXkgUHJvZmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTcxIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+RWRpdCBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTcyIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2VhcmNoIHVzZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzMiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5XYXRjaCB5b3VyIHByb2ZpbGUgbGlrZSBvdGhlciBzZWUgeW91PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzQiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5FZGl0IHlvdXIgc2V0dGluZ3MsIGFkZCB5b3VyIGludGVyZXN0cyB0byBiZSBmb3VuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc1IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2VhcmNoIGZvciBvdGhlciB1c2VycyBhbmQgZXh0ZW5kIHlvdXIgbmV0d29yazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc2IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlNlYXJjaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc3IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlVzZXIgb2ZmZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzgiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+VXNlciBsb29rcyBmb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3OSIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5GcmVldGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgwIiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MSIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5UaW1lem9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgyIiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPk9mZmVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgzIiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlNlYXJjaHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5TZWFyY2hyZXN1bHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NSIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5BY3Rpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODYiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+QWRkIHRvIGNvbnRhY3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODciIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+U2VuZCBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODgiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+Q29udGFjdHMgYW5kIE1lc3NhZ2VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODkiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+UGVuZGluZyBjb250YWN0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkwIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+QWNjZXB0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTEiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5EZW55PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTIiIG5hbWU9InVzZXIgY29udGFjdCByZXF1ZXN0Ij4KKyAgICA8dmFsdWU+SGksPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTMiIG5hbWU9InVzZXIgY29udGFjdCByZXF1ZXN0Ij4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0byBhZGQgeW91IGFzIGNvbnRhY3QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTQiIG5hbWU9InVzZXIgY29udGFjdCByZXF1ZXN0Ij4KKyAgICA8dmFsdWU+Q2hlY2sgeW91ciBjb250YWN0IHJlcXVlc3RzIGluICRBUFBfTkFNRSBvciBjbGljayBvbiB0aG9zZSBsaW5rcyB0byBhY2NlcHQgb3IgZGVueSB0aGUgcmVxdWVzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk1IiBuYW1lPSJhZGQgdXNlciBjb250YWN0Ij4KKyAgICA8dmFsdWU+VGhpcyB1c2VyIGlzIGFscmVhZHkgaW4geW91ciBjb250YWN0IGxpc3Qgb3IgaGFzIHJlY2VpdmVkIGFuIGludml0YXRpb24gdG8geW91ciBjb250YWN0IGxpc3QgdGhhdCBpcyBub3QgYW5zd2VyZWQgeWV0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk2IiBuYW1lPSJ1c2VyIGNvbnRhY3QgbWFpbCI+CisgICAgPHZhbHVlPllvdXIgY29udGFjdCBsaXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTciIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5FZGl0IHlvdXIgY29udGFjdCBhbmQgbWVzc2FnZXMsJmx0O2JyLyZndDsgbWFuYWdlIHlvdXIgcGVuZGluZyBjb250YWN0cyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5OCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPmNvbmZpcm1lZCB5b3UgYXMgY29udGFjdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5OSIgbmFtZT0iY2hhdCBpbmZvIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMCIgbmFtZT0iY2hhdCBsb2cgaWNvbiI+CisgICAgPHZhbHVlPlNob3cgLyBDb3B5IGNoYXQgbG9nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDEiIG5hbWU9ImNoYXQgbG9nIHdpbmRvdyI+CisgICAgPHZhbHVlPkNoYXQgTG9nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkZyb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3ViamVjdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA2IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5NZXNzYWdlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA3IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5OZXcgTWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DbGljayB0byB3cml0ZSBhIG5ldyBtZXNzYWdlIHRvIGFueSBvZiB5b3VyIGNvbnRhY3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPldyaXRlIG5ldyBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTAiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjExIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TdWJqZWN0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjEyIiBuYW1lPSJ3aGl0ZWJvYXJkIGZ1bGwtZml0Ij4KKyAgICA8dmFsdWU+RW5hYmxlIGZ1bGwgZml0IGFuZCB0aGUgd2hpdGVib2FyZCB3aWxsIHpvb20gdGhlIHdob2xlIHdoaXRlYm9hcmQgc28gdGhhdCBhbGwmbHQ7YnIvJmd0O2RvY3VtZW50cyBhcmUgdmlzaWJsZSBhY2NvcmRpbmcgdG8gZWFjaCBwYXJ0aWNpcGFudHMgc2NyZWVuIHJlc29sdXRpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTMiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPktpY2sgdXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE0IiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IGtpY2sgeW91cnNlbGYgb3V0IG9mIHRoZSBjb25mZXJlbmNlIHJvb20hIElmIHlvdSB3YW50IHRvIGxlYXZlIGl0IGNsb3NlIHRoZSBicm93c2VyIG9yIHVzZSB0aGUgZXhpdCBidXR0b24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTUiIG5hbWU9ImtpY2stdXNlciI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkaXNjb25uZWN0IHRoaXMgdXNlciBmcm9tIHRoaXMgY29uZmVyZW5jZSByb29tPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE2IiBuYW1lPSJraWNrLXVzZXIiPgorICAgIDx2YWx1ZT5Db25maXJtIGFjdGlvbiAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNyIgbmFtZT0ia2ljay11c2VyIj4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBraWNrIGEgU3VwZXItTW9kZXJhdG9yIG91dCBvZiBhIHJvb20hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkJvb2sgY29uZmVyZW5jZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlN0YXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjAiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkVuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgYW4gb3B0aW9uYWwgcmVxdWVzdCBmb3IgbWVldGluZyB0byB0aGUgbWVzc2FnZSBhbmQgY3JlYXRlIGEgY29uZmVyZW5jZSByb29tLiBUaGUgRXZlbnQgaXMgdGhlbiBjb3BpZWQgaW4gdGhlIGNhbGVuZGFyIG9mIGV2ZXJ5IHBhcnRpY2lwYW50LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5JbmJveDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRyYXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoaXMgaXMgeW91ISBZb3UgY2Fubm90IGFkZCB5b3Vyc2VsZiBhcyB5b3VyIG93biBjb250YWN0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI2IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VGhlIHVzZXIgaXMgYWxyZWFkeSBkZW5pZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjciIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5UaGUgdXNlciBpcyBhbHJlYWR5IGFwcHJvdmVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI4IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VGhpcyB1c2VyIGNvbnRhY3QgaGFzaCBpcyBpbnZhbGlkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI5IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VXNlciBhZGRlZCB0byBjb250YWN0IGxpc3QhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzAiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Vc2VyIGRlbmllZCBhcyBjb250YWN0IGFuZCByZW1vdmVkIGZyb20gcGVuZGluZyBjb250YWN0IGxpc3QhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzEiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBzdWNoIGNvbnRhY3QhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzIiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Xb3VsZCB5b3UgcmVhbGx5IGxpa2UgdG8gcmVtb3ZlIHRoYXQgY29udGFjdD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkNvbmZpcm0gY29udGFjdCByZW1vdmFsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzQiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5EZWxldGUgY29udGFjdCBmcm9tIGxpc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNSIgbmFtZT0idXNlciBwcm9maWxlIj4KKyAgICA8dmFsdWU+VXNlciBQcm9maWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzYiIG5hbWU9InVzZXIgcHJvZmlsZSI+CisgICAgPHZhbHVlPlNob3cgdXNlciBwcm9maWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzciIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1lc3NhZ2VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlYXJjaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWxlY3QgYWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDAiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbGVjdCBub25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbGVjdCB1bnJlYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0MiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VsZWN0IHJlYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0MyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TW92ZSB0byBmb2xkZXIgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZCBuZXcgZm9sZGVyIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EZWxldGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGVsZXRlZCBtYWlscyBhcmUgc3RpbGwgaW4geW91ciB0cmFzaCBmb2xkZXIhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDciIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1hcmsgdW5yZWFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1hcmsgcmVhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BbnN3ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QW5zd2VyIGV2ZXJ5Ym9keTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Gb3J3YXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFjdGlvbnMgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTMiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5TZW5kIHByaXZhdGUgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Ob3RoaW5nIHNlbGVjdGVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Nb3ZlIHRvIEluYm94PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTYiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRlbGV0ZSAoZmluYWwpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTciIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoaXMgYWN0aW9uIGNhbm5vdCBiZSB1bmRvbmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZCBmb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1OSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIGZvbGRlcnMgYW5kIG9yZ2FuaXplIHlvdXIgbWVzc2FnZXMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjAiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZCBmb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSBmb2xkZXIiPgorICAgIDx2YWx1ZT5EZWxldGUgZm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSBmb2xkZXIiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IGRlbGV0ZSB0aGlzIGZvbGRlciwgdGhlcmUgYXJlIHN0aWxsIG1lc3NhZ2VzIGluc2lkZSEgRGVsZXRlIGZpcnN0IHRoZSBtZXNzYWdlcyBvciBtb3ZlIHRoZW0gdG8gYW5vdGhlciBmb2xkZXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSBmb2xkZXIiPgorICAgIDx2YWx1ZT5FZGl0IG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBmb2xkZXI/IFRoZXJlIGlzIG5vIHdheSB0byB1bmRvIHRoYXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjYiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Zb3VyIHJlcXVlc3Qgd2FzIHNlbmQgdG8gdGhlIHVzZXIuIFRoZSB1c2VyIHdpbGwgcmVjZWl2ZSBhIG5vdGlmaWNhdGlvbiB0byBhY2NlcHQgb3IgZGVueSB5b3VyIHJlcXVlc3QuIE9ubHkgYWNjZXB0ZWQgcmVxdWVzdHMgYXJlIGluIHlvdXIgY29udGFjdCBsaXN0IG9mIGNvdXJzZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPk1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2OCIgbmFtZT0idXNlciB2aWV3IHByb2ZpbGUiPgorICAgIDx2YWx1ZT5UaGUgdXNlciBkb2VzIG5vdCBzaGFyZSBoaXMgcGVyc29uYWwgY29udGFjdCBkYXRhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY5IiBuYW1lPSJ1c2VyIHZpZXcgcHJvZmlsZSI+CisgICAgPHZhbHVlPlRoZSB1c2VyIGRvZXMgc2hhcmUgaGlzIHBlcnNvbmFsIGNvbnRhY3QgZGF0YSBvbmx5IHRvIGNvbnRhY3RzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjcwIiBuYW1lPSJ1c2VyIHZpZXcgcHJvZmlsZSI+CisgICAgPHZhbHVlPkFkZHJlc3MgJmFtcDsgUGhvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3MSIgbmFtZT0iZXJyb3IgY29kZSI+CisgICAgPHZhbHVlPllvdSBpbnZpdGF0aW9uIGNvZGUgaXMgbm8gdmFsaWQsIHRoZSBjb2RlIGlzIG9ubHkgdmFsaWQgZHVyaW5nIHRoaXMgc3BlY2lmaWMgZGF0ZSBhbmQgdGltZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3MiIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPlRoaXMgZXZlbnQgaXMgY29ubmVjdGVkIHRvIHNldmVyYWwgY2FsZW5kYXJzIG9mIG90aGVyIHVzZXJzLiBZb3VyIGNoYW5nZSB3aWxsIGFsc28gdXBkYXRlIHRoZWlyIGNhbGVuZGFyLiBXb3VsZCB5b3UgcmVhbGx5IGxpa2UgdG8gdXBkYXRlIHRoZSBldmVudD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3MyIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPkNvbmZpcm0gdXBkYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzQiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5BbGxvdyBjb250YWN0IHRvIHNlZSBteSBjYWxlbmRhciAodmlldyBvbmx5KTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc1IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+RG8gbm90IHNoYXJlIGNhbGVuZGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzYiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5DYWxlbmRhciBvZiBjb250YWN0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+WW91ciBjb250YWN0cyBuZWVkIHRvIGFwcHJvdmUgeW91IGZpcnN0IHRvIGJlIGFibGUgdG8gc2VlIHRoZWlyIGNhbGVuZGFyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc4IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBzdG9yZSBvciBkZWxldGUgZXZlbnRzIGZyb20gb3RoZXIgY2FsZW5kYXJzIHRoZW4geW91ciBvd24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzkiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5TaG93IG15IG93biBjYWxlbmRhciBhZ2FpbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4MCIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPlRoaXMgZXZlbnQgaXMgY29ubmVjdGVkIHRvIHNldmVyYWwgY2FsZW5kYXJzIG9mIG90aGVyIHVzZXJzLiBZb3VyIGFjdGlvbiB3aWxsIGFsc28gZGVsZXRlIHRoZSBldmVudCBmcm9tIHRoZWlyIGNhbGVuZGFyLiBXb3VsZCB5b3UgcmVhbGx5IGxpa2UgdG8gZGVsZXRlIHRoZSBldmVudD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4MSIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPkNvbmZpcm0gYWN0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODIiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5FbnRlciByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODMiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5BY2Nlc3MgdGhlIGNvbmZlcmVuY2Ugcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBhIGNvbmZlcmVuY2Ugcm9vbSBhbmQgZXZlbnQgYm9va2VkIHdpdGggdGhpcyBwcml2YXRlIG1lc3NhZ2UuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODUiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0byBzdG9yZSB0aGUgZXZlbnQgZmlyc3QhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODYiIG5hbWU9ImFjY2VzcyByb29tcyBlcnJvciI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIHN1Y2ggcm9vbSBhdmFpbGFibGUuIFRoZSBldmVudCBpbiB0aGUgY2FsZW5kYXIgYW5kIGNvbm5lY3RlZCByb29tIGlzIGFscmVhZHkgZGVsZXRlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NyIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+Q2hvb3NlIHlvdXIgbmlja25hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4OCIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+Rmlyc3RuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODkiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPkxhc3RuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTAiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPkVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTEiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPk9rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTIiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPk1pbmltdW0gbGVuZ3RoIDQgY2hhcnMhIEZvciBib3RoLCBmaXJzdG5hbWUgYW5kIGxhc3RuYW1lLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkzIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5QbGVhc2UgZW50ZXIgYSB2YWxpZCBlbWFpbCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5NCIgbmFtZT0iYXV0aCBmcm9tIj4KKyAgICA8dmFsdWU+RmFjZWJvb2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5NSIgbmFtZT0iYXV0aCBmb3JtIj4KKyAgICA8dmFsdWU+TG9naW4gd2l0aCB5b3VyIEZhY2Vib29rIGFjY291bnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5NiIgbmFtZT0idmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+TWVtYmVyIHNpbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTciIG5hbWU9ImRpcmVjdCBsb2dpbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+WW91J3ZlIGxvZ2dlZCB3aXRoIHlvdXIgRmFjZWJvb2sgYWNjb3VudC4gWW91IHNob3VsZCB1cGRhdGUgeW91ciBwcm9maWxlIHdpdGggdGhlIGNvcnJlY3QgZW1haWwuIE90aGVyd2lzZSB5b3Ugd2lsbCBub3QgcmVjZWl2ZSBpbnZpdGF0aW9ucyBhbmQgcHJpdmF0ZSBtZXNzYWdlcyBmcm9tIG90aGVyIHVzZXJzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk4IiBuYW1lPSJkaXJlY3QgbG9naW4gbWVzc2FnZSBoZWFkZXIiPgorICAgIDx2YWx1ZT5NZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTkiIG5hbWU9ImRpcmVjdCBsb2dpbiBtZXNzYWdlIGNoZWNrYm94IGNvbnRyb2wiPgorICAgIDx2YWx1ZT5EbyBub3Qgc2hvdyB1cGRhdGUgcHJvZmlsZSBtZXNzYWdlIGFnYWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDAiIG5hbWU9InByb2ZpbGUgc2V0dGluZ3MgYnV0dG9uIj4KKyAgICA8dmFsdWU+bW9yZSBkaXNwbGF5IG9wdGlvbnMgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk5ldyBwcml2YXRlIG1lc3NhZ2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkNsaWNrIGhlcmUgdG8gdmlzaXQgeW91ciBwcm9maWxlIHRvIHNlZSB0aGUgZnVsbCBtZXNzYWdlIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5SZXBseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA0IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5Sb29tcyBhbmQgY2hhdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwNSIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+TXkgcm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwNiIgbmFtZT0ibXkgcm9vbXMiPgorICAgIDx2YWx1ZT5NeSBjb25mZXJlbmNlIHJvb20gKGZvciAxLTE2IHVzZXJzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA3IiBuYW1lPSJteSByb29tcyI+CisgICAgPHZhbHVlPk15IHdlYmluYXIgcm9vbSAoZm9yIDEtMTIwIHVzZXJzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA4IiBuYW1lPSJyb29tIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+T3duZXIgSWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwOSIgbmFtZT0ibG9naW4gZXJyb3IiPgorICAgIDx2YWx1ZT5QbGVhc2UgZW50ZXIgYSBwYXNzd29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzEwIiBuYW1lPSJsb2dpbiBlcnJvciI+CisgICAgPHZhbHVlPllvdSBuZWVkIGFuIGFjY291bnQgd2l0aCBVc2VyLUxldmVsIFVzZXIsIE1vZGVyYXRvciBvciBBZG1pbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzExIiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+V2ViLVNlcnZpY2UgKG9ubHkgYWNjZXNzIHZpYSBTT0FQKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzEyIiBuYW1lPSJ1cGxvYWQgZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkRvIGRpcmVjdGx5IGxvYWQgdG8gd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzEzIiBuYW1lPSJ3aGl0ZWJvYXJkIGNsb3NlIGNvbmZpcm1hdGlvbiI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byByZW1vdmUgdGhpcyB3aGl0ZWJvYXJkPyBUaGlzIGFjdGlvbiBjYW5ub3QgYmUgdW5kb25lITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE0IiBuYW1lPSJ3aGl0ZWJvYXJkIGxvYWQgV01MIj4KKyAgICA8dmFsdWU+TG9hZCB0byB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTUiIG5hbWU9InJlY29yZGluZyBmbGFnIj4KKyAgICA8dmFsdWU+RG8gbm90IGZvcmdldCBzdGFydCByZWNvcmRpbmchIE9uZSB1c2VyIHBlciByb29tIGFsd2F5cyBuZWVkcyB0byBzdGFydCBpdCB0byBoYXZlIHRoZSByZWNvcmRpbmcgYWZ0ZXJ3YXJkcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxNiIgbmFtZT0icmVjb3JkaW5nIGZsYWciPgorICAgIDx2YWx1ZT5TdGFydCBSZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxNyIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT5BcnJvdzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE4IiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPkNpcmNsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE5IiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPkxpbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyMCIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT5TcXVhcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyMSIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT5UcmlhbmdsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIyIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+VGV4dC9Ob3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjMiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5DbGlwYXJ0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI0IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+RHJhdyBGcmVlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjUiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5TZWxlY3QvTW92ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI2IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+RHJhdyBTaGFwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI3IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+Q3V0L01vdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyOCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlpvb20gSW4vT3V0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjkiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5QcmludDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMwIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+VW5kbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMxIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+VHJhc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMiIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkFkZCBHcmlkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzMiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5TaGFyZSBGaWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzQiIG5hbWU9Imljb24gc3VibWVudSI+CisgICAgPHZhbHVlPlNlbGVjdCBTaGFwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM1IiBuYW1lPSJpY29uIHN1Ym1lbnUiPgorICAgIDx2YWx1ZT5TZWxlY3QgQ2xpcGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM2IiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+Q29weTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM3IiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+Q3V0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzgiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5QYXN0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM5IiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+RGVsZXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDAiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoZSBjb21wbGV0ZSBjb250ZW50IG9uIHRoZSB3aGl0ZWJvYXJkPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQxIiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+TG9hZCBkaXJlY3RseSB0byB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDIiIG5hbWU9ImF0dGVuZGVlcyI+CisgICAgPHZhbHVlPkF0dGVuZGVlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQzIiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5BdHRlbmRlZSBNYW5hZ2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDQiIG5hbWU9ImF0ZW5kZWUgbWFuYWdlciI+CisgICAgPHZhbHVlPlByZXNlbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NSIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+UmVtb3RlIENvbnRyb2xsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDYiIG5hbWU9ImF0ZW5kZWUgbWFuYWdlciI+CisgICAgPHZhbHVlPkVqZWN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDciIG5hbWU9ImNoYXQiPgorICAgIDx2YWx1ZT5DaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDgiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPkludml0ZSBBdHRlbmRlZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0OSIgbmFtZT0iaW52aXRlIGF0dGVuZGVlIj4KKyAgICA8dmFsdWU+QnkgRW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1MCIgbmFtZT0iaW52aXRlIGF0dGVuZGVlIj4KKyAgICA8dmFsdWU+VXNlciBpcyBtb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1MSIgbmFtZT0iaW52aXRlIGF0dGVuZGVlIj4KKyAgICA8dmFsdWU+VXNlciBoYXMgd2ViY2FtIHN3aXRjaGVkIG9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTIiIG5hbWU9ImZpbGxfb3B0aW9uIj4KKyAgICA8dmFsdWU+RGVhY3RpdmF0ZSBzaGFwZSBmaWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTMiIG5hbWU9ImZpbGxfb3B0aW9uIj4KKyAgICA8dmFsdWU+QWN0aXZhdGUgc2hhcGUgZmlsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU0IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+U25hcCB0byBHcmlkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTUiIG5hbWU9ImFsbG93X3JlY29yZGluZyI+CisgICAgPHZhbHVlPkFsbG93IHJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU2IiBuYW1lPSJ3YWl0X2Zvcl9yZWNvcmRpbmciPgorICAgIDx2YWx1ZT5XYWl0IGZvciByZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NyIgbmFtZT0iaGlkZV90b3BfYmFyIj4KKyAgICA8dmFsdWU+SGlkZSB0b3BiYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1OCIgbmFtZT0iZmlsZUV4cGxvcmVyIj4KKyAgICA8dmFsdWU+UGxheSB2aWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU5IiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGUgY29udGVudCBvbiB0aGUgY3VycmVudCBzbGlkZT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2MCIgbmFtZT0iYWN0aXZpdHlfd2luZG93Ij4KKyAgICA8dmFsdWU+QWNjZXB0IGFuZCBncmFudCB1c2VyIHJpZ2h0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjEiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPkRlbnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2MiIgbmFtZT0iYWN0aXZpdHlfd2luZG93Ij4KKyAgICA8dmFsdWU+STwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYzIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT5BY3Rpdml0aWVzIGFuZCBhY3Rpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjQiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5SZW1vdmUgd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY1IiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgdGhlIG1vZGVyYXRpb24gb3IgdGhlIHJpZ2h0IHRvIGRyYXcgb24gdGhlIHdoaXRlYm9hcmQgdG8gcmVtb3ZlIHdoaXRlYm9hcmRzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY2IiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+Tm90IGFsbG93ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NyIgbmFtZT0idXNlcl9sZWZ0X2FjdF9tc2ciPgorICAgIDx2YWx1ZT5oYXMgbGVmdCB0aGUgcm9vbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2OCIgbmFtZT0iY2xpcGFydCBpY29ucyI+CisgICAgPHZhbHVlPk1hdGggaWNvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2OSIgbmFtZT0iY2xpcGFydCBpY29ucyI+CisgICAgPHZhbHVlPk5vIGNhdGVnb3J5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzAiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPkNvbG9yLVN0eWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzEiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPlF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MiIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+RG9tYWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzMiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnZpc2l0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzQiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnJlZG9yYW5nZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc1IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5tZWRpdW1zZWFncmVlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc2IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5zdGVlbGJsdWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NyIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+bGlnaHRzdGVlbGJsdWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3OCIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+Z29sZGVucmVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzkiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnNpbHZlcmdyYXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4MCIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+dXNlcmRlZmluZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4MSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+YmVzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgyIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT51cGxvYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4MyIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+bWVkaXVtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODQiIG5hbWU9Im11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NSIgbmFtZT0idW5tdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+VW5tdXRlIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NiIgbmFtZT0iZ2l2ZSBleGNsdXNpdmUgYXVkaW8iPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgb2Ygb3RoZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODciIG5hbWU9Im11dGUgc2VsZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+WW91IGFyZSBnbG9iYWxseSBtdXRlZCBieSB0aGUgbW9kZXJhdG9yLiBZb3UgY2Fubm90IHVubXV0ZSB5b3Vyc2VsZiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4OCIgbmFtZT0ibXV0ZSBzZWxmIGNvbmZpcm0gbWVzc2FnZSB0aXRsZSI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBnbG9iYWxseT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4OSIgbmFtZT0ibXV0ZSBzZWxmIGNvbmZpcm0gbWVzc2FnZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIG11dGUgeW91cnNlbGYgZ2xvYmFsbHk/IE5vIG90aGVyIHVzZXIgd2lsbCBoZWFyIHlvdSBhbnltb3JlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkwIiBuYW1lPSJtdXRlIG90aGVycyBjb25maXJtIG1lc3NhZ2UgdGl0bGUiPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgbG9jYWxseT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5MSIgbmFtZT0ibXV0ZSBvdGhlcnMgY29uZmlybSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIG11dGUgdGhpcyBtaWNyb3Bob25lPyBZb3UgY2FuIG9ubHkgbXV0ZSBpdCBsb2NhbGx5IG9uIHlvdXIgc2NyZWVuLiBJdCBoYXMgbm8gZWZmZWN0IHRvIGhvdyBvdGhlciB1c2VycyBoZWFyIHRoaXMgdXNlci4gT25seSBtb2RlcmF0b3JzIGNhbiB0dXJuIGl0IG9mZiBnbG9iYWxseSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5MiIgbmFtZT0ibXV0ZSBvdGhlcnMgY29uZmlybSBtZXNzYWdlIHRpdGxlIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIG9mZiBnbG9iYWxseT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5MyIgbmFtZT0ibXV0ZSBvdGhlcnMgbW9kZXJhdG9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gbXV0ZSB0aGlzIHVzZXIgZ2xvYmFsbHk/IE5vIG90aGVyIHVzZXIgd2lsbCBoZWFyIGhpbSBhbnltb3JlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk0IiBuYW1lPSJtdXRlIHN0YXR1cyBpY29ucyI+CisgICAgPHZhbHVlPllvdXIgc291bmQgaXMgb24uIENsaWNrIGhlcmUgdG8gc2VuZCBtb2RlcmF0b3IgbWVzc2FnZSB0byBtdXRlIHlvdXIgbWljcm9waG9uZSBnbG9iYWxseSAoaW4gdGhlIGNvbXBsZXRlIGNvbmZlcmVuY2Ugcm9vbSkgb2ZmITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk1IiBuYW1lPSJtdXRlIHN0YXR1cyBpY29ucyI+CisgICAgPHZhbHVlPllvdXIgc291bmQgaXMgb2ZmLiBDbGljayBoZXJlIHRvIHNlbmQgbW9kZXJhdG9yIG1lc3NhZ2UgdG8gdW5tdXRlIHlvdXIgbWljcm9waG9uZSBnbG9iYWxseSAoaW4gdGhlIGNvbXBsZXRlIGNvbmZlcmVuY2Ugcm9vbSkgb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTYiIG5hbWU9Im11dGUgYXBwbHkgc2VsZiBvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0aGF0IHRoZSBtb2RlcmF0b3IgbXV0ZXMgbXkgbWljcm9waG9uZSBnbG9iYWxseS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5NyIgbmFtZT0ibXV0ZSBhcHBseSBzZWxmIG9mZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0aGF0IHRoZSBtb2RlcmF0b3IgdW5tdXRlcyBteSBtaWNyb3Bob25lIGdsb2JhbGx5LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk4IiBuYW1lPSJtdXRlIGFwcGx5IG9mIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53YW50IHRoYXQgdGhlIG1vZGVyYXRvciB1bm11dGVzIGhpcy9oZXIgbWljcm9waG9uZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5OSIgbmFtZT0ibXV0ZSBhcHBseSBvZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+d2FudCB0aGF0IHRoZSBtb2RlcmF0b3IgbXV0ZXMgaGlzL2hlciBtaWNyb3Bob25lLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDAwIiBuYW1lPSJtdXRlIHN0YXR1cyBpY29ucyI+CisgICAgPHZhbHVlPlVubXV0ZSBtaWNyb3Bob25lLiBDbGljayBoZXJlIHRvIG11dGUgaGlzL2hlciBtaWNyb3Bob25lIGdsb2JhbGx5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDAxIiBuYW1lPSJtdXRlIHN0YXR1cyBpY29ucyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZS4gQ2xpY2sgaGVyZSB0byB1bm11dGUgaGlzL2hlciBtaWNyb3Bob25lIGdsb2JhbGx5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDAyIiBuYW1lPSJtdXRlIHNlbGYgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoaXMgdXNlciBpcyBnbG9iYWxseSBtdXRlZCBieSB0aGUgbW9kZXJhdG9yLiBZb3UgY2Fubm90IHVubXV0ZSBoaW0hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDMiIG5hbWU9Im11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5NdXRlIHlvdXIgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA0IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5Vbm11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDUiIG5hbWU9Im11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwNiIgbmFtZT0idW5tdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+VW5tdXRlIG1pY3JvcGhvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwNyIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA4IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5Vbm11dGUgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA5IiBuYW1lPSJtdXRlIG1vZGVyYXRvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+T25seSBtb2RlcmF0b3JzIGNhbiBtdXRlIG9yIHVubXV0ZSBhbiB1c2VyIGdsb2JhbGx5ISBUbyBtdXRlIHlvdXIgb3duIG1pY3JvcGhvbmU6IFBsZWFzZSB1c2UgdGhlIG1pY3JvcGhvbmUgaWNvbiBpbiB5b3VyIHZpZGVvIHBvZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMCIgbmFtZT0icG9sbF9uYW1lIj4KKyAgICA8dmFsdWU+UG9sbCBOYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTEiIG5hbWU9InBvbGxfbmFtZSI+CisgICAgPHZhbHVlPllvdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDEyIiBuYW1lPSJhcmNoaXZlZF9wb2xscyI+CisgICAgPHZhbHVlPkFyY2hpZXZlZCBQb2xsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDEzIiBuYW1lPSJhY3RpdmVfcG9sbCI+CisgICAgPHZhbHVlPmFjdGl2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE0IiBuYW1lPSJjaGFydF9zaW1wbGUiPgorICAgIDx2YWx1ZT5TaW1wbGUgQ2hhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNSIgbmFtZT0iY2hhcnRfcGllIj4KKyAgICA8dmFsdWU+UGllIENoYXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTYiIG5hbWU9InNpZ25fdXBfdmFsaWRhdGlvbiI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBlbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE3IiBuYW1lPSJjaGF0X25vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPk5ldyBtZXNzYWdlKHMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTgiIG5hbWU9InBvbGxfY2xvc2UiPgorICAgIDx2YWx1ZT5DbG9zZSBQb2xsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTkiIG5hbWU9InBvbGxfY2xvc2VfY29uZmlybSI+CisgICAgPHZhbHVlPkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBjbG9zZSB0aGlzIFBvbGw/IE5vIG9uZSB3aWxsIGJlIGFibGUgdG8gdm90ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIwIiBuYW1lPSJwb2xsX2RlbGV0ZSI+CisgICAgPHZhbHVlPkRlbGV0ZSBQb2xsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjEiIG5hbWU9InBvbGxfZGVsZXRlX2NvbmZpcm0iPgorICAgIDx2YWx1ZT5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gZGVsZXRlIHRoaXMgUG9sbD8gVGhlIHJlc3VsdHMgd2lsbCBiZSBkZWxldGVkIGFzIHdlbGwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjIiIG5hbWU9Imxhbmd1YWdlX2NvZGUiPgorICAgIDx2YWx1ZT5MYW5ndWFnZSBJU08gQ29kZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIzIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fcGVybWlzc2lvbiI+CisgICAgPHZhbHVlPkFsbG93L0RlbnkgcmlnaHQgdG8gZ2l2ZSBleGNsdXNpdmUgYXVkaW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjQiIG5hbWU9ImFsbG93X2V4Y2x1c2l2ZV9hdWRpb19wZXJtaXNzaW9uIj4KKyAgICA8dmFsdWU+QWxsb3cgdXNlciB0byBnaXZlIGV4Y2x1c2l2ZSBhdWRpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI1IiBuYW1lPSJkZW55X2V4Y2x1c2l2ZV9hdWRpb19wZXJtaXNzaW9uIj4KKyAgICA8dmFsdWU+RGVueSB1c2VyIHRvIGdpdmUgZXhjbHVzaXZlIGF1ZGlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjYiIG5hbWU9ImV4Y2xfYXVkaW8gYXBwbHkgc2VsZiBvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0byBnZXQgYSBwZXJtaXNzaW9uIGZvciBleGNsdXNpdmUgYXVkaW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjciIG5hbWU9ImV4Y2xfYXVkaW8gYXBwbHkgb2YgbWVzc2FnZSI+CisgICAgPHZhbHVlPndhbnQgdGhhdCB0aGUgbW9kZXJhdG9yIGdpdmVzIG1lIGEgcGVybWlzc2lvbiBmb3IgZXhjbHVzaXZlIGF1ZGlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI4IiBuYW1lPSJleGNsX2F1ZGlvIHN0YXR1cyBpY29ucyI+CisgICAgPHZhbHVlPkdpdmUgYSBwZXJtaXNzaW9uIGZvciBleGNsdXNpdmUgYXVkaW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjkiIG5hbWU9ImNhbV9yZXNvbHV0aW9uIj4KKyAgICA8dmFsdWU+Q2FtIHJlc29sdXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzMCIgbmFtZT0iY2FtX3Jlc29sdXRpb25faW5mbyI+CisgICAgPHZhbHVlPkNoYW5naW5nIHRoZSByZXNvbHV0aW9uIGFmZmVjdHMgYmFuZHdpZHRoLCBiaWdnZXIgcGljdHVyZSBuZWVkcyBtb3JlIGJhbmR3aXRoITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMxIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fZXJyb3IiPgorICAgIDx2YWx1ZT5Zb3UgZG9uJ3QgaGF2ZSB0aGUgcmlnaHQgdG8gZ2l2ZSB5b3Vyc2VsZiBvciBvdGhlcnMgZXhjbHVzaXZlIGF1ZGlvLiBZb3UgbmVlZCB0byBhcHBseSBmb3IgdGhlIHJpZ2h0IGZyb20gdGhlIG1vZGVyYXRvciBvciBhc2sgdGhlIG1vZGVyYXRvciB0byBnaXZlIHlvdSBleGNsdXNpdmUgYXVkaW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzIiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19hc2siPgorICAgIDx2YWx1ZT5JIHdvdWxkIGxpa2UgdG8gZ2V0IHRoZSByaWdodCBmb3IgZXhjbHVzaXZlIGF1ZGlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzMiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19hY3Rpb24iPgorICAgIDx2YWx1ZT5HaXZlIGV4Y2x1c2l2ZSBhdWRpbyB0byBtZSAoYWx0ZXJuYXRpdmVseSBjbGljayBvbiB5b3VyIHZpZGVvIHBvZCBvciBwcmVzcyBGMTIpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzQiIG5hbWU9Im1pY3JvIGlzIG9uIj4KKyAgICA8dmFsdWU+TWljcm9waG9uZSBpcyBvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNSIgbmFtZT0ibWljcm8gaXMgb2ZmIj4KKyAgICA8dmFsdWU+TWljcm9waG9uZSBpcyBtdXRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM2IiBuYW1lPSJoaWRlX2NoYXQiPgorICAgIDx2YWx1ZT5IaWRlIGNoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNyIgbmFtZT0iaGlkZV9hY3Rpdml0aWVzX2FuZF9hY3Rpb25zIj4KKyAgICA8dmFsdWU+SGlkZSBhY3Rpdml0aWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzgiIG5hbWU9ImhpZGVfZmlsZXNfZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5IaWRlIGZpbGVzIGV4cGxvcmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzkiIG5hbWU9ImhpZGVfYWN0aW9uc19tZW51Ij4KKyAgICA8dmFsdWU+SGlkZSBhY3Rpb25zIG1lbnU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MCIgbmFtZT0iaGlkZV9zY3JlZW5fc2hhcmluZyI+CisgICAgPHZhbHVlPkhpZGUgc2NyZWVuIHNoYXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MSIgbmFtZT0iaGlkZV93aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+SGlkZSB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDIiIG5hbWU9InNob3cgbWljcm9waG9uZSBzdGF0dXMiPgorICAgIDx2YWx1ZT5TaG93IG1pY3JvIHN0YXR1cyBpbiB2aWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQzIiBuYW1lPSJsYXlvdXRfb3B0aW9ucyI+CisgICAgPHZhbHVlPkxheW91dCBvcHRpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDQiIG5hbWU9ImNhbGVuZGFyIG5ldyBidXR0b24iPgorICAgIDx2YWx1ZT5OZXcgRXZlbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0NSIgbmFtZT0iY2FsZW5kYXIgcGFzc3dvcmQgaW5mbyB0ZXh0Ij4KKyAgICA8dmFsdWU+UGFzc3dvcmQgcHJvdGVjdGVkIGFyZSB0aGUgbGlua3MgdG8gdGhlIGNvbmZlcmVuY2UgdGhhdCBhcmUgc2VuZCB0byB0aGUgcGFydGljaXBlbnRzIHdoZW4geW91IHNhdmUgdGhlIGNhbGVuZGFyIGV2ZW50LCBub3QgdGhlIHJvb20hIFRoYXQgbWVhbnMgaWYgeW91IHNhdmUgdGhlIGV2ZW50IG11bHRpcGxlIHRpbWVzIGJ1dCB3aXRoIGRpZmZlcmVudCBwYXNzd29yZHMgZXZlcnkgcGFydGljaXBlbnQgcmVjZWl2ZXMgYSBuZXcgbGluayB0aGF0IGhhcyBhIGRpZmZlcmVudCBwYXNzd29yZC4gQnV0IG9sZCBsaW5rcyBzdGlsbCB3b3JrIG9uY2Ugc2VuZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0NiIgbmFtZT0iY2FsZW5kYXIgZWRpdCBidXR0b24iPgorICAgIDx2YWx1ZT5FZGl0IGRldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0NyIgbmFtZT0ic2lwIHNob3cgZGlhbGVyIj4KKyAgICA8dmFsdWU+U2hvdyBzaXAgZGlhbGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDgiIG5hbWU9InNpcCBjYWxsIj4KKyAgICA8dmFsdWU+Q2FsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ5IiBuYW1lPSJjYWxlbmRhciBjb250YWN0IGxpc3QiPgorICAgIDx2YWx1ZT5TaG93IGNhbGVuZGFyIGV2ZW50cyBvZiBjb250YWN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTAiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPllvdXIgaG9tZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MSIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+UGxhbiB5b3VyIG1lZXRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTIiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPldhdGNoIHJlY29yZGluZyBhbmQgaW50ZXJ2aWV3czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUzIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5DaG9vc2UgYW5kIHN0YXJ0IGEgd2ViLWNvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1NCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIHVzZXJzIGFuZCByaWdodHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1NSIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIGNvbm5lY3Rpb25zIGFuZCBraWNrIHVzZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTYiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSB1c2VyZ3JvdXBzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTciIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBjb25mZXJlbmNlIHJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTgiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBzeXN0ZW0gc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1OSIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIGxhYmVscyBhbmQgd29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYwIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgTERBUCBhbmQgQURTIGNvbmZpZ3VyYXRpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjEiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPkV4cG9ydC9JbXBvcnQgU3lzdGVtIEJhY2t1cHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPllvdSBuZWVkIG1vZGVyYXRpb24gb3IgdGhlIHJpZ2h0IHRvIGRyYXcgb24gd2hpdGVib2FyZCB0byB1cGxvYWQsIGFkZCwgZGVsZXRlIG9yIGxvYWQgZmlsZXMgYW5kIGZvbGRlcnMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjMiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5FZGl0IHRleHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2NCIgbmFtZT0ic2FsdXRhdGlvbiI+CisgICAgPHZhbHVlPlByb2Y8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2NSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5QdWJsaXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjYiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U3RhcnQgUHVibGlzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY3IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlN0b3AgUHVibGlzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY4IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkhvc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2OSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5QdWJsaXNoIEFwcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDcwIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlB1Ymxpc2ggSWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5SZWR1Y2UgdGhlIHdpZHRoIG9mIHRoZSBTaGFyaW5nU2NyZWVuIGJlZm9yZSB5b3UgdHJ5IHRvIG1vdmUgaXQgbGVmdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDcyIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHVjZSB0aGUgaGVpZ2h0IG9mIHRoZSBTaGFyaW5nU2NyZWVuIGJlZm9yZSB5b3UgdHJ5IHRvIG1vdmUgaXQgYm90dG9tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzMiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UmVkdWNlIHRoZSB4IG9mIHRoZSBTaGFyaW5nU2NyZWVuIGJlZm9yZSB5b3UgdHJ5IHRvIG1ha2UgaXQgd2lkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3NCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5SZWR1Y2UgdGhlIHkgb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbWFrZSBpdCBoaWdoZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3NSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5GaWxsIHRoZXNlIHNldHRpbmdzIHN0cmVhbSB5b3VyIHNjcmVlbiBkYXRhIHRvIDN0aCBwYXJ0eSBwcm92aWRlcnMgbGlrZSBqdXN0aW4udHY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3NiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5QbGVhc2Ugc3RhcnQgU2NyZWVuIHNoYXJpbmcgdG8gYmUgYWJsZSB0byBwdWJsaXNoIGl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzciIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+TW9kZXJhdG9yIHBlcm1pc3Npb24gcmVxdWlyZWQgdG8gc3RhcnQgcmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzgiIG5hbWU9Im5vIHJpZ2h0IGZvciBleGNsdXNpdmUgYXVkaW8iPgorICAgIDx2YWx1ZT5Zb3UgZG9uJ3QgaGF2ZSBwZXJtaXNzaW9uIHRvIGFwcGx5IGV4Y2x1c2l2ZSBhdWRpbyB0byBhbnkgcGFydGljaXBhbnQuIFlvdSBuZWVkIG1vZGVyYXRpb24gcm9sZSBvciB0aGUgcmlnaHQgZm9yIGV4Y2x1c2l2ZSBhdWRpbyB0byBtYWtlIGFueSBtaWNyb3Bob25lIGV4Y2x1c2l2ZSB0dXJuZWQgb24uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc5IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5VcGxvYWQgbmV3IGZpbGUgdG8gZmlsZSBleHBsb3JlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgwIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5PcGVuIG5ldyBkaWFsb2cgd2l0aCBzaGFyaW5nIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODEiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkFuIGV4aXN0aW5nIG1vZGVyYXRvciBtdXN0IGFwcHJvdmUgaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MiIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+QXNrIG1vZGVyYXRvciB0byBzaGFyZSB5b3VyIHdlYmNhbS9taWNybzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgzIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5HYXRoZXIgZmVlZGJhY2sgYnkgY3JlYXRpbmcgYSBwb2xsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODQiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlBhc3QgYW5kIGN1cnJlbnQgcG9sbCByZXN1bHRzIGFzIGNoYXJ0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg1IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5Wb3RlIGlmIHRoZXJlIGlzIGEgcG9sbCBmb3IgdGhpcyBjb25mZXJlbmNlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NiIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+RWRpdCBjYW0gYW5kIG1pYyBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg3IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5Db25maXJtIGFuZCBsZWF2ZSB0aGUgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg4IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5DYWxsIGV4dGVybmFsIHBlb3BsZSB2aWEgVm9JUC9TSVA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4OSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+U2VuZCBhbiBlbWFpbCB3aXRoIGEgZGlyZWN0IGxpbmsgdG8gdGhpcyByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTAiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkNoYW5nZSB5b3VyIHdoaXRlYm9hcmQgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MSIgbmFtZT0iYmFja3VwIGFkbWluIj4KKyAgICA8dmFsdWU+TWF4IHVwbG9hZCBzaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTIiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkFzayBtb2RlcmF0b3IgdG8gc2hhcmUgeW91ciB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTMiIG5hbWU9InByaXZhdGUgY2hhdCI+CisgICAgPHZhbHVlPlN0YXJ0IFByaXZhdGUgQ2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk0IiBuYW1lPSJhbGxfcHJpdmF0ZV9jaGF0Ij4KKyAgICA8dmFsdWU+QWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTUiIG5hbWU9InByaXZhdGUgY2hhdCI+CisgICAgPHZhbHVlPllvdSBjYW5ub3Qgc3RhcnQgYSBwcml2YXRlIGNoYXQgd2l0aCB5b3Vyc2VsZi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NiIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+WW91J3ZlIGFscmVhZHkgc3RhcnRlZCBhIHByaXZhdGUgY2hhdCB3aXRoIHRoaXMgcGFydGljaXBhbnQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTciIG5hbWU9InByaXZhdGUgY2hhdCI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBwcml2YXRlIGNoYXQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTgiIG5hbWU9IlNlcnZlcnMiPgorICAgIDx2YWx1ZT5TZXJ2ZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTkiIG5hbWU9IlNlcnZlcnMiPgorICAgIDx2YWx1ZT5TZXJ2ZXJzIHBhcnRpY2lwYXRpbmcgaW4gY2x1c3RlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAwIiBuYW1lPSJTZXJ2ZXIgbmFtZSI+CisgICAgPHZhbHVlPlNlcnZlciBOYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDEiIG5hbWU9IlNlcnZlciBBZGRyZXNzIj4KKyAgICA8dmFsdWU+U2VydmVyIEFkZHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMiIgbmFtZT0iU2VydmVyIGRldGFpbHMiPgorICAgIDx2YWx1ZT5TZXJ2ZXIgZGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAzIiBuYW1lPSJTZW5kIFNNUyI+CisgICAgPHZhbHVlPlNlbmQgU01TPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDQiIG5hbWU9InB1Ymxpc2hpbmdfbWVzc2FnZSI+CisgICAgPHZhbHVlPlB1Ymxpc2hpbmcuIFVzZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDUiIG5hbWU9ImNtZF9saW5lX2FkbWluIj4KKyAgICA8dmFsdWU+VG8gc2F2ZSB0aW1lIGFuZCBpbnRlcm5ldCB0cmFmZmljIHlvdSBjYW4gdXNlIGNvbW1hbmQgbGluZSBhZG1pbiB0byBiYWNrdXAvcmVzdG9yZS91cGdyYWRlOlxuIDEpIGdvIHRvIE9NIGluc3RhbGwgZGlyIChmb3IgZXguIC9vcHQvcmVkNSkgXG4gMikgc3RvcCBPTSAoZm9yIGV4LiAuL3JlZDUtc2h1dGRvd24uc2gpXG4gMykgLi9hZG1pbi5zaCAtYiAtZmlsZSB+L3RvZGF5X29tX2JhY2t1cC56aXAgKGNyZWF0ZSBiYWNrdXAgb2YgY3VycmVudCBPTSlcbiA0KSBkb3dubG9hZCBhcmNoaXZlIHdpdGggbmV3IE9NXG4gNSkgbXYgL29wdC9yZWQ1IC9vcHQucmVkNS5iYWsgKG1vdmUgd29ya2luZyB2ZXJzaW9uIG9mIE9NIGp1c3QgaW4gY2FzZSA6KSlcbiA2KSBleHRyYWN0IGRvd25sb2FkZWQgT00gdG8gdGhlIC9vcHQvcmVkNVxuIDcpIC4vYWRtaW4uc2ggLWkgLWZpbGUgfi90b2RheV9vbV9iYWNrdXAuemlwIChvciAnLi9hZG1pbi5zaCAtaSAtZmlsZSB+L3RvZGF5X29tX2JhY2t1cC56aXAgLS1kYi10eXBlIG15c3FsIC0tZGItdXNlciBvbV91c2VyIC0tZGItcGFzcyBvbV91c2VyX3Bhc3MnIGluIGNhc2Ugb2YgeW91IGFyZSB1c2luZyBub24tZGVmYXVsdCBEQiApXG4gOCkgc3RhcnQgT01cbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA2IiBuYW1lPSJwdWJsaWNfcm9vbV90b29sdGlwIj4KKyAgICA8dmFsdWU+Um9vbXMgY29tbW9uIHRvIGFsbCB1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDciIG5hbWU9InByaXZhdGVfcm9vbV90b29sdGlwIj4KKyAgICA8dmFsdWU+Um9vbXMgY29tbW9uIHRvIHRoZSBjdXJyZW50IHVzZXIgZ3JvdXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwOCIgbmFtZT0ibXlfcm9vbV90b29sdGlwIj4KKyAgICA8dmFsdWU+Um9vbXMgb2YgdGhlIGN1cnJlbnQgdXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA5IiBuYW1lPSJjcmVhdGVfbmV3X3Jvb20iPgorICAgIDx2YWx1ZT5DcmVhdGUvTW9kaWZ5IGFwcG9pbnRtZW50IHNwZWNpYWwgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTEwIiBuYW1lPSJtdWx0aXBsZV9hZGRyZXNzZXMiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIGVudGVyIG11bHRpcGxlIGFkZHJlc3NlcyBpbiB0aGUgZm9ybWF0OiBmaXJzdG5hbWUxIGxhc3RuYW1lMSAmbHQ7ZW1haWwxJmd0OywiZmlyc3RuYW1lMiBsYXN0bmFtZTIiICZsdDtlbWFpbDImZ3Q7LCdmaXJzdG5hbWUzIGxhc3RuYW1lMycgJmx0O2VtYWlsMyZndDssIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTExIiBuYW1lPSJzdHJlYW1fdm9sdW1lIj4KKyAgICA8dmFsdWU+QWRqdXN0IHN0cmVhbSB2b2x1bWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxMiIgbmFtZT0ibWljcm9waG9uZV92b2x1bWUiPgorICAgIDx2YWx1ZT5BZGp1c3QgbWljcm9waG9uZSB2b2x1bWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxMyIgbmFtZT0iY2hhdF9tb2RlcmF0ZWQiPgorICAgIDx2YWx1ZT5JcyBjaGF0IG1vZGVyYXRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE0IiBuYW1lPSJjaGF0X21vZGVyYXRlZCI+CisgICAgPHZhbHVlPkFsbG93IG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNSIgbmFtZT0iY2hhdF9vcGVuZWQiPgorICAgIDx2YWx1ZT5DaGF0IHBhbmVsIG9wZW5lZCBieSBkZWZhdWx0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTYiIG5hbWU9ImZpbGVzX29wZW5lZCI+CisgICAgPHZhbHVlPkZpbGVzIHBhbmVsIG9wZW5lZCBieSBkZWZhdWx0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTciIG5hbWU9InNlcnZlciBhZG1pbiBzZWN0aW9uIGxhc3RwaW5nIj4KKyAgICA8dmFsdWU+TGFzdCBwaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTgiIG5hbWU9InNlcnZlciBhZG1pbiBzZWN0aW9uIGxhc3RwaW5nIGluZm8iPgorICAgIDx2YWx1ZT5FdmVyeSBzbGF2ZSBzZW5kcyBhIHBpbmcgdG8gdGhlIG1hc3RlciBldmVyeSAzIHNlY29uZHMgKGNvbmZpZ3VyYWJsZSkuIFNsYXZlIGxhc3RQaW5nIG11c3QgYmUgc21hbGxlciB0aGVuIDEgbWludXRlIHNvIHRoYXQgdGhlIG1hc3RlciB1c2VzIHRoZSBzbGF2ZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxOSIgbmFtZT0ic2VydmVyIGFkbWluIHBvcnQiPgorICAgIDx2YWx1ZT5IVFRQIFBvcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyMCIgbmFtZT0ic2VydmVyIGFkbWluIHVzZXIiPgorICAgIDx2YWx1ZT5Vc2VyIChTT0FQLUFjY2Vzcyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyMSIgbmFtZT0ic2VydmVyIGFkbWluIHBhc3N3b3JkIj4KKyAgICA8dmFsdWU+UGFzc3dvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyMiIgbmFtZT0ic2VydmVyIGFkbWluIHdlYmFwcCBwYXRoIj4KKyAgICA8dmFsdWU+V2ViYXBwIHBhdGg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyMyIgbmFtZT0ic2VydmVyIGFkbWluIHByb3RvY29sIj4KKyAgICA8dmFsdWU+UHJvdG9jb2w8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyNCIgbmFtZT0ic2VydmVyIGFkbWluIHBpbmcgcnVubmluZyI+CisgICAgPHZhbHVlPlBpbmcgcnVubmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI1IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gYWN0aXZlIj4KKyAgICA8dmFsdWU+QWN0aXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjYiIG5hbWU9ImdlbmVyYXRlX2hhc2giPgorICAgIDx2YWx1ZT5HZW5lcmF0ZSBVUkw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyNyIgbmFtZT0ibmV0d29yayB0ZXN0aW5nIGxpbmsiPgorICAgIDx2YWx1ZT5OZXR3b3JrIHRlc3Rpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyOCIgbmFtZT0icm9vbV9vcHRpb25zIj4KKyAgICA8dmFsdWU+QXV0byBzZWxlY3QgaW50ZXJ2aWV3IHZpZGVvIHBvZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI5IiBuYW1lPSJmb250X3VuZGVybGluZSI+CisgICAgPHZhbHVlPlVuZGVybGluZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMwIiBuYW1lPSJmb250X3N0eWxlIj4KKyAgICA8dmFsdWU+Rm9udCBzdHlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMxIiBuYW1lPSJhbGxvd19mb250X3N0eWxlcyI+CisgICAgPHZhbHVlPkFsbG93IGZvbnQgc3R5bGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzIiIG5hbWU9ImZvbnRfY29sb3IiPgorICAgIDx2YWx1ZT5Gb250IGNvbG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzMiIG5hbWU9Imh5cGVybGluayI+CisgICAgPHZhbHVlPkh5cGVybGluazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM0IiBuYW1lPSJjb25uZWN0aW9uIGFkbWluIj4KKyAgICA8dmFsdWU+U2hvdyBzZXNzaW9uIHN0YXRpc3RpY3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNSIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbiI+CisgICAgPHZhbHVlPlNlc3Npb24gZGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM2IiBuYW1lPSJzeXN0ZW1faW1wb3J0Ij4KKyAgICA8dmFsdWU+U3lzdGVtIGltcG9ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM3IiBuYW1lPSJpbmNsdWRlX2ludG9fYmFja3VwIj4KKyAgICA8dmFsdWU+SW5jbHVkZSB1cGxvYWRlZCBmaWxlcyBhbmQgcmVjb3JkaW5ncyBpbiBiYWNrdXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzOCIgbmFtZT0icm9vbV9hZG1pbl9zaXAiPgorICAgIDx2YWx1ZT5FbmFibGUgU0lQIHRyYW5zcG9ydCBpbiB0aGUgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM5IiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fY29uZmlybSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBwcm92aWRlIHRoaXMgdXNlciBhbiBleGNsdXNpdmUgYXVkaW8/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NDAiIG5hbWU9Im5vX3RpbWV6b25lIj4KKyAgICA8dmFsdWU+UGxlYXNlIHNwZWNpZnkgeW91ciB0aW1lem9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTQ1IiBuYW1lPSJjb250ZW50X2lzX3NhdmluZyI+CisgICAgPHZhbHVlPkNvbnRlbnQgaXMgU2F2aW5nLCBQbGVhc2Ugd2FpdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKzwvbGFuZ3VhZ2U+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L2xhbmd1YWdlcy9wb3J0dWd1ZXMgYnJhemlsLnhtbCBiL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL3BvcnR1Z3VlcyBicmF6aWwueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjNDk4ZGQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L2xhbmd1YWdlcy9wb3J0dWd1ZXMgYnJhemlsLnhtbApAQCAtMCwwICsxLDQ2NTIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+CisKKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCisKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK1RoaXMgRmlsZSBpcyBhdXRvLWdlbmVyYXRlZCBieSB0aGUgTGFuZ3VhZ2VFZGl0b3IgCit0byBhZGQgbmV3IExhbmd1YWdlcyBvciBtb2RpZnkvY3VzdG9taXplIGl0IHVzZSB0aGUgTGFuZ3VhZ2VFZGl0b3IgCitzZWUgaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnL0xhbmd1YWdlRWRpdG9yLmh0bWwgZm9yIERldGFpbHMgCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIy0tPgorPGxhbmd1YWdlIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIHhtbG5zOm5vTmFtZXNwYWNlU2NoZW1hTG9jYXRpb249Imxhbmd1YWdlLnhzZCI+CisgIDxzdHJpbmcgaWQ9IjEiIG5hbWU9ImNvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT5Db25mZXLDqm5jaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMiIgbmFtZT0ibWVldGluZyI+CisgICAgPHZhbHVlPlJldW5pw6NvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMiIG5hbWU9ImNsYXNzcm9vbSI+CisgICAgPHZhbHVlPkF1ZGl0w7NyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNCIgbmFtZT0ic2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Db25maWd1cmHDp8O1ZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNSIgbmFtZT0iYmVudXR6ZXIiPgorICAgIDx2YWx1ZT5Vc3XDoXJpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2IiBuYW1lPSJhZG1pbiI+CisgICAgPHZhbHVlPkFkbWluaXN0cmHDp8OjbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3IiBuYW1lPSJzdG9wIj4KKyAgICA8dmFsdWU+UGFyYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOCIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+R3JhdmFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkiIG5hbWU9Im5vZmlsZSI+CisgICAgPHZhbHVlPk5lbmh1bSBhcnF1aXZvIGRpc3BvbsOtdmVsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwIiBuYW1lPSJyZWNvcmRieXRlYWNoZXIiPgorICAgIDx2YWx1ZT5BZG1pc3PDo28gZGlzcG9uw612ZWwgYXBlbmFzIHBhcmEgcHJvZmVzc29yZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEiIG5hbWU9ImNvbm5lY3RlZHVzZXJzIj4KKyAgICA8dmFsdWU+VXN1w6FyaW9zIGNvbmVjdGFkb3M6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyIiBuYW1lPSJzdGFydGNvbmYiPgorICAgIDx2YWx1ZT5JbmljaWFyIHVtYSBjb25mZXLDqm5jaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMiIG5hbWU9Im15bmFtZSI+CisgICAgPHZhbHVlPk1ldSBub21lOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNCIgbmFtZT0idmlkZW9jb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+VmlkZW9Db25mZXLDqm5jaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUiIG5hbWU9ImltcG9ydCI+CisgICAgPHZhbHVlPkltcG9ydGFyIGFwcmVzZW50YcOnw6NvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2IiBuYW1lPSJyZWZyZXNoZmlsZXMiPgorICAgIDx2YWx1ZT5BdHVhbGl6YXIgbGlzdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTciIG5hbWU9InRvbWFpbmZpbGUiPgorICAgIDx2YWx1ZT5Wb2x0YXIgYW8gw61uZGljZSBwcmluY2lwYWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgiIG5hbWU9Im5ld3BvbGwiPgorICAgIDx2YWx1ZT5ub3ZhIGVucXVldGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkiIG5hbWU9Im5ld3BvbGxoZWFkZXIiPgorICAgIDx2YWx1ZT5VbWEgbm92YSBlbnF1ZXRlIHBhcmEgY29uZmVyw6puY2lhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMCIgbmFtZT0icXVlc3Rpb24iPgorICAgIDx2YWx1ZT5QZXJndW50YTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEiIG5hbWU9InBvbGx0eXBlIj4KKyAgICA8dmFsdWU+VGlwbyBkZSBlbnF1ZXRlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMiIgbmFtZT0iY3JlYXRlIj4KKyAgICA8dmFsdWU+Q3JpYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMiIG5hbWU9ImluZm9tZXNzYWdlIj4KKyAgICA8dmFsdWU+SW5mbzogQ2FkYSB1c3XDoXJpbyBjb25lY3RhZG8gcmVjZWJlIHVtYSBtZW5zc2FnZW0gY29tIGEgbm92YSBlbnF1ZXRlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNCIgbmFtZT0iY3JlYXRwb2xsIj4KKyAgICA8dmFsdWU+Q3JpYXIgdW1hIGVucXVldGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUiIG5hbWU9ImNhbmNlbCI+CisgICAgPHZhbHVlPkNhbmNlbGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2IiBuYW1lPSJ5ZXNubyI+CisgICAgPHZhbHVlPlNpbS9Ow6NvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3IiBuYW1lPSJudW1lcmljIj4KKyAgICA8dmFsdWU+TnVtw6lyaWNvIDEtMTA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgiIG5hbWU9InBvbGwiPgorICAgIDx2YWx1ZT5FbnF1ZXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5IiBuYW1lPSJtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+RWxlcyBwb2RlbSBzZXIgbW9kZXJhZG9yZXMvcHJvZmVzc29yZXMgbmVzc2Egw6FyZWEgZGUgZW5xdWV0ZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAiIG5hbWU9InZvdGUiPgorICAgIDx2YWx1ZT5TZXUgdm90byBmb2kgcmVnaXN0cmFkby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEiIG5hbWU9ImFscmVhZHl2b3RlZCI+CisgICAgPHZhbHVlPlZvY8OqIGrDoSB2b3RvdSBuZXNzYSBlbnF1ZXRlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMiIgbmFtZT0idm90aW5nIj4KKyAgICA8dmFsdWU+Vm90YXIgITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMyIgbmFtZT0iYW5zd2VyIj4KKyAgICA8dmFsdWU+U3VhIHJlc3Bvc3RhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNCIgbmFtZT0ieWVzIj4KKyAgICA8dmFsdWU+U2ltPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1IiBuYW1lPSJubyI+CisgICAgPHZhbHVlPk7Do288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYiIG5hbWU9InF1ZXN0aW9ud2FudCI+CisgICAgPHZhbHVlPlF1ZXIgc2FiZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3IiBuYW1lPSJwb2xscmVzdWx0cyI+CisgICAgPHZhbHVlPlJlc3VsdGFkb3MgZGEgZW5xdWV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOCIgbmFtZT0icXVlc3Rpb24iPgorICAgIDx2YWx1ZT5QZXJndW50YTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkiIG5hbWU9InJlc3VsdHMiPgorICAgIDx2YWx1ZT5SZXN1bHRhZG9zOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MCIgbmFtZT0iYW5zd2VycyI+CisgICAgPHZhbHVlPlJlc3Bvc3Rhczo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDEiIG5hbWU9Im5vcG9sbCI+CisgICAgPHZhbHVlPk5lbmh1bWEgZW5xdWV0ZSBmb2kgaW5pY2lhZGEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyIiBuYW1lPSJ2b3RpbmdzIj4KKyAgICA8dmFsdWU+Vm90YXIhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzIiBuYW1lPSJtZWV0aW5nIj4KKyAgICA8dmFsdWU+UmV1bmnDo28gKG3DoXhpbW8gNCBwYXJ0aWNpcGFudGVzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NCIgbmFtZT0iY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPkNvbmZlcmVuY2UgKG3DoXhpbW8gNTAgcGFydGljaXBhbnRlcyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUiIG5hbWU9InR5cGUiPgorICAgIDx2YWx1ZT5UaXBvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2IiBuYW1lPSJyZW1haW5pbmdzZWF0cyI+CisgICAgPHZhbHVlPk91dHJvcyBwYXJ0aWNpcGFudGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3IiBuYW1lPSJhbHJlYWR5Y2hvc2VuIj4KKyAgICA8dmFsdWU+SsOhIGVzY29saGlkbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OCIgbmFtZT0iZW50ZXIiPgorICAgIDx2YWx1ZT5lbnRyYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkiIG5hbWU9Im1vZGxlYXZlIj4KKyAgICA8dmFsdWU+TyBtb2RlcmFyb3Igc2FpdSBkYSByZXVuacOjby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAiIG5hbWU9InN5c3RlbW1lc3NhZ2UiPgorICAgIDx2YWx1ZT5JbmZvcm1hw6fDtWVzIGRvIHNpc3RlbWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTEiIG5hbWU9ImNob3NzZWRldmljZSI+CisgICAgPHZhbHVlPkVzY29saGVyIGRpc3Bvc2l0aXZvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyIiBuYW1lPSJjaG9vc2VjYW0iPgorICAgIDx2YWx1ZT5Fc2NvbGhlciB3ZWJjYW06PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzIiBuYW1lPSJjaG9vc2VtaWMiPgorICAgIDx2YWx1ZT5Fc2NvbGhlciBtaWNyb2ZvbmU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0IiBuYW1lPSJvayI+CisgICAgPHZhbHVlPm9rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1IiBuYW1lPSJjYW5jZWwyIj4KKyAgICA8dmFsdWU+Q2FuY2VsYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYiIG5hbWU9InJlY29uZWVjdG5lZWRlZCI+CisgICAgPHZhbHVlPlZvY8OqIHByZWNpc2EgcmVjb25lY3Rhci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTciIG5hbWU9ImVkaXRzZXR1cCI+CisgICAgPHZhbHVlPkVkaXRhciBjb25maWd1cmHDp8O1ZXMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4IiBuYW1lPSJjb3Vyc2UiPgorICAgIDx2YWx1ZT5DdXJzbzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkiIG5hbWU9Imxhbmd1YWdlIj4KKyAgICA8dmFsdWU+SWRpb21hOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MCIgbmFtZT0ib2syIj4KKyAgICA8dmFsdWU+T2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEiIG5hbWU9ImNhbmNlbDMiPgorICAgIDx2YWx1ZT5DYW5jZWxhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MiIgbmFtZT0iY2xlYXJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+TGltcGFyIGEgbG91c2EuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzIiBuYW1lPSJjbGVhcndoaXRlYm9hcmRxdWVzdGlvbiI+CisgICAgPHZhbHVlPlZvY8OqIHF1ZXIgcXVlIGEgbG91c2Egc2VqYSBhcGFnYWRhIGFudGVzIHF1ZSB1bWEgZmlndXJhIHNlamEgYWRpY2lvbmFkYSA/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0IiBuYW1lPSJkb250YXNrYWdhaW4iPgorICAgIDx2YWx1ZT5Ow6NvIHBlcmd1bnRhciBkZSBub3ZvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NSIgbmFtZT0ibm8iPgorICAgIDx2YWx1ZT5Ow6NvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2IiBuYW1lPSJlZGl0c2V0dXAyIj4KKyAgICA8dmFsdWU+RWRpdGFyIGNvbmZpZ3VyYcOnw7VlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NyIgbmFtZT0ibmVlZGNvbmZpcm1hdGlvbndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5Db25maXJtYcOnw6NvIGRlIHJlcXVpc2nDp8OjbyBhbnRlcyBkZSBsaW1wYXIgYSBsb3VzYS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgiIG5hbWU9InVzZXJpbmZvIj4KKyAgICA8dmFsdWU+SW5mb3JtYcOnw7VlcyBkbyB1c3XDoXJpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OSIgbmFtZT0iY2xlYXJkcmF3YXJlYSI+CisgICAgPHZhbHVlPkxpbXBhciBhIGxvdXNhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwIiBuYW1lPSJ1bmRvIj4KKyAgICA8dmFsdWU+RGVzZmF6ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzEiIG5hbWU9InJlZG8iPgorICAgIDx2YWx1ZT5SZWZhemVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyIiBuYW1lPSJzZWxlY3RvYmplY3QiPgorICAgIDx2YWx1ZT5TZWxlY2lvbmFyIHVtIG9iamV0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MyIgbmFtZT0idGV4dCI+CisgICAgPHZhbHVlPlRleHRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0IiBuYW1lPSJwYWludCI+CisgICAgPHZhbHVlPlBpbnR1cmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUiIG5hbWU9ImRyYXdsaW5lIj4KKyAgICA8dmFsdWU+RGVzZW5oYXIgbGluaGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYiIG5hbWU9ImRyYXd1Ij4KKyAgICA8dmFsdWU+RGVzZW5oYXIgc3VibGluaGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzciIG5hbWU9InJlY3QiPgorICAgIDx2YWx1ZT5SZXTDom5ndWxvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4IiBuYW1lPSJlbGxpcHNlIj4KKyAgICA8dmFsdWU+RWxpcHNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5IiBuYW1lPSJhcnJvdyI+CisgICAgPHZhbHVlPlNldGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAiIG5hbWU9ImRlbGV0ZWNob3NlbiI+CisgICAgPHZhbHVlPmV4Y2x1aXIgw610ZW0gc2VsZWNpb25hZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEiIG5hbWU9ImFwcGxpeW1vZCI+CisgICAgPHZhbHVlPkFwbGljYXIgcGFyYSBtb2RlcmHDp8OjbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MiIgbmFtZT0iYXBwbHkiPgorICAgIDx2YWx1ZT5BcGxpY2FyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzIiBuYW1lPSJjYW5jZWwiPgorICAgIDx2YWx1ZT5mZWNoYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQiIG5hbWU9Im1vZCI+CisgICAgPHZhbHVlPlRvcm5hci1zZSBtb2RlcmFkb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUiIG5hbWU9ImNsb3NlIj4KKyAgICA8dmFsdWU+ZmVjaGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2IiBuYW1lPSJpdGFsaWMiPgorICAgIDx2YWx1ZT5pdGFsaWM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODciIG5hbWU9ImJvbGQiPgorICAgIDx2YWx1ZT5uZWdyaXRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4IiBuYW1lPSJ3YWl0aW5nIj4KKyAgICA8dmFsdWU+QUdVQVJEQU5ETzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OSIgbmFtZT0iYXBwbHlNZXNzYWdlIj4KKyAgICA8dmFsdWU+VW0gdXN1w6FyaW8gcXVlciBzZSB0b3JuYXIgbW9kZXJhZG9yOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MCIgbmFtZT0iYWNjZXB0Ij4KKyAgICA8dmFsdWU+YWNlaXRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MSIgbmFtZT0icmVqZWN0Ij4KKyAgICA8dmFsdWU+cmVqZWl0YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIiIG5hbWU9ImNhbmNlbCI+CisgICAgPHZhbHVlPmNhbmNlbGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzIiBuYW1lPSJzZW5kbW9kcmVxdWVzdG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5FbnZpYW5kbyByZXF1aXNpw6fDo28gcGFyYSBvcyBzZWd1aW50ZXMgdXN1w6FyaW9zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0IiBuYW1lPSJhY2NlcHQiPgorICAgIDx2YWx1ZT5BY2VpdG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUiIG5hbWU9InJlamVjdCI+CisgICAgPHZhbHVlPlJlamVpdGFkbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NiIgbmFtZT0iY2hhbmdlbW9kIj4KKyAgICA8dmFsdWU+TXVkYXIgbW9kZXJhZG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3IiBuYW1lPSJub25tb2RlcnJvcm1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Wb2PDqiBuw6NvIGVzdMOhIG1vZGVyYW5kbyBlc3RlIGN1cnNvITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OCIgbmFtZT0ibW9kZXJhdG9yIj4KKyAgICA8dmFsdWU+TW9kZXJhZG9yOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OSIgbmFtZT0icm9vbWZ1bGxtZXNzYWdlIj4KKyAgICA8dmFsdWU+QSBzYWxhIGVzdMOhIGNoZWlhLiBQb3IgZmF2b3IgdGVudGUgbm92YW1lbnRlIG1haXMgdGFyZGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMCIgbmFtZT0iZWxsbGlwc2UiPgorICAgIDx2YWx1ZT5FbGlwc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxIiBuYW1lPSJjbG9zZSI+CisgICAgPHZhbHVlPmZlY2hhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIiIG5hbWU9IkF1dGhFcnJvciI+CisgICAgPHZhbHVlPmVycm8gbmEgZW50cmFkYSBkZSBkYWRvczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMiIG5hbWU9Im1pbjR1c2VybmFtZSI+CisgICAgPHZhbHVlPk5vbWUgZG8gdXN1w6FyaW8gZGV2ZSB0ZXIgbm8gbcOtbmltbyA0IGxldHJhczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQiIG5hbWU9Im1pbjRwYXNzIj4KKyAgICA8dmFsdWU+c2VuaGEgZGV2ZSB0ZXIgbm8gbcOtbmltbyA0IGxldHJhczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUiIG5hbWU9InVzZXJuYW1ldGFrZW4iPgorICAgIDx2YWx1ZT5Ob21lIGRlIHVzdcOhcmlvIGrDoSBleGlzdGVudGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2IiBuYW1lPSJlbWFpbHRha2VuIj4KKyAgICA8dmFsdWU+TyBlbWFpbCBqw6EgZm9pIHJlZ2lzdHJhZG8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNyIgbmFtZT0iZW1haWx0YWtlbiI+CisgICAgPHZhbHVlPkVycm8gbm8gc2lzdGVtYSwgcG9yIGZhdm9yLCBjb250YWN0ZSBvcyBhZG1pbmlzdHJhZG9yZXMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOCIgbmFtZT0iQXV0aGxvZ2luIj4KKyAgICA8dmFsdWU+TG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5IiBuYW1lPSJBdXRodXNlciI+CisgICAgPHZhbHVlPlVzdcOhcmlvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAiIG5hbWU9IkF1dGhwYXNzIj4KKyAgICA8dmFsdWU+U2VuaGE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMSIgbmFtZT0iQXV0aGxhbmciPgorICAgIDx2YWx1ZT5pZGlvbWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyIiBuYW1lPSJBdXRocmVnIj4KKyAgICA8dmFsdWU+TG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzIiBuYW1lPSJyZWdmb3JtaGVhZCI+CisgICAgPHZhbHVlPkluc2NyZXZhLXNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNCIgbmFtZT0icmVnZm9ybXVzZXIiPgorICAgIDx2YWx1ZT5Vc3XDoXJpbzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1IiBuYW1lPSJyZWdmb3JtcGFzcyI+CisgICAgPHZhbHVlPlNlbmhhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYiIG5hbWU9InJlZ2Zvcm1yZXR5cGUiPgorICAgIDx2YWx1ZT5SZS1kaWdpdGU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNyIgbmFtZT0icmVnZm9ybWZpcnN0bmFtZSI+CisgICAgPHZhbHVlPlByaW1laXJvIG5vbWU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOCIgbmFtZT0icmVnZm9ybWxhc3RuYW1lIj4KKyAgICA8dmFsdWU+w5psdGltbyBub21lOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkiIG5hbWU9InJlZ2Zvcm1tYWlsIj4KKyAgICA8dmFsdWU+RS1NYWlsOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAiIG5hbWU9InJlZ2Zvcm1zdGF0ZSI+CisgICAgPHZhbHVlPlBhw61zOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjEiIG5hbWU9InJlZ2Zvcm1idG4xIj4KKyAgICA8dmFsdWU+UmVnaXN0cmFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMiIgbmFtZT0icmVnZm9ybWJ0bjIiPgorICAgIDx2YWx1ZT5jYW5jZWxhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMiIG5hbWU9IkF1dGhidG4yIj4KKyAgICA8dmFsdWU+UmVnaXN0cmFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+SW7DrWNpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUiIG5hbWU9InVzZXJhZG1pbiI+CisgICAgPHZhbHVlPlVzdcOhcmlvczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYiIG5hbWU9Imdyb3VwYWRtaW4iPgorICAgIDx2YWx1ZT5HcnVwb3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3IiBuYW1lPSJvcmdhZG1pbiI+CisgICAgPHZhbHVlPk9yZ2FuaXphw6fDtWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOCIgbmFtZT0iaGVhZGNvbmYiPgorICAgIDx2YWx1ZT5TYWxhcyBkZSBDb25mZXLDqm5jaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5IiBuYW1lPSJjb25mX3B1YiI+CisgICAgPHZhbHVlPnDDumJsaWNvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMCIgbmFtZT0iaGVhZF9vcmciPgorICAgIDx2YWx1ZT5vcmdhbml6YcOnw6NvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMSIgbmFtZT0iYnRuX2VudGVycm9vbSI+CisgICAgPHZhbHVlPmVudHJhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIiIG5hbWU9InVzZXJhbHRlcnNlbGZfbG9naW4iPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMiIG5hbWU9InVzZXJhbHRlcnNlbGZfcGFzcyI+CisgICAgPHZhbHVlPlNlbmhhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNCIgbmFtZT0idXNlcmFsdGVyc2VsZl9wYXNzcmV0eXBlIj4KKyAgICA8dmFsdWU+UmUtZGlnaXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNSIgbmFtZT0idXNlcmFsdGVyc2VsZl9maXJzdG5hbWUiPgorICAgIDx2YWx1ZT5QcmltZWlybyBub21lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNiIgbmFtZT0idXNlcmFsdGVyc2VsZl9sYXN0bmFtZSI+CisgICAgPHZhbHVlPsOabHRpbW8gbm9tZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzciIG5hbWU9InVzZXJhbHRlcnNlbGZfZW1haWwiPgorICAgIDx2YWx1ZT5FLU1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2JpcnRoIj4KKyAgICA8dmFsdWU+QW5pdmVyc8OhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOSIgbmFtZT0idXNlcmFsdGVyc2VsZl9zdHJlZXRubyI+CisgICAgPHZhbHVlPlJ1YS9Ocm8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MCIgbmFtZT0idXNlcmFsdGVyc2VsZl90b3duIj4KKyAgICA8dmFsdWU+Q0VQL0NpZGFkZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDEiIG5hbWU9InVzZXJhbHRlcnNlbGZfc3RhdGUiPgorICAgIDx2YWx1ZT5QYcOtczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIiIG5hbWU9InVzZXJhbHRlcnNlbGZfYWRyZXNzY29tbWVudCI+CisgICAgPHZhbHVlPkVuZGVyZcOnbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMiIG5hbWU9InVzZXJhbHRlcnNlbGZfaGVhZGVyIj4KKyAgICA8dmFsdWU+RGFkb3MgZG8gdXN1w6FyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0IiBuYW1lPSJzYXZlbWVudWJhcl9zYXZlbGFiZWwiPgorICAgIDx2YWx1ZT5zYWx2YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1IiBuYW1lPSJzYXZlbWVudWJhcl9zYXZlbGFiZWwiPgorICAgIDx2YWx1ZT5TYWx2YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2IiBuYW1lPSJhZG1pbl91c2VybGlzdF91c2VyX2lkIj4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3IiBuYW1lPSJhZG1pbl91c2VybGlzdF9sb2dpbiI+CisgICAgPHZhbHVlPmxvZ2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OCIgbmFtZT0iYWRtaW5fdXNlcmxpc3RfZmlyc3RuYW0iPgorICAgIDx2YWx1ZT5wcmltZWlybyBub21lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OSIgbmFtZT0iYWRtaW5fdXNlcmxpc3RfbGFzdG5hbWUiPgorICAgIDx2YWx1ZT7DmWx0aW1vIG5vbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwIiBuYW1lPSJ0dXJub3Zlcmxpc3RfbmV4dCI+CisgICAgPHZhbHVlPk1vc3RyYXIgcHLDs3hpbW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxIiBuYW1lPSJ0dXJub3Zlcmxpc3RfcHJlIj4KKyAgICA8dmFsdWU+bW9zdHJhciBhbnRlcmlvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIiIG5hbWU9InNhdmVjb250ZW50X2NvbmZpcm0iPgorICAgIDx2YWx1ZT5leGNsdWlyIHJlZ2lzdHJvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MyIgbmFtZT0ic2F2ZWNvbnRlbnRfY29uZmlybV9jYW5jZWxfYnRuIj4KKyAgICA8dmFsdWU+Y2FuY2VsYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU0IiBuYW1lPSJzYXZlY29udGVudF9jb25maXJtX2NvbmZpcm1fYnRuIj4KKyAgICA8dmFsdWU+ZXhjbHVpcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTUiIG5hbWU9InNhdmVtZW51YmFyX2FkZGxhYmVsIj4KKyAgICA8dmFsdWU+bm92byByZWdpc3RybzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTYiIG5hbWU9InNhdmVtZW51YmFyX3JlbG9hZGxhYmVsIj4KKyAgICA8dmFsdWU+YXR1YWxpemFyIHJlZ2lzdHJvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NyIgbmFtZT0ic2F2ZW1lbnViYXJfZGVsZXRlbGFiZWwiPgorICAgIDx2YWx1ZT5leGNsdWlyIHJlZ2lzdHJvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1OCIgbmFtZT0idXNlcmFsdGVyX2FkbWluX3N0YXR1cyI+CisgICAgPHZhbHVlPkVzdGFkbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTkiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9zdGF0dXNJdGVtIj4KKyAgICA8dmFsdWU+RGVzYWJpbGl0YWRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2MCIgbmFtZT0idXNlcmFsdGVyX2FkbWluX3N0YXR1c0l0ZW0iPgorICAgIDx2YWx1ZT5IYWJpbGl0YWRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2MSIgbmFtZT0idXNlcmFsdGVyX2FkbWluX29yZ2FuaXNhdGlvbiI+CisgICAgPHZhbHVlPm9yZ2FuaXphw6fDtWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2MiIgbmFtZT0iY2FsZW5kYXJfaWNvbmxhYmVsIj4KKyAgICA8dmFsdWU+Q0FMRU5Ew4FSSU88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYzIiBuYW1lPSJzYXZld2luZG93X2J0biI+CisgICAgPHZhbHVlPmZlY2hhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjQiIG5hbWU9Im9yZ2FuaXNhdGlvbnRhYmxlbGlzdF9pZHJvdyI+CisgICAgPHZhbHVlPklEIGRhIE9yZ2FuaXphw6fDo288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY1IiBuYW1lPSJvcmdhbmlzYXRpb250YWJsZWxpc3RfbmFtZXJvdyI+CisgICAgPHZhbHVlPm5vbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY2IiBuYW1lPSJ1c2VydmFsdWVfbGV2ZWxpZDEiPgorICAgIDx2YWx1ZT51c3XDoXJpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjciIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGlkMiI+CisgICAgPHZhbHVlPk1vZGVyYWRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjgiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGlkMyI+CisgICAgPHZhbHVlPkFkbWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2OSIgbmFtZT0idXNlcnZhbHVlX2xldmVsbGFiZWwiPgorICAgIDx2YWx1ZT5Ow612ZWwgZG8gdXN1w6FyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTcwIiBuYW1lPSJvcmd2YWx1ZV9oZWFkZXIiPgorICAgIDx2YWx1ZT5vcmdhbml6YcOnw6NvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MSIgbmFtZT0ib3JndmFsdWVfb3JnbmFtZSI+CisgICAgPHZhbHVlPm5vbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTcyIiBuYW1lPSJvcmd2YWx1ZV9vcmduYW1lIj4KKyAgICA8dmFsdWU+QWRpY2lvbmFyIG9yZ2FuaXphw6fDo288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTczIiBuYW1lPSJvcmd2YWx1ZV9vcmduYW1lIj4KKyAgICA8dmFsdWU+QWRpY2lvbmFyIG9yZ2FuaXphw6fDo288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc0IiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luIj4KKyAgICA8dmFsdWU+Y2FuY2VsYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc1IiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luIj4KKyAgICA8dmFsdWU+YWRpY2lvbmFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3NiIgbmFtZT0ib3JndmFsdWVfdXNlcndpbiI+CisgICAgPHZhbHVlPlJlbW92ZXIgb3JnYW5pemHDp8OjbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzciIG5hbWU9Im9yZ3ZhbHVlX3VzZXJsaXN0Ij4KKyAgICA8dmFsdWU+dXN1w6FyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc4IiBuYW1lPSJvcmd2YWx1ZV91c2VybGlzdGFkZCI+CisgICAgPHZhbHVlPmFkaWNpb25hciB1c3XDoXJpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzkiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJsaXN0ZGVsZXRlIj4KKyAgICA8dmFsdWU+ZXhjbHVpciB1c3XDoXJpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODAiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5oZWFkZXIiPgorICAgIDx2YWx1ZT5hZGljaW9uYXIgdXN1w6FyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgxIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luc2VhcmNoZmllbGQiPgorICAgIDx2YWx1ZT5wcm9jdXJhciB1c3XDoXJpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODIiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5zZWFyY2hidG4iPgorICAgIDx2YWx1ZT5wcm9jdXJhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODMiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5zZWFyY2hyZXN1bHQiPgorICAgIDx2YWx1ZT51c3XDoXJpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODQiIG5hbWU9ImxvZ2lud2luX2Nob29zZW9yZ2FuaXNhdGlvbiI+CisgICAgPHZhbHVlPm9yZ2FuaXphw6fDo288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg1IiBuYW1lPSJsb2dpbndpbl9jaG9vc2VvcmdhbmlzYXRpb25idG4iPgorICAgIDx2YWx1ZT5lbnRyYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg2IiBuYW1lPSJuYXZpX3Jvb21hZG1pbiI+CisgICAgPHZhbHVlPlNhbGFzIGRlIENvbmZlcsOqbmNpYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODciIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5TYWxhcyBkZSBjb25mZXLDqm5jaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg4IiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+aWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg5IiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+Tm9tZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTAiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5ww7pibGljbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTEiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5vcmdhbml6YcOnw7VlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTIiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5TYWxhcyBkZSBjb25mZXLDqm5jaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkzIiBuYW1lPSJyb29tdmFsdWVfbmFtZSI+CisgICAgPHZhbHVlPm5vbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk0IiBuYW1lPSJyb29tdmFsdWVfdHlwZSI+CisgICAgPHZhbHVlPnRpcG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk1IiBuYW1lPSJyb29tdmFsdWVfaXNwdWJsaWMiPgorICAgIDx2YWx1ZT5ww7pibGljbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTYiIG5hbWU9InJvb212YWx1ZV9jb21tZW50Ij4KKyAgICA8dmFsdWU+Y29tZW50w6FyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk3IiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVpY29uIj4KKyAgICA8dmFsdWU+c2FsdmFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5OCIgbmFtZT0id2hpdGVib2FyZF9vcGVuaWNvbiI+CisgICAgPHZhbHVlPmFicmlyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5OSIgbmFtZT0id2hpdGVib2FyZF9zYXZlYXN3aW5oZWFkZXIiPgorICAgIDx2YWx1ZT5zYWx2YXIgY29tbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDAiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2ludGV4dCI+CisgICAgPHZhbHVlPm5vbWUgZG8gYXJxdWl2bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDEiIG5hbWU9ImZpbGVzIj4KKyAgICA8dmFsdWU+bm9tZSBkbyBhcnF1aXZvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMiIgbmFtZT0id2hpdGVib2FyZF9zYXZlYXN3aW5idG4xIj4KKyAgICA8dmFsdWU+Y2FuY2VsYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAzIiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbmJ0bjIiPgorICAgIDx2YWx1ZT5zYWx2YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA0IiBuYW1lPSJycGNlcnJvcndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5lcnJvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNSIgbmFtZT0ibG9hZHdtbF9oZWFkZXIiPgorICAgIDx2YWx1ZT5jYXJyZWdhbmRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNiIgbmFtZT0ibG9hZHdtbF9tZXNzc2xvYWQiPgorICAgIDx2YWx1ZT5vYmpldG9zIGNhcnJlZ2Fkb3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA3IiBuYW1lPSJsb2Fkd21sX21lc3NzeW5jIj4KKyAgICA8dmFsdWU+c2luY3Jvbml6YW5kbyBjbGllbnRlcy4uLiBhZ3VhcmRlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDgiIG5hbWU9ImxvYWRpbWFnZV9tZXNzbG9hZCI+CisgICAgPHZhbHVlPkNhcnJlZ2FuZG8gaW1hZ2VtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwOSIgbmFtZT0ibG9hZGltYWdlX21lc3NzeW5jIj4KKyAgICA8dmFsdWU+c2luY3Jvbml6YW5kbyBjbGllbnRlcy4uLiBhZ3VhcmRlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTAiIG5hbWU9ImxvYWR3bWxfY29uZmlybWhlYWRlciI+CisgICAgPHZhbHVlPmxpbXBhciDDoXJlYSBkZSBkZXNlbmhvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMSIgbmFtZT0ibG9hZHdtbF9jb25maXJtbWVzcyI+CisgICAgPHZhbHVlPmxpbXBhciDDoXJlYSBkZSBkZXNlbmhvLCB0b2RvcyBvcyBkYWRvcyBkYSBsb3VzYSBzZXLDo28gcGVyZGlkb3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEyIiBuYW1lPSJsb2Fkd21sX2NvbmZpcm1tZXNzMiI+CisgICAgPHZhbHVlPkNvbmZpcm1lIGFudGVzIGRlIGNhcnJlZ2FyIG8gYXJxdWl2bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTMiIG5hbWU9InNlbmRfaW52aXRhdGlvbl9idG4iPgorICAgIDx2YWx1ZT5FbnZpYXIgY29udml0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTQiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5FbnZpYXIgY29udml0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTUiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+QXNzdW50bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTYiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9yZWNpcGllbnQiPgorICAgIDx2YWx1ZT5EZXN0aW5hdMOhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNyIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX21lc3NhZ2UiPgorICAgIDx2YWx1ZT5NZW5zYWdlbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTgiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9idG5fY29uZmlybSI+CisgICAgPHZhbHVlPkVudmlhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTkiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9idG5fY2FuY2VsIj4KKyAgICA8dmFsdWU+Y2FuY2VsYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIwIiBuYW1lPSJzZW5kX2NoYXRfdGV4dF9idG4iPgorICAgIDx2YWx1ZT5lbnZpYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIxIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5faGVhZGVyIj4KKyAgICA8dmFsdWU+RGFkb3MgZG8gdXN1w6FyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIyIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fc3ViamVjdCI+CisgICAgPHZhbHVlPlNldSBhcGVsaWRvIHBhcmEgZXNzYSBjb25mZXLDqm5jaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIzIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fbG9naW4iPgorICAgIDx2YWx1ZT5hcGVsaWRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNCIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2ZpcnN0bmFtZSI+CisgICAgPHZhbHVlPnByaW1laXJvIG5vbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI1IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fbGFzdG5hbWUiPgorICAgIDx2YWx1ZT7Dumx0aW1vIG5vbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI2IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fbWFpbCI+CisgICAgPHZhbHVlPmVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNyIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2xhbmciPgorICAgIDx2YWx1ZT5pZGlvbWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI4IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZW50ZXIiPgorICAgIDx2YWx1ZT5lbnRyYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI5IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZW50ZXIiPgorICAgIDx2YWx1ZT5DYXJyZWdhbmRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMCIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2VudGVyIj4KKyAgICA8dmFsdWU+Q2FycmVnYW5kbyBkYWRvcywgcG9yIGZhdm9yIGFndWFyZGUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMSIgbmFtZT0idXNlcl9yZWdpc3RlckZhbHNlUFdEIj4KKyAgICA8dmFsdWU+U2VuaGEgSW5jb3JyZXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMiIgbmFtZT0idXNlcl9yZWdpc3RlckZhbHNlUFdESGVhZGVyIj4KKyAgICA8dmFsdWU+UG9yIGZhdm9yIGRpZ2l0ZSBkdWFzIHNlbmhhcyBpZ3VhaXMgY29tIHBlbG8gbWVub3MgNiBjYXJhY3RlcmVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMyIgbmFtZT0idXNlcl9yZWdpc3Rlck1haWxFcnJvciI+CisgICAgPHZhbHVlPkVtYWlsIEluY29ycmV0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzQiIG5hbWU9InVzZXJfcmVnaXN0ZXJNYWlsRXJyb3JIZWFkZXIiPgorICAgIDx2YWx1ZT5Wb8OqIGRpZ2l0b3UgdW0gZW5kZXJlw6dvIGRlIGVtYWlsIGludsOhbGlkby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM1IiBuYW1lPSJ1c2VyX3JlZ2lzdGVyU3VjY2VzcyI+CisgICAgPHZhbHVlPlVzdcOhcmlvIHJlZ2lzdHJhZG8gY29tIHN1Y2Vzc288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM2IiBuYW1lPSJ1c2VyX3JlZ2lzdGVyU3VjY2Vzc0hlYWRlciI+CisgICAgPHZhbHVlPlN1YSBjb250YSBmb2kgY3JpYWRhLiBWb2PDqiBwb2RlIGZhemVyIG8gbG9naW4gYWdvcmEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzNyIgbmFtZT0idXNlcl9zaGFyaW5nX21lc3NhZ2UiPgorICAgIDx2YWx1ZT5Wb2PDqiBuw6NvIHBvZGUgY29tcGFydGlsaGFyIHN1YSB0ZWxhIGFnb3JhLiBBbGd1ZW0gasOhIGNvbXBhcnRpbGhvdSBhIHRlbGEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzOCIgbmFtZT0idXNlcl9zaGFyaW5nX21lc3NhZ2VIZWFkZXIiPgorICAgIDx2YWx1ZT5Db21wYXJ0aWxoYW1lbnRvIHBlcmRpZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM5IiBuYW1lPSJ1c2VyX2RvU3RhcnRTY3JlZW5WaWV3ZXIiPgorICAgIDx2YWx1ZT5Db21wYXJ0aWxoZSBzdWEgdGVsYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDAiIG5hbWU9InNjcmVlbl93YXJuQmFuZHdpZHRoIj4KKyAgICA8dmFsdWU+RmFsaGEgbmEgdHJhbnNtaXNzw6NvOiBWb2PDqiBuw6NvIGVzdMOhIGFwdG8gYSBzaW5jcm9uaXphciBhIHRlbGEuIFF1YWRyb3Mgc2Vyw6NvIHBlcmRpZG9zLiBDYXNvIGVzc2UgYXZpc28gdGVuaGEgc2lkbyBtb3N0cmFkbyBjZWRvIHZvY8OqIHBvZGUgcGVkaXIgYW8gbW9kZXJhZG9yIHBhcmEgcmVkdXppciBhIHF1YWxpZGFkZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQxIiBuYW1lPSJzY3JlZW5fdXNlcmxhYmVsIj4KKyAgICA8dmFsdWU+VGVsYSBkZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQyIiBuYW1lPSJ3aGl0ZWJvYXJkX3RhYl9wYWludCI+CisgICAgPHZhbHVlPkRlc2VuaGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0MyIgbmFtZT0id2hpdGVib2FyZF90YWJfZG9jdW1lbnQiPgorICAgIDx2YWx1ZT5Eb2N1bWVudG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ0IiBuYW1lPSJ0YWJiYXJfY2hhdGljb24iPgorICAgIDx2YWx1ZT5Db252ZXJzYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ1IiBuYW1lPSJ0YWJiYXJfZmlsZXNpY29uIj4KKyAgICA8dmFsdWU+QXJxdWl2b3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ2IiBuYW1lPSJ0YWJiYXJfcGFydGljaXBhbnRzaWNvbiI+CisgICAgPHZhbHVlPk1lbWJyb3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ3IiBuYW1lPSJzd2ZwcmVzZW50YXRpb25fbGlzdHNhdmVvcmlnIj4KKyAgICA8dmFsdWU+RG93bmxvYWQgZG8gZG9jdW1ldG8gb3JpZ2luYWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ4IiBuYW1lPSJzd2ZwcmVzZW50YXRpb25fbGlzdHNhdmVwZGYiPgorICAgIDx2YWx1ZT5Eb3dubG9hZCBkbyBwZGY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ5IiBuYW1lPSJzd2ZwcmVzZW50YXRpb25fbGlzdGxvYWRzd2YiPgorICAgIDx2YWx1ZT5DYXJyZWdhciBhcHJlc2VudGHDp8OjbyBubyBxdWFkcm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUwIiBuYW1lPSJuYXZpbWFpbl9jb25maWciPgorICAgIDx2YWx1ZT5Db25maWd1cmHDp8OjbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTEiIG5hbWU9IndoaXRlYm9hcmRfYm91bmRpbmdib3hfZHJhZyI+CisgICAgPHZhbHVlPkFycmFzdGFyIGVzc2Ugb2JqZXRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MiIgbmFtZT0id2hpdGVib2FyZF9ib3VuZGluZ2JveF9yZXNpemUiPgorICAgIDx2YWx1ZT5SZWRpbWVuc2lvbmFyIGVzc2Ugb2JqZXRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MyIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfem9vbSI+CisgICAgPHZhbHVlPiU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU0IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9zbGlkZSI+CisgICAgPHZhbHVlPmRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1NSIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfZmlyc3RzbGlkZSI+CisgICAgPHZhbHVlPklyIHBhcmEgcHJpbWVpcmEgcMOhZ2luYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTYiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3ByZXNsaWRlIj4KKyAgICA8dmFsdWU+SXIgcGFyYSBww6FnaW5hIGFudGVyaW9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1NyIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfbmV4dHNsaWRlIj4KKyAgICA8dmFsdWU+SXIgcGFyYSBhIHByw7N4aW1hIHDDoWdpbmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU4IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9sYXN0c2xpZGUiPgorICAgIDx2YWx1ZT5JciBwYXJhIGEgw7psdGltYSBww6FnaW5hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1OSIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfem9vbW1pbnVzIj4KKyAgICA8dmFsdWU+Wm9vbSAtLTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjAiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3pvb21wbHVzIj4KKyAgICA8dmFsdWU+Wm9vbSArKzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjEiIG5hbWU9InNhbHV0YXRpb25fbXIiPgorICAgIDx2YWx1ZT5Tci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYyIiBuYW1lPSJzYWx1dGF0aW9uX21pc3MiPgorICAgIDx2YWx1ZT5TcmEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MyIgbmFtZT0ibmF2aW1haW5fY29uZmFkbWluIj4KKyAgICA8dmFsdWU+Q29uZmlndXJhw6fDo288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY0IiBuYW1lPSJjb25mdGFibGVfaGVhZGVySWQiPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjUiIG5hbWU9ImNvbmZ0YWJsZV9oZWFkZXJrZXkiPgorICAgIDx2YWx1ZT5DaGF2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjYiIG5hbWU9ImNvbmZhZG1pbmZvcm1faGVhZGVyIj4KKyAgICA8dmFsdWU+Q29uZmlndXJhw6fDo288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY3IiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsa2V5Ij4KKyAgICA8dmFsdWU+Q2hhdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY4IiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsdXBkYXRlZCI+CisgICAgPHZhbHVlPsO6bHRpbWEgYXR1YWxpemHDp8OjbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjkiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWx1cGRhdGVkYnkiPgorICAgIDx2YWx1ZT5hdHVhbGl6YWRvIHBvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzAiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWxjb21tZW50Ij4KKyAgICA8dmFsdWU+Y29tZW50w6FyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjcxIiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsa2V5Ij4KKyAgICA8dmFsdWU+Y2hhdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjcyIiBuYW1lPSJ0dXJub3Zlcmxpc3RfbWF4cmVzdWx0cyI+CisgICAgPHZhbHVlPmRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MyIgbmFtZT0ib3JnYW5pc2F0aW9uX3VzZXJzaGVhZGVyIj4KKyAgICA8dmFsdWU+VXN1w6FyaW9zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NCIgbmFtZT0ib3JnYW5pc2F0aW9uX3VzZXJzaWNvbmRlbGV0ZSI+CisgICAgPHZhbHVlPmV4Y2x1aXIgdXN1w6FyaW8gZGEgT3JnYW5pemHDp8OjbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzUiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2RlbGV0ZWRoZWFkIj4KKyAgICA8dmFsdWU+ZXhjbHVpcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzYiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2FscmVhZGFkZGVkIj4KKyAgICA8dmFsdWU+RXN0ZSB1c3XDoXJpbyBqw6Egw6kgbWVtYnJvIGRlc3RhIG9yZ2FuaXphw6fDo28uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NyIgbmFtZT0iZGFzaGJvYXJkX25ld3NoZWFkZXIiPgorICAgIDx2YWx1ZT5Ob3TDrWNpYXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc4IiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rc2hlYWRlciI+CisgICAgPHZhbHVlPkxpbmtzIFLDoXBpZG9zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3OSIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua0NvbmYiPgorICAgIDx2YWx1ZT5JciBwYXJhIGNvbmZlcsOqbmNpYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODAiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtBdWRpdCI+CisgICAgPHZhbHVlPklyIHBhcmEgYXVkaXTDs3JpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODEiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtzdXBwb3J0Ij4KKyAgICA8dmFsdWU+QWp1ZGEgZSBzdXBvcnRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MiIgbmFtZT0iZGFzaGJvYXJkX3F1aWNraG9tZXBhZ2V1cmwiPgorICAgIDx2YWx1ZT5odHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MyIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbWFpbGluZ2xpc3R1cmwiPgorICAgIDx2YWx1ZT5odHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvbWFpbC1saXN0cy5odG1sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4NCIgbmFtZT0iZGFzaGJvYXJkX3JlcG9ydGJ1Z3MiPgorICAgIDx2YWx1ZT5CdWdzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODUiIG5hbWU9ImRhc2hib2FyZF9yc3NsaXN0aXRlbWxpbmt0ZXh0Ij4KKyAgICA8dmFsdWU+bWFpczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODYiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtob21lcGFnZWxhYmVsIj4KKyAgICA8dmFsdWU+V2Vic2l0ZSAoaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODciIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmttYWlsaW5nbGlzdGxhYmVsIj4KKyAgICA8dmFsdWU+UG9ydGFsIChodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvbWFpbC1saXN0cy5odG1sKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODgiIG5hbWU9ImxvZ2luX3JlbWVtYmVydXNlciI+CisgICAgPHZhbHVlPlJlbGVtYnJhciBMb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODkiIG5hbWU9Im1haW5fbmF2aSI+CisgICAgPHZhbHVlPkNvbnRlw7pkbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTAiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5NaW5oYSBIb21lIFBhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkxIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+Q2FsZW5kw6FyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkyIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+RXZlbnRvcyBBZ2VuZGFkb3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkzIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+UmV1bmnDtWVzIFDDumJsaWNhczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTQiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5SZXVuacO1ZXMgUHJpdmFkYXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk1IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+RXZlbnRvcyBQw7pibGljb3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk2IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+RXZlbnRvcyBQcml2YWRvczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTciIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5Db250ZcO6ZG8gUMO6YmxpY288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk4IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+Q29udGXDumRvIFByaXZhZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk5IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+Q29udGXDumRvIFBlc3NvYWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAwIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMSIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPk1vZGVyYcOnw6NvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMiIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPkFwbGljYXIgcGFyYSBNb2RlcmHDp8OjbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDMiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5Db25qdW50b3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA0IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+RXNjb2xoYSB1bSBhcnF1aXZvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNSIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPkNvbmZpZ3VyYcOnw7VlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDYiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5Db25maWd1cmHDp8O1ZXMgZGUgQ2FtIGUgTWljPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNyIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPkNvbmZpZ3VyYcOnw7VlcyBkYSBsb3VzYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDgiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5TYWlyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwOSIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPlZvbHRhciBwYXJhIHNhbGFzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMCIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPlNhaXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzExIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPkVzcXVlY2V1IHN1YSBzZW5oYT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEyIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlJlZGVmaW5pciBhIHNlbmhhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMyIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5Vc2FuZG8gbyBlbmRlcmXDp28gZGUgZS1tYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxNCIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5Vc2luZyBsb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTUiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+U2V1IGVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxNiIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5TZXUgbG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE3IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPkVudmlhciBlLW1haWwgY29tIHVtIGxpbmsgcGFyYSByZWRlZmluacOnw6NvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxOCIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5OZW5odW0gZW5kZXJlw6dvIGRlIGUtbWFpbCBmb2kgZW5jb250cmFkby4gVmVyaWZpcXVlIHNlIHZvY8OqIGRpZ2l0b3UgbyBlbmRlcmXDp28gZGUgZW1haWwgcXVlIHZvY8OqIHVzb3UgcGFyYSBjcmlhciBzdWEgY29udGEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxOSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5Qb3IgZmF2b3IsIGluZGlxdWUgdW0gZW5kZXJlw6dvIGRlIGUtbWFpbCBvdSB1bSBub21lIGRlIHVzdcOhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyMCIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5Ow6NvIGV4aXN0ZSB1c3XDoXJpbyBjb25lY3RhZG8gY29tIGVzdGUgbm9tZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjEiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+VW0gZW1haWwgY29udGVuZG8gdW0gbGluayBmb2kgZW52aWFkbyBhIHNldSBlbmRlcmXDp28gZGUgZW1haWwsIHBvciBmYXZvciBjb25maXJhIHN1YSBjYWl4YSBwb3N0YWwuIFNlIHZvY8OqIGFpbmRhIG7Do28gdGl2ZXIgcmVjZWJpZG8gdW0gZW1haWwsIHBvciBmYXZvciBhanVzdGUgYXMgY29uZmlndXJhw6fDtWVzIGRlIHNwYW0gZSByZS1lbnZpZSBhIGNvbmZpcm1hw6fDo28gZGUgZW1haWwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyMiIgbmFtZT0iZXJyb3J0eXBlIj4KKyAgICA8dmFsdWU+RXJybzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjMiIG5hbWU9ImVycm9ydHlwZSI+CisgICAgPHZhbHVlPk1lbnNhZ2VtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNCIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+SGFzaCBpbnbDoWxpZG8uIE5lbmh1bSB1c3XDoXJpbyBlbmNvbnRyYWRvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjUiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPlJlZGVmaW5hIHN1YSBzZW5oYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjYiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPkxvZ2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNyIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+YWx0ZXJhciBzZW5oYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjgiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPm5vdmEgc2VuaGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI5IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5yZWRpZ2l0ZSBhIHNlbmhhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzMCIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+QXMgc2VuaGFzIHF1ZSB2b2PDqiBkaWdpdG91IG7Do28gc8OjbyBpZ3VhaXMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzMSIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+NCBvdSBtYWlzIGNhcmFjdGVyZXM7IG1hacO6c2N1bGFzIGUgbWluw7pzY3VsYXMgc8OjbyBkaWZlcmVudGVzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzIiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPlNlbmhhIGNvbmZpZ3VyYWRhLiBWb2PDqiBwb2RlIGFjZXNzYXIgYWdvcmEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzMyIgbmFtZT0icnBjY2FsbGJhY2siPgorICAgIDx2YWx1ZT5PSzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzQiIG5hbWU9InJwY2dlbmVyYWxlcnJvciI+CisgICAgPHZhbHVlPkVycm8gZGVzY29uaGVjaWRvLiBQb3IgZmF2b3IgaW5mb3JtZSBpc3NvIGFvIEFkbWluaXN0cmFkb3IuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5Vc2VybmFtZSBuw6NvIGVuY29udHJhZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM2IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlNlbmhhIGludsOhbGlkYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzciIG5hbWU9ImxvZ291dCI+CisgICAgPHZhbHVlPkRlc2NvbmVjdGFkbyBjb20gc3VjZXNzbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzgiIG5hbWU9InJlZ2lzdHJhdGlvbiI+CisgICAgPHZhbHVlPkNhZGFzdHJvIGRvIGZyb250ZW5kIGRlc2FiaWxpdGFkby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM5IiBuYW1lPSJyZWdpc3RyYXRpb24iPgorICAgIDx2YWx1ZT5FbWFpbCBpbnbDoWxpZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQwIiBuYW1lPSJyZWdpc3RyYXRpb24iPgorICAgIDx2YWx1ZT5ub21lIGRlIGFycXVpdm8gZHVwbGljYWRvLCBwb3IgZmF2b3IgZXNjb2xoYSBvdXRybyBub21lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MSIgbmFtZT0iZmlsZWJyb3dzZXIiPgorICAgIDx2YWx1ZT5ub21lIGRlIGFycXVpdm8gbXVpdG8gY3VydG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQyIiBuYW1lPSJmaWxlYnJvd3NlciI+CisgICAgPHZhbHVlPk7Do28gZm9pIHBvc3PDrXZlbCBzYWx2YXIgbyBlbmRlcmXDp288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQzIiBuYW1lPSJ1c2VyYWRtaW4iPgorICAgIDx2YWx1ZT5Vc3XDoXJpbyBhZGljaW9uYWRvIG1hcyB2b2PDqiBwcmVjaXNhIGFzc29jaWFyIGVzc2UgdXN1w6FyaW8gYSB1bWEgb3JnYW5pemHDp8Ojbywgc2UgbsOjbyBlbGUgbsOjbyBlc3RhcsOhIGFwdG8gYSBzZSBhc3NvY2lhci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ0IiBuYW1lPSJhZG1pbmZvcm1zIj4KKyAgICA8dmFsdWU+Tm92byBSZWdpc3RybzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDUiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPk5lbmh1bSBjYW1wbyBlbmNvbnRyYWRvIGNvbSBlc3NlIGlkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDYiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPk5lbmh1bSB2YWxvciBlbmNvbnRyYWRvIHBhcmEgZXN0ZSBjYW1wby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ3IiBuYW1lPSJlcnJvcm1lc3NhZ2UiPgorICAgIDx2YWx1ZT5OZWNlc3PDoXJpbyBwZXJmaWwgZGUgYWRtaW5pc3RyYWRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDgiIG5hbWU9Im1haW5uYXZpIj4KKyAgICA8dmFsdWU+RWRpdG9yIGRlIGlkaW9tYXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ5IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5JZGlvbWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUwIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5DYW1wby1JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTEiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkNhbXBvLU5vbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUyIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5WYWxvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTMiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPlZhbG9yZXMgZG9zIGNhbXBvczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTQiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPk5vbWUgZG8gY2FtcG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU1IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5WYWxvciBkbyBjYW1wbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTYiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPklEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1NyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+Vm9jw6ogYXBlbmFzIGRlbGV0b3UgbyBjYW1wbyBOw4JPIG8gRmllbGQhIFZvY8OqIG7Do28gcG9kZSBleGNsdWlyIGVzc2UgRmllbGQsIHBvZGVtIGV4aXN0aXIgY2FtcG8gZW0gb3V0cm9zIGlkaW9tYXMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1OCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+Y2FtcG9pZCBpbnbDoWxpZG8uIE8gRmllbGRMYW5ndWFnZXN2YWx1ZXNfSWQgbsOjbyBwb2RlIHNlciBlbmNvbnRyYWRvIG5hIGJhc2UgZGUgZGFkb3MuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1OSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+Vm9jw6ogbsOjbyBwb2RlIGV4Y2x1aXIgZXNzZSBGaWVsZC4gVm9jw6ogcG9kZSBhcGVuYXMgZXhjbHVpciBMYWJlbHMgTsOCTyBGaWVsZHMuIE7Do28gZXhpc3RlIExhYmVsIGNhcnJlZ2FkbyBubyBtb21lbnRvLCBzZSBuZW5odW0gRmllbGQgZm9yIHNlbGVjaW9uYWRvIG91IG7Do28gZXhpc3RpciBMYWJlbCBwYXJhIGVzc2UgaWRpb21hIHBhcmEgZXNzZSBGaWVsZCBkZWZpbmlkby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYwIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5leHBvcnRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjEiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPlZvY8OqIHByZWNpc2EgZmF6ZXIgbG9naW4gbm92YW1lbnRlIHBhcmEgdmlzdWFsaXphciBhcyBtdWRhbsOnYXMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+QWRpY2lvbmFyIG5vdm8gaWRpb21hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+ZXhjbHVpciBpZGlvbWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY0IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5BZGljaW9uYXIgbm92byBpZGlvbWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY1IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5Ob21lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+YWRpY2lvbmFyIGlkaW9tYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjciIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkJhY2t1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjgiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPmlyIHBhcmEgbyBwcmltZWlybzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjkiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPmlyIHBhcmEgbyBhbnRlcmlvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzAiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPmlyIHBhcmEgbyBwcsOzeGltbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzEiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPmlyIHBhcmEgbyDDumx0aW1vPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MiIgbmFtZT0idmlkZW9ib3giPgorICAgIDx2YWx1ZT5wYWxlc3RyYXMgZG8gdXN1w6FyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzczIiBuYW1lPSJ2aWRlb2JveCI+CisgICAgPHZhbHVlPmRlc2xpZ2FyL2xpZ2FyIHNvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPlNpc3RlbWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc1IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5TdWFzIGNvbmZpZ3VyYcOnw7VlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzYiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPk9sw6EsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3NyIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+RWRpdGFyIG1ldSBwZXJmaWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc4IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5Ob3ZhcyBNZW5zYWdlbnM6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3OSIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+Tm92YSBpbWFnZW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgwIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPkRhZG9zIGRvIFVzdcOhcmlvIC0gRXhwb3J0YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgxIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPlRvZGFzIGFzIG9yZ2FuaXphw6fDtWVzIGrDoSBkZXZlbSBleGlzdGlyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODIiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+Y29tZcOnYXIgYSBleHBvcnRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODMiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+UG9yIG9yZ2FuaXphw6fDo288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg0IiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPmNvbWXDp2FyIGEgZXhwb3J0YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg1IiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPkRhZG9zIGRvIFVzdcOhcmlvIC0gSW1wb3J0YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg2IiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPmVzY29saGEgdXNlcnMueG1sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+aW1wb3J0YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg4IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5FeHBvcnRhciBwYXJhIFhNTCAtIEVzc2VzIGFycXVpdm9zIHBvZGVtIHNlciB1c2Fkb3MgcGFyYTogLSBDb250cmlidWEgY29tIG8gcHJvamV0byAtIEltcG9ydGUgZW0gb3V0cm8gc2lzdGVtYSAtIEJhY2t1cCAtIEN1c3RvbWl6YcOnw6NvIC0gQ29sb3F1ZSBubyBkaXJldMOzcmlvIGRlIGlkaW9tYXMgcGFyYSBzdWEgcHLDs3hpbWEgaW5zdGFsYcOnw6NvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4OSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+RXNjb2xoYSB1bSBhcnF1aXZvIGRlIGlkaW9tYSBwYXJhIGltcG9ydGFyLiBFc2NvbGhhIG8gaWRpb21hIGNvcnJldG8gbm8gQ29tYm9ib3ghIE7Do28gaW1wb3J0YSBvIG5vbWUgZG8gYXJxdWl2bywgZWxlIHNlcsOhIGltcG9ydGFkbyBuZXNzZSBpZGlvbWEhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5MCIgbmFtZT0iaW1wb3J0d2luZG93Ij4KKyAgICA8dmFsdWU+aW1wb3J0YXIgLSBlc2NvbGhhIG8gYXJxdWl2bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTEiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT5TYWx2YXIgY29tbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTIiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT5Ob21lOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTMiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT5Db21lbnTDoXJpbzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk0IiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+c2FsdmFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+R3JhdmHDp8O1ZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk2IiBuYW1lPSJyZWNvcmRlciI+CisgICAgPHZhbHVlPlZpenVhbGl6YWRvciBkZSBHcmF2YcOnw7VlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTciIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkdyYXZhw6fDtWVzIGRlIHNhbGFzIHDDumJsaWNhcyBlIHByaXZhZGFzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5OCIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+VXN1w6FyaW9zIDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk5IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5FbnRyb3U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMCIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMSIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+VXN1w6FyaW9zIG5lc3NhIHNhbGE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMiIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+YXR1YWxpemFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMyIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+RXNzYSBzYWxhIGVzdMOhIGNoZWlhLiBUZW50ZSBub3ZhbWVudGUgZW0gYWxndW5zIGluc3TDom50ZXMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNCIgbmFtZT0icm9vbXNMaXN0Ij4KKyAgICA8dmFsdWU+Y2xpcXVlIGVtIHVtYSBzYWxhIHBhcmEgdmVyIG9zIGRldGFsaGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNSIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+Q2hhdCBjb20gb3MgdXN1w6FyaW9zIGRlc3NhIHNhbGE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNiIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+U2FsYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA3IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5Vc3XDoXJpb3MgbmVzc2Egc2FsYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA4IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5kZXNkZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA5IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5tb3N0cmFyIGEgZ3JhdmHDp8OjbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTAiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPlRhbWFuaG86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+RGF0YTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDEyIiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5Nb2RvIEdyYXZhw6fDo28hIFZvY8OqIG7Do28gcG9kZSBtdWRhciBuZW5odW0gdmFsb3IsIGVzdGUgw6kgdW0gYXJxdWl2byBncmF2YWRvITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTMiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPk1vc3RyYXIgZXNzYSBncmF2YcOnw6NvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxNCIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+UmVwcm9kdXppciAvIFBhcmFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxNSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+Q29tZcOnYXIgZ3JhdmHDp8OjbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTYiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPnBhcmFyIGdyYXZhw6fDo288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE3IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5HcmF2YcOnw6NvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTgiIG5hbWU9InJlY29yZF9lcnJvcl9tc2ciPgorICAgIDx2YWx1ZT5Kw6EgZXhpc3RlIGFsZ3XDqW0gZ3JhdmFuZG8gbmVzc2UgbW9tZW50bzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE5IiBuYW1lPSJyZWNvcmRfbWVzc2FnZSI+CisgICAgPHZhbHVlPkdyYXZhbmRvISBQZWxvIHVzdcOhcmlvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjAiIG5hbWU9InJlY29yZF9jYW5jZWwiPgorICAgIDx2YWx1ZT5jYW5jZWxhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjEiIG5hbWU9InJlY29yZF9jYW5jYWxfdG9vbHRpcCI+CisgICAgPHZhbHVlPkdyYXZhw6fDo28gc2Vyw6EgY2FuY2VsYWRhIGUgbsOjbyBzZXLDoSBzYWx2YS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIyIiBuYW1lPSJjYW5jZWxfZGlhbG9nX3Jlc3VtZSI+CisgICAgPHZhbHVlPmNvbnRpbnVhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjMiIG5hbWU9ImNhbmNlbF9kaWFsb2dfcmVzdW1lX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5GZWNoYXIgZXNzYSBqYW5lbGEgZSBjb250aW51YXIgYSBncmF2YcOnw6NvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjQiIG5hbWU9InBhaW50dG9vbHNfZWxsaXBzZV9jb2xvciI+CisgICAgPHZhbHVlPm11ZGFyIGNvciBkYSBsaW5oYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjUiIG5hbWU9ImNvbG9ycGlja2VyX2hlYWQiPgorICAgIDx2YWx1ZT5NdWRhciBDb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI2IiBuYW1lPSJwYWludHRvb2xzX2xpbmVfZGlzYWJsZSI+CisgICAgPHZhbHVlPkRpc2FiaWxpdGFyIC8gSGFiaWxpdGFyIGNvciBkYSBsaW5oYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjciIG5hbWU9InBhaW50dG9vbHNfZmlsbF9kaXNhYmxlIj4KKyAgICA8dmFsdWU+bXVkYXIgRmlsbGNvbG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyOCIgbmFtZT0icGFpbnR0b29sc19saW5lX2Rpc2FibGUiPgorICAgIDx2YWx1ZT5EaXNhYmlsaXRhciAvIEhhYmlsaXRhciBGaWxsY29sb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI5IiBuYW1lPSJjaGFuZ2Vfd2lkdGhfYXJyb3dfZG93bl9zbGlkZXIiPgorICAgIDx2YWx1ZT5NdWRhciB0YW1hbmhvIGRhIGxpbmhhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzMCIgbmFtZT0iY2xvc2Vfc21hbGxfcG9wdXBzIj4KKyAgICA8dmFsdWU+ZmVjaGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzMSIgbmFtZT0icGFpbnRfdG9vbF9sZXR0ZXIiPgorICAgIDx2YWx1ZT5tdWRhciB0YW1hbmhvIGRhIGZvbnRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzMiIgbmFtZT0icmVjb3JkaW5nc2xpc3RfZGVsZXRlIj4KKyAgICA8dmFsdWU+ZXhjbHVpciBHcmF2YcOnw6NvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzMyIgbmFtZT0icmVjb3JkaW5nc2xpc3RfcmVjb3JkZWRCeUd1ZXN0Ij4KKyAgICA8dmFsdWU+Q29udmlkYWRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNCIgbmFtZT0icmVjb3JkaW5nc2xpc3RfcmVjb3JkZWRieSI+CisgICAgPHZhbHVlPlBvcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM1IiBuYW1lPSJyZWNvcmRpbmdzX3RhYmxlX2hlYWRfbmFtZSI+CisgICAgPHZhbHVlPk5vbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM2IiBuYW1lPSJyZWNvcmRpbmdzX3RhYmxlX2hlYWRfcm9vbSI+CisgICAgPHZhbHVlPlNhbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM3IiBuYW1lPSJyZWNvcmRpbmdzX3RhYmxlX2hlYWRfZGF0ZSI+CisgICAgPHZhbHVlPkRhdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM4IiBuYW1lPSJyZWNvcmRfc3RhcnRfY2FuY2VsIj4KKyAgICA8dmFsdWU+Y2FuY2VsYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM5IiBuYW1lPSJyZWNvcmRfc3RhcnRfc3RhcnQiPgorICAgIDx2YWx1ZT5zdGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDAiIG5hbWU9ImZpbGVzYnJvd3Nlcl90YWJsZV9oZWFkX25hbWUiPgorICAgIDx2YWx1ZT5Ob21lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MSIgbmFtZT0iZmlsZXNicm93c2VyX3RhYmxlX2hlYWRfZGF0ZSI+CisgICAgPHZhbHVlPkRhdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQyIiBuYW1lPSJjaGF0X2NsZWFyX2hpc3RvcnkiPgorICAgIDx2YWx1ZT5leGNsdWlyIFNlcnZlci1DaGF0bG9nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MyIgbmFtZT0iY2hhdF9vdmVyYWxsX2hlYWRlciI+CisgICAgPHZhbHVlPkJhdGUtcGFwbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDQiIG5hbWU9ImNoYXRfc2VuZF9idG4iPgorICAgIDx2YWx1ZT5lbnZpYXIgbWVuc2FnZW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ1IiBuYW1lPSJjaGF0X2Vtb3RfYnRuIj4KKyAgICA8dmFsdWU+RW1vdGljb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NiIgbmFtZT0iY2hhdF9lbW90X3dpbiI+CisgICAgPHZhbHVlPkVtb3RpY29uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDciIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5ncyI+CisgICAgPHZhbHVlPkVzY29saGVyIGFkYXB0YWRvcmVzIHB1YmxpY2Fkb3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ4IiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT7DgXVkaW8gZSBWw61kZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ5IiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT7DgXVkaW8gc29tZW50ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTAiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPlbDrWRlbyBzb21lbnRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1MSIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2NvbWJvIj4KKyAgICA8dmFsdWU+c2VtIMOBdWRpby9Ww61kZW8gKEltYWdlIGVzdMOhdGljYSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUyIiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfaW5mb190ZXh0Ij4KKyAgICA8dmFsdWU+TmVuaHVtIMOBdWRpby9Ww61kZW8gZG8gc2V1IFBDIHNlcsOhIHB1YmxpY2FkbywgYW8gaW52w6lzIGRpc3NvIHVtYSBmaWd1cmEgZG8gc2V1IHBlcmZpbCBzZXLDoSBtb3N0cmFkYS4gRXNjb2xoYSBlc3NhcyBjb25maWd1cmHDp8O1ZXMgc2Ugdm9jw6ogdGVtIHByb2JsZW1hcyBjb20gc3VhIGNvbmV4w6NvIG91IHVtYSBjb25leMOjbyBkZSBJbnRlcm5ldCBsZW50YS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUzIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX21vbmRheSI+CisgICAgPHZhbHVlPlNFRzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTQiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfdHVlc2RheSI+CisgICAgPHZhbHVlPlRFUjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTUiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfd2VkbmVzZGF5Ij4KKyAgICA8dmFsdWU+UVVBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NiIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV90aHVyc2RheSI+CisgICAgPHZhbHVlPlFVSTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTciIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfZnJpZGF5Ij4KKyAgICA8dmFsdWU+U0VYPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1OCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9zYXR1cmRheSI+CisgICAgPHZhbHVlPlNBQjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTkiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfc3VuZGF5Ij4KKyAgICA8dmFsdWU+RE9NPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9tb25kYXkiPgorICAgIDx2YWx1ZT5TZWd1bmRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9UdWVzZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5UZXLDp2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYyIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1dlZG5lc2RheUxhYmVsIj4KKyAgICA8dmFsdWU+UXVhcnRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MyIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9UaHVyc2RheUxhYmVsIj4KKyAgICA8dmFsdWU+UXVpbnRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9GcmlkYXlMYWJlbCI+CisgICAgPHZhbHVlPlNleHRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9TYXR1cmRheUxhYmVsIj4KKyAgICA8dmFsdWU+U2FiYWRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NiIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9TdW5kYXlMYWJlbCI+CisgICAgPHZhbHVlPkRvbWluZ288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY3IiBuYW1lPSJjYWxlbmRhcl93ZWVrbnVtYmVyX2hlYWRlciI+CisgICAgPHZhbHVlPkNTPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2OCIgbmFtZT0iY2FsZW5kYXJfd2Vla251bWJlcl9oZWFkZXJUb29sdGlwIj4KKyAgICA8dmFsdWU+Q2FsZW5kw6FyaW8gZGEgc2VtYW5hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2OSIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPkphbmVpcm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDcwIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+RmV2ZXJlaXJvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3MSIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPk1hcsOnbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzIiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5BYnJpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzMiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5NYWlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3NCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPkp1bmhvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3NSIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPkp1bGhvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3NiIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPkF1Z29zdG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc3IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+U2V0ZW1icm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc4IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+T3V0dWJybzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzkiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5Ob3ZlbWJybzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODAiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5EZXplbWJybzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODEiIG5hbWU9ImNhbGVuZGFyd2luX2hlYWRlciI+CisgICAgPHZhbHVlPkNhbGVuZMOhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4MiIgbmFtZT0icm9vbWFkbWluX2xhYmVsTnVtYmVyT2ZQYXJ0aWNpcGFudHMiPgorICAgIDx2YWx1ZT5QYXJ0aWNpcGFudGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4MyIgbmFtZT0icm9vbVZhbHVlX2FkdmFuY2VkU2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Nb3N0cmFyIGNvbmZpZ3VyYcOnw7VlcyBkZSBsYXlvdXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg0IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3ZpZGVvWCI+CisgICAgPHZhbHVlPlggfCBZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NSIgbmFtZT0icm9vbUFkbWluX2xheW91dF92aWRlb1kiPgorICAgIDx2YWx1ZT5MYXJndXJhIHwgQWx0dXJhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NiIgbmFtZT0icm9vbUFkbWluX2xheW91dCI+CisgICAgPHZhbHVlPlZpZGVvLUNvbnRhaW5lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODciIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfbW9kIj4KKyAgICA8dmFsdWU+TW9kZXJhw6fDo28tQ29udGFpbmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4OCIgbmFtZT0icm9vbUFkbWluX2xheW91dF9tb2RfcG9zIj4KKyAgICA8dmFsdWU+WDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODkiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkxvdXNhLUNvbnRhaW5lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTAiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZF9zaG93Ij4KKyAgICA8dmFsdWU+SGFiaWxpdGFkbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTEiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZF9wb3MiPgorICAgIDx2YWx1ZT5YIHwgWTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTIiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkxhcmd1cmEgfCBBbHR1cmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkzIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X2ZpbGVzIj4KKyAgICA8dmFsdWU+QXJxdWl2b3MsQ2hhdCxQYXJ0aWNpcGFudGVzIC0gQ29udGFpbmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NCIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlc19zaG93Ij4KKyAgICA8dmFsdWU+SGFiaWxpdGFkbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTUiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXNfcG9zIj4KKyAgICA8dmFsdWU+WCB8WTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTYiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXMiPgorICAgIDx2YWx1ZT5MYXJndXJhIHwgQWx0dXJhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NyIgbmFtZT0ibW9kZXJhdG9yX2dvbmVfbWVzc2FnZSI+CisgICAgPHZhbHVlPk8gbW9kZXJhZG9yIHNhaXUgZGEgc2FsYS4gTmVuaHVtIGVzdMOhIHByZXNlbnRlIG5vIG1vbWVudG8uIFZvY8OqIHBvZGUgc2UgY2FuZGlkYXRhciBwYXJhIG1vZGVyYcOnw6NvIG91IGVzcGVyYXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5OCIgbmFtZT0ibW9kZXJhdG9yX21lc3NhZ2VfZXZlbnRfbm9fbW9kIj4KKyAgICA8dmFsdWU+TsOjbyBleGlzdGUgbmVuaHVtIG1vZGVyYWRvciBuZXNzYSBzYWxhLCBtYXMgZXhpc3RlbSBhbGd1bnMgcGFydGljaXBhbnRlcy4gVm9jw6ogcG9kZSBzZSBjYW5kaWRhdGFyIGEgbW9kZXJhw6fDo28gb3UgZXNwZXJhci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk5IiBuYW1lPSJmZWVkYmFja190ZW1wbGF0ZV9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+RmVlZGJhY2sgJEFQUF9OQU1FPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwMCIgbmFtZT0iaW52aXRhdGlvbl90ZW1wbGF0ZV9oZWFkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIC0gQ29udml0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDEiIG5hbWU9Imludml0YXRpb25fdGV4dF9mcm9tIj4KKyAgICA8dmFsdWU+TWVuc2FnZW0gZG8gVXN1w6FyaW86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwMiIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X21lc3NhZ2UiPgorICAgIDx2YWx1ZT5NZW5zYWdlbTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAzIiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfY2xpY2tfdGV4dCI+CisgICAgPHZhbHVlPkNsaWNrIG5lc3RlIGxpbmsgcGFyYSBwYXJ0aWNpcGFyIGRhcyByZXVuacO1ZXM6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwNCIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X2NsaWNrX3RleHRfbGluayI+CisgICAgPHZhbHVlPkNsaXF1ZSBhcXVpIHBhcmEgZW50cmFyIG5hIHNhbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA1IiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfY2xpY2tfdGV4dF9oZWxwIj4KKyAgICA8dmFsdWU+c2Ugdm9jw6ogdGl2ZXIgcHJvYmxlbWFzIGNvbSBvIGxpbmssIHBvciBmYXZvciBjb3BpZSBlIGNvbGUgaXNzbyBubyBzZXUgYnJvd3Nlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA2IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSBJbnNjcmnDp8OjbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDciIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9oZWFkMiI+CisgICAgPHZhbHVlPlNldXMgZGFkb3M6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwOCIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X3VzZXJuYW1lIj4KKyAgICA8dmFsdWU+TG9naW46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwOSIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X3Bhc3MiPgorICAgIDx2YWx1ZT5TZW5oYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTEwIiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfbWFpbCI+CisgICAgPHZhbHVlPkVtYWlsOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTEiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9ieWUiPgorICAgIDx2YWx1ZT5WaXJ0dWFsTWVldGluZy1FcXVpcGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTEyIiBuYW1lPSJyZWdpc3Rlcl9tYWlsX3N1YmplY3QiPgorICAgIDx2YWx1ZT5WaXJ0dWFsTWVldGluZyBJbnNjcmnDp8OjbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTMiIG5hbWU9InJlc2V0X3Bhc3N3b3JkX3RlbXBsYXRlX2hlYWQiPgorICAgIDx2YWx1ZT5WaXJ0dWFsTWVldGluZyAtIFJlZGVmaW5pw6fDo28gZGUgU2VuaGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE0IiBuYW1lPSJyZXNldF9wYXNzd29yZF90ZW1wbGF0ZV90ZXN0X2xpbmsiPgorICAgIDx2YWx1ZT5DbGlxdWUgbmVzdGUgbGluayBwYXJhIGNyaWFyIHVtYSBub3ZhIHNlbmhhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTUiIG5hbWU9InJlc2V0X3Bhc3N3b3JkX3RlbXBsYXRlX3RleHQyX2xpbmsiPgorICAgIDx2YWx1ZT5DbGljayBhcXVpIHBhcmEgY3JpYXIgdW1hbm92YSBzZW5oYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTYiIG5hbWU9InJlc2V0X3Bhc3N3b3JkX3RlbXBsYXRlX3RleHQzX2xpbmsiPgorICAgIDx2YWx1ZT5zZSB2b2PDqiB0aXZlciBwcm9ibGVtYXMgY29tIG8gbGluaywgcG9yIGZhdm9yIGNvcGllIGUgY29sZSBpc3NvIGVtIHNldSBicm93c2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTciIG5hbWU9InJlc2V0X3Bhc3N3b3JkX21haWxfc3ViamVjdCI+CisgICAgPHZhbHVlPlZpcnR1YWxNZWV0aW5nIFJlZGVmaW5pw6fDo28gZGUgU2VuaGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE4IiBuYW1lPSJkYXRlUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5Qb3IgZmF2b3IgaW5mb3JtZSB1bWEgZGF0YSB2w6FsaWRhLCBwb3IgZXhlbXBsbyAyNC4xMi4yMDAxIChkZC5tbS55eXl5KTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTkiIG5hbWU9ImVtYWlsUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5Qb3IgZmF2b3IgaW5mb3JtZSB1bSBlbWFpbCB2w6FsaWRvLCBwb3IgZXhlbXBsbyBub21lQG1haWwuY29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyMCIgbmFtZT0iZmxvYXRSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPlBvciBmYXZvciBpbmZvcm1lIHVtIG7Dum1lcm8gZGUgcG9udG8gZmx1dHVhbnRlLCBwb3IgZXhlbXBsbyAxLjAwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyMSIgbmFtZT0ibnVtYmVyUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5Qb3IgZmF2b3IgaW5mb3JtZSB1bSBuw7ptZXJvIChJbnRlaXJvKSwgcG9yIGV4ZW1wbG8gMTAwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyMiIgbmFtZT0icGhvbmVSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPlBvciBmYXZvciBpbmZvcm1lIHVtIG7Dum1lcm8gZGUgdGVsZWZvbmUgdsOhbGlkbywgcG9yIGV4ZW1wbG8gKys0OSAxMjM0IDEyMzQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIzIiBuYW1lPSJ0aW1lUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5Qb3IgZmF2b3IgaW5mb3JtZSB1bSBob3LDoXJpbyB2w6FsaWRvLCBwb3IgZXhlbXBsbyAxMjoyMyAoaGg6bW0pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3ciPgorICAgIDx2YWx1ZT5Qcm90ZWdlciBjb20gc2VuaGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI1IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd19wYXNzd29yZExhYmVsIj4KKyAgICA8dmFsdWU+U2VuaGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI2IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZExhYmVsIj4KKyAgICA8dmFsdWU+UGVyw61vZG8gZGUgdmFsaWRhZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI3IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZCI+CisgICAgPHZhbHVlPkZpbmFsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyOCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWQiPgorICAgIDx2YWx1ZT5QZXLDrW9kbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjkiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkIj4KKyAgICA8dmFsdWU+VW1hIHZlejwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzAiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkRnJvbUxhYmVsIj4KKyAgICA8dmFsdWU+VmFsaWRvIGRlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzEiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkVG9MYWJlbCI+CisgICAgPHZhbHVlPlZhbGlkbyBhdMOpOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzIiIG5hbWU9Imludml0YXRpb25fd2luZG93X01haWxTdWJqZWN0Ij4KKyAgICA8dmFsdWU+Q29udml0ZSBwYXJhIG8gVmlydHVhbE1lZXRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMzIiBuYW1lPSJpbnZpdGF0aW9uX2Vycm9yIj4KKyAgICA8dmFsdWU+TmVuaHVtIGNvbnZpdGUgZGlzcG9uw612ZWwgcGFyYSBlc3NlIGPDs2RpZ288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM0IiBuYW1lPSJpbnZpdGF0aW9uX2Vycm9yIj4KKyAgICA8dmFsdWU+TyBjb252aXRlIGrDoSBmb2kgdXRpbGl6YWRvLiBFc3NlIHRpcG8gZGUgY29udml0ZSBuw6NvIHBvZGUgc2VyIHJldXRpbGl6YWRvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzUiIG5hbWU9Imludml0YXRpb25fZXJyb3IiPgorICAgIDx2YWx1ZT5Fc3NlIGPDs2RpZ28gZGUgY29udml0ZSBuw6NvIMOpIHbDoWxpZG8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzNiIgbmFtZT0iaW52aXRhdGlvbl9wYXNzIj4KKyAgICA8dmFsdWU+U2VuaGE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzNyIgbmFtZT0iaW52aXRhdGlvbl9wYXNzX2J0biI+CisgICAgPHZhbHVlPlZlcmlmaWNhciBzZW5oYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzgiIG5hbWU9Imludml0YXRpb25fcGFzc19lcnJvciI+CisgICAgPHZhbHVlPlNlbmhhIEludsOhbGlkYSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM5IiBuYW1lPSJCcm93c2VyIj4KKyAgICA8dmFsdWU+TmF2ZWdhZG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0MCIgbmFtZT0iYXVkaW9fdmlkZW8iPgorICAgIDx2YWx1ZT5TaW5jcm9uaXphciBBdWRpby9WaWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDEiIG5hbWU9ImVycm9yQ29kZV9pbnZhbGlkU2Vzc2lvbiI+CisgICAgPHZhbHVlPlNldSBsb2dpbiBlc3RhdmEgY29ycmV0bywgcG9yw6ltIHN1YSBzZXNzw6NvIGV4cGlyb3Ugb3UgbsOjbyBlc3TDoSBhdGl2YSBubyBzZXJ2aWRvci4gUG9yIGZhdm9yIGZhw6dhIGxvZ2luIG5vdmFtZW50ZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQyIiBuYW1lPSJlcnJvcmNvZGVfc2V0VXNlck9iamVjdCI+CisgICAgPHZhbHVlPk8gU2Vzc2lvbklEIG7Do28gZXN0w6EgbG9nYWRvIG91IG7Do28gdGVtIHByaXZpbMOpZ2lvcyBkZSBhZG1pbi4gTyBTT0FQIEdhdGV3YXkgcHJlY2lzYSBkZSB1bSB1c3XDoXJpbyBjb20gcHJpdmlsw6lnaW9zIGRlIGFkbWluaXN0cmFkb3IgcGFyYSBjcmlhciBub3ZvcyB1c3XDoXJpb3MuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0MyIgbmFtZT0iZXJyb3Jjb2RlX2xvZ2luQnlSZW1vdGVVc2VyIj4KKyAgICA8dmFsdWU+VGhpcyBTZXNzaW9uIGhhcyBubyBSZW1vdGV1c2VyLURhdGEgY29ubmVjdGVkLiBXZXRoZXIgeW91IGRpZCBub3QgY2FsbCB0aGUgU09BUC1HYXRld2F5IGJlZm9yZSBhY2Nlc3NpbmcgdGhlIEFwcGxpY2F0aW9uIG9yIHlvdSBhcmUgdXNuaWcgYSB3cm9uZyBTZXNzaW9uLUlEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0NCIgbmFtZT0iZGVidWdfbWVzc2FnZV9yZWNvcmRpbmciPgorICAgIDx2YWx1ZT5PIGdyYXZhZG9yIGF0dWFsbWVudGUgw6kgQmV0YSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ1IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWFZhbHVlIj4KKyAgICA8dmFsdWU+eDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDYiIG5hbWU9InByb3BlcnR5UGFuZWxYVmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPngtYXhpczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDciIG5hbWU9InByb3BlcnR5UGFuZWxZVmFsdWUiPgorICAgIDx2YWx1ZT55PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0OCIgbmFtZT0icHJvcGVydHlQYW5lbFlWYWx1ZUxhYmVsIj4KKyAgICA8dmFsdWU+eS1heGlzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0OSIgbmFtZT0icHJvcGVydHlQYW5lbFdpZHRoVmFsdWUiPgorICAgIDx2YWx1ZT53PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1MCIgbmFtZT0icHJvcGVydHlQYW5lbFdpZHRoVmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPmxhcmd1cmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUxIiBuYW1lPSJwcm9wZXJ0eVBhbmVsSGVpZ2h0VmFsdWUiPgorICAgIDx2YWx1ZT5oPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1MiIgbmFtZT0icHJvcGVydHlQYW5lbEhlaWdodFZhbHVlTGFiZWwiPgorICAgIDx2YWx1ZT5hbHR1cmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUzIiBuYW1lPSJwcm9wZXJ0eU9wYWNpdHlTbGlkZXIiPgorICAgIDx2YWx1ZT5BbHRlcmFyIHRyYW5zcGFyw6puY2lhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1NCIgbmFtZT0iYnJvd3Nlck9wZW4iPgorICAgIDx2YWx1ZT5BYnJpciBOYXZlZ2Fkb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU1IiBuYW1lPSJicm93c2VyQ2xvc2UiPgorICAgIDx2YWx1ZT5GZWNoYXIgbyBOYXZlZ2Fkb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU2IiBuYW1lPSJjb25uZWN0aW9uTG9zdE1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BIGNvbmV4w6NvIGNvbSBvIHNlcnZpZG9yIGZvaSBwZXJkaWRhLiBWb2PDqiBwcmVjaXNhIHJlaW5pY2lhciBhIGFwbGljYcOnw6NvIGUvb3UgdmVyaWZpY2FyIHN1YSBjb25leMOjbyBjb20gYSBpbnRlcm5ldC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU3IiBuYW1lPSI1NTciPgorICAgIDx2YWx1ZT5Qb250ZWlybzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTgiIG5hbWU9InN5bmMgbWVzc2FnZSBoZWFkZXIiPgorICAgIDx2YWx1ZT5TaW5jcm9uaXphbmRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1OSIgbmFtZT0iU3luY2hyb25pemluZyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2luY3Jvbml6YW5kbyB1c3XDoXJpb3MsIGFndWFyZGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MCIgbmFtZT0iZXhwb3J0VG9TVkciPgorICAgIDx2YWx1ZT4mbHQ7dSZndDtEb3dubG9hZCBjb21vIFNWRyZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYxIiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7RG93bmxvYWQgY29tbyBQTkcmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MiIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O0Rvd25sb2FkIGNvbW8gSlBHJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjMiIG5hbWU9ImV4cG9ydFRvSW1hZ2UiPgorICAgIDx2YWx1ZT4mbHQ7dSZndDtEb3dubG9hZCBjb21vIFBERiZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY0IiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7RG93bmxvYWQgY29tbyBUSUYmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2NSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkxlbWJyZXRlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjYiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5DYXRlZ29yaWE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2NyIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPlJlcGV0acOnw6NvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjgiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5ub25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2OSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkxvY2FsaXphw6fDo286PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MCIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkluaWNpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzEiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5GaW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTcyIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+VMOtdHVsbzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTczIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+Q29tZW50w6FyaW86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NCIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkNvbnZpZGFyIHBlc3NvYXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc1IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+RGnDoXJpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzYiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5NZW5zYWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc3IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+QW51YWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc4IiBuYW1lPSJhbGVydCI+CisgICAgPHZhbHVlPk8gZmltIGRvIGVuY29udHJvIG1hcmNhZG8gw6kgYW50ZXMgZG8gaW7DrWNpbyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc5IiBuYW1lPSJhbGVydCI+CisgICAgPHZhbHVlPlBvciBmYXZvciwgaW5zaXJhIHVtIHTDrXR1bG8hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MCIgbmFtZT0iNTgwIj4KKyAgICA8dmFsdWU+UlRMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MSIgbmFtZT0iNTgxIj4KKyAgICA8dmFsdWU+QXRpdmUgaXNzbyBzZSB2b2PDqiBlc2NyZXZlciBlbSB1bWEgbGluZ3VhZ2VtIGRlIGVzcXVlcmRhIHBhcmEgYSBkaXJlaXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MiIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT5QYWluZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgzIiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPkFzc2lzdGEgcmV1bmnDtWVzIG91IGV2ZW50b3MgZ3JhdmFkb3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg0IiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPk1lZXRpbmcgLSBGYcOnYSB1bWEgY29uZmVyw6puY2lhIGNvbSA0IChhdMOpIDE2KSB1c3XDoXJpb3MmbHQ7YnIvJmd0O1RvZG9zIHRlcsOjbyBhY2Vzc28gYSDDoXVkaW8gZSB2w61kZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg1IiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPkV2ZW50byAtIEZhw6dhIHVtYSBjb25mZXLDqm5jaWEgY29tIGF0w6kgMjAwIHBhcnRpY2lwYW50ZXMmbHQ7YnIvJmd0O1NvbWVudGUgbyBNb2RlcmFkb3IgdGVyw6EgYWNlc3NvIGFvIMOhdWRpbyBlIHbDrWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODYiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+Q3JpYXIgdXN1w6FyaW9zLCBzYWxhcywgb3JnYW5pemHDp8O1ZXMmbHQ7YnIvJmd0OyBhY2Vzc28gYXMgY29uZmlndXJhw6fDtWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4NyIgbmFtZT0icm9vbSBBZG1pbmlzdHJhdGlvbiByb29tY2xpZW50cyBsaXN0Ij4KKyAgICA8dmFsdWU+VXN1w6FyaW9zIG5lc3NhIHNhbGEgYWdvcmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg4IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODkiIG5hbWU9InJvb20gQWRtaW5pc3RyYXRpb24gcm9vbWNsaWVudHMgbGlzdCI+CisgICAgPHZhbHVlPkxvZ2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5MCIgbmFtZT0icm9vbSBBZG1pbmlzdHJhdGlvbiByb29tY2xpZW50cyBsaXN0Ij4KKyAgICA8dmFsdWU+RDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTEiIG5hbWU9InN3ZiBzeW5jIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DYXJyZWdhbmRvIERvY3VtZW50by4gUG9yIGZhdm9yIGFndWFyZGUgZW5xdWFudG8gdG9kb3Mgb3MgY2xpZW50ZXMgc8OjbyBzaW5jcm9uaXphZG9zLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTIiIG5hbWU9InVwbG9hZCBkaWFsb2ciPgorICAgIDx2YWx1ZT5VcGxvYWQgY29tcGxldG8sIGNvbnZlcnRlbmRvIGRvY3VtZW50by4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTMiIG5hbWU9InVwbG9hZCBkaWFsb2ciPgorICAgIDx2YWx1ZT5JbmljaWEgVXBsb2FkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NCIgbmFtZT0idXBsb2FkIGRpYWxvZyI+CisgICAgPHZhbHVlPlVwbG9hZCBlIEltcG9ydGHDp8Ojby4gUG9yIGZhdm9yLCBzZWxlY2lvbmUgdW0gYXJxdWl2byBkbyBzZXUgZGlzY28uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NSIgbmFtZT0idXBsb2FkIERpYWxvZyI+CisgICAgPHZhbHVlPkNhbmNlbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk2IiBuYW1lPSJ1cGxvYWQgRGlhbG9nIj4KKyAgICA8dmFsdWU+U2VsZWNpb25hIGFycXVpdm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk3IiBuYW1lPSJhZG1pbmlzdHJhdGlvbiBuYXZpZ2F0aW9uIj4KKyAgICA8dmFsdWU+Q29uZXjDtWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5OCIgbmFtZT0iY29uZmFkbWluIHZhbHVlIGxpc3QiPgorICAgIDx2YWx1ZT5WYWxvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTkiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5TdHJlYW1pZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDAiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDEiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5Db25lY3RhZG8gZGVzZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAyIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+U2FsYSAvIEVzY29wbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDMiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5EZXNjb25lY3RhciB1c3XDoXJpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDQiIG5hbWU9ImtpY2sgdXNlciBjb25maXJtYXRpb24gZGlhbG9nIj4KKyAgICA8dmFsdWU+RGVzY29uZWN0YXIgdXN1w6FyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA1IiBuYW1lPSJraWNrIHVzZXIgY29uZmlybWF0aW9uIGRpYWxvZyI+CisgICAgPHZhbHVlPlRlbSBjZXJ0ZXphIHF1ZSBkZXNlamEgZGVzY29uZWN0YXIgZXNzZSBjbGllbnRlIGRlc3NhIGNvbmV4w6NvPyZsdDtici8mZ3Q7IElzc28gc29tZW50ZSByZW1vdmUgbyBjbGllbnRlIGRhIHNhbGEgYXR1YWwuIE8gY2xpZW50ZSBwb2RlIHJlY29uZWN0YXItc2Ugbm92YW1lbnRlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDYiIG5hbWU9ImtpY2sgdXNlciBtZXNzYWdlIGRpYWxvZyI+CisgICAgPHZhbHVlPlN1YSBzZXNzw6NvIGZvaSB0ZXJtaW5hZGEgcG9yIHVtIEFkbWluaXN0cmFkb3Igb3UgTW9kZXJhZG9yLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDciIG5hbWU9InVzZXJhbHRlcnNlbGZfcGhvbmUiPgorICAgIDx2YWx1ZT5UZWxlZm9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDgiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPk8gdXN1w6FyaW8gw6kgbyBtb2RlcmFkb3IgZGVzdGEgc2FsYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDkiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPk8gdXN1w6FyaW8gZXN0w6EgYXV0b3JpemFkbyBhIGRlc2VuaGFyIG5hIGxvdXNhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMCIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+KFJlKSBJbmljaWUgw6F1ZGlvL3bDrWRlbyBvdSBtb2RpZmlxdWUgYXMgY29uZmlndXJhw6fDtWVzIGRlIGRpc3Bvc2l0aXZvczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTEiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPlBlcm1pdGlyIHF1ZSBlc3NlIHVzdcOhcmlvIGEgZGVzZW5oYXIgbmEgbG91c2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEyIiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5SZW1vdmVyIGEgY2FwYWNpZGFkZSBkZSBkZXNlbmhhciBuYSBsb3VzYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTMiIG5hbWU9ImNvbmZlcmVuY2VQYW5lbHMiPgorICAgIDx2YWx1ZT5Vc3XDoXJpb3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE0IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+QXJxdWl2b3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE1IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+TG91c2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE2IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+QmF0ZS1wYXBvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxNyIgbmFtZT0ib3JnYW5pemF0aW9uIGNob29zZSBpbmZvIj4KKyAgICA8dmFsdWU+U3VhIGNvbnRhIGVzdMOhIGFzc29jaWFkYSBhIHbDoXJpYXMgb3JnYW5pemHDp8O1ZXMuIFBvciBmYXZvciBlc2NvbGhhIHVtYSBwYXJhIGVzc2Egc2Vzc8Ojby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE4IiBuYW1lPSJlcnJvciBtZXNzYWdlIHJvb20gZnVsbCI+CisgICAgPHZhbHVlPkVzdGEgc2FsYSBlc3TDoSBjaGVpYSBuZXNzZSBtb21lbnRvLiBQb3IgZmF2b3IgdGVudGUgbWFpcyB0YXJkZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE5IiBuYW1lPSJyb29tdHlwZXMiPgorICAgIDx2YWx1ZT5UaXBvIGRlIHNhbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIwIiBuYW1lPSJhcHBvaW50ZWRfcm9vbSI+CisgICAgPHZhbHVlPlNhbGEgZGVzaWduYWRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyMSIgbmFtZT0ic2VydmVydGltZSI+CisgICAgPHZhbHVlPkhvcmEgZG8gc2Vydmlkb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIyIiBuYW1lPSJpbnZfcmVtaW5kZXJfdGVtcGxhdGVfaGVhZCI+CisgICAgPHZhbHVlPlZpcnR1YWxNZWV0aW5nIC0gTGVtYnJldGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIzIiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9mcm9tIj4KKyAgICA8dmFsdWU+TWVuc2FnZW0gZG8gdXN1w6FyaW86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNCIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfbWVzc2FnZSI+CisgICAgPHZhbHVlPk1lbnNhZ2VtOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjUiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2NsaWNrX3RleHQiPgorICAgIDx2YWx1ZT5DbGljayBuZXNzZSBsaW5rIHBhcmEgcGFydGljaXBhciBuYXMgcmV1bmnDtWVzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjYiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2NsaWNrX3RleHRfbGluayI+CisgICAgPHZhbHVlPkNsaWNrIGFxdWkgcGFyYSBlbnRyYXIgbmEgc2FsYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjciIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2NsaWNrX3RleHRfaGVscCI+CisgICAgPHZhbHVlPnNlIHZvY8OqIGVzdGl2ZXIgY29tIHByb2JsZW1hcyBuZXNzZSBsaW5rLCBjb3BpZSBlIGNvbGUgZXN0ZSBlbmRlcmXDp28gZW0gc2V1IG5hdmVnYWRvcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI4IiBuYW1lPSJidG5fc2VhcmNoX2ludGVybiI+CisgICAgPHZhbHVlPmJ1c2NhIGludGVybmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI5IiBuYW1lPSJidG5fc2VhcmNoX2V4dGVybiI+CisgICAgPHZhbHVlPnVzdcOhcmlvcyBleHRlcm5vczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzAiIG5hbWU9ImxibF9wcmVuYW1lIj4KKyAgICA8dmFsdWU+Tm9tZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzEiIG5hbWU9ImxibF9uYW1lIj4KKyAgICA8dmFsdWU+U29icmVub21lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzMiIgbmFtZT0ibGJsX2VtYWlsIj4KKyAgICA8dmFsdWU+RS1tYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzMyIgbmFtZT0ibG9nb3V0Q29uZmlybV90aXRsZSI+CisgICAgPHZhbHVlPkNvbmZpcm1hciBTYWlkYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzQiIG5hbWU9ImxvZ291dENvbmZpcm1fc3VyZV90b19sb2dvdXRfcXVlc3Rpb24iPgorICAgIDx2YWx1ZT5UZW0gY2VydGV6YSBxdWUgcXVlciBmYXplciBsb2dvdXQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNSIgbmFtZT0ibWFpbiBtZW51Ij4KKyAgICA8dmFsdWU+QcOnw7VlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzYiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5TYWxhIERlbW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RGVtbyBUaW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzOCIgbmFtZT0ibWVldGluZyBUaW1lciI+CisgICAgPHZhbHVlPlRlbXBvIGRlIFJldW5pw6NvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzOSIgbmFtZT0ibWVldGluZyBUaW1lciI+CisgICAgPHZhbHVlPkVzdMOhIMOpIHVtYSBzYWxhIGRlIGRlbW9uc3RyYcOnw6NvLiBQYXJhIGRlc2xpZ2FyIGVzc2UgYXZpc28gdm9jw6ogZGV2ZSBlbnRyYXIgZW0gcmV1bmnDo28gcHJpdmFkYSxvdSBjb25maWd1cmFyIHVtIHNlcnZpZG9yIHByw7NwcmlvLiBWb2PDqiBzZXLDoSBkZXNjb25lY3RhZG8gZW06PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MCIgbmFtZT0ibWVldGluZyByb29tIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+TW9kZXJhZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQxIiBuYW1lPSJtb2RlcmF0ZWQgcm9vbSB3YWl0aW5nIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Qb3IgZmF2b3IsIGFndWFyZGUgYXTDqSBxdWUgbyBtb2RlcmFkb3IgdGVuaGEgZW50cmFkbyBuYSBzYWxhLiBPIG1vZGVyYWRvciBwb2RlIHNlciB1bSBQcm9mZXNzb3IsIEFkbWluIG91IG8gY3JpYWRvciBkZXNzYSBzYWxhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDIiIG5hbWU9ImVycm9yIHBvcHVwIj4KKyAgICA8dmFsdWU+T2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQzIiBuYW1lPSJ3aW5kb3cgc2NyZWVuc2hhcmluZyI+CisgICAgPHZhbHVlPkVudHJhZGEgZG8gY29tcGFydGlsaGFtZW50byBkZSB0ZWxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0NCIgbmFtZT0id2luZG93IHNjcmVlbiBzaGFyaW5nIj4KKyAgICA8dmFsdWU+SMOhIHVtIG5vdm8gY29tcGFydGlsaGFtZW50byBkZSB0ZWxhIGRvIHVzdcOhcmlvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDUiIG5hbWU9IndpbmRvdyBzY3JlZW4gc2hhcmluZyI+CisgICAgPHZhbHVlPkluaWNpYSBjb21wYXJ0aWxoYW1lbnRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0NiIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5BZGljaW9uYSBub3ZhIHJldW5pw6NvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0NyIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5TYWxhIGRlIFJldW5pw6NvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0OCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5TYWxhIGRlIEV2ZW50bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDkiIG5hbWU9Im1haW4gbWVudSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+TW9kZXJhw6fDo288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUwIiBuYW1lPSJtZW51IG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Nb2RlcmFyIHVzdcOhcmlvczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTEiIG5hbWU9Im1lbnUgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPk1vZGVyYXIgc2FsYXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUyIiBuYW1lPSJtb2RlcmF0b3Igb3JnIj4KKyAgICA8dmFsdWU+TTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTMiIG5hbWU9ImNvbmZpcm0gbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPlZvY8OqIHF1ZXIgYWx0ZXJhciBlc3NlIHVzdcOhcmlvIHBhcmEgc2UgdG9ybmFyIHVtIG1vZGVyYWRvciBkZXNzYSBvcmdhbml6YcOnw6NvPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTQiIG5hbWU9ImVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Qb3IgZmF2b3IsIGVzY29saGEgdW1hIG9yZ2FuaXphw6fDo28gYW50ZXMgZGUgdGVudGFyIGFkaWNpb25hciB1bSB1c3XDoXJpbyBwYXJhIGVsZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU1IiBuYW1lPSJjaG9vc2UgdXNlciB3aW5kb3ciPgorICAgIDx2YWx1ZT5Pcmdhbml6YcOnw6NvIC0gTW9kZXJhZG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1NiIgbmFtZT0ibW9kZXJhdG9yIG9yZyB1c2VycyI+CisgICAgPHZhbHVlPlRlbSBjZXJ0ZXphIHF1ZSBkZXNlaGEgZXhjbHVpciBlc3NlIHVzdcOhcmlvIGRlc3NhIG9yZ2FuaXphw6fDo28/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1NyIgbmFtZT0ib3JnIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Fc3RlIHVzdcOhcmlvIMOpIG8gbW9kZXJhZG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1OCIgbmFtZT0ib3JnIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Fc3RlIHVzdcOhcmlvIG7Do28gw6kgbyBtb2RlcmFkb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU5IiBuYW1lPSJlcnJvciBtZXNzYWdlIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Wb2PDqiBkZXNlamEgcXVlIGVzc2UgdXN1w6FyaW8gbsOjbyBzZWphIG1vZGVyYWRvciBkZXNzYSBvcmdhbml6YcOnw6NvPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjAiIG5hbWU9Im1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5BZGljaW9uYSBvdSBleGx1aSB1c3XDoXJpb3Mgb3Ugc2VuaGFzIGRlbnRybyBkZSB1c2Egb3JnYW5pemHDp8OjbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjEiIG5hbWU9ImRlbGV0ZSBjb25maXJtIHF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+VGVtIGNlcnRlemEgcXVlIHF1ZXIgZXhjbHVpciBlc3NlIHJlZ2lzdHJvPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjIiIG5hbWU9ImRlbGV0ZSBjb25maXJtIHF1ZXN0aW9uIHVzZXIgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPlRlbSBjZXJ0ZXphIHF1ZSBxdWVyIGV4Y2x1aXIgZXNzZSB1c3XDoXJpbyBkYSBzdWEgb3JnYW5pemHDp8Ojbz8gVm9jw6ogaXLDoSBleGNsdWlyIHNvbWVudGUgYSBjb25leMOjbyBkbyB1c3XDoXJpbyBlbnRyZSBhIG9yZ2FuaXphw6fDo28uIFBhcmEgZXhjbHVpciBvIHVzdcOhcmlvIGRvIHNpc3RlbWEsIHbDoSBwYXJhIG8gcGFpbmVsIGRlIGFkbWluaXN0cmHDp8Ojby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYzIiBuYW1lPSJlcnJvciBtZXNzYWdlIHNlbGYgZGVsZXRpbmciPgorICAgIDx2YWx1ZT5Wb2PDqiBuw6NvIHBvZGUgZXhjbHVpciBzZXUgcHLDs3ByaW8gdXN1w6FyaW8hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NCIgbmFtZT0iZXJyb3IgbWVzc2FnZSBhdXRoIj4KKyAgICA8dmFsdWU+RXN0ZSBtw6l0b2RvIG5lY2Vzc2l0YSBkZSB1bWEgY29udGEgYWRtaW5pc3RyYXRpdmEgYSBzZXIgaW52b2NhZGEhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NSIgbmFtZT0iZXJyb3IgbWVzc2FnZSBTT0FQIj4KKyAgICA8dmFsdWU+TsOjbyBleGlzdGUgdW1hIHNlc3PDo28gYXNzb2NpYWRhIGNvbSBlc3NlIElELjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjYiIG5hbWU9ImVycm9yIG1lc3NhZ2UgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkVzdMOhIMOpIHVtYSBjb250YSBkZSBhZG1pbmlzdHJhZG9yIG91IG1vZGVyYWRvci4gVm9jw6ogcG9kZSBlZGl0YXIgZXN0YSBjb250YSBubyBwYWluZWwgZGUgYWRtaW5pc3RyYcOnw6NvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjciIG5hbWU9ImVtYWlsIHZlcmlmaWNhdGlvbiI+CisgICAgPHZhbHVlPlBhcmEgY29tcGxldGFyIHNldSByZWdpc3RybywgY2xpcXVlIG5vIGxpbmsgb3UgY29sZSBhIFVSTCBubyBzZXUgbmF2ZWdhZG9yLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjgiIG5hbWU9ImVtYWlsIHZlcmlmaWNhdGlvbiI+CisgICAgPHZhbHVlPkNsaXF1ZSBwYXJhIHZlcmlmaWNhciBzZXUgZS1tYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2OSIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPk5lbmh1bSB1c3XDoXJpbyBlbmNvbnRyYWRvIHBhcmEgZXNzZSBIYXNoLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzAiIG5hbWU9ImVycm9yTWVzc2FnZV9Vc2VyQWN0aXZhdGlvblNlcnZsZXQgW0FjdGl2YXRlVXNlcl0iPgorICAgIDx2YWx1ZT5Fc3RlIHVzdcOhcmlvIGrDoSBlc3TDoSBhdGl2YWRvITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzEiIG5hbWU9ImVycm9yTWVzc2FnZV9Vc2VyQWN0aXZhdGlvblNlcnZsZXQgW0FjdGl2YXRlVXNlcl0iPgorICAgIDx2YWx1ZT5Wb2PDqiBhdGl2b3UgY29tIHN1Y2Vzc28gc3VhIGNvbnRhITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzIiIG5hbWU9ImVycm9yTWVzc2FnZV9Vc2VyQWN0aXZhdGlvblNlcnZsZXQgW0FjdGl2YXRlVXNlcl0iPgorICAgIDx2YWx1ZT5Mb2dhciBhZ29yYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzMiIG5hbWU9ImxvZ2luRXJyb3JNZXNzYWdlID0gdXNlciB3YXMgbm90IGFjdGl2YXRlZCI+CisgICAgPHZhbHVlPlN1YSBjb250YSBuw6NvIGVzdMOhIGF0aXZhLiBVc2UgbyBsaW5rIGZvcm5lY2lkbyBxdWUgZm9pIGVudmlhZG8gcGFyYSBzZXUgZS1tYWlsIGR1cmFudGUgbyBwcm9jZXNzbyBkZSByZWdpc3Ryby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc0IiBuYW1lPSJyZWdpc3RlciB2ZXJpZmljYXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkNhZGFzdHJvIGVmZXR1YWRvIGNvbSBzdWNlc3NvLiBFbnZpYXJlbW9zIHVtIGUtbWFpbCBjb20gdW0gY8OzZGlnbyBkZSB2ZXJpZmljYcOnw6NvLiBQb3IgZmF2b3IsIHZlcmlmaXF1ZSBzZXUgZS1tYWlsLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzUiIG5hbWU9InBhcnRpY2lwYW50cyBwYW5lbCI+CisgICAgPHZhbHVlPlJlbW92ZSByZWdyYXMgZGUgbW9kZXJhw6fDo28gcGFyYSBlc3NlIHVzdcOhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3NiIgbmFtZT0icGFydGljaXBhbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+RMOhIGRpcmVpdG9zIGRlIG1vZGVyYcOnw6NvIHBhcmEgZXNzZSB1c3XDoXJpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzciIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlVzdcOhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3OCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QWNlc3NvIGEgbG91c2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc5IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Nb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgwIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Nb2RlcmHDp8OjbzogRXNjb2xoYSB1bSB1c3XDoXJpbyBkYSBsaXN0YSBwYXJhIGNvbmNlZGVyIGFjZXNzbyBhIGxvdXNhLCBtb2RlcmHDp8OjbyBvdSB2aWRlby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgxIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Fc3NlIHVzdcOhcmlvIGrDoSDDqSBtb2RlcmFkb3IsIGVudMOjbyBlbGUgdGVtIGrDoSB0ZW0gZGlyZWl0b3MgZGUgZGVzZW5oYXIgbmEgbG91c2EuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MiIgbmFtZT0iZXZlbnQgdXNlciBsaXN0IGVycm9yIj4KKyAgICA8dmFsdWU+RXNzZSDDqSB2b2PDqiEgTsOjbyDDqSBwb3Nzw612ZWwgcmVtb3ZlciBzZXUgcHLDs3ByaW8gZGlyZWl0byBkZSBtb2RlcmFkb3IuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MyIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+UGVybWl0ZSBlc3NlIHVzdcOhcmlvIHB1YmxpY2FyIHNldSBBdWRpbyAvIFZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4NCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+UmVtb3ZlIMOhZGlvL1bDrWRlbyBkZXNzZSB1c3XDoXJpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODUiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkV1IHRlbmhvIHVtYSBwZXJndW50YS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg2IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Hb3N0YXJpYSBkZSBkZXNlbmhhciBuYSBsb3VzYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODciIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkdvc3RhcmlhIGRlIGNvbXBhcnRpbGhhciBtZXUgw6F1ZGlvL3bDrWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODgiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlZvY8OqIMOpIG8gbW9kZXJhZG9yIGRlc3NhIHNhbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg5IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Wb2PDqiBlc3TDoSBhdXRvcml6YWRvIGEgZGVzZW5oYXIgbmEgbG91c2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkwIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Wb2PDqiBlc3TDoSBhdXRvcml6YWRvIGEgY29tcGFydGlsaGFyIHNldSDDoXVkaW8vdsOtZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5MSIgbmFtZT0iZXJyb3J0eXBlIj4KKyAgICA8dmFsdWU+TWVuc2FnZW0gZG8gbW9kZXJhZG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5MiIgbmFtZT0iYXBwbHkgZm9yIG1vZCBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TyB1c3XDoXJpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTMiIG5hbWU9ImFwcGx5IGZvciBtb2QgbWVzc2FnZSI+CisgICAgPHZhbHVlPmdvc3RhcmlhIGRlIGZhemVyIHVtYSBwZXJndW50YS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk0IiBuYW1lPSJhcHBseSBmb3Igd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPmdvc3RhcmlhIGRlIGRlc2VuaGFyIG5hIGxvdXNhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTUiIG5hbWU9IjY5NSI+CisgICAgPHZhbHVlPmdvc3RhcmlhIGRlIGNvbXBhcnRpbGhhciBtZXUgw6F1ZGlvIC8gdsOtZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5NiIgbmFtZT0ibW9kZXJhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Vm9jw6ogdGVtIHF1ZSBhZ3VhcmRhciBlbnF1YW50byBvIG1vZGVyYWRvciBlbnRyYSBuYSBzYWxhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTciIG5hbWU9ImNhbGVuZGFyIGJ1dHRvbiI+CisgICAgPHZhbHVlPkNhbmNlbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk4IiBuYW1lPSJjYWxlbmRhciBidXR0b24iPgorICAgIDx2YWx1ZT5TYWx2YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTkiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPkRpYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDAiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPk3DqnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAxIiBuYW1lPSJjYWxlbmRhciBjb21wb25lbnQiPgorICAgIDx2YWx1ZT5Bbm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAyIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+VXBsb2FkIGRlIGFycXVpdm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAzIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+QWRpY2lvbmEgcGFzdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA0IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+QXR1YWxpemE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA1IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+TGl4ZWlyYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDYiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5NZXVzIEFycXVpdm9zIChIb21lIERyaXZlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDciIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5BcnF1aXZvcyBkYSBzYWxhIChQdWJsaWMgRHJpdmUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwOCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkFkaWNpb25hIGFycXVpdm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA5IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+QWRpY2lvbmEgcGFzdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzEwIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+RGVsZXRhIHBhc3RhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMSIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkVkaXRhIE5vbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzEyIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+Tm92YSBwYXN0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTMiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5UZW0gY2VydGV6YSBxdWUgcXVlciBleGNsdWlyIGVzc2UgaXRlbT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE0IiBuYW1lPSJ1c2VyIGFkbWluIj4KKyAgICA8dmFsdWU+QnVzY2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE1IiBuYW1lPSJ1c2VyIGFkbWluIj4KKyAgICA8dmFsdWU+QnVzY2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE2IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+QWJyZSBkb2N1bWVudG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE3IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+TW9zdHJhIHRvZG9zIG9zIGFycXVpdm9zIChUcmVlIFZpZXcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxOCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkZlY2hhIERvY3VtZW50bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTkiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5EZWxldGEgYXJxdWl2bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjAiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Wb2PDqiBuw6NvIGVzdMOhIGF1dG9yaXphZG8gYSBkZXNlbmhhciBuYWRhIG5hIGxvdXNhLiBWb2PDqiBwcmVjaXNhIHRvcm5hci1zZSBtb2RlcmFkb3Igb3UgY29uc2VndWlyIG8gZGlyZWl0by4gVm9jw6ogcG9kZSBwZWRpciBlc3NlIGRpcmVpdG8gYSB1bSBtb2RlcmFkb3IuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyMSIgbmFtZT0icHJvcGVydHkgcGFuZWwiPgorICAgIDx2YWx1ZT5Qcm9wcmllZGFkZSBkbyBkb2N1bWVudG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIyIiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5JbmljaWEgY2xpZW50ZSAoZXh0ZXJuYWwpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyMyIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+SW5pY2lhIGNsaWVudGUgKEhUVFApPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNCIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+VW0gdXN1w6FyaW8gZGVzZWphIGNvbXBhcnRpbGhhciBzdWEgdGVsYS4gUXVlciB2ZXIgaXNzbz88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI1IiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5Wb2PDqiBlc3TDoSBjb21wYXJ0aWxoYW5kbyBzZXUgZGVza3RvcC4gUGFyYSBwYXJhciwgcHJlc3Npb25lIG8gYm90w6NvIFN0b3Agbm8gY2xpZW50ZSBkZSBjb21wYXJ0aWxoYW1lbnRvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjYiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPkNvbXBhcnRpbGhhciBzZXNzw6NvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNyIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+Vm9jw6ogasOhIGVzdMOhIGNvbXBhcnRpbGhhbmRvIHNldSBkZXNrdG9wITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+VmlzdWFsaXNhZG9yIGRlIERlc2t0b3A8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI5IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlNhaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzAiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+Q29tcGFydGlsaGFkb3IgZGUgRGVza3RvcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzEiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+Q2xpcXVlIGVtIGluaWNpYXIgcGFyYSBwdWJsaWNhciBzdWEgdGVsYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzIiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+SW5pY2lhIGNvbXBhcnRpbGhhbWVudG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMzIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlBhcmEgY29tcGFydGlsaGFtZW50bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzQiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U2VsZWNpb25hIGEgw6FyZWEgZGUgc3VhIHRlbGE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5Ucm9jYSBsYXJndXJhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5PIGNvbXBhcnRpbGhhbWVudG8gZm9pIGZpbmFsaXphZG8gbmVzc2Egc2Vzc8OjbyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM3IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlRyb2NhIGxhcmd1cmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM4IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlgtT2Zmc2V0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczOSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5ZLU9mZnNldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDAiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+TGFyZ3VyYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQxIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkFsdHVyYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQyIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkEgY29uZXjDo28gZm9pIHRlcm1pbmFkYSBwZWxvIHNlcnZpZG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0MyIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5DYW5jZWxhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDQiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+SW5pY2lhciBleHRlcm5vPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NSIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5TZSB2b2PDqiBmZWNoYXIgZXNzYSBzZXNzw6NvIGNvbXBsZXRhbWVudGUsIHZvY8OqIG7Do28gc2Vyw6EgY2FwYXogZGUgcmVpbmljaWFyIG8gdmlzdWFsaXphZG9yIHBhcmEgZXNzYSBzZXNzw6NvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDYiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+Q29uZmlybWUgbyBmZWNoYW1lbnRvIGRvIHZpc3VhbGl6YWRvciBkZSBzZXNzw6NvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NyIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5Db21wYXJ0aWxoYSBUZWxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0OCIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5HcmF2YSBzZXNzw6NvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0OSIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPkNvLUJyb3dzaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MCIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPk1lbGhvciB2aXN1YWxpemFkbyBubyBJbnRlcm5ldCBFeHBsb3Jlci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUxIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+QW50ZXJpb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUyIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+UHLDs3hpbW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUzIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+UmVjYXJyZWdhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTQiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5Ib21lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1NSIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPkNhcnJlZ2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU2IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+QWRpY2lvbmEgZXNzZSBzaXRlIGNvbW8gc2l0ZSBwYWRyw6NvIGRvIHNldSBwZXJmaWwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1NyIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlRlc3RlIGFzIGNvbmYuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1OCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlZlcmlmaXF1ZSBzZSBvIG1pY3JvZm9uZSBlIGEgY2FtZXJhIGFudGVzIGRlIGVudHJhciBlbSB1bWEgc2FsYSAuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1OSIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPk7Do28gbW9zdHJlIGVzc2UgdGVzdGUgbm92YW1lbnRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPkNhbmNlbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYxIiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+SW5pY2lhciBjb25mZXLDqm5jaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYyIiBuYW1lPSJlZGl0IHZpZGVvIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+TsOjbyBwZXJndW50ZSBub3ZhbWVudGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYzIiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+R1JBVkE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY0IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+UExBWTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjUiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5Wb2PDqiBwb2RlIGNvbnRpbnVhciBzZW0gbyB0ZXN0ZSwgc2Ugdm9jw6ogbsOjbyBwcmV0ZW50ZSBwdWJsaWNhciBzdWEgaW1hZ2VtIG91IHZvei4gUGFydGljaXBhbnRlcyBzZW0gYXVkaW8gZSB2aWRlbyBwb2RlbSB1c2FyIGEgbG91c2EsIGNvbXBhcnRpbGhhciBvIGRlc2t0b3Agb3UgdXNhciBvIGNoYXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NiIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlBBUkFSPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NyIgbmFtZT0iNzY3Ij4KKyAgICA8dmFsdWU+SW50ZW5zaWRhZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY4IiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+UHJlc3Npb25lIGluaWNpYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjkiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5JbmljaWEgQ29uZmVyZW5jaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzcwIiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+SW5pY2lhciBFdmVudG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzcxIiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+U2VsZWNpb25lIGEgc2FsYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzIiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5WZXJpZmlxdWUgYSBjb25maWd1cmHDp8OjbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzMiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5JbmljaWUgYSBDb25mZXLDqm5jaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc0IiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+UGFzc29zIHBhcmEgYSBjb25mZXLDqm5jaWE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NSIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPkluaWNpYXIgR3JhdmHDp8OjbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzYiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5Ow6NvIG1vc3RyYXIgw4F1ZGlvL1bDrWRlbyB0ZXN0ZSAoZ3JhdmHDp8OjbykgYW50ZXMgZGUgZW50cmFyIGVtIHVtYSBjb25mZXLDqm5jaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc3IiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+U2FsYXMgcMO6YmxpY2FzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3OCIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPlNhbGFzIHDDumJsaWNhcyBzw6NvIGFjZXNzaXZlaXMgcG9yIHRvZG9zIG9zIHVzdcOhcmlvcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc5IiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+U2FsYXMgcHJpdmFkYXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgwIiBuYW1lPSJQcml2YXRlIFJvb21zIj4KKyAgICA8dmFsdWU+U2FsYXMgcHJpdmFkYXMgc8OjbyBhY2Vzc2l2ZWlzIHNvbWVudGUgcG9yIHVzdcOhcmlvcyBkYSBtZXNtYSBvcmdhbml6YcOnw6NvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODEiIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT5NaW5oYSBzYWxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MiIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPlNhbGFzIGNyaWFkYXMgbmVzc2Egc2XDp8OjbyBzw6NvIGRlIHVzbyBwZXNzb2FsLiBFbGFzIHPDo28gY3JpYWRhcyBhdHJhdsOpcyBkbyBjYWxlbmTDoXJpbyBlIHRlbSB1bSBpbsOtY2lvIGUgdW1hIGRhdGEgZmluYWwuIEVsYXMgc8OzIGVzdMOjbyBsaXN0YWRhcyBuZXN0YSBzZcOnw6NvIGR1cmFudGUgc3VhIHZhbGlkYWRlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODMiIG5hbWU9InJlc3RyaWN0ZWQgcm9vbSI+CisgICAgPHZhbHVlPlZvY8OqIHRlbSBxdWUgc2VyIG8gbW9kZXJhZG9yIHBhcmEgZmF6ZXIgaXNzby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg0IiBuYW1lPSJtZW51IG9wdGlvbiI+CisgICAgPHZhbHVlPlBlZGlyIG1vZGVyYcOnw6NvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NSIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT5QZWRpciBhY2Vzc28gcGFyYSBhIGxvdXNhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NiIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT5QZWRpciBhY2Vzc28gcGFyYSBjYW1lcmEvbWljcm9mb25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NyIgbmFtZT0iZXJyb3IgbWVzc2FnZSBzb2FwIHNlY3VyZSBsb2dpbiI+CisgICAgPHZhbHVlPkVzc2UgaGFzaCBqw6EgZm9pIHVzYWRvLiBWb2PDqiBuw6NvIHBvZGUgdXRpbGl6YS1sbyBkdWFzIHZlemVzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODgiIG5hbWU9ImRhc2hib2FyZCBidXR0b24iPgorICAgIDx2YWx1ZT5JTklDSUE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg5IiBuYW1lPSJleGl0IGNvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT5TQUlSPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5MCIgbmFtZT0iY29uZmVyZW5jZSB2aWV3Ij4KKyAgICA8dmFsdWU+VGVtIGNlcnRlemEgcXVlIHF1ZXIgc2Fpcj8gVm9jw6ogZGV2ZSBsaW1wYXIgb3MgZG9jdW1lbnRvcywgbG91c2EsIGUgaGlzdMOzcmljbyBkbyBjaGF0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTEiIG5hbWU9ImNvbmZlcmVuY2UgdmlldyI+CisgICAgPHZhbHVlPkRlaXhhciBhIGNvbmZlcsOqbmNpYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTIiIG5hbWU9Im1haW4gbWVudSI+CisgICAgPHZhbHVlPlNhbGFzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5MyIgbmFtZT0ibWFpbiBtZW51Ij4KKyAgICA8dmFsdWU+RXNjb2xoYSB1bWEgc2FsYSBwYXJhIGEgcmV1bmnDo288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk0IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkV4aXN0ZSB1bSBldmVudG8gbsOjbyBzYWx2byBubyBjYWxlbmTDoXJpby4gUG9yIGZhdm9yIHNhbHZlIG91IGV4Y2x1YS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk1IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPlBvciBmYXZvciwgYWRpY2lvbmFyIHBlbG8gbWVub3MgdW0gcGFydGljaXBhbnRlIHBhcmEgYSByZXVuacOjbyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk2IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPlRlbSBjZXJ0ZXphIHF1ZSBxdWVyIGV4Y2x1aXIgZXNzZSBldmVudG8/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5NyIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5BdmlzbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTgiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QWRpY2lvbmEgZXZlbnRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5OSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5kaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAwIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPnNlbWFuYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDEiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+bcOqczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDIiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RGVzY3Jpw6fDo288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAzIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPlBhcnRpY2lwYW50ZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA0IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUsIHN1YSBwbGF0YWZvcm1hIGRlIGNvbmZlcsOqbmNpYSB3ZWIuIFZvY8OqIHBvZGUgc2VndWlyIG9zIHBhc3NvcyAxLTItMyBwYXJhIGVudHJhciBlbSB1bWEgc2FsYSBkZSBjb25mZXLDqm5jaWEgZGlyZXRhbWVudGUgb3Ugc2VsZWNpb25lIGEgb3Bjw6NvIGNhbGVuZMOhcmlvIHBhcmEgcGxhbmVqYXIgdW1hIHJldW5pw6NvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDUiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPlBsYW5lamFyIFJldW5pw6NvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNiIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlBhcmEgY29uZmlndXJhciB1bWEgY29uZmVyw6puY2lhIHZvY8OqIHBvZGUgYWRpY2lvbmFyIHVtIG5vdm8gZXZlbnRvIGFvIGNhbGVuZMOhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNyIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlByZWNpc2EgZGUgYWp1ZGE/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwOCIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlJlc3RyaXRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwOSIgbmFtZT0ibHpjYWxlbmRlciI+CisgICAgPHZhbHVlPmJ1c2NhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMCIgbmFtZT0ibHpjYWxlbmRlciI+CisgICAgPHZhbHVlPkFkaWNpb25hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMSIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPk7Do28gaMOhIG5lbmh1bSB1c3XDoXJpbyBzZWxlY2lvbmFkbywgUG9yIGZhdm9yIHNlbGVjaW9uZSB1bSBpdGVtIGRhIGxpc3RhLCBlIGRlcG9pcyBjbGlxdWUgZW0gYWRpY2lvbmFyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTIiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5BZGljaW9uYXIgUGFydGljaXBhbnRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMyIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlNhbHZhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxNCIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPkV4Y2x1aTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTUiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5EZXRhbGhlcyBkbyBldmVudG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE2IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+TW9kZXJhZG9yZXMgcGFkcsOjbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5TdXBlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTgiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTkiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5Ob21lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyMCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkUtTWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjEiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5BZGljaW9uYSBvIG1vZGVyYWRvciBwYWRyw6NvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyMiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPsOJIHVtIFN1cGVyIE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjMiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5TZSBhIHNhbGEgw6kgbW9kZXJhZGEsIHVzdcOhcmlvcyBjb20gcGVybWlzc8OjbyBkZSBNb2RlcmFkb3Igb3UgQWRtaW5pc3RyYWRvciBzw6NvIGF1dG9tYXRpY2FtZW50ZSBNb2RlcmFkb3JlcyBxdWFuZG8gZW50cmFtIG5hIHNhbGEuIFNlIHZvY8OqIG7Do28gcXVlciBlc3BlZmljaWZpY2FyIGUgc8OzIGRlc2VqYSBxdWUgdW0gZGV0ZXJtaW5hZG8gdXN1w6FyaW8gdG9ybmUtc2UgbW9kZXJhZG9yIHVzZSBhIG9ww6fDo28gTW9kZXJhZG9yIFBhZHLDo28uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPlVtIFN1cGVyIE1vZGVyYWRvciDDqSBzZW1wcmUgdW0gTW9kZXJhZG9yIHF1YW5kbyBlbnRyYSBuYSBzYWxhLCBlIG5pbmd1ZW0gcG9kZSByZW1vdmVyIHNldSBwcml2aWzDqWdpbyBkZSBtb2RlcmHDp8Ojby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI1IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+QXBsaWNhIFN1cGVyLU1vZGVyYcOnw6NvIHBhcmEgbyB1c3XDoXJpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjYiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5SZW1vdmUgU3VwZXItTW9kZXJhw6fDo28gZG8gdXN1w6FyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjgiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5TZSB2b2PDqiBhZGljaW9uYXIgdW1hIE9yZ2FuaXphw6fDo28gcGFyYSBhIHNhbGEgYXBlbmFzIHVzdcOhcmlvcyBkZXNzYSBvcmdhbml6YcOnw6NvIHTDqm0gYWNlc3NvIGEgZWxhIChlc3RhIG9ww6fDo28gc8OzIMOpIHbDoWxpZG8gc2UgYSBvcMOnw6NvIFDDumJsaWNvIG7Do28gZXN0aXZlciBzZWxlY2lvbmFkYSEpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyOSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPk1vZGVyYcOnw6NvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzMCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkxpbWl0YcOnw7VlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzEiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5Pcmdhbml6YcOnw6NvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzMiIgbmFtZT0iY29uZmlybSBhY3Rpb24iPgorICAgIDx2YWx1ZT5UZW0gY2VydGV6YT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODMzIiBuYW1lPSJjb25maXJtIGRlbGV0ZSI+CisgICAgPHZhbHVlPlRlbSBjZXJ0ZXphIHF1ZSBxdWVyIGV4Y2x1aXIgZXNzZSBpdGVtPyBWb2PDqiBwcmVjaXNhIHByZXNzaW9uYXIgbyBib3RhbyBTYWx2YXIgcGFyYSBmYXplciBhcyBtdWRhbsOnYXMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNCIgbmFtZT0idXNlciBjaG9vc2UgZXJyb3IiPgorICAgIDx2YWx1ZT5OZW5odW0gdXN1w6FyaW8gc2VsZWNpb25hZG8uIFBvciBmYXZvciBzZWxlY2lvbmUgdW0gZGVwb2lzIGFkaWNpb25lIGlzc28hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkFkaWNpb25hIHVtIG5vdm8gbW9kZXJhZG9yIHBhZHLDo288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM2IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+UXVlciBhZGljaW9uYXIgYSBwZXJtaXNzw6NvIGRlIFN1cGVyLW1vZGVyYWRvciBwYXJhIGVzc2UgdXN1w6FyaW8/IFVtIHN1cGVyLW1vZGVyYWRvciBuw6NvIMOpIG1vZGVyYWRvciBzb21lbnRlIGRhIHNhbGEsIGUgbmVuaHVtIG91dHJvIG1vZGVyYWRvciBwb2RlIHJlbW92ZXIgYSBwZXJtaXNzw6NvIGRlIG1vZGVyYcOnw6NvIGRlbGUuIFZvY8OqIHByZWNpc2Egc2FsdmFyIHBhcmEgcXVlIGFzIGNvbmZpZ3VyYcOnw7VlcyB0ZW5oYW0gZWZlaXRvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5UZW0gY2VydGV6YSBxdWUgcXVlciByZW1vdmVyIGEgcGVybWlzc8OjbyBkZSBTdXBlci1tb2RlcmFkb3IgcGFyYSBlc3NlIHVzdcOhcmlvPyBWb2PDqiBwcmVjaXNhIHNhbHZhciBwYXJhIHF1ZSBhcyBjb25maWd1cmHDp8O1ZXMgdGVuaGFtIGVmZWl0by48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM4IiBuYW1lPSJzdXBlciBtb2RlcmF0b3IiPgorICAgIDx2YWx1ZT7DiSB1bSBTdXBlci1tb2RlcmFkb3IuIFZvY8OqIG7Do28gcG9kZSByZW1vdmVyIGEgcGVybWlzc8OjbyBkZSBNb2RlcmHDp8OjbyBkZSB1bSBTdXBlci1tb2RlcmFkb3IhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzOSIgbmFtZT0iY29uZmlybSBkZWxldGUiPgorICAgIDx2YWx1ZT5UZW0gY2VydGV6YSBxdWUgcXVlciBleGNsdXJpciBlc3NlIEFycXVpdm8vRGlyZXTDs3Jpbz88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQwIiBuYW1lPSJjb25maXJtIGRlbGV0ZSI+CisgICAgPHZhbHVlPkV4Y2x1aXIgQXJxdWl2by9EaXJldMOzcmlvPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDEiIG5hbWU9InNhbHV0YXRpb24iPgorICAgIDx2YWx1ZT5Tci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQyIiBuYW1lPSJzYWx1dGF0aW9uIj4KKyAgICA8dmFsdWU+RHIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0MyIgbmFtZT0icHJvcGVydHkgcGFuZWwgd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPlByb3ByaWVkYWRlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDQiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5Nb3N0cmEgYSBwb3Npw6fDo28gZG8gbW91c2UgcGFyYSBvcyBlc3BlY3RhZG9yZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ1IiBuYW1lPSJwdWJsaXNoIG9wdGlvbiI+CisgICAgPHZhbHVlPkNvbXBhcnRpbGhhciBBdWRpbyBjb20gbyBTSVAgQXBwbGV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NiIgbmFtZT0icHVibGlzaCBvcHRpb24iPgorICAgIDx2YWx1ZT5Db21wYXJ0aWxoYXIgw4F1ZGlvIGUgVsOtZGVvIHZpYSBTSVAgY29tIEZsYXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NyIgbmFtZT0iZG9jdW1lbnQgcGFuZWwiPgorICAgIDx2YWx1ZT5BanVzdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ4IiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5WZXIgVGVsYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDkiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPk8gVXN1w6FyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUwIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5xdWVyIGNvbXBhcnRpaGFyIHN1YSB0ZWxhLiBWb2PDqiBxdWVyIHZlcj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUxIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5GZWNoYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTIiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5ab29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MyIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPkEgc2Vzc8OjbyBmb2kgZmVjaGFkYSBwZWxvIHVzdcOhcmlvIHF1ZSBjb21wYXJ0aWxoYXZhITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTQiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5QYXVzYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTUiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5Ob3ZvIGNvbXBhcnRpbGhhbWVudG8gZGUgdGVsYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTYiIG5hbWU9InByZXNlbnRlciBtaW5pIGljb24iPgorICAgIDx2YWx1ZT5NaW5pbWl6YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTciIG5hbWU9InByZXNlbnRlciBtaW5pIGljb24iPgorICAgIDx2YWx1ZT5NYXhpbWl6YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTgiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlbDrWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTkiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkxpbmhhIGRvIHRlbXBvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TWluaGFzIEdyYXZhw6fDtWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+R3JhdmHDp8O1ZXMgUMO6YmxpY2FzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+SW5mbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjMiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk5vbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY0IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5EdXJhw6fDo288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY1IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5EYXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UExBWTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjgiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlbDrWRlbyAtIFByaW5jaXBhbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjkiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkdyYXZhbmRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3MCIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+Vm9jw6ogcG9kZSBncmF2YXIgZSBjb21wYXJ0aWxoYXIgYSBxdWFscXVlciBtb21lbnRvLiBQYXJhIHF1ZSBvdXRyb3MgdXN1w6FyaW9zIGNvbnNpZ2FtIHZlciBzdWEgdGVsYSwgY2xpcXVlIG5vIGJvdMOjbyBJbmljaWFyIG5vIHRvcG8gZGEgdGVsYS4gUGFyYSBzb21lbnRlIGdyYXZhciwgY2xpcXVlIG5vIGJvdMOjbyBJbmljaWEgR3JhdmHDp8Ojby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcxIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5JbmljaWEgZ3JhdmFuZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcyIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5QYXJhIGEgZ3JhdmHDp8OjbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzMiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkRvd25sb2FkIG8gYXJxdWl2byBGTFY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc0IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TYWxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3NSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UGxheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzYiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlBhcmFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3NyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TyBtaWNyb2ZvbmUgZG8gdXN1w6FyaW8gZXN0w6EgbGlnYWRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3OCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5JbnRlcnJvbXBlciBvIGNvbXBhcnRpbGhhbWVudG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc5IiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPlBlcm1pdGlyIHBlcmd1bnRhcyBkb3MgdXN1w6FyaW9zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MCIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5EZXNsaWd1ZSBpc3NvIHBhcmEgZXZpdGFyIHF1ZSBxdWFscXVlciB1c3XDoXJpbyBwZXJ0dXJiZSB2b2PDqiBuZXNzYSBzYWxhLiBPIGJvdMOjbyBwYXJhIHBlZGlyIGEgbW9kZXJhw6fDo28gKCJFdSB0ZW5obyB1bWEgcGVyZ3VudGEiKSBmaWNhIGludmlzw612ZWwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MSIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5EaXJlaXRvczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODIiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkRvd25sb2FkIGNvbW8gQVZJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RkxWPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QVZJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UmF3IFNjcmVlbnZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+U29tZW50ZSBBdWRpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODciIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk9zIGVycm9zIGFjb250ZWNlcmFtIG5vIHByb2Nlc3NvIGRlIGdyYXZhw6fDo28uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4OCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QSB2aXN1YWxpemHDp8OjbyBkYSBncmF2YcOnw6NvIGFpbmRhIG7Do28gZXN0w6EgcHJvbnRhLiBQb3IgZmF2b3IgdGVudGUgbm92YW1lbnRlIGVtIGFsZ3VucyBtaW51dG9zLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODkiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkxvZzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkwIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5HcmF2YWRvciBkZSBtZW5zYWdlbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTEiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk9rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MiIgbmFtZT0ic2lwIGFwcGxldCI+CisgICAgPHZhbHVlPk8gQXBwbGV0IFNJUCBuw6NvIGVzdMOhIHByb250bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTMiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5Db25maWd1cmHDp8O1ZXMgZGEgY29udGEgU0lQPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NCIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPkRlZmluacOnw7VlcyBTSVAgcGFyYSBjYWRhIHVzdcOhcmlvLiBWb2PDqiBwb2RlIGxpZ2FyIG91IGRlc2xpZ2FyIG8gU0lQIHZpYSBBZG1pbmlzdHJhw6fDo28gJmd0OyBDb25maWd1cmHDp8OjbyAoQ2hhdmU6IGVuYWJsZV9zaXApLiBPcyBkYWRvcyBTSVAgcGFyYSBjYWRhIHVzdcOhcmlvIGRldmUgc2VyIGNyaWFkb3MgYXV0b21hdGljYW1lbnRlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTUiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5Vc3XDoXJpbyBkbyBTSVA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk2IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+U2VuaGEgZG8gU0lQPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NyIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNpcC1BdXRoLUlkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5OCIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TyBMb2dpbiBubyBHYXRld2F5IFNJUCBmYWxob3UuIFZvY8OqIGRldmUgY29uZmVyaXIgc2V1cyBkYWRvcyBkZSBhdXRlbnRpY2HDp8OjbyBkbyBzZXUgcHJvdmVkb3IgU0lQLiBDb21vIGFkbWluaXN0cmFkb3IsIHZvY8OqIGFpbmRhIHBvZGVyw6EgZmF6ZXIgbyBsb2dpbiBlIHZlcmlmaWNhciBhIGNvbmZpZ3VyYcOnw6NvLiBDb21vIHVzdcOhcmlvIG91IG1vZGVyYWRvciwgdm9jw6ogc2Vyw6EgYmxvcXVlYWRvIGEgcGFydGlyIGRlIHF1YWxxdWVyIGl0ZXJhw6fDo28uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5OSIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TyBMb2dpbiBubyBHYXRld2F5IFNJUCBmYWxob3UsIGVudHJlIGVtIGNvbnRhdG8gY29tIG8gc3Vwb3J0ZSBkbyBzZXJ2acOnbyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAwIiBuYW1lPSJzaXAgc3RhdHVzIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Mb2dhbmRvIG5vIFNJUC1HYXRld2F5IC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDEiIG5hbWU9InNpcCBzdGF0dXMgbWVzc2FnZSI+CisgICAgPHZhbHVlPkxvZ2FuZG8gbm8gU0lQLUdhdGV3YXkgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwMiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TW9zdHJhIExvZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDMiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkxvZyBkZSBtZW5zYWdlbSBkbyBwcm9jZXNzbyBkZSBncmF2YcOnw6NvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwNCIgbmFtZT0ic2lwIGxvZ2luIj4KKyAgICA8dmFsdWU+TWVuc2FnZW0gZG8gQXBwbGV0IFNJUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDUiIG5hbWU9InNpcCBsb2dpbiI+CisgICAgPHZhbHVlPk8gQXBwbGV0IFNJUCBuw6NvIGVzdMOhIHByb250by4gQWNlaXRlIG8gYXBwbGV0IGUgY2xpcXVlIGVtIG9rITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDYiIG5hbWU9Im1vZGVyYXRvciBwb3AgdXAiPgorICAgIDx2YWx1ZT5HZXQgTW9kZXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDciIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5TYXZlIEFwcG9pbnRtZW50IENoYW5nZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA4IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhlIGFwcG9pbnRlbWVudCBoYXMgYmVlbiBjaGFuZ2VkLiBEbyB5b3Ugd2FudCB0byBzYXZlIHRob3NlIGNoYW5nZXM/ICZsdDtici8mZ3Q7Jmx0O2JyLyZndDtBbGwgYXR0ZW5kZWVzIG9mIHRoZSBhcHBvaW50bWVudCB3aWxsIHJlY2VpdmUgYSBFTWFpbCB3aXRoIHRoZSB1cGRhdGVkIGRhdGUgYW5kIHRpbWUgKGRlcGVuZGluZyBvbiB0aGUgbm90aWZpY2F0aW9uIHR5cGUgb2YgdGhpcyBhcHBvaW50bWVudCkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwOSIgbmFtZT0iZmx2IHJlY29yZGVyIGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5QYXJhIGFjZXNzYXIgb3V0cmFzIGdyYXZhw6fDtWVzIHF1ZSB2b2PDqiB0ZW0gcGFyYSBmYXplciBsb2dpbiBubyBhcGxpY2F0aXZvICRBUFBfTkFNRS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTEwIiBuYW1lPSJpbnRlcnZpZXcgdmlkZW8gcG9kIj4KKyAgICA8dmFsdWU+RXNjb2xoYSBvIHVzdcOhcmlvIHBhcmEgZXN0ZSB2w61kZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTExIiBuYW1lPSJpbnRlcnZpZXcgdmlkZW8gY2hvb3NlIHVzZXIiPgorICAgIDx2YWx1ZT5BdmFpbGFibGUgVXNlcnMgZm9yIHRoaXMgUG9kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMiIgbmFtZT0iaW50ZXJ2aWV3IGluZm8iPgorICAgIDx2YWx1ZT5Wb2PDqiDDqSB1bSBtb2RlcmFkb3IgbmVzc2EgZW50cmV2aXN0YS4gVm9jw6ogcG9kZSBkZWNpZGlyIHF1ZW0gZXN0w6EgZmFsYW5kbyBuZXN0YSBlbnRyZXZpc3RhIGUgcG9kZSBpbmljaWFyIC8gcGFyYXIgYSBncmF2YcOnw6NvIGRhIFNlc3PDo28uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMyIgbmFtZT0iaW50ZXJ2aWV3IGJ1dHRvbiByZWNvcmRpbmciPgorICAgIDx2YWx1ZT5JbmljaWFyIGdyYXZhw6fDo288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE0IiBuYW1lPSJpbnRlcnZpZXcgYnV0dG9uIHJlY29yZGluZyI+CisgICAgPHZhbHVlPlBhcmFyIGdyYXZhw6fDo288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE1IiBuYW1lPSJpbnRlcnZpZXcgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPkEgZ3JhdmHDp8OjbyBkYSBlbnRyZXZpc3RhIGrDoSBmb2kgaW5pY2lhZGEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxNiIgbmFtZT0iaW50ZXJ2aWV3IGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BIGdyYXZhw6fDo28gZXN0w6EgcGFyYWRhIG91IG7Do28gZm9pIGluaWNpYWRhIGFpbmRhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTciIG5hbWU9ImludGVydmlldyByZWNvcmRpbmcgbWVzc2FnZSI+CisgICAgPHZhbHVlPkEgZ3JhdmHDp8OjbyBkZXN0YSBlbnRyZXZpc3RhIGrDoSBjb21lw6dvdSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE4IiBuYW1lPSJpbnRlcnZpZXcgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPkNhbmNlbGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxOSIgbmFtZT0iaW50ZXJ2aWV3IGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5PIHByb2Nlc3NhbWVudG8gZGUgdW1hIGVudHJldmlzdGEgZGVtb3JhIDUgbWludXRvcyBwb3IgMSBtaW51dG9zIGRlIGVudHJldmlzdGEuIE8gcHJvZ3Jlc3NvIGF0dWFsIGRhIHRyYW5zY29kaWZpY2FjYW8gZGEgZW50cmV2aXN0YSBlIHByb2Nlc3NhbWVudG8gw6kgYSBzZWd1aW50ZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIwIiBuYW1lPSJzaXAgY3JlYXRpb24iPgorICAgIDx2YWx1ZT5Wb2PDqiB0ZW0gcXVlIGRpZ2l0YXIgc3VhIHNlbmhhIG5vdmFtZW50ZSBwYXJhIGNyaWFyIGF1dG9tYXRpY2FtZW50ZSBvcyBkYWRvcyBTSVA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIxIiBuYW1lPSJzaXAgY3JlYXRpb24iPgorICAgIDx2YWx1ZT5SZS1nZW5lcmF0ZSBTSVAgRGF0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjIiIG5hbWU9ImZpbGVleHBsb3JlciI+CisgICAgPHZhbHVlPlZvY8OqIG7Do28gcG9kZSBtb3ZlciBvIGFycXVpdm8gb3UgcGFzdGEgZW0gc3VhIHByw7NwcmlhIHBhc3RhITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjMiIG5hbWU9ImZpbGUgZXhwbG9yZXIgIj4KKyAgICA8dmFsdWU+VGFtYW5obyBkYSB1bmlkYWRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlB1YmxpYyBkcml2ZSBzaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNSIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPkxpY2Vuc2UgU2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI2IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+WW91IGNhbiBlaXRoZXIgYmluZCB0aGUgdXNlciB0byBhIGV4cGlyZSBEYXRlIG9yIHRvIGEgbWF4aW11bSBudW1iZXIgb2YgbWludXRlcyB3aGVuIHlvdSBlbmFibGUgbGljZW5zaW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjciIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5WZXJpZmlxdWUgbGljZW7Dp2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI4IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+RmxhdHJhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI5IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+RXhwaXJlIGRhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMwIiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+U2Vjb25kcyBsZWZ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMSIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPlRvdGFsIHRpbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMyIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3VyIExpY2Vuc2UgaGFzIGV4cGlyZWQuIFlvdSBuZWVkIHRvIGJ1eSBuZXcgbWludXRlcyAoUGF5LXBlci1taW51dGUpIG9yIGEgdm9sdW1lIGZsYXRyYXRlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzMiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkNsaWNrIGFuZCBidXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM0IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5UaW1lIExlZnQgb24geW91ciBhY2NvdW50OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzUiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkluZm9ybWHDp8O1ZXMgZGUgTGljZW7Dp2EgZGUgVXN1w6FyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM2IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5JbmZvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzNyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+RmVjaGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzOCIgbmFtZT0ibGljZW5zZS1pbmZvIj4KKyAgICA8dmFsdWU+WW91ciBsaWNlbnNlIGhhcyBleHBpcmVkLiBZb3UgbmVlZCBlaXRoZXIgdG8gYnV5IGEgbWludXRlIHBhY2thZ2UgKFBheS1wZXItbWludXRlKSBvciBhIHZvbHVtZSBmbGF0cmF0ZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM5IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5MaWNlbnNlIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91IGNhbiBlaXRoZXIgYnV5IG1pbnV0ZXMgdG8gbWFrZSBXZWItQ29uZmVyZW5jaW5nIChQYXktcGVyLW1pbnV0ZSkuJmx0O2JyLyZndDsmbHQ7YnIvJmd0OyBPciB5b3UgYnV5IGEgdm9sdW1lIGZsYXRyYXRlIGFib3V0IDMtMTIgbW9udGhzLiZsdDtici8mZ3Q7Jmx0O2JyLyZndDtTZW5kaW5nIGludml0YXRpb25zIChkaXJlY3QgbGlua3MgaW50byBDb25mZXJlbmNlIFJvb21zKSBvciBjcmVhdGluZyBjb25mZXJlbmNlIFJvb21zIHZpYSB0aGUgQ2FsZW5kYXIgd2l0aCBleHRlcm5hbCBVc2VycyBpcyBvbmx5IGFsbG93ZWQgd2l0aCBhIHZvbHVtZSBmbGF0cmF0ZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQxIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5CdXkgNjAgTWludXRlcyA5LDk5IEVVUk8gKDE2IENlbnQgcGVyIE1pbnV0ZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQyIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5CdXkgNSBob3VycyAxOSw5OSBFVVJPICg2IENlbnQgcGVyIG1pbnV0ZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQzIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5CdXkgMyBtb250aCBmb3IgMjksOTkgRVVSTyAoOSw5OSBFdXJvIHBlciBNb250aCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ0IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5CdXkgNiBtb250aCBmb3IgMzksOTkgRVVSTyAoNiw2NiBFdXJvIHBlciBtb250aCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ1IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5QYXktcGVyLW1pbnV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDYiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlZvbHVtZSBmbGF0cmF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDciIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlZvY8OqIHRlbSBsaWNlbsOnYSBpbGltaXRhZGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ4IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5TdWEgbGljZW7Dp2EgZXhwaXJhIGVtOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDkiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdSBib3VnaHQgUGF5LXBlci1taW51dGUuIFlvdSBzdGlsbCBoYXZlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTAiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSBuZXcgY3JlZGl0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTEiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPldhbnQgeW91ciBvd24gU2VydmVyPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTIiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlZvY8OqIGdvc3RhcmlhIGRlIHRlciAkQVBQX05BTUUgaW5zdGFsYWRvIGVtIHNldSBzZXJ2aWRvciBvdSBpbnRlZ3JhZG8gZW0gc2V1IE1vb2RsZSwgU3VnYXJDUk0sIHNpdGUgb3UgSW50cmFuZXQ/IFByZcOnb3MgYSBwYXJ0aXIgZGUgNzAwIHJlYWlzIHBvciBpbnN0YWxhw6fDo28hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+T3Igc2VuZCB1cyBhIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU0IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5SZXNwb25kZXIgYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU1IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5NZW5zYWdlbTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU2IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5TZW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1NyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Q2xpY2sgaGVyZSB0byBnZXQgY29udGFjdCBJbmZvIGFuZCBQcml6aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTgiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNyZWRpdCBDYXJkIERldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU5IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5Ob21lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2MCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U29icmVub21lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2MSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+VGlwbyBkZSBDYXJ0w6NvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2MiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q2FydMOjbyBWSVNBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2MyIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+TWFzdGVyQ2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjQiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkRlc2NvYnJpcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjUiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkFtZXJpY2FuIEV4cHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY2IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5Ow7ptZXJvIGRvIENhcnTDo288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY3IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5EYXRhIGRlIFZhbGlkYWRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2OCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+TsO6bWVybyBkZSB2ZXJpZmljYcOnw6NvIGRvIGNhcnTDo288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY5IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5FbmRlcmXDp28gZGUgQ29icmFuw6dhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+RW5kZXJlw6dvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q2lkYWRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MyIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+UGHDrXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc0IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5Fc3RhZG8gKHNvbWVudGUgVVMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q0VQPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+UXVhbnRpZGFkZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzciIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlN1Ym1pdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzgiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlBhc3NvIDE6ICRBUFBfTkFNRSAtIEZvcm1hIGRlIFBhZ2FtZW50bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzkiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkVNYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q2xpY2sgIkNoZWNrIG91dCB3aXRoIFBheXBhbCIgdG8gcGF5LiZsdDtici8mZ3Q7IFBheXBhbCBhY2NlcHRzIFZJU0EsIE1hc3RlckNhcmQsIERpc2NvdmVyIG9yIEFtZXJpY2FuIEV4cHJlc3MuICZsdDtici8mZ3Q7SXQgZG9lcyBub3QgcmVxdWlyZSB0byBzaWduIHVwIHdpdGggUGF5cGFsLiAmbHQ7YnIvJmd0O0NpdGl6ZW5zIGZyb20gR2VybWFueSBjYW4gYWxzbyBwYXkgd2l0aCBkaXJlY3QgZGViaXQgKFBlciBMYXN0c2NocmlmdC1FaW56dWcpLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODEiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPk9icmlnYWRvIHBvciBjb21wcmFyIG8gJEFQUF9OQU1FLiAmbHQ7YnIvJmd0OyBUw6NvIGxvZ28gcmVjZWJlcm1vcyBvIHBhZ2FtZW50byBzdWEgY29udGEgc2Vyw6EgYXR1YWxpemFkYS4gJmx0O2JyLyZndDsgVm9jw6ogcmVjZWJlcsOhIHVtIGVtYWlsIGNvbSBhIHN1YSBmYWN0dXJhIGVtIGZvcm1hdG8gUERGLiAmbHQ7YnIvJmd0OyBWb2PDqiB0YW1iw6ltIHBvZGUgdmVyaWZpY2FyIGFzIHRyYW5zYcOnw7VlcyBhdHVhaXMgZSBwYXNzYWRhcyBlbSBzZXUgY29uZmlndXJhw6fDtWVzIGRvIHBlcmZpbC4gJmx0O2JyLyZndDsgJmx0O2JyLyZndDsgVm9jw6ogcG9kZSBmZWNoYXIgZXN0YSBqYW5lbGEgZG8gbmF2ZWdhZG9yIC8gZ3VpYSBhZ29yYSBlIHZvbHRhciBwYXJhICRBUFBfTkFNRS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgyIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdWJtaXQgYW5kIEJ1eSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgzIiBuYW1lPSJwYXltZW50LWZyb20iPgorICAgIDx2YWx1ZT5DbGljayBhbmQgQnV5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODQiIG5hbWU9InBheW1lbnQtZnJvbSI+CisgICAgPHZhbHVlPlBhc3NvIDM6IFBhZ2FtZW50byAkQVBQX05BTUUgLSBDb25maXJhIGEgb3JkZW0gZSBjb21wcmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4NSIgbmFtZT0icGF5bWVudC1mcm9tIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODYiIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPlBheW1lbnQgcmVjZWl2ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4NyIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+SGksPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4OCIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+TsOzcyByZWNlYmVtb3MgbyBzZXUgcGFnYW1lbnRvLiBTZXUgcGVyZmlsIGRlIHVzdcOhcmlvIGVzdMOhIGF0dWFsaXphZG8gYWdvcmEuIFZlamEgYW5leG8gYSBzdWEgZmF0dXJhLiBBIE5vdGEgRmlzY2FsIEZhdHVyYSBlIHBhc3NhZGEgdGFtYsOpbSBwb2RlbSBzZXIgYmFpeGFkYXMgZW0gc2V1IHBlcmZpbCBkZSB1c3XDoXJpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg5IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5PYnJpZ2FkbyBwb3IgdXRpbGl6YXIgbyAkQVBQX05BTUUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MCIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIFBhZ2FtZW50byBSZWNlYmlkbyAtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MSIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPlBheW1lbnQgYW5kIFRyYW5zYWN0aW9uIFN0YXR1czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTIiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5UcmFuc2NhdGlvbiBIYXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MyIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPk1pbnV0b3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk0IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+TWVzZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk1IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+RVVSPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NiIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPlN0YXR1czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTciIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5GYXR1cmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk4IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5OSIgbmFtZT0iZXJyb3ItbGljZW5zZS1mbGF0Ij4KKyAgICA8dmFsdWU+Vm9jw6ogbmVjZXNzaXRhIHBhZ2FyIHVtYSB0YXhhIHBhcmEgc2VyIGNhcGF6IGRlIGVudmlhciBjb252aXRlcyBvdSBjcmlhciBlbmNvbnRyb3MgYXRyYXbDqXMgZG8gY2FsZW5kw6FyaW8uIENvbSBwYWdhbWVudG8gcG9yIG1pbnV0byBzw7Mgw6kgcG9zc8OtdmVsIHBhcmEgdm9jw6ogYWNlc3NhciBvICRBUFBfTkFNRS4gVm9jw6ogbsOjbyBwb2RlIHBlcm1pdGlyIGEgdGVyY2Vpcm9zIG8gYWNlc3NvIGEgdW1hIHJldW5pw6NvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAwIiBuYW1lPSJlcnJvciB1c2VyIj4KKyAgICA8dmFsdWU+VGhpcyBFbWFpbCBpcyBhbHJlYWR5IHVzZWQgYnkgYW5vdGhlciBVc2VyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAxIiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+U0lQLUNvbmZpZ3VyYcOnw7VlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAyIiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+TyBuw7ptZXJvIGRlIGNvbmZlcsOqbmNpYSBlIFBJTiDDqSBjcmlhZG8gYXV0b21hdGljYW1lbnRlIGF0cmF2w6lzIGRvIE9wZW5YRyBSUEMtR2F0ZXdheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAzIiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+TsO6bWVybyBTSVA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNCIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlBJTjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA1IiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+TGltcGFyIG9iamV0b3MgZGVzZW5oYWRvcyBuYSBsb3VzYSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNiIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPlNvbWVudGUgYSBVUkwgZGlnaXRhZGEgbmEgYmFycmEgZGUgc3RhdHVzIMOpIGVudmlhZGEgcGFyYSBvcyBwYXJ0aWNpcGFudGVzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TWFrZSBUZWFtLVJvb21zIFtCcmVha291dCBzZXNzaW9uXTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2hvb3NlIHVzZXJzIGZvciBhIG5ldyBUZWFtLVJvb20hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Wb2PDqiBwb2RlIGVzY29saGVyIHVzdcOhcmlvcyBhcXVpIGUgY3JpYXIgdW1hIG5vdmEgc2FsYSBkZSBjb25mZXLDqm5jaWEgKCJFcXVpcGUgZGEgU2FsYSIpIHBhcmEgZWxlcy4gT3MgdXN1w6FyaW9zIGVzY29saGlkb3MgaXLDo28gYXV0b21hdGljYW1lbnRlIHBhcmEgYSBub3ZhIGVxdWlwZSBkYSBzYWxhIG91IHJlY2ViZW0gdW1hIG5vdGlmaWNhw6fDo28uIEVxdWlwZSBkYSBzYWxhLU1vZGVyYWRvcmVzIHJlY2ViZW0gYWluZGEgdW1hIGxpc3RhIGRlIHNhbGFzIGF0dWFpcywgcGFyYSBxdWUgcG9zc2FtIG11ZGFyIGRlIHNhbGEsIHNlIGhvdXZlciBhIG5lY2Vzc2lkYWRlIGRlIHVtIG1vZGVyYWRvci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzdcOhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Vc2VycyBmb3IgdGhlIG5ldyBUZWFtLVJvb206PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DcmlhciBlcXVpcGUgZGEgc2FsYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2FuY2VsYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkVzY29saGEgcGVsbyBtZW5vcyB1bSB1c3XDoXJpbyBwYXJhIGEgZXF1aXBlIGRhIHNhbGEhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5BZGljaW9uYXIgdXN1w6FyaW8gYSBlcXVpcGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlJlbW92ZSB1c2VyIGZyb20gVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Vc2VyIGlzIFRlYW0tUm9vbSBNb2RlcmF0b3IgKEhlIGlzIGFibGUgdG8gbWFuYWdlIFRlYW0tUm9vbXMgYW5kIHVzZXJzIG9mIHRoZSBUZWFtLVJvb20gY2FuIGFzayBoaW0gdG8gY29tZSBpbnNpZGUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaXBvIGRlIHNhbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlNlIHZvY8OqIHRpY2FyICJGb3LDp2FyIHVzdWFyaW8gYSBtdWRhciBwYXJhIG5vdmEgU2FsYSIgdG9kb3Mgb3MgdXN1w6FyaW9zIGVzY29saGlkb3MgaXLDo28gYXV0b21hdGljYW1lbnRlIHBhcmEgYSByZWPDqW0tY3JpYWRhIHNhbGEuIENhc28gY29udHLDoXJpbywgcmVjZWJlcsOjbyB1bWEgbm90aWZpY2HDp8OjbyBxdWUgZWxlcyAmbHQ7aSZndDtwb2RlbSZsdDsvIGkmZ3Q7IG11ZGFyIHBhcmEgYSBub3ZhIHNhbGEuIEVxdWlwZSBkZSBNb2RlcmFkb3JlcyBzZW1wcmUgdGVtIGEgbGl2cmUgZXNjb2xoYSBwYXJhIGdlcmlyIGFzIFNhbGFzIGUgYWx0ZXJuYXIgZW50cmUgZWxhcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk1hbmFnZSBUZWFtLVJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIHN3aXRjaCBoZXJlIGJldHdlZW4gYWxsIFRlYW0tUm9vbXMgdGhhdCB5b3UgYXJlIGFzc2lnbmVkIGFzIFRlYW0tUm9vbSBNb2RlcmF0b3IuIFVzZXJzIGluc2lkZSB0aGUgVGVhbS1Sb29tIGNhbiBzZW5kIHlvdSBhIG1lc3NhZ2UsIGZvciBleGFtcGxlIHRvIGFzayB5b3UgdG8gY29tZSB0byB0aGVpciByb29tIGFuZCBoZWxwIHRoZW0uIFlvdSBjYW4gYWxzbyB0ZXJtaW5hdGUgdGhlIFRlYW0tUm9vbSBhbmQgYWxsIFVzZXJzIHdpbGwgYmUgbG9nZ2VkIG91dC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkZvcmNlIHVzZXIgdG8gc3dpdGNoIHRvIG5ldyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk5vbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNyZWF0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Vc2VycyBhdmFpbGFibGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkFkZCBhIHVzZXIgd2l0aCB0aGUgcGx1cyBmcm9tIHRoZSBsZWZ0IG9yIHJlbW92ZSBpdCB3aXRoIHRoZSBjcm9zcyBmcm9tIHRoZSByaWdodCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjEpIFRlYW0tUm9vbSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MikgQWRkIHVzZXJzIHRvIHRoZSBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW0tUm9vbSBOYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNoYW5nZSB0byB0aGUgUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U3dpdGNoIHRvIHRoaXMgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZXJtaW5hdGUgVGVhbS1Sb29tIGFuZCBsb2dvdXQgYWxsIFVzZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5OZXcgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBhIG5ldyBUZWFtLVJvb20gYXZhaWxhYmxlIGZvciB5b3UuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Td2l0Y2ggdG8gVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb20gQWN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+WW91IGNhbiByZS1vcGVuIHRoaXMgd2luZG93IHZpYSB0aGUgbWFpbiBtZW51IGluIHRoZSAiQWN0aW9ucyIgc2VjdGlvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlNlbmQgbWVzc2FnZSB0byBUZWFtLVJvb20gTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5OZXcgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBhIG5ldyBUZWFtLVJvb20gYXZhaWxhYmxlLiBZb3UgY2FuIHN3aXRjaCB0byB0aGF0IFJvb20uIFRlYW0tUm9vbXMgYXJlIGxpa2UgIldvcmtncm91cHMiIHdpdGggYWRkaXRpb25hbGx5IHBvc3NpYmlsaXRpZXMgdG8gYXNrIHRoZSBUZWFtLVJvb20gTW9kZXJhdG9yIGZvciBoZWxwLiBZb3VyIFRlYW0tUm9vbXMgYXJlIGFsc28gYXZhaWxhYmxlIGluIHRoZSAiTXkgTWVldGluZ3MiIHNlY3Rpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Td2l0Y2ggdG8gVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DcmVhdGVkIGJ5OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQ4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVhbS1Sb29tIG5hbWU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGlzIFdpbmRvdyB3aWxsIHN0YXkgb3BlbiBldmVuIGlmIHlvdSBsZWF2ZSB0aGUgcm9vbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1MCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJzIGZvciB0aGlzIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MykgT3RoZXIgVGVhbS1Sb29tcyB0aGF0IHlvdSBjb3VsZCBzd2l0Y2ggdG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1MiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlNlbmQgYSBtZXNzYWdlIHRvIHRoZSBUZWFtLVJvb20gTW9kZXJhdG9ycy4gRm9yIGV4YW1wbGUgaWYgeW91IG5lZWQgaGVscCBpbiBNb2RlcmF0aW5nIHRoZSBSb29tIG9yIGlmIHlvdSBoYXZlIGEgcXVlc3Rpb24gYWJvdXQgdGhlIHRvcGljLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+RW52aWFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4yKSBVc2VycyB0aGF0IGFyZSBpbnZpdGVkIHRvIHRoaXMgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5JcyBUZWFtLVJvb20gTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVzZSBhcmUgYWxsIHVzZXJzIHRoYXQgdGhlIG1vZGVyYXRvciBoYXMgaW52aXRlZCB0byB0aGlzIFRlYW0tUm9vbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1NyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk7Do28gaMOhIG1vZGVyYWRvciBkYSBlcXVpcGUgbG9nYWRvIG5vIG1vbWVudG8hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Qb3IgZmF2b3IgaW5zaXJhIHVtYSBtZW5zYWdlbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+UGxlYXNlIGhlbHAgdXMsIHdlIGhhdmUgYSBwcm9ibGVtIGluIG91ciBUZWFtLVJvb20hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5BIHVzZXIgZnJvbSBhIFRlYW0tUm9vbSByZXF1ZXN0cyB5b3VyIGhlbHAuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5FcXVpcGUgZGEgc2FsYSBzb2xpY2l0YSBhanVkYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TWVuc2FnZW06PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5EZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2NCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlZvY8OqIG7Do28gZXN0w6EgYXR1YWxtZW50ZSBlbSBxdWFscXVlciBlcXVpcGUgZGEgc2FsYS4gTWFzIHZvY8OqIHBvZGUgbXVkYXIgYXF1aSBwYXJhIHRvZGFzIGFzIHNhbGFzIGFzIHF1YWlzIHZvY8OqIHRlbSBhY2Vzc28uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjUiIG5hbWU9ImJhY2t1cENvbnRlbnQiPgorICAgIDx2YWx1ZT5GYcOnYSBvIGJhY2t1cCBkbyBzaXN0ZW1hLiBPIGJhY2t1cCBpbmNsdWkgdG9kb3Mgb3MgZGFkb3MgZGUgdXN1w6FyaW9zLiBBIGNvbmZpZ3VyYcOnw6NvIG7Do28gZXN0w6EgaW5jbHXDrWRvLCBiZW0gY29tbyBhcyBldGlxdWV0YXMgZGUgaWRpb21hcy4gUG9ycXVlIGVzc2VzIHZhbG9yZXMgc8OjbyBpbXBvcnRhZG9zIGNvbSBvIGluc3RhbGFkb3IgZGUgc2lzdGVtYS4gUGFyYSBhdHVhbGl6YXIgc2V1IHNpc3RlbWEsIGV4cG9ydGFyIHNldSBhbnRpZ28gc2lzdGVtYSAoMSkgcmUtaW5zdGFsYXIgZW0gdW0gbm92byBiYW5jbyBkZSBkYWRvcyB1bSBub3ZvIHBhY290ZSAoMikgZSBpbXBvcnRhciBvIGFycXVpdm8gZGUgYmFja3VwIG5vdmFtZW50ZSAoMykuIE8gYmFja3VwIGRldmUgc2VyIGltcG9ydGFkbyBhbnRlcyBkZSBnZXJhciBvcyBkYWRvcyBubyBzaXN0ZW1hIHJlY8OpbS1pbnN0YWxhZG8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjYiIG5hbWU9ImJhY2t1cENvbnRlbnQiPgorICAgIDx2YWx1ZT5CYWNrdXAgZG8gc2lzdGVtYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY3IiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT5QZXJtaXRpciBhbyB1c3XDoXJpbyBDb21wYXJ0aWxoYXIvR3JhdmFyIGEgdGVsYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY4IiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT5OZWdhciBhbyB1c3XDoXJpbyBjb21wYXJ0aWxoYXIgdGVsYS9HcmF2YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2OSIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+VXN1w6FyaW8gw6kgTW9kZXJhZG9yLCBlbGUgcG9kZSBmYXplciBxdWFscXVlciBjb2lzYSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3MCIgbmFtZT0iYXBwbHkgZm9yIHNjcmVlbi9yZWNvcmRpbmciPgorICAgIDx2YWx1ZT5nb3N0YXJpYSBkZSBjb21wYXJ0aWxoYXIvZ3JhdmFyIGEgdGVsYS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3MSIgbmFtZT0ibW9kZXJhdGlvbiBtaW5pIGljb25zIj4KKyAgICA8dmFsdWU+Vm9jw6ogZXN0w6EgYXV0b3JpemFkbyBhIGNvbXBhcnRpbGhhci9ncmF2YXIgYSB0ZWxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzIiIG5hbWU9Im1vZGVyYXRpb24gbWluaSBpY29ucyI+CisgICAgPHZhbHVlPkFwbGljYXIgcGFyYSBkaXJlaXRvIGRlIGNvbXBhcnRpbGhhci9ncmF2YXIgYSB0ZWxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzMiIG5hbWU9Im1vZGVyYXRpb24gbWluaSBpY29ucyBjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+UGVybWl0aXIvTmVnYXIgZGlyZWl0byBkZSBjb21wYXJ0aWxoYXIvZ3JhdmFyIHRlbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3NCIgbmFtZT0ic291bmQgaWNvbiI+CisgICAgPHZhbHVlPkRlc2xpZ2FyIG8gc29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzUiIG5hbWU9InNvdW5kIGljb24iPgorICAgIDx2YWx1ZT5MaWdhciBvIHNvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc2IiBuYW1lPSJyb29tIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+U2FsYSBzw7MgY29tIMOhdWRpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc3IiBuYW1lPSJyb29tIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+VHVybiB0aGlzIEZsYWcgb24gYW5kIHRoZSB1c2VycyB3aWxsIGhhdmUgb25seSB0aGUgQXVkaW8tT3B0aW9uIGFuZCBubyBWaWRlbyBpbiBhIGNvbmZlcmVuY2Ugcm9vbS4gVGhpcyBjYW4gYnkgZ29vZCB0byBzYXZlIGJhbmR3aWR0aC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3OCIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+UGVybWl0aXIgY29udHJvbGUgcmVtb3RvIChEdXJhbnRlIG8gQ29tcGFydGlsaGFtZW50byBkZSBUZWxhKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc5IiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5OZWdhciBDb250cm9sZSBSZW1vdG8gKER1cmFudGUgbyBDb21wYXJ0aWxoYW1lbnRvIGRlIFRlbGEpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODAiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFwcGx5IGZvciByaWdodCB0byBSZW1vdGUgQ29udHJvbCBTY3JlZW4gKER1cmluZyBTY3JlZW4gU2hhcmluZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MSIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+Vm9jw6ogZXN0w6EgYXV0b3JpemFkbyBhIGNvbnRyb2xhciByZW1vdGFtZW50ZSBhIHRlbGEgKER1cmFudGUgbyBDb21wYXJ0aWxoYW1lbnRvIGRlIFRlbGEpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODIiIG5hbWU9ImFwcGx5IGZvciByZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPmdvc3RhcmlhIGRlIGNvbnRyb2xhciByZW1vdGFtZW50ZSBhIHRlbGEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODMiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlVzdcOhcmlvIMOpIE1vZGVyYWRvciwgZWxlIHBvZGUgZmF6ZXIgcXVhbHF1ZXIgY29pc2EhIFtSZW1vdGUgRGVza3RvcCBDb250cm9sXTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg0IiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5QZXJtaXRpci9OZWdhciBkaXJlaXRvIGRlIGFjZXNzbyBkZSBjb250cm9sYXIgcmVtb3RhbWVudGUgYSB0ZWxhIChEdXJhbnRlIG8gQ29tcGFydGlsaGFtZW50byBkZSBUZWxhKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg1IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT4xKSBZb3VyIFBDIHRvIHJlbW90ZSBQQzogVG8gY29weSBhbmQgcGFzdGUgdGV4dCBmcm9tIHlvdXIgY2xpcGJvYXJkIGludG8gdGhlIHJlbW90ZSBjb250cm9sbGVkIHNjcmVlbiwgY2xpY2sgb24gdGhlIHNjcmVlbiwgdGhlbiByaWdodCBjbGljayBpbiB0aGUgdGV4dCBmaWVsZCBhbmQgY2hvb3NlICJJbnNlcnQiIGZyb20gdGhlIGNvbnRleHQgKHJpZ2h0IGNsaWNrKSBtZW51LiZsdDtici8mZ3Q7Jmx0O2JyLyZndDsyKSBGcm9tIHJlbW90ZSBQQyB0byB5b3VyIFBDOiBUbyBjb3B5IHRleHQgZnJvbSB0aGUgcmVtb3RlIFBDIHRvIHlvdXIgUEMncyBjbGlwYm9hcmQsIGhpZ2hsaWdodCB0aGUgdGV4dCB3aXRoIHRoZSBtb3VzZSBvbiB0aGUgcmVtb3RlIHNjcmVlbiwgdGhlbiByaWdodC1jbGljayBvbiB0aGUgcmVtb3RlIHNjcmVlbiBhbmQgY2hvb3NlICZsdDtpJmd0O0NvcHkgaGlnaGxpZ2h0ZWQgdGV4dCZsdDsvaSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4NiIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+Q29weSBhbmQgUGFzdGUgdGV4dCBmcm9tIHlvdXIgUEMgdG8gcmVtb3RlIFBDIGFuZCB2aWNlLXZlcnNhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg3IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Db3BpYXIgbyB0ZXh0byByZWFsw6dhZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4OCIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+SG93IHRvIGNvcHkgbiBwYXN0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg5IiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5RdWFsaWRhZGUgZG8gY29tcGFydGlsaGFtZW50byBkZSB0ZWxhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkwIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5RdWFsaWRhZGUgbXVpdG8gYWx0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkxIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5RdWFsaWRhZGUgYWx0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkyIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5RdWFsaWRhZGUgbcOpZGlhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTMiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPlF1YWxpZGFkZSBiYWl4YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk0IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPmVuX1VTPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTUiIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+ZGVfREU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NiIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5UZWNsYWRvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk3IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPkNsb3NlIFdlYmluYXIhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTgiIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+VGhlIFdlYmluYXIgaXMgYWxyZWFkeSBjbG9zZWQsIHlvdSB3aWxsIGJlIHJlZGlyZWN0ZWQgdG8gc29tZSBpbnRlcmVzdGluZyBvZmZlcmluZ3MgaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5OSIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5GZWNoYXIgYSBzYWxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDAiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+RXhpdCBVUkw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMSIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5Sb29tIHRlcm1pbmF0aW9uIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDIiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+SWYgdGhlIHJvb20gaXMgY2xvc2VkIHVzZXJzIHdpbGwgYmUgcmVkaXJlY3RlZCB0byB0aGUgZXhpdCBVUkwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDMiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+TGRhcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA0IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPklEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDUiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+Tm9tZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA2IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkNvbmZpZyBGaWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDciIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+TGRhcCBDb25maWc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwOCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5Ob21lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDkiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+SGFiaWxpdGFkbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEwIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkluc2VyaWRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTEiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+SW5zZXJpZG8gcG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTIiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+QXR1YWxpemFkbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEzIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkF0dWFsaXphZG8gcG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTQiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+T3MgYXJxdWl2b3MgZGUgY29uZmlndXJhw6fDo28gZXN0w6NvIG5hIHBhc3RhIHdlYmFwcHMvb3Blbm1lZXRpbmdzL2NvbmYuIFZvY8OqIHByZWNpc2EgY2FycmVnYXIgbWFudWFsbWVudGUgb3MgYXJxdWl2b3MgcGFyYSBlc3RhIHBhc3RhLiBBcyBhbHRlcmHDp8O1ZXMgbm8gYXJxdWl2byBkZSBjb25maWd1cmHDp8OjbyBlc3RhcsOjbyBpbWVkaWF0YW1lbnRlIG9ubGluZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5Db25maWcgZmlsZSBuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTYiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+SWYgeW91IGVuYWJsZSAiQWRkIERvbWFpbiB0byB1c2VybmFtZSIgdGhlIHZhbHVlIG9mIHRoZSBmaWVsZCAiZG9tYWluIiBpcyBhZGRlZCB0byBlYWNoIGxvZ2luIHRoYXQgdGhlIHVzZXIgZW50ZXJzIGluIHRoZSBsb2dpbiBib3guIFRoaXMgaXMgdXNlZnVsIGlmIHRoZSBMb2dpbiBpbiB0aGUgTGRhcCBpcyBzdG9yZWQgaW5jbHVkaW5nIHRoZSBkb21haW4gbmFtZS4gRXhhbXBsZTogVXNlciBlbnRlcnMgImhhbnMiIGRvbWFpbiBpcyBzcGVjaWZpZWQgYXMgImxvY2FsaG9zdC5jb20iLCBsb2dpbiB0aGF0IGlzIHZlcmlmaWVkIGFnYWluc3QgTGRhcCBpczogaGFuc0Bsb2NhbGhvc3QuY29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTciIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+QWRpY2lvbmFyIERvbcOtbmlvIGFvIHVzdcOhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTgiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+RG9tYWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTkiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+SW5zZXJpcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIwIiBuYW1lPSJyZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPkNvcGlhciBvIHRleHRvIHJlYWzDp2FkbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIxIiBuYW1lPSJyZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPlRleHRvIGRhIMOhcmVhIGRlIHRyYW5zZmVyw6puY2lhIHJlbW90YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIyIiBuYW1lPSJyZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPk1vc3RyYXIgw6FyZWEgZGUgdHJhbnNmZXLDqm5jaWEgcmVtb3RhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjMiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPk7Do28gbW9zdHJhciBub3ZhbWVudGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNCIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+Q29waWFyIG8gdGV4dG8gYXF1aSAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNSIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgdGhlIHJpZ2h0IHRvIHJlbW90ZSBjb250cm9sIChvciB0aGUgbW9kZXJhdGlvbikgdG8gY29weSBhbmQgcGFzdGUgdGV4dCB0byBvciBmcm9tIHRoZSByZW1vdGUgc2NyZWVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI2IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5FZGl0YXIgY29uZmlndXJhw6fDtWVzIHBhZHLDo28gLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjciIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPk7Do28gbW9zdHJhciBjYWl4YSBkZSBpbmZvcm1hw6fDo28gbm8gY29udHJvbGUgcmVtb3RvIHNvYnJlIENvcGlhciBlIENvbGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjgiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+U2FsdmFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjkiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+UmVtb3ZlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMwIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkNhbmNlbGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzEiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5Db252aWRhciB1c3XDoXJpbyBhIHNhbGEgZGUgY29uZmVyw6puY2lhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzIiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5Fc2NvbGhhIHVtYSBzYWxhIGRlIGNvbmZlcsOqbmNpYS4gTyB1c3XDoXJpbyBjb252aWRhZG8gaXLDoSByZWNlYmVyIHVtYSBtZW5zYWdlbSBjb20gc2V1IG5vbWUgZSB1bSBsaW5rIHBhcmEgYSBzYWxhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMzIiBuYW1lPSJjaGF0IHVzZXIiPgorICAgIDx2YWx1ZT5Db25lY3RhZG8gZGVzZGU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzQiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5FbnRyZSBuYSBzYWxhIGFww7NzIG8gZW52aW8gZGUgY29udml0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM1IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+Q29udmlkYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzNiIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPk1lbnNhZ2VtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzciIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGludml0ZSB5b3UgdG8gdGhlIGNvbmZlcmVuY2Ugcm9vbTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzOCIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPk1lbnNhZ2VtIGNvbnZpdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzOSIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkVudmlhciBjb252aXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDAiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT4mbHQ7YiZndDtuw6NvJmx0Oy9iJmd0OyBhY2VpdG91IHNldSBjb252aXRlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQxIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+QWNlaXRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQyIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+QWNlaXRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQzIiBuYW1lPSJ1c2VyIHByb2ZpbGUiPgorICAgIDx2YWx1ZT5GdXNvIGhvcsOhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDQiIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPkV2ZW50IERldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0NSIgbmFtZT0iYXBwb2ludG1lbnQgbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ2IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5EZXNjcmnDp8OjbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ3IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5DcmlhZG8gcG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDgiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5NZW5zYWdlbSBGdXNvIEhvcsOhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDkiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5NYXJxdWUgYSBvcMOnw6NvICJNZW5zYWdlbSBkbyBGdXNvIEhvcsOhcmlvIiBwYXJhIGFwcmVzZW50YXIgYW9zIHVzdcOhcmlvcyB1bWEgbWVuc2FnZW0gbmEgcHLDs3hpbWEgdmV6IGVudHJhcmVtIHBhcmEgYXR1YWxpemFyIG8gcGVyZmlsLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUwIiBuYW1lPSJ0aW1lIHpvbmUgdXBkYXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Qb3IgZmF2b3IsIHZlcmlmaXF1ZSBvIGZ1c28gaG9yw6FyaW8gbm8gc2V1IHBlcmZpbCBkZSB1c3XDoXJpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MSIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Tm92YSBjb25mZXLDqm5jaWEgJEFQUF9OQU1FPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTIiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPiZsdDtici8mZ3Q7RGV0YWxoZXM6Jmx0O2JyLyZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MyIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+SW5pY2lvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU0IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5GaW06PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTUiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkNvbmZlcsOqbmNpYSAkQVBQX05BTUUgTW9kaWZpY2FkYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NiIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+T3JnYW5pemFkb3I6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTciIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkNvbmZlcsOqbmNpYSAkQVBQX05BTUUgQ2FuY2VsYWRhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU4IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgTGVuYnJldGUgZGUgY29uZmVyw6puY2lhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU5IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+RGVmaW5pw6fDtWVzIGNvbXVuaXTDoXJpYXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk1vc3RyYXIgZGFkb3MgZGUgY29udGF0byBwYXJhIHRvZG9zLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYxIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+QWRpY2lvbmFyIGNhbXBvcyBkZSBpbnRlcmVzc2UgcXVlIHZvY8OqIHRlbSBhIG9mZXJlY2VyIG91IHF1ZSB2b2PDqiBlc3TDoSBwcm9jdXJhbmRvLCBwYXJhIGVuY29udHJhciBwYXJjZWlyb3MgaW50ZXJlc3NhbnRlcyBwYXJhIHVtYSBjb25mZXLDqm5jaWEuIFbDrXJndWxhIHNlcGFyYSBvcyB0ZXJtb3MgKHBvciBleGVtcGxvOiBzZXJ2acOnbyBtw6lkaWNvLCBnYXJhbnRpYSBkZSBzYcO6ZGUsIC4uLik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MiIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk1pbmhhcyBvZmVydGFzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjMiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NZXVzIGludGVyZXNzZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2NCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2NSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkZ1c28gaG9yw6FyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2NiIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPsOBcmVhcyBkZSBpbnRlcmVzc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2NyIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkluZm9ybWHDp8O1ZXMgcGFyYSBjb250YXRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjgiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Nb3N0cmFyIGRhZG9zIGRlIGNvbnRhdG8gYXBlbmFzIHBhcmEgb3MgY29udGF0b3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2OSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk7Do28gbW9zdHJhciBkYWRvcyBkZSBjb250YXRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzAiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NZXUgUGVyZmlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzEiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5FZGl0YXIgY29uZmlndXJhw6fDtWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzIiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5QZXNxdWlzYXIgdXN1w6FyaW9zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzMiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5WZWphIG8gc2V1IHBlcmZpbCBjb21vIG91dHJvIG8gdsOqZW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkVkaXRlIHN1YXMgY29uZmlndXJhw6fDtWVzLCBhZGljaW9uYXIgb3Mgc2V1cyBpbnRlcmVzc2VzIHBhcmEgc2VyIGVuY29udHJhZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlBlc3F1aXNhciBvdXRyb3MgdXN1w6FyaW9zIGUgYW1wbGlhciBzdWEgcmVkZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc2IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlBlc3F1aXNhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc3IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlVzdcOhcmlvIG9mZXJlY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3OCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5Vc3XDoXJpbyBwcm9jdXJhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzkiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+VGV4dG8gbGl2cmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5Ob21lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODEiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+RnVzbyBIb3LDoXJpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgyIiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPk9mZXJlY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MyIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5CdXNjYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg0IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlJlc3VsdGFkbyBkYSBwZXNxdWlzYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg1IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkHDp8O1ZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NiIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5BZGljaW9uYXIgYW9zIGNvbnRhdG9zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODciIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+U2VuZCBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODgiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+Q29udGF0b3MgZSBNZW5zYWdlbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4OSIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5QZW5kaW5nIGNvbnRhY3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTAiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5BY2VpdGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTEiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5OZWdhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkyIiBuYW1lPSJ1c2VyIGNvbnRhY3QgcmVxdWVzdCI+CisgICAgPHZhbHVlPk9sw6EsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTMiIG5hbWU9InVzZXIgY29udGFjdCByZXF1ZXN0Ij4KKyAgICA8dmFsdWU+Z29zdGFyaWEgZGUgYWRpY2lvbsOhLWxvIGNvbW8gY29udGF0by48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NCIgbmFtZT0idXNlciBjb250YWN0IHJlcXVlc3QiPgorICAgIDx2YWx1ZT5WZXJpZmlxdWUgb3Mgc2V1cyBwZWRpZG9zIGRlIGNvbnRhY3RvIGVtICRBUFBfTkFNRSBvdSBjbGlxdWUgc29icmUgb3MgbGlua3MgcGFyYSBhY2VpdGFyIG91IG5lZ2FyIG8gcGVkaWRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTUiIG5hbWU9ImFkZCB1c2VyIGNvbnRhY3QiPgorICAgIDx2YWx1ZT5Fc3RlIHVzdcOhcmlvIGrDoSBlc3TDoSBlbSBzdWEgbGlzdGEgZGUgY29udGF0b3Mgb3UgcmVjZWJldSB1bSBjb252aXRlIHBhcmEgc3VhIGxpc3RhIGRlIGNvbnRhdG9zIHF1ZSBuw6NvIGZvaSByZXNwb25kaWRhIGFpbmRhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk2IiBuYW1lPSJ1c2VyIGNvbnRhY3QgbWFpbCI+CisgICAgPHZhbHVlPlN1YSBsaXN0YSBkZSBjb250YXRvczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+RWRpdGUgc2V1IGNvbnRhdG8gZSBtZW5zYWdlbnMsICZsdDtici8mZ3Q7IGdlcmVuY2llIHNldXMgY29udGF0b3MgcGVuZGVudGVzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk4IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+Y29uZmlybW91IHZvY8OqIGNvbW8gY29udGF0byE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5OSIgbmFtZT0iY2hhdCBpbmZvIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMCIgbmFtZT0iY2hhdCBsb2cgaWNvbiI+CisgICAgPHZhbHVlPk1vc3RyYXIgLyBDb3BpYXIgbG9nIGRvIGNoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMSIgbmFtZT0iY2hhdCBsb2cgd2luZG93Ij4KKyAgICA8dmFsdWU+TG9nIGRvIGNoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QXNzdW50bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5FbnZpYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDYiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1lbnNzYWdlbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Tm92byBlbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DbGlxdWUgcGFyYSBlc2NyZXZlciB1bWEgbm92YSBtZW5zYWdlbSBwYXJhIHF1YXF1ZXIgdW0gZGUgc2V1cyBjb250YXRvczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Fc2NyZXZlciBub3ZhIG1lbnNhZ2VtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTAiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlBhcmE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFzc3VudG86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTIiIG5hbWU9IndoaXRlYm9hcmQgZnVsbC1maXQiPgorICAgIDx2YWx1ZT5BdGl2ZSBhanVzdGUgZSBhIGxvdXNhIGlyw6EgYW1wbGlhciBuYSB0ZWxhIGludGVpcmEsIGVudMOjbyAmbHQ7YnIvJmd0OyBkb2N1bWVudG9zIGVzdGFyw6NvIHZpc8OtdmVpcyBkZSBhY29yZG8gY29tIGEgcmVzb2x1w6fDo28gZGEgdGVsYSBkZSBjYWRhIHBhcnRpY2lwYW50ZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMyIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+RXhwdWxzYXIgdXN1w6FyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNCIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+Vm9jw6ogbsOjbyBwb2RlIGV4cHVsc2FyIGEgc2kgbWVzbW8gZGEgc2FsYSBkZSBjb25mZXLDqm5jaWEhIFNlIHZvY8OqIHF1aXNlciBzYWlyIGRhIHNhbGEgZmVjaGUgbyBuYXZlZ2Fkb3IhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTUiIG5hbWU9ImtpY2stdXNlciI+CisgICAgPHZhbHVlPlZvY8OqIHJlYWxtZW50ZSBkZXNlamEgZGVzY29uZWN0YXIgZXN0ZSB1c3XDoXJpbyBkYSBzYWxhIGRlIGNvbmZlcsOqbmNpYT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNiIgbmFtZT0ia2ljay11c2VyIj4KKyAgICA8dmFsdWU+Q29uZmlybWUgYcOnw6NvIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE3IiBuYW1lPSJraWNrLXVzZXIiPgorICAgIDx2YWx1ZT5Wb2PDqiBuw6NvIHBvZGUgZXhwdWxzYXIgdW0gU3VwZXItTW9kZXJhZG9yIGRlIHVtYSBzYWxhITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Cb29rIGNvbmZlcmVuY2Ugcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5JbmljaWFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjAiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkZpbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGljaW9uYXIgdW1hIHNvbGljaXRhw6fDo28gZGUgcmV1bmnDo28gb3BjaW9uYWwgcGFyYSBhIG1lbnNhZ2VtIGUgY3JpYXIgdW1hIHNhbGEgZGUgY29uZmVyw6puY2lhLiBPIGV2ZW50byDDqSBjb3BpYWRvIG5vIGNhbGVuZMOhcmlvIGRlIGNhZGEgcGFydGljaXBhbnRlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DYWl4YSBkZSBFbnRyYWRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkVudmlhZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TGl4bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Fc3RlIMOpIHZvY8OqISBWb2PDqiBuw6NvIHBvZGUgYWRpY2lvbmFyIGEgc2kgbWVzbW8gY29tbyBjb250YXRvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI2IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+TyB1c3XDoXJpbyBqw6EgZXN0w6EgbmVnYWRvITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+TyB1c3XDoXJpbyBqw6EgZXN0w6EgYXByb3ZhZG8hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjgiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Fc3RlIGhhc2ggZGUgY29udGF0byBkbyB1c3XDoXJpbyDDqSBpbnbDoWxpZG8hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjkiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Vc3XDoXJpbyBhZGljaW9uYWRvIMOgIGxpc3RhIGRlIGNvbnRhdG9zITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMwIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VXN1w6FyaW8gbmVnYWRvIGNvbW8gY29udGF0byBlIHJlbW92aWRvIGRhIGxpc3RhIGRlIGNvbnRhdG9zIHBlbmRlbnRlcyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPk7Do28gaMOhIGVzc2UgY29udGF0byE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlNlcsOhIHF1ZSB2b2PDqiByZWFsbWVudGUgZGVzZWphIHJlbW92ZXIgbyBjb250YXRvPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMzIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+Q29uZmlybSBjb250YWN0IHJlbW92YWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkRlbGV0ZSBjb250YWN0IGZyb20gbGlzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM1IiBuYW1lPSJ1c2VyIHByb2ZpbGUiPgorICAgIDx2YWx1ZT5Vc2VyIFByb2ZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNiIgbmFtZT0idXNlciBwcm9maWxlIj4KKyAgICA8dmFsdWU+TW9zdHJhciBvIHBlcmZpbCBkbyB1c3XDoXJpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM3IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5NZXNzYWdlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5QZXNxdWlzYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzOSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VsZWNpb25hciB0b2RvczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EZXNtYXJjYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0MSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VsZWNpb25hciBuw6NvIGxpZGFzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbGVjaW9uZSBsZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0MyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TW92ZXIgcGFyYSBwYXN0YSAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRpY2lvbmFyIG5vdmEgcGFzdGEgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkV4Y2x1aXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGVsZXRlZCBtYWlscyBhcmUgc3RpbGwgaW4geW91ciB0cmFzaCBmb2xkZXIhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDciIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1hcmNhciBuw6NvIGxpZGFzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1hcmNhciBsaWRhczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5SZXNwb25kZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+UmVzcG9uZGVyIGEgdG9kb3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+UGFyYSBmcmVudGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QcOnw7VlcyAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkVudmlhciBtZW5zYWdlbSBwcml2YWRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk5hZGEgc2VsZWNpb25hZG8hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1vdmVyIHBhcmEgQ2FpeGEgZGUgRW50cmFkYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU2IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EZWxldGUgKGZpbmFsKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU3IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Fc3NhIGHDp8OjbyBuw6NvIHBvZGUgc2VyIGRlc2ZlaXRhITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGljaW9uYXIgcGFzdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1OSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRpY2lvbmFyIHBhc3RhcyBlIG9yZ2FuaXphciBzdWFzIG1lbnNhZ2VucyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRpY2lvbmFyIHBhc3RhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkaWNpb25hcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+ZXhjbHVpciBwYXN0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+Vm9jw6ogbsOjbyBwb2RlIGV4Y2x1aXIgZXN0YSBwYXN0YSwgYWluZGEgZXhpc3RlbSBuZWxhISBFeGNsdWlyIHByaW1laXJvIGFzIG1lbnNhZ2VucyBvdSBtb3bDqi1sb3MgcGFyYSBvdXRyYSBwYXN0YS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPkVkaXQgbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+Vm9jw6ogcmVhbG1lbnRlIHF1ZXIgYXBhZ2FyIGVzdGEgcGFzdGE/IE7Do28gaMOhIG1hbmVpcmEgZGUgZGVzZmF6ZXIgaXNzby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPk8gc2V1IHBlZGlkbyBmb2kgZW52aWFkbyBwYXJhIG8gdXN1w6FyaW8uIE8gdXN1w6FyaW8gcmVjZWJlcsOhIHVtYSBub3RpZmljYcOnw6NvIHBhcmEgYWNlaXRhciBvdSBuZWdhciBvIHNldSBwZWRpZG8uIEFwZW5hcyBvcyBwZWRpZG9zIGFjZWl0b3MgZXN0w6NvIGVtIHN1YSBsaXN0YSBkZSBjb250YXRvcywgw6kgY2xhcm8hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjciIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5NZW5zYWdlbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY4IiBuYW1lPSJ1c2VyIHZpZXcgcHJvZmlsZSI+CisgICAgPHZhbHVlPk8gdXN1w6FyaW8gbsOjbyBjb21wYXJ0aWxoYSBzZXVzIGRhZG9zIGRlIGNvbnRhdG8gcGVzc29hbC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2OSIgbmFtZT0idXNlciB2aWV3IHByb2ZpbGUiPgorICAgIDx2YWx1ZT5PIHVzdcOhcmlvIG7Do28gY29tcGFydGlsaGEgc2V1cyBkYWRvcyBwZXNzb2FpcyBkZSBjb250YWN0byBzw7MgcGFyYSBjb250YXRvcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3MCIgbmFtZT0idXNlciB2aWV3IHByb2ZpbGUiPgorICAgIDx2YWx1ZT5FbmRlcmXDp28gJmFtcDsgVGVsZWZvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3MSIgbmFtZT0iZXJyb3IgY29kZSI+CisgICAgPHZhbHVlPlNldSBjw7NkaWdvIGRlIGNvbnZpdGUgbsOjbyDDqSB2w6FsaWRvLCBvIGPDs2RpZ28gc8OzIMOpIHbDoWxpZG8gZHVyYW50ZSBlc3RhIGRhdGEgZSBob3JhIGVzcGVjw61maWNhczo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3MiIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPkVzdGUgZXZlbnRvIGVzdMOhIGxpZ2FkbyBhIHbDoXJpb3MgY2FsZW5kw6FyaW9zIGRlIG91dHJvcyB1c3XDoXJpb3MuIFN1YSBhbHRlcmHDp8OjbyBpcsOhIHRhbWLDqW0gYXR1YWxpemFyIG8gY2FsZW5kw6FyaW8gZGVsZXMuIFNlcsOhIHF1ZSB2b2PDqiByZWFsbWVudGUgZ29zdGFyaWEgZGUgYXR1YWxpemFyIG8gZXZlbnRvPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjczIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Q29uZmlybWUgYXR1YWxpemHDp8OjbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc0IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+UGVybWl0aXIgcXVlIGNvbnRhdG8gdmVqYSBtZXUgY2FsZW5kw6FyaW8gKHNvbWVudGUgdmlzdWFsaXphw6fDo28pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzUiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Ow6NvIGNvbXBhcnRpbGhlIG8gY2FsZW5kw6FyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkNhbGVuZMOhcmlvIGRlIGNvbnRhdG9zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzciIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5TZXVzIGNvbnRhdG9zIGRldmVtIGFwcm92w6EtbG8gcHJpbWVpcm8gcGFyYSBwb2RlciB2ZXIgc2V1IGNhbGVuZMOhcmlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc4IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+Vm9jw6ogbsOjbyBwb2RlIGFybWF6ZW5hciBvdSBleGNsdWlyIGV2ZW50b3MgZGUgb3V0cm9zIGNhbGVuZMOhcmlvcy4gU29tZW50ZSBkbyBzZXUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzkiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Nb3N0cmFyIG8gbWV1IGNhbGVuZMOhcmlvIGRlIG5vdm8hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODAiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Fc3RlIGV2ZW50byBlc3TDoSBsaWdhZG8gYSB2w6FyaW9zIGNhbGVuZMOhcmlvcyBkZSBvdXRyb3MgdXN1w6FyaW9zLiBTdWEgYcOnw6NvIHRhbWLDqW0gaXLDoSBhcGFnYXIgbyBldmVudG8gZG8gY2FsZW5kYXJpbyBkZWxlcy4gU2Vyw6EgcXVlIHZvY8OqIHJlYWxtZW50ZSBkZXNlamEgYXBhZ2FyIG8gZXZlbnRvPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgxIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Q29uZmlybWUgYcOnw6NvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODIiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5FbnRyZSBuYSBzYWxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODMiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5BY2Vzc2UgYSBzYWxhIGRlIGNvbmZlcsOqbmNpYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Iw6EgdW1hIHNhbGEgZGUgY29uZmVyw6puY2lhcyBlIGV2ZW50byByZXNlcnZhZG9zIGNvbSBlc3RhIG1lbnNhZ2VtIHByaXZhZGEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODUiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Wb2PDqiBwcmVjaXNhIGFybWF6ZW5hciBvIGV2ZW50byBwcmltZWlybyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NiIgbmFtZT0iYWNjZXNzIHJvb21zIGVycm9yIj4KKyAgICA8dmFsdWU+TsOjbyBow6Egc2FsYSBkaXNwb27DrXZlbC4gTyBldmVudG8gbm8gY2FsZW5kw6FyaW8gcGFyYSBlc3RhIHNhbGEgasOhIGZvaSBhcGFnYWRvITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg3IiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5Fc2NvbGhhIHNldSBhcGVsaWRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODgiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPlByaW1laXJvIG5vbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4OSIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+w5psdGltbyBub21lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTAiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPkVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTEiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPk9rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTIiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPlRhbWFuaG8gbcOtbmltbyA0IGNhcmFjdGVyZXMhIFRhbnRvIE5vbWUgZSBTb2JyZW5vbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MyIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+UG9yIGZhdm9yLCBlbnRyZSBjb20gZW1haWwgdsOhbGlkbyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5NCIgbmFtZT0iYXV0aCBmcm9tIj4KKyAgICA8dmFsdWU+RmFjZWJvb2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5NSIgbmFtZT0iYXV0aCBmb3JtIj4KKyAgICA8dmFsdWU+RW50cmFyIGNvbSBzdWEgY29udGEgZG8gRmFjZWJvb2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5NiIgbmFtZT0idmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+TWVtYnJvIGRlc2RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTciIG5hbWU9ImRpcmVjdCBsb2dpbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Vm9jw6ogY29uZWN0YWRvIGNvbSBzdWEgY29udGEgZG8gRmFjZWJvb2suIFZvY8OqIGRldmUgYXR1YWxpemFyIHNldSBwZXJmaWwgY29tIG8gZS1tYWlsIGNvcnJldG8uIENhc28gY29udHLDoXJpbywgdm9jw6ogbsOjbyByZWNlYmVyw6EgY29udml0ZXMgZSBtZW5zYWdlbnMgcHJpdmFkYXMgZGUgb3V0cm9zIHVzdcOhcmlvcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5OCIgbmFtZT0iZGlyZWN0IGxvZ2luIG1lc3NhZ2UgaGVhZGVyIj4KKyAgICA8dmFsdWU+TWVuc2FnZW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5OSIgbmFtZT0iZGlyZWN0IGxvZ2luIG1lc3NhZ2UgY2hlY2tib3ggY29udHJvbCI+CisgICAgPHZhbHVlPk7Do28gbW9zdHJhciBtZW5zYWdlbSBkZSBhdHVhbGl6YcOnw6NvIGRlIHBlcmZpbCBub3ZhbWVudGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMCIgbmFtZT0icHJvZmlsZSBzZXR0aW5ncyBidXR0b24iPgorICAgIDx2YWx1ZT5tYWlzIG9ww6fDtWVzIGRlIHRlbGEgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk5vdmEgbWVuc2FnZW0gcHJpdmFkYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2xpcXVlIGFxdWkgcGFyYSB2aXNpdGFyIG8gc2V1IHBlcmZpbCBwYXJhIHZlciBhIG1lbnNhZ2VtIGNvbXBsZXRhIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5SZXNwb25kZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwNCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+U2FsYXMgZSBiYXRlLXBhcG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwNSIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+TWluaGFzIHNhbGFzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDYiIG5hbWU9Im15IHJvb21zIj4KKyAgICA8dmFsdWU+TWluaGEgc2FsYSBkZSBjb25mZXLDqm5jaWEgKGRlIDEtMTYgdXN1w6FyaW9zKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA3IiBuYW1lPSJteSByb29tcyI+CisgICAgPHZhbHVlPk1pbmhhIHNhbGEgZGUgc2VtaW7DoXJpbyAoV2ViaW5hcikgKGRlIDEtMTIwIHVzdcOhcmlvcyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwOCIgbmFtZT0icm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPklEIGRvIGRvbm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwOSIgbmFtZT0ibG9naW4gZXJyb3IiPgorICAgIDx2YWx1ZT5EaWdpdGUgdW1hIHNlbmhhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTAiIG5hbWU9ImxvZ2luIGVycm9yIj4KKyAgICA8dmFsdWU+Vm9jw6ogcHJlY2lzYSBkZSB1bWEgY29udGEgY29tIG7DrXZlbCBkZSBVc3XDoXJpbywgTW9kZXJhZG9yIG91IEFkbWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTEiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5XZWItU2VydmljZSAoYWNlc3NvIGFwZW5hcyBhdHJhdsOpcyB2aWEgU09BUCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMiIgbmFtZT0idXBsb2FkIGZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5DYXJyZWdhciBkaXJldGFtZW50ZSBuYSBsb3VzYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzEzIiBuYW1lPSJ3aGl0ZWJvYXJkIGNsb3NlIGNvbmZpcm1hdGlvbiI+CisgICAgPHZhbHVlPlZvY8OqIHJlYWxtZW50ZSBkZXNlamEgcmVtb3ZlciBlc3RhIGxvdXNhPyBFc3NhIGHDp8OjbyBuw6NvIHBvZGUgc2VyIGRlc2ZlaXRhITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE0IiBuYW1lPSJ3aGl0ZWJvYXJkIGxvYWQgV01MIj4KKyAgICA8dmFsdWU+Q2FycmVnYXIgcGFyYSBhIGxvdXNhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTUiIG5hbWU9InJlY29yZGluZyBmbGFnIj4KKyAgICA8dmFsdWU+TsOjbyBzZSBlc3F1ZcOnYSBkZSAiSW5pY2lhciBncmF2YcOnw6NvIiwgc2Ugdm9jw6ogcXVpc2VyIHRlciBhIHJldW5pw6NvIGdyYXZhZGEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTYiIG5hbWU9InJlY29yZGluZyBmbGFnIj4KKyAgICA8dmFsdWU+SW5pY2lhciBncmF2YcOnw6NvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTciIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+U2V0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE4IiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPkNpcmN1bG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxOSIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT5MaW5oYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIwIiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPlF1YWRyYWRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjEiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+VHJpYW5ndWxvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjIiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5UZXh0by9Ob3RhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjMiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5DbGlwYXJ0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI0IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+RGVzZW5obyBsaXZyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI1IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+U2VsZWNpb25hci9Nb3ZlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI2IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+RGVzZW5oYXIgdW1hIGZvcm1hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjciIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5Db3J0YXIvTW92ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyOCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlpvb20gSW4vT3V0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjkiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5JbXByaW1pcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMwIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+RGVzZmF6ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMSIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkxpeG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMiIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkFkaWNpb25hciBHcmFkZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMzIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+Q29tcGFydGlsaGFyIEFycXVpdm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNCIgbmFtZT0iaWNvbiBzdWJtZW51Ij4KKyAgICA8dmFsdWU+U2VsZWNpb25hciBGb3JtYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM1IiBuYW1lPSJpY29uIHN1Ym1lbnUiPgorICAgIDx2YWx1ZT5TZWxlY2lvbmFyIENsaXBhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNiIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkNvcGlhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM3IiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+UmVjb3J0YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzOCIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkNvbGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzkiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5FeGNsdWlyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDAiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5Wb2PDqiByZWFsbWVudGUgZGVzZWphIGV4Y2x1aXIgdG9kbyBvIGNvbnRlw7pkbyBkYSBsb3VzYT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MSIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkNhcnJlZ2FyIGRpcmVjdGFtZW50ZSBwYXJhIGEgbG91c2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MiIgbmFtZT0iYXR0ZW5kZWVzIj4KKyAgICA8dmFsdWU+UGFydGljaXBhbnRlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQzIiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5HZXJlbnRlIGRlIHBhcnRpY2lwYW50ZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NCIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+UHJlc2VudGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NSIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+Q29udHJvbGUgcmVtb3RvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDYiIG5hbWU9ImF0ZW5kZWUgbWFuYWdlciI+CisgICAgPHZhbHVlPkVqZXRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ3IiBuYW1lPSJjaGF0Ij4KKyAgICA8dmFsdWU+QmF0ZS1wYXBvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDgiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPkNvbnZpZGFyIFBhcnRpY2lwYW50ZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0OSIgbmFtZT0iaW52aXRlIGF0dGVuZGVlIj4KKyAgICA8dmFsdWU+UG9yIEVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTAiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPlVzZXIgaXMgbW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTEiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPldlYmNhbSBkbyB1c3XDoXJpbyBsaWdhZGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1MiIgbmFtZT0iZmlsbF9vcHRpb24iPgorICAgIDx2YWx1ZT5EZXNhdGl2YXIgcHJlZW5jaGltZW50byBkYSBmb3JtYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUzIiBuYW1lPSJmaWxsX29wdGlvbiI+CisgICAgPHZhbHVlPkF0aXZhciBwcmVlbmNoaW1lbnRvIGRhIGZvcm1hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTQiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5TbmFwIHRvIEdyaWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NSIgbmFtZT0iYWxsb3dfcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UGVybWl0aXIgZ3JhdmHDp8OjbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU2IiBuYW1lPSJ3YWl0X2Zvcl9yZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Fc3BlcmUgcGFyYSBncmF2YcOnw6NvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTciIG5hbWU9ImhpZGVfdG9wX2JhciI+CisgICAgPHZhbHVlPk9jdWx0YXIgYmFycmEgc3VwZXJpb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1OCIgbmFtZT0iZmlsZUV4cGxvcmVyIj4KKyAgICA8dmFsdWU+UmVwcm9kdXppciB2w61kZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1OSIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPlZvY8OqIHJlYWxtZW50ZSBkZXNlamEgZXhjbHVpciBvYmpldG9zIGRlc2VuaGFkb3Mgbm8gc2xpZGUgYXR1YWw/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjAiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPkFjZWl0YXIgZSBjb25jZWRlciBkaXJlaXRvIGRlIHVzdcOhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjEiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPk5lZ2FyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjIiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPkV1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjMiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPkF0aXZpZGFkZXMgZSBhw6fDtWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjQiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5SZW1vdmVyIGEgbG91c2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NSIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPlZvY8OqIHByZWNpc2EgZGEgbW9kZXJhw6fDo28gb3UgbyBkaXJlaXRvIGRlIGRlc2VuaGFyIG5vIHF1YWRybyBicmFuY28gcGFyYSByZW1vdmVyIHF1YWRyb3MhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjYiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5Ow6NvIMOpIHBlcm1pdGlkbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY3IiBuYW1lPSJ1c2VyX2xlZnRfYWN0X21zZyI+CisgICAgPHZhbHVlPnNhaXUgZGEgc2FsYS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2OCIgbmFtZT0iY2xpcGFydCBpY29ucyI+CisgICAgPHZhbHVlPsONY29uZXMgZGUgTWF0ZW3DoXRpY2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2OSIgbmFtZT0iY2xpcGFydCBpY29ucyI+CisgICAgPHZhbHVlPk5lbmh1bWEgY2F0ZWdvcmlhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzAiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPkNvci1Fc3RpbG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+UXVhbGlkYWRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzIiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPkRvbcOtbmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzMiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnZpc2l0YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NCIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+cmVkb3JhbmdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzUiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPlZlcmRlIG1hciBtw6lkaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NiIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+YXp1bCBjZWxlc3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzciIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPkF6dWwgZXNjdXJvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzgiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPkFtYXJlbG8gb3VybzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc5IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5QcmF0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgwIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5kZWZpbmljYW8gZG8gdXN1w6FyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4MSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+byBtZWxob3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4MiIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+dXBsb2FkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODMiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPm1lZGlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODQiIG5hbWU9Im11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5GZWNoYXIgbyBtaWNyb2ZvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NSIgbmFtZT0idW5tdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+QXRpdmFyIG1pY3JvZm9uZSBnbG9iYWxtZW50ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg2IiBuYW1lPSJnaXZlIGV4Y2x1c2l2ZSBhdWRpbyI+CisgICAgPHZhbHVlPk1pY3JvZm9uZSBkb3Mgb3V0cm9zIG11ZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NyIgbmFtZT0ibXV0ZSBzZWxmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Wb2PDqiBlc3TDoSBnbG9iYWxtZW50ZSBzaWxlbmNpYWRvIHBlbG8gbW9kZXJhZG9yLiBWb2PDqiBuw6NvIHBvZGUgcmVhdGl2YXIhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODgiIG5hbWU9Im11dGUgc2VsZiBjb25maXJtIG1lc3NhZ2UgdGl0bGUiPgorICAgIDx2YWx1ZT5TaWxlbmNpYXIgbyBtaWNyb2ZvbmUgdG90YWxtZW50ZT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4OSIgbmFtZT0ibXV0ZSBzZWxmIGNvbmZpcm0gbWVzc2FnZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Vm9jw6ogcmVhbG1lbnRlIHF1ZXIgc2lsZW5jaWFyLXNlIGdsb2JhbG1lbnRlPyBOZW5odW0gb3V0cm8gdXN1w6FyaW8gdmFpIG91dmlyIHZvY8OqITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkwIiBuYW1lPSJtdXRlIG90aGVycyBjb25maXJtIG1lc3NhZ2UgdGl0bGUiPgorICAgIDx2YWx1ZT5TaWxlbmNpYXIgbWljcm9mb25lIGxvY2FsbWVudGU/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTEiIG5hbWU9Im11dGUgb3RoZXJzIGNvbmZpcm0gbWVzc2FnZSI+CisgICAgPHZhbHVlPlZvY8OqIHJlYWxtZW50ZSBxdWVyIHNpbGVuY2lhciBlc3RlIG1pY3JvZm9uZT8gVm9jw6ogc8OzIHBvZGUgc2lsZW5jacOhLWxvIGxvY2FsbWVudGUgZW0gc3VhIHRlbGEuIE7Do28gdGVtIG5lbmh1bSBlZmVpdG8gcGFyYSBvdXRyb3MgdXN1w6FyaW9zLiBBcGVuYXMgb3MgbW9kZXJhZG9yZXMgcG9kZW0gZGVzbGlnw6EtbG8gZ2xvYmFsbWVudGUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTIiIG5hbWU9Im11dGUgb3RoZXJzIGNvbmZpcm0gbWVzc2FnZSB0aXRsZSI+CisgICAgPHZhbHVlPlNpbGVuY2lhciBtaWNyb2ZvbmUgZ2xvYmFsbWVudGU/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTMiIG5hbWU9Im11dGUgb3RoZXJzIG1vZGVyYXRvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Vm9jw6ogcmVhbG1lbnRlIHF1ZXIgcGFyYSBzaWxlbmNpYXIgZXN0ZSB1c3XDoXJpbyBnbG9iYWxtZW50ZT8gTmVuaHVtIG91dHJvIHVzdcOhcmlvIHZhaSBvdXZpLWxvIG1haXMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTQiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+U2V1IHNvbSBlc3TDoSBsaWdhZG8uIENsaXF1ZSBhcXVpIHBhcmEgZW52aWFyIG1lbnNhZ2VtIGFvIG1vZGVyYWRvciBwYXJhIHNpbGVuY2lhciBzZXUgbWljcm9mb25lIChwYXJhIHRvZGEgc2FsYSBkZSBjb25mZXLDqm5jaWEpITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk1IiBuYW1lPSJtdXRlIHN0YXR1cyBpY29ucyI+CisgICAgPHZhbHVlPlNldSBzb20gZXN0w6EgZGVzbGlnYWRvLiBDbGlxdWUgYXF1aSBwYXJhIGVudmlhciBtZW5zYWdlbSBhbyBtb2RlcmFkb3IgcGFyYSBhdGl2YXIgc2V1IG1pY3JvZm9uZSAocGFyYSB0b2RvcyBuYSBzYWxhIGRlIGNvbmZlcsOqbmNpYSkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTYiIG5hbWU9Im11dGUgYXBwbHkgc2VsZiBvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Z29zdGFyaWEgcXVlIG8gbW9kZXJhZG9yIHNpbGVuY2lhc3NlIG1ldSBtaWNyb2ZvbmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTciIG5hbWU9Im11dGUgYXBwbHkgc2VsZiBvZmYgbWVzc2FnZSI+CisgICAgPHZhbHVlPmdvc3RhcmlhIHF1ZSBvIG1vZGVyYWRvciBoYWJpbGl0YXNzZSBtaWNyb2ZvbmUgZ2xvYmFsbWVudGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTgiIG5hbWU9Im11dGUgYXBwbHkgb2YgbWVzc2FnZSI+CisgICAgPHZhbHVlPmdvc3RhcmlhIHF1ZSBvIG1vZGVyYWRvciBoYWJpbGl0YXNzZSBvIG1pY3JvZm9uZSBkZWxlL2RlbGEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTkiIG5hbWU9Im11dGUgYXBwbHkgb2YgbWVzc2FnZSI+CisgICAgPHZhbHVlPmdvc3RhcmlhIHF1ZSBvIG1vZGVyYWRvciBkZXNhYmlsaXRlIG8gbWljcm9mb25lIGRlbGUvZGVsYS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMCIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5Vbm11dGUgbWljcm9waG9uZS4gQ2xpY2sgaGVyZSB0byBtdXRlIGhpcy9oZXIgbWljcm9waG9uZSBnbG9iYWxseSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMSIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5NaWNyb2ZvbmUgbXVkby4gQ2xpcXVlIGFxdWkgcGFyYSBhdGl2YXIgbyBtaWNyb2ZvbmUgc2V1IC8gZGVsYSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMiIgbmFtZT0ibXV0ZSBzZWxmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Fc3RlIHVzdcOhcmlvIGZvaSBzaWxlbmNpYWRvIHBlbG8gbW9kZXJhZG9yLiBWb2PDqiBuw6NvIHBvZGUgYXRpdmEtbG8hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDMiIG5hbWU9Im11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5TaWxlbmNpYXIgbyBtaWNyb2ZvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwNCIgbmFtZT0idW5tdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+QXRpdmFyIG8gbWljcm9mb25lIHBhcmEgdG9kYSBhIHNhbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwNSIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk1pY3JvZm9uZSBtdWRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDYiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPkF0aXZhciBtaWNyb2ZvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwNyIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlNpbGVuY2lhciBtaWNyb2ZvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwOCIgbmFtZT0idW5tdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+QXRpdmFyIG1pY3JvZm9uZSBwYXJhIHRvZGEgYSBzYWxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDkiIG5hbWU9Im11dGUgbW9kZXJhdG9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Tb21lbnRlIG1vZGVyYWRvcmVzIHBvZGVtIHNpbGVuY2lhciBvdSBhdGl2YXIgdW0gdXN1w6FyaW8hIFBhcmEgc2lsZW5jaWFyIG8gbWljcm9mb25lIHByw7NwcmlvOiBQb3IgZmF2b3IsIHVzZSBvIMOtY29uZSBkZSBtaWNyb2ZvbmUgbmEgY2FpeGEgZGUgdsOtZGVvITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDEwIiBuYW1lPSJwb2xsX25hbWUiPgorICAgIDx2YWx1ZT5Ob21lIGRhIGVucXVldGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMSIgbmFtZT0icG9sbF9uYW1lIj4KKyAgICA8dmFsdWU+Vm9jw6o8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMiIgbmFtZT0iYXJjaGl2ZWRfcG9sbHMiPgorICAgIDx2YWx1ZT5FbnF1ZXRlcyBhcnF1aXZhZGFzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTMiIG5hbWU9ImFjdGl2ZV9wb2xsIj4KKyAgICA8dmFsdWU+YXRpdm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNCIgbmFtZT0iY2hhcnRfc2ltcGxlIj4KKyAgICA8dmFsdWU+R3LDoWZpY28gc2ltcGxlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE1IiBuYW1lPSJjaGFydF9waWUiPgorICAgIDx2YWx1ZT5HcsOhZmljbyBkZSBwaXp6YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE2IiBuYW1lPSJzaWduX3VwX3ZhbGlkYXRpb24iPgorICAgIDx2YWx1ZT5Qb3IgZmF2b3IsIGluZGlxdWUgZS1tYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTciIG5hbWU9ImNoYXRfbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+Tm92YShzKSBtZW5zYWdlbShzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE4IiBuYW1lPSJwb2xsX2Nsb3NlIj4KKyAgICA8dmFsdWU+RW5jZXJyYXIgZW5xdWV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE5IiBuYW1lPSJwb2xsX2Nsb3NlX2NvbmZpcm0iPgorICAgIDx2YWx1ZT5UZW0gY2VydGV6YSBxdWUgZGVzZWphIGVuY2VycmFyIGVzdGEgZW5xdWV0ZT8gTmluZ3XDqW0gc2Vyw6EgY2FwYXogZGUgdm90YXIgYXDDs3MgaXN0by48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMCIgbmFtZT0icG9sbF9kZWxldGUiPgorICAgIDx2YWx1ZT5FeGNsdWlyIEVucXVldGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMSIgbmFtZT0icG9sbF9kZWxldGVfY29uZmlybSI+CisgICAgPHZhbHVlPlRlbSBjZXJ0ZXphIGRlIHF1ZSBkZXNlamEgZXhjbHVpciBlc3RhIGVucXVldGU/IE9zIHJlc3VsdGFkb3Mgc2Vyw6NvIGV4Y2x1w61kb3MuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjIiIG5hbWU9Imxhbmd1YWdlX2NvZGUiPgorICAgIDx2YWx1ZT5MYW5ndWFnZSBJU08gQ29kZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIzIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fcGVybWlzc2lvbiI+CisgICAgPHZhbHVlPlBlcm1pdGlyL05lZ2FyIG8gZGlyZWl0byBkZSBkYXIgw6F1ZGlvIGV4Y2x1c2l2by48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNCIgbmFtZT0iYWxsb3dfZXhjbHVzaXZlX2F1ZGlvX3Blcm1pc3Npb24iPgorICAgIDx2YWx1ZT5QZXJtaXRpciBhbyB1c3XDoXJpbyBkYXIgw6F1ZGlvIGV4Y2x1c2l2bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI1IiBuYW1lPSJkZW55X2V4Y2x1c2l2ZV9hdWRpb19wZXJtaXNzaW9uIj4KKyAgICA8dmFsdWU+TmVnYXIgdXN1w6FyaW8gZGFyIMOhdWRpbyBleGNsdXNpdm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNiIgbmFtZT0iZXhjbF9hdWRpbyBhcHBseSBzZWxmIG9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5nb3N0YXJpYSBkZSBvYnRlciB1bWEgcGVybWlzc8OjbyBwYXJhIMOhdWRpbyBleGNsdXNpdm8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjciIG5hbWU9ImV4Y2xfYXVkaW8gYXBwbHkgb2YgbWVzc2FnZSI+CisgICAgPHZhbHVlPmdvc3RhcmlhIGRlIG9idGVyIHBlcm1pc3PDo28gcGFyYSDDoXVkaW8gZXhjbHVzaXZvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI4IiBuYW1lPSJleGNsX2F1ZGlvIHN0YXR1cyBpY29ucyI+CisgICAgPHZhbHVlPmRhciBwZXJtaXNzw6NvIHBhcmEgw6F1ZGlvIGV4Y2x1c2l2by48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyOSIgbmFtZT0iY2FtX3Jlc29sdXRpb24iPgorICAgIDx2YWx1ZT5SZXNvbHXDp8OjbyBkYSBjYW1lcmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzMCIgbmFtZT0iY2FtX3Jlc29sdXRpb25faW5mbyI+CisgICAgPHZhbHVlPkFsdGVyYXIgYSByZXNvbHXDp8OjbyBhZmV0YSBhIGxhcmd1cmEgZGUgYmFuZGEsIGZvdG8gbWFpb3IgcHJlY2lzYSBkZSBtYWlzIGxhcmd1cmEgZGUgYmFuZGEhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzEiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19lcnJvciI+CisgICAgPHZhbHVlPlZvY8OqIG7Do28gdGVtIHBlcm1pc3PDo28gY29uY2VkZXIgYXVkaW8gZXhjbHVzaXZvIGEgc2kgbWVzbW8gb3Ugb3V0cmFzIHBlc3NvYXMuIFZvY8OqIHByZWNpc2EgdGVyIHBlcm1pc3NhbyBkbyBtb2RlcmFkb3Igb3UgcGVkaXIgYW8gbW9kZXJhZG9yIHBhcmEgbGhlIGRhciDDoXVkaW8gZXhjbHVzaXZvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMyIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fYXNrIj4KKyAgICA8dmFsdWU+R29zdGFyaWEgZGUgb2J0ZXIgbyBkaXJlaXRvIGV4Y2x1c2l2byBwYXJhIMOhdWRpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMzIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fYWN0aW9uIj4KKyAgICA8dmFsdWU+RMOqIMOhdWRpbyBleGNsdXNpdm8gcGFyYSBtaW0gKGVtIGFsdGVybmF0aXZhIGNsaXF1ZSBzb2JyZSBvIHbDrWRlbyBwb2Qgb3UgcHJlc3Npb25lIEYxMik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNCIgbmFtZT0ibWljcm8gaXMgb24iPgorICAgIDx2YWx1ZT5NaWNyb2ZvbmUgZXN0w6EgbGlnYWRvITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM1IiBuYW1lPSJtaWNybyBpcyBvZmYiPgorICAgIDx2YWx1ZT5NaWNyb2ZvbmUgZXN0w6EgbXVkbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM2IiBuYW1lPSJoaWRlX2NoYXQiPgorICAgIDx2YWx1ZT5PY3VsdGFyIGJhdGUtcGFwbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM3IiBuYW1lPSJoaWRlX2FjdGl2aXRpZXNfYW5kX2FjdGlvbnMiPgorICAgIDx2YWx1ZT5PY3VsdGFyIGF0aXZpZGFkZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzOCIgbmFtZT0iaGlkZV9maWxlc19leHBsb3JlciI+CisgICAgPHZhbHVlPk9jdWx0YXIgbyBleHBsb3JhZG9yIGRlIGFycXVpdm9zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzkiIG5hbWU9ImhpZGVfYWN0aW9uc19tZW51Ij4KKyAgICA8dmFsdWU+T2N1bHRhciBtZW51IGRlIGHDp8O1ZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MCIgbmFtZT0iaGlkZV9zY3JlZW5fc2hhcmluZyI+CisgICAgPHZhbHVlPk9jdWx0YXIgbyBjb21wYXJ0aWxoYW1lbnRvIGRlIHRlbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MSIgbmFtZT0iaGlkZV93aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+T2N1bHRhciBhIGxvdXNhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDIiIG5hbWU9InNob3cgbWljcm9waG9uZSBzdGF0dXMiPgorICAgIDx2YWx1ZT5Nb3N0cmFyIHN0YXR1cyBkZSBtaWNybyBubyB2w61kZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MyIgbmFtZT0ibGF5b3V0X29wdGlvbnMiPgorICAgIDx2YWx1ZT5PcMOnw7VlcyBkZSBsYXlvdXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0NCIgbmFtZT0iY2FsZW5kYXIgbmV3IGJ1dHRvbiI+CisgICAgPHZhbHVlPk5vdm8gRXZlbnRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDUiIG5hbWU9ImNhbGVuZGFyIHBhc3N3b3JkIGluZm8gdGV4dCI+CisgICAgPHZhbHVlPlByb3RlZ2lkbyBwb3Igc2VuaGEgc8OjbyBvcyBsaW5rcyBwYXJhIGEgY29uZmVyw6puY2lhIHF1ZSBzw6NvIGVudmlhZG9zIHBhcmEgb3MgcGFydGljaXBhbnRzIHF1YW5kbyB2b2PDqiBzYWx2YXIgbyBjYWxlbmTDoXJpbyBkZSBldmVudG9zLCBlIG7Do28gYSBzYWxhISBJc3NvIHNpZ25pZmljYSBxdWUgc2Ugdm9jw6ogc2FsdmFyIG8gZXZlbnRvIHbDoXJpYXMgdmV6ZXMsIG1hcyBjb20gc2VuaGFzIGRpZmVyZW50ZXMsIGNhZGEgcGFydGljaXBlbnQgcmVjZWJlIHVtIG5vdm8gbGluayBxdWUgdGVtIHVtYSBzZW5oYSBkaWZlcmVudGUuIE1hcyBvcyBsaW5rcyBhbnRpZ29zIGFpbmRhIGZ1bmNpb25hbSB1bWEgdmV6IGVudmlhZG9zITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ2IiBuYW1lPSJjYWxlbmRhciBlZGl0IGJ1dHRvbiI+CisgICAgPHZhbHVlPkVkaXRhciBkZXRhbGhlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ3IiBuYW1lPSJzaXAgc2hvdyBkaWFsZXIiPgorICAgIDx2YWx1ZT5Nb3N0cmFyIGRpc2NhZG9yIHNpcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ4IiBuYW1lPSJzaXAgY2FsbCI+CisgICAgPHZhbHVlPkNoYW1hcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ5IiBuYW1lPSJjYWxlbmRhciBjb250YWN0IGxpc3QiPgorICAgIDx2YWx1ZT5Nb3N0cmFyIGV2ZW50b3MgZGUgY2FsZW5kw6FyaW8gZGUgY29udGF0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUwIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5Qw6FnaW5hIGluaWNpYWwhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTEiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPlBsYW5lamUgc3VhcyByZXVuacO1ZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MiIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+QXNzaXN0YSBhIGdyYXZhw6fDo28gZSBlbnRyZXZpc3RhczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUzIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5Fc2NvbGhhIGUgaW5pY2llIHVtYSB3ZWItY29uZmVyw6puY2lhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTQiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPkdlcmVuY2llIHVzdcOhcmlvcyBlIGRpcmVpdG9zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTUiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPkdlcmVuY2llIGNvbmV4w7VlcyBlIGV4cHVsc2UgdXN1w6FyaW9zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTYiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPkdlcmVuY2llIGdydXBvcyBkZSB1c3XDoXJpb3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1NyIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+R2VyZW5jaWFyIHNhbGFzIGRlIGNvbmZlcsOqbmNpYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU4IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5HZXJlbmNpYXIgYXMgY29uZmlndXJhw6fDtWVzIGRvIHNpc3RlbWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1OSIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+R2VyZW5jaWFyIHLDs3R1bG9zIGUgcmVkYcOnw6NvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjAiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPkdlcmVuY2lhciBMREFQIGUgY29uZmlndXJhw6fDtWVzIGRlIEFEUzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYxIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5FeHBvcnRhci9JbXBvcnRhciBCYWNrdXBzIGRvIFNpc3RlbWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlZvY8OqIHByZWNpc2Egc2VyIHVtIG1vZGVyYWRvciBvdSB0ZXIgZGlyZWl0b3MgcGFyYSAiZGVzZW5oYXIgbmEgbG91c2EiLCBhZGljaW9uYXIsIGV4Y2x1aXIgb3UgY2FycmVnYXIgYXJxdWl2b3MgZSBwYXN0YXMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjMiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5FZGl0YXIgdGV4dG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2NCIgbmFtZT0ic2FsdXRhdGlvbiI+CisgICAgPHZhbHVlPlByb2Y8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2NSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5QdWJsaWNhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY2IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkluaWNpYXIgUHVibGljYcOnw6NvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjciIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UGFyYXIgUHVibGljYcOnw6NvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+SG9zdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY5IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkNvbnRleHRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzAiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+SWQgZGEgUHVibGljYcOnw6NvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzEiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UmVkdXphIGEgbGFyZ3VyYSBkbyBjb21wYXJ0aWxoYW1lbnRvIGRlIHRlbGEgYW50ZXMgZGUgdGVudGFyIG1vdmVyIGlzdG8gcGFyYSBlc3F1ZXJkYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDcyIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHV6aXIgYSBhbHR1cmEgZGEgdGVsYSBjb21wYXJ0aWxoYWRhIGFudGVzIGRlIHRlbnRhciBtb3bDqi1sbyBwYXJhIG8gZnVuZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5SZWR1emlyIG8geCBkYSB0ZWxhIGNvbXBhcnRpbGhhZGEgYW50ZXMgZGUgdGVudGFyIHRvcm7DoS1sYSBtYWlzIGFtcGxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzQiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UmVkdXppciBvIHkgZGEgdGVsYSBjb21wYXJ0aWxoYWRhIGFudGVzIGRlIHRlbnRhciB0b3Juw6EtbGEgbWFpb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3NSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5GaWxsIHRoZXNlIHNldHRpbmdzIHN0cmVhbSB5b3VyIHNjcmVlbiBkYXRhIHRvIDN0aCBwYXJ0eSBwcm92aWRlcnMgbGlrZSBqdXN0aW4udHY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3NiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5GYXZvciBpbmljaWFyIG8gY29tcGFydGlsaGFtZW50byBkZSB0ZWxhIHBhcmEgcHVibGljYXIgaXN0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc3IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPsOJIG5lY2Vzc8OhcmlhIHBlcm1pc3PDo28gZGUgbW9kZXJhZG9yIHBhcmEgaW5pY2lhciBhIGdyYXZhw6fDo288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3OCIgbmFtZT0ibm8gcmlnaHQgZm9yIGV4Y2x1c2l2ZSBhdWRpbyI+CisgICAgPHZhbHVlPlZvY8OqIG7Do28gdGVtIHBlcm1pc3PDo28gcGFyYSBoYWJpbGl0YXIgw6F1ZGlvIGV4Y2x1c2l2YSBwYXJhIHF1YWxxdWVyIHBhcnRpY2lwYW50ZS4gVm9jw6ogcHJlY2lzYSBkZSBkaXJlaXRvcyBkZSBtb2RlcmHDp8OjbyBvdSBvIGRpcmVpdG8gZXhjbHVzaXZvIGRlIMOhdWRpbyBwYXJhIGhhYmlsaXRhciBxdWFscXVlciBtaWNyb2ZvbmUgZW0gbW9kbyBleGNsdXNpdm8uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc5IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5DYXJyZWdhciBub3ZvIGFycXVpdm8gcGFyYSBhIHBhc3RhIGRlIGFycXVpdm9zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODAiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkFicmEgbm92YSBjYWl4YSBkZSBkacOhbG9nbyBjb20gYXMgY29uZmlndXJhw6fDtWVzIGRlIGNvbXBhcnRpbGhhbWVudG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+VW0gbW9kZXJhZG9yIGV4aXN0ZW50ZSB0ZW0gcXVlIGFwcm92YXIgaXN0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgyIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5QZXJndW50ZSBtb2RlcmFkb3IgcGFyYSBjb21wYXJ0aWxoYXIgc3VhIHdlYmNhbS9taWNybzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgzIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5SZcO6bmEgY29tZW50w6FyaW9zLCBjcmlhbmRvIHVtYSBlbnF1ZXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODQiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlJlc3VsdGFkb3MgZGEgZW5xdWV0ZSBjb3JyZW50ZSBlIHBhc3NhZGEgY29tbyBncsOhZmljbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg1IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5Wb3RhciBzZSBob3V2ZXIgdW1hIGVucXVldGUgcGFyYSBlc3RhIHNhbGEgZGUgY29uZmVyw6puY2lhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODYiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkVkaXRhciBjb25maWd1cmHDp8O1ZXMgZGUgY8OibWFyYSBlIG1pY3JvZm9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg3IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5Db25maXJtYXIgZSBzYWlyIGRhIHNhbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4OCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+TGlndWUgcGFyYSBwZXNzb2FzIGV4dGVybmFzIHZpYSBWb0lQL1NJUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg5IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5FbnZpZSB1bSBlbWFpbCBjb20gdW0gbGluayBkaXJldG8gcGFyYSBlc3RhIHNhbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+QWx0ZXJhciBhcyBjb25maWd1cmHDp8O1ZXMgZGUgc3VhIGxvdXNhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTEiIG5hbWU9ImJhY2t1cCBhZG1pbiI+CisgICAgPHZhbHVlPlRhbWFuaG8gbcOheGltbyBkZSB1cGxvYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MiIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+UGVyZ3VudGUgYW8gbW9kZXJhZG9yIHBhcmEgY29tcGFydGlsaGFyIHN1YSBsb3VzYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkzIiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5TdGFydCBQcml2YXRlIENoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NCIgbmFtZT0iYWxsX3ByaXZhdGVfY2hhdCI+CisgICAgPHZhbHVlPkFsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk1IiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IHN0YXJ0IGEgcHJpdmF0ZSBjaGF0IHdpdGggeW91cnNlbGYuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTYiIG5hbWU9InByaXZhdGUgY2hhdCI+CisgICAgPHZhbHVlPllvdSd2ZSBhbHJlYWR5IHN0YXJ0ZWQgYSBwcml2YXRlIGNoYXQgd2l0aCB0aGlzIHBhcnRpY2lwYW50LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk3IiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcHJpdmF0ZSBjaGF0PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk4IiBuYW1lPSJTZXJ2ZXJzIj4KKyAgICA8dmFsdWU+U2VydmVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk5IiBuYW1lPSJTZXJ2ZXJzIj4KKyAgICA8dmFsdWU+U2VydmVycyBwYXJ0aWNpcGF0aW5nIGluIGNsdXN0ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMCIgbmFtZT0iU2VydmVyIG5hbWUiPgorICAgIDx2YWx1ZT5TZXJ2ZXIgTmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAxIiBuYW1lPSJTZXJ2ZXIgQWRkcmVzcyI+CisgICAgPHZhbHVlPlNlcnZlciBBZGRyZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDIiIG5hbWU9IlNlcnZlciBkZXRhaWxzIj4KKyAgICA8dmFsdWU+U2VydmVyIGRldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMyIgbmFtZT0iU2VuZCBTTVMiPgorICAgIDx2YWx1ZT5TZW5kIFNNUzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA0IiBuYW1lPSJwdWJsaXNoaW5nX21lc3NhZ2UiPgorICAgIDx2YWx1ZT5QdWJsaXNoaW5nLiBVc2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA1IiBuYW1lPSJjbWRfbGluZV9hZG1pbiI+CisgICAgPHZhbHVlPlRvIHNhdmUgdGltZSBhbmQgaW50ZXJuZXQgdHJhZmZpYyB5b3UgY2FuIHVzZSBjb21tYW5kIGxpbmUgYWRtaW4gdG8gYmFja3VwL3Jlc3RvcmUvdXBncmFkZTpcbiAxKSBnbyB0byBPTSBpbnN0YWxsIGRpciAoZm9yIGV4LiAvb3B0L3JlZDUpIFxuIDIpIHN0b3AgT00gKGZvciBleC4gLi9yZWQ1LXNodXRkb3duLnNoKVxuIDMpIC4vYWRtaW4uc2ggLWIgLWZpbGUgfi90b2RheV9vbV9iYWNrdXAuemlwIChjcmVhdGUgYmFja3VwIG9mIGN1cnJlbnQgT00pXG4gNCkgZG93bmxvYWQgYXJjaGl2ZSB3aXRoIG5ldyBPTVxuIDUpIG12IC9vcHQvcmVkNSAvb3B0LnJlZDUuYmFrIChtb3ZlIHdvcmtpbmcgdmVyc2lvbiBvZiBPTSBqdXN0IGluIGNhc2UgOikpXG4gNikgZXh0cmFjdCBkb3dubG9hZGVkIE9NIHRvIHRoZSAvb3B0L3JlZDVcbiA3KSAuL2FkbWluLnNoIC1pIC1maWxlIH4vdG9kYXlfb21fYmFja3VwLnppcCAob3IgJy4vYWRtaW4uc2ggLWkgLWZpbGUgfi90b2RheV9vbV9iYWNrdXAuemlwIC0tZGItdHlwZSBteXNxbCAtLWRiLXVzZXIgb21fdXNlciAtLWRiLXBhc3Mgb21fdXNlcl9wYXNzJyBpbiBjYXNlIG9mIHlvdSBhcmUgdXNpbmcgbm9uLWRlZmF1bHQgREIgKVxuIDgpIHN0YXJ0IE9NXG48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNiIgbmFtZT0icHVibGljX3Jvb21fdG9vbHRpcCI+CisgICAgPHZhbHVlPlJvb21zIGNvbW1vbiB0byBhbGwgdXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA3IiBuYW1lPSJwcml2YXRlX3Jvb21fdG9vbHRpcCI+CisgICAgPHZhbHVlPlJvb21zIGNvbW1vbiB0byB0aGUgY3VycmVudCB1c2VyIGdyb3VwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDgiIG5hbWU9Im15X3Jvb21fdG9vbHRpcCI+CisgICAgPHZhbHVlPlJvb21zIG9mIHRoZSBjdXJyZW50IHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwOSIgbmFtZT0iY3JlYXRlX25ld19yb29tIj4KKyAgICA8dmFsdWU+Q3JlYXRlL01vZGlmeSBhcHBvaW50bWVudCBzcGVjaWFsIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxMCIgbmFtZT0ibXVsdGlwbGVfYWRkcmVzc2VzIj4KKyAgICA8dmFsdWU+WW91IGNhbiBlbnRlciBtdWx0aXBsZSBhZGRyZXNzZXMgaW4gdGhlIGZvcm1hdDogZmlyc3RuYW1lMSBsYXN0bmFtZTEgJmx0O2VtYWlsMSZndDssImZpcnN0bmFtZTIgbGFzdG5hbWUyIiAmbHQ7ZW1haWwyJmd0OywnZmlyc3RuYW1lMyBsYXN0bmFtZTMnICZsdDtlbWFpbDMmZ3Q7LCAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxMSIgbmFtZT0ic3RyZWFtX3ZvbHVtZSI+CisgICAgPHZhbHVlPkFkanVzdCBzdHJlYW0gdm9sdW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTIiIG5hbWU9Im1pY3JvcGhvbmVfdm9sdW1lIj4KKyAgICA8dmFsdWU+QWRqdXN0IG1pY3JvcGhvbmUgdm9sdW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTMiIG5hbWU9ImNoYXRfbW9kZXJhdGVkIj4KKyAgICA8dmFsdWU+SXMgY2hhdCBtb2RlcmF0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNCIgbmFtZT0iY2hhdF9tb2RlcmF0ZWQiPgorICAgIDx2YWx1ZT5BbGxvdyBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTUiIG5hbWU9ImNoYXRfb3BlbmVkIj4KKyAgICA8dmFsdWU+Q2hhdCBwYW5lbCBvcGVuZWQgYnkgZGVmYXVsdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE2IiBuYW1lPSJmaWxlc19vcGVuZWQiPgorICAgIDx2YWx1ZT5GaWxlcyBwYW5lbCBvcGVuZWQgYnkgZGVmYXVsdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE3IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gc2VjdGlvbiBsYXN0cGluZyI+CisgICAgPHZhbHVlPkxhc3QgcGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE4IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gc2VjdGlvbiBsYXN0cGluZyBpbmZvIj4KKyAgICA8dmFsdWU+RXZlcnkgc2xhdmUgc2VuZHMgYSBwaW5nIHRvIHRoZSBtYXN0ZXIgZXZlcnkgMyBzZWNvbmRzIChjb25maWd1cmFibGUpLiBTbGF2ZSBsYXN0UGluZyBtdXN0IGJlIHNtYWxsZXIgdGhlbiAxIG1pbnV0ZSBzbyB0aGF0IHRoZSBtYXN0ZXIgdXNlcyB0aGUgc2xhdmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTkiIG5hbWU9InNlcnZlciBhZG1pbiBwb3J0Ij4KKyAgICA8dmFsdWU+SFRUUCBQb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjAiIG5hbWU9InNlcnZlciBhZG1pbiB1c2VyIj4KKyAgICA8dmFsdWU+VXNlciAoU09BUC1BY2Nlc3MpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjEiIG5hbWU9InNlcnZlciBhZG1pbiBwYXNzd29yZCI+CisgICAgPHZhbHVlPlBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjIiIG5hbWU9InNlcnZlciBhZG1pbiB3ZWJhcHAgcGF0aCI+CisgICAgPHZhbHVlPldlYmFwcCBwYXRoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjMiIG5hbWU9InNlcnZlciBhZG1pbiBwcm90b2NvbCI+CisgICAgPHZhbHVlPlByb3RvY29sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjQiIG5hbWU9InNlcnZlciBhZG1pbiBwaW5nIHJ1bm5pbmciPgorICAgIDx2YWx1ZT5QaW5nIHJ1bm5pbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyNSIgbmFtZT0ic2VydmVyIGFkbWluIGFjdGl2ZSI+CisgICAgPHZhbHVlPkFjdGl2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI2IiBuYW1lPSJnZW5lcmF0ZV9oYXNoIj4KKyAgICA8dmFsdWU+R2VuZXJhdGUgVVJMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjciIG5hbWU9Im5ldHdvcmsgdGVzdGluZyBsaW5rIj4KKyAgICA8dmFsdWU+TmV0d29yayB0ZXN0aW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjgiIG5hbWU9InJvb21fb3B0aW9ucyI+CisgICAgPHZhbHVlPkF1dG8gc2VsZWN0IGludGVydmlldyB2aWRlbyBwb2Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyOSIgbmFtZT0iZm9udF91bmRlcmxpbmUiPgorICAgIDx2YWx1ZT5VbmRlcmxpbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMCIgbmFtZT0iZm9udF9zdHlsZSI+CisgICAgPHZhbHVlPkZvbnQgc3R5bGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMSIgbmFtZT0iYWxsb3dfZm9udF9zdHlsZXMiPgorICAgIDx2YWx1ZT5BbGxvdyBmb250IHN0eWxlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMyIiBuYW1lPSJmb250X2NvbG9yIj4KKyAgICA8dmFsdWU+Rm9udCBjb2xvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMzIiBuYW1lPSJoeXBlcmxpbmsiPgorICAgIDx2YWx1ZT5IeXBlcmxpbms8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNCIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbiI+CisgICAgPHZhbHVlPlNob3cgc2Vzc2lvbiBzdGF0aXN0aWNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzUiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW4iPgorICAgIDx2YWx1ZT5TZXNzaW9uIGRldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNiIgbmFtZT0ic3lzdGVtX2ltcG9ydCI+CisgICAgPHZhbHVlPlN5c3RlbSBpbXBvcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNyIgbmFtZT0iaW5jbHVkZV9pbnRvX2JhY2t1cCI+CisgICAgPHZhbHVlPkluY2x1ZGUgdXBsb2FkZWQgZmlsZXMgYW5kIHJlY29yZGluZ3MgaW4gYmFja3VwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzgiIG5hbWU9InJvb21fYWRtaW5fc2lwIj4KKyAgICA8dmFsdWU+RW5hYmxlIFNJUCB0cmFuc3BvcnQgaW4gdGhlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzOSIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2NvbmZpcm0iPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gcHJvdmlkZSB0aGlzIHVzZXIgYW4gZXhjbHVzaXZlIGF1ZGlvPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTQwIiBuYW1lPSJub190aW1lem9uZSI+CisgICAgPHZhbHVlPlBsZWFzZSBzcGVjaWZ5IHlvdXIgdGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU0NSIgbmFtZT0iY29udGVudF9pc19zYXZpbmciPgorICAgIDx2YWx1ZT5Db250ZW50IGlzIFNhdmluZywgUGxlYXNlIHdhaXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+Cis8L2xhbmd1YWdlPgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9sYW5ndWFnZXMvcG9ydHVndWVzLnhtbCBiL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL3BvcnR1Z3Vlcy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTJlNGVkOAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL3BvcnR1Z3Vlcy54bWwKQEAgLTAsMCArMSw0NjUyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorCis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitUaGlzIEZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgYnkgdGhlIExhbmd1YWdlRWRpdG9yIAordG8gYWRkIG5ldyBMYW5ndWFnZXMgb3IgbW9kaWZ5L2N1c3RvbWl6ZSBpdCB1c2UgdGhlIExhbmd1YWdlRWRpdG9yIAorc2VlIGh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9MYW5ndWFnZUVkaXRvci5odG1sIGZvciBEZXRhaWxzIAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMtLT4KKzxsYW5ndWFnZSB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczpub05hbWVzcGFjZVNjaGVtYUxvY2F0aW9uPSJsYW5ndWFnZS54c2QiPgorICA8c3RyaW5nIGlkPSIxIiBuYW1lPSJjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+Q29uZmVyw6puY2lhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIiIG5hbWU9Im1lZXRpbmciPgorICAgIDx2YWx1ZT5SZXVuacOjbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzIiBuYW1lPSJjbGFzc3Jvb20iPgorICAgIDx2YWx1ZT5BdWRpdMOzcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQiIG5hbWU9InNldHRpbmdzIj4KKyAgICA8dmFsdWU+Q29uZmlndXJhw6fDtWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUiIG5hbWU9ImJlbnV0emVyIj4KKyAgICA8dmFsdWU+VXN1w6FyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNiIgbmFtZT0iYWRtaW4iPgorICAgIDx2YWx1ZT5BZG1pbmlzdHJhw6fDo288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNyIgbmFtZT0ic3RvcCI+CisgICAgPHZhbHVlPlBhcmFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkdyYXZhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5IiBuYW1lPSJub2ZpbGUiPgorICAgIDx2YWx1ZT5OZW5odW0gYXJxdWl2byBkaXNwb27DrXZlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMCIgbmFtZT0icmVjb3JkYnl0ZWFjaGVyIj4KKyAgICA8dmFsdWU+QWRtaXNzw6NvIGRpc3BvbsOtdmVsIGFwZW5hcyBwYXJhIHByb2Zlc3NvcmVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExIiBuYW1lPSJjb25uZWN0ZWR1c2VycyI+CisgICAgPHZhbHVlPlVzdcOhcmlvcyBjb25lY3RhZG9zOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMiIgbmFtZT0ic3RhcnRjb25mIj4KKyAgICA8dmFsdWU+SW5pY2lhciB1bWEgY29uZmVyw6puY2lhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzIiBuYW1lPSJteW5hbWUiPgorICAgIDx2YWx1ZT5NZXUgbm9tZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQiIG5hbWU9InZpZGVvY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPlZpZGVvQ29uZmVyw6puY2lhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1IiBuYW1lPSJpbXBvcnQiPgorICAgIDx2YWx1ZT5JbXBvcnRhciBhcHJlc2VudGHDp8OjbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNiIgbmFtZT0icmVmcmVzaGZpbGVzIj4KKyAgICA8dmFsdWU+QXR1YWxpemFyIGxpc3RhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3IiBuYW1lPSJ0b21haW5maWxlIj4KKyAgICA8dmFsdWU+WnVtIEhhdXB0dmVyemVpY2huaXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgiIG5hbWU9Im5ld3BvbGwiPgorICAgIDx2YWx1ZT5ub3ZhIGVucXVldGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkiIG5hbWU9Im5ld3BvbGxoZWFkZXIiPgorICAgIDx2YWx1ZT5VbWEgbm92YSBlbnF1ZXRlIHBhcmEgY29uZmVyw6puY2lhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMCIgbmFtZT0icXVlc3Rpb24iPgorICAgIDx2YWx1ZT5QZXJndW50YTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEiIG5hbWU9InBvbGx0eXBlIj4KKyAgICA8dmFsdWU+VGlwbyBkZSBlbnF1ZXRlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMiIgbmFtZT0iY3JlYXRlIj4KKyAgICA8dmFsdWU+Q3JpYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMiIG5hbWU9ImluZm9tZXNzYWdlIj4KKyAgICA8dmFsdWU+SW5mbzogQ2FkYSB1c3XDoXJpbyBjb25lY3RhZG8gcmVjZWJlIHVtYSBtZW5zc2FnZW0gY29tIGEgbm92YSBlbnF1ZXRlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNCIgbmFtZT0iY3JlYXRwb2xsIj4KKyAgICA8dmFsdWU+Q3JpYXIgdW1hIGVucXVldGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUiIG5hbWU9ImNhbmNlbCI+CisgICAgPHZhbHVlPkNhbmNlbGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2IiBuYW1lPSJ5ZXNubyI+CisgICAgPHZhbHVlPlNpbS9Ow6NvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3IiBuYW1lPSJudW1lcmljIj4KKyAgICA8dmFsdWU+TnVtw6lyaWNvIDEtMTA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgiIG5hbWU9InBvbGwiPgorICAgIDx2YWx1ZT5FbnF1ZXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5IiBuYW1lPSJtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+RWxlcyBwb2RlbSBzZXIgbW9kZXJhZG9yZXMvcHJvZmVzc29yZXMgbmVzc2Egw6FyZWEgZGUgZW5xdWV0ZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAiIG5hbWU9InZvdGUiPgorICAgIDx2YWx1ZT5TZXUgdm90byBmb2kgcmVnaXN0cmFkby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEiIG5hbWU9ImFscmVhZHl2b3RlZCI+CisgICAgPHZhbHVlPlZvY8OqIGrDoSB2b3RvdSBuZXNzYSBlbnF1ZXRlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMiIgbmFtZT0idm90aW5nIj4KKyAgICA8dmFsdWU+Vm90YXIgITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMyIgbmFtZT0iYW5zd2VyIj4KKyAgICA8dmFsdWU+U3VhIHJlc3Bvc3RhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNCIgbmFtZT0ieWVzIj4KKyAgICA8dmFsdWU+U2ltPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1IiBuYW1lPSJubyI+CisgICAgPHZhbHVlPk7Do288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYiIG5hbWU9InF1ZXN0aW9ud2FudCI+CisgICAgPHZhbHVlPlF1ZXIgc2FiZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3IiBuYW1lPSJwb2xscmVzdWx0cyI+CisgICAgPHZhbHVlPlJlc3VsdGFkb3MgZGEgZW5xdWV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOCIgbmFtZT0icXVlc3Rpb24iPgorICAgIDx2YWx1ZT5QZXJndW50YTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkiIG5hbWU9InJlc3VsdHMiPgorICAgIDx2YWx1ZT5SZXN1bHRhZG9zOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MCIgbmFtZT0iYW5zd2VycyI+CisgICAgPHZhbHVlPlJlc3Bvc3Rhczo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDEiIG5hbWU9Im5vcG9sbCI+CisgICAgPHZhbHVlPk5lbmh1bWEgZW5xdWV0ZSBmb2kgaW5pY2lhZGEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyIiBuYW1lPSJ2b3RpbmdzIj4KKyAgICA8dmFsdWU+Vm90YXIhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzIiBuYW1lPSJtZWV0aW5nIj4KKyAgICA8dmFsdWU+UmV1bmnDo28gKG3DoXhpbW8gNCBhc3NlbnRvcyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQiIG5hbWU9ImNvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT5Db25mZXJlbmNlIChtw6F4aW1vIDUwIGFzc2VudG9zKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NSIgbmFtZT0idHlwZSI+CisgICAgPHZhbHVlPlRpcG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYiIG5hbWU9InJlbWFpbmluZ3NlYXRzIj4KKyAgICA8dmFsdWU+T3V0cm9zIGFzc2VudG9zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3IiBuYW1lPSJhbHJlYWR5Y2hvc2VuIj4KKyAgICA8dmFsdWU+SsOhIGVzY29saGlkbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OCIgbmFtZT0iZW50ZXIiPgorICAgIDx2YWx1ZT5lbnRyYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkiIG5hbWU9Im1vZGxlYXZlIj4KKyAgICA8dmFsdWU+TyBtb2RlcmFyb3Igc2FpdSBkYSByZXVuacOjby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAiIG5hbWU9InN5c3RlbW1lc3NhZ2UiPgorICAgIDx2YWx1ZT5JbmZvcm1hw6fDtWVzIGRvIHNpc3RlbWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTEiIG5hbWU9ImNob3NzZWRldmljZSI+CisgICAgPHZhbHVlPkVzY29saGVyIGRpc3Bvc2l0w612bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MiIgbmFtZT0iY2hvb3NlY2FtIj4KKyAgICA8dmFsdWU+RXNjb2xoZXIgd2ViY2FtOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MyIgbmFtZT0iY2hvb3NlbWljIj4KKyAgICA8dmFsdWU+RXNjb2xoZXIgbWljcm9mb25lOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NCIgbmFtZT0ib2siPgorICAgIDx2YWx1ZT5vazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NSIgbmFtZT0iY2FuY2VsMiI+CisgICAgPHZhbHVlPmNhbmNlbGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2IiBuYW1lPSJyZWNvbmVlY3RuZWVkZWQiPgorICAgIDx2YWx1ZT5Wb2PDqiBwcmVjaXNhIHJlY29uZWN0YXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3IiBuYW1lPSJlZGl0c2V0dXAiPgorICAgIDx2YWx1ZT5FZGl0YXIgY29uZmlndXJhw6fDtWVzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OCIgbmFtZT0iY291cnNlIj4KKyAgICA8dmFsdWU+Q3Vyc286PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5IiBuYW1lPSJsYW5ndWFnZSI+CisgICAgPHZhbHVlPklkaW9tYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAiIG5hbWU9Im9rMiI+CisgICAgPHZhbHVlPm9rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxIiBuYW1lPSJjYW5jZWwzIj4KKyAgICA8dmFsdWU+Y2FuY2VsYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIiIG5hbWU9ImNsZWFyd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkxpbXBhciBhIGxvdXNhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MyIgbmFtZT0iY2xlYXJ3aGl0ZWJvYXJkcXVlc3Rpb24iPgorICAgIDx2YWx1ZT5Wb2PDqiBxdWVyIHF1ZSBhIGxvdXNhIHNlamEgYXBhZ2FkYSBhbnRlcyBxdWUgdW1hIGZpZ3VyYSBzZWphIGFkaWNpb25hZGEgPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NCIgbmFtZT0iZG9udGFza2FnYWluIj4KKyAgICA8dmFsdWU+TsOjbyBwZXJndW50YXIgZGUgbm92by48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUiIG5hbWU9Im5vIj4KKyAgICA8dmFsdWU+TsOjbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NiIgbmFtZT0iZWRpdHNldHVwMiI+CisgICAgPHZhbHVlPkVkaXRhciBjb25maWd1cmHDp8O1ZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjciIG5hbWU9Im5lZWRjb25maXJtYXRpb253aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+Q29uZmlybWHDp8OjbyBkZSByZXF1aXNpw6fDo28gYW50ZXMgZGUgbGltcGFyIGEgbG91c2EuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4IiBuYW1lPSJ1c2VyaW5mbyI+CisgICAgPHZhbHVlPkluZm9ybWHDp8O1ZXMgZG8gdXN1w6FyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkiIG5hbWU9ImNsZWFyZHJhd2FyZWEiPgorICAgIDx2YWx1ZT5MaW1wYXIgw6FyZWEgZGUgZGVzZW5obzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MCIgbmFtZT0idW5kbyI+CisgICAgPHZhbHVlPkRlc2ZhemVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxIiBuYW1lPSJyZWRvIj4KKyAgICA8dmFsdWU+UmVmYXplcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MiIgbmFtZT0ic2VsZWN0b2JqZWN0Ij4KKyAgICA8dmFsdWU+U2VsZWNpb25hciB1bSBvYmpldG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMiIG5hbWU9InRleHQiPgorICAgIDx2YWx1ZT5UZXh0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NCIgbmFtZT0icGFpbnQiPgorICAgIDx2YWx1ZT5QaW50dXJhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1IiBuYW1lPSJkcmF3bGluZSI+CisgICAgPHZhbHVlPkRlc2VuaGFyIGxpbmhhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2IiBuYW1lPSJkcmF3dSI+CisgICAgPHZhbHVlPkRlc2VuaGFyIHN1YmxpbmhhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3IiBuYW1lPSJyZWN0Ij4KKyAgICA8dmFsdWU+UmV0w6JuZ3VsbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OCIgbmFtZT0iZWxsaXBzZSI+CisgICAgPHZhbHVlPkVsaXBzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OSIgbmFtZT0iYXJyb3ciPgorICAgIDx2YWx1ZT5TZXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwIiBuYW1lPSJkZWxldGVjaG9zZW4iPgorICAgIDx2YWx1ZT5leGNsdWlyIMOtdGVtIHNlbGVjaW9uYWRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxIiBuYW1lPSJhcHBsaXltb2QiPgorICAgIDx2YWx1ZT5BcGxpY2FyIHBhcmEgbW9kZXJhw6fDo288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIiIG5hbWU9ImFwcGx5Ij4KKyAgICA8dmFsdWU+QXBsaWNhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MyIgbmFtZT0iY2FuY2VsIj4KKyAgICA8dmFsdWU+ZmVjaGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0IiBuYW1lPSJtb2QiPgorICAgIDx2YWx1ZT5Ub3JuYXItc2UgbW9kZXJhZG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1IiBuYW1lPSJjbG9zZSI+CisgICAgPHZhbHVlPmZlY2hhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NiIgbmFtZT0iaXRhbGljIj4KKyAgICA8dmFsdWU+aXRhbGljPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3IiBuYW1lPSJib2xkIj4KKyAgICA8dmFsdWU+bmVncml0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OCIgbmFtZT0id2FpdGluZyI+CisgICAgPHZhbHVlPkFHVUFSREFORE88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkiIG5hbWU9ImFwcGx5TWVzc2FnZSI+CisgICAgPHZhbHVlPlVtIHVzdcOhcmlvIHF1ZXIgc2UgdG9ybmFyIG1vZGVyYWRvcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAiIG5hbWU9ImFjY2VwdCI+CisgICAgPHZhbHVlPmFjZWl0YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTEiIG5hbWU9InJlamVjdCI+CisgICAgPHZhbHVlPnJlamVpdGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyIiBuYW1lPSJjYW5jZWwiPgorICAgIDx2YWx1ZT5jYW5jZWxhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MyIgbmFtZT0ic2VuZG1vZHJlcXVlc3RtZXNzYWdlIj4KKyAgICA8dmFsdWU+RW52aWFuZG8gcmVxdWlzacOnw6NvIHBhcmEgb3Mgc2VndWludGVzIHVzdcOhcmlvczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NCIgbmFtZT0iYWNjZXB0Ij4KKyAgICA8dmFsdWU+QWNlaXRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1IiBuYW1lPSJyZWplY3QiPgorICAgIDx2YWx1ZT5SZWplaXRhZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYiIG5hbWU9ImNoYW5nZW1vZCI+CisgICAgPHZhbHVlPk11ZGFyIG1vZGVyYWRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NyIgbmFtZT0ibm9ubW9kZXJyb3JtZXNzYWdlIj4KKyAgICA8dmFsdWU+Vm9jw6ogbsOjbyBlc3TDoSBtb2RlcmFuZG8gZXN0ZSBjdXJzbyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgiIG5hbWU9Im1vZGVyYXRvciI+CisgICAgPHZhbHVlPk1vZGVyYWRvcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkiIG5hbWU9InJvb21mdWxsbWVzc2FnZSI+CisgICAgPHZhbHVlPkEgc2FsYSBlc3TDoSBsb3RhZGEuIFBvciBmYXZvciB0ZW50ZSBub3ZhbWVudGUgbWFpcyB0YXJkZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwIiBuYW1lPSJlbGxsaXBzZSI+CisgICAgPHZhbHVlPkVsaXBzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEiIG5hbWU9ImNsb3NlIj4KKyAgICA8dmFsdWU+ZmVjaGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMiIgbmFtZT0iQXV0aEVycm9yIj4KKyAgICA8dmFsdWU+ZXJybyBuYSBlbnRyYWRhIGRlIGRhZG9zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMyIgbmFtZT0ibWluNHVzZXJuYW1lIj4KKyAgICA8dmFsdWU+bm9tZSBkbyB1c3XDpXJpbyBkZXZlIHRlciBubyBtw61uaW1vIDQgbGV0cmFzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNCIgbmFtZT0ibWluNHBhc3MiPgorICAgIDx2YWx1ZT5zZW5oYSBkZXZlIHRlciBubyBtw61uaW1vIDQgbGV0cmFzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNSIgbmFtZT0idXNlcm5hbWV0YWtlbiI+CisgICAgPHZhbHVlPk5vbWUgZGUgdXN1w6FyaW8gasOhIGV4aXN0ZW50ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYiIG5hbWU9ImVtYWlsdGFrZW4iPgorICAgIDx2YWx1ZT5PIGVtYWlsIGrDoSBmb2kgcmVnaXN0cmFkby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3IiBuYW1lPSJlbWFpbHRha2VuIj4KKyAgICA8dmFsdWU+RXJybyBubyBzaXN0ZW1hLCBwb3IgZmF2b3IsIGNvbnRhY3RlIG9zIGFkbWluaXN0cmFkb3Jlcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4IiBuYW1lPSJBdXRobG9naW4iPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkiIG5hbWU9IkF1dGh1c2VyIj4KKyAgICA8dmFsdWU+VXN1w6FyaW86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMCIgbmFtZT0iQXV0aHBhc3MiPgorICAgIDx2YWx1ZT5TZW5oYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExIiBuYW1lPSJBdXRobGFuZyI+CisgICAgPHZhbHVlPmlkaW9tYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIiIG5hbWU9IkF1dGhyZWciPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMiIG5hbWU9InJlZ2Zvcm1oZWFkIj4KKyAgICA8dmFsdWU+U2lnbiBVcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQiIG5hbWU9InJlZ2Zvcm11c2VyIj4KKyAgICA8dmFsdWU+VXN1w6FyaW86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNSIgbmFtZT0icmVnZm9ybXBhc3MiPgorICAgIDx2YWx1ZT5TZW5oYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2IiBuYW1lPSJyZWdmb3JtcmV0eXBlIj4KKyAgICA8dmFsdWU+UmUtZGlnaXRlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTciIG5hbWU9InJlZ2Zvcm1maXJzdG5hbWUiPgorICAgIDx2YWx1ZT5QcmltZWlybyBub21lOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgiIG5hbWU9InJlZ2Zvcm1sYXN0bmFtZSI+CisgICAgPHZhbHVlPsOabHRpbW8gbm9tZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5IiBuYW1lPSJyZWdmb3JtbWFpbCI+CisgICAgPHZhbHVlPkUtTWFpbDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwIiBuYW1lPSJyZWdmb3Jtc3RhdGUiPgorICAgIDx2YWx1ZT5QYcOtczo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxIiBuYW1lPSJyZWdmb3JtYnRuMSI+CisgICAgPHZhbHVlPlJlZ2lzdHJhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIiIG5hbWU9InJlZ2Zvcm1idG4yIj4KKyAgICA8dmFsdWU+Y2FuY2VsYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzIiBuYW1lPSJBdXRoYnRuMiI+CisgICAgPHZhbHVlPlJlZ2lzdHJhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPmhvbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1IiBuYW1lPSJ1c2VyYWRtaW4iPgorICAgIDx2YWx1ZT5Vc3XDoXJpb3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2IiBuYW1lPSJncm91cGFkbWluIj4KKyAgICA8dmFsdWU+R3J1cG9zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNyIgbmFtZT0ib3JnYWRtaW4iPgorICAgIDx2YWx1ZT5Pcmdhbml6YcOnw7VlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgiIG5hbWU9ImhlYWRjb25mIj4KKyAgICA8dmFsdWU+U2FsYXMgZGUgQ29uZmVyw6puY2lhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOSIgbmFtZT0iY29uZl9wdWIiPgorICAgIDx2YWx1ZT5ww7pibGljbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAiIG5hbWU9ImhlYWRfb3JnIj4KKyAgICA8dmFsdWU+b3JnYW5pemHDp8OjbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzEiIG5hbWU9ImJ0bl9lbnRlcnJvb20iPgorICAgIDx2YWx1ZT5lbnRyYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2xvZ2luIj4KKyAgICA8dmFsdWU+TG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Bhc3MiPgorICAgIDx2YWx1ZT5TZW5oYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQiIG5hbWU9InVzZXJhbHRlcnNlbGZfcGFzc3JldHlwZSI+CisgICAgPHZhbHVlPlJlLWRpZ2l0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUiIG5hbWU9InVzZXJhbHRlcnNlbGZfZmlyc3RuYW1lIj4KKyAgICA8dmFsdWU+UHJpbWVpcm8gbm9tZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYiIG5hbWU9InVzZXJhbHRlcnNlbGZfbGFzdG5hbWUiPgorICAgIDx2YWx1ZT7Dmmx0aW1vIG5vbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2VtYWlsIj4KKyAgICA8dmFsdWU+RS1NYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOCIgbmFtZT0idXNlcmFsdGVyc2VsZl9iaXJ0aCI+CisgICAgPHZhbHVlPkFuaXZlcnPDoXJpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkiIG5hbWU9InVzZXJhbHRlcnNlbGZfc3RyZWV0bm8iPgorICAgIDx2YWx1ZT5SdWEvTm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Rvd24iPgorICAgIDx2YWx1ZT5DRVAvQ2lkYWRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MSIgbmFtZT0idXNlcmFsdGVyc2VsZl9zdGF0ZSI+CisgICAgPHZhbHVlPlBhw61zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MiIgbmFtZT0idXNlcmFsdGVyc2VsZl9hZHJlc3Njb21tZW50Ij4KKyAgICA8dmFsdWU+RW5kZXJlw6dvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MyIgbmFtZT0idXNlcmFsdGVyc2VsZl9oZWFkZXIiPgorICAgIDx2YWx1ZT5EYWRvcyBkbyB1c3XDoXJpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQiIG5hbWU9InNhdmVtZW51YmFyX3NhdmVsYWJlbCI+CisgICAgPHZhbHVlPnNhbHZhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUiIG5hbWU9InNhdmVtZW51YmFyX3NhdmVsYWJlbCI+CisgICAgPHZhbHVlPlNhbHZhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYiIG5hbWU9ImFkbWluX3VzZXJsaXN0X3VzZXJfaWQiPgorICAgIDx2YWx1ZT5JRCBETyBVU1XDgVJJTzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDciIG5hbWU9ImFkbWluX3VzZXJsaXN0X2xvZ2luIj4KKyAgICA8dmFsdWU+bG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4IiBuYW1lPSJhZG1pbl91c2VybGlzdF9maXJzdG5hbSI+CisgICAgPHZhbHVlPnByaW1laXJvIG5vbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5IiBuYW1lPSJhZG1pbl91c2VybGlzdF9sYXN0bmFtZSI+CisgICAgPHZhbHVlPsO6bHRpbW8gbm9tZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAiIG5hbWU9InR1cm5vdmVybGlzdF9uZXh0Ij4KKyAgICA8dmFsdWU+bW9zdHJhciBwcsOzeGltbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTEiIG5hbWU9InR1cm5vdmVybGlzdF9wcmUiPgorICAgIDx2YWx1ZT5tb3N0cmFyIGFudGVyaW9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MiIgbmFtZT0ic2F2ZWNvbnRlbnRfY29uZmlybSI+CisgICAgPHZhbHVlPmV4Y2x1aXIgcmVnaXN0cm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzIiBuYW1lPSJzYXZlY29udGVudF9jb25maXJtX2NhbmNlbF9idG4iPgorICAgIDx2YWx1ZT5jYW5jZWxhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTQiIG5hbWU9InNhdmVjb250ZW50X2NvbmZpcm1fY29uZmlybV9idG4iPgorICAgIDx2YWx1ZT5leGNsdWlyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NSIgbmFtZT0ic2F2ZW1lbnViYXJfYWRkbGFiZWwiPgorICAgIDx2YWx1ZT5ub3ZvIHJlZ2lzdHJvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NiIgbmFtZT0ic2F2ZW1lbnViYXJfcmVsb2FkbGFiZWwiPgorICAgIDx2YWx1ZT5hdHVhbGl6YXIgcmVnaXN0cm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU3IiBuYW1lPSJzYXZlbWVudWJhcl9kZWxldGVsYWJlbCI+CisgICAgPHZhbHVlPmV4Y2x1aXIgcmVnaXN0cm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU4IiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fc3RhdHVzIj4KKyAgICA8dmFsdWU+c3RhdHVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1OSIgbmFtZT0idXNlcmFsdGVyX2FkbWluX3N0YXR1c0l0ZW0iPgorICAgIDx2YWx1ZT5kZXNhYmlsaXRhZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYwIiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fc3RhdHVzSXRlbSI+CisgICAgPHZhbHVlPmhhYmlsaXRhZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYxIiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fb3JnYW5pc2F0aW9uIj4KKyAgICA8dmFsdWU+b3JnYW5pemHDp8O1ZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYyIiBuYW1lPSJjYWxlbmRhcl9pY29ubGFiZWwiPgorICAgIDx2YWx1ZT5jYWxlbmTDoXJpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjMiIG5hbWU9InNhdmV3aW5kb3dfYnRuIj4KKyAgICA8dmFsdWU+ZmVjaGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2NCIgbmFtZT0ib3JnYW5pc2F0aW9udGFibGVsaXN0X2lkcm93Ij4KKyAgICA8dmFsdWU+SUQgZGEgT3JnYW5pemHDp8OjbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjUiIG5hbWU9Im9yZ2FuaXNhdGlvbnRhYmxlbGlzdF9uYW1lcm93Ij4KKyAgICA8dmFsdWU+bm9tZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjYiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGlkMSI+CisgICAgPHZhbHVlPnVzdcOhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2NyIgbmFtZT0idXNlcnZhbHVlX2xldmVsaWQyIj4KKyAgICA8dmFsdWU+bW9kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2OCIgbmFtZT0idXNlcnZhbHVlX2xldmVsaWQzIj4KKyAgICA8dmFsdWU+YWRtaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY5IiBuYW1lPSJ1c2VydmFsdWVfbGV2ZWxsYWJlbCI+CisgICAgPHZhbHVlPm7DrXZlbCBkbyB1c3XDoXJpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzAiIG5hbWU9Im9yZ3ZhbHVlX2hlYWRlciI+CisgICAgPHZhbHVlPm9yZ2FuaXphw6fDo288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTcxIiBuYW1lPSJvcmd2YWx1ZV9vcmduYW1lIj4KKyAgICA8dmFsdWU+bm9tZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzIiIG5hbWU9Im9yZ3ZhbHVlX29yZ25hbWUiPgorICAgIDx2YWx1ZT5hZGljaW9uYXIgb3JnYW5pemHDp8OjbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzMiIG5hbWU9Im9yZ3ZhbHVlX29yZ25hbWUiPgorICAgIDx2YWx1ZT5hZGljaW9uYXIgb3JnYW5pemHDp8OjbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzQiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW4iPgorICAgIDx2YWx1ZT5jYW5jZWxhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzUiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW4iPgorICAgIDx2YWx1ZT5hZGljaW9uYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc2IiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luIj4KKyAgICA8dmFsdWU+cmVtb3ZlciBvcmdhbml6YcOnw6NvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3NyIgbmFtZT0ib3JndmFsdWVfdXNlcmxpc3QiPgorICAgIDx2YWx1ZT51c3XDoXJpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzgiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJsaXN0YWRkIj4KKyAgICA8dmFsdWU+YWRpY2lvbmFyIHVzdcOhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3OSIgbmFtZT0ib3JndmFsdWVfdXNlcmxpc3RkZWxldGUiPgorICAgIDx2YWx1ZT5leGNsdWlyIHVzdcOhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4MCIgbmFtZT0ib3JndmFsdWVfdXNlcndpbmhlYWRlciI+CisgICAgPHZhbHVlPmFkaWNpb25hciB1c3XDoXJpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODEiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5zZWFyY2hmaWVsZCI+CisgICAgPHZhbHVlPnByb2N1cmFyIHVzdcOhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4MiIgbmFtZT0ib3JndmFsdWVfdXNlcndpbnNlYXJjaGJ0biI+CisgICAgPHZhbHVlPnByb2N1cmFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4MyIgbmFtZT0ib3JndmFsdWVfdXNlcndpbnNlYXJjaHJlc3VsdCI+CisgICAgPHZhbHVlPnVzdcOhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NCIgbmFtZT0ibG9naW53aW5fY2hvb3Nlb3JnYW5pc2F0aW9uIj4KKyAgICA8dmFsdWU+b3JnYW5pemHDp8OjbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODUiIG5hbWU9ImxvZ2lud2luX2Nob29zZW9yZ2FuaXNhdGlvbmJ0biI+CisgICAgPHZhbHVlPmVudHJhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODYiIG5hbWU9Im5hdmlfcm9vbWFkbWluIj4KKyAgICA8dmFsdWU+c2FsYXMgZGUgY29uZmVyw6puY2lhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NyIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPlNhbGFzIGRlIGNvbmZlcsOqbmNpYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODgiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5pZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODkiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5Ob21lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5MCIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPnDDumJsaWNvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5MSIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPm9yZ2FuaXphw6fDtWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5MiIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPlNhbGFzIGRlIGNvbmZlcsOqbmNpYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTMiIG5hbWU9InJvb212YWx1ZV9uYW1lIj4KKyAgICA8dmFsdWU+bm9tZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTQiIG5hbWU9InJvb212YWx1ZV90eXBlIj4KKyAgICA8dmFsdWU+dGlwbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTUiIG5hbWU9InJvb212YWx1ZV9pc3B1YmxpYyI+CisgICAgPHZhbHVlPnDDumJsaWNvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NiIgbmFtZT0icm9vbXZhbHVlX2NvbW1lbnQiPgorICAgIDx2YWx1ZT5jb21lbnTDoXJpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTciIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWljb24iPgorICAgIDx2YWx1ZT5zYWx2YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk4IiBuYW1lPSJ3aGl0ZWJvYXJkX29wZW5pY29uIj4KKyAgICA8dmFsdWU+YWJyaXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk5IiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbmhlYWRlciI+CisgICAgPHZhbHVlPnNhbHZhciBjb21vPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMCIgbmFtZT0id2hpdGVib2FyZF9zYXZlYXN3aW50ZXh0Ij4KKyAgICA8dmFsdWU+bm9tZSBkbyBhcnF1aXZvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMSIgbmFtZT0iZmlsZXMiPgorICAgIDx2YWx1ZT5ub21lIGRvIGFycXVpdm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAyIiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbmJ0bjEiPgorICAgIDx2YWx1ZT5jYW5jZWxhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDMiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2luYnRuMiI+CisgICAgPHZhbHVlPnNhbHZhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDQiIG5hbWU9InJwY2Vycm9yd2luX2hlYWRlciI+CisgICAgPHZhbHVlPmVycm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA1IiBuYW1lPSJsb2Fkd21sX2hlYWRlciI+CisgICAgPHZhbHVlPmNhcnJlZ2FuZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA2IiBuYW1lPSJsb2Fkd21sX21lc3NzbG9hZCI+CisgICAgPHZhbHVlPm9iamV0b3MgY2FycmVnYWRvczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDciIG5hbWU9ImxvYWR3bWxfbWVzc3N5bmMiPgorICAgIDx2YWx1ZT5zaW5jcm9uaXphbmRvIGNsaWVudGVzLCBjbGllbnRlcyBhIGVzcGVyYXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwOCIgbmFtZT0ibG9hZGltYWdlX21lc3Nsb2FkIj4KKyAgICA8dmFsdWU+Q2FycmVnYW5kbyBpbWFnZW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA5IiBuYW1lPSJsb2FkaW1hZ2VfbWVzc3N5bmMiPgorICAgIDx2YWx1ZT5zaW5jcm9uaXphbmRvIGNsaWVudGVzLCBjbGllbnRlcyBhIGVzcGVyYXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMCIgbmFtZT0ibG9hZHdtbF9jb25maXJtaGVhZGVyIj4KKyAgICA8dmFsdWU+bGltcGFyIMOhcmVhIGRlIGRlc2VuaG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjExIiBuYW1lPSJsb2Fkd21sX2NvbmZpcm1tZXNzIj4KKyAgICA8dmFsdWU+bGltcGFyIMOhcmVhIGRlIGRlc2VuaG8sIHRvZG9zIG9zIGRhZG9zIGRhIGxvdXNhIHNlcsOjbyBwZXJkaWRvczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTIiIG5hbWU9ImxvYWR3bWxfY29uZmlybW1lc3MyIj4KKyAgICA8dmFsdWU+Q29uZmlybWUgYW50ZXMgZGUgY2FycmVnYXIgbyBhcnF1aXZvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMyIgbmFtZT0ic2VuZF9pbnZpdGF0aW9uX2J0biI+CisgICAgPHZhbHVlPkVudmlhciBjb252aXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNCIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX2hlYWRlciI+CisgICAgPHZhbHVlPkVudmlhciBjb252aXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNSIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX3N1YmplY3QiPgorICAgIDx2YWx1ZT5Bc3N1bnRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNiIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX3JlY2lwaWVudCI+CisgICAgPHZhbHVlPkRlc3RpbmF0w6FyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE3IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fbWVzc2FnZSI+CisgICAgPHZhbHVlPk1lbnNhZ2VtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxOCIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX2J0bl9jb25maXJtIj4KKyAgICA8dmFsdWU+RW52aWFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxOSIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX2J0bl9jYW5jZWwiPgorICAgIDx2YWx1ZT5jYW5jZWxhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjAiIG5hbWU9InNlbmRfY2hhdF90ZXh0X2J0biI+CisgICAgPHZhbHVlPmVudmlhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjEiIG5hbWU9Imludml0ZWRfdXNlcndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5EYWRvcyBkbyB1c3XDoXJpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjIiIG5hbWU9Imludml0ZWRfdXNlcndpbl9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+U2V1IGFwZWxpZG8gcGFyYSBlc3NhIGNvbmZlcsOqbmNpYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjMiIG5hbWU9Imludml0ZWRfdXNlcndpbl9sb2dpbiI+CisgICAgPHZhbHVlPmFwZWxpZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI0IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZmlyc3RuYW1lIj4KKyAgICA8dmFsdWU+cHJpbWVpcm8gbm9tZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjUiIG5hbWU9Imludml0ZWRfdXNlcndpbl9sYXN0bmFtZSI+CisgICAgPHZhbHVlPsO6bHRpbW8gbm9tZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjYiIG5hbWU9Imludml0ZWRfdXNlcndpbl9tYWlsIj4KKyAgICA8dmFsdWU+ZW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI3IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fbGFuZyI+CisgICAgPHZhbHVlPmlkaW9tYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjgiIG5hbWU9Imludml0ZWRfdXNlcndpbl9lbnRlciI+CisgICAgPHZhbHVlPmVudHJhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjkiIG5hbWU9Imludml0ZWRfdXNlcndpbl9lbnRlciI+CisgICAgPHZhbHVlPkNhcnJlZ2FuZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMwIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZW50ZXIiPgorICAgIDx2YWx1ZT5DYXJyZWdhbmRvIGRhZG9zLCBwb3IgZmF2b3IgYWd1YXJkZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMxIiBuYW1lPSJ1c2VyX3JlZ2lzdGVyRmFsc2VQV0QiPgorICAgIDx2YWx1ZT5TZW5oYSBJbmNvcnJldGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMyIiBuYW1lPSJ1c2VyX3JlZ2lzdGVyRmFsc2VQV0RIZWFkZXIiPgorICAgIDx2YWx1ZT5Qb3IgZmF2b3IgZGlnaXRlIGRvaXMgcGFzc3dvcmRzIGlkw6pudGljb3MgY29tIHBlbG8gbWVub3MgNiBjYXJhY3RlcmVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMyIgbmFtZT0idXNlcl9yZWdpc3Rlck1haWxFcnJvciI+CisgICAgPHZhbHVlPkVtYWlsIEluY29ycmV0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzQiIG5hbWU9InVzZXJfcmVnaXN0ZXJNYWlsRXJyb3JIZWFkZXIiPgorICAgIDx2YWx1ZT5Wb8OqIGRpZ2l0b3UgdW0gZW5kZXJlw6dvIGRlIGVtYWlsIGludsOhbGlkby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM1IiBuYW1lPSJ1c2VyX3JlZ2lzdGVyU3VjY2VzcyI+CisgICAgPHZhbHVlPkNhZGFzdHJvIGNvbXBsZXRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzNiIgbmFtZT0idXNlcl9yZWdpc3RlclN1Y2Nlc3NIZWFkZXIiPgorICAgIDx2YWx1ZT5TdWEgY29udGEgZm9pIGNyaWFkYS4gVm9jw6ogcG9kZSBmYXplciBvIGxvZ2luIGFnb3JhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzciIG5hbWU9InVzZXJfc2hhcmluZ19tZXNzYWdlIj4KKyAgICA8dmFsdWU+Vm9jw6ogbsOjbyBwb2RlIGNvbXBhcnRpbGhhciBzdWEgdGVsYSBhZ29yYS4gQWxndWVtIGrDoSBjb21wYXJ0aWxob3UgYSB0ZWxhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzgiIG5hbWU9InVzZXJfc2hhcmluZ19tZXNzYWdlSGVhZGVyIj4KKyAgICA8dmFsdWU+Q29tcGFydGlsaGFtZW50byBwZXJkaWRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzOSIgbmFtZT0idXNlcl9kb1N0YXJ0U2NyZWVuVmlld2VyIj4KKyAgICA8dmFsdWU+Q29tcGFydGlsaGUgc3VhIHRlbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQwIiBuYW1lPSJzY3JlZW5fd2FybkJhbmR3aWR0aCI+CisgICAgPHZhbHVlPkZhbGhhIG5hIHRyYW5zbWlzc8OjbzogVm9jw6ogbsOjbyBlc3TDoSBhcHRvIGEgc2luY3Jvbml6YXIgYSB0ZWxhLiBGcmFtZXMgc2Vyw6NvIHBlcmRpZG9zLiBDYXNvIGVzc2UgYXZpc28gdGVuaGEgc2lkbyBtb3N0cmFkbyBjZWRvIHZvY8OqIHBvZGUgcGVkaXIgYW8gbW9kZXJhZG9yIHBhcmEgcmVkdXppciBhIHF1YWxpZGFkZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQxIiBuYW1lPSJzY3JlZW5fdXNlcmxhYmVsIj4KKyAgICA8dmFsdWU+VGVsYSBkZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQyIiBuYW1lPSJ3aGl0ZWJvYXJkX3RhYl9wYWludCI+CisgICAgPHZhbHVlPkRlc2VuaGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0MyIgbmFtZT0id2hpdGVib2FyZF90YWJfZG9jdW1lbnQiPgorICAgIDx2YWx1ZT5Eb2N1bWVudG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ0IiBuYW1lPSJ0YWJiYXJfY2hhdGljb24iPgorICAgIDx2YWx1ZT5DaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0NSIgbmFtZT0idGFiYmFyX2ZpbGVzaWNvbiI+CisgICAgPHZhbHVlPkFycXVpdm9zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0NiIgbmFtZT0idGFiYmFyX3BhcnRpY2lwYW50c2ljb24iPgorICAgIDx2YWx1ZT5NZW1icm9zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0NyIgbmFtZT0ic3dmcHJlc2VudGF0aW9uX2xpc3RzYXZlb3JpZyI+CisgICAgPHZhbHVlPkRvd25sb2FkIGRvIGRvY3VtZXRvIG9yaWdpbmFsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0OCIgbmFtZT0ic3dmcHJlc2VudGF0aW9uX2xpc3RzYXZlcGRmIj4KKyAgICA8dmFsdWU+RG93bmxvYWQgZG8gcGRmPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0OSIgbmFtZT0ic3dmcHJlc2VudGF0aW9uX2xpc3Rsb2Fkc3dmIj4KKyAgICA8dmFsdWU+Q2FycmVnYXIgYXByZXNlbnRhw6fDo28gbm8gcXVhZHJvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MCIgbmFtZT0ibmF2aW1haW5fY29uZmlnIj4KKyAgICA8dmFsdWU+Q29uZmlndXJhw6fDo288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUxIiBuYW1lPSJ3aGl0ZWJvYXJkX2JvdW5kaW5nYm94X2RyYWciPgorICAgIDx2YWx1ZT5BcnJhc3RhciBlc3NlIG9iamV0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTIiIG5hbWU9IndoaXRlYm9hcmRfYm91bmRpbmdib3hfcmVzaXplIj4KKyAgICA8dmFsdWU+UmVkaW1lbnNpb25hciBlc3NlIG9iamV0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTMiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3pvb20iPgorICAgIDx2YWx1ZT4lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1NCIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfc2xpZGUiPgorICAgIDx2YWx1ZT5kZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTUiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX2ZpcnN0c2xpZGUiPgorICAgIDx2YWx1ZT5JciBwYXJhIHByaW1laXJhIHDDoWdpbmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU2IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9wcmVzbGlkZSI+CisgICAgPHZhbHVlPklyIHBhcmEgcMOhZ2luYSBhbnRlcmlvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTciIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX25leHRzbGlkZSI+CisgICAgPHZhbHVlPklyIHBhcmEgYSBwcsOzeGltYSBww6FnaW5hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1OCIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfbGFzdHNsaWRlIj4KKyAgICA8dmFsdWU+SXIgcGFyYSBhIMO6bHRpbWEgcMOhZ2luYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTkiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3pvb21taW51cyI+CisgICAgPHZhbHVlPlpvb20gLS08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYwIiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl96b29tcGx1cyI+CisgICAgPHZhbHVlPlpvb20gKys8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYxIiBuYW1lPSJzYWx1dGF0aW9uX21yIj4KKyAgICA8dmFsdWU+U3IuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MiIgbmFtZT0ic2FsdXRhdGlvbl9taXNzIj4KKyAgICA8dmFsdWU+U3JhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjMiIG5hbWU9Im5hdmltYWluX2NvbmZhZG1pbiI+CisgICAgPHZhbHVlPkNvbmZpZ3VyYcOnw6NvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2NCIgbmFtZT0iY29uZnRhYmxlX2hlYWRlcklkIj4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY1IiBuYW1lPSJjb25mdGFibGVfaGVhZGVya2V5Ij4KKyAgICA8dmFsdWU+Q2hhdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY2IiBuYW1lPSJjb25mYWRtaW5mb3JtX2hlYWRlciI+CisgICAgPHZhbHVlPkNvbmZpZ3VyYcOnw6NvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2NyIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbGtleSI+CisgICAgPHZhbHVlPkNoYXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2OCIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbHVwZGF0ZWQiPgorICAgIDx2YWx1ZT7Dumx0aW1hIGF0dWFsaXphw6fDo288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY5IiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsdXBkYXRlZGJ5Ij4KKyAgICA8dmFsdWU+YXR1YWxpemFkbyBwb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjcwIiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsY29tbWVudCI+CisgICAgPHZhbHVlPmNvbWVudMOhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MSIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbGtleSI+CisgICAgPHZhbHVlPmNoYXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MiIgbmFtZT0idHVybm92ZXJsaXN0X21heHJlc3VsdHMiPgorICAgIDx2YWx1ZT5kZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzMiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2hlYWRlciI+CisgICAgPHZhbHVlPlVzdcOhcmlvczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzQiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2ljb25kZWxldGUiPgorICAgIDx2YWx1ZT5leGNsdWlyIHVzdcOhcmlvIGRhIGNvbXBhbmlhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NSIgbmFtZT0ib3JnYW5pc2F0aW9uX3VzZXJzZGVsZXRlZGhlYWQiPgorICAgIDx2YWx1ZT5leGNsdWlyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NiIgbmFtZT0ib3JnYW5pc2F0aW9uX3VzZXJzYWxyZWFkYWRkZWQiPgorICAgIDx2YWx1ZT5Fc3RlIHVzdcOhcmlvIGrDoSDDqSBtZW1icm8gZGVzdGEgY29tcGFuaGlhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzciIG5hbWU9ImRhc2hib2FyZF9uZXdzaGVhZGVyIj4KKyAgICA8dmFsdWU+Tm90w61jaWFzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3OCIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua3NoZWFkZXIiPgorICAgIDx2YWx1ZT5MaW5rcyBSw6FwaWRvczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzkiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtDb25mIj4KKyAgICA8dmFsdWU+SXIgcGFyYSBjb25mZXLDqm5jaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgwIiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rQXVkaXQiPgorICAgIDx2YWx1ZT5JciBwYXJhIGF1ZGl0w7NyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgxIiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rc3VwcG9ydCI+CisgICAgPHZhbHVlPkFqdWRhIGUgc3Vwb3J0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODIiIG5hbWU9ImRhc2hib2FyZF9xdWlja2hvbWVwYWdldXJsIj4KKyAgICA8dmFsdWU+aHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnLzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODMiIG5hbWU9ImRhc2hib2FyZF9xdWlja21haWxpbmdsaXN0dXJsIj4KKyAgICA8dmFsdWU+aHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnL21haWwtbGlzdHMuaHRtbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODQiIG5hbWU9ImRhc2hib2FyZF9yZXBvcnRidWdzIj4KKyAgICA8dmFsdWU+UmVwb3J0YXIgdW0gYnVnITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODUiIG5hbWU9ImRhc2hib2FyZF9yc3NsaXN0aXRlbWxpbmt0ZXh0Ij4KKyAgICA8dmFsdWU+bWFpczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODYiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtob21lcGFnZWxhYmVsIj4KKyAgICA8dmFsdWU+V2Vic2l0ZSBkbyBwcm9qZXRvIChodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4NyIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua21haWxpbmdsaXN0bGFiZWwiPgorICAgIDx2YWx1ZT5MaXN0YSBkZSBlbWFpbHMgKGh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9tYWlsLWxpc3RzLmh0bWwpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4OCIgbmFtZT0ibG9naW5fcmVtZW1iZXJ1c2VyIj4KKyAgICA8dmFsdWU+UmVsZW1icmFyIExvZ2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4OSIgbmFtZT0ibWFpbl9uYXZpIj4KKyAgICA8dmFsdWU+Q29udGXDumRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPk1pbmhhIEhvbWUgUGFnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTEiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5NeSBSZXVuacO1ZXMgQWdlbmRhZGFzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MiIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPk15IEV2ZW50b3MgQWdlbmRhZG9zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MyIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPlJldW5pw7VlcyBQw7pibGljYXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk0IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+UmV1bmnDtWVzIFByaXZhZGFzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NSIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPkV2ZW50b3MgUMO6YmxpY29zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NiIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPkV2ZW50b3MgUHJpdmFkb3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk3IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+Q29udGXDumRvIFDDumJsaWNvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5OCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPkNvbnRlw7pkbyBQcml2YWRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5OSIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPkNvbnRlw7pkbyBQZXNzb2FsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDEiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5Nb2RlcmHDp8OjbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDIiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5BcGxpY2FyIHBhcmEgTW9kZXJhw6fDo288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAzIiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+Q29uanVudG9zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNCIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPkVzY29saGEgdW0gYXJxdWl2bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDUiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5Db25maWd1cmHDp8O1ZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA2IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+Q29uZmlndXJhw6fDtWVzIGRlIENhbSBlIE1pYzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDciIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5Db25maWd1cmHDp8O1ZXMgZGEgbG91c2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA4IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+U2FpcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDkiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5Wb2x0YXIgcGFyYSBzYWxhczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTAiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5Mb2dvdXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzExIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlZpc8OjbyBEZXNrdG9wPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMiIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5pbmljaWFyIHZpc8OjbyBEZXNrdG9wPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMyIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5Ww61kZW8gZSDDgXVkaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE0IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPkNoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE1IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPkxvdXNhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxNiIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5Nb2RlcmHDp8OjbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTciIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+QXJxdWl2b3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE4IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlVzdcOhcmlvczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTkiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+Q29uanVudG9zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyMCIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5Ow6NvIGV4aXN0ZSB1c3XDoXJpbyBjb25lY3RhZG8gYSBlc3RlIG5vbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIxIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlVtIGVtYWlsIGNvbnRlbmRvIHVtIGxpbmsgZm9pIGVudmlhZG8gYSBzZXUgZW5kZXJlw6dvIGRlIGVtYWlsLCBwb3IgZmF2b3IgY29uZmlyYSBzdWEgY2FpeGEgcG9zdGFsLiBTZSB2b2PDqiBhaW5kYSBuw6NvIHRpdmVyIHJlY2ViaWRvIHVtIGVtYWlsLCBwb3IgZmF2b3IgYWp1c3RlIGFzIGNvbmZpZ3VyYcOnw7VlcyBkZSBzcGFtIGUgcmVtYW5kZSBhIGNvbmZpcm1hw6fDo28gZGUgZW1haWwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyMiIgbmFtZT0iZXJyb3J0eXBlIj4KKyAgICA8dmFsdWU+RXJybzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjMiIG5hbWU9ImVycm9ydHlwZSI+CisgICAgPHZhbHVlPk1lbnNhZ2VtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNCIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+SGFzaCBpbnbDoWxpZG8uIE5lbmh1bSB1c3XDoWlvIGVuY29udHJhZG8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNSIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+UmVzZXQgc3VhIHNlbmhhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNiIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+TG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI3IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5hbHRlcmFyIHNlbmhhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyOCIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+bm92YSBzZW5oYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjkiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPnJlZGlnaXRlIGEgc2VuaGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMwIiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5BcyBzZW5oYXMgcXVlIHZvY8OqIGRpZ2l0b3UgbsOjbyBzw6NvIGlndWFpcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMxIiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT40IG91IG1haXMgY2FyYWN0ZXJlczsgbWFpw7pzY3VsYXMgZSBtaW7DunNjdWxhcyBzw6NvIGRpZmVyZW50ZXMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzMiIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+U2VuaGEgY29uZmlndXJhZGEuIFZvY8OqIHBvZGUgc2UgbG9nYXIgYWdvcmEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzMyIgbmFtZT0icnBjY2FsbGJhY2siPgorICAgIDx2YWx1ZT5PSzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzQiIG5hbWU9InJwY2dlbmVyYWxlcnJvciI+CisgICAgPHZhbHVlPkVycm8gZGVzY29uaGVjaWRvLiBQb3IgZmF2b3IgaW5mb3JtZSBpc3NvIGFvIFNlcnZpY2UtVGVhbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM1IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlVzZXJuYW1lIG7Do28gZW5jb250cmFkbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzYiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+U2VuaGEgaW52w6FsaWRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNyIgbmFtZT0ibG9nb3V0Ij4KKyAgICA8dmFsdWU+RGVzY29uZWN0YWRvIGNvbSBzdWNlc3NvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzOCIgbmFtZT0icmVnaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+Q2FkYXN0cm8gZG8gZnJvbnRlbmQgZGVzYWJpbGl0YWRvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzkiIG5hbWU9InJlZ2lzdHJhdGlvbiI+CisgICAgPHZhbHVlPkVNYWlsIGludsOhbGlkbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDAiIG5hbWU9InJlZ2lzdHJhdGlvbiI+CisgICAgPHZhbHVlPm5vbWUgZGUgYXJxdWl2byBkdXBsaWNhZG8sIHBvciBmYXZvciBlc2NvbGhhIG91dHJvIG5vbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQxIiBuYW1lPSJmaWxlYnJvd3NlciI+CisgICAgPHZhbHVlPm5vbWUgZGUgYXJxdWl2byBtdWl0byBjdXJ0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDIiIG5hbWU9ImZpbGVicm93c2VyIj4KKyAgICA8dmFsdWU+TsOjbyBmb2kgcG9zc8OtdmVsIHNhbHZhciBvIGVuZGVyZcOnbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDMiIG5hbWU9InVzZXJhZG1pbiI+CisgICAgPHZhbHVlPlVzdcOhcmlvIGFkaWNpb25hZG8gbWFzIHZvY8OqIHByZWNpc2EgYXNzb2NpYXIgZXNzZSB1c3XDoXJpbyBhIHVtYSBvcmdhbml6YcOnw6NvLCBzZSBuw6NvIGVsZSBuw6NvIGVzdGFyw6EgYXB0byBhIHNlIGFzc29jaWFyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDQiIG5hbWU9ImFkbWluZm9ybXMiPgorICAgIDx2YWx1ZT5Ob3ZvIFJlZ2lzdHJvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TmVuaHVtIGNhbXBvIGVuY29udHJhZG8gY29tIGVzc2UgaWQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TmVuaHVtIExhYmVsIGVuY29udHJhZG8gcGFyYSBlc3RlIGNhbXBvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDciIG5hbWU9ImVycm9ybWVzc2FnZSI+CisgICAgPHZhbHVlPk5lY2Vzc8OhcmlvIHBlcmZpbCBkZSBhZG1pbmlzdHJhZG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0OCIgbmFtZT0ibWFpbm5hdmkiPgorICAgIDx2YWx1ZT5FZGl0b3IgZGUgaWRpb21hczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDkiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPklkaW9tYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTAiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkxhYmVsLUlEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1MSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TGFiZWwtTm9tZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTIiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPlZhbG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1MyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+RmllbGR2YWx1ZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU0IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5MYWJlbE5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU1IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5MYWJlbFZhbHVlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1NiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TGFiZWwtSUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU3IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5Wb2PDqiBhcGVuYXMgZGVsZXRvdSBvIExhYmVsIE7Dgk8gbyBGaWVsZCEgVm9jw6ogbsOjbyBwb2RlIGRlbGV0YXIgZXNzZSBGaWVsZCwgcG9kZW0gZXhpc3RpciBMYWJlbHMgZW0gb3V0cm9zIGlkaW9tYXMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1OCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TGFiZWxpZCBpbnbDoWxpZG8uIE8gRmllbGRMYW5ndWFnZXN2YWx1ZXNfSWQgbsOjbyBwb2RlIHNlciBlbmNvbnRyYWRvIG5hIGJhc2UgZGUgZGFkb3MuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1OSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+Vm9jw6ogbsOjbyBwb2RlIGRlbGV0YXIgZXNzZSBGaWVsZC4gVm9jw6ogcG9kZSBhcGVuYXMgZGVsZXRhciBMYWJlbHMgTsOCTyBGaWVsZHMuIE7Do28gZXhpc3RlIExhYmVsIGNhcnJlZ2FkbyBubyBtb21lbnRvLCBzZSBuZW5odW0gRmllbGQgZm9yIHNlbGVjaW9uYWRvIG91IG7Do28gZXhpc3RpciBMYWJlbCBwYXJhIGVzc2UgaWRpb21hIHBhcmEgZXNzZSBGaWVsZCBkZWZpbmlkby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYwIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5leHBvcnRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjEiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPlZvY8OqIHByZWNpc2EgZmF6ZXIgbG9naW4gbm92YW1lbnRlIHBhcmEgdmVyIGFzIG11ZGFuw6dhcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYyIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5BZGljaW9uYXIgbm92byBpZGlvbWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYzIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5leGNsdWlyIGlkaW9tYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjQiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkFkaWNpb25hciBub3ZvIGlkaW9tYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjUiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPk5vbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY2IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5hZGljaW9uYXIgaWRpb21hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+QmFja3VwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2OCIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+aXIgYW8gcHJpbWVpcm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY5IiBuYW1lPSJ0dXJub3Zlcmxpc3QiPgorICAgIDx2YWx1ZT5pciBhbyBhbnRlcmlvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzAiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPmlyIGFvIHByw7N4aW1vPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MSIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+aXIgYW8gw7psdGltbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzIiIG5hbWU9InZpZGVvYm94Ij4KKyAgICA8dmFsdWU+cGFsZXN0cmFzIGRvIHVzdcOhcmlvIChCeSBjbGlja2luZyBoZXJlIHlvdSBjYW4gZ2l2ZSBleGNsdXNpdmUgYXVkaW8gLyBtdXRlIHRoZSBtaWNyb3Bob25lIG9mIG90aGVycyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzczIiBuYW1lPSJ2aWRlb2JveCI+CisgICAgPHZhbHVlPmRlc2xpZ2FyL2xpZ2FyIHNvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPlNpc3RlbWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc1IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5TdWFzIGNvbmZpZ3VyYcOnw7VlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzYiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPm9sw6EsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3NyIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+RWRpdGFyIHNldSBwZXJmaWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc4IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5Ob3ZhcyBNZW5zYWdlbnM6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3OSIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+VXBsb2FkIGRlIG5vdmEgaW1hZ2VtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4MCIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5EYWRvcyBkbyBVc3XDoXJpbyAtIEV4cG9ydGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4MSIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5Ub2RhcyBhcyBvcmdhbml6YcOnw7VlcyBqw6EgZGV2ZW0gZXhpc3RpciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgyIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPmNvbWXDp2FyIGEgZXhwb3J0YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgzIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPlBvciBvcmdhbml6YcOnw6NvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NCIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5jb21lw6dhciBhIGV4cG9ydGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NSIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5EYWRvcyBkbyBVc3XDoXJpbyAtIEltcG9ydGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NiIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5lc2NvbGhhIHVzZXJzLnhtbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODciIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPmltcG9ydGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4OCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+RXhwb3J0YXIgcGFyYSBYTUwgLSBFc3NlcyBhcnF1aXZvcyBwb2RlbSBzZXIgdXNhZG9zIHBhcmE6IC0gQ29udHJpYnVhIGNvbSBvIHByb2pldG8gLSBJbXBvcnRlIGVtIG91dHJvIHNpc3RlbWEgLSBCYWNrdXAgLSBDdXN0b21pemHDp8OjbyAtIENvbG9xdWUgbm8gZGlyZXTDs3JpbyBkZSBpZGlvbWFzIHBhcmEgc3VhIHByw7N4aW1hIGluc3RhbGHDp8OjbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODkiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkVzY29saGEgdW0gYXJxdWl2byBkZSBpZGlvbWEgcGFyYSBpbXBvcnRhci4gRXNjb2xoYSBvIGlkaW9tYSBjb3JyZXRvIG5vIENvbWJvYm94ISBOw6NvIGltcG9ydGEgbyBub21lIGRvIGFycXVpdm8sIGVsZSBzZXLDoSBpbXBvcnRhZG8gbmVzc2UgaWRpb21hITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTAiIG5hbWU9ImltcG9ydHdpbmRvdyI+CisgICAgPHZhbHVlPmltcG9ydGFyIC0gZXNjb2xoYSBvIGFycXVpdm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkxIiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+U2FsdmFyIGNvbW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkyIiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+Tm9tZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkzIiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+Q29tZW50w6FyaW86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NCIgbmFtZT0icmVjb3JkaW5nc2F2ZXdpbiI+CisgICAgPHZhbHVlPnNhbHZhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTUiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkdyYXZhw6fDtWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NiIgbmFtZT0icmVjb3JkZXIiPgorICAgIDx2YWx1ZT5WaXp1YWxpemFkb3IgZGUgR3JhdmHDp8O1ZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk3IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5HcmF2YcOnw7VlcyBkZSBzYWxhcyBww7pibGljYXMgZSBwcml2YWRhczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTgiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPlVzdcOhcmlvcyA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5OSIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+RW50cm91OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDAiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDEiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPlVzdcOhcmlvcyBuZXNzYSBzYWxhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDIiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPmF0dWFsaXphcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDMiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPkVzc2Egc2FsYSBlc3TDoSBjaGVpYS4gVGVudGUgbm92YW1lbnRlIGVtIGFsZ3VucyBpbnN0w6JudGVzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDQiIG5hbWU9InJvb21zTGlzdCI+CisgICAgPHZhbHVlPmNsaXF1ZSBlbSB1bWEgc2FsYSBwYXJhIHZlciBvcyBkZXRhbGhlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDUiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPkNoYXQgY29tIG9zIHVzdcOhcmlvcyBkZXNzYSBzYWxhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDYiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPlNhbGE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNyIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+VXN1w6FyaW9zIG5lc3NhIHNhbGE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwOCIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+ZGVzZGU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwOSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+bW9zdHJhciBhIGdyYXZhw6fDo288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDEwIiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5UYW1hbmhvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTEiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkRhdGE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMiIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+TW9kbyBHcmF2YcOnw6NvISBWb2PDqiBuw6NvIHBvZGUgbXVkYXIgbmVuaHVtIHZhbG9yLCBlc3RlIMOpIHVtIGFycXVpdm8gZ3JhdmFkbyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDEzIiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5Nb3N0cmFyIGVzc2EgZ3JhdmHDp8OjbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTQiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPlBsYXkgLyBQYXVzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTUiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkNvbWXDp2FyIGdyYXZhw6fDo288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE2IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5wYXJhciBncmF2YcOnw6NvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxNyIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+R3JhdmHDp8Ojbzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE4IiBuYW1lPSJyZWNvcmRfZXJyb3JfbXNnIj4KKyAgICA8dmFsdWU+SsOhIGV4aXN0ZSBhbGd1w6ltIGdyYXZhbmRvIG5lc3NlIG1vbWVudG86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxOSIgbmFtZT0icmVjb3JkX21lc3NhZ2UiPgorICAgIDx2YWx1ZT5HcmF2YW5kbyEgUGVsbyB1c3XDoXJpbzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIwIiBuYW1lPSJyZWNvcmRfY2FuY2VsIj4KKyAgICA8dmFsdWU+Y2FuY2VsYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIxIiBuYW1lPSJyZWNvcmRfY2FuY2FsX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5HcmF2YcOnw6NvIHNlcsOhIGNhbmNlbGFkYSBlIG7Do28gc2Vyw6Egc2FsdmEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyMiIgbmFtZT0iY2FuY2VsX2RpYWxvZ19yZXN1bWUiPgorICAgIDx2YWx1ZT5jb250aW51YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIzIiBuYW1lPSJjYW5jZWxfZGlhbG9nX3Jlc3VtZV90b29sdGlwIj4KKyAgICA8dmFsdWU+RmVjaGFyIGVzc2EgamFuZWxhIGUgY29udGludWFyIGEgZ3JhdmHDp8Ojby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI0IiBuYW1lPSJwYWludHRvb2xzX2VsbGlwc2VfY29sb3IiPgorICAgIDx2YWx1ZT5tdWRhciBjb3IgZGEgbGluaGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI1IiBuYW1lPSJjb2xvcnBpY2tlcl9oZWFkIj4KKyAgICA8dmFsdWU+TXVkYXIgQ29yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyNiIgbmFtZT0icGFpbnR0b29sc19saW5lX2Rpc2FibGUiPgorICAgIDx2YWx1ZT5EaXNhYmlsaXRhciAvIEhhYmlsaXRhciBjb3IgZGEgbGluaGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI3IiBuYW1lPSJwYWludHRvb2xzX2ZpbGxfZGlzYWJsZSI+CisgICAgPHZhbHVlPm11ZGFyIEZpbGxjb2xvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjgiIG5hbWU9InBhaW50dG9vbHNfbGluZV9kaXNhYmxlIj4KKyAgICA8dmFsdWU+RGlzYWJpbGl0YXIgLyBIYWJpbGl0YXIgRmlsbGNvbG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyOSIgbmFtZT0iY2hhbmdlX3dpZHRoX2Fycm93X2Rvd25fc2xpZGVyIj4KKyAgICA8dmFsdWU+TXVkYXIgdGFtYW5obyBkYSBsaW5oYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzAiIG5hbWU9ImNsb3NlX3NtYWxsX3BvcHVwcyI+CisgICAgPHZhbHVlPmZlY2hhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzEiIG5hbWU9InBhaW50X3Rvb2xfbGV0dGVyIj4KKyAgICA8dmFsdWU+bXVkYXIgdGFtYW5obyBkYSBmb250ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzIiIG5hbWU9InJlY29yZGluZ3NsaXN0X2RlbGV0ZSI+CisgICAgPHZhbHVlPkRlbGV0YXIgR3JhdmHDp8OjbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzMiIG5hbWU9InJlY29yZGluZ3NsaXN0X3JlY29yZGVkQnlHdWVzdCI+CisgICAgPHZhbHVlPkNvbnZpZGFkbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzQiIG5hbWU9InJlY29yZGluZ3NsaXN0X3JlY29yZGVkYnkiPgorICAgIDx2YWx1ZT5Qb3I6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNSIgbmFtZT0icmVjb3JkaW5nc190YWJsZV9oZWFkX25hbWUiPgorICAgIDx2YWx1ZT5Ob21lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNiIgbmFtZT0icmVjb3JkaW5nc190YWJsZV9oZWFkX3Jvb20iPgorICAgIDx2YWx1ZT5TYWxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNyIgbmFtZT0icmVjb3JkaW5nc190YWJsZV9oZWFkX2RhdGUiPgorICAgIDx2YWx1ZT5EYXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzOCIgbmFtZT0icmVjb3JkX3N0YXJ0X2NhbmNlbCI+CisgICAgPHZhbHVlPmNhbmNlbGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzOSIgbmFtZT0icmVjb3JkX3N0YXJ0X3N0YXJ0Ij4KKyAgICA8dmFsdWU+c3RhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQwIiBuYW1lPSJmaWxlc2Jyb3dzZXJfdGFibGVfaGVhZF9uYW1lIj4KKyAgICA8dmFsdWU+Tm9tZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDEiIG5hbWU9ImZpbGVzYnJvd3Nlcl90YWJsZV9oZWFkX2RhdGUiPgorICAgIDx2YWx1ZT5EYXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MiIgbmFtZT0iY2hhdF9jbGVhcl9oaXN0b3J5Ij4KKyAgICA8dmFsdWU+RGVsZXRhciBTZXJ2ZXItQ2hhdGxvZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDMiIG5hbWU9ImNoYXRfb3ZlcmFsbF9oZWFkZXIiPgorICAgIDx2YWx1ZT5DaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NCIgbmFtZT0iY2hhdF9zZW5kX2J0biI+CisgICAgPHZhbHVlPmVudmlhciBtZW5zYWdlbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDUiIG5hbWU9ImNoYXRfZW1vdF9idG4iPgorICAgIDx2YWx1ZT5FbW90aWNvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ2IiBuYW1lPSJjaGF0X2Vtb3Rfd2luIj4KKyAgICA8dmFsdWU+RW1vdGljb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NyIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzIj4KKyAgICA8dmFsdWU+RXNjb2xoZXIgYWRhcHRhZG9yZXMgcHVibGljYWRvczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDgiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPsOBdWRpbyBlIFbDrWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDkiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPsOBdWRpbyBzb21lbnRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1MCIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2NvbWJvIj4KKyAgICA8dmFsdWU+VsOtZGVvIHNvbWVudGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUxIiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT5zZW0gw4F1ZGlvL1bDrWRlbyAoSW1hZ2UgZXN0w6F0aWNhKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTIiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19pbmZvX3RleHQiPgorICAgIDx2YWx1ZT5OZW5odW0gw4F1ZGlvL1bDrWRlbyBkbyBzZXUgUEMgc2Vyw6EgcHVibGljYWRvLCBhbyBpbnbDqXMgZGlzc28gdW1hIGZpZ3VyYSBkbyBzZXUgcGVyZmlsIHNlcsOhIG1vc3RyYWRhLiBFc2NvbGhhIGVzc2FzIGNvbmZpZ3VyYcOnw7VlcyBzZSB2b2PDqiB0ZW0gcHJvYmxlbWFzIGNvbSBzdWEgY29uZXjDo28gb3UgdW1hIGNvbmV4w6NvIGRlIEludGVybmV0IGxlbnRhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTMiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfbW9uZGF5Ij4KKyAgICA8dmFsdWU+U0VHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV90dWVzZGF5Ij4KKyAgICA8dmFsdWU+VEVSPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV93ZWRuZXNkYXkiPgorICAgIDx2YWx1ZT5RVUE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU2IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3RodXJzZGF5Ij4KKyAgICA8dmFsdWU+UVVJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NyIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9mcmlkYXkiPgorICAgIDx2YWx1ZT5TRVg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU4IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3NhdHVyZGF5Ij4KKyAgICA8dmFsdWU+U0FCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1OSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9zdW5kYXkiPgorICAgIDx2YWx1ZT5ET008L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYwIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX21vbmRheSI+CisgICAgPHZhbHVlPlNlZ3VuZGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYxIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1R1ZXNkYXlMYWJlbCI+CisgICAgPHZhbHVlPlRlcsOnYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjIiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfV2VkbmVzZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5RdWFydGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYzIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1RodXJzZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5RdWludGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY0IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX0ZyaWRheUxhYmVsIj4KKyAgICA8dmFsdWU+U2V4dGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY1IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1NhdHVyZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5TYWJhZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY2IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1N1bmRheUxhYmVsIj4KKyAgICA8dmFsdWU+RG9taW5nbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjciIG5hbWU9ImNhbGVuZGFyX3dlZWtudW1iZXJfaGVhZGVyIj4KKyAgICA8dmFsdWU+Q1M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY4IiBuYW1lPSJjYWxlbmRhcl93ZWVrbnVtYmVyX2hlYWRlclRvb2x0aXAiPgorICAgIDx2YWx1ZT5DYWxlbmTDoXJpbyBkYSBzZW1hbmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY5IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+SmFuZWlybzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzAiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5GZXZlcmVpcm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDcxIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+TWFyw6dvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3MiIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPkFicmlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3MyIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPk1haW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc0IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+SnVuaG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc1IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+SnVsaG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc2IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+QXVnb3N0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzciIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5TZXRlbWJybzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzgiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5PdXR1YnJvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3OSIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPk5vdmVtYnJvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4MCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPkRlemVtYnJvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4MSIgbmFtZT0iY2FsZW5kYXJ3aW5faGVhZGVyIj4KKyAgICA8dmFsdWU+Q2FsZW5kw6FyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgyIiBuYW1lPSJyb29tYWRtaW5fbGFiZWxOdW1iZXJPZlBhcnRpY2lwYW50cyI+CisgICAgPHZhbHVlPlBhcnRpY2lwYW50ZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgzIiBuYW1lPSJyb29tVmFsdWVfYWR2YW5jZWRTZXR0aW5ncyI+CisgICAgPHZhbHVlPk1vc3RyYXIgY29uZmlndXJhw6fDtWVzIGRlIGxheW91dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODQiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfdmlkZW9YIj4KKyAgICA8dmFsdWU+WCB8IFk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg1IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3ZpZGVvWSI+CisgICAgPHZhbHVlPkxhcmd1cmEgfCBBbHR1cmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg2IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0Ij4KKyAgICA8dmFsdWU+VmlkZW8tQ29udGFpbmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NyIgbmFtZT0icm9vbUFkbWluX2xheW91dF9tb2QiPgorICAgIDx2YWx1ZT5Nb2RlcmHDp8Ojby1Db250YWluZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg4IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X21vZF9wb3MiPgorICAgIDx2YWx1ZT5YPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4OSIgbmFtZT0icm9vbUFkbWluX2xheW91dF93aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+TG91c2EtQ29udGFpbmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5MCIgbmFtZT0icm9vbUFkbWluX2xheW91dF93aGl0ZWJvYXJkX3Nob3ciPgorICAgIDx2YWx1ZT5IYWJpbGl0YWRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5MSIgbmFtZT0icm9vbUFkbWluX2xheW91dF93aGl0ZWJvYXJkX3BvcyI+CisgICAgPHZhbHVlPlggfCBZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5MiIgbmFtZT0icm9vbUFkbWluX2xheW91dF93aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+TGFyZ3VyYSB8IEFsdHVyYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTMiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXMiPgorICAgIDx2YWx1ZT5BcnF1aXZvcyxDaGF0LFBhcnRpY2lwYW50ZXMgLSBDb250YWluZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk0IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X2ZpbGVzX3Nob3ciPgorICAgIDx2YWx1ZT5IYWJpbGl0YWRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NSIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlc19wb3MiPgorICAgIDx2YWx1ZT5YIHxZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NiIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlcyI+CisgICAgPHZhbHVlPkxhcmd1cmEgfCBBbHR1cmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk3IiBuYW1lPSJtb2RlcmF0b3JfZ29uZV9tZXNzYWdlIj4KKyAgICA8dmFsdWU+TyBtb2RlcmFkb3Igc2FpdSBkYSBzYWxhLiBOZW5odW0gZXN0w6EgcHJlc2VudGUgbm8gbW9tZW50by4gVm9jw6ogcG9kZSBzZSBjYW5kaWRhdGFyIHBhcmEgbW9kZXJhw6fDo28gb3UgZXNwZXJhci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk4IiBuYW1lPSJtb2RlcmF0b3JfbWVzc2FnZV9ldmVudF9ub19tb2QiPgorICAgIDx2YWx1ZT5Ow6NvIGV4aXN0ZSBuZW5odW0gbW9kZXJhZG9yIG5lc3NhIHNhbGEsIG1hcyBleGlzdGVtIGFsZ3VucyBwYXJ0aWNpcGFudGVzLiBWb2PDqiBkZXZlIHNlIGNhbmRpZGF0YXIgYSBtb2RlcmHDp8OjbyBvdSBlc3BlcmFyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTkiIG5hbWU9ImZlZWRiYWNrX3RlbXBsYXRlX3N1YmplY3QiPgorICAgIDx2YWx1ZT5GZWVkYmFjayAkQVBQX05BTUU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAwIiBuYW1lPSJpbnZpdGF0aW9uX3RlbXBsYXRlX2hlYWQiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgLSBDb252aXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwMSIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X2Zyb20iPgorICAgIDx2YWx1ZT5NZW5zYWdlbSBkbyBVc3XDoXJpbzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAyIiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfbWVzc2FnZSI+CisgICAgPHZhbHVlPk1lbnNhZ2VtOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDMiIG5hbWU9Imludml0YXRpb25fdGV4dF9jbGlja190ZXh0Ij4KKyAgICA8dmFsdWU+Q2xpY2sgbmVzdGUgbGluayBwYXJhIHBhcnRpY2lwYXIgZGFzIHJldW5pw7Vlczo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA0IiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfY2xpY2tfdGV4dF9saW5rIj4KKyAgICA8dmFsdWU+Q2xpY2sgYXF1aSBwYXJhIGVudHJhciBuYSBzYWxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwNSIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X2NsaWNrX3RleHRfaGVscCI+CisgICAgPHZhbHVlPnNlIHZvY8OqIHRlbSBwcm9ibGVtYXMgY29tIG8gbGluaywgcG9yIGZhdm9yIGNvcGllIGUgY29sZSBpc3NvIG5vIHNldSBicm93c2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDYiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9oZWFkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIFNpZ25VcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDciIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9oZWFkMiI+CisgICAgPHZhbHVlPlNldXMgZGFkb3M6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwOCIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X3VzZXJuYW1lIj4KKyAgICA8dmFsdWU+TG9naW46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwOSIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X3Bhc3MiPgorICAgIDx2YWx1ZT5TZW5oYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTEwIiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfbWFpbCI+CisgICAgPHZhbHVlPkVNYWlsOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTEiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9ieWUiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUtVGVhbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTIiIG5hbWU9InJlZ2lzdGVyX21haWxfc3ViamVjdCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSBTaWduLVVwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxMyIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSAtIFJlc2V0IFBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNCIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfdGVzdF9saW5rIj4KKyAgICA8dmFsdWU+Q2xpcXVlIG5lc3RlIGxpbmsgcGFyYSBjcmlhciB1bWEgbm92YSBzZW5oYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE1IiBuYW1lPSJyZXNldF9wYXNzd29yZF90ZW1wbGF0ZV90ZXh0Ml9saW5rIj4KKyAgICA8dmFsdWU+Q2xpY2sgYXF1aSBwYXJhIGNyaWFyIHVtYW5vdmEgc2VuaGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE2IiBuYW1lPSJyZXNldF9wYXNzd29yZF90ZW1wbGF0ZV90ZXh0M19saW5rIj4KKyAgICA8dmFsdWU+c2Ugdm9jw6ogdGl2ZXIgcHJvYmxlbWFzIGNvbSBvIGxpbmssIHBvciBmYXZvciBjb3BpZSBlIGNvbGUgaXNzbyBlbSBzZXUgYnJvd3Nlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE3IiBuYW1lPSJyZXNldF9wYXNzd29yZF9tYWlsX3N1YmplY3QiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgU2VuaGEgUmVzZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE4IiBuYW1lPSJkYXRlUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5Qb3IgZmF2b3IgaW5mb3JtZSB1bWEgZGF0YSB2w6FsaWRhLCBwb3IgZXhlbXBsbyAyNC4xMi4yMDAxIChkZC5tbS55eXl5KTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTkiIG5hbWU9ImVtYWlsUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5Qb3IgZmF2b3IgaW5mb3JtZSB1bSBlbWFpbCB2w6FsaWRvLCBwb3IgZXhlbXBsbyBuYW1lQG1haWwuY29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyMCIgbmFtZT0iZmxvYXRSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPlBvciBmYXZvciBpbmZvcm1lIHVtIG7Dum1lcm8gZGUgcG9udG8gZmx1dHVhbnRlLCBwb3IgZXhlbXBsbyAxLjAwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyMSIgbmFtZT0ibnVtYmVyUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5Qb3IgZmF2b3IgaW5mb3JtZSB1bSBuw7ptZXJvIChJbnRlaXJvKSwgcG9yIGV4ZW1wbG8gMTAwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyMiIgbmFtZT0icGhvbmVSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPlBvciBmYXZvciBpbmZvcm1lIHVtIG7Dum1lcm8gZGUgdGVsZWZvbmUgdsOhbGlkbywgcG9yIGV4ZW1wbG8gKys0OSAxMjM0IDEyMzQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIzIiBuYW1lPSJ0aW1lUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5Qb3IgZmF2b3IgaW5mb3JtZSB1bSBob3LDoXJpbyB2w6FsaWRvLCBwb3IgZXhlbXBsbyAxMjoyMyAoaGg6bW0pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3ciPgorICAgIDx2YWx1ZT5TZW5oYSBwcm90ZWdpZGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI1IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd19wYXNzd29yZExhYmVsIj4KKyAgICA8dmFsdWU+U2VuaGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI2IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZExhYmVsIj4KKyAgICA8dmFsdWU+UGVyw61vZG8gZGUgdmFsaWRhZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI3IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZCI+CisgICAgPHZhbHVlPkZpbmFsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyOCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWQiPgorICAgIDx2YWx1ZT5QZXLDrW9kbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjkiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkIj4KKyAgICA8dmFsdWU+VW1hIHZlejwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzAiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkRnJvbUxhYmVsIj4KKyAgICA8dmFsdWU+VmFsaWRvIGRlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzEiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkVG9MYWJlbCI+CisgICAgPHZhbHVlPlZhbGlkbyBhdMOpOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzIiIG5hbWU9Imludml0YXRpb25fd2luZG93X01haWxTdWJqZWN0Ij4KKyAgICA8dmFsdWU+Q29udml0ZSBwYXJhIG8gJEFQUF9OQU1FPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMyIgbmFtZT0iaW52aXRhdGlvbl9lcnJvciI+CisgICAgPHZhbHVlPk5lbmh1bSBjb252aXRlIGRpc3BvbsOtdmVsIHBhcmEgZXNzZSBjw7NkaWdvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzNCIgbmFtZT0iaW52aXRhdGlvbl9lcnJvciI+CisgICAgPHZhbHVlPk8gY29udml0ZSBqw6EgZm9pIHV0aWxpemFkby4gRXNzZSB0aXBvIGRlIGNvbnZpdGUgbsOjbyBwb2RlIHNlciByZXV0aWxpemFkby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM1IiBuYW1lPSJpbnZpdGF0aW9uX2Vycm9yIj4KKyAgICA8dmFsdWU+RXNzZSBjw7NkaWdvIGRlIGNvbnZpdGUgbsOjbyDDqSB2w6FsaWRvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzYiIG5hbWU9Imludml0YXRpb25fcGFzcyI+CisgICAgPHZhbHVlPlNlbmhhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzciIG5hbWU9Imludml0YXRpb25fcGFzc19idG4iPgorICAgIDx2YWx1ZT5WZXJpZmljYXIgc2VuaGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM4IiBuYW1lPSJpbnZpdGF0aW9uX3Bhc3NfZXJyb3IiPgorICAgIDx2YWx1ZT5TZW5oYSBJbnbDoWxpZGEhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzOSIgbmFtZT0iQnJvd3NlciI+CisgICAgPHZhbHVlPkJyb3dzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQwIiBuYW1lPSJhdWRpb192aWRlbyI+CisgICAgPHZhbHVlPlN5bmNyb25pemUgQXVkaW8vVmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQxIiBuYW1lPSJlcnJvckNvZGVfaW52YWxpZFNlc3Npb24iPgorICAgIDx2YWx1ZT5Mb2dpbiB3YXMgY29ycmVjdCwgYnV0IHRoZSBTZXNzaW9uIHlvdSB0cmllZCBpcyBub3QgYWN0aXZlIG9yIHN0b3JlZCBvbiB0aGUgU2VydmVyLiBZb3UgaGF2ZSB0byBnZXQgYSBuZXcgU2Vzc2lvbklkIGFuZCByZXRyeSBsb2dpbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQyIiBuYW1lPSJlcnJvcmNvZGVfc2V0VXNlck9iamVjdCI+CisgICAgPHZhbHVlPlRoZSBTZXNzaW9uSWQgaXMgbm90IGxvZ2dlZGluIG9yIGhhcyBubyBBZG1pbiByaWdodHMuIFRoZSBTT0FQIEdhdGV3YXkgbmVlZHMgYW4gVXNlciB3aXRoIEFkbWluLVJpZ2h0cyB0byBlbWJlZCBuZXcgVXNlcnMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0MyIgbmFtZT0iZXJyb3Jjb2RlX2xvZ2luQnlSZW1vdGVVc2VyIj4KKyAgICA8dmFsdWU+VGhpcyBTZXNzaW9uIGhhcyBubyBSZW1vdGV1c2VyLURhdGEgY29ubmVjdGVkLiBXZXRoZXIgeW91IGRpZCBub3QgY2FsbCB0aGUgU09BUC1HYXRld2F5IGJlZm9yZSBhY2Nlc3NpbmcgdGhlIEFwcGxpY2F0aW9uIG9yIHlvdSBhcmUgdXNuaWcgYSB3cm9uZyBTZXNzaW9uLUlEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0NCIgbmFtZT0iZGVidWdfbWVzc2FnZV9yZWNvcmRpbmciPgorICAgIDx2YWx1ZT5UaGUgcmVjb3JkZXIgaXMgY3VycmVudGx5IEJldGEhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0NSIgbmFtZT0icHJvcGVydHlQYW5lbFhWYWx1ZSI+CisgICAgPHZhbHVlPng8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ2IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWFZhbHVlTGFiZWwiPgorICAgIDx2YWx1ZT54LWF4aXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ3IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWVZhbHVlIj4KKyAgICA8dmFsdWU+eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDgiIG5hbWU9InByb3BlcnR5UGFuZWxZVmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPnktYXhpczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDkiIG5hbWU9InByb3BlcnR5UGFuZWxXaWR0aFZhbHVlIj4KKyAgICA8dmFsdWU+dzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTAiIG5hbWU9InByb3BlcnR5UGFuZWxXaWR0aFZhbHVlTGFiZWwiPgorICAgIDx2YWx1ZT53aWR0aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTEiIG5hbWU9InByb3BlcnR5UGFuZWxIZWlnaHRWYWx1ZSI+CisgICAgPHZhbHVlPmg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUyIiBuYW1lPSJwcm9wZXJ0eVBhbmVsSGVpZ2h0VmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPmhlaWdodDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTMiIG5hbWU9InByb3BlcnR5T3BhY2l0eVNsaWRlciI+CisgICAgPHZhbHVlPkNoYW5nZSBUcmFuc3BhcmVuY3k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU0IiBuYW1lPSJicm93c2VyT3BlbiI+CisgICAgPHZhbHVlPkJyb3dzZXIgT3BlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTUiIG5hbWU9ImJyb3dzZXJDbG9zZSI+CisgICAgPHZhbHVlPkJyb3dzZXIgQ2xvc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU2IiBuYW1lPSJjb25uZWN0aW9uTG9zdE1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgQ29ubmVjdGlvbiB0byB0aGUgU2VydmVyIGlzIGxvc3QuIFlvdSBuZWVkIHRvIHJlbG9hZCB0aGUgQXBwbGljYXRpb24gb3IvYW5kIGNoZWNrIHlvdXIgTmV0d29yay48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU3IiBuYW1lPSI1NTciPgorICAgIDx2YWx1ZT5Qb2ludGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1OCIgbmFtZT0ic3luYyBtZXNzYWdlIGhlYWRlciI+CisgICAgPHZhbHVlPlN5bmNocm9uaXppbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU5IiBuYW1lPSJTeW5jaHJvbml6aW5nIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TeW5jaHJvbml6aW5nIFVzZXJzLCBwbGVhc2Ugd2FpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjAiIG5hbWU9ImV4cG9ydFRvU1ZHIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7RG93bmxvYWQgYXMgU1ZHJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjEiIG5hbWU9ImV4cG9ydFRvSW1hZ2UiPgorICAgIDx2YWx1ZT4mbHQ7dSZndDtEb3dubG9hZCBhcyBQTkcmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MiIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O0Rvd25sb2FkIGFzIEpQRyZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYzIiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7RG93bmxvYWQgYXMgUERGJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjQiIG5hbWU9ImV4cG9ydFRvSW1hZ2UiPgorICAgIDx2YWx1ZT4mbHQ7dSZndDtEb3dubG9hZCBhcyBUSUYmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2NSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPlJlbWluZGVyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjYiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5DYXRlZ29yeTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY3IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+UmVwZXRpdGlvbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY4IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+bm9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjkiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5Mb2NhdGlvbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTcwIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+U3RhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTcxIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+RW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MiIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPlRpdGxlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzMiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5Db21tZW50OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzQiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5JbnZpdGUgUGVvcGxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkRhaWx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NiIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPk1vbnRobHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc3IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+WWVhcmx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3OCIgbmFtZT0iYWxlcnQiPgorICAgIDx2YWx1ZT5BcHBvaW50bWVudC1lbmQgaXMgYWZ0ZXIgb2YgYXBwb2ludG1lbnQtc3RhcnQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3OSIgbmFtZT0iYWxlcnQiPgorICAgIDx2YWx1ZT5QbGVhc2UgaW5zZXJ0IGEgdGl0bGUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MCIgbmFtZT0iNTgwIj4KKyAgICA8dmFsdWU+UlRMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MSIgbmFtZT0iNTgxIj4KKyAgICA8dmFsdWU+QWN0aXZhdGUgdGhpcyBpZiB5b3Ugd3JpdGUgaW4gYSByaWdodCB0byBsZWZ0IGxhbmd1YWdlIChpbnZlcnNlIHdvcmQgb3JkZXIpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MiIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT5EYXNoYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgzIiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPldhdGNoIHJlY29yZGVkIE1lZXRpbmdzIG9yIEV2ZW50czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODQiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+TWVldGluZyAtIE1ha2UgYSBjb25mZXJlbmNlIHdpdGggNCAodXAgdG8gMTYpIFVzZXJzJmx0O2JyLyZndDtldmVyeWJvZHkgd2lsbCBoYXZlIGF1ZGlvICsgdmlkZW8gYWNjZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4NSIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT5FdmVudCAtIE1ha2UgYSBjb25mZXJlbmNlIHdpdGggdXAgdG8gMjAwIHBhcnRpY2lwZW50cyZsdDtici8mZ3Q7T25seSB0aGUgTW9kZXJhdG9yIHdpbGwgaGF2ZSBhdWRpby92aWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODYiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+Q3JlYXRlIHVzZXJzLCByb29tcywgb3JnYW5pemF0aW9ucyZsdDtici8mZ3Q7ICsgY2hhbmdlIGNvbmZpZ3VyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg3IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5Vc2VycyBpbiB0aGlzIFJvb20gbm93PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4OCIgbmFtZT0icm9vbSBBZG1pbmlzdHJhdGlvbiByb29tY2xpZW50cyBsaXN0Ij4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg5IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTAiIG5hbWU9InJvb20gQWRtaW5pc3RyYXRpb24gcm9vbWNsaWVudHMgbGlzdCI+CisgICAgPHZhbHVlPkQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkxIiBuYW1lPSJzd2Ygc3luYyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TG9hZGluZyBEb2N1bWVudC4gUGxlYXNlIHdhaXQgdW50aWxsIGFsbCBDbGllbnQgaGF2ZSBiZWVuIHN5bmNocm9uaXplZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkyIiBuYW1lPSJ1cGxvYWQgZGlhbG9nIj4KKyAgICA8dmFsdWU+VXBsb2FkIGNvbXBsZXRlLCBjb252ZXJ0aW5nIERvY3VtZW50IC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTMiIG5hbWU9InVwbG9hZCBkaWFsb2ciPgorICAgIDx2YWx1ZT5TdGFydCBVcGxvYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk0IiBuYW1lPSJ1cGxvYWQgZGlhbG9nIj4KKyAgICA8dmFsdWU+VXBsb2FkIGFuZCBJbXBvcnQgRGlhbG9nLiBQbGVhc2Ugc2VsZWN0IGEgRmlsZSBmcm9tIHlvdXIgRGlzay48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk1IiBuYW1lPSJ1cGxvYWQgRGlhbG9nIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NiIgbmFtZT0idXBsb2FkIERpYWxvZyI+CisgICAgPHZhbHVlPlNlbGVjdCBGaWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NyIgbmFtZT0iYWRtaW5pc3RyYXRpb24gbmF2aWdhdGlvbiI+CisgICAgPHZhbHVlPkNvbm5lY3Rpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5OCIgbmFtZT0iY29uZmFkbWluIHZhbHVlIGxpc3QiPgorICAgIDx2YWx1ZT5WYWx1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTkiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5TdHJlYW1pZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDAiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDEiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5Db25uZWN0ZWQgc2luY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAyIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+Um9vbSAvIFNjb3BlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwMyIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPktpY2sgVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDQiIG5hbWU9ImtpY2sgdXNlciBjb25maXJtYXRpb24gZGlhbG9nIj4KKyAgICA8dmFsdWU+S2ljayBVc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwNSIgbmFtZT0ia2ljayB1c2VyIGNvbmZpcm1hdGlvbiBkaWFsb2ciPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8ga2ljayB0aGlzIENsaWVudCBmcm9tIHRoZSBDb25uZWN0aW9uPyZsdDtici8mZ3Q7IFRoaXMgZG9lcyBvbmx5IHJlbW92ZSB0aGUgQ2xpZW50IGZyb20gdGhlIGN1cnJlbnQgUm9vbS5UaGUgQ2xpZW50IGNvdWxkIHJlLWxvZ2luIGFnYWluLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDYiIG5hbWU9ImtpY2sgdXNlciBtZXNzYWdlIGRpYWxvZyI+CisgICAgPHZhbHVlPllvdXIgc2Vzc2lvbiBoYXMgYmVlbiBjbG9zZWQgYnkgYW4gQWRtaW5pc3RyYXRvciBvciBNb2RlcmF0b3IuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwNyIgbmFtZT0idXNlcmFsdGVyc2VsZl9waG9uZSI+CisgICAgPHZhbHVlPlBob25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwOCIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+VXNlciBpcyB0aGUgTW9kZXJhdG9yIG9mIHRoaXMgUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDkiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPlVzZXIgaXMgYWxsb3dlZCB0byBkcmF3IG9uIHRoZSBXaGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMCIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+KFJlKSBTdGFydCBBdWRpby9WaWRlbyBvciBjaGFuZ2UgRGV2aWNlIFNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMSIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+QWxsb3cgdGhpcyBVc2VyIHRvIGRyYXcgb24gdGhlIFdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEyIiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5SZW1vdmUgYWJpbGl0eSB0byBkcmF3IG9uIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEzIiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+VXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE0IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+RmlsZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE1IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+V2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTYiIG5hbWU9ImNvbmZlcmVuY2VQYW5lbHMiPgorICAgIDx2YWx1ZT5DaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxNyIgbmFtZT0ib3JnYW5pemF0aW9uIGNob29zZSBpbmZvIj4KKyAgICA8dmFsdWU+WW91ciBhY2NvdW50IGlzIGFzc2lnbmVkIHRvIG11bHRpcGxlIE9yZ2FuaXphdGlvbnMuIFBsZWFzZSBjaG9vc2Ugb25lIGZvciB0aGlzIFNlc3Npb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxOCIgbmFtZT0iZXJyb3IgbWVzc2FnZSByb29tIGZ1bGwiPgorICAgIDx2YWx1ZT5UaGlzIHJvb20gaXMgZnVsbCBhdCB0aGUgbW9tZW50LiBQbGVhc2UgdHJ5IGFnYWluIGxhdGVyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTkiIG5hbWU9InJvb210eXBlcyI+CisgICAgPHZhbHVlPlJvb20gVHlwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjAiIG5hbWU9ImFwcG9pbnRlZF9yb29tIj4KKyAgICA8dmFsdWU+QXBwb2ludG1lbnQgUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjEiIG5hbWU9InNlcnZlcnRpbWUiPgorICAgIDx2YWx1ZT5TZXJ2ZXIgVGltZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjIiIG5hbWU9Imludl9yZW1pbmRlcl90ZW1wbGF0ZV9oZWFkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIC0gUmVtaW5kZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIzIiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9mcm9tIj4KKyAgICA8dmFsdWU+TWVzc2FnZSBmcm9tIFVzZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNCIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfbWVzc2FnZSI+CisgICAgPHZhbHVlPk1lc3NhZ2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNSIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfY2xpY2tfdGV4dCI+CisgICAgPHZhbHVlPkNsaWNrIHRoaXMgbGluayB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgTWVldGluZ3M6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNiIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfY2xpY2tfdGV4dF9saW5rIj4KKyAgICA8dmFsdWU+Q2xpY2sgaGVyZSB0byBlbnRlciByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNyIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfY2xpY2tfdGV4dF9oZWxwIj4KKyAgICA8dmFsdWU+aWYgeW91IGhhdmUgcHJvYmxlbXMgd2l0aCB0aGUgbGluaywgcGxlYXNlIGNvcHkgYW5kIHBhc3RlIHRoaXMgdG8geW91ciBicm93c2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjgiIG5hbWU9ImJ0bl9zZWFyY2hfaW50ZXJuIj4KKyAgICA8dmFsdWU+c2VhcmNoIGludGVybjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjkiIG5hbWU9ImJ0bl9zZWFyY2hfZXh0ZXJuIj4KKyAgICA8dmFsdWU+ZXh0ZXJuIHVzZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzMCIgbmFtZT0ibGJsX3ByZW5hbWUiPgorICAgIDx2YWx1ZT5wcmUgbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzEiIG5hbWU9ImxibF9uYW1lIj4KKyAgICA8dmFsdWU+bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzIiIG5hbWU9ImxibF9lbWFpbCI+CisgICAgPHZhbHVlPkUtbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzMiIG5hbWU9ImxvZ291dENvbmZpcm1fdGl0bGUiPgorICAgIDx2YWx1ZT5Db25maXJtIGxvZ291dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzQiIG5hbWU9ImxvZ291dENvbmZpcm1fc3VyZV90b19sb2dvdXRfcXVlc3Rpb24iPgorICAgIDx2YWx1ZT5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gbG9nb3V0IG5vdz88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM1IiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT5BY3Rpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkRlbW8gUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EZW1vIFRpbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM4IiBuYW1lPSJtZWV0aW5nIFRpbWVyIj4KKyAgICA8dmFsdWU+TWVldGluZyBUaW1lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzkiIG5hbWU9Im1lZXRpbmcgVGltZXIiPgorICAgIDx2YWx1ZT5UaGlzIFJvb20gaXMgYSBEZW1vIFJvb20uIFRvIGRpc2FibGUgdGhpcyB3YXJuaW5nIHlvdSBlaXRoZXIgc2hvdWxkIGdldCBhIHByaXZhdGUgbWVldGluZyByb29tIGZvciB5b3VyIHBlcnNvbmFsIHVzYWdlIG9yIHNldCB1cCBhbiBvd24gU2VydmVyLiBZb3Ugd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGxvZ2dlZCBvZmYgaW46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MCIgbmFtZT0ibWVldGluZyByb29tIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+TW9kZXJhdGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MSIgbmFtZT0ibW9kZXJhdGVkIHJvb20gd2FpdGluZyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+UGxlYXNlIHdhaXQgdW50aWxsIHRoZSBNb2RlcmF0b3IgaGFzIGVudGVyZWQgdGhlIFJvb20uIFRoZSBNb2RlcmF0b3IgY2FuIGJlIGVpdGhlciBhIFRlYWNoZXIsIEFkbWluIG9yIHRoZSBjcmVhdG9yIG9mIHRoaXMgUm9vbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQyIiBuYW1lPSJlcnJvciBwb3B1cCI+CisgICAgPHZhbHVlPk9rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MyIgbmFtZT0id2luZG93IHNjcmVlbnNoYXJpbmciPgorICAgIDx2YWx1ZT5JbmNvbWluZyBTY3JlZW4gU2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDQiIG5hbWU9IndpbmRvdyBzY3JlZW4gc2hhcmluZyI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGEgbmV3IFNjcmVlbiBTaGFyaW5nIGluY29taW5nIGZyb20gdGhlIFVzZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0NSIgbmFtZT0id2luZG93IHNjcmVlbiBzaGFyaW5nIj4KKyAgICA8dmFsdWU+U3RhcnQgU2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDYiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QWRkIG5ldyBNZWV0aW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0NyIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5NZWV0aW5nIFJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ4IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkV2ZW50IFJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ5IiBuYW1lPSJtYWluIG1lbnUgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPk1vZGVyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUwIiBuYW1lPSJtZW51IG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Nb2RlcmF0ZSBVc2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTEiIG5hbWU9Im1lbnUgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPk1vZGVyYXRlIFJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1MiIgbmFtZT0ibW9kZXJhdG9yIG9yZyI+CisgICAgPHZhbHVlPk08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUzIiBuYW1lPSJjb25maXJtIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5EbyB5b3Ugd2FudCB0byBjaGFuZ2UgdGhpcyBVc2VyIHRvIGJlY29tZSBhIE1vZGVyYXRvciBvZiB0aGF0IE9yZ2FuaXphdGlvbj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU0IiBuYW1lPSJlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+UGxlYXNlIGNob29zZSBhbiBPcmdhbml6YXRpb24gYmVmb3JlIHlvdSB0cnkgdG8gYWRkIGEgVXNlciB0byBpdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU1IiBuYW1lPSJjaG9vc2UgdXNlciB3aW5kb3ciPgorICAgIDx2YWx1ZT5Pcmdhbml6YXRpb24gLSBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU2IiBuYW1lPSJtb2RlcmF0b3Igb3JnIHVzZXJzIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIFVzZXIgZnJvbSB0aGUgT3JnYW5pemF0aW9uPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTciIG5hbWU9Im9yZyBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+VGhpcyBVc2VyIGlzIE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTgiIG5hbWU9Im9yZyBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+VGhpcyBVc2VyIGlzIE5vLU1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTkiIG5hbWU9ImVycm9yIG1lc3NhZ2UgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkRvIHlvdSB3YW50IHRoaXMgVXNlciB0byBiZSBub3QgYSBNb2RlcmF0b3Igb2YgdGhpcyBPcmdhbml6YXRpb24/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MCIgbmFtZT0ibW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkFkZCBvciBkZWxldGUgVXNlcnMgb3IgUm9vbXMgd2l0aGluIHlvdXIgT3JnYW5pemF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MSIgbmFtZT0iZGVsZXRlIGNvbmZpcm0gcXVlc3Rpb24iPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcmVjb3JkPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjIiIG5hbWU9ImRlbGV0ZSBjb25maXJtIHF1ZXN0aW9uIHVzZXIgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyB1c2VyIGZyb20geW91ciBvcmdhbml6YXRpb24/IFlvdSB3aWxsIG9ubHkgZGVsZXRlIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gdGhlIHVzZXIgYW5kIHlvdXIgb3JnYW5pemF0aW9uLCB0byByZWFsbHkgZGVsZXRlIHRoZSB1c2VyIGl0c2VsZiB5b3UgaGF2ZSB0byBsb2dpbiBpbnRvIHRoZSBBZG1pbmlzdHJhdGlvbi1QYW5lbC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYzIiBuYW1lPSJlcnJvciBtZXNzYWdlIHNlbGYgZGVsZXRpbmciPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IGRlbGV0ZSB5b3VyIG93biBVc2VyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjQiIG5hbWU9ImVycm9yIG1lc3NhZ2UgYXV0aCI+CisgICAgPHZhbHVlPlRoaXMgTWV0aG9kIG5lZWRzIGEgQWRtaW5zdHJhdGlvbiBBY2NvdW50IHRvIGJlIGludm9rZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NSIgbmFtZT0iZXJyb3IgbWVzc2FnZSBTT0FQIj4KKyAgICA8dmFsdWU+VGhlcmUgd2FzIG5vIFNlc3Npb24gYXNzb2NpYXRlZCB3aXRoIHRoaXMgSUQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NiIgbmFtZT0iZXJyb3IgbWVzc2FnZSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+VGhpcyBpcyBhbiBBZG1pbmlzdHJhdG9yIG9yIE1vZGVyYXRvciBhY2NvdW50LiBZb3UgY2FuIG9ubHkgZWRpdCB0aGlzIGFjY291bnQgdGhyb3VnaCB0aGUgQWRtaW5pc3RyYXRpb24gUGFuZWwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NyIgbmFtZT0iZW1haWwgdmVyaWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+VG8gY29tcGxldGUgeW91ciByZWdpc3RyYXRpb24gcGxlYXNlIGNsaWNrIG9uIHRoZSBmb2xsb3dpbmcgbGluay4gT3IgY29weSB0aGUgVVJMIHRvIHlvdXIgYnJvd3NlciBiYXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2OCIgbmFtZT0iZW1haWwgdmVyaWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+Q2xpY2sgdG8gdmVyaWZ5IHlvdXIgRS1NYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2OSIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPk5vIHVzZXIgd2FzIGZvdW5kIGZvciB0aGlzIEhhc2guPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3MCIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPlRoaXMgdXNlciBpcyBhbHJlYWR5IGFjdGl2YXRlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjcxIiBuYW1lPSJlcnJvck1lc3NhZ2VfVXNlckFjdGl2YXRpb25TZXJ2bGV0IFtBY3RpdmF0ZVVzZXJdIj4KKyAgICA8dmFsdWU+WW91IGRpZCBzdWNjZXNzZnVsbHkgYWN0aXZhdGUgeW91ciBhY2NvdW50ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzIiIG5hbWU9ImVycm9yTWVzc2FnZV9Vc2VyQWN0aXZhdGlvblNlcnZsZXQgW0FjdGl2YXRlVXNlcl0iPgorICAgIDx2YWx1ZT5Mb2dpbiBOb3c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjczIiBuYW1lPSJsb2dpbkVycm9yTWVzc2FnZSA9IHVzZXIgd2FzIG5vdCBhY3RpdmF0ZWQiPgorICAgIDx2YWx1ZT5Zb3VyIGFjY291bnQgaXMgbm90IGFjdGl2YXRlZC4gRmlyc3QgdXNlIHRoZSBsaW5rIGluIHRoZSBFbWFpbCB5b3UndmUgcmVjZWl2ZWQgZHVyaW5nIHJlZ2lzdHJhdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc0IiBuYW1lPSJyZWdpc3RlciB2ZXJpZmljYXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPllvdSBzdWNjZXNzZnVsbHkgc2lnbmVkIHVwLiBXZSd2ZSBzZW5kIGFuIEVNYWlsIHdpdGggYSB2ZXJpZmljYXRpb24gQ29kZSB0byB5b3VyIE1haWwuIFBsZWFzZSBjaGVjayB5b3VyIEluYm94LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzUiIG5hbWU9InBhcnRpY2lwYW50cyBwYW5lbCI+CisgICAgPHZhbHVlPlJlbW92ZSBNb2RlcmF0aW9uIFJvbGUgZnJvbSB0aGlzIFVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc2IiBuYW1lPSJwYXJ0aWNpcGFudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5HcmFudCBNb2RlcmF0aW9uIFJpZ2h0cyB0byB0aGlzIFVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc3IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Vc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3OCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QWNjZXNzIHRvIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc5IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Nb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgwIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Nb2RlcmF0aW9uOiBQbGVhc2UgY2hvb3NlIGFueSBVc2VyIG9uIHRoZSBMaXN0IHRvIGdyYW50IGhpbSBhY2Nlc3MgdG8gdGhlIFdoaXRlYm9hcmQsIE1vZGVyYXRpb24gb3IgVmlkZW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+VGhpcyBVc2VyIGlzIGFscmVhZHkgTW9kZXJhdG9yLCBzbyBoZSBoYXMgYXV0b21hdGljYWxseSB0aGUgcmlnaHQgdG8gZHJhdy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgyIiBuYW1lPSJldmVudCB1c2VyIGxpc3QgZXJyb3IiPgorICAgIDx2YWx1ZT5UaGlzIGlzIHlvdSEgWW91IGNhbm5vdCByZW1vdmUgdGhlIE1vZGVyYXRpb24gcmlnaHRzIGZyb20geW91cnNlbGYuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MyIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QWxsb3cgdGhpcyBVc2VyIHRvIFB1Ymxpc2ggaGlzIEF1ZGlvIC8gVmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg0IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5SZW1vdmUgQXVkaW8vVmlkZW8gb2YgdGhpcyBVc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4NSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+SSB3b3VsZCBsaWtlIHRvIGdldCB0aGUgbW9kZXJhdGlvbiBvZiB0aGlzIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg2IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5JIHdvdWxkIGxpa2UgdG8gZHJhdyBvbiB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4NyIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+SSB3b3VsZCBsaWtlIHRvIHNoYXJlIG15IEF1ZGlvL1ZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4OCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+WW91IGFyZSBtb2RlcmF0b3Igb2YgdGhpcyByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4OSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+WW91IGFyZSBhbGxvd2VkIHRvIGRyYXcgb24gd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTAiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPllvdSBhcmUgYWxsb3dlZCB0byBzaGFyZSB5b3VyIEF1ZGlvL1ZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5MSIgbmFtZT0iZXJyb3J0eXBlIj4KKyAgICA8dmFsdWU+TWVzc2FnZSB0byBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkyIiBuYW1lPSJhcHBseSBmb3IgbW9kIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTMiIG5hbWU9ImFwcGx5IGZvciBtb2QgbWVzc2FnZSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gZ2V0IHRoZSBNb2RlcmF0aW9uLiBVc2UgdGhlIHN0YXR1cyBJY29ucyBuZXh0IHRvIHRoZSB1c2VyIGluIHRoZSBMaXN0IG9mIFVzZXJzIHRvIGFkZCBvciByZW1vdmUgdGhlIE1vZGVyYXRpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5NCIgbmFtZT0iYXBwbHkgZm9yIHdoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGRyYXcgb24gd2hpdGVib2FyZC4gVXNlIHRoZSBzdGF0dXMgSWNvbnMgbmV4dCB0byB0aGUgdXNlciBpbiB0aGUgTGlzdCBvZiBVc2VycyB0byBhZGQgb3IgcmVtb3ZlIHRoZSByaWdodCB0byBkcmF3IGFueXRoaW5nIG9uIHRoZSB3aGl0ZWJvYXJkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTUiIG5hbWU9IjY5NSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gc2hhcmUgaGlzIEF1ZGlvL1ZpZGVvLiBVc2UgdGhlIHN0YXR1cyBJY29ucyBuZXh0IHRvIHRoZSB1c2VyIGluIHRoZSBMaXN0IG9mIFVzZXJzIHRvIGFkZCBvciByZW1vdmUgdGhlIHJpZ2h0IHRvIHNoYXJlIEF1ZGlvL1ZpZGVvIGZvciBhbnkgVXNlci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk2IiBuYW1lPSJtb2RlcmF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Zb3UgaGF2ZSB0byB3YWl0IHVudGlsbCBhIE1vZGVyYXRvciBlbnRlcnMgdGhlIHJvb20uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5NyIgbmFtZT0iY2FsZW5kYXIgYnV0dG9uIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5OCIgbmFtZT0iY2FsZW5kYXIgYnV0dG9uIj4KKyAgICA8dmFsdWU+U2F2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTkiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPkRheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDAiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPk1vbnRoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwMSIgbmFtZT0iY2FsZW5kYXIgY29tcG9uZW50Ij4KKyAgICA8dmFsdWU+WWVhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDIiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5VcGxvYWQgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDMiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5BZGQgRm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwNCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlJlZnJlc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA1IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+VHJhc2ggKERyYWcgYW5kIERyb3AgaXRlbSBoZXJlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDYiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5NeSBGaWxlcyAoSG9tZSBEcml2ZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA3IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+Um9vbSBGaWxlcyAoUHVibGljIERyaXZlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDgiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5BZGQgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDkiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5BZGQgRm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkRlbGV0ZSBGb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzExIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+RWRpdCBOYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPk5ldyBGb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzEzIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIEl0ZW0/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxNCIgbmFtZT0idXNlciBhZG1pbiI+CisgICAgPHZhbHVlPlNlYXJjaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTUiIG5hbWU9InVzZXIgYWRtaW4iPgorICAgIDx2YWx1ZT5TZWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE2IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+T3BlbiBEb2N1bWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTciIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5TaG93IGFsbCBGaWxlcyAoVHJlZSBWaWV3KTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTgiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5DbG9zZSBEb2N1bWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTkiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5EZWxldGUgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjAiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIG5vdCBhbGxvd2VkIHRvIGRyYXcgYW55dGhpbmcgb24gdGhlIFdoaXRlYm9hcmQuIFlvdSBoYXZlIHRvIGJlY29tZSBNb2RlcmF0b3Igb3IgYXQgbGVhc3QgZ2V0IHRoZSBSaWdodCB0byBlZGl0IFdoaXRlYm9hcmQuIFlvdSBtYXkgYXNrIGEgTW9kZXJhdG9yIHRvIGdpdmUgeW91IHRoYXQgcmlnaHQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyMSIgbmFtZT0icHJvcGVydHkgcGFuZWwiPgorICAgIDx2YWx1ZT5Eb2N1bWVudCBQcm9wZXJ0aWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyMiIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+U3RhcnQgQ2xpZW50IChleHRlcm5hbCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIzIiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5TdGFydCBDbGllbnQgKEhUVFApPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNCIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+QSB1c2VyIHdhbnQgdG8gc2hhcmUgaGlzIHNjcmVlbi4gRG8geW91IHdhbnQgdG8gc2VlIGl0PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjUiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPllvdSBhcmUgY3VycmVudGx5IHNoYXJpbmcgeW91ciBEZXNrdG9wLiBGb3Igc3RvcHBpbmcgdGhlIFNoYXJpbmcgU2Vzc2lvbiBwbGVhc2UgaGl0IHRoZSBTdG9wIGJ1dHRvbiBpbiB0aGUgU2hhcmluZyBDbGllbnQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNiIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+U2hhcmluZyBTZXNzaW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNyIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+WW91IGFyZSBhbHJlYWR5IHNoYXJpbmcgeW91ciBkZXNrdG9wITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+RGVza3RvcCBWaWV3ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI5IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkV4aXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMwIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkRlc2t0b3AgU2hhcmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5DbGljayBTdGFydCB0byBwdWJsaXNoIHlvdXIgc2NyZWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdGFydCBTaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdG9wIFNoYXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM0IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlNlbGVjdCB5b3VyIHNjcmVlbiBhcmVhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzUiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+Q2hhbmdlIHdpZHRoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5UaGUgU2hhcmVyIGhhcyBmaW5pc2hlZCB0aGlzIHNlc3Npb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5DaGFuZ2UgaGVpZ2h0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczOCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5YLU9mZnNldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzkiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+WS1PZmZzZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQwIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPldpZHRoOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDEiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+SGVpZ2h0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDIiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+Q29ubmVjdGlvbiB3YXMgY2xvc2VkIGJ5IFNlcnZlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDMiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NCIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5TdGFydCBFeHRlcm5hbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDUiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+SWYgeW91IGNsb3NlIHRoaXMgc2Vzc2lvbiBjb21wbGV0ZWx5IHlvdSBhcmUgbm90IGFibGUgdG8gcmVzdGFydCB0aGUgdmlld2VyIGZvciB0aGlzIHNlc3Npb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NiIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5Db25maXJtIENsb3NpbmcgVmlld2VyIFNlc3Npb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ3IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPlNoYXJlIFNjcmVlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDgiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+UmVjb3JkIFNlc3Npb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ5IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+Q28tQnJvd3Npbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUwIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+T29vcHMsIC4uLiBGaXJlZm94IG9uIFdpbmRvd3MgZG9lcyBub3Qgc2hvdyBjbGVhciBDby1Ccm93c2luZy4gUGxlYXNlIHVzZSBhbm90aGVyIEJyb3dzZXIgZm9yIHVzaW5nIHRoZSBDby1Ccm93c2luZyBmZWF0dXJlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTEiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5QcmV2aW91czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTIiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5OZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MyIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPlJlbG9hZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTQiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5Ib21lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1NSIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPkxvYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU2IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+QWRkIHRoaXMgd2Vic2l0ZSBhcyBEZWZhdWx0IHdlYnNpdGUgdG8geW91ciBQcm9maWxlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTciIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5UZXN0IFNldHVwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1OCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPkNoZWNrIHlvdSBNaWNyb3Bob25lIGFuZCBDYW1lcmEgc2V0dXAgYmVmb3JlIHlvdSBlbnRlciBhIHJvb20gYnkgcmVjb3JkaW5nIHNvbWUgc2Vjb25kcy4gWW91IGNhbiB0aGVuIHJlcGxheSB5b3VyIHJlY29yZGluZyB0byBjaGVjayB5b3VyIHZvaWNlIGFuZCBwaWN0dXJlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTkiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5Eb24ndCBzaG93IHRoaXMgdGVzdCBhbnltb3JlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjEiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5TdGFydCBDb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MiIgbmFtZT0iZWRpdCB2aWRlbyBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkRvIG5vdCBhc2sgYWdhaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYzIiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+UkVDPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlBMQVk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY1IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+WW91IG1heSBwcm9jZWVkIHdpdGhvdXQgdGVzdGluZyBpZiB5b3UgZG8gbm90IHBsYW4gdG8gcHVibGlzaCB5b3VyIHZvaWNlIG9yIHBpY3R1cmUuIFBhcnRpY2lwYW50cyB3aXRob3V0IEF1ZGlvIG9yIFZpZGVvIGNhbiBzdGlsbCB1c2UgdGhlIFdoaXRlYm9hcmQsIHNoYXJlIHRoZWlyIERlc2t0b3Agb3Igd3JpdGUgQ2hhdCBtZXNzYWdlcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY2IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+U1RPUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjciIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5MZXZlbC1NZXRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjgiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5QcmVzcyBTdGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjkiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5TdGFydCBDb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MCIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPlN0YXJ0IEV2ZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MSIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPkNob29zZSBSb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MiIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPkNoZWNrIFNldHVwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MyIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPlN0YXJ0IENvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc0IiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+SG93IHRvIGNvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc1IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+U3RhcnQgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NiIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPkRvIG5vdCBzaG93IEF1ZGlvIC8gVmlkZW8gVGVzdCAoUmVjb3JkaW5nKSBiZWZvcmUgZW50ZXJpbmcgYSBDb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NyIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPlB1YmxpYyBSb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzgiIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT5QdWJsaWMgUm9vbXMgYXJlIGFjY2Vzc2libGUgZm9yIGFsbCBVc2Vycy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc5IiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+UHJpdmF0ZSBSb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODAiIG5hbWU9IlByaXZhdGUgUm9vbXMiPgorICAgIDx2YWx1ZT5Qcml2YXRlIFJvb21zIGFyZSBvbmx5IGFjY2Vzc2libGUgZm9yIHVzZXJzIG9mIHRoZSBzYW1lIG9yZ2FuaXphdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgxIiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+TXkgUm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgyIiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+Um9vbXMgaW4gdGhpcyBzZWN0aW9uIGFyZSBjcmVhdGVkIGZvciBwZXJzb25hbCB1c2FnZS4gVGhlcmUgYXJlIHNvbWUgc3RhbmRhcmQgcm9vbXMgcGx1cyB0aGUgb25lcyB0aGF0IGFyZSBjcmVhdGVkIHRocm91Z2ggdGhlIGNhbGVuZGFyIGFuZCBoYXZlIGEgc3RhcnQgYW5kIGFuIGVuZCBkYXRlLiBUaGUgcm9vbXMgY3JlYXRlZCB2aWEgdGhlIGNhbGVuZGFyIGFyZSBvbmx5IGxpc3RlZCBpbiB0aGlzIHNlY3Rpb24gYXMgbG9uZyBhcyB0aGV5IGFyZSB2YWxpZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgzIiBuYW1lPSJyZXN0cmljdGVkIHJvb20iPgorICAgIDx2YWx1ZT5Zb3UgaGF2ZSB0byBiZSBtb2RlcmF0b3IgdG8gZG8gdGhpcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg0IiBuYW1lPSJtZW51IG9wdGlvbiI+CisgICAgPHZhbHVlPkFwcGx5IGZvciBtb2RlcmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NSIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT5BcHBseSBmb3Igd2hpdGVib2FyZCBhY2Nlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg2IiBuYW1lPSJtZW51IG9wdGlvbiI+CisgICAgPHZhbHVlPkFwcGx5IGZvciBjYW1lcmEvbWljcm9waG9uZSBhY2Nlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg3IiBuYW1lPSJlcnJvciBtZXNzYWdlIHNvYXAgc2VjdXJlIGxvZ2luIj4KKyAgICA8dmFsdWU+VGhpcyBTZXNzaW9uIEhhc2ggd2FzIGFscmVhZHkgdXNlZC4gWW91IGNhbm5vdCB1c2UgaXQgdHdpY2UuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4OCIgbmFtZT0iZGFzaGJvYXJkIGJ1dHRvbiI+CisgICAgPHZhbHVlPlNUQVJUPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4OSIgbmFtZT0iZXhpdCBjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+RVhJVDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTAiIG5hbWU9ImNvbmZlcmVuY2UgdmlldyI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBleGl0PyBZb3UgbWlnaHQgc2hvdWxkIGNsZWFyIHVwbG9hZGVkIGRvY3VtZW50cywgd2hpdGVib2FyZCBhbmQgdGhlIGNoYXQgaGlzdG9yeS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkxIiBuYW1lPSJjb25mZXJlbmNlIHZpZXciPgorICAgIDx2YWx1ZT5FeGl0IGNvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkyIiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT5Sb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTMiIG5hbWU9Im1haW4gbWVudSI+CisgICAgPHZhbHVlPkNob29zZSBhIHJvb20gZm9yIGEgbWVldGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTQiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgYW4gdW5zYXZlZCBFdmVudCBpbiB0aGUgQ2FsZW5kYXIuIFBsZWFzZSBlaXRoZXIgc2F2ZSBpdCBvciByZW1vdmUgaXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5NSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5QbGVhc2UgYWRkIGF0IGxlYXN0IG9uZSBhdHRlbmRlZSBmb3IgeW91ciBtZWV0aW5nITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTYiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEV2ZW50PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTciIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+V2FybmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTgiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QWRkIEV2ZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5OSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5EYXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAwIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPldlZWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAxIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPk1vbnRoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMiIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5EZXNjcmlwdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDMiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QXR0ZW5kZWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FLCB5b3VyIFdlYiBDb25mZXJlbmNpbmcgUGxhdGZvcm0uIEVpdGhlciBmb2xsb3cgdGhlIEluc3RydWN0aW9ucywgcHJlc3MgdGhlIHN0YXJ0IGJ1dHRvbiB0byBzdGFydCB0byBjb25mZXJlbmNlIGltbWVkaWF0ZWxseSBvciB5b3UgZ290byB0aGUgQ2FsZW5kYXIgYW5kIHNldCB1cCBhIENvbmZlcmVuY2UgZm9yIHRoZSBmdXR1cmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNSIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+UGxhbiBhIE1lZXRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA2IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VG8gc2V0IHVwIGEgY29uZmVyZW5jZSB5b3UgY2FuIGFkZCBhIG5ldyBFdmVudCBpbiB0aGUgQ2FsZW5kYXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNyIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPk5lZWQgaGVscD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA4IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+UmVzdHJpY3RlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDkiIG5hbWU9Imx6Y2FsZW5kZXIiPgorICAgIDx2YWx1ZT5TZWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEwIiBuYW1lPSJsemNhbGVuZGVyIj4KKyAgICA8dmFsdWU+QWRkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMSIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIFVzZXIgc2VsZWN0ZWQuIFBsZWFzZSBzZWxlY3QgYW4gaXRlbSBmcm9tIHRoZSBsaXN0IGZpcnN0IGFuZCB0aGVuIGhpdCBhZGQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMiIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPkFkZCBBdHRlbmRlZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTMiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5TYXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxNCIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPkRlbGV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTUiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5FdmVudCBEZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkRlZmF1bHQgTW9kZXJhdG9yczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5TdXBlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTgiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTkiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyMCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkUtTWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjEiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5BZGQgbmV3IGRlZmF1bHQgTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyMiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPklzIFN1cGVyIE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjMiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5JZiB0aGUgUm9vbSBpcyBtb2RlcmF0ZWQsIFVzZXIgd2l0aCBMZXZlbCBNb2RlcmF0b3Igb3IgQWRtaW5pc3RyYXRvciBhcmUgYXV0b21hdGljYWxseSBNb2RlcmF0b3IgaWYgdGhleSBlbnRlciB0aGUgUm9vbS4gSWYgeW91IGRvbid0IHdhbnQgdG8gc3BlY2lmeSB0aGF0IGFuZCBvbmx5IHdhbnQgYSBjZXJ0YWluIFVzZXIgdG8gYmVjb21lIE1vZGVyYXRvciB1c2UgdGhlIERlZmF1bHQgTW9kZXJhdG9yIG9wdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI0IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+QSBTdXBlciBNb2RlcmF0b3IgaXMgYWx3YXlzIGEgTW9kZXJhdG9yIHdoZW4gaGUgZW50ZXJzIGEgUm9vbSwgYW5kIG5vYm9keSBjYW4gcmVtb3ZlIHRoZSBNb2RlcmF0aW9uIEZsYWcgZnJvbSBoaW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI1IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+QXBwbHkgU3VwZXItTW9kZXJhdGlvbiB0byBVc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPlJlbW92ZSBTdXBlciBNb2RlcmF0aW9uIGZyb20gVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyOCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPklmIHlvdSBhZGQgYW4gT3JnYW5pemF0aW9uIHRvIHRoZSByb29tIG9ubHkgdXNlcnMgb2YgdGhhdCBPcmdhbml6YXRpb24gaGF2ZSBhY2Nlc3MgdG8gaXQgKFRoaXMgaXMgb25seSB2YWxpZCBpZiB0aGUgaXNQdWJsaWMgZmxhZyBpcyBzZXQgdG8gZmFsc2UhKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjkiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5Nb2RlcmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzMCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkxpbWl0YXRpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzMSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPk9yZ2FuaXphdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzIiIG5hbWU9ImNvbmZpcm0gYWN0aW9uIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzMiIG5hbWU9ImNvbmZpcm0gZGVsZXRlIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEl0ZW0/IFlvdSBoYXZlIHRvIHByZXNzIHRoZSBzYXZlIGJ1dHRvbiB0byBzdG9yZSB0aGUgY2hhbmdlcyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM0IiBuYW1lPSJ1c2VyIGNob29zZSBlcnJvciI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIFVzZXIgc2VsZWN0ZWQuIFBsZWFzZSBzZWxlY3QgZmlyc3QgYmVmb3JlIHlvdSBhZGQgaXQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkFkZCBuZXcgRGVmYXVsdCBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM2IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RG8geW91IHdhbnQgdG8gYWRkIHRoZSBTdXBlciBNb2RlcmF0aW9uIEZsYWcgZm9yIHRoaXMgVXNlcj8gQSBTdXBlciBNb2RlcmF0b3IgaXMgbm90IG9ubHkgTW9kZXJhdG9yIG9mIGEgUm9vbSwgYnV0IGFsc28gbm8gb3RoZXIgTW9kZXJhdG9yIGNhbiByZW1vdmUgdGhlIE1vZGVyYXRpb24gRmxhZyBmb3IgdGhpcyBVc2VyLiBZb3UgbmVlZCB0byBzYXZlIHRoZSBSb29tIE9iamVjdCB0byBzYXZlIHRoZXNlIHNldHRpbmdzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EbyB5b3Ugd2FudCB0byByZW1vdmUgdGhlIFN1cGVyIE1vZGVyYXRpb24gRmxhZyBmb3IgdGhpcyBVc2VyPyBZb3UgbmVlZCB0byBzYXZlIHRoZSBSb29tIE9iamVjdCB0byBzYXZlIHRoZXNlIHNldHRpbmdzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzgiIG5hbWU9InN1cGVyIG1vZGVyYXRvciI+CisgICAgPHZhbHVlPlRoaXMgVXNlciBpcyBhIFN1cGVyLU1vZGVyYXRvci4gWW91IGNhbm5vdCByZW1vdmUgdGhlIE1vZGVyYXRpb24gZmxhZyBmcm9tIGEgU3VwZXItTW9kZXJhdG9yITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzkiIG5hbWU9ImNvbmZpcm0gZGVsZXRlIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZpbGUvRm9sZGVyPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDAiIG5hbWU9ImNvbmZpcm0gZGVsZXRlIj4KKyAgICA8dmFsdWU+RGVsZXRlIEZpbGUvRm9sZGVyPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDEiIG5hbWU9InNhbHV0YXRpb24iPgorICAgIDx2YWx1ZT5NcnMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0MiIgbmFtZT0ic2FsdXRhdGlvbiI+CisgICAgPHZhbHVlPkRyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDMiIG5hbWU9InByb3BlcnR5IHBhbmVsIHdoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5Qcm9wZXJ0aWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NCIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPlNob3cgbW91c2UgcG9zaXRpb24gdG8gdmlld2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDUiIG5hbWU9InB1Ymxpc2ggb3B0aW9uIj4KKyAgICA8dmFsdWU+U2hhcmUgQXVkaW8gd2l0aCBTSVAgQXBwbGV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NiIgbmFtZT0icHVibGlzaCBvcHRpb24iPgorICAgIDx2YWx1ZT5TaGFyZSBBdWRpbyB3aXRoIFNJUCBhbmQgVmlkZW8gd2l0aCBGbGFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDciIG5hbWU9ImRvY3VtZW50IHBhbmVsIj4KKyAgICA8dmFsdWU+RnVsbC1GaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ4IiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5WaWV3IFNjcmVlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDkiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlRoZSB1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MCIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+d2FudHMgdG8gc2hhcmUgaXRzIHNjcmVlbi4gRG8geW91IHdhbnQgdG8gc2VlIGl0PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTEiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNsb3NlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MiIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPlpvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUzIiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+VGhlIFNlc3Npb24gd2FzIGNsb3NlZCBieSB0aGUgc2hhcmluZyBVc2VyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTQiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5QYXVzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTUiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5OZXcgU2NyZWVuIFNoYXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU2IiBuYW1lPSJwcmVzZW50ZXIgbWluaSBpY29uIj4KKyAgICA8dmFsdWU+TWluaW1pemU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU3IiBuYW1lPSJwcmVzZW50ZXIgbWluaSBpY29uIj4KKyAgICA8dmFsdWU+TWF4aW1pemU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU4IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5WaWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTkiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlJlY29yZGluZyBUaW1lbGluZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjAiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk15IFJlY29yZGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYxIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5QdWJsaWMgUmVjb3JkaW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjIiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkluZm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYzIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TGVuZ3RoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RGF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjYiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UExBWTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjgiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk1haW4gLSBWaWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjkiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzAiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPllvdSBtYXkgcmVjb3JkIGFuZCBzaGFyZSB5b3VyIHNjcmVlbiBhdCB0aGUgc2FtZSB0aW1lLiBUbyBlbmFibGUgb3RoZXJzIHRvIHNlZSB5b3VyIHNjcmVlbiBqdXN0IGhpdCB0aGUgc3RhcnQgYnV0dG9uIG9uIHRoZSB0b3AuIFRvIG9ubHkgcmVjb3JkIHRoZSBTZXNzaW9uIGl0IGlzIHN1ZmZpY2llbnQgdG8gY2xpY2sgc3RhcnQgcmVjb3JkaW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzEiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlN0YXJ0IFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzIiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlN0b3AgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3MyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RG93bmxvYWQgdGhlIEZMVi1GaWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3NCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+Um9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzUiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlBsYXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TdG9wPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3NyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+VXNlciBoYXMgbWljcm9waG9uZSBvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U3RvcCBTaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3OSIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5BbGxvdyBVc2VyIFF1ZXN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODAiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+VHVybiB0aGlzIG9mZiB0byBwcmV2ZW50IHRoYXQgYW55IHVzZXIgaXMgZGlzdHVyYmluZyB5b3UgaW4gdGhpcyByb29tLiBFZmZlY3QgaXMgdGhhdCB0aGUgQnV0dG9uIHRvIGFzayBmb3IgTW9kZXJhdGlvbiAoIkkgaGF2ZSBhIHF1ZXN0aW9uIikgaXMgbm90IHZpc2libGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MSIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5SaWdodHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgyIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Eb3dubG9hZCBhcyBBVkk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgzIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5GTFY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg0IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5BVkk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg1IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5SYXcgU2NyZWVudmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5BdWRpbyBvbmx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+VGhlIGhhdmUgYmVlbiBlcnJvcnMgd2hpbGUgcHJvY2Vzc2luZyB0aGUgUmVjb3JkaW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODgiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlRoZSBSZWNvcmRpbmcgaXMgbm90IHlldCByZWFkeSBmb3Igd2F0Y2hpbmcuIFBsZWFzZSByZXRyeSBpbiBhIGNvdXBsZSBvZiBtaW51dGVzIGFnYWluLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODkiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkxvZzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkwIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5SZWNvcmRlciBNZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+T2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkyIiBuYW1lPSJzaXAgYXBwbGV0Ij4KKyAgICA8dmFsdWU+U0lQIEFwcGxldCBpcyBub3QgUmVhZHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkzIiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+U0lQLUFjY291bnQgU2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk0IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+U0lQIHNldHRpbmdzIGZvciBlYWNoIHVzZXIuIFlvdSBjYW4gdHVybiBvbiBvciBvZmYgU0lQIHZpYSB0aGUgQWRtaW5pc3RyYXRpb24gJmd0OyBDb25maWd1cmF0aW9uIChLZXk6IGVuYWJsZV9zaXApLiBUaGUgU0lQIGRhdGEgZm9yIGVhY2ggdXNlciBzaG91bGQgYmUgY3JlYXRlZCBhdXRvbWF0aWNhbGx5LiBZb3UgY2FuIHJlLWNyZWF0ZSB0aGUgZGF0YSBieSBjaGVja2luZyAiUmUtZ2VuZXJhdGUgU0lQIERhdGEiPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NSIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNJUC1Vc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NiIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNpcC1QYXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NyIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNpcC1BdXRoLUlkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5OCIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIExvZ2luIHRvIHRoZSBTSVAgR2F0ZXdheSBoYXMgZmFpbGVkLiBZb3Ugc2hvdWxkIGNoZWNrIHRoZSBhdXRoZW50aWZpY2F0aW9uIGRhdGEgb2YgeW91ciBTSVAtUHJvdmlkZXIgYW5kIHRoZSBTSVAtQWNjb3VudCBEYXRhIGZvciBlYWNoIFVzZXIuIEFzIEFkbWluaXN0cmF0b3IgeW91IGFyZSBzdGlsbCBhYmxlIHRvIGxvZ2luIGFuZCBjaGVjayB0aGUgQ29uZmlndXJhdGlvbi4gQXMgVXNlciBvciBNb2RlcmF0b3IgeW91IHdpbGwgYmUgYmxvY2tlZCBmcm9tIGFueSBpbnRlcmFjdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk5IiBuYW1lPSJzaXAgc3RhdHVzIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgTG9naW4gdG8gdGhlIFNJUCBHYXRld2F5IGhhcyBmYWlsZWQuIENvbnRhY3QgeW91ciBTZXJ2aWNlIFRlYW0hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwMCIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TG9nZ2luZyBpbiB0byBTSVAtR2F0ZXdheSAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAxIiBuYW1lPSJzaXAgc3RhdHVzIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Mb2dnaW5nIGluIHRvIFNJUC1HYXRld2F5IC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDIiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlNob3cgTG9nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwMyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TG9nIG1lc3NhZ2VzIGZyb20gcG9zdCByZWNvcmRlciBwcm9jZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwNCIgbmFtZT0ic2lwIGxvZ2luIj4KKyAgICA8dmFsdWU+U0lQLUFwcGxldCBNZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwNSIgbmFtZT0ic2lwIGxvZ2luIj4KKyAgICA8dmFsdWU+VGhlIFNJUC1BcHBsZXQgaXMgbm90IHJlYWR5LiBBY2NlcHQgdGhlIEFwcGxldCBwbGVhc2UgYW5kIGNsaWNrIG9rITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDYiIG5hbWU9Im1vZGVyYXRvciBwb3AgdXAiPgorICAgIDx2YWx1ZT5HZXQgTW9kZXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDciIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5TYXZlIEFwcG9pbnRtZW50IENoYW5nZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA4IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhlIGFwcG9pbnRlbWVudCBoYXMgYmVlbiBjaGFuZ2VkLiBEbyB5b3Ugd2FudCB0byBzYXZlIHRob3NlIGNoYW5nZXM/ICZsdDtici8mZ3Q7Jmx0O2JyLyZndDtBbGwgYXR0ZW5kZWVzIG9mIHRoZSBhcHBvaW50bWVudCB3aWxsIHJlY2VpdmUgYSBFTWFpbCB3aXRoIHRoZSB1cGRhdGVkIGRhdGUgYW5kIHRpbWUgKGRlcGVuZGluZyBvbiB0aGUgbm90aWZpY2F0aW9uIHR5cGUgb2YgdGhpcyBhcHBvaW50bWVudCkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwOSIgbmFtZT0iZmx2IHJlY29yZGVyIGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UbyBhY2Nlc3Mgb3RoZXIgcmVjb3JkaW5ncyB5b3UgaGF2ZSB0byBsb2dpbiB0aGUgJEFQUF9OQU1FIEFwcGxpY2F0aW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTAiIG5hbWU9ImludGVydmlldyB2aWRlbyBwb2QiPgorICAgIDx2YWx1ZT5DaG9vc2UgdGhlIFVzZXIgZm9yIHRoaXMgVmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTExIiBuYW1lPSJpbnRlcnZpZXcgdmlkZW8gY2hvb3NlIHVzZXIiPgorICAgIDx2YWx1ZT5BdmFpbGFibGUgVXNlcnMgZm9yIHRoaXMgUG9kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMiIgbmFtZT0iaW50ZXJ2aWV3IGluZm8iPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGEgTW9kZXJhdG9yIGluIHRoaXMgSW50ZXJ2aWV3LiBZb3UgY2FuIGRlY2lkZSB3aG8gaXMgc3BlYWtpbmcgaW4gdGhpcyBpbnRlcnZpZXcgYW5kIHlvdSBjYW4gc3RhcnQgLyBzdG9wIHRoZSByZWNvcmRpbmcgb2YgdGhlIFNlc3Npb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMyIgbmFtZT0iaW50ZXJ2aWV3IGJ1dHRvbiByZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TdGFydCBSZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE0IiBuYW1lPSJpbnRlcnZpZXcgYnV0dG9uIHJlY29yZGluZyI+CisgICAgPHZhbHVlPlN0b3AgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxNSIgbmFtZT0iaW50ZXJ2aWV3IGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgcmVjb3JkaW5nIG9mIHRoZSBJbnRlcnZpZXcgaXMgYWxyZWFkeSBzdGFydGVkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTYiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIHJlY29yZGluZyBpcyBhbHJlYWR5IHN0b3BwZWQgb3Igbm90IGJlZW4gc3RhcnRlZCB5ZXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxNyIgbmFtZT0iaW50ZXJ2aWV3IHJlY29yZGluZyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIHJlY29yZGluZyBmb3IgdGhpcyBpbnRlcnZpZXcgaXMgYWxyZWFkeSBzdGFydGVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTgiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxOSIgbmFtZT0iaW50ZXJ2aWV3IGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgcG9zdC1wcm9jZXNzaW5nIG9mIGFuIGludGVydmlldyB0YWtlcyA1IG1pbnV0ZXMgcGVyIDEgbWludXRlIGludGVydmlldy4gVGhlIGN1cnJlbnQgcHJvZ3Jlc3Mgb2YgdGhlIGludGVydmlldyBwb3N0LXByb2Nlc3NpbmcgdHJhbnNjb2RpbmcgaXM6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyMCIgbmFtZT0ic2lwIGNyZWF0aW9uIj4KKyAgICA8dmFsdWU+WW91IGhhdmUgdG8gZW50ZXIgeW91ciBwYXNzd29yZCBhZ2FpbiB0byBhdXRvIGNyZWF0ZSB0aGUgU0lQIERhdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIxIiBuYW1lPSJzaXAgY3JlYXRpb24iPgorICAgIDx2YWx1ZT5SZS1nZW5lcmF0ZSBTSVAgRGF0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjIiIG5hbWU9ImZpbGVleHBsb3JlciI+CisgICAgPHZhbHVlPllvdSBjYW5ub3QgbW92ZSB0aGlzIGZpbGUgb3IgZm9sZGVyIGludG8gaXRzIG93biBzdWIgZm9sZGVyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjMiIG5hbWU9ImZpbGUgZXhwbG9yZXIgIj4KKyAgICA8dmFsdWU+SG9tZSBkcml2ZSBzaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlB1YmxpYyBkcml2ZSBzaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNSIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPkxpY2Vuc2UgU2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI2IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+WW91IGNhbiBlaXRoZXIgYmluZCB0aGUgdXNlciB0byBhIGV4cGlyZSBEYXRlIG9yIHRvIGEgbWF4aW11bSBudW1iZXIgb2YgbWludXRlcyB3aGVuIHlvdSBlbmFibGUgbGljZW5zaW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjciIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5DaGVjayBsaWNlbnNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyOCIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPkZsYXRyYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyOSIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPkV4cGlyZSBkYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMCIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPlNlY29uZHMgbGVmdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzEiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5Ub3RhbCB0aW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91ciBMaWNlbnNlIGhhcyBleHBpcmVkLiBZb3UgbmVlZCB0byBidXkgbmV3IG1pbnV0ZXMgKFBheS1wZXItbWludXRlKSBvciBhIHZvbHVtZSBmbGF0cmF0ZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMzIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5DbGljayBhbmQgYnV5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzNCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+VGltZSBMZWZ0IG9uIHlvdXIgYWNjb3VudDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM1IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Vc2VyIExpY2Vuc2UgSW5mbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzYiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkluZm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM3IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5DbG9zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzgiIG5hbWU9ImxpY2Vuc2UtaW5mbyI+CisgICAgPHZhbHVlPllvdXIgbGljZW5zZSBoYXMgZXhwaXJlZC4gWW91IG5lZWQgZWl0aGVyIHRvIGJ1eSBhIG1pbnV0ZSBwYWNrYWdlIChQYXktcGVyLW1pbnV0ZSkgb3IgYSB2b2x1bWUgZmxhdHJhdGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzOSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+TGljZW5zZSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDAiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdSBjYW4gZWl0aGVyIGJ1eSBtaW51dGVzIHRvIG1ha2UgV2ViLUNvbmZlcmVuY2luZyAoUGF5LXBlci1taW51dGUpLiZsdDtici8mZ3Q7Jmx0O2JyLyZndDsgT3IgeW91IGJ1eSBhIHZvbHVtZSBmbGF0cmF0ZSBhYm91dCAzLTEyIG1vbnRocy4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7U2VuZGluZyBpbnZpdGF0aW9ucyAoZGlyZWN0IGxpbmtzIGludG8gQ29uZmVyZW5jZSBSb29tcykgb3IgY3JlYXRpbmcgY29uZmVyZW5jZSBSb29tcyB2aWEgdGhlIENhbGVuZGFyIHdpdGggZXh0ZXJuYWwgVXNlcnMgaXMgb25seSBhbGxvd2VkIHdpdGggYSB2b2x1bWUgZmxhdHJhdGUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDYwIE1pbnV0ZXMgOSw5OSBFVVJPICgxNiBDZW50IHBlciBNaW51dGUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDUgaG91cnMgMTksOTkgRVVSTyAoNiBDZW50IHBlciBtaW51dGUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDMgbW9udGggZm9yIDI5LDk5IEVVUk8gKDksOTkgRXVybyBwZXIgTW9udGgpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDYgbW9udGggZm9yIDM5LDk5IEVVUk8gKDYsNjYgRXVybyBwZXIgbW9udGgpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+UGF5LXBlci1taW51dGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ2IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Wb2x1bWUgZmxhdHJhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ3IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3UgaGF2ZSB1bmxpbWl0ZWQgTGljZW5zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDgiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdXIgbGljZW5zZSB3aWxsIGV4cGlyZSBhdDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ5IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3UgYm91Z2h0IFBheS1wZXItbWludXRlLiBZb3Ugc3RpbGwgaGF2ZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUwIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5CdXkgbmV3IGNyZWRpdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUxIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5XYW50IHlvdXIgb3duIFNlcnZlcj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUyIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3Ugd291bGQgbGlrZSB0byBoYXZlICRBUFBfTkFNRSBpbnN0YWxsZWQgb24geW91ciBTZXJ2ZXIgb3IgaW50ZWdyYXRlZCBpbnRvIHlvdXIgTW9vZGxlLCBTdWdhckNSTSwgV2Vic2l0ZSBvciBJbnRyYW5ldD8gUHJpemluZ3Mgc3RhcnQgYXQgNTAwIEV1cm8gcGVyIEluc3RhbGxhdGlvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUzIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5PciBzZW5kIHVzIGEgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTQiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkFuc3dlciB0bzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU1IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5NZXNzYWdlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTYiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlNlbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU3IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5DbGljayBoZXJlIHRvIGdldCBjb250YWN0IEluZm8gYW5kIFByaXppbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1OCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q3JlZGl0IENhcmQgRGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTkiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkZpcnN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjAiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkxhc3RuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2MSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q3JlZGl0IENhcmQgVHlwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjIiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlZJU0EgQ2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjMiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPk1hc3RlckNhcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY0IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5EaXNjb3ZlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjUiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkFtZXJpY2FuIEV4cHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY2IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DcmVkaXQgQ2FyZCBOdW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY3IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5FeHBpcmF0aW9uIERhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY4IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DYXJkIFZlcmlmaWNhdGlvbiBOdW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY5IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5CaWxsaW5nIEFkZHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTcwIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5BZGRyZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q2l0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzMiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNvdW50cnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc0IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdGF0ZSAoT25seSBVUyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc1IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5aSVA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc2IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5BbW91bnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc3IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdWJtaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc4IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdGVwIDE6ICRBUFBfTkFNRSAtIFBheW1lbnQgRm9ybTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzkiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkVNYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q2xpY2sgIkNoZWNrIG91dCB3aXRoIFBheXBhbCIgdG8gcGF5LiZsdDtici8mZ3Q7IFBheXBhbCBhY2NlcHRzIFZJU0EsIE1hc3RlckNhcmQsIERpc2NvdmVyIG9yIEFtZXJpY2FuIEV4cHJlc3MuICZsdDtici8mZ3Q7SXQgZG9lcyBub3QgcmVxdWlyZSB0byBzaWduIHVwIHdpdGggUGF5cGFsLiAmbHQ7YnIvJmd0O0NpdGl6ZW5zIGZyb20gR2VybWFueSBjYW4gYWxzbyBwYXkgd2l0aCBkaXJlY3QgZGViaXQgKFBlciBMYXN0c2NocmlmdC1FaW56dWcpLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODEiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlRoYW5rIHlvdSBmb3IgYnV5aW5nICRBUFBfTkFNRS4gJmx0O2JyLyZndDsgJmx0O2JyLyZndDsgQXMgc29vbiBhcyB3ZSByZWNlaXZlZCB0aGUgcGF5bWVudCB5b3VyIGFjY291bnQgd2lsbCBiZSB1cGRhdGVkLiZsdDtici8mZ3Q7IFlvdSB3aWxsIHJlY2VpdmUgYW4gRU1haWwgd2l0aCB5b3VyIGludm9pY2UgYXMgUERGLiZsdDtici8mZ3Q7WW91IGNhbiBhbHNvIGNoZWNrIGN1cnJlbnQgYW5kIHBhc3QgdHJhbnNhY3Rpb25zIGluIHlvdXIgcHJvZmlsZSBzZXR0aW5ncy4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7Jmx0O2JyLyZndDtZb3UgY2FuIGNsb3NlIHRoaXMgYnJvd3NlciB3aW5kb3cvdGFiIG5vdyBhbmQgcmV0dXJuIHRvICRBUFBfTkFNRS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgyIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdWJtaXQgYW5kIEJ1eSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgzIiBuYW1lPSJwYXltZW50LWZyb20iPgorICAgIDx2YWx1ZT5DbGljayBhbmQgQnV5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODQiIG5hbWU9InBheW1lbnQtZnJvbSI+CisgICAgPHZhbHVlPlN0ZXAgMzogJEFQUF9OQU1FIFBheW1lbnQgLSBDaGVjayBvcmRlciBhbmQgYnV5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODUiIG5hbWU9InBheW1lbnQtZnJvbSI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg2IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5QYXltZW50IHJlY2VpdmVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODciIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPkhpLDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODgiIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPldlIGhhdmUgcmVjZWl2ZWQgeW91ciBwYXltZW50LiBZb3VyIHVzZXIgcHJvZmlsZSBpcyB1cGRhdGVkIG5vdy4gU2VlIGF0dGFjaGVkIHlvdXIgSW52b2ljZS4gVGhlIEludm9pY2UgYW5kIGFsbCBwYXN0IEludm9pY2UgY2FuIGFsc28gYmUgZG93bmxvYWRlZCBpbiB5b3VyIHVzZXIgcHJvZmlsZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg5IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5UaGFuayB5b3UgZm9yIHVzaW5nICRBUFBfTkFNRSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkwIiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5QYXltZW50IFJlY2VpdmVkICRBUFBfTkFNRSAtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MSIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPlBheW1lbnQgYW5kIFRyYW5zYWN0aW9uIFN0YXR1czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTIiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5UcmFuc2NhdGlvbiBIYXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MyIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPk1pbnV0ZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk0IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+TW9udGhzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NSIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPkVVUjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTYiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TdGF0dXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk3IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+SW52b2ljZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTgiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk5IiBuYW1lPSJlcnJvci1saWNlbnNlLWZsYXQiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0byBidXkgYSB2b2x1bWUgZmxhdHJhdGUgdG8gYmUgYWJsZSB0byBzZW5kIGludml0YXRpb25zIG9yIGNyZWF0ZSBtZWV0aW5ncyB2aWEgdGhlIGNhbGVuZGFyLiBXaXRoIFBheS1wZXItbWludXRlIGl0IGlzIG9ubHkgcG9zc2libGUgZm9yIHlvdSB0byBhY2Nlc3MgJEFQUF9OQU1FLiBZb3UgY2Fubm90IGFsbG93IDN0aCBQYXJ0aWVzIHRvIGFjY2VzcyBhIE1lZXRpbmcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDAiIG5hbWU9ImVycm9yIHVzZXIiPgorICAgIDx2YWx1ZT5UaGlzIEVtYWlsIGlzIGFscmVhZHkgdXNlZCBieSBhbm90aGVyIFVzZXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDEiIG5hbWU9InJvb20tYWRtaW4iPgorICAgIDx2YWx1ZT5TSVAtU2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwMiIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlRoZSBDb25mZXJlbmNlIE51bWJlciBhbmQgUElOIGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB2aWEgdGhlIE9wZW5YRyBSUEMtR2F0ZXdheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAzIiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+U0lQIE51bWJlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA0IiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+UElOPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDUiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5DbGVhciBvYmplY3RzIG9uIGN1cnJlbnQgc2xpZGUgb25seSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNiIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPk9ubHkgdGhlIFVSTCBlbnRlcmVkIGluIHRoZSBTdGF0dXMgYmFyIGlzIHNlbmQgdG8gcGFydGljaXBhbnRzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TWFrZSBUZWFtLVJvb21zIFtCcmVha291dCBzZXNzaW9uXTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2hvb3NlIHVzZXJzIGZvciBhIG5ldyBUZWFtLVJvb20hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIGNob29zZSB1c2VycyBoZXJlIGFuZCBjcmVhdGUgYSBuZXcgQ29uZmVyZW5jZSBSb29tICgiVGVhbSBSb29tIikgZm9yIHRoZW0uIFRoZSBjaG9zZW4gdXNlcnMgd2lsbCBhdXRvbWF0aWNhbGx5IHN3aXRjaCB0byB0aGUgbmV3IFRlYW0tUm9vbSBvciBnZXQgYSBub3RpZmljYXRpb24uIFRlYW0tUm9vbSBNb2RlcmF0b3JzIHdpbGwgZ2V0IGFkZGl0aW9uYWxseSBhIGxpc3Qgb2YgY3VycmVudCByb29tcyBzbyB0aGF0IHRoZXkgY2FuIHN3aXRjaCB0byBlYWNoIHJvb20gaWYgdGhlcmUgYXJlIGlzIG5lZWQgZm9yIGEgTW9kZXJhdG9yLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VXNlcm5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkxvZ2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJzIGZvciB0aGUgbmV3IFRlYW0tUm9vbTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNyZWF0ZSBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2hvb3NlIGF0IGxlYXN0IG9uZSB1c2VyIGZvciB0aGUgVGVhbS1Sb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+QWRkIHVzZXIgdG8gdGVhbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+UmVtb3ZlIHVzZXIgZnJvbSBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXIgaXMgVGVhbS1Sb29tIE1vZGVyYXRvciAoSGUgaXMgYWJsZSB0byBtYW5hZ2UgVGVhbS1Sb29tcyBhbmQgdXNlcnMgb2YgdGhlIFRlYW0tUm9vbSBjYW4gYXNrIGhpbSB0byBjb21lIGluc2lkZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlJvb210eXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5JZiB5b3UgY2hlY2sgIkZvcmNlIHVzZXIgdG8gc3dpdGNoIHRvIG5ldyBUZWFtLVJvb20iIGFsbCBjaG9zZW4gdXNlcnMgd2lsbCBhdXRvbWF0aWNhbGx5IHN3aXRjaCB0byB0aGUgbmV3bHkgY3JlYXRlZCBUZWFtLVJvb20uIE90aGVyd2lzZSB0aGV5IGdldCBhIG5vdGlmaWNhdGlvbiB3aXRoIGEgYnV0dG9uIHRoYXQgdGhleSAmbHQ7aSZndDtjYW4mbHQ7L2kmZ3Q7IHN3aXRjaCB0byB0aGUgbmV3IHJvb20uIFRlYW0tTW9kZXJhdG9ycyBhbHdheXMgaGF2ZSB0aGUgZnJlZSBjaG9pY2UgdG8gbWFuYWdlIHRoZSBUZWFtLVJvb21zIGFuZCBzd2l0Y2ggYmV0d2VlbiB0aGVtLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TWFuYWdlIFRlYW0tUm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPllvdSBjYW4gc3dpdGNoIGhlcmUgYmV0d2VlbiBhbGwgVGVhbS1Sb29tcyB0aGF0IHlvdSBhcmUgYXNzaWduZWQgYXMgVGVhbS1Sb29tIE1vZGVyYXRvci4gVXNlcnMgaW5zaWRlIHRoZSBUZWFtLVJvb20gY2FuIHNlbmQgeW91IGEgbWVzc2FnZSwgZm9yIGV4YW1wbGUgdG8gYXNrIHlvdSB0byBjb21lIHRvIHRoZWlyIHJvb20gYW5kIGhlbHAgdGhlbS4gWW91IGNhbiBhbHNvIHRlcm1pbmF0ZSB0aGUgVGVhbS1Sb29tIGFuZCBhbGwgVXNlcnMgd2lsbCBiZSBsb2dnZWQgb3V0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Rm9yY2UgdXNlciB0byBzd2l0Y2ggdG8gbmV3IFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q3JlYXRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJzIGF2YWlsYWJsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+QWRkIGEgdXNlciB3aXRoIHRoZSBwbHVzIGZyb20gdGhlIGxlZnQgb3IgcmVtb3ZlIGl0IHdpdGggdGhlIGNyb3NzIGZyb20gdGhlIHJpZ2h0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MSkgVGVhbS1Sb29tIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4yKSBBZGQgdXNlcnMgdG8gdGhlIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVhbS1Sb29tIE5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2hhbmdlIHRvIHRoZSBSb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Td2l0Y2ggdG8gdGhpcyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlcm1pbmF0ZSBUZWFtLVJvb20gYW5kIGxvZ291dCBhbGwgVXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk5ldyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGEgbmV3IFRlYW0tUm9vbSBhdmFpbGFibGUgZm9yIHlvdS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlN3aXRjaCB0byBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW0tUm9vbSBBY3Rpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIHJlLW9wZW4gdGhpcyB3aW5kb3cgdmlhIHRoZSBtYWluIG1lbnUgaW4gdGhlICJBY3Rpb25zIiBzZWN0aW9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U2VuZCBtZXNzYWdlIHRvIFRlYW0tUm9vbSBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk5ldyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGEgbmV3IFRlYW0tUm9vbSBhdmFpbGFibGUuIFlvdSBjYW4gc3dpdGNoIHRvIHRoYXQgUm9vbS4gVGVhbS1Sb29tcyBhcmUgbGlrZSAiV29ya2dyb3VwcyIgd2l0aCBhZGRpdGlvbmFsbHkgcG9zc2liaWxpdGllcyB0byBhc2sgdGhlIFRlYW0tUm9vbSBNb2RlcmF0b3IgZm9yIGhlbHAuIFlvdXIgVGVhbS1Sb29tcyBhcmUgYWxzbyBhdmFpbGFibGUgaW4gdGhlICJNeSBNZWV0aW5ncyIgc2VjdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlN3aXRjaCB0byBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNyZWF0ZWQgYnk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb20gbmFtZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0OSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoaXMgV2luZG93IHdpbGwgc3RheSBvcGVuIGV2ZW4gaWYgeW91IGxlYXZlIHRoZSByb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VXNlcnMgZm9yIHRoaXMgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4zKSBPdGhlciBUZWFtLVJvb21zIHRoYXQgeW91IGNvdWxkIHN3aXRjaCB0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U2VuZCBhIG1lc3NhZ2UgdG8gdGhlIFRlYW0tUm9vbSBNb2RlcmF0b3JzLiBGb3IgZXhhbXBsZSBpZiB5b3UgbmVlZCBoZWxwIGluIE1vZGVyYXRpbmcgdGhlIFJvb20gb3IgaWYgeW91IGhhdmUgYSBxdWVzdGlvbiBhYm91dCB0aGUgdG9waWMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5TZW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4yKSBVc2VycyB0aGF0IGFyZSBpbnZpdGVkIHRvIHRoaXMgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5JcyBUZWFtLVJvb20gTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVzZSBhcmUgYWxsIHVzZXJzIHRoYXQgdGhlIG1vZGVyYXRvciBoYXMgaW52aXRlZCB0byB0aGlzIFRlYW0tUm9vbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1NyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIFRlYW0tTW9kZXJhdG9yIGxvZ2dlZCBpbiBhdCB0aGUgbW9tZW50ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGEgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+UGxlYXNlIGhlbHAgdXMsIHdlIGhhdmUgYSBwcm9ibGVtIGluIG91ciBUZWFtLVJvb20hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5BIHVzZXIgZnJvbSBhIFRlYW0tUm9vbSByZXF1ZXN0cyB5b3VyIGhlbHAuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb20gcmVxdWVzdCBmb3IgaGVscDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TWVzc2FnZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2MyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkZyb206PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGN1cnJlbnRseSBub3QgaW4gYW55IFRlYW0tUm9vbS4gQnV0IHlvdSBjYW4gc3dpdGNoIGhlcmUgdG8gYWxsIFRlYW0tUm9vbXMgdGhhdCB5b3UgaGF2ZSBhY2Nlc3MgdG8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjUiIG5hbWU9ImJhY2t1cENvbnRlbnQiPgorICAgIDx2YWx1ZT5CYWNrdXAgdGhlIFN5c3RlbS4gVGhlIEJhY2t1cCBpbmNsdWRlcyBhbGwgVXNlciBnZW5lcmF0ZWQgZGF0YS4gVGhlIGNvbmZpZ3VyYXRpb24gaXMgbm90IGluY2x1ZGVkIGFzIHdlbGwgYXMgdGhlIGxhbmd1YWdlIGxhYmVscy4gQmVjYXVzZSB0aG9zZSB2YWx1ZXMgYXJlIGltcG9ydGVkIHdpdGggdGhlIFN5c3RlbSBJbnN0YWxsZXIuIFRvIHVwZGF0ZSB5b3VyIFN5c3RlbSwgZXhwb3J0IHlvdXIgb2xkIHN5c3RlbSAoMSkgcmUtaW5zdGFsbCBpbnRvIGEgbmV3IGRhdGFiYXNlIHRoZSBuZXcgcGFja2FnZSAoMikgYW5kIGltcG9ydCB0aGUgQmFja3VwIGZpbGUgYWdhaW4gKDMpLiBUaGUgQmFja3VwIHNob3VsZCBiZSBpbXBvcnRlZCBiZWZvcmUgZ2VuZXJhdGluZyBkYXRhIGluIHRoZSBuZXdseSBpbnN0YWxsZWQgc3lzdGVtLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY2IiBuYW1lPSJiYWNrdXBDb250ZW50Ij4KKyAgICA8dmFsdWU+U3lzdGVtIEJhY2t1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY3IiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT5BbGxvdyB1c2VyIHRvIHNoYXJlIFNjcmVlbi9SZWNvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2OCIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+RGVueSB1c2VyIHRvIHNoYXJlIFNjcmVlbi9SZWNvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2OSIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+VXNlciBpcyBNb2RlcmF0b3IsIGhlIGNhbiBkbyBhbnl0aGluZyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3MCIgbmFtZT0iYXBwbHkgZm9yIHNjcmVlbi9yZWNvcmRpbmciPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIHNoYXJlL3JlY29yZCBzY3JlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzEiIG5hbWU9Im1vZGVyYXRpb24gbWluaSBpY29ucyI+CisgICAgPHZhbHVlPllvdSBhcmUgYWxsb3dlZCB0byBzaGFyZS9yZWNvcmQgc2NyZWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzIiIG5hbWU9Im1vZGVyYXRpb24gbWluaSBpY29ucyI+CisgICAgPHZhbHVlPkFwcGx5IGZvciByaWdodCB0byBzaGFyZS9yZWNvcmQgc2NyZWVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDczIiBuYW1lPSJtb2RlcmF0aW9uIG1pbmkgaWNvbnMgY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPkFsbG93L0RlbnkgcmlnaHQgdG8gc2hhcmUvcmVjb3JkIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3NCIgbmFtZT0ic291bmQgaWNvbiI+CisgICAgPHZhbHVlPlR1cm4gc291bmQgb2ZmPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzUiIG5hbWU9InNvdW5kIGljb24iPgorICAgIDx2YWx1ZT5UdXJuIHNvdW5kIG9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzYiIG5hbWU9InJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5BdWRpbyBvbmx5IHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3NyIgbmFtZT0icm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlR1cm4gdGhpcyBGbGFnIG9uIGFuZCB0aGUgdXNlcnMgd2lsbCBoYXZlIG9ubHkgdGhlIEF1ZGlvLU9wdGlvbiBhbmQgbm8gVmlkZW8gaW4gYSBjb25mZXJlbmNlIHJvb20uIFRoaXMgY2FuIGJ5IGdvb2QgdG8gc2F2ZSBiYW5kd2lkdGguPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzgiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFsbG93IFJlbW90ZSBDb250cm9sIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzkiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkRlbnkgUmVtb3RlIENvbnRyb2wgKER1cmluZyBTY3JlZW4gU2hhcmluZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MCIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QXBwbHkgZm9yIHJpZ2h0IHRvIFJlbW90ZSBDb250cm9sIFNjcmVlbiAoRHVyaW5nIFNjcmVlbiBTaGFyaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgxIiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGFsbG93ZWQgdG8gUmVtb3RlIENvbnRyb2wgU2NyZWVuIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODIiIG5hbWU9ImFwcGx5IGZvciByZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gcmVtb3RlIGNvbnRyb2wgc2NyZWVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgzIiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Vc2VyIGlzIE1vZGVyYXRvciwgaGUgY2FuIGRvIGFueXRoaW5nISBbUmVtb3RlIERlc2t0b3AgQ29udHJvbF08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4NCIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QWxsb3cvRGVueSByaWdodCB0byBSZW1vdGUgQ29udHJvbCBTY3JlZW4gKER1cmluZyBTY3JlZW4gU2hhcmluZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4NSIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+MSkgWW91ciBQQyB0byByZW1vdGUgUEM6IFRvIGNvcHkgYW5kIHBhc3RlIHRleHQgZnJvbSB5b3VyIGNsaXBib2FyZCBpbnRvIHRoZSByZW1vdGUgY29udHJvbGxlZCBzY3JlZW4sIGNsaWNrIG9uIHRoZSBzY3JlZW4sIHRoZW4gcmlnaHQgY2xpY2sgaW4gdGhlIHRleHQgZmllbGQgYW5kIGNob29zZSAiSW5zZXJ0IiBmcm9tIHRoZSBjb250ZXh0IChyaWdodCBjbGljaykgbWVudS4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7MikgRnJvbSByZW1vdGUgUEMgdG8geW91ciBQQzogVG8gY29weSB0ZXh0IGZyb20gdGhlIHJlbW90ZSBQQyB0byB5b3VyIFBDJ3MgY2xpcGJvYXJkLCBoaWdobGlnaHQgdGhlIHRleHQgd2l0aCB0aGUgbW91c2Ugb24gdGhlIHJlbW90ZSBzY3JlZW4sIHRoZW4gcmlnaHQtY2xpY2sgb24gdGhlIHJlbW90ZSBzY3JlZW4gYW5kIGNob29zZSAmbHQ7aSZndDtDb3B5IGhpZ2hsaWdodGVkIHRleHQmbHQ7L2kmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODYiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNvcHkgYW5kIFBhc3RlIHRleHQgZnJvbSB5b3VyIFBDIHRvIHJlbW90ZSBQQyBhbmQgdmljZS12ZXJzYS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4NyIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+Q29weSBoaWdobGlnaHRlZCB0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODgiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkhvdyB0byBjb3B5IG4gcGFzdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4OSIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+UXVhbGl0eSBvZiB0aGUgU2NyZWVuU2hhcmU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTAiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPlZlcnkgaGlnaCBRdWFsaXR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTEiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPkhpZ2ggUXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkyIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5NZWRpdW0gUXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkzIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5Mb3cgUXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk0IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPmVuX1VTPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTUiIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+ZGVfREU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NiIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5LZXlib2FyZDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NyIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5DbG9zZSBXZWJpbmFyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk4IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPlRoZSBXZWJpbmFyIGlzIGFscmVhZHkgY2xvc2VkLCB5b3Ugd2lsbCBiZSByZWRpcmVjdGVkIHRvIHNvbWUgaW50ZXJlc3Rpbmcgb2ZmZXJpbmdzIGluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTkiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+Q2xvc2UgUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAwIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPkV4aXQgVVJMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDEiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+Um9vbSB0ZXJtaW5hdGlvbiBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAyIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPklmIHRoZSByb29tIGlzIGNsb3NlZCB1c2VycyB3aWxsIGJlIHJlZGlyZWN0ZWQgdG8gdGhlIGV4aXQgVVJMLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAzIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkxkYXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA1IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNiIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5Db25maWcgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA3IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkxkYXAgQ29uZmlnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDgiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA5IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkVuYWJsZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JbnNlcnRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTExIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkluc2VydGVkIGJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTIiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+VXBkYXRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEzIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPlVwZGF0ZWQgYnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5UaGUgY29uZmlnIGZpbGVzIGFyZSBpbiB0aGUgZm9sZGVyIHdlYmFwcHMvb3Blbm1lZXRpbmdzL2NvbmYuIFlvdSBuZWVkIHRvIG1hbnVhbGx5IHVwbG9hZCB0aGUgZmlsZXMgdG8gdGhpcyBmb2xkZXIuIENoYW5nZXMgdG8gdGhlIGNvbmZpZyBmaWxlIGFyZSBpbW1lZGlhdGVseSBvbmxpbmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTUiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+Q29uZmlnIGZpbGUgbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE2IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPklmIHlvdSBlbmFibGUgIkFkZCBEb21haW4gdG8gdXNlcm5hbWUiIHRoZSB2YWx1ZSBvZiB0aGUgZmllbGQgImRvbWFpbiIgaXMgYWRkZWQgdG8gZWFjaCBsb2dpbiB0aGF0IHRoZSB1c2VyIGVudGVycyBpbiB0aGUgbG9naW4gYm94LiBUaGlzIGlzIHVzZWZ1bCBpZiB0aGUgTG9naW4gaW4gdGhlIExkYXAgaXMgc3RvcmVkIGluY2x1ZGluZyB0aGUgZG9tYWluIG5hbWUuIEV4YW1wbGU6IFVzZXIgZW50ZXJzICJoYW5zIiBkb21haW4gaXMgc3BlY2lmaWVkIGFzICJsb2NhbGhvc3QuY29tIiwgbG9naW4gdGhhdCBpcyB2ZXJpZmllZCBhZ2FpbnN0IExkYXAgaXM6IGhhbnNAbG9jYWxob3N0LmNvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE3IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkFkZCBEb21haW4gdG8gdXNlcm5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExOCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5Eb21haW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExOSIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5JbnNlcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMCIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5Db3B5IGhpZ2hsaWdodGVkIHRleHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMSIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5SZW1vdGUgQ2xpcGJvYXJkIFRleHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMiIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5TaG93IHJlbW90ZSBDbGlwYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMyIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+RG8gbm90IHNob3cgYWdhaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNCIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+Q29weSB0ZXh0IGhlcmUgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjUiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPllvdSBuZWVkIHRoZSByaWdodCB0byByZW1vdGUgY29udHJvbCAob3IgdGhlIG1vZGVyYXRpb24pIHRvIGNvcHkgYW5kIHBhc3RlIHRleHQgdG8gb3IgZnJvbSB0aGUgcmVtb3RlIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNiIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+RWRpdCBkZWZhdWx0IHNldHRpbmdzIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI3IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5EbyBub3Qgc2hvdyBpbmZvIGJveCBpbiBSZW1vdGUgQ29udHJvbCBhYm91dCBDb3B5IGFuZCBQYXN0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI4IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPlNhdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyOSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5SZW1vdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMSIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkludml0ZSB1c2VyIHRvIGNvbmZlcmVuY2Ugcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMyIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+Q2hvb3NlIGEgY29uZmVyZW5jZSByb29tLiBUaGUgaW52aXRlZCB1c2VyIHdpbGwgZ2V0IGEgbWVzc2FnZSB3aXRoIHlvdXIgbmFtZSBhbmQgYSBsaW5rIHRvIHRoZSByb29tLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMzIiBuYW1lPSJjaGF0IHVzZXIiPgorICAgIDx2YWx1ZT5Db25uZWN0ZWQgc2luY2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzQiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5FbnRlciByb29tIGFmdGVyIHNlbmRpbmcgaW52aXRhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM1IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+SW52aXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzYiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5NZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzciIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGludml0ZSB5b3UgdG8gdGhlIGNvbmZlcmVuY2Ugcm9vbTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzOCIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkludml0ZSBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzkiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5TZW5kIEludml0YXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0MCIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPmRpZCAmbHQ7YiZndDtub3QmbHQ7L2ImZ3Q7IGFjY2VwdCB5b3VyIGludml0YXRpb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDEiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5BY2NlcHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0MiIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkRlbnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0MyIgbmFtZT0idXNlciBwcm9maWxlIj4KKyAgICA8dmFsdWU+VGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0NCIgbmFtZT0iYXBwb2ludG1lbnQgbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+RXZlbnQgRGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ1IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDYiIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPkRlc2NyaXB0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDciIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPkNyZWF0ZWQgYnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0OCIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlRpbWVab25lIE1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0OSIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPkNoZWNrICJUaW1lWm9uZSBNZXNzYWdlIiB0byBnaXZlIHVzZXJzIGEgbWVzc2FnZSBuZXh0IHRpbWUgdGhleSBsb2dpbiB0byB1cGRhdGUgdGhlaXIgcHJvZmlsZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MCIgbmFtZT0idGltZSB6b25lIHVwZGF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+UGxlYXNlIGNoZWNrIHRoZSB0aW1lIHpvbmUgaW4geW91ciB1c2VyIHByb2ZpbGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTEiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPk5ldyAkQVBQX05BTUUgY29uZmVyZW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MiIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGV0YWlsczombHQ7YnIvJmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUzIiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TdGFydDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NCIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RW5kOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU1IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DaGFuZ2VkICRBUFBfTkFNRSBjb25mZXJlbmNlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU2IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Pcmdhbml6ZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTciIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkNhbmNlbGVkICRBUFBfTkFNRSBjb25mZXJlbmNlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU4IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgY29uZmVyZW5jZSBSZW1pbmRlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1OSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkNvbW11bml0eSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYwIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2hvdyBjb250YWN0IGRhdGEgdG8gZXZlcnlib2R5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjEiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5BZGQgZmllbGRzIG9mIGludGVyZXN0IHRoYXQgeW91IG9mZmVyIG9yIHRoYXQgeW91IGFyZSBzZWFyY2hpbmcgdG8gZmluZCBpbnRlcmVzdGluZyBwYXJ0bmVycyBmb3IgYSBjb25mZXJlbmNlLiBDb21tYSBzZXBhcmF0ZSB0aGUgdGVybXMgKGZvciBleGFtcGxlOiBNZWRpY2FsIFNlcnZpY2UsIEhlYWx0aCBhc3N1cmFuY2UsIC4uLik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MiIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk15IG9mZmVyaW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYzIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+TXkgaW50ZXJlc3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjQiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjUiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5UaW1lem9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY2IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+RmllbGRzIG9mIGludGVyZXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjciIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Db250YWN0IGluZm9ybWF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjgiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TaG93IGNvbnRhY3QgZGF0YSB0byBjb250YWN0cyBvbmx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjkiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TaG93IGNvbnRhY3QgZGF0YSB0byBub2JvZHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk15IFByb2ZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkVkaXQgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MiIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlNlYXJjaCB1c2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTczIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+V2F0Y2ggeW91ciBwcm9maWxlIGxpa2Ugb3RoZXIgc2VlIHlvdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc0IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+RWRpdCB5b3VyIHNldHRpbmdzLCBhZGQgeW91ciBpbnRlcmVzdHMgdG8gYmUgZm91bmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlNlYXJjaCBmb3Igb3RoZXIgdXNlcnMgYW5kIGV4dGVuZCB5b3VyIG5ldHdvcms8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NiIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5TZWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NyIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5Vc2VyIG9mZmVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc4IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlVzZXIgbG9va3MgZm9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzkiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+RnJlZXRleHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODEiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+VGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MiIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5PZmZlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MyIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5TZWFyY2hzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODQiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+U2VhcmNocmVzdWx0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODUiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+QWN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg2IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkFkZCB0byBjb250YWN0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg3IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlNlbmQgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg4IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkNvbnRhY3RzIGFuZCBNZXNzYWdlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg5IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlBlbmRpbmcgY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkFjY2VwdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkxIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+RGVueTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkyIiBuYW1lPSJ1c2VyIGNvbnRhY3QgcmVxdWVzdCI+CisgICAgPHZhbHVlPkhpLDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkzIiBuYW1lPSJ1c2VyIGNvbnRhY3QgcmVxdWVzdCI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gYWRkIHlvdSBhcyBjb250YWN0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk0IiBuYW1lPSJ1c2VyIGNvbnRhY3QgcmVxdWVzdCI+CisgICAgPHZhbHVlPkNoZWNrIHlvdXIgY29udGFjdCByZXF1ZXN0cyBpbiAkQVBQX05BTUUgb3IgY2xpY2sgb24gdGhvc2UgbGlua3MgdG8gYWNjZXB0IG9yIGRlbnkgdGhlIHJlcXVlc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NSIgbmFtZT0iYWRkIHVzZXIgY29udGFjdCI+CisgICAgPHZhbHVlPlRoaXMgdXNlciBpcyBhbHJlYWR5IGluIHlvdXIgY29udGFjdCBsaXN0IG9yIGhhcyByZWNlaXZlZCBhbiBpbnZpdGF0aW9uIHRvIHlvdXIgY29udGFjdCBsaXN0IHRoYXQgaXMgbm90IGFuc3dlcmVkIHlldC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NiIgbmFtZT0idXNlciBjb250YWN0IG1haWwiPgorICAgIDx2YWx1ZT5Zb3VyIGNvbnRhY3QgbGlzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+RWRpdCB5b3VyIGNvbnRhY3QgYW5kIG1lc3NhZ2VzLCZsdDtici8mZ3Q7IG1hbmFnZSB5b3VyIHBlbmRpbmcgY29udGFjdHMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTgiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5jb25maXJtZWQgeW91IGFzIGNvbnRhY3QhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTkiIG5hbWU9ImNoYXQgaW5mbyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDAiIG5hbWU9ImNoYXQgbG9nIGljb24iPgorICAgIDx2YWx1ZT5TaG93IC8gQ29weSBjaGF0IGxvZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAxIiBuYW1lPSJjaGF0IGxvZyB3aW5kb3ciPgorICAgIDx2YWx1ZT5DaGF0IExvZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Gcm9tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlN1YmplY3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWVzc2FnZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TmV3IE1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwOCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2xpY2sgdG8gd3JpdGUgYSBuZXcgbWVzc2FnZSB0byBhbnkgb2YgeW91ciBjb250YWN0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Xcml0ZSBuZXcgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjEwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Ubzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3ViamVjdDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMiIgbmFtZT0id2hpdGVib2FyZCBmdWxsLWZpdCI+CisgICAgPHZhbHVlPkVuYWJsZSBmdWxsIGZpdCBhbmQgdGhlIHdoaXRlYm9hcmQgd2lsbCB6b29tIHRoZSB3aG9sZSB3aGl0ZWJvYXJkIHNvIHRoYXQgYWxsJmx0O2JyLyZndDtkb2N1bWVudHMgYXJlIHZpc2libGUgYWNjb3JkaW5nIHRvIGVhY2ggcGFydGljaXBhbnRzIHNjcmVlbiByZXNvbHV0aW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjEzIiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT5LaWNrIHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNCIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBraWNrIHlvdXJzZWxmIG91dCBvZiB0aGUgY29uZmVyZW5jZSByb29tISBJZiB5b3Ugd2FudCB0byBsZWF2ZSBpdCBjbG9zZSB0aGUgYnJvd3NlciBvciB1c2UgdGhlIGV4aXQgYnV0dG9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE1IiBuYW1lPSJraWNrLXVzZXIiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGlzY29ubmVjdCB0aGlzIHVzZXIgZnJvbSB0aGlzIGNvbmZlcmVuY2Ugcm9vbT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNiIgbmFtZT0ia2ljay11c2VyIj4KKyAgICA8dmFsdWU+Q29uZmlybSBhY3Rpb24gLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTciIG5hbWU9ImtpY2stdXNlciI+CisgICAgPHZhbHVlPllvdSBjYW5ub3Qga2ljayBhIFN1cGVyLU1vZGVyYXRvciBvdXQgb2YgYSByb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Cb29rIGNvbmZlcmVuY2Ugcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TdGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5FbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIGFuIG9wdGlvbmFsIHJlcXVlc3QgZm9yIG1lZXRpbmcgdG8gdGhlIG1lc3NhZ2UgYW5kIGNyZWF0ZSBhIGNvbmZlcmVuY2Ugcm9vbS4gVGhlIEV2ZW50IGlzIHRoZW4gY29waWVkIGluIHRoZSBjYWxlbmRhciBvZiBldmVyeSBwYXJ0aWNpcGFudC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+SW5ib3g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UcmFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGlzIGlzIHlvdSEgWW91IGNhbm5vdCBhZGQgeW91cnNlbGYgYXMgeW91ciBvd24gY29udGFjdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoZSB1c2VyIGlzIGFscmVhZHkgZGVuaWVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VGhlIHVzZXIgaXMgYWxyZWFkeSBhcHByb3ZlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyOCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoaXMgdXNlciBjb250YWN0IGhhc2ggaXMgaW52YWxpZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyOSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlVzZXIgYWRkZWQgdG8gY29udGFjdCBsaXN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMwIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VXNlciBkZW5pZWQgYXMgY29udGFjdCBhbmQgcmVtb3ZlZCBmcm9tIHBlbmRpbmcgY29udGFjdCBsaXN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMxIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgbm8gc3VjaCBjb250YWN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMyIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+V291bGQgeW91IHJlYWxseSBsaWtlIHRvIHJlbW92ZSB0aGF0IGNvbnRhY3Q/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzMiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Db25maXJtIGNvbnRhY3QgcmVtb3ZhbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM0IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+RGVsZXRlIGNvbnRhY3QgZnJvbSBsaXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzUiIG5hbWU9InVzZXIgcHJvZmlsZSI+CisgICAgPHZhbHVlPlVzZXIgUHJvZmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM2IiBuYW1lPSJ1c2VyIHByb2ZpbGUiPgorICAgIDx2YWx1ZT5TaG93IHVzZXIgcHJvZmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM3IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5NZXNzYWdlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzOSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VsZWN0IGFsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWxlY3Qgbm9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWxlY3QgdW5yZWFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbGVjdCByZWFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1vdmUgdG8gZm9sZGVyIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgbmV3IGZvbGRlciAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGVsZXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDYiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRlbGV0ZWQgbWFpbHMgYXJlIHN0aWxsIGluIHlvdXIgdHJhc2ggZm9sZGVyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ3IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5NYXJrIHVucmVhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5NYXJrIHJlYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0OSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QW5zd2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTAiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFuc3dlciBldmVyeWJvZHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Rm9yd2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BY3Rpb25zIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUzIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+U2VuZCBwcml2YXRlIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Tm90aGluZyBzZWxlY3RlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TW92ZSB0byBJbmJveDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU2IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EZWxldGUgKGZpbmFsKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU3IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGlzIGFjdGlvbiBjYW5ub3QgYmUgdW5kb25lITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgZm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZCBmb2xkZXJzIGFuZCBvcmdhbml6ZSB5b3VyIG1lc3NhZ2VzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgZm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+RGVsZXRlIGZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBkZWxldGUgdGhpcyBmb2xkZXIsIHRoZXJlIGFyZSBzdGlsbCBtZXNzYWdlcyBpbnNpZGUhIERlbGV0ZSBmaXJzdCB0aGUgbWVzc2FnZXMgb3IgbW92ZSB0aGVtIHRvIGFub3RoZXIgZm9sZGVyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+RWRpdCBuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSBmb2xkZXIiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgZm9sZGVyPyBUaGVyZSBpcyBubyB3YXkgdG8gdW5kbyB0aGF0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY2IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+WW91ciByZXF1ZXN0IHdhcyBzZW5kIHRvIHRoZSB1c2VyLiBUaGUgdXNlciB3aWxsIHJlY2VpdmUgYSBub3RpZmljYXRpb24gdG8gYWNjZXB0IG9yIGRlbnkgeW91ciByZXF1ZXN0LiBPbmx5IGFjY2VwdGVkIHJlcXVlc3RzIGFyZSBpbiB5b3VyIGNvbnRhY3QgbGlzdCBvZiBjb3Vyc2UhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjciIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5NZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjgiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+VGhlIHVzZXIgZG9lcyBub3Qgc2hhcmUgaGlzIHBlcnNvbmFsIGNvbnRhY3QgZGF0YS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2OSIgbmFtZT0idXNlciB2aWV3IHByb2ZpbGUiPgorICAgIDx2YWx1ZT5UaGUgdXNlciBkb2VzIHNoYXJlIGhpcyBwZXJzb25hbCBjb250YWN0IGRhdGEgb25seSB0byBjb250YWN0cy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3MCIgbmFtZT0idXNlciB2aWV3IHByb2ZpbGUiPgorICAgIDx2YWx1ZT5BZGRyZXNzICZhbXA7IFBob25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzEiIG5hbWU9ImVycm9yIGNvZGUiPgorICAgIDx2YWx1ZT5Zb3UgaW52aXRhdGlvbiBjb2RlIGlzIG5vIHZhbGlkLCB0aGUgY29kZSBpcyBvbmx5IHZhbGlkIGR1cmluZyB0aGlzIHNwZWNpZmljIGRhdGUgYW5kIHRpbWU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzIiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5UaGlzIGV2ZW50IGlzIGNvbm5lY3RlZCB0byBzZXZlcmFsIGNhbGVuZGFycyBvZiBvdGhlciB1c2Vycy4gWW91ciBjaGFuZ2Ugd2lsbCBhbHNvIHVwZGF0ZSB0aGVpciBjYWxlbmRhci4gV291bGQgeW91IHJlYWxseSBsaWtlIHRvIHVwZGF0ZSB0aGUgZXZlbnQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzMiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Db25maXJtIHVwZGF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc0IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+QWxsb3cgY29udGFjdCB0byBzZWUgbXkgY2FsZW5kYXIgKHZpZXcgb25seSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkRvIG5vdCBzaGFyZSBjYWxlbmRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc2IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+Q2FsZW5kYXIgb2YgY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPllvdXIgY29udGFjdHMgbmVlZCB0byBhcHByb3ZlIHlvdSBmaXJzdCB0byBiZSBhYmxlIHRvIHNlZSB0aGVpciBjYWxlbmRhci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3OCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPllvdSBjYW5ub3Qgc3RvcmUgb3IgZGVsZXRlIGV2ZW50cyBmcm9tIG90aGVyIGNhbGVuZGFycyB0aGVuIHlvdXIgb3duITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc5IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+U2hvdyBteSBvd24gY2FsZW5kYXIgYWdhaW4hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODAiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5UaGlzIGV2ZW50IGlzIGNvbm5lY3RlZCB0byBzZXZlcmFsIGNhbGVuZGFycyBvZiBvdGhlciB1c2Vycy4gWW91ciBhY3Rpb24gd2lsbCBhbHNvIGRlbGV0ZSB0aGUgZXZlbnQgZnJvbSB0aGVpciBjYWxlbmRhci4gV291bGQgeW91IHJlYWxseSBsaWtlIHRvIGRlbGV0ZSB0aGUgZXZlbnQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODEiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Db25maXJtIGFjdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgyIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RW50ZXIgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgzIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QWNjZXNzIHRoZSBjb25mZXJlbmNlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgYSBjb25mZXJlbmNlIHJvb20gYW5kIGV2ZW50IGJvb2tlZCB3aXRoIHRoaXMgcHJpdmF0ZSBtZXNzYWdlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg1IiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgdG8gc3RvcmUgdGhlIGV2ZW50IGZpcnN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg2IiBuYW1lPSJhY2Nlc3Mgcm9vbXMgZXJyb3IiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBzdWNoIHJvb20gYXZhaWxhYmxlLiBUaGUgZXZlbnQgaW4gdGhlIGNhbGVuZGFyIGFuZCBjb25uZWN0ZWQgcm9vbSBpcyBhbHJlYWR5IGRlbGV0ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODciIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPkNob29zZSB5b3VyIG5pY2tuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODgiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPkZpcnN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg5IiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5MYXN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkwIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5FbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkxIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5PazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkyIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5NaW5pbXVtIGxlbmd0aCA0IGNoYXJzISBGb3IgYm90aCwgZmlyc3RuYW1lIGFuZCBsYXN0bmFtZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MyIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGEgdmFsaWQgZW1haWwhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTQiIG5hbWU9ImF1dGggZnJvbSI+CisgICAgPHZhbHVlPkZhY2Vib29rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTUiIG5hbWU9ImF1dGggZm9ybSI+CisgICAgPHZhbHVlPkxvZ2luIHdpdGggeW91ciBGYWNlYm9vayBhY2NvdW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTYiIG5hbWU9InZpZXcgcHJvZmlsZSI+CisgICAgPHZhbHVlPk1lbWJlciBzaW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk3IiBuYW1lPSJkaXJlY3QgbG9naW4gbWVzc2FnZSI+CisgICAgPHZhbHVlPllvdSd2ZSBsb2dnZWQgd2l0aCB5b3VyIEZhY2Vib29rIGFjY291bnQuIFlvdSBzaG91bGQgdXBkYXRlIHlvdXIgcHJvZmlsZSB3aXRoIHRoZSBjb3JyZWN0IGVtYWlsLiBPdGhlcndpc2UgeW91IHdpbGwgbm90IHJlY2VpdmUgaW52aXRhdGlvbnMgYW5kIHByaXZhdGUgbWVzc2FnZXMgZnJvbSBvdGhlciB1c2Vycy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5OCIgbmFtZT0iZGlyZWN0IGxvZ2luIG1lc3NhZ2UgaGVhZGVyIj4KKyAgICA8dmFsdWU+TWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk5IiBuYW1lPSJkaXJlY3QgbG9naW4gbWVzc2FnZSBjaGVja2JveCBjb250cm9sIj4KKyAgICA8dmFsdWU+RG8gbm90IHNob3cgdXBkYXRlIHByb2ZpbGUgbWVzc2FnZSBhZ2FpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAwIiBuYW1lPSJwcm9maWxlIHNldHRpbmdzIGJ1dHRvbiI+CisgICAgPHZhbHVlPm1vcmUgZGlzcGxheSBvcHRpb25zIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5OZXcgcHJpdmF0ZSBtZXNzYWdlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DbGljayBoZXJlIHRvIHZpc2l0IHlvdXIgcHJvZmlsZSB0byBzZWUgdGhlIGZ1bGwgbWVzc2FnZSAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+UmVwbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwNCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+Um9vbXMgYW5kIGNoYXRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDUiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPk15IHJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDYiIG5hbWU9Im15IHJvb21zIj4KKyAgICA8dmFsdWU+TXkgY29uZmVyZW5jZSByb29tIChmb3IgMS0xNiB1c2Vycyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwNyIgbmFtZT0ibXkgcm9vbXMiPgorICAgIDx2YWx1ZT5NeSB3ZWJpbmFyIHJvb20gKGZvciAxLTEyMCB1c2Vycyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwOCIgbmFtZT0icm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPk93bmVyIElkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDkiIG5hbWU9ImxvZ2luIGVycm9yIj4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGEgcGFzc3dvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMCIgbmFtZT0ibG9naW4gZXJyb3IiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCBhbiBhY2NvdW50IHdpdGggVXNlci1MZXZlbCBVc2VyLCBNb2RlcmF0b3Igb3IgQWRtaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMSIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPldlYi1TZXJ2aWNlIChvbmx5IGFjY2VzcyB2aWEgU09BUCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMiIgbmFtZT0idXBsb2FkIGZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5EbyBkaXJlY3RseSBsb2FkIHRvIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMyIgbmFtZT0id2hpdGVib2FyZCBjbG9zZSBjb25maXJtYXRpb24iPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gcmVtb3ZlIHRoaXMgd2hpdGVib2FyZD8gVGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxNCIgbmFtZT0id2hpdGVib2FyZCBsb2FkIFdNTCI+CisgICAgPHZhbHVlPkxvYWQgdG8gd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE1IiBuYW1lPSJyZWNvcmRpbmcgZmxhZyI+CisgICAgPHZhbHVlPkRvIG5vdCBmb3JnZXQgc3RhcnQgcmVjb3JkaW5nISBPbmUgdXNlciBwZXIgcm9vbSBhbHdheXMgbmVlZHMgdG8gc3RhcnQgaXQgdG8gaGF2ZSB0aGUgcmVjb3JkaW5nIGFmdGVyd2FyZHMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTYiIG5hbWU9InJlY29yZGluZyBmbGFnIj4KKyAgICA8dmFsdWU+U3RhcnQgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTciIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+QXJyb3c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxOCIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT5DaXJjbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxOSIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT5MaW5lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjAiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+U3F1YXJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjEiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+VHJpYW5nbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyMiIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlRleHQvTm90ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIzIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+Q2xpcGFydHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkRyYXcgRnJlZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI1IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+U2VsZWN0L01vdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNiIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkRyYXcgU2hhcGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNyIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkN1dC9Nb3ZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjgiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5ab29tIEluL091dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI5IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+UHJpbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlVuZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMSIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlRyYXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzIiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5BZGQgR3JpZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMzIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+U2hhcmUgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM0IiBuYW1lPSJpY29uIHN1Ym1lbnUiPgorICAgIDx2YWx1ZT5TZWxlY3QgU2hhcGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNSIgbmFtZT0iaWNvbiBzdWJtZW51Ij4KKyAgICA8dmFsdWU+U2VsZWN0IENsaXBhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNiIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkNvcHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNyIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkN1dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM4IiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+UGFzdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzOSIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkRlbGV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQwIiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGUgY29tcGxldGUgY29udGVudCBvbiB0aGUgd2hpdGVib2FyZD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MSIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkxvYWQgZGlyZWN0bHkgdG8gd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQyIiBuYW1lPSJhdHRlbmRlZXMiPgorICAgIDx2YWx1ZT5BdHRlbmRlZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MyIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+QXR0ZW5kZWUgTWFuYWdlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ0IiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5QcmVzZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDUiIG5hbWU9ImF0ZW5kZWUgbWFuYWdlciI+CisgICAgPHZhbHVlPlJlbW90ZSBDb250cm9sbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ2IiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5FamVjdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ3IiBuYW1lPSJjaGF0Ij4KKyAgICA8dmFsdWU+Q2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ4IiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5JbnZpdGUgQXR0ZW5kZWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDkiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPkJ5IEVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTAiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPlVzZXIgaXMgbW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTEiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPlVzZXIgaGFzIHdlYmNhbSBzd2l0Y2hlZCBvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUyIiBuYW1lPSJmaWxsX29wdGlvbiI+CisgICAgPHZhbHVlPkRlYWN0aXZhdGUgc2hhcGUgZmlsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUzIiBuYW1lPSJmaWxsX29wdGlvbiI+CisgICAgPHZhbHVlPkFjdGl2YXRlIHNoYXBlIGZpbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlNuYXAgdG8gR3JpZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU1IiBuYW1lPSJhbGxvd19yZWNvcmRpbmciPgorICAgIDx2YWx1ZT5BbGxvdyByZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NiIgbmFtZT0id2FpdF9mb3JfcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+V2FpdCBmb3IgcmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTciIG5hbWU9ImhpZGVfdG9wX2JhciI+CisgICAgPHZhbHVlPkhpZGUgdG9wYmFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTgiIG5hbWU9ImZpbGVFeHBsb3JlciI+CisgICAgPHZhbHVlPlBsYXkgdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1OSIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhlIGNvbnRlbnQgb24gdGhlIGN1cnJlbnQgc2xpZGU/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjAiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPkFjY2VwdCBhbmQgZ3JhbnQgdXNlciByaWdodDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYxIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT5EZW55PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjIiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPkk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2MyIgbmFtZT0iYWN0aXZpdHlfd2luZG93Ij4KKyAgICA8dmFsdWU+QWN0aXZpdGllcyBhbmQgYWN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY0IiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+UmVtb3ZlIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NSIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPllvdSBuZWVkIHRoZSBtb2RlcmF0aW9uIG9yIHRoZSByaWdodCB0byBkcmF3IG9uIHRoZSB3aGl0ZWJvYXJkIHRvIHJlbW92ZSB3aGl0ZWJvYXJkcyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NiIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPk5vdCBhbGxvd2VkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjciIG5hbWU9InVzZXJfbGVmdF9hY3RfbXNnIj4KKyAgICA8dmFsdWU+aGFzIGxlZnQgdGhlIHJvb20uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjgiIG5hbWU9ImNsaXBhcnQgaWNvbnMiPgorICAgIDx2YWx1ZT5NYXRoIGljb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjkiIG5hbWU9ImNsaXBhcnQgaWNvbnMiPgorICAgIDx2YWx1ZT5ObyBjYXRlZ29yeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzcwIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5Db2xvci1TdHlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzcxIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5RdWFsaXR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzIiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPkRvbWFpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzczIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT52aXNpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc0IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5yZWRvcmFuZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+bWVkaXVtc2VhZ3JlZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NiIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+c3RlZWxibHVlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzciIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPmxpZ2h0c3RlZWxibHVlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzgiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPmdvbGRlbnJlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc5IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5zaWx2ZXJncmF5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODAiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnVzZXJkZWZpbmVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODEiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPmJlc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4MiIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+dXBsb2FkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODMiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPm1lZGl1bTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg0IiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODUiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODYiIG5hbWU9ImdpdmUgZXhjbHVzaXZlIGF1ZGlvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIG9mIG90aGVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg3IiBuYW1lPSJtdXRlIHNlbGYgbWVzc2FnZSI+CisgICAgPHZhbHVlPllvdSBhcmUgZ2xvYmFsbHkgbXV0ZWQgYnkgdGhlIG1vZGVyYXRvci4gWW91IGNhbm5vdCB1bm11dGUgeW91cnNlbGYhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODgiIG5hbWU9Im11dGUgc2VsZiBjb25maXJtIG1lc3NhZ2UgdGl0bGUiPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgZ2xvYmFsbHk/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODkiIG5hbWU9Im11dGUgc2VsZiBjb25maXJtIG1lc3NhZ2UgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBtdXRlIHlvdXJzZWxmIGdsb2JhbGx5PyBObyBvdGhlciB1c2VyIHdpbGwgaGVhciB5b3UgYW55bW9yZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5MCIgbmFtZT0ibXV0ZSBvdGhlcnMgY29uZmlybSBtZXNzYWdlIHRpdGxlIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGxvY2FsbHk/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTEiIG5hbWU9Im11dGUgb3RoZXJzIGNvbmZpcm0gbWVzc2FnZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBtdXRlIHRoaXMgbWljcm9waG9uZT8gWW91IGNhbiBvbmx5IG11dGUgaXQgbG9jYWxseSBvbiB5b3VyIHNjcmVlbi4gSXQgaGFzIG5vIGVmZmVjdCB0byBob3cgb3RoZXIgdXNlcnMgaGVhciB0aGlzIHVzZXIuIE9ubHkgbW9kZXJhdG9ycyBjYW4gdHVybiBpdCBvZmYgZ2xvYmFsbHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTIiIG5hbWU9Im11dGUgb3RoZXJzIGNvbmZpcm0gbWVzc2FnZSB0aXRsZSI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBvZmYgZ2xvYmFsbHk/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTMiIG5hbWU9Im11dGUgb3RoZXJzIG1vZGVyYXRvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIG11dGUgdGhpcyB1c2VyIGdsb2JhbGx5PyBObyBvdGhlciB1c2VyIHdpbGwgaGVhciBoaW0gYW55bW9yZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5NCIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5Zb3VyIHNvdW5kIGlzIG9uLiBDbGljayBoZXJlIHRvIHNlbmQgbW9kZXJhdG9yIG1lc3NhZ2UgdG8gbXV0ZSB5b3VyIG1pY3JvcGhvbmUgZ2xvYmFsbHkgKGluIHRoZSBjb21wbGV0ZSBjb25mZXJlbmNlIHJvb20pIG9mZiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5NSIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5Zb3VyIHNvdW5kIGlzIG9mZi4gQ2xpY2sgaGVyZSB0byBzZW5kIG1vZGVyYXRvciBtZXNzYWdlIHRvIHVubXV0ZSB5b3VyIG1pY3JvcGhvbmUgZ2xvYmFsbHkgKGluIHRoZSBjb21wbGV0ZSBjb25mZXJlbmNlIHJvb20pIG9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk2IiBuYW1lPSJtdXRlIGFwcGx5IHNlbGYgb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdGhhdCB0aGUgbW9kZXJhdG9yIG11dGVzIG15IG1pY3JvcGhvbmUgZ2xvYmFsbHkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTciIG5hbWU9Im11dGUgYXBwbHkgc2VsZiBvZmYgbWVzc2FnZSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdGhhdCB0aGUgbW9kZXJhdG9yIHVubXV0ZXMgbXkgbWljcm9waG9uZSBnbG9iYWxseS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5OCIgbmFtZT0ibXV0ZSBhcHBseSBvZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+d2FudCB0aGF0IHRoZSBtb2RlcmF0b3IgdW5tdXRlcyBoaXMvaGVyIG1pY3JvcGhvbmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTkiIG5hbWU9Im11dGUgYXBwbHkgb2YgbWVzc2FnZSI+CisgICAgPHZhbHVlPndhbnQgdGhhdCB0aGUgbW9kZXJhdG9yIG11dGVzIGhpcy9oZXIgbWljcm9waG9uZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMCIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5Vbm11dGUgbWljcm9waG9uZS4gQ2xpY2sgaGVyZSB0byBtdXRlIGhpcy9oZXIgbWljcm9waG9uZSBnbG9iYWxseSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMSIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUuIENsaWNrIGhlcmUgdG8gdW5tdXRlIGhpcy9oZXIgbWljcm9waG9uZSBnbG9iYWxseSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMiIgbmFtZT0ibXV0ZSBzZWxmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGlzIHVzZXIgaXMgZ2xvYmFsbHkgbXV0ZWQgYnkgdGhlIG1vZGVyYXRvci4gWW91IGNhbm5vdCB1bm11dGUgaGltITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDAzIiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TXV0ZSB5b3VyIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwNCIgbmFtZT0idW5tdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+VW5tdXRlIHlvdXIgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA1IiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDYiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSBtaWNyb3Bob25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDciIG5hbWU9Im11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwOCIgbmFtZT0idW5tdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+VW5tdXRlIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwOSIgbmFtZT0ibXV0ZSBtb2RlcmF0b3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPk9ubHkgbW9kZXJhdG9ycyBjYW4gbXV0ZSBvciB1bm11dGUgYW4gdXNlciBnbG9iYWxseSEgVG8gbXV0ZSB5b3VyIG93biBtaWNyb3Bob25lOiBQbGVhc2UgdXNlIHRoZSBtaWNyb3Bob25lIGljb24gaW4geW91ciB2aWRlbyBwb2QhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTAiIG5hbWU9InBvbGxfbmFtZSI+CisgICAgPHZhbHVlPlBvbGwgTmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDExIiBuYW1lPSJwb2xsX25hbWUiPgorICAgIDx2YWx1ZT5Zb3U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMiIgbmFtZT0iYXJjaGl2ZWRfcG9sbHMiPgorICAgIDx2YWx1ZT5BcmNoaWV2ZWQgUG9sbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMyIgbmFtZT0iYWN0aXZlX3BvbGwiPgorICAgIDx2YWx1ZT5hY3RpdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNCIgbmFtZT0iY2hhcnRfc2ltcGxlIj4KKyAgICA8dmFsdWU+U2ltcGxlIENoYXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTUiIG5hbWU9ImNoYXJ0X3BpZSI+CisgICAgPHZhbHVlPlBpZSBDaGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE2IiBuYW1lPSJzaWduX3VwX3ZhbGlkYXRpb24iPgorICAgIDx2YWx1ZT5QbGVhc2UgZW50ZXIgZW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNyIgbmFtZT0iY2hhdF9ub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5OZXcgbWVzc2FnZShzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE4IiBuYW1lPSJwb2xsX2Nsb3NlIj4KKyAgICA8dmFsdWU+Q2xvc2UgUG9sbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE5IiBuYW1lPSJwb2xsX2Nsb3NlX2NvbmZpcm0iPgorICAgIDx2YWx1ZT5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gY2xvc2UgdGhpcyBQb2xsPyBObyBvbmUgd2lsbCBiZSBhYmxlIHRvIHZvdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMCIgbmFtZT0icG9sbF9kZWxldGUiPgorICAgIDx2YWx1ZT5EZWxldGUgUG9sbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIxIiBuYW1lPSJwb2xsX2RlbGV0ZV9jb25maXJtIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIFBvbGw/IFRoZSByZXN1bHRzIHdpbGwgYmUgZGVsZXRlZCBhcyB3ZWxsLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIyIiBuYW1lPSJsYW5ndWFnZV9jb2RlIj4KKyAgICA8dmFsdWU+TGFuZ3VhZ2UgSVNPIENvZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMyIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX3Blcm1pc3Npb24iPgorICAgIDx2YWx1ZT5BbGxvdy9EZW55IHJpZ2h0IHRvIGdpdmUgZXhjbHVzaXZlIGF1ZGlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI0IiBuYW1lPSJhbGxvd19leGNsdXNpdmVfYXVkaW9fcGVybWlzc2lvbiI+CisgICAgPHZhbHVlPkFsbG93IHVzZXIgdG8gZ2l2ZSBleGNsdXNpdmUgYXVkaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNSIgbmFtZT0iZGVueV9leGNsdXNpdmVfYXVkaW9fcGVybWlzc2lvbiI+CisgICAgPHZhbHVlPkRlbnkgdXNlciB0byBnaXZlIGV4Y2x1c2l2ZSBhdWRpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI2IiBuYW1lPSJleGNsX2F1ZGlvIGFwcGx5IHNlbGYgb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gZ2V0IGEgcGVybWlzc2lvbiBmb3IgZXhjbHVzaXZlIGF1ZGlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI3IiBuYW1lPSJleGNsX2F1ZGlvIGFwcGx5IG9mIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53YW50IHRoYXQgdGhlIG1vZGVyYXRvciBnaXZlcyBtZSBhIHBlcm1pc3Npb24gZm9yIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyOCIgbmFtZT0iZXhjbF9hdWRpbyBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5HaXZlIGEgcGVybWlzc2lvbiBmb3IgZXhjbHVzaXZlIGF1ZGlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI5IiBuYW1lPSJjYW1fcmVzb2x1dGlvbiI+CisgICAgPHZhbHVlPkNhbSByZXNvbHV0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzAiIG5hbWU9ImNhbV9yZXNvbHV0aW9uX2luZm8iPgorICAgIDx2YWx1ZT5DaGFuZ2luZyB0aGUgcmVzb2x1dGlvbiBhZmZlY3RzIGJhbmR3aWR0aCwgYmlnZ2VyIHBpY3R1cmUgbmVlZHMgbW9yZSBiYW5kd2l0aCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzMSIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2Vycm9yIj4KKyAgICA8dmFsdWU+WW91IGRvbid0IGhhdmUgdGhlIHJpZ2h0IHRvIGdpdmUgeW91cnNlbGYgb3Igb3RoZXJzIGV4Y2x1c2l2ZSBhdWRpby4gWW91IG5lZWQgdG8gYXBwbHkgZm9yIHRoZSByaWdodCBmcm9tIHRoZSBtb2RlcmF0b3Igb3IgYXNrIHRoZSBtb2RlcmF0b3IgdG8gZ2l2ZSB5b3UgZXhjbHVzaXZlIGF1ZGlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMyIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fYXNrIj4KKyAgICA8dmFsdWU+SSB3b3VsZCBsaWtlIHRvIGdldCB0aGUgcmlnaHQgZm9yIGV4Y2x1c2l2ZSBhdWRpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMzIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fYWN0aW9uIj4KKyAgICA8dmFsdWU+R2l2ZSBleGNsdXNpdmUgYXVkaW8gdG8gbWUgKGFsdGVybmF0aXZlbHkgY2xpY2sgb24geW91ciB2aWRlbyBwb2Qgb3IgcHJlc3MgRjEyKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM0IiBuYW1lPSJtaWNybyBpcyBvbiI+CisgICAgPHZhbHVlPk1pY3JvcGhvbmUgaXMgb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzUiIG5hbWU9Im1pY3JvIGlzIG9mZiI+CisgICAgPHZhbHVlPk1pY3JvcGhvbmUgaXMgbXV0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNiIgbmFtZT0iaGlkZV9jaGF0Ij4KKyAgICA8dmFsdWU+SGlkZSBjaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzciIG5hbWU9ImhpZGVfYWN0aXZpdGllc19hbmRfYWN0aW9ucyI+CisgICAgPHZhbHVlPkhpZGUgYWN0aXZpdGllczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM4IiBuYW1lPSJoaWRlX2ZpbGVzX2V4cGxvcmVyIj4KKyAgICA8dmFsdWU+SGlkZSBmaWxlcyBleHBsb3JlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM5IiBuYW1lPSJoaWRlX2FjdGlvbnNfbWVudSI+CisgICAgPHZhbHVlPkhpZGUgYWN0aW9ucyBtZW51PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDAiIG5hbWU9ImhpZGVfc2NyZWVuX3NoYXJpbmciPgorICAgIDx2YWx1ZT5IaWRlIHNjcmVlbiBzaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDEiIG5hbWU9ImhpZGVfd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkhpZGUgd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQyIiBuYW1lPSJzaG93IG1pY3JvcGhvbmUgc3RhdHVzIj4KKyAgICA8dmFsdWU+U2hvdyBtaWNybyBzdGF0dXMgaW4gdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MyIgbmFtZT0ibGF5b3V0X29wdGlvbnMiPgorICAgIDx2YWx1ZT5MYXlvdXQgb3B0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ0IiBuYW1lPSJjYWxlbmRhciBuZXcgYnV0dG9uIj4KKyAgICA8dmFsdWU+TmV3IEV2ZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDUiIG5hbWU9ImNhbGVuZGFyIHBhc3N3b3JkIGluZm8gdGV4dCI+CisgICAgPHZhbHVlPlBhc3N3b3JkIHByb3RlY3RlZCBhcmUgdGhlIGxpbmtzIHRvIHRoZSBjb25mZXJlbmNlIHRoYXQgYXJlIHNlbmQgdG8gdGhlIHBhcnRpY2lwZW50cyB3aGVuIHlvdSBzYXZlIHRoZSBjYWxlbmRhciBldmVudCwgbm90IHRoZSByb29tISBUaGF0IG1lYW5zIGlmIHlvdSBzYXZlIHRoZSBldmVudCBtdWx0aXBsZSB0aW1lcyBidXQgd2l0aCBkaWZmZXJlbnQgcGFzc3dvcmRzIGV2ZXJ5IHBhcnRpY2lwZW50IHJlY2VpdmVzIGEgbmV3IGxpbmsgdGhhdCBoYXMgYSBkaWZmZXJlbnQgcGFzc3dvcmQuIEJ1dCBvbGQgbGlua3Mgc3RpbGwgd29yayBvbmNlIHNlbmQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDYiIG5hbWU9ImNhbGVuZGFyIGVkaXQgYnV0dG9uIj4KKyAgICA8dmFsdWU+RWRpdCBkZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDciIG5hbWU9InNpcCBzaG93IGRpYWxlciI+CisgICAgPHZhbHVlPlNob3cgc2lwIGRpYWxlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ4IiBuYW1lPSJzaXAgY2FsbCI+CisgICAgPHZhbHVlPkNhbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0OSIgbmFtZT0iY2FsZW5kYXIgY29udGFjdCBsaXN0Ij4KKyAgICA8dmFsdWU+U2hvdyBjYWxlbmRhciBldmVudHMgb2YgY29udGFjdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUwIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5Zb3VyIGhvbWUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTEiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPlBsYW4geW91ciBtZWV0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUyIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5XYXRjaCByZWNvcmRpbmcgYW5kIGludGVydmlld3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MyIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+Q2hvb3NlIGFuZCBzdGFydCBhIHdlYi1jb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTQiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSB1c2VycyBhbmQgcmlnaHRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTUiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBjb25uZWN0aW9ucyBhbmQga2ljayB1c2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU2IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgdXNlcmdyb3VwczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU3IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgY29uZmVyZW5jZSByb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU4IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2Ugc3lzdGVtIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTkiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBsYWJlbHMgYW5kIHdvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIExEQVAgYW5kIEFEUyBjb25maWd1cmF0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYxIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5FeHBvcnQvSW1wb3J0IFN5c3RlbSBCYWNrdXBzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjIiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCBtb2RlcmF0aW9uIG9yIHRoZSByaWdodCB0byBkcmF3IG9uIHdoaXRlYm9hcmQgdG8gdXBsb2FkLCBhZGQsIGRlbGV0ZSBvciBsb2FkIGZpbGVzIGFuZCBmb2xkZXJzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYzIiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+RWRpdCB0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjQiIG5hbWU9InNhbHV0YXRpb24iPgorICAgIDx2YWx1ZT5Qcm9mPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjUiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UHVibGlzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY2IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlN0YXJ0IFB1Ymxpc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2NyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdG9wIFB1Ymxpc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2OCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5Ib3N0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjkiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UHVibGlzaCBBcHA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5QdWJsaXNoIElkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzEiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UmVkdWNlIHRoZSB3aWR0aCBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtb3ZlIGl0IGxlZnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5SZWR1Y2UgdGhlIGhlaWdodCBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtb3ZlIGl0IGJvdHRvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDczIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHVjZSB0aGUgeCBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtYWtlIGl0IHdpZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzQiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UmVkdWNlIHRoZSB5IG9mIHRoZSBTaGFyaW5nU2NyZWVuIGJlZm9yZSB5b3UgdHJ5IHRvIG1ha2UgaXQgaGlnaGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzUiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+RmlsbCB0aGVzZSBzZXR0aW5ncyBzdHJlYW0geW91ciBzY3JlZW4gZGF0YSB0byAzdGggcGFydHkgcHJvdmlkZXJzIGxpa2UganVzdGluLnR2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzYiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UGxlYXNlIHN0YXJ0IFNjcmVlbiBzaGFyaW5nIHRvIGJlIGFibGUgdG8gcHVibGlzaCBpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc3IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPk1vZGVyYXRvciBwZXJtaXNzaW9uIHJlcXVpcmVkIHRvIHN0YXJ0IHJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc4IiBuYW1lPSJubyByaWdodCBmb3IgZXhjbHVzaXZlIGF1ZGlvIj4KKyAgICA8dmFsdWU+WW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byBhcHBseSBleGNsdXNpdmUgYXVkaW8gdG8gYW55IHBhcnRpY2lwYW50LiBZb3UgbmVlZCBtb2RlcmF0aW9uIHJvbGUgb3IgdGhlIHJpZ2h0IGZvciBleGNsdXNpdmUgYXVkaW8gdG8gbWFrZSBhbnkgbWljcm9waG9uZSBleGNsdXNpdmUgdHVybmVkIG9uLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3OSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+VXBsb2FkIG5ldyBmaWxlIHRvIGZpbGUgZXhwbG9yZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+T3BlbiBuZXcgZGlhbG9nIHdpdGggc2hhcmluZyBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgxIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5BbiBleGlzdGluZyBtb2RlcmF0b3IgbXVzdCBhcHByb3ZlIGl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODIiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkFzayBtb2RlcmF0b3IgdG8gc2hhcmUgeW91ciB3ZWJjYW0vbWljcm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MyIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+R2F0aGVyIGZlZWRiYWNrIGJ5IGNyZWF0aW5nIGEgcG9sbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg0IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5QYXN0IGFuZCBjdXJyZW50IHBvbGwgcmVzdWx0cyBhcyBjaGFydHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Vm90ZSBpZiB0aGVyZSBpcyBhIHBvbGwgZm9yIHRoaXMgY29uZmVyZW5jZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODYiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkVkaXQgY2FtIGFuZCBtaWMgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NyIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Q29uZmlybSBhbmQgbGVhdmUgdGhlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4OCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Q2FsbCBleHRlcm5hbCBwZW9wbGUgdmlhIFZvSVAvU0lQPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODkiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlNlbmQgYW4gZW1haWwgd2l0aCBhIGRpcmVjdCBsaW5rIHRvIHRoaXMgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkwIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5DaGFuZ2UgeW91ciB3aGl0ZWJvYXJkIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTEiIG5hbWU9ImJhY2t1cCBhZG1pbiI+CisgICAgPHZhbHVlPk1heCB1cGxvYWQgc2l6ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkyIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5Bc2sgbW9kZXJhdG9yIHRvIHNoYXJlIHlvdXIgd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkzIiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5TdGFydCBQcml2YXRlIENoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NCIgbmFtZT0iYWxsX3ByaXZhdGVfY2hhdCI+CisgICAgPHZhbHVlPkFsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk1IiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IHN0YXJ0IGEgcHJpdmF0ZSBjaGF0IHdpdGggeW91cnNlbGYuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTYiIG5hbWU9InByaXZhdGUgY2hhdCI+CisgICAgPHZhbHVlPllvdSd2ZSBhbHJlYWR5IHN0YXJ0ZWQgYSBwcml2YXRlIGNoYXQgd2l0aCB0aGlzIHBhcnRpY2lwYW50LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk3IiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcHJpdmF0ZSBjaGF0PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk4IiBuYW1lPSJTZXJ2ZXJzIj4KKyAgICA8dmFsdWU+U2VydmVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk5IiBuYW1lPSJTZXJ2ZXJzIj4KKyAgICA8dmFsdWU+U2VydmVycyBwYXJ0aWNpcGF0aW5nIGluIGNsdXN0ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMCIgbmFtZT0iU2VydmVyIG5hbWUiPgorICAgIDx2YWx1ZT5TZXJ2ZXIgTmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAxIiBuYW1lPSJTZXJ2ZXIgQWRkcmVzcyI+CisgICAgPHZhbHVlPlNlcnZlciBBZGRyZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDIiIG5hbWU9IlNlcnZlciBkZXRhaWxzIj4KKyAgICA8dmFsdWU+U2VydmVyIGRldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMyIgbmFtZT0iU2VuZCBTTVMiPgorICAgIDx2YWx1ZT5TZW5kIFNNUzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA0IiBuYW1lPSJwdWJsaXNoaW5nX21lc3NhZ2UiPgorICAgIDx2YWx1ZT5QdWJsaXNoaW5nLiBVc2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA1IiBuYW1lPSJjbWRfbGluZV9hZG1pbiI+CisgICAgPHZhbHVlPlRvIHNhdmUgdGltZSBhbmQgaW50ZXJuZXQgdHJhZmZpYyB5b3UgY2FuIHVzZSBjb21tYW5kIGxpbmUgYWRtaW4gdG8gYmFja3VwL3Jlc3RvcmUvdXBncmFkZTpcbiAxKSBnbyB0byBPTSBpbnN0YWxsIGRpciAoZm9yIGV4LiAvb3B0L3JlZDUpIFxuIDIpIHN0b3AgT00gKGZvciBleC4gLi9yZWQ1LXNodXRkb3duLnNoKVxuIDMpIC4vYWRtaW4uc2ggLWIgLWZpbGUgfi90b2RheV9vbV9iYWNrdXAuemlwIChjcmVhdGUgYmFja3VwIG9mIGN1cnJlbnQgT00pXG4gNCkgZG93bmxvYWQgYXJjaGl2ZSB3aXRoIG5ldyBPTVxuIDUpIG12IC9vcHQvcmVkNSAvb3B0LnJlZDUuYmFrIChtb3ZlIHdvcmtpbmcgdmVyc2lvbiBvZiBPTSBqdXN0IGluIGNhc2UgOikpXG4gNikgZXh0cmFjdCBkb3dubG9hZGVkIE9NIHRvIHRoZSAvb3B0L3JlZDVcbiA3KSAuL2FkbWluLnNoIC1pIC1maWxlIH4vdG9kYXlfb21fYmFja3VwLnppcCAob3IgJy4vYWRtaW4uc2ggLWkgLWZpbGUgfi90b2RheV9vbV9iYWNrdXAuemlwIC0tZGItdHlwZSBteXNxbCAtLWRiLXVzZXIgb21fdXNlciAtLWRiLXBhc3Mgb21fdXNlcl9wYXNzJyBpbiBjYXNlIG9mIHlvdSBhcmUgdXNpbmcgbm9uLWRlZmF1bHQgREIgKVxuIDgpIHN0YXJ0IE9NXG48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNiIgbmFtZT0icHVibGljX3Jvb21fdG9vbHRpcCI+CisgICAgPHZhbHVlPlJvb21zIGNvbW1vbiB0byBhbGwgdXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA3IiBuYW1lPSJwcml2YXRlX3Jvb21fdG9vbHRpcCI+CisgICAgPHZhbHVlPlJvb21zIGNvbW1vbiB0byB0aGUgY3VycmVudCB1c2VyIGdyb3VwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDgiIG5hbWU9Im15X3Jvb21fdG9vbHRpcCI+CisgICAgPHZhbHVlPlJvb21zIG9mIHRoZSBjdXJyZW50IHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwOSIgbmFtZT0iY3JlYXRlX25ld19yb29tIj4KKyAgICA8dmFsdWU+Q3JlYXRlL01vZGlmeSBhcHBvaW50bWVudCBzcGVjaWFsIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxMCIgbmFtZT0ibXVsdGlwbGVfYWRkcmVzc2VzIj4KKyAgICA8dmFsdWU+WW91IGNhbiBlbnRlciBtdWx0aXBsZSBhZGRyZXNzZXMgaW4gdGhlIGZvcm1hdDogZmlyc3RuYW1lMSBsYXN0bmFtZTEgJmx0O2VtYWlsMSZndDssImZpcnN0bmFtZTIgbGFzdG5hbWUyIiAmbHQ7ZW1haWwyJmd0OywnZmlyc3RuYW1lMyBsYXN0bmFtZTMnICZsdDtlbWFpbDMmZ3Q7LCAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxMSIgbmFtZT0ic3RyZWFtX3ZvbHVtZSI+CisgICAgPHZhbHVlPkFkanVzdCBzdHJlYW0gdm9sdW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTIiIG5hbWU9Im1pY3JvcGhvbmVfdm9sdW1lIj4KKyAgICA8dmFsdWU+QWRqdXN0IG1pY3JvcGhvbmUgdm9sdW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTMiIG5hbWU9ImNoYXRfbW9kZXJhdGVkIj4KKyAgICA8dmFsdWU+SXMgY2hhdCBtb2RlcmF0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNCIgbmFtZT0iY2hhdF9tb2RlcmF0ZWQiPgorICAgIDx2YWx1ZT5BbGxvdyBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTUiIG5hbWU9ImNoYXRfb3BlbmVkIj4KKyAgICA8dmFsdWU+Q2hhdCBwYW5lbCBvcGVuZWQgYnkgZGVmYXVsdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE2IiBuYW1lPSJmaWxlc19vcGVuZWQiPgorICAgIDx2YWx1ZT5GaWxlcyBwYW5lbCBvcGVuZWQgYnkgZGVmYXVsdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE3IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gc2VjdGlvbiBsYXN0cGluZyI+CisgICAgPHZhbHVlPkxhc3QgcGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE4IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gc2VjdGlvbiBsYXN0cGluZyBpbmZvIj4KKyAgICA8dmFsdWU+RXZlcnkgc2xhdmUgc2VuZHMgYSBwaW5nIHRvIHRoZSBtYXN0ZXIgZXZlcnkgMyBzZWNvbmRzIChjb25maWd1cmFibGUpLiBTbGF2ZSBsYXN0UGluZyBtdXN0IGJlIHNtYWxsZXIgdGhlbiAxIG1pbnV0ZSBzbyB0aGF0IHRoZSBtYXN0ZXIgdXNlcyB0aGUgc2xhdmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTkiIG5hbWU9InNlcnZlciBhZG1pbiBwb3J0Ij4KKyAgICA8dmFsdWU+SFRUUCBQb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjAiIG5hbWU9InNlcnZlciBhZG1pbiB1c2VyIj4KKyAgICA8dmFsdWU+VXNlciAoU09BUC1BY2Nlc3MpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjEiIG5hbWU9InNlcnZlciBhZG1pbiBwYXNzd29yZCI+CisgICAgPHZhbHVlPlBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjIiIG5hbWU9InNlcnZlciBhZG1pbiB3ZWJhcHAgcGF0aCI+CisgICAgPHZhbHVlPldlYmFwcCBwYXRoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjMiIG5hbWU9InNlcnZlciBhZG1pbiBwcm90b2NvbCI+CisgICAgPHZhbHVlPlByb3RvY29sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjQiIG5hbWU9InNlcnZlciBhZG1pbiBwaW5nIHJ1bm5pbmciPgorICAgIDx2YWx1ZT5QaW5nIHJ1bm5pbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyNSIgbmFtZT0ic2VydmVyIGFkbWluIGFjdGl2ZSI+CisgICAgPHZhbHVlPkFjdGl2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI2IiBuYW1lPSJnZW5lcmF0ZV9oYXNoIj4KKyAgICA8dmFsdWU+R2VuZXJhdGUgVVJMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjciIG5hbWU9Im5ldHdvcmsgdGVzdGluZyBsaW5rIj4KKyAgICA8dmFsdWU+TmV0d29yayB0ZXN0aW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjgiIG5hbWU9InJvb21fb3B0aW9ucyI+CisgICAgPHZhbHVlPkF1dG8gc2VsZWN0IGludGVydmlldyB2aWRlbyBwb2Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyOSIgbmFtZT0iZm9udF91bmRlcmxpbmUiPgorICAgIDx2YWx1ZT5VbmRlcmxpbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMCIgbmFtZT0iZm9udF9zdHlsZSI+CisgICAgPHZhbHVlPkZvbnQgc3R5bGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMSIgbmFtZT0iYWxsb3dfZm9udF9zdHlsZXMiPgorICAgIDx2YWx1ZT5BbGxvdyBmb250IHN0eWxlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMyIiBuYW1lPSJmb250X2NvbG9yIj4KKyAgICA8dmFsdWU+Rm9udCBjb2xvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMzIiBuYW1lPSJoeXBlcmxpbmsiPgorICAgIDx2YWx1ZT5IeXBlcmxpbms8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNCIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbiI+CisgICAgPHZhbHVlPlNob3cgc2Vzc2lvbiBzdGF0aXN0aWNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzUiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW4iPgorICAgIDx2YWx1ZT5TZXNzaW9uIGRldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNiIgbmFtZT0ic3lzdGVtX2ltcG9ydCI+CisgICAgPHZhbHVlPlN5c3RlbSBpbXBvcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNyIgbmFtZT0iaW5jbHVkZV9pbnRvX2JhY2t1cCI+CisgICAgPHZhbHVlPkluY2x1ZGUgdXBsb2FkZWQgZmlsZXMgYW5kIHJlY29yZGluZ3MgaW4gYmFja3VwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzgiIG5hbWU9InJvb21fYWRtaW5fc2lwIj4KKyAgICA8dmFsdWU+RW5hYmxlIFNJUCB0cmFuc3BvcnQgaW4gdGhlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzOSIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2NvbmZpcm0iPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gcHJvdmlkZSB0aGlzIHVzZXIgYW4gZXhjbHVzaXZlIGF1ZGlvPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTQwIiBuYW1lPSJub190aW1lem9uZSI+CisgICAgPHZhbHVlPlBsZWFzZSBzcGVjaWZ5IHlvdXIgdGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU0NSIgbmFtZT0iY29udGVudF9pc19zYXZpbmciPgorICAgIDx2YWx1ZT5Db250ZW50IGlzIFNhdmluZywgUGxlYXNlIHdhaXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+Cis8L2xhbmd1YWdlPgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9sYW5ndWFnZXMvcnVzc2lhbi54bWwgYi9XZWJDb250ZW50L2xhbmd1YWdlcy9ydXNzaWFuLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NGRlYTBmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9sYW5ndWFnZXMvcnVzc2lhbi54bWwKQEAgLTAsMCArMSw0NjUyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorCis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitUaGlzIEZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgYnkgdGhlIExhbmd1YWdlRWRpdG9yIAordG8gYWRkIG5ldyBMYW5ndWFnZXMgb3IgbW9kaWZ5L2N1c3RvbWl6ZSBpdCB1c2UgdGhlIExhbmd1YWdlRWRpdG9yIAorc2VlIGh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9MYW5ndWFnZUVkaXRvci5odG1sIGZvciBEZXRhaWxzIAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMtLT4KKzxsYW5ndWFnZSB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczpub05hbWVzcGFjZVNjaGVtYUxvY2F0aW9uPSJsYW5ndWFnZS54c2QiPgorICA8c3RyaW5nIGlkPSIxIiBuYW1lPSJjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+0JrQvtC90YTQtdGA0LXQvdGG0LjRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyIiBuYW1lPSJtZWV0aW5nIj4KKyAgICA8dmFsdWU+0KHQvtCy0LXRidCw0L3QuNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMiIG5hbWU9ImNsYXNzcm9vbSI+CisgICAgPHZhbHVlPtCb0LXQutGG0LjQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0IiBuYW1lPSJzZXR0aW5ncyI+CisgICAgPHZhbHVlPtCj0YHRgtCw0L3QvtCy0LrQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1IiBuYW1lPSJiZW51dHplciI+CisgICAgPHZhbHVlPtCf0YDQvtGE0LjQu9GMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYiIG5hbWU9ImFkbWluIj4KKyAgICA8dmFsdWU+0JDQtNC80LjQvdC40YHRgtGA0LjRgNC+0LLQsNC90LjQtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3IiBuYW1lPSJzdG9wIj4KKyAgICA8dmFsdWU+0J/QsNGD0LfQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT7Ql9Cw0L/QuNGB0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOSIgbmFtZT0ibm9maWxlIj4KKyAgICA8dmFsdWU+0J3QtdGCINC00LDQvdC90YvRhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMCIgbmFtZT0icmVjb3JkYnl0ZWFjaGVyIj4KKyAgICA8dmFsdWU+0KTRg9C90LrRhtC40Y8g0LfQsNC/0LjRgdC4INGC0L7Qu9GM0LrQviDQtNC70Y8g0LvQtdC60YLQvtGA0L7QsjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMSIgbmFtZT0iY29ubmVjdGVkdXNlcnMiPgorICAgIDx2YWx1ZT7QodCy0Y/Qt9Cw0L3QvdGL0Lkg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GMOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMiIgbmFtZT0ic3RhcnRjb25mIj4KKyAgICA8dmFsdWU+0J3QsNGH0LDRgtGMINC60L7QvdGE0LXRgNC10L3RhtC40Y48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMiIG5hbWU9Im15bmFtZSI+CisgICAgPHZhbHVlPtCc0L7QtSDQuNC80Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQiIG5hbWU9InZpZGVvY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPtCS0LjQtNC10L7QutC+0L3RhNC10YDQtdC90YbQuNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1IiBuYW1lPSJpbXBvcnQiPgorICAgIDx2YWx1ZT7Ql9Cw0LPRgNGD0LfQuNGC0Ywg0YTQsNC50Ls8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYiIG5hbWU9InJlZnJlc2hmaWxlcyI+CisgICAgPHZhbHVlPtCX0LDQvdC+0LLQviDQt9Cw0LPRgNGD0LfQuNGC0Ywg0YHQv9C40YHQvtC6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3IiBuYW1lPSJ0b21haW5maWxlIj4KKyAgICA8dmFsdWU+0Jog0YHQv9C40YHQutGDINC00L7QutGD0LzQtdC90YLQvtCyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4IiBuYW1lPSJuZXdwb2xsIj4KKyAgICA8dmFsdWU+0J3QvtCy0YvQuSDQvtC/0YDQvtGBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5IiBuYW1lPSJuZXdwb2xsaGVhZGVyIj4KKyAgICA8dmFsdWU+0J3QvtCy0YvQuSDQvtC/0YDQvtGBINC00LvRjyDQutC+0L3RhNC10YDQtdC90YbQuNC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwIiBuYW1lPSJxdWVzdGlvbiI+CisgICAgPHZhbHVlPtCS0L7Qv9GA0L7RgTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEiIG5hbWU9InBvbGx0eXBlIj4KKyAgICA8dmFsdWU+0JLQuNC0INC+0L/RgNC+0YHQsDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIiIG5hbWU9ImNyZWF0ZSI+CisgICAgPHZhbHVlPtCh0L7Qt9C00LDRgtGMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzIiBuYW1lPSJpbmZvbWVzc2FnZSI+CisgICAgPHZhbHVlPtCY0L3RhNC+0YDQvNCw0YbQuNGPOiDQutCw0LbQtNGL0Lkg0L/QvtC00LrQu9GO0YfRkdC90L3Ri9C5INGD0YfQsNGB0YLQvdC40Log0L/QvtC70YPRh9Cw0LXRgiDRgdC+0L7QsdGJ0LXQvdC40LUg0YEg0L3QvtCy0YvQvCDQvtC/0YDQvtGB0L7QvC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQiIG5hbWU9ImNyZWF0cG9sbCI+CisgICAgPHZhbHVlPtCh0L7Qt9C00LDRgtGMINC+0L/RgNC+0YE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUiIG5hbWU9ImNhbmNlbCI+CisgICAgPHZhbHVlPtCe0YLQvNC10L3QuNGC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYiIG5hbWU9Inllc25vIj4KKyAgICA8dmFsdWU+0JTQsC/QndC10YI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjciIG5hbWU9Im51bWVyaWMiPgorICAgIDx2YWx1ZT7Qp9C40YHQu9C+IDEgLSAxMDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOCIgbmFtZT0icG9sbCI+CisgICAgPHZhbHVlPtCe0L/RgNC+0YE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkiIG5hbWU9Im1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT7QlNC70Y8g0YHQvtC30LTQsNC90LjRjyDQvtC/0YDQvtGB0LAg0JLRiyDQtNC+0LvQttC90Ysg0LHRi9GC0Ywg0LzQvtC00LXRgNCw0YLQvtGA0L7QvC/Qu9C10LrRgtC+0YDQvtC8INCyINGN0YLQvtC5INC60L7QvNC90LDRgtC1LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMCIgbmFtZT0idm90ZSI+CisgICAgPHZhbHVlPtCS0Ysg0L/RgNC+0LPQvtC70L7RgdC+0LLQsNC70LguPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxIiBuYW1lPSJhbHJlYWR5dm90ZWQiPgorICAgIDx2YWx1ZT7QktGLINGD0LbQtSDQv9GA0L7Qs9C+0LvQvtGB0L7QstCw0LvQuCDQsiDQtNCw0L3QvdC+0Lwg0L7Qv9GA0L7RgdC1LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMiIgbmFtZT0idm90aW5nIj4KKyAgICA8dmFsdWU+0J/RgNC+0LPQvtC70L7RgdC+0LLQsNGC0YwhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzIiBuYW1lPSJhbnN3ZXIiPgorICAgIDx2YWx1ZT7QktCw0Ygg0L7RgtCy0LXRgjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQiIG5hbWU9InllcyI+CisgICAgPHZhbHVlPtCU0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUiIG5hbWU9Im5vIj4KKyAgICA8dmFsdWU+0J3QtdGCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2IiBuYW1lPSJxdWVzdGlvbndhbnQiPgorICAgIDx2YWx1ZT7RhdC+0YfRgyDQt9C90LDRgtGMOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNyIgbmFtZT0icG9sbHJlc3VsdHMiPgorICAgIDx2YWx1ZT7QoNC10LfRg9C70YzRgtCw0YLRiyDQvtC/0YDQvtGB0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgiIG5hbWU9InF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+0JLQvtC/0YDQvtGBOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOSIgbmFtZT0icmVzdWx0cyI+CisgICAgPHZhbHVlPtCe0YLQstC10YLRizo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAiIG5hbWU9ImFuc3dlcnMiPgorICAgIDx2YWx1ZT7QoNC10LfRg9C70YzRgtCw0YI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxIiBuYW1lPSJub3BvbGwiPgorICAgIDx2YWx1ZT7QkiDQvdCw0YHRgtC+0Y/RidC10LUg0LLRgNC10LzRjyDQvtC/0YDQvtGB0LAg0L3QtSDRgdGD0YnQtdGB0YLQstGD0LXRgi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIiIG5hbWU9InZvdGluZ3MiPgorICAgIDx2YWx1ZT7Qn9GA0L7Qs9C+0LvQvtGB0L7QstCw0YLRjCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMiIG5hbWU9Im1lZXRpbmciPgorICAgIDx2YWx1ZT7QodC+0LLQtdGJ0LDQvdC40LUgKNC80LDQutGBLiA0INC80LXRgdGC0LApPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0IiBuYW1lPSJjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+0JrQvtC90YTQtdGA0LXQvdGG0LjRjyAo0LzQsNC60YEuIDUwINC80LXRgdGCKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NSIgbmFtZT0idHlwZSI+CisgICAgPHZhbHVlPtCi0LjQvzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NiIgbmFtZT0icmVtYWluaW5nc2VhdHMiPgorICAgIDx2YWx1ZT7QntGB0YLQsNCy0YjQuNC10YHRjyDQvNC10YHRgtCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3IiBuYW1lPSJhbHJlYWR5Y2hvc2VuIj4KKyAgICA8dmFsdWU+0KPQttC1INC/0YDQuNGB0LLQvtC10L3QvjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OCIgbmFtZT0iZW50ZXIiPgorICAgIDx2YWx1ZT7QktGF0L7QttC00LXQvdC40Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkiIG5hbWU9Im1vZGxlYXZlIj4KKyAgICA8dmFsdWU+0JzQvtC00LXRgNCw0YLQvtGAL9C70LXQutGC0L7RgCDRjdGC0L7QuSDQutC+0LzQvdCw0YLRiyDQv9C+0LrQuNC00LDQtdGCINGB0L7QstC10YnQsNC90LjQtS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAiIG5hbWU9InN5c3RlbW1lc3NhZ2UiPgorICAgIDx2YWx1ZT7QodC40YHRgtC10LzQvdC+0LUg0YHQvtC+0LHRidC10L3QuNC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxIiBuYW1lPSJjaG9zc2VkZXZpY2UiPgorICAgIDx2YWx1ZT7QktGL0LHQvtGAINGD0YHRgtGA0L7QudGB0YLQstCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyIiBuYW1lPSJjaG9vc2VjYW0iPgorICAgIDx2YWx1ZT7QktGL0LHRgNCw0YLRjCDQutCw0LzQtdGA0YM6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzIiBuYW1lPSJjaG9vc2VtaWMiPgorICAgIDx2YWx1ZT7QktGL0LHRgNCw0YLRjCDQvNC40LrRgNC+0YTQvtC9OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NCIgbmFtZT0ib2siPgorICAgIDx2YWx1ZT5PSzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NSIgbmFtZT0iY2FuY2VsMiI+CisgICAgPHZhbHVlPtCe0YLQvNC10L3QuNGC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYiIG5hbWU9InJlY29uZWVjdG5lZWRlZCI+CisgICAgPHZhbHVlPtCn0YLQvtCx0Ysg0LDQutGC0LjQstC40YDQvtCy0LDRgtGMINC40LfQvNC10L3QtdC90LjRjywg0LLQvtC50LTQuNGC0LUg0LfQsNC90L7QstC+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3IiBuYW1lPSJlZGl0c2V0dXAiPgorICAgIDx2YWx1ZT7QmNC30LzQtdC90LjRgtGMINGD0YHRgtCw0L3QvtCy0LrQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OCIgbmFtZT0iY291cnNlIj4KKyAgICA8dmFsdWU+0JrRg9GA0YE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5IiBuYW1lPSJsYW5ndWFnZSI+CisgICAgPHZhbHVlPtCv0LfRi9C6INC60YPRgNGB0LA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwIiBuYW1lPSJvazIiPgorICAgIDx2YWx1ZT5PSzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MSIgbmFtZT0iY2FuY2VsMyI+CisgICAgPHZhbHVlPtCe0YLQvNC10L3QuNGC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIiIG5hbWU9ImNsZWFyd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPtCe0YfQuNGB0YLQuNGC0Ywg0LTQvtGB0LrRgzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MyIgbmFtZT0iY2xlYXJ3aGl0ZWJvYXJkcXVlc3Rpb24iPgorICAgIDx2YWx1ZT7QntGH0LjRgdGC0LjRgtGMINC00L7RgdC60YMg0L/QtdGA0LXQtCDQtNC+0LHQsNCy0LvQtdC90LjQtdC8INC90L7QstC+0LPQviDQuNC30L7QsdGA0LDQttC10L3QuNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0IiBuYW1lPSJkb250YXNrYWdhaW4iPgorICAgIDx2YWx1ZT7QkdC+0LvRjNGI0LUg0L3QtSDRgdC/0YDQsNGI0LjQstCw0YLRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NSIgbmFtZT0ibm8iPgorICAgIDx2YWx1ZT7QvdC10YI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYiIG5hbWU9ImVkaXRzZXR1cDIiPgorICAgIDx2YWx1ZT7QoNC10LTQsNC60YLQuNGA0L7QstCw0YLRjCDRg9GB0YLQsNC90L7QstC60Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjciIG5hbWU9Im5lZWRjb25maXJtYXRpb253aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+0JfQsNC/0YDQvtGB0LjRgtGMINC/0L7QtNGC0LLQtdGA0LbQtNC10L3QuNC1INC/0LXRgNC10LQg0L7Rh9C40YHRgtC60L7QuSDQtNC+0YHQutC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4IiBuYW1lPSJ1c2VyaW5mbyI+CisgICAgPHZhbHVlPtCY0L3RhNC+0YDQvNCw0YbQuNGPINC+INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OSIgbmFtZT0iY2xlYXJkcmF3YXJlYSI+CisgICAgPHZhbHVlPtCe0YfQuNGB0YLQuNGC0Ywg0L7QsdC70LDRgdGC0Ywg0YDQuNGB0L7QstCw0L3QuNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwIiBuYW1lPSJ1bmRvIj4KKyAgICA8dmFsdWU+0J7RgtC80LXQvdCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxIiBuYW1lPSJyZWRvIj4KKyAgICA8dmFsdWU+0JLQvtGB0YHRgtCw0L3QvtCy0LvQtdC90LjQtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MiIgbmFtZT0ic2VsZWN0b2JqZWN0Ij4KKyAgICA8dmFsdWU+0JLRi9Cx0YDQsNGC0Ywg0L7QsdGK0LXQutGCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczIiBuYW1lPSJ0ZXh0Ij4KKyAgICA8dmFsdWU+0KLQtdC60YHRgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NCIgbmFtZT0icGFpbnQiPgorICAgIDx2YWx1ZT7QoNC40YHQvtCy0LDQvdC40LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUiIG5hbWU9ImRyYXdsaW5lIj4KKyAgICA8dmFsdWU+0J/RgNC+0LLQtdGB0YLQuCDQu9C40L3QuNGOPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2IiBuYW1lPSJkcmF3dSI+CisgICAgPHZhbHVlPtCf0L7QtNGH0LXRgNC60L3Rg9GC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzciIG5hbWU9InJlY3QiPgorICAgIDx2YWx1ZT7Qn9GA0Y/QvNC+0YPQs9C+0LvRjNC90LjQujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OCIgbmFtZT0iZWxsaXBzZSI+CisgICAgPHZhbHVlPtCt0LvQu9C40L/RgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OSIgbmFtZT0iYXJyb3ciPgorICAgIDx2YWx1ZT7QodGC0YDQtdC70LrQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MCIgbmFtZT0iZGVsZXRlY2hvc2VuIj4KKyAgICA8dmFsdWU+0KPQtNCw0LvQuNGC0Ywg0LLRi9Cx0YDQsNC90L3Ri9C5INGN0LvQtdC80LXQvdGCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxIiBuYW1lPSJhcHBsaXltb2QiPgorICAgIDx2YWx1ZT7Ql9Cw0L/RgNC+0YEg0YTRg9C90LrRhtC40Lgg0LzQvtC00LXRgNCw0YLQvtGA0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIiIG5hbWU9ImFwcGx5Ij4KKyAgICA8dmFsdWU+0JfQsNC/0YDQvtGBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzIiBuYW1lPSJjYW5jZWwiPgorICAgIDx2YWx1ZT7QntGC0LzQtdC90LjRgtGMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0IiBuYW1lPSJtb2QiPgorICAgIDx2YWx1ZT7Ql9Cw0L/RgNC+0YHQuNGC0Ywg0YQt0YbQuNC4INC80L7QtNC10YDQsNGC0L7RgNCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1IiBuYW1lPSJjbG9zZSI+CisgICAgPHZhbHVlPtCX0LDQutGA0YvRgtGMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2IiBuYW1lPSJpdGFsaWMiPgorICAgIDx2YWx1ZT7QmtGD0YDRgdC40LI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODciIG5hbWU9ImJvbGQiPgorICAgIDx2YWx1ZT7QltC40YDQvdGL0Lkg0YjRgNC40YTRgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OCIgbmFtZT0id2FpdGluZyI+CisgICAgPHZhbHVlPtCe0LbQuNC00LDQvdC40LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkiIG5hbWU9ImFwcGx5TWVzc2FnZSI+CisgICAgPHZhbHVlPtCj0YfQsNGB0YLQvdC40Log0LbQtdC70LDQtdGCINC30LDQv9GA0L7RgdC40YLRjCDRhNGD0L3QutGG0LjRjiDQvNC+0LTQtdGA0LDRgtC+0YDQsDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAiIG5hbWU9ImFjY2VwdCI+CisgICAgPHZhbHVlPtCh0L7Qs9C70LDRgdC40LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTEiIG5hbWU9InJlamVjdCI+CisgICAgPHZhbHVlPtCe0YLQutC70L7QvdC10L3QuNC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyIiBuYW1lPSJjYW5jZWwiPgorICAgIDx2YWx1ZT7QntGC0LzQtdC90LjRgtGMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzIiBuYW1lPSJzZW5kbW9kcmVxdWVzdG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7QntGC0YHRi9C70LrQsCDQt9Cw0L/RgNC+0YHQsCDRgdC70LXQtNGD0Y7RidC10LzRgyDRg9GH0LDRgdGC0L3QuNC60YM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQiIG5hbWU9ImFjY2VwdCI+CisgICAgPHZhbHVlPtCS0YvQtNCw0L3QviDRgdC+0LPQu9Cw0YHQuNC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1IiBuYW1lPSJyZWplY3QiPgorICAgIDx2YWx1ZT7QntGC0LrQu9C+0L3QtdC90L48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYiIG5hbWU9ImNoYW5nZW1vZCI+CisgICAgPHZhbHVlPtCX0LDQvNC10L3QsCDQvNC+0LTQtdGA0LDRgtC+0YDQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NyIgbmFtZT0ibm9ubW9kZXJyb3JtZXNzYWdlIj4KKyAgICA8dmFsdWU+0JLRiyDQvdC1INGP0LLQu9GP0LXRgtC10YHRjCDQvNC+0LTQtdGA0LDRgtC+0YDQvtC8INC00LDQvdC90L7Qs9C+INC60YPRgNGB0LAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4IiBuYW1lPSJtb2RlcmF0b3IiPgorICAgIDx2YWx1ZT7QnNC+0LTQtdGA0LDRgtC+0YA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5IiBuYW1lPSJyb29tZnVsbG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7QkiDRjdGC0L7QuSDQutC+0LzQvdCw0YLQtSDQvdC10YIg0LzQtdGB0YIuINCY0LfQstC40L3QuNGC0LUsINC/0L7Qv9GA0L7QsdGD0LnRgtC1INC10YnQtSDRgNCw0Lcg0YfQtdGA0LXQtyDQvdC10LrQvtGC0L7RgNC+0LUg0LLRgNC10LzRjy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwIiBuYW1lPSJlbGxsaXBzZSI+CisgICAgPHZhbHVlPtCt0LvQu9C40L/RgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEiIG5hbWU9ImNsb3NlIj4KKyAgICA8dmFsdWU+0JfQsNC60YDRi9GC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyIiBuYW1lPSJBdXRoRXJyb3IiPgorICAgIDx2YWx1ZT7QntGI0LjQsdC60LAg0L/RgNC4INCy0LLQvtC00LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzIiBuYW1lPSJtaW40dXNlcm5hbWUiPgorICAgIDx2YWx1ZT7QmNC80Y8g0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPINC00L7Qu9C20L3QviDRgdC+0YHRgtC+0Y/RgtGMINC80LjQvdC40LzRg9C8INC40LcgNCDQt9C90LDQutC+0LI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0IiBuYW1lPSJtaW40cGFzcyI+CisgICAgPHZhbHVlPtCf0LDRgNC+0LvRjCDQtNC+0LvQttC10L0g0YHQvtGB0YLQvtGP0YLRjCDQvNC40L3QuNC80YPQvCDQuNC3IDQg0LfQvdCw0LrQvtCyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNSIgbmFtZT0idXNlcm5hbWV0YWtlbiI+CisgICAgPHZhbHVlPtCt0YLQviDQuNC80Y8g0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPINGD0LbQtSDQt9Cw0L3Rj9GC0L48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2IiBuYW1lPSJlbWFpbHRha2VuIj4KKyAgICA8dmFsdWU+0K3Qu9C10LrRgtGA0L7QvdC90YvQuSDQsNC00YDQtdGBINGD0LbQtSDQt9Cw0YDQtdCz0LjRgdGC0YDQuNGA0L7QstCw0L08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3IiBuYW1lPSJlbWFpbHRha2VuIj4KKyAgICA8dmFsdWU+0JLRi9C00LDQtdGC0YHRjyDQvtGI0LjQsdC60LAsINC/0YDQvtGB0YzQsdCwINGB0LLRj9C30LDRgtGM0YHRjyDRgSDQsNC00LzQuNC90LjRgdGC0YDQsNGC0LjQstC90L7QuSDQs9GA0YPQv9C/0L7QuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgiIG5hbWU9IkF1dGhsb2dpbiI+CisgICAgPHZhbHVlPtCS0YXQvtC0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOSIgbmFtZT0iQXV0aHVzZXIiPgorICAgIDx2YWx1ZT7Qn9C+0LvRjNC30L7QstCw0YLQtdC70Yw6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMCIgbmFtZT0iQXV0aHBhc3MiPgorICAgIDx2YWx1ZT7Qn9Cw0YDQvtC70Yw6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMSIgbmFtZT0iQXV0aGxhbmciPgorICAgIDx2YWx1ZT7Qr9C30YvQujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIiIG5hbWU9IkF1dGhyZWciPgorICAgIDx2YWx1ZT7QktC+0LnRgtC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMyIgbmFtZT0icmVnZm9ybWhlYWQiPgorICAgIDx2YWx1ZT7Qn9C+0LTQv9C40YHQutCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNCIgbmFtZT0icmVnZm9ybXVzZXIiPgorICAgIDx2YWx1ZT7Qn9C+0LvRjNC30L7QstCw0YLQtdC70Yw6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNSIgbmFtZT0icmVnZm9ybXBhc3MiPgorICAgIDx2YWx1ZT7Qn9Cw0YDQvtC70Yw6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNiIgbmFtZT0icmVnZm9ybXJldHlwZSI+CisgICAgPHZhbHVlPtCf0L7QstGC0L7RgNC40YLRjDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3IiBuYW1lPSJyZWdmb3JtZmlyc3RuYW1lIj4KKyAgICA8dmFsdWU+0JjQvNGPOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgiIG5hbWU9InJlZ2Zvcm1sYXN0bmFtZSI+CisgICAgPHZhbHVlPtCk0LDQvNC40LvQuNGPOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkiIG5hbWU9InJlZ2Zvcm1tYWlsIj4KKyAgICA8dmFsdWU+RS1NYWlsOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAiIG5hbWU9InJlZ2Zvcm1zdGF0ZSI+CisgICAgPHZhbHVlPtCh0YLRgNCw0L3QsDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxIiBuYW1lPSJyZWdmb3JtYnRuMSI+CisgICAgPHZhbHVlPtCg0LXQs9C40YHRgtGA0LjRgNC+0LLQsNGC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyIiBuYW1lPSJyZWdmb3JtYnRuMiI+CisgICAgPHZhbHVlPtCe0YLQvNC10L3QuNGC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzIiBuYW1lPSJBdXRoYnRuMiI+CisgICAgPHZhbHVlPtCg0LXQs9C40YHRgtGA0LDRhtC40Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT7QndCwINCz0LvQsNCy0L3Rg9GOPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNSIgbmFtZT0idXNlcmFkbWluIj4KKyAgICA8dmFsdWU+0J/QvtC70YzQt9C+0LLQsNGC0LXQu9C4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNiIgbmFtZT0iZ3JvdXBhZG1pbiI+CisgICAgPHZhbHVlPtCT0YDRg9C/0L/RizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjciIG5hbWU9Im9yZ2FkbWluIj4KKyAgICA8dmFsdWU+0J7RgNCz0LDQvdC40LfQsNGG0LjQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgiIG5hbWU9ImhlYWRjb25mIj4KKyAgICA8dmFsdWU+0JrQvtC80L3QsNGC0Ysg0YHQvtCy0LXRidCw0L3QuNC5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOSIgbmFtZT0iY29uZl9wdWIiPgorICAgIDx2YWx1ZT7Qn9GD0LHQu9C40YfQvdC+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMCIgbmFtZT0iaGVhZF9vcmciPgorICAgIDx2YWx1ZT7QntGA0LPQsNC90LjQt9Cw0YbQuNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMSIgbmFtZT0iYnRuX2VudGVycm9vbSI+CisgICAgPHZhbHVlPtCS0YXQvtC0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMiIgbmFtZT0idXNlcmFsdGVyc2VsZl9sb2dpbiI+CisgICAgPHZhbHVlPtCb0L7Qs9C40L08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Bhc3MiPgorICAgIDx2YWx1ZT7Qn9Cw0YDQvtC70Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Bhc3NyZXR5cGUiPgorICAgIDx2YWx1ZT7Qn9C+0LLRgtC+0YDQuNGC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2ZpcnN0bmFtZSI+CisgICAgPHZhbHVlPtCY0LzRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYiIG5hbWU9InVzZXJhbHRlcnNlbGZfbGFzdG5hbWUiPgorICAgIDx2YWx1ZT7QpNCw0LzQuNC70LjRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzciIG5hbWU9InVzZXJhbHRlcnNlbGZfZW1haWwiPgorICAgIDx2YWx1ZT5FLU1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2JpcnRoIj4KKyAgICA8dmFsdWU+0JTQsNGC0LAg0YDQvtC20LTQtdC90LjRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkiIG5hbWU9InVzZXJhbHRlcnNlbGZfc3RyZWV0bm8iPgorICAgIDx2YWx1ZT7Qo9C70LjRhtCwL+KEliDQtNC+0LzQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDAiIG5hbWU9InVzZXJhbHRlcnNlbGZfdG93biI+CisgICAgPHZhbHVlPtCY0L3QtNC10LrRgS/Qs9C+0YDQvtC0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MSIgbmFtZT0idXNlcmFsdGVyc2VsZl9zdGF0ZSI+CisgICAgPHZhbHVlPtCh0YLRgNCw0L3QsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIiIG5hbWU9InVzZXJhbHRlcnNlbGZfYWRyZXNzY29tbWVudCI+CisgICAgPHZhbHVlPtCY0L3RhNC+0YDQvNCw0YbQuNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MyIgbmFtZT0idXNlcmFsdGVyc2VsZl9oZWFkZXIiPgorICAgIDx2YWx1ZT7QlNCw0L3QvdGL0LUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NCIgbmFtZT0ic2F2ZW1lbnViYXJfc2F2ZWxhYmVsIj4KKyAgICA8dmFsdWU+0KHQvtGF0YDQsNC90LjRgtGMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NSIgbmFtZT0ic2F2ZW1lbnViYXJfc2F2ZWxhYmVsIj4KKyAgICA8dmFsdWU+0J/RgNC+0YbQtdGB0YEg0YHQvtGF0YDQsNC90LXQvdC40Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2IiBuYW1lPSJhZG1pbl91c2VybGlzdF91c2VyX2lkIj4KKyAgICA8dmFsdWU+0JjQtNC10L3Rgi4g4oSWINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDciIG5hbWU9ImFkbWluX3VzZXJsaXN0X2xvZ2luIj4KKyAgICA8dmFsdWU+0JvQvtCz0LjQvTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgiIG5hbWU9ImFkbWluX3VzZXJsaXN0X2ZpcnN0bmFtIj4KKyAgICA8dmFsdWU+0JjQvNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OSIgbmFtZT0iYWRtaW5fdXNlcmxpc3RfbGFzdG5hbWUiPgorICAgIDx2YWx1ZT7QpNCw0LzQuNC70LjRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAiIG5hbWU9InR1cm5vdmVybGlzdF9uZXh0Ij4KKyAgICA8dmFsdWU+0LLQv9C10YDQtdC0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MSIgbmFtZT0idHVybm92ZXJsaXN0X3ByZSI+CisgICAgPHZhbHVlPtC90LDQt9Cw0LQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyIiBuYW1lPSJzYXZlY29udGVudF9jb25maXJtIj4KKyAgICA8dmFsdWU+0KPQtNCw0LvQuNGC0Ywg0LfQsNC/0LjRgdGMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MyIgbmFtZT0ic2F2ZWNvbnRlbnRfY29uZmlybV9jYW5jZWxfYnRuIj4KKyAgICA8dmFsdWU+0J7RgtC80LXQvdC40YLRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTQiIG5hbWU9InNhdmVjb250ZW50X2NvbmZpcm1fY29uZmlybV9idG4iPgorICAgIDx2YWx1ZT7Qo9C00LDQu9C40YLRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTUiIG5hbWU9InNhdmVtZW51YmFyX2FkZGxhYmVsIj4KKyAgICA8dmFsdWU+0KHQvtC30LTQsNGC0Ywg0LfQsNC/0LjRgdGMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NiIgbmFtZT0ic2F2ZW1lbnViYXJfcmVsb2FkbGFiZWwiPgorICAgIDx2YWx1ZT7Ql9Cw0L3QvtCy0L4g0LfQsNCz0YDRg9C30LjRgtGMINC30LDQv9C40YHRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTciIG5hbWU9InNhdmVtZW51YmFyX2RlbGV0ZWxhYmVsIj4KKyAgICA8dmFsdWU+0KPQtNCw0LvQuNGC0Ywg0LfQsNC/0LjRgdGMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1OCIgbmFtZT0idXNlcmFsdGVyX2FkbWluX3N0YXR1cyI+CisgICAgPHZhbHVlPtCh0YLQsNGC0YPRgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTkiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9zdGF0dXNJdGVtIj4KKyAgICA8dmFsdWU+0LfQsNCx0LvQvtC60LjRgNC+0LLQsNC90L48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYwIiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fc3RhdHVzSXRlbSI+CisgICAgPHZhbHVlPtCw0LrRgtC40LLQvdC+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2MSIgbmFtZT0idXNlcmFsdGVyX2FkbWluX29yZ2FuaXNhdGlvbiI+CisgICAgPHZhbHVlPtCe0YDQs9Cw0L3QuNC30LDRhtC40Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYyIiBuYW1lPSJjYWxlbmRhcl9pY29ubGFiZWwiPgorICAgIDx2YWx1ZT7QmtCw0LvQtdC90LTQsNGA0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYzIiBuYW1lPSJzYXZld2luZG93X2J0biI+CisgICAgPHZhbHVlPtCX0LDQutGA0YvRgtGMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2NCIgbmFtZT0ib3JnYW5pc2F0aW9udGFibGVsaXN0X2lkcm93Ij4KKyAgICA8dmFsdWU+0JjQtNC10L3Rgi4g4oSWINC+0YDQsy3QuNC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2NSIgbmFtZT0ib3JnYW5pc2F0aW9udGFibGVsaXN0X25hbWVyb3ciPgorICAgIDx2YWx1ZT7QmNC80Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY2IiBuYW1lPSJ1c2VydmFsdWVfbGV2ZWxpZDEiPgorICAgIDx2YWx1ZT7Qn9C+0LvRjNC30L7QstCw0YLQtdC70Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY3IiBuYW1lPSJ1c2VydmFsdWVfbGV2ZWxpZDIiPgorICAgIDx2YWx1ZT7QnNC+0LTQtdGA0LDRgtC+0YA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY4IiBuYW1lPSJ1c2VydmFsdWVfbGV2ZWxpZDMiPgorICAgIDx2YWx1ZT7QkNC00LzQuNC90LjRgdGC0YDQsNGC0L7RgDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjkiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGxhYmVsIj4KKyAgICA8dmFsdWU+0KDQvtC70Ywg0L/QvtC70YzQt9C+0LIt0LvRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzAiIG5hbWU9Im9yZ3ZhbHVlX2hlYWRlciI+CisgICAgPHZhbHVlPtCe0YDQs9Cw0L3QuNC30LDRhtC40Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTcxIiBuYW1lPSJvcmd2YWx1ZV9vcmduYW1lIj4KKyAgICA8dmFsdWU+0JjQvNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MiIgbmFtZT0ib3JndmFsdWVfb3JnbmFtZSI+CisgICAgPHZhbHVlPtCU0L7QsdCw0LLQuNGC0Ywg0L7RgNCz0LDQvdC40LfQsNGG0LjRjjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzMiIG5hbWU9Im9yZ3ZhbHVlX29yZ25hbWUiPgorICAgIDx2YWx1ZT7QlNC+0LHQsNCy0LjRgtGMINC+0YDQs9Cw0L3QuNC30LDRhtC40Y48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc0IiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luIj4KKyAgICA8dmFsdWU+0J7RgtC80LXQvdC40YLRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzUiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW4iPgorICAgIDx2YWx1ZT7QlNC+0LHQsNCy0LjRgtGMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3NiIgbmFtZT0ib3JndmFsdWVfdXNlcndpbiI+CisgICAgPHZhbHVlPtCj0LTQsNC70LjRgtGMINC+0YDQs9Cw0L3QuNC30LDRhtC40Y48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc3IiBuYW1lPSJvcmd2YWx1ZV91c2VybGlzdCI+CisgICAgPHZhbHVlPtCf0L7Qu9GM0LfQvtCy0LDRgtC10LvRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzgiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJsaXN0YWRkIj4KKyAgICA8dmFsdWU+0JTQvtCx0LDQstC40YLRjCDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc5IiBuYW1lPSJvcmd2YWx1ZV91c2VybGlzdGRlbGV0ZSI+CisgICAgPHZhbHVlPtCj0LTQsNC70LjRgtGMINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODAiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5oZWFkZXIiPgorICAgIDx2YWx1ZT7QlNC+0LHQsNCy0LjRgtGMINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODEiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5zZWFyY2hmaWVsZCI+CisgICAgPHZhbHVlPtCf0L7QuNGB0Log0L/QvtC70YzQt9C+0LLQsNGCLdGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4MiIgbmFtZT0ib3JndmFsdWVfdXNlcndpbnNlYXJjaGJ0biI+CisgICAgPHZhbHVlPtCY0YHQutCw0YLRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODMiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5zZWFyY2hyZXN1bHQiPgorICAgIDx2YWx1ZT7Qn9C+0LvRjNC30L7QstCw0YLQtdC70Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg0IiBuYW1lPSJsb2dpbndpbl9jaG9vc2VvcmdhbmlzYXRpb24iPgorICAgIDx2YWx1ZT7QntGA0LPQsNC90LjQt9Cw0YbQuNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NSIgbmFtZT0ibG9naW53aW5fY2hvb3Nlb3JnYW5pc2F0aW9uYnRuIj4KKyAgICA8dmFsdWU+0JLRi9Cx0YDQsNGC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg2IiBuYW1lPSJuYXZpX3Jvb21hZG1pbiI+CisgICAgPHZhbHVlPtCa0L7QvNC90LDRgtGLINGB0L7QstC10YnQsNC90LjQuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODciIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT7QmtC+0LzQvdCw0YLRiyDRgdC+0LLQtdGJ0LDQvdC40Lk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg4IiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+0JjQtNC10L3Rgi4g4oSWPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4OSIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPtCY0LzRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTAiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT7Qn9GD0LHQu9C40YfQvdCw0Y8g0LrQvtC80L3QsNGC0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkxIiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+0J7RgNCz0LDQvdC40LfQsNGG0LjQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTIiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT7QmtC+0LzQvdCw0YLRiyDRgdC+0LLQtdGJ0LDQvdC40Lk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkzIiBuYW1lPSJyb29tdmFsdWVfbmFtZSI+CisgICAgPHZhbHVlPtCY0LzRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTQiIG5hbWU9InJvb212YWx1ZV90eXBlIj4KKyAgICA8dmFsdWU+0KLQuNC/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NSIgbmFtZT0icm9vbXZhbHVlX2lzcHVibGljIj4KKyAgICA8dmFsdWU+0L/Rg9Cx0LvQuNGH0L3QvjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTYiIG5hbWU9InJvb212YWx1ZV9jb21tZW50Ij4KKyAgICA8dmFsdWU+0JrQvtC80LzQtdC90YLQsNGA0LjQuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTciIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWljb24iPgorICAgIDx2YWx1ZT7QodC+0YXRgNCw0L3QuNGC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk4IiBuYW1lPSJ3aGl0ZWJvYXJkX29wZW5pY29uIj4KKyAgICA8dmFsdWU+0J7RgtC60YDRi9GC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk5IiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbmhlYWRlciI+CisgICAgPHZhbHVlPtCh0L7RhdGA0LDQvdC40YLRjCDQutCw0Lo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAwIiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbnRleHQiPgorICAgIDx2YWx1ZT7QmNC80Y8g0YTQsNC50LvQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDEiIG5hbWU9ImZpbGVzIj4KKyAgICA8dmFsdWU+0JjQvNGPINGE0LDQudC70LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAyIiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbmJ0bjEiPgorICAgIDx2YWx1ZT7QntGC0LzQtdC90LjRgtGMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMyIgbmFtZT0id2hpdGVib2FyZF9zYXZlYXN3aW5idG4yIj4KKyAgICA8dmFsdWU+0KHQvtGF0YDQsNC90LjRgtGMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNCIgbmFtZT0icnBjZXJyb3J3aW5faGVhZGVyIj4KKyAgICA8dmFsdWU+0J7RiNC40LHQutCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNSIgbmFtZT0ibG9hZHdtbF9oZWFkZXIiPgorICAgIDx2YWx1ZT7Ql9Cw0LPRgNGD0LfQuNGC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA2IiBuYW1lPSJsb2Fkd21sX21lc3NzbG9hZCI+CisgICAgPHZhbHVlPtCe0LHRitC10LrRgiDQt9Cw0LPRgNGD0LbQtdC9PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNyIgbmFtZT0ibG9hZHdtbF9tZXNzc3luYyI+CisgICAgPHZhbHVlPtCh0LjQvdGF0YDQvtC90LjQt9Cw0YbQuNGPINC60LvQuNC10L3RgtC+0LIuINCe0YHRgtCw0LLRiNC40LXRgdGPINC60LvQuNC10L3RgtGLOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDgiIG5hbWU9ImxvYWRpbWFnZV9tZXNzbG9hZCI+CisgICAgPHZhbHVlPtCX0LDQs9GA0YPQt9C60LAg0LPRgNCw0YTQuNGH0LXRgdC60LjRhSDQtNCw0L3QvdGL0YU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA5IiBuYW1lPSJsb2FkaW1hZ2VfbWVzc3N5bmMiPgorICAgIDx2YWx1ZT7QodC40L3RhdGA0L7QvdC40LfQsNGG0LjRjyDQutC70LjQtdC90YLQvtCyLiDQntGB0YLQsNCy0YjQuNC10YHRjyDQutC70LjQtdC90YLRizo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEwIiBuYW1lPSJsb2Fkd21sX2NvbmZpcm1oZWFkZXIiPgorICAgIDx2YWx1ZT7QntGH0LjRgdGC0LjRgtGMINC+0LHQu9Cw0YHRgtGMINGA0LjRgdC+0LLQsNC90LjRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTEiIG5hbWU9ImxvYWR3bWxfY29uZmlybW1lc3MiPgorICAgIDx2YWx1ZT7QntGH0LjRgdGC0LjRgtGMINC+0LHQu9Cw0YHRgtGMINGA0LjRgdC+0LLQsNC90LjRjywg0L/RgNC4INGN0YLQvtC8INCy0YHQtSDQuNC30LzQtdC90LXQvdC40Y8g0LHRg9C00YPRgiDRg9GC0LXRgNGP0L3RiyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEyIiBuYW1lPSJsb2Fkd21sX2NvbmZpcm1tZXNzMiI+CisgICAgPHZhbHVlPtCf0LXRgNC10LQg0LfQsNCz0YDRg9C30LrQvtC5INGE0LDQudC70LAg0LfQsNC/0YDQvtGB0LjRgtGMINC/0L7QtNGC0LLQtdGA0LbQtNC10L3QuNC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMyIgbmFtZT0ic2VuZF9pbnZpdGF0aW9uX2J0biI+CisgICAgPHZhbHVlPtCe0YLQv9GA0LDQstC40YLRjCDQv9GA0LjQs9C70LDRiNC10L3QuNC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNCIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX2hlYWRlciI+CisgICAgPHZhbHVlPtCe0YLQv9GA0LDQstC40YLRjCDQv9GA0LjQs9C70LDRiNC10L3QuNC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNSIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX3N1YmplY3QiPgorICAgIDx2YWx1ZT7QotC10LzQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTYiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9yZWNpcGllbnQiPgorICAgIDx2YWx1ZT7QkNC00YDQtdGBINC/0L7Qu9GD0YfQsNGC0LXQu9GPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNyIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX21lc3NhZ2UiPgorICAgIDx2YWx1ZT7QodC+0L7QsdGJ0LXQvdC40LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE4IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fYnRuX2NvbmZpcm0iPgorICAgIDx2YWx1ZT7QntGC0L/RgNCw0LLQuNGC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE5IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fYnRuX2NhbmNlbCI+CisgICAgPHZhbHVlPtCe0YLQvNC10L3QuNGC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIwIiBuYW1lPSJzZW5kX2NoYXRfdGV4dF9idG4iPgorICAgIDx2YWx1ZT7QntGC0L/RgNCw0LLQuNGC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIxIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5faGVhZGVyIj4KKyAgICA8dmFsdWU+0JTQsNC90L3Ri9C1INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjIiIG5hbWU9Imludml0ZWRfdXNlcndpbl9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+0J3QuNC6INC00LvRjyDQtNCw0L3QvdC+0Lkg0LrQvtC90YTQtdGA0LXQvdGG0LjQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjMiIG5hbWU9Imludml0ZWRfdXNlcndpbl9sb2dpbiI+CisgICAgPHZhbHVlPtCd0LjQui/Qv9GB0LXQstC00L7QvdC40Lw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI0IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZmlyc3RuYW1lIj4KKyAgICA8dmFsdWU+0JjQvNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNSIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2xhc3RuYW1lIj4KKyAgICA8dmFsdWU+0KTQsNC80LjQu9C40Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI2IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fbWFpbCI+CisgICAgPHZhbHVlPkUtTWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjciIG5hbWU9Imludml0ZWRfdXNlcndpbl9sYW5nIj4KKyAgICA8dmFsdWU+0K/Qt9GL0Lo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI4IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZW50ZXIiPgorICAgIDx2YWx1ZT7QntGC0L/RgNCw0LLQuNGC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI5IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZW50ZXIiPgorICAgIDx2YWx1ZT7Ql9Cw0LPRgNGD0LbQsNC10YLRgdGPLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMCIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2VudGVyIj4KKyAgICA8dmFsdWU+0JTQsNC90YvQtSDQt9Cw0LPRgNGD0LbQsNGO0YLRgdGPLCDQv9C+0LTQvtC20LTQuNGC0LUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMSIgbmFtZT0idXNlcl9yZWdpc3RlckZhbHNlUFdEIj4KKyAgICA8dmFsdWU+0J3QtdCy0LXRgNC90YvQuSDQv9Cw0YDQvtC70Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMyIiBuYW1lPSJ1c2VyX3JlZ2lzdGVyRmFsc2VQV0RIZWFkZXIiPgorICAgIDx2YWx1ZT7Qn9C+0LbQsNC70YPQudGB0YLQsCwg0LLQstC10LTQuNGC0LUg0LTQstCwINGA0LDQt9CwINC+0LTQuNC9INC4INGC0L7RgiDQttC1INC/0LDRgNC+0LvRjCDQtNC70LjQvdC+0Lkg0L3QtSDQvNC10L3QtdC1IDYg0YHQuNC80LLQvtC70L7QsjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzMiIG5hbWU9InVzZXJfcmVnaXN0ZXJNYWlsRXJyb3IiPgorICAgIDx2YWx1ZT7QndC10LLQtdGA0L3Ri9C5IEUtTWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzQiIG5hbWU9InVzZXJfcmVnaXN0ZXJNYWlsRXJyb3JIZWFkZXIiPgorICAgIDx2YWx1ZT7QktGLINCy0LLQtdC70Lgg0L3QtdCy0LXRgNC90YvQuSBFLU1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM1IiBuYW1lPSJ1c2VyX3JlZ2lzdGVyU3VjY2VzcyI+CisgICAgPHZhbHVlPtCg0LXQs9C40YHRgtGA0LDRhtC40Y8g0LfQsNCy0LXRgNGI0LXQvdCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzNiIgbmFtZT0idXNlcl9yZWdpc3RlclN1Y2Nlc3NIZWFkZXIiPgorICAgIDx2YWx1ZT7QktCw0Ygg0LDQutC60LDRg9C90YIg0YHQvtC30LTQsNC9LiDQotC10L/QtdGA0Ywg0LLRiyDQvNC+0LbQtdGC0LUg0LLQvtC50YLQuCDQv9C+0LQg0YHQstC+0LjQvCDQuNC80LXQvdC10LwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzNyIgbmFtZT0idXNlcl9zaGFyaW5nX21lc3NhZ2UiPgorICAgIDx2YWx1ZT7QodC10LnRh9Cw0YEg0LLRiyDQvdC1INC80L7QttC10YLQtSDRgdC00LXQu9Cw0YLRjCDQstCw0Ygg0Y3QutGA0LDQvSDQvtCx0YnQuNC8LiDQodC10LnRh9Cw0YEg0LTRgNGD0LPQvtC5INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjCDRgdC00LXQu9Cw0Lsg0YHQstC+0Lkg0Y3QutGA0LDQvSDQvtCx0YnQuNC8LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzgiIG5hbWU9InVzZXJfc2hhcmluZ19tZXNzYWdlSGVhZGVyIj4KKyAgICA8dmFsdWU+0JfQsNC/0YDQtdGJ0LXQvdC+INC00LXQu9Cw0YLRjCDQstCw0Ygg0Y3QutGA0LDQvSDQvtCx0YnQuNC8PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzOSIgbmFtZT0idXNlcl9kb1N0YXJ0U2NyZWVuVmlld2VyIj4KKyAgICA8dmFsdWU+0KHQtNC10LvQsNGC0Ywg0Y3QutGA0LDQvSDQvtCx0YnQuNC8PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0MCIgbmFtZT0ic2NyZWVuX3dhcm5CYW5kd2lkdGgiPgorICAgIDx2YWx1ZT7QndC10LLQtdGA0L3QsNGPINGI0LjRgNC40L3QsCDQutCw0L3QsNC70LA6INC90LXQstC+0LfQvNC+0LbQvdC+INGB0LjQvdGF0YDQvtC90LjQt9C+0LLQsNGC0Ywg0Y3QutGA0LDQvS4g0J3QtdC60L7RgtC+0YDRi9C1INC60LDQtNGA0Ysg0LHRg9C00YPRgiDQv9GA0L7Qv9GD0YnQtdC90YsuINCV0YHQu9C4INGN0YLQviDRgdC+0L7QsdGJ0LXQvdC40LUg0L/QvtGP0LLQu9GP0LXRgtGB0Y8g0YHQu9C40YjQutC+0Lwg0YfQsNGB0YLQviwg0JLRiyDQvNC+0LbQtdGC0LUg0L/QvtC/0YDQvtGB0LjRgtGMINC80L7QtNC10YDQsNGC0L7RgNCwINGD0YXRg9C00YjQuNGC0Ywg0LrQsNGH0LXRgdGC0LLQviDRgdC+0LXQtNC40L3QtdC90LjRjy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQxIiBuYW1lPSJzY3JlZW5fdXNlcmxhYmVsIj4KKyAgICA8dmFsdWU+0K3QutGA0LDQvSDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0MiIgbmFtZT0id2hpdGVib2FyZF90YWJfcGFpbnQiPgorICAgIDx2YWx1ZT7QoNC40YHQvtCy0LDQvdC40LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQzIiBuYW1lPSJ3aGl0ZWJvYXJkX3RhYl9kb2N1bWVudCI+CisgICAgPHZhbHVlPtCU0L7QutGD0LzQtdC90YI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ0IiBuYW1lPSJ0YWJiYXJfY2hhdGljb24iPgorICAgIDx2YWx1ZT7Qp9Cw0YI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ1IiBuYW1lPSJ0YWJiYXJfZmlsZXNpY29uIj4KKyAgICA8dmFsdWU+0KTQsNC50Ls8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ2IiBuYW1lPSJ0YWJiYXJfcGFydGljaXBhbnRzaWNvbiI+CisgICAgPHZhbHVlPtCu0LfQtdGA0Ys8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ3IiBuYW1lPSJzd2ZwcmVzZW50YXRpb25fbGlzdHNhdmVvcmlnIj4KKyAgICA8dmFsdWU+0JfQsNCz0YDRg9C30LjRgtGMINC/0LXRgNCy0L7QvdCw0YfQsNC70YzQvdGL0Lkg0LTQvtC60YPQvNC10L3RgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDgiIG5hbWU9InN3ZnByZXNlbnRhdGlvbl9saXN0c2F2ZXBkZiI+CisgICAgPHZhbHVlPtCX0LDQs9GA0YPQt9C40YLRjCDQtNC+0LrRg9C80LXQvdGCIHBkZjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDkiIG5hbWU9InN3ZnByZXNlbnRhdGlvbl9saXN0bG9hZHN3ZiI+CisgICAgPHZhbHVlPtCf0L7QvNC10YHRgtC40YLRjCDQtNC+0LrRg9C80LXQvdGCINC90LAg0LTQvtGB0LrRgzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTAiIG5hbWU9Im5hdmltYWluX2NvbmZpZyI+CisgICAgPHZhbHVlPtCa0L7QvdGE0LjQs9GD0YDQsNGG0LjRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTEiIG5hbWU9IndoaXRlYm9hcmRfYm91bmRpbmdib3hfZHJhZyI+CisgICAgPHZhbHVlPtCf0LXRgNC10YLQsNGJ0LjRgtGMINGN0YLQvtGCINC+0LHRitC10LrRgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTIiIG5hbWU9IndoaXRlYm9hcmRfYm91bmRpbmdib3hfcmVzaXplIj4KKyAgICA8dmFsdWU+0JjQt9C80LXQvdC40YLRjCDRgNCw0LfQvNC10YDRiyDQvtCx0YrQtdC60YLQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTMiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3pvb20iPgorICAgIDx2YWx1ZT4lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1NCIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfc2xpZGUiPgorICAgIDx2YWx1ZT7QuNC3PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1NSIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfZmlyc3RzbGlkZSI+CisgICAgPHZhbHVlPtCd0LAg0L/QtdGA0LLRg9GOINGB0YLRgNCw0L3QuNGG0YM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU2IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9wcmVzbGlkZSI+CisgICAgPHZhbHVlPtCd0LAg0L/RgNC10LTRi9C00YPRidGD0Y4g0YHRgtGA0LDQvdC40YbRgzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTciIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX25leHRzbGlkZSI+CisgICAgPHZhbHVlPtCd0LAg0YHQu9C10LTRg9GO0YnRg9GOINGB0YLRgNCw0L3QuNGG0YM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU4IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9sYXN0c2xpZGUiPgorICAgIDx2YWx1ZT7QndCwINC/0L7RgdC70LXQtNC90Y7RjiDRgdGC0YDQsNC90LjRhtGDPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1OSIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfem9vbW1pbnVzIj4KKyAgICA8dmFsdWU+0KPQvNC10L3RjNGI0LXQvdC40LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYwIiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl96b29tcGx1cyI+CisgICAgPHZhbHVlPtCj0LLQtdC70LjRh9C10L3QuNC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MSIgbmFtZT0ic2FsdXRhdGlvbl9tciI+CisgICAgPHZhbHVlPtCTLdC9PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MiIgbmFtZT0ic2FsdXRhdGlvbl9taXNzIj4KKyAgICA8dmFsdWU+0JMt0LbQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjMiIG5hbWU9Im5hdmltYWluX2NvbmZhZG1pbiI+CisgICAgPHZhbHVlPtCa0L7QvdGE0LjQs9GD0YDQsNGG0LjRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjQiIG5hbWU9ImNvbmZ0YWJsZV9oZWFkZXJJZCI+CisgICAgPHZhbHVlPklEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2NSIgbmFtZT0iY29uZnRhYmxlX2hlYWRlcmtleSI+CisgICAgPHZhbHVlPtCa0LvRjtGHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2NiIgbmFtZT0iY29uZmFkbWluZm9ybV9oZWFkZXIiPgorICAgIDx2YWx1ZT7QmtC+0L3RhNC40LPRg9GA0LDRhtC40Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY3IiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsa2V5Ij4KKyAgICA8dmFsdWU+0JrQu9GO0Yc6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2OCIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbHVwZGF0ZWQiPgorICAgIDx2YWx1ZT7QlNCw0YLQsCDQvtCx0L3QvtCy0LvQtdC90LjRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjkiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWx1cGRhdGVkYnkiPgorICAgIDx2YWx1ZT7QntCx0L3QvtCy0LvQtdC90L46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MCIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbGNvbW1lbnQiPgorICAgIDx2YWx1ZT7QntC/0LjRgdCw0L3QuNC1OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzEiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWxrZXkiPgorICAgIDx2YWx1ZT7Ql9C90LDRh9C10L3QuNC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MiIgbmFtZT0idHVybm92ZXJsaXN0X21heHJlc3VsdHMiPgorICAgIDx2YWx1ZT7QuNC3PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MyIgbmFtZT0ib3JnYW5pc2F0aW9uX3VzZXJzaGVhZGVyIj4KKyAgICA8dmFsdWU+0J/QvtC70YzQt9C+0LLQsNGC0LXQu9C4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NCIgbmFtZT0ib3JnYW5pc2F0aW9uX3VzZXJzaWNvbmRlbGV0ZSI+CisgICAgPHZhbHVlPtCj0LTQsNC70LjRgtGMINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyDQuNC3INC+0YDQs9Cw0L3QuNC30LDRhtC40Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc1IiBuYW1lPSJvcmdhbmlzYXRpb25fdXNlcnNkZWxldGVkaGVhZCI+CisgICAgPHZhbHVlPtCj0LTQsNC70LjRgtGMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NiIgbmFtZT0ib3JnYW5pc2F0aW9uX3VzZXJzYWxyZWFkYWRkZWQiPgorICAgIDx2YWx1ZT7QrdGC0L7RgiDQv9C+0LvRjNC30L7QstCw0YLQtdC70Ywg0YPQttC1INCy0YXQvtC00LjRgiDQsiDRjdGC0YMg0L7RgNCz0LDQvdC40LfQsNGG0LjRji48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc3IiBuYW1lPSJkYXNoYm9hcmRfbmV3c2hlYWRlciI+CisgICAgPHZhbHVlPtCd0L7QstC+0YHRgtC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3OCIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua3NoZWFkZXIiPgorICAgIDx2YWx1ZT7QkdGL0YHRgtGA0YvQuSDQv9C10YDQtdGF0L7QtDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzkiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtDb25mIj4KKyAgICA8dmFsdWU+0J/QtdGA0LXQudGC0Lgg0Log0YHQvtCy0LXRidCw0L3QuNGOPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MCIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua0F1ZGl0Ij4KKyAgICA8dmFsdWU+0J/QtdGA0LXQudGC0Lgg0Log0LvQtdC60YbQuNC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MSIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua3N1cHBvcnQiPgorICAgIDx2YWx1ZT7Qn9C+0LzQvtGJ0Ywg0Lgg0L/QvtC00LTQtdGA0LbQutCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MiIgbmFtZT0iZGFzaGJvYXJkX3F1aWNraG9tZXBhZ2V1cmwiPgorICAgIDx2YWx1ZT5odHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MyIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbWFpbGluZ2xpc3R1cmwiPgorICAgIDx2YWx1ZT5odHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvbWFpbC1saXN0cy5odG1sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4NCIgbmFtZT0iZGFzaGJvYXJkX3JlcG9ydGJ1Z3MiPgorICAgIDx2YWx1ZT7QntGI0LjQsdC60LA/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4NSIgbmFtZT0iZGFzaGJvYXJkX3Jzc2xpc3RpdGVtbGlua3RleHQiPgorICAgIDx2YWx1ZT7QtdGJ0LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg2IiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5raG9tZXBhZ2VsYWJlbCI+CisgICAgPHZhbHVlPtCS0LXQsdGB0LDQudGCINC/0YDQvtC10LrRgtCwIChodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4NyIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua21haWxpbmdsaXN0bGFiZWwiPgorICAgIDx2YWx1ZT7QodC/0LjRgdC+0Log0Y3Qu9C10LrRgtGA0L7QvdC90YvRhSDQsNC00YDQtdGB0L7QsiDQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuSAoaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnL21haWwtbGlzdHMuaHRtbCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg4IiBuYW1lPSJsb2dpbl9yZW1lbWJlcnVzZXIiPgorICAgIDx2YWx1ZT7Ql9Cw0L/QvtC80L3QuNGC0Ywg0LLRhdC+0LQg0LIg0YHQuNGB0YLQtdC80YM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg5IiBuYW1lPSJtYWluX25hdmkiPgorICAgIDx2YWx1ZT7QmtC+0L3RgtC10L3RgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTAiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT7QnNC+0Y8g0LTQvtC80LDRiNC90Y/RjyDRgdGC0YDQsNC90LjRhtCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MSIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPtCc0L7QuCDRgdC+0LLQtdGJ0LDQvdC40Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkyIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+0JzQvtC4INC30LDQv9C70LDQvdC40YDQvtCy0LDQvdC90YvQtSDQu9C10LrRhtC40Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkzIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+0J/Rg9Cx0LvQuNGH0L3Ri9C1INGB0L7QstC10YnQsNC90LjRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTQiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT7Qm9C40YfQvdGL0LUg0YHQvtCy0LXRidCw0L3QuNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NSIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPtCf0YPQsdC70LjRh9C90YvQtSDQu9C10LrRhtC40Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk2IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+0JvQuNGH0L3Ri9C1INC70LXQutGG0LjQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTciIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT7Qn9GD0LHQu9C40YfQvdGL0Lkg0LrQvtC90YLQtdC90YI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk4IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+0J/RgNC40LLQsNGC0L3Ri9C5INC60L7QvdGC0LXQvdGCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5OSIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPtCf0LXRgNGB0L7QvdCw0LvRjNC90YvQuSDQutC+0L3RgtC10L3RgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDAiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAxIiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+0JzQvtC00LXRgNCw0YbQuNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMiIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPtCX0LDQv9GA0L7RgdC40YLRjCDRhC3RhtC40Lgg0LzQvtC00LXRgNCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMyIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPtCe0L/RgNC+0YHRizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDQiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT7QktGL0LHQvtGAINGE0LDQudC70LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA1IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+0KPRgdGC0LDQvdC+0LLQutC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNiIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPtCj0YHRgtCw0L3QvtCy0LrQuCDQutCw0LzQtdGA0Ysg0Lgg0LzQuNC60YDQvtGE0L7QvdCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNyIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPtCj0YHRgtCw0L3QvtCy0LrQuCDQtNC+0YHQutC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwOCIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPtCS0YvRhdC+0LQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA5IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+0JLRi9GF0L7QtCAo0Log0LrQvtC80L3QsNGC0LDQvCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEwIiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+0JLRi9GF0L7QtDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTEiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+0JfQsNCx0YvQu9C4INC/0LDRgNC+0LvRjD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEyIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPtCS0L7RgdGB0YLQsNC90L7QstC70LXQvdC40LUg0L/QsNGA0L7Qu9GPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMyIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7Qn9C+IGUtbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTQiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+0J/QviDQuNC80LXQvdC4INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTUiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+0JLQsNGI0LAg0L/QvtGH0YLQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTYiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+0JLQsNGIINC70L7Qs9C40L08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE3IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPtCf0L7RgdC70LDRgtGMINC70LjQvdC6INC90LAgZS1tYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxOCIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7QotCw0LrQvtC5IGUtbWFpbCDQvdC1INC90LDQudC00LXQvS4g0KPQsdC10LTQuNGC0LXRgdGMLCDRh9GC0L4g0LLRiyDQstCy0LXQu9C4INCy0LXRgNC90YvQuSBlLW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE5IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPtCS0LLQtdC00LjRgtC1IGUtbWFpbCDQuNC70Lgg0LjQvNGPINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjAiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+0J3QuNC60YLQviDQsdC+0LvRjNGI0LUg0L3QtSDQv9C+0LTQutC70Y7Rh9C40LvRgdGPINGBINGC0LDQutC40Lwg0LjQvNC10L3QtdC8INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjEiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+0J/QuNGB0YzQvNC+LCDRgdC+0LTQtdGA0LbQsNGJ0LXQtSDRgdC/0LXRhtC40LDQu9GM0L3Rg9GOINGB0YHRi9C70LrRgywg0LLRi9GB0LvQsNC90L4g0L3QsCDQstCw0YggZS1tYWlsLCDQv9C+0LbQsNC70YPQudGB0YLQsCwg0L/RgNC+0LLQtdGA0YzRgtC1INCy0LDRiCDQv9C+0YfRgtC+0LLRi9C5INGP0YnQuNC6LiDQldGB0LvQuCDQstGLINCy0YHQtSDQtdGJ0LUg0L3QtSDQv9C+0LvRg9GH0LjQu9C4INC/0LjRgdGM0LzQviwg0L/RgNC+0LLQtdGA0YzRgtC1INCw0L3RgtC4LdGB0L/QsNC8INGE0LjQu9GM0YLRgNGLINC4INC/0L7RiNC70LjRgtC1INC10YnQtSDRgNCw0Lcg0L/QvtC00YLQstC10YDQttC00LDRjtGJ0LXQtSDQv9C40YHRjNC80L4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyMiIgbmFtZT0iZXJyb3J0eXBlIj4KKyAgICA8dmFsdWU+0JjQvdGE0L7RgNC80LDRhtC40Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIzIiBuYW1lPSJlcnJvcnR5cGUiPgorICAgIDx2YWx1ZT7QodC+0L7QsdGJ0LXQvdC40LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI0IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT7QndC10LLQtdGA0L3Ri9C5INGF0Y3RiC4g0J/QvtC70YzQt9C+0LLQsNGC0LXQu9GMINC90LUg0L3QsNC50LTQtdC9LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjUiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPtCf0LXRgNC10YPRgdGC0LDQvdC+0LLQuNGC0Ywg0LLQsNGIINC/0LDRgNC+0LvRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjYiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPtCb0L7Qs9C40L08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI3IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT7QuNC30LzQtdC90LjRgtGMINC/0LDRgNC+0LvRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjgiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPtC90L7QstGL0Lkg0L/QsNGA0L7Qu9GMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyOSIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+0LXRidC1INGA0LDQtyDQstCy0LXQtNC40YLQtSDQv9Cw0YDQvtC70Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMwIiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT7QktGLINCy0LLQtdC70Lgg0L3QtdC40LTQtdC90YLQuNGH0L3Ri9C1INC/0LDRgNC+0LvQuC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMxIiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT40INC40LvQuCDQsdC+0LvQtdC1INC30L3QsNC60L7Qsi4g0KDQtdCz0LjRgdGC0YAg0LjQvNC10LXRgiDQt9C90LDRh9C10L3QuNC1ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzIiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPtCf0LDRgNC+0LvRjCDRg9GB0YLQsNC90L7QstC70LXQvS4g0KLQtdC/0LXRgNGMINC80L7QttC90L4g0LvQvtCz0LjQvdC40YLRjNGB0Y8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzMyIgbmFtZT0icnBjY2FsbGJhY2siPgorICAgIDx2YWx1ZT5PSzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzQiIG5hbWU9InJwY2dlbmVyYWxlcnJvciI+CisgICAgPHZhbHVlPtCd0LXQuNC30LLQtdGB0YLQvdCw0Y8g0L7RiNC40LHQutCwLiDQn9C+0LbQsNC70YPQudGB0YLQsCwg0YHQvtC+0LHRidC40YLQtSDQsiDQstCw0YjRgyDRgdC10YDQstC40YHQvdGD0Y4g0YHQu9GD0LbQsdGDLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzUiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+0JjQvNGPINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyDQvdC1INC90LDQudC00LXQvdC+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNiIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7QndC10LLQtdGA0L3Ri9C5INC/0LDRgNC+0LvRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzciIG5hbWU9ImxvZ291dCI+CisgICAgPHZhbHVlPtCS0Ysg0YPRgdC/0LXRiNC90L4g0LLRi9GI0LvQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzgiIG5hbWU9InJlZ2lzdHJhdGlvbiI+CisgICAgPHZhbHVlPkZyb250ZW5kIFJlZ2lzdHJhdGlvbiBkaXNhYmxlZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM5IiBuYW1lPSJyZWdpc3RyYXRpb24iPgorICAgIDx2YWx1ZT7QndC10LLQtdGA0L3Ri9C5IGUtbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDAiIG5hbWU9InJlZ2lzdHJhdGlvbiI+CisgICAgPHZhbHVlPtC90LXRg9C90LjQutCw0LvRjNC90L7QtSDQuNC80Y8g0YTQsNC50LvQsCwg0LLRi9Cx0LXRgNC40YLQtSDQtNGA0YPQs9C+0LUg0LjQvNGPINGE0LDQudC70LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQxIiBuYW1lPSJmaWxlYnJvd3NlciI+CisgICAgPHZhbHVlPtGB0LvQuNGI0LrQvtC8INC60L7RgNC+0YLQutC+0LUg0LjQvNGPINGE0LDQudC70LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQyIiBuYW1lPSJmaWxlYnJvd3NlciI+CisgICAgPHZhbHVlPtCd0LUg0LzQvtCz0YMg0YHQvtGF0YDQsNC90LjRgtGMINCQ0LTRgNC10YE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQzIiBuYW1lPSJ1c2VyYWRtaW4iPgorICAgIDx2YWx1ZT7Qn9C+0LvRjNC30L7QstCw0YLQtdC70Ywg0LTQvtCx0LDQstC70LXQvSwg0L3QviDQvdGD0LbQvdC+INC90LDQt9C90LDRh9C40YLRjCDRjdGC0L7QvNGDINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjiDQvtGA0LPQsNC90LjQt9Cw0YbQuNGOLCDQuNC90LDRh9C1INC+0L0g0L3QtSDRgdC80L7QttC10YIg0LLQvtC50YLQuC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ0IiBuYW1lPSJhZG1pbmZvcm1zIj4KKyAgICA8dmFsdWU+0J3QvtCy0LDRjyDQt9Cw0L/QuNGB0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ1IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7Qn9C+0LvQtSDRgSDRgtCw0LrQuNC8IElEINC90LUg0L3QsNC50LTQtdC90L4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+0JzQtdGC0LrQsCDQtNC70Y8g0Y3RgtC+0LPQviDQv9C+0LvRjyDQvdC1INC90LDQudC00LXQvdCwLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDciIG5hbWU9ImVycm9ybWVzc2FnZSI+CisgICAgPHZhbHVlPtCi0YDQtdCx0YPQtdGC0YHRjyDQsNCy0YLQvtGA0LjQt9Cw0YbQuNGPINCw0LTQvNC40L3QuNGB0YLRgNCw0YLQvtGA0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ4IiBuYW1lPSJtYWlubmF2aSI+CisgICAgPHZhbHVlPtCg0LXQtNCw0LrRgtC+0YAg0Y/Qt9GL0LrQvtCyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0OSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+0K/Qt9GL0Lo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUwIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5JRCDQvNC10YLQutC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1MSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+0JjQvNGPINC80LXRgtC60Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUyIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7Ql9C90LDRh9C10L3QuNC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1MyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+0JfQvdCw0YfQtdC90LjRjyDQv9C+0LvQtdC5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1NCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+0JjQvNGPINC80LXRgtC60Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU1IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7Ql9C90LDRh9C10L3QuNC1INC80LXRgtC60Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU2IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5JRCDQvNC10YLQutC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1NyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+0JLRiyDQvNC+0LbQtdGC0LUg0LvQuNGI0Ywg0YPQtNCw0LvQuNGC0Ywg0LzQtdGC0LrRgywg0L3QviDQvdC1INGB0LDQvNC+INC/0L7Qu9C1ISDQndC10LvRjNC30Y8g0YPQtNCw0LvQuNGC0Ywg0L/QvtC70LUsINGDINC90LXQs9C+INC80L7Qs9GD0YIg0LHRi9GC0Ywg0LzQtdGC0LrQuCDQvdCwINC00YDRg9Cz0LjRhSDRj9C30YvQutCw0YUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1OCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+0J3QtdCy0LXRgNC90YvQuSBJRCDQvNC10YLQutC4LiDQndC10LLQvtC30LzQvtC20L3QviDQvdCw0LnRgtC4IEZpZWxkTGFuZ3VhZ2VzdmFsdWVzX0lkINCyINCx0LDQt9C1INC00LDQvdC90YvRhS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU5IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7QndC10LvRjNC30Y8g0YPQtNCw0LvQuNGC0Ywg0Y3RgtC+INC/0L7Qu9C1ISDQnNC+0LbQvdC+INC70LjRiNGMINGD0LTQsNC70LjRgtGMINC80LXRgtC60YMsINC90L4g0L3QtSDRgdCw0LzQviDQv9C+0LvQtSDQnNC10YLQutCwINGB0LXQudGH0LDRgSDQvdC1INC30LDQs9GA0YPQttC10L3QsC4g0JvQuNCx0L4g0L3QtSDQstGL0LHRgNCw0L3QviDQvdC4INC+0LTQvdC+INC/0L7Qu9C1LCDQu9C40LHQviDQvdC1INC+0L/RgNC10LTQtdC70LXQvdCwINC80LXRgtC60LAg0L3QsCDRjdGC0L7QvCDRj9C30YvQutC1ICjQtNC70Y8g0Y3RgtC+0LPQviDQv9C+0LvRjyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYwIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7QrdC60YHQv9C+0YDRgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjEiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPtCS0LDQvCDQvdGD0LbQvdC+INCy0YvQudGC0LgsINGH0YLQvtCx0Ysg0YPQstC40LTQtdGC0Ywg0LjQt9C80LXQvdC10L3QuNGPLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjIiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPtCU0L7QsdCw0LLQuNGC0Ywg0L3QvtCy0YvQuSDRj9C30YvQujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjMiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPtGD0LTQsNC70LjRgtGMINGP0LfRi9C6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+0JTQvtCx0LDQstC40YLRjCDQvdC+0LLRi9C5INGP0LfRi9C6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+0JjQvNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+0LTQvtCx0LDQstC40YLRjCDRj9C30YvQujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjciIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPtCg0LXQt9C10YDQstC90L7QtSDQutC+0L/QuNGA0L7QstCw0L3QuNC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2OCIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+0Log0L/QtdGA0LLQvtC80YM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY5IiBuYW1lPSJ0dXJub3Zlcmxpc3QiPgorICAgIDx2YWx1ZT7QuiDQv9GA0LXQtNGL0LTRg9GJ0LXQvNGDPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MCIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+0Log0YHQu9C10LTRg9GO0YnQtdC80YM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzcxIiBuYW1lPSJ0dXJub3Zlcmxpc3QiPgorICAgIDx2YWx1ZT7QuiDQv9C+0YHQu9C10LTQvdC10LzRgzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzIiIG5hbWU9InZpZGVvYm94Ij4KKyAgICA8dmFsdWU+0KPRh9Cw0YHRgtC90LjQuiDQs9C+0LLQvtGA0LjRgiAo0J3QsNC20LjQvNCw0Y8g0LfQtNC10YHRjCDQktGLINC/0YDQtdC00L7RgdGC0LDQstC70Y/QtdGC0LUg0Y3RgtC+0LzRgyDRg9GH0LDRgdGC0L3QuNC60YMg0Y3QutGB0LrQu9GO0LfQuNCy0L3Ri9C5INC80LjQutGA0L7RhNC+0L0gLyDQstGL0LrQu9GO0YfQsNGPINC80LjQutGA0L7RhNC+0L3RiyDQvtGB0YLQsNC70YzQvdGL0YUg0YPRh9Cw0YHRgtC90LjQutC+0LIpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MyIgbmFtZT0idmlkZW9ib3giPgorICAgIDx2YWx1ZT7QktC60LvRjtGH0LjRgtGML9Cy0YvQutC70Y7Rh9C40YLRjCDQt9Cy0YPQujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPtCh0LjRgdGC0LXQvNCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3NSIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+0JLQsNGI0Lgg0YPRgdGC0LDQvdC+0LLQutC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3NiIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+0J/RgNC40LLQtdGCLDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzciIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPtCS0LDRiCDQv9GA0L7RhNC40LvRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzgiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPtCd0L7QstGL0LUg0YHQvtC+0LHRidC10L3QuNGPOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzkiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPtCY0LfQvtCx0YDQsNC20LXQvdC40LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgwIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPtCt0LrRgdC/0L7RgNGCINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjNGB0LrQuNGFINC00LDQvdC90YvRhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODEiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+0J7RgNCz0LDQvdC40LfQsNGG0LjQuCDRg9C20LUg0LTQvtC70LbQvdGLINGB0YPRidC10YHRgtCy0L7QstCw0YLRjCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgyIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPtC90LDRh9Cw0YLRjCDRjdC60YHQv9C+0YDRgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODMiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+0J/QviDQvtGA0LPQsNC90LjQt9Cw0YbQuNC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NCIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT7QvdCw0YfQsNGC0Ywg0Y3QutGB0L/QvtGA0YI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg1IiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPtCf0L7Qu9GM0LcuINC00LDQvdC90YvQtSAtINC40LzQv9C+0YDRgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODYiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+0LLRi9Cx0YDQsNGC0YwgdXNlcnMueG1sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+0JjQvNC/0L7RgNGCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4OCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+0K3QutGB0L/QvtGA0YIg0LIgWE1MIC0g0Y3RgtC4INGE0LDQudC70Ysg0LzQvtC20L3QviDQuNGB0L/QvtC70YzQt9C+0LLQsNGC0Ywg0LTQu9GPOiAtINCS0L3QtdGB0LXQvdC40Y8g0LIg0L/RgNC+0LXQutGCIC0g0JjQvNC/0L7RgNGC0LAg0LIg0LTRgNGD0LPRg9GOINGB0LjRgdGC0LXQvNGDIC0g0KDQtdC30LXRgNCy0L3QvtCz0L4g0LrQvtC/0LjRgNC+0LLQsNC90LjRjyAtINCa0LDRgdGC0L7QvNC40LfQsNGG0LjQuCAtINCf0L7QvNC10YnQtdC90LjRjyDQsiDQtNC40YDQtdC60YLQvtGA0LjRjiAibGFuZ3VhZ2UiINC/0YDQuCDRgdC70LXQtNGD0Y7RidC10Lkg0LjQvdGB0YLQsNC70LvRj9GG0LjQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODkiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPtCS0YvQsdC10YDQuNGC0LUg0YTQsNC50Lsg0Y/Qt9GL0LrQsCDQtNC70Y8g0LjQvNC/0L7RgNGC0LAuINCS0YvQsdC10YDQuNGC0LUg0Y/Qt9GL0Log0LIg0LLRi9C/0LDQtNCw0Y7RidC10Lwg0YHQv9C40YHQutC1LiDQndC10LLQsNC20L3Qviwg0LrQsNC60L7QtSDQuNC80Y8g0YMg0Y3RgtC+0LPQviDRhNCw0LnQu9CwLCDQvtC9INCx0YPQtNC10YIg0LjQvNC/0L7RgNGC0LjRgNC+0LLQsNC9INCyINGN0YLQvtGCINGP0LfRi9C6ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTAiIG5hbWU9ImltcG9ydHdpbmRvdyI+CisgICAgPHZhbHVlPtC40LzQv9C+0YDRgiAtINCy0YvQsdC10YDQuNGC0LUg0YTQsNC50Ls8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkxIiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+0KHQvtGF0YDQsNC90LjRgtGMINC60LDQujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTIiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT7QmNC80Y86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5MyIgbmFtZT0icmVjb3JkaW5nc2F2ZXdpbiI+CisgICAgPHZhbHVlPtCe0L/QuNGB0LDQvdC40LU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NCIgbmFtZT0icmVjb3JkaW5nc2F2ZXdpbiI+CisgICAgPHZhbHVlPtGB0L7RhdGA0LDQvdC40YLRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTUiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPtCX0LDQv9C40YHQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTYiIG5hbWU9InJlY29yZGVyIj4KKyAgICA8dmFsdWU+0J/RgNC+0YHQvNC+0YLRgCDQt9Cw0L/QuNGB0LXQuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTciIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPtCX0LDQv9C40YHQuCDQv9GD0LHQu9C40YfQvdGL0YUg0Lgg0L/RgNC40LLQsNGC0L3Ri9GFINC60L7QvNC90LDRgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTgiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPtCj0YfQsNGB0YLQvdC40LrQuCA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5OSIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+0J/RgNC40YHQvtC10LTQuNC90LjQstGI0LjQtdGB0Y86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMCIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMSIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+0KPRh9Cw0YHRgtC90LjQutC4INCyINGN0YLQvtC5INC60L7QvNC90LDRgtC1OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDIiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPtC+0LHQvdC+0LLQuNGC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAzIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT7QrdGC0LAg0LrQvtC80L3QsNGC0LAg0L/QvtC70L3QsC4g0J/QvtC/0YDQvtCx0YPQudGC0LUg0YfQtdGA0LXQtyDQvdC10YHQutC+0LvRjNC60L4g0LzQuNC90YPRgi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA0IiBuYW1lPSJyb29tc0xpc3QiPgorICAgIDx2YWx1ZT7QndCw0LbQvNC40YLQtSDQvdCwINC60L7QvNC90LDRgtGDINC00LvRjyDQtNC10YLQsNC70LXQuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDUiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPtCn0LDRgiDRgSDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y/QvNC4INGN0YLQvtC5INC60L7QvNC90LDRgtGLOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDYiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPtCa0L7QvNC90LDRgtCwOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDciIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPtCj0YfQsNGB0YLQvdC40LrQuCDQsiDRjdGC0L7QuSDQutC+0LzQvdCw0YLQtTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA4IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT7RgTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA5IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT7Qv9GA0L7QuNCz0YDQsNGC0Ywg0LfQsNC/0LjRgdC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMCIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+0JTQu9C40L3QsDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDExIiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT7QlNCw0YLQsDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDEyIiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT7QoNC10LbQuNC8INCy0L7RgdC/0YDQvtC40LfQstC10LTQtdC90LjRjyEg0JLRiyDQvdC1INC80L7QttC10YLQtSDQvNC10L3Rj9GC0Ywg0L/QsNGA0LDQvNC10YLRgNGLLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTMiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPtCf0YDQvtC40LPRgNCw0YLRjCDRjdGC0YMg0LfQsNC/0LjRgdGMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxNCIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+0JjQs9GA0LDRgtGMIC8g0J/QsNGD0LfQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTUiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPtCd0LDRh9Cw0YLRjCDQt9Cw0L/QuNGB0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE2IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT7QvtGB0YLQsNC90L7QstC40YLRjCDQt9Cw0L/QuNGB0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE3IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT7Ql9Cw0L/QuNGB0Yw6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxOCIgbmFtZT0icmVjb3JkX2Vycm9yX21zZyI+CisgICAgPHZhbHVlPtCa0YLQvi3RgtC+INGD0LbQtSDQt9Cw0L/QuNGB0YvQstCw0LXRgiDQsiDQtNCw0L3QvdGL0Lkg0LzQvtC80LXQvdGCOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTkiIG5hbWU9InJlY29yZF9tZXNzYWdlIj4KKyAgICA8dmFsdWU+0JjQtNC10YIg0LfQsNC/0LjRgdGMISDQo9GH0LDRgdGC0L3QuNC6OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjAiIG5hbWU9InJlY29yZF9jYW5jZWwiPgorICAgIDx2YWx1ZT7QvtGC0LzQtdC90LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIxIiBuYW1lPSJyZWNvcmRfY2FuY2FsX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT7Ql9Cw0L/QuNGB0Ywg0LHRg9C00LXRgiDQvtGC0LzQtdC90LXQvdCwINC4INC90LUg0LHRg9C00LXRgiDQt9Cw0L/QuNGB0LDQvdCwLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjIiIG5hbWU9ImNhbmNlbF9kaWFsb2dfcmVzdW1lIj4KKyAgICA8dmFsdWU+0L/RgNC+0LTQvtC70LbQuNGC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIzIiBuYW1lPSJjYW5jZWxfZGlhbG9nX3Jlc3VtZV90b29sdGlwIj4KKyAgICA8dmFsdWU+0JfQsNC60YDRi9GC0Ywg0L7QutC90L4g0Lgg0L/RgNC+0LTQvtC70LbQuNGC0Ywg0LfQsNC/0LjRgdGMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyNCIgbmFtZT0icGFpbnR0b29sc19lbGxpcHNlX2NvbG9yIj4KKyAgICA8dmFsdWU+0LjQt9C80LXQvdC40YLRjCDRhtCy0LXRgiDQu9C40L3QuNC5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyNSIgbmFtZT0iY29sb3JwaWNrZXJfaGVhZCI+CisgICAgPHZhbHVlPtCS0YvQsdC+0YAg0YbQstC10YLQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjYiIG5hbWU9InBhaW50dG9vbHNfbGluZV9kaXNhYmxlIj4KKyAgICA8dmFsdWU+0JfQsNC/0YDQtdGC0LjRgtGML9GA0LDQt9GA0LXRiNC40YLRjCDRhtCy0LXRgiDQu9C40L3QuNC5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyNyIgbmFtZT0icGFpbnR0b29sc19maWxsX2Rpc2FibGUiPgorICAgIDx2YWx1ZT7QuNC30LzQtdC90LjRgtGMINGG0LLQtdGCINC30LDQu9C40LLQutC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyOCIgbmFtZT0icGFpbnR0b29sc19saW5lX2Rpc2FibGUiPgorICAgIDx2YWx1ZT7Ql9Cw0L/RgNC10YLQuNGC0Ywv0YDQsNC30YDQtdGI0LjRgtGMINC30LDQu9C40LLQutC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyOSIgbmFtZT0iY2hhbmdlX3dpZHRoX2Fycm93X2Rvd25fc2xpZGVyIj4KKyAgICA8dmFsdWU+0JjQt9C80LXQvdC40YLRjCDRiNC40YDQuNC90YMg0LvQuNC90LjQuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzAiIG5hbWU9ImNsb3NlX3NtYWxsX3BvcHVwcyI+CisgICAgPHZhbHVlPtC30LDQutGA0YvRgtGMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzMSIgbmFtZT0icGFpbnRfdG9vbF9sZXR0ZXIiPgorICAgIDx2YWx1ZT7QuNC30LzQtdC90LjRgtGMINGA0LDQt9C80LXRgCDRiNGA0LjRhNGC0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMyIiBuYW1lPSJyZWNvcmRpbmdzbGlzdF9kZWxldGUiPgorICAgIDx2YWx1ZT7Qo9C00LDQu9C40YLRjCDQt9Cw0L/QuNGB0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMzIiBuYW1lPSJyZWNvcmRpbmdzbGlzdF9yZWNvcmRlZEJ5R3Vlc3QiPgorICAgIDx2YWx1ZT7Qk9C+0YHRgtGMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNCIgbmFtZT0icmVjb3JkaW5nc2xpc3RfcmVjb3JkZWRieSI+CisgICAgPHZhbHVlPtCf0L46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNSIgbmFtZT0icmVjb3JkaW5nc190YWJsZV9oZWFkX25hbWUiPgorICAgIDx2YWx1ZT7QmNC80Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM2IiBuYW1lPSJyZWNvcmRpbmdzX3RhYmxlX2hlYWRfcm9vbSI+CisgICAgPHZhbHVlPtCa0L7QvNC90LDRgtCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNyIgbmFtZT0icmVjb3JkaW5nc190YWJsZV9oZWFkX2RhdGUiPgorICAgIDx2YWx1ZT7QlNCw0YLQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzgiIG5hbWU9InJlY29yZF9zdGFydF9jYW5jZWwiPgorICAgIDx2YWx1ZT7QvtGC0LzQtdC90LjRgtGMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzOSIgbmFtZT0icmVjb3JkX3N0YXJ0X3N0YXJ0Ij4KKyAgICA8dmFsdWU+0YHRgtCw0YDRgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDAiIG5hbWU9ImZpbGVzYnJvd3Nlcl90YWJsZV9oZWFkX25hbWUiPgorICAgIDx2YWx1ZT7QmNC80Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQxIiBuYW1lPSJmaWxlc2Jyb3dzZXJfdGFibGVfaGVhZF9kYXRlIj4KKyAgICA8dmFsdWU+0JTQsNGC0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQyIiBuYW1lPSJjaGF0X2NsZWFyX2hpc3RvcnkiPgorICAgIDx2YWx1ZT7Qo9C00LDQu9C40YLRjCDQu9C+0LMg0YfQsNGC0LAg0L3QsCDRgdC10YDQstC10YDQtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDMiIG5hbWU9ImNoYXRfb3ZlcmFsbF9oZWFkZXIiPgorICAgIDx2YWx1ZT7Qp9Cw0YI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ0IiBuYW1lPSJjaGF0X3NlbmRfYnRuIj4KKyAgICA8dmFsdWU+0L/QvtGB0LvQsNGC0Ywg0YHQvtC+0LHRidC10L3QuNC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NSIgbmFtZT0iY2hhdF9lbW90X2J0biI+CisgICAgPHZhbHVlPtCY0LrQvtC90LrQuCDRjdC80L7RhtC40Lk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ2IiBuYW1lPSJjaGF0X2Vtb3Rfd2luIj4KKyAgICA8dmFsdWU+0JjQutC+0L3QutC4INGN0LzQvtGG0LjQuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDciIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5ncyI+CisgICAgPHZhbHVlPtCY0LfQvNC10L3QuNGC0Ywg0L/Rg9Cx0LvQuNGH0L3Ri9C1INGD0YHRgtGA0L7QudGB0YLQstCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0OCIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2NvbWJvIj4KKyAgICA8dmFsdWU+0JDRg9C00LjQviDQuCDQstC40LTQtdC+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0OSIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2NvbWJvIj4KKyAgICA8dmFsdWU+0KLQvtC70YzQutC+INCw0YPQtNC40L48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUwIiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT7QotC+0LvRjNC60L4g0LLQuNC00LXQvjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTEiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPtCx0LXQtyDQsNGD0LTQuNC+INC4INCy0LjQtNC10L4gKNGB0YLQsNGC0LjRh9C10YHQutC+0LUg0LjQt9C+0LHRgC4pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1MiIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2luZm9fdGV4dCI+CisgICAgPHZhbHVlPtCQ0YPQtNC40L4v0LLQuNC00LXQviDRgSDQstCw0YjQtdCz0L4g0LrQvtC80L/RjNGO0YLQtdGA0LAg0L3QtSDQsdGD0LTQtdGCINC+0L/Rg9Cx0LvQuNC60L7QstCw0L3Qviwg0L7Qv9GD0LHQu9C40LrQvtCy0LDQvdCwINCx0YPQtNC10YIg0YLQvtC70YzQutC+INC60LDRgNGC0LjQvdC60LAg0LjQtyDQstCw0YjQtdCz0L4g0L/RgNC+0YTQuNC70Y8uINCS0YvQsdC10YDQuNGC0LUg0Y3RgtGDINGD0YHRgtCw0L3QvtCy0LrRgywg0LXRgdC70Lgg0LLRiyDQuNGB0L/Ri9GC0YvQstCw0LXRgtC1INC/0YDQvtCx0LvQtdC80Ysg0YEg0YjQuNGA0LjQvdC+0Lkg0LrQsNC90LDQu9CwINC40LvQuCDQtdGB0LvQuCDRgyDQstCw0YEg0LzQtdC00LvQtdC90L3QvtC1INGB0L7QtdC00LjQvdC10L3QuNC1INGBINCY0L3RgtC10YDQvdC10YLQvtC8PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1MyIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9tb25kYXkiPgorICAgIDx2YWx1ZT7Qn9CdPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV90dWVzZGF5Ij4KKyAgICA8dmFsdWU+0JLQojwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTUiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfd2VkbmVzZGF5Ij4KKyAgICA8dmFsdWU+0KHQoDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTYiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfdGh1cnNkYXkiPgorICAgIDx2YWx1ZT7Qp9CiPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NyIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9mcmlkYXkiPgorICAgIDx2YWx1ZT7Qn9CiPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1OCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9zYXR1cmRheSI+CisgICAgPHZhbHVlPtCh0JE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU5IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3N1bmRheSI+CisgICAgPHZhbHVlPtCS0KE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYwIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX21vbmRheSI+CisgICAgPHZhbHVlPtCf0L7QvdC10LTQtdC70YzQvdC40Lo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYxIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1R1ZXNkYXlMYWJlbCI+CisgICAgPHZhbHVlPtCS0YLQvtGA0L3QuNC6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MiIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9XZWRuZXNkYXlMYWJlbCI+CisgICAgPHZhbHVlPtCh0YDQtdC00LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYzIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1RodXJzZGF5TGFiZWwiPgorICAgIDx2YWx1ZT7Qp9C10YLQstC10YDQszwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjQiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfRnJpZGF5TGFiZWwiPgorICAgIDx2YWx1ZT7Qn9GP0YLQvdC40YbQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjUiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfU2F0dXJkYXlMYWJlbCI+CisgICAgPHZhbHVlPtCh0YPQsdCx0L7RgtCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NiIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9TdW5kYXlMYWJlbCI+CisgICAgPHZhbHVlPtCS0L7RgdC60YDQtdGB0LXQvdGM0LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY3IiBuYW1lPSJjYWxlbmRhcl93ZWVrbnVtYmVyX2hlYWRlciI+CisgICAgPHZhbHVlPtCa0J08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY4IiBuYW1lPSJjYWxlbmRhcl93ZWVrbnVtYmVyX2hlYWRlclRvb2x0aXAiPgorICAgIDx2YWx1ZT7QmtCw0LvQtdC90LTQsNGA0L3QsNGPINC90LXQtNC10LvRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjkiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT7Qr9C90LLQsNGA0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDcwIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+0KTQtdCy0YDQsNC70Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDcxIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+0JzQsNGA0YI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDcyIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+0JDQv9GA0LXQu9GMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3MyIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPtCc0LDQuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzQiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT7QmNGO0L3RjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzUiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT7QmNGO0LvRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzYiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT7QkNCy0LPRg9GB0YI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc3IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+0KHQtdC90YLRj9Cx0YDRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzgiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT7QntC60YLRj9Cx0YDRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzkiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT7QndC+0Y/QsdGA0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgwIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+0JTQtdC60LDQsdGA0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgxIiBuYW1lPSJjYWxlbmRhcndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT7QmtCw0LvQtdC90LTQsNGA0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgyIiBuYW1lPSJyb29tYWRtaW5fbGFiZWxOdW1iZXJPZlBhcnRpY2lwYW50cyI+CisgICAgPHZhbHVlPtCj0YfQsNGB0YLQvdC40LrQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODMiIG5hbWU9InJvb21WYWx1ZV9hZHZhbmNlZFNldHRpbmdzIj4KKyAgICA8dmFsdWU+0J/QvtC60LDQt9Cw0YLRjCDRg9GB0YLQsNC90L7QstC60LggTGF5b3V0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NCIgbmFtZT0icm9vbUFkbWluX2xheW91dF92aWRlb1giPgorICAgIDx2YWx1ZT5YIHwgWTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODUiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfdmlkZW9ZIj4KKyAgICA8dmFsdWU+0KjQuNGA0LjQvdCwIHwg0JLRi9GB0L7RgtCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NiIgbmFtZT0icm9vbUFkbWluX2xheW91dCI+CisgICAgPHZhbHVlPtCS0LjQtNC10L4t0LrQvtC90YLQtdC50L3QtdGAPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NyIgbmFtZT0icm9vbUFkbWluX2xheW91dF9tb2QiPgorICAgIDx2YWx1ZT7QnNC+0LTQtdGA0LDRhtC40Y8t0LrQvtC90YLQtdC50L3QtdGAPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4OCIgbmFtZT0icm9vbUFkbWluX2xheW91dF9tb2RfcG9zIj4KKyAgICA8dmFsdWU+WDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODkiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPtCU0L7RgdC60LAt0LrQvtC90YLQtdC50L3QtdGAPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5MCIgbmFtZT0icm9vbUFkbWluX2xheW91dF93aGl0ZWJvYXJkX3Nob3ciPgorICAgIDx2YWx1ZT7QoNCw0LfRgNC10YjQtdC90L48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkxIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmRfcG9zIj4KKyAgICA8dmFsdWU+WCB8IFk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkyIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmQiPgorICAgIDx2YWx1ZT7QqNC40YDQuNC90LAgfCDQktGL0YHQvtGC0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkzIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X2ZpbGVzIj4KKyAgICA8dmFsdWU+0YTQsNC50LvRiyzRh9Cw0YIs0YPRh9Cw0YHRgtC90LjQutC4IC0g0LrQvtC90YLQtdC50L3QtdGAPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NCIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlc19zaG93Ij4KKyAgICA8dmFsdWU+0KDQsNC30YDQtdGI0LXQvdC+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NSIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlc19wb3MiPgorICAgIDx2YWx1ZT5YIHxZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NiIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlcyI+CisgICAgPHZhbHVlPtCo0LjRgNC40L3QsCB8INCS0YvRgdC+0YLQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTciIG5hbWU9Im1vZGVyYXRvcl9nb25lX21lc3NhZ2UiPgorICAgIDx2YWx1ZT7QnNC+0LTQtdGA0LDRgtC+0YAg0L/QvtC60LjQtNCw0LXRgiDQutC+0LzQvdCw0YLRgy4g0KHQtdC50YfQsNGBINC90LXRgiDQvNC+0LTQtdGA0LDRgtC+0YDQvtCyLiDQktGLINC80L7QttC10YLQtSDQt9Cw0L/RgNC+0YHQuNGC0Ywg0YTRg9C90LrRhtC40Lgg0LzQvtC00LXRgNCw0YLQvtGA0LAsINC70LjQsdC+INC/0L7QtNC+0LbQtNCw0YLRjC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk4IiBuYW1lPSJtb2RlcmF0b3JfbWVzc2FnZV9ldmVudF9ub19tb2QiPgorICAgIDx2YWx1ZT7QkiDRjdGC0L7QuSDQutC+0LzQvdCw0YLQtSDQvdC10YIg0LzQvtC00LXRgNCw0YLQvtGA0LAsINC90L4g0LXRgdGC0Ywg0YPRh9Cw0YHRgtC90LjQutC4LiDQktGLINC80L7QttC10YLQtSDQt9Cw0L/RgNC+0YHQuNGC0Ywg0YTRg9C90LrRhtC40Lgg0LzQvtC00LXRgNCw0YLQvtGA0LAg0LjQu9C4INC/0L7QtNC+0LbQtNCw0YLRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTkiIG5hbWU9ImZlZWRiYWNrX3RlbXBsYXRlX3N1YmplY3QiPgorICAgIDx2YWx1ZT7QntCx0YDQsNGC0L3QsNGPINGB0LLRj9C30YwgJEFQUF9OQU1FPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwMCIgbmFtZT0iaW52aXRhdGlvbl90ZW1wbGF0ZV9oZWFkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FOiDQn9GA0LjQs9C70LDRiNC10L3QuNC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwMSIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X2Zyb20iPgorICAgIDx2YWx1ZT7QodC+0L7QsdGJ0LXQvdC40LUg0L7RgiDRg9GH0LDRgdGC0L3QuNC60LA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwMiIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X21lc3NhZ2UiPgorICAgIDx2YWx1ZT7QotC10LrRgdGCINGB0L7QvtCx0YnQtdC90LjRjzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAzIiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfY2xpY2tfdGV4dCI+CisgICAgPHZhbHVlPtCU0LvRjyDRgtC+0LPQviwg0YfRgtC+0LHRiyDQv9GA0LjQvdGP0YLRjCDRg9GH0LDRgdGC0LjQtSDQsiDRgdC+0LLQtdGJ0LDQvdC40LgsINC90LDQttC80LjRgtC1INC90LAg0YHQu9C10LTRg9GOINGB0YHRi9C70LrRgzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA0IiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfY2xpY2tfdGV4dF9saW5rIj4KKyAgICA8dmFsdWU+0J3QsNC20LzQuNGC0LUg0LfQtNC10YHRjCDQtNC70Y8g0YLQvtCz0L4sINGH0YLQvtCx0Ysg0LLQvtC50YLQuCDQsiDQutC+0LzQvdCw0YLRgyDRgdC+0LLQtdGJ0LDQvdC40Lk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA1IiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfY2xpY2tfdGV4dF9oZWxwIj4KKyAgICA8dmFsdWU+0JXRgdC70Lgg0L3QtSDRg9C00LDRkdGC0YHRjyDQv9C10YDQtdC50YLQuCDQv9C+INGB0YHRi9C70LrQtSwg0YHQutC+0L/QuNGA0YPQudGC0LUg0Y3RgtC+0YIgVVJMINCyINCx0YDQsNGD0LfQtdGAOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDYiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9oZWFkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FINGA0LXQs9C40YHRgtGA0LDRhtC40Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA3IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfaGVhZDIiPgorICAgIDx2YWx1ZT7QktCw0YjQuCDQv9C+0LvRjNC30L7QstCw0YLQtdC70YzRgdC60LjQtSDQtNCw0L3QvdGL0LU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwOCIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X3VzZXJuYW1lIj4KKyAgICA8dmFsdWU+0JvQvtCz0LjQvTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA5IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfcGFzcyI+CisgICAgPHZhbHVlPtCf0LDRgNC+0LvRjDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTEwIiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfbWFpbCI+CisgICAgPHZhbHVlPmUtbWFpbDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTExIiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfYnllIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FLdCa0L7QvNCw0L3QtNCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxMiIgbmFtZT0icmVnaXN0ZXJfbWFpbF9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+0KDQtdCz0LjRgdGC0YDQsNGG0LjRjyDQsiAkQVBQX05BTUU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTEzIiBuYW1lPSJyZXNldF9wYXNzd29yZF90ZW1wbGF0ZV9oZWFkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FOiDQn9C10YDQtdGD0YHRgtCw0L3QvtCy0LjRgtGMINC/0LDRgNC+0LvRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTQiIG5hbWU9InJlc2V0X3Bhc3N3b3JkX3RlbXBsYXRlX3Rlc3RfbGluayI+CisgICAgPHZhbHVlPtCa0LvQuNC60L3QuNGC0LUg0L3QsCDRjdGC0L7RgiDQu9C40L3QuiDQuCDQstCy0LXQtNC40YLQtSDQvdC+0LLRi9C5INC/0LDRgNC+0LvRjDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE1IiBuYW1lPSJyZXNldF9wYXNzd29yZF90ZW1wbGF0ZV90ZXh0Ml9saW5rIj4KKyAgICA8dmFsdWU+0JrQu9C40LrQvdC40YLQtSDQt9C00LXRgdGMLCDQuCDQstCy0LXQtNC40YLQtSDQvdC+0LLRi9C5INC/0LDRgNC+0LvRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTYiIG5hbWU9InJlc2V0X3Bhc3N3b3JkX3RlbXBsYXRlX3RleHQzX2xpbmsiPgorICAgIDx2YWx1ZT7QldGB0LvQuCDQvdC1INGD0LTQsNGR0YLRgdGPINC/0LXRgNC10LnRgtC4INC/0L4g0YHRgdGL0LvQutC1LCDRgdC60L7Qv9C40YDRg9C50YLQtSDRjdGC0L7RgiBVUkwg0LIg0LHRgNCw0YPQt9C10YA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNyIgbmFtZT0icmVzZXRfcGFzc3dvcmRfbWFpbF9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+0J/QtdGA0LXRg9GB0YLQsNC90L7QstC60LAg0L/QsNGA0L7Qu9GPICRBUFBfTkFNRTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTgiIG5hbWU9ImRhdGVSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPtCf0L7QttCw0LvRg9C50YHRgtCwLCDQstCy0LXQtNC40YLQtSDQtNCw0YLRgywg0L3QsNC/0YDQuNC80LXRgCAyNC4xMi4yMDAxIChkZC5tbS55eXl5KTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTkiIG5hbWU9ImVtYWlsUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT7Qn9C+0LbQsNC70YPQudGB0YLQsCwg0LLQstC10LTQuNGC0LUgZS1tYWlsLCDQvdCw0L/RgNC40LzQtdGAIG5hbWVAbWFpbC5jb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIwIiBuYW1lPSJmbG9hdFJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+0J/QvtC20LDQu9GD0LnRgdGC0LAsINCy0LLQtdC00LjRgtC1INCy0LXRidC10YHRgtCy0LXQvdC90L7QtSDRh9C40YHQu9C+LCDQvdCw0L/RgNC40LzQtdGAIDEuMDA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIxIiBuYW1lPSJudW1iZXJSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPtCf0L7QttCw0LvRg9C50YHRgtCwLCDQstCy0LXQtNC40YLQtSDRhtC10LvQvtC1INGH0LjRgdC70L4sINC90LDQv9GA0LjQvNC10YAgMTAwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyMiIgbmFtZT0icGhvbmVSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPtCf0L7QttCw0LvRg9C50YHRgtCwLCDQstCy0LXQtNC40YLQtSDRgtC10LvQtdGE0L7QvdC90YvQuSDQvdC+0LzQtdGALCDQvdCw0L/RgNC40LzQtdGAICsrNDkgMDEyMyAxMjMxMjM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIzIiBuYW1lPSJ0aW1lUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT7Qn9C+0LbQsNC70YPQudGB0YLQsCwg0LLQstC10LTQuNGC0LUg0LLRgNC10LzRjywg0L3QsNC/0YDQuNC80LXRgCAxMjoyMyAoaGg6bW0pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3ciPgorICAgIDx2YWx1ZT7Ql9Cw0YnQuNGC0LjRgtGMINC/0LDRgNC+0LvQtdC8PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNSIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfcGFzc3dvcmRMYWJlbCI+CisgICAgPHZhbHVlPtCf0LDRgNC+0LvRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjYiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkTGFiZWwiPgorICAgIDx2YWx1ZT7Qn9C10YDQuNC+0LQg0LTQtdC50YHRgtCy0LjRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjciIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkIj4KKyAgICA8dmFsdWU+0JHQtdGB0LrQvtC90LXRh9C90L48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI4IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZCI+CisgICAgPHZhbHVlPtCf0LXRgNC40L7QtDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjkiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkIj4KKyAgICA8dmFsdWU+0J7QtNC90L7QutGA0LDRgtC90L48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMwIiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZEZyb21MYWJlbCI+CisgICAgPHZhbHVlPtCU0LXQudGB0YLQstGD0LXRgiDQvtGCOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzEiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkVG9MYWJlbCI+CisgICAgPHZhbHVlPtCU0LXQudGB0YLQstGD0LXRgiDQtNC+OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzIiIG5hbWU9Imludml0YXRpb25fd2luZG93X01haWxTdWJqZWN0Ij4KKyAgICA8dmFsdWU+0J/RgNC40LPQu9Cw0YjQtdC90LjQtSDQsiAkQVBQX05BTUU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMzIiBuYW1lPSJpbnZpdGF0aW9uX2Vycm9yIj4KKyAgICA8dmFsdWU+0JTQu9GPINGN0YLQvtCz0L4g0LrQvtC00LAg0L/RgNC40LPQu9Cw0YjQtdC90LjRjyDQvdC10YIg0LTQvtGB0YLRg9C/0L3Ri9GFINC/0YDQuNCz0LvQsNGI0LXQvdC40Lk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM0IiBuYW1lPSJpbnZpdGF0aW9uX2Vycm9yIj4KKyAgICA8dmFsdWU+0K3RgtC+INC/0YDQuNCz0LvQsNGI0LXQvdC40LUg0YPQttC1INC40YHQv9C+0LvRjNC30L7QstCw0L3Qvi4g0J/RgNC40LPQu9Cw0YjQtdC90LjQtSDRjdGC0L7Qs9C+INGC0LjQv9CwINC90LUg0LzQvtC20LXRgiDQsdGL0YLRjCDQv9C10YDQtdC40YHQv9C+0LvRjNC30L7QstCw0L3Qvi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM1IiBuYW1lPSJpbnZpdGF0aW9uX2Vycm9yIj4KKyAgICA8dmFsdWU+0K3RgtC+0YIg0LrQvtC0INC/0YDQuNCz0LvQsNGI0LXQvdC40Y8g0L3QtdC00LXQudGB0YLQstC40YLQtdC70LXQvS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM2IiBuYW1lPSJpbnZpdGF0aW9uX3Bhc3MiPgorICAgIDx2YWx1ZT7Qn9Cw0YDQvtC70Yw6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzNyIgbmFtZT0iaW52aXRhdGlvbl9wYXNzX2J0biI+CisgICAgPHZhbHVlPtCf0YDQvtCy0LXRgNC40YLRjCDQv9Cw0YDQvtC70Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM4IiBuYW1lPSJpbnZpdGF0aW9uX3Bhc3NfZXJyb3IiPgorICAgIDx2YWx1ZT7QndC10LLQtdGA0L3Ri9C5INC/0LDRgNC+0LvRjCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM5IiBuYW1lPSJCcm93c2VyIj4KKyAgICA8dmFsdWU+0JHRgNCw0YPQt9C10YA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQwIiBuYW1lPSJhdWRpb192aWRlbyI+CisgICAgPHZhbHVlPtCh0LjQvdGF0YDQvtC90LjQt9C+0LLQsNGC0Ywg0LDRg9C00LjQvi/QstC40LTQtdC+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0MSIgbmFtZT0iZXJyb3JDb2RlX2ludmFsaWRTZXNzaW9uIj4KKyAgICA8dmFsdWU+0JrQvtGA0YDQtdC60YLQvdGL0Lkg0LvQvtCz0LjQvSwg0L3QviDRjdGC0LAg0YHQtdGB0YHQuNGPINC90LXQsNC60YLQuNCy0L3QsCDQuNC70Lgg0L3QtSDQt9Cw0L/QuNGB0LDQvdCwINC90LAg0YHQtdGA0LLQtdGA0LUuINCS0LDQvCDQvdGD0LbQvdC+INC/0L7Qu9GD0YfQuNGCINC90L7QstGL0LkgSUQg0YHQtdGB0YHQuNC4INC4INC/0LXRgNC10LvQvtCz0LjQvdC40YLRjNGB0Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQyIiBuYW1lPSJlcnJvcmNvZGVfc2V0VXNlck9iamVjdCI+CisgICAgPHZhbHVlPlNlc3Npb25JZCDQvdC1INC30LDQu9C+0LPQuNC90LXQvSDQuNC70Lgg0L3QtSDQuNC80LXQtdGCINC/0YDQsNCyINCw0LTQvNC40L3QuNGB0YLRgNCw0YLQvtGA0LAuINCn0YLQvtCx0Ysg0LLRgdGC0YDQsNC40LLQsNGC0Ywg0L3QvtCy0YvRhSDQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuSwgU09BUCBHYXRld2F5J9GOINC90YPQttC10L0g0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GMINGBINC/0YDQsNCy0LDQvNC4INCw0LTQvNC40L3QuNGB0YLRgNCw0YLQvtGA0LAuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0MyIgbmFtZT0iZXJyb3Jjb2RlX2xvZ2luQnlSZW1vdGVVc2VyIj4KKyAgICA8dmFsdWU+0KMg0Y3RgtC+0Lkg0YHQtdGB0YHQuNC4INC90LXRgiBjb25uZWN0ZWQgUmVtb3RldXNlci1EYXRhLiDQm9C40LHQviDQstGLINC90LUg0LLRi9C30LLQsNC70LggU09BUC1HYXRld2F5INC/0LXRgNC10LQg0LTQvtGB0YLRg9C/0L7QvCDQuiDQv9GA0LjQu9C+0LbQtdC90LjRjiwg0LvQuNCx0L4g0LjRgdC/0L7Qu9GM0LfRg9C10YLQtSDQvdC10LLQtdGA0L3Ri9C5IElEINGB0LXRgdGB0LjQuC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ0IiBuYW1lPSJkZWJ1Z19tZXNzYWdlX3JlY29yZGluZyI+CisgICAgPHZhbHVlPtCjINGN0YLQvtCz0L4g0YDQtdC60L7RgNC00LXRgNCwIC0gQmV0YS3QstC10YDRgdC40Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ1IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWFZhbHVlIj4KKyAgICA8dmFsdWU+eDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDYiIG5hbWU9InByb3BlcnR5UGFuZWxYVmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPtC+0YHRjCB4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0NyIgbmFtZT0icHJvcGVydHlQYW5lbFlWYWx1ZSI+CisgICAgPHZhbHVlPnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ4IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWVZhbHVlTGFiZWwiPgorICAgIDx2YWx1ZT7QvtGB0YwgeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDkiIG5hbWU9InByb3BlcnR5UGFuZWxXaWR0aFZhbHVlIj4KKyAgICA8dmFsdWU+dzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTAiIG5hbWU9InByb3BlcnR5UGFuZWxXaWR0aFZhbHVlTGFiZWwiPgorICAgIDx2YWx1ZT7RiNC40YDQuNC90LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUxIiBuYW1lPSJwcm9wZXJ0eVBhbmVsSGVpZ2h0VmFsdWUiPgorICAgIDx2YWx1ZT5oPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1MiIgbmFtZT0icHJvcGVydHlQYW5lbEhlaWdodFZhbHVlTGFiZWwiPgorICAgIDx2YWx1ZT7QstGL0YHQvtGC0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUzIiBuYW1lPSJwcm9wZXJ0eU9wYWNpdHlTbGlkZXIiPgorICAgIDx2YWx1ZT7QmNC30LzQtdC90LjRgtGMINC/0YDQvtC30YDQsNGH0L3QvtGB0YLRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTQiIG5hbWU9ImJyb3dzZXJPcGVuIj4KKyAgICA8dmFsdWU+0JHRgNCw0YPQt9C10YAg0L7RgtC60YDRi9GC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU1IiBuYW1lPSJicm93c2VyQ2xvc2UiPgorICAgIDx2YWx1ZT7QkdGA0LDRg9C30LXRgCDQt9Cw0LrRgNGL0YLRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTYiIG5hbWU9ImNvbm5lY3Rpb25Mb3N0TWVzc2FnZSI+CisgICAgPHZhbHVlPtCf0L7RgtC10YDRj9C90L4g0YHQvtC10LTQuNC90LXQvdC40LUg0YEg0YHQtdGA0LLQtdGA0L7QvC4g0JfQsNCz0YDRg9C30LjRgtC1INC30LDQvdC+0LLQviDQv9GA0LjQu9C+0LbQtdC90LjQtSwg0LvQuNCx0L4g0L/RgNC+0LLQtdGA0YzRgtC1INCy0LDRiNGDINGB0LXRgtGMLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTciIG5hbWU9IjU1NyI+CisgICAgPHZhbHVlPtCj0LrQsNC30LDRgtC10LvRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTgiIG5hbWU9InN5bmMgbWVzc2FnZSBoZWFkZXIiPgorICAgIDx2YWx1ZT7QodC40L3RhdGA0L7QvdC40LfQsNGG0LjRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTkiIG5hbWU9IlN5bmNocm9uaXppbmcgbWVzc2FnZSI+CisgICAgPHZhbHVlPtCh0LjQvdGF0YDQvtC90LjQt9Cw0YbQuNGPINGD0YfQsNGB0YLQvdC40LrQvtCyLCDQv9C+0LTQvtC20LTQuNGC0LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYwIiBuYW1lPSJleHBvcnRUb1NWRyI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjEiIG5hbWU9ImV4cG9ydFRvSW1hZ2UiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYyIiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MyIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjQiIG5hbWU9ImV4cG9ydFRvSW1hZ2UiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY1IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+0J3QsNC/0L7QvNC40L3QsNGC0LXQu9GMOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjYiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT7QmtCw0YLQtdCz0L7RgNC40Y86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2NyIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPtCf0L7QstGC0L7RgNC10L3QuNC1OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjgiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5ub25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2OSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPtCc0LXRgdGC0L46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MCIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPtCd0LDRh9Cw0LvQvjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzEiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT7QmtC+0L3QtdGGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MiIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPtCd0LDQt9Cy0LDQvdC40LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTczIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+0JrQvtC80LzQtdC90YLQsNGA0LjQuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzQiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT7Qn9GA0LjQs9C70LDRiNC10L3QuNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPtCV0LbQtdC00L3QtdCy0L3QvjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzYiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT7QldC20LXQvNC10YHRj9GH0L3QvjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzciIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT7QldC20LXQs9C+0LTQvdC+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3OCIgbmFtZT0iYWxlcnQiPgorICAgIDx2YWx1ZT7QmtC+0L3QtdGGINGB0L7QstC10YnQsNC90LjRjyDQv9C+0YHQu9C1INC90LDRh9Cw0LvQsCDRgdC+0LLQtdGJ0LDQvdC40Y8hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3OSIgbmFtZT0iYWxlcnQiPgorICAgIDx2YWx1ZT7Qn9C+0LbQsNC70YPQudGB0YLQsCwg0LLRgdGC0LDQstGM0YLQtSDQt9Cw0LPQvtC70L7QstC+0LohPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MCIgbmFtZT0iNTgwIj4KKyAgICA8dmFsdWU+UlRMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MSIgbmFtZT0iNTgxIj4KKyAgICA8dmFsdWU+0JDQutGC0LjQstC40YDRg9C50YLQtSDRjdGC0L4sINC10YHQu9C4INC90LAg0LLQsNGI0LXQvCDRj9C30YvQutC1INC/0LjRiNGD0YIg0YHQv9GA0LDQstCwINC90LDQu9C10LLQvjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODIiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+0LjQvdGE0L7RgNC80LDRhtC40L7QvdC90LDRjyDQv9Cw0L3QtdC70Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgzIiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPtCf0L7RgdC80L7RgtGA0LXRgtGMINC30LDQv9C40YHQsNC90L3Ri9C1INGB0L7QstC10YnQsNC90LjRjyDQuCDQu9C10LrRhtC40Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg0IiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPtCh0L7QstC10YnQsNC90LjQtSAtINC/0YDQvtCy0LXQtNC40YLQtSDQutC+0L3RhNC10YDQtdC90YbQuNGOINGBIDQg0YPRh9Cw0YHRgtC90LjQutCw0LzQuCAo0YfQuNGB0LvQviDRg9GH0LDRgdGC0L3QuNC60L7QsiDQvNC+0LbQtdGCINC00L7RhdC+0LTQuNGC0Ywg0LTQviAxNinRgyDQutCw0LbQtNC+0LPQviDQsdGD0LTQtdGCINCw0YPQtNC40L4v0LLQuNC00LXQvjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODUiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+0JvQtdC60YbQuNGPIC0g0L/RgNC+0LLQtdC00LjRgtC1INC60L7QvdGE0LXRgNC10L3RhtC40Y4g0YEg0YPRh9Cw0YHRgtC90LjQutCw0LzQuCwg0YfQuNGB0LvQviDQutC+0YLQvtGA0YvRhSDigJMg0LTQviAyMDAuINCQ0YPQtNC40L4v0LLQuNC00LXQviDQsdGD0LTQtdGCINGC0L7Qu9GM0LrQviDRgyDQvNC+0LTQtdGA0LDRgtC+0YDQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODYiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+0KHQvtC30LTQsNC90LjQtSDQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuSwg0LrQvtC80L3QsNGCLCDQvtGA0LPQsNC90LjQt9Cw0YbQuNC5ICsg0LjQt9C80LXQvdC40YLRjCDQutC+0L3RhNC40LPRg9GA0LDRhtC40Y48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg3IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT7QodC10LnRh9Cw0YEg0YPRh9Cw0YHRgtC90LjQutC+0LIg0LIg0Y3RgtC+0Lkg0LrQvtC80L3QsNGC0LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg4IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODkiIG5hbWU9InJvb20gQWRtaW5pc3RyYXRpb24gcm9vbWNsaWVudHMgbGlzdCI+CisgICAgPHZhbHVlPtCb0L7Qs9C40L08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkwIiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT54PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5MSIgbmFtZT0ic3dmIHN5bmMgbWVzc2FnZSI+CisgICAgPHZhbHVlPtCX0LDQs9GA0YPQt9C60LAg0LTQvtC60YPQvNC10L3RgtCwLiDQn9C+0LTQvtC20LTQuNGC0LUsINC/0L7QutCwINC60LvQuNC10L3RgiDRgdC40L3RhdGA0L7QvdC40LfQuNGA0YPQtdGC0YHRjy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkyIiBuYW1lPSJ1cGxvYWQgZGlhbG9nIj4KKyAgICA8dmFsdWU+0JfQsNCz0YDRg9C20LXQvdC+LCDQutC+0L3QstC10YDRgtCw0YbQuNGPINC00L7QutGD0LzQtdC90YLQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTMiIG5hbWU9InVwbG9hZCBkaWFsb2ciPgorICAgIDx2YWx1ZT7QndCw0YfQsNGC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk0IiBuYW1lPSJ1cGxvYWQgZGlhbG9nIj4KKyAgICA8dmFsdWU+0JjQvNC/0L7RgNGCINGE0LDQudC70LAuINCS0YvQsdC10YDQuNGC0LUg0YTQsNC50Lsg0L3QsCDQstCw0YjQtdC8INC60L7QvNC/0YzRjtGC0LXRgNC1LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTUiIG5hbWU9InVwbG9hZCBEaWFsb2ciPgorICAgIDx2YWx1ZT7QntGC0LzQtdC90LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk2IiBuYW1lPSJ1cGxvYWQgRGlhbG9nIj4KKyAgICA8dmFsdWU+0JLRi9Cx0YDQsNGC0Ywg0YTQsNC50Ls8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk3IiBuYW1lPSJhZG1pbmlzdHJhdGlvbiBuYXZpZ2F0aW9uIj4KKyAgICA8dmFsdWU+0KHQvtC10LTQuNC90LXQvdC40Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk4IiBuYW1lPSJjb25mYWRtaW4gdmFsdWUgbGlzdCI+CisgICAgPHZhbHVlPtCX0L3QsNGH0LXQvdC40LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk5IiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+SUQg0L/QvtGC0L7QutCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwMCIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPtCb0L7Qs9C40L08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAxIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+0KHQvtC10LTQuNC90LXQvdC+INGBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwMiIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPtCa0L7QvNC90LDRgtCwL9Ca0L7Quy3QstC+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwMyIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPtCe0YLQutC70Y7Rh9C40YLRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDQiIG5hbWU9ImtpY2sgdXNlciBjb25maXJtYXRpb24gZGlhbG9nIj4KKyAgICA8dmFsdWU+0J7RgtC60LvRjtGH0LjRgtGMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwNSIgbmFtZT0ia2ljayB1c2VyIGNvbmZpcm1hdGlvbiBkaWFsb2ciPgorICAgIDx2YWx1ZT7QktGLINC00LXQudGB0YLQstC40YLQtdC70YzQvdC+INGF0L7RgtC40YLQtSDQvtGC0LrQu9GO0YfQuNGCINGN0YLQvtCz0L4g0LrQu9C40LXQvdGC0LA/INCa0LvQuNC10L3RgiDQvNC+0LbQtdGCINC30LDQu9C+0LPQuNC90LjRgtGM0YHRjyDQstC90L7QstGMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwNiIgbmFtZT0ia2ljayB1c2VyIG1lc3NhZ2UgZGlhbG9nIj4KKyAgICA8dmFsdWU+0JLQsNGI0LAg0YHQtdGB0YHQuNGPINC30LDQstC10YDRiNC10L3QsCDQsNC00LzQuNC90LjRgdGC0YDQsNGC0L7RgNC+0Lwg0LjQu9C4INC80L7QtNC10YDQsNGC0L7RgNC+0LwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwNyIgbmFtZT0idXNlcmFsdGVyc2VsZl9waG9uZSI+CisgICAgPHZhbHVlPtCi0LXQu9C10YTQvtC9PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwOCIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+0K3RgtC+0YIg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GMIC0g0LzQvtC00LXRgNCw0YLQvtGAINCyINGN0YLQvtC5INC60L7QvNC90LDRgtC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwOSIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+0KPRh9Cw0YHRgtC90LjQutGDINGA0LDQt9GA0LXRiNC10L3QviDRgNC40YHQvtCy0LDRgtGMINC90LAg0LTQvtGB0LrQtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTAiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPijQoNC1KdGB0YLQsNGA0YIg0LDRg9C00LjQvi/QstC40LTQtdC+INC40LvQuCDQuNC30LzQtdC90LXQvdC40LUg0YPRgdGC0LDQvdC+0LLQvtC6INGD0YHRgtGA0L7QudGB0YLQstCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMSIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+0KDQsNC30YDQtdGI0LjRgtGMINGN0YLQvtC80YMg0YPRh9Cw0YHRgtC90LjQutGDINGA0LjRgdC+0LLQsNGC0Ywg0L3QsCDQtNC+0YHQutC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMiIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+0JfQsNC/0YDQtdGC0LjRgtGMINGA0LjRgdC+0LLQsNGC0Ywg0L3QsCDQtNC+0YHQutC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMyIgbmFtZT0iY29uZmVyZW5jZVBhbmVscyI+CisgICAgPHZhbHVlPtCj0YfQsNGB0YLQvdC40LrQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTQiIG5hbWU9ImNvbmZlcmVuY2VQYW5lbHMiPgorICAgIDx2YWx1ZT7QlNC+0LrRg9C80LXQvdGC0Ys8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE1IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+0JTQvtGB0LrQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTYiIG5hbWU9ImNvbmZlcmVuY2VQYW5lbHMiPgorICAgIDx2YWx1ZT7Qp9Cw0YI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE3IiBuYW1lPSJvcmdhbml6YXRpb24gY2hvb3NlIGluZm8iPgorICAgIDx2YWx1ZT7QktCw0YjQtdC5INGD0YfQtdGC0L3QvtC5INC30LDQv9C40YHQuCDRgdC+0L7RgtCy0LXRgtGB0YLQstGD0LXRgiDQvdC10YHQutC+0LvRjNC60L4g0L7RgNCz0LDQvdC40LfQsNGG0LjQuS4g0J/QvtC20LDQu9GD0LnRgdGC0LAsINCy0YvQsdC10YDQuNGC0LUg0L7QtNC90YMg0L7RgNCz0LDQvdC40LfQsNGG0LjRjiDQtNC70Y8g0LTQsNC90L3QvtC5INGB0LXRgdGB0LjQuC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE4IiBuYW1lPSJlcnJvciBtZXNzYWdlIHJvb20gZnVsbCI+CisgICAgPHZhbHVlPtCt0YLQsCDQutC+0LzQvdCw0YLQsCDQt9Cw0L/QvtC70L3QtdC90LAuINCf0L7Qv9GA0L7QsdGD0LnRgtC1INC/0L7Qv9C+0LfQttC1LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTkiIG5hbWU9InJvb210eXBlcyI+CisgICAgPHZhbHVlPtCi0LjQvyDQutC+0LzQvdCw0YLRizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjAiIG5hbWU9ImFwcG9pbnRlZF9yb29tIj4KKyAgICA8dmFsdWU+0JrQvtC80L3QsNGC0LAg0L3QsNC30L3QsNGH0LXQvdC40Lk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIxIiBuYW1lPSJzZXJ2ZXJ0aW1lIj4KKyAgICA8dmFsdWU+0JLRgNC10LzRjyDRgdC10YDQstC10YDQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjIiIG5hbWU9Imludl9yZW1pbmRlcl90ZW1wbGF0ZV9oZWFkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FOiDQndCw0L/QvtC80LjQvdCw0L3QuNC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyMyIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfZnJvbSI+CisgICAgPHZhbHVlPtCh0L7QvtCx0YnQtdC90LjQtSDQvtGCINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI0IiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9tZXNzYWdlIj4KKyAgICA8dmFsdWU+0KLQtdC60YHRgiDRgdC+0L7QsdGJ0LXQvdC40Y86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNSIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfY2xpY2tfdGV4dCI+CisgICAgPHZhbHVlPtCU0LvRjyDRgtC+0LPQviwg0YfRgtC+0LHRiyDQv9GA0LjQvdGP0YLRjCDRg9GH0LDRgdGC0LjQtSDQsiDRgdC+0LLQtdGJ0LDQvdC40LgsINC60LvQuNC60L3QuNGC0LUg0L3QsCDRgdGB0YvQu9C60YM6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNiIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfY2xpY2tfdGV4dF9saW5rIj4KKyAgICA8dmFsdWU+0J3QsNC20LzQuNGC0LUg0LfQtNC10YHRjCDQtNC70Y8g0YLQvtCz0L4sINGH0YLQvtCx0Ysg0LLQvtC50YLQuCDQsiDQutC+0LzQvdCw0YLRgyDRgdC+0LLQtdGJ0LDQvdC40Lk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI3IiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9jbGlja190ZXh0X2hlbHAiPgorICAgIDx2YWx1ZT7QldGB0LvQuCDQvdC1INGD0LTQsNGR0YLRgdGPINC/0LXRgNC10LnRgtC4INC/0L4g0YHRgdGL0LvQutC1LCDRgdC60L7Qv9C40YDRg9C50YLQtSDRjdGC0L7RgiBVUkwg0LIg0LHRgNCw0YPQt9C10YA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyOCIgbmFtZT0iYnRuX3NlYXJjaF9pbnRlcm4iPgorICAgIDx2YWx1ZT7QuNC80LXRjtGJ0LjQtdGB0Y8g0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyOSIgbmFtZT0iYnRuX3NlYXJjaF9leHRlcm4iPgorICAgIDx2YWx1ZT7Qv9GA0LjQs9C70LDRgdC40YLRjCDQtNGA0YPQs9C40YU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMwIiBuYW1lPSJsYmxfcHJlbmFtZSI+CisgICAgPHZhbHVlPtCY0LzRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzEiIG5hbWU9ImxibF9uYW1lIj4KKyAgICA8dmFsdWU+0KTQsNC80LjQu9C40Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMyIiBuYW1lPSJsYmxfZW1haWwiPgorICAgIDx2YWx1ZT5lLW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMzIiBuYW1lPSJsb2dvdXRDb25maXJtX3RpdGxlIj4KKyAgICA8dmFsdWU+0J/QvtC00YLQstC10YDQttC00LXQvdC40LUg0LLRi9GF0L7QtNCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNCIgbmFtZT0ibG9nb3V0Q29uZmlybV9zdXJlX3RvX2xvZ291dF9xdWVzdGlvbiI+CisgICAgPHZhbHVlPtCS0Ysg0YPQstC10YDQtdC90YssINGH0YLQviDRhdC+0YLQuNGC0LUg0LLRi9C50YLQuD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM1IiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT7QlNC10LnRgdGC0LLQuNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPtCU0LXQvNC+INC60L7QvNC90LDRgtCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNyIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPtCS0YDQtdC80Y8g0LTQtdC80L7QvdGB0YLRgNCw0YbQuNC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzOCIgbmFtZT0ibWVldGluZyBUaW1lciI+CisgICAgPHZhbHVlPtCi0LDQudC80LXRgCDRgdC+0LLQtdGJ0LDQvdC40Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM5IiBuYW1lPSJtZWV0aW5nIFRpbWVyIj4KKyAgICA8dmFsdWU+0K3RgtC+IC0g0LTQtdC80L4g0LrQvtC80L3QsNGC0LAuINCn0YLQvtCx0Ysg0L7RgtC60LvRjtGH0LjRgtGMINGN0YLQviDRgdC+0L7QsdGJ0LXQvdC40LUsINC70LjQsdC+INGB0L7Qt9C00LDQudGC0LUg0LvQuNGH0L3Rg9GOINC60L7QvNC90LDRgtGDLCDQu9C40LHQviDRg9GB0YLQsNC90L7QstC40YLQtSDRgdC+0LHRgdGC0LLQtdC90L3Ri9C5INGB0LXRgNCy0LXRgC4g0JLRiyDQsNCy0YLQvtC80LDRgtC40YfQtdGB0LrQuCDQsdGD0LTQtdGC0LUg0L7RgtC60LvRjtGH0LXQvdGLINC+0YIg0LrQvtC80L3QsNGC0Ysg0YfQtdGA0LXQtzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQwIiBuYW1lPSJtZWV0aW5nIHJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT7QnNC+0LTQtdGA0LjRgNGD0LXRgtGB0Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQxIiBuYW1lPSJtb2RlcmF0ZWQgcm9vbSB3YWl0aW5nIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7Qn9C+0LTQvtC20LTQuNGC0LUsINC/0L7QutCwINC80L7QtNC10YDQsNGC0L7RgCDQt9Cw0LnQtNGR0YIg0LIg0LrQvtC80L3QsNGC0YMuINCc0L7QtNC10YDQsNGC0L7RgNC+0Lwg0LzQvtC20LXRgiDQsdGL0YLRjCDQu9C10LrRgtC+0YAsINCw0LTQvNC40L3QuNGB0YLRgNCw0YLQvtGALCDQu9C40LHQviDRgdC+0LfQtNCw0YLQtdC70Ywg0Y3RgtC+0Lkg0LrQvtC80L3QsNGC0YsuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MiIgbmFtZT0iZXJyb3IgcG9wdXAiPgorICAgIDx2YWx1ZT7QntCaPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MyIgbmFtZT0id2luZG93IHNjcmVlbnNoYXJpbmciPgorICAgIDx2YWx1ZT7QlNGA0YPQs9C+0Lkg0YPRh9Cw0YHRgtC90LjQuiDQtNC10LvQsNC10YIg0Y3QutGA0LDQvSDQvtCx0YnQuNC8PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0NCIgbmFtZT0id2luZG93IHNjcmVlbiBzaGFyaW5nIj4KKyAgICA8dmFsdWU+0KPRh9Cw0YHRgtC90LjQuiDQtNC10LvQsNC10YIg0Y3QutGA0LDQvSDQvtCx0YnQuNC8OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDUiIG5hbWU9IndpbmRvdyBzY3JlZW4gc2hhcmluZyI+CisgICAgPHZhbHVlPtCh0LTQtdC70LDRgtGMINGN0LrRgNCw0L0g0L7QsdGJ0LjQvDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDYiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+0JTQvtCx0LDQstC40YLRjCDQvdC+0LLQvtC1INGB0L7QstC10YnQsNC90LjQtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDciIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+0JrQvtC80L3QsNGC0LAg0YHQvtCy0LXRidCw0L3QuNC5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0OCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT7QmtC+0LzQvdCw0YLQsCDQu9C10LrRhtC40Lk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ5IiBuYW1lPSJtYWluIG1lbnUgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPtCc0L7QtNC10YDQsNGG0LjRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTAiIG5hbWU9Im1lbnUgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPtCc0L7QtNC10YDQuNGA0L7QstCw0YLRjCDRg9GH0LDRgdGC0L3QuNC60L7QsjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTEiIG5hbWU9Im1lbnUgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPtCc0L7QtNC10YDQuNGA0L7QstCw0YLRjCDQutC+0LzQvdCw0YLRizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTIiIG5hbWU9Im1vZGVyYXRvciBvcmciPgorICAgIDx2YWx1ZT5NPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1MyIgbmFtZT0iY29uZmlybSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+0KXQvtGC0LjRgtC1INGB0LTQtdC70LDRgtGMINGN0YLQvtCz0L4g0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPINC80L7QtNC10YDQsNGC0L7RgNC+0Lwg0Y3RgtC+0Lkg0L7RgNCz0LDQvdC40LfQsNGG0LjQuD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU0IiBuYW1lPSJlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+0JLRi9Cx0LXRgNC40YLQtSDQvtGA0LPQsNC90LjQt9Cw0YbQuNC4INC/0LXRgNC10LQg0YLQtdC8LCDQutCw0Log0LTQvtCx0LDQstC70Y/RgtGMINCyINC90LXRkSDQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTUiIG5hbWU9ImNob29zZSB1c2VyIHdpbmRvdyI+CisgICAgPHZhbHVlPtCc0L7QtNC10YDQsNGC0L7RgCDQvtGA0LPQsNC90LjQt9Cw0YbQuNC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1NiIgbmFtZT0ibW9kZXJhdG9yIG9yZyB1c2VycyI+CisgICAgPHZhbHVlPtCS0Ysg0LTQtdC50YHRgtCy0LjRgtC10LvRjNC90L4g0YXQvtGC0LjRgtC1INGD0LTQsNC70LjRgtGMINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyDQuNC3INGN0YLQvtC5INC+0YDQs9Cw0L3QuNC30LDRhtC40Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU3IiBuYW1lPSJvcmcgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPtCt0YLQvtGCINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjCAtINC80L7QtNC10YDQsNGC0L7RgDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTgiIG5hbWU9Im9yZyBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+0K3RgtC+0YIg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GMIC0g0L3QtSDQvNC+0LTQtdGA0LDRgtC+0YA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU5IiBuYW1lPSJlcnJvciBtZXNzYWdlIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT7QpdC+0YLQuNGC0LUsINGH0YLQvtCx0Ysg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GMINC90LUg0LHRi9C7INC80L7QtNC10YDQsNGC0L7RgNC+0Lwg0LIg0Y3RgtC+0Lkg0L7RgNCz0LDQvdC40LfQsNGG0LjQuD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYwIiBuYW1lPSJtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+0JTQvtCx0LDQstC70LXQvdC40LUg0LjQu9C4INGD0LTQsNC70LXQvdC40LUg0L/QvtC70YzQty3Qu9GPL9C60L7QvNC90LDRgtGLLCDQvtGC0L3QvtGB0Y/RidC40YXRgdGPINC6INCy0LDRiNC10LnQvtGA0LPQsNC90LjQt9Cw0YbQuNC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MSIgbmFtZT0iZGVsZXRlIGNvbmZpcm0gcXVlc3Rpb24iPgorICAgIDx2YWx1ZT7QktGLINC00LXQudGB0YLQstC40YLQtdC70YzQvdC+INGF0L7RgtC40YLQtSDRg9C00LDQu9C40YLRjCDRjdGC0YMg0LfQsNC/0LjRgdGMPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjIiIG5hbWU9ImRlbGV0ZSBjb25maXJtIHF1ZXN0aW9uIHVzZXIgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPtCS0Ysg0LTQtdC50YHRgtCy0LjRgtC10LvRjNC90L4g0YXQvtGC0LjRgtC1INGD0LTQsNC70LjRgtGMINGN0YLQvtCz0L4g0L/QvtC70YzQty3Qu9GPINC40Lcg0LLQsNGI0LXQuSDQvtGA0LPQsNC90LjQt9Cw0YbQuNC4PyDQkiDRjdGC0L7QvCDRgdC70YPRh9Cw0LUg0LLRiyDQu9C40YjRjCDRg9C00LDQu9C40YLQtSDQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQvCDQuNC3INC+0YDQs9Cw0L3QuNC30LDRhtC40LgsINCwINC00LvRjyDQv9C+0LvQvdC+0LPQviDRg9C00LDQu9C10L3QuNGPINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyDQvdGD0LbQvdC+INC30LDQudGC0Lgg0L3QsCDQv9Cw0L3QtdC70Ywg0LDQtNC80LjQvdC40YHRgtGA0LjRgNC+0LLQsNC90LjRjy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYzIiBuYW1lPSJlcnJvciBtZXNzYWdlIHNlbGYgZGVsZXRpbmciPgorICAgIDx2YWx1ZT7QktGLINC90LUg0LzQvtC20LXRgtC1INGD0LTQsNC70LjRgtGMINGB0LXQsdGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NCIgbmFtZT0iZXJyb3IgbWVzc2FnZSBhdXRoIj4KKyAgICA8dmFsdWU+0K3RgtC+0YIg0LzQtdGC0L7QtCDQvNC+0LbQvdC+INCy0YvQt9Cy0LDRgtGMLCDRgtC+0LvRjNC60L4g0LjRgdC/0L7Qu9GM0LfRg9GPINCw0LrQutCw0YPQvdGCINCw0LTQvNC40L3QuNGB0YLRgNCw0YLQvtGA0LAuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NSIgbmFtZT0iZXJyb3IgbWVzc2FnZSBTT0FQIj4KKyAgICA8dmFsdWU+0J3QtSDQsdGL0LvQviDRgdC10YHRgdC40LgsINCw0YHRgdC+0YbQuNC40YDRg9GO0YnQuNC50YHRjyDRgSDRjdGC0LjQvCBJRC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY2IiBuYW1lPSJlcnJvciBtZXNzYWdlIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT7QrdGC0L4gLSDQsNC60LrQsNGD0L3RgiDQsNC00LzQuNC90LjRgdGC0YDQsNGC0L7RgNCwINC40LvQuCDQvNC+0LTQtdGA0LDRgtC+0YDQsC4g0JLRiyDQvNC+0LbQtdGC0LUg0YDQtdC00LDQutGC0LjRgNC+0LLQsNGC0Ywg0LXQs9C+INGC0L7Qu9GM0LrQviDRh9C10YDQtdC3INC/0LDQvdC10LvRjCDQsNC00LzQuNC40L3QuNGB0YLRgNC40YDQvtCy0LDQvdC40Y8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NyIgbmFtZT0iZW1haWwgdmVyaWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+0JTQu9GPINC30LDQstC10YDRiNC10L3QuNGPINGA0LXQs9C40YHRgtGA0LDRhtC40Lgg0LrQu9C40LrQvdC40YLQtSDQvdCwINGN0YLRgyDRgdGB0YvQu9C60YMg0LjQu9C4INGB0LrQvtC/0LjRgNGD0LnRgtC1IFVSTCDQsiDQvtC60L3QviDQsdGA0LDRg9C30LXRgNCwLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjgiIG5hbWU9ImVtYWlsIHZlcmlmaWNhdGlvbiI+CisgICAgPHZhbHVlPtCd0LDQttC80LjRgtC1INC00LvRjyDQv9GA0L7QstC10YDQutC4INCy0LDRiNC10LPQviBlLW1haWwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2OSIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPtCU0LvRjyDRjdGC0L7Qs9C+INCl0LXRiNCwINC90LUg0L3QsNC50LTQtdC90L4g0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10LkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3MCIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPtCt0YLQvtGCINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjCDRg9C20LUg0LDQutGC0LjQstC40YDQvtCy0LDQvSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjcxIiBuYW1lPSJlcnJvck1lc3NhZ2VfVXNlckFjdGl2YXRpb25TZXJ2bGV0IFtBY3RpdmF0ZVVzZXJdIj4KKyAgICA8dmFsdWU+0JLRiyDRg9GB0L/QtdGI0L3QviDQsNC60YLQuNCy0LjRgNC+0LLQsNC70Lgg0LLQsNGIINCw0LrQutCw0YPQvdGCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3MiIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPtCS0YXQvtC00LjRgtC1INGB0LXQudGH0LDRgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzMiIG5hbWU9ImxvZ2luRXJyb3JNZXNzYWdlID0gdXNlciB3YXMgbm90IGFjdGl2YXRlZCI+CisgICAgPHZhbHVlPtCS0LDRiCDQsNC60LrQsNGD0L3RgiDQvdC1INCw0LrRgtC40LLQuNGA0L7QstCw0L0uINCh0L3QsNGH0LDQu9CwINC/0LXRgNC10LnQtNC40YLQtSDQv9C+INGB0YHRi9C70LrQtSwg0L/QvtC70YPRh9C10L3QvdC+0Lkg0LIg0L/QuNGB0YzQvNC1LCDQutC+0YLQvtGA0L7QtSDQstGLINC/0L7Qu9GD0YfQuNC70Lgg0L/RgNC4INGA0LXQs9C40YHRgtGA0LDRhtC40LguPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3NCIgbmFtZT0icmVnaXN0ZXIgdmVyaWZpY2F0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7QktGLINGD0YHQv9C10YjQvdC+INC30LDRgNC10LPQuNGB0YLRgNC40YDQvtCy0LDQu9C40YHRjC4g0JLQsNC8INC+0YLQv9GA0LDQstC70LXQvdC+INC/0LjRgdGM0LzQviDRgSDQutC+0LTQvtC8INC/0YDQvtCy0LXRgNC60LguINCf0YDQvtCy0LXRgNGM0YLQtSDQstCw0YjRgyDQv9C+0YfRgtGDLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzUiIG5hbWU9InBhcnRpY2lwYW50cyBwYW5lbCI+CisgICAgPHZhbHVlPtCh0L3Rj9GC0Ywg0YDQvtC70Ywg0LzQvtC00LXRgNCw0YLQvtGA0LAg0YMg0Y3RgtC+0LPQviDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc2IiBuYW1lPSJwYXJ0aWNpcGFudHMgcGFuZWwiPgorICAgIDx2YWx1ZT7QlNCw0YLRjCDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y4g0L/RgNCw0LLQsCDQvNC+0LTQtdGA0LDRhtC40Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc3IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7Qn9C+0LvRjNC30L7QstCw0YLQtdC70Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc4IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7QlNC+0YHRgtGD0L8g0Log0LTQvtGB0LrQtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzkiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPtCc0L7QtNC10YDQsNGC0L7RgDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODAiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPtCc0L7QtNC10YDQsNGG0LjRjzog0JLRi9Cx0LXRgNC40YLQtSDQv9C+0LvRjC3Qu9GPINC40Lcg0YHQv9C40YHQutCwINC00LvRjyDRgtC+0LPQviwg0YfRgtC+0LHRiyDQtNCw0YLRjCDQtdC80YMg0LTQvtGB0YLRg9C/INC6INC00L7RgdC60LUsINC80L7QtNC10YDQsNGG0LjQuCDQuNC70Lgg0LLQuNC00LXQvi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgxIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7QrdGC0L7RgiDQv9C+0LvRjNC30L7QstCw0YLQtdC70Ywg0YPQttC1INC80L7QtNC10YDQsNGC0L7RgCwg0L/QvtGN0YLQvtC80YMg0L7QvSDQsNCy0YLQvtC80LDRgtC40YfQtdGB0LrQuCDQuNC80LXQtdGCINC/0YDQsNCy0L4g0YDQuNGB0L7QstCw0YLRjC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgyIiBuYW1lPSJldmVudCB1c2VyIGxpc3QgZXJyb3IiPgorICAgIDx2YWx1ZT7QrdGC0L4g0LLRiyEg0JLRiyDQvdC1INC80L7QttC10YLQtSDRg9C00LDQu9C40YLRjCDQv9GA0LDQstCwINC80L7QtNC10YDQsNGG0LjQuCDRgyDRgdC10LHRjy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgzIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7QoNCw0LfRgNC10YjQuNGC0Ywg0Y3RgtC+0LzRgyDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y4g0L/Rg9Cx0LvQuNC60L7QstCw0YLRjCDRgdCy0L7RkSDQkNGD0LTQuNC+L9CS0LjQtNC10L48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg0IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7Qo9C00LDQu9C40YLRjCDQkNGD0LTQuNC+L9CS0LjQtNC10L4g0Y3RgtC+0LPQviDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg1IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7QryDRhdC+0YfRgyDQv9C+0LvRg9GH0LjRgtGMINC/0YDQsNCy0LAg0LzQvtC00LXRgNCw0YbQuNC4INCyINGN0YLQvtC5INC60L7QvNC90LDRgtC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4NiIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+0K8g0YXQvtGH0YMg0YDQuNGB0L7QstCw0YLRjCDQvdCwINC00L7RgdC60LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg3IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7QryDRhdC+0YfRgyDRgdC00LXQu9Cw0YLRjCDQvNC+0ZEg0JDRg9C00LjQvi/QktC40LTQtdC+INC+0LHRidC40Lw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg4IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7QktGLIC0g0LzQvtC00LXRgNCw0YLQvtGAINCyINGN0YLQvtC5INC60L7QvNC90LDRgtC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4OSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+0JLQsNC8INGA0LDQt9GA0LXRiNC10L3QviDRgNC40YHQvtCy0LDRgtGMINC90LAg0LTQvtGB0LrQtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTAiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPtCS0LDQvCDRgNCw0LfRgNC10YjQtdC90L4g0YHQtNC10LvQsNGC0Ywg0LLQsNGI0LUg0JDRg9C00LjQvi/QktC40LTQtdC+INC+0LHRidC40Lw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkxIiBuYW1lPSJlcnJvcnR5cGUiPgorICAgIDx2YWx1ZT7QodC+0L7QsdGJ0LXQvdC40LUg0LzQvtC00LXRgNCw0YLQvtGA0YM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkyIiBuYW1lPSJhcHBseSBmb3IgbW9kIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7Qn9C+0LvRjNC30L7QstCw0YLQtdC70Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkzIiBuYW1lPSJhcHBseSBmb3IgbW9kIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7QttC10LvQsNC10YIg0YHRgtCw0YLRjCDQvNC+0LTQtdGA0LDRgtC+0YDQvtC8LiDQlNC70Y8g0YLQvtCz0L4sINGH0YLQvtCx0Ysg0YDQsNC30YDQtdGI0LjRgtGMINC40LvQuCDQt9Cw0L/RgNC10YLQuNGC0Ywg0YTRg9C90LrRhtC40Y4g0LzQvtC00LXRgNCw0YbQuNC4LCDQuNGB0L/QvtC70YzQt9GD0LnRgtC1INC40LrQvtC90LrQuCDRgdGC0LDRgtGD0YHQsCDRgNGP0LTQvtC8INGBINC40LzQtdC90LDQvNC4INCyINGB0L/QuNGB0LrQtSDRg9GH0LDRgdGC0L3QuNC60L7Qsi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk0IiBuYW1lPSJhcHBseSBmb3Igd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPtC20LXQu9Cw0LXRgiDRgNC40YHQvtCy0LDRgtGMINC90LAg0LTQvtGB0LrQtS4g0JTQu9GPINGC0L7Qs9C+LCDRh9GC0L7QsdGLINGA0LDQt9GA0LXRiNC40YLRjCDQuNC70Lgg0LfQsNC/0YDQtdGC0LjRgtGMINGA0LjRgdC+0LLQsNGC0Ywg0L3QsCDQtNC+0YHQutC1LCDQuNGB0L/QvtC70YzQt9GD0LnRgtC1INC40LrQvtC90LrQuCDRgdGC0LDRgtGD0YHQsCDRgNGP0LTQvtC8INGBINC40LzQtdC90LDQvNC4INCyINGB0L/QuNGB0LrQtSDRg9GH0LDRgdGC0L3QuNC60L7Qsi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk1IiBuYW1lPSI2OTUiPgorICAgIDx2YWx1ZT7QttC10LvQsNC10YIg0YHQtNC10LvQsNGC0Ywg0YHQstC+0ZEg0JDRg9C00LjQvi/QktC40LTQtdC+INC+0LHRidC40LwuINCU0LvRjyDRgtC+0LPQviwg0YfRgtC+0LHRiyDRgNCw0LfRgNC10YjQuNGC0Ywg0LjQu9C4INC30LDQv9GA0LXRgtC40YLRjCDRg9GH0LDRgdGC0L3QuNC60LDQvCDQtNC10LvQsNGC0Ywg0JDRg9C00LjQvi/QktC40LTQtdC+INC+0LHRidC40LwsINC40YHQv9C+0LvRjNC30YPQudGC0LUg0LjQutC+0L3QutC4INGB0YLQsNGC0YPRgdCwINGA0Y/QtNC+0Lwg0YEg0LjQvNC10L3QsNC80Lgg0LIg0YHQv9C40YHQutC1INGD0YfQsNGB0YLQvdC40LrQvtCyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTYiIG5hbWU9Im1vZGVyYXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPtCd0YPQttC90L4g0L/QvtC00L7QttC00LDRgtGMLCDQv9C+0LrQsCDQvNC+0LTQtdGA0LDRgtC+0YAg0LLQvtC50LTRkdGCINCyINC60L7QvNC90LDRgtGDLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTciIG5hbWU9ImNhbGVuZGFyIGJ1dHRvbiI+CisgICAgPHZhbHVlPtCe0YLQvNC10L3QuNGC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk4IiBuYW1lPSJjYWxlbmRhciBidXR0b24iPgorICAgIDx2YWx1ZT7QodC+0YXRgNCw0L3QuNGC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk5IiBuYW1lPSJjYWxlbmRhciBjb21wb25lbnQiPgorICAgIDx2YWx1ZT7QlNC10L3RjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDAiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPtCc0LXRgdGP0YY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAxIiBuYW1lPSJjYWxlbmRhciBjb21wb25lbnQiPgorICAgIDx2YWx1ZT7Qk9C+0LQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAyIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+0JfQsNCz0YDRg9C30LjRgtGMINGE0LDQudC7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwMyIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPtCU0L7QsdCw0LLQuNGC0Ywg0L/QsNC/0LrRgzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDQiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7QntCx0L3QvtCy0LjRgtGMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwNSIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPtCa0L7RgNC30LjQvdCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwNiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPtCc0L7QuCDRhNCw0LnQu9GLICjQm9C+0LrQsNC70YzQvdC+0LUg0YPRgdGC0YDQvtC50YHRgtCy0L4pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwNyIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPtCk0LDQudC70Ysg0LjQtyDQutC+0LzQvdCw0YLRiyAo0J7QsdGJ0LXQtSDRg9GB0YLRgNC+0LnRgdGC0LLQvik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA4IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+0JTQvtCx0LDQstC40YLRjCDRhNCw0LnQuzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDkiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7QlNC+0LHQsNCy0LjRgtGMINC/0LDQv9C60YM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzEwIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+0KPQtNCw0LvQuNGC0Ywg0L/QsNC/0LrRgzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTEiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7QoNC10LTQsNC60YLQuNGA0L7QstCw0YLRjCDQuNC80Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzEyIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+0J3QvtCy0LDRjyDQv9Cw0L/QutCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMyIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPtCS0Ysg0YPQstC10YDQtdC90YssINGH0YLQviDRhdC+0YLQuNGC0LUg0YPQtNCw0LvQuNGC0Ywg0Y3RgtC+0YIg0L/Rg9C90LrRgj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE0IiBuYW1lPSJ1c2VyIGFkbWluIj4KKyAgICA8dmFsdWU+0J/QvtC40YHQujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTUiIG5hbWU9InVzZXIgYWRtaW4iPgorICAgIDx2YWx1ZT7Qn9C+0LjRgdC6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxNiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPtCe0YLQutGA0YvRgtGMINC00L7QutGD0LzQtdC90YI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE3IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+0J/QvtC60LDQt9Cw0YLRjCDQstGB0LUg0YTQsNC50LvRiyAo0LIg0LLQuNC00LUg0LTQtdGA0LXQstCwKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTgiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7Ql9Cw0LrRgNGL0YLRjCDQtNC+0LrRg9C80LXQvdGCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxOSIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPtCj0LTQsNC70LjRgtGMINGE0LDQudC7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyMCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPtCS0Ysg0L3QtSDQvNC+0LbQtdGC0LUg0YDQuNGB0L7QstCw0YLRjCDQvdCwINC00L7RgdC60LUuINCS0LDQvCDQvdGD0LbQvdC+INC70LjQsdC+INGB0YLQsNGC0Ywg0LzQvtC00LXRgNCw0YLQvtGA0L7QvCwg0LvQuNCx0L4g0L/QvtC70YPRh9C40YLRjCDQvtGCINC80L7QtNC10YDQsNGC0L7RgNCwINC/0YDQsNCy0L4g0L3QsCDRgNC40YHQvtCy0LDQvdC40LUuINCS0Ysg0LzQvtC20LXRgtC1INC/0L7Qv9GA0L7RgdC40YLRjCDQvNC+0LTQtdGA0LDRgtC+0YDQsCDQv9GA0LXQtNC+0YHRgtCw0LLQuNGC0Ywg0LLQsNC8INGC0LDQutC+0LUg0L/RgNCw0LLQvi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIxIiBuYW1lPSJwcm9wZXJ0eSBwYW5lbCI+CisgICAgPHZhbHVlPtCh0LLQvtC50YHRgtCy0LAg0LTQvtC60YPQvNC10L3RgtCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyMiIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+0JfQsNC/0YPRgdGC0LjRgtGMINC60LvQuNC10L3RgiAo0LLQvdC10YjQvdC40LkpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyMyIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+0JfQsNC/0YPRgdGC0LjRgtGMINC60LvQuNC10L3RgiAoSFRUUCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI0IiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT7Qn9C+0LvRjNC30L7QstCw0YLQtdC70Ywg0YXQvtGH0LXRgiDRgdC00LXQu9Cw0YLRjCDRgdCy0L7QuSDRjdC60YDQsNC9INC+0LHRidC40LwuINCl0L7RgtC40YLQtSDRg9Cy0LjQtNC10YLRjCDQtdCz0L4g0Y3QutGA0LDQvT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI1IiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT7QkiDQtNCw0L3QvdGL0Lkg0LzQvtC80LXQvdGCINCy0Ysg0L/Rg9Cx0LvQuNC60YPQtdGC0LUg0LLQsNGIINGN0LrRgNCw0L0uINCn0YLQvtCx0Ysg0L/RgNC10LrRgNCw0YLQuNGC0Ywg0L/Rg9Cx0LvQuNC60LDRhtC40Y4sINC90LDQttC80LjRgtC1INC60L3QvtC/0LrRgyAiU3RvcCIg0LrQu9C40LXQvdGC0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI2IiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT7QodC10YHRgdC40Y8g0L/Rg9Cx0LvQuNC60LDRhtC40Lgg0Y3QutGA0LDQvdCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNyIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+0JLRiyDRg9C20LUg0L7Qv9GD0LHQu9C40LrQvtCy0LDQu9C4INCy0LDRiCDRjdC60YDQsNC9PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyOCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT7Qn9GA0L7RgdC80L7RgtGA0YnQuNC6INGA0LDQsdC+0YfQtdCz0L4g0YHRgtC+0LvQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjkiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+0JLRi9C50YLQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzAiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+0J/Rg9Cx0LvQuNC60LDRgtC+0YAg0Y3QutGA0LDQvdCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT7QndCw0LbQvNC40YLQtSwg0YfRgtC+0LHRiyDQvtGC0LrRgNGL0YLRjCDQvtCx0YnQuNC5INC00L7RgdGC0YPQvyDQuiDQstCw0YjQtdC80YMg0Y3QutGA0LDQvdGDPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT7QntGC0LrRgNGL0YLRjCDQtNC+0YHRgtGD0L88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMzIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPtCf0YDQuNC+0YHRgtCw0L3QvtCy0LjRgtGMINC00L7RgdGC0YPQvzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzQiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+0JLRi9Cx0LXRgNC40YLQtSDQvtCx0LvQsNGB0YLRjCDRjdC60YDQsNC90LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM1IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPtCY0LfQvNC10L3QuNGC0Ywg0YjQuNGA0LjQvdGDPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT7Qo9GH0LDRgdGC0L3QuNC6INC30LDQutC+0L3Rh9C40Lsg0L/Rg9Cx0LvQuNC60L7QstCw0YLRjCDRgdCy0L7QuSDRgNCw0LHQvtGH0LjQuSDRgdGC0L7QuzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzciIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+0JjQt9C80LXQvdC40YLRjCDQstGL0YHQvtGC0YM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM4IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPtCh0LzQtdGJ0LXQvdC40LUgWDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzkiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+0KHQvNC10YnQtdC90LjQtSBZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0MCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT7QqNC40YDQuNC90LA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0MSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT7QktGL0YHQvtGC0LA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0MiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT7QodC+0LXQtNC40L3QtdC90LjQtSDQt9Cw0LLQtdGA0YjQtdC90L4g0YHQtdGA0LLQtdGA0L7QvDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDMiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+0J7RgtC80LXQvdCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NCIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT7Ql9Cw0L/Rg9GB0YLQuNGC0Ywg0LLQvdC10YjQvdC40Lk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ1IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPtCf0L7Qu9C90L7RgdGC0YzRjiDQt9Cw0LrRgNGL0LIg0YHQtdGB0YHQuNGOLCDQstGLINC90LUg0YHQvNC+0LbQtdGC0LUg0LHQvtC70YzRiNC1INC/0LXRgNC10LfQsNC/0YPRgdGC0LjRgtGMINC/0YDQvtGB0LzQvtGC0YDRidC40Log0LTQu9GPINC90LXRkTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDYiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+0J/QvtC00YLQstC10YDQtNC40YLQtSDQt9Cw0LrRgNGL0YLQuNC1INGB0LXRgdGB0LjQuCDQv9GA0L7RgdC80L7RgtGA0YnQuNC60LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ3IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPtCh0LTQtdC70LDRgtGMINGN0LrRgNCw0L0g0L7QsdGJ0LjQvDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDgiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+0KHQtdGB0YHQuNGPINC30LDQv9C40YHQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDkiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT7QodC+0LLQvNC10YHRgtC90YvQuSDQv9GA0L7RgdC80L7RgtGAPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MCIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPtCaINGB0L7QttCw0LvQtdC90LjRjiwgRmlyZWZveCDQvdCwINCe0KEgV2luZG93cyDQvdC1INC/0L7QtNC00LXRgNC20LjQstCw0LXRgiDRgdC+0LLQvNC10YHRgtC90YvQuSDQv9GA0L7RgdC80L7RgtGALiDQmNGB0L/QvtC70YzQt9GD0LnRgtC1INC00YDRg9Cz0L7QuSDQsdGA0LDRg9C30LXRgC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUxIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+0J/RgNC10LTRi9C00YPRidCw0Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUyIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+0KHQu9C10LTRg9GO0YnQsNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MyIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPtCf0LXRgNC10LPRgNGD0LfQuNGC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU0IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+0JTQvtC80LDRiNC90Y/RjyDRgdGC0YDQsNC90LjRhtCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1NSIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPtCX0LDQs9GA0YPQt9C40YLRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTYiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT7QlNC+0LHQsNCy0LjRgtGMINCyINCy0LDRiCDQv9GA0L7RhNC40LvRjCDRjdGC0YMg0LLQtdCxLdGB0YLRgNCw0L3QuNGG0YMg0LrQsNC6INGB0YLRgNCw0L3QuNGG0YMg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU3IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+0J3QsNGB0YLRgNC+0LnQutC4INGC0LXRgdGC0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU4IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+0J/RgNC+0LLQtdGA0YzRgtC1INGD0YHRgtCw0L3QvtCy0LrQuCDQvNC40LrRgNC+0YTQvtC90LAg0Lgg0LrQsNC80LXRgNGLINC/0LXRgNC10LQg0YLQtdC8LCDQutCw0Log0LLQvtC50YLQuCDQsiDQutC+0LzQvdCw0YLRgy4g0JfQsNC/0LjRiNC40YLQtSA1LdGB0LXQutGD0L3QtNC90L7QtSDRgtC10YHRgtC+0LLQvtC1INCy0LjQtNC10L4uINCf0L7RgdC70LUg0LfQsNC/0LjRgdC4INC80L7QttC90L4g0L/RgNC+0LjQs9GA0LDRgtGMINCy0LjQtNC10L4g0Lgg0L/RgNC+0LLQtdGA0LjRgtGMINC60LDRh9C10YHRgtCy0L4g0LrQsNGA0YLQuNC90LrQuCDQuCDQt9Cy0YPQutCwLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTkiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT7QkdC+0LvRjNGI0LUg0L3QtSDQv9C+0LrQsNC30YvQstCw0YLRjCDRjdGC0L7RgiDRgtC10LrRgdGCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPtCe0YLQvNC10L3QsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjEiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT7QmiDQutC+0L3RhNC10YDQtdC90YbQuNC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MiIgbmFtZT0iZWRpdCB2aWRlbyBzZXR0aW5ncyI+CisgICAgPHZhbHVlPtCR0L7Qu9GM0YjQtSDQvdC1INGB0L/RgNCw0YjQuNCy0LDRgtGMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MyIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPtCX0JDQn9CY0KHQrDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjQiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT7Qn9Cg0J7QmNCT0KDQkNCi0Kw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY1IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+0JzQvtC20L3QviDQv9GA0L7QtNC+0LvQttC40YLRjCDQsdC10Lcg0YLQtdGB0YLQuNGA0L7QstCw0L3QuNGPLCDQtdGB0LvQuCDQvdC1INC/0LvQsNC90LjRgNGD0LXRgtC1INC/0YPQsdC70LjQutC+0LLQsNGC0Ywg0LLQsNGIINCz0L7Qu9C+0YEg0Lgg0LLQuNC00LXQvi4g0KPRh9Cw0YHRgtC90LjQutC4INCx0LXQtyDQsNGD0LTQuNC+INC4INCy0LjQtNC10L4g0LzQvtCz0YPRgiDQuNGB0L/QvtC70YzQt9C+0LLQsNGC0Ywg0LTQvtGB0LrRgywg0L/Rg9Cx0LvQuNC60L7QstCw0YLRjCDRgdCy0L7QuSDRjdC60YDQsNC9LCDQsCDRgtCw0LrQttC1INGD0YfQsNGB0YLQstC+0LLQsNGC0Ywg0LIg0YfQsNGC0LUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NiIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPtCh0KLQntCfPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NyIgbmFtZT0iNzY3Ij4KKyAgICA8dmFsdWU+0KPRgNC+0LLQtdC90Ywg0LfQstGD0LrQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjgiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT7QodGC0LDRgNGCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2OSIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPtCj0YfQsNGB0YLQstGD0LnRgtC1INCyINC60L7QvdGE0LXRgNC10L3RhtC40Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzcwIiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+0J3QsNGH0L3QuNGC0LUg0LvQtdC60YbQuNGOPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MSIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPtCS0YvQsdC+0YAg0LrQvtC80L3QsNGC0Ys8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzcyIiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+0J3QsNGB0YLRgNC+0LnQutC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MyIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPtCaINC60L7QvdGE0LXRgNC10L3RhtC40Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc0IiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+0JrQsNC6INGD0YfQsNGB0YLQstC+0LLQsNGC0Ywg0LIg0LrQvtC90YTQtdGA0LXQvdGG0LjQuDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc1IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+0J3QsNGH0LDRgtGMINC30LDQv9C40YHRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzYiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT7QndC1INC/0L7QutCw0LfRi9Cy0LDRgtGMINC+0LrQvdC+INC/0YDQvtCy0LXRgNC60Lgg0LDRg9C00LjQvi/Qt9Cw0L/QuNGB0Lgg0LLQuNC00LXQviDQv9GA0Lgg0LLRhdC+0LTQtSDQsiDQutC+0L3RhNC10YDQtdC90YbQuNGOPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NyIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPtCf0YPQsdC70LjRh9C90YvQtSDQutC+0LzQvdCw0YLRizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzgiIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT7Qn9GD0LHQu9C40YfQvdGL0LzQuCDQutC+0LzQvdCw0YLQsNC80Lgg0LzQvtCz0YPRgiDQv9C+0LvRjNC30L7QstCw0YLRjNGB0Y8g0LLRgdC1INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzkiIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT7Qn9GA0LjQstCw0YLQvdGL0LUg0LrQvtC80L3QsNGC0Ys8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgwIiBuYW1lPSJQcml2YXRlIFJvb21zIj4KKyAgICA8dmFsdWU+0J/RgNC40LLQsNGC0L3Ri9C80Lgg0LrQvtC80L3QsNGC0LDQvNC4INC80L7Qs9GD0YIg0L/QvtC70YzQt9C+0LLQsNGC0YzRgdGPINGC0L7Qu9GM0LrQviDQv9C+0LvRjNC30L7QstCw0YLQtdC70Lgg0LjQtyDRgtC+0Lkg0LbQtSDQvtGA0LPQsNC90LjQt9Cw0YbQuNC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MSIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPtCc0L7QuCDQutC+0LzQvdCw0YLRizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODIiIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT7QmtC+0LzQvdCw0YLRiyDRjdGC0L7QuSDRgdC10LrRhtC40LggLSDQtNC70Y8g0L/QtdGA0YHQvtC90LDQu9GM0L3QvtCz0L4g0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40Y8uINCe0L3QuCDRgdC+0LfQtNCw0L3RiyDRh9C10YDQtdC3INC60LDQu9C10L3QtNCw0YDRjCwg0YMg0L3QuNGFINC10YHRgtGMINC90LDRh9Cw0LvQviDQuCDQutC+0L3QtdGGINC20LjQt9C90LguINCt0YLQuCDQutC+0LzQvdCw0YLRiyDQv9C10YDQtdGH0LjRgdC70LXQvdGLINC30LTQtdGB0Ywg0YLQvtC70YzQutC+INGC0L4g0LLRgNC10LzRjywg0L/QvtC60LAg0LjQvNC4INC80L7QttC90L4g0L/QvtC70YzQt9C+0LLQsNGC0YzRgdGPLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODMiIG5hbWU9InJlc3RyaWN0ZWQgcm9vbSI+CisgICAgPHZhbHVlPtCU0LvRjyDRjdGC0L7Qs9C+INC00LXQudGB0YLQstC40Y8g0LLRiyDQtNC+0LvQttC90Ysg0LHRi9GC0Ywg0LzQvtC00LXRgNCw0YLQvtGA0L7QvDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODQiIG5hbWU9Im1lbnUgb3B0aW9uIj4KKyAgICA8dmFsdWU+0J/QvtC00LDRgtGMINC30LDRj9Cy0LrRgyDQvdCwINC80L7QtNC10YDQsNGG0LjRjjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODUiIG5hbWU9Im1lbnUgb3B0aW9uIj4KKyAgICA8dmFsdWU+0J/QvtC00LDRgtGMINC30LDRj9Cy0LrRgyDQvdCwINC00L7RgdGC0YPQvyDQuiDQtNC+0YHQutC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NiIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT7Qn9C+0LTQsNGC0Ywg0LfQsNGP0LLQutGDINC90LAg0LTQvtGB0YLRg9C/INC6INC60LDQvNC10YDQtSDQuCDQvNC40LrRgNC+0YTQvtC90YM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg3IiBuYW1lPSJlcnJvciBtZXNzYWdlIHNvYXAgc2VjdXJlIGxvZ2luIj4KKyAgICA8dmFsdWU+0KXQtdGILdC60L7QtCDRjdGC0L7QuSDRgdC10YHRgdC40Lgg0YPQttC1INC40YHQv9C+0LvRjNC30L7QstCw0L0uINCd0LXQu9GM0LfRjyDQuNGB0L/QvtC70YzQt9C+0LLQsNGC0Ywg0LXQs9C+INC00LLQsNC20LTRiy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg4IiBuYW1lPSJkYXNoYm9hcmQgYnV0dG9uIj4KKyAgICA8dmFsdWU+0KHQotCQ0KDQojwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODkiIG5hbWU9ImV4aXQgY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPtCS0KvQpdCe0JQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkwIiBuYW1lPSJjb25mZXJlbmNlIHZpZXciPgorICAgIDx2YWx1ZT7QktGLINC90LAg0YHQsNC80L7QvCDQtNC10LvQtSDRhdC+0YLQuNGC0LUg0LLRi9C50YLQuD8g0JLQvtC30LzQvtC20L3Qviwg0LLQsNC8INC90YPQttC90L4g0YPQtNCw0LvQuNGC0Ywg0LfQsNCz0YDRg9C20LXQvdC90YvQtSDQtNC+0LrRg9C80LXQvdGC0YssINC+0YfQuNGB0YLQuNGC0Ywg0LTQvtGB0LrRgyDQuCDQuNGB0YLQvtGA0LjRjiDRh9Cw0YLQsC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkxIiBuYW1lPSJjb25mZXJlbmNlIHZpZXciPgorICAgIDx2YWx1ZT7QktGL0LnRgtC4INC40Lcg0LrQvtC90YTQtdGA0LXQvdGG0LjQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTIiIG5hbWU9Im1haW4gbWVudSI+CisgICAgPHZhbHVlPtCa0L7QvNC90LDRgtGLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5MyIgbmFtZT0ibWFpbiBtZW51Ij4KKyAgICA8dmFsdWU+0JLRi9Cx0LXRgNC40YLQtSDQutC+0LzQvdCw0YLRgyDQtNC70Y8g0YHQvtCy0LXRidCw0L3QuNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5NCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT7QkiDQutCw0LvQtdC90LTQsNGA0LUg0LXRgdGC0Ywg0L3QtdGB0L7RhdGA0LDQvdGR0L3QvdGL0LUg0YHQvtCx0YvRgtC40Y8uINCh0L7RhdGA0LDQvdC40YLQtSDQuNGFINC40LvQuCDRg9C00LDQu9C40YLQtS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk1IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPtCU0L7QsdCw0LLRjNGC0LUg0YXQvtGC0Y8g0LHRiyDQvtC00L3QvtCz0L4g0YPRh9Cw0YHRgtC90LjQutCwINCyINGB0L7QstC10YnQsNC90LjQtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTYiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+0JLRiyDQtNC10LnRgdGC0LLQuNGC0LXQu9GM0L3QviDRhdC+0YLQuNGC0LUg0YPQtNCw0LvQuNGC0Ywg0Y3RgtC+INGB0L7QsdGL0YLQuNC1PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTciIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+0J/RgNC10LTRg9C/0YDQtdC20LTQtdC90LjQtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTgiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+0JTQvtCx0LDQstC40YLRjCDRgdC+0LHRi9GC0LjQtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTkiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+0LTQtdC90Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAwIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPtC90LXQtNC10LvRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDEiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+0LzQtdGB0Y/RhjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDIiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+0J7Qv9C40YHQsNC90LjQtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDMiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+0KPRh9Cw0YHRgtC90LjQutC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIC0g0L/Qu9Cw0YLRhNC+0YDQvNCwINCy0LDRiNC40YUg0LLQtdCxLdC60L7QvdGE0LXRgNC10L3RhtC40LkuINCS0Ysg0LzQvtC20LXRgtC1IDEpINGB0LvQtdC00YPRjyDQuNC90YHRgtGA0YPQutGG0LjRj9C8LCDQvdCw0LbQsNGC0Ywg0LrQvdC+0L/QutGDICLQodGC0LDRgNGCIiDQuCDRg9GH0LDRgdGC0LLQvtCy0LDRgtGMINCyINC60L7QvdGE0LXRgNC10L3RhtC40Lgg0LjQu9C4IDIpINC/0LXRgNC10LnRgtC4INCyINC60LDQu9C10L3QtNCw0YDRjCDQuCDQvdCw0LfQvdCw0YfQuNGC0Ywg0LLRgNC10LzRjy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA1IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT7Ql9Cw0L/Qu9Cw0L3QuNGA0L7QstCw0YLRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDYiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT7Qp9GC0L7QsdGLINC90LDQt9C90LDRh9C40YLRjCDQutC+0L3RhNC10YDQtdC90YbQuNGOLCDQtNC+0LHQsNCy0YzRgtC1INC90L7QstC+0LUg0YHQvtCx0YvRgtC40LUg0LIg0LrQsNC70LXQvdC00LDRgNGMLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDciIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT7QndGD0LbQvdCwINC/0L7QvNC+0YnRjD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA4IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+0J7Qs9GA0LDQvdC40YfQtdC90L3QsNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwOSIgbmFtZT0ibHpjYWxlbmRlciI+CisgICAgPHZhbHVlPtCf0L7QuNGB0Lo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEwIiBuYW1lPSJsemNhbGVuZGVyIj4KKyAgICA8dmFsdWU+0JTQvtCx0LDQstC40YLRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTEiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT7QndC4INC+0LTQuNC9INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjCDQvdC1INCy0YvQsdGA0LDQvS4g0JLRi9Cx0LXRgNC40YLQtSDQtdCz0L4g0LjQtyDRgdC/0LjRgdC60LAsINCwINC30LDRgtC10Lwg0L3QsNC20LzQuNGC0LUgItCU0L7QsdCw0LLQuNGC0YwiLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTIiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT7QlNC+0LHQsNCy0LjRgtGMINGD0YfQsNGB0YLQvdC40LrQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTMiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT7QodC+0YXRgNCw0L3QuNGC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE0IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+0KPQtNCw0LvQuNGC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE1IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+0JTQtdGC0LDQu9C4INGB0L7QsdGL0YLQuNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPtCc0L7QtNC10YDQsNGC0L7RgCDQv9C+INGD0LzQvtC70YfQsNC90LjRjjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT7QodGD0L/QtdGAPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxOCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPklEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxOSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPtCY0LzRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjAiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5lLW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIxIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+0JTQvtCx0LDQstC40YLRjCDQvdC+0LLQvtCz0L4g0LzQvtC00LXRgNCw0YLQvtGA0LAg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIyIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+0K/QstC70Y/QtdGC0YHRjyDRgdGD0L/QtdGA0LzQvtC00LXRgNCw0YLQvtGA0L7QvDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjMiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT7QldGB0LvQuCDQutC+0LzQvdCw0YLQsCDQvNC+0LTQtdGA0LjRgNGD0LXRgtGB0Y8sINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjCDRgSDQv9GA0LDQstCw0LzQuCDQvNC+0LTQtdGA0LDRgtC+0YDQsCDQuNC70Lgg0LDQtNC80LjQvdC40YHRgtGA0LDRgtC+0YDQsCDQsNCy0YLQvtC80LDRgtC40YfQtdGB0LrQuCDRgdGC0LDQvdC+0LLQuNGC0YHRjyDQvNC+0LTQtdGA0LDRgtC+0YDQvtC8INC/0YDQuCDQstGF0L7QtNC1LiDQldGB0LvQuCDQstCw0Lwg0Y3RgtC+INC90LUg0L3Rg9C20L3Qviwg0LAg0JLRiyDQu9C40YjRjCDRhdC+0YLQuNGC0LUsINGH0YLQvtCx0Ysg0L7Qv9GA0LXQtNC10LvRkdC90L3Ri9C5INC/0L7Qu9GM0Lct0LvRjCDRgdGC0LDQuyDQvNC+0LTQtdGA0LDRgtC+0YDQvtC8LCDQuNGB0L/QvtC70YzQt9GD0LnRgtC1INC+0L/RhtC40Y4gItC80L7QtNC10YDQsNGC0L7RgCDQv9C+INGD0LzQvtC70YfQsNC90LjRjiIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPtCh0YPQv9C10YDQvNC+0LTQtdGA0LDRgtC+0YAg0LLRgdC10LPQtNCwINGB0YLQsNC90L7QstC40YLRgdGPINC80L7QtNC10YDQsNGC0L7RgNC+0Lwg0L/RgNC4INCy0YXQvtC00LUg0LIg0LrQvtC80L3QsNGC0YMuINCjINC90LXQs9C+INC90LXQu9GM0LfRjyDRgdC90Y/RgtGMINGE0LvQsNCzINC80L7QtNC10YDQsNGG0LjQuC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI1IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+0KHQtNC10LvQsNGC0Ywg0L/QvtC70YzQty3Qu9GPINGB0YPQv9C10YDQvNC+0LTQtdGA0LDRgtC+0YDQvtC8PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPtCh0L3Rj9GC0Ywg0YTQu9Cw0LMg0YHRg9C/0LXRgNC80L7QtNC10YDQsNGG0LjQuCDRgSDQv9C+0LvRjNC3LdC70Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+eDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjgiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT7QldGB0LvQuCDQtNC70Y8g0LrQvtC80L3QsNGC0Ysg0LLRiyDQtNC+0LHQsNCy0LjRgtC1INC+0YDQs9Cw0L3QuNC30LDRhtC40Y4sINGC0L7Qu9GM0LrQviDQv9C+0LvRjNC30L7QstCw0YLQtdC70Lgg0Y3RgtC+0Lkg0L7RgNCz0LDQvdC40LfQsNGG0LjQuCDQsdGD0LTRg9GCINC40LzQtdGC0Ywg0LTQvtGB0YLRg9C/INC6INC90LXQuSAo0LTQtdC50YHRgtCy0LjRgtC10LvRjNC90L4g0YLQvtC70YzQutC+INC10YHQu9C4INGE0LvQsNCzIGlzUHVibGljINC90LUg0YPRgdGC0LDQvdC+0LLQu9C10L0pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyOSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPtCc0L7QtNC10YDQsNGG0LjRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzAiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT7QntCz0YDQsNC90LjRh9C10L3QuNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzMSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPtCe0YDQs9Cw0L3QuNC30LDRhtC40Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODMyIiBuYW1lPSJjb25maXJtIGFjdGlvbiI+CisgICAgPHZhbHVlPtCS0Ysg0YPQstC10YDQtdC90Ys/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzMyIgbmFtZT0iY29uZmlybSBkZWxldGUiPgorICAgIDx2YWx1ZT7QktGLINC00LXQudGB0YLQstC40YLQtdC70YzQvdC+INGF0L7RgtC40YLQtSDRg9C00LDQu9C40YLRjCDQt9Cw0L/QuNGB0Yw/INCn0YLQvtCx0Ysg0LfQsNC/0L7QvNC90LjRgtGMINC40LfQvNC10L3QtdC90LjRjywg0L3QsNC20LzQuNGC0LUg0LrQvdC+0L/QutGDINGB0L7RhdGA0LDQvdC10L3QuNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNCIgbmFtZT0idXNlciBjaG9vc2UgZXJyb3IiPgorICAgIDx2YWx1ZT7Qn9C+0LvRjNC30L7QstCw0YLQtdC70Ywg0L3QtSDQstGL0LHRgNCw0L0uINCf0L7QttCw0LvRg9C50YHRgtCwLCDQstGL0LHQtdGA0LjRgtC1INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzUiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT7QlNC+0LHQsNCy0LjRgtGMINC80L7QtNC10YDQsNGC0L7RgNCwINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPtCl0L7RgtC40YLQtSDQtNC+0LHQsNCy0LjRgtGMINGE0LvQsNCzINGB0YPQv9C10YDQvNC+0LTQtdGA0LDRgtC+0YDQsCDRjdGC0L7QvNGDINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjj8g0KfRgtC+0LHRiyDRgdC+0YXRgNCw0L3QuNGC0Ywg0Y3RgtC+LCDRgdC+0YXRgNCw0L3QuNGC0LUg0L7QsdGK0LXQutGCINC60L7QvNC90LDRgtGLLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT7QktGLINC00LXQudGB0YLQstC40YLQtdC70YzQvdC+INGF0L7RgtC40YLQtSDRg9C00LDQu9C40YLRjCDRhNC70LDQsyDRgdGD0L/QtdGA0LzQvtC00LXRgNCw0YLQvtGA0LAg0YMg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPPyDQp9GC0L7QsdGLINGB0L7RhdGA0LDQvdC40YLRjCDRjdGC0L4sINGB0L7RhdGA0LDQvdC40YLQtSDQvtCx0YrQtdC60YIg0LrQvtC80L3QsNGC0YsuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzOCIgbmFtZT0ic3VwZXIgbW9kZXJhdG9yIj4KKyAgICA8dmFsdWU+0K3RgtC+0YIg0L/QvtC70YzQty3Qu9GMIC0g0YHRg9C/0LXRgNC80L7QtNC10YDQsNGC0L7RgC4g0JLRiyDQvdC1INC80L7QttC10YLQtSDRg9C00LDQu9C40YLRjCDRhNC70LDQsyDQvNC+0LTQtdGA0LDRgtC+0YDQsCDRgyDQvdC10LPQvi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM5IiBuYW1lPSJjb25maXJtIGRlbGV0ZSI+CisgICAgPHZhbHVlPtCS0Ysg0LTQtdC50YHRgtCy0LjRgtC10LvRjNC90L4g0YXQvtGC0LjRgtC1INGD0LTQsNC70LjRgtGMINGN0YLQvtGCINGE0LDQudC7L9C/0LDQv9C60YM/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0MCIgbmFtZT0iY29uZmlybSBkZWxldGUiPgorICAgIDx2YWx1ZT7Qo9C00LDQu9C40YLRjCDRjdGC0L7RgiDRhNCw0LnQuy/Qv9Cw0L/QutGDPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDEiIG5hbWU9InNhbHV0YXRpb24iPgorICAgIDx2YWx1ZT7Qky3QttCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0MiIgbmFtZT0ic2FsdXRhdGlvbiI+CisgICAgPHZhbHVlPtCULdGAPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0MyIgbmFtZT0icHJvcGVydHkgcGFuZWwgd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPtCh0LLQvtC50YHRgtCy0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ0IiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+0J/QvtC60LDQt9GL0LLQsNGC0Ywg0L/QvtC30LjRhtC40Y4g0LzRi9GI0Lgg0LfRgNC40YLQtdC70Y/QvDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDUiIG5hbWU9InB1Ymxpc2ggb3B0aW9uIj4KKyAgICA8dmFsdWU+0KHQvtCy0LzQtdGB0YLQvdC+INC40YHQv9C+0LvRjNC30L7QstCw0YLRjCDQsNGD0LTQuNC+INC4IFNJUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDYiIG5hbWU9InB1Ymxpc2ggb3B0aW9uIj4KKyAgICA8dmFsdWU+0KHQvtCy0LzQuNGB0YLQvdC+INC40YHQv9C+0LvRjNC30L7QstCw0YLRjCDQsNGD0LTQuNC+INGBIFNJUCDQuCDQstC40LTQtdC+INGBINGE0LvQtdGIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NyIgbmFtZT0iZG9jdW1lbnQgcGFuZWwiPgorICAgIDx2YWx1ZT5GdWxsLUZpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDgiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPtCh0LzQvtGC0YDQtdGC0Ywg0Y3QutGA0LDQvTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDkiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPtCf0L7Qu9GM0LfQvtCy0LDRgtC10LvRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTAiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPtGF0L7Rh9C10YIg0YHQtNC10LvQsNGC0Ywg0Y3QutGA0LDQvSDQvtCx0YnQuNC8LiDQpdC+0YLQuNGC0LUg0LLQuNC00LXRgtGMINC10LPQvj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUxIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT7Ql9Cw0LrRgNGL0YLRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTIiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT7QnNCw0YHRiNGC0LDQsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTMiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT7QodC10YHRgdC40Y8g0LHRi9C70LAg0LfQsNC60YDRi9GC0LAg0YXQvtC30Y/QuNC90L7QvCDRjdC60YDQsNC90LAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1NCIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPtCf0LDRg9C30LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU1IiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+0J3QvtCy0YvQuSDQvtCx0YnQuNC5INGN0LrRgNCw0L08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU2IiBuYW1lPSJwcmVzZW50ZXIgbWluaSBpY29uIj4KKyAgICA8dmFsdWU+0JzQuNC90LjQvNC40LfQuNGA0L7QstCw0YLRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTciIG5hbWU9InByZXNlbnRlciBtaW5pIGljb24iPgorICAgIDx2YWx1ZT7QnNCw0LrRgdC40LzQuNC30LjRgNC+0LLQsNGC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU4IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT7QktC40LTQtdC+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1OSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+0KHRgNC+0LrQuCDQt9Cw0L/QuNGB0Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYwIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT7QnNC+0Lgg0LfQsNC/0LjRgdC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+0J/Rg9Cx0LvQuNGH0L3Ri9C1INC30LDQv9C40YHQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjIiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPtCY0L3RhNC+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+0JjQvNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+0JTQu9C40L3QsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjUiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPtCU0LDRgtCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+0J7RgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjciIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPtCY0JPQoNCQ0KLQrDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjgiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPtCT0LvQsNCy0L3QvtC1IC0g0LLQuNC00LXQvjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjkiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPtCX0LDQv9C40YHRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzAiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPtCS0Ysg0LzQvtC20LXRgtC1INC30LDQv9C40YHRi9Cy0LDRgtGMINC4INC00LXQu9Cw0YLRjCDRjdC60YDQsNC9INC+0LHRidC40Lwg0L7QtNC90L7QstGA0LXQvNC10L3QvdC+LiDQp9GC0L7QsdGLINGB0LTQtdC70LDRgtGMINGN0LrRgNCw0L0g0L7QsdGJ0LjQvCwg0L3QsNC20LzQuNGC0LUg0LrQvdC+0L/QutGDIOKAnNCe0YLQutGA0YvRgtGMINC00L7RgdGC0YPQv+KAnSDRgdCy0LXRgNGF0YMuINCn0YLQvtCx0Ysg0YLQvtC70YzQutC+INC30LDQv9C40YHRi9Cy0LDRgtGMINGB0LXRgdGB0LjRjiwg0L3QsNC20LzQuNGC0LUgItCd0LDRh9Cw0YLRjCDQt9Cw0L/QuNGB0YwiLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzEiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPtCd0LDRh9Cw0YLRjCDQt9Cw0L/QuNGB0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcyIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT7QntGB0YLQsNC90L7QstC40YLRjCDQt9Cw0L/QuNGB0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODczIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT7Ql9Cw0LPRgNGD0LfQuNGC0Ywg0YTQsNC50LsgRkxWPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3NCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+0JrQvtC80L3QsNGC0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc1IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT7QmNCz0YDQsNGC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT7QodGC0L7QvzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzciIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPtCc0LjQutGA0L7RhNC+0L0g0L/QvtC70YzQty3Qu9GPINCy0LrQu9GO0YfQtdC9PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3OCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT7Ql9Cw0LrRgNGL0YLRjCDQtNC+0YHRgtGD0L88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc5IiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPtCg0LDQt9GA0LXRiNC40YLRjCDQstC+0L/RgNC+0YHRizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODAiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+0JLRi9C60LvRjtGH0LjRgtC1LCDRh9GC0L7QsdGLINGD0YfQsNGB0YLQvdC40LrQuCDQsiDQutC+0LzQvdCw0YLQtSDQstCw0Lwg0L3QtSDQvNC10YjQsNC70LguPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MSIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT7Qn9GA0LDQstCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+0JfQsNCz0YDRg9C30LjRgtGMINC60LDQuiBBVkk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgzIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5GTFY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg0IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5BVkk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg1IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT7QndC10L7QsdGA0LDQsdC+0YLQsNC90L3QvtC1INCy0LjQtNC10L48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT7QotC+0LvRjNC60L4g0LDRg9C00LjQvjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODciIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPtCf0YDQuCDQvtCx0YDQsNCx0L7RgtC60LUg0LfQsNC/0LjRgdC4INCy0L7Qt9C90LjQutC70Lgg0L7RiNC40LHQutC4LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODgiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPtCX0LDQv9C40YHRjCDQtdGJ0ZEg0L3QtSDQs9C+0YLQvtCy0LAuINCf0L7Qv9GA0L7QsdGD0LnRgtC1INGB0L3QvtCy0LAg0YfQtdGA0LXQtyDQv9Cw0YDRgyDQvNC40L3Rg9GCLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODkiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPtCb0L7Qszo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkwIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT7QodC+0L7QsdGJ0LXQvdC40LUg0YDQtdC60L7RgNC00LXRgNCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+T2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkyIiBuYW1lPSJzaXAgYXBwbGV0Ij4KKyAgICA8dmFsdWU+0JDQv9C/0LvQtdGCIFNJUCDQvdC1INCz0L7RgtC+0LI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkzIiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+0KPRgdGC0LDQvdC+0LLQutC4INCw0LrQutCw0YPQvdGC0LAgU0lQPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NCIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPtCj0YHRgtCw0L3QvtCy0LrQuCBTSVAg0LTQu9GPINC60LDQttC00L7Qs9C+INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk1IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+0J/QvtC70YzQty3Qu9GMIFNJUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTYiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT7Qn9Cw0YDQvtC70YwgU2lwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NyIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNpcC1BdXRoLUlkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5OCIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+0J3QtdC/0YDQsNCy0LjQu9GM0L3Ri9C5INC70L7Qs9C40L0g0Log0YjQu9GO0LfRgyBTSVAuINCf0YDQvtCy0LXRgNGM0YLQtSDQtNCw0L3QvdGL0LUg0LDRg9GE0LXQvdGC0LjQutCw0YbQuNC40LLQsNGI0LXQs9C+INC/0YDQvtCy0LDQudC00LXRgNCwIFNJUCDQuCDQtNCw0L3QvdGL0LUg0LDQutC60LDRg9C90YLQsCBTSVAg0LTQu9GPINC60LDQttC00L7Qs9C+INC/0L7Qu9GM0Lct0LvRjy4g0JDQtNC80LjQvdC40YHRgtGA0LDRgtC+0YAg0LzQvtC20LXRgiDRgdC00LXQu9Cw0YLRjCDQv9GA0L7QstC10YDQutGDINGH0LXRgNC10Lcg0L/Rg9C90LrRgiDQvNC10L3RjiDQmtC+0L3RhNC40LPRg9GA0LDRhtC40Y8uINCf0L7Qu9GM0LfQvtCy0LDRgtC10LvQuCDQuCDQvNC+0LTQtdGA0LDRgtC+0YDRiyDQt9Cw0LHQu9C+0LrQuNGA0L7QstCw0L3RiyDQvtGCINC70Y7QsdGL0YUg0LLQt9Cw0LjQvNC+0LTQtdC50YHRgtCy0LjQuS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk5IiBuYW1lPSJzaXAgc3RhdHVzIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7QndC10L/RgNCw0LLQuNC70YzQvdGL0Lkg0LvQvtCz0LjQvSDQtNC70Y8g0YjQu9GO0LfQsCBTSVAuINCe0LHRgNCw0YLQuNGC0LXRgdGMINCyINGB0LvRg9C20LHRgyDQv9C+0LTQtNC10YDQttC60LghPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwMCIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+0JLQvtC50YLQuCDQsiDRiNC70Y7QtyBTSVA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAxIiBuYW1lPSJzaXAgc3RhdHVzIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7QktC+0LnRgtC4INCyINGI0LvRjtC3IFNJUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDIiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPtCf0L7QutCw0LfQsNGC0Ywg0LvQvtCzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwMyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+0JvQvtCzINC/0YDQvtGG0LXRgdGB0LAg0LfQsNC/0LjRgdC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwNCIgbmFtZT0ic2lwIGxvZ2luIj4KKyAgICA8dmFsdWU+0KHQvtC+0LHRidC10L3QuNGPINCw0L/Qv9C70LXRgtCwIFNJUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDUiIG5hbWU9InNpcCBsb2dpbiI+CisgICAgPHZhbHVlPtCQ0L/Qv9C70LXRgiBTSVAg0L3QtSDQs9C+0YLQvtCyLiDQn9GA0LjQvNC40YLQtSDQsNC/0L/Qu9C10YIg0Lgg0L3QsNC20LzQuNGC0LUgb2shPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwNiIgbmFtZT0ibW9kZXJhdG9yIHBvcCB1cCI+CisgICAgPHZhbHVlPtCh0YLQsNGC0Ywg0LzQvtC00LXRgNCw0YLQvtGA0L7QvDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDciIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT7QodC+0YXRgNCw0L3QuNGC0Ywg0LjQt9C80LXQvdC10L3QuNGPINC90LDQt9C90LDRh9C10L3QuNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwOCIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPtCd0LDQt9C90LDRh9C10L3QuNC1INCx0YvQu9C+INC40LfQvNC10L3QtdC90L4uINCh0L7RhdGA0LDQvdC40YLRjCDQuNC30LzQtdC90LXQvdC40Y8/INCS0YHQtSDRg9GH0LDRgdGC0L3QuNC60Lgg0L/QvtC70YPRh9Cw0YIg0LzQtdC50Lsg0YEg0LjQt9C80LXQvdGR0L3QvdC+0Lkg0LTQsNGC0L7QuSDQuCDQstGA0LXQvNC10L3QtdC8ICjQsiDQt9Cw0LLQuNGB0LjQvNC+0YHRgtC4INC+0YIg0YLQuNC/0LAg0L3QvtGC0LjRhNC40LrQsNGG0LjQuSDRjdGC0L7Qs9C+INC90LDQt9C90LDRh9C10L3QuNGPKS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA5IiBuYW1lPSJmbHYgcmVjb3JkZXIgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPtCU0LvRjyDQtNC+0YHRgtGD0L/QsCDQuiDQtNGA0YPQs9C40Lwg0LfQsNC/0LjRgdGP0Lwg0LLQvtC50LTQuNGC0LUg0LIg0L/RgNC40LvQvtC20LXQvdC40LUgJEFQUF9OQU1FLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTAiIG5hbWU9ImludGVydmlldyB2aWRlbyBwb2QiPgorICAgIDx2YWx1ZT7QktGL0LHQtdGA0LjRgtC1INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyDQtNC70Y8g0Y3RgtC+0LPQviDQstC40LTQtdC+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMSIgbmFtZT0iaW50ZXJ2aWV3IHZpZGVvIGNob29zZSB1c2VyIj4KKyAgICA8dmFsdWU+0JTQvtGB0YLRg9C/0L3Ri9C1INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQuCDQtNC70Y8g0Y3RgtC+0LPQviBQb2Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTEyIiBuYW1lPSJpbnRlcnZpZXcgaW5mbyI+CisgICAgPHZhbHVlPtCS0Ysg0LzQvtC00LXRgNCw0YLQvtGAINGN0YLQvtCz0L4g0LjQvdGC0LXRgNCy0YzRji4g0JLRiyDQvNC+0LbQtdGC0LUg0YDQtdGI0LDRgtGMLCDQutC+0LzRgyDQs9C+0LLQvtGA0LjRgtGMLCDQuCDQvNC+0LbQtdGC0LUg0L3QsNGH0LjQvdCw0YLRjCAvINC+0YHRgtCw0L3QsNCy0LvQuNCy0LDRgtGMINC30LDQv9C40YHRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTMiIG5hbWU9ImludGVydmlldyBidXR0b24gcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+0J3QsNGH0LDRgtGMINC30LDQv9C40YHRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTQiIG5hbWU9ImludGVydmlldyBidXR0b24gcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+0J7RgdGC0LDQvdC+0LLQuNGC0Ywg0LfQsNC/0LjRgdGMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxNSIgbmFtZT0iaW50ZXJ2aWV3IGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7Ql9Cw0L/QuNGB0Ywg0LjQvdGC0LXRgNCy0YzRjiDRg9C20LUg0L3QsNGH0LDRgtCwLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTYiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+0JfQsNC/0LjRgdGMINGD0LbQtSDQvtGB0YLQsNC90L7QstC70LXQvdCwINC40LvQuCDQtdGJ0ZEg0L3QtSDQvdCw0YfQsNGC0LAuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxNyIgbmFtZT0iaW50ZXJ2aWV3IHJlY29yZGluZyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+0JfQsNC/0LjRgdGMINGN0YLQvtCz0L4g0LjQvdGC0LXRgNCy0YzRjiDRg9C20LUg0L3QsNGH0LDRgtCwITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTgiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+0J7RgtC80LXQvdC40YLRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTkiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+0J7QsdGA0LDQsdC+0YLQutCwINC40L3RgtC10YDQstGM0Y4g0LfQsNC90LjQvNCw0LXRgiA1INC80LjQvdGD0YIg0L3QsCDQutCw0LbQtNGD0Y4g0LzQuNC90YPRgtGDINC40L3RgtC10YDQstGM0Y4uINCi0LXQutGD0YnQuNC5INC/0YDQvtCz0YDQtdGB0YEg0L7QsdGA0LDQsdC+0YLQutC4OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjAiIG5hbWU9InNpcCBjcmVhdGlvbiI+CisgICAgPHZhbHVlPtCS0LLQtdC00LjRgtC1INC/0LDRgNC+0LvRjCDRgdC90L7QstCwLCDRh9GC0L7QsdGLINCw0LLRgtC+0LzQsNGC0LjRh9C10YHQutC4INGB0L7Qt9C00LDRgtGMINC00LDQvdC90YvQtSBTSVA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIxIiBuYW1lPSJzaXAgY3JlYXRpb24iPgorICAgIDx2YWx1ZT7QkNCy0YLQvi3Qs9C10L3QtdGA0LDRhtC40Y8gU0lQPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyMiIgbmFtZT0iZmlsZWV4cGxvcmVyIj4KKyAgICA8dmFsdWU+0JLRiyDQvdC1INC80L7QttC10YLQtSDQv9C10YDQtdC80LXRgdGC0LjRgtGMINGN0YLQvtGCINGE0LDQudC7INC40LvQuCDQv9Cw0L/QutGDINCyINC10LPQviDRgdC+0LHRgdGC0LLQtdC90L3Rg9GOINC/0L7QtNC/0LDQv9C60YMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyMyIgbmFtZT0iZmlsZSBleHBsb3JlciAiPgorICAgIDx2YWx1ZT7QoNCw0LfQvNC10YAg0LTQvtC80LDRiNC90LXQs9C+INC90LDQutC+0L/QuNGC0LXQu9GPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPtCg0LDQt9C80LXRgCDQv9GD0LHQu9C40YfQvdC+0LPQviDQvdCw0LrQvtC/0LjRgtC10LvRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjUiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT7Qm9C40YbQtdC90LfQuNC+0L3QvdGL0LUg0YPRgdGC0LDQvdC+0LLQutC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNiIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPtCS0Ysg0LzQvtC20LXRgtC1INC70LjQsdC+INC90LDQt9C90LDRh9C40YLRjCDQtNCw0YLRgyDQutC+0L3RhtCwINGB0YDQvtC60LAg0LTQtdC50YHRgtCy0LjRjywg0LvQuNCx0L4g0LzQsNC60YEuINGH0LjRgdC70L4g0LzQuNC90YPRgiDRgdGA0L7QutCwINC00LXQudGB0YLQstC40Y8g0LvQuNGG0LXQvdC30LjQuC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI3IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+0J/RgNC+0LLQtdGA0LjRgtGMINC70LjRhtC10L3Qt9C40Y48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI4IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+0JXQtNC40L3QsNGPINGB0YLQsNCy0LrQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjkiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT7QlNCw0YLQsCDQutC+0L3RhtCwINGB0YDQvtC60LAg0LTQtdC50YHRgtCy0LjRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzAiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT7QntGB0YLQsNC70L7RgdGMINGB0LXQutGD0L3QtDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzEiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT7QntCx0YnQtdC1INCy0YDQtdC80Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMyIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT7QktCw0YjQsCDQu9C40YbQtdC90LfQuNGPINC40YHRgtC10LrQu9CwLiDQktCw0Lwg0L3Rg9C20L3QviDQutGD0L/QuNGC0Ywg0L3QvtCy0YvQtSDQvNC40L3Rg9GC0Ysg0LvQuNCx0L4g0LfQsNC/0LvQsNGC0LjRgtGMINC/0L4g0LXQtNC40L3QvtC5INGB0YLQsNCy0LrQtS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMzIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT7QndCw0LbQvNC40YLQtSDQuCDQutGD0L/QuNGC0LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM0IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT7QntGB0YLQsNCy0YjQtdC10YHRjyDQstGA0LXQvNGPINCy0LDRiNC10LPQviDQsNC60LrQsNGD0L3RgtCwOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzUiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPtCY0L3RhNC+0YDQvNCw0YbQuNGPINC+INC70LjRhtC10L3Qt9C40Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM2IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT7QmNC90YTQvtGA0LzQsNGG0LjRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzciIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPtCX0LDQutGA0YvRgtGMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzOCIgbmFtZT0ibGljZW5zZS1pbmZvIj4KKyAgICA8dmFsdWU+0JLQsNGI0LAg0LvQuNGG0LXQvdC30LjRjyDQuNGB0YLQtdC60LvQsC4g0JLQsNC8INC90LXQvtCx0YXQvtC00LjQvNC+INC60YPQv9C40YLRjCDQvdC+0LLRi9C1INC80LjQvdGD0YLRiyDQu9C40LHQviDQt9Cw0L/Qu9Cw0YLQuNGC0Ywg0L/QviDQtdC00LjQvdC+0Lkg0YHRgtCw0LLQutC1LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzkiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPtCj0YHRgtCw0L3QvtCy0LrQuCDQu9C40YbQtdC90LfQuNC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+0JLRiyDQvNC+0LbQtdGC0LUg0LrRg9C/0LjRgtGMINC80LjQvdGD0YLRiyDQtNC70Y8g0YLQvtCz0L4sINGH0YLQvtCx0Ysg0L/RgNC+0LLQvtC00LjRgtGMINCy0LXQsS3QutC+0L3RhNC10YDQtdC90YbQuNC4LiDQmNC70Lgg0LfQsNC/0LvQsNGC0LjRgtC1INC/0L4g0LXQtNC40L3QvtC5INGB0YLQsNCy0LrQtSDQt9CwIDMtMTIg0LzQtdGB0Y/RhtC10LIu0J/QvtGB0YvQu9C60LAg0L/RgNC40LPQu9Cw0YjQtdC90LjQuSAo0L/RgNGP0LzRi9C1INGB0YHRi9C70LrQuCDQvdCwINC60L7QvNC90LDRgtGLKSDQuNC70Lgg0YHQvtC30LTQsNC90LjQtSDQutC+0L3RhNC10YDQtdC90YbQuNC5INGBINCy0L3QtdGI0L3QuNC80Lgg0L/QvtC70YzQty3Qu9GP0LzQuCDRh9C10YDQtdC3INC60LDQu9C10L3QtNCw0YDRjCDQstC+0LfQvNC+0LbQvdGLINGC0L7Qu9GM0LrQviDQsiDRgdC70YPRh9Cw0LUg0L7Qv9C70LDRgtGLINC/0L4g0LXQtNC40L3QvtC5INGB0YLQsNCy0LrQtSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQxIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT7QmtGD0L/QuNGC0YwgNjAg0LzQuNC90YPRgiDQt9CwIDksOTkg0LXQstGA0L4gKDE2INGG0LXQvdGC0L7QsiDQt9CwINC80LjQvdGD0YLRgyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQyIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT7QmtGD0L/QuNGC0YwgNSDRh9Cw0YHQvtCyINC30LAgMTksOTkg0LXQstGA0L4gKDYg0YbQtdC90YLQvtCyINC30LAg0LzQuNC90YPRgtGDKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDMiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPtCa0YPQv9C40YLRjCAzINC80LXRgdGP0YbQsCDQt9CwIDI5LDk5INC10LLRgNC+ICg5LDk5INC10LLRgNC+INC30LAg0LzQtdGB0Y/Rhik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ0IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT7QmtGD0L/QuNGC0YwgNiDQvNC10YHRj9GG0LXQsiDQt9CwIDM5LDk5INC10LLRgNC+ICg2LDY2INC10LLRgNC+INC30LAg0LzQtdGB0Y/Rhik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ1IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT7Qn9C70LDRgtC40YLRjCDQv9C+0LzQuNC90YPRgtC90L48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ2IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT7QldC00LjQvdCw0Y8g0YHRgtCw0LLQutCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+0KMg0LLQsNGBINC90LXQvtCz0YDQsNC90LjRh9C10L3QvdCw0Y8g0LvQuNGG0LXQvdC30LjRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDgiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPtCS0LDRiNCwINC70LjRhtC10L3Qt9C40Y8g0LjRgdGC0LXQutCw0LXRgjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ5IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT7QktGLINC60YPQv9C40LvQuCDQv9C+0LzQuNC90YPRgtC90YPRjiDQu9C40YbQtdC90LfQuNGOLiDQoyDQstCw0YEg0LXRgdGC0Yw6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+0JrRg9C/0LjRgtC1INC90L7QstGL0Lkg0LrRgNC10LTQuNGCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+0KXQvtGC0LjRgtC1INGB0LLQvtC5INGB0L7QsdGB0YLQstC10L3QvdGL0Lkg0YHQtdGA0LLQtdGAPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTIiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPtCS0Ysg0YXQvtGC0LjRgtC1INGD0YHRgtCw0L3QvtCy0LjRgtGMICRBUFBfTkFNRSDQvdCwINCy0LDRiCDRgdC10YDQstC10YAg0LjQu9C4INC40L3RgtC10LPRgNC40YDQvtCy0LDRgtGM0YHRjyDRgSBNb29kbGUsIFN1Z2FyQ1JNLCDQstC10LEt0YHQsNC50YLQvtC8INC40LvQuCDQstC90YPRgtGA0LXQvdC90LXQuSDRgdC10YLRjNGOPyDQptC10L3RiyDQvdCw0YfQuNC90LDRjtGC0YHRjyDRgSA1MDAg0LXQstGA0L4g0LfQsCDQuNC90YHRgtC+0LvQu9GP0YbQuNGOITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTMiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPtC40LvQuCDQv9C+0YHQu9Cw0YLRjCDRgdC+0L7QsdGJ0LXQvdC40LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU0IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT7QntGC0LLQtdGC0LjRgtGMOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTUiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPtCh0L7QvtCx0YnQtdC90LjQtTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU2IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT7Qn9C+0YHQu9Cw0YLRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTciIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPtCd0LDQttC80LjRgtC1INC30LTQtdGB0YwsINGH0YLQvtCx0Ysg0L/QvtC70YPRh9C40YLRjCDQutC+0L3RgtCw0LrRgtC90YPRjiDQuNC90YTQvtGA0LzQsNGG0LjRjiDQuCDQv9GA0LDQudGBLdC70LjRgdGCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1OCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+0JrRgNC10LTQuNGC0L3QsNGPINC60LDRgNGC0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU5IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT7QmNC80Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYwIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT7QpNCw0LzQuNC70LjRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjEiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPtCi0LjQvyDQutCw0YDRgtGLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2MiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+VklTQSBDYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2MyIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+TWFzdGVyQ2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjQiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkRpc2NvdmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2NSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+QW1lcmljYW4gRXhwcmVzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjYiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPtCd0L7QvNC10YAg0LrQsNGA0YLRizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjciIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPtCh0YDQvtC6INC+0LrQvtC90YfQsNC90LjRjyDQtNC10LnRgdGC0LLQuNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2OCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+0J3QvtC80LXRgCDQtNC70Y8g0LLQtdGA0LjRhNC40LrQsNGG0LjQuCDQutCw0YDRgtGLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2OSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+0J/Qu9Cw0YLRkdC20L3Ri9C5INCw0LTRgNC10YE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTcwIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT7QkNC00YDQtdGBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+0JPQvtGA0L7QtDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzMiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPtCh0YLRgNCw0L3QsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzQiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPtCo0YLQsNGCICjQotC+0LvRjNC60L4gVVMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+0JjQvdC00LXQutGBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+0JrQvtC7LdCy0L48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc3IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT7Qn9C+0YHQu9Cw0YLRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzgiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPtCo0LDQsyAxOiAkQVBQX05BTUUgLSDQn9C70LDRgtGR0LbQvdCw0Y8g0YTQvtGA0LzQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzkiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkVNYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+0J3QsNC20LzQuNGC0LUgItCf0L7RgdC70LDRgtGMINGH0LXRgNC10LcgUGF5UGFsIiDRh9GC0L7QsdGLINC30LDQv9C70LDRgtC40YLRjC4gUGF5cGFsINC/0YDQuNC90LjQvNCw0LXRgiBWSVNBLCBNYXN0ZXJDYXJkLCBEaXNjb3ZlciDQuNC70LggQW1lcmljYW4gRXhwcmVzcy4gUGF5cEFMINC90LUg0YLRgNC10LHRg9C10YIg0L/QvtC00L/QuNGB0Lgu0JPRgNCw0LbQtNC10L3QtSDQk9C10YDQvNCw0L3QuNC4INC80L7Qs9GD0YIg0YLQsNC60LbQtSDQv9C70LDRgtC40YLRjCDRgSDQtNC10LHQtdGC0L7QstC+0Lkg0LrQsNGA0YLRiyAoUGVyIExhc3RzY2hyaWZ0LUVpbnp1ZykuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+0KHQv9Cw0YHQuNCx0L4g0LfQsCDQv9C+0LrRg9C/0LrRgyAkQVBQX05BTUUuINCa0LDQuiDRgtC+0LvRjNC60L4g0LzRiyDQv9C+0LvRg9GH0LjQvCDQstCw0Ygg0L/Qu9Cw0YLRkdC2LCDQstCw0Ygg0LDQutC60LDRg9C90YIg0LHRg9C00LXRgiDQuNC30LzQtdC90ZHQvS4g0JLRiyDQv9C+0LvQu9GD0YfQuNGC0LUg0L/QuNGB0YzQvNC+INGBINCy0LDRiNC40Lwg0YHRh9GR0YLQvtC8INCyINGE0L7RgNC80LDRgtC1IFBERi7QktGLINGC0LDQutC20LUg0LzQvtC20LXRgtC1INC/0YDQvtCy0LXRgNGP0YLRjCDRgtC10LrRg9GJ0LjQtSDQuCDQv9GA0L7RiNC70YvQtSDQvtC/0LXRgNCw0YbQuNC4INCyINCy0LDRiNC10Lwg0L/RgNC+0YTQsNC50LvQtS7QodC10LnRh9Cw0YEg0LLRiyDQvNC+0LbQtdGC0LUg0LfQsNC60YDRi9GC0Ywg0LLQsNGI0LUg0L7QutC90L4g0LHRgNCw0YPQt9C10YDQsCDQuCDQstC10YDQvdGD0YLRjNGB0Y8g0LogJEFQUF9OQU1FLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODIiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPtCe0YLQv9GA0LDQstGM0YLQtSDQuCDQutGD0L/QuNGC0LUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MyIgbmFtZT0icGF5bWVudC1mcm9tIj4KKyAgICA8dmFsdWU+0L3QsNC20LzQuNGC0LUg0Lgg0LrRg9C/0LjRgtC1ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODQiIG5hbWU9InBheW1lbnQtZnJvbSI+CisgICAgPHZhbHVlPtCo0LDQsyAzOiDQn9C70LDRgtGR0LYg0LfQsCAkQVBQX05BTUUgLSDQv9GA0L7QstC10YDRjNGC0LUg0LfQsNGP0LLQutGDINC4INC60YPQv9C40YLQtSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg1IiBuYW1lPSJwYXltZW50LWZyb20iPgorICAgIDx2YWx1ZT7QmNC80Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg2IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT7Qn9C70LDRgtGR0LYg0L/QvtC70YPRh9C10L0hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4NyIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+0JfQtNGA0LDQstGB0YLQstGD0LnRgtC1LDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODgiIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPtCc0Ysg0L/QvtC70YPRh9C40LvQuCDQstCw0Ygg0L/Qu9Cw0YLRkdC2LiDQktCw0Ygg0L/RgNC+0YTQsNC50Lsg0LjQt9C80LXQvdGR0L0uINCh0LzQvtGC0YDQuNGC0LUg0L/RgNC40LrRgNC10L/Qu9GR0L3QvdGL0Lkg0YHRh9GR0YIuINCt0YLQvtGCINC4INCy0YHQtSDQv9GA0LXQtNGL0LTRg9GJ0LjQtSDRgdGH0LXRgtCwINC80L7Qs9GD0YIg0YLQsNC60LbQtSDQsdGL0YLRjCDQt9Cw0LPRgNGD0LbQtdC90Ysg0LIg0LLQsNGIINC/0YDQvtGE0LDQudC7LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODkiIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPtCh0L/QsNGB0LjQsdC+INC30LAg0LjRgdC/0L7Qu9GM0LfQvtCy0LDQvdC40LUgJEFQUF9OQU1FITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTAiIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPtCf0LvQsNGC0ZHQtiDQv9C+0LvRg9GH0LXQvSAkQVBQX05BTUUgLTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTEiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT7QodGC0LDRgtGD0YEg0L/Qu9Cw0YLQtdC20LAg0Lgg0YLRgNCw0L3Qt9Cw0LrRhtC40Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkyIiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+0KXRjdGIINGC0YDQsNC90LfQsNC60YbQuNC5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MyIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPtCc0LjQvdGD0YLRizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTQiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT7QnNC10YHRj9GG0Ys8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk1IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+RVVSPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NiIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPtCh0YLQsNGC0YPRgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTciIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT7QodGH0ZHRgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTgiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk5IiBuYW1lPSJlcnJvci1saWNlbnNlLWZsYXQiPgorICAgIDx2YWx1ZT7QlNC70Y8g0YLQvtCz0L4sINGH0YLQvtCx0Ysg0L/QvtGB0YvQu9Cw0YLRjCDQv9GA0LjQs9C70LDRiNC10L3QuNGPINC40LvQuCDRgdC+0LfQtNCw0LLQsNGC0Ywg0LzQuNGC0LjQvdCz0Lgg0YfQtdGA0LXQtyDQutCw0LvQtdC90LTQsNGA0YwsINCS0Ysg0LTQvtC70LbQvdGLINC/0LvQsNGC0LjRgtGMINC/0L4g0LXQtNC40L3QvtC5INGB0YLQsNCy0LrQtS4g0JTQu9GPINC/0L7QvNC40L3Rg9GC0L3QvtC5INGC0LDRgNC40YTQuNC60LDRhtC40Lgg0LLQvtC30LzQvtC20LXQvSDRgtC+0LvRjNC60L4g0LTQvtGB0YLRg9C/0L8g0LogJEFQUF9OQU1FLiDQktGLINC90LUg0LzQvtC20LXRgtC1INGA0LDQt9GA0LXRiNC40YLRjCDRgdGC0L7RgNC+0L3QvdC40Lwg0YPRh9Cw0YHRgtC90LjQutCw0Lwg0LTQvtGB0YLRg9C/INC6INC80LjRgtC40L3Qs9GDLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAwIiBuYW1lPSJlcnJvciB1c2VyIj4KKyAgICA8dmFsdWU+0K3RgtC+0YIgZW1haWwg0YPQttC1INC40YHQv9C+0LvRjNC30YPQtdGC0YHRjyDQtNGA0YPQs9C40Lwg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10LwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDEiIG5hbWU9InJvb20tYWRtaW4iPgorICAgIDx2YWx1ZT7Qo9GB0YLQsNC90L7QstC60LggU0lQPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDIiIG5hbWU9InJvb20tYWRtaW4iPgorICAgIDx2YWx1ZT7QndC+0LzQtdGAINC60L7QvdGE0LXRgNC10L3RhtC40Lgg0LggUElOINCw0LLRgtC+0LzQsNGC0LjRh9C10YHQutC4INGB0L7Qt9C00LDQvdGLINGH0LXRgNC10Lcg0YjQu9GO0LcgT3BlblhHIFJQQzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAzIiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+0J3QvtC80LXRgCBTSVA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNCIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlBJTjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA1IiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+0J7Rh9C40YHRgtC40YLRjCDQvtCx0YrQtdC60YLRiyDRgtC+0LvRjNC60L4g0L3QsCDRgtC10LrRg9GJ0LXQvCDRgdC70LDQudC00LUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDYiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT7QotC+0LvRjNC60L4g0LLQstC10LTRkdC90L3Ri9C5INCyINGB0YLRgNC+0LrQtSDRgdC+0YHRgtC+0Y/QvdC40Y8gVVJMINC/0L7RgdGL0LvQsNC10YLRgdGPINGD0YfQsNGB0YLQvdC40LrQsNC8ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+0KHQtNC10LvQsNGC0Ywg0LPRgNGD0L/Qv9C+0LLRi9C1INC60L7QvNC90LDRgtGLIFtCcmVha291dCBzZXNzaW9uXTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+0JLRi9Cx0LXRgNC40YLQtSDQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuSDQtNC70Y8g0LPRgNGD0L/Qv9C+0LLQvtC5INC60L7QvNC90LDRgtGLITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+0JfQtNC10YHRjCDQstGLINC80L7QttC10YLQtSDQstGL0LHRgNCw0YLRjCDQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuSDQuCDRgdC+0LfQtNCw0YLRjCDQvdC+0LLRg9GOINCz0YDRg9C/0L/QvtCy0YPRjiDQutC+0LzQvdCw0YLRgyDQtNC70Y8g0LrQvtC90YTQtdGA0LXQvdGG0LjQuSDQtNC70Y8g0L3QuNGFLiDQktGL0LHRgNCw0L3QvdGL0LUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C4INCx0YPQtNGD0YIg0LDQstGC0L7QvNCw0YLQuNGH0LXRgdC60Lgg0L/QtdGA0LXQvNC10YnQtdC90Ysg0LIg0L3QvtCy0YPRjiDQutC+0LzQvdCw0YLRgyDQuNC70Lgg0L/QvtC70YPRh9Cw0YIg0YHQvtC+0LHRidC10L3QuNC1LiDQnNC+0LTQtdGA0LDRgtC+0YDRiyDQv9C+0LvRg9GH0LDRgiDRgdC/0LjRgdC+0Log0YLQtdC60YPRidC40YUg0LrQvtC80L3QsNGCINGC0LDQuiwg0YfRgtC+0LHRiyDQvtC90Lgg0LzQvtCz0LvQuCDQv9C10YDQtdC60LvRjtGH0LDRgtGM0YHRjyDQvdCwINC60LDQttC00YPRjiDQutC+0LzQvdCw0YLRgywg0LXRgdC70Lgg0L3Rg9C20L3Qvi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPtCY0LzRjyDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPtCb0L7Qs9C40L08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+0J/QvtC70YzQt9C+0LLQsNGC0LXQu9C4INCyINC90L7QstC+0Lkg0LPRgNGD0L/Qv9C+0LLQvtC5INC60L7QvNC90LDRgtC1OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+0KHQvtC30LTQsNGC0Ywg0LPRgNGD0L/Qv9C+0LLRg9GOINC60L7QvNC90LDRgtGDPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7QntGC0LzQtdC90LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPtCS0YvQsdC10YDQuNGC0LUg0YXQvtGC0Y8g0LHRiyDQvtC00L3QvtCz0L4g0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPINC00LvRjyDQutC+0LzQvdCw0YLRiyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPtCU0L7QsdCw0LLQuNGC0Ywg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPINCyINCz0YDRg9C/0L/RgzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+0KPQtNCw0LvQuNGC0Ywg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPINC40Lcg0LrQvtC80L3QsNGC0Ys8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPtCf0L7Qu9GM0LfQvtCy0LDRgtC10LvRjCAtINC80L7QtNC10YDQsNGC0L7RgCDQs9GA0YPQv9C/0L7QstC+0Lkg0LrQvtC80L3QsNGC0YsgKNCe0L0g0LzQvtC20LXRgiDRg9C/0YDQsNCy0LvRj9GC0Ywg0LrQvtC80L3QsNGC0LDQvNC4INC4INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQuCDQutC+0LzQvdCw0YLRiyDQvNC+0LPRg9GCINC/0YDQvtGB0LjRgtGMINC10LPQviDQv9GA0LjQudGC0LgpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7QotC40L8g0LrQvtC80L3QsNGC0Ys8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPtCV0YHQu9C4INCy0Ysg0LLRi9Cx0LXRgNC10YLQtSAi0J/QtdGA0LXQutC70Y7Rh9C40YLRjCDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y8g0L3QsCDQvdC+0LLRg9GOINCz0YDRg9C/0L/QvtCy0YPRjiDQutC+0LzQvdCw0YLRgyIg0LLRgdC1INCy0YvQsdGA0LDQvdC90YvQtSDQv9C+0LvRjNC30L7QstCw0YLQtdC70Lgg0LHRg9C00YPRgiDQsNCy0YLQvtC80LDRgtC40YfQtdGB0LrQuCDQv9C10YDQtdC60LvRjtGH0LXQvdGLINC90LAg0L3QvtCy0YPRjiDQutC+0LzQvdCw0YLRgy4g0JjQvdCw0YfQtSDQvtC90Lgg0L/QvtC70YPRh9Cw0YIg0L3QvtGC0LjRhNC40LrQsNGG0LjRjiDRgSDQutC90L7Qv9C60L7QuSwg0LrQvtGC0L7RgNC+0Lkg0L7QvdC4INC/0LXRgNC10LrQu9GO0YfQuNGC0YzRgdGPINC90LAg0L3QvtCy0YPRjiDQutC+0LzQvdCw0YLRgy4g0JzQvtC00LXRgNCw0YLQvtGA0Ysg0LLRgdC10LPQtNCwINC40LzQtdGO0YIg0LLRi9Cx0L7RgCDQsiDRg9C/0YDQsNCy0LvQtdC90LjQuCDQutC+0LzQvdCw0YLQsNC80Lgg0Lgg0L/QtdGA0LXQutC70Y7Rh9C10L3QuNC4INC80LXQttC00YMg0L3QuNC80LguPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7Qo9C/0YDQsNCy0LvQtdC90LjQtSDQs9GA0YPQv9C/0L7QstGL0LzQuCDQutC+0LzQvdCw0YLQsNC80Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPtCS0Ysg0LzQvtC20LXRgtC1INC/0LXRgNC10LrQu9GO0YfQsNGC0YzRgdGPINC80LXQttC00YMg0LLRgdC10LzQuCDQs9GA0YPQv9C/0L7QstGL0LzQuCDQutC+0LzQvdCw0YLQsNC80LgsINCyINC60L7RgtC+0YDRi9GFINCy0Ysg0LzQvtC00LXRgNCw0YLQvtGALiDQn9C+0LvRjNC30L7QstCw0YLQtdC70Lgg0LLQvdGD0YLRgNC4INC60L7QvNC90LDRgtGLINC80L7Qs9GD0YIg0L/QvtGB0YvQu9Cw0YLRjCDQstCw0Lwg0YHQvtC+0LHRidC10L3QuNGPLCDQvdCw0L/RgNC40LzQtdGAINC/0YDQvtGB0LjRgtGMINCy0LDRgSDQt9Cw0LnRgtC4INCyINC40LrQvtC80L3QsNGC0YMg0Lgg0L/QvtC80L7Rh9GMLiDQktGLINC80L7QttC10YLQtSDRgtCw0LrQttC1INC/0YDQtdGA0LLQsNGC0Ywg0LrQvtC80L3QsNGC0YMsINC4INCy0YHQtSDQv9C+0LvRjNC30L7QstCw0YLQtdC70Lgg0LHRg9C00YPRgiDQstGL0LLQtdC00LXQvdGLINC+0YLRgtGD0LTQsC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPtCf0LXRgNC10LzQtdGB0YLQuNGC0Ywg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPINCyINC90L7QstGD0Y4g0LrQvtC80L3QsNGC0YM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPtCY0LzRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+0KHQvtC30LTQsNC90L48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7QlNC+0YHRgtGD0L/QvdGL0LUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7QlNC+0LHQsNCy0YzRgtC1INC/0L7Qu9GM0Lct0LvRjyDQv9C70Y7RgdC+0Lwg0YHQu9C10LLQsCDQuNC70Lgg0YPQtNCw0LvQuNGC0LUg0LrRgNC10YHRgtC40LrQvtC8INGB0L/RgNCw0LLQsCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjEpINCj0YHRgtCw0L3QvtCy0LrQuCDQs9GA0YPQv9C/0L7QstC+0Lkg0LrQvtC80L3QsNGC0Ys8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjIpINCU0L7QsdCw0LLQuNGC0Ywg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPINCyINCz0YDRg9C/0L/QvtCy0YPRjiDQutC+0LzQvdCw0YLRgzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+0J3QsNC30LLQsNC90LjQtSDQs9GA0YPQv9C/0L7QstC+0Lkg0LrQvtC80L3QsNGC0Ys8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPtCT0YDRg9C/0L/QvtCy0LDRjyDQutC+0LzQvdCw0YLQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+0JjQt9C80LXQvdC40YLRjCDQtNC70Y8g0LrQvtC80L3QsNGC0Ys8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPtCf0LXRgNC10LrQu9GO0YfQuNGC0YzRgdGPINC90LAg0Y3RgtGDINCz0YDRg9C/0L/QvtCy0YPRjiDQutC+0LzQvdCw0YLRgzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+0J/RgNC10YDQstCw0YLRjCDQs9GA0YPQv9C/0L7QstGD0Y4g0LrQvtC80L3QsNGC0YMg0Lgg0LfQsNGB0YLQsNCy0LjRgtGMINCy0YHQtdGFINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5INCy0YvQudGC0Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPtCd0L7QstCw0Y8g0LPRgNGD0L/Qv9C+0LLQsNGPINC60L7QvNC90LDRgtCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7QldGB0YLRjCDQvdC+0LLQsNGPINCz0YDRg9C/0L/QvtCy0LDRjyDQutC+0LzQvdCw0YLQsCwg0LTQvtGB0YLRg9C/0L3QsNGPINC00LvRjyDQstCw0YEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7Qn9C10YDQtdC60LvRjtGH0LjRgtGM0YHRjyDQvdCwINCz0YDRg9C/0L/QvtCy0YPRjiDQutC+0LzQvdCw0YLRgzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+0JTQtdC50YHRgtCy0LjRjyDQs9GA0YPQv9C/0L7QstC+0Lkg0LrQvtC80L3QsNGC0Ys8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPtCS0Ysg0LzQvtC20LXRgtC1INC/0LXRgNC10L7RgtC60YDRi9GC0Ywg0Y3RgtC+INC+0LrQvdC+INGH0LXRgNC10Lcg0L/Rg9C90LrRgiDQlNC10LnRgdGC0LLQuNGPINC80LXQvdGOITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+0J/QvtGB0LvQsNGC0Ywg0YHQvtC+0LHRidC10L3QuNC1INC80L7QtNC10YDQsNGC0L7RgNGDINCz0YDRg9C/0L/QvtCy0L7QuSDQutC+0LzQvdCw0YLRizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQ0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+0J3QvtCy0LDRjyDQs9GA0YPQv9C/0L7QstCw0Y8g0LrQvtC80L3QsNGC0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPtCV0YHRgtGMINC90L7QstCw0Y8g0LTQvtGB0YLRg9C/0L3QsNGPINCz0YDRg9C/0L/QvtCy0LDRjyDQutC+0LzQvdCw0YLQsC4g0JLRiyDQvNC+0LbQtdGC0LUg0L/QtdGA0LXQutC70Y7Rh9C40YLRjNGB0Y8g0L3QsCDQvdC10ZEuINCT0YDRg9C/0L/QvtCy0YvQtSDQutC+0LzQvdCw0YLRiyDQv9C+0YXQvtC20Lgg0L3QsCAi0YDQsNCx0L7Rh9C40LUiINGBINC00L7Qv9C+0LvQvdC40YLQtdC70YzQvdC+0Lkg0LLQvtC30LzQvtC20L3QvtGB0YLRjNGOINC30LDQtNCw0LLQsNGC0Ywg0LLQvtC/0YDQvtGB0Ysg0LzQvtC00LXRgNCw0YLQvtGA0YMuINCS0LDRiNC4INC60L7QvNC90LDRgtGLINGC0LDQutC20LUg0LTQvtGB0YLRg9C/0L3RiyDQsiDRgNCw0LfQtNC10LvQtSAi0JzQvtC4INCc0LjRgtC40L3Qs9C4Ii48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPtCf0LXRgNC10LnRgtC4INCyINCz0YDRg9C/0L/QvtCy0YPRjiDQutC+0LzQvdCw0YLRgzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQ3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+0KHQvtC30LTQsNC90L46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7QndCw0LfQstCw0L3QuNC1INCz0YDRg9C/0L/QvtCy0L7QuSDQutC+0LzQvdCw0YLRizo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0OSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPtCt0YLQviDQvtC60L3QviDQvtGB0YLQsNC90LXRgtGB0Y8g0L7RgtC60YDRi9GC0YvQvCDQtNCw0LbQtSDQtdGB0LvQuCDQstGLINCy0YvQudC00LXRgtC1INC40Lcg0LrQvtC80L3QsNGC0YshPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7Qn9C+0LvRjNC3LdC70Lgg0Y3RgtC+0Lkg0LPRgNGD0L/Qv9C+0LLQvtC5INC60L7QvNC90LDRgtGLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4zKSDQlNGA0YPQs9C40LUg0LPRgNGD0L/Qv9C+0LLRi9C1INC60L7QvNC90LDRgtGLLCDQuiDQutC+0YLQvtGA0YvQvCDQstGLINC80L7QttC10YLQtSDQv9C10YDQtdC50YLQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+0J/QvtGB0LvQsNGC0Ywg0YHQvtC+0LHRidC10L3QuNC1INC80L7QtNC10YDQsNGC0L7RgNCw0Lwg0LPRgNGD0L/Qv9C+0LLQvtC5INC60L7QvNC90LDRgtGLLiDQndCw0L/RgNC40LzQtdGALCDQtdGB0LvQuCDQstCw0Lwg0L3Rg9C20L3QsCDQv9C+0LzQvtGJ0Ywg0LIg0LzQvtC00LXRgNCw0YbQuNC4INC40LvQuCDRgyDQstCw0YEg0LXRgdGC0Ywg0LLQvtC/0YDQvtGBINC/0L4g0YLQtdC80LUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7Qn9C+0YHQu9Cw0YLRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Mikg0J/QvtC70YzQt9C+0LLQsNGC0LXQu9C4LCDQv9GA0LjQs9C70LDRiNGR0L3QvdGL0LUg0LIg0Y3RgtGDINC60L7QvNC90LDRgtGDPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7QnNC+0LTQtdGA0LDRgtC+0YAg0LPRgNGD0L/Qv9C+0LLQvtC5INC60L7QvNC90LDRgtGLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7QrdGC0L4gLSDQu9GO0LTQuCwg0LrQvtGC0L7RgNGL0YUg0LzQvtC00LXRgNCw0YLQvtGAINC/0YDQuNCz0LvQsNGB0LjQuyDQsiDRjdGC0YMg0LPRgNGD0L/Qv9C+0LLRg9GOINC60L7QvNC90LDRgtGDLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+0KHQtdC50YfQsNGBINCyINGN0YLQvtC5INC60L7QvNC90LDRgtC1INC90LXRgiDQt9Cw0LvQvtCz0LjQvdC10L3QvdGL0YUg0LzQvtC00LXRgNCw0YLQvtGA0L7QsiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1OCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPtCf0L7QttCw0LvRg9C50YHRgtCwLCDQstCy0LXQtNC40YLQtSDRgdC+0L7QsdGJ0LXQvdC40LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1OSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPtCf0L7QvNC+0LPQuNGC0LUsINCyINC90LDRiNC10Lkg0LPRgNGD0L/Qv9C+0LLQvtC5INC60L7QvNC90LDRgtC1INC/0YDQvtCx0LvQtdC80YshPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT7Qn9C+0LvRjNC30L7QstCw0YLQtdC70Ywg0LjQtyDQs9GA0YPQv9C/0L7QstC+0Lkg0YPQvtC80L3QsNGC0Ysg0L/RgNC+0YHQuNGCINC/0L7QvNC+0YnQuC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2MSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPtCX0LDQv9GA0L7RgSDQs9GA0YPQv9C/0L7QstC+0Lkg0LrQvtC80L3QsNGC0Ysg0LTQu9GPINC/0L7QvNC+0YnQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+0KHQvtC+0LHRidC10L3QuNC1OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+0J7Rgjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2NCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPtCh0LXQudGH0LDRgSDQstGLINC90LUg0L3QsNGF0L7QtNC40YLQtdGB0Ywg0L3QuCDQsiDQutCw0LrQvtC5INCz0YDRg9C/0L/QvtCy0L7QuSDQutC+0LzQvdCw0YLQtS4g0J3QviDQvNC+0LbQtdGC0LUg0L/RgNC10LrQu9GO0YfQuNGC0YzRgdGPINC90LAg0LrQvtC80L3QsNGC0YssINC6INC60L7RgtC+0YvQvCDQuNC80LXQtdGC0LUg0LTQvtGB0YLRg9C/LCDQt9C00LXRgdGMLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY1IiBuYW1lPSJiYWNrdXBDb250ZW50Ij4KKyAgICA8dmFsdWU+0JHRjdC60LDQvyDRgdC40YHRgtC10LzRiy4g0JLQutC70Y7Rh9Cw0LXRgiDQstGB0LUg0LTQsNC90L3Ri9C1LCDRgdCz0LXQvdC10YDQuNGA0L7QstCw0L3QvdGL0LUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10LwuINCd0LUg0LLQutC70Y7Rh9Cw0LXRgtGB0Y8g0LrQvtC90YTQuNCz0YPRgNCw0YbQuNGPINC4INC80LXRgtC60Lgg0Y/Qt9GL0LrQsCwg0L/QvtGC0L7QvNGDINGH0YLQviDQvtC90Lgg0LjQvNC/0L7RgNGC0LjRgNGD0Y7RgtGB0Y8g0YHQuNGB0YLQtdC80L3Ri9C8INC40L3RgdGC0L7Qu9C70Y/RgtC+0YDQvtC8LiDQlNC70Y8g0LDQv9C00LXQudGC0LAsINGB0Y3QutGB0L/QvtGA0YLQuNGA0YPQudGC0LUg0LLQsNGI0YMg0YHRgtCw0YDRg9GOINGB0LjRgdGC0LXQvNGDICgxKSDQv9GA0LXRg9GB0YLQsNC90L7QstC40YLQtSDQvdC+0LLRi9C1INC/0LDQutC10YLRiyDQtNC70Y8g0L3QvtCy0L7QuSDQsdCw0LfRiyDQtNCw0L3QvdGL0YUgKDIpINC4INGB0LjQvNC/0L7RgNGC0LjRgNGD0LnRgtC1INGE0LDQudC7INCx0Y3QutCw0L/QsCDRgdC90L7QstCwICgzKS4g0JHRjdC60LDQvyDQtNC+0LvQttC10L0g0LHRi9GC0Ywg0YHQuNC80L/QvtGA0YLQuNGA0L7QstCw0L0g0L/QtdGA0LXQtCDQs9C10L3QtdGA0LDRhtC40LXQuSDQtNCw0L3QvdGL0YUg0LIg0L3QvtCy0L7QuSDRgdC40YHRgtC10LzQtS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2NiIgbmFtZT0iYmFja3VwQ29udGVudCI+CisgICAgPHZhbHVlPtCh0LjRgdGC0LXQvNC90YvQuSDQsdGN0LrQsNC/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjciIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPtCf0L7Qt9Cy0L7Qu9C40YLRjCDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y4g0LTQtdC70LDRgtGMINC10LPQviDRjdC60YDQsNC9L9C30LDQv9C40YHRjCDQvtCx0YnQuNC8PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjgiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPtCX0LDQv9GA0LXRgtC40YLRjCDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y4g0LTQtdC70LDRgtGMINC10LPQviDRjdC60YDQsNC9L9C30LDQv9C40YHRjCDQvtCx0YnQuNC8PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjkiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPtCf0L7Qu9GM0LfQvtCy0LDRgtC10LvRjC3QvNC+0LTQtdGA0LDRgtC+0YAsINC4INC80L7QttC10YIg0LTQtdC70LDRgtGMINGH0YLQviDRg9Cz0L7QtNC90L4hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzAiIG5hbWU9ImFwcGx5IGZvciBzY3JlZW4vcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+0YXQvtGC0LXQuyDQsdGLINGB0LTQtdC70LDRgtGMINC10LPQviDRjdC60YDQsNC9L9C30LDQv9C40YHRjCDQvtCx0YnQuNC8LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDcxIiBuYW1lPSJtb2RlcmF0aW9uIG1pbmkgaWNvbnMiPgorICAgIDx2YWx1ZT7QktCw0Lwg0YDQsNC30YDQtdGI0LDQtdGC0YHRjyDQvtC00LXQu9Cw0YLRjCDRjdC60YDQsNC9L9C30LDQv9C40YHRjCDQvtCx0YnQuNC8PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzIiIG5hbWU9Im1vZGVyYXRpb24gbWluaSBpY29ucyI+CisgICAgPHZhbHVlPtCf0YDQuNC80LXQvdC40YLRjCDQv9GA0LDQstCwINC00LvRjyDQvtCx0YnQuNGFINGN0LrRgNCw0L3QsCDQuCDQt9Cw0L/QuNGB0LguPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzMiIG5hbWU9Im1vZGVyYXRpb24gbWluaSBpY29ucyBjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+0J/QvtC30LLQvtC70LjRgtGMINC40LvQuCDQt9Cw0L/RgNC10YLQuNGC0Ywg0LTQtdC70LDRgtGMINGN0LrRgNCw0L0g0LjQu9C4INC30LDQv9C40YHRjCDQvtCx0YnQuNC80LguPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzQiIG5hbWU9InNvdW5kIGljb24iPgorICAgIDx2YWx1ZT7QktGL0LrQu9GO0YfQuNGC0Ywg0LfQstGD0Lo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3NSIgbmFtZT0ic291bmQgaWNvbiI+CisgICAgPHZhbHVlPtCS0LrQu9GO0YfQuNGC0Ywg0LfQstGD0Lo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3NiIgbmFtZT0icm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPtCi0L7Qu9GM0LrQviDRgSDQsNGD0LTQuNC+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzciIG5hbWU9InJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT7Qo9GB0YLQsNC90L7QstC40YLQtSDRjdGC0L7RgiDRhNC70LDQsywg0Lgg0L/QvtC70YzQty3Qu9C4INCx0YPQtNGD0YIg0LjQvNC10YLRjCDRgtC+0LvRjNC60L4g0LfQstGD0Log0L7Qv9GG0LjQuCDQsdC10Lcg0LLQuNC00LXQviDQsiDQutC+0LzQvdCw0YLQtSDQtNC70Y8g0LrQvtC90YTQtdGA0LXQvdGG0LjQuS4g0J/QvtC70LXQt9C90L4g0LTQu9GPINGD0LzQtdC90YzRiNC10L3QuNGPINC90LDQs9GA0YPQt9C60Lgg0YHQtdGC0LguPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzgiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPtCf0L7Qt9Cy0L7Qu9C40YLRjCDRg9C00LDQu9GR0L3QvdGL0Lkg0LrQvtC90YLRgNC+0LvRjCAo0LTQu9GPINC+0LHRidC10LPQviDRjdC60YDQsNC90LApPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzkiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPtCX0LDQv9GA0LXRgtC40YLRjCDRg9C00LDQu9GR0L3QvdGL0Lkg0LrQvtC90YLRgNC+0LvRjCAo0LTQu9GPINC+0LHRidC10LPQviDRjdC60YDQsNC90LApPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODAiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPtCf0YDQuNC80LXQvdC40YLRjCDQuiDQv9GA0LDQstCw0Lwg0YPQtNCw0LvRkdC90L3QvtCz0L4g0LrQvtC90YLRgNC+0LvRjyAo0LTQu9GPINC+0LHRidC10LPQviDRjdC60YDQsNC90LApPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODEiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPtCjINCy0LDRgSDQvdC10YIg0L/RgNCw0LIg0L3QsCDRg9C00LDQu9GR0L3QvdGL0Lkg0LrQvtC90YLRgNC+0LvRjCAo0LTQu9GPINC+0LHRidC10LPQviDRjdC60YDQsNC90LApPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODIiIG5hbWU9ImFwcGx5IGZvciByZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPtGF0L7Rh9C10YIg0YPQtNCw0LvRkdC90L3Ri9C5INC60L7QvdGC0YDQvtC70Ywg0LTQu9GPINC+0LHRidC10LPQviDRjdC60YDQsNC90LAuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODMiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPtCf0L7Qu9GM0LfQvtCy0LDRgtC10LvRjCAtINC80L7QtNC10YDQsNGC0L7RgCDQvtC9INC80L7QttC10YIg0LTQtdC70LDRgtGMINCy0YHRkTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg0IiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT7Qn9C+0LfQstC+0LvQuNGC0Ywg0YLQu9GCINC30LDQv9GA0LXRgtC40YLRjCDRg9C00LDQu9GR0L3QvdGL0Lkg0LrQvtC90YLRgNC+0LvRjCAo0LTQu9GPINC+0LHRidC10LPQviDRjdC60YDQsNC90LApPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODUiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPjEpINCy0LDRiCBQQyDRg9C00LDQu9GR0L3QvdC+0LzRgyBQQzog0KfRgtC+0LHRiyDRgdC60L7Qv9C40YDQvtCy0LDRgtGMINC4INCy0YHRgtCw0LLQuNGC0Ywg0YLQtdC60YHRgiDQuNC3INCy0LDRiNC10LPQviDQsdGD0YTQtdGA0LAg0L7QsdC80LXQvdCwINCyINGD0LTQsNC70ZHQvdC90YvQuSDRjdC60YDQsNC9LCDQvdCw0LbQvNC40YLQtSDQvdCwINGN0LrRgNCw0L0sINC/0L7RgtC+0Lwg0LrQu9C40LrQvdC40YLQtSDQsiDRgtC10LrRgdGC0L7QstC+0Lwg0L/QvtC70LUg0Lgg0LLRi9Cx0LXRgNC40YLQtSAi0JLRgdGC0LDQstC40YLRjCIg0LjQtyDQutC+0L3RgtC10LrRgdGC0L3QvtCz0L4g0LzQtdC90Y4uMikg0KEg0YPQtNCw0LvRkdC90L3QvtCz0L4gUEMg0L3QsCDQstCw0YggUEM6INCn0YLQvtCx0Ysg0YHQutC+0L/QuNGA0L7QstCw0YLRjCDRgtC10LrRgdGCINGBINGD0LTQsNC70ZHQvdC90L7Qs9C+IFBDINCyINCy0LDRiCDQsdGD0YTQtdGAINC+0LHQvNC10L3QsCwg0LLRi9C00LXQu9C40YLQtSDRgtC10LrRgdGCINC90LAg0YPQtNCw0LvRkdC90L3QvtC8LCDQutC70LjQutC90LjRgtC1INC4INCy0YvQsdC10YDQuNGC0LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4NiIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+0KHQutC+0L/QuNGA0L7QstCw0YLRjCDQuCDQstGB0YLQsNCy0LjRgtGMINGC0LXQutGB0YIg0YEg0LLQsNGI0LXQs9C+IFBDINC90LAg0YPQtNCw0LvRkdC90L3Ri9C5IFBDINC4INC90LDQvtCx0L7RgNC+0YIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODciIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPtCh0LrQvtC/0LjRgNC+0LLQsNGC0Ywg0LLRi9C00LXQu9C10L3QvdGL0Lkg0YLQtdC60YHRgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg4IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT7QmtCw0Log0YHQutC+0L/QuNGA0L7QstCw0YLRjCDQuCDQstGB0YLQsNCy0LjRgtGMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODkiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPtCa0LDRh9C10YHRgtCy0L4g0L7QsdGJ0LXQs9C+INC00L7RgdGC0YPQv9CwOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkwIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT7QntGH0LXQvdGMINCy0YvRgdC+0LrQvtC1INC60LDRh9C10YHRgtCy0L48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5MSIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+0JLRi9GB0L7QutC+0LUg0LrQsNGH0LXRgdGC0LLQvjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkyIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT7QodGA0LXQtNC90LXQtSDQutCw0YfQtdGB0YLQstC+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTMiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPtCd0LjQt9C60L7QtSDQutCw0YfQtdGB0YLQstC+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTQiIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+ZW5fVVM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NSIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5kZV9ERTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk2IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPtCa0LvQsNCy0LjQsNGC0YPRgNCwOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk3IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPtCX0LDQutGA0YvRgtGMINCy0LXQsdC40L3QsNGAITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk4IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPtCS0LXQsdC40L3QsNGAINGD0LbQtSDQt9Cw0LrRgNGL0YIsINCy0Ysg0LHRg9C00LXRgtC1INC/0LXRgNC10L3QsNC/0YDQsNCy0LvQtdC90Ysg0LI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5OSIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT7Ql9Cw0LrRgNGL0YLRjCDQutC+0LzQvdCw0YLRgzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAwIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPtCf0LXRgNC10LDQtNGA0LXRgdCw0YbQuNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDEiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+0KPRgdGC0LDQvdC+0LLQutC4INCy0YvRhdC+0LTQsCDQuNC3INC60L7QvNC90LDRgtGLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDIiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+0JXRgdC70Lgg0LrQvtC80L3QsNGC0LAg0LfQsNC60YDRi9GC0LAsINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjCDQsdGD0LTQtdGCINC/0LXRgNC10LDQtNGA0LXRgdC+0LLQsNC9INC90LAg0YPQutCw0LfQsNC90L3Ri9C5IFVSTC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5MZGFwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDQiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT7QmNC80Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNiIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT7QmtC+0L3RhNC40LPRg9GA0LDRhtC40L7QvdC90YvQuSDRhNCw0LnQuzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA3IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPtCa0L7QvdGE0LjQs9GD0YDQsNGG0LjRjyBMZGFwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDgiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+0L3QsNC30LLQsNC90LjQtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA5IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPtCS0LrQu9GO0YfQtdC90L48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT7QktGB0YLQsNCy0LvQtdC90L48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT7QktGB0YLQsNCy0LvQtdC90L48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMiIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT7QmNC30LzQtdC90LXQvdC+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTMiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+0JjQt9C80LXQvdC10L3QvjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE0IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPtCa0L7QvdGE0LjQs9GD0YDQsNGG0LjQvtC90L3Ri9C1INGE0LDQudC70Ysg0LIg0YLQvtC5INC20LUg0L/QsNC/0LrQtSwg0YfRgtC+INC4IHdlYmFwcHMvb3Blbm1lZXRpbmdzL2NvbmYuINCX0LDQs9GA0YPQt9C40YLQtSDRhNCw0LnQu9GLINCyINC/0LDQv9C60YMg0LLRgNGD0YfQvdGD0Y4uINCY0LfQvNC10L3QtdC90LjRjyDQutC+0L3RhNC40LMt0YTQsNC50LvQvtCyINC/0YDQvtC40YHRhdC+0LTRj9GCINC90LXQvNC10LTQu9C10L3QvdC+INC+0L3Qu9Cw0LnQvS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT7QmNC80Y8g0LrQvtC90YTQuNCzLdGE0LDQudC70LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNiIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT7QldGB0LvQuCDQstGLINCy0LrQu9GO0YfQuNGC0LUgItC00L7QsdCw0LLQuNGC0Ywg0LTQvtC80LXQvSDQuiDQuNC80LXQvdC4Iiwg0LfQvdCw0YfQtdC90LjQtSDQv9C+0LvRjyAi0LTQvtC80LXQvSIg0LTQvtCx0LDQstC40YLRgdGPINC6INC60LDQttC00L7QvNGDINC70L7Qs9C40L3Rgywg0LrQvtGC0L7RgNGL0Lkg0LLQstC+0LTQuNGC0YHRjyDQv9GA0Lgg0LLRhdC+0LTQtSDQsiDRgdC40YHRgtC10LzRgy4g0K3RgtC+INGD0LTQvtCx0L3Qviwg0LXRgdC70Lgg0LvQvtCz0LjQvSDQsiBMZGFwINC30LDQv9C+0LzQuNC90LDQtdGC0YHRjyDRgSDQtNC+0LzQtdC90L3Ri9C8INC40LzQtdC90LXQvC4g0J3QsNC/0YDQuNC80LXRgDog0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GMINCy0LLQvtC00LjRgiAiaGFucyIsINC00L7QvNC10L0g0YPRgdGC0LDQvdC+0LLQu9C10L0g0LIgImxvY2FsaG9zdC5jb20iLCDQu9C+0LPQuNC9LCDQutC+0YLQvtGA0YvQuSDQv9GA0L7QstC10YDRj9C10YLRgdGPINC00LvRjyBMZGFwINCx0YPQtNC10YI6IGhhbnNAbG9jYWxob3N0LmNvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE3IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPtCU0L7QsdCw0LLQuNGC0Ywg0LTQvtC80LXQvSDQuiDQuNC80LXQvdC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTgiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+0JTQvtC80LXQvTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE5IiBuYW1lPSJyZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPtCS0YHRgtCw0LLQuNGC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMCIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT7QodC60L7Qv9C40YDQvtCy0LDRgtGMINCy0YvQtNC10LvQtdC90L3Ri9C5INGC0LXQutGB0YI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMSIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT7Qo9C00LDQu9GC0Ywg0YLQtdC60YHRgiDQuNC3INCx0YPRhNC10YDQsCDQvtCx0LzQtdC90LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMiIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT7Qn9C+0LrQsNC30LDRgtGMINGD0LTQsNC70ZHQvdC90YvQuSDQsdGD0YTQtdGAINC+0LHQvNC10L3QsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIzIiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT7QndC1INC/0L7QutCw0LfRi9Cy0LDRgtGMINGB0L3QvtCy0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNCIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+0KHQutC+0L/QuNGA0L7QstCw0YLRjCDRgtC10LrRgdGCINC30LTQtdGB0YwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjUiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPtCS0LDQvCDQvdGD0LbQvdGLINC/0YDQsNCy0LAg0LTQu9GPINGD0LTQsNC70ZHQvdC90L7Qs9C+INC60L7QvdGC0YDQvtC70Y8gKNC40LvQuCDQvNC+0LTQtdGA0LDRhtC40Y8pLCDRh9GC0L7QsdGLINGB0LrQvtC/0LjRgNC+0LLQsNGC0Ywg0Lgg0LLRgdGC0LDQstC40YLRjCDRgtC10LrRgdGCINCyINC40LvQuCDQuNC3INGD0LTQsNC70ZHQvdC90L7Qs9C+INGN0LrRgNCw0L3QsC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNiIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+0KPRgdGC0LDQvdC+0LLQutC4INC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjciIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPtCd0LUg0L/QvtC60LDQt9GL0LLQsNGC0Ywg0LjQvdGE0L7RgNC80LDRhtC40Y4g0L4g0LrQvtC/0LjRgNC+0LLQsNC90LjQuCDQuCDQstGB0YLQsNCy0LrQtSDQsiDRg9C00LDQu9GR0L3QvdC+0Lwg0LTQvtGB0YLRg9C/0LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyOCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT7QodC+0YXRgNCw0L3QuNGC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyOSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT7Qo9C00LDQu9C40YLRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMwIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPtCe0YLQvNC10L3QuNGC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMSIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPtCf0YDQuNCz0LvQsNGB0LjRgtGMINC/0L7Qu9GM0Lct0LvRjyDQsiDQutC+0LzQvdCw0YLRgyDQtNC70Y8g0LrQvtC90YTQtdGA0LXQvdGG0LjQuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMyIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+0JLRi9Cx0YDQsNGC0Ywg0LrQvtC80L3QsNGC0YMg0LTQu9GPINC60L7QvdGE0LXRgNC10L3RhtC40LkuINCf0YDQuNCz0LvQsNGI0ZHQvdC90YvQuSDRg9GH0LDRgdGC0L3QuNC6INC/0L7Qu9GD0YfQuNGCINGB0L7QvtCx0YnQtdC90LjQtSDRgSDQstCw0YjQuNC8INC40LzQtdC90LXQvCDQuCDRgdGB0YvQu9C60YMg0L3QsCDQutC+0LzQvdCw0YLRgy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMyIgbmFtZT0iY2hhdCB1c2VyIj4KKyAgICA8dmFsdWU+0J/RgNC40YHQvtC10LTQuNC90ZHQvSDRgTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzNCIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPtCS0L7QudC00LjRgtC1INCyINC60L7QvNC90LDRgtGDINC/0L7RgdC70LUg0L7RgtC/0YDQsNCy0LrQuCDQv9GA0LjQs9C70LDRiNC10L3QuNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzUiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT7Qn9GA0LjQs9C70LDRgdC40YLRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM2IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+0KHQvtC+0LHRidC10L3QuNC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzciIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT7RhdC+0YLQtdC70L7RgdGMINCx0Ysg0L/RgNC40LPQu9Cw0YHQuNGC0Ywg0LLQsNGBINCyINC60L7QvNC90LDRgtGDINC00LvRjyDQutC+0L3RhNC10YDQtdC90YbQuNC5OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM4IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+0J/RgNC40LPQu9Cw0YjQtdC90LjQtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM5IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+0J/QvtGB0LvQsNGC0Ywg0L/RgNC40LPQu9Cw0YjQtdC90LjQtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQwIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+0L/RgNC40L3Rj9C7INCy0LDRiNC1INC/0YDQuNCz0LvQsNGI0LXQvdC40LUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDEiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT7Qn9GA0LjQvdGP0YLRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQyIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+0J7RgtC60LDQt9Cw0YLRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQzIiBuYW1lPSJ1c2VyIHByb2ZpbGUiPgorICAgIDx2YWx1ZT7QotCw0LnQvNC30L7QvdCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDQiIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPtCU0LXRgtCw0LvQuCDRgdC+0LHRi9GC0LjRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ1IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT7QmNC80Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0NiIgbmFtZT0iYXBwb2ludG1lbnQgbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+0J7Qv9C40YHQsNC90LjQtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ3IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT7QodC+0LfQtNCw0L3QvjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ4IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+0KHQvtC+0LHRidC10L3QuNC1INCyINCi0Jc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0OSIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPtCS0LrQu9GO0YfQuNGC0LUgItCh0L7QvtCx0YnQtdC90LjQtSDQsiDRgtCw0LnQvNC30L7QvdC1Iiwg0YfRgtC+0LHRiyDQv9C+0L/RgNC+0YHQuNGC0Ywg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPINGB0LzQtdC90LjRgtGMINGB0LLQvtC5INC/0YDQvtGE0LDQudC7INC/0YDQuCDRgdC70LXQtC4g0LvQvtCz0LjQvdC1LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUwIiBuYW1lPSJ0aW1lIHpvbmUgdXBkYXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7Qv9C+0LbQsNC70YPQudGB0YLQsCDQv9GA0L7QstC10YDRjNGC0LUg0YLQsNC50LzQt9C+0L3RgyDQsiDQstCw0YjQtdC8INC/0YDQvtGE0LDQudC70LUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTEiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPtCd0L7QstCw0Y8g0LrQvtC90YTQtdGA0LXQvdGG0LjRjyAkQVBQX05BTUU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTIiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPtCU0LXRgtCw0LvQuDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MyIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+0KHRgtCw0YDRgjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NCIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+0JrQvtC90LXRhjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NSIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+0JjQt9C80LXQvdGR0L3QvdCw0Y8g0LrQvtC90YTQtdGA0LXQvdGG0LjRjyAkQVBQX05BTUU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTYiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPtCe0YDQs9Cw0L3QuNC30LDRgtC+0YA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTciIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPtCe0YLQvNC10L3RkdC90L3QsNGPINC60L7QvdGE0LXRgNC10L3RhtC40Y8gJEFQUF9OQU1FOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU4IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7QndCw0L/QvtC80LjQvdCw0L3QuNC1INC60L7QvdGE0LXRgNC10L3RhtC40LggJEFQUF9OQU1FOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU5IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+0J7QsdGJ0LjQtSDRg9GB0YLQsNC90L7QstC60Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPtCf0L7QutCw0LfRi9Cy0LDRgtGMINC60L7QvdGC0LDQutGC0L3Ri9C1INC00LDQvdC90YvQtSDQstGB0LXQvDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYxIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+0JTQvtCx0LDQstC40YLRjCDQv9C+0LvRjyDQstCw0YjQuNGFINC40L3RgtC10YDQtdGB0L7QsiDQuNC70Lgg0LjQvdGC0LXRgNC10YHQvtCyINCy0LDRiNC40YUg0L/QsNGA0YLQvdGR0YDQvtCyINCyINC60L7QvdGE0LXRgNC10L3RhtC40Y4uINCX0LDQv9GP0YLQsNGPINGA0LDQt9C00LXQu9GP0LXRgiDRgtC10YDQvNC40L3RiyAo0L3QsNC/0YDQuNC80LXRgDog0LzQtdC00LjRhtC40L3RgdC60LjQtSDRg9GB0LvRg9Cz0LgsINC30LDQsdC+0YLQsCDQviDQt9C00L7RgNC+0LLRjNC1LCAuLi4pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjIiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT7QnNC+0Lgg0L/RgNC10LTQu9C+0LbQtdC90LjRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYzIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+0JzQvtC4INC40L3RgtC10YDQtdGB0Ys8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2NCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPtCY0LzRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY1IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+0KLQsNC50LzQt9C+0L3QsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY2IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+0J7QsdC70LDRgdGC0Lgg0LjQvdGC0LXRgNC10YHQvtCyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjciIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT7QmtC+0L3RgtCw0LrRgtC90LDRjyDQuNC90YTQvtGA0LzQsNGG0LjRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY4IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+0J/QvtC60LDQt9GL0LLQsNGC0Ywg0LrQvtC90YLQsNC60YLQvdGL0LUg0LTQsNC90L3Ri9C1INGC0L7Qu9GM0LrQviDQutC+0L3RgtCw0LrRgtCw0Lw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2OSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPtCd0LUg0L/QvtC60LDQt9GL0LLQsNGC0Ywg0LrQvtC90YLQsNC60YLQvdGL0LUg0LTQsNC90L3Ri9C1INC90LjQutC+0LzRgzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTcwIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+0JzQvtC5INC/0YDQvtGE0LDQudC7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzEiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT7QoNC10LTQsNC60YLQuNGA0L7QstCw0YLRjCDRg9GB0YLQsNC90L7QstC60Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MiIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPtCY0YHQutCw0YLRjCDQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTczIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+0J/QvtGB0LzQvtGC0YDQtdGC0Ywg0LLQsNGIINC/0YDQvtGE0LDQudC7LCDQutCw0Log0LXQs9C+INCy0LjQtNGP0YIg0LTRgNGD0LPQuNC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzQiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT7QoNC10LTQsNC60YLQuNGA0L7QstCw0YLRjCDQstCw0YjQuCDRg9GB0YLQsNC90L7QstC60LgsINC00L7QsdCw0LLQuNGC0Ywg0LjQvdGC0LXRgNC10YHRiyDQtNC70Y8g0L/QvtC40YHQutCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzUiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT7QmNGB0LrQsNGC0Ywg0LTRgNGD0LPQuNGFINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5INC4INGA0LDRgdGI0LjRgNC40YLRjCDQstCw0YjRgyDRgdC10YLRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc2IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPtCY0YHQutCw0YLRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc3IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPtCf0L7Qu9GM0Lct0LvRjCDQv9GA0LXQtNC70LDQs9Cw0LXRgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc4IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPtCf0L7Qu9GM0Lct0LvRjCDQuNGJ0LXRgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc5IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPtCh0LLQvtCx0L7QtNC90YvQuSDRgtC10LrRgdGCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODAiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+0JjQvNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODEiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+0KLQsNC50LzQt9C+0L3QsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgyIiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPtCf0YDQtdC00LvQvtC20LXQvdC40Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MyIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT7Qn9C+0LjRgdC60Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT7QoNC10LfRg9C70YzRgtCw0YLRiyDQv9C+0LjRgdC60LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NSIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT7QlNC10LnRgdGC0LLQuNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODYiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+0JTQvtCx0LDQstC40YLRjCDQsiDQutC+0L3RgtCw0LrRgtGLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODciIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+0J/QvtGB0LvQsNGC0Ywg0YHQvtC+0LHRidC10L3QuNC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODgiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+0JrQvtC90YLQsNC60YLRiyDQuCDRgdC+0L7QsdGJ0LXQvdC40Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4OSIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT7QntC20LjQtNCw0Y7RidC40LUg0LrQvtC90YLQsNC60YLRizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkwIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+0J/RgNC40L3Rj9GC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPtCX0LDQv9GA0LXRgtC40YLRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkyIiBuYW1lPSJ1c2VyIGNvbnRhY3QgcmVxdWVzdCI+CisgICAgPHZhbHVlPtCX0LTRgNCw0LLRgdGC0LLRg9C50YLQtSw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MyIgbmFtZT0idXNlciBjb250YWN0IHJlcXVlc3QiPgorICAgIDx2YWx1ZT7RhdC+0YfQtdGCINC00L7QsdCw0LLQuNGC0Ywg0LLQsNGBINCyINGB0L/QuNGB0L7QuiDQutC+0L3RgtCw0LrRgtC+0LIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTQiIG5hbWU9InVzZXIgY29udGFjdCByZXF1ZXN0Ij4KKyAgICA8dmFsdWU+0J/RgNC+0LLQtdGA0YzRgtC1INC30LDQv9GA0L7RgdGLINCy0LDRiNC10LPQviDQutC+0L3RgtCw0LrRgtCwINCyICRBUFBfTkFNRSDQuNC70Lgg0L/QvtC50LTQuNGC0LUg0L/QviDRjdGC0L7QuSDRgdGB0YvQu9C60LUsINGH0YLQvtCx0Ysgb24g0L/RgNC40L3Rj9GC0Ywg0LjQu9C4INC+0YLQutC70L7QvdC40YLRjCDQt9Cw0L/RgNC+0YE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NSIgbmFtZT0iYWRkIHVzZXIgY29udGFjdCI+CisgICAgPHZhbHVlPtCt0YLQvtGCINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjCDRg9C20LUg0LIg0LLQsNGI0LXQvCDRgdC/0LjRgdC60LUg0LrQvtC90YLQsNC60YLQvtCyINC40LvQuCDQv9C+0LvRg9GH0LjQuyDQv9GA0LjQs9C70LDRiNC10L3QuNC1INC00L7QsdCw0LLQuNGC0YzRgdGPINCyINGB0L/QuNGB0L7Quiwg0L3QviDQvdC1INC+0YLQstC10YLQuNC7LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk2IiBuYW1lPSJ1c2VyIGNvbnRhY3QgbWFpbCI+CisgICAgPHZhbHVlPtCS0LDRiCDRgdC/0LjRgdC+0Log0LrQvtC90YLQsNC60YLQvtCyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTciIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT7QoNC10LTQsNC60YLQuNGA0YPQudGC0LUg0LLQsNGI0Lgg0LrQvtC90YLQsNC60YLRiyDQuCDRgdC+0L7QsdGJ0LXQvdC40Y8sINGD0L/RgNCw0LLQu9GP0LnRgtC1INC+0LbQuNC00LDRjtGJ0LjQvNC4INC60L7QvdGC0LDQutGC0LDQvNC4ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk4IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+0L/QvtC00YLQstC10YDQtNC40Lsg0LLQsNGBINC60LDQuiDQutC+0L3RgtCw0LrRgiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5OSIgbmFtZT0iY2hhdCBpbmZvIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMCIgbmFtZT0iY2hhdCBsb2cgaWNvbiI+CisgICAgPHZhbHVlPtCf0L7QutCw0LfQsNGC0Ywg0LjQu9C4INGB0LrQvtC/0LjRgNC+0LLQsNGC0Ywg0LvQvtCzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDEiIG5hbWU9ImNoYXQgbG9nIHdpbmRvdyI+CisgICAgPHZhbHVlPtCb0L7QsyDRh9Cw0YLQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7QntGCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPtCi0LXQvNCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPtCf0L7RgdC70LDRgtGMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA2IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7QodC+0L7QsdGJ0LXQvdC40Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+0J3QvtCy0YvQuSDQvNC10LnQuzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7QndCw0LbQvNC40YLQtSwg0YfRgtC+0LHRiyDQvdCw0L/QuNGB0LDRgtGMINGB0L7QvtCx0YnQtdC90LjQtSDQstCw0YjQtdC80YMg0LrQvtC90YLQsNC60YLRgzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7QndCw0L/QuNGI0LjRgtC1INC90L7QstC+0LUg0YHQvtC+0LHRidC10L3QuNC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTAiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPtCa0L7QvNGDOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjExIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7QotC10LzQsDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMiIgbmFtZT0id2hpdGVib2FyZCBmdWxsLWZpdCI+CisgICAgPHZhbHVlPtCS0LrQu9GO0YfQuNC40YLQtSBmdWxsIGZpdCDQuCDQtNC+0YHQutCwINCx0YPQtNC10YIg0LzQsNGB0YjRgtCw0LHQuNGA0L7QstCw0YLRjNGB0Y8g0YLQsNC6LCDRh9GC0L7QsdGLINCy0YHQtSDQtNC+0LrRg9C80LXQvdGC0Ysg0YHRgtCw0L3QvtCy0LjQu9C40YHRjCDQstC40LTQuNC80YvQvNC4INCyINGB0L7QvtGC0LLQtdGC0YHRgtCy0LjQuCDRgSDRgNCw0LfRgNC10YjQtdC90LjQtdC8INGN0LrRgNCw0L3QsCDQutCw0LbQtNC+0LPQviDRg9GH0LDRgdGC0L3QuNC60LAuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTMiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPtCY0YHQutC70Y7Rh9C40YLRjCDRg9GH0LDRgdGC0L3QuNC60LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNCIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+0JLRiyDQvdC1INC80L7QttC10YLQtSDRg9C00LDQu9C40YLRjCDRgdCw0LzQuCDRgdC10LHRjyDQuNC3INC60L7QvNC90LDRgtGLIdCV0YHQu9C4INCy0Ysg0YXQvtGC0LjRgtC1INC/0L7QutC40L3Rg9GC0Ywg0LXRkSwg0LfQsNC60YDQvtC50YLQtSDQvtC60L3QviDQsdGA0LDRg9C30LXRgNCwINC40LvQuCDQuNGB0L/QvtC70YzQt9GD0LnRgtC1INC60L3QvtC/0LrRgyDQktGL0YXQvtC0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE1IiBuYW1lPSJraWNrLXVzZXIiPgorICAgIDx2YWx1ZT7QktGLINC00LXQudGB0YLQstC40YLQtdC70YzQvdC+INGF0L7RgtC40YLQtSDQuNGB0LrQu9GO0YfQuNGC0Ywg0Y3RgtC+0LPQviDRg9GH0LDRgdGC0L3QuNC60LAg0LjQtyDQutC+0LzQvdCw0YLRiz88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNiIgbmFtZT0ia2ljay11c2VyIj4KKyAgICA8dmFsdWU+0J/QvtC00YLQstC10YDQtNC40YLQtSDQtNC10LnRgdGC0LLQuNC1IC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE3IiBuYW1lPSJraWNrLXVzZXIiPgorICAgIDx2YWx1ZT7QktGLINC90LUg0LzQvtC20LXRgtC1INC40YHQutC70Y7Rh9C40YLRjCDRgdGD0L/QtdGALdC80L7QtNC10YDQsNGC0L7RgNCwINC40Lcg0LrQvtC80L3QsNGC0YshPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPtCX0LDRgNC10LfQtdGA0LLQuNGA0L7QstCw0YLRjCDQutC+0LzQvdCw0YLRgzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7QodGC0LDRgNGCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjAiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPtCa0L7QvdC10YY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+0JTQvtCx0LDQstGM0YLQtSDQtNC+0L/QvtC70L3QuNGC0LXQu9GM0L3Ri9C5INC30LDQv9GA0L7RgSDQtNC70Y8g0LzQuNGC0LjQvdCz0LAg0Lgg0YHQvtC30LTQsNC50YLQtSDQutC+0LzQvdCw0YLRgyDQtNC70Y8g0LrQvtC90YTQtdGA0LXQvdGG0LjQuS4g0KHQvtCx0YvRgtC40LUg0YHQutC+0L/QuNGA0YPQtdGC0YHRjyDQsiDQutCw0LvQtdC90LTQsNGA0Ywg0LrQsNC20LTQvtCz0L4g0YPRh9Cw0YHRgtC90LjQutCwLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7QktGF0L7QtNGP0YnQuNC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPtCf0L7RgdC70LDQvdC90YvQtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7QmtC+0YDQt9C40L3QsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7QrdGC0L4g0LLRiyEg0JLRiyDQvdC1INC80L7QttC10YLQtSDQtNC+0LHQsNCy0LjRgtGMINGB0LXQsdGPINCyINGB0LLQvtC4INC60L7QvdGC0LDQutGC0YsuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjYiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT7Qn9C+0LvRjNC30L7QstCw0YLQtdC70Ywg0YPQttC1INC+0YLQutC70L7QvdGR0L0hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjciIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT7Qn9C+0LvRjNC30L7QstCw0YLQtdC70Ywg0YPQttC1INC/0L7QtNGC0LLQtdGA0LbQtNGR0L0hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjgiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT7QpdC10Ygg0LrQvtC90YLQsNC60YLQvtCyINGN0YLQvtCz0L4g0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPINC90LXQstCw0LvQuNC00LXQvSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyOSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPtCf0L7Qu9GM0LfQvtCy0LDRgtC10LvRjCDQtNC+0LHQsNCy0LvQtdC9INCyINGB0L/QuNGB0L7QuiDQutC+0L3RgtCw0LrRgtC+0LIhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzAiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT7Qn9C+0LvRjNC30L7QstCw0YLQtdC70Ywg0L7RgtC60LvQvtC90ZHQvSDQutCw0Log0LrQvtC90YLQsNC60YIg0Lgg0YPQtNCw0LvRkdC9INC40Lcg0YHQv9C40YHQutCwINC+0LbQuNC00LDRjtGJ0LjRhSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPtCd0LXRgiDRgtCw0LrQvtCz0L4g0LrQvtC90YLQsNC60YLQsCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPtCS0Ysg0LTQtdC50YHRgtCy0LjRgtC10LvRjNC90L4g0YXQvtGC0LjRgtC1INGD0LTQsNC70LjRgtGMINGN0YLQvtGCINC60L7QvdGC0LDQutGCPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMzIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+0J/QvtC00YLQstC10YDQtNC40YLQtSDRg9C00LDQu9C10L3QuNC1INC60L7QvdGC0LDQutGC0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPtCj0LTQsNC70LjRgtGMINC60L7QvdGC0LDQutGCINC40Lcg0YHQv9C40YHQutCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzUiIG5hbWU9InVzZXIgcHJvZmlsZSI+CisgICAgPHZhbHVlPtCf0YDQvtGE0LDQudC7INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM2IiBuYW1lPSJ1c2VyIHByb2ZpbGUiPgorICAgIDx2YWx1ZT7Qn9C+0LrQsNC30LDRgtGMINC/0YDQvtGE0LDQudC7INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM3IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7QodC+0L7QsdGJ0LXQvdC40Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzOCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+0J/QvtC40YHQujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7QktGB0LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0MCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+0J3QuNC60YLQvjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7QndC10L/RgNC+0YfQuNGCLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7Qn9GA0L7Rh9C40YLQsNC90L3Ri9C1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPtCaINC/0LDQv9C60LUgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPtCd0L7QstCw0Y8g0L/QsNC/0LrQsCAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+0KPQtNCw0LvQuNGC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+0KPQtNCw0LvRkdC90L3Ri9C5INC80LXQudC7INCy0YHRkSDQtdGJ0ZEg0LIg0LrQvtGA0LfQuNC90LUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDciIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPtCd0LXQv9GA0L7Rh9C40YIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPtCf0YDQvtGH0LjRgtCw0L3QvdC+0LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0OSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+0J7RgtCy0LXRgtC40YLRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7QntGC0LLQtdGC0LjRgtGMINCy0YHQtdC8PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPtCf0LXRgNC10YHQu9Cw0YLRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7QlNC10LnRgdGC0LLQuNGPIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUzIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+0J/QvtGB0LvQsNGC0Ywg0L/RgNC40LLQsNGC0L3QvtC1INGB0L7QvtCx0YnQtdC90LjQtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7QndC40YfQtdCz0L4g0L3QtSDQstGL0LHRgNCw0L3QviE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+0JLQviDQstGF0L7QtNGP0YnQuNC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTYiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPtCj0LTQsNC70LjRgtGMICjQvdCw0LLRgdC10LPQtNCwKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU3IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7QlNC10LnRgdGC0LLQuNC1INC90LUg0LzQvtC20LXRgiDQsdGL0YLRjCDQvtGC0LzQtdC90LXQvdC+ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7QndC+0LLQsNGPINC/0LDQv9C60LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1OSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+0JTQvtCx0LDQstC40YLRjCDQv9Cw0L/QutC4INC4INGD0L/QvtGA0Y/QtNC+0YfQuNGC0Ywg0YHQvtC+0LHRidC10L3QuNGPITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7QlNC+0LHQsNCy0LjRgtGMINC/0LDQv9C60YM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+0JTQvtCx0LDQstC40YLRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+0KPQtNCw0LvQuNGC0Ywg0L/QsNC/0LrRgzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+0JLRiyDQvdC1INC80L7QttC10YLQtSDRg9C00LDQu9C40YLRjCDRjdGC0YMg0L/QsNC/0LrRgywg0YLQsNC8INC10YHRgtGMINGB0L7QvtCx0YnQtdC90LjRjyEg0KPQtNCw0LvQuNGC0LUg0LjRhSDQuNC70Lgg0L/QtdGA0LXQvNC10YHRgtC40YLQtSDQuNGFINCyINC00YDRg9Cz0YPRjiDQv9Cw0L/QutGDLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+0KDQtdC00LDQutGC0LjRgNC+0LLQsNGC0Ywg0LjQvNGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSBmb2xkZXIiPgorICAgIDx2YWx1ZT7QktGLINC00LXQudGB0YLQstC40YLQtdC70YzQvdC+INGF0L7RgtC40YLQtSDRg9C00LDQu9C40YLRjCDRjdGC0YMg0L/QsNC/0LrRgz8g0JXRkSDQvdC10LvRjNC30Y8g0LLQvtGB0YHRgtCw0L3QvtCy0LjRgtGMLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY2IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+0JLQsNGIINC30LDQv9GA0L7RgSDQsdGL0Lsg0L/QvtGB0LvQsNC9INC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRji4g0J/QvtC70YzQt9C+0LLQsNGC0LXQu9GMINC/0L7Qu9GD0YfQuNGCINC90L7RgtC40YTQuNC60LDRhtC40Y4g0L4g0L/QvtC00YLQstC10YDQttC00LXQvdC40Lgg0LjQu9C4INC+0YLQutC70L7QvdC10L3QuNC4LiDQotC+0LvRjNC60L4g0L/QvtC00YLQstC10YDQttC00ZHQvdC90YvQtSDQt9Cw0L/RgNC+0YHRiyDQvNC+0LPRg9GCINCx0YvRgtGMINCyINCy0LDRiNC10Lwg0YHQv9C40YHQutC1INC60L7QvdGC0LDQutGC0L7QsiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPtCh0L7QvtCx0YnQtdC90LjQtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY4IiBuYW1lPSJ1c2VyIHZpZXcgcHJvZmlsZSI+CisgICAgPHZhbHVlPtCf0L7Qu9GM0LfQvtCy0LDRgtC10LvRjCDQvdC1INC00LDQuyDRgdC+0LLQvNC10YHRgtC90L7Qs9C+INC00L7RgdGC0YPQv9CwINC6INC10LPQviDQv9C10YDRgdC+0L3QsNC70YzQvdGL0Lwg0LTQsNC90L3Ri9C8LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY5IiBuYW1lPSJ1c2VyIHZpZXcgcHJvZmlsZSI+CisgICAgPHZhbHVlPtCf0L7Qu9GM0LfQvtCy0LDRgtC10LvRjCDRgNCw0LfRgNC10YjQuNC7INC00L7RgdGC0YPQvyDQuiDRgdCy0L7QuNC8INC/0LXRgNGB0L7QvdCw0LvRjNC90YvQvCDQtNCw0L3QvdGL0Lwg0YLQvtC70YzQutC+INC60L7QvdGC0LDQutGC0LDQvC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3MCIgbmFtZT0idXNlciB2aWV3IHByb2ZpbGUiPgorICAgIDx2YWx1ZT7QkNC00YDQtdGBINC4INGC0LXQu9C10YTQvtC9PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzEiIG5hbWU9ImVycm9yIGNvZGUiPgorICAgIDx2YWx1ZT7QmtC+0LQg0LLQsNGI0LXQs9C+INC/0YDQuNCz0LvQsNGI0LXQvdC40Y8g0L3QtdCy0LDQu9C40LTQtdC9LCDQvtC9INC00LXQudGB0YLQstGD0LXRgiDRgtC+0LvRjNC60L4g0LIg0L7Qv9GA0LXQtNC10LvRkdC90L3Ri9C5INC/0LXRgNC40L7QtCDQstGA0LXQvNC10L3QuC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3MiIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPtCt0YLQviDRgdC+0LHRi9GC0LjQtSDRgdCy0Y/Qt9Cw0L3QviDRgSDQvdC10YHQutC+0LvRjNC60LjQvNC4INC60LDQu9C10L3QtNCw0YDRj9C80Lgg0LTRgNGD0LPQuNGFINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvQtdC5LiDQktCw0YjQuCDQuNC30LzQtdC90LXQvdC40Y8g0YLQsNC60LbQtSDQuNC30LzQtdC90Y/RgiDQuNGFINC60LDQu9C10L3QtNCw0YDQuC4g0JLRi9GF0L7RgtC40YLQtSDQuNC30LzQtdC90LjRgtGMINGB0L7QsdGL0YLQuNC1PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjczIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+0J/QvtC00YLQstC10YDQtNC40YLQtSDQuNC30LzQtdC90LXQvdC40LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPtCf0L7Qt9Cy0L7Qu9C40YLRjCDQutC+0L3RgtCw0LrRgtGDINCy0LjQtNC10YLRjCDQvNC+0Lkg0LrQsNC70LXQvdC00LDRgNGMICjRgtC+0LvRjNC60L4g0L/RgNC+0YHQvNC+0YLRgCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPtCd0LUg0LTQsNCy0LDRgtGMINC00L7RgdGC0YPQv9CwINC6INC60LDQu9C10L3QtNCw0YDRjjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc2IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+0JrQsNC70LXQvdC00LDRgNGMINC60L7QvdGC0LDQutGC0L7QsjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+0JLQsNGI0Lgg0LrQvtC90YLQsNC60YLRiyDQtNC+0LvQttC90Ysg0YDQsNC30YDQtdGI0LjRgtGMINCy0LDQvCDQtNC+0YHRgtGD0L8sINC/0YDQtdC20LTQtSDRh9C10Lwg0LLRiyDRgdC80L7QttC10YLQtSDQstC40LTQtdGC0Ywg0LjRhSDQutCw0LvQtdC90LTQsNGA0LguPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzgiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT7QktGLINC90LUg0LzQvtC20LXRgtC1INGB0L7RhdGA0LDQvdC40YLRjCDQuNC70Lgg0YPQtNCw0LvQuNGC0Ywg0YHQvtCx0YvRgtC40Y8g0LjQtyDRh9GD0LbQuNGFINC60LDQu9C10L3QtNCw0YDQtdC5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc5IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+0J/QvtC60LDQt9Cw0YLRjCDQvNC+0Lkg0LrQsNC70LXQvdC00LDRgNGMINGB0L3QvtCy0LAhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODAiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT7QrdGC0L4g0YHQvtCx0YvRgtC40LUg0YHQstGP0LfQsNC90L4g0YEg0LrQsNC70LXQvdC00LDRgNGP0LzQuCDQtNGA0YPQs9C40YUg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9C10LkuINCS0LDRiNC4INC00LXQudGB0YLQstC40Y8g0YLQsNC60LbQtSDRg9C00LDQu9GP0YIg0YHQvtC+0LHRi9GC0LjQtSDQuNC3INGN0YLQuNGFINC60LDQu9C10L3QtNCw0YDQtdC5LiDQktGLINGF0L7RgtC40YLQtSDRg9C00LDQu9C40YLRjCDRgdC+0LHRi9GC0LjQtT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4MSIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPtCf0L7QtNGC0LLQtdGA0LTQuNGC0LUg0LTQtdC50YHRgtCy0LjQtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgyIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+0JLQvtC50YLQuCDQsiDQutC+0LzQvdCw0YLRgzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgzIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+0JTQvtGB0YLRg9C/INC6INC60L7QvNC90LDRgtC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPtCaINGN0YLQvtC80YMg0L/RgNC40LLQsNGC0L3QvtC80YMg0YHQvtC+0LHRidC10L3QuNGOINC30LDRgNC10LfQtdGA0LLQuNGA0L7QstCw0L3RiyDQutC+0LzQvdCw0YLQsCDQuCDRgdC+0LHRi9GC0LjQtS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NSIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPtCh0L/QtdGA0LLQsCDRgdC+0YXRhdGA0LDQvdC40YLQtSDRgdC+0LHRi9GC0LjQtSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NiIgbmFtZT0iYWNjZXNzIHJvb21zIGVycm9yIj4KKyAgICA8dmFsdWU+0J3QtdGCINGC0LDQutC40YUg0LTQvtGB0YLRg9C/0L3Ri9GFINC60L7QvNC90LDRgi4g0KHQvtCx0YvRgtC40LXRjyDQsiDQutCw0LvQtdC90LTQsNGA0LUg0Lgg0L/RgNC40YHQvtC10LTQuNC90ZHQvdC90LDRjyDQutC+0LzQvdCw0YLQsCDRg9C20LUg0YPQtNCw0LvQtdC90YshPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODciIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPtCS0YvQsdC10YDQuNGC0LUg0LLQsNGIINC90LjQujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg4IiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT7QmNC80Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4OSIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+0KTQsNC80LjQu9C40Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MCIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+0JzQtdC50Ls8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MSIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+T2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MiIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+0JzQuNC9LiDQtNC70LjQvdCwIC0gNCDRgdC40LzQstC+0LvQsCDQtNC70Y8g0LjQvNC10L3QuCDQuCDRhNCw0LzQuNC70LjQuCDQstC80LXRgdGC0LUhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkzIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT7QktCy0LXQtNC40YLQtSDQstCw0LvQuNC00L3Ri9C5INC80LXQudC7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTQiIG5hbWU9ImF1dGggZnJvbSI+CisgICAgPHZhbHVlPkZhY2Vib29rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTUiIG5hbWU9ImF1dGggZm9ybSI+CisgICAgPHZhbHVlPtCS0L7QudGC0Lgg0LrQsNC6IEZhY2Vib29rINCw0LrQutCw0YPQvdGCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTYiIG5hbWU9InZpZXcgcHJvZmlsZSI+CisgICAgPHZhbHVlPtCX0LDQv9C40YHQsNC9INGBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTciIG5hbWU9ImRpcmVjdCBsb2dpbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+0JLRiyDQt9Cw0YjQu9C4INGBINCw0LrQutCw0YPQvdGC0LAgRmFjZWJvb2suINCS0LDQvCDQvdC10L7QsdGF0L7QtNC40LzQviDQv9GA0L7Qv9C40YHQsNGC0Ywg0L/RgNCw0LLQuNC70YzQvdGL0Lkg0LzQtdC50Lsg0LIg0L/RgNC+0YTQsNC50LssINC40L3QsNGH0LUg0LLRiyDQvdC1INGB0LzQvtC20LXRgtC1INC/0L7Qu9GD0YfQsNGC0Ywg0L/RgNC40LPQu9Cw0YjQtdC90LjRjyDQuCDQv9GA0LjQstCw0YLQvdGL0LUg0YHQvtC+0LHRidC10L3QuNGPLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk4IiBuYW1lPSJkaXJlY3QgbG9naW4gbWVzc2FnZSBoZWFkZXIiPgorICAgIDx2YWx1ZT7QodC+0L7QsdGJ0LXQvdC40LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5OSIgbmFtZT0iZGlyZWN0IGxvZ2luIG1lc3NhZ2UgY2hlY2tib3ggY29udHJvbCI+CisgICAgPHZhbHVlPtCR0L7Qu9GM0YjQtSDQvdC1INC/0L7QutCw0LfRi9Cy0LDRgtGMINGB0L7QvtCx0YnQtdC90LjQtSDQvtCxINC40LfQvNC10L3QtdC90LjQuCDQv9GA0L7RhNCw0LnQu9CwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDAiIG5hbWU9InByb2ZpbGUgc2V0dGluZ3MgYnV0dG9uIj4KKyAgICA8dmFsdWU+0JXRidGRINC90LDRgdGC0YDQvtC50LrQuCDQtNC40YHQv9C70LXRjyAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+0J3QvtCy0L7QtSDQv9GA0LjQstCw0YLQvdC+0LUg0YHQvtC+0LHRidC10L3QuNC1OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7QndCw0LbQvNC40YLQtSDRgdGO0LTQsCwg0YfRgtC+0LHRiyDQv9C10YDQtdC50YLQuCDQuiDQv9GA0L7RhNCw0LnQu9GDINC4INC/0YDQvtGH0LjRgtCw0YLRjCDRgdC+0L7QsdGJ0LXQvdC40LUgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPtCe0YLQstC10YLQuNGC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwNCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+0JrQvtC80L3QsNGC0Ysg0Lgg0YfQsNGC0Ys8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwNSIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+0JzQvtC4INC60L7QvNC90LDRgtGLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDYiIG5hbWU9Im15IHJvb21zIj4KKyAgICA8dmFsdWU+0JzQvtGPINC60L7QvNC90LDRgtCwINC00LvRjyDQutC+0L3RhNC10YDQtdC90YbQuNC5KNC00L4gMTYg0YPRh9Cw0YHRgtC90LjQutC+0LIpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDciIG5hbWU9Im15IHJvb21zIj4KKyAgICA8dmFsdWU+0JzQvtGPINC60L7QvNC90LDRgtCwINC00LvRjyDQstC10LHQuNC90LDRgNC+0LIgKNC00L4gMTIwINGD0YfQsNGB0YLQvdC40LrQvtCyKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA4IiBuYW1lPSJyb29tIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+SWQg0LLQu9Cw0LTQtdC70YzRhtCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDkiIG5hbWU9ImxvZ2luIGVycm9yIj4KKyAgICA8dmFsdWU+0JLQstC10LTQuNGC0LUg0L/QsNGA0L7Qu9GMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTAiIG5hbWU9ImxvZ2luIGVycm9yIj4KKyAgICA8dmFsdWU+0JLQsNC8INC90YPQttC10L0g0LDQutC60LDRg9C90YIg0YPRgNC+0LLQvdGPINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjywg0LzQvtC00LXRgNCw0YLQvtGA0LAg0LjQu9C4INCw0LTQvNC40L3QsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzExIiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+V2ViLdGB0LXRgNCy0LjRgSAo0YLQvtC70YzQutC+INGH0LXRgNC10LcgU09BUCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMiIgbmFtZT0idXBsb2FkIGZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT7QndCw0L/RgNGP0LzRg9GOINC30LDQs9GA0YPQt9C40YLQtSDQvdCwINC00L7RgdC60YM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMyIgbmFtZT0id2hpdGVib2FyZCBjbG9zZSBjb25maXJtYXRpb24iPgorICAgIDx2YWx1ZT7QktGLINC00LXQudGB0YLQstC40YLQtdC70YzQvdC+INGF0L7RgtC40YLQtSDRg9C00LDQu9C40YLRjCDRjdGC0YMg0LTQvtGB0LrRgz8g0K3RgtC+INC00LXQudGB0YLQstC40LUg0L3QtSDQvNC+0LbQtdGCINCx0YvRgtGMINC+0YLQvNC10L3QtdC90L4hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTQiIG5hbWU9IndoaXRlYm9hcmQgbG9hZCBXTUwiPgorICAgIDx2YWx1ZT7Ql9Cw0LPRgNGD0LfQuNGC0Ywg0L3QsCDQtNC+0YHQutGDPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTUiIG5hbWU9InJlY29yZGluZyBmbGFnIj4KKyAgICA8dmFsdWU+0J3QtSDQt9Cw0LHRg9C00YzRgtC1INC90LDRh9Cw0YLRjCDQt9Cw0L/QuNGB0YwhIDEg0YPRh9Cw0YHRgtC90LjQuiDQsiDQutC+0LzQvdCw0YLQtSDRhdC+0YfQtdGCINC90LDRh9Cw0YLRjCDQtdGRLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE2IiBuYW1lPSJyZWNvcmRpbmcgZmxhZyI+CisgICAgPHZhbHVlPtCd0LDRh9Cw0YLRjCDQt9Cw0L/QuNGB0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxNyIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT7QodGC0YDQtdC70LrQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE4IiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPtCa0YDRg9CzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTkiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+0JvQuNC90LjRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIwIiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPtCa0LLQsNC00YDQsNGCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjEiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+0KLRgNC10YPQs9C+0LvRjNC90LjQujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIyIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+0KLQtdC60YHRgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIzIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+0KTQuNCz0YPRgNGLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjQiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT7QoNC40YHQvtCy0LDRgtGMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjUiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT7QktGL0LTQtdC70LjRgtGML9Cf0LXRgNC10LzQtdGB0YLQuNGC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNiIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPtCg0LjRgdC+0LLRgtGMINGE0L7RgNC80YM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNyIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPtCS0YvRgNC10LfQsNGC0Ywg0LjQu9C4INCf0LXRgNC10LzQtdGB0YLQuNGC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyOCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPtCc0LDRgdGI0YLQsNCxPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjkiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT7Qn9C10YfQsNGC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPtCe0YLQvNC10L3QsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMxIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+0JrQvtGA0LfQuNC90LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMiIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPtCU0L7QsdCw0LLQuNGC0Ywg0YDQtdGI0ZHRgtC60YM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMyIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPtCh0LTQtdC70LDRgtGMINGE0LDQudC7INC+0LHRidC40Lw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNCIgbmFtZT0iaWNvbiBzdWJtZW51Ij4KKyAgICA8dmFsdWU+0JLRi9Cx0YDQsNGC0Ywg0YTQvtGA0LzRgzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM1IiBuYW1lPSJpY29uIHN1Ym1lbnUiPgorICAgIDx2YWx1ZT7QktGL0LHRgNCw0YLRjCDRhNC40LPRg9GA0YM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNiIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPtCh0LrQvtC/0LjRgNC+0LLQsNGC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNyIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPtCS0YvRgNC10LfQsNGC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzOCIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPtCS0YHRgtCw0LLQuNGC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzOSIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPtCj0LTQsNC70LjRgtGMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDAiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT7QktGLINC00LXQudGB0YLQstC40YLQtdC70YzQvdC+INGF0L7RgtC40YLQtSDRg9C00LDQu9C40YLRjCDQutC+0L3RgtC10L3RgiDRgSDQtNC+0YHQutC4PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQxIiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+0JfQsNCz0YDRg9C30LjRgtGMINC/0YDRj9C80L4g0L3QsCDQtNC+0YHQutGDPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDIiIG5hbWU9ImF0dGVuZGVlcyI+CisgICAgPHZhbHVlPtCj0YfQsNGB0YLQvdC40LrQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQzIiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT7QnNC10L3QtdC00LbQtdGAINGD0YfQsNGB0YLQvdC40LrQvtCyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDQiIG5hbWU9ImF0ZW5kZWUgbWFuYWdlciI+CisgICAgPHZhbHVlPtCf0YDQuNGB0YPRgtGB0YLQstGD0Y7RgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ1IiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT7Qo9C00LDQu9GR0L3QvdGL0Lkg0LrQvtC90YLRgNC+0LvRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ2IiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT7QmNC30LLQu9C10YfRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ3IiBuYW1lPSJjaGF0Ij4KKyAgICA8dmFsdWU+0KfQsNGCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDgiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPtCf0YDQuNCz0LvQsNGB0LjRgtGMINGD0YfQsNGB0YLQvdC40LrQvtCyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDkiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPtCf0L4gZU1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1MCIgbmFtZT0iaW52aXRlIGF0dGVuZGVlIj4KKyAgICA8dmFsdWU+0J/QvtC70YzQt9C+0LLQsNGC0LXQu9GMIC0g0LzQvtC00LXRgNCw0YLQvtGAPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTEiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPtCjINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRjyDQstC60LvRjtGH0LXQvdCwINC60LDQvNC10YDQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUyIiBuYW1lPSJmaWxsX29wdGlvbiI+CisgICAgPHZhbHVlPtCU0LXQsNC60YLQuNCy0LjRgNC+0LLQsNGC0Ywg0LfQsNC/0L7Qu9C90LXQvdC40LUg0YTQvtGA0LzRizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUzIiBuYW1lPSJmaWxsX29wdGlvbiI+CisgICAgPHZhbHVlPtCQ0LrRgtC40LLQuNGA0L7QstCw0YLRjCDQt9Cw0L/QvtC70L3QtdC90LjQtSDRhNC+0YDQvNGLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTQiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT7Qn9GA0LjQstGP0LfRj9GC0Ywg0Log0YDQtdGI0ZHRgtC60LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NSIgbmFtZT0iYWxsb3dfcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+0KDQsNC30YDQtdGI0LjRgtGMINC30LDQv9C40YHRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU2IiBuYW1lPSJ3YWl0X2Zvcl9yZWNvcmRpbmciPgorICAgIDx2YWx1ZT7Qn9C+0LTQvtC20LTQsNGC0Ywg0LfQsNC/0LjRgdGMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTciIG5hbWU9ImhpZGVfdG9wX2JhciI+CisgICAgPHZhbHVlPtCh0LrRgNGL0YLRjCDQv9Cw0L3QtdC70Ywg0LjQvdGB0YLRgC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1OCIgbmFtZT0iZmlsZUV4cGxvcmVyIj4KKyAgICA8dmFsdWU+0JjQs9GA0LDRgtGMINCy0LjQtNC10L48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1OSIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPtCS0Ysg0LTQtdC50YHRgtCy0LjRgtC10LvRjNC90L4g0YXQvtGC0LjRgtC1INGD0LTQsNC70LjRgtGMINGB0L7QtNC10YDQttCw0L3QuNC1INGC0LXQutGD0YnQtdCz0L4g0YHQu9Cw0LnQtNCwPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYwIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT7Qn9GA0LjQvdGP0YLRjCDQuCDQvdCw0LfQvdCw0YfQuNGC0Ywg0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GM0YHQutC40LUg0L/RgNCw0LLQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYxIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT7QntGC0LrQu9C+0L3QuNGC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2MiIgbmFtZT0iYWN0aXZpdHlfd2luZG93Ij4KKyAgICA8dmFsdWU+0K88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2MyIgbmFtZT0iYWN0aXZpdHlfd2luZG93Ij4KKyAgICA8dmFsdWU+0JDQutGC0LjQstC90L7RgdGC0Ywg0Lgg0LTQtdC50YHRgtCy0LjRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY0IiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+0KPQtNCw0LvRkdC90L3QsNGPINC00L7RgdC60LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NSIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPtCS0Ysg0LTQvtC70LbQvdGLINCx0YvRgtGMINC80L7QtNC10YDQsNGC0L7RgNC+0Lwg0LjQu9C4INC40LzQtdGC0Ywg0L/RgNCw0LLQsCDQvdCwINGA0LjRgdC+0LLQsNC90LjQtSDQvdCwINC00L7RgdC60LUsINGH0YLQvtCx0Ysg0YPQtNCw0LvQuNGC0Ywg0LTQvtGB0LrRgyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NiIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPtCd0LUg0YDQsNC30YDQtdGI0LXQvdC+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjciIG5hbWU9InVzZXJfbGVmdF9hY3RfbXNnIj4KKyAgICA8dmFsdWU+0L/QvtC60LjQtNCw0LXRgiDQutC+0LzQvdCw0YLRgy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2OCIgbmFtZT0iY2xpcGFydCBpY29ucyI+CisgICAgPHZhbHVlPtCe0YHQvdC+0LLQvdGL0LUg0LjQutC+0L3QutC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjkiIG5hbWU9ImNsaXBhcnQgaWNvbnMiPgorICAgIDx2YWx1ZT7QkdC10Lcg0LrQsNGC0LXQs9C+0YDQuNC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzAiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPtCm0LLQtdGCLdGB0YLQuNC70Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+0JrQsNGH0LXRgdGC0LLQvjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzcyIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT7QlNC+0LzQtdC9PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzMiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPtC/0L7RgdC10YLQuNGC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NCIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+0LrRgNCw0YHQvdC+LdC+0YDQsNC90LbQtdCy0YvQuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc1IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT7RhtCy0LXRgiDQvNC+0YDRgdC60L7QuSDQstC+0LvQvdGLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzYiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPtCh0YLQsNC70YzQvdC+0Lk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NyIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+0YHQstC10YLQu9C+0YHQtdGA0L7Qs9C+0LvRg9Cx0L7QuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc4IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT7Qt9C+0LvQvtGC0LjRgdGC0YvQuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc5IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT7RgdC10YDQtdCx0YDRj9C90L4t0YHQtdGA0YvQuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgwIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT7Qv9C+0LvRjNC30L7QstCw0YLQtdC70YzRgdC60LjQuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgxIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT7Qu9GD0YfRiNC40Lk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4MiIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+0LfQsNCz0YDRg9C30LrQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgzIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT7RgdGA0LXQtNC90LjQuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg0IiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+0JLRi9C60LvRjtGH0LjRgtGMINC80LjQutGALiDQs9C70L7QsdCw0LvRjNC90L48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NSIgbmFtZT0idW5tdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+0JLQutC70Y7Rh9C40YLRjCDQvNC40LrRgC4g0LPQu9C+0LHQsNC70YzQvdC+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODYiIG5hbWU9ImdpdmUgZXhjbHVzaXZlIGF1ZGlvIj4KKyAgICA8dmFsdWU+0JTQsNGC0Ywg0YHQu9C+0LLQvjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg3IiBuYW1lPSJtdXRlIHNlbGYgbWVzc2FnZSI+CisgICAgPHZhbHVlPtCc0LjQutGA0L7RhNC+0L0g0LHRi9C7INC+0YLQutC7LiDQvNC+0LTQtdGA0LDRgtC+0YDQvtC8LiDQktGLINC90LUg0LzQvtC20LXRgtC1INCy0LrQuy4g0LzQuNC60YAuINGB0LDQvNC4ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg4IiBuYW1lPSJtdXRlIHNlbGYgY29uZmlybSBtZXNzYWdlIHRpdGxlIj4KKyAgICA8dmFsdWU+0JLRi9C60LsuINC80LjQutGA0L7RhNC+0L0g0LPQu9C+0LHQsNC70YzQvdC+PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg5IiBuYW1lPSJtdXRlIHNlbGYgY29uZmlybSBtZXNzYWdlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7QktGLINC00LXQudGB0YLQstC40YLQtdC70YzQvdC+INGF0L7RgtC40YLQtSDQvtGC0LrQu9GO0YfQuNGCINC80LjQutGA0L7RhNC+0L0/INCU0YDRg9Cz0LjQtSDRg9GH0LDRgdGC0L3QuNC60Lgg0L3QtSDRgdC80L7Qs9GD0YIg0LLQsNGBINGB0LvRi9GI0LDRgtGMITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkwIiBuYW1lPSJtdXRlIG90aGVycyBjb25maXJtIG1lc3NhZ2UgdGl0bGUiPgorICAgIDx2YWx1ZT7QntGC0LrQu9GO0YfQuNGC0Ywg0LzQuNC60YDQvtGE0L7QvSDQu9C+0LrQsNC70YzQvdC+PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkxIiBuYW1lPSJtdXRlIG90aGVycyBjb25maXJtIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7QktGLINC00LXQudGB0YLQstC40YLQtdC70YzQvdC+INGF0L7RgtC40YLQtSDQvtGC0LrQuy4g0Y3RgtC+0YIg0LzQuNC60YDQvtGE0L7QvT8g0K3RgtC+0YIg0LzQuNC60YDQvtGE0L7QvSDQvNC+0LbQvdC+INC+0YLQutC70Y7Rh9C40YLRjCDRgtC+0LvRjNC60L4g0L3QsCDQstCw0YjQtdC8INC60L7QvNC/0YzRjtGC0LXRgNC1LiDQlNCw0L3QvdC+0LUg0LTQtdC50YHRgtCy0LjQtSDQvdC1INC/0L7QstC70LjRj9C10YIg0L3QsCDRgtC+LCDQutCw0Log0L7RgdGC0LDQu9GM0L3Ri9C1INGD0YfQsNGB0YLQvdC40LrQuCDQsdGD0LTRg9GCINGB0LvRi9GI0LDRgtGMINGN0YLQvtCz0L4g0L/QvtC70YzQt9C+0LLQsNGC0LXQu9GPLiDQotC+0LvRjNC60L4g0LzQvtC00LXRgNCw0YLQvtGAINC80L7QttC10YIg0L7RgtC60LvRjtGH0LjRgtGMINC80LjQutGA0L7RhNC+0L0g0LPQu9C+0LHQsNC70YzQvdC+ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkyIiBuYW1lPSJtdXRlIG90aGVycyBjb25maXJtIG1lc3NhZ2UgdGl0bGUiPgorICAgIDx2YWx1ZT7QntGC0LrQu9GO0YfQuNGC0Ywg0LzQuNC60YDQvtGE0L7QvSDQs9C70L7QsdCw0LvRjNC90L4/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTMiIG5hbWU9Im11dGUgb3RoZXJzIG1vZGVyYXRvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+0JLRiyDQtNC10LnRgdGC0LLQuNGC0LXQu9GM0L3QviDRhdC+0YLQuNGC0LUg0L7RgtC60LvRjtGH0LjRgtGMINGN0YLQvtCz0L4g0YPRh9Cw0YHRgtC90LjQutCwPyDQkdC+0LvRjNGI0LUg0L3QuNC60YLQviDQvdC1INCx0YPQtNC10YIg0YHQu9GL0YjQsNGC0Ywg0LXQs9C+ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk0IiBuYW1lPSJtdXRlIHN0YXR1cyBpY29ucyI+CisgICAgPHZhbHVlPtCS0LDRiCDQt9Cy0YPQuiDQstC60LvRjtGH0LXQvS4g0J3QsNC20LzQuNGC0LUg0YHRjtC00LAsINGH0YLQvtCx0Ysg0L/QvtGB0LvQsNGC0Ywg0LzQvtC00LXRgNCw0YLQvtGA0YMg0YHQvtC+0LHRidC10L3QuNC1INC+INCy0YvQutC70Y7Rh9C10L3QuNC4INC80LjQutGA0L7RhNC+0L3QsCDQs9C70L7QsdCw0LvRjNC90L4gKNCyINC30LDQv9C+0LvQvdC10L3QvdC+0Lkg0LrQvtC80L3QsNGC0LUpITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk1IiBuYW1lPSJtdXRlIHN0YXR1cyBpY29ucyI+CisgICAgPHZhbHVlPtCS0LDRiCDQt9Cy0YPQuiDQstGL0LrQu9GO0YfQtdC9LiDQndCw0LbQvNC40YLQtSDRgdGO0LTQsCwg0YfRgtC+0LHRiyDQv9C+0YHQu9Cw0YLRjCDQvNC+0LTQtdGA0LDRgtC+0YDRgyDRgdC+0L7QsdGJ0LXQvdC40LUg0L4g0LLQutC70Y7Rh9C10L3QuNC4INC80LjQutGA0L7RhNC+0L3QsCDQs9C70L7QsdCw0LvRjNC90L4gKNCyINC30LDQv9C+0LvQvdC10L3QvdC+0Lkg0LrQvtC80L3QsNGC0LUpITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk2IiBuYW1lPSJtdXRlIGFwcGx5IHNlbGYgb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPtGF0L7RgtC10Lsg0LHRiywg0YfRgtC+0LHRiyDQvNC+0LTQtdGA0LDRgtC+0YAg0LLRi9C60LvRjtGH0LjQuyDQvNC+0Lkg0LzQuNC60YDQvtGE0L7QvSDQs9C70L7QsdCw0LvRjNC90L4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTciIG5hbWU9Im11dGUgYXBwbHkgc2VsZiBvZmYgbWVzc2FnZSI+CisgICAgPHZhbHVlPtGF0L7RgtC10Lsg0LHRiywg0YfRgtC+0LHRiyDQvNC+0LTQtdGA0LDRgtC+0YAg0LLQutC70Y7Rh9C40Lsg0LzQvtC5INC80LjQutGA0L7RhNC+0L0g0LPQu9C+0LHQsNC70YzQvdC+LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk4IiBuYW1lPSJtdXRlIGFwcGx5IG9mIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7RhdC+0YfQtdGCLCDRh9GC0L7QsdGLINC80L7QtNC10YDQsNGC0L7RgCDQstC60LvRjtGH0LjQuyDQtdCz0L4v0LXRkSDQvNC40LrRgNC+0YTQvtC9LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk5IiBuYW1lPSJtdXRlIGFwcGx5IG9mIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7RhdC+0YfQtdGCLCDRh9GC0L7QsdGLINC80L7QtNC10YDQsNGC0L7RgCDQstGL0LrQu9GO0YfQuNC7INC10LPQvi/QtdGRINC80LjQutGA0L7RhNC+0L0uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDAiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+0JLQutC70Y7Rh9C10L3QvdGL0Lkg0LzQuNC60YDQvtGE0L7QvS4g0J3QsNC20LzQuNGC0LUsINGH0YLQvtCx0Ysg0LLRi9C60LvRjtGH0LjRgtGMINC10LPQvi/QtdGRINC80LjQutGA0L7RhNC+0L0g0LPQu9C+0LHQsNC70YzQvdC+LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDAxIiBuYW1lPSJtdXRlIHN0YXR1cyBpY29ucyI+CisgICAgPHZhbHVlPtCS0YvQutC70Y7Rh9C10L3QvdGL0Lkg0LzQuNC60YDQvtGE0L7QvS4g0J3QsNC20LzQuNGC0LUsINGH0YLQvtCx0Ysg0LLQutC70Y7Rh9C40YLRjCDQtdCz0L4v0LXRkSDQvNC40LrRgNC+0YTQvtC9INCz0LvQvtCx0LDQu9GM0L3QviE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMiIgbmFtZT0ibXV0ZSBzZWxmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7QrdGC0L7RgiDRg9GH0LDRgdGC0L3QuNC6INCz0LvQvtCx0LDQu9GM0L3QviDQstGL0LrQu9GO0YfQtdC9INC80L7QtNC10YDQsNGC0L7RgNC+0LwuINCS0Ysg0L3QtSDQvNC+0LbQtdGC0LUg0LLQutC70Y7Rh9C40YLRjCDQtdCz0L4hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDMiIG5hbWU9Im11dGUgbWljcm8iPgorICAgIDx2YWx1ZT7QktGL0LrQu9GO0YfQuNGC0Ywg0LLQsNGIINC80LjQutGA0L7RhNC+0L0g0LPQu9C+0LHQsNC70YzQvdC+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDQiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPtCS0LrQu9GO0YfQuNGC0Ywg0LLQsNGIINC80LjQutGA0L7RhNC+0L0g0LPQu9C+0LHQsNC70YzQvdC+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDUiIG5hbWU9Im11dGUgbWljcm8iPgorICAgIDx2YWx1ZT7QktGL0LrQu9GO0YfQuNGC0Ywg0LzQuNC60YDQvtGE0L7QvTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA2IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT7QktC60LvRjtGH0LjRgtGMINC80LjQutGA0L7RhNC+0L08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwNyIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPtCS0YvQutC70Y7Rh9C40YLRjCDQvNC40LrRgNC+0YTQvtC9INCz0LvQvtCx0LDQu9GM0L3QvjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA4IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT7QktC60LvRjtGH0LjRgtGMINC80LjQutGA0L7RhNC+0L0g0LPQu9C+0LHQsNC70YzQvdC+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDkiIG5hbWU9Im11dGUgbW9kZXJhdG9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7QotC+0LvRjNC60L4g0LzQvtC00LXRgNCw0YLQvtGA0Ysg0LzQvtCz0YPRgiDQstC60LvRjtGH0LDRgtGMINC40LvQuCDQstGL0LrQu9GO0YfQsNGC0Ywg0YPRh9Cw0YHRgtC90LjQutC+0LIg0LPQu9C+0LHQsNC70YzQvdC+ISDQp9GC0L7QsdGLINCy0YvQutC70Y7Rh9C40YLRjCDQstCw0Ygg0LzQuNC60YDQvtGE0L7QvSwg0LjRgdC/0L7Qu9GM0LfRg9C50YLQtSDQuNC60L7QvdC60YMg0LzQuNC60YDQvtGE0L7QvdCwITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDEwIiBuYW1lPSJwb2xsX25hbWUiPgorICAgIDx2YWx1ZT7QndCw0LfQstCw0L3QuNC1INC+0L/RgNC+0YHQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDExIiBuYW1lPSJwb2xsX25hbWUiPgorICAgIDx2YWx1ZT7QktGLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTIiIG5hbWU9ImFyY2hpdmVkX3BvbGxzIj4KKyAgICA8dmFsdWU+0JfQsNCw0YDRhdC40LLQuNGA0L7QstCw0L3QvdGL0LUg0LPQvtC70L7RgdC+0LLQsNC90LjRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDEzIiBuYW1lPSJhY3RpdmVfcG9sbCI+CisgICAgPHZhbHVlPtCw0LrRgtC40LLQvdGL0LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNCIgbmFtZT0iY2hhcnRfc2ltcGxlIj4KKyAgICA8dmFsdWU+0J/RgNC+0YHRgtCw0Y8g0LTQuNCw0LPRgNCw0LzQvNCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTUiIG5hbWU9ImNoYXJ0X3BpZSI+CisgICAgPHZhbHVlPtCa0YDRg9Cz0L7QstCw0Y8g0LTQuNCw0LPRgNCw0LzQvNCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTYiIG5hbWU9InNpZ25fdXBfdmFsaWRhdGlvbiI+CisgICAgPHZhbHVlPtCS0LLQtdC00LjRgtC1INC1LdC80LXQudC7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTciIG5hbWU9ImNoYXRfbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+0J3QvtCy0YvQtSDRgdC+0L7QsdGJ0LXQvdC40Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxOCIgbmFtZT0icG9sbF9jbG9zZSI+CisgICAgPHZhbHVlPtCX0LDQutGA0YvRgtGL0Lkg0L7Qv9GA0L7RgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE5IiBuYW1lPSJwb2xsX2Nsb3NlX2NvbmZpcm0iPgorICAgIDx2YWx1ZT7Qo9Cy0LXRgNC10L3Riywg0YfRgtC+INGF0L7RgtC40YLQtSDQt9Cw0LrRgNGL0YLRjCDQvtC/0YDQvtGBPyDQkdC+0LvRjNGI0LUg0L3QuNC60YLQviDQvdC1INGB0LzQvtC20LXRgiDQs9C+0LvQvtGB0L7QstCw0YLRjC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMCIgbmFtZT0icG9sbF9kZWxldGUiPgorICAgIDx2YWx1ZT7Qo9C00LDQu9C40YLRjCDQvtC/0YDQvtGBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjEiIG5hbWU9InBvbGxfZGVsZXRlX2NvbmZpcm0iPgorICAgIDx2YWx1ZT7QpdC+0YLQuNGC0LUg0YPQtNCw0LvQuNGC0Ywg0Y3RgtC+0YIg0L7Qv9GA0L7RgT8g0KDQtdC30YPQu9GM0YLQsNGC0Ysg0YLQvtC20LUg0LHRg9C00YPRgiDRg9C00LDQu9C10L3Riy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMiIgbmFtZT0ibGFuZ3VhZ2VfY29kZSI+CisgICAgPHZhbHVlPtCa0L7QtCBJU08g0Y/Qt9GL0LrQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIzIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fcGVybWlzc2lvbiI+CisgICAgPHZhbHVlPtCg0LDQt9GA0LXRiNC40YLRjC/Qt9Cw0L/RgNC10YLQuNGC0Ywg0L/RgNCw0LLQsCDQvdCwINGN0LrRgdC60LvRjtC30LjQstC90YvQuSDQt9Cy0YPQui48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNCIgbmFtZT0iYWxsb3dfZXhjbHVzaXZlX2F1ZGlvX3Blcm1pc3Npb24iPgorICAgIDx2YWx1ZT7Qn9C+0LfQstC+0LvQuNGC0Ywg0YPRh9Cw0YHRgtC90LjQutGDINGN0LrRgdC60LvRjtC30LjQstC90YvQuSDQt9Cy0YPQujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI1IiBuYW1lPSJkZW55X2V4Y2x1c2l2ZV9hdWRpb19wZXJtaXNzaW9uIj4KKyAgICA8dmFsdWU+0JfQsNC/0YDQtdGC0LjRgtGMINGN0LrRgdC60LvRjtC30LjQstC90YvQuSDQt9Cy0YPQuiDQtNC70Y8g0YPRh9Cw0YHRgtC90LjQutCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjYiIG5hbWU9ImV4Y2xfYXVkaW8gYXBwbHkgc2VsZiBvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+0YXQvtGC0LXQuyDQsdGLINC/0L7Qu9GD0YfQuNGC0Ywg0YDQsNC30YDQtdGI0LXQvdC40LUg0L3QsCDRjdC60YHQutC70Y7Qt9C40LLQvdGL0Lkg0LfQstGD0LouPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjciIG5hbWU9ImV4Y2xfYXVkaW8gYXBwbHkgb2YgbWVzc2FnZSI+CisgICAgPHZhbHVlPtGF0L7Rh9GDLCDRh9GC0L7QsdGLINC80L7QtNC10YDQsNGC0L7RgCDRgNCw0LfRgNC10YjQuNC7INC80L3QtSDRjdC60YHQutC70Y7Qt9C40LLQvdGL0Lkg0LfQstGD0LouPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjgiIG5hbWU9ImV4Y2xfYXVkaW8gc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+0KDQsNC30YDQtdGI0LjRgtGMINGN0LrRgdC60LvRjtC30LjQstC90YvQuSDQt9Cy0YPQui48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyOSIgbmFtZT0iY2FtX3Jlc29sdXRpb24iPgorICAgIDx2YWx1ZT7QoNCw0LfRgNC10YjQtdC90LjQtSDQutCw0LzQtdGA0Ys8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzMCIgbmFtZT0iY2FtX3Jlc29sdXRpb25faW5mbyI+CisgICAgPHZhbHVlPtCY0LfQvNC10L3QtdC90LjQtSDRgNCw0LfRgNC10YjQtdC90LjRjyDQstC70LjRj9C10YIg0L3QsCDQv9GA0L7Qv9GD0YHQutC90YPRjiDRgdC/0L7RgdC+0LHQvdC+0YHRgtGMINGB0LXRgtC4LCDRg9Cy0LXQu9C40YfQtdC90L3QsNGPINC60LDRgNGC0LjQvdC60LAg0YLRgNC10LHRg9C10YIg0LHQvtC70YzRiNC1INGA0LDQt9GA0LXRiNC10L3QuNGPLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMxIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fZXJyb3IiPgorICAgIDx2YWx1ZT7QoyDQstCw0YEg0L3QtdGCINC/0YDQsNCyINGA0LDQt9GA0LXRiNCw0YLRjCDRgdC10LHQtSDQuNC70Lgg0LTRgNGD0LPQuNC8INGN0LrRgdC60LvRjtC30LjQstC90L7QtSDQsNGD0LTQuNC+LiDQn9C+0L/RgNC+0YHQuNGC0LUg0YMg0LzQvtC00LXRgNCw0YLQvtGA0LAg0Y3RgtC4INC/0YDQsNCy0LAg0LjQu9C4INC/0YPRgdGC0Ywg0L7QvSDRgNCw0LfRgNC10YjQuNGCINCy0LDQvCDRjdC60YHQutC70Y7Qt9C40LLQvdGL0Lkg0LfQstGD0Log0YHQsNC8LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMyIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fYXNrIj4KKyAgICA8dmFsdWU+0K8g0YXQvtGC0LXQuyDQsdGLINC/0L7Qu9GD0YfQuNGC0Ywg0YDQsNC30YDQtdGI0LXQvdC40LUg0L3QsCDRjdC60YHQutC70Y7Qt9C40LLQvdGL0Lkg0LfQstGD0LouPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzMiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19hY3Rpb24iPgorICAgIDx2YWx1ZT7QlNCw0YLRjCDQvNC90LUg0Y3QutGB0LrQu9GO0LfQuNCy0L3Ri9C5INC30LLRg9C6ICjQutCw0Log0LDQu9GM0YLQtdGA0L3QsNGC0LjQstCwLCDQutC70LjQutC90LjRgtC1INC90LAg0LLQsNGIINGN0LrRgNCw0L0g0LjQu9C4INC90LDQttC80LjRgtC1IEYxMik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNCIgbmFtZT0ibWljcm8gaXMgb24iPgorICAgIDx2YWx1ZT7QnNC40LrRgNC+0YTQvtC9INCy0LrQu9GO0YfRkdC9ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM1IiBuYW1lPSJtaWNybyBpcyBvZmYiPgorICAgIDx2YWx1ZT7QnNC40LrRgNC+0YTQvtC9INCy0YvQutC70Y7Rh9C10L08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNiIgbmFtZT0iaGlkZV9jaGF0Ij4KKyAgICA8dmFsdWU+0KHQutGA0YvRgtGMINGH0LDRgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM3IiBuYW1lPSJoaWRlX2FjdGl2aXRpZXNfYW5kX2FjdGlvbnMiPgorICAgIDx2YWx1ZT7QodC60YDRi9GC0Ywg0L/QsNC90LXQu9GMINC00LXQudGB0YLQstC40Lk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzOCIgbmFtZT0iaGlkZV9maWxlc19leHBsb3JlciI+CisgICAgPHZhbHVlPtCh0LrRgNGL0YLRjCDQv9Cw0L3QtdC70Ywg0YTQsNC50LvQvtCyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzkiIG5hbWU9ImhpZGVfYWN0aW9uc19tZW51Ij4KKyAgICA8dmFsdWU+0KHQutGA0YvRgtGMINC80LXQvdGOINC00LXQudGB0YLQstC40Lk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MCIgbmFtZT0iaGlkZV9zY3JlZW5fc2hhcmluZyI+CisgICAgPHZhbHVlPtCh0LrRgNGL0YLRjCDQvtCx0YnQuNC5INGN0LrRgNCw0L08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MSIgbmFtZT0iaGlkZV93aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+0KHQutGA0YvRgtGMINC00L7RgdC60YM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MiIgbmFtZT0ic2hvdyBtaWNyb3Bob25lIHN0YXR1cyI+CisgICAgPHZhbHVlPtCf0L7QutCw0LfQsNGC0Ywg0YHRgtCw0YLRg9GBINC80LjQutGA0L7RhNC+0L3QsCDQsiDQstC40LTQtdC+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDMiIG5hbWU9ImxheW91dF9vcHRpb25zIj4KKyAgICA8dmFsdWU+0J/QsNGA0LDQvNC10YLRgNGLINGA0LDRgdC/0L7Qu9C+0LbQtdC90LjRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ0IiBuYW1lPSJjYWxlbmRhciBuZXcgYnV0dG9uIj4KKyAgICA8dmFsdWU+0J3QvtCy0L7QtSDRgdC+0LHRi9GC0LjQtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ1IiBuYW1lPSJjYWxlbmRhciBwYXNzd29yZCBpbmZvIHRleHQiPgorICAgIDx2YWx1ZT7QodGB0YvQu9C60LgsINC30LDRidC40YnRkdC90L3Ri9C1INC/0LDRgNC+0LvQtdC8IC0g0Y3RgtC+INGB0YHRi9C70LrQuCDQvdCwINC60L7QvNC90LDRgtGLLCDQutC+0YLQvtGA0YvQtSDQv9C+0YHRi9C70LDRjtGC0YHRjyDRg9GH0LDRgdGC0L3QuNC60LDQvCDQv9GA0Lgg0YHQvtGF0YDQsNC90LXQvdC40Lgg0YHQvtCx0YvRgtC40Y8g0LIg0LrQsNC70LXQvdC00LDRgNC1LCDQvdC1INCyINC60L7QvNC90LDRgtC1ISDQrdGC0L4g0LfQvdCw0YfQuNGCLCDRh9GC0L4g0LXRgdC70Lgg0LLRiyDRgdC+0YXRgNCw0L3Rj9C10YLQtSDRgdC+0LHRi9GC0LjQtSDQvdC10YHQutC+0LvRjNC60L4g0YDQsNC3INGBINGA0LDQt9C90YvQvNC4INC/0LDRgNC+0LvRj9C80LgsINGD0YfQsNGB0YLQvdC40LrQuCDQutCw0LbQtNGL0Lkg0YDQsNC3INC/0L7Qu9GD0YfQsNGO0YIg0L3QvtCy0YvQtSDRgdGB0YvQu9C60Lgg0YEg0YDQsNC30L3Ri9C80Lgg0L/QsNGA0L7Qu9GP0LzQuC4g0J3QviDRgdGB0YvQu9C60LgsINC/0L7RgdC70LDQvdC90YvQtSDRgNCw0L3QtdC1LCDRgtC+0LbQtSDRgNCw0LHQvtGC0LDRjtGCITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ2IiBuYW1lPSJjYWxlbmRhciBlZGl0IGJ1dHRvbiI+CisgICAgPHZhbHVlPtCg0LXQtNCw0LrRgtC40YDQvtCy0LDRgtGMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDciIG5hbWU9InNpcCBzaG93IGRpYWxlciI+CisgICAgPHZhbHVlPtCd0L7QvNC10YDQvtC90LDQsdC40YDQsNGC0LXQu9GMIFNJUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ4IiBuYW1lPSJzaXAgY2FsbCI+CisgICAgPHZhbHVlPtCf0L7Qt9Cy0L7QvdC40YLRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ5IiBuYW1lPSJjYWxlbmRhciBjb250YWN0IGxpc3QiPgorICAgIDx2YWx1ZT7Qn9C+0LrQsNC30LDRgtGMINGB0L7QsdGL0YLQuNGPINC60LDQu9C10L3QtNCw0YDRjyDQtNC70Y8g0LrQvtC90YLQsNC60YLQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUwIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT7QktCw0Ygg0LTQvtC8ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUxIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT7Qn9C70LDQvdC40YDQvtCy0LDRgtGMINC80LjRgtC40L3Qs9C4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTIiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPtCh0LzQvtGC0YDQtdGC0Ywg0LfQsNC/0LjRgdC4INC4INC40L3RgtC10YDQstGM0Y48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MyIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+0JLRi9Cx0YDQsNGC0Ywg0Lgg0L3QsNGH0LDRgtGMINC60L7QvdGE0LXRgNC10L3RhtC40Y48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1NCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+0KPQv9GA0LDQstC70Y/RgtGMINC/0L7Qu9GM0LfQvtCy0LDRgtC10LvRj9C80Lgg0Lgg0L/RgNCw0LLQsNC80Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1NSIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+0KPQv9GA0LDQstC70Y/RgtGMINGB0LLRj9C30Y/QvNC4INC4INC40YHQutC70Y7Rh9Cw0YLRjCDRg9GH0LDRgdGC0L3QuNC60L7QsjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU2IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT7Qo9C/0YDQsNCy0LvRj9GC0Ywg0LPRgNGD0L/Qv9Cw0LzQuCDQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU3IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT7Qo9C/0YDQsNCy0LvRj9GC0Ywg0LrQvtC80L3QsNGC0LDQvNC4INC60L7QvdGE0LXRgNC10L3RhtC40Lk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1OCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+0KPQv9GA0LDQstC70Y/RgtGMINGB0LLQvtC50YHRgtCy0LDQvNC4INGB0LjRgdGC0LXQvNGLPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTkiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPtCj0L/RgNCw0LLQu9GP0YLRjCDQvNC10YLQutCw0LzQuCDQuCDRgtC10LrRgdGC0L7QvDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYwIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT7QmtC+0L3RhNC40LPRg9GA0LjRgNC+0LLQsNGC0YwgTERBUCDQuCBBRFM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MSIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+0K3QutGB0L/QvtGA0YIv0LjQvNC/0L7RgNGCINGB0LjRgdGC0LXQvNC90YvRhSDQsdGN0LrQsNC/0L7QsjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYyIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+0JLQsNC8INC90YPQttC90Ysg0L/RgNCw0LLQsCDQvNC+0LTQtdGA0LDRgtC+0YDQsCDQuNC70Lgg0L/RgNCw0LLQsCDQvdCwINGA0LjRgdC+0LLQsNC90LjQtSDQvdCwINC00L7RgdC60LUsINC30LDQs9GA0YPQt9C60YMsINCy0YvQs9GA0YPQt9C60YMsINC00L7QsdCw0LLQu9C10L3QuNC1INC4INGD0LTQsNC70LXQvdC40LUg0YTQsNC50LvQvtCyINC4INC/0LDQv9C+0LouPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjMiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT7QoNC10LTQsNC60YLQuNGA0L7QstCw0YLRjCDRgtC10LrRgdGCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjQiIG5hbWU9InNhbHV0YXRpb24iPgorICAgIDx2YWx1ZT7Qn9GA0L7RhC3RgDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY1IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPtCe0L/Rg9Cx0LvQuNC60L7QstCw0YLRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY2IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPtCd0LDRh9Cw0YLRjCDQv9GD0LHQu9C40LrQsNGG0LjRjjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY3IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPtCe0YHRgtCw0L3QvtCy0LjRgtGMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+0KHQtdGA0LLQtdGAINC/0YPQsdC70LjQutCw0YbQuNC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjkiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+0JTQvtC80LXQvSDQv9GD0LHQu9C40LrQsNGG0LjQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDcwIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPtCY0LzRjyDQv9GD0LHQu9C40LrQsNGG0LjQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDcxIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPtCj0LzQtdC90YzRiNCw0YLRjCDRiNC40YDQuNC90YMg0L7QsdGJ0LXQs9C+INGN0LrRgNCw0L3QsCDQv9GA0Lgg0L/QtdGA0LXQvNC10YnQtdC90LjQuCDQtdCz0L4g0LLQu9C10LLQvjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDcyIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPtCj0LzQtdC90YzRiNCw0YLRjCDQstGL0YHQvtGC0YMg0L7QsdGJ0LXQs9C+INGN0LrRgNCw0L3QsCDQv9GA0Lgg0L/QtdGA0LXQvNC10YnQtdC90LjQuCDQtdCz0L4g0LLQvdC40Lc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT7Qo9C80LXQvdGM0YjQsNGC0Ywg0YHQvNC10YnQtdC90LjQtSB4INC+0LHRidC10LPQviDRjdC60YDQsNC90LAg0L/RgNC4INGD0LLQtdC70LjRh9C10L3QuNC4INC10LPQviDRiNC40YDQuNC90Ys8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3NCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT7Qo9C80LXQvdGM0YjQsNGC0Ywg0YHQvNC10YnQtdC90LjQtSB5INC+0LHRidC10LPQviDRjdC60YDQsNC90LAg0L/RgNC4INGD0LLQtdC70LjRh9C10L3QuNC4INC10LPQviDQstGL0YHQvtGC0Ys8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3NSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT7QndCw0YHRgtGA0L7QudC60Lgg0LTQu9GPINGC0YDQsNC90YHQu9GP0YbQuNC4INCy0LjQtNC10L4g0LrQvtC90YTQtdGA0LXQvdGG0LjQuCDQvdCwINC00YDRg9Cz0LjQtSDRgdC10YDQstC40YHRizo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3NiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT7Qn9C+0LbQsNC70YPQudGB0YLQsCwg0YHQtNC10LvQsNC50YLQtSDRjdC60YDQsNC9INC+0LHRidC40Lwg0LTQu9GPINGC0L7Qs9C+LCDRh9GC0L7QsdGLINC+0L/Rg9Cx0LvQuNC60L7QstCw0YLRjCDQtdCz0L48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3NyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT7QlNC70Y8g0YLQvtCz0L4sINGH0YLQvtCx0Ysg0L3QsNGH0LDRgtGMINC30LDQv9C40YHRjCwg0L3QtdC+0LHRhdC+0LTQuNC80L4g0YDQsNC30YDQtdGI0LXQvdC40LUg0LzQvtC00LXRgNCw0YLQvtGA0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3OCIgbmFtZT0ibm8gcmlnaHQgZm9yIGV4Y2x1c2l2ZSBhdWRpbyI+CisgICAgPHZhbHVlPtCS0LDQvCDQvdC10L7QsdGF0L7QtNC40LzQviDRgNCw0LfRgNC10YjQtdC90LjQtSDQvdCwINC/0YDQtdC00L7RgdGC0LDQstC70LXQvdC40LUg0Y3QutGB0LrQu9GO0LfQuNCy0L3QvtCz0L4g0LDRg9C00LjQviDQu9GO0LHQvtC80YMg0YPRh9Cw0YHRgtC90LjQutGDLCDQtNC70Y8g0Y3RgtC+0LPQviDQstCw0Lwg0L3QtdC+0LHRhdC+0LTQuNC80L4g0LHRi9GC0Ywg0LzQvtC00LXRgNCw0YLQvtGA0L7QvCDQuNC70Lgg0LjQvNC10YLRjCDRjdC60YHQutC70Y7Qt9C40LLQvdGL0LUg0L/RgNCw0LLQsCDQvdCwINCy0LrQuy/QstGL0LrQuyDQvNC40LrRgNC+0YTQvtC90L7Qsi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3OSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+0JfQsNCz0YDRg9C30LjRgtGMINC90L7QstGL0Lkg0YTQsNC50Ls8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+0J7RgtC60YDRi9GC0Ywg0L3QsNGB0YLRgNC+0LnQutC4INC+0LHRidC10LPQviDRjdC60YDQsNC90LAg0LIg0L3QvtCy0L7QvCDQvtC60L3QtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgxIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT7Ql9Cw0L/RgNC+0YHQuNGC0Ywg0L/QvtC00YLQstC10YDQttC00LXQvdC40LUg0LzQvtC00LXRgNCw0YLQvtGA0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MiIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+0JfQsNC/0YDQvtGB0LjRgtGMINGA0LDQt9GA0LXRiNC10L3QuNC1INC80L7QtNC10YDQsNGC0L7RgNCwINC90LAg0LTQvtGB0YLRg9C/INC6INC60LDQvNC10YDQtS/QvNC40LrRgNC+0YTQvtC90YM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MyIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+0J/QvtC70YPRh9C10L3QuNC1INC+0LHRgNCw0YLQvdC+0Lkg0YHQstGP0LfQuCDQv9C+0YHRgNC10LTRgdGC0LLQvtC8INC+0L/RgNC+0YHQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg0IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT7Qn9GA0L7RiNC70YvQtSDQuCDRgtC10LrRg9GJ0LjQtSDRgNC10LfRg9C70YzRgtCw0YLRiyDQvtC/0YDQvtGB0L7QsiDQsiDQstC40LTQtSDQs9GA0LDRhNC40LrQvtCyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODUiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPtCf0YDQvtCz0L7Qu9C+0YHQvtCy0LDRgtGMLCDQtdGB0LvQuCDRgdGD0YnQtdGB0YLQstGD0LXRgiDQvtC/0YDQvtGBINC00LvRjyDRjdGC0L7QuSDQutC+0LzQvdCw0YLRizwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg2IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT7QmNC30LzQtdC90LjRgtGMINC90LDRgdGC0YDQvtC50LrQuCDQutCw0LzQtdGA0Ysg0Lgg0LzQuNC60YDQvtGE0L7QvdCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODciIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPtCf0L7QtNGC0LLQtdGA0LTQuNGC0Ywg0Lgg0L/QvtC60LjQvdGD0YLRjCDQutC+0LzQvdCw0YLRgzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg4IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT7Qn9C+0LfQstC+0L3QuNGC0Ywg0LLQvdC10YjQvdC40Lwg0YPRh9Cw0YHRgtC90LjQutCw0Lwg0L/RgNC4INC/0L7QvNC+0YnQuCBWb0lQL1NJUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg5IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT7QntGC0L/RgNCw0LLQuNGC0Ywg0L/RgNC40LPQu9Cw0YjQtdC90LjQtSDRgSDQv9GA0Y/QvNC+0Lkg0YHRgdGL0LvQutC+0Lkg0L3QsCDRjdGC0YMg0LrQvtC80L3QsNGC0YM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+0JjQt9C80LXQvdC40YLRjCDQvdCw0YHRgtGA0L7QudC60Lgg0LTQvtGB0LrQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkxIiBuYW1lPSJiYWNrdXAgYWRtaW4iPgorICAgIDx2YWx1ZT7QnNCw0LrRgdC40LzQsNC70YzQvdGL0Lkg0YDQsNC30LzQtdGAINC30LDQs9GA0YPQttCw0LXQvNC+0LPQviDRhNCw0LnQu9CwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTIiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPtCX0LDQv9GA0L7RgdC40YLRjCDRgNCw0LfRgNC10YjQtdC90LjQtSDQvNC+0LTQtdGA0LDRgtC+0YDQsCDQvdCwINC00L7RgdGC0YPQvyDQuiDQtNC+0YHQutC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTMiIG5hbWU9InByaXZhdGUgY2hhdCI+CisgICAgPHZhbHVlPtCd0LDRh9Cw0YLRjCDQv9GA0LjQstCw0YLQvdGL0Lkg0YfQsNGCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTQiIG5hbWU9ImFsbF9wcml2YXRlX2NoYXQiPgorICAgIDx2YWx1ZT7QktGB0LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NSIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+0JLRiyDQvdC1INC80L7QttC10YLQtSDQvdCw0YfQsNGC0Ywg0L/RgNC40LLQsNGC0L3Ri9C5INGH0LDRgiDRgSDRgdC+0LHQvtC5LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk2IiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT7QktGLINGD0LbQtSDQvdCw0YfQsNC70Lgg0L/RgNC40LLQsNGC0L3Ri9C5INGH0LDRgiDRgSDRjdGC0LjQvCDRg9GH0LDRgdGC0L3QuNC60L7QvC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NyIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+0JLRiyDQtNC10LnRgdGC0LLQuNGC0LXQu9GM0L3QviDRhdC+0YLQuNGC0LUg0YPQtNCw0LvQuNGC0Ywg0Y3RgtC+0YIg0L/RgNC40LLQsNGC0L3Ri9C5INGH0LDRgj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5OCIgbmFtZT0iU2VydmVycyI+CisgICAgPHZhbHVlPtCh0LXRgNCy0LXRgNCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTkiIG5hbWU9IlNlcnZlcnMiPgorICAgIDx2YWx1ZT7QodC10YDQstC10YDQsCDQutC70LDRgdGC0LXRgNCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDAiIG5hbWU9IlNlcnZlciBuYW1lIj4KKyAgICA8dmFsdWU+0JjQvNGPINCh0LXRgNCy0LXRgNCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDEiIG5hbWU9IlNlcnZlciBBZGRyZXNzIj4KKyAgICA8dmFsdWU+0JDQtNGA0LXRgSDQodC10YDQstC10YDQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAyIiBuYW1lPSJTZXJ2ZXIgZGV0YWlscyI+CisgICAgPHZhbHVlPtCe0L/QuNGB0LDQvdC40LUg0KHQtdGA0LLQtdGA0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMyIgbmFtZT0iU2VuZCBTTVMiPgorICAgIDx2YWx1ZT7QodCc0KE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNCIgbmFtZT0icHVibGlzaGluZ19tZXNzYWdlIj4KKyAgICA8dmFsdWU+0KHQvtC+0LHRidC10L3QuNC1LiDQn9C+0LvRjNC30L7QstCw0YLQtdC70Y46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDUiIG5hbWU9ImNtZF9saW5lX2FkbWluIj4KKyAgICA8dmFsdWU+0KfRgtC+INCx0Ysg0YPQvNC10L3RjNGI0LjRgtGMINCy0YDQtdC80Y8g0Lgg0LjQvdGC0LXRgNC90LXRgiDRgtGA0LDRhNGE0LjQuiDQstGLINC80L7QttC10YLQtSDQstC+0YHQv9C+0LvRjNC30L7QstCw0YLRgdGPINC60L7QvNCw0L3QtNC90L7QuSDRgdGC0YDQvtC60L7QuSBhZG1pbiDQtNC70Y8g0LrQvtC/0LjRgNC+0LLQsNC90LjRjy/QstC+0YHRgdGC0LDQvdC+0LLQu9C10L3QuNGPL9C+0LHQvdC+0LLQu9C10L3QuNGPOiAxKSDQstC+0LnQtNC40YLQtSDQsiDRg9GB0YLQsNC90L7QstC+0YfQvdGD0Y4g0L/QsNC/0LrRgyBPTSAo0L3QsNC/0YDQuNC80LXRgCAvb3B0L3JlZDUpIDIpINC+0YHRgtCw0L3QvtCy0LjRgtC1IE9NICguL3JlZDUtc2h1dGRvd24uc2gpIDMpINCy0YvQv9C+0LvQvdGP0LXQvCAuL2FkbWluLnNoIC1iIC1maWxlIH4vdG9kYXlfb21fYmFja3VwLnppcCAo0YHQvtC30LTQsNC10YIg0YDQtdC30LXRgNCy0L3Rg9GOINC60L7Qv9C40Y4gT00pIDQpINC30LDQs9GA0YPQt9C40YLQtSDQvdC+0LLRi9C5INC00LjRgdGC0YDQuNCx0YPRgtC40LIgT00gNSkgbXYgL29wdC9yZWQ1IC9vcHQucmVkNS5iYWsgKNC/0LXRgNC10LzQtdGJ0LDQtdC8INGA0LDQsdC+0YfRg9GOINCy0LXRgNGB0LjRjiBPTSA6KSkgNikg0YDQsNGB0L/QsNC60L7QstGL0LLQsNC10Lwg0LTQuNGB0YLRgNC40LHRg9GC0LjQsiBPTSDQsiDQv9Cw0L/QutGDIC9vcHQvcmVkNSA3KSDQt9Cw0L/Rg9GB0LrQsNC10LwgLi9hZG1pbi5zaCAtaSAtZmlsZSB+L3RvZGF5X29tX2JhY2t1cC56aXAgKNC40LvQuCAnLi9hZG1pbi5zaCAtaSAtZmlsZSB+L3RvZGF5X29tX2JhY2t1cC56aXAgLS1kYi10eXBlIG15c3FsIC0tZGItdXNlciBvbV91c2VyIC0tZGItcGFzcyBvbV91c2VyX3Bhc3MnINCyINGB0LvRg9GH0LDQtSDQutC+0LPQtNCwINCx0LDQt9CwINC00LDQvdC90YvRhSDQvtGC0LvQuNGH0LDQtdGC0YHRjyDQvtGCINCx0LDQt9GLINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOICkgOCkg0LfQsNC/0YPRgdC60LDQtdC8IE9NPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDYiIG5hbWU9InB1YmxpY19yb29tX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT7QntCx0YnQuNC1INC60L7QvNC90LDRgtGLINC00LvRjyDQstGB0LXRhSDQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA3IiBuYW1lPSJwcml2YXRlX3Jvb21fdG9vbHRpcCI+CisgICAgPHZhbHVlPtCe0LHRidC40LUg0LrQvtC80L3QsNGC0Ysg0LTQu9GPINGC0LXQutGD0YnQtdC5INCz0YDRg9C/0L/RiyDQv9C+0LvRjNC30L7QstCw0YLQtdC70LXQuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA4IiBuYW1lPSJteV9yb29tX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT7QmtC+0LzQvdCw0YLRiyDQtNCw0L3QvdC+0LPQviDQv9C+0LvRjNC30L7QstCw0YLQtdC70Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwOSIgbmFtZT0iY3JlYXRlX25ld19yb29tIj4KKyAgICA8dmFsdWU+0KHQvtC30LTQsNGC0Ywv0YDQtdC00LDQutGC0LjRgNC+0LLQsNGC0Ywg0LrQvtC80L3QsNGC0YMg0LTQu9GPINGN0YLQvtCz0L4g0YHQvtCx0YvRgtC40Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxMCIgbmFtZT0ibXVsdGlwbGVfYWRkcmVzc2VzIj4KKyAgICA8dmFsdWU+0JLRiyDQvNC+0LbQtdGC0LUg0LLQstC10YHRgtC4INC90LXRgdC60L7Qu9GM0LrQviDQsNC00YDQtdGB0L7QsiDQsiDRhNC+0YDQvNCw0YLQtTog0JjQvNGPMSDQpNCw0LzQuNC70LjRjzEgJmx0O9Cw0LTRgNC10YExJmd0Oywi0JjQvNGPMiDQpNCw0LzQuNC70LjRjzIiICZsdDvQsNC00YDQtdGBMiZndDssJ9CY0LzRjzMg0KTQsNC80LjQu9C40Y8zJyAmbHQ70LDQtNGA0LXRgTMmZ3Q7LCAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxMSIgbmFtZT0ic3RyZWFtX3ZvbHVtZSI+CisgICAgPHZhbHVlPtCg0LXQs9GD0LvQuNGA0L7QstCw0YLRjCDQv9C+0YLQvtC6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTIiIG5hbWU9Im1pY3JvcGhvbmVfdm9sdW1lIj4KKyAgICA8dmFsdWU+0KDQtdCz0YPQu9C40YDQvtCy0LDRgtGMINC80LjQutGA0YTQvtC9PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTMiIG5hbWU9ImNoYXRfbW9kZXJhdGVkIj4KKyAgICA8dmFsdWU+0J/RgNC10LzQvtC00LXRgNC40YDRg9C10LzRi9C5INGH0LDRgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE0IiBuYW1lPSJjaGF0X21vZGVyYXRlZCI+CisgICAgPHZhbHVlPtCe0L/Rg9Cx0LvQuNC60L7QstCw0YLRjCDRgdC+0L7QsdGJ0LXQvdC40LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNSIgbmFtZT0iY2hhdF9vcGVuZWQiPgorICAgIDx2YWx1ZT7QntGC0LrRgNGL0LLQsNGC0Ywg0L/QsNC90LXQu9GMINGH0LDRgtCwINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTYiIG5hbWU9ImZpbGVzX29wZW5lZCI+CisgICAgPHZhbHVlPtCe0YLQutGA0YvQstCw0YLRjCDQv9Cw0L3QtdC70Ywg0YTQsNC50LvQvtCyINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTciIG5hbWU9InNlcnZlciBhZG1pbiBzZWN0aW9uIGxhc3RwaW5nIj4KKyAgICA8dmFsdWU+0J/RgNC+0YjQu9GL0Lkg0LfQsNC/0YDQvtGBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTgiIG5hbWU9InNlcnZlciBhZG1pbiBzZWN0aW9uIGxhc3RwaW5nIGluZm8iPgorICAgIDx2YWx1ZT7QmtCw0LbQtNGL0Lkg0L/QvtC00YfQuNC90LXQvdC90YvQuSDRgdC10YDQstC10YAg0L/QvtGB0YvQu9Cw0LXRgiDQt9Cw0L/RgNC+0YEg0LPQu9Cw0LLQvdC+0LzRgyDRh9C10YDQtdC3IDMg0YHQtdC60YPQvdC00YsgKNC30LDQtNCw0LXRgtGB0Y8g0LIg0LrQvtC90YTQuNCz0YPRgNCw0YbQuNC4KS4g0J/QsNGA0LDQvNC10YLRgCBsYXN0UGluZyDQtNC+0LbQtdC9INCx0YvRgtGMINC80LXQvdGI0LUgMSDQvNC40L3Rg9GC0Ysg0YLQsNC6LCDRh9GC0L7QsdGLINCz0LvQsNCy0L3Ri9C5INGB0LXRgNCy0LXRgCDQuNGB0L/QvtC70YzQt9C+0LLQsNC7INC/0L7QtNGH0LjQvdC10L3QvdGL0LUg0YHQtdGA0LLQtdGA0LAuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTkiIG5hbWU9InNlcnZlciBhZG1pbiBwb3J0Ij4KKyAgICA8dmFsdWU+SFRUUCDQn9C+0YDRgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIwIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gdXNlciI+CisgICAgPHZhbHVlPlNPQVAg0JDQtNC80LjQvTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIxIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcGFzc3dvcmQiPgorICAgIDx2YWx1ZT7Qn9Cw0YDQvtC70Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyMiIgbmFtZT0ic2VydmVyIGFkbWluIHdlYmFwcCBwYXRoIj4KKyAgICA8dmFsdWU+0J/Rg9GC0Ywg0Log0L/RgNC40LvQvtC20LXQvdC40Y48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyMyIgbmFtZT0ic2VydmVyIGFkbWluIHByb3RvY29sIj4KKyAgICA8dmFsdWU+0J/RgNC+0YLQvtC60L7QuzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI0IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcGluZyBydW5uaW5nIj4KKyAgICA8dmFsdWU+0JjRgdC/0L7Qu9C90Y/QtdC80YvQuSDQt9Cw0L/RgNC+0YE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyNSIgbmFtZT0ic2VydmVyIGFkbWluIGFjdGl2ZSI+CisgICAgPHZhbHVlPtCQ0LrRgtC40LLQvdGL0Lk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyNiIgbmFtZT0iZ2VuZXJhdGVfaGFzaCI+CisgICAgPHZhbHVlPtCh0LPQtdC90LXRgNC40YDQvtCy0LDRgtGMIFVSTDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI3IiBuYW1lPSJuZXR3b3JrIHRlc3RpbmcgbGluayI+CisgICAgPHZhbHVlPtCi0LXRgdGC0LjRgNC+0LLQsNC90LjQtSDRgdC10YLQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI4IiBuYW1lPSJyb29tX29wdGlvbnMiPgorICAgIDx2YWx1ZT7QkNCy0YLQvtC80LDRgtC40YfQtdGB0LrQuCDQvtC/0YDQtdC00LXQu9GP0YLRjCDQstC40LTQtdC+INC+0LrQvdC+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjkiIG5hbWU9ImZvbnRfdW5kZXJsaW5lIj4KKyAgICA8dmFsdWU+0J/QvtC00YfRkdGA0LrQvdGD0YLRi9C5INGI0YDQuNGE0YI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMCIgbmFtZT0iZm9udF9zdHlsZSI+CisgICAgPHZhbHVlPtCh0YLQuNC70Ywg0YjRgNC40YTRgtCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzEiIG5hbWU9ImFsbG93X2ZvbnRfc3R5bGVzIj4KKyAgICA8dmFsdWU+0KDQsNC30YDQtdGI0LjRgtGMINC40YHQv9C+0LvRjNC30L7QstCw0L3QuNC1INGB0YLQuNC70LXQuSDQsiDRh9Cw0YLQtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMyIiBuYW1lPSJmb250X2NvbG9yIj4KKyAgICA8dmFsdWU+0KbQstC10YIg0YjRgNC40YTRgtCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzMiIG5hbWU9Imh5cGVybGluayI+CisgICAgPHZhbHVlPtCT0LjQv9C10YDRgdGB0YvQu9C60LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNCIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbiI+CisgICAgPHZhbHVlPtCf0L7QutCw0LfQsNGC0Ywg0YHRgtCw0YLQuNGB0YLQuNC60YMg0YHQtdGB0YHQuNC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzUiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW4iPgorICAgIDx2YWx1ZT7QlNC10YLQsNC70LjQt9Cw0YbQuNGPINGB0LXRgdGB0LjQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM2IiBuYW1lPSJzeXN0ZW1faW1wb3J0Ij4KKyAgICA8dmFsdWU+0KHQuNGB0YLQtdC80L3Ri9C5INC40LzQv9C+0YDRgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM3IiBuYW1lPSJpbmNsdWRlX2ludG9fYmFja3VwIj4KKyAgICA8dmFsdWU+0JLQutC70Y7Rh9Cw0YLRjCDQt9Cw0LPRgNGD0LbQtdC90L3Ri9C1INGE0LDQudC70Ysg0Lgg0LfQsNC/0LjRgdC4INCyINCx0Y3QutCw0L88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzOCIgbmFtZT0icm9vbV9hZG1pbl9zaXAiPgorICAgIDx2YWx1ZT7QoNCw0LfRgNC10YjQuNGC0YwgU0lQINGC0YDQsNC90YHQv9C+0YDRgiDQsiDQutC+0LzQvdCw0YLQtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM5IiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fY29uZmlybSI+CisgICAgPHZhbHVlPtCS0Ysg0LTQtdC50YHRgtCy0LjRgtC10LvRjNC90L4g0YXQvtGC0LjRgtC1INC00LDRgtGMINGB0LvQvtCy0L4g0Y3RgtC+0LzRgyDRg9GH0LDRgdGC0L3QuNC60YM/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NDAiIG5hbWU9Im5vX3RpbWV6b25lIj4KKyAgICA8dmFsdWU+0KPQutCw0LbQuNGC0LUg0JLQsNGIINGH0LDRgdC+0LLQvtC5INC/0L7Rj9GBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NDUiIG5hbWU9ImNvbnRlbnRfaXNfc2F2aW5nIj4KKyAgICA8dmFsdWU+0KHQvtGF0YDQsNC90LXQvdC40LUg0LTQsNC90L3Ri9GFLCDQv9C+0LTQvtC20LTQuNGC0LUg0L/QvtC20LDQu9GD0LnRgdGC0LAuPC92YWx1ZT4KKyAgPC9zdHJpbmc+Cis8L2xhbmd1YWdlPgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9sYW5ndWFnZXMvc2xvdmFrLnhtbCBiL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL3Nsb3Zhay54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmMzMTA0NAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL3Nsb3Zhay54bWwKQEAgLTAsMCArMSw0NjUyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorCis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitUaGlzIEZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgYnkgdGhlIExhbmd1YWdlRWRpdG9yIAordG8gYWRkIG5ldyBMYW5ndWFnZXMgb3IgbW9kaWZ5L2N1c3RvbWl6ZSBpdCB1c2UgdGhlIExhbmd1YWdlRWRpdG9yIAorc2VlIGh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9MYW5ndWFnZUVkaXRvci5odG1sIGZvciBEZXRhaWxzIAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMtLT4KKzxsYW5ndWFnZSB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczpub05hbWVzcGFjZVNjaGVtYUxvY2F0aW9uPSJsYW5ndWFnZS54c2QiPgorICA8c3RyaW5nIGlkPSIxIiBuYW1lPSJjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+S29uZmVyZW5jaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMiIgbmFtZT0ibWVldGluZyI+CisgICAgPHZhbHVlPlN0cmV0bnV0aWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMyIgbmFtZT0iY2xhc3Nyb29tIj4KKyAgICA8dmFsdWU+UG9kdWphdGlhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQiIG5hbWU9InNldHRpbmdzIj4KKyAgICA8dmFsdWU+TmFzdGF2ZW5pYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1IiBuYW1lPSJiZW51dHplciI+CisgICAgPHZhbHVlPlByb2ZpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2IiBuYW1lPSJhZG1pbiI+CisgICAgPHZhbHVlPkFkbWluaXN0csOhY2lhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjciIG5hbWU9InN0b3AiPgorICAgIDx2YWx1ZT5TdG9wPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPk5haHLDoXZhbmllPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkiIG5hbWU9Im5vZmlsZSI+CisgICAgPHZhbHVlPsW9aWFkbnkgc8O6Ym9yIG5pZSBqZSBrIGRpc3BvesOtY2nDrTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMCIgbmFtZT0icmVjb3JkYnl0ZWFjaGVyIj4KKyAgICA8dmFsdWU+TmFocsOhdmFuaWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEiIG5hbWU9ImNvbm5lY3RlZHVzZXJzIj4KKyAgICA8dmFsdWU+UHJpcG9qZW7DrSBwb3XFvsOtdmF0ZWxpYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMiIgbmFtZT0ic3RhcnRjb25mIj4KKyAgICA8dmFsdWU+WmHEjWHFpSBrb25mZXJlbmNpdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMyIgbmFtZT0ibXluYW1lIj4KKyAgICA8dmFsdWU+TW9qZSBtZW5vPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0IiBuYW1lPSJ2aWRlb2NvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT5WaWRlb2tvbmZlcmVuY2lhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1IiBuYW1lPSJpbXBvcnQiPgorICAgIDx2YWx1ZT5OYWhyYcWlIHPDumJvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNiIgbmFtZT0icmVmcmVzaGZpbGVzIj4KKyAgICA8dmFsdWU+TmHEjcOtdGHFpSB6bm92dSB6b3puYW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTciIG5hbWU9InRvbWFpbmZpbGUiPgorICAgIDx2YWx1ZT5LIGhsYXZuw6ltdSBzw7pib3J1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4IiBuYW1lPSJuZXdwb2xsIj4KKyAgICA8dmFsdWU+Tm92w6kgaGxhc292YW5pZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOSIgbmFtZT0ibmV3cG9sbGhlYWRlciI+CisgICAgPHZhbHVlPk5vdsOpIGhsYXNvdmFuaWUgcHJlIGtvbmZlcmVuY2l1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwIiBuYW1lPSJxdWVzdGlvbiI+CisgICAgPHZhbHVlPk90w6F6a2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEiIG5hbWU9InBvbGx0eXBlIj4KKyAgICA8dmFsdWU+VHlwIGhsYXNvdmFuaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIiIG5hbWU9ImNyZWF0ZSI+CisgICAgPHZhbHVlPlZ5dHZvcmnFpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMyIgbmFtZT0iaW5mb21lc3NhZ2UiPgorICAgIDx2YWx1ZT5WxaFldGNpIHByaXBvamVuw60gcG91xb7DrXZhdGVsaWEgcHJpasOtbWFqw7ogc3Byw6F2dSBzIG5vdsO9bSBobGFzb3ZhbsOtbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNCIgbmFtZT0iY3JlYXRwb2xsIj4KKyAgICA8dmFsdWU+Vnl0dm9yacWlIGhsYXNvdmFuaWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUiIG5hbWU9ImNhbmNlbCI+CisgICAgPHZhbHVlPlpydcWhacWlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2IiBuYW1lPSJ5ZXNubyI+CisgICAgPHZhbHVlPsOBbm8vTmllPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3IiBuYW1lPSJudW1lcmljIj4KKyAgICA8dmFsdWU+xIzDrXNsYSAxLTEwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4IiBuYW1lPSJwb2xsIj4KKyAgICA8dmFsdWU+SGxhc292YW5pZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOSIgbmFtZT0ibW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPk11c8OtdGUgYnnFpSBtb2RlcsOhdG9yIHByZSB2eXR2b3JlbmllIG90w6F6a3k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAiIG5hbWU9InZvdGUiPgorICAgIDx2YWx1ZT5Ww6HFoSBobGFzIGJvbCB6YXpuYW1lbmFuw708L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEiIG5hbWU9ImFscmVhZHl2b3RlZCI+CisgICAgPHZhbHVlPlYgdG9tdG8gcHJpZXNrdW1lIHN0ZSB1xb4gaGxhc292YWxpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyIiBuYW1lPSJ2b3RpbmciPgorICAgIDx2YWx1ZT5IbGFzb3ZhxaU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMiIG5hbWU9ImFuc3dlciI+CisgICAgPHZhbHVlPlZhxaFhIG9kcG92ZcSPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0IiBuYW1lPSJ5ZXMiPgorICAgIDx2YWx1ZT7DgW5vPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1IiBuYW1lPSJubyI+CisgICAgPHZhbHVlPk5pZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNiIgbmFtZT0icXVlc3Rpb253YW50Ij4KKyAgICA8dmFsdWU+Y2hjZSB2ZWRpZcWlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3IiBuYW1lPSJwb2xscmVzdWx0cyI+CisgICAgPHZhbHVlPlbDvXNsZWRreSBobGFzb3ZhbmlhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4IiBuYW1lPSJxdWVzdGlvbiI+CisgICAgPHZhbHVlPk90w6F6a2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkiIG5hbWU9InJlc3VsdHMiPgorICAgIDx2YWx1ZT5Ww71zbGVka3k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAiIG5hbWU9ImFuc3dlcnMiPgorICAgIDx2YWx1ZT5PZHBvdmVkZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MSIgbmFtZT0ibm9wb2xsIj4KKyAgICA8dmFsdWU+xb1pYWRuZSBobGFzb3ZhbmllIG5lYm9sbyB2eXR2b3JlbsOpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyIiBuYW1lPSJ2b3RpbmdzIj4KKyAgICA8dmFsdWU+SGxhc292YcWlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzIiBuYW1lPSJtZWV0aW5nIj4KKyAgICA8dmFsdWU+U3RyZXRudXRpZShtYXggNiBtaWVzdCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQiIG5hbWU9ImNvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT5Lb25mZXJlbmNpYShtYXggMjUgbWllc3QpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1IiBuYW1lPSJ0eXBlIj4KKyAgICA8dmFsdWU+VHlwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2IiBuYW1lPSJyZW1haW5pbmdzZWF0cyI+CisgICAgPHZhbHVlPk9zdGF0bsOpIG1pZXN0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NyIgbmFtZT0iYWxyZWFkeWNob3NlbiI+CisgICAgPHZhbHVlPlXFviB2eWJyYW7DqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OCIgbmFtZT0iZW50ZXIiPgorICAgIDx2YWx1ZT52c3R1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OSIgbmFtZT0ibW9kbGVhdmUiPgorICAgIDx2YWx1ZT5Nb2RlcsOhdG9yIG9wdXN0aWwgc3RyZXRudXRpZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MCIgbmFtZT0ic3lzdGVtbWVzc2FnZSI+CisgICAgPHZhbHVlPlN5c3TDqW1vdsOpIGluZm9ybcOhY2llPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxIiBuYW1lPSJjaG9zc2VkZXZpY2UiPgorICAgIDx2YWx1ZT5WeWJyYcWlIHphcmlhZGVuaWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIiIG5hbWU9ImNob29zZWNhbSI+CisgICAgPHZhbHVlPlZ5YnJhxaUgd2Via2FtZXJ1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzIiBuYW1lPSJjaG9vc2VtaWMiPgorICAgIDx2YWx1ZT5WeWJyYcWlIG1pa3JvZsOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NCIgbmFtZT0ib2siPgorICAgIDx2YWx1ZT5PSzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NSIgbmFtZT0iY2FuY2VsMiI+CisgICAgPHZhbHVlPlpydcWhacWlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2IiBuYW1lPSJyZWNvbmVlY3RuZWVkZWQiPgorICAgIDx2YWx1ZT5NdXPDrXRlIHNhIHpub3Z1IHByaXBvamnFpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NyIgbmFtZT0iZWRpdHNldHVwIj4KKyAgICA8dmFsdWU+VXByYXZpxaUgbmFzdGF2ZW5pYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OCIgbmFtZT0iY291cnNlIj4KKyAgICA8dmFsdWU+S3VyejwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OSIgbmFtZT0ibGFuZ3VhZ2UiPgorICAgIDx2YWx1ZT5KYXp5azwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MCIgbmFtZT0ib2syIj4KKyAgICA8dmFsdWU+T0s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEiIG5hbWU9ImNhbmNlbDMiPgorICAgIDx2YWx1ZT5acnXFoWnFpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MiIgbmFtZT0iY2xlYXJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+Wm1hemHFpSB0YWJ1xL51PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzIiBuYW1lPSJjbGVhcndoaXRlYm9hcmRxdWVzdGlvbiI+CisgICAgPHZhbHVlPkNoY2V0ZSB6bWF6YcWlIHRhYnXEvnUgcHJlZCB2bG/FvmVuw61tIG5vdsOpaG8gb2Jyw6F6a2E/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0IiBuYW1lPSJkb250YXNrYWdhaW4iPgorICAgIDx2YWx1ZT5OZXDDvXRhxaUgc2EgbWEgem5vdmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUiIG5hbWU9Im5vIj4KKyAgICA8dmFsdWU+TmllPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2IiBuYW1lPSJlZGl0c2V0dXAyIj4KKyAgICA8dmFsdWU+Wm1lbmnFpSBuYXN0YXZlbmlhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3IiBuYW1lPSJuZWVkY29uZmlybWF0aW9ud2hpdGVib2FyZCI+CisgICAgPHZhbHVlPlBvdHZyZGnFpSDFvmlhZG9zxaUgbmEgem1hemFuaWUgdGFidWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4IiBuYW1lPSJ1c2VyaW5mbyI+CisgICAgPHZhbHVlPkluZm9ybcOhY2llIG8gcG91xb7DrXZhdGXEvm92aTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OSIgbmFtZT0iY2xlYXJkcmF3YXJlYSI+CisgICAgPHZhbHVlPlptYXphxaUgdGFidcS+dTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MCIgbmFtZT0idW5kbyI+CisgICAgPHZhbHVlPlpydcWhacWlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxIiBuYW1lPSJyZWRvIj4KKyAgICA8dmFsdWU+UHJlcm9iacWlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyIiBuYW1lPSJzZWxlY3RvYmplY3QiPgorICAgIDx2YWx1ZT5WeWJyYcWlIG9iamVrdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MyIgbmFtZT0idGV4dCI+CisgICAgPHZhbHVlPlRleHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQiIG5hbWU9InBhaW50Ij4KKyAgICA8dmFsdWU+RmFyYmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUiIG5hbWU9ImRyYXdsaW5lIj4KKyAgICA8dmFsdWU+TmFrcmVzbGnFpSDEjWlhcnU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYiIG5hbWU9ImRyYXd1Ij4KKyAgICA8dmFsdWU+UG9kxI1pYXJrbnXFpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NyIgbmFtZT0icmVjdCI+CisgICAgPHZhbHVlPk9iZMS6xb5uaWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgiIG5hbWU9ImVsbGlwc2UiPgorICAgIDx2YWx1ZT5FbGlwc2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkiIG5hbWU9ImFycm93Ij4KKyAgICA8dmFsdWU+xaDDrXBrYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MCIgbmFtZT0iZGVsZXRlY2hvc2VuIj4KKyAgICA8dmFsdWU+Wm1hemHFpSB2eWJyYW7DuiBwb2xvxb5rdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MSIgbmFtZT0iYXBwbGl5bW9kIj4KKyAgICA8dmFsdWU+UG/FvmlhZGHFpSBvIG1vZGVyw6FjaXU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIiIG5hbWU9ImFwcGx5Ij4KKyAgICA8dmFsdWU+QXBsaWtvdmHFpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MyIgbmFtZT0iY2FuY2VsIj4KKyAgICA8dmFsdWU+WnJ1xaFpxaU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQiIG5hbWU9Im1vZCI+CisgICAgPHZhbHVlPk5lbcOhbSBvdMOhemt1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1IiBuYW1lPSJjbG9zZSI+CisgICAgPHZhbHVlPlphdHZvcmnFpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NiIgbmFtZT0iaXRhbGljIj4KKyAgICA8dmFsdWU+bGXFvmF0w708L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODciIG5hbWU9ImJvbGQiPgorICAgIDx2YWx1ZT5ocnViw708L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgiIG5hbWU9IndhaXRpbmciPgorICAgIDx2YWx1ZT7EjEFLw4FNPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5IiBuYW1lPSJhcHBseU1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Qb3XFvsOtdmF0ZcS+IHBvxb5pYWRhbCBvIG1vZGVyw6FjaXUuIE3DtMW+dGUgbXUgc3Byw61zdHVwbmnFpSBsZW4gcHLDrXN0dXAgayB0YWJ1bGksIGFsZWJvIHBsbsO6IG1vZGVyw6FjaXUuIFBvdcW+w612YXRlxL46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwIiBuYW1lPSJhY2NlcHQiPgorICAgIDx2YWx1ZT5QcmlqYcWlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxIiBuYW1lPSJyZWplY3QiPgorICAgIDx2YWx1ZT5PZG1pZXRudcWlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyIiBuYW1lPSJjYW5jZWwiPgorICAgIDx2YWx1ZT5acnXFoWnFpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MyIgbmFtZT0ic2VuZG1vZHJlcXVlc3RtZXNzYWdlIj4KKyAgICA8dmFsdWU+UG9zaWVsYW5pZSDFvmlhZG9zdGkgbmFzbGVkb3Zuw71tIHBvdcW+w612YXRlxL5vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NCIgbmFtZT0iYWNjZXB0Ij4KKyAgICA8dmFsdWU+UG90dnJkZW7DqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NSIgbmFtZT0icmVqZWN0Ij4KKyAgICA8dmFsdWU+T2RtaWV0bnV0w6k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYiIG5hbWU9ImNoYW5nZW1vZCI+CisgICAgPHZhbHVlPlptZW5pxaUgbW9kZXLDoXRvcmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTciIG5hbWU9Im5vbm1vZGVycm9ybWVzc2FnZSI+CisgICAgPHZhbHVlPk5pZSBzdGUgbW9kZXLDoXRvcm9tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4IiBuYW1lPSJtb2RlcmF0b3IiPgorICAgIDx2YWx1ZT5Nb2RlcsOhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5IiBuYW1lPSJyb29tZnVsbG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Uw6F0byBtaWVzdG5vc8WlIGplIHXFviBvYnNhZGVuw6E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwIiBuYW1lPSJlbGxsaXBzZSI+CisgICAgPHZhbHVlPkVsaXBzYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEiIG5hbWU9ImNsb3NlIj4KKyAgICA8dmFsdWU+WmF0dm9yacWlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMiIgbmFtZT0iQXV0aEVycm9yIj4KKyAgICA8dmFsdWU+Y2h5YmEgdnN0dXBuw71jaCDDumRham92PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMyIgbmFtZT0ibWluNHVzZXJuYW1lIj4KKyAgICA8dmFsdWU+Um96bMOtxaF1anRlIHZlxL5rw6kgYSBtYWzDqSBww61zbWVuYSBhIG1pbmltw6FsbmUgNCB6bmFreTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQiIG5hbWU9Im1pbjRwYXNzIj4KKyAgICA8dmFsdWU+SGVzbG8gbXVzw60gbWHFpSBhc3BvxYggNCB6bmFreTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUiIG5hbWU9InVzZXJuYW1ldGFrZW4iPgorICAgIDx2YWx1ZT5Qb3XFvsOtdmF0ZcS+c2vDqSBtZW5vIHXFviBleGlzdHVqZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYiIG5hbWU9ImVtYWlsdGFrZW4iPgorICAgIDx2YWx1ZT5FbWFpbCB1xb4gamUgemFyZWdpc3Ryb3ZhbsO9PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNyIgbmFtZT0iZW1haWx0YWtlbiI+CisgICAgPHZhbHVlPlN5c3TDqW1vdsOhIGNoeWJhLCBrb250YWt0dWp0ZSBhZG1pbmlzdHLDoXRvcmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4IiBuYW1lPSJBdXRobG9naW4iPgorICAgIDx2YWx1ZT5QcmlobMOhc2VuaWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5IiBuYW1lPSJBdXRodXNlciI+CisgICAgPHZhbHVlPk1lbm8gYSBlbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAiIG5hbWU9IkF1dGhwYXNzIj4KKyAgICA8dmFsdWU+SGVzbG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExIiBuYW1lPSJBdXRobGFuZyI+CisgICAgPHZhbHVlPkphenlrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMiIgbmFtZT0iQXV0aHJlZyI+CisgICAgPHZhbHVlPlByaWhsw6FzacWlIHNhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMyIgbmFtZT0icmVnZm9ybWhlYWQiPgorICAgIDx2YWx1ZT5aYXJlZ2lzdHJvdmHFpSBzYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQiIG5hbWU9InJlZ2Zvcm11c2VyIj4KKyAgICA8dmFsdWU+UG91xb7DrXZhdGXEvnNrw6kgbWVubzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUiIG5hbWU9InJlZ2Zvcm1wYXNzIj4KKyAgICA8dmFsdWU+SGVzbG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2IiBuYW1lPSJyZWdmb3JtcmV0eXBlIj4KKyAgICA8dmFsdWU+Wm5vdmEgaGVzbG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3IiBuYW1lPSJyZWdmb3JtZmlyc3RuYW1lIj4KKyAgICA8dmFsdWU+TWVubzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgiIG5hbWU9InJlZ2Zvcm1sYXN0bmFtZSI+CisgICAgPHZhbHVlPlByaWV6dmlza288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5IiBuYW1lPSJyZWdmb3JtbWFpbCI+CisgICAgPHZhbHVlPkVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMCIgbmFtZT0icmVnZm9ybXN0YXRlIj4KKyAgICA8dmFsdWU+S3JhamluYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjEiIG5hbWU9InJlZ2Zvcm1idG4xIj4KKyAgICA8dmFsdWU+UmVnaXN0cm92YcWlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMiIgbmFtZT0icmVnZm9ybWJ0bjIiPgorICAgIDx2YWx1ZT5acnXFoWnFpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMiIG5hbWU9IkF1dGhidG4yIj4KKyAgICA8dmFsdWU+TmllIHN0ZSDEjWxlbm9tPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPkRvbW92PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNSIgbmFtZT0idXNlcmFkbWluIj4KKyAgICA8dmFsdWU+UG91xb7DrXZhdGVsaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2IiBuYW1lPSJncm91cGFkbWluIj4KKyAgICA8dmFsdWU+U2t1cGlueTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjciIG5hbWU9Im9yZ2FkbWluIj4KKyAgICA8dmFsdWU+U3BvbG/EjW5vc3RpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOCIgbmFtZT0iaGVhZGNvbmYiPgorICAgIDx2YWx1ZT5NaWVzdG5vc3RpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOSIgbmFtZT0iY29uZl9wdWIiPgorICAgIDx2YWx1ZT5WZXJlam5vc8WlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMCIgbmFtZT0iaGVhZF9vcmciPgorICAgIDx2YWx1ZT5TcG9sb8SNbm9zxaU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxIiBuYW1lPSJidG5fZW50ZXJyb29tIj4KKyAgICA8dmFsdWU+VnN0dXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2xvZ2luIj4KKyAgICA8dmFsdWU+UHJpaGzDoXNlbmllPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMyIgbmFtZT0idXNlcmFsdGVyc2VsZl9wYXNzIj4KKyAgICA8dmFsdWU+SGVzbG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Bhc3NyZXR5cGUiPgorICAgIDx2YWx1ZT5abm92YSBoZXNsbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUiIG5hbWU9InVzZXJhbHRlcnNlbGZfZmlyc3RuYW1lIj4KKyAgICA8dmFsdWU+VGl0dWwvTWVubzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYiIG5hbWU9InVzZXJhbHRlcnNlbGZfbGFzdG5hbWUiPgorICAgIDx2YWx1ZT5QcmllenZpc2tvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNyIgbmFtZT0idXNlcmFsdGVyc2VsZl9lbWFpbCI+CisgICAgPHZhbHVlPkVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOCIgbmFtZT0idXNlcmFsdGVyc2VsZl9iaXJ0aCI+CisgICAgPHZhbHVlPk5hcm9kZW5pbnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3N0cmVldG5vIj4KKyAgICA8dmFsdWU+VWxpY2EvxIzDrXNsbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDAiIG5hbWU9InVzZXJhbHRlcnNlbGZfdG93biI+CisgICAgPHZhbHVlPlBTxIwvTWVzdG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3N0YXRlIj4KKyAgICA8dmFsdWU+S3JhamluYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIiIG5hbWU9InVzZXJhbHRlcnNlbGZfYWRyZXNzY29tbWVudCI+CisgICAgPHZhbHVlPkFkcmVzYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMiIG5hbWU9InVzZXJhbHRlcnNlbGZfaGVhZGVyIj4KKyAgICA8dmFsdWU+w5pkYWplIHBvdcW+w612YXRlxL5hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NCIgbmFtZT0ic2F2ZW1lbnViYXJfc2F2ZWxhYmVsIj4KKyAgICA8dmFsdWU+VWxvxb5pxaU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1IiBuYW1lPSJzYXZlbWVudWJhcl9zYXZlbGFiZWwiPgorICAgIDx2YWx1ZT5VbG/FvmnFpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYiIG5hbWU9ImFkbWluX3VzZXJsaXN0X3VzZXJfaWQiPgorICAgIDx2YWx1ZT5JRCBwb3XFvsOtdmF0ZcS+YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDciIG5hbWU9ImFkbWluX3VzZXJsaXN0X2xvZ2luIj4KKyAgICA8dmFsdWU+TG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4IiBuYW1lPSJhZG1pbl91c2VybGlzdF9maXJzdG5hbSI+CisgICAgPHZhbHVlPk1lbm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5IiBuYW1lPSJhZG1pbl91c2VybGlzdF9sYXN0bmFtZSI+CisgICAgPHZhbHVlPlByaWV6dmlza288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwIiBuYW1lPSJ0dXJub3Zlcmxpc3RfbmV4dCI+CisgICAgPHZhbHVlPsSOYWzFoWllPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MSIgbmFtZT0idHVybm92ZXJsaXN0X3ByZSI+CisgICAgPHZhbHVlPlByZWRjaMOhZHphasO6Y2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyIiBuYW1lPSJzYXZlY29udGVudF9jb25maXJtIj4KKyAgICA8dmFsdWU+Wm1hemHFpSBuYWhyw6F2a3U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzIiBuYW1lPSJzYXZlY29udGVudF9jb25maXJtX2NhbmNlbF9idG4iPgorICAgIDx2YWx1ZT5acnXFoWnFpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTQiIG5hbWU9InNhdmVjb250ZW50X2NvbmZpcm1fY29uZmlybV9idG4iPgorICAgIDx2YWx1ZT5abWF6YcWlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NSIgbmFtZT0ic2F2ZW1lbnViYXJfYWRkbGFiZWwiPgorICAgIDx2YWx1ZT5Ob3bDqSBuYWhyw6F2YW5pZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTYiIG5hbWU9InNhdmVtZW51YmFyX3JlbG9hZGxhYmVsIj4KKyAgICA8dmFsdWU+T2Jub3ZpxaUgbmFocsOhdmFuaWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU3IiBuYW1lPSJzYXZlbWVudWJhcl9kZWxldGVsYWJlbCI+CisgICAgPHZhbHVlPlptYXphxaUgbmFocsOhdmt1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1OCIgbmFtZT0idXNlcmFsdGVyX2FkbWluX3N0YXR1cyI+CisgICAgPHZhbHVlPlN0YXR1czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTkiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9zdGF0dXNJdGVtIj4KKyAgICA8dmFsdWU+WmFibG9rb3ZhbsOpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2MCIgbmFtZT0idXNlcmFsdGVyX2FkbWluX3N0YXR1c0l0ZW0iPgorICAgIDx2YWx1ZT5Qb3ZvbGVuw6k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYxIiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fb3JnYW5pc2F0aW9uIj4KKyAgICA8dmFsdWU+U3BvbG/EjW5vc3RpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2MiIgbmFtZT0iY2FsZW5kYXJfaWNvbmxhYmVsIj4KKyAgICA8dmFsdWU+S2FsZW5kw6FyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2MyIgbmFtZT0ic2F2ZXdpbmRvd19idG4iPgorICAgIDx2YWx1ZT5aYXR2b3JpxaU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY0IiBuYW1lPSJvcmdhbmlzYXRpb250YWJsZWxpc3RfaWRyb3ciPgorICAgIDx2YWx1ZT5JRCBzcG9sb8SNbm9zdGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY1IiBuYW1lPSJvcmdhbmlzYXRpb250YWJsZWxpc3RfbmFtZXJvdyI+CisgICAgPHZhbHVlPk1lbm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY2IiBuYW1lPSJ1c2VydmFsdWVfbGV2ZWxpZDEiPgorICAgIDx2YWx1ZT5Qb3XFvsOtdmF0ZcS+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2NyIgbmFtZT0idXNlcnZhbHVlX2xldmVsaWQyIj4KKyAgICA8dmFsdWU+TW9kZXLDoXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjgiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGlkMyI+CisgICAgPHZhbHVlPkFkbWluaXN0csOhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2OSIgbmFtZT0idXNlcnZhbHVlX2xldmVsbGFiZWwiPgorICAgIDx2YWx1ZT5Vc2VyIGxldmVsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MCIgbmFtZT0ib3JndmFsdWVfaGVhZGVyIj4KKyAgICA8dmFsdWU+U3BvbG/EjW5vc8WlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MSIgbmFtZT0ib3JndmFsdWVfb3JnbmFtZSI+CisgICAgPHZhbHVlPk1lbm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTcyIiBuYW1lPSJvcmd2YWx1ZV9vcmduYW1lIj4KKyAgICA8dmFsdWU+UHJpZGHFpSBvcmdhbml6w6FjaXU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTczIiBuYW1lPSJvcmd2YWx1ZV9vcmduYW1lIj4KKyAgICA8dmFsdWU+UHJpZGHFpSBvcmdhbml6w6FjaXU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc0IiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luIj4KKyAgICA8dmFsdWU+WnJ1xaFpxaU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc1IiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luIj4KKyAgICA8dmFsdWU+UHJpZGHFpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzYiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW4iPgorICAgIDx2YWx1ZT5PZHN0csOhbmnFpSBvcmdhbml6w6FjaXU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc3IiBuYW1lPSJvcmd2YWx1ZV91c2VybGlzdCI+CisgICAgPHZhbHVlPlBvdcW+w612YXRlxL48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc4IiBuYW1lPSJvcmd2YWx1ZV91c2VybGlzdGFkZCI+CisgICAgPHZhbHVlPlByaWRhxaUgcG91xb7DrXZhdGXEvmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc5IiBuYW1lPSJvcmd2YWx1ZV91c2VybGlzdGRlbGV0ZSI+CisgICAgPHZhbHVlPlptYXphxaUgcG91xb7DrXZhdGXEvmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgwIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luaGVhZGVyIj4KKyAgICA8dmFsdWU+UHJpZGHFpSBwb3XFvsOtdmF0ZcS+YSBkbyBzcG9sb8SNbm9zdGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgxIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luc2VhcmNoZmllbGQiPgorICAgIDx2YWx1ZT5IxL5hZGHFpSBwb3XFvsOtdmF0ZcS+YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODIiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5zZWFyY2hidG4iPgorICAgIDx2YWx1ZT5IxL5hZGHFpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODMiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5zZWFyY2hyZXN1bHQiPgorICAgIDx2YWx1ZT5Qb3XFvsOtdmF0ZcS+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NCIgbmFtZT0ibG9naW53aW5fY2hvb3Nlb3JnYW5pc2F0aW9uIj4KKyAgICA8dmFsdWU+U3BvbG/EjW5vc8WlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NSIgbmFtZT0ibG9naW53aW5fY2hvb3Nlb3JnYW5pc2F0aW9uYnRuIj4KKyAgICA8dmFsdWU+WmFkYcWlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NiIgbmFtZT0ibmF2aV9yb29tYWRtaW4iPgorICAgIDx2YWx1ZT5NaWVzdG5vc8WlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NyIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPk1pZXN0bm9zdGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg4IiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg5IiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+TWVubzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTAiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5WZXJlam7DqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTEiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5TcG9sb8SNbm9zdGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkyIiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+TWllc3Rub3N0aTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTMiIG5hbWU9InJvb212YWx1ZV9uYW1lIj4KKyAgICA8dmFsdWU+TWVubzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTQiIG5hbWU9InJvb212YWx1ZV90eXBlIj4KKyAgICA8dmFsdWU+VHlwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NSIgbmFtZT0icm9vbXZhbHVlX2lzcHVibGljIj4KKyAgICA8dmFsdWU+VmVyZWpuw6k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk2IiBuYW1lPSJyb29tdmFsdWVfY29tbWVudCI+CisgICAgPHZhbHVlPktvbWVudG92YcWlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NyIgbmFtZT0id2hpdGVib2FyZF9zYXZlaWNvbiI+CisgICAgPHZhbHVlPlVsb8W+acWlIGEgZXhwb3J0b3ZhxaU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk4IiBuYW1lPSJ3aGl0ZWJvYXJkX29wZW5pY29uIj4KKyAgICA8dmFsdWU+TmFocmHFpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTkiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2luaGVhZGVyIj4KKyAgICA8dmFsdWU+VWxvxb5pxaUgYWtvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMCIgbmFtZT0id2hpdGVib2FyZF9zYXZlYXN3aW50ZXh0Ij4KKyAgICA8dmFsdWU+TWVubyBzw7pib3J1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMSIgbmFtZT0iZmlsZXMiPgorICAgIDx2YWx1ZT5NZW5vIHPDumJvcnU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAyIiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbmJ0bjEiPgorICAgIDx2YWx1ZT5acnXFoWnFpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDMiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2luYnRuMiI+CisgICAgPHZhbHVlPlVsb8W+acWlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNCIgbmFtZT0icnBjZXJyb3J3aW5faGVhZGVyIj4KKyAgICA8dmFsdWU+Q2h5YmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA1IiBuYW1lPSJsb2Fkd21sX2hlYWRlciI+CisgICAgPHZhbHVlPk5haHLDoXZhbmllPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNiIgbmFtZT0ibG9hZHdtbF9tZXNzc2xvYWQiPgorICAgIDx2YWx1ZT5PYmpla3R5IG5haHLDoXZhbsOpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNyIgbmFtZT0ibG9hZHdtbF9tZXNzc3luYyI+CisgICAgPHZhbHVlPlN5bmNocm9uaXp1amVtLCBwcm9zw61tIMSNYWthanRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwOCIgbmFtZT0ibG9hZGltYWdlX21lc3Nsb2FkIj4KKyAgICA8dmFsdWU+TmFocsOhdmFuaWUgc8O6Ym9ydTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDkiIG5hbWU9ImxvYWRpbWFnZV9tZXNzc3luYyI+CisgICAgPHZhbHVlPlN5bmNocm9uaXp1amVtLCBwcm9zw61tIMSNYWthanRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMCIgbmFtZT0ibG9hZHdtbF9jb25maXJtaGVhZGVyIj4KKyAgICA8dmFsdWU+Wm1hemHFpSB0YWJ1xL51PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMSIgbmFtZT0ibG9hZHdtbF9jb25maXJtbWVzcyI+CisgICAgPHZhbHVlPlptYXphxaUgdGFidcS+dSwgdsWhZXRreSBvYmpla3R1IGJ1ZMO6IHZ5bWF6YW7DqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTIiIG5hbWU9ImxvYWR3bWxfY29uZmlybW1lc3MyIj4KKyAgICA8dmFsdWU+UG90dnJkacWlIHByZWQgbmFocmF0w61tIHPDumJvcnU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEzIiBuYW1lPSJzZW5kX2ludml0YXRpb25fYnRuIj4KKyAgICA8dmFsdWU+WmFzbGHFpSBwb3p2YW5pZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTQiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5aYXNsYcWlIHBvenZhbmllPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNSIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX3N1YmplY3QiPgorICAgIDx2YWx1ZT5QcmVkbWV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNiIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX3JlY2lwaWVudCI+CisgICAgPHZhbHVlPlByw61qZW1jYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTciIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9tZXNzYWdlIj4KKyAgICA8dmFsdWU+U3Byw6F2YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTgiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9idG5fY29uZmlybSI+CisgICAgPHZhbHVlPlBvc2xhxaU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE5IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fYnRuX2NhbmNlbCI+CisgICAgPHZhbHVlPlpydcWhacWlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyMCIgbmFtZT0ic2VuZF9jaGF0X3RleHRfYnRuIj4KKyAgICA8dmFsdWU+UG9zbGHFpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjEiIG5hbWU9Imludml0ZWRfdXNlcndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5JbmZvcm3DoWNpZSBvIHBvdcW+w612YXRlxL5vdmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIyIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fc3ViamVjdCI+CisgICAgPHZhbHVlPlZhxaFhIHByZXrDvXZrYSBwcmUgdMO6dG8gbWllc3Rub3PFpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjMiIG5hbWU9Imludml0ZWRfdXNlcndpbl9sb2dpbiI+CisgICAgPHZhbHVlPlByZXrDvXZrYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjQiIG5hbWU9Imludml0ZWRfdXNlcndpbl9maXJzdG5hbWUiPgorICAgIDx2YWx1ZT5NZW5vPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNSIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2xhc3RuYW1lIj4KKyAgICA8dmFsdWU+UHJpZXp2aXNrbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjYiIG5hbWU9Imludml0ZWRfdXNlcndpbl9tYWlsIj4KKyAgICA8dmFsdWU+RW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI3IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fbGFuZyI+CisgICAgPHZhbHVlPkphenlrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyOCIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2VudGVyIj4KKyAgICA8dmFsdWU+WmFkYcWlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyOSIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2VudGVyIj4KKyAgICA8dmFsdWU+TmFocsOhdmFuaWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMwIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZW50ZXIiPgorICAgIDx2YWx1ZT5OYWhyw6F2YW5pZSBkw6F0LCBwcm9zw61tIMSNYWthanRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMSIgbmFtZT0idXNlcl9yZWdpc3RlckZhbHNlUFdEIj4KKyAgICA8dmFsdWU+TmVzcHLDoXZuZSBoZXNsbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzIiIG5hbWU9InVzZXJfcmVnaXN0ZXJGYWxzZVBXREhlYWRlciI+CisgICAgPHZhbHVlPlphZGFqdGUgMiByb3ZuYWvDqSBoZXNsw6E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMzIiBuYW1lPSJ1c2VyX3JlZ2lzdGVyTWFpbEVycm9yIj4KKyAgICA8dmFsdWU+TmVzcHLDoXZuZSBoZXNsbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzQiIG5hbWU9InVzZXJfcmVnaXN0ZXJNYWlsRXJyb3JIZWFkZXIiPgorICAgIDx2YWx1ZT5aYWRhbGkgc3RlIG5lc3Byw6F2bnkgZW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM1IiBuYW1lPSJ1c2VyX3JlZ2lzdGVyU3VjY2VzcyI+CisgICAgPHZhbHVlPlJlZ2lzdHLDoWNpYSBrb21wbGV0bsOhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzNiIgbmFtZT0idXNlcl9yZWdpc3RlclN1Y2Nlc3NIZWFkZXIiPgorICAgIDx2YWx1ZT5WYcWhZSBrb250byBib2xvIHZ5dHZvcmVuw6kuIE3DtMW+dGUgc2EgcHJpaGzDoXNpxaUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzNyIgbmFtZT0idXNlcl9zaGFyaW5nX21lc3NhZ2UiPgorICAgIDx2YWx1ZT5OaWVrdG8gdcW+IHpkaWXEvmEgc3ZvanUgcGxvY2h1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzOCIgbmFtZT0idXNlcl9zaGFyaW5nX21lc3NhZ2VIZWFkZXIiPgorICAgIDx2YWx1ZT5aZGllxL5hbmllIHpha8OhemFuw6k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM5IiBuYW1lPSJ1c2VyX2RvU3RhcnRTY3JlZW5WaWV3ZXIiPgorICAgIDx2YWx1ZT5aZGllxL5hxaUvbmFocsOhdmHFpSBwbG9jaHU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQwIiBuYW1lPSJzY3JlZW5fd2FybkJhbmR3aWR0aCI+CisgICAgPHZhbHVlPk5lbW/Fvm7DqSBzeW5jaHJvbml6b3ZhxaUgcGxvY2h1LiBQb8W+aWFkYWp0ZSBtb2RlcsOhdG9yYSBvIHpuw63FvmVuaWUga3ZhbGl0eS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQxIiBuYW1lPSJzY3JlZW5fdXNlcmxhYmVsIj4KKyAgICA8dmFsdWU+UGxvY2hhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDIiIG5hbWU9IndoaXRlYm9hcmRfdGFiX3BhaW50Ij4KKyAgICA8dmFsdWU+S3Jlc2xlbmllPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0MyIgbmFtZT0id2hpdGVib2FyZF90YWJfZG9jdW1lbnQiPgorICAgIDx2YWx1ZT5Eb2t1bWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDQiIG5hbWU9InRhYmJhcl9jaGF0aWNvbiI+CisgICAgPHZhbHVlPkNoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ1IiBuYW1lPSJ0YWJiYXJfZmlsZXNpY29uIj4KKyAgICA8dmFsdWU+U8O6Ym9yeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDYiIG5hbWU9InRhYmJhcl9wYXJ0aWNpcGFudHNpY29uIj4KKyAgICA8dmFsdWU+xIxsZW5vdmlhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0NyIgbmFtZT0ic3dmcHJlc2VudGF0aW9uX2xpc3RzYXZlb3JpZyI+CisgICAgPHZhbHVlPlN0aWFobnXFpSBww7R2b2Ruw70gZG9rdW1lbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ4IiBuYW1lPSJzd2ZwcmVzZW50YXRpb25fbGlzdHNhdmVwZGYiPgorICAgIDx2YWx1ZT5TdGlhaG51xaUgUERGIGRva3VtZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0OSIgbmFtZT0ic3dmcHJlc2VudGF0aW9uX2xpc3Rsb2Fkc3dmIj4KKyAgICA8dmFsdWU+TmFocmHFpSBwcmV6ZW50w6FjaXUgbmEgdGFidcS+dTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTAiIG5hbWU9Im5hdmltYWluX2NvbmZpZyI+CisgICAgPHZhbHVlPktvbmZpZ3Vyw6FjaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUxIiBuYW1lPSJ3aGl0ZWJvYXJkX2JvdW5kaW5nYm94X2RyYWciPgorICAgIDx2YWx1ZT7FpGFoYcWlIHRlbnRvIG9iamVrdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTIiIG5hbWU9IndoaXRlYm9hcmRfYm91bmRpbmdib3hfcmVzaXplIj4KKyAgICA8dmFsdWU+Wm1lbmnFpSB2ZcS+a29zxaUgb2JqZWt0dTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTMiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3pvb20iPgorICAgIDx2YWx1ZT4lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1NCIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfc2xpZGUiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU1IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9maXJzdHNsaWRlIj4KKyAgICA8dmFsdWU+UHJ2w6Egc3RyYW5hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1NiIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfcHJlc2xpZGUiPgorICAgIDx2YWx1ZT5QcmVkY2jDoWR6YWrDumNhIHN0cmFuYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTciIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX25leHRzbGlkZSI+CisgICAgPHZhbHVlPsSOYWzFoWlhIHN0cmFuYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTgiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX2xhc3RzbGlkZSI+CisgICAgPHZhbHVlPlBvc2xlZG7DoSBzdHJhbmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU5IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl96b29tbWludXMiPgorICAgIDx2YWx1ZT5ab29tIC0tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MCIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfem9vbXBsdXMiPgorICAgIDx2YWx1ZT5ab29tICsrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MSIgbmFtZT0ic2FsdXRhdGlvbl9tciI+CisgICAgPHZhbHVlPlDDoW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYyIiBuYW1lPSJzYWx1dGF0aW9uX21pc3MiPgorICAgIDx2YWx1ZT5QYW5pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MyIgbmFtZT0ibmF2aW1haW5fY29uZmFkbWluIj4KKyAgICA8dmFsdWU+TmFzdGF2ZW5pZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjQiIG5hbWU9ImNvbmZ0YWJsZV9oZWFkZXJJZCI+CisgICAgPHZhbHVlPklEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2NSIgbmFtZT0iY29uZnRhYmxlX2hlYWRlcmtleSI+CisgICAgPHZhbHVlPkvEvsO6xI08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY2IiBuYW1lPSJjb25mYWRtaW5mb3JtX2hlYWRlciI+CisgICAgPHZhbHVlPk5hc3RhdmVuaWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY3IiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsa2V5Ij4KKyAgICA8dmFsdWU+S8S+w7rEjTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjgiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWx1cGRhdGVkIj4KKyAgICA8dmFsdWU+UG9zbGVkbsOhIHptZW5hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2OSIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbHVwZGF0ZWRieSI+CisgICAgPHZhbHVlPk9ibm92ZW7DqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzAiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWxjb21tZW50Ij4KKyAgICA8dmFsdWU+S29tZW50b3ZhxaU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjcxIiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsa2V5Ij4KKyAgICA8dmFsdWU+SG9kbm90YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzIiIG5hbWU9InR1cm5vdmVybGlzdF9tYXhyZXN1bHRzIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MyIgbmFtZT0ib3JnYW5pc2F0aW9uX3VzZXJzaGVhZGVyIj4KKyAgICA8dmFsdWU+UG91xb5pdmF0ZWxpYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzQiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2ljb25kZWxldGUiPgorICAgIDx2YWx1ZT5abWF6YcWlIHBvdcW+w612YXRlxL5hIHpvIHNwb2xvxI1ub3N0aTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzUiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2RlbGV0ZWRoZWFkIj4KKyAgICA8dmFsdWU+RDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzYiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2FscmVhZGFkZGVkIj4KKyAgICA8dmFsdWU+VGVudG8gcG91xb7DrXZhdGXEviBqZSB1xb4gxI1sZW5vbSB0ZWp0byBzcG9sb8SNbm9zdGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc3IiBuYW1lPSJkYXNoYm9hcmRfbmV3c2hlYWRlciI+CisgICAgPHZhbHVlPlNwcsOhdnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc4IiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rc2hlYWRlciI+CisgICAgPHZhbHVlPlLDvWNobGUgb2RrYXp5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3OSIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua0NvbmYiPgorICAgIDx2YWx1ZT5DaG/EjyBkbyBtaWVzdG5vc3RpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MCIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua0F1ZGl0Ij4KKyAgICA8dmFsdWU+Q2hvxI8gZG8gbWllc3Rub3N0aTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODEiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtzdXBwb3J0Ij4KKyAgICA8dmFsdWU+UG9tb2MgYSBwb2Rwb3JhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MiIgbmFtZT0iZGFzaGJvYXJkX3F1aWNraG9tZXBhZ2V1cmwiPgorICAgIDx2YWx1ZT5odHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MyIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbWFpbGluZ2xpc3R1cmwiPgorICAgIDx2YWx1ZT5odHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvbWFpbC1saXN0cy5odG1sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4NCIgbmFtZT0iZGFzaGJvYXJkX3JlcG9ydGJ1Z3MiPgorICAgIDx2YWx1ZT5OYWhsw6FzacWlIGNoeWJ1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4NSIgbmFtZT0iZGFzaGJvYXJkX3Jzc2xpc3RpdGVtbGlua3RleHQiPgorICAgIDx2YWx1ZT52aWFjPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4NiIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua2hvbWVwYWdlbGFiZWwiPgorICAgIDx2YWx1ZT5TdHLDoW5rYSBwcm9qZWt0dSAoaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODciIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmttYWlsaW5nbGlzdGxhYmVsIj4KKyAgICA8dmFsdWU+Wm96bmFtIHBvdcW+w612YXRlxL5vdiAoaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnL21haWwtbGlzdHMuaHRtbCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg4IiBuYW1lPSJsb2dpbl9yZW1lbWJlcnVzZXIiPgorICAgIDx2YWx1ZT5aYXBhbcOkdGHFpSBwcmlobMOhc2VuaWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg5IiBuYW1lPSJtYWluX25hdmkiPgorICAgIDx2YWx1ZT5PYnNhaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTAiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5NeSBob21lIHBhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkxIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+TXkgc2NoZWR1bGVkIG1lZXRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MiIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPk15IHNjaGVkdWxlZCBldmVudHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkzIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+UHVibGljIG1lZXRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPlByaXZhdGUgbWVldGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk1IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+UHVibGljIGV2ZW50czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTYiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5Qcml2YXRlIGV2ZW50czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTciIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5QdWJsaWMgY29udGVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTgiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5Qcml2YXRlIGNvbnRlbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk5IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+UGVyc29uYWwgY29udGVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDAiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAxIiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+TW9kZXLDoWNpYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDIiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5Nw6FtIG90w6F6a3U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAzIiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+SGxhc292YW5pYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDQiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5WeWJyYcWlIHPDumJvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDUiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5OYXN0YXZlbmlhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNiIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPk5hc3RhdmVuaWUgbWlrcm9mw7NudSBhIGthbWVyeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDciIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5OYXN0YXZlbmllIHRhYnVsaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDgiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5Ww71jaG9kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwOSIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPlNww6TFpSBrIG1pZXN0bm9zdGlhbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTAiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5PZGhsw6FzacWlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5aYWJ1ZGxpIHN0ZSBoZXNsbz88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEyIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlJlc2V0b3ZhxaUgaGVzbG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEzIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlVzaW5nIGVtYWlsIGFkZHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE0IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlVzaW5nIGxvZ2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxNSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5Ww6HFoSBlbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTYiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+VmHFoWUgcHJpaGzDoXNlbmllPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxNyIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5Qb3NsYcWlIGVtYWlsIHMgcmXFoXRhcnRvdmFjw61tIG9ka2F6b208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE4IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPsW9aWFkbnkgdGFrw710byBlbWFpbCBuZWV4aXN0dWplLiBVaXN0aXRlIHNhLCDFvmUgc3RlIHphZGFsaSByb3ZuYWvDvSBlbWFpbCBha28gcHJpIHJlZ2lzdHLDoWNpw60uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxOSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5Qcm9zw61tIHphZGFqdGUgZW1haWwgYWxlYm8gcG91xb7DrXZhdGXEvnNrw6kgbWVubzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjAiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+VGhlcmUgaXMgbm8gdXNlciBjb25uZWN0ZWQgdG8gdGhpcyB1c2VybmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjEiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+RW1haWwgYm9sIHphc2xhbsO9PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyMiIgbmFtZT0iZXJyb3J0eXBlIj4KKyAgICA8dmFsdWU+Q2h5YmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIzIiBuYW1lPSJlcnJvcnR5cGUiPgorICAgIDx2YWx1ZT5TcHLDoXZhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNCIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+UG91xb7DrXZhdGXEviBzYSBuZW5hxaFpZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI1IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5SZXNldG92YcWlIHZhxaFlIGhlc2xvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNiIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+UHJpaGzDoXNlbmllPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNyIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+Wm1lbmnFpSBoZXNsbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjgiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPk5vdsOpIGhlc2xvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyOSIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+Wm5vdmEgemFkYWp0ZSBoZXNsbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzAiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPlZhbWkgemFkYW7DqSBoZXNsbyBuaWUgamUgaWRlbnRpY2vDqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzEiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPlJvemxpxaF1anRlIHZlxL5rw6kvbWFsw6kgcMOtc21lbsOhIGEgdmlhYyBha28gNCB6bmFreTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzIiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPkhlc2xvIG5hc3RhdmVuw6kuIE3DtMW+dGUgc2EgcHJpaGzDoXNpxaUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzMyIgbmFtZT0icnBjY2FsbGJhY2siPgorICAgIDx2YWx1ZT5PSzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzQiIG5hbWU9InJwY2dlbmVyYWxlcnJvciI+CisgICAgPHZhbHVlPkNoeWJhLiBLb250YWt0dWp0ZSBhZG1pbmlzdHLDoXRvcmEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5Qb3XFvsOtdmF0ZcS+c2vDqSBtZW5vIHNhIG5lbmHFoWxvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNiIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5OZXNwcsOhdm5lIGhlc2xvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNyIgbmFtZT0ibG9nb3V0Ij4KKyAgICA8dmFsdWU+w5pzcGXFoW5lIG9kaGzDoXNlbsO9PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzOCIgbmFtZT0icmVnaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+UmVnaXN0csOhY2lhIG5lbW/Fvm7DoTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzkiIG5hbWU9InJlZ2lzdHJhdGlvbiI+CisgICAgPHZhbHVlPkNoeWJuw70gZW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQwIiBuYW1lPSJyZWdpc3RyYXRpb24iPgorICAgIDx2YWx1ZT5EdXBsaWvDoXRueSBuw6F6b3Ygc8O6Ym9ydSwgcHJvc8OtLCB6YWRhanRlIGluw708L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQxIiBuYW1lPSJmaWxlYnJvd3NlciI+CisgICAgPHZhbHVlPk7DoXpvdiBzw7pib3J1IHByw61sacWhIGtyw6F0a3k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQyIiBuYW1lPSJmaWxlYnJvd3NlciI+CisgICAgPHZhbHVlPk5lbW/Fvm5vIHVsb8W+acWlIGFkcmVzdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDMiIG5hbWU9InVzZXJhZG1pbiI+CisgICAgPHZhbHVlPlBvdcW+w612YXRlxL4gcHJpZGFuw70sIGFsZSBqZSBudXRuw6kgcHJpcmFkacWlIGhvIGsgc3BvbG/EjW5vc3RpLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDQiIG5hbWU9ImFkbWluZm9ybXMiPgorICAgIDx2YWx1ZT5Ob3bDvSB6w6F6bmFtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+Tm8gZmllbGQgZm91bmQgZm9yIHRoZSBJRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDYiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPk5vIGxhYmVsIGZvdW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NyIgbmFtZT0iZXJyb3JtZXNzYWdlIj4KKyAgICA8dmFsdWU+QXV0b3LDrXrDoWNpYSBhZG1pbmlzdHLDoXRvcm9tIHNhIHZ5xb5hZHVqZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDgiIG5hbWU9Im1haW5uYXZpIj4KKyAgICA8dmFsdWU+SmF6eWtvdsO9IGVkaXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDkiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkphenlrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1MCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TGFiZWwgSUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUxIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5MYWJlbCBuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1MiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+VmFsdWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUzIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5GaWVsZCB2YWx1ZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU0IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5MYWJlbCBuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1NSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TGFiZWwgdmFsdWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU2IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5MYWJlbCBJRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTciIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPllvdSBoYXZlIGRlbGV0ZWQgdGhlIGxhYmVsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1OCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+SW52YWxpZCBsYWJlbCBJRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTkiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPk5lbcO0xb50ZSB6bWF6YcWlIHRvdG8gcG9sZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjAiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkV4cG9ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjEiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPk11c8OtdGUgc2Egb2RobMOhc2nFpSBwcmUgdWxvxb5lbmllIHptaWVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjIiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkFkZCBuZXcgbGFuZ3VhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYzIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5EZWxldGUgbGFuZ3VhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY0IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5BZGQgbmV3IGxhbmd1YWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjYiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkFkZCBsYW5ndWFnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjciIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkJhY2t1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjgiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPnBydsO9PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2OSIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+cHJlZGNow6FkemFqw7pjaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzAiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPsSPYWzFocOtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MSIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+cG9zbGVkbsO9PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MiIgbmFtZT0idmlkZW9ib3giPgorICAgIDx2YWx1ZT5wb3XFvsOtdmF0ZcS+IGhvdm9yw60gKEJ5IGNsaWNraW5nIGhlcmUgeW91IGNhbiBnaXZlIGV4Y2x1c2l2ZSBhdWRpbyAvIG11dGUgdGhlIG1pY3JvcGhvbmUgb2Ygb3RoZXJzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzMiIG5hbWU9InZpZGVvYm94Ij4KKyAgICA8dmFsdWU+dnlwbsO6xaUvemFwbsO6xaUgenZ1azwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPlN5c3TDqW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc1IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5WYcWhZSBuYXN0YXZlbmllPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3NiIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+WmRyYXbDrW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc3IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5VcHJhdmnFpSBwcm9maWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc4IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5Ob3bDoSBzcHLDoXZhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3OSIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+TmFocmHFpSBub3bDvSBvYnLDoXpvazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODAiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+RXhwb3J0b3ZhxaUgcG91xb7DrXZhdGXEvm92ZSDDumRhamU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgxIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPkFsbCBvcmdhbmlzYXRpb25zIG11c3QgYWxyZWFkeSBleGlzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODIiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+WmHEjWHFpSBleHBvcnRvdmHFpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODMiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+Qnkgb3JnYW5pc2F0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NCIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5TdGFydCBleHBvcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg1IiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPkltcG9ydCB1c2VyIGRhdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg2IiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPkNob29zZSB1c2Vycy54bWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg3IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5JbXBvcnRvdmHFpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODgiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkV4cG9ydG92YcWlIGRvIFhNTDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODkiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPlZ5YnJhxaUgamF6eWsgZG9rdW1lbnR1IHByZSBpbXBvcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkwIiBuYW1lPSJpbXBvcnR3aW5kb3ciPgorICAgIDx2YWx1ZT5JbXBvcnRvdmHFpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTEiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT5VbG/FvmnFpSBha288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkyIiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+TWVubzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTMiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT5Lb21lbnTDoXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk0IiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+VWxvxb5pxaU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk1IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5OYWhyw6F2a3k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk2IiBuYW1lPSJyZWNvcmRlciI+CisgICAgPHZhbHVlPlByZWhsaWFkYcSNIG5haHLDoXZvazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTciIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPk5haHLDoXZreSB2ZXJlam7DvWNoIGEgc8O6a3JvbW7DvWNoIG1pZXN0bm9zdMOtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5OCIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+UG91xb7DrXZhdGVsaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk5IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5Qcmlwb2plbsO9PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMCIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMSIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+UG91xb7DrXZhdGVsaWEgdiB0ZWp0byBtaWVzdG5vc3RpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMiIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+T2Jub3ZpxaU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAzIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5NaWVzdGEgc8O6IG9ic2FkZW7DqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDQiIG5hbWU9InJvb21zTGlzdCI+CisgICAgPHZhbHVlPktsaWtuaXRlIG5hIG1pZXN0bm9zxaUgcHJlIGluZm9ybcOhY2llIG8gbWllc3Rub3N0aTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDUiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPkNoYXQgcyBwb3XFvsOtdmF0ZcS+bWkgdiB0ZWp0byBtaWVzdG5vc3RpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNiIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+TWllc3Rub3PFpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDciIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPlBvdcW+w612YXRlbGlhIHYgdGVqdG8gbWllc3Rub3N0aTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDgiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPm9kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwOSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+UHJlaHJhxaUgbmFocsOhdmt1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMCIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+RMS6xb5rYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTEiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkTDoXR1bTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTIiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPlJlxb5pbSBuYWhyw6F2YW5pYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTMiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPlByZWhyYcWlIHTDunRvIG5haHLDoXZrdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTQiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPlByZWhyYcWlL1BhdXphPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxNSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+TmFocmHFpSB0w7p0byBtaWVzdG5vc8WlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxNiIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+WmFzdGF2acWlIG5haHLDoXZhbmllPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxNyIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+TmFocsOhdmFuaWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE4IiBuYW1lPSJyZWNvcmRfZXJyb3JfbXNnIj4KKyAgICA8dmFsdWU+Tmlla3RvIHXFviBuYWhyw6F2YSB0w7p0byBtaWVzdG5vc8WlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxOSIgbmFtZT0icmVjb3JkX21lc3NhZ2UiPgorICAgIDx2YWx1ZT5OYWhyw6F2YW5pZS4gUG91xb7DrXZhdGXEvjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIwIiBuYW1lPSJyZWNvcmRfY2FuY2VsIj4KKyAgICA8dmFsdWU+WnJ1xaFpxaU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIxIiBuYW1lPSJyZWNvcmRfY2FuY2FsX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5OYWhyw6F2YW5pZSBidWRlIHpydcWhZW7DqSBhIG5ldWxvxb7DrSBzYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjIiIG5hbWU9ImNhbmNlbF9kaWFsb2dfcmVzdW1lIj4KKyAgICA8dmFsdWU+dsO9c2xlZG9rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyMyIgbmFtZT0iY2FuY2VsX2RpYWxvZ19yZXN1bWVfdG9vbHRpcCI+CisgICAgPHZhbHVlPlphdnJpZcWlIHRvdG8gb2tubyBhIHpocm7DusWlIG5haHLDoXZhbmllPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyNCIgbmFtZT0icGFpbnR0b29sc19lbGxpcHNlX2NvbG9yIj4KKyAgICA8dmFsdWU+Wm1lbmnFpSBmYXJidTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjUiIG5hbWU9ImNvbG9ycGlja2VyX2hlYWQiPgorICAgIDx2YWx1ZT5WeWJyYcWlIGZhcmJ1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyNiIgbmFtZT0icGFpbnR0b29sc19saW5lX2Rpc2FibGUiPgorICAgIDx2YWx1ZT5abmVtb8W+bmnFpS91bW/Fvm5pxaUgZmFyYnU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI3IiBuYW1lPSJwYWludHRvb2xzX2ZpbGxfZGlzYWJsZSI+CisgICAgPHZhbHVlPlptZW5pxaUgZmFyYnUgdsO9cGxuZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjgiIG5hbWU9InBhaW50dG9vbHNfbGluZV9kaXNhYmxlIj4KKyAgICA8dmFsdWU+Wm5lbW/Fvm5pxaUvdW1vxb5uacWlIGZhcmJ1IHbDvXBsbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI5IiBuYW1lPSJjaGFuZ2Vfd2lkdGhfYXJyb3dfZG93bl9zbGlkZXIiPgorICAgIDx2YWx1ZT5abWVuacWlIMWhaXJrdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzAiIG5hbWU9ImNsb3NlX3NtYWxsX3BvcHVwcyI+CisgICAgPHZhbHVlPlphdHZvcmnFpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzEiIG5hbWU9InBhaW50X3Rvb2xfbGV0dGVyIj4KKyAgICA8dmFsdWU+Wm1lbmnFpSB2ZcS+a29zxaUgcMOtc21hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzMiIgbmFtZT0icmVjb3JkaW5nc2xpc3RfZGVsZXRlIj4KKyAgICA8dmFsdWU+Wm1hemHFpSBuYWhyw6F2a3U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMzIiBuYW1lPSJyZWNvcmRpbmdzbGlzdF9yZWNvcmRlZEJ5R3Vlc3QiPgorICAgIDx2YWx1ZT5Ib3PFpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzQiIG5hbWU9InJlY29yZGluZ3NsaXN0X3JlY29yZGVkYnkiPgorICAgIDx2YWx1ZT46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNSIgbmFtZT0icmVjb3JkaW5nc190YWJsZV9oZWFkX25hbWUiPgorICAgIDx2YWx1ZT5NZW5vPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNiIgbmFtZT0icmVjb3JkaW5nc190YWJsZV9oZWFkX3Jvb20iPgorICAgIDx2YWx1ZT5NaWVzdG5vc8WlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNyIgbmFtZT0icmVjb3JkaW5nc190YWJsZV9oZWFkX2RhdGUiPgorICAgIDx2YWx1ZT5Ew6F0dW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM4IiBuYW1lPSJyZWNvcmRfc3RhcnRfY2FuY2VsIj4KKyAgICA8dmFsdWU+WnJ1xaFpxaU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM5IiBuYW1lPSJyZWNvcmRfc3RhcnRfc3RhcnQiPgorICAgIDx2YWx1ZT5aYcSNYcWlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MCIgbmFtZT0iZmlsZXNicm93c2VyX3RhYmxlX2hlYWRfbmFtZSI+CisgICAgPHZhbHVlPk1lbm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQxIiBuYW1lPSJmaWxlc2Jyb3dzZXJfdGFibGVfaGVhZF9kYXRlIj4KKyAgICA8dmFsdWU+RMOhdHVtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MiIgbmFtZT0iY2hhdF9jbGVhcl9oaXN0b3J5Ij4KKyAgICA8dmFsdWU+RGVsZXRlIHNlcnZlciBjaGF0IGxvZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDMiIG5hbWU9ImNoYXRfb3ZlcmFsbF9oZWFkZXIiPgorICAgIDx2YWx1ZT5DaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NCIgbmFtZT0iY2hhdF9zZW5kX2J0biI+CisgICAgPHZhbHVlPlBvc2xhxaUgc3Byw6F2dTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDUiIG5hbWU9ImNoYXRfZW1vdF9idG4iPgorICAgIDx2YWx1ZT5FbW90aWtvbnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ2IiBuYW1lPSJjaGF0X2Vtb3Rfd2luIj4KKyAgICA8dmFsdWU+RW1vdGlrb255PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NyIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzIj4KKyAgICA8dmFsdWU+VnlicmHFpSB6YXJpYWRlbmllPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0OCIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2NvbWJvIj4KKyAgICA8dmFsdWU+QXVkaW8gYSB2aWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDkiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPkliYSBhdWRpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTAiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPlZpZGVvIGliYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTEiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPsW9aWFkbmUgYXVkaW8vdmlkZW8gKG9icsOhem9rKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTIiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19pbmZvX3RleHQiPgorICAgIDx2YWx1ZT7FvWlhZG5lIGF1ZGlvL3ZpZGVvIHogdsOhxaFobyBwb8SNw610YcSNYSBuaWUgamUgcHVibGlrb3ZhbsOpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1MyIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9tb25kYXkiPgorICAgIDx2YWx1ZT5QbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTQiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfdHVlc2RheSI+CisgICAgPHZhbHVlPlV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV93ZWRuZXNkYXkiPgorICAgIDx2YWx1ZT5TdHI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU2IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3RodXJzZGF5Ij4KKyAgICA8dmFsdWU+xaB0djwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTciIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfZnJpZGF5Ij4KKyAgICA8dmFsdWU+UGlhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1OCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9zYXR1cmRheSI+CisgICAgPHZhbHVlPlNvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1OSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9zdW5kYXkiPgorICAgIDx2YWx1ZT5OZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjAiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfbW9uZGF5Ij4KKyAgICA8dmFsdWU+UG9uZGVsb2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYxIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1R1ZXNkYXlMYWJlbCI+CisgICAgPHZhbHVlPlV0b3JvazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjIiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfV2VkbmVzZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5TdHJlZGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYzIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1RodXJzZGF5TGFiZWwiPgorICAgIDx2YWx1ZT7FoHR2cnRvazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjQiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfRnJpZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5QaWF0b2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY1IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1NhdHVyZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5Tb2JvdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY2IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1N1bmRheUxhYmVsIj4KKyAgICA8dmFsdWU+TmVkZWxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NyIgbmFtZT0iY2FsZW5kYXJfd2Vla251bWJlcl9oZWFkZXIiPgorICAgIDx2YWx1ZT5LVDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjgiIG5hbWU9ImNhbGVuZGFyX3dlZWtudW1iZXJfaGVhZGVyVG9vbHRpcCI+CisgICAgPHZhbHVlPkthbGVuZMOhciB0w73FvmRlxYg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY5IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+SmFudcOhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzAiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5GZWJydcOhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzEiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5NYXJlYzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzIiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5BcHLDrWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDczIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+TcOhajwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzQiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5Kw7puPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3NSIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPkrDumw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc2IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+QXVndXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3NyIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPlNlcHRlbWJlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzgiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5Pa3TDs2JlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzkiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5Ob3ZlbWJlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODAiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5EZWNlbWJlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODEiIG5hbWU9ImNhbGVuZGFyd2luX2hlYWRlciI+CisgICAgPHZhbHVlPkthbGVuZMOhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODIiIG5hbWU9InJvb21hZG1pbl9sYWJlbE51bWJlck9mUGFydGljaXBhbnRzIj4KKyAgICA8dmFsdWU+UGFydGljaXB1asO6Y2k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgzIiBuYW1lPSJyb29tVmFsdWVfYWR2YW5jZWRTZXR0aW5ncyI+CisgICAgPHZhbHVlPlpvYnJhemnFpSBuYXN0YXZlbmllIHJvemxvxb5lbmlhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NCIgbmFtZT0icm9vbUFkbWluX2xheW91dF92aWRlb1giPgorICAgIDx2YWx1ZT5YIHwgWTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODUiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfdmlkZW9ZIj4KKyAgICA8dmFsdWU+xaHDrXJrYSB8IHbDvcWha2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg2IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0Ij4KKyAgICA8dmFsdWU+VmlkZW8ga29udGFqbmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NyIgbmFtZT0icm9vbUFkbWluX2xheW91dF9tb2QiPgorICAgIDx2YWx1ZT5Nb2RlcsOhdG9yc2vDvSBrb250YWpuZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg4IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X21vZF9wb3MiPgorICAgIDx2YWx1ZT5YPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4OSIgbmFtZT0icm9vbUFkbWluX2xheW91dF93aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+VGFidcS+b3bDvSBrb250YWpuZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkwIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmRfc2hvdyI+CisgICAgPHZhbHVlPlBvdm9sZW7DvTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTEiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZF9wb3MiPgorICAgIDx2YWx1ZT5YIHwgWTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTIiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPsWhw61ya2EgfCB2w73FoWthPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5MyIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlcyI+CisgICAgPHZhbHVlPktvbnRham5lciBkb2t1bWVudG92LCBjaGF0dSBhIHBhcnRpY2lwYW50b3Y8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk0IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X2ZpbGVzX3Nob3ciPgorICAgIDx2YWx1ZT5Qb3ZvbGVuw708L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk1IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X2ZpbGVzX3BvcyI+CisgICAgPHZhbHVlPlggfFk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk2IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X2ZpbGVzIj4KKyAgICA8dmFsdWU+xaHDrXJrYSB8IHbDvcWha2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk3IiBuYW1lPSJtb2RlcmF0b3JfZ29uZV9tZXNzYWdlIj4KKyAgICA8dmFsdWU+TW9kZXLDoXRvciBvcHVzdGlsIG1pZXN0bm9zxaUuIFYgdG9tdG8gbW9tZW50ZSBuaWt0byBuZXByZXplbnR1amUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5OCIgbmFtZT0ibW9kZXJhdG9yX21lc3NhZ2VfZXZlbnRfbm9fbW9kIj4KKyAgICA8dmFsdWU+ViB0ZWp0byBtaWVzdG5vc3RpIG5pZSBqZSBtb2RlcsOhdG9yLCBhbGUgc8O6IHR1IHBhcnRpY2lwdWrDumNpLiBNdXPDrXRlIHBvxb5pYWRhxaUgbyBtb2RlcsOhY2l1IGFsZWJvIHBvxI1rYcWlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTkiIG5hbWU9ImZlZWRiYWNrX3RlbXBsYXRlX3N1YmplY3QiPgorICAgIDx2YWx1ZT5GZWVkYmFjayAkQVBQX05BTUU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAwIiBuYW1lPSJpbnZpdGF0aW9uX3RlbXBsYXRlX2hlYWQiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgLSBQb3p2YW5pZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDEiIG5hbWU9Imludml0YXRpb25fdGV4dF9mcm9tIj4KKyAgICA8dmFsdWU+U3Byw6F2YSBvZDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAyIiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfbWVzc2FnZSI+CisgICAgPHZhbHVlPlNwcsOhdmE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwMyIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X2NsaWNrX3RleHQiPgorICAgIDx2YWx1ZT5QcmUgcGFydGljaXDDoWNpdSB2IHRlanRvIG1pZXN0bm9zdGkga2xpa25pdGUgbmEgdGVudG8gbGluazo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA0IiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfY2xpY2tfdGV4dF9saW5rIj4KKyAgICA8dmFsdWU+S2xpa25pdGUgc2VtIHByZSB2c3R1cCBkbyBtaWVzdG5vc3RpOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDUiIG5hbWU9Imludml0YXRpb25fdGV4dF9jbGlja190ZXh0X2hlbHAiPgorICAgIDx2YWx1ZT5BayBtw6F0ZSBwcm9ibMOpbSBzIG9ka2F6b20sIHNrb3DDrXJ1anRlIGhvIGRvIHbDocWhaG8gcHJlaGxpYWRhxI1hOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDYiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9oZWFkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIHByaWhsw6FzZW5pZXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA3IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfaGVhZDIiPgorICAgIDx2YWx1ZT5Zb3VyIHVzZXJkYXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwOCIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X3VzZXJuYW1lIj4KKyAgICA8dmFsdWU+cHJpaGzDoXNlbmllPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwOSIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X3Bhc3MiPgorICAgIDx2YWx1ZT5IZXNsbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTAiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9tYWlsIj4KKyAgICA8dmFsdWU+RW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTExIiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfYnllIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FLVRlYW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTEyIiBuYW1lPSJyZWdpc3Rlcl9tYWlsX3N1YmplY3QiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgcHJpaGzDoXNlbmllPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxMyIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSAtIFJlc2V0IFBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNCIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfdGVzdF9saW5rIj4KKyAgICA8dmFsdWU+S2xpa25pdGUgbmEgdGVudG8gbGluayBwcmUgemFkYW5pZSBub3bDqWhvIGhlc2xhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNSIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfdGV4dDJfbGluayI+CisgICAgPHZhbHVlPktsaWtuaXRlIHNlbSBwcmUgemFkYW5pZSBub3bDqWhvIGhlc2xhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNiIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfdGV4dDNfbGluayI+CisgICAgPHZhbHVlPkFrIG3DoXRlIHByb2Jsw6lteSBzIHTDvW10byBvZGthem9tLCBza29ww61ydWp0ZSBzaSBobyBwcmlhbW8gZG8gdnloxL5hZMOhdmHEjWE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNyIgbmFtZT0icmVzZXRfcGFzc3dvcmRfbWFpbF9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+UmVzZXQgaGVzbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE4IiBuYW1lPSJkYXRlUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5Qcm9zw61tIHphZGFqdGUgc3Byw6F2bnkgZMOhdHVtIHZvIGZvcm3DoXRlIDI0LjEyLjIwMDEgKGRkLm1tLnl5eXkpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxOSIgbmFtZT0iZW1haWxSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPlByb3PDrW0gemFkYWp0ZSBzcHLDoXZueSBlbWFpbCB2byBmb3JtZSBuYW1lQG1haWwuY29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyMCIgbmFtZT0iZmxvYXRSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPlByb3PDrW0gemFkYWp0ZSDEjcOtc2xvLCBuYXByw61rbGFkIDEuMDA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIxIiBuYW1lPSJudW1iZXJSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPlByb3PDrW0gemFkYWp0ZSBjZWzDqSDEjcOtc2xvLCBuYXByw61rbGFkIDEwMDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjIiIG5hbWU9InBob25lUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5Qcm9zw61tIHphZGFqdGUgcGxhdG7DqSB0ZWxlZsOzbm5lIMSNw61zbG8sIG5hcHLDrWtsYWQgKzQ5IDAxMjMgMTIzMTIzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyMyIgbmFtZT0idGltZVJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+UHJvc8OtbSB6YWRhanRlIHNwcsOhdm55IMSNYXMsIG5hcHLDrWtsYWQgMTI6MjMgKGhoOm1tKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjQiIG5hbWU9Imludml0YXRpb25fd2luZG93Ij4KKyAgICA8dmFsdWU+Q2hyw6FuZW7DqSBoZXNsb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI1IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd19wYXNzd29yZExhYmVsIj4KKyAgICA8dmFsdWU+SGVzbG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI2IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZExhYmVsIj4KKyAgICA8dmFsdWU+VmFsaWRhxI1uw6EgZG9iYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjciIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkIj4KKyAgICA8dmFsdWU+TmVrb25lxI1uw6k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI4IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZCI+CisgICAgPHZhbHVlPk9iZG9iaWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI5IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZCI+CisgICAgPHZhbHVlPkplZG5vcsOhem92w6k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMwIiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZEZyb21MYWJlbCI+CisgICAgPHZhbHVlPlBsYXRuw6kgb2Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMxIiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZFRvTGFiZWwiPgorICAgIDx2YWx1ZT5QbGF0bsOpIGRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMiIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfTWFpbFN1YmplY3QiPgorICAgIDx2YWx1ZT5Qb3p2YW5pZSBkbyAkQVBQX05BTUU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMzIiBuYW1lPSJpbnZpdGF0aW9uX2Vycm9yIj4KKyAgICA8dmFsdWU+xb1pYWRuYSBwb3p2w6Fua2EgcHJlIHRlbnRvIGvDs2QgbmVleGlzdHVqZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzQiIG5hbWU9Imludml0YXRpb25fZXJyb3IiPgorICAgIDx2YWx1ZT5Ub3RvIHBvenZhbmllIHXFviBib2xvIHBvdcW+aXTDqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzUiIG5hbWU9Imludml0YXRpb25fZXJyb3IiPgorICAgIDx2YWx1ZT5Qb3rDvXZhY8OtIGvDs2QgamUgbmVwbGF0bsO9PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzNiIgbmFtZT0iaW52aXRhdGlvbl9wYXNzIj4KKyAgICA8dmFsdWU+SGVzbG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM3IiBuYW1lPSJpbnZpdGF0aW9uX3Bhc3NfYnRuIj4KKyAgICA8dmFsdWU+U2tvbnRyb2xvdmHFpSBoZXNsbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzgiIG5hbWU9Imludml0YXRpb25fcGFzc19lcnJvciI+CisgICAgPHZhbHVlPk5lcGxhdG7DqSBoZXNsbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzkiIG5hbWU9IkJyb3dzZXIiPgorICAgIDx2YWx1ZT5BdWRpby92aWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDAiIG5hbWU9ImF1ZGlvX3ZpZGVvIj4KKyAgICA8dmFsdWU+U3luY2hyb25pem92YcWlIGF1ZGlvL3ZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0MSIgbmFtZT0iZXJyb3JDb2RlX2ludmFsaWRTZXNzaW9uIj4KKyAgICA8dmFsdWU+UHJpaGzDoXNlbmllIGplIHNwcsOhdm5lLCBhbGUgc3RyZXRudXRpZSBuaWUgamUgYWt0w612bmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQyIiBuYW1lPSJlcnJvcmNvZGVfc2V0VXNlck9iamVjdCI+CisgICAgPHZhbHVlPklEIG1pZXN0bm9zdGkgbmllIGplIHByaWhsw6FzZW7DqSBhbGVibyBuZW3DoSBhZG1pbmlzdHLDoXRvcnNrw6kgcHLDoXZhLiBTT0FQIGJyw6FuYSBwb3RyZWJ1amUgcG91xb7DrXZhdGXEvmEgcyBhZG1pbmlzdHLDoXRvcnNrw71taSBwcsOhdmFtaSBuYSB2bG/FvmVuaWUgbm92w6lobyBwb3XFvsOtdmF0ZcS+YS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQzIiBuYW1lPSJlcnJvcmNvZGVfbG9naW5CeVJlbW90ZVVzZXIiPgorICAgIDx2YWx1ZT5UaGlzIFNlc3Npb24gaGFzIG5vIHJlbW90ZXVzZXItZGF0YSBjb25uZWN0ZWQuIFlvdSBkaWQgbm90IGNhbGwgdGhlIFNPQVAgZ2F0ZXdheSBiZWZvcmUgYWNjZXNzaW5nIHRoZSBhcHBsaWNhdGlvbiBvciB5b3UgYXJlIHVzaW5nIGEgd3Jvbmcgc2Vzc2lvbiBJRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDQiIG5hbWU9ImRlYnVnX21lc3NhZ2VfcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+VGhlIHJlY29yZGVyIGlzIGN1cnJlbnRseSBiZXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0NSIgbmFtZT0icHJvcGVydHlQYW5lbFhWYWx1ZSI+CisgICAgPHZhbHVlPng8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ2IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWFZhbHVlTGFiZWwiPgorICAgIDx2YWx1ZT5vcyB4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0NyIgbmFtZT0icHJvcGVydHlQYW5lbFlWYWx1ZSI+CisgICAgPHZhbHVlPnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ4IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWVZhbHVlTGFiZWwiPgorICAgIDx2YWx1ZT5vcyB5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0OSIgbmFtZT0icHJvcGVydHlQYW5lbFdpZHRoVmFsdWUiPgorICAgIDx2YWx1ZT7FoTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTAiIG5hbWU9InByb3BlcnR5UGFuZWxXaWR0aFZhbHVlTGFiZWwiPgorICAgIDx2YWx1ZT7FocOtcmthPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1MSIgbmFtZT0icHJvcGVydHlQYW5lbEhlaWdodFZhbHVlIj4KKyAgICA8dmFsdWU+djwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTIiIG5hbWU9InByb3BlcnR5UGFuZWxIZWlnaHRWYWx1ZUxhYmVsIj4KKyAgICA8dmFsdWU+dsO9xaFrYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTMiIG5hbWU9InByb3BlcnR5T3BhY2l0eVNsaWRlciI+CisgICAgPHZhbHVlPlptZW5pxaUgcHJpZWjEvmFkbm9zxaU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU0IiBuYW1lPSJicm93c2VyT3BlbiI+CisgICAgPHZhbHVlPk90dm9yacWlIHByZWhsaWFkYcSNPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1NSIgbmFtZT0iYnJvd3NlckNsb3NlIj4KKyAgICA8dmFsdWU+WmF0dm9yacWlIHByZWhsaWFkYcSNPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1NiIgbmFtZT0iY29ubmVjdGlvbkxvc3RNZXNzYWdlIj4KKyAgICA8dmFsdWU+UHJpcG9qZW5pZSBuYSBzZXJ2ZXIgemx5aGFsbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTciIG5hbWU9IjU1NyI+CisgICAgPHZhbHVlPlVrYXpvdsOhdGtvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1OCIgbmFtZT0ic3luYyBtZXNzYWdlIGhlYWRlciI+CisgICAgPHZhbHVlPlN5bmNocm9uaXpvdmFuaWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU5IiBuYW1lPSJTeW5jaHJvbml6aW5nIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TeW5jaHJvbml6b3ZhbmllLCBwcm9zw61tIMSNYWthanRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MCIgbmFtZT0iZXhwb3J0VG9TVkciPgorICAgIDx2YWx1ZT4mbHQ7dSZndDtTdGlhaG7DusWlIGFrbyBTVkcmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MSIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O1N0aWFobsO6xaUgYWtvIFBORyZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYyIiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7U3RpYWhuw7rFpSBha28gSlBHJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjMiIG5hbWU9ImV4cG9ydFRvSW1hZ2UiPgorICAgIDx2YWx1ZT4mbHQ7dSZndDtTdGlhaG7DusWlIGFrbyBQREYmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2NCIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O1N0aWFobsO6xaUgYWtvIFRJRiZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY1IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+UHJpcG9taWVua2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY2IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+S2F0ZWfDs3JpYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjciIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5PcGFrb3ZhbmllPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2OCIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPsW+aWFkbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY5IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+VW1pZXN0bmVuaWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTcwIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+WmHEjWlhdG9rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPktvbmllYzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzIiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5Ow6F6b3Y8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTczIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+S29tZW50w6FyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NCIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPlBvenZhxaUgxL51ZMOtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkRlbm5lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NiIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPk1lc2HEjW5lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NyIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPlJvxI1uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzgiIG5hbWU9ImFsZXJ0Ij4KKyAgICA8dmFsdWU+U3RyZXRudXRpZSBrb27EjcOtIGHFviB2IMSNYXNlIG5lc2tvcsWhb20gYWtvIHphxI1hbG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc5IiBuYW1lPSJhbGVydCI+CisgICAgPHZhbHVlPlByb3PDrW0gdmxvxb50ZSBuw6F6b3Y8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgwIiBuYW1lPSI1ODAiPgorICAgIDx2YWx1ZT5acHJhdmEgZG/EvmF2YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODEiIG5hbWU9IjU4MSI+CisgICAgPHZhbHVlPkFrdGl2b3ZhxaUgYWsgcMOtxaFldGUgc3ByYXZhIGRvxL5hdmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgyIiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPlRhYnXEvmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgzIiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPlBvemVyYcWlIG5haHLDoXZreSBzdHJldG51dMOtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4NCIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT5TdHJldG51dGllIC0gbWFrZSBhIGNvbmZlcmVuY2Ugd2l0aCBiZXR3ZWVuIDQgYW5kIDE2IHVzZXJzJmx0O2JyLyZndDthbmQgZXZlcnlib2R5IHdpbGwgaGF2ZSBhdWRpbyBhbmQgdmlkZW8gYWNjZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4NSIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT5FdmVudCAtIG1ha2UgYSBjb25mZXJlbmNlIHdpdGggdXAgdG8gMjAwIHBhcnRpY2lwZW50cyZsdDtici8mZ3Q7YnV0IG9ubHkgdGhlIG1vZGVyYXRvciB3aWxsIGhhdmUgYXVkaW8gYW5kIHZpZGVvIGFjY2VzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODYiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+Q3JlYXRlIHVzZXJzLCByb29tcywgb3JnYW5pc2F0aW9ucyZsdDtici8mZ3Q7IGFuZCBjaGFuZ2UgY29uZmlndXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODciIG5hbWU9InJvb20gQWRtaW5pc3RyYXRpb24gcm9vbWNsaWVudHMgbGlzdCI+CisgICAgPHZhbHVlPlBvdcW+w612YXRlbGlhIHYgdGVqdG8gbWllc3Rub3N0aTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODgiIG5hbWU9InJvb20gQWRtaW5pc3RyYXRpb24gcm9vbWNsaWVudHMgbGlzdCI+CisgICAgPHZhbHVlPklEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4OSIgbmFtZT0icm9vbSBBZG1pbmlzdHJhdGlvbiByb29tY2xpZW50cyBsaXN0Ij4KKyAgICA8dmFsdWU+UHJpaGzDoXNlbmllPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5MCIgbmFtZT0icm9vbSBBZG1pbmlzdHJhdGlvbiByb29tY2xpZW50cyBsaXN0Ij4KKyAgICA8dmFsdWU+RDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTEiIG5hbWU9InN3ZiBzeW5jIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5OYWhyw6F2YW0gZG9rdW1lbnQuIFBvxI1rYWp0ZSBwb2tpYcS+IHbFoWV0Y2kga2xpZW50aSBuZWJ1ZMO6IHpvc3luY2hyb25pem92YW7DrS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkyIiBuYW1lPSJ1cGxvYWQgZGlhbG9nIj4KKyAgICA8dmFsdWU+TmFocmF0aWUga29tcGxldG7DqSwga29udmVydHVqZW0gZG9rdW1lbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkzIiBuYW1lPSJ1cGxvYWQgZGlhbG9nIj4KKyAgICA8dmFsdWU+WmHEjWHFpSBuYWhyw6F2YW5pZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTQiIG5hbWU9InVwbG9hZCBkaWFsb2ciPgorICAgIDx2YWx1ZT5OYWhyYcWlIGEgaW1wb3J0b3ZhxaUgZGlhbMOzZy4gUHJvc8OtbSB2eWJlcnRlIHPDumJvci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk1IiBuYW1lPSJ1cGxvYWQgRGlhbG9nIj4KKyAgICA8dmFsdWU+WnJ1xaFpxaU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk2IiBuYW1lPSJ1cGxvYWQgRGlhbG9nIj4KKyAgICA8dmFsdWU+VnlicmHFpSBzw7pib3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk3IiBuYW1lPSJhZG1pbmlzdHJhdGlvbiBuYXZpZ2F0aW9uIj4KKyAgICA8dmFsdWU+UHJpcG9qZW5pYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTgiIG5hbWU9ImNvbmZhZG1pbiB2YWx1ZSBsaXN0Ij4KKyAgICA8dmFsdWU+SG9kbm90YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTkiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5TdHJlYW0gSUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAwIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+UHJpaGzDoXNlbmllPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwMSIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPlByaXBvamVuw70gb2Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAyIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+TWllc3Rub3PFpSAvIE9ibGFzxaU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAzIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+Vnlob2RpxaUgcG91xb7DrXZhdGXEvmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA0IiBuYW1lPSJraWNrIHVzZXIgY29uZmlybWF0aW9uIGRpYWxvZyI+CisgICAgPHZhbHVlPlZ5aG9kacWlIHBvdcW+w612YXRlxL5hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwNSIgbmFtZT0ia2ljayB1c2VyIGNvbmZpcm1hdGlvbiBkaWFsb2ciPgorICAgIDx2YWx1ZT5OYW96YWogY2hjZXRlIHZ5aG9kacWlIHRvaHRvIGtsaWVudGEgeiBtaWVzdG5vc3RpPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDYiIG5hbWU9ImtpY2sgdXNlciBtZXNzYWdlIGRpYWxvZyI+CisgICAgPHZhbHVlPlZhxaFlIHN0cmV0bnV0aWUgYm9sbyB6YXZyZXTDqSBhZG1pbmlzdHLDoXRvcm9tIGFsZWJvIG1vZGVyw6F0b3JvbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA3IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Bob25lIj4KKyAgICA8dmFsdWU+VGVsZWbDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA4IiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5Qb3XFvsOtdmF0ZcS+IGplIG1vZGVyw6F0b3JvbSB0ZWp0byBtaWVzdG5vc3RpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwOSIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+UG91xb7DrXZhdGXEviBtw6EgcHLDoXZvIGtyZXNsacWlIG5hIHRhYnXEvnU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEwIiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT4oUmUpIMWhdGFydG92YcWlIGF1ZGlvL3ZpZGVvIGFsZWJvIHptZW5pxaUgbmFzdGF2ZW5pYSB6YXJhZGVuaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjExIiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5Qb3ZvbGnFpSB0b211dG8gcG91xb7DrXZhdGXEvm92aSBrcmVzbGnFpSBuYSB0YWJ1xL51PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMiIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+T2RvYnJhxaUgcHLDoXZvIGtyZXNsacWlIG5hIHRhYnXEvnU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEzIiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+UG91xb7DrXZhdGVsaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE0IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+U8O6Ym9yeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTUiIG5hbWU9ImNvbmZlcmVuY2VQYW5lbHMiPgorICAgIDx2YWx1ZT5UYWJ1xL5hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxNiIgbmFtZT0iY29uZmVyZW5jZVBhbmVscyI+CisgICAgPHZhbHVlPkNoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE3IiBuYW1lPSJvcmdhbml6YXRpb24gY2hvb3NlIGluZm8iPgorICAgIDx2YWx1ZT5Ww6HFoSDDusSNZXQgamUgcHJpcmFkZW7DvSBrIHZpYWNlcsO9bSBzcG9sb8SNbm9zdGlhbS5Qcm9zw61tIHZ5YmVydGUgc2kgamVkbnUgcHJlIHTDunRvIG1pZXN0bm9zxaUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxOCIgbmFtZT0iZXJyb3IgbWVzc2FnZSByb29tIGZ1bGwiPgorICAgIDx2YWx1ZT5NaWVzdG5vc8WlIGplIHXFviBvYnNhZGVuw6E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE5IiBuYW1lPSJyb29tdHlwZXMiPgorICAgIDx2YWx1ZT5UeXAgbWllc3Rub3N0aTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjAiIG5hbWU9ImFwcG9pbnRlZF9yb29tIj4KKyAgICA8dmFsdWU+TWllc3Rub3PFpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjEiIG5hbWU9InNlcnZlcnRpbWUiPgorICAgIDx2YWx1ZT7EjGFzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyMiIgbmFtZT0iaW52X3JlbWluZGVyX3RlbXBsYXRlX2hlYWQiPgorICAgIDx2YWx1ZT5DbGlja2pvYmZhaXIgLSBQcmlwb21pZW5rYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjMiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2Zyb20iPgorICAgIDx2YWx1ZT5TcHLDoXZhIG9kIHBvdcW+w612YXRlxL5hOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjQiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X21lc3NhZ2UiPgorICAgIDx2YWx1ZT5TcHLDoXZhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjUiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2NsaWNrX3RleHQiPgorICAgIDx2YWx1ZT5LbGlrbml0ZSBuYSB0ZW50byBvZGtheiBwcmUgw7rEjWFzxaUgbmEga29uZmVyZW5jacOtOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjYiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2NsaWNrX3RleHRfbGluayI+CisgICAgPHZhbHVlPktsaWtuaXRlIHR1IHByZSB2c3R1cCBkbyBtaWVzdG5vc3RpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNyIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfY2xpY2tfdGV4dF9oZWxwIj4KKyAgICA8dmFsdWU+QWsgbcOhdGUgcHJvYmzDqW0gcyBvZGthem9tLCBwcm9zw61tIHNrb3DDrXJ1anRlIGhvIHByaWFtbyBkbyBwcmVobGlhZGHEjWE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyOCIgbmFtZT0iYnRuX3NlYXJjaF9pbnRlcm4iPgorICAgIDx2YWx1ZT5IbGFkYcWlIHZuw7p0b3JuZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjkiIG5hbWU9ImJ0bl9zZWFyY2hfZXh0ZXJuIj4KKyAgICA8dmFsdWU+UHJpZGHFpSBleHRlcm7DvTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzAiIG5hbWU9ImxibF9wcmVuYW1lIj4KKyAgICA8dmFsdWU+TWVubzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzEiIG5hbWU9ImxibF9uYW1lIj4KKyAgICA8dmFsdWU+UHJpZXp2aXNrbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzIiIG5hbWU9ImxibF9lbWFpbCI+CisgICAgPHZhbHVlPkVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzMyIgbmFtZT0ibG9nb3V0Q29uZmlybV90aXRsZSI+CisgICAgPHZhbHVlPlBvdHZyZGnFpSBvZGhsw6FzZW5pZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzQiIG5hbWU9ImxvZ291dENvbmZpcm1fc3VyZV90b19sb2dvdXRfcXVlc3Rpb24iPgorICAgIDx2YWx1ZT5DaGNldGUgbmFvemFqIG9kw61zxaU/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNSIgbmFtZT0ibWFpbiBtZW51Ij4KKyAgICA8dmFsdWU+QWtjaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM2IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RGVtbyBtaWVzdG5vc8WlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNyIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkRlbW8gxI1hczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzgiIG5hbWU9Im1lZXRpbmcgVGltZXIiPgorICAgIDx2YWx1ZT7EjGFzb3ZhxI0gc3RyZXRudXRpYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzkiIG5hbWU9Im1lZXRpbmcgVGltZXIiPgorICAgIDx2YWx1ZT5UaGlzIHJvb20gaXMgYSBkZW1vIHJvb20uIFlvdSB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgbG9nZ2VkIG9mZiBpbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQwIiBuYW1lPSJtZWV0aW5nIHJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5Nb2Rlcm92YW7DqTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDEiIG5hbWU9Im1vZGVyYXRlZCByb29tIHdhaXRpbmcgbWVzc2FnZSI+CisgICAgPHZhbHVlPlByb3PDrW0gcG/EjWthanRlIG5hIHZzdHVwIG1vZGVyw6F0b3JhIGRvIG1pZXN0bm9zdGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQyIiBuYW1lPSJlcnJvciBwb3B1cCI+CisgICAgPHZhbHVlPk9LPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MyIgbmFtZT0id2luZG93IHNjcmVlbnNoYXJpbmciPgorICAgIDx2YWx1ZT5QcmljaMOhZHphasO6Y2UgemRpZcS+YW5pZSBwbG9jaHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ0IiBuYW1lPSJ3aW5kb3cgc2NyZWVuIHNoYXJpbmciPgorICAgIDx2YWx1ZT5QcmljaMOhZHphIG5vdsOpIHpkaWXEvmFuaWUgcGxvY2h5IG9kIHRvaHRvIHBvdcW+w612YXRlxL5hOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDUiIG5hbWU9IndpbmRvdyBzY3JlZW4gc2hhcmluZyI+CisgICAgPHZhbHVlPlphxI1hxaUgemRpZcS+YW5pZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDYiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+UHJpZGHFpSBub3bDqSBzdHJldG51dGllPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0NyIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5NaWVzdG5vc8WlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0OCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5NaWVzdG5vc8WlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0OSIgbmFtZT0ibWFpbiBtZW51IG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Nb2RlcsOhY2lhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1MCIgbmFtZT0ibWVudSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+TW9kZXJvdmHFpSBwb3XFvsOtdmF0ZcS+b3Y8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUxIiBuYW1lPSJtZW51IG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Nb2Rlcm92YcWlIG1pZXN0bm9zdGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUyIiBuYW1lPSJtb2RlcmF0b3Igb3JnIj4KKyAgICA8dmFsdWU+TTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTMiIG5hbWU9ImNvbmZpcm0gbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkNoY2V0ZSBhYnkgc2EgdGVudG8gcG91xb7DrXZhdGXEviBzdGFsIG1vZGVyw6F0b3JvbSBzcG9sb8SNbm9zdGk/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1NCIgbmFtZT0iZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPlByb3PDrW0genZvxL50ZSBzcG9sb8SNbm9zxaUgcHJlZCBwcmlkYW7DrW0gcG91xb7DrXZhdGXEvmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU1IiBuYW1lPSJjaG9vc2UgdXNlciB3aW5kb3ciPgorICAgIDx2YWx1ZT5TcG9sb8SNbm9zxaUgLSBtb2RlcsOhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1NiIgbmFtZT0ibW9kZXJhdG9yIG9yZyB1c2VycyI+CisgICAgPHZhbHVlPkNoY2V0ZSBuYW96YWogdnltYXphxaUgdG9odG8gcG91xb7DrXZhdGXEvmEgem8gc3BvbG/EjW5vc3RpPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTciIG5hbWU9Im9yZyBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+VGVudG8gcG91xb7DrXZhdGXEviBqZSBtb2RlcsOhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1OCIgbmFtZT0ib3JnIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5UZW50byBwb3XFvsOtdmF0ZcS+IG5pZSBqZSBtb2RlcsOhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1OSIgbmFtZT0iZXJyb3IgbWVzc2FnZSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+Q2hjZXRlIGFieSB0ZW50byBwb3XFvsOtdmF0ZcS+IGJvbCBtb2RlcsOhdG9yb20gdGVqdG8gc3BvbG/EjW5vc3RpPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjAiIG5hbWU9Im1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5QcmlkYcWlIGFsZWJvIHptYXphxaUgcG91xb7DrXZhdGXEvm92L21pZXN0bm9zdGkgem8gc3BvbG/EjW5vc3RpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MSIgbmFtZT0iZGVsZXRlIGNvbmZpcm0gcXVlc3Rpb24iPgorICAgIDx2YWx1ZT5DaGNldGUgbmFvemFqIHptYXphxaUgdMO6dG8gbmFocsOhdmt1PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjIiIG5hbWU9ImRlbGV0ZSBjb25maXJtIHF1ZXN0aW9uIHVzZXIgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkNoY2V0ZSBuYW96YWogem1hemHFpSB0b2h0byBwb3XFvsOtdmF0ZcS+YSB6IHZhxaFlaiBzcG9sb8SNbm9zdGk/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MyIgbmFtZT0iZXJyb3IgbWVzc2FnZSBzZWxmIGRlbGV0aW5nIj4KKyAgICA8dmFsdWU+TmVtw7TFvnRlIHptYXphxaUgdmxhc3Ruw6lobyBwb3XFvsOtdmF0ZcS+YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjQiIG5hbWU9ImVycm9yIG1lc3NhZ2UgYXV0aCI+CisgICAgPHZhbHVlPlTDoXRvIG1ldMOzZGEgcG90cmVidWplIGFkbWluaXN0csOhdG9yc2vDvSBwcsOtc3R1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjUiIG5hbWU9ImVycm9yIG1lc3NhZ2UgU09BUCI+CisgICAgPHZhbHVlPk5pZSBqZSDFvmlhZG5lIHN0cmV0bnV0aWUgc3BvamVuw6kgcyB0w71tdG8gSUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY2IiBuYW1lPSJlcnJvciBtZXNzYWdlIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Ub3RvIGplIGFkbWluaXN0csOhdG9yc2t5L21vZGVyw6F0b3Jza3kgw7rEjWV0LiBNw7TFvnRlIHptZW5pxaUgdGVudG8gw7rEjWV0IGNleiBhZG1pbmlzdHJhxI1uw70gcGFuZWwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NyIgbmFtZT0iZW1haWwgdmVyaWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+UHJlIGRva29uxI1lbmllIHJlZ2lzdHLDoWNpZSBrbGlrbml0ZSBuYSBuYXNsZWR1asO6Y2kgb2RrYXo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY4IiBuYW1lPSJlbWFpbCB2ZXJpZmljYXRpb24iPgorICAgIDx2YWx1ZT5LbGlrbml0ZSBwcmUgb3ZlcmVuaWUgdsOhxaFobyBlbWFpbHU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY5IiBuYW1lPSJlcnJvck1lc3NhZ2VfVXNlckFjdGl2YXRpb25TZXJ2bGV0IFtBY3RpdmF0ZVVzZXJdIj4KKyAgICA8dmFsdWU+xb1pYWRueSBwb3XFvsOtdmF0ZcS+IHNhIG5lbmHFoWllbCBwcmUgdGVudG8gaGFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzAiIG5hbWU9ImVycm9yTWVzc2FnZV9Vc2VyQWN0aXZhdGlvblNlcnZsZXQgW0FjdGl2YXRlVXNlcl0iPgorICAgIDx2YWx1ZT5UZW50byBwb3XFvsOtdmF0ZcS+IGplIHXFviBha3Rpdm92YW7DvTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzEiIG5hbWU9ImVycm9yTWVzc2FnZV9Vc2VyQWN0aXZhdGlvblNlcnZsZXQgW0FjdGl2YXRlVXNlcl0iPgorICAgIDx2YWx1ZT7DmnNwZcWhbmUgc3RlIGFrdGl2b3ZhbGkgc3ZvaiDDusSNZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjcyIiBuYW1lPSJlcnJvck1lc3NhZ2VfVXNlckFjdGl2YXRpb25TZXJ2bGV0IFtBY3RpdmF0ZVVzZXJdIj4KKyAgICA8dmFsdWU+UHJpaGzDoXNpxaUgc2EgdGVyYXo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjczIiBuYW1lPSJsb2dpbkVycm9yTWVzc2FnZSA9IHVzZXIgd2FzIG5vdCBhY3RpdmF0ZWQiPgorICAgIDx2YWx1ZT5Zb3VyIGFjY291bnQgaXMgbm90IGFjdGl2YXRlZC4gUGxlYXNlIHVzZSB0aGUgbGluayBpbiB0aGUgZW1haWwgeW91IHJlY2VpdmVkIGR1cmluZyByZWdpc3RyYXRpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3NCIgbmFtZT0icmVnaXN0ZXIgdmVyaWZpY2F0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Zb3UgaGF2ZSBzdWNjZXNzZnVsbHkgc2lnbmVkIHVwLiBBbiBlbWFpbCB3aXRoIGEgdmVyaWZpY2F0aW9uIGNvZGUgd2lsbCBiZSBzZW50IHRvIHlvdXIgbWFpbGJveC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc1IiBuYW1lPSJwYXJ0aWNpcGFudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5PZG9icmHFpSBtb2Rlcm92YW5pZSB0b211dG8gcG91xb7DrXZhdGXEvm92aTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzYiIG5hbWU9InBhcnRpY2lwYW50cyBwYW5lbCI+CisgICAgPHZhbHVlPlVkZWxpxaUgcHLDoXZvIG1vZGVyb3ZhxaUgdG9tdXRvIHBvdcW+w612YXRlxL5vdmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc3IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Qb3XFvsOtdmF0ZcS+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3OCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+UHLDrXN0dXAgayB0YWJ1bGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc5IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Nb2RlcsOhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+UHJvc8OtbSB2eWJlcnRlIHBvdcW+w612YXRlxL5hIHpvIHpvem5hbXUgcHJlIHVkZWxlbmllIHByw6F2YSBtb2Rlcm92YcWlLyBtYcWlIHByw61zdHVwIGsgdGFidWxpIGFsZWJvIHZpZGVhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+VGVudG8gcG91xb7DrXZhdGXEviB1xb4gamUgbW9kZXLDoXRvcm9tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MiIgbmFtZT0iZXZlbnQgdXNlciBsaXN0IGVycm9yIj4KKyAgICA8dmFsdWU+TmVtw7TFvnRlIHNlYmEgemJhdmnFpSBwcsOhdmEgbW9kZXJvdmHFpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODMiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlBvdm9sacWlIHRvbXV0byBwb3XFvsOtdmF0ZcS+b3ZpIHB1Ymxpa292YcWlIGF1ZGlvL3ZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4NCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+T2RvYnJhxaUgYXVkaW8vdmlkZW8gcG91xb7DrXZhdGXEvm92aTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODUiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPk3DoW0gb3TDoXprdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODYiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkNoY2VtIGtyZXNsacWlIG5hIHRhYnXEvnU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg3IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5DaGNlbSB6ZGllxL5hxaUgc3ZvamUgYXVkaW8vdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg4IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5TdGUgbW9kZXLDoXRvcm9tIHRlanRvIG1pZXN0bm90aTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODkiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPk3DoXRlIHByw6F2byBrcmVzbGnFpSBuYSB0YWJ1xL51PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5MCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+TcOhdGUgcHLDoXZvIHpkaWXEvmHFpSBzdm9qZSBhdWRpby92aWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTEiIG5hbWU9ImVycm9ydHlwZSI+CisgICAgPHZhbHVlPlNwcsOhdmEgbW9kZXLDoXRvcm92aTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTIiIG5hbWU9ImFwcGx5IGZvciBtb2QgbWVzc2FnZSI+CisgICAgPHZhbHVlPlBvdcW+w612YXRlxL48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkzIiBuYW1lPSJhcHBseSBmb3IgbW9kIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5zYSBjaGNlIHNww710YcWlIG90w6F6a3U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk0IiBuYW1lPSJhcHBseSBmb3Igd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPmNoY2UgcMOtc2HFpSBuYSB0YWJ1xL51PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5NSIgbmFtZT0iNjk1Ij4KKyAgICA8dmFsdWU+Y2hjZSB6ZGllxL5hxaUgc3ZvamUgYXVkaW8vdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk2IiBuYW1lPSJtb2RlcmF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5NdXPDrXRlIHBvxI1rYcWlIHBva2lhxL4gbW9kZXLDoXRvciB2c3TDunBpIGRvIG1pZXN0bm9zdGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk3IiBuYW1lPSJjYWxlbmRhciBidXR0b24iPgorICAgIDx2YWx1ZT5acnXFoWnFpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTgiIG5hbWU9ImNhbGVuZGFyIGJ1dHRvbiI+CisgICAgPHZhbHVlPlVsb8W+acWlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5OSIgbmFtZT0iY2FsZW5kYXIgY29tcG9uZW50Ij4KKyAgICA8dmFsdWU+RGXFiDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDAiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPk1lc2lhYzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDEiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPlJvazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDIiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5OYWhyYcWlIHPDumJvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDMiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5QcmlkYcWlIHPDumJvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDQiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5PYm5vdmnFpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDUiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Lw7TFoTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDYiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Nb2plIHPDumJvcnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA3IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+U8O6Ym9yeSB2IG1pZXN0bm9zdGkodmVyZWpuw6kpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwOCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlByaWRhxaUgc8O6Ym9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwOSIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlByaWRhxaUgemxvxb5rdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTAiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5abWF6YcWlIHpsb8W+a3U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzExIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+Wm1lbmnFpSBtZW5vPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPk5vdsO9IHByaWXEjWlub2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzEzIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+TmFvemFqIGNoY2V0ZSB6bWF6YcWlIHTDunRvIHBvbG/Fvmt1PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTQiIG5hbWU9InVzZXIgYWRtaW4iPgorICAgIDx2YWx1ZT5IxL5hZGHFpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTUiIG5hbWU9InVzZXIgYWRtaW4iPgorICAgIDx2YWx1ZT5IxL5hZGHFpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTYiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5PdHZvcmnFpSBkb2t1bWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTciIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5ab2JyYXppxaUgdsWhZXRreSBzw7pib3J5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxOCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlphdHZvcmnFpSBkb2t1bWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTkiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5abWF6YcWlIHPDumJvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjAiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5OZW3DoXRlIHByw6F2byBwb3XFvsOtdmHFpSB0YWJ1xL51PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyMSIgbmFtZT0icHJvcGVydHkgcGFuZWwiPgorICAgIDx2YWx1ZT5WbGFzdG5vc3RpIGRva3VtZW50dTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjIiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPlphxI1hxaUgSmF2YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjMiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPlphxI1hxaUgRmxhc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI0IiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5Qb3XFvsOtdmF0ZcS+IGNoY2UgemRpZcS+YcWlIHN2b2p1IHBsb2NodS4gWm9icmF6acWlPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjUiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPlByw6F2ZSB6ZGllxL5hdGUgc3ZvanUgcGxvY2h1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNiIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+WmRpZcS+YW5pZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjciIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPlXFviB6ZGllxL5hdGUgc3ZvanUgcGxvY2h1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyOCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5QcmVobGlhZGHEjSBwbG9jaHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI5IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlphc3RhdmnFpSB6ZGllxL5hbmllPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5aZGllxL5hxI0gcGxvY2h5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5LbGlrbml0ZSDFoHRhcnQgcHJlIHpkaWXEvmFuaWUgcGxvY2h5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5aYcSNYcWlIHpkaWXEvmFuaWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMzIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlBhdXphPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5WeWJlcnRlIHBsb2NodSB6ZGllxL5hbmlhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzUiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+Wm1lbmnFpSDFocOtcmt1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5aZGllxL5hxI0gdWtvbsSNaWwgc3RyZXRudXRpZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzciIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+Wm1lbmnFpSB2w73FoWt1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczOCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5YPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczOSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5ZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0MCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT7FoMOtcmthOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDEiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+VsO9xaFrYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQyIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlNwb2plbmllIHphdnJldMOpIHNlcnZlcm9tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0MyIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5acnXFoWnFpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDQiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+WmHEjWHFpSBKYXZhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NSIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5BayB6YXZyaWV0ZSB0b3RvIHN0cmV0bnV0aWUsIG5lYnVkZXRlIG3DtGPFpSByZcWhdGFydG92YcWlIHByZWhsaWFkYcSNIHByZSB0b3RvIHN0cmV0bnV0aWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ2IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPlBvdHZyZGnFpSB6YXZyZXRpZSBva25hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NyIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5aZGllxL5hxaUgcGxvY2h1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0OCIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5uYWhyYcWlIHN0cmV0bnV0aWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ5IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+U3BvbHUgcHJlaGxpYWRhbmllPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MCIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPlByb3PDrW0gcG91xb5pdGUgSW50ZXJuZXQgRXhwbG9yZXIgcHJlIFdpbmRvd3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUxIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+UHJlZGNow6FkemFqw7pjZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTIiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT7EjmFsxaFpZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTMiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5PYm5vdmnFpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTQiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5Eb21vdjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTUiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5OYcSNw610YcWlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1NiIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPlByaWRhxaUgdMO6dG8gc3Ryw6Fua3UgYWtvIGRvbW92c2vDuiB2IG1vam9tIHByb2ZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU3IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+VGVzdG92YcWlIG5hc3RhdmVuaWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU4IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+T3Rlc3RvdmHFpSBhdWRpbyBhbGVibyB2aWRlbyBuYXN0YXZlbmllIHByZWQgdnN0dXBvbSBkbyBtaWVzdG5vc3RpIG3DtMW+dGUgbmFocmF0w61tIHN0cmV0bnV0aWEgbmEgcMOhciBzZWvDum5kLiBNw7TFvnRlIHNpIHBvdG9tIHByZWhyYcWlIG5haHLDoXZrdSBhIHNrb250cm9sb3ZhxaUgc3ZvamUgYXVkaW8vdmlkZW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1OSIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlRlbnRvIHRlc3QgbmV6b2JyYXpvdmHFpSB2aWFjPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlpydcWhacWlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MSIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlphxI1hxaUgc3RyZXRudXRpZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjIiIG5hbWU9ImVkaXQgdmlkZW8gc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5OZXDDvXRhxaUgc2Egem5vdmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYzIiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+UkVDPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlBMQVk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY1IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+TcO0xb50ZSBwcmVqc8WlIGJleiB0ZXN0b3ZhbmlhIGFrIG5lcGzDoW51amV0ZSB6dmVyZWpuacWlIHN2b2plIGF1ZGlvL3ZpZGVvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjYiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5TVE9QPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NyIgbmFtZT0iNzY3Ij4KKyAgICA8dmFsdWU+TGV2ZWwtbWV0ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY4IiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+U3RsYcSNdGUgxaF0YXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2OSIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPlphxI1hxaUga29uZmVyZW5jaXU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzcwIiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+WmHEjWHFpSBrb25mZXJlbmNpdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzEiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5WeWJyYcWlIG1pZXN0bm9zxaU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzcyIiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+U2tvbnRyb2xvdmHFpSBuYXN0YXZlbmllPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MyIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPlphxI1hxaUga29uZmVyZW5jaXU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc0IiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+QWtvIGtvbmZlcmVuY292YcWlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzUiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5aYcSNYcWlIG5haHLDoXZhbmllPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NiIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPk5lem9icmF6b3ZhxaUgdWRpby92aWRlbyB0ZXN0IHByZWQgdnN0dXBvbSBkbyBtaWVzdG5vc3RpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NyIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPlZlcmVqbsOpIG1pZXN0bm9zdGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc4IiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+VmVyZWpuw6kgbWllc3Rub3N0aSBzw7ogcHLDrXN0dXBuw6kgcHJlIHbFoWV0a8O9Y2ggcG91xb7DrXZhdGXEvm92PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3OSIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPlPDumtyb21uw6kgbWllc3Rub3N0aTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODAiIG5hbWU9IlByaXZhdGUgUm9vbXMiPgorICAgIDx2YWx1ZT5Tw7prcm9tbsOpIG1pZXN0bm9zdGkgc8O6IHByw61zdHVwbsOpIGxlbiBwciBwb3XFvsOtdmF0ZcS+b3YgdXLEjWl0ZWogc3BvbG/EjW5vc3RpLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODEiIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT5Nb2plIG1pZXN0bm9zdGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgyIiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+Um9vbXMgaW4gdGhpcyBzZWN0aW9uIGFyZSBjcmVhdGVkIGZvciBwZXJzb25hbCB1c2FnZS4gVGhlcmUgYXJlIHNvbWUgc3RhbmRhcmQgcm9vbXMgcGx1cyB0aGUgb25lcyB0aGF0IGFyZSBjcmVhdGVkIHRocm91Z2ggdGhlIGNhbGVuZGFyIGFuZCBoYXZlIGEgc3RhcnQgYW5kIGFuIGVuZCBkYXRlLiBUaGUgcm9vbXMgY3JlYXRlZCB2aWEgdGhlIGNhbGVuZGFyIGFyZSBvbmx5IGxpc3RlZCBpbiB0aGlzIHNlY3Rpb24gYXMgbG9uZyBhcyB0aGV5IGFyZSB2YWxpZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgzIiBuYW1lPSJyZXN0cmljdGVkIHJvb20iPgorICAgIDx2YWx1ZT5NdXPDrXRlIGJ5xaUgbW9kZXLDoXRvcm9tIHByZSB2eWtvbmFuaWUgdG9odG8gw7prb251PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NCIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT5Qb8W+aWFkYcWlIG8gbW9kZXLDoWNpdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODUiIG5hbWU9Im1lbnUgb3B0aW9uIj4KKyAgICA8dmFsdWU+UG/FvmlhZGHFpSBvIHByw61zdHVwIGsgdGFidWxpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NiIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT5Qb8W+aWFkYcWlIG8gYXVkaW8vdmlkZW8gcHLDrXN0dXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg3IiBuYW1lPSJlcnJvciBtZXNzYWdlIHNvYXAgc2VjdXJlIGxvZ2luIj4KKyAgICA8dmFsdWU+SGFzaCB0ZWp0byBtaWVzdG5vc3RpIHXFviBib2wgcG91xb5pdMO9PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4OCIgbmFtZT0iZGFzaGJvYXJkIGJ1dHRvbiI+CisgICAgPHZhbHVlPsWgVEFSVDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODkiIG5hbWU9ImV4aXQgY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPlbDnUNIT0Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkwIiBuYW1lPSJjb25mZXJlbmNlIHZpZXciPgorICAgIDx2YWx1ZT5DaGNldGUgbmFvemFqIG9kw61zxaU/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5MSIgbmFtZT0iY29uZmVyZW5jZSB2aWV3Ij4KKyAgICA8dmFsdWU+VsO9Y2hvZCB6IGtvbmZlcmVuY2llPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5MiIgbmFtZT0ibWFpbiBtZW51Ij4KKyAgICA8dmFsdWU+TWllc3Rub3N0aTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTMiIG5hbWU9Im1haW4gbWVudSI+CisgICAgPHZhbHVlPlZ5YnJhxaUgbWllc3Rub3PFpSBwcmUgc3RyZXRudXRpZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTQiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgYW4gdW5zYXZlZCBldmVudCBpbiB0aGUgQ2FsZW5kYXIuIFBsZWFzZSBzYXZlIGl0IG9yIHJlbW92ZSBpdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk1IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPlBsZWFzZSBhZGQgYXQgbGVhc3Qgb25lIGF0dGVuZGVlIGZvciB5b3VyIG1lZXRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk2IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBldmVudD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk3IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPldhcm5pbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk4IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkFkZCBldmVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTkiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RGF5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5XZWVrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Nb250aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDIiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RGVzY3JpcHRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAzIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkF0dGVuZGVlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPkNsaWNram9iZmFpciwgeW91ciB3ZWIgY29uZmVyZW5jaW5nIHBsYXRmb3JtLiBZb3UgY2FuIGVpdGhlciBmb2xsb3cgdGhlIDEtMi0zIHN0ZXBzIHRvIGVudGVyIGEgY29uZmVyZW5jZSByb29tIGRpcmVjdGx5IG9yIHlvdSBjaG9vc2UgdGhlIENhbGVuZGFyIHRvIHNldCB1cCBhIG1lZXRpbmcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNSIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+UGxhbiBhIG1lZXRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA2IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VG8gc2V0dXAgYSBjb25mZXJlbmNlIHlvdSBjYW4gYWRkIGEgbmV3IGV2ZW50IGluIHRoZSBjYWxlbmRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDciIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5OZWVkIGhlbHA/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwOCIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlJlc3RyaWN0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA5IiBuYW1lPSJsemNhbGVuZGVyIj4KKyAgICA8dmFsdWU+U2VhcmNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMCIgbmFtZT0ibHpjYWxlbmRlciI+CisgICAgPHZhbHVlPkFkZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTEiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyB1c2VyIHNlbGVjdGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMiIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPkFkZCBBdHRlbmRlZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTMiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5TYXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxNCIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPkRlbGV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTUiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5FdmVudCBkZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkRlZmF1bHQgbW9kZXJhdG9yczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5TdXBlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTgiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTkiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyMCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyMSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkFkZCBuZXcgZGVmYXVsdCBtb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIyIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+SXMgc3VwZXIgbW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyMyIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPklmIHRoZSByb29tIGlzIG1vZGVyYXRlZCwgYW55IHVzZXJzIHdpdGggYSBtb2RlcmF0b3Igb3IgYWRtaW5pc3RyYXRvciBsZXZlbCBhY2Nlc3MgYXJlIGF1dG9tYXRpY2FsbHkgc2V0IHRvIG1vZGVyYXRvciB3aGVuIHRoZXkgZW50ZXIgdGhlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI0IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+QSBzdXBlciBtb2RlcmF0b3IgaXMgYWx3YXlzIGEgbW9kZXJhdG9yIHdoZW4gdGhleSBlbnRlciBhIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI1IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+TWFrZSB1c2VyIGEgc3VwZXIgbW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPlJlbW92ZSBzdXBlciBtb2RlcmF0b3IgZnJvbSB1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNyIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI4IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+SWYgeW91IGFkZCBhbiBvcmdhbmlzYXRpb24gdG8gdGhlIHJvb20gb25seSB1c2VycyBvZiB0aGF0IG9yZ2FuaXNhdGlvbiBoYXZlIGFjY2VzcyB0byBpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjkiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5Nb2RlcmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzMCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkxpbWl0YXRpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzMSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPk9yZ2FuaXNhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzIiIG5hbWU9ImNvbmZpcm0gYWN0aW9uIj4KKyAgICA8dmFsdWU+U3RlIHNpIGlzdMO9PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzMiIG5hbWU9ImNvbmZpcm0gZGVsZXRlIj4KKyAgICA8dmFsdWU+TmFvemFqIGNoY2V0ZSB6bWF6YcWlIHTDunRvIHBvbG/Fvmt1PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzQiIG5hbWU9InVzZXIgY2hvb3NlIGVycm9yIj4KKyAgICA8dmFsdWU+TmllIGplIMW+aWFkbnkgcG91xb7DrXZhdGXEviBvem5hxI1lbsO9PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPlByaWRhxaUgbm92w6lobyBtb2RlcsOhdG9yYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzYiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EbyB5b3Ugd2FudCB0byBhZGQgdGhlIHN1cGVyIG1vZGVyYXRpb24gZmxhZyBmb3IgdGhpcyB1c2VyPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EbyB5b3Ugd2FudCB0byByZW1vdmUgdGhlIHN1cGVyIG1vZGVyYXRpb24gZmxhZyBmb3IgdGhpcyB1c2VyPyBZb3UgbmVlZCB0byBzYXZlIHRoZSByb29tIG9iamVjdCB0byBzYXZlIHRoZXNlIHNldHRpbmdzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzgiIG5hbWU9InN1cGVyIG1vZGVyYXRvciI+CisgICAgPHZhbHVlPlRoaXMgdXNlciBpcyBhIHN1cGVyIG1vZGVyYXRvci4gWW91IGNhbm5vdCByZW1vdmUgdGhlIG1vZGVyYXRpb24gZmxhZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM5IiBuYW1lPSJjb25maXJtIGRlbGV0ZSI+CisgICAgPHZhbHVlPkNoY2V0ZSBuYW96YWogdnltYXphxaU/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0MCIgbmFtZT0iY29uZmlybSBkZWxldGUiPgorICAgIDx2YWx1ZT5WeW1hemHFpT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQxIiBuYW1lPSJzYWx1dGF0aW9uIj4KKyAgICA8dmFsdWU+UGFuaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDIiIG5hbWU9InNhbHV0YXRpb24iPgorICAgIDx2YWx1ZT5EcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDMiIG5hbWU9InByb3BlcnR5IHBhbmVsIHdoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5WbGFzdG5vc3RpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NCIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPlpvYnJhemnFpSBwb3rDrWNpdSBrdXJ6b3JhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NSIgbmFtZT0icHVibGlzaCBvcHRpb24iPgorICAgIDx2YWx1ZT5aZGllxL5hxaUgYXVkaW8gY2V6IFNJUCBhcHBsZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ2IiBuYW1lPSJwdWJsaXNoIG9wdGlvbiI+CisgICAgPHZhbHVlPlpkaWXEvmHFpSBhdWRpbyBjZXogU0lQIGEgdmlkZW8gY2V6IEZsYXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NyIgbmFtZT0iZG9jdW1lbnQgcGFuZWwiPgorICAgIDx2YWx1ZT5OYXBhc292YW5pZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDgiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlZpZGllxaUgcGxvY2h1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0OSIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+UG91xb7DrXZhdGXEvjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTAiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPmNoY2UgemRpZcS+YcWlIHN2b2p1IHBsb2NodS4gWm9icmF6acWlPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTEiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlphdnJpZcWlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MiIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPlpvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUzIiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+U3RyZXRudXRpZSBib2xvIHphdnJldMOpIHpkaWXEvmFqw7pjaW0gcG91xb7DrXZhdGXEvm9tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1NCIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPlBhdXphPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1NSIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPk5vdsOpIHpkaWXEvmFuaWUgcGxvY2h5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1NiIgbmFtZT0icHJlc2VudGVyIG1pbmkgaWNvbiI+CisgICAgPHZhbHVlPk1pbmltYWxpem92YcWlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1NyIgbmFtZT0icHJlc2VudGVyIG1pbmkgaWNvbiI+CisgICAgPHZhbHVlPk1heGltYWxpem92YcWlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1OCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+VmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU5IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5OYWhyw6F2YWNpYSDEjWFzb3bDoSBvczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjAiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk1vamUgbmFocsOhdmt5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+VmVyZWpuw6kgbmFocsOhdmt5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+SW5mbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjMiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk1lbm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY0IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5ExLrFvmthPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RMOhdHVtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+U3RpYWhudcWlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2OCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+SGxhdm7DqSAtIHZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2OSIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+TmFocsOhdmFuaWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcwIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Nw7TFvnRlIHpkaWXEvmHFpSBhIG5haHLDoXZhxaUgc3ZvanUgcGxvY2h1IHPDusSNYXNuZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcxIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5aYcSNYcWlIG5haHLDoXZhbmllPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3MiIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+VWtvbsSNacWlIG5haHLDoXZhbmllPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3MyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+U3RpYWhudcWlIEZMVi1zw7pib3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc0IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5NaWVzdG5vc8WlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3NSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UHJlaHJhxaU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TdG9wPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3NyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UG91xb7DrXZhdGXEviBtw6EgemFwbnV0w70gbWlrcm9mw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3OCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5Va29uxI1pxaUgemRpZcS+YW5pZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzkiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+UG92b2xpxaUgcG91xb7DrXZhdGXEvm92aSBvdMOhemt5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MCIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5WeXBuw7rFpSAtIGFieSB2w6FzIHBvdcW+w612YXRlbGlhIG5ldnlydcWhb3ZhbGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgxIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPlByw6F2YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODIiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlN0aWFobnXFpSBha28gQVZJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RkxWPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QVZJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+WsOha2xhZG7DoSB2aWRlb3Bsb2NoYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODYiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkF1ZGlvIGliYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODciIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk5hc3RhbGEgY2h5YmEgcG/EjWFzIG5haHLDoXZhbmlhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4OCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TmFocsOhdmthIG5pZSBqZSBlxaF0ZSBob3RvdsOhIG5hIHByZXplcmFuaWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg5IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5aw6FwaXM6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+U3Byw6F2YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTEiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk9LPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MiIgbmFtZT0ic2lwIGFwcGxldCI+CisgICAgPHZhbHVlPlNJUCBhcHBsZXQgbmllIGplIHByaXByYXZlbsO9PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MyIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNJUCBuYXN0YXZlbmlhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NCIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNJUCBuYXN0YXZlbmlhIHByZSBrYcW+ZMOpaG8gcG91xb7DrXZhdGXEvmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk1IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+U0lQIHBvdcW+w612YXRlxL48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk2IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+U0lQIGhlc2xvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NyIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNJUCBhdXRoIElEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5OCIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+UHJpaGzDoXNlbmllIGRvIFNJUCBicsOhbnkgemx5aGFsbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTkiIG5hbWU9InNpcCBzdGF0dXMgbWVzc2FnZSI+CisgICAgPHZhbHVlPlByaWhsw6FzZW5pZSBkbyBTSVAgYnLDoW55IHpseWhhbG8uIEtvbnRha3R1anRlIGFkbWluaXN0csOhdG9yYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDAiIG5hbWU9InNpcCBzdGF0dXMgbWVzc2FnZSI+CisgICAgPHZhbHVlPlByaXDDoWphbmllIG5hIFNJUCBicsOhbnUuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAxIiBuYW1lPSJzaXAgc3RhdHVzIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Qcmlww6FqYW5pZSBuYSBTSVAgYnLDoW51Li4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwMiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+U2hvdyBsb2c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAzIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Mb2cgbWVzc2FnZXMgZnJvbSBwb3N0IHJlY29yZGVyIHByb2Nlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA0IiBuYW1lPSJzaXAgbG9naW4iPgorICAgIDx2YWx1ZT5TSVAgYXBwbGV0IHNwcsOhdmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA1IiBuYW1lPSJzaXAgbG9naW4iPgorICAgIDx2YWx1ZT5TSVAgYXBwbGV0IG5pZSBqZSBwcmlwcmF2ZW7DvS4gUG90dnLEj3RlIGFwcGxldCBhIGtsaWtuaXRlIE9LPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwNiIgbmFtZT0ibW9kZXJhdG9yIHBvcCB1cCI+CisgICAgPHZhbHVlPlrDrXNrYcWlIG1vZGVyw6FjaXU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA3IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VWxvxb5pxaUgem1lbnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA4IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhlIGFwcG9pbnRtZW50IGhhcyBiZWVuIGNoYW5nZWQuIERvIHlvdSB3YW50IHRvIHNhdmUgdGhlc2UgY2hhbmdlcz88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA5IiBuYW1lPSJmbHYgcmVjb3JkZXIgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPlByZSBwcsOtc3R1cCBrIG9zdGF0bsO9bSBuYWhyw6F2a2FtIHNhIHByaWhsw6FzdGUgZG8gJEFQUF9OQU1FIGFwcGxpa8OhY2llPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMCIgbmFtZT0iaW50ZXJ2aWV3IHZpZGVvIHBvZCI+CisgICAgPHZhbHVlPlZ5YnJhxaUgcG91xb7DrXZhdGXEvmEgcHJlIHRvdG8gdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTExIiBuYW1lPSJpbnRlcnZpZXcgdmlkZW8gY2hvb3NlIHVzZXIiPgorICAgIDx2YWx1ZT5Qb3XFvsOtdmF0ZWxpYSBrIGRpc3BvesOtY2nDrTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTIiIG5hbWU9ImludGVydmlldyBpbmZvIj4KKyAgICA8dmFsdWU+U3RlIG1vZGVyw6F0b3JvbSByb3pob3ZvcnUuIFZ5IHJvemhvZHVqZXRlIGt0byBtw7TFvmUgaG92b3JpxaUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMyIgbmFtZT0iaW50ZXJ2aWV3IGJ1dHRvbiByZWNvcmRpbmciPgorICAgIDx2YWx1ZT5aYcSNYcWlIG5haHLDoXZhbmllPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxNCIgbmFtZT0iaW50ZXJ2aWV3IGJ1dHRvbiByZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Va29uxI1pxaUgbmFocsOhdmFuaWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE1IiBuYW1lPSJpbnRlcnZpZXcgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPk5haHLDoXZhbmllIHJvemhvdm9ydSB1xb4gcHJlYmllaGEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxNiIgbmFtZT0iaW50ZXJ2aWV3IGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5OYWhyw6F2YW5pZSBqZSB6YXN0YXZlbsOpIGFsZWJvIGXFoXRlIG5lemHEjWFsby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE3IiBuYW1lPSJpbnRlcnZpZXcgcmVjb3JkaW5nIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5OYWhyw6F2YW5pZSByb3pob3ZvcnUgdcW+IHByZWJpZWhhITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTgiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+WnJ1xaFpxaU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE5IiBuYW1lPSJpbnRlcnZpZXcgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNwcmFjb3ZhbmllIHJvemhvdm9ydSB6YWJlcmllIDUgbWluw7p0IHphIGthxb5kw7ogMSBtaW4gbmFocsOhdmt5LiBTw7rEjWFzbsO9IHN0YXR1cyBzcHJhY292YW5pYSBqZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIwIiBuYW1lPSJzaXAgY3JlYXRpb24iPgorICAgIDx2YWx1ZT5Zb3UgaGF2ZSB0byBlbnRlciB5b3VyIHBhc3N3b3JkIGFnYWluIHRvIGF1dG8gY3JlYXRlIHRoZSBTSVAgRGF0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjEiIG5hbWU9InNpcCBjcmVhdGlvbiI+CisgICAgPHZhbHVlPlJlLWdlbmVyYXRlIFNJUCBEYXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyMiIgbmFtZT0iZmlsZWV4cGxvcmVyIj4KKyAgICA8dmFsdWU+TmVtw7TFvnRlIHByZW1pZXN0bmnFpSBzw7pib3IgZG8gamVobyBwb2Rzw7pib3J1ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjMiIG5hbWU9ImZpbGUgZXhwbG9yZXIgIj4KKyAgICA8dmFsdWU+SG9tZSBkcml2ZSBzaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlB1YmxpYyBkcml2ZSBzaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNSIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPkxpY2Vuc2UgU2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI2IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+WW91IGNhbiBlaXRoZXIgYmluZCB0aGUgdXNlciB0byBhIGV4cGlyZSBEYXRlIG9yIHRvIGEgbWF4aW11bSBudW1iZXIgb2YgbWludXRlcyB3aGVuIHlvdSBlbmFibGUgbGljZW5zaW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjciIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5DaGVjayBsaWNlbnNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyOCIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPkZsYXRyYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyOSIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPkV4cGlyZSBkYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMCIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPlNlY29uZHMgbGVmdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzEiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5Ub3RhbCB0aW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91ciBMaWNlbnNlIGhhcyBleHBpcmVkLiBZb3UgbmVlZCB0byBidXkgbmV3IG1pbnV0ZXMgKFBheS1wZXItbWludXRlKSBvciBhIHZvbHVtZSBmbGF0cmF0ZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMzIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5DbGljayBhbmQgYnV5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzNCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+VGltZSBMZWZ0IG9uIHlvdXIgYWNjb3VudDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM1IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Vc2VyIExpY2Vuc2UgSW5mbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzYiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkluZm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM3IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5DbG9zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzgiIG5hbWU9ImxpY2Vuc2UtaW5mbyI+CisgICAgPHZhbHVlPllvdXIgbGljZW5zZSBoYXMgZXhwaXJlZC4gWW91IG5lZWQgZWl0aGVyIHRvIGJ1eSBhIG1pbnV0ZSBwYWNrYWdlIChQYXktcGVyLW1pbnV0ZSkgb3IgYSB2b2x1bWUgZmxhdHJhdGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzOSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+TGljZW5zZSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDAiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdSBjYW4gZWl0aGVyIGJ1eSBtaW51dGVzIHRvIG1ha2UgV2ViLUNvbmZlcmVuY2luZyAoUGF5LXBlci1taW51dGUpLiZsdDtici8mZ3Q7Jmx0O2JyLyZndDsgT3IgeW91IGJ1eSBhIHZvbHVtZSBmbGF0cmF0ZSBhYm91dCAzLTEyIG1vbnRocy4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7U2VuZGluZyBpbnZpdGF0aW9ucyAoZGlyZWN0IGxpbmtzIGludG8gQ29uZmVyZW5jZSBSb29tcykgb3IgY3JlYXRpbmcgY29uZmVyZW5jZSBSb29tcyB2aWEgdGhlIENhbGVuZGFyIHdpdGggZXh0ZXJuYWwgVXNlcnMgaXMgb25seSBhbGxvd2VkIHdpdGggYSB2b2x1bWUgZmxhdHJhdGUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDYwIE1pbnV0ZXMgOSw5OSBFVVJPICgxNiBDZW50IHBlciBNaW51dGUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDUgaG91cnMgMTksOTkgRVVSTyAoNiBDZW50IHBlciBtaW51dGUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDMgbW9udGggZm9yIDI5LDk5IEVVUk8gKDksOTkgRXVybyBwZXIgTW9udGgpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDYgbW9udGggZm9yIDM5LDk5IEVVUk8gKDYsNjYgRXVybyBwZXIgbW9udGgpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+UGF5LXBlci1taW51dGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ2IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Wb2x1bWUgZmxhdHJhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ3IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3UgaGF2ZSB1bmxpbWl0ZWQgTGljZW5zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDgiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdXIgbGljZW5zZSB3aWxsIGV4cGlyZSBhdDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ5IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3UgYm91Z2h0IFBheS1wZXItbWludXRlLiBZb3Ugc3RpbGwgaGF2ZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUwIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5CdXkgbmV3IGNyZWRpdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUxIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5XYW50IHlvdXIgb3duIFNlcnZlcj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUyIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3Ugd291bGQgbGlrZSB0byBoYXZlICRBUFBfTkFNRSBpbnN0YWxsZWQgb24geW91ciBTZXJ2ZXIgb3IgaW50ZWdyYXRlZCBpbnRvIHlvdXIgTW9vZGxlLCBTdWdhckNSTSwgV2Vic2l0ZSBvciBJbnRyYW5ldD8gUHJpemluZ3Mgc3RhcnQgYXQgNTAwIEV1cm8gcGVyIEluc3RhbGxhdGlvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUzIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5PciBzZW5kIHVzIGEgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTQiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkFuc3dlciB0bzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU1IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5NZXNzYWdlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTYiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlNlbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU3IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5DbGljayBoZXJlIHRvIGdldCBjb250YWN0IEluZm8gYW5kIFByaXppbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1OCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q3JlZGl0IENhcmQgRGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTkiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkZpcnN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjAiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkxhc3RuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2MSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q3JlZGl0IENhcmQgVHlwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjIiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlZJU0EgQ2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjMiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPk1hc3RlckNhcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY0IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5EaXNjb3ZlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjUiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkFtZXJpY2FuIEV4cHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY2IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DcmVkaXQgQ2FyZCBOdW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY3IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5FeHBpcmF0aW9uIERhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY4IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DYXJkIFZlcmlmaWNhdGlvbiBOdW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY5IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5CaWxsaW5nIEFkZHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTcwIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5BZGRyZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q2l0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzMiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNvdW50cnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc0IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdGF0ZSAoT25seSBVUyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc1IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5aSVA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc2IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5BbW91bnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc3IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdWJtaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc4IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdGVwIDE6ICRBUFBfTkFNRSAtIFBheW1lbnQgRm9ybTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzkiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkVNYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q2xpY2sgIkNoZWNrIG91dCB3aXRoIFBheXBhbCIgdG8gcGF5LiZsdDtici8mZ3Q7IFBheXBhbCBhY2NlcHRzIFZJU0EsIE1hc3RlckNhcmQsIERpc2NvdmVyIG9yIEFtZXJpY2FuIEV4cHJlc3MuICZsdDtici8mZ3Q7SXQgZG9lcyBub3QgcmVxdWlyZSB0byBzaWduIHVwIHdpdGggUGF5cGFsLiAmbHQ7YnIvJmd0O0NpdGl6ZW5zIGZyb20gR2VybWFueSBjYW4gYWxzbyBwYXkgd2l0aCBkaXJlY3QgZGViaXQgKFBlciBMYXN0c2NocmlmdC1FaW56dWcpLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODEiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlRoYW5rIHlvdSBmb3IgYnV5aW5nICRBUFBfTkFNRS4gJmx0O2JyLyZndDsgJmx0O2JyLyZndDsgQXMgc29vbiBhcyB3ZSByZWNlaXZlZCB0aGUgcGF5bWVudCB5b3VyIGFjY291bnQgd2lsbCBiZSB1cGRhdGVkLiZsdDtici8mZ3Q7IFlvdSB3aWxsIHJlY2VpdmUgYW4gRU1haWwgd2l0aCB5b3VyIGludm9pY2UgYXMgUERGLiZsdDtici8mZ3Q7WW91IGNhbiBhbHNvIGNoZWNrIGN1cnJlbnQgYW5kIHBhc3QgdHJhbnNhY3Rpb25zIGluIHlvdXIgcHJvZmlsZSBzZXR0aW5ncy4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7Jmx0O2JyLyZndDtZb3UgY2FuIGNsb3NlIHRoaXMgYnJvd3NlciB3aW5kb3cvdGFiIG5vdyBhbmQgcmV0dXJuIHRvICRBUFBfTkFNRS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgyIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdWJtaXQgYW5kIEJ1eSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgzIiBuYW1lPSJwYXltZW50LWZyb20iPgorICAgIDx2YWx1ZT5DbGljayBhbmQgQnV5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODQiIG5hbWU9InBheW1lbnQtZnJvbSI+CisgICAgPHZhbHVlPlN0ZXAgMzogJEFQUF9OQU1FIFBheW1lbnQgLSBDaGVjayBvcmRlciBhbmQgYnV5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODUiIG5hbWU9InBheW1lbnQtZnJvbSI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg2IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5QYXltZW50IHJlY2VpdmVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODciIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPkhpLDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODgiIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPldlIGhhdmUgcmVjZWl2ZWQgeW91ciBwYXltZW50LiBZb3VyIHVzZXIgcHJvZmlsZSBpcyB1cGRhdGVkIG5vdy4gU2VlIGF0dGFjaGVkIHlvdXIgSW52b2ljZS4gVGhlIEludm9pY2UgYW5kIGFsbCBwYXN0IEludm9pY2UgY2FuIGFsc28gYmUgZG93bmxvYWRlZCBpbiB5b3VyIHVzZXIgcHJvZmlsZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg5IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5UaGFuayB5b3UgZm9yIHVzaW5nICRBUFBfTkFNRSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkwIiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5QYXltZW50IFJlY2VpdmVkICRBUFBfTkFNRSAtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MSIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPlBheW1lbnQgYW5kIFRyYW5zYWN0aW9uIFN0YXR1czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTIiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5UcmFuc2NhdGlvbiBIYXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MyIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPk1pbnV0ZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk0IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+TW9udGhzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NSIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPkVVUjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTYiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TdGF0dXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk3IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+SW52b2ljZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTgiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk5IiBuYW1lPSJlcnJvci1saWNlbnNlLWZsYXQiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0byBidXkgYSB2b2x1bWUgZmxhdHJhdGUgdG8gYmUgYWJsZSB0byBzZW5kIGludml0YXRpb25zIG9yIGNyZWF0ZSBtZWV0aW5ncyB2aWEgdGhlIGNhbGVuZGFyLiBXaXRoIFBheS1wZXItbWludXRlIGl0IGlzIG9ubHkgcG9zc2libGUgZm9yIHlvdSB0byBhY2Nlc3MgJEFQUF9OQU1FLiBZb3UgY2Fubm90IGFsbG93IDN0aCBQYXJ0aWVzIHRvIGFjY2VzcyBhIE1lZXRpbmcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDAiIG5hbWU9ImVycm9yIHVzZXIiPgorICAgIDx2YWx1ZT5UaGlzIEVtYWlsIGlzIGFscmVhZHkgdXNlZCBieSBhbm90aGVyIFVzZXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDEiIG5hbWU9InJvb20tYWRtaW4iPgorICAgIDx2YWx1ZT5TSVAtU2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwMiIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlRoZSBDb25mZXJlbmNlIE51bWJlciBhbmQgUElOIGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB2aWEgdGhlIE9wZW5YRyBSUEMtR2F0ZXdheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAzIiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+U0lQIE51bWJlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA0IiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+UElOPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDUiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5abWF6YcWlIHbFoWV0a3kgb2JqZWt0eSBuYSB0b210byBzbGlkZSBpYmEhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDYiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5JYmEgYWRyZXNhIHphZGFuw6EgZG8gc3RhdHVzb3bDqWhvIHJpYWRrdSBzYSB6b2JyYXp1amUgw7rEjWFzdG7DrWtvbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlNwcmF2acWlIHTDrW1vdsOpIG1pZXN0bm9zdGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlZ5YnJhxaUgcG91xb7DrXZhdGXEvm92IHByZSB0w61tb3bDqSBtaWVzdG5vc3RpITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TcO0xb50ZSB2eWJyYcWlIHBvdcW+w612YXRlxL5vdiB0dSBhIHZ5dHZvcmnFpSBtaWVzdG5vc3RpIHByZSBuaWNoLiBWeWJyYW7DrSBwb3XFvsOtdmF0ZWxpYSBidWTDuiBhdXRvbWF0aWNreSBwcmVyYWRlbsOtIGRvIG5pY2guPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5NZW5vPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5QcmlobMOhc2VuaWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+UG91xb7DrXZhdGVsaWEgcHJlIG5vdsO6IHTDrW1vdsO6IG1pZXN0bm9zxaU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5WeXR2b3JpxaUgdMOtbW92w7ogbWllc3Rub3PFpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+WnJ1xaFpxaU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlZ5YmVydGUgYXNwb8WIIDEgcG91xb7DrXZhdGXEvmEgcHJlIHTDrW1vdsO6IG1pZXN0bm9zxaUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5QcmlkYcWlIHBvdcW+w612YXRlxL5hIHByZSB0w61tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5PZHN0csOhbmnFpSBwb3XFvsOtdmF0ZcS+YSB6IHTDrW1vdmVqIG1pZXN0bm9zdGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXIgaXMgVGVhbS1Sb29tIE1vZGVyYXRvciAoSGUgaXMgYWJsZSB0byBtYW5hZ2UgVGVhbS1Sb29tcyBhbmQgdXNlcnMgb2YgdGhlIFRlYW0tUm9vbSBjYW4gYXNrIGhpbSB0byBjb21lIGluc2lkZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlR5cCBtaWVzdG5vc3RpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5JZiB5b3UgY2hlY2sgIkZvcmNlIHVzZXIgdG8gc3dpdGNoIHRvIG5ldyBUZWFtLVJvb20iIGFsbCBjaG9zZW4gdXNlcnMgd2lsbCBhdXRvbWF0aWNhbGx5IHN3aXRjaCB0byB0aGUgbmV3bHkgY3JlYXRlZCBUZWFtLVJvb20uIE90aGVyd2lzZSB0aGV5IGdldCBhIG5vdGlmaWNhdGlvbiB3aXRoIGEgYnV0dG9uIHRoYXQgdGhleSAmbHQ7aSZndDtjYW4mbHQ7L2kmZ3Q7IHN3aXRjaCB0byB0aGUgbmV3IHJvb20uIFRlYW0tTW9kZXJhdG9ycyBhbHdheXMgaGF2ZSB0aGUgZnJlZSBjaG9pY2UgdG8gbWFuYWdlIHRoZSBUZWFtLVJvb21zIGFuZCBzd2l0Y2ggYmV0d2VlbiB0aGVtLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TWFuYWdlIFRlYW0tUm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPllvdSBjYW4gc3dpdGNoIGhlcmUgYmV0d2VlbiBhbGwgVGVhbS1Sb29tcyB0aGF0IHlvdSBhcmUgYXNzaWduZWQgYXMgVGVhbS1Sb29tIE1vZGVyYXRvci4gVXNlcnMgaW5zaWRlIHRoZSBUZWFtLVJvb20gY2FuIHNlbmQgeW91IGEgbWVzc2FnZSwgZm9yIGV4YW1wbGUgdG8gYXNrIHlvdSB0byBjb21lIHRvIHRoZWlyIHJvb20gYW5kIGhlbHAgdGhlbS4gWW91IGNhbiBhbHNvIHRlcm1pbmF0ZSB0aGUgVGVhbS1Sb29tIGFuZCBhbGwgVXNlcnMgd2lsbCBiZSBsb2dnZWQgb3V0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Rm9yY2UgdXNlciB0byBzd2l0Y2ggdG8gbmV3IFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q3JlYXRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJzIGF2YWlsYWJsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+QWRkIGEgdXNlciB3aXRoIHRoZSBwbHVzIGZyb20gdGhlIGxlZnQgb3IgcmVtb3ZlIGl0IHdpdGggdGhlIGNyb3NzIGZyb20gdGhlIHJpZ2h0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MSkgVGVhbS1Sb29tIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4yKSBBZGQgdXNlcnMgdG8gdGhlIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVhbS1Sb29tIE5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2hhbmdlIHRvIHRoZSBSb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Td2l0Y2ggdG8gdGhpcyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlcm1pbmF0ZSBUZWFtLVJvb20gYW5kIGxvZ291dCBhbGwgVXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk5ldyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGEgbmV3IFRlYW0tUm9vbSBhdmFpbGFibGUgZm9yIHlvdS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlN3aXRjaCB0byBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW0tUm9vbSBBY3Rpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGlzIGlzIGEgVGVhbS1Sb29tLCB5b3UgY2FuIHNlbmQgdGhlIFRlYW0tTW9kZXJhdG9yIGEgbWVzc2FnZSBpZiB5b3UgbmVlZCBoZWxwLiBZb3UgY2FuIHJlLW9wZW4gdGhpcyB3aW5kb3cgdmlhIHRoZSBtYWluIG1lbnUgaW4gdGhlICJBY3Rpb25zIiBzZWN0aW9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MSkgU2VuZCBtZXNzYWdlIHRvIFRlYW0tUm9vbSBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk5ldyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGEgbmV3IFRlYW0tUm9vbSBhdmFpbGFibGUuIFlvdSBjYW4gc3dpdGNoIHRvIHRoYXQgUm9vbS4gVGVhbS1Sb29tcyBhcmUgbGlrZSAiV29ya2dyb3VwcyIgd2l0aCBhZGRpdGlvbmFsbHkgcG9zc2liaWxpdGllcyB0byBhc2sgdGhlIFRlYW0tUm9vbSBNb2RlcmF0b3IgZm9yIGhlbHAuIFlvdXIgVGVhbS1Sb29tcyBhcmUgYWxzbyBhdmFpbGFibGUgaW4gdGhlICJNeSBNZWV0aW5ncyIgc2VjdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlN3aXRjaCB0byBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNyZWF0ZWQgYnk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb20gbmFtZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0OSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoaXMgV2luZG93IHdpbGwgc3RheSBvcGVuIGV2ZW4gaWYgeW91IGxlYXZlIHRoZSByb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VXNlcnMgZm9yIHRoaXMgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4zKSBPdGhlciBUZWFtLVJvb21zIHRoYXQgeW91IGNvdWxkIHN3aXRjaCB0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U2VuZCBhIG1lc3NhZ2UgdG8gdGhlIFRlYW0tUm9vbSBNb2RlcmF0b3JzLiBGb3IgZXhhbXBsZSBpZiB5b3UgbmVlZCBoZWxwIGluIE1vZGVyYXRpbmcgdGhlIFJvb20gb3IgaWYgeW91IGhhdmUgYSBxdWVzdGlvbiBhYm91dCB0aGUgdG9waWMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5TZW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4yKSBVc2VycyB0aGF0IGFyZSBpbnZpdGVkIHRvIHRoaXMgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5JcyBUZWFtLVJvb20gTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVzZSBhcmUgYWxsIHVzZXJzIHRoYXQgdGhlIG1vZGVyYXRvciBoYXMgaW52aXRlZCB0byB0aGlzIFRlYW0tUm9vbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1NyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIFRlYW0tTW9kZXJhdG9yIGxvZ2dlZCBpbiBhdCB0aGUgbW9tZW50ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGEgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+UGxlYXNlIGhlbHAgdXMsIHdlIGhhdmUgYSBwcm9ibGVtIGluIG91ciBUZWFtLVJvb20hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5BIHVzZXIgZnJvbSBhIFRlYW0tUm9vbSByZXF1ZXN0cyB5b3VyIGhlbHAuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb20gcmVxdWVzdCBmb3IgaGVscDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TWVzc2FnZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2MyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkZyb206PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGN1cnJlbnRseSBub3QgaW4gYW55IFRlYW0tUm9vbS4gQnV0IHlvdSBjYW4gc3dpdGNoIGhlcmUgdG8gYWxsIFRlYW0tUm9vbXMgdGhhdCB5b3UgaGF2ZSBhY2Nlc3MgdG8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjUiIG5hbWU9InJvb20tdmlkZW9zIj4KKyAgICA8dmFsdWU+VmlkZcOhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjYiIG5hbWU9ImJhY2t1cENvbnRlbnQiPgorICAgIDx2YWx1ZT5TeXN0ZW0gQmFja3VwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjciIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPkFsbG93IHVzZXIgdG8gc2hhcmUgU2NyZWVuL1JlY29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY4IiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT5EZW55IHVzZXIgdG8gc2hhcmUgU2NyZWVuL1JlY29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY5IiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT5Vc2VyIGlzIE1vZGVyYXRvciwgaGUgY2FuIGRvIGFueXRoaW5nISBbU2NyZWVuIFNoYXJpbmddPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzAiIG5hbWU9ImFwcGx5IGZvciBzY3JlZW4vcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0byBzaGFyZS9yZWNvcmQgc2NyZWVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDcxIiBuYW1lPSJtb2RlcmF0aW9uIG1pbmkgaWNvbnMiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGFsbG93ZWQgdG8gc2hhcmUvcmVjb3JkIHNjcmVlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDcyIiBuYW1lPSJtb2RlcmF0aW9uIG1pbmkgaWNvbnMiPgorICAgIDx2YWx1ZT5BcHBseSBmb3IgcmlnaHQgdG8gc2hhcmUvcmVjb3JkIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3MyIgbmFtZT0ibW9kZXJhdGlvbiBtaW5pIGljb25zIGNvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT5BbGxvdy9EZW55IHJpZ2h0IHRvIHNoYXJlL3JlY29yZCBzY3JlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzQiIG5hbWU9InNvdW5kIGljb24iPgorICAgIDx2YWx1ZT5UdXJuIHNvdW5kIG9mZjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc1IiBuYW1lPSJzb3VuZCBpY29uIj4KKyAgICA8dmFsdWU+VHVybiBzb3VuZCBvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc2IiBuYW1lPSJyb29tIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+QXVkaW8gb25seSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzciIG5hbWU9InJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5UdXJuIHRoaXMgRmxhZyBvbiBhbmQgdGhlIHVzZXJzIHdpbGwgaGF2ZSBvbmx5IHRoZSBBdWRpby1PcHRpb24gYW5kIG5vIFZpZGVvIGluIGEgY29uZmVyZW5jZSByb29tLiBUaGlzIGNhbiBieSBnb29kIHRvIHNhdmUgYmFuZHdpZHRoLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc4IiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5BbGxvdyBSZW1vdGUgQ29udHJvbCAoRHVyaW5nIFNjcmVlbiBTaGFyaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc5IiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5EZW55IFJlbW90ZSBDb250cm9sIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODAiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFwcGx5IGZvciByaWdodCB0byBSZW1vdGUgQ29udHJvbCBTY3JlZW4gKER1cmluZyBTY3JlZW4gU2hhcmluZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MSIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+WW91IGFyZSBhbGxvd2VkIHRvIFJlbW90ZSBDb250cm9sIFNjcmVlbiAoRHVyaW5nIFNjcmVlbiBTaGFyaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgyIiBuYW1lPSJhcHBseSBmb3IgcmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIHJlbW90ZSBjb250cm9sIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MyIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+VXNlciBpcyBNb2RlcmF0b3IsIGhlIGNhbiBkbyBhbnl0aGluZyEgW1JlbW90ZSBEZXNrdG9wIENvbnRyb2xdPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODQiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFsbG93L0RlbnkgcmlnaHQgdG8gUmVtb3RlIENvbnRyb2wgU2NyZWVuIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODUiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPjEpIFlvdXIgUEMgdG8gcmVtb3RlIFBDOiBUbyBjb3B5IGFuZCBwYXN0ZSB0ZXh0IGZyb20geW91ciBjbGlwYm9hcmQgaW50byB0aGUgcmVtb3RlIGNvbnRyb2xsZWQgc2NyZWVuLCBjbGljayBvbiB0aGUgc2NyZWVuLCB0aGVuIHJpZ2h0IGNsaWNrIGluIHRoZSB0ZXh0IGZpZWxkIGFuZCBjaG9vc2UgJmx0O2kmZ3Q7SW5zZXJ0Jmx0Oy9pJmd0OyBmcm9tIHRoZSBjb250ZXh0IChyaWdodCBjbGljaykgbWVudS4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7MikgRnJvbSByZW1vdGUgUEMgdG8geW91ciBQQzogVG8gY29weSB0ZXh0IGZyb20gdGhlIHJlbW90ZSBQQyB0byB5b3VyIFBDJ3MgY2xpcGJvYXJkLCBoaWdobGlnaHQgdGhlIHRleHQgd2l0aCB0aGUgbW91c2Ugb24gdGhlIHJlbW90ZSBzY3JlZW4sIHRoZW4gcmlnaHQtY2xpY2sgb24gdGhlIHJlbW90ZSBzY3JlZW4gYW5kIGNob29zZSAmbHQ7aSZndDtDb3B5IGhpZ2hsaWdodGVkIHRleHQmbHQ7L2kmZ3Q7Jmx0O2JyLyZndDsmbHQ7YnIvJmd0OyZsdDt1Jmd0OyZsdDtGT05UIGNvbG9yPScjMDAwMENDJyZndDsmbHQ7QSBIUkVGPSJodHRwOi8vd3d3LnlvdXR1YmUuY29tL3dhdGNoP3Y9VWtxYTAxTzQ4dUkiIFRBUkdFVD0iX0JMQU5LIiZndDt3YXRjaCB0aGUgZGVtbyZsdDsvQSZndDsmbHQ7L0ZPTlQmZ3Q7Jmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg2IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Db3B5IGFuZCBQYXN0ZSB0ZXh0IGZyb20geW91ciBQQyB0byByZW1vdGUgUEMgYW5kIHZpY2UtdmVyc2EuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODciIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNvcHkgaGlnaGxpZ2h0ZWQgdGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg4IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Ib3cgdG8gY29weSBuIHBhc3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODkiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPlF1YWxpdHkgb2YgdGhlIFNjcmVlblNoYXJlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkwIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5WZXJ5IGhpZ2ggUXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkxIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5IaWdoIFF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5MiIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+TWVkaXVtIFF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5MyIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+TG93IFF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NCIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5lbl9VUzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk1IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPmRlX0RFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTYiIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+S2V5Ym9hcmQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTciIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+Q2xvc2UgV2ViaW5hciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5OCIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5UaGUgV2ViaW5hciBpcyBhbHJlYWR5IGNsb3NlZCwgeW91IHdpbGwgYmUgcmVkaXJlY3RlZCB0byBzb21lIGludGVyZXN0aW5nIG9mZmVyaW5ncyBpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk5IiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPkNsb3NlIFJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMCIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5FeGl0IFVSTDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAxIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPlJvb20gdGVybWluYXRpb24gc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMiIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5JZiB0aGUgcm9vbSBpcyBjbG9zZWQgdXNlcnMgd2lsbCBiZSByZWRpcmVjdGVkIHRvIHRoZSBleGl0IFVSTC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5MZGFwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDQiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDYiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+Q29uZmlnIEZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5MZGFwIENvbmZpZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA4IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwOSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5FbmFibGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTAiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+SW5zZXJ0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JbnNlcnRlZCBieTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEyIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPlVwZGF0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5VcGRhdGVkIGJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTQiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+VGhlIGNvbmZpZyBmaWxlcyBhcmUgaW4gdGhlIGZvbGRlciB3ZWJhcHBzL29wZW5tZWV0aW5ncy9jb25mLiBZb3UgbmVlZCB0byBtYW51YWxseSB1cGxvYWQgdGhlIGZpbGVzIHRvIHRoaXMgZm9sZGVyLiBDaGFuZ2VzIHRvIHRoZSBjb25maWcgZmlsZSBhcmUgaW1tZWRpYXRlbHkgb25saW5lLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE1IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkNvbmZpZyBmaWxlIG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNiIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JZiB5b3UgZW5hYmxlICJBZGQgRG9tYWluIHRvIHVzZXJuYW1lIiB0aGUgdmFsdWUgb2YgdGhlIGZpZWxkICJkb21haW4iIGlzIGFkZGVkIHRvIGVhY2ggbG9naW4gdGhhdCB0aGUgdXNlciBlbnRlcnMgaW4gdGhlIGxvZ2luIGJveC4gVGhpcyBpcyB1c2VmdWwgaWYgdGhlIExvZ2luIGluIHRoZSBMZGFwIGlzIHN0b3JlZCBpbmNsdWRpbmcgdGhlIGRvbWFpbiBuYW1lLiBFeGFtcGxlOiBVc2VyIGVudGVycyAiaGFucyIgZG9tYWluIGlzIHNwZWNpZmllZCBhcyAibG9jYWxob3N0LmNvbSIsIGxvZ2luIHRoYXQgaXMgdmVyaWZpZWQgYWdhaW5zdCBMZGFwIGlzOiBoYW5zQGxvY2FsaG9zdC5jb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5BZGQgRG9tYWluIHRvIHVzZXJuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTgiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+RG9tYWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTkiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+SW5zZXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjAiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+Q29weSBoaWdobGlnaHRlZCB0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjEiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+UmVtb3RlIENsaXBib2FyZCBUZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjIiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+U2hvdyByZW1vdGUgQ2xpcGJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjMiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkRvIG5vdCBzaG93IGFnYWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjQiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNvcHkgdGV4dCBoZXJlIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI1IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0aGUgcmlnaHQgdG8gcmVtb3RlIGNvbnRyb2wgKG9yIHRoZSBtb2RlcmF0aW9uKSB0byBjb3B5IGFuZCBwYXN0ZSB0ZXh0IHRvIG9yIGZyb20gdGhlIHJlbW90ZSBzY3JlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjYiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkVkaXQgZGVmYXVsdCBzZXR0aW5ncyAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNyIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+RG8gbm90IHNob3cgaW5mbyBib3ggaW4gUmVtb3RlIENvbnRyb2wgYWJvdXQgQ29weSBhbmQgUGFzdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyOCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5TYXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjkiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+UmVtb3ZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzAiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzEiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5JbnZpdGUgdXNlciB0byBjb25mZXJlbmNlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMiIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkNob29zZSBhIGNvbmZlcmVuY2Ugcm9vbS4gVGhlIGludml0ZWQgdXNlciB3aWxsIGdldCBhIG1lc3NhZ2Ugd2l0aCB5b3VyIG5hbWUgYW5kIGEgbGluayB0byB0aGUgcm9vbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMyIgbmFtZT0iY2hhdCB1c2VyIj4KKyAgICA8dmFsdWU+Q29ubmVjdGVkIHNpbmNlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM0IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+RW50ZXIgcm9vbSBhZnRlciBzZW5kaW5nIGludml0YXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzNSIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkludml0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM2IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+TWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM3IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0byBpbnZpdGUgeW91IHRvIHRoZSBjb25mZXJlbmNlIHJvb206PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzgiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5JbnZpdGUgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM5IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+U2VuZCBJbnZpdGF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDAiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5kaWQgJmx0O2ImZ3Q7bm90Jmx0Oy9iJmd0OyBhY2NlcHQgeW91ciBpbnZpdGF0aW9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQxIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+QWNjZXB0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDIiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5EZW55PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDMiIG5hbWU9InVzZXIgcHJvZmlsZSI+CisgICAgPHZhbHVlPlRpbWV6b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDQiIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPkV2ZW50IERldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0NSIgbmFtZT0iYXBwb2ludG1lbnQgbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ2IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5EZXNjcmlwdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ3IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5DcmVhdGVkIGJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDgiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5UaW1lWm9uZSBNZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDkiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5DaGVjayAiVGltZVpvbmUgTWVzc2FnZSIgdG8gZ2l2ZSB1c2VycyBhIG1lc3NhZ2UgbmV4dCB0aW1lIHRoZXkgbG9naW4gdG8gdXBkYXRlIHRoZWlyIHByb2ZpbGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTAiIG5hbWU9InRpbWUgem9uZSB1cGRhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlBsZWFzZSBjaGVjayB0aGUgdGltZSB6b25lIGluIHlvdXIgdXNlciBwcm9maWxlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUxIiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5OZXcgJEFQUF9OQU1FIGNvbmZlcmVuY2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTIiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkRldGFpbHM6Jmx0O2JyLyZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MyIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3RhcnQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTQiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkVuZDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NSIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2hhbmdlZCAkQVBQX05BTUUgY29uZmVyZW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NiIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+T3JnYW5pemVyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU3IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DYW5jZWxlZCAkQVBQX05BTUUgY29uZmVyZW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1OCIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIGNvbmZlcmVuY2UgUmVtaW5kZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTkiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Db21tdW5pdHkgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlNob3cgY29udGFjdCBkYXRhIHRvIGV2ZXJ5Ym9keTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYxIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+QWRkIGZpZWxkcyBvZiBpbnRlcmVzdCB0aGF0IHlvdSBvZmZlciBvciB0aGF0IHlvdSBhcmUgc2VhcmNoaW5nIHRvIGZpbmQgaW50ZXJlc3RpbmcgcGFydG5lcnMgZm9yIGEgY29uZmVyZW5jZS4gQ29tbWEgc2VwYXJhdGUgdGhlIHRlcm1zIChmb3IgZXhhbXBsZTogTWVkaWNhbCBTZXJ2aWNlLCBIZWFsdGggYXNzdXJhbmNlLCAuLi4pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjIiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NeSBvZmZlcmluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MyIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk15IGludGVyZXN0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY0IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY1IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+VGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2NiIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkZpZWxkcyBvZiBpbnRlcmVzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY3IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+Q29udGFjdCBpbmZvcm1hdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY4IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2hvdyBjb250YWN0IGRhdGEgdG8gY29udGFjdHMgb25seTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY5IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2hvdyBjb250YWN0IGRhdGEgdG8gbm9ib2R5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzAiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NeSBQcm9maWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzEiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5FZGl0IHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzIiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TZWFyY2ggdXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MyIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPldhdGNoIHlvdXIgcHJvZmlsZSBsaWtlIG90aGVyIHNlZSB5b3U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkVkaXQgeW91ciBzZXR0aW5ncywgYWRkIHlvdXIgaW50ZXJlc3RzIHRvIGJlIGZvdW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzUiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TZWFyY2ggZm9yIG90aGVyIHVzZXJzIGFuZCBleHRlbmQgeW91ciBuZXR3b3JrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzYiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+U2VhcmNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzciIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+VXNlciBvZmZlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3OCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5Vc2VyIGxvb2tzIGZvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc5IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkZyZWV0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODAiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgxIiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlRpbWV6b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODIiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+T2ZmZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODMiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+U2VhcmNoczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg0IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlNlYXJjaHJlc3VsdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg1IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkFjdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NiIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5BZGQgdG8gY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NyIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5TZW5kIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4OCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5Db250YWN0cyBhbmQgTWVzc2FnZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4OSIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5QZW5kaW5nIGNvbnRhY3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTAiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5BY2NlcHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkRlbnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MiIgbmFtZT0idXNlciBjb250YWN0IHJlcXVlc3QiPgorICAgIDx2YWx1ZT5IaSw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MyIgbmFtZT0idXNlciBjb250YWN0IHJlcXVlc3QiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGFkZCB5b3UgYXMgY29udGFjdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NCIgbmFtZT0idXNlciBjb250YWN0IHJlcXVlc3QiPgorICAgIDx2YWx1ZT5DaGVjayB5b3VyIGNvbnRhY3QgcmVxdWVzdHMgaW4gJEFQUF9OQU1FIG9yIGNsaWNrIG9uIHRob3NlIGxpbmtzIHRvIGFjY2VwdCBvciBkZW55IHRoZSByZXF1ZXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTUiIG5hbWU9ImFkZCB1c2VyIGNvbnRhY3QiPgorICAgIDx2YWx1ZT5UaGlzIHVzZXIgaXMgYWxyZWFkeSBpbiB5b3VyIGNvbnRhY3QgbGlzdCBvciBoYXMgcmVjZWl2ZWQgYW4gaW52aXRhdGlvbiB0byB5b3VyIGNvbnRhY3QgbGlzdCB0aGF0IGlzIG5vdCBhbnN3ZXJlZCB5ZXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTYiIG5hbWU9InVzZXIgY29udGFjdCBtYWlsIj4KKyAgICA8dmFsdWU+WW91ciBjb250YWN0IGxpc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkVkaXQgeW91ciBjb250YWN0IGFuZCBtZXNzYWdlcywmbHQ7YnIvJmd0OyBtYW5hZ2UgeW91ciBwZW5kaW5nIGNvbnRhY3RzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk4IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+Y29uZmlybWVkIHlvdSBhcyBjb250YWN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk5IiBuYW1lPSJjaGF0IGluZm8gbWVzc2FnZSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAwIiBuYW1lPSJjaGF0IGxvZyBpY29uIj4KKyAgICA8dmFsdWU+U2hvdyAvIENvcHkgY2hhdCBsb2c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMSIgbmFtZT0iY2hhdCBsb2cgd2luZG93Ij4KKyAgICA8dmFsdWU+Q2hhdCBMb2c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RnJvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TdWJqZWN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDYiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1lc3NhZ2VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDciIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk5ldyBNYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkNsaWNrIHRvIHdyaXRlIGEgbmV3IG1lc3NhZ2UgdG8gYW55IG9mIHlvdXIgY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwOSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+V3JpdGUgbmV3IG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VG86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlN1YmplY3Q6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTIiIG5hbWU9IndoaXRlYm9hcmQgZnVsbC1maXQiPgorICAgIDx2YWx1ZT5FbmFibGUgZnVsbCBmaXQgYW5kIHRoZSB3aGl0ZWJvYXJkIHdpbGwgem9vbSB0aGUgd2hvbGUgd2hpdGVib2FyZCBzbyB0aGF0IGFsbCZsdDtici8mZ3Q7ZG9jdW1lbnRzIGFyZSB2aXNpYmxlIGFjY29yZGluZyB0byBlYWNoIHBhcnRpY2lwYW50cyBzY3JlZW4gcmVzb2x1dGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMyIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+S2ljayB1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTQiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPllvdSBjYW5ub3Qga2ljayB5b3Vyc2VsZiBvdXQgb2YgdGhlIGNvbmZlcmVuY2Ugcm9vbSEgSWYgeW91IHdhbnQgdG8gbGVhdmUgaXQgY2xvc2UgdGhlIGJyb3dzZXIgb3IgdXNlIHRoZSBleGl0IGJ1dHRvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNSIgbmFtZT0ia2ljay11c2VyIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRpc2Nvbm5lY3QgdGhpcyB1c2VyIGZyb20gdGhpcyBjb25mZXJlbmNlIHJvb20/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTYiIG5hbWU9ImtpY2stdXNlciI+CisgICAgPHZhbHVlPkNvbmZpcm0gYWN0aW9uIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE3IiBuYW1lPSJraWNrLXVzZXIiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IGtpY2sgYSBTdXBlci1Nb2RlcmF0b3Igb3V0IG9mIGEgcm9vbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxOCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Qm9vayBjb25mZXJlbmNlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxOSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3RhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZCBhbiBvcHRpb25hbCByZXF1ZXN0IGZvciBtZWV0aW5nIHRvIHRoZSBtZXNzYWdlIGFuZCBjcmVhdGUgYSBjb25mZXJlbmNlIHJvb20uIFRoZSBFdmVudCBpcyB0aGVuIGNvcGllZCBpbiB0aGUgY2FsZW5kYXIgb2YgZXZlcnkgcGFydGljaXBhbnQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkluYm94PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VHJhc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhpcyBpcyB5b3UhIFlvdSBjYW5ub3QgYWRkIHlvdXJzZWxmIGFzIHlvdXIgb3duIGNvbnRhY3QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjYiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5UaGUgdXNlciBpcyBhbHJlYWR5IGRlbmllZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoZSB1c2VyIGlzIGFscmVhZHkgYXBwcm92ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjgiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5UaGlzIHVzZXIgY29udGFjdCBoYXNoIGlzIGludmFsaWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjkiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Vc2VyIGFkZGVkIHRvIGNvbnRhY3QgbGlzdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlVzZXIgZGVuaWVkIGFzIGNvbnRhY3QgYW5kIHJlbW92ZWQgZnJvbSBwZW5kaW5nIGNvbnRhY3QgbGlzdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIHN1Y2ggY29udGFjdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPldvdWxkIHlvdSByZWFsbHkgbGlrZSB0byByZW1vdmUgdGhhdCBjb250YWN0PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMzIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+Q29uZmlybSBjb250YWN0IHJlbW92YWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkRlbGV0ZSBjb250YWN0IGZyb20gbGlzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM1IiBuYW1lPSJ1c2VyIHByb2ZpbGUiPgorICAgIDx2YWx1ZT5Vc2VyIFByb2ZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNiIgbmFtZT0idXNlciBwcm9maWxlIj4KKyAgICA8dmFsdWU+U2hvdyB1c2VyIHByb2ZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWVzc2FnZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzOCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VhcmNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbGVjdCBhbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0MCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VsZWN0IG5vbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0MSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VsZWN0IHVucmVhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWxlY3QgcmVhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Nb3ZlIHRvIGZvbGRlciAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIG5ldyBmb2xkZXIgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRlbGV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ2IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EZWxldGVkIG1haWxzIGFyZSBzdGlsbCBpbiB5b3VyIHRyYXNoIGZvbGRlciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWFyayB1bnJlYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0OCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWFyayByZWFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFuc3dlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BbnN3ZXIgZXZlcnlib2R5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkZvcndhcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWN0aW9ucyAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlNlbmQgcHJpdmF0ZSBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk5vdGhpbmcgc2VsZWN0ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1vdmUgdG8gSW5ib3g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGVsZXRlIChmaW5hbCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1OCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIGZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgZm9sZGVycyBhbmQgb3JnYW5pemUgeW91ciBtZXNzYWdlcyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIGZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPkRlbGV0ZSBmb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPllvdSBjYW5ub3QgZGVsZXRlIHRoaXMgZm9sZGVyLCB0aGVyZSBhcmUgc3RpbGwgbWVzc2FnZXMgaW5zaWRlISBEZWxldGUgZmlyc3QgdGhlIG1lc3NhZ2VzIG9yIG1vdmUgdGhlbSB0byBhbm90aGVyIGZvbGRlci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPkVkaXQgbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGZvbGRlcj8gVGhlcmUgaXMgbm8gd2F5IHRvIHVuZG8gdGhhdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPllvdXIgcmVxdWVzdCB3YXMgc2VuZCB0byB0aGUgdXNlci4gVGhlIHVzZXIgd2lsbCByZWNlaXZlIGEgbm90aWZpY2F0aW9uIHRvIGFjY2VwdCBvciBkZW55IHlvdXIgcmVxdWVzdC4gT25seSBhY2NlcHRlZCByZXF1ZXN0cyBhcmUgaW4geW91ciBjb250YWN0IGxpc3Qgb2YgY291cnNlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+TWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY4IiBuYW1lPSJ1c2VyIHZpZXcgcHJvZmlsZSI+CisgICAgPHZhbHVlPlRoZSB1c2VyIGRvZXMgbm90IHNoYXJlIGhpcyBwZXJzb25hbCBjb250YWN0IGRhdGEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjkiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+VGhlIHVzZXIgZG9lcyBzaGFyZSBoaXMgcGVyc29uYWwgY29udGFjdCBkYXRhIG9ubHkgdG8gY29udGFjdHMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzAiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+QWRkcmVzcyAmYW1wOyBQaG9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjcxIiBuYW1lPSJlcnJvciBjb2RlIj4KKyAgICA8dmFsdWU+WW91IGludml0YXRpb24gY29kZSBpcyBubyB2YWxpZCwgdGhlIGNvZGUgaXMgb25seSB2YWxpZCBkdXJpbmcgdGhpcyBzcGVjaWZpYyBkYXRlIGFuZCB0aW1lOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjcyIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhpcyBldmVudCBpcyBjb25uZWN0ZWQgdG8gc2V2ZXJhbCBjYWxlbmRhcnMgb2Ygb3RoZXIgdXNlcnMuIFlvdXIgY2hhbmdlIHdpbGwgYWxzbyB1cGRhdGUgdGhlaXIgY2FsZW5kYXIuIFdvdWxkIHlvdSByZWFsbHkgbGlrZSB0byB1cGRhdGUgdGhlIGV2ZW50PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjczIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Q29uZmlybSB1cGRhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkFsbG93IGNvbnRhY3QgdG8gc2VlIG15IGNhbGVuZGFyICh2aWV3IG9ubHkpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzUiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5EbyBub3Qgc2hhcmUgY2FsZW5kYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkNhbGVuZGFyIG9mIGNvbnRhY3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzciIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Zb3VyIGNvbnRhY3RzIG5lZWQgdG8gYXBwcm92ZSB5b3UgZmlyc3QgdG8gYmUgYWJsZSB0byBzZWUgdGhlaXIgY2FsZW5kYXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzgiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IHN0b3JlIG9yIGRlbGV0ZSBldmVudHMgZnJvbSBvdGhlciBjYWxlbmRhcnMgdGhlbiB5b3VyIG93biE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3OSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlNob3cgbXkgb3duIGNhbGVuZGFyIGFnYWluITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgwIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhpcyBldmVudCBpcyBjb25uZWN0ZWQgdG8gc2V2ZXJhbCBjYWxlbmRhcnMgb2Ygb3RoZXIgdXNlcnMuIFlvdXIgYWN0aW9uIHdpbGwgYWxzbyBkZWxldGUgdGhlIGV2ZW50IGZyb20gdGhlaXIgY2FsZW5kYXIuIFdvdWxkIHlvdSByZWFsbHkgbGlrZSB0byBkZWxldGUgdGhlIGV2ZW50PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgxIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Q29uZmlybSBhY3Rpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4MiIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPkVudGVyIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4MyIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPkFjY2VzcyB0aGUgY29uZmVyZW5jZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGEgY29uZmVyZW5jZSByb29tIGFuZCBldmVudCBib29rZWQgd2l0aCB0aGlzIHByaXZhdGUgbWVzc2FnZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NSIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPllvdSBuZWVkIHRvIHN0b3JlIHRoZSBldmVudCBmaXJzdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NiIgbmFtZT0iYWNjZXNzIHJvb21zIGVycm9yIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgbm8gc3VjaCByb29tIGF2YWlsYWJsZS4gVGhlIGV2ZW50IGluIHRoZSBjYWxlbmRhciBhbmQgY29ubmVjdGVkIHJvb20gaXMgYWxyZWFkeSBkZWxldGVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg3IiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5DaG9vc2UgeW91ciBuaWNrbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg4IiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5GaXJzdG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4OSIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+TGFzdG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MCIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+RW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MSIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+T2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MiIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+TWluaW11bSBsZW5ndGggNCBjaGFycyEgRm9yIGJvdGgsIGZpcnN0bmFtZSBhbmQgbGFzdG5hbWUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTMiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIHZhbGlkIGVtYWlsITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk0IiBuYW1lPSJhdXRoIGZyb20iPgorICAgIDx2YWx1ZT5GYWNlYm9vazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk1IiBuYW1lPSJhdXRoIGZvcm0iPgorICAgIDx2YWx1ZT5Mb2dpbiB3aXRoIHlvdXIgRmFjZWJvb2sgYWNjb3VudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk2IiBuYW1lPSJ2aWV3IHByb2ZpbGUiPgorICAgIDx2YWx1ZT5NZW1iZXIgc2luY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5NyIgbmFtZT0iZGlyZWN0IGxvZ2luIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Zb3UndmUgbG9nZ2VkIHdpdGggeW91ciBGYWNlYm9vayBhY2NvdW50LiBZb3Ugc2hvdWxkIHVwZGF0ZSB5b3VyIHByb2ZpbGUgd2l0aCB0aGUgY29ycmVjdCBlbWFpbC4gT3RoZXJ3aXNlIHlvdSB3aWxsIG5vdCByZWNlaXZlIGludml0YXRpb25zIGFuZCBwcml2YXRlIG1lc3NhZ2VzIGZyb20gb3RoZXIgdXNlcnMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTgiIG5hbWU9ImRpcmVjdCBsb2dpbiBtZXNzYWdlIGhlYWRlciI+CisgICAgPHZhbHVlPk1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5OSIgbmFtZT0iZGlyZWN0IGxvZ2luIG1lc3NhZ2UgY2hlY2tib3ggY29udHJvbCI+CisgICAgPHZhbHVlPkRvIG5vdCBzaG93IHVwZGF0ZSBwcm9maWxlIG1lc3NhZ2UgYWdhaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMCIgbmFtZT0icHJvZmlsZSBzZXR0aW5ncyBidXR0b24iPgorICAgIDx2YWx1ZT5tb3JlIGRpc3BsYXkgb3B0aW9ucyAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TmV3IHByaXZhdGUgbWVzc2FnZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2xpY2sgaGVyZSB0byB2aXNpdCB5b3VyIHByb2ZpbGUgdG8gc2VlIHRoZSBmdWxsIG1lc3NhZ2UgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlJlcGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPlJvb21zIGFuZCBjaGF0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA1IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5NeSByb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA2IiBuYW1lPSJteSByb29tcyI+CisgICAgPHZhbHVlPk15IGNvbmZlcmVuY2Ugcm9vbSAoZm9yIDEtMTYgdXNlcnMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDciIG5hbWU9Im15IHJvb21zIj4KKyAgICA8dmFsdWU+TXkgd2ViaW5hciByb29tIChmb3IgMS0xMjAgdXNlcnMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDgiIG5hbWU9InJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5Pd25lciBJZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA5IiBuYW1lPSJsb2dpbiBlcnJvciI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIHBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTAiIG5hbWU9ImxvZ2luIGVycm9yIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgYW4gYWNjb3VudCB3aXRoIFVzZXItTGV2ZWwgVXNlciwgTW9kZXJhdG9yIG9yIEFkbWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTEiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5XZWItU2VydmljZSAob25seSBhY2Nlc3MgdmlhIFNPQVApPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTIiIG5hbWU9InVwbG9hZCBmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+RG8gZGlyZWN0bHkgbG9hZCB0byB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTMiIG5hbWU9IndoaXRlYm9hcmQgY2xvc2UgY29uZmlybWF0aW9uIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIHJlbW92ZSB0aGlzIHdoaXRlYm9hcmQ/IFRoaXMgYWN0aW9uIGNhbm5vdCBiZSB1bmRvbmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTQiIG5hbWU9IndoaXRlYm9hcmQgbG9hZCBXTUwiPgorICAgIDx2YWx1ZT5Mb2FkIHRvIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxNSIgbmFtZT0icmVjb3JkaW5nIGZsYWciPgorICAgIDx2YWx1ZT5EbyBub3QgZm9yZ2V0IHN0YXJ0IHJlY29yZGluZyEgT25lIHVzZXIgcGVyIHJvb20gYWx3YXlzIG5lZWRzIHRvIHN0YXJ0IGl0IHRvIGhhdmUgdGhlIHJlY29yZGluZyBhZnRlcndhcmRzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE2IiBuYW1lPSJyZWNvcmRpbmcgZmxhZyI+CisgICAgPHZhbHVlPlN0YXJ0IFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE3IiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPkFycm93PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTgiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+Q2lyY2xlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTkiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+TGluZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIwIiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPlNxdWFyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIxIiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPlRyaWFuZ2xlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjIiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5UZXh0L05vdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyMyIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkNsaXBhcnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjQiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5EcmF3IEZyZWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNSIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlNlbGVjdC9Nb3ZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjYiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5EcmF3IFNoYXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjciIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5DdXQvTW92ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI4IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+Wm9vbSBJbi9PdXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyOSIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlByaW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzAiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5VbmRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzEiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5UcmFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMyIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+QWRkIEdyaWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMyIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlNoYXJlIEZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNCIgbmFtZT0iaWNvbiBzdWJtZW51Ij4KKyAgICA8dmFsdWU+U2VsZWN0IFNoYXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzUiIG5hbWU9Imljb24gc3VibWVudSI+CisgICAgPHZhbHVlPlNlbGVjdCBDbGlwYXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzYiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5Db3B5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzciIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5DdXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzOCIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPlBhc3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzkiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5EZWxldGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MCIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhlIGNvbXBsZXRlIGNvbnRlbnQgb24gdGhlIHdoaXRlYm9hcmQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDEiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5Mb2FkIGRpcmVjdGx5IHRvIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MiIgbmFtZT0iYXR0ZW5kZWVzIj4KKyAgICA8dmFsdWU+QXR0ZW5kZWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDMiIG5hbWU9ImF0ZW5kZWUgbWFuYWdlciI+CisgICAgPHZhbHVlPkF0dGVuZGVlIE1hbmFnZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NCIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+UHJlc2VudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ1IiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5SZW1vdGUgQ29udHJvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NiIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+RWplY3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NyIgbmFtZT0iY2hhdCI+CisgICAgPHZhbHVlPkNoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0OCIgbmFtZT0iaW52aXRlIGF0dGVuZGVlIj4KKyAgICA8dmFsdWU+SW52aXRlIEF0dGVuZGVlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ5IiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5CeSBFbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUwIiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5Vc2VyIGlzIG1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUxIiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5Vc2VyIGhhcyB3ZWJjYW0gc3dpdGNoZWQgb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1MiIgbmFtZT0iZmlsbF9vcHRpb24iPgorICAgIDx2YWx1ZT5EZWFjdGl2YXRlIHNoYXBlIGZpbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1MyIgbmFtZT0iZmlsbF9vcHRpb24iPgorICAgIDx2YWx1ZT5BY3RpdmF0ZSBzaGFwZSBmaWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTQiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5TbmFwIHRvIEdyaWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NSIgbmFtZT0iYWxsb3dfcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QWxsb3cgcmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTYiIG5hbWU9IndhaXRfZm9yX3JlY29yZGluZyI+CisgICAgPHZhbHVlPldhaXQgZm9yIHJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU3IiBuYW1lPSJoaWRlX3RvcF9iYXIiPgorICAgIDx2YWx1ZT5IaWRlIHRvcGJhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU4IiBuYW1lPSJmaWxlRXhwbG9yZXIiPgorICAgIDx2YWx1ZT5QbGF5IHZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTkiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoZSBjb250ZW50IG9uIHRoZSBjdXJyZW50IHNsaWRlPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYwIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT5BY2NlcHQgYW5kIGdyYW50IHVzZXIgcmlnaHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2MSIgbmFtZT0iYWN0aXZpdHlfd2luZG93Ij4KKyAgICA8dmFsdWU+RGVueTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYyIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT5JPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjMiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPkFjdGl2aXRpZXMgYW5kIGFjdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NCIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPlJlbW92ZSB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjUiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0aGUgbW9kZXJhdGlvbiBvciB0aGUgcmlnaHQgdG8gZHJhdyBvbiB0aGUgd2hpdGVib2FyZCB0byByZW1vdmUgd2hpdGVib2FyZHMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjYiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5Ob3QgYWxsb3dlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY3IiBuYW1lPSJ1c2VyX2xlZnRfYWN0X21zZyI+CisgICAgPHZhbHVlPmhhcyBsZWZ0IHRoZSByb29tLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY4IiBuYW1lPSJjbGlwYXJ0IGljb25zIj4KKyAgICA8dmFsdWU+TWF0aCBpY29uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY5IiBuYW1lPSJjbGlwYXJ0IGljb25zIj4KKyAgICA8dmFsdWU+Tm8gY2F0ZWdvcnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MCIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+Q29sb3ItU3R5bGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+UXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzcyIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5Eb21haW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MyIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+dmlzaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NCIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+cmVkb3JhbmdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzUiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPm1lZGl1bXNlYWdyZWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzYiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnN0ZWVsYmx1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc3IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5saWdodHN0ZWVsYmx1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc4IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5nb2xkZW5yZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3OSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+c2lsdmVyZ3JheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgwIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT51c2VyZGVmaW5lZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgxIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5iZXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODIiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnVwbG9hZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgzIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5tZWRpdW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NCIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg1IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5Vbm11dGUgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg2IiBuYW1lPSJnaXZlIGV4Y2x1c2l2ZSBhdWRpbyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBvZiBvdGhlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NyIgbmFtZT0ibXV0ZSBzZWxmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGdsb2JhbGx5IG11dGVkIGJ5IHRoZSBtb2RlcmF0b3IuIFlvdSBjYW5ub3QgdW5tdXRlIHlvdXJzZWxmITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg4IiBuYW1lPSJtdXRlIHNlbGYgY29uZmlybSBtZXNzYWdlIHRpdGxlIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg5IiBuYW1lPSJtdXRlIHNlbGYgY29uZmlybSBtZXNzYWdlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gbXV0ZSB5b3Vyc2VsZiBnbG9iYWxseT8gTm8gb3RoZXIgdXNlciB3aWxsIGhlYXIgeW91IGFueW1vcmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTAiIG5hbWU9Im11dGUgb3RoZXJzIGNvbmZpcm0gbWVzc2FnZSB0aXRsZSI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBsb2NhbGx5PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkxIiBuYW1lPSJtdXRlIG90aGVycyBjb25maXJtIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gbXV0ZSB0aGlzIG1pY3JvcGhvbmU/IFlvdSBjYW4gb25seSBtdXRlIGl0IGxvY2FsbHkgb24geW91ciBzY3JlZW4uIEl0IGhhcyBubyBlZmZlY3QgdG8gaG93IG90aGVyIHVzZXJzIGhlYXIgdGhpcyB1c2VyLiBPbmx5IG1vZGVyYXRvcnMgY2FuIHR1cm4gaXQgb2ZmIGdsb2JhbGx5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkyIiBuYW1lPSJtdXRlIG90aGVycyBjb25maXJtIG1lc3NhZ2UgdGl0bGUiPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgb2ZmIGdsb2JhbGx5PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkzIiBuYW1lPSJtdXRlIG90aGVycyBtb2RlcmF0b3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBtdXRlIHRoaXMgdXNlciBnbG9iYWxseT8gTm8gb3RoZXIgdXNlciB3aWxsIGhlYXIgaGltIGFueW1vcmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTQiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+WW91ciBzb3VuZCBpcyBvbi4gQ2xpY2sgaGVyZSB0byBzZW5kIG1vZGVyYXRvciBtZXNzYWdlIHRvIG11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5IChpbiB0aGUgY29tcGxldGUgY29uZmVyZW5jZSByb29tKSBvZmYhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTUiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+WW91ciBzb3VuZCBpcyBvZmYuIENsaWNrIGhlcmUgdG8gc2VuZCBtb2RlcmF0b3IgbWVzc2FnZSB0byB1bm11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5IChpbiB0aGUgY29tcGxldGUgY29uZmVyZW5jZSByb29tKSBvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5NiIgbmFtZT0ibXV0ZSBhcHBseSBzZWxmIG9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRoYXQgdGhlIG1vZGVyYXRvciBtdXRlcyBteSBtaWNyb3Bob25lIGdsb2JhbGx5LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk3IiBuYW1lPSJtdXRlIGFwcGx5IHNlbGYgb2ZmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRoYXQgdGhlIG1vZGVyYXRvciB1bm11dGVzIG15IG1pY3JvcGhvbmUgZ2xvYmFsbHkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTgiIG5hbWU9Im11dGUgYXBwbHkgb2YgbWVzc2FnZSI+CisgICAgPHZhbHVlPndhbnQgdGhhdCB0aGUgbW9kZXJhdG9yIHVubXV0ZXMgaGlzL2hlciBtaWNyb3Bob25lLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk5IiBuYW1lPSJtdXRlIGFwcGx5IG9mIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53YW50IHRoYXQgdGhlIG1vZGVyYXRvciBtdXRlcyBoaXMvaGVyIG1pY3JvcGhvbmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDAiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+VW5tdXRlIG1pY3JvcGhvbmUuIENsaWNrIGhlcmUgdG8gbXV0ZSBoaXMvaGVyIG1pY3JvcGhvbmUgZ2xvYmFsbHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDEiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lLiBDbGljayBoZXJlIHRvIHVubXV0ZSBoaXMvaGVyIG1pY3JvcGhvbmUgZ2xvYmFsbHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDIiIG5hbWU9Im11dGUgc2VsZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhpcyB1c2VyIGlzIGdsb2JhbGx5IG11dGVkIGJ5IHRoZSBtb2RlcmF0b3IuIFlvdSBjYW5ub3QgdW5tdXRlIGhpbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMyIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDQiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSB5b3VyIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwNSIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA2IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5Vbm11dGUgbWljcm9waG9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA3IiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDgiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDkiIG5hbWU9Im11dGUgbW9kZXJhdG9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Pbmx5IG1vZGVyYXRvcnMgY2FuIG11dGUgb3IgdW5tdXRlIGFuIHVzZXIgZ2xvYmFsbHkhIFRvIG11dGUgeW91ciBvd24gbWljcm9waG9uZTogUGxlYXNlIHVzZSB0aGUgbWljcm9waG9uZSBpY29uIGluIHlvdXIgdmlkZW8gcG9kITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDEwIiBuYW1lPSJwb2xsX25hbWUiPgorICAgIDx2YWx1ZT5Qb2xsIE5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMSIgbmFtZT0icG9sbF9uYW1lIj4KKyAgICA8dmFsdWU+WW91PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTIiIG5hbWU9ImFyY2hpdmVkX3BvbGxzIj4KKyAgICA8dmFsdWU+QXJjaGlldmVkIFBvbGxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTMiIG5hbWU9ImFjdGl2ZV9wb2xsIj4KKyAgICA8dmFsdWU+YWN0aXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTQiIG5hbWU9ImNoYXJ0X3NpbXBsZSI+CisgICAgPHZhbHVlPlNpbXBsZSBDaGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE1IiBuYW1lPSJjaGFydF9waWUiPgorICAgIDx2YWx1ZT5QaWUgQ2hhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNiIgbmFtZT0ic2lnbl91cF92YWxpZGF0aW9uIj4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTciIG5hbWU9ImNoYXRfbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+TmV3IG1lc3NhZ2Uocyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxOCIgbmFtZT0icG9sbF9jbG9zZSI+CisgICAgPHZhbHVlPkNsb3NlIFBvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxOSIgbmFtZT0icG9sbF9jbG9zZV9jb25maXJtIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNsb3NlIHRoaXMgUG9sbD8gTm8gb25lIHdpbGwgYmUgYWJsZSB0byB2b3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjAiIG5hbWU9InBvbGxfZGVsZXRlIj4KKyAgICA8dmFsdWU+RGVsZXRlIFBvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMSIgbmFtZT0icG9sbF9kZWxldGVfY29uZmlybSI+CisgICAgPHZhbHVlPkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBQb2xsPyBUaGUgcmVzdWx0cyB3aWxsIGJlIGRlbGV0ZWQgYXMgd2VsbC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMiIgbmFtZT0ibGFuZ3VhZ2VfY29kZSI+CisgICAgPHZhbHVlPkxhbmd1YWdlIElTTyBDb2RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjMiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19wZXJtaXNzaW9uIj4KKyAgICA8dmFsdWU+QWxsb3cvRGVueSByaWdodCB0byBnaXZlIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNCIgbmFtZT0iYWxsb3dfZXhjbHVzaXZlX2F1ZGlvX3Blcm1pc3Npb24iPgorICAgIDx2YWx1ZT5BbGxvdyB1c2VyIHRvIGdpdmUgZXhjbHVzaXZlIGF1ZGlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjUiIG5hbWU9ImRlbnlfZXhjbHVzaXZlX2F1ZGlvX3Blcm1pc3Npb24iPgorICAgIDx2YWx1ZT5EZW55IHVzZXIgdG8gZ2l2ZSBleGNsdXNpdmUgYXVkaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNiIgbmFtZT0iZXhjbF9hdWRpbyBhcHBseSBzZWxmIG9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGdldCBhIHBlcm1pc3Npb24gZm9yIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNyIgbmFtZT0iZXhjbF9hdWRpbyBhcHBseSBvZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+d2FudCB0aGF0IHRoZSBtb2RlcmF0b3IgZ2l2ZXMgbWUgYSBwZXJtaXNzaW9uIGZvciBleGNsdXNpdmUgYXVkaW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjgiIG5hbWU9ImV4Y2xfYXVkaW8gc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+R2l2ZSBhIHBlcm1pc3Npb24gZm9yIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyOSIgbmFtZT0iY2FtX3Jlc29sdXRpb24iPgorICAgIDx2YWx1ZT5DYW0gcmVzb2x1dGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMwIiBuYW1lPSJjYW1fcmVzb2x1dGlvbl9pbmZvIj4KKyAgICA8dmFsdWU+Q2hhbmdpbmcgdGhlIHJlc29sdXRpb24gYWZmZWN0cyBiYW5kd2lkdGgsIGJpZ2dlciBwaWN0dXJlIG5lZWRzIG1vcmUgYmFuZHdpdGghPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzEiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19lcnJvciI+CisgICAgPHZhbHVlPllvdSBkb24ndCBoYXZlIHRoZSByaWdodCB0byBnaXZlIHlvdXJzZWxmIG9yIG90aGVycyBleGNsdXNpdmUgYXVkaW8uIFlvdSBuZWVkIHRvIGFwcGx5IGZvciB0aGUgcmlnaHQgZnJvbSB0aGUgbW9kZXJhdG9yIG9yIGFzayB0aGUgbW9kZXJhdG9yIHRvIGdpdmUgeW91IGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzMiIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2FzayI+CisgICAgPHZhbHVlPkkgd291bGQgbGlrZSB0byBnZXQgdGhlIHJpZ2h0IGZvciBleGNsdXNpdmUgYXVkaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzMyIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2FjdGlvbiI+CisgICAgPHZhbHVlPkdpdmUgZXhjbHVzaXZlIGF1ZGlvIHRvIG1lIChhbHRlcm5hdGl2ZWx5IGNsaWNrIG9uIHlvdXIgdmlkZW8gcG9kIG9yIHByZXNzIEYxMik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNCIgbmFtZT0ibWljcm8gaXMgb24iPgorICAgIDx2YWx1ZT5NaWNyb3Bob25lIGlzIG9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM1IiBuYW1lPSJtaWNybyBpcyBvZmYiPgorICAgIDx2YWx1ZT5NaWNyb3Bob25lIGlzIG11dGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzYiIG5hbWU9ImhpZGVfY2hhdCI+CisgICAgPHZhbHVlPkhpZGUgY2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM3IiBuYW1lPSJoaWRlX2FjdGl2aXRpZXNfYW5kX2FjdGlvbnMiPgorICAgIDx2YWx1ZT5IaWRlIGFjdGl2aXRpZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzOCIgbmFtZT0iaGlkZV9maWxlc19leHBsb3JlciI+CisgICAgPHZhbHVlPkhpZGUgZmlsZXMgZXhwbG9yZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzOSIgbmFtZT0iaGlkZV9hY3Rpb25zX21lbnUiPgorICAgIDx2YWx1ZT5IaWRlIGFjdGlvbnMgbWVudTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQwIiBuYW1lPSJoaWRlX3NjcmVlbl9zaGFyaW5nIj4KKyAgICA8dmFsdWU+SGlkZSBzY3JlZW4gc2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQxIiBuYW1lPSJoaWRlX3doaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5IaWRlIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MiIgbmFtZT0ic2hvdyBtaWNyb3Bob25lIHN0YXR1cyI+CisgICAgPHZhbHVlPlNob3cgbWljcm8gc3RhdHVzIGluIHZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDMiIG5hbWU9ImxheW91dF9vcHRpb25zIj4KKyAgICA8dmFsdWU+TGF5b3V0IG9wdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0NCIgbmFtZT0iY2FsZW5kYXIgbmV3IGJ1dHRvbiI+CisgICAgPHZhbHVlPk5ldyBFdmVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ1IiBuYW1lPSJjYWxlbmRhciBwYXNzd29yZCBpbmZvIHRleHQiPgorICAgIDx2YWx1ZT5QYXNzd29yZCBwcm90ZWN0ZWQgYXJlIHRoZSBsaW5rcyB0byB0aGUgY29uZmVyZW5jZSB0aGF0IGFyZSBzZW5kIHRvIHRoZSBwYXJ0aWNpcGVudHMgd2hlbiB5b3Ugc2F2ZSB0aGUgY2FsZW5kYXIgZXZlbnQsIG5vdCB0aGUgcm9vbSEgVGhhdCBtZWFucyBpZiB5b3Ugc2F2ZSB0aGUgZXZlbnQgbXVsdGlwbGUgdGltZXMgYnV0IHdpdGggZGlmZmVyZW50IHBhc3N3b3JkcyBldmVyeSBwYXJ0aWNpcGVudCByZWNlaXZlcyBhIG5ldyBsaW5rIHRoYXQgaGFzIGEgZGlmZmVyZW50IHBhc3N3b3JkLiBCdXQgb2xkIGxpbmtzIHN0aWxsIHdvcmsgb25jZSBzZW5kITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ2IiBuYW1lPSJjYWxlbmRhciBlZGl0IGJ1dHRvbiI+CisgICAgPHZhbHVlPkVkaXQgZGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ3IiBuYW1lPSJzaXAgc2hvdyBkaWFsZXIiPgorICAgIDx2YWx1ZT5TaG93IHNpcCBkaWFsZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0OCIgbmFtZT0ic2lwIGNhbGwiPgorICAgIDx2YWx1ZT5DYWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDkiIG5hbWU9ImNhbGVuZGFyIGNvbnRhY3QgbGlzdCI+CisgICAgPHZhbHVlPlNob3cgY2FsZW5kYXIgZXZlbnRzIG9mIGNvbnRhY3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+WW91ciBob21lITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUxIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5QbGFuIHlvdXIgbWVldGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MiIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+V2F0Y2ggcmVjb3JkaW5nIGFuZCBpbnRlcnZpZXdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTMiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPkNob29zZSBhbmQgc3RhcnQgYSB3ZWItY29uZmVyZW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU0IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgdXNlcnMgYW5kIHJpZ2h0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU1IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgY29ubmVjdGlvbnMgYW5kIGtpY2sgdXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1NiIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIHVzZXJncm91cHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1NyIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIGNvbmZlcmVuY2Ugcm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1OCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIHN5c3RlbSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU5IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgbGFiZWxzIGFuZCB3b3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjAiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBMREFQIGFuZCBBRFMgY29uZmlndXJhdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MSIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+RXhwb3J0L0ltcG9ydCBTeXN0ZW0gQmFja3VwczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYyIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgbW9kZXJhdGlvbiBvciB0aGUgcmlnaHQgdG8gZHJhdyBvbiB3aGl0ZWJvYXJkIHRvIHVwbG9hZCwgYWRkLCBkZWxldGUgb3IgbG9hZCBmaWxlcyBhbmQgZm9sZGVycy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MyIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkVkaXQgdGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY0IiBuYW1lPSJzYWx1dGF0aW9uIj4KKyAgICA8dmFsdWU+UHJvZjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY1IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlB1Ymxpc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2NiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdGFydCBQdWJsaXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjciIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U3RvcCBQdWJsaXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+SG9zdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY5IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlB1Ymxpc2ggQXBwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzAiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UHVibGlzaCBJZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDcxIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHVjZSB0aGUgd2lkdGggb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbW92ZSBpdCBsZWZ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzIiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UmVkdWNlIHRoZSBoZWlnaHQgb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbW92ZSBpdCBib3R0b208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5SZWR1Y2UgdGhlIHggb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbWFrZSBpdCB3aWRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc0IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHVjZSB0aGUgeSBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtYWtlIGl0IGhpZ2hlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc1IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkZpbGwgdGhlc2Ugc2V0dGluZ3Mgc3RyZWFtIHlvdXIgc2NyZWVuIGRhdGEgdG8gM3RoIHBhcnR5IHByb3ZpZGVycyBsaWtlIGp1c3Rpbi50djwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc2IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlBsZWFzZSBzdGFydCBTY3JlZW4gc2hhcmluZyB0byBiZSBhYmxlIHRvIHB1Ymxpc2ggaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3NyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5Nb2RlcmF0b3IgcGVybWlzc2lvbiByZXF1aXJlZCB0byBzdGFydCByZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3OCIgbmFtZT0ibm8gcmlnaHQgZm9yIGV4Y2x1c2l2ZSBhdWRpbyI+CisgICAgPHZhbHVlPllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gYXBwbHkgZXhjbHVzaXZlIGF1ZGlvIHRvIGFueSBwYXJ0aWNpcGFudC4gWW91IG5lZWQgbW9kZXJhdGlvbiByb2xlIG9yIHRoZSByaWdodCBmb3IgZXhjbHVzaXZlIGF1ZGlvIHRvIG1ha2UgYW55IG1pY3JvcGhvbmUgZXhjbHVzaXZlIHR1cm5lZCBvbi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzkiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlVwbG9hZCBuZXcgZmlsZSB0byBmaWxlIGV4cGxvcmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODAiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPk9wZW4gbmV3IGRpYWxvZyB3aXRoIHNoYXJpbmcgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+QW4gZXhpc3RpbmcgbW9kZXJhdG9yIG11c3QgYXBwcm92ZSBpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgyIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5Bc2sgbW9kZXJhdG9yIHRvIHNoYXJlIHlvdXIgd2ViY2FtL21pY3JvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODMiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkdhdGhlciBmZWVkYmFjayBieSBjcmVhdGluZyBhIHBvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+UGFzdCBhbmQgY3VycmVudCBwb2xsIHJlc3VsdHMgYXMgY2hhcnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODUiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlZvdGUgaWYgdGhlcmUgaXMgYSBwb2xsIGZvciB0aGlzIGNvbmZlcmVuY2Ugcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg2IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5FZGl0IGNhbSBhbmQgbWljIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODciIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkNvbmZpcm0gYW5kIGxlYXZlIHRoZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODgiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkNhbGwgZXh0ZXJuYWwgcGVvcGxlIHZpYSBWb0lQL1NJUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg5IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5TZW5kIGFuIGVtYWlsIHdpdGggYSBkaXJlY3QgbGluayB0byB0aGlzIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Q2hhbmdlIHlvdXIgd2hpdGVib2FyZCBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkxIiBuYW1lPSJiYWNrdXAgYWRtaW4iPgorICAgIDx2YWx1ZT5NYXggdXBsb2FkIHNpemU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MiIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+QXNrIG1vZGVyYXRvciB0byBzaGFyZSB5b3VyIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MyIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+U3RhcnQgUHJpdmF0ZSBDaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTQiIG5hbWU9ImFsbF9wcml2YXRlX2NoYXQiPgorICAgIDx2YWx1ZT5BbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NSIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBzdGFydCBhIHByaXZhdGUgY2hhdCB3aXRoIHlvdXJzZWxmLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk2IiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5Zb3UndmUgYWxyZWFkeSBzdGFydGVkIGEgcHJpdmF0ZSBjaGF0IHdpdGggdGhpcyBwYXJ0aWNpcGFudC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NyIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHByaXZhdGUgY2hhdD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5OCIgbmFtZT0iU2VydmVycyI+CisgICAgPHZhbHVlPlNlcnZlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5OSIgbmFtZT0iU2VydmVycyI+CisgICAgPHZhbHVlPlNlcnZlcnMgcGFydGljaXBhdGluZyBpbiBjbHVzdGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDAiIG5hbWU9IlNlcnZlciBuYW1lIj4KKyAgICA8dmFsdWU+U2VydmVyIE5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMSIgbmFtZT0iU2VydmVyIEFkZHJlc3MiPgorICAgIDx2YWx1ZT5TZXJ2ZXIgQWRkcmVzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAyIiBuYW1lPSJTZXJ2ZXIgZGV0YWlscyI+CisgICAgPHZhbHVlPlNlcnZlciBkZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDMiIG5hbWU9IlNlbmQgU01TIj4KKyAgICA8dmFsdWU+U2VuZCBTTVM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNCIgbmFtZT0icHVibGlzaGluZ19tZXNzYWdlIj4KKyAgICA8dmFsdWU+UHVibGlzaGluZy4gVXNlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNSIgbmFtZT0iY21kX2xpbmVfYWRtaW4iPgorICAgIDx2YWx1ZT5UbyBzYXZlIHRpbWUgYW5kIGludGVybmV0IHRyYWZmaWMgeW91IGNhbiB1c2UgY29tbWFuZCBsaW5lIGFkbWluIHRvIGJhY2t1cC9yZXN0b3JlL3VwZ3JhZGU6XG4gMSkgZ28gdG8gT00gaW5zdGFsbCBkaXIgKGZvciBleC4gL29wdC9yZWQ1KSBcbiAyKSBzdG9wIE9NIChmb3IgZXguIC4vcmVkNS1zaHV0ZG93bi5zaClcbiAzKSAuL2FkbWluLnNoIC1iIC1maWxlIH4vdG9kYXlfb21fYmFja3VwLnppcCAoY3JlYXRlIGJhY2t1cCBvZiBjdXJyZW50IE9NKVxuIDQpIGRvd25sb2FkIGFyY2hpdmUgd2l0aCBuZXcgT01cbiA1KSBtdiAvb3B0L3JlZDUgL29wdC5yZWQ1LmJhayAobW92ZSB3b3JraW5nIHZlcnNpb24gb2YgT00ganVzdCBpbiBjYXNlIDopKVxuIDYpIGV4dHJhY3QgZG93bmxvYWRlZCBPTSB0byB0aGUgL29wdC9yZWQ1XG4gNykgLi9hZG1pbi5zaCAtaSAtZmlsZSB+L3RvZGF5X29tX2JhY2t1cC56aXAgKG9yICcuL2FkbWluLnNoIC1pIC1maWxlIH4vdG9kYXlfb21fYmFja3VwLnppcCAtLWRiLXR5cGUgbXlzcWwgLS1kYi11c2VyIG9tX3VzZXIgLS1kYi1wYXNzIG9tX3VzZXJfcGFzcycgaW4gY2FzZSBvZiB5b3UgYXJlIHVzaW5nIG5vbi1kZWZhdWx0IERCIClcbiA4KSBzdGFydCBPTVxuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDYiIG5hbWU9InB1YmxpY19yb29tX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5Sb29tcyBjb21tb24gdG8gYWxsIHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNyIgbmFtZT0icHJpdmF0ZV9yb29tX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5Sb29tcyBjb21tb24gdG8gdGhlIGN1cnJlbnQgdXNlciBncm91cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA4IiBuYW1lPSJteV9yb29tX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5Sb29tcyBvZiB0aGUgY3VycmVudCB1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDkiIG5hbWU9ImNyZWF0ZV9uZXdfcm9vbSI+CisgICAgPHZhbHVlPkNyZWF0ZS9Nb2RpZnkgYXBwb2ludG1lbnQgc3BlY2lhbCByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTAiIG5hbWU9Im11bHRpcGxlX2FkZHJlc3NlcyI+CisgICAgPHZhbHVlPllvdSBjYW4gZW50ZXIgbXVsdGlwbGUgYWRkcmVzc2VzIGluIHRoZSBmb3JtYXQ6IGZpcnN0bmFtZTEgbGFzdG5hbWUxICZsdDtlbWFpbDEmZ3Q7LCJmaXJzdG5hbWUyIGxhc3RuYW1lMiIgJmx0O2VtYWlsMiZndDssJ2ZpcnN0bmFtZTMgbGFzdG5hbWUzJyAmbHQ7ZW1haWwzJmd0OywgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTEiIG5hbWU9InN0cmVhbV92b2x1bWUiPgorICAgIDx2YWx1ZT5BZGp1c3Qgc3RyZWFtIHZvbHVtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTEyIiBuYW1lPSJtaWNyb3Bob25lX3ZvbHVtZSI+CisgICAgPHZhbHVlPkFkanVzdCBtaWNyb3Bob25lIHZvbHVtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTEzIiBuYW1lPSJjaGF0X21vZGVyYXRlZCI+CisgICAgPHZhbHVlPklzIGNoYXQgbW9kZXJhdGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTQiIG5hbWU9ImNoYXRfbW9kZXJhdGVkIj4KKyAgICA8dmFsdWU+QWxsb3cgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE1IiBuYW1lPSJjaGF0X29wZW5lZCI+CisgICAgPHZhbHVlPkNoYXQgcGFuZWwgb3BlbmVkIGJ5IGRlZmF1bHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNiIgbmFtZT0iZmlsZXNfb3BlbmVkIj4KKyAgICA8dmFsdWU+RmlsZXMgcGFuZWwgb3BlbmVkIGJ5IGRlZmF1bHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNyIgbmFtZT0ic2VydmVyIGFkbWluIHNlY3Rpb24gbGFzdHBpbmciPgorICAgIDx2YWx1ZT5MYXN0IHBpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxOCIgbmFtZT0ic2VydmVyIGFkbWluIHNlY3Rpb24gbGFzdHBpbmcgaW5mbyI+CisgICAgPHZhbHVlPkV2ZXJ5IHNsYXZlIHNlbmRzIGEgcGluZyB0byB0aGUgbWFzdGVyIGV2ZXJ5IDMgc2Vjb25kcyAoY29uZmlndXJhYmxlKS4gU2xhdmUgbGFzdFBpbmcgbXVzdCBiZSBzbWFsbGVyIHRoZW4gMSBtaW51dGUgc28gdGhhdCB0aGUgbWFzdGVyIHVzZXMgdGhlIHNsYXZlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE5IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcG9ydCI+CisgICAgPHZhbHVlPkhUVFAgUG9ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIwIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gdXNlciI+CisgICAgPHZhbHVlPlVzZXIgKFNPQVAtQWNjZXNzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIxIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcGFzc3dvcmQiPgorICAgIDx2YWx1ZT5QYXNzd29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIyIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gd2ViYXBwIHBhdGgiPgorICAgIDx2YWx1ZT5XZWJhcHAgcGF0aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIzIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcHJvdG9jb2wiPgorICAgIDx2YWx1ZT5Qcm90b2NvbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI0IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcGluZyBydW5uaW5nIj4KKyAgICA8dmFsdWU+UGluZyBydW5uaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjUiIG5hbWU9InNlcnZlciBhZG1pbiBhY3RpdmUiPgorICAgIDx2YWx1ZT5BY3RpdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyNiIgbmFtZT0iZ2VuZXJhdGVfaGFzaCI+CisgICAgPHZhbHVlPkdlbmVyYXRlIFVSTDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI3IiBuYW1lPSJuZXR3b3JrIHRlc3RpbmcgbGluayI+CisgICAgPHZhbHVlPk5ldHdvcmsgdGVzdGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI4IiBuYW1lPSJyb29tX29wdGlvbnMiPgorICAgIDx2YWx1ZT5BdXRvIHNlbGVjdCBpbnRlcnZpZXcgdmlkZW8gcG9kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjkiIG5hbWU9ImZvbnRfdW5kZXJsaW5lIj4KKyAgICA8dmFsdWU+VW5kZXJsaW5lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzAiIG5hbWU9ImZvbnRfc3R5bGUiPgorICAgIDx2YWx1ZT5Gb250IHN0eWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzEiIG5hbWU9ImFsbG93X2ZvbnRfc3R5bGVzIj4KKyAgICA8dmFsdWU+QWxsb3cgZm9udCBzdHlsZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMiIgbmFtZT0iZm9udF9jb2xvciI+CisgICAgPHZhbHVlPkZvbnQgY29sb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMyIgbmFtZT0iaHlwZXJsaW5rIj4KKyAgICA8dmFsdWU+SHlwZXJsaW5rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzQiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW4iPgorICAgIDx2YWx1ZT5TaG93IHNlc3Npb24gc3RhdGlzdGljczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM1IiBuYW1lPSJjb25uZWN0aW9uIGFkbWluIj4KKyAgICA8dmFsdWU+U2Vzc2lvbiBkZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzYiIG5hbWU9InN5c3RlbV9pbXBvcnQiPgorICAgIDx2YWx1ZT5TeXN0ZW0gaW1wb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzciIG5hbWU9ImluY2x1ZGVfaW50b19iYWNrdXAiPgorICAgIDx2YWx1ZT5JbmNsdWRlIHVwbG9hZGVkIGZpbGVzIGFuZCByZWNvcmRpbmdzIGluIGJhY2t1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM4IiBuYW1lPSJyb29tX2FkbWluX3NpcCI+CisgICAgPHZhbHVlPkVuYWJsZSBTSVAgdHJhbnNwb3J0IGluIHRoZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzkiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19jb25maXJtIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIHByb3ZpZGUgdGhpcyB1c2VyIGFuIGV4Y2x1c2l2ZSBhdWRpbz88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU0MCIgbmFtZT0ibm9fdGltZXpvbmUiPgorICAgIDx2YWx1ZT5QbGVhc2Ugc3BlY2lmeSB5b3VyIHRpbWV6b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NDUiIG5hbWU9ImNvbnRlbnRfaXNfc2F2aW5nIj4KKyAgICA8dmFsdWU+Q29udGVudCBpcyBTYXZpbmcsIFBsZWFzZSB3YWl0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorPC9sYW5ndWFnZT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL3NwYW5pc2gueG1sIGIvV2ViQ29udGVudC9sYW5ndWFnZXMvc3BhbmlzaC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTczYjg2MgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL3NwYW5pc2gueG1sCkBAIC0wLDAgKzEsNDY1MiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKworPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworVGhpcyBGaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5IHRoZSBMYW5ndWFnZUVkaXRvciAKK3RvIGFkZCBuZXcgTGFuZ3VhZ2VzIG9yIG1vZGlmeS9jdXN0b21pemUgaXQgdXNlIHRoZSBMYW5ndWFnZUVkaXRvciAKK3NlZSBodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvTGFuZ3VhZ2VFZGl0b3IuaHRtbCBmb3IgRGV0YWlscyAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjLS0+Cis8bGFuZ3VhZ2UgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeG1sbnM6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbj0ibGFuZ3VhZ2UueHNkIj4KKyAgPHN0cmluZyBpZD0iMSIgbmFtZT0iY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPkNvbmZlcmVuY2lhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIiIG5hbWU9Im1lZXRpbmciPgorICAgIDx2YWx1ZT5SZXVuacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzIiBuYW1lPSJjbGFzc3Jvb20iPgorICAgIDx2YWx1ZT5FdmVudG9zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQiIG5hbWU9InNldHRpbmdzIj4KKyAgICA8dmFsdWU+QWp1c3RlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1IiBuYW1lPSJiZW51dHplciI+CisgICAgPHZhbHVlPlBlcmZpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2IiBuYW1lPSJhZG1pbiI+CisgICAgPHZhbHVlPkFkbWluaXN0cmFjacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3IiBuYW1lPSJzdG9wIj4KKyAgICA8dmFsdWU+RGV0ZW5lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5HcmFiYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOSIgbmFtZT0ibm9maWxlIj4KKyAgICA8dmFsdWU+Tm8gaGF5IG5pbmfDum4gYXJjaGl2byBkaXNwb25pYmxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwIiBuYW1lPSJyZWNvcmRieXRlYWNoZXIiPgorICAgIDx2YWx1ZT5HcmFiYWRvIHBvciBlbCBwcm9mZXNvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMSIgbmFtZT0iY29ubmVjdGVkdXNlcnMiPgorICAgIDx2YWx1ZT5Vc3VhcmlvcyBjb25lY3RhZG9zOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMiIgbmFtZT0ic3RhcnRjb25mIj4KKyAgICA8dmFsdWU+SW5pY2lhciBjb25mZXJlbmNpYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMyIgbmFtZT0ibXluYW1lIj4KKyAgICA8dmFsdWU+TWkgbm9tYnJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0IiBuYW1lPSJ2aWRlb2NvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT5WaWRlb2NvbmZlcmVuY2lhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1IiBuYW1lPSJpbXBvcnQiPgorICAgIDx2YWx1ZT5FbnZpYXIgdW4gYXJjaGl2bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNiIgbmFtZT0icmVmcmVzaGZpbGVzIj4KKyAgICA8dmFsdWU+QWN0dWFsaXphciBsYSBsaXN0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNyIgbmFtZT0idG9tYWluZmlsZSI+CisgICAgPHZhbHVlPk1hcmNhciBjb21vIGFyY2hpdm8gcHJpbmNpcGFsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4IiBuYW1lPSJuZXdwb2xsIj4KKyAgICA8dmFsdWU+TnVldmEgZW5jdWVzdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkiIG5hbWU9Im5ld3BvbGxoZWFkZXIiPgorICAgIDx2YWx1ZT5OdWV2YSBlbmN1ZXN0YSBwYXJhIGxhIGNvbmZlcmVuY2lhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwIiBuYW1lPSJxdWVzdGlvbiI+CisgICAgPHZhbHVlPlByZWd1bnRhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMSIgbmFtZT0icG9sbHR5cGUiPgorICAgIDx2YWx1ZT5UaXBvIGRlIEVuY3Vlc3RhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMiIgbmFtZT0iY3JlYXRlIj4KKyAgICA8dmFsdWU+Q3JlYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMiIG5hbWU9ImluZm9tZXNzYWdlIj4KKyAgICA8dmFsdWU+SW5mb3JtYWNpw7NuOiBjYWRhIHVzdWFyaW8gY29uZWN0YWRvIHJlY2liZSB1biBtZW5zYWplIGNvbiBsYSBudWV2YSBlbmN1ZXN0YS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQiIG5hbWU9ImNyZWF0cG9sbCI+CisgICAgPHZhbHVlPkNyZWFyIGVuY3Vlc3RhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1IiBuYW1lPSJjYW5jZWwiPgorICAgIDx2YWx1ZT5DYW5jZWxhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNiIgbmFtZT0ieWVzbm8iPgorICAgIDx2YWx1ZT5Tw60vTm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjciIG5hbWU9Im51bWVyaWMiPgorICAgIDx2YWx1ZT5WYWxvciBudW3DqXJpY28gWzEtMTBdPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4IiBuYW1lPSJwb2xsIj4KKyAgICA8dmFsdWU+RW5jdWVzdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkiIG5hbWU9Im1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5TZSBuZWNlc2l0YSBzZXIgbW9kZXJhZG9yIHBhcmEgY3JlYXIgdW5hIGVuY3Vlc3RhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMCIgbmFtZT0idm90ZSI+CisgICAgPHZhbHVlPlN1IHZvdG8gaGEgc2lkbyByZWdpc3RyYWRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxIiBuYW1lPSJhbHJlYWR5dm90ZWQiPgorICAgIDx2YWx1ZT5ZYSBoYSByZXNwb25kaWRvIGEgbGEgZW5jdWVzdGEgY29uIGFudGVyaW9yaWRhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMiIgbmFtZT0idm90aW5nIj4KKyAgICA8dmFsdWU+Vm90YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMiIG5hbWU9ImFuc3dlciI+CisgICAgPHZhbHVlPlN1IHJlc3B1ZXN0YTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQiIG5hbWU9InllcyI+CisgICAgPHZhbHVlPlPDrTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNSIgbmFtZT0ibm8iPgorICAgIDx2YWx1ZT5ObzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNiIgbmFtZT0icXVlc3Rpb253YW50Ij4KKyAgICA8dmFsdWU+RGVzZWEgc2FiZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3IiBuYW1lPSJwb2xscmVzdWx0cyI+CisgICAgPHZhbHVlPlJlc3VsdGFkb3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgiIG5hbWU9InF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+UHJlZ3VudGE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5IiBuYW1lPSJyZXN1bHRzIj4KKyAgICA8dmFsdWU+UmVzdWx0YWRvczo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAiIG5hbWU9ImFuc3dlcnMiPgorICAgIDx2YWx1ZT5SZXNwdWVzdGFzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MSIgbmFtZT0ibm9wb2xsIj4KKyAgICA8dmFsdWU+Tm8gaGF5IGVuY3Vlc3RhczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MiIgbmFtZT0idm90aW5ncyI+CisgICAgPHZhbHVlPlZvdGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzIiBuYW1lPSJtZWV0aW5nIj4KKyAgICA8dmFsdWU+UmV1bmnDs24gKG3DoXggNCBwdWVzdG9zKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NCIgbmFtZT0iY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPkNvbmZlcmVuY2lhIChtw6F4IDUwIHB1ZXN0b3MpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1IiBuYW1lPSJ0eXBlIj4KKyAgICA8dmFsdWU+VGlwbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NiIgbmFtZT0icmVtYWluaW5nc2VhdHMiPgorICAgIDx2YWx1ZT5PdHJvcyBwdWVzdG9zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3IiBuYW1lPSJhbHJlYWR5Y2hvc2VuIj4KKyAgICA8dmFsdWU+WWEgZnVlIHNlbGVjY2lvbmFkby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgiIG5hbWU9ImVudGVyIj4KKyAgICA8dmFsdWU+RW50cmFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5IiBuYW1lPSJtb2RsZWF2ZSI+CisgICAgPHZhbHVlPkVsIG1vZGVyYWRvciBoYSBhYmFuZG9uYWRvIGxhIHJldW5pw7NuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MCIgbmFtZT0ic3lzdGVtbWVzc2FnZSI+CisgICAgPHZhbHVlPkluZm9ybWFjacOzbiBkZWwgc2lzdGVtYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MSIgbmFtZT0iY2hvc3NlZGV2aWNlIj4KKyAgICA8dmFsdWU+U2VsZWNjaW9uYXIgZGlzcG9zaXRpdm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIiIG5hbWU9ImNob29zZWNhbSI+CisgICAgPHZhbHVlPlNlbGVjY2lvbmFyIGPDoW1hcmE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzIiBuYW1lPSJjaG9vc2VtaWMiPgorICAgIDx2YWx1ZT5TZWxlY2Npb25hciBtaWNyw7Nmb25vOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NCIgbmFtZT0ib2siPgorICAgIDx2YWx1ZT5BY2VwdGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1IiBuYW1lPSJjYW5jZWwyIj4KKyAgICA8dmFsdWU+Q2FuY2VsYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYiIG5hbWU9InJlY29uZWVjdG5lZWRlZCI+CisgICAgPHZhbHVlPk5lY2VzaXRhIHJlY29uZWN0YXJzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NyIgbmFtZT0iZWRpdHNldHVwIj4KKyAgICA8dmFsdWU+RWRpdGFyIGNvbmZpZ3VyYWNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4IiBuYW1lPSJjb3Vyc2UiPgorICAgIDx2YWx1ZT5DdXJzbzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkiIG5hbWU9Imxhbmd1YWdlIj4KKyAgICA8dmFsdWU+SWRpb21hOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MCIgbmFtZT0ib2syIj4KKyAgICA8dmFsdWU+QWNlcHRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MSIgbmFtZT0iY2FuY2VsMyI+CisgICAgPHZhbHVlPkNhbmNlbGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyIiBuYW1lPSJjbGVhcndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5Cb3JyYXIgcGl6YXJyYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MyIgbmFtZT0iY2xlYXJ3aGl0ZWJvYXJkcXVlc3Rpb24iPgorICAgIDx2YWx1ZT7Cv0Rlc2VhIGxpbXBpYXIgbGEgcGl6YXJyYSBhbnRlcyBkZSBhw7FhZGlyIHVuYSBudWV2YSBpbWFnZW4/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0IiBuYW1lPSJkb250YXNrYWdhaW4iPgorICAgIDx2YWx1ZT5ObyB2b2x2ZXIgYSBwcmVndW50YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUiIG5hbWU9Im5vIj4KKyAgICA8dmFsdWU+bm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYiIG5hbWU9ImVkaXRzZXR1cDIiPgorICAgIDx2YWx1ZT5FZGl0YXIgY29uZmlndXJhY2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjciIG5hbWU9Im5lZWRjb25maXJtYXRpb253aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+UmVxdWVyaXIgY29uZmlybWFjacOzbiBhbnRlcyBkZSBsaW1waWFyIGxhIHBpemFycmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgiIG5hbWU9InVzZXJpbmZvIj4KKyAgICA8dmFsdWU+SW5mb3JtYWNpw7NuIGRlbCB1c3VhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5IiBuYW1lPSJjbGVhcmRyYXdhcmVhIj4KKyAgICA8dmFsdWU+TGltcGlhciBsYSBwaXphcnJhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwIiBuYW1lPSJ1bmRvIj4KKyAgICA8dmFsdWU+RGVzaGFjZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzEiIG5hbWU9InJlZG8iPgorICAgIDx2YWx1ZT5SZWhhY2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyIiBuYW1lPSJzZWxlY3RvYmplY3QiPgorICAgIDx2YWx1ZT5TZWxlY2Npb25hciB1biBvYmpldG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMiIG5hbWU9InRleHQiPgorICAgIDx2YWx1ZT5UZXh0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NCIgbmFtZT0icGFpbnQiPgorICAgIDx2YWx1ZT5QaW50YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUiIG5hbWU9ImRyYXdsaW5lIj4KKyAgICA8dmFsdWU+VHJhemFyIHVuYSBsw61uZWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYiIG5hbWU9ImRyYXd1Ij4KKyAgICA8dmFsdWU+U3VicmF5YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzciIG5hbWU9InJlY3QiPgorICAgIDx2YWx1ZT5SZWN0w6FuZ3VsbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OCIgbmFtZT0iZWxsaXBzZSI+CisgICAgPHZhbHVlPkVsaXBzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OSIgbmFtZT0iYXJyb3ciPgorICAgIDx2YWx1ZT5GbGVjaGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAiIG5hbWU9ImRlbGV0ZWNob3NlbiI+CisgICAgPHZhbHVlPkJvcnJhciBlbCDDrXRlbSBlc2NvZ2lkbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MSIgbmFtZT0iYXBwbGl5bW9kIj4KKyAgICA8dmFsdWU+U29saWNpdGFyIHNlciBtb2RlcmFkb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIiIG5hbWU9ImFwcGx5Ij4KKyAgICA8dmFsdWU+U29saWNpdGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzIiBuYW1lPSJjYW5jZWwiPgorICAgIDx2YWx1ZT5DYW5jZWxhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NCIgbmFtZT0ibW9kIj4KKyAgICA8dmFsdWU+VGVuZ28gdW5hIHByZWd1bnRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1IiBuYW1lPSJjbG9zZSI+CisgICAgPHZhbHVlPkNlcnJhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NiIgbmFtZT0iaXRhbGljIj4KKyAgICA8dmFsdWU+SXTDoWxpY2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODciIG5hbWU9ImJvbGQiPgorICAgIDx2YWx1ZT5OZWdyaXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4IiBuYW1lPSJ3YWl0aW5nIj4KKyAgICA8dmFsdWU+RW4gZXNwZXJhLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5IiBuYW1lPSJhcHBseU1lc3NhZ2UiPgorICAgIDx2YWx1ZT5VbiB1c3VhcmlvIHNvbGljaXRhIGxhIG1vZGVyYWNpw7NuOyBwdWVkZSBjb25jZWRlcmxlIGFjY2VzbyBzw7NsbyBhIGxhIHBpemFycmEgbyBjYW1iaWFyIHBvciBjb21wbGV0byBlbCByb2wgZGUgbGEgbW9kZXJhY2nDs24uIFVzdWFyaW86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwIiBuYW1lPSJhY2NlcHQiPgorICAgIDx2YWx1ZT5BY2VwdGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxIiBuYW1lPSJyZWplY3QiPgorICAgIDx2YWx1ZT5EZW5lZ2FyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyIiBuYW1lPSJjYW5jZWwiPgorICAgIDx2YWx1ZT5DYW5jZWxhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MyIgbmFtZT0ic2VuZG1vZHJlcXVlc3RtZXNzYWdlIj4KKyAgICA8dmFsdWU+RW52aWFuZG8gbGEgc29saWNpdHVkIGEgbG9zIHNpZ3VpZW50ZXMgdXN1YXJpb3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQiIG5hbWU9ImFjY2VwdCI+CisgICAgPHZhbHVlPkFjZXB0YWRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1IiBuYW1lPSJyZWplY3QiPgorICAgIDx2YWx1ZT5SZWNoYXphZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYiIG5hbWU9ImNoYW5nZW1vZCI+CisgICAgPHZhbHVlPkNhbWJpYXIgZGUgbW9kZXJhZG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3IiBuYW1lPSJub25tb2RlcnJvcm1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Vc3RlZCBubyBlcyBtb2RlcmFkb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgiIG5hbWU9Im1vZGVyYXRvciI+CisgICAgPHZhbHVlPk1vZGVyYWRvcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkiIG5hbWU9InJvb21mdWxsbWVzc2FnZSI+CisgICAgPHZhbHVlPkxvIHNlbnRpbW9zLCBwZXJvIGVzdGEgc2FsYSBlc3TDoSBsbGVuYS4gSW50w6ludGVsbyBtw6FzIHRhcmRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMCIgbmFtZT0iZWxsbGlwc2UiPgorICAgIDx2YWx1ZT5FbGlwc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxIiBuYW1lPSJjbG9zZSI+CisgICAgPHZhbHVlPkNlcnJhZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyIiBuYW1lPSJBdXRoRXJyb3IiPgorICAgIDx2YWx1ZT5lcnJvciBlbiBsYSBpbnRyb2R1Y2Npw7NuIGRlIGRhdG9zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMyIgbmFtZT0ibWluNHVzZXJuYW1lIj4KKyAgICA8dmFsdWU+ZWwgbm9tYnJlIGRlIHVzdWFyaW8gZGViZSBjb250ZW5lciBhbCBtZW5vcyA0IGNhcmFjdGVyZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0IiBuYW1lPSJtaW40cGFzcyI+CisgICAgPHZhbHVlPmxhIGNsYXZlIGRlIHVzdWFyaW8gZGViZSBjb250ZW5lciBhbCBtZW5vcyA0IGNhcmFjdGVyZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1IiBuYW1lPSJ1c2VybmFtZXRha2VuIj4KKyAgICA8dmFsdWU+RXN0ZSBub21icmUgZGUgdXN1YXJpbyB5YSBleGlzdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2IiBuYW1lPSJlbWFpbHRha2VuIj4KKyAgICA8dmFsdWU+RXN0ZSBlbWFpbCB5YSBlc3TDoSByZWdpc3RyYWRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNyIgbmFtZT0iZW1haWx0YWtlbiI+CisgICAgPHZhbHVlPkVycm9yIGRlbCBzaXN0ZW1hLCBwb3IgZmF2b3IgY29udGFjdGUgY29uIGVsIGFkbWluaXN0cmFkb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4IiBuYW1lPSJBdXRobG9naW4iPgorICAgIDx2YWx1ZT5FbnRyYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5IiBuYW1lPSJBdXRodXNlciI+CisgICAgPHZhbHVlPlVzdWFyaW86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMCIgbmFtZT0iQXV0aHBhc3MiPgorICAgIDx2YWx1ZT5Db250cmFzZcOxYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExIiBuYW1lPSJBdXRobGFuZyI+CisgICAgPHZhbHVlPklkaW9tYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIiIG5hbWU9IkF1dGhyZWciPgorICAgIDx2YWx1ZT5FbnRyYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzIiBuYW1lPSJyZWdmb3JtaGVhZCI+CisgICAgPHZhbHVlPlJlZ2lzdHJhcnNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNCIgbmFtZT0icmVnZm9ybXVzZXIiPgorICAgIDx2YWx1ZT5Vc3VhcmlvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUiIG5hbWU9InJlZ2Zvcm1wYXNzIj4KKyAgICA8dmFsdWU+Q29udHJhc2XDsWE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNiIgbmFtZT0icmVnZm9ybXJldHlwZSI+CisgICAgPHZhbHVlPkNvbnRyYXNlw7FhIChvdHJhIHZleik6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNyIgbmFtZT0icmVnZm9ybWZpcnN0bmFtZSI+CisgICAgPHZhbHVlPk5vbWJyZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4IiBuYW1lPSJyZWdmb3JtbGFzdG5hbWUiPgorICAgIDx2YWx1ZT5BcGVsbGlkb3M6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOSIgbmFtZT0icmVnZm9ybW1haWwiPgorICAgIDx2YWx1ZT5Db3JyZW8gZWxlY3Ryw7NuaWNvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAiIG5hbWU9InJlZ2Zvcm1zdGF0ZSI+CisgICAgPHZhbHVlPlBhw61zOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjEiIG5hbWU9InJlZ2Zvcm1idG4xIj4KKyAgICA8dmFsdWU+UmVnaXN0cmFyc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyIiBuYW1lPSJyZWdmb3JtYnRuMiI+CisgICAgPHZhbHVlPkNhbmNlbGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMyIgbmFtZT0iQXV0aGJ0bjIiPgorICAgIDx2YWx1ZT7Cv05vIGVzdMOhIHJlZ2lzdHJhZG8/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+SW5pY2lvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNSIgbmFtZT0idXNlcmFkbWluIj4KKyAgICA8dmFsdWU+VXN1YXJpb3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2IiBuYW1lPSJncm91cGFkbWluIj4KKyAgICA8dmFsdWU+R3J1cG9zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNyIgbmFtZT0ib3JnYWRtaW4iPgorICAgIDx2YWx1ZT5Pcmdhbml6YWNpb25lczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgiIG5hbWU9ImhlYWRjb25mIj4KKyAgICA8dmFsdWU+U2FsYXMgZGUgQ29uZmVyZW5jaWFzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOSIgbmFtZT0iY29uZl9wdWIiPgorICAgIDx2YWx1ZT5Qw7pibGljbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAiIG5hbWU9ImhlYWRfb3JnIj4KKyAgICA8dmFsdWU+T3JnYW5pemFjacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzEiIG5hbWU9ImJ0bl9lbnRlcnJvb20iPgorICAgIDx2YWx1ZT5FbnRyYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2xvZ2luIj4KKyAgICA8dmFsdWU+SW5pY2lvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMyIgbmFtZT0idXNlcmFsdGVyc2VsZl9wYXNzIj4KKyAgICA8dmFsdWU+Q29udHJhc2XDsWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Bhc3NyZXR5cGUiPgorICAgIDx2YWx1ZT5Fc2NyaWJpciBkZSBudWV2bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUiIG5hbWU9InVzZXJhbHRlcnNlbGZfZmlyc3RuYW1lIj4KKyAgICA8dmFsdWU+Tm9tYnJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNiIgbmFtZT0idXNlcmFsdGVyc2VsZl9sYXN0bmFtZSI+CisgICAgPHZhbHVlPkFwZWxsaWRvczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzciIG5hbWU9InVzZXJhbHRlcnNlbGZfZW1haWwiPgorICAgIDx2YWx1ZT5Db3JyZW8gRWxlY3Ryw7NuaWNvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOCIgbmFtZT0idXNlcmFsdGVyc2VsZl9iaXJ0aCI+CisgICAgPHZhbHVlPkZlY2hhIG5hY2ltaWVudG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3N0cmVldG5vIj4KKyAgICA8dmFsdWU+RGlyZWNjacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDAiIG5hbWU9InVzZXJhbHRlcnNlbGZfdG93biI+CisgICAgPHZhbHVlPkPDs2RpZ28vUG9ibGFjacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDEiIG5hbWU9InVzZXJhbHRlcnNlbGZfc3RhdGUiPgorICAgIDx2YWx1ZT5QYcOtczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIiIG5hbWU9InVzZXJhbHRlcnNlbGZfYWRyZXNzY29tbWVudCI+CisgICAgPHZhbHVlPk3DoXMgaW5mb3JtYWNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MyIgbmFtZT0idXNlcmFsdGVyc2VsZl9oZWFkZXIiPgorICAgIDx2YWx1ZT5EYXRvcyBkZSBVc3VhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NCIgbmFtZT0ic2F2ZW1lbnViYXJfc2F2ZWxhYmVsIj4KKyAgICA8dmFsdWU+R3VhcmRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUiIG5hbWU9InNhdmVtZW51YmFyX3NhdmVsYWJlbCI+CisgICAgPHZhbHVlPkd1YXJkYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2IiBuYW1lPSJhZG1pbl91c2VybGlzdF91c2VyX2lkIj4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3IiBuYW1lPSJhZG1pbl91c2VybGlzdF9sb2dpbiI+CisgICAgPHZhbHVlPkluaWNpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgiIG5hbWU9ImFkbWluX3VzZXJsaXN0X2ZpcnN0bmFtIj4KKyAgICA8dmFsdWU+Tm9tYnJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OSIgbmFtZT0iYWRtaW5fdXNlcmxpc3RfbGFzdG5hbWUiPgorICAgIDx2YWx1ZT5BcGVsbGlkbyhzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAiIG5hbWU9InR1cm5vdmVybGlzdF9uZXh0Ij4KKyAgICA8dmFsdWU+TW9zdHJhciBzaWd1aWVudGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxIiBuYW1lPSJ0dXJub3Zlcmxpc3RfcHJlIj4KKyAgICA8dmFsdWU+TW9zdHJhciBhbnRlcmlvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIiIG5hbWU9InNhdmVjb250ZW50X2NvbmZpcm0iPgorICAgIDx2YWx1ZT5FbGltaW5hciByZWdpc3RybzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMiIG5hbWU9InNhdmVjb250ZW50X2NvbmZpcm1fY2FuY2VsX2J0biI+CisgICAgPHZhbHVlPkNhbmNlbGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NCIgbmFtZT0ic2F2ZWNvbnRlbnRfY29uZmlybV9jb25maXJtX2J0biI+CisgICAgPHZhbHVlPkJvcnJhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTUiIG5hbWU9InNhdmVtZW51YmFyX2FkZGxhYmVsIj4KKyAgICA8dmFsdWU+TnVldm8gcmVnaXN0cm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU2IiBuYW1lPSJzYXZlbWVudWJhcl9yZWxvYWRsYWJlbCI+CisgICAgPHZhbHVlPkFjdHVhbGl6YXIgcmVnaXN0cm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU3IiBuYW1lPSJzYXZlbWVudWJhcl9kZWxldGVsYWJlbCI+CisgICAgPHZhbHVlPkJvcnJhciByZWdpc3RybzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTgiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9zdGF0dXMiPgorICAgIDx2YWx1ZT5Fc3RhZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU5IiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fc3RhdHVzSXRlbSI+CisgICAgPHZhbHVlPmRlc2FjdGl2YWRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2MCIgbmFtZT0idXNlcmFsdGVyX2FkbWluX3N0YXR1c0l0ZW0iPgorICAgIDx2YWx1ZT5hY3RpdmFkbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjEiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9vcmdhbmlzYXRpb24iPgorICAgIDx2YWx1ZT5Pcmdhbml6YWNpb25lczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjIiIG5hbWU9ImNhbGVuZGFyX2ljb25sYWJlbCI+CisgICAgPHZhbHVlPkNhbGVuZGFyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYzIiBuYW1lPSJzYXZld2luZG93X2J0biI+CisgICAgPHZhbHVlPkNlcnJhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjQiIG5hbWU9Im9yZ2FuaXNhdGlvbnRhYmxlbGlzdF9pZHJvdyI+CisgICAgPHZhbHVlPklEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2NSIgbmFtZT0ib3JnYW5pc2F0aW9udGFibGVsaXN0X25hbWVyb3ciPgorICAgIDx2YWx1ZT5Ob21icmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY2IiBuYW1lPSJ1c2VydmFsdWVfbGV2ZWxpZDEiPgorICAgIDx2YWx1ZT5Vc3VhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2NyIgbmFtZT0idXNlcnZhbHVlX2xldmVsaWQyIj4KKyAgICA8dmFsdWU+TW9kZXJhZG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2OCIgbmFtZT0idXNlcnZhbHVlX2xldmVsaWQzIj4KKyAgICA8dmFsdWU+QWRtaW5pc3RyYWRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjkiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGxhYmVsIj4KKyAgICA8dmFsdWU+Tml2ZWwgZGUgdXN1YXJpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzAiIG5hbWU9Im9yZ3ZhbHVlX2hlYWRlciI+CisgICAgPHZhbHVlPk9yZ2FuaXphY2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTcxIiBuYW1lPSJvcmd2YWx1ZV9vcmduYW1lIj4KKyAgICA8dmFsdWU+bm9tYnJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MiIgbmFtZT0ib3JndmFsdWVfb3JnbmFtZSI+CisgICAgPHZhbHVlPkHDsWFkaXIgb3JnYW5pemFjacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzMiIG5hbWU9Im9yZ3ZhbHVlX29yZ25hbWUiPgorICAgIDx2YWx1ZT5Bw7FhZGlyIG9yZ2FuaXphY2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc0IiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luIj4KKyAgICA8dmFsdWU+Q2FuY2VsYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc1IiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luIj4KKyAgICA8dmFsdWU+QcOxYWRpcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzYiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW4iPgorICAgIDx2YWx1ZT5FbGltaW5hciBvcmdhbml6YWNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3NyIgbmFtZT0ib3JndmFsdWVfdXNlcmxpc3QiPgorICAgIDx2YWx1ZT5Vc3VhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3OCIgbmFtZT0ib3JndmFsdWVfdXNlcmxpc3RhZGQiPgorICAgIDx2YWx1ZT5Bw7FhZGlyIHVzdWFyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc5IiBuYW1lPSJvcmd2YWx1ZV91c2VybGlzdGRlbGV0ZSI+CisgICAgPHZhbHVlPkVsaW1pbmFyIHVzdWFyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgwIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luaGVhZGVyIj4KKyAgICA8dmFsdWU+QcOxYWRpciB1c3VhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4MSIgbmFtZT0ib3JndmFsdWVfdXNlcndpbnNlYXJjaGZpZWxkIj4KKyAgICA8dmFsdWU+QnVzY2FyIHVzdWFyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgyIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luc2VhcmNoYnRuIj4KKyAgICA8dmFsdWU+QnVzY2FyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4MyIgbmFtZT0ib3JndmFsdWVfdXNlcndpbnNlYXJjaHJlc3VsdCI+CisgICAgPHZhbHVlPlVzdWFyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg0IiBuYW1lPSJsb2dpbndpbl9jaG9vc2VvcmdhbmlzYXRpb24iPgorICAgIDx2YWx1ZT5Pcmdhbml6YWNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NSIgbmFtZT0ibG9naW53aW5fY2hvb3Nlb3JnYW5pc2F0aW9uYnRuIj4KKyAgICA8dmFsdWU+RW50cmFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NiIgbmFtZT0ibmF2aV9yb29tYWRtaW4iPgorICAgIDx2YWx1ZT5TYWxhczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODciIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5TYWxhcyBkZSBDb25mZXJlbmNpYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODgiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODkiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5Ob21icmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkwIiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+cMO6YmxpY2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkxIiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+T3JnYW5pemFjaW9uZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkyIiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+U2FsYXMgZGUgQ29uZmVyZW5jaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkzIiBuYW1lPSJyb29tdmFsdWVfbmFtZSI+CisgICAgPHZhbHVlPk5vbWJyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTQiIG5hbWU9InJvb212YWx1ZV90eXBlIj4KKyAgICA8dmFsdWU+VGlwbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTUiIG5hbWU9InJvb212YWx1ZV9pc3B1YmxpYyI+CisgICAgPHZhbHVlPlDDumJsaWNhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NiIgbmFtZT0icm9vbXZhbHVlX2NvbW1lbnQiPgorICAgIDx2YWx1ZT5Db21lbnRhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NyIgbmFtZT0id2hpdGVib2FyZF9zYXZlaWNvbiI+CisgICAgPHZhbHVlPkd1YXJkYXIgeSBleHBvcnRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTgiIG5hbWU9IndoaXRlYm9hcmRfb3Blbmljb24iPgorICAgIDx2YWx1ZT5jYXJnYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk5IiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbmhlYWRlciI+CisgICAgPHZhbHVlPkd1YXJkYXIgY29tbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDAiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2ludGV4dCI+CisgICAgPHZhbHVlPkFyY2hpdm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAxIiBuYW1lPSJmaWxlcyI+CisgICAgPHZhbHVlPmFyY2hpdm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAyIiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbmJ0bjEiPgorICAgIDx2YWx1ZT5DYW5jZWxhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDMiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2luYnRuMiI+CisgICAgPHZhbHVlPkd1YXJkYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA0IiBuYW1lPSJycGNlcnJvcndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5FcnJvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDUiIG5hbWU9ImxvYWR3bWxfaGVhZGVyIj4KKyAgICA8dmFsdWU+Q2FyZ2FuZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA2IiBuYW1lPSJsb2Fkd21sX21lc3NzbG9hZCI+CisgICAgPHZhbHVlPk9iamV0b3MgY2FyZ2Fkb3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA3IiBuYW1lPSJsb2Fkd21sX21lc3NzeW5jIj4KKyAgICA8dmFsdWU+U2luY3Jvbml6YW5kbyBjbGllbnRlcywgZXNwZXJlIHVuIG1vbWVudG8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwOCIgbmFtZT0ibG9hZGltYWdlX21lc3Nsb2FkIj4KKyAgICA8dmFsdWU+Q2FyZ2FuZG8gZGF0b3MgZGUgaW1hZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwOSIgbmFtZT0ibG9hZGltYWdlX21lc3NzeW5jIj4KKyAgICA8dmFsdWU+U2luY3Jvbml6YW5kby4gRXNwZXJlLCBwb3IgZmF2b3IuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMCIgbmFtZT0ibG9hZHdtbF9jb25maXJtaGVhZGVyIj4KKyAgICA8dmFsdWU+TGltcGlhciBsYSBwaXphcnJhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMSIgbmFtZT0ibG9hZHdtbF9jb25maXJtbWVzcyI+CisgICAgPHZhbHVlPmxpbXBpYXIgbGEgcGl6YXJyYSwgdG9kYSBsYSBpbmZvcm1hY2nDs24gZGUgbGEgcGl6YXJyYSBzZSBwZXJkZXLDoTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTIiIG5hbWU9ImxvYWR3bWxfY29uZmlybW1lc3MyIj4KKyAgICA8dmFsdWU+Q29uZmlybWFyIGFudGVzIGRlIGNhcmdhciB1biBhcmNoaXZvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMyIgbmFtZT0ic2VuZF9pbnZpdGF0aW9uX2J0biI+CisgICAgPHZhbHVlPkVudmlhciBpbnZpdGFjacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTQiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5FbnZpYXIgaW52aXRhY2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE1IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fc3ViamVjdCI+CisgICAgPHZhbHVlPlRlbWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE2IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fcmVjaXBpZW50Ij4KKyAgICA8dmFsdWU+RGVzdGluYXRhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNyIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX21lc3NhZ2UiPgorICAgIDx2YWx1ZT5NZW5zYWplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxOCIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX2J0bl9jb25maXJtIj4KKyAgICA8dmFsdWU+RW52aWFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxOSIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX2J0bl9jYW5jZWwiPgorICAgIDx2YWx1ZT5jYW5jZWxhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjAiIG5hbWU9InNlbmRfY2hhdF90ZXh0X2J0biI+CisgICAgPHZhbHVlPmVudmlhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjEiIG5hbWU9Imludml0ZWRfdXNlcndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5EYXRvcyBkZSB1c3VhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyMiIgbmFtZT0iaW52aXRlZF91c2Vyd2luX3N1YmplY3QiPgorICAgIDx2YWx1ZT5TdSBub21icmUgcGFyYSBlc3RhIGNvbmZlcmVuY2lhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyMyIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2xvZ2luIj4KKyAgICA8dmFsdWU+Tm9tYnJlIChhcG9kbyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI0IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZmlyc3RuYW1lIj4KKyAgICA8dmFsdWU+Tm9tYnJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNSIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2xhc3RuYW1lIj4KKyAgICA8dmFsdWU+QXBlbGxpZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI2IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fbWFpbCI+CisgICAgPHZhbHVlPkVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNyIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2xhbmciPgorICAgIDx2YWx1ZT5JZGlvbWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI4IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZW50ZXIiPgorICAgIDx2YWx1ZT5FbnRyYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI5IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZW50ZXIiPgorICAgIDx2YWx1ZT5DYXJnYW5kbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzAiIG5hbWU9Imludml0ZWRfdXNlcndpbl9lbnRlciI+CisgICAgPHZhbHVlPkNhcmdhbmRvIGRhdG9zLCBlc3BlcmUgdW4gbW9tZW50bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzEiIG5hbWU9InVzZXJfcmVnaXN0ZXJGYWxzZVBXRCI+CisgICAgPHZhbHVlPkNvbnRyYXNlw7FhIGVycsOzbmVhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMiIgbmFtZT0idXNlcl9yZWdpc3RlckZhbHNlUFdESGVhZGVyIj4KKyAgICA8dmFsdWU+UG9yIGZhdm9yIGludHJvZHV6Y2EgZG9zIHZlY2VzIGxhcyBtaXNtYSBjb250cmFzZcOxYSBjb24gdW4gbcOtbmltbyBkZSA0IGNhcmFjdGVyZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMzIiBuYW1lPSJ1c2VyX3JlZ2lzdGVyTWFpbEVycm9yIj4KKyAgICA8dmFsdWU+Q29ycmVvIGludsOhbGlkbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzQiIG5hbWU9InVzZXJfcmVnaXN0ZXJNYWlsRXJyb3JIZWFkZXIiPgorICAgIDx2YWx1ZT5Vc3RlZCBoYSBpbnRyb2R1Y2lkbyB1bmEgZGlyZWNjacOzbiBubyB2w6FsaWRhIGRlIGNvcnJlbyBlbGVjdHLDs25pY288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM1IiBuYW1lPSJ1c2VyX3JlZ2lzdGVyU3VjY2VzcyI+CisgICAgPHZhbHVlPkVsIHJlZ2lzdHJvIHNlIGhhIGNvbXBsZXRhZG8gY29uIMOpeGl0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzYiIG5hbWU9InVzZXJfcmVnaXN0ZXJTdWNjZXNzSGVhZGVyIj4KKyAgICA8dmFsdWU+U3UgY3VlbnRhIGhhIHNpZG8gY3JlYWRhLCBwdWVkZSBpbmdyZXNhciBkZXNkZSBlc3RlIG1vbWVudG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM3IiBuYW1lPSJ1c2VyX3NoYXJpbmdfbWVzc2FnZSI+CisgICAgPHZhbHVlPk5vIHB1ZWRlIGNvbXBhcnRpciBzdSBlc2NyaXRvcmlvIGVuIGVzdGUgbW9tZW50by4gQWxndWllbiBtw6FzIHlhIGVzdMOhIGNvbXBhcnRpZW5kbyBzdSBlc2NyaXRvcmlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzgiIG5hbWU9InVzZXJfc2hhcmluZ19tZXNzYWdlSGVhZGVyIj4KKyAgICA8dmFsdWU+Q29tcGFydGljacOzbiBubyBwZXJtaXRpZGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM5IiBuYW1lPSJ1c2VyX2RvU3RhcnRTY3JlZW5WaWV3ZXIiPgorICAgIDx2YWx1ZT5Db21wYXJ0aXIvZ3JhYmFyIGVzY3JpdG9yaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQwIiBuYW1lPSJzY3JlZW5fd2FybkJhbmR3aWR0aCI+CisgICAgPHZhbHVlPlByb2JsZW1hcyBkZSBjb25leGnDs246IFN1IGFuY2hvIGRlIGJhbmRhIGVzIGluc3VmaWNpZW50ZSB5IHNlIHBlcmRlcsOhIGxhIGluZm9ybWFjacOzbi4gU2kgZWwgbWVuc2FqZSBzZSByZXBpdGUgY29uIGZyZWN1ZW5jaWEgc29saWNpdGUgYWwgbW9kZXJhZG9yIHJlZHVjaXIgbGEgY2FsaWRhZCBkZSBpbWFnZW4geSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQxIiBuYW1lPSJzY3JlZW5fdXNlcmxhYmVsIj4KKyAgICA8dmFsdWU+RXNjcml0b3JpbyBkZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQyIiBuYW1lPSJ3aGl0ZWJvYXJkX3RhYl9wYWludCI+CisgICAgPHZhbHVlPkRpYnVqYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQzIiBuYW1lPSJ3aGl0ZWJvYXJkX3RhYl9kb2N1bWVudCI+CisgICAgPHZhbHVlPkRvY3VtZW50bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDQiIG5hbWU9InRhYmJhcl9jaGF0aWNvbiI+CisgICAgPHZhbHVlPkNoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ1IiBuYW1lPSJ0YWJiYXJfZmlsZXNpY29uIj4KKyAgICA8dmFsdWU+QXJjaGl2b3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ2IiBuYW1lPSJ0YWJiYXJfcGFydGljaXBhbnRzaWNvbiI+CisgICAgPHZhbHVlPk1pZW1icm9zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0NyIgbmFtZT0ic3dmcHJlc2VudGF0aW9uX2xpc3RzYXZlb3JpZyI+CisgICAgPHZhbHVlPkRlc2NhcmdhciBlbCBkb2N1bWVudG8gb3JpZ2luYWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ4IiBuYW1lPSJzd2ZwcmVzZW50YXRpb25fbGlzdHNhdmVwZGYiPgorICAgIDx2YWx1ZT5EZXNjYXJnYXIgZWwgZG9jdW1lbnRvIGVuIHBkZjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDkiIG5hbWU9InN3ZnByZXNlbnRhdGlvbl9saXN0bG9hZHN3ZiI+CisgICAgPHZhbHVlPlN1YmlyIHVuIGFyY2hpdm8gYSBsYSBwaXphcnJhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MCIgbmFtZT0ibmF2aW1haW5fY29uZmlnIj4KKyAgICA8dmFsdWU+Q29uZmlndXJhY2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUxIiBuYW1lPSJ3aGl0ZWJvYXJkX2JvdW5kaW5nYm94X2RyYWciPgorICAgIDx2YWx1ZT5BcnJhc3RyYXIgZXN0ZSBvYmpldG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUyIiBuYW1lPSJ3aGl0ZWJvYXJkX2JvdW5kaW5nYm94X3Jlc2l6ZSI+CisgICAgPHZhbHVlPkFqdXN0YXIgZWwgdGFtYcOxbyBkZWwgb2JqZXRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MyIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfem9vbSI+CisgICAgPHZhbHVlPiU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU0IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9zbGlkZSI+CisgICAgPHZhbHVlPmRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1NSIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfZmlyc3RzbGlkZSI+CisgICAgPHZhbHVlPklyIGEgbGEgcHJpbWVyYSBww6FnaW5hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1NiIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfcHJlc2xpZGUiPgorICAgIDx2YWx1ZT5JciBhIGxhIHDDoWdpbmEgYW50ZXJpb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU3IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9uZXh0c2xpZGUiPgorICAgIDx2YWx1ZT5JciBhIGxhIHDDoWdpbmEgc2lndWllbnRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1OCIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfbGFzdHNsaWRlIj4KKyAgICA8dmFsdWU+SXIgYSBsYSDDumx0aW1hIHDDoWdpbmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU5IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl96b29tbWludXMiPgorICAgIDx2YWx1ZT5EaXNtaW51aXIgWm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjAiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3pvb21wbHVzIj4KKyAgICA8dmFsdWU+QXVtZW50YXIgWm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjEiIG5hbWU9InNhbHV0YXRpb25fbXIiPgorICAgIDx2YWx1ZT5Tci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYyIiBuYW1lPSJzYWx1dGF0aW9uX21pc3MiPgorICAgIDx2YWx1ZT5TcmEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MyIgbmFtZT0ibmF2aW1haW5fY29uZmFkbWluIj4KKyAgICA8dmFsdWU+Q29uZmlndXJhY2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY0IiBuYW1lPSJjb25mdGFibGVfaGVhZGVySWQiPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjUiIG5hbWU9ImNvbmZ0YWJsZV9oZWFkZXJrZXkiPgorICAgIDx2YWx1ZT5DbGF2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjYiIG5hbWU9ImNvbmZhZG1pbmZvcm1faGVhZGVyIj4KKyAgICA8dmFsdWU+Q29uZmlndXJhY2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY3IiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsa2V5Ij4KKyAgICA8dmFsdWU+Q2xhdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY4IiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsdXBkYXRlZCI+CisgICAgPHZhbHVlPsO6bHRpbWEgYWN0dWFsaXphY2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY5IiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsdXBkYXRlZGJ5Ij4KKyAgICA8dmFsdWU+YWN0dWFsaXphZG8gcG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MCIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbGNvbW1lbnQiPgorICAgIDx2YWx1ZT5jb21lbnRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzEiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWxrZXkiPgorICAgIDx2YWx1ZT5WYWxvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzIiIG5hbWU9InR1cm5vdmVybGlzdF9tYXhyZXN1bHRzIj4KKyAgICA8dmFsdWU+ZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjczIiBuYW1lPSJvcmdhbmlzYXRpb25fdXNlcnNoZWFkZXIiPgorICAgIDx2YWx1ZT5Vc3VhcmlvczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzQiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2ljb25kZWxldGUiPgorICAgIDx2YWx1ZT5FbGltaW5hciB1c3VhcmlvIGRlIGxhIG9yZ2FuaXphY2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc1IiBuYW1lPSJvcmdhbmlzYXRpb25fdXNlcnNkZWxldGVkaGVhZCI+CisgICAgPHZhbHVlPkVsaW1pbmFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NiIgbmFtZT0ib3JnYW5pc2F0aW9uX3VzZXJzYWxyZWFkYWRkZWQiPgorICAgIDx2YWx1ZT5Fc3RlIHVzdWFyaW8geWEgZXMgbWllbWJybyBkZSBsYSBvcmdhbml6YWNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NyIgbmFtZT0iZGFzaGJvYXJkX25ld3NoZWFkZXIiPgorICAgIDx2YWx1ZT5Ob3RpY2lhczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzgiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtzaGVhZGVyIj4KKyAgICA8dmFsdWU+RW5sYWNlcyByw6FwaWRvczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzkiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtDb25mIj4KKyAgICA8dmFsdWU+SXIgYSBsYSAoVsOtZGVvKUNvbmZlcmVuY2lhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MCIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua0F1ZGl0Ij4KKyAgICA8dmFsdWU+SXIgYWwgQXVkaXRvcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MSIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua3N1cHBvcnQiPgorICAgIDx2YWx1ZT5BeXVkYSB5IFNvcG9ydGUgVMOpY25pY288L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgyIiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tob21lcGFnZXVybCI+CisgICAgPHZhbHVlPmh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgzIiBuYW1lPSJkYXNoYm9hcmRfcXVpY2ttYWlsaW5nbGlzdHVybCI+CisgICAgPHZhbHVlPmh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9tYWlsLWxpc3RzLmh0bWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg0IiBuYW1lPSJkYXNoYm9hcmRfcmVwb3J0YnVncyI+CisgICAgPHZhbHVlPkVudmlhciAiYnVnIjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODUiIG5hbWU9ImRhc2hib2FyZF9yc3NsaXN0aXRlbWxpbmt0ZXh0Ij4KKyAgICA8dmFsdWU+bcOhczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODYiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtob21lcGFnZWxhYmVsIj4KKyAgICA8dmFsdWU+V2ViIGRlbCBQcm95ZWN0byAoaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODciIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmttYWlsaW5nbGlzdGxhYmVsIj4KKyAgICA8dmFsdWU+TGlzdGEgZGUgY29ycmVvIGRlbCBQcm95ZWN0byAoaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnL21haWwtbGlzdHMuaHRtbCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg4IiBuYW1lPSJsb2dpbl9yZW1lbWJlcnVzZXIiPgorICAgIDx2YWx1ZT5SZWNvcmRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODkiIG5hbWU9Im1haW5fbmF2aSI+CisgICAgPHZhbHVlPkNvbnRlbmlkbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTAiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5NaSBww6FnaW5hIGRlIGluaWNpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTEiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5SZXVuaW9uZXMgcHJvZ3JhbWFkYXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkyIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+RXZlbnRvcyBwcm9ncmFtYWRvczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTMiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5SZXVuaW9uZXMgcMO6YmxpY2FzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPlJldW5pb25lcyBwcml2YWRhczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTUiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5FdmVudG9zIHDDumJsaWNvczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTYiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5FdmVudG9zIHByaXZhZG9zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NyIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPkNvbnRlbmlkbyBww7pibGljbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTgiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5Db250ZW5pZG8gcHJpdmFkbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTkiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5Db250ZW5pZG8gcGVyc29uYWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAwIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+Li4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMSIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPk1vZGVyYWNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMiIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPlRlbmdvIHVuYSBwcmVndW50YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDMiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5FbmN1ZXN0YXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA0IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+U2VsZWNjaW9uZSB1biBhcmNoaXZvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNSIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPkNvbmZpZ3VyYWNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNiIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPkPDoW1hcmEgeSBtaWNyw7Nmb25vPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNyIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPkNvbmZpZ3VyYWNpw7NuIGRlIGxhIHBpemFycmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA4IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+U2FsaXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA5IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+UmVncmVzYXIgYSBsYXMgc2FsYXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEwIiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+U2FsaXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzExIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPsK/SGEgb2x2aWRhZG8gc3UgY29udHJhc2XDsWE/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMiIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5SZXNldGVhciBjb250cmFzZcOxYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTMiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+UG9yIGVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxNCIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5Qb3IgaW5pY2lvIGRlIHNlc2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE1IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlN1IGVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxNiIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5TdSBpbmljaW8gZGUgc2VzacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTciIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+RW52aWFyIGNvcnJlbyBjb24gZW5sYWNlIGRlIHJlc3RhYmxlY2ltaWVudG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE4IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPk5vIHNlIGhhIGVuY29udHJhZG8gZXNhIGRpcmVjY2nDs24gZGUgY29ycmVvLiBBc2Vnw7pyZXNlIGRlIGludHJvZHVjaXIgbGEgbWlzbWEgZGlyZWNjacOzbiBxdWUgdXRpbGl6w7MgYWwgY3JlYXIgbGEgY3VlbnRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxOSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5Fc2NyaWJhIG8gc3UgY29ycmVvIG8gc3Ugbm9tYnJlIGRlIHVzdWFyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIwIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPk5vIGhheSBuaW5nw7puIHVzdWFyaW8gY29uIGVzZSBub21icmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIxIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlNlIGxlIGhhIGVudmlhZG8gdW4gY29ycmVvIGNvbiB1biBlbmxhY2UgZXNwZWNpYWwuIFNpIG5vIGFwYXJlY2UgZXN0ZSBjb3JyZW8gcmV2aXNlIGxhIGNvbmZpZ3VyYWNpw7NuIGRlIGZpbHRyb3MgZGUgc3BhbSBkZSBzdSBzZXJ2aWRvciB5IHJlZW52w6llIGVzdGUgY29ycmVvIG51ZXZhbWVudGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyMiIgbmFtZT0iZXJyb3J0eXBlIj4KKyAgICA8dmFsdWU+RXJyb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIzIiBuYW1lPSJlcnJvcnR5cGUiPgorICAgIDx2YWx1ZT5NZW5zYWplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNCIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+Tm8gc2UgZW5jb250csOzIGFsIHVzdWFyaW8gKG3DqXRvZG8gZGUgZ2VuZXJhY2nDs24gZGUgY2xhdmVzIGluY29ycmVjdG8pLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjUiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPkdlbmVyYXIgY29udHJhc2XDsWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI2IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5JbmljaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI3IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5jYW1iaWFyIGNvbnRyYXNlw7FhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyOCIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+bnVldmEgY29udHJhc2XDsWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI5IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT52dWVsdmEgYSBlc2NyaWJpciBsYSBjb250cmFzZcOxYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzAiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPkxhcyBjb250cmFzZcOxYXMgaW50cm9kdWNpZGFzIG5vIHNvbiBpZ3VhbGVzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzEiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPkVzY3JpYmEgNCDDsyBtw6FzIGNhcmFjdGVyZXMuIERpc3Rpbmd1ZSBtYXnDunNjdWxhcyBkZSBtaW7DunNjdWxhczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzIiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPkxhIGNvbnRyYXNlw7FhIGhhIHNpZG8gY2FtYmlhZGEsIGFob3JhIHB1ZWRlIGluaWNpYXIgc2VzacOzbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMzIiBuYW1lPSJycGNjYWxsYmFjayI+CisgICAgPHZhbHVlPkFjZXB0YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM0IiBuYW1lPSJycGNnZW5lcmFsZXJyb3IiPgorICAgIDx2YWx1ZT5FcnJvciBkZXNjb25vY2lkby4gRW52w61lIGVzdGEgaW5mb3JtYWNpw7NuIGFsIGFkbWluaXN0cmFkb3IgZGVsIHNpc3RlbWEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5ObyBzZSBlbmNvbnRyw7MgYWwgdXN1YXJpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzYiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+Q29udHJhc2XDsWEgaW5jb3JyZWN0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzciIG5hbWU9ImxvZ291dCI+CisgICAgPHZhbHVlPkhhIHNhbGlkbyBkZWwgc2lzdGVtYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzgiIG5hbWU9InJlZ2lzdHJhdGlvbiI+CisgICAgPHZhbHVlPlJlZ2lzdHJvIGRlc2FjdGl2YWRvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzkiIG5hbWU9InJlZ2lzdHJhdGlvbiI+CisgICAgPHZhbHVlPkNvcnJlbyBpbmNvcnJlY3RvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MCIgbmFtZT0icmVnaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+bm9tYnJlIGRlIGFyY2hpdm8gZHVwbGljYWRvLCBwb3IgZmF2b3Igc2VsZWNjaW9uZSBvdHJvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MSIgbmFtZT0iZmlsZWJyb3dzZXIiPgorICAgIDx2YWx1ZT5lbCBub21icmUgZGVsIGFyY2hpdm8gZXMgZGVtYXNpYWRvIGNvcnRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MiIgbmFtZT0iZmlsZWJyb3dzZXIiPgorICAgIDx2YWx1ZT5ObyBzZSBwdWRvIGd1YXJkYXIgbGEgZGlyZWNjacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDMiIG5hbWU9InVzZXJhZG1pbiI+CisgICAgPHZhbHVlPkVsIHVzdWFyaW8gZnVlIGHDsWFkaWRvLCBzaW4gZW1iYXJnbyBkZWJlcsOhIGVzdGFyIGFsIG1lbm9zIGVuIHVuYSBvcmdhbml6YWNpw7NuIHBhcmEgcG9kZXIgaW5pY2lhciBsYSBzZXNpw7NuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDQiIG5hbWU9ImFkbWluZm9ybXMiPgorICAgIDx2YWx1ZT5OdWV2YSBncmFiYWNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+Tm8gc2UgZW5jb250csOzIHVuIGNhbXBvIGVuIGVzdGUgRmllbGRJZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ2IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5ObyBzZSBlbmNvbnRyw7MgdW5hIGV0aXF1ZXRhIHBhcmEgZXN0ZSBjYW1wby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ3IiBuYW1lPSJlcnJvcm1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZSBuZWNlc2l0YSBhdXRvcml6YWNpw7NuIGRlbCBhZG1pbmlzdHJhZG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0OCIgbmFtZT0ibWFpbm5hdmkiPgorICAgIDx2YWx1ZT5FZGl0b3IgZGUgaWRpb21hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0OSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+SWRpb21hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1MCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+SUQgZGUgbGEgZXRpcXVldGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUxIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5Ob21icmUgZGUgbGEgZXRpcXVldGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUyIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5WYWxvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTMiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPlZhbG9yIGRlIGxvcyBjYW1wb3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU0IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5Ob21icmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU1IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5WYWxvciBkZSBsYSBldGlxdWV0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTYiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPklEIGRlIGxhIGV0aXF1ZXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1NyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+SGEgZWxpbWluYWRvIGxhIGV0aXF1ZXRhIHBlcm8gbm8gZWwgY2FtcG8uIE5vIHNlIHB1ZWRlIGVsaW1pbmFyIHVuIGNhbXBvIHlhIHF1ZSBwdWVkZSB0ZW5lciBldGlxdWV0YXMgZW4gb3Ryb3MgaWRpb21hcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU4IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5JRCBkZSBsYSBldGlxdWV0YSBpbmNvcnJlY3RvLiBTdSBGaWVsZExhbmd1YWdlc3ZhbHVlc19JZCBubyBzZSBlbmNvbnRyw7MgZW4gbGEgYmFzZSBkZSBkYXRvcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU5IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5Vc3RlZCBubyBwdWVkZSBlbGltaW5hciBlc3RlIGNhbXBvLCBzw7NsbyBsYXMgZXRpcXVldGFzLiBObyBoYXkgdW5hIGV0aXF1ZXRhIGNhcmdhZGEgcG9yIGVsIG1vbWVudG8gbyBubyBzZSBlbmN1ZW50cmEgc2VsZWNjaW9uYWRhIG5pbmd1bmEgKHB1ZWRlIHF1ZSBubyBleGlzdGEgZW4gZWwgaWRpb21hIHNlbGVjY2lvbmFkbykuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+ZXhwb3J0YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYxIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5OZWNlc2l0YSBjZXJyYXIgbGEgc2VzacOzbiBwYXJhIHZlciBsb3MgY2FtYmlvcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYyIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5Bw7FhZGlyIG51ZXZvIGlkaW9tYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjMiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPmVsaW1pbmFyIGlkaW9tYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjQiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkHDsWFkaXIgbnVldm8gaWRpb21hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+Tm9tYnJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+YcOxYWRpciBpZGlvbWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY3IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5Db3BpYSBkZSBzZWd1cmlkYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY4IiBuYW1lPSJ0dXJub3Zlcmxpc3QiPgorICAgIDx2YWx1ZT5pciBhbCBpbmljaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY5IiBuYW1lPSJ0dXJub3Zlcmxpc3QiPgorICAgIDx2YWx1ZT5hbnRlcmlvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzAiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPnNpZ3VpZW50ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzEiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPmlyIGFsIGZpbmFsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MiIgbmFtZT0idmlkZW9ib3giPgorICAgIDx2YWx1ZT5lbCB1c3VhcmlvIGhhYmxhIChCeSBjbGlja2luZyBoZXJlIHlvdSBjYW4gZ2l2ZSBleGNsdXNpdmUgYXVkaW8gLyBtdXRlIHRoZSBtaWNyb3Bob25lIG9mIG90aGVycyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzczIiBuYW1lPSJ2aWRlb2JveCI+CisgICAgPHZhbHVlPmVuY2VuZGVyIG8gYXBhZ2FyIHNvbmlkbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPlNpc3RlbWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc1IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5TdSBjb25maWd1cmFjacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzYiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPlNhbHVkb3MsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3NyIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+RWRpdGFyIHBlcmZpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzgiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPk51ZXZvcyBtZW5zYWplczo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc5IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5TdWJpciBpbWFnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgwIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPkRhdG9zIGRlIHVzdWFyaW8gLSBFeHBvcnRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODEiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+RGViZW4gZXhpc3RpciB0b2RhcyBsYXMgb3JnYW5pemFjaW9uZXMgcHJldmlhbWVudGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgyIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPkluaWNpYXIgbGEgZXhwb3J0YWNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4MyIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5Qb3Igb3JnYW5pemFjacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODQiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+SW5pY2lhciBsYSBleHBvcnRhY2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg1IiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPkRhdG9zIGRlIHVzdWFyaW8gLSBJbXBvcnRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODYiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+U2VsZWNjaW9uZSBhcmNoaXZvIHhtbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODciIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPmltcG9ydGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4OCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+RXhwb3J0YXIgYSBYTUwgLSBFc3RvcyBhcmNoaXZvcyBwdWVkZW4gc2VyIHVzYWRvcyBwYXJhOiAtIENvbnRyaWJ1aXIgZW4gZWwgcHJveWVjdG8gLSBJbXBvcnRhcmxvcyBlbiBvdHJvIHNpc3RlbWEgLSBDb3BpYSBkZSBSZXNwYWxkbyAtIFBlcnNvbmFsaXphY2nDs24gLSBDb2xvY2FybG8gZW4gZWwgZGlyZWN0b3JpbyBkZSBpZGlvbWFzIHBhcmEgbGEgcHLDs3hpbWEgaW5zdGFsYWNpw7NuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODkiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPlNlbGVjY2lvbmUgdW4gYXJjaGl2byBkZSBpZGlvbWEgcXVlIHNlIGltcG9ydGFyw6EuIENvbmZpZ3VyZSBjb3JyZWN0YW1lbnRlIGVsIGlkaW9tYSBlbiBlbCBtZW7DuiBkZXNwbGVnYWJsZSAobm8gaW1wb3J0YSBlbCBub21icmUgcXVlIHRlbmdhIGVsIGFyY2hpdm8geWEgcXVlIHNlcsOhIGltcG9ydGFkbyBkZSB0b2RvcyBsb3MgbW9kb3MpLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTAiIG5hbWU9ImltcG9ydHdpbmRvdyI+CisgICAgPHZhbHVlPmltcG9ydGFyIC0gc2VsZWNjaW9uYXIgYXJjaGl2bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTEiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT5HdWFyZGFyIGNvbW8uLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkyIiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+Tm9tYnJlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTMiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT5Db21lbnRhcmlvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTQiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT5ndWFyZGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+R3JhYmFjaW9uZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk2IiBuYW1lPSJyZWNvcmRlciI+CisgICAgPHZhbHVlPlZpc29yIGRlIGdyYWJhY2lvbmVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NyIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+R3JhYmFjaW9uZXMgZGUgc2FsYXMgcMO6YmxpY2FzIHkgcHJpdmFkYXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk4IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5Vc3Vhcmlvczo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk5IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5Vbmlkbzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAwIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAxIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5Vc3VhcmlvcyBlbiBsYSBzYWxhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDIiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPmFjdHVhbGl6YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAzIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5MYSBzYWxhIGVzdGEgbGxlbmEuIFBvciBmYXZvciwgaW50w6ludGVsbyBtw6FzIHRhcmRlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDQiIG5hbWU9InJvb21zTGlzdCI+CisgICAgPHZhbHVlPlB1bHNlIHNvYnJlIHVuYSBzYWxhIHBhcmEgdmVyIGxvcyBkZXRhbGxlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDUiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPkNvbnZlcnNhciBjb24gbG9zIHVzdWFyaW9zIGRlIGVzdGEgc2FsYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA2IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5TYWxhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDciIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPlVzdWFyaW9zIGVuIGVzdGEgc2FsYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA4IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5kZXNkZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA5IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5yZXByb2R1Y2lyIGdyYWJhY2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDEwIiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5EdXJhY2nDs246PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+RmVjaGE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMiIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+TW9kbyBkZSBncmFiYWNpw7NuOiBubyBwdWVkZSBjYW1iaWFyIG5pbmfDum4gdmFsb3IgeWEgcXVlIHNlIHRyYXRhIGRlIHVuIGFyY2hpdm8gZ3JhYmFkby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDEzIiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5SZXByb2R1Y2lyIGVzdGEgZ3JhYmFjacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTQiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPlJlcHJvZHVjaXIgLyBQYXVzYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTUiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkluaWNpYXIgZ3JhYmFjacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTYiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkRldGVuZXIgZ3JhYmFjacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTciIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkdyYWJhY2nDs246PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxOCIgbmFtZT0icmVjb3JkX2Vycm9yX21zZyI+CisgICAgPHZhbHVlPkFjdHVhbG1lbnRlIGFsZ3VpZW4gc2UgZW5jdWVudHJhIGdyYWJhbmRvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTkiIG5hbWU9InJlY29yZF9tZXNzYWdlIj4KKyAgICA8dmFsdWU+R3JhYmFuZG8gcG9yIGVsIHVzdWFyaW86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyMCIgbmFtZT0icmVjb3JkX2NhbmNlbCI+CisgICAgPHZhbHVlPmNhbmNlbGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyMSIgbmFtZT0icmVjb3JkX2NhbmNhbF90b29sdGlwIj4KKyAgICA8dmFsdWU+TGEgZ3JhYmFjacOzbiBzZXLDoSBjYW5jZWxhZGEgeSBubyBzZSBndWFyZGFyw6EuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyMiIgbmFtZT0iY2FuY2VsX2RpYWxvZ19yZXN1bWUiPgorICAgIDx2YWx1ZT5yZWFudWRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjMiIG5hbWU9ImNhbmNlbF9kaWFsb2dfcmVzdW1lX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5DZXJyYXIgdmVudGFuYSB5IHJlYW51ZGFyIGdyYWJhY2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI0IiBuYW1lPSJwYWludHRvb2xzX2VsbGlwc2VfY29sb3IiPgorICAgIDx2YWx1ZT5DYW1iaWFyIGVsIGNvbG9yIGRlIGzDrW5lYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjUiIG5hbWU9ImNvbG9ycGlja2VyX2hlYWQiPgorICAgIDx2YWx1ZT5TZWxlY2Npb25hciBjb2xvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjYiIG5hbWU9InBhaW50dG9vbHNfbGluZV9kaXNhYmxlIj4KKyAgICA8dmFsdWU+RGVzaGFiaWxpdGFyIC8gSGFiaWxpdGFyIGNvbG9yIGRlIGzDrW5lYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjciIG5hbWU9InBhaW50dG9vbHNfZmlsbF9kaXNhYmxlIj4KKyAgICA8dmFsdWU+Q2FtYmlhciBjb2xvciBkZSByZWxsZW5vPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyOCIgbmFtZT0icGFpbnR0b29sc19saW5lX2Rpc2FibGUiPgorICAgIDx2YWx1ZT5EZXNoYWJpbGl0YXIgLyBIYWJpbGl0YXIgY29sb3IgZGUgcmVsbGVubzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjkiIG5hbWU9ImNoYW5nZV93aWR0aF9hcnJvd19kb3duX3NsaWRlciI+CisgICAgPHZhbHVlPkNhbWJpYXIgZ3Jvc29yIGRlIGzDrW5lYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzAiIG5hbWU9ImNsb3NlX3NtYWxsX3BvcHVwcyI+CisgICAgPHZhbHVlPkNlcnJhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzEiIG5hbWU9InBhaW50X3Rvb2xfbGV0dGVyIj4KKyAgICA8dmFsdWU+Y2FtYmlhciB0YW1hw7FvIGRlIGxldHJhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzMiIgbmFtZT0icmVjb3JkaW5nc2xpc3RfZGVsZXRlIj4KKyAgICA8dmFsdWU+RWxpbWluYXIgZ3JhYmFjacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzMiIG5hbWU9InJlY29yZGluZ3NsaXN0X3JlY29yZGVkQnlHdWVzdCI+CisgICAgPHZhbHVlPkludml0YWRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNCIgbmFtZT0icmVjb3JkaW5nc2xpc3RfcmVjb3JkZWRieSI+CisgICAgPHZhbHVlPlBvcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM1IiBuYW1lPSJyZWNvcmRpbmdzX3RhYmxlX2hlYWRfbmFtZSI+CisgICAgPHZhbHVlPk5vbWJyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzYiIG5hbWU9InJlY29yZGluZ3NfdGFibGVfaGVhZF9yb29tIj4KKyAgICA8dmFsdWU+U2FsYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzciIG5hbWU9InJlY29yZGluZ3NfdGFibGVfaGVhZF9kYXRlIj4KKyAgICA8dmFsdWU+RmVjaGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM4IiBuYW1lPSJyZWNvcmRfc3RhcnRfY2FuY2VsIj4KKyAgICA8dmFsdWU+Y2FuY2VsYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM5IiBuYW1lPSJyZWNvcmRfc3RhcnRfc3RhcnQiPgorICAgIDx2YWx1ZT5pbmljaWFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MCIgbmFtZT0iZmlsZXNicm93c2VyX3RhYmxlX2hlYWRfbmFtZSI+CisgICAgPHZhbHVlPk5vbWJyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDEiIG5hbWU9ImZpbGVzYnJvd3Nlcl90YWJsZV9oZWFkX2RhdGUiPgorICAgIDx2YWx1ZT5GZWNoYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDIiIG5hbWU9ImNoYXRfY2xlYXJfaGlzdG9yeSI+CisgICAgPHZhbHVlPkVsaW1pbmFyIHJlZ2lzdHJvIChsb2cpIGRlIGNoYXQgZW4gZWwgc2Vydmlkb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQzIiBuYW1lPSJjaGF0X292ZXJhbGxfaGVhZGVyIj4KKyAgICA8dmFsdWU+Q2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDQiIG5hbWU9ImNoYXRfc2VuZF9idG4iPgorICAgIDx2YWx1ZT5lbnZpYXIgbWVuc2FqZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDUiIG5hbWU9ImNoYXRfZW1vdF9idG4iPgorICAgIDx2YWx1ZT5FbW90aWNvbmVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NiIgbmFtZT0iY2hhdF9lbW90X3dpbiI+CisgICAgPHZhbHVlPkVtb3RpY29uZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ3IiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TZWxlY2Npb25hciBkaXNwb3NpdGl2b3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ4IiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT5BdWRpbyB5IHbDrWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDkiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPlPDs2xvIGF1ZGlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1MCIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2NvbWJvIj4KKyAgICA8dmFsdWU+U8OzbG8gdsOtZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1MSIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2NvbWJvIj4KKyAgICA8dmFsdWU+U2luIGF1ZGlvL3bDrWRlbyAoSW1hZ2VuIGZpamEpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1MiIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2luZm9fdGV4dCI+CisgICAgPHZhbHVlPk5vIHNlIHRyYW5zbWl0aXLDoSBhdWRpby92w61kZW8gZGVzZGUgc3UgZXF1aXBvLiBFbiBzdSBsdWdhciBzZSBtb3N0cmFyw6EgbGEgaW1hZ2VuIGRlIHN1IHBlcmZpbC4gU2VsZWNjaW9uZSBlc3RhIGNvbmZpZ3VyYWNpw7NuIHNpIHRpZW5lIHByb2JsZW1hcyBjb24gZWwgYW5jaG8gZGUgYmFuZGEgZGUgaW50ZXJuZXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1MyIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9tb25kYXkiPgorICAgIDx2YWx1ZT5MVTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTQiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfdHVlc2RheSI+CisgICAgPHZhbHVlPk1BPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV93ZWRuZXNkYXkiPgorICAgIDx2YWx1ZT5NSTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTYiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfdGh1cnNkYXkiPgorICAgIDx2YWx1ZT5KVTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTciIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfZnJpZGF5Ij4KKyAgICA8dmFsdWU+Vkk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU4IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3NhdHVyZGF5Ij4KKyAgICA8dmFsdWU+U8OBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1OSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9zdW5kYXkiPgorICAgIDx2YWx1ZT5ETzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjAiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfTW9uZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5MdW5lczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjEiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfVHVlc2RheUxhYmVsIj4KKyAgICA8dmFsdWU+TWFydGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MiIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9XZWRuZXNkYXlMYWJlbCI+CisgICAgPHZhbHVlPk1pw6lyY29sZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYzIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1RodXJzZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5KdWV2ZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY0IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX0ZyaWRheUxhYmVsIj4KKyAgICA8dmFsdWU+Vmllcm5lczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjUiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfU2F0dXJkYXlMYWJlbCI+CisgICAgPHZhbHVlPlPDoWJhZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY2IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1N1bmRheUxhYmVsIj4KKyAgICA8dmFsdWU+RG9taW5nbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjciIG5hbWU9ImNhbGVuZGFyX3dlZWtudW1iZXJfaGVhZGVyIj4KKyAgICA8dmFsdWU+UyM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY4IiBuYW1lPSJjYWxlbmRhcl93ZWVrbnVtYmVyX2hlYWRlclRvb2x0aXAiPgorICAgIDx2YWx1ZT5Ow7ptZXJvIGRlIHNlbWFuYSBkZSBjYWxlbmRhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2OSIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPkVuZXJvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3MCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPkZlYnJlcm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDcxIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+TWFyem88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDcyIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+QWJyaWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDczIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+TWF5bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzQiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5KdW5pbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzUiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5KdWxpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzYiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5BZ29zdG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc3IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+U2VwdGllbWJyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzgiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5PY3R1YnJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3OSIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPk5vdmllbWJyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODAiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5EaWNpZW1icmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgxIiBuYW1lPSJjYWxlbmRhcndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5DYWxlbmRhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4MiIgbmFtZT0icm9vbWFkbWluX2xhYmVsTnVtYmVyT2ZQYXJ0aWNpcGFudHMiPgorICAgIDx2YWx1ZT5QYXJ0aWNpcGFudGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4MyIgbmFtZT0icm9vbVZhbHVlX2FkdmFuY2VkU2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Nb3N0cmFyIGxhIGNvbmZpZ3VyYWNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NCIgbmFtZT0icm9vbUFkbWluX2xheW91dF92aWRlb1giPgorICAgIDx2YWx1ZT5YIHwgWTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODUiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfdmlkZW9ZIj4KKyAgICA8dmFsdWU+QW5jaG8gfCBBbHRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NiIgbmFtZT0icm9vbUFkbWluX2xheW91dCI+CisgICAgPHZhbHVlPkNvbnRlbmVkb3IgZGUgdsOtZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NyIgbmFtZT0icm9vbUFkbWluX2xheW91dF9tb2QiPgorICAgIDx2YWx1ZT5Db250ZW5lZG9yIGRlIG1vZGVyYWNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4OCIgbmFtZT0icm9vbUFkbWluX2xheW91dF9tb2RfcG9zIj4KKyAgICA8dmFsdWU+WDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODkiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkNvbnRlbmVkb3IgZGUgcGl6YXJyYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTAiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZF9zaG93Ij4KKyAgICA8dmFsdWU+QWN0aXZhZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkxIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmRfcG9zIj4KKyAgICA8dmFsdWU+WCB8IFk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkyIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5BbmNobyB8IEFsdG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkzIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X2ZpbGVzIj4KKyAgICA8dmFsdWU+Q29udGVuZWRvciBkZSBhcmNoaXZvcywgY2hhdCwgcGFydGljaXBhbnRlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTQiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXNfc2hvdyI+CisgICAgPHZhbHVlPkFjdGl2YWRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NSIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlc19wb3MiPgorICAgIDx2YWx1ZT5YIHxZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NiIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlcyI+CisgICAgPHZhbHVlPkFuY2hvIHwgQWx0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTciIG5hbWU9Im1vZGVyYXRvcl9nb25lX21lc3NhZ2UiPgorICAgIDx2YWx1ZT5FbCBtb2RlcmFkb3Igc2UgaGEgcmV0aXJhZG8gcG9yIGxvIHF1ZSBuYWRpZSBlc3TDoSByZWFsaXphbmRvIHVuYSBwcmVzZW50YWNpw7NuIGVuIGVzdG9zIG1vbWVudG9zLiBQdWVkZSBzb2xpY2l0YXIgbGEgbW9kZXJhY2nDs24gbyBlc3BlcmFyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTgiIG5hbWU9Im1vZGVyYXRvcl9tZXNzYWdlX2V2ZW50X25vX21vZCI+CisgICAgPHZhbHVlPk5vIGhheSBtb2RlcmFkb3IgZW4gZXN0YSBzYWxhLCBwZXJvIHPDrSBwYXJ0aWNpcGFudGVzLiBQdWVkZSBzb2xpY2l0YXIgbGEgbW9kZXJhY2nDs24gbyBlc3BlcmFyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTkiIG5hbWU9ImZlZWRiYWNrX3RlbXBsYXRlX3N1YmplY3QiPgorICAgIDx2YWx1ZT5Db21lbnRhcmlvIGRlICRBUFBfTkFNRTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDAiIG5hbWU9Imludml0YXRpb25fdGVtcGxhdGVfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSAtIEludml0YWNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwMSIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X2Zyb20iPgorICAgIDx2YWx1ZT5NZW5zYWplIGRlbCB1c3VhcmlvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDIiIG5hbWU9Imludml0YXRpb25fdGV4dF9tZXNzYWdlIj4KKyAgICA8dmFsdWU+TWVuc2FqZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAzIiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfY2xpY2tfdGV4dCI+CisgICAgPHZhbHVlPlB1bHNlIGVuIGVzdGUgZW5sYWNlIHBhcmEgcG9kZXIgcGFydGljaXBhciBlbiBsYSBjb25mZXJlbmNpYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA0IiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfY2xpY2tfdGV4dF9saW5rIj4KKyAgICA8dmFsdWU+UHVsc2UgYXF1w60gcGFyYSBlbnRyYXIgYSBsYSBzYWxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwNSIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X2NsaWNrX3RleHRfaGVscCI+CisgICAgPHZhbHVlPlNpIHRpZW5lIHByb2JsZW1hcyBjb24gZWwgZW5sYWNlLCBsZSBzdWdlcmltb3MgcXVlIGNvcGllIHkgcGVndWUgZWwgc2lndWllbnRlIHRleHRvIGVuIHN1IG5hdmVnYWRvcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA2IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfaGVhZCI+CisgICAgPHZhbHVlPlJlZ2lzdHJvICRBUFBfTkFNRTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDciIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9oZWFkMiI+CisgICAgPHZhbHVlPlN1cyBkYXRvcyBkZSB1c3VhcmlvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDgiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF91c2VybmFtZSI+CisgICAgPHZhbHVlPkluaWNpbzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA5IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfcGFzcyI+CisgICAgPHZhbHVlPkNvbnRyYXNlw7FhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTAiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9tYWlsIj4KKyAgICA8dmFsdWU+Q29ycmVvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTEiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9ieWUiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgLSBFcXVpcG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTEyIiBuYW1lPSJyZWdpc3Rlcl9tYWlsX3N1YmplY3QiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgLSBSZWdpc3RybzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTMiIG5hbWU9InJlc2V0X3Bhc3N3b3JkX3RlbXBsYXRlX2hlYWQiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgLSBSZXNldGVhciBjb250cmFzZcOxYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTQiIG5hbWU9InJlc2V0X3Bhc3N3b3JkX3RlbXBsYXRlX3Rlc3RfbGluayI+CisgICAgPHZhbHVlPlB1bHNlIGVuIGVsIHNpZ3VpZW50ZSBlbmxhY2UgcGFyYSBzb2xpY2l0YXIgdW5hIG51ZXZhIGNvbnRyYXNlw7FhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTUiIG5hbWU9InJlc2V0X3Bhc3N3b3JkX3RlbXBsYXRlX3RleHQyX2xpbmsiPgorICAgIDx2YWx1ZT5QdWxzZSBhcXXDrSBwYXJhIGludHJvZHVjaXIgdW5hIG51ZXZhIGNvbnRyYXNlw7FhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNiIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfdGV4dDNfbGluayI+CisgICAgPHZhbHVlPlNpIHRpZW5lIHByb2JsZW1hcyBjb24gZWwgZW5sYWNlLCBsZSBzdWdlcmltb3MgcXVlIGNvcGllIHkgcGVndWUgZWwgc2lndWllbnRlIHRleHRvIGVuIHN1IG5hdmVnYWRvcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE3IiBuYW1lPSJyZXNldF9wYXNzd29yZF9tYWlsX3N1YmplY3QiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgLSBOdWV2YSBDb250cmFzZcOxYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTgiIG5hbWU9ImRhdGVSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPlBvciBmYXZvciwgaW50cm9kdXpjYSB1bmEgZmVjaGEgdsOhbGlkYSBjb24gZWwgZm9ybWF0byBkZC5tbS55eXl5IEVqZW1wbG86IDI0LjEyLjIwMDg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE5IiBuYW1lPSJlbWFpbFJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+UG9yIGZhdm9yLCBpbnRyb2R1emNhIHVuYSBkaXJlY2Npw7NuIGRlIGNvcnJlbyB2w6FsaWRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyMCIgbmFtZT0iZmxvYXRSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPlBvciBmYXZvciwgaW50cm9kdXpjYSB1biBuw7ptZXJvIGRlY2ltYWwuIEVqZW1wbG86IDEuMDAgKHVzZSBwdW50byB5IG5vIGxhIGNvbWEpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyMSIgbmFtZT0ibnVtYmVyUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5Qb3IgZmF2b3IsIGludHJvZHV6Y2EgdW4gbsO6bWVybyBlbnRlcm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIyIiBuYW1lPSJwaG9uZVJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+UG9yIGZhdm9yLCBpbnRyb2R1emNhIHVuIG7Dum1lcm8gZGUgdGVsw6lmb25vIHbDoWxpZG8uIEVqZW1wbG86ICs1OTMgOTQ3IDIyNSAyMDA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIzIiBuYW1lPSJ0aW1lUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5Qb3IgZmF2b3IgaW50cm9kdXpjYSB1bmEgaG9yYSB2w6FsaWRhIGVuIGVsIGZvcm1hdG8gaGg6bW0uIEVqZW1wbG86IDEyOjIzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3ciPgorICAgIDx2YWx1ZT5Db250cmFzZcOxYSBwcm90ZWdpZGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI1IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd19wYXNzd29yZExhYmVsIj4KKyAgICA8dmFsdWU+Q29udHJhc2XDsWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI2IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZExhYmVsIj4KKyAgICA8dmFsdWU+UGVyw61vZG8gZGUgdmFsaWRlejwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjciIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkIj4KKyAgICA8dmFsdWU+U2luIGzDrW1pdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI4IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZCI+CisgICAgPHZhbHVlPlBlcsOtb2RvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyOSIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWQiPgorICAgIDx2YWx1ZT5VbmEgdmV6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWRGcm9tTGFiZWwiPgorICAgIDx2YWx1ZT5Ww6FsaWRvIGRlc2RlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzEiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkVG9MYWJlbCI+CisgICAgPHZhbHVlPlbDoWxpZG8gaGFzdGE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMiIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfTWFpbFN1YmplY3QiPgorICAgIDx2YWx1ZT5JbnZpdGFjacOzbiBhICRBUFBfTkFNRTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzMiIG5hbWU9Imludml0YXRpb25fZXJyb3IiPgorICAgIDx2YWx1ZT5ObyBleGlzdGUgdW5hIGludml0YWNpw7NuIGRpc3BvbmlibGUgY29uIGVzdGUgY8OzZGlnby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM0IiBuYW1lPSJpbnZpdGF0aW9uX2Vycm9yIj4KKyAgICA8dmFsdWU+RXN0YSBpbnZpdGFjacOzbiB5YSBmdWUgdXNhZGEgeSBubyBwdWVkZSB2b2x2ZXJzZSBhIHV0aWxpemFyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzUiIG5hbWU9Imludml0YXRpb25fZXJyb3IiPgorICAgIDx2YWx1ZT5FbCBjw7NkaWdvIGRlIGludml0YWNpw7NuIG5vIGVzIHbDoWxpZG8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzNiIgbmFtZT0iaW52aXRhdGlvbl9wYXNzIj4KKyAgICA8dmFsdWU+Q29udHJhc2XDsWE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzNyIgbmFtZT0iaW52aXRhdGlvbl9wYXNzX2J0biI+CisgICAgPHZhbHVlPlZlcmlmaWNhciBjb250cmFzZcOxYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzgiIG5hbWU9Imludml0YXRpb25fcGFzc19lcnJvciI+CisgICAgPHZhbHVlPkNvbnRyYXNlw7FhIGluY29ycmVjdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM5IiBuYW1lPSJCcm93c2VyIj4KKyAgICA8dmFsdWU+TmF2ZWdhZG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0MCIgbmFtZT0iYXVkaW9fdmlkZW8iPgorICAgIDx2YWx1ZT5TaW5jcm9uaXphciBhdWRpby92w61kZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQxIiBuYW1lPSJlcnJvckNvZGVfaW52YWxpZFNlc3Npb24iPgorICAgIDx2YWx1ZT5FbCBsb2dpbiBlcyBjb3JyZWN0bywgcGVybyBsYSBzZXNpw7NuIGVuIGxhIHF1ZSBpbnRlbnRhIGVudHJhciBubyBlc3TDoSBhY3RpdmEgbyBubyBmdWUgZ3VhcmRhZGEgZW4gZWwgc2Vydmlkb3IuIFRpZW5lIHF1ZSBpbmljaWFyIHVuYSBudWV2YSBzZXNpw7NuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDIiIG5hbWU9ImVycm9yY29kZV9zZXRVc2VyT2JqZWN0Ij4KKyAgICA8dmFsdWU+RWwgSUQgZGUgbGEgc2VzacOzbiBubyBlc3TDoSBpbmljaWFkbyBvIG5vIHRpZW5lIHBlcm1pc29zIGRlIGFkbWluaXN0cmFjacOzbi4gTGEgcGFzYXJlbGEgU09BUCBuZWNlc2l0YSB1biB1c3VhcmlvIGNvbiBwZXJtaXNvcyBkZSBhZG1pbmlzdHJhY2nDs24gcGFyYSBhw7FhZGlyIG51ZXZvcyB1c3Vhcmlvcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQzIiBuYW1lPSJlcnJvcmNvZGVfbG9naW5CeVJlbW90ZVVzZXIiPgorICAgIDx2YWx1ZT5Fc3RhIHNlc2nDs24gbm8gdGllbmUgZGF0b3MgZGVsIHVzdWFyaW8gcmVtb3RvIGNvbmVjdGFkby4gUXVpesOhcyBubyBsbGFtw7MgYSBsYSBwYXNhcmVsYSBTT0FQIGFudGVzIGRlIGFjY2VkZXIgYSBsYSBhcGxpY2FjacOzbiBvIGVzdMOhIHV0aWxpemFuZG8gdW4gSUQgZGUgc2VzacOzbiBpbmNvcnJlY3RvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0NCIgbmFtZT0iZGVidWdfbWVzc2FnZV9yZWNvcmRpbmciPgorICAgIDx2YWx1ZT5FbCBncmFiYWRvciBhY3R1YWxtZW50ZSBlc3TDoSBlbiBmYXNlIGJldGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ1IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWFZhbHVlIj4KKyAgICA8dmFsdWU+eDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDYiIG5hbWU9InByb3BlcnR5UGFuZWxYVmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPmVqZS14PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0NyIgbmFtZT0icHJvcGVydHlQYW5lbFlWYWx1ZSI+CisgICAgPHZhbHVlPnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ4IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWVZhbHVlTGFiZWwiPgorICAgIDx2YWx1ZT5lamUteTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDkiIG5hbWU9InByb3BlcnR5UGFuZWxXaWR0aFZhbHVlIj4KKyAgICA8dmFsdWU+YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTAiIG5hbWU9InByb3BlcnR5UGFuZWxXaWR0aFZhbHVlTGFiZWwiPgorICAgIDx2YWx1ZT5hbmNodXJhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1MSIgbmFtZT0icHJvcGVydHlQYW5lbEhlaWdodFZhbHVlIj4KKyAgICA8dmFsdWU+aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTIiIG5hbWU9InByb3BlcnR5UGFuZWxIZWlnaHRWYWx1ZUxhYmVsIj4KKyAgICA8dmFsdWU+YWx0dXJhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1MyIgbmFtZT0icHJvcGVydHlPcGFjaXR5U2xpZGVyIj4KKyAgICA8dmFsdWU+Q2FtYmlhciB0cmFuc3BhcmVuY2lhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1NCIgbmFtZT0iYnJvd3Nlck9wZW4iPgorICAgIDx2YWx1ZT5BYnJpciBlbCBuYXZlZ2Fkb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU1IiBuYW1lPSJicm93c2VyQ2xvc2UiPgorICAgIDx2YWx1ZT5DZXJyYXIgZWwgbmF2ZWdhZG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1NiIgbmFtZT0iY29ubmVjdGlvbkxvc3RNZXNzYWdlIj4KKyAgICA8dmFsdWU+U2UgaGEgcGVyZGlkbyBsYSBjb25leGnDs24gY29uIGVsIHNlcnZpZG9yLiBOZWNlc2l0YSByZWNhcmdhciBsYSBhcGxpY2FjacOzbiB5L28gY29tcHJvYmFyIHN1IFJlZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU3IiBuYW1lPSI1NTciPgorICAgIDx2YWx1ZT5QdW50ZXJvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1OCIgbmFtZT0ic3luYyBtZXNzYWdlIGhlYWRlciI+CisgICAgPHZhbHVlPlNpbmNyb25pemFuZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU5IiBuYW1lPSJTeW5jaHJvbml6aW5nIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TaW5jcm9uaXphbmRvIHVzdWFyaW9zLiBQb3IgZmF2b3IsIGVzcGVyZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYwIiBuYW1lPSJleHBvcnRUb1NWRyI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O0Rlc2NhcmdhciBjb21vIFNWRyZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYxIiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7RGVzY2FyZ2FyIGNvbW8gUE5HJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjIiIG5hbWU9ImV4cG9ydFRvSW1hZ2UiPgorICAgIDx2YWx1ZT4mbHQ7dSZndDtEZXNjYXJnYXIgY29tbyBKUEcmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MyIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O0Rlc2NhcmdhciBjb21vIFBERiZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY0IiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7RGVzY2FyZ2FyIGNvbW8gVElGJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjUiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5SZWN1ZXJkZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY2IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+Q2F0ZWdvcsOtYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY3IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+UmVwZXRpY2nDs246PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2OCIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPm5pbmd1bm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY5IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+TG9jYWxpemFjacOzbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTcwIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+SW5pY2lvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkZpbmFsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MiIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPlTDrXR1bG86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MyIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkNvbWVudGFyaW86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NCIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkludml0YXIgYSBwZXJzb25hczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzUiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5EaWFyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc2IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+TWVuc3VhbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzciIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5BbnVhbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzgiIG5hbWU9ImFsZXJ0Ij4KKyAgICA8dmFsdWU+TGEgZmVjaGEgZmluYWwgdmEgZGVzcHXDqXMgZGUgbGEgZmVjaGEgZGUgaW5pY2lvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3OSIgbmFtZT0iYWxlcnQiPgorICAgIDx2YWx1ZT5Qb3IgZmF2b3IsIHBvbmdhIHVuIHTDrXR1bG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgwIiBuYW1lPSI1ODAiPgorICAgIDx2YWx1ZT5SVEw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgxIiBuYW1lPSI1ODEiPgorICAgIDx2YWx1ZT5BY3RpdmUgZXN0YSBvcGNpw7NuIHNpIGxhIGVzY3JpdHVyYSBkZSBzdSBpZGlvbWEgdmEgZGUgZGVyZWNoYSBhIGl6cXVpZXJkYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODIiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+UGFuZWwgZGUgY29udHJvbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODMiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+VmVyIGV2ZW50b3MgbyBlbmN1ZW50cm9zIGdyYWJhZG9zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4NCIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT5WaWRlb2NvbmZlcmVuY2lhIC0gUmXDum5hc2UgY29uIDQgw7MgbcOhcyAoaGFzdGEgMTYpIHVzdWFyaW9zJmx0O2JyLyZndDt0b2RvcyB0ZW5kcsOhbiBhY2Nlc28gZGUgYXVkaW8geSB2w61kZW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4NSIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT5BdWRpdG9yaW8gLSBSZcO6bmFzZSBjb24gaGFzdGEgMjAwIHBhcnRpY2lwYW50ZXMmbHQ7YnIvJmd0O3PDs2xvIGVsIG1vZGVyYWRvciB0ZW5kcsOhIGF1ZGlvIHkvbyB2w61kZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg2IiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPkNyZWFyIHVzdWFyaW9zLCBzYWxhcywgb3JnYW5pemFjaW9uZXMmbHQ7YnIvJmd0OyArIGNhbWJpb3MgZW4gbGEgY29uZmlndXJhY2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg3IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5Vc3VhcmlvcyBlbiBsYSBzYWxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4OCIgbmFtZT0icm9vbSBBZG1pbmlzdHJhdGlvbiByb29tY2xpZW50cyBsaXN0Ij4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg5IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5JbmljaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkwIiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5EPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5MSIgbmFtZT0ic3dmIHN5bmMgbWVzc2FnZSI+CisgICAgPHZhbHVlPkNhcmdhbmRvIGRvY3VtZW50by4gRXNwZXJlIGhhc3RhIHF1ZSB0b2RvcyBsb3MgY2xpZW50ZXMgZXN0w6luIHNpbmNyb25pemFkb3MuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5MiIgbmFtZT0idXBsb2FkIGRpYWxvZyI+CisgICAgPHZhbHVlPlN1YmlkYSBjb21wbGV0YS4gQ29udmlydGllbmRvIGRvY3VtZW50by4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTMiIG5hbWU9InVwbG9hZCBkaWFsb2ciPgorICAgIDx2YWx1ZT5JbmljaWFyIFN1YmlkYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTQiIG5hbWU9InVwbG9hZCBkaWFsb2ciPgorICAgIDx2YWx1ZT5EacOhbG9nbyBkZSBzdWJpciBlIGltcG9ydGFyLiBQb3IgZmF2b3IsIHNlbGVjY2lvbmUgdW4gYXJjaGl2byBkZSBzdSBkaXNjby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk1IiBuYW1lPSJ1cGxvYWQgRGlhbG9nIj4KKyAgICA8dmFsdWU+Q2FuY2VsYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk2IiBuYW1lPSJ1cGxvYWQgRGlhbG9nIj4KKyAgICA8dmFsdWU+U2VsZWNjaW9uYXIgYXJjaGl2bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTciIG5hbWU9ImFkbWluaXN0cmF0aW9uIG5hdmlnYXRpb24iPgorICAgIDx2YWx1ZT5Db25leGlvbmVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5OCIgbmFtZT0iY29uZmFkbWluIHZhbHVlIGxpc3QiPgorICAgIDx2YWx1ZT5WYWxvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTkiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5JRCBkZSBmbHVqbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDAiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5JbmljaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAxIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+Q29uZWN0YWRvIGRlc2RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwMiIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPlNhbGEgLyDDgW1iaXRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwMyIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPkV4cHVsc2FyIGFsIHVzdWFyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA0IiBuYW1lPSJraWNrIHVzZXIgY29uZmlybWF0aW9uIGRpYWxvZyI+CisgICAgPHZhbHVlPkV4cHVsc2FyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwNSIgbmFtZT0ia2ljayB1c2VyIGNvbmZpcm1hdGlvbiBkaWFsb2ciPgorICAgIDx2YWx1ZT7Cv0VzdMOhIHNlZ3VybyBkZSBxdWVyZXIgZXhwdWxzYXIgYSBlc3RlIGNsaWVudGUgZGUgbGEgY29uZXhpw7NuPyZsdDtici8mZ3Q7IEVsIGNsaWVudGUgc2Vyw6EgZXhwdWxzYWRvIGRlIGxhIHNhbGEsIHBlcm8gcG9kcsOhIHZvbHZlciBhIGF1dGVudGljYXJzZSBkZSBudWV2by48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA2IiBuYW1lPSJraWNrIHVzZXIgbWVzc2FnZSBkaWFsb2ciPgorICAgIDx2YWx1ZT5TdSBzZXNpw7NuIGhhIHNpZG8gY2VycmFkYSBwb3IgZWwgYWRtaW5pc3RyYWRvciBvIGVsIG1vZGVyYWRvci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA3IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Bob25lIj4KKyAgICA8dmFsdWU+VGVsw6lmb25vPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwOCIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+RWwgdXN1YXJpbyBlcyBlbCBtb2RlcmFkb3IgZGUgZXN0YSBzYWxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwOSIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+RWwgdXN1YXJpbyB0aWVuZSBwZXJtaXNvcyBwYXJhIGRpYnVqYXIgZW4gbGEgcGl6YXJyYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTAiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPihSZSkgSW5pY2lhciBhdWRpby92w61kZW8gbyBjYW1iaWFyIGxhIGNvbmZpZ3VyYWNpw7NuIGRlIGRpc3Bvc2l0aXZvczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTEiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPlBlcm1pdGlyIGEgZXN0ZSB1c3VhcmlvIGRpYnVqYXIgZW4gbGEgcGl6YXJyYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTIiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPlF1aXRhciBwZXJtaXNvcyBwYXJhIGRpYnVqYXIgZW4gbGEgcGl6YXJyYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTMiIG5hbWU9ImNvbmZlcmVuY2VQYW5lbHMiPgorICAgIDx2YWx1ZT5Vc3VhcmlvczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTQiIG5hbWU9ImNvbmZlcmVuY2VQYW5lbHMiPgorICAgIDx2YWx1ZT5BcmNoaXZvczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTUiIG5hbWU9ImNvbmZlcmVuY2VQYW5lbHMiPgorICAgIDx2YWx1ZT5QaXphcnJhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxNiIgbmFtZT0iY29uZmVyZW5jZVBhbmVscyI+CisgICAgPHZhbHVlPkNoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE3IiBuYW1lPSJvcmdhbml6YXRpb24gY2hvb3NlIGluZm8iPgorICAgIDx2YWx1ZT5TdSBjdWVudGEgZXN0w6EgYXNpZ25hZGEgYSB2YXJpYXMgb3JnYW5pemFjaW9uZXMuIFNlbGVjY2lvbmUgYXF1ZWxsYSBjb24gbGEgcXVlIHF1aWVyYSBlbnRyYXIgZW4gZXN0YSBzZXNpw7NuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTgiIG5hbWU9ImVycm9yIG1lc3NhZ2Ugcm9vbSBmdWxsIj4KKyAgICA8dmFsdWU+RXN0YSBzYWxhIGVzdMOhIGNvbXBsZXRhLiBJbnTDqW50ZWxvIG3DoXMgdGFyZGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxOSIgbmFtZT0icm9vbXR5cGVzIj4KKyAgICA8dmFsdWU+VGlwbyBkZSBzYWxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyMCIgbmFtZT0iYXBwb2ludGVkX3Jvb20iPgorICAgIDx2YWx1ZT5TYWxhIHBhcmEgY2l0YXJzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjEiIG5hbWU9InNlcnZlcnRpbWUiPgorICAgIDx2YWx1ZT5Ib3JhIGRlbCBzZXJ2aWRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjIiIG5hbWU9Imludl9yZW1pbmRlcl90ZW1wbGF0ZV9oZWFkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIC0gUmVjb3JkYXRvcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyMyIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfZnJvbSI+CisgICAgPHZhbHVlPk1lbnNhamUgZGVsIHVzdWFyaW86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNCIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfbWVzc2FnZSI+CisgICAgPHZhbHVlPk1lbnNhamU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNSIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfY2xpY2tfdGV4dCI+CisgICAgPHZhbHVlPlB1bHNlIGVuIGVsIGVubGFjZSBwYXJhIHBhcnRpY2lwYXIgZW4gbGEgKFbDrWRlbylDb25mZXJlbmNpYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI2IiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9jbGlja190ZXh0X2xpbmsiPgorICAgIDx2YWx1ZT5QdWxzZSBhcXXDrSBwYXJhIGVudHJhciBlbiBsYSBzYWxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNyIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfY2xpY2tfdGV4dF9oZWxwIj4KKyAgICA8dmFsdWU+U2kgdGllbmUgcHJvYmxlbWFzLCBjb3BpZSB5IHBlZ3VlIGVzdGUgZW5sYWNlIGVuIHN1IG5hdmVnYWRvcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI4IiBuYW1lPSJidG5fc2VhcmNoX2ludGVybiI+CisgICAgPHZhbHVlPmLDunNxdWVkYSBpbnRlcm5hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyOSIgbmFtZT0iYnRuX3NlYXJjaF9leHRlcm4iPgorICAgIDx2YWx1ZT5Bw7FhZGlyIGV4dGVybm9zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzMCIgbmFtZT0ibGJsX3ByZW5hbWUiPgorICAgIDx2YWx1ZT5Ob21icmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMxIiBuYW1lPSJsYmxfbmFtZSI+CisgICAgPHZhbHVlPkFwZWxsaWRvczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzIiIG5hbWU9ImxibF9lbWFpbCI+CisgICAgPHZhbHVlPkUtbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzMiIG5hbWU9ImxvZ291dENvbmZpcm1fdGl0bGUiPgorICAgIDx2YWx1ZT5Db25maXJtYXIgbGEgc2FsaWRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNCIgbmFtZT0ibG9nb3V0Q29uZmlybV9zdXJlX3RvX2xvZ291dF9xdWVzdGlvbiI+CisgICAgPHZhbHVlPsK/RXN0w6Egc2VndXJvIGRlIHF1ZSBkZXNlYSBzYWxpcj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM1IiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT5BY2Npb25lczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzYiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5TYWxhIGRlIGRlbW9zdHJhY2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+SG9yYSBkZSBsYSBkZW1vc3RyYWNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzOCIgbmFtZT0ibWVldGluZyBUaW1lciI+CisgICAgPHZhbHVlPkhvcmFyaW8gZGVsIGVuY3VlbnRybzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzkiIG5hbWU9Im1lZXRpbmcgVGltZXIiPgorICAgIDx2YWx1ZT5Fc3RhIGVzIHVuYSBzYWxhIGRlIGRlbW9zdHJhY2nDs24uIFBhcmEgZGVzYWN0aXZhciBlc3RlIGF2aXNvLCBkZWJlcsOtYSBjb25zZWd1aXIgdW5hIHNhbGEgcHJpdmFkYSBwYXJhIHVzbyBwcm9waW8gbyBiaWVuIGNvbmZpZ3VyYXIgc3UgcHJvcGlvIFNlcnZpZG9yLiBTZXLDoSBkZXNjb25lY3RhZG8gYXV0b23DoXRpY2FtZW50ZSBlbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQwIiBuYW1lPSJtZWV0aW5nIHJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5Nb2RlcmFkbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDEiIG5hbWU9Im1vZGVyYXRlZCByb29tIHdhaXRpbmcgbWVzc2FnZSI+CisgICAgPHZhbHVlPlBvciBmYXZvciwgZXNwZXJlIGhhc3RhIHF1ZSBlbCBtb2RlcmFkb3IgZW50cmUgZW4gbGEgc2FsYS4gRWwgbW9kZXJhZG9yIHB1ZWRlIHNlciB1biBwcm9mZXNvciwgZWwgYWRtaW5pc3RyYWRvciBvIGVsIGNyZWFkb3IgZGUgZXN0YSBzYWxhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDIiIG5hbWU9ImVycm9yIHBvcHVwIj4KKyAgICA8dmFsdWU+QWNlcHRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDMiIG5hbWU9IndpbmRvdyBzY3JlZW5zaGFyaW5nIj4KKyAgICA8dmFsdWU+UmVjaWJpZW5kbyBlbCBlc2NyaXRvcmlvIGNvbXBhcnRpZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ0IiBuYW1lPSJ3aW5kb3cgc2NyZWVuIHNoYXJpbmciPgorICAgIDx2YWx1ZT5IYXkgdW5hIG51ZXZhIHJlY2VwY2nDs24gZGUgZXNjcml0b3JpbyBjb21wYXJ0aWRvIGRlbCB1c3VhcmlvOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDUiIG5hbWU9IndpbmRvdyBzY3JlZW4gc2hhcmluZyI+CisgICAgPHZhbHVlPkNvbWVuemFyIGEgY29tcGFydGlyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0NiIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Bw7FhZGlyIHVuIG51ZXZvIGVuY3VlbnRybzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDciIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+U2FsYSBkZSBlbmN1ZW50cm9zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0OCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5TYWxhIGRlIGV2ZW50b3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ5IiBuYW1lPSJtYWluIG1lbnUgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPk1vZGVyYWNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1MCIgbmFtZT0ibWVudSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+TW9kZXJhciB1c3VhcmlvczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTEiIG5hbWU9Im1lbnUgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPk1vZGVyYXIgc2FsYXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUyIiBuYW1lPSJtb2RlcmF0b3Igb3JnIj4KKyAgICA8dmFsdWU+TTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTMiIG5hbWU9ImNvbmZpcm0gbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPsK/RGVzZWEgY29udmVydGlyIGEgZXN0ZSB1c3VhcmlvIGVuIG1vZGVyYWRvciBkZSBlc2Egb3JnYW5pemFjacOzbj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU0IiBuYW1lPSJlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+UG9yIGZhdm9yLCBzZWxlY2Npb25lIHVuYSBvcmdhbml6YWNpw7NuIGFudGVzIGRlIGludGVudGFyIGluY2x1aXIgYSB1biB1c3VhcmlvIGVuIGxhIG1pc21hLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTUiIG5hbWU9ImNob29zZSB1c2VyIHdpbmRvdyI+CisgICAgPHZhbHVlPk9yZ2FuaXphY2nDs24gLSBNb2RlcmFkb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU2IiBuYW1lPSJtb2RlcmF0b3Igb3JnIHVzZXJzIj4KKyAgICA8dmFsdWU+wr9SZWFsbWVudGUgZGVzZWEgYm9ycmFyIGEgZXN0ZSB1c3VhcmlvIGRlIGxhIE9yZ2FuaXphY2nDs24/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1NyIgbmFtZT0ib3JnIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Fc3RlIHVzdWFyaW8gZXMgbW9kZXJhZG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1OCIgbmFtZT0ib3JnIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Fc3RlIHVzdWFyaW8gbm8gZXMgbW9kZXJhZG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1OSIgbmFtZT0iZXJyb3IgbWVzc2FnZSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+wr9EZXNlYSBxdWUgZXN0ZSB1c3VhcmlvIGRlamUgZGUgc2VyIG1vZGVyYWRvciBkZSBlc3RhIG9yZ2FuaXphY2nDs24/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MCIgbmFtZT0ibW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkHDsWFkaXIgbyBib3JyYXIgdXN1YXJpb3MgeS9vIHNhbGFzIGVuIHN1IG9yZ2FuaXphY2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYxIiBuYW1lPSJkZWxldGUgY29uZmlybSBxdWVzdGlvbiI+CisgICAgPHZhbHVlPsK/UmVhbG1lbnRlIHF1aWVyZSBib3JyYXIgZXN0ZSByZWdpc3Rybz88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYyIiBuYW1lPSJkZWxldGUgY29uZmlybSBxdWVzdGlvbiB1c2VyIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT7Cv1JlYWxtZW50ZSBxdWllcmUgYm9ycmFyIGEgZXN0ZSB1c3VhcmlvIGRlIHN1IG9yZ2FuaXphY2nDs24/IFPDs2xvIHNlIGJvcnJhcsOhIGxhIGNvbmV4acOzbiBlbnRyZSBlbCB1c3VhcmlvIHkgc3Ugb3JnYW5pemFjacOzbi4gRW4gcmVhbGlkYWQsIHBhcmEgYm9ycmFyIGFsIHVzdWFyaW8gZGViZSBpbmdyZXNhciBhbCBQYW5lbCBkZSBhZG1pbmlzdHJhY2nDs24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MyIgbmFtZT0iZXJyb3IgbWVzc2FnZSBzZWxmIGRlbGV0aW5nIj4KKyAgICA8dmFsdWU+wqFWZCBubyBwdWVkZSBib3JyYXJzZSBhIHPDrSBtaXNtbyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY0IiBuYW1lPSJlcnJvciBtZXNzYWdlIGF1dGgiPgorICAgIDx2YWx1ZT7CoVBhcmEgdXNhciBlc3RlIG3DqXRvZG8gbmVjZXNpdGEgZGUgdW5hIGN1ZW50YSBkZSBhZG1pbmlzdHJhZG9yITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjUiIG5hbWU9ImVycm9yIG1lc3NhZ2UgU09BUCI+CisgICAgPHZhbHVlPk5vIGhheSBuaW5ndW5hIHNlc2nDs24gYXNvY2lhZGEgYSBlc3RlIElELjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjYiIG5hbWU9ImVycm9yIG1lc3NhZ2UgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkVzdGEgZXMgdW5hIGN1ZW50YSBkZSBhZG1pbmlzdHJhZG9yIG8gZGUgbW9kZXJhZG9yLiBTw7NsbyBwdWVkZSBlZGl0YXIgZXN0YSBjdWVudGEgdXRpbGl6YW5kbyBlbCBQYW5lbCBkZSBhZG1pbmlzdHJhY2nDs24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NyIgbmFtZT0iZW1haWwgdmVyaWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+UGFyYSBjb21wbGV0YXIgc3UgcmVnaXN0cm8sIGhhZ2EgZWwgZmF2b3IgZGUgcHVsc2FyIGVuIGVsIHNpZ3VpZW50ZSBlbmxhY2UuIE90cmEgb3BjacOzbiBlcyBjb3BpYXIgbGEgVVJMIGVuIGxhIGJhcnJhIGRlIHN1IG5hdmVnYWRvci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY4IiBuYW1lPSJlbWFpbCB2ZXJpZmljYXRpb24iPgorICAgIDx2YWx1ZT5QdWxzZSBwYXJhIHZlcmlmaWNhciBzdSBjb3JyZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY5IiBuYW1lPSJlcnJvck1lc3NhZ2VfVXNlckFjdGl2YXRpb25TZXJ2bGV0IFtBY3RpdmF0ZVVzZXJdIj4KKyAgICA8dmFsdWU+Tm8gc2UgaGEgZW5jb250cmFkbyB1biB1c3VhcmlvIHBhcmEgZXNlIGFsZ29yaXRtbyBIYXNoLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzAiIG5hbWU9ImVycm9yTWVzc2FnZV9Vc2VyQWN0aXZhdGlvblNlcnZsZXQgW0FjdGl2YXRlVXNlcl0iPgorICAgIDx2YWx1ZT7CoUVzdGUgdXN1YXJpbyB5YSBlc3TDoSBhY3RpdmFkbyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjcxIiBuYW1lPSJlcnJvck1lc3NhZ2VfVXNlckFjdGl2YXRpb25TZXJ2bGV0IFtBY3RpdmF0ZVVzZXJdIj4KKyAgICA8dmFsdWU+wqFIYSBhY3RpdmFkbyBzdSBjdWVudGEgY29uIMOpeGl0byE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjcyIiBuYW1lPSJlcnJvck1lc3NhZ2VfVXNlckFjdGl2YXRpb25TZXJ2bGV0IFtBY3RpdmF0ZVVzZXJdIj4KKyAgICA8dmFsdWU+SW5ncmVzZSBhaG9yYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzMiIG5hbWU9ImxvZ2luRXJyb3JNZXNzYWdlID0gdXNlciB3YXMgbm90IGFjdGl2YXRlZCI+CisgICAgPHZhbHVlPlN1IGN1ZW50YSBubyBlc3TDoSBhY3RpdmFkYS4gVXRpbGljZSBlbiBwcmltZXIgbHVnYXIgZWwgZW5sYWNlIHF1ZSBoYXkgZW4gY29ycmVvIHJlY2liaWRvIGFsIGZpbmFsaXphciBlbCBwcm9jZXNvIGRlIHJlZ2lzdHJvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzQiIG5hbWU9InJlZ2lzdGVyIHZlcmlmaWNhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2UgaGEgcmVnaXN0cmFkbyBjb24gw6l4aXRvLiBMZSBoZW1vcyBlbnZpYWRvIHVuIGNvcnJlbyBjb24gdW4gY8OzZGlnbyBkZSB2ZXJpZmljYWNpw7NuLiBQb3IgZmF2b3IsIHJldmlzZSBzdSBjdWVudGEgZGUgY29ycmVvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzUiIG5hbWU9InBhcnRpY2lwYW50cyBwYW5lbCI+CisgICAgPHZhbHVlPlF1aXRhciBlbCByb2wgZGUgbW9kZXJhZG9yIGEgZXN0ZSB1c3VhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3NiIgbmFtZT0icGFydGljaXBhbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+RGFyIHBlcm1pc29zIGRlIG1vZGVyYWNpw7NuIGEgZXN0ZSB1c3VhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3NyIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+VXN1YXJpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzgiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFjY2VzbyBhIGxhIHBpemFycmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc5IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Nb2RlcmFkb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgwIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Nb2RlcmFjacOzbjogUG9yIGZhdm9yLCBzZWxlY2Npb25lIGN1YWxxdWllciB1c3VhcmlvIGRlIGxhIGxpc3RhIHBhcmEgZGFybGUgYWNjZXNvIGEgbGEgcGl6YXJyYSwgbW9kZXJhY2nDs24gbyB2w61kZW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+RXN0ZSB1c3VhcmlvIHlhIGVzIG1vZGVyYWRvciwgYXPDrSBxdWUgYXV0b23DoXRpY2FtZW50ZSB0aWVuZSBwZXJtaXNvcyBwYXJhIGRpYnVqYXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MiIgbmFtZT0iZXZlbnQgdXNlciBsaXN0IGVycm9yIj4KKyAgICA8dmFsdWU+wqFFc3RlIGVzIFZkISBObyBwdWVkZSBxdWl0YXJzZSBsb3MgcGVybWlzb3MgZGUgbW9kZXJhY2nDs24gYSBzw60gbWlzbW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MyIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+UGVybWl0aXIgYSBlc3RlIHVzdWFyaW8gcHVibGljYXIgc3UgYXVkaW8vdsOtZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4NCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+Qm9ycmFyIGVsIGF1ZGlvL3bDrWRlbyBkZSBlc3RlIHVzdWFyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg1IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5EZXNlYXLDrWEgc2VyIG1vZGVyYWRvciBkZSBlc3RhIHNhbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg2IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5EZXNlYXLDrWEgdXRpbGl6YXIgbGEgcGl6YXJyYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODciIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkRlc2VhcsOtYSBjb21wYXJ0aXIgbWkgYXVkaW8vdsOtZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4OCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+VXN0ZWQgZXMgZWwgbW9kZXJhZG9yIGRlIGVzdGEgc2FsYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODkiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlRpZW5lIHBlcm1pc29zIHBhcmEgZGlidWphciBlbiBsYSBwaXphcnJhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5MCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+VGllbmUgcGVybWlzbyBwYXJhIGNvbXBhcnRpciBzdSBhdWRpby92aWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTEiIG5hbWU9ImVycm9ydHlwZSI+CisgICAgPHZhbHVlPk1lbnNhamUgYWwgbW9kZXJhZG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5MiIgbmFtZT0iYXBwbHkgZm9yIG1vZCBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RWwgVXN1YXJpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTMiIG5hbWU9ImFwcGx5IGZvciBtb2QgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRlc2VhcsOtYSBzZXIgbW9kZXJhZG9yLiBVc2UgbG9zIGljb25vcyBkZSBlc3RhZG8gcHLDs3hpbW9zIGFsIHVzdWFyaW8gZW4gbGEgTGlzdGEgZGUgVXN1YXJpb3MgcGFyYSBhZ3JlZ2FyIG8gcmVtb3ZlciBlbCBwZXJtaXNvIGRlIG1vZGVyYWNpw7NuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTQiIG5hbWU9ImFwcGx5IGZvciB3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+ZGVzZWFyw61hIHV0aWxpemFyIGxhIHBpemFycmEuIFV0aWxpY2UgbG9zIGljb25vcyBxdWUgaGF5IGp1bnRvIGFsIG5vbWJyZSBkZWwgdXN1YXJpbyAoZW4gbGEgTGlzdGEgZGUgVXN1YXJpb3MpIHBhcmEgYWdyZWdhciBvIHF1aXRhciBsb3MgcGVybWlzb3MgY29ycmVzcG9uZGllbnRlcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk1IiBuYW1lPSI2OTUiPgorICAgIDx2YWx1ZT5kZXNlYXLDrWEgY29tcGFydGlyIHN1IGF1ZGlvL3bDrWRlby4gVXNlIGxvcyBpY29ub3MgcXVlIGhheSBqdW50byBhbCBub21icmUgZGUgdXN1YXJpbyAoZW4gbGEgTGlzdGEgZGUgVXN1YXJpb3MpIHBhcmEgYWdyZWdhciBvIHF1aXRhciBsb3MgcGVybWlzb3MgcGFyYSBjb21wYXJ0aXIgYXVkaW8vdsOtZGVvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTYiIG5hbWU9Im1vZGVyYXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkRlYmUgZXNwZXJhciBoYXN0YSBxdWUgdW4gbW9kZXJhZG9yIGluZ3Jlc2UgYSBsYSBzYWxhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTciIG5hbWU9ImNhbGVuZGFyIGJ1dHRvbiI+CisgICAgPHZhbHVlPkNhbmNlbGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5OCIgbmFtZT0iY2FsZW5kYXIgYnV0dG9uIj4KKyAgICA8dmFsdWU+R3VhcmRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTkiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPkTDrWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAwIiBuYW1lPSJjYWxlbmRhciBjb21wb25lbnQiPgorICAgIDx2YWx1ZT5NZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAxIiBuYW1lPSJjYWxlbmRhciBjb21wb25lbnQiPgorICAgIDx2YWx1ZT5Bw7FvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwMiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlN1YmlyIGFyY2hpdm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAzIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+QcOxYWRpciBjYXJwZXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwNCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkFjdHVhbGl6YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA1IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+UGFwZWxlcmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA2IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+TWlzIGFyY2hpdm9zIChEaXNwb3NpdGl2byBwZXJzb25hbCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA3IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+QXJjaGl2b3MgZGUgbGEgc2FsYSAoRGlzcG9zaXRpdm8gcMO6YmxpY28pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwOCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkFncmVnYXIgYXJjaGl2bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDkiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5BZ3JlZ2FyIGNhcnBldGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzEwIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+Qm9ycmFyIGNhcnBldGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzExIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+RWRpdGFyIG5vbWJyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTIiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5OdWV2YSBjYXJwZXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMyIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPsK/RXN0w6Egc2VndXJvIGRlIHF1ZSBxdWllcmUgYm9ycmFyIGVzdGUgw610ZW0/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxNCIgbmFtZT0idXNlciBhZG1pbiI+CisgICAgPHZhbHVlPkJ1c2NhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTUiIG5hbWU9InVzZXIgYWRtaW4iPgorICAgIDx2YWx1ZT5CdXNjYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE2IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+QWJyaXIgZG9jdW1lbnRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxNyIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPk1vc3RyYXIgdG9kb3MgbG9zIGFyY2hpdm9zIChWaXN0YSBkZSDDoXJib2wpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxOCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkNlcnJhciBkb2N1bWVudG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE5IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+Qm9ycmFyIGFyY2hpdm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIwIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+Tm8gdGllbmUgcGVybWlzb3MgcGFyYSBlc2NyaWJpciBvIGRpYnVqYXIgZW4gbGEgcGl6YXJyYS4gRGViZSBzZXIgbW9kZXJhZG9yIG8sIGFsIG1lbm9zLCB0ZW5lciBwZXJtaXNvcyBkZSBlZGljacOzbiBkZSBsYSBwaXphcnJhLiBTb2xpY8OtdGVzZWxvIGEgdW4gbW9kZXJhZG9yLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjEiIG5hbWU9InByb3BlcnR5IHBhbmVsIj4KKyAgICA8dmFsdWU+UHJvcGllZGFkZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIyIiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5JbmljaWFyIEphdmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIzIiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5JbmljaWFyIEZsYXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNCIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+VW4gdXN1YXJpbyBkZXNlYSBjb21wYXJ0aXIgc3UgZXNjcml0b3Jpby4gwr9EZXNlYSB2aXN1YWxpemFybG8/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNSIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+QWN0dWFsbWVudGUgZXN0w6EgY29tcGFydGllbmRvIHN1IGVzY3JpdG9yaW8uIFBhcmEgZGVqYXIgZGUgaGFjZXJsbywgcHVsc2UgZW4gZWwgYm90w7NuIFN0b3AgZW4gZWwgY2xpZW50ZSB1dGlsaXphZG8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNiIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+Q29tcGFydGllbmRvIHNlc2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI3IiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT7CoVlhIGVzdMOhIGNvbXBhcnRpZW5kbyBzdSBlc2NyaXRvcmlvITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+Vmlzb3IgZGUgZXNjcml0b3JpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjkiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U2FsaXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMwIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkNvbXBhcnRpZW5kbyBlbCBlc2NyaXRvcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5QdWxzZSBJbmljaWFyIHBhcmEgcHVibGljYXIgc3UgZXNjcml0b3JpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzIiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+SW5pY2lhciBsYSBjb21wYXJ0aWNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5QYXVzYXIgbGEgY29tcGFydGljacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzQiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U2VsZWNjaW9uZSBlbCDDoXJlYSBkZSBsYSBwYW50YWxsYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM1IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkNhbWJpYXIgYW5jaHVyYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzYiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+IUhhIGZpbmFsaXphZG8gZXN0YSBzZXNpw7NuITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzciIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+Q2FtYmlhciBhbHR1cmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM4IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkRlc3BsYXphbWllbnRvIGVqZSBYPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczOSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5EZXNwbGF6YW1pZW50byBlamUgWTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDAiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+QW5jaHVyYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQxIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkFsdHVyYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQyIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkxhIGNvbmV4acOzbiBoYSBzaWRvIGNlcnJhZGEgcG9yIGVsIFNlcnZpZG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0MyIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5DYW5jZWxhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDQiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+SW5pY2lhciBKYXZhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NSIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5TaSBjaWVycmEgZXN0YSBzZXNpw7NuIGNvbXBsZXRhbWVudGUsIG5vIHNlcsOhIHBvc2libGUgcmVpbmljaWFyIGVsIHZpc29yIGR1cmFudGUgZXN0YSBzZXNpw7NuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDYiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+Q29uZmlybWFyIGVsIGNpZXJyZSBkZSBsYSBzZXNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NyIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5Db21wYXJ0aXIgZXNjcml0b3JpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDgiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+R3JhYmFyIHNlc2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ5IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+Q28tbmF2ZWdhY2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUwIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+SHVtLi4uIEZpcmVmb3ggZW4gd2luZG93cyBubyBtdWVzdHJhIGxhIGNvLW5hdmVnYWNpw7NuIGNvbiBjbGFyaWRhZC4gUG9yIGZhdm9yLCB1dGlsaWNlIG90cm8gbmF2ZWdhZG9yIG8gY2llcnJlIGVzdGEgZnVuY2lvbmFsaWRhZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUxIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+UHJldmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MiIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPlNpZ3VpZW50ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTMiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5SZWNhcmdhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTQiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5JbmljaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU1IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+Q2FyZ2FyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1NiIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPkNvbmZpZ3VyYXIgZW4gc3UgcGVyZmlsIGVzdGUgc2l0aW8gY29tbyBwcmVkZXRlcm1pbmFkby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU3IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+UHJvYmFyIGNvbmZpZ3VyYWNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1OCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPkNvbXBydWViZSBsYSBjb25maWd1cmFjacOzbiBkZSBzdSBtaWNyw7Nmb25vIHkvbyBjw6FtYXJhIGFudGVzIGRlIGVudHJhciBlbiBsYSBzYWxhLiBQYXJhIGVsbG8gZ3JhYmUgZHVyYW50ZSBhbGd1bm9zIHNlZ3VuZG9zIHkgcmVwcm9kw7p6Y2Fsby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU5IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+Tm8gdm9sdmVyIGEgbW9zdHJhciBlc3RlIHRlc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYwIiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+Q2FuY2VsYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYxIiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+SW5pY2lhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjIiIG5hbWU9ImVkaXQgdmlkZW8gc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5ObyB2b2x2ZXIgYSBwcmVndW50YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYzIiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+UkVDPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlBMQVk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY1IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+UHVlZGUgY29udGludWFyIHNpbiBoYWNlciBsYSBjb21wcm9iYWNpw7NuIHNpIG5vIGRlc2VhIHB1YmxpY2FyIGxhIGltYWdlbiB5L28gZWwgc29uaWRvLiBMb3MgcGFydGljaXBhbnRlcyBzaW4gYXVkaW8gbyBzaW4gdsOtZGVvIHB1ZWRlbiBlbiB0b2RvIGNhc28gdXRpbGl6YXIgbGEgcGl6YXJyYSwgY29tcGFydGlyIHN1IGVzY3JpdG9yaW8gbyBlbnZpYXIgbWVuc2FqZXMgdXRpbGl6YW5kbyBlbCBjaGF0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjYiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5TVE9QPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NyIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPk1lZGlkb3IgZGUgTml2ZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY4IiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+UHJlc2lvbmUgSW5pY2lhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjkiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5JbmljaWFyIENvbmZlcmVuY2lhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MCIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPkluaWNpYXIgRXZlbnRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MSIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPklyIGEgbGEgc2FsYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzIiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5Db21wcm9iYXIgQ29uZmlnLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzMiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5JbmljaWFyIENvbmZlci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc0IiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+SW5zdHJ1Y2Npb25lcyBDb25mZXJlbmNpYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc1IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+SW5pY2lhciBHcmFiYWNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NiIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPk5vIG1vc3RyYXIgZWwgdGVzdCBkZSBncmFiYWNpw7NuIGRlIGF1ZGlvIC92w61kZW8gYW50ZXMgZGUgZW50cmFyIGVuIHVuYSBDb25mZXJlbmNpYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzciIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT5TYWxhcyBww7pibGljYXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc4IiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+TGFzIHNhbGFzIHDDumJsaWNhcyBzb24gYWNjZXNpYmxlcyBwYXJhIHRvZG9zIGxvcyB1c3Vhcmlvcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc5IiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+U2FsYXMgcHJpdmFkYXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgwIiBuYW1lPSJQcml2YXRlIFJvb21zIj4KKyAgICA8dmFsdWU+TGFzIHNhbGFzIHByaXZhZGFzIHNvbiBhY2Nlc2libGVzIHPDs2xvIHBhcmEgbG9zIHVzdWFyaW9zIGRlIGxhIG1pc21hIG9yZ2FuaXphY2nDs24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MSIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPk1pcyBzYWxhczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODIiIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT5MYXMgc2FsYXMgZW4gZXN0YSBzZWNjacOzbiBzb24gcGFyYSB1c28gcGVyc29uYWwuIFNlIGNyZWFuIHV0aWxpemFuZG8gZWwgY2FsZW5kYXJpbyB5IHRpZW5lbiB1bmEgZmVjaGEgZGUgaW5pY2lvIHkgZGUgZmluYWxpemFjacOzbi4gU8OzbG8gc2UgbXVlc3RyYW4gZW4gZXN0YSBzZWNjacOzbiBkdXJhbnRlIGVsIGludGVydmFsbyB0ZW1wb3JhbCBkZSB2YWxpZGV6LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODMiIG5hbWU9InJlc3RyaWN0ZWQgcm9vbSI+CisgICAgPHZhbHVlPlRpZW5lIHF1ZSBzZXIgbW9kZXJhZG9yIHBhcmEgZWplY3V0YXIgZXN0YSBhY2Npw7NuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODQiIG5hbWU9Im1lbnUgb3B0aW9uIj4KKyAgICA8dmFsdWU+U29saWNpdGFyIGxhIG1vZGVyYWNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NSIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT5Tb2xpY2l0YXIgYWNjZXNvIGEgbGEgcGl6YXJyYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODYiIG5hbWU9Im1lbnUgb3B0aW9uIj4KKyAgICA8dmFsdWU+U29saWNpdGFyIGFjY2VzbyBhIGxhIGPDoW1hcmEvbWljcsOzZm9ubzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODciIG5hbWU9ImVycm9yIG1lc3NhZ2Ugc29hcCBzZWN1cmUgbG9naW4iPgorICAgIDx2YWx1ZT5MYSBhdXRlbnRpY2FjacOzbiBkZSBlc3RhIHNlc2nDs24geWEgaGEgc2lkbyB1dGlsaXphZGEuIE5vIHB1ZWRlIGhhY2Vyc2UgZG9zIHZlY2VzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODgiIG5hbWU9ImRhc2hib2FyZCBidXR0b24iPgorICAgIDx2YWx1ZT5JTklDSUFSPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4OSIgbmFtZT0iZXhpdCBjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+U0FMSVI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkwIiBuYW1lPSJjb25mZXJlbmNlIHZpZXciPgorICAgIDx2YWx1ZT7Cv0Rlc2VhIHJlYWxtZW50ZSBzYWxpcj8gRXMgY29udmVuaWVudGUgcXVlIGFudGVzIGJvcnJlIGxvcyBkb2N1bWVudG9zIHN1Ymlkb3MsIGxhIHBpemFycmEgbyBlbCBoaXN0b3JpYWwgZGVsIGNoYXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5MSIgbmFtZT0iY29uZmVyZW5jZSB2aWV3Ij4KKyAgICA8dmFsdWU+U2FsaXIgZGUgbGEgY29uZmVyZW5jaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkyIiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT5TYWxhczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTMiIG5hbWU9Im1haW4gbWVudSI+CisgICAgPHZhbHVlPlNlbGVjY2lvbmUgdW5hIHNhbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk0IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkhheSB1biBldmVudG8gc2luIGd1YXJkYXIgZW4gZWwgY2FsZW5kYXJpby4gUG9yIGZhdm9yLCBndcOhcmRlbG8gbyBiaWVuIGLDs3JyZWxvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTUiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+wqFBw7FhZGEsIGFsIG1lbm9zLCBhIHVuIHBhcnRpY2lwYW50ZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk2IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPsK/UmVhbG1lbnRlIGRlc2VhIGJvcnJhciBlc3RlIGV2ZW50bz88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk3IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkF2aXNvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5OCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Bw7FhZGlyIGV2ZW50bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTkiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+ZMOtYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDAiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+c2VtYW5hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5tZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAyIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkRlc2NyaXBjacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDMiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QXNpc3RlbnRlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSwgc3UgUGxhdGFmb3JtYSBXZWIgZGUgVmlkZW9jb25mZXJlbmNpYS4gU8OzbG8gc2lnYSBsYXMgaW5zdHJ1Y2Npb25lcywgcHJlc2lvbmUgZWwgYm90w7NuIHBhcmEgaW5pY2lhciBpbm1lZGlhdGFtZW50ZSBvIHZheWEgYWwgQ2FsZW5kYXJpbyBwYXJhIHByb2dyYW1hciB1biBFbmN1ZW50cm8gbcOhcyBhZGVsYW50ZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA1IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5Qcm9nci4gRW5jdWVudHJvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNiIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlBhcmEgcGxhbmlmaWNhciB1bmEgY29uZmVyZW5jaWEsIGHDsWFkYSB1biBudWV2byBFdmVudG8gZW4gZWwgQ2FsZW5kYXJpby4gUGFyYSBjYWRhIEV2ZW50byBzZSBjcmVhcsOhIGF1dG9tw6F0aWNhbWVudGUgdW5hIHNhbGEgZGUgKHbDrWRlbyljb25mZXJlbmNpYS4gVXN0ZWQgeSBlbCByZXN0byBkZSBhc2lzdGVudGVzIHJlY2liaXLDoW4gdW4gY29ycmVvIGNvbiB1biBlbmxhY2UgZGUgbGEgc2FsYS4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7UHVlZGUgZXNjb2dlciBlbnRyZSBkaWZlcmVudGVzIHRpcG9zIGRlIHNhbGFzIGNvbiBkaWZlcmVudGVzIGRpc2XDsW9zIHkgc2lzdGVtYXMgZGUgbW9kZXJhY2nDs24uIFRhbWJpw6luIHB1ZWRlIGVzY29nZXIgZW50cmUgZGlmZXJlbnRlcyB0aXBvcyBkZSBub3RpZmljYWNpw7NuIGRlIGNvcnJlbyBxdWUgc2UgZW52w61hbiBlbiBjYWRhIGV2ZW50byBkZWwgY2FsZW5kYXJpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA3IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+wr9OZWNlc2l0YSBheXVkYT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA4IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+UmVzdHJpbmdpZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA5IiBuYW1lPSJsemNhbGVuZGVyIj4KKyAgICA8dmFsdWU+QnVzY2FyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMCIgbmFtZT0ibHpjYWxlbmRlciI+CisgICAgPHZhbHVlPkHDsWFkaXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODExIiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Tm8gaGF5IG5pbmfDum4gdXN1YXJpbyBzZWxlY2Npb25hZG8uIFNlbGVjY2lvbmUgcHJpbWVybyB1biDDrXRlbSBkZSBsYSBsaXN0YSB5IHB1bHNlIGVuIEHDsWFkaXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMiIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPkHDsWFkaXIgYXNpc3RlbnRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMyIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPkd1YXJkYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE0IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Qm9ycmFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxNSIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPkRldGFsbGVzIGRlbCBFdmVudG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE2IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+TW9kZXJhZG9yZXMgcG9yIGRlZmVjdG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+U3VwZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE4IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE5IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+Tm9tYnJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyMCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyMSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkHDsWFkaXIgbnVldm8gbW9kZXJhZG9yIHBvciBkZWZlY3RvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyMiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPsK/RXMgc3VwZXJtb2RlcmFkb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIzIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+U2kgbGEgc2FsYSBlc3TDoSBtb2RlcmFkYSwgcXVpZW4gc2VhIHlhIG1vZGVyYWRvciBzZWd1aXLDoSBzacOpbmRvbG8uIFNpIG5vIGRlc2VhIHF1ZSBzZWEgYXPDrSwgeSBzw7NsbyBxdWllcmUgcXVlIGRldGVybWluYWRvIHVzdWFyaW8gc2VhIGVsIG1vZGVyYWRvciwgdXRpbGljZSBsYSBvcGNpw7NuIGRlIG1vZGVyYWRvciBwb3IgZGVmZWN0by48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI0IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+VW4gc3VwZXJtb2RlcmFkb3IgZXMgc2llbXByZSBlbCBtb2RlcmFkb3IgZGUgdW5hIHNhbGEgY3VhbmRvIGVudHJhIGVuIGVsbGEuIEFkZW3DoXMsIG5hZGllIHB1ZWRlIHF1aXRhcmxlIGxhIG1hcmNhIGRlIG1vZGVyYWNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkFwbGljYXIgc3VwZXJtb2RlcmFjacOzbiBhbCB1c3VhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPlF1aXRhciBzdXBlcm1vZGVyYWNpw7NuIGFsIHVzdWFyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjgiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5TaSBhw7FhZGUgdW5hIG9yZ2FuaXphY2nDs24gYSBsYSBzYWxhLCBzw7NsbyBsb3MgdXN1YXJpb3MgZGUgZGljaGEgb3JnYW5pemFjacOzbiB0ZW5kcsOhbiBhY2Nlc28gYSBsYSBtaXNtYSAoZXN0byBzw7NsbyBlcyB2w6FsaWRvIHNpIGxhIG1hcmNhIGRlIFDDumJsaWNhIGVzdMOhIGNvbmZpZ3VyYWRhIGNvbW8gZmFsc2EpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyOSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPk1vZGVyYWNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzMCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkxpbWl0YWNpb25lczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzEiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5Pcmdhbml6YWNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzMiIgbmFtZT0iY29uZmlybSBhY3Rpb24iPgorICAgIDx2YWx1ZT7Cv0VzdMOhIHVzdGVkIHNlZ3Vybz88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODMzIiBuYW1lPSJjb25maXJtIGRlbGV0ZSI+CisgICAgPHZhbHVlPsK/UmVhbG1lbnRlIGRlc2VhIGJvcnJhciBlc3RlIMOtdGVtPyDCoVRpZW5lIHF1ZSBwdWxzYXIgZW4gZWwgYm90w7NuIGRlIGd1YXJkYXIgcGFyYSBhbG1hY2VuYXIgbG9zIGNhbWJpb3MhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNCIgbmFtZT0idXNlciBjaG9vc2UgZXJyb3IiPgorICAgIDx2YWx1ZT5ObyBoYXkgbmluZ8O6biB1c3VhcmlvIHNlbGVjY2lvbmFkby4gUG9yIGZhdm9yLCBzZWxlY2Npw7NuZWxvIHByaW1lcm8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkHDsWFkaXIgdW4gbnVldm8gbW9kZXJhZG9yIHBvciBkZWZlY3RvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPsK/RGVzZWEgYcOxYWRpciB1bmEgbWFyY2EgZGUgc3VwZXJtb2RlcmFkb3IgYSBlc3RlIHVzdWFyaW8/IFJlY3VlcmRlIHF1ZSB1biBzdXBlcm1vZGVyYWRvciBubyBzw7NsbyBlcyBlbCBtb2RlcmFkb3IgZGUgdW5hIHNhbGEsIHNpbm8gcXVlIGFkZW3DoXMgbmluZ8O6biBvdHJvIG1vZGVyYWRvciBwb2Ryw6EgYm9ycmFyIGxhIG1hcmNhIGRlIG1vZGVyYWNpw7NuLiBOZWNlc2l0YSBndWFyZGFyIGVsIG9iamV0byBzYWxhIHBhcmEgYWxtYWNlbmFyIGVzdGFzIGNvbmZpZ3VyYWNpb25lcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+wr9EZXNlYSBlbGltaW5hciBsYSBtYXJjYSBkZSBzdXBlcm1vZGVyYWRvciBhIGVzdGUgdXN1YXJpbz8gTmVjZXNpdGEgZ3VhcmRhciBlbCBvYmpldG8gc2FsYSBwYXJhIGFsbWFjZW5hciBlc3RhcyBjb25maWd1cmFjaW9uZXMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzOCIgbmFtZT0ic3VwZXIgbW9kZXJhdG9yIj4KKyAgICA8dmFsdWU+RXN0ZSB1c3VhcmlvIHRpZW5lIGVsIHJvbCBkZSBzdXBlcm1vZGVyYWRvci4gTm8gcHVlZGUgcXVpdGFybGUgbGEgbWFyY2EgZGUgbW9kZXJhY2nDs24gYSB1biBzdXBlcm1vZGVyYWRvci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM5IiBuYW1lPSJjb25maXJtIGRlbGV0ZSI+CisgICAgPHZhbHVlPsK/UmVhbG1lbnRlIGRlc2VhIGJvcnJhciBlc3RlIEFyY2hpdm8vRGlyZWN0b3Jpbz88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQwIiBuYW1lPSJjb25maXJtIGRlbGV0ZSI+CisgICAgPHZhbHVlPsK/Qm9ycmFyIGFyY2hpdm8vZGlyZWN0b3Jpbz88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQxIiBuYW1lPSJzYWx1dGF0aW9uIj4KKyAgICA8dmFsdWU+RMOxYS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQyIiBuYW1lPSJzYWx1dGF0aW9uIj4KKyAgICA8dmFsdWU+RC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQzIiBuYW1lPSJwcm9wZXJ0eSBwYW5lbCB3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+UHJvcGllZGFkZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ0IiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+TW9zdHJhciBsYSBwb3NpY2nDs24gZGVsIHJhdMOzbiBhIGxvcyBwYXJ0aWNpcGFudGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NSIgbmFtZT0icHVibGlzaCBvcHRpb24iPgorICAgIDx2YWx1ZT5Db21wYXJ0aXIgYXVkaW8gY29uIGVsIGFwcGxldCBTSVA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ2IiBuYW1lPSJwdWJsaXNoIG9wdGlvbiI+CisgICAgPHZhbHVlPkNvbXBhcnRpciBhdWRpbyBjb24gU0lQIHkgdsOtZGVvIGNvbiBGbGFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDciIG5hbWU9ImRvY3VtZW50IHBhbmVsIj4KKyAgICA8dmFsdWU+UGFudGFsbGEgY29tcGxldGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ4IiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5WZXIgZXNjcml0b3JpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDkiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkVsIHVzdWFyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUwIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5kZXNlYSBjb21wYXJ0aXIgc3UgZXNjcml0b3Jpby4gwr9EZXNlYSB2aXN1YWxpemFybG8/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MSIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+Q2VycmFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MiIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPlpvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUzIiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+TGEgc2VzacOzbiBoYSBzaWRvIGNlcnJhZGEgcG9yIHF1aWVuIGNvbXBhcnTDrWEgZXNjcml0b3JpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTQiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5QYXVzYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTUiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5OdWV2YSBjb21wYXJ0aWNpw7NuIGRlIGVzY3JpdG9yaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU2IiBuYW1lPSJwcmVzZW50ZXIgbWluaSBpY29uIj4KKyAgICA8dmFsdWU+TWluaW1pemFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1NyIgbmFtZT0icHJlc2VudGVyIG1pbmkgaWNvbiI+CisgICAgPHZhbHVlPk1heGltaXphcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTgiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlbDrWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTkiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkzDrW5lYSB0ZW1wb3JhbCBkZSBncmFiYWNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TWlzIGdyYWJhY2lvbmVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+R3JhYmFjaW9uZXMgcMO6YmxpY2FzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+SW5mbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjMiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk5vbWJyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjQiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkxvbmdpdHVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RmVjaGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Qb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY3IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5EZXNjYXJnYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjgiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlByaW5jaXBhbCAtIFbDrWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjkiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkdyYWJhY2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcwIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5QdWVkZSBncmFiYXIgeSBjb21wYXJ0aXIgc3UgZXNjcml0b3JpbyBhIGxhIHZlei4gUGFyYSBwZXJtaXRpciBxdWUgb3Ryb3MgdmVhbiBzdSBlc2NyaXRvcmlvLCBwdWxzZSBlbiBlbCBib3TDs24gLWluaWNpYXItIGRlIGxhIHBhcnRlIHN1cGVyaW9yLiBQYXJhIGdyYWJhciBsYSBzZXNpw7NuLCBlcyBzdWZpY2llbnRlIGNvbiBwdWxzYXIgZW4gaW5pY2lhciBncmFiYWNpw7NuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzEiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkluaWNpYXIgZ3JhYmFjacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzIiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlBhcmFyIGdyYWJhY2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODczIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5EZXNjYXJnYXIgZWwgYXJjaGl2byBGTFY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc0IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TYWxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3NSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UGxheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzYiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlN0b3A8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc3IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5FbCB1c3VhcmlvIHRpZW5lIGVsIG1pY3LDs2Zvbm8gYWN0aXZhZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc4IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkRldGVuZXIgbGEgY29tcGFydGljacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzkiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+UGVybWl0aXIgcHJlZ3VudGFzIGRlbCB1c3VhcmlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MCIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5EZXNhY3RpdmUgZXN0YSBvcGNpw7NuIHBhcmEgaW1wZWRpciBxdWUgbmluZ8O6biB1c3VhcmlvIGxlIG1vbGVzdGUgZW4gZXN0YSBzYWxhLiBBbCBoYWNlcmxvLCBlbCBib3TDs24gcGFyYSBzb2xpY2l0YXIgbGEgbW9kZXJhY2nDs24gbm8gc2Vyw6EgdmlzaWJsZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgxIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPlBlcm1pc29zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RGVzY2FyZ2FyIGNvbW8gQVZJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RkxWPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QVZJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UmF3IFNjcmVlbnZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+U8OzbG8gYXVkaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg3IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5IYSBoYWJpZG8gZXJyb3JlcyBtaWVudHJhcyBzZSBwcm9jZXNhYmEgbGEgZ3JhYmFjacOzbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg4IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5MYSBncmFiYWNpw7NuIGHDum4gbm8gZXN0YSBsaXN0YS4gSW50w6ludGVsbyBkZSBudWV2byBlbiB1biBwYXIgZGUgbWludXRvcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg5IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Mb2c6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TWVuc2FqZSBkZWwgZ3JhYmFkb3I6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+T2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkyIiBuYW1lPSJzaXAgYXBwbGV0Ij4KKyAgICA8dmFsdWU+RWwgYXBwbGV0IFNJUCBubyBlc3TDoSBsaXN0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTMiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5Db25maWd1cmFjacOzbiBkZSBsYSBjdWVudGEgU0lQPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NCIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPkNvbmZpZ3VyYWNpw7NuIFNJUCBwYXJhIGNhZGEgdXN1YXJpby4gUHVlZGUgYWN0aXZhciBvIGRlc2FjdGl2YXIgU0lQIGRlc2RlIEFkbWluaXN0cmFjacOzbiAmZ3Q7IENvbmZpZ3VyYWNpw7NuIChLZXk6IGVuYWJsZV9zaXApLiBMb3MgZGF0b3MgU0lQIGRlIGNhZGEgdXN1YXJpbyBkZWJlcsOtYW4gY3JlYXJzZSBhdXRvbcOhdGljYW1lbnRlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTUiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5Vc3VhcmlvIFNJUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTYiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5Db250cmFzZcOxYSBTSVA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk3IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+SUQgQXV0LVNJUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTgiIG5hbWU9InNpcCBzdGF0dXMgbWVzc2FnZSI+CisgICAgPHZhbHVlPkxhIGF1dGVudGljYWNpw7NuIFNJUCBoYSBmYWxsYWRvLiBEZWJlcsOtYSBjb21wcm9iYXIgbG9zIGRhdG9zIGRlIGF1dGVudGljYWNpw7NuIGRlIHN1IHByb3ZlZWRvciBTSVAgeSBkZSBsYSBjdWVudGEgU0lQIGRlIGNhZGEgdXN1YXJpby4gQ29tbyBhZG1pbmlzdHJhZG9yLCBwb2Ryw6EgYXV0ZW50aWNhcnNlIHkgY29tcHJvYmFyIGxhIGNvbmZpZ3VyYWNpw7NuLiBTaSBlbnRyYSBjb21vIHVzdWFyaW8gbyBjb21vIG1vZGVyYWRvciwgY3VhbHF1aWVyIGludGVudG8gZGUgaW50ZXJhY2Npw7NuIHNlcsOhIGJsb3F1ZWFkby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk5IiBuYW1lPSJzaXAgc3RhdHVzIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5MYSBhdXRlbnRpY2FjacOzbiBTSVAgaGEgZmFsbGFkby4gQ29udGFjdGUgY29uIGVsIHNlcnZpY2lvIHTDqWNuaWNvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDAiIG5hbWU9InNpcCBzdGF0dXMgbWVzc2FnZSI+CisgICAgPHZhbHVlPkF1dGVudGljYW5kbyBlbiBsYSBwdWVydGEgZGUgZW5sYWNlIFNJUC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDEiIG5hbWU9InNpcCBzdGF0dXMgbWVzc2FnZSI+CisgICAgPHZhbHVlPkF1dGVudGljYW5kbyBlbiBsYSBwdWVydGEgZGUgZW5sYWNlIFNJUC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDIiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk1vc3RyYXIgTG9nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwMyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TWVuc2FqZXMgTG9nIGRlbCBwcm9jZXNvIGRlIHBvc3RncmFiYWNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwNCIgbmFtZT0ic2lwIGxvZ2luIj4KKyAgICA8dmFsdWU+TWVuc2FqZSBkZWwgYXBwbGV0IFNJUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDUiIG5hbWU9InNpcCBsb2dpbiI+CisgICAgPHZhbHVlPkVsIGFwcGxldCBTSVAgbm8gZXN0w6EgbGlzdG8uIFBvciBmYXZvciwgYWNlcHRlIGVsIGFwcGxldCB5IHB1bHNlIE9LLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDYiIG5hbWU9Im1vZGVyYXRvciBwb3AgdXAiPgorICAgIDx2YWx1ZT5Tb2xpY2l0YXIgbGEgbW9kZXJhY2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA3IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+R3VhcmRhciBjYW1iaW9zIGRlIGxhIGNpdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA4IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+TGEgY2l0YSBoYSBzaWRvIGNhbWJpYWRhLiDCv0Rlc2VhIGd1YXJkYXIgZGljaG9zIGNhbWJpb3M/IFxuXG5Ub2RvcyBsb3MgcGFydGljaXBhbnRlcyBpbXBsaWNhZG9zIHJlY2liaXLDoW4gdW4gY29ycmVvIGNvbiBsYSBmZWNoYSB5IGhvcmEgYWN0dWFsaXphZGFzIChkZXBlbmRpZW5kbyBkZWwgdGlwbyBkZSBub3RpZmljYWNpw7NuIGRlIGVzdGEgY2l0YSkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwOSIgbmFtZT0iZmx2IHJlY29yZGVyIGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5QYXJhIGFjY2VkZXIgYSBvdHJhcyBncmFiYWNpb25lcywgdGllbmUgcXVlIGF1dGVudGljYXJzZSBlbiBsYSBhcGxpY2FjacOzbiAkQVBQX05BTUUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMCIgbmFtZT0iaW50ZXJ2aWV3IHZpZGVvIHBvZCI+CisgICAgPHZhbHVlPlNlbGVjY2lvbmUgZWwgdXN1YXJpbyBwYXJhIGVzdGUgdsOtZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMSIgbmFtZT0iaW50ZXJ2aWV3IHZpZGVvIGNob29zZSB1c2VyIj4KKyAgICA8dmFsdWU+VXN1YXJpb3MgZGlzcG9uc2libGVzIHBhcmEgZXN0YSB0cmFuc21pc2nDs24gUG9kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMiIgbmFtZT0iaW50ZXJ2aWV3IGluZm8iPgorICAgIDx2YWx1ZT5Vc3RlZCBlcyBtb2RlcmFkb3IgZW4gZXN0YSBlbnRyZXZpc3RhLiBQdWVkZSBkZWNpZGlyIHF1acOpbiBoYWJsYSBhc8OtIGNvbW8gaW5pY2lhciAvIHBhcmFyIGxhIGdyYWJhY2nDs24gZGUgbGEgc2VzacOzbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTEzIiBuYW1lPSJpbnRlcnZpZXcgYnV0dG9uIHJlY29yZGluZyI+CisgICAgPHZhbHVlPkluaWNpYXIgR3JhYmFjacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTQiIG5hbWU9ImludGVydmlldyBidXR0b24gcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UGFyYXIgR3JhYmFjacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTUiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TGEgZ3JhYmFjacOzbiBkZSBsYSBlbnRyZXZpc3RhIGVzdMOhIHlhIGluaWNpYWRhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTYiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TGEgZ3JhYmFjacOzbiBlc3TDoSB5YSBwYXJhZGEgbyBiaWVuIG5vIGhhIHNpZG8gaW5pY2lhZGEgYcO6bi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE3IiBuYW1lPSJpbnRlcnZpZXcgcmVjb3JkaW5nIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT7CoVlhIHNlIGhhIGluaWNpYWRvIGxhIGdyYWJhY2nDs24gZGUgZXN0YSBlbnRyZXZpc3RhITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTgiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2FuY2VsYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE5IiBuYW1lPSJpbnRlcnZpZXcgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPkVsIHBvc3QtcHJvY2VzbyBkZSB1bmEgZW50cmV2aXN0YSBsbGV2YSBjaW5jbyB2ZWNlcyBtw6FzIHRpZW1wbyBxdWUgZWwgZGUgbGEgcHJvcGlhIGVudHJldmlzdGEuIEVsIHByb2dyZXNvIGFjdHVhbCBkZSBlc3RlIHByb2Nlc28gZXMgZWwgc2lndWllbnRlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjAiIG5hbWU9InNpcCBjcmVhdGlvbiI+CisgICAgPHZhbHVlPlRpZW5lIHF1ZSBpbnRyb2R1Y2lyIGRlIG51ZXZvIHN1IGNvbnRyYXNlw7FhIHBhcmEgYXV0b2NyZWFyIGxvcyBkYXRvcyBTSVA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIxIiBuYW1lPSJzaXAgY3JlYXRpb24iPgorICAgIDx2YWx1ZT5SZWdlbmVyYXIgZGF0b3MgU0lQPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyMiIgbmFtZT0iZmlsZWV4cGxvcmVyIj4KKyAgICA8dmFsdWU+wqFObyBwdWVkZSBtb3ZlciBlc3RlIGFyY2hpdm8gbyBjYXJwZXRhIGRlbnRybyBkZSBzdSBwcm9waW8gc3ViZGlyZWN0b3JpbyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIzIiBuYW1lPSJmaWxlIGV4cGxvcmVyICI+CisgICAgPHZhbHVlPlRhbWHDsW8gZGVsIGRpc3Bvc2l0aXZvIHBlcnNvbmFsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlRhbWHDsW8gZGVsIGRpc3Bvc2l0aXZvIHDDumJsaWNvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNSIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPkFqdXN0ZXMgZGUgbGljZW5jaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI2IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+QWwgaGFiaWxpdGFyIGxhIGxpY2VuY2lhIHB1ZWRlIG9ibGlnYXIgYSBsb3MgdXN1YXJpb3MgYmllbiBjb24gdW5hIGZlY2hhIGRlIGNhZHVjaWRhZCBiaWVuIGNvbiB1biBuw7ptZXJvIG3DoXhpbW8gZGUgbWludXRvcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI3IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+Q29tcHJvYmFyIGxpY2VuY2lhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyOCIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPlRhcmlmYSBwbGFuYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjkiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5GZWNoYSBkZSBjYWR1Y2lkYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMwIiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+U2VndW5kb3MgcmVzdGFudGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMSIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPlRpZW1wbyB0b3RhbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzIiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlN1IGxpY2VuY2lhIGhhIGV4cGlyYWRvLiBOZWNlc2l0YSBjb21wcmFyIG3DoXMgdGllbXBvIChwYWdvIHBvciBtaW51dG8pIG8gYmllbiBwYXNhcnNlIGEgdW5hIHRhcmlmYSBwbGFuYS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMzIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5QdWxzYXIgeSBjb21wcmFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzNCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+VGllbXBvIHJlc3RhbnRlIGRlIHN1IGN1ZW50YTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM1IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5JbmZvcm1hY2nDs24gZGUgbGEgbGljZW5jaWEgZGVsIHVzdWFyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM2IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5JbmZvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzNyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Q2VycmFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzOCIgbmFtZT0ibGljZW5zZS1pbmZvIj4KKyAgICA8dmFsdWU+U3UgbGljZW5jaWEgaGEgZXhwaXJhZG8uIE5lY2VzaXRhIGNvbXByYXIgbyB1biBwYXF1ZXRlIGRlIHRpZW1wbyAocGFnby1wb3ItbWludXRvcykgbyB1bmEgdGFyaWZhIHBsYW5hLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzkiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkNvbmZpZ3VyYWNpw7NuIGRlIGxhIGxpY2VuY2lhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+UHVlZGUgbyBiaWVuIGNvbXByYXIgbWludXRvcyBkZSB1c28gZGUgbGEgdmlkZW9jb25mZXJlbmNpYS4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7IE8gcHVlZGUgY29tcHJhciB1bmEgdGFyaWZhIHBsYW5hIGRlIDMgYSAxMiBtZXNlcy4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7U8OzbG8gc2UgcGVybWl0ZSBlbCBlbnbDrW8gZGUgaW52aXRhY2lvbmVzIChlbmxhY2VzIGRpcmVjdG9zIHBhcmEgZW50cmFyIGVuIGxhcyBzYWxhcykgbyBsYSBjcmVhY2nDs24gZGUgc2FsYXMgZGUgY29uZmVyZW5jaWEgYSB0cmF2w6lzIGRlbCBjYWxlbmRhcmlvIGEgdXN1YXJpb3MgY29uIHRhcmlmYSBwbGFuYS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQxIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Db21wcmFyIDYwIG1pbnV0b3MgOSw5OSDigqwgKDE2IGPDqW50aW1vcyBwb3IgbWludXRvKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDIiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkNvbXByYXIgNSBob3JhcyAxOSw5OSDigqwgKDYgY8OpbnRpbW9zIHBvciBtaW51dG8pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Q29tcHJhciAzIG1lc2VzIHBvciAyOSw5OSDigqwgKDksOTkg4oKsIHBvciBtZXMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Q29tcG9yYXIgNiBtZXNlcyBwb3IgMzksOTkg4oKsICg2LDY2IOKCrCBwb3IgbWVzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDUiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlBhZ28tcG9yLW1pbnV0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDYiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlRhcmlmYSBwbGFuYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDciIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlRpZW5lIHVuYSBsaWNlbmNpYSBpbGltaXRhZGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ4IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5TdSBsaWNlbmNpYSBleHBpcmFyw6EgYSBsYXM6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0OSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+SGEgY29tcHJhZG8gUGFnby1wb3ItbWludXRvLiBUb2RhdsOtYSB0aWVuZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUwIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT7CoUFtcGxpYXIgZWwgY3LDqWRpdG8hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+wr9EZXNlYSB0ZW5lciBzdSBwcm9waW8gc2Vydmlkb3I/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+UHVlZGUgcXVlIGRlc2VlIHRlbmVyICRBUFBfTkFNRSBpbnN0YWxhZG8gZW4gc3Ugc2Vydmlkb3IgbyBpbnRlZ3JhZG8gY29uIE1vb2RsZSwgU3VnYXJDUk0sIGxhIHDDoWdpbmEgd2ViIG8gbGEgaW50cmFuZXQuIEVsIHByZWNpbyBtw61uaW1vIGVzIGRlIDUwMCDigqwgcG9yIGxhIGluc3RhbGFjacOzbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUzIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5PIGVudsOtZW5vcyB1biBtZW5zYWplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1NCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+UmVzcG9uZGVyIGE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1NSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+TWVuc2FqZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU2IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5FbnZpYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU3IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5QdWxzZSBhcXXDrSBwYXJhIGNvbnNlZ3VpciBpbmZvcm1hY2nDs24gZGUgY29udGFjdG8geSBwcmVjaW9zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1OCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+RGV0YWxsZXMgZGUgbGEgdGFyamV0YSBkZSBjcsOpZGl0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTkiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPk5vbWJyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjAiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkFwZWxsaWRvczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjEiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlRpcG8gZGUgdGFyamV0YSBkZSBjcsOpZGl0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjIiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlRhcmpldGEgVklTQTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjMiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPk1hc3RlckNhcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY0IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5EaXNjb3ZlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjUiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkFtZXJpY2FuIEV4cHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY2IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5Ow7ptZXJvIGRlIGxhIHRhcmpldGEgZGUgY3LDqWRpdG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY3IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5GZWNoYSBkZSBjYWR1Y2lkYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY4IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5Ow7ptZXJvIGRlIHZlcmlmaWNhY2nDs24gZGUgbGEgdGFyamV0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjkiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkRpcmVjY2nDs24gZGUgZmFjdHVyYWNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+RGlyZWNjacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzEiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzIiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNpdWRhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzMiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlBhw61zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+RXN0YWRvIChTw7NsbyBVUyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc1IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5Dw7NkaWdvIFBvc3RhbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzYiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNhbnRpZGFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NyIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+RW52aWFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3OCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+UGFzbyAxOiAkQVBQX05BTUUgLSBGb3JtYSBkZSBwYWdvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3OSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q29ycmVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+UHVsc2UgIlZlcmlmaWNhciBjb24gUGF5cGFsIiBwYXJhIHBhZ2FyLiZsdDtici8mZ3Q7IFBheXBhbCBhY2VwdGEgVklTQSwgTWFzdGVyQ2FyZCwgRGlzY292ZXIgbyBBbWVyaWNhbiBFeHByZXNzLiAmbHQ7YnIvJmd0O05vIGVzIG9ibGlnYXRvcmlvIHJlZ2lzdHJhcnNlIGNvbiBQYXlwYWwuICZsdDtici8mZ3Q7TG9zIGNpdWRhZGFub3MgZGUgQWxlbWFuYSBwdWVkZW4gcGFnYXIgdGFtYmnDqW4gdXRpbGl6YW5kbyBkb21pY2lsaWFjacOzbiBiYW5jYXJpYS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgxIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5HcmFjaWFzIHBvciBjb21wcmFyICRBUFBfTkFNRS4gJmx0O2JyLyZndDsgJmx0O2JyLyZndDsgVGFuIHByb250byBjb21vIHRlbmdhbW9zIGNvbmZpcm1hY2nDs24gZGVsIHBhZ28sIHN1IGN1ZW50YSBzZXLDoSBhY3R1YWxpemFkYS4mbHQ7YnIvJmd0OyBSZWNpYmlyw6EgdW4gY29ycmVvIGNvbiBzdSBmYWN0dXJhIGVuIHBkZi4mbHQ7YnIvJmd0O1B1ZWRlIHRhbWJpw6luIGNvbXByb2JhciBsb3MgbW92aW1pZW50b3MgcGFzYWRvcyB5IGFjdHVhbGVzIGVuIHN1IHBlcmZpbC4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7Jmx0O2JyLyZndDtTaSBsbyBkZXNlYSwgcHVlZGEgeWEgY2VycmFyIGVzdGEgdmVudGFuYSBlbiBlbCBuYXZlZ2Fkb3IgeSB2b2x2ZXIgYSAkQVBQX05BTUUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+RW52aWFyIHkgQ29tcHJhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODMiIG5hbWU9InBheW1lbnQtZnJvbSI+CisgICAgPHZhbHVlPlB1bHNhciB5IENvbXByYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg0IiBuYW1lPSJwYXltZW50LWZyb20iPgorICAgIDx2YWx1ZT5QYXNvIDM6IFBhZ28gcG9yICRBUFBfTkFNRSAtIFZlcmlmaXF1ZSBsYSBvcmRlbiB5IHBhZ3VlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4NSIgbmFtZT0icGF5bWVudC1mcm9tIj4KKyAgICA8dmFsdWU+Tm9tYnJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4NiIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+wqFQYWdvIHJlY2liaWRvITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODciIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPlNhbHVkb3MsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4OCIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+SGVtb3MgcmVjaWJpZG8gc3UgcGFnby4gU3UgcGVyZmlsIGRlIHVzdWFyaW8gc2UgaGEgYWN0dWFsaXphZG8gY29udmVuaWVudGVtZW50ZS4gVmVhIGFkanVudGFkYSBzdSBmYWN0dXJhLiBFc3RhIChhc8OtIGNvbW8gdG9kYXMgbGFzIGFudGVyaW9yZXMpIHBvZHLDoSBzZXIgZGVzY2FyZ2FkYSBkZXNkZSBzdSBwZXJmaWwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4OSIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+R3JhY2lhcyBwb3IgdXRpbGl6YXIgJEFQUF9OQU1FITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTAiIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPlBhZ28gcmVjaWJpZG8gZGUgJEFQUF9OQU1FIC08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkxIiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+RXN0YWRvIGRlIHBhZ29zIHkgdHJhbnNmZXJlbmNpYXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkyIiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+VHJhbnNjYXRpb24gSGFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTMiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NaW51dG9zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NCIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPk1lc2VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NSIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPkVVUjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTYiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Fc3RhZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk3IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+RmFjdHVyYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTgiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk5IiBuYW1lPSJlcnJvci1saWNlbnNlLWZsYXQiPgorICAgIDx2YWx1ZT5OZWNlc2l0YSBjb21wcmFyIHVuYSB0YXJpZmEgcGxhbmEgcGFyYSBwb2RlciBlbnZpYXIgaW52aXRhY2lvbmVzIG8gY3JlYXIgZW5jdWVudHJvcyB1dGlsaXphbmRvIGVsIGNhbGVuZGFyaW8uIENvbiBlbCBzaXN0ZW1hIHBhZ28gcG9yIG1pbnV0b3Mgc8OzbG8gZXMgcG9zaWJsZSBhY2NlZGVyIGEgJEFQUF9OQU1FLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAwIiBuYW1lPSJlcnJvciB1c2VyIj4KKyAgICA8dmFsdWU+RXN0YSBkaXJlY2Npw7NuIGRlIGNvcnJlbyBlc3TDoSBzaWVuZG8gdXRpbGl6YWRhIHBvciBvdHJvIHVzdWFyaW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDEiIG5hbWU9InJvb20tYWRtaW4iPgorICAgIDx2YWx1ZT5BanVzdGVzIFNJUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAyIiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+RWwgbsO6bWVybyBkZSBsYSB2aWRlb2NvbmZlcmVuY2lhIHkgZWwgUElOIHNvbiBjcmVhZG9zIGF1dG9tw6F0aWNhbWVudGUgdXRpbGl6YW5kbyBsYSBwYXNhcmVsYSBPcGVuWEcgUlBDLUdhdGV3YXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwMyIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPk7Dum1lcm8gU0lQPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDQiIG5hbWU9InJvb20tYWRtaW4iPgorICAgIDx2YWx1ZT5QSU48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNSIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPsKhTGltcGlhciBzw7NsbyBsb3Mgb2JqZXRvcyBkZSBsYSBwcmVzZW50YWNpw7NuIGFjdHVhbCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNiIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPlPDs2xvIHNlIGVudmlhcsOhIGEgbG9zIHBhcnRpY2lwYW50ZXMgbGEgVVJMIGludHJvZHVjaWRhIGVuIGxhIGJhcnJhIGRlIGVzdGFkbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+SGFjZXIgc2FsYXMgZGUgZXF1aXBvczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U2VsZWNjaW9uZSB1c3VhcmlvcyBwYXJhIHVuYSBudWV2YSBzYWxhIGRlIGVxdWlwbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+UHVlZGUgc2VsZWNjaW9uYXIgdXN1YXJpb3MgYXF1w60geSBjcmVhciB1bmEgbnVldmEgc2FsYSBkZSAodsOtZGVvKWNvbmZlcmVuY2lhICgic2FsYSBkZSBlcXVpcG8iKSBwYXJhIGxvcyBtaXNtb3MuIExvcyB1c3VhcmlvcyBzZWxlY2Npb25hZG9zIGF1dG9tw6F0aWNhbWVudGUgcG9kcsOhbiBjb25lY3RhcnNlIGEgbGEgbnVldmEgc2FsYSBvIGJpZW4gcmVjaWJpciB1bmEgbm90aWZpY2FjacOzbi4gTG9zIG1vZGVyYWRvcmVzIGNvbnNlZ3VpcsOhbiBhZGljaW9uYWxtZW50ZSB1bmEgbGlzdGEgZGUgbGFzIHNhbGFzIGFjdHVhbGVzIGRlIHRhbCBtb2RvIHF1ZSBwdWVkYW4gY29uZWN0YXJzZSBhIGNhZGEgc2FsYSBzaSBmdWVyYSBuZWNlc2FyaW8gbW9kZXJhcmxhcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzdWFyaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkxvZ2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzdWFyaW9zIHBhcmEgbGEgbnVldmEgc2FsYSBkZSBlcXVpcG86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DcmVhciBzYWxhIGRlIGVxdWlwbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2FuY2VsYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlNlbGVjY2lvbmUgYWwgbWVub3MgdW4gdXN1YXJpbyBwYXJhIGxhIHNhbGEgZGUgZXF1aXBvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Bw7FhZGlyIHVuIHVzdWFyaW8gYWwgZXF1aXBvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5RdWl0YXIgdXN1YXJpb3MgZGUgbGEgc2FsYSBkZSBlcXVpcG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkVsIHVzdWFyaW8gZXMgbW9kZXJhZG9yIGRlIGxhIHNhbGEgZGUgZXF1aXBvIChwdWVkZSBnZXN0aW9uYXIgc2FsYXMsIHkgbG9zIHVzdWFyaW9zIGRlbCBlcXVpcG8gcHVlZGVuIHNvbGljaWFydGUgZW50cmFyKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGlwbyBkZSBzYWxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5TaSBhY3RpdmEgIkZvcnphciBhIGxvcyB1c3VhcmlvcyBhIGNvbmVjdGFyc2UgYSBsYSBudWV2YSBzYWxhIGRlIGVxdWlwbyIgdG9kb3MgbG9zIHVzdWFyaW9zIHNlbGVjY2lvbmFkb3Mgc2Vyw6FuIGNvbmVjdGFkb3MgYXV0b23DoXRpY2FtZW50ZSBhIGxhIMO6bHRpbWEgc2FsYSBjcmVhZGEuIFBvciBvdHJvIGxhZG8sIHJlY2liZW4gdW5hIG5vdGlmaWNhY2nDs24gY29uIHVuIGJvdMOzbiBxdWUgZWxsb3MgY2FtYmlhciBhIGxhIG51ZXZhIHNhbGEuIExvcyBtb2RlcmFkb3JlcyBkZSBlcXVpcG8gc2llbXByZSB0aWVuZW4gbGliZXJ0YWQgZGUgZWxlY2Npw7NuIHBhcmEgZ2VzdGlvbmFyIGxhcyBzYWxhcyB5IGNvbmVjdGFyc2UgYSBsYSBxdWUgZGVzZWVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+R2VzdGlvbmFyIFNhbGFzIGRlIEVxdWlwb3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlB1ZWRlIGNvbmVjdGFyc2UgYXF1w60gYSBsYSBzYWxhIHF1ZSBkZXNlZSBkZSBsYXMgcXVlIGVzIG1vZGVyYWRvci4gTG9zIHVzdWFyaW9zIGRlbCBlcXVpcG8gcHVlZGVuIGVudmlhcmxlIHVuIG1lbnNhamUsIHBvciBlamVtcGxvIHBhcmEgcGVkaXJsZSBxdWUgZW50cmUgZW4gc3Ugc2FsYSB5IGxlcyBheXVkZS4gVGFtYmnDqW4gcHVlZGUgZmluYWxpemFyIGxhIHNhbGEgZGUgZXF1aXBvIGNvbiBsbyBxdWUgdG9kb3MgbG9zIHVzdWFyaW9zIHNlcsOhbiBkZXNjb25lY3RhZG9zLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Rm9yemFyIGFsIHVzdWFyaW8gYSBjb25lY3RhcnNlIGEgbGEgbnVldmEgc2FsYSBkZSBlcXVpcG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk5vbWJyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q3JlYWRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VXN1YXJpb3MgZGlzcG9uaWJsZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkHDsWFkYSB1biB1c3VhcmlvIGNvbiBlbCArIGVuIGxhIGl6cXVpZXJkYSBvIGLDs3JyZWxvIGNvbiBsYSB4IGRlIGxhIGRlcmVjaGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjEpIENvbmZpZ3VyYWNpw7NuIGRlIGxhIHNhbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjIpIEHDsWFkaXIgdXN1YXJpb3MgYSBsYSBzYWxhIGRlIGVxdWlwbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Tm9tYnJlIGRlIGxhIHNhbGEgZGUgZXF1aXBvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5TYWxhIGRlIGVxdWlwbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2FtYmlhciBhIGxhIHNhbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNvbmVjdGFyIGEgZXN0YSBzYWxhIGRlIGVxdWlwbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+RmluYWxpemFyIHNhbGEgeSBkZXNjb25lY3RhciBhIHRvZG9zIGxvcyB1c3VhcmlvczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TnVldmEgc2FsYSBkZSBlcXVpcG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkhheSB1bmEgbnVldmEgc2FsYSBkZSBlcXVpcG8gZGlzcG9uaWJsZSBwYXJhIHVzdGVkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2FtYmlhciBhIGxhIHNhbGEgZGUgZXF1aXBvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5BY2Npb25lcyBkZSBsYSBzYWxhIGRlIGVxdWlwbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+UHVlZGUgcmVhYnJpciBlc3RhIHZlbnRhbmEgYSB0cmF2w6lzIGRlbCBtZW7DuiBwcmluY2lwYWwgZW4gbGEgc2VjY2nDs24gIkFjY2lvbmVzIjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+RW52aWFyIG1lbnNhamUgYWwgbW9kZXJhZG9yIGRlIGxhIHNhbGEgZGUgZXF1aXBvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5OdWV2YSBzYWxhIGRlIGVxdWlwbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQ1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+SGF5IHVuYSBudWV2YSBzYWxhIGRlIGVxdWlwbyBkaXNwb25pYmxlLiBQdWVkZSBjYW1iaWFyc2UgYSBlc2Egc2FsYS4gTGFzIHNhbGFzIGRlIGVxdWlwbyBzb24gY29tbyAiZ3J1cG9zIGRlIHRyYWJham8iIGNvbiBwb3NpYmlsaWRhZGVzIGFkaWNpb25hbGVzIHBhcmEgc29saWNpdGFyIGF5dWRhIGFsIG1vZGVyYWRvci4gU3VzIHNhbGFzIGRlIGVxdWlwbyBzb24gdGFtYmnDqW4gYWNjZXNpYmxlcyBkZXNkZSBsYSBzZWNjacOzbiAiTWlzIFJldW5pb25lcyIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DYW1iaWFyIGEgbGEgc2FsYSBkZSBlcXVpcG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNyZWFkYSBwb3I6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Ob21icmUgZGUgbGEgc2FsYSBkZSBlcXVpcG86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Fc3RhIHZlbnRhbmEgcGVybWFuZWNlcsOhIGFiaWVydGEgYXVucXVlIHNhbGdhIGRlIGxhIHNhbGEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Vc3VhcmlvcyBkZSBlc3RhIHNhbGEgZGUgZXF1aXBvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4zKSBPdHJhcyBzYWxhcyBkZSBlcXVpcG8gYSBsYXMgcXVlIHBvZHLDrWEgY29uZWN0YXJzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+RW52aWFyIHVuIG1lbnNhamUgYSBsb3MgbW9kZXJhZG9yZXMgZGUgZXN0YSBzYWxhLiBQb3IgZWplbXBsbywgc2kgbmVjZXNpdGEgYXl1ZGEgZW4gbGEgbW9kZXJhY2nDs24gZGUgbGEgc2FsYSBvIHNpIHRpZW5lIGFsZ3VuYSBwcmVndW50YSBzb2JyZSBlbCB0ZW1hLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+RW52aWFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4yKSBVc3VhcmlvcyBxdWUgZXN0w6FuIGludml0YWRvcyBhIGVzdGEgc2FsYSBkZSBlcXVpcG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1NSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkVzIG1vZGVyYWRvciBkZSBsYSBzYWxhIGRlIGVxdWlwbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+RXN0b3Mgc29uIHRvZG9zIGxvcyB1c3VhcmlvcyBhIGxvcyBxdWUgZWwgbW9kZXJhZG9yIGhhIGludml0YWRvIGEgZW50cmFyIGEgZXN0YSBzYWxhIGRlIGVxdWlwby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1NyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk5vIGhheSB1biBtb2RlcmFkb3IgY29uZWN0YWRvIGVuIGVzdGUgbW9tZW50bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+UG9yIGZhdm9yLCBpbnRyb2R1emNhIHVuIG1lbnNhamU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1OSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlBvciBmYXZvciwgYXnDumRlbm9zLiBUZW5lbW9zIHVuIHByb2JsZW1hIGVuIG51ZXN0cmEgc2FsYSBkZSBlcXVpcG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2MCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVuIHVzdWFyaW8gZGUgdW5hIHNhbGEgZGUgZXF1aXBvIHNvbGljaXRhIHN1IGF5dWRhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+RWwgRXF1aXBvIHBpZGUgYXl1ZGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2MiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk1lbnNhamU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5EZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2NCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkFjdHVhbG1lbnRlIG5vIGVzdMOhIGVuIG5pbmd1bmEgc2FsYSBkZSBlcXVpcG8uIFB1ZWRlIGVudHJhciBhcXXDrSBhIHRvZGFzIGxhcyBTYWxhcyBhIGxhcyBxdWUgdGllbmUgYWNjZXNvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY1IiBuYW1lPSJiYWNrdXBDb250ZW50Ij4KKyAgICA8dmFsdWU+UmVzZ3VhcmRlIGVsIHNpc3RtYS4gRWwgYmFja3VwIGluY2x1eWUgbG9zIGRhdG9zIGdlbmVyYWRvcyBwb3IgdG9kb3MgbG9zIHVzdWFyaW9zLiBMYSBjb25maWd1cmFjacOzbiBubyBzZSBpbmNsdXllLCBhbCBpZ3VhbCBxdWUgbGFzIGV0aXF1ZXRhcyBkZSBpZGlvbWFzLCB5YSBxdWUgZXNvcyB2YWxvcmVzIHNlIGltcG9ydGFuIGNvbiBlbCBpbnN0YWxhZG9yIGRlIHNpc3RlbWEuIFBhcmEgYWN0dWFsaXphciBzdSBzaXN0ZW1hLCBleHBvcnRlIGxvcyB2YWxvcmVzIGFudGlndW9zICgxKSwgcmVpbnN0YWxlIGVuIHVuYSBudWV2YSBiYXNlIGRlIGRhdG9zIGVsIG51ZXZvIHBhcXVldGUgKDIpIGUgaW1wb3J0ZSBsYSBhcmNoaXZvIGRlIGJhY2t1cCBkZSBudWV2byAoMykuIEVsIEJhY2t1cCBkZWJpZXJhIHNlciBpbXBvcnRhZG8gYW50ZXMgZGUgZ2VuZXJhciBsb3MgZGF0b3MgZW4gZWwgbnVldm8gc2lzdGVtYS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2NiIgbmFtZT0iYmFja3VwQ29udGVudCI+CisgICAgPHZhbHVlPlNpc3RlbWEgZGUgQmFja3VwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjciIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPlBlcm1pdGlyIGFsIHVzdWFyaW8gY29tcGFydGlyIFBhbnRhbGxhL0dyYWJhY2nDs248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2OCIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+RGVuZWdhciBhbCB1c3VhcmlvIGNvbXBhcnRpciBQYW50YWxsYS9HcmFiYWNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjkiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPkVsIHVzdWFyaW8gZXMgbW9kZXJhZG9yLCB0aWVuZSB0b2RvcyBsb3MgcGVybWlzb3MuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzAiIG5hbWU9ImFwcGx5IGZvciBzY3JlZW4vcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+bGUgZ3VzdGFyw61hIGNvbXBhcnRpci9ncmFiYXIgcGFudGFsbGEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzEiIG5hbWU9Im1vZGVyYXRpb24gbWluaSBpY29ucyI+CisgICAgPHZhbHVlPlB1ZWRlIGNvbXBhcnRpci9ncmFiYXIgcGFudGFsbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3MiIgbmFtZT0ibW9kZXJhdGlvbiBtaW5pIGljb25zIj4KKyAgICA8dmFsdWU+QXBsaWNhciBwYXJhIHBlcm1pdGlyIGNvbXBhcnRpci9ncmFiYXIgcGFudGFsbGEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzMiIG5hbWU9Im1vZGVyYXRpb24gbWluaSBpY29ucyBjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+UGVybWl0aXIvRGVuZWdhciBwZXJtaXNvcyBwYXJhIGNvbXBhcnRpci9ncmFiYXIgcGFudGFsbGEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzQiIG5hbWU9InNvdW5kIGljb24iPgorICAgIDx2YWx1ZT5BcGFnYXIgc29uaWRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzUiIG5hbWU9InNvdW5kIGljb24iPgorICAgIDx2YWx1ZT5BY3RpdmFyIHNvbmlkbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc2IiBuYW1lPSJyb29tIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+U2FsYSBkZSBzw7NsbyBhdWRpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc3IiBuYW1lPSJyb29tIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+QWN0aXZlIGVzdGEgYmFuZGVyYSB5IGxvcyB1c3VhcmlvcyB0ZW5kcsOhbiBzw7NsbyBsYSBvcGNpw7NuIGRlIEF1ZGlvIChzaW4gdsOtZGVvKSBlbiBsYSBzYWxhLiBFcyBpbmRpY2FkbyBwYXJhIGFob3JyYXIgYW5jaG8gZGUgYmFuZGEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzgiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlBlcm1pdGlyIGNvbnRyb2wgcmVtb3RvIChkdXJhbnRlIGxhIGNvbXBhcnRpY2nDs24gZGUgcGFudGFsbGEpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzkiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkRlbmVnYXIgY29udHJvbCByZW1vdG8gKGR1cmFudGUgbGEgY29tcGFydGljacOzbiBkZSBwYW50YWxsYSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MCIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QXBsaWNhciBwYXJhIHBlcm1pdGlyIGVsIGNvbnRyb2wgcmVtb3RvIGRlIGxhIHBhbnRhbGxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODEiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlRpZW5lIHBlcm1pc29zIHBhcmEgZWwgY29udHJvbCByZW1vdG8gZGUgbGEgcGFudGFsbGEgKGR1cmFudGUgbGEgY29tcGFydGljacOzbiBkZSBwYW50YWxsYSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MiIgbmFtZT0iYXBwbHkgZm9yIHJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+bGUgZ3VzdGFyw61hIHRlbmVyIGNvbnRyb2wgcmVtb3RvIGRlIGxhIHBhbnRhbGxhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgzIiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5FbCB1c3VhcmlvIGVzIG1vZGVyYWRvciwgYXPDrSBxdWUgdGllbmUgdG9kb3MgbG9zIHBlcm1pc29zLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg0IiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5QZXJtaXRpci9EZW5lZ2FyIHBlcm1pc29zIGVuIGxhIFBhbnRhbGxhIGRlIENvbnRyb2wgUmVtb3RvIChkdXJhbnRlIGxhIGNvbXBhcnRpY2nDs24gZGUgcGFudGFsbGEpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODUiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPjEpIERlIHN1IFBDIGEgdW4gUEMgcmVtb3RvOiBwYXJhIGNvcGlhciB5IHBlZ2FyIHRleHRvIGRlIHN1IHBvcnRhcGFwZWxlcyBhIHVuYSBwYW50YWxsYSByZW1vdGEsIHB1bHNlIHNvYnJlIGxhIHBhbnRhbGxhLCBsdWVnbyBwdWxzZSBlbCBib3TDs24gZGVyZWNobyBkZWwgcmF0w7NuIHksIGVuIGVsIGNhbXBvIGRlIHRleHRvLCBzZWxlY2Npb25lICJJbnNlcnRhciIgZGVsIG1lbsO6LiZsdDtici8mZ3Q7Jmx0O2JyLyZndDsyKSBEZWwgUEMgcmVtb3RvIGEgc3UgUEM6IHBhcmEgY29waWFyIHRleHRvIGRlIHVuIFBDIHJlbW90byBhbCBwb3J0YXBhcGVsZXMgZGUgc3UgUEMsIHNlbGVjY2lvbmUgZWwgdGV4dG8gY29uIGVsIHJhdMOzbiBlbiBsYSBwYW50YWxsYSByZW1vdGEsIGx1ZWdvIHB1bHNlIGVsIGJvdMOzbiBkZXJlY2hvIGRlbCByYXTDs24gc29icmUgbGEgcGFudGFsbGEgcmVtb3RhIHkgc2VsZWNjaW9uZSAmbHQ7aSZndDtDb3BpYXIgdGV4dG8gZGVzdGFjYWRvJmx0Oy9pJmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg2IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Db3BpZSB5IHBlZ3VlIHRleHRvIGRlIHN1IFBDIGFsIFBDIHJlbW90byB5IHZpY2V2ZXJzYS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4NyIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+Q29waWUgZWwgdGV4dG8gZGVzdGFjYWRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODgiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkPDs21vIGNvcGlhciB5IHBlZ2FyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODkiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPkNhbGlkYWQgcGFyYSBjb21wYXJ0aXIgcGFudGFsbGE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTAiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPkNhbGlkYWQgbXV5IEFsdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5MSIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+Q2FsaWRhZCBBbHRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTIiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPkNhbGlkYWQgTWVkaWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5MyIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+Q2FsaWRhZCBiYWphPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTQiIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+ZW5fVVM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NSIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5kZV9ERTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk2IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPlRlY2xhZG86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTciIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+wqFDZXJyYXIgY29uZmVyZW5jaWEhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTgiIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+TGEgY29uZmVyZW5jaWEgeWEgZXN0w6EgY2VycmFkYSwgc2Vyw6EgcmVkaXJpZ2lkbyBhIG90cmFzIG9mZXJ0YXMgaW50ZXJlc2FudGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTkiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+Q2VycmEgc2FsYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAwIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPlVSTCBkZSBTYWxpZGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMSIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5Db25maWd1cmFjacOzbiBkZSBmaW5hbGl6YWNpw7NuIGRlIHNhbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMiIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5TaSBsYSBzYWxhIGVzdMOhIGNlcnJhZGEgbG9zIHVzdWFyaW9zIHNlcsOhbiByZWRpcmlnaWRvcyBhIGxhIFVSTCBkZSBzYWxpZGEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDMiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+TGRhcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA0IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPklEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDUiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+Tm9tYnJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDYiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+QXJjaGl2byBkZSBDb25maWd1cmFjacOzbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA3IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkNvbmZpZ3VyYWNpw7NuIExkYXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwOCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5Ob21icmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwOSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5BY3RpdmFkbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEwIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkluc2VydGFkbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTExIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkluc2VydGFkbyBwb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMiIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5BY3R1YWxpemFkbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEzIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkFjdHVhbGl6YWRvIHBvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE0IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkxvcyBhcmNoaXZvcyBkZSBjb25maWd1cmFjacOzbiBlc3TDoW4gZW4gbGEgY2FycGV0YSB3ZWJhcHBzL29wZW5tZWV0aW5ncy9jb25mLiBOZWNlc2l0YSBzdWJpciBtYW51YWxtZW50ZSBsb3MgYXJjaGl2b3MgYSBlc3RhIGNhcnBldGEuIExvcyBjYW1iaW9zIHJlYWxpemFkb3MgZW4gZWwgYXJjaGl2byBlc3RhcsOhbiBvbmxpbmUgaW5tZWRpYXRhbWVudGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTUiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+Tm9tYnJlIGRlbCBhcmNoaXZvIGRlIGNvbmZpZ3VyYWNpw7NuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTYiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+U2kgYWN0aXZhICJBw7FhZGlyIERvbWluaW8gYWwgbm9tYnJlIGRlIHVzdWFyaW8iIGVsIHZhbG9yIGRlbCBjYW1wbyAiZG9taW5pbyIgc2UgYcOxYWRlIGEgY2FkYSByZWdpc3RybyBxdWUgZWwgdXN1YXJpbyBpbnRyb2R1Y2UgZW4gbGEgY2FzaWxsYSBkZSBsb2dpbi4gRXN0byBlcyDDunRpbCBzaSBlbCBMb2dpbiBlbiBlbCBMZGFwIHNlIGFsbWFjZW5hIGluY2x1eWVuZG8gZWwgbm9tYnJlIGRlIGRvbWluaW8uIEVqZW1wbG86IHN1cG9uZ2Ftb3MgcXVlIGVsIHVzdWFyaW8gaW50cm9kdWNlICJoYW5zIiB5IGVsIGRvbWluaW8gZXN0w6EgZXNwZWNpZmljYWRvIGNvbW8gImxvY2FsaG9zdC5jb20iLiBFbCBsb2dpbiBxdWUgc2UgdmVyaWZpY2Fyw6EgY29udHJhIGVsIExkYXAgc2Vyw6E6IGhhbnNAbG9jYWxob3N0LmNvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE3IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkHDsWFkaXIgRG9taW5pbyBhbCBub21icmUgZGUgdXN1YXJpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE4IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkRvbWluaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExOSIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5JbnNlcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMCIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5Db3B5IGhpZ2hsaWdodGVkIHRleHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMSIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5SZW1vdGUgQ2xpcGJvYXJkIFRleHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMiIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5TaG93IHJlbW90ZSBDbGlwYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMyIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+RG8gbm90IHNob3cgYWdhaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNCIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+Q29weSB0ZXh0IGhlcmUgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjUiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPllvdSBuZWVkIHRoZSByaWdodCB0byByZW1vdGUgY29udHJvbCAob3IgdGhlIG1vZGVyYXRpb24pIHRvIGNvcHkgYW5kIHBhc3RlIHRleHQgdG8gb3IgZnJvbSB0aGUgcmVtb3RlIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNiIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+RWRpdCBkZWZhdWx0IHNldHRpbmdzIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI3IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5EbyBub3Qgc2hvdyBpbmZvIGJveCBpbiBSZW1vdGUgQ29udHJvbCBhYm91dCBDb3B5IGFuZCBQYXN0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI4IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPlNhdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyOSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5SZW1vdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMSIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkludml0ZSB1c2VyIHRvIGNvbmZlcmVuY2Ugcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMyIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+Q2hvb3NlIGEgY29uZmVyZW5jZSByb29tLiBUaGUgaW52aXRlZCB1c2VyIHdpbGwgZ2V0IGEgbWVzc2FnZSB3aXRoIHlvdXIgbmFtZSBhbmQgYSBsaW5rIHRvIHRoZSByb29tLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMzIiBuYW1lPSJjaGF0IHVzZXIiPgorICAgIDx2YWx1ZT5Db25uZWN0ZWQgc2luY2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzQiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5FbnRlciByb29tIGFmdGVyIHNlbmRpbmcgaW52aXRhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM1IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+SW52aXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzYiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5NZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzciIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGludml0ZSB5b3UgdG8gdGhlIGNvbmZlcmVuY2Ugcm9vbTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzOCIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkludml0ZSBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzkiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5TZW5kIEludml0YXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0MCIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPmRpZCAmbHQ7YiZndDtub3QmbHQ7L2ImZ3Q7IGFjY2VwdCB5b3VyIGludml0YXRpb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDEiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5BY2NlcHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0MiIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkRlbnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0MyIgbmFtZT0idXNlciBwcm9maWxlIj4KKyAgICA8dmFsdWU+VGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0NCIgbmFtZT0iYXBwb2ludG1lbnQgbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+RXZlbnQgRGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ1IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDYiIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPkRlc2NyaXB0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDciIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPkNyZWF0ZWQgYnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0OCIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlRpbWVab25lIE1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0OSIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPkNoZWNrICJUaW1lWm9uZSBNZXNzYWdlIiB0byBnaXZlIHVzZXJzIGEgbWVzc2FnZSBuZXh0IHRpbWUgdGhleSBsb2dpbiB0byB1cGRhdGUgdGhlaXIgcHJvZmlsZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MCIgbmFtZT0idGltZSB6b25lIHVwZGF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+UGxlYXNlIGNoZWNrIHRoZSB0aW1lIHpvbmUgaW4geW91ciB1c2VyIHByb2ZpbGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTEiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPk5ldyAkQVBQX05BTUUgY29uZmVyZW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MiIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGV0YWlsczombHQ7YnIvJmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUzIiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TdGFydDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NCIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RW5kOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU1IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DaGFuZ2VkICRBUFBfTkFNRSBjb25mZXJlbmNlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU2IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Pcmdhbml6ZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTciIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkNhbmNlbGVkICRBUFBfTkFNRSBjb25mZXJlbmNlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU4IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgY29uZmVyZW5jZSBSZW1pbmRlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1OSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkNvbW11bml0eSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYwIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2hvdyBjb250YWN0IGRhdGEgdG8gZXZlcnlib2R5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjEiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5BZGQgZmllbGRzIG9mIGludGVyZXN0IHRoYXQgeW91IG9mZmVyIG9yIHRoYXQgeW91IGFyZSBzZWFyY2hpbmcgdG8gZmluZCBpbnRlcmVzdGluZyBwYXJ0bmVycyBmb3IgYSBjb25mZXJlbmNlLiBDb21tYSBzZXBhcmF0ZSB0aGUgdGVybXMgKGZvciBleGFtcGxlOiBNZWRpY2FsIFNlcnZpY2UsIEhlYWx0aCBhc3N1cmFuY2UsIC4uLik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MiIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk15IG9mZmVyaW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYzIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+TXkgaW50ZXJlc3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjQiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjUiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5UaW1lem9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY2IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+RmllbGRzIG9mIGludGVyZXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjciIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Db250YWN0IGluZm9ybWF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjgiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TaG93IGNvbnRhY3QgZGF0YSB0byBjb250YWN0cyBvbmx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjkiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TaG93IGNvbnRhY3QgZGF0YSB0byBub2JvZHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk15IFByb2ZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkVkaXQgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MiIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlNlYXJjaCB1c2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTczIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+V2F0Y2ggeW91ciBwcm9maWxlIGxpa2Ugb3RoZXIgc2VlIHlvdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc0IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+RWRpdCB5b3VyIHNldHRpbmdzLCBhZGQgeW91ciBpbnRlcmVzdHMgdG8gYmUgZm91bmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlNlYXJjaCBmb3Igb3RoZXIgdXNlcnMgYW5kIGV4dGVuZCB5b3VyIG5ldHdvcms8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NiIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5TZWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NyIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5Vc2VyIG9mZmVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc4IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlVzZXIgbG9va3MgZm9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzkiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+RnJlZXRleHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODEiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+VGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MiIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5PZmZlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MyIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5TZWFyY2hzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODQiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+U2VhcmNocmVzdWx0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODUiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+QWN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg2IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkFkZCB0byBjb250YWN0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg3IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlNlbmQgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg4IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkNvbnRhY3RzIGFuZCBNZXNzYWdlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg5IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlBlbmRpbmcgY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkFjY2VwdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkxIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+RGVueTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkyIiBuYW1lPSJ1c2VyIGNvbnRhY3QgcmVxdWVzdCI+CisgICAgPHZhbHVlPkhpLDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkzIiBuYW1lPSJ1c2VyIGNvbnRhY3QgcmVxdWVzdCI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gYWRkIHlvdSBhcyBjb250YWN0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk0IiBuYW1lPSJ1c2VyIGNvbnRhY3QgcmVxdWVzdCI+CisgICAgPHZhbHVlPkNoZWNrIHlvdXIgY29udGFjdCByZXF1ZXN0cyBpbiAkQVBQX05BTUUgb3IgY2xpY2sgb24gdGhvc2UgbGlua3MgdG8gYWNjZXB0IG9yIGRlbnkgdGhlIHJlcXVlc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NSIgbmFtZT0iYWRkIHVzZXIgY29udGFjdCI+CisgICAgPHZhbHVlPlRoaXMgdXNlciBpcyBhbHJlYWR5IGluIHlvdXIgY29udGFjdCBsaXN0IG9yIGhhcyByZWNlaXZlZCBhbiBpbnZpdGF0aW9uIHRvIHlvdXIgY29udGFjdCBsaXN0IHRoYXQgaXMgbm90IGFuc3dlcmVkIHlldC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NiIgbmFtZT0idXNlciBjb250YWN0IG1haWwiPgorICAgIDx2YWx1ZT5Zb3VyIGNvbnRhY3QgbGlzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+RWRpdCB5b3VyIGNvbnRhY3QgYW5kIG1lc3NhZ2VzLCZsdDtici8mZ3Q7IG1hbmFnZSB5b3VyIHBlbmRpbmcgY29udGFjdHMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTgiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5jb25maXJtZWQgeW91IGFzIGNvbnRhY3QhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTkiIG5hbWU9ImNoYXQgaW5mbyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDAiIG5hbWU9ImNoYXQgbG9nIGljb24iPgorICAgIDx2YWx1ZT5TaG93IC8gQ29weSBjaGF0IGxvZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAxIiBuYW1lPSJjaGF0IGxvZyB3aW5kb3ciPgorICAgIDx2YWx1ZT5DaGF0IExvZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Gcm9tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlN1YmplY3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWVzc2FnZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TmV3IE1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwOCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2xpY2sgdG8gd3JpdGUgYSBuZXcgbWVzc2FnZSB0byBhbnkgb2YgeW91ciBjb250YWN0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Xcml0ZSBuZXcgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjEwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Ubzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3ViamVjdDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMiIgbmFtZT0id2hpdGVib2FyZCBmdWxsLWZpdCI+CisgICAgPHZhbHVlPkVuYWJsZSBmdWxsIGZpdCBhbmQgdGhlIHdoaXRlYm9hcmQgd2lsbCB6b29tIHRoZSB3aG9sZSB3aGl0ZWJvYXJkIHNvIHRoYXQgYWxsJmx0O2JyLyZndDtkb2N1bWVudHMgYXJlIHZpc2libGUgYWNjb3JkaW5nIHRvIGVhY2ggcGFydGljaXBhbnRzIHNjcmVlbiByZXNvbHV0aW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjEzIiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT5LaWNrIHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNCIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBraWNrIHlvdXJzZWxmIG91dCBvZiB0aGUgY29uZmVyZW5jZSByb29tISBJZiB5b3Ugd2FudCB0byBsZWF2ZSBpdCBjbG9zZSB0aGUgYnJvd3NlciBvciB1c2UgdGhlIGV4aXQgYnV0dG9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE1IiBuYW1lPSJraWNrLXVzZXIiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGlzY29ubmVjdCB0aGlzIHVzZXIgZnJvbSB0aGlzIGNvbmZlcmVuY2Ugcm9vbT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNiIgbmFtZT0ia2ljay11c2VyIj4KKyAgICA8dmFsdWU+Q29uZmlybSBhY3Rpb24gLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTciIG5hbWU9ImtpY2stdXNlciI+CisgICAgPHZhbHVlPllvdSBjYW5ub3Qga2ljayBhIFN1cGVyLU1vZGVyYXRvciBvdXQgb2YgYSByb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Cb29rIGNvbmZlcmVuY2Ugcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TdGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5FbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIGFuIG9wdGlvbmFsIHJlcXVlc3QgZm9yIG1lZXRpbmcgdG8gdGhlIG1lc3NhZ2UgYW5kIGNyZWF0ZSBhIGNvbmZlcmVuY2Ugcm9vbS4gVGhlIEV2ZW50IGlzIHRoZW4gY29waWVkIGluIHRoZSBjYWxlbmRhciBvZiBldmVyeSBwYXJ0aWNpcGFudC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+SW5ib3g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UcmFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGlzIGlzIHlvdSEgWW91IGNhbm5vdCBhZGQgeW91cnNlbGYgYXMgeW91ciBvd24gY29udGFjdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoZSB1c2VyIGlzIGFscmVhZHkgZGVuaWVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VGhlIHVzZXIgaXMgYWxyZWFkeSBhcHByb3ZlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyOCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoaXMgdXNlciBjb250YWN0IGhhc2ggaXMgaW52YWxpZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyOSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlVzZXIgYWRkZWQgdG8gY29udGFjdCBsaXN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMwIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VXNlciBkZW5pZWQgYXMgY29udGFjdCBhbmQgcmVtb3ZlZCBmcm9tIHBlbmRpbmcgY29udGFjdCBsaXN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMxIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgbm8gc3VjaCBjb250YWN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMyIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+V291bGQgeW91IHJlYWxseSBsaWtlIHRvIHJlbW92ZSB0aGF0IGNvbnRhY3Q/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzMiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Db25maXJtIGNvbnRhY3QgcmVtb3ZhbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM0IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+RGVsZXRlIGNvbnRhY3QgZnJvbSBsaXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzUiIG5hbWU9InVzZXIgcHJvZmlsZSI+CisgICAgPHZhbHVlPlVzZXIgUHJvZmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM2IiBuYW1lPSJ1c2VyIHByb2ZpbGUiPgorICAgIDx2YWx1ZT5TaG93IHVzZXIgcHJvZmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM3IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5NZXNzYWdlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzOSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VsZWN0IGFsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWxlY3Qgbm9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWxlY3QgdW5yZWFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbGVjdCByZWFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1vdmUgdG8gZm9sZGVyIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgbmV3IGZvbGRlciAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGVsZXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDYiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRlbGV0ZWQgbWFpbHMgYXJlIHN0aWxsIGluIHlvdXIgdHJhc2ggZm9sZGVyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ3IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5NYXJrIHVucmVhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5NYXJrIHJlYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0OSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QW5zd2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTAiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFuc3dlciBldmVyeWJvZHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Rm9yd2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BY3Rpb25zIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUzIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+U2VuZCBwcml2YXRlIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Tm90aGluZyBzZWxlY3RlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TW92ZSB0byBJbmJveDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU2IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EZWxldGUgKGZpbmFsKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU3IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGlzIGFjdGlvbiBjYW5ub3QgYmUgdW5kb25lITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgZm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZCBmb2xkZXJzIGFuZCBvcmdhbml6ZSB5b3VyIG1lc3NhZ2VzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgZm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+RGVsZXRlIGZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBkZWxldGUgdGhpcyBmb2xkZXIsIHRoZXJlIGFyZSBzdGlsbCBtZXNzYWdlcyBpbnNpZGUhIERlbGV0ZSBmaXJzdCB0aGUgbWVzc2FnZXMgb3IgbW92ZSB0aGVtIHRvIGFub3RoZXIgZm9sZGVyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+RWRpdCBuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSBmb2xkZXIiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgZm9sZGVyPyBUaGVyZSBpcyBubyB3YXkgdG8gdW5kbyB0aGF0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY2IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+WW91ciByZXF1ZXN0IHdhcyBzZW5kIHRvIHRoZSB1c2VyLiBUaGUgdXNlciB3aWxsIHJlY2VpdmUgYSBub3RpZmljYXRpb24gdG8gYWNjZXB0IG9yIGRlbnkgeW91ciByZXF1ZXN0LiBPbmx5IGFjY2VwdGVkIHJlcXVlc3RzIGFyZSBpbiB5b3VyIGNvbnRhY3QgbGlzdCBvZiBjb3Vyc2UhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjciIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5NZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjgiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+VGhlIHVzZXIgZG9lcyBub3Qgc2hhcmUgaGlzIHBlcnNvbmFsIGNvbnRhY3QgZGF0YS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2OSIgbmFtZT0idXNlciB2aWV3IHByb2ZpbGUiPgorICAgIDx2YWx1ZT5UaGUgdXNlciBkb2VzIHNoYXJlIGhpcyBwZXJzb25hbCBjb250YWN0IGRhdGEgb25seSB0byBjb250YWN0cy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3MCIgbmFtZT0idXNlciB2aWV3IHByb2ZpbGUiPgorICAgIDx2YWx1ZT5BZGRyZXNzICZhbXA7IFBob25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzEiIG5hbWU9ImVycm9yIGNvZGUiPgorICAgIDx2YWx1ZT5Zb3UgaW52aXRhdGlvbiBjb2RlIGlzIG5vIHZhbGlkLCB0aGUgY29kZSBpcyBvbmx5IHZhbGlkIGR1cmluZyB0aGlzIHNwZWNpZmljIGRhdGUgYW5kIHRpbWU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzIiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5UaGlzIGV2ZW50IGlzIGNvbm5lY3RlZCB0byBzZXZlcmFsIGNhbGVuZGFycyBvZiBvdGhlciB1c2Vycy4gWW91ciBjaGFuZ2Ugd2lsbCBhbHNvIHVwZGF0ZSB0aGVpciBjYWxlbmRhci4gV291bGQgeW91IHJlYWxseSBsaWtlIHRvIHVwZGF0ZSB0aGUgZXZlbnQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzMiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Db25maXJtIHVwZGF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc0IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+QWxsb3cgY29udGFjdCB0byBzZWUgbXkgY2FsZW5kYXIgKHZpZXcgb25seSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkRvIG5vdCBzaGFyZSBjYWxlbmRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc2IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+Q2FsZW5kYXIgb2YgY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPllvdXIgY29udGFjdHMgbmVlZCB0byBhcHByb3ZlIHlvdSBmaXJzdCB0byBiZSBhYmxlIHRvIHNlZSB0aGVpciBjYWxlbmRhci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3OCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPllvdSBjYW5ub3Qgc3RvcmUgb3IgZGVsZXRlIGV2ZW50cyBmcm9tIG90aGVyIGNhbGVuZGFycyB0aGVuIHlvdXIgb3duITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc5IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+U2hvdyBteSBvd24gY2FsZW5kYXIgYWdhaW4hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODAiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5UaGlzIGV2ZW50IGlzIGNvbm5lY3RlZCB0byBzZXZlcmFsIGNhbGVuZGFycyBvZiBvdGhlciB1c2Vycy4gWW91ciBhY3Rpb24gd2lsbCBhbHNvIGRlbGV0ZSB0aGUgZXZlbnQgZnJvbSB0aGVpciBjYWxlbmRhci4gV291bGQgeW91IHJlYWxseSBsaWtlIHRvIGRlbGV0ZSB0aGUgZXZlbnQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODEiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Db25maXJtIGFjdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgyIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RW50ZXIgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgzIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QWNjZXNzIHRoZSBjb25mZXJlbmNlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgYSBjb25mZXJlbmNlIHJvb20gYW5kIGV2ZW50IGJvb2tlZCB3aXRoIHRoaXMgcHJpdmF0ZSBtZXNzYWdlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg1IiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgdG8gc3RvcmUgdGhlIGV2ZW50IGZpcnN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg2IiBuYW1lPSJhY2Nlc3Mgcm9vbXMgZXJyb3IiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBzdWNoIHJvb20gYXZhaWxhYmxlLiBUaGUgZXZlbnQgaW4gdGhlIGNhbGVuZGFyIGFuZCBjb25uZWN0ZWQgcm9vbSBpcyBhbHJlYWR5IGRlbGV0ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODciIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPkNob29zZSB5b3VyIG5pY2tuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODgiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPkZpcnN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg5IiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5MYXN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkwIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5FbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkxIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5PazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkyIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5NaW5pbXVtIGxlbmd0aCA0IGNoYXJzISBGb3IgYm90aCwgZmlyc3RuYW1lIGFuZCBsYXN0bmFtZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MyIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGEgdmFsaWQgZW1haWwhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTQiIG5hbWU9ImF1dGggZnJvbSI+CisgICAgPHZhbHVlPkZhY2Vib29rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTUiIG5hbWU9ImF1dGggZm9ybSI+CisgICAgPHZhbHVlPkxvZ2luIHdpdGggeW91ciBGYWNlYm9vayBhY2NvdW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTYiIG5hbWU9InZpZXcgcHJvZmlsZSI+CisgICAgPHZhbHVlPk1lbWJlciBzaW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk3IiBuYW1lPSJkaXJlY3QgbG9naW4gbWVzc2FnZSI+CisgICAgPHZhbHVlPllvdSd2ZSBsb2dnZWQgd2l0aCB5b3VyIEZhY2Vib29rIGFjY291bnQuIFlvdSBzaG91bGQgdXBkYXRlIHlvdXIgcHJvZmlsZSB3aXRoIHRoZSBjb3JyZWN0IGVtYWlsLiBPdGhlcndpc2UgeW91IHdpbGwgbm90IHJlY2VpdmUgaW52aXRhdGlvbnMgYW5kIHByaXZhdGUgbWVzc2FnZXMgZnJvbSBvdGhlciB1c2Vycy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5OCIgbmFtZT0iZGlyZWN0IGxvZ2luIG1lc3NhZ2UgaGVhZGVyIj4KKyAgICA8dmFsdWU+TWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk5IiBuYW1lPSJkaXJlY3QgbG9naW4gbWVzc2FnZSBjaGVja2JveCBjb250cm9sIj4KKyAgICA8dmFsdWU+RG8gbm90IHNob3cgdXBkYXRlIHByb2ZpbGUgbWVzc2FnZSBhZ2FpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAwIiBuYW1lPSJwcm9maWxlIHNldHRpbmdzIGJ1dHRvbiI+CisgICAgPHZhbHVlPm1vcmUgZGlzcGxheSBvcHRpb25zIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5OZXcgcHJpdmF0ZSBtZXNzYWdlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DbGljayBoZXJlIHRvIHZpc2l0IHlvdXIgcHJvZmlsZSB0byBzZWUgdGhlIGZ1bGwgbWVzc2FnZSAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+UmVwbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwNCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+Um9vbXMgYW5kIGNoYXRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDUiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPk15IHJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDYiIG5hbWU9Im15IHJvb21zIj4KKyAgICA8dmFsdWU+TXkgY29uZmVyZW5jZSByb29tIChmb3IgMS0xNiB1c2Vycyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwNyIgbmFtZT0ibXkgcm9vbXMiPgorICAgIDx2YWx1ZT5NeSB3ZWJpbmFyIHJvb20gKGZvciAxLTEyMCB1c2Vycyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwOCIgbmFtZT0icm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPk93bmVyIElkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDkiIG5hbWU9ImxvZ2luIGVycm9yIj4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGEgcGFzc3dvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMCIgbmFtZT0ibG9naW4gZXJyb3IiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCBhbiBhY2NvdW50IHdpdGggVXNlci1MZXZlbCBVc2VyLCBNb2RlcmF0b3Igb3IgQWRtaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMSIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPldlYi1TZXJ2aWNlIChvbmx5IGFjY2VzcyB2aWEgU09BUCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMiIgbmFtZT0idXBsb2FkIGZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5EbyBkaXJlY3RseSBsb2FkIHRvIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMyIgbmFtZT0id2hpdGVib2FyZCBjbG9zZSBjb25maXJtYXRpb24iPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gcmVtb3ZlIHRoaXMgd2hpdGVib2FyZD8gVGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxNCIgbmFtZT0id2hpdGVib2FyZCBsb2FkIFdNTCI+CisgICAgPHZhbHVlPkxvYWQgdG8gd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE1IiBuYW1lPSJyZWNvcmRpbmcgZmxhZyI+CisgICAgPHZhbHVlPkRvIG5vdCBmb3JnZXQgc3RhcnQgcmVjb3JkaW5nISBPbmUgdXNlciBwZXIgcm9vbSBhbHdheXMgbmVlZHMgdG8gc3RhcnQgaXQgdG8gaGF2ZSB0aGUgcmVjb3JkaW5nIGFmdGVyd2FyZHMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTYiIG5hbWU9InJlY29yZGluZyBmbGFnIj4KKyAgICA8dmFsdWU+U3RhcnQgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTciIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+QXJyb3c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxOCIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT5DaXJjbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxOSIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT5MaW5lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjAiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+U3F1YXJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjEiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+VHJpYW5nbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyMiIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlRleHQvTm90ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIzIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+Q2xpcGFydHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkRyYXcgRnJlZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI1IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+U2VsZWN0L01vdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNiIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkRyYXcgU2hhcGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNyIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkN1dC9Nb3ZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjgiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5ab29tIEluL091dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI5IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+UHJpbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlVuZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMSIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlRyYXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzIiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5BZGQgR3JpZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMzIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+U2hhcmUgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM0IiBuYW1lPSJpY29uIHN1Ym1lbnUiPgorICAgIDx2YWx1ZT5TZWxlY3QgU2hhcGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNSIgbmFtZT0iaWNvbiBzdWJtZW51Ij4KKyAgICA8dmFsdWU+U2VsZWN0IENsaXBhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNiIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkNvcHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNyIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkN1dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM4IiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+UGFzdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzOSIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkRlbGV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQwIiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGUgY29tcGxldGUgY29udGVudCBvbiB0aGUgd2hpdGVib2FyZD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MSIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkxvYWQgZGlyZWN0bHkgdG8gd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQyIiBuYW1lPSJhdHRlbmRlZXMiPgorICAgIDx2YWx1ZT5BdHRlbmRlZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MyIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+QXR0ZW5kZWUgTWFuYWdlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ0IiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5QcmVzZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDUiIG5hbWU9ImF0ZW5kZWUgbWFuYWdlciI+CisgICAgPHZhbHVlPlJlbW90ZSBDb250cm9sbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ2IiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5FamVjdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ3IiBuYW1lPSJjaGF0Ij4KKyAgICA8dmFsdWU+Q2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ4IiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5JbnZpdGUgQXR0ZW5kZWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDkiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPkJ5IEVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTAiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPlVzZXIgaXMgbW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTEiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPlVzZXIgaGFzIHdlYmNhbSBzd2l0Y2hlZCBvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUyIiBuYW1lPSJmaWxsX29wdGlvbiI+CisgICAgPHZhbHVlPkRlYWN0aXZhdGUgc2hhcGUgZmlsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUzIiBuYW1lPSJmaWxsX29wdGlvbiI+CisgICAgPHZhbHVlPkFjdGl2YXRlIHNoYXBlIGZpbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlNuYXAgdG8gR3JpZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU1IiBuYW1lPSJhbGxvd19yZWNvcmRpbmciPgorICAgIDx2YWx1ZT5BbGxvdyByZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NiIgbmFtZT0id2FpdF9mb3JfcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+V2FpdCBmb3IgcmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTciIG5hbWU9ImhpZGVfdG9wX2JhciI+CisgICAgPHZhbHVlPkhpZGUgdG9wYmFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTgiIG5hbWU9ImZpbGVFeHBsb3JlciI+CisgICAgPHZhbHVlPlBsYXkgdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1OSIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhlIGNvbnRlbnQgb24gdGhlIGN1cnJlbnQgc2xpZGU/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjAiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPkFjY2VwdCBhbmQgZ3JhbnQgdXNlciByaWdodDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYxIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT5EZW55PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjIiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPkk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2MyIgbmFtZT0iYWN0aXZpdHlfd2luZG93Ij4KKyAgICA8dmFsdWU+QWN0aXZpdGllcyBhbmQgYWN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY0IiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+UmVtb3ZlIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NSIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPllvdSBuZWVkIHRoZSBtb2RlcmF0aW9uIG9yIHRoZSByaWdodCB0byBkcmF3IG9uIHRoZSB3aGl0ZWJvYXJkIHRvIHJlbW92ZSB3aGl0ZWJvYXJkcyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NiIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPk5vdCBhbGxvd2VkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjciIG5hbWU9InVzZXJfbGVmdF9hY3RfbXNnIj4KKyAgICA8dmFsdWU+aGFzIGxlZnQgdGhlIHJvb20uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjgiIG5hbWU9ImNsaXBhcnQgaWNvbnMiPgorICAgIDx2YWx1ZT5NYXRoIGljb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjkiIG5hbWU9ImNsaXBhcnQgaWNvbnMiPgorICAgIDx2YWx1ZT5ObyBjYXRlZ29yeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzcwIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5Db2xvci1TdHlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzcxIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5RdWFsaXR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzIiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPkRvbWFpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzczIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT52aXNpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc0IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5yZWRvcmFuZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+bWVkaXVtc2VhZ3JlZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NiIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+c3RlZWxibHVlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzciIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPmxpZ2h0c3RlZWxibHVlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzgiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPmdvbGRlbnJlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc5IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5zaWx2ZXJncmF5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODAiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnVzZXJkZWZpbmVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODEiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPmJlc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4MiIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+dXBsb2FkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODMiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPm1lZGl1bTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg0IiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODUiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODYiIG5hbWU9ImdpdmUgZXhjbHVzaXZlIGF1ZGlvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIG9mIG90aGVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg3IiBuYW1lPSJtdXRlIHNlbGYgbWVzc2FnZSI+CisgICAgPHZhbHVlPllvdSBhcmUgZ2xvYmFsbHkgbXV0ZWQgYnkgdGhlIG1vZGVyYXRvci4gWW91IGNhbm5vdCB1bm11dGUgeW91cnNlbGYhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODgiIG5hbWU9Im11dGUgc2VsZiBjb25maXJtIG1lc3NhZ2UgdGl0bGUiPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgZ2xvYmFsbHk/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODkiIG5hbWU9Im11dGUgc2VsZiBjb25maXJtIG1lc3NhZ2UgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBtdXRlIHlvdXJzZWxmIGdsb2JhbGx5PyBObyBvdGhlciB1c2VyIHdpbGwgaGVhciB5b3UgYW55bW9yZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5MCIgbmFtZT0ibXV0ZSBvdGhlcnMgY29uZmlybSBtZXNzYWdlIHRpdGxlIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGxvY2FsbHk/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTEiIG5hbWU9Im11dGUgb3RoZXJzIGNvbmZpcm0gbWVzc2FnZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBtdXRlIHRoaXMgbWljcm9waG9uZT8gWW91IGNhbiBvbmx5IG11dGUgaXQgbG9jYWxseSBvbiB5b3VyIHNjcmVlbi4gSXQgaGFzIG5vIGVmZmVjdCB0byBob3cgb3RoZXIgdXNlcnMgaGVhciB0aGlzIHVzZXIuIE9ubHkgbW9kZXJhdG9ycyBjYW4gdHVybiBpdCBvZmYgZ2xvYmFsbHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTIiIG5hbWU9Im11dGUgb3RoZXJzIGNvbmZpcm0gbWVzc2FnZSB0aXRsZSI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBvZmYgZ2xvYmFsbHk/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTMiIG5hbWU9Im11dGUgb3RoZXJzIG1vZGVyYXRvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIG11dGUgdGhpcyB1c2VyIGdsb2JhbGx5PyBObyBvdGhlciB1c2VyIHdpbGwgaGVhciBoaW0gYW55bW9yZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5NCIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5Zb3VyIHNvdW5kIGlzIG9uLiBDbGljayBoZXJlIHRvIHNlbmQgbW9kZXJhdG9yIG1lc3NhZ2UgdG8gbXV0ZSB5b3VyIG1pY3JvcGhvbmUgZ2xvYmFsbHkgKGluIHRoZSBjb21wbGV0ZSBjb25mZXJlbmNlIHJvb20pIG9mZiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5NSIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5Zb3VyIHNvdW5kIGlzIG9mZi4gQ2xpY2sgaGVyZSB0byBzZW5kIG1vZGVyYXRvciBtZXNzYWdlIHRvIHVubXV0ZSB5b3VyIG1pY3JvcGhvbmUgZ2xvYmFsbHkgKGluIHRoZSBjb21wbGV0ZSBjb25mZXJlbmNlIHJvb20pIG9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk2IiBuYW1lPSJtdXRlIGFwcGx5IHNlbGYgb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdGhhdCB0aGUgbW9kZXJhdG9yIG11dGVzIG15IG1pY3JvcGhvbmUgZ2xvYmFsbHkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTciIG5hbWU9Im11dGUgYXBwbHkgc2VsZiBvZmYgbWVzc2FnZSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdGhhdCB0aGUgbW9kZXJhdG9yIHVubXV0ZXMgbXkgbWljcm9waG9uZSBnbG9iYWxseS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5OCIgbmFtZT0ibXV0ZSBhcHBseSBvZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+d2FudCB0aGF0IHRoZSBtb2RlcmF0b3IgdW5tdXRlcyBoaXMvaGVyIG1pY3JvcGhvbmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTkiIG5hbWU9Im11dGUgYXBwbHkgb2YgbWVzc2FnZSI+CisgICAgPHZhbHVlPndhbnQgdGhhdCB0aGUgbW9kZXJhdG9yIG11dGVzIGhpcy9oZXIgbWljcm9waG9uZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMCIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5Vbm11dGUgbWljcm9waG9uZS4gQ2xpY2sgaGVyZSB0byBtdXRlIGhpcy9oZXIgbWljcm9waG9uZSBnbG9iYWxseSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMSIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUuIENsaWNrIGhlcmUgdG8gdW5tdXRlIGhpcy9oZXIgbWljcm9waG9uZSBnbG9iYWxseSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMiIgbmFtZT0ibXV0ZSBzZWxmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGlzIHVzZXIgaXMgZ2xvYmFsbHkgbXV0ZWQgYnkgdGhlIG1vZGVyYXRvci4gWW91IGNhbm5vdCB1bm11dGUgaGltITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDAzIiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TXV0ZSB5b3VyIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwNCIgbmFtZT0idW5tdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+VW5tdXRlIHlvdXIgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA1IiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDYiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSBtaWNyb3Bob25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDciIG5hbWU9Im11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwOCIgbmFtZT0idW5tdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+VW5tdXRlIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwOSIgbmFtZT0ibXV0ZSBtb2RlcmF0b3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPk9ubHkgbW9kZXJhdG9ycyBjYW4gbXV0ZSBvciB1bm11dGUgYW4gdXNlciBnbG9iYWxseSEgVG8gbXV0ZSB5b3VyIG93biBtaWNyb3Bob25lOiBQbGVhc2UgdXNlIHRoZSBtaWNyb3Bob25lIGljb24gaW4geW91ciB2aWRlbyBwb2QhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTAiIG5hbWU9InBvbGxfbmFtZSI+CisgICAgPHZhbHVlPlBvbGwgTmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDExIiBuYW1lPSJwb2xsX25hbWUiPgorICAgIDx2YWx1ZT5Zb3U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMiIgbmFtZT0iYXJjaGl2ZWRfcG9sbHMiPgorICAgIDx2YWx1ZT5BcmNoaWV2ZWQgUG9sbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMyIgbmFtZT0iYWN0aXZlX3BvbGwiPgorICAgIDx2YWx1ZT5hY3RpdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNCIgbmFtZT0iY2hhcnRfc2ltcGxlIj4KKyAgICA8dmFsdWU+U2ltcGxlIENoYXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTUiIG5hbWU9ImNoYXJ0X3BpZSI+CisgICAgPHZhbHVlPlBpZSBDaGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE2IiBuYW1lPSJzaWduX3VwX3ZhbGlkYXRpb24iPgorICAgIDx2YWx1ZT5QbGVhc2UgZW50ZXIgZW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNyIgbmFtZT0iY2hhdF9ub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5OZXcgbWVzc2FnZShzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE4IiBuYW1lPSJwb2xsX2Nsb3NlIj4KKyAgICA8dmFsdWU+Q2xvc2UgUG9sbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE5IiBuYW1lPSJwb2xsX2Nsb3NlX2NvbmZpcm0iPgorICAgIDx2YWx1ZT5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gY2xvc2UgdGhpcyBQb2xsPyBObyBvbmUgd2lsbCBiZSBhYmxlIHRvIHZvdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMCIgbmFtZT0icG9sbF9kZWxldGUiPgorICAgIDx2YWx1ZT5EZWxldGUgUG9sbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIxIiBuYW1lPSJwb2xsX2RlbGV0ZV9jb25maXJtIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIFBvbGw/IFRoZSByZXN1bHRzIHdpbGwgYmUgZGVsZXRlZCBhcyB3ZWxsLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIyIiBuYW1lPSJsYW5ndWFnZV9jb2RlIj4KKyAgICA8dmFsdWU+TGFuZ3VhZ2UgSVNPIENvZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMyIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX3Blcm1pc3Npb24iPgorICAgIDx2YWx1ZT5BbGxvdy9EZW55IHJpZ2h0IHRvIGdpdmUgZXhjbHVzaXZlIGF1ZGlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI0IiBuYW1lPSJhbGxvd19leGNsdXNpdmVfYXVkaW9fcGVybWlzc2lvbiI+CisgICAgPHZhbHVlPkFsbG93IHVzZXIgdG8gZ2l2ZSBleGNsdXNpdmUgYXVkaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNSIgbmFtZT0iZGVueV9leGNsdXNpdmVfYXVkaW9fcGVybWlzc2lvbiI+CisgICAgPHZhbHVlPkRlbnkgdXNlciB0byBnaXZlIGV4Y2x1c2l2ZSBhdWRpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI2IiBuYW1lPSJleGNsX2F1ZGlvIGFwcGx5IHNlbGYgb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gZ2V0IGEgcGVybWlzc2lvbiBmb3IgZXhjbHVzaXZlIGF1ZGlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI3IiBuYW1lPSJleGNsX2F1ZGlvIGFwcGx5IG9mIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53YW50IHRoYXQgdGhlIG1vZGVyYXRvciBnaXZlcyBtZSBhIHBlcm1pc3Npb24gZm9yIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyOCIgbmFtZT0iZXhjbF9hdWRpbyBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5HaXZlIGEgcGVybWlzc2lvbiBmb3IgZXhjbHVzaXZlIGF1ZGlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI5IiBuYW1lPSJjYW1fcmVzb2x1dGlvbiI+CisgICAgPHZhbHVlPkNhbSByZXNvbHV0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzAiIG5hbWU9ImNhbV9yZXNvbHV0aW9uX2luZm8iPgorICAgIDx2YWx1ZT5DaGFuZ2luZyB0aGUgcmVzb2x1dGlvbiBhZmZlY3RzIGJhbmR3aWR0aCwgYmlnZ2VyIHBpY3R1cmUgbmVlZHMgbW9yZSBiYW5kd2l0aCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzMSIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2Vycm9yIj4KKyAgICA8dmFsdWU+WW91IGRvbid0IGhhdmUgdGhlIHJpZ2h0IHRvIGdpdmUgeW91cnNlbGYgb3Igb3RoZXJzIGV4Y2x1c2l2ZSBhdWRpby4gWW91IG5lZWQgdG8gYXBwbHkgZm9yIHRoZSByaWdodCBmcm9tIHRoZSBtb2RlcmF0b3Igb3IgYXNrIHRoZSBtb2RlcmF0b3IgdG8gZ2l2ZSB5b3UgZXhjbHVzaXZlIGF1ZGlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMyIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fYXNrIj4KKyAgICA8dmFsdWU+SSB3b3VsZCBsaWtlIHRvIGdldCB0aGUgcmlnaHQgZm9yIGV4Y2x1c2l2ZSBhdWRpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMzIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fYWN0aW9uIj4KKyAgICA8dmFsdWU+R2l2ZSBleGNsdXNpdmUgYXVkaW8gdG8gbWUgKGFsdGVybmF0aXZlbHkgY2xpY2sgb24geW91ciB2aWRlbyBwb2Qgb3IgcHJlc3MgRjEyKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM0IiBuYW1lPSJtaWNybyBpcyBvbiI+CisgICAgPHZhbHVlPk1pY3JvcGhvbmUgaXMgb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzUiIG5hbWU9Im1pY3JvIGlzIG9mZiI+CisgICAgPHZhbHVlPk1pY3JvcGhvbmUgaXMgbXV0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNiIgbmFtZT0iaGlkZV9jaGF0Ij4KKyAgICA8dmFsdWU+SGlkZSBjaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzciIG5hbWU9ImhpZGVfYWN0aXZpdGllc19hbmRfYWN0aW9ucyI+CisgICAgPHZhbHVlPkhpZGUgYWN0aXZpdGllczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM4IiBuYW1lPSJoaWRlX2ZpbGVzX2V4cGxvcmVyIj4KKyAgICA8dmFsdWU+SGlkZSBmaWxlcyBleHBsb3JlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM5IiBuYW1lPSJoaWRlX2FjdGlvbnNfbWVudSI+CisgICAgPHZhbHVlPkhpZGUgYWN0aW9ucyBtZW51PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDAiIG5hbWU9ImhpZGVfc2NyZWVuX3NoYXJpbmciPgorICAgIDx2YWx1ZT5IaWRlIHNjcmVlbiBzaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDEiIG5hbWU9ImhpZGVfd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkhpZGUgd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQyIiBuYW1lPSJzaG93IG1pY3JvcGhvbmUgc3RhdHVzIj4KKyAgICA8dmFsdWU+U2hvdyBtaWNybyBzdGF0dXMgaW4gdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MyIgbmFtZT0ibGF5b3V0X29wdGlvbnMiPgorICAgIDx2YWx1ZT5MYXlvdXQgb3B0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ0IiBuYW1lPSJjYWxlbmRhciBuZXcgYnV0dG9uIj4KKyAgICA8dmFsdWU+TmV3IEV2ZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDUiIG5hbWU9ImNhbGVuZGFyIHBhc3N3b3JkIGluZm8gdGV4dCI+CisgICAgPHZhbHVlPlBhc3N3b3JkIHByb3RlY3RlZCBhcmUgdGhlIGxpbmtzIHRvIHRoZSBjb25mZXJlbmNlIHRoYXQgYXJlIHNlbmQgdG8gdGhlIHBhcnRpY2lwZW50cyB3aGVuIHlvdSBzYXZlIHRoZSBjYWxlbmRhciBldmVudCwgbm90IHRoZSByb29tISBUaGF0IG1lYW5zIGlmIHlvdSBzYXZlIHRoZSBldmVudCBtdWx0aXBsZSB0aW1lcyBidXQgd2l0aCBkaWZmZXJlbnQgcGFzc3dvcmRzIGV2ZXJ5IHBhcnRpY2lwZW50IHJlY2VpdmVzIGEgbmV3IGxpbmsgdGhhdCBoYXMgYSBkaWZmZXJlbnQgcGFzc3dvcmQuIEJ1dCBvbGQgbGlua3Mgc3RpbGwgd29yayBvbmNlIHNlbmQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDYiIG5hbWU9ImNhbGVuZGFyIGVkaXQgYnV0dG9uIj4KKyAgICA8dmFsdWU+RWRpdCBkZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDciIG5hbWU9InNpcCBzaG93IGRpYWxlciI+CisgICAgPHZhbHVlPlNob3cgc2lwIGRpYWxlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ4IiBuYW1lPSJzaXAgY2FsbCI+CisgICAgPHZhbHVlPkNhbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0OSIgbmFtZT0iY2FsZW5kYXIgY29udGFjdCBsaXN0Ij4KKyAgICA8dmFsdWU+U2hvdyBjYWxlbmRhciBldmVudHMgb2YgY29udGFjdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUwIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5Zb3VyIGhvbWUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTEiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPlBsYW4geW91ciBtZWV0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUyIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5XYXRjaCByZWNvcmRpbmcgYW5kIGludGVydmlld3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MyIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+Q2hvb3NlIGFuZCBzdGFydCBhIHdlYi1jb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTQiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSB1c2VycyBhbmQgcmlnaHRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTUiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBjb25uZWN0aW9ucyBhbmQga2ljayB1c2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU2IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgdXNlcmdyb3VwczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU3IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgY29uZmVyZW5jZSByb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU4IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2Ugc3lzdGVtIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTkiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBsYWJlbHMgYW5kIHdvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIExEQVAgYW5kIEFEUyBjb25maWd1cmF0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYxIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5FeHBvcnQvSW1wb3J0IFN5c3RlbSBCYWNrdXBzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjIiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCBtb2RlcmF0aW9uIG9yIHRoZSByaWdodCB0byBkcmF3IG9uIHdoaXRlYm9hcmQgdG8gdXBsb2FkLCBhZGQsIGRlbGV0ZSBvciBsb2FkIGZpbGVzIGFuZCBmb2xkZXJzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYzIiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+RWRpdCB0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjQiIG5hbWU9InNhbHV0YXRpb24iPgorICAgIDx2YWx1ZT5Qcm9mPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjUiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UHVibGlzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY2IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlN0YXJ0IFB1Ymxpc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2NyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdG9wIFB1Ymxpc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2OCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5Ib3N0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjkiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UHVibGlzaCBBcHA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5QdWJsaXNoIElkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzEiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UmVkdWNlIHRoZSB3aWR0aCBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtb3ZlIGl0IGxlZnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5SZWR1Y2UgdGhlIGhlaWdodCBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtb3ZlIGl0IGJvdHRvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDczIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHVjZSB0aGUgeCBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtYWtlIGl0IHdpZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzQiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UmVkdWNlIHRoZSB5IG9mIHRoZSBTaGFyaW5nU2NyZWVuIGJlZm9yZSB5b3UgdHJ5IHRvIG1ha2UgaXQgaGlnaGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzUiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+RmlsbCB0aGVzZSBzZXR0aW5ncyBzdHJlYW0geW91ciBzY3JlZW4gZGF0YSB0byAzdGggcGFydHkgcHJvdmlkZXJzIGxpa2UganVzdGluLnR2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzYiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UGxlYXNlIHN0YXJ0IFNjcmVlbiBzaGFyaW5nIHRvIGJlIGFibGUgdG8gcHVibGlzaCBpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc3IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPk1vZGVyYXRvciBwZXJtaXNzaW9uIHJlcXVpcmVkIHRvIHN0YXJ0IHJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc4IiBuYW1lPSJubyByaWdodCBmb3IgZXhjbHVzaXZlIGF1ZGlvIj4KKyAgICA8dmFsdWU+WW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byBhcHBseSBleGNsdXNpdmUgYXVkaW8gdG8gYW55IHBhcnRpY2lwYW50LiBZb3UgbmVlZCBtb2RlcmF0aW9uIHJvbGUgb3IgdGhlIHJpZ2h0IGZvciBleGNsdXNpdmUgYXVkaW8gdG8gbWFrZSBhbnkgbWljcm9waG9uZSBleGNsdXNpdmUgdHVybmVkIG9uLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3OSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+VXBsb2FkIG5ldyBmaWxlIHRvIGZpbGUgZXhwbG9yZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+T3BlbiBuZXcgZGlhbG9nIHdpdGggc2hhcmluZyBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgxIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5BbiBleGlzdGluZyBtb2RlcmF0b3IgbXVzdCBhcHByb3ZlIGl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODIiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkFzayBtb2RlcmF0b3IgdG8gc2hhcmUgeW91ciB3ZWJjYW0vbWljcm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MyIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+R2F0aGVyIGZlZWRiYWNrIGJ5IGNyZWF0aW5nIGEgcG9sbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg0IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5QYXN0IGFuZCBjdXJyZW50IHBvbGwgcmVzdWx0cyBhcyBjaGFydHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Vm90ZSBpZiB0aGVyZSBpcyBhIHBvbGwgZm9yIHRoaXMgY29uZmVyZW5jZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODYiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkVkaXQgY2FtIGFuZCBtaWMgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NyIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Q29uZmlybSBhbmQgbGVhdmUgdGhlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4OCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Q2FsbCBleHRlcm5hbCBwZW9wbGUgdmlhIFZvSVAvU0lQPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODkiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlNlbmQgYW4gZW1haWwgd2l0aCBhIGRpcmVjdCBsaW5rIHRvIHRoaXMgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkwIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5DaGFuZ2UgeW91ciB3aGl0ZWJvYXJkIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTEiIG5hbWU9ImJhY2t1cCBhZG1pbiI+CisgICAgPHZhbHVlPk1heCB1cGxvYWQgc2l6ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkyIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5Bc2sgbW9kZXJhdG9yIHRvIHNoYXJlIHlvdXIgd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkzIiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5TdGFydCBQcml2YXRlIENoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NCIgbmFtZT0iYWxsX3ByaXZhdGVfY2hhdCI+CisgICAgPHZhbHVlPkFsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk1IiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IHN0YXJ0IGEgcHJpdmF0ZSBjaGF0IHdpdGggeW91cnNlbGYuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTYiIG5hbWU9InByaXZhdGUgY2hhdCI+CisgICAgPHZhbHVlPllvdSd2ZSBhbHJlYWR5IHN0YXJ0ZWQgYSBwcml2YXRlIGNoYXQgd2l0aCB0aGlzIHBhcnRpY2lwYW50LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk3IiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcHJpdmF0ZSBjaGF0PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk4IiBuYW1lPSJTZXJ2ZXJzIj4KKyAgICA8dmFsdWU+U2VydmVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk5IiBuYW1lPSJTZXJ2ZXJzIj4KKyAgICA8dmFsdWU+U2VydmVycyBwYXJ0aWNpcGF0aW5nIGluIGNsdXN0ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMCIgbmFtZT0iU2VydmVyIG5hbWUiPgorICAgIDx2YWx1ZT5TZXJ2ZXIgTmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAxIiBuYW1lPSJTZXJ2ZXIgQWRkcmVzcyI+CisgICAgPHZhbHVlPlNlcnZlciBBZGRyZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDIiIG5hbWU9IlNlcnZlciBkZXRhaWxzIj4KKyAgICA8dmFsdWU+U2VydmVyIGRldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMyIgbmFtZT0iU2VuZCBTTVMiPgorICAgIDx2YWx1ZT5TZW5kIFNNUzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA0IiBuYW1lPSJwdWJsaXNoaW5nX21lc3NhZ2UiPgorICAgIDx2YWx1ZT5QdWJsaXNoaW5nLiBVc2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA1IiBuYW1lPSJjbWRfbGluZV9hZG1pbiI+CisgICAgPHZhbHVlPlRvIHNhdmUgdGltZSBhbmQgaW50ZXJuZXQgdHJhZmZpYyB5b3UgY2FuIHVzZSBjb21tYW5kIGxpbmUgYWRtaW4gdG8gYmFja3VwL3Jlc3RvcmUvdXBncmFkZTpcbiAxKSBnbyB0byBPTSBpbnN0YWxsIGRpciAoZm9yIGV4LiAvb3B0L3JlZDUpIFxuIDIpIHN0b3AgT00gKGZvciBleC4gLi9yZWQ1LXNodXRkb3duLnNoKVxuIDMpIC4vYWRtaW4uc2ggLWIgLWZpbGUgfi90b2RheV9vbV9iYWNrdXAuemlwIChjcmVhdGUgYmFja3VwIG9mIGN1cnJlbnQgT00pXG4gNCkgZG93bmxvYWQgYXJjaGl2ZSB3aXRoIG5ldyBPTVxuIDUpIG12IC9vcHQvcmVkNSAvb3B0LnJlZDUuYmFrIChtb3ZlIHdvcmtpbmcgdmVyc2lvbiBvZiBPTSBqdXN0IGluIGNhc2UgOikpXG4gNikgZXh0cmFjdCBkb3dubG9hZGVkIE9NIHRvIHRoZSAvb3B0L3JlZDVcbiA3KSAuL2FkbWluLnNoIC1pIC1maWxlIH4vdG9kYXlfb21fYmFja3VwLnppcCAob3IgJy4vYWRtaW4uc2ggLWkgLWZpbGUgfi90b2RheV9vbV9iYWNrdXAuemlwIC0tZGItdHlwZSBteXNxbCAtLWRiLXVzZXIgb21fdXNlciAtLWRiLXBhc3Mgb21fdXNlcl9wYXNzJyBpbiBjYXNlIG9mIHlvdSBhcmUgdXNpbmcgbm9uLWRlZmF1bHQgREIgKVxuIDgpIHN0YXJ0IE9NXG48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNiIgbmFtZT0icHVibGljX3Jvb21fdG9vbHRpcCI+CisgICAgPHZhbHVlPlJvb21zIGNvbW1vbiB0byBhbGwgdXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA3IiBuYW1lPSJwcml2YXRlX3Jvb21fdG9vbHRpcCI+CisgICAgPHZhbHVlPlJvb21zIGNvbW1vbiB0byB0aGUgY3VycmVudCB1c2VyIGdyb3VwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDgiIG5hbWU9Im15X3Jvb21fdG9vbHRpcCI+CisgICAgPHZhbHVlPlJvb21zIG9mIHRoZSBjdXJyZW50IHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwOSIgbmFtZT0iY3JlYXRlX25ld19yb29tIj4KKyAgICA8dmFsdWU+Q3JlYXRlL01vZGlmeSBhcHBvaW50bWVudCBzcGVjaWFsIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxMCIgbmFtZT0ibXVsdGlwbGVfYWRkcmVzc2VzIj4KKyAgICA8dmFsdWU+WW91IGNhbiBlbnRlciBtdWx0aXBsZSBhZGRyZXNzZXMgaW4gdGhlIGZvcm1hdDogZmlyc3RuYW1lMSBsYXN0bmFtZTEgJmx0O2VtYWlsMSZndDssImZpcnN0bmFtZTIgbGFzdG5hbWUyIiAmbHQ7ZW1haWwyJmd0OywnZmlyc3RuYW1lMyBsYXN0bmFtZTMnICZsdDtlbWFpbDMmZ3Q7LCAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxMSIgbmFtZT0ic3RyZWFtX3ZvbHVtZSI+CisgICAgPHZhbHVlPkFkanVzdCBzdHJlYW0gdm9sdW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTIiIG5hbWU9Im1pY3JvcGhvbmVfdm9sdW1lIj4KKyAgICA8dmFsdWU+QWRqdXN0IG1pY3JvcGhvbmUgdm9sdW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTMiIG5hbWU9ImNoYXRfbW9kZXJhdGVkIj4KKyAgICA8dmFsdWU+SXMgY2hhdCBtb2RlcmF0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNCIgbmFtZT0iY2hhdF9tb2RlcmF0ZWQiPgorICAgIDx2YWx1ZT5BbGxvdyBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTUiIG5hbWU9ImNoYXRfb3BlbmVkIj4KKyAgICA8dmFsdWU+Q2hhdCBwYW5lbCBvcGVuZWQgYnkgZGVmYXVsdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE2IiBuYW1lPSJmaWxlc19vcGVuZWQiPgorICAgIDx2YWx1ZT5GaWxlcyBwYW5lbCBvcGVuZWQgYnkgZGVmYXVsdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE3IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gc2VjdGlvbiBsYXN0cGluZyI+CisgICAgPHZhbHVlPkxhc3QgcGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE4IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gc2VjdGlvbiBsYXN0cGluZyBpbmZvIj4KKyAgICA8dmFsdWU+RXZlcnkgc2xhdmUgc2VuZHMgYSBwaW5nIHRvIHRoZSBtYXN0ZXIgZXZlcnkgMyBzZWNvbmRzIChjb25maWd1cmFibGUpLiBTbGF2ZSBsYXN0UGluZyBtdXN0IGJlIHNtYWxsZXIgdGhlbiAxIG1pbnV0ZSBzbyB0aGF0IHRoZSBtYXN0ZXIgdXNlcyB0aGUgc2xhdmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTkiIG5hbWU9InNlcnZlciBhZG1pbiBwb3J0Ij4KKyAgICA8dmFsdWU+SFRUUCBQb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjAiIG5hbWU9InNlcnZlciBhZG1pbiB1c2VyIj4KKyAgICA8dmFsdWU+VXNlciAoU09BUC1BY2Nlc3MpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjEiIG5hbWU9InNlcnZlciBhZG1pbiBwYXNzd29yZCI+CisgICAgPHZhbHVlPlBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjIiIG5hbWU9InNlcnZlciBhZG1pbiB3ZWJhcHAgcGF0aCI+CisgICAgPHZhbHVlPldlYmFwcCBwYXRoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjMiIG5hbWU9InNlcnZlciBhZG1pbiBwcm90b2NvbCI+CisgICAgPHZhbHVlPlByb3RvY29sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjQiIG5hbWU9InNlcnZlciBhZG1pbiBwaW5nIHJ1bm5pbmciPgorICAgIDx2YWx1ZT5QaW5nIHJ1bm5pbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyNSIgbmFtZT0ic2VydmVyIGFkbWluIGFjdGl2ZSI+CisgICAgPHZhbHVlPkFjdGl2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI2IiBuYW1lPSJnZW5lcmF0ZV9oYXNoIj4KKyAgICA8dmFsdWU+R2VuZXJhdGUgVVJMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjciIG5hbWU9Im5ldHdvcmsgdGVzdGluZyBsaW5rIj4KKyAgICA8dmFsdWU+TmV0d29yayB0ZXN0aW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjgiIG5hbWU9InJvb21fb3B0aW9ucyI+CisgICAgPHZhbHVlPkF1dG8gc2VsZWN0IGludGVydmlldyB2aWRlbyBwb2Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyOSIgbmFtZT0iZm9udF91bmRlcmxpbmUiPgorICAgIDx2YWx1ZT5VbmRlcmxpbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMCIgbmFtZT0iZm9udF9zdHlsZSI+CisgICAgPHZhbHVlPkZvbnQgc3R5bGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMSIgbmFtZT0iYWxsb3dfZm9udF9zdHlsZXMiPgorICAgIDx2YWx1ZT5BbGxvdyBmb250IHN0eWxlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMyIiBuYW1lPSJmb250X2NvbG9yIj4KKyAgICA8dmFsdWU+Rm9udCBjb2xvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMzIiBuYW1lPSJoeXBlcmxpbmsiPgorICAgIDx2YWx1ZT5IeXBlcmxpbms8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNCIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbiI+CisgICAgPHZhbHVlPlNob3cgc2Vzc2lvbiBzdGF0aXN0aWNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzUiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW4iPgorICAgIDx2YWx1ZT5TZXNzaW9uIGRldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNiIgbmFtZT0ic3lzdGVtX2ltcG9ydCI+CisgICAgPHZhbHVlPlN5c3RlbSBpbXBvcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNyIgbmFtZT0iaW5jbHVkZV9pbnRvX2JhY2t1cCI+CisgICAgPHZhbHVlPkluY2x1ZGUgdXBsb2FkZWQgZmlsZXMgYW5kIHJlY29yZGluZ3MgaW4gYmFja3VwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzgiIG5hbWU9InJvb21fYWRtaW5fc2lwIj4KKyAgICA8dmFsdWU+RW5hYmxlIFNJUCB0cmFuc3BvcnQgaW4gdGhlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzOSIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2NvbmZpcm0iPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gcHJvdmlkZSB0aGlzIHVzZXIgYW4gZXhjbHVzaXZlIGF1ZGlvPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTQwIiBuYW1lPSJub190aW1lem9uZSI+CisgICAgPHZhbHVlPlBsZWFzZSBzcGVjaWZ5IHlvdXIgdGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU0NSIgbmFtZT0iY29udGVudF9pc19zYXZpbmciPgorICAgIDx2YWx1ZT5Db250ZW50IGlzIFNhdmluZywgUGxlYXNlIHdhaXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+Cis8L2xhbmd1YWdlPgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9sYW5ndWFnZXMvc3dlZGlzaC54bWwgYi9XZWJDb250ZW50L2xhbmd1YWdlcy9zd2VkaXNoLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTNiMWExCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9sYW5ndWFnZXMvc3dlZGlzaC54bWwKQEAgLTAsMCArMSw0NjUyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorCis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitUaGlzIEZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgYnkgdGhlIExhbmd1YWdlRWRpdG9yIAordG8gYWRkIG5ldyBMYW5ndWFnZXMgb3IgbW9kaWZ5L2N1c3RvbWl6ZSBpdCB1c2UgdGhlIExhbmd1YWdlRWRpdG9yIAorc2VlIGh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9MYW5ndWFnZUVkaXRvci5odG1sIGZvciBEZXRhaWxzIAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMtLT4KKzxsYW5ndWFnZSB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczpub05hbWVzcGFjZVNjaGVtYUxvY2F0aW9uPSJsYW5ndWFnZS54c2QiPgorICA8c3RyaW5nIGlkPSIxIiBuYW1lPSJjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+S29uZmVyZW5zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIiIG5hbWU9Im1lZXRpbmciPgorICAgIDx2YWx1ZT5Nw7Z0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzIiBuYW1lPSJjbGFzc3Jvb20iPgorICAgIDx2YWx1ZT5BdWRpdG9yaXVtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQiIG5hbWU9InNldHRpbmdzIj4KKyAgICA8dmFsdWU+SW5zdMOkbGxuaW5nYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNSIgbmFtZT0iYmVudXR6ZXIiPgorICAgIDx2YWx1ZT5Qcm9maWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNiIgbmFtZT0iYWRtaW4iPgorICAgIDx2YWx1ZT5BZG1pbmlzdHJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3IiBuYW1lPSJzdG9wIj4KKyAgICA8dmFsdWU+U3RvcHA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOCIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+U3BlbGEgaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOSIgbmFtZT0ibm9maWxlIj4KKyAgICA8dmFsdWU+SW5nZW4gZmlsIHRpbGxnw6RuZ2xpZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMCIgbmFtZT0icmVjb3JkYnl0ZWFjaGVyIj4KKyAgICA8dmFsdWU+SW5zcGVsYWQgYXYgbMOkcmFyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMSIgbmFtZT0iY29ubmVjdGVkdXNlcnMiPgorICAgIDx2YWx1ZT5BbnNsdXRuYSBhbnbDpG5kYXJlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMiIgbmFtZT0ic3RhcnRjb25mIj4KKyAgICA8dmFsdWU+U3RhcnRhIGVuIGtvbmZlcmVuczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMyIgbmFtZT0ibXluYW1lIj4KKyAgICA8dmFsdWU+TWl0dCBuYW1uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0IiBuYW1lPSJ2aWRlb2NvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT5WaWRlb2tvbmZlcmVuczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNSIgbmFtZT0iaW1wb3J0Ij4KKyAgICA8dmFsdWU+SW1wb3J0ZXJhIFByZXNlbnRhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNiIgbmFtZT0icmVmcmVzaGZpbGVzIj4KKyAgICA8dmFsdWU+VXBwZGF0ZXJhIGxpc3RhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3IiBuYW1lPSJ0b21haW5maWxlIj4KKyAgICA8dmFsdWU+VGlsbCBodXZ1ZGZpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOCIgbmFtZT0ibmV3cG9sbCI+CisgICAgPHZhbHVlPk55IG9tcsO2c3RuaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5IiBuYW1lPSJuZXdwb2xsaGVhZGVyIj4KKyAgICA8dmFsdWU+RW4gbnkgb21yw7ZzdG5pbmcgZsO2ciBrb25mZXJlbnNlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAiIG5hbWU9InF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+RnLDpWdhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMSIgbmFtZT0icG9sbHR5cGUiPgorICAgIDx2YWx1ZT5UeXAgYXYgb21yw7ZzdG5pbmc6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyIiBuYW1lPSJjcmVhdGUiPgorICAgIDx2YWx1ZT5Ta2FwYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMyIgbmFtZT0iaW5mb21lc3NhZ2UiPgorICAgIDx2YWx1ZT5JbmZvOiBWYXJqZSBhbnNsdXRlbiBhbnbDpG5kYXJlIGbDpXIgZXR0IG1lZGRlbGFuZGUgbWVkIGRlbiBueWEgcsO2c3RuaW5nZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0IiBuYW1lPSJjcmVhdHBvbGwiPgorICAgIDx2YWx1ZT5Ta2FwYSBlbiBvbXLDtnN0bmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNSIgbmFtZT0iY2FuY2VsIj4KKyAgICA8dmFsdWU+QXZicnl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2IiBuYW1lPSJ5ZXNubyI+CisgICAgPHZhbHVlPkphL05lajwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNyIgbmFtZT0ibnVtZXJpYyI+CisgICAgPHZhbHVlPk51bWVyaXNrIDEtMTA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgiIG5hbWU9InBvbGwiPgorICAgIDx2YWx1ZT5Sw7ZzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOSIgbmFtZT0ibW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkR1IG3DpXN0ZSB2YXJhIE1vZGVyYXRvciBmw7ZyIGF0dCBza2FwYSBlbiBvbXLDtnN0bmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMCIgbmFtZT0idm90ZSI+CisgICAgPHZhbHVlPkRpbiByw7ZzdCDDpHIgYWNjZXB0ZXJhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMSIgbmFtZT0iYWxyZWFkeXZvdGVkIj4KKyAgICA8dmFsdWU+RHUgaGFyIHJlZGFuIHLDtnN0YXQgaSBkZW5uYSBvbXLDtnN0bmluZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIiIG5hbWU9InZvdGluZyI+CisgICAgPHZhbHVlPlLDtnN0YSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMiIG5hbWU9ImFuc3dlciI+CisgICAgPHZhbHVlPkRpbiByZXNwb25zOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNCIgbmFtZT0ieWVzIj4KKyAgICA8dmFsdWU+SmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUiIG5hbWU9Im5vIj4KKyAgICA8dmFsdWU+TmVqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2IiBuYW1lPSJxdWVzdGlvbndhbnQiPgorICAgIDx2YWx1ZT52aWxsIHZldGE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3IiBuYW1lPSJwb2xscmVzdWx0cyI+CisgICAgPHZhbHVlPlLDtnN0bmluZ3NyZXN1bHRhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOCIgbmFtZT0icXVlc3Rpb24iPgorICAgIDx2YWx1ZT5GcsOlZ2E6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5IiBuYW1lPSJyZXN1bHRzIj4KKyAgICA8dmFsdWU+UmVzdWx0YXQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwIiBuYW1lPSJhbnN3ZXJzIj4KKyAgICA8dmFsdWU+U3Zhcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDEiIG5hbWU9Im5vcG9sbCI+CisgICAgPHZhbHVlPkluZ2EgbnlhIG9tcsO2c3RuaW5nYXIgaGFyIHDDpWLDtnJqYXRzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MiIgbmFtZT0idm90aW5ncyI+CisgICAgPHZhbHVlPlLDtnN0YSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMiIG5hbWU9Im1lZXRpbmciPgorICAgIDx2YWx1ZT5Nw7Z0ZSAobWF4IDQgcGxhdHNlcik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQiIG5hbWU9ImNvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT5Lb25mZXJlbnMgKG1heCA1MCBwbGF0c2VyKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NSIgbmFtZT0idHlwZSI+CisgICAgPHZhbHVlPlR5cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NiIgbmFtZT0icmVtYWluaW5nc2VhdHMiPgorICAgIDx2YWx1ZT5BbmRyYSBwbGF0c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3IiBuYW1lPSJhbHJlYWR5Y2hvc2VuIj4KKyAgICA8dmFsdWU+UmVkYW4gdmFsdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OCIgbmFtZT0iZW50ZXIiPgorICAgIDx2YWx1ZT5TdGlnIGluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5IiBuYW1lPSJtb2RsZWF2ZSI+CisgICAgPHZhbHVlPk1vZGVyYXRvcm4gaGFyIGzDpG1uYXQgbcO2dGV0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MCIgbmFtZT0ic3lzdGVtbWVzc2FnZSI+CisgICAgPHZhbHVlPlN5c3RlbWluZm9ybWF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxIiBuYW1lPSJjaG9zc2VkZXZpY2UiPgorICAgIDx2YWx1ZT5Ww6RsaiB1dHJ1c3RuaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyIiBuYW1lPSJjaG9vc2VjYW0iPgorICAgIDx2YWx1ZT5Ww6RsaiB3ZWJjYW06PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzIiBuYW1lPSJjaG9vc2VtaWMiPgorICAgIDx2YWx1ZT5Ww6RsaiBtaWtyb2Zvbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQiIG5hbWU9Im9rIj4KKyAgICA8dmFsdWU+b2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUiIG5hbWU9ImNhbmNlbDIiPgorICAgIDx2YWx1ZT5BdmJyeXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYiIG5hbWU9InJlY29uZWVjdG5lZWRlZCI+CisgICAgPHZhbHVlPsOFdGVyYW5zbHV0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NyIgbmFtZT0iZWRpdHNldHVwIj4KKyAgICA8dmFsdWU+w4RuZHJhIHNldHVwLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OCIgbmFtZT0iY291cnNlIj4KKyAgICA8dmFsdWU+S3Vyczo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkiIG5hbWU9Imxhbmd1YWdlIj4KKyAgICA8dmFsdWU+U3Byw6VrOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MCIgbmFtZT0ib2syIj4KKyAgICA8dmFsdWU+T2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEiIG5hbWU9ImNhbmNlbDMiPgorICAgIDx2YWx1ZT5BdmJyeXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIiIG5hbWU9ImNsZWFyd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPlJlbnNhIHNrcml2Ym9yZGV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzIiBuYW1lPSJjbGVhcndoaXRlYm9hcmRxdWVzdGlvbiI+CisgICAgPHZhbHVlPlZpbGwgZHUgYXR0IHNrcml2Ym9yZGV0IHNrYWxsIHJlbnNhcyBpbm5hbiBkdSBsw6RnZ2VyIHRpbGwgZW4gbnkgYmlsZD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQiIG5hbWU9ImRvbnRhc2thZ2FpbiI+CisgICAgPHZhbHVlPkZyw6VnYSBpbnRlIGlnZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUiIG5hbWU9Im5vIj4KKyAgICA8dmFsdWU+TmVqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2IiBuYW1lPSJlZGl0c2V0dXAyIj4KKyAgICA8dmFsdWU+w4RuZHJhIHNldHVwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3IiBuYW1lPSJuZWVkY29uZmlybWF0aW9ud2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkZyw6VnYSBpbm5hbiBza3JpdmJvcmRldCB0w7Ztcz8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4IiBuYW1lPSJ1c2VyaW5mbyI+CisgICAgPHZhbHVlPkFudsOkbmRhcmluZm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkiIG5hbWU9ImNsZWFyZHJhd2FyZWEiPgorICAgIDx2YWx1ZT5SZW5zYSByaXRvbXLDpWRldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MCIgbmFtZT0idW5kbyI+CisgICAgPHZhbHVlPsOFbmdyYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MSIgbmFtZT0icmVkbyI+CisgICAgPHZhbHVlPlJlZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIiIG5hbWU9InNlbGVjdG9iamVjdCI+CisgICAgPHZhbHVlPlbDpGxqIGV0dCBvYmpla3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMiIG5hbWU9InRleHQiPgorICAgIDx2YWx1ZT5UZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0IiBuYW1lPSJwYWludCI+CisgICAgPHZhbHVlPk3DpWxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1IiBuYW1lPSJkcmF3bGluZSI+CisgICAgPHZhbHVlPlJpdGEgbGluamU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYiIG5hbWU9ImRyYXd1Ij4KKyAgICA8dmFsdWU+Uml0YSB1bmRlcnN0cnlrbmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NyIgbmFtZT0icmVjdCI+CisgICAgPHZhbHVlPlJla3RhbmdlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OCIgbmFtZT0iZWxsaXBzZSI+CisgICAgPHZhbHVlPkVsbGlwczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OSIgbmFtZT0iYXJyb3ciPgorICAgIDx2YWx1ZT5QaWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAiIG5hbWU9ImRlbGV0ZWNob3NlbiI+CisgICAgPHZhbHVlPnJhZGVyYSB2YWx0IG9iamVrdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MSIgbmFtZT0iYXBwbGl5bW9kIj4KKyAgICA8dmFsdWU+TMOkZ2cgdGlsbCBmw7ZyIG1vZGVyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIiIG5hbWU9ImFwcGx5Ij4KKyAgICA8dmFsdWU+TMOkZ2cgdGlsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MyIgbmFtZT0iY2FuY2VsIj4KKyAgICA8dmFsdWU+QXZicnl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0IiBuYW1lPSJtb2QiPgorICAgIDx2YWx1ZT5CbGkgbW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1IiBuYW1lPSJjbG9zZSI+CisgICAgPHZhbHVlPlN0w6RuZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NiIgbmFtZT0iaXRhbGljIj4KKyAgICA8dmFsdWU+aXRhbGljPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3IiBuYW1lPSJib2xkIj4KKyAgICA8dmFsdWU+ZmV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4IiBuYW1lPSJ3YWl0aW5nIj4KKyAgICA8dmFsdWU+VsOETlRBUjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OSIgbmFtZT0iYXBwbHlNZXNzYWdlIj4KKyAgICA8dmFsdWU+RW4gYW52w6RuZGFyZSB2w6RudGFyIGbDtnIgYXR0IGJsaSBtb2RlcmF0b3I6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwIiBuYW1lPSJhY2NlcHQiPgorICAgIDx2YWx1ZT5BY2NlcHRlcmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTEiIG5hbWU9InJlamVjdCI+CisgICAgPHZhbHVlPk5la2E8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIiIG5hbWU9ImNhbmNlbCI+CisgICAgPHZhbHVlPkF2YnJ5dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MyIgbmFtZT0ic2VuZG1vZHJlcXVlc3RtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2tpY2thIGZyw6VnYSB0aWxsIGbDtmxqYW5kZSBhbnbDpG5kYXJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0IiBuYW1lPSJhY2NlcHQiPgorICAgIDx2YWx1ZT5BY2NlcHRlcmFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1IiBuYW1lPSJyZWplY3QiPgorICAgIDx2YWx1ZT5OZWthZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NiIgbmFtZT0iY2hhbmdlbW9kIj4KKyAgICA8dmFsdWU+w4RuZHJhIG1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NyIgbmFtZT0ibm9ubW9kZXJyb3JtZXNzYWdlIj4KKyAgICA8dmFsdWU+RHUgw6RyIGludGUgbW9kZXJhdG9yIGkgZGVubmEga3VycyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgiIG5hbWU9Im1vZGVyYXRvciI+CisgICAgPHZhbHVlPk1vZGVyYXRvcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkiIG5hbWU9InJvb21mdWxsbWVzc2FnZSI+CisgICAgPHZhbHVlPlJ1bW1ldCDDpHIgZnVsbHQuIEbDtnJzw7ZrIGlnZW4gc2VuYXJlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAiIG5hbWU9ImVsbGxpcHNlIj4KKyAgICA8dmFsdWU+RWxsaXBzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMSIgbmFtZT0iY2xvc2UiPgorICAgIDx2YWx1ZT5TdMOkbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyIiBuYW1lPSJBdXRoRXJyb3IiPgorICAgIDx2YWx1ZT5GZWwgZGF0YSBhbmdpdmV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMyIgbmFtZT0ibWluNHVzZXJuYW1lIj4KKyAgICA8dmFsdWU+QW52w6RuZGFybmFtbmV0IG3DpXN0ZSBpbm5laMOlbGxhIG1pbnN0IDQgdGVja2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNCIgbmFtZT0ibWluNHBhc3MiPgorICAgIDx2YWx1ZT5Mw7ZzZW5vcmRldCBtw6VzdGUgaW5uZWjDpWxsYSBtaW5zdCA0IHRlY2tlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUiIG5hbWU9InVzZXJuYW1ldGFrZW4iPgorICAgIDx2YWx1ZT5BbnbDpG5kYXJuYW1uZXQgw6RyIHJlZGFuIGFudsOkbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2IiBuYW1lPSJlbWFpbHRha2VuIj4KKyAgICA8dmFsdWU+RGVubmEgZXBvc3Qgw6RyIHJlZGFuIGFudsOkbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3IiBuYW1lPSJlbWFpbHRha2VuIj4KKyAgICA8dmFsdWU+U3lzdGVtZmVsLCBrb250YWt0YSBzeXN0ZW1hZG1pbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgiIG5hbWU9IkF1dGhsb2dpbiI+CisgICAgPHZhbHVlPkxvZ2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOSIgbmFtZT0iQXV0aHVzZXIiPgorICAgIDx2YWx1ZT5BbnbDpG5kYXJlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAiIG5hbWU9IkF1dGhwYXNzIj4KKyAgICA8dmFsdWU+TMO2c2VuOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEiIG5hbWU9IkF1dGhsYW5nIj4KKyAgICA8dmFsdWU+U3Byw6VrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMiIgbmFtZT0iQXV0aHJlZyI+CisgICAgPHZhbHVlPkxvZ2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMyIgbmFtZT0icmVnZm9ybWhlYWQiPgorICAgIDx2YWx1ZT5SZWdpc3RyZXJhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNCIgbmFtZT0icmVnZm9ybXVzZXIiPgorICAgIDx2YWx1ZT5BbnbDpG5kYXJlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUiIG5hbWU9InJlZ2Zvcm1wYXNzIj4KKyAgICA8dmFsdWU+TMO2c2VuOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYiIG5hbWU9InJlZ2Zvcm1yZXR5cGUiPgorICAgIDx2YWx1ZT5Mw7ZzZW4gaWdlbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3IiBuYW1lPSJyZWdmb3JtZmlyc3RuYW1lIj4KKyAgICA8dmFsdWU+RsO2cm5hbW46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOCIgbmFtZT0icmVnZm9ybWxhc3RuYW1lIj4KKyAgICA8dmFsdWU+RWZ0ZXJuYW1uOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkiIG5hbWU9InJlZ2Zvcm1tYWlsIj4KKyAgICA8dmFsdWU+RS1wb3N0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAiIG5hbWU9InJlZ2Zvcm1zdGF0ZSI+CisgICAgPHZhbHVlPkxhbmQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMSIgbmFtZT0icmVnZm9ybWJ0bjEiPgorICAgIDx2YWx1ZT5SZWdpc3RyZXJhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMiIgbmFtZT0icmVnZm9ybWJ0bjIiPgorICAgIDx2YWx1ZT5BdmJyeXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzIiBuYW1lPSJBdXRoYnRuMiI+CisgICAgPHZhbHVlPlJlZ2lzdHJlcmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5IZW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1IiBuYW1lPSJ1c2VyYWRtaW4iPgorICAgIDx2YWx1ZT5BbnbDpG5kYXJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNiIgbmFtZT0iZ3JvdXBhZG1pbiI+CisgICAgPHZhbHVlPkdydXBwZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3IiBuYW1lPSJvcmdhZG1pbiI+CisgICAgPHZhbHVlPk9yZ2FuaXNhdGlvbmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOCIgbmFtZT0iaGVhZGNvbmYiPgorICAgIDx2YWx1ZT5Lb25mZXJlbnNydW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5IiBuYW1lPSJjb25mX3B1YiI+CisgICAgPHZhbHVlPlB1YmxpazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAiIG5hbWU9ImhlYWRfb3JnIj4KKyAgICA8dmFsdWU+T3JnYW5pc2F0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMSIgbmFtZT0iYnRuX2VudGVycm9vbSI+CisgICAgPHZhbHVlPlN0aWcgaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2xvZ2luIj4KKyAgICA8dmFsdWU+TG9naW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Bhc3MiPgorICAgIDx2YWx1ZT5Mw7ZzZW5vcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Bhc3NyZXR5cGUiPgorICAgIDx2YWx1ZT5Mw7ZzZW5vcmQgaWdlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUiIG5hbWU9InVzZXJhbHRlcnNlbGZfZmlyc3RuYW1lIj4KKyAgICA8dmFsdWU+RsO2cm5hbW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2xhc3RuYW1lIj4KKyAgICA8dmFsdWU+RWZ0ZXJuYW1uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNyIgbmFtZT0idXNlcmFsdGVyc2VsZl9lbWFpbCI+CisgICAgPHZhbHVlPkUtcG9zdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgiIG5hbWU9InVzZXJhbHRlcnNlbGZfYmlydGgiPgorICAgIDx2YWx1ZT5Gw7ZkZWxzZcOlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkiIG5hbWU9InVzZXJhbHRlcnNlbGZfc3RyZWV0bm8iPgorICAgIDx2YWx1ZT5HYXRhL25yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MCIgbmFtZT0idXNlcmFsdGVyc2VsZl90b3duIj4KKyAgICA8dmFsdWU+UG5yL1N0YWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3N0YXRlIj4KKyAgICA8dmFsdWU+TGFuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIiIG5hbWU9InVzZXJhbHRlcnNlbGZfYWRyZXNzY29tbWVudCI+CisgICAgPHZhbHVlPkFkcmVzcy1JbmZvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MyIgbmFtZT0idXNlcmFsdGVyc2VsZl9oZWFkZXIiPgorICAgIDx2YWx1ZT5BbnbDpG5kYXJkYXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NCIgbmFtZT0ic2F2ZW1lbnViYXJfc2F2ZWxhYmVsIj4KKyAgICA8dmFsdWU+U3BhcmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1IiBuYW1lPSJzYXZlbWVudWJhcl9zYXZlbGFiZWwiPgorICAgIDx2YWx1ZT5TcGFyYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYiIG5hbWU9ImFkbWluX3VzZXJsaXN0X3VzZXJfaWQiPgorICAgIDx2YWx1ZT5BbnbDpG5kYXItSUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3IiBuYW1lPSJhZG1pbl91c2VybGlzdF9sb2dpbiI+CisgICAgPHZhbHVlPkxvZ2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OCIgbmFtZT0iYWRtaW5fdXNlcmxpc3RfZmlyc3RuYW0iPgorICAgIDx2YWx1ZT5Gw7ZybmFtbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkiIG5hbWU9ImFkbWluX3VzZXJsaXN0X2xhc3RuYW1lIj4KKyAgICA8dmFsdWU+RWZ0ZXJuYW1uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MCIgbmFtZT0idHVybm92ZXJsaXN0X25leHQiPgorICAgIDx2YWx1ZT5WaXNhIG7DpHN0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTEiIG5hbWU9InR1cm5vdmVybGlzdF9wcmUiPgorICAgIDx2YWx1ZT5WaXNhIGbDtnJlZ8OlZW5kZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIiIG5hbWU9InNhdmVjb250ZW50X2NvbmZpcm0iPgorICAgIDx2YWx1ZT5SYWRlcmEgaW5uZWjDpWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MyIgbmFtZT0ic2F2ZWNvbnRlbnRfY29uZmlybV9jYW5jZWxfYnRuIj4KKyAgICA8dmFsdWU+QXZicnl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NCIgbmFtZT0ic2F2ZWNvbnRlbnRfY29uZmlybV9jb25maXJtX2J0biI+CisgICAgPHZhbHVlPlJhZGVyYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTUiIG5hbWU9InNhdmVtZW51YmFyX2FkZGxhYmVsIj4KKyAgICA8dmFsdWU+Tnl0dCBpbm5laMOlbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU2IiBuYW1lPSJzYXZlbWVudWJhcl9yZWxvYWRsYWJlbCI+CisgICAgPHZhbHVlPlVwcGRhdGVyYSBpbm5laMOlbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU3IiBuYW1lPSJzYXZlbWVudWJhcl9kZWxldGVsYWJlbCI+CisgICAgPHZhbHVlPlJhZGVyYSBpbm5laMOlbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU4IiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fc3RhdHVzIj4KKyAgICA8dmFsdWU+U3RhdHVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1OSIgbmFtZT0idXNlcmFsdGVyX2FkbWluX3N0YXR1c0l0ZW0iPgorICAgIDx2YWx1ZT5FaiB0aWxsZ8OkbmdsaWc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYwIiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fc3RhdHVzSXRlbSI+CisgICAgPHZhbHVlPlRpbGxnw6RuZ2xpZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjEiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9vcmdhbmlzYXRpb24iPgorICAgIDx2YWx1ZT5PcmdhbmlzYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYyIiBuYW1lPSJjYWxlbmRhcl9pY29ubGFiZWwiPgorICAgIDx2YWx1ZT5LYWxlbmRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjMiIG5hbWU9InNhdmV3aW5kb3dfYnRuIj4KKyAgICA8dmFsdWU+U3TDpG5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2NCIgbmFtZT0ib3JnYW5pc2F0aW9udGFibGVsaXN0X2lkcm93Ij4KKyAgICA8dmFsdWU+T3JnYW5pc2F0aW9uLUlEPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2NSIgbmFtZT0ib3JnYW5pc2F0aW9udGFibGVsaXN0X25hbWVyb3ciPgorICAgIDx2YWx1ZT5OYW1uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2NiIgbmFtZT0idXNlcnZhbHVlX2xldmVsaWQxIj4KKyAgICA8dmFsdWU+QW52w6RuZGFyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjciIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGlkMiI+CisgICAgPHZhbHVlPk1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjgiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGlkMyI+CisgICAgPHZhbHVlPkFkbWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2OSIgbmFtZT0idXNlcnZhbHVlX2xldmVsbGFiZWwiPgorICAgIDx2YWx1ZT5BbnbDpG5kYXJuaXbDpTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzAiIG5hbWU9Im9yZ3ZhbHVlX2hlYWRlciI+CisgICAgPHZhbHVlPk9yZ2FuaXNhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzEiIG5hbWU9Im9yZ3ZhbHVlX29yZ25hbWUiPgorICAgIDx2YWx1ZT5OYW1uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MiIgbmFtZT0ib3JndmFsdWVfb3JnbmFtZSI+CisgICAgPHZhbHVlPkzDpGdnIHRpbGwgb3JnYW5pc2F0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MyIgbmFtZT0ib3JndmFsdWVfb3JnbmFtZSI+CisgICAgPHZhbHVlPkzDpGdnIHRpbGwgb3JnYW5pc2F0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3NCIgbmFtZT0ib3JndmFsdWVfdXNlcndpbiI+CisgICAgPHZhbHVlPkF2YnJ5dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzUiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW4iPgorICAgIDx2YWx1ZT5Mw6RnZyB0aWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3NiIgbmFtZT0ib3JndmFsdWVfdXNlcndpbiI+CisgICAgPHZhbHVlPlRhIGJvcnQgb3JnYW5pc2F0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3NyIgbmFtZT0ib3JndmFsdWVfdXNlcmxpc3QiPgorICAgIDx2YWx1ZT5BbnbDpG5kYXJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3OCIgbmFtZT0ib3JndmFsdWVfdXNlcmxpc3RhZGQiPgorICAgIDx2YWx1ZT5Mw6RnZyB0aWxsIGFudsOkbmRhcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc5IiBuYW1lPSJvcmd2YWx1ZV91c2VybGlzdGRlbGV0ZSI+CisgICAgPHZhbHVlPlJhZGVyYSBhbnbDpG5kYXJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4MCIgbmFtZT0ib3JndmFsdWVfdXNlcndpbmhlYWRlciI+CisgICAgPHZhbHVlPkzDpGdnIHRpbGwgYW52w6RuZGFyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODEiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5zZWFyY2hmaWVsZCI+CisgICAgPHZhbHVlPlPDtmsgYW52w6RuZGFyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODIiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5zZWFyY2hidG4iPgorICAgIDx2YWx1ZT5zw7ZrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4MyIgbmFtZT0ib3JndmFsdWVfdXNlcndpbnNlYXJjaHJlc3VsdCI+CisgICAgPHZhbHVlPkFudsOkbmRhcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg0IiBuYW1lPSJsb2dpbndpbl9jaG9vc2VvcmdhbmlzYXRpb24iPgorICAgIDx2YWx1ZT5PcmdhbmlzYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg1IiBuYW1lPSJsb2dpbndpbl9jaG9vc2VvcmdhbmlzYXRpb25idG4iPgorICAgIDx2YWx1ZT5TdGlnIGluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NiIgbmFtZT0ibmF2aV9yb29tYWRtaW4iPgorICAgIDx2YWx1ZT5Lb25mZXJlbnNydW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg3IiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+S29uZmVyZW5zcnVtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4OCIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPklkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4OSIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPk5hbW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkwIiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+UHVibGlrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5MSIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPk9yZ2FuaXNhdGlvbmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5MiIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPktvbmZlcmVuc3J1bTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTMiIG5hbWU9InJvb212YWx1ZV9uYW1lIj4KKyAgICA8dmFsdWU+TmFtbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTQiIG5hbWU9InJvb212YWx1ZV90eXBlIj4KKyAgICA8dmFsdWU+VHlwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NSIgbmFtZT0icm9vbXZhbHVlX2lzcHVibGljIj4KKyAgICA8dmFsdWU+UHVibGlrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NiIgbmFtZT0icm9vbXZhbHVlX2NvbW1lbnQiPgorICAgIDx2YWx1ZT5Lb21tZW50YXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk3IiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVpY29uIj4KKyAgICA8dmFsdWU+U3BhcmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk4IiBuYW1lPSJ3aGl0ZWJvYXJkX29wZW5pY29uIj4KKyAgICA8dmFsdWU+TGFkZGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk5IiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbmhlYWRlciI+CisgICAgPHZhbHVlPlNwYXJhIHNvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDAiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2ludGV4dCI+CisgICAgPHZhbHVlPkZpbG5hbW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAxIiBuYW1lPSJmaWxlcyI+CisgICAgPHZhbHVlPkZpbG5hbW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAyIiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbmJ0bjEiPgorICAgIDx2YWx1ZT5BdmJyeXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAzIiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbmJ0bjIiPgorICAgIDx2YWx1ZT5TcGFyYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDQiIG5hbWU9InJwY2Vycm9yd2luX2hlYWRlciI+CisgICAgPHZhbHVlPkJlYXJiZXRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDUiIG5hbWU9ImxvYWR3bWxfaGVhZGVyIj4KKyAgICA8dmFsdWU+TGFkZGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNiIgbmFtZT0ibG9hZHdtbF9tZXNzc2xvYWQiPgorICAgIDx2YWx1ZT5PYmpla3QgbGFkZGFkZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDciIG5hbWU9ImxvYWR3bWxfbWVzc3N5bmMiPgorICAgIDx2YWx1ZT5TeW5rcm9uaXNlcmFyLCB2w6RudGE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwOCIgbmFtZT0ibG9hZGltYWdlX21lc3Nsb2FkIj4KKyAgICA8dmFsdWU+TGFkZGFyIGJpbGRkYXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwOSIgbmFtZT0ibG9hZGltYWdlX21lc3NzeW5jIj4KKyAgICA8dmFsdWU+U3lua3JvbmlzZXJhciwgdsOkbnRhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTAiIG5hbWU9ImxvYWR3bWxfY29uZmlybWhlYWRlciI+CisgICAgPHZhbHVlPlJlbnNhIHJpdHV0cnltbWV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMSIgbmFtZT0ibG9hZHdtbF9jb25maXJtbWVzcyI+CisgICAgPHZhbHVlPlJlbnNhIHJpdHV0cnltbWV0LCBhbGwgZGF0YSBrb21tZXIgYXR0IGbDtnJsb3JhczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTIiIG5hbWU9ImxvYWR3bWxfY29uZmlybW1lc3MyIj4KKyAgICA8dmFsdWU+RnLDpWdhIGlubmFuIGlubGFkZG5pbmcgYXYgZmlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMyIgbmFtZT0ic2VuZF9pbnZpdGF0aW9uX2J0biI+CisgICAgPHZhbHVlPlNraWNrYSBpbmJqdWRhbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTQiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5Ta2lja2EgaW5ianVkYW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE1IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fc3ViamVjdCI+CisgICAgPHZhbHVlPsOEbW5lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNiIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX3JlY2lwaWVudCI+CisgICAgPHZhbHVlPk1vdHRhZ2FyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTciIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9tZXNzYWdlIj4KKyAgICA8dmFsdWU+TWVkZGVsYW5kZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTgiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9idG5fY29uZmlybSI+CisgICAgPHZhbHVlPlNraWNrYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTkiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9idG5fY2FuY2VsIj4KKyAgICA8dmFsdWU+QXZicnl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyMCIgbmFtZT0ic2VuZF9jaGF0X3RleHRfYnRuIj4KKyAgICA8dmFsdWU+U2tpY2thPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyMSIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2hlYWRlciI+CisgICAgPHZhbHVlPkFudsOkbmRhcmRhdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIyIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fc3ViamVjdCI+CisgICAgPHZhbHVlPkRpdHQgYWxpYXMgaSBkZW5uYSBrb25mZXJlbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIzIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fbG9naW4iPgorICAgIDx2YWx1ZT5BbGlhczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjQiIG5hbWU9Imludml0ZWRfdXNlcndpbl9maXJzdG5hbWUiPgorICAgIDx2YWx1ZT5Gw7ZybmFtbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjUiIG5hbWU9Imludml0ZWRfdXNlcndpbl9sYXN0bmFtZSI+CisgICAgPHZhbHVlPkVmdGVybmFtbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjYiIG5hbWU9Imludml0ZWRfdXNlcndpbl9tYWlsIj4KKyAgICA8dmFsdWU+RS1wb3N0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNyIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2xhbmciPgorICAgIDx2YWx1ZT5TcHLDpWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI4IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZW50ZXIiPgorICAgIDx2YWx1ZT5TdGlnIGluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyOSIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2VudGVyIj4KKyAgICA8dmFsdWU+TGFkZGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMCIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2VudGVyIj4KKyAgICA8dmFsdWU+TGFkZGFyIGRhdGEsIHbDpG50YSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMxIiBuYW1lPSJ1c2VyX3JlZ2lzdGVyRmFsc2VQV0QiPgorICAgIDx2YWx1ZT5GZWwgbMO2c2Vub3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMiIgbmFtZT0idXNlcl9yZWdpc3RlckZhbHNlUFdESGVhZGVyIj4KKyAgICA8dmFsdWU+MiBpZGVudGlza2EgbMO2c2Vub3JkIG1lZCBtaW5zdCA2IHRlY2tlbiwgdGFjayE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMzIiBuYW1lPSJ1c2VyX3JlZ2lzdGVyTWFpbEVycm9yIj4KKyAgICA8dmFsdWU+RmVsIGUtcG9zdGFkcmVzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzQiIG5hbWU9InVzZXJfcmVnaXN0ZXJNYWlsRXJyb3JIZWFkZXIiPgorICAgIDx2YWx1ZT5EdSBoYXIgYW5nZXR0IGVuIG9naWx0aWcgZS1wb3N0YWRyZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzNSIgbmFtZT0idXNlcl9yZWdpc3RlclN1Y2Nlc3MiPgorICAgIDx2YWx1ZT5SZWdpc3RyZXJpbmcga2xhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzYiIG5hbWU9InVzZXJfcmVnaXN0ZXJTdWNjZXNzSGVhZGVyIj4KKyAgICA8dmFsdWU+RGl0dCBrb250byDDpHIgc2thcGF0LiBEdSBrYW4gbG9nZ2EgaW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzNyIgbmFtZT0idXNlcl9zaGFyaW5nX21lc3NhZ2UiPgorICAgIDx2YWx1ZT5EdSBrYW4gaW50ZSBkZWxhIGRpbiBza8Okcm0ganVzdCBudS4gTsOlZ29uIGFubmFuIGRlbGFyIHNpbiBza8Okcm0uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzOCIgbmFtZT0idXNlcl9zaGFyaW5nX21lc3NhZ2VIZWFkZXIiPgorICAgIDx2YWx1ZT5EZWxuaW5nIGbDtnJianVkZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM5IiBuYW1lPSJ1c2VyX2RvU3RhcnRTY3JlZW5WaWV3ZXIiPgorICAgIDx2YWx1ZT5EZWxhIHNrw6RybTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDAiIG5hbWU9InNjcmVlbl93YXJuQmFuZHdpZHRoIj4KKyAgICA8dmFsdWU+RMOlbGlnIGJhbmRicmVkZDogRHUga2FuIGludGUgc3lua3JvbmlzZXJhIHNrw6RybWVuLiBEdSBrb21tZXIgYXR0IHRhcHBhIGZyYW1lcy4gT20gZGVubmEgdmFybmluZyB2aXNhcyBvZnRhIGthbiBkdSBiZSBkaW4gbW9kZXJhdG9yIGF0dCBzw6Rua2Ega3ZhbGl0ZXRlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQxIiBuYW1lPSJzY3JlZW5fdXNlcmxhYmVsIj4KKyAgICA8dmFsdWU+U2vDpHJtIGF2OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDIiIG5hbWU9IndoaXRlYm9hcmRfdGFiX3BhaW50Ij4KKyAgICA8dmFsdWU+TcOlbGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQzIiBuYW1lPSJ3aGl0ZWJvYXJkX3RhYl9kb2N1bWVudCI+CisgICAgPHZhbHVlPkRva3VtZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0NCIgbmFtZT0idGFiYmFyX2NoYXRpY29uIj4KKyAgICA8dmFsdWU+Q2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDUiIG5hbWU9InRhYmJhcl9maWxlc2ljb24iPgorICAgIDx2YWx1ZT5GaWxlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDYiIG5hbWU9InRhYmJhcl9wYXJ0aWNpcGFudHNpY29uIj4KKyAgICA8dmFsdWU+TWVkbGVtbWFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0NyIgbmFtZT0ic3dmcHJlc2VudGF0aW9uX2xpc3RzYXZlb3JpZyI+CisgICAgPHZhbHVlPkxhZGRhIG5lciBvcmlnaW5hbGRva3VtZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0OCIgbmFtZT0ic3dmcHJlc2VudGF0aW9uX2xpc3RzYXZlcGRmIj4KKyAgICA8dmFsdWU+TGFkZGEgbmVyIFBERi1kb2t1bWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDkiIG5hbWU9InN3ZnByZXNlbnRhdGlvbl9saXN0bG9hZHN3ZiI+CisgICAgPHZhbHVlPkxhZGRhIHByZXNlbnRhdGlvbmVuIHRpbGwgd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTAiIG5hbWU9Im5hdmltYWluX2NvbmZpZyI+CisgICAgPHZhbHVlPktvbmZpZ3VyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUxIiBuYW1lPSJ3aGl0ZWJvYXJkX2JvdW5kaW5nYm94X2RyYWciPgorICAgIDx2YWx1ZT5EcmEgZGV0IGjDpHIgb2JqZWt0ZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUyIiBuYW1lPSJ3aGl0ZWJvYXJkX2JvdW5kaW5nYm94X3Jlc2l6ZSI+CisgICAgPHZhbHVlPsOEbmRyYSBzdG9ybGVrZW4gcMOlIGRldCBow6RyIG9iamVrdGV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MyIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfem9vbSI+CisgICAgPHZhbHVlPiU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU0IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9zbGlkZSI+CisgICAgPHZhbHVlPmF2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1NSIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfZmlyc3RzbGlkZSI+CisgICAgPHZhbHVlPkfDpSB0aWxsIGbDtnJzdGEgc2lkYW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU2IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9wcmVzbGlkZSI+CisgICAgPHZhbHVlPkfDpSB0aWxsIGbDtnJlZ8OlZW5kZSBzaWRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1NyIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfbmV4dHNsaWRlIj4KKyAgICA8dmFsdWU+R8OlIHRpbGwgbsOkc3RhIHNpZGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU4IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9sYXN0c2xpZGUiPgorICAgIDx2YWx1ZT5Hw6UgdGlsbCBzaXN0YSBzaWRhbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTkiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3pvb21taW51cyI+CisgICAgPHZhbHVlPlpvb20gLS08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYwIiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl96b29tcGx1cyI+CisgICAgPHZhbHVlPlpvb20gKys8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYxIiBuYW1lPSJzYWx1dGF0aW9uX21yIj4KKyAgICA8dmFsdWU+SGVycjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjIiIG5hbWU9InNhbHV0YXRpb25fbWlzcyI+CisgICAgPHZhbHVlPkZyw7ZrZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYzIiBuYW1lPSJuYXZpbWFpbl9jb25mYWRtaW4iPgorICAgIDx2YWx1ZT5Lb25maWd1cmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2NCIgbmFtZT0iY29uZnRhYmxlX2hlYWRlcklkIj4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY1IiBuYW1lPSJjb25mdGFibGVfaGVhZGVya2V5Ij4KKyAgICA8dmFsdWU+Tnlja2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2NiIgbmFtZT0iY29uZmFkbWluZm9ybV9oZWFkZXIiPgorICAgIDx2YWx1ZT5Lb25maWd1cmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2NyIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbGtleSI+CisgICAgPHZhbHVlPk55Y2tlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjgiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWx1cGRhdGVkIj4KKyAgICA8dmFsdWU+c2VuYXN0IHVwcGRhdGVyYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY5IiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsdXBkYXRlZGJ5Ij4KKyAgICA8dmFsdWU+dXBwZGF0ZXJhdCBhdjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzAiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWxjb21tZW50Ij4KKyAgICA8dmFsdWU+a29tbWVudGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MSIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbGtleSI+CisgICAgPHZhbHVlPm55Y2tlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzIiIG5hbWU9InR1cm5vdmVybGlzdF9tYXhyZXN1bHRzIj4KKyAgICA8dmFsdWU+YXY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjczIiBuYW1lPSJvcmdhbmlzYXRpb25fdXNlcnNoZWFkZXIiPgorICAgIDx2YWx1ZT5BbnbDpG5kYXJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NCIgbmFtZT0ib3JnYW5pc2F0aW9uX3VzZXJzaWNvbmRlbGV0ZSI+CisgICAgPHZhbHVlPnJhZGVyYSBhbnbDpG5kYXJlIGZyw6VuIG9yZ2FuaXNhdGlvbmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NSIgbmFtZT0ib3JnYW5pc2F0aW9uX3VzZXJzZGVsZXRlZGhlYWQiPgorICAgIDx2YWx1ZT5yYWRlcmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc2IiBuYW1lPSJvcmdhbmlzYXRpb25fdXNlcnNhbHJlYWRhZGRlZCI+CisgICAgPHZhbHVlPkRlbiBow6RyIGFudsOkbmRhcmVuIMOkciByZWRhbiBtZWRsZW0gYXYgZGVuIGjDpHIgb3JnYW5pc2F0aW9uZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NyIgbmFtZT0iZGFzaGJvYXJkX25ld3NoZWFkZXIiPgorICAgIDx2YWx1ZT5OeWhldGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3OCIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua3NoZWFkZXIiPgorICAgIDx2YWx1ZT5TbmFiYmzDpG5rYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc5IiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rQ29uZiI+CisgICAgPHZhbHVlPkfDpSB0aWxsIEtvbmZlcmVuczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODAiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtBdWRpdCI+CisgICAgPHZhbHVlPkfDpSB0aWxsIEF1ZGl0b3JpdW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgxIiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rc3VwcG9ydCI+CisgICAgPHZhbHVlPkhqw6RscCBvY2ggU3VwcG9ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODIiIG5hbWU9ImRhc2hib2FyZF9xdWlja2hvbWVwYWdldXJsIj4KKyAgICA8dmFsdWU+aHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnLzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODMiIG5hbWU9ImRhc2hib2FyZF9xdWlja21haWxpbmdsaXN0dXJsIj4KKyAgICA8dmFsdWU+aHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnL21haWwtbGlzdHMuaHRtbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODQiIG5hbWU9ImRhc2hib2FyZF9yZXBvcnRidWdzIj4KKyAgICA8dmFsdWU+QnVnZ3JhcHBvcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg1IiBuYW1lPSJkYXNoYm9hcmRfcnNzbGlzdGl0ZW1saW5rdGV4dCI+CisgICAgPHZhbHVlPm1lcmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg2IiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5raG9tZXBhZ2VsYWJlbCI+CisgICAgPHZhbHVlPlByb2pla3RldHMgV2ViYnNpZGEgKGh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg3IiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rbWFpbGluZ2xpc3RsYWJlbCI+CisgICAgPHZhbHVlPkVwb3N0bGlzdGEgRsO2ciBBbnbDpG5kYXJlIChodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvbWFpbC1saXN0cy5odG1sKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODgiIG5hbWU9ImxvZ2luX3JlbWVtYmVydXNlciI+CisgICAgPHZhbHVlPktvbSBJaMOlZyBJbmxvZ2duaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4OSIgbmFtZT0ibWFpbl9uYXZpIj4KKyAgICA8dmFsdWU+SW5uZWjDpWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPk1pbiBIZW1zaWRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MSIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPk1pbmEgU2NoZW1hbGFnZGEgTcO2dGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MiIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPk1pbmEgUGxhbmVyYWRlIEF1ZGl0b3JpZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkzIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+QWxsbcOkbm5hIE3DtnRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTQiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5Qcml2YXRhIE3DtnRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTUiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5BbGxtw6RubmEgQXVkaXRvcmllcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTYiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5Qcml2YXRhIEF1ZGl0b3JpZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk3IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+QWxsbcOkbnQgSW5uZWjDpWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5OCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPlByaXZhdCBJbm5laMOlbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk5IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+UGVyc29ubGlndCBJbm5laMOlbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAwIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMSIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPk1vZGVyZXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAyIiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+QW5ow6VsbCBvbSBNb2RlcmVyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMyIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPk9tcsO2c3RuaW5nYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA0IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+VsOkbGogZW4gZmlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNSIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPkluc3TDpGxsbmluZ2FyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNiIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPkthbS4gJmFtcDsgTWlrLiBJbnN0w6RsbG4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNyIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPldoaXRlYm9hcmQgSW5zdMOkbGxuaW5nYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA4IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+QXZzbHV0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDkiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5Mw6RtbmEgUnVtbWV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMCIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPkxvZ2dhIHV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5HbMO2bXQgZGl0dCBsw7ZzZW5vcmQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMiIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7DhXRlcnN0w6RsbCBMw7ZzZW5vcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEzIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlZpYSBFLXBvc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE0IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlZpYSBBbnbDpG5kYXJuYW1uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxNSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5EaW4gRS1wb3N0YWRyZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxNiIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5EaXR0IEFudsOkbmRhcm5hbW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE3IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPk9LPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxOCIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5BbnbDpG5kYXJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxOSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5PbXLDtnN0bmluZ2FyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyMCIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5EZXQgZmlubnMgaW5nZW4gQW52w6RuZGFyZSBrb3BwbGFkIHRpbGwgZGV0dGEgQW52w6RuZGFybmFtbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjEiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+RXR0IGUtcG9zdG1lZGRlbGFuZGUgaW5uZWjDpWxsYW5kZSBlbiB1bmlrIGzDpG5rIGhhciBza2lja2F0cyB0aWxsIGRpbiBlcG9zdGFkcmVzcywgdmFyIHbDpG5saWcga29sbGEgZGluIGVwb3N0LiBPbSBkdSBmb3J0ZmFyYW5kZSBpbnRlIGbDpXR0IG7DpWdvdCBlLXBvc3RtZWRkZWxhbmRlLCB2YXIgdsOkbmxpZyDDpG5kcmEgc3BhbWluc3TDpGxsbmluZ2FybmEgZsO2ciBkaW4gZS1wb3N0IG9jaCBza2lja2EgYmVrcsOkZnRlbHNlbWVkZGVsYW5kZXQgcMOlIG55dHQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyMiIgbmFtZT0iZXJyb3J0eXBlIj4KKyAgICA8dmFsdWU+QmVhcmJldGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyMyIgbmFtZT0iZXJyb3J0eXBlIj4KKyAgICA8dmFsdWU+TWVkZGVsYW5kZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjQiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPk9naWx0aWcgSGFzaC4gSW5nZW4gQW52w6RuZGFyZSBGdW5uZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNSIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+w4V0ZXJzdMOkbGwgRGl0dCBMw7ZzZW5vcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI2IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjciIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPsOEbmRyYSBMw7ZzZW5vcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI4IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5OeXR0IEzDtnNlbm9yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjkiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPkFuZ2UgTMO2c2Vub3JkIHDDpSBueXR0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzMCIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+TMO2c2Vub3JkZW4gZHUgYW5nZXR0IMOkciBpbnRlIGlkZW50aXNrYS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMxIiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT40IGVsbGVyIG1lciB0ZWNrZW47IHZlcnNhbGlzZXJpbmcgaW52ZXJrYXIhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzMiIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+TMO2c2Vub3JkIHZhbHQuIER1IGthbiBsb2dnYSBpbiBudS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMzIiBuYW1lPSJycGNjYWxsYmFjayI+CisgICAgPHZhbHVlPk9LPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNCIgbmFtZT0icnBjZ2VuZXJhbGVycm9yIj4KKyAgICA8dmFsdWU+T2vDpG50IEZlbC4gVmFyIHbDpG5saWcgcmFwcG9ydGVyYSBkZXR0YSB0aWxsIGRpdHQgU2VydmljZS1UZWFtLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzUiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+QW52w6RuZGFybmFtbmV0IGhpdHRhZGVzIGludGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNiIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5PZ2lsdGlndCBMw7ZzZW5vcmQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNyIgbmFtZT0ibG9nb3V0Ij4KKyAgICA8dmFsdWU+VXRsb2dnbmluZyBMeWNrYWRlcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM4IiBuYW1lPSJyZWdpc3RyYXRpb24iPgorICAgIDx2YWx1ZT5SZWdpc3RyZXJpbmcgdmlhIGdyw6Ruc3NuaXR0ZXQgw6RyIEluYWt0aXZlcmF0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzkiIG5hbWU9InJlZ2lzdHJhdGlvbiI+CisgICAgPHZhbHVlPk9naWx0aWcgRXBvc3RhZHJlc3MuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MCIgbmFtZT0icmVnaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+RHVwbGlrYXQgZmlsbmFtbiwgdmFyIHbDpG5saWcgdsOkbGogZXR0IGFubmF0IGZpbG5hbW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MSIgbmFtZT0iZmlsZWJyb3dzZXIiPgorICAgIDx2YWx1ZT5GaWxuYW1uZXQgw6RyIGbDtnIga29ydC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQyIiBuYW1lPSJmaWxlYnJvd3NlciI+CisgICAgPHZhbHVlPkt1bmRlIGludGUgc3BhcmEgQWRyZXNzZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MyIgbmFtZT0idXNlcmFkbWluIj4KKyAgICA8dmFsdWU+QW52w6RuZGFyZSB0aWxsYWdkLCBtZW4gZHUgbcOlc3RlIHRpbGxkZWxhIGhvbm9tIGVuIE9yZ2FuaXNhdGlvbiBmw7ZyIGF0dCBrdW5uYSBsb2dnYSBpbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ0IiBuYW1lPSJhZG1pbmZvcm1zIj4KKyAgICA8dmFsdWU+Tnl0dCBSZWNvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ1IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5JbmdldCBmw6RsdCBtZWQgZGV0dGEgRsOkbHRJZCBoaXR0YWRlcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ2IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5JbmdlbiBFdGlrZXR0IGhpdHRhZGVzIGbDtnIgZGV0IEbDpGx0ZXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NyIgbmFtZT0iZXJyb3JtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRtaW4gQXVrdG9yaXNlcmluZyBrcsOkdnMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0OCIgbmFtZT0ibWFpbm5hdmkiPgorICAgIDx2YWx1ZT5TcHLDpWstRWRpdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0OSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+U3Byw6VrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1MCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+RXRpa2V0dC1JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTEiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkV0aWtldHQtTmFtbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTIiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPlbDpHJkZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTMiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkbDpGx0dsOkcmRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTQiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkV0aWtldHROYW1uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1NSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+RXRpa2V0dFbDpHJkZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTYiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkV0aWtldHQtSUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU3IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5EdSByYWRlcmFkZSBlbmRhc3QgRXRpa2V0dGVuLCBJTlRFIEbDpGx0ZXQhIER1IGthbiBpbnRlIHJhZGVyYSBGw6RsdGV0LCBkZXQgaW5uZWjDpWxsZXIga2Fuc2tlIEV0aWtldHRlciBww6UgYW5kcmEgU3Byw6VrLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTgiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPk9naWx0aWcgRXRpa2V0dC1JRC4gRmllbGRMYW5ndWFnZXN2YWx1ZXNfSWQga2FuIGludGUgaGl0dGFzIGkgZGF0YWJhc2VuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTkiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkR1IGthbiBpbnRlIHJhZGVyYSBkZXQgaMOkciBGw6RsdGV0LiBEdSBrYW4gZW5kYXN0IHJhZGVyYSBFdGlrZXR0ZXIsIElOVEUgRsOkbHQuIEbDtnIgdGlsbGbDpGxsZXQgw6RyIGluZ2VuIEV0aWtldHQgbGFkZGFkLCBkZXR0YSBrYW4gYmVybyBww6UgYXR0IGluZ2VuIEV0aWtldHQgw6RyIHZhbGQgZWxsZXIgZsO2ciBhdHQgaW5nYSBFdGlrZXR0ZXIgw6RyIGRlZmluaWVyYWRlIGbDtnIgZGV0IGjDpHIgZsOkbHRldCBvY2ggc3Byw6VrZXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+RXhwb3J0ZXJhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+RHUgbcOlc3RlIGxvZ2dhIHV0IGbDtnIgYXR0IHNlIMOkbmRyaW5nYXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TMOkZ2cgdGlsbCBueXR0IHNwcsOlazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjMiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPlRhIGJvcnQgc3Byw6VrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+TMOkZ2cgdGlsbCBueXR0IHNwcsOlazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjUiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPk5hbW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY2IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5Mw6RnZyB0aWxsIHNwcsOlazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjciIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPlPDpGtlcmhldHNrb3BpYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjgiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPkfDpSB0aWxsIGbDtnJzdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY5IiBuYW1lPSJ0dXJub3Zlcmxpc3QiPgorICAgIDx2YWx1ZT5Hw6UgdGlsbCBmw7ZyZWfDpWVuZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzcwIiBuYW1lPSJ0dXJub3Zlcmxpc3QiPgorICAgIDx2YWx1ZT5Hw6UgdGlsbCBuw6RzdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzcxIiBuYW1lPSJ0dXJub3Zlcmxpc3QiPgorICAgIDx2YWx1ZT5Hw6UgdGlsbCBzaXN0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzIiIG5hbWU9InZpZGVvYm94Ij4KKyAgICA8dmFsdWU+QW52w6RuZGFyZSB0YWxhciAoQnkgY2xpY2tpbmcgaGVyZSB5b3UgY2FuIGdpdmUgZXhjbHVzaXZlIGF1ZGlvIC8gbXV0ZSB0aGUgbWljcm9waG9uZSBvZiBvdGhlcnMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MyIgbmFtZT0idmlkZW9ib3giPgorICAgIDx2YWx1ZT5Tw6R0dCBww6UvYXYgbGp1ZGV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3NCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+U3lzdGVtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3NSIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+RGluYSBpbnN0w6RsbG5pbmdhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzYiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPkhlaiw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc3IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT7DhG5kcmEgZGluIHByb2ZpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzgiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPk55YSBtZWRkZWxhbmRlbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc5IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5MYWRkYSB1cHAgbnlhIGJpbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODAiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+QW52w6RuZGFyZGF0YSAtIEV4cG9ydGVyYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODEiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+QWxsYSBvcmdhbmlzYXRpb25lciBtw6VzdGUgZmlubmFzIGZyw6VuIHRpZGlnYXJlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODIiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+UMOlYsO2cmphIGV4cG9ydGVyaW5nZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgzIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPkVubGlndCBvcmdhbmlzYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg0IiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPlDDpWLDtnJqYSBleHBvcnRlcmluZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NSIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5BbnbDpG5kYXJkYXRhIC0gSW1wb3J0ZXJhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NiIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5Ww6RsaiB1c2Vycy54bWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg3IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5JbXBvcnRlcmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg4IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5FeHBvcnRlcmEgdGlsbCBYTUwgLSBEZXNzYSBmaWxlciBrYW4gYW52w6RuZGFzIGbDtnIgYXR0OiAtIEJpZHJhIHRpbGwgcHJvamVrdGV0IC0gSW1wb3J0ZXJhIHRpbGwgZXR0IGFubmF0IHN5c3RlbSAtIEfDtnJhIHPDpGtlcmhldHNrb3Bpb3IgLSBTa3LDpGRkYXJzeSBwcm9ncmFtbWV0IC0gTMOkZ2dhIGkgbGFuZ3VhZ2UtbWFwcGVuIGbDtnIga29tbWFuZGUgaW5zdGFsbGF0aW9uZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg5IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5Ww6RsaiBlbiBzcHLDpWtmaWwgYXR0IGltcG9ydGVyYS4gVsOkbGogcsOkdHQgc3Byw6VrIGZyw6VuIENvbWJvYm94ZW4hIFNwcsOla2ZpbGVuIGtvbW1lciBhdHQgaW1wb3J0ZXJhcyB0aWxsIGRldHRhIHNwcsOlayBvYmVyb2VuZGUgYXYgbmFtbmV0IHDDpSBmaWxlbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkwIiBuYW1lPSJpbXBvcnR3aW5kb3ciPgorICAgIDx2YWx1ZT5JbXBvcnRlcmEgLSB2w6RsaiBmaWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzkxIiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+U3BhcmEgc29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5MiIgbmFtZT0icmVjb3JkaW5nc2F2ZXdpbiI+CisgICAgPHZhbHVlPk5hbW46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5MyIgbmFtZT0icmVjb3JkaW5nc2F2ZXdpbiI+CisgICAgPHZhbHVlPktvbW1lbnRhcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk0IiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+U3BhcmE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk1IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5JbnNwZWxuaW5nYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk2IiBuYW1lPSJyZWNvcmRlciI+CisgICAgPHZhbHVlPkluc3BlbG5pbmdzZsO2cmV2aXNhcmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NyIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+SW5zcGVsbmluZ2FyIGZyw6VuIGFsbG3DpG5uYSBvY2ggcHJpdmF0YSBydW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk4IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5BbnbDpG5kYXJlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTkiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPkFuc2zDtnQgc2lnOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDAiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDEiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPkFudsOkbmRhcmUgaSBkZXQgaMOkciBydW1tZXQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMiIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+VXBwZGF0ZXJhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMyIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+RGV0IGjDpHIgcnVtbWV0IMOkciBmdWxsdC4gRsO2cnPDtmsgaWdlbm9tIG9tIG7DpWdvbiBtaW51dC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA0IiBuYW1lPSJyb29tc0xpc3QiPgorICAgIDx2YWx1ZT5LbGlja2EgcMOlIGV0dCBydW0gZsO2ciBhdHQgZsOlIG1lcmEgZGV0YWxqZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA1IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5DaGF0dGEgbWVkIGFudsOkbmRhcm5hIGkgZGV0IGjDpHIgcnVtbWV0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDYiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPlJ1bTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA3IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5BbnbDpG5kYXJlIGkgZGV0IGjDpHIgcnVtbWV0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDgiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPlNlZGFuOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDkiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPlNwZWxhIHVwcCBpbnNwZWxuaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMCIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+TMOkbmdkOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTEiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkRhdHVtOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTIiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkluc3BlbG5pbmdzbMOkZ2UhIER1IGthbiBpbnRlIMOkbmRyYSBuw6VncmEgdsOkcmRlbiwgZGV0dGEgw6RyIGVuIGluc3BlbGFkIGZpbC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDEzIiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5TcGVsYSB1cHAgZGVubmEgaW5zcGVsbmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTQiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPlNwZWxhIHVwcCAvIFBhdXNhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxNSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+UMOlYsO2cmphIGluc3BlbG5pbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE2IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5TdG9wcGEgaW5zcGVsbmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTciIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkluc3BlbG5pbmc6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxOCIgbmFtZT0icmVjb3JkX2Vycm9yX21zZyI+CisgICAgPHZhbHVlPkRldCDDpHIgcmVkYW4gbsOlZ29uIHNvbSBzcGVsYXIgaW46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxOSIgbmFtZT0icmVjb3JkX21lc3NhZ2UiPgorICAgIDx2YWx1ZT5JbnNwZWxuaW5nISBBdiBhbnbDpG5kYXJlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjAiIG5hbWU9InJlY29yZF9jYW5jZWwiPgorICAgIDx2YWx1ZT5BdmJyeXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIxIiBuYW1lPSJyZWNvcmRfY2FuY2FsX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5JbnNwZWxuaW5nZW4ga29tbWVyIGF0dCBhdmJyeXRzIG9jaCBpbnRlIGhlbGxlciBzcGFyYXMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyMiIgbmFtZT0iY2FuY2VsX2RpYWxvZ19yZXN1bWUiPgorICAgIDx2YWx1ZT7DhXRlcnVwcHRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyMyIgbmFtZT0iY2FuY2VsX2RpYWxvZ19yZXN1bWVfdG9vbHRpcCI+CisgICAgPHZhbHVlPlN0w6RuZyBkZXQgaMOkciBmw7Zuc3RyZXQgb2NoIMOldGVydXBwdGEgaW5zcGVsbmluZ2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyNCIgbmFtZT0icGFpbnR0b29sc19lbGxpcHNlX2NvbG9yIj4KKyAgICA8dmFsdWU+w4RuZHJhIExpbmplZsOkcmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI1IiBuYW1lPSJjb2xvcnBpY2tlcl9oZWFkIj4KKyAgICA8dmFsdWU+VsOkbGogRsOkcmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI2IiBuYW1lPSJwYWludHRvb2xzX2xpbmVfZGlzYWJsZSI+CisgICAgPHZhbHVlPkluYWt0aXZlcmEgLyBBa3RpdmVyYSBMaW5qZWbDpHJnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyNyIgbmFtZT0icGFpbnR0b29sc19maWxsX2Rpc2FibGUiPgorICAgIDx2YWx1ZT7DhG5kcmEgRnlsbGbDpHJnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyOCIgbmFtZT0icGFpbnR0b29sc19saW5lX2Rpc2FibGUiPgorICAgIDx2YWx1ZT5JbmFrdGl2ZXJhIC8gQWt0aXZlcmEgRnlsbGbDpHJnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyOSIgbmFtZT0iY2hhbmdlX3dpZHRoX2Fycm93X2Rvd25fc2xpZGVyIj4KKyAgICA8dmFsdWU+w4RuZHJhIExpbmplYnJlZGQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMwIiBuYW1lPSJjbG9zZV9zbWFsbF9wb3B1cHMiPgorICAgIDx2YWx1ZT5TdMOkbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMxIiBuYW1lPSJwYWludF90b29sX2xldHRlciI+CisgICAgPHZhbHVlPsOEbmRyYSBzdG9ybGVrIHDDpSB0ZWNrZW5zbml0dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzIiIG5hbWU9InJlY29yZGluZ3NsaXN0X2RlbGV0ZSI+CisgICAgPHZhbHVlPlRhIGJvcnQgSW5zcGVsbmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzMiIG5hbWU9InJlY29yZGluZ3NsaXN0X3JlY29yZGVkQnlHdWVzdCI+CisgICAgPHZhbHVlPkfDpHN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNCIgbmFtZT0icmVjb3JkaW5nc2xpc3RfcmVjb3JkZWRieSI+CisgICAgPHZhbHVlPkF2OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzUiIG5hbWU9InJlY29yZGluZ3NfdGFibGVfaGVhZF9uYW1lIj4KKyAgICA8dmFsdWU+TmFtbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzYiIG5hbWU9InJlY29yZGluZ3NfdGFibGVfaGVhZF9yb29tIj4KKyAgICA8dmFsdWU+UnVtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNyIgbmFtZT0icmVjb3JkaW5nc190YWJsZV9oZWFkX2RhdGUiPgorICAgIDx2YWx1ZT5EYXR1bTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzgiIG5hbWU9InJlY29yZF9zdGFydF9jYW5jZWwiPgorICAgIDx2YWx1ZT5BdmJyeXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM5IiBuYW1lPSJyZWNvcmRfc3RhcnRfc3RhcnQiPgorICAgIDx2YWx1ZT5TdGFydGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQwIiBuYW1lPSJmaWxlc2Jyb3dzZXJfdGFibGVfaGVhZF9uYW1lIj4KKyAgICA8dmFsdWU+TmFtbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDEiIG5hbWU9ImZpbGVzYnJvd3Nlcl90YWJsZV9oZWFkX2RhdGUiPgorICAgIDx2YWx1ZT5EYXR1bTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDIiIG5hbWU9ImNoYXRfY2xlYXJfaGlzdG9yeSI+CisgICAgPHZhbHVlPlJhZGVyYSBTZXJ2ZXJucyBDaGF0bG9nZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDMiIG5hbWU9ImNoYXRfb3ZlcmFsbF9oZWFkZXIiPgorICAgIDx2YWx1ZT5DaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NCIgbmFtZT0iY2hhdF9zZW5kX2J0biI+CisgICAgPHZhbHVlPlNraWNrYSBtZWRkZWxhbmRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NSIgbmFtZT0iY2hhdF9lbW90X2J0biI+CisgICAgPHZhbHVlPkVtb3Rpa29uZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ2IiBuYW1lPSJjaGF0X2Vtb3Rfd2luIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NyIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzIj4KKyAgICA8dmFsdWU+VsOkbGogRW5oZXRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDgiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPkxqdWQgb2NoIFZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0OSIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2NvbWJvIj4KKyAgICA8dmFsdWU+RW5kYXN0IExqdWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUwIiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT5FbmRhc3QgVmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUxIiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT5JbmdldCBManVkL1ZpZGVvIChzdGF0aXNrIGJpbGQpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1MiIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2luZm9fdGV4dCI+CisgICAgPHZhbHVlPkluZ2V0IExqdWQvVmlkZW8ga29tbWVyIGF0dCBwdWJsaWNlcmFzLCBpIHN0w6RsbGV0IGtvbW1lciBlbiBiaWxkIGZyw6VuIGRpbiBwcm9maWwgYXR0IHZpc2FzLiBWw6RsaiBkZW4gaMOkciBpbnN0w6RsbG5pbmdlbiBvbSBkdSBoYXIgZMOlbGlnIGJhbmRicmVkZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUzIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX21vbmRheSI+CisgICAgPHZhbHVlPk3DhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTQiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfdHVlc2RheSI+CisgICAgPHZhbHVlPlRJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV93ZWRuZXNkYXkiPgorICAgIDx2YWx1ZT5PTjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTYiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfdGh1cnNkYXkiPgorICAgIDx2YWx1ZT5UTzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTciIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfZnJpZGF5Ij4KKyAgICA8dmFsdWU+RlI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU4IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3NhdHVyZGF5Ij4KKyAgICA8dmFsdWU+TMOWPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1OSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9zdW5kYXkiPgorICAgIDx2YWx1ZT5Tw5Y8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYwIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX21vbmRheSI+CisgICAgPHZhbHVlPk3DpW5kYWc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYxIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1R1ZXNkYXlMYWJlbCI+CisgICAgPHZhbHVlPlRpc2RhZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjIiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfV2VkbmVzZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5PbnNkYWc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYzIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1RodXJzZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5Ub3JzZGFnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9GcmlkYXlMYWJlbCI+CisgICAgPHZhbHVlPkZyaWRhZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjUiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfU2F0dXJkYXlMYWJlbCI+CisgICAgPHZhbHVlPkzDtnJkYWc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY2IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1N1bmRheUxhYmVsIj4KKyAgICA8dmFsdWU+U8O2bmRhZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjciIG5hbWU9ImNhbGVuZGFyX3dlZWtudW1iZXJfaGVhZGVyIj4KKyAgICA8dmFsdWU+S1Y8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY4IiBuYW1lPSJjYWxlbmRhcl93ZWVrbnVtYmVyX2hlYWRlclRvb2x0aXAiPgorICAgIDx2YWx1ZT5LYWxlbmRlciB2ZWNrYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjkiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5KYW51YXJpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3MCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPkZlYnJ1YXJpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3MSIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPk1hcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDcyIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+QXByaWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDczIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+TWFqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3NCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPkp1bmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc1IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+SnVsaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzYiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5BdWd1c3RpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3NyIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPlNlcHRlbWJlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzgiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5Pa3RvYmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3OSIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPk5vdmVtYmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4MCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPkRlY2VtYmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4MSIgbmFtZT0iY2FsZW5kYXJ3aW5faGVhZGVyIj4KKyAgICA8dmFsdWU+S2FsZW5kZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgyIiBuYW1lPSJyb29tYWRtaW5fbGFiZWxOdW1iZXJPZlBhcnRpY2lwYW50cyI+CisgICAgPHZhbHVlPkRlbHRhZ2FyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODMiIG5hbWU9InJvb21WYWx1ZV9hZHZhbmNlZFNldHRpbmdzIj4KKyAgICA8dmFsdWU+VmlzYSBMYXlvdXQgaW5zdMOkbGxuaW5nYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg0IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3ZpZGVvWCI+CisgICAgPHZhbHVlPlggfCBZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NSIgbmFtZT0icm9vbUFkbWluX2xheW91dF92aWRlb1kiPgorICAgIDx2YWx1ZT5CcmVkZCB8IEjDtmpkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NiIgbmFtZT0icm9vbUFkbWluX2xheW91dCI+CisgICAgPHZhbHVlPlZpZGVvLVBsYXRzaMOlbGxhcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg3IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X21vZCI+CisgICAgPHZhbHVlPk1vZGVyZXJpbmdzLVBsYXRzaMOlbGxhcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg4IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X21vZF9wb3MiPgorICAgIDx2YWx1ZT5YPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4OSIgbmFtZT0icm9vbUFkbWluX2xheW91dF93aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+V2hpdGVib2FyZC1QbGF0c2jDpWxsYXJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5MCIgbmFtZT0icm9vbUFkbWluX2xheW91dF93aGl0ZWJvYXJkX3Nob3ciPgorICAgIDx2YWx1ZT5Ba3RpdmVyYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkxIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmRfcG9zIj4KKyAgICA8dmFsdWU+WCB8IFk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkyIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5CcmVkZCB8IEjDtmpkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5MyIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlcyI+CisgICAgPHZhbHVlPkZpbGVyLCBDaGF0LCBEZWx0YWdhcmUgLSBQbGF0c2jDpWxsYXJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NCIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlc19zaG93Ij4KKyAgICA8dmFsdWU+QWt0aXZlcmFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NSIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlc19wb3MiPgorICAgIDx2YWx1ZT5YIHwgWTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTYiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXMiPgorICAgIDx2YWx1ZT5CcmVkZCB8IEjDtmpkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NyIgbmFtZT0ibW9kZXJhdG9yX2dvbmVfbWVzc2FnZSI+CisgICAgPHZhbHVlPk1vZGVyYXRvcm4gaGFyIGzDpG1uYXQgcnVtbWV0LiBGw7ZyIHRpbGxmw6RsbGV0IGZpbm5zIGRldCBpbmdlbiBwcmVzZW50YXTDtnIuIER1IGthbiBhbnPDtmthIG9tIGF0dCBibGkgTW9kZXJhdG9yIGVsbGVyIHbDpG50YS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk4IiBuYW1lPSJtb2RlcmF0b3JfbWVzc2FnZV9ldmVudF9ub19tb2QiPgorICAgIDx2YWx1ZT5EZXQgZmlubnMgaW5nZW4gTW9kZXJhdG9yIGkgZGV0IGjDpHIgcnVtbWV0LCBtZW4gZGV0IGZpbm5zIG7DpWdyYSBkZWx0YWdhcmUuIER1IGthbiBhbnPDtmthIG9tIGF0dCBibGkgTW9kZXJhdG9yIGVsbGVyIHbDpG50YS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk5IiBuYW1lPSJmZWVkYmFja190ZW1wbGF0ZV9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+RmVlZGJhY2sgZsO2ciAkQVBQX05BTUU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAwIiBuYW1lPSJpbnZpdGF0aW9uX3RlbXBsYXRlX2hlYWQiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgLSBJbmJqdWRhbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDEiIG5hbWU9Imludml0YXRpb25fdGV4dF9mcm9tIj4KKyAgICA8dmFsdWU+TWVkZGVsYW5kZSBmcsOlbiBBbnbDpG5kYXJlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDIiIG5hbWU9Imludml0YXRpb25fdGV4dF9tZXNzYWdlIj4KKyAgICA8dmFsdWU+TWVkZGVsYW5kZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAzIiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfY2xpY2tfdGV4dCI+CisgICAgPHZhbHVlPktsaWNrYSBww6UgZGVuIGjDpHIgbMOkbmtlbiBmw7ZyIGF0dCBkZWx0YSBpIE3DtnRldDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA0IiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfY2xpY2tfdGV4dF9saW5rIj4KKyAgICA8dmFsdWU+S2xpY2thIGjDpHIgZsO2ciBhdHQgZ8OlIGluIGkgUnVtbWV0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDUiIG5hbWU9Imludml0YXRpb25fdGV4dF9jbGlja190ZXh0X2hlbHAiPgorICAgIDx2YWx1ZT5PbSBkdSBoYXIgcHJvYmxlbSBtZWQgZGVuIGjDpHIgbMOkbmtlbiwgdmFyIHbDpG5saWcga29waWVyYSBvY2gga2xpc3RyYSBpbiBkZXQgaMOkciBpIGRpbiB3ZWJibMOkc2FyZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA2IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSBSZWdpc3RyZXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA3IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfaGVhZDIiPgorICAgIDx2YWx1ZT5EaW4gYW52w6RuZGFyZGF0YTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA4IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfdXNlcm5hbWUiPgorICAgIDx2YWx1ZT5Mb2dpbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA5IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfcGFzcyI+CisgICAgPHZhbHVlPkzDtnNlbm9yZDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTEwIiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfbWFpbCI+CisgICAgPHZhbHVlPkVwb3N0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTEiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9ieWUiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUtVGVhbWV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxMiIgbmFtZT0icmVnaXN0ZXJfbWFpbF9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIFJlZ2lzdHJlcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTMiIG5hbWU9InJlc2V0X3Bhc3N3b3JkX3RlbXBsYXRlX2hlYWQiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgLSDDhXRlcnN0w6RsbCBMw7ZzZW5vcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE0IiBuYW1lPSJyZXNldF9wYXNzd29yZF90ZW1wbGF0ZV90ZXN0X2xpbmsiPgorICAgIDx2YWx1ZT5LbGlja2EgcMOlIGRlbiBow6RyIGzDpG5rZW4gZsO2ciBhdHQgYW5nZSBldHQgbnl0dCBsw7ZzZW5vcmQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNSIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfdGV4dDJfbGluayI+CisgICAgPHZhbHVlPktsaWNrYSBow6RyIGbDtnIgYXR0IGFuZ2UgZXR0IG55dHQgbMO2c2Vub3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNiIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfdGV4dDNfbGluayI+CisgICAgPHZhbHVlPk9tIGR1IGhhciBwcm9ibGVtIG1lZCBsw6Rua2VuLCB2YXIgdsOkbmxpZyBrb3BpZXJhIG9jaCBrbGlzdHJhIGluIGRldHRhIGkgZGluIHdlYmJsw6RzYXJlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTciIG5hbWU9InJlc2V0X3Bhc3N3b3JkX21haWxfc3ViamVjdCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSBsw7ZzZW5vcmRzw6V0ZXJzdMOkbGxuaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxOCIgbmFtZT0iZGF0ZVJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+VmFyIHbDpG5saWcgYW5nZSBldHQgZ2lsdGlndCBEYXR1bSwgdGlsbCBleGVtcGVsIDI0LjEyLjIwMDEgKGRkLm1tLsOlw6XDpcOlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTkiIG5hbWU9ImVtYWlsUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5WYXIgdsOkbmxpZyBhbmdlIGVuIGdpbHRpZyBFcG9zdGFkcmVzcywgdGlsbCBleGVtcGVsIG5hbW5AbWFpbC5jb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIwIiBuYW1lPSJmbG9hdFJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+VmFyIHbDpG5saWcgYW5nZSBldHQgRmx5dGFuZGUtTnVtbWVyLCB0aWxsIGV4ZW1wZWwgMS4wMDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjEiIG5hbWU9Im51bWJlclJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+VmFyIHbDpG5saWcgYW5nZSBldHQgTnVtbWVyIChJbnRlZ2VyKSwgdGlsbCBleGVtcGVsIDEwMDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjIiIG5hbWU9InBob25lUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5WYXIgdsOkbmxpZyBhbmdlIGV0dCBUZWxlZm9ubnVtbWVyLCB0aWxsIGV4ZW1wZWwgKzM1OCA0MCAzNTIgMzI1MDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjMiIG5hbWU9InRpbWVSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPlZhciB2w6RubGlnIGFuZ2UgZW4gdGlkLCB0aWxsIGV4ZW1wZWwgMTI6MjMgKHR0Om1tKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjQiIG5hbWU9Imludml0YXRpb25fd2luZG93Ij4KKyAgICA8dmFsdWU+TMO2c2Vub3Jkc3NreWRkYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI1IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd19wYXNzd29yZExhYmVsIj4KKyAgICA8dmFsdWU+TMO2c2Vub3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNiIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWRMYWJlbCI+CisgICAgPHZhbHVlPkdpbHRpZ2hldHN0aWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI3IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZCI+CisgICAgPHZhbHVlPk/DpG5kbGlnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyOCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWQiPgorICAgIDx2YWx1ZT5QZXJpb2Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI5IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZCI+CisgICAgPHZhbHVlPkVuZ8OlbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWRGcm9tTGFiZWwiPgorICAgIDx2YWx1ZT5HaWx0aWcgZnLDpW4gb2NoIG1lZDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMxIiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZFRvTGFiZWwiPgorICAgIDx2YWx1ZT5HaWx0aWcgdGlsbDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMyIiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd19NYWlsU3ViamVjdCI+CisgICAgPHZhbHVlPkluYmp1ZGFuIHRpbGwgJEFQUF9OQU1FPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMyIgbmFtZT0iaW52aXRhdGlvbl9lcnJvciI+CisgICAgPHZhbHVlPkluZ2VuIGluYmp1ZGFuIHRpbGxnw6RuZ2xpZyBtZWQgZGVuIGjDpHIgSW5ianVkbmluZ3Nrb2Rlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM0IiBuYW1lPSJpbnZpdGF0aW9uX2Vycm9yIj4KKyAgICA8dmFsdWU+SW5ianVkYW4gYW52w6RuZGVzIHJlZGFuLiBEZW4gaMOkciB0eXBlbiBhdiBpbmJqdWRuaW5nYXIga2FuIGludGUgw6V0ZXJhbnbDpG5kYXMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzNSIgbmFtZT0iaW52aXRhdGlvbl9lcnJvciI+CisgICAgPHZhbHVlPkluYmp1ZG5pbmdza29kZW4gw6RyIGludGUgZ2lsdGlnLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzYiIG5hbWU9Imludml0YXRpb25fcGFzcyI+CisgICAgPHZhbHVlPkzDtnNlbm9yZDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM3IiBuYW1lPSJpbnZpdGF0aW9uX3Bhc3NfYnRuIj4KKyAgICA8dmFsdWU+S29udHJvbGxlcmEgTMO2c2Vub3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzOCIgbmFtZT0iaW52aXRhdGlvbl9wYXNzX2Vycm9yIj4KKyAgICA8dmFsdWU+T2dpbHRpZ3QgTMO2c2Vub3JkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzkiIG5hbWU9IkJyb3dzZXIiPgorICAgIDx2YWx1ZT5XZWJibMOkc2FyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDAiIG5hbWU9ImF1ZGlvX3ZpZGVvIj4KKyAgICA8dmFsdWU+U3lua3JvbmlzZXJhIExqdWQvVmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQxIiBuYW1lPSJlcnJvckNvZGVfaW52YWxpZFNlc3Npb24iPgorICAgIDx2YWx1ZT5JbmxvZ2duaW5nZW4gdmFyIGtvcnJla3QsIG1lbiBzZXNzaW9uZW4gw6RyIGludGUgbMOkbmdyZSBha3RpdiBlbGxlciBsYWdyYWQgcMOlIHNlcnZlcm4uIEbDtnJzw7ZrIGF0dCBsb2dnYSBpbiBpZ2VuIGVmdGVyIGF0dCBkdSBmw6V0dCBldHQgbnl0dCBTZXNzaW9uSWQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0MiIgbmFtZT0iZXJyb3Jjb2RlX3NldFVzZXJPYmplY3QiPgorICAgIDx2YWx1ZT5TZXNzaW9uSWQgw6RyIGludGUgaW5sb2dnYXQgZWxsZXIgaGFyIGluZ2EgQWRtaW4tcsOkdHRpZ2hldGVyLiBTT0FQIEdhdGV3YXkga3LDpHZlciBlbiBhbnbDpG5kYXJlIG1lZCBhZG1pbi1yw6R0dGlnaGV0ZXIgZsO2ciBhdHQgaW5uZXNsdXRhIG55YSBhbnbDpG5kYXJlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDMiIG5hbWU9ImVycm9yY29kZV9sb2dpbkJ5UmVtb3RlVXNlciI+CisgICAgPHZhbHVlPkRlbiBow6RyIHNlc3Npb25lbiDDpHIgaW50ZSBrb3BwbGFkIHRpbGwgbsOlZ29uIFJlbW90ZXVzZXItRGF0YS4gQW50aW5nZW4gc8OlIGthbGxhZGVzIGludGUgU09BUC1HYXRld2F5IGbDtnJlIGFwcGxpa2F0aW9uZW4ga8O2cmRlcyBlbGxlciBzw6UgYW52w6RuZHMgZXR0IGZlbGFrdGlndCBTZXNzaW9uLUlELjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDQiIG5hbWU9ImRlYnVnX21lc3NhZ2VfcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+SW5zcGVsYXJlbiDDpHIgZm9ydGZhcmFuZGUgaSBCZXRhLXN0YWRpZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ1IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWFZhbHVlIj4KKyAgICA8dmFsdWU+eDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDYiIG5hbWU9InByb3BlcnR5UGFuZWxYVmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPngtYXhlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDciIG5hbWU9InByb3BlcnR5UGFuZWxZVmFsdWUiPgorICAgIDx2YWx1ZT55PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0OCIgbmFtZT0icHJvcGVydHlQYW5lbFlWYWx1ZUxhYmVsIj4KKyAgICA8dmFsdWU+eS1heGVsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0OSIgbmFtZT0icHJvcGVydHlQYW5lbFdpZHRoVmFsdWUiPgorICAgIDx2YWx1ZT5iPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1MCIgbmFtZT0icHJvcGVydHlQYW5lbFdpZHRoVmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPmJyZWRkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1MSIgbmFtZT0icHJvcGVydHlQYW5lbEhlaWdodFZhbHVlIj4KKyAgICA8dmFsdWU+aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTIiIG5hbWU9InByb3BlcnR5UGFuZWxIZWlnaHRWYWx1ZUxhYmVsIj4KKyAgICA8dmFsdWU+aMO2amQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUzIiBuYW1lPSJwcm9wZXJ0eU9wYWNpdHlTbGlkZXIiPgorICAgIDx2YWx1ZT7DhG5kcmEgR2Vub21za2lubGlnaGV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1NCIgbmFtZT0iYnJvd3Nlck9wZW4iPgorICAgIDx2YWx1ZT7DlnBwbmEgYmzDpGRkcmFyZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU1IiBuYW1lPSJicm93c2VyQ2xvc2UiPgorICAgIDx2YWx1ZT5TdMOkbmcgYmzDpGRkcmFyZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU2IiBuYW1lPSJjb25uZWN0aW9uTG9zdE1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BbnNsdXRuaW5nZW4gdGlsbCBTZXJ2ZXJuIMOkciBmw7ZybG9yYWQuIER1IG3DpXN0ZSBsYWRkYSBvbSBBcHBsaWthdGlvbmVuIG9jaC9lbGxlciBrb2xsYSBkaW4gTsOkdHZlcmtzYW5zbHV0bmluZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU3IiBuYW1lPSI1NTciPgorICAgIDx2YWx1ZT5QZWthcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU4IiBuYW1lPSJzeW5jIG1lc3NhZ2UgaGVhZGVyIj4KKyAgICA8dmFsdWU+U3lua3JvbmlzZXJhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTkiIG5hbWU9IlN5bmNocm9uaXppbmcgbWVzc2FnZSI+CisgICAgPHZhbHVlPlN5bmtyb25pc2VyYXIgYW52w6RuZGFyZSwgdmFyIHbDpG5saWcgdsOkbnRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MCIgbmFtZT0iZXhwb3J0VG9TVkciPgorICAgIDx2YWx1ZT4mbHQ7dSZndDtMYWRkYSBuZXIgc29tIFNWRyZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYxIiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7TGFkZGEgbmVyIHNvbSBQTkcmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MiIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O0xhZGRhIG5lciBzb20gSlBHJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjMiIG5hbWU9ImV4cG9ydFRvSW1hZ2UiPgorICAgIDx2YWx1ZT4mbHQ7dSZndDtMYWRkYSBuZXIgc29tIFBERiZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY0IiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7TGFkZGEgbmVyIHNvbSBUSUYmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2NSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPlDDpW1pbm5lbHNlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjYiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5LYXRlZ29yaTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY3IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+UmVwZXRpdGlvbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY4IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+aW5nZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY5IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+TMOkZ2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MCIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkLDtnJqYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTcxIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+U2x1dGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MiIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPlRpdGVsOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzMiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5Lb21tZW50YXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NCIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkJqdWQgaW4gZm9sazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzUiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5EYWdsaWc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc2IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+TcOlbmF0bGlnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NyIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPsOFcmxpZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzgiIG5hbWU9ImFsZXJ0Ij4KKyAgICA8dmFsdWU+VGlkcHVua3RlbiBmw7ZyIG3DtnRldHMgc2x1dCBtw6VzdGUgdmFyYSBlZnRlciBkZXNzIGLDtnJqYW4hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3OSIgbmFtZT0iYWxlcnQiPgorICAgIDx2YWx1ZT5Mw6RnZyB0aWxsIGVuIFRpdGVsLCB0YWNrITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODAiIG5hbWU9IjU4MCI+CisgICAgPHZhbHVlPlJUTDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODEiIG5hbWU9IjU4MSI+CisgICAgPHZhbHVlPkFrdGl2ZXJhIGRldCBow6RyIG9tIGR1IHNrcml2ZXIgcMOlIGV0dCBow7ZnZXIgdGlsbCB2w6Ruc3Rlci1zcHLDpWsgKGludmVydGVyYWQgb3JkZsO2bGopPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MiIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT5EYXNoYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgzIiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPlNlIHDDpSBpbnNwZWxhZGUgTcO2dGVuIG9jaCBBdWRpdG9yaWVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4NCIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT5Nw7Z0ZSAtIFNrYXBhIGVuIGtvbmZlcmVucyBtZWQgNCAodXBwIHRpbGwgMTYpIEFudsOkbmRhcmUgJmx0O2JyJmd0OyBhbGxhIGtvbW1lciBhdHQgaGEgdGlsbGfDpW5nIHRpbGwgbGp1ZCArIHZpZGVvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODUiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+QXVkaXRvcml1bSAtIFNrYXBhIGVuIGtvbmZlcmVucyBtZWQgdXBwIHRpbGwgMjAwIGRlbHRhZ2FyZSZsdDtici8mZ3Q7RW5kYXN0IE1vZGVyYXRvcm4ga29tbWVyIGF0dCBoYSB0aWxsZ8OlbmcgdGlsbCBsanVkICsgdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg2IiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPlNrYXBhIGFudsOkbmRhcmUsIHJ1bSwgb3JnYW5pc2F0aW9uZXImbHQ7YnIvJmd0OyArIMOkbmRyYSBrb25maWd1cmF0aW9uZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg3IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5BbnbDpG5kYXJlIGkgZGV0IGjDpHIgUnVtbWV0IG51PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4OCIgbmFtZT0icm9vbSBBZG1pbmlzdHJhdGlvbiByb29tY2xpZW50cyBsaXN0Ij4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg5IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTAiIG5hbWU9InJvb20gQWRtaW5pc3RyYXRpb24gcm9vbWNsaWVudHMgbGlzdCI+CisgICAgPHZhbHVlPkQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkxIiBuYW1lPSJzd2Ygc3luYyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TGFkZGFyIERva3VtZW50LiBWw6RubGlnZW4gdsOkbnRhIHRpbGxzIGFsbGEga2xpZW50ZXIgw6RyIHN5bmtyb25pc2VyYWRlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTIiIG5hbWU9InVwbG9hZCBkaWFsb2ciPgorICAgIDx2YWx1ZT5VcHBsYWRkbmluZyBrbGFyLCBrb252ZXJ0ZXJhciBEb2t1bWVudCAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkzIiBuYW1lPSJ1cGxvYWQgZGlhbG9nIj4KKyAgICA8dmFsdWU+UMOlYsO2cmphIFVwcGxhZGRuaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NCIgbmFtZT0idXBsb2FkIGRpYWxvZyI+CisgICAgPHZhbHVlPkRpYWxvZyBmw7ZyIFVwcGxhZGRuaW5nIG9jaCBJbXBvcnRlcmluZy4gVmFyIHbDpG5saWcgdsOkbGogZW4gRmlsIGZyw6VuIGRpbiBIw6VyZHNraXZhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTUiIG5hbWU9InVwbG9hZCBEaWFsb2ciPgorICAgIDx2YWx1ZT5BdmJyeXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk2IiBuYW1lPSJ1cGxvYWQgRGlhbG9nIj4KKyAgICA8dmFsdWU+VsOkbGogRmlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NyIgbmFtZT0iYWRtaW5pc3RyYXRpb24gbmF2aWdhdGlvbiI+CisgICAgPHZhbHVlPkFuc2x1dG5pbmdhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTgiIG5hbWU9ImNvbmZhZG1pbiB2YWx1ZSBsaXN0Ij4KKyAgICA8dmFsdWU+VsOkcmRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5OSIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPlN0cmVhbWlkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwMCIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPkxvZ2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwMSIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPkFuc2x1dGVuIHNlZGFuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwMiIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPlJ1bTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDMiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5TcGFya2EgQW52w6RuZGFyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDQiIG5hbWU9ImtpY2sgdXNlciBjb25maXJtYXRpb24gZGlhbG9nIj4KKyAgICA8dmFsdWU+U3BhcmthIEFudsOkbmRhcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA1IiBuYW1lPSJraWNrIHVzZXIgY29uZmlybWF0aW9uIGRpYWxvZyI+CisgICAgPHZhbHVlPlZpbGwgZHUgdmVya2xpZ2VuIHNwYXJrYSBkZW4gaMOkciBLbGllbnRlbj8mbHQ7YnIvJmd0OyBEZXQgaMOkciBhdmzDpGdzbmFyIGVuZGFzdCBLbGllbnRlbiBmcsOlbiBkZXQgYWt0dWVsbGEgcnVtbWV0IG9jaCBnZXIgaG9ub20gbcO2amxpZ2hldCBhdHQgw6V0ZXJhbnNsdXRhIHNpZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA2IiBuYW1lPSJraWNrIHVzZXIgbWVzc2FnZSBkaWFsb2ciPgorICAgIDx2YWx1ZT5EaW4gc2Vzc2lvbiBoYXIgc3TDpG5ndHMgYXYgZW4gQWRtaW5pc3RyYXTDtnIgZWxsZXIgTW9kZXJhdG9yLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDciIG5hbWU9InVzZXJhbHRlcnNlbGZfcGhvbmUiPgorICAgIDx2YWx1ZT5UZWxlZm9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwOCIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+QW52w6RuZGFyZW4gw6RyIE1vZGVyYXRvciBpIGRldCBow6RyIHJ1bW1ldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDkiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPkFudsOkbmRhcmVuIGhhciB0aWxsw6V0ZWxzZSBhdHQgcml0YSBww6UgV2hpdGVib2FyZGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMCIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+U3RhcnRhIChvbSkgTGp1ZC9WaWRlbyBlbGxlciDDpG5kcmEgQW5vcmRuaW5nZW5zIEluc3TDpGxsbmluZ2FyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMSIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+VGlsbMOldCBkZW4gaMOkciBBbnbDpG5kYXJlbiBhdHQgcml0YSBww6UgV2hpdGVib2FyZGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMiIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+VGEgYm9ydCBtw7ZqbGlnaGV0ZW4gYXR0IHJpdGEgcMOlIFdoaXRlYm9hcmRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTMiIG5hbWU9ImNvbmZlcmVuY2VQYW5lbHMiPgorICAgIDx2YWx1ZT5BbnbDpG5kYXJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxNCIgbmFtZT0iY29uZmVyZW5jZVBhbmVscyI+CisgICAgPHZhbHVlPkZpbGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxNSIgbmFtZT0iY29uZmVyZW5jZVBhbmVscyI+CisgICAgPHZhbHVlPldoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE2IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+Q2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTciIG5hbWU9Im9yZ2FuaXphdGlvbiBjaG9vc2UgaW5mbyI+CisgICAgPHZhbHVlPkRpdHQga29udG8gw6RyIHRpbGxkZWxhdCBmbGVyYSBPcmdhbmlzYXRpb25lci4gVmFyIHbDpG5saWcgdsOkbGogZW4gZsO2ciBkZW4gaMOkciBTZXNzaW9uZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxOCIgbmFtZT0iZXJyb3IgbWVzc2FnZSByb29tIGZ1bGwiPgorICAgIDx2YWx1ZT5EZXQgaMOkciBydW1tZXQgw6RyIGZ1bGx0IGbDtnIgdGlsbGbDpGxsZXQuIFZhciB2w6RubGlnIGbDtnJzw7ZrIHDDpSBueXR0IHNlbmFyZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE5IiBuYW1lPSJyb29tdHlwZXMiPgorICAgIDx2YWx1ZT5UeXAgYXYgcnVtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyMCIgbmFtZT0iYXBwb2ludGVkX3Jvb20iPgorICAgIDx2YWx1ZT5UaWRzYm9rYXQgcnVtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyMSIgbmFtZT0ic2VydmVydGltZSI+CisgICAgPHZhbHVlPlNlcnZlcnRpZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjIiIG5hbWU9Imludl9yZW1pbmRlcl90ZW1wbGF0ZV9oZWFkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIC0gUMOlbWlubmVsc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIzIiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9mcm9tIj4KKyAgICA8dmFsdWU+TWVkZGVsYW5kZSBmcsOlbiBBbnbDpG5kYXJlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjQiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X21lc3NhZ2UiPgorICAgIDx2YWx1ZT5NZWRkZWxhbmRlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjUiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X2NsaWNrX3RleHQiPgorICAgIDx2YWx1ZT5LbGlja2EgcMOlIGRlbiBow6RyIGzDpG5rZW4gZsO2ciBhdHQgZGVsdGEgaSBNw7Z0ZXQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNiIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfY2xpY2tfdGV4dF9saW5rIj4KKyAgICA8dmFsdWU+S2xpY2thIGjDpHIgZsO2ciBhdHQgZ8OlIGluIGkgcnVtbWV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNyIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfY2xpY2tfdGV4dF9oZWxwIj4KKyAgICA8dmFsdWU+T20gZHUgaGFyIHByb2JsZW0gbWVkIGzDpG5rZW4sIHbDpG5saWdlbiBrb3BpZXJhIG9jaCBrbGlzdHJhIGluIGRldCBow6RyIGkgZGluIHdlYmJsw6RzYXJlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjgiIG5hbWU9ImJ0bl9zZWFyY2hfaW50ZXJuIj4KKyAgICA8dmFsdWU+U8O2ayBpbnRlcm50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyOSIgbmFtZT0iYnRuX3NlYXJjaF9leHRlcm4iPgorICAgIDx2YWx1ZT5leHRlcm5hIGFudsOkbmRhcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMwIiBuYW1lPSJsYmxfcHJlbmFtZSI+CisgICAgPHZhbHVlPmbDtnJuYW1uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzMSIgbmFtZT0ibGJsX25hbWUiPgorICAgIDx2YWx1ZT5uYW1uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzMiIgbmFtZT0ibGJsX2VtYWlsIj4KKyAgICA8dmFsdWU+RS1wb3N0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzMyIgbmFtZT0ibG9nb3V0Q29uZmlybV90aXRsZSI+CisgICAgPHZhbHVlPkJla3LDpGZ0YSB1dGxvZ2duaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNCIgbmFtZT0ibG9nb3V0Q29uZmlybV9zdXJlX3RvX2xvZ291dF9xdWVzdGlvbiI+CisgICAgPHZhbHVlPsOEciBkdSBzw6RrZXIgcMOlIGF0dCBkdSB2aWxsIGxvZ2dhIHV0PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzUiIG5hbWU9Im1haW4gbWVudSI+CisgICAgPHZhbHVlPsOFdGfDpHJkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM2IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RGVtbyBSdW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RGVtbyBUaWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM4IiBuYW1lPSJtZWV0aW5nIFRpbWVyIj4KKyAgICA8dmFsdWU+TcO2dGVzdGltZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM5IiBuYW1lPSJtZWV0aW5nIFRpbWVyIj4KKyAgICA8dmFsdWU+RGV0IGjDpHIgUnVtbWV0IMOkciBldHQgRGVtbyBSdW0uIEbDtnIgYXR0IGbDpSBib3J0IGRlbiBow6RyIHZhcm5pbmdlbiBzw6UgbcOlc3RlIGR1IGFudGluZ2VuIHNrYWZmYSBldHQgcHJpdmF0IG3DtnRlc3J1bSBlbGxlciBzw6R0dGEgdXBwIGVuIGVnZW4gU2VydmVyLiBEdSBrb21tZXIgYXR0IGxvZ2dhcyB1dCBhdXRvbWF0aXNrdCBvbTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQwIiBuYW1lPSJtZWV0aW5nIHJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5Nb2RlcmVyYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQxIiBuYW1lPSJtb2RlcmF0ZWQgcm9vbSB3YWl0aW5nIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5WYXIgdsOkbmxpZyB2w6RudGEgdGlsbHMgTW9kZXJhdG9ybiBoYXIgYW5zbHV0aWd0IHNpZyB0aWxsIFJ1bW1ldC4gTW9kZXJhdG9ybiBrYW4gYW50aW5nZW4gdmFyYSBlbiBMw6RyYXJlLCBBZG1pbiBlbGxlciBza2FwYXJlIGF2IGRldCBow6RyIFJ1bW1ldC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQyIiBuYW1lPSJlcnJvciBwb3B1cCI+CisgICAgPHZhbHVlPk9rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MyIgbmFtZT0id2luZG93IHNjcmVlbnNoYXJpbmciPgorICAgIDx2YWx1ZT5JbmtvbW1hbmRlIFNrw6RybWRlbG5pbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ0IiBuYW1lPSJ3aW5kb3cgc2NyZWVuIHNoYXJpbmciPgorICAgIDx2YWx1ZT5FbiBueSBTa8Okcm1kZWxuaW5nIHZpbGwgcMOlYsO2cmphcyBhdiBhbnbDpG5kYXJlbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ1IiBuYW1lPSJ3aW5kb3cgc2NyZWVuIHNoYXJpbmciPgorICAgIDx2YWx1ZT5Cw7ZyamEgRGVsYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDYiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+TMOkZ2cgVGlsbCBFdHQgTcO2dGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ3IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPk3DtnRlc3J1bTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDgiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QXVkaXRvcml1bTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDkiIG5hbWU9Im1haW4gbWVudSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+TW9kZXJlcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTAiIG5hbWU9Im1lbnUgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPk1vZGVyZXJhIEFudsOkbmRhcmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUxIiBuYW1lPSJtZW51IG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Nb2RlcmVyYSBSdW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUyIiBuYW1lPSJtb2RlcmF0b3Igb3JnIj4KKyAgICA8dmFsdWU+TTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTMiIG5hbWU9ImNvbmZpcm0gbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPlZpbGwgZHUgw6RuZHJhIGRlbiBow6RyIEFudsOkbmRhcmVuIHRpbGwgTW9kZXJhdG9yIGF2IGRlbiBPcmdhbmlzYXRpb25lbj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU0IiBuYW1lPSJlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VmFyIHbDpG5saWcgdsOkbGogZW4gT3JnYW5pc2F0aW9uIGbDtnJlIGR1IGbDtnJzw7ZrZXIgbMOkZ2dhIHRpbGwgZW4gQW52w6RuZGFyZSB0aWxsIGRlbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU1IiBuYW1lPSJjaG9vc2UgdXNlciB3aW5kb3ciPgorICAgIDx2YWx1ZT5PcmdhbmlzYXRpb24gLSBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU2IiBuYW1lPSJtb2RlcmF0b3Igb3JnIHVzZXJzIj4KKyAgICA8dmFsdWU+VmlsbCBkdSB2ZXJrbGlnZW4gdGEgYm9ydCBkZW4gaMOkciBBbnbDpG5kYXJlbiBmcsOlbiBPcmdhbmlzYXRpb25lbj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU3IiBuYW1lPSJvcmcgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkRlbiBow6RyIEFudsOkbmRhcmVuIMOkciBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU4IiBuYW1lPSJvcmcgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkRlbiBow6RyIEFudsOkbmRhcmVuIMOkciBpbnRlIE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTkiIG5hbWU9ImVycm9yIG1lc3NhZ2UgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPlZpbGwgZHUgdGEgYm9ydCBkZW4gaMOkciBBbnbDpG5kYXJlbiBzb20gTW9kZXJhdG9yIGbDtnIgZGVuIGjDpHIgT3JnYW5pc2F0aW9uZW4/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MCIgbmFtZT0ibW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkzDpGdnIHRpbGwgZWxsZXIgdGEgYm9ydCBBbnbDpG5kYXJlIGVsbGVyIFJ1bSBpbm9tIGRpbiBPcmdhbmlzYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYxIiBuYW1lPSJkZWxldGUgY29uZmlybSBxdWVzdGlvbiI+CisgICAgPHZhbHVlPlZpbGwgZHUgdmVya2xpZ2VuIHRhIGJvcnQgZGV0IGjDpHI/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MiIgbmFtZT0iZGVsZXRlIGNvbmZpcm0gcXVlc3Rpb24gdXNlciBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+VmlsbCBkdSB2ZXJrbGlnZW4gdGEgYm9ydCBkZW4gaMOkciBBbnbDpG5kYXJlbiBmcsOlbiBPcmdhbmlzYXRpb25lbj8gRHUga29tbWVyIGVuZGFzdCBhdHQgdGEgYm9ydCBrb3BwbGluZ2VuIG1lbGxhbiBBbnbDpG5kYXJlbiBvY2ggT3JnYW5pc2F0aW9uZW4sIGbDtnIgYXR0IHRhIGJvcnQgc2rDpGx2YSBBbnbDpG5kYXJlbiBzw6UgbcOlc3RlIGR1IGxvZ2dhIGluIHDDpSBBZG1pbmlzdHJhdGlvbnNwYW5lbGVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjMiIG5hbWU9ImVycm9yIG1lc3NhZ2Ugc2VsZiBkZWxldGluZyI+CisgICAgPHZhbHVlPkR1IGthbiBpbnRlIHRhIGJvcnQgZGluIGVnZW4gQW52w6RuZGFyZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY0IiBuYW1lPSJlcnJvciBtZXNzYWdlIGF1dGgiPgorICAgIDx2YWx1ZT5EZW4gaMOkciBNZXRvZGVuIGtyw6R2ZXIgZXR0IEFkbWluaXN0cmF0aW9uc2tvbnRvIGbDtnIgYXR0IGt1bm5hIMOlYmVyb3BhcyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY1IiBuYW1lPSJlcnJvciBtZXNzYWdlIFNPQVAiPgorICAgIDx2YWx1ZT5EZXQgZmlubnMgaW5nZW4gU2Vzc2lvbiBhc3NvY2llcmFkIG1lZCBkZXR0YSBJRC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY2IiBuYW1lPSJlcnJvciBtZXNzYWdlIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5EZXQgaMOkciDDpHIgZXR0IEFkbWluaXN0cmF0w7Zycy0gZWxsZXIgTW9kZXJhdG9ya29udG8uIER1IGthbiBlbmRhc3Qgw6RuZHJhIGRldCBow6RyIGtvbnRvdCB2aWEgQWRtaW5pc3RyYXTDtnJzcGFuZWxlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY3IiBuYW1lPSJlbWFpbCB2ZXJpZmljYXRpb24iPgorICAgIDx2YWx1ZT5WYXIgdsOkbmxpZyBrbGlja2EgcMOlIGbDtmxqYW5kZSBsw6RuayBlbGxlciBrbGlzdHJhIGluIGRlbiBpIGRpbiB3ZWJibMOkc2FyZXMgYWRyZXNzZsOkbHQgZsO2ciBhdHQgc2x1dGbDtnJhIHJlZ2lzdHJlcmluZ2VuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjgiIG5hbWU9ImVtYWlsIHZlcmlmaWNhdGlvbiI+CisgICAgPHZhbHVlPktsaWNrYSBow6RyIGbDtnIgYXR0IHZlcmlmaWVyYSBkaW4gRS1wb3N0YWRyZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2OSIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPkluZ2VuIEFudsOkbmRhcmUgaGl0dGFkZXMgbWVkIGRldHRhIEhhc2guPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3MCIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPkRlbiBow6RyIEFudsOkbmRhcmVuIMOkciByZWRhbiBha3RpdmVyYWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3MSIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPkR1IGhhciBha3RpdmVyYXQgZGl0dCBrb250byE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjcyIiBuYW1lPSJlcnJvck1lc3NhZ2VfVXNlckFjdGl2YXRpb25TZXJ2bGV0IFtBY3RpdmF0ZVVzZXJdIj4KKyAgICA8dmFsdWU+TG9nZ2EgaW4gbnU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjczIiBuYW1lPSJsb2dpbkVycm9yTWVzc2FnZSA9IHVzZXIgd2FzIG5vdCBhY3RpdmF0ZWQiPgorICAgIDx2YWx1ZT5EaXR0IGtvbnRvIMOkciBpbnRlIGFrdGl2ZXJhdC4gQW52w6RuZCBsw6Rua2VuIGkgZGV0IGUtcG9zdG1lZGRlbGFuZGUgZHUgZmljayBuw6RyIGR1IHJlZ2lzdHJlcmFkZSBkaWcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3NCIgbmFtZT0icmVnaXN0ZXIgdmVyaWZpY2F0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EdSBoYXIgZnJhbWfDpW5nc3Jpa3QgcmVnaXN0cmVyYXQgZGlnLiBWaSBoYXIgc2tpY2thdCBldHQgZS1wb3N0bWVkZGVsYW5kZSB0aWxsIGRpZyBtZWQgZGluIHZlcmlmaWthdGlvbnNrb2QuIFbDpG5saWdlbiBrb2xsYSBkaW4gSW5rb3JnLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzUiIG5hbWU9InBhcnRpY2lwYW50cyBwYW5lbCI+CisgICAgPHZhbHVlPlRhIGJvcnQgZGVuIGjDpHIgYW52w6RuZGFyZW4gc29tIE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzYiIG5hbWU9InBhcnRpY2lwYW50cyBwYW5lbCI+CisgICAgPHZhbHVlPkJldmlsamEgTW9kZXJhdG9yLXLDpHR0aWdoZXRlciB0aWxsIGRlbiBow6RyIEFudsOkbmRhcmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3NyIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QW52w6RuZGFyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzgiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlRpbGxnw6VuZyB0aWxsIFdoaXRlYm9hcmRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzkiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPk1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODAiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPk1vZGVyZXJpbmc6IFbDpG5saWdlbiB2w6RsaiBlbiBBbnbDpG5kYXJlIGZyw6VuIExpc3RhbiBmw7ZyIGF0dCBiZXZpbGphIGhvbm9tIHRpbGx0csOkZGUgdGlsbCBXaGl0ZWJvYXJkLCBNb2RlcmVyaW5nIGVsbGVyIFZpZGVvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODEiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkRlbiBow6RyIEFudsOkbmRhcmVuIMOkciByZWRhbiBNb2RlcmF0b3IsIHPDpSBoYW4gaGFyIGF1dG9tYXRpc2t0IHLDpHR0IGF0dCByaXRhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODIiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCBlcnJvciI+CisgICAgPHZhbHVlPkRldCBow6RyIMOkciBkdSEgRHUga2FuIGludGUgdGEgYm9ydCBNb2RlcmF0b3ItcsOkdHRpZ2hldGVybmEgZnLDpW4gZGlnIHNqw6Rsdi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgzIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5UaWxsw6V0IGRlbiBow6RyIEFudsOkbmRhcmVuIGF0dCBQdWJsaWNlcmEgTGp1ZC9WaWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODQiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlRhIGJvcnQgTGp1ZC9WaWRlbyBmcsOlbiBkZW4gaMOkciBBbnbDpG5kYXJlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODUiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkphZyBza3VsbGUgdmlsamEgZsOlIE1vZGVyZXJpbmcgZsO2ciBkZXQgaMOkciBydW1tZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg2IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5KYWcgc2t1bGxlIHZpbGphIHJpdGEgcMOlIFdoaXRlYm9hcmRlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODciIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkphZyBza3VsbGUgdmlsamEgZGVsYSBManVkL1ZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4OCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+RHUgw6RyIE1vZGVyYXRvciBmw7ZyIGRldCBow6RyIFJ1bW1ldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODkiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkR1IGhhciB0aWxsw6V0ZWxzZSBhdHQgcml0YSBww6UgV2hpdGVib2FyZGVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5MCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+RHUgaGFyIHRpbGzDpXRlbHNlIGF0dCBwdWJsaWNlcmEgQXVkaW8vVmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkxIiBuYW1lPSJlcnJvcnR5cGUiPgorICAgIDx2YWx1ZT5NZWRkZWxhbmRlIHRpbGwgTW9kZXJhdG9ybjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTIiIG5hbWU9ImFwcGx5IGZvciBtb2QgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFudsOkbmRhcmVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5MyIgbmFtZT0iYXBwbHkgZm9yIG1vZCBtZXNzYWdlIj4KKyAgICA8dmFsdWU+dmlsbCBoYSBNb2RlcmF0b3ItcsOkdHRpZ2hldGVyLiBBbnbDpG5kIFN0YXR1c2lrb25lcm5hIGkgQW52w6RuZGFybGlzdGFuIGbDtnIgYXR0IGRlbGEgdXQgb2NoIHRhIGJvcnQgTW9kZXJhdG9yLXLDpHR0aWdoZXRlci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk0IiBuYW1lPSJhcHBseSBmb3Igd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPnZpbGwgcml0YSBww6UgV2hpdGVib2FyZGVuLiBBbnbDpG5kIFN0YXR1c2lrb25lcm5hIGkgQW52w6RuZGFybGlzdGFuIGbDtnIgYXR0IGRlbGEgdXQgb2NoIHRhIGJvcnQgcsOkdHRpZ2hldGVyIGF0dCByaXRhIHDDpSBXaGl0ZWJvYXJkZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5NSIgbmFtZT0iNjk1Ij4KKyAgICA8dmFsdWU+dmlsbCBwdWJsaWNlcmEgTGp1ZC9WaWRlby4gQW52w6RuZCBTdGF0dXNpa29uZXJuYSBpIEFudsOkbmRhcmxpc3RhbiBmw7ZyIGF0dCBkZWxhIHV0IG9jaCB0YSBib3J0IHLDpHR0aWdoZXRlciBhdHQgcHVibGljZXJhIExqdWQvVmlkZW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5NiIgbmFtZT0ibW9kZXJhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RHUgbcOlc3RlIHbDpG50YSB0aWxscyBlbiBNb2RlcmF0b3IgaGFyIHN0aWdpdCBpbiBpIHJ1bW1ldC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk3IiBuYW1lPSJjYWxlbmRhciBidXR0b24iPgorICAgIDx2YWx1ZT5BdmJyeXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk4IiBuYW1lPSJjYWxlbmRhciBidXR0b24iPgorICAgIDx2YWx1ZT5TcGFyYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTkiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPkRhZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDAiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPk3DpW5hZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDEiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPsOFcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDIiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5VcGxvYWQgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDMiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5BZGQgRm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwNCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlJlZnJlc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA1IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+VHJhc2ggKERyYWcgYW5kIERyb3AgaXRlbSBoZXJlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDYiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5NeSBGaWxlcyAoSG9tZSBEcml2ZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA3IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+Um9vbSBGaWxlcyAoUHVibGljIERyaXZlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDgiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5BZGQgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDkiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5BZGQgRm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkRlbGV0ZSBGb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzExIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+RWRpdCBOYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPk5ldyBGb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzEzIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIEl0ZW0/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxNCIgbmFtZT0idXNlciBhZG1pbiI+CisgICAgPHZhbHVlPlNlYXJjaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTUiIG5hbWU9InVzZXIgYWRtaW4iPgorICAgIDx2YWx1ZT5TZWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE2IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+T3BlbiBEb2N1bWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTciIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5TaG93IGFsbCBGaWxlcyAoVHJlZSBWaWV3KTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTgiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5DbG9zZSBEb2N1bWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTkiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5EZWxldGUgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjAiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIG5vdCBhbGxvd2VkIHRvIGRyYXcgYW55dGhpbmcgb24gdGhlIFdoaXRlYm9hcmQuIFlvdSBoYXZlIHRvIGJlY29tZSBNb2RlcmF0b3Igb3IgYXQgbGVhc3QgZ2V0IHRoZSBSaWdodCB0byBlZGl0IFdoaXRlYm9hcmQuIFlvdSBtYXkgYXNrIGEgTW9kZXJhdG9yIHRvIGdpdmUgeW91IHRoYXQgcmlnaHQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyMSIgbmFtZT0icHJvcGVydHkgcGFuZWwiPgorICAgIDx2YWx1ZT5Eb2N1bWVudCBQcm9wZXJ0aWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyMiIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+U3RhcnQgQ2xpZW50IChleHRlcm5hbCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIzIiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5TdGFydCBDbGllbnQgKEhUVFApPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNCIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+QSB1c2VyIHdhbnQgdG8gc2hhcmUgaGlzIHNjcmVlbi4gRG8geW91IHdhbnQgdG8gc2VlIGl0PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjUiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPllvdSBhcmUgY3VycmVudGx5IHNoYXJpbmcgeW91ciBEZXNrdG9wLiBGb3Igc3RvcHBpbmcgdGhlIFNoYXJpbmcgU2Vzc2lvbiBwbGVhc2UgaGl0IHRoZSBTdG9wIGJ1dHRvbiBpbiB0aGUgU2hhcmluZyBDbGllbnQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNiIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+U2hhcmluZyBTZXNzaW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNyIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+WW91IGFyZSBhbHJlYWR5IHNoYXJpbmcgeW91ciBkZXNrdG9wITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+RGVza3RvcCBWaWV3ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI5IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkV4aXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMwIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkRlc2t0b3AgU2hhcmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5DbGljayBTdGFydCB0byBwdWJsaXNoIHlvdXIgc2NyZWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdGFydCBTaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdG9wIFNoYXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM0IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlNlbGVjdCB5b3VyIHNjcmVlbiBhcmVhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzUiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+Q2hhbmdlIHdpZHRoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5UaGUgU2hhcmVyIGhhcyBmaW5pc2hlZCB0aGlzIHNlc3Npb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5DaGFuZ2UgaGVpZ2h0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczOCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5YLU9mZnNldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzkiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+WS1PZmZzZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQwIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPldpZHRoOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDEiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+SGVpZ2h0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDIiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+Q29ubmVjdGlvbiB3YXMgY2xvc2VkIGJ5IFNlcnZlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDMiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NCIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5TdGFydCBFeHRlcm5hbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDUiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+SWYgeW91IGNsb3NlIHRoaXMgc2Vzc2lvbiBjb21wbGV0ZWx5IHlvdSBhcmUgbm90IGFibGUgdG8gcmVzdGFydCB0aGUgdmlld2VyIGZvciB0aGlzIHNlc3Npb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NiIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5Db25maXJtIENsb3NpbmcgVmlld2VyIFNlc3Npb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ3IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPlNoYXJlIFNjcmVlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDgiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+UmVjb3JkIFNlc3Npb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ5IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+Q28tQnJvd3Npbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUwIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+T29vcHMsIC4uLiBGaXJlZm94IG9uIFdpbmRvd3MgZG9lcyBub3Qgc2hvdyBjbGVhciBDby1Ccm93c2luZy4gUGxlYXNlIHVzZSBhbm90aGVyIEJyb3dzZXIgZm9yIHVzaW5nIHRoZSBDby1Ccm93c2luZyBmZWF0dXJlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTEiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5QcmV2aW91czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTIiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5OZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MyIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPlJlbG9hZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTQiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5Ib21lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1NSIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPkxvYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU2IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+QWRkIHRoaXMgd2Vic2l0ZSBhcyBEZWZhdWx0IHdlYnNpdGUgdG8geW91ciBQcm9maWxlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTciIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5UZXN0IFNldHVwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1OCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPkNoZWNrIHlvdSBNaWNyb3Bob25lIGFuZCBDYW1lcmEgc2V0dXAgYmVmb3JlIHlvdSBlbnRlciBhIHJvb20gYnkgcmVjb3JkaW5nIHNvbWUgc2Vjb25kcy4gWW91IGNhbiB0aGVuIHJlcGxheSB5b3VyIHJlY29yZGluZyB0byBjaGVjayB5b3VyIHZvaWNlIGFuZCBwaWN0dXJlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTkiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5Eb24ndCBzaG93IHRoaXMgdGVzdCBhbnltb3JlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjEiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5TdGFydCBDb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MiIgbmFtZT0iZWRpdCB2aWRlbyBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkRvIG5vdCBhc2sgYWdhaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYzIiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+UkVDPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlBMQVk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY1IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+WW91IG1heSBwcm9jZWVkIHdpdGhvdXQgdGVzdGluZyBpZiB5b3UgZG8gbm90IHBsYW4gdG8gcHVibGlzaCB5b3VyIHZvaWNlIG9yIHBpY3R1cmUuIFBhcnRpY2lwYW50cyB3aXRob3V0IEF1ZGlvIG9yIFZpZGVvIGNhbiBzdGlsbCB1c2UgdGhlIFdoaXRlYm9hcmQsIHNoYXJlIHRoZWlyIERlc2t0b3Agb3Igd3JpdGUgQ2hhdCBtZXNzYWdlcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY2IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+U1RPUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjciIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5MZXZlbC1NZXRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjgiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5QcmVzcyBTdGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjkiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5TdGFydCBDb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MCIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPlN0YXJ0IEV2ZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MSIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPkNob29zZSBSb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MiIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPkNoZWNrIFNldHVwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MyIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPlN0YXJ0IENvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc0IiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+SG93IHRvIGNvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc1IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+U3RhcnQgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NiIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPkRvIG5vdCBzaG93IEF1ZGlvIC8gVmlkZW8gVGVzdCAoUmVjb3JkaW5nKSBiZWZvcmUgZW50ZXJpbmcgYSBDb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NyIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPlB1YmxpYyBSb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzgiIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT5QdWJsaWMgUm9vbXMgYXJlIGFjY2Vzc2libGUgZm9yIGFsbCBVc2Vycy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc5IiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+UHJpdmF0ZSBSb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODAiIG5hbWU9IlByaXZhdGUgUm9vbXMiPgorICAgIDx2YWx1ZT5Qcml2YXRlIFJvb21zIGFyZSBvbmx5IGFjY2Vzc2libGUgZm9yIHVzZXJzIG9mIHRoZSBzYW1lIG9yZ2FuaXphdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgxIiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+TXkgUm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgyIiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+Um9vbXMgaW4gdGhpcyBzZWN0aW9uIGFyZSBjcmVhdGVkIGZvciBwZXJzb25hbCB1c2FnZS4gVGhlcmUgYXJlIHNvbWUgc3RhbmRhcmQgcm9vbXMgcGx1cyB0aGUgb25lcyB0aGF0IGFyZSBjcmVhdGVkIHRocm91Z2ggdGhlIGNhbGVuZGFyIGFuZCBoYXZlIGEgc3RhcnQgYW5kIGFuIGVuZCBkYXRlLiBUaGUgcm9vbXMgY3JlYXRlZCB2aWEgdGhlIGNhbGVuZGFyIGFyZSBvbmx5IGxpc3RlZCBpbiB0aGlzIHNlY3Rpb24gYXMgbG9uZyBhcyB0aGV5IGFyZSB2YWxpZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgzIiBuYW1lPSJyZXN0cmljdGVkIHJvb20iPgorICAgIDx2YWx1ZT5Zb3UgaGF2ZSB0byBiZSBtb2RlcmF0b3IgdG8gZG8gdGhpcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg0IiBuYW1lPSJtZW51IG9wdGlvbiI+CisgICAgPHZhbHVlPkFwcGx5IGZvciBtb2RlcmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NSIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT5BcHBseSBmb3Igd2hpdGVib2FyZCBhY2Nlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg2IiBuYW1lPSJtZW51IG9wdGlvbiI+CisgICAgPHZhbHVlPkFwcGx5IGZvciBjYW1lcmEvbWljcm9waG9uZSBhY2Nlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg3IiBuYW1lPSJlcnJvciBtZXNzYWdlIHNvYXAgc2VjdXJlIGxvZ2luIj4KKyAgICA8dmFsdWU+VGhpcyBTZXNzaW9uIEhhc2ggd2FzIGFscmVhZHkgdXNlZC4gWW91IGNhbm5vdCB1c2UgaXQgdHdpY2UuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4OCIgbmFtZT0iZGFzaGJvYXJkIGJ1dHRvbiI+CisgICAgPHZhbHVlPlNUQVJUPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4OSIgbmFtZT0iZXhpdCBjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+RVhJVDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTAiIG5hbWU9ImNvbmZlcmVuY2UgdmlldyI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBleGl0PyBZb3UgbWlnaHQgc2hvdWxkIGNsZWFyIHVwbG9hZGVkIGRvY3VtZW50cywgd2hpdGVib2FyZCBhbmQgdGhlIGNoYXQgaGlzdG9yeS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkxIiBuYW1lPSJjb25mZXJlbmNlIHZpZXciPgorICAgIDx2YWx1ZT5FeGl0IGNvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkyIiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT5Sb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTMiIG5hbWU9Im1haW4gbWVudSI+CisgICAgPHZhbHVlPkNob29zZSBhIHJvb20gZm9yIGEgbWVldGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTQiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgYW4gdW5zYXZlZCBFdmVudCBpbiB0aGUgQ2FsZW5kYXIuIFBsZWFzZSBlaXRoZXIgc2F2ZSBpdCBvciByZW1vdmUgaXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5NSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5QbGVhc2UgYWRkIGF0IGxlYXN0IG9uZSBhdHRlbmRlZSBmb3IgeW91ciBtZWV0aW5nITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTYiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEV2ZW50PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTciIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+V2FybmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTgiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QWRkIEV2ZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5OSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5EYXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAwIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPldlZWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAxIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPk1vbnRoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMiIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5EZXNjcmlwdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDMiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QXR0ZW5kZWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FLCB5b3VyIFdlYiBDb25mZXJlbmNpbmcgUGxhdGZvcm0uIEVpdGhlciBmb2xsb3cgdGhlIEluc3RydWN0aW9ucywgcHJlc3MgdGhlIHN0YXJ0IGJ1dHRvbiB0byBzdGFydCB0byBjb25mZXJlbmNlIGltbWVkaWF0ZWxseSBvciB5b3UgZ290byB0aGUgQ2FsZW5kYXIgYW5kIHNldCB1cCBhIENvbmZlcmVuY2UgZm9yIHRoZSBmdXR1cmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNSIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+UGxhbiBhIE1lZXRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA2IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VG8gc2V0IHVwIGEgY29uZmVyZW5jZSB5b3UgY2FuIGFkZCBhIG5ldyBFdmVudCBpbiB0aGUgQ2FsZW5kYXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNyIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPk5lZWQgaGVscD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA4IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+UmVzdHJpY3RlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDkiIG5hbWU9Imx6Y2FsZW5kZXIiPgorICAgIDx2YWx1ZT5TZWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEwIiBuYW1lPSJsemNhbGVuZGVyIj4KKyAgICA8dmFsdWU+QWRkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMSIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIFVzZXIgc2VsZWN0ZWQuIFBsZWFzZSBzZWxlY3QgYW4gaXRlbSBmcm9tIHRoZSBsaXN0IGZpcnN0IGFuZCB0aGVuIGhpdCBhZGQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMiIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPkFkZCBBdHRlbmRlZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTMiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5TYXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxNCIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPkRlbGV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTUiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5FdmVudCBEZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkRlZmF1bHQgTW9kZXJhdG9yczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5TdXBlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTgiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTkiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyMCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkUtTWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjEiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5BZGQgbmV3IGRlZmF1bHQgTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyMiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPklzIFN1cGVyIE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjMiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5JZiB0aGUgUm9vbSBpcyBtb2RlcmF0ZWQsIFVzZXIgd2l0aCBMZXZlbCBNb2RlcmF0b3Igb3IgQWRtaW5pc3RyYXRvciBhcmUgYXV0b21hdGljYWxseSBNb2RlcmF0b3IgaWYgdGhleSBlbnRlciB0aGUgUm9vbS4gSWYgeW91IGRvbid0IHdhbnQgdG8gc3BlY2lmeSB0aGF0IGFuZCBvbmx5IHdhbnQgYSBjZXJ0YWluIFVzZXIgdG8gYmVjb21lIE1vZGVyYXRvciB1c2UgdGhlIERlZmF1bHQgTW9kZXJhdG9yIG9wdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI0IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+QSBTdXBlciBNb2RlcmF0b3IgaXMgYWx3YXlzIGEgTW9kZXJhdG9yIHdoZW4gaGUgZW50ZXJzIGEgUm9vbSwgYW5kIG5vYm9keSBjYW4gcmVtb3ZlIHRoZSBNb2RlcmF0aW9uIEZsYWcgZnJvbSBoaW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI1IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+QXBwbHkgU3VwZXItTW9kZXJhdGlvbiB0byBVc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPlJlbW92ZSBTdXBlciBNb2RlcmF0aW9uIGZyb20gVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyOCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPklmIHlvdSBhZGQgYW4gT3JnYW5pemF0aW9uIHRvIHRoZSByb29tIG9ubHkgdXNlcnMgb2YgdGhhdCBPcmdhbml6YXRpb24gaGF2ZSBhY2Nlc3MgdG8gaXQgKFRoaXMgaXMgb25seSB2YWxpZCBpZiB0aGUgaXNQdWJsaWMgZmxhZyBpcyBzZXQgdG8gZmFsc2UhKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjkiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5Nb2RlcmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzMCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkxpbWl0YXRpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzMSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPk9yZ2FuaXphdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzIiIG5hbWU9ImNvbmZpcm0gYWN0aW9uIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzMiIG5hbWU9ImNvbmZpcm0gZGVsZXRlIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEl0ZW0/IFlvdSBoYXZlIHRvIHByZXNzIHRoZSBzYXZlIGJ1dHRvbiB0byBzdG9yZSB0aGUgY2hhbmdlcyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM0IiBuYW1lPSJ1c2VyIGNob29zZSBlcnJvciI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIFVzZXIgc2VsZWN0ZWQuIFBsZWFzZSBzZWxlY3QgZmlyc3QgYmVmb3JlIHlvdSBhZGQgaXQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkFkZCBuZXcgRGVmYXVsdCBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM2IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RG8geW91IHdhbnQgdG8gYWRkIHRoZSBTdXBlciBNb2RlcmF0aW9uIEZsYWcgZm9yIHRoaXMgVXNlcj8gQSBTdXBlciBNb2RlcmF0b3IgaXMgbm90IG9ubHkgTW9kZXJhdG9yIG9mIGEgUm9vbSwgYnV0IGFsc28gbm8gb3RoZXIgTW9kZXJhdG9yIGNhbiByZW1vdmUgdGhlIE1vZGVyYXRpb24gRmxhZyBmb3IgdGhpcyBVc2VyLiBZb3UgbmVlZCB0byBzYXZlIHRoZSBSb29tIE9iamVjdCB0byBzYXZlIHRoZXNlIHNldHRpbmdzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EbyB5b3Ugd2FudCB0byByZW1vdmUgdGhlIFN1cGVyIE1vZGVyYXRpb24gRmxhZyBmb3IgdGhpcyBVc2VyPyBZb3UgbmVlZCB0byBzYXZlIHRoZSBSb29tIE9iamVjdCB0byBzYXZlIHRoZXNlIHNldHRpbmdzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzgiIG5hbWU9InN1cGVyIG1vZGVyYXRvciI+CisgICAgPHZhbHVlPlRoaXMgVXNlciBpcyBhIFN1cGVyLU1vZGVyYXRvci4gWW91IGNhbm5vdCByZW1vdmUgdGhlIE1vZGVyYXRpb24gZmxhZyBmcm9tIGEgU3VwZXItTW9kZXJhdG9yITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzkiIG5hbWU9ImNvbmZpcm0gZGVsZXRlIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZpbGUvRm9sZGVyPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDAiIG5hbWU9ImNvbmZpcm0gZGVsZXRlIj4KKyAgICA8dmFsdWU+RGVsZXRlIEZpbGUvRm9sZGVyPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDEiIG5hbWU9InNhbHV0YXRpb24iPgorICAgIDx2YWx1ZT5NcnMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0MiIgbmFtZT0ic2FsdXRhdGlvbiI+CisgICAgPHZhbHVlPkRyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDMiIG5hbWU9InByb3BlcnR5IHBhbmVsIHdoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5Qcm9wZXJ0aWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NCIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPlNob3cgbW91c2UgcG9zaXRpb24gdG8gdmlld2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDUiIG5hbWU9InB1Ymxpc2ggb3B0aW9uIj4KKyAgICA8dmFsdWU+U2hhcmUgQXVkaW8gd2l0aCBTSVAgQXBwbGV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NiIgbmFtZT0icHVibGlzaCBvcHRpb24iPgorICAgIDx2YWx1ZT5TaGFyZSBBdWRpbyB3aXRoIFNJUCBhbmQgVmlkZW8gd2l0aCBGbGFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDciIG5hbWU9ImRvY3VtZW50IHBhbmVsIj4KKyAgICA8dmFsdWU+RnVsbC1GaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ4IiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5WaWV3IFNjcmVlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDkiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlRoZSB1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MCIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+d2FudHMgdG8gc2hhcmUgaXRzIHNjcmVlbi4gRG8geW91IHdhbnQgdG8gc2VlIGl0PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTEiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNsb3NlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MiIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPlpvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUzIiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+VGhlIFNlc3Npb24gd2FzIGNsb3NlZCBieSB0aGUgc2hhcmluZyBVc2VyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTQiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5QYXVzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTUiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5OZXcgU2NyZWVuIFNoYXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU2IiBuYW1lPSJwcmVzZW50ZXIgbWluaSBpY29uIj4KKyAgICA8dmFsdWU+TWluaW1pemU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU3IiBuYW1lPSJwcmVzZW50ZXIgbWluaSBpY29uIj4KKyAgICA8dmFsdWU+TWF4aW1pemU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU4IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5WaWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTkiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlJlY29yZGluZyBUaW1lbGluZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjAiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk15IFJlY29yZGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYxIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5QdWJsaWMgUmVjb3JkaW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjIiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkluZm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYzIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TGVuZ3RoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RGF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjYiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UExBWTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjgiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk1haW4gLSBWaWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjkiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzAiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPllvdSBtYXkgcmVjb3JkIGFuZCBzaGFyZSB5b3VyIHNjcmVlbiBhdCB0aGUgc2FtZSB0aW1lLiBUbyBlbmFibGUgb3RoZXJzIHRvIHNlZSB5b3VyIHNjcmVlbiBqdXN0IGhpdCB0aGUgc3RhcnQgYnV0dG9uIG9uIHRoZSB0b3AuIFRvIG9ubHkgcmVjb3JkIHRoZSBTZXNzaW9uIGl0IGlzIHN1ZmZpY2llbnQgdG8gY2xpY2sgc3RhcnQgcmVjb3JkaW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzEiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlN0YXJ0IFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzIiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlN0b3AgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3MyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RG93bmxvYWQgdGhlIEZMVi1GaWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3NCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+Um9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzUiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlBsYXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TdG9wPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3NyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+VXNlciBoYXMgbWljcm9waG9uZSBvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U3RvcCBTaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3OSIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5BbGxvdyBVc2VyIFF1ZXN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODAiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+VHVybiB0aGlzIG9mZiB0byBwcmV2ZW50IHRoYXQgYW55IHVzZXIgaXMgZGlzdHVyYmluZyB5b3UgaW4gdGhpcyByb29tLiBFZmZlY3QgaXMgdGhhdCB0aGUgQnV0dG9uIHRvIGFzayBmb3IgTW9kZXJhdGlvbiAoIkkgaGF2ZSBhIHF1ZXN0aW9uIikgaXMgbm90IHZpc2libGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MSIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5SaWdodHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgyIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Eb3dubG9hZCBhcyBBVkk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgzIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5GTFY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg0IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5BVkk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg1IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5SYXcgU2NyZWVudmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5BdWRpbyBvbmx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+VGhlIGhhdmUgYmVlbiBlcnJvcnMgd2hpbGUgcHJvY2Vzc2luZyB0aGUgUmVjb3JkaW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODgiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlRoZSBSZWNvcmRpbmcgaXMgbm90IHlldCByZWFkeSBmb3Igd2F0Y2hpbmcuIFBsZWFzZSByZXRyeSBpbiBhIGNvdXBsZSBvZiBtaW51dGVzIGFnYWluLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODkiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkxvZzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkwIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5SZWNvcmRlciBNZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+T2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkyIiBuYW1lPSJzaXAgYXBwbGV0Ij4KKyAgICA8dmFsdWU+U0lQIEFwcGxldCBpcyBub3QgUmVhZHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkzIiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+U0lQLUFjY291bnQgU2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk0IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+U0lQIHNldHRpbmdzIGZvciBlYWNoIHVzZXIuIFlvdSBjYW4gdHVybiBvbiBvciBvZmYgU0lQIHZpYSB0aGUgQWRtaW5pc3RyYXRpb24gJmd0OyBDb25maWd1cmF0aW9uIChLZXk6IGVuYWJsZV9zaXApLiBUaGUgU0lQIGRhdGEgZm9yIGVhY2ggdXNlciBzaG91bGQgYmUgY3JlYXRlZCBhdXRvbWF0aWNhbGx5LiBZb3UgY2FuIHJlLWNyZWF0ZSB0aGUgZGF0YSBieSBjaGVja2luZyAiUmUtZ2VuZXJhdGUgU0lQIERhdGEiPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NSIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNJUC1Vc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NiIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNpcC1QYXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NyIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNpcC1BdXRoLUlkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5OCIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIExvZ2luIHRvIHRoZSBTSVAgR2F0ZXdheSBoYXMgZmFpbGVkLiBZb3Ugc2hvdWxkIGNoZWNrIHRoZSBhdXRoZW50aWZpY2F0aW9uIGRhdGEgb2YgeW91ciBTSVAtUHJvdmlkZXIgYW5kIHRoZSBTSVAtQWNjb3VudCBEYXRhIGZvciBlYWNoIFVzZXIuIEFzIEFkbWluaXN0cmF0b3IgeW91IGFyZSBzdGlsbCBhYmxlIHRvIGxvZ2luIGFuZCBjaGVjayB0aGUgQ29uZmlndXJhdGlvbi4gQXMgVXNlciBvciBNb2RlcmF0b3IgeW91IHdpbGwgYmUgYmxvY2tlZCBmcm9tIGFueSBpbnRlcmFjdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk5IiBuYW1lPSJzaXAgc3RhdHVzIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgTG9naW4gdG8gdGhlIFNJUCBHYXRld2F5IGhhcyBmYWlsZWQuIENvbnRhY3QgeW91ciBTZXJ2aWNlIFRlYW0hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwMCIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TG9nZ2luZyBpbiB0byBTSVAtR2F0ZXdheSAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAxIiBuYW1lPSJzaXAgc3RhdHVzIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Mb2dnaW5nIGluIHRvIFNJUC1HYXRld2F5IC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDIiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlNob3cgTG9nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwMyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TG9nIG1lc3NhZ2VzIGZyb20gcG9zdCByZWNvcmRlciBwcm9jZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwNCIgbmFtZT0ic2lwIGxvZ2luIj4KKyAgICA8dmFsdWU+U0lQLUFwcGxldCBNZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwNSIgbmFtZT0ic2lwIGxvZ2luIj4KKyAgICA8dmFsdWU+VGhlIFNJUC1BcHBsZXQgaXMgbm90IHJlYWR5LiBBY2NlcHQgdGhlIEFwcGxldCBwbGVhc2UgYW5kIGNsaWNrIG9rITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDYiIG5hbWU9Im1vZGVyYXRvciBwb3AgdXAiPgorICAgIDx2YWx1ZT5HZXQgTW9kZXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDciIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5TYXZlIEFwcG9pbnRtZW50IENoYW5nZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA4IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhlIGFwcG9pbnRlbWVudCBoYXMgYmVlbiBjaGFuZ2VkLiBEbyB5b3Ugd2FudCB0byBzYXZlIHRob3NlIGNoYW5nZXM/ICZsdDtici8mZ3Q7Jmx0O2JyLyZndDtBbGwgYXR0ZW5kZWVzIG9mIHRoZSBhcHBvaW50bWVudCB3aWxsIHJlY2VpdmUgYSBFTWFpbCB3aXRoIHRoZSB1cGRhdGVkIGRhdGUgYW5kIHRpbWUgKGRlcGVuZGluZyBvbiB0aGUgbm90aWZpY2F0aW9uIHR5cGUgb2YgdGhpcyBhcHBvaW50bWVudCkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwOSIgbmFtZT0iZmx2IHJlY29yZGVyIGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UbyBhY2Nlc3Mgb3RoZXIgcmVjb3JkaW5ncyB5b3UgaGF2ZSB0byBsb2dpbiB0aGUgJEFQUF9OQU1FIEFwcGxpY2F0aW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTAiIG5hbWU9ImludGVydmlldyB2aWRlbyBwb2QiPgorICAgIDx2YWx1ZT5DaG9vc2UgdGhlIFVzZXIgZm9yIHRoaXMgVmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTExIiBuYW1lPSJpbnRlcnZpZXcgdmlkZW8gY2hvb3NlIHVzZXIiPgorICAgIDx2YWx1ZT5BdmFpbGFibGUgVXNlcnMgZm9yIHRoaXMgUG9kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMiIgbmFtZT0iaW50ZXJ2aWV3IGluZm8iPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGEgTW9kZXJhdG9yIGluIHRoaXMgSW50ZXJ2aWV3LiBZb3UgY2FuIGRlY2lkZSB3aG8gaXMgc3BlYWtpbmcgaW4gdGhpcyBpbnRlcnZpZXcgYW5kIHlvdSBjYW4gc3RhcnQgLyBzdG9wIHRoZSByZWNvcmRpbmcgb2YgdGhlIFNlc3Npb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMyIgbmFtZT0iaW50ZXJ2aWV3IGJ1dHRvbiByZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TdGFydCBSZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE0IiBuYW1lPSJpbnRlcnZpZXcgYnV0dG9uIHJlY29yZGluZyI+CisgICAgPHZhbHVlPlN0b3AgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxNSIgbmFtZT0iaW50ZXJ2aWV3IGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgcmVjb3JkaW5nIG9mIHRoZSBJbnRlcnZpZXcgaXMgYWxyZWFkeSBzdGFydGVkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTYiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIHJlY29yZGluZyBpcyBhbHJlYWR5IHN0b3BwZWQgb3Igbm90IGJlZW4gc3RhcnRlZCB5ZXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxNyIgbmFtZT0iaW50ZXJ2aWV3IHJlY29yZGluZyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIHJlY29yZGluZyBmb3IgdGhpcyBpbnRlcnZpZXcgaXMgYWxyZWFkeSBzdGFydGVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTgiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxOSIgbmFtZT0iaW50ZXJ2aWV3IGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgcG9zdC1wcm9jZXNzaW5nIG9mIGFuIGludGVydmlldyB0YWtlcyA1IG1pbnV0ZXMgcGVyIDEgbWludXRlIGludGVydmlldy4gVGhlIGN1cnJlbnQgcHJvZ3Jlc3Mgb2YgdGhlIGludGVydmlldyBwb3N0LXByb2Nlc3NpbmcgdHJhbnNjb2RpbmcgaXM6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyMCIgbmFtZT0ic2lwIGNyZWF0aW9uIj4KKyAgICA8dmFsdWU+WW91IGhhdmUgdG8gZW50ZXIgeW91ciBwYXNzd29yZCBhZ2FpbiB0byBhdXRvIGNyZWF0ZSB0aGUgU0lQIERhdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIxIiBuYW1lPSJzaXAgY3JlYXRpb24iPgorICAgIDx2YWx1ZT5SZS1nZW5lcmF0ZSBTSVAgRGF0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjIiIG5hbWU9ImZpbGVleHBsb3JlciI+CisgICAgPHZhbHVlPllvdSBjYW5ub3QgbW92ZSB0aGlzIGZpbGUgb3IgZm9sZGVyIGludG8gaXRzIG93biBzdWIgZm9sZGVyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjMiIG5hbWU9ImZpbGUgZXhwbG9yZXIgIj4KKyAgICA8dmFsdWU+SG9tZSBkcml2ZSBzaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlB1YmxpYyBkcml2ZSBzaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNSIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPkxpY2Vuc2UgU2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI2IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+WW91IGNhbiBlaXRoZXIgYmluZCB0aGUgdXNlciB0byBhIGV4cGlyZSBEYXRlIG9yIHRvIGEgbWF4aW11bSBudW1iZXIgb2YgbWludXRlcyB3aGVuIHlvdSBlbmFibGUgbGljZW5zaW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjciIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5DaGVjayBsaWNlbnNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyOCIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPkZsYXRyYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyOSIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPkV4cGlyZSBkYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMCIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPlNlY29uZHMgbGVmdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzEiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5Ub3RhbCB0aW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91ciBMaWNlbnNlIGhhcyBleHBpcmVkLiBZb3UgbmVlZCB0byBidXkgbmV3IG1pbnV0ZXMgKFBheS1wZXItbWludXRlKSBvciBhIHZvbHVtZSBmbGF0cmF0ZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMzIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5DbGljayBhbmQgYnV5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzNCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+VGltZSBMZWZ0IG9uIHlvdXIgYWNjb3VudDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM1IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Vc2VyIExpY2Vuc2UgSW5mbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzYiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkluZm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM3IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5DbG9zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzgiIG5hbWU9ImxpY2Vuc2UtaW5mbyI+CisgICAgPHZhbHVlPllvdXIgbGljZW5zZSBoYXMgZXhwaXJlZC4gWW91IG5lZWQgZWl0aGVyIHRvIGJ1eSBhIG1pbnV0ZSBwYWNrYWdlIChQYXktcGVyLW1pbnV0ZSkgb3IgYSB2b2x1bWUgZmxhdHJhdGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzOSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+TGljZW5zZSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDAiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdSBjYW4gZWl0aGVyIGJ1eSBtaW51dGVzIHRvIG1ha2UgV2ViLUNvbmZlcmVuY2luZyAoUGF5LXBlci1taW51dGUpLiZsdDtici8mZ3Q7Jmx0O2JyLyZndDsgT3IgeW91IGJ1eSBhIHZvbHVtZSBmbGF0cmF0ZSBhYm91dCAzLTEyIG1vbnRocy4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7U2VuZGluZyBpbnZpdGF0aW9ucyAoZGlyZWN0IGxpbmtzIGludG8gQ29uZmVyZW5jZSBSb29tcykgb3IgY3JlYXRpbmcgY29uZmVyZW5jZSBSb29tcyB2aWEgdGhlIENhbGVuZGFyIHdpdGggZXh0ZXJuYWwgVXNlcnMgaXMgb25seSBhbGxvd2VkIHdpdGggYSB2b2x1bWUgZmxhdHJhdGUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDYwIE1pbnV0ZXMgOSw5OSBFVVJPICgxNiBDZW50IHBlciBNaW51dGUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDUgaG91cnMgMTksOTkgRVVSTyAoNiBDZW50IHBlciBtaW51dGUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDMgbW9udGggZm9yIDI5LDk5IEVVUk8gKDksOTkgRXVybyBwZXIgTW9udGgpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDYgbW9udGggZm9yIDM5LDk5IEVVUk8gKDYsNjYgRXVybyBwZXIgbW9udGgpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+UGF5LXBlci1taW51dGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ2IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Wb2x1bWUgZmxhdHJhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ3IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3UgaGF2ZSB1bmxpbWl0ZWQgTGljZW5zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDgiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdXIgbGljZW5zZSB3aWxsIGV4cGlyZSBhdDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ5IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3UgYm91Z2h0IFBheS1wZXItbWludXRlLiBZb3Ugc3RpbGwgaGF2ZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUwIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5CdXkgbmV3IGNyZWRpdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUxIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5XYW50IHlvdXIgb3duIFNlcnZlcj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUyIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3Ugd291bGQgbGlrZSB0byBoYXZlICRBUFBfTkFNRSBpbnN0YWxsZWQgb24geW91ciBTZXJ2ZXIgb3IgaW50ZWdyYXRlZCBpbnRvIHlvdXIgTW9vZGxlLCBTdWdhckNSTSwgV2Vic2l0ZSBvciBJbnRyYW5ldD8gUHJpemluZ3Mgc3RhcnQgYXQgNTAwIEV1cm8gcGVyIEluc3RhbGxhdGlvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUzIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5PciBzZW5kIHVzIGEgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTQiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkFuc3dlciB0bzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU1IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5NZXNzYWdlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTYiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlNlbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU3IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5DbGljayBoZXJlIHRvIGdldCBjb250YWN0IEluZm8gYW5kIFByaXppbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1OCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q3JlZGl0IENhcmQgRGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTkiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkZpcnN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjAiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkxhc3RuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2MSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q3JlZGl0IENhcmQgVHlwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjIiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlZJU0EgQ2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjMiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPk1hc3RlckNhcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY0IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5EaXNjb3ZlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjUiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkFtZXJpY2FuIEV4cHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY2IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DcmVkaXQgQ2FyZCBOdW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY3IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5FeHBpcmF0aW9uIERhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY4IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DYXJkIFZlcmlmaWNhdGlvbiBOdW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY5IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5CaWxsaW5nIEFkZHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTcwIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5BZGRyZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q2l0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzMiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNvdW50cnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc0IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdGF0ZSAoT25seSBVUyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc1IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5aSVA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc2IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5BbW91bnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc3IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdWJtaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc4IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdGVwIDE6ICRBUFBfTkFNRSAtIFBheW1lbnQgRm9ybTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzkiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkVNYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q2xpY2sgIkNoZWNrIG91dCB3aXRoIFBheXBhbCIgdG8gcGF5LiZsdDtici8mZ3Q7IFBheXBhbCBhY2NlcHRzIFZJU0EsIE1hc3RlckNhcmQsIERpc2NvdmVyIG9yIEFtZXJpY2FuIEV4cHJlc3MuICZsdDtici8mZ3Q7SXQgZG9lcyBub3QgcmVxdWlyZSB0byBzaWduIHVwIHdpdGggUGF5cGFsLiAmbHQ7YnIvJmd0O0NpdGl6ZW5zIGZyb20gR2VybWFueSBjYW4gYWxzbyBwYXkgd2l0aCBkaXJlY3QgZGViaXQgKFBlciBMYXN0c2NocmlmdC1FaW56dWcpLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODEiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlRoYW5rIHlvdSBmb3IgYnV5aW5nICRBUFBfTkFNRS4gJmx0O2JyLyZndDsgJmx0O2JyLyZndDsgQXMgc29vbiBhcyB3ZSByZWNlaXZlZCB0aGUgcGF5bWVudCB5b3VyIGFjY291bnQgd2lsbCBiZSB1cGRhdGVkLiZsdDtici8mZ3Q7IFlvdSB3aWxsIHJlY2VpdmUgYW4gRU1haWwgd2l0aCB5b3VyIGludm9pY2UgYXMgUERGLiZsdDtici8mZ3Q7WW91IGNhbiBhbHNvIGNoZWNrIGN1cnJlbnQgYW5kIHBhc3QgdHJhbnNhY3Rpb25zIGluIHlvdXIgcHJvZmlsZSBzZXR0aW5ncy4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7Jmx0O2JyLyZndDtZb3UgY2FuIGNsb3NlIHRoaXMgYnJvd3NlciB3aW5kb3cvdGFiIG5vdyBhbmQgcmV0dXJuIHRvICRBUFBfTkFNRS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgyIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdWJtaXQgYW5kIEJ1eSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgzIiBuYW1lPSJwYXltZW50LWZyb20iPgorICAgIDx2YWx1ZT5DbGljayBhbmQgQnV5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODQiIG5hbWU9InBheW1lbnQtZnJvbSI+CisgICAgPHZhbHVlPlN0ZXAgMzogJEFQUF9OQU1FIFBheW1lbnQgLSBDaGVjayBvcmRlciBhbmQgYnV5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODUiIG5hbWU9InBheW1lbnQtZnJvbSI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg2IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5QYXltZW50IHJlY2VpdmVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODciIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPkhpLDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODgiIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPldlIGhhdmUgcmVjZWl2ZWQgeW91ciBwYXltZW50LiBZb3VyIHVzZXIgcHJvZmlsZSBpcyB1cGRhdGVkIG5vdy4gU2VlIGF0dGFjaGVkIHlvdXIgSW52b2ljZS4gVGhlIEludm9pY2UgYW5kIGFsbCBwYXN0IEludm9pY2UgY2FuIGFsc28gYmUgZG93bmxvYWRlZCBpbiB5b3VyIHVzZXIgcHJvZmlsZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg5IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5UaGFuayB5b3UgZm9yIHVzaW5nICRBUFBfTkFNRSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkwIiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5QYXltZW50IFJlY2VpdmVkICRBUFBfTkFNRSAtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MSIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPlBheW1lbnQgYW5kIFRyYW5zYWN0aW9uIFN0YXR1czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTIiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5UcmFuc2NhdGlvbiBIYXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MyIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPk1pbnV0ZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk0IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+TW9udGhzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NSIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPkVVUjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTYiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TdGF0dXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk3IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+SW52b2ljZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTgiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk5IiBuYW1lPSJlcnJvci1saWNlbnNlLWZsYXQiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0byBidXkgYSB2b2x1bWUgZmxhdHJhdGUgdG8gYmUgYWJsZSB0byBzZW5kIGludml0YXRpb25zIG9yIGNyZWF0ZSBtZWV0aW5ncyB2aWEgdGhlIGNhbGVuZGFyLiBXaXRoIFBheS1wZXItbWludXRlIGl0IGlzIG9ubHkgcG9zc2libGUgZm9yIHlvdSB0byBhY2Nlc3MgJEFQUF9OQU1FLiBZb3UgY2Fubm90IGFsbG93IDN0aCBQYXJ0aWVzIHRvIGFjY2VzcyBhIE1lZXRpbmcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDAiIG5hbWU9ImVycm9yIHVzZXIiPgorICAgIDx2YWx1ZT5UaGlzIEVtYWlsIGlzIGFscmVhZHkgdXNlZCBieSBhbm90aGVyIFVzZXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDEiIG5hbWU9InJvb20tYWRtaW4iPgorICAgIDx2YWx1ZT5TSVAtU2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwMiIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlRoZSBDb25mZXJlbmNlIE51bWJlciBhbmQgUElOIGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB2aWEgdGhlIE9wZW5YRyBSUEMtR2F0ZXdheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAzIiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+U0lQIE51bWJlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA0IiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+UElOPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDUiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5DbGVhciBvYmplY3RzIG9uIGN1cnJlbnQgc2xpZGUgb25seSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNiIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPk9ubHkgdGhlIFVSTCBlbnRlcmVkIGluIHRoZSBTdGF0dXMgYmFyIGlzIHNlbmQgdG8gcGFydGljaXBhbnRzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TWFrZSBUZWFtLVJvb21zIFtCcmVha291dCBzZXNzaW9uXTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2hvb3NlIHVzZXJzIGZvciBhIG5ldyBUZWFtLVJvb20hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIGNob29zZSB1c2VycyBoZXJlIGFuZCBjcmVhdGUgYSBuZXcgQ29uZmVyZW5jZSBSb29tICgiVGVhbSBSb29tIikgZm9yIHRoZW0uIFRoZSBjaG9zZW4gdXNlcnMgd2lsbCBhdXRvbWF0aWNhbGx5IHN3aXRjaCB0byB0aGUgbmV3IFRlYW0tUm9vbSBvciBnZXQgYSBub3RpZmljYXRpb24uIFRlYW0tUm9vbSBNb2RlcmF0b3JzIHdpbGwgZ2V0IGFkZGl0aW9uYWxseSBhIGxpc3Qgb2YgY3VycmVudCByb29tcyBzbyB0aGF0IHRoZXkgY2FuIHN3aXRjaCB0byBlYWNoIHJvb20gaWYgdGhlcmUgYXJlIGlzIG5lZWQgZm9yIGEgTW9kZXJhdG9yLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VXNlcm5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkxvZ2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJzIGZvciB0aGUgbmV3IFRlYW0tUm9vbTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNyZWF0ZSBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2hvb3NlIGF0IGxlYXN0IG9uZSB1c2VyIGZvciB0aGUgVGVhbS1Sb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+QWRkIHVzZXIgdG8gdGVhbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+UmVtb3ZlIHVzZXIgZnJvbSBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXIgaXMgVGVhbS1Sb29tIE1vZGVyYXRvciAoSGUgaXMgYWJsZSB0byBtYW5hZ2UgVGVhbS1Sb29tcyBhbmQgdXNlcnMgb2YgdGhlIFRlYW0tUm9vbSBjYW4gYXNrIGhpbSB0byBjb21lIGluc2lkZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlJvb210eXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5JZiB5b3UgY2hlY2sgIkZvcmNlIHVzZXIgdG8gc3dpdGNoIHRvIG5ldyBUZWFtLVJvb20iIGFsbCBjaG9zZW4gdXNlcnMgd2lsbCBhdXRvbWF0aWNhbGx5IHN3aXRjaCB0byB0aGUgbmV3bHkgY3JlYXRlZCBUZWFtLVJvb20uIE90aGVyd2lzZSB0aGV5IGdldCBhIG5vdGlmaWNhdGlvbiB3aXRoIGEgYnV0dG9uIHRoYXQgdGhleSAmbHQ7aSZndDtjYW4mbHQ7L2kmZ3Q7IHN3aXRjaCB0byB0aGUgbmV3IHJvb20uIFRlYW0tTW9kZXJhdG9ycyBhbHdheXMgaGF2ZSB0aGUgZnJlZSBjaG9pY2UgdG8gbWFuYWdlIHRoZSBUZWFtLVJvb21zIGFuZCBzd2l0Y2ggYmV0d2VlbiB0aGVtLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TWFuYWdlIFRlYW0tUm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPllvdSBjYW4gc3dpdGNoIGhlcmUgYmV0d2VlbiBhbGwgVGVhbS1Sb29tcyB0aGF0IHlvdSBhcmUgYXNzaWduZWQgYXMgVGVhbS1Sb29tIE1vZGVyYXRvci4gVXNlcnMgaW5zaWRlIHRoZSBUZWFtLVJvb20gY2FuIHNlbmQgeW91IGEgbWVzc2FnZSwgZm9yIGV4YW1wbGUgdG8gYXNrIHlvdSB0byBjb21lIHRvIHRoZWlyIHJvb20gYW5kIGhlbHAgdGhlbS4gWW91IGNhbiBhbHNvIHRlcm1pbmF0ZSB0aGUgVGVhbS1Sb29tIGFuZCBhbGwgVXNlcnMgd2lsbCBiZSBsb2dnZWQgb3V0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Rm9yY2UgdXNlciB0byBzd2l0Y2ggdG8gbmV3IFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q3JlYXRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJzIGF2YWlsYWJsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+QWRkIGEgdXNlciB3aXRoIHRoZSBwbHVzIGZyb20gdGhlIGxlZnQgb3IgcmVtb3ZlIGl0IHdpdGggdGhlIGNyb3NzIGZyb20gdGhlIHJpZ2h0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MSkgVGVhbS1Sb29tIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4yKSBBZGQgdXNlcnMgdG8gdGhlIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVhbS1Sb29tIE5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2hhbmdlIHRvIHRoZSBSb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Td2l0Y2ggdG8gdGhpcyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlcm1pbmF0ZSBUZWFtLVJvb20gYW5kIGxvZ291dCBhbGwgVXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk5ldyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGEgbmV3IFRlYW0tUm9vbSBhdmFpbGFibGUgZm9yIHlvdS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlN3aXRjaCB0byBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW0tUm9vbSBBY3Rpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIHJlLW9wZW4gdGhpcyB3aW5kb3cgdmlhIHRoZSBtYWluIG1lbnUgaW4gdGhlICJBY3Rpb25zIiBzZWN0aW9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U2VuZCBtZXNzYWdlIHRvIFRlYW0tUm9vbSBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk5ldyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGEgbmV3IFRlYW0tUm9vbSBhdmFpbGFibGUuIFlvdSBjYW4gc3dpdGNoIHRvIHRoYXQgUm9vbS4gVGVhbS1Sb29tcyBhcmUgbGlrZSAiV29ya2dyb3VwcyIgd2l0aCBhZGRpdGlvbmFsbHkgcG9zc2liaWxpdGllcyB0byBhc2sgdGhlIFRlYW0tUm9vbSBNb2RlcmF0b3IgZm9yIGhlbHAuIFlvdXIgVGVhbS1Sb29tcyBhcmUgYWxzbyBhdmFpbGFibGUgaW4gdGhlICJNeSBNZWV0aW5ncyIgc2VjdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlN3aXRjaCB0byBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNyZWF0ZWQgYnk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb20gbmFtZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0OSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoaXMgV2luZG93IHdpbGwgc3RheSBvcGVuIGV2ZW4gaWYgeW91IGxlYXZlIHRoZSByb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VXNlcnMgZm9yIHRoaXMgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4zKSBPdGhlciBUZWFtLVJvb21zIHRoYXQgeW91IGNvdWxkIHN3aXRjaCB0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U2VuZCBhIG1lc3NhZ2UgdG8gdGhlIFRlYW0tUm9vbSBNb2RlcmF0b3JzLiBGb3IgZXhhbXBsZSBpZiB5b3UgbmVlZCBoZWxwIGluIE1vZGVyYXRpbmcgdGhlIFJvb20gb3IgaWYgeW91IGhhdmUgYSBxdWVzdGlvbiBhYm91dCB0aGUgdG9waWMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5TZW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4yKSBVc2VycyB0aGF0IGFyZSBpbnZpdGVkIHRvIHRoaXMgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5JcyBUZWFtLVJvb20gTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVzZSBhcmUgYWxsIHVzZXJzIHRoYXQgdGhlIG1vZGVyYXRvciBoYXMgaW52aXRlZCB0byB0aGlzIFRlYW0tUm9vbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1NyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIFRlYW0tTW9kZXJhdG9yIGxvZ2dlZCBpbiBhdCB0aGUgbW9tZW50ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGEgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+UGxlYXNlIGhlbHAgdXMsIHdlIGhhdmUgYSBwcm9ibGVtIGluIG91ciBUZWFtLVJvb20hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5BIHVzZXIgZnJvbSBhIFRlYW0tUm9vbSByZXF1ZXN0cyB5b3VyIGhlbHAuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb20gcmVxdWVzdCBmb3IgaGVscDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TWVzc2FnZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2MyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkZyb206PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGN1cnJlbnRseSBub3QgaW4gYW55IFRlYW0tUm9vbS4gQnV0IHlvdSBjYW4gc3dpdGNoIGhlcmUgdG8gYWxsIFRlYW0tUm9vbXMgdGhhdCB5b3UgaGF2ZSBhY2Nlc3MgdG8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjUiIG5hbWU9ImJhY2t1cENvbnRlbnQiPgorICAgIDx2YWx1ZT5CYWNrdXAgdGhlIFN5c3RlbS4gVGhlIEJhY2t1cCBpbmNsdWRlcyBhbGwgVXNlciBnZW5lcmF0ZWQgZGF0YS4gVGhlIGNvbmZpZ3VyYXRpb24gaXMgbm90IGluY2x1ZGVkIGFzIHdlbGwgYXMgdGhlIGxhbmd1YWdlIGxhYmVscy4gQmVjYXVzZSB0aG9zZSB2YWx1ZXMgYXJlIGltcG9ydGVkIHdpdGggdGhlIFN5c3RlbSBJbnN0YWxsZXIuIFRvIHVwZGF0ZSB5b3VyIFN5c3RlbSwgZXhwb3J0IHlvdXIgb2xkIHN5c3RlbSAoMSkgcmUtaW5zdGFsbCBpbnRvIGEgbmV3IGRhdGFiYXNlIHRoZSBuZXcgcGFja2FnZSAoMikgYW5kIGltcG9ydCB0aGUgQmFja3VwIGZpbGUgYWdhaW4gKDMpLiBUaGUgQmFja3VwIHNob3VsZCBiZSBpbXBvcnRlZCBiZWZvcmUgZ2VuZXJhdGluZyBkYXRhIGluIHRoZSBuZXdseSBpbnN0YWxsZWQgc3lzdGVtLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY2IiBuYW1lPSJiYWNrdXBDb250ZW50Ij4KKyAgICA8dmFsdWU+U3lzdGVtIEJhY2t1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY3IiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT5BbGxvdyB1c2VyIHRvIHNoYXJlIFNjcmVlbi9SZWNvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2OCIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+RGVueSB1c2VyIHRvIHNoYXJlIFNjcmVlbi9SZWNvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2OSIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+VXNlciBpcyBNb2RlcmF0b3IsIGhlIGNhbiBkbyBhbnl0aGluZyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3MCIgbmFtZT0iYXBwbHkgZm9yIHNjcmVlbi9yZWNvcmRpbmciPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIHNoYXJlL3JlY29yZCBzY3JlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzEiIG5hbWU9Im1vZGVyYXRpb24gbWluaSBpY29ucyI+CisgICAgPHZhbHVlPllvdSBhcmUgYWxsb3dlZCB0byBzaGFyZS9yZWNvcmQgc2NyZWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzIiIG5hbWU9Im1vZGVyYXRpb24gbWluaSBpY29ucyI+CisgICAgPHZhbHVlPkFwcGx5IGZvciByaWdodCB0byBzaGFyZS9yZWNvcmQgc2NyZWVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDczIiBuYW1lPSJtb2RlcmF0aW9uIG1pbmkgaWNvbnMgY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPkFsbG93L0RlbnkgcmlnaHQgdG8gc2hhcmUvcmVjb3JkIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3NCIgbmFtZT0ic291bmQgaWNvbiI+CisgICAgPHZhbHVlPlR1cm4gc291bmQgb2ZmPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzUiIG5hbWU9InNvdW5kIGljb24iPgorICAgIDx2YWx1ZT5UdXJuIHNvdW5kIG9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzYiIG5hbWU9InJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5BdWRpbyBvbmx5IHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3NyIgbmFtZT0icm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlR1cm4gdGhpcyBGbGFnIG9uIGFuZCB0aGUgdXNlcnMgd2lsbCBoYXZlIG9ubHkgdGhlIEF1ZGlvLU9wdGlvbiBhbmQgbm8gVmlkZW8gaW4gYSBjb25mZXJlbmNlIHJvb20uIFRoaXMgY2FuIGJ5IGdvb2QgdG8gc2F2ZSBiYW5kd2lkdGguPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzgiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFsbG93IFJlbW90ZSBDb250cm9sIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzkiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkRlbnkgUmVtb3RlIENvbnRyb2wgKER1cmluZyBTY3JlZW4gU2hhcmluZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MCIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QXBwbHkgZm9yIHJpZ2h0IHRvIFJlbW90ZSBDb250cm9sIFNjcmVlbiAoRHVyaW5nIFNjcmVlbiBTaGFyaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgxIiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGFsbG93ZWQgdG8gUmVtb3RlIENvbnRyb2wgU2NyZWVuIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODIiIG5hbWU9ImFwcGx5IGZvciByZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gcmVtb3RlIGNvbnRyb2wgc2NyZWVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgzIiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Vc2VyIGlzIE1vZGVyYXRvciwgaGUgY2FuIGRvIGFueXRoaW5nISBbUmVtb3RlIERlc2t0b3AgQ29udHJvbF08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4NCIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QWxsb3cvRGVueSByaWdodCB0byBSZW1vdGUgQ29udHJvbCBTY3JlZW4gKER1cmluZyBTY3JlZW4gU2hhcmluZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4NSIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+MSkgWW91ciBQQyB0byByZW1vdGUgUEM6IFRvIGNvcHkgYW5kIHBhc3RlIHRleHQgZnJvbSB5b3VyIGNsaXBib2FyZCBpbnRvIHRoZSByZW1vdGUgY29udHJvbGxlZCBzY3JlZW4sIGNsaWNrIG9uIHRoZSBzY3JlZW4sIHRoZW4gcmlnaHQgY2xpY2sgaW4gdGhlIHRleHQgZmllbGQgYW5kIGNob29zZSAiSW5zZXJ0IiBmcm9tIHRoZSBjb250ZXh0IChyaWdodCBjbGljaykgbWVudS4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7MikgRnJvbSByZW1vdGUgUEMgdG8geW91ciBQQzogVG8gY29weSB0ZXh0IGZyb20gdGhlIHJlbW90ZSBQQyB0byB5b3VyIFBDJ3MgY2xpcGJvYXJkLCBoaWdobGlnaHQgdGhlIHRleHQgd2l0aCB0aGUgbW91c2Ugb24gdGhlIHJlbW90ZSBzY3JlZW4sIHRoZW4gcmlnaHQtY2xpY2sgb24gdGhlIHJlbW90ZSBzY3JlZW4gYW5kIGNob29zZSAmbHQ7aSZndDtDb3B5IGhpZ2hsaWdodGVkIHRleHQmbHQ7L2kmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODYiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNvcHkgYW5kIFBhc3RlIHRleHQgZnJvbSB5b3VyIFBDIHRvIHJlbW90ZSBQQyBhbmQgdmljZS12ZXJzYS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4NyIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+Q29weSBoaWdobGlnaHRlZCB0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODgiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkhvdyB0byBjb3B5IG4gcGFzdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4OSIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+UXVhbGl0eSBvZiB0aGUgU2NyZWVuU2hhcmU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTAiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPlZlcnkgaGlnaCBRdWFsaXR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTEiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPkhpZ2ggUXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkyIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5NZWRpdW0gUXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkzIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5Mb3cgUXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk0IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPmVuX1VTPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTUiIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+ZGVfREU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NiIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5LZXlib2FyZDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NyIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5DbG9zZSBXZWJpbmFyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk4IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPlRoZSBXZWJpbmFyIGlzIGFscmVhZHkgY2xvc2VkLCB5b3Ugd2lsbCBiZSByZWRpcmVjdGVkIHRvIHNvbWUgaW50ZXJlc3Rpbmcgb2ZmZXJpbmdzIGluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTkiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+Q2xvc2UgUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAwIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPkV4aXQgVVJMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDEiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+Um9vbSB0ZXJtaW5hdGlvbiBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAyIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPklmIHRoZSByb29tIGlzIGNsb3NlZCB1c2VycyB3aWxsIGJlIHJlZGlyZWN0ZWQgdG8gdGhlIGV4aXQgVVJMLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAzIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkxkYXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA1IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNiIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5Db25maWcgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA3IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkxkYXAgQ29uZmlnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDgiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA5IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkVuYWJsZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JbnNlcnRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTExIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkluc2VydGVkIGJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTIiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+VXBkYXRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEzIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPlVwZGF0ZWQgYnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5UaGUgY29uZmlnIGZpbGVzIGFyZSBpbiB0aGUgZm9sZGVyIHdlYmFwcHMvb3Blbm1lZXRpbmdzL2NvbmYuIFlvdSBuZWVkIHRvIG1hbnVhbGx5IHVwbG9hZCB0aGUgZmlsZXMgdG8gdGhpcyBmb2xkZXIuIENoYW5nZXMgdG8gdGhlIGNvbmZpZyBmaWxlIGFyZSBpbW1lZGlhdGVseSBvbmxpbmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTUiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+Q29uZmlnIGZpbGUgbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE2IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPklmIHlvdSBlbmFibGUgIkFkZCBEb21haW4gdG8gdXNlcm5hbWUiIHRoZSB2YWx1ZSBvZiB0aGUgZmllbGQgImRvbWFpbiIgaXMgYWRkZWQgdG8gZWFjaCBsb2dpbiB0aGF0IHRoZSB1c2VyIGVudGVycyBpbiB0aGUgbG9naW4gYm94LiBUaGlzIGlzIHVzZWZ1bCBpZiB0aGUgTG9naW4gaW4gdGhlIExkYXAgaXMgc3RvcmVkIGluY2x1ZGluZyB0aGUgZG9tYWluIG5hbWUuIEV4YW1wbGU6IFVzZXIgZW50ZXJzICJoYW5zIiBkb21haW4gaXMgc3BlY2lmaWVkIGFzICJsb2NhbGhvc3QuY29tIiwgbG9naW4gdGhhdCBpcyB2ZXJpZmllZCBhZ2FpbnN0IExkYXAgaXM6IGhhbnNAbG9jYWxob3N0LmNvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE3IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkFkZCBEb21haW4gdG8gdXNlcm5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExOCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5Eb21haW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExOSIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5JbnNlcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMCIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5Db3B5IGhpZ2hsaWdodGVkIHRleHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMSIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5SZW1vdGUgQ2xpcGJvYXJkIFRleHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMiIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5TaG93IHJlbW90ZSBDbGlwYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMyIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+RG8gbm90IHNob3cgYWdhaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNCIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+Q29weSB0ZXh0IGhlcmUgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjUiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPllvdSBuZWVkIHRoZSByaWdodCB0byByZW1vdGUgY29udHJvbCAob3IgdGhlIG1vZGVyYXRpb24pIHRvIGNvcHkgYW5kIHBhc3RlIHRleHQgdG8gb3IgZnJvbSB0aGUgcmVtb3RlIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNiIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+RWRpdCBkZWZhdWx0IHNldHRpbmdzIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI3IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5EbyBub3Qgc2hvdyBpbmZvIGJveCBpbiBSZW1vdGUgQ29udHJvbCBhYm91dCBDb3B5IGFuZCBQYXN0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI4IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPlNhdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyOSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5SZW1vdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMSIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkludml0ZSB1c2VyIHRvIGNvbmZlcmVuY2Ugcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMyIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+Q2hvb3NlIGEgY29uZmVyZW5jZSByb29tLiBUaGUgaW52aXRlZCB1c2VyIHdpbGwgZ2V0IGEgbWVzc2FnZSB3aXRoIHlvdXIgbmFtZSBhbmQgYSBsaW5rIHRvIHRoZSByb29tLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMzIiBuYW1lPSJjaGF0IHVzZXIiPgorICAgIDx2YWx1ZT5Db25uZWN0ZWQgc2luY2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzQiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5FbnRlciByb29tIGFmdGVyIHNlbmRpbmcgaW52aXRhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM1IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+SW52aXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzYiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5NZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzciIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGludml0ZSB5b3UgdG8gdGhlIGNvbmZlcmVuY2Ugcm9vbTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzOCIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkludml0ZSBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzkiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5TZW5kIEludml0YXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0MCIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPmRpZCAmbHQ7YiZndDtub3QmbHQ7L2ImZ3Q7IGFjY2VwdCB5b3VyIGludml0YXRpb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDEiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5BY2NlcHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0MiIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkRlbnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0MyIgbmFtZT0idXNlciBwcm9maWxlIj4KKyAgICA8dmFsdWU+VGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0NCIgbmFtZT0iYXBwb2ludG1lbnQgbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+RXZlbnQgRGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ1IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDYiIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPkRlc2NyaXB0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDciIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPkNyZWF0ZWQgYnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0OCIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlRpbWVab25lIE1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0OSIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPkNoZWNrICJUaW1lWm9uZSBNZXNzYWdlIiB0byBnaXZlIHVzZXJzIGEgbWVzc2FnZSBuZXh0IHRpbWUgdGhleSBsb2dpbiB0byB1cGRhdGUgdGhlaXIgcHJvZmlsZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MCIgbmFtZT0idGltZSB6b25lIHVwZGF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+UGxlYXNlIGNoZWNrIHRoZSB0aW1lIHpvbmUgaW4geW91ciB1c2VyIHByb2ZpbGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTEiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPk5ldyAkQVBQX05BTUUgY29uZmVyZW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MiIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGV0YWlsczombHQ7YnIvJmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUzIiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TdGFydDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NCIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RW5kOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU1IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DaGFuZ2VkICRBUFBfTkFNRSBjb25mZXJlbmNlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU2IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Pcmdhbml6ZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTciIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkNhbmNlbGVkICRBUFBfTkFNRSBjb25mZXJlbmNlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU4IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgY29uZmVyZW5jZSBSZW1pbmRlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1OSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkNvbW11bml0eSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYwIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2hvdyBjb250YWN0IGRhdGEgdG8gZXZlcnlib2R5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjEiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5BZGQgZmllbGRzIG9mIGludGVyZXN0IHRoYXQgeW91IG9mZmVyIG9yIHRoYXQgeW91IGFyZSBzZWFyY2hpbmcgdG8gZmluZCBpbnRlcmVzdGluZyBwYXJ0bmVycyBmb3IgYSBjb25mZXJlbmNlLiBDb21tYSBzZXBhcmF0ZSB0aGUgdGVybXMgKGZvciBleGFtcGxlOiBNZWRpY2FsIFNlcnZpY2UsIEhlYWx0aCBhc3N1cmFuY2UsIC4uLik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MiIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk15IG9mZmVyaW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYzIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+TXkgaW50ZXJlc3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjQiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjUiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5UaW1lem9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY2IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+RmllbGRzIG9mIGludGVyZXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjciIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Db250YWN0IGluZm9ybWF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjgiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TaG93IGNvbnRhY3QgZGF0YSB0byBjb250YWN0cyBvbmx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjkiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TaG93IGNvbnRhY3QgZGF0YSB0byBub2JvZHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk15IFByb2ZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkVkaXQgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MiIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlNlYXJjaCB1c2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTczIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+V2F0Y2ggeW91ciBwcm9maWxlIGxpa2Ugb3RoZXIgc2VlIHlvdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc0IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+RWRpdCB5b3VyIHNldHRpbmdzLCBhZGQgeW91ciBpbnRlcmVzdHMgdG8gYmUgZm91bmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlNlYXJjaCBmb3Igb3RoZXIgdXNlcnMgYW5kIGV4dGVuZCB5b3VyIG5ldHdvcms8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NiIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5TZWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NyIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5Vc2VyIG9mZmVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc4IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlVzZXIgbG9va3MgZm9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzkiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+RnJlZXRleHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODEiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+VGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MiIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5PZmZlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MyIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5TZWFyY2hzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODQiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+U2VhcmNocmVzdWx0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODUiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+QWN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg2IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkFkZCB0byBjb250YWN0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg3IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlNlbmQgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg4IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkNvbnRhY3RzIGFuZCBNZXNzYWdlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg5IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlBlbmRpbmcgY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkFjY2VwdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkxIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+RGVueTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkyIiBuYW1lPSJ1c2VyIGNvbnRhY3QgcmVxdWVzdCI+CisgICAgPHZhbHVlPkhpLDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkzIiBuYW1lPSJ1c2VyIGNvbnRhY3QgcmVxdWVzdCI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gYWRkIHlvdSBhcyBjb250YWN0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk0IiBuYW1lPSJ1c2VyIGNvbnRhY3QgcmVxdWVzdCI+CisgICAgPHZhbHVlPkNoZWNrIHlvdXIgY29udGFjdCByZXF1ZXN0cyBpbiAkQVBQX05BTUUgb3IgY2xpY2sgb24gdGhvc2UgbGlua3MgdG8gYWNjZXB0IG9yIGRlbnkgdGhlIHJlcXVlc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NSIgbmFtZT0iYWRkIHVzZXIgY29udGFjdCI+CisgICAgPHZhbHVlPlRoaXMgdXNlciBpcyBhbHJlYWR5IGluIHlvdXIgY29udGFjdCBsaXN0IG9yIGhhcyByZWNlaXZlZCBhbiBpbnZpdGF0aW9uIHRvIHlvdXIgY29udGFjdCBsaXN0IHRoYXQgaXMgbm90IGFuc3dlcmVkIHlldC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NiIgbmFtZT0idXNlciBjb250YWN0IG1haWwiPgorICAgIDx2YWx1ZT5Zb3VyIGNvbnRhY3QgbGlzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+RWRpdCB5b3VyIGNvbnRhY3QgYW5kIG1lc3NhZ2VzLCZsdDtici8mZ3Q7IG1hbmFnZSB5b3VyIHBlbmRpbmcgY29udGFjdHMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTgiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5jb25maXJtZWQgeW91IGFzIGNvbnRhY3QhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTkiIG5hbWU9ImNoYXQgaW5mbyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDAiIG5hbWU9ImNoYXQgbG9nIGljb24iPgorICAgIDx2YWx1ZT5TaG93IC8gQ29weSBjaGF0IGxvZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAxIiBuYW1lPSJjaGF0IGxvZyB3aW5kb3ciPgorICAgIDx2YWx1ZT5DaGF0IExvZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Gcm9tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlN1YmplY3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWVzc2FnZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TmV3IE1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwOCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2xpY2sgdG8gd3JpdGUgYSBuZXcgbWVzc2FnZSB0byBhbnkgb2YgeW91ciBjb250YWN0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Xcml0ZSBuZXcgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjEwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Ubzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3ViamVjdDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMiIgbmFtZT0id2hpdGVib2FyZCBmdWxsLWZpdCI+CisgICAgPHZhbHVlPkVuYWJsZSBmdWxsIGZpdCBhbmQgdGhlIHdoaXRlYm9hcmQgd2lsbCB6b29tIHRoZSB3aG9sZSB3aGl0ZWJvYXJkIHNvIHRoYXQgYWxsJmx0O2JyLyZndDtkb2N1bWVudHMgYXJlIHZpc2libGUgYWNjb3JkaW5nIHRvIGVhY2ggcGFydGljaXBhbnRzIHNjcmVlbiByZXNvbHV0aW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjEzIiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT5LaWNrIHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNCIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBraWNrIHlvdXJzZWxmIG91dCBvZiB0aGUgY29uZmVyZW5jZSByb29tISBJZiB5b3Ugd2FudCB0byBsZWF2ZSBpdCBjbG9zZSB0aGUgYnJvd3NlciBvciB1c2UgdGhlIGV4aXQgYnV0dG9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE1IiBuYW1lPSJraWNrLXVzZXIiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGlzY29ubmVjdCB0aGlzIHVzZXIgZnJvbSB0aGlzIGNvbmZlcmVuY2Ugcm9vbT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNiIgbmFtZT0ia2ljay11c2VyIj4KKyAgICA8dmFsdWU+Q29uZmlybSBhY3Rpb24gLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTciIG5hbWU9ImtpY2stdXNlciI+CisgICAgPHZhbHVlPllvdSBjYW5ub3Qga2ljayBhIFN1cGVyLU1vZGVyYXRvciBvdXQgb2YgYSByb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Cb29rIGNvbmZlcmVuY2Ugcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TdGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5FbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIGFuIG9wdGlvbmFsIHJlcXVlc3QgZm9yIG1lZXRpbmcgdG8gdGhlIG1lc3NhZ2UgYW5kIGNyZWF0ZSBhIGNvbmZlcmVuY2Ugcm9vbS4gVGhlIEV2ZW50IGlzIHRoZW4gY29waWVkIGluIHRoZSBjYWxlbmRhciBvZiBldmVyeSBwYXJ0aWNpcGFudC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+SW5ib3g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UcmFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGlzIGlzIHlvdSEgWW91IGNhbm5vdCBhZGQgeW91cnNlbGYgYXMgeW91ciBvd24gY29udGFjdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoZSB1c2VyIGlzIGFscmVhZHkgZGVuaWVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VGhlIHVzZXIgaXMgYWxyZWFkeSBhcHByb3ZlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyOCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoaXMgdXNlciBjb250YWN0IGhhc2ggaXMgaW52YWxpZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyOSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlVzZXIgYWRkZWQgdG8gY29udGFjdCBsaXN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMwIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VXNlciBkZW5pZWQgYXMgY29udGFjdCBhbmQgcmVtb3ZlZCBmcm9tIHBlbmRpbmcgY29udGFjdCBsaXN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMxIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgbm8gc3VjaCBjb250YWN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMyIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+V291bGQgeW91IHJlYWxseSBsaWtlIHRvIHJlbW92ZSB0aGF0IGNvbnRhY3Q/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzMiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Db25maXJtIGNvbnRhY3QgcmVtb3ZhbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM0IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+RGVsZXRlIGNvbnRhY3QgZnJvbSBsaXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzUiIG5hbWU9InVzZXIgcHJvZmlsZSI+CisgICAgPHZhbHVlPlVzZXIgUHJvZmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM2IiBuYW1lPSJ1c2VyIHByb2ZpbGUiPgorICAgIDx2YWx1ZT5TaG93IHVzZXIgcHJvZmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM3IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5NZXNzYWdlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzOSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VsZWN0IGFsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWxlY3Qgbm9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWxlY3QgdW5yZWFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbGVjdCByZWFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1vdmUgdG8gZm9sZGVyIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgbmV3IGZvbGRlciAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGVsZXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDYiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRlbGV0ZWQgbWFpbHMgYXJlIHN0aWxsIGluIHlvdXIgdHJhc2ggZm9sZGVyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ3IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5NYXJrIHVucmVhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5NYXJrIHJlYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0OSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QW5zd2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTAiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFuc3dlciBldmVyeWJvZHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Rm9yd2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BY3Rpb25zIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUzIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+U2VuZCBwcml2YXRlIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Tm90aGluZyBzZWxlY3RlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TW92ZSB0byBJbmJveDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU2IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EZWxldGUgKGZpbmFsKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU3IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGlzIGFjdGlvbiBjYW5ub3QgYmUgdW5kb25lITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgZm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZCBmb2xkZXJzIGFuZCBvcmdhbml6ZSB5b3VyIG1lc3NhZ2VzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgZm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+RGVsZXRlIGZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBkZWxldGUgdGhpcyBmb2xkZXIsIHRoZXJlIGFyZSBzdGlsbCBtZXNzYWdlcyBpbnNpZGUhIERlbGV0ZSBmaXJzdCB0aGUgbWVzc2FnZXMgb3IgbW92ZSB0aGVtIHRvIGFub3RoZXIgZm9sZGVyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+RWRpdCBuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSBmb2xkZXIiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgZm9sZGVyPyBUaGVyZSBpcyBubyB3YXkgdG8gdW5kbyB0aGF0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY2IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+WW91ciByZXF1ZXN0IHdhcyBzZW5kIHRvIHRoZSB1c2VyLiBUaGUgdXNlciB3aWxsIHJlY2VpdmUgYSBub3RpZmljYXRpb24gdG8gYWNjZXB0IG9yIGRlbnkgeW91ciByZXF1ZXN0LiBPbmx5IGFjY2VwdGVkIHJlcXVlc3RzIGFyZSBpbiB5b3VyIGNvbnRhY3QgbGlzdCBvZiBjb3Vyc2UhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjciIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5NZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjgiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+VGhlIHVzZXIgZG9lcyBub3Qgc2hhcmUgaGlzIHBlcnNvbmFsIGNvbnRhY3QgZGF0YS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2OSIgbmFtZT0idXNlciB2aWV3IHByb2ZpbGUiPgorICAgIDx2YWx1ZT5UaGUgdXNlciBkb2VzIHNoYXJlIGhpcyBwZXJzb25hbCBjb250YWN0IGRhdGEgb25seSB0byBjb250YWN0cy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3MCIgbmFtZT0idXNlciB2aWV3IHByb2ZpbGUiPgorICAgIDx2YWx1ZT5BZGRyZXNzICZhbXA7IFBob25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzEiIG5hbWU9ImVycm9yIGNvZGUiPgorICAgIDx2YWx1ZT5Zb3UgaW52aXRhdGlvbiBjb2RlIGlzIG5vIHZhbGlkLCB0aGUgY29kZSBpcyBvbmx5IHZhbGlkIGR1cmluZyB0aGlzIHNwZWNpZmljIGRhdGUgYW5kIHRpbWU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzIiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5UaGlzIGV2ZW50IGlzIGNvbm5lY3RlZCB0byBzZXZlcmFsIGNhbGVuZGFycyBvZiBvdGhlciB1c2Vycy4gWW91ciBjaGFuZ2Ugd2lsbCBhbHNvIHVwZGF0ZSB0aGVpciBjYWxlbmRhci4gV291bGQgeW91IHJlYWxseSBsaWtlIHRvIHVwZGF0ZSB0aGUgZXZlbnQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzMiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Db25maXJtIHVwZGF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc0IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+QWxsb3cgY29udGFjdCB0byBzZWUgbXkgY2FsZW5kYXIgKHZpZXcgb25seSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkRvIG5vdCBzaGFyZSBjYWxlbmRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc2IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+Q2FsZW5kYXIgb2YgY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPllvdXIgY29udGFjdHMgbmVlZCB0byBhcHByb3ZlIHlvdSBmaXJzdCB0byBiZSBhYmxlIHRvIHNlZSB0aGVpciBjYWxlbmRhci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3OCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPllvdSBjYW5ub3Qgc3RvcmUgb3IgZGVsZXRlIGV2ZW50cyBmcm9tIG90aGVyIGNhbGVuZGFycyB0aGVuIHlvdXIgb3duITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc5IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+U2hvdyBteSBvd24gY2FsZW5kYXIgYWdhaW4hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODAiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5UaGlzIGV2ZW50IGlzIGNvbm5lY3RlZCB0byBzZXZlcmFsIGNhbGVuZGFycyBvZiBvdGhlciB1c2Vycy4gWW91ciBhY3Rpb24gd2lsbCBhbHNvIGRlbGV0ZSB0aGUgZXZlbnQgZnJvbSB0aGVpciBjYWxlbmRhci4gV291bGQgeW91IHJlYWxseSBsaWtlIHRvIGRlbGV0ZSB0aGUgZXZlbnQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODEiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Db25maXJtIGFjdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgyIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RW50ZXIgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgzIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QWNjZXNzIHRoZSBjb25mZXJlbmNlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgYSBjb25mZXJlbmNlIHJvb20gYW5kIGV2ZW50IGJvb2tlZCB3aXRoIHRoaXMgcHJpdmF0ZSBtZXNzYWdlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg1IiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgdG8gc3RvcmUgdGhlIGV2ZW50IGZpcnN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg2IiBuYW1lPSJhY2Nlc3Mgcm9vbXMgZXJyb3IiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBzdWNoIHJvb20gYXZhaWxhYmxlLiBUaGUgZXZlbnQgaW4gdGhlIGNhbGVuZGFyIGFuZCBjb25uZWN0ZWQgcm9vbSBpcyBhbHJlYWR5IGRlbGV0ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODciIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPkNob29zZSB5b3VyIG5pY2tuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODgiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPkZpcnN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg5IiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5MYXN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkwIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5FbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkxIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5PazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkyIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5NaW5pbXVtIGxlbmd0aCA0IGNoYXJzISBGb3IgYm90aCwgZmlyc3RuYW1lIGFuZCBsYXN0bmFtZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MyIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGEgdmFsaWQgZW1haWwhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTQiIG5hbWU9ImF1dGggZnJvbSI+CisgICAgPHZhbHVlPkZhY2Vib29rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTUiIG5hbWU9ImF1dGggZm9ybSI+CisgICAgPHZhbHVlPkxvZ2luIHdpdGggeW91ciBGYWNlYm9vayBhY2NvdW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTYiIG5hbWU9InZpZXcgcHJvZmlsZSI+CisgICAgPHZhbHVlPk1lbWJlciBzaW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk3IiBuYW1lPSJkaXJlY3QgbG9naW4gbWVzc2FnZSI+CisgICAgPHZhbHVlPllvdSd2ZSBsb2dnZWQgd2l0aCB5b3VyIEZhY2Vib29rIGFjY291bnQuIFlvdSBzaG91bGQgdXBkYXRlIHlvdXIgcHJvZmlsZSB3aXRoIHRoZSBjb3JyZWN0IGVtYWlsLiBPdGhlcndpc2UgeW91IHdpbGwgbm90IHJlY2VpdmUgaW52aXRhdGlvbnMgYW5kIHByaXZhdGUgbWVzc2FnZXMgZnJvbSBvdGhlciB1c2Vycy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5OCIgbmFtZT0iZGlyZWN0IGxvZ2luIG1lc3NhZ2UgaGVhZGVyIj4KKyAgICA8dmFsdWU+TWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk5IiBuYW1lPSJkaXJlY3QgbG9naW4gbWVzc2FnZSBjaGVja2JveCBjb250cm9sIj4KKyAgICA8dmFsdWU+RG8gbm90IHNob3cgdXBkYXRlIHByb2ZpbGUgbWVzc2FnZSBhZ2FpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAwIiBuYW1lPSJwcm9maWxlIHNldHRpbmdzIGJ1dHRvbiI+CisgICAgPHZhbHVlPm1vcmUgZGlzcGxheSBvcHRpb25zIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5OZXcgcHJpdmF0ZSBtZXNzYWdlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DbGljayBoZXJlIHRvIHZpc2l0IHlvdXIgcHJvZmlsZSB0byBzZWUgdGhlIGZ1bGwgbWVzc2FnZSAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+UmVwbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwNCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+Um9vbXMgYW5kIGNoYXRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDUiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPk15IHJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDYiIG5hbWU9Im15IHJvb21zIj4KKyAgICA8dmFsdWU+TXkgY29uZmVyZW5jZSByb29tIChmb3IgMS0xNiB1c2Vycyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwNyIgbmFtZT0ibXkgcm9vbXMiPgorICAgIDx2YWx1ZT5NeSB3ZWJpbmFyIHJvb20gKGZvciAxLTEyMCB1c2Vycyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwOCIgbmFtZT0icm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPk93bmVyIElkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDkiIG5hbWU9ImxvZ2luIGVycm9yIj4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGEgcGFzc3dvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMCIgbmFtZT0ibG9naW4gZXJyb3IiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCBhbiBhY2NvdW50IHdpdGggVXNlci1MZXZlbCBVc2VyLCBNb2RlcmF0b3Igb3IgQWRtaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMSIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPldlYi1TZXJ2aWNlIChvbmx5IGFjY2VzcyB2aWEgU09BUCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMiIgbmFtZT0idXBsb2FkIGZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5EbyBkaXJlY3RseSBsb2FkIHRvIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMyIgbmFtZT0id2hpdGVib2FyZCBjbG9zZSBjb25maXJtYXRpb24iPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gcmVtb3ZlIHRoaXMgd2hpdGVib2FyZD8gVGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxNCIgbmFtZT0id2hpdGVib2FyZCBsb2FkIFdNTCI+CisgICAgPHZhbHVlPkxvYWQgdG8gd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE1IiBuYW1lPSJyZWNvcmRpbmcgZmxhZyI+CisgICAgPHZhbHVlPkRvIG5vdCBmb3JnZXQgc3RhcnQgcmVjb3JkaW5nISBPbmUgdXNlciBwZXIgcm9vbSBhbHdheXMgbmVlZHMgdG8gc3RhcnQgaXQgdG8gaGF2ZSB0aGUgcmVjb3JkaW5nIGFmdGVyd2FyZHMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTYiIG5hbWU9InJlY29yZGluZyBmbGFnIj4KKyAgICA8dmFsdWU+U3RhcnQgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTciIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+QXJyb3c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxOCIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT5DaXJjbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxOSIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT5MaW5lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjAiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+U3F1YXJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjEiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+VHJpYW5nbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyMiIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlRleHQvTm90ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIzIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+Q2xpcGFydHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkRyYXcgRnJlZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI1IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+U2VsZWN0L01vdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNiIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkRyYXcgU2hhcGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNyIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkN1dC9Nb3ZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjgiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5ab29tIEluL091dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI5IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+UHJpbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlVuZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMSIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlRyYXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzIiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5BZGQgR3JpZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMzIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+U2hhcmUgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM0IiBuYW1lPSJpY29uIHN1Ym1lbnUiPgorICAgIDx2YWx1ZT5TZWxlY3QgU2hhcGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNSIgbmFtZT0iaWNvbiBzdWJtZW51Ij4KKyAgICA8dmFsdWU+U2VsZWN0IENsaXBhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNiIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkNvcHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNyIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkN1dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM4IiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+UGFzdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzOSIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkRlbGV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQwIiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGUgY29tcGxldGUgY29udGVudCBvbiB0aGUgd2hpdGVib2FyZD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MSIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkxvYWQgZGlyZWN0bHkgdG8gd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQyIiBuYW1lPSJhdHRlbmRlZXMiPgorICAgIDx2YWx1ZT5BdHRlbmRlZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MyIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+QXR0ZW5kZWUgTWFuYWdlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ0IiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5QcmVzZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDUiIG5hbWU9ImF0ZW5kZWUgbWFuYWdlciI+CisgICAgPHZhbHVlPlJlbW90ZSBDb250cm9sbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ2IiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5FamVjdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ3IiBuYW1lPSJjaGF0Ij4KKyAgICA8dmFsdWU+Q2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ4IiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5JbnZpdGUgQXR0ZW5kZWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDkiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPkJ5IEVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTAiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPlVzZXIgaXMgbW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTEiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPlVzZXIgaGFzIHdlYmNhbSBzd2l0Y2hlZCBvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUyIiBuYW1lPSJmaWxsX29wdGlvbiI+CisgICAgPHZhbHVlPkRlYWN0aXZhdGUgc2hhcGUgZmlsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUzIiBuYW1lPSJmaWxsX29wdGlvbiI+CisgICAgPHZhbHVlPkFjdGl2YXRlIHNoYXBlIGZpbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlNuYXAgdG8gR3JpZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU1IiBuYW1lPSJhbGxvd19yZWNvcmRpbmciPgorICAgIDx2YWx1ZT5BbGxvdyByZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NiIgbmFtZT0id2FpdF9mb3JfcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+V2FpdCBmb3IgcmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTciIG5hbWU9ImhpZGVfdG9wX2JhciI+CisgICAgPHZhbHVlPkhpZGUgdG9wYmFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTgiIG5hbWU9ImZpbGVFeHBsb3JlciI+CisgICAgPHZhbHVlPlBsYXkgdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1OSIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhlIGNvbnRlbnQgb24gdGhlIGN1cnJlbnQgc2xpZGU/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjAiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPkFjY2VwdCBhbmQgZ3JhbnQgdXNlciByaWdodDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYxIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT5EZW55PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjIiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPkk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2MyIgbmFtZT0iYWN0aXZpdHlfd2luZG93Ij4KKyAgICA8dmFsdWU+QWN0aXZpdGllcyBhbmQgYWN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY0IiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+UmVtb3ZlIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NSIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPllvdSBuZWVkIHRoZSBtb2RlcmF0aW9uIG9yIHRoZSByaWdodCB0byBkcmF3IG9uIHRoZSB3aGl0ZWJvYXJkIHRvIHJlbW92ZSB3aGl0ZWJvYXJkcyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NiIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPk5vdCBhbGxvd2VkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjciIG5hbWU9InVzZXJfbGVmdF9hY3RfbXNnIj4KKyAgICA8dmFsdWU+aGFzIGxlZnQgdGhlIHJvb20uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjgiIG5hbWU9ImNsaXBhcnQgaWNvbnMiPgorICAgIDx2YWx1ZT5NYXRoIGljb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjkiIG5hbWU9ImNsaXBhcnQgaWNvbnMiPgorICAgIDx2YWx1ZT5ObyBjYXRlZ29yeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzcwIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5Db2xvci1TdHlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzcxIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5RdWFsaXR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzIiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPkRvbWFpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzczIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT52aXNpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc0IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5yZWRvcmFuZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+bWVkaXVtc2VhZ3JlZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NiIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+c3RlZWxibHVlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzciIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPmxpZ2h0c3RlZWxibHVlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzgiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPmdvbGRlbnJlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc5IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5zaWx2ZXJncmF5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODAiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnVzZXJkZWZpbmVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODEiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPmJlc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4MiIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+dXBsb2FkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODMiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPm1lZGl1bTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg0IiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODUiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODYiIG5hbWU9ImdpdmUgZXhjbHVzaXZlIGF1ZGlvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIG9mIG90aGVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg3IiBuYW1lPSJtdXRlIHNlbGYgbWVzc2FnZSI+CisgICAgPHZhbHVlPllvdSBhcmUgZ2xvYmFsbHkgbXV0ZWQgYnkgdGhlIG1vZGVyYXRvci4gWW91IGNhbm5vdCB1bm11dGUgeW91cnNlbGYhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODgiIG5hbWU9Im11dGUgc2VsZiBjb25maXJtIG1lc3NhZ2UgdGl0bGUiPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgZ2xvYmFsbHk/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODkiIG5hbWU9Im11dGUgc2VsZiBjb25maXJtIG1lc3NhZ2UgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBtdXRlIHlvdXJzZWxmIGdsb2JhbGx5PyBObyBvdGhlciB1c2VyIHdpbGwgaGVhciB5b3UgYW55bW9yZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5MCIgbmFtZT0ibXV0ZSBvdGhlcnMgY29uZmlybSBtZXNzYWdlIHRpdGxlIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGxvY2FsbHk/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTEiIG5hbWU9Im11dGUgb3RoZXJzIGNvbmZpcm0gbWVzc2FnZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBtdXRlIHRoaXMgbWljcm9waG9uZT8gWW91IGNhbiBvbmx5IG11dGUgaXQgbG9jYWxseSBvbiB5b3VyIHNjcmVlbi4gSXQgaGFzIG5vIGVmZmVjdCB0byBob3cgb3RoZXIgdXNlcnMgaGVhciB0aGlzIHVzZXIuIE9ubHkgbW9kZXJhdG9ycyBjYW4gdHVybiBpdCBvZmYgZ2xvYmFsbHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTIiIG5hbWU9Im11dGUgb3RoZXJzIGNvbmZpcm0gbWVzc2FnZSB0aXRsZSI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBvZmYgZ2xvYmFsbHk/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTMiIG5hbWU9Im11dGUgb3RoZXJzIG1vZGVyYXRvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIG11dGUgdGhpcyB1c2VyIGdsb2JhbGx5PyBObyBvdGhlciB1c2VyIHdpbGwgaGVhciBoaW0gYW55bW9yZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5NCIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5Zb3VyIHNvdW5kIGlzIG9uLiBDbGljayBoZXJlIHRvIHNlbmQgbW9kZXJhdG9yIG1lc3NhZ2UgdG8gbXV0ZSB5b3VyIG1pY3JvcGhvbmUgZ2xvYmFsbHkgKGluIHRoZSBjb21wbGV0ZSBjb25mZXJlbmNlIHJvb20pIG9mZiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5NSIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5Zb3VyIHNvdW5kIGlzIG9mZi4gQ2xpY2sgaGVyZSB0byBzZW5kIG1vZGVyYXRvciBtZXNzYWdlIHRvIHVubXV0ZSB5b3VyIG1pY3JvcGhvbmUgZ2xvYmFsbHkgKGluIHRoZSBjb21wbGV0ZSBjb25mZXJlbmNlIHJvb20pIG9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk2IiBuYW1lPSJtdXRlIGFwcGx5IHNlbGYgb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdGhhdCB0aGUgbW9kZXJhdG9yIG11dGVzIG15IG1pY3JvcGhvbmUgZ2xvYmFsbHkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTciIG5hbWU9Im11dGUgYXBwbHkgc2VsZiBvZmYgbWVzc2FnZSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdGhhdCB0aGUgbW9kZXJhdG9yIHVubXV0ZXMgbXkgbWljcm9waG9uZSBnbG9iYWxseS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5OCIgbmFtZT0ibXV0ZSBhcHBseSBvZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+d2FudCB0aGF0IHRoZSBtb2RlcmF0b3IgdW5tdXRlcyBoaXMvaGVyIG1pY3JvcGhvbmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTkiIG5hbWU9Im11dGUgYXBwbHkgb2YgbWVzc2FnZSI+CisgICAgPHZhbHVlPndhbnQgdGhhdCB0aGUgbW9kZXJhdG9yIG11dGVzIGhpcy9oZXIgbWljcm9waG9uZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMCIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5Vbm11dGUgbWljcm9waG9uZS4gQ2xpY2sgaGVyZSB0byBtdXRlIGhpcy9oZXIgbWljcm9waG9uZSBnbG9iYWxseSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMSIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUuIENsaWNrIGhlcmUgdG8gdW5tdXRlIGhpcy9oZXIgbWljcm9waG9uZSBnbG9iYWxseSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMiIgbmFtZT0ibXV0ZSBzZWxmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGlzIHVzZXIgaXMgZ2xvYmFsbHkgbXV0ZWQgYnkgdGhlIG1vZGVyYXRvci4gWW91IGNhbm5vdCB1bm11dGUgaGltITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDAzIiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TXV0ZSB5b3VyIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwNCIgbmFtZT0idW5tdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+VW5tdXRlIHlvdXIgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA1IiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDYiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSBtaWNyb3Bob25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDciIG5hbWU9Im11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwOCIgbmFtZT0idW5tdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+VW5tdXRlIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwOSIgbmFtZT0ibXV0ZSBtb2RlcmF0b3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPk9ubHkgbW9kZXJhdG9ycyBjYW4gbXV0ZSBvciB1bm11dGUgYW4gdXNlciBnbG9iYWxseSEgVG8gbXV0ZSB5b3VyIG93biBtaWNyb3Bob25lOiBQbGVhc2UgdXNlIHRoZSBtaWNyb3Bob25lIGljb24gaW4geW91ciB2aWRlbyBwb2QhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTAiIG5hbWU9InBvbGxfbmFtZSI+CisgICAgPHZhbHVlPlBvbGwgTmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDExIiBuYW1lPSJwb2xsX25hbWUiPgorICAgIDx2YWx1ZT5Zb3U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMiIgbmFtZT0iYXJjaGl2ZWRfcG9sbHMiPgorICAgIDx2YWx1ZT5BcmNoaWV2ZWQgUG9sbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMyIgbmFtZT0iYWN0aXZlX3BvbGwiPgorICAgIDx2YWx1ZT5hY3RpdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNCIgbmFtZT0iY2hhcnRfc2ltcGxlIj4KKyAgICA8dmFsdWU+U2ltcGxlIENoYXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTUiIG5hbWU9ImNoYXJ0X3BpZSI+CisgICAgPHZhbHVlPlBpZSBDaGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE2IiBuYW1lPSJzaWduX3VwX3ZhbGlkYXRpb24iPgorICAgIDx2YWx1ZT5QbGVhc2UgZW50ZXIgZW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNyIgbmFtZT0iY2hhdF9ub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5OZXcgbWVzc2FnZShzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE4IiBuYW1lPSJwb2xsX2Nsb3NlIj4KKyAgICA8dmFsdWU+Q2xvc2UgUG9sbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE5IiBuYW1lPSJwb2xsX2Nsb3NlX2NvbmZpcm0iPgorICAgIDx2YWx1ZT5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gY2xvc2UgdGhpcyBQb2xsPyBObyBvbmUgd2lsbCBiZSBhYmxlIHRvIHZvdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMCIgbmFtZT0icG9sbF9kZWxldGUiPgorICAgIDx2YWx1ZT5EZWxldGUgUG9sbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIxIiBuYW1lPSJwb2xsX2RlbGV0ZV9jb25maXJtIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIFBvbGw/IFRoZSByZXN1bHRzIHdpbGwgYmUgZGVsZXRlZCBhcyB3ZWxsLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIyIiBuYW1lPSJsYW5ndWFnZV9jb2RlIj4KKyAgICA8dmFsdWU+TGFuZ3VhZ2UgSVNPIENvZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMyIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX3Blcm1pc3Npb24iPgorICAgIDx2YWx1ZT5BbGxvdy9EZW55IHJpZ2h0IHRvIGdpdmUgZXhjbHVzaXZlIGF1ZGlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI0IiBuYW1lPSJhbGxvd19leGNsdXNpdmVfYXVkaW9fcGVybWlzc2lvbiI+CisgICAgPHZhbHVlPkFsbG93IHVzZXIgdG8gZ2l2ZSBleGNsdXNpdmUgYXVkaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNSIgbmFtZT0iZGVueV9leGNsdXNpdmVfYXVkaW9fcGVybWlzc2lvbiI+CisgICAgPHZhbHVlPkRlbnkgdXNlciB0byBnaXZlIGV4Y2x1c2l2ZSBhdWRpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI2IiBuYW1lPSJleGNsX2F1ZGlvIGFwcGx5IHNlbGYgb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gZ2V0IGEgcGVybWlzc2lvbiBmb3IgZXhjbHVzaXZlIGF1ZGlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI3IiBuYW1lPSJleGNsX2F1ZGlvIGFwcGx5IG9mIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53YW50IHRoYXQgdGhlIG1vZGVyYXRvciBnaXZlcyBtZSBhIHBlcm1pc3Npb24gZm9yIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyOCIgbmFtZT0iZXhjbF9hdWRpbyBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5HaXZlIGEgcGVybWlzc2lvbiBmb3IgZXhjbHVzaXZlIGF1ZGlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI5IiBuYW1lPSJjYW1fcmVzb2x1dGlvbiI+CisgICAgPHZhbHVlPkNhbSByZXNvbHV0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzAiIG5hbWU9ImNhbV9yZXNvbHV0aW9uX2luZm8iPgorICAgIDx2YWx1ZT5DaGFuZ2luZyB0aGUgcmVzb2x1dGlvbiBhZmZlY3RzIGJhbmR3aWR0aCwgYmlnZ2VyIHBpY3R1cmUgbmVlZHMgbW9yZSBiYW5kd2l0aCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzMSIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2Vycm9yIj4KKyAgICA8dmFsdWU+WW91IGRvbid0IGhhdmUgdGhlIHJpZ2h0IHRvIGdpdmUgeW91cnNlbGYgb3Igb3RoZXJzIGV4Y2x1c2l2ZSBhdWRpby4gWW91IG5lZWQgdG8gYXBwbHkgZm9yIHRoZSByaWdodCBmcm9tIHRoZSBtb2RlcmF0b3Igb3IgYXNrIHRoZSBtb2RlcmF0b3IgdG8gZ2l2ZSB5b3UgZXhjbHVzaXZlIGF1ZGlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMyIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fYXNrIj4KKyAgICA8dmFsdWU+SSB3b3VsZCBsaWtlIHRvIGdldCB0aGUgcmlnaHQgZm9yIGV4Y2x1c2l2ZSBhdWRpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMzIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fYWN0aW9uIj4KKyAgICA8dmFsdWU+R2l2ZSBleGNsdXNpdmUgYXVkaW8gdG8gbWUgKGFsdGVybmF0aXZlbHkgY2xpY2sgb24geW91ciB2aWRlbyBwb2Qgb3IgcHJlc3MgRjEyKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM0IiBuYW1lPSJtaWNybyBpcyBvbiI+CisgICAgPHZhbHVlPk1pY3JvcGhvbmUgaXMgb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzUiIG5hbWU9Im1pY3JvIGlzIG9mZiI+CisgICAgPHZhbHVlPk1pY3JvcGhvbmUgaXMgbXV0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNiIgbmFtZT0iaGlkZV9jaGF0Ij4KKyAgICA8dmFsdWU+SGlkZSBjaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzciIG5hbWU9ImhpZGVfYWN0aXZpdGllc19hbmRfYWN0aW9ucyI+CisgICAgPHZhbHVlPkhpZGUgYWN0aXZpdGllczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM4IiBuYW1lPSJoaWRlX2ZpbGVzX2V4cGxvcmVyIj4KKyAgICA8dmFsdWU+SGlkZSBmaWxlcyBleHBsb3JlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM5IiBuYW1lPSJoaWRlX2FjdGlvbnNfbWVudSI+CisgICAgPHZhbHVlPkhpZGUgYWN0aW9ucyBtZW51PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDAiIG5hbWU9ImhpZGVfc2NyZWVuX3NoYXJpbmciPgorICAgIDx2YWx1ZT5IaWRlIHNjcmVlbiBzaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDEiIG5hbWU9ImhpZGVfd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkhpZGUgd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQyIiBuYW1lPSJzaG93IG1pY3JvcGhvbmUgc3RhdHVzIj4KKyAgICA8dmFsdWU+U2hvdyBtaWNybyBzdGF0dXMgaW4gdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MyIgbmFtZT0ibGF5b3V0X29wdGlvbnMiPgorICAgIDx2YWx1ZT5MYXlvdXQgb3B0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ0IiBuYW1lPSJjYWxlbmRhciBuZXcgYnV0dG9uIj4KKyAgICA8dmFsdWU+TmV3IEV2ZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDUiIG5hbWU9ImNhbGVuZGFyIHBhc3N3b3JkIGluZm8gdGV4dCI+CisgICAgPHZhbHVlPlBhc3N3b3JkIHByb3RlY3RlZCBhcmUgdGhlIGxpbmtzIHRvIHRoZSBjb25mZXJlbmNlIHRoYXQgYXJlIHNlbmQgdG8gdGhlIHBhcnRpY2lwZW50cyB3aGVuIHlvdSBzYXZlIHRoZSBjYWxlbmRhciBldmVudCwgbm90IHRoZSByb29tISBUaGF0IG1lYW5zIGlmIHlvdSBzYXZlIHRoZSBldmVudCBtdWx0aXBsZSB0aW1lcyBidXQgd2l0aCBkaWZmZXJlbnQgcGFzc3dvcmRzIGV2ZXJ5IHBhcnRpY2lwZW50IHJlY2VpdmVzIGEgbmV3IGxpbmsgdGhhdCBoYXMgYSBkaWZmZXJlbnQgcGFzc3dvcmQuIEJ1dCBvbGQgbGlua3Mgc3RpbGwgd29yayBvbmNlIHNlbmQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDYiIG5hbWU9ImNhbGVuZGFyIGVkaXQgYnV0dG9uIj4KKyAgICA8dmFsdWU+RWRpdCBkZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDciIG5hbWU9InNpcCBzaG93IGRpYWxlciI+CisgICAgPHZhbHVlPlNob3cgc2lwIGRpYWxlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ4IiBuYW1lPSJzaXAgY2FsbCI+CisgICAgPHZhbHVlPkNhbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0OSIgbmFtZT0iY2FsZW5kYXIgY29udGFjdCBsaXN0Ij4KKyAgICA8dmFsdWU+U2hvdyBjYWxlbmRhciBldmVudHMgb2YgY29udGFjdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUwIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5Zb3VyIGhvbWUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTEiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPlBsYW4geW91ciBtZWV0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUyIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5XYXRjaCByZWNvcmRpbmcgYW5kIGludGVydmlld3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MyIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+Q2hvb3NlIGFuZCBzdGFydCBhIHdlYi1jb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTQiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSB1c2VycyBhbmQgcmlnaHRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTUiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBjb25uZWN0aW9ucyBhbmQga2ljayB1c2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU2IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgdXNlcmdyb3VwczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU3IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgY29uZmVyZW5jZSByb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU4IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2Ugc3lzdGVtIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTkiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBsYWJlbHMgYW5kIHdvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIExEQVAgYW5kIEFEUyBjb25maWd1cmF0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYxIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5FeHBvcnQvSW1wb3J0IFN5c3RlbSBCYWNrdXBzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjIiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCBtb2RlcmF0aW9uIG9yIHRoZSByaWdodCB0byBkcmF3IG9uIHdoaXRlYm9hcmQgdG8gdXBsb2FkLCBhZGQsIGRlbGV0ZSBvciBsb2FkIGZpbGVzIGFuZCBmb2xkZXJzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYzIiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+RWRpdCB0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjQiIG5hbWU9InNhbHV0YXRpb24iPgorICAgIDx2YWx1ZT5Qcm9mPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjUiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UHVibGlzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY2IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlN0YXJ0IFB1Ymxpc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2NyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdG9wIFB1Ymxpc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2OCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5Ib3N0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjkiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UHVibGlzaCBBcHA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5QdWJsaXNoIElkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzEiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UmVkdWNlIHRoZSB3aWR0aCBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtb3ZlIGl0IGxlZnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5SZWR1Y2UgdGhlIGhlaWdodCBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtb3ZlIGl0IGJvdHRvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDczIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHVjZSB0aGUgeCBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtYWtlIGl0IHdpZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzQiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UmVkdWNlIHRoZSB5IG9mIHRoZSBTaGFyaW5nU2NyZWVuIGJlZm9yZSB5b3UgdHJ5IHRvIG1ha2UgaXQgaGlnaGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzUiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+RmlsbCB0aGVzZSBzZXR0aW5ncyBzdHJlYW0geW91ciBzY3JlZW4gZGF0YSB0byAzdGggcGFydHkgcHJvdmlkZXJzIGxpa2UganVzdGluLnR2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzYiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UGxlYXNlIHN0YXJ0IFNjcmVlbiBzaGFyaW5nIHRvIGJlIGFibGUgdG8gcHVibGlzaCBpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc3IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPk1vZGVyYXRvciBwZXJtaXNzaW9uIHJlcXVpcmVkIHRvIHN0YXJ0IHJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc4IiBuYW1lPSJubyByaWdodCBmb3IgZXhjbHVzaXZlIGF1ZGlvIj4KKyAgICA8dmFsdWU+WW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byBhcHBseSBleGNsdXNpdmUgYXVkaW8gdG8gYW55IHBhcnRpY2lwYW50LiBZb3UgbmVlZCBtb2RlcmF0aW9uIHJvbGUgb3IgdGhlIHJpZ2h0IGZvciBleGNsdXNpdmUgYXVkaW8gdG8gbWFrZSBhbnkgbWljcm9waG9uZSBleGNsdXNpdmUgdHVybmVkIG9uLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3OSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+VXBsb2FkIG5ldyBmaWxlIHRvIGZpbGUgZXhwbG9yZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+T3BlbiBuZXcgZGlhbG9nIHdpdGggc2hhcmluZyBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgxIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5BbiBleGlzdGluZyBtb2RlcmF0b3IgbXVzdCBhcHByb3ZlIGl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODIiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkFzayBtb2RlcmF0b3IgdG8gc2hhcmUgeW91ciB3ZWJjYW0vbWljcm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MyIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+R2F0aGVyIGZlZWRiYWNrIGJ5IGNyZWF0aW5nIGEgcG9sbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg0IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5QYXN0IGFuZCBjdXJyZW50IHBvbGwgcmVzdWx0cyBhcyBjaGFydHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Vm90ZSBpZiB0aGVyZSBpcyBhIHBvbGwgZm9yIHRoaXMgY29uZmVyZW5jZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODYiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkVkaXQgY2FtIGFuZCBtaWMgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NyIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Q29uZmlybSBhbmQgbGVhdmUgdGhlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4OCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Q2FsbCBleHRlcm5hbCBwZW9wbGUgdmlhIFZvSVAvU0lQPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODkiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlNlbmQgYW4gZW1haWwgd2l0aCBhIGRpcmVjdCBsaW5rIHRvIHRoaXMgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkwIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5DaGFuZ2UgeW91ciB3aGl0ZWJvYXJkIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTEiIG5hbWU9ImJhY2t1cCBhZG1pbiI+CisgICAgPHZhbHVlPk1heCB1cGxvYWQgc2l6ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkyIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5Bc2sgbW9kZXJhdG9yIHRvIHNoYXJlIHlvdXIgd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkzIiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5TdGFydCBQcml2YXRlIENoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NCIgbmFtZT0iYWxsX3ByaXZhdGVfY2hhdCI+CisgICAgPHZhbHVlPkFsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk1IiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IHN0YXJ0IGEgcHJpdmF0ZSBjaGF0IHdpdGggeW91cnNlbGYuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTYiIG5hbWU9InByaXZhdGUgY2hhdCI+CisgICAgPHZhbHVlPllvdSd2ZSBhbHJlYWR5IHN0YXJ0ZWQgYSBwcml2YXRlIGNoYXQgd2l0aCB0aGlzIHBhcnRpY2lwYW50LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk3IiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcHJpdmF0ZSBjaGF0PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk4IiBuYW1lPSJTZXJ2ZXJzIj4KKyAgICA8dmFsdWU+U2VydmVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk5IiBuYW1lPSJTZXJ2ZXJzIj4KKyAgICA8dmFsdWU+U2VydmVycyBwYXJ0aWNpcGF0aW5nIGluIGNsdXN0ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMCIgbmFtZT0iU2VydmVyIG5hbWUiPgorICAgIDx2YWx1ZT5TZXJ2ZXIgTmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAxIiBuYW1lPSJTZXJ2ZXIgQWRkcmVzcyI+CisgICAgPHZhbHVlPlNlcnZlciBBZGRyZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDIiIG5hbWU9IlNlcnZlciBkZXRhaWxzIj4KKyAgICA8dmFsdWU+U2VydmVyIGRldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMyIgbmFtZT0iU2VuZCBTTVMiPgorICAgIDx2YWx1ZT5TZW5kIFNNUzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA0IiBuYW1lPSJwdWJsaXNoaW5nX21lc3NhZ2UiPgorICAgIDx2YWx1ZT5QdWJsaXNoaW5nLiBVc2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA1IiBuYW1lPSJjbWRfbGluZV9hZG1pbiI+CisgICAgPHZhbHVlPlRvIHNhdmUgdGltZSBhbmQgaW50ZXJuZXQgdHJhZmZpYyB5b3UgY2FuIHVzZSBjb21tYW5kIGxpbmUgYWRtaW4gdG8gYmFja3VwL3Jlc3RvcmUvdXBncmFkZTpcbiAxKSBnbyB0byBPTSBpbnN0YWxsIGRpciAoZm9yIGV4LiAvb3B0L3JlZDUpIFxuIDIpIHN0b3AgT00gKGZvciBleC4gLi9yZWQ1LXNodXRkb3duLnNoKVxuIDMpIC4vYWRtaW4uc2ggLWIgLWZpbGUgfi90b2RheV9vbV9iYWNrdXAuemlwIChjcmVhdGUgYmFja3VwIG9mIGN1cnJlbnQgT00pXG4gNCkgZG93bmxvYWQgYXJjaGl2ZSB3aXRoIG5ldyBPTVxuIDUpIG12IC9vcHQvcmVkNSAvb3B0LnJlZDUuYmFrIChtb3ZlIHdvcmtpbmcgdmVyc2lvbiBvZiBPTSBqdXN0IGluIGNhc2UgOikpXG4gNikgZXh0cmFjdCBkb3dubG9hZGVkIE9NIHRvIHRoZSAvb3B0L3JlZDVcbiA3KSAuL2FkbWluLnNoIC1pIC1maWxlIH4vdG9kYXlfb21fYmFja3VwLnppcCAob3IgJy4vYWRtaW4uc2ggLWkgLWZpbGUgfi90b2RheV9vbV9iYWNrdXAuemlwIC0tZGItdHlwZSBteXNxbCAtLWRiLXVzZXIgb21fdXNlciAtLWRiLXBhc3Mgb21fdXNlcl9wYXNzJyBpbiBjYXNlIG9mIHlvdSBhcmUgdXNpbmcgbm9uLWRlZmF1bHQgREIgKVxuIDgpIHN0YXJ0IE9NXG48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNiIgbmFtZT0icHVibGljX3Jvb21fdG9vbHRpcCI+CisgICAgPHZhbHVlPlJvb21zIGNvbW1vbiB0byBhbGwgdXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA3IiBuYW1lPSJwcml2YXRlX3Jvb21fdG9vbHRpcCI+CisgICAgPHZhbHVlPlJvb21zIGNvbW1vbiB0byB0aGUgY3VycmVudCB1c2VyIGdyb3VwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDgiIG5hbWU9Im15X3Jvb21fdG9vbHRpcCI+CisgICAgPHZhbHVlPlJvb21zIG9mIHRoZSBjdXJyZW50IHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwOSIgbmFtZT0iY3JlYXRlX25ld19yb29tIj4KKyAgICA8dmFsdWU+Q3JlYXRlL01vZGlmeSBhcHBvaW50bWVudCBzcGVjaWFsIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxMCIgbmFtZT0ibXVsdGlwbGVfYWRkcmVzc2VzIj4KKyAgICA8dmFsdWU+WW91IGNhbiBlbnRlciBtdWx0aXBsZSBhZGRyZXNzZXMgaW4gdGhlIGZvcm1hdDogZmlyc3RuYW1lMSBsYXN0bmFtZTEgJmx0O2VtYWlsMSZndDssImZpcnN0bmFtZTIgbGFzdG5hbWUyIiAmbHQ7ZW1haWwyJmd0OywnZmlyc3RuYW1lMyBsYXN0bmFtZTMnICZsdDtlbWFpbDMmZ3Q7LCAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxMSIgbmFtZT0ic3RyZWFtX3ZvbHVtZSI+CisgICAgPHZhbHVlPkFkanVzdCBzdHJlYW0gdm9sdW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTIiIG5hbWU9Im1pY3JvcGhvbmVfdm9sdW1lIj4KKyAgICA8dmFsdWU+QWRqdXN0IG1pY3JvcGhvbmUgdm9sdW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTMiIG5hbWU9ImNoYXRfbW9kZXJhdGVkIj4KKyAgICA8dmFsdWU+SXMgY2hhdCBtb2RlcmF0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNCIgbmFtZT0iY2hhdF9tb2RlcmF0ZWQiPgorICAgIDx2YWx1ZT5BbGxvdyBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTUiIG5hbWU9ImNoYXRfb3BlbmVkIj4KKyAgICA8dmFsdWU+Q2hhdCBwYW5lbCBvcGVuZWQgYnkgZGVmYXVsdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE2IiBuYW1lPSJmaWxlc19vcGVuZWQiPgorICAgIDx2YWx1ZT5GaWxlcyBwYW5lbCBvcGVuZWQgYnkgZGVmYXVsdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE3IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gc2VjdGlvbiBsYXN0cGluZyI+CisgICAgPHZhbHVlPkxhc3QgcGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE4IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gc2VjdGlvbiBsYXN0cGluZyBpbmZvIj4KKyAgICA8dmFsdWU+RXZlcnkgc2xhdmUgc2VuZHMgYSBwaW5nIHRvIHRoZSBtYXN0ZXIgZXZlcnkgMyBzZWNvbmRzIChjb25maWd1cmFibGUpLiBTbGF2ZSBsYXN0UGluZyBtdXN0IGJlIHNtYWxsZXIgdGhlbiAxIG1pbnV0ZSBzbyB0aGF0IHRoZSBtYXN0ZXIgdXNlcyB0aGUgc2xhdmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTkiIG5hbWU9InNlcnZlciBhZG1pbiBwb3J0Ij4KKyAgICA8dmFsdWU+SFRUUCBQb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjAiIG5hbWU9InNlcnZlciBhZG1pbiB1c2VyIj4KKyAgICA8dmFsdWU+VXNlciAoU09BUC1BY2Nlc3MpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjEiIG5hbWU9InNlcnZlciBhZG1pbiBwYXNzd29yZCI+CisgICAgPHZhbHVlPlBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjIiIG5hbWU9InNlcnZlciBhZG1pbiB3ZWJhcHAgcGF0aCI+CisgICAgPHZhbHVlPldlYmFwcCBwYXRoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjMiIG5hbWU9InNlcnZlciBhZG1pbiBwcm90b2NvbCI+CisgICAgPHZhbHVlPlByb3RvY29sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjQiIG5hbWU9InNlcnZlciBhZG1pbiBwaW5nIHJ1bm5pbmciPgorICAgIDx2YWx1ZT5QaW5nIHJ1bm5pbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyNSIgbmFtZT0ic2VydmVyIGFkbWluIGFjdGl2ZSI+CisgICAgPHZhbHVlPkFjdGl2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI2IiBuYW1lPSJnZW5lcmF0ZV9oYXNoIj4KKyAgICA8dmFsdWU+R2VuZXJhdGUgVVJMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjciIG5hbWU9Im5ldHdvcmsgdGVzdGluZyBsaW5rIj4KKyAgICA8dmFsdWU+TmV0d29yayB0ZXN0aW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjgiIG5hbWU9InJvb21fb3B0aW9ucyI+CisgICAgPHZhbHVlPkF1dG8gc2VsZWN0IGludGVydmlldyB2aWRlbyBwb2Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyOSIgbmFtZT0iZm9udF91bmRlcmxpbmUiPgorICAgIDx2YWx1ZT5VbmRlcmxpbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMCIgbmFtZT0iZm9udF9zdHlsZSI+CisgICAgPHZhbHVlPkZvbnQgc3R5bGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMSIgbmFtZT0iYWxsb3dfZm9udF9zdHlsZXMiPgorICAgIDx2YWx1ZT5BbGxvdyBmb250IHN0eWxlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMyIiBuYW1lPSJmb250X2NvbG9yIj4KKyAgICA8dmFsdWU+Rm9udCBjb2xvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMzIiBuYW1lPSJoeXBlcmxpbmsiPgorICAgIDx2YWx1ZT5IeXBlcmxpbms8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNCIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbiI+CisgICAgPHZhbHVlPlNob3cgc2Vzc2lvbiBzdGF0aXN0aWNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzUiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW4iPgorICAgIDx2YWx1ZT5TZXNzaW9uIGRldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNiIgbmFtZT0ic3lzdGVtX2ltcG9ydCI+CisgICAgPHZhbHVlPlN5c3RlbSBpbXBvcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNyIgbmFtZT0iaW5jbHVkZV9pbnRvX2JhY2t1cCI+CisgICAgPHZhbHVlPkluY2x1ZGUgdXBsb2FkZWQgZmlsZXMgYW5kIHJlY29yZGluZ3MgaW4gYmFja3VwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzgiIG5hbWU9InJvb21fYWRtaW5fc2lwIj4KKyAgICA8dmFsdWU+RW5hYmxlIFNJUCB0cmFuc3BvcnQgaW4gdGhlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzOSIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2NvbmZpcm0iPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gcHJvdmlkZSB0aGlzIHVzZXIgYW4gZXhjbHVzaXZlIGF1ZGlvPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTQwIiBuYW1lPSJub190aW1lem9uZSI+CisgICAgPHZhbHVlPlBsZWFzZSBzcGVjaWZ5IHlvdXIgdGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU0NSIgbmFtZT0iY29udGVudF9pc19zYXZpbmciPgorICAgIDx2YWx1ZT5Db250ZW50IGlzIFNhdmluZywgUGxlYXNlIHdhaXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+Cis8L2xhbmd1YWdlPgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9sYW5ndWFnZXMvdGhhaS54bWwgYi9XZWJDb250ZW50L2xhbmd1YWdlcy90aGFpLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGI2N2MzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9sYW5ndWFnZXMvdGhhaS54bWwKQEAgLTAsMCArMSw0NjUyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorCis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorCisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitUaGlzIEZpbGUgaXMgYXV0by1nZW5lcmF0ZWQgYnkgdGhlIExhbmd1YWdlRWRpdG9yIAordG8gYWRkIG5ldyBMYW5ndWFnZXMgb3IgbW9kaWZ5L2N1c3RvbWl6ZSBpdCB1c2UgdGhlIExhbmd1YWdlRWRpdG9yIAorc2VlIGh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9MYW5ndWFnZUVkaXRvci5odG1sIGZvciBEZXRhaWxzIAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMtLT4KKzxsYW5ndWFnZSB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiB4bWxuczpub05hbWVzcGFjZVNjaGVtYUxvY2F0aW9uPSJsYW5ndWFnZS54c2QiPgorICA8c3RyaW5nIGlkPSIxIiBuYW1lPSJjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+4LiB4Liy4Lij4Lib4Lij4Liw4LiK4Li44Lih4LiB4Lil4Li44LmI4LihPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIiIG5hbWU9Im1lZXRpbmciPgorICAgIDx2YWx1ZT7guIHguLLguKPguJvguKPguLDguIrguLjguKE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMyIgbmFtZT0iY2xhc3Nyb29tIj4KKyAgICA8dmFsdWU+4LiH4Liy4LiZ4LiV4LmI4Liy4LiH4LmGPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQiIG5hbWU9InNldHRpbmdzIj4KKyAgICA8dmFsdWU+4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4LiyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUiIG5hbWU9ImJlbnV0emVyIj4KKyAgICA8dmFsdWU+4LmC4Lib4Lij4LmE4Lif4Lil4LmMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYiIG5hbWU9ImFkbWluIj4KKyAgICA8dmFsdWU+4LiB4Liy4Lij4Lia4Lij4Li04Lir4Liy4Lij4LiH4Liy4LiZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjciIG5hbWU9InN0b3AiPgorICAgIDx2YWx1ZT7guKvguKLguLjguJQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOCIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+4Lia4Lix4LiZ4LiX4Li24LiBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkiIG5hbWU9Im5vZmlsZSI+CisgICAgPHZhbHVlPuC5hOC4oeC5iOC4oeC4teC5hOC4n+C4peC5jDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMCIgbmFtZT0icmVjb3JkYnl0ZWFjaGVyIj4KKyAgICA8dmFsdWU+4Lia4Lix4LiZ4LiX4Li24LiB4LmC4LiU4Lii4Lit4Liy4LiI4Liy4Lij4Lii4LmMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExIiBuYW1lPSJjb25uZWN0ZWR1c2VycyI+CisgICAgPHZhbHVlPuC4nOC4ueC5ieC5g+C4iuC5ieC4l+C4teC5iOC5gOC4iuC4t+C5iOC4reC4oeC4leC5iOC4rTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIiIG5hbWU9InN0YXJ0Y29uZiI+CisgICAgPHZhbHVlPuC5gOC4o+C4tOC5iOC4oeC4geC4suC4o+C4m+C4o+C4sOC4iuC4uOC4oTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMyIgbmFtZT0ibXluYW1lIj4KKyAgICA8dmFsdWU+4LiK4Li34LmI4Lit4LiC4Lit4LiH4LiJ4Lix4LiZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0IiBuYW1lPSJ2aWRlb2NvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT7guIHguLLguKPguJvguKPguLDguIrguLjguKHguJzguYjguLLguJnguKfguLXguJTguLXguYLguK08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUiIG5hbWU9ImltcG9ydCI+CisgICAgPHZhbHVlPuC4reC4seC4nuC5guC4q+C4peC4lOC5hOC4n+C4peC5jDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNiIgbmFtZT0icmVmcmVzaGZpbGVzIj4KKyAgICA8dmFsdWU+4Lij4Li14LmA4Lif4Lij4LiK4Lil4Li04Liq4LiV4LmM4Lij4Liy4Lii4LiB4Liy4LijPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3IiBuYW1lPSJ0b21haW5maWxlIj4KKyAgICA8dmFsdWU+4LmE4Lib4Lii4Lix4LiH4LmE4Lif4Lil4LmM4Lir4Lil4Lix4LiBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4IiBuYW1lPSJuZXdwb2xsIj4KKyAgICA8dmFsdWU+4LmC4Lie4Lil4Lil4LmM4LmD4Lir4Lih4LmIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5IiBuYW1lPSJuZXdwb2xsaGVhZGVyIj4KKyAgICA8dmFsdWU+4LmC4Lie4Lil4Lil4LmM4LmD4Lir4Lih4LmI4Liq4Liz4Lir4Lij4Lix4Lia4LiB4Liy4Lij4Lib4Lij4Liw4LiK4Li44LihPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwIiBuYW1lPSJxdWVzdGlvbiI+CisgICAgPHZhbHVlPuC4hOC4s+C4luC4suC4oTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEiIG5hbWU9InBvbGx0eXBlIj4KKyAgICA8dmFsdWU+4Lib4Lij4Liw4LmA4Lig4LiX4LiC4Lit4LiH4LmC4Lie4Lil4Lil4LmMOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMiIgbmFtZT0iY3JlYXRlIj4KKyAgICA8dmFsdWU+4LiI4Lix4LiU4LiX4LizPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzIiBuYW1lPSJpbmZvbWVzc2FnZSI+CisgICAgPHZhbHVlPuC4guC5ieC4reC4oeC4ueC4pTog4Lic4Li54LmJ4LmD4LiK4LmJ4LiX4Li14LmI4LmA4LiK4Li34LmI4Lit4Lih4LiV4LmI4Lit4Lit4Lii4Li54LmI4LmB4LiV4LmI4Lil4Liw4Lij4Liy4Lii4LmE4LiU4LmJ4Lij4Lix4Lia4LiC4LmJ4Lit4LiE4Lin4Liy4Lih4Lie4Lij4LmJ4Lit4Lih4LiU4LmJ4Lin4Lii4LmC4Lie4Lil4Lil4LmM4LmD4Lir4Lih4LmIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0IiBuYW1lPSJjcmVhdHBvbGwiPgorICAgIDx2YWx1ZT7guIjguLHguJTguJfguLPguYLguJ7guKXguKXguYw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUiIG5hbWU9ImNhbmNlbCI+CisgICAgPHZhbHVlPuC4ouC4geC5gOC4peC4tOC4gTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNiIgbmFtZT0ieWVzbm8iPgorICAgIDx2YWx1ZT7guYPguIrguYgv4LmE4Lih4LmIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3IiBuYW1lPSJudW1lcmljIj4KKyAgICA8dmFsdWU+4LmA4Lil4LiCIDEtMTA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgiIG5hbWU9InBvbGwiPgorICAgIDx2YWx1ZT7guYLguJ7guKXguKXguYw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkiIG5hbWU9Im1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT7guJXguYnguK3guIfguYDguJvguYfguJnguJzguLnguYnguJTguLPguYDguJnguLTguJnguKPguLLguKLguIHguLLguKPguIjguLbguIfguIjguLDguJXguLHguYnguIfguITguLPguJbguLLguKHguYTguJTguYk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAiIG5hbWU9InZvdGUiPgorICAgIDx2YWx1ZT7guIHguLLguKPguYLguKvguKfguJXguILguK3guIfguITguLjguJPguYTguJTguYnguKPguLHguJrguIHguLLguKPguKXguIfguJfguLDguYDguJrguLXguKLguJnguYHguKXguYnguKc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEiIG5hbWU9ImFscmVhZHl2b3RlZCI+CisgICAgPHZhbHVlPuC4hOC4uOC4k+C5guC4q+C4p+C4leC5guC4nuC4peC4peC5jOC4meC4teC5ieC5hOC4m+C5geC4peC5ieC4pzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMiIgbmFtZT0idm90aW5nIj4KKyAgICA8dmFsdWU+4LmA4LiK4Li04LiN4LmC4Lir4Lin4LiVITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMyIgbmFtZT0iYW5zd2VyIj4KKyAgICA8dmFsdWU+4LiE4Liz4LiV4Lit4Lia4LiC4Lit4LiH4LiE4Li44LiTOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNCIgbmFtZT0ieWVzIj4KKyAgICA8dmFsdWU+4LmD4LiK4LmIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1IiBuYW1lPSJubyI+CisgICAgPHZhbHVlPuC5hOC4oeC5iDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNiIgbmFtZT0icXVlc3Rpb253YW50Ij4KKyAgICA8dmFsdWU+4Lit4Lii4Liy4LiB4Lij4Li54LmJOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNyIgbmFtZT0icG9sbHJlc3VsdHMiPgorICAgIDx2YWx1ZT7guJzguKXguIHguLLguKPguKrguLPguKPguKfguIjguYLguJ7guKXguKXguYw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgiIG5hbWU9InF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+4LiE4Liz4LiW4Liy4LihOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOSIgbmFtZT0icmVzdWx0cyI+CisgICAgPHZhbHVlPuC4nOC4pTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAiIG5hbWU9ImFuc3dlcnMiPgorICAgIDx2YWx1ZT7guITguLPguJXguK3guJo6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxIiBuYW1lPSJub3BvbGwiPgorICAgIDx2YWx1ZT7guKLguLHguIfguYTguKHguYjguKHguLXguIHguLLguKPguYDguKPguLTguYjguKHguIHguLLguKPguKrguLPguKPguKfguIjguYLguJ7guKXguKXguYzguYPguJTguYDguKXguKI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIiIG5hbWU9InZvdGluZ3MiPgorICAgIDx2YWx1ZT7guYDguIrguLTguI3guYLguKvguKfguJUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzIiBuYW1lPSJtZWV0aW5nIj4KKyAgICA8dmFsdWU+4LiB4Liy4Lij4Lib4Lij4Liw4LiK4Li44LihICjguKrguLnguIfguKrguLjguJQgNCDguJfguLXguYjguJnguLHguYjguIcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0IiBuYW1lPSJjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+4LiB4Liy4Lij4Lib4Lij4Liw4LiK4Li44Lih4LiB4Lil4Li44LmI4LihICjguKrguLnguIfguKrguLjguJQgNTAg4LiX4Li14LmI4LiZ4Lix4LmI4LiHKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NSIgbmFtZT0idHlwZSI+CisgICAgPHZhbHVlPuC4m+C4o+C4sOC5gOC4oOC4lzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NiIgbmFtZT0icmVtYWluaW5nc2VhdHMiPgorICAgIDx2YWx1ZT7guJfguLXguYjguJnguLHguYjguIfguK3guLfguYjguJnguYY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDciIG5hbWU9ImFscmVhZHljaG9zZW4iPgorICAgIDx2YWx1ZT7guYDguKXguLfguK3guIHguYTguJvguYHguKXguYnguKc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgiIG5hbWU9ImVudGVyIj4KKyAgICA8dmFsdWU+4Lib4LmJ4Lit4LiZ4LiC4LmJ4Lit4Lih4Li54LilPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5IiBuYW1lPSJtb2RsZWF2ZSI+CisgICAgPHZhbHVlPuC4nOC4ueC5ieC4lOC4s+C5gOC4meC4tOC4meC4o+C4suC4ouC4geC4suC4o+C4reC4reC4geC4iOC4suC4geC4l+C4teC5iOC4m+C4o+C4sOC4iuC4uOC4oeC5hOC4m+C5geC4peC5ieC4pzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MCIgbmFtZT0ic3lzdGVtbWVzc2FnZSI+CisgICAgPHZhbHVlPuC4guC5ieC4reC4oeC4ueC4peC4o+C4sOC4muC4mjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MSIgbmFtZT0iY2hvc3NlZGV2aWNlIj4KKyAgICA8dmFsdWU+4LmA4Lil4Li34Lit4LiB4Lit4Li44Lib4LiB4Lij4LiT4LmMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyIiBuYW1lPSJjaG9vc2VjYW0iPgorICAgIDx2YWx1ZT7guYDguKXguLfguK3guIHguYDguKfguYfguJrguYHguITguKE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzIiBuYW1lPSJjaG9vc2VtaWMiPgorICAgIDx2YWx1ZT7guYDguKXguLfguK3guIHguYTguKHguYLguITguKPguYLguJ/guJk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0IiBuYW1lPSJvayI+CisgICAgPHZhbHVlPuC4leC4geC4peC4hzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NSIgbmFtZT0iY2FuY2VsMiI+CisgICAgPHZhbHVlPuC4ouC4geC5gOC4peC4tOC4gTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NiIgbmFtZT0icmVjb25lZWN0bmVlZGVkIj4KKyAgICA8dmFsdWU+4LiE4Li44LiT4LiV4LmJ4Lit4LiH4LiX4Liz4LiB4Liy4Lij4LmA4LiK4Li34LmI4Lit4Lih4LiV4LmI4Lit4LmD4Lir4Lih4LmIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3IiBuYW1lPSJlZGl0c2V0dXAiPgorICAgIDx2YWx1ZT7guYHguIHguYnguYTguILguIHguLLguKPguJXguLHguYnguIfguITguYjguLI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgiIG5hbWU9ImNvdXJzZSI+CisgICAgPHZhbHVlPuC4q+C4peC4seC4geC4quC4ueC4leC4ozo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkiIG5hbWU9Imxhbmd1YWdlIj4KKyAgICA8dmFsdWU+4Lig4Liy4Lip4LiyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MCIgbmFtZT0ib2syIj4KKyAgICA8dmFsdWU+4LiV4LiB4Lil4LiHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxIiBuYW1lPSJjYW5jZWwzIj4KKyAgICA8dmFsdWU+4Lii4LiB4LmA4Lil4Li04LiBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyIiBuYW1lPSJjbGVhcndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT7guKXguJrguYTguKfguJfguYzguJrguK3guKPguYzguJQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMiIG5hbWU9ImNsZWFyd2hpdGVib2FyZHF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+4LiE4Li44LiT4LiV4LmJ4Lit4LiH4LiB4Liy4Lij4LmD4Lir4LmJ4Lil4Lia4LmE4Lin4LiX4LmM4Lia4Lit4Lij4LmM4LiU4LmD4Lir4LmJ4Lin4LmI4Liy4LiH4LiB4LmI4Lit4LiZ4LiX4Li14LmI4LiI4Liw4LmA4Lie4Li04LmI4Lih4Lij4Li54Lib4LmD4Lir4Lih4LmI4Lir4Lij4Li34Lit4LmE4Lih4LmIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0IiBuYW1lPSJkb250YXNrYWdhaW4iPgorICAgIDx2YWx1ZT7guYTguKHguYjguJXguYnguK3guIfguJbguLLguKHguK3guLXguIE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUiIG5hbWU9Im5vIj4KKyAgICA8dmFsdWU+4LmE4Lih4LmIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2IiBuYW1lPSJlZGl0c2V0dXAyIj4KKyAgICA8dmFsdWU+4LmB4LiB4LmJ4LmE4LiC4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4LiyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3IiBuYW1lPSJuZWVkY29uZmlybWF0aW9ud2hpdGVib2FyZCI+CisgICAgPHZhbHVlPuC4guC4reC5g+C4q+C5ieC4ouC4t+C4meC4ouC4seC4meC4reC4teC4geC4hOC4o+C4seC5ieC4h+C4geC5iOC4reC4meC4iOC4sOC4peC4muC5hOC4p+C4l+C5jOC4muC4reC4o+C5jOC4lOC5g+C4q+C5ieC4p+C5iOC4suC4hzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OCIgbmFtZT0idXNlcmluZm8iPgorICAgIDx2YWx1ZT7guILguYnguK3guKHguLnguKXguJzguLnguYnguYPguIrguYk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkiIG5hbWU9ImNsZWFyZHJhd2FyZWEiPgorICAgIDx2YWx1ZT7guKXguJrguJrguKPguLTguYDguKfguJPguKfguLLguJTguKPguLnguJs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAiIG5hbWU9InVuZG8iPgorICAgIDx2YWx1ZT7guYDguKXguLTguIHguJfguLM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzEiIG5hbWU9InJlZG8iPgorICAgIDx2YWx1ZT7guJfguLPguIvguYnguLM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIiIG5hbWU9InNlbGVjdG9iamVjdCI+CisgICAgPHZhbHVlPuC5gOC4peC4t+C4reC4geC4o+C4suC4ouC4geC4suC4ozwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MyIgbmFtZT0idGV4dCI+CisgICAgPHZhbHVlPuC4guC5ieC4reC4hOC4p+C4suC4oTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NCIgbmFtZT0icGFpbnQiPgorICAgIDx2YWx1ZT7guKPguLDguJrguLLguKLguKrguLU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUiIG5hbWU9ImRyYXdsaW5lIj4KKyAgICA8dmFsdWU+4Lin4Liy4LiU4LmA4Liq4LmJ4LiZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2IiBuYW1lPSJkcmF3dSI+CisgICAgPHZhbHVlPuC4guC4teC4lOC5gOC4quC5ieC4meC5g+C4leC5iTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NyIgbmFtZT0icmVjdCI+CisgICAgPHZhbHVlPuC4quC4teC5iOC5gOC4q+C4peC4teC5iOC4ouC4oeC4nOC4t+C4meC4nOC5ieC4sjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OCIgbmFtZT0iZWxsaXBzZSI+CisgICAgPHZhbHVlPuC4p+C4h+C4o+C4tTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OSIgbmFtZT0iYXJyb3ciPgorICAgIDx2YWx1ZT7guKXguLnguIHguKjguKM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAiIG5hbWU9ImRlbGV0ZWNob3NlbiI+CisgICAgPHZhbHVlPuC4peC4muC4o+C4suC4ouC4geC4suC4o+C4l+C4teC5iOC5gOC4peC4t+C4reC4geC5hOC4p+C5iTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MSIgbmFtZT0iYXBwbGl5bW9kIj4KKyAgICA8dmFsdWU+4Liq4Lih4Lix4LiE4Lij4LmA4Lie4Li34LmI4Lit4LiX4Liz4Lir4LiZ4LmJ4Liy4LiX4Li14LmI4LiU4Liz4LmA4LiZ4Li04LiZ4Lij4Liy4Lii4LiB4Liy4LijPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyIiBuYW1lPSJhcHBseSI+CisgICAgPHZhbHVlPuC4quC4oeC4seC4hOC4ozwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MyIgbmFtZT0iY2FuY2VsIj4KKyAgICA8dmFsdWU+4Lii4LiB4LmA4Lil4Li04LiBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0IiBuYW1lPSJtb2QiPgorICAgIDx2YWx1ZT7guIHguKXguLLguKLguYDguJvguYfguJnguJzguLnguYnguJTguLPguYDguJnguLTguJnguKPguLLguKLguIHguLLguKM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUiIG5hbWU9ImNsb3NlIj4KKyAgICA8dmFsdWU+4Lib4Li04LiUPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2IiBuYW1lPSJpdGFsaWMiPgorICAgIDx2YWx1ZT7guJXguLHguKfguYDguK3guLXguKLguIc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODciIG5hbWU9ImJvbGQiPgorICAgIDx2YWx1ZT7guJXguLHguKfguKvguJnguLI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgiIG5hbWU9IndhaXRpbmciPgorICAgIDx2YWx1ZT7guIHguLPguKXguLHguIfguKPguK08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkiIG5hbWU9ImFwcGx5TWVzc2FnZSI+CisgICAgPHZhbHVlPuC4nOC4ueC5ieC5g+C4iuC5ieC4leC5ieC4reC4h+C4geC4suC4o+C4quC4oeC4seC4hOC4o+C5gOC4m+C5h+C4meC4nOC4ueC5ieC4lOC4s+C5gOC4meC4tOC4meC4o+C4suC4ouC4geC4suC4ozo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAiIG5hbWU9ImFjY2VwdCI+CisgICAgPHZhbHVlPuC4ouC4reC4oeC4o+C4seC4mjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MSIgbmFtZT0icmVqZWN0Ij4KKyAgICA8dmFsdWU+4Lib4LiP4Li04LmA4Liq4LiYPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyIiBuYW1lPSJjYW5jZWwiPgorICAgIDx2YWx1ZT7guKLguIHguYDguKXguLTguIE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMiIG5hbWU9InNlbmRtb2RyZXF1ZXN0bWVzc2FnZSI+CisgICAgPHZhbHVlPuC4quC5iOC4h+C4hOC4s+C4guC4reC5hOC4m+C4ouC4seC4h+C4nOC4ueC5ieC5g+C4iuC5ieC4lOC4seC4h+C4leC5iOC4reC5hOC4m+C4meC4teC5iTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NCIgbmFtZT0iYWNjZXB0Ij4KKyAgICA8dmFsdWU+4Lii4Lit4Lih4Lij4Lix4Lia4LmB4Lil4LmJ4LinPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1IiBuYW1lPSJyZWplY3QiPgorICAgIDx2YWx1ZT7guJvguI/guLTguYDguKrguJjguYHguKXguYnguKc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYiIG5hbWU9ImNoYW5nZW1vZCI+CisgICAgPHZhbHVlPuC5gOC4m+C4peC4teC5iOC4ouC4meC4nOC4ueC5ieC4lOC4s+C5gOC4meC4tOC4meC4o+C4suC4ouC4geC4suC4ozwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NyIgbmFtZT0ibm9ubW9kZXJyb3JtZXNzYWdlIj4KKyAgICA8dmFsdWU+4LiE4Li44LiT4LmE4Lih4LmI4LmE4LiU4LmJ4LiB4Liz4Lil4Lix4LiH4LiU4Liz4LmA4LiZ4Li04LiZ4Lir4Lil4Lix4LiB4Liq4Li54LiV4Lij4LiZ4Li14LmJITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OCIgbmFtZT0ibW9kZXJhdG9yIj4KKyAgICA8dmFsdWU+4Lic4Li54LmJ4LiU4Liz4LmA4LiZ4Li04LiZ4Lij4Liy4Lii4LiB4Liy4LijOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OSIgbmFtZT0icm9vbWZ1bGxtZXNzYWdlIj4KKyAgICA8dmFsdWU+4Lir4LmJ4Lit4LiH4LiZ4Li14LmJ4LmA4LiV4LmH4Lih4LmB4Lil4LmJ4LinIOC4guC4reC4reC4oOC4seC4oiDguYLguJvguKPguJTguKXguK3guIfguYPguKvguKHguYjguKDguLLguKLguKvguKXguLHguIc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwIiBuYW1lPSJlbGxsaXBzZSI+CisgICAgPHZhbHVlPuC4p+C4h+C4o+C4tTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEiIG5hbWU9ImNsb3NlIj4KKyAgICA8dmFsdWU+4Lib4Li04LiUPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMiIgbmFtZT0iQXV0aEVycm9yIj4KKyAgICA8dmFsdWU+4LiC4LmJ4Lit4Lih4Li54Lil4LiX4Li14LmI4LiB4Lij4Lit4LiB4LiC4Lix4LiU4LiC4LmJ4Lit4LiHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMyIgbmFtZT0ibWluNHVzZXJuYW1lIj4KKyAgICA8dmFsdWU+4LiV4Lix4Lin4Lit4Lix4LiB4Lip4LijIDQg4LiV4Lix4Lin4LiC4Li24LmJ4LiZ4LmE4LibIOC4reC4seC4geC4qeC4o+C4leC4seC4p+C5g+C4q+C4jeC5iOC4oeC4teC4nOC4peC4quC4s+C4hOC4seC4jTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQiIG5hbWU9Im1pbjRwYXNzIj4KKyAgICA8dmFsdWU+4Lij4Lir4Lix4Liq4Lic4Li54LmJ4LmD4LiK4LmJ4LiV4LmJ4Lit4LiH4Lih4Li14LiV4Lix4Lin4Lit4Lix4LiB4Lip4Lij4Lit4Lii4LmI4Liy4LiH4LiZ4LmJ4Lit4LiiIDQg4LiV4Lix4LinPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNSIgbmFtZT0idXNlcm5hbWV0YWtlbiI+CisgICAgPHZhbHVlPuC4oeC4teC4nOC4ueC5ieC5g+C4iuC5ieC4iuC4t+C5iOC4reC4meC4teC5ieC5hOC4m+C5geC4peC5ieC4pzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYiIG5hbWU9ImVtYWlsdGFrZW4iPgorICAgIDx2YWx1ZT7guK3guLXguYDguKHguKXguYzguJnguLXguYnguKXguIfguJfguLDguYDguJrguLXguKLguJnguYTguJvguYHguKXguYnguKc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3IiBuYW1lPSJlbWFpbHRha2VuIj4KKyAgICA8dmFsdWU+4Lij4Liw4Lia4Lia4LiC4Lix4LiU4LiC4LmJ4Lit4LiHIOC5guC4m+C4o+C4lOC4leC4tOC4lOC4leC5iOC4reC4nOC4ueC5ieC4lOC4ueC5geC4peC4o+C4sOC4muC4mjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgiIG5hbWU9IkF1dGhsb2dpbiI+CisgICAgPHZhbHVlPuC4peC5h+C4reC4hOC4reC4tOC4mTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkiIG5hbWU9IkF1dGh1c2VyIj4KKyAgICA8dmFsdWU+4Lic4Li54LmJ4LmD4LiK4LmJOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAiIG5hbWU9IkF1dGhwYXNzIj4KKyAgICA8dmFsdWU+4Lij4Lir4Lix4Liq4Lic4LmI4Liy4LiZOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEiIG5hbWU9IkF1dGhsYW5nIj4KKyAgICA8dmFsdWU+4Lig4Liy4Lip4LiyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMiIgbmFtZT0iQXV0aHJlZyI+CisgICAgPHZhbHVlPuC4peC4h+C4iuC4t+C5iOC4reC5gOC4guC5ieC4suC5g+C4iuC5iTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMiIG5hbWU9InJlZ2Zvcm1oZWFkIj4KKyAgICA8dmFsdWU+4Lil4LiH4LiX4Liw4LmA4Lia4Li14Lii4LiZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNCIgbmFtZT0icmVnZm9ybXVzZXIiPgorICAgIDx2YWx1ZT7guJzguLnguYnguYPguIrguYk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNSIgbmFtZT0icmVnZm9ybXBhc3MiPgorICAgIDx2YWx1ZT7guKPguKvguLHguKrguJzguYjguLLguJk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNiIgbmFtZT0icmVnZm9ybXJldHlwZSI+CisgICAgPHZhbHVlPuC4nuC4tOC4oeC4nuC5jOC4i+C5ieC4szo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3IiBuYW1lPSJyZWdmb3JtZmlyc3RuYW1lIj4KKyAgICA8dmFsdWU+4LiK4Li34LmI4LitOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgiIG5hbWU9InJlZ2Zvcm1sYXN0bmFtZSI+CisgICAgPHZhbHVlPuC4meC4suC4oeC4quC4geC4uOC4pTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5IiBuYW1lPSJyZWdmb3JtbWFpbCI+CisgICAgPHZhbHVlPuC4reC4teC5gOC4oeC4peC5jDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwIiBuYW1lPSJyZWdmb3Jtc3RhdGUiPgorICAgIDx2YWx1ZT7guJvguKPguLDguYDguJfguKg6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMSIgbmFtZT0icmVnZm9ybWJ0bjEiPgorICAgIDx2YWx1ZT7guKXguIfguJfguLDguYDguJrguLXguKLguJk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyIiBuYW1lPSJyZWdmb3JtYnRuMiI+CisgICAgPHZhbHVlPuC4ouC4geC5gOC4peC4tOC4gTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMiIG5hbWU9IkF1dGhidG4yIj4KKyAgICA8dmFsdWU+4LmE4Lih4LmI4LmE4LiU4LmJ4LmA4Lib4LmH4LiZ4Liq4Lih4Liy4LiK4Li04LiBPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPuC4q+C4meC5ieC4suC5geC4o+C4gTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUiIG5hbWU9InVzZXJhZG1pbiI+CisgICAgPHZhbHVlPuC4nOC4ueC5ieC5g+C4iuC5iTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYiIG5hbWU9Imdyb3VwYWRtaW4iPgorICAgIDx2YWx1ZT7guIHguKXguLjguYjguKE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3IiBuYW1lPSJvcmdhZG1pbiI+CisgICAgPHZhbHVlPuC4reC4h+C4hOC5jOC4geC4ozwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgiIG5hbWU9ImhlYWRjb25mIj4KKyAgICA8dmFsdWU+4Lir4LmJ4Lit4LiH4Lib4Lij4Liw4LiK4Li44LihPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOSIgbmFtZT0iY29uZl9wdWIiPgorICAgIDx2YWx1ZT7guKrguLLguJjguLLguKPguJPguLA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwIiBuYW1lPSJoZWFkX29yZyI+CisgICAgPHZhbHVlPuC4reC4h+C4hOC5jOC4geC4ozwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzEiIG5hbWU9ImJ0bl9lbnRlcnJvb20iPgorICAgIDx2YWx1ZT7guYDguILguYnguLLguKvguYnguK3guIc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2xvZ2luIj4KKyAgICA8dmFsdWU+4Lil4LmH4Lit4LiB4Lit4Li04LiZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMyIgbmFtZT0idXNlcmFsdGVyc2VsZl9wYXNzIj4KKyAgICA8dmFsdWU+4Lij4Lir4Lix4Liq4Lic4LmI4Liy4LiZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNCIgbmFtZT0idXNlcmFsdGVyc2VsZl9wYXNzcmV0eXBlIj4KKyAgICA8dmFsdWU+4Lie4Li04Lih4Lie4LmM4LiL4LmJ4LizPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNSIgbmFtZT0idXNlcmFsdGVyc2VsZl9maXJzdG5hbWUiPgorICAgIDx2YWx1ZT7guIrguLfguYjguK08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2xhc3RuYW1lIj4KKyAgICA8dmFsdWU+4LiZ4Liy4Lih4Liq4LiB4Li44LilPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNyIgbmFtZT0idXNlcmFsdGVyc2VsZl9lbWFpbCI+CisgICAgPHZhbHVlPuC4reC4teC5gOC4oeC4peC5jDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgiIG5hbWU9InVzZXJhbHRlcnNlbGZfYmlydGgiPgorICAgIDx2YWx1ZT7guKfguLHguJnguYDguIHguLTguJQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3N0cmVldG5vIj4KKyAgICA8dmFsdWU+4LiW4LiZ4LiZL+C5gOC4peC4guC4l+C4teC5iDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDAiIG5hbWU9InVzZXJhbHRlcnNlbGZfdG93biI+CisgICAgPHZhbHVlPuC4o+C4q+C4seC4quC5hOC4m+C4o+C4qeC4k+C4teC4ouC5jC/guIjguLHguIfguKvguKfguLHguJQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3N0YXRlIj4KKyAgICA8dmFsdWU+4Lib4Lij4Liw4LmA4LiX4LioPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MiIgbmFtZT0idXNlcmFsdGVyc2VsZl9hZHJlc3Njb21tZW50Ij4KKyAgICA8dmFsdWU+4LiC4LmJ4Lit4Lih4Li54Lil4LiX4Li14LmI4Lit4Lii4Li54LmIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MyIgbmFtZT0idXNlcmFsdGVyc2VsZl9oZWFkZXIiPgorICAgIDx2YWx1ZT7guILguYnguK3guKHguLnguKXguJzguLnguYnguYPguIrguYk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0IiBuYW1lPSJzYXZlbWVudWJhcl9zYXZlbGFiZWwiPgorICAgIDx2YWx1ZT7guJrguLHguJnguJfguLbguIE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1IiBuYW1lPSJzYXZlbWVudWJhcl9zYXZlbGFiZWwiPgorICAgIDx2YWx1ZT7guJrguLHguJnguJfguLbguIE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2IiBuYW1lPSJhZG1pbl91c2VybGlzdF91c2VyX2lkIj4KKyAgICA8dmFsdWU+4Lir4Lih4Liy4Lii4LmA4Lil4LiC4Lib4Lij4Liw4LiI4Liz4LiV4Lix4Lin4Lic4Li54LmJ4LmD4LiK4LmJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NyIgbmFtZT0iYWRtaW5fdXNlcmxpc3RfbG9naW4iPgorICAgIDx2YWx1ZT7guKXguYfguK3guITguK3guLTguJk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4IiBuYW1lPSJhZG1pbl91c2VybGlzdF9maXJzdG5hbSI+CisgICAgPHZhbHVlPuC4iuC4t+C5iOC4rTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkiIG5hbWU9ImFkbWluX3VzZXJsaXN0X2xhc3RuYW1lIj4KKyAgICA8dmFsdWU+4LiZ4Liy4Lih4Liq4LiB4Li44LilPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MCIgbmFtZT0idHVybm92ZXJsaXN0X25leHQiPgorICAgIDx2YWx1ZT7guYHguKrguJTguIfguJbguLHguJTguYTguJs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxIiBuYW1lPSJ0dXJub3Zlcmxpc3RfcHJlIj4KKyAgICA8dmFsdWU+4LmB4Liq4LiU4LiH4LiB4LmI4Lit4LiZ4Lir4LiZ4LmJ4Liy4LiZ4Li14LmJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MiIgbmFtZT0ic2F2ZWNvbnRlbnRfY29uZmlybSI+CisgICAgPHZhbHVlPuC4peC4muC4muC4seC4meC4l+C4tuC4gTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMiIG5hbWU9InNhdmVjb250ZW50X2NvbmZpcm1fY2FuY2VsX2J0biI+CisgICAgPHZhbHVlPuC4ouC4geC5gOC4peC4tOC4gTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTQiIG5hbWU9InNhdmVjb250ZW50X2NvbmZpcm1fY29uZmlybV9idG4iPgorICAgIDx2YWx1ZT7guKXguJo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU1IiBuYW1lPSJzYXZlbWVudWJhcl9hZGRsYWJlbCI+CisgICAgPHZhbHVlPuC4muC4seC4meC4l+C4tuC4geC5g+C4q+C4oeC5iDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTYiIG5hbWU9InNhdmVtZW51YmFyX3JlbG9hZGxhYmVsIj4KKyAgICA8dmFsdWU+4Lij4Li14LmA4Lif4Lij4LiK4Lia4Lix4LiZ4LiX4Li24LiBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NyIgbmFtZT0ic2F2ZW1lbnViYXJfZGVsZXRlbGFiZWwiPgorICAgIDx2YWx1ZT7guKXguJrguJrguLHguJnguJfguLbguIE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU4IiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fc3RhdHVzIj4KKyAgICA8dmFsdWU+4Liq4LiW4Liy4LiZ4LiwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1OSIgbmFtZT0idXNlcmFsdGVyX2FkbWluX3N0YXR1c0l0ZW0iPgorICAgIDx2YWx1ZT7guKLguIHguYDguKXguLTguIHguYHguKXguYnguKc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYwIiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fc3RhdHVzSXRlbSI+CisgICAgPHZhbHVlPuC5g+C4iuC5ieC4h+C4suC4meC5geC4peC5ieC4pzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjEiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9vcmdhbmlzYXRpb24iPgorICAgIDx2YWx1ZT7guK3guIfguITguYzguIHguKM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYyIiBuYW1lPSJjYWxlbmRhcl9pY29ubGFiZWwiPgorICAgIDx2YWx1ZT7guJvguI/guLTguJfguLTguJk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYzIiBuYW1lPSJzYXZld2luZG93X2J0biI+CisgICAgPHZhbHVlPuC4m+C4tOC4lDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjQiIG5hbWU9Im9yZ2FuaXNhdGlvbnRhYmxlbGlzdF9pZHJvdyI+CisgICAgPHZhbHVlPuC4q+C4oeC4suC4ouC5gOC4peC4guC4m+C4o+C4sOC4iOC4s+C4reC4h+C4hOC5jOC4geC4ozwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjUiIG5hbWU9Im9yZ2FuaXNhdGlvbnRhYmxlbGlzdF9uYW1lcm93Ij4KKyAgICA8dmFsdWU+4LiK4Li34LmI4LitPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2NiIgbmFtZT0idXNlcnZhbHVlX2xldmVsaWQxIj4KKyAgICA8dmFsdWU+4Lic4Li54LmJ4LmD4LiK4LmJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2NyIgbmFtZT0idXNlcnZhbHVlX2xldmVsaWQyIj4KKyAgICA8dmFsdWU+4Lic4Li54LmJ4LiU4Liz4LmA4LiZ4Li04LiZ4Lij4Liy4Lii4LiB4Liy4LijPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2OCIgbmFtZT0idXNlcnZhbHVlX2xldmVsaWQzIj4KKyAgICA8dmFsdWU+4Lic4Li54LmJ4LiU4Li54LmB4LilPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2OSIgbmFtZT0idXNlcnZhbHVlX2xldmVsbGFiZWwiPgorICAgIDx2YWx1ZT7guKPguLDguJTguLHguJrguJzguLnguYnguYPguIrguYk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTcwIiBuYW1lPSJvcmd2YWx1ZV9oZWFkZXIiPgorICAgIDx2YWx1ZT7guK3guIfguITguYzguIHguKM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTcxIiBuYW1lPSJvcmd2YWx1ZV9vcmduYW1lIj4KKyAgICA8dmFsdWU+4LiK4Li34LmI4LitPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MiIgbmFtZT0ib3JndmFsdWVfb3JnbmFtZSI+CisgICAgPHZhbHVlPuC5gOC4nuC4tOC5iOC4oeC4reC4h+C4hOC5jOC4geC4ozwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzMiIG5hbWU9Im9yZ3ZhbHVlX29yZ25hbWUiPgorICAgIDx2YWx1ZT7guYDguJ7guLTguYjguKHguK3guIfguITguYzguIHguKM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc0IiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luIj4KKyAgICA8dmFsdWU+4Lii4LiB4LmA4Lil4Li04LiBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3NSIgbmFtZT0ib3JndmFsdWVfdXNlcndpbiI+CisgICAgPHZhbHVlPuC5gOC4nuC4tOC5iOC4oTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzYiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW4iPgorICAgIDx2YWx1ZT7guKLguYnguLLguKLguK3guIfguITguYzguIHguKPguK3guK3guIE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc3IiBuYW1lPSJvcmd2YWx1ZV91c2VybGlzdCI+CisgICAgPHZhbHVlPuC4nOC4ueC5ieC5g+C4iuC5iTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzgiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJsaXN0YWRkIj4KKyAgICA8dmFsdWU+4LmA4Lie4Li04LmI4Lih4Lic4Li54LmJ4LmD4LiK4LmJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3OSIgbmFtZT0ib3JndmFsdWVfdXNlcmxpc3RkZWxldGUiPgorICAgIDx2YWx1ZT7guKXguJrguJzguLnguYnguYPguIrguYk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgwIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luaGVhZGVyIj4KKyAgICA8dmFsdWU+4LmA4Lie4Li04LmI4Lih4Lic4Li54LmJ4LmD4LiK4LmJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4MSIgbmFtZT0ib3JndmFsdWVfdXNlcndpbnNlYXJjaGZpZWxkIj4KKyAgICA8dmFsdWU+4LiE4LmJ4LiZ4Lir4Liy4Lic4Li54LmJ4LmD4LiK4LmJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4MiIgbmFtZT0ib3JndmFsdWVfdXNlcndpbnNlYXJjaGJ0biI+CisgICAgPHZhbHVlPuC4hOC5ieC4meC4q+C4sjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODMiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5zZWFyY2hyZXN1bHQiPgorICAgIDx2YWx1ZT7guJzguLnguYnguYPguIrguYk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg0IiBuYW1lPSJsb2dpbndpbl9jaG9vc2VvcmdhbmlzYXRpb24iPgorICAgIDx2YWx1ZT7guK3guIfguITguYzguIHguKM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg1IiBuYW1lPSJsb2dpbndpbl9jaG9vc2VvcmdhbmlzYXRpb25idG4iPgorICAgIDx2YWx1ZT7guJvguYnguK3guJnguILguYnguK3guKHguLnguKU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg2IiBuYW1lPSJuYXZpX3Jvb21hZG1pbiI+CisgICAgPHZhbHVlPuC4q+C5ieC4reC4h+C4m+C4o+C4sOC4iuC4uOC4oeC4geC4peC4uOC5iOC4oTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODciIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT7guKvguYnguK3guIfguJvguKPguLDguIrguLjguKHguIHguKXguLjguYjguKE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg4IiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+4Lir4Lih4Liy4Lii4LmA4Lil4LiC4Lib4Lij4Liw4LiI4Liz4LiV4Lix4LinPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4OSIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPuC4iuC4t+C5iOC4rTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTAiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT7guKrguLLguJjguLLguKPguJPguLA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkxIiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+4Lit4LiH4LiE4LmM4LiB4LijPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5MiIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPuC4q+C5ieC4reC4h+C4m+C4o+C4sOC4iuC4uOC4oTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTMiIG5hbWU9InJvb212YWx1ZV9uYW1lIj4KKyAgICA8dmFsdWU+4LiK4Li34LmI4LitPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NCIgbmFtZT0icm9vbXZhbHVlX3R5cGUiPgorICAgIDx2YWx1ZT7guJvguKPguLDguYDguKDguJc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk1IiBuYW1lPSJyb29tdmFsdWVfaXNwdWJsaWMiPgorICAgIDx2YWx1ZT7guKrguLLguJjguLLguKPguJPguLA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk2IiBuYW1lPSJyb29tdmFsdWVfY29tbWVudCI+CisgICAgPHZhbHVlPuC4guC5ieC4reC4hOC4tOC4lOC5gOC4q+C5h+C4mTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTciIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWljb24iPgorICAgIDx2YWx1ZT7guJrguLHguJnguJfguLbguIHguYHguKXguLDguYDguK3guYfguIHguIvguYzguJ7guK3guKPguYzguJU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk4IiBuYW1lPSJ3aGl0ZWJvYXJkX29wZW5pY29uIj4KKyAgICA8dmFsdWU+4LmC4Lir4Lil4LiUPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5OSIgbmFtZT0id2hpdGVib2FyZF9zYXZlYXN3aW5oZWFkZXIiPgorICAgIDx2YWx1ZT7guJrguLHguJnguJfguLbguIHguYDguJvguYfguJk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAwIiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbnRleHQiPgorICAgIDx2YWx1ZT7guIrguLfguYjguK3guYTguJ/guKXguYw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAxIiBuYW1lPSJmaWxlcyI+CisgICAgPHZhbHVlPuC4iuC4t+C5iOC4reC5hOC4n+C4peC5jDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDIiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2luYnRuMSI+CisgICAgPHZhbHVlPuC4ouC4geC5gOC4peC4tOC4gTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDMiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2luYnRuMiI+CisgICAgPHZhbHVlPuC4ouC4geC5gOC4peC4tOC4gTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDQiIG5hbWU9InJwY2Vycm9yd2luX2hlYWRlciI+CisgICAgPHZhbHVlPuC4guC4seC4lOC4guC5ieC4reC4hzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDUiIG5hbWU9ImxvYWR3bWxfaGVhZGVyIj4KKyAgICA8dmFsdWU+4LiB4Liz4Lil4Lix4LiH4LmC4Lir4Lil4LiUPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNiIgbmFtZT0ibG9hZHdtbF9tZXNzc2xvYWQiPgorICAgIDx2YWx1ZT7guKPguLLguKLguIHguLLguKPguJfguLXguYjguYLguKvguKXguJTguYHguKXguYnguKc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA3IiBuYW1lPSJsb2Fkd21sX21lc3NzeW5jIj4KKyAgICA8dmFsdWU+4LiB4Liz4Lil4Lix4LiH4LiL4Li04LiH4LiE4LmM4LmC4LiE4Lij4LmE4LiZ4LiL4LmM4Lil4Li54LiB4LiE4LmJ4Liy4Lit4Lii4Li54LmIIOC4peC4ueC4geC4hOC5ieC4suC4leC5ieC4reC4h+C4o+C4rTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA4IiBuYW1lPSJsb2FkaW1hZ2VfbWVzc2xvYWQiPgorICAgIDx2YWx1ZT7guIHguLPguKXguLHguIfguYLguKvguKXguJTguILguYnguK3guKHguLnguKXguKPguLnguJvguKDguLLguJ48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA5IiBuYW1lPSJsb2FkaW1hZ2VfbWVzc3N5bmMiPgorICAgIDx2YWx1ZT7guIHguLPguKXguLHguIfguIvguLTguIfguITguYzguYLguITguKPguYTguJnguIvguYzguKXguLnguIHguITguYnguLLguK3guKLguLnguYgg4Lil4Li54LiB4LiE4LmJ4Liy4LiV4LmJ4Lit4LiH4Lij4LitOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTAiIG5hbWU9ImxvYWR3bWxfY29uZmlybWhlYWRlciI+CisgICAgPHZhbHVlPuC4peC4muC4muC4o+C4tOC5gOC4p+C4k+C4p+C4suC4lOC4o+C4ueC4mzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTEiIG5hbWU9ImxvYWR3bWxfY29uZmlybW1lc3MiPgorICAgIDx2YWx1ZT7guKXguJrguJrguKPguLTguYDguKfguJPguKfguLLguJTguKPguLnguJsg4LiC4LmJ4Lit4Lih4Li54Lil4LiX4Lix4LmJ4LiH4Lir4Lih4LiU4Lia4LiZ4LmE4Lin4LiX4LmM4Lia4Lit4Lij4LmM4LiU4LiI4Liw4Liq4Li54LiN4Lir4Liy4Lii4LmE4LibPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMiIgbmFtZT0ibG9hZHdtbF9jb25maXJtbWVzczIiPgorICAgIDx2YWx1ZT7guKLguLfguJnguKLguLHguJnguIHguYjguK3guJnguYLguKvguKXguJTguYTguJ/guKXguYw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEzIiBuYW1lPSJzZW5kX2ludml0YXRpb25fYnRuIj4KKyAgICA8dmFsdWU+4Liq4LmI4LiH4LiE4Liz4LmA4LiK4Li04LiNPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNCIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX2hlYWRlciI+CisgICAgPHZhbHVlPuC4quC5iOC4h+C4hOC4s+C5gOC4iuC4tOC4jTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTUiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+4LmA4Lij4Li34LmI4Lit4LiHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNiIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX3JlY2lwaWVudCI+CisgICAgPHZhbHVlPuC4nOC4ueC5ieC4o+C4seC4mjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTciIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9tZXNzYWdlIj4KKyAgICA8dmFsdWU+4LiC4LmJ4Lit4LiE4Lin4Liy4LihPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxOCIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX2J0bl9jb25maXJtIj4KKyAgICA8dmFsdWU+4Liq4LmI4LiHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxOSIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX2J0bl9jYW5jZWwiPgorICAgIDx2YWx1ZT7guKLguIHguYDguKXguLTguIE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIwIiBuYW1lPSJzZW5kX2NoYXRfdGV4dF9idG4iPgorICAgIDx2YWx1ZT7guKrguYjguIc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIxIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5faGVhZGVyIj4KKyAgICA8dmFsdWU+4LiC4LmJ4Lit4Lih4Li54Lil4Lic4Li54LmJ4LmD4LiK4LmJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyMiIgbmFtZT0iaW52aXRlZF91c2Vyd2luX3N1YmplY3QiPgorICAgIDx2YWx1ZT7guIrguLfguYjguK3guYDguKXguYjguJnguILguK3guIfguITguLjguJPguYPguJnguIHguLLguKPguJvguKPguLDguIrguLjguKHguITguKPguLHguYnguIfguJnguLXguYk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIzIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fbG9naW4iPgorICAgIDx2YWx1ZT7guIrguLfguYjguK3guYDguKXguYjguJk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI0IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZmlyc3RuYW1lIj4KKyAgICA8dmFsdWU+4LiK4Li34LmI4LitPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNSIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2xhc3RuYW1lIj4KKyAgICA8dmFsdWU+4LiZ4Liy4Lih4Liq4LiB4Li44LilPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNiIgbmFtZT0iaW52aXRlZF91c2Vyd2luX21haWwiPgorICAgIDx2YWx1ZT7guK3guLXguYDguKHguKXguYw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI3IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fbGFuZyI+CisgICAgPHZhbHVlPuC4oOC4suC4qeC4sjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjgiIG5hbWU9Imludml0ZWRfdXNlcndpbl9lbnRlciI+CisgICAgPHZhbHVlPuC4m+C5ieC4reC4meC4guC5ieC4reC4oeC4ueC4pTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjkiIG5hbWU9Imludml0ZWRfdXNlcndpbl9lbnRlciI+CisgICAgPHZhbHVlPuC4geC4s+C4peC4seC4h+C5guC4q+C4peC4lDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzAiIG5hbWU9Imludml0ZWRfdXNlcndpbl9lbnRlciI+CisgICAgPHZhbHVlPuC4geC4s+C4peC4seC4h+C4lOC4suC4p+C4meC5jOC5guC4q+C4peC4lOC4guC5ieC4reC4oeC4ueC4pSDguYLguJvguKPguJTguKPguK3guKrguLHguIHguITguKPguLnguYghPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMSIgbmFtZT0idXNlcl9yZWdpc3RlckZhbHNlUFdEIj4KKyAgICA8dmFsdWU+4Lij4Lir4Lix4Liq4Lic4LmI4Liy4LiZ4Lic4Li04LiUPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMiIgbmFtZT0idXNlcl9yZWdpc3RlckZhbHNlUFdESGVhZGVyIj4KKyAgICA8dmFsdWU+4LmC4Lib4Lij4LiU4LmD4Liq4LmI4Lij4Lir4Lix4Liq4Lic4LmI4Liy4LiZ4Liq4Lit4LiH4LiE4Lij4Lix4LmJ4LiH4LmD4Lir4LmJ4LiV4Lij4LiH4LiB4Lix4LiZ4LmC4LiU4Lii4Lih4Li14LiV4Lix4Lin4Lit4Lix4LiB4Lip4Lij4Lit4Lii4LmI4Liy4LiH4LiZ4LmJ4Lit4LiiIDYg4LiV4Lix4LinPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMyIgbmFtZT0idXNlcl9yZWdpc3Rlck1haWxFcnJvciI+CisgICAgPHZhbHVlPuC4reC4teC5gOC4oeC4peC5jOC4nOC4tOC4lDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzQiIG5hbWU9InVzZXJfcmVnaXN0ZXJNYWlsRXJyb3JIZWFkZXIiPgorICAgIDx2YWx1ZT7guK3guLXguYDguKHguKXguYzguJfguLXguYjguITguLjguJPguIHguKPguK3guIHguYTguKHguYjguJbguLnguIHguJXguYnguK3guIc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM1IiBuYW1lPSJ1c2VyX3JlZ2lzdGVyU3VjY2VzcyI+CisgICAgPHZhbHVlPuC4geC4suC4o+C4peC4h+C4l+C4sOC5gOC4muC4teC4ouC4meC5gOC4quC4o+C5h+C4iOC4quC4oeC4muC4ueC4o+C4k+C5jDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzYiIG5hbWU9InVzZXJfcmVnaXN0ZXJTdWNjZXNzSGVhZGVyIj4KKyAgICA8dmFsdWU+4LiI4Lix4LiU4LiX4Liz4Lia4Lix4LiN4LiK4Li14LiC4Lit4LiH4LiE4Li44LiT4LmA4Liq4Lij4LmH4LiI4LmA4Lij4Li14Lii4Lia4Lij4LmJ4Lit4Lii4LmB4Lil4LmJ4LinIOC4hOC4uOC4k+C4quC4suC4oeC4suC4o+C4luC4peC5h+C4reC4hOC4reC4tOC4meC5hOC4lOC5ieC5geC4peC5ieC4pzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzciIG5hbWU9InVzZXJfc2hhcmluZ19tZXNzYWdlIj4KKyAgICA8dmFsdWU+4LiE4Li44LiT4LmE4Lih4LmI4Liq4Liy4Lih4Liy4Lij4LiW4LmB4LiK4Lij4LmM4Lir4LiZ4LmJ4Liy4LiI4Lit4LmE4LiU4LmJ4LmD4LiZ4LiC4LiT4Liw4LiZ4Li14LmJIOC4oeC4teC5g+C4hOC4o+C4muC4suC4h+C4hOC4meC5geC4iuC4o+C5jOC4q+C4meC5ieC4suC4iOC4reC5hOC4m+C5geC4peC5ieC4pzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzgiIG5hbWU9InVzZXJfc2hhcmluZ19tZXNzYWdlSGVhZGVyIj4KKyAgICA8dmFsdWU+4Lir4LmJ4Liy4Lih4LmB4LiK4Lij4LmMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzOSIgbmFtZT0idXNlcl9kb1N0YXJ0U2NyZWVuVmlld2VyIj4KKyAgICA8dmFsdWU+4LmB4LiK4Lij4LmM4Lir4LiZ4LmJ4Liy4LiI4LitPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0MCIgbmFtZT0ic2NyZWVuX3dhcm5CYW5kd2lkdGgiPgorICAgIDx2YWx1ZT7guYHguJrguJnguJTguYzguKfguLTguJjguYTguKHguYjguJTguLU6IOC4hOC4uOC4k+C5hOC4oeC5iOC4quC4suC4oeC4suC4o+C4luC4i+C4tOC4h+C4hOC5jOC5guC4hOC4o+C5hOC4meC4i+C5jOC4q+C4meC5ieC4suC4iOC4reC5hOC4lOC5iSDguYDguJ/guKPguKHguJXguYjguLLguIfguYYg4LiI4Liw4LiW4Li54LiB4LiX4Li04LmJ4LiH4LmE4LibIOC4q+C4suC4geC4oeC4teC4hOC4s+C5gOC4leC4t+C4reC4meC4meC4teC5ieC4m+C4o+C4suC4geC4j+C4muC5iOC4reC4ouC4hOC4o+C4seC5ieC4hyDguITguKfguKPguILguK3guYPguKvguYnguJzguLnguYnguJTguLPguYDguJnguLTguJnguKPguLLguKLguIHguLLguKPguKXguJTguITguLjguJPguKDguLLguJ7guKvguJnguYnguLLguIjguK08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQxIiBuYW1lPSJzY3JlZW5fdXNlcmxhYmVsIj4KKyAgICA8dmFsdWU+4Lir4LiZ4LmJ4Liy4LiI4Lit4LiC4Lit4LiHOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDIiIG5hbWU9IndoaXRlYm9hcmRfdGFiX3BhaW50Ij4KKyAgICA8dmFsdWU+4Lij4Liw4Lia4Liy4Lii4Liq4Li1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0MyIgbmFtZT0id2hpdGVib2FyZF90YWJfZG9jdW1lbnQiPgorICAgIDx2YWx1ZT7guYDguK3guIHguKrguLLguKM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ0IiBuYW1lPSJ0YWJiYXJfY2hhdGljb24iPgorICAgIDx2YWx1ZT7guYHguIrguJc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ1IiBuYW1lPSJ0YWJiYXJfZmlsZXNpY29uIj4KKyAgICA8dmFsdWU+4LmE4Lif4Lil4LmMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0NiIgbmFtZT0idGFiYmFyX3BhcnRpY2lwYW50c2ljb24iPgorICAgIDx2YWx1ZT7guKrguKHguLLguIrguLTguIE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ3IiBuYW1lPSJzd2ZwcmVzZW50YXRpb25fbGlzdHNhdmVvcmlnIj4KKyAgICA8dmFsdWU+4LiU4Liy4Lin4LiZ4LmM4LmC4Lir4Lil4LiU4LmA4Lit4LiB4Liq4Liy4Lij4LiV4LmJ4LiZ4LiJ4Lia4Lix4LiaPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0OCIgbmFtZT0ic3dmcHJlc2VudGF0aW9uX2xpc3RzYXZlcGRmIj4KKyAgICA8dmFsdWU+4LiU4Liy4Lin4LiZ4LmM4LmC4Lir4Lil4LiU4LmA4Lit4LiB4Liq4Liy4LijIFBERjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDkiIG5hbWU9InN3ZnByZXNlbnRhdGlvbl9saXN0bG9hZHN3ZiI+CisgICAgPHZhbHVlPuC5guC4q+C4peC4lOC4geC4suC4o+C4meC4s+C5gOC4quC4meC4reC5hOC4m+C4ouC4seC4h+C5hOC4p+C4l+C5jOC4muC4reC4o+C5jOC4lDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTAiIG5hbWU9Im5hdmltYWluX2NvbmZpZyI+CisgICAgPHZhbHVlPuC4geC4suC4o+C4m+C4o+C4seC4muC5geC4leC5iOC4h+C4hOC5iOC4sjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTEiIG5hbWU9IndoaXRlYm9hcmRfYm91bmRpbmdib3hfZHJhZyI+CisgICAgPHZhbHVlPuC4peC4suC4geC4o+C4suC4ouC4geC4suC4o+C4meC4teC5iTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTIiIG5hbWU9IndoaXRlYm9hcmRfYm91bmRpbmdib3hfcmVzaXplIj4KKyAgICA8dmFsdWU+4Lib4Lij4Lix4Lia4LiC4LiZ4Liy4LiU4Lij4Liy4Lii4LiB4Liy4Lij4LiZ4Li14LmJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MyIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfem9vbSI+CisgICAgPHZhbHVlPiU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU0IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9zbGlkZSI+CisgICAgPHZhbHVlPuC4guC4reC4hzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTUiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX2ZpcnN0c2xpZGUiPgorICAgIDx2YWx1ZT7guYTguJvguKLguLHguIfguKvguJnguYnguLLguYHguKPguIE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU2IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9wcmVzbGlkZSI+CisgICAgPHZhbHVlPuC5hOC4m+C4ouC4seC4h+C4q+C4meC5ieC4suC4geC5iOC4reC4meC4meC4teC5iTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTciIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX25leHRzbGlkZSI+CisgICAgPHZhbHVlPuC5hOC4m+C4ouC4seC4h+C4q+C4meC5ieC4suC4luC4seC4lOC5hOC4mzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTgiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX2xhc3RzbGlkZSI+CisgICAgPHZhbHVlPuC5hOC4m+C4ouC4seC4h+C4q+C4meC5ieC4suC4quC4uOC4lOC4l+C5ieC4suC4ojwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTkiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3pvb21taW51cyI+CisgICAgPHZhbHVlPuC4guC4ouC4suC4ouC4ouC5iOC4rSAtLTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjAiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3pvb21wbHVzIj4KKyAgICA8dmFsdWU+4LiC4Lii4Liy4Lii4LmD4Lir4LiN4LmIICsrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MSIgbmFtZT0ic2FsdXRhdGlvbl9tciI+CisgICAgPHZhbHVlPuC4meC4suC4ojwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjIiIG5hbWU9InNhbHV0YXRpb25fbWlzcyI+CisgICAgPHZhbHVlPuC4meC4suC4h+C4quC4suC4pzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjMiIG5hbWU9Im5hdmltYWluX2NvbmZhZG1pbiI+CisgICAgPHZhbHVlPuC4geC4suC4o+C4m+C4o+C4seC4muC5geC4leC5iOC4h+C4hOC5iOC4sjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjQiIG5hbWU9ImNvbmZ0YWJsZV9oZWFkZXJJZCI+CisgICAgPHZhbHVlPuC4q+C4oeC4suC4ouC5gOC4peC4guC4m+C4o+C4sOC4iOC4s+C4leC4seC4pzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjUiIG5hbWU9ImNvbmZ0YWJsZV9oZWFkZXJrZXkiPgorICAgIDx2YWx1ZT7guJvguLjguYjguKE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY2IiBuYW1lPSJjb25mYWRtaW5mb3JtX2hlYWRlciI+CisgICAgPHZhbHVlPuC4geC4suC4o+C4m+C4o+C4seC4muC5geC4leC5iOC4h+C4hOC5iOC4sjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjciIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWxrZXkiPgorICAgIDx2YWx1ZT7guJvguLjguYjguKE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY4IiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsdXBkYXRlZCI+CisgICAgPHZhbHVlPuC4reC4seC4nuC5gOC4lOC4l+C4peC5iOC4suC4quC4uOC4lDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjkiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWx1cGRhdGVkYnkiPgorICAgIDx2YWx1ZT7guK3guLHguJ7guYDguJTguJfguYLguJTguKI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjcwIiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsY29tbWVudCI+CisgICAgPHZhbHVlPuC4guC5ieC4reC4hOC4tOC4lOC5gOC4q+C5h+C4mTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzEiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWxrZXkiPgorICAgIDx2YWx1ZT7guITguYjguLI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjcyIiBuYW1lPSJ0dXJub3Zlcmxpc3RfbWF4cmVzdWx0cyI+CisgICAgPHZhbHVlPuC4guC4reC4hzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzMiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2hlYWRlciI+CisgICAgPHZhbHVlPuC4nOC4ueC5ieC5g+C4iuC5iTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzQiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2ljb25kZWxldGUiPgorICAgIDx2YWx1ZT7guKXguJrguJzguLnguYnguYPguIrguYnguK3guK3guIHguIjguLLguIHguK3guIfguITguYzguIHguKM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc1IiBuYW1lPSJvcmdhbmlzYXRpb25fdXNlcnNkZWxldGVkaGVhZCI+CisgICAgPHZhbHVlPuC4peC4mjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzYiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2FscmVhZGFkZGVkIj4KKyAgICA8dmFsdWU+4Lic4Li54LmJ4LmD4LiK4LmJ4Lij4Liy4Lii4LiZ4Li14LmJ4LmA4Lib4LmH4LiZ4Liq4Lih4Liy4LiK4Li04LiB4LiC4Lit4LiH4Lit4LiH4LiE4LmM4LiB4Lij4LiZ4Li14LmJ4Lit4Lii4Li54LmI4LmB4Lil4LmJ4LinPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NyIgbmFtZT0iZGFzaGJvYXJkX25ld3NoZWFkZXIiPgorICAgIDx2YWx1ZT7guILguYjguLLguKfguKrguLLguKM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc4IiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rc2hlYWRlciI+CisgICAgPHZhbHVlPuC4hOC4p+C4tOC4geC4peC4tOC4h+C4hOC5jDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzkiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtDb25mIj4KKyAgICA8dmFsdWU+4LmE4Lib4Lii4Lix4LiH4LiB4Liy4Lij4Lib4Lij4Liw4LiK4Li44LihPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MCIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua0F1ZGl0Ij4KKyAgICA8dmFsdWU+4LmE4Lib4Lii4Lix4LiH4Lir4Lit4Lib4Lij4Liw4LiK4Li44LihPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MSIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua3N1cHBvcnQiPgorICAgIDx2YWx1ZT7guILguYnguK3guKHguLnguKXguIrguYjguKfguKLguYDguKvguKXguLfguK3guYHguKXguLDguKrguJnguLHguJrguKrguJnguLjguJk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgyIiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tob21lcGFnZXVybCI+CisgICAgPHZhbHVlPmh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgzIiBuYW1lPSJkYXNoYm9hcmRfcXVpY2ttYWlsaW5nbGlzdHVybCI+CisgICAgPHZhbHVlPmh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9tYWlsLWxpc3RzLmh0bWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg0IiBuYW1lPSJkYXNoYm9hcmRfcmVwb3J0YnVncyI+CisgICAgPHZhbHVlPuC4o+C4suC4ouC4h+C4suC4meC5gOC4q+C4leC4uOC4guC4seC4lOC4guC5ieC4reC4hyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg1IiBuYW1lPSJkYXNoYm9hcmRfcnNzbGlzdGl0ZW1saW5rdGV4dCI+CisgICAgPHZhbHVlPuC5gOC4nuC4tOC5iOC4oeC5gOC4leC4tOC4oTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODYiIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmtob21lcGFnZWxhYmVsIj4KKyAgICA8dmFsdWU+4LmA4Lin4LmH4Lia4LmE4LiL4LiV4LmM4LiC4Lit4LiH4LmC4LiE4Lij4LiH4LiB4Liy4LijIChodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4NyIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua21haWxpbmdsaXN0bGFiZWwiPgorICAgIDx2YWx1ZT7guKPguLLguKLguIrguLfguYjguK3guK3guLXguYDguKHguKXguYzguILguK3guIfguJzguLnguYnguYPguIrguYkgKGh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9tYWlsLWxpc3RzLmh0bWwpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4OCIgbmFtZT0ibG9naW5fcmVtZW1iZXJ1c2VyIj4KKyAgICA8dmFsdWU+4LiI4Liz4LiK4Li34LmI4Lit4Lil4LmH4Lit4LiE4Lit4Li04LiZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4OSIgbmFtZT0ibWFpbl9uYXZpIj4KKyAgICA8dmFsdWU+4LmA4LiZ4Li34LmJ4Lit4Lir4LiyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPuC4q+C4meC5ieC4suC4q+C4peC4seC4geC4guC4reC4h+C4ieC4seC4mTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTEiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT7guIHguLLguKPguJvguKPguLDguIrguLjguKHguJfguLXguYjguJnguLHguJTguKvguKHguLLguKLguYTguKfguYnguILguK3guIfguInguLHguJk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkyIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+4LiH4Liy4LiZ4LiX4Li14LmI4LiZ4Lix4LiU4Lir4Lih4Liy4Lii4LmE4Lin4LmJ4LiC4Lit4LiH4LiJ4Lix4LiZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MyIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPuC4geC4suC4o+C4m+C4o+C4sOC4iuC4uOC4oeC4quC4suC4mOC4suC4o+C4k+C4sDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTQiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT7guIHguLLguKPguJvguKPguLDguIrguLjguKHguKrguYjguKfguJnguJXguLHguKc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk1IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+4LiH4Liy4LiZ4Liq4Liy4LiY4Liy4Lij4LiT4LiwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NiIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPuC4h+C4suC4meC4quC5iOC4p+C4meC4leC4seC4pzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTciIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT7guYDguJnguLfguYnguK3guKvguLLguKrguLLguJjguLLguKPguJPguLA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk4IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+4LmA4LiZ4Li34LmJ4Lit4Lir4Liy4Liq4LmI4Lin4LiZ4LiV4Lix4LinPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5OSIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPuC5gOC4meC4t+C5ieC4reC4q+C4suC4quC5iOC4p+C4meC4muC4uOC4hOC4hOC4pTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDAiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAxIiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+4LiB4Liy4Lij4LiU4Liz4LmA4LiZ4Li04LiZ4Lij4Liy4Lii4LiB4Liy4LijPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMiIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPuC4quC4oeC4seC4hOC4o+C5gOC4nuC4t+C5iOC4reC4l+C4s+C4q+C4meC5ieC4suC4l+C4teC5iOC4lOC4s+C5gOC4meC4tOC4meC4o+C4suC4ouC4geC4suC4ozwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDMiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT7guYLguJ7guKXguKXguYw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA0IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+4LmA4Lil4Li34Lit4LiB4LmE4Lif4Lil4LmMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNSIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPuC4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4sjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDYiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT7guIHguLLguKPguJXguLHguYnguIfguITguYjguLLguIHguKXguYnguK3guIfguYHguKXguLDguYTguKHguYLguITguKPguYLguJ/guJk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA3IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4LmE4Lin4LiX4LmM4Lia4Lit4Lij4LmM4LiUPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwOCIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPuC4reC4reC4gTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDkiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT7guIHguKXguLHguJrguYTguJvguKLguLHguIfguKvguYnguK3guIc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEwIiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+4Lil4LmH4Lit4LiE4LmA4Lit4LmJ4Liy4LiX4LmMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7guKXguLfguKHguKPguKvguLHguKrguJzguYjguLLguJk/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMiIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7guJXguLHguYnguIfguKPguKvguLHguKrguJzguYjguLLguJnguYPguKvguKHguYg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEzIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPuC5guC4lOC4ouC4reC4teC5gOC4oeC4peC5jDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTQiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+4LmC4LiU4Lii4LiK4Li34LmI4Lit4Lil4LmH4Lit4LiE4Lit4Li04LiZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxNSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7guK3guLXguYDguKHguKXguYzguILguK3guIfguITguLjguJM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE2IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPuC4iuC4t+C5iOC4reC4peC5h+C4reC4hOC4reC4tOC4meC4guC4reC4h+C4hOC4uOC4kzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTciIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+4Liq4LmI4LiH4Lit4Li14LmA4Lih4Lil4LmM4Lie4Lij4LmJ4Lit4Lih4Lil4Li04LiH4LiE4LmM4Liq4Liz4Lir4Lij4Lix4Lia4LiV4Lix4LmJ4LiH4Lij4Lir4Lix4Liq4Lic4LmI4Liy4LiZ4LmD4Lir4Lih4LmIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxOCIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7guYTguKHguYjguJ7guJrguK3guLXguYDguKHguKXguYzguYHguK3guJTguYDguJTguKPguKrguJTguLHguIfguIHguKXguYjguLLguKcg4LiU4Li54LmD4Lir4LmJ4LmB4LiZ4LmI4LmD4LiI4Lin4LmI4Liy4LiE4Li44LiT4LiB4Lij4Lit4LiB4Lit4Li14LmA4Lih4Lil4LmM4LmB4Lit4LiU4LmA4LiU4Lij4Liq4LmA4LiU4Li14Lii4Lin4LiB4Lix4Lia4LiX4Li14LmI4LiE4Li44LiT4LmD4LiK4LmJ4LmD4LiZ4LiB4Liy4Lij4LiI4Lix4LiU4LiX4Liz4Lia4Lix4LiN4LiK4Li14LiC4Lit4LiH4LiE4Li44LiTPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxOSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7guYLguJvguKPguJTguIHguKPguK3guIHguK3guLXguYDguKHguKXguYzguKvguKPguLfguK3guIrguLfguYjguK3guJzguLnguYnguYPguIrguYk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIwIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPuC5hOC4oeC5iOC4oeC4teC4nOC4ueC5ieC5g+C4iuC5ieC4o+C4suC4ouC5g+C4lOC5gOC4iuC4t+C5iOC4reC4oeC4leC5iOC4reC4geC4seC4muC4iuC4t+C5iOC4reC4nOC4ueC5ieC5g+C4iuC5ieC4o+C4suC4ouC4meC4teC5iTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjEiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+4LmE4LiU4LmJ4Liq4LmI4LiH4Lit4Li14LmA4Lih4Lil4LmM4LiL4Li24LmI4LiH4Lih4Li14Lil4Li04LiH4LiE4LmM4Lie4Li04LmA4Lio4Lip4LmE4Lib4Lii4Lix4LiH4Lit4Li14LmA4Lih4Lil4LmM4LmB4Lit4LiU4LmA4LiU4Lij4Liq4LiC4Lit4LiH4LiE4Li44LiT4LmB4Lil4LmJ4LinIOC5guC4m+C4o+C4lOC5gOC4iuC5h+C4hOC4reC4teC5gOC4oeC4peC5jOC4lOC5ieC4p+C4oiDguKvguLLguIHguKLguLHguIfguITguIfguYTguKHguYjguYTguJTguYnguKPguLHguJrguK3guLXguYDguKHguKXguYwg4LmC4Lib4Lij4LiU4Lib4Lij4Lix4Lia4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4Lit4Li14LmA4Lih4Lil4LmM4Liq4LmB4Lib4Lih4LmB4Lil4Liw4Liq4LmI4LiH4Lit4Li14LmA4Lih4Lil4LmM4Lii4Li34LiZ4Lii4Lix4LiZ4LmD4Lir4Lih4LmI4Lit4Li14LiB4LiE4Lij4Lix4LmJ4LiHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyMiIgbmFtZT0iZXJyb3J0eXBlIj4KKyAgICA8dmFsdWU+4LiC4Lix4LiU4LiC4LmJ4Lit4LiHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyMyIgbmFtZT0iZXJyb3J0eXBlIj4KKyAgICA8dmFsdWU+4LiC4LmJ4Lit4LiE4Lin4Liy4LihPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNCIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+4Lij4Lir4Lix4Liq4Lic4LmI4Liy4LiZ4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHIOC5hOC4oeC5iOC4nuC4muC4nOC4ueC5ieC5g+C4iuC5iTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjUiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPuC4leC4seC5ieC4h+C4o+C4q+C4seC4quC4nOC5iOC4suC4meC4guC4reC4h+C4hOC4uOC4k+C5g+C4q+C4oeC5iDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjYiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPuC4peC5h+C4reC4hOC4reC4tOC4mTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjciIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPuC5gOC4m+C4peC4teC5iOC4ouC4meC4o+C4q+C4seC4quC4nOC5iOC4suC4mTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjgiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPuC4o+C4q+C4seC4quC4nOC5iOC4suC4meC5g+C4q+C4oeC5iDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjkiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPuC4geC4o+C4reC4geC4o+C4q+C4seC4quC4nOC5iOC4suC4meC5g+C4q+C4oeC5iDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzAiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPuC4o+C4q+C4seC4quC4nOC5iOC4suC4meC4l+C4teC5iOC4hOC4uOC4k+C4geC4o+C4reC4geC5hOC4oeC5iOC4leC4o+C4h+C4geC4seC4mTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzEiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPuC4leC4seC4p+C4reC4seC4geC4qeC4oyA0IOC4leC4seC4p+C4guC4tuC5ieC4meC5hOC4myDguK3guLHguIHguKnguKPguJXguLHguKfguYPguKvguI3guYjguKHguLXguJzguKXguKrguLPguITguLHguI08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMyIiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT7guJXguLHguYnguIfguKPguKvguLHguKrguJzguYjguLLguJnguYHguKXguYnguKcg4LiE4Li44LiT4Liq4Liy4Lih4Liy4Lij4LiW4Lil4LmH4Lit4LiE4Lit4Li04LiZ4LmE4LiU4LmJ4LmB4Lil4LmJ4LinPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzMyIgbmFtZT0icnBjY2FsbGJhY2siPgorICAgIDx2YWx1ZT7guJXguIHguKXguIc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM0IiBuYW1lPSJycGNnZW5lcmFsZXJyb3IiPgorICAgIDx2YWx1ZT7guILguLHguJTguILguYnguK3guIfguYLguJTguKLguYTguKHguYjguJfguKPguLLguJrguKrguLLguYDguKvguJXguLgg4LmC4Lib4Lij4LiU4Lij4Liy4Lii4LiH4Liy4LiZ4LiV4LmI4Lit4LiX4Li14Lih4Lia4Lij4Li04LiB4Liy4Lij4LiC4Lit4LiH4LiE4Li44LiTPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7guYTguKHguYjguJ7guJrguIrguLfguYjguK3guJzguLnguYnguYPguIrguYk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM2IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPuC4o+C4q+C4seC4quC4nOC5iOC4suC4meC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzciIG5hbWU9ImxvZ291dCI+CisgICAgPHZhbHVlPuC4reC4reC4geC4iOC4suC4geC4o+C4sOC4muC4muC5gOC4o+C4teC4ouC4muC4o+C5ieC4reC4ouC5geC4peC5ieC4pzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzgiIG5hbWU9InJlZ2lzdHJhdGlvbiI+CisgICAgPHZhbHVlPuC4geC4suC4o+C4peC4h+C4l+C4sOC5gOC4muC4teC4ouC4meC4luC4ueC4geC4ouC4geC5gOC4peC4tOC4geC5geC4peC5ieC4pzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzkiIG5hbWU9InJlZ2lzdHJhdGlvbiI+CisgICAgPHZhbHVlPuC4reC4teC5gOC4oeC4peC5jOC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDAiIG5hbWU9InJlZ2lzdHJhdGlvbiI+CisgICAgPHZhbHVlPuC4iuC4t+C5iOC4reC5hOC4n+C4peC5jOC4i+C5ieC4syDguYLguJvguKPguJTguYDguKXguLfguK3guIHguIrguLfguYjguK3guYTguJ/guKXguYzguK3guLfguYjguJk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQxIiBuYW1lPSJmaWxlYnJvd3NlciI+CisgICAgPHZhbHVlPuC4iuC4t+C5iOC4reC5hOC4n+C4peC5jOC4quC4seC5ieC4meC5gOC4geC4tOC4meC5hOC4mzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDIiIG5hbWU9ImZpbGVicm93c2VyIj4KKyAgICA8dmFsdWU+4Lia4Lix4LiZ4LiX4Li24LiB4LiX4Li14LmI4Lit4Lii4Li54LmI4LmE4Lih4LmI4LmE4LiU4LmJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0MyIgbmFtZT0idXNlcmFkbWluIj4KKyAgICA8dmFsdWU+4LmA4Lie4Li04LmI4Lih4Lic4Li54LmJ4LmD4LiK4LmJ4LmB4Lil4LmJ4LinIOC5geC4leC5iOC4hOC4uOC4k+C4leC5ieC4reC4h+C4oeC4reC4muC4q+C4oeC4suC4ouC4nOC4ueC5ieC5g+C4iuC5ieC4o+C4suC4ouC4meC4teC5ieC5g+C4q+C5ieC5geC4geC5iOC4reC4h+C4hOC5jOC4geC4o+C5g+C4lOC4reC4h+C4hOC5jOC4geC4o+C4q+C4meC4tuC5iOC4hyDguKHguLTguInguLDguJnguLHguYnguJnguYDguILguLLguIjguLDguYTguKHguYjguKrguLLguKHguLLguKPguJbguKXguIfguIrguLfguYjguK3guYDguILguYnguLLguYPguIrguYnguYTguJTguYk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ0IiBuYW1lPSJhZG1pbmZvcm1zIj4KKyAgICA8dmFsdWU+4Lia4Lix4LiZ4LiX4Li24LiB4LmD4Lir4Lih4LmIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+4LmE4Lih4LmI4Lie4Lia4Lif4Li04Lil4LiU4LmM4LiX4Li14LmI4Lih4Liy4Lie4Lij4LmJ4Lit4Lih4LiB4Lix4Lia4Lir4Lih4Liy4Lii4LmA4Lil4LiC4Lif4Li04Lil4LiU4LmM4LiZ4Li14LmJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+4LmE4Lih4LmI4Lie4Lia4Lib4LmJ4Liy4Lii4LiK4Li34LmI4Lit4Liq4Liz4Lir4Lij4Lix4Lia4Lif4Li04Lil4LiU4LmM4LiZ4Lix4LmJ4LiZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NyIgbmFtZT0iZXJyb3JtZXNzYWdlIj4KKyAgICA8dmFsdWU+4LiV4LmJ4Lit4LiH4LmD4LiK4LmJ4LiB4Liy4Lij4Lit4LiZ4Li44LiN4Liy4LiV4LiI4Liy4LiB4Lic4Li54LmJ4LiU4Li54LmB4LilPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0OCIgbmFtZT0ibWFpbm5hdmkiPgorICAgIDx2YWx1ZT7guYLguJvguKPguYHguIHguKPguKHguYHguIHguYnguYTguILguKDguLLguKnguLI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ5IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7guKDguLLguKnguLI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUwIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7guKvguKHguLLguKLguYDguKXguILguJvguKPguLDguIjguLPguJvguYnguLLguKI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUxIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7guJvguYnguLLguKLguIrguLfguYjguK08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUyIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7guITguYjguLI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUzIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7guITguYjguLLguJ/guLTguKXguJTguYw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU0IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7guJvguYnguLLguKLguIrguLfguYjguK08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU1IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7guITguYjguLLguJvguYnguLLguKI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU2IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7guKvguKHguLLguKLguYDguKXguILguJvguKPguLDguIjguLPguJvguYnguLLguKI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU3IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7guITguLjguJPguKXguJrguYHguJXguYjguJvguYnguLLguKLguYDguJfguYjguLLguJnguLHguYnguJkg4LmE4Lih4LmI4LmE4LiU4LmJ4Lil4Lia4Lif4Li04Lil4LiU4LmMISDguITguLjguJPguKXguJrguJ/guLTguKXguJTguYzguYTguKHguYjguYTguJTguYkg4Lit4Liy4LiI4LmA4Lib4LmH4LiZ4LmA4Lie4Lij4Liy4Liw4Lin4LmI4Liy4Lif4Li04Lil4LiU4LmM4Lih4Li14Lib4LmJ4Liy4Lii4LmA4Lib4LmH4LiZ4Lig4Liy4Lip4Liy4Lit4Li34LmI4LiZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1OCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+4Lir4Lih4Liy4Lii4LmA4Lil4LiC4Lib4Lij4Liw4LiI4Liz4Lib4LmJ4Liy4Lii4LmE4Lih4LmI4LiW4Li54LiB4LiV4LmJ4Lit4LiHIOC5hOC4oeC5iOC4nuC4muC4q+C4oeC4suC4ouC5gOC4peC4guC4m+C4o+C4sOC4iOC4s+C4hOC5iOC4suC4oOC4suC4qeC4suC4guC4reC4h+C4n+C4tOC4peC4lOC5jOC4meC4seC5ieC4meC5g+C4meC4kOC4suC4meC4guC5ieC4reC4oeC4ueC4pTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTkiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPuC4hOC4uOC4k+C4peC4muC4n+C4tOC4peC4lOC5jOC4meC4teC5ieC5hOC4oeC5iOC5hOC4lOC5iSDguITguLjguJPguKXguJrguYTguJTguYnguYHguJXguYjguYDguJ7guLXguKLguIfguJvguYnguLLguKLguYDguJfguYjguLLguJnguLHguYnguJkg4Lil4Lia4Lif4Li04Lil4LiU4LmM4LmE4Lih4LmI4LmE4LiU4LmJIOC5hOC4oeC5iOC4oeC4teC4geC4suC4o+C5guC4q+C4peC4lOC4m+C5ieC4suC4ouC5g+C4meC4guC4k+C4sOC4meC4teC5iSDguK3guLLguIjguYDguJvguYfguJnguYDguJ7guKPguLLguLDguKfguYjguLLguYTguKHguYjguYTguJTguYnguYDguKXguLfguK3guIHguJ/guLTguKXguJTguYzguYPguJTguYDguKXguKLguKvguKPguLfguK3guKfguYjguLLguYTguKHguYjguKHguLXguJvguYnguLLguKLguKrguLPguKvguKPguLHguJrguKDguLLguKnguLLguJnguLXguYnguKrguLPguKvguKPguLHguJrguJ/guLTguKXguJTguYzguJfguLXguYjguIHguLPguKvguJnguJQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYwIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7guYDguK3guYfguIHguIvguYzguJ7guK3guKPguYzguJU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYxIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7guITguLjguJPguIjguLDguJXguYnguK3guIfguK3guK3guIHguIjguLLguIHguKPguLDguJrguJrguIHguYjguK3guJkg4LiI4Li24LiH4LiI4Liw4LmA4Lir4LmH4LiZ4LiB4Liy4Lij4LmA4Lib4Lil4Li14LmI4Lii4LiZ4LmB4Lib4Lil4LiHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+4LmA4Lie4Li04LmI4Lih4Lig4Liy4Lip4Liy4LmD4Lir4Lih4LmIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+4Lil4Lia4Lig4Liy4Lip4LiyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+4LmA4Lie4Li04LmI4Lih4Lig4Liy4Lip4Liy4LmD4Lir4Lih4LmIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+4LiK4Li34LmI4LitPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+4LmA4Lie4Li04LmI4Lih4Lig4Liy4Lip4LiyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+4Liq4Liz4Lij4Lit4LiH4LiC4LmJ4Lit4Lih4Li54LilPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2OCIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+4LmE4Lib4Lii4Lix4LiH4Lir4LiZ4LmJ4Liy4LmB4Lij4LiBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2OSIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+4LmE4Lib4Lii4Lix4LiH4Lir4LiZ4LmJ4Liy4LiB4LmI4Lit4LiZ4LiZ4Li14LmJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MCIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+4LmE4Lib4Lii4Lix4LiH4Lir4LiZ4LmJ4Liy4LiW4Lix4LiU4LmE4LibPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MSIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+4LmE4Lib4Lii4Lix4LiH4Lir4LiZ4LmJ4Liy4Liq4Li44LiU4LiX4LmJ4Liy4LiiPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MiIgbmFtZT0idmlkZW9ib3giPgorICAgIDx2YWx1ZT7guJzguLnguYnguYPguIrguYnguJ7guLnguJQgKEJ5IGNsaWNraW5nIGhlcmUgeW91IGNhbiBnaXZlIGV4Y2x1c2l2ZSBhdWRpbyAvIG11dGUgdGhlIG1pY3JvcGhvbmUgb2Ygb3RoZXJzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzMiIG5hbWU9InZpZGVvYm94Ij4KKyAgICA8dmFsdWU+4LmA4Lib4Li04LiUL+C4m+C4tOC4lOC5gOC4quC4teC4ouC4hzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPuC4o+C4sOC4muC4mjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzUiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPuC4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC4guC4reC4h+C4hOC4uOC4kzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzYiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPuC4quC4p+C4seC4quC4lOC4tTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzciIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPuC5geC4geC5ieC5hOC4guC5guC4m+C4o+C5hOC4n+C4peC5jOC4guC4reC4h+C4hOC4uOC4kzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzgiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPuC4guC5ieC4reC4hOC4p+C4suC4oeC5g+C4q+C4oeC5iDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc5IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT7guK3guLHguJ7guYLguKvguKXguJTguKDguLLguJ7guYPguKvguKHguYjguYY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgwIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPuC4guC5ieC4reC4oeC4ueC4peC4nOC4ueC5ieC5g+C4iuC5iSAtIOC5gOC4reC5h+C4geC4i+C5jOC4nuC4reC4o+C5jOC4lTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODEiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+4LiV4LmJ4Lit4LiH4Lih4Li14LiX4Li44LiB4Lit4LiH4LiE4LmM4LiB4Lij4Lit4Lii4Li54LmI4LiB4LmI4Lit4LiZ4LmB4Lil4LmJ4LinPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4MiIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT7guYDguKPguLTguYjguKHguYDguK3guYfguIHguIvguYzguJ7guK3guKPguYzguJU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgzIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPuC5guC4lOC4ouC4reC4h+C4hOC5jOC4geC4ozwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODQiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+4LmA4Lij4Li04LmI4Lih4LmA4Lit4LmH4LiB4LiL4LmM4Lie4Lit4Lij4LmM4LiVPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NSIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT7guILguYnguK3guKHguLnguKXguJzguLnguYnguYPguIrguYkgLSDguK3guLTguKHguJ7guK3guKPguYzguJU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg2IiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPuC5gOC4peC4t+C4reC4geC4nOC4ueC5ieC5g+C4iuC5iS54bWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg3IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7guK3guLTguKHguJ7guK3guKPguYzguJU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg4IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7guYDguK3guYfguIHguIvguYzguJ7guK3guKPguYzguJXguYTguJvguKLguLHguIcgWE1MIOKAkyDguYTguJ/guKXguYzguYDguKvguKXguYjguLLguJnguLXguYnguKrguLLguKHguLLguKPguJbguYPguIrguYnguYDguJ7guLfguYjguK0g4oCTIOC4quC5iOC4h+C5gOC4quC4o+C4tOC4oeC5guC4hOC4o+C4h+C4geC4suC4oyDigJMg4Lit4Li04Lih4Lie4Lit4Lij4LmM4LiV4LmE4Lib4Lii4Lix4LiH4Lij4Liw4Lia4Lia4Lit4Li34LmI4LiZIOKAkyDguKrguLPguKPguK3guIfguILguYnguK3guKHguLnguKUg4oCTIOC4geC4suC4o+C4m+C4o+C4seC4muC4leC4suC4oeC4hOC4p+C4suC4oeC4leC5ieC4reC4h+C4geC4suC4oyAtIOC5g+C4quC5iOC5hOC4p+C5ieC5g+C4meC4o+C4suC4ouC4iuC4t+C5iOC4reC4oOC4suC4qeC4suC4quC4s+C4q+C4o+C4seC4muC4geC4suC4o+C4leC4tOC4lOC4leC4seC5ieC4h+C4hOC4o+C4seC5ieC4h+C4leC5iOC4reC5hOC4mzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODkiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPuC5gOC4peC4t+C4reC4geC5hOC4n+C4peC5jOC4oOC4suC4qeC4suC5gOC4nuC4t+C5iOC4reC4reC4tOC4oeC4nuC4reC4o+C5jOC4lSDguYDguKXguLfguK3guIHguKDguLLguKnguLLguJfguLXguYjguJbguLnguIHguJXguYnguK3guIfguIjguLLguIEgQ29tYm9ib3ghIOC5hOC4oeC5iOC4p+C5iOC4suC4iuC4t+C5iOC4reC5hOC4n+C4peC5jOC4iOC4sOC5gOC4m+C5h+C4meC4reC4sOC5hOC4o+C4geC5h+C4leC4suC4oSDguIHguYfguIjguLDguK3guLTguKHguJ7guK3guKPguYzguJXguYDguJvguYfguJnguKDguLLguKnguLLguJnguLXguYkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5MCIgbmFtZT0iaW1wb3J0d2luZG93Ij4KKyAgICA8dmFsdWU+4Lit4Li04Lih4Lie4Lit4Lij4LmM4LiVIC0g4LmA4Lil4Li34Lit4LiB4LmE4Lif4Lil4LmMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5MSIgbmFtZT0icmVjb3JkaW5nc2F2ZXdpbiI+CisgICAgPHZhbHVlPuC4muC4seC4meC4l+C4tuC4geC5gOC4m+C5h+C4mTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTIiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT7guIrguLfguYjguK06PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5MyIgbmFtZT0icmVjb3JkaW5nc2F2ZXdpbiI+CisgICAgPHZhbHVlPuC4guC5ieC4reC4hOC4tOC4lOC5gOC4q+C5h+C4mTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk0IiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+4Lia4Lix4LiZ4LiX4Li24LiBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+4Lia4Lix4LiZ4LiX4Li24LiBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NiIgbmFtZT0icmVjb3JkZXIiPgorICAgIDx2YWx1ZT7guJrguLHguJnguJfguLbguIHguJzguLnguYnguIrguKE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk3IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT7guJrguLHguJnguJfguLbguIHguKvguYnguK3guIfguKrguLLguJjguLLguKPguJPguLDguYHguKXguLDguKvguYnguK3guIfguKrguYjguKfguJnguJXguLHguKc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk4IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT7guJzguLnguYnguYPguIrguYk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5OSIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+4LmA4LiC4LmJ4Liy4Lij4LmI4Lin4LihOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDAiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDEiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPuC4nOC4ueC5ieC5g+C4iuC5ieC5g+C4meC4q+C5ieC4reC4h+C4meC4teC5iTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAyIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT7guKPguLXguYDguJ/guKPguIo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAzIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT7guKvguYnguK3guIfguJnguLXguYnguYDguJXguYfguKHguYHguKXguYnguKcg4Lit4Li14LiB4Liq4Lix4LiB4LiE4Lij4Li54LmI4LmC4Lib4Lij4LiU4Lil4Lit4LiH4LmD4Lir4Lih4LmIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNCIgbmFtZT0icm9vbXNMaXN0Ij4KKyAgICA8dmFsdWU+4LiE4Lil4Li04LiB4LiX4Li14LmI4Lir4LmJ4Lit4LiH4LmA4Lie4Li34LmI4Lit4LiU4Li54Lij4Liy4Lii4Lil4Liw4LmA4Lit4Li14Lii4LiUPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNSIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+4LmB4LiK4LiX4LiB4Lix4Lia4Lic4Li54LmJ4LmD4LiK4LmJ4LmD4LiZ4Lir4LmJ4Lit4LiH4LiZ4Li14LmJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNiIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+4Lir4LmJ4Lit4LiHOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDciIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPuC4nOC4ueC5ieC5g+C4iuC5ieC5g+C4meC4q+C5ieC4reC4h+C4meC4teC5iTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA4IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT7guJXguLHguYnguIfguYHguJXguYg6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwOSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+4LmA4Lil4LmI4LiZ4Lia4Lix4LiZ4LiX4Li24LiBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMCIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+4LiE4Lin4Liy4Lih4Lii4Liy4LinPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+4Lin4Lix4LiZ4LiX4Li14LmIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMiIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+4LmC4Lir4Lih4LiU4LiB4Liy4Lij4Lia4Lix4LiZ4LiX4Li24LiBISDguITguLjguJPguYTguKHguYjguKrguLLguKHguLLguKPguJbguYDguJvguKXguLXguYjguKLguJnguYHguJvguKXguIfguITguYjguLLguYPguJTguYYg4LmE4LiU4LmJIOC5hOC4n+C4peC5jOC4meC4teC5ieC5hOC4lOC5ieC4o+C4seC4muC4geC4suC4o+C4muC4seC4meC4l+C4tuC4geC5hOC4p+C5ieC5geC4peC5ieC4pzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTMiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPuC5gOC4peC5iOC4meC4muC4seC4meC4l+C4tuC4geC4meC4teC5iTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTQiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPuC5gOC4peC5iOC4mSAvIOC4q+C4ouC4uOC4lOC4iuC4seC5iOC4p+C4hOC4o+C4suC4pzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTUiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPuC5gOC4o+C4tOC5iOC4oeC4geC4suC4o+C4muC4seC4meC4l+C4tuC4gTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTYiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPuC4q+C4ouC4uOC4lOC4geC4suC4o+C4muC4seC4meC4l+C4tuC4gTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTciIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPlJlY29yZGluZzogLyDguJrguLHguJnguJfguLbguIE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxOCIgbmFtZT0icmVjb3JkX2Vycm9yX21zZyI+CisgICAgPHZhbHVlPuC4oeC4teC4hOC4meC4geC4s+C4peC4seC4h+C4muC4seC4meC4l+C4tuC4geC4reC4ouC4ueC5iOC5g+C4meC4guC4k+C4sOC4meC4teC5iTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTkiIG5hbWU9InJlY29yZF9tZXNzYWdlIj4KKyAgICA8dmFsdWU+4LiB4Liz4Lil4Lix4LiH4Lia4Lix4LiZ4LiX4Li24LiBISDguYLguJTguKLguJzguLnguYnguYPguIrguYk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyMCIgbmFtZT0icmVjb3JkX2NhbmNlbCI+CisgICAgPHZhbHVlPuC4ouC4geC5gOC4peC4tOC4gTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjEiIG5hbWU9InJlY29yZF9jYW5jYWxfdG9vbHRpcCI+CisgICAgPHZhbHVlPuC4geC4suC4o+C4muC4seC4meC4l+C4tuC4geC4iOC4sOC4luC4ueC4geC4ouC4geC5gOC4peC4tOC4geC5geC4peC4sOC5hOC4oeC5iOC4muC4seC4meC4l+C4tuC4geC5hOC4p+C5iTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjIiIG5hbWU9ImNhbmNlbF9kaWFsb2dfcmVzdW1lIj4KKyAgICA8dmFsdWU+4LmA4Lil4LmI4LiZ4LiV4LmI4LitPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyMyIgbmFtZT0iY2FuY2VsX2RpYWxvZ19yZXN1bWVfdG9vbHRpcCI+CisgICAgPHZhbHVlPuC4m+C4tOC4lOC4q+C4meC5ieC4suC4leC5iOC4suC4h+C4meC4teC5ieC5geC4peC4sOC4geC4peC4seC4muC5gOC4guC5ieC4suC4quC4ueC5iOC4geC4suC4o+C4muC4seC4meC4l+C4tuC4gTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjQiIG5hbWU9InBhaW50dG9vbHNfZWxsaXBzZV9jb2xvciI+CisgICAgPHZhbHVlPuC5gOC4m+C4peC4teC5iOC4ouC4meC4quC4teC5gOC4quC5ieC4mTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjUiIG5hbWU9ImNvbG9ycGlja2VyX2hlYWQiPgorICAgIDx2YWx1ZT7guYDguKXguLfguK3guIHguKrguLU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI2IiBuYW1lPSJwYWludHRvb2xzX2xpbmVfZGlzYWJsZSI+CisgICAgPHZhbHVlPuC4ouC4geC5gOC4peC4tOC4gSAvIOC5gOC4o+C4tOC5iOC4oeC5g+C4iuC5ieC5gOC4quC5ieC4meC4quC4tTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjciIG5hbWU9InBhaW50dG9vbHNfZmlsbF9kaXNhYmxlIj4KKyAgICA8dmFsdWU+4LmA4Lib4Lil4Li14LmI4Lii4LiZ4Liq4Li14LmA4LiV4Li04LihPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyOCIgbmFtZT0icGFpbnR0b29sc19saW5lX2Rpc2FibGUiPgorICAgIDx2YWx1ZT7guKLguIHguYDguKXguLTguIEgLyDguYDguKPguLTguYjguKHguYPguIrguYnguKrguLXguYDguJXguLTguKE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI5IiBuYW1lPSJjaGFuZ2Vfd2lkdGhfYXJyb3dfZG93bl9zbGlkZXIiPgorICAgIDx2YWx1ZT7guYDguJvguKXguLXguYjguKLguJnguITguKfguLLguKHguKvguJnguLLguILguK3guIfguYDguKrguYnguJk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMwIiBuYW1lPSJjbG9zZV9zbWFsbF9wb3B1cHMiPgorICAgIDx2YWx1ZT7guJvguLTguJQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMxIiBuYW1lPSJwYWludF90b29sX2xldHRlciI+CisgICAgPHZhbHVlPuC5gOC4m+C4peC4teC5iOC4ouC4meC4guC4meC4suC4lOC4leC4seC4p+C4reC4seC4geC4qeC4ozwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzIiIG5hbWU9InJlY29yZGluZ3NsaXN0X2RlbGV0ZSI+CisgICAgPHZhbHVlPuC4peC4muC4geC4suC4o+C4muC4seC4meC4l+C4tuC4gTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzMiIG5hbWU9InJlY29yZGluZ3NsaXN0X3JlY29yZGVkQnlHdWVzdCI+CisgICAgPHZhbHVlPuC5geC4guC4gTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzQiIG5hbWU9InJlY29yZGluZ3NsaXN0X3JlY29yZGVkYnkiPgorICAgIDx2YWx1ZT7guYLguJTguKI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNSIgbmFtZT0icmVjb3JkaW5nc190YWJsZV9oZWFkX25hbWUiPgorICAgIDx2YWx1ZT7guIrguLfguYjguK08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM2IiBuYW1lPSJyZWNvcmRpbmdzX3RhYmxlX2hlYWRfcm9vbSI+CisgICAgPHZhbHVlPuC4q+C5ieC4reC4hzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzciIG5hbWU9InJlY29yZGluZ3NfdGFibGVfaGVhZF9kYXRlIj4KKyAgICA8dmFsdWU+4Lin4Lix4LiZ4LiX4Li14LmIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzOCIgbmFtZT0icmVjb3JkX3N0YXJ0X2NhbmNlbCI+CisgICAgPHZhbHVlPuC4ouC4geC5gOC4peC4tOC4gTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzkiIG5hbWU9InJlY29yZF9zdGFydF9zdGFydCI+CisgICAgPHZhbHVlPuC5gOC4o+C4tOC5iOC4oTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDAiIG5hbWU9ImZpbGVzYnJvd3Nlcl90YWJsZV9oZWFkX25hbWUiPgorICAgIDx2YWx1ZT7guIrguLfguYjguK08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQxIiBuYW1lPSJmaWxlc2Jyb3dzZXJfdGFibGVfaGVhZF9kYXRlIj4KKyAgICA8dmFsdWU+4Lin4Lix4LiZ4LiX4Li14LmIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MiIgbmFtZT0iY2hhdF9jbGVhcl9oaXN0b3J5Ij4KKyAgICA8dmFsdWU+4Lil4Lia4LmA4LiL4Li04Lij4LmM4Lif4LmA4Lin4Lit4Lij4LmMLeC4muC4seC4meC4l+C4tuC4geC4geC4suC4o+C5geC4iuC4lzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDMiIG5hbWU9ImNoYXRfb3ZlcmFsbF9oZWFkZXIiPgorICAgIDx2YWx1ZT7guYHguIrguJc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ0IiBuYW1lPSJjaGF0X3NlbmRfYnRuIj4KKyAgICA8dmFsdWU+4Liq4LmI4LiH4LiC4LmJ4Lit4LiE4Lin4Liy4LihPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NSIgbmFtZT0iY2hhdF9lbW90X2J0biI+CisgICAgPHZhbHVlPuC4reC4teC5guC4oeC4leC4tOC4hOC4reC4mTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDYiIG5hbWU9ImNoYXRfZW1vdF93aW4iPgorICAgIDx2YWx1ZT7guK3guLXguYLguKHguJXguLTguITguK3guJk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ3IiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3MiPgorICAgIDx2YWx1ZT7guYDguKXguLfguK3guIHguK3guLjguJvguIHguKPguJPguYzguJfguLXguYjguYPguIrguYnguYDguJzguKLguYHguJ7guKPguYg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ4IiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT7guYDguKrguLXguKLguIfguYHguKXguLDguKDguLLguJ7guKfguLXguJTguLXguYLguK08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ5IiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT7guYDguKrguLXguKLguIfguYDguJfguYjguLLguJnguLHguYnguJk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUwIiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT7guKDguLLguJ7guKfguLXguJTguLXguYLguK3guYDguJfguYjguLLguJnguLHguYnguJk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUxIiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT7guYTguKHguYjguKHguLXguYDguKrguLXguKLguIcv4Lig4Liy4Lie4Lin4Li14LiU4Li14LmC4LitICjguKDguLLguJ7guJnguLTguYjguIcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1MiIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2luZm9fdGV4dCI+CisgICAgPHZhbHVlPuC5hOC4oeC5iOC5gOC4nOC4ouC5geC4nuC4o+C5iOC5gOC4quC4teC4ouC4hy/guKDguLLguJ7guKfguLXguJTguLXguYLguK3guIjguLLguIHguYDguITguKPguLfguYjguK3guIfguITguK3guKHguJ7guLTguKfguYDguJXguK3guKPguYzguILguK3guIfguITguLjguJPguKrguLnguYjguKrguLLguJjguLLguKPguJPguLAg4LmC4LiU4Lii4LiX4Li14LmI4LiI4Liw4LmB4Liq4LiU4LiH4Lig4Liy4Lie4LiI4Liy4LiB4LmC4Lib4Lij4LmC4Lif4Lil4LmM4LiC4Lit4LiH4LiE4Li44LiT4LmB4LiX4LiZIOC4hOC4p+C4o+C5gOC4peC4t+C4reC4geC4geC4suC4o+C4leC4seC5ieC4h+C4hOC5iOC4suC5gOC4q+C4peC5iOC4suC4meC4teC5ieC4q+C4suC4geC4hOC4uOC4k+C4oeC4teC4m+C4seC4jeC4q+C4suC4geC4seC4muC5geC4muC4meC4lOC5jOC4p+C4tOC4mOC4q+C4o+C4t+C4reC4reC4tOC4meC5gOC4leC4reC4o+C5jOC5gOC4meC5h+C4leC4iuC5ieC4suC4oeC4suC4gTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTMiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfbW9uZGF5Ij4KKyAgICA8dmFsdWU+4LiIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV90dWVzZGF5Ij4KKyAgICA8dmFsdWU+4LitPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV93ZWRuZXNkYXkiPgorICAgIDx2YWx1ZT7guJ48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU2IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3RodXJzZGF5Ij4KKyAgICA8dmFsdWU+4Lie4LikPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NyIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9mcmlkYXkiPgorICAgIDx2YWx1ZT7guKg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU4IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3NhdHVyZGF5Ij4KKyAgICA8dmFsdWU+4LiqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1OSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9zdW5kYXkiPgorICAgIDx2YWx1ZT7guK3guLI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYwIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX21vbmRheSI+CisgICAgPHZhbHVlPuC4p+C4seC4meC4iOC4seC4meC4l+C4o+C5jDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjEiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfVHVlc2RheUxhYmVsIj4KKyAgICA8dmFsdWU+4Lin4Lix4LiZ4Lit4Lix4LiH4LiE4Liy4LijPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2MiIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9XZWRuZXNkYXlMYWJlbCI+CisgICAgPHZhbHVlPuC4p+C4seC4meC4nuC4uOC4mDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjMiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfVGh1cnNkYXlMYWJlbCI+CisgICAgPHZhbHVlPuC4p+C4seC4meC4nuC4pOC4q+C4seC4quC4muC4lOC4tTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjQiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfRnJpZGF5TGFiZWwiPgorICAgIDx2YWx1ZT7guKfguLHguJnguKjguLjguIHguKPguYw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY1IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1NhdHVyZGF5TGFiZWwiPgorICAgIDx2YWx1ZT7guKfguLHguJnguYDguKrguLLguKPguYw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY2IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1N1bmRheUxhYmVsIj4KKyAgICA8dmFsdWU+4Lin4Lix4LiZ4Lit4Liy4LiX4Li04LiV4Lii4LmMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NyIgbmFtZT0iY2FsZW5kYXJfd2Vla251bWJlcl9oZWFkZXIiPgorICAgIDx2YWx1ZT7guKrguLHguJvguJTguLLguKvguYw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY4IiBuYW1lPSJjYWxlbmRhcl93ZWVrbnVtYmVyX2hlYWRlclRvb2x0aXAiPgorICAgIDx2YWx1ZT7guKrguLHguJvguJTguLLguKvguYzguJXguLLguKHguJvguI/guLTguJfguLTguJk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY5IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+4Lih4LiB4Lij4Liy4LiE4LihPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3MCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPuC4geC4uOC4oeC4oOC4suC4nuC4seC4meC4mOC5jDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzEiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT7guKHguLXguJnguLLguITguKE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDcyIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+4LmA4Lih4Lip4Liy4Lii4LiZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3MyIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPuC4nuC4pOC4qeC4oOC4suC4hOC4oTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzQiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT7guKHguLTguJbguLjguJnguLLguKLguJk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc1IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+4LiB4Lij4LiB4LiO4Liy4LiE4LihPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3NiIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPuC4quC4tOC4h+C4q+C4suC4hOC4oTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzciIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT7guIHguLHguJnguKLguLLguKLguJk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc4IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+4LiV4Li44Lil4Liy4LiE4LihPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3OSIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPuC4nuC4pOC4qOC4iOC4tOC4geC4suC4ouC4mTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODAiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT7guJjguLHguJnguKfguLLguITguKE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgxIiBuYW1lPSJjYWxlbmRhcndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT7guJvguI/guLTguJfguLTguJk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgyIiBuYW1lPSJyb29tYWRtaW5fbGFiZWxOdW1iZXJPZlBhcnRpY2lwYW50cyI+CisgICAgPHZhbHVlPuC4nOC4ueC5ieC5gOC4guC5ieC4suC4o+C5iOC4p+C4oTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODMiIG5hbWU9InJvb21WYWx1ZV9hZHZhbmNlZFNldHRpbmdzIj4KKyAgICA8dmFsdWU+4LmB4Liq4LiU4LiH4LiB4Liy4Lij4LiV4Lix4LmJ4LiH4LiE4LmI4Liy4LmC4LiE4Lij4LiH4Lij4LmI4Liy4LiHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NCIgbmFtZT0icm9vbUFkbWluX2xheW91dF92aWRlb1giPgorICAgIDx2YWx1ZT5YIHwgWTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODUiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfdmlkZW9ZIj4KKyAgICA8dmFsdWU+4LiB4Lin4LmJ4Liy4LiHIHwg4Liq4Li54LiHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NiIgbmFtZT0icm9vbUFkbWluX2xheW91dCI+CisgICAgPHZhbHVlPuC4geC4peC5iOC4reC4h+C4p+C4teC4lOC4teC5guC4rTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODciIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfbW9kIj4KKyAgICA8dmFsdWU+4LiB4Lil4LmI4Lit4LiH4LiB4Liy4Lij4LiU4Liz4LmA4LiZ4Li04LiZ4Lij4Liy4Lii4LiB4Liy4LijPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4OCIgbmFtZT0icm9vbUFkbWluX2xheW91dF9tb2RfcG9zIj4KKyAgICA8dmFsdWU+WDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODkiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPuC4geC4peC5iOC4reC4h+C5hOC4p+C4l+C5jOC4muC4reC4o+C5jOC4lDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTAiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZF9zaG93Ij4KKyAgICA8dmFsdWU+4LiU4Liz4LmA4LiZ4Li04LiZ4LiB4Liy4Lij4LmB4Lil4LmJ4LinPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5MSIgbmFtZT0icm9vbUFkbWluX2xheW91dF93aGl0ZWJvYXJkX3BvcyI+CisgICAgPHZhbHVlPlggfCBZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5MiIgbmFtZT0icm9vbUFkbWluX2xheW91dF93aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+4LiB4Lin4LmJ4Liy4LiHIHwg4Liq4Li54LiHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5MyIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlcyI+CisgICAgPHZhbHVlPuC4geC4peC5iOC4reC4h+C5hOC4n+C4peC5jCDguYHguIrguJcg4Lic4Li54LmJ4LmA4LiC4LmJ4Liy4Lij4LmI4Lin4LihPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NCIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlc19zaG93Ij4KKyAgICA8dmFsdWU+4LiU4Liz4LmA4LiZ4Li04LiZ4LiB4Liy4Lij4LmB4Lil4LmJ4LinPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NSIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlc19wb3MiPgorICAgIDx2YWx1ZT5YIHxZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NiIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlcyI+CisgICAgPHZhbHVlPuC4geC4p+C5ieC4suC4hyB8IOC4quC4ueC4hzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTciIG5hbWU9Im1vZGVyYXRvcl9nb25lX21lc3NhZ2UiPgorICAgIDx2YWx1ZT7guJzguLnguYnguJTguLPguYDguJnguLTguJnguKPguLLguKLguIHguLLguKPguK3guK3guIHguIjguLLguIHguKvguYnguK3guIfguYTguJvguYHguKXguYnguKcg4LmE4Lih4LmI4Lih4Li14LmD4LiE4Lij4Lit4Lii4Li54LmI4LmD4LiZ4LiC4LiT4Liw4LiZ4Li14LmJIOC4hOC4uOC4k+C4quC4suC4oeC4suC4o+C4luC4quC4oeC4seC4hOC4o+C5gOC4nuC4t+C5iOC4reC4l+C4s+C4q+C4meC5ieC4suC4l+C4teC5iOC4lOC4s+C5gOC4meC4tOC4meC4o+C4suC4ouC4geC4suC4o+C5hOC4lOC5ieC4q+C4o+C4t+C4reC4o+C4rTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTgiIG5hbWU9Im1vZGVyYXRvcl9tZXNzYWdlX2V2ZW50X25vX21vZCI+CisgICAgPHZhbHVlPuC4nOC4ueC5ieC4lOC4s+C5gOC4meC4tOC4meC4o+C4suC4ouC4geC4suC4o+C4reC4reC4geC4iOC4suC4geC4q+C5ieC4reC4h+C5hOC4m+C5geC4peC5ieC4pyDguYHguJXguYjguKHguLXguJzguLnguYnguYDguILguYnguLLguKPguYjguKfguKHguJrguLLguIfguKPguLLguKLguK3guKLguLnguYgg4LiE4Li44LiT4LiV4LmJ4Lit4LiH4Liq4Lih4Lix4LiE4Lij4LmA4Lie4Li34LmI4Lit4LiX4Liz4Lir4LiZ4LmJ4Liy4LiX4Li14LmI4LiU4Liz4LmA4LiZ4Li04LiZ4Lij4Liy4Lii4LiB4Liy4Lij4Lir4Lij4Li34Lit4Lij4LitPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5OSIgbmFtZT0iZmVlZGJhY2tfdGVtcGxhdGVfc3ViamVjdCI+CisgICAgPHZhbHVlPuC4nOC4peC4leC4reC4muC4o+C4seC4muC4geC4suC4o+C4m+C4o+C4sOC4iuC4uOC4oeC5geC4muC4muC5gOC4m+C4tOC4lDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDAiIG5hbWU9Imludml0YXRpb25fdGVtcGxhdGVfaGVhZCI+CisgICAgPHZhbHVlPuC4geC4suC4o+C4m+C4o+C4sOC4iuC4uOC4oeC5geC4muC4muC5gOC4m+C4tOC4lCDigJMg4LiE4Liz4LmA4LiK4Li04LiNPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwMSIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X2Zyb20iPgorICAgIDx2YWx1ZT7guILguYnguK3guITguKfguLLguKHguIjguLLguIHguJzguLnguYnguYPguIrguYk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAyIiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfbWVzc2FnZSI+CisgICAgPHZhbHVlPuC4guC5ieC4reC4hOC4p+C4suC4oTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDMiIG5hbWU9Imludml0YXRpb25fdGV4dF9jbGlja190ZXh0Ij4KKyAgICA8dmFsdWU+4LiE4Lil4Li04LiB4Lil4Li04LiH4LiE4LmM4LiZ4Li14LmJ4LmA4Lie4Li34LmI4Lit4LmA4LiC4LmJ4Liy4Lij4LmI4Lin4Lih4LiB4Liy4Lij4Lib4Lij4Liw4LiK4Li44LihPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwNCIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X2NsaWNrX3RleHRfbGluayI+CisgICAgPHZhbHVlPuC4hOC4peC4tOC4geC4l+C4teC5iOC4meC4teC5iOC5gOC4nuC4t+C5iOC4reC5gOC4guC5ieC4suC4q+C5ieC4reC4hzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDUiIG5hbWU9Imludml0YXRpb25fdGV4dF9jbGlja190ZXh0X2hlbHAiPgorICAgIDx2YWx1ZT7guKvguLLguIHguKHguLXguJvguLHguI3guKvguLLguIHguLHguJrguKXguLTguIfguITguYzguJnguLXguYkg4LmC4Lib4Lij4LiU4LiE4Lix4LiU4Lil4Lit4LiB4Lil4Li04LiH4LiE4LmM4LiZ4Li14LmJ4LmB4Lil4LmJ4Lin4LiZ4Liz4LmE4Lib4Lin4Liy4LiH4LiX4Li14LmI4LmA4Lia4Lij4Liy4Lin4LmA4LiL4Lit4Lij4LmMOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDYiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF9oZWFkIj4KKyAgICA8dmFsdWU+4Lil4LiH4LiX4Liw4LmA4Lia4Li14Lii4LiZ4LiB4Liy4Lij4Lib4Lij4Liw4LiK4Li44Lih4LmB4Lia4Lia4LmA4Lib4Li04LiUPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwNyIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X2hlYWQyIj4KKyAgICA8dmFsdWU+4LiC4LmJ4Lit4Lih4Li54Lil4Lic4Li54LmJ4LmD4LiK4LmJ4LiC4Lit4LiH4LiE4Li44LiTOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDgiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF91c2VybmFtZSI+CisgICAgPHZhbHVlPuC4iuC4t+C5iOC4reC4peC5h+C4reC4hOC4reC4tOC4mTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA5IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfcGFzcyI+CisgICAgPHZhbHVlPuC4o+C4q+C4seC4quC4nOC5iOC4suC4mTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTEwIiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfbWFpbCI+CisgICAgPHZhbHVlPuC4reC4teC5gOC4oeC4peC5jDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTExIiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfYnllIj4KKyAgICA8dmFsdWU+4LiB4Liy4Lij4Lib4Lij4Liw4LiK4Li44Lih4LmB4Lia4Lia4LmA4Lib4Li04LiUIC0g4LiX4Li14LihPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxMiIgbmFtZT0icmVnaXN0ZXJfbWFpbF9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+4Lil4LiH4LiX4Liw4LmA4Lia4Li14Lii4LiZ4LiB4Liy4Lij4Lib4Lij4Liw4LiK4Li44Lih4LmB4Lia4Lia4LmA4Lib4Li04LiUPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxMyIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfaGVhZCI+CisgICAgPHZhbHVlPuC4geC4suC4o+C4m+C4o+C4sOC4iuC4uOC4oeC5geC4muC4muC5gOC4m+C4tOC4lCAtIOC4leC4seC5ieC4h+C4o+C4q+C4seC4quC4nOC5iOC4suC4meC5g+C4q+C4oeC5iDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTQiIG5hbWU9InJlc2V0X3Bhc3N3b3JkX3RlbXBsYXRlX3Rlc3RfbGluayI+CisgICAgPHZhbHVlPuC4hOC4peC4tOC4geC4peC4tOC4h+C4hOC5jOC4meC4teC5ieC5gOC4nuC4t+C5iOC4reC4geC4o+C4reC4geC4o+C4q+C4seC4quC4nOC5iOC4suC4meC5g+C4q+C4oeC5iDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE1IiBuYW1lPSJyZXNldF9wYXNzd29yZF90ZW1wbGF0ZV90ZXh0Ml9saW5rIj4KKyAgICA8dmFsdWU+4LiE4Lil4Li04LiB4LiX4Li14LmI4LiZ4Li14LmI4LmA4Lie4Li34LmI4Lit4LiB4Lij4Lit4LiB4Lij4Lir4Lix4Liq4Lic4LmI4Liy4LiZ4LmD4Lir4Lih4LmIPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNiIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfdGV4dDNfbGluayI+CisgICAgPHZhbHVlPuC4q+C4suC4geC4oeC4teC4m+C4seC4jeC4q+C4suC4geC4seC4muC4peC4tOC4h+C4hOC5jOC4meC4teC5iSDguYLguJvguKPguJTguITguLHguJTguKXguK3guIHguKXguLTguIfguITguYzguJnguLXguYnguYHguKXguYnguKfguJnguLPguYTguJvguKfguLLguIfguJfguLXguYjguYDguJrguKPguLLguKfguYDguIvguK3guKPguYw6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNyIgbmFtZT0icmVzZXRfcGFzc3dvcmRfbWFpbF9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+4LiB4Liy4Lij4Lib4Lij4Liw4LiK4Li44Lih4LmB4Lia4Lia4LmA4Lib4Li04LiUIOC4leC4seC5ieC4h+C4o+C4q+C4seC4quC4nOC5iOC4suC4meC5g+C4q+C4oeC5iDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTgiIG5hbWU9ImRhdGVSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPuC5guC4m+C4o+C4lOC4geC4o+C4reC4geC4p+C4seC4meC4l+C4teC5iOC4l+C4teC5iOC4luC4ueC4geC4leC5ieC4reC4hyDguJXguLHguKfguK3guKLguYjguLLguIfguYDguIrguYjguJkgMjQvMTIvMjAwMSAo4Lin4LinL+C4lOC4lC/guJvguJvguJvguJspPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxOSIgbmFtZT0iZW1haWxSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPuC5guC4m+C4o+C4lOC4geC4o+C4reC4geC4reC4teC5gOC4oeC4peC5jOC4l+C4teC5iOC4luC4ueC4geC4leC5ieC4reC4hyDguJXguLHguKfguK3guKLguYjguLLguIfguYDguIrguYjguJkgbmFtZUBtYWlsLmNvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjAiIG5hbWU9ImZsb2F0UmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT7guYLguJvguKPguJTguIHguKPguK3guIHguJXguLHguKfguYDguKXguILguJfguLXguYjguKHguLXguIjguLjguJTguJfguKjguJnguLTguKLguKEg4LmA4LiK4LmI4LiZIDEuMDA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIxIiBuYW1lPSJudW1iZXJSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPuC5guC4m+C4o+C4lOC4geC4o+C4reC4geC4leC4seC4p+C5gOC4peC4giAo4LiI4Liz4LiZ4Lin4LiZ4LmA4LiV4LmH4LihKSDguJXguLHguKfguK3guKLguYjguLLguIfguYDguIrguYjguJkgMTAwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyMiIgbmFtZT0icGhvbmVSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPuC5guC4m+C4o+C4lOC4geC4o+C4reC4geC4q+C4oeC4suC4ouC5gOC4peC4guC5guC4l+C4o+C4qOC4seC4nuC4l+C5jOC4l+C4teC5iOC4luC4ueC4geC4leC5ieC4reC4hyDguJXguLHguKfguK3guKLguYjguLLguIfguYDguIrguYjguJkgKys0OSAwMTIzIDEyMzEyMzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjMiIG5hbWU9InRpbWVSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPuC5guC4m+C4o+C4lOC4geC4o+C4reC4geC5gOC4p+C4peC4suC4l+C4teC5iOC4luC4ueC4geC4leC5ieC4reC4hyDguYDguIrguYjguJkgMTIuMzMgKOC4iuC4ii7guJnguJkpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3ciPgorICAgIDx2YWx1ZT7guJvguYnguK3guIfguIHguLHguJnguKPguKvguLHguKrguJzguYjguLLguJnguYHguKXguYnguKc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI1IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd19wYXNzd29yZExhYmVsIj4KKyAgICA8dmFsdWU+4Lij4Lir4Lix4Liq4Lic4LmI4Liy4LiZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNiIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWRMYWJlbCI+CisgICAgPHZhbHVlPuC4o+C4sOC4ouC4sOC5gOC4p+C4peC4suC4l+C4teC5iOC5g+C4iuC5ieC4geC4suC4o+C5hOC4lOC5iTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjciIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkIj4KKyAgICA8dmFsdWU+4LmE4Lih4LmI4LiI4Liz4LiB4Lix4LiUPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyOCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWQiPgorICAgIDx2YWx1ZT7guIjguLPguIHguLHguJTguKPguLDguKLguLDguYDguKfguKXguLI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI5IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZCI+CisgICAgPHZhbHVlPuC5g+C4iuC5ieC4hOC4o+C4seC5ieC4h+C5gOC4lOC4teC4ouC4pzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzAiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkRnJvbUxhYmVsIj4KKyAgICA8dmFsdWU+4LmD4LiK4LmJ4LiH4Liy4LiZ4LmE4LiU4LmJ4LiV4Lix4LmJ4LiH4LmB4LiV4LmIOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzEiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkVG9MYWJlbCI+CisgICAgPHZhbHVlPuC4luC4tuC4hzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMyIiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd19NYWlsU3ViamVjdCI+CisgICAgPHZhbHVlPuC4hOC4s+C5gOC4iuC4tOC4jeC5gOC4guC5ieC4suC4quC4ueC5iOC4geC4suC4o+C4m+C4o+C4sOC4iuC4uOC4oeC5geC4muC4muC5gOC4m+C4tOC4lDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzMiIG5hbWU9Imludml0YXRpb25fZXJyb3IiPgorICAgIDx2YWx1ZT7guYTguKHguYjguKHguLXguITguLPguYDguIrguLTguI3guKrguLPguKvguKPguLHguJrguKPguKvguLHguKrguITguLPguYDguIrguLTguI3guJnguLXguYk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM0IiBuYW1lPSJpbnZpdGF0aW9uX2Vycm9yIj4KKyAgICA8dmFsdWU+4LiE4Liz4LmA4LiK4Li04LiN4LiZ4Li14LmJ4LmD4LiK4LmJ4LmE4Lib4LmB4Lil4LmJ4LinIOC4hOC4s+C5gOC4iuC4tOC4jeC4m+C4o+C4sOC5gOC4oOC4l+C4meC4teC5ieC5hOC4oeC5iOC4quC4suC4oeC4suC4o+C4luC5g+C4iuC5ieC4i+C5ieC4s+C5hOC4lOC5iTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzUiIG5hbWU9Imludml0YXRpb25fZXJyb3IiPgorICAgIDx2YWx1ZT7guKPguKvguLHguKrguITguLPguYDguIrguLTguI3guJnguLXguYnguYTguKHguYjguJbguLnguIHguJXguYnguK3guIc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM2IiBuYW1lPSJpbnZpdGF0aW9uX3Bhc3MiPgorICAgIDx2YWx1ZT7guKPguKvguLHguKrguJzguYjguLLguJk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzNyIgbmFtZT0iaW52aXRhdGlvbl9wYXNzX2J0biI+CisgICAgPHZhbHVlPuC4leC4o+C4p+C4iOC4quC4reC4muC4o+C4q+C4seC4quC4nOC5iOC4suC4mTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzgiIG5hbWU9Imludml0YXRpb25fcGFzc19lcnJvciI+CisgICAgPHZhbHVlPuC4o+C4q+C4seC4quC4nOC5iOC4suC4meC5hOC4oeC5iOC4luC4ueC4geC4leC5ieC4reC4hyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM5IiBuYW1lPSJCcm93c2VyIj4KKyAgICA8dmFsdWU+4LmA4Liq4Li14Lii4LiHX+C4oOC4suC4nuC4p+C4teC4lOC4teC5guC4rTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDAiIG5hbWU9ImF1ZGlvX3ZpZGVvIj4KKyAgICA8dmFsdWU+4LiL4Li04LiH4LiE4LmM4LmC4LiE4Lij4LmE4LiZ4LiL4LmM4LmA4Liq4Li14Lii4LiHL+C4oOC4suC4nuC4p+C4teC4lOC4teC5guC4rTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDEiIG5hbWU9ImVycm9yQ29kZV9pbnZhbGlkU2Vzc2lvbiI+CisgICAgPHZhbHVlPuC4peC5h+C4reC4hOC4reC4tOC4meC4luC4ueC4geC4leC5ieC4reC4hyDguYHguJXguYjguKvguKHguKfguJTguJfguLXguYjguITguLjguJPguKXguYfguK3guIHguK3guLTguJnguJnguLHguYnguJnguYTguKHguYjguYTguJTguYnguYPguIrguYnguIfguLLguJnguK3guKLguLnguYjguKvguKPguLfguK3guYTguKHguYjguYTguJTguYnguIjguLHguJTguYDguIHguYfguJrguYTguKfguYnguYPguJnguYDguIvguLTguKPguYzguJ/guYDguKfguK3guKPguYwg4LiE4Li44LiT4LiI4Liw4LiV4LmJ4Lit4LiH4LiC4Lit4Lir4Lih4Liy4Lii4LmA4Lil4LiC4Lib4Lij4Liw4LiI4Liz4Lir4Lih4Lin4LiU4LmD4Lir4Lih4LmI4LmB4Lil4Liw4Lil4Lit4LiH4Lil4LmH4Lit4LiB4Lit4Li04LiZ4Lit4Li14LiB4LiE4Lij4Lix4LmJ4LiHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0MiIgbmFtZT0iZXJyb3Jjb2RlX3NldFVzZXJPYmplY3QiPgorICAgIDx2YWx1ZT7guKLguLHguIfguYTguKHguYjguYTguJTguYnguKXguYfguK3guITguK3guLTguJnguKvguKHguLLguKLguYDguKXguILguJvguKPguLDguIjguLPguKvguKHguKfguJTguKvguKPguLfguK3guYTguKHguYjguKHguLXguKrguLTguJfguJjguLTguYzguILguK3guIfguJzguLnguYnguJTguLnguYHguKUgU09BUCBHYXRld2F5IOC4iOC4s+C5gOC4m+C5h+C4meC4leC5ieC4reC4h+C5g+C4iuC5ieC4nOC4ueC5ieC5g+C4iuC5ieC4l+C4teC5iOC4quC4tOC4l+C4mOC4tOC5jOC4guC4reC4h+C4nOC4ueC5ieC4lOC4ueC5geC4peC5g+C4meC4geC4suC4o+C4neC4suC4geC4neC4seC4h+C4nOC4ueC5ieC5g+C4iuC5ieC4o+C4suC4ouC5g+C4q+C4oeC5iDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDMiIG5hbWU9ImVycm9yY29kZV9sb2dpbkJ5UmVtb3RlVXNlciI+CisgICAgPHZhbHVlPuC4q+C4oeC4p+C4lOC4meC4teC5ieC5hOC4oeC5iOC4oeC4teC4geC4suC4o+C5gOC4iuC4t+C5iOC4reC4oeC4leC5iOC4reC4guC5ieC4reC4oeC4ueC4peC4nOC4ueC5ieC5g+C4iuC5ieC4o+C4sOC4ouC4sOC5hOC4geC4pSDguK3guLLguIjguYDguJvguYfguJnguYDguJ7guKPguLLguLDguKfguYjguLLguITguLjguJPguYTguKHguYjguYTguJTguYnguYDguKPguLXguKLguIEgU09BUC1HYXRld2F5IOC4geC5iOC4reC4meC4l+C4teC5iOC4iOC4sOC5gOC4guC5ieC4suC5g+C4iuC5ieC5guC4m+C4o+C5geC4geC4o+C4oeC4q+C4o+C4t+C4reC4p+C5iOC4suC4hOC4uOC4k+C5g+C4iuC5ieC4q+C4oeC4suC4ouC5gOC4peC4guC4m+C4o+C4sOC4iOC4s+C4q+C4oeC4p+C4lOC4nOC4tOC4lDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDQiIG5hbWU9ImRlYnVnX21lc3NhZ2VfcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+4LiV4Lix4Lin4Lia4Lix4LiZ4LiX4Li24LiB4LmD4LiZ4Lib4Lix4LiI4LiI4Li44Lia4Lix4LiZ4Lit4Lii4Li54LmI4LmD4LiZ4LiK4LmI4Lin4LiH4LiX4LiU4Lil4Lit4LiH4LmD4LiK4LmJITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDUiIG5hbWU9InByb3BlcnR5UGFuZWxYVmFsdWUiPgorICAgIDx2YWx1ZT54PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0NiIgbmFtZT0icHJvcGVydHlQYW5lbFhWYWx1ZUxhYmVsIj4KKyAgICA8dmFsdWU+4LmB4LiB4LiZIHg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ3IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWVZhbHVlIj4KKyAgICA8dmFsdWU+eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDgiIG5hbWU9InByb3BlcnR5UGFuZWxZVmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPuC5geC4geC4mSB5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0OSIgbmFtZT0icHJvcGVydHlQYW5lbFdpZHRoVmFsdWUiPgorICAgIDx2YWx1ZT7guIHguKfguYnguLLguIc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUwIiBuYW1lPSJwcm9wZXJ0eVBhbmVsV2lkdGhWYWx1ZUxhYmVsIj4KKyAgICA8dmFsdWU+4LiE4Lin4Liy4Lih4LiB4Lin4LmJ4Liy4LiHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1MSIgbmFtZT0icHJvcGVydHlQYW5lbEhlaWdodFZhbHVlIj4KKyAgICA8dmFsdWU+4Liq4Li54LiHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1MiIgbmFtZT0icHJvcGVydHlQYW5lbEhlaWdodFZhbHVlTGFiZWwiPgorICAgIDx2YWx1ZT7guITguKfguLLguKHguKrguLnguIc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUzIiBuYW1lPSJwcm9wZXJ0eU9wYWNpdHlTbGlkZXIiPgorICAgIDx2YWx1ZT7guYDguJvguKXguLXguYjguKLguJnguITguKfguLLguKHguYLguJvguKPguYjguIfguYHguKrguIc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU0IiBuYW1lPSJicm93c2VyT3BlbiI+CisgICAgPHZhbHVlPuC5gOC4m+C4tOC4lOC5gOC4muC4o+C4suC4p+C5gOC4i+C4reC4o+C5jDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTUiIG5hbWU9ImJyb3dzZXJDbG9zZSI+CisgICAgPHZhbHVlPuC4m+C4tOC4lOC5gOC4muC4o+C4suC4p+C5gOC4i+C4reC4o+C5jDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTYiIG5hbWU9ImNvbm5lY3Rpb25Mb3N0TWVzc2FnZSI+CisgICAgPHZhbHVlPuC4geC4suC4o+C5gOC4iuC4t+C5iOC4reC4oeC4leC5iOC4reC4geC4seC4muC5gOC4i+C4tOC4o+C5jOC4n+C5gOC4p+C4reC4o+C5jOC4guC4suC4lOC4peC4hyDguITguLjguJPguIjguLPguYDguJvguYfguJnguJXguYnguK3guIfguYLguKvguKXguJTguYLguJvguKPguYHguIHguKPguKHguYPguKvguKHguYjguKvguKPguLfguK0v4LmB4Lil4Liw4LiV4Lij4Lin4LiI4Liq4Lit4Lia4LmA4LiE4Lij4Li34Lit4LiC4LmI4Liy4Lii4LiC4Lit4LiH4LiE4Li44LiTPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1NyIgbmFtZT0iNTU3Ij4KKyAgICA8dmFsdWU+4Lie4Lit4Lii4LmA4LiV4Lit4Lij4LmMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1OCIgbmFtZT0ic3luYyBtZXNzYWdlIGhlYWRlciI+CisgICAgPHZhbHVlPuC4geC4s+C4peC4seC4h+C4i+C4tOC4h+C4hOC5jOC5guC4hOC4o+C5hOC4meC4i+C5jDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTkiIG5hbWU9IlN5bmNocm9uaXppbmcgbWVzc2FnZSI+CisgICAgPHZhbHVlPuC4geC4s+C4peC4seC4h+C4i+C4tOC4h+C4hOC5jOC5guC4hOC4o+C5hOC4meC4i+C5jOC4geC4seC4muC4nOC4ueC5ieC5g+C4iuC5iSDguYLguJvguKPguJTguKPguK3guKrguLHguIHguITguKPguLnguYg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYwIiBuYW1lPSJleHBvcnRUb1NWRyI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O+C4lOC4suC4p+C4meC5jOC5guC4q+C4peC4lOC5gOC4m+C5h+C4mSBTVkcmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MSIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O+C4lOC4suC4p+C4meC5jOC5guC4q+C4peC4lOC5gOC4m+C5h+C4mSBQTkcmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MiIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O+C4lOC4suC4p+C4meC5jOC5guC4q+C4peC4lOC5gOC4m+C5h+C4mSBKUEcmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MyIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O+C4lOC4suC4p+C4meC5jOC5guC4q+C4peC4lOC5gOC4m+C5h+C4mSBQREYmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2NCIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O+C4lOC4suC4p+C4meC5jOC5guC4q+C4peC4lOC5gOC4m+C5h+C4mSBUSUYmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2NSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPuC5gOC4leC4t+C4reC4meC4hOC4p+C4suC4oeC4iOC4szo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY2IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+4Lib4Lij4Liw4LmA4Lig4LiXOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjciIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT7guIHguLLguKPguJfguLPguIvguYnguLM6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2OCIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPuC5hOC4oeC5iOC4oeC4tTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjkiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT7guKrguJbguLLguJnguJfguLXguYjguJXguLHguYnguIc6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MCIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPuC5gOC4o+C4tOC5iOC4oTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzEiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT7guKrguLTguYnguJnguKrguLjguJQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTcyIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+4Lir4Lix4Lin4LiC4LmJ4LitOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzMiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT7guILguYnguK3guITguLTguJTguYDguKvguYfguJk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NCIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPuC5gOC4iuC4tOC4jeC4nOC4ueC5ieC4reC4t+C5iOC4mTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzUiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT7guKPguLLguKLguKfguLHguJk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc2IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+4Lij4Liy4Lii4LmA4LiU4Li34Lit4LiZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NyIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPuC4o+C4suC4ouC4m+C4tTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzgiIG5hbWU9ImFsZXJ0Ij4KKyAgICA8dmFsdWU+4LiB4Liy4Lij4Liq4Li04LmJ4LiZ4Liq4Li44LiU4LiB4Liy4Lij4LiZ4Lix4LiU4LiV4LmJ4Lit4LiH4LmA4Lib4LmH4LiZ4Lir4Lil4Lix4LiH4LiI4Liy4LiB4LiB4Liy4Lij4LmA4Lij4Li04LmI4Lih4LiV4LmJ4LiZ4LiB4Liy4Lij4LiZ4Lix4LiUITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzkiIG5hbWU9ImFsZXJ0Ij4KKyAgICA8dmFsdWU+4LmC4Lib4Lij4LiU4LmB4LiX4Lij4LiB4Lir4Lix4Lin4LiC4LmJ4LitITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODAiIG5hbWU9IjU4MCI+CisgICAgPHZhbHVlPlJUTDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODEiIG5hbWU9IjU4MSI+CisgICAgPHZhbHVlPuC5gOC4m+C4tOC4lOC5g+C4iuC5ieC4h+C4suC4meC4quC5iOC4p+C4meC4meC4teC5ieC4q+C4suC4geC4oOC4suC4qeC4suC4l+C4teC5iOC4hOC4uOC4k+C5g+C4iuC5ieC5gOC4m+C5h+C4meC5geC4muC4muC4guC4p+C4suC5hOC4m+C4i+C5ieC4suC4oiAo4LiB4Liy4Lij4LmA4Lij4Li14Lii4LiH4LiE4Liz4LiB4Lil4Lix4Lia4LiB4Lix4LiZKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODIiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+4LmB4LiU4LiK4Lia4Lit4Lij4LmM4LiUPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MyIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT7guIrguKHguIHguLLguKPguJvguKPguLDguIrguLjguKHguYHguKXguLDguIfguLLguJnguK3guLXguYDguKfguJnguJfguYzguJfguLXguYjguJrguLHguJnguJfguLbguIHguYTguKfguYk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg0IiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPuC4geC4suC4o+C4m+C4o+C4sOC4iuC4uOC4oSAtIOC5gOC4m+C4tOC4lOC4geC4suC4o+C4m+C4o+C4sOC4iuC4uOC4oeC4leC4seC5ieC4h+C5geC4leC5iOC4nOC4ueC5ieC5g+C4iuC5iSA0IOC4o+C4suC4ouC4guC4tuC5ieC4meC5hOC4myAo4Lih4Liy4LiB4LiX4Li14LmI4Liq4Li44LiUIDE2IOC4o+C4suC4oikmbHQ7YnIvJmd0O+C4l+C4uOC4geC4l+C5iOC4suC4meC4quC4suC4oeC4suC4o+C4luC5gOC4guC5ieC4suC5g+C4iuC5ieC5gOC4quC4teC4ouC4hyArIOC4oOC4suC4nuC4p+C4teC4lOC4teC5guC4reC5hOC4lOC5iTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODUiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+4LiH4Liy4LiZ4Lit4Li14LmA4Lin4LiZ4LiX4LmMIC0g4LmA4Lib4Li04LiU4LiB4Liy4Lij4Lib4Lij4Liw4LiK4Li44Lih4LmC4LiU4Lii4Lih4Li14Lic4Li54LmJ4LmA4LiC4LmJ4Liy4Lij4LmI4Lin4Lih4LmE4LiU4LmJ4Lih4Liy4LiB4LiX4Li14LmI4Liq4Li44LiUIDIwMCDguKPguLLguKImbHQ7YnIvJmd0O+C4nOC4ueC5ieC4lOC4s+C5gOC4meC4tOC4meC4o+C4suC4ouC4geC4suC4o+C5gOC4l+C5iOC4suC4meC4seC5ieC4meC4l+C4teC5iOC4quC4suC4oeC4suC4o+C4luC5g+C4iuC5ieC5gOC4quC4teC4ouC4hy/guKDguLLguJ7guKfguLXguJTguLXguYLguK3guYTguJTguYk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg2IiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPuC4quC4o+C5ieC4suC4h+C4nOC4ueC5ieC5g+C4iuC5iSDguKvguYnguK3guIcg4Lit4LiH4LiE4LmM4LiB4LijJmx0O2JyLyZndDsgKyDguYDguJvguKXguLXguYjguKLguJnguIHguLLguKPguJvguKPguLHguJrguYHguJXguYjguIfguITguYjguLI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg3IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5Vc2VycyBpbiB0aGlzIFJvb20gbm93PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4OCIgbmFtZT0icm9vbSBBZG1pbmlzdHJhdGlvbiByb29tY2xpZW50cyBsaXN0Ij4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg5IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTAiIG5hbWU9InJvb20gQWRtaW5pc3RyYXRpb24gcm9vbWNsaWVudHMgbGlzdCI+CisgICAgPHZhbHVlPkQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkxIiBuYW1lPSJzd2Ygc3luYyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TG9hZGluZyBEb2N1bWVudC4gUGxlYXNlIHdhaXQgdW50aWxsIGFsbCBDbGllbnQgaGF2ZSBiZWVuIHN5bmNocm9uaXplZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkyIiBuYW1lPSJ1cGxvYWQgZGlhbG9nIj4KKyAgICA8dmFsdWU+VXBsb2FkIGNvbXBsZXRlLCBjb252ZXJ0aW5nIERvY3VtZW50IC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTMiIG5hbWU9InVwbG9hZCBkaWFsb2ciPgorICAgIDx2YWx1ZT5TdGFydCBVcGxvYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk0IiBuYW1lPSJ1cGxvYWQgZGlhbG9nIj4KKyAgICA8dmFsdWU+VXBsb2FkIGFuZCBJbXBvcnQgRGlhbG9nLiBQbGVhc2Ugc2VsZWN0IGEgRmlsZSBmcm9tIHlvdXIgRGlzay48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk1IiBuYW1lPSJ1cGxvYWQgRGlhbG9nIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NiIgbmFtZT0idXBsb2FkIERpYWxvZyI+CisgICAgPHZhbHVlPlNlbGVjdCBGaWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NyIgbmFtZT0iYWRtaW5pc3RyYXRpb24gbmF2aWdhdGlvbiI+CisgICAgPHZhbHVlPkNvbm5lY3Rpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5OCIgbmFtZT0iY29uZmFkbWluIHZhbHVlIGxpc3QiPgorICAgIDx2YWx1ZT5WYWx1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTkiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5TdHJlYW1pZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDAiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDEiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5Db25uZWN0ZWQgc2luY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAyIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+Um9vbSAvIFNjb3BlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwMyIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPktpY2sgVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDQiIG5hbWU9ImtpY2sgdXNlciBjb25maXJtYXRpb24gZGlhbG9nIj4KKyAgICA8dmFsdWU+S2ljayBVc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwNSIgbmFtZT0ia2ljayB1c2VyIGNvbmZpcm1hdGlvbiBkaWFsb2ciPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8ga2ljayB0aGlzIENsaWVudCBmcm9tIHRoZSBDb25uZWN0aW9uPyZsdDtici8mZ3Q7IFRoaXMgZG9lcyBvbmx5IHJlbW92ZSB0aGUgQ2xpZW50IGZyb20gdGhlIGN1cnJlbnQgUm9vbS5UaGUgQ2xpZW50IGNvdWxkIHJlLWxvZ2luIGFnYWluLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDYiIG5hbWU9ImtpY2sgdXNlciBtZXNzYWdlIGRpYWxvZyI+CisgICAgPHZhbHVlPllvdXIgc2Vzc2lvbiBoYXMgYmVlbiBjbG9zZWQgYnkgYW4gQWRtaW5pc3RyYXRvciBvciBNb2RlcmF0b3IuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwNyIgbmFtZT0idXNlcmFsdGVyc2VsZl9waG9uZSI+CisgICAgPHZhbHVlPlBob25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwOCIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+VXNlciBpcyB0aGUgTW9kZXJhdG9yIG9mIHRoaXMgUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDkiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPlVzZXIgaXMgYWxsb3dlZCB0byBkcmF3IG9uIHRoZSBXaGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMCIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+KFJlKSBTdGFydCBBdWRpby9WaWRlbyBvciBjaGFuZ2UgRGV2aWNlIFNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMSIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+QWxsb3cgdGhpcyBVc2VyIHRvIGRyYXcgb24gdGhlIFdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEyIiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5SZW1vdmUgYWJpbGl0eSB0byBkcmF3IG9uIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEzIiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+VXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE0IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+RmlsZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE1IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+V2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTYiIG5hbWU9ImNvbmZlcmVuY2VQYW5lbHMiPgorICAgIDx2YWx1ZT5DaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxNyIgbmFtZT0ib3JnYW5pemF0aW9uIGNob29zZSBpbmZvIj4KKyAgICA8dmFsdWU+WW91ciBhY2NvdW50IGlzIGFzc2lnbmVkIHRvIG11bHRpcGxlIE9yZ2FuaXphdGlvbnMuIFBsZWFzZSBjaG9vc2Ugb25lIGZvciB0aGlzIFNlc3Npb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxOCIgbmFtZT0iZXJyb3IgbWVzc2FnZSByb29tIGZ1bGwiPgorICAgIDx2YWx1ZT5UaGlzIHJvb20gaXMgZnVsbCBhdCB0aGUgbW9tZW50LiBQbGVhc2UgdHJ5IGFnYWluIGxhdGVyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTkiIG5hbWU9InJvb210eXBlcyI+CisgICAgPHZhbHVlPlJvb20gVHlwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjAiIG5hbWU9ImFwcG9pbnRlZF9yb29tIj4KKyAgICA8dmFsdWU+QXBwb2ludG1lbnQgUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjEiIG5hbWU9InNlcnZlcnRpbWUiPgorICAgIDx2YWx1ZT5TZXJ2ZXIgVGltZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjIiIG5hbWU9Imludl9yZW1pbmRlcl90ZW1wbGF0ZV9oZWFkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIC0gUmVtaW5kZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIzIiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9mcm9tIj4KKyAgICA8dmFsdWU+TWVzc2FnZSBmcm9tIFVzZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNCIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfbWVzc2FnZSI+CisgICAgPHZhbHVlPk1lc3NhZ2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNSIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfY2xpY2tfdGV4dCI+CisgICAgPHZhbHVlPkNsaWNrIHRoaXMgbGluayB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgTWVldGluZ3M6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNiIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfY2xpY2tfdGV4dF9saW5rIj4KKyAgICA8dmFsdWU+Q2xpY2sgaGVyZSB0byBlbnRlciByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNyIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfY2xpY2tfdGV4dF9oZWxwIj4KKyAgICA8dmFsdWU+aWYgeW91IGhhdmUgcHJvYmxlbXMgd2l0aCB0aGUgbGluaywgcGxlYXNlIGNvcHkgYW5kIHBhc3RlIHRoaXMgdG8geW91ciBicm93c2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjgiIG5hbWU9ImJ0bl9zZWFyY2hfaW50ZXJuIj4KKyAgICA8dmFsdWU+c2VhcmNoIGludGVybjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjkiIG5hbWU9ImJ0bl9zZWFyY2hfZXh0ZXJuIj4KKyAgICA8dmFsdWU+ZXh0ZXJuIHVzZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzMCIgbmFtZT0ibGJsX3ByZW5hbWUiPgorICAgIDx2YWx1ZT5wcmUgbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzEiIG5hbWU9ImxibF9uYW1lIj4KKyAgICA8dmFsdWU+bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzIiIG5hbWU9ImxibF9lbWFpbCI+CisgICAgPHZhbHVlPkUtbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzMiIG5hbWU9ImxvZ291dENvbmZpcm1fdGl0bGUiPgorICAgIDx2YWx1ZT5Db25maXJtIGxvZ291dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzQiIG5hbWU9ImxvZ291dENvbmZpcm1fc3VyZV90b19sb2dvdXRfcXVlc3Rpb24iPgorICAgIDx2YWx1ZT5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gbG9nb3V0IG5vdz88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM1IiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT5BY3Rpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkRlbW8gUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EZW1vIFRpbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM4IiBuYW1lPSJtZWV0aW5nIFRpbWVyIj4KKyAgICA8dmFsdWU+TWVldGluZyBUaW1lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzkiIG5hbWU9Im1lZXRpbmcgVGltZXIiPgorICAgIDx2YWx1ZT5UaGlzIFJvb20gaXMgYSBEZW1vIFJvb20uIFRvIGRpc2FibGUgdGhpcyB3YXJuaW5nIHlvdSBlaXRoZXIgc2hvdWxkIGdldCBhIHByaXZhdGUgbWVldGluZyByb29tIGZvciB5b3VyIHBlcnNvbmFsIHVzYWdlIG9yIHNldCB1cCBhbiBvd24gU2VydmVyLiBZb3Ugd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGxvZ2dlZCBvZmYgaW46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MCIgbmFtZT0ibWVldGluZyByb29tIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+TW9kZXJhdGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MSIgbmFtZT0ibW9kZXJhdGVkIHJvb20gd2FpdGluZyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+UGxlYXNlIHdhaXQgdW50aWxsIHRoZSBNb2RlcmF0b3IgaGFzIGVudGVyZWQgdGhlIFJvb20uIFRoZSBNb2RlcmF0b3IgY2FuIGJlIGVpdGhlciBhIFRlYWNoZXIsIEFkbWluIG9yIHRoZSBjcmVhdG9yIG9mIHRoaXMgUm9vbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQyIiBuYW1lPSJlcnJvciBwb3B1cCI+CisgICAgPHZhbHVlPk9rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MyIgbmFtZT0id2luZG93IHNjcmVlbnNoYXJpbmciPgorICAgIDx2YWx1ZT5JbmNvbWluZyBTY3JlZW4gU2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDQiIG5hbWU9IndpbmRvdyBzY3JlZW4gc2hhcmluZyI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGEgbmV3IFNjcmVlbiBTaGFyaW5nIGluY29taW5nIGZyb20gdGhlIFVzZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0NSIgbmFtZT0id2luZG93IHNjcmVlbiBzaGFyaW5nIj4KKyAgICA8dmFsdWU+U3RhcnQgU2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDYiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QWRkIG5ldyBNZWV0aW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0NyIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5NZWV0aW5nIFJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ4IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkV2ZW50IFJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ5IiBuYW1lPSJtYWluIG1lbnUgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPk1vZGVyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUwIiBuYW1lPSJtZW51IG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Nb2RlcmF0ZSBVc2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTEiIG5hbWU9Im1lbnUgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPk1vZGVyYXRlIFJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1MiIgbmFtZT0ibW9kZXJhdG9yIG9yZyI+CisgICAgPHZhbHVlPk08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUzIiBuYW1lPSJjb25maXJtIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5EbyB5b3Ugd2FudCB0byBjaGFuZ2UgdGhpcyBVc2VyIHRvIGJlY29tZSBhIE1vZGVyYXRvciBvZiB0aGF0IE9yZ2FuaXphdGlvbj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU0IiBuYW1lPSJlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+UGxlYXNlIGNob29zZSBhbiBPcmdhbml6YXRpb24gYmVmb3JlIHlvdSB0cnkgdG8gYWRkIGEgVXNlciB0byBpdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU1IiBuYW1lPSJjaG9vc2UgdXNlciB3aW5kb3ciPgorICAgIDx2YWx1ZT5Pcmdhbml6YXRpb24gLSBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU2IiBuYW1lPSJtb2RlcmF0b3Igb3JnIHVzZXJzIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIFVzZXIgZnJvbSB0aGUgT3JnYW5pemF0aW9uPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTciIG5hbWU9Im9yZyBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+VGhpcyBVc2VyIGlzIE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTgiIG5hbWU9Im9yZyBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+VGhpcyBVc2VyIGlzIE5vLU1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTkiIG5hbWU9ImVycm9yIG1lc3NhZ2UgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkRvIHlvdSB3YW50IHRoaXMgVXNlciB0byBiZSBub3QgYSBNb2RlcmF0b3Igb2YgdGhpcyBPcmdhbml6YXRpb24/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MCIgbmFtZT0ibW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkFkZCBvciBkZWxldGUgVXNlcnMgb3IgUm9vbXMgd2l0aGluIHlvdXIgT3JnYW5pemF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MSIgbmFtZT0iZGVsZXRlIGNvbmZpcm0gcXVlc3Rpb24iPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcmVjb3JkPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjIiIG5hbWU9ImRlbGV0ZSBjb25maXJtIHF1ZXN0aW9uIHVzZXIgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyB1c2VyIGZyb20geW91ciBvcmdhbml6YXRpb24/IFlvdSB3aWxsIG9ubHkgZGVsZXRlIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gdGhlIHVzZXIgYW5kIHlvdXIgb3JnYW5pemF0aW9uLCB0byByZWFsbHkgZGVsZXRlIHRoZSB1c2VyIGl0c2VsZiB5b3UgaGF2ZSB0byBsb2dpbiBpbnRvIHRoZSBBZG1pbmlzdHJhdGlvbi1QYW5lbC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYzIiBuYW1lPSJlcnJvciBtZXNzYWdlIHNlbGYgZGVsZXRpbmciPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IGRlbGV0ZSB5b3VyIG93biBVc2VyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjQiIG5hbWU9ImVycm9yIG1lc3NhZ2UgYXV0aCI+CisgICAgPHZhbHVlPlRoaXMgTWV0aG9kIG5lZWRzIGEgQWRtaW5zdHJhdGlvbiBBY2NvdW50IHRvIGJlIGludm9rZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NSIgbmFtZT0iZXJyb3IgbWVzc2FnZSBTT0FQIj4KKyAgICA8dmFsdWU+VGhlcmUgd2FzIG5vIFNlc3Npb24gYXNzb2NpYXRlZCB3aXRoIHRoaXMgSUQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NiIgbmFtZT0iZXJyb3IgbWVzc2FnZSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+VGhpcyBpcyBhbiBBZG1pbmlzdHJhdG9yIG9yIE1vZGVyYXRvciBhY2NvdW50LiBZb3UgY2FuIG9ubHkgZWRpdCB0aGlzIGFjY291bnQgdGhyb3VnaCB0aGUgQWRtaW5pc3RyYXRpb24gUGFuZWwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NyIgbmFtZT0iZW1haWwgdmVyaWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+VG8gY29tcGxldGUgeW91ciByZWdpc3RyYXRpb24gcGxlYXNlIGNsaWNrIG9uIHRoZSBmb2xsb3dpbmcgbGluay4gT3IgY29weSB0aGUgVVJMIHRvIHlvdXIgYnJvd3NlciBiYXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2OCIgbmFtZT0iZW1haWwgdmVyaWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+Q2xpY2sgdG8gdmVyaWZ5IHlvdXIgRS1NYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2OSIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPk5vIHVzZXIgd2FzIGZvdW5kIGZvciB0aGlzIEhhc2guPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3MCIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPlRoaXMgdXNlciBpcyBhbHJlYWR5IGFjdGl2YXRlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjcxIiBuYW1lPSJlcnJvck1lc3NhZ2VfVXNlckFjdGl2YXRpb25TZXJ2bGV0IFtBY3RpdmF0ZVVzZXJdIj4KKyAgICA8dmFsdWU+WW91IGRpZCBzdWNjZXNzZnVsbHkgYWN0aXZhdGUgeW91ciBhY2NvdW50ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzIiIG5hbWU9ImVycm9yTWVzc2FnZV9Vc2VyQWN0aXZhdGlvblNlcnZsZXQgW0FjdGl2YXRlVXNlcl0iPgorICAgIDx2YWx1ZT5Mb2dpbiBOb3c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjczIiBuYW1lPSJsb2dpbkVycm9yTWVzc2FnZSA9IHVzZXIgd2FzIG5vdCBhY3RpdmF0ZWQiPgorICAgIDx2YWx1ZT5Zb3VyIGFjY291bnQgaXMgbm90IGFjdGl2YXRlZC4gRmlyc3QgdXNlIHRoZSBsaW5rIGluIHRoZSBFbWFpbCB5b3UndmUgcmVjZWl2ZWQgZHVyaW5nIHJlZ2lzdHJhdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc0IiBuYW1lPSJyZWdpc3RlciB2ZXJpZmljYXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPllvdSBzdWNjZXNzZnVsbHkgc2lnbmVkIHVwLiBXZSd2ZSBzZW5kIGFuIEVNYWlsIHdpdGggYSB2ZXJpZmljYXRpb24gQ29kZSB0byB5b3VyIE1haWwuIFBsZWFzZSBjaGVjayB5b3VyIEluYm94LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzUiIG5hbWU9InBhcnRpY2lwYW50cyBwYW5lbCI+CisgICAgPHZhbHVlPlJlbW92ZSBNb2RlcmF0aW9uIFJvbGUgZnJvbSB0aGlzIFVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc2IiBuYW1lPSJwYXJ0aWNpcGFudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5HcmFudCBNb2RlcmF0aW9uIFJpZ2h0cyB0byB0aGlzIFVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc3IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Vc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3OCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QWNjZXNzIHRvIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc5IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Nb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgwIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Nb2RlcmF0aW9uOiBQbGVhc2UgY2hvb3NlIGFueSBVc2VyIG9uIHRoZSBMaXN0IHRvIGdyYW50IGhpbSBhY2Nlc3MgdG8gdGhlIFdoaXRlYm9hcmQsIE1vZGVyYXRpb24gb3IgVmlkZW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+VGhpcyBVc2VyIGlzIGFscmVhZHkgTW9kZXJhdG9yLCBzbyBoZSBoYXMgYXV0b21hdGljYWxseSB0aGUgcmlnaHQgdG8gZHJhdy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgyIiBuYW1lPSJldmVudCB1c2VyIGxpc3QgZXJyb3IiPgorICAgIDx2YWx1ZT5UaGlzIGlzIHlvdSEgWW91IGNhbm5vdCByZW1vdmUgdGhlIE1vZGVyYXRpb24gcmlnaHRzIGZyb20geW91cnNlbGYuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MyIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QWxsb3cgdGhpcyBVc2VyIHRvIFB1Ymxpc2ggaGlzIEF1ZGlvIC8gVmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg0IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5SZW1vdmUgQXVkaW8vVmlkZW8gb2YgdGhpcyBVc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4NSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+SSB3b3VsZCBsaWtlIHRvIGdldCB0aGUgbW9kZXJhdGlvbiBvZiB0aGlzIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg2IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5JIHdvdWxkIGxpa2UgdG8gZHJhdyBvbiB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4NyIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+SSB3b3VsZCBsaWtlIHRvIHNoYXJlIG15IEF1ZGlvL1ZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4OCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+WW91IGFyZSBtb2RlcmF0b3Igb2YgdGhpcyByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4OSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+WW91IGFyZSBhbGxvd2VkIHRvIGRyYXcgb24gd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTAiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPllvdSBhcmUgYWxsb3dlZCB0byBzaGFyZSB5b3VyIEF1ZGlvL1ZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5MSIgbmFtZT0iZXJyb3J0eXBlIj4KKyAgICA8dmFsdWU+TWVzc2FnZSB0byBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkyIiBuYW1lPSJhcHBseSBmb3IgbW9kIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTMiIG5hbWU9ImFwcGx5IGZvciBtb2QgbWVzc2FnZSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gZ2V0IHRoZSBNb2RlcmF0aW9uLiBVc2UgdGhlIHN0YXR1cyBJY29ucyBuZXh0IHRvIHRoZSB1c2VyIGluIHRoZSBMaXN0IG9mIFVzZXJzIHRvIGFkZCBvciByZW1vdmUgdGhlIE1vZGVyYXRpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5NCIgbmFtZT0iYXBwbHkgZm9yIHdoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGRyYXcgb24gd2hpdGVib2FyZC4gVXNlIHRoZSBzdGF0dXMgSWNvbnMgbmV4dCB0byB0aGUgdXNlciBpbiB0aGUgTGlzdCBvZiBVc2VycyB0byBhZGQgb3IgcmVtb3ZlIHRoZSByaWdodCB0byBkcmF3IGFueXRoaW5nIG9uIHRoZSB3aGl0ZWJvYXJkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTUiIG5hbWU9IjY5NSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gc2hhcmUgaGlzIEF1ZGlvL1ZpZGVvLiBVc2UgdGhlIHN0YXR1cyBJY29ucyBuZXh0IHRvIHRoZSB1c2VyIGluIHRoZSBMaXN0IG9mIFVzZXJzIHRvIGFkZCBvciByZW1vdmUgdGhlIHJpZ2h0IHRvIHNoYXJlIEF1ZGlvL1ZpZGVvIGZvciBhbnkgVXNlci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk2IiBuYW1lPSJtb2RlcmF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Zb3UgaGF2ZSB0byB3YWl0IHVudGlsbCBhIE1vZGVyYXRvciBlbnRlcnMgdGhlIHJvb20uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5NyIgbmFtZT0iY2FsZW5kYXIgYnV0dG9uIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5OCIgbmFtZT0iY2FsZW5kYXIgYnV0dG9uIj4KKyAgICA8dmFsdWU+U2F2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTkiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPkRheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDAiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPk1vbnRoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwMSIgbmFtZT0iY2FsZW5kYXIgY29tcG9uZW50Ij4KKyAgICA8dmFsdWU+WWVhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDIiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5VcGxvYWQgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDMiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5BZGQgRm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwNCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlJlZnJlc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA1IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+VHJhc2ggKERyYWcgYW5kIERyb3AgaXRlbSBoZXJlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDYiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5NeSBGaWxlcyAoSG9tZSBEcml2ZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA3IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+Um9vbSBGaWxlcyAoUHVibGljIERyaXZlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDgiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5BZGQgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDkiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5BZGQgRm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkRlbGV0ZSBGb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzExIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+RWRpdCBOYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPk5ldyBGb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzEzIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIEl0ZW0/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxNCIgbmFtZT0idXNlciBhZG1pbiI+CisgICAgPHZhbHVlPlNlYXJjaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTUiIG5hbWU9InVzZXIgYWRtaW4iPgorICAgIDx2YWx1ZT5TZWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE2IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+T3BlbiBEb2N1bWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTciIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5TaG93IGFsbCBGaWxlcyAoVHJlZSBWaWV3KTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTgiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5DbG9zZSBEb2N1bWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTkiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5EZWxldGUgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjAiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIG5vdCBhbGxvd2VkIHRvIGRyYXcgYW55dGhpbmcgb24gdGhlIFdoaXRlYm9hcmQuIFlvdSBoYXZlIHRvIGJlY29tZSBNb2RlcmF0b3Igb3IgYXQgbGVhc3QgZ2V0IHRoZSBSaWdodCB0byBlZGl0IFdoaXRlYm9hcmQuIFlvdSBtYXkgYXNrIGEgTW9kZXJhdG9yIHRvIGdpdmUgeW91IHRoYXQgcmlnaHQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyMSIgbmFtZT0icHJvcGVydHkgcGFuZWwiPgorICAgIDx2YWx1ZT5Eb2N1bWVudCBQcm9wZXJ0aWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyMiIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+U3RhcnQgQ2xpZW50IChleHRlcm5hbCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIzIiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5TdGFydCBDbGllbnQgKEhUVFApPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNCIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+QSB1c2VyIHdhbnQgdG8gc2hhcmUgaGlzIHNjcmVlbi4gRG8geW91IHdhbnQgdG8gc2VlIGl0PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjUiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPllvdSBhcmUgY3VycmVudGx5IHNoYXJpbmcgeW91ciBEZXNrdG9wLiBGb3Igc3RvcHBpbmcgdGhlIFNoYXJpbmcgU2Vzc2lvbiBwbGVhc2UgaGl0IHRoZSBTdG9wIGJ1dHRvbiBpbiB0aGUgU2hhcmluZyBDbGllbnQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNiIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+U2hhcmluZyBTZXNzaW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNyIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+WW91IGFyZSBhbHJlYWR5IHNoYXJpbmcgeW91ciBkZXNrdG9wITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+RGVza3RvcCBWaWV3ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI5IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkV4aXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMwIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkRlc2t0b3AgU2hhcmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5DbGljayBTdGFydCB0byBwdWJsaXNoIHlvdXIgc2NyZWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdGFydCBTaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdG9wIFNoYXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM0IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlNlbGVjdCB5b3VyIHNjcmVlbiBhcmVhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzUiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+Q2hhbmdlIHdpZHRoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5UaGUgU2hhcmVyIGhhcyBmaW5pc2hlZCB0aGlzIHNlc3Npb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5DaGFuZ2UgaGVpZ2h0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczOCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5YLU9mZnNldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzkiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+WS1PZmZzZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQwIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPldpZHRoOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDEiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+SGVpZ2h0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDIiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+Q29ubmVjdGlvbiB3YXMgY2xvc2VkIGJ5IFNlcnZlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDMiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NCIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5TdGFydCBFeHRlcm5hbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDUiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+SWYgeW91IGNsb3NlIHRoaXMgc2Vzc2lvbiBjb21wbGV0ZWx5IHlvdSBhcmUgbm90IGFibGUgdG8gcmVzdGFydCB0aGUgdmlld2VyIGZvciB0aGlzIHNlc3Npb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NiIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5Db25maXJtIENsb3NpbmcgVmlld2VyIFNlc3Npb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ3IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPlNoYXJlIFNjcmVlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDgiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+UmVjb3JkIFNlc3Npb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ5IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+Q28tQnJvd3Npbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUwIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+T29vcHMsIC4uLiBGaXJlZm94IG9uIFdpbmRvd3MgZG9lcyBub3Qgc2hvdyBjbGVhciBDby1Ccm93c2luZy4gUGxlYXNlIHVzZSBhbm90aGVyIEJyb3dzZXIgZm9yIHVzaW5nIHRoZSBDby1Ccm93c2luZyBmZWF0dXJlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTEiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5QcmV2aW91czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTIiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5OZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MyIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPlJlbG9hZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTQiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5Ib21lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1NSIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPkxvYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU2IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+QWRkIHRoaXMgd2Vic2l0ZSBhcyBEZWZhdWx0IHdlYnNpdGUgdG8geW91ciBQcm9maWxlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTciIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5UZXN0IFNldHVwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1OCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPkNoZWNrIHlvdSBNaWNyb3Bob25lIGFuZCBDYW1lcmEgc2V0dXAgYmVmb3JlIHlvdSBlbnRlciBhIHJvb20gYnkgcmVjb3JkaW5nIHNvbWUgc2Vjb25kcy4gWW91IGNhbiB0aGVuIHJlcGxheSB5b3VyIHJlY29yZGluZyB0byBjaGVjayB5b3VyIHZvaWNlIGFuZCBwaWN0dXJlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTkiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5Eb24ndCBzaG93IHRoaXMgdGVzdCBhbnltb3JlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjEiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5TdGFydCBDb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MiIgbmFtZT0iZWRpdCB2aWRlbyBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkRvIG5vdCBhc2sgYWdhaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYzIiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+UkVDPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlBMQVk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY1IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+WW91IG1heSBwcm9jZWVkIHdpdGhvdXQgdGVzdGluZyBpZiB5b3UgZG8gbm90IHBsYW4gdG8gcHVibGlzaCB5b3VyIHZvaWNlIG9yIHBpY3R1cmUuIFBhcnRpY2lwYW50cyB3aXRob3V0IEF1ZGlvIG9yIFZpZGVvIGNhbiBzdGlsbCB1c2UgdGhlIFdoaXRlYm9hcmQsIHNoYXJlIHRoZWlyIERlc2t0b3Agb3Igd3JpdGUgQ2hhdCBtZXNzYWdlcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY2IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+U1RPUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjciIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5MZXZlbC1NZXRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjgiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5QcmVzcyBTdGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjkiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5TdGFydCBDb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MCIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPlN0YXJ0IEV2ZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MSIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPkNob29zZSBSb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MiIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPkNoZWNrIFNldHVwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MyIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPlN0YXJ0IENvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc0IiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+SG93IHRvIGNvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc1IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+U3RhcnQgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NiIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPkRvIG5vdCBzaG93IEF1ZGlvIC8gVmlkZW8gVGVzdCAoUmVjb3JkaW5nKSBiZWZvcmUgZW50ZXJpbmcgYSBDb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NyIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPlB1YmxpYyBSb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzgiIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT5QdWJsaWMgUm9vbXMgYXJlIGFjY2Vzc2libGUgZm9yIGFsbCBVc2Vycy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc5IiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+UHJpdmF0ZSBSb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODAiIG5hbWU9IlByaXZhdGUgUm9vbXMiPgorICAgIDx2YWx1ZT5Qcml2YXRlIFJvb21zIGFyZSBvbmx5IGFjY2Vzc2libGUgZm9yIHVzZXJzIG9mIHRoZSBzYW1lIG9yZ2FuaXphdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgxIiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+TXkgUm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgyIiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+Um9vbXMgaW4gdGhpcyBzZWN0aW9uIGFyZSBjcmVhdGVkIGZvciBwZXJzb25hbCB1c2FnZS4gVGhlcmUgYXJlIHNvbWUgc3RhbmRhcmQgcm9vbXMgcGx1cyB0aGUgb25lcyB0aGF0IGFyZSBjcmVhdGVkIHRocm91Z2ggdGhlIGNhbGVuZGFyIGFuZCBoYXZlIGEgc3RhcnQgYW5kIGFuIGVuZCBkYXRlLiBUaGUgcm9vbXMgY3JlYXRlZCB2aWEgdGhlIGNhbGVuZGFyIGFyZSBvbmx5IGxpc3RlZCBpbiB0aGlzIHNlY3Rpb24gYXMgbG9uZyBhcyB0aGV5IGFyZSB2YWxpZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgzIiBuYW1lPSJyZXN0cmljdGVkIHJvb20iPgorICAgIDx2YWx1ZT5Zb3UgaGF2ZSB0byBiZSBtb2RlcmF0b3IgdG8gZG8gdGhpcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg0IiBuYW1lPSJtZW51IG9wdGlvbiI+CisgICAgPHZhbHVlPkFwcGx5IGZvciBtb2RlcmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NSIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT5BcHBseSBmb3Igd2hpdGVib2FyZCBhY2Nlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg2IiBuYW1lPSJtZW51IG9wdGlvbiI+CisgICAgPHZhbHVlPkFwcGx5IGZvciBjYW1lcmEvbWljcm9waG9uZSBhY2Nlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg3IiBuYW1lPSJlcnJvciBtZXNzYWdlIHNvYXAgc2VjdXJlIGxvZ2luIj4KKyAgICA8dmFsdWU+VGhpcyBTZXNzaW9uIEhhc2ggd2FzIGFscmVhZHkgdXNlZC4gWW91IGNhbm5vdCB1c2UgaXQgdHdpY2UuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4OCIgbmFtZT0iZGFzaGJvYXJkIGJ1dHRvbiI+CisgICAgPHZhbHVlPlNUQVJUPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4OSIgbmFtZT0iZXhpdCBjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+RVhJVDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTAiIG5hbWU9ImNvbmZlcmVuY2UgdmlldyI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBleGl0PyBZb3UgbWlnaHQgc2hvdWxkIGNsZWFyIHVwbG9hZGVkIGRvY3VtZW50cywgd2hpdGVib2FyZCBhbmQgdGhlIGNoYXQgaGlzdG9yeS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkxIiBuYW1lPSJjb25mZXJlbmNlIHZpZXciPgorICAgIDx2YWx1ZT5FeGl0IGNvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkyIiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT5Sb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTMiIG5hbWU9Im1haW4gbWVudSI+CisgICAgPHZhbHVlPkNob29zZSBhIHJvb20gZm9yIGEgbWVldGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTQiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgYW4gdW5zYXZlZCBFdmVudCBpbiB0aGUgQ2FsZW5kYXIuIFBsZWFzZSBlaXRoZXIgc2F2ZSBpdCBvciByZW1vdmUgaXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5NSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5QbGVhc2UgYWRkIGF0IGxlYXN0IG9uZSBhdHRlbmRlZSBmb3IgeW91ciBtZWV0aW5nITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTYiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEV2ZW50PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTciIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+V2FybmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTgiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QWRkIEV2ZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5OSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5EYXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAwIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPldlZWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAxIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPk1vbnRoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMiIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5EZXNjcmlwdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDMiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QXR0ZW5kZWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FLCB5b3VyIFdlYiBDb25mZXJlbmNpbmcgUGxhdGZvcm0uIEVpdGhlciBmb2xsb3cgdGhlIEluc3RydWN0aW9ucywgcHJlc3MgdGhlIHN0YXJ0IGJ1dHRvbiB0byBzdGFydCB0byBjb25mZXJlbmNlIGltbWVkaWF0ZWxseSBvciB5b3UgZ290byB0aGUgQ2FsZW5kYXIgYW5kIHNldCB1cCBhIENvbmZlcmVuY2UgZm9yIHRoZSBmdXR1cmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNSIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+UGxhbiBhIE1lZXRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA2IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VG8gc2V0IHVwIGEgY29uZmVyZW5jZSB5b3UgY2FuIGFkZCBhIG5ldyBFdmVudCBpbiB0aGUgQ2FsZW5kYXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNyIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPk5lZWQgaGVscD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA4IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+UmVzdHJpY3RlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDkiIG5hbWU9Imx6Y2FsZW5kZXIiPgorICAgIDx2YWx1ZT5TZWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEwIiBuYW1lPSJsemNhbGVuZGVyIj4KKyAgICA8dmFsdWU+QWRkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMSIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIFVzZXIgc2VsZWN0ZWQuIFBsZWFzZSBzZWxlY3QgYW4gaXRlbSBmcm9tIHRoZSBsaXN0IGZpcnN0IGFuZCB0aGVuIGhpdCBhZGQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMiIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPkFkZCBBdHRlbmRlZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTMiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5TYXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxNCIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPkRlbGV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTUiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5FdmVudCBEZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkRlZmF1bHQgTW9kZXJhdG9yczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5TdXBlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTgiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTkiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyMCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkUtTWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjEiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5BZGQgbmV3IGRlZmF1bHQgTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyMiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPklzIFN1cGVyIE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjMiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5JZiB0aGUgUm9vbSBpcyBtb2RlcmF0ZWQsIFVzZXIgd2l0aCBMZXZlbCBNb2RlcmF0b3Igb3IgQWRtaW5pc3RyYXRvciBhcmUgYXV0b21hdGljYWxseSBNb2RlcmF0b3IgaWYgdGhleSBlbnRlciB0aGUgUm9vbS4gSWYgeW91IGRvbid0IHdhbnQgdG8gc3BlY2lmeSB0aGF0IGFuZCBvbmx5IHdhbnQgYSBjZXJ0YWluIFVzZXIgdG8gYmVjb21lIE1vZGVyYXRvciB1c2UgdGhlIERlZmF1bHQgTW9kZXJhdG9yIG9wdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI0IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+QSBTdXBlciBNb2RlcmF0b3IgaXMgYWx3YXlzIGEgTW9kZXJhdG9yIHdoZW4gaGUgZW50ZXJzIGEgUm9vbSwgYW5kIG5vYm9keSBjYW4gcmVtb3ZlIHRoZSBNb2RlcmF0aW9uIEZsYWcgZnJvbSBoaW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI1IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+QXBwbHkgU3VwZXItTW9kZXJhdGlvbiB0byBVc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPlJlbW92ZSBTdXBlciBNb2RlcmF0aW9uIGZyb20gVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyOCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPklmIHlvdSBhZGQgYW4gT3JnYW5pemF0aW9uIHRvIHRoZSByb29tIG9ubHkgdXNlcnMgb2YgdGhhdCBPcmdhbml6YXRpb24gaGF2ZSBhY2Nlc3MgdG8gaXQgKFRoaXMgaXMgb25seSB2YWxpZCBpZiB0aGUgaXNQdWJsaWMgZmxhZyBpcyBzZXQgdG8gZmFsc2UhKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjkiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5Nb2RlcmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzMCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkxpbWl0YXRpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzMSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPk9yZ2FuaXphdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzIiIG5hbWU9ImNvbmZpcm0gYWN0aW9uIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzMiIG5hbWU9ImNvbmZpcm0gZGVsZXRlIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEl0ZW0/IFlvdSBoYXZlIHRvIHByZXNzIHRoZSBzYXZlIGJ1dHRvbiB0byBzdG9yZSB0aGUgY2hhbmdlcyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM0IiBuYW1lPSJ1c2VyIGNob29zZSBlcnJvciI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIFVzZXIgc2VsZWN0ZWQuIFBsZWFzZSBzZWxlY3QgZmlyc3QgYmVmb3JlIHlvdSBhZGQgaXQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkFkZCBuZXcgRGVmYXVsdCBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM2IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RG8geW91IHdhbnQgdG8gYWRkIHRoZSBTdXBlciBNb2RlcmF0aW9uIEZsYWcgZm9yIHRoaXMgVXNlcj8gQSBTdXBlciBNb2RlcmF0b3IgaXMgbm90IG9ubHkgTW9kZXJhdG9yIG9mIGEgUm9vbSwgYnV0IGFsc28gbm8gb3RoZXIgTW9kZXJhdG9yIGNhbiByZW1vdmUgdGhlIE1vZGVyYXRpb24gRmxhZyBmb3IgdGhpcyBVc2VyLiBZb3UgbmVlZCB0byBzYXZlIHRoZSBSb29tIE9iamVjdCB0byBzYXZlIHRoZXNlIHNldHRpbmdzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EbyB5b3Ugd2FudCB0byByZW1vdmUgdGhlIFN1cGVyIE1vZGVyYXRpb24gRmxhZyBmb3IgdGhpcyBVc2VyPyBZb3UgbmVlZCB0byBzYXZlIHRoZSBSb29tIE9iamVjdCB0byBzYXZlIHRoZXNlIHNldHRpbmdzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzgiIG5hbWU9InN1cGVyIG1vZGVyYXRvciI+CisgICAgPHZhbHVlPlRoaXMgVXNlciBpcyBhIFN1cGVyLU1vZGVyYXRvci4gWW91IGNhbm5vdCByZW1vdmUgdGhlIE1vZGVyYXRpb24gZmxhZyBmcm9tIGEgU3VwZXItTW9kZXJhdG9yITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzkiIG5hbWU9ImNvbmZpcm0gZGVsZXRlIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZpbGUvRm9sZGVyPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDAiIG5hbWU9ImNvbmZpcm0gZGVsZXRlIj4KKyAgICA8dmFsdWU+RGVsZXRlIEZpbGUvRm9sZGVyPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDEiIG5hbWU9InNhbHV0YXRpb24iPgorICAgIDx2YWx1ZT5NcnMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0MiIgbmFtZT0ic2FsdXRhdGlvbiI+CisgICAgPHZhbHVlPkRyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDMiIG5hbWU9InByb3BlcnR5IHBhbmVsIHdoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5Qcm9wZXJ0aWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NCIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPlNob3cgbW91c2UgcG9zaXRpb24gdG8gdmlld2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDUiIG5hbWU9InB1Ymxpc2ggb3B0aW9uIj4KKyAgICA8dmFsdWU+U2hhcmUgQXVkaW8gd2l0aCBTSVAgQXBwbGV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NiIgbmFtZT0icHVibGlzaCBvcHRpb24iPgorICAgIDx2YWx1ZT5TaGFyZSBBdWRpbyB3aXRoIFNJUCBhbmQgVmlkZW8gd2l0aCBGbGFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDciIG5hbWU9ImRvY3VtZW50IHBhbmVsIj4KKyAgICA8dmFsdWU+RnVsbC1GaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ4IiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5WaWV3IFNjcmVlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDkiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlRoZSB1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MCIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+d2FudHMgdG8gc2hhcmUgaXRzIHNjcmVlbi4gRG8geW91IHdhbnQgdG8gc2VlIGl0PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTEiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNsb3NlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MiIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPlpvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUzIiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+VGhlIFNlc3Npb24gd2FzIGNsb3NlZCBieSB0aGUgc2hhcmluZyBVc2VyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTQiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5QYXVzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTUiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5OZXcgU2NyZWVuIFNoYXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU2IiBuYW1lPSJwcmVzZW50ZXIgbWluaSBpY29uIj4KKyAgICA8dmFsdWU+TWluaW1pemU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU3IiBuYW1lPSJwcmVzZW50ZXIgbWluaSBpY29uIj4KKyAgICA8dmFsdWU+TWF4aW1pemU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU4IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5WaWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTkiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlJlY29yZGluZyBUaW1lbGluZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjAiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk15IFJlY29yZGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYxIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5QdWJsaWMgUmVjb3JkaW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjIiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkluZm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYzIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TGVuZ3RoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RGF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjYiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UExBWTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjgiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk1haW4gLSBWaWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjkiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzAiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPllvdSBtYXkgcmVjb3JkIGFuZCBzaGFyZSB5b3VyIHNjcmVlbiBhdCB0aGUgc2FtZSB0aW1lLiBUbyBlbmFibGUgb3RoZXJzIHRvIHNlZSB5b3VyIHNjcmVlbiBqdXN0IGhpdCB0aGUgc3RhcnQgYnV0dG9uIG9uIHRoZSB0b3AuIFRvIG9ubHkgcmVjb3JkIHRoZSBTZXNzaW9uIGl0IGlzIHN1ZmZpY2llbnQgdG8gY2xpY2sgc3RhcnQgcmVjb3JkaW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzEiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlN0YXJ0IFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzIiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlN0b3AgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3MyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RG93bmxvYWQgdGhlIEZMVi1GaWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3NCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+Um9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzUiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlBsYXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TdG9wPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3NyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+VXNlciBoYXMgbWljcm9waG9uZSBvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U3RvcCBTaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3OSIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5BbGxvdyBVc2VyIFF1ZXN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODAiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+VHVybiB0aGlzIG9mZiB0byBwcmV2ZW50IHRoYXQgYW55IHVzZXIgaXMgZGlzdHVyYmluZyB5b3UgaW4gdGhpcyByb29tLiBFZmZlY3QgaXMgdGhhdCB0aGUgQnV0dG9uIHRvIGFzayBmb3IgTW9kZXJhdGlvbiAoIkkgaGF2ZSBhIHF1ZXN0aW9uIikgaXMgbm90IHZpc2libGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MSIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5SaWdodHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgyIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Eb3dubG9hZCBhcyBBVkk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgzIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5GTFY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg0IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5BVkk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg1IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5SYXcgU2NyZWVudmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5BdWRpbyBvbmx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+VGhlIGhhdmUgYmVlbiBlcnJvcnMgd2hpbGUgcHJvY2Vzc2luZyB0aGUgUmVjb3JkaW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODgiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlRoZSBSZWNvcmRpbmcgaXMgbm90IHlldCByZWFkeSBmb3Igd2F0Y2hpbmcuIFBsZWFzZSByZXRyeSBpbiBhIGNvdXBsZSBvZiBtaW51dGVzIGFnYWluLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODkiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkxvZzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkwIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5SZWNvcmRlciBNZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+T2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkyIiBuYW1lPSJzaXAgYXBwbGV0Ij4KKyAgICA8dmFsdWU+U0lQIEFwcGxldCBpcyBub3QgUmVhZHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkzIiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+U0lQLUFjY291bnQgU2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk0IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+U0lQIHNldHRpbmdzIGZvciBlYWNoIHVzZXIuIFlvdSBjYW4gdHVybiBvbiBvciBvZmYgU0lQIHZpYSB0aGUgQWRtaW5pc3RyYXRpb24gJmd0OyBDb25maWd1cmF0aW9uIChLZXk6IGVuYWJsZV9zaXApLiBUaGUgU0lQIGRhdGEgZm9yIGVhY2ggdXNlciBzaG91bGQgYmUgY3JlYXRlZCBhdXRvbWF0aWNhbGx5LiBZb3UgY2FuIHJlLWNyZWF0ZSB0aGUgZGF0YSBieSBjaGVja2luZyAiUmUtZ2VuZXJhdGUgU0lQIERhdGEiPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NSIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNJUC1Vc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NiIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNpcC1QYXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NyIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNpcC1BdXRoLUlkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5OCIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIExvZ2luIHRvIHRoZSBTSVAgR2F0ZXdheSBoYXMgZmFpbGVkLiBZb3Ugc2hvdWxkIGNoZWNrIHRoZSBhdXRoZW50aWZpY2F0aW9uIGRhdGEgb2YgeW91ciBTSVAtUHJvdmlkZXIgYW5kIHRoZSBTSVAtQWNjb3VudCBEYXRhIGZvciBlYWNoIFVzZXIuIEFzIEFkbWluaXN0cmF0b3IgeW91IGFyZSBzdGlsbCBhYmxlIHRvIGxvZ2luIGFuZCBjaGVjayB0aGUgQ29uZmlndXJhdGlvbi4gQXMgVXNlciBvciBNb2RlcmF0b3IgeW91IHdpbGwgYmUgYmxvY2tlZCBmcm9tIGFueSBpbnRlcmFjdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk5IiBuYW1lPSJzaXAgc3RhdHVzIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgTG9naW4gdG8gdGhlIFNJUCBHYXRld2F5IGhhcyBmYWlsZWQuIENvbnRhY3QgeW91ciBTZXJ2aWNlIFRlYW0hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwMCIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TG9nZ2luZyBpbiB0byBTSVAtR2F0ZXdheSAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAxIiBuYW1lPSJzaXAgc3RhdHVzIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Mb2dnaW5nIGluIHRvIFNJUC1HYXRld2F5IC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDIiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlNob3cgTG9nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwMyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TG9nIG1lc3NhZ2VzIGZyb20gcG9zdCByZWNvcmRlciBwcm9jZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwNCIgbmFtZT0ic2lwIGxvZ2luIj4KKyAgICA8dmFsdWU+U0lQLUFwcGxldCBNZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwNSIgbmFtZT0ic2lwIGxvZ2luIj4KKyAgICA8dmFsdWU+VGhlIFNJUC1BcHBsZXQgaXMgbm90IHJlYWR5LiBBY2NlcHQgdGhlIEFwcGxldCBwbGVhc2UgYW5kIGNsaWNrIG9rITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDYiIG5hbWU9Im1vZGVyYXRvciBwb3AgdXAiPgorICAgIDx2YWx1ZT5HZXQgTW9kZXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDciIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5TYXZlIEFwcG9pbnRtZW50IENoYW5nZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA4IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhlIGFwcG9pbnRlbWVudCBoYXMgYmVlbiBjaGFuZ2VkLiBEbyB5b3Ugd2FudCB0byBzYXZlIHRob3NlIGNoYW5nZXM/ICZsdDtici8mZ3Q7Jmx0O2JyLyZndDtBbGwgYXR0ZW5kZWVzIG9mIHRoZSBhcHBvaW50bWVudCB3aWxsIHJlY2VpdmUgYSBFTWFpbCB3aXRoIHRoZSB1cGRhdGVkIGRhdGUgYW5kIHRpbWUgKGRlcGVuZGluZyBvbiB0aGUgbm90aWZpY2F0aW9uIHR5cGUgb2YgdGhpcyBhcHBvaW50bWVudCkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwOSIgbmFtZT0iZmx2IHJlY29yZGVyIGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UbyBhY2Nlc3Mgb3RoZXIgcmVjb3JkaW5ncyB5b3UgaGF2ZSB0byBsb2dpbiB0aGUgJEFQUF9OQU1FIEFwcGxpY2F0aW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTAiIG5hbWU9ImludGVydmlldyB2aWRlbyBwb2QiPgorICAgIDx2YWx1ZT5DaG9vc2UgdGhlIFVzZXIgZm9yIHRoaXMgVmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTExIiBuYW1lPSJpbnRlcnZpZXcgdmlkZW8gY2hvb3NlIHVzZXIiPgorICAgIDx2YWx1ZT5BdmFpbGFibGUgVXNlcnMgZm9yIHRoaXMgUG9kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMiIgbmFtZT0iaW50ZXJ2aWV3IGluZm8iPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGEgTW9kZXJhdG9yIGluIHRoaXMgSW50ZXJ2aWV3LiBZb3UgY2FuIGRlY2lkZSB3aG8gaXMgc3BlYWtpbmcgaW4gdGhpcyBpbnRlcnZpZXcgYW5kIHlvdSBjYW4gc3RhcnQgLyBzdG9wIHRoZSByZWNvcmRpbmcgb2YgdGhlIFNlc3Npb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMyIgbmFtZT0iaW50ZXJ2aWV3IGJ1dHRvbiByZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TdGFydCBSZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE0IiBuYW1lPSJpbnRlcnZpZXcgYnV0dG9uIHJlY29yZGluZyI+CisgICAgPHZhbHVlPlN0b3AgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxNSIgbmFtZT0iaW50ZXJ2aWV3IGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgcmVjb3JkaW5nIG9mIHRoZSBJbnRlcnZpZXcgaXMgYWxyZWFkeSBzdGFydGVkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTYiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIHJlY29yZGluZyBpcyBhbHJlYWR5IHN0b3BwZWQgb3Igbm90IGJlZW4gc3RhcnRlZCB5ZXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxNyIgbmFtZT0iaW50ZXJ2aWV3IHJlY29yZGluZyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIHJlY29yZGluZyBmb3IgdGhpcyBpbnRlcnZpZXcgaXMgYWxyZWFkeSBzdGFydGVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTgiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxOSIgbmFtZT0iaW50ZXJ2aWV3IGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgcG9zdC1wcm9jZXNzaW5nIG9mIGFuIGludGVydmlldyB0YWtlcyA1IG1pbnV0ZXMgcGVyIDEgbWludXRlIGludGVydmlldy4gVGhlIGN1cnJlbnQgcHJvZ3Jlc3Mgb2YgdGhlIGludGVydmlldyBwb3N0LXByb2Nlc3NpbmcgdHJhbnNjb2RpbmcgaXM6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyMCIgbmFtZT0ic2lwIGNyZWF0aW9uIj4KKyAgICA8dmFsdWU+WW91IGhhdmUgdG8gZW50ZXIgeW91ciBwYXNzd29yZCBhZ2FpbiB0byBhdXRvIGNyZWF0ZSB0aGUgU0lQIERhdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIxIiBuYW1lPSJzaXAgY3JlYXRpb24iPgorICAgIDx2YWx1ZT5SZS1nZW5lcmF0ZSBTSVAgRGF0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjIiIG5hbWU9ImZpbGVleHBsb3JlciI+CisgICAgPHZhbHVlPllvdSBjYW5ub3QgbW92ZSB0aGlzIGZpbGUgb3IgZm9sZGVyIGludG8gaXRzIG93biBzdWIgZm9sZGVyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjMiIG5hbWU9ImZpbGUgZXhwbG9yZXIgIj4KKyAgICA8dmFsdWU+SG9tZSBkcml2ZSBzaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlB1YmxpYyBkcml2ZSBzaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNSIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPkxpY2Vuc2UgU2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI2IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+WW91IGNhbiBlaXRoZXIgYmluZCB0aGUgdXNlciB0byBhIGV4cGlyZSBEYXRlIG9yIHRvIGEgbWF4aW11bSBudW1iZXIgb2YgbWludXRlcyB3aGVuIHlvdSBlbmFibGUgbGljZW5zaW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjciIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5DaGVjayBsaWNlbnNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyOCIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPkZsYXRyYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyOSIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPkV4cGlyZSBkYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMCIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPlNlY29uZHMgbGVmdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzEiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5Ub3RhbCB0aW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91ciBMaWNlbnNlIGhhcyBleHBpcmVkLiBZb3UgbmVlZCB0byBidXkgbmV3IG1pbnV0ZXMgKFBheS1wZXItbWludXRlKSBvciBhIHZvbHVtZSBmbGF0cmF0ZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMzIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5DbGljayBhbmQgYnV5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzNCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+VGltZSBMZWZ0IG9uIHlvdXIgYWNjb3VudDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM1IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Vc2VyIExpY2Vuc2UgSW5mbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzYiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkluZm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM3IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5DbG9zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzgiIG5hbWU9ImxpY2Vuc2UtaW5mbyI+CisgICAgPHZhbHVlPllvdXIgbGljZW5zZSBoYXMgZXhwaXJlZC4gWW91IG5lZWQgZWl0aGVyIHRvIGJ1eSBhIG1pbnV0ZSBwYWNrYWdlIChQYXktcGVyLW1pbnV0ZSkgb3IgYSB2b2x1bWUgZmxhdHJhdGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzOSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+TGljZW5zZSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDAiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdSBjYW4gZWl0aGVyIGJ1eSBtaW51dGVzIHRvIG1ha2UgV2ViLUNvbmZlcmVuY2luZyAoUGF5LXBlci1taW51dGUpLiZsdDtici8mZ3Q7Jmx0O2JyLyZndDsgT3IgeW91IGJ1eSBhIHZvbHVtZSBmbGF0cmF0ZSBhYm91dCAzLTEyIG1vbnRocy4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7U2VuZGluZyBpbnZpdGF0aW9ucyAoZGlyZWN0IGxpbmtzIGludG8gQ29uZmVyZW5jZSBSb29tcykgb3IgY3JlYXRpbmcgY29uZmVyZW5jZSBSb29tcyB2aWEgdGhlIENhbGVuZGFyIHdpdGggZXh0ZXJuYWwgVXNlcnMgaXMgb25seSBhbGxvd2VkIHdpdGggYSB2b2x1bWUgZmxhdHJhdGUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDYwIE1pbnV0ZXMgOSw5OSBFVVJPICgxNiBDZW50IHBlciBNaW51dGUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDUgaG91cnMgMTksOTkgRVVSTyAoNiBDZW50IHBlciBtaW51dGUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDMgbW9udGggZm9yIDI5LDk5IEVVUk8gKDksOTkgRXVybyBwZXIgTW9udGgpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDYgbW9udGggZm9yIDM5LDk5IEVVUk8gKDYsNjYgRXVybyBwZXIgbW9udGgpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+UGF5LXBlci1taW51dGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ2IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Wb2x1bWUgZmxhdHJhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ3IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3UgaGF2ZSB1bmxpbWl0ZWQgTGljZW5zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDgiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdXIgbGljZW5zZSB3aWxsIGV4cGlyZSBhdDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ5IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3UgYm91Z2h0IFBheS1wZXItbWludXRlLiBZb3Ugc3RpbGwgaGF2ZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUwIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5CdXkgbmV3IGNyZWRpdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUxIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5XYW50IHlvdXIgb3duIFNlcnZlcj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUyIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3Ugd291bGQgbGlrZSB0byBoYXZlICRBUFBfTkFNRSBpbnN0YWxsZWQgb24geW91ciBTZXJ2ZXIgb3IgaW50ZWdyYXRlZCBpbnRvIHlvdXIgTW9vZGxlLCBTdWdhckNSTSwgV2Vic2l0ZSBvciBJbnRyYW5ldD8gUHJpemluZ3Mgc3RhcnQgYXQgNTAwIEV1cm8gcGVyIEluc3RhbGxhdGlvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUzIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5PciBzZW5kIHVzIGEgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTQiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkFuc3dlciB0bzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU1IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5NZXNzYWdlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTYiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlNlbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU3IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5DbGljayBoZXJlIHRvIGdldCBjb250YWN0IEluZm8gYW5kIFByaXppbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1OCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q3JlZGl0IENhcmQgRGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTkiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkZpcnN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjAiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkxhc3RuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2MSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q3JlZGl0IENhcmQgVHlwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjIiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlZJU0EgQ2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjMiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPk1hc3RlckNhcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY0IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5EaXNjb3ZlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjUiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkFtZXJpY2FuIEV4cHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY2IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DcmVkaXQgQ2FyZCBOdW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY3IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5FeHBpcmF0aW9uIERhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY4IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DYXJkIFZlcmlmaWNhdGlvbiBOdW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY5IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5CaWxsaW5nIEFkZHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTcwIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5BZGRyZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q2l0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzMiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNvdW50cnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc0IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdGF0ZSAoT25seSBVUyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc1IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5aSVA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc2IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5BbW91bnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc3IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdWJtaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc4IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdGVwIDE6ICRBUFBfTkFNRSAtIFBheW1lbnQgRm9ybTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzkiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkVNYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q2xpY2sgIkNoZWNrIG91dCB3aXRoIFBheXBhbCIgdG8gcGF5LiZsdDtici8mZ3Q7IFBheXBhbCBhY2NlcHRzIFZJU0EsIE1hc3RlckNhcmQsIERpc2NvdmVyIG9yIEFtZXJpY2FuIEV4cHJlc3MuICZsdDtici8mZ3Q7SXQgZG9lcyBub3QgcmVxdWlyZSB0byBzaWduIHVwIHdpdGggUGF5cGFsLiAmbHQ7YnIvJmd0O0NpdGl6ZW5zIGZyb20gR2VybWFueSBjYW4gYWxzbyBwYXkgd2l0aCBkaXJlY3QgZGViaXQgKFBlciBMYXN0c2NocmlmdC1FaW56dWcpLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODEiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlRoYW5rIHlvdSBmb3IgYnV5aW5nICRBUFBfTkFNRS4gJmx0O2JyLyZndDsgJmx0O2JyLyZndDsgQXMgc29vbiBhcyB3ZSByZWNlaXZlZCB0aGUgcGF5bWVudCB5b3VyIGFjY291bnQgd2lsbCBiZSB1cGRhdGVkLiZsdDtici8mZ3Q7IFlvdSB3aWxsIHJlY2VpdmUgYW4gRU1haWwgd2l0aCB5b3VyIGludm9pY2UgYXMgUERGLiZsdDtici8mZ3Q7WW91IGNhbiBhbHNvIGNoZWNrIGN1cnJlbnQgYW5kIHBhc3QgdHJhbnNhY3Rpb25zIGluIHlvdXIgcHJvZmlsZSBzZXR0aW5ncy4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7Jmx0O2JyLyZndDtZb3UgY2FuIGNsb3NlIHRoaXMgYnJvd3NlciB3aW5kb3cvdGFiIG5vdyBhbmQgcmV0dXJuIHRvICRBUFBfTkFNRS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgyIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdWJtaXQgYW5kIEJ1eSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgzIiBuYW1lPSJwYXltZW50LWZyb20iPgorICAgIDx2YWx1ZT5DbGljayBhbmQgQnV5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODQiIG5hbWU9InBheW1lbnQtZnJvbSI+CisgICAgPHZhbHVlPlN0ZXAgMzogJEFQUF9OQU1FIFBheW1lbnQgLSBDaGVjayBvcmRlciBhbmQgYnV5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODUiIG5hbWU9InBheW1lbnQtZnJvbSI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg2IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5QYXltZW50IHJlY2VpdmVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODciIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPkhpLDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODgiIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPldlIGhhdmUgcmVjZWl2ZWQgeW91ciBwYXltZW50LiBZb3VyIHVzZXIgcHJvZmlsZSBpcyB1cGRhdGVkIG5vdy4gU2VlIGF0dGFjaGVkIHlvdXIgSW52b2ljZS4gVGhlIEludm9pY2UgYW5kIGFsbCBwYXN0IEludm9pY2UgY2FuIGFsc28gYmUgZG93bmxvYWRlZCBpbiB5b3VyIHVzZXIgcHJvZmlsZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg5IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5UaGFuayB5b3UgZm9yIHVzaW5nICRBUFBfTkFNRSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkwIiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5QYXltZW50IFJlY2VpdmVkICRBUFBfTkFNRSAtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MSIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPlBheW1lbnQgYW5kIFRyYW5zYWN0aW9uIFN0YXR1czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTIiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5UcmFuc2NhdGlvbiBIYXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MyIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPk1pbnV0ZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk0IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+TW9udGhzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NSIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPkVVUjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTYiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TdGF0dXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk3IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+SW52b2ljZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTgiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk5IiBuYW1lPSJlcnJvci1saWNlbnNlLWZsYXQiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0byBidXkgYSB2b2x1bWUgZmxhdHJhdGUgdG8gYmUgYWJsZSB0byBzZW5kIGludml0YXRpb25zIG9yIGNyZWF0ZSBtZWV0aW5ncyB2aWEgdGhlIGNhbGVuZGFyLiBXaXRoIFBheS1wZXItbWludXRlIGl0IGlzIG9ubHkgcG9zc2libGUgZm9yIHlvdSB0byBhY2Nlc3MgJEFQUF9OQU1FLiBZb3UgY2Fubm90IGFsbG93IDN0aCBQYXJ0aWVzIHRvIGFjY2VzcyBhIE1lZXRpbmcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDAiIG5hbWU9ImVycm9yIHVzZXIiPgorICAgIDx2YWx1ZT5UaGlzIEVtYWlsIGlzIGFscmVhZHkgdXNlZCBieSBhbm90aGVyIFVzZXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDEiIG5hbWU9InJvb20tYWRtaW4iPgorICAgIDx2YWx1ZT5TSVAtU2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwMiIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlRoZSBDb25mZXJlbmNlIE51bWJlciBhbmQgUElOIGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB2aWEgdGhlIE9wZW5YRyBSUEMtR2F0ZXdheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAzIiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+U0lQIE51bWJlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA0IiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+UElOPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDUiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5DbGVhciBvYmplY3RzIG9uIGN1cnJlbnQgc2xpZGUgb25seSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNiIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPk9ubHkgdGhlIFVSTCBlbnRlcmVkIGluIHRoZSBTdGF0dXMgYmFyIGlzIHNlbmQgdG8gcGFydGljaXBhbnRzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TWFrZSBUZWFtLVJvb21zIFtCcmVha291dCBzZXNzaW9uXTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2hvb3NlIHVzZXJzIGZvciBhIG5ldyBUZWFtLVJvb20hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIGNob29zZSB1c2VycyBoZXJlIGFuZCBjcmVhdGUgYSBuZXcgQ29uZmVyZW5jZSBSb29tICgiVGVhbSBSb29tIikgZm9yIHRoZW0uIFRoZSBjaG9zZW4gdXNlcnMgd2lsbCBhdXRvbWF0aWNhbGx5IHN3aXRjaCB0byB0aGUgbmV3IFRlYW0tUm9vbSBvciBnZXQgYSBub3RpZmljYXRpb24uIFRlYW0tUm9vbSBNb2RlcmF0b3JzIHdpbGwgZ2V0IGFkZGl0aW9uYWxseSBhIGxpc3Qgb2YgY3VycmVudCByb29tcyBzbyB0aGF0IHRoZXkgY2FuIHN3aXRjaCB0byBlYWNoIHJvb20gaWYgdGhlcmUgYXJlIGlzIG5lZWQgZm9yIGEgTW9kZXJhdG9yLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VXNlcm5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkxvZ2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJzIGZvciB0aGUgbmV3IFRlYW0tUm9vbTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNyZWF0ZSBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2hvb3NlIGF0IGxlYXN0IG9uZSB1c2VyIGZvciB0aGUgVGVhbS1Sb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+QWRkIHVzZXIgdG8gdGVhbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+UmVtb3ZlIHVzZXIgZnJvbSBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXIgaXMgVGVhbS1Sb29tIE1vZGVyYXRvciAoSGUgaXMgYWJsZSB0byBtYW5hZ2UgVGVhbS1Sb29tcyBhbmQgdXNlcnMgb2YgdGhlIFRlYW0tUm9vbSBjYW4gYXNrIGhpbSB0byBjb21lIGluc2lkZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlJvb210eXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5JZiB5b3UgY2hlY2sgIkZvcmNlIHVzZXIgdG8gc3dpdGNoIHRvIG5ldyBUZWFtLVJvb20iIGFsbCBjaG9zZW4gdXNlcnMgd2lsbCBhdXRvbWF0aWNhbGx5IHN3aXRjaCB0byB0aGUgbmV3bHkgY3JlYXRlZCBUZWFtLVJvb20uIE90aGVyd2lzZSB0aGV5IGdldCBhIG5vdGlmaWNhdGlvbiB3aXRoIGEgYnV0dG9uIHRoYXQgdGhleSAmbHQ7aSZndDtjYW4mbHQ7L2kmZ3Q7IHN3aXRjaCB0byB0aGUgbmV3IHJvb20uIFRlYW0tTW9kZXJhdG9ycyBhbHdheXMgaGF2ZSB0aGUgZnJlZSBjaG9pY2UgdG8gbWFuYWdlIHRoZSBUZWFtLVJvb21zIGFuZCBzd2l0Y2ggYmV0d2VlbiB0aGVtLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TWFuYWdlIFRlYW0tUm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPllvdSBjYW4gc3dpdGNoIGhlcmUgYmV0d2VlbiBhbGwgVGVhbS1Sb29tcyB0aGF0IHlvdSBhcmUgYXNzaWduZWQgYXMgVGVhbS1Sb29tIE1vZGVyYXRvci4gVXNlcnMgaW5zaWRlIHRoZSBUZWFtLVJvb20gY2FuIHNlbmQgeW91IGEgbWVzc2FnZSwgZm9yIGV4YW1wbGUgdG8gYXNrIHlvdSB0byBjb21lIHRvIHRoZWlyIHJvb20gYW5kIGhlbHAgdGhlbS4gWW91IGNhbiBhbHNvIHRlcm1pbmF0ZSB0aGUgVGVhbS1Sb29tIGFuZCBhbGwgVXNlcnMgd2lsbCBiZSBsb2dnZWQgb3V0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Rm9yY2UgdXNlciB0byBzd2l0Y2ggdG8gbmV3IFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q3JlYXRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJzIGF2YWlsYWJsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+QWRkIGEgdXNlciB3aXRoIHRoZSBwbHVzIGZyb20gdGhlIGxlZnQgb3IgcmVtb3ZlIGl0IHdpdGggdGhlIGNyb3NzIGZyb20gdGhlIHJpZ2h0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MSkgVGVhbS1Sb29tIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4yKSBBZGQgdXNlcnMgdG8gdGhlIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVhbS1Sb29tIE5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2hhbmdlIHRvIHRoZSBSb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Td2l0Y2ggdG8gdGhpcyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlcm1pbmF0ZSBUZWFtLVJvb20gYW5kIGxvZ291dCBhbGwgVXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk5ldyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGEgbmV3IFRlYW0tUm9vbSBhdmFpbGFibGUgZm9yIHlvdS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlN3aXRjaCB0byBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW0tUm9vbSBBY3Rpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIHJlLW9wZW4gdGhpcyB3aW5kb3cgdmlhIHRoZSBtYWluIG1lbnUgaW4gdGhlICJBY3Rpb25zIiBzZWN0aW9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U2VuZCBtZXNzYWdlIHRvIFRlYW0tUm9vbSBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk5ldyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGEgbmV3IFRlYW0tUm9vbSBhdmFpbGFibGUuIFlvdSBjYW4gc3dpdGNoIHRvIHRoYXQgUm9vbS4gVGVhbS1Sb29tcyBhcmUgbGlrZSAiV29ya2dyb3VwcyIgd2l0aCBhZGRpdGlvbmFsbHkgcG9zc2liaWxpdGllcyB0byBhc2sgdGhlIFRlYW0tUm9vbSBNb2RlcmF0b3IgZm9yIGhlbHAuIFlvdXIgVGVhbS1Sb29tcyBhcmUgYWxzbyBhdmFpbGFibGUgaW4gdGhlICJNeSBNZWV0aW5ncyIgc2VjdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlN3aXRjaCB0byBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNyZWF0ZWQgYnk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb20gbmFtZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0OSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoaXMgV2luZG93IHdpbGwgc3RheSBvcGVuIGV2ZW4gaWYgeW91IGxlYXZlIHRoZSByb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VXNlcnMgZm9yIHRoaXMgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4zKSBPdGhlciBUZWFtLVJvb21zIHRoYXQgeW91IGNvdWxkIHN3aXRjaCB0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U2VuZCBhIG1lc3NhZ2UgdG8gdGhlIFRlYW0tUm9vbSBNb2RlcmF0b3JzLiBGb3IgZXhhbXBsZSBpZiB5b3UgbmVlZCBoZWxwIGluIE1vZGVyYXRpbmcgdGhlIFJvb20gb3IgaWYgeW91IGhhdmUgYSBxdWVzdGlvbiBhYm91dCB0aGUgdG9waWMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5TZW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4yKSBVc2VycyB0aGF0IGFyZSBpbnZpdGVkIHRvIHRoaXMgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5JcyBUZWFtLVJvb20gTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVzZSBhcmUgYWxsIHVzZXJzIHRoYXQgdGhlIG1vZGVyYXRvciBoYXMgaW52aXRlZCB0byB0aGlzIFRlYW0tUm9vbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1NyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIFRlYW0tTW9kZXJhdG9yIGxvZ2dlZCBpbiBhdCB0aGUgbW9tZW50ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGEgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+UGxlYXNlIGhlbHAgdXMsIHdlIGhhdmUgYSBwcm9ibGVtIGluIG91ciBUZWFtLVJvb20hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5BIHVzZXIgZnJvbSBhIFRlYW0tUm9vbSByZXF1ZXN0cyB5b3VyIGhlbHAuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb20gcmVxdWVzdCBmb3IgaGVscDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TWVzc2FnZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2MyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkZyb206PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGN1cnJlbnRseSBub3QgaW4gYW55IFRlYW0tUm9vbS4gQnV0IHlvdSBjYW4gc3dpdGNoIGhlcmUgdG8gYWxsIFRlYW0tUm9vbXMgdGhhdCB5b3UgaGF2ZSBhY2Nlc3MgdG8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjUiIG5hbWU9ImJhY2t1cENvbnRlbnQiPgorICAgIDx2YWx1ZT5CYWNrdXAgdGhlIFN5c3RlbS4gVGhlIEJhY2t1cCBpbmNsdWRlcyBhbGwgVXNlciBnZW5lcmF0ZWQgZGF0YS4gVGhlIGNvbmZpZ3VyYXRpb24gaXMgbm90IGluY2x1ZGVkIGFzIHdlbGwgYXMgdGhlIGxhbmd1YWdlIGxhYmVscy4gQmVjYXVzZSB0aG9zZSB2YWx1ZXMgYXJlIGltcG9ydGVkIHdpdGggdGhlIFN5c3RlbSBJbnN0YWxsZXIuIFRvIHVwZGF0ZSB5b3VyIFN5c3RlbSwgZXhwb3J0IHlvdXIgb2xkIHN5c3RlbSAoMSkgcmUtaW5zdGFsbCBpbnRvIGEgbmV3IGRhdGFiYXNlIHRoZSBuZXcgcGFja2FnZSAoMikgYW5kIGltcG9ydCB0aGUgQmFja3VwIGZpbGUgYWdhaW4gKDMpLiBUaGUgQmFja3VwIHNob3VsZCBiZSBpbXBvcnRlZCBiZWZvcmUgZ2VuZXJhdGluZyBkYXRhIGluIHRoZSBuZXdseSBpbnN0YWxsZWQgc3lzdGVtLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY2IiBuYW1lPSJiYWNrdXBDb250ZW50Ij4KKyAgICA8dmFsdWU+U3lzdGVtIEJhY2t1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY3IiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT5BbGxvdyB1c2VyIHRvIHNoYXJlIFNjcmVlbi9SZWNvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2OCIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+RGVueSB1c2VyIHRvIHNoYXJlIFNjcmVlbi9SZWNvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2OSIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+VXNlciBpcyBNb2RlcmF0b3IsIGhlIGNhbiBkbyBhbnl0aGluZyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3MCIgbmFtZT0iYXBwbHkgZm9yIHNjcmVlbi9yZWNvcmRpbmciPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIHNoYXJlL3JlY29yZCBzY3JlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzEiIG5hbWU9Im1vZGVyYXRpb24gbWluaSBpY29ucyI+CisgICAgPHZhbHVlPllvdSBhcmUgYWxsb3dlZCB0byBzaGFyZS9yZWNvcmQgc2NyZWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzIiIG5hbWU9Im1vZGVyYXRpb24gbWluaSBpY29ucyI+CisgICAgPHZhbHVlPkFwcGx5IGZvciByaWdodCB0byBzaGFyZS9yZWNvcmQgc2NyZWVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDczIiBuYW1lPSJtb2RlcmF0aW9uIG1pbmkgaWNvbnMgY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPkFsbG93L0RlbnkgcmlnaHQgdG8gc2hhcmUvcmVjb3JkIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3NCIgbmFtZT0ic291bmQgaWNvbiI+CisgICAgPHZhbHVlPlR1cm4gc291bmQgb2ZmPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzUiIG5hbWU9InNvdW5kIGljb24iPgorICAgIDx2YWx1ZT5UdXJuIHNvdW5kIG9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzYiIG5hbWU9InJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5BdWRpbyBvbmx5IHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3NyIgbmFtZT0icm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlR1cm4gdGhpcyBGbGFnIG9uIGFuZCB0aGUgdXNlcnMgd2lsbCBoYXZlIG9ubHkgdGhlIEF1ZGlvLU9wdGlvbiBhbmQgbm8gVmlkZW8gaW4gYSBjb25mZXJlbmNlIHJvb20uIFRoaXMgY2FuIGJ5IGdvb2QgdG8gc2F2ZSBiYW5kd2lkdGguPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzgiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFsbG93IFJlbW90ZSBDb250cm9sIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzkiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkRlbnkgUmVtb3RlIENvbnRyb2wgKER1cmluZyBTY3JlZW4gU2hhcmluZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MCIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QXBwbHkgZm9yIHJpZ2h0IHRvIFJlbW90ZSBDb250cm9sIFNjcmVlbiAoRHVyaW5nIFNjcmVlbiBTaGFyaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgxIiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGFsbG93ZWQgdG8gUmVtb3RlIENvbnRyb2wgU2NyZWVuIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODIiIG5hbWU9ImFwcGx5IGZvciByZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gcmVtb3RlIGNvbnRyb2wgc2NyZWVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgzIiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Vc2VyIGlzIE1vZGVyYXRvciwgaGUgY2FuIGRvIGFueXRoaW5nISBbUmVtb3RlIERlc2t0b3AgQ29udHJvbF08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4NCIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QWxsb3cvRGVueSByaWdodCB0byBSZW1vdGUgQ29udHJvbCBTY3JlZW4gKER1cmluZyBTY3JlZW4gU2hhcmluZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4NSIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+MSkgWW91ciBQQyB0byByZW1vdGUgUEM6IFRvIGNvcHkgYW5kIHBhc3RlIHRleHQgZnJvbSB5b3VyIGNsaXBib2FyZCBpbnRvIHRoZSByZW1vdGUgY29udHJvbGxlZCBzY3JlZW4sIGNsaWNrIG9uIHRoZSBzY3JlZW4sIHRoZW4gcmlnaHQgY2xpY2sgaW4gdGhlIHRleHQgZmllbGQgYW5kIGNob29zZSAiSW5zZXJ0IiBmcm9tIHRoZSBjb250ZXh0IChyaWdodCBjbGljaykgbWVudS4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7MikgRnJvbSByZW1vdGUgUEMgdG8geW91ciBQQzogVG8gY29weSB0ZXh0IGZyb20gdGhlIHJlbW90ZSBQQyB0byB5b3VyIFBDJ3MgY2xpcGJvYXJkLCBoaWdobGlnaHQgdGhlIHRleHQgd2l0aCB0aGUgbW91c2Ugb24gdGhlIHJlbW90ZSBzY3JlZW4sIHRoZW4gcmlnaHQtY2xpY2sgb24gdGhlIHJlbW90ZSBzY3JlZW4gYW5kIGNob29zZSAmbHQ7aSZndDtDb3B5IGhpZ2hsaWdodGVkIHRleHQmbHQ7L2kmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODYiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNvcHkgYW5kIFBhc3RlIHRleHQgZnJvbSB5b3VyIFBDIHRvIHJlbW90ZSBQQyBhbmQgdmljZS12ZXJzYS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4NyIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+Q29weSBoaWdobGlnaHRlZCB0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODgiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkhvdyB0byBjb3B5IG4gcGFzdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4OSIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+UXVhbGl0eSBvZiB0aGUgU2NyZWVuU2hhcmU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTAiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPlZlcnkgaGlnaCBRdWFsaXR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTEiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPkhpZ2ggUXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkyIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5NZWRpdW0gUXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkzIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5Mb3cgUXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk0IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPmVuX1VTPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTUiIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+ZGVfREU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NiIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5LZXlib2FyZDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NyIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5DbG9zZSBXZWJpbmFyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk4IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPlRoZSBXZWJpbmFyIGlzIGFscmVhZHkgY2xvc2VkLCB5b3Ugd2lsbCBiZSByZWRpcmVjdGVkIHRvIHNvbWUgaW50ZXJlc3Rpbmcgb2ZmZXJpbmdzIGluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTkiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+Q2xvc2UgUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAwIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPkV4aXQgVVJMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDEiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+Um9vbSB0ZXJtaW5hdGlvbiBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAyIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPklmIHRoZSByb29tIGlzIGNsb3NlZCB1c2VycyB3aWxsIGJlIHJlZGlyZWN0ZWQgdG8gdGhlIGV4aXQgVVJMLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAzIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkxkYXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA1IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNiIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5Db25maWcgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA3IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkxkYXAgQ29uZmlnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDgiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA5IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkVuYWJsZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JbnNlcnRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTExIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkluc2VydGVkIGJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTIiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+VXBkYXRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEzIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPlVwZGF0ZWQgYnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5UaGUgY29uZmlnIGZpbGVzIGFyZSBpbiB0aGUgZm9sZGVyIHdlYmFwcHMvb3Blbm1lZXRpbmdzL2NvbmYuIFlvdSBuZWVkIHRvIG1hbnVhbGx5IHVwbG9hZCB0aGUgZmlsZXMgdG8gdGhpcyBmb2xkZXIuIENoYW5nZXMgdG8gdGhlIGNvbmZpZyBmaWxlIGFyZSBpbW1lZGlhdGVseSBvbmxpbmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTUiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+Q29uZmlnIGZpbGUgbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE2IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPklmIHlvdSBlbmFibGUgIkFkZCBEb21haW4gdG8gdXNlcm5hbWUiIHRoZSB2YWx1ZSBvZiB0aGUgZmllbGQgImRvbWFpbiIgaXMgYWRkZWQgdG8gZWFjaCBsb2dpbiB0aGF0IHRoZSB1c2VyIGVudGVycyBpbiB0aGUgbG9naW4gYm94LiBUaGlzIGlzIHVzZWZ1bCBpZiB0aGUgTG9naW4gaW4gdGhlIExkYXAgaXMgc3RvcmVkIGluY2x1ZGluZyB0aGUgZG9tYWluIG5hbWUuIEV4YW1wbGU6IFVzZXIgZW50ZXJzICJoYW5zIiBkb21haW4gaXMgc3BlY2lmaWVkIGFzICJsb2NhbGhvc3QuY29tIiwgbG9naW4gdGhhdCBpcyB2ZXJpZmllZCBhZ2FpbnN0IExkYXAgaXM6IGhhbnNAbG9jYWxob3N0LmNvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE3IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkFkZCBEb21haW4gdG8gdXNlcm5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExOCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5Eb21haW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExOSIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5JbnNlcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMCIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5Db3B5IGhpZ2hsaWdodGVkIHRleHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMSIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5SZW1vdGUgQ2xpcGJvYXJkIFRleHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMiIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5TaG93IHJlbW90ZSBDbGlwYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMyIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+RG8gbm90IHNob3cgYWdhaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNCIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+Q29weSB0ZXh0IGhlcmUgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjUiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPllvdSBuZWVkIHRoZSByaWdodCB0byByZW1vdGUgY29udHJvbCAob3IgdGhlIG1vZGVyYXRpb24pIHRvIGNvcHkgYW5kIHBhc3RlIHRleHQgdG8gb3IgZnJvbSB0aGUgcmVtb3RlIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNiIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+RWRpdCBkZWZhdWx0IHNldHRpbmdzIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI3IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5EbyBub3Qgc2hvdyBpbmZvIGJveCBpbiBSZW1vdGUgQ29udHJvbCBhYm91dCBDb3B5IGFuZCBQYXN0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI4IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPlNhdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyOSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5SZW1vdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMSIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkludml0ZSB1c2VyIHRvIGNvbmZlcmVuY2Ugcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMyIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+Q2hvb3NlIGEgY29uZmVyZW5jZSByb29tLiBUaGUgaW52aXRlZCB1c2VyIHdpbGwgZ2V0IGEgbWVzc2FnZSB3aXRoIHlvdXIgbmFtZSBhbmQgYSBsaW5rIHRvIHRoZSByb29tLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMzIiBuYW1lPSJjaGF0IHVzZXIiPgorICAgIDx2YWx1ZT5Db25uZWN0ZWQgc2luY2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzQiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5FbnRlciByb29tIGFmdGVyIHNlbmRpbmcgaW52aXRhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM1IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+SW52aXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzYiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5NZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzciIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGludml0ZSB5b3UgdG8gdGhlIGNvbmZlcmVuY2Ugcm9vbTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzOCIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkludml0ZSBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzkiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5TZW5kIEludml0YXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0MCIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPmRpZCAmbHQ7YiZndDtub3QmbHQ7L2ImZ3Q7IGFjY2VwdCB5b3VyIGludml0YXRpb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDEiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5BY2NlcHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0MiIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkRlbnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0MyIgbmFtZT0idXNlciBwcm9maWxlIj4KKyAgICA8dmFsdWU+VGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0NCIgbmFtZT0iYXBwb2ludG1lbnQgbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+RXZlbnQgRGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ1IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDYiIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPkRlc2NyaXB0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDciIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPkNyZWF0ZWQgYnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0OCIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlRpbWVab25lIE1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0OSIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPkNoZWNrICJUaW1lWm9uZSBNZXNzYWdlIiB0byBnaXZlIHVzZXJzIGEgbWVzc2FnZSBuZXh0IHRpbWUgdGhleSBsb2dpbiB0byB1cGRhdGUgdGhlaXIgcHJvZmlsZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MCIgbmFtZT0idGltZSB6b25lIHVwZGF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+UGxlYXNlIGNoZWNrIHRoZSB0aW1lIHpvbmUgaW4geW91ciB1c2VyIHByb2ZpbGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTEiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPk5ldyAkQVBQX05BTUUgY29uZmVyZW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MiIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGV0YWlsczombHQ7YnIvJmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUzIiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TdGFydDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NCIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RW5kOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU1IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DaGFuZ2VkICRBUFBfTkFNRSBjb25mZXJlbmNlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU2IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Pcmdhbml6ZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTciIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkNhbmNlbGVkICRBUFBfTkFNRSBjb25mZXJlbmNlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU4IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgY29uZmVyZW5jZSBSZW1pbmRlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1OSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkNvbW11bml0eSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYwIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2hvdyBjb250YWN0IGRhdGEgdG8gZXZlcnlib2R5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjEiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5BZGQgZmllbGRzIG9mIGludGVyZXN0IHRoYXQgeW91IG9mZmVyIG9yIHRoYXQgeW91IGFyZSBzZWFyY2hpbmcgdG8gZmluZCBpbnRlcmVzdGluZyBwYXJ0bmVycyBmb3IgYSBjb25mZXJlbmNlLiBDb21tYSBzZXBhcmF0ZSB0aGUgdGVybXMgKGZvciBleGFtcGxlOiBNZWRpY2FsIFNlcnZpY2UsIEhlYWx0aCBhc3N1cmFuY2UsIC4uLik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MiIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk15IG9mZmVyaW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYzIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+TXkgaW50ZXJlc3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjQiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjUiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5UaW1lem9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY2IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+RmllbGRzIG9mIGludGVyZXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjciIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Db250YWN0IGluZm9ybWF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjgiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TaG93IGNvbnRhY3QgZGF0YSB0byBjb250YWN0cyBvbmx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjkiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TaG93IGNvbnRhY3QgZGF0YSB0byBub2JvZHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk15IFByb2ZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkVkaXQgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MiIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlNlYXJjaCB1c2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTczIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+V2F0Y2ggeW91ciBwcm9maWxlIGxpa2Ugb3RoZXIgc2VlIHlvdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc0IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+RWRpdCB5b3VyIHNldHRpbmdzLCBhZGQgeW91ciBpbnRlcmVzdHMgdG8gYmUgZm91bmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlNlYXJjaCBmb3Igb3RoZXIgdXNlcnMgYW5kIGV4dGVuZCB5b3VyIG5ldHdvcms8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NiIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5TZWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NyIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5Vc2VyIG9mZmVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc4IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlVzZXIgbG9va3MgZm9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzkiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+RnJlZXRleHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODEiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+VGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MiIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5PZmZlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MyIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5TZWFyY2hzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODQiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+U2VhcmNocmVzdWx0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODUiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+QWN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg2IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkFkZCB0byBjb250YWN0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg3IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlNlbmQgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg4IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkNvbnRhY3RzIGFuZCBNZXNzYWdlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg5IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlBlbmRpbmcgY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkFjY2VwdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkxIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+RGVueTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkyIiBuYW1lPSJ1c2VyIGNvbnRhY3QgcmVxdWVzdCI+CisgICAgPHZhbHVlPkhpLDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkzIiBuYW1lPSJ1c2VyIGNvbnRhY3QgcmVxdWVzdCI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gYWRkIHlvdSBhcyBjb250YWN0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk0IiBuYW1lPSJ1c2VyIGNvbnRhY3QgcmVxdWVzdCI+CisgICAgPHZhbHVlPkNoZWNrIHlvdXIgY29udGFjdCByZXF1ZXN0cyBpbiAkQVBQX05BTUUgb3IgY2xpY2sgb24gdGhvc2UgbGlua3MgdG8gYWNjZXB0IG9yIGRlbnkgdGhlIHJlcXVlc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NSIgbmFtZT0iYWRkIHVzZXIgY29udGFjdCI+CisgICAgPHZhbHVlPlRoaXMgdXNlciBpcyBhbHJlYWR5IGluIHlvdXIgY29udGFjdCBsaXN0IG9yIGhhcyByZWNlaXZlZCBhbiBpbnZpdGF0aW9uIHRvIHlvdXIgY29udGFjdCBsaXN0IHRoYXQgaXMgbm90IGFuc3dlcmVkIHlldC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NiIgbmFtZT0idXNlciBjb250YWN0IG1haWwiPgorICAgIDx2YWx1ZT5Zb3VyIGNvbnRhY3QgbGlzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+RWRpdCB5b3VyIGNvbnRhY3QgYW5kIG1lc3NhZ2VzLCZsdDtici8mZ3Q7IG1hbmFnZSB5b3VyIHBlbmRpbmcgY29udGFjdHMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTgiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5jb25maXJtZWQgeW91IGFzIGNvbnRhY3QhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTkiIG5hbWU9ImNoYXQgaW5mbyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDAiIG5hbWU9ImNoYXQgbG9nIGljb24iPgorICAgIDx2YWx1ZT5TaG93IC8gQ29weSBjaGF0IGxvZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAxIiBuYW1lPSJjaGF0IGxvZyB3aW5kb3ciPgorICAgIDx2YWx1ZT5DaGF0IExvZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Gcm9tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlN1YmplY3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWVzc2FnZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TmV3IE1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwOCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2xpY2sgdG8gd3JpdGUgYSBuZXcgbWVzc2FnZSB0byBhbnkgb2YgeW91ciBjb250YWN0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Xcml0ZSBuZXcgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjEwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Ubzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3ViamVjdDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMiIgbmFtZT0id2hpdGVib2FyZCBmdWxsLWZpdCI+CisgICAgPHZhbHVlPkVuYWJsZSBmdWxsIGZpdCBhbmQgdGhlIHdoaXRlYm9hcmQgd2lsbCB6b29tIHRoZSB3aG9sZSB3aGl0ZWJvYXJkIHNvIHRoYXQgYWxsJmx0O2JyLyZndDtkb2N1bWVudHMgYXJlIHZpc2libGUgYWNjb3JkaW5nIHRvIGVhY2ggcGFydGljaXBhbnRzIHNjcmVlbiByZXNvbHV0aW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjEzIiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT5LaWNrIHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNCIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBraWNrIHlvdXJzZWxmIG91dCBvZiB0aGUgY29uZmVyZW5jZSByb29tISBJZiB5b3Ugd2FudCB0byBsZWF2ZSBpdCBjbG9zZSB0aGUgYnJvd3NlciBvciB1c2UgdGhlIGV4aXQgYnV0dG9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE1IiBuYW1lPSJraWNrLXVzZXIiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGlzY29ubmVjdCB0aGlzIHVzZXIgZnJvbSB0aGlzIGNvbmZlcmVuY2Ugcm9vbT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNiIgbmFtZT0ia2ljay11c2VyIj4KKyAgICA8dmFsdWU+Q29uZmlybSBhY3Rpb24gLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTciIG5hbWU9ImtpY2stdXNlciI+CisgICAgPHZhbHVlPllvdSBjYW5ub3Qga2ljayBhIFN1cGVyLU1vZGVyYXRvciBvdXQgb2YgYSByb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Cb29rIGNvbmZlcmVuY2Ugcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TdGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5FbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIGFuIG9wdGlvbmFsIHJlcXVlc3QgZm9yIG1lZXRpbmcgdG8gdGhlIG1lc3NhZ2UgYW5kIGNyZWF0ZSBhIGNvbmZlcmVuY2Ugcm9vbS4gVGhlIEV2ZW50IGlzIHRoZW4gY29waWVkIGluIHRoZSBjYWxlbmRhciBvZiBldmVyeSBwYXJ0aWNpcGFudC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+SW5ib3g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UcmFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGlzIGlzIHlvdSEgWW91IGNhbm5vdCBhZGQgeW91cnNlbGYgYXMgeW91ciBvd24gY29udGFjdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoZSB1c2VyIGlzIGFscmVhZHkgZGVuaWVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VGhlIHVzZXIgaXMgYWxyZWFkeSBhcHByb3ZlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyOCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoaXMgdXNlciBjb250YWN0IGhhc2ggaXMgaW52YWxpZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyOSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlVzZXIgYWRkZWQgdG8gY29udGFjdCBsaXN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMwIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VXNlciBkZW5pZWQgYXMgY29udGFjdCBhbmQgcmVtb3ZlZCBmcm9tIHBlbmRpbmcgY29udGFjdCBsaXN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMxIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgbm8gc3VjaCBjb250YWN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMyIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+V291bGQgeW91IHJlYWxseSBsaWtlIHRvIHJlbW92ZSB0aGF0IGNvbnRhY3Q/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzMiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Db25maXJtIGNvbnRhY3QgcmVtb3ZhbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM0IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+RGVsZXRlIGNvbnRhY3QgZnJvbSBsaXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzUiIG5hbWU9InVzZXIgcHJvZmlsZSI+CisgICAgPHZhbHVlPlVzZXIgUHJvZmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM2IiBuYW1lPSJ1c2VyIHByb2ZpbGUiPgorICAgIDx2YWx1ZT5TaG93IHVzZXIgcHJvZmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM3IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5NZXNzYWdlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzOSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VsZWN0IGFsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWxlY3Qgbm9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWxlY3QgdW5yZWFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbGVjdCByZWFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1vdmUgdG8gZm9sZGVyIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgbmV3IGZvbGRlciAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGVsZXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDYiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRlbGV0ZWQgbWFpbHMgYXJlIHN0aWxsIGluIHlvdXIgdHJhc2ggZm9sZGVyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ3IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5NYXJrIHVucmVhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5NYXJrIHJlYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0OSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QW5zd2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTAiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFuc3dlciBldmVyeWJvZHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Rm9yd2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BY3Rpb25zIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUzIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+U2VuZCBwcml2YXRlIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Tm90aGluZyBzZWxlY3RlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TW92ZSB0byBJbmJveDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU2IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EZWxldGUgKGZpbmFsKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU3IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGlzIGFjdGlvbiBjYW5ub3QgYmUgdW5kb25lITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgZm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZCBmb2xkZXJzIGFuZCBvcmdhbml6ZSB5b3VyIG1lc3NhZ2VzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgZm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+RGVsZXRlIGZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBkZWxldGUgdGhpcyBmb2xkZXIsIHRoZXJlIGFyZSBzdGlsbCBtZXNzYWdlcyBpbnNpZGUhIERlbGV0ZSBmaXJzdCB0aGUgbWVzc2FnZXMgb3IgbW92ZSB0aGVtIHRvIGFub3RoZXIgZm9sZGVyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+RWRpdCBuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSBmb2xkZXIiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgZm9sZGVyPyBUaGVyZSBpcyBubyB3YXkgdG8gdW5kbyB0aGF0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY2IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+WW91ciByZXF1ZXN0IHdhcyBzZW5kIHRvIHRoZSB1c2VyLiBUaGUgdXNlciB3aWxsIHJlY2VpdmUgYSBub3RpZmljYXRpb24gdG8gYWNjZXB0IG9yIGRlbnkgeW91ciByZXF1ZXN0LiBPbmx5IGFjY2VwdGVkIHJlcXVlc3RzIGFyZSBpbiB5b3VyIGNvbnRhY3QgbGlzdCBvZiBjb3Vyc2UhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjciIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5NZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjgiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+VGhlIHVzZXIgZG9lcyBub3Qgc2hhcmUgaGlzIHBlcnNvbmFsIGNvbnRhY3QgZGF0YS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2OSIgbmFtZT0idXNlciB2aWV3IHByb2ZpbGUiPgorICAgIDx2YWx1ZT5UaGUgdXNlciBkb2VzIHNoYXJlIGhpcyBwZXJzb25hbCBjb250YWN0IGRhdGEgb25seSB0byBjb250YWN0cy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3MCIgbmFtZT0idXNlciB2aWV3IHByb2ZpbGUiPgorICAgIDx2YWx1ZT5BZGRyZXNzICZhbXA7IFBob25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzEiIG5hbWU9ImVycm9yIGNvZGUiPgorICAgIDx2YWx1ZT5Zb3UgaW52aXRhdGlvbiBjb2RlIGlzIG5vIHZhbGlkLCB0aGUgY29kZSBpcyBvbmx5IHZhbGlkIGR1cmluZyB0aGlzIHNwZWNpZmljIGRhdGUgYW5kIHRpbWU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzIiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5UaGlzIGV2ZW50IGlzIGNvbm5lY3RlZCB0byBzZXZlcmFsIGNhbGVuZGFycyBvZiBvdGhlciB1c2Vycy4gWW91ciBjaGFuZ2Ugd2lsbCBhbHNvIHVwZGF0ZSB0aGVpciBjYWxlbmRhci4gV291bGQgeW91IHJlYWxseSBsaWtlIHRvIHVwZGF0ZSB0aGUgZXZlbnQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzMiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Db25maXJtIHVwZGF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc0IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+QWxsb3cgY29udGFjdCB0byBzZWUgbXkgY2FsZW5kYXIgKHZpZXcgb25seSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkRvIG5vdCBzaGFyZSBjYWxlbmRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc2IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+Q2FsZW5kYXIgb2YgY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPllvdXIgY29udGFjdHMgbmVlZCB0byBhcHByb3ZlIHlvdSBmaXJzdCB0byBiZSBhYmxlIHRvIHNlZSB0aGVpciBjYWxlbmRhci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3OCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPllvdSBjYW5ub3Qgc3RvcmUgb3IgZGVsZXRlIGV2ZW50cyBmcm9tIG90aGVyIGNhbGVuZGFycyB0aGVuIHlvdXIgb3duITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc5IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+U2hvdyBteSBvd24gY2FsZW5kYXIgYWdhaW4hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODAiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5UaGlzIGV2ZW50IGlzIGNvbm5lY3RlZCB0byBzZXZlcmFsIGNhbGVuZGFycyBvZiBvdGhlciB1c2Vycy4gWW91ciBhY3Rpb24gd2lsbCBhbHNvIGRlbGV0ZSB0aGUgZXZlbnQgZnJvbSB0aGVpciBjYWxlbmRhci4gV291bGQgeW91IHJlYWxseSBsaWtlIHRvIGRlbGV0ZSB0aGUgZXZlbnQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODEiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Db25maXJtIGFjdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgyIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RW50ZXIgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgzIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QWNjZXNzIHRoZSBjb25mZXJlbmNlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgYSBjb25mZXJlbmNlIHJvb20gYW5kIGV2ZW50IGJvb2tlZCB3aXRoIHRoaXMgcHJpdmF0ZSBtZXNzYWdlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg1IiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgdG8gc3RvcmUgdGhlIGV2ZW50IGZpcnN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg2IiBuYW1lPSJhY2Nlc3Mgcm9vbXMgZXJyb3IiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBzdWNoIHJvb20gYXZhaWxhYmxlLiBUaGUgZXZlbnQgaW4gdGhlIGNhbGVuZGFyIGFuZCBjb25uZWN0ZWQgcm9vbSBpcyBhbHJlYWR5IGRlbGV0ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODciIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPkNob29zZSB5b3VyIG5pY2tuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODgiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPkZpcnN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg5IiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5MYXN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkwIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5FbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkxIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5PazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkyIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5NaW5pbXVtIGxlbmd0aCA0IGNoYXJzISBGb3IgYm90aCwgZmlyc3RuYW1lIGFuZCBsYXN0bmFtZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MyIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGEgdmFsaWQgZW1haWwhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTQiIG5hbWU9ImF1dGggZnJvbSI+CisgICAgPHZhbHVlPkZhY2Vib29rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTUiIG5hbWU9ImF1dGggZm9ybSI+CisgICAgPHZhbHVlPkxvZ2luIHdpdGggeW91ciBGYWNlYm9vayBhY2NvdW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTYiIG5hbWU9InZpZXcgcHJvZmlsZSI+CisgICAgPHZhbHVlPk1lbWJlciBzaW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk3IiBuYW1lPSJkaXJlY3QgbG9naW4gbWVzc2FnZSI+CisgICAgPHZhbHVlPllvdSd2ZSBsb2dnZWQgd2l0aCB5b3VyIEZhY2Vib29rIGFjY291bnQuIFlvdSBzaG91bGQgdXBkYXRlIHlvdXIgcHJvZmlsZSB3aXRoIHRoZSBjb3JyZWN0IGVtYWlsLiBPdGhlcndpc2UgeW91IHdpbGwgbm90IHJlY2VpdmUgaW52aXRhdGlvbnMgYW5kIHByaXZhdGUgbWVzc2FnZXMgZnJvbSBvdGhlciB1c2Vycy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5OCIgbmFtZT0iZGlyZWN0IGxvZ2luIG1lc3NhZ2UgaGVhZGVyIj4KKyAgICA8dmFsdWU+TWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk5IiBuYW1lPSJkaXJlY3QgbG9naW4gbWVzc2FnZSBjaGVja2JveCBjb250cm9sIj4KKyAgICA8dmFsdWU+RG8gbm90IHNob3cgdXBkYXRlIHByb2ZpbGUgbWVzc2FnZSBhZ2FpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAwIiBuYW1lPSJwcm9maWxlIHNldHRpbmdzIGJ1dHRvbiI+CisgICAgPHZhbHVlPm1vcmUgZGlzcGxheSBvcHRpb25zIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5OZXcgcHJpdmF0ZSBtZXNzYWdlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DbGljayBoZXJlIHRvIHZpc2l0IHlvdXIgcHJvZmlsZSB0byBzZWUgdGhlIGZ1bGwgbWVzc2FnZSAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+UmVwbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwNCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+Um9vbXMgYW5kIGNoYXRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDUiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPk15IHJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDYiIG5hbWU9Im15IHJvb21zIj4KKyAgICA8dmFsdWU+TXkgY29uZmVyZW5jZSByb29tIChmb3IgMS0xNiB1c2Vycyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwNyIgbmFtZT0ibXkgcm9vbXMiPgorICAgIDx2YWx1ZT5NeSB3ZWJpbmFyIHJvb20gKGZvciAxLTEyMCB1c2Vycyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwOCIgbmFtZT0icm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPk93bmVyIElkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDkiIG5hbWU9ImxvZ2luIGVycm9yIj4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGEgcGFzc3dvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMCIgbmFtZT0ibG9naW4gZXJyb3IiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCBhbiBhY2NvdW50IHdpdGggVXNlci1MZXZlbCBVc2VyLCBNb2RlcmF0b3Igb3IgQWRtaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMSIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPldlYi1TZXJ2aWNlIChvbmx5IGFjY2VzcyB2aWEgU09BUCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMiIgbmFtZT0idXBsb2FkIGZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5EbyBkaXJlY3RseSBsb2FkIHRvIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMyIgbmFtZT0id2hpdGVib2FyZCBjbG9zZSBjb25maXJtYXRpb24iPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gcmVtb3ZlIHRoaXMgd2hpdGVib2FyZD8gVGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxNCIgbmFtZT0id2hpdGVib2FyZCBsb2FkIFdNTCI+CisgICAgPHZhbHVlPkxvYWQgdG8gd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE1IiBuYW1lPSJyZWNvcmRpbmcgZmxhZyI+CisgICAgPHZhbHVlPkRvIG5vdCBmb3JnZXQgc3RhcnQgcmVjb3JkaW5nISBPbmUgdXNlciBwZXIgcm9vbSBhbHdheXMgbmVlZHMgdG8gc3RhcnQgaXQgdG8gaGF2ZSB0aGUgcmVjb3JkaW5nIGFmdGVyd2FyZHMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTYiIG5hbWU9InJlY29yZGluZyBmbGFnIj4KKyAgICA8dmFsdWU+U3RhcnQgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTciIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+QXJyb3c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxOCIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT5DaXJjbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxOSIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT5MaW5lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjAiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+U3F1YXJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjEiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+VHJpYW5nbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyMiIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlRleHQvTm90ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIzIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+Q2xpcGFydHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkRyYXcgRnJlZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI1IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+U2VsZWN0L01vdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNiIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkRyYXcgU2hhcGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNyIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkN1dC9Nb3ZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjgiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5ab29tIEluL091dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI5IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+UHJpbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlVuZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMSIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlRyYXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzIiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5BZGQgR3JpZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMzIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+U2hhcmUgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM0IiBuYW1lPSJpY29uIHN1Ym1lbnUiPgorICAgIDx2YWx1ZT5TZWxlY3QgU2hhcGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNSIgbmFtZT0iaWNvbiBzdWJtZW51Ij4KKyAgICA8dmFsdWU+U2VsZWN0IENsaXBhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNiIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkNvcHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNyIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkN1dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM4IiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+UGFzdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzOSIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkRlbGV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQwIiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGUgY29tcGxldGUgY29udGVudCBvbiB0aGUgd2hpdGVib2FyZD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MSIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkxvYWQgZGlyZWN0bHkgdG8gd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQyIiBuYW1lPSJhdHRlbmRlZXMiPgorICAgIDx2YWx1ZT5BdHRlbmRlZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MyIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+QXR0ZW5kZWUgTWFuYWdlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ0IiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5QcmVzZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDUiIG5hbWU9ImF0ZW5kZWUgbWFuYWdlciI+CisgICAgPHZhbHVlPlJlbW90ZSBDb250cm9sbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ2IiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5FamVjdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ3IiBuYW1lPSJjaGF0Ij4KKyAgICA8dmFsdWU+Q2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ4IiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5JbnZpdGUgQXR0ZW5kZWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDkiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPkJ5IEVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTAiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPlVzZXIgaXMgbW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTEiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPlVzZXIgaGFzIHdlYmNhbSBzd2l0Y2hlZCBvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUyIiBuYW1lPSJmaWxsX29wdGlvbiI+CisgICAgPHZhbHVlPkRlYWN0aXZhdGUgc2hhcGUgZmlsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUzIiBuYW1lPSJmaWxsX29wdGlvbiI+CisgICAgPHZhbHVlPkFjdGl2YXRlIHNoYXBlIGZpbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlNuYXAgdG8gR3JpZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU1IiBuYW1lPSJhbGxvd19yZWNvcmRpbmciPgorICAgIDx2YWx1ZT5BbGxvdyByZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NiIgbmFtZT0id2FpdF9mb3JfcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+V2FpdCBmb3IgcmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTciIG5hbWU9ImhpZGVfdG9wX2JhciI+CisgICAgPHZhbHVlPkhpZGUgdG9wYmFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTgiIG5hbWU9ImZpbGVFeHBsb3JlciI+CisgICAgPHZhbHVlPlBsYXkgdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1OSIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhlIGNvbnRlbnQgb24gdGhlIGN1cnJlbnQgc2xpZGU/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjAiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPkFjY2VwdCBhbmQgZ3JhbnQgdXNlciByaWdodDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYxIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT5EZW55PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjIiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPkk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2MyIgbmFtZT0iYWN0aXZpdHlfd2luZG93Ij4KKyAgICA8dmFsdWU+QWN0aXZpdGllcyBhbmQgYWN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY0IiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+UmVtb3ZlIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NSIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPllvdSBuZWVkIHRoZSBtb2RlcmF0aW9uIG9yIHRoZSByaWdodCB0byBkcmF3IG9uIHRoZSB3aGl0ZWJvYXJkIHRvIHJlbW92ZSB3aGl0ZWJvYXJkcyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NiIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPk5vdCBhbGxvd2VkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjciIG5hbWU9InVzZXJfbGVmdF9hY3RfbXNnIj4KKyAgICA8dmFsdWU+aGFzIGxlZnQgdGhlIHJvb20uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjgiIG5hbWU9ImNsaXBhcnQgaWNvbnMiPgorICAgIDx2YWx1ZT5NYXRoIGljb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjkiIG5hbWU9ImNsaXBhcnQgaWNvbnMiPgorICAgIDx2YWx1ZT5ObyBjYXRlZ29yeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzcwIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5Db2xvci1TdHlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzcxIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5RdWFsaXR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzIiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPkRvbWFpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzczIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT52aXNpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc0IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5yZWRvcmFuZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+bWVkaXVtc2VhZ3JlZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NiIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+c3RlZWxibHVlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzciIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPmxpZ2h0c3RlZWxibHVlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzgiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPmdvbGRlbnJlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc5IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5zaWx2ZXJncmF5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODAiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnVzZXJkZWZpbmVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODEiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPmJlc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4MiIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+dXBsb2FkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODMiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPm1lZGl1bTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg0IiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODUiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODYiIG5hbWU9ImdpdmUgZXhjbHVzaXZlIGF1ZGlvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIG9mIG90aGVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg3IiBuYW1lPSJtdXRlIHNlbGYgbWVzc2FnZSI+CisgICAgPHZhbHVlPllvdSBhcmUgZ2xvYmFsbHkgbXV0ZWQgYnkgdGhlIG1vZGVyYXRvci4gWW91IGNhbm5vdCB1bm11dGUgeW91cnNlbGYhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODgiIG5hbWU9Im11dGUgc2VsZiBjb25maXJtIG1lc3NhZ2UgdGl0bGUiPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgZ2xvYmFsbHk/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODkiIG5hbWU9Im11dGUgc2VsZiBjb25maXJtIG1lc3NhZ2UgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBtdXRlIHlvdXJzZWxmIGdsb2JhbGx5PyBObyBvdGhlciB1c2VyIHdpbGwgaGVhciB5b3UgYW55bW9yZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5MCIgbmFtZT0ibXV0ZSBvdGhlcnMgY29uZmlybSBtZXNzYWdlIHRpdGxlIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGxvY2FsbHk/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTEiIG5hbWU9Im11dGUgb3RoZXJzIGNvbmZpcm0gbWVzc2FnZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBtdXRlIHRoaXMgbWljcm9waG9uZT8gWW91IGNhbiBvbmx5IG11dGUgaXQgbG9jYWxseSBvbiB5b3VyIHNjcmVlbi4gSXQgaGFzIG5vIGVmZmVjdCB0byBob3cgb3RoZXIgdXNlcnMgaGVhciB0aGlzIHVzZXIuIE9ubHkgbW9kZXJhdG9ycyBjYW4gdHVybiBpdCBvZmYgZ2xvYmFsbHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTIiIG5hbWU9Im11dGUgb3RoZXJzIGNvbmZpcm0gbWVzc2FnZSB0aXRsZSI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBvZmYgZ2xvYmFsbHk/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTMiIG5hbWU9Im11dGUgb3RoZXJzIG1vZGVyYXRvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIG11dGUgdGhpcyB1c2VyIGdsb2JhbGx5PyBObyBvdGhlciB1c2VyIHdpbGwgaGVhciBoaW0gYW55bW9yZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5NCIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5Zb3VyIHNvdW5kIGlzIG9uLiBDbGljayBoZXJlIHRvIHNlbmQgbW9kZXJhdG9yIG1lc3NhZ2UgdG8gbXV0ZSB5b3VyIG1pY3JvcGhvbmUgZ2xvYmFsbHkgKGluIHRoZSBjb21wbGV0ZSBjb25mZXJlbmNlIHJvb20pIG9mZiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5NSIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5Zb3VyIHNvdW5kIGlzIG9mZi4gQ2xpY2sgaGVyZSB0byBzZW5kIG1vZGVyYXRvciBtZXNzYWdlIHRvIHVubXV0ZSB5b3VyIG1pY3JvcGhvbmUgZ2xvYmFsbHkgKGluIHRoZSBjb21wbGV0ZSBjb25mZXJlbmNlIHJvb20pIG9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk2IiBuYW1lPSJtdXRlIGFwcGx5IHNlbGYgb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdGhhdCB0aGUgbW9kZXJhdG9yIG11dGVzIG15IG1pY3JvcGhvbmUgZ2xvYmFsbHkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTciIG5hbWU9Im11dGUgYXBwbHkgc2VsZiBvZmYgbWVzc2FnZSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdGhhdCB0aGUgbW9kZXJhdG9yIHVubXV0ZXMgbXkgbWljcm9waG9uZSBnbG9iYWxseS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5OCIgbmFtZT0ibXV0ZSBhcHBseSBvZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+d2FudCB0aGF0IHRoZSBtb2RlcmF0b3IgdW5tdXRlcyBoaXMvaGVyIG1pY3JvcGhvbmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTkiIG5hbWU9Im11dGUgYXBwbHkgb2YgbWVzc2FnZSI+CisgICAgPHZhbHVlPndhbnQgdGhhdCB0aGUgbW9kZXJhdG9yIG11dGVzIGhpcy9oZXIgbWljcm9waG9uZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMCIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5Vbm11dGUgbWljcm9waG9uZS4gQ2xpY2sgaGVyZSB0byBtdXRlIGhpcy9oZXIgbWljcm9waG9uZSBnbG9iYWxseSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMSIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUuIENsaWNrIGhlcmUgdG8gdW5tdXRlIGhpcy9oZXIgbWljcm9waG9uZSBnbG9iYWxseSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMiIgbmFtZT0ibXV0ZSBzZWxmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGlzIHVzZXIgaXMgZ2xvYmFsbHkgbXV0ZWQgYnkgdGhlIG1vZGVyYXRvci4gWW91IGNhbm5vdCB1bm11dGUgaGltITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDAzIiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TXV0ZSB5b3VyIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwNCIgbmFtZT0idW5tdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+VW5tdXRlIHlvdXIgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA1IiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDYiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSBtaWNyb3Bob25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDciIG5hbWU9Im11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwOCIgbmFtZT0idW5tdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+VW5tdXRlIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwOSIgbmFtZT0ibXV0ZSBtb2RlcmF0b3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPk9ubHkgbW9kZXJhdG9ycyBjYW4gbXV0ZSBvciB1bm11dGUgYW4gdXNlciBnbG9iYWxseSEgVG8gbXV0ZSB5b3VyIG93biBtaWNyb3Bob25lOiBQbGVhc2UgdXNlIHRoZSBtaWNyb3Bob25lIGljb24gaW4geW91ciB2aWRlbyBwb2QhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTAiIG5hbWU9InBvbGxfbmFtZSI+CisgICAgPHZhbHVlPlBvbGwgTmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDExIiBuYW1lPSJwb2xsX25hbWUiPgorICAgIDx2YWx1ZT5Zb3U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMiIgbmFtZT0iYXJjaGl2ZWRfcG9sbHMiPgorICAgIDx2YWx1ZT5BcmNoaWV2ZWQgUG9sbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMyIgbmFtZT0iYWN0aXZlX3BvbGwiPgorICAgIDx2YWx1ZT5hY3RpdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNCIgbmFtZT0iY2hhcnRfc2ltcGxlIj4KKyAgICA8dmFsdWU+U2ltcGxlIENoYXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTUiIG5hbWU9ImNoYXJ0X3BpZSI+CisgICAgPHZhbHVlPlBpZSBDaGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE2IiBuYW1lPSJzaWduX3VwX3ZhbGlkYXRpb24iPgorICAgIDx2YWx1ZT5QbGVhc2UgZW50ZXIgZW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNyIgbmFtZT0iY2hhdF9ub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5OZXcgbWVzc2FnZShzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE4IiBuYW1lPSJwb2xsX2Nsb3NlIj4KKyAgICA8dmFsdWU+Q2xvc2UgUG9sbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE5IiBuYW1lPSJwb2xsX2Nsb3NlX2NvbmZpcm0iPgorICAgIDx2YWx1ZT5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gY2xvc2UgdGhpcyBQb2xsPyBObyBvbmUgd2lsbCBiZSBhYmxlIHRvIHZvdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMCIgbmFtZT0icG9sbF9kZWxldGUiPgorICAgIDx2YWx1ZT5EZWxldGUgUG9sbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIxIiBuYW1lPSJwb2xsX2RlbGV0ZV9jb25maXJtIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIFBvbGw/IFRoZSByZXN1bHRzIHdpbGwgYmUgZGVsZXRlZCBhcyB3ZWxsLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIyIiBuYW1lPSJsYW5ndWFnZV9jb2RlIj4KKyAgICA8dmFsdWU+TGFuZ3VhZ2UgSVNPIENvZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMyIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX3Blcm1pc3Npb24iPgorICAgIDx2YWx1ZT5BbGxvdy9EZW55IHJpZ2h0IHRvIGdpdmUgZXhjbHVzaXZlIGF1ZGlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI0IiBuYW1lPSJhbGxvd19leGNsdXNpdmVfYXVkaW9fcGVybWlzc2lvbiI+CisgICAgPHZhbHVlPkFsbG93IHVzZXIgdG8gZ2l2ZSBleGNsdXNpdmUgYXVkaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNSIgbmFtZT0iZGVueV9leGNsdXNpdmVfYXVkaW9fcGVybWlzc2lvbiI+CisgICAgPHZhbHVlPkRlbnkgdXNlciB0byBnaXZlIGV4Y2x1c2l2ZSBhdWRpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI2IiBuYW1lPSJleGNsX2F1ZGlvIGFwcGx5IHNlbGYgb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gZ2V0IGEgcGVybWlzc2lvbiBmb3IgZXhjbHVzaXZlIGF1ZGlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI3IiBuYW1lPSJleGNsX2F1ZGlvIGFwcGx5IG9mIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53YW50IHRoYXQgdGhlIG1vZGVyYXRvciBnaXZlcyBtZSBhIHBlcm1pc3Npb24gZm9yIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyOCIgbmFtZT0iZXhjbF9hdWRpbyBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5HaXZlIGEgcGVybWlzc2lvbiBmb3IgZXhjbHVzaXZlIGF1ZGlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI5IiBuYW1lPSJjYW1fcmVzb2x1dGlvbiI+CisgICAgPHZhbHVlPkNhbSByZXNvbHV0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzAiIG5hbWU9ImNhbV9yZXNvbHV0aW9uX2luZm8iPgorICAgIDx2YWx1ZT5DaGFuZ2luZyB0aGUgcmVzb2x1dGlvbiBhZmZlY3RzIGJhbmR3aWR0aCwgYmlnZ2VyIHBpY3R1cmUgbmVlZHMgbW9yZSBiYW5kd2l0aCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzMSIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2Vycm9yIj4KKyAgICA8dmFsdWU+WW91IGRvbid0IGhhdmUgdGhlIHJpZ2h0IHRvIGdpdmUgeW91cnNlbGYgb3Igb3RoZXJzIGV4Y2x1c2l2ZSBhdWRpby4gWW91IG5lZWQgdG8gYXBwbHkgZm9yIHRoZSByaWdodCBmcm9tIHRoZSBtb2RlcmF0b3Igb3IgYXNrIHRoZSBtb2RlcmF0b3IgdG8gZ2l2ZSB5b3UgZXhjbHVzaXZlIGF1ZGlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMyIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fYXNrIj4KKyAgICA8dmFsdWU+SSB3b3VsZCBsaWtlIHRvIGdldCB0aGUgcmlnaHQgZm9yIGV4Y2x1c2l2ZSBhdWRpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMzIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fYWN0aW9uIj4KKyAgICA8dmFsdWU+R2l2ZSBleGNsdXNpdmUgYXVkaW8gdG8gbWUgKGFsdGVybmF0aXZlbHkgY2xpY2sgb24geW91ciB2aWRlbyBwb2Qgb3IgcHJlc3MgRjEyKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM0IiBuYW1lPSJtaWNybyBpcyBvbiI+CisgICAgPHZhbHVlPk1pY3JvcGhvbmUgaXMgb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzUiIG5hbWU9Im1pY3JvIGlzIG9mZiI+CisgICAgPHZhbHVlPk1pY3JvcGhvbmUgaXMgbXV0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNiIgbmFtZT0iaGlkZV9jaGF0Ij4KKyAgICA8dmFsdWU+SGlkZSBjaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzciIG5hbWU9ImhpZGVfYWN0aXZpdGllc19hbmRfYWN0aW9ucyI+CisgICAgPHZhbHVlPkhpZGUgYWN0aXZpdGllczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM4IiBuYW1lPSJoaWRlX2ZpbGVzX2V4cGxvcmVyIj4KKyAgICA8dmFsdWU+SGlkZSBmaWxlcyBleHBsb3JlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM5IiBuYW1lPSJoaWRlX2FjdGlvbnNfbWVudSI+CisgICAgPHZhbHVlPkhpZGUgYWN0aW9ucyBtZW51PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDAiIG5hbWU9ImhpZGVfc2NyZWVuX3NoYXJpbmciPgorICAgIDx2YWx1ZT5IaWRlIHNjcmVlbiBzaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDEiIG5hbWU9ImhpZGVfd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkhpZGUgd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQyIiBuYW1lPSJzaG93IG1pY3JvcGhvbmUgc3RhdHVzIj4KKyAgICA8dmFsdWU+U2hvdyBtaWNybyBzdGF0dXMgaW4gdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MyIgbmFtZT0ibGF5b3V0X29wdGlvbnMiPgorICAgIDx2YWx1ZT5MYXlvdXQgb3B0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ0IiBuYW1lPSJjYWxlbmRhciBuZXcgYnV0dG9uIj4KKyAgICA8dmFsdWU+TmV3IEV2ZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDUiIG5hbWU9ImNhbGVuZGFyIHBhc3N3b3JkIGluZm8gdGV4dCI+CisgICAgPHZhbHVlPlBhc3N3b3JkIHByb3RlY3RlZCBhcmUgdGhlIGxpbmtzIHRvIHRoZSBjb25mZXJlbmNlIHRoYXQgYXJlIHNlbmQgdG8gdGhlIHBhcnRpY2lwZW50cyB3aGVuIHlvdSBzYXZlIHRoZSBjYWxlbmRhciBldmVudCwgbm90IHRoZSByb29tISBUaGF0IG1lYW5zIGlmIHlvdSBzYXZlIHRoZSBldmVudCBtdWx0aXBsZSB0aW1lcyBidXQgd2l0aCBkaWZmZXJlbnQgcGFzc3dvcmRzIGV2ZXJ5IHBhcnRpY2lwZW50IHJlY2VpdmVzIGEgbmV3IGxpbmsgdGhhdCBoYXMgYSBkaWZmZXJlbnQgcGFzc3dvcmQuIEJ1dCBvbGQgbGlua3Mgc3RpbGwgd29yayBvbmNlIHNlbmQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDYiIG5hbWU9ImNhbGVuZGFyIGVkaXQgYnV0dG9uIj4KKyAgICA8dmFsdWU+RWRpdCBkZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDciIG5hbWU9InNpcCBzaG93IGRpYWxlciI+CisgICAgPHZhbHVlPlNob3cgc2lwIGRpYWxlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ4IiBuYW1lPSJzaXAgY2FsbCI+CisgICAgPHZhbHVlPkNhbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0OSIgbmFtZT0iY2FsZW5kYXIgY29udGFjdCBsaXN0Ij4KKyAgICA8dmFsdWU+U2hvdyBjYWxlbmRhciBldmVudHMgb2YgY29udGFjdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUwIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5Zb3VyIGhvbWUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTEiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPlBsYW4geW91ciBtZWV0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUyIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5XYXRjaCByZWNvcmRpbmcgYW5kIGludGVydmlld3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MyIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+Q2hvb3NlIGFuZCBzdGFydCBhIHdlYi1jb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTQiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSB1c2VycyBhbmQgcmlnaHRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTUiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBjb25uZWN0aW9ucyBhbmQga2ljayB1c2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU2IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgdXNlcmdyb3VwczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU3IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgY29uZmVyZW5jZSByb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU4IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2Ugc3lzdGVtIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTkiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBsYWJlbHMgYW5kIHdvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIExEQVAgYW5kIEFEUyBjb25maWd1cmF0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYxIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5FeHBvcnQvSW1wb3J0IFN5c3RlbSBCYWNrdXBzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjIiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCBtb2RlcmF0aW9uIG9yIHRoZSByaWdodCB0byBkcmF3IG9uIHdoaXRlYm9hcmQgdG8gdXBsb2FkLCBhZGQsIGRlbGV0ZSBvciBsb2FkIGZpbGVzIGFuZCBmb2xkZXJzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYzIiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+RWRpdCB0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjQiIG5hbWU9InNhbHV0YXRpb24iPgorICAgIDx2YWx1ZT5Qcm9mPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjUiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UHVibGlzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY2IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlN0YXJ0IFB1Ymxpc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2NyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdG9wIFB1Ymxpc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2OCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5Ib3N0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjkiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UHVibGlzaCBBcHA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5QdWJsaXNoIElkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzEiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UmVkdWNlIHRoZSB3aWR0aCBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtb3ZlIGl0IGxlZnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5SZWR1Y2UgdGhlIGhlaWdodCBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtb3ZlIGl0IGJvdHRvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDczIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHVjZSB0aGUgeCBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtYWtlIGl0IHdpZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzQiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UmVkdWNlIHRoZSB5IG9mIHRoZSBTaGFyaW5nU2NyZWVuIGJlZm9yZSB5b3UgdHJ5IHRvIG1ha2UgaXQgaGlnaGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzUiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+RmlsbCB0aGVzZSBzZXR0aW5ncyBzdHJlYW0geW91ciBzY3JlZW4gZGF0YSB0byAzdGggcGFydHkgcHJvdmlkZXJzIGxpa2UganVzdGluLnR2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzYiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UGxlYXNlIHN0YXJ0IFNjcmVlbiBzaGFyaW5nIHRvIGJlIGFibGUgdG8gcHVibGlzaCBpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc3IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPk1vZGVyYXRvciBwZXJtaXNzaW9uIHJlcXVpcmVkIHRvIHN0YXJ0IHJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc4IiBuYW1lPSJubyByaWdodCBmb3IgZXhjbHVzaXZlIGF1ZGlvIj4KKyAgICA8dmFsdWU+WW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byBhcHBseSBleGNsdXNpdmUgYXVkaW8gdG8gYW55IHBhcnRpY2lwYW50LiBZb3UgbmVlZCBtb2RlcmF0aW9uIHJvbGUgb3IgdGhlIHJpZ2h0IGZvciBleGNsdXNpdmUgYXVkaW8gdG8gbWFrZSBhbnkgbWljcm9waG9uZSBleGNsdXNpdmUgdHVybmVkIG9uLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3OSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+VXBsb2FkIG5ldyBmaWxlIHRvIGZpbGUgZXhwbG9yZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+T3BlbiBuZXcgZGlhbG9nIHdpdGggc2hhcmluZyBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgxIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5BbiBleGlzdGluZyBtb2RlcmF0b3IgbXVzdCBhcHByb3ZlIGl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODIiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkFzayBtb2RlcmF0b3IgdG8gc2hhcmUgeW91ciB3ZWJjYW0vbWljcm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MyIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+R2F0aGVyIGZlZWRiYWNrIGJ5IGNyZWF0aW5nIGEgcG9sbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg0IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5QYXN0IGFuZCBjdXJyZW50IHBvbGwgcmVzdWx0cyBhcyBjaGFydHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Vm90ZSBpZiB0aGVyZSBpcyBhIHBvbGwgZm9yIHRoaXMgY29uZmVyZW5jZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODYiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkVkaXQgY2FtIGFuZCBtaWMgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NyIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Q29uZmlybSBhbmQgbGVhdmUgdGhlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4OCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Q2FsbCBleHRlcm5hbCBwZW9wbGUgdmlhIFZvSVAvU0lQPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODkiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlNlbmQgYW4gZW1haWwgd2l0aCBhIGRpcmVjdCBsaW5rIHRvIHRoaXMgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkwIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5DaGFuZ2UgeW91ciB3aGl0ZWJvYXJkIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTEiIG5hbWU9ImJhY2t1cCBhZG1pbiI+CisgICAgPHZhbHVlPk1heCB1cGxvYWQgc2l6ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkyIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5Bc2sgbW9kZXJhdG9yIHRvIHNoYXJlIHlvdXIgd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkzIiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5TdGFydCBQcml2YXRlIENoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NCIgbmFtZT0iYWxsX3ByaXZhdGVfY2hhdCI+CisgICAgPHZhbHVlPkFsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk1IiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IHN0YXJ0IGEgcHJpdmF0ZSBjaGF0IHdpdGggeW91cnNlbGYuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTYiIG5hbWU9InByaXZhdGUgY2hhdCI+CisgICAgPHZhbHVlPllvdSd2ZSBhbHJlYWR5IHN0YXJ0ZWQgYSBwcml2YXRlIGNoYXQgd2l0aCB0aGlzIHBhcnRpY2lwYW50LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk3IiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcHJpdmF0ZSBjaGF0PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk4IiBuYW1lPSJTZXJ2ZXJzIj4KKyAgICA8dmFsdWU+U2VydmVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk5IiBuYW1lPSJTZXJ2ZXJzIj4KKyAgICA8dmFsdWU+U2VydmVycyBwYXJ0aWNpcGF0aW5nIGluIGNsdXN0ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMCIgbmFtZT0iU2VydmVyIG5hbWUiPgorICAgIDx2YWx1ZT5TZXJ2ZXIgTmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAxIiBuYW1lPSJTZXJ2ZXIgQWRkcmVzcyI+CisgICAgPHZhbHVlPlNlcnZlciBBZGRyZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDIiIG5hbWU9IlNlcnZlciBkZXRhaWxzIj4KKyAgICA8dmFsdWU+U2VydmVyIGRldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMyIgbmFtZT0iU2VuZCBTTVMiPgorICAgIDx2YWx1ZT5TZW5kIFNNUzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA0IiBuYW1lPSJwdWJsaXNoaW5nX21lc3NhZ2UiPgorICAgIDx2YWx1ZT5QdWJsaXNoaW5nLiBVc2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA1IiBuYW1lPSJjbWRfbGluZV9hZG1pbiI+CisgICAgPHZhbHVlPlRvIHNhdmUgdGltZSBhbmQgaW50ZXJuZXQgdHJhZmZpYyB5b3UgY2FuIHVzZSBjb21tYW5kIGxpbmUgYWRtaW4gdG8gYmFja3VwL3Jlc3RvcmUvdXBncmFkZTpcbiAxKSBnbyB0byBPTSBpbnN0YWxsIGRpciAoZm9yIGV4LiAvb3B0L3JlZDUpIFxuIDIpIHN0b3AgT00gKGZvciBleC4gLi9yZWQ1LXNodXRkb3duLnNoKVxuIDMpIC4vYWRtaW4uc2ggLWIgLWZpbGUgfi90b2RheV9vbV9iYWNrdXAuemlwIChjcmVhdGUgYmFja3VwIG9mIGN1cnJlbnQgT00pXG4gNCkgZG93bmxvYWQgYXJjaGl2ZSB3aXRoIG5ldyBPTVxuIDUpIG12IC9vcHQvcmVkNSAvb3B0LnJlZDUuYmFrIChtb3ZlIHdvcmtpbmcgdmVyc2lvbiBvZiBPTSBqdXN0IGluIGNhc2UgOikpXG4gNikgZXh0cmFjdCBkb3dubG9hZGVkIE9NIHRvIHRoZSAvb3B0L3JlZDVcbiA3KSAuL2FkbWluLnNoIC1pIC1maWxlIH4vdG9kYXlfb21fYmFja3VwLnppcCAob3IgJy4vYWRtaW4uc2ggLWkgLWZpbGUgfi90b2RheV9vbV9iYWNrdXAuemlwIC0tZGItdHlwZSBteXNxbCAtLWRiLXVzZXIgb21fdXNlciAtLWRiLXBhc3Mgb21fdXNlcl9wYXNzJyBpbiBjYXNlIG9mIHlvdSBhcmUgdXNpbmcgbm9uLWRlZmF1bHQgREIgKVxuIDgpIHN0YXJ0IE9NXG48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNiIgbmFtZT0icHVibGljX3Jvb21fdG9vbHRpcCI+CisgICAgPHZhbHVlPlJvb21zIGNvbW1vbiB0byBhbGwgdXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA3IiBuYW1lPSJwcml2YXRlX3Jvb21fdG9vbHRpcCI+CisgICAgPHZhbHVlPlJvb21zIGNvbW1vbiB0byB0aGUgY3VycmVudCB1c2VyIGdyb3VwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDgiIG5hbWU9Im15X3Jvb21fdG9vbHRpcCI+CisgICAgPHZhbHVlPlJvb21zIG9mIHRoZSBjdXJyZW50IHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwOSIgbmFtZT0iY3JlYXRlX25ld19yb29tIj4KKyAgICA8dmFsdWU+Q3JlYXRlL01vZGlmeSBhcHBvaW50bWVudCBzcGVjaWFsIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxMCIgbmFtZT0ibXVsdGlwbGVfYWRkcmVzc2VzIj4KKyAgICA8dmFsdWU+WW91IGNhbiBlbnRlciBtdWx0aXBsZSBhZGRyZXNzZXMgaW4gdGhlIGZvcm1hdDogZmlyc3RuYW1lMSBsYXN0bmFtZTEgJmx0O2VtYWlsMSZndDssImZpcnN0bmFtZTIgbGFzdG5hbWUyIiAmbHQ7ZW1haWwyJmd0OywnZmlyc3RuYW1lMyBsYXN0bmFtZTMnICZsdDtlbWFpbDMmZ3Q7LCAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxMSIgbmFtZT0ic3RyZWFtX3ZvbHVtZSI+CisgICAgPHZhbHVlPkFkanVzdCBzdHJlYW0gdm9sdW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTIiIG5hbWU9Im1pY3JvcGhvbmVfdm9sdW1lIj4KKyAgICA8dmFsdWU+QWRqdXN0IG1pY3JvcGhvbmUgdm9sdW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTMiIG5hbWU9ImNoYXRfbW9kZXJhdGVkIj4KKyAgICA8dmFsdWU+SXMgY2hhdCBtb2RlcmF0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNCIgbmFtZT0iY2hhdF9tb2RlcmF0ZWQiPgorICAgIDx2YWx1ZT5BbGxvdyBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTUiIG5hbWU9ImNoYXRfb3BlbmVkIj4KKyAgICA8dmFsdWU+Q2hhdCBwYW5lbCBvcGVuZWQgYnkgZGVmYXVsdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE2IiBuYW1lPSJmaWxlc19vcGVuZWQiPgorICAgIDx2YWx1ZT5GaWxlcyBwYW5lbCBvcGVuZWQgYnkgZGVmYXVsdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE3IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gc2VjdGlvbiBsYXN0cGluZyI+CisgICAgPHZhbHVlPkxhc3QgcGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE4IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gc2VjdGlvbiBsYXN0cGluZyBpbmZvIj4KKyAgICA8dmFsdWU+RXZlcnkgc2xhdmUgc2VuZHMgYSBwaW5nIHRvIHRoZSBtYXN0ZXIgZXZlcnkgMyBzZWNvbmRzIChjb25maWd1cmFibGUpLiBTbGF2ZSBsYXN0UGluZyBtdXN0IGJlIHNtYWxsZXIgdGhlbiAxIG1pbnV0ZSBzbyB0aGF0IHRoZSBtYXN0ZXIgdXNlcyB0aGUgc2xhdmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTkiIG5hbWU9InNlcnZlciBhZG1pbiBwb3J0Ij4KKyAgICA8dmFsdWU+SFRUUCBQb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjAiIG5hbWU9InNlcnZlciBhZG1pbiB1c2VyIj4KKyAgICA8dmFsdWU+VXNlciAoU09BUC1BY2Nlc3MpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjEiIG5hbWU9InNlcnZlciBhZG1pbiBwYXNzd29yZCI+CisgICAgPHZhbHVlPlBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjIiIG5hbWU9InNlcnZlciBhZG1pbiB3ZWJhcHAgcGF0aCI+CisgICAgPHZhbHVlPldlYmFwcCBwYXRoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjMiIG5hbWU9InNlcnZlciBhZG1pbiBwcm90b2NvbCI+CisgICAgPHZhbHVlPlByb3RvY29sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjQiIG5hbWU9InNlcnZlciBhZG1pbiBwaW5nIHJ1bm5pbmciPgorICAgIDx2YWx1ZT5QaW5nIHJ1bm5pbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyNSIgbmFtZT0ic2VydmVyIGFkbWluIGFjdGl2ZSI+CisgICAgPHZhbHVlPkFjdGl2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI2IiBuYW1lPSJnZW5lcmF0ZV9oYXNoIj4KKyAgICA8dmFsdWU+R2VuZXJhdGUgVVJMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjciIG5hbWU9Im5ldHdvcmsgdGVzdGluZyBsaW5rIj4KKyAgICA8dmFsdWU+TmV0d29yayB0ZXN0aW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjgiIG5hbWU9InJvb21fb3B0aW9ucyI+CisgICAgPHZhbHVlPkF1dG8gc2VsZWN0IGludGVydmlldyB2aWRlbyBwb2Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyOSIgbmFtZT0iZm9udF91bmRlcmxpbmUiPgorICAgIDx2YWx1ZT5VbmRlcmxpbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMCIgbmFtZT0iZm9udF9zdHlsZSI+CisgICAgPHZhbHVlPkZvbnQgc3R5bGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMSIgbmFtZT0iYWxsb3dfZm9udF9zdHlsZXMiPgorICAgIDx2YWx1ZT5BbGxvdyBmb250IHN0eWxlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMyIiBuYW1lPSJmb250X2NvbG9yIj4KKyAgICA8dmFsdWU+Rm9udCBjb2xvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMzIiBuYW1lPSJoeXBlcmxpbmsiPgorICAgIDx2YWx1ZT5IeXBlcmxpbms8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNCIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbiI+CisgICAgPHZhbHVlPlNob3cgc2Vzc2lvbiBzdGF0aXN0aWNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzUiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW4iPgorICAgIDx2YWx1ZT5TZXNzaW9uIGRldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNiIgbmFtZT0ic3lzdGVtX2ltcG9ydCI+CisgICAgPHZhbHVlPlN5c3RlbSBpbXBvcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNyIgbmFtZT0iaW5jbHVkZV9pbnRvX2JhY2t1cCI+CisgICAgPHZhbHVlPkluY2x1ZGUgdXBsb2FkZWQgZmlsZXMgYW5kIHJlY29yZGluZ3MgaW4gYmFja3VwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzgiIG5hbWU9InJvb21fYWRtaW5fc2lwIj4KKyAgICA8dmFsdWU+RW5hYmxlIFNJUCB0cmFuc3BvcnQgaW4gdGhlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzOSIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2NvbmZpcm0iPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gcHJvdmlkZSB0aGlzIHVzZXIgYW4gZXhjbHVzaXZlIGF1ZGlvPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTQwIiBuYW1lPSJub190aW1lem9uZSI+CisgICAgPHZhbHVlPlBsZWFzZSBzcGVjaWZ5IHlvdXIgdGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU0NSIgbmFtZT0iY29udGVudF9pc19zYXZpbmciPgorICAgIDx2YWx1ZT5Db250ZW50IGlzIFNhdmluZywgUGxlYXNlIHdhaXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+Cis8L2xhbmd1YWdlPgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9sYW5ndWFnZXMvdGltZXpvbmVzLnhtbCBiL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL3RpbWV6b25lcy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzU4M2Q3OQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL3RpbWV6b25lcy54bWwKQEAgLTAsMCArMSw5NiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzx0aW1lem9uZXMgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgCisgICAgeHNpOm5vTmFtZXNwYWNlU2NoZW1hTG9jYXRpb249InRpbWV6b25lcy54c2QiPgorCTwhLS0gCisJCVRoaXMgZmlsZSBpcyBsb2FkZWQgZHVyaW5nIGluc3RhbGxhdGlvbiB0byB0aGUgZGF0YWJhc2UgdGFibGUgIm9tX3RpbWV6b25lcyIgb2YgT3Blbk1lZXRpbmdzLiAKKwkJQ2hhbmdlcyBhdCBydW50aW1lIHRvIHRoaXMgZmlsZSBoYXZlIG5vIGVmZmVjdCB0byBPcGVuTWVldGluZ3MuCisJCisJCUF0dHJpYnV0ZXM6CisJCisJCTEpIG9yZGVySWQKKwkJVGhlIG9yZGVySWQgaXMganVzdCBhbiBpbmRpY2F0b3IgZm9yIHRoZSBwb3NpdGlvbiBpbiB0aGUgZHJvdyBkb3duIGJveCBpbnNpZGUgCisJCU9wZW5NZWV0aW5ncyBVSSwgdGhlcmUgY2FuIGJlIGR1cGxpY2F0ZXMKKwkJSG93ZXZlciB0aGUgb3JkZXIgaW4gdGhlIFhNTCBzaG91bGQgYmUgY29ycmVjdCBjYXVzZSB0aGUgV2ViLWluc3RhbGxlci9DTEktSW5zdGFsbGVyCisJCXdpbGwgZGlzcGxheSB0aGUgdGltZXpvbmVzIGV4YWN0bHkgaW4gdGhlIG9yZGVyIG9mIHRoZSBYTUwuCisJCQorCQkyKSBuYW1lCisJCUEgY29tbW9uIG5hbWUgaW4gc2hvcnQKKwkJCisJCTMpIGxhYmVsCisJCUxvbmcgbmFtZSwgZGlzcGxheWVkIGluIFVJCisJCQorCQk0KSBpQ2FsCisJCXRoaXMgaXMgdGhlIGFjdHVhbCBuYW1lLCBPcGVuTWVldGluZ3Mgd2lsbCB1c2UgdG8gbWF0Y2ggYWdhaW4gSmF2YSdzIHRpbWV6b25lcyAKKwkJKGh0dHA6Ly9kb2NzLm9yYWNsZS5jb20vamF2YXNlLzYvZG9jcy9hcGkvamF2YS91dGlsL1RpbWVab25lLmh0bWwpCisJCQorCQl0byBnZXQgYWxsIGF2YWlsYWJsZSBpZCB0aGF0IGFyZSBhdmFpbGFibGUgaW4geW91ciBKYXZhIEpSRSBzZWU6CisJCWh0dHA6Ly9zdm4uYXBhY2hlLm9yZy9yZXBvcy9hc2Yvb3Blbm1lZXRpbmdzL3RydW5rL3NpbmdsZXdlYmFwcC9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC90aW1lem9uZS9UZXN0R2V0SWRzLmphdmEKKwkJCisJCUZvciB1cGRhdGluZyB0aGUgSlJFIHJ1bnRpbWUgd2l0aCBkaWZmZXJlbnQgdHotZmlsZSwgc2VlOgkJCisJCWh0dHA6Ly93d3cub3JhY2xlLmNvbS90ZWNobmV0d29yay9qYXZhL2phdmFzZS90aW1lem9uZXMtMTM3NTgzLmh0bWwKKwkgLS0+CisgICAgPHRpbWV6b25lIG9yZGVySWQ9IjAiIG5hbWU9IkV0Yy9HTVQrMTMiIGxhYmVsPSJTYW1vYSIgaUNhbD0iUGFjaWZpYy9BcGlhIiAvPgorCTx0aW1lem9uZSBvcmRlcklkPSIxIiBuYW1lPSJFdGMvR01UKzEyIChOZXcgWmVhbGFuZCkiIGxhYmVsPSJOZXcgWmVhbGFuZCIgaUNhbD0iUGFjaWZpYy9BdWNrbGFuZCIgLz4KKyAgICA8dGltZXpvbmUgb3JkZXJJZD0iMSIgbmFtZT0iRXRjL0dNVCsxMiIgbGFiZWw9IktpcmliYXRpIChHaWxiZXJ0IElzbGFuZHMpLCBGaWppLCBSdXNzaWEgKEthbWNoYXRrYSBLcmFpKSIgaUNhbD0iUGFjaWZpYy9GaWppIiAvPgorICAgIDx0aW1lem9uZSBvcmRlcklkPSIyIiBuYW1lPSJFdGMvR01UKzExIiBsYWJlbD0iVmxhZGl2b3N0b2ssIEthbWNoYXRrYSwgU29sb21vbiBJc2xhbmRzLCBOZXcgQ2FsZWRvbmlhIiBpQ2FsPSJBc2lhL1ZsYWRpdm9zdG9rIiAvPgorICAgIDx0aW1lem9uZSBvcmRlcklkPSIzIiBuYW1lPSJFdGMvR01UKzEwIChBdXN0cmFsaWEvTlNXKSIgbGFiZWw9IkF1c3RyYWxpYSAoTlNXLFN5ZG5leSxUYXNtYW5pYSksIFlha3V0c2siIGlDYWw9IkF1c3RyYWxpYS9TeWRuZXkiIC8+CisgICAgPHRpbWV6b25lIG9yZGVySWQ9IjMiIG5hbWU9IkV0Yy9HTVQrMTAgKEF1c3RyYWxpYS9RdWVlbnNsYW5kKSIgbGFiZWw9IlJ1c3NpYSAoWmFiYXlrYWxza3kgS3JhaSksIFBhcHVhIE5ldyBHdWluZWEsIEF1c3RyYWxpYSAoUXVlZW5zbGFuZCkiIGlDYWw9IkF1c3RyYWxpYS9RdWVlbnNsYW5kIiAvPgorICAgIDx0aW1lem9uZSBvcmRlcklkPSIzIiBuYW1lPSJFdGMvR01UKzEwIiBsYWJlbD0iTG9yZCBIb3dlIElzbGFuZCAtIEF1c3RyYWxpYSBHTVQrMTA6MzAiIGlDYWw9IkF1c3RyYWxpYS9Mb3JkX0hvd2UiIC8+CisgICAgPHRpbWV6b25lIG9yZGVySWQ9IjQiIG5hbWU9IkV0Yy9HTVQrOSAoSmFwYW4pIiBsYWJlbD0iSmFwYW4vS29yZWEgU3RhbmRhcmQgVGltZSwgSXJrdXRzaywgRWFzdCBUaW1vciIgaUNhbD0iQXNpYS9Ub2t5byIgLz4KKyAgICA8dGltZXpvbmUgb3JkZXJJZD0iNCIgbmFtZT0iRXRjL0dNVCs5IChBdXN0cmFsaWEtTm9ydGgpIiBsYWJlbD0iQXVzdHJhbGlhIChOb3RoZXJuIFRlcnJpdG9yeSxEYXJ3aW4pIEdNVCs5OjMwIiBpQ2FsPSJBdXN0cmFsaWEvRGFyd2luIiAvPgorICAgIDx0aW1lem9uZSBvcmRlcklkPSI0IiBuYW1lPSJFdGMvR01UKzkgKEF1c3RyYWxpYS1Tb3V0aCkiIGxhYmVsPSJBdXN0cmFsaWEgKFNvdXRoZXJuIFRlcnJpdG9yeSxBZGVsYWlkZSkgR01UKzk6MzAiIGlDYWw9IkF1c3RyYWxpYS9BZGVsYWlkZSIgLz4KKyAgICA8dGltZXpvbmUgb3JkZXJJZD0iNSIgbmFtZT0iRXRjL0dNVCs4IiBsYWJlbD0iQ2hpbmEgU3RhbmRhcmQgVGltZSwgS3Jhc25veWFyc2ssIFBoaWxpcHBpbmVzLCBTaW5nYXBvcmUiIGlDYWw9IkFzaWEvU2luZ2Fwb3JlIiAvPgorICAgIDx0aW1lem9uZSBvcmRlcklkPSI2IiBuYW1lPSJFdGMvR01UKzciIGxhYmVsPSJOb3Zvc2liaXJzaywgSW5kb2NoaW5hIFRpbWUsIFRoYWlsYW5kLCBWaWV0bmFtLCBKYWthcnRhIiBpQ2FsPSJBc2lhL0pha2FydGEiIC8+CisgICAgPHRpbWV6b25lIG9yZGVySWQ9IjciIG5hbWU9IkV0Yy9HTVQrNiIgbGFiZWw9Illla2F0ZXJpbmJ1cmcsIEFsbWF0eSwgQmFuZ2xhZGVzaCIgaUNhbD0iQXNpYS9ZZWthdGVyaW5idXJnIiAvPgorICAgIDx0aW1lem9uZSBvcmRlcklkPSI4IiBuYW1lPSJJU1QiIGxhYmVsPSJJbmRpYW4gU3RhbmRhcmQgVGltZSBHTVQrNS4zMCIgaUNhbD0iQXNpYS9Lb2xrYXRhIiAvPgorICAgIDx0aW1lem9uZSBvcmRlcklkPSI5IiBuYW1lPSJFdGMvR01UKzUiIGxhYmVsPSJVemJla2lzdGFuLCBQYWtpc3RhbiwgTWFsZGl2ZXMiIGlDYWw9IkFzaWEvS2FyYWNoaSIgLz4KKyAgICA8dGltZXpvbmUgb3JkZXJJZD0iMTAiIG5hbWU9IkFzaWEvS2FidWwiIGxhYmVsPSJLYWJ1bCBHTVQrNC4zMCAiIGlDYWw9IkFzaWEvS2FidWwiIC8+CisgICAgPHRpbWV6b25lIG9yZGVySWQ9IjExIiBuYW1lPSJFdGMvR01UKzQiIGxhYmVsPSJNb3Njb3csIFNhaW50IFBldGVyc2J1cmcsIEdlb3JnaWEsIEFybWVuaWEsIEF6ZXJiYWlqYW4sIFVuaXRlZCBBcmFiIEVtaXJhdGVzIiBpQ2FsPSJFdXJvcGUvTW9zY293IiAvPgorICAgIDx0aW1lem9uZSBvcmRlcklkPSIxMiIgbmFtZT0iQXNpYS9UZWhyYW4iIGxhYmVsPSJUZWhyYW4gR01UKzMuMzAiIGlDYWw9IkFzaWEvVGVocmFuIiAvPgorICAgIDx0aW1lem9uZSBvcmRlcklkPSIxMyIgbmFtZT0iRXRjL0dNVCszIiBsYWJlbD0iS2FsaW5pbmdyYWQsIE1pbnNrLCBJcmFxLCBTYXVkaSBBcmFiaWEiIGlDYWw9IkV1cm9wZS9LYWxpbmluZ3JhZCIgLz4KKyAgICA8dGltZXpvbmUgb3JkZXJJZD0iMTQiIG5hbWU9IkV0Yy9HTVQrMiIgbGFiZWw9IkZpbmxhbmQsIExpdGh1YW5pYSwgQmVsYXJ1cywgVWtyYWluZSwgUm9tYW5pYSwgQnVsZ2FyaWEiIGlDYWw9IkV1cm9wZS9IZWxzaW5raSIgLz4KKyAgICA8dGltZXpvbmUgb3JkZXJJZD0iMTQiIG5hbWU9IkV0Yy9HTVQrMiIgbGFiZWw9IkxpYnlhLCBFZ3lwdCwgU291dGggQWZyaWNhLCBaaW1iYWJ3ZSIgaUNhbD0iQWZyaWNhL0NhaXJvIiAvPgorICAgIDx0aW1lem9uZSBvcmRlcklkPSIxNSIgbmFtZT0iRXRjL0dNVCsxIiBsYWJlbD0iRnJhbmNlLCBHZXJtYW55LCBTcGFpbiwgSXRhbHkiIGlDYWw9IkV1cm9wZS9CZXJsaW4iIC8+CisgICAgPHRpbWV6b25lIG9yZGVySWQ9IjE1IiBuYW1lPSJFdGMvR01UKzEgKE5vcnRoIEFmcmljYSkiIGxhYmVsPSJBbmdvbGEsIENhbWVyb29uLCBOaWdlcmlhLCBUdW5pc2lhIiBpQ2FsPSJBZnJpY2EvVHVuaXMiIC8+CisgICAgPHRpbWV6b25lIG9yZGVySWQ9IjE2IiBuYW1lPSJFdGMvR01UIiBsYWJlbD0iSWNlbGFuZCwgVW5pdGVkIEtpbmdkb20sIElyZWxhbmQiIGlDYWw9IkV1cm9wZS9Mb25kb24iIC8+CisgICAgPHRpbWV6b25lIG9yZGVySWQ9IjE2IiBuYW1lPSJFdGMvR01UIChOb3J0aCBBZnJpY2EpIiBsYWJlbD0iQ8O0dGUgZCdJdm9pcmUsIEZhcm9lIElzbGFuZHMsIEdoYW5hLCBJY2VsYW5kLCBTZW5lZ2FsIiBpQ2FsPSJBZnJpY2EvRGFrYXIiIC8+CisgICAgPHRpbWV6b25lIG9yZGVySWQ9IjE3IiBuYW1lPSJFdGMvR01ULTEiIGxhYmVsPSJBem9yZXMsIENhcGUgVmVyZGUiIGlDYWw9IkF0bGFudGljL0NhcGVfVmVyZGUiIC8+CisgICAgPHRpbWV6b25lIG9yZGVySWQ9IjE4IiBuYW1lPSJFdGMvR01ULTIiIGxhYmVsPSJGZXJuYW5kbyBkZSBOb3JvbmhhIiBpQ2FsPSJBbWVyaWNhL05vcm9uaGEiIC8+CisgICAgPHRpbWV6b25lIG9yZGVySWQ9IjE5IiBuYW1lPSJFdGMvR01ULTMgKEJyYXppbCkiIGxhYmVsPSJCcmF6aWwgKEJyYXPDrWxpYSwgUmlvIGRlIEphbmVpcm8sIFPDo28gUGF1bG8pLCBtb3N0IG9mIEdyZWVubGFuZCwgVXJ1Z3VheSIgaUNhbD0iQW1lcmljYS9TYW9fUGF1bG8iIC8+CisgICAgPHRpbWV6b25lIG9yZGVySWQ9IjE5IiBuYW1lPSJFdGMvR01ULTMiIGxhYmVsPSJBcmdlbnRpbmEsIFBhcmFndWF5IiBpQ2FsPSJBbWVyaWNhL0J1ZW5vc19BaXJlcyIgLz4KKyAgICA8dGltZXpvbmUgb3JkZXJJZD0iMTkiIG5hbWU9IkV0Yy9HTVQtMzozMCIgbGFiZWw9IkNhbmFkYSBHTVQrMzozMCIgaUNhbD0iQ05UIiAvPgorICAgIDx0aW1lem9uZSBvcmRlcklkPSIyMCIgbmFtZT0iRXRjL0dNVC00IiBsYWJlbD0iTm92YSBTY290aWEsIERvbWluaWNhbiBSZXB1YmxpYywgUHVlcnRvIFJpY28sIFNhbnRpYWdvIiBpQ2FsPSJBbWVyaWNhL1NhbnRpYWdvIiAvPgorICAgIDx0aW1lem9uZSBvcmRlcklkPSIyMCIgbmFtZT0iRXRjL0dNVC00OjMwIiBsYWJlbD0iVmVuZXp1ZWxhIEdNVCs0OjMwIiBpQ2FsPSJBbWVyaWNhL0NhcmFjYXMiIC8+CisgICAgPHRpbWV6b25lIG9yZGVySWQ9IjIxIiBuYW1lPSJFdGMvR01ULTUgKE5ldyBZb3JrKSIgbGFiZWw9Ik90dGF3YSwgVG9yb250bywgTW9udHJlYWwsIEJvc3RvbiwgTmV3IFlvcmsiIGlDYWw9IkFtZXJpY2EvTmV3X1lvcmsiIC8+CisgICAgPHRpbWV6b25lIG9yZGVySWQ9IjIxIiBuYW1lPSJFdGMvR01ULTUiIGxhYmVsPSJDb2xvbWJpYSwgQ3ViYSwgRWN1YWRvciwgSGFpdGksIEphbWFpY2EsIFBhbmFtYSwgUGVydSIgaUNhbD0iQW1lcmljYS9KYW1haWNhIiAvPgorICAgIDx0aW1lem9uZSBvcmRlcklkPSIyMiIgbmFtZT0iRXRjL0dNVC01IChQYW5hbWEpIiBsYWJlbD0iUGFuYW1hIFBvcnQtYXUtUHJpbmNlIiBpQ2FsPSJBbWVyaWNhL1BhbmFtYSIgLz4KKyAgICA8dGltZXpvbmUgb3JkZXJJZD0iMjMiIG5hbWU9IkV0Yy9HTVQtNiAoQ2hpY2FnbykiIGxhYmVsPSJDaGljYWdvLCBEYWxsYXMiIGlDYWw9IkFtZXJpY2EvQ2hpY2FnbyIgLz4KKyAgICA8dGltZXpvbmUgb3JkZXJJZD0iMjQiIG5hbWU9IkV0Yy9HTVQtNiIgbGFiZWw9IkNvc3RhIFJpY2EgLCBFbCBTYWx2YWRvciwgR3VhdGVtYWxhLCBIb25kdXJhcyIgaUNhbD0iQW1lcmljYS9FbF9TYWx2YWRvciIgLz4KKyAgICA8dGltZXpvbmUgb3JkZXJJZD0iMjQiIG5hbWU9IkV0Yy9HTVQtNiAoSWxsaW5vaXMpIiBsYWJlbD0iQ2FuYWRhIChNYW5pdG9iYSksIFVuaXRlZCBTdGF0ZXMgKElsbGlub2lzLCBtb3N0IG9mIFRleGFzKSIgaUNhbD0iQW1lcmljYS9DaGljYWdvIiAvPgorICAgIDx0aW1lem9uZSBvcmRlcklkPSIyNSIgbmFtZT0iRXRjL0dNVC03IChQaG9lbml4KSIgbGFiZWw9IkFsYmVydGEsIENvbG9yYWRvLCBQaG9lbml4IiBpQ2FsPSJBbWVyaWNhL1Bob2VuaXgiIC8+CisgICAgPHRpbWV6b25lIG9yZGVySWQ9IjI2IiBuYW1lPSJFdGMvR01ULTcgKENvbG9yYWRvKSIgbGFiZWw9IkNhbmFkYSAoQWxiZXJ0YSksIE1leGljbyAoQ2hpaHVhaHVhKSwgVVNBIChDb2xvcmFkbykiIGlDYWw9IkFtZXJpY2EvRGVudmVyIiAvPgorICAgIDx0aW1lem9uZSBvcmRlcklkPSIyNiIgbmFtZT0iRXRjL0dNVC03IiBsYWJlbD0iQ2FuYWRhIChub3J0aGVhc3Rlcm4gQnJpdGlzaCBDb2x1bWJpYSksIE1leGljbyAoU29ub3JhKSwgVVNBIChBcml6b25hKSIgaUNhbD0iQW1lcmljYS9QaG9lbml4IiAvPgorICAgIDx0aW1lem9uZSBvcmRlcklkPSIyNyIgbmFtZT0iRXRjL0dNVC04IiBsYWJlbD0iVmFuY291dmVyLCBQb3J0bGFuZCwgTGFzIFZlZ2FzLCBDYWxpZm9ybmlhIiBpQ2FsPSJBbWVyaWNhL0xvc19BbmdlbGVzIiAvPgorICAgIDx0aW1lem9uZSBvcmRlcklkPSIyOCIgbmFtZT0iRXRjL0dNVC05IiBsYWJlbD0iQW5jaG9yYWdlLCBGYWlyYmFua3MsIEp1bmVhdSIgaUNhbD0iQW1lcmljYS9KdW5lYXUiIC8+CisgICAgPHRpbWV6b25lIG9yZGVySWQ9IjI4IiBuYW1lPSJFdGMvR01ULTkgKEFsYXNrYSkiIGxhYmVsPSJVbml0ZWQgU3RhdGVzIChtb3N0IG9mIEFsYXNrYSkiIGlDYWw9IlVTL0FsYXNrYSIgLz4KKyAgICA8dGltZXpvbmUgb3JkZXJJZD0iMjkiIG5hbWU9IkV0Yy9HTVQtMTAiIGxhYmVsPSJIYXdhaWkiIGlDYWw9IlBhY2lmaWMvSG9ub2x1bHUiIC8+Cis8L3RpbWV6b25lcz4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL3RpbWV6b25lcy54c2QgYi9XZWJDb250ZW50L2xhbmd1YWdlcy90aW1lem9uZXMueHNkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2OTNhYjMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L2xhbmd1YWdlcy90aW1lem9uZXMueHNkCkBAIC0wLDAgKzEsMzcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPCEtLQ0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAgDQorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICAgIAkgIA0KKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICB1bmRlciB0aGUgTGljZW5zZS4NCisgIA0KKy0tPg0KKzx4czpzY2hlbWEgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCI+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJ0aW1lem9uZXMiPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOnNlcXVlbmNlPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGltZXpvbmUiLz4NCisgICAgICA8L3hzOnNlcXVlbmNlPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0idGltZXpvbmUiPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpQ2FsIiB1c2U9InJlcXVpcmVkIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYWJlbCIgdXNlPSJyZXF1aXJlZCIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdXNlPSJyZXF1aXJlZCIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib3JkZXJJZCIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6aW50ZWdlciIvPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKzwveHM6c2NoZW1hPg0KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL3R1cmtpc2gueG1sIGIvV2ViQ29udGVudC9sYW5ndWFnZXMvdHVya2lzaC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjNkNjFlZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL3R1cmtpc2gueG1sCkBAIC0wLDAgKzEsNDY1MiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKworPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworVGhpcyBGaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5IHRoZSBMYW5ndWFnZUVkaXRvciAKK3RvIGFkZCBuZXcgTGFuZ3VhZ2VzIG9yIG1vZGlmeS9jdXN0b21pemUgaXQgdXNlIHRoZSBMYW5ndWFnZUVkaXRvciAKK3NlZSBodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvTGFuZ3VhZ2VFZGl0b3IuaHRtbCBmb3IgRGV0YWlscyAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjLS0+Cis8bGFuZ3VhZ2UgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeG1sbnM6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbj0ibGFuZ3VhZ2UueHNkIj4KKyAgPHN0cmluZyBpZD0iMSIgbmFtZT0iY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPmtvbmZlcmFuczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyIiBuYW1lPSJtZWV0aW5nIj4KKyAgICA8dmFsdWU+dG9wbGFudMSxPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMiIG5hbWU9ImNsYXNzcm9vbSI+CisgICAgPHZhbHVlPkV0a2lubGlrbGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQiIG5hbWU9InNldHRpbmdzIj4KKyAgICA8dmFsdWU+QXlhcmxhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1IiBuYW1lPSJiZW51dHplciI+CisgICAgPHZhbHVlPlByb2ZpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2IiBuYW1lPSJhZG1pbiI+CisgICAgPHZhbHVlPlnDtm5ldGltPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjciIG5hbWU9InN0b3AiPgorICAgIDx2YWx1ZT5EdXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOCIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+S2F5xLF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkiIG5hbWU9Im5vZmlsZSI+CisgICAgPHZhbHVlPkt1bGxhbsSxbGFiaWxpciBkb3N5YSB5b2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAiIG5hbWU9InJlY29yZGJ5dGVhY2hlciI+CisgICAgPHZhbHVlPsOWxJ9yZXRtZW5lIEfDtnJlIEthecSxdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMSIgbmFtZT0iY29ubmVjdGVkdXNlcnMiPgorICAgIDx2YWx1ZT5CYcSfbMSxIGt1bGxhbsSxY8SxbGFyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMiIgbmFtZT0ic3RhcnRjb25mIj4KKyAgICA8dmFsdWU+QmlyIGtvbmZlcmFucyBiYcWfbGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzIiBuYW1lPSJteW5hbWUiPgorICAgIDx2YWx1ZT5CZW5pbSBBZMSxbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNCIgbmFtZT0idmlkZW9jb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+R8O2csO8bnTDvGzDvCBLb25mZXJhbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUiIG5hbWU9ImltcG9ydCI+CisgICAgPHZhbHVlPkRvc3lhIFnDvGtsZW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2IiBuYW1lPSJyZWZyZXNoZmlsZXMiPgorICAgIDx2YWx1ZT5MaXN0ZXlpIFllbmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNyIgbmFtZT0idG9tYWluZmlsZSI+CisgICAgPHZhbHVlPkFuYSBEb3N5YXlhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4IiBuYW1lPSJuZXdwb2xsIj4KKyAgICA8dmFsdWU+WWVuaSBBbmtldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOSIgbmFtZT0ibmV3cG9sbGhlYWRlciI+CisgICAgPHZhbHVlPktvbmZlcmFucyBpw6dpbiB5ZW5pIGJpciBhbmtldC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAiIG5hbWU9InF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+U29ydTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEiIG5hbWU9InBvbGx0eXBlIj4KKyAgICA8dmFsdWU+QW5rZXQgdGlwaTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIiIG5hbWU9ImNyZWF0ZSI+CisgICAgPHZhbHVlPllhcmF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzIiBuYW1lPSJpbmZvbWVzc2FnZSI+CisgICAgPHZhbHVlPkJpbGdpOiBCYcSfbMSxIGhlciBrdWxsYW7EsWPEsSB5ZW5pIGFua2V0bGUgaWxnaWxpIGJpciBtZXNhaiBhbMSxci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQiIG5hbWU9ImNyZWF0cG9sbCI+CisgICAgPHZhbHVlPkJpciBhbmtldCB5YXJhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNSIgbmFtZT0iY2FuY2VsIj4KKyAgICA8dmFsdWU+xLBwdGFsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2IiBuYW1lPSJ5ZXNubyI+CisgICAgPHZhbHVlPkV2ZXQvSGF5xLFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3IiBuYW1lPSJudW1lcmljIj4KKyAgICA8dmFsdWU+U2F5xLFzYWwgMS0xMDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOCIgbmFtZT0icG9sbCI+CisgICAgPHZhbHVlPkFua2V0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5IiBuYW1lPSJtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+U29ydSBvbHXFn3R1cmFiaWxtZWsgacOnaW4gRMO8emVubGV5aWNpIG9sbWFuxLF6IGdlcmVrbWVrdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAiIG5hbWU9InZvdGUiPgorICAgIDx2YWx1ZT5PeXVudXoga2F5ZGVkaWxkaS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEiIG5hbWU9ImFscmVhZHl2b3RlZCI+CisgICAgPHZhbHVlPkJ1IGFua2V0IGnDp2luIHphdGVuIG95IGt1bGxhbm3EscWfdMSxbsSxei48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIiIG5hbWU9InZvdGluZyI+CisgICAgPHZhbHVlPk95bGEgITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMyIgbmFtZT0iYW5zd2VyIj4KKyAgICA8dmFsdWU+U2l6aW4geWFuxLF0xLFuxLF6OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNCIgbmFtZT0ieWVzIj4KKyAgICA8dmFsdWU+RXZldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNSIgbmFtZT0ibm8iPgorICAgIDx2YWx1ZT5IYXnEsXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYiIG5hbWU9InF1ZXN0aW9ud2FudCI+CisgICAgPHZhbHVlPlNvbnXDp2xhcsSxIGfDtnI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3IiBuYW1lPSJwb2xscmVzdWx0cyI+CisgICAgPHZhbHVlPkFua2V0IHNvbnXDp2xhcsSxPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4IiBuYW1lPSJxdWVzdGlvbiI+CisgICAgPHZhbHVlPlNvcnU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5IiBuYW1lPSJyZXN1bHRzIj4KKyAgICA8dmFsdWU+U29udcOnbGFyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MCIgbmFtZT0iYW5zd2VycyI+CisgICAgPHZhbHVlPkNldmFwbGFyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MSIgbmFtZT0ibm9wb2xsIj4KKyAgICA8dmFsdWU+QmHFn2xhbcSxxZ8gb2xhbiBhbmtldCB5b2suPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyIiBuYW1lPSJ2b3RpbmdzIj4KKyAgICA8dmFsdWU+T3lsYSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMiIG5hbWU9Im1lZXRpbmciPgorICAgIDx2YWx1ZT5Ub3BsYW50xLEgKGVuIGZhemxhIDQgeWVyKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NCIgbmFtZT0iY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPktvbmZlcmFucyAoZW4gZmF6bGEgNTAgeWVyKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NSIgbmFtZT0idHlwZSI+CisgICAgPHZhbHVlPlRpcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NiIgbmFtZT0icmVtYWluaW5nc2VhdHMiPgorICAgIDx2YWx1ZT5EacSfZXIgeWVybGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3IiBuYW1lPSJhbHJlYWR5Y2hvc2VuIj4KKyAgICA8dmFsdWU+SGFsaWhhesSxcmRhIHNlw6dpbGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgiIG5hbWU9ImVudGVyIj4KKyAgICA8dmFsdWU+Z2lyacWfPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5IiBuYW1lPSJtb2RsZWF2ZSI+CisgICAgPHZhbHVlPkTDvHplbmxleWljaSB0b3BsYW50xLF5xLEgdGVyayBldHRpLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MCIgbmFtZT0ic3lzdGVtbWVzc2FnZSI+CisgICAgPHZhbHVlPlNpc3RlbSBiaWxnaXNpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxIiBuYW1lPSJjaG9zc2VkZXZpY2UiPgorICAgIDx2YWx1ZT5BcmHDpyBzZcOnaW5pejwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MiIgbmFtZT0iY2hvb3NlY2FtIj4KKyAgICA8dmFsdWU+V2ViIEthbWVyYXPEsSBzZcOnaW5pejo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMiIG5hbWU9ImNob29zZW1pYyI+CisgICAgPHZhbHVlPk1pa3JvZm9uIHNlw6dpbml6OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NCIgbmFtZT0ib2siPgorICAgIDx2YWx1ZT50YW1hbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NSIgbmFtZT0iY2FuY2VsMiI+CisgICAgPHZhbHVlPmlwdGFsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2IiBuYW1lPSJyZWNvbmVlY3RuZWVkZWQiPgorICAgIDx2YWx1ZT5ZZW5pZGVuIGJhxJ9sYW5tYW7EsXogZ2VyZWttZWt0ZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTciIG5hbWU9ImVkaXRzZXR1cCI+CisgICAgPHZhbHVlPkF5YXJsYXLEsSBkw7x6ZW5sZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgiIG5hbWU9ImNvdXJzZSI+CisgICAgPHZhbHVlPkRlcnM6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5IiBuYW1lPSJsYW5ndWFnZSI+CisgICAgPHZhbHVlPkRpbDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAiIG5hbWU9Im9rMiI+CisgICAgPHZhbHVlPnRhbWFtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxIiBuYW1lPSJjYW5jZWwzIj4KKyAgICA8dmFsdWU+aXB0YWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIiIG5hbWU9ImNsZWFyd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPlRhaHRhecSxIHRlbWl6bGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMiIG5hbWU9ImNsZWFyd2hpdGVib2FyZHF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+WWVuaSByZXNpbSBla2xlbm1lZGVuIMO2bmNlIHRhaHRhbsSxbiB0ZW1pemxlbm1lc2luaSBpc3RpeW9yIG11c3VudXo/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0IiBuYW1lPSJkb250YXNrYWdhaW4iPgorICAgIDx2YWx1ZT5UZWtyYXIgc29ybWF5xLFuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1IiBuYW1lPSJubyI+CisgICAgPHZhbHVlPm5vPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2IiBuYW1lPSJlZGl0c2V0dXAyIj4KKyAgICA8dmFsdWU+QXlhcmxhcsSxIGTDvHplbmxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3IiBuYW1lPSJuZWVkY29uZmlybWF0aW9ud2hpdGVib2FyZCI+CisgICAgPHZhbHVlPlRhaHRhbsSxbiB0ZW1pemxlbm1lc2luZGVuIMO2bmNlIG9uYXkgYmHFn3Z1cnVzdS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgiIG5hbWU9InVzZXJpbmZvIj4KKyAgICA8dmFsdWU+S3VsbGFuxLFjxLEgQmlsZ2lzaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OSIgbmFtZT0iY2xlYXJkcmF3YXJlYSI+CisgICAgPHZhbHVlPsOHaXppbSBhbGFuxLFuxLEgdGVtaXpsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MCIgbmFtZT0idW5kbyI+CisgICAgPHZhbHVlPkdlcmkgYWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzEiIG5hbWU9InJlZG8iPgorICAgIDx2YWx1ZT7EsGxlcmkgYWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIiIG5hbWU9InNlbGVjdG9iamVjdCI+CisgICAgPHZhbHVlPkJpciBOZXNuZSBTZcOnaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMiIG5hbWU9InRleHQiPgorICAgIDx2YWx1ZT5NZXRpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NCIgbmFtZT0icGFpbnQiPgorICAgIDx2YWx1ZT5Cb3lhbWE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUiIG5hbWU9ImRyYXdsaW5lIj4KKyAgICA8dmFsdWU+w4dpemdpIMOnaXo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYiIG5hbWU9ImRyYXd1Ij4KKyAgICA8dmFsdWU+QWx0xLFuxLEgw6dpejwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NyIgbmFtZT0icmVjdCI+CisgICAgPHZhbHVlPkRpa2TDtnJ0Z2VuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4IiBuYW1lPSJlbGxpcHNlIj4KKyAgICA8dmFsdWU+RWxpcHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkiIG5hbWU9ImFycm93Ij4KKyAgICA8dmFsdWU+T2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAiIG5hbWU9ImRlbGV0ZWNob3NlbiI+CisgICAgPHZhbHVlPlNlw6dpbGkgw7bEn2V5aSBzaWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEiIG5hbWU9ImFwcGxpeW1vZCI+CisgICAgPHZhbHVlPkTDvHplbmxlbWUgacOnaW4gdXlndWxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyIiBuYW1lPSJhcHBseSI+CisgICAgPHZhbHVlPnV5Z3VsYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MyIgbmFtZT0iY2FuY2VsIj4KKyAgICA8dmFsdWU+aXB0YWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQiIG5hbWU9Im1vZCI+CisgICAgPHZhbHVlPkTDvHplbmxleWljaSBvbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NSIgbmFtZT0iY2xvc2UiPgorICAgIDx2YWx1ZT5rYXBhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NiIgbmFtZT0iaXRhbGljIj4KKyAgICA8dmFsdWU+ZcSfaWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODciIG5hbWU9ImJvbGQiPgorICAgIDx2YWx1ZT5rYWzEsW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgiIG5hbWU9IndhaXRpbmciPgorICAgIDx2YWx1ZT5CRUtMxLBZT1I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkiIG5hbWU9ImFwcGx5TWVzc2FnZSI+CisgICAgPHZhbHVlPkTDvHplbmxleWljaWxpayBpw6dpbiBiaXIga3VsbGFuxLFjxLEgYmVrbGVuaXlvcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAiIG5hbWU9ImFjY2VwdCI+CisgICAgPHZhbHVlPm9uYXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTEiIG5hbWU9InJlamVjdCI+CisgICAgPHZhbHVlPnJlZGRldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MiIgbmFtZT0iY2FuY2VsIj4KKyAgICA8dmFsdWU+aXB0YWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMiIG5hbWU9InNlbmRtb2RyZXF1ZXN0bWVzc2FnZSI+CisgICAgPHZhbHVlPkJ1IGt1bGxhbsSxY8SxbGFyIGnDp2luIGlzdGVrIGfDtm5kZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQiIG5hbWU9ImFjY2VwdCI+CisgICAgPHZhbHVlPk9uYXlsYW5kxLE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUiIG5hbWU9InJlamVjdCI+CisgICAgPHZhbHVlPlJlZGRlZGlsZGk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYiIG5hbWU9ImNoYW5nZW1vZCI+CisgICAgPHZhbHVlPkTDvHplbmxleWljaXlpIERlxJ9pxZ90aXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTciIG5hbWU9Im5vbm1vZGVycm9ybWVzc2FnZSI+CisgICAgPHZhbHVlPkJ1IGRlcnNpbiBkw7x6ZW5sZXlpY2lzaSBkZcSfaWxzaW5peiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgiIG5hbWU9Im1vZGVyYXRvciI+CisgICAgPHZhbHVlPkTDvHplbmxleWljaTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkiIG5hbWU9InJvb21mdWxsbWVzc2FnZSI+CisgICAgPHZhbHVlPkJ1IG9kYSBkb2x1LiBMw7x0ZmVuIGRhaGEgc29ucmEgeWVuaWRlbiBkZW5leWluaXouPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMCIgbmFtZT0iZWxsbGlwc2UiPgorICAgIDx2YWx1ZT5FbGlwczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEiIG5hbWU9ImNsb3NlIj4KKyAgICA8dmFsdWU+a2FwYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyIiBuYW1lPSJBdXRoRXJyb3IiPgorICAgIDx2YWx1ZT52ZXJpIGdpcmnFnyBoYXRhc8SxPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMyIgbmFtZT0ibWluNHVzZXJuYW1lIj4KKyAgICA8dmFsdWU+NCB5YSBkYSBkYWhhIGZhemxhIGthcmFrdGVyOyBiw7x5w7xrLWvDvMOnw7xrIGhhcmZlIGR1eWFybMSxITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQiIG5hbWU9Im1pbjRwYXNzIj4KKyAgICA8dmFsdWU+S3VsbGFuxLFjxLEgxZ9pZnJlc2kgZW4gYXogNCBrYXJha3RlciBvbG1hbMSxZMSxcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUiIG5hbWU9InVzZXJuYW1ldGFrZW4iPgorICAgIDx2YWx1ZT5CdSBrdWxsYW7EsWPEsSBhZMSxIGFsxLFubcSxxZ88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2IiBuYW1lPSJlbWFpbHRha2VuIj4KKyAgICA8dmFsdWU+QnUgZS1wb3N0YSBhZHJlc2kgemF0ZW4ga2F5xLF0bMSxPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNyIgbmFtZT0iZW1haWx0YWtlbiI+CisgICAgPHZhbHVlPlNpc3RlbSBoYXRhc8SxLiBMw7x0ZmVuIHNpc3RlbSB5w7ZuZXRpY2lsZXJpIGlsZSBiYcSfbGFudMSxeWEgZ2XDp2luaXouPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOCIgbmFtZT0iQXV0aGxvZ2luIj4KKyAgICA8dmFsdWU+T3R1cnVtIEHDpzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkiIG5hbWU9IkF1dGh1c2VyIj4KKyAgICA8dmFsdWU+S3VsbGFuxLFjxLEgQWTEsTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwIiBuYW1lPSJBdXRocGFzcyI+CisgICAgPHZhbHVlPsWeaWZyZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExIiBuYW1lPSJBdXRobGFuZyI+CisgICAgPHZhbHVlPkRpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTIiIG5hbWU9IkF1dGhyZWciPgorICAgIDx2YWx1ZT5HaXJpxZ8gWWFwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMyIgbmFtZT0icmVnZm9ybWhlYWQiPgorICAgIDx2YWx1ZT5LYXnEsXQgT2w8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0IiBuYW1lPSJyZWdmb3JtdXNlciI+CisgICAgPHZhbHVlPkt1bGxhbsSxY8SxIEFkxLE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNSIgbmFtZT0icmVnZm9ybXBhc3MiPgorICAgIDx2YWx1ZT7FnmlmcmU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNiIgbmFtZT0icmVnZm9ybXJldHlwZSI+CisgICAgPHZhbHVlPlllbmlkZW4gWWF6xLFuOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTciIG5hbWU9InJlZ2Zvcm1maXJzdG5hbWUiPgorICAgIDx2YWx1ZT5BZDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4IiBuYW1lPSJyZWdmb3JtbGFzdG5hbWUiPgorICAgIDx2YWx1ZT5Tb3lhZDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5IiBuYW1lPSJyZWdmb3JtbWFpbCI+CisgICAgPHZhbHVlPkUtcG9zdGE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMCIgbmFtZT0icmVnZm9ybXN0YXRlIj4KKyAgICA8dmFsdWU+w5xsa2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMSIgbmFtZT0icmVnZm9ybWJ0bjEiPgorICAgIDx2YWx1ZT5LYXnEsXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyIiBuYW1lPSJyZWdmb3JtYnRuMiI+CisgICAgPHZhbHVlPsSwcHRhbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMiIG5hbWU9IkF1dGhidG4yIj4KKyAgICA8dmFsdWU+w5x5ZSBkZcSfaWwgbWlzaW5pej88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5FdjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUiIG5hbWU9InVzZXJhZG1pbiI+CisgICAgPHZhbHVlPkt1bGxhbsSxY8SxbGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNiIgbmFtZT0iZ3JvdXBhZG1pbiI+CisgICAgPHZhbHVlPkdydXBsYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3IiBuYW1lPSJvcmdhZG1pbiI+CisgICAgPHZhbHVlPkt1cnVtbGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOCIgbmFtZT0iaGVhZGNvbmYiPgorICAgIDx2YWx1ZT5Ub3BsYW50xLEtT2RhbGFyxLE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5IiBuYW1lPSJjb25mX3B1YiI+CisgICAgPHZhbHVlPmhlcmtlc2UgYcOnxLFrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMCIgbmFtZT0iaGVhZF9vcmciPgorICAgIDx2YWx1ZT5LdXJ1bTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzEiIG5hbWU9ImJ0bl9lbnRlcnJvb20iPgorICAgIDx2YWx1ZT5naXJpxZ88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2xvZ2luIj4KKyAgICA8dmFsdWU+T3R1cnVtIEHDpzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMiIG5hbWU9InVzZXJhbHRlcnNlbGZfcGFzcyI+CisgICAgPHZhbHVlPsWeaWZyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQiIG5hbWU9InVzZXJhbHRlcnNlbGZfcGFzc3JldHlwZSI+CisgICAgPHZhbHVlPlllbmlkZW4geWF6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNSIgbmFtZT0idXNlcmFsdGVyc2VsZl9maXJzdG5hbWUiPgorICAgIDx2YWx1ZT5BZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYiIG5hbWU9InVzZXJhbHRlcnNlbGZfbGFzdG5hbWUiPgorICAgIDx2YWx1ZT5Tb3lhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzciIG5hbWU9InVzZXJhbHRlcnNlbGZfZW1haWwiPgorICAgIDx2YWx1ZT5FLVBvc3RhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOCIgbmFtZT0idXNlcmFsdGVyc2VsZl9iaXJ0aCI+CisgICAgPHZhbHVlPkRvxJ91bSBnw7xuw7w8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3N0cmVldG5vIj4KKyAgICA8dmFsdWU+Q2FkZGUvTm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Rvd24iPgorICAgIDx2YWx1ZT5aSVAvxZ5laGlyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MSIgbmFtZT0idXNlcmFsdGVyc2VsZl9zdGF0ZSI+CisgICAgPHZhbHVlPsOcbGtlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MiIgbmFtZT0idXNlcmFsdGVyc2VsZl9hZHJlc3Njb21tZW50Ij4KKyAgICA8dmFsdWU+QWRyZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2hlYWRlciI+CisgICAgPHZhbHVlPkt1bGxhbsSxY8SxIGJpbGdpc2k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0IiBuYW1lPSJzYXZlbWVudWJhcl9zYXZlbGFiZWwiPgorICAgIDx2YWx1ZT5rYXlkZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1IiBuYW1lPSJzYXZlbWVudWJhcl9zYXZlbGFiZWwiPgorICAgIDx2YWx1ZT5LYXlkZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2IiBuYW1lPSJhZG1pbl91c2VybGlzdF91c2VyX2lkIj4KKyAgICA8dmFsdWU+S3VsbGFuxLFjxLEga29kdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDciIG5hbWU9ImFkbWluX3VzZXJsaXN0X2xvZ2luIj4KKyAgICA8dmFsdWU+T3R1cnVtIGHDpzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgiIG5hbWU9ImFkbWluX3VzZXJsaXN0X2ZpcnN0bmFtIj4KKyAgICA8dmFsdWU+QWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5IiBuYW1lPSJhZG1pbl91c2VybGlzdF9sYXN0bmFtZSI+CisgICAgPHZhbHVlPlNveWFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MCIgbmFtZT0idHVybm92ZXJsaXN0X25leHQiPgorICAgIDx2YWx1ZT5zb25yYWtpbmkgZ8O2c3RlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTEiIG5hbWU9InR1cm5vdmVybGlzdF9wcmUiPgorICAgIDx2YWx1ZT7Dtm5jZWtpbmkgZ8O2c3RlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIiIG5hbWU9InNhdmVjb250ZW50X2NvbmZpcm0iPgorICAgIDx2YWx1ZT5rYXlkxLEgc2lsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MyIgbmFtZT0ic2F2ZWNvbnRlbnRfY29uZmlybV9jYW5jZWxfYnRuIj4KKyAgICA8dmFsdWU+aXB0YWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU0IiBuYW1lPSJzYXZlY29udGVudF9jb25maXJtX2NvbmZpcm1fYnRuIj4KKyAgICA8dmFsdWU+c2lsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NSIgbmFtZT0ic2F2ZW1lbnViYXJfYWRkbGFiZWwiPgorICAgIDx2YWx1ZT55ZW5pIGthecSxdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTYiIG5hbWU9InNhdmVtZW51YmFyX3JlbG9hZGxhYmVsIj4KKyAgICA8dmFsdWU+a2F5xLF0IHllbmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTciIG5hbWU9InNhdmVtZW51YmFyX2RlbGV0ZWxhYmVsIj4KKyAgICA8dmFsdWU+a2F5xLF0IHNpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTgiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9zdGF0dXMiPgorICAgIDx2YWx1ZT5kdXJ1bTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTkiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9zdGF0dXNJdGVtIj4KKyAgICA8dmFsdWU+ZGV2cmUgZMSxxZ/EsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjAiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9zdGF0dXNJdGVtIj4KKyAgICA8dmFsdWU+ZXRraW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYxIiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fb3JnYW5pc2F0aW9uIj4KKyAgICA8dmFsdWU+S3VydW1sYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYyIiBuYW1lPSJjYWxlbmRhcl9pY29ubGFiZWwiPgorICAgIDx2YWx1ZT50YWt2aW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTYzIiBuYW1lPSJzYXZld2luZG93X2J0biI+CisgICAgPHZhbHVlPmthcGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2NCIgbmFtZT0ib3JnYW5pc2F0aW9udGFibGVsaXN0X2lkcm93Ij4KKyAgICA8dmFsdWU+S3VydW0gS29kdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjUiIG5hbWU9Im9yZ2FuaXNhdGlvbnRhYmxlbGlzdF9uYW1lcm93Ij4KKyAgICA8dmFsdWU+QWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY2IiBuYW1lPSJ1c2VydmFsdWVfbGV2ZWxpZDEiPgorICAgIDx2YWx1ZT5LdWxsYW7EsWPEsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjciIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGlkMiI+CisgICAgPHZhbHVlPkTDvHplbmxleWljaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjgiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGlkMyI+CisgICAgPHZhbHVlPlnDtm5ldGljaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjkiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGxhYmVsIj4KKyAgICA8dmFsdWU+a3VsbGFuxLFjxLEgc2V2aXllc2k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTcwIiBuYW1lPSJvcmd2YWx1ZV9oZWFkZXIiPgorICAgIDx2YWx1ZT5LdXJ1bTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzEiIG5hbWU9Im9yZ3ZhbHVlX29yZ25hbWUiPgorICAgIDx2YWx1ZT5hZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzIiIG5hbWU9Im9yZ3ZhbHVlX29yZ25hbWUiPgorICAgIDx2YWx1ZT5rdXJ1bSBla2xlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MyIgbmFtZT0ib3JndmFsdWVfb3JnbmFtZSI+CisgICAgPHZhbHVlPmt1cnVtIGVrbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc0IiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luIj4KKyAgICA8dmFsdWU+aXB0YWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc1IiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luIj4KKyAgICA8dmFsdWU+ZWtsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzYiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW4iPgorICAgIDx2YWx1ZT5rdXJ1bXUga2FsZMSxcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzciIG5hbWU9Im9yZ3ZhbHVlX3VzZXJsaXN0Ij4KKyAgICA8dmFsdWU+a3VsbGFuxLFjxLE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc4IiBuYW1lPSJvcmd2YWx1ZV91c2VybGlzdGFkZCI+CisgICAgPHZhbHVlPmt1bGxhbsSxY8SxIGVrbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc5IiBuYW1lPSJvcmd2YWx1ZV91c2VybGlzdGRlbGV0ZSI+CisgICAgPHZhbHVlPmt1bGxhbsSxY8SxIHNpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODAiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5oZWFkZXIiPgorICAgIDx2YWx1ZT5rdWxsYW7EsWPEsSBla2xlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4MSIgbmFtZT0ib3JndmFsdWVfdXNlcndpbnNlYXJjaGZpZWxkIj4KKyAgICA8dmFsdWU+a3VsbGFuxLFjxLEgYXJhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4MiIgbmFtZT0ib3JndmFsdWVfdXNlcndpbnNlYXJjaGJ0biI+CisgICAgPHZhbHVlPmFyYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODMiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW5zZWFyY2hyZXN1bHQiPgorICAgIDx2YWx1ZT5rdWxsYW7EsWPEsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODQiIG5hbWU9ImxvZ2lud2luX2Nob29zZW9yZ2FuaXNhdGlvbiI+CisgICAgPHZhbHVlPkt1cnVtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NSIgbmFtZT0ibG9naW53aW5fY2hvb3Nlb3JnYW5pc2F0aW9uYnRuIj4KKyAgICA8dmFsdWU+Z2lyacWfPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NiIgbmFtZT0ibmF2aV9yb29tYWRtaW4iPgorICAgIDx2YWx1ZT5Lb25mZXJhbnMgT2RhbGFyxLE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg3IiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+S29uZmVyYW5zIE9kYWxhcsSxPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4OCIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPmtvZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODkiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5BZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTAiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5oZXJrZXNlIGHDp8SxazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTEiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5LdXJ1bWxhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTIiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5Ub3BsYW50xLEgT2RhbGFyxLE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkzIiBuYW1lPSJyb29tdmFsdWVfbmFtZSI+CisgICAgPHZhbHVlPkFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NCIgbmFtZT0icm9vbXZhbHVlX3R5cGUiPgorICAgIDx2YWx1ZT5UaXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk1IiBuYW1lPSJyb29tdmFsdWVfaXNwdWJsaWMiPgorICAgIDx2YWx1ZT5IZXJrZXNlIEHDp8SxazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTYiIG5hbWU9InJvb212YWx1ZV9jb21tZW50Ij4KKyAgICA8dmFsdWU+WW9ydW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk3IiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVpY29uIj4KKyAgICA8dmFsdWU+a2F5ZGV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5OCIgbmFtZT0id2hpdGVib2FyZF9vcGVuaWNvbiI+CisgICAgPHZhbHVlPnnDvGtsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTkiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2luaGVhZGVyIj4KKyAgICA8dmFsdWU+ZmFya2zEsSBrYXlkZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAwIiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbnRleHQiPgorICAgIDx2YWx1ZT5Eb3N5YSBhZMSxPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMSIgbmFtZT0iZmlsZXMiPgorICAgIDx2YWx1ZT5kb3N5YSBhZMSxPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMiIgbmFtZT0id2hpdGVib2FyZF9zYXZlYXN3aW5idG4xIj4KKyAgICA8dmFsdWU+aXB0YWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAzIiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbmJ0bjIiPgorICAgIDx2YWx1ZT5rYXlkZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA0IiBuYW1lPSJycGNlcnJvcndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5oYXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNSIgbmFtZT0ibG9hZHdtbF9oZWFkZXIiPgorICAgIDx2YWx1ZT55w7xrbGVuaXlvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDYiIG5hbWU9ImxvYWR3bWxfbWVzc3Nsb2FkIj4KKyAgICA8dmFsdWU+bmVzbmVsZXIgecO8a2xlbmRpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNyIgbmFtZT0ibG9hZHdtbF9tZXNzc3luYyI+CisgICAgPHZhbHVlPmlzdGVtY2lsZXIgc2Vua3Jvbml6ZSBvbHV5b3IsIGJla2xleWVuIGlzdGVtY2lsZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwOCIgbmFtZT0ibG9hZGltYWdlX21lc3Nsb2FkIj4KKyAgICA8dmFsdWU+xLBtYWogdmVyaXNpIHnDvGtsZW5peW9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwOSIgbmFtZT0ibG9hZGltYWdlX21lc3NzeW5jIj4KKyAgICA8dmFsdWU+aXN0ZW1jaWxlciBzZW5rcm9uaXplIG9sdXlvciwgYmVrbGV5ZW4gaXN0ZW1jaWxlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEwIiBuYW1lPSJsb2Fkd21sX2NvbmZpcm1oZWFkZXIiPgorICAgIDx2YWx1ZT7Dp2l6aW0gYWxhbsSxbsSxIHRlbWl6bGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjExIiBuYW1lPSJsb2Fkd21sX2NvbmZpcm1tZXNzIj4KKyAgICA8dmFsdWU+w6dpemltIGFsYW7EsW7EsSB0ZW1pemxlLCB0YWh0YWRha2kgdMO8bSBiaWxnaWxlciBzaWxpbmVjZWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEyIiBuYW1lPSJsb2Fkd21sX2NvbmZpcm1tZXNzMiI+CisgICAgPHZhbHVlPkRvc3lhecSxIHlvbGxhbWFkYW4gw7ZuY2Ugb25heWxhecSxbsSxejwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTMiIG5hbWU9InNlbmRfaW52aXRhdGlvbl9idG4iPgorICAgIDx2YWx1ZT5EYXZldCBnw7ZuZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNCIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX2hlYWRlciI+CisgICAgPHZhbHVlPkRhdmV0IGfDtm5kZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE1IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fc3ViamVjdCI+CisgICAgPHZhbHVlPktvbnU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE2IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fcmVjaXBpZW50Ij4KKyAgICA8dmFsdWU+QWzEsWPEsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTciIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9tZXNzYWdlIj4KKyAgICA8dmFsdWU+TWVzYWo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE4IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fYnRuX2NvbmZpcm0iPgorICAgIDx2YWx1ZT5Zb2xsYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTkiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9idG5fY2FuY2VsIj4KKyAgICA8dmFsdWU+xLBwdGFsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyMCIgbmFtZT0ic2VuZF9jaGF0X3RleHRfYnRuIj4KKyAgICA8dmFsdWU+Z8O2bmRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjEiIG5hbWU9Imludml0ZWRfdXNlcndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT5LdWxsYW7EsWPEsSB2ZXJpc2k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIyIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fc3ViamVjdCI+CisgICAgPHZhbHVlPkJ1IGtvbmZlcmFucyBpw6dpbiB0YWttYSBhZMSxbsSxejwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjMiIG5hbWU9Imludml0ZWRfdXNlcndpbl9sb2dpbiI+CisgICAgPHZhbHVlPlRha21hIEFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNCIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2ZpcnN0bmFtZSI+CisgICAgPHZhbHVlPkFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNSIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2xhc3RuYW1lIj4KKyAgICA8dmFsdWU+U295YWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI2IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fbWFpbCI+CisgICAgPHZhbHVlPkUtcG9zdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI3IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fbGFuZyI+CisgICAgPHZhbHVlPkRpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjgiIG5hbWU9Imludml0ZWRfdXNlcndpbl9lbnRlciI+CisgICAgPHZhbHVlPmdpcmnFnzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjkiIG5hbWU9Imludml0ZWRfdXNlcndpbl9lbnRlciI+CisgICAgPHZhbHVlPlnDvGtsZW5peW9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMCIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2VudGVyIj4KKyAgICA8dmFsdWU+VmVyaSB5w7xrbGVuaXlvciwgbMO8dGZlbiBiZWtsZXlpbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMxIiBuYW1lPSJ1c2VyX3JlZ2lzdGVyRmFsc2VQV0QiPgorICAgIDx2YWx1ZT5IYXRhbMSxIMWeaWZyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzIiIG5hbWU9InVzZXJfcmVnaXN0ZXJGYWxzZVBXREhlYWRlciI+CisgICAgPHZhbHVlPkzDvHRmZW4gZW4gYXogNiBrYXJha3RlciBpw6dlcmVuIGJpcmJpcmkgaWxlIGF5bsSxIGlraSDFn2lmcmUgZ2lyaW5pejwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzMiIG5hbWU9InVzZXJfcmVnaXN0ZXJNYWlsRXJyb3IiPgorICAgIDx2YWx1ZT5IYXRhbMSxIEUtcG9zdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM0IiBuYW1lPSJ1c2VyX3JlZ2lzdGVyTWFpbEVycm9ySGVhZGVyIj4KKyAgICA8dmFsdWU+SGF0YWzEsSBiaXIgZS1wb3N0YSBhZHJlc2kgZ2lyZGluaXo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM1IiBuYW1lPSJ1c2VyX3JlZ2lzdGVyU3VjY2VzcyI+CisgICAgPHZhbHVlPkthecSxdCBCYcWfYXLEsWzEsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzYiIG5hbWU9InVzZXJfcmVnaXN0ZXJTdWNjZXNzSGVhZGVyIj4KKyAgICA8dmFsdWU+SGVzYWLEsW7EsXogb2x1xZ90dXJ1bGR1LCBvdHVydW0gYcOnYWJpbGlyc2luaXouPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzNyIgbmFtZT0idXNlcl9zaGFyaW5nX21lc3NhZ2UiPgorICAgIDx2YWx1ZT7FnnUgYW5kYSBla3JhbsSxbsSxesSxIHBheWxhxZ9hbWF6c8SxbsSxei4gQmHFn2thIGJpcmkgaMOibGloYXrEsXJkYSBla3JhbsSxIHBheWxhxZ9txLHFny48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM4IiBuYW1lPSJ1c2VyX3NoYXJpbmdfbWVzc2FnZUhlYWRlciI+CisgICAgPHZhbHVlPlBheWxhxZ/EsW1hIGl6aW4geW9rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzOSIgbmFtZT0idXNlcl9kb1N0YXJ0U2NyZWVuVmlld2VyIj4KKyAgICA8dmFsdWU+RWtyYW7EsSBQYXlsYcWfPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0MCIgbmFtZT0ic2NyZWVuX3dhcm5CYW5kd2lkdGgiPgorICAgIDx2YWx1ZT5Ew7zFn8O8ayBCYcSfbGFudMSxIEjEsXrEsTogRWtyYW7EsW7EsXogc2Vua3Jvbml6ZSBlZGlsZW1peW9yLiBHw7Zyw7xudMO8bGVyIGF0bGFuYWNhay4gRcSfZXIgYnUgdXlhcsSxecSxIGFsbWF5YSBkZXZhbSBlZGVyc2VuaXosIGTDvHplbmxleWljaWRlbiBrYWxpdGV5aSBkw7zFn8O8cm1lc2luaSBpc3RleWViaWxpcnNpbml6LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDEiIG5hbWU9InNjcmVlbl91c2VybGFiZWwiPgorICAgIDx2YWx1ZT5Fa3JhbsSxOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDIiIG5hbWU9IndoaXRlYm9hcmRfdGFiX3BhaW50Ij4KKyAgICA8dmFsdWU+Qm95YW1hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0MyIgbmFtZT0id2hpdGVib2FyZF90YWJfZG9jdW1lbnQiPgorICAgIDx2YWx1ZT5Eb2vDvG1hbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDQiIG5hbWU9InRhYmJhcl9jaGF0aWNvbiI+CisgICAgPHZhbHVlPlNvaGJldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDUiIG5hbWU9InRhYmJhcl9maWxlc2ljb24iPgorICAgIDx2YWx1ZT5Eb3N5YWxhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDYiIG5hbWU9InRhYmJhcl9wYXJ0aWNpcGFudHNpY29uIj4KKyAgICA8dmFsdWU+w5x5ZWxlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDciIG5hbWU9InN3ZnByZXNlbnRhdGlvbl9saXN0c2F2ZW9yaWciPgorICAgIDx2YWx1ZT5PcmlqaW5hbCBkb2vDvG1hbsSxIGluZGlyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0OCIgbmFtZT0ic3dmcHJlc2VudGF0aW9uX2xpc3RzYXZlcGRmIj4KKyAgICA8dmFsdWU+UERGIGRva8O8bWFuxLEgaW5kaXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ5IiBuYW1lPSJzd2ZwcmVzZW50YXRpb25fbGlzdGxvYWRzd2YiPgorICAgIDx2YWx1ZT5TdW51bXUgdGFodGF5YSB5w7xrbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUwIiBuYW1lPSJuYXZpbWFpbl9jb25maWciPgorICAgIDx2YWx1ZT5Lb25maWfDvHJhc3lvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTEiIG5hbWU9IndoaXRlYm9hcmRfYm91bmRpbmdib3hfZHJhZyI+CisgICAgPHZhbHVlPkJ1IG5lc25leWkgYsSxcmFrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MiIgbmFtZT0id2hpdGVib2FyZF9ib3VuZGluZ2JveF9yZXNpemUiPgorICAgIDx2YWx1ZT5CdSBuZXNuZXlpIGJveXV0bGFuZMSxcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTMiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3pvb20iPgorICAgIDx2YWx1ZT4lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1NCIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfc2xpZGUiPgorICAgIDx2YWx1ZT5vZjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTUiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX2ZpcnN0c2xpZGUiPgorICAgIDx2YWx1ZT7EsGxrIHNheWZheWEgZ2l0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1NiIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfcHJlc2xpZGUiPgorICAgIDx2YWx1ZT7Dlm5jZWtpIHNheWZheWEgZ2l0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1NyIgbmFtZT0id2hpdGVib2FyZF9kb2N1bWVudHRvb2xiYXJfbmV4dHNsaWRlIj4KKyAgICA8dmFsdWU+U29ucmFraSBzYXlmYXlhIGdpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTgiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX2xhc3RzbGlkZSI+CisgICAgPHZhbHVlPlNvbiBzYXlmYXlhIGdpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTkiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3pvb21taW51cyI+CisgICAgPHZhbHVlPlV6YWtsYcWfdMSxciAtLTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjAiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3pvb21wbHVzIj4KKyAgICA8dmFsdWU+WWFrxLFubGHFn3TEsXIgKys8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYxIiBuYW1lPSJzYWx1dGF0aW9uX21yIj4KKyAgICA8dmFsdWU+U2F5xLFuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MiIgbmFtZT0ic2FsdXRhdGlvbl9taXNzIj4KKyAgICA8dmFsdWU+U2F5xLFuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2MyIgbmFtZT0ibmF2aW1haW5fY29uZmFkbWluIj4KKyAgICA8dmFsdWU+S29uZmlnw7xyYXN5b248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY0IiBuYW1lPSJjb25mdGFibGVfaGVhZGVySWQiPgorICAgIDx2YWx1ZT5LT0Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY1IiBuYW1lPSJjb25mdGFibGVfaGVhZGVya2V5Ij4KKyAgICA8dmFsdWU+QW5haHRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjYiIG5hbWU9ImNvbmZhZG1pbmZvcm1faGVhZGVyIj4KKyAgICA8dmFsdWU+S29uZmlnw7xyYXN5b248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY3IiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsa2V5Ij4KKyAgICA8dmFsdWU+QW5haHRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjgiIG5hbWU9ImNvbmZhZG1pbmZvcm1fbGFiZWx1cGRhdGVkIj4KKyAgICA8dmFsdWU+c29uIGfDvG5jZWxsZW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2OSIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbHVwZGF0ZWRieSI+CisgICAgPHZhbHVlPmfDvG5jZWxsZW1leWUgZ8O2cmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjcwIiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsY29tbWVudCI+CisgICAgPHZhbHVlPnlvcnVtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MSIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbGtleSI+CisgICAgPHZhbHVlPkRlxJ9lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzIiIG5hbWU9InR1cm5vdmVybGlzdF9tYXhyZXN1bHRzIj4KKyAgICA8dmFsdWU+b2Y8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjczIiBuYW1lPSJvcmdhbmlzYXRpb25fdXNlcnNoZWFkZXIiPgorICAgIDx2YWx1ZT5LdWxsYW7EsWPEsWxhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzQiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2ljb25kZWxldGUiPgorICAgIDx2YWx1ZT5rdWxsYW7EsWPEsXnEsSBrdXJ1bWRhbiBzaWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc1IiBuYW1lPSJvcmdhbmlzYXRpb25fdXNlcnNkZWxldGVkaGVhZCI+CisgICAgPHZhbHVlPnNpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzYiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2FscmVhZGFkZGVkIj4KKyAgICA8dmFsdWU+QnUga3VsbGFuxLFjxLEgaMOibGloYXrEsXJkYSBidSBncnVidW4gYmlyIMO8eWVzaS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc3IiBuYW1lPSJkYXNoYm9hcmRfbmV3c2hlYWRlciI+CisgICAgPHZhbHVlPkhhYmVybGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3OCIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua3NoZWFkZXIiPgorICAgIDx2YWx1ZT5IxLF6bMSxIEJhxJ9sYW50xLFsYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc5IiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rQ29uZiI+CisgICAgPHZhbHVlPktvbmZlcmFuc2EgZ2l0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MCIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua0F1ZGl0Ij4KKyAgICA8dmFsdWU+T2RpdG9yeXVtYSBnaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjgxIiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rc3VwcG9ydCI+CisgICAgPHZhbHVlPnlhcmTEsW0gdmUgRGVzdGVrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MiIgbmFtZT0iZGFzaGJvYXJkX3F1aWNraG9tZXBhZ2V1cmwiPgorICAgIDx2YWx1ZT5odHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MyIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbWFpbGluZ2xpc3R1cmwiPgorICAgIDx2YWx1ZT5odHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvbWFpbC1saXN0cy5odG1sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4NCIgbmFtZT0iZGFzaGJvYXJkX3JlcG9ydGJ1Z3MiPgorICAgIDx2YWx1ZT5IYXRhIGJpbGRpciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg1IiBuYW1lPSJkYXNoYm9hcmRfcnNzbGlzdGl0ZW1saW5rdGV4dCI+CisgICAgPHZhbHVlPmRhaGEgZmF6bGFzxLE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg2IiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5raG9tZXBhZ2VsYWJlbCI+CisgICAgPHZhbHVlPlByb2plIFdlYiBTaXRlc2kgKGh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg3IiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rbWFpbGluZ2xpc3RsYWJlbCI+CisgICAgPHZhbHVlPkt1bGxhbsSxY8SxIEUtUG9zdGEgTGlzdGVzaSAoaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnL21haWwtbGlzdHMuaHRtbCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjg4IiBuYW1lPSJsb2dpbl9yZW1lbWJlcnVzZXIiPgorICAgIDx2YWx1ZT5PdHVydW11IEhhdMSxcmxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4OSIgbmFtZT0ibWFpbl9uYXZpIj4KKyAgICA8dmFsdWU+xLDDp2VyaWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkwIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+QW5hIFNheWZhbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTEiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT5QbGFubGFubcSxxZ8gVG9wbGFudMSxbGFyxLFtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MiIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPlBsYW5sYW5txLHFnyBFdGtpbmxpa2xlcmltPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MyIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPkhlcmtlc2UgQcOnxLFrIFRvcGxhbnTEsWxhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTQiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT7DlnplbCBUb3BsYW50xLFsYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk1IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+SGVya2VzZSBBw6fEsWsgRXRraW5saWtsZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk2IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+w5Z6ZWwgRXRraW5saWtsZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk3IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+SGVya2VzZSBBw6fEsWsgxLDDp2VyaWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk4IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+w5Z6ZWwgxLDDp2VyaWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk5IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+S2nFn2lzZWwgxLDDp2VyaWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAwIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMSIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPkTDvHplbmxlbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAyIiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+RMO8emVubGV5aWNpbGlrIGnDp2luIG9uYXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAzIiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+QW5rZXRsZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA0IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+QmlyIGRvc3lhIHNlw6dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDUiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5BeWFybGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNiIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPkthbWVyYSB2ZSBNaWtyb2ZvbiBBeWFybGFyxLE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzA3IiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+VGFodGEgQXlhcmxhcsSxPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwOCIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPsOHxLFrxLHFnzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDkiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5PZGFsYXJhIGdlcmkgZMO2bjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTAiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT5PdHVydW11IEthcGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7FnmlmcmV5aSBVbnV0PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTIiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+xZ7EsGZyZXlpIFPEsWbEsXJsYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTMiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+RS1wb3N0YXlhIGfDtnJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxNCIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5PdHVydW1hIGfDtnJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxNSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT5Qb3N0YW7EsXo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE2IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPk90dXJ1bXVudXo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzE3IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPlPEsW7EsWZsYW1hIGJhxJ9sYW50xLFzxLEgaWxlIGUtcG9zdGEgZ8O2bmRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTgiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+RS1wb3N0YSBhZHJlc2kgYnVsdW5hbWFkxLEuIEthecSxdCBlc25hc8SxbmRhIGt1bGxhbmTEscSfxLFuxLF6IGUtcG9zdGEgYWRyZXNpbmkgZ2lyZGnEn2luaXpkZW4gZW1pbiBvbHVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTkiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+TMO8dGZlbiBiaXIgZS1wb3N0YSBhZHJlc2kgeWEgZGEgYmlyIGt1bGxhbsSxY8SxIGFkxLEgZ2lyaW5pejwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjAiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+QnUga3VsbGFuxLFjxLEgYWTEsSBpbGUgYmHEn2xhbm3EscWfIGJpciBrdWxsYW7EsWPEsSB5b2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIxIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPsOWemVsIGJpciBiYcSfbGFudMSxeWEgc2FoaXAgb2xhbiBiaXIgZS1wb3N0YSwgZS1wb3N0YSBhZHJlc2luaXplIHlvbGxhbm3EscWfIGR1cnVtZGEuIEzDvHRmZW4gcG9zdGEga3V0dW51enUga29udHJvbCBlZGluLiBFxJ9lciBlLXBvc3RhIG1lc2FqxLFuxLEgYWxhbWF6c2FuxLF6LCBsw7x0ZmVuIHBvc3RhIGt1dHVudXp1biBnZXJla3NpeiBwb3N0YSBheWFybGFyxLFuxLEga29udHJvbCBlZGluIHZlL3ZleWEgeWVuaWRlbiBkb8SfcnVsYW1hIG1lc2FqxLFuxLFuIGfDtm5kZXJpbG1lc2luaSBzYcSfbGF5xLFuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjIiIG5hbWU9ImVycm9ydHlwZSI+CisgICAgPHZhbHVlPkhhdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIzIiBuYW1lPSJlcnJvcnR5cGUiPgorICAgIDx2YWx1ZT5NZXNhajwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjQiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPkdlw6dlcnNpeiBLb211dC4gSGnDp2JpciBLdWxsYW7EsWPEsSBCdWx1bmFtYWTEsS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI1IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT7FnmlmcmVuaXppIFPEsWbEsXJsYXnEsW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI2IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5PdHVydW0gQcOnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNyIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+xZ5pZnJlIGRlxJ9pxZ90aXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI4IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT5ZZW5pIMWeaWZyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjkiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPsWeaWZyZW5pemkgeWVuaWRlbiBnaXJpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzAiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPkdpcm1pxZ8gb2xkdcSfdW51eiDFn2lmcmVsZXIgYmlyYmlyaSBpbGUgYXluxLEgZGXEn2lsLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzEiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPjQgeWEgZGEgZGFoYSBmYXpsYSBrYXJha3RlcjsgYsO8ecO8ay1rw7zDp8O8ayBoYXJmZSBkdXlhcmzEsSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMyIiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT7FnsSwZnJlIGJlbGlybGVuZGkuIMWedWFuIG90dXJ1bSBhw6dhYmlsaXJzaW5pei48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMzIiBuYW1lPSJycGNjYWxsYmFjayI+CisgICAgPHZhbHVlPlRBTUFNPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNCIgbmFtZT0icnBjZ2VuZXJhbGVycm9yIj4KKyAgICA8dmFsdWU+QmlsaW5tZXllbiBIYXRhLiBMw7x0ZmVuIGJ1IGR1cnVtdSBzaXN0ZW0gc29ydW1sdXN1bmEgcmFwb3IgZWRpbml6LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzUiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+S3VsbGFuxLFjxLEgYWTEsSBidWx1bmFtYWTEsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzYiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+R2XDp2Vyc2l6IMWeaWZyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzciIG5hbWU9ImxvZ291dCI+CisgICAgPHZhbHVlPk90dXJ1bSBiYcWfYXLEsXlsYSBrYXBhdMSxbGTEsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzgiIG5hbWU9InJlZ2lzdHJhdGlvbiI+CisgICAgPHZhbHVlPkdlcmlwbGFuIGthecSxdCBpxZ9sZW1pIGRldnJlIGTEscWfxLEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzOSIgbmFtZT0icmVnaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+R2XDp2Vyc2l6IEUtcG9zdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQwIiBuYW1lPSJyZWdpc3RyYXRpb24iPgorICAgIDx2YWx1ZT55aW5lbGVuZW4gZG9zeWEgYWTEsSwgbMO8dGZlbiBmYXJrbMSxIGJpciBkb3N5YSBhZHUgc2XDp2luaXo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQxIiBuYW1lPSJmaWxlYnJvd3NlciI+CisgICAgPHZhbHVlPmRvc3lhIGFkxLEgw6dvayBrxLFzYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDIiIG5hbWU9ImZpbGVicm93c2VyIj4KKyAgICA8dmFsdWU+QWRyZXMga2F5xLF0IGVkaWxlbWl5b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQzIiBuYW1lPSJ1c2VyYWRtaW4iPgorICAgIDx2YWx1ZT5LdWxsYW7EsWPEsSBla2xlbmRpIGZha2F0IGt1bGxhbsSxY8SxecSxIGJpciBrdXJ1bWEgYXRhbWFuxLF6IGdlcmVrbWVrdGUsIGFrc2kgaGFsZGUgb3R1cnVtIGHDp21hc8SxIG3DvG1rw7xuIG9sYW1heWFjYWsuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NCIgbmFtZT0iYWRtaW5mb3JtcyI+CisgICAgPHZhbHVlPlllbmkgS2F5xLF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+QnUgYWxhbiBrb2R1IGlsZSBiaXIgYWxhbiBidWx1bmFtYWTEsS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ2IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5CdSBhbGFuIGnDp2luIGV0aWtldCBidWx1bmFtYWTEsS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ3IiBuYW1lPSJlcnJvcm1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Zw7ZuZXRpY2kgb3R1cnVtdSBnZXJla21la3RlZGlyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0OCIgbmFtZT0ibWFpbm5hdmkiPgorICAgIDx2YWx1ZT5EaWwgRMO8emVubGV5aWNpc2k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ5IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5EaWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUwIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5FdGlrZXQtS29kdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTEiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkV0aWtldC1BZMSxPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1MiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+RGXEn2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1MyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+QWxhbiBkZcSfZXJsZXJpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1NCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+RXRpa2V0QWTEsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTUiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkV0aWtldERlxJ9lcmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU2IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5FdGlrZXQtS29kdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTciIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPlNhZGVjZSBldGlrZXRpIHNpbGRpbml6LCBhbGFuxLEgZGXEn2lsISBBbGFuxLEgc2lsZW1lenNpbml6OyBkacSfZXIgZGlsbGVyZGUgZXRpa2V0bGVyaSBidWx1bm1ha3RhLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTgiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkdlw6dlcnNpeiBFdGlrZXRLb2R1LiBEaWwgYWxhbsSxIGRlxJ9lciBrb2R1IChGaWVsZExhbmd1YWdlc3ZhbHVlc19JZCkgdmVyaXRhYmFuxLFuZGEgYnVsdW5hbcSxeW9yLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTkiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkJ1IGFsYW7EsSBzaWxlbWV6c2luaXouIFNhZGVjZSBldGlrZXRsZXJpIHNpbGViaWxpcnNpbml6LCBhbGFubGFyxLEgZGXEn2lsLiDFnnUgYW5kYSB5w7xrbGVubWnFnyBvbGFuIGJpciBldGlrZXQgeW9rLCBoZXJoYW5naSBiaXIgYWxhbiBzZcOnaWxtZW1pxZ8geWEgZGEgdGFuxLFtbGFubcSxxZ8gYnUgYWxhbiBpw6dpbiBidSBkaWxkZSBldGlrZXQgeW9rLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjAiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPmlocmHDpzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjEiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPkRlxJ9pxZ9pa2xpa2xlcmkgZ8O2cmViaWxtZW5peiBpw6dpbiBvdHVydW11IGthcGF0bWFuxLF6IGdlcmVrbWVrdGVkaXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+WWVuaSBkaWwgZWtsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjMiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPmRpbCBzaWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY0IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5ZZW5pIGRpbCBla2xlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2NSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+QWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY2IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5kaWwgZWtsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjciIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPlllZGVrbGVtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjgiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPmlsa2UgZ2l0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2OSIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+w7ZuY2VraW5lIGdpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzAiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPnNvbnJha2luZSBnaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzcxIiBuYW1lPSJ0dXJub3Zlcmxpc3QiPgorICAgIDx2YWx1ZT5zb251bmN1eWEgZ2l0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3MiIgbmFtZT0idmlkZW9ib3giPgorICAgIDx2YWx1ZT5rdWxsYW7EsWPEsSBrb251xZ91eW9yIChCeSBjbGlja2luZyBoZXJlIHlvdSBjYW4gZ2l2ZSBleGNsdXNpdmUgYXVkaW8gLyBtdXRlIHRoZSBtaWNyb3Bob25lIG9mIG90aGVycyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzczIiBuYW1lPSJ2aWRlb2JveCI+CisgICAgPHZhbHVlPnNlc2kgYcOnL2thcGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc0IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5TaXN0ZW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc1IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5BeWFybGFyxLFuxLF6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3NiIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+c2VsYW0sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3NyIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+UHJvZmlsaW5pemkgZMO8emVubGV5aW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc4IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5ZZW5pIE1lc2FqOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzkiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPlllbmkgcmVzaW0gecO8a2xlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4MCIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5LdWxsYW7EsWPEsSB2ZXJpc2kgLSDEsGhyYcOnIEV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4MSIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5Uw7xtIGt1cnVtbGFyIGRhaGEgw7ZuY2VkZW4gb2x1xZ90dXJ1bG11xZ8gb2xtYWzEsSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgyIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPmlocmHDpyAoZXhwb3J0KSBpxZ9sZW1pbmUgYmHFn2xhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4MyIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5LdXJ1bWEgZ8O2cmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg0IiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPmlocmHDpyAoZXhwb3J0KSBpxZ9sZW1pbmUgYmHFn2xhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NSIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT5LdWxsYW7EsWPEsSB2ZXJpc2kgLSBJbXBvcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg2IiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPnVzZXJzLnhtbCBkb3N5YXPEsW7EsSBzZcOnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+aXRoYWwgZXQgKGltcG9ydCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg4IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5YTUwgb2xhcmFrIGlocmHDpyBldCAtIEJ1IGRvc3lhbGFyIMWfdSBhbWHDp2xhciBpw6dpbiBrdWxsYW7EsWxhYmlsaXI6IC0gUHJvamV5ZSBrYXTEsWxtYWsgLSBCaWxnaWxlcmkgYmHFn2thIGJpciBzaXN0ZW1lIGFrdGFybWFrIC0gWWVkZWtsZW1lIC0gw5Z6ZWxsZcWfdGlybWUgLSBCaXIgc29ucmFraSB5w7xrbGVtZWRlIGRpbCBrbGFzw7Zyw7xuw7xuIGnDp2luZSBrb3ltYWsgacOnaW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4OSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+xLB0aGFsIChpbXBvcnQpIGV0bWVrIGlzdGVkacSfaW5peiBkaWwgZG9zeWFzxLFuxLEgc2XDp2luaXouIEHDp8SxbGFuIGt1dHVkYW4gZG/En3J1IGRpbGkgc2XDp2luaXohIERvc3lhbsSxbiBhZMSxIMO2bmVtbGkgZGXEn2lsZGlyLCBidSBkaWxpbiBpw6dpbmUgaXRoYWwgZWRpbGVjZWt0aXIhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5MCIgbmFtZT0iaW1wb3J0d2luZG93Ij4KKyAgICA8dmFsdWU+aXRoYWwgZXQgLSBkb3N5YSBzZcOnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5MSIgbmFtZT0icmVjb3JkaW5nc2F2ZXdpbiI+CisgICAgPHZhbHVlPkZhcmtsxLEga2F5ZGV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5MiIgbmFtZT0icmVjb3JkaW5nc2F2ZXdpbiI+CisgICAgPHZhbHVlPkFkOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTMiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT5Zb3J1bTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk0IiBuYW1lPSJyZWNvcmRpbmdzYXZld2luIj4KKyAgICA8dmFsdWU+a2F5ZGV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+S2F5xLF0bGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NiIgbmFtZT0icmVjb3JkZXIiPgorICAgIDx2YWx1ZT5LYXnEsXQgR8O2csO8bnTDvGxleWljaXNpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NyIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+R2VuZWwgKGhlcmtlc2UgYcOnxLFrKSB2ZSDDlnplbCBPZGFsYXLEsW4ga2F5xLF0bGFyxLE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk4IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5LdWxsYW7EsWPEsWxhciA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5OSIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+S2F0xLFsYW5sYXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMCIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMSIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+QnUgb2RhZGFraSBrdWxsYW7EsWPEsWxhcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAyIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT55ZW5pbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAzIiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT5CdSBvZGEgZG9sdS4gQmlyIGthw6cgZGFraWthIGnDp2luZGUgeWVuaWRlbiBkZW5leWluaXouPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNCIgbmFtZT0icm9vbXNMaXN0Ij4KKyAgICA8dmFsdWU+RGV0YXlsxLEgYmlsZ2kgacOnaW4gYmlyIG9kYW7EsW4gw7x6ZXJpbmUgdMSxa2xhecSxbsSxejwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDUiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPkJ1IG9kYW7EsW4gacOnaW5kZWtpIGt1bGxhbsSxY8SxbGFyIGlsZSBzb2hiZXQgZXQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwNiIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+T2RhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDciIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPkJ1IG9kYWRha2kga3VsbGFuxLFjxLFsYXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwOCIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+ZGVuIGJlcmk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwOSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+a2F5ZMSxIG95bmF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMCIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+VXp1bmx1azo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDExIiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5UYXJpaDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDEyIiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5LYXlkZWRpY2kgS2lwaSEgSGnDp2JpciBheWFyxLEgZGXEn2nFn3RpcmVtZXpzaW5peiwgYnUga2F5ZGVkaWxtacWfIGJpciBkb3N5YWTEsXIhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMyIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+QnUga2F5ZMSxIG9uYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE0IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT5PeW5hdCAvIER1cmR1cjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTUiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPktheWTEsSBiYcWfbGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxNiIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+a2F5ZMSxIGR1cmR1cjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTciIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPkthecSxdDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE4IiBuYW1lPSJyZWNvcmRfZXJyb3JfbXNnIj4KKyAgICA8dmFsdWU+xZ51IGFuIHphdGVuIGJpcmkga2F5xLF0dGE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxOSIgbmFtZT0icmVjb3JkX21lc3NhZ2UiPgorICAgIDx2YWx1ZT5LYXnEsXQhIEt1bGxhbsSxY8SxeWEgZ8O2cmU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyMCIgbmFtZT0icmVjb3JkX2NhbmNlbCI+CisgICAgPHZhbHVlPmlwdGFsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyMSIgbmFtZT0icmVjb3JkX2NhbmNhbF90b29sdGlwIj4KKyAgICA8dmFsdWU+S2F5xLF0IGlwdGFsIGVkaWxlY2VrIHZlIGtheWRlZGlsbWV5ZWNlay48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIyIiBuYW1lPSJjYW5jZWxfZGlhbG9nX3Jlc3VtZSI+CisgICAgPHZhbHVlPmRldmFtIGV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyMyIgbmFtZT0iY2FuY2VsX2RpYWxvZ19yZXN1bWVfdG9vbHRpcCI+CisgICAgPHZhbHVlPkJ1IHBlbmNlcmV5aSBrYXBhdCB2ZSBrYXlkYSBkZXZhbSBldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjQiIG5hbWU9InBhaW50dG9vbHNfZWxsaXBzZV9jb2xvciI+CisgICAgPHZhbHVlPsOHaXpnaSByZW5naW5pIGRlxJ9pxZ90aXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI1IiBuYW1lPSJjb2xvcnBpY2tlcl9oZWFkIj4KKyAgICA8dmFsdWU+UmVuayBzZcOnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyNiIgbmFtZT0icGFpbnR0b29sc19saW5lX2Rpc2FibGUiPgorICAgIDx2YWx1ZT7Dh2l6Z2kgcmVuZ2luaSBEZXZyZSBExLHFn8SxIELEsXJhayAvIEV0a2lubGXFn3RpcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjciIG5hbWU9InBhaW50dG9vbHNfZmlsbF9kaXNhYmxlIj4KKyAgICA8dmFsdWU+xLDDpyByZW5naSBkZcSfacWfdGlyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyOCIgbmFtZT0icGFpbnR0b29sc19saW5lX2Rpc2FibGUiPgorICAgIDx2YWx1ZT7EsMOnIHJlbmdpIERldnJlIETEscWfxLEgQsSxcmFrIC8gRXRraW5sZcWfdGlyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyOSIgbmFtZT0iY2hhbmdlX3dpZHRoX2Fycm93X2Rvd25fc2xpZGVyIj4KKyAgICA8dmFsdWU+w4dpemdpIGdlbmnFn2xpxJ9pbmkgZGXEn2nFn3RpcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzAiIG5hbWU9ImNsb3NlX3NtYWxsX3BvcHVwcyI+CisgICAgPHZhbHVlPmthcGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzMSIgbmFtZT0icGFpbnRfdG9vbF9sZXR0ZXIiPgorICAgIDx2YWx1ZT5ZYXrEsSB0aXBpbmkgZGXEn2nFn3RpcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzIiIG5hbWU9InJlY29yZGluZ3NsaXN0X2RlbGV0ZSI+CisgICAgPHZhbHVlPktheWTEsSBTaWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMzIiBuYW1lPSJyZWNvcmRpbmdzbGlzdF9yZWNvcmRlZEJ5R3Vlc3QiPgorICAgIDx2YWx1ZT5NaXNhZmlyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNCIgbmFtZT0icmVjb3JkaW5nc2xpc3RfcmVjb3JkZWRieSI+CisgICAgPHZhbHVlPkfDtnJlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzUiIG5hbWU9InJlY29yZGluZ3NfdGFibGVfaGVhZF9uYW1lIj4KKyAgICA8dmFsdWU+QWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM2IiBuYW1lPSJyZWNvcmRpbmdzX3RhYmxlX2hlYWRfcm9vbSI+CisgICAgPHZhbHVlPk9kYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzciIG5hbWU9InJlY29yZGluZ3NfdGFibGVfaGVhZF9kYXRlIj4KKyAgICA8dmFsdWU+VGFyaWg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM4IiBuYW1lPSJyZWNvcmRfc3RhcnRfY2FuY2VsIj4KKyAgICA8dmFsdWU+aXB0YWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM5IiBuYW1lPSJyZWNvcmRfc3RhcnRfc3RhcnQiPgorICAgIDx2YWx1ZT5iYcWfbGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MCIgbmFtZT0iZmlsZXNicm93c2VyX3RhYmxlX2hlYWRfbmFtZSI+CisgICAgPHZhbHVlPkFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MSIgbmFtZT0iZmlsZXNicm93c2VyX3RhYmxlX2hlYWRfZGF0ZSI+CisgICAgPHZhbHVlPlRhcmloPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MiIgbmFtZT0iY2hhdF9jbGVhcl9oaXN0b3J5Ij4KKyAgICA8dmFsdWU+U3VudWN1IHNvaGJldCBrYXnEsXRsYXLEsW7EsSBzaWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQzIiBuYW1lPSJjaGF0X292ZXJhbGxfaGVhZGVyIj4KKyAgICA8dmFsdWU+U29oYmV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NCIgbmFtZT0iY2hhdF9zZW5kX2J0biI+CisgICAgPHZhbHVlPk1lc2FqIHlvbGxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NSIgbmFtZT0iY2hhdF9lbW90X2J0biI+CisgICAgPHZhbHVlPlnDvHogxLBmYWRlbGVyaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDYiIG5hbWU9ImNoYXRfZW1vdF93aW4iPgorICAgIDx2YWx1ZT7EsGZhZGVsZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ3IiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5ZYXnEsW5sYW5txLHFnyBBcmHDp2xhcsSxIFNlw6c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ4IiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT5TZXMgdmUgR8O2csO8bnTDvDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDkiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPlNhZGVjZSBTZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUwIiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT5TYWRlY2UgR8O2csO8bnTDvDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTEiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPlNlcyBHw7Zyw7xudMO8IHlvayAoc2FiaXQgcmVzaW0pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1MiIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2luZm9fdGV4dCI+CisgICAgPHZhbHVlPkJpbGdpc2F5YXLEsW7EsXogdGFyYWbEsW5kYW4geWF5xLFubGFuYWJpbGVjZWsgb2xhbiBzZXMgLyBnw7Zyw7xudMO8IGJ1bHVubWFtYWt0YWTEsXIsIGJ1bnVuIHllcmluZSBwcm9maWxpbml6ZGUgeWVyIGFsYW4gcmVzaW0ga3VsbG7EsWxhY2FrdMSxci4gQnUgc2XDp2VuZcSfaSBiYW50IGdlbmnFn2xpxJ9pbml6ZGUgYmlyIHNvcnVuIHZhcnNhIHlhIGRhIMSwbnRlcm5ldCBiYcSfbGFudMSxbsSxeiDDp29rIHlhdmHFn3NhIHRlcmNpaCBlZGluaXouPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1MyIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9tb25kYXkiPgorICAgIDx2YWx1ZT5QWlQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU0IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3R1ZXNkYXkiPgorICAgIDx2YWx1ZT5TQUw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU1IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3dlZG5lc2RheSI+CisgICAgPHZhbHVlPsOHQVI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU2IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3RodXJzZGF5Ij4KKyAgICA8dmFsdWU+UEVSPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NyIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9mcmlkYXkiPgorICAgIDx2YWx1ZT5DVU08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU4IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3NhdHVyZGF5Ij4KKyAgICA8dmFsdWU+Q01UPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1OSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9zdW5kYXkiPgorICAgIDx2YWx1ZT5QQVo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYwIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX21vbmRheSI+CisgICAgPHZhbHVlPlBhemFydGVzaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjEiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfVHVlc2RheUxhYmVsIj4KKyAgICA8dmFsdWU+U2FsxLE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYyIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1dlZG5lc2RheUxhYmVsIj4KKyAgICA8dmFsdWU+w4dhcsWfYW1iYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjMiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfVGh1cnNkYXlMYWJlbCI+CisgICAgPHZhbHVlPlBlcsWfZW1iZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjQiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfRnJpZGF5TGFiZWwiPgorICAgIDx2YWx1ZT5DdW1hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NSIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9TYXR1cmRheUxhYmVsIj4KKyAgICA8dmFsdWU+Q3VtYXJ0ZXNpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NiIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9TdW5kYXlMYWJlbCI+CisgICAgPHZhbHVlPlBhemFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NyIgbmFtZT0iY2FsZW5kYXJfd2Vla251bWJlcl9oZWFkZXIiPgorICAgIDx2YWx1ZT5USDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjgiIG5hbWU9ImNhbGVuZGFyX3dlZWtudW1iZXJfaGVhZGVyVG9vbHRpcCI+CisgICAgPHZhbHVlPlRha3ZpbSBoYWZ0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjkiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5PY2FrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3MCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPsWedWJhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzEiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5NYXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3MiIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPk5pc2FuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3MyIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPk1hecSxczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzQiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5IYXppcmFuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3NSIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPlRlbW11ejwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzYiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5BxJ91c3RvczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzciIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5FeWzDvGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDc4IiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+RWtpbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzkiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT5LYXPEsW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgwIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+QXJhbMSxazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODEiIG5hbWU9ImNhbGVuZGFyd2luX2hlYWRlciI+CisgICAgPHZhbHVlPlRha3ZpbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODIiIG5hbWU9InJvb21hZG1pbl9sYWJlbE51bWJlck9mUGFydGljaXBhbnRzIj4KKyAgICA8dmFsdWU+S2F0xLFsxLFtY8SxbGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4MyIgbmFtZT0icm9vbVZhbHVlX2FkdmFuY2VkU2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NaXphbnBhaiBBeWFybGFyxLFuxLEgR8O2c3RlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODQiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfdmlkZW9YIj4KKyAgICA8dmFsdWU+WCB8IFk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg1IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3ZpZGVvWSI+CisgICAgPHZhbHVlPkdlbmnFn2xpayB8IFnDvGtzZWtsaWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg2IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0Ij4KKyAgICA8dmFsdWU+VmlkZW8tR8O2c3RlcmljaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0ODciIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfbW9kIj4KKyAgICA8dmFsdWU+RMO8emVubGV5aWNpLUfDtnN0ZXJpY2k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg4IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X21vZF9wb3MiPgorICAgIDx2YWx1ZT5YPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4OSIgbmFtZT0icm9vbUFkbWluX2xheW91dF93aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+VGFodGEtR8O2c3RlcmljaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTAiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZF9zaG93Ij4KKyAgICA8dmFsdWU+RXRraW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkxIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmRfcG9zIj4KKyAgICA8dmFsdWU+WCB8IFk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkyIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5HZW5pxZ9saWsgfCBZw7xrc2VrbGlrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5MyIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlcyI+CisgICAgPHZhbHVlPkRvc3lhbGFyLFNvaGJldCxLYXTEsWzEsW1jxLEtR8O2c3RlcmljaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTQiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXNfc2hvdyI+CisgICAgPHZhbHVlPkV0a2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NSIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlc19wb3MiPgorICAgIDx2YWx1ZT5YIHxZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NiIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlcyI+CisgICAgPHZhbHVlPkdlbmnFn2xpayB8IFnDvGtzZWtsaWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk3IiBuYW1lPSJtb2RlcmF0b3JfZ29uZV9tZXNzYWdlIj4KKyAgICA8dmFsdWU+RMO8emVubGV5aWNpIG9kYXnEsSB0ZXJrIGV0dGkuIMWedSBhbmRhIHN1bnVtIHlhcGFuIGtpbXNlIHlvay4gRMO8emVubGV5aWNpbGlrIGnDp2luIGJhxZ92dXJ1ZGEgYnVsdW5hYmlsaXJzaW5peiB5YSBkYSBiZWtsZXllYmlsaXJzaW5pei48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk4IiBuYW1lPSJtb2RlcmF0b3JfbWVzc2FnZV9ldmVudF9ub19tb2QiPgorICAgIDx2YWx1ZT5PZGFkYSBiaXIgRMO8emVubGV5aWNpIHlvaywgZmFrYXQgYmF6xLEga2F0xLFsxLFtY8SxbGFyIHZhci4gRMO8emVubGV5aWNpbGlrIGnDp2luIGJhxZ92dXJ1ZGEgYnVsdW5hYmlsaXJzaW5peiB5YSBkYSBiZWtsZXllYmlsaXJzaW5pei48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDk5IiBuYW1lPSJmZWVkYmFja190ZW1wbGF0ZV9zdWJqZWN0Ij4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIGdlcmliaWxkaXJpbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDAiIG5hbWU9Imludml0YXRpb25fdGVtcGxhdGVfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSAtIERhdmV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwMSIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X2Zyb20iPgorICAgIDx2YWx1ZT5LdWxsYW7EsWPEsWRhbiBNZXNhajo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAyIiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfbWVzc2FnZSI+CisgICAgPHZhbHVlPk1lc2FqOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDMiIG5hbWU9Imludml0YXRpb25fdGV4dF9jbGlja190ZXh0Ij4KKyAgICA8dmFsdWU+VG9wbGFudMSxeWEga2F0xLFsbWFrIGnDp2luIGxpbmtlIHTEsWtsYXnEsW7EsXo6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwNCIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X2NsaWNrX3RleHRfbGluayI+CisgICAgPHZhbHVlPk9kYXlhIGdpcm1layBpw6dpbiBidXJheWEgdMSxa2xhecSxbsSxejwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDUiIG5hbWU9Imludml0YXRpb25fdGV4dF9jbGlja190ZXh0X2hlbHAiPgorICAgIDx2YWx1ZT5CYcSfbGFudMSxIChsaW5rKSBpbGUgaWxnaWxpIHByb2JsZW1pbml6IHZhcnNhLCBsw7x0ZmVuIGJhxJ9sYW50xLF5xLEga29weWFsYXlhcmFrIHRhcmF5xLFjxLFuxLF6xLFuIGFkcmVzIMOndWJ1xJ91bmEgeWFwxLHFn3TEsXLEsW7EsXo6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwNiIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X2hlYWQiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgS2F5xLF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwNyIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X2hlYWQyIj4KKyAgICA8dmFsdWU+S3VsbGFuxLFjxLEgdmVyaWxlcmluaXo6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwOCIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X3VzZXJuYW1lIj4KKyAgICA8dmFsdWU+S3VsbGFuxLFjxLEgQWTEsTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA5IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfcGFzcyI+CisgICAgPHZhbHVlPsWeaWZyZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTEwIiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfbWFpbCI+CisgICAgPHZhbHVlPkUtcG9zdGE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxMSIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X2J5ZSI+CisgICAgPHZhbHVlPiRBUFBfTkFNRS1UYWvEsW3EsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTIiIG5hbWU9InJlZ2lzdGVyX21haWxfc3ViamVjdCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSBLYXnEsXQgT2w8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTEzIiBuYW1lPSJyZXNldF9wYXNzd29yZF90ZW1wbGF0ZV9oZWFkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIC0gxZ5pZnJlIFPEsWbEsXJsYTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTQiIG5hbWU9InJlc2V0X3Bhc3N3b3JkX3RlbXBsYXRlX3Rlc3RfbGluayI+CisgICAgPHZhbHVlPlllbmkgYmlyIMWfaWZyZSBnaXJtZWsgacOnaW4gYmHEn2xhbnTEsXlhIHTEsWtsYXnEsW7EsXo6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxNSIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfdGV4dDJfbGluayI+CisgICAgPHZhbHVlPlllbmkgYmlyIMWfaWZyZSBnaXJtZWsgacOnaW4gYnVyYXlhIHTEsWtsYXnEsW7EsXo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE2IiBuYW1lPSJyZXNldF9wYXNzd29yZF90ZW1wbGF0ZV90ZXh0M19saW5rIj4KKyAgICA8dmFsdWU+YnUgYmHEn2xhbnTEsSAobGluaykgaWxlIGlsZ2lsaSBwcm9ibGVtaW5peiB2YXJzYSwgbMO8dGZlbiBiYcSfbGFudMSxecSxIGtvcHlhbGF5YXJhayB0YXJhecSxY8SxbsSxesSxbiBhZHJlcyDDp3VidcSfdW5hIHlhcMSxxZ90xLFyxLFuxLF6OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTciIG5hbWU9InJlc2V0X3Bhc3N3b3JkX21haWxfc3ViamVjdCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSDFnmlmcmUgU8SxZsSxcmxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxOCIgbmFtZT0iZGF0ZVJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+TMO8dGZlbiBnZcOnZXJsaSBiaXIgdGFyaWggZ2lyaW4sIMO2cm5layBvbGFyYWsgMjUuMDYuMjAwNSAoZ2cuYWEueXl5eSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE5IiBuYW1lPSJlbWFpbFJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+TMO8dGZlbiBnZcOnZXJsaSBiaXIgZS1wb3N0YSBhZHJlc2kgZ2lyaW4sIMO2cm5layBvbGFyYWsgYWRAcG9zdGEuY29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyMCIgbmFtZT0iZmxvYXRSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPkzDvHRmZW4gRmxvYXQtU2F5xLEgZ2lyaW5peiwgw7ZybmVrIG9sYXJhayAxLjAwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyMSIgbmFtZT0ibnVtYmVyUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5Mw7x0ZmVuIGJpciB0YW1zYXnEsSBnaXJpbml6LCDDtnJuZWsgb2xhcmFrIDEwMDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjIiIG5hbWU9InBob25lUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5Mw7x0ZmVuIGdlw6dlcmxpIGJpciB0ZWxlZm9uIG51bWFyYXPEsSBnaXJpbml6LCDDtnJuZWsgb2xhcmFrICsrOTAgMDEyMyAxMjMxMjM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIzIiBuYW1lPSJ0aW1lUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT5Mw7x0ZmVuIGdlw6dlcmxpIGJpciBzYWF0IGJpbGdpc2kgZ2lyaW5peiwgw7ZybmVrIG9sYXJhayAxMjoyMyAoc3M6ZGQpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3ciPgorICAgIDx2YWx1ZT7FnmlmcmUga29ydW1hbMSxPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNSIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfcGFzc3dvcmRMYWJlbCI+CisgICAgPHZhbHVlPsWeaWZyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjYiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkTGFiZWwiPgorICAgIDx2YWx1ZT5HZcOnZXJsaWxpayBwZXJpeW9kdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjciIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkIj4KKyAgICA8dmFsdWU+U8O8cmVzaXo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI4IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZCI+CisgICAgPHZhbHVlPlBlcml5b3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI5IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZCI+CisgICAgPHZhbHVlPkJpciBrZXJlbGlrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMCIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWRGcm9tTGFiZWwiPgorICAgIDx2YWx1ZT5PdHVydW0gYmHFn2xhbmfEsWPEsTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMxIiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZFRvTGFiZWwiPgorICAgIDx2YWx1ZT5PdHVydW0gc29udTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMyIiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd19NYWlsU3ViamVjdCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSdlIERhdmV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzMyIgbmFtZT0iaW52aXRhdGlvbl9lcnJvciI+CisgICAgPHZhbHVlPkJ1IGRhdmV0IGtvZHUgacOnaW4gZ2XDp2VybGkgb2xhbiBiaXIgZGF2ZXQgeW9rLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzQiIG5hbWU9Imludml0YXRpb25fZXJyb3IiPgorICAgIDx2YWx1ZT5CdSBkYXZldCBoYWxpaGF6xLFyZGEga3VsbGFuxLFsbWFrdGEuIEJ1IGJpcCBiaXIgZGF2ZXQgdGVrcmFyIGt1bGxhbsSxbGFtYXouPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzNSIgbmFtZT0iaW52aXRhdGlvbl9lcnJvciI+CisgICAgPHZhbHVlPkJ1IGRhdmV0IGtvZHUgZ2XDp2VybGkgZGXEn2lsLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzYiIG5hbWU9Imludml0YXRpb25fcGFzcyI+CisgICAgPHZhbHVlPsWeaWZyZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM3IiBuYW1lPSJpbnZpdGF0aW9uX3Bhc3NfYnRuIj4KKyAgICA8dmFsdWU+xZ5pZnJlIEtvbnRyb2w8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM4IiBuYW1lPSJpbnZpdGF0aW9uX3Bhc3NfZXJyb3IiPgorICAgIDx2YWx1ZT5HZcOnZXJzaXogxZ5pZnJlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzkiIG5hbWU9IkJyb3dzZXIiPgorICAgIDx2YWx1ZT5TZXMtR8O2csO8bnTDvDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDAiIG5hbWU9ImF1ZGlvX3ZpZGVvIj4KKyAgICA8dmFsdWU+U2VzL0fDtnLDvG50w7wgU2Vua3Jvbml6YXN5b251PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0MSIgbmFtZT0iZXJyb3JDb2RlX2ludmFsaWRTZXNzaW9uIj4KKyAgICA8dmFsdWU+S3VsbGFuxLFjxLEgYWTEsSBkb8SfcnUsIGZha2F0IGdpcm1leWUgw6dhbMSxxZ90xLHEn8SxbsSxeiBvdHVydW0gYWt0aWYgZHVydW1kYSBkZcSfaWwgeWEgZGEgc3VudWN1ZGEgZGVwb2xhbm3EscWfLiBZZW5pIGJpciBvdHVydW0ga29kdSBhbG1hbMSxc8SxbsSxeiB2ZSB5ZW5pZGVuIG90dXJ1bSBhw6dtYWzEsXPEsW7EsXouPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0MiIgbmFtZT0iZXJyb3Jjb2RlX3NldFVzZXJPYmplY3QiPgorICAgIDx2YWx1ZT5PdHVydW0ga29kdSBrYXnEsXRsxLEgZGXEn2lsIHlhIGRhIHnDtm5ldGljaSBoYWtsYXLEsW5hIHNhaGlwIGRlxJ9pbC4gU09BUCBHYXRld2F5IHllbmkgYmlyIGt1bGxhbsSxY8SxIGVrbGV5ZWJpbG1layBpw6dpbiB5w7ZuZXRpY2kgaGFrbGFyxLFuYSBzYWhpcCBiaXIga3VsbGFuxLFjxLF5YSBpaHRpeWHDpyBkdXlhci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQzIiBuYW1lPSJlcnJvcmNvZGVfbG9naW5CeVJlbW90ZVVzZXIiPgorICAgIDx2YWx1ZT5CdSBvdHVydW0gdXphayBrdWxsYW7EsWPEsSB2ZXJpIGJhxJ9sYW50xLFzxLEgacOnZXJtaXlvci4gVXlndWxhbWF5YSBnaXJtZWRlbiB2ZXlhIHlhbmzEscWfIG90dXJ1bSBrb2R1IGlsZSBTT0FQLUdhdGV3YXkgYXJhbWFzxLEgeWFwYW1henPEsW7EsXouPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0NCIgbmFtZT0iZGVidWdfbWVzc2FnZV9yZWNvcmRpbmciPgorICAgIDx2YWx1ZT5LYXlkZWRpY2kgaGFsZW4gQmV0YSB2ZXJzaXlvbnVuZGEhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0NSIgbmFtZT0icHJvcGVydHlQYW5lbFhWYWx1ZSI+CisgICAgPHZhbHVlPng8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ2IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWFZhbHVlTGFiZWwiPgorICAgIDx2YWx1ZT54LWVrc2VuaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDciIG5hbWU9InByb3BlcnR5UGFuZWxZVmFsdWUiPgorICAgIDx2YWx1ZT55PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0OCIgbmFtZT0icHJvcGVydHlQYW5lbFlWYWx1ZUxhYmVsIj4KKyAgICA8dmFsdWU+eS1la3Nlbmk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ5IiBuYW1lPSJwcm9wZXJ0eVBhbmVsV2lkdGhWYWx1ZSI+CisgICAgPHZhbHVlPmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUwIiBuYW1lPSJwcm9wZXJ0eVBhbmVsV2lkdGhWYWx1ZUxhYmVsIj4KKyAgICA8dmFsdWU+Z2VuacWfbGlrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1MSIgbmFtZT0icHJvcGVydHlQYW5lbEhlaWdodFZhbHVlIj4KKyAgICA8dmFsdWU+eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTIiIG5hbWU9InByb3BlcnR5UGFuZWxIZWlnaHRWYWx1ZUxhYmVsIj4KKyAgICA8dmFsdWU+ecO8a3Nla2xpazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTMiIG5hbWU9InByb3BlcnR5T3BhY2l0eVNsaWRlciI+CisgICAgPHZhbHVlPlRyYW5zcGFyYW5sxLHEn8SxIGRlxJ9pxZ90aXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU0IiBuYW1lPSJicm93c2VyT3BlbiI+CisgICAgPHZhbHVlPlRhcmF5xLFjxLEgQcOnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1NSIgbmFtZT0iYnJvd3NlckNsb3NlIj4KKyAgICA8dmFsdWU+VGFyYXnEsWPEsSBLYXBhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTYiIG5hbWU9ImNvbm5lY3Rpb25Mb3N0TWVzc2FnZSI+CisgICAgPHZhbHVlPsWedW51Y3V5bGEgYmHEn2xhbnTEsSBrZXNpbGRpLiBVeWd1bGFtYXnEsSB5ZW5pZGVuIHnDvGtsZW1lbGkgdmV5YSBBxJ8gQmHEn2xhbnTEsXPEsW7EsSBrb250cm9sIGV0bWVsaXNpbml6LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTciIG5hbWU9IjU1NyI+CisgICAgPHZhbHVlPsSwbWxlw6c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU4IiBuYW1lPSJzeW5jIG1lc3NhZ2UgaGVhZGVyIj4KKyAgICA8dmFsdWU+RcWfaXRsaXlvcuKApjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTkiIG5hbWU9IlN5bmNocm9uaXppbmcgbWVzc2FnZSI+CisgICAgPHZhbHVlPkt1bGxhbsSxY8SxbGFyxLEgZcWfaXRsaXlvciwgbMO8dGZlbiBiZWtsZXlpbml6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MCIgbmFtZT0iZXhwb3J0VG9TVkciPgorICAgIDx2YWx1ZT4mbHQ7dSZndDtTVkcgT2xhcmFrIFnDvGtsZSZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYxIiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7UE5HIE9sYXJhayBZw7xrbGUmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MiIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O0pQRyBPbGFyYWsgWcO8a2xlJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjMiIG5hbWU9ImV4cG9ydFRvSW1hZ2UiPgorICAgIDx2YWx1ZT4mbHQ7dSZndDtQREYgT2xhcmFrIFnDvGtsZSZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY0IiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7VElGIE9sYXJhayBZw7xrbGUmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2NSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkhhdMSxcmxhdMSxY8SxOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjYiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5LYXRlZ29yaTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY3IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+VGVrcmFyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjgiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5oacOnYmlyaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjkiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5Lb251bTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTcwIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+QmHFnzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzEiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5Tb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTcyIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+QmHFn2zEsWs6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MyIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPllvcnVtOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzQiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5LacWfaSBEYXZldCBFdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzUiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5Hw7xubMO8azwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzYiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5BeWzEsWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc3IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+WcSxbGzEsWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc4IiBuYW1lPSJhbGVydCI+CisgICAgPHZhbHVlPllldGtpbGVuZGlybWUgc29udSB5ZXRraWxlbmRpcm1lIGJhxZ/EsW5kYW4gc29ucmFkxLFyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzkiIG5hbWU9ImFsZXJ0Ij4KKyAgICA8dmFsdWU+TMO8dGZlbiBiaXIgYmHFn2zEsWsgZ2lyaW5peiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgwIiBuYW1lPSI1ODAiPgorICAgIDx2YWx1ZT5SVEw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgxIiBuYW1lPSI1ODEiPgorICAgIDx2YWx1ZT5TYcSfZGFuIHNvbGEgeWF6xLFtIG1vZHVudSBhw6dtYWsgacOnaW4gYnVudSBha3RpZmxlxZ90aXJpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODIiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+UGFubzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODMiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+S2F5xLF0bMSxIEfDtnLDvMWfbWVsZXJpIMSwemxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4NCIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT5Hw7Zyw7zFn21lIOKAkyA0IGtpxZ9pbGlrIGtvbmZlcmFucyBvbHXFn3R1ciAoZW4gZmF6bGEgMTYga2nFn2kpICZsdDtici8mZ3Q7aGVya2VzIHNlcyArIGfDtnLDvG50w7wgeWF5xLFuIGhha2vEsW5hIHNhaGlwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4NSIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT5FdGtpbmxpayDigJMgMjAwIGthdMSxbMSxbWPEsWzEsSBrb25mZXJhbnMgYXlhcmxhJmx0O2JyLyZndDtTYWRlY2UgZMO8emVubGV5aWNpIHNlcyB2ZSBnw7Zyw7xudMO8IHlhecSxbiBoYWtrxLFuYSBzYWhpcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODYiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+S3VsbGFuxLFjxLFsYXLEsSwgb2RhbGFyxLEgdmUgb3JnYW5pemFzeW9ubGFyxLEgb2x1xZ90dXIgJmx0O2JyLyZndDsgKyB5YXDEsWxhbmTEsXJtYXnEsSBkZcSfacWfdGlyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4NyIgbmFtZT0icm9vbSBBZG1pbmlzdHJhdGlvbiByb29tY2xpZW50cyBsaXN0Ij4KKyAgICA8dmFsdWU+S3VsbGFuxLFjxLFsYXIgxZ91IGFuZGEgYnUgb2RhZGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg4IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODkiIG5hbWU9InJvb20gQWRtaW5pc3RyYXRpb24gcm9vbWNsaWVudHMgbGlzdCI+CisgICAgPHZhbHVlPkdpcmnFnzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTAiIG5hbWU9InJvb20gQWRtaW5pc3RyYXRpb24gcm9vbWNsaWVudHMgbGlzdCI+CisgICAgPHZhbHVlPkQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkxIiBuYW1lPSJzd2Ygc3luYyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QmVsZ2UgWcO8a2xlbml5b3IuIFTDvG0gaXN0ZW1jaWxlciBlxZ9pdGxlbmluY2V5ZSBrYWRhciBsw7x0ZmVuIGJla2xleWluaXouPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5MiIgbmFtZT0idXBsb2FkIGRpYWxvZyI+CisgICAgPHZhbHVlPkFrdGFyxLFtIHRhbWFtbGFuZMSxLCBiZWxnZSBkw7Zuw7zFn3TDvHLDvGzDvHlvciAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkzIiBuYW1lPSJ1cGxvYWQgZGlhbG9nIj4KKyAgICA8dmFsdWU+QWt0YXLEsW3EsSBCYcWfbGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NCIgbmFtZT0idXBsb2FkIGRpYWxvZyI+CisgICAgPHZhbHVlPkFrdGFyxLFtIHZlIFnDvGtsZW1lIFBlbmNlcmVzaS4gTMO8dGZlbiBEaXNraW5pemRlbiBiaXIgRG9zeWEgc2XDp2luaXouPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NSIgbmFtZT0idXBsb2FkIERpYWxvZyI+CisgICAgPHZhbHVlPsSwcHRhbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTYiIG5hbWU9InVwbG9hZCBEaWFsb2ciPgorICAgIDx2YWx1ZT5Eb3N5YSBTZcOnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NyIgbmFtZT0iYWRtaW5pc3RyYXRpb24gbmF2aWdhdGlvbiI+CisgICAgPHZhbHVlPkJhxJ9sYW50xLFsYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk4IiBuYW1lPSJjb25mYWRtaW4gdmFsdWUgbGlzdCI+CisgICAgPHZhbHVlPkRlxJ9lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTkiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5ZYXnEsW5fSUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAwIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+R2lyacWfPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwMSIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPkJhxJ9sYW50xLEgemFtYW7EsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDIiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5PZGEgLyBLYXBzYW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAzIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+S2ljayBVc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwNCIgbmFtZT0ia2ljayB1c2VyIGNvbmZpcm1hdGlvbiBkaWFsb2ciPgorICAgIDx2YWx1ZT5LdWxsYW7EsWPEsXnEsSBBdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDUiIG5hbWU9ImtpY2sgdXNlciBjb25maXJtYXRpb24gZGlhbG9nIj4KKyAgICA8dmFsdWU+QnUgaXN0ZW1jaXlpIGJhxJ9sYW50xLFkYW4gw6fEsWthcm1hayBpc3RlZGnEn2luaXplIGVtaW4gbWlzaW5pej8mbHQ7YnIvJmd0O0J1IGnFn2xlbSBzYWRlY2UgdXlhcsSxIGFtYcOnbMSxZMSxciB2ZSBrdWxsYW7EsWPEsW7EsW4gb2RheWEgeWVuaWRlbiBnaXJpxZ8geWFwbWFzxLFuxLEgZW5nZWxsZW1lei48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjA2IiBuYW1lPSJraWNrIHVzZXIgbWVzc2FnZSBkaWFsb2ciPgorICAgIDx2YWx1ZT5PdHVydW11bnV6IFnDtm5ldGljaSB2ZXlhIETDvHplbmxleWljaSB0YXJhZsSxbmRhbiBzb25sYW5kxLFyxLFsZMSxLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDciIG5hbWU9InVzZXJhbHRlcnNlbGZfcGhvbmUiPgorICAgIDx2YWx1ZT5UZWxlZm9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwOCIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+S3VsbGFuxLFjxLEgYnUgT2Rh4oCZbsSxbiBEw7x6ZW5sZXlpY2lzaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDkiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPkt1bGxhbsSxY8SxIEthcmF0YWh0YXnEsSBkw7x6ZW5sZW1lIGhha2vEsW5hIHNhaGlwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMCIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+U2VzL0fDtnLDvG50w7x5w7wgKFllbmlkZW4pIEJhxZ9sYXQgdmV5YSBBeWfEsXQgQXlhcmxhcsSxbsSxIGRlxJ9pxZ90aXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjExIiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5CdSBrdWxsYW7EsWPEsW7EsW4gS2FyYXRhaHRhecSxIGt1bGxhbm1hc8SxbmEgaXppbiB2ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEyIiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5LdWxsYW7EsWPEsW7EsW4gS2FyYXRhaHRhecSxIGt1bGxhbm1hc8SxbsSxIGVuZ2VsbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEzIiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+S3VsbGFuxLFjxLFsYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE0IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+RG9zeWFsYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE1IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+S2FyYXRhaHRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxNiIgbmFtZT0iY29uZmVyZW5jZVBhbmVscyI+CisgICAgPHZhbHVlPlNvaGJldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTciIG5hbWU9Im9yZ2FuaXphdGlvbiBjaG9vc2UgaW5mbyI+CisgICAgPHZhbHVlPkhlc2FixLFuxLF6IHBlayDDp29rIE9yZ2FuaXphc3lvbmxhIGlsacWfa2lsZW5kaXJpbG1pxZ8uIEJ1IG90dXJ1bSBpw6dpbiBsw7x0ZmVuIGJpcmluaSBzZcOnaW5pei48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE4IiBuYW1lPSJlcnJvciBtZXNzYWdlIHJvb20gZnVsbCI+CisgICAgPHZhbHVlPkJ1IG9kYSDFn3UgYW5kYSBkb2x1OyBsw7x0ZmVuIGRhaGEgc29ucmEgdGVrcmFyIGRlbmV5aW5pei48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE5IiBuYW1lPSJyb29tdHlwZXMiPgorICAgIDx2YWx1ZT5PZGEgVGlwaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjAiIG5hbWU9ImFwcG9pbnRlZF9yb29tIj4KKyAgICA8dmFsdWU+UmFuZGV2dSBPZGFzxLE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIxIiBuYW1lPSJzZXJ2ZXJ0aW1lIj4KKyAgICA8dmFsdWU+U3VudWN1IFphbWFuxLE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIyIiBuYW1lPSJpbnZfcmVtaW5kZXJfdGVtcGxhdGVfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSAtIEhhdMSxcmxhdMSxY8SxPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyMyIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfZnJvbSI+CisgICAgPHZhbHVlPkt1bGxhbsSxY8SxZGFuIE1lc2FqOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjQiIG5hbWU9Imludl9yZW1pbmRlcl90ZXh0X21lc3NhZ2UiPgorICAgIDx2YWx1ZT5NZXNhajo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI1IiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9jbGlja190ZXh0Ij4KKyAgICA8dmFsdWU+R8O2csO8xZ9tZWxlcmUga2F0xLFsbWFrIGnDp2luIGJ1IGJhxJ9sYW50xLF5xLEgdMSxa2xhecSxbsSxejo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjI2IiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9jbGlja190ZXh0X2xpbmsiPgorICAgIDx2YWx1ZT5PZGF5YSBnaXJpxZ8gacOnaW4gYnVyYXnEsSB0xLFrbGF5xLFuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNyIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfY2xpY2tfdGV4dF9oZWxwIj4KKyAgICA8dmFsdWU+YmHEn2xhbnTEsXnEsSB0xLFrbGFtYWtsYSBpbGdpbGkgc29ydW4geWHFn8SxeW9yc2FuxLF6IGtvcHlhbGF5xLFwIGdlemdpbiBwZW5jZXJlc2luZSB5YXDEscWfdMSxcmFiaWxpcnNpbml6OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjgiIG5hbWU9ImJ0bl9zZWFyY2hfaW50ZXJuIj4KKyAgICA8dmFsdWU+acOnIGt1bGxhbsSxY8SxbGFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyOSIgbmFtZT0iYnRuX3NlYXJjaF9leHRlcm4iPgorICAgIDx2YWx1ZT5kxLHFnyBrdWxsYW7EsWPEsWxhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzAiIG5hbWU9ImxibF9wcmVuYW1lIj4KKyAgICA8dmFsdWU+w7ZuIGFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzMSIgbmFtZT0ibGJsX25hbWUiPgorICAgIDx2YWx1ZT5hZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzIiIG5hbWU9ImxibF9lbWFpbCI+CisgICAgPHZhbHVlPkUtUG9zdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjMzIiBuYW1lPSJsb2dvdXRDb25maXJtX3RpdGxlIj4KKyAgICA8dmFsdWU+T3R1cnVtIGthcGF0bWF5xLEgb25heWxhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNCIgbmFtZT0ibG9nb3V0Q29uZmlybV9zdXJlX3RvX2xvZ291dF9xdWVzdGlvbiI+CisgICAgPHZhbHVlPk90dXJ1bXUga2FwYXRtYWsgaXN0ZWRpxJ9pbml6ZSBlbWluIG1pc2luaXo/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNSIgbmFtZT0ibWFpbiBtZW51Ij4KKyAgICA8dmFsdWU+RXlsZW1sZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM2IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RGVtbyBPZGFzxLE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RGVtbyBaYW1hbsSxPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzOCIgbmFtZT0ibWVldGluZyBUaW1lciI+CisgICAgPHZhbHVlPkfDtnLDvMWfbWUgxLDDp2luIEthbGFuIFphbWFuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzOSIgbmFtZT0ibWVldGluZyBUaW1lciI+CisgICAgPHZhbHVlPkJ1IE9kYSBiaXIgRGVtbyBPZGFzxLHigJlkxLFyLiBCdSB1eWFyxLF5xLEgYWxtYWsgaXN0ZW1peW9yc2FuxLF6IMO2emVsIGJpciBvZGEgYWxhYmlsaXIgdmV5YSBrZW5kaW5pemUgw7Z6ZWwgYmlyIHN1bnVjdSBheWFybGF5YWJpbGlyc2luaXouIE90dXJ1bXVudXp1biBvdG9tYXRpayBrYXBhdMSxbG1hIHphbWFuxLE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MCIgbmFtZT0ibWVldGluZyByb29tIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+RGVuZ2VsaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDEiIG5hbWU9Im1vZGVyYXRlZCByb29tIHdhaXRpbmcgbWVzc2FnZSI+CisgICAgPHZhbHVlPkTDvHplbmxleWljaSBvZGF5YSBnaXJpbmNleWUga2FkYXIgbMO8dGZlbiBiZWtsZXlpbml6LiBEw7x6ZW5sZXlpY2kgb2xhcmFrIGFuxLFsYW4ga2nFn2kgRMO8emVubGV5aWNpLCBZw7ZuZXRpY2kgdmV5YSBvZGF5xLEgb2x1xZ90dXJhbiBracWfaSBvbGFiaWxpci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQyIiBuYW1lPSJlcnJvciBwb3B1cCI+CisgICAgPHZhbHVlPlRhbWFtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MyIgbmFtZT0id2luZG93IHNjcmVlbnNoYXJpbmciPgorICAgIDx2YWx1ZT5Fa3JhbiBQYXlsYcWfxLFtxLEgQmHFn2zEsXlvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDQiIG5hbWU9IndpbmRvdyBzY3JlZW4gc2hhcmluZyI+CisgICAgPHZhbHVlPkt1bGxhbsSxY8SxIEVrcmFuIFBheWxhxZ/EsW3EsSB1eWd1bGFtYXPEsW7EsSBiYcWfbGF0xLF5b3I6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0NSIgbmFtZT0id2luZG93IHNjcmVlbiBzaGFyaW5nIj4KKyAgICA8dmFsdWU+UGF5bGHFn8SxbcSxIEJhxZ9sYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ2IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPlllbmkgYmlyIEfDtnLDvMWfbWUgZWtsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDciIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+R8O2csO8xZ9tZSBPZGFzxLE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ4IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkV0a2lubGlrIE9kYXPEsTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDkiIG5hbWU9Im1haW4gbWVudSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+RMO8emVubGVtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTAiIG5hbWU9Im1lbnUgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkt1bGxhbsSxY8SxbGFyxLEgRMO8emVubGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUxIiBuYW1lPSJtZW51IG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5PZGFsYXLEsSBEw7x6ZW5sZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTIiIG5hbWU9Im1vZGVyYXRvciBvcmciPgorICAgIDx2YWx1ZT5NPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1MyIgbmFtZT0iY29uZmlybSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+QnUga3VsbGFuxLFjxLFuxLFuIG9yZ2FuaXphc3lvbnVuIETDvHplbmxleWljaXNpIG9sbWFzxLFuxLEgaXN0ZWRpxJ9pbml6ZSBlbWluIG1pc2luaXo/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1NCIgbmFtZT0iZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPkt1bGxhbsSxY8SxecSxIGJpciBPcmdhbml6YXN5b25hIGVrbGVtZWRlbiDDtm5jZSBsw7x0ZmVuIGxpc3RlZGVuIGJpciB0YW5lIE9yZ2FuaXphc3lvbiBzZcOnaW5peiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU1IiBuYW1lPSJjaG9vc2UgdXNlciB3aW5kb3ciPgorICAgIDx2YWx1ZT5Pcmdhbml6YXN5b24gLSBEw7x6ZW5sZXlpY2k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU2IiBuYW1lPSJtb2RlcmF0b3Igb3JnIHVzZXJzIj4KKyAgICA8dmFsdWU+QnUga3VsbGFuxLFjxLF5xLEgT3JnYW5pemFzeW9uZGFuIHNpbG1layBpc3RlZGnEn2luaXplIGVtaW4gbWlzaW5pej88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU3IiBuYW1lPSJvcmcgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkJ1IEt1bGxhbsSxY8SxIETDvHplbmxleWljaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTgiIG5hbWU9Im9yZyBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+QnUgS3VsbGFuxLFjxLEgRMO8emVubGV5aWNpIERlxJ9pbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTkiIG5hbWU9ImVycm9yIG1lc3NhZ2UgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkJ1IGt1bGxhbsSxY8SxbsSxbiBPcmdhbml6YXN5b25kYSBEw7x6ZW5sZXlpY2kgT2xtYW1hc8SxbsSxIMSwc3RlZGnEn2luaXplIEVtaW4gTWlzaW5pej88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYwIiBuYW1lPSJtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+S3VsbGFuxLFjxLFsYXLEsSBPcmdhbml6YXN5b25hIGVrbGUgdmV5YSBPcmdhbml6YXN5b25kYW4gc2lsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MSIgbmFtZT0iZGVsZXRlIGNvbmZpcm0gcXVlc3Rpb24iPgorICAgIDx2YWx1ZT5CdSBrYXlkxLEgc2lsbWVrIGlzdGVkacSfaW5pemUgZW1pbiBtaXNpbml6PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjIiIG5hbWU9ImRlbGV0ZSBjb25maXJtIHF1ZXN0aW9uIHVzZXIgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkJ1IGt1bGxhbsSxY8SxecSxIG9yZ2FuaXphc3lvbmRhbiBzaWxtZWsgaXN0ZWRpxJ9pbml6ZSBlbWluIG1pc2luaXo/IEJ1IGt1bGxhbsSxY8SxecSxIHNhZGVjZSBvcmdhbml6YXN5b25kYW4gc2lsZXJzaW5pei4gRcSfZXIga3VsbGFuxLFjxLF5xLEgdGFtYW1lbiBzaWxtZWsgaXN0aXlvcnNhbsSxeiBZw7ZuZXRpY2ktUGFuZWxpbmRlbiBnaXJpxZ8geWFwbWFsxLFzxLFuxLF6LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjMiIG5hbWU9ImVycm9yIG1lc3NhZ2Ugc2VsZiBkZWxldGluZyI+CisgICAgPHZhbHVlPktlbmRpIGt1bGxhbsSxY8SxbsSxesSxIHNpbGVtZXpzaW5peiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY0IiBuYW1lPSJlcnJvciBtZXNzYWdlIGF1dGgiPgorICAgIDx2YWx1ZT5CdSB5w7ZudGVtIFnDtm5ldGljaSBoYWtsYXLEsSBlcmnFn2ltaW5pIGdlcmVrdGlyaXIhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NSIgbmFtZT0iZXJyb3IgbWVzc2FnZSBTT0FQIj4KKyAgICA8dmFsdWU+QnUgSUQgaWxlIGlsacWfa2lsZW5kaXJpbG1pxZ8gT3R1cnVtIGJ1bHVubWFtYWt0YWTEsXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NiIgbmFtZT0iZXJyb3IgbWVzc2FnZSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+QnUgYmlyIFnDtm5ldGljaSB2ZXlhIETDvHplbmxleWljaSBoZXNhYsSxLiBCdSBoZXNhYsSxIHNhZGVjZSBZw7ZuZXRpY2kgUGFuZWxpbmRlbiBkw7x6ZW5sZXllYmlsaXJzaW5pei48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY3IiBuYW1lPSJlbWFpbCB2ZXJpZmljYXRpb24iPgorICAgIDx2YWx1ZT5LYXlkxLFuxLF6xLEgdGFtYW1sYW1hayBpw6dpbiBsw7x0ZmVuIGJhxJ9sYW50xLF5xLEgdMSxa2xhecSxbiB5YSBkYSB0YXJhecSxY8SxIGFkcmVzIMOndWJ1xJ91bmEga29weWFsYXnEsXAgb3JhZGFuIGHDp8Sxbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjY4IiBuYW1lPSJlbWFpbCB2ZXJpZmljYXRpb24iPgorICAgIDx2YWx1ZT5FLVBvc3RhbsSxesSxIE9uYXlsYW1hayDEsMOnaW4gVMSxa2xhecSxbsSxejwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjkiIG5hbWU9ImVycm9yTWVzc2FnZV9Vc2VyQWN0aXZhdGlvblNlcnZsZXQgW0FjdGl2YXRlVXNlcl0iPgorICAgIDx2YWx1ZT5CdSBIYXNoIGJpbGdpc2luZSB1eWFuIGhpw6diaXIga3VsbGFuxLFjxLEgYnVsdW5hbWFkxLEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3MCIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPkJ1IGt1bGxhbsSxY8SxIHphdGVuIGFrdGlmIGVkaWxkaSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjcxIiBuYW1lPSJlcnJvck1lc3NhZ2VfVXNlckFjdGl2YXRpb25TZXJ2bGV0IFtBY3RpdmF0ZVVzZXJdIj4KKyAgICA8dmFsdWU+SGVzYWLEsW7EsXrEsSBiYcWfYXLEsXlsYSBha3RpZmxlxZ90aXJkaW5peiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjcyIiBuYW1lPSJlcnJvck1lc3NhZ2VfVXNlckFjdGl2YXRpb25TZXJ2bGV0IFtBY3RpdmF0ZVVzZXJdIj4KKyAgICA8dmFsdWU+R2lyacWfIFlhcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzMiIG5hbWU9ImxvZ2luRXJyb3JNZXNzYWdlID0gdXNlciB3YXMgbm90IGFjdGl2YXRlZCI+CisgICAgPHZhbHVlPkhlc2FixLFuxLF6IGFrdGlmbGXFn3RpcmlsbWVkaS4gS2F5xLF0IHPEsXJhc8SxbmRhIHZlcm1pxZ8gb2xkdcSfdW51eiBFLVBvc3RhbsSxemEgZ2VsZW4gYmHEn2xhbnTEsXnEsSB0xLFrbGF5YXJhayBha3RpdmFzeW9uIGnFn2xlbWluaSB0YW1hbWxhecSxbsSxei48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc0IiBuYW1lPSJyZWdpc3RlciB2ZXJpZmljYXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPktheWTEsW7EsXogYmHFn2FyxLF5bGEgdGFtYW1sYW5kxLEuIFZlcm1pxZ8gb2xkdcSfdW51eiBlLXBvc3RhIGFkcmVzaW5pemUgaGVzYWLEsW7EsXrEsSBha3RpZmxlxZ90aXJtZWsgacOnaW4gaWxldGkgZ8O2bmRlcmRpay4gxLBsZXRpZGVraSBiYcSfbGFudMSxecSxIGHDp2FyYWsgaGVzYWLEsW7EsXrEsSBha3RpZmxlxZ90aXJlYmlsaXJzaW5pei48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc1IiBuYW1lPSJwYXJ0aWNpcGFudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5CdSBLdWxsYW7EsWPEsW7EsW4gRMO8emVubGV5aWNpIFlldGtpc2luaSDEsHB0YWwgRXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc2IiBuYW1lPSJwYXJ0aWNpcGFudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5CdSBLdWxsYW7EsWPEsXlhIETDvHplbmxleWljaSBZZXRraWxlcmkgVmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3NyIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+S3VsbGFuxLFjxLE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc4IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5LYXJhdGFodGF5YSBlcmnFnzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzkiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkTDvHplbmxleWljaTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODAiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkTDvHplbmxlbWU6IEzDvHRmZW4ga2VuZGlzaW5lIEthcmF0YWh0YXlhIEVyacWfbWUsIETDvHplbmxlbWUgdmUgU2VzL0fDtnLDvG50w7wgeWV0a2lzaSB2ZXJtZWsgw7x6ZXJlIGJpciBrdWxsYW7EsWPEsSBzZcOnaW5pei48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgxIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5CdSBrdWxsYW7EsWPEsSBEw7x6ZW5sZXlpY2kgaGFrbGFyxLFuYSBzYWhpcCBvbGR1xJ91bmRhbiDDp2l6bWUgeWV0a2lzaW5lIHphdGVuIHNhaGlwLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODIiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCBlcnJvciI+CisgICAgPHZhbHVlPktlbmRpIGtlbmRpbml6aW4gRMO8emVubGV5aWNpIGhha2vEsW7EsSBpcHRhbCBlZGVtZXpzaW5pei48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgzIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5CdSBrdWxsYW7EsWPEsW7EsW4gU2VzL0fDtnLDvG50w7xzw7xuw7wgWWF5xLFubGFtYXPEsW5hIMSwemluIFZlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2ODQiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkt1bGxhbsSxY8SxbsSxbiBTZXMvR8O2csO8bnTDvHPDvG7DvCDEsHB0YWwgRXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg1IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5CdSBvZGFuxLFuIGTDvHplbmxleWljaXNpIG9sbWFrIGlzdGl5b3J1bS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg2IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5UYWh0YXnEsSBkw7x6ZW5sZXllYmlsbWVrIGlzdGl5b3J1bS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg3IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5TZXMvR8O2csO8bnTDvG3DvCBwYXlsYcWfbWFrIGlzdGl5b3J1bS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg4IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5CdSBvZGFuxLFuIETDvHplbmxleWljaXNpc2luaXouPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4OSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+VGFodGF5xLEgZMO8emVubGVtZSBoYWtrxLFuYSBzYWhpcHNpbml6LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTAiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPlNlcy9Hw7Zyw7xudMO8bsO8esO8IHBheWxhxZ9tYSBoYWtrxLFuYSBzYWhpcHNpbml6LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTEiIG5hbWU9ImVycm9ydHlwZSI+CisgICAgPHZhbHVlPkTDvHplbmxleWljaXllIE1lc2FqPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5MiIgbmFtZT0iYXBwbHkgZm9yIG1vZCBtZXNzYWdlIj4KKyAgICA8dmFsdWU+S3VsbGFuxLFjxLE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkzIiBuYW1lPSJhcHBseSBmb3IgbW9kIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5kw7x6ZW5sZXlpY2kgb2xtYWsgaXN0aXlvci4gS3VsbGFuxLFjxLF5YSBidSBoYWtrxLEgdmVybWVrIGlzdGl5b3JzYW7EsXogZHVydW0gc2ltZ2VsZXJpbmkga3VsbGFuxLFuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTQiIG5hbWU9ImFwcGx5IGZvciB3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+dGFodGF5xLEgZMO8emVubGVtZWsgaXN0aXlvci4gS3VsbGFuxLFjxLF5YSBidSBoYWtrxLEgdmVybWVrIGlzdGl5b3JzYW7EsXogZHVydW0gc2ltZ2VsZXJpbmkga3VsbGFuxLFuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTUiIG5hbWU9IjY5NSI+CisgICAgPHZhbHVlPlNlcyB2ZSBHw7Zyw7xudMO8c8O8bsO8IHBheWxhxZ9tYWsgaXN0aXlvci4gS3VsbGFuxLFjxLF5YSBidSBoYWtrxLEgdmVybWVrIGlzdGl5b3JzYW7EsXogZHVydW0gc2ltZ2VsZXJpbmkga3VsbGFuxLFuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTYiIG5hbWU9Im1vZGVyYXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkTDvHplbmxleWljaSBvZGF5YSBnaXJpxZ8geWFwYW5hIGthZGFyIGJla2xlbWVsaXNpbml6LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTciIG5hbWU9ImNhbGVuZGFyIGJ1dHRvbiI+CisgICAgPHZhbHVlPsSwcHRhbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTgiIG5hbWU9ImNhbGVuZGFyIGJ1dHRvbiI+CisgICAgPHZhbHVlPktheWRldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTkiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPkfDvG48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAwIiBuYW1lPSJjYWxlbmRhciBjb21wb25lbnQiPgorICAgIDx2YWx1ZT5BeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDEiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPlnEsWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAyIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+VXBsb2FkIEZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzAzIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+QWRkIEZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDQiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5SZWZyZXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwNSIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlRyYXNoIChEcmFnIGFuZCBEcm9wIGl0ZW0gaGVyZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA2IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+TXkgRmlsZXMgKEhvbWUgRHJpdmUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwNyIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlJvb20gRmlsZXMgKFB1YmxpYyBEcml2ZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA4IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+QWRkIEZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA5IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+QWRkIEZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTAiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5EZWxldGUgRm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMSIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkVkaXQgTmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTIiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5OZXcgRm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMyIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBJdGVtPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTQiIG5hbWU9InVzZXIgYWRtaW4iPgorICAgIDx2YWx1ZT5TZWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE1IiBuYW1lPSJ1c2VyIGFkbWluIj4KKyAgICA8dmFsdWU+U2VhcmNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxNiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPk9wZW4gRG9jdW1lbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE3IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+U2hvdyBhbGwgRmlsZXMgKFRyZWUgVmlldyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE4IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+Q2xvc2UgRG9jdW1lbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE5IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+RGVsZXRlIEZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIwIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+WW91IGFyZSBub3QgYWxsb3dlZCB0byBkcmF3IGFueXRoaW5nIG9uIHRoZSBXaGl0ZWJvYXJkLiBZb3UgaGF2ZSB0byBiZWNvbWUgTW9kZXJhdG9yIG9yIGF0IGxlYXN0IGdldCB0aGUgUmlnaHQgdG8gZWRpdCBXaGl0ZWJvYXJkLiBZb3UgbWF5IGFzayBhIE1vZGVyYXRvciB0byBnaXZlIHlvdSB0aGF0IHJpZ2h0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjEiIG5hbWU9InByb3BlcnR5IHBhbmVsIj4KKyAgICA8dmFsdWU+RG9jdW1lbnQgUHJvcGVydGllczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjIiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPlN0YXJ0IENsaWVudCAoZXh0ZXJuYWwpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyMyIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+U3RhcnQgQ2xpZW50IChIVFRQKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjQiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPkEgdXNlciB3YW50IHRvIHNoYXJlIGhpcyBzY3JlZW4uIERvIHlvdSB3YW50IHRvIHNlZSBpdD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI1IiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGN1cnJlbnRseSBzaGFyaW5nIHlvdXIgRGVza3RvcC4gRm9yIHN0b3BwaW5nIHRoZSBTaGFyaW5nIFNlc3Npb24gcGxlYXNlIGhpdCB0aGUgU3RvcCBidXR0b24gaW4gdGhlIFNoYXJpbmcgQ2xpZW50LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjYiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPlNoYXJpbmcgU2Vzc2lvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjciIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPllvdSBhcmUgYWxyZWFkeSBzaGFyaW5nIHlvdXIgZGVza3RvcCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI4IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkRlc2t0b3AgVmlld2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyOSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5FeGl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5EZXNrdG9wIFNoYXJlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzEiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+Q2xpY2sgU3RhcnQgdG8gcHVibGlzaCB5b3VyIHNjcmVlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzIiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U3RhcnQgU2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzMiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U3RvcCBTaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TZWxlY3QgeW91ciBzY3JlZW4gYXJlYTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM1IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkNoYW5nZSB3aWR0aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzYiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+VGhlIFNoYXJlciBoYXMgZmluaXNoZWQgdGhpcyBzZXNzaW9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzciIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+Q2hhbmdlIGhlaWdodDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+WC1PZmZzZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM5IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlktT2Zmc2V0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0MCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5XaWR0aDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQxIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkhlaWdodDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQyIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkNvbm5lY3Rpb24gd2FzIGNsb3NlZCBieSBTZXJ2ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQzIiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDQiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+U3RhcnQgRXh0ZXJuYWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ1IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPklmIHlvdSBjbG9zZSB0aGlzIHNlc3Npb24gY29tcGxldGVseSB5b3UgYXJlIG5vdCBhYmxlIHRvIHJlc3RhcnQgdGhlIHZpZXdlciBmb3IgdGhpcyBzZXNzaW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDYiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+Q29uZmlybSBDbG9zaW5nIFZpZXdlciBTZXNzaW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NyIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5TaGFyZSBTY3JlZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ4IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPlJlY29yZCBTZXNzaW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0OSIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPkNvLUJyb3dzaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MCIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPk9vb3BzLCAuLi4gRmlyZWZveCBvbiBXaW5kb3dzIGRvZXMgbm90IHNob3cgY2xlYXIgQ28tQnJvd3NpbmcuIFBsZWFzZSB1c2UgYW5vdGhlciBCcm93c2VyIGZvciB1c2luZyB0aGUgQ28tQnJvd3NpbmcgZmVhdHVyZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUxIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+UHJldmlvdXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUyIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+TmV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTMiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5SZWxvYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU0IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+SG9tZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTUiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5Mb2FkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1NiIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPkFkZCB0aGlzIHdlYnNpdGUgYXMgRGVmYXVsdCB3ZWJzaXRlIHRvIHlvdXIgUHJvZmlsZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU3IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+VGVzdCBTZXR1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTgiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5DaGVjayB5b3UgTWljcm9waG9uZSBhbmQgQ2FtZXJhIHNldHVwIGJlZm9yZSB5b3UgZW50ZXIgYSByb29tIGJ5IHJlY29yZGluZyBzb21lIHNlY29uZHMuIFlvdSBjYW4gdGhlbiByZXBsYXkgeW91ciByZWNvcmRpbmcgdG8gY2hlY2sgeW91ciB2b2ljZSBhbmQgcGljdHVyZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU5IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+RG9uJ3Qgc2hvdyB0aGlzIHRlc3QgYW55bW9yZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjAiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYxIiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+U3RhcnQgQ29uZmVyZW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjIiIG5hbWU9ImVkaXQgdmlkZW8gc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5EbyBub3QgYXNrIGFnYWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MyIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlJFQzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjQiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5QTEFZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NSIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPllvdSBtYXkgcHJvY2VlZCB3aXRob3V0IHRlc3RpbmcgaWYgeW91IGRvIG5vdCBwbGFuIHRvIHB1Ymxpc2ggeW91ciB2b2ljZSBvciBwaWN0dXJlLiBQYXJ0aWNpcGFudHMgd2l0aG91dCBBdWRpbyBvciBWaWRlbyBjYW4gc3RpbGwgdXNlIHRoZSBXaGl0ZWJvYXJkLCBzaGFyZSB0aGVpciBEZXNrdG9wIG9yIHdyaXRlIENoYXQgbWVzc2FnZXMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NiIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlNUT1A8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY3IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+TGV2ZWwtTWV0ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY4IiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+UHJlc3MgU3RhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY5IiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+U3RhcnQgQ29uZmVyZW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzAiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5TdGFydCBFdmVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzEiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5DaG9vc2UgUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzIiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5DaGVjayBTZXR1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzMiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5TdGFydCBDb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NCIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPkhvdyB0byBjb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NSIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlN0YXJ0IFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzYiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5EbyBub3Qgc2hvdyBBdWRpbyAvIFZpZGVvIFRlc3QgKFJlY29yZGluZykgYmVmb3JlIGVudGVyaW5nIGEgQ29uZmVyZW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzciIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT5QdWJsaWMgUm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc4IiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+UHVibGljIFJvb21zIGFyZSBhY2Nlc3NpYmxlIGZvciBhbGwgVXNlcnMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3OSIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPlByaXZhdGUgUm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgwIiBuYW1lPSJQcml2YXRlIFJvb21zIj4KKyAgICA8dmFsdWU+UHJpdmF0ZSBSb29tcyBhcmUgb25seSBhY2Nlc3NpYmxlIGZvciB1c2VycyBvZiB0aGUgc2FtZSBvcmdhbml6YXRpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MSIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPk15IFJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MiIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPlJvb21zIGluIHRoaXMgc2VjdGlvbiBhcmUgY3JlYXRlZCBmb3IgcGVyc29uYWwgdXNhZ2UuIFRoZXJlIGFyZSBzb21lIHN0YW5kYXJkIHJvb21zIHBsdXMgdGhlIG9uZXMgdGhhdCBhcmUgY3JlYXRlZCB0aHJvdWdoIHRoZSBjYWxlbmRhciBhbmQgaGF2ZSBhIHN0YXJ0IGFuZCBhbiBlbmQgZGF0ZS4gVGhlIHJvb21zIGNyZWF0ZWQgdmlhIHRoZSBjYWxlbmRhciBhcmUgb25seSBsaXN0ZWQgaW4gdGhpcyBzZWN0aW9uIGFzIGxvbmcgYXMgdGhleSBhcmUgdmFsaWQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4MyIgbmFtZT0icmVzdHJpY3RlZCByb29tIj4KKyAgICA8dmFsdWU+WW91IGhhdmUgdG8gYmUgbW9kZXJhdG9yIHRvIGRvIHRoaXMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NCIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT5BcHBseSBmb3IgbW9kZXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODUiIG5hbWU9Im1lbnUgb3B0aW9uIj4KKyAgICA8dmFsdWU+QXBwbHkgZm9yIHdoaXRlYm9hcmQgYWNjZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NiIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT5BcHBseSBmb3IgY2FtZXJhL21pY3JvcGhvbmUgYWNjZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NyIgbmFtZT0iZXJyb3IgbWVzc2FnZSBzb2FwIHNlY3VyZSBsb2dpbiI+CisgICAgPHZhbHVlPlRoaXMgU2Vzc2lvbiBIYXNoIHdhcyBhbHJlYWR5IHVzZWQuIFlvdSBjYW5ub3QgdXNlIGl0IHR3aWNlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODgiIG5hbWU9ImRhc2hib2FyZCBidXR0b24iPgorICAgIDx2YWx1ZT5TVEFSVDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODkiIG5hbWU9ImV4aXQgY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPkVYSVQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkwIiBuYW1lPSJjb25mZXJlbmNlIHZpZXciPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZXhpdD8gWW91IG1pZ2h0IHNob3VsZCBjbGVhciB1cGxvYWRlZCBkb2N1bWVudHMsIHdoaXRlYm9hcmQgYW5kIHRoZSBjaGF0IGhpc3RvcnkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5MSIgbmFtZT0iY29uZmVyZW5jZSB2aWV3Ij4KKyAgICA8dmFsdWU+RXhpdCBjb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5MiIgbmFtZT0ibWFpbiBtZW51Ij4KKyAgICA8dmFsdWU+Um9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkzIiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT5DaG9vc2UgYSByb29tIGZvciBhIG1lZXRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk0IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGFuIHVuc2F2ZWQgRXZlbnQgaW4gdGhlIENhbGVuZGFyLiBQbGVhc2UgZWl0aGVyIHNhdmUgaXQgb3IgcmVtb3ZlIGl0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTUiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+UGxlYXNlIGFkZCBhdCBsZWFzdCBvbmUgYXR0ZW5kZWUgZm9yIHlvdXIgbWVldGluZyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk2IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBFdmVudD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk3IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPldhcm5pbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzk4IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkFkZCBFdmVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTkiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RGF5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5XZWVrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Nb250aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDIiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RGVzY3JpcHRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAzIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkF0dGVuZGVlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSwgeW91ciBXZWIgQ29uZmVyZW5jaW5nIFBsYXRmb3JtLiBFaXRoZXIgZm9sbG93IHRoZSBJbnN0cnVjdGlvbnMsIHByZXNzIHRoZSBzdGFydCBidXR0b24gdG8gc3RhcnQgdG8gY29uZmVyZW5jZSBpbW1lZGlhdGVsbHkgb3IgeW91IGdvdG8gdGhlIENhbGVuZGFyIGFuZCBzZXQgdXAgYSBDb25mZXJlbmNlIGZvciB0aGUgZnV0dXJlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDUiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPlBsYW4gYSBNZWV0aW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNiIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlRvIHNldCB1cCBhIGNvbmZlcmVuY2UgeW91IGNhbiBhZGQgYSBuZXcgRXZlbnQgaW4gdGhlIENhbGVuZGFyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDciIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5OZWVkIGhlbHA/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwOCIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlJlc3RyaWN0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA5IiBuYW1lPSJsemNhbGVuZGVyIj4KKyAgICA8dmFsdWU+U2VhcmNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMCIgbmFtZT0ibHpjYWxlbmRlciI+CisgICAgPHZhbHVlPkFkZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTEiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBVc2VyIHNlbGVjdGVkLiBQbGVhc2Ugc2VsZWN0IGFuIGl0ZW0gZnJvbSB0aGUgbGlzdCBmaXJzdCBhbmQgdGhlbiBoaXQgYWRkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTIiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5BZGQgQXR0ZW5kZWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEzIiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+U2F2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTQiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5EZWxldGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE1IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RXZlbnQgRGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTYiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EZWZhdWx0IE1vZGVyYXRvcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+U3VwZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE4IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODE5IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjAiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5FLU1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIxIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+QWRkIG5ldyBkZWZhdWx0IE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjIiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5JcyBTdXBlciBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIzIiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+SWYgdGhlIFJvb20gaXMgbW9kZXJhdGVkLCBVc2VyIHdpdGggTGV2ZWwgTW9kZXJhdG9yIG9yIEFkbWluaXN0cmF0b3IgYXJlIGF1dG9tYXRpY2FsbHkgTW9kZXJhdG9yIGlmIHRoZXkgZW50ZXIgdGhlIFJvb20uIElmIHlvdSBkb24ndCB3YW50IHRvIHNwZWNpZnkgdGhhdCBhbmQgb25seSB3YW50IGEgY2VydGFpbiBVc2VyIHRvIGJlY29tZSBNb2RlcmF0b3IgdXNlIHRoZSBEZWZhdWx0IE1vZGVyYXRvciBvcHRpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkEgU3VwZXIgTW9kZXJhdG9yIGlzIGFsd2F5cyBhIE1vZGVyYXRvciB3aGVuIGhlIGVudGVycyBhIFJvb20sIGFuZCBub2JvZHkgY2FuIHJlbW92ZSB0aGUgTW9kZXJhdGlvbiBGbGFnIGZyb20gaGltPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkFwcGx5IFN1cGVyLU1vZGVyYXRpb24gdG8gVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjYiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5SZW1vdmUgU3VwZXIgTW9kZXJhdGlvbiBmcm9tIFVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjgiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5JZiB5b3UgYWRkIGFuIE9yZ2FuaXphdGlvbiB0byB0aGUgcm9vbSBvbmx5IHVzZXJzIG9mIHRoYXQgT3JnYW5pemF0aW9uIGhhdmUgYWNjZXNzIHRvIGl0IChUaGlzIGlzIG9ubHkgdmFsaWQgaWYgdGhlIGlzUHVibGljIGZsYWcgaXMgc2V0IHRvIGZhbHNlISk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI5IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+TW9kZXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzAiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5MaW1pdGF0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzEiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5Pcmdhbml6YXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODMyIiBuYW1lPSJjb25maXJtIGFjdGlvbiI+CisgICAgPHZhbHVlPkFyZSB5b3Ugc3VyZT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODMzIiBuYW1lPSJjb25maXJtIGRlbGV0ZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBJdGVtPyBZb3UgaGF2ZSB0byBwcmVzcyB0aGUgc2F2ZSBidXR0b24gdG8gc3RvcmUgdGhlIGNoYW5nZXMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNCIgbmFtZT0idXNlciBjaG9vc2UgZXJyb3IiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBVc2VyIHNlbGVjdGVkLiBQbGVhc2Ugc2VsZWN0IGZpcnN0IGJlZm9yZSB5b3UgYWRkIGl0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzUiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5BZGQgbmV3IERlZmF1bHQgTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkRvIHlvdSB3YW50IHRvIGFkZCB0aGUgU3VwZXIgTW9kZXJhdGlvbiBGbGFnIGZvciB0aGlzIFVzZXI/IEEgU3VwZXIgTW9kZXJhdG9yIGlzIG5vdCBvbmx5IE1vZGVyYXRvciBvZiBhIFJvb20sIGJ1dCBhbHNvIG5vIG90aGVyIE1vZGVyYXRvciBjYW4gcmVtb3ZlIHRoZSBNb2RlcmF0aW9uIEZsYWcgZm9yIHRoaXMgVXNlci4gWW91IG5lZWQgdG8gc2F2ZSB0aGUgUm9vbSBPYmplY3QgdG8gc2F2ZSB0aGVzZSBzZXR0aW5ncyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM3IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RG8geW91IHdhbnQgdG8gcmVtb3ZlIHRoZSBTdXBlciBNb2RlcmF0aW9uIEZsYWcgZm9yIHRoaXMgVXNlcj8gWW91IG5lZWQgdG8gc2F2ZSB0aGUgUm9vbSBPYmplY3QgdG8gc2F2ZSB0aGVzZSBzZXR0aW5ncyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM4IiBuYW1lPSJzdXBlciBtb2RlcmF0b3IiPgorICAgIDx2YWx1ZT5UaGlzIFVzZXIgaXMgYSBTdXBlci1Nb2RlcmF0b3IuIFlvdSBjYW5ub3QgcmVtb3ZlIHRoZSBNb2RlcmF0aW9uIGZsYWcgZnJvbSBhIFN1cGVyLU1vZGVyYXRvciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM5IiBuYW1lPSJjb25maXJtIGRlbGV0ZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyBGaWxlL0ZvbGRlcj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQwIiBuYW1lPSJjb25maXJtIGRlbGV0ZSI+CisgICAgPHZhbHVlPkRlbGV0ZSBGaWxlL0ZvbGRlcj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQxIiBuYW1lPSJzYWx1dGF0aW9uIj4KKyAgICA8dmFsdWU+TXJzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDIiIG5hbWU9InNhbHV0YXRpb24iPgorICAgIDx2YWx1ZT5Eci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQzIiBuYW1lPSJwcm9wZXJ0eSBwYW5lbCB3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+UHJvcGVydGllczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDQiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5TaG93IG1vdXNlIHBvc2l0aW9uIHRvIHZpZXdlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ1IiBuYW1lPSJwdWJsaXNoIG9wdGlvbiI+CisgICAgPHZhbHVlPlNoYXJlIEF1ZGlvIHdpdGggU0lQIEFwcGxldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDYiIG5hbWU9InB1Ymxpc2ggb3B0aW9uIj4KKyAgICA8dmFsdWU+U2hhcmUgQXVkaW8gd2l0aCBTSVAgYW5kIFZpZGVvIHdpdGggRmxhc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ3IiBuYW1lPSJkb2N1bWVudCBwYW5lbCI+CisgICAgPHZhbHVlPkZ1bGwtRml0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0OCIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+VmlldyBTY3JlZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ5IiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5UaGUgdXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTAiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPndhbnRzIHRvIHNoYXJlIGl0cyBzY3JlZW4uIERvIHlvdSB3YW50IHRvIHNlZSBpdD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUxIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5DbG9zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTIiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5ab29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MyIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPlRoZSBTZXNzaW9uIHdhcyBjbG9zZWQgYnkgdGhlIHNoYXJpbmcgVXNlciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU0IiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+UGF1c2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU1IiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+TmV3IFNjcmVlbiBTaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1NiIgbmFtZT0icHJlc2VudGVyIG1pbmkgaWNvbiI+CisgICAgPHZhbHVlPk1pbmltaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1NyIgbmFtZT0icHJlc2VudGVyIG1pbmkgaWNvbiI+CisgICAgPHZhbHVlPk1heGltaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1OCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+VmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU5IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5SZWNvcmRpbmcgVGltZWxpbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYwIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5NeSBSZWNvcmRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UHVibGljIFJlY29yZGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYyIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5JbmZvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2MyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjQiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkxlbmd0aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjUiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkRhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5CeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjciIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlBMQVk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY4IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5NYWluIC0gVmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODY5IiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5SZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcwIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Zb3UgbWF5IHJlY29yZCBhbmQgc2hhcmUgeW91ciBzY3JlZW4gYXQgdGhlIHNhbWUgdGltZS4gVG8gZW5hYmxlIG90aGVycyB0byBzZWUgeW91ciBzY3JlZW4ganVzdCBoaXQgdGhlIHN0YXJ0IGJ1dHRvbiBvbiB0aGUgdG9wLiBUbyBvbmx5IHJlY29yZCB0aGUgU2Vzc2lvbiBpdCBpcyBzdWZmaWNpZW50IHRvIGNsaWNrIHN0YXJ0IHJlY29yZGluZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcxIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5TdGFydCBSZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODcyIiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5TdG9wIFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzMiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkRvd25sb2FkIHRoZSBGTFYtRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzQiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc1IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5QbGF5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3NiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+U3RvcDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzciIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlVzZXIgaGFzIG1pY3JvcGhvbmUgb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc4IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlN0b3AgU2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzkiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+QWxsb3cgVXNlciBRdWVzdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgwIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPlR1cm4gdGhpcyBvZmYgdG8gcHJldmVudCB0aGF0IGFueSB1c2VyIGlzIGRpc3R1cmJpbmcgeW91IGluIHRoaXMgcm9vbS4gRWZmZWN0IGlzIHRoYXQgdGhlIEJ1dHRvbiB0byBhc2sgZm9yIE1vZGVyYXRpb24gKCJJIGhhdmUgYSBxdWVzdGlvbiIpIGlzIG5vdCB2aXNpYmxlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODEiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+UmlnaHRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RG93bmxvYWQgYXMgQVZJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RkxWPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QVZJPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UmF3IFNjcmVlbnZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NiIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QXVkaW8gb25seTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODciIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlRoZSBoYXZlIGJlZW4gZXJyb3JzIHdoaWxlIHByb2Nlc3NpbmcgdGhlIFJlY29yZGluZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg4IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5UaGUgUmVjb3JkaW5nIGlzIG5vdCB5ZXQgcmVhZHkgZm9yIHdhdGNoaW5nLiBQbGVhc2UgcmV0cnkgaW4gYSBjb3VwbGUgb2YgbWludXRlcyBhZ2Fpbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg5IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Mb2c6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UmVjb3JkZXIgTWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTEiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk9rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MiIgbmFtZT0ic2lwIGFwcGxldCI+CisgICAgPHZhbHVlPlNJUCBBcHBsZXQgaXMgbm90IFJlYWR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MyIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNJUC1BY2NvdW50IFNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NCIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNJUCBzZXR0aW5ncyBmb3IgZWFjaCB1c2VyLiBZb3UgY2FuIHR1cm4gb24gb3Igb2ZmIFNJUCB2aWEgdGhlIEFkbWluaXN0cmF0aW9uICZndDsgQ29uZmlndXJhdGlvbiAoS2V5OiBlbmFibGVfc2lwKS4gVGhlIFNJUCBkYXRhIGZvciBlYWNoIHVzZXIgc2hvdWxkIGJlIGNyZWF0ZWQgYXV0b21hdGljYWxseS4gWW91IGNhbiByZS1jcmVhdGUgdGhlIGRhdGEgYnkgY2hlY2tpbmcgIlJlLWdlbmVyYXRlIFNJUCBEYXRhIjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTUiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TSVAtVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTYiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TaXAtUGFzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTciIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5TaXAtQXV0aC1JZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OTgiIG5hbWU9InNpcCBzdGF0dXMgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSBMb2dpbiB0byB0aGUgU0lQIEdhdGV3YXkgaGFzIGZhaWxlZC4gWW91IHNob3VsZCBjaGVjayB0aGUgYXV0aGVudGlmaWNhdGlvbiBkYXRhIG9mIHlvdXIgU0lQLVByb3ZpZGVyIGFuZCB0aGUgU0lQLUFjY291bnQgRGF0YSBmb3IgZWFjaCBVc2VyLiBBcyBBZG1pbmlzdHJhdG9yIHlvdSBhcmUgc3RpbGwgYWJsZSB0byBsb2dpbiBhbmQgY2hlY2sgdGhlIENvbmZpZ3VyYXRpb24uIEFzIFVzZXIgb3IgTW9kZXJhdG9yIHlvdSB3aWxsIGJlIGJsb2NrZWQgZnJvbSBhbnkgaW50ZXJhY3Rpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5OSIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIExvZ2luIHRvIHRoZSBTSVAgR2F0ZXdheSBoYXMgZmFpbGVkLiBDb250YWN0IHlvdXIgU2VydmljZSBUZWFtITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDAiIG5hbWU9InNpcCBzdGF0dXMgbWVzc2FnZSI+CisgICAgPHZhbHVlPkxvZ2dpbmcgaW4gdG8gU0lQLUdhdGV3YXkgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwMSIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TG9nZ2luZyBpbiB0byBTSVAtR2F0ZXdheSAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAyIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TaG93IExvZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDMiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkxvZyBtZXNzYWdlcyBmcm9tIHBvc3QgcmVjb3JkZXIgcHJvY2VzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDQiIG5hbWU9InNpcCBsb2dpbiI+CisgICAgPHZhbHVlPlNJUC1BcHBsZXQgTWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDUiIG5hbWU9InNpcCBsb2dpbiI+CisgICAgPHZhbHVlPlRoZSBTSVAtQXBwbGV0IGlzIG5vdCByZWFkeS4gQWNjZXB0IHRoZSBBcHBsZXQgcGxlYXNlIGFuZCBjbGljayBvayE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA2IiBuYW1lPSJtb2RlcmF0b3IgcG9wIHVwIj4KKyAgICA8dmFsdWU+R2V0IE1vZGVyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA3IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+U2F2ZSBBcHBvaW50bWVudCBDaGFuZ2VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwOCIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlRoZSBhcHBvaW50ZW1lbnQgaGFzIGJlZW4gY2hhbmdlZC4gRG8geW91IHdhbnQgdG8gc2F2ZSB0aG9zZSBjaGFuZ2VzPyAmbHQ7YnIvJmd0OyZsdDtici8mZ3Q7QWxsIGF0dGVuZGVlcyBvZiB0aGUgYXBwb2ludG1lbnQgd2lsbCByZWNlaXZlIGEgRU1haWwgd2l0aCB0aGUgdXBkYXRlZCBkYXRlIGFuZCB0aW1lIChkZXBlbmRpbmcgb24gdGhlIG5vdGlmaWNhdGlvbiB0eXBlIG9mIHRoaXMgYXBwb2ludG1lbnQpLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDkiIG5hbWU9ImZsdiByZWNvcmRlciBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VG8gYWNjZXNzIG90aGVyIHJlY29yZGluZ3MgeW91IGhhdmUgdG8gbG9naW4gdGhlICRBUFBfTkFNRSBBcHBsaWNhdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTEwIiBuYW1lPSJpbnRlcnZpZXcgdmlkZW8gcG9kIj4KKyAgICA8dmFsdWU+Q2hvb3NlIHRoZSBVc2VyIGZvciB0aGlzIFZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMSIgbmFtZT0iaW50ZXJ2aWV3IHZpZGVvIGNob29zZSB1c2VyIj4KKyAgICA8dmFsdWU+QXZhaWxhYmxlIFVzZXJzIGZvciB0aGlzIFBvZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTIiIG5hbWU9ImludGVydmlldyBpbmZvIj4KKyAgICA8dmFsdWU+WW91IGFyZSBhIE1vZGVyYXRvciBpbiB0aGlzIEludGVydmlldy4gWW91IGNhbiBkZWNpZGUgd2hvIGlzIHNwZWFraW5nIGluIHRoaXMgaW50ZXJ2aWV3IGFuZCB5b3UgY2FuIHN0YXJ0IC8gc3RvcCB0aGUgcmVjb3JkaW5nIG9mIHRoZSBTZXNzaW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTMiIG5hbWU9ImludGVydmlldyBidXR0b24gcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+U3RhcnQgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxNCIgbmFtZT0iaW50ZXJ2aWV3IGJ1dHRvbiByZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TdG9wIFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTUiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIHJlY29yZGluZyBvZiB0aGUgSW50ZXJ2aWV3IGlzIGFscmVhZHkgc3RhcnRlZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE2IiBuYW1lPSJpbnRlcnZpZXcgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSByZWNvcmRpbmcgaXMgYWxyZWFkeSBzdG9wcGVkIG9yIG5vdCBiZWVuIHN0YXJ0ZWQgeWV0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTciIG5hbWU9ImludGVydmlldyByZWNvcmRpbmcgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZSByZWNvcmRpbmcgZm9yIHRoaXMgaW50ZXJ2aWV3IGlzIGFscmVhZHkgc3RhcnRlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE4IiBuYW1lPSJpbnRlcnZpZXcgZXJyb3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTkiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIHBvc3QtcHJvY2Vzc2luZyBvZiBhbiBpbnRlcnZpZXcgdGFrZXMgNSBtaW51dGVzIHBlciAxIG1pbnV0ZSBpbnRlcnZpZXcuIFRoZSBjdXJyZW50IHByb2dyZXNzIG9mIHRoZSBpbnRlcnZpZXcgcG9zdC1wcm9jZXNzaW5nIHRyYW5zY29kaW5nIGlzOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjAiIG5hbWU9InNpcCBjcmVhdGlvbiI+CisgICAgPHZhbHVlPllvdSBoYXZlIHRvIGVudGVyIHlvdXIgcGFzc3dvcmQgYWdhaW4gdG8gYXV0byBjcmVhdGUgdGhlIFNJUCBEYXRhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyMSIgbmFtZT0ic2lwIGNyZWF0aW9uIj4KKyAgICA8dmFsdWU+UmUtZ2VuZXJhdGUgU0lQIERhdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIyIiBuYW1lPSJmaWxlZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IG1vdmUgdGhpcyBmaWxlIG9yIGZvbGRlciBpbnRvIGl0cyBvd24gc3ViIGZvbGRlciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIzIiBuYW1lPSJmaWxlIGV4cGxvcmVyICI+CisgICAgPHZhbHVlPkhvbWUgZHJpdmUgc2l6ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjQiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5QdWJsaWMgZHJpdmUgc2l6ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjUiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5MaWNlbnNlIFNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNiIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPllvdSBjYW4gZWl0aGVyIGJpbmQgdGhlIHVzZXIgdG8gYSBleHBpcmUgRGF0ZSBvciB0byBhIG1heGltdW0gbnVtYmVyIG9mIG1pbnV0ZXMgd2hlbiB5b3UgZW5hYmxlIGxpY2Vuc2luZy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI3IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+Q2hlY2sgbGljZW5zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjgiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5GbGF0cmF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjkiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5FeHBpcmUgZGF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzAiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5TZWNvbmRzIGxlZnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMxIiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+VG90YWwgdGltZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzIiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdXIgTGljZW5zZSBoYXMgZXhwaXJlZC4gWW91IG5lZWQgdG8gYnV5IG5ldyBtaW51dGVzIChQYXktcGVyLW1pbnV0ZSkgb3IgYSB2b2x1bWUgZmxhdHJhdGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Q2xpY2sgYW5kIGJ1eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzQiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlRpbWUgTGVmdCBvbiB5b3VyIGFjY291bnQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzNSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+VXNlciBMaWNlbnNlIEluZm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM2IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5JbmZvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzNyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Q2xvc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM4IiBuYW1lPSJsaWNlbnNlLWluZm8iPgorICAgIDx2YWx1ZT5Zb3VyIGxpY2Vuc2UgaGFzIGV4cGlyZWQuIFlvdSBuZWVkIGVpdGhlciB0byBidXkgYSBtaW51dGUgcGFja2FnZSAoUGF5LXBlci1taW51dGUpIG9yIGEgdm9sdW1lIGZsYXRyYXRlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzkiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkxpY2Vuc2Ugc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQwIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIGVpdGhlciBidXkgbWludXRlcyB0byBtYWtlIFdlYi1Db25mZXJlbmNpbmcgKFBheS1wZXItbWludXRlKS4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7IE9yIHlvdSBidXkgYSB2b2x1bWUgZmxhdHJhdGUgYWJvdXQgMy0xMiBtb250aHMuJmx0O2JyLyZndDsmbHQ7YnIvJmd0O1NlbmRpbmcgaW52aXRhdGlvbnMgKGRpcmVjdCBsaW5rcyBpbnRvIENvbmZlcmVuY2UgUm9vbXMpIG9yIGNyZWF0aW5nIGNvbmZlcmVuY2UgUm9vbXMgdmlhIHRoZSBDYWxlbmRhciB3aXRoIGV4dGVybmFsIFVzZXJzIGlzIG9ubHkgYWxsb3dlZCB3aXRoIGEgdm9sdW1lIGZsYXRyYXRlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDEiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSA2MCBNaW51dGVzIDksOTkgRVVSTyAoMTYgQ2VudCBwZXIgTWludXRlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDIiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSA1IGhvdXJzIDE5LDk5IEVVUk8gKDYgQ2VudCBwZXIgbWludXRlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDMiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSAzIG1vbnRoIGZvciAyOSw5OSBFVVJPICg5LDk5IEV1cm8gcGVyIE1vbnRoKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDQiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkJ1eSA2IG1vbnRoIGZvciAzOSw5OSBFVVJPICg2LDY2IEV1cm8gcGVyIG1vbnRoKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDUiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlBheS1wZXItbWludXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Vm9sdW1lIGZsYXRyYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91IGhhdmUgdW5saW1pdGVkIExpY2Vuc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ4IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3VyIGxpY2Vuc2Ugd2lsbCBleHBpcmUgYXQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0OSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91IGJvdWdodCBQYXktcGVyLW1pbnV0ZS4gWW91IHN0aWxsIGhhdmU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IG5ldyBjcmVkaXQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+V2FudCB5b3VyIG93biBTZXJ2ZXI/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91IHdvdWxkIGxpa2UgdG8gaGF2ZSAkQVBQX05BTUUgaW5zdGFsbGVkIG9uIHlvdXIgU2VydmVyIG9yIGludGVncmF0ZWQgaW50byB5b3VyIE1vb2RsZSwgU3VnYXJDUk0sIFdlYnNpdGUgb3IgSW50cmFuZXQ/IFByaXppbmdzIHN0YXJ0IGF0IDUwMCBFdXJvIHBlciBJbnN0YWxsYXRpb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1MyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+T3Igc2VuZCB1cyBhIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU0IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5BbnN3ZXIgdG86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1NSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+TWVzc2FnZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU2IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5TZW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1NyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+Q2xpY2sgaGVyZSB0byBnZXQgY29udGFjdCBJbmZvIGFuZCBQcml6aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTgiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNyZWRpdCBDYXJkIERldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU5IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5GaXJzdG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYwIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5MYXN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjEiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNyZWRpdCBDYXJkIFR5cGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYyIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5WSVNBIENhcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTYzIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5NYXN0ZXJDYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2NCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+RGlzY292ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY1IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5BbWVyaWNhbiBFeHByZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2NiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q3JlZGl0IENhcmQgTnVtYmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2NyIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+RXhwaXJhdGlvbiBEYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2OCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q2FyZCBWZXJpZmljYXRpb24gTnVtYmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2OSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+QmlsbGluZyBBZGRyZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+QWRkcmVzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzEiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzIiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTczIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5Db3VudHJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U3RhdGUgKE9ubHkgVVMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+WklQPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+QW1vdW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3NyIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U3VibWl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3OCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U3RlcCAxOiAkQVBQX05BTUUgLSBQYXltZW50IEZvcm08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc5IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5FTWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODAiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNsaWNrICJDaGVjayBvdXQgd2l0aCBQYXlwYWwiIHRvIHBheS4mbHQ7YnIvJmd0OyBQYXlwYWwgYWNjZXB0cyBWSVNBLCBNYXN0ZXJDYXJkLCBEaXNjb3ZlciBvciBBbWVyaWNhbiBFeHByZXNzLiAmbHQ7YnIvJmd0O0l0IGRvZXMgbm90IHJlcXVpcmUgdG8gc2lnbiB1cCB3aXRoIFBheXBhbC4gJmx0O2JyLyZndDtDaXRpemVucyBmcm9tIEdlcm1hbnkgY2FuIGFsc28gcGF5IHdpdGggZGlyZWN0IGRlYml0IChQZXIgTGFzdHNjaHJpZnQtRWluenVnKS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgxIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5UaGFuayB5b3UgZm9yIGJ1eWluZyAkQVBQX05BTUUuICZsdDtici8mZ3Q7ICZsdDtici8mZ3Q7IEFzIHNvb24gYXMgd2UgcmVjZWl2ZWQgdGhlIHBheW1lbnQgeW91ciBhY2NvdW50IHdpbGwgYmUgdXBkYXRlZC4mbHQ7YnIvJmd0OyBZb3Ugd2lsbCByZWNlaXZlIGFuIEVNYWlsIHdpdGggeW91ciBpbnZvaWNlIGFzIFBERi4mbHQ7YnIvJmd0O1lvdSBjYW4gYWxzbyBjaGVjayBjdXJyZW50IGFuZCBwYXN0IHRyYW5zYWN0aW9ucyBpbiB5b3VyIHByb2ZpbGUgc2V0dGluZ3MuJmx0O2JyLyZndDsmbHQ7YnIvJmd0OyZsdDtici8mZ3Q7WW91IGNhbiBjbG9zZSB0aGlzIGJyb3dzZXIgd2luZG93L3RhYiBub3cgYW5kIHJldHVybiB0byAkQVBQX05BTUUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+U3VibWl0IGFuZCBCdXkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MyIgbmFtZT0icGF5bWVudC1mcm9tIj4KKyAgICA8dmFsdWU+Q2xpY2sgYW5kIEJ1eSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg0IiBuYW1lPSJwYXltZW50LWZyb20iPgorICAgIDx2YWx1ZT5TdGVwIDM6ICRBUFBfTkFNRSBQYXltZW50IC0gQ2hlY2sgb3JkZXIgYW5kIGJ1eSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg1IiBuYW1lPSJwYXltZW50LWZyb20iPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4NiIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+UGF5bWVudCByZWNlaXZlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg3IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5IaSw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg4IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5XZSBoYXZlIHJlY2VpdmVkIHlvdXIgcGF5bWVudC4gWW91ciB1c2VyIHByb2ZpbGUgaXMgdXBkYXRlZCBub3cuIFNlZSBhdHRhY2hlZCB5b3VyIEludm9pY2UuIFRoZSBJbnZvaWNlIGFuZCBhbGwgcGFzdCBJbnZvaWNlIGNhbiBhbHNvIGJlIGRvd25sb2FkZWQgaW4geW91ciB1c2VyIHByb2ZpbGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4OSIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+VGhhbmsgeW91IGZvciB1c2luZyAkQVBQX05BTUUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MCIgbmFtZT0icGF5bWVudC1tYWlsIj4KKyAgICA8dmFsdWU+UGF5bWVudCBSZWNlaXZlZCAkQVBQX05BTUUgLTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTEiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5QYXltZW50IGFuZCBUcmFuc2FjdGlvbiBTdGF0dXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkyIiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+VHJhbnNjYXRpb24gSGFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTMiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NaW51dGVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NCIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPk1vbnRoczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTUiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5FVVI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk2IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+U3RhdHVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NyIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPkludm9pY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk4IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5OSIgbmFtZT0iZXJyb3ItbGljZW5zZS1mbGF0Ij4KKyAgICA8dmFsdWU+WW91IG5lZWQgdG8gYnV5IGEgdm9sdW1lIGZsYXRyYXRlIHRvIGJlIGFibGUgdG8gc2VuZCBpbnZpdGF0aW9ucyBvciBjcmVhdGUgbWVldGluZ3MgdmlhIHRoZSBjYWxlbmRhci4gV2l0aCBQYXktcGVyLW1pbnV0ZSBpdCBpcyBvbmx5IHBvc3NpYmxlIGZvciB5b3UgdG8gYWNjZXNzICRBUFBfTkFNRS4gWW91IGNhbm5vdCBhbGxvdyAzdGggUGFydGllcyB0byBhY2Nlc3MgYSBNZWV0aW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAwIiBuYW1lPSJlcnJvciB1c2VyIj4KKyAgICA8dmFsdWU+VGhpcyBFbWFpbCBpcyBhbHJlYWR5IHVzZWQgYnkgYW5vdGhlciBVc2VyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAxIiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+U0lQLVNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDIiIG5hbWU9InJvb20tYWRtaW4iPgorICAgIDx2YWx1ZT5UaGUgQ29uZmVyZW5jZSBOdW1iZXIgYW5kIFBJTiBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgdmlhIHRoZSBPcGVuWEcgUlBDLUdhdGV3YXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwMyIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlNJUCBOdW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNCIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlBJTjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA1IiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+Q2xlYXIgb2JqZWN0cyBvbiBjdXJyZW50IHNsaWRlIG9ubHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDYiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5Pbmx5IHRoZSBVUkwgZW50ZXJlZCBpbiB0aGUgU3RhdHVzIGJhciBpcyBzZW5kIHRvIHBhcnRpY2lwYW50cyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk1ha2UgVGVhbS1Sb29tcyBbQnJlYWtvdXQgc2Vzc2lvbl08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNob29zZSB1c2VycyBmb3IgYSBuZXcgVGVhbS1Sb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+WW91IGNhbiBjaG9vc2UgdXNlcnMgaGVyZSBhbmQgY3JlYXRlIGEgbmV3IENvbmZlcmVuY2UgUm9vbSAoIlRlYW0gUm9vbSIpIGZvciB0aGVtLiBUaGUgY2hvc2VuIHVzZXJzIHdpbGwgYXV0b21hdGljYWxseSBzd2l0Y2ggdG8gdGhlIG5ldyBUZWFtLVJvb20gb3IgZ2V0IGEgbm90aWZpY2F0aW9uLiBUZWFtLVJvb20gTW9kZXJhdG9ycyB3aWxsIGdldCBhZGRpdGlvbmFsbHkgYSBsaXN0IG9mIGN1cnJlbnQgcm9vbXMgc28gdGhhdCB0aGV5IGNhbiBzd2l0Y2ggdG8gZWFjaCByb29tIGlmIHRoZXJlIGFyZSBpcyBuZWVkIGZvciBhIE1vZGVyYXRvci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Vc2VycyBmb3IgdGhlIG5ldyBUZWFtLVJvb206PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DcmVhdGUgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNob29zZSBhdCBsZWFzdCBvbmUgdXNlciBmb3IgdGhlIFRlYW0tUm9vbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkFkZCB1c2VyIHRvIHRlYW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlJlbW92ZSB1c2VyIGZyb20gVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Vc2VyIGlzIFRlYW0tUm9vbSBNb2RlcmF0b3IgKEhlIGlzIGFibGUgdG8gbWFuYWdlIFRlYW0tUm9vbXMgYW5kIHVzZXJzIG9mIHRoZSBUZWFtLVJvb20gY2FuIGFzayBoaW0gdG8gY29tZSBpbnNpZGUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Sb29tdHlwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+SWYgeW91IGNoZWNrICJGb3JjZSB1c2VyIHRvIHN3aXRjaCB0byBuZXcgVGVhbS1Sb29tIiBhbGwgY2hvc2VuIHVzZXJzIHdpbGwgYXV0b21hdGljYWxseSBzd2l0Y2ggdG8gdGhlIG5ld2x5IGNyZWF0ZWQgVGVhbS1Sb29tLiBPdGhlcndpc2UgdGhleSBnZXQgYSBub3RpZmljYXRpb24gd2l0aCBhIGJ1dHRvbiB0aGF0IHRoZXkgJmx0O2kmZ3Q7Y2FuJmx0Oy9pJmd0OyBzd2l0Y2ggdG8gdGhlIG5ldyByb29tLiBUZWFtLU1vZGVyYXRvcnMgYWx3YXlzIGhhdmUgdGhlIGZyZWUgY2hvaWNlIHRvIG1hbmFnZSB0aGUgVGVhbS1Sb29tcyBhbmQgc3dpdGNoIGJldHdlZW4gdGhlbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk1hbmFnZSBUZWFtLVJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIHN3aXRjaCBoZXJlIGJldHdlZW4gYWxsIFRlYW0tUm9vbXMgdGhhdCB5b3UgYXJlIGFzc2lnbmVkIGFzIFRlYW0tUm9vbSBNb2RlcmF0b3IuIFVzZXJzIGluc2lkZSB0aGUgVGVhbS1Sb29tIGNhbiBzZW5kIHlvdSBhIG1lc3NhZ2UsIGZvciBleGFtcGxlIHRvIGFzayB5b3UgdG8gY29tZSB0byB0aGVpciByb29tIGFuZCBoZWxwIHRoZW0uIFlvdSBjYW4gYWxzbyB0ZXJtaW5hdGUgdGhlIFRlYW0tUm9vbSBhbmQgYWxsIFVzZXJzIHdpbGwgYmUgbG9nZ2VkIG91dC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkZvcmNlIHVzZXIgdG8gc3dpdGNoIHRvIG5ldyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNyZWF0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Vc2VycyBhdmFpbGFibGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkFkZCBhIHVzZXIgd2l0aCB0aGUgcGx1cyBmcm9tIHRoZSBsZWZ0IG9yIHJlbW92ZSBpdCB3aXRoIHRoZSBjcm9zcyBmcm9tIHRoZSByaWdodCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPjEpIFRlYW0tUm9vbSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MikgQWRkIHVzZXJzIHRvIHRoZSBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzMyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW0tUm9vbSBOYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNoYW5nZSB0byB0aGUgUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U3dpdGNoIHRvIHRoaXMgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZXJtaW5hdGUgVGVhbS1Sb29tIGFuZCBsb2dvdXQgYWxsIFVzZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5OZXcgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBhIG5ldyBUZWFtLVJvb20gYXZhaWxhYmxlIGZvciB5b3UuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Td2l0Y2ggdG8gVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb20gQWN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+WW91IGNhbiByZS1vcGVuIHRoaXMgd2luZG93IHZpYSB0aGUgbWFpbiBtZW51IGluIHRoZSAiQWN0aW9ucyIgc2VjdGlvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlNlbmQgbWVzc2FnZSB0byBUZWFtLVJvb20gTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5OZXcgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBhIG5ldyBUZWFtLVJvb20gYXZhaWxhYmxlLiBZb3UgY2FuIHN3aXRjaCB0byB0aGF0IFJvb20uIFRlYW0tUm9vbXMgYXJlIGxpa2UgIldvcmtncm91cHMiIHdpdGggYWRkaXRpb25hbGx5IHBvc3NpYmlsaXRpZXMgdG8gYXNrIHRoZSBUZWFtLVJvb20gTW9kZXJhdG9yIGZvciBoZWxwLiBZb3VyIFRlYW0tUm9vbXMgYXJlIGFsc28gYXZhaWxhYmxlIGluIHRoZSAiTXkgTWVldGluZ3MiIHNlY3Rpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Td2l0Y2ggdG8gVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5DcmVhdGVkIGJ5OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQ4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVhbS1Sb29tIG5hbWU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGlzIFdpbmRvdyB3aWxsIHN0YXkgb3BlbiBldmVuIGlmIHlvdSBsZWF2ZSB0aGUgcm9vbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1MCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJzIGZvciB0aGlzIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MykgT3RoZXIgVGVhbS1Sb29tcyB0aGF0IHlvdSBjb3VsZCBzd2l0Y2ggdG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1MiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlNlbmQgYSBtZXNzYWdlIHRvIHRoZSBUZWFtLVJvb20gTW9kZXJhdG9ycy4gRm9yIGV4YW1wbGUgaWYgeW91IG5lZWQgaGVscCBpbiBNb2RlcmF0aW5nIHRoZSBSb29tIG9yIGlmIHlvdSBoYXZlIGEgcXVlc3Rpb24gYWJvdXQgdGhlIHRvcGljLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U2VuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MikgVXNlcnMgdGhhdCBhcmUgaW52aXRlZCB0byB0aGlzIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+SXMgVGVhbS1Sb29tIE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGhlc2UgYXJlIGFsbCB1c2VycyB0aGF0IHRoZSBtb2RlcmF0b3IgaGFzIGludml0ZWQgdG8gdGhpcyBUZWFtLVJvb20uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTciIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBUZWFtLU1vZGVyYXRvciBsb2dnZWQgaW4gYXQgdGhlIG1vbWVudCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1OCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1OSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlBsZWFzZSBoZWxwIHVzLCB3ZSBoYXZlIGEgcHJvYmxlbSBpbiBvdXIgVGVhbS1Sb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+QSB1c2VyIGZyb20gYSBUZWFtLVJvb20gcmVxdWVzdHMgeW91ciBoZWxwLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVhbS1Sb29tIHJlcXVlc3QgZm9yIGhlbHA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2MiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk1lc3NhZ2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Gcm9tOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+WW91IGFyZSBjdXJyZW50bHkgbm90IGluIGFueSBUZWFtLVJvb20uIEJ1dCB5b3UgY2FuIHN3aXRjaCBoZXJlIHRvIGFsbCBUZWFtLVJvb21zIHRoYXQgeW91IGhhdmUgYWNjZXNzIHRvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY1IiBuYW1lPSJiYWNrdXBDb250ZW50Ij4KKyAgICA8dmFsdWU+QmFja3VwIHRoZSBTeXN0ZW0uIFRoZSBCYWNrdXAgaW5jbHVkZXMgYWxsIFVzZXIgZ2VuZXJhdGVkIGRhdGEuIFRoZSBjb25maWd1cmF0aW9uIGlzIG5vdCBpbmNsdWRlZCBhcyB3ZWxsIGFzIHRoZSBsYW5ndWFnZSBsYWJlbHMuIEJlY2F1c2UgdGhvc2UgdmFsdWVzIGFyZSBpbXBvcnRlZCB3aXRoIHRoZSBTeXN0ZW0gSW5zdGFsbGVyLiBUbyB1cGRhdGUgeW91ciBTeXN0ZW0sIGV4cG9ydCB5b3VyIG9sZCBzeXN0ZW0gKDEpIHJlLWluc3RhbGwgaW50byBhIG5ldyBkYXRhYmFzZSB0aGUgbmV3IHBhY2thZ2UgKDIpIGFuZCBpbXBvcnQgdGhlIEJhY2t1cCBmaWxlIGFnYWluICgzKS4gVGhlIEJhY2t1cCBzaG91bGQgYmUgaW1wb3J0ZWQgYmVmb3JlIGdlbmVyYXRpbmcgZGF0YSBpbiB0aGUgbmV3bHkgaW5zdGFsbGVkIHN5c3RlbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2NiIgbmFtZT0iYmFja3VwQ29udGVudCI+CisgICAgPHZhbHVlPlN5c3RlbSBCYWNrdXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2NyIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+QWxsb3cgdXNlciB0byBzaGFyZSBTY3JlZW4vUmVjb3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjgiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPkRlbnkgdXNlciB0byBzaGFyZSBTY3JlZW4vUmVjb3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjkiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPlVzZXIgaXMgTW9kZXJhdG9yLCBoZSBjYW4gZG8gYW55dGhpbmchPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzAiIG5hbWU9ImFwcGx5IGZvciBzY3JlZW4vcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0byBzaGFyZS9yZWNvcmQgc2NyZWVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDcxIiBuYW1lPSJtb2RlcmF0aW9uIG1pbmkgaWNvbnMiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGFsbG93ZWQgdG8gc2hhcmUvcmVjb3JkIHNjcmVlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDcyIiBuYW1lPSJtb2RlcmF0aW9uIG1pbmkgaWNvbnMiPgorICAgIDx2YWx1ZT5BcHBseSBmb3IgcmlnaHQgdG8gc2hhcmUvcmVjb3JkIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3MyIgbmFtZT0ibW9kZXJhdGlvbiBtaW5pIGljb25zIGNvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT5BbGxvdy9EZW55IHJpZ2h0IHRvIHNoYXJlL3JlY29yZCBzY3JlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzQiIG5hbWU9InNvdW5kIGljb24iPgorICAgIDx2YWx1ZT5UdXJuIHNvdW5kIG9mZjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc1IiBuYW1lPSJzb3VuZCBpY29uIj4KKyAgICA8dmFsdWU+VHVybiBzb3VuZCBvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc2IiBuYW1lPSJyb29tIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+QXVkaW8gb25seSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzciIG5hbWU9InJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5UdXJuIHRoaXMgRmxhZyBvbiBhbmQgdGhlIHVzZXJzIHdpbGwgaGF2ZSBvbmx5IHRoZSBBdWRpby1PcHRpb24gYW5kIG5vIFZpZGVvIGluIGEgY29uZmVyZW5jZSByb29tLiBUaGlzIGNhbiBieSBnb29kIHRvIHNhdmUgYmFuZHdpZHRoLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc4IiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5BbGxvdyBSZW1vdGUgQ29udHJvbCAoRHVyaW5nIFNjcmVlbiBTaGFyaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDc5IiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5EZW55IFJlbW90ZSBDb250cm9sIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODAiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFwcGx5IGZvciByaWdodCB0byBSZW1vdGUgQ29udHJvbCBTY3JlZW4gKER1cmluZyBTY3JlZW4gU2hhcmluZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MSIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+WW91IGFyZSBhbGxvd2VkIHRvIFJlbW90ZSBDb250cm9sIFNjcmVlbiAoRHVyaW5nIFNjcmVlbiBTaGFyaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgyIiBuYW1lPSJhcHBseSBmb3IgcmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIHJlbW90ZSBjb250cm9sIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MyIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+VXNlciBpcyBNb2RlcmF0b3IsIGhlIGNhbiBkbyBhbnl0aGluZyEgW1JlbW90ZSBEZXNrdG9wIENvbnRyb2xdPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODQiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFsbG93L0RlbnkgcmlnaHQgdG8gUmVtb3RlIENvbnRyb2wgU2NyZWVuIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODUiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPjEpIFlvdXIgUEMgdG8gcmVtb3RlIFBDOiBUbyBjb3B5IGFuZCBwYXN0ZSB0ZXh0IGZyb20geW91ciBjbGlwYm9hcmQgaW50byB0aGUgcmVtb3RlIGNvbnRyb2xsZWQgc2NyZWVuLCBjbGljayBvbiB0aGUgc2NyZWVuLCB0aGVuIHJpZ2h0IGNsaWNrIGluIHRoZSB0ZXh0IGZpZWxkIGFuZCBjaG9vc2UgIkluc2VydCIgZnJvbSB0aGUgY29udGV4dCAocmlnaHQgY2xpY2spIG1lbnUuJmx0O2JyLyZndDsmbHQ7YnIvJmd0OzIpIEZyb20gcmVtb3RlIFBDIHRvIHlvdXIgUEM6IFRvIGNvcHkgdGV4dCBmcm9tIHRoZSByZW1vdGUgUEMgdG8geW91ciBQQydzIGNsaXBib2FyZCwgaGlnaGxpZ2h0IHRoZSB0ZXh0IHdpdGggdGhlIG1vdXNlIG9uIHRoZSByZW1vdGUgc2NyZWVuLCB0aGVuIHJpZ2h0LWNsaWNrIG9uIHRoZSByZW1vdGUgc2NyZWVuIGFuZCBjaG9vc2UgJmx0O2kmZ3Q7Q29weSBoaWdobGlnaHRlZCB0ZXh0Jmx0Oy9pJmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg2IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Db3B5IGFuZCBQYXN0ZSB0ZXh0IGZyb20geW91ciBQQyB0byByZW1vdGUgUEMgYW5kIHZpY2UtdmVyc2EuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODciIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNvcHkgaGlnaGxpZ2h0ZWQgdGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDg4IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Ib3cgdG8gY29weSBuIHBhc3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODkiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPlF1YWxpdHkgb2YgdGhlIFNjcmVlblNoYXJlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkwIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5WZXJ5IGhpZ2ggUXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkxIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5IaWdoIFF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5MiIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+TWVkaXVtIFF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5MyIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+TG93IFF1YWxpdHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NCIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5lbl9VUzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk1IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPmRlX0RFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTYiIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+S2V5Ym9hcmQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTciIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+Q2xvc2UgV2ViaW5hciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5OCIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5UaGUgV2ViaW5hciBpcyBhbHJlYWR5IGNsb3NlZCwgeW91IHdpbGwgYmUgcmVkaXJlY3RlZCB0byBzb21lIGludGVyZXN0aW5nIG9mZmVyaW5ncyBpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk5IiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPkNsb3NlIFJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMCIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5FeGl0IFVSTDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAxIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPlJvb20gdGVybWluYXRpb24gc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMiIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5JZiB0aGUgcm9vbSBpcyBjbG9zZWQgdXNlcnMgd2lsbCBiZSByZWRpcmVjdGVkIHRvIHRoZSBleGl0IFVSTC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwMyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5MZGFwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDQiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDYiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+Q29uZmlnIEZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5MZGFwIENvbmZpZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA4IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwOSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5FbmFibGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTAiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+SW5zZXJ0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMSIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JbnNlcnRlZCBieTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEyIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPlVwZGF0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5VcGRhdGVkIGJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTQiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+VGhlIGNvbmZpZyBmaWxlcyBhcmUgaW4gdGhlIGZvbGRlciB3ZWJhcHBzL29wZW5tZWV0aW5ncy9jb25mLiBZb3UgbmVlZCB0byBtYW51YWxseSB1cGxvYWQgdGhlIGZpbGVzIHRvIHRoaXMgZm9sZGVyLiBDaGFuZ2VzIHRvIHRoZSBjb25maWcgZmlsZSBhcmUgaW1tZWRpYXRlbHkgb25saW5lLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE1IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkNvbmZpZyBmaWxlIG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNiIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JZiB5b3UgZW5hYmxlICJBZGQgRG9tYWluIHRvIHVzZXJuYW1lIiB0aGUgdmFsdWUgb2YgdGhlIGZpZWxkICJkb21haW4iIGlzIGFkZGVkIHRvIGVhY2ggbG9naW4gdGhhdCB0aGUgdXNlciBlbnRlcnMgaW4gdGhlIGxvZ2luIGJveC4gVGhpcyBpcyB1c2VmdWwgaWYgdGhlIExvZ2luIGluIHRoZSBMZGFwIGlzIHN0b3JlZCBpbmNsdWRpbmcgdGhlIGRvbWFpbiBuYW1lLiBFeGFtcGxlOiBVc2VyIGVudGVycyAiaGFucyIgZG9tYWluIGlzIHNwZWNpZmllZCBhcyAibG9jYWxob3N0LmNvbSIsIGxvZ2luIHRoYXQgaXMgdmVyaWZpZWQgYWdhaW5zdCBMZGFwIGlzOiBoYW5zQGxvY2FsaG9zdC5jb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNyIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5BZGQgRG9tYWluIHRvIHVzZXJuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTgiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+RG9tYWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTkiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+SW5zZXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjAiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+Q29weSBoaWdobGlnaHRlZCB0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjEiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+UmVtb3RlIENsaXBib2FyZCBUZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjIiIG5hbWU9InJlbW90ZSBjb250cm9sIj4KKyAgICA8dmFsdWU+U2hvdyByZW1vdGUgQ2xpcGJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjMiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkRvIG5vdCBzaG93IGFnYWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjQiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNvcHkgdGV4dCBoZXJlIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI1IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0aGUgcmlnaHQgdG8gcmVtb3RlIGNvbnRyb2wgKG9yIHRoZSBtb2RlcmF0aW9uKSB0byBjb3B5IGFuZCBwYXN0ZSB0ZXh0IHRvIG9yIGZyb20gdGhlIHJlbW90ZSBzY3JlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjYiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkVkaXQgZGVmYXVsdCBzZXR0aW5ncyAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNyIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+RG8gbm90IHNob3cgaW5mbyBib3ggaW4gUmVtb3RlIENvbnRyb2wgYWJvdXQgQ29weSBhbmQgUGFzdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyOCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5TYXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjkiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+UmVtb3ZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzAiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzEiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5JbnZpdGUgdXNlciB0byBjb25mZXJlbmNlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMiIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkNob29zZSBhIGNvbmZlcmVuY2Ugcm9vbS4gVGhlIGludml0ZWQgdXNlciB3aWxsIGdldCBhIG1lc3NhZ2Ugd2l0aCB5b3VyIG5hbWUgYW5kIGEgbGluayB0byB0aGUgcm9vbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMyIgbmFtZT0iY2hhdCB1c2VyIj4KKyAgICA8dmFsdWU+Q29ubmVjdGVkIHNpbmNlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM0IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+RW50ZXIgcm9vbSBhZnRlciBzZW5kaW5nIGludml0YXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzNSIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkludml0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM2IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+TWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM3IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+d291bGQgbGlrZSB0byBpbnZpdGUgeW91IHRvIHRoZSBjb25mZXJlbmNlIHJvb206PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzgiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5JbnZpdGUgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM5IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+U2VuZCBJbnZpdGF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDAiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5kaWQgJmx0O2ImZ3Q7bm90Jmx0Oy9iJmd0OyBhY2NlcHQgeW91ciBpbnZpdGF0aW9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQxIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+QWNjZXB0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDIiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5EZW55PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDMiIG5hbWU9InVzZXIgcHJvZmlsZSI+CisgICAgPHZhbHVlPlRpbWV6b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDQiIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPkV2ZW50IERldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0NSIgbmFtZT0iYXBwb2ludG1lbnQgbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ2IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5EZXNjcmlwdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ3IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5DcmVhdGVkIGJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDgiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5UaW1lWm9uZSBNZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDkiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5DaGVjayAiVGltZVpvbmUgTWVzc2FnZSIgdG8gZ2l2ZSB1c2VycyBhIG1lc3NhZ2UgbmV4dCB0aW1lIHRoZXkgbG9naW4gdG8gdXBkYXRlIHRoZWlyIHByb2ZpbGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTAiIG5hbWU9InRpbWUgem9uZSB1cGRhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlBsZWFzZSBjaGVjayB0aGUgdGltZSB6b25lIGluIHlvdXIgdXNlciBwcm9maWxlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUxIiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5OZXcgJEFQUF9OQU1FIGNvbmZlcmVuY2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTIiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkRldGFpbHM6Jmx0O2JyLyZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MyIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3RhcnQ6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTQiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkVuZDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NSIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2hhbmdlZCAkQVBQX05BTUUgY29uZmVyZW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NiIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+T3JnYW5pemVyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU3IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DYW5jZWxlZCAkQVBQX05BTUUgY29uZmVyZW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1OCIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIGNvbmZlcmVuY2UgUmVtaW5kZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTkiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Db21tdW5pdHkgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlNob3cgY29udGFjdCBkYXRhIHRvIGV2ZXJ5Ym9keTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYxIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+QWRkIGZpZWxkcyBvZiBpbnRlcmVzdCB0aGF0IHlvdSBvZmZlciBvciB0aGF0IHlvdSBhcmUgc2VhcmNoaW5nIHRvIGZpbmQgaW50ZXJlc3RpbmcgcGFydG5lcnMgZm9yIGEgY29uZmVyZW5jZS4gQ29tbWEgc2VwYXJhdGUgdGhlIHRlcm1zIChmb3IgZXhhbXBsZTogTWVkaWNhbCBTZXJ2aWNlLCBIZWFsdGggYXNzdXJhbmNlLCAuLi4pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjIiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NeSBvZmZlcmluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MyIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk15IGludGVyZXN0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY0IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY1IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+VGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2NiIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkZpZWxkcyBvZiBpbnRlcmVzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY3IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+Q29udGFjdCBpbmZvcm1hdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY4IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2hvdyBjb250YWN0IGRhdGEgdG8gY29udGFjdHMgb25seTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY5IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2hvdyBjb250YWN0IGRhdGEgdG8gbm9ib2R5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzAiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5NeSBQcm9maWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzEiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5FZGl0IHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzIiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TZWFyY2ggdXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MyIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPldhdGNoIHlvdXIgcHJvZmlsZSBsaWtlIG90aGVyIHNlZSB5b3U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkVkaXQgeW91ciBzZXR0aW5ncywgYWRkIHlvdXIgaW50ZXJlc3RzIHRvIGJlIGZvdW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzUiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TZWFyY2ggZm9yIG90aGVyIHVzZXJzIGFuZCBleHRlbmQgeW91ciBuZXR3b3JrPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzYiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+U2VhcmNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzciIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+VXNlciBvZmZlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3OCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5Vc2VyIGxvb2tzIGZvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc5IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkZyZWV0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODAiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgxIiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlRpbWV6b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODIiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+T2ZmZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODMiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+U2VhcmNoczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg0IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlNlYXJjaHJlc3VsdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg1IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkFjdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NiIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5BZGQgdG8gY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4NyIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5TZW5kIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4OCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5Db250YWN0cyBhbmQgTWVzc2FnZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4OSIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5QZW5kaW5nIGNvbnRhY3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTAiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5BY2NlcHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkRlbnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MiIgbmFtZT0idXNlciBjb250YWN0IHJlcXVlc3QiPgorICAgIDx2YWx1ZT5IaSw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MyIgbmFtZT0idXNlciBjb250YWN0IHJlcXVlc3QiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGFkZCB5b3UgYXMgY29udGFjdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NCIgbmFtZT0idXNlciBjb250YWN0IHJlcXVlc3QiPgorICAgIDx2YWx1ZT5DaGVjayB5b3VyIGNvbnRhY3QgcmVxdWVzdHMgaW4gJEFQUF9OQU1FIG9yIGNsaWNrIG9uIHRob3NlIGxpbmtzIHRvIGFjY2VwdCBvciBkZW55IHRoZSByZXF1ZXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTUiIG5hbWU9ImFkZCB1c2VyIGNvbnRhY3QiPgorICAgIDx2YWx1ZT5UaGlzIHVzZXIgaXMgYWxyZWFkeSBpbiB5b3VyIGNvbnRhY3QgbGlzdCBvciBoYXMgcmVjZWl2ZWQgYW4gaW52aXRhdGlvbiB0byB5b3VyIGNvbnRhY3QgbGlzdCB0aGF0IGlzIG5vdCBhbnN3ZXJlZCB5ZXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTYiIG5hbWU9InVzZXIgY29udGFjdCBtYWlsIj4KKyAgICA8dmFsdWU+WW91ciBjb250YWN0IGxpc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkVkaXQgeW91ciBjb250YWN0IGFuZCBtZXNzYWdlcywmbHQ7YnIvJmd0OyBtYW5hZ2UgeW91ciBwZW5kaW5nIGNvbnRhY3RzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk4IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+Y29uZmlybWVkIHlvdSBhcyBjb250YWN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk5IiBuYW1lPSJjaGF0IGluZm8gbWVzc2FnZSI+CisgICAgPHZhbHVlPjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAwIiBuYW1lPSJjaGF0IGxvZyBpY29uIj4KKyAgICA8dmFsdWU+U2hvdyAvIENvcHkgY2hhdCBsb2c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMSIgbmFtZT0iY2hhdCBsb2cgd2luZG93Ij4KKyAgICA8dmFsdWU+Q2hhdCBMb2c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwMiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RnJvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TdWJqZWN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDYiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1lc3NhZ2VzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDciIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk5ldyBNYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDgiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkNsaWNrIHRvIHdyaXRlIGEgbmV3IG1lc3NhZ2UgdG8gYW55IG9mIHlvdXIgY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwOSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+V3JpdGUgbmV3IG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VG86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlN1YmplY3Q6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTIiIG5hbWU9IndoaXRlYm9hcmQgZnVsbC1maXQiPgorICAgIDx2YWx1ZT5FbmFibGUgZnVsbCBmaXQgYW5kIHRoZSB3aGl0ZWJvYXJkIHdpbGwgem9vbSB0aGUgd2hvbGUgd2hpdGVib2FyZCBzbyB0aGF0IGFsbCZsdDtici8mZ3Q7ZG9jdW1lbnRzIGFyZSB2aXNpYmxlIGFjY29yZGluZyB0byBlYWNoIHBhcnRpY2lwYW50cyBzY3JlZW4gcmVzb2x1dGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMyIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+S2ljayB1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTQiIG5hbWU9InVzZXItbGlzdCI+CisgICAgPHZhbHVlPllvdSBjYW5ub3Qga2ljayB5b3Vyc2VsZiBvdXQgb2YgdGhlIGNvbmZlcmVuY2Ugcm9vbSEgSWYgeW91IHdhbnQgdG8gbGVhdmUgaXQgY2xvc2UgdGhlIGJyb3dzZXIgb3IgdXNlIHRoZSBleGl0IGJ1dHRvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNSIgbmFtZT0ia2ljay11c2VyIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRpc2Nvbm5lY3QgdGhpcyB1c2VyIGZyb20gdGhpcyBjb25mZXJlbmNlIHJvb20/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTYiIG5hbWU9ImtpY2stdXNlciI+CisgICAgPHZhbHVlPkNvbmZpcm0gYWN0aW9uIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE3IiBuYW1lPSJraWNrLXVzZXIiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IGtpY2sgYSBTdXBlci1Nb2RlcmF0b3Igb3V0IG9mIGEgcm9vbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxOCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Qm9vayBjb25mZXJlbmNlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxOSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3RhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZCBhbiBvcHRpb25hbCByZXF1ZXN0IGZvciBtZWV0aW5nIHRvIHRoZSBtZXNzYWdlIGFuZCBjcmVhdGUgYSBjb25mZXJlbmNlIHJvb20uIFRoZSBFdmVudCBpcyB0aGVuIGNvcGllZCBpbiB0aGUgY2FsZW5kYXIgb2YgZXZlcnkgcGFydGljaXBhbnQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkluYm94PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VHJhc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhpcyBpcyB5b3UhIFlvdSBjYW5ub3QgYWRkIHlvdXJzZWxmIGFzIHlvdXIgb3duIGNvbnRhY3QuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjYiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5UaGUgdXNlciBpcyBhbHJlYWR5IGRlbmllZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoZSB1c2VyIGlzIGFscmVhZHkgYXBwcm92ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjgiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5UaGlzIHVzZXIgY29udGFjdCBoYXNoIGlzIGludmFsaWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMjkiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Vc2VyIGFkZGVkIHRvIGNvbnRhY3QgbGlzdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlVzZXIgZGVuaWVkIGFzIGNvbnRhY3QgYW5kIHJlbW92ZWQgZnJvbSBwZW5kaW5nIGNvbnRhY3QgbGlzdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIHN1Y2ggY29udGFjdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzMiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPldvdWxkIHlvdSByZWFsbHkgbGlrZSB0byByZW1vdmUgdGhhdCBjb250YWN0PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMzIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+Q29uZmlybSBjb250YWN0IHJlbW92YWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkRlbGV0ZSBjb250YWN0IGZyb20gbGlzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM1IiBuYW1lPSJ1c2VyIHByb2ZpbGUiPgorICAgIDx2YWx1ZT5Vc2VyIFByb2ZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNiIgbmFtZT0idXNlciBwcm9maWxlIj4KKyAgICA8dmFsdWU+U2hvdyB1c2VyIHByb2ZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzNyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWVzc2FnZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzOCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VhcmNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbGVjdCBhbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0MCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VsZWN0IG5vbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0MSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VsZWN0IHVucmVhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWxlY3QgcmVhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Nb3ZlIHRvIGZvbGRlciAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIG5ldyBmb2xkZXIgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRlbGV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ2IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EZWxldGVkIG1haWxzIGFyZSBzdGlsbCBpbiB5b3VyIHRyYXNoIGZvbGRlciE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWFyayB1bnJlYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0OCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWFyayByZWFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFuc3dlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BbnN3ZXIgZXZlcnlib2R5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkZvcndhcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWN0aW9ucyAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlNlbmQgcHJpdmF0ZSBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk5vdGhpbmcgc2VsZWN0ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1vdmUgdG8gSW5ib3g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGVsZXRlIChmaW5hbCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1OCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIGZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgZm9sZGVycyBhbmQgb3JnYW5pemUgeW91ciBtZXNzYWdlcyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIGZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPkRlbGV0ZSBmb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2MyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPllvdSBjYW5ub3QgZGVsZXRlIHRoaXMgZm9sZGVyLCB0aGVyZSBhcmUgc3RpbGwgbWVzc2FnZXMgaW5zaWRlISBEZWxldGUgZmlyc3QgdGhlIG1lc3NhZ2VzIG9yIG1vdmUgdGhlbSB0byBhbm90aGVyIGZvbGRlci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIGZvbGRlciI+CisgICAgPHZhbHVlPkVkaXQgbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIGZvbGRlcj8gVGhlcmUgaXMgbm8gd2F5IHRvIHVuZG8gdGhhdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2NiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPllvdXIgcmVxdWVzdCB3YXMgc2VuZCB0byB0aGUgdXNlci4gVGhlIHVzZXIgd2lsbCByZWNlaXZlIGEgbm90aWZpY2F0aW9uIHRvIGFjY2VwdCBvciBkZW55IHlvdXIgcmVxdWVzdC4gT25seSBhY2NlcHRlZCByZXF1ZXN0cyBhcmUgaW4geW91ciBjb250YWN0IGxpc3Qgb2YgY291cnNlITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+TWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY4IiBuYW1lPSJ1c2VyIHZpZXcgcHJvZmlsZSI+CisgICAgPHZhbHVlPlRoZSB1c2VyIGRvZXMgbm90IHNoYXJlIGhpcyBwZXJzb25hbCBjb250YWN0IGRhdGEuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjkiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+VGhlIHVzZXIgZG9lcyBzaGFyZSBoaXMgcGVyc29uYWwgY29udGFjdCBkYXRhIG9ubHkgdG8gY29udGFjdHMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzAiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+QWRkcmVzcyAmYW1wOyBQaG9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjcxIiBuYW1lPSJlcnJvciBjb2RlIj4KKyAgICA8dmFsdWU+WW91IGludml0YXRpb24gY29kZSBpcyBubyB2YWxpZCwgdGhlIGNvZGUgaXMgb25seSB2YWxpZCBkdXJpbmcgdGhpcyBzcGVjaWZpYyBkYXRlIGFuZCB0aW1lOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjcyIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhpcyBldmVudCBpcyBjb25uZWN0ZWQgdG8gc2V2ZXJhbCBjYWxlbmRhcnMgb2Ygb3RoZXIgdXNlcnMuIFlvdXIgY2hhbmdlIHdpbGwgYWxzbyB1cGRhdGUgdGhlaXIgY2FsZW5kYXIuIFdvdWxkIHlvdSByZWFsbHkgbGlrZSB0byB1cGRhdGUgdGhlIGV2ZW50PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjczIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Q29uZmlybSB1cGRhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkFsbG93IGNvbnRhY3QgdG8gc2VlIG15IGNhbGVuZGFyICh2aWV3IG9ubHkpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzUiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5EbyBub3Qgc2hhcmUgY2FsZW5kYXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkNhbGVuZGFyIG9mIGNvbnRhY3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzciIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Zb3VyIGNvbnRhY3RzIG5lZWQgdG8gYXBwcm92ZSB5b3UgZmlyc3QgdG8gYmUgYWJsZSB0byBzZWUgdGhlaXIgY2FsZW5kYXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzgiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IHN0b3JlIG9yIGRlbGV0ZSBldmVudHMgZnJvbSBvdGhlciBjYWxlbmRhcnMgdGhlbiB5b3VyIG93biE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3OSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlNob3cgbXkgb3duIGNhbGVuZGFyIGFnYWluITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgwIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhpcyBldmVudCBpcyBjb25uZWN0ZWQgdG8gc2V2ZXJhbCBjYWxlbmRhcnMgb2Ygb3RoZXIgdXNlcnMuIFlvdXIgYWN0aW9uIHdpbGwgYWxzbyBkZWxldGUgdGhlIGV2ZW50IGZyb20gdGhlaXIgY2FsZW5kYXIuIFdvdWxkIHlvdSByZWFsbHkgbGlrZSB0byBkZWxldGUgdGhlIGV2ZW50PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgxIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+Q29uZmlybSBhY3Rpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4MiIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPkVudGVyIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4MyIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPkFjY2VzcyB0aGUgY29uZmVyZW5jZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODQiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGEgY29uZmVyZW5jZSByb29tIGFuZCBldmVudCBib29rZWQgd2l0aCB0aGlzIHByaXZhdGUgbWVzc2FnZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NSIgbmFtZT0idXNlciBjYWxlbmRhciI+CisgICAgPHZhbHVlPllvdSBuZWVkIHRvIHN0b3JlIHRoZSBldmVudCBmaXJzdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NiIgbmFtZT0iYWNjZXNzIHJvb21zIGVycm9yIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgbm8gc3VjaCByb29tIGF2YWlsYWJsZS4gVGhlIGV2ZW50IGluIHRoZSBjYWxlbmRhciBhbmQgY29ubmVjdGVkIHJvb20gaXMgYWxyZWFkeSBkZWxldGVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg3IiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5DaG9vc2UgeW91ciBuaWNrbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg4IiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5GaXJzdG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4OSIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+TGFzdG5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MCIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+RW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MSIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+T2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MiIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+TWluaW11bSBsZW5ndGggNCBjaGFycyEgRm9yIGJvdGgsIGZpcnN0bmFtZSBhbmQgbGFzdG5hbWUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTMiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIHZhbGlkIGVtYWlsITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk0IiBuYW1lPSJhdXRoIGZyb20iPgorICAgIDx2YWx1ZT5GYWNlYm9vazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk1IiBuYW1lPSJhdXRoIGZvcm0iPgorICAgIDx2YWx1ZT5Mb2dpbiB3aXRoIHlvdXIgRmFjZWJvb2sgYWNjb3VudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk2IiBuYW1lPSJ2aWV3IHByb2ZpbGUiPgorICAgIDx2YWx1ZT5NZW1iZXIgc2luY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5NyIgbmFtZT0iZGlyZWN0IGxvZ2luIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Zb3UndmUgbG9nZ2VkIHdpdGggeW91ciBGYWNlYm9vayBhY2NvdW50LiBZb3Ugc2hvdWxkIHVwZGF0ZSB5b3VyIHByb2ZpbGUgd2l0aCB0aGUgY29ycmVjdCBlbWFpbC4gT3RoZXJ3aXNlIHlvdSB3aWxsIG5vdCByZWNlaXZlIGludml0YXRpb25zIGFuZCBwcml2YXRlIG1lc3NhZ2VzIGZyb20gb3RoZXIgdXNlcnMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTgiIG5hbWU9ImRpcmVjdCBsb2dpbiBtZXNzYWdlIGhlYWRlciI+CisgICAgPHZhbHVlPk1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5OSIgbmFtZT0iZGlyZWN0IGxvZ2luIG1lc3NhZ2UgY2hlY2tib3ggY29udHJvbCI+CisgICAgPHZhbHVlPkRvIG5vdCBzaG93IHVwZGF0ZSBwcm9maWxlIG1lc3NhZ2UgYWdhaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMCIgbmFtZT0icHJvZmlsZSBzZXR0aW5ncyBidXR0b24iPgorICAgIDx2YWx1ZT5tb3JlIGRpc3BsYXkgb3B0aW9ucyAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TmV3IHByaXZhdGUgbWVzc2FnZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2xpY2sgaGVyZSB0byB2aXNpdCB5b3VyIHByb2ZpbGUgdG8gc2VlIHRoZSBmdWxsIG1lc3NhZ2UgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlJlcGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDQiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPlJvb21zIGFuZCBjaGF0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA1IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT5NeSByb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA2IiBuYW1lPSJteSByb29tcyI+CisgICAgPHZhbHVlPk15IGNvbmZlcmVuY2Ugcm9vbSAoZm9yIDEtMTYgdXNlcnMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDciIG5hbWU9Im15IHJvb21zIj4KKyAgICA8dmFsdWU+TXkgd2ViaW5hciByb29tIChmb3IgMS0xMjAgdXNlcnMpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDgiIG5hbWU9InJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5Pd25lciBJZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzA5IiBuYW1lPSJsb2dpbiBlcnJvciI+CisgICAgPHZhbHVlPlBsZWFzZSBlbnRlciBhIHBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTAiIG5hbWU9ImxvZ2luIGVycm9yIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgYW4gYWNjb3VudCB3aXRoIFVzZXItTGV2ZWwgVXNlciwgTW9kZXJhdG9yIG9yIEFkbWluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTEiIG5hbWU9InVzZXIgYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5XZWItU2VydmljZSAob25seSBhY2Nlc3MgdmlhIFNPQVApPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTIiIG5hbWU9InVwbG9hZCBmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+RG8gZGlyZWN0bHkgbG9hZCB0byB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTMiIG5hbWU9IndoaXRlYm9hcmQgY2xvc2UgY29uZmlybWF0aW9uIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIHJlbW92ZSB0aGlzIHdoaXRlYm9hcmQ/IFRoaXMgYWN0aW9uIGNhbm5vdCBiZSB1bmRvbmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTQiIG5hbWU9IndoaXRlYm9hcmQgbG9hZCBXTUwiPgorICAgIDx2YWx1ZT5Mb2FkIHRvIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxNSIgbmFtZT0icmVjb3JkaW5nIGZsYWciPgorICAgIDx2YWx1ZT5EbyBub3QgZm9yZ2V0IHN0YXJ0IHJlY29yZGluZyEgT25lIHVzZXIgcGVyIHJvb20gYWx3YXlzIG5lZWRzIHRvIHN0YXJ0IGl0IHRvIGhhdmUgdGhlIHJlY29yZGluZyBhZnRlcndhcmRzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE2IiBuYW1lPSJyZWNvcmRpbmcgZmxhZyI+CisgICAgPHZhbHVlPlN0YXJ0IFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE3IiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPkFycm93PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTgiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+Q2lyY2xlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTkiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+TGluZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIwIiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPlNxdWFyZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIxIiBuYW1lPSJzaGFwZSI+CisgICAgPHZhbHVlPlRyaWFuZ2xlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjIiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5UZXh0L05vdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyMyIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkNsaXBhcnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjQiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5EcmF3IEZyZWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNSIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlNlbGVjdC9Nb3ZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjYiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5EcmF3IFNoYXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjciIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5DdXQvTW92ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI4IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+Wm9vbSBJbi9PdXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyOSIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlByaW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzAiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5VbmRvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzEiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5UcmFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMyIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+QWRkIEdyaWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMyIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlNoYXJlIEZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNCIgbmFtZT0iaWNvbiBzdWJtZW51Ij4KKyAgICA8dmFsdWU+U2VsZWN0IFNoYXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzUiIG5hbWU9Imljb24gc3VibWVudSI+CisgICAgPHZhbHVlPlNlbGVjdCBDbGlwYXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzYiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5Db3B5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzciIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5DdXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzOCIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPlBhc3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzkiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5EZWxldGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MCIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhlIGNvbXBsZXRlIGNvbnRlbnQgb24gdGhlIHdoaXRlYm9hcmQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDEiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5Mb2FkIGRpcmVjdGx5IHRvIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MiIgbmFtZT0iYXR0ZW5kZWVzIj4KKyAgICA8dmFsdWU+QXR0ZW5kZWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDMiIG5hbWU9ImF0ZW5kZWUgbWFuYWdlciI+CisgICAgPHZhbHVlPkF0dGVuZGVlIE1hbmFnZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NCIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+UHJlc2VudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ1IiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5SZW1vdGUgQ29udHJvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NiIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+RWplY3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0NyIgbmFtZT0iY2hhdCI+CisgICAgPHZhbHVlPkNoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0OCIgbmFtZT0iaW52aXRlIGF0dGVuZGVlIj4KKyAgICA8dmFsdWU+SW52aXRlIEF0dGVuZGVlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ5IiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5CeSBFbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUwIiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5Vc2VyIGlzIG1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUxIiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5Vc2VyIGhhcyB3ZWJjYW0gc3dpdGNoZWQgb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1MiIgbmFtZT0iZmlsbF9vcHRpb24iPgorICAgIDx2YWx1ZT5EZWFjdGl2YXRlIHNoYXBlIGZpbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1MyIgbmFtZT0iZmlsbF9vcHRpb24iPgorICAgIDx2YWx1ZT5BY3RpdmF0ZSBzaGFwZSBmaWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTQiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5TbmFwIHRvIEdyaWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NSIgbmFtZT0iYWxsb3dfcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+QWxsb3cgcmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTYiIG5hbWU9IndhaXRfZm9yX3JlY29yZGluZyI+CisgICAgPHZhbHVlPldhaXQgZm9yIHJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU3IiBuYW1lPSJoaWRlX3RvcF9iYXIiPgorICAgIDx2YWx1ZT5IaWRlIHRvcGJhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU4IiBuYW1lPSJmaWxlRXhwbG9yZXIiPgorICAgIDx2YWx1ZT5QbGF5IHZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTkiIG5hbWU9InN1Ym1lbnUiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoZSBjb250ZW50IG9uIHRoZSBjdXJyZW50IHNsaWRlPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYwIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT5BY2NlcHQgYW5kIGdyYW50IHVzZXIgcmlnaHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2MSIgbmFtZT0iYWN0aXZpdHlfd2luZG93Ij4KKyAgICA8dmFsdWU+RGVueTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYyIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT5JPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjMiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPkFjdGl2aXRpZXMgYW5kIGFjdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NCIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPlJlbW92ZSB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjUiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0aGUgbW9kZXJhdGlvbiBvciB0aGUgcmlnaHQgdG8gZHJhdyBvbiB0aGUgd2hpdGVib2FyZCB0byByZW1vdmUgd2hpdGVib2FyZHMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjYiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5Ob3QgYWxsb3dlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY3IiBuYW1lPSJ1c2VyX2xlZnRfYWN0X21zZyI+CisgICAgPHZhbHVlPmhhcyBsZWZ0IHRoZSByb29tLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY4IiBuYW1lPSJjbGlwYXJ0IGljb25zIj4KKyAgICA8dmFsdWU+TWF0aCBpY29uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY5IiBuYW1lPSJjbGlwYXJ0IGljb25zIj4KKyAgICA8dmFsdWU+Tm8gY2F0ZWdvcnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MCIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+Q29sb3ItU3R5bGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+UXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzcyIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5Eb21haW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3MyIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+dmlzaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NCIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+cmVkb3JhbmdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzUiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPm1lZGl1bXNlYWdyZWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzYiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnN0ZWVsYmx1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc3IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5saWdodHN0ZWVsYmx1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc4IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5nb2xkZW5yZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3OSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+c2lsdmVyZ3JheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgwIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT51c2VyZGVmaW5lZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgxIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5iZXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODIiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnVwbG9hZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzgzIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5tZWRpdW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NCIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg1IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5Vbm11dGUgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg2IiBuYW1lPSJnaXZlIGV4Y2x1c2l2ZSBhdWRpbyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBvZiBvdGhlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4NyIgbmFtZT0ibXV0ZSBzZWxmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGdsb2JhbGx5IG11dGVkIGJ5IHRoZSBtb2RlcmF0b3IuIFlvdSBjYW5ub3QgdW5tdXRlIHlvdXJzZWxmITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg4IiBuYW1lPSJtdXRlIHNlbGYgY29uZmlybSBtZXNzYWdlIHRpdGxlIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg5IiBuYW1lPSJtdXRlIHNlbGYgY29uZmlybSBtZXNzYWdlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gbXV0ZSB5b3Vyc2VsZiBnbG9iYWxseT8gTm8gb3RoZXIgdXNlciB3aWxsIGhlYXIgeW91IGFueW1vcmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTAiIG5hbWU9Im11dGUgb3RoZXJzIGNvbmZpcm0gbWVzc2FnZSB0aXRsZSI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBsb2NhbGx5PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkxIiBuYW1lPSJtdXRlIG90aGVycyBjb25maXJtIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gbXV0ZSB0aGlzIG1pY3JvcGhvbmU/IFlvdSBjYW4gb25seSBtdXRlIGl0IGxvY2FsbHkgb24geW91ciBzY3JlZW4uIEl0IGhhcyBubyBlZmZlY3QgdG8gaG93IG90aGVyIHVzZXJzIGhlYXIgdGhpcyB1c2VyLiBPbmx5IG1vZGVyYXRvcnMgY2FuIHR1cm4gaXQgb2ZmIGdsb2JhbGx5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkyIiBuYW1lPSJtdXRlIG90aGVycyBjb25maXJtIG1lc3NhZ2UgdGl0bGUiPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgb2ZmIGdsb2JhbGx5PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzkzIiBuYW1lPSJtdXRlIG90aGVycyBtb2RlcmF0b3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBtdXRlIHRoaXMgdXNlciBnbG9iYWxseT8gTm8gb3RoZXIgdXNlciB3aWxsIGhlYXIgaGltIGFueW1vcmUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTQiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+WW91ciBzb3VuZCBpcyBvbi4gQ2xpY2sgaGVyZSB0byBzZW5kIG1vZGVyYXRvciBtZXNzYWdlIHRvIG11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5IChpbiB0aGUgY29tcGxldGUgY29uZmVyZW5jZSByb29tKSBvZmYhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTUiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+WW91ciBzb3VuZCBpcyBvZmYuIENsaWNrIGhlcmUgdG8gc2VuZCBtb2RlcmF0b3IgbWVzc2FnZSB0byB1bm11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5IChpbiB0aGUgY29tcGxldGUgY29uZmVyZW5jZSByb29tKSBvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5NiIgbmFtZT0ibXV0ZSBhcHBseSBzZWxmIG9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRoYXQgdGhlIG1vZGVyYXRvciBtdXRlcyBteSBtaWNyb3Bob25lIGdsb2JhbGx5LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk3IiBuYW1lPSJtdXRlIGFwcGx5IHNlbGYgb2ZmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRoYXQgdGhlIG1vZGVyYXRvciB1bm11dGVzIG15IG1pY3JvcGhvbmUgZ2xvYmFsbHkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTgiIG5hbWU9Im11dGUgYXBwbHkgb2YgbWVzc2FnZSI+CisgICAgPHZhbHVlPndhbnQgdGhhdCB0aGUgbW9kZXJhdG9yIHVubXV0ZXMgaGlzL2hlciBtaWNyb3Bob25lLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk5IiBuYW1lPSJtdXRlIGFwcGx5IG9mIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53YW50IHRoYXQgdGhlIG1vZGVyYXRvciBtdXRlcyBoaXMvaGVyIG1pY3JvcGhvbmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDAiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+VW5tdXRlIG1pY3JvcGhvbmUuIENsaWNrIGhlcmUgdG8gbXV0ZSBoaXMvaGVyIG1pY3JvcGhvbmUgZ2xvYmFsbHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDEiIG5hbWU9Im11dGUgc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lLiBDbGljayBoZXJlIHRvIHVubXV0ZSBoaXMvaGVyIG1pY3JvcGhvbmUgZ2xvYmFsbHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDIiIG5hbWU9Im11dGUgc2VsZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhpcyB1c2VyIGlzIGdsb2JhbGx5IG11dGVkIGJ5IHRoZSBtb2RlcmF0b3IuIFlvdSBjYW5ub3QgdW5tdXRlIGhpbSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMyIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgeW91ciBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDQiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSB5b3VyIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwNSIgbmFtZT0ibXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA2IiBuYW1lPSJ1bm11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5Vbm11dGUgbWljcm9waG9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA3IiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDgiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDkiIG5hbWU9Im11dGUgbW9kZXJhdG9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Pbmx5IG1vZGVyYXRvcnMgY2FuIG11dGUgb3IgdW5tdXRlIGFuIHVzZXIgZ2xvYmFsbHkhIFRvIG11dGUgeW91ciBvd24gbWljcm9waG9uZTogUGxlYXNlIHVzZSB0aGUgbWljcm9waG9uZSBpY29uIGluIHlvdXIgdmlkZW8gcG9kITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDEwIiBuYW1lPSJwb2xsX25hbWUiPgorICAgIDx2YWx1ZT5Qb2xsIE5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMSIgbmFtZT0icG9sbF9uYW1lIj4KKyAgICA8dmFsdWU+WW91PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTIiIG5hbWU9ImFyY2hpdmVkX3BvbGxzIj4KKyAgICA8dmFsdWU+QXJjaGlldmVkIFBvbGxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTMiIG5hbWU9ImFjdGl2ZV9wb2xsIj4KKyAgICA8dmFsdWU+YWN0aXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTQiIG5hbWU9ImNoYXJ0X3NpbXBsZSI+CisgICAgPHZhbHVlPlNpbXBsZSBDaGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE1IiBuYW1lPSJjaGFydF9waWUiPgorICAgIDx2YWx1ZT5QaWUgQ2hhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNiIgbmFtZT0ic2lnbl91cF92YWxpZGF0aW9uIj4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTciIG5hbWU9ImNoYXRfbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+TmV3IG1lc3NhZ2Uocyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxOCIgbmFtZT0icG9sbF9jbG9zZSI+CisgICAgPHZhbHVlPkNsb3NlIFBvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxOSIgbmFtZT0icG9sbF9jbG9zZV9jb25maXJtIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGNsb3NlIHRoaXMgUG9sbD8gTm8gb25lIHdpbGwgYmUgYWJsZSB0byB2b3RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjAiIG5hbWU9InBvbGxfZGVsZXRlIj4KKyAgICA8dmFsdWU+RGVsZXRlIFBvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMSIgbmFtZT0icG9sbF9kZWxldGVfY29uZmlybSI+CisgICAgPHZhbHVlPkFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byBkZWxldGUgdGhpcyBQb2xsPyBUaGUgcmVzdWx0cyB3aWxsIGJlIGRlbGV0ZWQgYXMgd2VsbC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMiIgbmFtZT0ibGFuZ3VhZ2VfY29kZSI+CisgICAgPHZhbHVlPkxhbmd1YWdlIElTTyBDb2RlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjMiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19wZXJtaXNzaW9uIj4KKyAgICA8dmFsdWU+QWxsb3cvRGVueSByaWdodCB0byBnaXZlIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNCIgbmFtZT0iYWxsb3dfZXhjbHVzaXZlX2F1ZGlvX3Blcm1pc3Npb24iPgorICAgIDx2YWx1ZT5BbGxvdyB1c2VyIHRvIGdpdmUgZXhjbHVzaXZlIGF1ZGlvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjUiIG5hbWU9ImRlbnlfZXhjbHVzaXZlX2F1ZGlvX3Blcm1pc3Npb24iPgorICAgIDx2YWx1ZT5EZW55IHVzZXIgdG8gZ2l2ZSBleGNsdXNpdmUgYXVkaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNiIgbmFtZT0iZXhjbF9hdWRpbyBhcHBseSBzZWxmIG9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGdldCBhIHBlcm1pc3Npb24gZm9yIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNyIgbmFtZT0iZXhjbF9hdWRpbyBhcHBseSBvZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+d2FudCB0aGF0IHRoZSBtb2RlcmF0b3IgZ2l2ZXMgbWUgYSBwZXJtaXNzaW9uIGZvciBleGNsdXNpdmUgYXVkaW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MjgiIG5hbWU9ImV4Y2xfYXVkaW8gc3RhdHVzIGljb25zIj4KKyAgICA8dmFsdWU+R2l2ZSBhIHBlcm1pc3Npb24gZm9yIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyOSIgbmFtZT0iY2FtX3Jlc29sdXRpb24iPgorICAgIDx2YWx1ZT5DYW0gcmVzb2x1dGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMwIiBuYW1lPSJjYW1fcmVzb2x1dGlvbl9pbmZvIj4KKyAgICA8dmFsdWU+Q2hhbmdpbmcgdGhlIHJlc29sdXRpb24gYWZmZWN0cyBiYW5kd2lkdGgsIGJpZ2dlciBwaWN0dXJlIG5lZWRzIG1vcmUgYmFuZHdpdGghPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzEiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19lcnJvciI+CisgICAgPHZhbHVlPllvdSBkb24ndCBoYXZlIHRoZSByaWdodCB0byBnaXZlIHlvdXJzZWxmIG9yIG90aGVycyBleGNsdXNpdmUgYXVkaW8uIFlvdSBuZWVkIHRvIGFwcGx5IGZvciB0aGUgcmlnaHQgZnJvbSB0aGUgbW9kZXJhdG9yIG9yIGFzayB0aGUgbW9kZXJhdG9yIHRvIGdpdmUgeW91IGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzMiIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2FzayI+CisgICAgPHZhbHVlPkkgd291bGQgbGlrZSB0byBnZXQgdGhlIHJpZ2h0IGZvciBleGNsdXNpdmUgYXVkaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzMyIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2FjdGlvbiI+CisgICAgPHZhbHVlPkdpdmUgZXhjbHVzaXZlIGF1ZGlvIHRvIG1lIChhbHRlcm5hdGl2ZWx5IGNsaWNrIG9uIHlvdXIgdmlkZW8gcG9kIG9yIHByZXNzIEYxMik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNCIgbmFtZT0ibWljcm8gaXMgb24iPgorICAgIDx2YWx1ZT5NaWNyb3Bob25lIGlzIG9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM1IiBuYW1lPSJtaWNybyBpcyBvZmYiPgorICAgIDx2YWx1ZT5NaWNyb3Bob25lIGlzIG11dGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzYiIG5hbWU9ImhpZGVfY2hhdCI+CisgICAgPHZhbHVlPkhpZGUgY2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM3IiBuYW1lPSJoaWRlX2FjdGl2aXRpZXNfYW5kX2FjdGlvbnMiPgorICAgIDx2YWx1ZT5IaWRlIGFjdGl2aXRpZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzOCIgbmFtZT0iaGlkZV9maWxlc19leHBsb3JlciI+CisgICAgPHZhbHVlPkhpZGUgZmlsZXMgZXhwbG9yZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzOSIgbmFtZT0iaGlkZV9hY3Rpb25zX21lbnUiPgorICAgIDx2YWx1ZT5IaWRlIGFjdGlvbnMgbWVudTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQwIiBuYW1lPSJoaWRlX3NjcmVlbl9zaGFyaW5nIj4KKyAgICA8dmFsdWU+SGlkZSBzY3JlZW4gc2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQxIiBuYW1lPSJoaWRlX3doaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5IaWRlIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MiIgbmFtZT0ic2hvdyBtaWNyb3Bob25lIHN0YXR1cyI+CisgICAgPHZhbHVlPlNob3cgbWljcm8gc3RhdHVzIGluIHZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDMiIG5hbWU9ImxheW91dF9vcHRpb25zIj4KKyAgICA8dmFsdWU+TGF5b3V0IG9wdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0NCIgbmFtZT0iY2FsZW5kYXIgbmV3IGJ1dHRvbiI+CisgICAgPHZhbHVlPk5ldyBFdmVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ1IiBuYW1lPSJjYWxlbmRhciBwYXNzd29yZCBpbmZvIHRleHQiPgorICAgIDx2YWx1ZT5QYXNzd29yZCBwcm90ZWN0ZWQgYXJlIHRoZSBsaW5rcyB0byB0aGUgY29uZmVyZW5jZSB0aGF0IGFyZSBzZW5kIHRvIHRoZSBwYXJ0aWNpcGVudHMgd2hlbiB5b3Ugc2F2ZSB0aGUgY2FsZW5kYXIgZXZlbnQsIG5vdCB0aGUgcm9vbSEgVGhhdCBtZWFucyBpZiB5b3Ugc2F2ZSB0aGUgZXZlbnQgbXVsdGlwbGUgdGltZXMgYnV0IHdpdGggZGlmZmVyZW50IHBhc3N3b3JkcyBldmVyeSBwYXJ0aWNpcGVudCByZWNlaXZlcyBhIG5ldyBsaW5rIHRoYXQgaGFzIGEgZGlmZmVyZW50IHBhc3N3b3JkLiBCdXQgb2xkIGxpbmtzIHN0aWxsIHdvcmsgb25jZSBzZW5kITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ2IiBuYW1lPSJjYWxlbmRhciBlZGl0IGJ1dHRvbiI+CisgICAgPHZhbHVlPkVkaXQgZGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ3IiBuYW1lPSJzaXAgc2hvdyBkaWFsZXIiPgorICAgIDx2YWx1ZT5TaG93IHNpcCBkaWFsZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0OCIgbmFtZT0ic2lwIGNhbGwiPgorICAgIDx2YWx1ZT5DYWxsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDkiIG5hbWU9ImNhbGVuZGFyIGNvbnRhY3QgbGlzdCI+CisgICAgPHZhbHVlPlNob3cgY2FsZW5kYXIgZXZlbnRzIG9mIGNvbnRhY3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+WW91ciBob21lITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUxIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5QbGFuIHlvdXIgbWVldGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MiIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+V2F0Y2ggcmVjb3JkaW5nIGFuZCBpbnRlcnZpZXdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTMiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPkNob29zZSBhbmQgc3RhcnQgYSB3ZWItY29uZmVyZW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU0IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgdXNlcnMgYW5kIHJpZ2h0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU1IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgY29ubmVjdGlvbnMgYW5kIGtpY2sgdXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1NiIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIHVzZXJncm91cHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1NyIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIGNvbmZlcmVuY2Ugcm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1OCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIHN5c3RlbSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU5IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgbGFiZWxzIGFuZCB3b3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjAiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBMREFQIGFuZCBBRFMgY29uZmlndXJhdGlvbnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MSIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+RXhwb3J0L0ltcG9ydCBTeXN0ZW0gQmFja3VwczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYyIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgbW9kZXJhdGlvbiBvciB0aGUgcmlnaHQgdG8gZHJhdyBvbiB3aGl0ZWJvYXJkIHRvIHVwbG9hZCwgYWRkLCBkZWxldGUgb3IgbG9hZCBmaWxlcyBhbmQgZm9sZGVycy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MyIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkVkaXQgdGV4dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY0IiBuYW1lPSJzYWx1dGF0aW9uIj4KKyAgICA8dmFsdWU+UHJvZjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY1IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlB1Ymxpc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2NiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdGFydCBQdWJsaXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjciIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U3RvcCBQdWJsaXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+SG9zdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY5IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlB1Ymxpc2ggQXBwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzAiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UHVibGlzaCBJZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDcxIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHVjZSB0aGUgd2lkdGggb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbW92ZSBpdCBsZWZ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzIiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UmVkdWNlIHRoZSBoZWlnaHQgb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbW92ZSBpdCBib3R0b208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5SZWR1Y2UgdGhlIHggb2YgdGhlIFNoYXJpbmdTY3JlZW4gYmVmb3JlIHlvdSB0cnkgdG8gbWFrZSBpdCB3aWRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc0IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHVjZSB0aGUgeSBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtYWtlIGl0IGhpZ2hlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc1IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkZpbGwgdGhlc2Ugc2V0dGluZ3Mgc3RyZWFtIHlvdXIgc2NyZWVuIGRhdGEgdG8gM3RoIHBhcnR5IHByb3ZpZGVycyBsaWtlIGp1c3Rpbi50djwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc2IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlBsZWFzZSBzdGFydCBTY3JlZW4gc2hhcmluZyB0byBiZSBhYmxlIHRvIHB1Ymxpc2ggaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3NyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5Nb2RlcmF0b3IgcGVybWlzc2lvbiByZXF1aXJlZCB0byBzdGFydCByZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3OCIgbmFtZT0ibm8gcmlnaHQgZm9yIGV4Y2x1c2l2ZSBhdWRpbyI+CisgICAgPHZhbHVlPllvdSBkb24ndCBoYXZlIHBlcm1pc3Npb24gdG8gYXBwbHkgZXhjbHVzaXZlIGF1ZGlvIHRvIGFueSBwYXJ0aWNpcGFudC4gWW91IG5lZWQgbW9kZXJhdGlvbiByb2xlIG9yIHRoZSByaWdodCBmb3IgZXhjbHVzaXZlIGF1ZGlvIHRvIG1ha2UgYW55IG1pY3JvcGhvbmUgZXhjbHVzaXZlIHR1cm5lZCBvbi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzkiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlVwbG9hZCBuZXcgZmlsZSB0byBmaWxlIGV4cGxvcmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODAiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPk9wZW4gbmV3IGRpYWxvZyB3aXRoIHNoYXJpbmcgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+QW4gZXhpc3RpbmcgbW9kZXJhdG9yIG11c3QgYXBwcm92ZSBpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgyIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5Bc2sgbW9kZXJhdG9yIHRvIHNoYXJlIHlvdXIgd2ViY2FtL21pY3JvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODMiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkdhdGhlciBmZWVkYmFjayBieSBjcmVhdGluZyBhIHBvbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+UGFzdCBhbmQgY3VycmVudCBwb2xsIHJlc3VsdHMgYXMgY2hhcnRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODUiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlZvdGUgaWYgdGhlcmUgaXMgYSBwb2xsIGZvciB0aGlzIGNvbmZlcmVuY2Ugcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg2IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5FZGl0IGNhbSBhbmQgbWljIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODciIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkNvbmZpcm0gYW5kIGxlYXZlIHRoZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODgiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkNhbGwgZXh0ZXJuYWwgcGVvcGxlIHZpYSBWb0lQL1NJUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg5IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5TZW5kIGFuIGVtYWlsIHdpdGggYSBkaXJlY3QgbGluayB0byB0aGlzIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Q2hhbmdlIHlvdXIgd2hpdGVib2FyZCBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkxIiBuYW1lPSJiYWNrdXAgYWRtaW4iPgorICAgIDx2YWx1ZT5NYXggdXBsb2FkIHNpemU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MiIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+QXNrIG1vZGVyYXRvciB0byBzaGFyZSB5b3VyIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5MyIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+U3RhcnQgUHJpdmF0ZSBDaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTQiIG5hbWU9ImFsbF9wcml2YXRlX2NoYXQiPgorICAgIDx2YWx1ZT5BbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NSIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBzdGFydCBhIHByaXZhdGUgY2hhdCB3aXRoIHlvdXJzZWxmLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk2IiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5Zb3UndmUgYWxyZWFkeSBzdGFydGVkIGEgcHJpdmF0ZSBjaGF0IHdpdGggdGhpcyBwYXJ0aWNpcGFudC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NyIgbmFtZT0icHJpdmF0ZSBjaGF0Ij4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIHByaXZhdGUgY2hhdD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5OCIgbmFtZT0iU2VydmVycyI+CisgICAgPHZhbHVlPlNlcnZlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5OSIgbmFtZT0iU2VydmVycyI+CisgICAgPHZhbHVlPlNlcnZlcnMgcGFydGljaXBhdGluZyBpbiBjbHVzdGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDAiIG5hbWU9IlNlcnZlciBuYW1lIj4KKyAgICA8dmFsdWU+U2VydmVyIE5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMSIgbmFtZT0iU2VydmVyIEFkZHJlc3MiPgorICAgIDx2YWx1ZT5TZXJ2ZXIgQWRkcmVzczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAyIiBuYW1lPSJTZXJ2ZXIgZGV0YWlscyI+CisgICAgPHZhbHVlPlNlcnZlciBkZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDMiIG5hbWU9IlNlbmQgU01TIj4KKyAgICA8dmFsdWU+U2VuZCBTTVM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNCIgbmFtZT0icHVibGlzaGluZ19tZXNzYWdlIj4KKyAgICA8dmFsdWU+UHVibGlzaGluZy4gVXNlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNSIgbmFtZT0iY21kX2xpbmVfYWRtaW4iPgorICAgIDx2YWx1ZT5UbyBzYXZlIHRpbWUgYW5kIGludGVybmV0IHRyYWZmaWMgeW91IGNhbiB1c2UgY29tbWFuZCBsaW5lIGFkbWluIHRvIGJhY2t1cC9yZXN0b3JlL3VwZ3JhZGU6XG4gMSkgZ28gdG8gT00gaW5zdGFsbCBkaXIgKGZvciBleC4gL29wdC9yZWQ1KSBcbiAyKSBzdG9wIE9NIChmb3IgZXguIC4vcmVkNS1zaHV0ZG93bi5zaClcbiAzKSAuL2FkbWluLnNoIC1iIC1maWxlIH4vdG9kYXlfb21fYmFja3VwLnppcCAoY3JlYXRlIGJhY2t1cCBvZiBjdXJyZW50IE9NKVxuIDQpIGRvd25sb2FkIGFyY2hpdmUgd2l0aCBuZXcgT01cbiA1KSBtdiAvb3B0L3JlZDUgL29wdC5yZWQ1LmJhayAobW92ZSB3b3JraW5nIHZlcnNpb24gb2YgT00ganVzdCBpbiBjYXNlIDopKVxuIDYpIGV4dHJhY3QgZG93bmxvYWRlZCBPTSB0byB0aGUgL29wdC9yZWQ1XG4gNykgLi9hZG1pbi5zaCAtaSAtZmlsZSB+L3RvZGF5X29tX2JhY2t1cC56aXAgKG9yICcuL2FkbWluLnNoIC1pIC1maWxlIH4vdG9kYXlfb21fYmFja3VwLnppcCAtLWRiLXR5cGUgbXlzcWwgLS1kYi11c2VyIG9tX3VzZXIgLS1kYi1wYXNzIG9tX3VzZXJfcGFzcycgaW4gY2FzZSBvZiB5b3UgYXJlIHVzaW5nIG5vbi1kZWZhdWx0IERCIClcbiA4KSBzdGFydCBPTVxuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDYiIG5hbWU9InB1YmxpY19yb29tX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5Sb29tcyBjb21tb24gdG8gYWxsIHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNyIgbmFtZT0icHJpdmF0ZV9yb29tX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5Sb29tcyBjb21tb24gdG8gdGhlIGN1cnJlbnQgdXNlciBncm91cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA4IiBuYW1lPSJteV9yb29tX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT5Sb29tcyBvZiB0aGUgY3VycmVudCB1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDkiIG5hbWU9ImNyZWF0ZV9uZXdfcm9vbSI+CisgICAgPHZhbHVlPkNyZWF0ZS9Nb2RpZnkgYXBwb2ludG1lbnQgc3BlY2lhbCByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTAiIG5hbWU9Im11bHRpcGxlX2FkZHJlc3NlcyI+CisgICAgPHZhbHVlPllvdSBjYW4gZW50ZXIgbXVsdGlwbGUgYWRkcmVzc2VzIGluIHRoZSBmb3JtYXQ6IGZpcnN0bmFtZTEgbGFzdG5hbWUxICZsdDtlbWFpbDEmZ3Q7LCJmaXJzdG5hbWUyIGxhc3RuYW1lMiIgJmx0O2VtYWlsMiZndDssJ2ZpcnN0bmFtZTMgbGFzdG5hbWUzJyAmbHQ7ZW1haWwzJmd0OywgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTEiIG5hbWU9InN0cmVhbV92b2x1bWUiPgorICAgIDx2YWx1ZT5BZGp1c3Qgc3RyZWFtIHZvbHVtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTEyIiBuYW1lPSJtaWNyb3Bob25lX3ZvbHVtZSI+CisgICAgPHZhbHVlPkFkanVzdCBtaWNyb3Bob25lIHZvbHVtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTEzIiBuYW1lPSJjaGF0X21vZGVyYXRlZCI+CisgICAgPHZhbHVlPklzIGNoYXQgbW9kZXJhdGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTQiIG5hbWU9ImNoYXRfbW9kZXJhdGVkIj4KKyAgICA8dmFsdWU+QWxsb3cgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE1IiBuYW1lPSJjaGF0X29wZW5lZCI+CisgICAgPHZhbHVlPkNoYXQgcGFuZWwgb3BlbmVkIGJ5IGRlZmF1bHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNiIgbmFtZT0iZmlsZXNfb3BlbmVkIj4KKyAgICA8dmFsdWU+RmlsZXMgcGFuZWwgb3BlbmVkIGJ5IGRlZmF1bHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNyIgbmFtZT0ic2VydmVyIGFkbWluIHNlY3Rpb24gbGFzdHBpbmciPgorICAgIDx2YWx1ZT5MYXN0IHBpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxOCIgbmFtZT0ic2VydmVyIGFkbWluIHNlY3Rpb24gbGFzdHBpbmcgaW5mbyI+CisgICAgPHZhbHVlPkV2ZXJ5IHNsYXZlIHNlbmRzIGEgcGluZyB0byB0aGUgbWFzdGVyIGV2ZXJ5IDMgc2Vjb25kcyAoY29uZmlndXJhYmxlKS4gU2xhdmUgbGFzdFBpbmcgbXVzdCBiZSBzbWFsbGVyIHRoZW4gMSBtaW51dGUgc28gdGhhdCB0aGUgbWFzdGVyIHVzZXMgdGhlIHNsYXZlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE5IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcG9ydCI+CisgICAgPHZhbHVlPkhUVFAgUG9ydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIwIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gdXNlciI+CisgICAgPHZhbHVlPlVzZXIgKFNPQVAtQWNjZXNzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIxIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcGFzc3dvcmQiPgorICAgIDx2YWx1ZT5QYXNzd29yZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIyIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gd2ViYXBwIHBhdGgiPgorICAgIDx2YWx1ZT5XZWJhcHAgcGF0aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTIzIiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcHJvdG9jb2wiPgorICAgIDx2YWx1ZT5Qcm90b2NvbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI0IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gcGluZyBydW5uaW5nIj4KKyAgICA8dmFsdWU+UGluZyBydW5uaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjUiIG5hbWU9InNlcnZlciBhZG1pbiBhY3RpdmUiPgorICAgIDx2YWx1ZT5BY3RpdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyNiIgbmFtZT0iZ2VuZXJhdGVfaGFzaCI+CisgICAgPHZhbHVlPkdlbmVyYXRlIFVSTDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI3IiBuYW1lPSJuZXR3b3JrIHRlc3RpbmcgbGluayI+CisgICAgPHZhbHVlPk5ldHdvcmsgdGVzdGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI4IiBuYW1lPSJyb29tX29wdGlvbnMiPgorICAgIDx2YWx1ZT5BdXRvIHNlbGVjdCBpbnRlcnZpZXcgdmlkZW8gcG9kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjkiIG5hbWU9ImZvbnRfdW5kZXJsaW5lIj4KKyAgICA8dmFsdWU+VW5kZXJsaW5lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzAiIG5hbWU9ImZvbnRfc3R5bGUiPgorICAgIDx2YWx1ZT5Gb250IHN0eWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzEiIG5hbWU9ImFsbG93X2ZvbnRfc3R5bGVzIj4KKyAgICA8dmFsdWU+QWxsb3cgZm9udCBzdHlsZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMiIgbmFtZT0iZm9udF9jb2xvciI+CisgICAgPHZhbHVlPkZvbnQgY29sb3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMyIgbmFtZT0iaHlwZXJsaW5rIj4KKyAgICA8dmFsdWU+SHlwZXJsaW5rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzQiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW4iPgorICAgIDx2YWx1ZT5TaG93IHNlc3Npb24gc3RhdGlzdGljczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM1IiBuYW1lPSJjb25uZWN0aW9uIGFkbWluIj4KKyAgICA8dmFsdWU+U2Vzc2lvbiBkZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzYiIG5hbWU9InN5c3RlbV9pbXBvcnQiPgorICAgIDx2YWx1ZT5TeXN0ZW0gaW1wb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzciIG5hbWU9ImluY2x1ZGVfaW50b19iYWNrdXAiPgorICAgIDx2YWx1ZT5JbmNsdWRlIHVwbG9hZGVkIGZpbGVzIGFuZCByZWNvcmRpbmdzIGluIGJhY2t1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTM4IiBuYW1lPSJyb29tX2FkbWluX3NpcCI+CisgICAgPHZhbHVlPkVuYWJsZSBTSVAgdHJhbnNwb3J0IGluIHRoZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzkiIG5hbWU9ImV4Y2x1c2l2ZV9hdWRpb19jb25maXJtIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIHByb3ZpZGUgdGhpcyB1c2VyIGFuIGV4Y2x1c2l2ZSBhdWRpbz88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU0MCIgbmFtZT0ibm9fdGltZXpvbmUiPgorICAgIDx2YWx1ZT5QbGVhc2Ugc3BlY2lmeSB5b3VyIHRpbWV6b25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NDUiIG5hbWU9ImNvbnRlbnRfaXNfc2F2aW5nIj4KKyAgICA8dmFsdWU+Q29udGVudCBpcyBTYXZpbmcsIFBsZWFzZSB3YWl0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorPC9sYW5ndWFnZT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL3VrcmFpbmlhbi54bWwgYi9XZWJDb250ZW50L2xhbmd1YWdlcy91a3JhaW5pYW4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzN2Q4ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L2xhbmd1YWdlcy91a3JhaW5pYW4ueG1sCkBAIC0wLDAgKzEsNDY1MiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKworPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKworCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworVGhpcyBGaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5IHRoZSBMYW5ndWFnZUVkaXRvciAKK3RvIGFkZCBuZXcgTGFuZ3VhZ2VzIG9yIG1vZGlmeS9jdXN0b21pemUgaXQgdXNlIHRoZSBMYW5ndWFnZUVkaXRvciAKK3NlZSBodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvTGFuZ3VhZ2VFZGl0b3IuaHRtbCBmb3IgRGV0YWlscyAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjLS0+Cis8bGFuZ3VhZ2UgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeG1sbnM6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbj0ibGFuZ3VhZ2UueHNkIj4KKyAgPHN0cmluZyBpZD0iMSIgbmFtZT0iY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPtCa0L7QvdGE0LXRgNC10L3RhtGW0Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMiIgbmFtZT0ibWVldGluZyI+CisgICAgPHZhbHVlPtCX0YPRgdGC0YDRltGHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMiIG5hbWU9ImNsYXNzcm9vbSI+CisgICAgPHZhbHVlPtCQ0YPQtNC40YLQvtGA0ZbRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0IiBuYW1lPSJzZXR0aW5ncyI+CisgICAgPHZhbHVlPtCd0LDQu9Cw0YjRgtGD0LLQsNC90L3RjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1IiBuYW1lPSJiZW51dHplciI+CisgICAgPHZhbHVlPtCa0L7RgNC40YHRgtGD0LLQsNGHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYiIG5hbWU9ImFkbWluIj4KKyAgICA8dmFsdWU+0JDQtNC80ZbQvdGW0YHRgtGA0LDRgtC+0YA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNyIgbmFtZT0ic3RvcCI+CisgICAgPHZhbHVlPtCf0LDRg9C30LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOCIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+0JfQsNC/0LjRgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5IiBuYW1lPSJub2ZpbGUiPgorICAgIDx2YWx1ZT7QndC10LzQsNGUINC00LDQvdC40YU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAiIG5hbWU9InJlY29yZGJ5dGVhY2hlciI+CisgICAgPHZhbHVlPtCk0YPQvdC60YbRltGPINC30LDQv9C40YHRgyDQtNC70Y8g0LzQvtC00LXRgNCw0YLQvtGA0ZbQsjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMSIgbmFtZT0iY29ubmVjdGVkdXNlcnMiPgorICAgIDx2YWx1ZT7Qn9C+0LIn0Y/Qt9Cw0L3QuNC5INC60L7RgNC40YHRgtGD0LLQsNGHOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMiIgbmFtZT0ic3RhcnRjb25mIj4KKyAgICA8dmFsdWU+0J/QvtGH0LDRgtC4INC60L7QvdGE0LXRgNC10L3RhtGW0Y48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMiIG5hbWU9Im15bmFtZSI+CisgICAgPHZhbHVlPtCc0L7RlCDRltC8J9GPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0IiBuYW1lPSJ2aWRlb2NvbmZlcmVuY2UiPgorICAgIDx2YWx1ZT7QktGW0LTQtdC+0LrQvtC90YTQtdGA0LXQvdGG0ZbRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNSIgbmFtZT0iaW1wb3J0Ij4KKyAgICA8dmFsdWU+0IbQvNC/0L7RgNGCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2IiBuYW1lPSJyZWZyZXNoZmlsZXMiPgorICAgIDx2YWx1ZT7QntC90L7QstC40YLQuCDRgdC/0LjRgdC+0Lo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTciIG5hbWU9InRvbWFpbmZpbGUiPgorICAgIDx2YWx1ZT7QndCwINCz0L7Qu9C+0LLQvdGDPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4IiBuYW1lPSJuZXdwb2xsIj4KKyAgICA8dmFsdWU+0J3QvtCy0LUg0L7Qv9C40YLRg9Cy0LDQvdC90Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkiIG5hbWU9Im5ld3BvbGxoZWFkZXIiPgorICAgIDx2YWx1ZT7QndC+0LLQtSDQvtC/0LjRgtGD0LLQsNC90L3RjyDQtNC70Y8g0LrQvtC90YTQtdGA0LXQvdGG0ZbRly48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAiIG5hbWU9InF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+0JfQsNC/0LjRgtCw0L3QvdGPOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMSIgbmFtZT0icG9sbHR5cGUiPgorICAgIDx2YWx1ZT7QktC40LQg0L7Qv9C40YLRg9Cy0LDQvdC90Y86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyIiBuYW1lPSJjcmVhdGUiPgorICAgIDx2YWx1ZT7QodGC0LLQvtGA0LjRgtC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzIiBuYW1lPSJpbmZvbWVzc2FnZSI+CisgICAgPHZhbHVlPtCG0L3RhNC+0YDQvNCw0YbRltGPOiDQutC+0LbQtdC9INC/0L7QsifRj9C30LDQvdC4INC60L7RgNC40YHRgtGD0LLQsNGHINC+0YLRgNC40LzRg9GUINC/0L7QstGW0LTQvtC80LvQtdC90L3RjyDQtyDQvdC+0LLQuNC8INC+0L/QuNGC0YPQstCw0L3QvdGP0Lw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQiIG5hbWU9ImNyZWF0cG9sbCI+CisgICAgPHZhbHVlPtCh0YLQstC+0YDQuNGC0Lgg0L7Qv9C40YLRg9Cy0LDQvdC90Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUiIG5hbWU9ImNhbmNlbCI+CisgICAgPHZhbHVlPtCS0ZbQtNC80ZbQvdC40YLQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNiIgbmFtZT0ieWVzbm8iPgorICAgIDx2YWx1ZT7QotCw0Lov0J3RljwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNyIgbmFtZT0ibnVtZXJpYyI+CisgICAgPHZhbHVlPtCSINGH0LjRgdC70L7QstC+0LzRgyDQv9C+0YDRj9C00LrRgyAxLTEwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4IiBuYW1lPSJwb2xsIj4KKyAgICA8dmFsdWU+0J7Qv9C40YLRg9Cy0LDQvdC90Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkiIG5hbWU9Im1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT7QlNC70Y8g0YHRgtCy0L7RgNC10L3QvdGPINC+0L/QuNGC0YPQstCw0L3QvdGPINCS0Lgg0L/QvtCy0LjQvdC90ZYg0LHRg9GC0Lgg0LzQvtC00LXRgNCw0YLQvtGA0L7QvC/RltC90YHRgtGA0YPQutGC0L7RgNC+0Lwg0LTQsNC90L7RlyDQutGW0LzQvdCw0YLQuC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAiIG5hbWU9InZvdGUiPgorICAgIDx2YWx1ZT7QktC4INC/0YDQvtCz0L7Qu9C+0YHRg9Cy0LDQu9C4LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMSIgbmFtZT0iYWxyZWFkeXZvdGVkIj4KKyAgICA8dmFsdWU+0JLQuCDQstC20LUg0L/RgNC+0LPQvtC70L7RgdGD0LLQsNC70Lgg0LIg0LTQsNC90L7QvNGDINC+0L/QuNGC0YPQstCw0L3QvdGWLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMiIgbmFtZT0idm90aW5nIj4KKyAgICA8dmFsdWU+0J/RgNC+0LPQvtC70L7RgdGD0LLQsNGC0LghPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzIiBuYW1lPSJhbnN3ZXIiPgorICAgIDx2YWx1ZT7QktCw0YjQsCDQstGW0LTQv9C+0LLRltC00Yw6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0IiBuYW1lPSJ5ZXMiPgorICAgIDx2YWx1ZT7QotCw0Lo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUiIG5hbWU9Im5vIj4KKyAgICA8dmFsdWU+0J3RljwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNiIgbmFtZT0icXVlc3Rpb253YW50Ij4KKyAgICA8dmFsdWU+0KXQvtGH0YMg0LfQvdCw0YLQuDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzciIG5hbWU9InBvbGxyZXN1bHRzIj4KKyAgICA8dmFsdWU+0KDQtdC30YPQu9GM0YLQsNGC0Lgg0L7Qv9C40YLRg9Cy0LDQvdC90Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgiIG5hbWU9InF1ZXN0aW9uIj4KKyAgICA8dmFsdWU+0JfQsNC/0LjRgtCw0L3QvdGPOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOSIgbmFtZT0icmVzdWx0cyI+CisgICAgPHZhbHVlPtCS0ZbQtNC/0L7QstGW0LTRljo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDAiIG5hbWU9ImFuc3dlcnMiPgorICAgIDx2YWx1ZT7QoNC10LfRg9C70YzRgtCw0YLQuDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDEiIG5hbWU9Im5vcG9sbCI+CisgICAgPHZhbHVlPtCSINC00LDQvdC40Lkg0LzQvtC80LXQvdGCINC+0L/QuNGC0YPQstCw0L3QvdGPINC90LUg0ZbRgdC90YPRlC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIiIG5hbWU9InZvdGluZ3MiPgorICAgIDx2YWx1ZT7Qn9GA0L7Qs9C+0LvQvtGB0YPQstCw0YLQuCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMiIG5hbWU9Im1lZXRpbmciPgorICAgIDx2YWx1ZT7Ql9GD0YHRgtGA0ZbRhyAo0LzQsNC60YHQuNC80YPQvCA0INC80ZbRgdGG0Y8pPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0IiBuYW1lPSJjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+0JrQvtC90YTQtdGA0LXQvdGG0ZbRjyAo0LzQsNC60YHQuNC80YPQvCA1MCDQvNGW0YHRhtGMKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NSIgbmFtZT0idHlwZSI+CisgICAgPHZhbHVlPtCi0LjQvzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NiIgbmFtZT0icmVtYWluaW5nc2VhdHMiPgorICAgIDx2YWx1ZT7Ql9Cw0LvQuNGI0LjQu9C+0YHRjCDQvNGW0YHRhtGMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3IiBuYW1lPSJhbHJlYWR5Y2hvc2VuIj4KKyAgICA8dmFsdWU+0JLQttC1INC/0YDQuNGB0LLQvtGU0L3QvjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OCIgbmFtZT0iZW50ZXIiPgorICAgIDx2YWx1ZT7QktGF0ZbQtDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OSIgbmFtZT0ibW9kbGVhdmUiPgorICAgIDx2YWx1ZT7QnNC+0LTQtdGA0LDRgtC+0YAv0ZbQvdGB0YLRgNGD0LrRgtC+0YAg0YbRltGU0Zcg0LrRltC80L3QsNGC0Lgg0L/QvtC60LjQvdGD0LIg0LrRltC80L3QsNGC0YM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAiIG5hbWU9InN5c3RlbW1lc3NhZ2UiPgorICAgIDx2YWx1ZT7QodC40YHRgtC10LzQvdC1INC/0L7QstGW0LTQvtC80LvQtdC90L3RjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MSIgbmFtZT0iY2hvc3NlZGV2aWNlIj4KKyAgICA8dmFsdWU+0JLQuNCx0ZbRgCDQv9GA0LjRgdGC0YDQvtGOPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyIiBuYW1lPSJjaG9vc2VjYW0iPgorICAgIDx2YWx1ZT7QntCx0YDQsNGC0Lgg0LrQsNC80LXRgNGDOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MyIgbmFtZT0iY2hvb3NlbWljIj4KKyAgICA8dmFsdWU+0J7QsdGA0LDRgtC4INC80ZbQutGA0L7RhNC+0L06PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0IiBuYW1lPSJvayI+CisgICAgPHZhbHVlPk9LPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1IiBuYW1lPSJjYW5jZWwyIj4KKyAgICA8dmFsdWU+0KHQutCw0YHRg9Cy0LDRgtC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2IiBuYW1lPSJyZWNvbmVlY3RuZWVkZWQiPgorICAgIDx2YWx1ZT7QktC4INC/0L7QstC40L3QvdGWINCy0LLRltC50YLQuCDQt9C90L7QstGDLCDRidC+0LEg0LDQutGC0LjQstGW0LfRg9Cy0LDRgtC4INC30LzRltC90LguPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3IiBuYW1lPSJlZGl0c2V0dXAiPgorICAgIDx2YWx1ZT7Ql9C80ZbQvdC40YLQuCDQvdCw0LvQsNGI0YLRg9Cy0LDQvdC90Y8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4IiBuYW1lPSJjb3Vyc2UiPgorICAgIDx2YWx1ZT7QmtGD0YDRgTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkiIG5hbWU9Imxhbmd1YWdlIj4KKyAgICA8dmFsdWU+0JzQvtCy0LA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwIiBuYW1lPSJvazIiPgorICAgIDx2YWx1ZT5PSzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MSIgbmFtZT0iY2FuY2VsMyI+CisgICAgPHZhbHVlPtCh0LrQsNGB0YPQstCw0YLQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MiIgbmFtZT0iY2xlYXJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+0J7Rh9C40YHRgtC40YLQuCDQv9C70LDQvdGI0LXRgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MyIgbmFtZT0iY2xlYXJ3aGl0ZWJvYXJkcXVlc3Rpb24iPgorICAgIDx2YWx1ZT7QntGH0LjRgdGC0LjRgtC4INC/0LvQsNC90YjQtdGCINC/0LXRgNC10LQg0LTQvtC00LDQstCw0L3QvdGP0Lwg0L3QvtCy0L7Qs9C+INC30L7QsdGA0LDQttC10L3QvdGPPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NCIgbmFtZT0iZG9udGFza2FnYWluIj4KKyAgICA8dmFsdWU+0YfQuNGB0YLQuNGC0Lgg0L/Qu9Cw0L3RiNC10YIg0L/QtdGA0LXQtCDQtNC+0LTQsNCy0LDQvdC90Y/QvCDQvdC+0LLQvtCz0L4g0LfQvtCx0YDQsNC20LXQvdC90Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUiIG5hbWU9Im5vIj4KKyAgICA8dmFsdWU+0L3RljwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NiIgbmFtZT0iZWRpdHNldHVwMiI+CisgICAgPHZhbHVlPtCe0LHRgNC+0LHQuNGC0Lgg0L3QsNC70LDRiNGC0YPQstCw0L3QvdGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3IiBuYW1lPSJuZWVkY29uZmlybWF0aW9ud2hpdGVib2FyZCI+CisgICAgPHZhbHVlPtCX0LDQv9GA0L7RgdC40YLQuCDQv9GW0LTRgtCy0LXRgNC00LbQtdC90L3RjyDQv9C10YDQtdC0INC+0YfQuNGB0YLQutC+0Y4g0L/Qu9Cw0L3RiNC10YLRgy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgiIG5hbWU9InVzZXJpbmZvIj4KKyAgICA8dmFsdWU+0J3QsNGI0LAg0ZbQvdGE0L7RgNC80LDRhtGW0Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkiIG5hbWU9ImNsZWFyZHJhd2FyZWEiPgorICAgIDx2YWx1ZT7QntGH0LjRgdGC0LjRgtC4INC/0LvQsNC90YjQtdGCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwIiBuYW1lPSJ1bmRvIj4KKyAgICA8dmFsdWU+0JLRltC00LzRltC90LjRgtC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxIiBuYW1lPSJyZWRvIj4KKyAgICA8dmFsdWU+0JLRltC00L3QvtCy0LvQtdC90L3RjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MiIgbmFtZT0ic2VsZWN0b2JqZWN0Ij4KKyAgICA8dmFsdWU+0JLQuNCx0YDQsNGC0Lgg0L7QsSfRlNC60YI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMiIG5hbWU9InRleHQiPgorICAgIDx2YWx1ZT7QotC10LrRgdGCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0IiBuYW1lPSJwYWludCI+CisgICAgPHZhbHVlPtCc0LDQu9GO0LLQsNC90L3RjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NSIgbmFtZT0iZHJhd2xpbmUiPgorICAgIDx2YWx1ZT7Qn9GA0L7QstC10YHRgtC4INC70ZbQvdGW0Y48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYiIG5hbWU9ImRyYXd1Ij4KKyAgICA8dmFsdWU+0J/RltC00LrRgNC10YHQu9C40YLQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NyIgbmFtZT0icmVjdCI+CisgICAgPHZhbHVlPtCf0YDRj9C80L7QutGD0YLQvdC40Lo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgiIG5hbWU9ImVsbGlwc2UiPgorICAgIDx2YWx1ZT7QldC70ZbQv9GBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5IiBuYW1lPSJhcnJvdyI+CisgICAgPHZhbHVlPtCh0YLRgNGW0LvQutCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwIiBuYW1lPSJkZWxldGVjaG9zZW4iPgorICAgIDx2YWx1ZT7QodGC0LXRgNGC0Lgg0L7QsdGA0LDQvdC40Lkg0LXQu9C10LzQtdC90YI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEiIG5hbWU9ImFwcGxpeW1vZCI+CisgICAgPHZhbHVlPtCX0LDQv9C40YIg0YTRg9C90LrRhtGW0Zcg0LzQvtC00LXRgNCw0YLQvtGA0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODIiIG5hbWU9ImFwcGx5Ij4KKyAgICA8dmFsdWU+0JfQsNC/0LjRgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MyIgbmFtZT0iY2FuY2VsIj4KKyAgICA8dmFsdWU+0KHQutCw0YHRg9Cy0LDRgtC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0IiBuYW1lPSJtb2QiPgorICAgIDx2YWx1ZT7QntGC0YDQuNC80LDRgtC4INGE0YPQvdC60YbRltGOINC80L7QtNC10YDQsNGC0L7RgNCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1IiBuYW1lPSJjbG9zZSI+CisgICAgPHZhbHVlPtCX0LDQutGA0LjRgtC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2IiBuYW1lPSJpdGFsaWMiPgorICAgIDx2YWx1ZT7QmtGD0YDRgdC40LI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODciIG5hbWU9ImJvbGQiPgorICAgIDx2YWx1ZT7QltC40YDQvdC40Lkg0YjRgNC40YTRgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4OCIgbmFtZT0id2FpdGluZyI+CisgICAgPHZhbHVlPtCR0YPQtNGMLdC70LDRgdC60LDQsCDQt9Cw0YfQtdC60LDQudGC0LUuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkiIG5hbWU9ImFwcGx5TWVzc2FnZSI+CisgICAgPHZhbHVlPtCa0L7RgNC40YHRgtGD0LLQsNGHINCx0LDQttCw0ZQg0L7RgtGA0LjQvNCw0YLQuCDRhNGD0L3QutGG0ZbRjiDQvNC+0LTQtdGA0LDRgtC+0YDQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MCIgbmFtZT0iYWNjZXB0Ij4KKyAgICA8dmFsdWU+0JfQs9C+0LTQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MSIgbmFtZT0icmVqZWN0Ij4KKyAgICA8dmFsdWU+0KHQutCw0YHRg9Cy0LDQvdC90Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIiIG5hbWU9ImNhbmNlbCI+CisgICAgPHZhbHVlPtCh0LrQsNGB0YPQstCw0YLQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MyIgbmFtZT0ic2VuZG1vZHJlcXVlc3RtZXNzYWdlIj4KKyAgICA8dmFsdWU+0J3QsNC00YHQuNC70LDQvdC90Y8g0LfQsNC/0LjRgtGDINC90LDRgdGC0YPQv9C90L7QvNGDINC60L7RgNC40YHRgtGD0LLQsNGH0YM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQiIG5hbWU9ImFjY2VwdCI+CisgICAgPHZhbHVlPtCU0LDQvdC+INC30LPQvtC00YM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUiIG5hbWU9InJlamVjdCI+CisgICAgPHZhbHVlPtCh0LrQsNGB0L7QstCw0L3QvjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NiIgbmFtZT0iY2hhbmdlbW9kIj4KKyAgICA8dmFsdWU+0JfQsNC80ZbQvdCwINC80L7QtNC10YDQsNGC0L7RgNCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3IiBuYW1lPSJub25tb2RlcnJvcm1lc3NhZ2UiPgorICAgIDx2YWx1ZT7QktC4INC90LUg0ZQg0LzQvtC00LXRgNCw0YLQvtGA0L7QvCDQtNCw0L3QvtCz0L4g0LrRg9GA0YHRgyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgiIG5hbWU9Im1vZGVyYXRvciI+CisgICAgPHZhbHVlPtCc0L7QtNC10YDQsNGC0L7RgDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkiIG5hbWU9InJvb21mdWxsbWVzc2FnZSI+CisgICAgPHZhbHVlPtCS0LjQsdCw0YfRgtC1LCDQsiDRhtGW0Lkg0LrRltC80L3QsNGC0ZYg0L3QtdC80LDRlCDQvNGW0YHRhtGPLiDQkdGD0LTRjC3Qu9Cw0YHQutCwINC/0L7Qv9GA0L7QsdGD0LnRgtC1INGJ0LUg0YfQtdGA0LXQtyDQtNC10Y/QutC40Lkg0YfQsNGBLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAiIG5hbWU9ImVsbGxpcHNlIj4KKyAgICA8dmFsdWU+0JXQu9GW0L/RgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEiIG5hbWU9ImNsb3NlIj4KKyAgICA8dmFsdWU+0JfQsNC60YDQuNGC0Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyIiBuYW1lPSJBdXRoRXJyb3IiPgorICAgIDx2YWx1ZT7Qn9C+0LzQuNC70LrQsCDQv9GA0Lgg0LLQstC+0LTRljwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMiIG5hbWU9Im1pbjR1c2VybmFtZSI+CisgICAgPHZhbHVlPtCG0Lwn0Y8g0LrQvtGA0LjRgdGC0YPQstCw0YfQsCDQv9C+0LLQuNC90L3QviDRgdC60LvQsNC00LDRgtC40YHRjCDQvNGW0L3RltC80YPQvCDQtyA0INC30L3QsNC60ZbQsjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQiIG5hbWU9Im1pbjRwYXNzIj4KKyAgICA8dmFsdWU+0J/QsNGA0L7Qu9GMINC/0L7QstC40L3QtdC9INC80ZbRgdGC0LjRgtC4INC80ZbQvdGW0LzRg9C8IDQg0LfQvdCw0LrQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUiIG5hbWU9InVzZXJuYW1ldGFrZW4iPgorICAgIDx2YWx1ZT7QptC1INGW0Lwn0Y8g0LrQvtGA0LjRgdGC0YPQstCw0YfQsCDQstC20LUg0L/RgNC40YHQstC+0ZTQvdC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNiIgbmFtZT0iZW1haWx0YWtlbiI+CisgICAgPHZhbHVlPtCS0LLQtdC00LXQvdCwINC10LvQtdC60YLRgNC+0L3QvdCwINCw0LTRgNC10YHQsCDQstC20LUg0LfQsNGA0LXRlNGB0YLRgNC+0LLQsNC90LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3IiBuYW1lPSJlbWFpbHRha2VuIj4KKyAgICA8dmFsdWU+0J/RgNC40YHRg9GC0L3RjyDQv9C+0LzQuNC70LrQsCwg0L/RgNC+0YHQuNC80L4g0LfQsicn0Y/Qt9Cw0YLQuNGB0Ywg0Lcg0LDQtNC80ZbQvdGW0YHRgtGA0LDRhtGW0ZTRjjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgiIG5hbWU9IkF1dGhsb2dpbiI+CisgICAgPHZhbHVlPtCb0L7Qs9GW0L08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5IiBuYW1lPSJBdXRodXNlciI+CisgICAgPHZhbHVlPtCa0L7RgNC40YHRgtGD0LLQsNGHOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAiIG5hbWU9IkF1dGhwYXNzIj4KKyAgICA8dmFsdWU+0J/QsNGA0L7Qu9GMOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEiIG5hbWU9IkF1dGhsYW5nIj4KKyAgICA8dmFsdWU+0JzQvtCy0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyIiBuYW1lPSJBdXRocmVnIj4KKyAgICA8dmFsdWU+0JvQvtCz0ZbQvTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMiIG5hbWU9InJlZ2Zvcm1oZWFkIj4KKyAgICA8dmFsdWU+0JfQsNGA0LXRlNGB0YLRgNGD0LLQsNGC0LjRgdGMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNCIgbmFtZT0icmVnZm9ybXVzZXIiPgorICAgIDx2YWx1ZT7QmtC+0YDQuNGB0YLRg9Cy0LDRhzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1IiBuYW1lPSJyZWdmb3JtcGFzcyI+CisgICAgPHZhbHVlPtCf0LDRgNC+0LvRjDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2IiBuYW1lPSJyZWdmb3JtcmV0eXBlIj4KKyAgICA8dmFsdWU+0J/QvtCy0YLQvtGA0LjRgtC4OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTciIG5hbWU9InJlZ2Zvcm1maXJzdG5hbWUiPgorICAgIDx2YWx1ZT7QhtC8J9GPOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTgiIG5hbWU9InJlZ2Zvcm1sYXN0bmFtZSI+CisgICAgPHZhbHVlPtCf0YDRltC30LLQuNGJ0LU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOSIgbmFtZT0icmVnZm9ybW1haWwiPgorICAgIDx2YWx1ZT5FLU1haWw6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMCIgbmFtZT0icmVnZm9ybXN0YXRlIj4KKyAgICA8dmFsdWU+0JrRgNCw0ZfQvdCwOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjEiIG5hbWU9InJlZ2Zvcm1idG4xIj4KKyAgICA8dmFsdWU+0JfQsNGA0LXRlNGB0YLRgNGD0LLQsNGC0LjRgdGMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMiIgbmFtZT0icmVnZm9ybWJ0bjIiPgorICAgIDx2YWx1ZT7QodC60LDRgdGD0LLQsNGC0Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzIiBuYW1lPSJBdXRoYnRuMiI+CisgICAgPHZhbHVlPtCg0LXQs9GW0YHRgtGAPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+0J3QsCDQs9C+0LvQvtCy0L3RgzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUiIG5hbWU9InVzZXJhZG1pbiI+CisgICAgPHZhbHVlPtCa0L7RgNC40YHRgtGD0LLQsNGH0ZY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2IiBuYW1lPSJncm91cGFkbWluIj4KKyAgICA8dmFsdWU+0JPRgNGD0L/QuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjciIG5hbWU9Im9yZ2FkbWluIj4KKyAgICA8dmFsdWU+0J7RgNCz0LDQvdGW0LfQsNGG0ZbRlzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgiIG5hbWU9ImhlYWRjb25mIj4KKyAgICA8dmFsdWU+0JrRltC80L3QsNGC0Lgg0LTQu9GPINC60L7QvdGE0LXRgNC10L3RhtGW0Lk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5IiBuYW1lPSJjb25mX3B1YiI+CisgICAgPHZhbHVlPtCf0YPQsdC70ZbRh9C90L48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwIiBuYW1lPSJoZWFkX29yZyI+CisgICAgPHZhbHVlPtCe0YDQs9Cw0L3RltC30LDRhtGW0Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxIiBuYW1lPSJidG5fZW50ZXJyb29tIj4KKyAgICA8dmFsdWU+0JLRhdGW0LQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2xvZ2luIj4KKyAgICA8dmFsdWU+0JrQvtGA0LjRgdGC0YPQstCw0Yc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Bhc3MiPgorICAgIDx2YWx1ZT7Qn9Cw0YDQvtC70Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3Bhc3NyZXR5cGUiPgorICAgIDx2YWx1ZT7Qn9C+0LLRgtC+0YDQuNGC0Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2ZpcnN0bmFtZSI+CisgICAgPHZhbHVlPtCG0Lwn0Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2xhc3RuYW1lIj4KKyAgICA8dmFsdWU+0J/RgNGW0LfQstC40YnQtTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzciIG5hbWU9InVzZXJhbHRlcnNlbGZfZW1haWwiPgorICAgIDx2YWx1ZT5FLU1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2JpcnRoIj4KKyAgICA8dmFsdWU+0JTQsNGC0LAg0L3QsNGA0L7QtNC20LXQvdC90Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5IiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX3N0cmVldG5vIj4KKyAgICA8dmFsdWU+0JLRg9C70LjRhtGPL+KEliDQsdGD0LTQuNC90LrQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDAiIG5hbWU9InVzZXJhbHRlcnNlbGZfdG93biI+CisgICAgPHZhbHVlPtCG0L3QtNC10LrRgS/QvdCw0YHQtdC70LXQvdC40Lkg0L/Rg9C90LrRgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDEiIG5hbWU9InVzZXJhbHRlcnNlbGZfc3RhdGUiPgorICAgIDx2YWx1ZT7QmtGA0LDRl9C90LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyIiBuYW1lPSJ1c2VyYWx0ZXJzZWxmX2FkcmVzc2NvbW1lbnQiPgorICAgIDx2YWx1ZT7QlNC+0LTQsNGC0LrQvtCy0LAgYnLRltC90YTQvtGA0LzQsNGG0ZbRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMiIG5hbWU9InVzZXJhbHRlcnNlbGZfaGVhZGVyIj4KKyAgICA8dmFsdWU+0JTQsNC90ZYg0LrQvtGA0LjRgdGC0YPQstCw0YfQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQiIG5hbWU9InNhdmVtZW51YmFyX3NhdmVsYWJlbCI+CisgICAgPHZhbHVlPtCX0LHQtdGA0LXQs9GC0Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1IiBuYW1lPSJzYXZlbWVudWJhcl9zYXZlbGFiZWwiPgorICAgIDx2YWx1ZT7Qn9GA0L7RhtC10YEg0LfQsdC10YDQtdC20LXQvdC90Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2IiBuYW1lPSJhZG1pbl91c2VybGlzdF91c2VyX2lkIj4KKyAgICA8dmFsdWU+0IbQtNC10L3Rgi4g4oSWINC60L7RgNC40YHRgtGD0LLQsNGH0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3IiBuYW1lPSJhZG1pbl91c2VybGlzdF9sb2dpbiI+CisgICAgPHZhbHVlPtCb0L7Qs9GW0L08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4IiBuYW1lPSJhZG1pbl91c2VybGlzdF9maXJzdG5hbSI+CisgICAgPHZhbHVlPtCG0Lwn0Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5IiBuYW1lPSJhZG1pbl91c2VybGlzdF9sYXN0bmFtZSI+CisgICAgPHZhbHVlPtCf0YDRltC30LLQuNGJ0LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwIiBuYW1lPSJ0dXJub3Zlcmxpc3RfbmV4dCI+CisgICAgPHZhbHVlPtCS0L/QtdGA0LXQtDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTEiIG5hbWU9InR1cm5vdmVybGlzdF9wcmUiPgorICAgIDx2YWx1ZT7QndCw0LfQsNC0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MiIgbmFtZT0ic2F2ZWNvbnRlbnRfY29uZmlybSI+CisgICAgPHZhbHVlPtCh0YLQtdGA0YLQuCDQt9Cw0L/QuNGBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MyIgbmFtZT0ic2F2ZWNvbnRlbnRfY29uZmlybV9jYW5jZWxfYnRuIj4KKyAgICA8dmFsdWU+0KHQutCw0YHRg9Cy0LDRgtC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1NCIgbmFtZT0ic2F2ZWNvbnRlbnRfY29uZmlybV9jb25maXJtX2J0biI+CisgICAgPHZhbHVlPtCh0YLQtdGA0Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU1IiBuYW1lPSJzYXZlbWVudWJhcl9hZGRsYWJlbCI+CisgICAgPHZhbHVlPtCh0YLQstC+0YDQuNGC0Lgg0LfQsNC/0LjRgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTYiIG5hbWU9InNhdmVtZW51YmFyX3JlbG9hZGxhYmVsIj4KKyAgICA8dmFsdWU+0J7QvdC+0LLQuNGC0Lgg0LfQsNC/0LjRgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTciIG5hbWU9InNhdmVtZW51YmFyX2RlbGV0ZWxhYmVsIj4KKyAgICA8dmFsdWU+0KHRgtC10YDRgtC4INC30LDQv9C40YE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU4IiBuYW1lPSJ1c2VyYWx0ZXJfYWRtaW5fc3RhdHVzIj4KKyAgICA8dmFsdWU+0KHRgtCw0YLRg9GBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1OSIgbmFtZT0idXNlcmFsdGVyX2FkbWluX3N0YXR1c0l0ZW0iPgorICAgIDx2YWx1ZT7Ql9Cw0LHQu9C+0LrQvtCy0LDQvdC+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2MCIgbmFtZT0idXNlcmFsdGVyX2FkbWluX3N0YXR1c0l0ZW0iPgorICAgIDx2YWx1ZT7QkNC60YLQuNCy0L3QvjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjEiIG5hbWU9InVzZXJhbHRlcl9hZG1pbl9vcmdhbmlzYXRpb24iPgorICAgIDx2YWx1ZT7QntGA0LPQsNC90ZbQt9Cw0YbRltGXPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2MiIgbmFtZT0iY2FsZW5kYXJfaWNvbmxhYmVsIj4KKyAgICA8dmFsdWU+0JrQsNC70LXQvdC00LDRgDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjMiIG5hbWU9InNhdmV3aW5kb3dfYnRuIj4KKyAgICA8dmFsdWU+0JfQsNC60YDQuNGC0Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY0IiBuYW1lPSJvcmdhbmlzYXRpb250YWJsZWxpc3RfaWRyb3ciPgorICAgIDx2YWx1ZT7QhtC00LXQvdGCLiDihJYg0L7RgNCz0LDQvdGW0LfQsNGG0ZbRlzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjUiIG5hbWU9Im9yZ2FuaXNhdGlvbnRhYmxlbGlzdF9uYW1lcm93Ij4KKyAgICA8dmFsdWU+0IbQvCfRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNjYiIG5hbWU9InVzZXJ2YWx1ZV9sZXZlbGlkMSI+CisgICAgPHZhbHVlPtCa0L7RgNC40YHRgtGD0LLQsNGHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2NyIgbmFtZT0idXNlcnZhbHVlX2xldmVsaWQyIj4KKyAgICA8dmFsdWU+0JzQvtC00LXRgNCw0YLQvtGAPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE2OCIgbmFtZT0idXNlcnZhbHVlX2xldmVsaWQzIj4KKyAgICA8dmFsdWU+0JDQtNC80ZbQvdGW0YHRgtGA0LDRgtC+0YA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTY5IiBuYW1lPSJ1c2VydmFsdWVfbGV2ZWxsYWJlbCI+CisgICAgPHZhbHVlPtCg0L7Qu9GMINC60L7RgNC40YHRgtGD0LLQsNGH0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTcwIiBuYW1lPSJvcmd2YWx1ZV9oZWFkZXIiPgorICAgIDx2YWx1ZT7QntGA0LPQsNC90ZbQt9Cw0YbRltGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3MSIgbmFtZT0ib3JndmFsdWVfb3JnbmFtZSI+CisgICAgPHZhbHVlPtCG0Lwn0Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTcyIiBuYW1lPSJvcmd2YWx1ZV9vcmduYW1lIj4KKyAgICA8dmFsdWU+0JTQvtC00LDRgtC4INC+0YDQs9Cw0L3RltC30LDRhtGW0Y48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTczIiBuYW1lPSJvcmd2YWx1ZV9vcmduYW1lIj4KKyAgICA8dmFsdWU+0JTQvtC00LDRgtC4INC+0YDQs9Cw0L3RltC30LDRhtGW0Y48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc0IiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luIj4KKyAgICA8dmFsdWU+0KHQutCw0YHRg9Cy0LDRgtC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3NSIgbmFtZT0ib3JndmFsdWVfdXNlcndpbiI+CisgICAgPHZhbHVlPtCU0L7QtNCw0YLQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzYiIG5hbWU9Im9yZ3ZhbHVlX3VzZXJ3aW4iPgorICAgIDx2YWx1ZT7QodGC0LXRgNGC0Lgg0L7RgNCz0LDQvdGW0LfQsNGG0ZbRjjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNzciIG5hbWU9Im9yZ3ZhbHVlX3VzZXJsaXN0Ij4KKyAgICA8dmFsdWU+0JrQvtGA0LjRgdGC0YPQstCw0Yc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTc4IiBuYW1lPSJvcmd2YWx1ZV91c2VybGlzdGFkZCI+CisgICAgPHZhbHVlPtCU0L7QtNCw0YLQuCDQutC+0YDQuNGB0YLRg9Cy0LDRh9CwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE3OSIgbmFtZT0ib3JndmFsdWVfdXNlcmxpc3RkZWxldGUiPgorICAgIDx2YWx1ZT7QktC40LTQsNC70LjRgtC4INC60L7RgNC40YHRgtGD0LLQsNGH0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgwIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luaGVhZGVyIj4KKyAgICA8dmFsdWU+0JTQvtC00LDRgtC4INC60L7RgNC40YHRgtGD0LLQsNGH0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgxIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luc2VhcmNoZmllbGQiPgorICAgIDx2YWx1ZT7Qn9C+0YjRg9C6INC60L7RgNC40YHRgtGD0LLQsNGH0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTgyIiBuYW1lPSJvcmd2YWx1ZV91c2Vyd2luc2VhcmNoYnRuIj4KKyAgICA8dmFsdWU+0KjRg9C60LDRgtC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4MyIgbmFtZT0ib3JndmFsdWVfdXNlcndpbnNlYXJjaHJlc3VsdCI+CisgICAgPHZhbHVlPtCa0L7RgNC40YHRgtGD0LLQsNGHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4NCIgbmFtZT0ibG9naW53aW5fY2hvb3Nlb3JnYW5pc2F0aW9uIj4KKyAgICA8dmFsdWU+0J7RgNCz0LDQvdGW0LfQsNGG0ZbRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODUiIG5hbWU9ImxvZ2lud2luX2Nob29zZW9yZ2FuaXNhdGlvbmJ0biI+CisgICAgPHZhbHVlPtCe0LHRgNCw0YLQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxODYiIG5hbWU9Im5hdmlfcm9vbWFkbWluIj4KKyAgICA8dmFsdWU+0JrRltC80L3QsNGC0Lgg0LTQu9GPINC60L7QvdGE0LXRgNC10L3RhtGW0Lk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg3IiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+0JrRltC80L3QsNGC0Lgg0LTQu9GPINC60L7QvdGE0LXRgNC10L3RhtGW0Lk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTg4IiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+0IbQtNC10L3Rgi4g4oSWPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE4OSIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPtCG0Lwn0Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTkwIiBuYW1lPSJyb29tYWRtaW5faGVhZGVyIj4KKyAgICA8dmFsdWU+0J/Rg9Cx0LvRltGH0L3QvjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTEiIG5hbWU9InJvb21hZG1pbl9oZWFkZXIiPgorICAgIDx2YWx1ZT7QntGA0LPQsNC90ZbQt9Cw0YbRltGXPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5MiIgbmFtZT0icm9vbWFkbWluX2hlYWRlciI+CisgICAgPHZhbHVlPtCa0ZbQvNC90LDRgtC4INC00LvRjyDQutC+0L3RhNC10YDQtdC90YbRltC5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5MyIgbmFtZT0icm9vbXZhbHVlX25hbWUiPgorICAgIDx2YWx1ZT7QhtC8J9GPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NCIgbmFtZT0icm9vbXZhbHVlX3R5cGUiPgorICAgIDx2YWx1ZT7QotC40L88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk1IiBuYW1lPSJyb29tdmFsdWVfaXNwdWJsaWMiPgorICAgIDx2YWx1ZT7Qn9GD0LHQu9GW0YfQvdC+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NiIgbmFtZT0icm9vbXZhbHVlX2NvbW1lbnQiPgorICAgIDx2YWx1ZT7QmtC+0LzQtdC90YLQsNGAPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE5NyIgbmFtZT0id2hpdGVib2FyZF9zYXZlaWNvbiI+CisgICAgPHZhbHVlPtCX0LHQtdGA0LXQs9GC0Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTk4IiBuYW1lPSJ3aGl0ZWJvYXJkX29wZW5pY29uIj4KKyAgICA8dmFsdWU+0JLRltC60LTRgNC40YLQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxOTkiIG5hbWU9IndoaXRlYm9hcmRfc2F2ZWFzd2luaGVhZGVyIj4KKyAgICA8dmFsdWU+0JfQsdC10YDQtdCz0YLQuCDRj9C6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMCIgbmFtZT0id2hpdGVib2FyZF9zYXZlYXN3aW50ZXh0Ij4KKyAgICA8dmFsdWU+0IbQvCfRjyDRhNCw0LnQu9GDPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwMSIgbmFtZT0iZmlsZXMiPgorICAgIDx2YWx1ZT7QhtC8J9GPINGE0LDQudC70YM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAyIiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbmJ0bjEiPgorICAgIDx2YWx1ZT7QodC60LDRgdGD0LLQsNGC0Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjAzIiBuYW1lPSJ3aGl0ZWJvYXJkX3NhdmVhc3dpbmJ0bjIiPgorICAgIDx2YWx1ZT7Ql9Cx0LXRgNC10LPRgtC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIwNCIgbmFtZT0icnBjZXJyb3J3aW5faGVhZGVyIj4KKyAgICA8dmFsdWU+0J/QvtC80LjQu9C60LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA1IiBuYW1lPSJsb2Fkd21sX2hlYWRlciI+CisgICAgPHZhbHVlPtCX0LDQstCw0L3RgtCw0LbQuNGC0Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjA2IiBuYW1lPSJsb2Fkd21sX21lc3NzbG9hZCI+CisgICAgPHZhbHVlPtCe0LEn0ZTQutGCINC30LDQstCw0L3RgtCw0LbQtdC90LjQuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDciIG5hbWU9ImxvYWR3bWxfbWVzc3N5bmMiPgorICAgIDx2YWx1ZT7QodC40L3RhdGA0L7QvdGW0LfQsNGG0ZbRjyDQutC70ZbRlNC90YLRltCyLiDQl9Cw0LvQuNGI0LjQu9C+0YHRjCDQutC70ZbRlNC90YLRltCyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDgiIG5hbWU9ImxvYWRpbWFnZV9tZXNzbG9hZCI+CisgICAgPHZhbHVlPtCX0LDQstCw0L3RgtCw0LbQtdC90L3RjyDQs9GA0LDRhNGW0YfQvdC40YUg0LTQsNC90LjRhTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMDkiIG5hbWU9ImxvYWRpbWFnZV9tZXNzc3luYyI+CisgICAgPHZhbHVlPtCh0LjQvdGF0YDQvtC90ZbQt9Cw0YbRltGPINC60LvRltGU0L3RgtGW0LIuINCX0LDQu9C40YjQuNC70L7RgdGMINC60LvRltGU0L3RgtGW0LI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxMCIgbmFtZT0ibG9hZHdtbF9jb25maXJtaGVhZGVyIj4KKyAgICA8dmFsdWU+0J7Rh9C40YHRgtC40YLQuCDQv9C70LDQvdGI0LXRgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTEiIG5hbWU9ImxvYWR3bWxfY29uZmlybW1lc3MiPgorICAgIDx2YWx1ZT7QntGH0LjRgdGC0LjRgtC4INC/0LvQsNC90YjQtdGCLCDQv9GA0Lgg0YbRjNC+0LzRgyDQstGB0ZYg0LfQvNGW0L3QuCDQsdGD0LTRg9GC0Ywg0LLRgtGA0LDRh9C10L3RliE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEyIiBuYW1lPSJsb2Fkd21sX2NvbmZpcm1tZXNzMiI+CisgICAgPHZhbHVlPtCf0LXRgNC10LQg0LfQsNCy0LDQvdGC0LDQttC10L3QvdGP0Lwg0YTQsNC50LvRgyDQt9Cw0L/RgNC+0YHQuNGC0Lgg0L/RltC00YLQstC10YDQtNC20LXQvdC90Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjEzIiBuYW1lPSJzZW5kX2ludml0YXRpb25fYnRuIj4KKyAgICA8dmFsdWU+0JLRltC00ZbRgdC70LDRgtC4INC30LDQv9GA0L7RiNC10L3QvdGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNCIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX2hlYWRlciI+CisgICAgPHZhbHVlPtCS0ZbQtNC/0YDQsNCy0LjRgtC4INC30LDQv9GA0L7RiNC10L3QvdGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxNSIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX3N1YmplY3QiPgorICAgIDx2YWx1ZT7QotC10LzQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTYiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9yZWNpcGllbnQiPgorICAgIDx2YWx1ZT7QkNC00YDQtdGB0LAg0L7QtNC10YDQttGD0LLQsNGH0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjE3IiBuYW1lPSJzZW5kX2ludml0YXRpb253aW5fbWVzc2FnZSI+CisgICAgPHZhbHVlPtCf0L7QstGW0LTQvtC80LvQtdC90L3RjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMTgiIG5hbWU9InNlbmRfaW52aXRhdGlvbndpbl9idG5fY29uZmlybSI+CisgICAgPHZhbHVlPtCS0ZbQtNC/0YDQsNCy0LjRgtC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIxOSIgbmFtZT0ic2VuZF9pbnZpdGF0aW9ud2luX2J0bl9jYW5jZWwiPgorICAgIDx2YWx1ZT7QodC60LDRgdGD0LLQsNGC0Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIwIiBuYW1lPSJzZW5kX2NoYXRfdGV4dF9idG4iPgorICAgIDx2YWx1ZT7QktGW0LTQv9GA0LDQstC40YLQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjEiIG5hbWU9Imludml0ZWRfdXNlcndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT7QlNCw0L3QvdGWINC60L7RgNC40YHRgtGD0LLQsNGH0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjIyIiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fc3ViamVjdCI+CisgICAgPHZhbHVlPtCd0ZbQuiDQtNC70Y8g0LTQsNC90L7RlyDQutC+0L3RhNGA0LXQvdGG0ZbRlzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMjMiIG5hbWU9Imludml0ZWRfdXNlcndpbl9sb2dpbiI+CisgICAgPHZhbHVlPtCf0YDRltC30LLQuNGJ0LUv0L/RgdC10LLQtNC+0L3RltC8PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNCIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2ZpcnN0bmFtZSI+CisgICAgPHZhbHVlPtCG0Lwn0Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI1IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fbGFzdG5hbWUiPgorICAgIDx2YWx1ZT7Qn9GA0ZbQt9Cy0LjRidC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyNiIgbmFtZT0iaW52aXRlZF91c2Vyd2luX21haWwiPgorICAgIDx2YWx1ZT5FLU1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI3IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fbGFuZyI+CisgICAgPHZhbHVlPtCc0L7QstCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIyOCIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2VudGVyIj4KKyAgICA8dmFsdWU+0JLRltC00L/RgNCw0LLQuNGC0Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjI5IiBuYW1lPSJpbnZpdGVkX3VzZXJ3aW5fZW50ZXIiPgorICAgIDx2YWx1ZT7QotGA0LjQstCw0ZQg0LfQsNCy0LDQvdGC0LDQttC10L3QvdGPLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzMCIgbmFtZT0iaW52aXRlZF91c2Vyd2luX2VudGVyIj4KKyAgICA8dmFsdWU+0JTQsNC90ZYg0LfQsNCy0LDQvdGC0LDQttGD0Y7RgtGM0YHRjywg0LHRg9C00Ywt0LvQsNGB0LrQsCDQt9Cw0YfQtdC60LDQudGC0LUuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMxIiBuYW1lPSJ1c2VyX3JlZ2lzdGVyRmFsc2VQV0QiPgorICAgIDx2YWx1ZT7QndC10LLRltGA0L3QuNC5INC/0LDRgNC+0LvRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzIiIG5hbWU9InVzZXJfcmVnaXN0ZXJGYWxzZVBXREhlYWRlciI+CisgICAgPHZhbHVlPtCR0YPQtNGMINC70LDRgdC60LAg0LLQstC10LTRltGC0Ywg0LTQstCwINGW0LTQtdC90YLQuNGH0L3RliDQv9Cw0YDQvtC70ZYsINGJ0L4g0LzRltGB0YLRj9GC0Ywg0LzRltC90ZbQvNGD0LwgNiDRgdC40LzQstC+0LvQuC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjMzIiBuYW1lPSJ1c2VyX3JlZ2lzdGVyTWFpbEVycm9yIj4KKyAgICA8dmFsdWU+0J3QtdCy0ZbRgNC90LjQuSBlLW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjM0IiBuYW1lPSJ1c2VyX3JlZ2lzdGVyTWFpbEVycm9ySGVhZGVyIj4KKyAgICA8dmFsdWU+0JLQuCDQstCy0LXQu9C4INC90LUg0LLRltGA0L3QuNC5IGUtbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzUiIG5hbWU9InVzZXJfcmVnaXN0ZXJTdWNjZXNzIj4KKyAgICA8dmFsdWU+0KDQtdGU0YHRgtGA0LDRhtGW0Y8g0LfQsNCy0LXRgNGI0LXQvdCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzNiIgbmFtZT0idXNlcl9yZWdpc3RlclN1Y2Nlc3NIZWFkZXIiPgorICAgIDx2YWx1ZT7QktCw0Ygg0LDQutCw0YPQvdGCINGB0YLQstC+0YDQtdC90L4uINCi0LXQv9C10YAg0JLQuCDQvNC+0LbQtdGC0LUg0LLQstGW0LnRgtC4INCyINGB0LjRgdGC0LXQvNGDLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzciIG5hbWU9InVzZXJfc2hhcmluZ19tZXNzYWdlIj4KKyAgICA8dmFsdWU+0JLQuCDQvdC1INC80L7QttC10YLQtSDQt9Cw0LLQsNC90YLQsNC20LjRgtC4INCy0LDRiCDQt9C90ZbQvNC+0LouINCl0YLQvtGB0Ywg0LLQttC1INC30YDQvtCx0LjQsiDRhtC1LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyMzgiIG5hbWU9InVzZXJfc2hhcmluZ19tZXNzYWdlSGVhZGVyIj4KKyAgICA8dmFsdWU+0JfQsNCy0LDQvdGC0LDQttC10L3QvdGPINC30LDQsdC+0YDQvtC90LXQvdC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjIzOSIgbmFtZT0idXNlcl9kb1N0YXJ0U2NyZWVuVmlld2VyIj4KKyAgICA8dmFsdWU+0JfRgNC+0LHQuNGC0Lgg0LfQvdGW0LzQvtC6INC10LrRgNCw0L3RgzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDAiIG5hbWU9InNjcmVlbl93YXJuQmFuZHdpZHRoIj4KKyAgICA8dmFsdWU+0J/QvtCz0LDQvdC40Lkg0L/RgNC+0L/Rg9GB0LrQvdC40Lkg0LrQvdCw0LDQuzog0JLQuCDQvdC1INC80L7QttC10YLQtSDRgdC40L3RhdGA0L7QvdGW0LfRg9Cy0LDRgtC4INCy0LDRiCDQtdC60YDQsNC9LiDQpNGA0LXQudC80Lgg0LHRg9C00YPRgtGMINCy0YLRgNCw0YfQtdC90ZYuINCv0LrRidC+INGG0LUg0L/QvtCy0ZbQtNC+0LzQu9C10L3QvdGPINC/0L7QstGC0L7RgNC40YLRjNGB0Y8g0LfQsNC/0LjRgtCw0LnRgtC1INCyINC80L7QtNC10YDQsNGC0L7RgNCwINC/0YDQviDQt9C80LXQvdGI0LXQvdC90Y8g0Y/QutC+0YHRgtGWLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDEiIG5hbWU9InNjcmVlbl91c2VybGFiZWwiPgorICAgIDx2YWx1ZT7QldC60YDQsNC9OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDIiIG5hbWU9IndoaXRlYm9hcmRfdGFiX3BhaW50Ij4KKyAgICA8dmFsdWU+0JzQsNC70Y7QvdC+0Lo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQzIiBuYW1lPSJ3aGl0ZWJvYXJkX3RhYl9kb2N1bWVudCI+CisgICAgPHZhbHVlPtCU0L7QutGD0LzQtdC90YI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ0IiBuYW1lPSJ0YWJiYXJfY2hhdGljb24iPgorICAgIDx2YWx1ZT7Qp9Cw0YI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjQ1IiBuYW1lPSJ0YWJiYXJfZmlsZXNpY29uIj4KKyAgICA8dmFsdWU+0KTQsNC50LvQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDYiIG5hbWU9InRhYmJhcl9wYXJ0aWNpcGFudHNpY29uIj4KKyAgICA8dmFsdWU+0JrQvtGA0LjRgdGC0YPQstCw0YfRljwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDciIG5hbWU9InN3ZnByZXNlbnRhdGlvbl9saXN0c2F2ZW9yaWciPgorICAgIDx2YWx1ZT7Ql9Cw0LLQsNC90YLQsNC20LjRgtC4INC+0YDQuNCz0ZbQvdCw0LvRjNC90ZYg0LTQvtC60YPQvNC10L3RgtC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI0OCIgbmFtZT0ic3dmcHJlc2VudGF0aW9uX2xpc3RzYXZlcGRmIj4KKyAgICA8dmFsdWU+0JfQsNCy0LDQvdGC0LDQttC40YLQuCBwZGYg0LTQvtC60YPQvNC10L3RgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNDkiIG5hbWU9InN3ZnByZXNlbnRhdGlvbl9saXN0bG9hZHN3ZiI+CisgICAgPHZhbHVlPtCX0LDQstCw0L3RgtCw0LbQuNGC0Lgg0L/RgNC10LfQtdC90YLQsNGG0ZbRjiDQvdCwINC/0LvQsNC90YjQtdGCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MCIgbmFtZT0ibmF2aW1haW5fY29uZmlnIj4KKyAgICA8dmFsdWU+0J3QsNC70LDRiNGC0YPQstCw0L3QvdGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI1MSIgbmFtZT0id2hpdGVib2FyZF9ib3VuZGluZ2JveF9kcmFnIj4KKyAgICA8dmFsdWU+0J/QvtGC0Y/Qs9C90YPRgtC4INGG0LXQuSDQvtCxJ9GU0LrRgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTIiIG5hbWU9IndoaXRlYm9hcmRfYm91bmRpbmdib3hfcmVzaXplIj4KKyAgICA8dmFsdWU+0JfQvNGW0L3QuNGC0Lgg0YDQvtC30LzRltGAINC+0LEn0ZTQutGC0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjUzIiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl96b29tIj4KKyAgICA8dmFsdWU+JTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTQiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3NsaWRlIj4KKyAgICA8dmFsdWU+0Lc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU1IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9maXJzdHNsaWRlIj4KKyAgICA8dmFsdWU+0J3QsCAxINGB0YLQvtGA0ZbQvdC60YM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU2IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9wcmVzbGlkZSI+CisgICAgPHZhbHVlPtCd0LAg0L/QvtC/0LXRgNC10LTQvdGOINGB0YLQvtGA0ZbQvdC60YM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjU3IiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl9uZXh0c2xpZGUiPgorICAgIDx2YWx1ZT7QndCwINC90LDRgdGC0YPQv9C90YMg0YHRgtC+0YDRltC90LrRgzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTgiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX2xhc3RzbGlkZSI+CisgICAgPHZhbHVlPtCd0LAg0L7RgdGC0LDQvdC90Y4g0YHRgtC+0YDRltC90LrRgzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNTkiIG5hbWU9IndoaXRlYm9hcmRfZG9jdW1lbnR0b29sYmFyX3pvb21taW51cyI+CisgICAgPHZhbHVlPtCX0LzQtdC90YjQuNGC0Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYwIiBuYW1lPSJ3aGl0ZWJvYXJkX2RvY3VtZW50dG9vbGJhcl96b29tcGx1cyI+CisgICAgPHZhbHVlPtCX0LHRltC70YzRiNC40YLQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjEiIG5hbWU9InNhbHV0YXRpb25fbXIiPgorICAgIDx2YWx1ZT7Qny48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYyIiBuYW1lPSJzYWx1dGF0aW9uX21pc3MiPgorICAgIDx2YWx1ZT7Qny48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjYzIiBuYW1lPSJuYXZpbWFpbl9jb25mYWRtaW4iPgorICAgIDx2YWx1ZT7QndCw0LvQsNGI0YLRg9Cy0LDQvdC90Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY0IiBuYW1lPSJjb25mdGFibGVfaGVhZGVySWQiPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjUiIG5hbWU9ImNvbmZ0YWJsZV9oZWFkZXJrZXkiPgorICAgIDx2YWx1ZT7QmtC70Y7RhzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNjYiIG5hbWU9ImNvbmZhZG1pbmZvcm1faGVhZGVyIj4KKyAgICA8dmFsdWU+0J3QsNC70LDRiNGC0YPQstCw0L3QvdGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2NyIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbGtleSI+CisgICAgPHZhbHVlPtCa0LvRjtGHPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI2OCIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbHVwZGF0ZWQiPgorICAgIDx2YWx1ZT7QntGB0YLQsNC90L3RlCDQvtC90L7QstC70LXQvdC90Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjY5IiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsdXBkYXRlZGJ5Ij4KKyAgICA8dmFsdWU+0J7QvdC+0LLQu9C10L3QvdGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MCIgbmFtZT0iY29uZmFkbWluZm9ybV9sYWJlbGNvbW1lbnQiPgorICAgIDx2YWx1ZT7QmtC+0LzQtdC90YLQsNGA0ZY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjcxIiBuYW1lPSJjb25mYWRtaW5mb3JtX2xhYmVsa2V5Ij4KKyAgICA8dmFsdWU+0JrQu9GO0Yc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjcyIiBuYW1lPSJ0dXJub3Zlcmxpc3RfbWF4cmVzdWx0cyI+CisgICAgPHZhbHVlPtC3PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3MyIgbmFtZT0ib3JnYW5pc2F0aW9uX3VzZXJzaGVhZGVyIj4KKyAgICA8dmFsdWU+0JrQvtGA0LjRgdGC0YPQstCw0YfRljwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyNzQiIG5hbWU9Im9yZ2FuaXNhdGlvbl91c2Vyc2ljb25kZWxldGUiPgorICAgIDx2YWx1ZT7QodGC0LXRgNGC0Lgg0LrQvtGA0LjRgdGC0YPQstCw0YfQsCDQtyDQvtGA0LPQsNC90ZbQt9Cw0YbRltGXPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NSIgbmFtZT0ib3JnYW5pc2F0aW9uX3VzZXJzZGVsZXRlZGhlYWQiPgorICAgIDx2YWx1ZT7QodGC0LXRgNGC0Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc2IiBuYW1lPSJvcmdhbmlzYXRpb25fdXNlcnNhbHJlYWRhZGRlZCI+CisgICAgPHZhbHVlPtCm0LXQuSDQutC+0YDQuNGB0YLRg9Cy0LDRhyDRlCDQstC20LUg0YPRh9Cw0YHQvdC40LrQvtC8INGG0ZbRlNGXINC+0YDQs9Cw0L3RltC30LDRhtGW0ZcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3NyIgbmFtZT0iZGFzaGJvYXJkX25ld3NoZWFkZXIiPgorICAgIDx2YWx1ZT7QndC+0LLQuNC90Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjc4IiBuYW1lPSJkYXNoYm9hcmRfcXVpY2tsaW5rc2hlYWRlciI+CisgICAgPHZhbHVlPtCf0L7RgdC40LvQsNC90L3QvdGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI3OSIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua0NvbmYiPgorICAgIDx2YWx1ZT7QkiDQmtC+0L3RhNC10YDQtdC90YbRltGXPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MCIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua0F1ZGl0Ij4KKyAgICA8dmFsdWU+0JIg0JDRg9C00LjRgtC+0YDRltGXPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4MSIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua3N1cHBvcnQiPgorICAgIDx2YWx1ZT7QlNC+0L/QvtC80L7Qs9CwINGWINC/0ZbQtNGC0YDQuNC80LrQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODIiIG5hbWU9ImRhc2hib2FyZF9xdWlja2hvbWVwYWdldXJsIj4KKyAgICA8dmFsdWU+aHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnLzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODMiIG5hbWU9ImRhc2hib2FyZF9xdWlja21haWxpbmdsaXN0dXJsIj4KKyAgICA8dmFsdWU+aHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnL21haWwtbGlzdHMuaHRtbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODQiIG5hbWU9ImRhc2hib2FyZF9yZXBvcnRidWdzIj4KKyAgICA8dmFsdWU+0J/QvtCy0ZbQtNC+0LzQuNGC0Lgg0L/RgNC+INC/0L7QvNC40LvQutC4ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODUiIG5hbWU9ImRhc2hib2FyZF9yc3NsaXN0aXRlbWxpbmt0ZXh0Ij4KKyAgICA8dmFsdWU+0JHRltC70YzRiNC1PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4NiIgbmFtZT0iZGFzaGJvYXJkX3F1aWNrbGlua2hvbWVwYWdlbGFiZWwiPgorICAgIDx2YWx1ZT7QodCw0LnRgiDQv9GA0L7QtdC60YLRgyAoaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyODciIG5hbWU9ImRhc2hib2FyZF9xdWlja2xpbmttYWlsaW5nbGlzdGxhYmVsIj4KKyAgICA8dmFsdWU+VXNlciBNYWlsaW5nIExpc3QgKGh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9tYWlsLWxpc3RzLmh0bWwpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4OCIgbmFtZT0ibG9naW5fcmVtZW1iZXJ1c2VyIj4KKyAgICA8dmFsdWU+0JfQsNC/0LDQvCfRj9GC0LDRgtC4INCy0YXRltC0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI4OSIgbmFtZT0ibWFpbl9uYXZpIj4KKyAgICA8dmFsdWU+0JrQvtC90YLQtdC90YI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkwIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+0JzQvtGPINC00L7QvNCw0YjQvdGPINGB0YLQvtGA0ZbQvdC60LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjkxIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+0JfQsNC/0LvQsNC90L7QstCw0L3RliDQutC+0L3RhNC10YDQtdC90YbRltGXPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5MiIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPtCX0LDQv9C70LDQvdC+0LLQsNC90ZYg0L/QvtC00ZbRlzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTMiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT7Qn9GD0LHQu9GW0YfQvdGWINC60L7QvdGE0LXRgNC10L3RhtGW0Zc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk0IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+0J/RgNC40LLQsNGC0L3RliDQutC+0L3RhNC10YDQtdC90YbRltGXPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5NSIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPtCf0YPQsdC70ZbRh9C90ZYg0L/QvtC00ZbRlzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTYiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT7Qn9GA0LjQstCw0YLQvdGWINC/0L7QtNGW0Zc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMjk3IiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+0J/Rg9Cx0LvRltGH0L3QuNC5INC60L7QvdGC0LXQvdGCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjI5OCIgbmFtZT0ic3VibmF2aSI+CisgICAgPHZhbHVlPtCf0YDQuNCy0LDRgtC90LjQuSDQutC+0L3RgtC10L3RgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIyOTkiIG5hbWU9InN1Ym5hdmkiPgorICAgIDx2YWx1ZT7Qn9C10YDRgdC+0L3QsNC70YzQvdC40Lkg0LrQvtC90YLQtdC90YI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzAwIiBuYW1lPSJzdWJuYXZpIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMSIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPtCc0L7QtNC10YDQsNGG0ZbRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDIiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT7Qn9GA0LjQt9C90LDRh9C40YLQuCDQvNC+0LTQtdGA0LDRgtC+0YDQvtC8PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwMyIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPtCe0L/QuNGC0YPQstCw0L3QvdGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNCIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPtCS0LjQsdGA0LDRgtC4INGE0LDQudC7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwNSIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPtCd0LDQu9Cw0YjRgtGD0LLQsNC90L3RjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDYiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT7QndCw0LvQsNGI0YLRg9Cy0LDQvdC90Y8g0LrQsNC80LXRgNC4INGWINC80ZbQutGA0L7RhNC+0L3QsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDciIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT7QndCw0LvQsNGI0YLRg9Cy0LDQvdC90Y8g0L/Qu9Cw0L3RiNC10YLRgzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMDgiIG5hbWU9ImNvbmZlcmVuY2ViYXIiPgorICAgIDx2YWx1ZT7QktC40YXRltC0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMwOSIgbmFtZT0iY29uZmVyZW5jZWJhciI+CisgICAgPHZhbHVlPtCf0L7QstC10YDQvdGD0YLQuNGB0Ywg0LTQviDQutGW0LzQvdCw0YI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEwIiBuYW1lPSJjb25mZXJlbmNlYmFyIj4KKyAgICA8dmFsdWU+0JLQuNC50YLQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTEiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+0J/RgNC+0LLRltC00L3QuNC6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxMiIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7Ql9Cw0L/Rg9GB0Log0L/RgNC+0LLRltC00L3QuNC60LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzEzIiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPtCS0ZbQtNC10L4g0ZYg0JDRg9C00ZbQvjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTQiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+0KfQsNGCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxNSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7Qn9C70LDQvdGI0LXRgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMTYiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+0JzQvtC00LXRgNCw0YbRltGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxNyIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7QpNCw0LnQu9C4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxOCIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7QmtC+0YDQuNGB0YLRg9Cy0LDRh9GWPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMxOSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7QntC/0LjRgtGD0LLQsNC90L3RjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjAiIG5hbWU9ImxvZ2lud2luZG93Ij4KKyAgICA8dmFsdWU+0JrQvtGA0LjRgdGC0YPQstCw0Ycg0Lcg0LTQsNC90LjQvCDRltC80LXQvdC10Lwg0LLRltC00YHRg9GC0L3RltC5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyMSIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7QndCwINCy0LDRiNGDINC/0L7RiNGC0L7RgyDRgdC60YDQuNC90YzQutGDINCy0LjRgdC70LDQvdC+INC70LjRgdGCLiDQkdGD0LTRjC3Qu9Cw0YHQutCwINC/0LXRgNC10LLRltGA0YLQtSDQstCw0Ygg0L/QvtGI0YLQvtCy0YMg0YHQutGA0LjQvdGM0LrRgy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzIyIiBuYW1lPSJlcnJvcnR5cGUiPgorICAgIDx2YWx1ZT7Qn9C+0LzQuNC70LrQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjMiIG5hbWU9ImVycm9ydHlwZSI+CisgICAgPHZhbHVlPtCf0L7QstGW0LTQvtC80LvQtdC90L3RjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjQiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPtCd0LXQv9GA0LDQstC40LvRjNC90LjQuSDRhdC10YguINCa0L7RgNC40YHRgtGD0LLQsNGH0LAg0L3QtSDQt9C90LDQudC00LXQvdC+LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMjUiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPtCh0LrQuNC90YPRgtC4INCS0LDRiCDQv9Cw0YDQvtC70Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI2IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT7Qm9C+0LPRltC9PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyNyIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+0LfQvNGW0L3QuNGC0Lgg0L/QsNGA0L7Qu9GMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMyOCIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+0J3QvtCy0LjQuSDQv9Cw0YDQvtC70Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzI5IiBuYW1lPSJyZXNldHBhc3MiPgorICAgIDx2YWx1ZT7Qn9C+0LLRgtC+0YDRltGC0Ywg0L/QsNGA0L7Qu9GMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzMCIgbmFtZT0icmVzZXRwYXNzIj4KKyAgICA8dmFsdWU+0JLQstC10LTQtdC90ZYg0L/QsNGA0L7Qu9GWINC90LUg0ZbQtNC10L3RgtC40YfQvdGWLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzEiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPtCf0LDRgNC+0LvRjCDQv9C+0LLQuNC90LXQvSDQvNGW0YHRgtC40YLQuCDQvNGW0L3RltC80YPQvCA0INGB0LjQvNCy0L7Qu9C4ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzIiIG5hbWU9InJlc2V0cGFzcyI+CisgICAgPHZhbHVlPtCf0LDRgNC+0LvRjCDQstGB0YLQsNC90L7QstC70LXQvdC+LiDQotC10L/QtdGAINCy0Lgg0LzQvtC20LXRgtC1INCy0LLRltC50YLQuC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzMzIiBuYW1lPSJycGNjYWxsYmFjayI+CisgICAgPHZhbHVlPk9LPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNCIgbmFtZT0icnBjZ2VuZXJhbGVycm9yIj4KKyAgICA8dmFsdWU+0J3QtdCy0ZbQtNC+0LzQsCDQv9C+0LzQuNC70LrQsC4g0JHRg9C00Ywt0LvQsNGB0LrQsCDQt9CyJ9GP0LbRltGC0YzRgdGPINC3INCw0LTQvNGW0L3RltGB0YLRgNCw0YLQvtGA0L7QvC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzM1IiBuYW1lPSJsb2dpbndpbmRvdyI+CisgICAgPHZhbHVlPtCd0LXQstGW0LTQvtC80LUg0ZbQvCfRjyDQutC+0YDQuNGB0YLRg9Cy0LDRh9CwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzNiIgbmFtZT0ibG9naW53aW5kb3ciPgorICAgIDx2YWx1ZT7QndC10LLRltGA0L3QuNC5INC/0LDRgNC+0LvRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzMzciIG5hbWU9ImxvZ291dCI+CisgICAgPHZhbHVlPtCS0Lgg0YPRgdC/0ZbRiNC90L4g0LLQuNC50YjQu9C4INC3INGB0LjRgdGC0LXQvNC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzOCIgbmFtZT0icmVnaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+0J/QvtC/0LXRgNC10LTQvdGPINGA0LXRlNGB0YLRgNCw0YbRltGPINCy0LjQvNC60L3QtdC90LAuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjMzOSIgbmFtZT0icmVnaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+0J3QtdCy0ZbRgNC90LjQuSBlLW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQwIiBuYW1lPSJyZWdpc3RyYXRpb24iPgorICAgIDx2YWx1ZT7QntC00L3QsNC60L7QstGWINGW0LzQtdC90LAg0YTQsNC50LvRltCyLCDQsdGD0LTRjC3Qu9Cw0YHQutCwINCy0LjQsdC10YDRltGC0Ywg0ZbQvdGI0LUg0ZbQvCfRjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDEiIG5hbWU9ImZpbGVicm93c2VyIj4KKyAgICA8dmFsdWU+0IbQvCfRjyDRhNCw0LnQu9GDINC90LDQtNGC0L4g0LrQvtGA0L7RgtC60LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQyIiBuYW1lPSJmaWxlYnJvd3NlciI+CisgICAgPHZhbHVlPtCd0LXQvNC+0LbQu9C40LLQviDQt9Cx0LXRgNC10LPRgtC4INCw0LTRgNC10YHRgzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDMiIG5hbWU9InVzZXJhZG1pbiI+CisgICAgPHZhbHVlPtCa0L7RgNC40YHRgtGD0LLQsNGHINC00L7QtNCw0L3QuNC5LCDQsNC70LUg0JLQuCDQv9C+0LLQuNC90L3RliDQtNC+0LTQsNGC0Lgg0LrQvtGA0LjRgdGC0YPQstCw0YfQsCDQsiDQvtGA0LPQsNC90ZbQt9Cw0YbRltGOLCDQsdC+INGW0L3QsNC60YjQtSDQstGW0L0g0L3QtSDQt9C80L7QttC1INCy0LLRltC50YLQuCDQsiDRgdC40YHRgtC10LzRgy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzQ0IiBuYW1lPSJhZG1pbmZvcm1zIj4KKyAgICA8dmFsdWU+0J3QvtCy0LjQuSDQt9Cw0L/QuNGBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0NSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+0J3QtSDQt9C90LDQudC00LXQvdC+INC/0L7Qu9GW0LIg0Lcg0YbQuNC8IElELjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDYiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPtCd0LUg0LfQvdCw0LnQtNC10L3QviDQvNGW0YLQvtC6INC00LvRjyDRhtGM0L7Qs9C+INC/0L7Qu9GPLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNDciIG5hbWU9ImVycm9ybWVzc2FnZSI+CisgICAgPHZhbHVlPtCf0L7RgtGA0ZbQsdC90ZYg0L/RgNCw0LLQsCDQsNC00LzRltC90ZbRgdGC0YDQsNGC0L7RgNCwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0OCIgbmFtZT0ibWFpbm5hdmkiPgorICAgIDx2YWx1ZT7QoNC10LTQsNC60YLQvtGAINC80L7QstC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM0OSIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+0JzQvtCy0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzUwIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT5JRCDQt9C80ZbQvdC90L7RlzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTEiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPklEINC30LzRltC90L3QvtGXPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1MiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+0JfQvdCw0YfQtdC90L3RjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTMiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPtCX0L3QsNGH0LXQvdC90Y8g0L/QvtC70ZbQsjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTQiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPtCd0LDQt9Cy0Lgg0LzRltGC0L7QujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTUiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPtCX0L3QsNGH0LXQvdC90Y8g0LzRltGC0L7QujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNTYiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPklEINC80ZbRgtC60Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU3IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7QktC4INGC0ZbQu9GM0LrQuCDRgdGC0LjRgNCw0ZTRgtC1INC80ZbRgtC60YMsINCwINC90LUg0L/QvtC70LUhINCS0Lgg0L3QtSDQvNC+0LbQtdGC0LUg0YHRgtC10YDRgtC4INC/0L7Qu9C1LCDQvtGB0LrRltC70YzQutC4INCy0L7QvdC+INC80LDQttC1INC80ZbRgtC60Lgg0L3QsCDRltC90YjQuNGFINC80L7QstCw0YUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM1OCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+0J3QtdCy0ZbRgNC90LjQuSBJRCDQvNGW0YLQutC4LiBGaWVsZExhbmd1YWdlc3ZhbHVlc19JZCDQvdC1INC30L3QsNC50LTQtdC90L4g0LIg0LHQsNC30ZYg0LTQsNC90LjRhS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzU5IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7QktC4INC90LUg0LzQvtC20LXRgtC1INGB0YLQtdGA0YLQuCDQv9C+0LvQtS4g0JLQuCDQvNC+0LbQtdGC0LUg0YHRgtC40YDQsNGC0Lgg0LvQuNGI0LUg0LzRltGC0LrQuCwg0LAg0L3QtSDQv9C+0LvRjy4g0J3QtdC80LDRlCDQvNGW0YLQutC4INC30LDQstCw0L3RgtCw0LbQtdC90L7RlyDQsiDQtNCw0L3QuNC5INC80L7QvNC10L3Rgiwg0LDQsdC+INC90LUg0ZbRgdC90YPRlCDQvNGW0YLQutC4INC00LvRjyDQtNCw0L3QvtCz0L4g0L/QvtC70Y8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MCIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+0JXQutGB0L/QvtGA0YI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzYxIiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7QktC4INC/0L7QstC40L3QvdGWINCy0LjQudGC0Lgg0Lcg0YHQuNGB0YLQtdC80LgsINGJ0L7QsSDQv9C+0LHQsNGH0LjRgtC4INCy0L3QtdGB0LXQvdGWINC30LzRltC90LguPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MiIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+0JTQvtC00LDRgtC4INC90L7QstGDINC80L7QstGDPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2MyIgbmFtZT0ibGFuZ3VhZ2VzZWRpdG9yIj4KKyAgICA8dmFsdWU+0JLQuNC00LDQu9C40YLQuCDQvNC+0LLRgzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjQiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPtCU0L7QtNCw0YLQuCDQvdC+0LLRgyDQvNC+0LLRgzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNjUiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPtCG0Lwn0Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY2IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7QlNC+0LTQsNGC0Lgg0LzQvtCy0YM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY3IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7QoNC10LfQtdGA0LLQvdGWINC60L7Qv9GW0Zc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzY4IiBuYW1lPSJ0dXJub3Zlcmxpc3QiPgorICAgIDx2YWx1ZT7QndCwINC/0L7Rh9Cw0YLQvtC6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM2OSIgbmFtZT0idHVybm92ZXJsaXN0Ij4KKyAgICA8dmFsdWU+0J3QsNC30LDQtDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzAiIG5hbWU9InR1cm5vdmVybGlzdCI+CisgICAgPHZhbHVlPtCd0LDRgdGC0YPQv9C90LU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzcxIiBuYW1lPSJ0dXJub3Zlcmxpc3QiPgorICAgIDx2YWx1ZT7QkiDQutGW0L3QtdGG0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzcyIiBuYW1lPSJ2aWRlb2JveCI+CisgICAgPHZhbHVlPtCg0L7Qt9C80L7QstC4INC60L7RgNC40YHRgtGD0LLQsNGH0LAgKEJ5IGNsaWNraW5nIGhlcmUgeW91IGNhbiBnaXZlIGV4Y2x1c2l2ZSBhdWRpbyAvIG11dGUgdGhlIG1pY3JvcGhvbmUgb2Ygb3RoZXJzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzMiIG5hbWU9InZpZGVvYm94Ij4KKyAgICA8dmFsdWU+0LLQutC7L9Cy0LjQutC7INC30LLRg9C6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3NCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+0KHQuNGB0YLQtdC80LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc1IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT7QntGB0L7QsdC40YHRgtGWINC90LDQu9Cw0YjRgtGD0LLQsNC90L3RjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzYiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPtCf0YDQuNCy0ZbRgiw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzc3IiBuYW1lPSJkYXNoYm9hcmQiPgorICAgIDx2YWx1ZT7QndCw0LvQsNGI0YLRg9Cy0LDRgtC4INC/0YDQvtGE0ZbQu9GMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM3OCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+0J3QvtCy0LUg0L/QvtCy0ZbQtNC+0LzQu9C10L3QvdGPOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzNzkiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPtCX0LDQstCw0L3RgtCw0LbQuNGC0Lgg0LzQsNC70Y7QvdC+0Lo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgwIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPtCU0LDQvdGWINC60L7RgNC40YHRgtGD0LLQsNGH0LAgLSDQldC60YHQv9C+0YDRgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODEiIG5hbWU9ImJhY2t1cHBhbmVsIj4KKyAgICA8dmFsdWU+0KHQv9C+0YfQsNGC0LrRgyDQv9C+0LLQuNC90L3RliDQsdGD0YLQuCDRgdGC0LLQvtGA0LXQvdGWINGD0YHRliDQvtGA0LPQsNC90ZbQt9Cw0YbRltGXPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4MiIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT7Qn9C+0YfQsNGC0Lgg0LXQutGB0L/QvtGA0YI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzgzIiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPtCf0L4g0L7RgNCz0LDQvdGW0LfQsNGG0ZbRj9GFPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM4NCIgbmFtZT0iYmFja3VwcGFuZWwiPgorICAgIDx2YWx1ZT7Qn9C+0YfQsNGC0Lgg0LXQutGB0L/QvtGA0YI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg1IiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPtCU0LDQvdGWINC60L7RgNC40YHRgtGD0LLQsNGH0LAgLSDRltC80L/QvtGA0YI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg2IiBuYW1lPSJiYWNrdXBwYW5lbCI+CisgICAgPHZhbHVlPtCS0LjQsdGA0LDRgtC4IHVzZXJzLnhtbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODciIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPtCG0LzQv9C+0YDRgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzODgiIG5hbWU9Imxhbmd1YWdlc2VkaXRvciI+CisgICAgPHZhbHVlPtCV0LrRgdC/0L7RgNGC0YPQstCw0YLQuCDQsiBYTUw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzg5IiBuYW1lPSJsYW5ndWFnZXNlZGl0b3IiPgorICAgIDx2YWx1ZT7QktC40LHQtdGA0ZbRgtGMINC80L7QstC90LjQuSDRhNCw0LnQuyDQtNC70Y8g0ZbQvNC/0L7RgNGC0YMuINCS0LjQsdC10YDRltGC0Ywg0L/RgNCw0LLQuNC70YzQvdGDINC80L7QstGDINC30ZYg0YHQv9C40YHQutGDISDQndC10LfQsNCy0LDQttCw0Y7Rh9C4LCDRj9C60YMg0L3QsNC30LLRgyDQvNCw0ZQg0YTQsNC50LssINCy0ZbQvSDQsdGD0LTQtSDRltC80L/QvtGA0YLQvtCy0LDQvdC40Lkg0LIg0YbRjiDQvNC+0LLRgzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTAiIG5hbWU9ImltcG9ydHdpbmRvdyI+CisgICAgPHZhbHVlPtCG0LzQv9C+0YDRgiAtINCy0LjQsdGA0LDRgtC4INGE0LDQudC7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5MSIgbmFtZT0icmVjb3JkaW5nc2F2ZXdpbiI+CisgICAgPHZhbHVlPtCX0LHQtdGA0LXQs9GC0Lgg0Y/QujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTIiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT7QhtC8J9GPOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTMiIG5hbWU9InJlY29yZGluZ3NhdmV3aW4iPgorICAgIDx2YWx1ZT7QmtC+0LzQtdC90YLQsNGA0ZY6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjM5NCIgbmFtZT0icmVjb3JkaW5nc2F2ZXdpbiI+CisgICAgPHZhbHVlPtCX0LHQtdGA0LXQs9GC0Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk1IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT7Ql9Cw0L/QuNGB0Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk2IiBuYW1lPSJyZWNvcmRlciI+CisgICAgPHZhbHVlPtCf0LXRgNC10LPQu9GP0LQg0LfQsNC/0LjRgdGW0LI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk3IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT7Ql9Cw0L/QuNGB0Lgg0L/Rg9Cx0LvRltGH0L3QuNGFINGWINC/0YDQuNCy0LDRgtC90LjRhSDQutGW0LzQvdCw0YI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMzk4IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT7QmtC+0YDQuNGB0YLRg9Cy0LDRh9GWOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIzOTkiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPtCf0ZbQtCfRlNC00L3QsNC90L46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMCIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMSIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+0JrQvtGA0LjRgdGC0YPQstCw0YfRltCyINCyINC60ZbQvNC90LDRgtGWOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDIiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPtCe0L3QvtCy0LjRgtC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwMyIgbmFtZT0icm9vbXNsaXN0Ij4KKyAgICA8dmFsdWU+0KbRjyDQutGW0LzQvdCw0YLQsCDQv9C10YDQtdC/0L7QstC90LXQvdCwLiDQodC/0YDQvtCx0YPQudGC0LUg0YnQtSDRh9C10YDQtdC3INC00LXQutGW0LvRjNC60LAg0YXQstC40LvQuNC9LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDQiIG5hbWU9InJvb21zTGlzdCI+CisgICAgPHZhbHVlPtCS0LjQsdC10YDRltGC0Ywg0LrRltC80L3QsNGC0YMg0YnQvtCxINCy0LfQvdCw0YLQuCDQtNC10YLQsNC70ZY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA1IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT7Qp9Cw0YIg0Lcg0LrQvtGA0LjRgdGC0YPQstCw0YfQsNC80Lgg0LTQsNC90L7RlyDQutGW0LzQvdCw0YLQuDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA2IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT7QmtGW0LzQvdCw0YLQsDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDA3IiBuYW1lPSJyb29tc2xpc3QiPgorICAgIDx2YWx1ZT7QmtC+0YDQuNGB0YLRg9Cy0LDRh9GW0LIg0LIg0YbRltC5INC60ZbQvNC90LDRgtGWOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MDgiIG5hbWU9InJvb21zbGlzdCI+CisgICAgPHZhbHVlPtCf0ZbRgdC70Y86PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQwOSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+0J/RgNC+0LPRgNCw0YLQuCDQt9Cw0L/QuNGBPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMCIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+0JTQvtCy0LbQuNC90LA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMSIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+0JTQsNGC0LA6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxMiIgbmFtZT0icmVjb3JkIj4KKyAgICA8dmFsdWU+0KDQtdC20LjQvCDQt9Cw0L/QuNGB0YMhINCS0Lgg0L3QtSDQvNC+0LbQtdGC0LUg0LfQvNGW0L3QuNGC0Lgg0L3RltGP0LrQuNGFINC30L3QsNGH0LXQvdGMLCDRhtC10Lkg0YTQsNC50Lsg0LLQttC1INC30LDQv9C40YHQsNC90LjQuSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDEzIiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT7Qn9GA0L7Qs9GA0LDRgtC4INC30LDQv9C40YE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE0IiBuYW1lPSJyZWNvcmQiPgorICAgIDx2YWx1ZT7Qn9GA0L7Qs9GA0LDRgtC4IC8g0J/QsNGD0LfQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTUiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPtCf0L7Rh9Cw0YLQvtC6INC30LDQv9C40YHRgzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTYiIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPtCX0YPQv9C40L3QuNGC0Lgg0LfQsNC/0LjRgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MTciIG5hbWU9InJlY29yZCI+CisgICAgPHZhbHVlPtCX0LDQv9C40YE6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQxOCIgbmFtZT0icmVjb3JkX2Vycm9yX21zZyI+CisgICAgPHZhbHVlPtCd0LAg0LTQsNC90LjQuSDQvNC+0LzQtdC90YIg0YXRgtC+0YHRjCDRg9C20LUg0LLQuNC60L7QvdGD0ZQg0LfQsNC/0LjRgTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDE5IiBuYW1lPSJyZWNvcmRfbWVzc2FnZSI+CisgICAgPHZhbHVlPtCX0LDQv9C40YEhINCa0L7RgNC40YHRgtGD0LLQsNGHOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjAiIG5hbWU9InJlY29yZF9jYW5jZWwiPgorICAgIDx2YWx1ZT7QodC60LDRgdGD0LLQsNGC0Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDIxIiBuYW1lPSJyZWNvcmRfY2FuY2FsX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT7Ql9Cw0L/QuNGB0YMg0LHRg9CyINGB0LrQsNGB0L7QstCw0L3QuNC5INGWINC90LUg0LzQvtC20LUg0LHRg9GC0Lgg0LfQsdC10YDQtdC20LXQvdC40LkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyMiIgbmFtZT0iY2FuY2VsX2RpYWxvZ19yZXN1bWUiPgorICAgIDx2YWx1ZT7Qn9GA0L7QtNC+0LLQttC40YLQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjMiIG5hbWU9ImNhbmNlbF9kaWFsb2dfcmVzdW1lX3Rvb2x0aXAiPgorICAgIDx2YWx1ZT7Ql9Cw0LrRgNC40YLQuCDRhtC1INCy0ZbQutC90L4g0ZYg0L/RgNC+0LTQvtCy0LbQuNGC0Lgg0LfQsNC/0LjRgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjQiIG5hbWU9InBhaW50dG9vbHNfZWxsaXBzZV9jb2xvciI+CisgICAgPHZhbHVlPtCG0L3RiNC40Lkg0LrQvtC70ZbRgCDQu9GW0L3RltGXPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQyNSIgbmFtZT0iY29sb3JwaWNrZXJfaGVhZCI+CisgICAgPHZhbHVlPtCS0LjQsdGA0LDRgtC4INC60L7Qu9GW0YA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDI2IiBuYW1lPSJwYWludHRvb2xzX2xpbmVfZGlzYWJsZSI+CisgICAgPHZhbHVlPtCS0LrQuyAvINCS0LjQutC7INC60L7Qu9GW0YAg0LvRltC90ZbRlzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjciIG5hbWU9InBhaW50dG9vbHNfZmlsbF9kaXNhYmxlIj4KKyAgICA8dmFsdWU+0JfQvNGW0L3QuNGC0Lgg0LrQvtC70ZbRgCDQvdCw0L/QvtCy0L3QtdC90L3RjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjgiIG5hbWU9InBhaW50dG9vbHNfbGluZV9kaXNhYmxlIj4KKyAgICA8dmFsdWU+0JLQuNC60LsgLyDQktC60Lsg0LrQvtC70ZbRgCDQvdCw0L/QvtCy0L3QtdC90L3RjzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MjkiIG5hbWU9ImNoYW5nZV93aWR0aF9hcnJvd19kb3duX3NsaWRlciI+CisgICAgPHZhbHVlPtCX0LzRltC90LjRgtC4INGI0LjRgNC40L3RgyDQu9GW0L3RltGXPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzMCIgbmFtZT0iY2xvc2Vfc21hbGxfcG9wdXBzIj4KKyAgICA8dmFsdWU+0JfQsNC60YDQuNGC0Lg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMxIiBuYW1lPSJwYWludF90b29sX2xldHRlciI+CisgICAgPHZhbHVlPtCX0LzRltC90LjRgtC4INGA0L7Qt9C80ZbRgCDRiNGA0LjRhNGC0YM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDMyIiBuYW1lPSJyZWNvcmRpbmdzbGlzdF9kZWxldGUiPgorICAgIDx2YWx1ZT7QodGC0LXRgNGC0Lgg0LfQsNC/0LjRgTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzMiIG5hbWU9InJlY29yZGluZ3NsaXN0X3JlY29yZGVkQnlHdWVzdCI+CisgICAgPHZhbHVlPtCT0ZbRgdGC0Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM0IiBuYW1lPSJyZWNvcmRpbmdzbGlzdF9yZWNvcmRlZGJ5Ij4KKyAgICA8dmFsdWU+0JI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNSIgbmFtZT0icmVjb3JkaW5nc190YWJsZV9oZWFkX25hbWUiPgorICAgIDx2YWx1ZT7QhtC8J9GPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQzNiIgbmFtZT0icmVjb3JkaW5nc190YWJsZV9oZWFkX3Jvb20iPgorICAgIDx2YWx1ZT7QmtGW0LzQvdCw0YLQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0MzciIG5hbWU9InJlY29yZGluZ3NfdGFibGVfaGVhZF9kYXRlIj4KKyAgICA8dmFsdWU+0JTQsNGC0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM4IiBuYW1lPSJyZWNvcmRfc3RhcnRfY2FuY2VsIj4KKyAgICA8dmFsdWU+0JLRltC00LzRltC90LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDM5IiBuYW1lPSJyZWNvcmRfc3RhcnRfc3RhcnQiPgorICAgIDx2YWx1ZT7QodGC0LDRgNGCPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MCIgbmFtZT0iZmlsZXNicm93c2VyX3RhYmxlX2hlYWRfbmFtZSI+CisgICAgPHZhbHVlPtCG0Lwn0Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQxIiBuYW1lPSJmaWxlc2Jyb3dzZXJfdGFibGVfaGVhZF9kYXRlIj4KKyAgICA8dmFsdWU+0JTQsNGC0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQyIiBuYW1lPSJjaGF0X2NsZWFyX2hpc3RvcnkiPgorICAgIDx2YWx1ZT7QodGC0LXRgNGC0Lgg0LvQvtCzINGH0LDRgtGDINGB0LXRgNCy0LXRgNGDPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0MyIgbmFtZT0iY2hhdF9vdmVyYWxsX2hlYWRlciI+CisgICAgPHZhbHVlPtCn0LDRgjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDQiIG5hbWU9ImNoYXRfc2VuZF9idG4iPgorICAgIDx2YWx1ZT7QktGW0LTQv9GA0LDQstC40YLQuCDQv9C+0LLRltC00L7QvNC70LXQvdC90Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDQ1IiBuYW1lPSJjaGF0X2Vtb3RfYnRuIj4KKyAgICA8dmFsdWU+0JXQvNC+0YbRltGXPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0NiIgbmFtZT0iY2hhdF9lbW90X3dpbiI+CisgICAgPHZhbHVlPtCV0LzQvtGG0ZbRlzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NDciIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5ncyI+CisgICAgPHZhbHVlPtCS0LjQsdC10YDRltGC0Ywg0L/Rg9Cx0LvRltGH0L3RliDQv9GA0LjRgdGC0YDQvtGXPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0OCIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2NvbWJvIj4KKyAgICA8dmFsdWU+0JDRg9C00ZbQviDRliDQstGW0LTQtdC+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ0OSIgbmFtZT0iY2hvb3NlX3ZpZGVvX3NldHRpbmdzX2NvbWJvIj4KKyAgICA8dmFsdWU+0JvQuNGI0LUg0LDRg9C00ZbQvjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTAiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19jb21ibyI+CisgICAgPHZhbHVlPtCb0LjRiNC1INCy0ZbQtNC10L48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDUxIiBuYW1lPSJjaG9vc2VfdmlkZW9fc2V0dGluZ3NfY29tYm8iPgorICAgIDx2YWx1ZT7QsdC10Lcg0JDRg9C00ZbQvi/QktGW0LTQtdC+ICjRgdGC0LDRgtC40YfQvdGWINC80LDQu9GO0L3QutC4KTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTIiIG5hbWU9ImNob29zZV92aWRlb19zZXR0aW5nc19pbmZvX3RleHQiPgorICAgIDx2YWx1ZT7QkdC10Lcg0L/QvtC60LDQt9GDINCQ0YPQtNGW0L4v0JLRltC00LXQviDQstGW0LQg0LLQsNGI0L7Qs9C+INCf0JouINCR0YPQtNC1INC00L7RgdGC0YPQv9C90LAg0LvQuNGI0LAg0LrQsNGA0YLQuNC90LrQsCDQstCw0YjQvtCz0L4g0L/RgNC+0YTRltC70Y4uINCS0LjQsdC10YDRltGC0Ywg0YbRliDQv9Cw0YDQsNC80LXRgtGA0Lgg0Y/QutGJ0L4g0YMg0LLQsNGBINC/0L7Qs9Cw0L3QuNC5INC60LDQvdCw0LsgSW50ZXJuZXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1MyIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9tb25kYXkiPgorICAgIDx2YWx1ZT7Qn9CdPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV90dWVzZGF5Ij4KKyAgICA8dmFsdWU+0JLQojwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTUiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfd2VkbmVzZGF5Ij4KKyAgICA8dmFsdWU+0KHQoDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NTYiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfdGh1cnNkYXkiPgorICAgIDx2YWx1ZT7Qp9CiPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1NyIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9mcmlkYXkiPgorICAgIDx2YWx1ZT7Qn9CiPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ1OCIgbmFtZT0iY2FsZW5kYXJfZGF5bmFtZV9zYXR1cmRheSI+CisgICAgPHZhbHVlPtCh0JE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDU5IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX3N1bmRheSI+CisgICAgPHZhbHVlPtCd0JQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYwIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX21vbmRheSI+CisgICAgPHZhbHVlPtCf0L7QvdC10LTRltC70L7QujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjEiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfVHVlc2RheUxhYmVsIj4KKyAgICA8dmFsdWU+0JLRltCy0YLQvtGA0L7QujwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjIiIG5hbWU9ImNhbGVuZGFyX2RheW5hbWVfV2VkbmVzZGF5TGFiZWwiPgorICAgIDx2YWx1ZT7QodC10YDQtdC00LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDYzIiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1RodXJzZGF5TGFiZWwiPgorICAgIDx2YWx1ZT7Qp9C10YLQstC10YA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY0IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX0ZyaWRheUxhYmVsIj4KKyAgICA8dmFsdWU+0J/Rj9GC0L3QuNGG0Y88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY1IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1NhdHVyZGF5TGFiZWwiPgorICAgIDx2YWx1ZT7QodGD0LHQvtGC0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDY2IiBuYW1lPSJjYWxlbmRhcl9kYXluYW1lX1N1bmRheUxhYmVsIj4KKyAgICA8dmFsdWU+0J3QtdC00ZbQu9GPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2NyIgbmFtZT0iY2FsZW5kYXJfd2Vla251bWJlcl9oZWFkZXIiPgorICAgIDx2YWx1ZT7QmtCiPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ2OCIgbmFtZT0iY2FsZW5kYXJfd2Vla251bWJlcl9oZWFkZXJUb29sdGlwIj4KKyAgICA8dmFsdWU+0JrQsNC70LXQvdC00LDRgNC90LjQuSDRgtC40LbQtNC10L3RjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NjkiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT7QodGW0YfQtdC90Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDcwIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+0JvRjtGC0LjQuTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzEiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT7QkdC10YDQtdC30LXQvdGMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3MiIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPtCa0LLRltGC0LXQvdGMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3MyIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPtCi0YDQsNCy0LXQvdGMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3NCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPtCn0LXRgNCy0LXQvdGMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3NSIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPtCb0LjQv9C10L3RjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzYiIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT7QodC10YDQv9C10L3RjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0NzciIG5hbWU9ImNhbGVuZGFyX21vbnRobmFtZXMiPgorICAgIDx2YWx1ZT7QktC10YDQtdGB0LXQvdGMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3OCIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPtCW0L7QstGC0LXQvdGMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ3OSIgbmFtZT0iY2FsZW5kYXJfbW9udGhuYW1lcyI+CisgICAgPHZhbHVlPtCb0LjRgdGC0L7Qv9Cw0LQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgwIiBuYW1lPSJjYWxlbmRhcl9tb250aG5hbWVzIj4KKyAgICA8dmFsdWU+0JPRgNGD0LTQtdC90Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDgxIiBuYW1lPSJjYWxlbmRhcndpbl9oZWFkZXIiPgorICAgIDx2YWx1ZT7QmtCw0LvQtdC90LTQsNGAPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4MiIgbmFtZT0icm9vbWFkbWluX2xhYmVsTnVtYmVyT2ZQYXJ0aWNpcGFudHMiPgorICAgIDx2YWx1ZT7Qo9GH0LDRgdC90LjQutC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4MyIgbmFtZT0icm9vbVZhbHVlX2FkdmFuY2VkU2V0dGluZ3MiPgorICAgIDx2YWx1ZT7Qn9C+0LrQsNC30LDRgtC4INC90LDQu9Cw0YjRgtGD0LLQsNC90L3RjyDQv9C+0LrQsNC30YM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg0IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3ZpZGVvWCI+CisgICAgPHZhbHVlPlggfCBZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4NSIgbmFtZT0icm9vbUFkbWluX2xheW91dF92aWRlb1kiPgorICAgIDx2YWx1ZT7QqNC40YDQuNC90LAgfCDQktC40YHQvtGC0LA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg2IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0Ij4KKyAgICA8dmFsdWU+0JLRltC00LXQvi3QutC+0L3RgtC10LnQvdC10YA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg3IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X21vZCI+CisgICAgPHZhbHVlPtCa0L7QvdGC0LXQudC90LXRgCDQvNC+0LTQtdGA0LDRhtGW0Zc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDg4IiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X21vZF9wb3MiPgorICAgIDx2YWx1ZT5YPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ4OSIgbmFtZT0icm9vbUFkbWluX2xheW91dF93aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+0JrQvtC90YLQtdC50L3QtdGAINC/0LvQsNC90YjQtdGC0YM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNDkwIiBuYW1lPSJyb29tQWRtaW5fbGF5b3V0X3doaXRlYm9hcmRfc2hvdyI+CisgICAgPHZhbHVlPtCQ0LrRgtC40LLRltC30YPQstCw0YLQuDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTEiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZF9wb3MiPgorICAgIDx2YWx1ZT5YIHwgWTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTIiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPtCo0LjRgNC40L3QsCB8INCS0LjRgdC+0YLQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTMiIG5hbWU9InJvb21BZG1pbl9sYXlvdXRfZmlsZXMiPgorICAgIDx2YWx1ZT7QmtC+0L3RgtC10LnQvdC10YAg0YTQsNC50LvRltCyLNGH0LDRgtGDLNGD0YfQsNGB0L3QuNC60ZbQsiAtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NCIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlc19zaG93Ij4KKyAgICA8dmFsdWU+0JDQutGC0LjQstGW0LfRg9Cy0LDRgtC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NSIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlc19wb3MiPgorICAgIDx2YWx1ZT5YIHxZPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5NiIgbmFtZT0icm9vbUFkbWluX2xheW91dF9maWxlcyI+CisgICAgPHZhbHVlPtCo0LjRgNC40L3QsCB8INCS0LjRgdC+0YLQsDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTciIG5hbWU9Im1vZGVyYXRvcl9nb25lX21lc3NhZ2UiPgorICAgIDx2YWx1ZT7QnNC+0LTQtdGA0LDRgtC+0YAg0L/QvtC60LjQvdGD0LIg0LrRltC80L3QsNGC0YMuINCS0Lgg0LzQvtC20LXRgtC1INGB0YLQsNGC0Lgg0LzQvtC00LXRgNCw0YLQvtGA0L7QvCDQsNCx0L4g0YfQtdC60LDRgtC4LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI0OTgiIG5hbWU9Im1vZGVyYXRvcl9tZXNzYWdlX2V2ZW50X25vX21vZCI+CisgICAgPHZhbHVlPtCd0LXQvNCw0ZQg0LzQvtC00LXRgNCw0YLQvtGA0LAg0LIg0LTQsNC90ZbQuSDQutGW0LzQvdCw0YLRliwg0LDQu9C1INGUINGD0YfQsNGB0L3QuNC60LguINCS0Lgg0LzQvtC20LXRgtC1INGB0YLQsNGC0Lgg0LzQvtC00LXRgNCw0YLQvtGA0L7QvCDQsNCx0L4g0YfQtdC60LDRgtC4PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjQ5OSIgbmFtZT0iZmVlZGJhY2tfdGVtcGxhdGVfc3ViamVjdCI+CisgICAgPHZhbHVlPtCX0LLQvtGA0L7RgtC90ZbQuSDQt9CyJ9GP0LfQvtC6ICRBUFBfTkFNRTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDAiIG5hbWU9Imludml0YXRpb25fdGVtcGxhdGVfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSAtINCX0LDQv9GA0L7RiNC10L3QvdGPPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwMSIgbmFtZT0iaW52aXRhdGlvbl90ZXh0X2Zyb20iPgorICAgIDx2YWx1ZT7Qn9C+0LLRltC00L7QvNC70LXQvdC90Y8g0LTQu9GPINC60L7RgNC40YHRgtGD0LLQsNGH0ZbQsjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAyIiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfbWVzc2FnZSI+CisgICAgPHZhbHVlPtCf0L7QstGW0LTQvtC80LvQtdC90L3Rjzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTAzIiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfY2xpY2tfdGV4dCI+CisgICAgPHZhbHVlPtCd0LDRgtC40YHQvdGW0YLRjCDQvdCwINGG0LXQuSDQu9GW0L3QuiDRidC+0LEg0LLQt9GP0YLQuCDRg9GH0LDRgdGC0Ywg0LIg0LrQvtC90YTQtdGA0LXQvdGG0ZbRlzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA0IiBuYW1lPSJpbnZpdGF0aW9uX3RleHRfY2xpY2tfdGV4dF9saW5rIj4KKyAgICA8dmFsdWU+0J3QsNGC0LjRgdC90ZbRgtGMINGC0YPRgiwg0YnQvtCxINGD0LLRltC50YLQuCDQsiDQutGW0LzQvdCw0YLRgzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDUiIG5hbWU9Imludml0YXRpb25fdGV4dF9jbGlja190ZXh0X2hlbHAiPgorICAgIDx2YWx1ZT7Qr9C60YnQviDQstC4INC80LDRlCDQv9GA0L7QsdC70LXQvNGDINC3INC00LDQvdC40Lwg0L/QvtGB0LjQu9Cw0L3QvdGPLCDQsdGD0LTRjC3Qu9Cw0YHQutCwINGB0LrQvtC/0ZbRjtC50YLQtSDQudC+0LPQviDRliDQstGB0YLQsNCy0YLQtSDQsiDRgdCy0ZbQuSDQsdGA0LDRg9C30LXRgDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA2IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSBTaWduVXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTA3IiBuYW1lPSJyZWdpc3RlcmluZ19tYWlsX3RleHRfaGVhZDIiPgorICAgIDx2YWx1ZT7QktCw0YjRliDQtNCw0L3RliDQutC+0YDQuNGB0YLRg9Cy0LDRh9CwOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MDgiIG5hbWU9InJlZ2lzdGVyaW5nX21haWxfdGV4dF91c2VybmFtZSI+CisgICAgPHZhbHVlPtCb0L7Qs9GW0L06PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUwOSIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X3Bhc3MiPgorICAgIDx2YWx1ZT7Qn9Cw0YDQvtC70Yw6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxMCIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X21haWwiPgorICAgIDx2YWx1ZT5FLW1haWw6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxMSIgbmFtZT0icmVnaXN0ZXJpbmdfbWFpbF90ZXh0X2J5ZSI+CisgICAgPHZhbHVlPtCa0L7QvNCw0L3QtNCwICRBUFBfTkFNRTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTIiIG5hbWU9InJlZ2lzdGVyX21haWxfc3ViamVjdCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSBTaWduLVVwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxMyIgbmFtZT0icmVzZXRfcGFzc3dvcmRfdGVtcGxhdGVfaGVhZCI+CisgICAgPHZhbHVlPiRBUFBfTkFNRSAtINCS0ZbQtNC90L7QstC40YLQuCDQv9Cw0YDQvtC70Yw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE0IiBuYW1lPSJyZXNldF9wYXNzd29yZF90ZW1wbGF0ZV90ZXN0X2xpbmsiPgorICAgIDx2YWx1ZT7QndCw0YLQuNGB0L3RltGC0Ywg0L3QsCDRhtC1INC/0L7RgdC40LvQsNC90L3Rjywg0YnQvtCxINCy0LLQtdGB0YLQuCDQvdC+0LLQuNC5INC/0LDRgNC+0LvRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTUiIG5hbWU9InJlc2V0X3Bhc3N3b3JkX3RlbXBsYXRlX3RleHQyX2xpbmsiPgorICAgIDx2YWx1ZT7QndCw0YLQuNGB0L3RltGC0Ywg0YLRg9GCLCDRidC+0LEg0LLQtdGB0YLQuCDQvdC+0LLQuNC5INC/0LDRgNC+0LvRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MTYiIG5hbWU9InJlc2V0X3Bhc3N3b3JkX3RlbXBsYXRlX3RleHQzX2xpbmsiPgorICAgIDx2YWx1ZT7Qr9C60YnQviDQstC4INC80LDRlCDQv9GA0L7QsdC70LXQvNGDINC3INC00LDQvdC40Lwg0L/QvtGB0LjQu9Cw0L3QvdGPLCDQsdGD0LTRjC3Qu9Cw0YHQutCwINGB0LrQvtC/0ZbRjtC50YLQtSDQudC+0LPQviDRliDQstGB0YLQsNCy0YLQtSDQsiDRgdCy0ZbQuSDQsdGA0LDRg9C30LXRgDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE3IiBuYW1lPSJyZXNldF9wYXNzd29yZF9tYWlsX3N1YmplY3QiPgorICAgIDx2YWx1ZT7QktGW0LTQvdC+0LLQu9C10L3QvdGPINC/0LDRgNC+0LvRjyAkQVBQX05BTUU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTE4IiBuYW1lPSJkYXRlUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT7QkdGD0LTRjC3Qu9Cw0YHQutCwINCy0LLQtdC00ZbRgtGMINC/0YDQsNCy0LjQu9GM0L3RgyDQtNCw0YLRgywg0L3QsNC/0YDQuNC60LvQsNC0IDI0LjEyLjIwMDcgKGRkLm1tLnl5eXkpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUxOSIgbmFtZT0iZW1haWxSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPtCR0YPQtNGMINC70LDRgdC60LAg0LLQstC10LTRltGC0Ywg0LTRltC50YHQvdC40LkgRS1tYWlsLCDQvdCw0L/RgNC40LrQu9Cw0LQgbmFtZUBtYWlsLmNvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjAiIG5hbWU9ImZsb2F0UmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT7QkdGD0LTRjCDQu9Cw0YHQutCwINCy0LLQtdC00ZbRgtGMINGH0LjRgdC70L4g0Lcg0L/Qu9Cw0LLQsNGO0YfQvtGOINC60YDQsNC/0LrQvtGOLCDQvdCw0L/RgNC40LrQu9Cw0LQgMS4wMDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjEiIG5hbWU9Im51bWJlclJlZ0V4cEVycm9yIj4KKyAgICA8dmFsdWU+0JHRg9C00Ywg0LvQsNGB0LrQsCDQstCy0LXQtNGW0YLRjCDRh9C40YHQu9C+LCDQvdCw0L/RgNC40LrQu9Cw0LQgMTAwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyMiIgbmFtZT0icGhvbmVSZWdFeHBFcnJvciI+CisgICAgPHZhbHVlPtCR0YPQtNGMINC70LDRgdC60LAg0LLQstC10LTRltGC0Ywg0LTRltC50YHQvdC40Lkg0L3QvtC80LXRgCwg0L3QsNC/0YDQuNC60LvQsNC0ICsrNDkgMDEyMyAxMjMxMjM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTIzIiBuYW1lPSJ0aW1lUmVnRXhwRXJyb3IiPgorICAgIDx2YWx1ZT7QkdGD0LTRjC3Qu9Cw0YHQutCwINCy0LLQtdC00ZbRgtGMINGH0LDRgSwg0L3QsNC/0YDQuNC60LvQsNC0IDEyOjIzIChoaDptbSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI0IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvdyI+CisgICAgPHZhbHVlPtCf0LDRgNC+0LvRjCDQt9Cw0YXQuNGJ0LXQvdC40Lk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI1IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd19wYXNzd29yZExhYmVsIj4KKyAgICA8dmFsdWU+0J/QsNGA0L7Qu9GMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUyNiIgbmFtZT0iaW52aXRhdGlvbl93aW5kb3dfdmFsaWRMYWJlbCI+CisgICAgPHZhbHVlPtCf0LXRgNGW0L7QtCDQtNGW0LnRgdC90L7RgdGC0ZY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI3IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZCI+CisgICAgPHZhbHVlPtCR0LXRgdC60ZbQvdC10YfQvdC40Lk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTI4IiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZCI+CisgICAgPHZhbHVlPtCf0LXRgNGW0L7QtDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MjkiIG5hbWU9Imludml0YXRpb25fd2luZG93X3ZhbGlkIj4KKyAgICA8dmFsdWU+0JzQuNC90YPQu9C40Lk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMwIiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZEZyb21MYWJlbCI+CisgICAgPHZhbHVlPtCU0ZbQudGB0L3QuCDQtzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMxIiBuYW1lPSJpbnZpdGF0aW9uX3dpbmRvd192YWxpZFRvTGFiZWwiPgorICAgIDx2YWx1ZT7QlNGW0LnRgdC90LjQuSDQtNC+OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzIiIG5hbWU9Imludml0YXRpb25fd2luZG93X01haWxTdWJqZWN0Ij4KKyAgICA8dmFsdWU+0JfQsNC/0YDQvtGI0LXQvdC90Y8g0L3QsCAkQVBQX05BTUU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTMzIiBuYW1lPSJpbnZpdGF0aW9uX2Vycm9yIj4KKyAgICA8dmFsdWU+0J3QtdC80LAg0LfQsNC/0YDQvtGI0LXQvdC90Y8g0LTQu9GPINGG0YzQvtCz0L4g0LrQvtC00YM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM0IiBuYW1lPSJpbnZpdGF0aW9uX2Vycm9yIj4KKyAgICA8dmFsdWU+0JfQsNC/0YDQvtGI0LXQvdC90Y8g0LLQttC1INCy0LjQutC+0YDQuNGB0YLQsNC90LUuINCU0LDQvdC40Lkg0YLQuNC/INC30LDQv9GA0L7RiNC10L3QvdGPINC90LUg0LzQvtC20LUg0LHRg9GC0Lgg0LLQuNC60L7RgNC40YHRgtCw0L3QuNC5INCx0LDQs9Cw0YLQvtGA0LDQt9C+0LLQvjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzUiIG5hbWU9Imludml0YXRpb25fZXJyb3IiPgorICAgIDx2YWx1ZT7QmtC+0LQg0LfQsNC/0YDQvtGI0LXQvdC90Y8g0L3QtSDQtNGW0LnRgdC90LjQuS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTM2IiBuYW1lPSJpbnZpdGF0aW9uX3Bhc3MiPgorICAgIDx2YWx1ZT7Qn9Cw0YDQvtC70Yw6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjUzNyIgbmFtZT0iaW52aXRhdGlvbl9wYXNzX2J0biI+CisgICAgPHZhbHVlPtCf0LXRgNC10LLRltGA0LjRgtC4INC/0LDRgNC+0LvRjDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzgiIG5hbWU9Imludml0YXRpb25fcGFzc19lcnJvciI+CisgICAgPHZhbHVlPtCd0LXQstGW0YDQvdC40Lkg0L/QsNGA0L7Qu9GMITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1MzkiIG5hbWU9IkJyb3dzZXIiPgorICAgIDx2YWx1ZT7QkdGA0LDQstC30LXRgDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDAiIG5hbWU9ImF1ZGlvX3ZpZGVvIj4KKyAgICA8dmFsdWU+0KHQuNC90YXRgNC+0L3RltC30YPQstCw0YLQuCDQsNGD0LTRltC+L9Cy0ZbQtNC10L48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQxIiBuYW1lPSJlcnJvckNvZGVfaW52YWxpZFNlc3Npb24iPgorICAgIDx2YWx1ZT7QktGF0ZbQtCDQstC40LrQvtC90LDQvdC+LCDQsNC70LUg0JLQsNGI0LAg0YHQtdGB0ZbRjywg0Y/QutGDINCy0Lgg0L/RgNC+0LHRg9Cy0LDQu9C4INC90LUg0LDQutGC0LjQstC90LAg0YfQuCDQt9Cx0LXRgNC10LbQtdC90LAg0L3QsCDRgdC10YDQstC10YDRli4g0JLQuCDQv9C+0LLQuNC90L3RliDQvtGC0YDQuNC80LDRgtC4INC90L7QstC40LkgU2Vzc2lvbklkINGWINC/0L7QstGC0L7RgNC40YLQuCDQstGF0ZbQtC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQyIiBuYW1lPSJlcnJvcmNvZGVfc2V0VXNlck9iamVjdCI+CisgICAgPHZhbHVlPlNlc3Npb25JZCDQvdC1INGUIGxvZ2dlZGluINGH0Lgg0L3QtSDQvNCw0ZQg0LDQtNC80ZbQvdGW0YHRgtGA0LDRgtC+0YDRgdGM0LrQuNGFINC/0YDQsNCyLiBTT0FQINGI0LvRjtC3INC/0L7RgtGA0LXQsdGD0ZQg0LDQtNC80ZbQvdGW0YHRgtCw0YDQuNCy0L3QuNGFINC/0YDQsNCyINC00LvRjyDQtNC+0LTQsNC90L3RjyDQvdC+0LLQuNGFINC60L7RgNC40YHRgtGD0LLQsNGH0ZbQsi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQzIiBuYW1lPSJlcnJvcmNvZGVfbG9naW5CeVJlbW90ZVVzZXIiPgorICAgIDx2YWx1ZT5UaGlzIFNlc3Npb24gaGFzIG5vIFJlbW90ZXVzZXItRGF0YSBjb25uZWN0ZWQuIFdldGhlciB5b3UgZGlkIG5vdCBjYWxsIHRoZSBTT0FQLUdhdGV3YXkgYmVmb3JlIGFjY2Vzc2luZyB0aGUgQXBwbGljYXRpb24gb3IgeW91IGFyZSB1c25pZyBhIHdyb25nIFNlc3Npb24tSUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ0IiBuYW1lPSJkZWJ1Z19tZXNzYWdlX3JlY29yZGluZyI+CisgICAgPHZhbHVlPtCd0LAg0LTQsNC90LjQuSDQvNC+0LzQtdC90YIg0YTRg9C90LrRhtGW0Y8g0LfQsNC/0LjRgdGDINGUINCyIEJldGEt0YLQtdGB0YLRg9Cy0LDQvdC90ZYhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU0NSIgbmFtZT0icHJvcGVydHlQYW5lbFhWYWx1ZSI+CisgICAgPHZhbHVlPng8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ2IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWFZhbHVlTGFiZWwiPgorICAgIDx2YWx1ZT54LWF4aXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTQ3IiBuYW1lPSJwcm9wZXJ0eVBhbmVsWVZhbHVlIj4KKyAgICA8dmFsdWU+eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDgiIG5hbWU9InByb3BlcnR5UGFuZWxZVmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPnktYXhpczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NDkiIG5hbWU9InByb3BlcnR5UGFuZWxXaWR0aFZhbHVlIj4KKyAgICA8dmFsdWU+dzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTAiIG5hbWU9InByb3BlcnR5UGFuZWxXaWR0aFZhbHVlTGFiZWwiPgorICAgIDx2YWx1ZT53aWR0aDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTEiIG5hbWU9InByb3BlcnR5UGFuZWxIZWlnaHRWYWx1ZSI+CisgICAgPHZhbHVlPmg8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTUyIiBuYW1lPSJwcm9wZXJ0eVBhbmVsSGVpZ2h0VmFsdWVMYWJlbCI+CisgICAgPHZhbHVlPmhlaWdodDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTMiIG5hbWU9InByb3BlcnR5T3BhY2l0eVNsaWRlciI+CisgICAgPHZhbHVlPkNoYW5nZSBUcmFuc3BhcmVuY3k8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU0IiBuYW1lPSJicm93c2VyT3BlbiI+CisgICAgPHZhbHVlPkJyb3dzZXIgT3BlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NTUiIG5hbWU9ImJyb3dzZXJDbG9zZSI+CisgICAgPHZhbHVlPkJyb3dzZXIgQ2xvc2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU2IiBuYW1lPSJjb25uZWN0aW9uTG9zdE1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgQ29ubmVjdGlvbiB0byB0aGUgU2VydmVyIGlzIGxvc3QuIFlvdSBuZWVkIHRvIHJlbG9hZCB0aGUgQXBwbGljYXRpb24gb3IvYW5kIGNoZWNrIHlvdXIgTmV0d29yay48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU3IiBuYW1lPSI1NTciPgorICAgIDx2YWx1ZT5Qb2ludGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU1OCIgbmFtZT0ic3luYyBtZXNzYWdlIGhlYWRlciI+CisgICAgPHZhbHVlPlN5bmNocm9uaXppbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTU5IiBuYW1lPSJTeW5jaHJvbml6aW5nIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TeW5jaHJvbml6aW5nIFVzZXJzLCBwbGVhc2Ugd2FpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjAiIG5hbWU9ImV4cG9ydFRvU1ZHIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7RG93bmxvYWQgYXMgU1ZHJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjEiIG5hbWU9ImV4cG9ydFRvSW1hZ2UiPgorICAgIDx2YWx1ZT4mbHQ7dSZndDtEb3dubG9hZCBhcyBQTkcmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2MiIgbmFtZT0iZXhwb3J0VG9JbWFnZSI+CisgICAgPHZhbHVlPiZsdDt1Jmd0O0Rvd25sb2FkIGFzIEpQRyZsdDsvdSZndDs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTYzIiBuYW1lPSJleHBvcnRUb0ltYWdlIj4KKyAgICA8dmFsdWU+Jmx0O3UmZ3Q7RG93bmxvYWQgYXMgUERGJmx0Oy91Jmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjQiIG5hbWU9ImV4cG9ydFRvSW1hZ2UiPgorICAgIDx2YWx1ZT4mbHQ7dSZndDtEb3dubG9hZCBhcyBUSUYmbHQ7L3UmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU2NSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPlJlbWluZGVyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjYiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5DYXRlZ29yeTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY3IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+UmVwZXRpdGlvbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTY4IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+bm9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NjkiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5Mb2NhdGlvbjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTcwIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+U3RhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTcxIiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+RW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3MiIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPlRpdGxlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzMiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5Db21tZW50OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1NzQiIG5hbWU9ImNhbGVuZGFyTGFiZWwiPgorICAgIDx2YWx1ZT5JbnZpdGUgUGVvcGxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NSIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPkRhaWx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3NiIgbmFtZT0iY2FsZW5kYXJMYWJlbCI+CisgICAgPHZhbHVlPk1vbnRobHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTc3IiBuYW1lPSJjYWxlbmRhckxhYmVsIj4KKyAgICA8dmFsdWU+WWVhcmx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3OCIgbmFtZT0iYWxlcnQiPgorICAgIDx2YWx1ZT5BcHBvaW50bWVudC1lbmQgaXMgYWZ0ZXIgb2YgYXBwb2ludG1lbnQtc3RhcnQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU3OSIgbmFtZT0iYWxlcnQiPgorICAgIDx2YWx1ZT5QbGVhc2UgaW5zZXJ0IGEgdGl0bGUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MCIgbmFtZT0iNTgwIj4KKyAgICA8dmFsdWU+UlRMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MSIgbmFtZT0iNTgxIj4KKyAgICA8dmFsdWU+QWN0aXZhdGUgdGhpcyBpZiB5b3Ugd3JpdGUgaW4gYSByaWdodCB0byBsZWZ0IGxhbmd1YWdlIChpbnZlcnNlIHdvcmQgb3JkZXIpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4MiIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT5EYXNoYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTgzIiBuYW1lPSJ0b29sdGlwIG1haW4tbWVudSI+CisgICAgPHZhbHVlPldhdGNoIHJlY29yZGVkIE1lZXRpbmdzIG9yIEV2ZW50czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODQiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+TWVldGluZyAtIE1ha2UgYSBjb25mZXJlbmNlIHdpdGggNCAodXAgdG8gMTYpIFVzZXJzJmx0O2JyLyZndDtldmVyeWJvZHkgd2lsbCBoYXZlIGF1ZGlvICsgdmlkZW8gYWNjZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4NSIgbmFtZT0idG9vbHRpcCBtYWluLW1lbnUiPgorICAgIDx2YWx1ZT5FdmVudCAtIE1ha2UgYSBjb25mZXJlbmNlIHdpdGggdXAgdG8gMjAwIHBhcnRpY2lwZW50cyZsdDtici8mZ3Q7T25seSB0aGUgTW9kZXJhdG9yIHdpbGwgaGF2ZSBhdWRpby92aWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1ODYiIG5hbWU9InRvb2x0aXAgbWFpbi1tZW51Ij4KKyAgICA8dmFsdWU+Q3JlYXRlIHVzZXJzLCByb29tcywgb3JnYW5pemF0aW9ucyZsdDtici8mZ3Q7ICsgY2hhbmdlIGNvbmZpZ3VyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg3IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5Vc2VycyBpbiB0aGlzIFJvb20gbm93PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU4OCIgbmFtZT0icm9vbSBBZG1pbmlzdHJhdGlvbiByb29tY2xpZW50cyBsaXN0Ij4KKyAgICA8dmFsdWU+SUQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTg5IiBuYW1lPSJyb29tIEFkbWluaXN0cmF0aW9uIHJvb21jbGllbnRzIGxpc3QiPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTAiIG5hbWU9InJvb20gQWRtaW5pc3RyYXRpb24gcm9vbWNsaWVudHMgbGlzdCI+CisgICAgPHZhbHVlPkQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkxIiBuYW1lPSJzd2Ygc3luYyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TG9hZGluZyBEb2N1bWVudC4gUGxlYXNlIHdhaXQgdW50aWxsIGFsbCBDbGllbnQgaGF2ZSBiZWVuIHN5bmNocm9uaXplZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTkyIiBuYW1lPSJ1cGxvYWQgZGlhbG9nIj4KKyAgICA8dmFsdWU+VXBsb2FkIGNvbXBsZXRlLCBjb252ZXJ0aW5nIERvY3VtZW50IC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTMiIG5hbWU9InVwbG9hZCBkaWFsb2ciPgorICAgIDx2YWx1ZT5TdGFydCBVcGxvYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk0IiBuYW1lPSJ1cGxvYWQgZGlhbG9nIj4KKyAgICA8dmFsdWU+VXBsb2FkIGFuZCBJbXBvcnQgRGlhbG9nLiBQbGVhc2Ugc2VsZWN0IGEgRmlsZSBmcm9tIHlvdXIgRGlzay48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNTk1IiBuYW1lPSJ1cGxvYWQgRGlhbG9nIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NiIgbmFtZT0idXBsb2FkIERpYWxvZyI+CisgICAgPHZhbHVlPlNlbGVjdCBGaWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5NyIgbmFtZT0iYWRtaW5pc3RyYXRpb24gbmF2aWdhdGlvbiI+CisgICAgPHZhbHVlPkNvbm5lY3Rpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjU5OCIgbmFtZT0iY29uZmFkbWluIHZhbHVlIGxpc3QiPgorICAgIDx2YWx1ZT5WYWx1ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI1OTkiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5TdHJlYW1pZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDAiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5Mb2dpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDEiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW5pc3RyYXRpb24gcGFuZWwiPgorICAgIDx2YWx1ZT5Db25uZWN0ZWQgc2luY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjAyIiBuYW1lPSJjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIHBhbmVsIj4KKyAgICA8dmFsdWU+Um9vbSAvIFNjb3BlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwMyIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbmlzdHJhdGlvbiBwYW5lbCI+CisgICAgPHZhbHVlPktpY2sgVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDQiIG5hbWU9ImtpY2sgdXNlciBjb25maXJtYXRpb24gZGlhbG9nIj4KKyAgICA8dmFsdWU+S2ljayBVc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwNSIgbmFtZT0ia2ljayB1c2VyIGNvbmZpcm1hdGlvbiBkaWFsb2ciPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8ga2ljayB0aGlzIENsaWVudCBmcm9tIHRoZSBDb25uZWN0aW9uPyZsdDtici8mZ3Q7IFRoaXMgZG9lcyBvbmx5IHJlbW92ZSB0aGUgQ2xpZW50IGZyb20gdGhlIGN1cnJlbnQgUm9vbS5UaGUgQ2xpZW50IGNvdWxkIHJlLWxvZ2luIGFnYWluLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDYiIG5hbWU9ImtpY2sgdXNlciBtZXNzYWdlIGRpYWxvZyI+CisgICAgPHZhbHVlPllvdXIgc2Vzc2lvbiBoYXMgYmVlbiBjbG9zZWQgYnkgYW4gQWRtaW5pc3RyYXRvciBvciBNb2RlcmF0b3IuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwNyIgbmFtZT0idXNlcmFsdGVyc2VsZl9waG9uZSI+CisgICAgPHZhbHVlPlBob25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYwOCIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+VXNlciBpcyB0aGUgTW9kZXJhdG9yIG9mIHRoaXMgUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MDkiIG5hbWU9InBhcnRpY2lwZW50cyBwYW5lbCI+CisgICAgPHZhbHVlPlVzZXIgaXMgYWxsb3dlZCB0byBkcmF3IG9uIHRoZSBXaGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMCIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+KFJlKSBTdGFydCBBdWRpby9WaWRlbyBvciBjaGFuZ2UgRGV2aWNlIFNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxMSIgbmFtZT0icGFydGljaXBlbnRzIHBhbmVsIj4KKyAgICA8dmFsdWU+QWxsb3cgdGhpcyBVc2VyIHRvIGRyYXcgb24gdGhlIFdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEyIiBuYW1lPSJwYXJ0aWNpcGVudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5SZW1vdmUgYWJpbGl0eSB0byBkcmF3IG9uIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjEzIiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+VXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE0IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+RmlsZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjE1IiBuYW1lPSJjb25mZXJlbmNlUGFuZWxzIj4KKyAgICA8dmFsdWU+V2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTYiIG5hbWU9ImNvbmZlcmVuY2VQYW5lbHMiPgorICAgIDx2YWx1ZT5DaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxNyIgbmFtZT0ib3JnYW5pemF0aW9uIGNob29zZSBpbmZvIj4KKyAgICA8dmFsdWU+WW91ciBhY2NvdW50IGlzIGFzc2lnbmVkIHRvIG11bHRpcGxlIE9yZ2FuaXphdGlvbnMuIFBsZWFzZSBjaG9vc2Ugb25lIGZvciB0aGlzIFNlc3Npb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYxOCIgbmFtZT0iZXJyb3IgbWVzc2FnZSByb29tIGZ1bGwiPgorICAgIDx2YWx1ZT5UaGlzIHJvb20gaXMgZnVsbCBhdCB0aGUgbW9tZW50LiBQbGVhc2UgdHJ5IGFnYWluIGxhdGVyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MTkiIG5hbWU9InJvb210eXBlcyI+CisgICAgPHZhbHVlPlJvb20gVHlwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjAiIG5hbWU9ImFwcG9pbnRlZF9yb29tIj4KKyAgICA8dmFsdWU+QXBwb2ludG1lbnQgUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjEiIG5hbWU9InNlcnZlcnRpbWUiPgorICAgIDx2YWx1ZT5TZXJ2ZXIgVGltZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjIiIG5hbWU9Imludl9yZW1pbmRlcl90ZW1wbGF0ZV9oZWFkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FIC0gUmVtaW5kZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjIzIiBuYW1lPSJpbnZfcmVtaW5kZXJfdGV4dF9mcm9tIj4KKyAgICA8dmFsdWU+TWVzc2FnZSBmcm9tIFVzZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNCIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfbWVzc2FnZSI+CisgICAgPHZhbHVlPk1lc3NhZ2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNSIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfY2xpY2tfdGV4dCI+CisgICAgPHZhbHVlPkNsaWNrIHRoaXMgbGluayB0byBwYXJ0aWNpcGF0ZSBpbiB0aGUgTWVldGluZ3M6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNiIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfY2xpY2tfdGV4dF9saW5rIj4KKyAgICA8dmFsdWU+Q2xpY2sgaGVyZSB0byBlbnRlciByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYyNyIgbmFtZT0iaW52X3JlbWluZGVyX3RleHRfY2xpY2tfdGV4dF9oZWxwIj4KKyAgICA8dmFsdWU+aWYgeW91IGhhdmUgcHJvYmxlbXMgd2l0aCB0aGUgbGluaywgcGxlYXNlIGNvcHkgYW5kIHBhc3RlIHRoaXMgdG8geW91ciBicm93c2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjgiIG5hbWU9ImJ0bl9zZWFyY2hfaW50ZXJuIj4KKyAgICA8dmFsdWU+c2VhcmNoIGludGVybjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MjkiIG5hbWU9ImJ0bl9zZWFyY2hfZXh0ZXJuIj4KKyAgICA8dmFsdWU+ZXh0ZXJuIHVzZXJzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzMCIgbmFtZT0ibGJsX3ByZW5hbWUiPgorICAgIDx2YWx1ZT5wcmUgbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzEiIG5hbWU9ImxibF9uYW1lIj4KKyAgICA8dmFsdWU+bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzIiIG5hbWU9ImxibF9lbWFpbCI+CisgICAgPHZhbHVlPkUtbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzMiIG5hbWU9ImxvZ291dENvbmZpcm1fdGl0bGUiPgorICAgIDx2YWx1ZT5Db25maXJtIGxvZ291dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzQiIG5hbWU9ImxvZ291dENvbmZpcm1fc3VyZV90b19sb2dvdXRfcXVlc3Rpb24iPgorICAgIDx2YWx1ZT5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gbG9nb3V0IG5vdz88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM1IiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT5BY3Rpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjYzNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkRlbW8gUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EZW1vIFRpbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjM4IiBuYW1lPSJtZWV0aW5nIFRpbWVyIj4KKyAgICA8dmFsdWU+TWVldGluZyBUaW1lcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2MzkiIG5hbWU9Im1lZXRpbmcgVGltZXIiPgorICAgIDx2YWx1ZT5UaGlzIFJvb20gaXMgYSBEZW1vIFJvb20uIFRvIGRpc2FibGUgdGhpcyB3YXJuaW5nIHlvdSBlaXRoZXIgc2hvdWxkIGdldCBhIHByaXZhdGUgbWVldGluZyByb29tIGZvciB5b3VyIHBlcnNvbmFsIHVzYWdlIG9yIHNldCB1cCBhbiBvd24gU2VydmVyLiBZb3Ugd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGxvZ2dlZCBvZmYgaW46PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MCIgbmFtZT0ibWVldGluZyByb29tIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+TW9kZXJhdGVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MSIgbmFtZT0ibW9kZXJhdGVkIHJvb20gd2FpdGluZyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+UGxlYXNlIHdhaXQgdW50aWxsIHRoZSBNb2RlcmF0b3IgaGFzIGVudGVyZWQgdGhlIFJvb20uIFRoZSBNb2RlcmF0b3IgY2FuIGJlIGVpdGhlciBhIFRlYWNoZXIsIEFkbWluIG9yIHRoZSBjcmVhdG9yIG9mIHRoaXMgUm9vbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQyIiBuYW1lPSJlcnJvciBwb3B1cCI+CisgICAgPHZhbHVlPk9rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0MyIgbmFtZT0id2luZG93IHNjcmVlbnNoYXJpbmciPgorICAgIDx2YWx1ZT5JbmNvbWluZyBTY3JlZW4gU2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDQiIG5hbWU9IndpbmRvdyBzY3JlZW4gc2hhcmluZyI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGEgbmV3IFNjcmVlbiBTaGFyaW5nIGluY29taW5nIGZyb20gdGhlIFVzZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0NSIgbmFtZT0id2luZG93IHNjcmVlbiBzaGFyaW5nIj4KKyAgICA8dmFsdWU+U3RhcnQgU2hhcmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NDYiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QWRkIG5ldyBNZWV0aW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY0NyIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5NZWV0aW5nIFJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ4IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPkV2ZW50IFJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjQ5IiBuYW1lPSJtYWluIG1lbnUgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPk1vZGVyYXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUwIiBuYW1lPSJtZW51IG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5Nb2RlcmF0ZSBVc2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTEiIG5hbWU9Im1lbnUgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPk1vZGVyYXRlIFJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY1MiIgbmFtZT0ibW9kZXJhdG9yIG9yZyI+CisgICAgPHZhbHVlPk08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjUzIiBuYW1lPSJjb25maXJtIG1vZGVyYXRpb24iPgorICAgIDx2YWx1ZT5EbyB5b3Ugd2FudCB0byBjaGFuZ2UgdGhpcyBVc2VyIHRvIGJlY29tZSBhIE1vZGVyYXRvciBvZiB0aGF0IE9yZ2FuaXphdGlvbj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU0IiBuYW1lPSJlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+UGxlYXNlIGNob29zZSBhbiBPcmdhbml6YXRpb24gYmVmb3JlIHlvdSB0cnkgdG8gYWRkIGEgVXNlciB0byBpdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU1IiBuYW1lPSJjaG9vc2UgdXNlciB3aW5kb3ciPgorICAgIDx2YWx1ZT5Pcmdhbml6YXRpb24gLSBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjU2IiBuYW1lPSJtb2RlcmF0b3Igb3JnIHVzZXJzIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIFVzZXIgZnJvbSB0aGUgT3JnYW5pemF0aW9uPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTciIG5hbWU9Im9yZyBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+VGhpcyBVc2VyIGlzIE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTgiIG5hbWU9Im9yZyBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+VGhpcyBVc2VyIGlzIE5vLU1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NTkiIG5hbWU9ImVycm9yIG1lc3NhZ2UgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkRvIHlvdSB3YW50IHRoaXMgVXNlciB0byBiZSBub3QgYSBNb2RlcmF0b3Igb2YgdGhpcyBPcmdhbml6YXRpb24/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MCIgbmFtZT0ibW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkFkZCBvciBkZWxldGUgVXNlcnMgb3IgUm9vbXMgd2l0aGluIHlvdXIgT3JnYW5pemF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2MSIgbmFtZT0iZGVsZXRlIGNvbmZpcm0gcXVlc3Rpb24iPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcmVjb3JkPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjIiIG5hbWU9ImRlbGV0ZSBjb25maXJtIHF1ZXN0aW9uIHVzZXIgbW9kZXJhdGlvbiI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhpcyB1c2VyIGZyb20geW91ciBvcmdhbml6YXRpb24/IFlvdSB3aWxsIG9ubHkgZGVsZXRlIHRoZSBjb25uZWN0aW9uIGJldHdlZW4gdGhlIHVzZXIgYW5kIHlvdXIgb3JnYW5pemF0aW9uLCB0byByZWFsbHkgZGVsZXRlIHRoZSB1c2VyIGl0c2VsZiB5b3UgaGF2ZSB0byBsb2dpbiBpbnRvIHRoZSBBZG1pbmlzdHJhdGlvbi1QYW5lbC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjYzIiBuYW1lPSJlcnJvciBtZXNzYWdlIHNlbGYgZGVsZXRpbmciPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IGRlbGV0ZSB5b3VyIG93biBVc2VyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NjQiIG5hbWU9ImVycm9yIG1lc3NhZ2UgYXV0aCI+CisgICAgPHZhbHVlPlRoaXMgTWV0aG9kIG5lZWRzIGEgQWRtaW5zdHJhdGlvbiBBY2NvdW50IHRvIGJlIGludm9rZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NSIgbmFtZT0iZXJyb3IgbWVzc2FnZSBTT0FQIj4KKyAgICA8dmFsdWU+VGhlcmUgd2FzIG5vIFNlc3Npb24gYXNzb2NpYXRlZCB3aXRoIHRoaXMgSUQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NiIgbmFtZT0iZXJyb3IgbWVzc2FnZSBtb2RlcmF0aW9uIj4KKyAgICA8dmFsdWU+VGhpcyBpcyBhbiBBZG1pbmlzdHJhdG9yIG9yIE1vZGVyYXRvciBhY2NvdW50LiBZb3UgY2FuIG9ubHkgZWRpdCB0aGlzIGFjY291bnQgdGhyb3VnaCB0aGUgQWRtaW5pc3RyYXRpb24gUGFuZWwuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2NyIgbmFtZT0iZW1haWwgdmVyaWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+VG8gY29tcGxldGUgeW91ciByZWdpc3RyYXRpb24gcGxlYXNlIGNsaWNrIG9uIHRoZSBmb2xsb3dpbmcgbGluay4gT3IgY29weSB0aGUgVVJMIHRvIHlvdXIgYnJvd3NlciBiYXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2OCIgbmFtZT0iZW1haWwgdmVyaWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+Q2xpY2sgdG8gdmVyaWZ5IHlvdXIgRS1NYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY2OSIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPk5vIHVzZXIgd2FzIGZvdW5kIGZvciB0aGlzIEhhc2guPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3MCIgbmFtZT0iZXJyb3JNZXNzYWdlX1VzZXJBY3RpdmF0aW9uU2VydmxldCBbQWN0aXZhdGVVc2VyXSI+CisgICAgPHZhbHVlPlRoaXMgdXNlciBpcyBhbHJlYWR5IGFjdGl2YXRlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjcxIiBuYW1lPSJlcnJvck1lc3NhZ2VfVXNlckFjdGl2YXRpb25TZXJ2bGV0IFtBY3RpdmF0ZVVzZXJdIj4KKyAgICA8dmFsdWU+WW91IGRpZCBzdWNjZXNzZnVsbHkgYWN0aXZhdGUgeW91ciBhY2NvdW50ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzIiIG5hbWU9ImVycm9yTWVzc2FnZV9Vc2VyQWN0aXZhdGlvblNlcnZsZXQgW0FjdGl2YXRlVXNlcl0iPgorICAgIDx2YWx1ZT5Mb2dpbiBOb3c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjczIiBuYW1lPSJsb2dpbkVycm9yTWVzc2FnZSA9IHVzZXIgd2FzIG5vdCBhY3RpdmF0ZWQiPgorICAgIDx2YWx1ZT5Zb3VyIGFjY291bnQgaXMgbm90IGFjdGl2YXRlZC4gRmlyc3QgdXNlIHRoZSBsaW5rIGluIHRoZSBFbWFpbCB5b3UndmUgcmVjZWl2ZWQgZHVyaW5nIHJlZ2lzdHJhdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc0IiBuYW1lPSJyZWdpc3RlciB2ZXJpZmljYXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPllvdSBzdWNjZXNzZnVsbHkgc2lnbmVkIHVwLiBXZSd2ZSBzZW5kIGFuIEVNYWlsIHdpdGggYSB2ZXJpZmljYXRpb24gQ29kZSB0byB5b3VyIE1haWwuIFBsZWFzZSBjaGVjayB5b3VyIEluYm94LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2NzUiIG5hbWU9InBhcnRpY2lwYW50cyBwYW5lbCI+CisgICAgPHZhbHVlPlJlbW92ZSBNb2RlcmF0aW9uIFJvbGUgZnJvbSB0aGlzIFVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc2IiBuYW1lPSJwYXJ0aWNpcGFudHMgcGFuZWwiPgorICAgIDx2YWx1ZT5HcmFudCBNb2RlcmF0aW9uIFJpZ2h0cyB0byB0aGlzIFVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc3IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Vc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY3OCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QWNjZXNzIHRvIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjc5IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Nb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgwIiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Nb2RlcmF0aW9uOiBQbGVhc2UgY2hvb3NlIGFueSBVc2VyIG9uIHRoZSBMaXN0IHRvIGdyYW50IGhpbSBhY2Nlc3MgdG8gdGhlIFdoaXRlYm9hcmQsIE1vZGVyYXRpb24gb3IgVmlkZW8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+VGhpcyBVc2VyIGlzIGFscmVhZHkgTW9kZXJhdG9yLCBzbyBoZSBoYXMgYXV0b21hdGljYWxseSB0aGUgcmlnaHQgdG8gZHJhdy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjgyIiBuYW1lPSJldmVudCB1c2VyIGxpc3QgZXJyb3IiPgorICAgIDx2YWx1ZT5UaGlzIGlzIHlvdSEgWW91IGNhbm5vdCByZW1vdmUgdGhlIE1vZGVyYXRpb24gcmlnaHRzIGZyb20geW91cnNlbGYuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4MyIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QWxsb3cgdGhpcyBVc2VyIHRvIFB1Ymxpc2ggaGlzIEF1ZGlvIC8gVmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg0IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5SZW1vdmUgQXVkaW8vVmlkZW8gb2YgdGhpcyBVc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4NSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+SSB3b3VsZCBsaWtlIHRvIGdldCB0aGUgbW9kZXJhdGlvbiBvZiB0aGlzIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjg2IiBuYW1lPSJldmVudCB1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5JIHdvdWxkIGxpa2UgdG8gZHJhdyBvbiB3aGl0ZWJvYXJkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4NyIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+SSB3b3VsZCBsaWtlIHRvIHNoYXJlIG15IEF1ZGlvL1ZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4OCIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+WW91IGFyZSBtb2RlcmF0b3Igb2YgdGhpcyByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY4OSIgbmFtZT0iZXZlbnQgdXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+WW91IGFyZSBhbGxvd2VkIHRvIGRyYXcgb24gd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTAiIG5hbWU9ImV2ZW50IHVzZXIgbGlzdCI+CisgICAgPHZhbHVlPllvdSBhcmUgYWxsb3dlZCB0byBzaGFyZSB5b3VyIEF1ZGlvL1ZpZGVvPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5MSIgbmFtZT0iZXJyb3J0eXBlIj4KKyAgICA8dmFsdWU+TWVzc2FnZSB0byBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjkyIiBuYW1lPSJhcHBseSBmb3IgbW9kIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTMiIG5hbWU9ImFwcGx5IGZvciBtb2QgbWVzc2FnZSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gZ2V0IHRoZSBNb2RlcmF0aW9uLiBVc2UgdGhlIHN0YXR1cyBJY29ucyBuZXh0IHRvIHRoZSB1c2VyIGluIHRoZSBMaXN0IG9mIFVzZXJzIHRvIGFkZCBvciByZW1vdmUgdGhlIE1vZGVyYXRpb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5NCIgbmFtZT0iYXBwbHkgZm9yIHdoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGRyYXcgb24gd2hpdGVib2FyZC4gVXNlIHRoZSBzdGF0dXMgSWNvbnMgbmV4dCB0byB0aGUgdXNlciBpbiB0aGUgTGlzdCBvZiBVc2VycyB0byBhZGQgb3IgcmVtb3ZlIHRoZSByaWdodCB0byBkcmF3IGFueXRoaW5nIG9uIHRoZSB3aGl0ZWJvYXJkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTUiIG5hbWU9IjY5NSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gc2hhcmUgaGlzIEF1ZGlvL1ZpZGVvLiBVc2UgdGhlIHN0YXR1cyBJY29ucyBuZXh0IHRvIHRoZSB1c2VyIGluIHRoZSBMaXN0IG9mIFVzZXJzIHRvIGFkZCBvciByZW1vdmUgdGhlIHJpZ2h0IHRvIHNoYXJlIEF1ZGlvL1ZpZGVvIGZvciBhbnkgVXNlci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNjk2IiBuYW1lPSJtb2RlcmF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Zb3UgaGF2ZSB0byB3YWl0IHVudGlsbCBhIE1vZGVyYXRvciBlbnRlcnMgdGhlIHJvb20uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5NyIgbmFtZT0iY2FsZW5kYXIgYnV0dG9uIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjY5OCIgbmFtZT0iY2FsZW5kYXIgYnV0dG9uIj4KKyAgICA8dmFsdWU+U2F2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI2OTkiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPkRheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDAiIG5hbWU9ImNhbGVuZGFyIGNvbXBvbmVudCI+CisgICAgPHZhbHVlPk1vbnRoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwMSIgbmFtZT0iY2FsZW5kYXIgY29tcG9uZW50Ij4KKyAgICA8dmFsdWU+WWVhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDIiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5VcGxvYWQgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDMiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5BZGQgRm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcwNCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlJlZnJlc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA1IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+VHJhc2ggKERyYWcgYW5kIERyb3AgaXRlbSBoZXJlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDYiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5NeSBGaWxlcyAoSG9tZSBEcml2ZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzA3IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+Um9vbSBGaWxlcyAoUHVibGljIERyaXZlKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDgiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5BZGQgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MDkiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5BZGQgRm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPkRlbGV0ZSBGb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzExIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+RWRpdCBOYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxMiIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPk5ldyBGb2xkZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzEzIiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIEl0ZW0/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcxNCIgbmFtZT0idXNlciBhZG1pbiI+CisgICAgPHZhbHVlPlNlYXJjaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTUiIG5hbWU9InVzZXIgYWRtaW4iPgorICAgIDx2YWx1ZT5TZWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzE2IiBuYW1lPSJmaWxlIGV4cGxvcmVyIj4KKyAgICA8dmFsdWU+T3BlbiBEb2N1bWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTciIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5TaG93IGFsbCBGaWxlcyAoVHJlZSBWaWV3KTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTgiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5DbG9zZSBEb2N1bWVudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MTkiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5EZWxldGUgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjAiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIG5vdCBhbGxvd2VkIHRvIGRyYXcgYW55dGhpbmcgb24gdGhlIFdoaXRlYm9hcmQuIFlvdSBoYXZlIHRvIGJlY29tZSBNb2RlcmF0b3Igb3IgYXQgbGVhc3QgZ2V0IHRoZSBSaWdodCB0byBlZGl0IFdoaXRlYm9hcmQuIFlvdSBtYXkgYXNrIGEgTW9kZXJhdG9yIHRvIGdpdmUgeW91IHRoYXQgcmlnaHQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyMSIgbmFtZT0icHJvcGVydHkgcGFuZWwiPgorICAgIDx2YWx1ZT5Eb2N1bWVudCBQcm9wZXJ0aWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyMiIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+U3RhcnQgQ2xpZW50IChleHRlcm5hbCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzIzIiBuYW1lPSJzaGFyaW5nIHNlc3Npb24iPgorICAgIDx2YWx1ZT5TdGFydCBDbGllbnQgKEhUVFApPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNCIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+QSB1c2VyIHdhbnQgdG8gc2hhcmUgaGlzIHNjcmVlbi4gRG8geW91IHdhbnQgdG8gc2VlIGl0PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjUiIG5hbWU9InNoYXJpbmcgc2Vzc2lvbiI+CisgICAgPHZhbHVlPllvdSBhcmUgY3VycmVudGx5IHNoYXJpbmcgeW91ciBEZXNrdG9wLiBGb3Igc3RvcHBpbmcgdGhlIFNoYXJpbmcgU2Vzc2lvbiBwbGVhc2UgaGl0IHRoZSBTdG9wIGJ1dHRvbiBpbiB0aGUgU2hhcmluZyBDbGllbnQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNiIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+U2hhcmluZyBTZXNzaW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjcyNyIgbmFtZT0ic2hhcmluZyBzZXNzaW9uIj4KKyAgICA8dmFsdWU+WW91IGFyZSBhbHJlYWR5IHNoYXJpbmcgeW91ciBkZXNrdG9wITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MjgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+RGVza3RvcCBWaWV3ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzI5IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkV4aXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzMwIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPkRlc2t0b3AgU2hhcmVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMSIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5DbGljayBTdGFydCB0byBwdWJsaXNoIHlvdXIgc2NyZWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdGFydCBTaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczMyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdG9wIFNoYXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzM0IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlNlbGVjdCB5b3VyIHNjcmVlbiBhcmVhOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzUiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+Q2hhbmdlIHdpZHRoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5UaGUgU2hhcmVyIGhhcyBmaW5pc2hlZCB0aGlzIHNlc3Npb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczNyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5DaGFuZ2UgaGVpZ2h0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjczOCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5YLU9mZnNldDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3MzkiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+WS1PZmZzZXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQwIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPldpZHRoOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDEiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+SGVpZ2h0OjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDIiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+Q29ubmVjdGlvbiB3YXMgY2xvc2VkIGJ5IFNlcnZlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDMiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NCIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5TdGFydCBFeHRlcm5hbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDUiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+SWYgeW91IGNsb3NlIHRoaXMgc2Vzc2lvbiBjb21wbGV0ZWx5IHlvdSBhcmUgbm90IGFibGUgdG8gcmVzdGFydCB0aGUgdmlld2VyIGZvciB0aGlzIHNlc3Npb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc0NiIgbmFtZT0ic2hhcmluZyB2aWV3ZXIiPgorICAgIDx2YWx1ZT5Db25maXJtIENsb3NpbmcgVmlld2VyIFNlc3Npb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ3IiBuYW1lPSJzaGFyaW5nIHZpZXdlciI+CisgICAgPHZhbHVlPlNoYXJlIFNjcmVlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NDgiIG5hbWU9InNoYXJpbmcgdmlld2VyIj4KKyAgICA8dmFsdWU+UmVjb3JkIFNlc3Npb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzQ5IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+Q28tQnJvd3Npbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzUwIiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+T29vcHMsIC4uLiBGaXJlZm94IG9uIFdpbmRvd3MgZG9lcyBub3Qgc2hvdyBjbGVhciBDby1Ccm93c2luZy4gUGxlYXNlIHVzZSBhbm90aGVyIEJyb3dzZXIgZm9yIHVzaW5nIHRoZSBDby1Ccm93c2luZyBmZWF0dXJlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTEiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5QcmV2aW91czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTIiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5OZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1MyIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPlJlbG9hZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTQiIG5hbWU9ImNvLWJyb3dzZXIiPgorICAgIDx2YWx1ZT5Ib21lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1NSIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPkxvYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzU2IiBuYW1lPSJjby1icm93c2VyIj4KKyAgICA8dmFsdWU+QWRkIHRoaXMgd2Vic2l0ZSBhcyBEZWZhdWx0IHdlYnNpdGUgdG8geW91ciBQcm9maWxlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTciIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5UZXN0IFNldHVwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc1OCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPkNoZWNrIHlvdSBNaWNyb3Bob25lIGFuZCBDYW1lcmEgc2V0dXAgYmVmb3JlIHlvdSBlbnRlciBhIHJvb20gYnkgcmVjb3JkaW5nIHNvbWUgc2Vjb25kcy4gWW91IGNhbiB0aGVuIHJlcGxheSB5b3VyIHJlY29yZGluZyB0byBjaGVjayB5b3VyIHZvaWNlIGFuZCBwaWN0dXJlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NTkiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5Eb24ndCBzaG93IHRoaXMgdGVzdCBhbnltb3JlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjEiIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5TdGFydCBDb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2MiIgbmFtZT0iZWRpdCB2aWRlbyBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkRvIG5vdCBhc2sgYWdhaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzYzIiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+UkVDPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc2NCIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPlBMQVk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY1IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+WW91IG1heSBwcm9jZWVkIHdpdGhvdXQgdGVzdGluZyBpZiB5b3UgZG8gbm90IHBsYW4gdG8gcHVibGlzaCB5b3VyIHZvaWNlIG9yIHBpY3R1cmUuIFBhcnRpY2lwYW50cyB3aXRob3V0IEF1ZGlvIG9yIFZpZGVvIGNhbiBzdGlsbCB1c2UgdGhlIFdoaXRlYm9hcmQsIHNoYXJlIHRoZWlyIERlc2t0b3Agb3Igd3JpdGUgQ2hhdCBtZXNzYWdlcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzY2IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+U1RPUDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjciIG5hbWU9InRlc3Qgc2V0dXAiPgorICAgIDx2YWx1ZT5MZXZlbC1NZXRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjgiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5QcmVzcyBTdGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NjkiIG5hbWU9InN0YXJ0IHZpZXciPgorICAgIDx2YWx1ZT5TdGFydCBDb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MCIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPlN0YXJ0IEV2ZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MSIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPkNob29zZSBSb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MiIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPkNoZWNrIFNldHVwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3MyIgbmFtZT0ic3RhcnQgdmlldyI+CisgICAgPHZhbHVlPlN0YXJ0IENvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc0IiBuYW1lPSJzdGFydCB2aWV3Ij4KKyAgICA8dmFsdWU+SG93IHRvIGNvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc1IiBuYW1lPSJ0ZXN0IHNldHVwIj4KKyAgICA8dmFsdWU+U3RhcnQgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NiIgbmFtZT0idGVzdCBzZXR1cCI+CisgICAgPHZhbHVlPkRvIG5vdCBzaG93IEF1ZGlvIC8gVmlkZW8gVGVzdCAoUmVjb3JkaW5nKSBiZWZvcmUgZW50ZXJpbmcgYSBDb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc3NyIgbmFtZT0ib3ZlcnZpZXcgcm9vbSI+CisgICAgPHZhbHVlPlB1YmxpYyBSb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3NzgiIG5hbWU9Im92ZXJ2aWV3IHJvb20iPgorICAgIDx2YWx1ZT5QdWJsaWMgUm9vbXMgYXJlIGFjY2Vzc2libGUgZm9yIGFsbCBVc2Vycy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzc5IiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+UHJpdmF0ZSBSb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3ODAiIG5hbWU9IlByaXZhdGUgUm9vbXMiPgorICAgIDx2YWx1ZT5Qcml2YXRlIFJvb21zIGFyZSBvbmx5IGFjY2Vzc2libGUgZm9yIHVzZXJzIG9mIHRoZSBzYW1lIG9yZ2FuaXphdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgxIiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+TXkgUm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgyIiBuYW1lPSJvdmVydmlldyByb29tIj4KKyAgICA8dmFsdWU+Um9vbXMgaW4gdGhpcyBzZWN0aW9uIGFyZSBjcmVhdGVkIGZvciBwZXJzb25hbCB1c2FnZS4gVGhlcmUgYXJlIHNvbWUgc3RhbmRhcmQgcm9vbXMgcGx1cyB0aGUgb25lcyB0aGF0IGFyZSBjcmVhdGVkIHRocm91Z2ggdGhlIGNhbGVuZGFyIGFuZCBoYXZlIGEgc3RhcnQgYW5kIGFuIGVuZCBkYXRlLiBUaGUgcm9vbXMgY3JlYXRlZCB2aWEgdGhlIGNhbGVuZGFyIGFyZSBvbmx5IGxpc3RlZCBpbiB0aGlzIHNlY3Rpb24gYXMgbG9uZyBhcyB0aGV5IGFyZSB2YWxpZC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzgzIiBuYW1lPSJyZXN0cmljdGVkIHJvb20iPgorICAgIDx2YWx1ZT5Zb3UgaGF2ZSB0byBiZSBtb2RlcmF0b3IgdG8gZG8gdGhpcy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg0IiBuYW1lPSJtZW51IG9wdGlvbiI+CisgICAgPHZhbHVlPkFwcGx5IGZvciBtb2RlcmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4NSIgbmFtZT0ibWVudSBvcHRpb24iPgorICAgIDx2YWx1ZT5BcHBseSBmb3Igd2hpdGVib2FyZCBhY2Nlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg2IiBuYW1lPSJtZW51IG9wdGlvbiI+CisgICAgPHZhbHVlPkFwcGx5IGZvciBjYW1lcmEvbWljcm9waG9uZSBhY2Nlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzg3IiBuYW1lPSJlcnJvciBtZXNzYWdlIHNvYXAgc2VjdXJlIGxvZ2luIj4KKyAgICA8dmFsdWU+VGhpcyBTZXNzaW9uIEhhc2ggd2FzIGFscmVhZHkgdXNlZC4gWW91IGNhbm5vdCB1c2UgaXQgdHdpY2UuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4OCIgbmFtZT0iZGFzaGJvYXJkIGJ1dHRvbiI+CisgICAgPHZhbHVlPlNUQVJUPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc4OSIgbmFtZT0iZXhpdCBjb25mZXJlbmNlIj4KKyAgICA8dmFsdWU+RVhJVDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTAiIG5hbWU9ImNvbmZlcmVuY2UgdmlldyI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBleGl0PyBZb3UgbWlnaHQgc2hvdWxkIGNsZWFyIHVwbG9hZGVkIGRvY3VtZW50cywgd2hpdGVib2FyZCBhbmQgdGhlIGNoYXQgaGlzdG9yeS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkxIiBuYW1lPSJjb25mZXJlbmNlIHZpZXciPgorICAgIDx2YWx1ZT5FeGl0IGNvbmZlcmVuY2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iNzkyIiBuYW1lPSJtYWluIG1lbnUiPgorICAgIDx2YWx1ZT5Sb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTMiIG5hbWU9Im1haW4gbWVudSI+CisgICAgPHZhbHVlPkNob29zZSBhIHJvb20gZm9yIGEgbWVldGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTQiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgYW4gdW5zYXZlZCBFdmVudCBpbiB0aGUgQ2FsZW5kYXIuIFBsZWFzZSBlaXRoZXIgc2F2ZSBpdCBvciByZW1vdmUgaXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5NSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5QbGVhc2UgYWRkIGF0IGxlYXN0IG9uZSBhdHRlbmRlZSBmb3IgeW91ciBtZWV0aW5nITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTYiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEV2ZW50PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTciIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+V2FybmluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI3OTgiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QWRkIEV2ZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijc5OSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5EYXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAwIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPldlZWs8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODAxIiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPk1vbnRoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwMiIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5EZXNjcmlwdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDMiIG5hbWU9ImNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QXR0ZW5kZWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+JEFQUF9OQU1FLCB5b3VyIFdlYiBDb25mZXJlbmNpbmcgUGxhdGZvcm0uIEVpdGhlciBmb2xsb3cgdGhlIEluc3RydWN0aW9ucywgcHJlc3MgdGhlIHN0YXJ0IGJ1dHRvbiB0byBzdGFydCB0byBjb25mZXJlbmNlIGltbWVkaWF0ZWxseSBvciB5b3UgZ290byB0aGUgQ2FsZW5kYXIgYW5kIHNldCB1cCBhIENvbmZlcmVuY2UgZm9yIHRoZSBmdXR1cmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNSIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+UGxhbiBhIE1lZXRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA2IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VG8gc2V0IHVwIGEgY29uZmVyZW5jZSB5b3UgY2FuIGFkZCBhIG5ldyBFdmVudCBpbiB0aGUgQ2FsZW5kYXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgwNyIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPk5lZWQgaGVscD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODA4IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+UmVzdHJpY3RlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MDkiIG5hbWU9Imx6Y2FsZW5kZXIiPgorICAgIDx2YWx1ZT5TZWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODEwIiBuYW1lPSJsemNhbGVuZGVyIj4KKyAgICA8dmFsdWU+QWRkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMSIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIFVzZXIgc2VsZWN0ZWQuIFBsZWFzZSBzZWxlY3QgYW4gaXRlbSBmcm9tIHRoZSBsaXN0IGZpcnN0IGFuZCB0aGVuIGhpdCBhZGQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxMiIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPkFkZCBBdHRlbmRlZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTMiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5TYXZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxNCIgbmFtZT0ibHpjYWxlbmRhciI+CisgICAgPHZhbHVlPkRlbGV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTUiIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5FdmVudCBEZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgxNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkRlZmF1bHQgTW9kZXJhdG9yczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5TdXBlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTgiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MTkiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyMCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkUtTWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjEiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5BZGQgbmV3IGRlZmF1bHQgTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyMiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPklzIFN1cGVyIE1vZGVyYXRvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjMiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5JZiB0aGUgUm9vbSBpcyBtb2RlcmF0ZWQsIFVzZXIgd2l0aCBMZXZlbCBNb2RlcmF0b3Igb3IgQWRtaW5pc3RyYXRvciBhcmUgYXV0b21hdGljYWxseSBNb2RlcmF0b3IgaWYgdGhleSBlbnRlciB0aGUgUm9vbS4gSWYgeW91IGRvbid0IHdhbnQgdG8gc3BlY2lmeSB0aGF0IGFuZCBvbmx5IHdhbnQgYSBjZXJ0YWluIFVzZXIgdG8gYmVjb21lIE1vZGVyYXRvciB1c2UgdGhlIERlZmF1bHQgTW9kZXJhdG9yIG9wdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI0IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+QSBTdXBlciBNb2RlcmF0b3IgaXMgYWx3YXlzIGEgTW9kZXJhdG9yIHdoZW4gaGUgZW50ZXJzIGEgUm9vbSwgYW5kIG5vYm9keSBjYW4gcmVtb3ZlIHRoZSBNb2RlcmF0aW9uIEZsYWcgZnJvbSBoaW08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODI1IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+QXBwbHkgU3VwZXItTW9kZXJhdGlvbiB0byBVc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyNiIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPlJlbW92ZSBTdXBlciBNb2RlcmF0aW9uIGZyb20gVXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgyOCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPklmIHlvdSBhZGQgYW4gT3JnYW5pemF0aW9uIHRvIHRoZSByb29tIG9ubHkgdXNlcnMgb2YgdGhhdCBPcmdhbml6YXRpb24gaGF2ZSBhY2Nlc3MgdG8gaXQgKFRoaXMgaXMgb25seSB2YWxpZCBpZiB0aGUgaXNQdWJsaWMgZmxhZyBpcyBzZXQgdG8gZmFsc2UhKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MjkiIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5Nb2RlcmF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzMCIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkxpbWl0YXRpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzMSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPk9yZ2FuaXphdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzIiIG5hbWU9ImNvbmZpcm0gYWN0aW9uIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzMiIG5hbWU9ImNvbmZpcm0gZGVsZXRlIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEl0ZW0/IFlvdSBoYXZlIHRvIHByZXNzIHRoZSBzYXZlIGJ1dHRvbiB0byBzdG9yZSB0aGUgY2hhbmdlcyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM0IiBuYW1lPSJ1c2VyIGNob29zZSBlcnJvciI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIFVzZXIgc2VsZWN0ZWQuIFBsZWFzZSBzZWxlY3QgZmlyc3QgYmVmb3JlIHlvdSBhZGQgaXQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjgzNSIgbmFtZT0icm9vbSBhZG1pbiI+CisgICAgPHZhbHVlPkFkZCBuZXcgRGVmYXVsdCBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODM2IiBuYW1lPSJyb29tIGFkbWluIj4KKyAgICA8dmFsdWU+RG8geW91IHdhbnQgdG8gYWRkIHRoZSBTdXBlciBNb2RlcmF0aW9uIEZsYWcgZm9yIHRoaXMgVXNlcj8gQSBTdXBlciBNb2RlcmF0b3IgaXMgbm90IG9ubHkgTW9kZXJhdG9yIG9mIGEgUm9vbSwgYnV0IGFsc28gbm8gb3RoZXIgTW9kZXJhdG9yIGNhbiByZW1vdmUgdGhlIE1vZGVyYXRpb24gRmxhZyBmb3IgdGhpcyBVc2VyLiBZb3UgbmVlZCB0byBzYXZlIHRoZSBSb29tIE9iamVjdCB0byBzYXZlIHRoZXNlIHNldHRpbmdzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzciIG5hbWU9InJvb20gYWRtaW4iPgorICAgIDx2YWx1ZT5EbyB5b3Ugd2FudCB0byByZW1vdmUgdGhlIFN1cGVyIE1vZGVyYXRpb24gRmxhZyBmb3IgdGhpcyBVc2VyPyBZb3UgbmVlZCB0byBzYXZlIHRoZSBSb29tIE9iamVjdCB0byBzYXZlIHRoZXNlIHNldHRpbmdzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzgiIG5hbWU9InN1cGVyIG1vZGVyYXRvciI+CisgICAgPHZhbHVlPlRoaXMgVXNlciBpcyBhIFN1cGVyLU1vZGVyYXRvci4gWW91IGNhbm5vdCByZW1vdmUgdGhlIE1vZGVyYXRpb24gZmxhZyBmcm9tIGEgU3VwZXItTW9kZXJhdG9yITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4MzkiIG5hbWU9ImNvbmZpcm0gZGVsZXRlIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGlzIEZpbGUvRm9sZGVyPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDAiIG5hbWU9ImNvbmZpcm0gZGVsZXRlIj4KKyAgICA8dmFsdWU+RGVsZXRlIEZpbGUvRm9sZGVyPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDEiIG5hbWU9InNhbHV0YXRpb24iPgorICAgIDx2YWx1ZT5NcnMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0MiIgbmFtZT0ic2FsdXRhdGlvbiI+CisgICAgPHZhbHVlPkRyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDMiIG5hbWU9InByb3BlcnR5IHBhbmVsIHdoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5Qcm9wZXJ0aWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NCIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPlNob3cgbW91c2UgcG9zaXRpb24gdG8gdmlld2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDUiIG5hbWU9InB1Ymxpc2ggb3B0aW9uIj4KKyAgICA8dmFsdWU+U2hhcmUgQXVkaW8gd2l0aCBTSVAgQXBwbGV0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg0NiIgbmFtZT0icHVibGlzaCBvcHRpb24iPgorICAgIDx2YWx1ZT5TaGFyZSBBdWRpbyB3aXRoIFNJUCBhbmQgVmlkZW8gd2l0aCBGbGFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDciIG5hbWU9ImRvY3VtZW50IHBhbmVsIj4KKyAgICA8dmFsdWU+RnVsbC1GaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODQ4IiBuYW1lPSJzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5WaWV3IFNjcmVlbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NDkiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlRoZSB1c2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MCIgbmFtZT0ic2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+d2FudHMgdG8gc2hhcmUgaXRzIHNjcmVlbi4gRG8geW91IHdhbnQgdG8gc2VlIGl0PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTEiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNsb3NlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg1MiIgbmFtZT0ic2NyZWVuIHNoYXJlciI+CisgICAgPHZhbHVlPlpvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODUzIiBuYW1lPSJzY3JlZW4gc2hhcmVyIj4KKyAgICA8dmFsdWU+VGhlIFNlc3Npb24gd2FzIGNsb3NlZCBieSB0aGUgc2hhcmluZyBVc2VyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTQiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5QYXVzZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTUiIG5hbWU9InNjcmVlbiBzaGFyZXIiPgorICAgIDx2YWx1ZT5OZXcgU2NyZWVuIFNoYXJpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU2IiBuYW1lPSJwcmVzZW50ZXIgbWluaSBpY29uIj4KKyAgICA8dmFsdWU+TWluaW1pemU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU3IiBuYW1lPSJwcmVzZW50ZXIgbWluaSBpY29uIj4KKyAgICA8dmFsdWU+TWF4aW1pemU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODU4IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5WaWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NTkiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlJlY29yZGluZyBUaW1lbGluZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjAiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk15IFJlY29yZGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYxIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5QdWJsaWMgUmVjb3JkaW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjIiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkluZm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODYzIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TGVuZ3RoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RGF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjYiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg2NyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+UExBWTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjgiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPk1haW4gLSBWaWRlbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NjkiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzAiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPllvdSBtYXkgcmVjb3JkIGFuZCBzaGFyZSB5b3VyIHNjcmVlbiBhdCB0aGUgc2FtZSB0aW1lLiBUbyBlbmFibGUgb3RoZXJzIHRvIHNlZSB5b3VyIHNjcmVlbiBqdXN0IGhpdCB0aGUgc3RhcnQgYnV0dG9uIG9uIHRoZSB0b3AuIFRvIG9ubHkgcmVjb3JkIHRoZSBTZXNzaW9uIGl0IGlzIHN1ZmZpY2llbnQgdG8gY2xpY2sgc3RhcnQgcmVjb3JkaW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzEiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlN0YXJ0IFJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzIiIG5hbWU9InNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPlN0b3AgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3MyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+RG93bmxvYWQgdGhlIEZMVi1GaWxlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3NCIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+Um9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzUiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlBsYXk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODc2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TdG9wPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3NyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+VXNlciBoYXMgbWljcm9waG9uZSBvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4NzgiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+U3RvcCBTaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg3OSIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5BbGxvdyBVc2VyIFF1ZXN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODAiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+VHVybiB0aGlzIG9mZiB0byBwcmV2ZW50IHRoYXQgYW55IHVzZXIgaXMgZGlzdHVyYmluZyB5b3UgaW4gdGhpcyByb29tLiBFZmZlY3QgaXMgdGhhdCB0aGUgQnV0dG9uIHRvIGFzayBmb3IgTW9kZXJhdGlvbiAoIkkgaGF2ZSBhIHF1ZXN0aW9uIikgaXMgbm90IHZpc2libGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4MSIgbmFtZT0icm9vbSBjb25maWciPgorICAgIDx2YWx1ZT5SaWdodHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgyIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5Eb3dubG9hZCBhcyBBVkk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODgzIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5GTFY8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg0IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5BVkk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg1IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5SYXcgU2NyZWVudmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODg2IiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5BdWRpbyBvbmx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg4NyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+VGhlIGhhdmUgYmVlbiBlcnJvcnMgd2hpbGUgcHJvY2Vzc2luZyB0aGUgUmVjb3JkaW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODgiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlRoZSBSZWNvcmRpbmcgaXMgbm90IHlldCByZWFkeSBmb3Igd2F0Y2hpbmcuIFBsZWFzZSByZXRyeSBpbiBhIGNvdXBsZSBvZiBtaW51dGVzIGFnYWluLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI4ODkiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPkxvZzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkwIiBuYW1lPSJmbHZyZWNvcmRpbmciPgorICAgIDx2YWx1ZT5SZWNvcmRlciBNZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5MSIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+T2s8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkyIiBuYW1lPSJzaXAgYXBwbGV0Ij4KKyAgICA8dmFsdWU+U0lQIEFwcGxldCBpcyBub3QgUmVhZHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODkzIiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+U0lQLUFjY291bnQgU2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk0IiBuYW1lPSJ1c2VyIGFkbWluaXN0cmF0aW9uIj4KKyAgICA8dmFsdWU+U0lQIHNldHRpbmdzIGZvciBlYWNoIHVzZXIuIFlvdSBjYW4gdHVybiBvbiBvciBvZmYgU0lQIHZpYSB0aGUgQWRtaW5pc3RyYXRpb24gJmd0OyBDb25maWd1cmF0aW9uIChLZXk6IGVuYWJsZV9zaXApLiBUaGUgU0lQIGRhdGEgZm9yIGVhY2ggdXNlciBzaG91bGQgYmUgY3JlYXRlZCBhdXRvbWF0aWNhbGx5LiBZb3UgY2FuIHJlLWNyZWF0ZSB0aGUgZGF0YSBieSBjaGVja2luZyAiUmUtZ2VuZXJhdGUgU0lQIERhdGEiPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NSIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNJUC1Vc2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NiIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNpcC1QYXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5NyIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlNpcC1BdXRoLUlkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijg5OCIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIExvZ2luIHRvIHRoZSBTSVAgR2F0ZXdheSBoYXMgZmFpbGVkLiBZb3Ugc2hvdWxkIGNoZWNrIHRoZSBhdXRoZW50aWZpY2F0aW9uIGRhdGEgb2YgeW91ciBTSVAtUHJvdmlkZXIgYW5kIHRoZSBTSVAtQWNjb3VudCBEYXRhIGZvciBlYWNoIFVzZXIuIEFzIEFkbWluaXN0cmF0b3IgeW91IGFyZSBzdGlsbCBhYmxlIHRvIGxvZ2luIGFuZCBjaGVjayB0aGUgQ29uZmlndXJhdGlvbi4gQXMgVXNlciBvciBNb2RlcmF0b3IgeW91IHdpbGwgYmUgYmxvY2tlZCBmcm9tIGFueSBpbnRlcmFjdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iODk5IiBuYW1lPSJzaXAgc3RhdHVzIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgTG9naW4gdG8gdGhlIFNJUCBHYXRld2F5IGhhcyBmYWlsZWQuIENvbnRhY3QgeW91ciBTZXJ2aWNlIFRlYW0hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwMCIgbmFtZT0ic2lwIHN0YXR1cyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TG9nZ2luZyBpbiB0byBTSVAtR2F0ZXdheSAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTAxIiBuYW1lPSJzaXAgc3RhdHVzIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Mb2dnaW5nIGluIHRvIFNJUC1HYXRld2F5IC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDIiIG5hbWU9ImZsdnJlY29yZGluZyI+CisgICAgPHZhbHVlPlNob3cgTG9nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwMyIgbmFtZT0iZmx2cmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+TG9nIG1lc3NhZ2VzIGZyb20gcG9zdCByZWNvcmRlciBwcm9jZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwNCIgbmFtZT0ic2lwIGxvZ2luIj4KKyAgICA8dmFsdWU+U0lQLUFwcGxldCBNZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwNSIgbmFtZT0ic2lwIGxvZ2luIj4KKyAgICA8dmFsdWU+VGhlIFNJUC1BcHBsZXQgaXMgbm90IHJlYWR5LiBBY2NlcHQgdGhlIEFwcGxldCBwbGVhc2UgYW5kIGNsaWNrIG9rITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDYiIG5hbWU9Im1vZGVyYXRvciBwb3AgdXAiPgorICAgIDx2YWx1ZT5HZXQgTW9kZXJhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MDciIG5hbWU9Imx6Y2FsZW5kYXIiPgorICAgIDx2YWx1ZT5TYXZlIEFwcG9pbnRtZW50IENoYW5nZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTA4IiBuYW1lPSJsemNhbGVuZGFyIj4KKyAgICA8dmFsdWU+VGhlIGFwcG9pbnRlbWVudCBoYXMgYmVlbiBjaGFuZ2VkLiBEbyB5b3Ugd2FudCB0byBzYXZlIHRob3NlIGNoYW5nZXM/ICZsdDtici8mZ3Q7Jmx0O2JyLyZndDtBbGwgYXR0ZW5kZWVzIG9mIHRoZSBhcHBvaW50bWVudCB3aWxsIHJlY2VpdmUgYSBFTWFpbCB3aXRoIHRoZSB1cGRhdGVkIGRhdGUgYW5kIHRpbWUgKGRlcGVuZGluZyBvbiB0aGUgbm90aWZpY2F0aW9uIHR5cGUgb2YgdGhpcyBhcHBvaW50bWVudCkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkwOSIgbmFtZT0iZmx2IHJlY29yZGVyIGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UbyBhY2Nlc3Mgb3RoZXIgcmVjb3JkaW5ncyB5b3UgaGF2ZSB0byBsb2dpbiB0aGUgJEFQUF9OQU1FIEFwcGxpY2F0aW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTAiIG5hbWU9ImludGVydmlldyB2aWRlbyBwb2QiPgorICAgIDx2YWx1ZT5DaG9vc2UgdGhlIFVzZXIgZm9yIHRoaXMgVmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTExIiBuYW1lPSJpbnRlcnZpZXcgdmlkZW8gY2hvb3NlIHVzZXIiPgorICAgIDx2YWx1ZT5BdmFpbGFibGUgVXNlcnMgZm9yIHRoaXMgUG9kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMiIgbmFtZT0iaW50ZXJ2aWV3IGluZm8iPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGEgTW9kZXJhdG9yIGluIHRoaXMgSW50ZXJ2aWV3LiBZb3UgY2FuIGRlY2lkZSB3aG8gaXMgc3BlYWtpbmcgaW4gdGhpcyBpbnRlcnZpZXcgYW5kIHlvdSBjYW4gc3RhcnQgLyBzdG9wIHRoZSByZWNvcmRpbmcgb2YgdGhlIFNlc3Npb24uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxMyIgbmFtZT0iaW50ZXJ2aWV3IGJ1dHRvbiByZWNvcmRpbmciPgorICAgIDx2YWx1ZT5TdGFydCBSZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTE0IiBuYW1lPSJpbnRlcnZpZXcgYnV0dG9uIHJlY29yZGluZyI+CisgICAgPHZhbHVlPlN0b3AgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxNSIgbmFtZT0iaW50ZXJ2aWV3IGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgcmVjb3JkaW5nIG9mIHRoZSBJbnRlcnZpZXcgaXMgYWxyZWFkeSBzdGFydGVkLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTYiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIHJlY29yZGluZyBpcyBhbHJlYWR5IHN0b3BwZWQgb3Igbm90IGJlZW4gc3RhcnRlZCB5ZXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxNyIgbmFtZT0iaW50ZXJ2aWV3IHJlY29yZGluZyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlIHJlY29yZGluZyBmb3IgdGhpcyBpbnRlcnZpZXcgaXMgYWxyZWFkeSBzdGFydGVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MTgiIG5hbWU9ImludGVydmlldyBlcnJvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2FuY2VsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkxOSIgbmFtZT0iaW50ZXJ2aWV3IGVycm9yIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGUgcG9zdC1wcm9jZXNzaW5nIG9mIGFuIGludGVydmlldyB0YWtlcyA1IG1pbnV0ZXMgcGVyIDEgbWludXRlIGludGVydmlldy4gVGhlIGN1cnJlbnQgcHJvZ3Jlc3Mgb2YgdGhlIGludGVydmlldyBwb3N0LXByb2Nlc3NpbmcgdHJhbnNjb2RpbmcgaXM6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyMCIgbmFtZT0ic2lwIGNyZWF0aW9uIj4KKyAgICA8dmFsdWU+WW91IGhhdmUgdG8gZW50ZXIgeW91ciBwYXNzd29yZCBhZ2FpbiB0byBhdXRvIGNyZWF0ZSB0aGUgU0lQIERhdGE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTIxIiBuYW1lPSJzaXAgY3JlYXRpb24iPgorICAgIDx2YWx1ZT5SZS1nZW5lcmF0ZSBTSVAgRGF0YTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjIiIG5hbWU9ImZpbGVleHBsb3JlciI+CisgICAgPHZhbHVlPllvdSBjYW5ub3QgbW92ZSB0aGlzIGZpbGUgb3IgZm9sZGVyIGludG8gaXRzIG93biBzdWIgZm9sZGVyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjMiIG5hbWU9ImZpbGUgZXhwbG9yZXIgIj4KKyAgICA8dmFsdWU+SG9tZSBkcml2ZSBzaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNCIgbmFtZT0iZmlsZSBleHBsb3JlciI+CisgICAgPHZhbHVlPlB1YmxpYyBkcml2ZSBzaXplPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyNSIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPkxpY2Vuc2UgU2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTI2IiBuYW1lPSJ1c2VyLWFkbWluIj4KKyAgICA8dmFsdWU+WW91IGNhbiBlaXRoZXIgYmluZCB0aGUgdXNlciB0byBhIGV4cGlyZSBEYXRlIG9yIHRvIGEgbWF4aW11bSBudW1iZXIgb2YgbWludXRlcyB3aGVuIHlvdSBlbmFibGUgbGljZW5zaW5nLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MjciIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5DaGVjayBsaWNlbnNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyOCIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPkZsYXRyYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkyOSIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPkV4cGlyZSBkYXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMCIgbmFtZT0idXNlci1hZG1pbiI+CisgICAgPHZhbHVlPlNlY29uZHMgbGVmdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzEiIG5hbWU9InVzZXItYWRtaW4iPgorICAgIDx2YWx1ZT5Ub3RhbCB0aW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzMiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+WW91ciBMaWNlbnNlIGhhcyBleHBpcmVkLiBZb3UgbmVlZCB0byBidXkgbmV3IG1pbnV0ZXMgKFBheS1wZXItbWludXRlKSBvciBhIHZvbHVtZSBmbGF0cmF0ZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTMzIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5DbGljayBhbmQgYnV5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzNCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+VGltZSBMZWZ0IG9uIHlvdXIgYWNjb3VudDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM1IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Vc2VyIExpY2Vuc2UgSW5mbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzYiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkluZm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTM3IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5DbG9zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5MzgiIG5hbWU9ImxpY2Vuc2UtaW5mbyI+CisgICAgPHZhbHVlPllvdXIgbGljZW5zZSBoYXMgZXhwaXJlZC4gWW91IG5lZWQgZWl0aGVyIHRvIGJ1eSBhIG1pbnV0ZSBwYWNrYWdlIChQYXktcGVyLW1pbnV0ZSkgb3IgYSB2b2x1bWUgZmxhdHJhdGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjkzOSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+TGljZW5zZSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDAiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdSBjYW4gZWl0aGVyIGJ1eSBtaW51dGVzIHRvIG1ha2UgV2ViLUNvbmZlcmVuY2luZyAoUGF5LXBlci1taW51dGUpLiZsdDtici8mZ3Q7Jmx0O2JyLyZndDsgT3IgeW91IGJ1eSBhIHZvbHVtZSBmbGF0cmF0ZSBhYm91dCAzLTEyIG1vbnRocy4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7U2VuZGluZyBpbnZpdGF0aW9ucyAoZGlyZWN0IGxpbmtzIGludG8gQ29uZmVyZW5jZSBSb29tcykgb3IgY3JlYXRpbmcgY29uZmVyZW5jZSBSb29tcyB2aWEgdGhlIENhbGVuZGFyIHdpdGggZXh0ZXJuYWwgVXNlcnMgaXMgb25seSBhbGxvd2VkIHdpdGggYSB2b2x1bWUgZmxhdHJhdGUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDYwIE1pbnV0ZXMgOSw5OSBFVVJPICgxNiBDZW50IHBlciBNaW51dGUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MiIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDUgaG91cnMgMTksOTkgRVVSTyAoNiBDZW50IHBlciBtaW51dGUpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0MyIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDMgbW9udGggZm9yIDI5LDk5IEVVUk8gKDksOTkgRXVybyBwZXIgTW9udGgpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NCIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+QnV5IDYgbW9udGggZm9yIDM5LDk5IEVVUk8gKDYsNjYgRXVybyBwZXIgbW9udGgpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk0NSIgbmFtZT0idXNlci1saWNlbnNlIj4KKyAgICA8dmFsdWU+UGF5LXBlci1taW51dGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ2IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Wb2x1bWUgZmxhdHJhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ3IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3UgaGF2ZSB1bmxpbWl0ZWQgTGljZW5zZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NDgiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPllvdXIgbGljZW5zZSB3aWxsIGV4cGlyZSBhdDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTQ5IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3UgYm91Z2h0IFBheS1wZXItbWludXRlLiBZb3Ugc3RpbGwgaGF2ZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUwIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5CdXkgbmV3IGNyZWRpdCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUxIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5XYW50IHlvdXIgb3duIFNlcnZlcj88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUyIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5Zb3Ugd291bGQgbGlrZSB0byBoYXZlICRBUFBfTkFNRSBpbnN0YWxsZWQgb24geW91ciBTZXJ2ZXIgb3IgaW50ZWdyYXRlZCBpbnRvIHlvdXIgTW9vZGxlLCBTdWdhckNSTSwgV2Vic2l0ZSBvciBJbnRyYW5ldD8gUHJpemluZ3Mgc3RhcnQgYXQgNTAwIEV1cm8gcGVyIEluc3RhbGxhdGlvbiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTUzIiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5PciBzZW5kIHVzIGEgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTQiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPkFuc3dlciB0bzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU1IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5NZXNzYWdlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTYiIG5hbWU9InVzZXItbGljZW5zZSI+CisgICAgPHZhbHVlPlNlbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTU3IiBuYW1lPSJ1c2VyLWxpY2Vuc2UiPgorICAgIDx2YWx1ZT5DbGljayBoZXJlIHRvIGdldCBjb250YWN0IEluZm8gYW5kIFByaXppbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk1OCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q3JlZGl0IENhcmQgRGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NTkiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkZpcnN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjAiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkxhc3RuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk2MSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q3JlZGl0IENhcmQgVHlwZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjIiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlZJU0EgQ2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjMiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPk1hc3RlckNhcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY0IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5EaXNjb3ZlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NjUiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkFtZXJpY2FuIEV4cHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY2IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DcmVkaXQgQ2FyZCBOdW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY3IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5FeHBpcmF0aW9uIERhdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY4IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5DYXJkIFZlcmlmaWNhdGlvbiBOdW1iZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTY5IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5CaWxsaW5nIEFkZHJlc3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTcwIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5BZGRyZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MSIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk3MiIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q2l0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzMiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkNvdW50cnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc0IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdGF0ZSAoT25seSBVUyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc1IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5aSVA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc2IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5BbW91bnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc3IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdWJtaXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTc4IiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdGVwIDE6ICRBUFBfTkFNRSAtIFBheW1lbnQgRm9ybTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5NzkiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPkVNYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk4MCIgbmFtZT0icGF5bWVudC1mb3JtIj4KKyAgICA8dmFsdWU+Q2xpY2sgIkNoZWNrIG91dCB3aXRoIFBheXBhbCIgdG8gcGF5LiZsdDtici8mZ3Q7IFBheXBhbCBhY2NlcHRzIFZJU0EsIE1hc3RlckNhcmQsIERpc2NvdmVyIG9yIEFtZXJpY2FuIEV4cHJlc3MuICZsdDtici8mZ3Q7SXQgZG9lcyBub3QgcmVxdWlyZSB0byBzaWduIHVwIHdpdGggUGF5cGFsLiAmbHQ7YnIvJmd0O0NpdGl6ZW5zIGZyb20gR2VybWFueSBjYW4gYWxzbyBwYXkgd2l0aCBkaXJlY3QgZGViaXQgKFBlciBMYXN0c2NocmlmdC1FaW56dWcpLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODEiIG5hbWU9InBheW1lbnQtZm9ybSI+CisgICAgPHZhbHVlPlRoYW5rIHlvdSBmb3IgYnV5aW5nICRBUFBfTkFNRS4gJmx0O2JyLyZndDsgJmx0O2JyLyZndDsgQXMgc29vbiBhcyB3ZSByZWNlaXZlZCB0aGUgcGF5bWVudCB5b3VyIGFjY291bnQgd2lsbCBiZSB1cGRhdGVkLiZsdDtici8mZ3Q7IFlvdSB3aWxsIHJlY2VpdmUgYW4gRU1haWwgd2l0aCB5b3VyIGludm9pY2UgYXMgUERGLiZsdDtici8mZ3Q7WW91IGNhbiBhbHNvIGNoZWNrIGN1cnJlbnQgYW5kIHBhc3QgdHJhbnNhY3Rpb25zIGluIHlvdXIgcHJvZmlsZSBzZXR0aW5ncy4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7Jmx0O2JyLyZndDtZb3UgY2FuIGNsb3NlIHRoaXMgYnJvd3NlciB3aW5kb3cvdGFiIG5vdyBhbmQgcmV0dXJuIHRvICRBUFBfTkFNRS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgyIiBuYW1lPSJwYXltZW50LWZvcm0iPgorICAgIDx2YWx1ZT5TdWJtaXQgYW5kIEJ1eSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTgzIiBuYW1lPSJwYXltZW50LWZyb20iPgorICAgIDx2YWx1ZT5DbGljayBhbmQgQnV5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODQiIG5hbWU9InBheW1lbnQtZnJvbSI+CisgICAgPHZhbHVlPlN0ZXAgMzogJEFQUF9OQU1FIFBheW1lbnQgLSBDaGVjayBvcmRlciBhbmQgYnV5ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODUiIG5hbWU9InBheW1lbnQtZnJvbSI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg2IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5QYXltZW50IHJlY2VpdmVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODciIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPkhpLDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5ODgiIG5hbWU9InBheW1lbnQtbWFpbCI+CisgICAgPHZhbHVlPldlIGhhdmUgcmVjZWl2ZWQgeW91ciBwYXltZW50LiBZb3VyIHVzZXIgcHJvZmlsZSBpcyB1cGRhdGVkIG5vdy4gU2VlIGF0dGFjaGVkIHlvdXIgSW52b2ljZS4gVGhlIEludm9pY2UgYW5kIGFsbCBwYXN0IEludm9pY2UgY2FuIGFsc28gYmUgZG93bmxvYWRlZCBpbiB5b3VyIHVzZXIgcHJvZmlsZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTg5IiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5UaGFuayB5b3UgZm9yIHVzaW5nICRBUFBfTkFNRSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTkwIiBuYW1lPSJwYXltZW50LW1haWwiPgorICAgIDx2YWx1ZT5QYXltZW50IFJlY2VpdmVkICRBUFBfTkFNRSAtPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MSIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPlBheW1lbnQgYW5kIFRyYW5zYWN0aW9uIFN0YXR1czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTIiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5UcmFuc2NhdGlvbiBIYXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5MyIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPk1pbnV0ZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk0IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+TW9udGhzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9Ijk5NSIgbmFtZT0idXNlci1zZXR0aW5ncyI+CisgICAgPHZhbHVlPkVVUjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTYiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TdGF0dXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk3IiBuYW1lPSJ1c2VyLXNldHRpbmdzIj4KKyAgICA8dmFsdWU+SW52b2ljZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSI5OTgiIG5hbWU9InVzZXItc2V0dGluZ3MiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iOTk5IiBuYW1lPSJlcnJvci1saWNlbnNlLWZsYXQiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCB0byBidXkgYSB2b2x1bWUgZmxhdHJhdGUgdG8gYmUgYWJsZSB0byBzZW5kIGludml0YXRpb25zIG9yIGNyZWF0ZSBtZWV0aW5ncyB2aWEgdGhlIGNhbGVuZGFyLiBXaXRoIFBheS1wZXItbWludXRlIGl0IGlzIG9ubHkgcG9zc2libGUgZm9yIHlvdSB0byBhY2Nlc3MgJEFQUF9OQU1FLiBZb3UgY2Fubm90IGFsbG93IDN0aCBQYXJ0aWVzIHRvIGFjY2VzcyBhIE1lZXRpbmcuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDAiIG5hbWU9ImVycm9yIHVzZXIiPgorICAgIDx2YWx1ZT5UaGlzIEVtYWlsIGlzIGFscmVhZHkgdXNlZCBieSBhbm90aGVyIFVzZXIuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDEiIG5hbWU9InJvb20tYWRtaW4iPgorICAgIDx2YWx1ZT5TSVAtU2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwMiIgbmFtZT0icm9vbS1hZG1pbiI+CisgICAgPHZhbHVlPlRoZSBDb25mZXJlbmNlIE51bWJlciBhbmQgUElOIGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB2aWEgdGhlIE9wZW5YRyBSUEMtR2F0ZXdheTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDAzIiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+U0lQIE51bWJlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA0IiBuYW1lPSJyb29tLWFkbWluIj4KKyAgICA8dmFsdWU+UElOPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDUiIG5hbWU9IndoaXRlYm9hcmQiPgorICAgIDx2YWx1ZT5DbGVhciBvYmplY3RzIG9uIGN1cnJlbnQgc2xpZGUgb25seSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAwNiIgbmFtZT0iY28tYnJvd3NlciI+CisgICAgPHZhbHVlPk9ubHkgdGhlIFVSTCBlbnRlcmVkIGluIHRoZSBTdGF0dXMgYmFyIGlzIHNlbmQgdG8gcGFydGljaXBhbnRzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TWFrZSBUZWFtLVJvb21zIFtCcmVha291dCBzZXNzaW9uXTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDA4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2hvb3NlIHVzZXJzIGZvciBhIG5ldyBUZWFtLVJvb20hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMDkiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIGNob29zZSB1c2VycyBoZXJlIGFuZCBjcmVhdGUgYSBuZXcgQ29uZmVyZW5jZSBSb29tICgiVGVhbSBSb29tIikgZm9yIHRoZW0uIFRoZSBjaG9zZW4gdXNlcnMgd2lsbCBhdXRvbWF0aWNhbGx5IHN3aXRjaCB0byB0aGUgbmV3IFRlYW0tUm9vbSBvciBnZXQgYSBub3RpZmljYXRpb24uIFRlYW0tUm9vbSBNb2RlcmF0b3JzIHdpbGwgZ2V0IGFkZGl0aW9uYWxseSBhIGxpc3Qgb2YgY3VycmVudCByb29tcyBzbyB0aGF0IHRoZXkgY2FuIHN3aXRjaCB0byBlYWNoIHJvb20gaWYgdGhlcmUgYXJlIGlzIG5lZWQgZm9yIGEgTW9kZXJhdG9yLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDEwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VXNlcm5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkxvZ2luPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMTIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxMyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJzIGZvciB0aGUgbmV3IFRlYW0tUm9vbTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNyZWF0ZSBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxNSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNhbmNlbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2hvb3NlIGF0IGxlYXN0IG9uZSB1c2VyIGZvciB0aGUgVGVhbS1Sb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+QWRkIHVzZXIgdG8gdGVhbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDE4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+UmVtb3ZlIHVzZXIgZnJvbSBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAxOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXIgaXMgVGVhbS1Sb29tIE1vZGVyYXRvciAoSGUgaXMgYWJsZSB0byBtYW5hZ2UgVGVhbS1Sb29tcyBhbmQgdXNlcnMgb2YgdGhlIFRlYW0tUm9vbSBjYW4gYXNrIGhpbSB0byBjb21lIGluc2lkZSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlJvb210eXBlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5JZiB5b3UgY2hlY2sgIkZvcmNlIHVzZXIgdG8gc3dpdGNoIHRvIG5ldyBUZWFtLVJvb20iIGFsbCBjaG9zZW4gdXNlcnMgd2lsbCBhdXRvbWF0aWNhbGx5IHN3aXRjaCB0byB0aGUgbmV3bHkgY3JlYXRlZCBUZWFtLVJvb20uIE90aGVyd2lzZSB0aGV5IGdldCBhIG5vdGlmaWNhdGlvbiB3aXRoIGEgYnV0dG9uIHRoYXQgdGhleSAmbHQ7aSZndDtjYW4mbHQ7L2kmZ3Q7IHN3aXRjaCB0byB0aGUgbmV3IHJvb20uIFRlYW0tTW9kZXJhdG9ycyBhbHdheXMgaGF2ZSB0aGUgZnJlZSBjaG9pY2UgdG8gbWFuYWdlIHRoZSBUZWFtLVJvb21zIGFuZCBzd2l0Y2ggYmV0d2VlbiB0aGVtLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDIyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TWFuYWdlIFRlYW0tUm9vbXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyMyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPllvdSBjYW4gc3dpdGNoIGhlcmUgYmV0d2VlbiBhbGwgVGVhbS1Sb29tcyB0aGF0IHlvdSBhcmUgYXNzaWduZWQgYXMgVGVhbS1Sb29tIE1vZGVyYXRvci4gVXNlcnMgaW5zaWRlIHRoZSBUZWFtLVJvb20gY2FuIHNlbmQgeW91IGEgbWVzc2FnZSwgZm9yIGV4YW1wbGUgdG8gYXNrIHlvdSB0byBjb21lIHRvIHRoZWlyIHJvb20gYW5kIGhlbHAgdGhlbS4gWW91IGNhbiBhbHNvIHRlcm1pbmF0ZSB0aGUgVGVhbS1Sb29tIGFuZCBhbGwgVXNlcnMgd2lsbCBiZSBsb2dnZWQgb3V0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI0IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Rm9yY2UgdXNlciB0byBzd2l0Y2ggdG8gbmV3IFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI2IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q3JlYXRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDI3IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMjgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAyOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlVzZXJzIGF2YWlsYWJsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+QWRkIGEgdXNlciB3aXRoIHRoZSBwbHVzIGZyb20gdGhlIGxlZnQgb3IgcmVtb3ZlIGl0IHdpdGggdGhlIGNyb3NzIGZyb20gdGhlIHJpZ2h0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMxIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+MSkgVGVhbS1Sb29tIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4yKSBBZGQgdXNlcnMgdG8gdGhlIFRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDMzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VGVhbS1Sb29tIE5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW0tUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDM1IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+Q2hhbmdlIHRvIHRoZSBSb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwMzYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Td2l0Y2ggdG8gdGhpcyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzNyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlcm1pbmF0ZSBUZWFtLVJvb20gYW5kIGxvZ291dCBhbGwgVXNlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzOCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk5ldyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTAzOSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGEgbmV3IFRlYW0tUm9vbSBhdmFpbGFibGUgZm9yIHlvdS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlN3aXRjaCB0byBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0MSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRlYW0tUm9vbSBBY3Rpb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDIiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Zb3UgY2FuIHJlLW9wZW4gdGhpcyB3aW5kb3cgdmlhIHRoZSBtYWluIG1lbnUgaW4gdGhlICJBY3Rpb25zIiBzZWN0aW9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDQzIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U2VuZCBtZXNzYWdlIHRvIFRlYW0tUm9vbSBNb2RlcmF0b3I8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NCIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPk5ldyBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoZXJlIGlzIGEgbmV3IFRlYW0tUm9vbSBhdmFpbGFibGUuIFlvdSBjYW4gc3dpdGNoIHRvIHRoYXQgUm9vbS4gVGVhbS1Sb29tcyBhcmUgbGlrZSAiV29ya2dyb3VwcyIgd2l0aCBhZGRpdGlvbmFsbHkgcG9zc2liaWxpdGllcyB0byBhc2sgdGhlIFRlYW0tUm9vbSBNb2RlcmF0b3IgZm9yIGhlbHAuIFlvdXIgVGVhbS1Sb29tcyBhcmUgYWxzbyBhdmFpbGFibGUgaW4gdGhlICJNeSBNZWV0aW5ncyIgc2VjdGlvbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NiIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlN3aXRjaCB0byBUZWFtLVJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0NyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkNyZWF0ZWQgYnk6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNDgiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb20gbmFtZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA0OSIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoaXMgV2luZG93IHdpbGwgc3RheSBvcGVuIGV2ZW4gaWYgeW91IGxlYXZlIHRoZSByb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUwIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+VXNlcnMgZm9yIHRoaXMgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4zKSBPdGhlciBUZWFtLVJvb21zIHRoYXQgeW91IGNvdWxkIHN3aXRjaCB0bzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDUyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+U2VuZCBhIG1lc3NhZ2UgdG8gdGhlIFRlYW0tUm9vbSBNb2RlcmF0b3JzLiBGb3IgZXhhbXBsZSBpZiB5b3UgbmVlZCBoZWxwIGluIE1vZGVyYXRpbmcgdGhlIFJvb20gb3IgaWYgeW91IGhhdmUgYSBxdWVzdGlvbiBhYm91dCB0aGUgdG9waWMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTMiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5TZW5kPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT4yKSBVc2VycyB0aGF0IGFyZSBpbnZpdGVkIHRvIHRoaXMgVGVhbS1Sb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTUiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5JcyBUZWFtLVJvb20gTW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNTYiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UaGVzZSBhcmUgYWxsIHVzZXJzIHRoYXQgdGhlIG1vZGVyYXRvciBoYXMgaW52aXRlZCB0byB0aGlzIFRlYW0tUm9vbS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA1NyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPlRoZXJlIGlzIG5vIFRlYW0tTW9kZXJhdG9yIGxvZ2dlZCBpbiBhdCB0aGUgbW9tZW50ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU4IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGEgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDU5IiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+UGxlYXNlIGhlbHAgdXMsIHdlIGhhdmUgYSBwcm9ibGVtIGluIG91ciBUZWFtLVJvb20hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjAiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5BIHVzZXIgZnJvbSBhIFRlYW0tUm9vbSByZXF1ZXN0cyB5b3VyIGhlbHAuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjEiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5UZWFtLVJvb20gcmVxdWVzdCBmb3IgaGVscDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDYyIiBuYW1lPSJ0ZWFtLXNwbGl0Ij4KKyAgICA8dmFsdWU+TWVzc2FnZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2MyIgbmFtZT0idGVhbS1zcGxpdCI+CisgICAgPHZhbHVlPkZyb206PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjQiIG5hbWU9InRlYW0tc3BsaXQiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGN1cnJlbnRseSBub3QgaW4gYW55IFRlYW0tUm9vbS4gQnV0IHlvdSBjYW4gc3dpdGNoIGhlcmUgdG8gYWxsIFRlYW0tUm9vbXMgdGhhdCB5b3UgaGF2ZSBhY2Nlc3MgdG8uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNjUiIG5hbWU9ImJhY2t1cENvbnRlbnQiPgorICAgIDx2YWx1ZT5CYWNrdXAgdGhlIFN5c3RlbS4gVGhlIEJhY2t1cCBpbmNsdWRlcyBhbGwgVXNlciBnZW5lcmF0ZWQgZGF0YS4gVGhlIGNvbmZpZ3VyYXRpb24gaXMgbm90IGluY2x1ZGVkIGFzIHdlbGwgYXMgdGhlIGxhbmd1YWdlIGxhYmVscy4gQmVjYXVzZSB0aG9zZSB2YWx1ZXMgYXJlIGltcG9ydGVkIHdpdGggdGhlIFN5c3RlbSBJbnN0YWxsZXIuIFRvIHVwZGF0ZSB5b3VyIFN5c3RlbSwgZXhwb3J0IHlvdXIgb2xkIHN5c3RlbSAoMSkgcmUtaW5zdGFsbCBpbnRvIGEgbmV3IGRhdGFiYXNlIHRoZSBuZXcgcGFja2FnZSAoMikgYW5kIGltcG9ydCB0aGUgQmFja3VwIGZpbGUgYWdhaW4gKDMpLiBUaGUgQmFja3VwIHNob3VsZCBiZSBpbXBvcnRlZCBiZWZvcmUgZ2VuZXJhdGluZyBkYXRhIGluIHRoZSBuZXdseSBpbnN0YWxsZWQgc3lzdGVtLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY2IiBuYW1lPSJiYWNrdXBDb250ZW50Ij4KKyAgICA8dmFsdWU+U3lzdGVtIEJhY2t1cDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDY3IiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT5BbGxvdyB1c2VyIHRvIHNoYXJlIFNjcmVlbi9SZWNvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2OCIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+RGVueSB1c2VyIHRvIHNoYXJlIFNjcmVlbi9SZWNvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA2OSIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+VXNlciBpcyBNb2RlcmF0b3IsIGhlIGNhbiBkbyBhbnl0aGluZyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3MCIgbmFtZT0iYXBwbHkgZm9yIHNjcmVlbi9yZWNvcmRpbmciPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIHNoYXJlL3JlY29yZCBzY3JlZW4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzEiIG5hbWU9Im1vZGVyYXRpb24gbWluaSBpY29ucyI+CisgICAgPHZhbHVlPllvdSBhcmUgYWxsb3dlZCB0byBzaGFyZS9yZWNvcmQgc2NyZWVuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzIiIG5hbWU9Im1vZGVyYXRpb24gbWluaSBpY29ucyI+CisgICAgPHZhbHVlPkFwcGx5IGZvciByaWdodCB0byBzaGFyZS9yZWNvcmQgc2NyZWVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDczIiBuYW1lPSJtb2RlcmF0aW9uIG1pbmkgaWNvbnMgY29uZmVyZW5jZSI+CisgICAgPHZhbHVlPkFsbG93L0RlbnkgcmlnaHQgdG8gc2hhcmUvcmVjb3JkIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3NCIgbmFtZT0ic291bmQgaWNvbiI+CisgICAgPHZhbHVlPlR1cm4gc291bmQgb2ZmPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzUiIG5hbWU9InNvdW5kIGljb24iPgorICAgIDx2YWx1ZT5UdXJuIHNvdW5kIG9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzYiIG5hbWU9InJvb20gYWRtaW5pc3RyYXRpb24iPgorICAgIDx2YWx1ZT5BdWRpbyBvbmx5IHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA3NyIgbmFtZT0icm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlR1cm4gdGhpcyBGbGFnIG9uIGFuZCB0aGUgdXNlcnMgd2lsbCBoYXZlIG9ubHkgdGhlIEF1ZGlvLU9wdGlvbiBhbmQgbm8gVmlkZW8gaW4gYSBjb25mZXJlbmNlIHJvb20uIFRoaXMgY2FuIGJ5IGdvb2QgdG8gc2F2ZSBiYW5kd2lkdGguPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzgiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkFsbG93IFJlbW90ZSBDb250cm9sIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwNzkiIG5hbWU9InVzZXIgbGlzdCI+CisgICAgPHZhbHVlPkRlbnkgUmVtb3RlIENvbnRyb2wgKER1cmluZyBTY3JlZW4gU2hhcmluZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4MCIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QXBwbHkgZm9yIHJpZ2h0IHRvIFJlbW90ZSBDb250cm9sIFNjcmVlbiAoRHVyaW5nIFNjcmVlbiBTaGFyaW5nKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgxIiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Zb3UgYXJlIGFsbG93ZWQgdG8gUmVtb3RlIENvbnRyb2wgU2NyZWVuIChEdXJpbmcgU2NyZWVuIFNoYXJpbmcpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODIiIG5hbWU9ImFwcGx5IGZvciByZW1vdGUgY29udHJvbCI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gcmVtb3RlIGNvbnRyb2wgc2NyZWVuLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDgzIiBuYW1lPSJ1c2VyIGxpc3QiPgorICAgIDx2YWx1ZT5Vc2VyIGlzIE1vZGVyYXRvciwgaGUgY2FuIGRvIGFueXRoaW5nISBbUmVtb3RlIERlc2t0b3AgQ29udHJvbF08L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4NCIgbmFtZT0idXNlciBsaXN0Ij4KKyAgICA8dmFsdWU+QWxsb3cvRGVueSByaWdodCB0byBSZW1vdGUgQ29udHJvbCBTY3JlZW4gKER1cmluZyBTY3JlZW4gU2hhcmluZyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4NSIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+MSkgWW91ciBQQyB0byByZW1vdGUgUEM6IFRvIGNvcHkgYW5kIHBhc3RlIHRleHQgZnJvbSB5b3VyIGNsaXBib2FyZCBpbnRvIHRoZSByZW1vdGUgY29udHJvbGxlZCBzY3JlZW4sIGNsaWNrIG9uIHRoZSBzY3JlZW4sIHRoZW4gcmlnaHQgY2xpY2sgaW4gdGhlIHRleHQgZmllbGQgYW5kIGNob29zZSAiSW5zZXJ0IiBmcm9tIHRoZSBjb250ZXh0IChyaWdodCBjbGljaykgbWVudS4mbHQ7YnIvJmd0OyZsdDtici8mZ3Q7MikgRnJvbSByZW1vdGUgUEMgdG8geW91ciBQQzogVG8gY29weSB0ZXh0IGZyb20gdGhlIHJlbW90ZSBQQyB0byB5b3VyIFBDJ3MgY2xpcGJvYXJkLCBoaWdobGlnaHQgdGhlIHRleHQgd2l0aCB0aGUgbW91c2Ugb24gdGhlIHJlbW90ZSBzY3JlZW4sIHRoZW4gcmlnaHQtY2xpY2sgb24gdGhlIHJlbW90ZSBzY3JlZW4gYW5kIGNob29zZSAmbHQ7aSZndDtDb3B5IGhpZ2hsaWdodGVkIHRleHQmbHQ7L2kmZ3Q7PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODYiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkNvcHkgYW5kIFBhc3RlIHRleHQgZnJvbSB5b3VyIFBDIHRvIHJlbW90ZSBQQyBhbmQgdmljZS12ZXJzYS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4NyIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+Q29weSBoaWdobGlnaHRlZCB0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwODgiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPkhvdyB0byBjb3B5IG4gcGFzdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA4OSIgbmFtZT0ic2NyZWVuLXNoYXJlci1xdWFsaXR5Ij4KKyAgICA8dmFsdWU+UXVhbGl0eSBvZiB0aGUgU2NyZWVuU2hhcmU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTAiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPlZlcnkgaGlnaCBRdWFsaXR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTEiIG5hbWU9InNjcmVlbi1zaGFyZXItcXVhbGl0eSI+CisgICAgPHZhbHVlPkhpZ2ggUXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkyIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5NZWRpdW0gUXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDkzIiBuYW1lPSJzY3JlZW4tc2hhcmVyLXF1YWxpdHkiPgorICAgIDx2YWx1ZT5Mb3cgUXVhbGl0eTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk0IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPmVuX1VTPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTUiIG5hbWU9ImtleWJvYXJkLWlucHV0Ij4KKyAgICA8dmFsdWU+ZGVfREU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NiIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5LZXlib2FyZDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTA5NyIgbmFtZT0ia2V5Ym9hcmQtaW5wdXQiPgorICAgIDx2YWx1ZT5DbG9zZSBXZWJpbmFyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMDk4IiBuYW1lPSJrZXlib2FyZC1pbnB1dCI+CisgICAgPHZhbHVlPlRoZSBXZWJpbmFyIGlzIGFscmVhZHkgY2xvc2VkLCB5b3Ugd2lsbCBiZSByZWRpcmVjdGVkIHRvIHNvbWUgaW50ZXJlc3Rpbmcgb2ZmZXJpbmdzIGluPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEwOTkiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+Q2xvc2UgUm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAwIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPkV4aXQgVVJMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDEiIG5hbWU9InJvb20gY29uZmlnIj4KKyAgICA8dmFsdWU+Um9vbSB0ZXJtaW5hdGlvbiBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAyIiBuYW1lPSJyb29tIGNvbmZpZyI+CisgICAgPHZhbHVlPklmIHRoZSByb29tIGlzIGNsb3NlZCB1c2VycyB3aWxsIGJlIHJlZGlyZWN0ZWQgdG8gdGhlIGV4aXQgVVJMLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTAzIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkxkYXA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JRDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA1IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPk5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEwNiIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5Db25maWcgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA3IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkxkYXAgQ29uZmlnPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMDgiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+TmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTA5IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkVuYWJsZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExMCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5JbnNlcnRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTExIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkluc2VydGVkIGJ5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTIiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+VXBkYXRlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTEzIiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPlVwZGF0ZWQgYnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExNCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5UaGUgY29uZmlnIGZpbGVzIGFyZSBpbiB0aGUgZm9sZGVyIHdlYmFwcHMvb3Blbm1lZXRpbmdzL2NvbmYuIFlvdSBuZWVkIHRvIG1hbnVhbGx5IHVwbG9hZCB0aGUgZmlsZXMgdG8gdGhpcyBmb2xkZXIuIENoYW5nZXMgdG8gdGhlIGNvbmZpZyBmaWxlIGFyZSBpbW1lZGlhdGVseSBvbmxpbmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMTUiIG5hbWU9ImxkYXAgY29uZmlnIj4KKyAgICA8dmFsdWU+Q29uZmlnIGZpbGUgbmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE2IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPklmIHlvdSBlbmFibGUgIkFkZCBEb21haW4gdG8gdXNlcm5hbWUiIHRoZSB2YWx1ZSBvZiB0aGUgZmllbGQgImRvbWFpbiIgaXMgYWRkZWQgdG8gZWFjaCBsb2dpbiB0aGF0IHRoZSB1c2VyIGVudGVycyBpbiB0aGUgbG9naW4gYm94LiBUaGlzIGlzIHVzZWZ1bCBpZiB0aGUgTG9naW4gaW4gdGhlIExkYXAgaXMgc3RvcmVkIGluY2x1ZGluZyB0aGUgZG9tYWluIG5hbWUuIEV4YW1wbGU6IFVzZXIgZW50ZXJzICJoYW5zIiBkb21haW4gaXMgc3BlY2lmaWVkIGFzICJsb2NhbGhvc3QuY29tIiwgbG9naW4gdGhhdCBpcyB2ZXJpZmllZCBhZ2FpbnN0IExkYXAgaXM6IGhhbnNAbG9jYWxob3N0LmNvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTE3IiBuYW1lPSJsZGFwIGNvbmZpZyI+CisgICAgPHZhbHVlPkFkZCBEb21haW4gdG8gdXNlcm5hbWU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExOCIgbmFtZT0ibGRhcCBjb25maWciPgorICAgIDx2YWx1ZT5Eb21haW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTExOSIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5JbnNlcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMCIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5Db3B5IGhpZ2hsaWdodGVkIHRleHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMSIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5SZW1vdGUgQ2xpcGJvYXJkIFRleHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMiIgbmFtZT0icmVtb3RlIGNvbnRyb2wiPgorICAgIDx2YWx1ZT5TaG93IHJlbW90ZSBDbGlwYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyMyIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+RG8gbm90IHNob3cgYWdhaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNCIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+Q29weSB0ZXh0IGhlcmUgLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMjUiIG5hbWU9InJpZ2h0IGNsaWNrIHNjcmVlbiBzaGFyZSI+CisgICAgPHZhbHVlPllvdSBuZWVkIHRoZSByaWdodCB0byByZW1vdGUgY29udHJvbCAob3IgdGhlIG1vZGVyYXRpb24pIHRvIGNvcHkgYW5kIHBhc3RlIHRleHQgdG8gb3IgZnJvbSB0aGUgcmVtb3RlIHNjcmVlbi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyNiIgbmFtZT0icmlnaHQgY2xpY2sgc2NyZWVuIHNoYXJlIj4KKyAgICA8dmFsdWU+RWRpdCBkZWZhdWx0IHNldHRpbmdzIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI3IiBuYW1lPSJyaWdodCBjbGljayBzY3JlZW4gc2hhcmUiPgorICAgIDx2YWx1ZT5EbyBub3Qgc2hvdyBpbmZvIGJveCBpbiBSZW1vdGUgQ29udHJvbCBhYm91dCBDb3B5IGFuZCBQYXN0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTI4IiBuYW1lPSJjYWxlbmRhciI+CisgICAgPHZhbHVlPlNhdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEyOSIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5SZW1vdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMCIgbmFtZT0iY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5DYW5jZWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzMSIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkludml0ZSB1c2VyIHRvIGNvbmZlcmVuY2Ugcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMyIiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+Q2hvb3NlIGEgY29uZmVyZW5jZSByb29tLiBUaGUgaW52aXRlZCB1c2VyIHdpbGwgZ2V0IGEgbWVzc2FnZSB3aXRoIHlvdXIgbmFtZSBhbmQgYSBsaW5rIHRvIHRoZSByb29tLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTMzIiBuYW1lPSJjaGF0IHVzZXIiPgorICAgIDx2YWx1ZT5Db25uZWN0ZWQgc2luY2U6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzQiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5FbnRlciByb29tIGFmdGVyIHNlbmRpbmcgaW52aXRhdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTM1IiBuYW1lPSJjaGF0IGludml0ZSB1c2VyIj4KKyAgICA8dmFsdWU+SW52aXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzYiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5NZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzciIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT53b3VsZCBsaWtlIHRvIGludml0ZSB5b3UgdG8gdGhlIGNvbmZlcmVuY2Ugcm9vbTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTEzOCIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkludml0ZSBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExMzkiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5TZW5kIEludml0YXRpb248L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0MCIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPmRpZCAmbHQ7YiZndDtub3QmbHQ7L2ImZ3Q7IGFjY2VwdCB5b3VyIGludml0YXRpb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDEiIG5hbWU9ImNoYXQgaW52aXRlIHVzZXIiPgorICAgIDx2YWx1ZT5BY2NlcHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0MiIgbmFtZT0iY2hhdCBpbnZpdGUgdXNlciI+CisgICAgPHZhbHVlPkRlbnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0MyIgbmFtZT0idXNlciBwcm9maWxlIj4KKyAgICA8dmFsdWU+VGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0NCIgbmFtZT0iYXBwb2ludG1lbnQgbm90aWZpY2F0aW9uIj4KKyAgICA8dmFsdWU+RXZlbnQgRGV0YWlsczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTQ1IiBuYW1lPSJhcHBvaW50bWVudCBub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDYiIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPkRlc2NyaXB0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNDciIG5hbWU9ImFwcG9pbnRtZW50IG5vdGlmaWNhdGlvbiI+CisgICAgPHZhbHVlPkNyZWF0ZWQgYnk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0OCIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPlRpbWVab25lIE1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE0OSIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPkNoZWNrICJUaW1lWm9uZSBNZXNzYWdlIiB0byBnaXZlIHVzZXJzIGEgbWVzc2FnZSBuZXh0IHRpbWUgdGhleSBsb2dpbiB0byB1cGRhdGUgdGhlaXIgcHJvZmlsZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MCIgbmFtZT0idGltZSB6b25lIHVwZGF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+UGxlYXNlIGNoZWNrIHRoZSB0aW1lIHpvbmUgaW4geW91ciB1c2VyIHByb2ZpbGUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTEiIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPk5ldyAkQVBQX05BTUUgY29uZmVyZW5jZTo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1MiIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGV0YWlsczombHQ7YnIvJmd0OzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTUzIiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TdGFydDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1NCIgbmFtZT0iY2FsZW5kYXIgaW52aXRhdGlvbiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RW5kOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU1IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DaGFuZ2VkICRBUFBfTkFNRSBjb25mZXJlbmNlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU2IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Pcmdhbml6ZXI6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNTciIG5hbWU9ImNhbGVuZGFyIGludml0YXRpb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPkNhbmNlbGVkICRBUFBfTkFNRSBjb25mZXJlbmNlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTU4IiBuYW1lPSJjYWxlbmRhciBpbnZpdGF0aW9uIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT4kQVBQX05BTUUgY29uZmVyZW5jZSBSZW1pbmRlcjo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE1OSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkNvbW11bml0eSBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYwIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+U2hvdyBjb250YWN0IGRhdGEgdG8gZXZlcnlib2R5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjEiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5BZGQgZmllbGRzIG9mIGludGVyZXN0IHRoYXQgeW91IG9mZmVyIG9yIHRoYXQgeW91IGFyZSBzZWFyY2hpbmcgdG8gZmluZCBpbnRlcmVzdGluZyBwYXJ0bmVycyBmb3IgYSBjb25mZXJlbmNlLiBDb21tYSBzZXBhcmF0ZSB0aGUgdGVybXMgKGZvciBleGFtcGxlOiBNZWRpY2FsIFNlcnZpY2UsIEhlYWx0aCBhc3N1cmFuY2UsIC4uLik8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE2MiIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk15IG9mZmVyaW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTYzIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+TXkgaW50ZXJlc3RzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjQiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjUiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5UaW1lem9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTY2IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+RmllbGRzIG9mIGludGVyZXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjciIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5Db250YWN0IGluZm9ybWF0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjgiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TaG93IGNvbnRhY3QgZGF0YSB0byBjb250YWN0cyBvbmx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNjkiIG5hbWU9InVzZXIgc2V0dGluZ3MiPgorICAgIDx2YWx1ZT5TaG93IGNvbnRhY3QgZGF0YSB0byBub2JvZHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MCIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPk15IFByb2ZpbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPkVkaXQgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3MiIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlNlYXJjaCB1c2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTczIiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+V2F0Y2ggeW91ciBwcm9maWxlIGxpa2Ugb3RoZXIgc2VlIHlvdTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc0IiBuYW1lPSJ1c2VyIHNldHRpbmdzIj4KKyAgICA8dmFsdWU+RWRpdCB5b3VyIHNldHRpbmdzLCBhZGQgeW91ciBpbnRlcmVzdHMgdG8gYmUgZm91bmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NSIgbmFtZT0idXNlciBzZXR0aW5ncyI+CisgICAgPHZhbHVlPlNlYXJjaCBmb3Igb3RoZXIgdXNlcnMgYW5kIGV4dGVuZCB5b3VyIG5ldHdvcms8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NiIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5TZWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE3NyIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5Vc2VyIG9mZmVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTc4IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlVzZXIgbG9va3MgZm9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExNzkiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+RnJlZXRleHQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MCIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5OYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODEiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+VGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MiIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5PZmZlcnM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE4MyIgbmFtZT0idXNlciBzZWFyY2giPgorICAgIDx2YWx1ZT5TZWFyY2hzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODQiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+U2VhcmNocmVzdWx0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExODUiIG5hbWU9InVzZXIgc2VhcmNoIj4KKyAgICA8dmFsdWU+QWN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg2IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkFkZCB0byBjb250YWN0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg3IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlNlbmQgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg4IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPkNvbnRhY3RzIGFuZCBNZXNzYWdlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTg5IiBuYW1lPSJ1c2VyIHNlYXJjaCI+CisgICAgPHZhbHVlPlBlbmRpbmcgY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5MCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkFjY2VwdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkxIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+RGVueTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkyIiBuYW1lPSJ1c2VyIGNvbnRhY3QgcmVxdWVzdCI+CisgICAgPHZhbHVlPkhpLDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTkzIiBuYW1lPSJ1c2VyIGNvbnRhY3QgcmVxdWVzdCI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gYWRkIHlvdSBhcyBjb250YWN0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk0IiBuYW1lPSJ1c2VyIGNvbnRhY3QgcmVxdWVzdCI+CisgICAgPHZhbHVlPkNoZWNrIHlvdXIgY29udGFjdCByZXF1ZXN0cyBpbiAkQVBQX05BTUUgb3IgY2xpY2sgb24gdGhvc2UgbGlua3MgdG8gYWNjZXB0IG9yIGRlbnkgdGhlIHJlcXVlc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NSIgbmFtZT0iYWRkIHVzZXIgY29udGFjdCI+CisgICAgPHZhbHVlPlRoaXMgdXNlciBpcyBhbHJlYWR5IGluIHlvdXIgY29udGFjdCBsaXN0IG9yIGhhcyByZWNlaXZlZCBhbiBpbnZpdGF0aW9uIHRvIHlvdXIgY29udGFjdCBsaXN0IHRoYXQgaXMgbm90IGFuc3dlcmVkIHlldC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTE5NiIgbmFtZT0idXNlciBjb250YWN0IG1haWwiPgorICAgIDx2YWx1ZT5Zb3VyIGNvbnRhY3QgbGlzdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMTk3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+RWRpdCB5b3VyIGNvbnRhY3QgYW5kIG1lc3NhZ2VzLCZsdDtici8mZ3Q7IG1hbmFnZSB5b3VyIHBlbmRpbmcgY29udGFjdHMhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTgiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5jb25maXJtZWQgeW91IGFzIGNvbnRhY3QhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjExOTkiIG5hbWU9ImNoYXQgaW5mbyBtZXNzYWdlIj4KKyAgICA8dmFsdWU+PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDAiIG5hbWU9ImNoYXQgbG9nIGljb24iPgorICAgIDx2YWx1ZT5TaG93IC8gQ29weSBjaGF0IGxvZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAxIiBuYW1lPSJjaGF0IGxvZyB3aW5kb3ciPgorICAgIDx2YWx1ZT5DaGF0IExvZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjAyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Gcm9tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMDMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlN1YmplY3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VuZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TWVzc2FnZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwNyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TmV3IE1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIwOCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Q2xpY2sgdG8gd3JpdGUgYSBuZXcgbWVzc2FnZSB0byBhbnkgb2YgeW91ciBjb250YWN0czwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjA5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Xcml0ZSBuZXcgbWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjEwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Ubzo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U3ViamVjdDo8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxMiIgbmFtZT0id2hpdGVib2FyZCBmdWxsLWZpdCI+CisgICAgPHZhbHVlPkVuYWJsZSBmdWxsIGZpdCBhbmQgdGhlIHdoaXRlYm9hcmQgd2lsbCB6b29tIHRoZSB3aG9sZSB3aGl0ZWJvYXJkIHNvIHRoYXQgYWxsJmx0O2JyLyZndDtkb2N1bWVudHMgYXJlIHZpc2libGUgYWNjb3JkaW5nIHRvIGVhY2ggcGFydGljaXBhbnRzIHNjcmVlbiByZXNvbHV0aW9uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjEzIiBuYW1lPSJ1c2VyLWxpc3QiPgorICAgIDx2YWx1ZT5LaWNrIHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNCIgbmFtZT0idXNlci1saXN0Ij4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBraWNrIHlvdXJzZWxmIG91dCBvZiB0aGUgY29uZmVyZW5jZSByb29tISBJZiB5b3Ugd2FudCB0byBsZWF2ZSBpdCBjbG9zZSB0aGUgYnJvd3NlciBvciB1c2UgdGhlIGV4aXQgYnV0dG9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE1IiBuYW1lPSJraWNrLXVzZXIiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGlzY29ubmVjdCB0aGlzIHVzZXIgZnJvbSB0aGlzIGNvbmZlcmVuY2Ugcm9vbT88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIxNiIgbmFtZT0ia2ljay11c2VyIj4KKyAgICA8dmFsdWU+Q29uZmlybSBhY3Rpb24gLi4uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMTciIG5hbWU9ImtpY2stdXNlciI+CisgICAgPHZhbHVlPllvdSBjYW5ub3Qga2ljayBhIFN1cGVyLU1vZGVyYXRvciBvdXQgb2YgYSByb29tITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5Cb29rIGNvbmZlcmVuY2Ugcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjE5IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TdGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjIwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5FbmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QWRkIGFuIG9wdGlvbmFsIHJlcXVlc3QgZm9yIG1lZXRpbmcgdG8gdGhlIG1lc3NhZ2UgYW5kIGNyZWF0ZSBhIGNvbmZlcmVuY2Ugcm9vbS4gVGhlIEV2ZW50IGlzIHRoZW4gY29waWVkIGluIHRoZSBjYWxlbmRhciBvZiBldmVyeSBwYXJ0aWNpcGFudC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMiIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+SW5ib3g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyMyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VudDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UcmFzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI1IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGlzIGlzIHlvdSEgWW91IGNhbm5vdCBhZGQgeW91cnNlbGYgYXMgeW91ciBvd24gY29udGFjdC48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyNiIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoZSB1c2VyIGlzIGFscmVhZHkgZGVuaWVkITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjI3IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VGhlIHVzZXIgaXMgYWxyZWFkeSBhcHByb3ZlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyOCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlRoaXMgdXNlciBjb250YWN0IGhhc2ggaXMgaW52YWxpZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIyOSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPlVzZXIgYWRkZWQgdG8gY29udGFjdCBsaXN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMwIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VXNlciBkZW5pZWQgYXMgY29udGFjdCBhbmQgcmVtb3ZlZCBmcm9tIHBlbmRpbmcgY29udGFjdCBsaXN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMxIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgbm8gc3VjaCBjb250YWN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjMyIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+V291bGQgeW91IHJlYWxseSBsaWtlIHRvIHJlbW92ZSB0aGF0IGNvbnRhY3Q/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzMiIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5Db25maXJtIGNvbnRhY3QgcmVtb3ZhbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM0IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+RGVsZXRlIGNvbnRhY3QgZnJvbSBsaXN0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyMzUiIG5hbWU9InVzZXIgcHJvZmlsZSI+CisgICAgPHZhbHVlPlVzZXIgUHJvZmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM2IiBuYW1lPSJ1c2VyIHByb2ZpbGUiPgorICAgIDx2YWx1ZT5TaG93IHVzZXIgcHJvZmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM3IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5NZXNzYWdlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjM4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWFyY2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTIzOSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+U2VsZWN0IGFsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWxlY3Qgbm9uZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5TZWxlY3QgdW5yZWFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDIiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPlNlbGVjdCByZWFkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDMiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPk1vdmUgdG8gZm9sZGVyIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgbmV3IGZvbGRlciAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0NSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RGVsZXRlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNDYiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRlbGV0ZWQgbWFpbHMgYXJlIHN0aWxsIGluIHlvdXIgdHJhc2ggZm9sZGVyITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ3IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5NYXJrIHVucmVhZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjQ4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5NYXJrIHJlYWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI0OSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+QW5zd2VyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTAiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFuc3dlciBldmVyeWJvZHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1MSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Rm9yd2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BY3Rpb25zIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjUzIiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+U2VuZCBwcml2YXRlIG1lc3NhZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+Tm90aGluZyBzZWxlY3RlZCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI1NSIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+TW92ZSB0byBJbmJveDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU2IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5EZWxldGUgKGZpbmFsKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU3IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGlzIGFjdGlvbiBjYW5ub3QgYmUgdW5kb25lITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjU4IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgZm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNTkiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZCBmb2xkZXJzIGFuZCBvcmdhbml6ZSB5b3VyIG1lc3NhZ2VzITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYwIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5BZGQgZm9sZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjEiIG5hbWU9InByaXZhdGUgbWVzc2FnZSI+CisgICAgPHZhbHVlPkFkZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+RGVsZXRlIGZvbGRlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjYzIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+WW91IGNhbm5vdCBkZWxldGUgdGhpcyBmb2xkZXIsIHRoZXJlIGFyZSBzdGlsbCBtZXNzYWdlcyBpbnNpZGUhIERlbGV0ZSBmaXJzdCB0aGUgbWVzc2FnZXMgb3IgbW92ZSB0aGVtIHRvIGFub3RoZXIgZm9sZGVyLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY0IiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UgZm9sZGVyIj4KKyAgICA8dmFsdWU+RWRpdCBuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjUiIG5hbWU9InByaXZhdGUgbWVzc2FnZSBmb2xkZXIiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgZm9sZGVyPyBUaGVyZSBpcyBubyB3YXkgdG8gdW5kbyB0aGF0LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjY2IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+WW91ciByZXF1ZXN0IHdhcyBzZW5kIHRvIHRoZSB1c2VyLiBUaGUgdXNlciB3aWxsIHJlY2VpdmUgYSBub3RpZmljYXRpb24gdG8gYWNjZXB0IG9yIGRlbnkgeW91ciByZXF1ZXN0LiBPbmx5IGFjY2VwdGVkIHJlcXVlc3RzIGFyZSBpbiB5b3VyIGNvbnRhY3QgbGlzdCBvZiBjb3Vyc2UhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjciIG5hbWU9InVzZXIgY29udGFjdHMiPgorICAgIDx2YWx1ZT5NZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNjgiIG5hbWU9InVzZXIgdmlldyBwcm9maWxlIj4KKyAgICA8dmFsdWU+VGhlIHVzZXIgZG9lcyBub3Qgc2hhcmUgaGlzIHBlcnNvbmFsIGNvbnRhY3QgZGF0YS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI2OSIgbmFtZT0idXNlciB2aWV3IHByb2ZpbGUiPgorICAgIDx2YWx1ZT5UaGUgdXNlciBkb2VzIHNoYXJlIGhpcyBwZXJzb25hbCBjb250YWN0IGRhdGEgb25seSB0byBjb250YWN0cy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3MCIgbmFtZT0idXNlciB2aWV3IHByb2ZpbGUiPgorICAgIDx2YWx1ZT5BZGRyZXNzICZhbXA7IFBob25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzEiIG5hbWU9ImVycm9yIGNvZGUiPgorICAgIDx2YWx1ZT5Zb3UgaW52aXRhdGlvbiBjb2RlIGlzIG5vIHZhbGlkLCB0aGUgY29kZSBpcyBvbmx5IHZhbGlkIGR1cmluZyB0aGlzIHNwZWNpZmljIGRhdGUgYW5kIHRpbWU6PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzIiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5UaGlzIGV2ZW50IGlzIGNvbm5lY3RlZCB0byBzZXZlcmFsIGNhbGVuZGFycyBvZiBvdGhlciB1c2Vycy4gWW91ciBjaGFuZ2Ugd2lsbCBhbHNvIHVwZGF0ZSB0aGVpciBjYWxlbmRhci4gV291bGQgeW91IHJlYWxseSBsaWtlIHRvIHVwZGF0ZSB0aGUgZXZlbnQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyNzMiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Db25maXJtIHVwZGF0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc0IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+QWxsb3cgY29udGFjdCB0byBzZWUgbXkgY2FsZW5kYXIgKHZpZXcgb25seSk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NSIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPkRvIG5vdCBzaGFyZSBjYWxlbmRhcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc2IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+Q2FsZW5kYXIgb2YgY29udGFjdHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3NyIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPllvdXIgY29udGFjdHMgbmVlZCB0byBhcHByb3ZlIHlvdSBmaXJzdCB0byBiZSBhYmxlIHRvIHNlZSB0aGVpciBjYWxlbmRhci48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI3OCIgbmFtZT0idXNlciBjb250YWN0cyI+CisgICAgPHZhbHVlPllvdSBjYW5ub3Qgc3RvcmUgb3IgZGVsZXRlIGV2ZW50cyBmcm9tIG90aGVyIGNhbGVuZGFycyB0aGVuIHlvdXIgb3duITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjc5IiBuYW1lPSJ1c2VyIGNvbnRhY3RzIj4KKyAgICA8dmFsdWU+U2hvdyBteSBvd24gY2FsZW5kYXIgYWdhaW4hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODAiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5UaGlzIGV2ZW50IGlzIGNvbm5lY3RlZCB0byBzZXZlcmFsIGNhbGVuZGFycyBvZiBvdGhlciB1c2Vycy4gWW91ciBhY3Rpb24gd2lsbCBhbHNvIGRlbGV0ZSB0aGUgZXZlbnQgZnJvbSB0aGVpciBjYWxlbmRhci4gV291bGQgeW91IHJlYWxseSBsaWtlIHRvIGRlbGV0ZSB0aGUgZXZlbnQ/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODEiIG5hbWU9InVzZXIgY2FsZW5kYXIiPgorICAgIDx2YWx1ZT5Db25maXJtIGFjdGlvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgyIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+RW50ZXIgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjgzIiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+QWNjZXNzIHRoZSBjb25mZXJlbmNlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI4NCIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+VGhlcmUgaXMgYSBjb25mZXJlbmNlIHJvb20gYW5kIGV2ZW50IGJvb2tlZCB3aXRoIHRoaXMgcHJpdmF0ZSBtZXNzYWdlLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg1IiBuYW1lPSJ1c2VyIGNhbGVuZGFyIj4KKyAgICA8dmFsdWU+WW91IG5lZWQgdG8gc3RvcmUgdGhlIGV2ZW50IGZpcnN0ITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg2IiBuYW1lPSJhY2Nlc3Mgcm9vbXMgZXJyb3IiPgorICAgIDx2YWx1ZT5UaGVyZSBpcyBubyBzdWNoIHJvb20gYXZhaWxhYmxlLiBUaGUgZXZlbnQgaW4gdGhlIGNhbGVuZGFyIGFuZCBjb25uZWN0ZWQgcm9vbSBpcyBhbHJlYWR5IGRlbGV0ZWQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODciIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPkNob29zZSB5b3VyIG5pY2tuYW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyODgiIG5hbWU9Im5pY2sgbmFtZSI+CisgICAgPHZhbHVlPkZpcnN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjg5IiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5MYXN0bmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkwIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5FbWFpbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkxIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5PazwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjkyIiBuYW1lPSJuaWNrIG5hbWUiPgorICAgIDx2YWx1ZT5NaW5pbXVtIGxlbmd0aCA0IGNoYXJzISBGb3IgYm90aCwgZmlyc3RuYW1lIGFuZCBsYXN0bmFtZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5MyIgbmFtZT0ibmljayBuYW1lIj4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGEgdmFsaWQgZW1haWwhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTQiIG5hbWU9ImF1dGggZnJvbSI+CisgICAgPHZhbHVlPkZhY2Vib29rPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTUiIG5hbWU9ImF1dGggZm9ybSI+CisgICAgPHZhbHVlPkxvZ2luIHdpdGggeW91ciBGYWNlYm9vayBhY2NvdW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEyOTYiIG5hbWU9InZpZXcgcHJvZmlsZSI+CisgICAgPHZhbHVlPk1lbWJlciBzaW5jZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk3IiBuYW1lPSJkaXJlY3QgbG9naW4gbWVzc2FnZSI+CisgICAgPHZhbHVlPllvdSd2ZSBsb2dnZWQgd2l0aCB5b3VyIEZhY2Vib29rIGFjY291bnQuIFlvdSBzaG91bGQgdXBkYXRlIHlvdXIgcHJvZmlsZSB3aXRoIHRoZSBjb3JyZWN0IGVtYWlsLiBPdGhlcndpc2UgeW91IHdpbGwgbm90IHJlY2VpdmUgaW52aXRhdGlvbnMgYW5kIHByaXZhdGUgbWVzc2FnZXMgZnJvbSBvdGhlciB1c2Vycy48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTI5OCIgbmFtZT0iZGlyZWN0IGxvZ2luIG1lc3NhZ2UgaGVhZGVyIj4KKyAgICA8dmFsdWU+TWVzc2FnZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMjk5IiBuYW1lPSJkaXJlY3QgbG9naW4gbWVzc2FnZSBjaGVja2JveCBjb250cm9sIj4KKyAgICA8dmFsdWU+RG8gbm90IHNob3cgdXBkYXRlIHByb2ZpbGUgbWVzc2FnZSBhZ2FpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAwIiBuYW1lPSJwcm9maWxlIHNldHRpbmdzIGJ1dHRvbiI+CisgICAgPHZhbHVlPm1vcmUgZGlzcGxheSBvcHRpb25zIC4uLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAxIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5OZXcgcHJpdmF0ZSBtZXNzYWdlOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzAyIiBuYW1lPSJwcml2YXRlIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5DbGljayBoZXJlIHRvIHZpc2l0IHlvdXIgcHJvZmlsZSB0byBzZWUgdGhlIGZ1bGwgbWVzc2FnZSAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwMyIgbmFtZT0icHJpdmF0ZSBtZXNzYWdlIj4KKyAgICA8dmFsdWU+UmVwbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwNCIgbmFtZT0iZGFzaGJvYXJkIj4KKyAgICA8dmFsdWU+Um9vbXMgYW5kIGNoYXRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDUiIG5hbWU9ImRhc2hib2FyZCI+CisgICAgPHZhbHVlPk15IHJvb21zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDYiIG5hbWU9Im15IHJvb21zIj4KKyAgICA8dmFsdWU+TXkgY29uZmVyZW5jZSByb29tIChmb3IgMS0xNiB1c2Vycyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwNyIgbmFtZT0ibXkgcm9vbXMiPgorICAgIDx2YWx1ZT5NeSB3ZWJpbmFyIHJvb20gKGZvciAxLTEyMCB1c2Vycyk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMwOCIgbmFtZT0icm9vbSBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPk93bmVyIElkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMDkiIG5hbWU9ImxvZ2luIGVycm9yIj4KKyAgICA8dmFsdWU+UGxlYXNlIGVudGVyIGEgcGFzc3dvcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMCIgbmFtZT0ibG9naW4gZXJyb3IiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCBhbiBhY2NvdW50IHdpdGggVXNlci1MZXZlbCBVc2VyLCBNb2RlcmF0b3Igb3IgQWRtaW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMSIgbmFtZT0idXNlciBhZG1pbmlzdHJhdGlvbiI+CisgICAgPHZhbHVlPldlYi1TZXJ2aWNlIChvbmx5IGFjY2VzcyB2aWEgU09BUCk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMiIgbmFtZT0idXBsb2FkIGZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5EbyBkaXJlY3RseSBsb2FkIHRvIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxMyIgbmFtZT0id2hpdGVib2FyZCBjbG9zZSBjb25maXJtYXRpb24iPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gcmVtb3ZlIHRoaXMgd2hpdGVib2FyZD8gVGhpcyBhY3Rpb24gY2Fubm90IGJlIHVuZG9uZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxNCIgbmFtZT0id2hpdGVib2FyZCBsb2FkIFdNTCI+CisgICAgPHZhbHVlPkxvYWQgdG8gd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzE1IiBuYW1lPSJyZWNvcmRpbmcgZmxhZyI+CisgICAgPHZhbHVlPkRvIG5vdCBmb3JnZXQgc3RhcnQgcmVjb3JkaW5nISBPbmUgdXNlciBwZXIgcm9vbSBhbHdheXMgbmVlZHMgdG8gc3RhcnQgaXQgdG8gaGF2ZSB0aGUgcmVjb3JkaW5nIGFmdGVyd2FyZHMuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTYiIG5hbWU9InJlY29yZGluZyBmbGFnIj4KKyAgICA8dmFsdWU+U3RhcnQgUmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMTciIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+QXJyb3c8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxOCIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT5DaXJjbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMxOSIgbmFtZT0ic2hhcGUiPgorICAgIDx2YWx1ZT5MaW5lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjAiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+U3F1YXJlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjEiIG5hbWU9InNoYXBlIj4KKyAgICA8dmFsdWU+VHJpYW5nbGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyMiIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlRleHQvTm90ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzIzIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+Q2xpcGFydHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkRyYXcgRnJlZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI1IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+U2VsZWN0L01vdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNiIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkRyYXcgU2hhcGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMyNyIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPkN1dC9Nb3ZlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMjgiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5ab29tIEluL091dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzI5IiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+UHJpbnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlVuZG88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzMSIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlRyYXNoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzMzIiIG5hbWU9Imljb24iPgorICAgIDx2YWx1ZT5BZGQgR3JpZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzMzIiBuYW1lPSJpY29uIj4KKyAgICA8dmFsdWU+U2hhcmUgRmlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM0IiBuYW1lPSJpY29uIHN1Ym1lbnUiPgorICAgIDx2YWx1ZT5TZWxlY3QgU2hhcGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNSIgbmFtZT0iaWNvbiBzdWJtZW51Ij4KKyAgICA8dmFsdWU+U2VsZWN0IENsaXBhcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNiIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkNvcHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzNyIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkN1dDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzM4IiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+UGFzdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTMzOSIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkRlbGV0ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQwIiBuYW1lPSJzdWJtZW51Ij4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIGRlbGV0ZSB0aGUgY29tcGxldGUgY29udGVudCBvbiB0aGUgd2hpdGVib2FyZD88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MSIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkxvYWQgZGlyZWN0bHkgdG8gd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQyIiBuYW1lPSJhdHRlbmRlZXMiPgorICAgIDx2YWx1ZT5BdHRlbmRlZXM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM0MyIgbmFtZT0iYXRlbmRlZSBtYW5hZ2VyIj4KKyAgICA8dmFsdWU+QXR0ZW5kZWUgTWFuYWdlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ0IiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5QcmVzZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDUiIG5hbWU9ImF0ZW5kZWUgbWFuYWdlciI+CisgICAgPHZhbHVlPlJlbW90ZSBDb250cm9sbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ2IiBuYW1lPSJhdGVuZGVlIG1hbmFnZXIiPgorICAgIDx2YWx1ZT5FamVjdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ3IiBuYW1lPSJjaGF0Ij4KKyAgICA8dmFsdWU+Q2hhdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzQ4IiBuYW1lPSJpbnZpdGUgYXR0ZW5kZWUiPgorICAgIDx2YWx1ZT5JbnZpdGUgQXR0ZW5kZWVzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNDkiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPkJ5IEVtYWlsPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTAiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPlVzZXIgaXMgbW9kZXJhdG9yPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTEiIG5hbWU9Imludml0ZSBhdHRlbmRlZSI+CisgICAgPHZhbHVlPlVzZXIgaGFzIHdlYmNhbSBzd2l0Y2hlZCBvbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUyIiBuYW1lPSJmaWxsX29wdGlvbiI+CisgICAgPHZhbHVlPkRlYWN0aXZhdGUgc2hhcGUgZmlsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzUzIiBuYW1lPSJmaWxsX29wdGlvbiI+CisgICAgPHZhbHVlPkFjdGl2YXRlIHNoYXBlIGZpbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NCIgbmFtZT0iaWNvbiI+CisgICAgPHZhbHVlPlNuYXAgdG8gR3JpZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzU1IiBuYW1lPSJhbGxvd19yZWNvcmRpbmciPgorICAgIDx2YWx1ZT5BbGxvdyByZWNvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1NiIgbmFtZT0id2FpdF9mb3JfcmVjb3JkaW5nIj4KKyAgICA8dmFsdWU+V2FpdCBmb3IgcmVjb3JkaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTciIG5hbWU9ImhpZGVfdG9wX2JhciI+CisgICAgPHZhbHVlPkhpZGUgdG9wYmFyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNTgiIG5hbWU9ImZpbGVFeHBsb3JlciI+CisgICAgPHZhbHVlPlBsYXkgdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM1OSIgbmFtZT0ic3VibWVudSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBkZWxldGUgdGhlIGNvbnRlbnQgb24gdGhlIGN1cnJlbnQgc2xpZGU/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjAiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPkFjY2VwdCBhbmQgZ3JhbnQgdXNlciByaWdodDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzYxIiBuYW1lPSJhY3Rpdml0eV93aW5kb3ciPgorICAgIDx2YWx1ZT5EZW55PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjIiIG5hbWU9ImFjdGl2aXR5X3dpbmRvdyI+CisgICAgPHZhbHVlPkk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2MyIgbmFtZT0iYWN0aXZpdHlfd2luZG93Ij4KKyAgICA8dmFsdWU+QWN0aXZpdGllcyBhbmQgYWN0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzY0IiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+UmVtb3ZlIHdoaXRlYm9hcmQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NSIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPllvdSBuZWVkIHRoZSBtb2RlcmF0aW9uIG9yIHRoZSByaWdodCB0byBkcmF3IG9uIHRoZSB3aGl0ZWJvYXJkIHRvIHJlbW92ZSB3aGl0ZWJvYXJkcyE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM2NiIgbmFtZT0id2hpdGVib2FyZCI+CisgICAgPHZhbHVlPk5vdCBhbGxvd2VkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjciIG5hbWU9InVzZXJfbGVmdF9hY3RfbXNnIj4KKyAgICA8dmFsdWU+aGFzIGxlZnQgdGhlIHJvb20uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjgiIG5hbWU9ImNsaXBhcnQgaWNvbnMiPgorICAgIDx2YWx1ZT5NYXRoIGljb25zPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNjkiIG5hbWU9ImNsaXBhcnQgaWNvbnMiPgorICAgIDx2YWx1ZT5ObyBjYXRlZ29yeTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzcwIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5Db2xvci1TdHlsZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzcxIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5RdWFsaXR5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzIiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPkRvbWFpbjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzczIiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT52aXNpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc0IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5yZWRvcmFuZ2U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NSIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+bWVkaXVtc2VhZ3JlZW48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM3NiIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+c3RlZWxibHVlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzciIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPmxpZ2h0c3RlZWxibHVlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzNzgiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPmdvbGRlbnJlZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzc5IiBuYW1lPSJsb2dpbl9zY3JlZW4iPgorICAgIDx2YWx1ZT5zaWx2ZXJncmF5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODAiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPnVzZXJkZWZpbmVkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODEiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPmJlc3Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM4MiIgbmFtZT0ibG9naW5fc2NyZWVuIj4KKyAgICA8dmFsdWU+dXBsb2FkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODMiIG5hbWU9ImxvZ2luX3NjcmVlbiI+CisgICAgPHZhbHVlPm1lZGl1bTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg0IiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODUiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSBtaWNyb3Bob25lIGdsb2JhbGx5PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODYiIG5hbWU9ImdpdmUgZXhjbHVzaXZlIGF1ZGlvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIG9mIG90aGVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzg3IiBuYW1lPSJtdXRlIHNlbGYgbWVzc2FnZSI+CisgICAgPHZhbHVlPllvdSBhcmUgZ2xvYmFsbHkgbXV0ZWQgYnkgdGhlIG1vZGVyYXRvci4gWW91IGNhbm5vdCB1bm11dGUgeW91cnNlbGYhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODgiIG5hbWU9Im11dGUgc2VsZiBjb25maXJtIG1lc3NhZ2UgdGl0bGUiPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgZ2xvYmFsbHk/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzODkiIG5hbWU9Im11dGUgc2VsZiBjb25maXJtIG1lc3NhZ2UgbWVzc2FnZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBtdXRlIHlvdXJzZWxmIGdsb2JhbGx5PyBObyBvdGhlciB1c2VyIHdpbGwgaGVhciB5b3UgYW55bW9yZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5MCIgbmFtZT0ibXV0ZSBvdGhlcnMgY29uZmlybSBtZXNzYWdlIHRpdGxlIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lIGxvY2FsbHk/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTEiIG5hbWU9Im11dGUgb3RoZXJzIGNvbmZpcm0gbWVzc2FnZSI+CisgICAgPHZhbHVlPkRvIHlvdSByZWFsbHkgd2FudCB0byBtdXRlIHRoaXMgbWljcm9waG9uZT8gWW91IGNhbiBvbmx5IG11dGUgaXQgbG9jYWxseSBvbiB5b3VyIHNjcmVlbi4gSXQgaGFzIG5vIGVmZmVjdCB0byBob3cgb3RoZXIgdXNlcnMgaGVhciB0aGlzIHVzZXIuIE9ubHkgbW9kZXJhdG9ycyBjYW4gdHVybiBpdCBvZmYgZ2xvYmFsbHkhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTIiIG5hbWU9Im11dGUgb3RoZXJzIGNvbmZpcm0gbWVzc2FnZSB0aXRsZSI+CisgICAgPHZhbHVlPk11dGUgbWljcm9waG9uZSBvZmYgZ2xvYmFsbHk/PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTMiIG5hbWU9Im11dGUgb3RoZXJzIG1vZGVyYXRvciBtZXNzYWdlIj4KKyAgICA8dmFsdWU+RG8geW91IHJlYWxseSB3YW50IHRvIG11dGUgdGhpcyB1c2VyIGdsb2JhbGx5PyBObyBvdGhlciB1c2VyIHdpbGwgaGVhciBoaW0gYW55bW9yZSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5NCIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5Zb3VyIHNvdW5kIGlzIG9uLiBDbGljayBoZXJlIHRvIHNlbmQgbW9kZXJhdG9yIG1lc3NhZ2UgdG8gbXV0ZSB5b3VyIG1pY3JvcGhvbmUgZ2xvYmFsbHkgKGluIHRoZSBjb21wbGV0ZSBjb25mZXJlbmNlIHJvb20pIG9mZiE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5NSIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5Zb3VyIHNvdW5kIGlzIG9mZi4gQ2xpY2sgaGVyZSB0byBzZW5kIG1vZGVyYXRvciBtZXNzYWdlIHRvIHVubXV0ZSB5b3VyIG1pY3JvcGhvbmUgZ2xvYmFsbHkgKGluIHRoZSBjb21wbGV0ZSBjb25mZXJlbmNlIHJvb20pIG9uITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxMzk2IiBuYW1lPSJtdXRlIGFwcGx5IHNlbGYgb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdGhhdCB0aGUgbW9kZXJhdG9yIG11dGVzIG15IG1pY3JvcGhvbmUgZ2xvYmFsbHkuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTciIG5hbWU9Im11dGUgYXBwbHkgc2VsZiBvZmYgbWVzc2FnZSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdGhhdCB0aGUgbW9kZXJhdG9yIHVubXV0ZXMgbXkgbWljcm9waG9uZSBnbG9iYWxseS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTM5OCIgbmFtZT0ibXV0ZSBhcHBseSBvZiBtZXNzYWdlIj4KKyAgICA8dmFsdWU+d2FudCB0aGF0IHRoZSBtb2RlcmF0b3IgdW5tdXRlcyBoaXMvaGVyIG1pY3JvcGhvbmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjEzOTkiIG5hbWU9Im11dGUgYXBwbHkgb2YgbWVzc2FnZSI+CisgICAgPHZhbHVlPndhbnQgdGhhdCB0aGUgbW9kZXJhdG9yIG11dGVzIGhpcy9oZXIgbWljcm9waG9uZS48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMCIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5Vbm11dGUgbWljcm9waG9uZS4gQ2xpY2sgaGVyZSB0byBtdXRlIGhpcy9oZXIgbWljcm9waG9uZSBnbG9iYWxseSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMSIgbmFtZT0ibXV0ZSBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUuIENsaWNrIGhlcmUgdG8gdW5tdXRlIGhpcy9oZXIgbWljcm9waG9uZSBnbG9iYWxseSE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwMiIgbmFtZT0ibXV0ZSBzZWxmIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT5UaGlzIHVzZXIgaXMgZ2xvYmFsbHkgbXV0ZWQgYnkgdGhlIG1vZGVyYXRvci4gWW91IGNhbm5vdCB1bm11dGUgaGltITwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDAzIiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TXV0ZSB5b3VyIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwNCIgbmFtZT0idW5tdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+VW5tdXRlIHlvdXIgbWljcm9waG9uZSBnbG9iYWxseTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDA1IiBuYW1lPSJtdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+TXV0ZSBtaWNyb3Bob25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDYiIG5hbWU9InVubXV0ZSBtaWNybyI+CisgICAgPHZhbHVlPlVubXV0ZSBtaWNyb3Bob25lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MDciIG5hbWU9Im11dGUgbWljcm8iPgorICAgIDx2YWx1ZT5NdXRlIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwOCIgbmFtZT0idW5tdXRlIG1pY3JvIj4KKyAgICA8dmFsdWU+VW5tdXRlIG1pY3JvcGhvbmUgZ2xvYmFsbHk8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQwOSIgbmFtZT0ibXV0ZSBtb2RlcmF0b3IgbWVzc2FnZSI+CisgICAgPHZhbHVlPk9ubHkgbW9kZXJhdG9ycyBjYW4gbXV0ZSBvciB1bm11dGUgYW4gdXNlciBnbG9iYWxseSEgVG8gbXV0ZSB5b3VyIG93biBtaWNyb3Bob25lOiBQbGVhc2UgdXNlIHRoZSBtaWNyb3Bob25lIGljb24gaW4geW91ciB2aWRlbyBwb2QhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTAiIG5hbWU9InBvbGxfbmFtZSI+CisgICAgPHZhbHVlPlBvbGwgTmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDExIiBuYW1lPSJwb2xsX25hbWUiPgorICAgIDx2YWx1ZT5Zb3U8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMiIgbmFtZT0iYXJjaGl2ZWRfcG9sbHMiPgorICAgIDx2YWx1ZT5BcmNoaWV2ZWQgUG9sbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxMyIgbmFtZT0iYWN0aXZlX3BvbGwiPgorICAgIDx2YWx1ZT5hY3RpdmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNCIgbmFtZT0iY2hhcnRfc2ltcGxlIj4KKyAgICA8dmFsdWU+U2ltcGxlIENoYXJ0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MTUiIG5hbWU9ImNoYXJ0X3BpZSI+CisgICAgPHZhbHVlPlBpZSBDaGFydDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE2IiBuYW1lPSJzaWduX3VwX3ZhbGlkYXRpb24iPgorICAgIDx2YWx1ZT5QbGVhc2UgZW50ZXIgZW1haWw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQxNyIgbmFtZT0iY2hhdF9ub3RpZmljYXRpb24iPgorICAgIDx2YWx1ZT5OZXcgbWVzc2FnZShzKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE4IiBuYW1lPSJwb2xsX2Nsb3NlIj4KKyAgICA8dmFsdWU+Q2xvc2UgUG9sbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDE5IiBuYW1lPSJwb2xsX2Nsb3NlX2NvbmZpcm0iPgorICAgIDx2YWx1ZT5BcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gY2xvc2UgdGhpcyBQb2xsPyBObyBvbmUgd2lsbCBiZSBhYmxlIHRvIHZvdGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMCIgbmFtZT0icG9sbF9kZWxldGUiPgorICAgIDx2YWx1ZT5EZWxldGUgUG9sbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIxIiBuYW1lPSJwb2xsX2RlbGV0ZV9jb25maXJtIj4KKyAgICA8dmFsdWU+QXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIGRlbGV0ZSB0aGlzIFBvbGw/IFRoZSByZXN1bHRzIHdpbGwgYmUgZGVsZXRlZCBhcyB3ZWxsLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDIyIiBuYW1lPSJsYW5ndWFnZV9jb2RlIj4KKyAgICA8dmFsdWU+TGFuZ3VhZ2UgSVNPIENvZGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyMyIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX3Blcm1pc3Npb24iPgorICAgIDx2YWx1ZT5BbGxvdy9EZW55IHJpZ2h0IHRvIGdpdmUgZXhjbHVzaXZlIGF1ZGlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI0IiBuYW1lPSJhbGxvd19leGNsdXNpdmVfYXVkaW9fcGVybWlzc2lvbiI+CisgICAgPHZhbHVlPkFsbG93IHVzZXIgdG8gZ2l2ZSBleGNsdXNpdmUgYXVkaW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyNSIgbmFtZT0iZGVueV9leGNsdXNpdmVfYXVkaW9fcGVybWlzc2lvbiI+CisgICAgPHZhbHVlPkRlbnkgdXNlciB0byBnaXZlIGV4Y2x1c2l2ZSBhdWRpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI2IiBuYW1lPSJleGNsX2F1ZGlvIGFwcGx5IHNlbGYgb24gbWVzc2FnZSI+CisgICAgPHZhbHVlPndvdWxkIGxpa2UgdG8gZ2V0IGEgcGVybWlzc2lvbiBmb3IgZXhjbHVzaXZlIGF1ZGlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI3IiBuYW1lPSJleGNsX2F1ZGlvIGFwcGx5IG9mIG1lc3NhZ2UiPgorICAgIDx2YWx1ZT53YW50IHRoYXQgdGhlIG1vZGVyYXRvciBnaXZlcyBtZSBhIHBlcm1pc3Npb24gZm9yIGV4Y2x1c2l2ZSBhdWRpby48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQyOCIgbmFtZT0iZXhjbF9hdWRpbyBzdGF0dXMgaWNvbnMiPgorICAgIDx2YWx1ZT5HaXZlIGEgcGVybWlzc2lvbiBmb3IgZXhjbHVzaXZlIGF1ZGlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDI5IiBuYW1lPSJjYW1fcmVzb2x1dGlvbiI+CisgICAgPHZhbHVlPkNhbSByZXNvbHV0aW9uPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzAiIG5hbWU9ImNhbV9yZXNvbHV0aW9uX2luZm8iPgorICAgIDx2YWx1ZT5DaGFuZ2luZyB0aGUgcmVzb2x1dGlvbiBhZmZlY3RzIGJhbmR3aWR0aCwgYmlnZ2VyIHBpY3R1cmUgbmVlZHMgbW9yZSBiYW5kd2l0aCE8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzMSIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2Vycm9yIj4KKyAgICA8dmFsdWU+WW91IGRvbid0IGhhdmUgdGhlIHJpZ2h0IHRvIGdpdmUgeW91cnNlbGYgb3Igb3RoZXJzIGV4Y2x1c2l2ZSBhdWRpby4gWW91IG5lZWQgdG8gYXBwbHkgZm9yIHRoZSByaWdodCBmcm9tIHRoZSBtb2RlcmF0b3Igb3IgYXNrIHRoZSBtb2RlcmF0b3IgdG8gZ2l2ZSB5b3UgZXhjbHVzaXZlIGF1ZGlvLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMyIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fYXNrIj4KKyAgICA8dmFsdWU+SSB3b3VsZCBsaWtlIHRvIGdldCB0aGUgcmlnaHQgZm9yIGV4Y2x1c2l2ZSBhdWRpbzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDMzIiBuYW1lPSJleGNsdXNpdmVfYXVkaW9fYWN0aW9uIj4KKyAgICA8dmFsdWU+R2l2ZSBleGNsdXNpdmUgYXVkaW8gdG8gbWUgKGFsdGVybmF0aXZlbHkgY2xpY2sgb24geW91ciB2aWRlbyBwb2Qgb3IgcHJlc3MgRjEyKTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM0IiBuYW1lPSJtaWNybyBpcyBvbiI+CisgICAgPHZhbHVlPk1pY3JvcGhvbmUgaXMgb24hPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzUiIG5hbWU9Im1pY3JvIGlzIG9mZiI+CisgICAgPHZhbHVlPk1pY3JvcGhvbmUgaXMgbXV0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQzNiIgbmFtZT0iaGlkZV9jaGF0Ij4KKyAgICA8dmFsdWU+SGlkZSBjaGF0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0MzciIG5hbWU9ImhpZGVfYWN0aXZpdGllc19hbmRfYWN0aW9ucyI+CisgICAgPHZhbHVlPkhpZGUgYWN0aXZpdGllczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM4IiBuYW1lPSJoaWRlX2ZpbGVzX2V4cGxvcmVyIj4KKyAgICA8dmFsdWU+SGlkZSBmaWxlcyBleHBsb3JlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDM5IiBuYW1lPSJoaWRlX2FjdGlvbnNfbWVudSI+CisgICAgPHZhbHVlPkhpZGUgYWN0aW9ucyBtZW51PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDAiIG5hbWU9ImhpZGVfc2NyZWVuX3NoYXJpbmciPgorICAgIDx2YWx1ZT5IaWRlIHNjcmVlbiBzaGFyaW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDEiIG5hbWU9ImhpZGVfd2hpdGVib2FyZCI+CisgICAgPHZhbHVlPkhpZGUgd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQyIiBuYW1lPSJzaG93IG1pY3JvcGhvbmUgc3RhdHVzIj4KKyAgICA8dmFsdWU+U2hvdyBtaWNybyBzdGF0dXMgaW4gdmlkZW88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0MyIgbmFtZT0ibGF5b3V0X29wdGlvbnMiPgorICAgIDx2YWx1ZT5MYXlvdXQgb3B0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ0IiBuYW1lPSJjYWxlbmRhciBuZXcgYnV0dG9uIj4KKyAgICA8dmFsdWU+TmV3IEV2ZW50PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDUiIG5hbWU9ImNhbGVuZGFyIHBhc3N3b3JkIGluZm8gdGV4dCI+CisgICAgPHZhbHVlPlBhc3N3b3JkIHByb3RlY3RlZCBhcmUgdGhlIGxpbmtzIHRvIHRoZSBjb25mZXJlbmNlIHRoYXQgYXJlIHNlbmQgdG8gdGhlIHBhcnRpY2lwZW50cyB3aGVuIHlvdSBzYXZlIHRoZSBjYWxlbmRhciBldmVudCwgbm90IHRoZSByb29tISBUaGF0IG1lYW5zIGlmIHlvdSBzYXZlIHRoZSBldmVudCBtdWx0aXBsZSB0aW1lcyBidXQgd2l0aCBkaWZmZXJlbnQgcGFzc3dvcmRzIGV2ZXJ5IHBhcnRpY2lwZW50IHJlY2VpdmVzIGEgbmV3IGxpbmsgdGhhdCBoYXMgYSBkaWZmZXJlbnQgcGFzc3dvcmQuIEJ1dCBvbGQgbGlua3Mgc3RpbGwgd29yayBvbmNlIHNlbmQhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDYiIG5hbWU9ImNhbGVuZGFyIGVkaXQgYnV0dG9uIj4KKyAgICA8dmFsdWU+RWRpdCBkZXRhaWxzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NDciIG5hbWU9InNpcCBzaG93IGRpYWxlciI+CisgICAgPHZhbHVlPlNob3cgc2lwIGRpYWxlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDQ4IiBuYW1lPSJzaXAgY2FsbCI+CisgICAgPHZhbHVlPkNhbGw8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ0OSIgbmFtZT0iY2FsZW5kYXIgY29udGFjdCBsaXN0Ij4KKyAgICA8dmFsdWU+U2hvdyBjYWxlbmRhciBldmVudHMgb2YgY29udGFjdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUwIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5Zb3VyIGhvbWUhPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTEiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPlBsYW4geW91ciBtZWV0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDUyIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5XYXRjaCByZWNvcmRpbmcgYW5kIGludGVydmlld3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ1MyIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+Q2hvb3NlIGFuZCBzdGFydCBhIHdlYi1jb25mZXJlbmNlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTQiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSB1c2VycyBhbmQgcmlnaHRzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTUiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBjb25uZWN0aW9ucyBhbmQga2ljayB1c2VyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU2IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgdXNlcmdyb3VwczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU3IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2UgY29uZmVyZW5jZSByb29tczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDU4IiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5NYW5hZ2Ugc3lzdGVtIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NTkiIG5hbWU9InRvb2x0aXAgbWVudSI+CisgICAgPHZhbHVlPk1hbmFnZSBsYWJlbHMgYW5kIHdvcmRpbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2MCIgbmFtZT0idG9vbHRpcCBtZW51Ij4KKyAgICA8dmFsdWU+TWFuYWdlIExEQVAgYW5kIEFEUyBjb25maWd1cmF0aW9uczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYxIiBuYW1lPSJ0b29sdGlwIG1lbnUiPgorICAgIDx2YWx1ZT5FeHBvcnQvSW1wb3J0IFN5c3RlbSBCYWNrdXBzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjIiIG5hbWU9ImZpbGUgZXhwbG9yZXIiPgorICAgIDx2YWx1ZT5Zb3UgbmVlZCBtb2RlcmF0aW9uIG9yIHRoZSByaWdodCB0byBkcmF3IG9uIHdoaXRlYm9hcmQgdG8gdXBsb2FkLCBhZGQsIGRlbGV0ZSBvciBsb2FkIGZpbGVzIGFuZCBmb2xkZXJzLjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDYzIiBuYW1lPSJ3aGl0ZWJvYXJkIj4KKyAgICA8dmFsdWU+RWRpdCB0ZXh0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjQiIG5hbWU9InNhbHV0YXRpb24iPgorICAgIDx2YWx1ZT5Qcm9mPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjUiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UHVibGlzaDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDY2IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlN0YXJ0IFB1Ymxpc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2NyIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5TdG9wIFB1Ymxpc2g8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ2OCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5Ib3N0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NjkiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UHVibGlzaCBBcHA8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MCIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5QdWJsaXNoIElkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzEiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UmVkdWNlIHRoZSB3aWR0aCBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtb3ZlIGl0IGxlZnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3MiIgbmFtZT0ic2hhcmluZyBjbGllbnQiPgorICAgIDx2YWx1ZT5SZWR1Y2UgdGhlIGhlaWdodCBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtb3ZlIGl0IGJvdHRvbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDczIiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPlJlZHVjZSB0aGUgeCBvZiB0aGUgU2hhcmluZ1NjcmVlbiBiZWZvcmUgeW91IHRyeSB0byBtYWtlIGl0IHdpZGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzQiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UmVkdWNlIHRoZSB5IG9mIHRoZSBTaGFyaW5nU2NyZWVuIGJlZm9yZSB5b3UgdHJ5IHRvIG1ha2UgaXQgaGlnaGVyPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzUiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+RmlsbCB0aGVzZSBzZXR0aW5ncyBzdHJlYW0geW91ciBzY3JlZW4gZGF0YSB0byAzdGggcGFydHkgcHJvdmlkZXJzIGxpa2UganVzdGluLnR2PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0NzYiIG5hbWU9InNoYXJpbmcgY2xpZW50Ij4KKyAgICA8dmFsdWU+UGxlYXNlIHN0YXJ0IFNjcmVlbiBzaGFyaW5nIHRvIGJlIGFibGUgdG8gcHVibGlzaCBpdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc3IiBuYW1lPSJzaGFyaW5nIGNsaWVudCI+CisgICAgPHZhbHVlPk1vZGVyYXRvciBwZXJtaXNzaW9uIHJlcXVpcmVkIHRvIHN0YXJ0IHJlY29yZGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDc4IiBuYW1lPSJubyByaWdodCBmb3IgZXhjbHVzaXZlIGF1ZGlvIj4KKyAgICA8dmFsdWU+WW91IGRvbid0IGhhdmUgcGVybWlzc2lvbiB0byBhcHBseSBleGNsdXNpdmUgYXVkaW8gdG8gYW55IHBhcnRpY2lwYW50LiBZb3UgbmVlZCBtb2RlcmF0aW9uIHJvbGUgb3IgdGhlIHJpZ2h0IGZvciBleGNsdXNpdmUgYXVkaW8gdG8gbWFrZSBhbnkgbWljcm9waG9uZSBleGNsdXNpdmUgdHVybmVkIG9uLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ3OSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+VXBsb2FkIG5ldyBmaWxlIHRvIGZpbGUgZXhwbG9yZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+T3BlbiBuZXcgZGlhbG9nIHdpdGggc2hhcmluZyBzZXR0aW5nczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDgxIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5BbiBleGlzdGluZyBtb2RlcmF0b3IgbXVzdCBhcHByb3ZlIGl0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODIiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkFzayBtb2RlcmF0b3IgdG8gc2hhcmUgeW91ciB3ZWJjYW0vbWljcm88L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4MyIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+R2F0aGVyIGZlZWRiYWNrIGJ5IGNyZWF0aW5nIGEgcG9sbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDg0IiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5QYXN0IGFuZCBjdXJyZW50IHBvbGwgcmVzdWx0cyBhcyBjaGFydHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NSIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Vm90ZSBpZiB0aGVyZSBpcyBhIHBvbGwgZm9yIHRoaXMgY29uZmVyZW5jZSByb29tPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODYiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPkVkaXQgY2FtIGFuZCBtaWMgc2V0dGluZ3M8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4NyIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Q29uZmlybSBhbmQgbGVhdmUgdGhlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ4OCIgbmFtZT0iY29uZmVyZW5jZSBtZW51Ij4KKyAgICA8dmFsdWU+Q2FsbCBleHRlcm5hbCBwZW9wbGUgdmlhIFZvSVAvU0lQPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0ODkiIG5hbWU9ImNvbmZlcmVuY2UgbWVudSI+CisgICAgPHZhbHVlPlNlbmQgYW4gZW1haWwgd2l0aCBhIGRpcmVjdCBsaW5rIHRvIHRoaXMgcm9vbTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkwIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5DaGFuZ2UgeW91ciB3aGl0ZWJvYXJkIHNldHRpbmdzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTEiIG5hbWU9ImJhY2t1cCBhZG1pbiI+CisgICAgPHZhbHVlPk1heCB1cGxvYWQgc2l6ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkyIiBuYW1lPSJjb25mZXJlbmNlIG1lbnUiPgorICAgIDx2YWx1ZT5Bc2sgbW9kZXJhdG9yIHRvIHNoYXJlIHlvdXIgd2hpdGVib2FyZDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDkzIiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5TdGFydCBQcml2YXRlIENoYXQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTQ5NCIgbmFtZT0iYWxsX3ByaXZhdGVfY2hhdCI+CisgICAgPHZhbHVlPkFsbDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk1IiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5Zb3UgY2Fubm90IHN0YXJ0IGEgcHJpdmF0ZSBjaGF0IHdpdGggeW91cnNlbGYuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE0OTYiIG5hbWU9InByaXZhdGUgY2hhdCI+CisgICAgPHZhbHVlPllvdSd2ZSBhbHJlYWR5IHN0YXJ0ZWQgYSBwcml2YXRlIGNoYXQgd2l0aCB0aGlzIHBhcnRpY2lwYW50LjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk3IiBuYW1lPSJwcml2YXRlIGNoYXQiPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gZGVsZXRlIHRoaXMgcHJpdmF0ZSBjaGF0PzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk4IiBuYW1lPSJTZXJ2ZXJzIj4KKyAgICA8dmFsdWU+U2VydmVyczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNDk5IiBuYW1lPSJTZXJ2ZXJzIj4KKyAgICA8dmFsdWU+U2VydmVycyBwYXJ0aWNpcGF0aW5nIGluIGNsdXN0ZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMCIgbmFtZT0iU2VydmVyIG5hbWUiPgorICAgIDx2YWx1ZT5TZXJ2ZXIgTmFtZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTAxIiBuYW1lPSJTZXJ2ZXIgQWRkcmVzcyI+CisgICAgPHZhbHVlPlNlcnZlciBBZGRyZXNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDIiIG5hbWU9IlNlcnZlciBkZXRhaWxzIj4KKyAgICA8dmFsdWU+U2VydmVyIGRldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwMyIgbmFtZT0iU2VuZCBTTVMiPgorICAgIDx2YWx1ZT5TZW5kIFNNUzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA0IiBuYW1lPSJwdWJsaXNoaW5nX21lc3NhZ2UiPgorICAgIDx2YWx1ZT5QdWJsaXNoaW5nLiBVc2VyOjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA1IiBuYW1lPSJjbWRfbGluZV9hZG1pbiI+CisgICAgPHZhbHVlPlRvIHNhdmUgdGltZSBhbmQgaW50ZXJuZXQgdHJhZmZpYyB5b3UgY2FuIHVzZSBjb21tYW5kIGxpbmUgYWRtaW4gdG8gYmFja3VwL3Jlc3RvcmUvdXBncmFkZTpcbiAxKSBnbyB0byBPTSBpbnN0YWxsIGRpciAoZm9yIGV4LiAvb3B0L3JlZDUpIFxuIDIpIHN0b3AgT00gKGZvciBleC4gLi9yZWQ1LXNodXRkb3duLnNoKVxuIDMpIC4vYWRtaW4uc2ggLWIgLWZpbGUgfi90b2RheV9vbV9iYWNrdXAuemlwIChjcmVhdGUgYmFja3VwIG9mIGN1cnJlbnQgT00pXG4gNCkgZG93bmxvYWQgYXJjaGl2ZSB3aXRoIG5ldyBPTVxuIDUpIG12IC9vcHQvcmVkNSAvb3B0LnJlZDUuYmFrIChtb3ZlIHdvcmtpbmcgdmVyc2lvbiBvZiBPTSBqdXN0IGluIGNhc2UgOikpXG4gNikgZXh0cmFjdCBkb3dubG9hZGVkIE9NIHRvIHRoZSAvb3B0L3JlZDVcbiA3KSAuL2FkbWluLnNoIC1pIC1maWxlIH4vdG9kYXlfb21fYmFja3VwLnppcCAob3IgJy4vYWRtaW4uc2ggLWkgLWZpbGUgfi90b2RheV9vbV9iYWNrdXAuemlwIC0tZGItdHlwZSBteXNxbCAtLWRiLXVzZXIgb21fdXNlciAtLWRiLXBhc3Mgb21fdXNlcl9wYXNzJyBpbiBjYXNlIG9mIHlvdSBhcmUgdXNpbmcgbm9uLWRlZmF1bHQgREIgKVxuIDgpIHN0YXJ0IE9NXG48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwNiIgbmFtZT0icHVibGljX3Jvb21fdG9vbHRpcCI+CisgICAgPHZhbHVlPlJvb21zIGNvbW1vbiB0byBhbGwgdXNlcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTA3IiBuYW1lPSJwcml2YXRlX3Jvb21fdG9vbHRpcCI+CisgICAgPHZhbHVlPlJvb21zIGNvbW1vbiB0byB0aGUgY3VycmVudCB1c2VyIGdyb3VwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MDgiIG5hbWU9Im15X3Jvb21fdG9vbHRpcCI+CisgICAgPHZhbHVlPlJvb21zIG9mIHRoZSBjdXJyZW50IHVzZXI8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUwOSIgbmFtZT0iY3JlYXRlX25ld19yb29tIj4KKyAgICA8dmFsdWU+Q3JlYXRlL01vZGlmeSBhcHBvaW50bWVudCBzcGVjaWFsIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxMCIgbmFtZT0ibXVsdGlwbGVfYWRkcmVzc2VzIj4KKyAgICA8dmFsdWU+WW91IGNhbiBlbnRlciBtdWx0aXBsZSBhZGRyZXNzZXMgaW4gdGhlIGZvcm1hdDogZmlyc3RuYW1lMSBsYXN0bmFtZTEgJmx0O2VtYWlsMSZndDssImZpcnN0bmFtZTIgbGFzdG5hbWUyIiAmbHQ7ZW1haWwyJmd0OywnZmlyc3RuYW1lMyBsYXN0bmFtZTMnICZsdDtlbWFpbDMmZ3Q7LCAuLi48L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxMSIgbmFtZT0ic3RyZWFtX3ZvbHVtZSI+CisgICAgPHZhbHVlPkFkanVzdCBzdHJlYW0gdm9sdW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTIiIG5hbWU9Im1pY3JvcGhvbmVfdm9sdW1lIj4KKyAgICA8dmFsdWU+QWRqdXN0IG1pY3JvcGhvbmUgdm9sdW1lPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTMiIG5hbWU9ImNoYXRfbW9kZXJhdGVkIj4KKyAgICA8dmFsdWU+SXMgY2hhdCBtb2RlcmF0ZWQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUxNCIgbmFtZT0iY2hhdF9tb2RlcmF0ZWQiPgorICAgIDx2YWx1ZT5BbGxvdyBtZXNzYWdlPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTUiIG5hbWU9ImNoYXRfb3BlbmVkIj4KKyAgICA8dmFsdWU+Q2hhdCBwYW5lbCBvcGVuZWQgYnkgZGVmYXVsdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE2IiBuYW1lPSJmaWxlc19vcGVuZWQiPgorICAgIDx2YWx1ZT5GaWxlcyBwYW5lbCBvcGVuZWQgYnkgZGVmYXVsdDwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE3IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gc2VjdGlvbiBsYXN0cGluZyI+CisgICAgPHZhbHVlPkxhc3QgcGluZzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTE4IiBuYW1lPSJzZXJ2ZXIgYWRtaW4gc2VjdGlvbiBsYXN0cGluZyBpbmZvIj4KKyAgICA8dmFsdWU+RXZlcnkgc2xhdmUgc2VuZHMgYSBwaW5nIHRvIHRoZSBtYXN0ZXIgZXZlcnkgMyBzZWNvbmRzIChjb25maWd1cmFibGUpLiBTbGF2ZSBsYXN0UGluZyBtdXN0IGJlIHNtYWxsZXIgdGhlbiAxIG1pbnV0ZSBzbyB0aGF0IHRoZSBtYXN0ZXIgdXNlcyB0aGUgc2xhdmUuPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MTkiIG5hbWU9InNlcnZlciBhZG1pbiBwb3J0Ij4KKyAgICA8dmFsdWU+SFRUUCBQb3J0PC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjAiIG5hbWU9InNlcnZlciBhZG1pbiB1c2VyIj4KKyAgICA8dmFsdWU+VXNlciAoU09BUC1BY2Nlc3MpPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjEiIG5hbWU9InNlcnZlciBhZG1pbiBwYXNzd29yZCI+CisgICAgPHZhbHVlPlBhc3N3b3JkPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjIiIG5hbWU9InNlcnZlciBhZG1pbiB3ZWJhcHAgcGF0aCI+CisgICAgPHZhbHVlPldlYmFwcCBwYXRoPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjMiIG5hbWU9InNlcnZlciBhZG1pbiBwcm90b2NvbCI+CisgICAgPHZhbHVlPlByb3RvY29sPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjQiIG5hbWU9InNlcnZlciBhZG1pbiBwaW5nIHJ1bm5pbmciPgorICAgIDx2YWx1ZT5QaW5nIHJ1bm5pbmc8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyNSIgbmFtZT0ic2VydmVyIGFkbWluIGFjdGl2ZSI+CisgICAgPHZhbHVlPkFjdGl2ZTwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTI2IiBuYW1lPSJnZW5lcmF0ZV9oYXNoIj4KKyAgICA8dmFsdWU+R2VuZXJhdGUgVVJMPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjciIG5hbWU9Im5ldHdvcmsgdGVzdGluZyBsaW5rIj4KKyAgICA8dmFsdWU+TmV0d29yayB0ZXN0aW5nPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MjgiIG5hbWU9InJvb21fb3B0aW9ucyI+CisgICAgPHZhbHVlPkF1dG8gc2VsZWN0IGludGVydmlldyB2aWRlbyBwb2Q8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUyOSIgbmFtZT0iZm9udF91bmRlcmxpbmUiPgorICAgIDx2YWx1ZT5VbmRlcmxpbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMCIgbmFtZT0iZm9udF9zdHlsZSI+CisgICAgPHZhbHVlPkZvbnQgc3R5bGU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzMSIgbmFtZT0iYWxsb3dfZm9udF9zdHlsZXMiPgorICAgIDx2YWx1ZT5BbGxvdyBmb250IHN0eWxlczwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMyIiBuYW1lPSJmb250X2NvbG9yIj4KKyAgICA8dmFsdWU+Rm9udCBjb2xvcjwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTMzIiBuYW1lPSJoeXBlcmxpbmsiPgorICAgIDx2YWx1ZT5IeXBlcmxpbms8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNCIgbmFtZT0iY29ubmVjdGlvbiBhZG1pbiI+CisgICAgPHZhbHVlPlNob3cgc2Vzc2lvbiBzdGF0aXN0aWNzPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzUiIG5hbWU9ImNvbm5lY3Rpb24gYWRtaW4iPgorICAgIDx2YWx1ZT5TZXNzaW9uIGRldGFpbHM8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNiIgbmFtZT0ic3lzdGVtX2ltcG9ydCI+CisgICAgPHZhbHVlPlN5c3RlbSBpbXBvcnQ8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzNyIgbmFtZT0iaW5jbHVkZV9pbnRvX2JhY2t1cCI+CisgICAgPHZhbHVlPkluY2x1ZGUgdXBsb2FkZWQgZmlsZXMgYW5kIHJlY29yZGluZ3MgaW4gYmFja3VwPC92YWx1ZT4KKyAgPC9zdHJpbmc+CisgIDxzdHJpbmcgaWQ9IjE1MzgiIG5hbWU9InJvb21fYWRtaW5fc2lwIj4KKyAgICA8dmFsdWU+RW5hYmxlIFNJUCB0cmFuc3BvcnQgaW4gdGhlIHJvb208L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTUzOSIgbmFtZT0iZXhjbHVzaXZlX2F1ZGlvX2NvbmZpcm0iPgorICAgIDx2YWx1ZT5EbyB5b3UgcmVhbGx5IHdhbnQgdG8gcHJvdmlkZSB0aGlzIHVzZXIgYW4gZXhjbHVzaXZlIGF1ZGlvPzwvdmFsdWU+CisgIDwvc3RyaW5nPgorICA8c3RyaW5nIGlkPSIxNTQwIiBuYW1lPSJub190aW1lem9uZSI+CisgICAgPHZhbHVlPlBsZWFzZSBzcGVjaWZ5IHlvdXIgdGltZXpvbmU8L3ZhbHVlPgorICA8L3N0cmluZz4KKyAgPHN0cmluZyBpZD0iMTU0NSIgbmFtZT0iY29udGVudF9pc19zYXZpbmciPgorICAgIDx2YWx1ZT5Db250ZW50IGlzIFNhdmluZywgUGxlYXNlIHdhaXQuPC92YWx1ZT4KKyAgPC9zdHJpbmc+Cis8L2xhbmd1YWdlPgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9sengueHNkIGIvV2ViQ29udGVudC9sengueHNkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxNDZmNGYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L2x6eC54c2QKQEAgLTAsMCArMSwxNDc0MiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0NCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgIA0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAgICAJICANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAgdW5kZXIgdGhlIExpY2Vuc2UuDQorICANCistLT4NCis8eHM6c2NoZW1hIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiIAorICB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly9sb2NhbGhvc3Qvb3Blbmxhc3psby9sengiIAorICB4bWxuczpseng9Imh0dHA6Ly9sb2NhbGhvc3Qvb3Blbmxhc3psby9sengiPgorICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJib29sZWFuTGl0ZXJhbCI+CisgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOmJvb2xlYW4iLz4KKyAgPC94czpzaW1wbGVUeXBlPgorICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJjb2xvckxpdGVyYWwiPgorICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciLz4KKyAgPC94czpzaW1wbGVUeXBlPgorICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJudW1iZXJMaXRlcmFsIj4KKyAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6ZG91YmxlIi8+CisgIDwveHM6c2ltcGxlVHlwZT4KKyAgPHhzOnNpbXBsZVR5cGUgbmFtZT0ic2l6ZUxpdGVyYWwiPgorICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpkb3VibGUiPgorICAgICAgPHhzOm1pbkluY2x1c2l2ZSB2YWx1ZT0iMCIvPgorICAgIDwveHM6cmVzdHJpY3Rpb24+CisgIDwveHM6c2ltcGxlVHlwZT4KKyAgPHhzOnNpbXBsZVR5cGUgbmFtZT0iaW5oZXJpdGFibGVCb29sZWFuTGl0ZXJhbCI+CisgICAgPHhzOnVuaW9uIG1lbWJlclR5cGVzPSJseng6Ym9vbGVhbkxpdGVyYWwiPgorICAgICAgPHhzOnNpbXBsZVR5cGU+CisgICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+CisgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJpbmhlcml0Ii8+CisgICAgICAgIDwveHM6cmVzdHJpY3Rpb24+CisgICAgICA8L3hzOnNpbXBsZVR5cGU+CisgICAgPC94czp1bmlvbj4KKyAgPC94czpzaW1wbGVUeXBlPgorICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJjb25zdHJhaW50Ij4KKyAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4KKyAgICAgIDx4czpwYXR0ZXJuIHZhbHVlPSIkKHN0eWxlfHBhdGh8aW1tZWRpYXRlbHl8b25jZXxhbHdheXMpP1x7LipcfSIvPgorICAgIDwveHM6cmVzdHJpY3Rpb24+CisgIDwveHM6c2ltcGxlVHlwZT4KKyAgPHhzOnNpbXBsZVR5cGUgbmFtZT0iYm9vbGVhbiI+CisgICAgPHhzOnVuaW9uIG1lbWJlclR5cGVzPSJseng6Ym9vbGVhbkxpdGVyYWwgbHp4OmNvbnN0cmFpbnQiPgorICAgIDx4czpzaW1wbGVUeXBlPgorICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgorICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibnVsbCIvPgorICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgorICAgICAgPC94czpzaW1wbGVUeXBlPgorICAgIDwveHM6dW5pb24+CisgIDwveHM6c2ltcGxlVHlwZT4KKyAgPHhzOnNpbXBsZVR5cGUgbmFtZT0iYm9vbGVhbk9yTnVsbCI+CisgICAgPHhzOnVuaW9uIG1lbWJlclR5cGVzPSJseng6Ym9vbGVhbiI+CisgICAgICA8eHM6c2ltcGxlVHlwZT4KKyAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KKyAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im51bGwiLz4KKyAgICAgICAgPC94czpyZXN0cmljdGlvbj4KKyAgICAgIDwveHM6c2ltcGxlVHlwZT4KKyAgICA8L3hzOnVuaW9uPgorICA8L3hzOnNpbXBsZVR5cGU+CisgIDx4czpzaW1wbGVUeXBlIG5hbWU9ImNvbG9yIj4KKyAgICA8eHM6dW5pb24gbWVtYmVyVHlwZXM9Imx6eDpjb2xvckxpdGVyYWwgbHp4OmNvbnN0cmFpbnQiLz4KKyAgPC94czpzaW1wbGVUeXBlPgorICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJleHByZXNzaW9uIj4KKyAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIi8+CisgIDwveHM6c2ltcGxlVHlwZT4KKyAgPHhzOnNpbXBsZVR5cGUgbmFtZT0icmVmZXJlbmNlIj4KKyAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIi8+CisgIDwveHM6c2ltcGxlVHlwZT4KKyAgPHhzOnNpbXBsZVR5cGUgbmFtZT0ibnVtYmVyIj4KKyAgICA8eHM6dW5pb24gbWVtYmVyVHlwZXM9Imx6eDpudW1iZXJMaXRlcmFsIGx6eDpjb25zdHJhaW50IHhzOnN0cmluZyIvPgorICA8L3hzOnNpbXBsZVR5cGU+CisgIDx4czpzaW1wbGVUeXBlIG5hbWU9InRva2VuIj4KKyAgICA8eHM6dW5pb24gbWVtYmVyVHlwZXM9InhzOnRva2VuIi8+CisgIDwveHM6c2ltcGxlVHlwZT4KKyAgPHhzOnNpbXBsZVR5cGUgbmFtZT0ic2l6ZSI+CisgICAgPHhzOnVuaW9uIG1lbWJlclR5cGVzPSJseng6c2l6ZUxpdGVyYWwgbHp4OmNvbnN0cmFpbnQiLz4KKyAgPC94czpzaW1wbGVUeXBlPgorICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJudW1iZXJFeHByZXNzaW9uIj4KKyAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIi8+CisgIDwveHM6c2ltcGxlVHlwZT4KKyAgPHhzOnNpbXBsZVR5cGUgbmFtZT0ic2l6ZUV4cHJlc3Npb24iPgorICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciLz4KKyAgPC94czpzaW1wbGVUeXBlPgorICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJjc3MiPgorICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciLz4KKyAgPC94czpzaW1wbGVUeXBlPgorICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJvcGFjaXR5Ij4KKyAgICA8eHM6dW5pb24gbWVtYmVyVHlwZXM9Imx6eDpjb25zdHJhaW50Ij4KKyAgICAgIDx4czpzaW1wbGVUeXBlPgorICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6ZG91YmxlIj4KKyAgICAgICAgICA8eHM6bWluSW5jbHVzaXZlIHZhbHVlPSIwLjAiLz4KKyAgICAgICAgICA8eHM6bWF4SW5jbHVzaXZlIHZhbHVlPSIxLjAiLz4KKyAgICAgICAgPC94czpyZXN0cmljdGlvbj4KKyAgICAgIDwveHM6c2ltcGxlVHlwZT4KKyAgICA8L3hzOnVuaW9uPgorICA8L3hzOnNpbXBsZVR5cGU+CisgIDx4czpzaW1wbGVUeXBlIG5hbWU9InBlcmNlbnRhZ2UiPgorICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPgorICAgICAgPHhzOnBhdHRlcm4gdmFsdWU9IihcZCsoLlxkPyl8LlxkKyklIi8+CisgICAgPC94czpyZXN0cmljdGlvbj4KKyAgPC94czpzaW1wbGVUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0icGFzc3Rocm91Z2giIHR5cGU9Imx6eDpwYXNzdGhyb3VnaCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFByb3ZpZGVzIGEgd2F5IHRvIGltcG9ydCBTV0YxMCBkZWNsYXJhdGlvbnMuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InBhc3N0aHJvdWdoIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpncm91cCByZWY9Imx6eDp0b3BMZXZlbEVsZW1lbnRzIiAvPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ3aGVuIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBQcm92aWRlcyBhIHdheSB0byBpbXBvcnQgU1dGMTAgZGVjbGFyYXRpb25zLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InN0eWxlZHRleHQiIHR5cGU9Imx6eDpzdHlsZWR0ZXh0IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQSB0ZXh0IHN1YmNsYXNzIHdoaWNoIGFsbG93cyB1c2Ugb2YgdGV4dCBzdHlsZXMKKyAgICAgICAgQFNUQVJUX0NPREUKKyAgICAgICAgICAgICZsdDtzdHlsZWR0ZXh0IHRleHQ9ImhlbGxvIiBzdHlsZT0ibXl0ZXh0c3R5bGUiIC8mZ3Q7CisgICAgICAgIEBFTkRfQ09ERQorICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InN0eWxlZHRleHQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp0ZXh0Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3R5bGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHNob3VsZCBiZSBhbiBvYmplY3Qgb2YgdHlwZSAidGV4dHN0eWxlIiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJtZW51YnV0dG9uIiB0eXBlPSJseng6bWVudWJ1dHRvbiIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibWVudWJ1dHRvbiIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmJ1dHRvbiI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibHplZGl0Y29tYm9ib3giIHR5cGU9Imx6eDpsemVkaXRjb21ib2JveCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibHplZGl0Y29tYm9ib3giIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpsemNvbWJvYm94Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ieV9vZmZzZXQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Inhfb2Zmc2V0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ3aWR0aF9vZmZzZXQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iLTkiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJoZWlnaHRfb2Zmc2V0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Ii0zIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ2c2xpZGVydGh1bWIiIHR5cGU9Imx6eDp2c2xpZGVydGh1bWIiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InZzbGlkZXJ0aHVtYiIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmJ1dHRvbiI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNob3d2YWx1ZSIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkcmFnX21pbiIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRyYWdfbWF4IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJjbG9zZWJveCIgdHlwZT0ibHp4OmNsb3NlYm94IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgdGhlIGNsb3NlYm94IGNsYXNzIGhhcyBpdHMgb3duIHJlc291cmNlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImNsb3NlYm94IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZWJ1dHRvbiI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibXlkYXkiIHR5cGU9Imx6eDpteWRheSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibXlkYXkiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNlZGF0ZXBpY2tlcmRheSI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0icmFkaW9ncm91cCIgdHlwZT0ibHp4OnJhZGlvZ3JvdXAiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InJhZGlvZ3JvdXAiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNlbGlzdCI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iVGVzdCIgdHlwZT0ibHp4OlRlc3QiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKworICBUZXN0IGlzIHRoZSBhYnN0cmFjdCBpbnRlcmZhY2UgY2xhc3MgZm9yIGFsbCBMWlVuaXQgdGVzdHMuCisKKyAgSXQgYWNjdW11bGF0ZXMgdGhlIHJlc3VsdHMgb2YgdGhlIHRlc3QgYW5kIGRlZmluZXMgdGhlIHZhcmlvdXMKKyAgYXNzZXJ0IG1ldGhvZHMgdGhhdCBjYW4gYmUgdXNlZCB0byBpbXBsZW1lbnQgZWFjaCB0ZXN0LgorCisgICZsdDt4cmVmIGxpbmtlbmQ9Imx6LlRlc3RDYXNlIi8mZ3Q7IGFuZCAmbHQ7eHJlZiBsaW5rZW5kPSJsei5UZXN0UmVzdWx0Ii8mZ3Q7IGV4dGVuZCB0aGlzIGNsYXNzIHRvIHByb3ZpZGUKKyAgZnVuY3Rpb25hbGl0eS4KKzwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlRlc3QiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpEZWJ1Z09iamVjdCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZvcm1hdHRlciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJuZXcgbHoudGV4dCgpIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJiYXNlcmFkaW9ncm91cCIgdHlwZT0ibHp4OmJhc2VyYWRpb2dyb3VwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQ2xhc3MgYmFzZXJhZGlvZ3JvdXA6IGEgY2xhc3MgcmVwcmVzZW50aW5nIHRoZSBzZWxlY3RlZCByYWRpb2J1dHRvbiwKKyAgICAgICAgICB0aGF0IGNhbiBoYXZlIG1hbnkgcmFkaW9idXR0b25zIGFzc29jaWF0ZWQgd2l0aCBpdCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJiYXNlcmFkaW9ncm91cCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmJhc2Vmb3JtaXRlbSI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZXZlbnQiIHR5cGU9Imx6eDpldmVudCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBzZW5kZXIgaW4gTGFzemxvJ3MgcG9pbnQtdG8tcG9pbnQgZXZlbnQgc3lzdGVtLgorRXZlbnRzIHVuZGVybHkgbW9zdCBvZiB0aGUgZnVuY3Rpb25hbGl0eSBpbiBPcGVuTGFzemxvIGFwcGxpY2F0aW9ucy4gVW5saWtlIGV2ZW50cyBpbiBzaW1pbGFyIHN5c3RlbXMsIE9wZW5MYXN6bG8ncyBldmVudHMgYXJlIHBvaW50LXRvLXBvaW50LCBtZWFuaW5nIHRoYXQgdGhlcmUgaXMgbm8gZ2VuZXJhbCBicm9hZGNhc3QgbWVjaGFuaXNtIGZvciBldmVudHMsIGFuZCBldmVudHMgZG8gbm90IHRyaWNrbGUgdXAgb3IgZG93biB0aGUgaW5zdGFuY2UgaGllcmFyY2h5LiBJbnN0ZWFkLCBvYmplY3RzIGNhbGxlZCAmbHQ7aGFuZGxlciZndDtzIHVzZSBMekRlbGVnYXRlLnJlZ2lzdGVyKCkgdG8gcmVnaXN0ZXIgdG8gcmVjZWl2ZSBldmVudHMuCisKK0FuIGV2ZW50IGlzIGltcGxpY2l0bHkgZGVjbGFyZWQgZm9yIGV2ZXJ5IGF0dHJpYnV0ZSBvZiBhIGNsYXNzIG9yIGluc3RhbmNlIGFuZCBzZW50IHdoZW4gdGhhdCBhdHRyaWJ1dGUgaXMgY2hhbmdlZC4gU28sIGZvciBpbnN0YW5jZSwgaWYgYSBjbGFzcyBoYXMgYW4gYXR0cmlidXRlIGZvbywgeW91IGNhbiByZWNlaXZlIGV2ZW50cyB3aGVuIGZvbyBjaGFuZ2VzIGJ5IHJlZ2lzdGVyaW5nIGZvciB0aGUgb25mb28gZXZlbnQuCisKK0V2ZW50cyBhcmUgc2VudCB3aXRoIGEgc2luZ2xlIGFyZ3VtZW50LCB3aGljaCB1c3VhbGx5IGNvbnZleXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHByb3BlcnR5IHRoYXQgY2hhbmdlZC4gVGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgdGhlIEx6RXZlbnRhYmxlLnNldEF0dHJpYnV0ZSgpIG1ldGhvZCBpcyB0byBzZXQgdGhlIG5hbWVkIHByb3BlcnR5IGFuZCBzZW5kIHRoZSBldmVudCBjYWxsZWQgIm9uIiArIHByb3BlcnR5LiBUaGlzIGlzIGdlbmVyYWwgbWVjaGFuaXNtIHRoYXQgdXBkYXRlcyBjb25zdHJhaW50cyBpbiBhIE9wZW5MYXN6bG8gcHJvZ3JhbXMuIEZvciBpbnN0YW5jZSwgd2hlbiBhIHZpZXcgY2hhbmdlcyBpdHMgeCBwb3NpdGlvbiwgaXQgc2VuZHMgdGhlIGV2ZW50IG9ueCB3aXRoIHRoZSBuZXcgdmFsdWUgZm9yIGl0cyB4IHByb3BlcnR5LgorCitFeGFtcGxlOgorJmx0O2hhbmRsZXIgbmFtZT0ib25hdmFsdWUiIHJlZmVyZW5jZT0iZXZlbnRTZW5kZXIiIGFyZ3M9InYiJmd0OworICB0aGlzLnNldEF0dHJpYnV0ZSgneCcgLCB2KTsKKyZsdDsvaGFuZGxlciZndDsgCisgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iZXZlbnQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmdyb3VwIHJlZj0ibHp4OnRvcExldmVsRWxlbWVudHMiIC8+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBuYW1lIG9mIHRoZSBldmVudCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImluaXR0aW1lciIgdHlwZT0ibHp4OmluaXR0aW1lciIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iaW5pdHRpbWVyIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0idGFic2NvbnRlbnQiIHR5cGU9Imx6eDp0YWJzY29udGVudCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idGFic2NvbnRlbnQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNldGFic2NvbnRlbnQiPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJhc2Vmb3JtaXRlbSIgdHlwZT0ibHp4OmJhc2Vmb3JtaXRlbSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYmFzZWZvcm1pdGVtIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZXZhbHVlY29tcG9uZW50Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3VibWl0bmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgbmFtZSB1c2VkIHdoZW4gc3VibWl0dGluZyB0aGUgZGF0YSBvZiB0aGUgZm9ybSBpdGVtLgorICAgICAgICAgICAgICBJZiBubyBzdWJtaXRuYW1lIGlzIGdpdmVuIGJlZm9yZSBvbmluaXQsIHRoZSAnbmFtZScgYXR0cmlidXRlIGlzIHVzZWQuCisgICAgICAgICAgICAgIFVubGlrZSB0aGUgbmFtZSBhdHRyaWJ1dGUsIHN1Ym1pdG5hbWUgbWF5IGJlIGNoYW5nZWQgYXQgcnVudGltZS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN1Ym1pdCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9IiR7ZW5hYmxlZH0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJZiBzdWJtaXQgaXMgdHJ1ZSwgdGhlbiB0aGUgdmFsdWUgb2YgdGhpcyBlbGVtZW50IHdpbGwgYmUgc3VibWl0dGVkCisgICAgICAgICAgICAgIHdpdGggdGhlIGZvcm0uICBCeSBkZWZhdWx0LCBzdWJtaXQgaXMgdHJ1ZSB3aGVuIGVuYWJsZWQuICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm9sbGJhY2t2YWx1ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgUm9sbGJhY2sgdmFsdWUgZm9yIHRoZSBiYXNlZm9ybWl0ZW0uIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbnZhbHVlIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBFdmVudCBzZW50IHdoZW5ldmVyIGNoZWNrYm94IHZhbHVlIGNoYW5nZXMuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmNoYW5nZWQiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEV2ZW50IHNlbnQgd2hlbiBiYXNlZm9ybWl0ZW0gaXMgY2hhbmdlZC4gT25seSBzZW50IG9uY2Ugd2hlbiB0cnVlCisgICAgICAgICAgICAgIG9yIG9uY2Ugd2hlbiBmYWxzZS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imlnbm9yZWZvcm0iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJZiB0cnVlLCB0aGUgY29tcG9uZW50IHdpbGwgbm90IGluZm9ybSBpdHMgcGFyZW50IGZvcm0KKyAgICAgICAgICAgICB0aGF0IGl0IGhhcyBjaGFuZ2VkLiBVc2VmdWwgaW4gY29uanVuY3Rpb24gd2l0aCBzdWJtaXQ9ZmFsc2UgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYW5nZWQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBCb29sZWFuIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSBiYXNlZm9ybWl0ZW0gd2FzIGNoYW5nZWQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImVtYWlsdmFsaWRhdG9yIiB0eXBlPSJseng6ZW1haWx2YWxpZGF0b3IiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImVtYWlsdmFsaWRhdG9yIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZXZhbGlkYXRvciI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRvb21hbnlhdG1hcmtFcnJvcnN0cmluZyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJUb28gbWFueSBAIGNoYXJhY3RlcnMgaW4geW91ciBlbWFpbCBhZGRyZXNzLiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1pc3NpbmdwZXJpb2RFcnJvcnN0cmluZyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJUaGUgZG9tYWluIGluIHlvdXIgZW1haWwgYWRkcmVzcyBpcyBtaXNzaW5nIGEgcGVyaW9kLiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1pc3NpbmdhdG1hcmtFcnJvcnN0cmluZyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJNaXNzaW5nIHRoZSBAIGNoYXJhY3RlciBpbiB5b3VyIGVtYWlsIGFkZHJlc3MuIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW5jb3JyZWN0bHlkb21haW5FcnJvcnN0cmluZyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJUaGUgZG9tYWluIGluIHlvdXIgZW1haWwgYWRkcmVzcyBpcyBpbmNvcnJlY3RseSBmb3JtYXR0ZWQuIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJkYXRhcG9pbnRzIiB0eXBlPSJseng6ZGF0YXBvaW50cyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEBrZXl3b3JkcyBwcml2YXRlCisgICAgICAgICAgZGF0YXBvaW50cyBmb3IgdGhlIGNoYXJ0IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImRhdGFwb2ludHMiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ2YWx1ZXBvaW50cyIgdHlwZT0ibHp4OnZhbHVlcG9pbnRzIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisKKyAgICAgICBSZXByZXNlbnRzIGEgdmFsdWUgcG9pbnQgaW4gdGhlIGNoYXJ0CisgICAgICAgQGFjY2VzcyBwdWJsaWMKKyAgICAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ2YWx1ZXBvaW50cyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0aXAiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgdGhlIHRvb2x0aXAgdmFsdWUgd2lsbCBiZSBkaXNwbGF5IHdoZW4gdGhlIG1vdXNlIG92ZXIgdGhlIGxpbmUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxhYmVsIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHRoZSBsYWJlbCB3aWxsIGJlIGRpc3BsYXkgbmV4dCB0byB0aGUgbGluZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGF0YXkiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHRoZSB5IHBvaW50IHdpbGwgYmUgZHJhdyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGF0YXgiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHRoZSB4IHBvaW50IHdpbGwgYmUgZHJhdyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJzdHlsaXNoYnV0dG9uIiB0eXBlPSJseng6c3R5bGlzaGJ1dHRvbiIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ic3R5bGlzaGJ1dHRvbiIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmJhc2VidXR0b24iPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0aW50IiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9IjB4RDlEQ0Y1IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQ29udHJvbCB0aGUgbG9vayBvZiB0aGUgYnV0dG9uLiBUaGVzZSBhdHRyaWJ1dGVzIGNhbiBhbmQgc2hvdWxkCisgICAgICAgICAgICAgIGJlIGNvbnRyb2xsZWQgd2l0aCBjc3MuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZXh0eSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgeSBwb3NpdGlvbiBvZiB0ZXh0LCBmb3IgZmluZSB0dW5pbmcgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNob3dyaWdodGVkZ2UiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNob3dyaWdodGJvcmRlciIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+Cisgd2hldGhlciB0byBzaG93IGhpZ2hsaWdodCBvbiBsZWZ0IHNpZGUgb2YgYnV0dG9uIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzaG93bGVmdGVkZ2UiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNob3dsZWZ0Ym9yZGVyIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyB3aGV0aGVyIHRvIHNob3cgc2hhZG93IG9uIHJpZ2h0IHNpZGUgb2YgYnV0dG9uIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyaWdodHJlc291cmNlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9InN0eWxpc2hidXR0b25fcmlnaHRfcnNjIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWlkZGxlcmVzb3VyY2UiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ic3R5bGlzaGJ1dHRvbl9taWRkbGVfcnNjIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGVmdHJlc291cmNlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9InN0eWxpc2hidXR0b25fbGVmdF9yc2MiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpY29ueSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgeSBwb3NpdGlvbiBvZiBpY29uLCBmb3IgZmluZSB0dW5pbmcuCisgICAgICAgICAgICBpZiBub3Qgc3BlY2lmaWVkLCBjZW50ZXIgdGhlIGljb24gdmVydGljYWxseS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imljb25uYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGljb24gcmVzb3VyY2UgbmFtZSBwcmVmaXggPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZvbnRjb2xvciIgdHlwZT0ibHp4OmNvbG9yIiBkZWZhdWx0PSIweDM3M0I1NiIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZmlzaGV5ZSIgdHlwZT0ibHp4OmZpc2hleWUiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImZpc2hleWUiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3RhcnRfc2l6ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIyNCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImhhbG9fc2l6ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIyMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImV4cGFuZGVkX3NpemUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMTAwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJfc2NydWJzdGF0ZSIgdHlwZT0ibHp4Ol9zY3J1YnN0YXRlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisKKyAgIGVuY2xvc2luZyB2aWV3IG11c3QgaGF2ZSB0aGUgZm9sbG93aW5nIGF0dHJpYnV0ZXM6CisgICBzdHJlYW0gIHRoZSBzdHJlYW0gdG8gY29udHJvbCwgYXNzdW1lIGl0IGlzIHBhdXNlZAorICAgbWluICAgICBtaW4gJ3gnIHZhbHVlCisgICBtYXggICAgIG1heCAneCcgdmFsdWUKKworICAgQGtleXdvcmRzIHByaXZhdGUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iX3NjcnVic3RhdGUiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpzdGF0ZSI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IngiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0idGhpcy5fX3NjcnVic3RhdGVfZ2V0bmV3cG9zKCAgICAgICAgICAgICAgICAgdGhpcy5pbW1lZGlhdGVwYXJlbnQuZ2V0TW91c2UoICd4JyApICsgdGhpcy5fX3NjcnVic3RhdGVfeGRvZmZzZXQpIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJtaWNyb3Bob25lIiB0eXBlPSJseng6bWljcm9waG9uZSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibWljcm9waG9uZSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4Om1lZGlhZGV2aWNlIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3RyZWFtIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBNZWRpYXN0cmVhbSB0byBhc3NvY2lhdGUgd2l0aCB0aGUgbWljcm9waG9uZSwgZm9yIGF1ZGlvIHJlY29yZGluZy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNpbGVuY2V0aW1lb3V0IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSItMSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFNpbGVuY2UgdGltZW91dCBpbiBtcywgdGhlIGFtb3VudCBvZiBzaWxlbnQgdGltZSBzaWduaWZ5aW5nIHRoYXQgCisgICAgICAgICAgICAgIHNpbGVuY2UgaGFzIGFjdHVhbGx5IGJlZ3VuLiAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNpbGVuY2VsZXZlbCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMTAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBTaWxlbmNlIGxldmVsLCAwLTEwMCwgdGhlIGFtb3VudCBvZiBzb3VuZCByZXF1aXJlZCB0byBhY3RpdmF0ZSAKKyAgICAgICAgICAgICAgdGhlIG1pY3JvcGhvbmUuICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmF0ZSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iOCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFJhdGUgaW4ga2h6IHRoZSBtaWNyb3Bob25lIGlzIHVzaW5nIHRvIGNhcHR1cmUgc291bmQsIGVpdGhlciA1LCA4LCAxMSwgMjIsIG9yIDQ0LgorICAgICAgICAgICAgICBAa2V5d29yZHMgZmluYWwgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsZXZlbCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEF1ZGlvIGxldmVsLCAwLTEwMCwgdGhlIGFtb3VudCBvZiBzb3VuZCBkZXRlY3RlZCBieSB0aGlzIG1pY3JvcGhvbmUuCisgICAgICAgICAgICAgIFJlc2V0IHRvIDAgd2hlbiB0aGVyZSBpcyBubyBhdWRpbyAobm8gYWN0aXZpdHkgb3Igbm90IGFsbG93ZWQpLgorICAgICAgICAgICAgICBAa2V5d29yZHMgcmVhZG9ubHkgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImdhaW4iIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjUwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIGFtb3VudCB0aGUgbWljcm9waG9uZSBib29zdHMgdGhlIHNpZ25hbC4gIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmcmFtZXNwZXJwYWNrZXQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjYiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBOdW1iZXIgb2YgU3BlZXggc3BlZWNoIGZyYW1lcyB0cmFuc21pdHRlZCBpbiBhIHBhY2tldC4KKyAgICAgICAgICAgICAgQGtleXdvcmRzIGZpbmFsICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZW5jb2RlcXVhbGl0eSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iNiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBxdWFsaXR5IG9mIGVuY29kZWQgc3BlZWNoIHF1YWxpdHkgd2hlbiB1c2luZyB0aGUgU3BlZXggY29kZWMuCisgICAgICAgICAgICAgIFBvc3NpYmxlIHZhbHVlcyBhcmUgZnJvbSAwIHRvIDEwLgorICAgICAgICAgICAgICBAa2V5d29yZHMgZmluYWwgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlY2hvc3VwcHJlc3Npb24iIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSWYgdHJ1ZSwgdGhlIG1pY3JvcGhvbmUgd2lsbCBhdHRlbXB0IHRvIHVzZSBlY2hvIHN1cHByZXNzaW9uLiAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvZGVjIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Ik5lbGx5TW9zZXIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgY29kZWMgdG8gdXNlLCBlaXRoZXIgJ05lbGx5TW9zZXInIG9yICdTcGVleCcuCisgICAgICAgICAgICAgIEBrZXl3b3JkcyBmaW5hbCAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iaW1hZ2UiIHR5cGU9Imx6eDppbWFnZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGltYWdlIHJlcHJlc2VudHMgYW4gaW1hZ2UgdGhhdCBjYW4gYmUgbG9hZGVkIGF0IHJ1bnRpbWUsIGVpdGhlciBieSBzcGVjaWZ5aW5nIGEgVVJMIGRpcmVjdGx5IG9yIGJ5IGJpbmRpbmcgdG8gZGF0YTwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImltYWdlIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNyYyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgVVJMIHRvIGxvYWQgdGhlIGltYWdlIGZyb20uICBNYXkgYmUgc2V0IGRpcmVjdGx5IG9uIHRoaXMgYXR0cmlidXRlIG9yIGluZGlyZWN0bHkgYnkgc3BlY2lmeWluZyBhIGRhdGFwYXRoIGZvciB0aGlzIHRhZy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InByZWZpeCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBhbiBvcHRpb25hbCBwcmVmaXggVVJMIHRvIGxvYWQgZnJvbS4gSWYgc3BlY2lmaWVkLCB0aGUgdXJsIHdpbGwgYmUgYXBwZW5kZWQgdG8gdGhpcyBwcmVmaXguPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uc3JjIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYXN0bG9hZGVkIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBsYXN0IFVSTCBsb2FkZWQgYnkgdGhpcyBpbWFnZSB0YWcuICBVc2VkIHRvIHByZXZlbnQgdGhlIHNhbWUgVVJMIGZyb20gbG9hZGluZyB0d2ljZS4gIAorICAgICAgICAgICAgICBAa2V5d29yZHMgcmVhZG9ubHk8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZm9yY2VyZWxvYWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIElmIHRydWUsIHRoZSBzYW1lIFVSTCB3aWxsIGJlIHJlbG9hZGVkLiAgSWYgZmFsc2UsIHRoZSBzYW1lIFVSTCB3aWxsIG5vdCBsb2FkIG11bHRpcGxlIHRpbWVzLiAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0idG9vbHRpcE1hbmFnZXIiIHR5cGU9Imx6eDp0b29sdGlwTWFuYWdlciIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCisgICAgICBAdG9waWMgSW5jdWJhdG9yCisgICAgICBAc3VidG9waWMgVG9vbHRpcCBNYW5hZ2VyCisgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRvb2x0aXBNYW5hZ2VyIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRvb2x0aXBfb2JqIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbk1vdXNlT3ZlckRlbGVnYXRlQXJyYXkiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iW10iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBAYWNjZXNzIHByaXZhdGUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uTW91c2VPdXREZWxlZ2F0ZUFycmF5IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IltdIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQGFjY2VzcyBwcml2YXRlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtZXNzYWdlcyIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisKKyAgICAgIEB0b3BpYyBJbmN1YmF0b3IKKyAgICAgIEBzdWJ0b3BpYyBUb29sdGlwIE1hbmFnZXIKKyAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1lc3NhZ2VNYXAiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iW10iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBAYWNjZXNzIHByaXZhdGUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRlbGF5IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxMDAwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29tcG9uZW50X2lkZW50aWZpZXIiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZGF0YWJhciIgdHlwZT0ibHp4OmRhdGFiYXIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBAa2V5d29yZCBwcml2YXRlCisgICAgUmVuZGVyIGEgYmFyIG9yIGNvbHVtbiBvZiBkYXRhIGluIHRoZSBjaGFydDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImRhdGFiYXIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idG90YWxzZXRzIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVG90YWwgbnVtYmVyIG9mIGJhciBzZXRzLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idG9vbHRpcCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSWYgdHJ1ZSwgd2lsbCBkaXNwbGF5IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgZGF0YQorICAgICAgICAgICAgaW4gYSBwb3B1cCB3aGVuIHRoZSBjdXJzb3IgaXMgcGxhY2VkIG92ZXIgYSBiYXIuCisgICAgICAgICAgICAoVG9vbHRpcCB0byBiZSBkZXZlbG9wZWQgaW4gYSBmdXR1cmUgdmVyc2lvbi4pIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzaWJsaW5nYmFycyIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBudW1iZXIgb2Ygc2libGluZyBiYXJzLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZHJhd2F4aXMiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ieCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBjaGFydCdzIGRpcmVjdGlvbi4gIChTZXQgaGVyZSBhcyB3ZWxsIGZvciBlYXNpZXIgcmVmZXJlbmNlLikgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRhdGFyZXNvdXJjZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgaW1hZ2UgdG8gYmUgbG9hZGVkIG92ZXIgdGhlIGJhciwgaWYgYW55LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYnZhbHVlIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgTnVtZXJpY2FsIHZhbHVlIG9mIGJhci4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJhcnNwYWNlIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHNwYWNlIGJldHdlZW4gYmFycy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJhcnNldCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoaXMgYmFyJ3MgZ3JvdXAncyBzZXQgbnVtYmVyLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYmFybnVtYmVyIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhpcyBiYXIncyBudW1iZXIgaW4gaXRzIHNlcmllcy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFuaW1hdGlvbmluaXQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQW5pbWF0aW9uIHN0eWxlIGZvciB3aGVuIGJhcnMgYXBwZWFyLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJiYXNldmFsaWRhdG9yIiB0eXBlPSJseng6YmFzZXZhbGlkYXRvciIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYmFzZXZhbGlkYXRvciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0cmltIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlcXVpcmVkRXJyb3JzdHJpbmciIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0idGhpcyBmaWVsZCBpcyByZXF1aXJlZC4iID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZXF1aXJlZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNmb3JtdmFsaWRhdG9yIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzZXJyb3IiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlubmVyY29tcG9ybmVudCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZXJyb3JzdHJpbmciIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJhdXRvY29tcGxldGVjb21ib2JveCIgdHlwZT0ibHp4OmF1dG9jb21wbGV0ZWNvbWJvYm94IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJhdXRvY29tcGxldGVjb21ib2JveCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkZWZhdWx0dGV4dCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJUeXBlIEhlcmUiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb250ZW50cGF0aCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWN0dWFsbHlUeXBlZCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImxhYmVsZWRpbnB1dHRleHQiIHR5cGU9Imx6eDpsYWJlbGVkaW5wdXR0ZXh0IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisKKyAgICAgICAgQSBob3Jpem9udGFsIGNvbnRhaW5lciBmb3IgYSByaWdodC1hbGlnbmVkIGxhYmVsIGFuZCB0ZXh0IGZpZWxkLgorICAgICAgICB1c2FnZToKKyAgICAgICAgICAgIEBTVEFSVF9DT0RFCisgICAgICAgICAgICAgICAgJmx0O2xhYmVsZWRpbnB1dHRleHQgbGFiZWw9IlRpdGxlIiBkYXRhcGF0aD0iZGV0YWlscy9AdGl0bGUiIGZpZWxkd2lkdGg9IjUwIi8mZ3Q7CisgICAgICAgICAgICBARU5EX0NPREUKKworICAgICAgICBkYXRhcGF0aCBzaG91bGQgYmUgc2V0IHRvIHJlc29sdmUgdG8gYSB0ZXh0IHZhbHVlCisgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibGFiZWxlZGlucHV0dGV4dCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZXh0Y29sb3IiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMHgwMDAwMDAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBjb2xvciBvZiB0ZXh0IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtdWx0aWxpbmUiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHNldCB0byB0cnVlIGZvciBtdWx0aWxpbmUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1heGxlbmd0aCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgTWF4aW11bSBsZW5ndGggZm9yIHRoZSBlZGl0YWJsZSB0ZXh0IGZpZWxkLiBEZWZhdWx0IGlzIG51bGwKKyAgICAgICAgICAgICAgKG5vIGxpbWl0KSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWx3aWR0aCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iNjgiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBjb2x1bW4gZm9yIHJpZ2h0LWFsaWduZWQgbGFiZWwgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxhYmVsc2l6ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIke2RldGFpbHNsYWJlbF9zdHlsZS5mb250c2l6ZX0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBsYWJlbCBmb250IHNpemUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxhYmVsZm9udCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIke2RldGFpbHNsYWJlbF9zdHlsZS5mb250fSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGxhYmVsIGZvbnQgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxhYmVsY29sb3IiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IiR7ZGV0YWlsc2xhYmVsX3N0eWxlLnRleHRjb2xvcn0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBjb2xvciBvZiBsYWJlbCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWwiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHRoZSByaWdodC1hbGlnbmVkIGxhYmVsIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmb250bmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJWZXJkYW5hLCBBcmlhbCwgc2FucyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGZvbnQgZmFjZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmllbGR3aWR0aCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMTI4IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+Cisgd2lkdGggb2YgZWRpdGFibGUgdGV4dCBmaWVsZCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmllbGRoZWlnaHQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjE4IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+Cisgc2V0IHRoaXMgdG8gbGFyZ2VyIGlmIG11bHRpbGluZSBpcyB0cnVlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImRyYWdzdGF0ZSIgdHlwZT0ibHp4OmRyYWdzdGF0ZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHRoaXMgc3RhdGUgcHJvdmlkZXMgc3RhbmRhcmQgJ2RyYWcnIGZ1bmN0aW9uYWxpdHkgdG8gaXRzIGltbWVkaWF0ZXBhcmVudCB3aGVuIGFwcGxpZWQgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iZHJhZ3N0YXRlIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6c3RhdGUiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkcmFnX21pbl95IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSJudWxsIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgdGhlIG1pbmltdW0gdmFsdWUgZm9yIHRoZSB5IGF0dHJpYnV0ZS4gRGVmYXVsdCA6IG51bGwsIG5vIG1pbmltdW0gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRyYWdfbWluX3giIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyB0aGUgbWluaW11bSB2YWx1ZSBmb3IgdGhlIHggYXR0cmlidXRlLiBEZWZhdWx0IDogbnVsbCwgbm8gbWluaW11bSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZHJhZ19tYXhfeSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHRoZSBtYXhpbXVtIHZhbHVlIGZvciB0aGUgeSBhdHRyaWJ1dGUuIERlZmF1bHQgOiBudWxsLCBubyBtYXhpbXVtIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkcmFnX21heF94IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSJudWxsIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgdGhlIG1heGltdW0gdmFsdWUgZm9yIHRoZSB4IGF0dHJpYnV0ZS4gRGVmYXVsdCA6IG51bGwsIG5vIG1heGltdW0gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRyYWdfYXhpcyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJib3RoIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgJ3gnLCAneScgb3IgJ2JvdGgnIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJhc2V0YWIiIHR5cGU9Imx6eDpiYXNldGFiIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJiYXNldGFiIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZWxpc3RpdGVtIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGFicGFuZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHRhYnBhbmUgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdGFiLgorICAgICAgICAgICAgICBAa2V5d29yZHMgcmVhZG9ubHkgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iX2ludGVybmFsaW5wdXR0ZXh0IiB0eXBlPSJseng6X2ludGVybmFsaW5wdXR0ZXh0IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJfaW50ZXJuYWxpbnB1dHRleHQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDppbnB1dHRleHQiPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InZpZGVvbGlicmFyeWljb24iIHR5cGU9Imx6eDp2aWRlb2xpYnJhcnlpY29uIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ2aWRlb2xpYnJhcnlpY29uIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlbGVjdGVkIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib3ZlciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1heEhlaWdodCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSI0OCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imljb24iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0idmlkZW9fbm9faWNvbl9yc2MiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhc3BlY3RSYXRpbyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIxIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJUZXh0VGVzdENhc2UiIHR5cGU9Imx6eDpUZXh0VGVzdENhc2UiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlRleHRUZXN0Q2FzZSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OlRlc3RDYXNlIj4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJyZWdpb25zdHlsZSIgdHlwZT0ibHp4OnJlZ2lvbnN0eWxlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+Cisgc3R5bGUgZm9yIGEgcmVnaW9uCisgICAgICBAYWNjZXNzIHB1YmxpYworICAgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0icmVnaW9uc3R5bGUiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNlc3R5bGUiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbWFnZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIke251bGx9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgaW1hZ2UgcGF0aCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZ3JhZGllbnQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibm9uZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorICdub25lJywgJ2xpbmVhcicsICdyYWRpYWwnIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xvciIgdHlwZT0ibHp4OmNvbG9yIiBkZWZhdWx0PSIweEZGMDAwMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFJHQiBjb2xvciBvbiB0aGUgYXhpcyBsaW5lIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InZpZXciIHR5cGU9Imx6eDp2aWV3IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlICZsdDt2aWV3Jmd0OyBpcyB0aGUgbW9zdCBiYXNpYyB2aWV3YWJsZSBlbGVtZW50IGluIGFuIE9wZW5MYXN6bG8gYXBwbGljYXRpb24uIEFueXRoaW5nIHRoYXQgaXMgZGlzcGxheWVkIG9uIHRoZSBjYW52YXMgaXMgYSB2aWV3IG9yIGV4dGVuZHMgdGhlIHZpZXcgY2xhc3MuIEEgdmlldyBpcyBhIHJlY3RhbmdsZSwgd2hpY2ggY2FuIGJlIHZpc2libGUgb3IgaW52aXNpYmxlLCBhbmQgd2hpY2ggY2FuIGNvbnRhaW4gb3RoZXIgdmlld3Mgb3IgZGlzcGxheSAicmVzb3VyY2VzIiBzdWNoIGFzIGltYWdlcywgLnN3ZiBmaWxlcywgb3Igb3RoZXIgc3VwcG9ydGVkIG1lZGlhLiBPbmUgdmlldyBjb250cm9scyBvbmUgZGlzcGxheWFibGUgcmVzb3VyY2UuIFRoZSB2aWV3IHN5c3RlbSBpcyBzdHJpY3RseSBoaWVyYXJjaGljYWw7IHRoYXQgaXMsIGVhY2ggdmlldyBoYXMgYSBzaW5nbGUgcGFyZW50IGJ1dCBjYW4gaGF2ZSBtdWx0aXBsZSBjaGlsZHJlbi4gIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InZpZXciIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpub2RlIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ieXNjYWxlIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisJU3BlY2lmaWVzIHRoaXMgdmVydGljYWwgc2NhbGUgZm9yIHRoaXMgYW5kIGFsbCBjaGlsZCB2aWV3cy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InlvZmZzZXQiIHR5cGU9Imx6eDpudW1iZXIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KK1NwZWNpZmllcyBhIHRyYW5zbGF0aW9uIHBvaW50IGZvciBkcmF3aW5nIG9mIHRoaXMgdmlldy4gSWYgdGhlIHlvZmZzZXQgaXMgc2V0LCB0aGVuIHJvdGF0aW9uIGFuZCB5IHBvc2l0aW9uIHdpbGwgYmUgY2FsY3VsYXRlZCBieSBmaXJzdCBhZGRpbmcgdGhlIHlvZmZzZXQuICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ieSIgdHlwZT0ibHp4Om51bWJlciIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCVRoZSB2ZXJ0aWNhbCBvZmZzZXQgb2YgdGhpcyB2aWV3J3MgdXBwZXIgbGVmdCBjb3JuZXIgZnJvbSB0aGUgdXBwZXIgbGVmdCBjb3JuZXIgb2YgaXRzIGNvbnRhaW5lciAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InhzY2FsZSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCVNwZWNpZmllcyB0aGlzIGhvcml6b250YWwgc2NhbGUgZm9yIHRoaXMgYW5kIGFsbCBjaGlsZCB2aWV3cy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InhvZmZzZXQiIHR5cGU9Imx6eDpudW1iZXIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKwlTcGVjaWZpZXMgYSB0cmFuc2xhdGlvbiBwb2ludCBmb3IgZHJhd2luZyBvZiB0aGlzIHZpZXcuIElmIHRoZSB4b2Zmc2V0IGlzIHNldCwgdGhlbiByb3RhdGlvbiBhbmQgeCBwb3NpdGlvbiB3aWxsIGJlIGNhbGN1bGF0ZWQgYnkgZmlyc3QgYWRkaW5nIHRoZSB4b2Zmc2V0LiAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IngiIHR5cGU9Imx6eDpudW1iZXIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKwlUaGUgaG9yaXpvbnRhbCBvZmZzZXQgb2YgdGhpcyB2aWV3J3MgdXBwZXIgbGVmdCBjb3JuZXIgZnJvbSB0aGUgdXBwZXIgbGVmdCBjb3JuZXIgb2YgaXRzIGNvbnRhaW5lci4gIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ3aXRoIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ3aWR0aCIgdHlwZT0ibHp4Om51bWJlciIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorVGhlIHdpZHRoIG9mIHRoZSB2aWV3LiBDYW4gYmUgc2V0IHRvIGVpdGhlciBhIG51bWJlciwgb3IgbnVsbCwgdG8gaW5kaWNhdGUgdGhhdCB0aGUgdmlldyBzaG91bGQgYmUgc2l6ZWQgdG8gaG9sZCBpdHMgY29udGVudC4gSWYgdGhlIHZpZXcgaXMgc2V0IHRvIHN0cmV0Y2ggaXRzIHJlc291cmNlLCB0aGUgcmVzb3VyY2Ugd2lsbCBiZSByZXNpemVkIHRvIHRoZSBuZXcgdmFsdWUuIFdoZW4gcmVhZCwgcmVmbGVjdHMgdGhlIGFjdHVhbCBzaXplIG9mIHRoZSB2aWV3LiAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZpc2libGUiIHR5cGU9Imx6eDpib29sZWFuIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisJQSB2YWx1ZSBvZiB0cnVlIG1lYW5zIHRoYXQgdGhpcyB2aWV3IGlzIHNob3duLiBBIHZhbHVlIG9mIGZhbHNlIG1lYW5zIHRoYXQgdGhpcyB2aWV3IGlzIGhpZGRlbi4gTm90ZSB0aGF0IGFuIG90aGVyd2lzZSBjbGlja2FibGUgdmlldyB0aGF0IGlzIG5vdCB2aXNpYmxlIHdpbGwgaGF2ZSBubyBjbGljayByZWdpb24gYW5kIHdpbGwgbm90IGJlIGNsaWNrYWJsZS4gIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2aXNpYmlsaXR5IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImNvbGxhcHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisJQSB2YWx1ZSBvZiAidmlzaWJsZSIgbWVhbnMgdGhhdCB0aGlzIHZpZXcgaXMgc2hvd24uIEEgdmFsdWUgb2YgImhpZGRlbiIgbWVhbnMgdGhhdCB0aGlzIHZpZXcgaXMgaGlkZGVuLiBTZXR0aW5nIHRoaXMgYXR0cmlidXRlIHRvICJjb2xsYXBzZSIgbWVhbnMgdGhhdCB0aGUgcnVudGltZSB3aWxsIGhpZGUgdGhpcyB2aWV3IHdoZW46IGl0cyBvcGFjaXR5IGlzIHplcm8sIGl0IGhhcyBhIGRhdGFwYXRoIHRoYXQgZG9lcyBub3QgbWF0Y2ggYSBub2RlLCBvciBpdCBpcyBsb2FkaW5nIGl0cyBtZWRpYS4gSW4gdGhpcyBjYXNlLCB0aGUgdGhlIHZhbHVlIG9mIHRoZSAndmlzaWJsZScgYXR0cmlidXRlIG9mIHRoZSB2aWV3IHdpbGwgcmVmbGVjdCB0aGUgdmlldydzIGN1cnJlbnQgdmlzaWJsZSBzdGF0ZS4gCisJT25lIG9mOiBoaWRkZW58dmlzaWJsZXxjb2xsYXBzZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmFsaWduIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9InRvcCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCVNldHMgdGhlIHZlcnRpY2FsIGFsaWdubWVudCBmb3IgdGhlIHZpZXcgdG8gdGhlIGdpdmVuIHZhbHVlLiBUaGUgYWxpZ25tZW50IGlzIGJhc2VkIG9uIHRoZSBoZWlnaHQgb2YgdGhpcyB2aWV3IGFzIGNvbXBhcmVkIHRvIHRoZSBoZWlnaHQgb2YgdGhlIHZpZXcncyBpbW1lZGlhdGVwYXJlbnQuIAorCU9uZSBvZjogCSJ0b3AiIHwgIm1pZGRsZSIgfCAiYm90dG9tIiB8IGNvbnN0cmFpbnQgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVzZWdldGJvdW5kcyIgdHlwZT0ibHp4OmJvb2xlYW4iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKwlUcnVlIGlmIHRoaXMgdmlldyByZXF1aXJlcyBhIGNhbGwgdG8gZ2V0Qm91bmRzKCkgZm9yIGFjY3VyYXRlIHdpZHRoIGFuZCBoZWlnaHQgbWVhc3VyZW1lbnQuIFRoaXMgbWF5IGJlIG5lY2Vzc2FyeSB3aGVuIGFuIG9mZnNldCBvciByb3RhdGlvbiBhcmUgYXBwbGllZC4gIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1bnN0cmV0Y2hlZHdpZHRoIiB0eXBlPSJseng6bnVtYmVyIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisJSWYgc3RyZXRjaGVzIGlzIG5vdCBzZXQgdG8gbm9uZSwgdGhlIHdpZHRoIHRoYXQgdGhpcyB2aWV3IHdvdWxkIGJlIGlmIGl0IHdlcmVuJ3Qgc3RyZXRjaGVkLiBUaGlzIGF0dHJpYnV0ZSBjYW4gYmUgdXNlZCB0byBzY2FsZSBhIHZpZXcgYnkgYSBwZXJjZW50YWdlIG9mIGl0cyBvcmlnaW5hbCBzaXplLCBvciB0byBkZXRlcm1pbmUgdGhlIGFzcGVjdCByYXRpbyBmb3IgYSB2aWV3LiAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVuc3RyZXRjaGVkaGVpZ2h0IiB0eXBlPSJseng6bnVtYmVyIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisJSWYgc3RyZXRjaGVzIGlzIG5vdCBzZXQgdG8gbm9uZSwgdGhlIGhlaWdodCB0aGF0IHRoaXMgdmlldyB3b3VsZCBiZSBpZiBpdCB3ZXJlbid0IHN0cmV0Y2hlZC4gVGhpcyBhdHRyaWJ1dGUgY2FuIGJlIHVzZWQgdG8gc2NhbGUgYSB2aWV3IGJ5IGEgcGVyY2VudGFnZSBvZiBpdHMgb3JpZ2luYWwgc2l6ZSwgb3IgdG8gZGV0ZXJtaW5lIHRoZSBhc3BlY3QgcmF0aW8gZm9yIGEgdmlldy4gIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0b3RhbGZyYW1lcyIgdHlwZT0ibHp4Om51bWJlciIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCVRoZSB0b3RhbCBudW1iZXIgb2YgZnJhbWVzIGZvciB0aGlzIHZpZXcncyByZXNvdXJjZS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRpbnRjb2xvciIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisJU2V0cyB0aGUgY29sb3Igb2Zmc2V0LCBiYXNlZCBvbiBhIGhleGFkZWNpbWFsIGNvbG9yIHN0cmluZywgZS5nLiAnI2ZmMDBmZicuIFNlZSBzZXRDb2xvclRyYW5zZm9ybSgpIGZvciBkZXRhaWxzLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3Vidmlld3MiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCUFuIGFycmF5IG9mIHRoZSBzdWJ2aWV3cyB0aGF0IGFyZSBjaGlsZHJlbiBvZiB0aGlzIHZpZXcuIFRoaXMgaXMgaW5pdGlhbGl6ZWQgdG8gYW4gZW1wdHkgYXJyYXkgZm9yIHZpZXdzIHRoYXQgaGF2ZSBubyBzdWJ2aWV3cy4gIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdHJldGNoZXMiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibm9uZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCVNldHRpbmcgc3RyZXRjaGVzIGNhdXNlcyBhIHZpZXcgdG8gY2hhbmdlIGl0cyBjb29yZGluYXRlIHNwYWNlIHNvIHRoYXQgZXZlcnl0aGluZyBpdCBjb250YWlucyAocmVzb3VyY2VzIGFuZCBvdGhlciB2aWV3cykgZml0IGV4YWN0bHkgaW50byB0aGUgdmlldydzIHdpZHRoIGFuZC9vciBoZWlnaHQuIFRoZSBkZWZhdWx0IGZvciB0aGlzIHByb3BlcnR5IGlzICJub25lIi4gVGhpcyBpcyB1c2VkIHRvIHJlc2l6ZSBhIHZpZXcncyBjb250ZW50cyBieSBzZXR0aW5nIGl0cyB3aWR0aCBhbmQvb3IgaGVpZ2h0LiAKKwlPbmUgb2Y6IAkid2lkdGgiIHwgImhlaWdodCIgfCAiYm90aCIgfCAibm9uZSIgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNvdXJjZSIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisJVGhlIFVSTCBmcm9tIHdoaWNoIHRvIGxvYWQgdGhlIHJlc291cmNlIGZvciB0aGlzIHZpZXcuIElmIHRoaXMgYXR0cmlidXRlIGlzIHNldCwgdGhlIG1lZGlhIGZvciB0aGUgdmlldyBpcyBsb2FkZWQgYXQgcnVudGltZS4gIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzaG93aGFuZGN1cnNvciIgdHlwZT0ibHp4OmJvb2xlYW4iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKwlTaG93IG9yIGhpZGUgdGhlIGhhbmQgY3Vyc29yIGZvciB0aGlzIHZpZXcsIGlmIGNsaWNrYWJsZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2hhZG93ZGlzdGFuY2UiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCVRoZSBkaXN0YW5jZSBmb3IgdGhlIGRyb3Agc2hhZG93LCBpbiBwaXhlbHMgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNoYWRvd2NvbG9yIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KK1RoZSBjb2xvciBmb3IgdGhlIGRyb3Agc2hhZG93IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzaGFkb3dibHVycmFkaXVzIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSI0IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CitUaGUgYmx1ciByYWRpdXMgZm9yIHRoZSBkcm9wIHNoYWRvdywgaW4gcGl4ZWxzLiBBIG5lZ2F0aXZlIHZhbHVlIHdpbGwgY2F1c2UgdGhlIHNoYWRvdyB0byBiZSBpbnNldC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNoYWRvd2FuZ2xlIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisJVGhlIGFuZ2xlIGZvciB0aGUgZHJvcCBzaGFkb3csIGluIGRlZ3JlZXMgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvdGF0aW9uIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisJVGhlIHJvdGF0aW9uIHZhbHVlIGZvciB0aGUgdmlldyAoaW4gZGVncmVlcykuIFZhbHVlIG1heSBiZSBsZXNzIHRoYW4gemVybyBvciBncmVhdGVyIHRoYW4gMzYwLiAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlc291cmNld2lkdGgiIHR5cGU9Imx6eDpudW1iZXIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KK1RoZSB3aWR0aCBvZiB0aGUgcmVzb3VyY2UgdGhhdCB0aGlzIHZpZXcgYXR0YWNoZWQgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlc291cmNlaGVpZ2h0IiB0eXBlPSJseng6bnVtYmVyIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisJVGhlIGhlaWdodCBvZiB0aGUgcmVzb3VyY2UgdGhhdCB0aGlzIHZpZXcgYXR0YWNoZWQgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlc291cmNlIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KK0EgcmVzb3VyY2UgdGhhdCBpcyBwcmVzZW50ZWQgaW4gdGhlIGJhY2tncm91bmQgb2YgdGhpcyB2aWV3LiBUaGUgdmFsdWUgY2FuIGJlIGVpdGhlciB0aGUgbmFtZSBvZiBhIHJlc291cmNlIGRlZmluZWQgd2l0aCB0aGUgcmVzb3VyY2UgdGFnLCBhIFVSTCwgb3IgYSBwYXRobmFtZS4gSWYgdGhlIHZhbHVlIGlzIGEgVVJMLCB0aGUgcmVzb3VyY2UgaXMgcmVxdWVzdGVkIHdoZW4gdGhlIHZpZXcgaXMgZGlzcGxheWVkLiBJZiBpdCdzIGEgcGF0aG5hbWUsIHRoZSBmaWxlIG5hbWVkIGJ5IHRoZSBwYXRobmFtZSBpcyBjb21waWxlZCBpbnRvIHRoZSBhcHBsaWNhdGlvbiwgYW5kIGF0dGFjaGVkIHRvIHRoaXMgdmlldy4gIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyYXRpbyIgdHlwZT0ibHp4OmJvb2xlYW4iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGlzIGVsZW1lbnQgaXMgb25seSBhdmFpbGFibGUgaW4gdGhlIHNwbGFzaCBTV0Ygc3BlY2lmaWMgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InByb3h5dXJsIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKwlUaGUgdXJsIG9mIHRoZSBwcm94eSBzZXJ2ZXIsIGlmIHRoZSBhcHAgaXMgcnVubmluZyBpbiBwcm94aWVkIG1vZGUuIHByb3h5dXJsIGNhbiBiZSBudWxsLCBhIFVSTCBzdHJpbmcsIG9yIGEgZnVuY3Rpb24uCisKKyAgICBJZiB0aGUgdmFsdWUgaXMgYSBzdHJpbmcsIHRyZWF0IGl0IGFzIGEgVVJMIHRvIHRoZSBwcm94eSBzZXJ2ZXIuCisgICAgSWYgdGhlIHZhbHVlIGlzIGEgZnVuY3Rpb24sIGl0IHNob3VsZCByZXR1cm4gdGhlIFVSTCBvZiB0aGUgcHJveHkgc2VydmVyLgorCitUaGUgZGVmYXVsdCBwcm94eSBwb2xpY3kgcmVmZXJlbmNlcyB0aGUgcHJveHl1cmwgb2YgdGhlIGNhbnZhcy4gIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwbGF5aW5nIiB0eXBlPSJseng6Ym9vbGVhbiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCUlmIHRydWUsIHRoaXMgdmlldyBpcyBjdXJyZW50bHkgcGxheWluZy4gU2V0dGluZyB0byB0cnVlIGNhdXNlcyB0aGUgdmlldyB0byBwbGF5LCBmYWxzZSBjYXVzZXMgcGxheWJhY2sgdG8gc3RvcC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBpeGVsbG9jayIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgCVRoZSB2aWV3IHN5c3RlbSBzdXBwb3J0cyBzdWItcGl4ZWwgcG9zaXRpb25pbmcgdG8gZW5hYmxlIHNtb290aCBhbmltYXRpb24uIFRoaXMgbWF5IGJlIHR1cm5lZCBvZmYgdG8gbWFrZSB0aGUgdmlldyBzbmFwIHRvIGEgcGl4ZWwgYm91bmRhcnkgYnkgc2V0dGluZyBwaXhlbGxvY2sgdG8gdHJ1ZS4gIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvcGFjaXR5IiB0eXBlPSJseng6bnVtYmVyIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisJVGhlIG9wYWNpdHkgb2YgdGhlIHZpZXcncyBjb250ZW50cy4gMS4wIGlzIG9wYXF1ZTsgMC4wIGlzIHRvdGFsbHkgdHJhbnNwYXJlbnQgKGludmlzaWJsZSkuICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib255IiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KK2V2ZW50IGZvciBjaGFuZ2VzIHRvIHZpZXcncyB5IHByb3BlcnR5IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbngiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorZXZlbnQgZm9yIGNoYW5nZXMgdG8gdmlldydzIHggcHJvcGVydHkgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9ud2lkdGgiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorZXZlbnQgZm9yIGNoYW5nZXMgdG8gdmlldydzIHdpZHRoIHByb3BlcnR5IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbnZpc2libGUiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorU2VudCB3aGVuIHRoZSB2aWV3IGNoYW5nZXMgdmlzaWJpbGl0eSAodHJ1ZS9mYWxzZSkgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9udG91Y2giIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorVGhlIG9udG91Y2ggZXZlbnQgaXMgc2VudCB3aGVuIGEgdG91Y2ggZGV2aWNlIHJlY2VpdmVzIGEgbXVsdGl0b3VjaCBldmVudC4gVGhlIHZhbHVlIHNlbnQgd2l0aCB0aGUgZXZlbnQgaXMgYW4gYXJyYXkgb2Ygb2JqZWN0cyB3aXRoIHdpdGggdHdvIHByb3BlcnRpZXM6IGNsaWVudFggYW5kIGNsaWVudFkuIEN1cnJlbnRseSBzdXBwb3J0ZWQgb25seSBpbiBpT1Mgb24gREhUTUwuIE5vdGUgdGhhdCBBbmRyb2lkIFdlYmtpdCBkb2Vzbid0IHNlbmQgbXVsdGl0b3VjaCBldmVudHMgLSBzZWUgaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9tb2JpbGUvdGFibGVUb3VjaC5odG1sIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbnRpbWVvdXQiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorU2VudCB3aGVuIHRoZSByZXF1ZXN0IHRvIGxvYWQgbWVkaWEgZm9yIHRoZSB2aWV3IHRpbWVzIG91dCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25zdG9wIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KK1NlbnQgd2hlbiBhIHZpZXcncyByZXNvdXJjZSB0aGF0IGlzIGNhcGFibGUgb2YgcGxheWluZyBpcyBzdG9wcGVkLiBUaGlzIGlzIG9ubHkgY2FsbGVkIGlmIHN0b3AgaXMgY2FsbGVkIGRpcmVjdGx5OyB3aGVuIGEgcmVzb3VyY2UgaGl0cyBpdHMgbGFzdCBmcmFtZSwgdGhlIGx6LnZpZXcgZXZlbnQgb25sYXN0ZnJhbWUgaXMgY2FsbGVkLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25zaGFkb3dkaXN0YW5jZSIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CitTZW50IHdoZW4gc2hhZG93ZGlzdGFuY2UgY2hhbmdlcyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25zaGFkb3djb2xvciIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CitTZW50IHdoZW4gc2hhZG93Y29sb3IgY2hhbmdlcyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25zaGFkb3dibHVycmFkaXVzIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KK1NlbnQgd2hlbiBzaGFkb3dibHVycmFkaXVzIGNoYW5nZXMgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uc2hhZG93YW5nbGUiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorU2VudCB3aGVuIHNoYWRvd2FuZ2xlIGNoYW5nZXMgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9ucmVtb3Zlc3VidmlldyIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CitFdmVudCBjYWxsZWQgd2hlbiB0aGlzIHZpZXcgcmVtb3ZlcyBhIHN1YnZpZXcgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9ucGxheWluZyIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CitTZW50IHdoZW4gYSB2aWV3IGJlZ2lucyBwbGF5aW5nIGl0cyByZXNvdXJjZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25wbGF5IiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KK1NlbnQgd2hlbiBhIHZpZXcgYmVnaW5zIHBsYXlpbmcgaXRzIHJlc291cmNlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbm9wYWNpdHkiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorU2VudCB3aGVuIGEgdmlldyBjaGFuZ2VzIGl0cyBvcGFjaXR5IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbm1vdXNldXBvdXRzaWRlIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KK1RoZSBvbm1vdXNldXAgZXZlbnQgaXMgc2VudCB3aGVuIHRoZSBwb2ludGluZyBkZXZpY2UgYnV0dG9uIGlzIHJlbGVhc2VkIG91dHNpZGUgdGhlIGVsZW1lbnQgaXQgd2VudCBkb3duIG9uLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25tb3VzZXVwIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KK1RoZSBvbm1vdXNldXAgZXZlbnQgaXMgc2VudCB3aGVuIHRoZSBwb2ludGluZyBkZXZpY2UgYnV0dG9uIGlzIHJlbGVhc2VkIG92ZXIgYW4gZWxlbWVudC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9ubW91c2V0cmFja3VwIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KK1NlbnQgd2hlbiB0aGUgbW91c2UgYnV0dG9uIGlzIHJlbGVhc2VkIG92ZXIgYSB2aWV3IHRoYXQgaXMgcmVnaXN0ZXJlZCB0byBhbiBhY3RpdmUgdHJhY2sgZ3JvdXAuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbm1vdXNldHJhY2tvdmVyIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KK1NlbnQgd2hlbiB0aGUgbW91c2UgaXMgb3ZlciBhIHZpZXcgdGhhdCBpcyByZWdpc3RlcmVkIHRvIGFuIGFjdGl2ZSB0cmFjayBncm91cC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9ubW91c2V0cmFja291dCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CitTZW50IHdoZW4gdGhlIG1vdXNlIGxlYXZlcyB0aGUgdmlzaWJsZSBhcmVhIG9mIGEgdmlldyB0aGF0IHByZXZpb3VzbHkgc2VudCBhbiAnb250cmFja292ZXInIGV2ZW50LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25tb3VzZW92ZXIiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorVGhlIG9ubW91c2VvdmVyIGV2ZW50IGlzIHNlbnQgd2hlbiB0aGUgcG9pbnRpbmcgZGV2aWNlIGlzIG1vdmVkIG9udG8gYW4gZWxlbWVudC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9ubW91c2VvdXQiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorVGhlIG9ubW91c2VvdXQgZXZlbnQgaXMgc2VudCB3aGVuIHRoZSBwb2ludGluZyBkZXZpY2UgaXMgbW92ZWQgc28gdGhhdCBpcyBpcyBubyBsb25nZXIgb3ZlciBhbiBlbGVtZW50LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25tb3VzZWRyYWdvdXQiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorVGhlIG9ubW91c2VkcmFnb3V0IGV2ZW50IGlzIHNlbnQgd2hlbiB0aGUgcG9pbnRpbmcgZGV2aWNlIGlzIG1vdmVkIG9mZiB0aGUgZWxlbWVudCB3aGlsZSB0aGUgYnV0dG9uIGlzIGRvd24uIGRvd24uIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbm1vdXNlZHJhZ2luIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KK1RoZSBvbm1vdXNlZHJhZ2luIGV2ZW50IGlzIHNlbnQgd2hlbiB0aGUgcG9pbnRpbmcgZGV2aWNlIGJ1dHRvbiBoYXMgbW92ZWQgb2ZmIHRoZSBlbGVtZW50IGFuZCBiYWNrIG9uIGFnYWluIHdoaWxlIHRoZSBidXR0b24gaXMgZG93bi4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9ubW91c2Vkb3duIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KK1RoZSBvbm1vdXNlZG93biBldmVudCBpcyBzZW50IHdoZW4gdGhlIHBvaW50aW5nIGRldmljZSBidXR0b24gaXMgcHJlc3NlZCBvdmVyIGFuIGVsZW1lbnQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmxvYWRyYXRpbyIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CitTZW5kcyBhIHBlcmNlbnRhZ2UgKDAtMSkgcmVmbGVjdGluZyB0aGUgYW1vdW50IG9mIGEgbWVkaWEgZmlsZSB0aGF0J3MgYmVlbiBkb3dubG9hZGVkLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25sb2FkIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KK1NlbmQgd2hlbiB0aGUgdmlldyBmaW5pc2hlcyBsb2FkaW5nIG1lZGlhLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25sYXN0ZnJhbWUiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorU2VudCB3aGVuIHRoZSB2aWV3IHNldHMgaXRzIGZyYW1lIChyZXNvdXJjZSBudW1iZXIpIHRvIHRoZSBsYXN0IGZyYW1lLiBUaGlzIGNhbiBiZSB1c2VkIHRvIGZpbmQgb3V0IHdoZW4gYSBzdHJlYW1pbmcgbWVkaWEgY2xpcCBpcyBkb25lIHBsYXlpbmcuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmtleXVwIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgb25rZXl1cCBldmVudCBpcyBzZW50IHdoZW4gdGhpcyB2aWV3IGhhcyB0aGUgZm9jdXMgYW5kIGEga2V5IGlzIHJlbGVhc2VkLiBUaGlzIGV2ZW50IGlzIHNlbnQgd2l0aCB0aGUga2V5Y29kZSBmb3IgdGhlIGtleSB0aGF0IHdlbnQgdXAuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmtleWRvd24iIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBvbmtleWRvd24gZXZlbnQgaXMgc2VudCB3aGVuIHRoaXMgdmlldyBoYXMgdGhlIGZvY3VzIGFuZCBhIGtleSBpcyBwcmVzc2VkIGRvd24uIE11bHRpcGxlIGtleSBkb3duIGV2ZW50cyBhcmUgc2VudCBmb3IgYSBrZXkgdGhhdCBpcyBoZWxkIGRvd24uIElmIHlvdSB3YW50IHRoZSBzY3JpcHQgZXhlY3V0ZWQgb25seSBvbmNlLCB1c2Ugb25rZXl1cC4gVGhpcyBldmVudCBpcyBzZW50IHdpdGggdGhlIGtleWNvZGUgZm9yIHRoZSBrZXkgdGhhdCBpcyBkb3duLjwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmhlaWdodCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgRXZlbnQgZm9yIGNoYW5nZXMgdG8gdmlldydzIGhlaWdodCBwcm9wZXJ0eTwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmdlc3R1cmUiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorVGhlIG9uZ2VzdHVyZSBldmVudCBpcyBzZW50IHdoZW4gYSB0b3VjaCBkZXZpY2UgcmVjZWl2ZXMgYSBnZXN0dXJlIGV2ZW50LiBUaGUgdmFsdWUgc2VudCB3aXRoIHRoZSBldmVudCBpcyBhbiBvYmplY3Qgd2l0aCB0d28gcHJvcGVydGllczogc2NhbGUgYW5kIHJvdGF0aW9uLiBDdXJyZW50bHkgc3VwcG9ydGVkIG9ubHkgaW4gaU9TIG9uIERIVE1MLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25mcmFtZXNsb2FkcmF0aW8iIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFNlbmRzIGEgcGVyY2VudGFnZSAoMC0xKSByZWZsZWN0aW5nIHRoZSBudW1iZXIgb2YgZnJhbWVzIGRvd25sb2FkZWQuPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uZnJhbWUiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFNlbnQgb25pZGxlIHdoaWxlIHZpZXcgaXMgcGxheWluZyBpdHMgcmVzb3VyY2U8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25mb2N1cyIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIG9uZm9jdXMgZXZlbnQgaXMgc2VudCB3aGVuIGFuIGVsZW1lbnQgcmVjZWl2ZXMgZm9jdXMgZWl0aGVyIGJ5IHRoZSBwb2ludGluZyBkZXZpY2Ugb3IgYnkgdGFiYmluZyBuYXZpZ2F0aW9uLjwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmVycm9yIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBTZW50IHdoZW4gdGhlcmUgaXMgYW4gZXJyb3IgbG9hZGluZyB0aGUgdmlldydzIHJlc291cmNlLiBUaGUgYXJndW1lbnQgc2VudCB3aXRoIHRoZSBldmVudCBpcyBhbiBlcnJvciBzdHJpbmcuPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uZGJsY2xpY2siIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBvbmRibGNsaWNrIGV2ZW50IGlzIHNlbnQgd2hlbiB0aGUgcG9pbnRpbmcgZGV2aWNlIGJ1dHRvbiBpcyBkb3VibGUgY2xpY2tlZCBvdmVyIGFuIGVsZW1lbnQuPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uY29ybmVycmFkaXVzIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBTZW50IHdoZW4gY29ybmVycmFkaXVzIGNoYW5nZXM8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25jb250ZXh0IiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBTZW50IHdoZW4gdGhlIGRyYXdpbmcgY29udGV4dCBpcyByZWFkeSB0byB1c2UsIHdoaWNoIGNhbiB0YWtlIHNvbWUgdGltZSBpbiBJRSBESFRNTC48L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25jbGlwIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgb25jbGlwIGV2ZW50IGlzIHNlbnQgd2hlbiB0aGUgY2xpcCBhdHRyaWJ1dGUgb2YgYSB2aWV3IGlzIGNoYW5nZWQ8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25jbGlja2FibGUiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEV2ZW50IGZvciBjaGFuZ2VzIHRvIHZpZXcncyBjbGlja2FibGUgcHJvcGVydHk8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25jbGljayIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgICBUaGUgb25jbGljayBldmVudCBpcyBzZW50IHdoZW4gdGhlIHBvaW50aW5nIGRldmljZSBidXR0b24gaXMgY2xpY2tlZCBvdmVyIGFuIGVsZW1lbnQuPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uYmx1ciIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgIFRoZSBvbmJsdXIgZXZlbnQgaXMgc2VudCB3aGVuIGFuIGVsZW1lbnQgbG9zZXMgZm9jdXMgZWl0aGVyIGJ5IHRoZSBwb2ludGluZyBkZXZpY2Ugb3IgYnkgdGFiYmluZyBuYXZpZ2F0aW9uLjwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmJhY2tncm91bmRyZXBlYXQiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGV2ZW50IGZvciBjaGFuZ2VzIHRvIHZpZXcncyBiYWNrZ3JvdW5kcmVwZWF0IHByb3BlcnR5IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmFkZHN1YnZpZXciIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorRXZlbnQgY2FsbGVkIHdoZW4gdGhpcyB2aWV3IGFkZHMgYSBzdWJ2aWV3IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtYXNrIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKwlSZWZlcmVuY2UgdG8gY2xvc2VzdCBtYXNrZWQgdmlldyBpbiB0aGUgaGllcmFyY2h5IGF0IG9yIGFib3ZlIHRoaXMgb25lICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibG9hZHJhdGlvIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKwlGb3Igdmlld3Mgd2hvc2UgcmVzb3VyY2UgaXMgbG9hZGVkIGF0IHJ1bnRpbWUsIHJhdGlvIG9mIHRoZSBsb2FkZWQgYnl0ZXMgdG8gdGhlIHRvdGFsIGJ5dGVzLiBUaGlzIGlzIGEgbnVtYmVyIGJldHdlZW4gemVybyBhbmQgMS4gIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYXlvdXQiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCUEgQ1NTIGRlY2xhcmF0aW9uIG9mIHByb3BlcnR5OiB2YWx1ZSBwYWlycyBvZiBsYXlvdXQgYXR0cmlidXRlcywgd2hpY2ggYXJlIHVzZWQgdG8gY3JlYXRlIGEgbGF5b3V0IHRoYXQgaXMgYXR0YWNoZWQgdG8gdGhpcyB2aWV3LiBJZiB0aGVyZSBpcyBhIGNsYXNzIHByb3BlcnR5LCBpdCBuYW1lcyB0aGUgY2xhc3Mgb2YgdGhlIGxheW91dCB0byBiZSBjcmVhdGVkLCBvdGhlcndpc2UgJmx0O3NpbXBsZWxheW91dCZndDsgaXMgdXNlZC4gVG8gcmVtb3ZlIHRoZSBwcmV2aW91c2x5IHNldCBsYXlvdXQsIHVzZSB7J2NsYXNzJzogJ25vbmUnfSBFeGFtcGxlczogbGF5b3V0PSJheGlzOiB4IiwgbGF5b3V0PSJjbGFzczogY29uc3RhbnRsYXlvdXQiLCBsYXlvdXQ9ImF4aXM6IHkiLCBsYXlvdXQ9ImF4aXM6IHg7IHNwYWNpbmc6IDUiLiAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImhlaWdodCIgdHlwZT0ibHp4Om51bWJlciIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCVRoZSBoZWlnaHQgb2YgdGhlIHZpZXcuIENhbiBiZSBzZXQgdG8gZWl0aGVyIGEgbnVtYmVyLCBvciBudWxsLCB0byBpbmRpY2F0ZSB0aGF0IHRoZSB2aWV3IHNob3VsZCBiZSBzaXplZCB0byBob2xkIGl0cyBjb250ZW50LiBJZiB0aGUgdmlldyBpcyBzZXQgdG8gc3RyZXRjaCBpdHMgcmVzb3VyY2UsIHRoZSByZXNvdXJjZSB3aWxsIGJlIHJlc2l6ZWQgdG8gdGhlIG5ldyB2YWx1ZS4gV2hlbiByZWFkLCByZWZsZWN0cyB0aGUgYWN0dWFsIHNpemUgb2YgdGhlIHZpZXcuICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaGFzc2V0d2lkdGgiIHR5cGU9Imx6eDpib29sZWFuIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisJSWYgdHJ1ZSwgdGhlbiB0aGlzIHZpZXcgaGFzIGFuIGFzc2lnbmVkIG9yIGNvbnN0cmFpbmVkIHdpZHRoLCBhbmQgdGhlIHZpZXcgd2lsbCBub3QgYmUgc2l6ZWQgdG8gaXRzIGNvbnRlbnRzLiAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imhhc3NldGhlaWdodCIgdHlwZT0ibHp4OmJvb2xlYW4iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKwlJZiB0cnVlLCB0aGVuIHRoaXMgdmlldyBoYXMgYW4gYXNzaWduZWQgb3IgY29uc3RyYWluZWQgaGVpZ2h0LCBhbmQgdGhlIHZpZXcgd2lsbCBub3QgYmUgc2l6ZWQgdG8gaXRzIGNvbnRlbnRzLiAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imhhc2RpcmVjdGlvbmFsbGF5b3V0IiB0eXBlPSJseng6bnVtYmVyIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CitJZiB0cnVlLCBzcHJpdGUgd2lsbCB1c2UgVExGIHRleHQgZnJhbWV3b3JrIGNsYXNzIHRoYXQgc3VwcG9ydHMgYmlkaXJlY3Rpb25hbCB0ZXh0IGxheW91dC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZyYW1lc2xvYWRyYXRpbyIgdHlwZT0ibHp4Om51bWJlciIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCUZvciB2aWV3cyB3aG9zZSByZXNvdXJjZSBpcyBsb2FkZWQgYXQgcnVudGltZSwgdGhlIHJhdGlvIG9mIHRoZSBsb2FkZWQgZnJhbWVzIHRvIHRoZSB0b3RhbCBmcmFtZXMuIFRoaXMgaXMgYSBudW1iZXIgYmV0d2VlbiB6ZXJvIGFuZCAxLiAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZyYW1lIiB0eXBlPSJseng6bnVtYmVyIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisJSWYgdGhpcyB2aWV3IGhhcyBhIG11bHRpLWZyYW1lIHJlc291cmNlLCB0aGlzIGFsbG93cyBzZXR0aW5nIHdoaWNoIHJlc291cmNlIGZyYW1lIGlzIGRpc3BsYXllZC4gRGVmYXVsdHMgdG8gdGhlIGZpcnN0IGZyYW1lICgxKS4gU2VlIGFsc28gdGhlIHJlc291cmNlIGF0dHJpYnV0ZS4gU2V0dGluZyB0aGlzIGF0dHJpYnV0ZSB3aWxsIGNoYW5nZSB0aGUgZnJhbWUgdGhhdCBpcyBiZWluZyBkaXNwbGF5ZWQgYnkgdGhlIHJlc291cmNlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHZpZXcuIFRoZSBmaXJzdCBmcmFtZSBvZiB0aGUgcmVzb3VyY2UgaXMgZnJhbWUgMS4gU2V0dGluZyBhIHZpZXcncyAnZG9udHRyYWNrcGxheScgb3B0aW9uIHRvIHRydWUgd2lsbCBhbGxvdyB0aGUgdmlldydzIHJlc291cmNlIHRvIHBsYXkgd2l0aG91dCB1cGRhdGluZyB0aGUgdmFsdWUgb2YgdGhlIHZpZXcncyBmcmFtZSBwcm9wZXJ0eS4gVGhpcyBjYW4gc2F2ZSBDUFUgdXNhZ2UgaW4gY2FzZXMgd2hlcmUgdGhlIGFwcGxpY2F0aW9uIGRvZXNuJ3QgbmVlZCB0byBrbm93IHdoYXQgZnJhbWUgdGhlIHJlc291cmNlIGlzIHNob3dpbmcgd2hpbGUgaXQgaXMgcGxheWluZy4gIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmb250c3R5bGUiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCVRoZSBzdHlsZSB0byB1c2UgdG8gcmVuZGVyIHRleHQgZmllbGRzIHRoYXQgYXBwZWFyIGluc2lkZSBvZiB0aGlzIHZpZXcuIE9uZSBvZiAicGxhaW4iLCAiYm9sZCIgLCAiaXRhbGljIiBvciAiYm9sZGl0YWxpYyIuICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZm9udHNpemUiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCVBpeGVsIHNpemUgdG8gdXNlIHRvIHJlbmRlciB0ZXh0IHdoaWNoIGFwcGVhcnMgaW5zaWRlIHRoaXMgdmlldy4gVGhlIGRlZmF1bHQgaXMgOC4gIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmb250IiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKwlUaGUgZm9udCB0byB1c2UgZm9yIGFueSAmbHQ7dGV4dCZndDsgb3IgJmx0O2lucHV0dGV4dCZndDsgZWxlbWVudHMgdGhhdCBhcHBlYXIgaW5zaWRlIHRoaXMgdmlldy4gTGlrZSBhbGwgdGhlIGZvbnQgcHJvcGVydGllcyAoZm9udHN0eWxlIGFuZCBmb250c2l6ZSB0b28pIHRoZXNlIHByb3BlcnRpZXMgY2FzY2FkZSBkb3duIHRoZSB2aWV3IGhpZXJhcmNoeSB1bnRpbCBhIG5ldyB2YWx1ZSBpcyBzcGVjaWZpZWQuICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZm9jdXN0cmFwIiB0eXBlPSJseng6Ym9vbGVhbiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCUlmIHRydWUsIHRoaXMgdmlldyAidHJhcHMiIHRoZSBmb2N1cywgZm9yIGV4YW1wbGUgaW4gYSB3aW5kb3cgb3IgZGlhbG9nLiBTZWUgZm9jdXMgbWFuYWdlciAobHouRm9jdXMpIGZvciBtb3JlIGRldGFpbHMuICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZm9jdXNhYmxlIiB0eXBlPSJseng6Ym9vbGVhbiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCUlmIHRydWUsIHRoaXMgdmlldyB3aWxsIHJlY2VpdmUgZm9jdXMgZXZlbnRzLiBTZWUgZm9jdXMgbWFuYWdlciAobHouRm9jdXMpIGZvciBtb3JlIGRldGFpbHMuICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmdjb2xvciIgdHlwZT0ibHp4Om51bWJlciIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorVGhlIGZvcmVncm91bmQgY29sb3Igb2YgYW55ICZsdDt0ZXh0Jmd0OyBvciAmbHQ7aW5wdXR0ZXh0Jmd0OyBlbGVtZW50cyB0aGF0IGFwcGVhciBpbnNpZGUgdGhpcyB2aWV3LiBUbyBhcHBseSBhIGNvbG9yIHRyYW5zZm9ybSwgc2VlIHRpbnRjb2xvci4gTWF5IGJlIHNldCB0byBhbnkgdmFsaWQgQ1NTIGNvbG9yIHNwZWNpZmljYXRpb24uIFdoZW4gcmVhZCwgd2lsbCBiZSByZWFkIGFzIHRoZSBlcXVpdmFsZW50IG51bWVyaWMgdmFsdWUuIFRvIHJldHJpZXZlIGEgQ1NTIGNvbG9yIHNwZWNpZmljYXRpb24sIHVzZSB0aGlzLnByZXNlbnRBdHRyaWJ1dGUoJ2ZnY29sb3InLCAnY29sb3InKS4gRGVmYXVsdCBpcyAwIChibGFjaykuICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY3Vyc29yIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKwlUaGUgY3Vyc29yIHRvIGRpc3BsYXkgd2hlbiB0aGUgbW91c2UgaXMgb3ZlciB0aGlzIHZpZXcuIEFueSByZXNvdXJjZSBJRCBjYW4gYmUgdXNlZCBhcyBhIGN1cnNvciwgb3IgJycgZm9yIHRoZSBkZWZhdWx0IGN1cnNvci4gVGhpcyBhdHRyaWJ1dGUgY2FuIGJlIHNldCBmb3IgYW55IHZpZXcgd2l0aCBjbGlja2FibGU9dHJ1ZS4gIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb3JuZXJyYWRpdXMiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCVRoZSBjb3JuZXIgcmFkaXVzIGZvciB0aGUgYmFja2dyb3VuZCwgZS5nLiAnNCcgb3IgYSBsaXN0IG9mIHVwIHRvIDggbnVtYmVycyAnNCAwIDAgNCAvIDIgMCAwIDInLiBQZXIgaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1iYWNrZ3JvdW5kLyN0aGUtYm9yZGVyLXJhZGl1cyB0aGUgOCB2YWx1ZXMgZm9yIGVhY2ggcmFkaWkgYXJlIGdpdmVuIGluIHRoZSBvcmRlciB0b3AtbGVmdCwgdG9wLXJpZ2h0LCBib3R0b20tcmlnaHQsIGJvdHRvbS1sZWZ0LiBJZiB5b3UgdXNlIHRoZSAnLycgbm90YXRpb24sIHRoZSB2YWx1ZXMgYmVmb3JlIHRoZSBzbGFzaCBhcmUgdGhlIGhvcml6b250YWwgcmFkaWksIGFuZCB0aGUgdmFsdWVzIGFmdGVyIHRoZSBzbGFzaCBhcmUgdGhlIHZlcnRpY2FsIHJhZGlpLiAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbnRleHRtZW51IiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KK1RoZSBjb250ZXh0IG1lbnUgaW5zdGFsbGVkIG9uIHRoaXMgdmlldyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29udGV4dCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgCUNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSByYXcgZHJhd2luZyBjb250ZXh0LiBUaGUgb25jb250ZXh0IGV2ZW50IGlzIHNlbnQgd2hlbiB0aGUgY29udGV4dCBpcyByZWFkeSB0byB1c2UsIHdoaWNoIGNhbiB0YWtlIHNvbWUgdGltZSBpbiBJRSBESFRNTC4gIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xvcnRyYW5zZm9ybSIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisJY29sb3IgdHJhbnNmb3JtcyBldmVyeXRoaW5nIGNvbnRhaW5lZCBpbiB0aGUgdmlldyAoZXhjZXB0IHRoZSBiYWNrZ3JvdW5kKSBieSB0aGUgdHJhbnNmb3JtYXRpb24gZGljdGlvbmFyeSBnaXZlbiBpbiBvLiBUaGUgZGljdGlvbmFyeSBoYXMgdGhlIGZvbGxvd2luZyBwb3NzaWJsZSBrZXlzOiBvLnJlZE11bHRpcGxpZXI6IG11bHRpcGxpZXIgZm9yIHJlZCBjb21wb25lbnQgKDAgdG8gMSkgZGVmYXVsdHMgdG8gMSBvLnJlZE9mZnNldDogb2Zmc2V0IGZvciByZWQgY29tcG9uZW50ICgtMjU1IHRvIDI1NSkgZGVmYXVsdHMgdG8gMCBvLmdyZWVuTXVsdGlwbGllcjogbXVsdGlwbGllciBmb3IgZ3JlZW4gY29tcG9uZW50ICgwIHRvIDEpIGRlZmF1bHRzIHRvIDEgby5ncmVlbk9mZnNldDogb2Zmc2V0IGZvciBncmVlbiBjb21wb25lbnQgKC0yNTUgdG8gMjU1KSBkZWZhdWx0cyB0byAwIG8uYmx1ZU11bHRpcGxpZXI6IG11bHRpcGxpZXIgZm9yIGJsdWUgY29tcG9uZW50ICgwIHRvIDEpIGRlZmF1bHRzIHRvIDEgby5ibHVlT2Zmc2V0OiBvZmZzZXQgZm9yIGJsdWUgY29tcG9uZW50ICgtMjU1IHRvIDI1NSkgZGVmYXVsdHMgdG8gMCBvLmFscGhhTXVsdGlwbGllcjogbXVsdGlwbGllciBmb3IgYWxwaGEgY29tcG9uZW50ICgwIHRvIDEpIGRlZmF1bHRzIHRvIDEgby5hbHBoYU9mZnNldDogb2Zmc2V0IGZvciBhbHBoYSBjb21wb25lbnQgKC0yNTUgdG8gMjU1KSBkZWZhdWx0cyB0byAwICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xpcCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgCUNsaXAgdGhlIHZpZXcncyBjb250ZW50cyB0byBpdHMgc2l6ZS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsaWNrcmVnaW9uIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKwlTZXR0aW5nIHRvIGEgdmVjdG9yLWJhc2VkIHJlc291cmNlIGNoYW5nZXMgdGhlIGNsaWNrYWJsZSBob3RzcG90IGZvciB0aGUgbW91c2UuIENoZWNrIGNhcGFiaWxpdGllcy5jbGlja3JlZ2lvbiBiZWZvcmUgdXNpbmcgdG8gYXZvaWQgZGVidWdnZXIgd2FybmluZ3MuICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xpY2thYmxlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKwlJZiB0cnVlLCB0aGlzIHZpZXcgaW50ZXJjZXB0cyBjbGljayBldmVudHM7IG90aGVyd2lzZSB0aGV5IGFyZSBwYXNzZWQgdG8gaXRzIGNvbnRhaW5lci4gVGhpcyBkZWZhdWx0cyB0byB0cnVlIGlmIHRoZSB2aWV3IGRlZmluZXMgYSBtb3VzZSBldmVudCBoYW5kbGVyIG9yIGEgY3Vyc29yLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2VudGVyIiB0eXBlPSJseng6Ym9vbGVhbiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoaXMgZWxlbWVudCBpcyBvbmx5IGF2YWlsYWJsZSBpbiB0aGUgc3BsYXNoIFNXRiBzcGVjaWZpYyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2FwYWJpbGl0aWVzIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KK0FuIG9iamVjdCBjb250YWluaW5nIHByb3BlcnRpZXMgY29ycmVzcG9uZGluZyB0byB0aGUgY3VycmVudCBydW50aW1lJ3MgY2FwYWJpbGl0aWVzLiBGb3IgZXhhbXBsZSwgY2FwYWJpbGl0aWVzLnJvdGF0aW9uIGlzIHRydWUgaW4gc3dmIGFuZCByZWNlbnQgdmVyc2lvbnMgb2YgU2FmYXJpIGFuZCBGaXJlZm94LiAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNhY2hlYml0bWFwIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKwlBIHZhbHVlIG9mIHRydWUgbWVhbnMgdGhhdCB0aGlzIHZpZXcncyBiaXRtYXAgd2lsbCBiZSBjYWNoZWQsIGlmIGF2YWlsYWJsZS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJnY29sb3IiIHR5cGU9Imx6eDpjb2xvciIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCVRoZSBiYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSB2aWV3LiBTZXR0aW5nIGJnY29sb3IgdG8gbnVsbCB3aWxsIG1ha2UgdGhlIHZpZXcgdHJhbnNwYXJlbnQuIE1heSBiZSBzZXQgdG8gYW55IHZhbGlkIENTUyBjb2xvciBzcGVjaWZpY2F0aW9uLiBXaGVuIHJlYWQsIHdpbGwgYmUgcmVhZCBhcyB0aGUgZXF1aXZhbGVudCBudW1lcmljIHZhbHVlLiBUbyByZXRyaWV2ZSBhIENTUyBjb2xvciBzcGVjaWZpY2F0aW9uLCB1c2UgdGhpcy5wcmVzZW50QXR0cmlidXRlKCdiZ2NvbG9yJywgJ2NvbG9yJykuIERlZmF1bHQgaXMgbnVsbCAodHJhbnNwYXJlbnQpLiAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJhY2tncm91bmRyZXBlYXQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibm9yZXBlYXQiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKwlTZXR0aW5nIGJhY2tncm91bmRyZXBlYXQgY2F1c2VzIGEgdmlldyB0byByZXBlYXQgaXRzIHJlc291cmNlIHRvIGZpdCB0aGUgdmlldydzIHdpZHRoIGFuZC9vciBoZWlnaHQuIENhbiBiZSAncmVwZWF0JywgJ3JlcGVhdC14JywgJ3JlcGVhdC15JyBvciAnbm9yZXBlYXQnIHBlciB0aGUgQ1NTMSBiYWNrZ3JvdW5kLXJlcGVhdCBzdHlsZS4gCisJT25lIG9mOiAJInJlcGVhdCIgfCAicmVwZWF0LXgiIHwgInJlcGVhdC15IiB8ICJub3JlcGVhdCIgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFsaWduIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImxlZnQiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KK1NldHMgdGhlIGFsaWdubWVudCBmb3IgdGhlIHZpZXcgdG8gdGhlIGdpdmVuIHZhbHVlLiBUaGUgYWxpZ25tZW50IGlzIGJhc2VkIG9uIHRoZSBzaXplIG9mIHRoaXMgdmlldyBhcyBjb21wYXJlZCB0byB0aGUgc2l6ZSBvZiB0aGUgdmlldydzIGltbWVkaWF0ZSBwYXJlbnQuIAorCU9uZSBvZjogCSJsZWZ0IiB8ICJjZW50ZXIiIHwgInJpZ2h0IiB8IGNvbnN0cmFpbnQgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFhdGFiaW5kZXgiIHR5cGU9Imx6eDpudW1iZXIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKwlTZXQgYWNjZXNzaWJpbGl0eSB0YWIgb3JkZXIgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFhc2lsZW50IiB0eXBlPSJseng6Ym9vbGVhbiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIAlTZXQgYWNjZXNzaWJpbGl0eSBzaWxlbmNpbmcvdW5zaWxlbmNpbmcgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFhbmFtZSIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgCVNldCBhY2Nlc3NpYmlsaXR5IGRlc2NyaXB0aW9uIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhYWRlc2NyaXB0aW9uIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhYWFjdGl2ZSIgdHlwZT0ibHp4OmJvb2xlYW4iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyAJQWN0aXZhdGUvaW5hY3RpdmF0ZSBjaGlsZHJlbiBmb3IgYWNjZXNzaWJpbGl0eSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJzb2FwIiB0eXBlPSJseng6c29hcCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ic29hcCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnJwYyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IndzZGwiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFJlcXVpcmVkIGF0dHJpYnV0ZSB0aGF0IHNwZWNpZmllcyBXU0RMIHRvIHJlYWQgZm9yIHRoZSBTT0FQCisgICAgICAgICAgICAgIG9iamVjdC4gVGhlIHZhbHVlIGZvciB3c2RsIHNob3VsZCBiZSBhbiBocmVmLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VydmljZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgU09BUCBzZXJ2aWNlIHRvIGZldGNoLiBJZiBub3Qgc3BlY2lmaWVkLCB0aGUgZmlyc3Qgc2VydmljZQorICAgICAgICAgICAgICBlbmNvdW50ZXJlZCBpbiB0aGUgV1NETCBpcyB1c2VkLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVzcG9uc2VoZWFkZXJzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJZiBzZXQsIHRoZSBTT0FQIHJlc3BvbnNlIGhlYWRlciByZXR1cm5lZCBieSB0aGUgbGFzdAorICAgICAgICAgICAgICBjYWxsLiBUaGUgdmFsdWUgZm9yIHRoaXMgbXVzdCBiZSBhIGRhdGFzZXQuIERlZmF1bHQgaXMgbnVsbC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlcXVlc3RoZWFkZXJzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgU09BUCBoZWFkZXIgdG8gcGFzcyB3aXRoIGVhY2ggcmVxdWVzdC4gVGhpcyBjYW4gYmUgZWl0aGVyIGEKKyAgICAgICAgICAgICAgc3RyaW5nIG9yIGEgZGF0YXNldC4gRGVmYXVsdCBpcyBudWxsLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icHJvdG8iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBwcm90b3R5cGVzIHRoYXQgY2FuIGJlIHVzZWQgdG8gY3JlYXRlIG9iamVjdHMuIAorICAgICAgICAgICAgICBAa2V5d29yZHMgcmVhZG9ubHkgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBvcnQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIFNPQVAgcG9ydCB0byB1c2UuIElmIG5vdCBzcGVjaWZpZWQsIHRoZSBmaXJzdCBTT0FQIHBvcnQKKyAgICAgICAgICAgICAgZW5jb3VudGVyZWQgaW4gdGhlIFdTREwgaXMgdXNlZC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYmFzZWZvcm0iIHR5cGU9Imx6eDpiYXNlZm9ybSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYmFzZWZvcm0iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25jaGFuZ2VkIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBFdmVudCBzZW50IHdoZW4gYmFzZWZvcm1pdGVtIGlzIGNoYW5nZWQuIE9ubHkgc2VudCBvbmNlIHdoZW4gdHJ1ZQorICAgICAgICAgICAgICBvciBvbmNlIHdoZW4gZmFsc2UuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmb3JtZGF0YSIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSG9sZHMgYSByZWZlcmVuY2UgdG8gZWFjaCBkYXRhY29tcG9uZW50IGNvbnRhaW5lZCB3aXRoaW4gdGhlCisgICAgICAgICAgICAgIGZvcm0uIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaGFuZ2VkIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQm9vbGVhbiB0byBkZXRlcm1pbmUgd2hldGhlciB0aGUgYmFzZWZvcm1pdGVtIHdhcyBjaGFuZ2VkLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJyYW5nZXNsaWRlciIgdHlwZT0ibHp4OnJhbmdlc2xpZGVyIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQGtleXdvcmQgcHJpdmF0ZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJyYW5nZXNsaWRlciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmN1c3RvbWJhc2VzbGlkZXIiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtaW54IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtaW52YWx1ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJ0aGlzLm1pbmxpbWl0ICsgdGhpcy5sZWZ0a25vYi54ICogdGhpcy52YWx1ZXJhdGlvIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQGtleXdvcmQgcHJpdmF0ZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWF4eCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIke3BhcmVudC5yaWdodGtub2IueH0iID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtYXh2YWx1ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJ0aGlzLm1pbmxpbWl0ICsgdGhpcy5yaWdodGtub2IueCAqIHRoaXMudmFsdWVyYXRpbyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzTW91c2VEb3duIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJtZWRpYWRldmljZSIgdHlwZT0ibHp4Om1lZGlhZGV2aWNlIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJtZWRpYWRldmljZSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4Om5vZGUiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkZXZpY2VuYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIE5hbWUgb2YgdGhlIGRldmljZS4gCisgICAgICAgICAgICAgIEBrZXl3b3JkcyByZWFkb25seSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGV2aWNlaW5kZXgiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFplcm8tYmFzZWQgaW5kZXggb2YgdGhlIGRldmljZSwgb3IgbnVsbCBmb3IgdXNlcidzIGRlZmF1bHQgZGV2aWNlLiAKKyAgICAgICAgICAgICAgRGVmYXVsdCBpcyBudWxsLCB3aGljaCBzZWxlY3RzIHRoZSBkZWZhdWx0IGRldmljZS4gCisgICAgICAgICAgICAgIFdoZW4gdGhlIGRlZmF1bHQgZGV2aWNlIGlzIGluaXRpYWxpemVkLCBkZXZpY2VpbmRleCBpcyB1cGRhdGVkIHRvCisgICAgICAgICAgICAgIGl0cyBhY3R1YWwgaW5kZXguIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkZWJ1ZyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHNldCB0byB0cnVlIGZvciB2ZXJib3NlIGRlYnVnZ2luZyBtZXNzYWdlcyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2FwdHVyaW5nIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9InRydWUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBCb29sZWFuIGZsYWcgdGhhdCBjb250cm9scyBpZiB0aGUgbWVkaWEgZGV2aWNlCisgICAgICAgICAgICAgIGlzIGN1cnJlbnRseSBjYXB0dXJpbmcgaW5wdXQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbGxvd2VkIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVHJhY2tzIHdoZXRoZXIgdGhlIHVzZXIgaGFzIGFsbG93ZWQgZGV2aWNlIGFjY2Vzcy4gCisgICAgICAgICAgICAgIFRydWUgYWZ0ZXIgdXNlciBoYXMgYWNjZXB0ZWQgc2VjdXJpdHkgZGlhbG9nLAorICAgICAgICAgICAgICBmYWxzZSBpZiB0aGUgdXNlciBkZW5pZXMgYWNjZXNzIHdpdGggc2VjdXJpdHkgZGlhbG9nLgorICAgICAgICAgICAgICBAa2V5d29yZHMgcmVhZG9ubHkgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFjdGl2ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEZsYWcgdGhhdCB0cmFja3MgaWYgdGhlcmUncyBkZXZpY2UgYWN0aXZpdHkgKGF1ZGlvIHNvdW5kLCB2aWRlbyBtb3Rpb24pLiAKKyAgICAgICAgICAgICAgQGtleXdvcmRzIHJlYWRvbmx5IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImxlZ2VuZGl0ZW0iIHR5cGU9Imx6eDpsZWdlbmRpdGVtIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQGtleXdvcmQgcHJpdmF0ZQorICAgIGluZGl2aWR1YWwgbGVnZW5kIGl0ZW0gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibGVnZW5kaXRlbSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZXh0c2l6ZSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iJG9uY2V7bnVsbH0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgZm9udCBzaXplIG9mIHRoZSBsYWJlbCB0ZXh0IGZvciB0aGlzIGl0ZW0gaW4gdGhlIGxlZ2VuZC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRleHRjb2xvciIgdHlwZT0ibHp4OmNvbG9yIiBkZWZhdWx0PSIkb25jZXtudWxsfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBjb2xvciBvZiB0aGUgbGFiZWwgdGV4dCBmb3IgdGhpcyBpdGVtIGluIHRoZSBsZWdlbmQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsaW5ldmlzaWJsZSIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXRlbXZhbHVlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiRvbmNle251bGx9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHZhbHVlIGZvciB0aGlzIGl0ZW0gaW4gdGhlIGxlZ2VuZC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Iml0ZW1sYWJlbCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIkb25jZXtudWxsfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSB0ZXh0IGxhYmVsIGZvciB0aGlzIGl0ZW0uIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpZGVudGlmaWVyIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQGtleXdvcmQgcHJpdmF0ZQorICAgIGluZGl2aWR1YWwgbGVnZW5kIGl0ZW0gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imljb25zaGFwZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIkb25jZXtudWxsfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBzaGFwZSBvZiB0aGUgaWNvbiBkcmF3bi4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imljb25jb2xvciIgdHlwZT0ibHp4OmNvbG9yIiBkZWZhdWx0PSIkb25jZXtudWxsfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBjb2xvciBmb3IgdGhlIGljb24uIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJobGNvbG9yIiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9IiRvbmNle251bGx9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIGhpZ2hsaWdodCBjb2xvciB0byBiZSB1c2VkIHdoZW4gdGhpcyBpdGVtIGhhcyBiZWVuCisgICAgICAgICAgICBtb3VzZWQgb3Zlci4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZmFjZSIgdHlwZT0ibHp4OmZhY2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBEZWZpbmVzIGEgZm9udCBmYWNlIG9yIHN0eWxlIHdpdGhpbiB0aGUgZm9udCBmYW1pbHkgdGhhdCB0aGUgb3V0ZXIgZWxlbWVudCBkZWZpbmVzLgorIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImZhY2UiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmdyb3VwIHJlZj0ibHp4OnRvcExldmVsRWxlbWVudHMiIC8+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN0eWxlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImJvbGR8aXRhbGljfGJvbGQgaXRhbGljfGl0YWxpYyBib2xkfHBsYWluIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisJQ29ycmVzcG9uZHMgdG8gdGhlIGZvbnRzdHlsZSBhdHRyaWJ1dGUgb2YgYSB2aWV3LgorICAgIE9uZSBvZjogCWJvbGQgfCBpdGFsaWMgfCBib2xkIGl0YWxpYyB8IGl0YWxpYyBib2xkIHwgcGxhaW4gIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzcmMiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCVRoZSBwYXRoIG9mIGEgZmlsZSB0aGF0IGNvbnRhaW5zIHRoZSBzb3VyY2UgZm9yIHRoaXMgb2JqZWN0LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InZzbGlkZXJ0cmFjayIgdHlwZT0ibHp4OnZzbGlkZXJ0cmFjayIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idnNsaWRlcnRyYWNrIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ic2ltcGxlbGF5b3V0IiB0eXBlPSJseng6c2ltcGxlbGF5b3V0IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJzaW1wbGVsYXlvdXQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpsYXlvdXQiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzcGFjaW5nIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBBIHBpeGVsIGFtb3VudCB0byB1c2UgYmV0d2VlbiBlYWNoIHZpZXcgaW4gdGhlIGxheW91dCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW5zZXQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEEgcGl4ZWwgYW1vdW50IHRvIGluc2V0IHRoZSBmaXJzdCB2aWV3IGNvbnRyb2xsZWQgYnkgdGhlIGxheW91dDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJheGlzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9InkiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgYXhpcyBpbiB3aGljaCB0aGlzIGxheW91dCBvcGVyYXRlcy4gT25lIG9mICd4JyBvciAneScuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Im5ld3ZzY3JvbGxiYXIiIHR5cGU9Imx6eDpuZXd2c2Nyb2xsYmFyIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHZlcnRpY2FsIHNjcm9sbGJhciBtYW5pcHVsYXRlcyB0aGUgeSBwb3NpdGlvbiBvZiBhIHRhcmdldCB2aWV3IHRoYXQgaXMKKyAgICAgIGNsaXBwZWQgYnkgaXRzIHBhcmVudCwgY3JlYXRpbmcgYSBzY3JvbGxpbmcgZWZmZWN0IHdoZW4gdGhlIHVzZXIKKyAgICAgIGNsaWNrcyB1cC9kb3duIGFycm93cywgY2xpY2tzIG9uIHRoZSBzY3JvbGwgdHJhY2sgb3IgZHJhZ3MgdGhlIHRodW1iLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJuZXd2c2Nyb2xsYmFyIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZXNjcm9sbGJhciI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ic2lsdmVyc3R5bGUiIHR5cGU9Imx6eDpzaWx2ZXJzdHlsZSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ic2lsdmVyc3R5bGUiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpzdHlsZSI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0idmlld3Nwb29sIiB0eXBlPSJseng6dmlld3Nwb29sIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQGtleXdvcmQgcHJpdmF0ZQorICAgICBSZXByZXNlbnRzIGEgcG9vbCBvZiB2aWV3IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InZpZXdzcG9vbCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4Om5vZGUiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2aWV3Y2xhc3MiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJG9uY2V7bnVsbH0iID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1c2VkIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiRvbmNle1tdfSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVudXNlZCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIkb25jZXtbXX0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBAa2V5d29yZCBwcml2YXRlCisgICAgIFJlcHJlc2VudHMgYSBwb29sIG9mIHZpZXcgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBhcmVudHZpZXciIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJG9uY2V7bnVsbH0iID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InBhcmFtIiB0eXBlPSJseng6cGFyYW0iID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InBhcmFtIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6bm9kZSI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZhbHVlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBWYWx1ZSB0byB1c2UgZm9yIHBhcmFtZXRlci4gQSAmbHQ7Y29kZSZndDtnZXRWYWx1ZSgpJmx0Oy9jb2RlJmd0OyBtZXRob2QgY2FuIGJlIGRlY2xhcmVkCisgICAgICAgICAgICAgIGluc2lkZSBwYXJhbSB0byB1c2UgaXRzIHJldHVybiBhcyB0aGUgcGFyYW1ldGVyIHZhbHVlLiBJZiBib3RoCisgICAgICAgICAgICAgICZsdDtjb2RlJmd0O3ZhbHVlJmx0Oy9jb2RlJmd0OyBhdHRyaWJ1dGUgYW5kICZsdDtjb2RlJmd0O2dldFZhbHVlKCkmbHQ7L2NvZGUmZ3Q7IG1ldGhvZCBhcmUgZGVjbGFyZWQsIHBhcmFtIHdpbGwgdXNlCisgICAgICAgICAgICAgICZsdDtjb2RlJmd0O2dldFZhbHVlKCkmbHQ7L2NvZGUmZ3Q7LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJkYXRlcGlja2VyZGF5IiB0eXBlPSJseng6ZGF0ZXBpY2tlcmRheSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoaXMgaXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBkYXRlcGlja2VyZGF5IGZvciAKKyAgICAgICAgICB0aGUgZGF0ZXBpY2tlciA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJkYXRlcGlja2VyZGF5IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZWRhdGVwaWNrZXJkYXkiPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImNvbHVtbmNoYXJ0cGxvdGFyZWEiIHR5cGU9Imx6eDpjb2x1bW5jaGFydHBsb3RhcmVhIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQGtleXdvcmRzIHByaXZhdGUKKyAgICAgcGxvdGFyZWEgb2YgY29sdW1uIGNoYXJ0IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImNvbHVtbmNoYXJ0cGxvdGFyZWEiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aXJ0dWFsZHJhd3ZpZXciPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Im11bHRpcGxlZmlsZXVwbG9hZCIgdHlwZT0ibHp4Om11bHRpcGxlZmlsZXVwbG9hZCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibXVsdGlwbGVmaWxldXBsb2FkIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im51bWZpZWxkcyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIxIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgbnVtYmVycyBvZiBmaWxldXBsb2FkbGlzdCAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlcnJvcm9jY3VyZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEVycm9yIG9jY3VyZWQ8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJuZXdoc2Nyb2xsYmFyIiB0eXBlPSJseng6bmV3aHNjcm9sbGJhciIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEEgc2Nyb2xsYmFyIG1hbmlwdWxhdGVzIHRoZSB4IG9yIHkgcG9zaXRpb24gb2YgYSB0YXJnZXQgdmlldyB0aGF0IGlzCisgICAgICBjbGlwcGVkIGJ5IGl0cyBwYXJlbnQsIGNyZWF0aW5nIGEgc2Nyb2xsaW5nIGVmZmVjdCB3aGVuIHRoZSB1c2VyIGNsaWNrcworICAgICAgdXAvZG93biBhcnJvd3MsIGNsaWNrcyBvbiB0aGUgc2Nyb2xsIHRyYWNrIG9yIGRyYWdzIHRoZSB0aHVtYi4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibmV3aHNjcm9sbGJhciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmJhc2VzY3JvbGxiYXIiPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Im51bWJlcnZhbGlkYXRvciIgdHlwZT0ibHp4Om51bWJlcnZhbGlkYXRvciIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibnVtYmVydmFsaWRhdG9yIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZXZhbGlkYXRvciI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRvb3NtYWxsRXJyb3JzdHJpbmciIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iVGhpcyBudW1iZXIgaXMgdG9vIHNtYWxsLiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRvb2JpZ0Vycm9yc3RyaW5nIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IlRoaXMgbnVtYmVyIGlzIHRvbyBsYXJnZS4iID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJub3RudW1iZXJFcnJvcnN0cmluZyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJUaGlzIGZpZWxkIGNvbnRhaW5zIGludmFsaWQgY2hhcmFjdGVycy4iID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJub3RpbnRFcnJvcnN0cmluZyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJFbnRlciBpbnRlZ2VyIHZhbHVlLiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1pbnZhbHVlIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWF4dmFsdWUiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkb21haW4iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0icmVhbCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYmFzZXRhYmVsZW1lbnQiIHR5cGU9Imx6eDpiYXNldGFiZWxlbWVudCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYmFzZXRhYmVsZW1lbnQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNlbGlzdGl0ZW0iPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbm9wZW5zdG9wIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBTZW50IGF0IHRoZSBlbmQgb2YgdGhlIG9wZW4gYW5pbWF0aW9uLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25vcGVuc3RhcnQiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFNlbnQgYXQgdGhlIHN0YXJ0IG9mIHRoZSBvcGVuIGFuaW1hdGlvbi4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uY2xvc2VzdG9wIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBTZW50IGF0IHRoZSBlbmQgb2YgdGhlIGNsb3NlIGFuaW1hdGlvbi4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uY2xvc2VzdGFydCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgU2VudCBhdCB0aGUgc3RhcnQgb2YgdGhlIGNsb3NlIGFuaW1hdGlvbi4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1pbmhlaWdodCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMjIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgaGVpZ2h0IHRoZSB0YWIgd2lsbCBjbG9zZSB0by4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Iml0ZW1jbGFzc25hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgV2hlbiBjcmVhdGluZyB0YWJlbGVtZW50cyB2aWEgYWRkaXRlbSwgdGhpcyBpcyB0aGUgY2xhc3MgdGhhdCBnZXRzCisgICAgICAgICAgICAgIGNyZWF0ZWQuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHRoZSBjbGFzcyBvZiB0aGUgZmlyc3QgdGFiZWxlbWVudCBvcgorICAgICAgICAgICAgICBpdHMgZGVzY2VuZGFudC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImhpZGVvbmNsb3NlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9InRydWUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBDb250ZW50IGlzIGF1dG9tYXRpY2FsbHkgaGlkZGVuIHdoZW4gdGFiZWxlbWVudCBpcyBjbG9zZWQuIFRvCisgICAgICAgICAgICAgIG92ZXJyaWRlLCBzZXQgdGhpcyBhdHRyaWJ1dGUgdG8gZmFsc2UuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJoZWFkZXJoZWlnaHQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IiRvbmNle21pbmhlaWdodH0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgaGVpZ2h0IG9mIHRoZSBoZWFkZXIuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb250ZW50dmlzaWJsZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIkb25jZXshIGhpZGVvbmNsb3NlfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoaXMgaXMgc2V0IHRvIHRydWUgd2hlbiBhIGJhc2V0YWJlbGVtZW50IGJlZ2lucyB0byBvcGVuIGFuZCBpcworICAgICAgICAgICAgICBzZXQgdG8gZmFsc2Ugd2hlbiBpdCBmaW5pc2hlcyBpdHMgY2xvc2UuIERlZmF1bHQgaXMgdGhlIGludmVyc2Ugb2YKKyAgICAgICAgICAgICAgaGlkZW9uY2xvc2UuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJhc2V0cmVlIiB0eXBlPSJseng6YmFzZXRyZWUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBBbiBhYnN0cmFjdCBiYXNlIGNsYXNzIHRvIGJ1aWxkIHRyZWUgY29udHJvbHMuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImJhc2V0cmVlIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZWNvbXBvbmVudCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InlpbmRlbnQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgU3BhY2luZyB0byBpbmRlbnQgdHJlZXMgb24gdGhlIHktYXhpcy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InhpbmRlbnQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjEwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgU3BhY2luZyB0byBpbmRlbnQgdHJlZXMgb24gdGhlIHgtYXhpcy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRvZ2dsZXNlbGVjdGVkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBNZWFuaW5nZnVsIG9ubHkgaW4gcm9vdC4gRmxhZyB0byB0b2dnbGUgc2VsZWN0ZWQgbm9kZXMuCisgICAgICAgICAgICAgIEBrZXl3b3JkcyBmaW5hbCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2hvd3Jvb3QiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgTWVhbmluZ2Z1bCBvbmx5IGluIHJvb3QgdHJlZS4gSWYgZmFsc2UsIHRoZSByb290IGl0ZW0gaXMgaW52aXNpYmxlCisgICAgICAgICAgICAgIGFuZCBpdHMgY2hpbGRyZW4gYXJlIGRpc3BsYXllZC4KKyAgICAgICAgICAgICAgQGtleXdvcmRzIGZpbmFsIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWxlY3RlZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQ2hlY2sgdG8gc2VlIGlmIHRoaXMgdHJlZSBpcyBzZWxlY3RlZC4gRGVmYXVsdCBpcyBmYWxzZSwgZXhjZXB0CisgICAgICAgICAgICAgIGZvciB0aGUgcm9vdCBvZiBhIHRyZWUsIHdoaWNoIGl0cyBzZWxlY3RlZCBhdHRyaWJ1dGUgaXMgc2V0IHRvCisgICAgICAgICAgICAgIHRydWUuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWN1cnNlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIE1lYW5pbmdmdWwgb25seSB3aXRoIGRhdGEgcmVwbGljYXRpb24uIElmIHRydWUsIGl0IHdpbGwKKyAgICAgICAgICAgICAgcmVjdXJzaXZlbHkgZm9sbG93IHRoZSBkYXRhcGF0aCdzIGNoaWxkcmVuLgorICAgICAgICAgICAgICBAa2V5d29yZHMgZmluYWwgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9wZW4iIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIENoZWNrIHRvIHNlZSBpZiB0aGlzIHRyZWUgaXMgb3Blbi4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uc2VsZWN0ZWQiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoaXMgZXZlbnQgZ2V0cyB0cmlnZ2VyZWQgd2hlbmV2ZXIgdGhpcyB0cmVlIGlzIHNlbGVjdGVkLiBUaGUKKyAgICAgICAgICAgICAgdmFsdWUgb2YgdGhlIHNlbGVjdGlvbiAodHJ1ZSBvciBmYWxzZSkgaXMgc2VudCB3aXRoIHRoaXMKKyAgICAgICAgICAgICAgZXZlbnQuCisgICAgICAgICAgICAgIE5vdGUgdGhlIGFyZ3Mgb2YgdGhpcyBoYXMgY2hhbmdlZCBmcm9tIHRoZSBwcmV2aW91cyByZWxlYXNlLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25zZWxlY3QiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoaXMgZXZlbnQgZ2V0cyB0cmlnZ2VyZWQgd2hlbmV2ZXIgdGhpcyB0cmVlIGlzIHNlbGVjdGVkLiBUaGlzCisgICAgICAgICAgICAgIHRyZWUgaXMgc2VudCB3aXRoIHRoZSBldmVudC4gVGhlIHRyZWUgcm9vdCBhbHNvIHJlY2VpdmVzIHRoaXMKKyAgICAgICAgICAgICAgZXZlbnQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbm9wZW4iIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoaXMgZXZlbnQgZ2V0cyB0cmlnZ2VyZWQgd2hlbmV2ZXIgdGhpcyB0cmVlIGlzIG9wZW4uIFRoZSBvcGVuCisgICAgICAgICAgICAgIHZhbHVlIG9mIHRoaXMgdHJlZSBpcyBhbHNvIHNlbnQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmZvY3VzZWQiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoaXMgZXZlbnQgZ2V0cyB0cmlnZ2VyZWQgd2hlbmV2ZXIgdGhpcyB0cmVlIGlzIGZvY3VzZWQuIFRoZSB2YWx1ZQorICAgICAgICAgICAgICBvZiB0aGUgZm9jdXMgKHRydWUgb3IgZmFsc2UpIGlzIHNlbnQgd2l0aCB0aGlzIGV2ZW50LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibXVsdGlzZWxlY3QiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIE1lYW5pbmdmdWwgb25seSBpbiByb290LiBXaGV0aGVyIHRvIG11bHRpc2VsZWN0IGl0ZW1zLgorICAgICAgICAgICAgICBAa2V5d29yZHMgZmluYWwgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzbGVhZiIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSWYgdHJ1ZSwgdGhpcyBiYXNldHJlZSBpcyBhIGxlYWYgbm9kZS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZvY3Vzc2VsZWN0IiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBNZWFuaW5nZnVsIG9ubHkgaW4gcm9vdC4gRmxhZyB0byBzZWxlY3QgYSB0cmVlIG9uIGZvY3VzLgorICAgICAgICAgICAgICBAa2V5d29yZHMgZmluYWwgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZvY3Vzb3ZlcmxheSIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgTWVhbmluZ2Z1bCBvbmx5IGluIHJvb3QuIElmIGZvY3Vzc2VsZWN0IGlzIGZhbHNlIGFuZCBmb2N1c292ZXJsYXkKKyAgICAgICAgICAgICAgaXMgdHJ1ZSwgdGhlbiBmb2N1cyBoYXMgYSB2aXN1YWwgYnJhY2tldCBvdmVybGF5IG92ZXIgdGhlIGZvY3VzZWQKKyAgICAgICAgICAgICAgdHJlZS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZvY3VzZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIElmIHRydWUsIHRoaXMgdHJlZSBpcyBmb2N1c2VkLgorICAgICAgICAgICAgICBAa2V5d29yZHMgcmVhZG9ubHkgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsb3Nlc2libGluZ3MiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEZsYWcgdG8gY2xvc2Ugb3RoZXIgc2libGluZ3Mgd2hlbiB0aGlzIHRyZWUgaXMgb3Blbi4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsb3NlY2hpbGRyZW4iIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIENsb3NlIGFsbCBpbW1lZGlhdGUgY2hpbGRyZW4gd2hlbiB0aGlzIHRyZWUgaXMgY2xvc2VkLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYXV0b3Njcm9sbCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQXV0byBzY3JvbGwgaWYgdHJlZSBpcyBjbGlwcGVkLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJkZWJ1ZyIgdHlwZT0ibHp4OmRlYnVnIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisKKyAgICAgQGx6eG5hbWUgZGVidWcKKyAgICAgQGtleXdvcmRzIHByaXZhdGVfY29uc3RydWN0b3IKKyAgICAgQGFjY2VzcyBwdWJsaWMKKyAgICAgQHRvcGljIExaWAorICAgICBAc3VidG9waWMgRGVidWdnaW5nCisgICAgIEBkZXZub3RlIE5PVEUgWzIwMDgtMTEtMjUgcHR3XSBEdW1teSBjbGFzcyB0byBob2xkIGRvY3VtZW50YXRpb24gZm9yIGRlYnVnIHRhZworICAgICBAZGV2bm90ZSBUT0RPIFsyMDA4LTExLTI2IHB0d10gTWFrZSB0aGlzIHRoZSByZWFsIGNsYXNzIQorICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJkZWJ1ZyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImRhdGFjb2x1bW4iIHR5cGU9Imx6eDpkYXRhY29sdW1uIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgZGF0YWNvbHVtbiBjb250YWluIGEgbGlzdCBvZiB2YWx1ZXMgb2YgYSBzZXJpZXMuIExpc3Qgb2YgdmFsdWVzIHR5cGljYWxseSBhcmUgZGF0YSBmb3IgeCBzZXJpZXMsCisgICAgICAgIHkgc2VyaWVzLCB0b29sdGlwIHNlcmllcyBhbmQgZGF0YWxhYmVsIHNlcmllcy4KKyAgICAgICAgQGFjY2VzcyBwdWJsaWMKKyAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJkYXRhY29sdW1uIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZhbHVlcyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIkb25jZXtudWxsfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGFycmF5IG9mIGRhdGEgcmVwcmVzZW50aW5nIHRoZSBzZXJpZXMgdmFsdWVzIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYWJlbGRhdGFwYXRoIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHRoZSBuYW1lIG9mIHRoZSBsYWJlbCBpbiB0aGUgZGF0YXBhdGggZm9yIHRoZSBzZXJpZXMgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRhdGF0eXBlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9InN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHR5cGUgb2YgZGF0YTogc3RyaW5nIG9yIG51bWJlciA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGF0YWRvbmUiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHRydWUgd2hlbiBkYXRhIGhhZCBiZWVuIGxvYWRlZCBhdCBsZWFzdCBvbmNlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2x1bW5kYXRhcGF0aCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyB0aGUgbmFtZSBvZiB0aGUgY29sdW1uIGluIHRoZSBkYXRhcGF0aCBmb3IgdGhlIHNlcmllcyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJoc3BsaXRwYW5lIiB0eXBlPSJseng6aHNwbGl0cGFuZSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iaHNwbGl0cGFuZSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzaXplcl93aWR0aCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSI1IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmhzX3BsYWNlZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGhzX3dpZHRoX3N0YXJ0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjE4MCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imxoc19wbGFjZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imxoc19taW5fd2lkdGgiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMTAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsaHNfbWF4X3dpZHRoIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiR7dGhpcy53aWR0aC0yMH0iID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJib3JkZXJzaXplIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjEiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJib3JkZXJjb2xvciIgdHlwZT0ibHp4OmNvbG9yIiBkZWZhdWx0PSIweDAwMDAwMCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibWVkaWFzdHJlYW0iIHR5cGU9Imx6eDptZWRpYXN0cmVhbSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibWVkaWFzdHJlYW0iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpub2RlIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idXJsIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSB1cmwgb2YgdGhlIG1lZGlhc3RyZWFtLCBtYXliZSBiZSByZWxhdGl2ZSBVUkwsIAorICAgICAgICAgIGZvciBleGFtcGxlOiBodHRwOi8vbG9jYWxob3N0L215dmlkZW8uZmx2LCBvciBzaW1wbHkgbXl2aWRlby5mbHYKKyAgICAgICAgICB3aGVuIHR5cGU9InJ0bXAiIHRoZSB1cmwgaXMgYWx3YXlzIHJlbGF0aXZlIHRvIHRoZSBydG1wY29ubmVjdGlvbi4KKyAgICAgICAgICBAdHlwZSBTdHJpbmcKKyAgICAgICAgICBAYWNjZXNzIHB1YmxpYworICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0eXBlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Imh0dHAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBQcm90b2NvbCAicnRtcCIgb3IgImh0dHAiLgorICAgICAgICAgIEB0eXBlIFN0cmluZworICAgICAgICAgIEBhY2Nlc3MgcHVibGljCisgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRvdGFsdGltZSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRvdGFsIGxlbmd0aCAoaW4gc2Vjb25kcykgb2YgbWVkaWFzdHJlYW0gY3VycmVudGx5IHBsYXlpbmcuCisgICAgICAgICAgQHR5cGUgTnVtYmVyCisgICAgICAgICAgQGFjY2VzcyBwdWJsaWMKKyAgICAgICAgICBAa2V5d29yZHMgcmVhZG9ubHkKKyAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGltZSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEN1cnJlbnQgdGltZSBvZiBtZWRpYXN0cmVhbSBjdXJyZW50bHkgcGxheWluZyBvciByZWNvcmRpbmcgKGluIHNlY29uZHMpCisgICAgICAgICAgQHR5cGUgTnVtYmVyCisgICAgICAgICAgQGFjY2VzcyBwdWJsaWMKKyAgICAgICAgICBAa2V5d29yZHMgcmVhZG9ubHkKKyAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3RyZWFtbmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgcnRtcCBzdHJlYW1uYW1lICh3aXRob3V0IC5mbHYgc3VmZml4KS4KKyAgICAgICAgICBAdHlwZSBTdHJpbmcKKyAgICAgICAgICBAYWNjZXNzIHB1YmxpYworICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJydG1wIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgcnRtcCBjb25uZWN0aW9uIHRvIHVzZSAoZGVmYXVsdHMgdG8gdGhlIGZpcnN0IG9uZSBjcmVhdGVkKS4KKyAgICAgICAgICBAdHlwZSBsei5ydG1wY29ubmVjdGlvbgorICAgICAgICAgIEBhY2Nlc3MgcHVibGljCisgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlY29yZGluZyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIke3RoaXMubW9kZSA9PSAncmVjb3JkaW5nJ30iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUcnVlIGlmIHJlY29yZGluZyByaWdodCBub3cuCisgICAgICAgICAgQHR5cGUgQm9vbGVhbiAKKyAgICAgICAgICBAYWNjZXNzIHB1YmxpYworICAgICAgICAgIEBrZXl3b3JkcyByZWFkb25seQorICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwcm9ncmVzcyIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFByb2dyZXNzIG9mIG1lZGlhc3RyZWFtIGN1cnJlbnRseSBkb3dubG9hZGluZy4KKyAgICAgICAgICAoZnJvbSAwIGZvciBub25lIHRvIDEgZm9yIGFsbCkuCisgICAgICAgICAgQHR5cGUgTnVtYmVyCisgICAgICAgICAgQGFjY2VzcyBwdWJsaWMKKyAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGxheWluZyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIkeyh0aGlzLm1vZGUgPT0gJ3BsYXlpbmcnKSAmYW1wOyZhbXA7ICghdGhpcy5wYXVzZWQpfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRydWUgaWYgcGxheWluZyByaWdodCBub3cuCisgICAgICAgICAgQHR5cGUgQm9vbGVhbiAgIAorICAgICAgICAgIEBhY2Nlc3MgcHVibGljCisgICAgICAgICAgQGtleXdvcmRzIHJlYWRvbmx5CisgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBhdXNlZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVHJ1ZSB0byBwYXVzZSBwbGF5YmFjay4gTmFtZWQgdGhpcyB3YXkgdG8gcHVuIHdpdGggcGF1c2VkIGZvciBhbmltYXRvcnMuCisgICAgICAgICAgQHR5cGUgQm9vbGVhbgorICAgICAgICAgIEBhY2Nlc3MgcHVibGljCisgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uc3RvcCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgRXZlbnQgc2VudCB3aGVuIHBsYXlpbmcgb3IgcmVjb3JkaW5nIHN0b3BzLgorICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbnN0YXJ0IiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBFdmVudCBzZW50IHdoZW4gcGxheWluZyBvciByZWNvcmRpbmcgc3RhcnRzLgorICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbm1ldGFkYXRhIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBFdmVudCBzZW50IHdoZW4gbWV0YWRhdGEgaXMgcmVjZWl2ZWQsIHdob3NlIHBhcmFtZXRlciBpcyBhIAorICAgIGRpY3Rpb25hcnkgb2YgbWV0YWRhdGEuICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25pbnN1ZmZpY2llbnRiYW5kd2lkdGgiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEV2ZW50IHNlbnQgd2hlbiBpbnN1ZmZpY2llbnQgYmFuZHdpZHRoLgorICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmN1ZXBvaW50IiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBFdmVudCBzZW50IHdoZW4gYSBjdWUgcG9pbnQgb2NjdXJzLAorICAgICAgICAgIHdob3NlIHBhcmFtZXRlciBpcyBhIGRpY3Rpb25hcnkgb2YgbWV0YWRhdGEuCisgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im11dGV2aWRlbyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRydWUgaWZmIHZpZGVvIGlzIG11dGVkLgorICAgICAgICAgIEB0eXBlIEJvb2xlYW4gCisgICAgICAgICAgQGFjY2VzcyBwdWJsaWMKKyAgICAgICAgICBAa2V5d29yZHMgcmVhZG9ubHkKKyAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibXV0ZWF1ZGlvIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVHJ1ZSBpZmYgYXVkaW8gaXMgbXV0ZWQuCisgICAgICAgICAgQHR5cGUgQm9vbGVhbiAKKyAgICAgICAgICBAYWNjZXNzIHB1YmxpYworICAgICAgICAgIEBrZXl3b3JkcyByZWFkb25seQorICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtb2RlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIE1vZGU6ICIiIGlmIGRvaW5nIG5vdGhpbmcsICJwbGF5aW5nIiBpZiBwbGF5aW5nLAorICAgICAgICAgICJicm9hZGNhc3RpbmciIGlmIGNhbiBiZSByZWNlaXZlZCwgInJlY29yZGluZyIgaWYgcmVjb3JkaW5nLgorICAgICAgICAgIFJlY29yZGluZyBhbHNvIGltcGxpZXMgY2FuIGJlIHJlY2VpdmVkLCBpLmUuLCBicm9hZGNhc3RpbmcuIAorICAgICAgICAgIFBhdXNpbmcgZG9lcyBub3QgYWZmZWN0IHRoZSBtb2RlLCB1bmxpa2Ugc3RvcHBpbmcuCisgICAgICAgICAgQHR5cGUgU3RyaW5nCisgICAgICAgICAgQGFjY2VzcyBwdWJsaWMKKyAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWljIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBBIHJlZmVyZW5jZSB0byB0aGUgbWljcm9waG9uZS4gVGhpcyBtdXN0IGJlIHNldCBpZiBicm9hZGNhc3RpbmcuCisgICAgICAgICAgVGhpcyBpcyBzZXQgYXV0b21hdGljYWxseSBpZiB0aGUgc3RyZWFtIGlzIGEgY2hpbGQgb2YgYSB2aWRlb3ZpZXcuCisgICAgICAgICAgQHR5cGUgbHoubWljcm9waG9uZQorICAgICAgICAgIEBhY2Nlc3MgcHVibGljCisgICAgICAgICAgQGtleXdvcmRzIHJlYWRvbmx5CisgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZwcyIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBjdXJyZW50IGZyYW1lcyBwZXIgc2Vjb25kIGZvciBwbGF5aW5nIHZpZGVvLgorICAgICAgICAgIEB0eXBlIE51bWJlcgorICAgICAgICAgIEBhY2Nlc3MgcHVibGljCisgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRlYnVnIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgV2hlbiB0cnVlLCBwcmludCBleHRyYSBpbmZvIHRvIHRoZSBkZWJ1Z2dlci4KKyAgICAgICAgICBAdHlwZSBCb29sZWFuCisgICAgICAgICAgQGFjY2VzcyBwdWJsaWMKKyAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2FtIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBBIHJlZmVyZW5jZSB0byB0aGUgY2FtZXJhLiBUaGlzIG11c3QgYmUgc2V0IGlmIGJyb2FkY2FzdGluZy4KKyAgICAgICAgICBUaGlzIGlzIHNldCBhdXRvbWF0aWNhbGx5IGlmIHRoZSBzdHJlYW0gaXMgYSBjaGlsZCBvZiBhIHZpZGVvdmlldy4KKyAgICAgICAgICBAdHlwZSBsei5jYW1lcmEKKyAgICAgICAgICBAYWNjZXNzIHB1YmxpYworICAgICAgICAgIEBrZXl3b3JkcyByZWFkb25seQorICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJidWZmZXJ0aW1lIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwLjEiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBBbW91bnQgb2YgdGltZSAoaW4gc2Vjb25kcykgdG8gYnVmZmVyIGJlZm9yZSBzdGFydGluZyB0byBkaXNwbGF5IHRoZSAKKyAgICAgICAgICBzdHJlYW0uICBGb3IgYSBwdWJsaXNoaW5nIHN0cmVhbSwgYnVmZmVyVGltZSBzcGVjaWZpZXMgaG93IGxvbmcgdGhlIAorICAgICAgICAgIG91dGdvaW5nIGJ1ZmZlciBjYW4gZ3JvdyBiZWZvcmUgdGhlIGFwcGxpY2F0aW9uIHN0YXJ0cyBkcm9wcGluZyAKKyAgICAgICAgICBmcmFtZXMuCisgICAgICAgICAgQHR5cGUgTnVtYmVyCisgICAgICAgICAgQGFjY2VzcyBwdWJsaWMKKyAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYnJvYWRjYXN0aW5nIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiR7KHRoaXMubW9kZSA9PSAnYnJvYWRjYXN0aW5nJykgfHwgKHRoaXMubW9kZSA9PSAncmVjb3JkaW5nJyl9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVHJ1ZSBpZiBicm9hZGNhc3RpbmcgcmlnaHQgbm93LgorICAgICAgICAgIEB0eXBlIEJvb2xlYW4gCisgICAgICAgICAgQGFjY2VzcyBwdWJsaWMKKyAgICAgICAgICBAa2V5d29yZHMgcmVhZG9ubHkKKyAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYXV0b3Jld2luZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJZiB0cnVlLCB2aWRlbyB3aWxsIGF1dG9tYXRpY2FsbHkgcmV3aW5kIHRvIHRoZSBiZWdpbm5pbmcKKyAgICAgICAgICAoYW5kIHJlbWFpbiBpbiBhIHBhdXNlZCBzdGF0ZSkgd2hlbiBwbGF5YmFjayBlbmRzLgorICAgICAgICAgIEB0eXBlIEJvb2xlYW4KKyAgICAgICAgICBAYWNjZXNzIHB1YmxpYworICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhdXRvcGxheVN0YXJ0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IidlaXRoZXInIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQXV0b3BsYXkgc3RhcnQgYXJndW1lbnQgcGFzc2VkIHRvIG1lZGlhc3RyZWFtLnBsYXkoKS4KKyAgICAgICAgICBTZWUgdGhlIG1lZGlhc3RyZWFtLnBsYXkgZG9jdW1lbnRhdGlvbiBmb3IgaXRzIHZhbHVlcy4gCisgICAgICAgICAgQHR5cGUgU3RyaW5nCisgICAgICAgICAgQGFjY2Vzc3MgcHVibGljCisgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImF1dG9wbGF5UmVzZXQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0idHJ1ZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEF1dG9wbGF5IHJlc2V0IGFyZ3VtZW50IHBhc3NlZCB0byBtZWRpYXN0cmVhbS5wbGF5KCkuIAorICAgICAgICAgIFNlZSB0aGUgbWVkaWFzdHJlYW0ucGxheSBkb2N1bWVudGF0aW9uIGZvciBpdHMgdmFsdWVzLiAKKyAgICAgICAgICBAdHlwZSBCb29sZWFuCisgICAgICAgICAgQGFjY2VzcyBwdWJsaWMKKyAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYXV0b3BsYXlQYXVzZSIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQXV0b3BsYXkgcGF1c2UgYXJndW1lbnQgcGFzc2VkIHRvIG1lZGlhc3RyZWFtLnBsYXkoKS4KKyAgICAgICAgICBTZWUgdGhlIG1lZGlhc3RyZWFtLnBsYXkgZG9jdW1lbnRhdGlvbiBmb3IgaXRzIHZhbHVlcy4gCisgICAgICAgICAgQHR5cGUgQm9vbGVhbgorICAgICAgICAgIEBhY2Nlc3MgcHVibGljCisgICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhdXRvcGxheUxlbmd0aCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSInZW5kJyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEF1dG9wbGF5IGxlbmd0aCBhcmd1bWVudCBwYXNzZWQgdG8gbWVkaWFzdHJlYW0ucGxheSgpLiAKKyAgICAgICAgICBTZWUgdGhlIG1lZGlhc3RyZWFtLnBsYXkgZG9jdW1lbnRhdGlvbiBmb3IgaXRzIHZhbHVlcy4gCisgICAgICAgICAgQHR5cGUgU3RyaW5nCisgICAgICAgICAgQGFjY2VzcyBwdWJsaWMKKyAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYXV0b3BsYXkiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIElmIHRydWUsIHZpZGVvIHdpbGwgc3RhcnQgcGxheWluZyBhcyBzb29uIGFzIHVybCBpcyBzZXQuCisgICAgICAgICAgQHR5cGUgQm9vbGVhbgorICAgICAgICAgIEBhY2Nlc3MgcHVibGljCisgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iX3BsYWluZmxvYXRzaGFkb3ciIHR5cGU9Imx6eDpfcGxhaW5mbG9hdHNoYWRvdyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBzaGFkb3dzIHdpZHRoIGFuZCBoZWlnaHQgYXJlIHNldCB0byB0aGUgd2lkdGggYW5kIGhlaWdodCBvZiB0aGUgdmlldworICAgICAgICAgIGl0IGlzIHRyeWluZyB0byBhcHBseSBhIHNoYWRvdyB0by4KKyAgICAgICAgICBAa2V5d29yZHMgcHJpdmF0ZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJfcGxhaW5mbG9hdHNoYWRvdyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzaGFkb3dzaXplIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjEuNSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9mZnNldHkiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMTAiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InNjcm9sbGJhciIgdHlwZT0ibHp4OnNjcm9sbGJhciIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ic2Nyb2xsYmFyIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZXNjcm9sbGJhciI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRpc2FibGVkYmdjb2xvciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSWYgdGhpcyBpcyBkZWZpbmVkLCBpdCB3aWxsIGJlIHVzZWQgYXMgdGhlIHNjcm9sbGJhcidzIGJhY2tncm91bmQKKyAgICAgICAgICBjb2xvciB3aGVuIGl0IGlzIGRpc2FibGVkLiBJZiBub3QgcHJvdmlkZWQsIHRoZSBzY3JvbGxiYXIgd2lsbCB1c2UKKyAgICAgICAgICB0aGUgYmdjb2xvciBvZiBpdHMgY2xvc2VzdCBwYXJlbnQgdGhhdCBoYXMgYSBiZ2NvbG9yIGRlZmluZWQuICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJzZXR0ZXIiIHR5cGU9Imx6eDpzZXR0ZXIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBBIHRhZyB0byBkZWNsYXJlIG9yIG92ZXJyaWRlIGF0dHJpYnV0ZSBzZXR0ZXIgbWV0aG9kcy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ic2V0dGVyIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpncm91cCByZWY9Imx6eDp0b3BMZXZlbEVsZW1lbnRzIiAvPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBBIHRhZyB0byBkZWNsYXJlIG9yIG92ZXJyaWRlIGF0dHJpYnV0ZSBzZXR0ZXIgbWV0aG9kcy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFyZ3MiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJiYXNlZGF0ZXBpY2tlciIgdHlwZT0ibHp4OmJhc2VkYXRlcGlja2VyIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQWJzdHJhY3QgY2xhc3MgZm9yIHRoZSBkYXRlcGlja2VyLiAgVGhlIGJhc2VkYXRlcGlja2VyIGNsYXNzCisgICAgICAgICAgc2hvd3MgdGhlIGRheXMgb2YgdGhlIHdlZWsgaW4gYSB0eXBpY2FsIG1vbnRoIGJhc2VkIGxheW91dC4gIEV4dGVuZAorICAgICAgICAgIHRoaXMgY2xhc3MgdG8gY3JlYXRlIGEgZnVsbCBmZWF0dXJlZCBVSSBvZiBhIGRhdGVwaWNrZXIsIG9yIGp1c3QgdXNlCisgICAgICAgICAgdGhlIGRhdGVwaWNrZXIgY29tcG9uZW50LgorICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImJhc2VkYXRlcGlja2VyIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZWNvbXBvbmVudCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InlpbnNldCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBudW1iZXIgaWYgcGl4ZWxzIGZyb20gdGhpcy55IHRvIHNob3cgdGhlIGRhdGVwaWNrZXIgZGF5cyAKKyAgICAgICAgICAgICAgQGtleXdvcmRzIHB1YmxpYyAKKyAgICAgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InhpbnNldCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBudW1iZXIgaWYgcGl4ZWxzIGZyb20gdGhpcy54IHRvIHNob3cgdGhlIGRhdGVwaWNrZXIgZGF5cyAKKyAgICAgICAgICAgICAgQGtleXdvcmRzIHB1YmxpYyAKKyAgICAgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IndlZWtjbGFzcyIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHdlZWtjbGFzcyB0byB1c2UgZm9yIHRoaXMgYmFzZWRhdGVwaWNrZXIgCisgICAgICAgICAgICAgIEBrZXl3b3JkcyBwdWJsaWMgCisgICAgICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzaG93aW5neWVhciIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSB5ZWFyIHRoYXQgaXMgY3VycmVudGx5IHNob3dpbmcgaW4gdGhlIGRhdGVwaWNrZXIuCisgICAgICAgICAgICAgIEBrZXl3b3JkcyBwdWJsaWMKKyAgICAgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNob3dpbmdtb250aCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBtb250aCB0aGF0IGlzIGN1cnJlbnRseSBzaG93aW5nIGluIHRoZSBkYXRlcGlja2VyLgorICAgICAgICAgICAgICBAa2V5d29yZHMgcHVibGljCisgICAgICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzaG93aW5nZGF0ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQSBEYXRlIG9iamVjdCB3aGljaCByZXByZXNlbnRzIHRoZSBtb250aCB0byBiZSBzaG93bi4gCisgICAgICAgICAgICAgIEBrZXl3b3JkcyBwdWJsaWMgCisgICAgICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWxlY3RlZGRhdGVwaWNrZXJkYXkiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBkYXRlcGlja2VyZGF5IHdoaWNoIGhhcyBiZWVuIHNlbGVjdGVkLiAKKyAgICAgICAgICAgICAgQGtleXdvcmRzIHB1YmxpYyAgCisgICAgICAgICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWxlY3RlZGRhdGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBEYXRlIHRoYXQgaXMgY3VycmVudGx5IHNlbGVjdGVkLgorICAgICAgICAgICAgICBAa2V5d29yZHMgcHVibGljIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYXRlc3RkYXRlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgbGF0ZXN0IGRhdGUgdGhhdCBpcyBzZWxlY3RhYmxlLiAKKyAgICAgICAgICAgICAgQGtleXdvcmRzIHB1YmxpYyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaGFzZm9jdXMiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVhcmxpZXN0ZGF0ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIGVhcmxpZXN0IGRhdGUgdGhhdCBpcyBzZWxlY3RhYmxlLiAKKyAgICAgICAgICAgICAgQGtleXdvcmRzIHB1YmxpYyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGF5Y2xhc3MiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBkYXljbGFzcyB0byB1c2UgZm9yIHRoaXMgYmFzZWRhdGVwaWNrZXIgCisgICAgICAgICAgICAgIEBrZXl3b3JkcyBwdWJsaWMgCisgICAgICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImNvbG9yYm94IiB0eXBlPSJseng6Y29sb3Jib3giID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImNvbG9yYm94IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9iaiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sb3IiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iY2hhcnRiZ3N0eWxlIiB0eXBlPSJseng6Y2hhcnRiZ3N0eWxlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+Cisgc3R5bGUgZm9yIGNoYXJ0IGJhY2tncm91bmQKKyAgICAgIEBhY2Nlc3MgcHVibGljCisgICAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJjaGFydGJnc3R5bGUiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNlc3R5bGUiPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Im15c2xpZGVyIiB0eXBlPSJseng6bXlzbGlkZXIiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Im15c2xpZGVyIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6c2xpZGVyIj4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJjaGFydGxlZ2VuZCIgdHlwZT0ibHp4OmNoYXJ0bGVnZW5kIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQSBsZWdlbmQgZm9yIGNoYXJ0cyBhbmQgZ3JhcGhzLiBJdCBpcyBpbXBlcmF0aXZlCisgICAgICAgIHRoYXQgdGhpcyBpcyBkZWNsYXJlZCBhdCB0aGUgdmVyeSBlbmQgb2YgYSBjaGFydC4KKyAgICAgICAgKE9mIGJldGEgcXVhbGl0eS4pIER1ZSB0byBhIGNvdXBsZSBidWdzIGluIGRyYXd2aWV3LAorICAgICAgICBwZXJmb3JtYW5jZSBpcyBzcG90dHkgaW4gREhUTUwuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImNoYXJ0bGVnZW5kIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6ZHJhd3ZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0aXRsZXRleHRzaXplIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxMiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFNpemUgb2YgdGhlIGxlZ2VuZCB0aXRsZSdzIHRleHQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0aXRsZXBvc2l0aW9uIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImxlZnQiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgcG9zaXRpb24gb2YgdGhlIHRpdGxlOiBsZWZ0LCByaWdodCwgY2VudGVyLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGl0bGVjb2xvciIgdHlwZT0ibHp4OmNvbG9yIiBkZWZhdWx0PSIjMDAwMDAwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQ29sb3Igb2YgdGhlIGxlZ2VuZCB0aXRsZSdzIHRleHQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZXh0c2l6ZSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMTAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBTaXplIG9mIHRoZSB0ZXh0IGluIGxlZ2VuZCBpdGVtcy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRleHRjb2xvciIgdHlwZT0ibHp4OmNvbG9yIiBkZWZhdWx0PSIjMDAwMDAwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQ29sb3Igb2YgdGhlIHRleHQgaW4gbGVnZW5kIGl0ZW1zLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVzaXpldG9kYXRhIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiRvbmNle251bGx9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgV2hldGhlciB0byByZXNpemUgdGhlIGxlZ2VuZCB0byB0aGUgZGF0YS4gIElmIG5vdCwgdGhpcyB3aWxsCisgICAgICAgICAgICB1c2UgdGhlIHNwZWNpZmllZCB3aWR0aCBhbmQgaGVpZ2h0IGZvciB0aGUgbGVnZW5kLCBhbmQgZml0CisgICAgICAgICAgICBsZWdlbmQgaXRlbXMgaW50byB0aGlzIHNpemUgdG8gdGhlIGJlc3Qgb2YgaXRzIGFiaWxpdHkuICBJZiBzbywKKyAgICAgICAgICAgIHRoaXMgd2lsbCB1c2UgYSByb3VnaCBndWVzcyBhdCBsZWdlbmQgaXRlbSBkaW1lbnNpb25zLCBhbmQKKyAgICAgICAgICAgIHJlc2l6ZSB0aGUgbGVnZW5kLiAgQWNjZXB0ZWQgdmFsdWVzOiAidGFsbCIsICJ3aWRlIiwgIiRvbmNle251bGx9Ii4KKyAgICAgICAgICAgICJ0YWxsIiB3aWxsIG1ha2UgYSB0YWxsZXIgbGVnZW5kLCAid2lkZSIgd2lsbCBtYWtlIGEgd2lkZXIgbGVnZW5kLAorICAgICAgICAgICAgIiRvbmNle251bGx9IiB3aWxsIG5vdCByZXNpemUuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwb3NpdCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJyaWdodCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBwb3NpdGlvbiBvZiB0aGUgbGVnZW5kOiBsZWZ0LCByaWdodCwgdG9wLCBib3R0b20sIG1hbnVhbGxlZnQsCisgICAgICAgICAgICBtYW51YWxyaWdodCwgbWFudWFsdG9wLCBtYW51YWxib3R0b20uCisgICAgICAgICAgICBJZiBsZWZ0IG9yIHJpZ2h0LCB0aGUgbGVnZW5kIHdpbGwgYmVoYXZlIGFzIHRob3VnaAorICAgICAgICAgICAgcmVzaXpldG9kYXRhPSJ0YWxsIiBpcyBpbiBlZmZlY3QuICBJZiB0b3Agb3IgYm90dG9tLAorICAgICAgICAgICAgdGhlIGxlZ2VuZCB3aWxsIGJlaGF2ZSBhcyB0aG91Z2ggcmVzaXpldG9kYXRhPSJ3aWRlIiBpcworICAgICAgICAgICAgaW4gZWZmZWN0LiAgSWYgbWFudWFsLCBhZGRpdGlvbmFsIHZhbHVlcyBtdXN0IGJlIHNldCB0bworICAgICAgICAgICAgcGxhY2UgYW5kIHNpemUgbGVnZW5kLCBhbmQgdGhlIGxlZ2VuZCB3aWxsIGZpdCB0aGUKKyAgICAgICAgICAgIGxlZ2VuZGl0ZW1zIHdpdGhpbiB0aGUgbGVnZW5kIHRvIHRoZSBiZXN0IG9mIGl0cyBhYmlsaXR5LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGllcmFkaXVzIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgUmFkaXVzIG9mIHRoZSBwaWUuICBUaGlzIGhlbHBzIGRldGVybWluZSBwbGFjZW1lbnQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwaWVwaWVjZXMiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJG9uY2V7W119IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgUGllIHBpZWNlcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBsZWdlbmQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwaWVjZWNvbG9ycyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIkb25jZXtbXX0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBSZXNwZWN0aXZlIHBpZWNlIGNvbG9ycy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imx0aXRsZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIkb25jZXtudWxsfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBsZWdlbmQgdGl0bGUsIGlmIGFueS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxlZ2VuZHkiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJZiBwb3NpdCBpcyAnbWFudWFsJywgdGhpcyBzZXRzIHRoZSB5IGNvb3JkaW5hdGUgb2YgdGhlIGxlZ2VuZC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxlZ2VuZHgiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJZiBwb3NpdCBpcyAnbWFudWFsJywgdGhpcyBzZXRzIHRoZSB4IGNvb3JkaW5hdGUgb2YgdGhlIGxlZ2VuZC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxlZ2VuZHdpZHRoIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSWYgcG9zaXQgaXMgJ21hbnVhbCcsIHRoaXMgc2V0cyB0aGUgd2lkdGggb2YgdGhlIGxlZ2VuZC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxlZ2VuZHZhbHVlcyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIkb25jZXtbXX0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgdmFsdWVzIHRvIHVzZSBpbiB0aGUgbGVnZW5kLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGVnZW5kaGVpZ2h0IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSWYgcG9zaXQgaXMgJ21hbnVhbCcsIHRoaXMgc2V0cyB0aGUgaGVpZ2h0IG9mIHRoZSBsZWdlbmQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpdGVtbnVtcyIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIE51bWJlciBvZiBpdGVtcyBpbiB0aGUgbGVnZW5kLiAoYS5rLmEuIE51bWJlciBvZiBwaWUgcGllY2VzLikgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImhsY29sb3IiIHR5cGU9Imx6eDpjb2xvciIgZGVmYXVsdD0iJG9uY2V7bnVsbH0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgaGlnaGxpZ2h0IGNvbG9yIG9mIGluZGl2aWR1YWwgbGVnZW5kIGl0ZW1zLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hhcnR0eXBlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiRvbmNle3R5cGVvZiBsaW5lY2hhcnQgIT0gJ3VuZGVmaW5lZCcgPyAgICAgICAgICAgICAgICAgKHBhcmVudCBpbnN0YW5jZW9mIGx6LmxpbmVjaGFydCA/ICdsaW5lJyA6IG51bGwpIDogbnVsbH0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgdHlwZSBvZiBjaGFydCBhc3NvY2lhdGVkIHdpdGggdGhpcyBsZWdlbmQuCisgICAgICAgICAgICBDdXJyZW50bHksIG9ubHkgbmVlZHMgdG8gYmUgc3BlY2lmaWVkIGlmIHRoaXMKKyAgICAgICAgICAgIGlzIHVzZWQgb24gYSBwaWVjaGFydC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNlbnRlcnkiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBDZW50ZXIgeCBjb29yZGluYXRlIG9mIHRoZSBwaWUuICBUaGlzIGhlbHBzIGRldGVybWluZQorICAgICAgICAgICAgcGxhY2VtZW50LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2VudGVyeCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIENlbnRlciB4IGNvb3JkaW5hdGUgb2YgdGhlIHBpZS4gIFRoaXMgaGVscHMgZGV0ZXJtaW5lCisgICAgICAgICAgICBwbGFjZW1lbnQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJib3JkZXJ3aWR0aCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSB3aWR0aCBvZiB0aGUgYm9yZGVyIGFyb3VuZCB0aGUgbGVnZW5kLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyIiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9IiRvbmNle251bGx9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIGNvbG9yIG9mIHRoZSBib3JkZXIgYXJvdW5kIHRoZSBsZWdlbmQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJiYWNrY29sb3IiIHR5cGU9Imx6eDpjb2xvciIgZGVmYXVsdD0iJG9uY2V7bnVsbH0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgYmFja2dyb3VuZCBjb2xvciBvZiB0aGUgbGVnZW5kLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJiYXNldGFicGFuZSIgdHlwZT0ibHp4OmJhc2V0YWJwYW5lIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJiYXNldGFicGFuZSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmJhc2Vjb21wb25lbnQiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0YWJjbGFzcyIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHRhYmNsYXNzIHRvIHVzZSB0byBpbnN0YW50aWF0ZSBpdHMgYXNzb2NpYXRlZCB0YWIuIFRoaXMKKyAgICAgICAgICAgICAgb3ZlcnJpZGVzIHRoZSBiYXNldGFicyB0YWJjbGFzcy4gTGVhdmUgdW5kZWZpbmVkIGhlcmUgc28gdGhhdAorICAgICAgICAgICAgICBiYXNldGFicyBjYW4gaGF2ZSBpdC4KKyAgICAgICAgICAgICAgQGtleXdvcmRzIGZpbmFsIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0YWIiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSB0YWIgYXNzb2NpYXRlZCB3aXRoIHRoaXMgYmFzZXRhYnBhbmUuCisgICAgICAgICAgICAgIEBrZXl3b3JkcyByZWFkb25seSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VsZWN0ZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIElmIGEgYmFzZXRhYnBhbmUgaXMgc2VsZWN0ZWQsIHRoZW4gaXQgd2lsbCBiZSBzaG93bi4KKyAgICAgICAgICAgICAgSXRzIGFzc29jaWF0ZWQgdGFiIHdpbGwgYmUgYWxzbyBiZSBzZWxlY3RlZC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imluc2V0X3RvcCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iJHtwYXJlbnQuaW5zZXRfdG9wfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRvcCBpbnNldCBmb3IgYmFzZXRhYnBhbmUgaW4gdGFicyBjb250ZW50LiBEZWZhdWx0IGlzIGJhc2V0YWJzJ3MKKyAgICAgICAgICAgICAgaW5zZXRfdG9wLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW5zZXRfcmlnaHQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IiR7cGFyZW50Lmluc2V0X3JpZ2h0fSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFJpZ2h0IGluc2V0IGZvciBiYXNldGFicGFuZSBpbiB0YWJzIGNvbnRlbnQuIERlZmF1bHQgaXMgYmFzZXRhYnMncworICAgICAgICAgICAgICBpbnNldF9yaWdodC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imluc2V0X2xlZnQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IiR7cGFyZW50Lmluc2V0X2xlZnR9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgTGVmdCBpbnNldCBmb3IgYmFzZXRhYnBhbmUgaW4gdGFicyBjb250ZW50LiBEZWZhdWx0IGlzIGJhc2V0YWJzJ3MKKyAgICAgICAgICAgICAgaW5zZXRfbGVmdC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imluc2V0X2JvdHRvbSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iJHtwYXJlbnQuaW5zZXRfYm90dG9tfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEJvdHRvbSBpbnNldCBmb3IgYmFzZXRhYnBhbmUgaW4gdGFicyBjb250ZW50LiBEZWZhdWx0IGlzIGJhc2V0YWJzJ3MKKyAgICAgICAgICAgICAgaW5zZXRfYm90dG9tLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJfZGJnX2x6dmRyYWciIHR5cGU9Imx6eDpfZGJnX2x6dmRyYWciID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Il9kYmdfbHp2ZHJhZyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnN0YXRlIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ieWRvZmZzZXQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0idGhpcy5nZXRNb3VzZSggJ3knICkiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ5IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiR7dGhpcy5pbW1lZGlhdGVwYXJlbnQuZ2V0TW91c2UoICd5JyApIC0gdGhpcy55ZG9mZnNldH0iID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImIiIHR5cGU9Imx6eDpiIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSFRNTCBzcGVjaWZpYyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJiIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpncm91cCByZWY9Imx6eDp0b3BMZXZlbEVsZW1lbnRzIiAvPgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ic2Nyb2xsZWRpdHRleHQiIHR5cGU9Imx6eDpzY3JvbGxlZGl0dGV4dCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEltcGxlbWVudHMgdmlzdWFsIGJhc2VlZGl0dGV4dCB3aXRoIHNjcm9sbGJhci4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ic2Nyb2xsZWRpdHRleHQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNlZWRpdHRleHQiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2c2Nyb2xsYmFyY2xhc3NuYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9InZzY3JvbGxiYXIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBOYW1lIG9mIGNsYXNzIHRvIGluc3RhbnRpYXRlIGZvciB2ZXJ0aWNhbCBzY3JvbGwgYmFyLgorICAgICAgICAgICAgICBAa2V5d29yZHMgcHVibGljIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwb3MiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtYXh0ZXh0aGVpZ2h0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiR7dGhpcy5saW5laGVpZ2h0ICogdGhpcy5tYXhzY3JvbGx9IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWF4aGVpZ2h0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiR7dGhpcy5oZWlnaHQgKyB0aGlzLm1heHRleHRoZWlnaHR9IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJbXBsZW1lbnRzIHZpc3VhbCBiYXNlZWRpdHRleHQgd2l0aCBzY3JvbGxiYXIuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImEiIHR5cGU9Imx6eDphIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSFRNTCBzcGVjaWZpYyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJhIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpncm91cCByZWY9Imx6eDp0b3BMZXZlbEVsZW1lbnRzIiAvPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0YXJnZXQiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCVRoZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSBkZXRlcm1pbmVzIHdoZXJlIHRoZSBsaW5rIHRhcmdldCB3aWxsIGJlIGRpc3BsYXllZC4gVGhlIGludGVycHJldGF0aW9uIGlzIHRoZSBzYW1lIGFzIGluIEhUTUwsIHdoZXJlIHRoZSAiY3VycmVudCBmcmFtZSIgaXMgdGhlIGZyYW1lIGNvbnRhaW5pbmcgdGhlIExaWCBhcHBsaWNhdGlvbi4gVGhlIHZhbHVlIG11c3QgYmUgYSBuYW1lIGJlZ2lubmluZyB3aXRoIGFuIGFscGhhYmV0aWMgY2hhcmFjdGVyLCBvciBvbmUgb2YgdGhlIGZvbGxvd2luZzoKKworX2JsYW5rCisgICAgVGhlIHVzZXIgYWdlbnQgc2hvdWxkIGxvYWQgdGhlIGRlc2lnbmF0ZWQgZG9jdW1lbnQgaW4gYSBuZXcsIHVubmFtZWQgd2luZG93LiAKK19wYXJlbnQKKyAgICBUaGUgdXNlciBhZ2VudCBzaG91bGQgbG9hZCB0aGUgZG9jdW1lbnQgaW50byB0aGUgZnVsbCwgb3JpZ2luYWwgd2luZG93ICh0aHVzIGNhbmNlbGluZyBhbGwgb3RoZXIgZnJhbWVzKS4gVGhpcyB2YWx1ZSBpcyBlcXVpdmFsZW50IHRvIF9zZWxmIGlmIHRoZSBjdXJyZW50IGZyYW1lIGhhcyBubyBwYXJlbnQuIAorX3NlbGYKKyAgICBUaGUgdXNlciBhZ2VudCBzaG91bGQgbG9hZCB0aGUgZG9jdW1lbnQgaW4gdGhlIHNhbWUgZnJhbWUgYXMgdGhlIGVsZW1lbnQgdGhhdCByZWZlcnMgdG8gdGhpcyB0YXJnZXQuIAorX3RvcAorICAgIFRoZSB1c2VyIGFnZW50IHNob3VsZCBsb2FkIHRoZSBkb2N1bWVudCBpbnRvIHRoZSBpbW1lZGlhdGUgRlJBTUVTRVQgcGFyZW50IG9mIHRoZSBjdXJyZW50IGZyYW1lLiBUaGlzIHZhbHVlIGlzIGVxdWl2YWxlbnQgdG8gX3NlbGYgaWYgdGhlIGN1cnJlbnQgZnJhbWUgaGFzIG5vIHBhcmVudC4gCisKKwkgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImhyZWYiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIAlUaGUgbGluayB0YXJnZXQgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJsaW5lY2hhcnQiIHR5cGU9Imx6eDpsaW5lY2hhcnQiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBBIGNoYXJ0IGNsYXNzIHRoYXQgcmVuZGVycyBhcyBsaW5lcy4KKyAgICAgIEluaGVyaXRzIGZyb20gdGhlIGNoYXJ0IGNsYXNzLgorICAgICAgKFdhcm5pbmc6IE9mIGJldGEgcXVhbGl0eS4pCisgICAgICBAYWNjZXNzIHB1YmxpYworICAgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibGluZWNoYXJ0IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZWNoYXJ0Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25taW5pbXVtIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBXaGVuZXZlciBtaW5pbXVtLCBtYXhpbXVtLCBhbHRtaW5pbXVtIGFuZCBhbHRtYXhpbXVtIGFyZSBjaGFuZ2VkLCB0aGUKKyAgICAgICAgICAgIGNoYXJ0IG5lZWRzIHRvIGJlIHJlZHJhd24gZW50aXJlbHkuICAoTm9ybWFsbHksIHRpY2sgYW5kIGRhdGEgbGFiZWxzIGFyZW4ndAorICAgICAgICAgICAgcmVkcmF3biwgYmVjYXVzZSBpdCB3b3VsZCBiZSBmYXIgdG9vIGh1Z2UgYSByZXNvdXJjZSBkcmFnIHRvIGNvbnRpbnVhbGx5CisgICAgICAgICAgICBicmVhayBkb3duIGFuZCByZWJ1aWxkIHRoZW0gd2hlbmV2ZXIgYSBwZXJzb24gem9vbWVkIGluLiAgSW5zdGVhZCwgdGhleSdyZQorICAgICAgICAgICAgY29uc3RyYWluZWQgdG8gc2NhbGUgdG8gdGhlIGFwcHJvcHJpYXRlIGRpc3RhbmNlcyBmcm9tIGVhY2ggb3RoZXIuKSAgV2hlbgorICAgICAgICAgICAgdGhlIG1pbnMgYW5kIG1heGVzIGFyZSBjaGFuZ2VkLCBob3dldmVyLCB0aGUgc2NhbGluZyBnZXRzIHRocm93biBvZmYgZm9yCisgICAgICAgICAgICBleGlzdGluZyBvYmplY3RzLiAgVGhlc2UgaGFuZGxlcnMgZW5zdXJlcyB0aGF0IHdoZW4gdGhlc2UgdmFsdWVzIGFyZSBjaGFuZ2VkLAorICAgICAgICAgICAgdGhlIGxhYmVscyBhcmUgYnJva2VuIGRvd24gYW5kIHJlZHJhd24uIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbm1heGltdW0iIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uYWx0bWluaW11bSIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25hbHRtYXhpbXVtIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkcmF3cmVhZHkiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIExpbmUgZHJhd3ZpZXcuICBUaGlzIGRyYXdzIGFsbCB0aGUgbGluZXMgb2YgdGhlIGNoYXJ0LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJzZXNzaW9ucnBjIiB0eXBlPSJseng6c2Vzc2lvbnJwYyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ic2Vzc2lvbnJwYyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnJwYyI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ic3R5bGVwYXJzZXIiIHR5cGU9Imx6eDpzdHlsZXBhcnNlciIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEBrZXl3b3JkIHByaXZhdGUKK1RoaXMgY2xhc3MgY29tcGxldGUgdGhlIGNoYXJ0IHN0eWxlIGNsYXNzIGluIGNhc2UgdGhlIGRldmVsb3BlciBoYXMgbm90IGRlZmluZWQgdGhlIGNoYXJ0IHN0eWxlcyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJzdHlsZXBhcnNlciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdHlsZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIke251bGx9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHVzZXIncyBkZWZpbmVkIHN0eWxlLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNsZWFmIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGVzdCBpZiB0aGUgY3VycmVudCBzdHlsZSdzIG5vZGUgaGFzIG5vIG1vcmUgY2hpbGRyZW4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imhhc2NoaWxkcmVuIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGVzdCBpZiB0aGUgY3VycmVudCBzdHlsZSdzIG5vZGUgaGFzIGNoaWxkcmVuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkZWZhdWx0c3R5bGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJHtudWxsfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBkYWZhdWx0IGRlZmluZWQgc3R5bGUuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InRpY2tzdHlsZSIgdHlwZT0ibHp4OnRpY2tzdHlsZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHRpY2tzdHlsZSBpcyB1c2VkIGJ5IHRoZSBheGlzIHN0eWxlIHRvIHJlbmRlciBtYWpvciBhbmQgbWlub3IgdGlja3Mgb24gYSBjaGFydC4KKyAgICAgTk9URTogdGlja3N0eWxlIGV4dGVuZHMgbGluZXN0eWxlCisgICAgIEBhY2Nlc3MgcHVibGljCisgICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRpY2tzdHlsZSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmxpbmVzdHlsZSI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Imluc2lkZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGluc2lkZSB8IG91dHNpZGUgfCBjZW50ZXJlZCB8IG5vbmUgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsZW5ndGgiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBsZW5ndGggb2YgdGljayBpbiBwaXhlbHMgcGVycGVuZGljdWFsciB0byB0aGUgYXhpcyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJjb25zdGFudGJvdW5kc2xheW91dCIgdHlwZT0ibHp4OmNvbnN0YW50Ym91bmRzbGF5b3V0IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJjb25zdGFudGJvdW5kc2xheW91dCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmxheW91dCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZhbHVlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgY29uc3RhbnQgdmFsdWUgdGhhdCBpcyBhcHBsaWVkIHRvIHRoZSBhdHRyaWJ1dGUKKyAgICAgICAgICAgICAgKCBkZWZpbmVkIGluICdheGlzJyBhcyAneCcgb3IgJ3knICkgb2YgZWFjaCBzdWJ2aWV3IGluIHRoZSBsYXlvdXQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJheGlzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9InkiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgYXhpcyBpbiB3aGljaCB0aGlzIGxheW91dCBvcGVyYXRlcyBlaXRoZXIgJ3gnIG9yICd5Jy4gIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InByaW50ZXIiIHR5cGU9Imx6eDpwcmludGVyIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJwcmludGVyIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6bm9kZSI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iaSIgdHlwZT0ibHp4OmkiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBIVE1MIHNwZWNpZmljIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImkiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmdyb3VwIHJlZj0ibHp4OnRvcExldmVsRWxlbWVudHMiIC8+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ2YWx1ZXBvaW50c3R5bGUiIHR5cGU9Imx6eDp2YWx1ZXBvaW50c3R5bGUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyB2YWx1ZXBvaW50c3R5bGUgaXMgdXNlZCB0byBzZXQgc3R5bGUgdG8gdGhlIAorICAgICBOT1RFOiB2YWx1ZWxpbmVzdHlsZSBleHRlbmRzIGJhc2VzdHlsZQorICAgICBAYWNjZXNzIHB1YmxpYworICAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ2YWx1ZXBvaW50c3R5bGUiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNlc3R5bGUiPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InUiIHR5cGU9Imx6eDp1IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSFRNTCBzcGVjaWZpYyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ1IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpncm91cCByZWY9Imx6eDp0b3BMZXZlbEVsZW1lbnRzIiAvPgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iaHNjcm9sbGJhciIgdHlwZT0ibHp4OmhzY3JvbGxiYXIiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImhzY3JvbGxiYXIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNlc2Nyb2xsYmFyIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGlzYWJsZWRiZ2NvbG9yIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJZiB0aGlzIGlzIGRlZmluZWQsIGl0IHdpbGwgYmUgdXNlZCBhcyB0aGUgc2Nyb2xsYmFyJ3MgYmFja2dyb3VuZAorICAgICAgICAgIGNvbG9yIHdoZW4gaXQgaXMgZGlzYWJsZWQuIElmIG5vdCBwcm92aWRlZCwgdGhlIHNjcm9sbGJhciB3aWxsIHVzZQorICAgICAgICAgIHRoZSBiZ2NvbG9yIG9mIGl0cyBjbG9zZXN0IHBhcmVudCB0aGF0IGhhcyBhIGJnY29sb3IgZGVmaW5lZC4gIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImxlZ2VuZCIgdHlwZT0ibHp4OmxlZ2VuZCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCisgICAgIHNpbXBsZSBsZWdlbmQgY2xhc3MKKyAgICAgQGFjY2VzcyBwdWJsaWMKKyAgICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImxlZ2VuZCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmRyYXd2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmVydGljYWxnYXAiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjQiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBAa2V5d29yZCBwcml2YXRlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0b3BtYXJnaW4iIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBAa2V5d29yZCBwcml2YXRlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdHlsZUJvcmRlciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSW5kaWNhdGVzIHRoZSBzdHlsZSB3aWxsIGJlIGFwcGxpZWQgdGhvIHRoZSBib3JkZXIgbGVnZW5kIGJveCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmlnaHRtYXJnaW4iIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBAa2V5d29yZCBwcml2YXRlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwb3NpdGlvbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJyaWdodCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEluZGljYXRlcyB3aGVyZSB0aGUgbGVnZW5kIGJveCB3aWxsIGJlIHBvc2l0aW9uZWQsIGRlZmF1bHQ6IHJpZ2h0IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbml0ZW1tb3VzZXVwIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBldmVudCB0aGF0IGFsbG93cyBjdXN0b20gYWN0aW9uIGZvciBtb3VzZSB1cCBldmVudAorICAgICAgICAgICAgQHBhcmFtIE51bWJlciBpdGVtOiBUaGUgaWRlbnRpZmllciBsZWdlbmQgaXRlbQorICAgICAgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uaXRlbW1vdXNlb3ZlciIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgZXZlbnQgdGhhdCBhbGxvd3MgY3VzdG9tIGFjdGlvbiBmb3IgbW91c2Ugb3ZlciBldmVudAorICAgICAgICAgICAgQHBhcmFtIE51bWJlciBpdGVtOiBUaGUgaWRlbnRpZmllciBsZWdlbmQgaXRlbQorICAgICAgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uaXRlbW1vdXNlb3V0IiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBldmVudCB0aGF0IGFsbG93cyBjdXN0b20gYWN0aW9uIGZvciBtb3VzZSBvdXQgZXZlbnQKKyAgICAgICAgICAgIEBwYXJhbSBOdW1iZXIgaXRlbTogVGhlIGlkZW50aWZpZXIgbGVnZW5kIGl0ZW0KKyAgICAgICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbml0ZW1tb3VzZWRvd24iIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGV2ZW50IHRoYXQgYWxsb3dzIGN1c3RvbSBhY3Rpb24gZm9yIG1vdXNlIGRvd24gZXZlbnQKKyAgICAgICAgICAgIEBwYXJhbSBOdW1iZXIgaXRlbTogVGhlIGlkZW50aWZpZXIgbGVnZW5kIGl0ZW0KKyAgICAgICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbml0ZW1tb3VzZWNsaWNrIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBldmVudCB0aGF0IGFsbG93cyBjdXN0b20gYWN0aW9uIGZvciBtb3VzZSBjbGljayBldmVudAorICAgICAgICAgICAgQHBhcmFtIE51bWJlciBpdGVtOiBUaGUgaWRlbnRpZmllciBsZWdlbmQgaXRlbQorICAgICAgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxlZ2VuZGJvcmRlciIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJbmRpY2F0ZXMgaWYgbGVnZW5kIGJveCB3aWxsIGhhdmUgYSBib3JkZXIsIGRlZmF1bHQ6IHRydWUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxlZ2VuZEZvbnRzaXplIiB0eXBlPSJseng6c2l6ZSIgZGVmYXVsdD0iMTAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJbmRpY2F0ZXMgdGhlIEZvbnQgc2l6ZSB3aWlsIGJlIHVzZWQgaW4gdGhlIGxlZ2VuZCBpdGVtIHRleHQsIGRlZmF1bHQ6IDEwcHggPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxlZ2VuZEZvbnRjb2xvciIgdHlwZT0ibHp4OmNvbG9yIiBkZWZhdWx0PSIweDAwMDAwMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEluZGljYXRlcyB0aGUgRm9udCBjb2xvciB3aWlsIGJlIHVzZWQgaW4gdGhlIGxlZ2VuZCBpdGVtIHRleHQsIGRlZmF1bHQ6IGJsYWNrIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsZWdlbmRGb250IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9InNlcmlmIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSW5kaWNhdGVzIHRoZSBGb250IHdpbGwgYmUgdXNlZCBpbiB0aGUgbGVnZW5kIGl0ZW0gdGV4dCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGVmdG1hcmdpbiIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iNSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEBrZXl3b3JkIHByaXZhdGUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZpbGxDb2xvciIgdHlwZT0ibHp4OmNvbG9yIiBkZWZhdWx0PSIweEZGRkZGRiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEFsbG93IHRvIHNldCB0aGUgZmlsbCBjb2xvciBmcm9tIHRoZSBsZWdlbmQgdGFnIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkaXJlY3Rpb24iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0idmVydGljYWwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJbmRpY2F0ZXMgaG93IHRoZSBsZWdlbmQgaXRlbXMgd2lsbCBiZSBkaXNwbGF5ZWQsIGRlZmF1bHQ6IHZlcnRpY2FsIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaGFydENsYXNzTmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIke251bGx9IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hhcnQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJHtudWxsfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRha2VzIHRoZSByZWxhdGlvbnNoaXAgd2l0aCB0aGUgY2hhcnQgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJvdHRvbW1hcmdpbiIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iNSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEBrZXl3b3JkIHByaXZhdGUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJvcmRlcldpZHRoIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQWxsb3cgdG8gc2V0IHRoZSBsaW5lIHdpZHRoIGZyb20gdGhlIGxlZ2VuZCB0YWcgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJvcmRlckNvbG9yIiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9IjB4MDAwMDAwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQWxsb3cgdG8gc2V0IHRoZSBjb2xvciBsaW5lIGZyb20gdGhlIGxlZ2VuZCB0YWcgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0icCIgdHlwZT0ibHp4OnAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBIVE1MIHNwZWNpZmljIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InAiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmdyb3VwIHJlZj0ibHp4OnRvcExldmVsRWxlbWVudHMiIC8+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJsaWJyYXJ5IiB0eXBlPSJseng6bGlicmFyeSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSAmbHQ7bGlicmFyeSZndDsgdGFnIGRlZmluZXMgdGhlIHJvb3QgZWxlbWVudCBvZiBhIGxpYnJhcnkgZmlsZS4gQW4gYXBwbGljYXRpb24gY2FuIHVzZSB0aGUgJmx0O2luY2x1ZGUmZ3Q7IHRhZyB0byBpbmNsdWRlIHRoZSBjb2RlIGluIGEgbGlicmFyeSBmaWxlLgorCitTZWUgdGhlIEd1aWRlIGZvciBhIGNvbXBsZXRlIGRpc2N1c3Npb24uIEFsc28gc2VlIHRoZSAmbHQ7aW5jbHVkZSZndDsgdGFnLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJsaWJyYXJ5IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZhbGlkYXRlIiB0eXBlPSJseng6Ym9vbGVhbiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIElmIGZhbHNlLCBkaXNhYmxlcyB2YWxpZGF0aW9uIGFnYWluc3QgdGhlIHNjaGVtYSBkdXJpbmcgY29tcGlsYXRpb24uIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwcm94aWVkIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgJmx0O2xpYnJhcnkmZ3Q7IHRhZyBkZWZpbmVzIHRoZSByb290IGVsZW1lbnQgb2YgYSBsaWJyYXJ5IGZpbGUuIEFuIGFwcGxpY2F0aW9uIGNhbiB1c2UgdGhlICZsdDtpbmNsdWRlJmd0OyB0YWcgdG8gaW5jbHVkZSB0aGUgY29kZSBpbiBhIGxpYnJhcnkgZmlsZS4KKworU2VlIHRoZSBHdWlkZSBmb3IgYSBjb21wbGV0ZSBkaXNjdXNzaW9uLiBBbHNvIHNlZSB0aGUgJmx0O2luY2x1ZGUmZ3Q7IHRhZy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iamF2YXJwYyIgdHlwZT0ibHp4OmphdmFycGMiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImphdmFycGMiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpycGMiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzY29wZSIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgT25lIG9mICdzZXNzaW9uJywgJ3dlYmFwcCcsIG9yICdub25lJyB0byBzZXQgdGhlIHNjb3BlIG9mIHRoZQorICAgICAgICAgICAgICByZW1vdGUgb2JqZWN0LiBUaGlzIGF0dHJpYnV0ZSBtdXN0IGJlIHNldCBiZWZvcmUgY3JlYXRpbmcgb3IKKyAgICAgICAgICAgICAgbG9hZGluZyB0aGUgb2JqZWN0LiBJZiBzY29wZSBpcyAnc2Vzc2lvbicgb3IgJ3dlYmFwcCcsIG5hbWUgb3IKKyAgICAgICAgICAgICAgYXR0cmlidXRlbmFtZSBtdXN0IGJlIHNldC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlbW90ZWNsYXNzbmFtZSIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHJlbW90ZSBjbGFzcyBuYW1lIGFzc29jaWF0ZWQgd2l0aCB0aGUgcmVtb3RlIG9iamVjdC4gVGhpcyBtdXN0CisgICAgICAgICAgICAgIGJlIHNldCBpZiBjcmVhdGluZyB0aGUgcmVtb3RlIG9iamVjdC4gSWYgbG9hZGluZyB0aGUgb2JqZWN0LCB0aGUKKyAgICAgICAgICAgICAgY2xhc3NuYW1lIHdpbGwgYmUgc2V0IGR1cmluZyBvbmxvYWQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvYmplY3RyZXR1cm50eXBlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9InBvam8iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBVc2VkIHRvIGRldGVybWluZSB3aGF0IHNlcnZlci1zaWRlIG9iamVjdCBtZW1iZXIgdmFsdWVzIGFyZQorICAgICAgICAgICAgICByZXR1cm5lZCB0byB0aGUgY2xpZW50LiBPbmUgb2YgJ3Bvam8nIChyZXR1cm5zIHB1YmxpYyBtZW1iZXIKKyAgICAgICAgICAgICAgdmFsdWVzKSBvciAnamF2YWJlYW4nIChyZXR1cm5zIG1lbWJlcnMgdGhhdCBoYXZlIGFzc29jaWF0ZWQKKyAgICAgICAgICAgICAgZ2V0dGVycykuIERlZmF1bHQgaXMgJ3Bvam8nIChwbGFpbiBvbGQgamF2YSBvYmplY3QpLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibG9hZG9wdGlvbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJsb2FkY3JlYXRlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgT25lIG9mICdsb2FkY3JlYXRlJywgJ2xvYWRvbmx5Jywgb3IgJ2NyZWF0ZScuICdMb2FkY3JlYXRlJyB0cmllcworICAgICAgICAgICAgICB0byBsb2FkIGphdmFycGMgb2JqZWN0IGlmIGl0IGV4aXN0cyBpbiB0aGUgc2VydmVyLCBlbHNlIGl0IGNyZWF0ZXMKKyAgICAgICAgICAgICAgaXQgYmVmb3JlIGxvYWRpbmcuICdMb2Fkb25seScgd2lsbCBvbmx5IGxvYWQgb2JqZWN0IGlmIGl0IGV4aXN0cywKKyAgICAgICAgICAgICAgZWxzZSBhbiBlcnJvciBpcyByZXR1cm5lZC4gJ0NyZWF0ZScgd2lsbCBhbHdheXMgY3JlYXRlIHRoZSBvYmplY3QKKyAgICAgICAgICAgICAgaW4gdGhlIHNlcnZlci4gRGVmYXVsdCBpcyAnbG9hZGNyZWF0ZScuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjcmVhdGVhcmdzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBVc2VkIGlmIGxvYWRvcHRpb249J2xvYWRjcmVhdGUnIG9yIGxvYWRvcHRpb249J2NyZWF0ZScuIEFyZ3VtZW50cworICAgICAgICAgICAgICB0byBjb25zdHJ1Y3QgcmVtb3RlIG9iamVjdCB3aXRoLiBUaGUgdmFsdWUgcGFzc2VkIGluIG11c3QgYmUgYW4KKyAgICAgICAgICAgICAgYXJyYXksIGUuZy4sIFsxLCAnbXlzdHJpbmcnLCAxLjQ1XS4gRGVmYXVsdCBpcyBudWxsLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYXR0cmlidXRlbmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIkb25jZXt0aGlzLm5hbWV9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQXR0cmlidXRlIG5hbWUgb2Ygc2VydmVyIHJlbW90ZSBvYmplY3QuIE5hbWUgb3IgYXR0cmlidXRlbmFtZSBtdXN0CisgICAgICAgICAgICAgIGJlIHNldCB3aGVuIHNjb3BlIGlzICdzZXNzaW9uJyBhbmQgJ3dlYmFwcCcuIERlZmF1bHQgaXMgdGhlIG5hbWUKKyAgICAgICAgICAgICAgb2YgdGhpcyBvYmplY3QuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImNoYXJ0IiB0eXBlPSJseng6Y2hhcnQiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKworICAgICAgICBjaGFydCBpcyB0aGUgYmFzZSBjbGFzcyByZXByZXNlbnRpbmcgYSBjaGFydC4gSW4gZ2VuZXJhbCwKKyAgICAgICAgdGhpcyBjbGFzcyBpcyBub3QgaW5zdGFudGlhdGVkIGRpcmVjdGx5LiBBIGNoYXJ0IGNvbnRhaW5zIAorICAgICAgICAgICAgYXQgbGVhc3Qgb25lIGRhdGFzZXJpZXMgZWxlbWVudCAKKyAgICAgICAgICAgIGF0IGxlYXN0IG9uZSBheGlzIGVsZW1lbnQgCisgICAgICAgIFRoZSBjaGFydCBuZWVkcyB0byBsb29rIGF0IGl0cyBkYXRhc2VyaWVzIGNoaWxkcmVuIGFuZCBwYXNzIAorICAgICAgICB0aGUgcmVsZXZhbnQgZGF0YXNlcmllcyB0byBlYWNoIGF4aXMuIFJlbGV2ZW50IGRhdGFzZXJpZXMgCisgICAgICAgIGZvciB0aGUgY2hhcnQgbXVzdCBoYXZlIGNvbHVtbnMgZm9yIGVhY2ggb2YgdGhlIGF4ZXMgCisgICAgICAgIHRoYXQgdGhlIGNoYXJ0IGNhcmVzIGFib3V0LiAgCisgICAgICAgIEBhY2Nlc3MgcHVibGljCisgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iY2hhcnQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNlY29tcG9uZW50Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iem9vbUVuYWJsZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGVuYWJsZSB6b29tPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZlcnRpY2FsR2FwIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSI1IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHZlcnRpY2FsIGJsYW5rIHNwYWNlIGJldHdlZW4gY29tcG9uZW50cy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZhbHVlcmVnaW9uc2VuYWJsZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgZW5hYmxlIHZhbHVlIHJlZ2lvbiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmFsdWVwb2ludHNlbmFibGVkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGVuYWJsZSB2YWx1ZSBwb2ludHMgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZhbHVlbGluZXNlbmFibGVkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGVuYWJsZSB2YWx1ZSBsaW5lcyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idG9wTWFyZ2luIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBibGFuayBzcGFjZSBib3JkZXJpbmcgdGhlIHRvcCBvZiB0aGUgY2hhcnQgYXJlYS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJpZ2h0TWFyZ2luIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBibGFuayBzcGFjZSBib3JkZXJpbmcgdGhlIHJpZ2h0IHNpZGUgb2YgdGhlIGNoYXJ0IGFyZWEuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwbG90YXJlYSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIke251bGx9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQGtleXdvcmQgcHJpdmF0ZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGVmdE1hcmdpbiIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMTAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgYmxhbmsgc3BhY2UgYm9yZGVyaW5nIHRoZSBsZWZ0IHNpZGUgb2YgdGhlIGNoYXJ0IGFyZWEuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbml0ZG9uZSIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+Cisgc3VidmlldyBoYXZlICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaG9yaXpvbnRhbEdhcCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iNSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBob3Jpem9udGFsIGJsYW5rIHNwYWNlIGJldHdlZW4gY29tcG9uZW50cy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRlZmF1bHRzdHlsZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIke2RlZmF1bHRjaGFydHN0eWxlfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBkZWZhdWx0IHN0eWxlIHRvIGJlIGFwcGxpZWQgdG8gdGhlIGNoYXJ0LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGVmYXVsdFJpZ2h0TWFyZ2luIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBkZWZhdWx0IGJsYW5rIHNwYWNlIGJvcmRlcmluZyB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgY2hhcnQgYXJlYS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRhdGF0aXBFbmFibGVkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBlbmFibGUgdG9vbHRpcCBmb3IgZGF0YSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGF0YXRpcENvbHVtbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBkYXRhIGNvbHVtbiBuYW1lIG9mIHRoZSB0b29sdGlwIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkYXRhbGFiZWxFbmFibGVkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBlbmFibGUgZGF0YSBsYWJlbCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGF0YWxhYmVsQ29sdW1uIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGRhdGEgY29sdW1uIG5hbWUgb2YgdGhlIGRhdGEgbGFiZWwgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRhdGFib3JkZXJFbmFibGVkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRhdGFQb2ludHNFbmFibGVkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBlbmFibGUgZGF0YSBwb2ludChkYXRhIG1hcmtlcikgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJvdHRvbU1hcmdpbiIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMTAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgYmxhbmsgc3BhY2UgYm9yZGVyaW5nIHRoZSBib3R0b20gb2YgdGhlIGNoYXJ0IGFyZWEuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InJlc2l6ZXN0YXRlIiB0eXBlPSJseng6cmVzaXplc3RhdGUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyByZXNpemVzIGl0cyBpbW1lZGlhdGVwYXJlbnQgaW4gcmVzcG9uc2UgdG8gbW91c2UgZXZlbnRzLCB3aGVuIGFwcGxpZWQgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0icmVzaXplc3RhdGUiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpzdGF0ZSI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IndpZHRoIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiR7dGhpcy5pbW1lZGlhdGVwYXJlbnQuZ2V0TW91c2UoICd4JyApLSB0aGlzLl9fcmVzaXplX3hyb2Zmc2V0fSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEBhY2Nlc3MgcHJpdmF0ZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaGVpZ2h0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiR7dGhpcy5pbW1lZGlhdGVwYXJlbnQuZ2V0TW91c2UoICd5JyApLSB0aGlzLl9fcmVzaXplX3lyb2Zmc2V0fSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEBhY2Nlc3MgcHJpdmF0ZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJsemNvbWJvYm94IiB0eXBlPSJseng6bHpjb21ib2JveCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFN1YmNsYXNzIG9mIGJhc2VkYXRhY29tYm9ib3ggd2l0aCBsYXN6bG8gbWFpbCBsb29rLiBTZWUgYmFzZWRhdGFjb21ib2JveCBmb3IKKyAgICAgICAgICBkZXRhaWxzLiBVc2FnZToKKyAgICAgICAgICAmbHQ7Y29kZSZndDsKKyAgICAgICAgICAmbHQ7ZGF0YXNldCBuYW1lPSJkc0hvdXJzIiZndDsKKyAgICAgICAgICAgICAgJmx0O2l0ZW0gdmFsdWU9IjEiJmd0OzEmbHQ7L2l0ZW0mZ3Q7CisgICAgICAgICAgICAgICZsdDtpdGVtIHZhbHVlPSIyIiZndDsyJmx0Oy9pdGVtJmd0OworICAgICAgICAgICAgICAmbHQ7aXRlbSB2YWx1ZT0iMyImZ3Q7MyZsdDsvaXRlbSZndDsKKyAgICAgICAgICAgICAgJmx0O2l0ZW0gdmFsdWU9IjQiJmd0OzQmbHQ7L2l0ZW0mZ3Q7CisgICAgICAgICAgICAgICZsdDtpdGVtIHZhbHVlPSI1IiZndDs1Jmx0Oy9pdGVtJmd0OworICAgICAgICAgICAgICAmbHQ7aXRlbSB2YWx1ZT0iNiImZ3Q7NiZsdDsvaXRlbSZndDsKKyAgICAgICAgICAgICAgJmx0O2l0ZW0gdmFsdWU9IjciJmd0OzcmbHQ7L2l0ZW0mZ3Q7CisgICAgICAgICAgICAgICZsdDtpdGVtIHZhbHVlPSI4IiZndDs4Jmx0Oy9pdGVtJmd0OworICAgICAgICAgICAgICAmbHQ7aXRlbSB2YWx1ZT0iOSImZ3Q7OSZsdDsvaXRlbSZndDsKKyAgICAgICAgICAgICAgJmx0O2l0ZW0gdmFsdWU9IjEwIiZndDsxMCZsdDsvaXRlbSZndDsKKyAgICAgICAgICAgICAgJmx0O2l0ZW0gdmFsdWU9IjExIiZndDsxMSZsdDsvaXRlbSZndDsKKyAgICAgICAgICAgICAgJmx0O2l0ZW0gdmFsdWU9IjEyIiZndDsxMiZsdDsvaXRlbSZndDsKKyAgICAgICAgICAmbHQ7L2RhdGFzZXQmZ3Q7CisKKyAgICAgICAgICAmbHQ7bHpjb21ib2JveCB3aWR0aD0iNTAiIHNob3duaXRlbXM9IjMiIGl0ZW1kYXRhcGF0aD0iZHNIb3VyczovaXRlbSImZ3Q7CisgICAgICAgICAgICAgICZsdDtoYW5kbGVyIG5hbWU9Im9uc2VsZWN0IiBhcmdzPSJkcHRyIiZndDsKKyAgICAgICAgICAgICAgICAgIERlYnVnLndyaXRlKCd2YWx1ZTonLCB0aGlzLnZhbHVlKTsKKyAgICAgICAgICAgICAgICAgIERlYnVnLndyaXRlKCdkYXRhcG9pbnRlcjonLCBkcHRyKTsKKyAgICAgICAgICAgICAgJmx0Oy9oYW5kbGVyJmd0OworICAgICAgICAgICZsdDsvbHpjb21ib2JveCZndDsKKyAgICAgICAgICAmbHQ7L2NvZGUmZ3Q7CisgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibHpjb21ib2JveCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmJhc2VkYXRhY29tYm9ib3giPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0b29sdGlwIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHRvb2x0aXAgdGV4dCwgaWYgYW55IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZXh0eSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGV4dHgiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iOCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZybnVtIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjEiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InNwbGFzaCIgdHlwZT0ibHp4OnNwbGFzaCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIENvbnRyb2xzIHRoZSBwcmVzZW50YXRpb24gd2hpbGUgdGhlIGFwcGxpY2F0aW9uIGlzIGxvYWRpbmcuICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJzcGxhc2giIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpub2RlIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ieSIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ieCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVzb3VyY2UiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJhdGlvIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwZXJzaXN0ZW50IiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBDb250cm9scyB0aGUgcHJlc2VudGF0aW9uIHdoaWxlIHRoZSBhcHBsaWNhdGlvbiBpcyBsb2FkaW5nLiAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNlbnRlciIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ0aWNrcyIgdHlwZT0ibHp4OnRpY2tzIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQGtleXdvcmQgcHJpdmF0ZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0aWNrcyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmRyYXd2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibnVtdGlja3MiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEBrZXl3b3JkIHByaXZhdGUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ib3B0dHJlZSIgdHlwZT0ibHp4Om9wdHRyZWUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBBIGtleWJvYXJkIG5hdmlnYWJsZSAod2l0aCBhcnJvdyBrZXlzKSB0cmVlIGNvbnRyb2wgdGhhdCBzdXBwb3J0cyAKKyAgICAgICAgIHNlbGVjdGlvbiBhbmQgZHluYW1pYyBkYXRhIGxvYWRpbmcuIFRoaXMgdHJlZSBtdXN0IGJlIGJhY2tlZCBieSBhbgorICAgICAgICAgWE1MIERPTSBkYXRhc3RydWN0dXJlIGFuZCBwcmVzZW50ZWQgd2l0aGluIGEgY2xpcHBpbmcgcmVnaW9uLiAKKyAgICAgICAgIAorICAgICAgICAgVGhlIGRhdGFwYXRoIGZvciBhbiBvcHR0cmVlIG11c3QgcmVzb2x2ZSB0byBhIHNpbmdsZSBMekRhdGFFbGVtZW50CisgICAgICAgICB3aGljaCBpcyB0aGUgdW5kaXNwbGF5ZWQgcm9vdCBvZiB0aGUgdHJlZS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ib3B0dHJlZSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvcGVuYXR0cnBhdGgiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iQF9fT1BUVFJFRV9NRVRBX29wZW4iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyAoUHJvdGVjdGVkKSBBbiB4cGF0aCB0aGF0IHNlbGVjdHMgdGhlIG9wZW5hdHRyIGF0dHJpYnV0ZSBmcm9tCisgICAgICAgICAgICAgIGEgbm9kZS4gVGhpcyBzaG91bGQgbWF0Y2ggb3BlbmF0dHIgYnV0IHByZXBlbmQgdGhlICdAJyBzeW1ib2wuCisgICAgICAgICAgICAgIFRoaXMgY2Fubm90IGJlIHdoZW49YWx3YXlzIG9yIHdoZW49b25jZSBiZWNhdXNlIGl0IGlzIHVzZWQgYXMKKyAgICAgICAgICAgICAgYSByZWZlcmVuY2UgaW4gYSAkcGF0aCBleHByZXNzaW9uIGluIGJhc2VvcHR0cmVlbm9kZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib3BlbmF0dHIiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iX19PUFRUUkVFX01FVEFfb3BlbiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIChQcm90ZWN0ZWQpIFRoZSBhdHRyaWJ1dGUgbmFtZSB0byB1c2UgaW4gdGhlIGRhdGEgdG8gbWFyayBhCisgICAgICAgICAgICAgIGEgbm9kZSBhcyBvcGVuLjwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJub2RlcGF0aCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIqIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHhwYXRoIGV4cHJlc3Npb24gdG8gdXNlIHRvIHJldHJpZXZlIG5vZGVzIG91dCBvZiB0aGUgCisgICAgICAgICAgICAgIGRhdGFwYXRoLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibm9kZWxpc3QiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibm9kZWNvbGxlY3Rpb24iID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJub2RlY29sbGVjdGlvbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIkeyBvcHR0cmVlY29udHJvbGxlci5ub2RlbGlzdCB9IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibm9kZWNsYXNzIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgbmFtZSBvZiB0aGUgY2xhc3MgdG8gdXNlIHRvIHJlcHJlc2VudCBub2RlcyBpbiB0aGUgdHJlZS48L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibW92ZWRlbCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIkb25jZXsgbmV3IGx6LkRlbGVnYXRlKCB0aGlzLCAnX3VwZGF0ZVBvcycgKSB9IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaGlnaGxpZ2h0ZWQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBrZXlib2FyZCBuYXYgaGlnaGxpZ2h0ZWQgYmFzZW9wdHRyZWVub2RlIG9yIG51bGwuIFRoaXMKKyAgICAgICAgICAgICAgYXR0cmlidXRlIGlzIHJlYWQtb25seS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRyYWdnZWQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRyYWdlZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGVwdGhhdHRycGF0aCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJAX19PUFRUUkVFX01FVEFfZGVwdGgiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyAoUHJvdGVjdGVkKSBBbiB4cGF0aCB0aGF0IHNlbGVjdHMgdGhlIGRlcHRoYXR0ciBhdHRyaWJ1dGUgZnJvbQorICAgICAgICAgICAgICBhIG5vZGUuIFRoaXMgc2hvdWxkIG1hdGNoIGRlcHRoYXR0ciBidXQgcHJlcGVuZCB0aGUgJ0AnIHN5bWJvbC4KKyAgICAgICAgICAgICAgVGhpcyBjYW5ub3QgYmUgd2hlbj1hbHdheXMgb3Igd2hlbj1vbmNlIGJlY2F1c2UgaXQgaXMgdXNlZCBhcworICAgICAgICAgICAgICBhIHJlZmVyZW5jZSBpbiBhICRwYXRoIGV4cHJlc3Npb24gbiBiYXNlb3B0dHJlZW5vZGUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRlcHRoYXR0ciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJfX09QVFRSRUVfTUVUQV9kZXB0aCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIChQcm90ZWN0ZWQpIFRoZSBhdHRyaWJ1dGUgbmFtZSB0byB1c2UgaW4gdGhlIGRhdGEgdG8gbWFyayBhCisgICAgICAgICAgICAgIGEgbm9kZSdzIGRlcHRoIGluIHRoZSB0cmVlIGhpZXJhcmNoeSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJsemVkaXR0ZXh0IiB0eXBlPSJseng6bHplZGl0dGV4dCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEltcGxlbWVudHMgdGhlIGxhc3psbyBsb29rIG9mIGJhc2VlZGl0dGV4dC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibHplZGl0dGV4dCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmJhc2VlZGl0dGV4dCI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0icGllcGllY2UiIHR5cGU9Imx6eDpwaWVwaWVjZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEBrZXl3b3JkIHByaXZhdGUgCisgICBSZXByZXNlbnRzIGEgc2luZ2xlIHBpZSBzbGljZSBpbiB0aGUgY2hhcnQgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0icGllcGllY2UiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpkcmF3dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InlSYWRpdXMiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IiR7bnVsbH0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgeSByYWRpdXMgb2YgdGhlIHNsaWNlLiBkZWZhdWx0ID0gbnVsbCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idG9vbHRpcCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBAa2V5d29yZCBwcml2YXRlIAorICAgUmVwcmVzZW50cyBhIHNpbmdsZSBwaWUgc2xpY2UgaW4gdGhlIGNoYXJ0IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyYWRpdXMiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjEwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIGxlbmd0aCBvZiB0aGUgcmFkaXVzIGluIHBpeGVscyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGllY2V2YWx1ZSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBudW1lcmljIHZhbHVlIG9mIHRoZSBwaWVjZS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBpZWNlcmFkaXVzIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHJhZGl1cyBvZiB0aGUgd2hvbGUgcGllLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGllY2VvcGFjaXR5IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIG9wYWNpdHkgb2YgdGhlIHBpZWNlLiAgRGV0ZXJtaW5lZCBieSBhdHRyaWJ1dGVzIG9uIGRhdGFzZXJpZXMuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwaWVjZWNvbG9yIiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9IiRvbmNle251bGx9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIGNvbG9yIG9mIHRoZSBwaWVjZS4gIERldGVybWluZWQgYnkgYXR0cmlidXRlcyBvbiBkYXRhc2VyaWVzLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25leHBsb2RlZCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIGV2ZW50cyB0aGF0IGhhbmRsZSBleHBsb3Npb24gb2YgcGllY2VzLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWwiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBkYXRhIGxhYmVsIG9mIHRoaXMgcGllIHNsaWNlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJleHBsb2RlZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9IiR7cGFyZW50LndlZGdlb3ZlciA9PSB0aGlzfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFdoZXRoZXIgdGhpcyBwaWVjZSBpcyBtb3VzZWQgb3ZlciBvciBub3QuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJleHBsb2RlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBXaGV0aGVyIHRvIGFjdHVhbGx5IG1vdmUgdGhlIHBpZWNlIG91dHdhcmQgd2hlbiB0aGUgbW91c2UgaXMgb3ZlciBpdC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNlbnRlcnkiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgeSBjb29yZGluYXRlIG9mIHRoZSBjZW50ZXIgb2YgdGhlIHBpZS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNlbnRlcngiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgeCBjb29yZGluYXRlIG9mIHRoZSBjZW50ZXIgb2YgdGhlIHBpZS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJvcmRlcndpZHRoIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHdpZHRoIG9mIHRoZSBib3JkZXIgb2YgdGhlIHBpZWNlLiAgRGV0ZXJtaW5lZCBieSBhdHRyaWJ1dGVzCisgICAgICAgICAgICBvbiBkYXRhc2VyaWVzLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyY29sb3IiIHR5cGU9Imx6eDpjb2xvciIgZGVmYXVsdD0iJG9uY2V7bnVsbH0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgY29sb3Igb2YgdGhlIGJvcmRlciBvZiB0aGUgcGllY2UuICBEZXRlcm1pbmVkIGJ5IGF0dHJpYnV0ZXMKKyAgICAgICAgICAgIG9uIGRhdGFzZXJpZXMuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhcmN2YWx1ZSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMTAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgc2VnbWVudCBvZiB0aGUgY2lyY2xlIHRoYXQgZGVmaW5lcyB0aGUgY3VycmVudCBwaWUgc2xpY2UgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFuZ2xlIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIyNSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZGF0ZXZhbGlkYXRvciIgdHlwZT0ibHp4OmRhdGV2YWxpZGF0b3IiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImRhdGV2YWxpZGF0b3IiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNldmFsaWRhdG9yIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW52YWxpZHllYXJFcnJvcnN0cmluZyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJQbGVhc2UgZW50ZXIgYSB5ZWFyIGJldHdlZW4gMCBhbmQgOTk5OS4iID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbnZhbGlkbW9udGhFcnJvcnN0cmluZyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJQbGVhc2UgZW50ZXIgYSBtb250aCBiZXR3ZWVuIDEgYW5kIDEyLiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImludmFsaWRmb3JtYXRFcnJvcnN0cmluZyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJQbGVhc2UgaW5wdXQgdGhlIGRhdGUgaW4gYSB2YWxpZCBmb3JtYXQuIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW52YWxpZGRhdGVFcnJvcnN0cmluZyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJQbGVhc2UgZW50ZXIgYSB2YWxpZCBkYXRlLiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZvcm1hdCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJtbS9kZC95eXl5IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJiciIgdHlwZT0ibHp4OmJyIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSFRNTCBzcGVjaWZpYyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJiciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Z3JvdXAgcmVmPSJseng6dG9wTGV2ZWxFbGVtZW50cyIgLz4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJhc2VzY3JvbGx0cmFjayIgdHlwZT0ibHp4OmJhc2VzY3JvbGx0cmFjayIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYmFzZXNjcm9sbHRyYWNrIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZWJ1dHRvbnJlcGVhdGVyIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGlyZWN0aW9uIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjEiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgZGlyZWN0aW9uIGluIHdoaWNoIHRoZSBzY3JvbGwgc2hvdWxkIG1vdmUuIFNldCB0byAtMSBmb3IgYmFjaywKKyAgICAgICAgICAgICAxIGZvciBmb3J3YXJkLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ2Ym94IiB0eXBlPSJseng6dmJveCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idmJveCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzcGFjaW5nIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbnNldCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJyZW1vdGVjYWxsIiB0eXBlPSJseng6cmVtb3RlY2FsbCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0icmVtb3RlY2FsbCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4Om5vZGUiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZW1vdGVjb250ZXh0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJZiBzZXQsIHRoaXMgaXMgdGhlIHJlbW90ZSBvYmplY3QgY29udGV4dCBpbiB3aGljaCBmdW5jbmFtZSBpcyBydW4KKyAgICAgICAgICAgICAgZnJvbS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uZXJyb3IiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoaXMgZXZlbnQgaXMgdHJpZ2dlcmVkIHdoZW4gYW4gZXJyb3Igb2NjdXJzLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW5mb3JldHVybnZhbHVlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJZiB0cnVlLCBhIHJlbW90ZSByZXNwb25zZSByZXR1cm5zIGFuIG9iamVjdC4gVGhlIG9iamVjdCBvZiBhCisgICAgICAgICAgICAgc3VjY2Vzc2Z1bCByZXNwb25zZSB3aWxsIGNvbnRhaW4gdGhlIHJldHVybiB2YWx1ZSAoZGF0YSksIGFuIG9iamVjdAorICAgICAgICAgICAgIGNvbnRhaW5pbmcgc3BlY2lmaWMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlcXVlc3QgKGluZm8pLCBhbmQgdGhlCisgICAgICAgICAgICAgYXNzb2NpYXRlZCB1bmlxdWUgc2VxdWVuY2UgcmVxdWVzdCBudW1iZXIgKHNlcW51bSksIGUuZy4sIHsgZGF0YToKKyAgICAgICAgICAgICAuLi4sIGluZm86IC4uLiwgc2VxbnU6IC4uLn0uIEEgZmFpbHVyZSByZXNwb25zZSByZXR1cm5zIGFuIG9iamVjdAorICAgICAgICAgICAgIHRoYXQgY29udGFpbnMgdGhlIGVycm9yIG1lc3NhZ2UgKG1lc3NhZ2UpLCB0aGUgZXJyb3IgdHlwZSAoZXJyb3IpLAorICAgICAgICAgICAgIGFuIG9iamVjdCBjb250YWluaW5nIHNwZWNpZmljIGluZm9ybWF0aW9uIGFib3V0IHRoZSByZXF1ZXN0IChpbmZvKSwKKyAgICAgICAgICAgICBhbmQgdGhlIGFzc29jaWF0ZWQgdW5pcXVlIHNlcXVlbmNlIHJlcXVlc3QgbnVtYmVyIChzZXFudW0pLCBlLmcuLCB7CisgICAgICAgICAgICAgbWVzc2FnZTogLi4uLCBlcnJvcjogLi4uLCBpbmZvOiAuLi4sIHNlcW51bTogLi4ufS4gSWYgZmFsc2UsIGFuCisgICAgICAgICAgICAgZXJyb3IganVzdCByZXR1cm5zIHRoZSBlcnJvciBtZXNzYWdlIGFuZCBhIHN1Y2Nlc3NmdWwgcmVzcG9uc2UKKyAgICAgICAgICAgICByZXR1cm5zIGEgdmFsdWUuIERlZmF1bHQgaXMgZmFsc2UuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmdW5jbmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIkb25jZXtudWxsfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIE5hbWUgb2YgcmVtb3RlIGZ1bmN0aW9uIHRoaXMgcmVtb3RlY2FsbCByZWZlcnMuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkYXRhb2JqZWN0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJZiBhbiBMekRhdGFzZXQgb3IgYW4gTHpEYXRhRWxlbWVudCBpcyBzZXQsIHJldHVybiB2YWx1ZXMgd2lsbAorICAgICAgICAgICAgICBiZSBtYXBwZWQgaW50byB0aGUgZGF0YW9iamVjdC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYmFzZXNjcm9sbGFycm93IiB0eXBlPSJseng6YmFzZXNjcm9sbGFycm93IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJiYXNlc2Nyb2xsYXJyb3ciIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNlYnV0dG9ucmVwZWF0ZXIiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkaXJlY3Rpb24iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBkaXJlY3Rpb24gaW4gd2hpY2ggdGhlIHNjcm9sbCBzaG91bGQgbW92ZS4gVXNlIC0xIHRvIGdvCisgICAgICAgICAgICAgICAgICBiYWNrLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ6b29tYXJlYSIgdHlwZT0ibHp4Onpvb21hcmVhIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgY2hhcnQgem9vbSBhcmVhIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Inpvb21hcmVhIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZXpvb21hcmVhIj4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJzaW1wbGVzbGlkZXIiIHR5cGU9Imx6eDpzaW1wbGVzbGlkZXIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBAa2V5d29yZCBwcml2YXRlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InNpbXBsZXNsaWRlciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmN1c3RvbWJhc2VzbGlkZXIiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2YWx1ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJ0aGlzLm1pbmxpbWl0ICsgdGhpcy5rbm9iLnggKiB0aGlzLnZhbHVlcmF0aW8iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBAa2V5d29yZCBwcml2YXRlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtaW54IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtYXh4IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiRvbmNle3BhcmVudC53aWR0aH0iID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Imhib3giIHR5cGU9Imx6eDpoYm94IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJoYm94IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNwYWNpbmciIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imluc2V0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InRpbWV0ZXh0IiB0eXBlPSJseng6dGltZXRleHQiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRpbWV0ZXh0IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dGV4dCI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0icGxvdHN0eWxlIiB0eXBlPSJseng6cGxvdHN0eWxlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+Cisgc3R5bGUgZm9yIHBsb3QgYXJlYQorICAgICAgQGFjY2VzcyBwdWJsaWMKKyAgICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InBsb3RzdHlsZSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmJhc2VzdHlsZSI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxpbmVzaXplIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+Cisgc2l6ZSBvZiBib3JkZXIgb2YgdGhlIHBsb3QgYXJlYSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGluZWNvbG9yIiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9IiR7bnVsbH0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBjb2xvciBvZiB0aGUgYm9yZGVyIGZvciB0aGUgcGxvdCBhcmVhIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmaWxsY29sb3IiIHR5cGU9Imx6eDpjb2xvciIgZGVmYXVsdD0iMHhGRkZGRkYiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBiZ2NvbG9yIGZvciB0aGUgcGxvdCBhcmVhIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Indob2xlcGllIiB0eXBlPSJseng6d2hvbGVwaWUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGlzIGlzIHRoZSBjbGFzcyB0aGF0IGFzc2VtYmxlcyBhbmQgY29udGFpbnMgYWxsIHRoZSBlbGVtZW50cworICAgICAgICBvZiBhbiBpbmRpdmlkdWFsIHBpZS4gIE5lYXJseSBhbGwgb2YgdGhlIGF0dHJpYnV0ZXMgYXJlIHNldCB3aGVuIHRoZQorICAgICAgICBvYmplY3QgaXMgaW5zdGFudGlhdGVkIGJ5IHBpZWNoYXJ0LiAgVGhlcmUgc2hvdWxkIGJlIG9uZSBvZiB0aGVzZQorICAgICAgICBmb3IgZWFjaCBkYXRhc2VyaWVzLiAgKE9mIGJldGEgcXVhbGl0eS4pIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Indob2xlcGllIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IndlZGdlb3ZlciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIkb25jZXtudWxsfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFdlZGdlIHRoZSBtb3VzZSBpcyBjdXJyZW50bHkgb3ZlciA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2hvd2xlZ2VuZG1pbmltaXplZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBXaGV0aGVyIHRvIHNob3cgdGhlIGxlZ2VuZCB3aGVuIHRoZSBjaGFydCBpcyBtaW5pbWl6ZWQsIHdoZW4KKyAgICAgICAgICAgIHRoZXJlIGFyZSBtdWx0aXBsZSBjaGFydHMuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyYWRpdXN2YWx1ZXMiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJG9uY2V7W119IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQW4gYXJyYXkgb2YgdGhlIHJhZGl1cyBhbHRlcmF0aW9ucyBmb3IgcGllCisgICAgICAgICAgICBwaWVjZXMsIGlmIGFueS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBpZWNldmFsdWVzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiRvbmNle1tdfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEFuIGFycmF5IG9mIHRoZSB2YWx1ZXMgb2YgaW5kaXZpZHVhbCBwaWVjZXMuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvcGFjdmFsdWVzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiRvbmNle1tdfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEFuIGFycmF5IG9mIHBpZWNlIG9wYWNpdHkgdmFsdWVzLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibHRpdGxlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiRvbmNle251bGx9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGl0bGUgb2YgdGhlIGxlZ2VuZCwgaWYgYW55LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGhsY29sb3IiIHR5cGU9Imx6eDpjb2xvciIgZGVmYXVsdD0iJG9uY2V7bnVsbH0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBIaWdobGlnaHQgY29sb3Igb2YgYW4gaW5kaXZpZHVhbCBsZWdlbmQgZWxlbWVudCwgd2hlbgorICAgICAgICAgICAgbW91c2VkIG92ZXIuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsZWdlbmR5IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSWYgbGVnZW5kIGlzICdtYW51YWwnLCB0aGlzIHNldHMgdGhlIHkgY29vcmRpbmF0ZSBvZiB0aGUgbGVnZW5kLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGVnZW5keCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIElmIGxlZ2VuZCBpcyAnbWFudWFsJywgdGhpcyBzZXRzIHRoZSB4IGNvb3JkaW5hdGUgb2YgdGhlIGxlZ2VuZC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxlZ2VuZHdpZHRoIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSWYgbGVnZW5kIGlzICdtYW51YWwnLCB0aGlzIHNldHMgdGhlIHdpZHRoIG9mIHRoZSBsZWdlbmQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsZWdlbmR2YWx1ZXMiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJG9uY2V7W119IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQW4gYXJyYXkgb2YgdGhlIHZhbHVlcyB0byB1c2UgaW4gdGhlIGxlZ2VuZC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxlZ2VuZHRpdGxlcG9zaXRpb24iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibGVmdCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBwb3NpdGlvbiBvZiB0aGUgdGl0bGU6IGxlZnQsIHJpZ2h0LCBjZW50ZXIuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsZWdlbmRoZWlnaHQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJZiBsZWdlbmQgaXMgJ21hbnVhbCcsIHRoaXMgc2V0cyB0aGUgaGVpZ2h0IG9mIHRoZSBsZWdlbmQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsZWdlbmQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJG9uY2V7bnVsbH0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBXaGV0aGVyIHRvIGluY2x1ZGUgYSBsZWdlbmQsIGFuZCBpZiBzbywgd2hlcmUgdG8gcGxhY2UgaXQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYm9yZGVyd2lkdGgiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjEiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBCb3JkZXIgd2lkdGggb2YgdGhlIGxlZ2VuZC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imxib3JkZXIiIHR5cGU9Imx6eDpjb2xvciIgZGVmYXVsdD0iJG9uY2V7bnVsbH0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBCb3JkZXIgY29sb3IgZm9yIHRoZSBsZWdlbmQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYmdjb2xvciIgdHlwZT0ibHp4OmNvbG9yIiBkZWZhdWx0PSIkb25jZXtudWxsfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEJhY2tncm91bmQgY29sb3Igb2YgdGhlIGxlZ2VuZC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxhYmVsdmFsdWVzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiRvbmNle1tdfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEFuIGFycmF5IG9mIHRoZSBsYWJlbCB2YWx1ZXMgZm9yIHBpZSBwaWVjZXMuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYWJlbHRzaXplIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiRvbmNle1tdfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEFuIGFycmF5IG9mIGxhYmVsIHRleHQgc2l6ZXMgZm9yIHBpZSBwaWVjZXMuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYWJlbHRjb2xvciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIkb25jZXtbXX0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBBbiBhcnJheSBvZiBsYWJlbCB0ZXh0IGNvbG9ycyBmb3IgcGllIHBpZWNlcy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxhYmVsY29sb3JzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiRvbmNle1tdfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEFuIGFycmF5IG9mIGxhYmVsIGNvbG9ycyBmb3IgcGllIHBpZWNlcy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxhYmVsYndpZHRoIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiRvbmNle1tdfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEFuIGFycmF5IG9mIGxhYmVsIGJvcmRlciB3aWR0aHMgZm9yIHBpZSBwaWVjZXMuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYWJlbGJvcmRlcnMiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJG9uY2V7W119IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQW4gYXJyYXkgb2YgbGFiZWwgYm9yZGVycyBmb3IgcGllIHBpZWNlcy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImV4cGxvZGUiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFdoZXRoZXIgb3Igbm90IHRvIGV4cGxvZGUgdGhlIHBpZSBwaWVjZXMgb25tb3VzZW92ZXIuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJleHBhbmRlZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSWYgdGhlcmUgYXJlIG11bHRpcGxlIGNoYXJ0cywgdGhpcyBpbmRpY2F0ZXMgd2hldGhlciB0aGlzIGNoYXJ0CisgICAgICAgICAgICBpcyBjdXJyZW50bHkgZXhwYW5kZWQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkcmF3Ymdib3JkZXIiIHR5cGU9Imx6eDpjb2xvciIgZGVmYXVsdD0iJG9uY2V7bnVsbH0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBXaGV0aGVyIHRvIGRyYXcgdGhlIGJhY2tncm91bmQgYm9yZGVyIGFyb3VuZCB0aGUgY2lyY2xlCisgICAgICAgICAgICBiZWhpbmQgdGhlIHBpZSBwaWVjZXMsIGFuZCBpZiBzbywgd2hhdCBjb2xvci4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRyYXdiZyIgdHlwZT0ibHp4OmNvbG9yIiBkZWZhdWx0PSIkb25jZXtudWxsfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFdoZXRoZXIgdG8gZHJhdyB0aGUgYmFja2dyb3VuZCBjaXJjbGUgYmVoaW5kIHRoZSBwaWUgcGllY2VzLAorICAgICAgICAgICAgYW5kIGlmIHNvLCB3aGF0IGNvbG9yLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sb3J2YWx1ZXMiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJG9uY2V7W119IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQW4gYXJyYXkgb2YgdGhlIGNvbG9ycyBvZiBpbmRpdmlkdWFsIHBpZWNlcy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJvcmRlcndpZHRocyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIkb25jZXtbXX0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBBbiBhcnJheSBvZiBib3JkZXIgd2lkdGhzIG9mIGluZGl2aWR1YWwgcGllY2VzLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyY29sb3JzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiRvbmNle1tdfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEFuIGFycmF5IG9mIGJvcmRlciBjb2xvcnMgb2YgaW5kaXZpZHVhbCBwaWVjZXMuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJiZ2JvcmRlcndpZHRoIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHdpZHRoIG9mIHRoZSBiYWNrZ3JvdW5kIGJvcmRlciBhcm91bmQgdGhlIGNpcmNsZQorICAgICAgICAgICAgYmVoaW5kIHRoZSBwaWUgcGllY2VzLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJzdGF0aWN0ZXh0IiB0eXBlPSJseng6c3RhdGljdGV4dCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEEgc2ltcGxlIHRleHQgY2xhc3MgdGhhdCBwcm92aWRlIGRlZmF1bHQgZm9udCBhdHRyaWJ1dGVzIGZvcgorICAgICAgICAgIExhc3psbyBjb21wb25lbnRzLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJzdGF0aWN0ZXh0IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dGV4dCI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0icHVycGxlc3R5bGUiIHR5cGU9Imx6eDpwdXJwbGVzdHlsZSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0icHVycGxlc3R5bGUiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpzdHlsZSI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iY3VzdG9tYmFzZXNsaWRlciIgdHlwZT0ibHp4OmN1c3RvbWJhc2VzbGlkZXIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBAa2V5d29yZCBwcml2YXRlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImN1c3RvbWJhc2VzbGlkZXIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmFsdWVyYXRpbyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIodGhpcy5tYXhsaW1pdCAgLSB0aGlzLm1pbmxpbWl0KSAvIHRoaXMud2lkdGgiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdGFydGxhYmVsIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9InRoaXMubWlubGltaXQiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtaW5vcmRpdmlzaW9uIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjUiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtaW5saW1pdCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWF4bGltaXQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMTAwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWFqb3JkaXZpc2lvbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIyIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZW5kbGFiZWwiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0idGhpcy5tYXhsaW1pdCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYmFzZWJ1dHRvbiIgdHlwZT0ibHp4OmJhc2VidXR0b24iID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImJhc2VidXR0b24iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNlY29tcG9uZW50Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVzcG9uZHRvbW91c2VvdXQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0idHJ1ZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIElmIHRoaXMgYnV0dG9uIGRvZXMgbm90IHJlc3BvbmQgdG8gb25tb3VzZW91dCBvciBvbm1vdXNlZHJhZ291dAorICAgICAgICAgICAgICBldmVudHMsIHNldCB0aGlzIGZsYWcgdG8gZmFsc2UuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZXNvdXJjZXZpZXdjb3VudCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBmaXJzdCAnbicgc3Vidmlld3MgdGhhdCB3aWxsIHJlc3BvbmQgdG8gbW91c2VldmVudHMgYnkKKyAgICAgICAgICAgICAgY2hhbmdpbmcgdGhlIGZyYW1lIG51bWJlciBvZiB0aGVpciByZXNvdXJjZS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlZmVyZW5jZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJ0aGlzIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgV2hlcmUgdG8gc2VuZCBtb3VzZSBldmVudHMgKHRoZSB2aWV3IHRoYXQgd2lsbCBiZSAiY2xpY2thYmxlIikuCisgICAgICAgICAgICAgIEBrZXl3b3JkcyBmaW5hbCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib3ZlclJlc291cmNlTnVtYmVyIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIyIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHJlc291cmNlIGZvciB0aGUgbW91c2Ugb3ZlciBzdGF0ZS4gCisgICAgICAgICAgICAgIFVzZSAwIGlmIHRoZSByZXNvdXJjZSBoYXMgYXQgbGVhc3QgMiBmcmFtZXMsIGJ1dCB0aGVyZSBpcyBubyBvdmVyCisgICAgICAgICAgICAgIHN0YXRlLgorICAgICAgICAgICAgICBAa2V5d29yZHMgZmluYWwgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9ucmVzb3VyY2V2aWV3Y291bnQiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoaXMgZXZlbnQgaXMgc2VudCB3aGVuIHRoZSByZXNvdXJjZXZpZXdjb3VudCBjaGFuZ2VzLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibm9ybWFsUmVzb3VyY2VOdW1iZXIiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjEiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgcmVzb3VyY2UgZm9yIHRoZSBtb3VzZSB1cCBzdGF0ZSwgYW5kIGluaXRpYWwgc3RhdGUgb2YgdGhlCisgICAgICAgICAgICAgIGJ1dHRvbi4KKyAgICAgICAgICAgICAgQGtleXdvcmRzIGZpbmFsIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtYXhmcmFtZXMiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IiRvbmNle3RoaXMudG90YWxmcmFtZXN9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIG1heGltdW0gbnVtYmVyIG9mIGZyYW1lcyB0byB1c2UsIGRlZmF1bHRzIHRvIHRoZSBudW1iZXIgb2YKKyAgICAgICAgICAgICAgZnJhbWVzIGZvciB0aGUgcmVzb3VyY2UgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdmlldy4gVGhpcyBpcyB1c2VmdWwKKyAgICAgICAgICAgICAgZm9yIGEgc3ViY2xhc3MgdGhhdCBoYXMgbm8gcmVzb3VyY2UgZm9yIHRoaXMgdmlldy4KKyAgICAgICAgICAgICAgQGtleXdvcmRzIGZpbmFsIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkb3duUmVzb3VyY2VOdW1iZXIiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjMiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgcmVzb3VyY2UgZm9yIHRoZSBtb3VzZSBkb3duIHN0YXRlLgorICAgICAgICAgICAgICBVc2UgMCBpZiB0aGUgcmVzb3VyY2VzIGhhcyBhdCBsZWFzdCAzIGZyYW1lcywgYnV0IHRoZXJlIGlzIG5vIGRvd24KKyAgICAgICAgICAgICAgc3RhdGUuCisgICAgICAgICAgICAgIEBrZXl3b3JkcyBmaW5hbCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGlzYWJsZWRSZXNvdXJjZU51bWJlciIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iNCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSByZXNvdXJjZSBmb3IgdGhlIGRpc2FibGVkIHN0YXRlLgorICAgICAgICAgICAgICBVc2UgMCBpZiB0aGUgcmVzb3VyY2UgaGFzIGF0IGxlYXN0IDQgZnJhbWVzLCBidXQgdGhlcmUKKyAgICAgICAgICAgICAgaXMgbm8gZGlzYWJsZWQgc3RhdGUuCisgICAgICAgICAgICAgIEBrZXl3b3JkcyBmaW5hbCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJQb3B1cFBvbHlnb24iIHR5cGU9Imx6eDpQb3B1cFBvbHlnb24iID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlBvcHVwUG9seWdvbiIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnBvbHlnb25ob3RzcG90Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGV4dCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGFyZW50VmlldyIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ0ZXh0IiB0eXBlPSJseng6dGV4dCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorVGhlIGJhc2ljIHRleHQgZGlzcGxheSBlbGVtZW50LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0ZXh0IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InlzY3JvbGwiIHR5cGU9Imx6eDpudW1iZXIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyAgVGhlIHkgc2Nyb2xsIG9mZnNldCBvZiB0aGUgY29udGVudCBpbiBwaXhlbHMgKGEgbmVnYXRpdmUgbnVtYmVyIHNwZWNpZnlpbmcgaG93IG1hbnkgcGl4ZWxzIHRoZSBjb250ZW50IHNob3VsZCBiZSBzY3JvbGxlZCB2ZXJ0aWNhbGx5KS4gRGVmYXVsdCAwLiBOT1RFOiBBIGNvbnN0cmFpbnQgb3IgaGFuZGxlciBvbiBvbnlzY3JvbGwgd2lsbCBhdXRvbWF0aWNhbGx5IGVuYWJsZSB1cGRhdGluZyB0aGUgYXR0cmlidXRlLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ieHNjcm9sbCIgdHlwZT0ibHp4Om51bWJlciIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorICBUaGUgeCBzY3JvbGwgb2Zmc2V0IG9mIHRoZSBjb250ZW50IGluIHBpeGVscyAoYSBuZWdhdGl2ZSBudW1iZXIgc3BlY2lmeWluZyBob3cgbWFueSBwaXhlbHMgdGhlIGNvbnRlbnQgc2hvdWxkIGJlIHNjcm9sbGVkIGhvcml6b250YWxseSkuIERlZmF1bHQgMC4gTk9URTogQSBjb25zdHJhaW50IG9yIGhhbmRsZXIgb24gb254c2Nyb2xsIHdpbGwgYXV0b21hdGljYWxseSBlbmFibGUgdXBkYXRpbmcgdGhlIGF0dHJpYnV0ZS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRoaWNrbmVzcyIgdHlwZT0ibHp4Om51bWJlciIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorICBUaGUgdGhpY2tuZXNzIGZvciB0aGlzIHRleHQsIGJldHdlZW4gLTIwMCBhbmQgMjAwLCBGbGFzaCBvbmx5PC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRleHRpbmRlbnQiIHR5cGU9Imx6eDpudW1iZXIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyAgdGV4dGluZGVudCBhY2NlcHRzIGFueSBudW1iZXIgd2hpY2ggaXMgaW50ZXJwcmV0ZWQgYXMgYSBweCB2YWx1ZTwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZXh0ZGVjb3JhdGlvbiIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgIHRleHQtZGVjb3JhdGlvbiBmb3IgdGhpcyB0ZXh0LCBlaXRoZXIgJ25vbmUnIG9yICd1bmRlcmxpbmUnLjwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZXh0YWxpZ24iIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorICB0ZXh0YWxpZ24gYWNjZXB0cyBvbmUgb2YgW2xlZnQsIHJpZ2h0LCBjZW50ZXIsIGp1c3RpZnldPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRleHQiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorICBUaGUgdGV4dCB0byBkaXNwbGF5IGluIHRoaXMgdGV4dCBmaWVsZC4gSWYgc2V0IHRvIGEgdmFsdWUgdGhhdCBpcyBub3QgYSBzdHJpbmcsIHRoZSB2YWx1ZSB3aWxsIGZpcnN0IGJlIGNvbnZlcnRlZCB0byBhIHN0cmluZyBhcyBpZiBieSBTdHJpbmcodmFsdWUpLiBUbyBkaXNwbGF5IG5vdGhpbmcsIHNldCB0aGUgdmFsdWUgdG8gdGhlIGVtcHR5IHN0cmluZyAiIi4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNoYXJwbmVzcyIgdHlwZT0ibHp4Om51bWJlciIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorICBUaGUgc2hhcnBuZXNzIGZvciB0aGlzIHRleHQsIGJldHdlZW4gLTQwMCBhbmQgNDAwLCBGbGFzaCBvbmx5PC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlbGVjdGFibGUiIHR5cGU9Imx6eDpib29sZWFuIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgIElmIHRydWUsIHRoZSB0ZXh0IGlzIHNlbGVjdGFibGUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNjcm9sbHdpZHRoIiB0eXBlPSJseng6bnVtYmVyIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgIFRoZSB0b3RhbCB3aWR0aCBvZiB0aGUgY29udGVudCBpbiBwaXhlbHMuIHRoaXMuc2V0QXR0cmlidXRlKCd3aWR0aCcsIHRoaXMuc2Nyb2xsd2lkdGgpIGlzIGVxdWl2YWxlbnQgdG8gdGhpcy5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgbnVsbCkgKGZvciB0aGUgY3VycmVudCBjb250ZW50OiB0aGUgZm9ybWVyIHdpbGwgbm90IGZvbGxvdyBjb250ZW50IGNoYW5nZXMgYXMgdGhlIGxhdHRlciBkb2VzKS4gSWYgdGhpcy5zY3JvbGx3aWR0aCAmZ3Q7IHRoaXMud2lkdGgsIHRoaXMuc2V0QXR0cmlidXRlKCd5c2Nyb2xsJywgdGhpcy53aWR0aCAtIHRoaXMuc2Nyb2xsd2lkdGgpIHdpbGwgY2F1c2UgdGhlIGVuZCBvZiBjb250ZW50IHRvIGJlIHZpc2libGUgYXQgdGhlIGVkZ2Ugb2YgdGhlIHZpZXcuIChUaGUgcmlnaHRtb3N0IGNvbnRlbnQgd2lsbCBhcHBlYXIgYXQgdGhlIHJpZ2h0IGVkZ2Ugb2YgdGhlIHZpZXcgZm9yIGxlZnQtdG8tcmlnaHQgc2NyaXB0cy4pIE5PVEU6IEEgY29uc3RyYWludCBvciBoYW5kbGVyIG9uIG9uc2Nyb2xsd2lkdGggd2lsbCBhdXRvbWF0aWNhbGx5IGVuYWJsZSB1cGRhdGluZyB0aGUgYXR0cmlidXRlLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2Nyb2xsaGVpZ2h0IiB0eXBlPSJseng6bnVtYmVyIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgIFRoZSB0b3RhbCBoZWlnaHQgb2YgdGhlIGNvbnRlbnQgaW4gcGl4ZWxzLiB0aGlzLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgdGhpcy5zY3JvbGxoZWlnaHQpIGlzIGVxdWl2YWxlbnQgdG8gdGhpcy5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsIG51bGwpIChmb3IgdGhlIGN1cnJlbnQgY29udGVudDogdGhlIGZvcm1lciB3aWxsIG5vdCBmb2xsb3cgY29udGVudCBjaGFuZ2VzIGFzIHRoZSBsYXR0ZXIgZG9lcykuIElmIHRoaXMuc2Nyb2xsaGVpZ2h0ICZndDsgdGhpcy5oZWlnaHQsIHRoaXMuc2V0QXR0cmlidXRlKCd5c2Nyb2xsJywgdGhpcy5oZWlnaHQgLSB0aGlzLnNjcm9sbGhlaWdodCkgd2lsbCBzY3JvbGwgdGhlIGNvbnRlbnQgc28gdGhhdCB0aGUgYm90dG9tIG9mIHRoZSBjb250ZW50IGFwcGVhcnMgaW4gdGhlIGJvdHRvbSBvZiB0aGUgdmlldy4gTk9URTogQSBjb25zdHJhaW50IG9yIGhhbmRsZXIgb24gb25zY3JvbGxoZWlnaHQgd2lsbCBhdXRvbWF0aWNhbGx5IGVuYWJsZSB1cGRhdGluZyB0aGUgYXR0cmlidXRlLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2Nyb2xsZXZlbnRzIiB0eXBlPSJseng6Ym9vbGVhbiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorICBVc2Ugc2V0QXR0cmlidXRlKCdzY3JvbGxldmVudHMnLCB0cnVlKSB0byBjYXVzZSBzY3JvbGwgZXZlbnRzIHRvIGJlIHNlbnQuIE5PVEU6IEEgY29uc3RyYWludCBvciBoYW5kbGVyIG9uIG9ueXNjcm9sbCwgb25zY3JvbGwsIG9ueHNjcm9sbCwgb25oc2Nyb2xsLCBvbnNjcm9sbGhlaWdodCwgb25tYXhzY3JvbGwsIG9uc2Nyb2xsd2lkdGggb3Igb25tYXhoc2Nyb2xsIHdpbGwgYXV0b21hdGljYWxseSBlbmFibGUgc2Nyb2xsZXZlbnRzLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2Nyb2xsIiB0eXBlPSJseng6bnVtYmVyIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgIFRoZSB2ZXJ0aWNhbCBzY3JvbGwgcG9zaXRpb24gKGluIGxpbmVzLCAxLWJhc2VkKS4gRGVmYXVsdCAxLjwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZXNpemUiIHR5cGU9Imx6eDpib29sZWFuIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgIElmIHRydWUsIHRoZSB3aWR0aCBvZiB0aGUgdGV4dCBmaWVsZCB3aWxsIGJlIHJlY29tcHV0ZWQgZWFjaCB0aW1lIHRleHQgaXMgY2hhbmdlZCwgc28gdGhhdCB0aGUgdGV4dCB2aWV3IGlzIGV4YWN0bHkgYXMgd2lkZSBhcyB0aGUgd2lkdGggb2YgdGhlIHdpZGVzdCBsaW5lLiBEZWZhdWx0cyB0byB0cnVlLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGF0dGVybiIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgIHJlZ2V4cCBkZXNjcmliaW5nIHNldCBvZiBjaGFyYWN0ZXJzIGFsbG93ZWQgaW4gdGhpcyBmaWVsZCBSZXN0cmljdCB0aGUgY2hhcmFjdGVycyB0aGF0IGNhbiBiZSBlbnRlcmVkIHRvIGEgcGF0dGVybiBzcGVjaWZpZWQgYnkgYSByZWd1bGFyIGV4cHJlc3Npb24uIEN1cnJlbnRseSBvbmx5IHRoZSBleHByZXNzaW9uIFsgXSogZW5jbG9zaW5nIGEgc2V0IG9mIGNoYXJhY3RlcnMgb3IgY2hhcmFjdGVyIHJhbmdlcywgcHJlY2VkZWQgYnkgYW4gb3B0aW9uYWwgIl4iLCBpcyBzdXBwb3J0ZWQuIGV4YW1wbGVzOiBbMC05XSogLCBbYS16QS1aMC05XSosIFteMC05XSogPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9ueXNjcm9sbCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib254c2Nyb2xsIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbnRleHRsaW5rIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbnNlbGVjdGFibGUiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uc2Nyb2xsd2lkdGgiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uc2Nyb2xsaGVpZ2h0IiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbnNjcm9sbGV2ZW50cyIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25zY3JvbGwiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9ucGF0dGVybiIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25tYXhzY3JvbGwiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9ubWF4bGVuZ3RoIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbm1heGhzY3JvbGwiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9ubGluZWhlaWdodCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25oc2Nyb2xsIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmRpcmVjdGlvbiIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibXVsdGlsaW5lIiB0eXBlPSJseng6Ym9vbGVhbiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorICBJZiB0cnVlLCB0aGUgbGluZXMgb2YgdGV4dCBhcmUgd3JhcHBlZCB0byBmaXQgd2l0aGluIHRoZSB0ZXh0IHdpZHRoLiAoVGhlIG5hbWUgbXVsdGlsaW5lIGlzIGEgbWlzbm9tZXIuIFVud3JhcHBlZCB0ZXh0IGNhbiBiZSBtdWx0aXBsZSBsaW5lcyBpZiBpdCBjb250YWlucyBhICZsdDticiAvJmd0OyBvciAmbHQ7cCZndDsgZWxlbWVudCwgb3IgYSBsaW5lIGJyZWFrIHdpdGhpbiBhICZsdDtwcmUmZ3Q7IGVsZW1lbnQuIFRoaXMgYXR0cmlidXRlIGRlZmF1bHRzIHRvIHRydWUgaWYgd2lkdGggYW5kIGhlaWdodCBhcmUgZXhwbGljaXRseSBzcGVjaWZpZWQuIElmIHlvdSBzZXQgbXVsdGlsaW5lPXRydWUsIHlvdSBwcm9iYWJseSB3YW50IHRvIGV4cGxpY2l0bHkgYSB3aWR0aCBmb3IgdGhlIHRleHQgYWxzbzsgaWYgbXVsdGlsaW5lPXRydWUgYW5kIHlvdSBkbyBub3Qgc3BlY2lmeSBhIHdpZHRoLCB0aGUgc3lzdGVtIHdpbGwgcGljayBhbiBhcmJpdHJhcnkgd2lkdGggKDEwMCBwaXhlbHMgYXQgdGhlIG1vbWVudCkuIFdoZW4gbXVsdGlsaW5lPXRydWUsIHRoZSB0ZXh0IGlzIGF1dG9tYXRpYWxseSByZS13cmFwcGVkIHdoZW5ldmVyIHRoZSBjb250ZW50IGlzIG1vZGlmaWVkIGJ5IGNhbGxzIHRvIHNldFRleHQsIG9yIHdoZW5ldmVyIHRoZSB3aWR0aCBvZiB0aGUgdGV4dCB2aWV3IGlzIG1vZGlmaWVkLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWF4c2Nyb2xsIiB0eXBlPSJseng6bnVtYmVyIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgIFRoZSBtYXhpbXVtIHZlcnRpY2FsIHNjcm9sbCBwb3NpdGlvbiAoaW4gbGluZXMsIDEtYmFzZWQpLiB0aGlzLnNldEF0dHJpYnV0ZSgnc2Nyb2xsJywgdGhpcy5tYXhzY3JvbGwpIHdpbGwgY2F1c2UgdGhlIGxhc3QgbGluZSBvZiB0aGUgY29udGVudCB0byBiZSB2aXNpYmxlIGF0IHRoZSBib3R0b20gb2YgdGhlIHZpZXcgKGhlbmNlIHRoaXMgaXMgdGhlIGxpbmUgbnVtYmVyIG9mIHRoZSBsaW5lIHRoYXQgd2lsbCBhcHBlYXIgYXQgdGhlIHRvcCBvZiB0aGUgdmlldyB3aGVuIHNjcm9sbGVkIGFsbCB0aGUgd2F5IHRvIHRoZSBib3R0b20pLiBOT1RFOiBBIGNvbnN0cmFpbnQgb3IgaGFuZGxlciBvbiBvbm1heHNjcm9sbCB3aWxsIGF1dG9tYXRpY2FsbHkgZW5hYmxlIHVwZGF0aW5nIHRoZSBhdHRyaWJ1dGUuICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWF4bGVuZ3RoIiB0eXBlPSJseng6bnVtYmVyIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgIE1heGltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgYWxsb3dlZCBpbiB0aGlzIGZpZWxkIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtYXhoc2Nyb2xsIiB0eXBlPSJseng6bnVtYmVyIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgIFRoZSBtYXhpbXVtIGhvcml6b250YWwgc2Nyb2xsIHBvc2l0aW9uIGluIHBpeGVscy4gdGhpcy5zZXRBdHRyaWJ1dGUoJ2hzY3JvbGwnLCB0aGlzLm1heGhzY3JvbGwpIHdpbGwgY2F1c2UgdGhlIGVuZCBvZiBjb250ZW50IHRvIGJlIHZpc2libGUgYXQgdGhlIGVkZ2Ugb2YgdGhlIHZpZXcuIChUaGUgcmlnaHRtb3N0IGNvbnRlbnQgd2lsbCBhcHBlYXIgYXQgdGhlIHJpZ2h0IGVkZ2Ugb2YgdGhlIHZpZXcgZm9yIGxlZnQtdG8tcmlnaHQgc2NyaXB0cywgaGVuY2UgdGhpcyBpcyB0aGUgcGl4ZWwgcG9zaXRpb24gb2YgdGhlIGxlZnRtb3N0IHBpeGVsIHRoYXQgd2lsbCBhcHBlYXIgaW4gdGhlIHZpZXcgd2hlbiBzY3JvbGxlZCBhbGwgdGhlIHdheSB0byB0aGUgcmlnaHQuKSBOT1RFOiBBIGNvbnN0cmFpbnQgb3IgaGFuZGxlciBvbiBvbm1heGhzY3JvbGwgd2lsbCBhdXRvbWF0aWNhbGx5IGVuYWJsZSB1cGRhdGluZyB0aGUgYXR0cmlidXRlLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGluZWhlaWdodCIgdHlwZT0ibHp4Om51bWJlciIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBoZWlnaHQgb2YgYSBsaW5lIG9mIHRleHQgaW4gdGhlIGN1cnJlbnQgc3R5bGUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxldHRlcnNwYWNpbmciIHR5cGU9Imx6eDpudW1iZXIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyAgbGV0dGVyc3BhY2luZyBhY2NlcHRzIGFueSBudW1iZXIgd2hpY2ggaXMgaW50ZXJwcmV0ZWQgYXMgYSBweCB2YWx1ZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaHNjcm9sbCIgdHlwZT0ibHp4Om51bWJlciIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorICBUaGUgaG9yaXpvbnRhbCBzY3JvbGwgcG9zaXRpb24gaW4gcGl4ZWxzLiBEZWZhdWx0IDAuIE5PVEU6IEEgY29uc3RyYWludCBvciBoYW5kbGVyIG9uIG9uaHNjcm9sbCB3aWxsIGF1dG9tYXRpY2FsbHkgZW5hYmxlIHVwZGF0aW5nIHRoZSBhdHRyaWJ1dGUuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJncmlkRml0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im5vbmV8cGl4ZWx8c3VicGl4ZWwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyAgR3JpZCBmaXQgZm9yIHRoaXMgdGV4dCwgRmxhc2ggb25seSBPbmUgb2Y6ICAibm9uZSIgfCAicGl4ZWwiIHwgInN1YnBpeGVsIiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGlyZWN0aW9uIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyAgVGV4dCBkaXJlY3Rpb24sIGVpdGhlciAibHRyIiAoZGVmYXVsdCkgb3IgInJ0bCIsIEZsYXNoIG9ubHkgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNkYXRhIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyAgQW4gYWxpYXMgZm9yIHRoZSB0ZXh0IGF0dHJpYnV0ZSwgYnV0IHdpdGggdGhlIHR5cGUgY2RhdGEsIGFsbG93aW5nIGl0IHRvIGJlIGJvdW5kIHRvIGEgdmFsdWUgdGhhdCBzaG91bGQgbm90IGJlIGludGVycHJldGVkIGFzIG1hcmt1cCAod2hlbiBkYXRhIGJpbmRpbmcsIENTUyBzdHlsZSBiaW5kaW5nLCBvciA/Pz8gb3IgPz8/KS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFudGlBbGlhc1R5cGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibm9ybWFsfHN1YnBpeGVsfGFkdmFuY2VkIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQW50aWFsaWFzIHR5cGUgZm9yIHRoaXMgdGV4dCwgRmxhc2ggb25seSBPbmUgb2Y6ICAibm9ybWFsIiB8ICJzdWJwaXhlbCIgfCAiYWR2YW5jZWQiIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InN1Ym1pdCIgdHlwZT0ibHp4OnN1Ym1pdCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEFzc29jaWF0ZXMgYSBmb3JtIHdpdGggYSBkYXRhc2V0LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJzdWJtaXQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpub2RlIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3RhdHVzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im9rIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgUmVhZC1vbmx5IHN0YXR1cyBvZiBkYXRhIHJlcXVlc3QuIFBvc3NpYmxlIHZhbHVlcyBhcmUgJ29rJywKKyAgICAgICAgICAgICAgJ3JlcXVlc3RpbmcnLCBhbmQgJ2Vycm9yJy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVycm9yIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEVycm9yIGZyb20gbW9zdCByZWNlbnQgcmVzcG9uc2Ugb3IgZW1wdHkgc3RyaW5nOyBjbGVhcmVkIHRvIGVtcHR5CisgICAgICAgICAgICAgIHN0cmluZyBlYWNoIHRpbWUgYSByZXF1ZXN0IG9uIHRoZSBkYXRhc2V0IGlzIG1hZGUuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkYXRhc2V0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgZGF0YXNldCB0aGF0IHNwZWNpZmllcyB0aGUgcmVxdWVzdCB1cmwsIHdoaWNoIHdpbGwgYWxzbyBob2xkCisgICAgICAgICAgICAgIHRoZSByZXN1bHQgb2YgdGhlIHF1ZXJ5LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJiYXNldGFic2NvbnRlbnQiIHR5cGU9Imx6eDpiYXNldGFic2NvbnRlbnQiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImJhc2V0YWJzY29udGVudCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmJhc2Vjb21wb25lbnQiPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImNoYXJ0YWN0aW9uaGVscGVyIiB0eXBlPSJseng6Y2hhcnRhY3Rpb25oZWxwZXIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBAa2V5d29yZCBwcml2YXRlIAorICAgICAgICBjbGFzcyB0aGF0IGhlbHAgd2l0aCB0aGUgem9vbSBhbmltYXRpb24gYW5kIHVuZG8gYWJpbGl0eQorICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImNoYXJ0YWN0aW9uaGVscGVyIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYXJ0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiR7bnVsbH0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBAa2V5d29yZCBwcml2YXRlIAorICAgICAgICBjbGFzcyB0aGF0IGhlbHAgd2l0aCB0aGUgem9vbSBhbmltYXRpb24gYW5kIHVuZG8gYWJpbGl0eQorICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbmltYXRlUHJvZ3Jlc3MiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhY3Rpb25saXN0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IltdIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJUZXN0UmVzdWx0IiB0eXBlPSJseng6VGVzdFJlc3VsdCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCisgIEEgVGVzdFJlc3VsdCBhY2N1bXVsYXRlcyB0aGUgcmVzdWx0cyBvZiBhIHRlc3QgcnVuOiB0aGUgdG90YWwgbnVtYmVyCisgIG9mIHRlc3RzIHJ1biwgdGhlIG51bWJlciBvZiBmYWlsdXJlcywgYW5kIHRoZSBudW1iZXIgb2YgZXJyb3JzLiAgQQorICBUZXN0UmVzdWx0IGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBieSBhIFRlc3RTdWl0ZSBhbmQgaW5jbHVkZWQgYXMKKyAgaXRzIGZpcnN0IGNoaWxkIHZpZXcgc28gdGhlIHJlc3VsdHMgb2YgdGhlIHRlc3Qgc3VpdGUgd2lsbCBiZQorICBkaXNwbGF5ZWQuCisKKyAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciAmbHQ7eHJlZiBsaW5rZW5kPSJsei5UZXN0U3VpdGUiLyZndDsKKyAgZm9yIGFuIGV4YW1wbGUgb2YgdGhpcyB0YWcuCis8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJUZXN0UmVzdWx0IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6RGVidWdPYmplY3QiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtZXNzYWdlcyIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJsemNvbWJvYm94X2l0ZW0iIHR5cGU9Imx6eDpsemNvbWJvYm94X2l0ZW0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBDbGFzcyB1c2VkIGFzIHRoZSBkZWZhdWx0IGl0ZW0gY2xhc3MgaW4gbHpjb21ib2JveC4gU2VlIGx6Y29tYm9ib3gncworICAgICAgICAgIGl0ZW1jbGFzc25hbWUgYXR0cmlidXRlLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJsemNvbWJvYm94X2l0ZW0iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNlZGF0YWNvbWJvYm94X2l0ZW0iPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJhc2VzbGlkZXJ0aHVtYiIgdHlwZT0ibHp4OmJhc2VzbGlkZXJ0aHVtYiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEJhc2VzbGlkZXJ0aHVtYiBleHBlY3RzIHRvIGJlIHdpdGhpbiBhIGJhc2VzbGlkZXJ0cmFjayAob3IgaXRzCisgICAgICAgICAgc3ViY2xhc3MpLiBJbiBvdGhlciB3b3JkcywgaXRzICJjbGFzc3Jvb3QiIHNob3VsZCBiZSBhIHNsaWRlcnRyYWNrLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJiYXNlc2xpZGVydGh1bWIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpidXR0b24iPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzaG93dmFsdWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJHt0aGlzLnBhcmVudC5wYXJlbnQuc2hvd3ZhbHVlfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRvZ2dsZXMgdGhlIGZsb2F0aW5nIHZhbHVlIHRleHQgd2hlbiBkcmFnZ2luZyB0aHVtYi4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iY2FudmFzIiB0eXBlPSJseng6Y2FudmFzIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgCitUaGUgY2FudmFzIGlzIHRoZSBjb250YWluZXIgZm9yIGFsbCB2aWV3cyB3aXRoaW4gYW4gYXBwbGljYXRpb24uCisKK1RoZSBsei5jYW52YXMgY2xhc3MgcmVwcmVzZW50cyB0aGUgdmlld2FibGUgYXJlYSBvZiB0aGUgYXBwbGljYXRpb24uIFRoZXJlIGlzIG9uZSBpbnN0YW5jZSBvZiBsei5jYW52YXMsIG5hbWVkIGNhbnZhcy4gVGhlIGNhbnZhcyBjb250YWlucyBhbGwgdmlld3Mgd2l0aGluIGFuIGFwcGxpY2F0aW9uLgorCitUaGUgJmx0O2NhbnZhcyZndDsgdGFnIGlzIHRoZSBkb2N1bWVudCByb290IG9mIGFuIExaWCBhcHBsaWNhdGlvbiBmaWxlLiBJdCBjb250YWlucyBjbGFzcywgcmVzb3VyY2UsIGFuZCBmb250IGRlZmluaXRpb25zLCBsaWJyYXJ5IGluY2x1ZGVzLCBhbmQgdmlldyBhbmQgb3RoZXIgaW5zdGFuY2VzLgorCitTZWUgdGhlIEd1aWRlIGZvciBhIGNvbXBsZXRlIGRpc2N1c3Npb24gb2YgdGhlICZsdDtjYW52YXMmZ3Q7IHRhZy4gCisgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iY2FudmFzIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRpdGxlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9InN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNjcmlwdGxpbWl0cyIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgICBBIENTUyBkZWNsYXJhdGlvbiBvZiBwcm9wZXJ0eTogdmFsdWUgcGFpcnMgdXNlZCB0byBhZHZpc2UgdGhlIHVuZGVybHlpbmcgcnVudGltZSBvZiBkZXNpcmVkIHJlY3Vyc2lvbiBhbmQgdGltZW91dCBsaW1pdHMuIE5vdCBhbGwgcnVudGltZXMgcmVzcGVjdCB0aGlzIGFkdmljZS4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgcnVudGltZSBkZXBlbmRlbnQsIGJ1dCB0eXBpY2FsbHkgcmVjdXJzaW9uIGlzIGF0IGxlYXN0IDEwMCBhbmQgdGltZW91dCBhdCBsZWFzdCAxMCAoc2Vjb25kcykuIEV4YW1wbGU6IHNjcmlwdGxpbWl0cz0icmVjdXJzaW9uOiAyNTYsIHRpbWVvdXQ6IDE1IjwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzY3JlZW5vcmllbnRhdGlvbiIgdHlwZT0ibHp4OmJvb2xlYW4iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyAgIFVzZWQgdG8gdGVsbCB3aGF0IHRoZSBzY3JlZW4gb3JpZW50YXRpb24gaXMsICdwb3J0cmFpdCcgb3IgJ2xhbmRzY2FwZScgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJ1bnRpbWUiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorICAgQSBTdHJpbmcgZGVzY3JpYmluZyB0aGUgdGFyZ2V0IHJ1bnRpbWUuICJkaHRtbCIgfCAic3dmOCIgfCAic3dmOSIgfCAic3dmMTAiIGFyZSBjdXJyZW50bHkgc3VwcG9ydGVkLiBPdGhlcnMgYXJlIGluIGRldmVsb3BtZW50LjwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwcm94aWVkIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJZiB0cnVlLCByZXF1ZXN0cyBmb3IgZGF0YSBhbmQgbWVkaWEgYXJlIHByb3hpZWQgdGhyb3VnaCBMUFMgc2VydmVyLiBpZiBmYWxzZSwgcmVxdWVzdHMgYXJlIG1hZGUgZGlyZWN0bHkgdG8gdGFyZ2V0IFVSTHMuIGlmIGluaGVyaXQsIGluaGVyaXQgZnJvbSBsenByb3hpZWQgcXVlcnkgYXJnLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGVyY2VudGNyZWF0ZWQiIHR5cGU9Imx6eDpudW1iZXIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyAgIEEgbnVtYmVyIGZyb20gMC0xIHRoYXQgcmVwcmVzZW50cyB0aGUgcGVyY2VudGFnZSBvZiB0aGUgYXBwIHRoYXQgaGFzIGJlZW4gaW5zdGFudGlhdGVkLiAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1lZGlhbG9hZHRpbWVvdXQiIHR5cGU9Imx6eDpudW1iZXIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyAgIElmIHByZXNlbnQsIHNwZWNpZmllcyB0aGUgZGVmYXVsdCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3IgbWVkaWEgbG9hZCByZXF1ZXN0cyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWVkaWFlcnJvcnRpbWVvdXQiIHR5cGU9Imx6eDpudW1iZXIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyAgIElmIHByZXNlbnQsIHNwZWNpZmllcyB0aGUgZGVmYXVsdCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyBmb3IgbWVkaWEgZXJyb3JzLiBBbiBlcnJvciBvY2N1cnMgd2hlbiBubyBieXRlcyBoYXZlIGJlZW4gcmVjZWl2ZWQuIFRoaXMgaXMgdXNlZCBpbiBGbGFzaCB0byBkZXRlY3QgbWVkaWEgbG9hZHMgdGhhdCBoYXZlIGZhaWxlZCBkdWUgdG8gdGhlIHNlY3VyaXR5IHBvbGljeS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imxwc3ZlcnNpb24iIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBMUFMgdGhhdCBnZW5lcmF0ZWQgdGhpcyBhcHBsaWNhdGlvbiAoZm9yIC5sem8gZmlsZXMsIHRoaXMgaXMgdGhlIHZlcnNpb24gbnVtYmVyIG9mIHRoZSBzZXJ2ZXIgdGhhdCBnZW5lcmF0ZWQgdGhlIG9wdGltaXplZCBmaWxlLCBub3QgdGhlIG9uZSB0aGF0IHNlcnZlZCBpdCkuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJscHNyZWxlYXNlIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyAgIHJlbGVhc2Ugb2YgdGhlIExQUyB0aGF0IGdlbmVyYXRlZCB0aGlzIGFwcGxpY2F0aW9uIChmb3IgLmx6byBmaWxlcywgdGhpcyBpcyB0aGUgcmVsZWFzZSBvZiB0aGUgc2VydmVyIHRoYXQgZ2VuZXJhdGVkIHRoZSBvcHRpbWl6ZWQgZmlsZSwgbm90IHRoZSBvbmUgdGhhdCBzZXJ2ZWQgaXQpLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibHBzYnVpbGRkYXRlIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyAgIEEgU3RyaW5nIHNwZWNpZnlpbmcgdGhlIGRhdGUgYW5kIHRpbWUgb2YgdGhlIExQUyBidWlsZC4gIjIwMDctMDMtMDVUMTU6MzM6NDItMDgwMCIgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imxwc2J1aWxkIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyAgIEEgU3RyaW5nIHNwZWNpZnlpbmcgdGhlIExQUyBidWlsZCByZXZpc2lvbiBhbmQgdGhlIGJ1aWxkIGRpcmVjdG9yeTogZS5nLiAiNDA3NSAvVXNlcnMvbWF4Y2FybHNvbi9vcGVubGFzemxvL2xlZ2FscyIgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imh0dHBkYXRhcHJvdmlkZXIiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorICAgCitodHRwZGF0YXByb3ZpZGVyIGlzIGJvdW5kIHRvIHRoZSBzeXN0ZW0gZGVmYXVsdCBIVFRQIERhdGFQcm92aWRlci4KK1RoaXMgd2lsbCBiZSBhbiBpbnN0YW5jZSBvZiBMekhUVFBEYXRhUHJvdmlkZXIsIHdoaWNoIGltcGxlbWVudHMgSFRUUCByZXF1ZXN0IHRyYW5zcG9ydC4gVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlIGNhbnZhcy5kZWZhdWx0ZGF0YXByb3ZpZGVyIGlzIGluaXRpYWxseSBzZXQgdG8gcG9pbnQgdG8gdGhpcyBzYW1lIG9iamVjdC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZ1bGxzY3JlZW4iIHR5cGU9Imx6eDpib29sZWFuIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgICBVc2VkIHRvIHN3aXRjaCBpbnRvIGZ1bGxzY3JlZW4gZGlzcGxheSBtb2RlIG9yIGJhY2sgdG8gbm9ybWFsIGRpc3BsYXkuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmcmFtZXJhdGUiIHR5cGU9Imx6eDpudW1iZXIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgZnJhbWVyYXRlIHRoYXQgc2hvdWxkIGJlIHVzZWQgZm9yIHRoaXMgYXBwbGljYXRpb24gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRlZmF1bHRkYXRhcHJvdmlkZXIiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIAorZGVmYXVsdGRhdGFwcm92aWRlciBpcyBib3VuZCB0byB0aGUgc3lzdGVtIGRlZmF1bHQgRGF0YVByb3ZpZGVyLgorQnkgZGVmYXVsdCwgdGhpcyB3aWxsIGJlIGFuIGluc3RhbmNlIG9mIEx6SFRUUERhdGFQcm92aWRlciwgd2hpY2ggd2lsbCBhbHNvIGJlIHBvaW50ZWQgdG8gYnkgdGhlIGNhbnZhcy5odHRwZGF0YXByb3ZpZGVyLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGVidWciIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iYm9vbGVhbiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRhdGFzZXRzIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyAgIERpY3Rpb25hcnkgb2YgYWxsIG5hbWVkIGRhdGFzZXRzLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGF0YWxvYWR0aW1lb3V0IiB0eXBlPSJseng6bnVtYmVyIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgICBJZiBwcmVzZW50LCBzcGVjaWZpZXMgdGhlIGRlZmF1bHQgdGltZW91dCBpbiBtaWxsaXNlY29uZHMgZm9yIGRhdGEgbG9hZCByZXF1ZXN0cyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYXBwYnVpbGRkYXRlIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyAgQSBTdHJpbmcgc3BlY2lmeWluZyB0aGUgZGF0ZSBhbmQgdGltZSBvZiB0aGUgYXBwbGljYXRpb24gYnVpbGQuICIyMDA4LTA5LTEyVDE0OjE1OjEyWiIgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFsbG93ZnVsbHNjcmVlbiIgdHlwZT0ibHp4OmJvb2xlYW4iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBXaGV0aGVyIGZ1bGxzY3JlZW4gZGlzcGxheSBzdGF0ZSBpcyBzdXBwb3J0ZWQgZm9yIHRoZSBTV0Z4IHJ1bnRpbWVzLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJsYWJlbCIgdHlwZT0ibHp4OmxhYmVsIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisKKyAgICAgIEFuIGFic3RyYWN0IGNsYXNzIHRoYXQgYXBwbGllcyBhbGwgZmVhdHVyZXMgbGFiZWwuCisgICAgICBAYWNjZXNzIHB1YmxpYworICAgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibGFiZWwiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpkcmF3dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN0eWxlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyB0aGUgc3R5bGUgd2lsbCBiZSBhcHBsaWVkCisgICAgICAgICAgICBAa2V5d29yZCBwcml2YXRlPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJ2YWx5IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIG9yaWdpbmFsIHkgdmFsdWUgZm9yIHRoaXMgbGFiZWwuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJydmFseCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBvcmlnaW5hbCB4IHZhbHVlIGZvciB0aGlzIGxhYmVsLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibHRleHRzaXplIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSB0ZXh0IHNpemUgb2YgdGhpcyBsYWJlbC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imx0ZXh0IiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9IiRvbmNle251bGx9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHRleHQgb2YgdGhpcyBsYWJlbC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imx0Y29sb3IiIHR5cGU9Imx6eDpjb2xvciIgZGVmYXVsdD0iIzAwMDAwMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBjb2xvciBvZiB0aGUgdGV4dCBvZiB0aGlzIGxhYmVsLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGJ3aWR0aCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSB3aWR0aCBvZiB0aGUgYm9yZGVyIG9mIHRoaXMgbGFiZWwuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYm9yZGVyIiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9IiMwMDAwMDAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgY29sb3Igb2YgdGhlIGJvcmRlciBvZiB0aGlzIGxhYmVsLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmFkZWluIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBXaGV0aGVyIHRvIGluaXRpYWxseSBmYWRlIHRoaXMgbGFiZWwgaW4uIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlbmFibGVDYWNoZSIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBAa2V5d29yZCBwcml2YXRlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InJ0ZSIgdHlwZT0ibHp4OnJ0ZSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0icnRlIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6aHRtbCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IndyYXBwZXJmaWxlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIExvY2F0aW9uIG9mIHRoZSBodG1sIHdyYXBwZXIgZmlsZSB1c2VkIGJ5IHRoZSBlZGl0b3IuCisgICAgICAgICAgQW4gZW1wdHkgc3RyaW5nIChkZWZhdWx0KSBsb2FkcyB0aGUgc3lzdGVtIHdyYXBwZXIgZmlsZS4KKyAgICAgICAgICBJZiBhIGN1c3RvbSB3cmFwcGVyIGZpbGUgaXMgdXNlZCwgdGhlIHBhdGggaXMgcmVsYXRpdmUgdG8gd2hlcmUKKyAgICAgICAgICB0aGUgYXBwbGljYXRpb24gcnVucyBmcm9tLgorICAgICAgICAgIEBpbml0YXJnIFN0cmluZworICAgICAgICAgIEBhY2Nlc3MgcHVibGljCisgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRvb2xiYXJfb3JkZXIiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0idW5kbyxyZWRvLHwsY3V0LGNvcHkscGFzdGUsfCxib2xkLGl0YWxpYyx1bmRlcmxpbmUsc3RyaWtldGhyb3VnaCx8LGluc2VydE9yZGVyZWRMaXN0LGluc2VydFVub3JkZXJlZExpc3QsaW5kZW50LG91dGRlbnQsfCxqdXN0aWZ5TGVmdCxqdXN0aWZ5UmlnaHQsanVzdGlmeUNlbnRlcixqdXN0aWZ5RnVsbCx8LGZvcmVDb2xvcixoaWxpdGVDb2xvcix8LGNyZWF0ZUxpbmssdW5saW5rLGluc2VydEltYWdlLHwscHJpbnQsc21pbGV5LHx8LGZvbnROYW1lLGZvbnRTaXplIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgZGlqaXQuRWRpdG9yIHRvb2xiYXIgb3JkZXIuIFRoZSBsaXN0IG9mIGl0ZW1zIHRvIHNob3cgaW4gdGhlIGVkaXRvcgorICAgICAgICAgIHRvb2xiYXIuIFRoZSBkZWZhdWx0IGlzIHRvIHNob3cgYWxsIHRvb2xiYXIgZmVhdHVyZXMuCisgICAgICAgICAgQSAnfCcgaW5zZXJ0cyBhIHNlcGFyYXRvciBiZXR3ZWVuIGJsb2NrcyBvZiB0b29sYmFycy4gCisgICAgICAgICAgQSAnfHwnIHdpbGwgZm9yY2UgYSBsaW5lYnJlYWsgaW4gdGhlIHRvb2xiYXIuCisgICAgICAgICAgQGluaXRhcmcgU3RyaW5nCisgICAgICAgICAgQGFjY2VzcyBwdWJsaWMKKyAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGV4dCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIGluaXRpYWwgdmFsdWUgb2YgdGhlIHRleHQgdG8gZWRpdC4gVGhlIHRleHQgaXMgdXBkYXRlZCB3aGlsZQorICAgICAgICAgIHRoZSBydGUgaXMgcnVubmluZy4KKyAgICAgICAgICBAdHlwZSBodG1sCisgICAgICAgICAgQGFjY2VzcyBwdWJsaWMKKyAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib250ZXh0IiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgb250ZXh0IGV2ZW50IGlzIGdlbmVyYXRlZCB3aGVuZXZlciB0aGUgcnRlIHRleHQgY29udGVudCBjaGFuZ2VzLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25lZGl0b3JyZWFkeSIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIG9uZWRpdG9yIGV2ZW50IGlzIGdlbmVyYXRlZCB3aGVuZXZlciB0aGUgcnRlIGVkaXRvciBpcyBjb21wbGV0ZWx5IGxvYWRlZC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uX3RleHQiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEBhY2Nlc3MgcHJpdmF0ZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25fcnRlX2xvYWRlZCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQGFjY2VzcyBwcml2YXRlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbl9lZGl0b3JyZWFkeSIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQGFjY2VzcyBwcml2YXRlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJleHRyYV9wbHVnaW5zIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIENvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIGFkZGl0aW9uYWwgZGlqaXQuRWRpdG9yIHBsdWdpbnMgdG8gbG9hZC4KKyAgICAgICAgICBBbiBlbXB0eSBzdHJpbmcgKGRlZmF1bHQpIHdpbGwgbG9hZCBvbmx5IHRoZSBwbHVnaW5zIHVzZWQgYnkgZGVmYXVsdC4KKyAgICAgICAgICBAaW5pdGFyZyBTdHJpbmcKKyAgICAgICAgICBAYWNjZXNzIHB1YmxpYworICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlZGl0b3JyZWFkeSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIElmIHRydWUsIHRoZSBydGUgZWRpdG9yIGlzIHJlYWR5IHRvIHJlY2VpdmUgY29tbWFuZHMKKyAgICAgICAgICBAdHlwZSBCb29sZWFuCisgICAgICAgICAgQGFjY2VzcyBwdWJsaWMKKyAgICAgICAgICBAa2V5d29yZHMgcmVhZG9ubHkKKyAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZG9qb190aGVtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJ0dW5kcmEiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBkb2pvIHRoZW1lIHRvIHVzZS4gRGVmYXVsdCB2YWx1ZSBpcyAndHVuZHJhJworICAgICAgICAgIE90aGVyIHZhbHVlcyBpbiBkb2pvIDEuNSBhcmUgc29yaWEsIG5paGlsbywgY2xhcm8KKyAgICAgICAgICBAaW5pdGFyZyBTdHJpbmcKKyAgICAgICAgICBAYWNjZXNzIHB1YmxpYworICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkb2pvX3Jvb3QiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+Cisgcm9vdCB1cmwgd2hlcmUgRG9qbyBsaWJyYXJ5IGlzIGxvYWRlZC4gQW4gZW1wdHkgc3RyaW5nIChkZWZhdWx0KQorICAgICAgICAgIHdpbGwgbG9hZCB0aGUgbGlicmFyeSBmcm9tIEdvb2dsZS4gVGhpcyBwYXRoIG11c3QgZW5kIHdpdGggYSAnLycuCisgICAgICAgICAgRm9yIGV4YW1wbGUsIGlmIHlvdSBoYXZlIGEgbG9jYWwgdmVyc2lvbiBsb2NhdGVkIGF0IC90cnVuaywgCisgICAgICAgICAgeW91IHdvdWxkIHNwZWNpZnkgc29tZXRoaW5nIGxpa2UgJy90cnVuay9kb2pvLXJlbGVhc2UtMS41LjAvJy4KKyAgICAgICAgICBAaW5pdGFyZyBTdHJpbmcKKyAgICAgICAgICBAYWNjZXNzIHB1YmxpYworICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkb2pvX2xvY2FsZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBkb2pvIGxvY2FsZSB0byB1c2UuIERlZmF1bHQgdmFsdWUgaXMgJycgd2hpY2ggd2lsbCB1c2UgdGhlCisgICAgICAgICAgbG9jYWxlIGZyb20gdGhlIGJyb3dzZXIuCisgICAgICAgICAgQGluaXRhcmcgU3RyaW5nCisgICAgICAgICAgQGFjY2VzcyBwdWJsaWMKKyAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZG9qb19qcyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJkb2pvL2Rvam8uanMiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBEb2pvIGxpYnJhcnkgdG8gbG9hZCAocmVsYXRpdmUgdG8gZG9qb19yb290KS4gVGhpcyB2YWx1ZSBpcworICAgICAgICAgIGlnbm9yZWQgaWYgZG9qb19yb290IGlzIGVtcHR5LiBEZWZhdWx0IHZhbHVlIGlzICdkb2pvL2Rvam8uanMnLgorICAgICAgICAgIElmIHlvdSB3YW50IHRvIGxvYWQgYW4gdW5jb21wcmVzc2VkIHZlcnNpb24gb2YgZG9qbywgc3BlY2lmeQorICAgICAgICAgICdkb2pvL2Rvam8uanMudW5jb21wcmVzc2VkLmpzJworICAgICAgICAgIEBpbml0YXJnIFN0cmluZworICAgICAgICAgIEBhY2Nlc3MgcHVibGljCisgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRvam9fY3NzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImRpaml0L3RoZW1lcy8iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBEb2pvIHN0eWxlc2hlZXQgcm9vdCAocmVsYXRpdmUgdG8gZG9qb19yb290KS4gVGhpcyB2YWx1ZSBpcworICAgICAgICAgIGlnbm9yZWQgaWYgZG9qb19yb290IGlzIGVtcHR5LiBEZWZhdWx0IHZhbHVlIGlzICdkaWppdC90aGVtZXMvJworICAgICAgICAgIEBpbml0YXJnIFN0cmluZworICAgICAgICAgIEBhY2Nlc3MgcHVibGljCisgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ic2NyaXB0IiB0eXBlPSJseng6c2NyaXB0IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQ2xpZW50IGV4ZWN1dGVkIHNjcmlwdCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJzY3JpcHQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmdyb3VwIHJlZj0ibHp4OnRvcExldmVsRWxlbWVudHMiIC8+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNyYyIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQ2xpZW50IGV4ZWN1dGVkIHNjcmlwdCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImRhdGFwb2ludGVyIiB0eXBlPSJseng6ZGF0YXBvaW50ZXIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KK1RoZSBiaW5kZXIgYmV0d2VlbiBkYXRhIGFuZCBub2Rlcy4KK0RhdGFwYXRocyBhcmUgdXNlZCB0byBtZXJnZSBkYXRhIGhpZXJhcmNoaWVzIHdpdGggdGhlIGhpZXJhcmNoeSBvZiBhbiBPcGVuTGFzemxvIGFwcGxpY2F0aW9uLiBUaGlzIGlzIGRvbmUgdXNpbmcgdGhlIHRoZSBYUGF0aCBzeW50YXggc3VwcG9ydGVkIGJ5IGx6LmRhdGFwb2ludGVyLiBXaGVuIGEgbm9kZSBpcyBnaXZlbiBhIGRhdGFwYXRoIGF0dHJpYnV0ZSwgYSBkYXRhcGF0aCB3aXRoIHRoZSBnaXZlbiB2YWx1ZSBhcyBpdHMgWFBhdGggaXMgY3JlYXRlZC4gSWYgdGhlIGRhdGFwYXRoIHJldHJpZXZlcyBhIG5vZGUgKGkuZS4gaXQgZG9lc24ndCB0ZXJtaW5hdGUgaW4gYW4gYXR0cmlidXRlIGdldHRlciBvciBhICgpIG9wZXJhdG9yKSB0aGVuIHRoZSBub2RlIGlzIG1hcHBlZCB0byB0aGF0IGRhdGEgY29udGV4dCBhbmQgYWxsIGNoaWxkIG5vZGVzIHdpbGwgaW1wbGljaXRseSBzaGFyZSB0aGUgZGF0YWNvbnRleHQsIGJ1dCBubyBmdXJ0aGVyIGFjdGlvbiBpcyB0YWtlbi4gSWYgdGhlIGRhdGFwYXRoIHJldHJpZXZlcyBkYXRhLCByYXRoZXIgdGhhbiBqdXN0IGEgbm9kZSwgYSBmZXcgZXh0cmEgdGhpbmdzIGhhcHBlbi4gRmlyc3QsIHRoZSBub2RlJ3MgZGF0YSBwcm9wZXJ0eSBpcyBzZXQgYW5kIHRoZSBub2RlJ3Mgb25kYXRhIGV2ZW50IGlzIHNlbnQuIFNlY29uZCwgdGhlIG5vZGUncyBhcHBseURhdGEgbWV0aG9kIGlzIGNhbGxlZCB3aXRoIHRoZSBkYXRhIGFzIHRoZSBhcmd1bWVudC4gSW4gY2FzZXMgd2hlcmUgYSBkYXRhcGF0aCBtYXRjaGVzIG1vcmUgdGhhbiBvbmUgZGF0YSBub2RlLCB0aGUgdmlldyB3aXRoIHRoZSBtYXRjaGluZyBkYXRhcGF0aCBpcyByZXBsaWNhdGVkIG9uY2UgZm9yIGVhY2ggZGF0YSBub2RlIHRoYXQgbWF0Y2hlcywgYW5kIGEgbHouUmVwbGljYXRpb25NYW5hZ2VyIHRha2VzIG92ZXIgdGhlIHZpZXcncyBzcG90IGluIGl0cyBwYXJlbnQuCisKK1doZW4gYSBub2RlIGlzIHJlcGxpY2F0ZWQsIGFuIEx6UmVwbGljYXRpb25NYW5hZ2VyIHRha2VzIGl0J3MgcGxhY2UsIGFuZCBhbiBvbmNsb25lcyB3aWxsIGJlIHNlbnQgd2hlbiB0aGUgbm9kZSdzIGNsb25lcyBhcmUgdXBkYXRlZC4KKworQSBub2RlIGNhbiBvbmx5IGhhdmUgb25lIGRhdGFwYXRoLCBhbmQgZGF0YXBhdGhzIGFsd2F5cyBoYXZlIHRoZSBuYW1lIGRhdGFwYXRoLiBBZGRpdGlvbmFsIG9wdGlvbnMgYXZhaWxhYmxlIG9uIGRhdGFwYXRoIHN1Y2ggYXMgcG9vbGluZyBhbmQgcmVwbGljYXRpb24gYXJlIHNwZWNpZmllZCBieSB3cml0aW5nIHRoZSAmbHQ7ZGF0YXBhdGgmZ3Q7IHRhZyBhcyBhIHNlcGFyYXRlIG5vZGUuIAorIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImRhdGFwb2ludGVyIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6bm9kZSI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InhwYXRoIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZXJ1bnhwYXRoIiB0eXBlPSJseng6Ym9vbGVhbiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCVRoaXMgZGV0ZXJtaW5lcyB0aGUgYmVoYXZpb3Igb2YgdGhlIGRhdGFwb2ludGVyIGluIHJlc3BvbnNlIHRvIG5vdGlmaWNhdGlvbiB0aGF0IHRoZSBkYXRhc2V0IHRoZSBkYXRhcG9pbnRlciBpcyBtYXBwZWQgdG8gaGFzIGNoYW5nZWQuIElmIHJlcnVueHBhdGggaXMgdHJ1ZSwgdGhlIGRhdGFwb2ludGVyIHdpbGwgYWx3YXlzIHJlcnVuIGl0cyByZW1lbWJlcmVkIFhQYXRoIChzZXQgd2l0aCB0aGUgeHBhdGggcHJvcGVydHkpLiBJZiBpdCBpcyBmYWxzZSwgdGhlIGRhdGFwb2ludGVyIHdpbGwgb25seSB2ZXJpZnkgdGhhdCB0aGUgbm9kZSBpdCBpcyBwb2ludGluZyB0byBpcyBzdGlsbCBpbiB0aGUgZGF0YXNldC4gSWYgaXQgaXNuJ3QsIHRoZSBkYXRhcG9pbnRlciB3aWxsIHJlcnVuIGl0cyByZW1lbWJlcmVkIHhwYXRoIChpZiBpdCBoYXMgb25lKSBvciB3aWxsIHByaW50IGEgZGVidWcgbWVzc2FnZSBpZiBhbnkgZnVydGhlciBhdHRlbXB0IGlzIG1hZGUgdG8gdXNlIGl0cyBjdXJyZW50IG5vZGUgYXMgdGhlIGJhc2lzIGZvciBhIHJlbGF0aXZlIFhQYXRoIHF1ZXJ5LiAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InAiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCVRoZSBMekRhdGFOb2RlTWl4aW4gdGhhdCB0aGUgZGF0YXBvaW50ZXIgaXMgcG9pbnRpbmcgdG8uIENhbGxpbmcgc2V0QXR0cmlidXRlIG9uIHAgY2FsbHMgTHpEYXRhcG9pbnRlci5zZXRQb2ludGVyLiAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbnRleHQiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCVRoZSByZWZlcmVuY2UgdG8gYSBjbG9uZW1hbmFnZXIgZnJvbSBhIGNsb25lLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJjb250ZXh0bWVudSIgdHlwZT0ibHp4OmNvbnRleHRtZW51IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CitBIGNvbnRleHR1YWwgbWVudSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJjb250ZXh0bWVudSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4Om5vZGUiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkZWxlZ2F0ZSIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisJCVNldHMgdGhlIGRlbGVnYXRlIHdoaWNoIHdpbGwgYmUgY2FsbGVkIHdoZW4gYSBtZW51IGl0ZW0gaXMgc2VsZWN0ZWQuIEFuIG9uc2VsZWN0IGV2ZW50IGlzIGFsc28gc2VudC48L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJiYXNlZm9jdXN2aWV3IiB0eXBlPSJseng6YmFzZWZvY3VzdmlldyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYmFzZWZvY3VzdmlldyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0YXJnZXQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGEgcmVmZXJlbmNlIHRvIHRoZSB2aWV3IHRoYXQgaXMgY3VycmVudGx5IGZvY3VzZWQgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImR1cmF0aW9uIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjQwMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHRoZSBkdXJhdGlvbiBvZiB0aGUgYW5pbWF0aW9uIGZyb20gb25lIGZvY3VzZWQgdmlldyB0byB0aGUgbmV4dCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWN0aXZlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgdHJ1ZSBkdXJpbmcga2V5Ym9hcmQgbmF2aWdhdGlvbiwgd2hlbiB0aGlzIHZpZXcgaXMgdmlzaWJsZSAKKyAgICAgICAgICAgICAgQGtleXdvcmRzIHJlYWRvbmx5IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Im5vZGUiIHR5cGU9Imx6eDpub2RlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CitUaGUgYmFzZSBjbGFzcyBmb3IgYWxsIExhc3psbyBjbGFzc2VzLgorSmF2YVNjcmlwdDogbHoubm9kZQorVGhlIGx6Lm5vZGUgY2xhc3MgcHJvdmlkZXMgdGhlIGJhc2ljIGludGVyZmFjZSBmb3IgT3Blbkxhc3psbyBvYmplY3RzOiBwYXJlbnQvY2hpbGQgaGllcmFyY2h5LCBzZXR0ZXJzLCBpbnRlcmFjdGlvbiB3aXRoIHRoZSBpbnN0YW50aWF0b3IsIGFuZCByZWZlcmVuY2UgcmVzb2x1dGlvbi4gTmV3IG5vZGVzIChhbmQgc3ViY2xhc3NlcyB0aGVyZW9mKSBjYW4gYmUgY3JlYXRlZCBieSBuZXctaW5nIHRoZSBjbGFzcywgbGlrZSB0aGlzOiB2YXIgbXlub2RlPSBuZXcgTHpOb2RlKCBwYXJlbnQgLCBhcmdzICk7IHdoZXJlIHBhcmVudCBpcyB0aGUgcGFyZW50IGZvciB0aGUgbmV3IG5vZGUsIGFuZCBhcmdzIGlzIGFuIE9iamVjdCB3aG9zZSBuYW1lL3ZhbHVlIHBhaXJzIGFyZSBhdHRyaWJ1dGVzIHRvIGJlIHNldCBvbiB0aGUgbmV3IG5vZGUuICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJub2RlIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpncm91cCByZWY9Imx6eDp0b3BMZXZlbEVsZW1lbnRzIiAvPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0cmFuc2l0aW9uIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKwlBbGxvd3Mgbm9kZSBhdHRyaWJ1dGVzIHRvIGJlIGF1dG9tYXRpY2FsbHkgYW5pbWF0ZWQgd2hlbiBzZXQuIEEgc3RyaW5nIG9mIHRyYW5zaXRpb25zLCBhY2NvcmRpbmcgdG8gdGhlIGNzczMgdHJhbnNpdGlvbiBzcGVjIGh0dHA6Ly9kZXYudzMub3JnL2Nzc3dnL2NzczMtdHJhbnNpdGlvbnMvI3RoZS10cmFuc2l0aW9uLXNob3J0aGFuZC1wcm9wZXJ0eS0gZS5nLiAneCAycycuIE5vdGUgdGhhdCB0cmFuc2l0aW9uLWRlbGF5IGlzIG5vdCBjdXJyZW50bHkgc3VwcG9ydGVkLiBbdHJhbnNpdGlvbi1wcm9wZXJ0eSB8fCB0cmFuc2l0aW9uLWR1cmF0aW9uIHx8IHRyYW5zaXRpb24tdGltaW5nLWZ1bmN0aW9uIHx8IHRyYW5zaXRpb24tZGVsYXkgWywgW3RyYW5zaXRpb24tcHJvcGVydHkgfHwgdHJhbnNpdGlvbi1kdXJhdGlvbiB8fCB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiB8fCB0cmFuc2l0aW9uLWRlbGF5XV0qICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3Vibm9kZXMiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCUFuIGFycmF5IG9mIGFsbCBvZiB0aGUgTHpOb2RlcyB3aGljaCBjb25zaWRlciB0aGlzIEx6Tm9kZSB0aGVpciBwYXJlbnQuIFRoaXMgbGlzdCBpcyBzaW1pbGFyIHRvIHRoZSBzdWJ2aWV3cyBsaXN0LCBidXQgaXQgY29udGFpbnMgYWxsIHRoZSBjaGlsZHJlbiBvZiB0aGlzIG5vZGUsIG5vdCBqdXN0IHRoZSB2aWV3IGNoaWxkcmVuLiAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN0eWxlY2xhc3MiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCQorQSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBDU1MgY2xhc3NlcyB0aGF0IGNhbiBiZSB1c2VkIGluIGEgc3R5bGVzaGVldCB0byBzZWxlY3QgdGhpcyBub2RlLiAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBsYWNlbWVudCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisJSW5zdHJ1Y3Rpb25zIHRvIHRoaXMgZWxlbWVudCdzIGNvbnRhaW5lciBhYm91dCB3aGVyZSBpdCBzaG91bGQgZ28gd2l0aGluIGl0cyBjb250YWluZXIncyBpbnRlcm5hbCBoaWVyYXJjaHkuIFNlZSB0aGUgTHpOb2RlLmRldGVybWluZVBsYWNlbWVudCBtZXRob2QuIERlZmF1bHRzIHRvIHRoZSBjb250YWluZXIgaXRzZWxmLiAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBhcmVudCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisJUmVmZXJlbmNlIHRvIHRoZSBub2RlIHRoYXQgd2FzIHBhc3NlZCBhcyB0aGlzIG5vZGUncyBhbmNlc3RvciBpbiB0aGUgY29uc3RydWN0b3IuIElmIHRoaXMgbm9kZSB3YXMgY3JlYXRlZCBieSBkZWNsYXJpbmcgaXQgaW4gYSB0YWcsIHRoZSBwYXJlbnQgd2lsbCBiZSBpdHMgbGV4aWNhbCBwYXJlbnQuIEl0cyBsZXhpY2FsIHBhcmVudCBpcyB0aGUgdGFnIHRoYXQgZW5jbG9zZXMgaXQuIEFsbG93IGEgbnVsbCBwYXJlbnQgc28gdGhhdCBub2RlcyBjYW4gYmUgZ2FyYmFnZSBjb2xsZWN0ZWQgd2hlbiB0aGV5IGFyZSBubyBsb25nZXIgbmVlZGVkLiBTZWUgYWxzbywgaW1tZWRpYXRlcGFyZW50LiAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9wdGlvbnMiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCUEgQ1NTIGRlY2xhcmF0aW9uIG9mIHByb3BlcnR5OiB2YWx1ZSBwYWlycyB0aGF0IG1vZGlmeSB0aGUgaW50ZXJhY3Rpb24gb2YgdGhpcyBub2RlIHdpdGggY29udHJvbGxlcnMgc3VjaCBhcyByZXBsaWNhdG9ycyBhbmQgbGF5b3V0cy4gRm9yIGV4YW1wbGUsIHNldHRpbmcgb3B0aW9ucz0iaWdub3JlbGF5b3V0OiB0cnVlIiBvbiBhIHZpZXcgd2lsbCBjYXVzZSB0aGUgdmlldyB0byBub3QgYmUgY29udHJvbGxlZCBieSBhbnkgbGF5b3V0LgorW05vdGVdIAlOb3RlCitUaGUgb3B0aW9ucyB0aGF0IGFmZmVjdCBwYXJ0aWN1bGFyIGNvbnRyb2xsZXJzIGFuZCByZXBsaWNhdG9ycyBhcmUgZG9jdW1lbnRlZCB3aXRoIGVhY2ggY29udHJvbGxlciBhbmQgcmVwbGljYXRvci4KK1tOb3RlXSAJTm90ZQorb3B0aW9ucyBzaG91bGQgbm90IGJlIGFjY2Vzc2VkIGRpcmVjdGx5LiBZb3UgbXVzdCB1c2UgZ2V0T3B0aW9uIGFuZCBzZXRPcHRpb24gdG8gZ2V0IG9yIHNldCB0aGUgdmFsdWUgb2YgYW4gb3B0aW9uLiAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uaW5pdCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CitUaGlzIGV2ZW50IGlzIHNlbnQgYWZ0ZXIgdGhlIG5vZGUncyBpbml0IG1ldGhvZCBoYXMgYmVlbiBjYWxsZWQuIFNpbXBsZSBhY3Rpb25zIHRoYXQgbmVlZCB0byBvY2N1ciBhZnRlciB0aGUgbm9kZSdzIGNoaWxkcmVuIGhhdmUgYmVlbiBpbml0aWFsaXplZCBjYW4gYmUgYXNzaWduZWQgdG8gdGhpcyBldmVudC4gRm9yIG1vcmUgY29tcGxleCBpbml0aWFsaXphdGlvbiwgc2VlIHRoZSBpbml0IG1ldGhvZC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uZGF0YSIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CitUaGUgb25kYXRhIHNjcmlwdCBpcyBleGVjdXRlZCB3aGVuIHRoZSBkYXRhIHNlbGVjdGVkIGJ5IGEgdmlldydzIGRhdGFwYXRoIGNoYW5nZXMuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmNvbnN0cnVjdCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CitUaGlzIGlzIHRoZSBmaXJzdCBldmVudCBhIG5vZGUgc2VuZHMsIHJpZ2h0IGF0IHRoZSBlbmQgb2YgdGhlIGluc3RhbnRpYXRpb24gcHJvY2VzcywgYnV0IGJlZm9yZSBhbnkgc3Vibm9kZXMgaGF2ZSBiZWVuIGNyZWF0ZWQgb3IgcmVmZXJlbmNlcyByZXNvbHZlZCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibm9kZUxldmVsIiB0eXBlPSJseng6bnVtYmVyIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisJVGhlIGRlcHRoIG9mIHRoaXMgbm9kZSBpbiB0aGUgb3ZlcmFsbCBub2RlIGhpZXJhcmNoeSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ibHp4OnRva2VuIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisJVGhlIG5hbWUgZm9yIHRoaXMgc3Vibm9kZS4gSWYgZ2l2ZW4sIHRoZW4gdGhpcyBub2RlJ3MgcGFyZW50IGFuZCBpbW1lZGlhdGUgcGFyZW50IHdpbGwgc3RvcmUgYSBwb2ludGVyIHRvIHRoaXMgbm9kZSBhcyB0aGUgZ2l2ZW4gbmFtZSB2YWx1ZS4gIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbml0c3RhZ2UiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibm9ybWFsIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisJVGhlIGV4ZWN1dGlvbiBvZiBhIG5vZGUncyBpbml0IG1ldGhvZCBhbmQgc2VuZGluZyBvZiB0aGUgb25pbml0IGV2ZW50IGlzIHVuZGVyIHRoZSBjb250cm9sIG9mIGl0cyBpbml0c3RhZ2UgYXR0cmlidXRlLCBhcyBmb2xsb3dzOgorCitpbW1lZGlhdGUKKyAgICBUaGUgaW5pdCBtZXRob2QgaXMgY2FsbGVkIGltbWVkaWF0ZWx5IGFzIHRoZSBsYXN0IHN0YWdlIG9mIGluc3RhbnRpYXRpb24uIAorZWFybHkKKyAgICBUaGUgaW5pdCBtZXRob2QgaXMgY2FsbGVkIGltbWVkaWF0ZWx5IGFmdGVyIHRoZSB2aWV3IGFuZCBpdHMgY2hpbGRyZW4gaGF2ZSBiZWVuIGluc3RhbnRpYXRlZC4gCitub3JtYWwKKyAgICBUaGUgaW5pdCBtZXRob2QgaXMgY2FsbGVkIHdoZW4gdGhlIHBhcmVudCBpcyBpbml0aWFsaXplZC4gCitsYXRlCisgICAgVGhlIGluaXQgbWV0aG9kIGlzIGNhbGxlZCBkdXJpbmcgaWRsZSB0aW1lLiBUbyBjaGVjayB3aGV0aGVyIGluaXQgaGFzIGJlZW4gY2FsbGVkLCBjaGVjayB0aGUgaW5pdGVkIHByb3BlcnR5LiBGb3JjZSBjYWxsaW5nIGluaXQgdXNpbmcgdGhlIGNvbXBsZXRlSW5zdGFudGlhdGlvbiBtZXRob2QuIAorZGVmZXIKKyAgICBUaGUgaW5pdCBtZXRob2Qgd2lsbCBub3QgYmUgY2FsbGVkIHVubGVzcyBleHBsaWNpdGx5IHJlcXVlc3RlZCBieSB0aGUgY29tcGxldGVJbnN0YW50aWF0aW9uIG1ldGhvZC4gCisKKwkgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImluaXRlZCIgdHlwZT0ibHp4OmJvb2xlYW4iID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbW1lZGlhdGVwYXJlbnQiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCVJlZmVyZW5jZSB0byB0aGlzIG5vZGVzJ3MgcGFyZW50IGluIHRoZSBub2RlIGhpZXJhcmNoeS4gVGhpcyB3aWxsIGJlIGRpZmZlcmVudCBmcm9tICJwYXJlbnQiIHdoZW4gYSBjbGFzcyB1c2VzIHBsYWNlbWVudCBvciBkZWZhdWx0cGxhY2VtZW50IHRvIGFzc2lnbiBhIHN1Ym5vZGUgYSBzcGVjaWZpYyBwbGFjZS4gRm9yIGV4YW1wbGUsIGFsd2F5cyB1c2UgaW1tZWRpYXRlcGFyZW50IHRvIGdldCBhIG1vdXNlIHBvc2l0aW9uIGluIHlvdXIgdmlld3MgY29vcmRpbmF0ZSBzeXN0ZW0uICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaWdub3JlcGxhY2VtZW50IiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKwlPdmVycmlkZXMgcGxhY2VtZW50IGF0dHJpYnV0ZSAoYW5kIGRlZmF1bHRwbGFjZW1lbnQgaW4gbGV4aWNhbCBwYXJlbnQpLiBTZWUgdGhlIEx6Tm9kZS5kZXRlcm1pbmVQbGFjZW1lbnQgbWV0aG9kLiBEZWZhdWx0cyB0byBmYWxzZS4gIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpZCIgdHlwZT0ibHp4OnRva2VuIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisJQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyBlbGVtZW50LiBDYW4gYmUgdXNlZCBhcyBhIGdsb2JhbCB2YXJpYWJsZSBuYW1lIGluIEphdmFTY3JpcHQgY29kZS4gIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkZWZhdWx0cGxhY2VtZW50IiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKwlBbiBhdHRyaWJ1dGUgdXNlZCBpbiBjb250YWluZXIgY2xhc3Nlcy4gSWYgc2V0IHRvIGEgbm9uLW51bGwgdmFsdWUsIHRoaXMgZm9yY2VzIHRoaXMgbm9kZSB0byBydW4gaXRzIGRldGVybWluZVBsYWNlbWVudCBtZXRob2QgZm9yIGFueSBub2RlIHdob3NlIHBhcmVudCBpcyB0aGlzIG5vZGUuIElmIHRoZSBzdWJub2RlIGhhcyBpdHMgb3duIHBsYWNlbWVudCBhdHRyaWJ1dGUsIGRldGVybWluZVBsYWNlbWVudCB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoYXQgdmFsdWUsIG90aGVyd2lzZSBpdCB3aWxsIGJlIGNhbGxlZCB3aXRoIHRoaXMgdmFsdWUuIE5vdGUgdGhhdCBhIGNsYXNzJ3MgZGVmYXVsdHBsYWNlbWVudCBhdHRyaWJ1dGUgb25seSBhcHBsaWVzIHRvIGNoaWxkcmVuIGluIHN1YmNsYXNzZXMgb3IgaW4gaW5zdGFuY2VzLCBub3QgdG8gdGhlIGNoaWxkcmVuIG9mIHRoZSBjbGFzcyBpdHNlbGYuIFRoaXMgbWVhbnMgdGhhdCBpZiBhIGNsYXNzIGFuZCBpdHMgc3ViY2xhc3MgYm90aCBkZWZpbmUgYSBkZWZhdWx0cGxhY2VtZW50IGF0dHJpYnV0ZSwgdGhlIGF0dHJpYnV0ZSB3aWxsIGJlIHNldCB0byBvbmUgdmFsdWUgYmVmb3JlIHRoZSBzdWJjbGFzcyBjaGlsZHJlbiBhcmUgY3JlYXRlZCBhbmQgdG8gYSBkaWZmZXJlbnQgb25lIGFmdGVyIHRoZXkgYXJlIGNyZWF0ZWQuIFNlZSB0aGUgZGV0ZXJtaW5lUGxhY2VtZW50IG1ldGhvZC4gIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkYXRhcGF0aCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisJQSBzaG9ydGhhbmQgdmVyc2lvbiBvZiAmbHQ7ZGF0YXBhdGgmZ3Q7LCBzcGVjaWZpZXMgdGhlIGRhdGEgc291cmNlIGZvciB0aGlzIG5vZGUgYW5kIGl0cyBjaGlsZHJlbi4gWW91IHdyaXRlIGEgc3RyaW5nIHRvIGRhdGFwYXRoOyByZWFkaW5nIGRhdGFwYXRoIHdpbGwgeWllbGQgYSBsei5kYXRhcGF0aC4gSWYgdGhlIHZhbHVlIGJlZ2lucyB3aXRoIGFuIGlkZW50aWZpZXIgZm9sbG93ZWQgYnkgYSBjb2xvbiwgdGhlIGlkZW50aWZpZXIgbmFtZXMgYSBkYXRhc2V0LCBhbmQgdGhlIHBvcnRpb24gb2YgdGhlIHN0cmluZyBhZnRlciB0aGUgY29sb24gaXMgYW4gWFBhdGggZGVzY3JpcHRpb24gb2YgYSBwb3J0aW9uIG9mIHRoZSBkYXRhLiBPdGhlcndpc2UgdGhlIGVudGlyZSBhdHRyaWJ1dGUgdmFsdWUgaXMgYW4gWFBhdGggZGVzY3JpcHRpb24gb2YgdGhlIGRhdGEsIHJlbGF0aXZlIHRvIHRoZSBkYXRhIHNvdXJjZSBvZiB0aGlzIG5vZGUncyBwYXJlbnQgZWxlbWVudC4gRXhhbXBsZXM6ICJteWRhdGE6IiwgIm15ZGF0YTovYS9iIiwgIi9hL2IiLiAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRhdGEiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCVRoZSBkYXRhIGNvbnRleHQgZm9yIHRoZSBub2RlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbG9uZU1hbmFnZXIiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCUlmIHRoaXMgbm9kZSBpcyByZXBsaWNhdGVkIGR1ZSB0byBkYXRhIHJlcGxpY2F0aW9uLCB0aGUgTHpSZXBsaWNhdGlvbk1hbmFnZXIgd2hpY2ggY29udHJvbHMgdGhpcyBub2RlLiAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzcm9vdCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisJQSByZWZlcmVuY2UgdG8gdGhlIG5vZGUgdGhhdCBpcyBhbiBpbnN0YW5jZSBvZiB0aGUgJmx0O2NsYXNzJmd0OyB3aGVyZSB0aGlzIG5vZGUgaXMgZGVmaW5lZC4gTWVtYmVycyBvZiBzdGF0ZSBzdWJjbGFzc2VzIGRvIG5vdCBkZWZpbmUgY2xhc3Nyb290LiBUaGlzIGlzIGNvbnZlbmllbnQgdG8gdXNlIHdoZW4geW91IHdhbnQgdG8gYWNjZXNzIGFuIGF0dHJpYnV0ZSBvZiB0aGUgY2xhc3MgaW4gYSBtZXRob2Qgb3IgZXZlbnQgaGFuZGxlciB0aGF0IGlzIG5lc3RlZCBkZWVwIGluIHRoZSBub2RlIGhpZXJhcmNoeS4gRm9yIGV4YW1wbGUsIHRvIHNldCB0aGUgYmdjb2xvciBvZiB0aGUgY2xhc3Mgb2JqZWN0LCBpbnN0ZWFkIG9mIHBhcmVudC5wYXJlbnQucGFyZW50LnNldEF0dHJpYnV0ZShiZ2NvbG9yLCAweEZGRkZGRikgeW91IGNhbiBzaW1wbHkgdXNlIGNsYXNzcm9vdC5zZXRBdHRyaWJ1dGUoYmdjb2xvciwgMHhGRkZGRkYpLiAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJmcmFtZSIgdHlwZT0ibHp4OmZyYW1lIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisKK0EgZnJhbWUgb2YgYSBtdWx0aS1mcmFtZSByZXNvdXJjZS4KKworVGhlICZsdDtmcmFtZSZndDsgdGFnIGlzIHVzZWQgdG8gZGVmaW5lIGEgc2luZ2xlIGZyYW1lIG9mIGEgbXVsdGktZnJhbWUgJmx0O3Jlc291cmNlJmd0Oy4gQSBtdWx0aS1mcmFtZSByZXNvdXJjZSBjb250YWlucyBzZXZlcmFsIGltYWdlcyB3aGljaCBjYW4gYmUgdG9nZ2xlZCBhbW9uZyBieSBzY3JpcHQgY29tbWFuZHMuCisKK011bHRpcGxlIGZyYW1lIHRhZ3MgY2FuIGJlIGRlY2xhcmVkIGNvbnNlY3V0aXZlbHkgdG8gcHJvZHVjZSBhIHNpbmdsZSByZXNvdXJjZSBjb25zdHJ1Y3RlZCBvZiBhbiB1bmxpbWl0ZWQgbnVtYmVyIG9mIGZyYW1lcy4gU3VjaCBjb21wb3NlZCByZXNvdXJjZXMgYXJlIG9mdGVuIHVzZWQgdG8gY29udmVuaWVudGx5IGltcGxlbWVudCBtb3VzZSByb2xsb3ZlcnMsIGJ1dHRvbiBzdGF0ZXMsIG9yIG90aGVyIFVJIGVsZW1lbnRzIHdoZXJlIGFsdGVybmF0ZSB2aWV3cyBvZiBhIHJlc291cmNlIGFyZSByZXF1aXJlZC4gT25jZSBhIG11bHRpLWZyYW1lIHJlc291cmNlIGhhcyBiZWVuIGRlZmluZWQgYW5kIHByZXNlbnRlZCB3aXRoaW4gYSAmbHQ7dmlldyZndDssIHRoZSBkZXZlbG9wZXIgY2FuIGRlc2lnbmF0ZSB3aGljaCBmcmFtZSBpcyBhY3RpdmVseSB2aXNpYmxlIHRocm91Z2ggdGhlIHVzZSBvZiB0aGUgdmlldydzIHNldFJlc291cmNlTnVtYmVyIG1ldGhvZC4KKworTXVsdGktZnJhbWUgcmVzb3VyY2VzIGNhbiBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggY29tcG9uZW50cyBzdWNoIGFzICZsdDtiYXNlYnV0dG9uJmd0Oywgd2hpY2ggcHJlLWRlZmluZSBjb21wbGV4IGJ1dHRvbiBiZWhhdmlvciB1c2luZyBmcmFtZXMgZGVzaWduYXRlZCBieSB0aGUgdXNlci4gCisKKyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJmcmFtZSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Z3JvdXAgcmVmPSJseng6dG9wTGV2ZWxFbGVtZW50cyIgLz4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3JjIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKwlUaGUgcGF0aCBvZiBhIGZpbGUgdGhhdCBjb250YWlucyB0aGUgc291cmNlIGZvciB0aGlzIG9iamVjdC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHR5cGU9Imx6eDp0b2tlbiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCVRoZSBuYW1lIG9mIGEgdmFyaWFibGUgdGhhdCB3aWxsIGJlIHNldCB0byB0aGlzIG9iamVjdCB3aGVuIHRoZSBhcHBsaWNhdGlvbiBpcyBzdGFydGVkLiBJZiB0aGlzIGVsZW1lbnQgaXMgZGlyZWN0bHkgd2l0aGluIGEgJmx0O2NhbnZhcyZndDsgb3IgJmx0O2xpYnJhcnkmZ3Q7IGVsZW1lbnQsIHRoZSBnbG9iYWwgdmFyaWFibGUgYW5kIHRoZSBjYW52YXMgcHJvcGVydHkgd2l0aCB0aGlzIG5hbWUgd2lsbCBiZSBzZXQgdG8gdGhpcyBvYmplY3QuIElmIHRoaXMgZWxlbWVudCBpcyB3aXRoaW4gYW5vdGhlciBvYmplY3QsIHRoYXQgb2JqZWN0J3MgcHJvcGVydHkgd2l0aCB0aGlzIG5hbWUgd2lsbCBiZSBzZXQgdG8gdGhpcyBvYmplY3QuICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9IndlYmFwcHJwYyIgdHlwZT0ibHp4OndlYmFwcHJwYyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0id2ViYXBwcnBjIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6cnBjIj4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJiYXNlc2xpZGVyIiB0eXBlPSJseng6YmFzZXNsaWRlciIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBiYXNlIGNsYXNzIGZvciBpbXBsZW1lbnRpbmcgc2xpZGVycyByZXByZXNlbnRpbmcgYSByYW5nZSBvZgorICAgICAgICAgICAgICB2YWx1ZXMuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImJhc2VzbGlkZXIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNldmFsdWVjb21wb25lbnQiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0cmFja2hlaWdodCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iOCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBoZWlnaHQgb2YgdGhlIHRyYWNrLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHJhY2siIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBiYXNlIGNsYXNzIGZvciBpbXBsZW1lbnRpbmcgc2xpZGVycyByZXByZXNlbnRpbmcgYSByYW5nZSBvZgorICAgICAgICAgICAgICB2YWx1ZXMuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0aHVtYndpZHRoIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSB3aWR0aCBvZiB0aGUgdGh1bWIuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0aHVtYmhlaWdodCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMTgiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgaGVpZ2h0IG9mIHRoZSB0aHVtYi4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNob3d2YWx1ZSIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUdXJucyBvbiAvIG9mZiB0aGUgZmxvYXRpbmcgdmFsdWUgdGV4dCB3aGVuIHRoZSB1c2VyCisgICAgICAgICAgICAgIGRyYWdzLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2hvd3JhbmdlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFR1cm5zIG9uIC8gb2ZmIHRoZSBib3VuZGluZyByYW5nZSB0ZXh0LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2hvd2ZpbGwiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0idHJ1ZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFR1cm5zIG9uIC8gb2ZmIHRoZSBzbGlkZXIncyBmaWxsZWQgYXJlYS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InByZWNpc2lvbiIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHNpZ25pZmljYW50IGRpZ2l0cyBvZiBwcmVjaXNpb24gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9ubWludmFsdWUiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9ubWF4dmFsdWUiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1pbnZhbHVlIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIG1pbmltdW0gdmFsdWUuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtYXh2YWx1ZSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMTAwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIG1heGltdW0gdmFsdWUuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJrZXlzdGVwIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSG93IGZhciB0byBtb3ZlIHZhbHVlIHdoZW4ga2V5IG5hdmlnYXRpbmcuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJib3JkZXJzaXplIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIGJvcmRlciB3aWR0aC4gVGhpcyBjYW4gYmUgc2V0IHdpdGggYSBzdHlsZS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iY2hhcnR6b29tZXIiIHR5cGU9Imx6eDpjaGFydHpvb21lciIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEFsbG93cyB1c2VycyB0byB6b29tIGluIG9uIHNwZWNpZmljIGFyZWFzIG9mIHRoZSBjaGFydC4KKyAgICAgICAgQ2xpY2sgb3IgZHJhZyByaWdodC10by1sZWZ0IHRvIHpvb20gYmFjayBvdXQuICAoT2YgYmV0YSBxdWFsaXR5LikKKyAgICAgICAgRHVlIHRvIGEgYnVnIHdpdGggZHJhd3ZpZXcsIHRoaXMgZG9lc24ndCBjdXJyZW50bHkgd29yayBpbiBESFRNTC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iY2hhcnR6b29tZXIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iem9vbWNvbG9yIiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9IiR7cGFyZW50Lnpvb21jb2xvcn0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgY29sb3IgdGludCBvZiB0aGUgem9vbWVyLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJzdGFibGVib3JkZXJsYXlvdXQiIHR5cGU9Imx6eDpzdGFibGVib3JkZXJsYXlvdXQiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InN0YWJsZWJvcmRlcmxheW91dCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmxheW91dCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImF4aXMiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBheGlzIGluIHdoaWNoIHRoaXMgbGF5b3V0IG9wZXJhdGVzLiBPbmUgb2YgJ3gnIG9yICd5Jy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0id2luZG93cGFuZWwiIHR5cGU9Imx6eDp3aW5kb3dwYW5lbCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0id2luZG93cGFuZWwiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNld2luZG93Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGl0bGVhcmVhX2luc2V0X3RvcCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSI2IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHRvcCBpbnNldCBmb3IgdGhlIHdpbmRvdyB0aXRsZSBhcmVhLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGl0bGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgdGhlIHRpdGxlIG9mIGEgd2luZG93IDogdGhpcyBzdHJpbmcgYXBwZWFycyBhdCB0aGUgdG9wCisgICAgICAgICAgICAgIG9mIHRoZSB3aW5kb3cuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbnNldF90b3AiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMjIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgdG9wIGluc2V0IGZvciB0aGUgd2luZG93IGNvbnRlbnQgYXJlYS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imluc2V0X3JpZ2h0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjExIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHJpZ2h0IGluc2V0IGZvciB0aGUgd2luZG93IGNvbnRlbnQgYXJlYS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imluc2V0X2xlZnQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iNiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBsZWZ0IGluc2V0IGZvciB0aGUgd2luZG93IGNvbnRlbnQgYXJlYS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imluc2V0X2JvdHRvbSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIyMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBib3R0b20gaW5zZXQgZm9yIHRoZSB3aW5kb3cgY29udGVudCBhcmVhLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xvc2VhYmxlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSWYgdHJ1ZSwgdGhlIHdpbmRvdyB3aWxsIGhhdmUgYSBjbG9zZSBjb250cm9sLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJpY29ucmFkaW9pdGVtIiB0eXBlPSJseng6aWNvbnJhZGlvaXRlbSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHRoZSBpY29ucmFkaW9pdGVtIGNsYXNzIGlzIGEgcmFkaW8gYnV0dG9uIHdpdGggb25seSBhbiBpY29uCisgICAgICAgIEBTVEFSVF9DT0RFCisgICAgICAgICZsdDtpY29ucmFkaW9pdGVtIGljb25uYW1lPSJ0YXJnZXQiIC8mZ3Q7CisgICAgICAgIEBFTkRfQ09ERQorICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Imljb25yYWRpb2l0ZW0iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNlbGlzdGl0ZW0iPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyaWdodHJzYyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJpY29ucmFkaW9idXR0b25fc21hbGxfcmlnaHRfcnNjIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWlkZGxlcnNjIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Imljb25yYWRpb2J1dHRvbl9zbWFsbF9taWRkbGVfcnNjIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGVmdHJzYyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJpY29ucmFkaW9idXR0b25fc21hbGxfbGVmdF9yc2MiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBiYWNrZ3JvdW5kIHJlc291cmNlcyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaWNvbm5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgaWNvbiBmaWxlbmFtZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaWNvbl95IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBpY29uIHkgcG9zaXRpb24uIGNhbGN1bGF0ZWQgaWYgbm90IHNwZWNpZmllZCBleHBsaWNpdGx5IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpY29uX3giIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGljb24geCBwb3NpdGlvbi4gY2FsY3VsYXRlZCBpZiBub3Qgc3BlY2lmaWVkIGV4cGxpY2l0bHkgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZHJhd3ZpZXciIHR5cGU9Imx6eDpkcmF3dmlldyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCisKKyAgICBAY29weXJpZ2h0IENvcHlyaWdodCAyMDAxLTIwMTAgTGFzemxvIFN5c3RlbXMsIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgICAgICAgICAgICAgICBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zLgorCisgICAgQGFjY2VzcyBwdWJsaWMKKyAgICBAYWZmZWN0cyBsemRyYXd2aWV3CisgICAgQHRvcGljIExGQworICAgIEBzdWJ0b3BpYyBWaWV3cworICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJkcmF3dmlldyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdHJva2VTdHlsZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIjMDAwMDAwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgUmVwcmVzZW50cyB0aGUgY29sb3VyIHRvIHVzZSBmb3IgdGhlIGxpbmVzIGFyb3VuZCBzaGFwZXMuICBTcGVjaWZpZWQgYXMgYSBoZXhhZGVjaW1hbCBudW1iZXIgKDB4ZmZmZmZmKSBvciBhIENTUyBzdHJpbmcgKCcjZmYwMGZmJyBvciAnI2YwZicpLgorICAgICAgICBAdHlwZSBTdHJpbmcKKyAgICAgICAgQGx6eHR5cGUgc3RyaW5nCisgICAgICAgIEBsenhkZWZhdWx0ICIjMDAwMDAwIgorICAgICAgICBAYWNjZXNzIHB1YmxpYworICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtaXRlckxpbWl0IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEdpdmVzIHRoZSBkZWZhdWx0IG1pdGVyTGltaXQgdmFsdWUgZm9yIGxpbmVzLgorICAgICAgICAgIEB0eXBlIE51bWJlcgorICAgICAgICAgIEBsenh0eXBlIG51bWJlcgorICAgICAgICAgIEBsenhkZWZhdWx0IDEwCisgICAgICAgICAgQGFjY2VzcyBwdWJsaWMKKyAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWVhc3VyZXNpemUiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSWYgdHJ1ZSwgdGhlIHNpemUgb2YgdGhlIGRyYXd2aWV3IHdpbGwgYmUgc2V0IGR5bmFtaWNhbGx5IGJhc2VkIG9uIGl0cyBjb250ZW50cywgd2hlcmUgcG9zc2libGUuIChzd2Ytb25seSkKKyAgICAgIEBhY2Nlc3MgcHVibGljCisgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxpbmVXaWR0aCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEdpdmVzIHRoZSBkZWZhdWx0IHdpZHRoIG9mIGxpbmVzLCBpbiBjb29yZGluYXRlIHNwYWNlIHVuaXRzLgorICAgICAgICAgIE5lZ2F0aXZlIHZhbHVlcyBhcmUgaWdub3JlZC4gIDAgZHJhd3MgaGFpcmxpbmVzIGluIHN3ZiAtIGxpbmVzIHRoYXQKKyAgICAgICAgICBhcmUgYWx3YXlzIDEgcGl4ZWwgd2lkZSBldmVuIHdoZW4gc2NhbGVkLgorICAgICAgICAgIEB0eXBlIE51bWJlcgorICAgICAgICAgIEBsenh0eXBlIG51bWJlcgorICAgICAgICAgIEBsenhkZWZhdWx0IDEKKyAgICAgICAgICBAYWNjZXNzIHB1YmxpYworICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsaW5lSm9pbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJtaXRlciIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEdpdmVzIHRoZSBkZWZhdWx0IGxpbmVKb2luIHZhbHVlIGZvciBsaW5lcy4gUm91bmQgZm9yIGNvbnNpc3RlbmN5IGJldHdlZW4gc3dmIGFuZCBkaHRtbC4KKyAgICAgICAgICBAdHlwZSBTdHJpbmcKKyAgICAgICAgICBAbHp4dHlwZSAicm91bmQiIHwgImJldmVsIiB8ICJtaXRlciIKKyAgICAgICAgICBAbHp4ZGVmYXVsdCAibWl0ZXIiCisgICAgICAgICAgQGFjY2VzcyBwdWJsaWMKKyAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGluZUNhcCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJidXR0IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgR2l2ZXMgdGhlIGRlZmF1bHQgbGluZUNhcCB2YWx1ZSBmb3IgbGluZXMuIFJvdW5kIGZvciBjb25zaXN0ZW5jeSBiZXR3ZWVuIHN3ZiBhbmQgZGh0bWwuCisgICAgICAgICAgQHR5cGUgU3RyaW5nCisgICAgICAgICAgQGx6eHR5cGUgImJ1dHQiIHwgInJvdW5kIiB8ICJzcXVhcmUiCisgICAgICAgICAgQGx6eGRlZmF1bHQgImJ1dHQiCisgICAgICAgICAgQGFjY2VzcyBwdWJsaWMKKyAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZ2xvYmFsQWxwaGEiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjEiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBHaXZlcyBhbiBhbHBoYSB2YWx1ZSB0aGF0IGlzIGFwcGxpZWQgdG8gc2hhcGVzIGFuZCBpbWFnZXMKKyAgICAgICAgICBiZWZvcmUgdGhleSBhcmUgY29tcG9zaXRlZCBvbnRvIHRoZSBjYW52YXMuIFRoZSB2YWxpZCByYW5nZSBvZgorICAgICAgICAgIHZhbHVlcyBpcyBmcm9tIDAuMCAoZnVsbHkgdHJhbnNwYXJlbnQpIHRvIDEuMCAobm8gYWRkaXRpb25hbAorICAgICAgICAgIHRyYW5zcGFyZW5jeSkuIElmIHRoZSBhdHRyaWJ1dGUgaXMgc2V0IHRvIHZhbHVlcyBvdXRzaWRlIHRoaXMgcmFuZ2UsCisgICAgICAgICAgaXQgaXMgaWdub3JlZC4gV2hlbiB0aGUgY29udGV4dCBpcyBjcmVhdGVkLCB0aGUgZ2xvYmFsQWxwaGEKKyAgICAgICAgICBhdHRyaWJ1dGUgaW5pdGlhbGx5IGhhcyB0aGUgdmFsdWUgMS4wLgorICAgICAgICAgIEB0eXBlIE51bWJlcgorICAgICAgICAgIEBsenh0eXBlIG51bWJlcgorICAgICAgICAgIEBsenhkZWZhdWx0IDEuMAorICAgICAgICAgIEBhY2Nlc3MgcHVibGljCisgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZpbGxTdHlsZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIjMDAwMDAwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgUmVwcmVzZW50cyB0aGUgY29sb3VyIG9yIHN0eWxlIHRvIHVzZSBmb3IgdGhlIGZpbGwgaW5zaWRlIHRoZSBzaGFwZXMuIENhbiBiZSBlaXRoZXIgYSBoZXhhZGVjaW1hbCBudW1iZXIgKDB4ZmZmZmZmKSwgYSBDU1Mgc3RyaW5nICgnI2ZmMDBmZicgb3IgJyNmMGYnKSwgb3IgYSBDYW52YXNHcmFkaWVudC9MekNhbnZhc0dyYWRpZW50LgorICAgICAgICBAdHlwZSBTdHJpbmcKKyAgICAgICAgQGx6eHR5cGUgc3RyaW5nCisgICAgICAgIEBsenhkZWZhdWx0ICIjMDAwMDAwIgorICAgICAgICBAYWNjZXNzIHB1YmxpYworICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbGlhc2xpbmVzIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJZiB0cnVlLCBsaW5lcyB3aWxsIGJlIG9mZnNldCBieSBsaW5lV2lkdGggLyAyIHRvIGFwcGVhciBhbGlhc2VkIChkaHRtbC1vbmx5KQorICAgICAgQGFjY2VzcyBwdWJsaWMKKyAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJzbGlkZXIiIHR5cGU9Imx6eDpzbGlkZXIiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InNsaWRlciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmJhc2VzbGlkZXIiPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InJlc2l6ZXN0YXRlbWluIiB0eXBlPSJseng6cmVzaXplc3RhdGVtaW4iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBSZXNpemVzIGl0cyBpbW1lZGlhdGVwYXJlbnQgd2l0aCBhIG1pbmltdW0gc2l6ZSBpbiByZXNwb25zZSB0byBtb3VzZSBldmVudHMsIHdoZW4gYXBwbGllZC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0icmVzaXplc3RhdGVtaW4iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpyZXNpemVzdGF0ZSI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlc2l6ZV9taW5fd2lkdGgiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgbWluaW11bSB3aWR0aCB0byByZXNpemUgdG8gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlc2l6ZV9taW5faGVpZ2h0IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIG1pbmltdW0gaGVpZ2h0IHRvIHJlc2l6ZSB0byA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJwcm9wZWRpdCIgdHlwZT0ibHp4OnByb3BlZGl0IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJwcm9wZWRpdCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnRvZ2dsZXRleHQiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwcm9wIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9iaiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNudW1iZXIiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iaWNvbnRvZ2dsZWJ1dHRvbiIgdHlwZT0ibHp4Omljb250b2dnbGVidXR0b24iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyB0aGUgaWNvbnRvZ2dsZWJ1dHRvbiBjbGFzcyBpcyBhIGljb24gYnV0dG9uIHdpdGggdHdvIHN0YXRlcywgbm8gdGV4dC4gdGhlIHJlc291cmNlIHBhc3NlZCBpbiBzaG91bGQKKyAgICAgICAgICBoYXZlIHR3byBmcmFtZXMsIG9uZSBmb3IgZWFjaCBzdGF0ZS4KKyAgICAgICAgQFNUQVJUX0NPREUKKyAgICAgICAgJmx0O2ljb250b2dnbGVidXR0b24gaWNvbnJlc291cmNlPSJyZXNvdXJjZW5hbWUiLyZndDsKKyAgICAgICAgQEVORF9DT0RFCisgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iaWNvbnRvZ2dsZWJ1dHRvbiIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmJhc2VidXR0b24iPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdGF0ZW51bSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgYnV0dG9uIHN0YXRlIChlaXRoZXIgMCBvciAxKSAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imljb255IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBmaW5lLXR1bmUgdGhlIHZlcnRpY2FsIHBvc2l0aW9uIG9mIGljb24gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imljb25yZXNvdXJjZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBpY29uIHJlc291cmNlIG5hbWUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibWVudXNlcGFyYXRvciIgdHlwZT0ibHp4Om1lbnVzZXBhcmF0b3IiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Im1lbnVzZXBhcmF0b3IiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNlY29tcG9uZW50Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ieGluc2V0IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIzIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgdGhlIG51bWJlciBvZiBwaXhlbHMgdG8gaW5zZXQgdGhlIG1lbnVzZXBhcmFydG9yIGZyb20gdGhlIHNpZGVzIG9mIHRoZSBtZW51IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJhc2V0YWJzYmFyIiB0eXBlPSJseng6YmFzZXRhYnNiYXIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGlzIGNsYXNzIGlzIGEgY29udGFpbmVyIGZvciBiYXNldGFiIGl0ZW1zLiBJdCBtdXN0IGJlIGEgY2hpbGQgb2YKKyAgICAgICAgICBiYXNldGFicy4gVGhlIGRlZmF1bHQgbGF5b3V0IGZvciBpdHMgc3Vidmlld3MgaXMgImNsYXNzOiBzaW1wbGVsYXlvdXQ7CisgICAgICAgICAgYXhpczogeDsgc3BhY2luZzogMCIuIFlvdSBjYW4gcGFzcyB0aGUgbmFtZSBvZiB0aGlzIGNsYXNzIGluIHRoZQorICAgICAgICAgICdiYXJjbGFzcycgYXR0cmlidXRlIG9mIHRhYnBhbmUsIGJhc2V0YWJwYW5lLCBiYXNldGFicywgYW5kCisgICAgICAgICAgdGFicy4gQmFzZXRhYnMgdXNlcyB0aGlzIGNsYXNzIGFzIGl0cyBkZWZhdWx0ICdiYXJjbGFzcycuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImJhc2V0YWJzYmFyIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZWxpc3QiPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InZpZXdsaXN0bWFuYWdlciIgdHlwZT0ibHp4OnZpZXdsaXN0bWFuYWdlciIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEBrZXl3b3JkIHByaXZhdGUgIAorICAgICAgICBNYW5hZ2UgYSBoYXNoIHRhYmxlIG9mIHZpZXdzbGlzdCAKKyAgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idmlld2xpc3RtYW5hZ2VyIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBvb2xzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiR7bmV3IE9iamVjdCgpfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEBrZXl3b3JkIHByaXZhdGUgIAorICAgICAgICBNYW5hZ2UgYSBoYXNoIHRhYmxlIG9mIHZpZXdzbGlzdCAKKyAgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ic3dhdGNodmlldyIgdHlwZT0ibHp4OnN3YXRjaHZpZXciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBzd2F0Y2h2aWV3IGlzIGEgc2ltcGxlIHZpZXcgdGhhdCBpcyBmaWxsZWQgd2l0aCBhIHNpbmdsZSBjb2xvci4KKyAgICBFaXRoZXIgJ2ZnY29sb3InIGFuZCAnYmdjb2xvcicgbWF5IGJlIHVzZWQgdG8gc2V0IHRoZSBjb2xvciBvZiB0aGUgdmlldy4KKyAgICBCeSBkZWZhdWx0IGl0IGZpbGxzIHRoZSBzcGFjZSBvZiB0aGUgcGFyZW50IHdpdGggd2hpdGUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ic3dhdGNodmlldyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xvciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIweGZmZmZmZiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHRoaXMgaXMgdGhlIGNvbG9yIHRoYXQgd2FzIHNldCAoYnkgc2V0dGluZyAnYmdjb2xvcicgb3IgJ2ZnY29sb3InICksCisgICAgICAgIGJnY29sb3IgbWF5IGJlIGRpZmZlcmVudCBpZiBzZXRDb2xvclRyYW5zZm9ybSBoYXMgYmVlbiBjYWxsZWQKKyAgICAgICAgQGtleXdvcmRzIHJlYWRvbmx5IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImRhdGFzZWxlY3Rpb25tYW5hZ2VyIiB0eXBlPSJseng6ZGF0YXNlbGVjdGlvbm1hbmFnZXIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKworICAgCisgICAgQGNvcHlyaWdodCBDb3B5cmlnaHQgMjAwMS0yMDEwIExhc3psbyBTeXN0ZW1zLCBJbmMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgorICAgICAgICAgICAgICAgVXNlIGlzIHN1YmplY3QgdG8gbGljZW5zZSB0ZXJtcy4KKyAgIAorICAgIEBhZmZlY3RzIGx6ZGF0YXNlbGVjdGlvbm1hbmFnZXIKKyAgICBAYWNjZXNzIHB1YmxpYworICAgIEB0b3BpYyBMRkMKKyAgICBAc3VidG9waWMgSGVscGVycworICAgIEBkZXZub3RlIFRPRE86IFsyMDA4MDkzMCBhbmJhXSAoTFBQLTYwODApIHVuY29tbWVudCB0eXBpbmcgaW4gbWV0aG9kIHNpZ25hdHVyZXMKKyAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iZGF0YXNlbGVjdGlvbm1hbmFnZXIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpzZWxlY3Rpb25tYW5hZ2VyIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWFuYWdlciIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQGFjY2VzcyBwcml2YXRlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Imhvcml6b250YWxheGlzIiB0eXBlPSJseng6aG9yaXpvbnRhbGF4aXMiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKworICAgICBSZXByZXNlbnRzIHRoZSBYLWF4aXMgb24gdGhlIHJlY3Rhbmd1bGFyIGNoYXJ0IGV4dGVuZHMgZnJvbSBBeGlzIGNsYXNzCisgICAgIEBhY2Nlc3MgcHVibGljCisgICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Imhvcml6b250YWxheGlzIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YXhpcyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxhYmVsTGVuZ2h0IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQGtleXdvcmQgcHJpdmF0ZTwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkYXRhY29sdW1uIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IngiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBAa2V5d29yZCBwcml2YXRlPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iY29uc3RhbnRsYXlvdXQiIHR5cGU9Imx6eDpjb25zdGFudGxheW91dCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iY29uc3RhbnRsYXlvdXQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpsYXlvdXQiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2YWx1ZSIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIGNvbnN0YW50IHZhbHVlIHRoYXQgaXMgYXBwbGllZCB0byB0aGUgYXR0cmlidXRlCisgICAgICAgICAgKCBkZWZpbmVkIGluICdheGlzJyBhcyAneCcgb3IgJ3knICkgb2YgZWFjaCBzdWJ2aWV3IGluIHRoZSBsYXlvdXQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJheGlzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9InkiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgYXhpcyBpbiB3aGljaCB0aGlzIGxheW91dCBvcGVyYXRlcyBlaXRoZXIgJ3gnIG9yICd5Jy4gIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InN0cmVhbXByb2dyZXNzIiB0eXBlPSJseng6c3RyZWFtcHJvZ3Jlc3MiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBBbiBpbnN0YW5jZSBvZiB0aGlzIGNsYXNzIHdpbGwgc2V0IGl0cyB3aWR0aCByZWxhdGl2ZSB0byB0aGUKKyAgICAgIHByb2dyZXNzIG9mIHRoZSBnaXZlbiBzdHJlYW0gYW5kIGl0cyBtYXh3aWR0aCBhdHRyaWJ1dGUuIEl0IGlzCisgICAgICBncmVlbiBieSBkZWZhdWx0OyBob3dldmVyLCB0byBtYWtlIGl0IGFwcGVhciB3aXRoIGEgcmVzb3VyY2UsIHlvdSBtYXkKKyAgICAgIHNldCB0aGUgYmdjb2xvciB0byBudWxsIGFuZCBwcm92ZGUgYSByZXNvdXJjZSAoYW5kIGRvbid0IGZvcmdldCB0byBzZXQKKyAgICAgIHN0cmV0Y2hlcyBhdHRyaWJ1dGUpLgorPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ic3RyZWFtcHJvZ3Jlc3MiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idG90YWx0aW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyByZWFkLW9ubHkgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRpbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHJlYWQtb25seSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3RyZWFtIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBzdHJlYW0gZm9yIHdoaWNoIHRvIHNob3cgdGhlIHByb2dyZXNzIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwcm9ncmVzcyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgYSB2YWx1ZSBiZXR3ZWVuIDAgYW5kIDEgaW5kaWNhdGluZyBob3cgbXVjaCBvZiB0aGUgc3RyZWFtIGhhcyBwbGF5ZWQKKyAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWF4d2lkdGgiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IiR7cGFyZW50LndpZHRofSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIG1heCB3aWR0aCB0aGF0IHRoaXMgd2lsbCBncm93IHRvIChkZWZhdWx0cyB0byBwYXJlbnQncyB3aWR0aCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJtdWx0aXN0YXRlYnV0dG9uIiB0eXBlPSJseng6bXVsdGlzdGF0ZWJ1dHRvbiIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibXVsdGlzdGF0ZWJ1dHRvbiIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmJhc2VidXR0b24iPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdGF0ZW51bSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHRoZSBjdXJyZW50IHN0YXRlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdGF0ZWxlbmd0aCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHRoZSBudW1iZXIgb2YgZnJhbWVzIGluIGEgc3RhdGUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1heHN0YXRlIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgdGhlIGxhcmdlc3QgbnVtYmVyIGFsbG93ZWQgZm9yIHRoZSB2YWx1ZSBvZiBzdGF0ZW51bSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ0YWJzYmFyIiB0eXBlPSJseng6dGFic2JhciIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idGFic2JhciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmJhc2V0YWJzYmFyIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3BhY2luZyIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFNwYWNpbmcgYmV0d2VlbiB0YWIgaXRlbXMuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InZpZGVvdm9sdW1lYnV0dG9uIiB0eXBlPSJseng6dmlkZW92b2x1bWVidXR0b24iID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InZpZGVvdm9sdW1lYnV0dG9uIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZvbHVtZUludGVybmFsIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjEuMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZvbHVtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIke3RoaXMubXV0ZSA/IDAuMCA6IHRoaXMudm9sdW1lSW50ZXJuYWx9IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHJhY2tpbmdEZWxlZ2F0ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHJhY2tpbmciIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdmVyIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibXV0ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFkanVzdGluZyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIkeyAgICAgICAgICAgICB0aGlzLmJ1dHRvbi5vdmVyIHx8ICAgICAgICAgICAgICB0aGlzLmJ1dHRvbi50cmFja2luZyB8fCAgICAgICAgICAgICAgdGhpcy5hZGp1c3Rlci5vdmVyICB8fCAgICAgICAgICAgICAgdGhpcy5hZGp1c3Rlci50cmFja2luZ30iID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhZGp1c3RlckhlaWdodCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIxMDAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhZGp1c3RlckJvcmRlciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIyIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJiYXNlc2Nyb2xsdGh1bWIiIHR5cGU9Imx6eDpiYXNlc2Nyb2xsdGh1bWIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBCYXNlc2Nyb2xsdGh1bWIgZXhwZWN0cyB0byBiZSB3aXRoaW4gYSBiYXNlc2Nyb2xsYmFyIChvciBhIHN1YmNsYXNzKS4KKyAgICAgICAgICBJbiBvdGhlciB3b3JkcywgaXRzICJjbGFzc3Jvb3QiIG11c3QgYmUgYSBzY3JvbGxiYXIuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImJhc2VzY3JvbGx0aHVtYiIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmJhc2Vjb21wb25lbnQiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkb2Zmc2V0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9InRoaXMuZ2V0TW91c2UoICd5JyApIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ0YWJzbGlkZXIiIHR5cGU9Imx6eDp0YWJzbGlkZXIiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRhYnNsaWRlciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmJhc2V0YWJzbGlkZXIiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJib3JkZXJzaXplIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjEiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgc2l6ZSBvZiB0aGUgYm9yZGVyLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyY29sb3IiIHR5cGU9Imx6eDpjb2xvciIgZGVmYXVsdD0iJHt0aGlzLnN0eWxlICE9IG51bGwgPyB0aGlzLnN0eWxlLmJvcmRlcmNvbG9yIDogbnVsbH0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgYm9yZGVyIGNvbG9yLiBEZWZhdWx0IGlzIGNvbnN0cmFpbmVkIHRvIHRoZSAKKyAgICAgICAgICAgICAgJmx0O3RhZ25hbWUmZ3Q7c3R5bGUmbHQ7L3RhZ25hbWUmZ3Q7J3MgJmx0O2F0dHJpYnV0ZSZndDtib3JkZXJjb2xvciZsdDsvYXR0cmlidXRlJmd0OyAKKyAgICAgICAgICAgICAgdmFsdWUuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InN0eWxlIiB0eXBlPSJseng6c3R5bGUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBjb250YWlucyBzdHlsZSBhdHRyaWJ1dGVzIHdoaWNoIGFyZSBhcHBsaWVkIHRvIGNvbXBvbmVudHMgdG8gbW9kaWZ5IHRoZWlyIGxvb2sgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ic3R5bGUiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpub2RlIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGV4dHNlbGVjdGVkY29sb3IiIHR5cGU9Imx6eDpjb2xvciIgZGVmYXVsdD0iYmxhY2siID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyB1c2VkIGFzIHRoZSB0ZXh0IGNvbG9yIHdpdGggJ3NlbGVjdGVkY29sb3InIHRvIGNvbG9yIHRoZQorICAgICAgICBzZWxlY3RlZCBpdGVtIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZXh0aGlsaXRlY29sb3IiIHR5cGU9Imx6eDpjb2xvciIgZGVmYXVsdD0iaWNlYmx1ZTEiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyB1c2VkIGFzIHRoZSB0ZXh0IGNvbG9yIHdpdGggJ2hpbGl0ZWNvbG9yJyB0byBoaWdobGlnaHQgYW4gaXRlbSwKKyAgICAgICAgc3VjaCBhcyB3aGVuIG1vdXNlIGlzIG92ZXIgYSBtZW51IGl0ZW0gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRleHRmaWVsZGNvbG9yIiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9IndoaXRlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgYmFja2dyb3VuZCBjb2xvciBmb3IgdGV4dCBhcmVhcyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGV4dGRpc2FibGVkY29sb3IiIHR5cGU9Imx6eDpjb2xvciIgZGVmYXVsdD0iZ3JheTYwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgdXNlZCBhcyB0aGUgdGV4dCBjb2xvciB3aGVuIGEgY29tcG9uZW50IGlzIGRpc2FibGVkIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZXh0Y29sb3IiIHR5cGU9Imx6eDpjb2xvciIgZGVmYXVsdD0iZ3JheTEwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgY29sb3IgZm9yIHRleHQgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlbGVjdGVkY29sb3IiIHR5cGU9Imx6eDpjb2xvciIgZGVmYXVsdD0iaWNlYmx1ZTMiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyB1c2VkIHdoZW4gYW4gaXRlbSBpcyBzZWxlY3RlZCwgc3VjaCBhcyBpbiBhIGxpc3QgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1lbnVpdGVtYmdjb2xvciIgdHlwZT0ibHp4OmNvbG9yIiBkZWZhdWx0PSJ0ZXh0ZmllbGRjb2xvciIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGJhY2tncm91bmQgY29sb3IgZm9yIG1lbnUgaXRlbXMsIGRlZmF1bHRzIHRvIHRoZSAndGV4dGZpZWxkY29sb3InIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc3N0eWxlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9InRydWUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyB0aGlzIGlzIGEgc3R5bGUgb2JqZWN0CisgICAgICAgICAgQGFjY2VzcyBwcml2YXRlCisgICAgICAgICAgQGtleXdvcmRzIHJlYWRvbmx5IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc2RlZmF1bHQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGlmIHRydWUsIHRoaXMgc3R5bGUgaXMgdGhlIGRlZmF1bHQgc3R5bGUgZm9yIGNvbXBvbmVudHMgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJoaWxpdGVjb2xvciIgdHlwZT0ibHp4OmNvbG9yIiBkZWZhdWx0PSJpY2VibHVlNCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHVzZWQgd2hlbiB0aGUgYmFja2dyb3VuZCBjb2xvciBjaGFuZ2VzIHRvIGhpZ2hsaWdodCBhbiBpdGVtLAorICAgICAgICBzdWNoIGFzIHdoZW4gbW91c2UgaXMgb3ZlciBhIG1lbnUgaXRlbSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGlzYWJsZWRjb2xvciIgdHlwZT0ibHp4OmNvbG9yIiBkZWZhdWx0PSJncmF5MzAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyB1c2VkIHdoZW4gYW4gaXRlbSBpcyBkaXNhYmxlZCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2FudmFzY29sb3IiIHR5cGU9Imx6eDpjb2xvciIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGNhbnZhcyBjb2xvciwgZGVmYXVsdDogbnVsbCAod2lsbCB1c2Ugd2hhdGV2ZXIgaXMgc3BlY2lmaWVkCisgICAgICAgIGFzIHRoZSBjYW52YXMgYmdjb2xvciwgZGVmYXVsdDogd2hpdGUpIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJib3JkZXJzaXplIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgdGhlIGxpbmUgd2lkdGggdXNlZCBpbiB0aG9zZSBjb21wb25lbnRzIHRoYXQgaGF2ZSBhIHZpc3VhbCBib3JkZXIgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJvcmRlcmNvbG9yIiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9ImdyYXk0MCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHVzZWQgdG8gY29sb3IgdGhlIGZyYW1lIG9mIGEgY29tcG9uZW50IGZvciB0aG9zZSB0aGF0IGhhdmUgYSB2aXN1YWwKKyAgICAgICAgYm9yZGVyIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJiZ2NvbG9yIiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9IndoaXRlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgdXNlZCBmb3IgY29sb3JpemluZyB0aGUgYmFja2dyb3VuZHMgb2YgY29udGVudCBhcmVhcywgc3VjaAorICAgICAgICAgIGFzIHRoZSBiYWNrZ3JvdW5kIGluIHRhYnNsaWRlcidzIGNvbnRlbnQsIGFuZCB3aW5kb3cncyBjb250ZW50IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJiYXNlY29sb3IiIHR5cGU9Imx6eDpjb2xvciIgZGVmYXVsdD0ib2Zmd2hpdGUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyB1c2VkIGZvciBjb2xvcml6aW5nIGEgY29tcG9uZW50LCBjb21wb25lbnRzIHdpbGwgdHlwaWNhbGx5IHVzZQorICAgICAgICB2YXJ5aW5nIHNoYWRlcyBvZiB0aGlzIGNvbG9yIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJhc2VzY3JvbGxiYXIiIHR5cGU9Imx6eDpiYXNlc2Nyb2xsYmFyIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQ29udGFpbnMgbm9uLXZpc3VhbCBhc3BlY3RzIG9mIGEgc2Nyb2xsYmFyLiBTdWJjbGFzc2VzIGFyZSBleHBlY3RlZCB0bworICAgICAgICAgIGRlZmluZSB0aGlzLnRodW1iIGFuZCB0aGlzLnNjcm9sbHRyYWNrIHRvIHJlZmVyZW5jZSB0aGUgdmlld3MgdGhhdAorICAgICAgICAgIHBlcmZvcm0gdGhvc2UgZnVuY3Rpb25zLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJiYXNlc2Nyb2xsYmFyIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZWNvbXBvbmVudCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVzZW1vdXNld2hlZWwiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0idHJ1ZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIElmIHRydWUsIHRoaXMgc2Nyb2xsYmFyIGxpc3RlbnMgZm9yIG1vdXNld2hlZWwgZXZlbnRzIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdGVwc2l6ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIxMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBhbW91bnQgdGhhdCB0aGUgc2Nyb2xsdGFyZ2V0IGlzIG1vdmVkIHdoZW4gdGhlIHVzZXIgY2xpY2tzIG9uCisgICAgICAgICAgICAgIHRoZSBzY3JvbGx0cmFjayBvciB3aGVuIHRoZSBzdGVwIG1ldGhvZCBpcyBjYWxsZWQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzY3JvbGx0YXJnZXQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSB2aWV3IHRoYXQgaXMgY29udHJvbGxlZCBieSB0aGUgc2Nyb2xsYmFyLgorICAgICAgICAgICAgICBAa2V5d29yZHMgZmluYWwgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNjcm9sbG1heCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBtYXhpbXVtIGRpc3RhbmNlIHRvIHNjcm9sbCwgZGVmYXVsdDogdGhlIGhlaWdodCBvciB3aWR0aAorICAgICAgICAgICAgICBvZiB0aGUgc2Nyb2xsdGFyZ2V0LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2Nyb2xsYXR0ciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgYXR0cmlidXRlIG9mIHRoZSBzY3JvbGx0YXJnZXQgdGhhdCBpcyBtb2RpZmllZCBieSB0aGUgc2Nyb2xsYmFyLAorICAgICAgICAgICAgICBkZWZhdWx0OiB2YWx1ZSBvZiBheGlzIGF0dHJpYnV0ZS4KKyAgICAgICAgICAgICAgQGtleXdvcmRzIGZpbmFsIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzY3JvbGxhYmxlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9InRydWUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUcnVlIGlmIHRoZSBzY3JvbGx0YXJnZXQgaXMgYmlnZ2VyIHRoYW4gdGhlIGNvbnRhaW5pbmcgdmlldworICAgICAgICAgICAgICB0aGVyZWZvcmUgdGhlIHNjcm9sbGJhciBpcyBhY3RpdmUuIFRoZSBzY3JvbGxiYXIgYXBwZWFycyBkaXNhYmxlZAorICAgICAgICAgICAgICB3aGVuIHNjcm9sbGFibGUgaXMgZmFsc2UuIFlvdSBjYW4gbWFrZSB0aGUgc2Nyb2xsYmFyIGludmlzaWJsZQorICAgICAgICAgICAgICB3aGVuIHRoZXJlIGlzIG5vdGhpbmcgdG8gc2Nyb2xsIGJ5IHNldHRpbmcgdmlzaWJsZT0iJHtzY3JvbGxhYmxlfSIKKyAgICAgICAgICAgICAgQGtleXdvcmRzIHJlYWRvbmx5IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwYWdlc2l6ZSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBtYXhpbXVtIGRpc3RhbmNlIHRvIHNjcm9sbCwgZGVmYXVsdDogdGhlIGhlaWdodCBvciB3aWR0aAorICAgICAgICAgICAgICBvZiB0aGUgc2Nyb2xsYmFyLgorICAgICAgICAgICAgICBAa2V5d29yZHMgZmluYWwgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uc2Nyb2xsbWF4IiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBAa2V5d29yZHMgcHVibGljIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtb3VzZXdoZWVsZXZlbnRfb24iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ib25mb2N1cyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBldmVudCB0aGF0IGFjdGl2YXRlcyB0aGUgbW91c2V3aGVuIHdoZW4gc2VudCBmcm9tIHRoZSBmb2N1c3ZpZXcgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1vdXNld2hlZWxldmVudF9vZmYiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ib25ibHVyIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIGV2ZW50IHRoYXQgZGVhY3RpdmF0ZXMgdGhlIG1vdXNld2hlbiB3aGVuIHNlbnQgZnJvbSB0aGUgZm9jdXN2aWV3IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtb3VzZXdoZWVsYWN0aXZlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJZiB0cnVlLCB0aGUgbW91c2V3aGVlbCBpcyBhY3RpdmUgZm9yIHRoZSBmb2N1c3ZpZXcuCisgICAgICAgICAgICAgIEBrZXl3b3JkcyByZWFkLW9ubHkgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZvY3VzdmlldyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHZpZXcgdG8gd2hpY2ggdGhlIHNjcm9sbGJhciBzaG91bGQgbGlzdGVuIGZvciBmb2N1cyAKKyAgICAgICAgICAgIGV2ZW50cy4gSWYgbm90IHNldCwgaXQgd2lsbCBiZSBzZXQgdG8gdGhlIHNjcm9sbHRhcmdldAorICAgICAgICAgICAgb3IgdGhlIGltbWVkaWF0ZXBhcmVudCBvZiB0aGUgc2Nyb2xsYmFyLAorICAgICAgICAgICAgd2hpY2hldmVyIGlzIGZvY3VzYWJsZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYXhpcyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJ5IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQXhpcyBtYXkgYmUgIngiIG9yICJ5IiwgY29udHJvbHMgdGhlIG9yaWVudGF0aW9uIGFuZCBkZWZhdWx0CisgICAgICAgICAgICAgIHNjcm9sbGF0dHIKKyAgICAgICAgICAgICAgQGtleXdvcmRzIGZpbmFsIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InZhbGlkYXRpbmdGb3JtIiB0eXBlPSJseng6dmFsaWRhdGluZ0Zvcm0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKworICAgICAgQHRvcGljIEluY3ViYXRvcgorICAgICAgQHN1YnRvcGljIFZhbGlkYXRvcnMKKyAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idmFsaWRhdGluZ0Zvcm0iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpmb3JtIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmFsaWRhdG9ycyIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisKKyAgICAgIEB0b3BpYyBJbmN1YmF0b3IKKyAgICAgIEBzdWJ0b3BpYyBWYWxpZGF0b3JzCisgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlcnJvcmNvdW50IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJQb3B1cENpcmNsZSIgdHlwZT0ibHp4OlBvcHVwQ2lyY2xlIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJQb3B1cENpcmNsZSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmNpcmNsZWhvdHNwb3QiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZXh0IiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwYXJlbnRWaWV3IiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJhc2VsaXN0aXRlbSIgdHlwZT0ibHp4OmJhc2VsaXN0aXRlbSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYmFzZWxpc3RpdGVtIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZXZhbHVlY29tcG9uZW50Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VsZWN0ZWQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBXaGV0aGVyIHRoaXMgaXRlbSBpcyBzZWxlY3RlZC4gT3VyIGNvbnRhaW5pbmcgbGlzdCB3aWxsIGFkb3B0IHRoZSB2YWx1ZQorICAgICAgICAgICAgICBvZiB0aGlzIGNvbXBvbmVudCB3aGVuIGl0IGlzIHNlbGVjdGVkLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25zZWxlY3RlZCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgRXZlbnQgc2VudCB3aGVuIHRoaXMgaXRlbSBpcyBzZWxlY3RlZC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uc2VsZWN0IiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBFdmVudCBzZW50IHdoZW4gdGhlIHVzZXIgbWFrZXMgYSBzZWxlY3Rpb24uIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InBpZWNoYXJ0cGxvdGFyZWEiIHR5cGU9Imx6eDpwaWVjaGFydHBsb3RhcmVhIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisKKyAgICAgICAgIEEgcGllIGNoYXJ0IHBsb3QgYXJlYSB3aGVyZSB0aGUgcGllIHNsaWNlcyBhcmUgcmVuZGVyZWQKKyAgICAgICAgIEBhY2Nlc3MgcHVibGljCisgICAgICAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJwaWVjaGFydHBsb3RhcmVhIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6ZHJhd3ZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdHlsZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgRGVmaW5lcyB0aGUgcGllIHNsaWNlJ3Mgc3R5bGUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZm9ybWxheW91dCIgdHlwZT0ibHp4OmZvcm1sYXlvdXQiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImZvcm1sYXlvdXQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpsYXlvdXQiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzcGFjaW5nIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBBIHBpeGVsIGFtb3VudCB0byB1c2UgYmV0d2VlbiBlYWNoIHZpZXcgaW4gdGhlIGxheW91dCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWF4d2lkdGgiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imluc2V0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBBIHBpeGVsIGFtb3VudCB0byBpbnNldCB0aGUgZmlyc3QgdmlldyBjb250cm9sbGVkIGJ5IHRoZSBsYXlvdXQ8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY291bnRlciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYXhpcyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJ5IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIGF4aXMgaW4gd2hpY2ggdGhpcyBsYXlvdXQgb3BlcmF0ZXMuIE9uZSBvZiAneCcgb3IgJ3knLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWxpZ24iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibGVmdCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibXJlZCIgdHlwZT0ibHp4Om1yZWQiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Im1yZWQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idXJscyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJbICdodHRwOi8vd3d3Lm9wZW5sYXN6bG8ub3JnL2ltYWdlcy9lZHN1cmYuZ2lmJywgICAgICAgICAgICAgICAgICAgICAgJ2h0dHA6Ly93d3cub3Blbmxhc3psby5vcmcvaW1hZ2VzL2VkbnBhbHMyLmdpZicsICAgICAgICAgICAgICAgICAgICAgICdodHRwOi8vd3d3Lm9wZW5sYXN6bG8ub3JnL2ltYWdlcy9lZGNoZXNzMS5qcGcnLCAgICAgICAgICAgICAgICAgICAgICAnaHR0cDovL3d3dy5vcGVubGFzemxvLm9yZy9pbWFnZXMvZWRhbmRhbGFuaW5iYXJuLmpwZycgICAgICAgICAgICAgICAgICAgIF0iID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1cmxudW0iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRpbWVkZWwiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJHtuZXcgTHpEZWxlZ2F0ZSAoIHRoaXMgLCAnYWR2YW5jZScgKX0iID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJydW5uaW5nIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJsdWVzdHlsZSIgdHlwZT0ibHp4OmJsdWVzdHlsZSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYmx1ZXN0eWxlIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6c3R5bGUiPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImF4aXMiIHR5cGU9Imx6eDpheGlzIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQSBhYnN0cmFjdCBjbGFzcyB0aGF0IHJlcHJlc2VudHMgb25lIG9mIHRoZSBheGVzIG9mIGEgcmVjdGFuZ3VsYXIgY2hhcnQuIEluIGdlbmVyYWwsIGF4aXMgaXNuJ3QgaW5zdGFudGlhdGVkIGRpcmVjdGx5ICAgICAKKyAgICBAYWNjZXNzIHB1YmxpYworICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImF4aXMiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpkcmF3dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InR5cGUiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEluZGljYXRlcyB0aGUgYXhpcyB0eXBlIGNhbiBiZSAnbGluZWFyJyBvciAnY2F0ZWdvcmljYWwnIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0aXRsZVkiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJbmRpY2F0ZXMgdGhlIHBsYWNlbWVudCBpbiBZIHBvc2l0aW9uIG9mIHRoZSBBeGlzIHRpdGxlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0aXRsZVgiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJbmRpY2F0ZXMgdGhlIHBsYWNlbWVudCBpbiBYIHBvc2l0aW9uIG9mIHRoZSBBeGlzIHRpdGxlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0aXRsZUxvY2F0aW9uIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImRlZmF1bHQiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJbmRpY2F0ZXMgdGhlIHBsYWNlbWVudCBvZiB0aGUgQXhpcyB0aXRsZSBwb3NzaWJsZSB2YWx1ZXM6ICdsb3cnLCdoaWdoJywnZGVmYXVsdCc8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGl0bGVHYXAiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjEwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQGtleXdvcmQgcHJpdmF0ZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGl0bGUiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEF4aXMgdGl0bGUgbGFiZWw8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGlja21hcmtMYWJlbE1heERlY2ltYWxzIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIyIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQGtleXdvcmQgcHJpdmF0ZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGlja2xhYmVsY29sdW1uIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiRvbmNleycnfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIERhdGEgQ29sdW1uIHRoYXQgaXMgdXNlZCB0byBvdmVycmlkZSB0aGUgdmFsdWVzIG9mIFRpYyBNYXJrcyBsYWJlbHMgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGlja01hcmtzTGFiZWxzRW5hYmxlZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBlbmFibGUgdGhlIHJlbmRlcmluZyBvZiB0aWMgTWFya3MgbGFiZWxzIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0aWNrTWFya1Bvc2l0aW9ucyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJbXSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEV4cG9zZXMgZGlzdGFuY2VzIHdoZXJlIHRpY2ttYXJrcyBhcmUgZHJhd24gCisgICAgICAgIEBrZXl3b3JkIHByaXZhdGUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNjYWxlIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQGtleXdvcmQgcHJpdmF0ZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmF0aW9QaXhlbCIgdHlwZT0ibHp4Om51bWJlciIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEBrZXl3b3JkIHByaXZhdGUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9mZnNldCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEBrZXl3b3JkIHByaXZhdGUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1pbm9yVGlja0VuYWJsZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGVuYWJsZSBtaW5vciBUaWNzIE1hcmtzIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtaW5pbXVtUmVuZGVyIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQGtleXdvcmQgcHJpdmF0ZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWluaW11bSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgTnVtZXJpY2FsIHZhbHVlIHRoYXQgaW5kaWNhdGVzIHRoZSBNaW5pbXVtIHZhbHVlIGluIHRoZSBheGlzIGNhbiBiZSBwb3NpdGl2ZSBvciBuZWdhdGl2ZSB2YWx1ZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWF4aW11bVJlbmRlciIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEBrZXl3b3JkIHByaXZhdGUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1heGltdW0iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMTAwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgTnVtZXJpY2FsIHZhbHVlIHRoYXQgaW5kaWNhdGVzIHRoZSBNYXhpbXVtIHZhbHVlIGluIHRoZSBheGlzIGNhbiBiZSBwb3NpdGl2ZSBvciBuZWdhdGl2ZSB2YWx1ZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWFqb3JUaWNrRW5hYmxlZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBlbmFibGUgTWFqb3IgVGljcyBNYXJrcyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWFqb3JJbnRlcnZhbCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iNSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEFsbG93cyB0byBjdXN0b21pemUgdGhlIGludGVydmFsIG9mIHRoZSBNYWpvciBUaWNzIE1hcmtzPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxhYmVscm90YXRpb24iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iaG9yaXpvbnRhbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEluZGljYXRlcyB0aGUgYXhpcyB0aXRsZSByb3RhdGlvbiBjYW4gYmUgJ2hvcml6b250YWwnIG9yICd2ZXJ0aWNhbCcgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxhYmVsVGV4dEFycmF5IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IltdIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgRXhwb3NlcyBkaXN0YW5jZXMgd2hlcmUgdGlja21hcmtzIGFyZSBkcmF3biAKKyAgICAgICAgQGtleXdvcmQgcHJpdmF0ZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWxSZXBvc0VuYWJsZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQXR0cmlidXRlIHRoYXQgY29udHJvbHMgaWYgdGhlIGxhYmVscyBhcmUgdmVydGljYWxseSByZXBvc2l0aW9uZWQgdG8gYXZvaWQgb3ZlcmxhcGluZyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWxBcnJheSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJbXSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEBrZXl3b3JkIHByaXZhdGUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImludGVydmFsIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJbmRpY2F0ZXMgdGhlIGludGVydmFsIG9mIHZhbHVlcyBiZXR3ZWVuIHRoZSB0aWMgbWFya3Mgb2YgdGhlIGF4aXMgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZpeGVkUmFuZ2UiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEZpeCB0aGUgcmFuZ2Ugb2YgdGhlIGF4aXMgdG8gdGhlIG1heGltdW0gJmFtcDthbXA7IG1pbmltdW0gICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGF0YVNlcmllcyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJbXSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEBrZXl3b3JkIHByaXZhdGUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbHVtbk5hbWUiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEluZGljYXRlcyB0aGUgY29sdW1uIG5hbWUgYXNzb2NpYXRlZCB0byB0aGUgYXhpcyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2F0ZWdvcmljYWxBcnJheSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQGtleXdvcmQgcHJpdmF0ZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYXhpc0VuYWJsZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgZW5hYmxlIG9yIGRpc2FibGUgdGhlIGF4aXMgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFkanVzdG1pbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEBrZXl3b3JkIHByaXZhdGUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iY29sb3JtZW51aXRlbSIgdHlwZT0ibHp4OmNvbG9ybWVudWl0ZW0iID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImNvbG9ybWVudWl0ZW0iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibXljb2xvciIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJzbGlkZXJrbm9iIiB0eXBlPSJseng6c2xpZGVya25vYiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEBrZXl3b3JkIHByaXZhdGUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ic2xpZGVya25vYiIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtaW54IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBAa2V5d29yZCBwcml2YXRlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtYXh5IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjEwMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzTW91c2VEb3duIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJjdXN0b21idXR0b24iIHR5cGU9Imx6eDpjdXN0b21idXR0b24iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgY3VzdG9tYnV0dG9uIGNsYXNzIGNhbiBpbmNsdWRlIHRleHQgYW5kL29yIGFuIGljb24sIHdpdGggb3VyIGFwcC1zcGVjaWZpYyBiYWNrZ3JvdW5kIGdyYXBoaWMKKyAgICAgICAgJmx0O2V4YW1wbGUmZ3Q7CisgICAgICAgICAgJmFtcDtsdDtjYW52YXMmYW1wO2d0OworICAgICAgICAgICAgJmFtcDtsdDtpbmNsdWRlIGhyZWY9ImluY3ViYXRvci9jdXN0b21idXR0b24ubHp4Ii8mYW1wO2d0OworICAgICAgICAgICAgJmFtcDtsdDtjdXN0b21idXR0b24gaWNvbm5hbWU9InRhcmdldCIgdGV4dD0iSGl0IE1lIi8mYW1wO2d0OworICAgICAgICAgICZhbXA7bHQ7L2NhbnZhcyZhbXA7Z3Q7CisgICAgICAgICZsdDsvZXhhbXBsZSZndDsKKworICAgICAgICB0aGUgaWNvbiBzaG91bGQgYmUgYSByZXNvdXJjZSB3aXRoIGEgbmFtZSBlbmRpbmcgaW4gIl9pY29uX3JzYyI7CisgICAgICAgIHRoZSBpY29ubmFtZSBzaG91bGQgYmUgdGhhdCByZXNvdXJjZSBuYW1lLCB3aXRob3V0IHRoZSAiX2ljb25fcnNjIgorICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImN1c3RvbWJ1dHRvbiIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmJhc2VidXR0b24iPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZXh0eSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgdXNlIHRvIGZpbmUtdHVuZSB0ZXh0IHkgcG9zaXRpb24gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJpZ2h0cnNjIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImN1c3RvbWJ1dHRvbl9zbWFsbF9yaWdodF9yc2MiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtaWRkbGVyc2MiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iY3VzdG9tYnV0dG9uX3NtYWxsX21pZGRsZV9yc2MiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsZWZ0cnNjIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImN1c3RvbWJ1dHRvbl9zbWFsbF9sZWZ0X3JzYyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGJhY2tncm91bmQgcmVzb3VyY2VzIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpY29ueSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgZmluZS10dW5lIHRoZSB2ZXJ0aWNhbCBwb3NpdGlvbiBvZiBpY29uIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpY29uc3RyZXRjaGVzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im5vbmUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBjb250cm9scyB3aGV0aGVyIHRoZSBpY29uIHN0cmV0Y2hlcyAobm9uZXxib3RoKSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaWNvbnNwYWNlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBmaW5lLXR1bmUgdGhlIGhvcml6b250YWwgc3BhY2luZyBvZiBpY29uIHRvIHRleHQgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imljb25uYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGljb24gcmVzb3VyY2UgbmFtZSBwcmVmaXggPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImV4cGFuZGVkV2lkdGgiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJG9uY2V7dGhpcy53aWR0aH0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBtYXggd2lkdGggb2YgYnV0dG9uIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xsYXBzZWRXaWR0aCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIzMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIG1pbiB3aWR0aCBvZiBidXR0b24gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYmFyY2hhcnRwbG90YXJlYSIgdHlwZT0ibHp4OmJhcmNoYXJ0cGxvdGFyZWEiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBAa2V5d29yZHMgcHJpdmF0ZQorICAgICBwbG90YXJlYSBvZiBiYXJjaGFydCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJiYXJjaGFydHBsb3RhcmVhIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlydHVhbGRyYXd2aWV3Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ4ZHJhZ3N0YXRlIiB0eXBlPSJseng6eGRyYWdzdGF0ZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEBrZXl3b3JkIHByaXZhdGUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ieGRyYWdzdGF0ZSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnN0YXRlIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ieGRvZmZzZXQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0idGhpcy5nZXRNb3VzZSggJ3gnICkiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBAa2V5d29yZCBwcml2YXRlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ4IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiR7bGltaXQobWlueCwgbWF4eCwgICAgICAgICAgICAgICAgICAgICB0aGlzLmltbWVkaWF0ZXBhcmVudC5nZXRNb3VzZSggJ3gnICkgLSB0aGlzLnhkb2Zmc2V0KX0iID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJhc2Vjb21ib2JveCIgdHlwZT0ibHp4OmJhc2Vjb21ib2JveCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEEgZHJvcGRvd24gbGlzdCBvZiBzZWxlY3RhYmxlIGl0ZW1zLiBDYW4gZWl0aGVyIGJlIGVkaXRhYmxlIG9yCisgICAgICAgICAgbm90LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJiYXNlY29tYm9ib3giIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNlZm9ybWl0ZW0iPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZXh0X3kiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyB0aGUgeSBwb3NpdGlvbiBvZiB0aGUgdGV4dC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRleHRfeCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHRoZSB4IHBvc2l0aW9uIG9mIHRoZSB0ZXh0LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGV4dF93aWR0aCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iJHt0aGlzLndpZHRoIC0gMTl9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgdGhlIHdpZHRoIHRoZSB0ZXh0LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3BhY2luZyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHNwYWNpbmcgc2l6ZSAoIGluIHBpeGVscyApIGJldHdlZW4gaXRlbXMgaW4gdGhlIHBvcC11cCBsaXN0LiAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNob3duaXRlbXMiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iLTEiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBTZXRzIHRoZSBoZWlnaHQgb2YgdGhlIGNvbWJvYm94IHRvIHNob3cgJ24nIGl0ZW1zLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VsZWN0ZWQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBpbml0aWFsIHNlbGVjdGVkIGl0ZW0uIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbnNlbGVjdCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhpcyBldmVudCBpcyB0cmlnZ2VyZWQgd2hlbmV2ZXIgdGhlIHVzZXIgbWFrZXMgYSBzZWxlY3Rpb24uIEl0CisgICAgICAgICAgICAgIG1heSBiZSB1c2VkIGFzIGEgc2NyaXB0IGluIHRoZSBjb21ib2JveCB0YWcgb3IgYXMgYW4gZXZlbnQgbWV0aG9kLgorICAgICAgICAgICAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25kZWZhdWx0c2VsZWN0aW9uIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGlzIGV2ZW50IGlzIHNlbnQgd2hlbiB0aGUgZGVmYXVsdCBzZWxlY3Rpb24gaXMgc2V0LiAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1pbl93aWR0aCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iNTAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgbWluaW11bSB3aWR0aCB0aGlzIGNvbXBvbmVudCBpcyBhbGxvd2VkIHRvIGJlLgorICAgICAgICAgICAgICBAa2V5d29yZHMgZGVmYXVsdHNldHRlciA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXRlbWNsYXNzbmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgY2xhc3MgdGhhdCBpcyB1c2VkIHRvIGNyZWF0ZSBhbiBpdGVtIGluIHRoZSBsaXN0LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNvcGVuIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IHRoZSBwb3B1cCBsaXN0IGlzIHNob3dpbmcuICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZWRpdGFibGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0idHJ1ZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIE1ha2UgdGhlIHRleHQgZmllbGQgb2YgdGhpcyBjb21ib2JveCBlZGl0YWJsZS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRlZmF1bHR0ZXh0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSB0ZXh0IHRoYXQgYXBwZWFycyBpbiB0aGUgdGV4dCBmaWVsZCB3aGVuIG5vIGl0ZW0gaXMgc2VsZWN0ZWQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkZWZhdWx0c2VsZWN0aW9uIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSJudWxsIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIG51bWJlciBvZiB0aGUgaXRlbSB0aGF0IGlzIGluaXRpYWxseSBzZWxlY3RlZC4gVGhpcyBvdmVycmlkZXMKKyAgICAgICAgICAgICAgdGhlIHZhbHVlIGRlZmluZWQgaW4gdGhlIGRlZmF1bHR0ZXh0IGF0dHJpYnV0ZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGF0YW9wdGlvbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJub25lIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgT25lIG9mICJsYXp5IiwgInJlc2l6ZSIsICJwb29saW5nIiwgIm5vbmUiLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGF0YWNvbnRyb2xzdmlzaWJpbGl0eSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJvcmRlcnNpemUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBib3JkZXIgc2l6ZSAoIGluIHBpeGVscyApIG9mIHRoZSBwb3B1cCBsaXN0LiAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImF1dG9zY3JvbGxiYXIiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0idHJ1ZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFdoZXRoZXIgYSBzY3JvbGxiYXIgc2hvdWxkIGF1dG9tYXRpY2FsbHkgc2hvdyB1cCB3aGVuIHRoZXJlIGFyZSBtb3JlCisgICAgICAgICAgICAgIGl0ZW1zIHRoYW4gc2hvd25pdGVtcy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImF0dGFjaG9mZnNldCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iLTEiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgdmVydGljYWwgb2Zmc2V0IG9mIHRoZSBmbG9hdGluZ2xpc3QgYXR0YWNoZWQgdG8gdGhpcworICAgICAgICAgICAgICBjb21ib2JveC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYXVkaW8iIHR5cGU9Imx6eDphdWRpbyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorSW1wb3J0cyBhbiBhdWRpbyBmaWxlLgorW1dhcm5pbmddVGhpcyB0YWcgaXMgb2Jzb2xldGUuIEl0cyBmdW5jdGlvbmFsaXR5IGhhcyBiZWVuIHJlcGxhY2VkIGJ5IHRoZSAmbHQ7cmVzb3VyY2UmZ3Q7IHRhZy4gCisgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYXVkaW8iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmdyb3VwIHJlZj0ibHp4OnRvcExldmVsRWxlbWVudHMiIC8+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNyYyIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CitJbXBvcnRzIGFuIGF1ZGlvIGZpbGUuCitbV2FybmluZ11UaGlzIHRhZyBpcyBvYnNvbGV0ZS4gSXRzIGZ1bmN0aW9uYWxpdHkgaGFzIGJlZW4gcmVwbGFjZWQgYnkgdGhlICZsdDtyZXNvdXJjZSZndDsgdGFnLiAKKyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJhc2VmbG9hdGluZ2xpc3QiIHR5cGU9Imx6eDpiYXNlZmxvYXRpbmdsaXN0IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJiYXNlZmxvYXRpbmdsaXN0IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6bGlzdCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImF0dGFjaHRhcmdldCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHZpZXcgdG8gd2hpY2ggdGhpcyBmbG9hdGluZ2xpc3Qgd2lsbCBhdHRhY2guIEJ5IGRlZmF1bHQsIHRoaXMKKyAgICAgICAgICAgICAgd2lsbCBiZSB0aGUgbGV4aWNhbCBwYXJlbnQuICBUaGUgc3R5bGUgb2YgdGhlIGF0dGFjaHRhcmdldCB3aWxsIGJlCisgICAgICAgICAgICAgIGluaGVyaXRlZC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImF0dGFjaG9mZnNldCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIGRpc3RhbmNlIGZyb20gdGhlIGF0dGFjaHRhcmdldC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImF0dGFjaCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJib3R0b20iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBXaGVyZSB0aGlzIGZsb2F0aW5nbGlzdCBzaG91bGQgYXR0YWNoIHRvIGl0cyBvd25lci4gUG9zc2libGUKKyAgICAgICAgICAgICAgdmFsdWVzOiBib3R0b20sIHRvcCwgbGVmdCwgcmlnaHQuICBJbiB0aGUgZXZlbnQgb2YgYSBjYW52YXMKKyAgICAgICAgICAgICAgb3V0LW9mLWJvdW5kcywgdGhlIGZsb2F0aW5nIGxpc3Qgd2lsbCBhdHRhY2ggaW4gYSB2aXNpYmxlCisgICAgICAgICAgICAgIGxvY2F0aW9uLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJiYXNlY29tcG9uZW50IiB0eXBlPSJseng6YmFzZWNvbXBvbmVudCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGFuIGFic3RyYWN0IGNsYXNzIHdoaWNoIGFsbCBjb21wb25lbnRzIHN1YmNsYXNzIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImJhc2Vjb21wb25lbnQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGV4dCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyB0aGUgbGFiZWwgb3IgdGl0bGUgb2YgdGhlIGNvbXBvbmVudDogaW5zdGVhZCBvZiB1c2luZyB0aGlzIAorICAgICAgICAgICAgICBhdHRyaWJ1dGUgdGV4dCBtYXkgaW5zdGVhZCBiZSBwbGFjZWQgd2l0aGluZyB0aGUgdGFnLCBmb3IKKyAgICAgICAgICAgICAgZXhhbXBsZTogJmFtcDtsdDtidXR0b24mYW1wO2d0O09LJmFtcDtsdDsvYnV0dG9uJmFtcDtndDsgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN0eWxlYWJsZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJ0cnVlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+Cisgd2hldGhlciBzdHlsZSBzaG91bGQgYmUgYXBwbGllZCB0byB0aGlzIGNvbXBvbmVudCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3R5bGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorICBpZiBudWxsLCB0aGUgc3R5bGUgaXMgc2V0IHRvIHRoZSBpbmhlcml0ZWQgc3R5bGUgZnJvbSB0aGUgcGFyZW50CisgICAgICAgICAgICAgICBjb21wb25lbnQsIGlmIG5vIHBhcmVudCBjb21wb25lbnQgdGhlIHN0eWxlIHdpbGwgYmUgdGhlIGNhbnZhcworICAgICAgICAgICAgICAgJ2RlZmF1bHRzdHlsZScgYXR0cmlidXRlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbnN0eWxlIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBAYWNjZXNzIHByaXZhdGUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uaXNkZWZhdWx0IiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBldmVudDogd2hlbiBpc2RlZmF1bHQgY2hhbmdlcworICAgICAgICAgICAgICBAYWNjZXNzIHByaXZhdGUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uZm9jdXNhYmxlIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBAYWNjZXNzIHByaXZhdGUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uX2VuYWJsZWQiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEBhY2Nlc3MgcHJpdmF0ZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNkZWZhdWx0IiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJZiBzZXQgdG8gdHJ1ZSwgdGhpcyBjb21wb25lbnQgd2lsbCBiZSB0aGUgZGVmYXVsdCAoYW5kIHdpbGwKKyAgICAgICAgICAgICAgdGhlcmVmb3JlIHJlY2VpdmUgdGhlIGVudGVyIGtleSkgaWYgaXQgaXMgbmVhcmVzdCB0byB0aGUgZm9jdXNzZWQKKyAgICAgICAgICAgICAgdmlldywgYW5kIGlmIHRoYXQgZm9jdXNzZWQgdmlldyBkb2VzIG5vdCBoYXZlIGRvZXNlbnRlciBzZXQgdG8KKyAgICAgICAgICAgICAgdHJ1ZS4gIk5lYXJuZXNzIiBpcyBkZWZpbmVkIHRvIG1lYW4gdGhlIGNsb3Nlc3QgY29tbW9uIHBhcmVudAorICAgICAgICAgICAgICB3aXRoIHRoZSBmb2N1c3NlZCB2aWV3IHRoYXQgaXMgbm90IGV4Y2x1ZGVkIGZyb20gdGhlIG1vZGUsIGFuZAorICAgICAgICAgICAgICB3aGljaCBpcyB2aXNpYmxlIG9uc2NyZWVuLgorICAgICAgICAgICAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaGFzZGVmYXVsdCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHNldCB0byB0cnVlIHdoZW4gdGhpcyBjb21wb25lbnQgd2lsbCByZWNlaXZlIGVudGVyIGtleSBldmVudHMgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVuYWJsZWQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0idHJ1ZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHdoZW4gZmFsc2UgdGhlIGNvbXBvbmVudCBzaG91bGQgYXBwZWFyIGFzIGl0cyBkaXNhYmxlZCBzdGF0ZSBhbmQKKyAgICAgICAgICAgICAgbm90IHJlc3BvbmQgdG8gdXNlciBldmVudHMuIFRoZSBjb21wb25lbnQgaXMKKyAgICAgICAgICAgICAgYXV0b21hdGljYWxseSBzZXQgdG8gY2xpY2thYmxlIHdoZW4gZW5hYmxlZCwgYW5kIG5vdCBjbGlja2FibGUKKyAgICAgICAgICAgICAgd2hlbiBkaXNhYmxlZC48L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZG9lc2VudGVyIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBpZiBzZXQgdG8gdHJ1ZSwgdGhlIGNvbXBvbmVudCBtYW5hZ2VyIHdpbGwgY2FsbCB0aGlzIGNvbXBvbmVudAorICAgICAgICAgICAgICB3aXRoIGRvRW50ZXJEb3duIGFuZCBkb0VudGVyVXAgd2hlbiB0aGUgZW50ZXIga2V5IGdvZXMgdXAgb3IgZG93bgorICAgICAgICAgICAgICBpZiBpdCBpcyBmb2N1c3NlZC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iY2FtZXJhIiB0eXBlPSJseng6Y2FtZXJhIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJjYW1lcmEiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDptZWRpYWRldmljZSI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IndpZHRoIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgd2lkdGggKHJlc29sdXRpb24pIHRoYXQgd2lsbCBiZSBjYXB0dXJlZCBieSB0aGUgY2FtZXJhLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2hvdyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIElmIHRydWUsIHNob3cgY2FtZXJhIG9uIGltbWVkaWF0ZXBhcmVudCB2aWRlb3ZpZXcuICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGljdHVyZXF1YWxpdHkiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIENhbWVyYSBwaWN0dXJlIHF1YWxpdHk6IGEgdmFsdWUgYmV0d2VlbiAwIGFuZCAxLCB3aGVyZSAxCisgICAgICAgICAgICAgIHJlcHJlc2VudHMgdGhlIGhpZ2hlc3QgcXVhbGl0eSAobm8gY29tcHJlc3Npb24pLiBXaGVuCisgICAgICAgICAgICAgIDAgaXMgcGFzc2VkLCB0aGlzIGluZGljYXRlcyB0byB1c2UgaGlnaGVzdCBxdWFsaXR5IHRoYXQKKyAgICAgICAgICAgICAgZml0cyBpbnRvIHRoZSBhdmFpbGFibGUgYmFuZHdpZHRoIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJoZWlnaHQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBoZWlnaHQgKHJlc29sdXRpb24pIHRoYXQgd2lsbCBiZSBjYXB0dXJlZCBieSB0aGUgY2FtZXJhLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZnBzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgbnVtYmVyIG9mIGZyYW1lcyBwZXIgc2Vjb25kIHRoYXQgd2lsbCBiZSBjYXB0dXJlZCAKKyAgICAgICAgICAgICAgYnkgdGhlIGNhbWVyYS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZhdm9yc2l6ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIE9mdGVuIHNldmVyYWwgY2FwdHVyZSBtb2RlcyBhcmUgYXZhaWxhYmxlIHBlciBjYW1lcmEgZGV2aWNlLgorICAgICAgICAgICAgICBUaGVzZSBtb2RlcyB3aWxsIGFsbG93IGNhcHR1cmluZyBhdCBhIHNwZWNpZmljIHNpemUgKHdpZHRoL2hlaWdodCkKKyAgICAgICAgICAgICAgYW5kIGZyYW1lcmF0ZS4gIElmIHlvdSBzcGVjaWZ5IGJvdGggZnBzIGFuZCB3aWR0aCBhbmQgaGVpZ2h0IGZvcgorICAgICAgICAgICAgICB0aGlzIGNhbWVyYSwgdGhpcyBhdHRyaWJ1dGUgd2lsbCBjb250cm9sIHdoaWNoIGNhcHR1cmluZyBtb2RlCisgICAgICAgICAgICAgIGZvciB0aGUgY2FtZXJhIGRldmljZSB3aWxsIGJlIHVzZWQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJiYW5kd2lkdGgiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMTYzODQiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBDYW1lcmEgYmFuZHdpZHRoIChpbiBieXRlcyBwZXIgc2Vjb25kKS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0idG9nZ2xldGV4dCIgdHlwZT0ibHp4OnRvZ2dsZXRleHQiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRvZ2dsZXRleHQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGV4dCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZWRpdGluZyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0idGlja21hcmtsYWJlbCIgdHlwZT0ibHp4OnRpY2ttYXJrbGFiZWwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBAa2V5d29yZCBwcml2YXRlIFJlcHJlc2VudHMgdGhlIHRpY2ttYXJrIHRleHQgd2hpY2ggYXBwZWFycyBvbiBhIGNvbXB1dGVyaXplZCBub3RlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRpY2ttYXJrbGFiZWwiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpsYWJlbCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN0eWxlU2V0IiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBBdHRyaWJ1dGUgdG8gaGFuZGxlIHN0eWxlIHNldCBvcHRpbWl6YXRpb24KKyAgICAgICAgQGtleXdvcmQgcHJpdmF0ZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJwaG90byIgdHlwZT0ibHp4OnBob3RvIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJwaG90byIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImRhdGFtYXJrZXIiIHR5cGU9Imx6eDpkYXRhbWFya2VyIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisKKyAgICAgIGRhdGFtYXJrZXIgZm9yIHRoZSBjaGFydAorICAgICAgQGFjY2VzcyBwdWJsaWMKKyAgICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImRhdGFtYXJrZXIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpkcmF3dmlldyI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iY29sb3JwaWNrZXIiIHR5cGU9Imx6eDpjb2xvcnBpY2tlciIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iY29sb3JwaWNrZXIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp3aW5kb3ciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWxlY3RlZENvbG9yIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIweDAwMDAwMCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYmFzZXNsaWRlcnRyYWNrIiB0eXBlPSJseng6YmFzZXNsaWRlcnRyYWNrIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQmFzZXNsaWRlcnRyYWNrIGV4cGVjdHMgdG8gYmUgd2l0aGluIGEgYmFzZXNsaWRlciAob3IgaXRzCisgICAgICAgICAgc3ViY2xhc3MpLiBJbiBvdGhlciB3b3JkcywgaXRzICJjbGFzc3Jvb3QiIHNob3VsZCBiZSBhIHNsaWRlci4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYmFzZXNsaWRlcnRyYWNrIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iY29sb3Jwb3QiIHR5cGU9Imx6eDpjb2xvcnBvdCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCisgICAgICBAdG9waWMgSW5jdWJhdG9yCisgICAgICBAc3VidG9waWMgQ29tcG9uZW50cworICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJjb2xvcnBvdCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJteWNvbG9yIiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9IiMwMDAwMDAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKworICAgICAgQHRvcGljIEluY3ViYXRvcgorICAgICAgQHN1YnRvcGljIENvbXBvbmVudHMKKyAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imxpc3RlbmVyIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InByZSIgdHlwZT0ibHp4OnByZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEhUTUwgc3BlY2lmaWMgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0icHJlIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpncm91cCByZWY9Imx6eDp0b3BMZXZlbEVsZW1lbnRzIiAvPgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0id3JhcHBpbmdsYXlvdXQiIHR5cGU9Imx6eDp3cmFwcGluZ2xheW91dCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0id3JhcHBpbmdsYXlvdXQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpsYXlvdXQiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ5c3BhY2luZyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIke3RoaXMuc3BhY2luZ30iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBBIHBpeGVsIGFtb3VudCB0byB1c2UgYmV0d2VlbiB0aGUgdmlld3MgY29udHJvbGxlZCBieSB0aGUgbGF5b3V0IGluCisgICAgICAgICAgdGhlIHkgYXhpcy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InlpbnNldCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQSBwaXhlbCBhbW91bnQgdG8gb2Zmc2V0IHRoZSBmaXJzdCB2aWV3IGNvbnRyb2xsZWQgYnkgdGhlIGxheW91dCBpbiB5CisgICAgICAgICAgYXhpcyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ieHNwYWNpbmciIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJHt0aGlzLnNwYWNpbmd9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQSBwaXhlbCBhbW91bnQgdG8gdXNlIGJldHdlZW4gdGhlIHZpZXdzIGNvbnRyb2xsZWQgYnkgdGhlIGxheW91dCBpbgorICAgICAgICAgIHRoZSB4IGF4aXMuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ4aW5zZXQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEEgcGl4ZWwgYW1vdW50IHRvIG9mZnNldCB0aGUgZmlyc3QgdmlldyBjb250cm9sbGVkIGJ5IHRoZSBsYXlvdXQgaW4geAorICAgICAgICAgIGF4aXMgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNwYWNpbmciIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEEgcGl4ZWwgYW1vdW50IHRvIHVzZSBiZXR3ZWVuIHRoZSB2aWV3cyBjb250cm9sbGVkIGJ5IHRoZSBsYXlvdXQgaW4KKyAgICAgICAgICBib3RoIGF4ZXMuIEJ5IGRlZmF1bHQsIGJvdGggeHNwYWNpbmcgYW5kIHlzcGFjaW5nIGFyZSBzZXQgdG8gdGhpcworICAgICAgICAgIHZhbHVlLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZHVyYXRpb24iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIElmIGdpdmVuLCBhIG51bWJlciBvZiBtaWxpc2Vjb25kcyB0byB1c2UgdG8gYW5pbWF0ZSB0aGUgdmlld3MgaW4gdG8KKyAgICAgICAgICBwbGFjZS48L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYXhpcyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJ4IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHByaW1hcnkgYXhpcyBmb3Igd3JhcHBpbmcuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImNoZWNrYm94IiB0eXBlPSJseng6Y2hlY2tib3giID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImNoZWNrYm94IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZWZvcm1pdGVtIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGV4dF95IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIke3RoaXMuY2IuaGVpZ2h0LzIgLSB0aGlzLl90aXRsZS5oZWlnaHQvMisxfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHRoZSB5IHBvc2l0aW9uIG9mIHRoZSB0ZXh0IGxhYmVsLiBkZWZhdWx0OiBjZW50ZXJlZCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJyZXNpemV2aWV3X3giIHR5cGU9Imx6eDpyZXNpemV2aWV3X3giID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InJlc2l6ZXZpZXdfeCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyaWdodCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWlkZGxlIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsZWZ0IiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Imh0bWwiIHR5cGU9Imx6eDpodG1sIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJodG1sIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRhcmdldCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIkb25jZXt0aGlzLnBhcmVudH0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBTZXRzIHRoZSB2aWV3IHRvIGxpc3RlbiB0byBmb3IgeC95L3dpZHRoL2hlaWdodCBjaGFuZ2UgZXZlbnRzLiAgRGVmYXVsdHMgdG8gdGhpcy5wYXJlbnQuCisgICAgICAgICAgQHR5cGUgTHpWaWV3CisgICAgICAgICAgQGFjY2VzcyBwdWJsaWMKKyAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3JjIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBTZXRzIHRoZSBVUkwgdGhlIGh0bWwgdGFnIHNob3VsZCBsb2FkCisgICAgICAgICAgQHR5cGUgU3RyaW5nCisgICAgICAgICAgQGFjY2VzcyBwdWJsaWMKKyAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2hvd25hdGl2ZWNvbnRleHRtZW51IiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIElmIHRydWUsIHNob3cgbmF0aXZlIGNvbnRleHQgbWVudXMgaW4gdGhlIGlmcmFtZS4gIE90aGVyd2lzZSwgc2hvdyBPcGVuTGFzemxvIGNvbnRleHQgbWVudXMuICBOb3RlIHRoYXQgdGhpcyBvbmx5IHdvcmtzIGluIERIVE1MIGJlY2F1c2UgaXQncyBub3QgcG9zc2libGUgdG8gcHJvZ3JhbWF0aWNhbGx5IGRpc3BsYXkgYSBjb250ZXh0IG1lbnUgaW4gRmxhc2guCisgICAgICAgICAgQHR5cGUgQm9vbGVhbgorICAgICAgICAgIEBhY2Nlc3MgcHVibGljCisgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNjcm9sbGJhcnMiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSWYgdHJ1ZSwgdGhlIGh0bWwgdGFnIHdpbGwgaGF2ZSBzY3JvbGxiYXJzLgorICAgICAgICAgIEB0eXBlIEJvb2xlYW4KKyAgICAgICAgICBAYWNjZXNzIHB1YmxpYworICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJycGNtZXRob2RzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBDb250YWlucyBhIGxpc3Qgb2YgbWV0aG9kIG5hbWVzIGF2YWlsYWJsZSB0byBjYWxsIHdpdGggY2FsbFJQQygpLgorICAgICAgICAgIEB0eXBlIEFycmF5CisgICAgICAgICAgQGFjY2VzcyBwdWJsaWMKKyAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVhZHkiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJZiB0cnVlLCB0aGUgaHRtbCB0YWcgaXMgcmVhZHkgdG8gcmVjZWl2ZSBjb21tYW5kcworICAgICAgICAgIEB0eXBlIEJvb2xlYW4KKyAgICAgICAgICBAYWNjZXNzIHB1YmxpYworICAgICAgICAgIEBrZXl3b3JkcyByZWFkb25seQorICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbnRhcmdldCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25zcmMiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9ucmVhZHkiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1vdXNlZXZlbnRzIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIElmIHRydWUsIGF0dGVtcHQgdG8gbGlzdGVuIGZvciBtb3VzZSBldmVudHMgb24gdGhlIGlmcmFtZS4gIENyb3NzLWRvbWFpbiBzZWN1cml0eSByZXN0cmljdGlvbnMgYXBwbHksIHNvIGlmIHRoZSBjb250ZW50IGxvYWRlZCBpbiB0aGUgaWZyYW1lIGlzIGZyb20gYSBkaWZmZXJlbnQgZG9tYWluLCBtb3VzZSBldmVudHMgd29uJ3QgYmUgc2VudC4KKyAgICAgICAgICBAdHlwZSBCb29sZWFuCisgICAgICAgICAgQGFjY2VzcyBwdWJsaWMKKyAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWluaW11bXdpZHRoIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIG1pbmltdW0gd2lkdGggb2YgdGhlIGlmcmFtZTogZW1iZWRkZWQgc3dmcyB3b24ndCBsb2FkIHdpdGggYSBzaXplIGxlc3MgdGhhbiAxCisgICAgICAgICAgQHR5cGUgTnVtYmVyCisgICAgICAgICAgQGFjY2VzcyBwdWJsaWMKKyAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWluaW11bWhlaWdodCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBtaW5pbXVtIGhlaWdodCBvZiB0aGUgaWZyYW1lOiBlbWJlZGRlZCBzd2ZzIHdvbid0IGxvYWQgd2l0aCBhIHNpemUgbGVzcyB0aGFuIDEKKyAgICAgICAgICBAdHlwZSBOdW1iZXIKKyAgICAgICAgICBAYWNjZXNzIHB1YmxpYworICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsb2FkaW5nIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJZiB0cnVlLCB0aGUgaHRtbCB0YWcgaXMgY3VycmVudGx5IGxvYWRpbmcKKyAgICAgICAgICBAdHlwZSBCb29sZWFuCisgICAgICAgICAgQGFjY2VzcyBwdWJsaWMKKyAgICAgICAgICBAa2V5d29yZHMgcmVhZG9ubHkKKyAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaWZyYW1laWQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imh0bWwiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIEhUTUwgdGhhdCB0aGUgaWZyYW1lIHN0YXJ0cyBvdXQgY29udGFpbmluZy4KKyAgICAgICAgICBAdHlwZSBTdHJpbmcKKyAgICAgICAgICBAYWNjZXNzIHB1YmxpYworICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJoaXN0b3J5IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9InRydWUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJZiB0cnVlLCB0aGUgaHRtbCB0YWcgd2lsbCBzZXQgYnJvd3NlciBoaXN0b3J5LgorICAgICAgICAgIEB0eXBlIEJvb2xlYW4KKyAgICAgICAgICBAYWNjZXNzIHB1YmxpYworICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmcmFtZW5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgU2V0cyB0aGUgbmFtZS90YXJnZXQgb2YgdGhlIGh0bWwgaWZyYW1lLgorICAgICAgICAgIEB0eXBlIFN0cmluZworICAgICAgICAgIEBhY2Nlc3MgcHVibGljCisgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZnJhbWV0aW1lciIgdHlwZT0ibHp4OmZyYW1ldGltZXIiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImZyYW1ldGltZXIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZnBzIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGVsdGEiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InJlc2l6ZXZpZXdfeSIgdHlwZT0ibHp4OnJlc2l6ZXZpZXdfeSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0icmVzaXpldmlld195IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRvcCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWlkZGxlIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJib3R0b20iIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYmFzZWxpc3QiIHR5cGU9Imx6eDpiYXNlbGlzdCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYmFzZWxpc3QiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNlZm9ybWl0ZW0iPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0b2dnbGVzZWxlY3RlZCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFdoZW4gdHJ1ZSwgdGhlIGZpcnN0IGNsaWNrIG9uIGEgbGlzdCBpdGVtIHNlbGVjdHMgaXQgYW5kIHRoZQorICAgICAgICAgICAgICBzZWNvbmQgY2xpY2sgZGVzZWxlY3RzIGl0LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25zZWxlY3QiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoaXMgZXZlbnQgaXMgdHJpZ2dlcmVkIHdoZW5ldmVyIHRoZSB1c2VyIG1ha2VzIGEgc2VsZWN0aW9uIGl0IG1heQorICAgICAgICAgICAgICB1c2VkIGFzIGEgc2NyaXB0IGluIHRoZSB0YWcgb3IgYXMgYW4gZXZlbnQgbWV0aG9kLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25pdGVtY2xhc3NuYW1lIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGlzIGV2ZW50IGlzIHRyaWdnZXJlZCB3aGVuZXZlciB0aGUgaXRlbWNsYXNzbmFtZSBhdHRyaWJ1dGUgCisgICAgICAgICAgICAgIGNoYW5nZXMuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtdWx0aXNlbGVjdCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIElmIG11bHRpc2VsZWN0IGlzIHRydWUsIG11bHRpcGxlIGl0ZW1zIG1heSBiZSBzZWxlY3RlZC4gV2hlbiB0aGUKKyAgICAgICAgICAgICAgc2hpZnQga2V5IGlzIGRvd24sIGEgcmFuZ2Ugb2YgaXRlbXMgaXMgc2VsZWN0ZWQuIFdoZW4gdGhlIGNvbnRyb2wKKyAgICAgICAgICAgICAga2V5IGlzIGRvd24sIGFueSBpdGVtIG1heSBiZSBhZGRlZCB0byB0aGUgc2VsZWN0aW9uLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXRlbWNsYXNzbmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgbmFtZSBvZiB0aGUgY2xhc3MgZm9yIG5ldyBpdGVtcyB0aGF0IHdpbGwgYmUgY3JlYXRlZCB3aXRoCisgICAgICAgICAgICAgIGFkZEl0ZW0oKS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRlZmF1bHRzZWxlY3Rpb24iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBpbmRleCBvZiB0aGUgZGVmYXVsdCBzZWxlY3RlZCBpdGVtLCBpZiBub25lIGlzIHByb3ZpZGVkIHZpYQorICAgICAgICAgICAgICB0aGUgc2VsZWN0ZWQ9InRydWUiIGF0dHJpYnV0ZSBvbiBhbiBpdGVtLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGF0YW9wdGlvbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJub25lIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgT25lIG9mICJsYXp5IiwgInJlc2l6ZSIsICJwb29saW5nIiwgIm5vbmUiLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJzZWxlY3Rpb25tYW5hZ2VyIiB0eXBlPSJseng6c2VsZWN0aW9ubWFuYWdlciIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCisgICAKKyAgICBAY29weXJpZ2h0IENvcHlyaWdodCAyMDAxLTIwMTAgTGFzemxvIFN5c3RlbXMsIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgICAgICAgICAgICAgICBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zLgorICAgCisgICAgQGFmZmVjdHMgbHpzZWxlY3Rpb25tYW5hZ2VyCisgICAgQGFjY2VzcyBwdWJsaWMKKyAgICBAdG9waWMgTEZDCisgICAgQHN1YnRvcGljIEhlbHBlcnMKKyAgICBAbHp4bmFtZSBzZWxlY3Rpb25tYW5hZ2VyCisgICAgQGRldm5vdGUgVE9ETzogWzIwMDgwOTMwIGFuYmFdIChMUFAtNjA4MCkgdW5jb21tZW50IHR5cGluZyBpbiBtZXRob2Qgc2lnbmF0dXJlcworICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJzZWxlY3Rpb25tYW5hZ2VyIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6bm9kZSI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRvZ2dsZSIgdHlwZT0ibHp4OmJvb2xlYW4iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKworICAgICAgICBAdHlwZSBCb29sZWFuCisgICAgICAgIEBsenh0eXBlIGJvb2xlYW4KKyAgICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWxlY3RlZEhhc2giIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCisgICAgICAgIEBhY2Nlc3MgcHJpdmF0ZQorICAgICAgICBAdHlwZSBPYmplY3QKKyAgICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWxlY3RlZCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisKKyAgICAgICAgQGFjY2VzcyBwcml2YXRlCisgICAgICAgIEB0eXBlIEFycmF5CisgICAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VsIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9InNldFNlbGVjdGVkIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIG5hbWUgb2YgdGhlIG1ldGhvZCB0byBjYWxsIG9uIGFuIG9iamVjdCB3aGVuIGFuIG9iamVjdCdzCisgICAgICAgIHNlbGVjdGVkbmVzcyBjaGFuZ2VzLiBUaGUgbWV0aG9kIGlzIGNhbGxlZCB3aXRoIGEgc2luZ2xlIEJvb2xlYW4KKyAgICAgICAgYXJndW1lbnQuIFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGlzIGZpZWxkIGlzICZsdDtjb2RlJmd0O3NldFNlbGVjdGVkJmx0Oy9jb2RlJmd0Oy4KKyAgICAgICAgKFRoaXMgZmVhdHVyZSBpcyBub3QgYXZhaWxhYmxlIGZvciAmbHQ7dGFnbmFtZSZndDtkYXRhc2VsZWN0aW9ubWFuYWdlciZsdDsvdGFnbmFtZSZndDsuKQorICAgICAgICBAdHlwZSBTdHJpbmcKKyAgICAgICAgQGx6eHR5cGUgc3RyaW5nCisgICAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFzdFJhbmdlU3RhcnQiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCisgICAgICAgIEB0eXBlICoKKyAgICAgICAgQGFjY2VzcyBwcml2YXRlCisgICAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJkYXRhbGFiZWwiIHR5cGU9Imx6eDpkYXRhbGFiZWwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKworICAgICAgUmVwcmVzZW50cyB0aGUgZGF0YSB0ZXh0IHdoaWNoIGFwcGVhcnMgb24gYSBjb21wdXRlcml6ZWQgbm90ZQorICAgICAgQGFjY2VzcyBwdWJsaWMKKyAgICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImRhdGFsYWJlbCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmxhYmVsIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWxPdXQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQGtleXdvcmQgcHJpdmF0ZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWxFbmFibGVkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEBrZXl3b3JkIHByaXZhdGUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iaGFuZGxlciIgdHlwZT0ibHp4OmhhbmRsZXIiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImhhbmRsZXIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmdyb3VwIHJlZj0ibHp4OnRvcExldmVsRWxlbWVudHMiIC8+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlZmVyZW5jZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJ0aGlzIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6c3RyaW5nIiB1c2U9InJlcXVpcmVkIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWV0aG9kIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhcmdzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ0b29sdGlwIiB0eXBlPSJseng6dG9vbHRpcCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idG9vbHRpcCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4Om5vZGUiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ5b2Zmc2V0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjI1IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisKKyAgICAgICAgVGhlIHZlcnRpY2FsIG9mZnNldCBvZiB0b29sdGlwIGZyb20gdGhlIG1vdXNlIHBvc2l0aW9uLgorICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0aXB2YWxpZ24iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iZGVmYXVsdCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCisgICAgICAgIFdoZXRoZXIgdGhlIHRvb2x0aXAgc2hvd3MgdXAgYWJvdmUgb3IgYmVsb3cgdGhlIG1vdXNlCisgICAgICAgIHBvc2l0aW9uLiBEZWZhdWx0IHdpbGwgcG9zaXRpb24gaGV1cmlzdGljYWxseSB0byBrZWVwCisgICAgICAgIHRoZSB0b29sdGlwIHZpc2libGUgb24gdGhlIGNhbnZhcy4KKworICAgICAgICBAbHp4dHlwZSBhYm92ZSB8IGJlbG93IHwgZGVmYXVsdAorICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0aXBhbGlnbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJsZWZ0IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisKKyAgICAgICAgV2hldGhlciB0aGUgdG9vbHRpcCBpcyBob3Jpem9udGFsbHkgYWxpZ25lZCBieSBpdCdzIGxlZnQgZWRnZQorICAgICAgICAoZGVmYXVsdCkgb3IgcmlnaHQgZWRnZSByZWxhdGl2ZSB0byB0aGUgbW91c2UgcG9zaXRpb24uCisKKyAgICAgICAgQGx6eHR5cGUgcmlnaHQgfCBsZWZ0CisgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRleHQiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCisgICAgICAgIFRoZSB0ZXh0IHRoYXQgd2lsbCBiZSBkaXNwbGF5ZWQgYnkgdGhlIHRvb2x0aXAuICBJZiB0aGUgdGV4dAorICAgICAgICBpcyAmbHQ7Y29kZSZndDtudWxsJmx0Oy9jb2RlJmd0OyBvciBlbXB0eSwgbm8gdG9vbHRpcCB3aWxsIGJlIGRpc3BsYXllZC4KKyAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ2aWV3c2xpc3QiIHR5cGU9Imx6eDp2aWV3c2xpc3QiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBBIHBvb2wgb2Ygb3JkZXJlZCB2aWV3ICAKKyAgICAgICAgIC0gQGtleXdvcmQgcHJpdmF0ZQorICAgICAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ2aWV3c2xpc3QiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpub2RlIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmxpc3QiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJG9uY2V7W119IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQSBwb29sIG9mIG9yZGVyZWQgdmlldyAgCisgICAgICAgICAtIEBrZXl3b3JkIHByaXZhdGUKKyAgICAgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZpZXdjbGFzcyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIkb25jZXtudWxsfSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBhcmVudHZpZXciIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJHtwYXJlbnR9IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJjb21ib2JveCIgdHlwZT0ibHp4OmNvbWJvYm94IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJjb21ib2JveCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmJhc2Vjb21ib2JveCI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZGF0ZXBpY2tlcmxpc3RpdGVtIiB0eXBlPSJseng6ZGF0ZXBpY2tlcmxpc3RpdGVtIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQGFjY2VzcyBwcml2YXRlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImRhdGVwaWNrZXJsaXN0aXRlbSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnRleHRsaXN0aXRlbSI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0icnRtcGNvbm5lY3Rpb24iIHR5cGU9Imx6eDpydG1wY29ubmVjdGlvbiIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0icnRtcGNvbm5lY3Rpb24iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3RhdHVzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImRpc2Nvbm5lY3RlZCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFN0cmluZyB0byBpbmRpY2F0ZSBjb25uZWN0aW9uIHN0YXR1cy4KKyAgICAgICAgICAgIEB0eXBlIHN0cmluZworICAgICAgICAgICAgQGFjY2VzcyBwdWJsaWMKKyAgICAgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN0YWdlIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgTnVtYmVyIHRvIGluZGljYXRlIHdoYXQgc3RhZ2Ugb2YgY29ubmVjdGlvbiB3ZSdyZSBpbjoKKyAgICAgICAgICAgIDA6IGRpc2Nvbm5lY3RlZCwgMTogY29ubmVjdGluZywgMjogY29ubmVjdGVkLgorICAgICAgICAgICAgQHR5cGUgTnVtYmVyCisgICAgICAgICAgICBAYWNjZXNzIHB1YmxpYworICAgICAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3JjIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEFwcGxpY2F0aW9uIHVybCwgZm9yIGV4YW1wbGUKKyAgICAgICAgICAgICJydG1wOi9hcHBuYW1lIiBvciAicnRtcDovL215c2VydmVyLmNvbS9teWFwcC8iLgorICAgICAgICAgICAgQHR5cGUgU3RyaW5nCisgICAgICAgICAgICBAYWNjZXNzIHByaXZhdGUKKyAgICAgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uY29ubmVjdCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgRXZlbnQgc2VudCB3aGVuIGNvbm5lY3Rpb24gZXN0YWJsaXNoZWQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvYmplY3RlbmNvZGluZyIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBBTUYgb2JqZWN0IGVuY29kaW5nIHRvIHVzZSBmb3IgdGhpcyBjb25uZWN0aW9uLCBlaXRoZXIgMCBvciAzLgorICAgICAgICAgICAgQHR5cGUgTnVtYmVyCisgICAgICAgICAgICBAa2V5d29yZHMgZmluYWwgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkZWJ1ZyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFR1cm4gb24gZm9yIHZlcmJvc2UgZGVidWdnZXIgb3V0cHV0LgorICAgICAgICAgICAgQHR5cGUgQm9vbGVhbgorICAgICAgICAgICAgQGFjY2VzcyBwdWJsaWMKKyAgICAgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbm5lY3Rpb250aW1lb3V0IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIzMDAwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgTnVtYmVyIG9mIG1pbGxpc2Vjb25kcyB0byB3YWl0IGZvciBjb25uZWN0aW9uIGF0IHNyYyBiZWZvcmUgCisgICAgICAgICAgICAgICAgdXNpbmcgYWx0c3JjIFVSTCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29ubmVjdGlvbnMiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEEgc2hhcmVkIGhhc2ggb2YgY29ubmVjdGlvbnMKKyAgICAgICAgICAgIEB0eXBlIE9iamVjdAorICAgICAgICAgICAgQGFjY2VzcyBwcml2YXRlCisgICAgICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb25uZWN0aW9ucGFyYW1zIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBDb25uZWN0aW9uIHBhcmFtZXRlcnMgdGhhdCB3aWxsIGJlIHNlbnQgdG8gdGhlIHNlcnZlciB3aGVuIE5ldENvbm5lY3Rpb24uY29ubmVjdCgpIGlzIGNhbGxlZAorICAgICAgICAgICAgQHR5cGUgRXhwcmVzc2lvbgorICAgICAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYXV0b2Nvbm5lY3QiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQ29ubmVjdCBhdXRvbWF0aWNhbGx5IGR1cmluZyBpbml0LiBJZiBmYWxzZSwgeW91IG5lZWQgdG8gZXhwbGljaXRseQorICAgICAgICAgICAgY2FsbCBjb25uZWN0KCkuCisgICAgICAgICAgICBAdHlwZSBCb29sZWFuCisgICAgICAgICAgICBAYWNjZXNzIHB1YmxpYworICAgICAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWx0c3JjIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEFsdGVybmF0ZSBhcHBsaWNhdGlvbiB1cmwsIHVzZWQgaWYgdGhlIGNvbm5lY3Rpb24gZm9yIHNyYyAKKyAgICAgICAgICAgICAgICBmYWlscyBmb3IgZXhhbXBsZSA6ICJydG1wOi9hcHBuYW1lIiBvciAKKyAgICAgICAgICAgICAgICAicnRtcDovL215c2VydmVyLmNvbS9teWFwcC8iLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJyZXNpemVsYXlvdXQiIHR5cGU9Imx6eDpyZXNpemVsYXlvdXQiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InJlc2l6ZWxheW91dCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmxheW91dCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNwYWNpbmciIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEEgcGl4ZWwgYW1vdW50IHRvIHVzZSBiZXR3ZWVuIGVhY2ggdmlldyBpbiB0aGUgbGF5b3V0IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJheGlzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9InkiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgYXhpcyBpbiB3aGljaCB0aGlzIGxheW91dCBvcGVyYXRlcyBlaXRoZXIgJ3gnIG9yICd5Jy4gIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJhc2VkYXRhY29tYm9ib3hfaXRlbSIgdHlwZT0ibHp4OmJhc2VkYXRhY29tYm9ib3hfaXRlbSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIENsYXNzIHVzZWQgdG8gY3JlYXRlIGFuIGl0ZW0gaW4gYSBiYXNlZGF0YWNvbWJvYm94J3MgbGlzdC4KKyAgICAgICAgICBAa2V5d29yZHMgcHJpdmF0ZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJiYXNlZGF0YWNvbWJvYm94X2l0ZW0iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp0ZXh0bGlzdGl0ZW0iPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImdyZWVuc3R5bGUiIHR5cGU9Imx6eDpncmVlbnN0eWxlIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJncmVlbnN0eWxlIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6c3R5bGUiPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InRhYiIgdHlwZT0ibHp4OnRhYiIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idGFiIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZXRhYiI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBhZGRpbmciIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMjAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUZXh0IHBhZGRpbmcuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJhc2VjaGFydCIgdHlwZT0ibHp4OmJhc2VjaGFydCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBiYXNlIGNsYXNzIGZvciBub24tcGllIGNoYXJ0cy4gIENvbnRhaW5zIG1vc3Qgb2YgdGhlCisgICAgICAgIHNoYXJlZCBhdHRyaWJ1dGVzIGFuZCBlbGVtZW50cy4gIChPZiBiZXRhIHF1YWxpdHkuKSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJiYXNlY2hhcnQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iem9vbWNvbG9yIiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9IiNEREREREQiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgY29sb3Igb2YgdGhlIHpvb20gc2VsZWN0b3IuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ6b29tYWJsZSIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBXaGV0aGVyIGJhcnMgYXJlIHpvb21hYmxlIG9yIG5vdC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Inplcm93aWR0aCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFdpZHRoIG9mIHRoZSBsaW5lIGRyYXduIGF0IHplcm8uIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2dGlja3dpZHRoIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgV2lkdGggb2YgZHJhd24gdmVydGljYWwgdGljayBtYXJrcy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZ0aWNrbGVuZ3RoIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSI1IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgTGVuZ3RoIG9mIGRyYXduIHZlcnRpY2FsIHRpY2sgbWFya3MuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2dGlja2xhYmVsc2l6ZSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMTAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUZXh0IHNpemUgb2YgdmVydGljYWwgdGljayBsYWJlbHMuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2dGlja2xhYmVsIiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9IiRvbmNle251bGx9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQ29sb3Igb2YgdmVydGljYWwgdGljayBsYWJlbHMuICBJZiBub3Qgc3BlY2lmaWVkLCBubworICAgICAgICAgICAgbGFiZWxzIGFyZSBkcmF3bi4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZ0aWNrIiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9IiRvbmNle251bGx9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgV2hldGhlciB0byBkcmF3IHZlcnRpY2FsIHRpY2sgbWFya3MsIGFuZCBpZiBzbywKKyAgICAgICAgICAgIHdoYXQgY29sb3IuICBJZiBubyBjb2xvciBpcyBzcGVjaWZpZWQsIHRpY2tzIGFyZSBub3QgZHJhd24uCisgICAgICAgICAgICBUaGVzZSBhcmUgdGhlIHRpY2sgbWFya3MgdGhhdCBhcmUgZHJhd24gdmVydGljYWxseSwgYWxvbmcgdGhlCisgICAgICAgICAgICBib3R0b20gYXhpcy4gIE5vdGU6IEluIGJhcmNoYXJ0LCBzZXR0aW5nIGRyYXdheGlzIHRvIHkgY2hhbmdlcworICAgICAgICAgICAgb3ZlcmFsbCBjaGFydCBvcmllbnRhdGlvbiwgd2l0aCB0aGUgImJvdHRvbSIgb24gdGhlIGxlZnQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2Z3JpZHdpZHRoIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVmVydGljYWwgZ3JpZCBsaW5lIHRoaWNrbmVzcy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZncmlkc3BhY2luZyIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFZlcnRpY2FsIGdyaWQgbGluZSBzcGFjaW5nLiAgKFVuaXRzLCBub3QgcGl4ZWxzLiAgSW4KKyAgICAgICAgICAgIGJhcmNoYXJ0LCB0aGUgc3BhY2UgYmV0d2VlbiBvbmUgYmFyIGFuZCB0aGUgbmV4dCBpcworICAgICAgICAgICAgY29uc2lkZXJlZCBvbmUgdW5pdC4pIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2Z3JpZGxpbmVzIiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9IiRvbmNle251bGx9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQ29sb3Igb2YgdGhlIHZlcnRpY2FsIGdyaWQgbGluZXMuICBOb3RlOiBJbiBiYXJjaGFydCwKKyAgICAgICAgICAgIHZlcnRpY2FsIGF4aXMgaXMgY29uc2lkZXJlZCB0aGUgYXhpcyB0aGF0IHJ1bnMgcGFyYWxsZWwgdG8gdGhlCisgICAgICAgICAgICBvcmllbnRhdGlvbiBvZiB0aGUgY2hhcnQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2Z3JpZGJhbmRzIiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9IiRvbmNle251bGx9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVmVydGljYWwgZ3JpZCBiYW5kcy4gTm90ZTogSW4gYmFyY2hhcnQsIHZlcnRpY2FsIGF4aXMgaXMKKyAgICAgICAgICAgIGNvbnNpZGVyZWQgdGhlIGF4aXMgdGhhdCBydW5zIHBhcmFsbGVsIHRvIHRoZSBvcmllbnRhdGlvbiBvZgorICAgICAgICAgICAgdGhlIGNoYXJ0LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmJvcGFjaXR5IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIuNSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFZlcnRpY2FsIGdyaWQgYmFuZCBvcGFjaXR5LiAgTm90ZTogSW4gYmFyY2hhcnQsIHZlcnRpY2FsCisgICAgICAgICAgICBheGlzIGlzIGNvbnNpZGVyZWQgdGhlIGF4aXMgdGhhdCBydW5zIHBhcmFsbGVsIHRvIHRoZQorICAgICAgICAgICAgb3JpZW50YXRpb24gb2YgdGhlIGNoYXJ0LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmF4aXN3aWR0aCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFdpZHRoIG9mIGRyYXduIHZlcnRpY2FsIGF4aXMuIE5vdGU6IEluIGJhcmNoYXJ0LCB2ZXJ0aWNhbAorICAgICAgICAgICAgYXhpcyBpcyBjb25zaWRlcmVkIHRoZSBheGlzIHRoYXQgcnVucyBwYXJhbGxlbCB0byB0aGUKKyAgICAgICAgICAgIGJhcnMgaW4gdGhlIGNoYXJ0LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmF4aXMiIHR5cGU9Imx6eDpjb2xvciIgZGVmYXVsdD0iJG9uY2V7bnVsbH0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBXaGV0aGVyIHRvIGRyYXcgYSBsaW5lIGFsb25nIHRoZSB2ZXJ0aWNhbCBheGlzLCBhbmQgaWYgc28sCisgICAgICAgICAgICB3aGF0IGNvbG9yLiAgKElmIG5vIGNvbG9yIGlzIHNwZWNpZmllZCwgYXhpcyBpcyBub3QgZHJhd24uKQorICAgICAgICAgICAgTm90ZTogSW4gYmFyY2hhcnQsIHZlcnRpY2FsIGF4aXMgaXMgY29uc2lkZXJlZCB0aGUgYXhpcworICAgICAgICAgICAgdGhhdCBydW5zIHBhcmFsbGVsIHRvIHRoZSBiYXJzIGluIHRoZSBjaGFydC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBsb3R5IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgUGxvdCBhcmVhJ3MgeSBwb3NpdGlvbiwgcmVsYXRpdmUgdG8gY2hhcnQgYXMgYSB3aG9sZS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBsb3R4IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgUGxvdCBhcmVhJ3MgeCBwb3NpdGlvbiwgcmVsYXRpdmUgdG8gY2hhcnQgYXMgYSB3aG9sZS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBsb3R3aWR0aCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iJHt0aGlzLndpZHRoIC0gMX0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBXaWR0aCBvZiBwbG90dGluZyBhcmVhLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGxvdGhlaWdodCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iJHt0aGlzLmhlaWdodCAtIDF9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSGVpZ2h0IG9mIHBsb3R0aW5nIGFyZWEuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwYW5lc2xpZGVyIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHBvc2l0aW9uIG9mIHRoZSB2aWV3IGluIHdoaWNoIHRoZSBkYXRhIGlzIGRyYXduIGluCisgICAgICAgICAgICByZWxhdGlvbiB0byBpdHMgcGFyZW50IGNsaXBwaW5nIGZyYW1lLiAgQWxsb3dzIGRhdGEgdG8gYmUKKyAgICAgICAgICAgIGRyYWdnZWQgb3Igc2xpZCBhcm91bmQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtaW5pbXVtIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgR3JpZCdzIG1pbmltdW0gZGlzcGxheWVkIHZhbHVlLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWF4aW11bSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMTAwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgR3JpZCdzIG1heGltdW0gZGlzcGxheWVkIHZhbHVlLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaHRpY2t3aWR0aCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFdpZHRoIG9mIGRyYXduIGhvcml6b250YWwgdGljayBtYXJrcy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imh0aWNrbGVuZ3RoIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSI1IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgTGVuZ3RoIG9mIGRyYXduIGhvcml6b250YWwgdGljayBtYXJrcy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imh0aWNrbGFiZWxzaXplIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRleHQgc2l6ZSBvZiBob3Jpem9udGFsIHRpY2sgbGFiZWxzLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaHRpY2tsYWJlbCIgdHlwZT0ibHp4OmNvbG9yIiBkZWZhdWx0PSIkb25jZXtudWxsfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIENvbG9yIG9mIGhvcml6b250YWwgdGljayBsYWJlbHMuICBJZiBub3Qgc3BlY2lmaWVkLCBubworICAgICAgICAgICAgbGFiZWxzIGFyZSBkcmF3bi4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imh0aWNrIiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9IiRvbmNle251bGx9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgV2hldGhlciB0byBkcmF3IGhvcml6b250YWwgdGljayBtYXJrcywgYW5kIGlmIHNvLAorICAgICAgICAgICAgd2hhdCBjb2xvci4gIElmIG5vIGNvbG9yIGlzIHNwZWNpZmllZCwgdGlja3MgYXJlIG5vdAorICAgICAgICAgICAgZHJhd24uICBUaGVzZSBhcmUgdGhlIHRpY2sgbWFya3MgdGhhdCBhcmUgZHJhd24gaG9yaXpvbnRhbGx5LAorICAgICAgICAgICAgYWxvbmcgdGhlIHNpZGUgYXhpcy4gIE5vdGU6IEluIGJhcmNoYXJ0LCBzZXR0aW5nIGRyYXdheGlzIHRvIHkKKyAgICAgICAgICAgIGNoYW5nZXMgb3ZlcmFsbCBjaGFydCBvcmllbnRhdGlvbiwgd2l0aCB0aGUgImJvdHRvbSIgb24gdGhlCisgICAgICAgICAgICBsZWZ0LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaGdyaWR3aWR0aCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEhvcml6b250YWwgZ3JpZCBsaW5lIHRoaWNrbmVzcy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imhncmlkc3BhY2luZyIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEhvcml6b250YWwgZ3JpZCBsaW5lIHNwYWNpbmcuICAoVW5pdHMsIG5vdCBwaXhlbHMuKSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaGdyaWRsaW5lcyIgdHlwZT0ibHp4OmNvbG9yIiBkZWZhdWx0PSIkb25jZXtudWxsfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIENvbG9yIG9mIHRoZSBob3Jpem9udGFsIGdyaWQgbGluZXMuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJoZ3JpZGJhbmRzIiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9IiRvbmNle251bGx9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSG9yaXpvbnRhbCBncmlkIGJhbmRzLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaGJvcGFjaXR5IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSG9yaXpvbnRhbCBncmlkIGJhbmQgb3BhY2l0eS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImhheGlzd2lkdGgiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjMiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBXaWR0aCBvZiBkcmF3biBob3Jpem9udGFsIGF4aXMuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJoYXhpcyIgdHlwZT0ibHp4OmNvbG9yIiBkZWZhdWx0PSIkb25jZXtudWxsfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFdoZXRoZXIgdG8gZHJhdyB0aGUgaG9yaXpvbnRhbCBheGlzLCBhbmQgd2hhdCBjb2xvci4KKyAgICAgICAgICAgIChJZiBubyBjb2xvciBpcyBzcGVjaWZpZWQsIGF4aXMgaXMgbm90IGRyYXduLikgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRyYXd6ZXJvIiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9IiRvbmNle251bGx9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgV2hldGhlciB0byBkcmF3IGEgbGluZSBhdCB6ZXJvLCBhbmQgd2hhdCBjb2xvci4gIElmCisgICAgICAgICAgICBubyBjb2xvciBpcyBzcGVjaWZpZWQsIGxpbmUgaXMgbm90IGRyYXduLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZHJhd2F4aXMiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ieCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBkaXJlY3Rpb24gaW4gd2hpY2ggdGhlIGRhdGEgd2lsbCBiZSBkcmF3bi4KKyAgICAgICAgICAgIEFjY2VwdHMgdmFsdWVzIHggYW5kIHkuICAoeCAtIHZlcnRpY2FsIGJhcnMgZHJhd24KKyAgICAgICAgICAgIGZyb20gbGVmdCB0byByaWdodC4gIHkgLSBob3Jpem9udGFsIGJhcnMgZHJhd24KKyAgICAgICAgICAgIHRvcCB0byBib3R0b20uKSAgT25seSBhcHBsaWNhYmxlIHRvIGJhcmNoYXJ0LCBidXQKKyAgICAgICAgICAgIG5lY2Vzc2FyeSBmb3IgY2VydGFpbiBzaGFyZWQgZWxlbWVudHMuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkcmFnZ2FibGUiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFdoZXRoZXIgYmFycyBhcmUgYWJsZSB0byBiZSBkcmFnZ2VkIG9yIG5vdC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJvcmRlcndpZHRoIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgV2lkdGggb2YgdGhlIHBsb3QgYXJlYSdzIGJvcmRlci4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJvcmRlciIgdHlwZT0ibHp4OmNvbG9yIiBkZWZhdWx0PSIkb25jZXtudWxsfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFdoZXRoZXIgdGhlcmUncyBhIGJvcmRlciBhcm91bmQgdGhlIHBsb3QgYXJlYSwgYW5kIGlmIHNvLAorICAgICAgICAgICAgd2hhdCBjb2xvci4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJncmVzb3VyY2UiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSWYgZGVzaXJlZCwgYSByZXNvdXJjZSBjYW4gYmUgdXNlZCBpbiB0aGUgYmFja2dyb3VuZC4KKyAgICAgICAgICAgIElmIHNwZWNpZmllZCwgdGhpcyB2aWV3IHdpbGwgYXBwZWFyIGJlaGluZCB0aGUgY2hhcnQsCisgICAgICAgICAgICB3aXRoIGV2ZXJ5dGhpbmcgZHJhd24gb24gdG9wIG9mIGl0LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYmVsb3d6ZXJvb3BhY2l0eSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iLjIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBPcGFjaXR5IGZvciBhcmVhIGJlbG93IHplcm8uICBEZWZhdWx0cyB0byBhIGxvdyBudW1iZXIKKyAgICAgICAgICAgIGZvciBhIGhhenksIHRyYW5zbHVjZW50IGVmZmVjdC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJlbG93emVybyIgdHlwZT0ibHp4OmNvbG9yIiBkZWZhdWx0PSIkb25jZXtudWxsfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFdoZXRoZXIgdG8gZmlsbCB0aGUgYXJlYSBiZWxvdyB6ZXJvLCBhbmQgd2hhdCBjb2xvci4KKyAgICAgICAgICAgIChXaWxsIG5vdCBiZSBkcmF3biBpZiBubyBjb2xvciBzcGVjaWZpZWQuKSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYmFzZWxhYmVscyIgdHlwZT0ibHp4OmNvbG9yIiBkZWZhdWx0PSIkb25jZXtudWxsfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFdoZXRoZXIgdG8gbGFiZWwgdGhlIGluZGl2aWR1YWwgYmFyIHRpY2tzLCBhbmQgaWYgc28sCisgICAgICAgICAgICB3aGF0IGNvbG9yLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYmFydGlja3MiIHR5cGU9Imx6eDpjb2xvciIgZGVmYXVsdD0iJG9uY2V7bnVsbH0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBXaGV0aGVyIHRvIGhhdmUgdGlja3MgZm9yIGluZGl2aWR1YWwgYmFycywgYW5kIGlmIHNvLAorICAgICAgICAgICAgd2hhdCBjb2xvci4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFsdHNsaWRlciIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBzbGlkZXIgZm9yIHRoZSBhbHRlcm5hdGUgZGlyZWN0aW9uIHRvIHBhbmVzbGlkZXIuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbHRtaW5pbXVtIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgR3JpZCdzIG1heGltdW0gZm9yIHdpZHRoLiAgKElmIGxpbmVzIGFyZSBkcmF3bgorICAgICAgICAgICAgdmVydGljYWxseSwgdGhpcyBjb250cm9scyBob3Jpem9udGFsIHZpc2libGUgYXJlYS4gIElmIGxpbmVzIGFyZSBkcmF3bgorICAgICAgICAgICAgaG9yaXpvbnRhbGx5LCB0aGlzIGNvbnRyb2xzIHZlcnRpY2FsIHZpc2libGUgYXJlYS4gIENoYW5naW5nIHRoZXNlCisgICAgICAgICAgICB3aWxsIGFsbG93IHRoZSB1c2VyIHRvIHpvb20gaW4gYW5kIG91dCBvbiBhIHBhcnRpY3VsYXIgYXJlYSwgYW5kCisgICAgICAgICAgICB3aWxsIHNjYWxlIGRhdGEgYWNjb3JkaW5nbHkuKSAgTm90ZTogTm90IHNldHRhYmxlIGluIGJhcmNoYXJ0LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWx0bWF4aW11bSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMTAwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgR3JpZCdzIG1pbmltdW0gZm9yIHdpZHRoLiAgKElmIGxpbmVzIGFyZSBkcmF3bgorICAgICAgICAgICAgdmVydGljYWxseSwgdGhpcyBjb250cm9scyBob3Jpem9udGFsIHZpc2libGUgYXJlYS4gIElmIGxpbmVzIGFyZSBkcmF3bgorICAgICAgICAgICAgaG9yaXpvbnRhbGx5LCB0aGlzIGNvbnRyb2xzIHZlcnRpY2FsIHZpc2libGUgYXJlYS4gIENoYW5naW5nIHRoZXNlCisgICAgICAgICAgICB3aWxsIGFsbG93IHRoZSB1c2VyIHRvIHpvb20gaW4gYW5kIG91dCBvbiBhIHBhcnRpY3VsYXIgYXJlYSwgYW5kCisgICAgICAgICAgICB3aWxsIHNjYWxlIGRhdGEgYWNjb3JkaW5nbHkuKSAgTm90ZTogTm90IHNldHRhYmxlIGluIGJhcmNoYXJ0LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWRqdXN0dG9kYXRhIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBXaGV0aGVyIHRvIGFkanVzdCB0aGUgZ3JhcGggdG8gZGF0YS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibWVtb3J5bW9uaXRvcl9tb2RlbCIgdHlwZT0ibHp4Om1lbW9yeW1vbml0b3JfbW9kZWwiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Im1lbW9yeW1vbml0b3JfbW9kZWwiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpub2RlIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2NhbGUiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjEgLyAxMDI0IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWF4IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY3VycmVudCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iLTEiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InJvdW5kcmVjdGJ1dHRvbiIgdHlwZT0ibHp4OnJvdW5kcmVjdGJ1dHRvbiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIAorQSBjbGFzcyBmb3IgbWFraW5nIG5pY2UtbG9va2luZywgc3R5bGVhYmxlIGJ1dHRvbnMgd2l0aCBncmFkaWVudHMsIHdpdGhvdXQgYW55IGFydCBhc3NldHMuCisKK1NlZSB0ZXN0L3Rlc3Qtcm91bmRyZWN0YnV0dG9uLmx6eCBmb3Igc2V2ZXJhbCBleGFtcGxlcyBvZiBob3cgdG8gdXNlIHRoaXMgY29tcG9uZW50LiAKKworVGhlIGNvbXBvbmVudCBhdHRyaWJ1dGVzIGFyZSBvbmx5IHVzZWQgZm9yIGluaXRpYWxpemF0aW9uLiBUaGV5IGFyZSBub3QgbGl2ZSBjb25zdHJhaW50cy4KK0N1cnJlbnRseSB0aGUgYmVzdCB3YXkgdG8gY2hhbmdlIHRoZW0gYXQgcnVudGltZSBpcyB0byBhcHBseSBhICZhbXA7bHQ7c3R5bGUmYW1wO2d0Oy4gCis8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJyb3VuZHJlY3RidXR0b24iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNlY29tcG9uZW50Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idXBTdG9wQ29sb3IiIHR5cGU9Imx6eDpjb2xvciIgZGVmYXVsdD0iMHg5OTk5OTkiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1cFN0YXJ0Q29sb3IiIHR5cGU9Imx6eDpjb2xvciIgZGVmYXVsdD0iMHhjY2NjY2MiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdmVyU3RvcENvbG9yIiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9IjB4Nzc3Nzc3IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib3ZlclN0YXJ0Q29sb3IiIHR5cGU9Imx6eDpjb2xvciIgZGVmYXVsdD0iMHg5OTk5OTkiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkb3duU3RvcENvbG9yIiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9IjB4Q0NDQ0NDIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZG93blN0YXJ0Q29sb3IiIHR5cGU9Imx6eDpjb2xvciIgZGVmYXVsdD0iMHhGRkZGRkYiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyAKK0EgY2xhc3MgZm9yIG1ha2luZyBuaWNlLWxvb2tpbmcsIHN0eWxlYWJsZSBidXR0b25zIHdpdGggZ3JhZGllbnRzLCB3aXRob3V0IGFueSBhcnQgYXNzZXRzLgorCitTZWUgdGVzdC90ZXN0LXJvdW5kcmVjdGJ1dHRvbi5senggZm9yIHNldmVyYWwgZXhhbXBsZXMgb2YgaG93IHRvIHVzZSB0aGlzIGNvbXBvbmVudC4gCisKK1RoZSBjb21wb25lbnQgYXR0cmlidXRlcyBhcmUgb25seSB1c2VkIGZvciBpbml0aWFsaXphdGlvbi4gVGhleSBhcmUgbm90IGxpdmUgY29uc3RyYWludHMuCitDdXJyZW50bHkgdGhlIGJlc3Qgd2F5IHRvIGNoYW5nZSB0aGVtIGF0IHJ1bnRpbWUgaXMgdG8gYXBwbHkgYSAmYW1wO2x0O3N0eWxlJmFtcDtndDsuIAorPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJveFNoYWRvd1kiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJveFNoYWRvd1giIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJveFNoYWRvd0NvbG9yIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjB4YjNiM2IzIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyV2lkdGgiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJvcmRlclJhZGl1cyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIxNSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJvcmRlckNvbG9yIiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9IjB4OTk5OTk5IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYmFja2dyb3VuZFN0b3BDb2xvciIgdHlwZT0ibHp4OmNvbG9yIiBkZWZhdWx0PSIkb25jZXtwYXJlbnQudXBTdG9wQ29sb3J9IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYmFja2dyb3VuZFN0YXJ0Q29sb3IiIHR5cGU9Imx6eDpjb2xvciIgZGVmYXVsdD0iJG9uY2V7cGFyZW50LnVwU3RhcnRDb2xvcn0iID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Ikx6VGV4dEZvcm1hdCIgdHlwZT0ibHp4Okx6VGV4dEZvcm1hdCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCisgICAgTHpUZXh0Rm9ybWF0IGlzIGRlcHJlY2F0ZWQuICBVc2UgJ3RleHRmb3JtYXQnIGluc3RlYWQuCisgICAgQGtleXdvcmQgZGVwcmVjYXRlZAorPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iTHpUZXh0Rm9ybWF0IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dGV4dGZvcm1hdCI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibXl3ZWVrIiB0eXBlPSJseng6bXl3ZWVrIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJteXdlZWsiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNlZGF0ZXBpY2tlcndlZWsiPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InJwYyIgdHlwZT0ibHp4OnJwYyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0icnBjIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6bm9kZSI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlY3VyZXBvcnQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgcG9ydCB0byB1c2UgZm9yIHRoZSBzZWN1cmUgc29ja2V0IGJldHdlZW4gdGhlIGNsaWVudCBhbmQgdGhlCisgICAgICAgICAgICAgIExQUy4gSWYgc2VjdXJlIGlzIGZhbHNlLCB0aGlzIHZhbHVlIGlzIGlnbm9yZWQuICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VjdXJlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBNYWtlIGNvbm5lY3Rpb24gc2VjdXJlIGJldHdlZW4gY2xpZW50IGFuZCB0aGUgTFBTIHNlY3VyZQorICAgICAgICAgICAgIChIVFRQUykuIERlZmF1bHQgaXMgZmFsc2UuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwcm94eWluZm8iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InByb3h5IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgcmVtb3RlIHByb3h5IG9iamVjdC4gUHJveHkgaXMgc2V0IGFmdGVyIHRoZSBycGMgb2JqZWN0CisgICAgICAgICAgICAgIGxvYWRzLiBQcm94eSBjb250YWlucyBjbGllbnQtc2lkZSBmdW5jdGlvbiBzdHVicyB0byByZW1vdGUKKyAgICAgICAgICAgICAgbWV0aG9kcy4gRWFjaCBtZXRob2QgdGFrZXMgYW4gYXJyYXkgb2YgYXJndW1lbnRzIGFuZCBhIGRlbGVnYXRlCisgICAgICAgICAgICAgIGxpa2U6CisKKyAgICAgICAgICAgICAgICBteXJwYy5wcm94eS5yZW1vdGVGdW5jKCBbIHAxLCBwMiwgLi4uLCBwTiBdLCBkZWxlZ2F0ZSApOworCisgICAgICAgICAgICAgIFJlbW90ZSBtZXRob2RzIHdpdGggbm8gYXJndW1lbnRzIGFyZSBwYXNzZWQgaW4gYW4gZW1wdHkgYXJyYXkKKyAgICAgICAgICAgICAgbGlrZToKKworICAgICAgICAgICAgICAgIG15cnBjLnByb3h5Lm90aGVyUmVtb3RlRnVuYyggW10sIGRlbGVnYXRlICk7CisKKyAgICAgICAgICAgICAgVGhlIGRlbGVnYXRlIGlzIHVzZWQgdG8gaGFuZGxlIHRoZSByZXR1cm4gdmFsdWUgc2luY2UgUlBDIGNhbGxzCisgICAgICAgICAgICAgIGFyZSBhc3luY2hyb25vdXMuCisKKyAgICAgICAgICAgICAgQGtleXdvcmRzIHJlYWRvbmx5IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbnVubG9hZCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhpcyBldmVudCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgcmVtb3RlIG9iamVjdCBpcyB1bmxvYWRlZC4KKyAgICAgICAgICAgICAgQGFjY2VzcyBwdWJsaWMKKyAgICAgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9ubG9hZCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhpcyBldmVudCBpcyB0cmlnZ2VyZWQgd2hlbiB0aGUgcmVtb3RlIG9iamVjdCBpcyBsb2FkZWQuCisgICAgICAgICAgICAgIEBhY2Nlc3MgcHVibGljIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmVycm9yIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGlzIGV2ZW50IGlzIHRyaWdnZXJlZCB3aGVuIGFuIGVycm9yIG9yIHRpbWVvdXQgb2NjdXJzIGFzc29jaWF0ZWQKKyAgICAgICAgICAgICAgd2l0aCBnZXR0aW5nIHRoaXMgb2JqZWN0IG9yIGNhbGxpbmcgb25lIG9mIGl0cyByZW1vdGUgbWV0aG9kcy4gCisgICAgICAgICAgICAgIEBhY2Nlc3MgcHVibGljIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhdXRvbG9hZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBMb2FkIHJlbW90ZSBvYmplY3QgZHVyaW5nIGluaXQuIElmIGZhbHNlLCBjcmVhdGUgcmVtb3RlIG9iamVjdCBieQorICAgICAgICAgICAgICBjYWxsaW5nIGxvYWQoKS4gRGVmYXVsdCBpcyB0cnVlLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJkYXRhY29tYm9ib3giIHR5cGU9Imx6eDpkYXRhY29tYm9ib3giID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImRhdGFjb21ib2JveCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmJhc2VkYXRhY29tYm9ib3giPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJhc2V6b29tYXJlYSIgdHlwZT0ibHp4OmJhc2V6b29tYXJlYSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEFuIGFic3RyYWN0IGNsYXNzIHRoYXQgcHJvdmlkZSBiYXNpYyB6b29taW5nIGFiaWxpdHkuIAorICAgICAgICBBbGxvdyBzdWJjbGFzc2VzIHRvIG1vZGlmeSB0aGUgbG9vayBhbmQgZmVlbAorICAgICAgICBhbmQgYWN0aW9uIHRvIGJlIHRha2VuCisgICAgICAgIEBhY2Nlc3MgcHVibGljCisgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYmFzZXpvb21hcmVhIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN0YXJ0eSIgdHlwZT0ibHp4Om51bWJlciIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEBrZXl3b3JkIHByaXZhdGUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN0YXJ0eCIgdHlwZT0ibHp4Om51bWJlciIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEBrZXl3b3JkIHByaXZhdGUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlbGVjdGlvbkRlbCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQGtleXdvcmQgcHJpdmF0ZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VsZWN0aW5nIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyB1c2VyIGlzIHNlbGVjdGluZyBvciBub3QgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBsb3RhcmVhIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBAa2V5d29yZCBwcml2YXRlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlbmR5IiB0eXBlPSJseng6bnVtYmVyIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQGtleXdvcmQgcHJpdmF0ZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZW5keCIgdHlwZT0ibHp4Om51bWJlciIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEBrZXl3b3JkIHByaXZhdGUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVuYWJsZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgZW5hYmxlIHpvb20gYXJlYSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZHVyYXRpb24iIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjUwMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHpvb20gYW5pbWF0aW9uIGR1cmF0aW9uIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaGFydCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgdGhlIGNoYXJ0IGluc3RhbmNlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Il9jb21wb25lbnRtYW5hZ2VyIiB0eXBlPSJseng6X2NvbXBvbmVudG1hbmFnZXIiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Il9jb21wb25lbnRtYW5hZ2VyIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6bm9kZSI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0idHJlZSIgdHlwZT0ibHp4OnRyZWUiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRyZWUiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNldHJlZSI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uYWN0aXZhdGUiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIERvdWJsZS1jbGlja2luZyBvbiB0aGUgaWNvbiBvciB0ZXh0IHRyaWdnZXJzIHRoaXMgZXZlbnQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpY29uIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Imx6dHJlZV9mb2xkZXJfcnNjIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHJlc291cmNlIGZvciB0aGUgaXRlbSBpY29uOgorICAgICAgICAgICAgICBmcmFtZSAxIChjbG9zZWQpLCBmcmFtZSAyIChvcGVuZWQpLCBmcmFtZSAzIChsZWFmKSAKKyAgICAgICAgICAgICAgRGVmYXVsdCBpcyBsenRyZWVfZm9sZGVyX3JzYyBkZWZpbmVkIGluIGx6L3RyZWUubHp4LgorICAgICAgICAgICAgICBAa2V5d29yZHMgZmluYWwgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImV4cGFuZGVyIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Imx6dHJlZV9hcnJvd19yc2MiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgcmVzb3VyY2UgZm9yIHRoZSBleHBhbmRpbmcgaWNvbjoKKyAgICAgICAgICAgICAgZnJhbWUgMSAoY2xvc2VkKSwgZnJhbWUgMiAob3BlbmVkKSwgZnJhbWUgMyAobGVhZikuCisgICAgICAgICAgICAgIERlZmF1bHQgaXMgbHp0cmVlX2Fycm93X3JzYyBkZWZpbmVkIGluIGx6L3RyZWUubHp4LgorICAgICAgICAgICAgICBAa2V5d29yZHMgZmluYWwgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iY2hhcnRkYXRhIiB0eXBlPSJseng6Y2hhcnRkYXRhIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQSBjb250YWluZXIgY2xhc3MgZm9yIGRhdGFzZXJpZXMgaW5zdGFuY2VzLiAgSGVscHMgb3JnYW5pemUgYW5kCisgICAgICAgIGxvY2F0ZSB0aGUgZGF0YS4gQWxsIGRhdGFzZXJpZXMgdGFncyBpbiBhIGNoYXJ0IG11c3QgYmUgY2hpbGRyZW4KKyAgICAgICAgb2YgdGhpcyBjbGFzcy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iY2hhcnRkYXRhIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYnV0dG9uIiB0eXBlPSJseng6YnV0dG9uIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJidXR0b24iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNlYnV0dG9uIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGV4dF95IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIke3RoaXMuaGVpZ2h0LzIgLSB0aGlzLl90aXRsZS5oZWlnaHQvMn0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyB0aGUgeSBwb3NpdGlvbiBvZiB0aGUgYnV0dG9uIHRleHQuIGRlZmF1bHQ6IGNlbnRlcmVkIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZXh0X3giIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IiR7dGhpcy53aWR0aC8yIC0gdGhpcy5fdGl0bGUud2lkdGgvMn0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyB0aGUgeCBwb3NpdGlvbiBvZiB0aGUgYnV0dG9uIHRleHQuIGRlZmF1bHQ6IGNlbnRlcmVkIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZXh0X3BhZGRpbmdfeSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iNCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHRoZSBhbW91bnQgb2Ygc3BhY2UgdG8gYWRkIHZlcnRpY2FsbHkgIHdoZW4gc2l6aW5nIGJ1dHRvbiB0byBpdHMKKyAgICAgICAgdGV4dC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRleHRfcGFkZGluZ194IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxMSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHRoZSBhbW91bnQgb2Ygc3BhY2UgdG8gYWRkIGhvcml6b250YWxseSB3aGVuIHNpemluZyBidXR0b24gdG8gaXRzCisgICAgICAgIHRleHQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InNsaWRlcnRyYWNrIiB0eXBlPSJseng6c2xpZGVydHJhY2siID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyB0aGUgaW5uZXIgdHJhY2sgb24gd2hpY2ggdGhlIHNsaWRlcnRodW1iIHJpZGVzIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InNsaWRlcnRyYWNrIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZXNsaWRlcnRyYWNrIj4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJsaXN0c2VsZWN0b3IiIHR5cGU9Imx6eDpsaXN0c2VsZWN0b3IiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBhIGhlbHBlciBjbGFzcyB0aGF0IHdyYXBzIHRoZSBzZWxlY3Rpb25tYW5hZ2VyIGluIHNvbWUKKyAgICAgICAgaGlnaGVyIGxldmVsIEFQSXMsIHVzZWQgYnkgYmFzZWxpc3QgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibGlzdHNlbGVjdG9yIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6c2VsZWN0aW9ubWFuYWdlciI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im11bHRpc2VsZWN0IiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJZiBtdWx0aXNlbGVjdCBpcyB0cnVlLCBtdWx0aXBsZSBzZWxlY3Rpb24gaXMgZW5hYmxlZC4KKyAgICAgICAgV2hlbiB0aGUgc2hpZnQga2V5IGlzIGRvd24sIGEgcmFuZ2Ugb2YgaXRlbXMgaXMgc2VsZWN0ZWQuCisgICAgICAgIFdoZW4gdGhlIGNvbnRyb2wga2V5IGlzIGRvd24sIGFueSBpdGVtIG1heSBiZSBhZGRlZCB0byB0aGUKKyAgICAgICAgc2VsZWN0aW9uLgorICAgICAgICAgICAgIERlZmF1bHQ6IGZhbHNlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InBpZWNoYXJ0IiB0eXBlPSJseng6cGllY2hhcnQiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKworICAgICAgICAgIEEgcGllIGNoYXJ0IHJlcHJlc2VudHMgYSBjaGFydCB0aGF0IGlzIGRpc3BsYXllZCBpbiB0aGUgMkQKKyAgICAgICAgICBwb2xhciBwbGFuZS4gVGhpcyBjbGFzcyBpbmhlcml0cyBpbW1lZGlhdGVseSBmcm9tIGNoYXJ0IGNsYXNzCisgICAgICAgICAgYW5kIGNhbiBiZSBpbnN0YW50aWF0ZWQgZGlyZWN0bHkuIChXYXJuaW5nOiBPZiBiZXRhIHF1YWxpdHkuKQorICAgICAgICAgIEBhY2Nlc3MgcHVibGljCisgICAgICAgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0icGllY2hhcnQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VsZWN0ZWRwaWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJG9uY2V7bnVsbH0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBXaGljaCBwaWUgaXMgc2VsZWN0ZWQsIGlmIHRoZXJlIGFyZSBtdWx0aXBsZSBwaWVzLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGxvdHkiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBQbG90IGFyZWEgeSBjb29yZGluYXRlLCByZWxhdGl2ZSB0byBjaGFydCBhcyBhIHdob2xlLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGxvdHgiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBQbG90IGFyZWEgeCBjb29yZGluYXRlLCByZWxhdGl2ZSB0byBjaGFydCBhcyBhIHdob2xlLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGxvdHdpZHRoIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIke3RoaXMud2lkdGggLSAxfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFdpZHRoIG9mIHBsb3R0aW5nIGFyZWEuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwbG90aGVpZ2h0IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIke3RoaXMuaGVpZ2h0IC0gMX0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBIZWlnaHQgb2YgcGxvdHRpbmcgYXJlYS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBsb3RiZ2NvbG9yIiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9IiRvbmNle251bGx9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQmFja2dyb3VuZCBjb2xvciBvZiB0aGUgcGxvdCBhcmVhLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGllc3BhY2luZyIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBzcGFjZSBiZXR3ZWVuIHRoZSBwaWVzLCBpZiB0aGVyZSBhcmUgbXVsdGlwbGUgcGllcy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJvcmRlcndpZHRoIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgV2lkdGggb2YgdGhlIHBsb3QgYXJlYSdzIGJvcmRlci4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJvcmRlciIgdHlwZT0ibHp4OmNvbG9yIiBkZWZhdWx0PSIkb25jZXtudWxsfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEJvcmRlciBhcm91bmQgdGhlIHBsb3QgYXJlYSwgaWYgYW55dGhpbmcuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJiZ3Jlc291cmNlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIElmIGRlc2lyZWQsIGEgcmVzb3VyY2UgY2FuIGJlIHVzZWQgaW4gdGhlIGJhY2tncm91bmQuCisgICAgICAgICAgICBJZiBzcGVjaWZpZWQsIHRoaXMgdmlldyB3aWxsIGFwcGVhciBiZWhpbmQgdGhlIGNoYXJ0LAorICAgICAgICAgICAgd2l0aCBldmVyeXRoaW5nIGRyYXduIG9uIHRvcCBvZiBpdC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibWVudWFycm93IiB0eXBlPSJseng6bWVudWFycm93IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJtZW51YXJyb3ciIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJpbXBvcnQiIHR5cGU9Imx6eDppbXBvcnQiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgJmx0O2ltcG9ydCZndDsgdGFnIGlzIHVzZWQgdG8gaW1wb3J0LCBhdCBydW4gdGltZSwgc291cmNlIGNvZGUgY29udGFpbmVkIGluIGFub3RoZXIgKGxpYnJhcnkpIGZpbGUuIFNlZSB0aGUgR3VpZGUgZm9yIGEgY29tcGxldGUgZGlzY3Vzc2lvbi4gQWxzbyBzZWUgdGhlICZsdDtsaWJyYXJ5Jmd0OyB0YWcuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImltcG9ydCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4Om5vZGUiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdGFnZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJsYXRlfGRlZmVyIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icHJveGllZCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaHJlZiIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgIEEgcmVmZXJlbmNlIHRvIGEgdGFyZ2V0IGZpbGUgd2hvc2UgY29udGVudCBpcyB0cmVhdGVkIGFzIGEgbG9hZGFibGUgbW9kdWxlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InRleHRsaXN0aXRlbSIgdHlwZT0ibHp4OnRleHRsaXN0aXRlbSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idGV4dGxpc3RpdGVtIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6bGlzdGl0ZW0iPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZXh0X3kiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJHt0aGlzLmhlaWdodC8yIC0gdGhpcy5fdGl0bGUuaGVpZ2h0LzJ9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgdGhlIHkgcG9zaXRpb24gb2YgdGhlIHRleHQgbGFiZWwuIGRlZmF1bHQ6IGNlbnRlcmVkIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZXh0X3giIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iNCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSB4IHBvc2l0aW9uIG9mIHRoZSBkaXNwbGF5ZWQgdGV4dC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0icnRtcHN0YXR1cyIgdHlwZT0ibHp4OnJ0bXBzdGF0dXMiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InJ0bXBzdGF0dXMiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icnRtcGMiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHJ0bXBjb25uZWN0aW9uIHRvIG1vbml0b3IgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0idmFsdWVsaW5lIiB0eXBlPSJseng6dmFsdWVsaW5lIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisKKyAgICAgICBSZXByZXNlbnRzIGEgbGluZSBpbiB0aGUgY2hhcnQKKyAgICAgICBAYWNjZXNzIHB1YmxpYworICAgICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InZhbHVlbGluZSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmRyYXd2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGlwRW5hYmxlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGVuYWJsZSB0b29sdGlwIGZvciBkYXRhIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0aXAiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgdGhlIHRvb2x0aXAgdmFsdWUgd2lsbCBiZSBkaXNwbGF5IHdoZW4gdGhlIG1vdXNlIG92ZXIgdGhlIGxpbmUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxhYmVsIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHRoZSBsYWJlbCB3aWxsIGJlIGRpc3BsYXkgbmV4dCB0byB0aGUgbGluZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYXhpcyIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgdGhlIGF4aXMgdmFsdWUgY291bGQgYmUgIngiIG9yICJ5IiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJsYWJlbHN0eWxlIiB0eXBlPSJseng6bGFiZWxzdHlsZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHN0eWxlIG9iamVjdCB1c2VkIGZvciBhbnl0aGluZyB0aGF0IGNvbnRhaW5zIGEgbGFiZWwgd2l0aGluIHRoZSBjaGFydC4KKyAgICAgIEBhY2Nlc3MgcHVibGljCisgICAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJsYWJlbHN0eWxlIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZXN0eWxlIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGluZXNpemUiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBzaXplIG9mIGJvcmRlciBvZiBsYWJlbCBiYWNrZ3JvdW5kICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGluZWNvbG9yIiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9IiR7bnVsbH0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBjb2xvciBvZiBib3VuZGluZyBib3ggYm9yZGVyIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbnNldCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iNSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHRoZSBudW1iZXIgb2YgcGl4ZWxzIHRoZSBmb250IGlzIGluc2V0IGZyb20gdGhlIGJvcmRlciA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZm9udGNvbG9yIiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9IjB4MDAwMDAwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgY29sb3Igb2YgdGhlIGZvbnQgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZvbnRhbmdsZSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGFuZ2xlIG9mIHJvdGF0aW9uIG9mIHRoZSBmb250IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmaWxsY29sb3IiIHR5cGU9Imx6eDpjb2xvciIgZGVmYXVsdD0iJHtudWxsfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGNvbG9yIG9mIGJvdW5kaW5nIGJveCBmaWxsIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJhc2V2YWx1ZWNvbXBvbmVudCIgdHlwZT0ibHp4OmJhc2V2YWx1ZWNvbXBvbmVudCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGFuIGFic3RyYWN0IGNsYXNzIGZvciBjb21wb25lbnRzIHRoYXQgcmVwcmVzZW50IGEgdmFsdWUgZm9yIGRhdGEgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYmFzZXZhbHVlY29tcG9uZW50IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZWNvbXBvbmVudCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZhbHVlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyB0aGUgdmFsdWUgdGhhdCB0aGlzIGl0ZW0gcmVwcmVzZW50cy4gV2hlbiBzZWxlY3RlZCwKKyAgICAgICAgdGhlIHBhcmVudCBzZWxlY3Rpb24gZ3JvdXAncyB2YWx1ZSB3aWxsIGJlIHNldCB0byB0aGlzIHZhbHVlLgorICAgICAgICBNb3N0IHN1YmNsYXNzZXMgcmVxdWlyZSB5b3UgdG8gY2FsbCBnZXRWYWx1ZSgpIHRvIGdldCB0aGUKKyAgICAgICAgdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZS4gIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0eXBlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImV4cHJlc3Npb24iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgdHlwZSBvZiB2YWx1ZSBvZiB0aGUgaXRlbS4gRGVmYXVsdCBpcyAnZXhwcmVzc2lvbicsCisgICAgICAgICAgICAgd2hpY2ggd2lsbCBhdHRlbXB0IHRvIGhldXJpc3RpY2F0ZSB0aGUgdHlwZSBmcm9tIHRoZQorICAgICAgICAgICAgIHZhbHVlLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJiYXNldG9vbHRpcCIgdHlwZT0ibHp4OmJhc2V0b29sdGlwIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJiYXNldG9vbHRpcCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZXh0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IkRlZmF1bHQgVmFsdWUiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImZvcm0iIHR5cGU9Imx6eDpmb3JtIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJmb3JtIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZWZvcm0iPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzcGFjaW5nIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjEwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVmVydGljYWwgc3BhY2UgYmV0d2VlbiBjb250ZW50IGFuZCBidXR0b24gYXJlYS4gSWYgZm9ybXMgaGVpZ2h0IGlzCisgICAgICAgICAgICAgIHNwZWNpZmllZCwgdGhlIGJ1dHRvbiBhcmVhIHdpbGwgYmUgZmx1c2ggYWdhaW5zdCB0aGUgZm9ybSdzIGJvdHRvbQorICAgICAgICAgICAgICByaWdodCBjb3JuZXIgKGFkanVzdGVkIGJ5IGFueSBsYXlvdXQgdGhhdCB0aGUgZm9ybSBoYXMpLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW5zZXRfdG9wIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjEwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHRvcCBpbnNldCBmb3IgY29udGVudCBhcHBlYXJpbmcgd2l0aGluIGZvcm0uIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbnNldF9yaWdodCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIxMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSByaWdodCBpbnNldCBmb3IgY29udGVudCBhcHBlYXJpbmcgd2l0aGluIGZvcm0uIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbnNldF9sZWZ0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjEwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIGxlZnQgaW5zZXQgZm9yIGNvbnRlbnQgYXBwZWFyaW5nIHdpdGhpbiBmb3JtLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW5zZXRfYm90dG9tIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjEwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIGJvdHRvbSBpbnNldCBmb3IgY29udGVudCBhcHBlYXJpbmcgd2l0aGluIGZvcm0uIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJhc2VzdHlsZSIgdHlwZT0ibHp4OmJhc2VzdHlsZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGJhc2Ugc3R5bGUgZm9yIGFsbCBjaGFydCBzdHlsZXMKKyAgICAgIEBhY2Nlc3MgcHVibGljCisgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImJhc2VzdHlsZSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InZhbHVlcmVnaW9uc3R5bGUiIHR5cGU9Imx6eDp2YWx1ZXJlZ2lvbnN0eWxlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgdmFsdWVyZWdpb25zdHlsZSBpcyB1c2VkIGZvciBkcmF3aW5nIHRoZSBhcHBlYXJhbmNlIG9mIGEgdmFsdWUgcmVnaW9uCisgICAgICBAYWNjZXNzIHB1YmxpYworICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ2YWx1ZXJlZ2lvbnN0eWxlIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZXN0eWxlIj4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJjaGFydHN0eWxlIiB0eXBlPSJseng6Y2hhcnRzdHlsZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHN0eWxlIGZvciBjaGFydCwgY29udGFpbiBuZXN0ZWQgbGV2ZWwgb2Ygc3R5bGUgZXh0ZW5kIGZyb20gYmFzZXN0eWxlCisgICAgICBAYWNjZXNzIHB1YmxpYworICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJjaGFydHN0eWxlIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZXN0eWxlIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmVyc2lvbiIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9udmVyc2lvbiIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGF0YXN0eWxlaW5kZXgiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBAa2V5d29yZCBwcml2YXRlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InJhZGlvYnV0dG9uIiB0eXBlPSJseng6cmFkaW9idXR0b24iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJbXBsZW1lbnRzIGEgInJhZGlvIiBidXR0b24sIGFsbG93cyBhIG9uZS1vZi1tYW55IHNlbGVjdGlvbiB3aGVuCisgICAgICAgICAgc2V2ZXJhbCBvZiB0aGVzZSBhcmUgaW4gYSByYWRpb2dyb3VwLiBSYWRpb2J1dHRvbiBleHBlY3RzIGl0cyBwYXJlbnQKKyAgICAgICAgICB0byBiZSByYWRpb2dyb3VwLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJyYWRpb2J1dHRvbiIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmJhc2VsaXN0aXRlbSI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRleHRfeSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iJHt0aGlzLnJiLmhlaWdodC8yIC0gdGhpcy5fdGl0bGUuaGVpZ2h0LzJ9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgdGhlIHkgcG9zaXRpb24gb2YgdGhlIHRleHQgbGFiZWwuIGRlZmF1bHQ6IGNlbnRlcmVkIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImFsZXJ0IiB0eXBlPSJseng6YWxlcnQiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImFsZXJ0IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6bW9kYWxkaWFsb2ciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZXh0X3kiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgeSBwb3NpdGlvbiBvZiB0aGUgYnV0dG9uIHRleHQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZXh0X3giIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgeCBwb3NpdGlvbiBvZiB0aGUgYnV0dG9uIHRleHQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZXN1bHQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEFmdGVyIHRoZSBhbGVydCBpcyBjbG9zZWQsIHRoaXMgaXMgc2V0IHRvIHRydWUgaWYgYnV0dG9uMSAoIk9LIikKKyAgICAgICAgICAgICAgaXMgcHJlc3NlZCBvciBmYWxzZSBpZiBidXR0b24yIGlzIHByZXNzZWQuIFlvdSBjYW4gY2hlY2sgZm9yIHRoZQorICAgICAgICAgICAgICByZXN1bHQgdmFsdWUgdXNpbmcgdGhlIG9ucmVzdWx0IGV2ZW50LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25yZXN1bHQiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoaXMgZXZlbnQgaXMgc2VudCB3aGVuIGEgYnV0dG9uIGlzIHByZXNzZWQuIFVzZSB0aGlzIHRvIGNoZWNrIHRoZQorICAgICAgICAgICAgICByZXN1bHQgdmFsdWUuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtYXh0ZXh0d2lkdGgiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJHtNYXRoLnJvdW5kKHBhcmVudC53aWR0aC8zKSAtIGluc2V0X2xlZnQgLSBpbnNldF9yaWdodCAgICAgICAgICAgICAgICAgICAgIC0gY29udGVudF9pbnNldF9sZWZ0IC0gY29udGVudF9pbnNldF9yaWdodH0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgbWF4IGxlbmd0aCBvZiBhIGxpbmUgb2YgdGV4dCBiZWZvcmUgaXQgd3JhcHMuIERlZmF1bHQ6IDEvMyBvZgorICAgICAgICAgICAgICB0aGUgcGFyZW50J3Mgd2lkdGggLSB3aWR0aCBvZiB3aW5kb3cgZHJlc3NpbmcgYW5kIG1hcmdpbi4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJ1dHRvbjIiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSWYgYSBzdHJpbmcgaXMgc2V0IGZvciB0aGlzIGF0dHJpYnV0ZSwgYSBzZWNvbmQgYnV0dG9uIHdpbGwgYmUKKyAgICAgICAgICAgICAgc2hvd24gdG8gdGhlIGxlZnQgb2YgdGhlIGZpcnN0IHdpdGggdGhpcyB0ZXh0LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYnV0dG9uMSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJPSyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEFsZXJ0IHNob3dzIG9ubHkgdGhpcyBidXR0b24sIGlmIGJ1dHRvbjIgaXNuJ3Qgc2V0LgorICAgICAgICAgICAgICBZb3UgbWF5IHNwZWNpZnkgYSBkaWZmZXJlbnQgc3RyaW5nIHRvIGNoYW5nZSB0aGUgdGV4dCBvZiB0aGUKKyAgICAgICAgICAgICAgYnV0dG9uLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJiYXNlZ3JpZGNvbHVtbiIgdHlwZT0ibHp4OmJhc2VncmlkY29sdW1uIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJiYXNlZ3JpZGNvbHVtbiIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmJhc2Vjb21wb25lbnQiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzb3J0cGF0aCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBBbiB4cGF0aCBleHByZXNzaW9uIHRvIHVzZSB0byBkZXRlcm1pbmUgdGhlIHNvcnQga2V5IGZvciB0aGlzCisgICAgICAgICAgICAgIGNvbHVtbi4gQnkgZGVmYXVsdCwgdGhpcyBpcyB0aGUgY29sdW1uJ3MgZGF0YXBhdGgncyB4cGF0aC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1pbndpZHRoIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBtaW5pbXVtIHdpZHRoIGZvciB0aGlzIGNvbHVtbi4gVGhpcyBpcyByZWxldmFudCBpZiB0aGUgY29sdW1uCisgICAgICAgICAgICAgIGNhbiBiZSByZXNpemVkLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaGFzU29ydCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgU2V0IGJ5ICZsdDtjb2RlJmd0O2RvU29ydCgpJmx0Oy9jb2RlJmd0OyBtZXRob2QuIElmIHRydWUsIHRoZW4gdGhpcyBpcyB0aGUgY3VycmVudAorICAgICAgICAgICAgICBzb3J0IGNvbHVtbi4KKyAgICAgICAgICAgICAgQGtleXdvcmRzIHJlYWRvbmx5IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkZXNjZW5kQ29tcGFyYXRvciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQW4gb3B0aW9uYWwgbWV0aG9kLiBJZiBkZWZpbmVkLCB0aGlzIG1ldGhvZCB3aWxsIGJlIHVzZWQgd2hlbiAKKyAgICAgICAgICAgICAgdGhlIGNvbHVtbiBpcyBzb3J0ZWQgd2hlbiBhc2NlbmRzb3J0IGlzIHNldCB0byBmYWxzZS4gVGhpcyBtZXRob2QKKyAgICAgICAgICAgICAgc2hvdWxkIGhhdmUgdGhlIGNvbXBhcmF0b3Igc2lnbmF0dXJlLiBJdCBzaG91bGQgYWNjZXB0IHRvIHN0cmluZworICAgICAgICAgICAgICBhcmd1bWVudCBhbmQgcmV0dXJuIDEsIDAgLCBvciAtMSwgaW5kaWNhdGluZyB0aGF0IHRoZSB0d28KKyAgICAgICAgICAgICAgYXJndW1lbnRzIGFyZSBpbiBvcmRlciwgZXF1aXZhbGVudCwgb3Igb3V0IG9mIG9yZGVyLAorICAgICAgICAgICAgICByZXNwZWN0aXZlbHkuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkYXRhdHlwZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBFaXRoZXIgIm51bWJlciIgb3IgInN0cmluZyIuIElmICJzdHJpbmciLCB0aGVuIGRpY3Rpb25hcnkgc29ydAorICAgICAgICAgICAgICBpcyB1c2VkLiBJZiAibnVtYmVyIiwgdGhlbiB0eXBlcyBhcmUgY29lcmNlZCB0byBhIG51bWJlciBiZWZvcmUKKyAgICAgICAgICAgICAgc29ydGluZy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbHdpZHRoIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiR7dGhpcy53aWR0aH0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgY3VycmVudCB3aWR0aCBvZiB0aGUgY29sdW1uLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYXNjZW5kc29ydCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJ0cnVlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSWYgdHJ1ZSwgdGhlIG5leHQgc29ydCB3aWxsIGJlIGFzY2VuZGluZywgb3RoZXJ3aXNlIGl0IHdpbGwKKyAgICAgICAgICAgICAgYmUgZGVzY2VuZGluZy48L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYXNjZW5kQ29tcGFyYXRvciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQW4gb3B0aW9uYWwgbWV0aG9kLiBJZiBkZWZpbmVkLCB0aGlzIG1ldGhvZCB3aWxsIGJlIHVzZWQgd2hlbiAKKyAgICAgICAgICAgICAgdGhlIGNvbHVtbiBpcyBzb3J0ZWQgd2hlbiBhc2NlbmRzb3J0IGlzIHNldCB0byB0cnVlLiBUaGlzIG1ldGhvZAorICAgICAgICAgICAgICBzaG91bGQgaGF2ZSB0aGUgY29tcGFyYXRvciBzaWduYXR1cmUuIEl0IHNob3VsZCBhY2NlcHQgdG8gc3RyaW5nCisgICAgICAgICAgICAgIGFyZ3VtZW50IGFuZCByZXR1cm4gMSwgMCAsIG9yIC0xLCBpbmRpY2F0aW5nIHRoYXQgdGhlIHR3bworICAgICAgICAgICAgICBhcmd1bWVudHMgYXJlIGluIG9yZGVyLCBlcXVpdmFsZW50LCBvciBvdXQgb2Ygb3JkZXIsCisgICAgICAgICAgICAgIHJlc3BlY3RpdmVseS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ic3Ryb2tlc3R5bGUiIHR5cGU9Imx6eDpzdHJva2VzdHlsZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEBrZXl3b3JkIHByaXZhdGUgCitJbXBsZW1lbnRlcyB0aGUgU3Ryb2tlIHJlbmRlcmluZyBsaW5lcyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJzdHJva2VzdHlsZSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmRyYXd2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3Ryb2tlV2lkdGgiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjEiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyAtICAgIE51bWVyaWNhbCB2YWx1ZSB0aGF0IGluZGljYXRlIHRoZSB0aGlja25lc3Mgb2YgdGhlIFN0cm9rZSBsaW5lIGluIHBpeGVscy4gRGVmYXVsdCB2YWx1ZSA9IjEiPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN0cm9rZVR5cGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ic29saWQiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBTdHJpbmcgdmFsdWUgdGhhdCBpbmRpY2F0ZXMgdGhlIHR5cGUgb2YgdGhlIFN0cm9rZSwgcG9zc2libGUgdmFsdWVzIDogInNvbGlkIiwgImRhc2hlZCIgb3IgImRvdHRlZCIuIERlZmF1bHQgdmFsdWUgInNvbGlkIjwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdHJva2VDb2xvciIgdHlwZT0ibHp4OmNvbG9yIiBkZWZhdWx0PSIweDAwMDAwMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIENvbG9yIG9mIHRoZSBTdHJva2UgaW4gIGhleGFkZWNpbWFsIHZhbHVlLCBkZWZhdWx0IHZhbHVlICIweDAwMDAwMCI8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3BhY2VMZW5ndGgiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBOdW1iZXIgb2YgcGl4ZWxzIG9mIHNwYWNpbmcgYmV0d2VlbiBlYWNoIHNtYWxsIGxpbmUgdGhhdCBjb21wb3NlIHRoZSBzdHlsaXNoIGxpbmUuIERlZmF1bHQgdmFsdWUgPSI1IjwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkb3R0ZWRMZW5ndGgiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjEwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgTnVtYmVyIG9mIHBpeGVsIG9mIGVhY2ggc21hbGwgbGluZSB0aGF0IGNvbXBvc2UgdGhlIHN0eWxpc2ggbGluZS4gRGVmYXVsdCB2YWx1ZSA9IjEwIjwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Im1lbnUiIHR5cGU9Imx6eDptZW51IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJtZW51IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZWNvbXBvbmVudCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9wZW5lZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgYSBib29sZWFuIGluZGljYXRpbmcgd2hldGhlciBvciBub3QgdGhlIG1lbnUgaXMgaW4gb3BlbmVkIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhdHRhY2giIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iYm90dG9tIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgYSBzdHJpbmcgdG8gaW5kaWNhdGUgaG93IHRoZSBmbG9hdGluZyBwYXJ0IG9mIHRoZSBtZW51IGF0dGFjaGVzIHRvIAorICAgICAgICAgICAgICB0aGUgbWVudWJ1dHRvbiBvciBtZW51aXRlbS4gUG9zc2libGUgdmFsdWVzIGFyZTogJ3RvcCcsICdib3R0b20nLCAnbGVmdCcsIGFuZCAncmlnaHQnIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImNoYXJ0YmFja2luZyIgdHlwZT0ibHp4OmNoYXJ0YmFja2luZyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iY2hhcnRiYWNraW5nIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZWNoYXJ0YmFja2luZyI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0idnNsaWRlciIgdHlwZT0ibHp4OnZzbGlkZXIiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InZzbGlkZXIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3dpdGNoYXhpcyIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+Cisgc3dpdGNoYXhpcyB0cnVlIG1lYW5zIG1pbmltdW0tdmFsdWUgaXMgCisgICAgICAgICAgICAgICAgdCBvcCBtYXhpbXVtIGlzIGJvdHRvbSBmYWxzZSB0dXJucyBhcm91bmQgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNob3d2YWx1ZSIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBzaG93dmFsdWUgc2hvdWxkIHRoZSBzbGlkZXIgc2hvdyB0aGUgbnVtYmVycyBvZiBtaW4vbWF4IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzaG93cmFuZ2UiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgU2hvd3JhbmdlIHNob3VsZCB0aGUgc2xpZGVydHJhY2sgYmUgd2l0aCBjb2xvciB3aGlsZSAnc2xpZGluZycgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1pbnZhbHVlIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgTWluaW11bSBWYWx1ZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWF4dmFsdWUiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjEwMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIE1heGltdW0gVmFsdWUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImluaXR2YWx1ZSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYmFzZWRhdGFjb21ib2JveCIgdHlwZT0ibHp4OmJhc2VkYXRhY29tYm9ib3giID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImJhc2VkYXRhY29tYm9ib3giIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNlZm9ybWl0ZW0iPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2YWx1ZWRhdGFwYXRoIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IkB2YWx1ZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIERhdGFwYXRoIHRvIHZhbHVlIGZvciBpdGVtcyBpbiBsaXN0LiBTZWUgY2F2ZWF0LjwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZXh0ZGF0YXBhdGgiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0idGV4dCgpIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgRGF0YXBhdGggdG8gdGV4dCB0byBkaXNwbGF5IGZvciBpdGVtcyBpbiBsaXN0LiAKKyAgICAgICAgICAgICAgU2VlIGNhdmVhdC48L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3RhdGljdGV4dCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIkb25jZXtudWxsfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIElmIHNldCwgdGhpcyB3aWxsIGFsd2F5cyBiZSBkaXNwbGF5ZWQgaW5zdGVhZCBvZiBzZWxlY3RlZCBpdGVtCisgICAgICAgICAgICAgIHRleHQuIEJlaGF2ZXMgbGlrZSBhIG1lbnUgYnV0dG9uLiBBbHNvIHNlZSBkZWZhdWx0dGV4dC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNob3duaXRlbXMiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iNCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFNldHMgdGhlIGhlaWdodCB0byB0aGUgbnVtYmVyIG9mIGl0ZW1zIHRvIHNob3cgaW4gY29tYm9ib3gKKyAgICAgICAgICAgICAgcG9wdXAgbGlzdC4gTXVzdCBiZSBncmVhdGVyIHRoYW4gMC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlbGVjdGZpcnN0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9InRydWUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBXaGVuIHRydWUsIHRoZSAxc3QgaXRlbSBpcyBzZWxlY3RlZCBvbmluaXQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWxlY3RlZCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgRGF0YXBvaW50ZXIgdG8gc2VsZWN0ZWQgaXRlbS4gCisgICAgICAgICAgICAgIEBrZXl3b3JkcyByZWFkb25seSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25zZWxlY3RlZCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgRXZlbnQgc2VudCB3aGVuIGFuIGl0ZW0gaXMgc2VsZWN0ZWQuIFNlbmRzIHNlbGVjdGVkIGl0ZW0uIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbnNlbGVjdCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgRXZlbnQgc2VudCB3aGVuIGFuIGl0ZW0gaXMgc2VsZWN0ZWQuIFNlbmRzIHNlbGVjdGVkIGl0ZW0uIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmlzb3BlbiIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQ2FsbGVkIHdoZW4gY29tYm9ib3ggb3BlbnMgb3IgY2xvc2VzIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmNvbWJvZm9jdXMiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBlcXVpdmFsZW50IGZvciBvbmZvY3VzIGZvciBjb21ib2JveC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uY29tYm9ibHVyIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgZXF1aXZhbGVudCBmb3Igb25ibHVyIGZvciBjb21ib2JveC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1lbnVjbGFzc25hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGlzdHdpZHRoIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBXaWR0aCBvZiBwb3B1cCBsaXN0LCBkZWZhdWx0cyB0byB3aWR0aCBvZiBjb21ib2JveCB2aWV3LiBEdXJpbmcKKyAgICAgICAgICAgICAgc2V0dXAsIHRoZSB3aWR0aCBvZiB0aGUgZmxvYXRpbmcgbGlzdCB2aWV3IG1pZ2h0IG5vdCB5ZXQgYmUgc2V0LAorICAgICAgICAgICAgICBzbyB0aGlzIHJldHVybnMgdGhlIGV4cGVjdGVkIHdpZHRoLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGlzdGF0dGFjaCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJib3R0b20iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBXaGVyZSB0aGUgZmxvYXRpbmdsaXN0IHNob3VsZCBhdHRhY2ggdG8gaXRzIG93bmVyLiBQb3NzaWJsZQorICAgICAgICAgICAgICB2YWx1ZXM6IGJvdHRvbSwgdG9wLCBsZWZ0LCByaWdodC4gIEluIHRoZSBldmVudCBvZiBhIGNhbnZhcworICAgICAgICAgICAgICBvdXQtb2YtYm91bmRzLCB0aGUgZmxvYXRpbmcgbGlzdCB3aWxsIGF0dGFjaCBpbiBhIHZpc2libGUKKyAgICAgICAgICAgICAgbG9jYXRpb24uIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpdGVtZGF0YXBhdGgiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIERhdGFwYXRoIHRvIGl0ZW1zIGluIGxpc3QuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpdGVtY2xhc3NuYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBuYW1lIG9mIHRoZSBjbGFzcyBmb3IgaXRlbXMgaW4gdGhlIGZsb2F0aW5nIGxpc3QuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc29wZW4iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJbmRpY2F0ZXMgd2hldGhlciBvciBub3QgdGhlIHBvcHVwIGxpc3QgaXMgc2hvd2luZy4gIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc21lbnUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJZiB0cnVlLCB0aGUgY29tYm9ib3ggd2lsbCBiZWhhdmUgbGlrZSBhIG1lbnUuICJ2YWx1ZSIgaXMKKyAgICAgICAgICAgICAgaWdub3JlZCwgYW5kIGl0ZW1zIHdpbGwgbm90IHJlbWFpbiBzZWxlY3RlZC4gU2VsZWN0aW5nIGFuCisgICAgICAgICAgICAgIGl0ZW0gZ2VuZXJhdGVzIGFuIG9uc2VsZWN0IGV2ZW50IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkZWZhdWx0dGV4dCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIkb25jZXtudWxsfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIERlZmF1bHQgdGV4dCB0byBkaXNwbGF5IGJlZm9yZSBhIHNlbGVjdGlvbiBpcyBtYWRlLiBObyBkZWZhdWx0CisgICAgICAgICAgICAgIGl0ZW0gaXMgc2VsZWN0ZWQgaWYgZGVmYXVsdHRleHQgaXMgc2V0LiBEZWZhdWx0dGV4dCBpcyByZXBsYWNlZAorICAgICAgICAgICAgICB3aXRoIHNlbGVjdGVkIGl0ZW0ncyB0ZXh0LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJjb2x1bW5jaGFydCIgdHlwZT0ibHp4OmNvbHVtbmNoYXJ0IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisKKyAgICAgICBBIGNoYXJ0IGNsYXNzIHRoYXQgcmVuZGVycyB2ZXJ0aWNhbCBiYXJzLgorICAgICAgIEluaGVyaXRzIGZyb20gdGhlIGNoYXJ0IGNsYXNzLiAgKFdhcm5pbmc6IE9mIGJldGEgcXVhbGl0eS4pCisgICAgICAgQGFjY2VzcyBwdWJsaWMKKyAgICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImNvbHVtbmNoYXJ0IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6cmVjdGFuZ3VsYXJjaGFydCI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0icm93IiB0eXBlPSJseng6cm93IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJyb3ciIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWwiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iaW5jbHVkZSIgdHlwZT0ibHp4OmluY2x1ZGUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgJmx0O2luY2x1ZGUmZ3Q7IHRhZyBpcyB1c2VkIHRvIGluY2x1ZGUgc291cmNlIGNvZGUgY29udGFpbmVkIGluIGFub3RoZXIgZmlsZS4gU2VlIHRoZSBHdWlkZSBmb3IgYSBjb21wbGV0ZSBkaXNjdXNzaW9uLiBBbHNvIHNlZSB0aGUgJmx0O2xpYnJhcnkmZ3Q7IHRhZy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iaW5jbHVkZSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Z3JvdXAgcmVmPSJseng6dG9wTGV2ZWxFbGVtZW50cyIgLz4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHlwZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJ0ZXh0fHhtbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorICBJZiB0aGlzIGF0dHJpYnV0ZSBoYXMgdGhlIHZhbHVlIHRleHQgLCB0aGUgY29udGVudCBvZiB0aGUgdGFyZ2V0IGZpbGUgaXMgaW5jbHVkZWQgYXMgdGV4dC4gT3RoZXJ3aXNlLCBpdCBpcyByZWFkIGFzIFhNTC4gIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJocmVmIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyAgQSByZWZlcmVuY2UgdG8gYSB0YXJnZXQgZmlsZSB3aG9zZSBjb250ZW50IGlzIGluY2x1ZGVkIGluIHRoZSBhcHBsaWNhdGlvbiB0aGF0IGNvbnRhaW5zIHRoaXMgaW5jbHVkZSBlbGVtZW50LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Im1lbnV0cmFja2dyb3VwIiB0eXBlPSJseng6bWVudXRyYWNrZ3JvdXAiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Im1lbnV0cmFja2dyb3VwIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZXRyYWNrZ3JvdXAiPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InJvdW5kcmVjdCIgdHlwZT0ibHp4OnJvdW5kcmVjdCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0icm91bmRyZWN0IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6ZHJhd3ZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmluc2V0dG9wIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmluc2V0cmlnaHQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uaW5zZXRsZWZ0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmluc2V0Ym90dG9tIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmluc2V0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbnNldHRvcCIgdHlwZT0ibHp4OnNpemUiIGRlZmF1bHQ9IiR7bnVsbH0iID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbnNldHJpZ2h0IiB0eXBlPSJseng6c2l6ZSIgZGVmYXVsdD0iJHtudWxsfSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imluc2V0bGVmdCIgdHlwZT0ibHp4OnNpemUiIGRlZmF1bHQ9IiR7bnVsbH0iID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbnNldGJvdHRvbSIgdHlwZT0ibHp4OnNpemUiIGRlZmF1bHQ9IiR7bnVsbH0iID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbnNldCIgdHlwZT0ibHp4OnNpemUiIGRlZmF1bHQ9IjUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgbWFyZ2luIGJldHdlZW4gdGhlIG91dHNpZGUgdmlldyBhbmQgdGhlIGNvbnRlbnQgdmlldyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYm94U2hhZG93WSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSI1IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHggb2Zmc2V0IG9mIHRoZSBib3ggc2hhZG93LiAgVGhlIGJveCBzaGFkb3cgaXMgbm90IGRyYXduIGJ5IGRlZmF1bHQuCisgICAgICAgICAgICBTcGVjaWZ5IGEgYm94U2hhZG93Q29sb3IgaW4gb3JkZXIgdG8gZHJhdyBpdC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJveFNoYWRvd1giIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iNSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSB4IG9mZnNldCBvZiB0aGUgYm94IHNoYWRvdy4gIFRoZSBib3ggc2hhZG93IGlzIG5vdCBkcmF3biBieSBkZWZhdWx0LgorICAgICAgICAgICAgU3BlY2lmeSBhIGJveFNoYWRvd0NvbG9yIGluIG9yZGVyIHRvIGRyYXcgaXQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJib3hTaGFkb3dPcGFjaXR5IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjAuNSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBib3ggc2hhZG93IG9wYWNpdHkuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJib3hTaGFkb3dDb2xvciIgdHlwZT0ibHp4OmNvbG9yIiBkZWZhdWx0PSIkb25jZXtudWxsfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBib3ggc2hhZG93IGNvbG9yLiAgSWYgdGhpcyBpcyBzcGVjaWZpZWQsIGEgYm94IHNoYWRvdyBpcyBkcmF3bi48L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyV2lkdGgiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSB3aWR0aCBvZiB0aGUgYm9yZGVyLiAgSWYgdGhpcyBpcyB6ZXJvLCBubyBmcmFtZSBpcyBkcmF3bi4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJvcmRlclJhZGl1cyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSI1IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHJvdW5kaW5nIHJhZGl1cyBvZiB0aGUgYm9yZGVyIGNvcm5lcnMuICBCZWNhdXNlIHRoZSBkZWZhdWx0CisgICAgICAgICAgICBqb2luIHR5cGUgaXMgYSByb3VuZCBqb2luLCBldmVuIGEgcmFkaXVzIG9mIHplcm8gd2lsbCBwcm9kdWN0IHNvbWUKKyAgICAgICAgICAgIHJvdW5kaW5nLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyT3BhY2l0eSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIxIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIGJvcmRlciBvcGFjaXR5IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJib3JkZXJDb2xvciIgdHlwZT0ibHp4OmNvbG9yIiBkZWZhdWx0PSJibGFjayIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBib3JkZXIgY29sb3IgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJhY2tncm91bmRTdG9wT3BhY2l0eSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIxIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIGJhY2tncm91bmQgc3RvcCBvcGFjaXR5LiAgVGhpcyBkZWZhdWx0cyB0byBvbmUgKG9wYXF1ZSkgdW5sZXNzIHRoZQorICAgICAgICAgICAgc3RvcCBjb2xvciBpcyBub3Qgc3BlY2lmaWVkIGFuZCB0aGUgc3RhcnQgY29sb3IgaXMsIGluIHdoaWNoIGNhc2UgaXQKKyAgICAgICAgICAgIGRlZmF1bHRzIHRvIHplcm8gKGZ1bGx5IHRyYW5zcGFyZW50KS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJhY2tncm91bmRTdG9wQ29sb3IiIHR5cGU9Imx6eDpjb2xvciIgZGVmYXVsdD0iJG9uY2V7bnVsbH0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgYmFja2dyb3VuZCBzdG9wIGNvbG9yLiAgVGhpcyBpcyB0aGUgY29sb3IgdGhhdCBpcyBkcmF3biBhdCB0aGUKKyAgICAgICAgICAgIGJvdHRvbSBvciByaWdodCBvZiB0aGUgdmlldywgZGVwZW5kaW5nIG9uIHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgYmFja2dyb3VuZEdyYWRpZW50T3JpZW50YXRpb24uICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yCisgICAgICAgICAgICBiYWNrZ3JvdW5kU3RhcnRDb2xvciBmb3IgYWRkaXRpb25hbCBkb2N1bWVudGF0aW9uLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYmFja2dyb3VuZFN0YXJ0T3BhY2l0eSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIxIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIGJhY2tncm91bmQgc3RhcnQgb3BhY2l0eS4gIFRoaXMgZGVmYXVsdHMgdG8gb25lIChvcGFxdWUpIHVubGVzcyB0aGUKKyAgICAgICAgICAgIHN0YXJ0IGNvbG9yIGlzIG5vdCBzcGVjaWZpZWQgYW5kIHRoZSBzdG9wIGNvbG9yIGlzLCBpbiB3aGljaCBjYXNlIGl0CisgICAgICAgICAgICBkZWZhdWx0cyB0byB6ZXJvIChmdWxseSB0cmFuc3BhcmVudCkuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJiYWNrZ3JvdW5kU3RhcnRDb2xvciIgdHlwZT0ibHp4OmNvbG9yIiBkZWZhdWx0PSIkb25jZXtudWxsfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBiYWNrZ3JvdW5kIHN0YXJ0IGNvbG9yLiAgVGhpcyBpcyB0aGUgY29sb3IgdGhhdCBpcyBkcmF3biBhdAorICAgICAgICAgICAgdGhlIHRvcCBvciBsZWZ0IG9mIHRoZSB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBiYWNrZ3JvdW5kR3JhZGllbnRPcmllbnRhdGlvbi4gIElmIHRoaXMgYW5kIHRoZSBiYWNrcm91bmQgc3RvcCBjb2xvcgorICAgICAgICAgICAgYXJlIHNwZWNpZmllZCwgYSBncmFkaWVudCBiYWNrZ3JvdW5kIGlzIGRyYXduIGluIHRoZSBkaXJlY3Rpb24gc3BlY2lmaWVkCisgICAgICAgICAgICBieSBiYWNrZ3JvdW5kR3JhZGllbnRPcmllbnRhdGlvbi4gIElmIG9ubHkgb25lIG9mIHRoZSBiYWNrZ3JvdW5kIHN0YXJ0CisgICAgICAgICAgICBhbmQgc3RvcCBjb2xvciBhcmUgc3BlY2lmaWVkLCBhIGdyYWRpZW50IG9mIHRoZSBzYW1lIGNvbG9yIHRoYXQgZmFkZXMgdG8KKyAgICAgICAgICAgIHRyYW5zcGFyZW50IGF0IHRoZSB1bnNwZWNpZmllZCBlbmQgaXMgZHJhd24uICBJZiBhIGJveCBzaGFkb3cgaXMgZHJhd24sCisgICAgICAgICAgICB0aGUgYmFja2dyb3VuZCBkZWZhdWx0cyB0byB3aGl0ZS4gIFNwZWNpZnkgYSBzdGFydCBhbmQgc3RvcCBvcGFjaXR5IHRvCisgICAgICAgICAgICBzdXBwcmVzcyB0aGlzIGJlaGF2aW9yLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYmFja2dyb3VuZEdyYWRpZW50T3JpZW50YXRpb24iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0idmVydGljYWwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgYmFja2dyb3VuZCBncmFkaWVudCBvcmllbnRhdGlvbi4gIE9uZSBvZiAndmVydGljYWwnICh0aGUgZGVmYXVsdCkKKyAgICAgICAgICAgIGFuZCAnaG9yaXpvbnRhbCcuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InZlcnNpb25pbmZvIiB0eXBlPSJseng6dmVyc2lvbmluZm8iID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InZlcnNpb25pbmZvIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dGV4dCI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iX25ld2ludGVybmFsaW5wdXR0ZXh0IiB0eXBlPSJseng6X25ld2ludGVybmFsaW5wdXR0ZXh0IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQSBwcml2YXRlIGlucHV0dGV4dCBjbGFzcyB1c2VkIGJ5IGJhc2VlZGl0dGV4dCB0aGF0IGJhc2ljYWxseSBwYXNzZXMKKyAgICAgICAgICBpdHMgZXZlbnRzIChvbmZvY3VzLCBvbmJsdXIsIG9ua2V5dXAsIG9ua2V5ZG93biwgb250ZXh0KSB1cC4gSW5zdGFuY2VzCisgICAgICAgICAgb2YgX2ludGVybmFsaW5wdXR0ZXh0IHNob3VsZCBvbmx5IGV4aXN0IGluIGEgYmFzZWVkaXR0ZXh0IGNsYXNzLiBOb3RlCisgICAgICAgICAgdGhhdCBfaW50ZXJuYWxpbnB1dHRleHQgYXNzdW1lcyB0aGF0IGl0cyBwYXJlbnQgaXMgYSBiYXNlZWRpdHRleHQuCisKKyAgICAgICAgICBCYXNlZWRpdHRleHQgY29udHJvbHMgX2ludGVybmFsaW5wdXR0ZXh0cyB5IHBvc2l0aW9uIGFuZCBtdWx0aWxpbmUKKyAgICAgICAgICBzZXR0aW5nLiBTdWJjbGFzc2VzIGFuZCBpbnN0YW5jZXMgc2hvdWxkIG5vdCBvdmVycmlkZSB0aGVzZQorICAgICAgICAgIGF0dHJpYnV0ZXMuCisKKyAgICAgICAgICBAa2V5d29yZHMgcHJpdmF0ZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJfbmV3aW50ZXJuYWxpbnB1dHRleHQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDppbnB1dHRleHQiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpZ25vcmVjYWxsdXAiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUcnVlIG1lYW5zIHRoYXQgZG9TZXRWYWx1ZSBjYWxsZWQgaW50ZXJuYWwgaW5wdXR0ZXh0IGFuZCBpbnB1dHRleHQKKyAgICAgICAgICAgICAgc2hvdWxkIG5vdCBjYWxsIGRvU2V0VmFsdWUgYmFjay4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0icG9pbnRzdHlsZSIgdHlwZT0ibHp4OnBvaW50c3R5bGUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBzdHlsZSBmb3IgcG9pbnQgYW5kIGRhdGFtYXJrZXIKKyAgICAgIEBhY2Nlc3MgcHVibGljCisgICAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJwb2ludHN0eWxlIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZXN0eWxlIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3Ryb2tlU3R5bGUiIHR5cGU9Imx6eDpjb2xvciIgZGVmYXVsdD0iMHgwMDAwMDAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBDb2xvciBvZiB0aGUgc3Ryb2tlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzaGFwZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJzcXVhcmUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyAnY2lyY2xlJywnc3F1YXJlJywndHJpYW5nbGUnLCBbbmFtZSBvZiByZXNvdXJjZV0gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxpbmVXaWR0aCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFdpZHRoIG9mIHRoZSBzdHJva2UgbGluZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW1hZ2UiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJHtudWxsfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGltYWdlIHBhdGggPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImdyYWRpZW50IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im5vbmUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyAnbm9uZScsICdsaW5lYXInLCAncmFkaWFsJyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sb3IiIHR5cGU9Imx6eDpjb2xvciIgZGVmYXVsdD0iYmxhY2siID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBSR0IgY29sb3IgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iY2hlY2tkcmFnc3RhdGUiIHR5cGU9Imx6eDpjaGVja2RyYWdzdGF0ZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorICBUaGlzIHNob3VsZCBiZSBkZWNsYXJlZCBhcyBhIGNoaWxkIG9mIHRoZSB0aGluZyBmb3Igd2hpY2ggeW91IHdhbnQgdG8KKyAgICAgICAgZW5hYmxlIGRyYWdnaW5nLiAgWW91IHdpbGwgbmVlZCB0byBkZWZpbmUgYSB2aWV3IChhbiBpbnN0YW5jZSBvZiBhCisgICAgICAgIHN1YmNsYXNzIG9mICZsdDt4cmVmIGxpbmtlbmQ9Imx6LmJhc2VkcmFnaW1hZ2UiLyZndDspCisgICAgICAgIHRvIGRlZmluZSB0aGUgdmlzdWFsIGxvb2sgb2YgdGhlIHRoaW5nIHdoaWxlIGl0cyBiZWluZyBkcmFnZ2VkLgorICAgICAgICAmbHQ7ZXhhbXBsZSBleGVjdXRhYmxlPSJmYWxzZSImZ3Q7CisgICAgICAgICZhbXA7bHQ7Y2xhc3MgbmFtZT0iZHJhZ2dlciIgJmFtcDtndDsKKyAgICAgICAgICAgIC4uLgorICAgICAgICAgICAgJmFtcDtsdDtoYW5kbGVyIG5hbWU9Im9ubW91c2Vkb3duIiZhbXA7Z3Q7CisgICAgICAgICAgICAgICAgY2hlY2tkcmFnLnNldEF0dHJpYnV0ZSgnYXBwbGllZCcsIHRydWUpOworICAgICAgICAgICAgJmFtcDtsdDsvaGFuZGxlciZndDsKKyAgICAgICAgICAgICZhbXA7bHQ7aGFuZGxlciBuYW1lPSJvbm1vdXNldXAiJmFtcDtndDsKKyAgICAgICAgICAgICAgICBjYW52YXMuZHJhZ2ltYWdlLnN0b3BkcmFnKHRoaXMpOworICAgICAgICAgICAgICAgIGNoZWNrZHJhZy5zZXRBdHRyaWJ1dGUoJ2FwcGxpZWQnLCBmYWxzZSk7CisgICAgICAgICAgICAmYW1wO2x0Oy9oYW5kbGVyJmFtcDtndDsKKworICAgICAgICAgICAgJmFtcDtsdDtjaGVja2RyYWdzdGF0ZSBuYW1lPSJjaGVja2RyYWciIGRyYWdnZXJuYW1lPSJkcmFnaW1hZ2UiLyZhbXA7Z3Q7CisgICAgICAgICZhbXA7bHQ7L2NsYXNzJmFtcDtndDsKKyAgICAgICAgJmx0Oy9leGFtcGxlJmd0OworCisgICAgICAgIFRoZSBvYmplY3QgdGhhdCB5b3Ugd2FudCB0byBhY2NlcHQgYSBkcm9wIGFjdGlvbiwgbmVlZHMgdG8gcmVnaXN0ZXIgd2l0aAorICAgICAgICBsei5UcmFjayB1c2luZyB0aGUgc2FtZSBncm91cCBhcyBpcyBkZWNsYXJlZCBpbiB0aGUgZHJhZ2ltYWdlLgorCisgICAgICAgICZsdDtleGFtcGxlIGV4ZWN1dGFibGU9ImZhbHNlIiZndDsKKyAgICAgICAgJmFtcDtsdDtjbGFzcyBuYW1lPSJkcm9wdGFyZ2V0IiZhbXA7Z3Q7CisgICAgICAgICAgICAuLi4KKyAgICAgICAgICAgICZhbXA7bHQ7bWV0aG9kIG5hbWU9ImluaXQiJmFtcDtndDsKKyAgICAgICAgICAgICAgICBzdXBlci5pbml0KCk7CisgICAgICAgICAgICAgICAgbHouVHJhY2sucmVnaXN0ZXIodGhpcywgJ3RhcmdldCcpOworICAgICAgICAgICAgJmFtcDtsdDsvbWV0aG9kJmFtcDtndDsKKworICAgICAgICAgICAgJmFtcDtsdDtoYW5kbGVyIG5hbWU9Im9ubW91c2V0cmFja292ZXIiJmFtcDtndDsKKyAgICAgICAgICAgICAgIHNldEF0dHJpYnV0ZSgnYmdjb2xvcicsIDB4ZmZmZjAwKTsgLy8gaGlsaXRlCisgICAgICAgICAgICAmYW1wO2x0Oy9oYW5kbGVyJmFtcDtndDsKKyAgICAgICAgICAgICZhbXA7bHQ7aGFuZGxlciBuYW1lPSJvbm1vdXNldHJhY2tvdXQiJmFtcDtndDsKKyAgICAgICAgICAgICAgIHNldEF0dHJpYnV0ZSgnYmdjb2xvcicsIG51bGwpOyAvLyBub3JtYWwKKyAgICAgICAgICAgICZhbXA7bHQ7L2hhbmRsZXImYW1wO2d0OworICAgICAgICAgICAgJmFtcDtsdDtoYW5kbGVyIG5hbWU9Im9ubW91c2V0cmFja3VwIiZhbXA7Z3Q7CisgICAgICAgICAgICAgICBzZXRBdHRyaWJ1dGUoJ2JnY29sb3InLCBudWxsKTsgLy8gbm9ybWFsCisgICAgICAgICAgICAgICBjYW52YXMuZHJhZ2ltYWdlLmRyb3Bjb21wbGV0ZSh0aGlzKTsKKyAgICAgICAgICAgICAgIERlYnVnLndyaXRlKCdkcm9wcGVkOiAnK2RyYWdpbWFnZS5zb3VyY2UudGV4dCk7CisgICAgICAgICAgICAmYW1wO2x0Oy9oYW5kbGVyJmFtcDtndDsKKyAgICAgICAgJmFtcDtsdDsvY2xhc3MmZ3Q7CisgICAgICAgICZsdDsvZXhhbXBsZSZndDsKKyAgICAgICAgCisgICAgICAgIEBhY2Nlc3MgcHVibGljCisgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImNoZWNrZHJhZ3N0YXRlIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6c3RhdGUiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkcmFnZ2VybmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJkcmFnaW1hZ2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBhbiBpbnN0YW5jZSBzdWJjbGFzcyBvZiBiYXNlZHJhZ2ltYWdlIHRoYXQgZGVmaW5lcyB0aGUKKyAgICAgICAgIHZpc3VhbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgaXRlbSB3aGlsZSBpdCBpcyBiZWluZyBkcmFnZ2VkCisgICAgICAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ0aWNrbGFiZWwiIHR5cGU9Imx6eDp0aWNrbGFiZWwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBMYWJlbHMgYWxvbmcgdGhlIHRpY2sgYXhlcy4gRWl0aGVyIGluY3JlbWVudGFsLCBvciwgaW4gYSBiYXJjaGFydCwKKyAgICAgICAgZGV0ZXJtaW5lZCBieSBzcGVjaWZpZWQgZGF0YS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idGlja2xhYmVsIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imx0ZXh0c2l6ZSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMTAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgc2l6ZSBvZiB0aGUgdGV4dCBmb3IgdGhpcyBsYWJlbC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imx0ZXh0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgdGV4dCBvZiB0aGlzIGxhYmVsLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibHRjb2xvciIgdHlwZT0ibHp4OmNvbG9yIiBkZWZhdWx0PSIjMDAwMDAwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIGNvbG9yIG9mIHRoaXMgbGFiZWwncyB0ZXh0LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWxhbmdsZSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iJG9uY2V7bnVsbH0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBYWCBUbyBiZSBpbXBsZW1lbnRlZDogVGhlIHJvdGF0aW9uIG9mIHRoaXMgcGFydGljdWxhciBsYWJlbC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0icmFkaW9pdGVtIiB0eXBlPSJseng6cmFkaW9pdGVtIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgIEEgc2VsZWN0YWJsZSBsaXN0IGl0ZW0gd2hpY2ggd29ya3MgbGlrZSBhIFJhZGlvIEJ1dHRvbgorICAgICAgICAgICAgdGhvdWdoIHVzZXMgYW4gaWNvbiBpbnN0ZWFkIG9mIHJhZGlvIGJ1dHRvbiBncmFwaGljcy4KKyAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJyYWRpb2l0ZW0iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNlbGlzdGl0ZW0iPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJhc2Vncmlkcm93IiB0eXBlPSJseng6YmFzZWdyaWRyb3ciID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImJhc2Vncmlkcm93IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZWNvbXBvbmVudCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN0eWxlUmVndWxhckNvbG9yIiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9ImJsYWNrIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VsZWN0ZWRDb2xvciIgdHlwZT0ibHp4OmNvbG9yIiBkZWZhdWx0PSJibGFjayIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlbGVjdGVkIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VsZWN0YWJsZSIgdHlwZT0ibHp4OmJvb2xlYW4iID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWd1bGFyQ29sb3IiIHR5cGU9Imx6eDpjb2xvciIgZGVmYXVsdD0iYmxhY2siID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvd25lckdyaWQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uc2VsZWN0ZWQiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxpbmVDb2xvciIgdHlwZT0ibHp4OmNvbG9yIiBkZWZhdWx0PSJibGFjayIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImhpZ2hsaWdodGVkIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaGlnaGxpZ2h0Q29sb3IiIHR5cGU9Imx6eDpjb2xvciIgZGVmYXVsdD0iYmxhY2siID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJhc2VkYXRlcGlja2VyZGF5IiB0eXBlPSJseng6YmFzZWRhdGVwaWNrZXJkYXkiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImJhc2VkYXRlcGlja2VyZGF5IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlbGVjdGVkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJbmRpY2F0ZXMgaWYgdGhpcyBkYXkgaXMgY3VycmVudGx5IHNlbGVjdGVkIAorICAgICAgICAgICAgICBAa2V5d29yZHMgcHVibGljCisgICAgICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWxlY3RhYmxlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEluZGljYXRlcyBpZiB0aGlzIGRheSBpcyBzZWxlY3RhYmxlLiAgVGhlIGRheSBpcyBzZWxlY3RhYmxlIGlmIAorICAgICAgICAgICAgICBpdCBpcyB3aXRoaW4gdGhlIHJhbmdlIG9mIHBvc3NpYmxlIHNlbGVjdGVkIGRhdGVzIAorICAgICAgICAgICAgICBAa2V5d29yZHMgcHVibGljIAorICAgICAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGlzYWJsZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEluZGljYXRlcyBpZiB0aGlzIGRheSBzaG91bGQgYmUgZW5hYmxlZCBvciBkaXNhYmxlZC4gIFRoZSBkYXkgCisgICAgICAgICAgICAgIHdvdWxkIGJlIGRpc2JsZWQgaWYgaXQgc2hvdWxkIG5vdCBzaG93IGl0cyBkYXludW0uCisgICAgICAgICAgICAgIEBrZXl3b3JkcyBwdWJsaWMgCisgICAgICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkYXludW0iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBkYXkgb2YgdGhlIG1vbnRoIHRvIGJlIGRpc3BsYXllZCAKKyAgICAgICAgICAgICAgQGtleXdvcmRzIHB1YmxpYyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ2aWV3c3Bvb2xtYW5hZ2VyIiB0eXBlPSJseng6dmlld3Nwb29sbWFuYWdlciIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEBrZXl3b3JkIHByaXZhdGUgCisgICAgTWFuYWdlIGEgaGFzaCB0YWJsZSBvZiB2aWV3c3Bvb2wgCisgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idmlld3Nwb29sbWFuYWdlciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwb29scyIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQGtleXdvcmQgcHJpdmF0ZSAKKyAgICBNYW5hZ2UgYSBoYXNoIHRhYmxlIG9mIHZpZXdzcG9vbCAKKyAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJkYXRhcGF0aCIgdHlwZT0ibHp4OmRhdGFwYXRoIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CitBIGN1cnNvciBpbiBhIGRhdGFzZXQuCitBIGRhdGFwb2ludGVyIGlzIGFuIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgYSBwb2ludGVyIHRvIGEgbm9kZSBpbiBhIGx6LmRhdGFzZXQuIFRoZSBkYXRhcG9pbnRlciBjYW4gYmUgcmVwb3NpdGlvbmVkIHVzaW5nIGVpdGhlciBjdXJzb3IgbW92ZW1lbnRzIGNhbGxzIHN1Y2ggYXMgTHpEYXRhcG9pbnRlci5zZWxlY3ROZXh0KCksIG9yIGJ5IHJ1bm5pbmcgYW4gWFBhdGggcmVxdWVzdCB2aWEgTHpEYXRhcG9pbnRlci5zZXRYUGF0aCgpLgorCitEYXRhcG9pbnRlcnMgc3VwcG9ydCBhIHN1YnNldCBvZiB0aGUgWFBhdGggc3BlY2lmaWNhdGlvbiwgd2hpY2ggdXNlcyBhIG5vdGF0aW9uIHNpbWlsYXIgdG8gdGhlIFVOSVggZmlsZS1zeXN0ZW0gdG8gcmVmZXIgdG8gbm9kZXMgd2l0aGluIGEgZGF0YXNldC4gT25jZSBhIGRhdGFwb2ludGVyIGlzIGJvdW5kIHRvIGEgbm9kZSBpbiBhIGRhdGFzZXQgaXQgd2lsbCBrZWVwIHBvaW50aW5nIHRvIHRoYXQgbm9kZSB1bnRpbCBpdCBpcyBtb3ZlZC4gSWYgdGhlIGRhdGFzZXQgaXMgZWRpdGVkLCB0aGUgYmVoYXZpb3Igb2YgdGhlIGRhdGFwb2ludGVyIHdpbGwgYmUgY29udHJvbGxlZCBieSBpdHMgcmVydW54cGF0aCBhdHRyaWJ1dGUuIElmIHRoaXMgYXR0cmlidXRlIGlzIHRydWUsIGl0IHdpbGwgY29udGludWUgcG9pbnRpbmcgdG8gaXRzIGN1cnJlbnQgbm9kZSBhcyBsb25nIGFzIGl0IGlzIHZhbGlkLiAKKyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJkYXRhcGF0aCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmRhdGFwb2ludGVyIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3BhY2luZyIgdHlwZT0ibHp4Om51bWJlciIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCVRoZSBzcGFjaW5nIChpbiBwaXhlbHMpIGJldHdlZW4gcmVwbGljYXRlZCB2aWV3cy4KK1tOb3RlXSAJTm90ZQorVGhpcyBhdHRyaWJ1dGUgaXMgb25seSBhdmFpbGFibGUgaWYgcmVwbGljYXRpb24gaXMgc2V0IHRvIGVpdGhlciAibGF6eSIgb3IgInJlc2l6ZSIuICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic29ydHBhdGgiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorQW4gWFBhdGggdG8gdXNlIHRvIG9idGFpbiB0aGUgc29ydCBrZXkgZm9yIHNvcnRpbmcgaWYgcmVwbGljYXRpb24gb2NjdXJzLiBUbyBjaGFuZ2UgdGhpcyBhdHRyaWJ1dGUsIHVzZSAuc2V0QXR0cmlidXRlKCdzb3J0cGF0aCcsIC4uLiksICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic29ydG9yZGVyIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKwlUaGUgb3JkZXIgdG8gdXNlIHRvIHNvcnQgdGhlIGRhdGFzZXQgaWYgcmVwbGljYXRpb24gb2NjdXJzLiBPbmUgb2YgImFzY2VuZGluZyIgb3IgImRlc2NlbmRpbmciIHRvIHVzZSBidWlsdCBpbiBkaWN0aW9uYXJ5IHNvcnQsIG9yIGEgZnVuY3Rpb24gd2hpY2ggY29tcGFyZXMgdHdvIHN0cmluZ3MgYW5kIHJldHVybnMgMSBpZiB0aGUgc3RyaW5ncyBhcmUgaW4gb3JkZXIsIDAgaWYgdGhleSBhcmUgdGhlIHNhbWUsIGFuZCAtMSBpZiB0aGV5IGFyZSBvdXQgb2Ygb3JkZXIuIFRvIGNoYW5nZSB0aGlzIGF0dHJpYnV0ZSwgdXNlIHNldEF0dHJpYnV0ZSgnc29ydG9yZGVyJywgLi4uKS4gIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZXBsaWNhdGlvbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJub3JtYWwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKwlEZXRlcm1pbmVzIHdoZXRoZXIgdG8gdXNlIG5vcm1hbCBvciBsYXp5IHJlcGxpY2F0aW9uLCBpZiB0aGUgZGF0YXBhdGggbWF0Y2hlcyBtb3JlIHRoYW4gb25lIG5vZGUuIFNlZSB0aGUgc2VjdGlvbiBvbiBSZXBsaWNhdGlvbiBpbiB0aGUgR3VpZGUgZm9yIGluZm9ybWF0aW9uIGFib3V0IHRoZSB1c2Ugb2YgdGhpcyBhdHRyaWJ1dGUuCitbTm90ZV0gCU5vdGUKK1RoZSBjaG9pY2Ugb2YgcmVwbGljYXRpb24gc3R5bGUgaW1wbGllcyBhIGNob2ljZSBvZiByZXBsaWNhdGlvbiBtYW5hZ2VyLiBFYWNoIHJlcGxpY2F0aW9uIG1hbmFnZXIgbWF5IGhhdmUgYWRkaXRpb25hbCBhdHRyaWJ1dGVzIHdoaWNoIGFyZSBzcGVjaWZpZWQgYXMgYXR0cmlidXRlcyBvZiB0aGUgZGF0YXBhdGguIEZvciBleGFtcGxlLCBsei5MYXp5UmVwbGljYXRpb25NYW5hZ2VyIHRha2VzIGF4aXMgYW5kIHNwYWNpbmcgYXR0cmlidXRlcy4gU2VlIHRoZSBkb2N1bWVudGFpb24gZm9yIHRoZSBjb3JyZXNwb25kaW5nIHJlcGxpY2F0aW9uIG1hbmFnZXIgZm9yIGRldGFpbGVkIGluZm9ybWF0aW9uIG9uIHRoZXNlIGFkZGl0aW9uYWwgYXR0cmlidXRlcy4KKworT25lIG9mOiAJJ25vcm1hbCcgfCAnbGF6eScgfCAncmVzaXplJyAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBvb2xpbmciIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCQlUaGlzIGF0dHJpYnV0ZSBhcHBsaWVzIHRvIGRhdGFwYXRocyB3aGljaCBtYXRjaCBtdWx0aXBsZSBub2RlcyBhbmQgZm9yY2UgcmVwbGljYXRpb24uIElmIHBvb2xpbmcgaXMgdHJ1ZSwgdmlld3MgdGhhdCBhcmUgZGF0YS1ib3VuZCB0byB0aGlzIGRhdGFwYXRoIGFyZSByZWN5Y2xlZCBpZiB0aGUgZGF0YXNldCBjaGFuZ2VzLiBPdGhlcndpc2UsIHZpZXdzIGFyZSBkZWxldGVkIHdoZW4gdGhlIGRhdGEgbm9kZXMgdGhleSBhcmUgYm91bmQgdG8gZGlzYXBwZWFyLCBhbmQgY3JlYXRlZCB3aGVuIG5ldyBkYXRhIG5vZGVzIG1hdGNoIHRoZSBkYXRhcGF0aC4gU2VlIHRoZSBzZWN0aW9uIG9uIFBvb2xpbmcgaW4gdGhlIEd1aWRlIGZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdXNlIG9mIHRoaXMgYXR0cmlidXRlLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYXhpcyIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisJVGhlIGRpcmVjdGlvbiBpbiB3aGljaCB0aGUgcmVwbGljYXRlZCBlbGVtZW50cyB3aWxsIGJlIGxheWVkIG91dC4KKwkJTm90ZQorVGhpcyBhdHRyaWJ1dGUgaXMgb25seSBhdmFpbGFibGUgaWYgcmVwbGljYXRpb24gaXMgc2V0IHRvIGVpdGhlciAibGF6eSIgb3IgInJlc2l6ZSIuICAKKwlPbmUgb2Y6ICJ4IiB8ICJ5IiAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iaWNvbnRhYiIgdHlwZT0ibHp4Omljb250YWIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBBIHRhYiBpdGVtIGZvciB1c2UgaW4gc2lkZWJhci5senggLSBzd2l0Y2hlcyBiZXR3ZWVuIGxpc3RwYW5lbCB2aWV3cyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJpY29udGFiIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZWxpc3RpdGVtIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWxfeSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSItMSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHRoZSB5IG9mZnNldCBmb3IgdGhlIGxhYmVsIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbnNldF94IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjEwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgdGhlIGljb24gYW5kIHRleHQgYXJlIGNvbnRhaW5lZCBpbiBvbmUgdmlldywgYW5kIGluc2V0X3ggc2V0cyB0aGUgeCBmb3IgaXRzIHBvc2l0aW9uIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpY29ubmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBvcHRpb25hbCBpY29uIGZvciB0YWIgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imljb25feSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgdGhlIHkgcG9zdGlvbiBvZiB0aGUgaWNvbiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJsaW5lc3R5bGUiIHR5cGU9Imx6eDpsaW5lc3R5bGUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBzdHlsZSBmb3IgcG9pbnQgb3IgYm9yZGVyCisgICAgICBAYWNjZXNzIHB1YmxpYworICAgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibGluZXN0eWxlIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZXN0eWxlIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHlwZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJzb2xpZCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorICdzb2xpZCcsICdkb3R0ZWQnIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzaXplIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgcGl4ZWwgc2l6ZSBmb3IgdGhlIHN0cm9rZSBvZiB0aGUgbGluZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sb3IiIHR5cGU9Imx6eDpjb2xvciIgZGVmYXVsdD0iMHgwMDAwMDAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBSR0IgY29sb3Igb24gdGhlIGF4aXMgbGluZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJzbGlkZXJ0aHVtYiIgdHlwZT0ibHp4OnNsaWRlcnRodW1iIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgdGhlIHZpc3VhbCB0aHVtYiB0aGUgdXNlciBkcmFncyB0byBzZWxlY3QgYSB2YWx1ZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJzbGlkZXJ0aHVtYiIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmJhc2VzbGlkZXJ0aHVtYiI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZGF0ZXBpY2tlciIgdHlwZT0ibHp4OmRhdGVwaWNrZXIiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImRhdGVwaWNrZXIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNlZGF0ZXBpY2tlciI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN0YXJ0QXNJY29uIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFNldCB0byB0cnVlIHRvIGluaXRpYWxseSBzaG93IHRoZSBkYXRlcGlja2VyIGFzIGFuCisgICAgICAgICAgICAgIGljb24sIG90aGVyd2lzZSBzZXQgdG8gZmFsc2UuCisgICAgICAgICAgICAgIEBrZXl3b3JkcyBwdWJsaWMgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9sZHZhbHVlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbGxvd2RyYWciIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQGtleXdvcmRzIHB1YmxpYyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJsaW5lY2hhcnRwbG90YXJlYSIgdHlwZT0ibHp4OmxpbmVjaGFydHBsb3RhcmVhIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQGtleXdvcmRzIHByaXZhdGUKKyAgICAgcGxvdGFyZWEgb2YgbGluZWNoYXJ0IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImxpbmVjaGFydHBsb3RhcmVhIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlydHVhbGRyYXd2aWV3Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJUZXN0U3VpdGUiIHR5cGU9Imx6eDpUZXN0U3VpdGUiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlRlc3RTdWl0ZSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OlRlc3QiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbnRlc3RzdGFydCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib250ZXN0ZmluaXNoIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbnRlc3RmYWlsIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbnN1aXRlc3RhcnQiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uc3VpdGVmaW5pc2giIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbnRyb2xQYW5lbCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIke2NhbnZhcy5senVuaXRDb250cm9sUGFuZWx9IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJfZGF0ZXBpY2tlcl9kaXJCdXR0b24iIHR5cGU9Imx6eDpfZGF0ZXBpY2tlcl9kaXJCdXR0b24iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBAYWNjZXNzIHByaXZhdGUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iX2RhdGVwaWNrZXJfZGlyQnV0dG9uIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZWJ1dHRvbiI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iY29sb3JzbGlkZXIiIHR5cGU9Imx6eDpjb2xvcnNsaWRlciIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iY29sb3JzbGlkZXIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJpbnB1dHRleHQiIHR5cGU9Imx6eDppbnB1dHRleHQiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKworVGhlIGJhc2ljIGlucHV0LXRleHQgZWxlbWVudC4KK0phdmFTY3JpcHQ6IGx6LmlucHV0dGV4dAorCitUaGlzIHRhZyBjcmVhdGVzIGFuIGFyZWEgb2YgdGhlIGNhbnZhcyB0aGF0IHRoZSB1c2VyIGNhbiB1c2UgdG8gZWRpdCB0ZXh0LiBJdCBpcyBlcXVpdmFsZW50IHRvIHRoZSBIVE1MICZsdDtpbnB1dCB0eXBlPSJ0ZXh0IiZndDssICZsdDtpbnB1dCB0eXBlPSJwYXNzd29yZCImZ3Q7LCBhbmQgdGV4dGFyZWEgdGFncy4KKworU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgJmx0O3RleHQmZ3Q7IHRhZyBmb3IgYSBkZXNjcmlwdGlvbiBvZiB0aGUgd2lkdGggYW5kIGhlaWdodCBhdHRyaWJ1dGVzLCBhbmQgb2Ygc2Nyb2xsaW5nLiAKKyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJpbnB1dHRleHQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp0ZXh0Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGFzc3dvcmQiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCUlmIHRydWUsIHRoZSBpbnB1dHRleHQgY29udGVudHMgd2lsbCBiZSBvYnNjdXJlZCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25lbmFibGVkIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KK1NlbnQgd2hlbmV2ZXIgdGhlIHRleHQgZmllbGQgaXMgZW5hYmxlZC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVuYWJsZWQiIHR5cGU9Imx6eDpib29sZWFuIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisJSWYgdHJ1ZSwgdGhlIGlucHV0dGV4dCB3aWxsIGJlIGVkaXRhYmxlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImxhenlyZXBsaWNhdG9yIiB0eXBlPSJseng6bGF6eXJlcGxpY2F0b3IiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImxhenlyZXBsaWNhdG9yIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6cmVwbGljYXRvciI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsb25lc29mZnNldCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xvbmVkZWwiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0idmlkZW9zY3JlZW4iIHR5cGU9Imx6eDp2aWRlb3NjcmVlbiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHVzZWQgYnkgdmlkZW9wbGF5ZXIgY29tcG9uZW50CisgICAgICAgICAgQGFjY2VzcyBwcml2YXRlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InZpZGVvc2NyZWVuIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZvbHVtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIxLjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2aWRlb1dpZHRoIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiR7ICAgICAgICAgICAgIE1hdGgubWluKHRoaXMuaW5uZXJXaWR0aCwgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbm5lckhlaWdodCAqIHRoaXMuYXNwZWN0UmF0aW8pfSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZpZGVvSGVpZ2h0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiR7ICAgICAgICAgICAgIE1hdGgubWluKHRoaXMuaW5uZXJIZWlnaHQsICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5uZXJXaWR0aCAvIHRoaXMuYXNwZWN0UmF0aW8pfSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVybCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0eXBlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Imh0dHAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdGFydHRpbWUiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbm5lcldpZHRoIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiR7ICAgICAgICAgICAgIHRoaXMud2lkdGggLSAodGhpcy5ib3JkZXJMZWZ0ICsgdGhpcy5ib3JkZXJSaWdodCl9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgdGhlIGFjdHVhbCB3aWR0aCBvZiB0aGUgdmlkZW92aWV3IAorICAgICAgICAgICAgQGFjY2VzcyBwcml2YXRlCisgICAgICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbm5lckhlaWdodCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIkeyAgICAgICAgICAgICB0aGlzLmhlaWdodCAtICh0aGlzLmJvcmRlclRvcCArIHRoaXMuYm9yZGVyQm90dG9tKX0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyB0aGUgYWN0dWFsIGhlaWdodCBvZiB0aGUgdmlkZW92aWV3IAorICAgICAgICAgICAgQGFjY2VzcyBwcml2YXRlCisgICAgICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkZWJ1ZyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHRydWUgZm9yIHZlcmJvc2UgZGVidWcgbG9nZ2luZyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2FwdHVyaW5nIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyVG9wIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjUiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJib3JkZXJSaWdodCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSI1IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyTGVmdCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSI1IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyQm90dG9tIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjUiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhdXRvcGxheSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFzcGVjdFJhdGlvIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiRvbmNleyAgICAgICAgICAgICA0IC8gM30iID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Imx6cmFkaW9idXR0b24iIHR5cGU9Imx6eDpsenJhZGlvYnV0dG9uIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgU3ViY2xhc3Mgb2YgcmFkaW9idXR0b24gd2l0aCBjdXN0b21pemFibGUgbG9vay4gIGFwcHMgc2hvdWxkIGVpdGhlcgorICAgICAgICBpbmNsdWRlIGx6cmFkaW9fcmVzb3VyY2VzLmx6eCAodG8gZ2V0IGRlZmF1bHQgbG9vaykgb3IgZGVmaW5lCisgICAgICAgIGEgImx6cmFkaW9fcnNyYyIgcmVzb3VyY2Ugd2l0aCB0aGUgc2FtZSBmb3JtYXQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Imx6cmFkaW9idXR0b24iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNlcmFkaW9idXR0b24iPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZXh0X3kiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IiRvbmNle3RoaXMuX3JiLmhlaWdodC8yIC0gdGhpcy5fdGl0bGUuaGVpZ2h0LzJ9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHkgcG9zaXRpb24gb2YgdGhlIHRleHQgbGFiZWwuIERlZmF1bHQ6IGNlbnRlcmVkLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGV4dF94IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIkb25jZXt0aGlzLl9yYi53aWR0aCArIDJ9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHggcG9zaXRpb24gb2YgdGhlIHRleHQgbGFiZWwuIERlZmF1bHQ6IDIgcGl4ZWxzIHBhc3QKKyAgICAgICAgICAgICAgcmFkaW9idXR0b24gcmVzb3VyY2UuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9IlhNTEh0dHBSZXF1ZXN0IiB0eXBlPSJseng6WE1MSHR0cFJlcXVlc3QiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IlhNTEh0dHBSZXF1ZXN0IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6bm9kZSI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRpbWVvdXQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iNjAwMDAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdGF0dXNUZXh0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFN0cmluZyBtZXNzYWdlIGFjY29tcGFueWluZyB0aGUgc3RhdHVzIGNvZGUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN0YXR1cyIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIE51bWVyaWMgY29kZSByZXR1cm5lZCBieSBzZXJ2ZXIsIHN1Y2ggYXMgNDA0IGZvciAiTm90IEZvdW5kIiBvciAyMDAgZm9yICJPSyIgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlc3BvbnNlWE1MIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBET00tY29tcGF0aWJsZSBkb2N1bWVudCBvYmplY3Qgb2YgZGF0YSByZXR1cm5lZCBmcm9tIHNlcnZlciBwcm9jZXNzIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZXNwb25zZVRleHQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgU3RyaW5nIHZlcnNpb24gb2YgZGF0YSByZXR1cm5lZCBmcm9tIHNlcnZlciBwcm9jZXNzIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWFkeVN0YXRlIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgIE9iamVjdCBzdGF0dXMgaW50ZWdlcjogMCBVbmluaXRpYWxpc2VkIFRoZSBpbml0aWFsIHZhbHVlLiAxIE9wZW4gVGhlIG9wZW4oKSBtZXRob2QgaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5IGNhbGxlZC4gCisgICAgICAgICAgICAgIDIgU2VudCBUaGUgc2VuZCgpIG1ldGhvZCBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgY2FsbGVkLCBidXQgbm8gZGF0YSBoYXMgeWV0IGJlZW4gcmVjZWl2ZWQuIDMgUmVjZWl2aW5nIERhdGEgaXMgYmVpbmcgcmVjZWl2ZWQsIAorICAgICAgICAgICAgICBidXQgdGhlIGRhdGEgdHJhbnNmZXIgaXMgbm90IHlldCBjb21wbGV0ZS4gNCBMb2FkZWQgVGhlIGRhdGEgdHJhbnNmZXIgaGFzIGJlZW4gY29tcGxldGVkLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icHJveGllZCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIkb25jZXtjYW52YXMucHJveGllZH0iID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwYXJzZXhtbCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJ0cnVlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25yZWFkeXN0YXRlY2hhbmdlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJoZWFkZXJzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InZhbHVlbGluZXN0eWxlIiB0eXBlPSJseng6dmFsdWVsaW5lc3R5bGUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyB2YWx1ZWxpbmVzdHlsZSBpcyB1c2VkIHRvIHNldCBzdHlsZSB0byB0aGUgCisgICAgIE5PVEU6IHZhbHVlbGluZXN0eWxlIGV4dGVuZHMgYmFzZXN0eWxlCisgICAgIEBhY2Nlc3MgcHVibGljCisgICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InZhbHVlbGluZXN0eWxlIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZXN0eWxlIj4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJmaWxldXBsb2FkIiB0eXBlPSJseng6ZmlsZXVwbG9hZCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCisgICAgQHRvcGljIEluY3ViYXRvcgorICAgIEBzdWJ0b3BpYyBDb21wb25lbnRzCis8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJmaWxldXBsb2FkIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVwbG9hZGVuYWJsZSIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgRW5hYmxlIHVwbG9hZC4gVHJ1ZSB0byBlbmFibGUgdXBsb2FkaW5nLCBmYWxzZSB0byBkaXNhYmxlIHVwbG9hZGluZy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1zZyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBtZXNzYWdlIG9mIGZlZWRiYWNrIHRvIHVzZXIgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1heHNpemUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMTAwMDAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBNYXggZmlsZSBzaXplIGluIGJ5dGVzIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmaWxlcmVmIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiRvbmNle25ldyBmbGFzaC5uZXQuRmlsZVJlZmVyZW5jZSgpfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGZpbGUgcmVmZXJlbmNlLCBmb3IgaW50ZXJuYWwgdXNlIAorICAgICAgICAgICAgQGFjY2VzcyBwcml2YXRlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImNvbW1hbmQiIHR5cGU9Imx6eDpjb21tYW5kIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisKKyAgIAorICAgIEBjb3B5cmlnaHQgQ29weXJpZ2h0IDIwMDEtMjAxMCBMYXN6bG8gU3lzdGVtcywgSW5jLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAgICAgICAgICAgICAgIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMuCisgICAKKyAgICBAYWZmZWN0cyBsemNvbW1hbmQKKyAgICBAYWNjZXNzIHB1YmxpYworICAgIEB0b3BpYyBMRkMKKyAgICBAc3VidG9waWMgVmlld3MKKyAgICBAZGV2bm90ZSBBIGNvbW1hbmQgaXMgYW4gb2JqZWN0IHRoYXQgc2VuZHMgYW4gZXZlbnQgaW4gcmVzcG9uc2UgdG8ga2V5Ym9hcmQgaW5wdXQuCisgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImNvbW1hbmQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpub2RlIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25zZWxlY3QiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCisgICAgSWYgdGhlIGNvbW1hbmQgaXMgYWN0aXZlLCB0aGlzIGV2ZW50IGlzIHNlbnQKKyAgICB3aGVuIHRoZSBrZXlzIGFycmF5IGFyZSBwcmVzc2VkIHNpbXVsdGFuZW91c2x5LgorICAgIEBsenh0eXBlIGV2ZW50CisgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJrZXlzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBhcnJheSBvZiBrZXlzIChzdHJpbmdzKSB0aGF0LCB3aGVuIHByZXNzZWQgdG9nZXRoZXIsCisgICAgY2F1c2UgdGhlIG9uc2VsZWN0IGV2ZW50IG9mIHRoZSBjb21tYW5kIHRvIGJlIHNlbnQuIEZvciBleGFtcGxlOgorICAgIHNldEF0dHJpYnV0ZSgna2V5JywgWydhJywgJ3NoaWZ0J10pCisgICAgQHR5cGUgW1N0cmluZ10KKyAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImtleSIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisKKyAgV1RGPyAgU2VlIExQUC00OTgyLCBMUFAtNzgxNAorICBOZWNlc3NhcnkgdG8gYWRkICJrZXkiIHRvIHRoZSBzY2hlbWEKKyAgQGFjY2VzcyBwcml2YXRlCis8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWN0aXZlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCisgICAgdHJ1ZSBpZiB0aGUgY29tbWFuZCBpcyBjdXJyZW50bHkgYWN0aXZlLgorICAgIFRoZSBkZWZhdWx0IGlzICZsdDtpJmd0O3RydWUmbHQ7L2kmZ3Q7LgorICAgIEB0eXBlIEJvb2xlYW4KKyAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IkRpc3BsYXlLZXlzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Intjb250cm9sOidDdHJsJywgc2hpZnQ6J1NoaWZ0JywgYWx0OidBbHQnfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCisgKiBNYXBwaW5nIGZyb20ga2V5IG5hbWVzIHRvIGRpc3BsYXkgc3RyaW5ncyB1c2VkIGJ5IGtleXNUb1N0cmluZworICogQHR5cGUgRGljdGlvbmFyeQorICogQGtleXdvcmRzIHJlYWQtb25seQorIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImNvbG9ybWVudSIgdHlwZT0ibHp4OmNvbG9ybWVudSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iY29sb3JtZW51IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZXRyYWNrZ3JvdXAiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvd25lciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJkYXRhc3R5bGUiIHR5cGU9Imx6eDpkYXRhc3R5bGUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBkYXRhc2VyaWVzc3R5bGUgaXMgdXNlZCBmb3IgZHJhd2luZyB0aGUgYXBwZWFyYW5jZSBvZiBhIGRhdGFzZXJpZXMKKyAgICAgIEBhY2Nlc3MgcHVibGljCisgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImRhdGFzdHlsZSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmJhc2VzdHlsZSI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iaG90c3BvdCIgdHlwZT0ibHp4OmhvdHNwb3QiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKworVGhpcyBjbGFzcyBpcyBhIGNvbnRyYWN0IGludGVyZmFjZSBmb3IgaG90c3BvdHMgdGhhdCBjYW4gYmUgdXNlZAorYnkgdGhlIGltYWdlbWFwIGNsYXNzLiBBIGdlbmVyaWMgaG90c3BvdCBkb2VzIHRocmVlIHRoaW5nczoKKzEuIFRlbGxzIHVzIGlmIGl0IGNvbnRhaW5zIGEgcG9pbnQKKzIuIFBlcmZvcm1zIHNvbWUgYWN0aW9uIG9uIGVudHJ5CiszLiBQZXJmb3JtcyBzb21lIGFjdGlvbiBvbiBsZWF2aW5nCis8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJob3RzcG90IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6bm9kZSI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iY2lyY2xlaG90c3BvdCIgdHlwZT0ibHp4OmNpcmNsZWhvdHNwb3QiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKworQSBnZW5lcmFsIGhvdHNwb3QgZm9yIHBvaW50cyBpbnNpZGUgYSBjaXJjbGUuCis8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJjaXJjbGVob3RzcG90IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6aG90c3BvdCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InkiIHR5cGU9Imx6eDpudW1iZXIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgWSBjb29yZGluYXRlIG9mIHRoZSBjZW50ZXIgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IngiIHR5cGU9Imx6eDpudW1iZXIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgWCBjb29yZGluYXRlIG9mIHRoZSBjZW50ZXIgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJhZGl1cyIgdHlwZT0ibHp4Om51bWJlciIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSByYWRpdXMgb2YgdGhlIGNpcmNsZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJiYXNlZGF0ZXBpY2tlcndlZWsiIHR5cGU9Imx6eDpiYXNlZGF0ZXBpY2tlcndlZWsiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImJhc2VkYXRlcGlja2Vyd2VlayIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkYXljbGFzcyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIkb25jZXtjbGFzc3Jvb3QuZGF5Y2xhc3N9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgTmFtZSBvZiB0aGUgZGF5IGNsYXNzIGluc3RhbmNlIHRvIHVzZS4gIAorICAgICAgICAgICAgICBAa2V5d29yZHMgcHVibGljIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InZpZGVvbGlicmFyeXBvcHVwIiB0eXBlPSJseng6dmlkZW9saWJyYXJ5cG9wdXAiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InZpZGVvbGlicmFyeXBvcHVwIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InlvdXJZIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ5b3VyWCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ieW91cldpZHRoIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ5b3VySGVpZ2h0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1cmwiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHlwZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0aXRsZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwb3B1cFdpZHRoIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjMwMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBvcHVwSGVpZ2h0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiR7dGhpcy5mLmhlaWdodCArIDJ9IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGluWW91cllQb3MiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMC4wIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGluWW91clhQb3MiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMC41IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGluWSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIkeyAgICAgICAgICAgICB0aGlzLnlvdXJZICsgICAgICAgICAgICAgKHRoaXMucGluWW91cllQb3MgKiB0aGlzLnlvdXJIZWlnaHQpIC0gICAgICAgICAgICAgKHRoaXMucGluTXlZUG9zICogdGhpcy5oZWlnaHQpfSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBpblgiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJHsgICAgICAgICAgICAgdGhpcy55b3VyWCArICAgICAgICAgICAgICh0aGlzLnBpbllvdXJYUG9zICogdGhpcy55b3VyV2lkdGgpIC0gICAgICAgICAgICAgKHRoaXMucGluTXlYUG9zICogdGhpcy53aWR0aCl9IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGluTXlZUG9zIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjEuMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBpbk15WFBvcyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIwLjUiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkZXNjcmlwdGlvbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhdHRzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InRhYnBhbmUiIHR5cGU9Imx6eDp0YWJwYW5lIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0YWJwYW5lIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZXRhYnBhbmUiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0YWJ3aWR0aCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iLTEiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBXaWR0aCBvZiB0aGUgdGFiIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRhYnBhbmUuIElmIG5vdCBzZXQsIHRoZSB0YWIKKyAgICAgICAgICAgICAgd2lsbCByZXNpemUgaXRzZWxmIHRvIGZpdC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYmFzZXRhYnBhbmVjb250ZW50IiB0eXBlPSJseng6YmFzZXRhYnBhbmVjb250ZW50IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhpcyBpcyB0aGUgY29udGVudCBvZiBhIGJhc2V0YWJwYW5lLgorICAgICAgICAgIEBrZXl3b3JkcyBwcml2YXRlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImJhc2V0YWJwYW5lY29udGVudCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJvcmRlcmlucHV0IiB0eXBlPSJseng6Ym9yZGVyaW5wdXQiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKworICAgICAgQHRvcGljIEluY3ViYXRvcgorICAgICAgQHN1YnRvcGljIENvbXBvbmVudHMKKyAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYm9yZGVyaW5wdXQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGV4dCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWx3aWR0aCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iODAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYWJlbHN0eWxlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBzaG91bGQgYmUgYW4gb2JqZWN0IG9mIHR5cGUgInRleHRzdHlsZSIgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxhYmVsIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaGFuZ2VkIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiR7dGhpcy50eHQuY2hhbmdlZH0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKworICAgICAgQHRvcGljIEluY3ViYXRvcgorICAgICAgQHN1YnRvcGljIENvbXBvbmVudHMKKyAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ic3RlcHBlciIgdHlwZT0ibHp4OnN0ZXBwZXIiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InN0ZXBwZXIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNlZm9ybWl0ZW0iPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdGVwIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibnVtYmVyQWxpZ24iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibGVmdCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1pbmltdW0iIHR5cGU9Imx6eDpudW1iZXIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtYXhpbXVtIiB0eXBlPSJseng6bnVtYmVyIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW5pdGlhbE51bWJlciIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0icmVjdGFuZ3VsYXJjaGFydCIgdHlwZT0ibHp4OnJlY3Rhbmd1bGFyY2hhcnQiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKworICAgICAgIGNsYXNzIHRoYXQgcHJvdmlkZXMgYWxsIGNvbW1vbiBmZWF0dXJlcyBmb3IgdGhlIHJlY3Rhbmd1bGFyIGNoYXJ0cyBsaWtlIGxpbmUsIGJhciBhbmQgY29sdW1uCisgICAgICAgQGFjY2VzcyBwdWJsaWMKKyAgICAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJyZWN0YW5ndWxhcmNoYXJ0IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6Y2hhcnQiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2ZXJ0aWNhbEdyaWRMaW5lcyIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgRGV0ZXJtaW5lcyBpZiB0aGUgdmVydGljYWwgZ3JpZCBsaW5lcyBhcmUgZ29pbmcgdG8gYmUgdXNlZCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25SZW5kZXJTdG9wIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvblJlbmRlclN0YXJ0IiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtaW55IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIG1pbmltdW0gdmlydHVhbCB2YWx1ZSB0byBiZSByZW5kZXJlZCBpbiB0aGUgJ3knIGF4aXMgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1pbngiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgbWluaW11bSB2aXJ0dWFsIHZhbHVlIHRvIGJlIHJlbmRlcmVkIGluIHRoZSAneCcgYXhpcyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWF4eSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMTAwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIG1heGltdW0gdmlydHVhbCB2YWx1ZSB0byBiZSByZW5kZXJlZCBpbiB0aGUgJ3knIGF4aXMgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1heHgiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjEwMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBtYXhpbXVtIHZpcnR1YWwgdmFsdWUgdG8gYmUgcmVuZGVyZWQgaW4gdGhlICd4JyBheGlzIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJob3Jpem9udGFsR3JpZExpbmVzIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJob3Jpem9udGFsR3JpZEJhbmRzIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBEZXRlcm1pbmVzIGlmIHRoZSBob3Jpem9udGFsIGdyaWQgbGluZXMgYXJlIGdvaW5nIHRvIGJlIHVzZWQgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImdyaWRsaW5lY29sb3IiIHR5cGU9Imx6eDpjb2xvciIgZGVmYXVsdD0iMHgwMDAwMDAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBAa2V5d29yZCBwcml2YXRlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkZWZhdWx0bWlueSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRlZmF1bHRtaW54IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGVmYXVsdG1heHkiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjEwMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRlZmF1bHRtYXh4IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxMDAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkYXRhU2VyaWVzTGVhZiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIke251bGx9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQGtleXdvcmQgcHJpdmF0ZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJtb2RhbGRpYWxvZyIgdHlwZT0ibHp4Om1vZGFsZGlhbG9nIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJtb2RhbGRpYWxvZyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OndpbmRvd3BhbmVsIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29udGVudF9pbnNldF90b3AiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMTAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgdG9wIGluc2V0IGZvciB0aGUgZGlhbG9nIGNvbnRlbnRzIGZyb20gdGhlIGVkZ2Ugb2YgdGhlIHdpbmRvdworICAgICAgICAgICAgICBpbm5lciBmcmFtZS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbnRlbnRfaW5zZXRfcmlnaHQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMTQiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgcmlnaHQgaW5zZXQgZm9yIHRoZSBkaWFsb2cgY29udGVudHMgZnJvbSB0aGUgZWRnZSBvZiB0aGUKKyAgICAgICAgICAgICAgd2luZG93IGlubmVyIGZyYW1lIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb250ZW50X2luc2V0X2xlZnQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMTQiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgbGVmdCBpbnNldCBmb3IgdGhlIGRpYWxvZyBjb250ZW50cyBmcm9tIHRoZSBlZGdlIG9mIHRoZQorICAgICAgICAgICAgICB3aW5kb3cgaW5uZXIgZnJhbWUuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb250ZW50X2luc2V0X2JvdHRvbSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIxMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBib3R0b20gaW5zZXQgZm9yIHRoZSBkaWFsb2cgY29udGVudHMgZnJvbSB0aGUgZWRnZSBvZiB0aGUKKyAgICAgICAgICAgICAgd2luZG93IGlubmVyIGZyYW1lLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJtZW51ZmxvYXRpbmdsaXN0IiB0eXBlPSJseng6bWVudWZsb2F0aW5nbGlzdCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEBhY2Nlc3MgcHJpdmF0ZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJtZW51ZmxvYXRpbmdsaXN0IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6ZmxvYXRpbmdsaXN0Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJab29tVmlldyIgdHlwZT0ibHp4Olpvb21WaWV3IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJab29tVmlldyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZXh0IiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvcGVuZWQiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsb3NlZCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJiYXNlY2hlY2tib3giIHR5cGU9Imx6eDpiYXNlY2hlY2tib3giID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBBIGNoZWNrYm94IGNvbXBvbmVudCByZXByZXNlbnRpbmcgYSBib29sZWFuLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJiYXNlY2hlY2tib3giIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNlZm9ybWl0ZW0iPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImdyaWRjb2x1bW4iIHR5cGU9Imx6eDpncmlkY29sdW1uIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJncmlkY29sdW1uIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZWdyaWRjb2x1bW4iPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzb3J0YWJsZSIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJZiB0cnVlLCB0aGUgY29sdW1uIGhlYWRlciBpcyBjbGlja2FibGUgYW5kIHdpbGwgaW5pdGlhdGUgYSAKKyAgICAgICAgICAgICAgc29ydCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2hvd2hlYWRlciIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJZiBzZXQgdG8gZmFsc2UsIHRoZW4gbm8gaGVhZGVyIHdpbGwgYmUgc2hvd24gZm9yIHRoaXMgY29sdW1uLjwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZXNpemVtYXJnaW4iIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjMiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgd2lkdGggb2YgdGhlIHJlc2l6ZXIgYmV0d2VlbiBjb2x1bW5zLjwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZXNpemFibGUiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSWYgc2V0IHRvIGZhbHNlLCB0aGUgY29sdW1uIGNhbm5vdCBiZSByZXNpemVkLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJpdGVtIiB0eXBlPSJseng6aXRlbSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iaXRlbSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzaG93Y29tcG9uZW50aGVscGVycyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvb3QiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0idGhpcyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlZmVyZW5jZSIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib3BlbmRlZmF1bHRwbGFjZW1lbnQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9wZW4iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc3ZpZXciIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibWV0aG9kIiB0eXBlPSJseng6bWV0aG9kIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQXR0YWNoZXMgYSBmdW5jdGlvbiBvciBldmVudCBoYW5kbGVyIHRvIGFuIG9iamVjdCBvciBjbGFzcy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibWV0aG9kIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpncm91cCByZWY9Imx6eDp0b3BMZXZlbEVsZW1lbnRzIiAvPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB0eXBlPSJ4czpzdHJpbmciIHVzZT0icmVxdWlyZWQiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyAgVGhlIG5hbWUgb2YgYSB2YXJpYWJsZSB0aGF0IHdpbGwgYmUgc2V0IHRvIHRoaXMgb2JqZWN0IHdoZW4gdGhlIGFwcGxpY2F0aW9uIGlzIHN0YXJ0ZWQuIElmIHRoaXMgZWxlbWVudCBpcyBkaXJlY3RseSB3aXRoaW4gYSBjYW52YXMgb3IgbGlicmFyeSBlbGVtZW50LCB0aGUgZ2xvYmFsIHZhcmlhYmxlIGFuZCB0aGUgY2FudmFzIHByb3BlcnR5IHdpdGggdGhpcyBuYW1lIHdpbGwgYmUgc2V0IHRvIHRoaXMgb2JqZWN0LiBJZiB0aGlzIGVsZW1lbnQgaXMgd2l0aGluIGFub3RoZXIgb2JqZWN0LCB0aGF0IG9iamVjdCdzIHByb3BlcnR5IHdpdGggdGhpcyBuYW1lIHdpbGwgYmUgc2V0IHRvIHRoaXMgb2JqZWN0LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYXJncyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgcGFyYW1ldGVyIG5hbWVzIG9mIHRoaXMgbWV0aG9kLiBUaGUgdmFsdWUgb2YgdGhpcyBhdHRyaWJ1dGUgaXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBKYXZhU2NyaXB0IGlkZW50aWZpZXJzLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWxsb2NhdGlvbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJpbnN0YW5jZXxjbGFzcyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIE9uZSBvZjoKK2NsYXNzCisgICAgVGhlIGF0dHJpYnV0ZSB3aWxsIGJlIGFuIGF0dHJpYnV0ZSBvZiB0aGUgY2xhc3M7IHRvIHJlZmVyIHRvIGl0LCB5b3Ugc2F5IGx6LmNsYXNzbmFtZS5hdHRyaWJ1dGVuYW1lIC4gCitpbnN0YW5jZQorICAgIEVhY2ggaW5zdGFuY2Ugd2lsbCBoYXZlIGFuIGF0dHJpYnV0ZSB3aXRoIHRoZSBzcGVjaWZpZWQgcHJvcGVydGllcyAoIG5hbWUgLCB0eXBlICwgdmFsdWUgLCBldGMuKS4gCisKK1lvdSBjYW4gc2V0IGFsbG9jYXRpb24gdG8gY2xhc3MgdG8gZ2V0IHN0YXRpYyBhdHRyaWJ1dGVzLiBTdGF0aWMgcHJvcGVydGllcyBhcmUgYXR0YWNoZWQgdG8gdGhlIGNsYXNzIGl0c2VsZiwgZm9yIGV4YW1wbGUgbHouY2xhc3NuYW1lIC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJiYXNlb3B0dHJlZW5vZGUiIHR5cGU9Imx6eDpiYXNlb3B0dHJlZW5vZGUiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImJhc2VvcHR0cmVlbm9kZSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdGFydGRyYWdkZWxheSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSI4MDAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdGFydGRyYWdkZWwiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9wZW4iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJHsgZG9wZW4gfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEEgYm9vbGVhbiB2YWx1ZSByZXByZXNlbnRpbmcgd2hldGhlciBvciBub3QgdGhpcyBub2RlCisgICAgICAgICAgICAgIGlzIG9wZW4uIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbmRlbnQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMTAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgYW1vdW50LCBpbiBwaXhlbHMsIHRvIGluZGVudCBlYWNoIGVsZW1lbnQgb2YgdGhlIHRyZWUuPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImhpZ2hsaWdodCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSWYgdHJ1ZSwgdGhpcyBlbGVtZW50IGlzIHNlbGVjdGVkIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkcmFnZ2luZyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRlcHRoIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiR7IGRkZXB0aCB9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQSAwLWJhc2VkIGRlcHRoIG51bWJlciB0aGF0IGluZGljYXRlcyB0aGUgZGVwdGggb2YgdGhpcworICAgICAgICAgICAgICBlbGVtZW50IGluIHRoZSB0cmVlLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJkYXRhbGlzdHNlbGVjdG9yIiB0eXBlPSJseng6ZGF0YWxpc3RzZWxlY3RvciIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGEgaGVscGVyIGNsYXNzIHRoYXQgd3JhcHMgdGhlIGRhdGFzZWxlY3Rpb25tYW5hZ2VyIGluIHNvbWUKKyAgICAgICAgaGlnaGVyIGxldmVsIEFQSXMsIHVzZWQgYnkgYmFzZWxpc3QgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iZGF0YWxpc3RzZWxlY3RvciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmRhdGFzZWxlY3Rpb25tYW5hZ2VyIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibXVsdGlzZWxlY3QiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIElmIG11bHRpc2VsZWN0IGlzIHRydWUsIG11bHRpcGxlIHNlbGVjdGlvbiBpcyBlbmFibGVkLgorICAgICAgICBXaGVuIHRoZSBzaGlmdCBrZXkgaXMgZG93biwgYSByYW5nZSBvZiBpdGVtcyBpcyBzZWxlY3RlZC4KKyAgICAgICAgV2hlbiB0aGUgY29udHJvbCBrZXkgaXMgZG93biwgYW55IGl0ZW0gbWF5IGJlIGFkZGVkIHRvIHRoZQorICAgICAgICBzZWxlY3Rpb24uCisgICAgICAgICAgICAgRGVmYXVsdDogZmFsc2UgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZ3JhZGllbnR2aWV3IiB0eXBlPSJseng6Z3JhZGllbnR2aWV3IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJncmFkaWVudHZpZXciIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpkcmF3dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN0cmV0Y2hXaWR0aCIgdHlwZT0ibHp4Om51bWJlciIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN0cmV0Y2hIZWlnaHQiIHR5cGU9Imx6eDpudW1iZXIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJncmFkaWVudFR5cGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibGluZWFyIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZ3JhZGllbnRPcmllbnRhdGlvbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJ2ZXJ0aWNhbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbG9yVG8iIHR5cGU9Imx6eDpjb2xvciIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbG9yRnJvbSIgdHlwZT0ibHp4OmNvbG9yIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyU2l6ZVRvcCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJvcmRlclNpemVSaWdodCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJvcmRlclNpemVMZWZ0IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyU2l6ZUJvdHRvbSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJvcmRlclNpemUiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJib3JkZXJDb2xvclRvcCIgdHlwZT0ibHp4OmNvbG9yIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyQ29sb3JSaWdodCIgdHlwZT0ibHp4OmNvbG9yIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyQ29sb3JMZWZ0IiB0eXBlPSJseng6Y29sb3IiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJib3JkZXJDb2xvckJvdHRvbSIgdHlwZT0ibHp4OmNvbG9yIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyQ29sb3IiIHR5cGU9Imx6eDpjb2xvciIgZGVmYXVsdD0iMHgwMDAwMDAiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImRyYWdnZXIiIHR5cGU9Imx6eDpkcmFnZ2VyIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJkcmFnZ2VyIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRleHQiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0idGFicyIgdHlwZT0ibHp4OnRhYnMiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRhYnMiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNldGFicyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRhYnNwYWNpbmciIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9Ii0xNSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFNwYWNpbmcgYmV0d2VlbiB0aGUgdGFicy4gRGVmYXVsdHMgdG8gLTE1IHNvIHRhYnMgb3ZlcmxhcC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRhYmFsaWduIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImxlZnQiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBBbGlnbiB0aGUgc2V0IG9mIHRhYnMgd2l0aGluIHRoZSBkaW1lbnNpb25zIG9mIHRoZSAidGFicyIKKyAgICAgICAgICAgICBjb250YWluZXIgKCJsZWZ0IiwgImNlbnRlciIsICJyaWdodCIpLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJzaW1wbGVkZWZhdWx0bGlzdCIgdHlwZT0ibHp4OnNpbXBsZWRlZmF1bHRsaXN0IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQSBsaXN0IGNsYXNzIHRoYXQgaGFuZGxlcyBhIGRlZmF1bHQgdmFsdWUuIAorICAgICAgICAgIElucHV0IGFuZCBvdXRwdXQgZm9yIHRoZSBsaXN0IGlzIGRlZmluZWQgdG8gYmUgaW4gdGhpcyBmb3JtYXQ6CisgICAgICAgICAgJmx0O2NvZGUmZ3Q7CisgICAgICAgICAgJmx0O2xpc3QgbmFtZT0iZnViYXIiJmd0OworICAgICAgICAgICAgJmx0O2l0ZW0gdGV4dD0iZm9vIiB2YWx1ZT0iYmFyIiBkZWZhdWx0PSJ0cnVlIi8mZ3Q7CisgICAgICAgICAgICAmbHQ7aXRlbSB0ZXh0PSJnb28iIHZhbHVlPSJtYXIiLyZndDsKKyAgICAgICAgICAmbHQ7L2xpc3QmZ3Q7CisgICAgICAgICAgJmx0Oy9jb2RlJmd0OworICAgICAgICAgCisgICAgICAgICAgQ3VycmVudGx5IG9ubHkgd29ya3Mgd2l0aCBkYXRhb3B0aW9uPSJsYXp5IiBvciAicG9vbGluZyIKKyAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJzaW1wbGVkZWZhdWx0bGlzdCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4Omxpc3QiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkZWZhdWx0aXRlbSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgTHpEYXRhRWxlbWVudCBvZiB0aGUgZGVmYXVsdCBub2RlIAorICAgICAgICAgICAgICBudWxsIG1lYW5zIHRoZSBsaXN0IGhhcyBubyBkZWZhdWx0IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhdXRvc2VsZWN0ZGVmYXVsdCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJ0cnVlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgU2V0IHRvIHRydWUgaWYgdGhlIGRlZmF1bHQgaXRlbSBzaG91bGQgYmUgc2VsZWN0ZWQgd2hlbmV2ZXIKKyAgICAgICAgICAgIGRhdGEgaXMgcmVjZWl2ZWQgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0idnNjcm9sbGJhciIgdHlwZT0ibHp4OnZzY3JvbGxiYXIiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InZzY3JvbGxiYXIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNlc2Nyb2xsYmFyIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGlzYWJsZWRiZ2NvbG9yIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJZiB0aGlzIGlzIGRlZmluZWQsIGl0IHdpbGwgYmUgdXNlZCBhcyB0aGUgc2Nyb2xsYmFyJ3MgYmFja2dyb3VuZAorICAgICAgICAgIGNvbG9yIHdoZW4gaXQgaXMgZGlzYWJsZWQuIElmIG5vdCBwcm92aWRlZCwgdGhlIHNjcm9sbGJhciB3aWxsIHVzZQorICAgICAgICAgIHRoZSBiZ2NvbG9yIG9mIGl0cyBjbG9zZXN0IHBhcmVudCB0aGF0IGhhcyBhIGJnY29sb3IgZGVmaW5lZC4gIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InBvbHlnb25ob3RzcG90IiB0eXBlPSJseng6cG9seWdvbmhvdHNwb3QiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKworQSBnZW5lcmFsIGhvdHNwb3QgZm9yIGFuIE4tc2lkZWQgcG9seWdvbi4KK1RoaXMgd2lsbCBjcmVhdGUgYSBwb2x5Z29uIHdob3NlIHNpZGVzIGFyZSBkZXNjcmliZWQKK2J5IG1vdmluZyBpbiBvcmRlciB0byB0aGUgcG9pbnRzIGFkZGVkIGJ5IGNhbGxpbmcgYWRkUG9pbnQsCityZXR1cm5pbmcgYmFjayB0byB0aGUgZmlyc3QgcG9pbnQgYWRkZWQgdG8gY2xvc2UgdGhlIHBvbHlnb24uCis8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJwb2x5Z29uaG90c3BvdCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmhvdHNwb3QiPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImRlYnVnZ2VyX3NoYWRvd19yaWdodCIgdHlwZT0ibHp4OmRlYnVnZ2VyX3NoYWRvd19yaWdodCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIAorICAgIERyb3Agc2hhZG93IGZvciB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgZGVidWdnZXIgd2luZG93IAorCisgICAgQGtleXdvcmRzIHByaXZhdGUKKzwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImRlYnVnZ2VyX3NoYWRvd19yaWdodCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImNvbG9yc3BvdCIgdHlwZT0ibHp4OmNvbG9yc3BvdCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iY29sb3JzcG90IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6Y29sb3JtZW51aXRlbSI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZGF0ZXBpY2tlcndlZWsiIHR5cGU9Imx6eDpkYXRlcGlja2Vyd2VlayIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoaXMgaXMgdGhlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBkYXRlcGlja2Vyd2VlayBmb3IgCisgICAgICAgICAgdGhlIGRhdGVwaWNrZXIgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iZGF0ZXBpY2tlcndlZWsiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNlZGF0ZXBpY2tlcndlZWsiPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJhc2VyYWRpb2J1dHRvbiIgdHlwZT0ibHp4OmJhc2VyYWRpb2J1dHRvbiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIENsYXNzIGJhc2VyYWRpb2J1dHRvbjogcmVwcmVzZW50cyBhIHNpbmdsZSByYWRpbyBidXR0b24uIElmIGdyb3VwbmFtZQorICAgICAgICAgICBpcyBkZWZpbmVkLCBpdCB3aWxsIHJlZmVyZW5jZSBhbiBiYXNlcmFkaW9ncm91cCB0aGF0J3MgbmFtZWQKKyAgICAgICAgICAgZ3JvdXBuYW1lLiBJZiBib3RoIGdyb3VwbmFtZSBhbmQgZ3JvdXAgYXJlIG5vdCBkZWZpbmVkLCB0aGlzCisgICAgICAgICAgIHJhZGlvYnV0dG9uIHdpbGwgYXR0ZW1wdCB0byB1c2UgYSBiYXNlcmFkaW9ncm91cCBhbmNlc3RvciBpbiBpdHMgdmlldworICAgICAgICAgICBoaWVyYXJjaHkuIElmIGl0IGNhbid0IGZpbmQgb25lLCBpdCB3aWxsIHVzZSBhIGRlZmF1bHQgYmFzZXJhZGlvZ3JvdXAKKyAgICAgICAgICAgd2l0aCBncm91cG5hbWUgJ2x6ZGVmYXVsdGdyb3VwJy4gSWYgdGhpcyByYWRpb2J1dHRvbiBpcyBpbnNpZGUgYQorICAgICAgICAgICBmb3JtLCBhbiBpbXBsaWNpdCBiYXNlcmFkaW9ncm91cCBpcyBjcmVhdGVkIGFzIGEgY2hpbGQgdGhlIGZvcm0uCisKKyAgICAgICAgICAgVGhlIGZpcnN0IHJhZGlvYnV0dG9uIGlzIHNwZWNpYWwgZm9yIGltcGxpY2l0bHkgY3JlYXRlZAorICAgICAgICAgICBiYXNlcmFkaW9ncm91cHMuIEEgYmFzZXJhZGlvZ3JvdXAgd2lsbCBpbmhlcml0IHRoZSBncm91cGRhdGFwYXRoLAorICAgICAgICAgICB1c2VkIGFzIHRoZSBiYXNlcmFkaW9ncm91cCdzIGRhdGFwYXRoLCBhbmQgc3VibWl0IGF0dHJpYnV0ZXMgZnJvbSB0aGUKKyAgICAgICAgICAgZmlyc3QgcmFkaW9idXR0b24sIHdoaWNoIGFyZSB1c2VkIGR1cmluZyBpdHMgaW5zdGFudGlhdGlvbi4gVGhvc2UKKyAgICAgICAgICAgc2FtZSBhdHRyaWJ1dGVzIGFyZSBpZ25vcmVkIGZvciBzdWJzZXF1ZW50IHJhZGlvYnV0dG9ucyBiZWxvbmdpbmcgaW4KKyAgICAgICAgICAgdGhlIHNhbWUgZ3JvdXAuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImJhc2VyYWRpb2J1dHRvbiIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmJhc2Vjb21wb25lbnQiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2YWx1ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVmFsdWUgb2YgdGhpcyByYWRpb2J1dHRvbi4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN1Ym1pdG5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHN1Ym1pdCBuYW1lIGZvciBhIGJhc2VyYWRpb2dyb3VwLiBUaGlzIG11c3QgYmUgc2V0IGJ5IHRoZSBmaXJzdAorICAgICAgICAgICAgICByYWRpb2J1dHRvbiBpbiBhIGJhc2VyYWRpb2dyb3VwIHRvIHRha2UgZWZmZWN0LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3VibWl0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9InRydWUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBXaGV0aGVyIGEgYmFzZXJhZGlvZ3JvdXAgd2lsbCBzZW5kIGl0cyBkYXRhIHdoZW4gYSBmb3JtIGlzCisgICAgICAgICAgICAgIHN1Ym1pdHRlZC4gVGhpcyBtdXN0IGJlIHNldCBieSB0aGUgZmlyc3QgcmFkaW9idXR0b24gaW4gYQorICAgICAgICAgICAgICBiYXNlcmFkaW9ncm91cCB0byB0YWtlIGVmZmVjdC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlbGVjdGVkIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVHJ1ZSBpZiByYWRpbydzIGdyb3VwIHZhbHVlIGlzIHRoZSBzYW1lIGFzIGdyb3VwJ3MuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbnNlbGVjdGVkIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBFdmVudCBzZW50IHdoZW4gc2VsZWN0ZWQgYXR0cmlidXRlIHNlbGVjdGVkIG9yIHVuc2VsZWN0ZWQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJncm91cG5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJG9uY2V7bnVsbH0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBOYW1lIG9mIGJhc2VyYWRpb2dyb3VwLiBJZiBub3QgZGVmaW5lZCwgaXQgd2lsbCB1c2UgZ3JvdXAgcmVmZXJlbmNlIGFzCisgICAgICAgICAgICAgIGl0cyBncm91cC4gSWYgYm90aCBncm91cG5hbWUgYW5kIGdyb3VwIGFyZSBub3QgZGVmaW5lZCwgdGhpcworICAgICAgICAgICAgICByYWRpb2J1dHRvbiB3aWxsIGF0dGVtcHQgdG8gdXNlIGEgYmFzZXJhZGlvZ3JvdXAgYW5jZXN0b3IgaW4gaXRzIHZpZXcKKyAgICAgICAgICAgICAgaGllcmFyY2h5LiBJZiBpdCBjYW4ndCBmaW5kIG9uZSwgaXQgd2lsbCB1c2UgYSBkZWZhdWx0IGJhc2VyYWRpb2dyb3VwCisgICAgICAgICAgICAgIHdpdGggZ3JvdXBuYW1lICdsemRlZmF1bHRncm91cCcuIElmIHRoaXMgcmFkaW9idXR0b24gaXMgaW5zaWRlIGEKKyAgICAgICAgICAgICAgZm9ybSwgYW4gaW1wbGljaXQgYmFzZXJhZGlvZ3JvdXAgaXMgY3JlYXRlZCBhcyBhIGNoaWxkIG9mIHRoZQorICAgICAgICAgICAgICBmb3JtLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZ3JvdXBkYXRhcGF0aCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIkb25jZXtudWxsfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSB2YWx1ZSBkYXRhcGF0aCBmb3IgYSBiYXNlcmFkaW9ncm91cC4gVGhpcyBtdXN0IGJlIHNldCBieSB0aGUgZmlyc3QKKyAgICAgICAgICAgICAgcmFkaW9idXR0b24gaW4gYSBiYXNlcmFkaW9ncm91cCB0byB0YWtlIGVmZmVjdC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imdyb3VwIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBSZWZlcmVuY2UgdG8gYmFzZXJhZGlvZ3JvdXAuIElmIGdyb3VwbmFtZSBpcyBkZWZpbmVkLCBpdCB3aWxsCisgICAgICAgICAgICAgIHJlZmVyZW5jZSBhbiBiYXNlcmFkaW9ncm91cCB0aGF0J3MgbmFtZWQgZ3JvdXBuYW1lLiBJZiBib3RoIGdyb3VwbmFtZQorICAgICAgICAgICAgICBhbmQgZ3JvdXAgYXJlIG5vdCBkZWZpbmVkLCB0aGlzIHJhZGlvYnV0dG9uIHdpbGwgYXR0ZW1wdCB0byB1c2UgYQorICAgICAgICAgICAgICBiYXNlcmFkaW9ncm91cCBhbmNlc3RvciBpbiBpdHMgdmlldyBoaWVyYXJjaHkuIElmIGl0IGNhbid0IGZpbmQgb25lLAorICAgICAgICAgICAgICBpdCB3aWxsIHVzZSBhIGRlZmF1bHQgYmFzZXJhZGlvZ3JvdXAgd2l0aCBncm91cG5hbWUKKyAgICAgICAgICAgICAgJ2x6ZGVmYXVsdGdyb3VwJy4gSWYgdGhpcyByYWRpb2J1dHRvbiBpcyBpbnNpZGUgYSBmb3JtLCBhbgorICAgICAgICAgICAgICBpbXBsaWNpdCBiYXNlcmFkaW9ncm91cCBpcyBjcmVhdGVkIGFzIGEgY2hpbGQgb2YgdGhlIGZvcm0uIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Il9mbG9hdHNoYWRvdyIgdHlwZT0ibHp4Ol9mbG9hdHNoYWRvdyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBzaGFkb3dzIHdpZHRoIGFuZCBoZWlnaHQgYXJlIHNldCB0byB0aGUgd2lkdGggYW5kIGhlaWdodCBvZiB0aGUgdmlldworICAgICAgICAgIGl0IGlzIHRyeWluZyB0byBhcHBseSBhIHNoYWRvdyB0by4KKyAgICAgICAgICBAa2V5d29yZHMgcHJpdmF0ZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJfZmxvYXRzaGFkb3ciIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2hhZG93c2l6ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSI1IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25jb3JuZXJyZXNvdXJjZW51bWJlciIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25ib3R0b212aXNpYmxlIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvZmZzZXR5IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjEwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29ybmVycmVzb3VyY2VudW1iZXIiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJvdHRvbXZpc2libGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZWRpdHRleHQiIHR5cGU9Imx6eDplZGl0dGV4dCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoaXMgY29tcG9uZW50IHByb3ZpZGVzIHRoZSBsb29rIGFuZCBmZWVsIGZvciB1c2VyIGVkaXRhYmxlIHRleHQsIGRhdGEKKyAgICAgICAgICBiaW5kaW5nLCBhbmQgZm9jdXMgZXZlbnRzLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJlZGl0dGV4dCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmJhc2Vmb3JtaXRlbSI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRleHRfeSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iJHttdWx0aWxpbmUgPyAyIDogTWF0aC5yb3VuZCgoKHRoaXMuaGVpZ2h0IC0gdGhpcy5maWVsZC5nZXRUZXh0SGVpZ2h0KCkpLzIpKX0gIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgdGhlIHkgcG9zaXRpb24gb2YgdGhlIHRleHQuIGRlZmF1bHQ6IGNlbnRlcmVkLCB1bmxlc3MgaXQgaXMgbXV0bHRpbGluZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVzaXphYmxlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgU2V0IHRvIHRydWUgaWYgeW91IHBsYW4gdG8gY2hhbmdlIHRoZSB3aWR0aCBvciBoZWlnaHQgb2YgdGhlCisgICAgICAgICAgICAgIGNvbXBvbmVudCBhdCBydW4tdGltZS4KKyAgICAgICAgICAgICAgQGtleXdvcmRzIGZpbmFsIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwYXR0ZXJuIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEEgcmVndWxhciBleHByZXNzaW9uIGRlc2NyaWJpbmcgc2V0IG9mIGNoYXJhY3RlcnMgYWxsb3dlZCBpbgorICAgICAgICAgICAgICB0aGlzIGZpZWxkLiBSZXN0cmljdCB0aGUgY2hhcmFjdGVycyB0aGF0IGNhbiBiZSBlbnRlcmVkIHRvIGEKKyAgICAgICAgICAgICAgcGF0dGVybiBzcGVjaWZpZWQgYnkgYSByZWd1bGFyIGV4cHJlc3Npb24uIEN1cnJlbnRseSBvbmx5IHRoZQorICAgICAgICAgICAgICBleHByZXNzaW9uIFsgXSogZW5jbG9zaW5nIGEgc2V0IG9mIGNoYXJhY3RlcnMgb3IgY2hhcmFjdGVyCisgICAgICAgICAgICAgIHJhbmdlcywgcHJlY2VkZWQgYnkgYW4gb3B0aW9uYWwgIl4iLCBpcyBzdXBwb3J0ZWQuIAorICAgICAgICAgICAgICBleGFtcGxlczogWzAtOV0qICwgW2EtekEtWjAtOV0qLCBbXjAtOV0qIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwYXNzd29yZCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFNldCB0byB0cnVlIGZvciBhIHBhc3N3b3JkIGZpZWxkLiBUZXh0IHdpbGwgYXBwZWFyIGFzICoqKiouCisgICAgICAgICAgICAgIEBrZXl3b3JkcyBmaW5hbCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibXVsdGlsaW5lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgU2V0IHRvIHRydWUgZm9yIG11bHRpcGxlIGxpbmVzLgorICAgICAgICAgICAgICBAa2V5d29yZHMgZmluYWwgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1heGxlbmd0aCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFycyB0aGF0IGNhbiBiZSBlbnRlcmVkLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJkZWJ1Z2dlcl9zaGFkb3dfYm90dG9tIiB0eXBlPSJseng6ZGVidWdnZXJfc2hhZG93X2JvdHRvbSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIAorICAgIERyb3Agc2hhZG93IGZvciB0aGUgYm90dG9tIG9mIHRoZSBkZWJ1Z2dlciB3aW5kb3cKKworICAgIEBrZXl3b3JkcyBwcml2YXRlCis8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJkZWJ1Z2dlcl9zaGFkb3dfYm90dG9tIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iaW1nIiB0eXBlPSJseng6aW1nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSFRNTCBzcGVjaWZpYyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJpbWciIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmdyb3VwIHJlZj0ibHp4OnRvcExldmVsRWxlbWVudHMiIC8+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IndpZHRoIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2c3BhY2UiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNyYyIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaHNwYWNlIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJoZWlnaHQiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFsaWduIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBIVE1MIHNwZWNpZmljIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYmFzZWJ1dHRvbnJlcGVhdGVyIiB0eXBlPSJseng6YmFzZWJ1dHRvbnJlcGVhdGVyIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJiYXNlYnV0dG9ucmVwZWF0ZXIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNlYnV0dG9uIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25tb3VzZXN0aWxsZG93biIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQGtleXdvcmRzIHB1YmxpYyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJzaW1wbGVib3VuZHNsYXlvdXQiIHR5cGU9Imx6eDpzaW1wbGVib3VuZHNsYXlvdXQiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InNpbXBsZWJvdW5kc2xheW91dCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmxheW91dCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNwYWNpbmciIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEEgcGl4ZWwgYW1vdW50IHRvIHVzZSBiZXR3ZWVuIGVhY2ggdmlldyBpbiB0aGUgbGF5b3V0LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYXhpcyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJ5IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIGF4aXMgaW4gd2hpY2ggdGhpcyBsYXlvdXQgb3BlcmF0ZXMsICd4JyBvciAneScuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Im5ld2NoZWNrYm94IiB0eXBlPSJseng6bmV3Y2hlY2tib3giID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgYmFzZWNoZWNrYm94IGltcGxlbWVudGF0aW9uIHJlcHJlc2VudGluZyBhIGJvb2xlYW4sIGkuZS4sIGNoZWNrZWQKKyAgICAgICAgICBpZiB0cnVlLCBlbHNlIGZhbHNlLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJuZXdjaGVja2JveCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmJhc2VjaGVja2JveCI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibWVudWJhciIgdHlwZT0ibHp4Om1lbnViYXIiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Im1lbnViYXIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNlY29tcG9uZW50Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJpbWFnZW1hcCIgdHlwZT0ibHp4OmltYWdlbWFwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisKK0EgY2xhc3Mgd2hpY2ggd2lsbCBhY3RpdmF0ZSBob3RzcG90cyBhcyB0aGUgbW91c2UgcGFzc2VzIG92ZXIgdGhlbSBpbiBhIHBhcmVudCB2aWV3LCBvciBkZWFjdGl2YXRlCit0aGVtIGFzIHRoZXkgbGVhdmUuIFRoaXMgY2xhc3Mgb3BlcmF0ZXMgYnkgaGF2aWduIGEgbnVtYmVyIG9mIG9iamVjdHMgc3ViY2xhc3NlZCBmcm9tIGhvdHNwb3QgYWRkZWQuCitFYWNoIG9mIHRoZXNlIGlzIHRoZW4gcXVlcmllZCBhcyB0aGUgbW91c2UgcGFzc2VzIGFib3V0IHRoZSB2aWV3IHRvIGFsdGVyIGl0cyBhY3RpdmF0aW9uIHN0YXRlLgorVGhpcyBjbGFzcyB3aWxsIG9wZXJhdGUgZWl0aGVyIGV4Y2x1c2l2ZWx5LCBvbmx5IG9uZSBhY3RpdmUgaG90c3BvdCBhdCBhIHRpbWUsIG9yIG1heSBhbGxvdworbXVsdGlwbGUgYWN0aXZlIGhvdHNwb3RzIGF0IG9uY2UgaWYgZXhjbHVzaXZlIGlzIHRydWUgKGl0IGlzIGZhbHNlIGJ5IGRlZmF1bHQpLiBUaGUgY2xhc3MKK2Fsc28gcHJvdmlkZXMgc3VzcGVuZCBhbmQgcmVzdW1lIG1ldGhvZHMgdG8gcGF1c2UgdGhlIGNsYXNzZXMgaGFuZGxpbmcgb2YgdGhlIGhvdHNwb3RzIGFuZAorcmVzdW1lIHJlc3BlY3RpdmVseS4gTm90ZSB0aGF0IHRoZSBwcmlvcml0eSBvZiBjaG9vc2luZyBhbiBhY3RpdmUgc3BvdCBpcyByYW5kb20uIFRoYXQgaXMKK2luIGV4Y2x1c2l2ZSBtb2RlIChvciBzd2l0Y2hpbmcgZnJvbSBub24tZXhjbHVzaXZlIHRvIGV4Y2x1c2l2ZSBtb2RlKSBpZiB0d28gc3BvdCBhIGFuZCBiCitib3RoIGNvbnRhaW4geCBhbmQgeSwgbm8gZ3VhcmFudGVlIGlzIG1hZGUgYXMgdG8gd2hpY2ggb2YgYSBhbmQgYiB3aWxsIGJlIGNob3NlbiB0byBiZQordGhlIGFjdGl2ZSBleGNsdXNpdmUgdmlldy4gQWRkaXRpb25hbGx5IHRoaXMgd2lsbCBvbmx5IGFjdGl2YXRlIGFuZCBkZWFjdGl2YXRlIGhvdHNwb3RzCit3aXRoaW4gdGhlIHBhcmVudCB2aWV3LiBFdmVuIGlmIGEgaG90c3BvdCBhZGRlZCB0byB0aGlzIG1hcCBkZWZpbmVzIGFuIGFjdGl2ZSByZWdpb24gb3V0c2lkZQordGhlIHBhcmVudCB2aWV3IGl0IHdpbGwgbm90IGJlIGhvbm9yZWQuIFRoZXJlZm9yZSBpdCBpcyBzdHJvbmdseSByZWNvbW1lbmRlZCB0aGF0IG5vIGhvdHNwb3RzCitkZWZpbmUgYW4gYXJlYSBvdXRzaWRlIG9mIHRoZSB2aWV3IGluIHdoaWNoIHRoZSBhcmUgYWN0aXZlLiBJbiBvcmRlciBmb3IgdGhpcyBjbGFzcwordG8gd29yayB0aGUgdmlldyBpbiB3aGljaCBpdCBpcyBkZWZpbmVkIG11c3QgYmUgY2xpY2thYmxlLgorPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iaW1hZ2VtYXAiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZXhjbHVzaXZlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0icmV2ZXJzZWxheW91dCIgdHlwZT0ibHp4OnJldmVyc2VsYXlvdXQiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InJldmVyc2VsYXlvdXQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpsYXlvdXQiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzcGFjaW5nIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBBIHBpeGVsIGFtb3VudCB0byB1c2UgYmV0d2VlbiBlYWNoIHZpZXcgaW4gdGhlIGxheW91dCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW5zZXQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEEgcGl4ZWwgYW1vdW50IHRvIGluc2V0IHRoZSBsYXN0IHZpZXcgY29udHJvbGxlZCBieSB0aGUgbGF5b3V0PC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVuZCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJ0cnVlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgV2hlbiB0cnVlICh0aGUgZGVmYXVsdCksIHRoZW4gdGhlIGxheW91dCB3aWxsIHB1c2ggdGhlIHN1YnZpZXdzIAorICAgICAgICAgICAgICB0byB0aGUgcmlnaHQgKG9yIGJvdHRvbSkgb2YgdGhlIGNvbnRhaW5pbmcgdmlldyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYXhpcyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJ5IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIGF4aXMgaW4gd2hpY2ggdGhpcyBsYXlvdXQgb3BlcmF0ZXMuIE9uZSBvZiAneCcgb3IgJ3knLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ0ZXh0c3R5bGUiIHR5cGU9Imx6eDp0ZXh0c3R5bGUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBTaW1wbGUgY2xhc3MgdGhhdCBhZGRzIGZvbnQgYXR0cmlidXRlcyB0byBzdHlsZSBjbGFzcworICAgICAgICAmbHQ7ZXhhbXBsZSBleGVjdXRhYmxlPSJmYWxzZSImZ3Q7CisgICAgICAgICZhbXA7bHQ7dGV4dHN0eWxlIGZvbnQ9ImZ1dHVyYSIgZm9udHNpemU9IjEyIiBmb250c3R5bGU9ImJvbGQiIC8mYW1wO2d0OworICAgICAgICAmbHQ7L2V4YW1wbGUmZ3Q7CisgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idGV4dHN0eWxlIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6c3R5bGUiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmb250c3R5bGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0icGxhaW4iID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmb250c2l6ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIxMSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZvbnQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iYXJpYWwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBTaW1wbGUgY2xhc3MgdGhhdCBhZGRzIGZvbnQgYXR0cmlidXRlcyB0byBzdHlsZSBjbGFzcworICAgICAgICAmbHQ7ZXhhbXBsZSBleGVjdXRhYmxlPSJmYWxzZSImZ3Q7CisgICAgICAgICZhbXA7bHQ7dGV4dHN0eWxlIGZvbnQ9ImZ1dHVyYSIgZm9udHNpemU9IjEyIiBmb250c3R5bGU9ImJvbGQiIC8mYW1wO2d0OworICAgICAgICAmbHQ7L2V4YW1wbGUmZ3Q7CisgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYmFzZXRyYWNrZ3JvdXAiIHR5cGU9Imx6eDpiYXNldHJhY2tncm91cCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYmFzZXRyYWNrZ3JvdXAiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHJhY2tpbmdyYXRlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjE1MCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBwZXJpb2RpYyByYXRlIGluIG1pbGxpc2Vjb25kcyB0byB0cmFjayB0aGUgbW91c2U8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHJhY2tpbmciIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0idHJ1ZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEluZGljYXRlcyBpZiB0aGlzIHRyYWNrZ3JvdXAgaXMgY3VycmVudGx5IHRyYWNraW5nIG9yIG5vdC4KKyAgICAgICAgICAgICAgSXQgY2FuIGJldCBzZXQgdG8gdHVybiB0cmFja2luZyBvbiBvciBvZmYsIG9yIHVzZSB0aGUgbWV0aG9kcworICAgICAgICAgICAgICBhY3RpdmF0ZXRyYWNrZ3JvdXAgYW5kIGRlYWN0aXZhdGV0cmFja2dyb3VwIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkZWFjdGl2YXRlZXZlbnRzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Ilsnb25tb3VzZXVwJ10iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBhbiBhcnJheSBvZiBldmVudHMgd2hpY2ggd2lsbCBkZWFjdGl2YXRlIHRyYWNraW5nLiAKKyAgICAgICAgICAgVG8gb3ZlcnJpZGUsIHlvdSBtdXN0IGRlY2xhcmUgYXMgb25jZS4gRm9yIGV4YW1wbGU6CisgICAgICAgICAgICZsdDtwcm9ncmFtbGlzdGluZyZndDsmYW1wO2x0O2F0dHJpYnV0ZSBuYW1lPSJkZWFjdGl2YXRlZXZlbnRzIiB2YWx1ZT0iWydvbm1vdXNlb3ZlciddIiB3aGVuPSJvbmNlIi8mYW1wO2d0OyZsdDsvcHJvZ3JhbWxpc3RpbmcmZ3Q7CisgICAgICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJib3VuZHNyZWYiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJHt0aGlzfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSB2aWV3IHRoYXQgd2lsbCBiZSB1c2VkIHRvIGRlZmluZSB0aGUgYm91bmRpbmcgcmVjdCBmb3IgdHJhY2tpbmcKKyAgICAgICAgICAgICAgdGhlIG1vdXNlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhY3RpdmF0ZWV2ZW50cyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJbJ29ubW91c2Vkb3duJ10iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBhbiBhcnJheSBvZiBldmVudHMgd2hpY2ggd2lsbCBhY3RpdmF0ZSB0cmFja2luZy4gCisgICAgICAgICAgIFRvIG92ZXJyaWRlLCB5b3UgbXVzdCBkZWNsYXJlIGFzIG9uY2UuIEZvciBleGFtcGxlOgorICAgICAgICAgICAmbHQ7cHJvZ3JhbWxpc3RpbmcmZ3Q7JmFtcDtsdDthdHRyaWJ1dGUgbmFtZT0iYWN0aXZhdGVldmVudHMiIHZhbHVlPSJbJ29ubW91c2VvdmVyJ10iIHdoZW49Im9uY2UiLyZhbXA7Z3Q7Jmx0Oy9wcm9ncmFtbGlzdGluZyZndDsKKyAgICAgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ic2hhZG93Ym94IiB0eXBlPSJseng6c2hhZG93Ym94IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQSBiYXNpYyBjb250YWluZXIgdmlldyB3aXRoIGFuIGlubmVyIGRyb3BzaGFkb3cgZWZmZWN0LgorICAgICAgICAmbHQ7ZXhhbXBsZSBleGVjdXRhYmxlPSJmYWxzZSImZ3Q7CisgICAgICAgICAgICAmYW1wO2x0O3NoYWRvd2JveCB3aWR0aD0iMjAwIiBoZWlnaHQ9IjIwMCImYW1wO2d0OworICAgICAgICAgICAgICAgICZhbXA7bHQ7dmlldyBiZ2NvbG9yPSJyZWQiIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIi8mYW1wO2d0OworICAgICAgICAgICAgJmFtcDtsdDsvc2hhZG93Ym94JmFtcDtndDsKKyAgICAgICAgJmx0Oy9leGFtcGxlJmd0OworICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InNoYWRvd2JveCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzaGFkb3dsZWZ0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgZGlzcGxheSBzaGFkb3cgYWxvbmcgbGVmdCBzaWRlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlZGdlY29sb3JfdGwiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGJnY29sb3Igb2Ygb25lIHBpeGVsIHdpZGUgYm9yZGVyIG9uIHJpZ2h0IGFuZCBib3R0b20gc2lkZXMgb25seSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZWRnZWNvbG9yIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjB4RDlEOUQ5IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgYmdjb2xvciBvZiBvbmUgcGl4ZWwgd2lkZSBib3JkZXIgb24gcmlnaHQgYW5kIGJvdHRvbSBzaWRlcyBvbmx5IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InRleHRmb3JtYXQiIHR5cGU9Imx6eDp0ZXh0Zm9ybWF0IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisKKyAgICBBbiBvYmplY3QgdG8gc3BlY2lmeSB0aGUgZm9ybWF0IG9mIGEgdGV4dCBvYmplY3QuICBVc2VkIG9ubHkgaW4gCisgICAgSmF2YXNjcmlwdCBieSByaWNoaW5wdXR0ZXh0LnNldFRleHRGb3JtYXQuCisgICAgQHNob3J0ZGVzYyBGb3JtYXRzIHJpY2ggdGV4dAorPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idGV4dGZvcm1hdCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4Om5vZGUiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1cmwiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVuZGVybGluZSIgdHlwZT0ibHp4OmJvb2xlYW4iID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0YXJnZXQiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNpemUiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJpZ2h0bWFyZ2luIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsZWZ0bWFyZ2luIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsZWFkaW5nIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpdGFsaWMiIHR5cGU9Imx6eDpib29sZWFuIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW5kZW50IiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmb250IiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKworICAgIEFuIG9iamVjdCB0byBzcGVjaWZ5IHRoZSBmb3JtYXQgb2YgYSB0ZXh0IG9iamVjdC4gIFVzZWQgb25seSBpbiAKKyAgICBKYXZhc2NyaXB0IGJ5IHJpY2hpbnB1dHRleHQuc2V0VGV4dEZvcm1hdC4KKyAgICBAc2hvcnRkZXNjIEZvcm1hdHMgcmljaCB0ZXh0Cis8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sb3IiIHR5cGU9Imx6eDpjb2xvciIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJvbGQiIHR5cGU9Imx6eDpib29sZWFuIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWxpZ24iIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYm94dmlldyIgdHlwZT0ibHp4OmJveHZpZXciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKworICAgICAgICAgICAgICAgIGltcGxlbWVudHMgdGhlIENTUyBib3ggbW9kZWwgaW4gYSB2aWV3IHRoYXQgYWxsb3dzIGZvciBtYXJnaW5zLCBwYWRkaW5nLCBhbmQgYSBib3JkZXIuCisgICAgICAgICAgICAgICAgQWxsb3dzIGZvciBhbiBpdGFsaXplZCB0aXRsZS4KKyAgICAgICAgICAgICAgICBCeSBkZWZhdWx0IGZ1bmN0aW9ucyB0aGUgc2FtZSBhcyBhIHZpZXcsIGJ1dCBoYXMgYSAxIHBpeGVsIGJsYWNrIGJvcmRlci4KKyAgICAgICAgICAgICAgICB2MS4wIC0gT3JpZ2luYWwKKyAgICAgICAgICAgICAgICB2MS4xIC0gQnVnZml4IGFkZGVkICIgLSBwYXJlbnQucGFyZW50LnZUaXRsZS5oZWlnaHQiIHRvIHZQYWRkaW5nIGhlaWdodCBvbiAhX2NvbnRlbnRoZWlnaHQgc3RhdGUKKyAgICAgICAgICAgICAgICBAYXV0aG9yIEJyYWQgRXJpY2tzb24KKyAgICAgICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImJveHZpZXciIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGl0bGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSXRhbGl6ZWQgdGl0bGUgb2YgdGhlIHZpZXcsIGFwcGVhcnMgaW4gdXBwZXIgbGVmdCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGFkZGluZ3NpemUiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBTaXplIG9mIHRoZSBwYWRkaW5nIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtYXJnaW5zaXplIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgU2l6ZSBvZiB0aGUgbWFyZ2luIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb250ZW50Ymdjb2xvciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBlbGVtZW50LCBkZWZhdWx0IGlzIHRyYW5zcGFyZW50PC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJvcmRlcnNpemUiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjEiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBTaXplIG9mIHRoZSBib3JkZXIgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJvcmRlcmNvbG9yIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjB4MDAwMDAwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQ29sb3Igb2YgdGhlIGJvcmRlciwgZGVmYXVsdCBpcyBibGFjayA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ2aXJ0dWFsZHJhd3ZpZXciIHR5cGU9Imx6eDp2aXJ0dWFsZHJhd3ZpZXciID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InZpcnR1YWxkcmF3dmlldyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmRyYXd2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWlueSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEBhY2Nlc3MgcHJpdmF0ZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWlueCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEBhY2Nlc3MgcHJpdmF0ZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWF4eSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMTAwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQGFjY2VzcyBwcml2YXRlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtYXh4IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxMDAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBAYWNjZXNzIHByaXZhdGUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1hcmtlcnMiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEBhY2Nlc3MgcHJpdmF0ZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ0YWJlbGVtZW50IiB0eXBlPSJseng6dGFiZWxlbWVudCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idGFiZWxlbWVudCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmJhc2V0YWJlbGVtZW50Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGV4dF95IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiR7dGhpcy50b3AuaGVhZGVyLmhlaWdodC8yIC0gdGhpcy50b3AuaGVhZGVyLnR4dC5oZWlnaHQvMn0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgeSBwb3NpdGlvbiBvZiB0aGUgdGV4dCBmaWVsZCBpbiB0aGUgaGVhZGVyIGFyZWEuIERlZmF1bHQgaXMgY2VudGVyZWQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZXh0X3giIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iNCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSB4IHBvc2l0aW9uIG9mIHRoZSB0ZXh0IGZpZWxkIGluIHRoZSBoZWFkZXIgYXJlYS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNoYWRvd3Zpc2libGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0idHJ1ZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEJvb2xlYW4gdG8gc2V0IHRoZSBzaGFkb3cgb2YgdGhpcyB0YWJlbGVtZW50LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2hhZG93aGVpZ2h0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjQiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgaGVpZ2h0IG9mIHRoZSBzaGFkb3cuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbnNldF90b3AiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJHtwYXJlbnQuaW5zZXRfdG9wfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSB0b3AgaW5zZXQgZm9yIGNvbnRlbnQgYXBwZWFyaW5nIHdpdGhpbiBhIHRhYmVsZW1lbnQuIERlZmF1bHQKKyAgICAgICAgICAgICAgaXMgdGhlIGNvbnRhaW5pbmcgdGFic2xpZGVyJ3MgaW5zZXRfdG9wIHZhbHVlLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW5zZXRfcmlnaHQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJHtwYXJlbnQuaW5zZXRfcmlnaHR9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHJpZ2h0IGluc2V0IGZvciBjb250ZW50IGFwcGVhcmluZyB3aXRoaW4gYSB0YWJlbGVtZW50LiBEZWZhdWx0CisgICAgICAgICAgICAgIGlzIHRoZSBjb250YWluaW5nIHRhYnNsaWRlcidzIGluc2V0X3JpZ2h0IHZhbHVlLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW5zZXRfbGVmdCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIke3BhcmVudC5pbnNldF9sZWZ0fSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBsZWZ0IGluc2V0IGZvciBjb250ZW50IGFwcGVhcmluZyB3aXRoaW4gYSB0YWJlbGVtZW50LiBEZWZhdWx0CisgICAgICAgICAgICAgIGlzIHRoZSBjb250YWluaW5nIHRhYnNsaWRlcidzIGluc2V0X2xlZnQgdmFsdWUuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbnNldF9ib3R0b20iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJHtwYXJlbnQuaW5zZXRfYm90dG9tfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBib3R0b20gaW5zZXQgZm9yIGNvbnRlbnQgYXBwZWFyaW5nIHdpdGhpbiBhIHRhYmVsZW1lbnQuIERlZmF1bHQKKyAgICAgICAgICAgICAgaXMgdGhlIGNvbnRhaW5pbmcgdGFic2xpZGVyJ3MgaW5zZXRfYm90dG9tIHZhbHVlLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaGVhZGVycGFkZGluZyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSW5zZXRzIHRoZSBoZWFkZXIgYXJ0IG9uIHRoZSB4LWF4aXMuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImNvbG9ycm93IiB0eXBlPSJseng6Y29sb3Jyb3ciID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImNvbG9ycm93IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYXhpc3N0eWxlIiB0eXBlPSJseng6YXhpc3N0eWxlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+Cisgc3R5bGUgZm9yIGF4aXMKKyAgICAgIEBhY2Nlc3MgcHVibGljCisgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImF4aXNzdHlsZSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmJhc2VzdHlsZSI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRpcmVjdGlvbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJ5IHwgeCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGRpcmVjdGlvbiBvZiB0aGUgYXhpczogeCBvciB5IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InZpZGVvcGxheWVyIiB0eXBlPSJseng6dmlkZW9wbGF5ZXIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBwcm92aWRlcyBzdGFuZGFyZCBVSSBjb250cm9scyBmb3IgdmlkZW8gcGxheWJhY2sKKyAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ2aWRlb3BsYXllciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1cmwiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgdXJsIG9mIHRoZSBzdHJlYW0gdG8gcGxheQorICAgICAgICAgICAgICBzZWUgbWVkaWFzdHJlYW0gZm9yIGRldGFpbHMgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InR5cGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iaHR0cCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHR5cGUgb2Ygc3RyZWFtOiAnaHR0cCcgb3IgJ3J0bXAnLCAKKyAgICAgICAgICAgICAgc2VlIG1lZGlhc3RyZWFtIGZvciBkZXRhaWxzIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdHJlYW0iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJHt2c2NyZWVuLm1zfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGEgcmVmZXJlbmNlIHRvIHRoZSBzdHJlYW0gdG8gZW5hYmxlIGRpcmVjdCBjb250cm9sLAorICAgICAgICAgICAgICBzdWNoIGFzIHZwLnN0ZWFtLnBsYXkgb3IgdnAuc3RyZWFtLnNlZWsoMjApIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdGFydHRpbWUiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBTaG93IHRoZSBmcmFtZSBmcm9tIHRoaXMgdGltZSAoaW4gc2Vjb25kcykgd2hlbmV2ZXIgdGhlIHVybCAKKyAgICAgICAgICAgIGlzIHNldCBmb3IgdmlkZW8gcGxheWJhY2suCisgICAgICAgICAgICBVc2UgLTEgdG8gc2hvdyBubyBmcmFtZSAod2hpY2ggd2lsbCBsZWF2ZSB0aGUgaW1hZ2UgYXMgaXQKKyAgICAgICAgICAgIHdhcyB3aGVuIHN3aXRjaGluZyB2aWRlb3MpIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzbGlkZXJUb3AiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJHsgICAgICAgICAgICAgdGhpcy5oZWlnaHQgLSAodGhpcy5ib3JkZXJCb3R0b20gKyB0aGlzLnNsaWRlckhlaWdodCl9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgaW50ZXJuYWw6IGRlcml2ZWQgZnJvbSBwdWJsaWMgYXR0cmlidXRlcyAKKyAgICAgICAgICAgICAgQGFjY2VzcyBwcml2YXRlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzbGlkZXJIZWlnaHRWYWwiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMTYiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBzZWUgbm90ZSBhYm92ZSAKKyAgICAgICAgICBAYWNjZXNzIHByaXZhdGUKKyAgICAgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNsaWRlckhlaWdodCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIkeyAgICAgICAgICAgICB0aGlzLnNob3dzbGlkZXIgPyB0aGlzLnNsaWRlckhlaWdodFZhbCA6IDB9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgdGhlIGNvbnRyb2xzIHN0cmV0Y2ggdG8gdGhpcyBoZWlnaHQsIGJ1dCBJIGRvbid0IHNlZSBhIHRlc3QKKyAgICAgICAgICAgICAgZm9yIHRoaXMgYW5kIEkgY2FuJ3QgaW1hZ2luZSBpdCBsb29rcyBnb29kIHNvIEknbSBtYXJraW5nCisgICAgICAgICAgICAgIHRoaXMgcHJpdmF0ZQorICAgICAgICAgIEBhY2Nlc3MgcHJpdmF0ZQorICAgICAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2xpZGVyR2FwIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyB0aGUgdmVydGljYWwgc3BhY2UgYmV0d2VlbiB0aGUgdmlkZW8gaW1hZ2UgYW5kIHRoZSBjb250cm9scyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2hvd3NsaWRlciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJ0cnVlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+Cisgd2h5IHdvdWxkIHlvdSB3YW50IHRoaXM/IG5vIHRlc3QgY2FzZSwgbWFya2luZyBwcml2YXRlIAorICAgICAgICAgICAgICBAYWNjZXNzIHByaXZhdGUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNob3dzY3JlZW4iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0idHJ1ZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHdoeSB3b3VsZCB5b3Ugd2FudCB0aGlzPyBubyB0ZXN0IGNhc2UsIG1hcmtpbmcgcHJpdmF0ZSAKKyAgICAgICAgICAgICAgQGFjY2VzcyBwcml2YXRlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzaG93Vm9sdW1lQ29udHJvbCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJ0cnVlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgaWYgdHJ1ZSwgZGlzcGxheSBhIHZvbHVtZSBjb250cm9sIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzaG93VGltZURpc3BsYXkiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0idHJ1ZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGlmIHRydWUsIGRpc3BsYXkgdGhlIGN1cnJlbnQgYW5kIHRvdGFsIHRpbWUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNjcmVlbldpZHRoIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiR7ICAgICAgICAgICAgIHRoaXMud2lkdGggLSAodGhpcy5ib3JkZXJMZWZ0ICsgdGhpcy5ib3JkZXJSaWdodCl9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgaW50ZXJuYWw6IGRlcml2ZWQgZnJvbSBwdWJsaWMgYXR0cmlidXRlcyAKKyAgICAgICAgICAgICAgQGFjY2VzcyBwcml2YXRlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwcm9ncmVzc0NvbG9yIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjB4MDBmZjAwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgY29sb3Igb2YgdGhlIHByb2dyZXNzIGJhciA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGVidWciIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyB0cnVlIGZvciB2ZXJib3NlIGRlYnVnIGxvZ2dpbmcgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJvcmRlclRvcCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIke3RoaXMuYm9yZGVyfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHRoZSB0b3AgYm9yZGVyIG9uIHRoZSB2aWRlbyBpbWFnZS4gIERlZmF1bHQ6IHRoaXMuYm9yZGVyIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJib3JkZXJSaWdodCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIke3RoaXMuYm9yZGVyfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHRoZSByaWdodCBib3JkZXIgb24gdGhlIHZpZGVvIGltYWdlLiAgRGVmYXVsdDogdGhpcy5ib3JkZXIgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJvcmRlckxlZnQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJHt0aGlzLmJvcmRlcn0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyB0aGUgbGVmdCBib3JkZXIgb24gdGhlIHZpZGVvIGltYWdlLiAgRGVmYXVsdDogdGhpcy5ib3JkZXIgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJvcmRlckJvdHRvbSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIke3RoaXMuYm9yZGVyfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHRoZSBib3R0b20gYm9yZGVyIG9uIHRoZSB2aWRlbyBpbWFnZS4gIERlZmF1bHQ6IHRoaXMuYm9yZGVyIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJib3JkZXIiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iNSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHRoZSBib3JkZXIgYXJvdW5kIHRoZSB2aWRlbyBpbWFnZS4gIERlZmF1bHQ6IDUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImF1dG9wbGF5IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+Cisgd2hlbiB0cnVlLCBwbGF5YmFjayB3aWxsIHN0YXJ0IGF1dG9tYXRpY2FsbHkKKyAgICAgICAgICAgICAgd2l0aG91dCB1c2VyIGFjdGlvbiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYXNwZWN0UmF0aW8iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJG9uY2V7NC8zfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGlmIG5vbi16ZXJvLCB0aGVuIHRoaXMgd2lsbCBiZSB1c2VkIHRvIG1haW50YWluIHRoZQorICAgICAgICAgICAgICBhc3BlY3QgcmF0aW8gYmFzZWQgb24gdGhlIHdpZHRoIG9mIHRoZSB2aWRlb3NjcmVlbi4KKyAgICAgICAgICAgICAgRGVmYXVsdDogNC8zCisgICAgICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImRhdGFzdHlsZWxpc3QiIHR5cGU9Imx6eDpkYXRhc3R5bGVsaXN0IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgbGlzdCBvZiBkYXRhc3R5bGUKKyAgICAgIEBhY2Nlc3MgcHVibGljCisgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImRhdGFzdHlsZWxpc3QiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNlc3R5bGUiPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJhc2VncmlkIiB0eXBlPSJseng6YmFzZWdyaWQiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBBbiBhYnN0cmFjdCBjb250YWluZXIgZm9yIGRhdGEgcm93cywgcmVseWluZyBvbiBsYXp5IHJlcGxpY2F0aW9uCisgICAgICAgICAgdG8gbWFrZSBpdCBwb3NzaWJsZSB0byBkaXNwbGF5IGxhcmdlIGRhdGFzZXRzLjwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImJhc2VncmlkIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZWNvbXBvbmVudCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNwYWNpbmciIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBTcGFjaW5nIGJldHdlZW4gdGhlIHJvd3MuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzaXpldG9oZWFkZXIiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEEgYm9vbGVhbi4gSWYgdHJ1ZSwgdGhlIGdyaWQgd2lsbCBrZWVwIGl0cyB3aWR0aCBzZXQgdG8gdGhlIHNpemUKKyAgICAgICAgICAgICAgb2YgdGhlIGhlYWRlci4gVGhpcyBpcyBhdXRvbWF0aWNhbGx5IHNldCB0byB0cnVlIGZvciBncmlkcyB0aGF0CisgICAgICAgICAgICAgIGRvIG5vdCBoYXZlIGEgc2V0IHdpZHRoLiAgVGhpcyBpcyBpbml0aWFsbHkgc2V0IHRvIDAsIHdoaWNoIG1lYW5zCisgICAgICAgICAgICAgIHRoYXQgaXQgaXMgbm90IHRydWUsIGJ1dCBpZiBpdCBpcyBleHBsaWNpdGx5IHNldCB0byBmYWxzZSwgdGhlCisgICAgICAgICAgICAgIGF1dG9tYXRpYyBiZWhhdmlvciB3aWxsIGJlIGRpc2FibGVkIGZvciBncmlkcyB3aXRoIG5vIHNldAorICAgICAgICAgICAgICB3aWR0aC48L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2hvd3ZsaW5lcyIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSWYgdHJ1ZSwgbGluZXMgd2lsbCBiZSBkcmF3biAoaW4gY29tcG9uZW50J3Mgc3R5bGUncyBib3JkZXJjb2xvcikKKyAgICAgICAgICAgICAgaG9yaXpvbnRhbGx5IGF0IGVhY2ggYXQgZWFjaCByb3cgZGl2aXNpb24uIFRoaXMgYXR0cmlidXRlIGNhbm5vdAorICAgICAgICAgICAgICBiZSBzZXQgYWZ0ZXIgaW5zdGFudGlhdGlvbi48L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2hvd25pdGVtcyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSItMSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFNldHMgdGhlIGhlaWdodCBvZiB0aGUgZ3JpZCB0byBzaG93IGEgbWF4aW11bSBvZiAnbicgaXRlbXMuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzaG93aGxpbmVzIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJZiB0cnVlLCBsaW5lcyB3aWxsIGJlIGRyYXduIChpbiBjb21wb25lbnQncyBzdHlsZSdzIGJvcmRlcmNvbG9yKQorICAgICAgICAgICAgICB2ZXJ0aWNhbGx5IGF0IGVhY2ggYXQgZWFjaCBjb2x1bW4gZGl2aXNpb24uIFRoaXMgYXR0cmlidXRlIGNhbiBiZQorICAgICAgICAgICAgICBzZXQgYWZ0ZXIgaW5zdGFudGlhdGlvbi48L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VsZWN0YWJsZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJ0cnVlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSWYgZmFsc2UsIHRoZSByb3dzIGFyZSBub3QgY2xpY2thYmxlIGFuZCB0aGUgZ3JpZCBkb2VzIG5vdCBzdXBwb3J0IHNlbGVjdGlvbi4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvd2hlaWdodCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIE9wdGlvbmFsIGhlaWdodCBmb3IgdGhlIHJvd3MgY29udGFpbmVkIGJ5IHRoZSBncmlkLiBJZiBubworICAgICAgICAgICAgICB2YWx1ZSBpcyBnaXZlbiBmb3IgdGhpcyBhdHRyaWJ1dGUsIGl0IHdpbGwgYmUgc2V0IHRvIHRoZQorICAgICAgICAgICAgICBjYWxjdWxhdGVkIGhlaWdodCBvZiByb3dzLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25zZWxlY3QiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEV2ZW50IHNlbnQgd2hlbiB0aGUgZ3JpZCBzZWxlY3Rpb24gY2hhbmdlcy48L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibXVsdGlzZWxlY3QiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0idHJ1ZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIElmIHRydWUsIHRoZSBsaXN0IHdpbGwgYWxsb3cgZm9yIG11bHRpcGxlIHNlbGVjdGlvbiwgYW5kIHRoZSAKKyAgICAgICAgICAgICAgZ2V0U2VsZWN0aW9uIG1ldGhvZCB3aWxsIGFsd2F5cyByZXR1cm4gYSBsaXN0LiBJZiBmYWxzZSwgb25seQorICAgICAgICAgICAgICBzaW5nbGUgc2VsZWN0aW9uIGlzIGFsbG93ZWQuPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImhpbGl0ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHZpZXcgd2hpY2ggaXMgY3VycmVudGx5IGhpbGl0ZWQuPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbnRlbnRkYXRhcGF0aCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIqIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIGRhdGFwYXRoIHRvIHVzZSBmb3IgdGhlIGNvbnRlbnRzIG9mIHRoZSBncmlkLiBCeQorICAgICAgICAgICAgICBkZWZhdWx0LCB0aGlzIGlzIHNldCB0byAiKiIsIG1lYW5pbmcgYWxsIG9mIHRoZSBub2RlcyB1bmRlcm5lYXRoCisgICAgICAgICAgICAgIHRoZSBkYXRhY29udGV4dCBvZiB0aGUgZ3JpZC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbHVtbnMiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEFuIGFycmF5IGhvbGRpbmcgdGhlIGJhc2VncmlkY29sdW1ucyB1c2VkIGJ5IHRoaXMgZ3JpZCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYmdjb2xvcjEiIHR5cGU9Imx6eDpjb2xvciIgZGVmYXVsdD0iJGltbWVkaWF0ZWx5e251bGx9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSWYgZ2l2ZW4sIHNldHMgdGhlIGJnY29sb3IgZm9yIG9kZCBudW1iZXJlZCByb3dzLiBJZiBub3QgZ2l2ZW4sCisgICAgICAgICAgICAgIHRoZSBiZ2NvbG9yIGZvciB0aGVzZSByb3dzIGlzIHRha2VuIGZyb20gdGhlIHN0eWxlJ3MgYmdjb2xvci48L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYmdjb2xvcjAiIHR5cGU9Imx6eDpjb2xvciIgZGVmYXVsdD0iJGltbWVkaWF0ZWx5e251bGx9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSWYgZ2l2ZW4sIHNldHMgdGhlIGJnY29sb3IgZm9yIGV2ZW4gbnVtYmVyZWQgcm93cy4gSWYgbm90IGdpdmVuLAorICAgICAgICAgICAgICB0aGUgYmdjb2xvciBmb3IgdGhlc2Ugcm93cyBpcyB0YWtlbiBmcm9tIHRoZSBzdHlsZSdzIGJnY29sb3IuPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0idmVydGljYWxheGlzIiB0eXBlPSJseng6dmVydGljYWxheGlzIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgUmVwcmVzZW50cyB0aGUgWSBheGlzIG9uIHRoZSByZWN0YW5ndWxhciBjaGFydCwgZXh0ZW5kcyBmcm9tIEF4aXMgY2xhc3MKKyAgICAgQGFjY2VzcyBwdWJsaWMKKyAgICAgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idmVydGljYWxheGlzIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YXhpcyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRhdGFjb2x1bW4iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ieSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEBrZXl3b3JkIHByaXZhdGU8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJEZWJ1Z09iamVjdCIgdHlwZT0ibHp4OkRlYnVnT2JqZWN0IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisKKyAgRGVidWdPYmplY3QgaXMgYSBiYXNlIGNsYXNzIGZvciBhbGwgdGhlIG90aGVyIGNsYXNzZXMgaW4gTFpVbml0IHRoYXQKKyAgc3VwcG9ydHMgdGhlIGRlYnVnZ2luZyBvZiBMWlVuaXQgaXRzZWxmLgorCisgIEBrZXl3b3JkcyBwdWJsaWMKKworICBAcGFyYW0gQm9vbGVhbiBkZWJ1Z1dyaXRlOiBXaGV0aGVyIG9yIG5vdCB0byBlbWl0IGRlYnVnZ2luZyBzdGF0ZW1lbnRzLgorPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iRGVidWdPYmplY3QiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGVidWdXcml0ZSIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+Cisgd2hldGhlciBvciBub3QgdG8gZW1pdCBkZWJ1Z2dpbmcgc3RhdGVtZW50cyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ2aWRlb3NsaWRlciIgdHlwZT0ibHp4OnZpZGVvc2xpZGVyIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ2aWRlb3NsaWRlciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ3YXNwYXVzZWQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZvbHVtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIke3RoaXMuY29udHJvbHMudm9sdW1lYnV0dG9uLnZvbHVtZX0iID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2YWx1ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIke3RoaXMudHJhY2tpbmcgPyB0aGlzLnRyYWNrdmFsdWUgOiB0aGlzLnNvdXJjZXZhbHVlfSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRyYWNrdmFsdWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMC4wIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHJhY2t0aW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiR7dGhpcy50cmFja3ZhbHVlICogdGhpcy50b3RhbHRpbWV9IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHJhY2tpbmdEZWxlZ2F0ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHJhY2tpbmciIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0b3RhbHRpbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRpbWVkaXNwbGF5IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiR7dGhpcy50cmFja2luZyA/IHRoaXMudHJhY2t0aW1lIDogdGhpcy50aW1lfSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRpbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNvdXJjZXZhbHVlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiR7dGhpcy50aW1lIC8gKHRoaXMudG90YWx0aW1lIHx8IDEuMCl9IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2hvd1ZvbHVtZUNvbnRyb2wiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNob3dUaW1lRGlzcGxheSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJ0cnVlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibXMiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbG9yIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjB4MDBmZjAwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJiYXJjaGFydCIgdHlwZT0ibHp4OmJhcmNoYXJ0IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQSBjaGFydCBjbGFzcyB0aGF0IHJlbmRlcnMgaG9yaXpvbnRhbCBiYXJzLgorICAgICAgSW5oZXJpdHMgZnJvbSB0aGUgY2hhcnQgY2xhc3MuICAoV2FybmluZzogT2YgYmV0YSBxdWFsaXR5LikKKyAgICAgIEBhY2Nlc3MgcHVibGljCisgICAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJiYXJjaGFydCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmJhc2VjaGFydCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN0YWdnZXJ0aWNrcyIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBXaGV0aGVyIHRvIGFsdGVybmF0ZSBsZW5ndGhzIG9mIHRpY2sgbGluZXMuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmRyYXdheGlzIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBSZWZyZXNoZXMgZHJhd24gY2hhcnQgd2hlbiBkaXJlY3Rpb24gY2hhbmdlcy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJhcnNwYWNlIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIyIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHNwYWNlIGJldHdlZW4gYmFycy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFuaWNvbXBsZXRlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBEYXRhY2xpcCBpcyBhIHZpZXcgYXQgYSBmaXhlZCBzaXplIChwbG90d2lkdGggYW5kIHBsb3RoZWlnaHQsIHdpdGggbG9jYXRpb24KKyAgICAgICAgICAgIHNldCBieSBwbG90eCBhbmQgcGxvdHkpIHRoYXQgY29udGFpbnMgYW4gaW50ZXJuYWwgdmlldyB3aXRoIGFsbCB0aGUgcG9pbnRzLAorICAgICAgICAgICAgbGluZXMgYW5kIGxhYmVscy4gIEFzIHRoZSBpbnRlcm5hbCB2aWV3IGRhdGFwYW5lIGlzIHNjYWxhYmxlIGFuZCBhYmxlIHRvIGJlCisgICAgICAgICAgICBkcmFnZ2VkIGFyb3VuZCBvbmNlIHNjYWxlZCwgaXQgbmVlZHMgdG8gYmUgY2xpcHBlZC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZm9udCIgdHlwZT0ibHp4OmZvbnQiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KK1RhZyBmb3IgaW5jbHVkaW5nIGZvbnRzLgorVGhlICZsdDtmb250Jmd0OyB0YWcgaXMgdXNlZCB0byBpbXBvcnQgZm9udHMgaW50byBhbiBMWlggYXBwbGljYXRpb24uIEVhY2ggZm9udCBpbiBhbiBMWlggYXBwbGljYXRpb24gaGFzIGEgc291cmNlIGZpbGUgKGluIFRydWVUeXBlIGZvcm1hdCksIGEgbmFtZSwgYW5kIGEgc3R5bGUgKHBsYWluLCBib2xkLCBpdGFsaWMsIG9yIGJvbGQgaXRhbGljKS4KKworQSBmb250IGVsZW1lbnQgd2l0aGluIGEgJmx0O2NhbnZhcyZndDsgb3IgJmx0O2xpYnJhcnkmZ3Q7IGRlZmluZXMgYSBmb250LCB3aGljaCBjYW4gYmUgcmVmZXJlbmNlZCBieSB0aGUgZm9udCBhdHRyaWJ1dGUgb2YgYSB2aWV3LCBvciBieSB0aGUgZmFjZSBhdHRyaWJ1dGUgb2YgdGhlICZsdDtmb250Jmd0OyB0YWcgd2l0aGluIEhUTUwgbWFya3VwLiBBIGZvbnQgZWxlbWVudCBjYW4gZGVmaW5lIGEgc2luZ2xlIGZvbnQgZmFjZSBvciBzdHlsZSwgYnkgdXNpbmcgdGhlIHNyYyBhdHRyaWJ1dGUgdG8gcmVmZXIgdG8gYSBUcnVlVHlwZSBmb250IHRoYXQgaXMgaW5jbHVkZWQgaW4gdGhlIGFwcGxpY2F0aW9uLiAKKyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJmb250IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpncm91cCByZWY9Imx6eDp0b3BMZXZlbEVsZW1lbnRzIiAvPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzcmMiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNpemUiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorVGFnIGZvciBpbmNsdWRpbmcgZm9udHMuCitUaGUgJmx0O2ZvbnQmZ3Q7IHRhZyBpcyB1c2VkIHRvIGltcG9ydCBmb250cyBpbnRvIGFuIExaWCBhcHBsaWNhdGlvbi4gRWFjaCBmb250IGluIGFuIExaWCBhcHBsaWNhdGlvbiBoYXMgYSBzb3VyY2UgZmlsZSAoaW4gVHJ1ZVR5cGUgZm9ybWF0KSwgYSBuYW1lLCBhbmQgYSBzdHlsZSAocGxhaW4sIGJvbGQsIGl0YWxpYywgb3IgYm9sZCBpdGFsaWMpLgorCitBIGZvbnQgZWxlbWVudCB3aXRoaW4gYSAmbHQ7Y2FudmFzJmd0OyBvciAmbHQ7bGlicmFyeSZndDsgZGVmaW5lcyBhIGZvbnQsIHdoaWNoIGNhbiBiZSByZWZlcmVuY2VkIGJ5IHRoZSBmb250IGF0dHJpYnV0ZSBvZiBhIHZpZXcsIG9yIGJ5IHRoZSBmYWNlIGF0dHJpYnV0ZSBvZiB0aGUgJmx0O2ZvbnQmZ3Q7IHRhZyB3aXRoaW4gSFRNTCBtYXJrdXAuIEEgZm9udCBlbGVtZW50IGNhbiBkZWZpbmUgYSBzaW5nbGUgZm9udCBmYWNlIG9yIHN0eWxlLCBieSB1c2luZyB0aGUgc3JjIGF0dHJpYnV0ZSB0byByZWZlciB0byBhIFRydWVUeXBlIGZvbnQgdGhhdCBpcyBpbmNsdWRlZCBpbiB0aGUgYXBwbGljYXRpb24uIAorIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmYWNlIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xvciIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSFRNTCBzcGVjaWZpYyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImdyaWR0ZXh0IiB0eXBlPSJseng6Z3JpZHRleHQiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImdyaWR0ZXh0IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6Z3JpZGNvbHVtbiI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRleHRhbGlnbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJsZWZ0IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVHlwZSBvZiBjb250ZW50J3MgYWxpZ25tZW50LgorICAgICAgICAgICAgICBQb3NzaWJsZSB2YWx1ZXMgYXJlOiBsZWZ0LCBjZW50ZXIsIHJpZ2h0IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWxlY3RhYmxlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBXaGV0aGVyIG9uZSBpcyBhYmxlIHRvIHNlbGVjdCB0aGUgdGV4dC4gIChPbmx5IGFwcGxpZXMKKyAgICAgICAgICAgIGlmIHRoZSBncmlkIGlzbid0IGVkaXRhYmxlLCBiZWNhdXNlIHdoZW4gaXQncyBlZGl0YWJsZSwKKyAgICAgICAgICAgIHRoZSB0ZXh0IGlzIGF1dG9tYXRpY2FsbHkgc2VsZWN0YWJsZS4pIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlZGl0aW5nIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZWRpdGJveCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZWRpdGFibGUiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSWYgc2V0IHRvIGZhbHNlLCB0aGUgZmllbGQgd2lsbCBub3QgYmUgZWRpdGFibGUuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImZpbGV1cGxvYWRsaXN0IiB0eXBlPSJseng6ZmlsZXVwbG9hZGxpc3QiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImZpbGV1cGxvYWRsaXN0IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlbGVjdGVkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBzZWxlY3QgZmlsZSBvciBub3Q8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25zZWxlY3QiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEV2ZW50czwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmNvbXBsZXRlIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtYXhzaXplIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjE1MDAwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgTWF4IGZpbGUgc2l6ZSAgdW5pdDogYnl0ZXMgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVycm9yb2NjdXJlZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgRXJyb3Igb2NjdXJlZCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJjbGFzcyIgdHlwZT0ibHp4OmNsYXNzIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJjbGFzcyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc1Jvb3QiIHR5cGU9Imx6eDpib29sZWFuIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW1wbGVtZW50cyIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZXh0ZW5kcyIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJsaXN0aXRlbSIgdHlwZT0ibHp4Omxpc3RpdGVtIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQSBzaW1wbGUgbGlzdGl0ZW0gdGhhdCBpcyB1c3VhbGx5IGRlY2xhcmVkIGluc2lkZSBvZiBhIGxpc3QuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Imxpc3RpdGVtIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZWxpc3RpdGVtIj4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJmb2N1c292ZXJsYXkiIHR5cGU9Imx6eDpmb2N1c292ZXJsYXkiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImZvY3Vzb3ZlcmxheSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmJhc2Vmb2N1c3ZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvZmZzZXQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iNSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHRoZSBvZmZzZXQgaXMgdXNlZCBieSB0aGUgYnJhY2tldHMgdG8gJ29mZnNldCcgdGhlbXNlbHZlcyBmcm9tIHRoZQorICAgICAgICAgICAgICBib3VuZGluZyByZWN0IG9mIHRoZSBmb2N1c292ZXJsYXkuIFRoZSBib3VuY2UgZWZmZWN0IGlzIGFjaGlldmVkCisgICAgICAgICAgICAgIGJ5IGFuaW1hdGluZyB0aGlzIHBhcmFtZXRlciA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJjb250ZXh0bWVudWl0ZW0iIHR5cGU9Imx6eDpjb250ZXh0bWVudWl0ZW0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KK0EgbWVudSBpdGVtIHdpdGhpbiBhIGNvbnRleHQgbWVudSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJjb250ZXh0bWVudWl0ZW0iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpub2RlIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmlzaWJsZSIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisJU2V0cyB0aGUgdmlzaWJpbGl0eSBvZiB0aGUgbWVudSBpdGVtLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VwYXJhdG9yYmVmb3JlIiB0eXBlPSJseng6Ym9vbGVhbiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCURyYXcgYSBob3Jpem9udGFsIHNlcGFyYXRvciBsaW5lIGJlZm9yZSB0aGlzIGl0ZW0gaW4gdGhlIG1lbnUuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlbmFibGVkIiB0eXBlPSJseng6Ym9vbGVhbiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIAlTZXRzIHRoZSBlbmFibGVkIHN0YXR1cyBvZiB0aGUgbWVudSBpdGVtLiBJZiBmYWxzZSwgdGhlIG1lbnUgaXRlbSBpcyBncmF5ZWQgb3V0IGFuZCB3aWxsIG5vdCByZXNwb25kIHRvIGNsaWNrcyAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRlbGVnYXRlIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyAJU2V0cyB0aGUgZGVsZWdhdGUgd2hpY2ggd2lsbCBiZSBjYWxsZWQgd2hlbiB0aGUgbWVudSBpdGVtIGlzIHNlbGVjdGVkLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2FwdGlvbiIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisJCVNldHMgdGhlIHRleHQgd2hpY2ggaXMgZGlzcGxheWVkIGZvciB0aGUgbWVudSBpdGVtPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibWVudWl0ZW0iIHR5cGU9Imx6eDptZW51aXRlbSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibWVudWl0ZW0iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp0ZXh0bGlzdGl0ZW0iPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb21tYW5kIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyB0aGUgY29tbWFuZCBvYmplY3QgYXNzaWduZWQgdG8gYmUgZXhlY3V0ZWQgd2hlbiB0aGlzIG1lbnVpdGVtIGlzIHNlbGVjdGVkIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJhc2VkcmFnaW1hZ2UiIHR5cGU9Imx6eDpiYXNlZHJhZ2ltYWdlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgdGhlIHZpc3VhbCByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QgYmVpbmcgZHJhZ2dlZC4KKyAgICAgICAgU2VlICZsdDt4cmVmIGxpbmtlbmQ9Imx6LmNoZWNrZHJhZ3N0YXRlIi8mZ3Q7IGZvciB1c2FnZSBkZXRhaWxzIAorICAgICAgICBAYWNjZXNzIHB1YmxpYworICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJiYXNlZHJhZ2ltYWdlIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRyb3Bncm91cCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJkcm9wdGFyZ2V0IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgdGhlIGdyb3VwIHRoYXQgZHJvcCB0YXJnZXRzIHdpbGwgcmVnaXN0ZXIgd2l0aCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJiYXNldGFic2xpZGVyIiB0eXBlPSJseng6YmFzZXRhYnNsaWRlciIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoaXMgY2xhc3MgaXMgYSBub24tdmlzdWFsIGNvbnRhaW5lciB0aGF0IGFuaW1hdGVzIGFuZCBjb29yZGluYXRlcyB0aGUKKyAgICAgICAgICBzbGlkaW5nIG9mIGJhc2V0YWJlbGVtZW50cy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYmFzZXRhYnNsaWRlciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmJhc2VsaXN0Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3BhY2luZyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHNwYWNpbmcgb2YgdGhlIHRhYnMuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzbGlkZWR1cmF0aW9uIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjMwMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBkdXJhdGlvbiBvZiB0aGUgdGFicyBvcGVubmluZyBhbmQgY2xvc2luZy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1pbnRhYmhlaWdodCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIyMiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBkZWZhdWx0IGhlaWdodCBvZiBldmVyeSB0YWIgd2hlbiBjbG9zZWQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbnNldF90b3AiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iOCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSB0b3AgaW5zZXQgZm9yIGNvbnRlbnQgYXBwZWFyaW5nIHdpdGhpbiBhIHRhYmVsZW1lbnQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbnNldF9yaWdodCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSI4IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHJpZ2h0IGluc2V0IGZvciBjb250ZW50IGFwcGVhcmluZyB3aXRoaW4gYSB0YWJlbGVtZW50LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW5zZXRfbGVmdCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSI4IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIGxlZnQgaW5zZXQgZm9yIGNvbnRlbnQgYXBwZWFyaW5nIHdpdGhpbiBhIHRhYmVsZW1lbnQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbnNldF9ib3R0b20iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iOCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBib3R0b20gaW5zZXQgZm9yIGNvbnRlbnQgYXBwZWFyaW5nIHdpdGhpbiBhIHRhYmVsZW1lbnQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Ilpvb21Qb2x5Z29uIiB0eXBlPSJseng6Wm9vbVBvbHlnb24iID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Ilpvb21Qb2x5Z29uIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6cG9seWdvbmhvdHNwb3QiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZXh0IiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwYXJlbnRWaWV3IiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtYXAiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0id2hpdGVzdHlsZSIgdHlwZT0ibHp4OndoaXRlc3R5bGUiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IndoaXRlc3R5bGUiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpzdHlsZSI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYmlnY2hlY2tib3giIHR5cGU9Imx6eDpiaWdjaGVja2JveCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBiYXNlY2hlY2tib3ggaW1wbGVtZW50YXRpb24gcmVwcmVzZW50aW5nIGEgYm9vbGVhbiwgaS5lLiwgY2hlY2tlZAorICAgICAgICAgIGlmIHRydWUsIGVsc2UgZmFsc2UuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImJpZ2NoZWNrYm94IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZWNoZWNrYm94Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJiYWNrY2lyY2xlIiB0eXBlPSJseng6YmFja2NpcmNsZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBiYWNrZ3JvdW5kIGNpcmNsZSBvZiB0aGUgcGllLiAgSGFzIHByb3BlcnRpZXMgc2V0IGJ5IGF0dHJpYnV0ZXMgb24gdGhlCisgICAgICAgIHJlc3BlY3RpdmUgZGF0YXNlcmllcy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYmFja2NpcmNsZSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmRyYXd2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGllcmFkaXVzIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHJhZGl1cyBvZiB0aGUgcGllLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZHJhd2JnYm9yZGVyIiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9IjB4MDAwMDAwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIGJvcmRlciBjb2xvciBvZiB0aGUgY2lyY2xlLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZHJhd2JnIiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9IjB4Q0NDQ0NDIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIGJhY2tncm91bmQgY29sb3Igb2YgdGhlIGNpcmNsZS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImN0cnkiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgY2VudGVyIHkgY29vcmRpbmF0ZSBvZiB0aGUgcGllLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY3RyeCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBjZW50ZXIgeCBjb29yZGluYXRlIG9mIHRoZSBwaWUuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJiZ2JvcmRlcndpZHRoIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHdpZHRoIG9mIHRoZSBjaXJjbGUncyBib3JkZXIuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9IndpbmRvdyIgdHlwZT0ibHp4OndpbmRvdyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0id2luZG93IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6d2luZG93cGFuZWwiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZXNpemFibGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJZiB0cnVlLCBhIHJlc2l6ZSBjb250cm9sIHdpbGwgYXBwZWFyIGluIHRoZSBsb3dlci1yaWdodCBjb3JuZXIsCisgICAgICAgICAgICAgIGFsbG93aW5nIHRoZSB1c2VyIHRvIHJlc2l6ZSB0aGUgd2luZG93LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJiYXNlZWRpdHRleHQiIHR5cGU9Imx6eDpiYXNlZWRpdHRleHQiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGlzIGNvbXBvbmVudCBwcm92aWRlcyB0aGUgbG9vayBhbmQgZmVlbCBmb3IgdXNlciBlZGl0YWJsZSB0ZXh0LCBkYXRhCisgICAgICAgICAgYmluZGluZywgYW5kIGZvY3VzIGV2ZW50cy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYmFzZWVkaXR0ZXh0IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZWZvcm1pdGVtIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGF0dGVybiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIkb25jZXtudWxsfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEFuIGV4cHJlc3Npb24gdG8gcmVzdHJpY3QgdGhlIHNldCBvZiBjaGFyYWN0ZXJzIHRoYXQgYXJlIGFsbG93ZWQKKyAgICAgICAgICAgICAgdG8gYmUgZW50ZXJlZC4gRm9yIGV4YW1wbGUsIFswLTldKiwgWzAxMl0qLCBbYS16QS1aXSosCisgICAgICAgICAgICAgIFswLTlBLVpdKi4gWW91IGNhbiByZXN0cmljdCB0aGUgbnVtYmVyIG9mIGNoYXJhY3RlcnMgdXNpbmcKKyAgICAgICAgICAgICAgbWF4bGVuZ3RoLiBEZWZhdWx0IGlzIGFueSBjaGFyYWN0ZXIuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwYXNzd29yZCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFNldCB0byB0cnVlIGZvciBhIHBhc3N3b3JkIGZpZWxkLiBUZXh0IHdpbGwgYXBwZWFyIGFzICoqKiouIAorICAgICAgICAgICAgICBUaGlzIGF0dHJpYnV0ZSBjYW5ub3QgYmUgY2hhbmdlZCBhdCBydW50aW1lLgorICAgICAgICAgICAgICBAa2V5d29yZHMgZmluYWwgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9ucGF0dGVybiIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQHByaXZhdGUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im11bHRpbGluZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFNldCB0byB0cnVlIGZvciBtdWx0aXBsZSBsaW5lcy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1heGxlbmd0aCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBtYXhpbXVtIG51bWJlciBvZiBjaGFycyB0aGF0IGNhbiBiZSBlbnRlcmVkLiBEZWZhdWx0IGlzCisgICAgICAgICAgICAgIHVubGltaXRlZC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iVGVzdENhc2UiIHR5cGU9Imx6eDpUZXN0Q2FzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCisgIFRlc3RDYXNlIGltcGxlbWVudHMgYW4gaW5kaXZpZHVhbCB0ZXN0IGNhc2UuCisKKyAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciAmbHQ7eHJlZiBsaW5rZW5kPSJsei5UZXN0U3VpdGUiLyZndDsKKyAgZm9yIGFuIGV4YW1wbGUgb2YgdGhpcyB0YWcuCisKKyAgQHBhcmFtIHRlc3ROYW1lOiB0aGUgbmFtZSBvZiB0aGUgdGVzdAorPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iVGVzdENhc2UiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpUZXN0Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGVzdG5hbWVzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImRhdGVwaWNrZXJjb21ib2JveCIgdHlwZT0ibHp4OmRhdGVwaWNrZXJjb21ib2JveCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEBhY2Nlc3MgcHJpdmF0ZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJkYXRlcGlja2VyY29tYm9ib3giIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNlY29tYm9ib3giPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Im1hcmtlciIgdHlwZT0ibHp4Om1hcmtlciIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEBrZXl3b3JkIHByaXZhdGUKKyAgICAgICAgIGRhdGEgbWFya2VyIGNsYXNzIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Im1hcmtlciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImRyb3B0YXJnZXQiIHR5cGU9Imx6eDpkcm9wdGFyZ2V0IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJkcm9wdGFyZ2V0IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRleHQiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0icmVwbGljYXRvciIgdHlwZT0ibHp4OnJlcGxpY2F0b3IiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGlzIGlzIGEgZGVjbGFyZWQgcmVwbGljYXRvciBmb3IgdmlzdWFsIGVsZW1lbnRzLiBVbmxpa2UKKyAgICAgICAgT3Blbkxhc3psbycncyBkYXRhLXJlcGxpY2F0aW9uIGZlYXR1cmUsIGEgcmVwbGljYXRvciBjYW4gdGFrZSBhbgorICAgICAgICBhcmJpdHJhcnkgbm9kZSBzZXQgdGhhdCBtYXkgYmUgcGFzc2VkIGluIGFzIGFuIGFycmF5LgorICAgICAgICBOb24tcmVwbGljYXRpbmcgZWxlbWVudHMgbWF5IGJlIHVzZWQgaW5zaWRlIGEgcmVwbGljYXRvcjsgb25seQorICAgICAgICB0aGUgbGFzdCBjaGlsZCBpbnNpZGUgdGhlIHJlcGxpY2F0b3IgaXMgcmVwbGljYXRlZC4KKworICAgICAgICBUaGUgZGF0YSBhdHRyaWJ1dGUgb2YgdGhlIHJlcGxpY2F0ZWQgKGNsb25lZCkgdmlldyBpcyBzZXQgYnkgdGhlCisgICAgICAgIHNldERhdGEgbWV0aG9kIHdpdGggZGF0YSBmcm9tIHRoZSBub2RlcyBhcnJheSB3aGVuIHRoZSBjbG9uZSBpcworICAgICAgICBib3VuZC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0icmVwbGljYXRvciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4Om5vZGUiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ4cGF0aCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQ29tcHV0ZSBub2RlcyBmcm9tIHRoaXMgeHBhdGggcXVlcnkgYWdhaW5zdCB0aGUgc3BlY2lmaWVkIGRhdGFzZXQgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNwYWNpbmciIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEEgcGl4ZWwgYW1vdW50IHRvIHVzZSBiZXR3ZWVuIGVhY2ggcmVwbGljYXRlZCB2aWV3IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZXBsaWNhdGVkc2l6ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHNpemUgKHdpZHRoIG9yIGhlaWdodCkgaW4gdGhlIHJlcGxpY2F0aW9uIGF4aXMgb2YgdGhlIHZpZXcKKyAgICAgICAgICAgIGJlaW5nIHJlcGxpY2F0ZWQuICBBc3N1bWVzIGFsbCBzdWJ2aWV3cyBoYXZlIHNhbWUgcmVwbGljYXRlZCBzaXplLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icG9vbCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJZiB0cnVlLCB0aGVuIGluc3RhbmNlcyBvZiB0aGUgcmVwbGljYXRlZCBpbnN0YW5jZSBhcmUgcmV1c2VkCisgICAgICAgICAgICB3aGVuIHBvc3NpYmxlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbm5vZGVzIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJub2RlcyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIGxpc3Qgb2Ygbm9kZXMgb3ZlciB3aGljaCB0aGlzIHJlcGxpY3RvciBhY3RzIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtYXNrIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgdmlldyB0aGF0IHdpbGwgY2xpcCB0aGUgcmVwbGljYXRlZCBub2Rlcy4gIERlZmF1bHRzIHRvIHRoZSBpbW1lZGlhdGVwYXJlbnQgb2YgdGhlIGNvbnRhaW5lciA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGF0YXNldCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQ29tcHV0ZSBub2RlcyBmcm9tIHRoaXMgZGF0YXNldCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29udGFpbmVyIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgdmlldyB0aGF0IHdpbGwgY29udGFpbiB0aGUgcmVwbGljYXRlZCBub2Rlcy4gIERlZmF1bHRzIHRvIHRoZSBpbW1lZGlhdGVwYXJlbnQgb2YgdGhlIHJlcGxpY2F0b3IuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbG9uZXMiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBsaXN0IG9mIGVsZW1lbnRzIGNvbnRyb2xsZWQgYnkgdGhpcyByZXBsaWF0b3IgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImF4aXMiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ieSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBheGlzIGluIHdoaWNoIHRvIHJlcGxpY2F0ZTwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Il9kYmdfbHpoZHJhZyIgdHlwZT0ibHp4Ol9kYmdfbHpoZHJhZyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iX2RiZ19semhkcmFnIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6c3RhdGUiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ4ZG9mZnNldCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJ0aGlzLmdldE1vdXNlKCAneCcgKSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IngiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJHt0aGlzLmltbWVkaWF0ZXBhcmVudC5nZXRNb3VzZSggJ3gnICkgLSB0aGlzLnhkb2Zmc2V0fSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibGVnZW5kdGl0bGUiIHR5cGU9Imx6eDpsZWdlbmR0aXRsZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSB0aXRsZSBmb3IgdGhlIGxlZ2VuZC4gIFRoaXMgaXMgaXRzIG93biBzbWFsbCBjbGFzcyBiZWNhdXNlIGl0CisgICAgICAgIG1ha2VzIGNvbnN0cmFpbnRzIGVhc2llciBmb3IgYWRqdXN0bWVudHMuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImxlZ2VuZHRpdGxlIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InR0c2l6ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIxMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSB0aXRsZSB0ZXh0J3MgZm9udCBzaXplLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHBvc2l0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImxlZnQiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgdGl0bGUgdGV4dCdzIGFsaWdubWVudC4gIChsZWZ0LCByaWdodCwgY2VudGVyKSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGNvbG9yIiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9IiRvbmNle251bGx9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHRpdGxlIHRleHQncyBjb2xvci4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imx0aXRsZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIkb25jZXtudWxsfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSB0aXRsZSB0ZXh0IGZvciB0aGUgbGVnZW5kLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJkZWZhdWx0bGlzdGl0ZW0iIHR5cGU9Imx6eDpkZWZhdWx0bGlzdGl0ZW0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUZXh0IGxpc3QgaXRlbSB0aGF0IGRpc3BsYXlzIGEgZGVmYXVsdCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJkZWZhdWx0bGlzdGl0ZW0iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp0ZXh0bGlzdGl0ZW0iPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkZWZhdWx0X3kiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJG9uY2V7dGhpcy5oZWlnaHQvMiAtIHRoaXMuZGVmYXVsdGxhYmVsLl9kZWZhdWx0LmhlaWdodC8yfSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRlZmF1bHRfeCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSI0MCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHggcG9zaXRpb24gb2YgZGVmYXVsdCBsYWJlbCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJTeW5jVGVzdGVyIiB0eXBlPSJseng6U3luY1Rlc3RlciIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iU3luY1Rlc3RlciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OlRlc3RDYXNlIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGVzdGVkX29iamVjdCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisKKyAgICAgUmVmZXJzIHRvIG9iamVjdCB0byBiZSB0ZXN0ZWQ7IHRoaXMgaXMgZGVwZW5kZW50IG9uIHNwZWNpZmljIHRlc3QgcnVuCisgICAgIEBrZXl3b3JkcyByZXF1aXJlZAorICAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGVsIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50X21ldGhvZCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIke2N1cl9tZXRoLnhwYXRoUXVlcnkoJ0BuYW1lJyl9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisKKyAgICAgSGVscHMga2VlcCB0cmFjayBvZiBjdXJyZW50bHkgZXhlY3V0ZWQgbWV0aG9kCisgICAgIEBrZXl3b3JkcyByZWFkb25seQorICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImRhdGFzZXJpZXMiIHR5cGU9Imx6eDpkYXRhc2VyaWVzIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgICAgICAgICAgCisgICAgICAgIEEgZGF0YXNlcmllcyBpbiBhIGNvbnRhaW5lciBmb3IgZGF0YXNlcmllcyBhbmQgZGF0YWNvbHVtbi4KKyAgICAgICAgZGF0YXNlcmllcyBjYW4gYmUgbmVzdGVkLgorICAgICAgICBAYWNjZXNzIHB1YmxpYworICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImRhdGFzZXJpZXMiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ieWRhdGFwYXRoIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBkYXRhIHRvIGJlIGxpbmtlZCB0byB0aGUgeSBheGlzLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ieGRhdGFwYXRoIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBkYXRhIHRvIGJlIGxpbmtlZCB0byB0aGUgeCBheGlzLiAgKEFsc28gdXNlZCBmb3IgcGllY2hhcnQgZGF0YS4pIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0b29sdGlwIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyAoVG8gYmUgZGV2ZWxvcGVkOikgV2hldGhlciBhIHRvb2x0aXAgaXMgYXZhaWxhYmxlIG9ubW91c2VvdmVyLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2hvd2xlZ2VuZG1pbmltaXplZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBXaGV0aGVyIHRvIHNob3cgdGhlIGxlZ2VuZCB3aGVuIHRoZSBjaGFydCBpcyBtaW5pbWl6ZWQsIHdoZW4KKyAgICAgICAgICAgIHRoZXJlIGFyZSBtdWx0aXBsZSBjaGFydHMuIChJdCBpcyBzdHJvbmdseSByZWNvbW1lbmRlZCB0aGlzCisgICAgICAgICAgICBiZSBzZXQgdG8gZmFsc2UgZm9yIG11bHRpcGxlIHBpZXMuKSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmFkaXVzYWRqdXN0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiRvbmNle251bGx9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgV2hldGhlciBjZXJ0YWluIHBpZWNlcyBzaG91bGQgaGF2ZSByYWRpaSBkaWZmZXJlbnQgZnJvbSB0aGUKKyAgICAgICAgICAgIG92ZXJhbGwgcGllLCBhbmQgaWYgc28sIGhvdyBtdWNoIHNob3J0ZXIgb3IgbG9uZ2VyLCBwZXJjZW50YWdlLXdpc2UuCisgICAgICAgICAgICAoZS5nLiBBIHZhbHVlIG9mIDEwIHdvdWxkIG1lYW4gMTAlIGdyZWF0ZXIgYSByYWRpdXMuKSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icG9pbnRzdmlzaWJsZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBXaGV0aGVyIHRvIGRyYXcgcG9pbnRzLCBhbmQgaWYgc28sIHdoaWNoIGNvbG9yLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icG9pbnRzaGFwZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJzcXVhcmUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBXaGF0IHNoYXBlIHRvIG1ha2UgdGhlIHBvaW50LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icG9pbnRvcGFjaXR5IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjEiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgb3BhY2l0eSBvZiB0aGUgcG9pbnRzLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icG9pbnRkaWFtZXRlciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSI1IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHNpemUgb2YgdGhlIHBvaW50cy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBvaW50Ym9yZGVyd2lkdGgiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBib3JkZXIgYXJvdW5kIHRoZSBwb2ludHMuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwb2ludGJvcmRlciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBXaGV0aGVyIHRvIGRyYXcgYm9yZGVycyBhcm91bmQgcG9pbnRzLCBhbmQgaWYgc28sIHdoaWNoIGNvbG9yLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGllYmdjb2xvciIgdHlwZT0ibHp4OmNvbG9yIiBkZWZhdWx0PSIkb25jZXtudWxsfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFdoZXRoZXIgdGhlIGFyZWEgYmVoaW5kIHRoZSBwaWUgaXMgY29sb3JlZCwgYW5kIGlmIHNvLAorICAgICAgICAgICAgd2hhdCBjb2xvci4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxpbmV0aGlja25lc3MiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSB0aGlja25lc3Mgb2YgdGhlIGxpbmUgZnJvbSB0aGUgbGFzdCBwb2ludCB0byB0aGUgY3VycmVudCBwb2ludC4KKyAgICAgICAgICAgIElmIHVzaW5nIGRhdGEgZm9yIHRoaXMgYXR0cmlidXRlLCB0aGlzIHdpbGwgZGV0ZXJtaW5lIHRoZSB0aGlja25lc3MKKyAgICAgICAgICAgIG9mIHRoZSBsaW5lIGZyb20gdGhlIGxhc3QgcG9pbnQgdG8gdGhlIGN1cnJlbnQgcG9pbnQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsaW5lc3Zpc2libGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgV2hldGhlciB0byBkcmF3IGEgbGluZSBiZXR3ZWVuIHBvaW50cywgYW5kIGlmIHNvLCB3aGljaCBjb2xvci4KKyAgICAgICAgICAgIElmIHVzaW5nIGRhdGEgZm9yIHRoaXMgYXR0cmlidXRlLCB0aGlzIHdpbGwgZGV0ZXJtaW5lIHdoZXRoZXIKKyAgICAgICAgICAgIHRvIGRyYXcgYSBsaW5lIGZyb20gdGhlIGxhc3QgcG9pbnQgdG8gdGhlIGN1cnJlbnQgcG9pbnQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsZWdlbmR5IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSWYgbGVnZW5kIGlzICdtYW51YWwnLCB0aGlzIHNldHMgdGhlIHkgY29vcmRpbmF0ZSBvZiB0aGUgbGVnZW5kLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGVnZW5keCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIElmIGxlZ2VuZCBpcyAnbWFudWFsJywgdGhpcyBzZXRzIHRoZSB4IGNvb3JkaW5hdGUgb2YgdGhlIGxlZ2VuZC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxlZ2VuZHdpZHRoIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSWYgbGVnZW5kIGlzICdtYW51YWwnLCB0aGlzIHNldHMgdGhlIHdpZHRoIG9mIHRoZSBsZWdlbmQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsZWdlbmR0aXRsZXBvc2l0aW9uIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImxlZnQiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgcG9zaXRpb24gb2YgdGhlIHRpdGxlOiBsZWZ0LCByaWdodCwgY2VudGVyLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGVnZW5kdGl0bGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJG9uY2V7bnVsbH0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgdGl0bGUgb2YgdGhlIGxlZ2VuZC4gIElmIG5vdCBudWxsLCBhcHBlYXJzIGF0IHRoZSB0b3Agb2YKKyAgICAgICAgICAgIHRoZSBsZWdlbmQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsZWdlbmRobCIgdHlwZT0ibHp4OmNvbG9yIiBkZWZhdWx0PSIkb25jZXtudWxsfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBvbm1vdXNlb3ZlciBoaWdobGlnaHQgZm9yIGxlZ2VuZCBlbGVtZW50cy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxlZ2VuZGhlaWdodCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIElmIGxlZ2VuZCBpcyAnbWFudWFsJywgdGhpcyBzZXRzIHRoZSBoZWlnaHQgb2YgdGhlIGxlZ2VuZC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxlZ2VuZGRhdGFwYXRoIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiRvbmNle251bGx9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIGxvY2F0aW9uIG9mIHRoZSBkYXRhIHRvIGJlIHVzZWQgaW4gdGhlIGxlZ2VuZC4gIElmIHVuc3BlY2lmaWVkLAorICAgICAgICAgICAgdGhlIG51bWVyaWNhbCB2YWx1ZXMgb2YgdGhlIHBpZWNoYXJ0IHdpbGwgYmUgdXNlZC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxlZ2VuZGJvcmRlcndpZHRoIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHdpZHRoIG9mIHRoZSBsZWdlbmQgYm9yZGVyLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGVnZW5kYm9yZGVyIiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9IiMwMDAwMDAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgY29sb3Igb2YgdGhlIGxlZ2VuZCBib3JkZXIsIGlmIGFueS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxlZ2VuZGJnIiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9IiNDQ0NDQ0MiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBCYWNrZ3JvdW5kIGNvbG9yIG9mIHRoZSBsZWdlbmQsIGlmIGFueS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxlZ2VuZCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIkb25jZXtudWxsfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFdoZXRoZXIgb3Igbm90IHRoZXJlJ3MgYSBsZWdlbmQgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZGF0YS4KKyAgICAgICAgICAgIFZhbHVlczogdG9wLCBib3R0b20sIGxlZnQsIHJpZ2h0LAorICAgICAgICAgICAgbWFudWFsdG9wLCBtYW51YWxib3R0b20sIG1hbnVhbGxlZnQsIG1hbnVhbHJpZ2h0LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWx0ZXh0c2l6ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIxMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFNpemUgb2YgYSBsYWJlbCdzIHRleHQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYWJlbHRleHRjb2xvciIgdHlwZT0ibHp4OmNvbG9yIiBkZWZhdWx0PSIjMDAwMDAwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQ29sb3Igb2YgYSBsYWJlbCdzIHRleHQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYWJlbGNvbG9yIiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9IiNFRUVFRUUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBDb2xvciBvZiB0aGUgbGFiZWwuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYWJlbGJvcmRlcndpZHRoIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjEiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBXaWR0aCBvZiBhIGxhYmVsJ3MgYm9yZGVyLiAgKFNldCAwIGZvciBub25lLik8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWxib3JkZXIiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIzAwMDAwMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIENvbG9yIG9mIGEgbGFiZWwncyBib3JkZXIuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYWJlbCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBsYWJlbCBvZiB0aGUgZGF0YXNlcmllcyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmlsbGJlbG93IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiRvbmNle251bGx9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgV2hldGhlciB0byBmaWxsIGJlbmVhdGggdGhlIGxpbmUsIGFuZCBpZiBzbywgd2hpY2ggY29sb3IuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmYm9wYWNpdHkiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iLjIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgb3BhY2l0eSBvZiB0aGUgZmlsbGVkIGFyZWEgYmVsb3cgdGhlIGxpbmUuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJleHBsb2RlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBXaGV0aGVyIHRoZSBwaWVjZXMgc2hvdWxkIG1vdmUgYXdheSBmcm9tIHRoZSBjZW50ZXIgb24gbW91c2VvdmVyLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZW5hYmxlZCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJ0cnVlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgZW5hYmxlIHRoZSBkYXRhc2VyaWVzIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkcmF3Ymdib3JkZXIiIHR5cGU9Imx6eDpjb2xvciIgZGVmYXVsdD0iJG9uY2V7bnVsbH0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBXaGV0aGVyIHRvIGRyYXcgYW4gb3V0bGluZSBhcm91bmQgdGhlIGJhY2tncm91bmQgY2lyY2xlJ3MKKyAgICAgICAgICAgIGNpcmN1bWZlcmVuY2UsIGFuZCBpZiBzbywgd2hhdCBjb2xvci4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRyYXdiZyIgdHlwZT0ibHp4OmNvbG9yIiBkZWZhdWx0PSIkb25jZXtudWxsfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFdoZXRoZXIgdG8gZHJhdyB0aGUgYmFja2dyb3VuZCBjaXJjbGUsIGFuZCBpZiBzbywgd2hhdCBjb2xvci4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRhdGFzZXJpZXNsZWFmcyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIkb25jZXtbXX0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBAa2V5d29yZCBwcml2YXRlCisgICAgICAgICAgICBjYWNoZSBhIGxlYWYgbm9kZXMgb2YgdGhlIGRhdGFzZXJpZXMgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRhdGFyZXNvdXJjZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBCYXIgcmVzb3VyY2UsIGlmIGFueS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRhdGFvcGFjaXR5IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiRvbmNle251bGx9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgT3BhY2l0eSBvZiB0aGUgYmFyLCBsaW5lIG9yIHBpZSBwaWVjZS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRhdGFlbmFibGVkIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9InRydWUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJcyB0aGlzIHNlcmllcyBvZiBkYXRhIGVuYWJsZWQ/IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkYXRhY29sdW1uc21hcCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIkb25jZXtuZXcgT2JqZWN0KCl9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQGtleXdvcmQgcHJpdmF0ZQorICAgICAgICAgICAgY2FjaGUgdGhlIGEgaGFzaHRhYmxlIG9mIGRhdGFjb2x1bW4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRhdGFjb2xvciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBDb2xvciBvZiB0aGUgbGluZSwgYmFyIG9yIHBpZSBwaWVjZS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJvcmRlcndpZHRoIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiRvbmNle251bGx9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHdpZHRoIG9mIGVhY2ggcGllY2UncyBib3JkZXIuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJib3JkZXJjb2xvciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIkb25jZXtudWxsfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBjb2xvciBvZiBlYWNoIHBpZWNlJ3MgYm9yZGVyLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYmdib3JkZXJ3aWR0aCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoaWNrbmVzcyBvZiB0aGUgYmFja2dyb3VuZCBjaXJjbGUncyBjaXJjdW1mZXJlbmNlIG91dGxpbmUuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJiYXNlbGFiZWxzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiRvbmNle251bGx9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgV2hldGhlciB0byBkcmF3IGxhYmVscyBhdCB0aGUgYmFzZXMgb2YgYmFycywgYW5kCisgICAgICAgICAgICB3aGF0IGRhdGEgdG8gdXNlLiAgTm8gbGFiZWxzIGFyZSBkcmF3biBpZiBub3Qgc3BlY2lmaWVkLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYmFzZWxhYmVsYW5nbGUiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IiRvbmNle251bGx9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQW5nbGUgb2YgYmFzZWxhYmVscy4gIChEZXRlcm1pbmVzIHJvdGF0aW9uIG9mIHRpY2sgbGFiZWxzCisgICAgICAgICAgICBhdCB0aGUgYmFzZXMgb2YgYmFycy4gIE5vdCBjb21wYXRpYmxlIHdpdGggREhUTUwuKSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYW5pbWF0aW9uaW5pdCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBXaGV0aGVyIGEgYmFyIGhhcyBhbmltYXRpb24uICBDdXJyZW50bHkgb25seSB3b3JrcworICAgICAgICAgICAgZm9yIGJhcnMsIGJ1dCBtYXkgZXZlbnR1YWxseSBiZSB3b3JrZWQgaW50byBvdGhlcgorICAgICAgICAgICAgY2hhcnQgdHlwZXMuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Imluc3BlY3RvciIgdHlwZT0ibHp4Omluc3BlY3RvciIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iaW5zcGVjdG9yIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6d2luZG93Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJiYXNld2luZG93IiB0eXBlPSJseng6YmFzZXdpbmRvdyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBiYXNld2luZG93IGNsYXNzIGRlZmluZXMgbWV0aG9kcywgYXR0cmlidXRlcyB0aGF0IGFyZSB1c2VkIGJ5IHdpbmRvdworICAgICAgc3ViY2xhc3Nlcy48L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJiYXNld2luZG93IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZWNvbXBvbmVudCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Inlkb2Zmc2V0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9InRoaXMuZ2V0TW91c2UoICd5JyApIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ieGRvZmZzZXQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0idGhpcy5nZXRNb3VzZSggJ3gnICkiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdGF0ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIxIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHN0YXRlIG9mIHRoZSB3aW5kb3c6IDE9c2VsZWN0ZWQgKGZyb250bW9zdCkgd2luZG93LAorICAgICAgICAgICAgICAyPW5vdC1zZWxlY3RlZCB3aW5kb3csIDM9ZHJhZ2dpbmcsIDQ9ZGlzYWJsZWQsIDU9cmVzaXppbmcuCisgICAgICAgICAgICAgIEBrZXl3b3JkcyByZWFkb25seSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3RhcnR5IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiRvbmNle3RoaXMueX0iID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdGFydHgiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJG9uY2V7dGhpcy54fSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1pbndpZHRoIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjYwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgTWluaW11bSB3aWR0aCBmb3IgdGhlIHdpbmRvdy4KKyAgICAgICAgICAgICAgQGtleXdvcmRzIGZpbmFsIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtaW5oZWlnaHQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iNTAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBNaW5pbXVtIGhlaWdodCBmb3IgdGhlIHdpbmRvdy4KKyAgICAgICAgICAgICAgQGtleXdvcmRzIGZpbmFsIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJoYXN3aW5kb3dmb2N1cyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRydWUgaWYgdGhlIHdpbmRvdyBpcyBmcm9udG1vc3QuIFNldCB0aGlzCisgICAgICAgICAgICAgIGF0dHJpYnV0ZSB0byBicmluZyB0aGUgd2luZG93IHRvIHRoZSBmb3JlIG9mIGl0cyBzaWJsaW5nCisgICAgICAgICAgICAgIHdpbmRvd3MsIGFuZCBicmluZyB3aW5kb3cgZm9jdXMuCisgICAgICAgICAgICAgIEBrZXl3b3JkcyBkZWZhdWx0c2V0dGVyIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbGxvd2RyYWciIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQXR0cmlidXRlIGhhbmRsZXMgd2hldGhlciB3aW5kb3cgY2FuIGJlIGRyYWdnZWQgb3Igbm90IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InZpZGVvdGh1bWJuYWlsIiB0eXBlPSJseng6dmlkZW90aHVtYm5haWwiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InZpZGVvdGh1bWJuYWlsIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVybCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0eXBlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Imh0dHAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0aHVtYm5haWx0aW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJib3JkZXIiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ic2ltcGxlaW5wdXR0ZXh0IiB0eXBlPSJseng6c2ltcGxlaW5wdXR0ZXh0IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJzaW1wbGVpbnB1dHRleHQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGV4dE9wYWNpdHkiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSB0ZXh0IG9wYWNpdHkuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZXh0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSB0ZXh0IGZvciBpbnB1dC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZvY3VzYm9yZGVyT3BhY2l0eSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIxIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIG9wYWNpdHkgZm9yIHRoZSBib3JkZXIgb24gZm9jdXMuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJibHVyYm9yZGVyT3BhY2l0eSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIxIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIG9wYWNpdHkgZm9yIHRoZSBib3JkZXIgb24gYmx1ci4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJnT3BhY2l0eSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIxIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIG9wYWNpdHkgZm9yIHRoZSBpbnB1dCBiYWNrZ3JvdW5kLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ1bGluayIgdHlwZT0ibHp4OnVsaW5rIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQSBjbGFzcyBmb3IgVVJMIGxpbmtzLgorICAgIAorICAgIFRoaXMgZGlmZmVycyBmcm9tIHRoZSB1c2Ugb2YgdGhlIFhIVE1MICZhbXA7bHQ7YSZhbXA7Z3Q7IGF0dHJpYnV0ZSwgZS5nIGluICcmYW1wO2x0O3RleHQmYW1wO2d0OyZhbXA7bHQ7YSBocmVmPSJodHRwOi8vb3Blbmxhc3psby5vcmciJmFtcDtndDtPcGVuTGFzemxvLm9yZyZhbXA7bHQ7L2EmYW1wO2d0O2x0Oy90ZXh0JmFtcDtndDsnLCBpbiB0aGVzZSB3YXlzOgorICAgIC0gVGhlcmUgaXMgYSBob3ZlciBlZmZlY3QuICAoVGhpcyBkZWZhdWx0cyB0byB1bmRlcmxpbmUuKQorICAgIC0gVGhlcmUgaXMgYSBob3ZlciBjb2xvci4gIChUaGlzIGRlZmF1bHRzIHRvIGJsdWUuKQorICAgIC0gVGhlIGxpbmsgY29udGVudCBhbmQgdGFyZ2V0IGNhbiBiZSBkYXRhYm91bmQuIAorICAgIAorICAgICZsdDtleGFtcGxlIGV4ZWN1dGFibGU9ImZhbHNlIiZndDsKKyAgICAgICZhbXA7bHQ7dWxpbmsgaHJlZj0iaHR0cDovL29wZW5sYXN6bG8ub3JnIiZhbXA7Z3Q7T3Blbkxhc3psby5vcmcmYW1wO2x0Oy91bGluayZhbXA7Z3Q7CisgICAgJmx0Oy9leGFtcGxlJmd0OworICAgIAorICAgIFNlZSB1bGluay10ZXN0Lmx6eCBmb3IgYWRkaXRpb25hbCBleGFtcGxlcy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idWxpbmsiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGV4dCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHRleHQgb2YgdGhlIGxpbmsuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0YXJnZXQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iX25ldyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFdoZXJlIHRoZSB0YXJnZXQgb3BlbnMuICBTZWUgbHouQnJvd3Nlci5sb2FkVVJMIGZvcgorICAgIGEgbGlzdCBvZiB2YWx1ZXMuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJocmVmIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgVVJMIHRhcmdldC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImhvdmVyVGFncyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJ1IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQSBsaXN0IG9mIHRhZ3MgdGhhdCBhcmUgYXBwbGllZCB0byB0aGUgbGluayB3aGVuCisgICAgaXQgaXMgaG92ZXJlZC4gIFRoaXMgaXMgZWl0aGVyIGEgbGlzdCBvZiB0YWcgbmFtZXMsIGUuZy4gInUiCisgICAgb3IgInUgYiIsIG9yIHRoZSBIVE1MIGl0c2VsZiwgZS5nLiAiJmFtcDtsdDt1JmFtcDtndDsiLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaG92ZXJDb2xvciIgdHlwZT0ibHp4OmNvbG9yIiBkZWZhdWx0PSJibHVlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIGNvbG9yIHdoZW4gdGhlIGxpbmsgaXMgaG92ZXJlZC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbG9yIiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9ImJsdWUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgY29sb3Igd2hlbiB0aGUgbGluayBpcyAmbHQ7ZW0mZ3Q7bm90Jmx0Oy9lbSZndDsgYmVpbmcgaG92ZXJlZC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ic3RhdGUiIHR5cGU9Imx6eDpzdGF0ZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorICBBIGRlc2NyaXB0aW9uIG9mIGFuIGluc3RhbmNlIGhpZXJhcmNoeSB0aGF0IGNhbiBiZSBhcHBsaWVkIGFuZCByZW1vdmVkIGF0IHJ1bnRpbWUuCitKYXZhU2NyaXB0OiBsei5zdGF0ZSAKKworQSBzdGF0ZSBpcyBhbiBvYmplY3QgdGhhdCBob2xkcyBpdHMgY2hpbGRyZW4gYW5kIGF0dHJpYnV0ZXMgZm9yIGNyZWF0aW9uIG9yIGFwcGxpY2F0aW9uIGF0IGEgbGF0ZXIgdGltZSB3aGVuIHRoZSBzdGF0ZSdzIGFwcGx5IG1ldGhvZCBpcyBjYWxsZWQuIEluIGFkZGl0aW9uIHRvIHJlcHJlc2VudGluZyB2aXN1YWwgc3RhdGUgYnkgYWRkaW5nIGFuZCByZW1vdmluZyBjaGlsZHJlbiBmcm9tIGEgdmlldywgc3RhdGVzIGFyZSBvZnRlbiB1c2VkIHRvIGNvbnRyb2wgY29uc3RyYWludHMgd2hpY2ggYXJlIGFwcGxpZWQgYW5kIHJlbW92ZWQgYXQgZGlmZmVyZW50IHRpbWVzIGR1cmluZyB0aGUgcnVuIG9mIGFuIGFwcGxpY2F0aW9uLgorCitGb3IgdGhlIG1vc3QgcGFydCwgdGhlIGRlY2xhcmF0aXZlIHN0eWxlIHVzZWQgaW4gT3Blbkxhc3psbyBhcHBsaWNhdGlvbnMgcmVwcmVzZW50cyBhbiBpbml0aWFsIHN0YXRlIGZvciB0aGUgYXBwbGljYXRpb24uIEFsbCBtb2RpZmljYXRpb24gdG8gYXBwbGljYXRpb24gc3RhdGUgY2FuIGJlIG1hZGUgdXNpbmcgdGhlIHNjcmlwdCBBUEkncywgYnV0IGl0IGlzIG9mdGVuIGNvbnZlbmllbnQgdG8gZGVjbGFyYXRpdmVseSBkZXNjcmliZSBhIGJpdCBvZiBhcHBsaWNhdGlvbiBzdGF0ZSB3aGljaCBtYXkgYmUgc2VsZWN0aXZlbHkgYXBwbGllZCBvciByZW1vdmVkIGF0IHJ1bnRpbWUuIFRoZSAmbHQ7c3RhdGUmZ3Q7IHRhZyBpcyBwcm92aWRlZCBmb3IgdGhpcyBwdXJwb3NlLgorCitFdmVyeXRoaW5nIHdpdGhpbiBhICZsdDtzdGF0ZSZndDsgdGFnIGFjdHMgYXMgaWYgaXQgd2VyZSB3cml0dGVuIGluc2lkZSB0aGUgcGFyZW50IHdoZW4gdGhlIHN0YXRlIGlzIGFwcGxpZWQuIFN0YXRlcyBjYW4gY29udGFpbiBhdHRyaWJ1dGVzLCBtZXRob2RzLCBhbmQgb3RoZXIgbm9kZXMuCisKK1doZW4gYSBzdGF0ZSBpcyByZW1vdmVkLCBhbnkgY2hpbGRyZW4gb3IgY29uc3RyYWludHMgY3JlYXRlZCB3aGVuIHRoZSBzdGF0ZSB3YXMgYXBwbGllZCBhcmUgdGhlbiByZW1vdmVkLCBidXQgYXR0cmlidXRlcyB0aGF0IHdlcmUgc2V0IGJ5IHRoZSBhcHBsaWNhdGlvbiBvZiB0aGUgc3RhdGUgYXJlIG5vdCByZXN0b3JlZC4gCisKKyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJzdGF0ZSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4Om5vZGUiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwb29saW5nIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKworICAgICAgICBJZiB0cnVlLCB0aGUgc3RhdGUgd2lsbCBtZXJlbHkgaGlkZSBhbnkgdmlld3MgaXQgaGFzIGNyZWF0ZWQgd2hlbiBpdCBpcyByZW1vdmVkIChub3QgYXBwbGllZCksIGluc3RlYWQgb2YgZGVzdHJveWluZyB0aGVtLiAKKyAgICAgICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhcHBsaWVkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyAKKyAgICAgICAgV2hldGhlciBvciBub3QgdGhlIHN0YXRlIGlzIGFwcGxpZWQuIHNldEF0dHJpYnV0ZSgnYXBwbGllZCcsIHRydWUpIHdpbGwgYXBwbHkgdGhlIHN0YXRlLiBzZXRBdHRyaWJ1dGUoJ2FwcGxpZWQnLCBmYWxzZSkgd2lsbCByZW1vdmUgdGhlIHN0YXRlLgorICAgICAgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYXR0cmlidXRlIiB0eXBlPSJseng6YXR0cmlidXRlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgU2V0cyBhbiBhdHRyaWJ1dGUgb2YgdGhlIG9iamVjdCB0aGF0IGNvbnRhaW5zIGl0LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJhdHRyaWJ1dGUiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmdyb3VwIHJlZj0ibHp4OnRvcExldmVsRWxlbWVudHMiIC8+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZhbHVlIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyAgVGhlIGluaXRpYWwgdmFsdWUgb2YgdGhlIGF0dHJpYnV0ZS4gVGhlIHR5cGUgb2YgdGhpcyB2YWx1ZSBpcyBzcGVjaWZpZWQgYnkgdGhlIHZhbHVlIG9mIHRoZSB0eXBlIGF0dHJpYnV0ZTsgaWYgdGhhdCBhdHRyaWJ1dGUgaXMgbm90IHByZXNlbnQsIGl0J3MgdGhlIHR5cGUgb2YgdGhpcyBhdHRyaWJ1dGUgaW4gdGhpcyBlbGVtZW50J3MgdGFnLiBUaGUgYXR0cmlidXRlIGlzIGdpdmVuIHRoaXMgdmFsdWUgd2hlbiB0aGUgZWxlbWVudCBpcyBjcmVhdGVkLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHlwZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdHlsZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgQ1NTIHByb3BlcnR5IG5hbWUgdGhhdCBjYW4gYmUgdXNlZCB0byBzZXQgdGhlIHZhbHVlIG9mIHRoaXMgYXR0cmlidXRlIHVuZGVyIHRoZSBjb250cm9sIG9mIGEgJmx0O3N0eWxlc2hlZXQmZ3Q7IChTZWUgQ2hhcHRlciAxOS4gQ2FzY2FkaW5nIFN0eWxlIFNoZWV0cyApLiBzdHlsZSBjYW4gYmUgYW55IHZhbGlkIENTUyBwcm9wZXJ0eSBuYW1lLCBhbmQgbmVlZCBub3QgYmUgdGhlIHNhbWUgYXMgdGhlIGF0dHJpYnV0ZSBuYW1lOyBmb3IgZXhhbXBsZSB5b3UgY291bGQgdXNlIHRoZSBzdGFuZGFyZCBDU1MgcHJvcGVydHkgbmFtZSBiYWNrZ3JvdW5kLWNvbG9yIGFzIHRoZSBzdHlsZSBvZiB0aGUgYmdjb2xvciBhdHRyaWJ1dGUuIFdoZW4gYW4gYXR0cmlidXRlIGhhcyBhIHN0eWxlIHByb3BlcnR5LCB0aGUgdmFsdWUgcHJvcGVydHkgYWN0cyBhcyB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIGF0dHJpYnV0ZTogaW4gdGhlIGFic2VuY2Ugb2YgYW55IGFwcGxpY2FibGUgQ1NTIHJ1bGUgc3BlY2lmeWluZyB0aGUgY29ycmVzcG9uZGluZyBwcm9wZXJ0eSwgdGhlIGF0dHJpYnV0ZSB3aWxsIGJlIGdpdmVuIHRoZSBkZWZhdWx0IHZhbHVlLiBJbiB0aGUgY2FzZSBvZiBkeW5hbWljIENTUywgdGhlIGF0dHJpYnV0ZSB3aWxsIHJldmVydCB0byB0aGUgZGVmYXVsdCB2YWx1ZSBpZiBDU1Mgd2FzIGFwcGxpZWQgYW5kIGlzIHJlbW92ZWQuIChTZWUgRHluYW1pYyBDU1MgLikgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNldHRlciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBEZWxlZ2F0ZSB0aGUgZXZlbnQgdG8gYSBtZXRob2Qgb24gY2hhbmdlcyB0aHJvdWdoIHNldEF0dHJpYnV0ZSgnLi4uJywkdmFsdWUpIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZXF1aXJlZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVHJ1ZSBpZiB0aGlzIGlzIGEgcmVxdWlyZWQgYXR0cmlidXRlLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ibHp4OnRva2VuIiB1c2U9InJlcXVpcmVkIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIG5hbWUgb2YgdGhlIGF0dHJpYnV0ZS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFsbG9jYXRpb24iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iaW5zdGFuY2V8Y2xhc3MiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBPbmUgb2Y6CitjbGFzcworICAgIFRoZSBhdHRyaWJ1dGUgd2lsbCBiZSBhbiBhdHRyaWJ1dGUgb2YgdGhlIGNsYXNzOyB0byByZWZlciB0byBpdCwgeW91IHNheSBsei5jbGFzc25hbWUuYXR0cmlidXRlbmFtZSAuIAoraW5zdGFuY2UKKyAgICBFYWNoIGluc3RhbmNlIHdpbGwgaGF2ZSBhbiBhdHRyaWJ1dGUgd2l0aCB0aGUgc3BlY2lmaWVkIHByb3BlcnRpZXMgKCBuYW1lICwgdHlwZSAsIHZhbHVlICwgZXRjLikuIAorCitZb3UgY2FuIHNldCBhbGxvY2F0aW9uIHRvIGNsYXNzIHRvIGdldCBzdGF0aWMgYXR0cmlidXRlcy4gU3RhdGljIHByb3BlcnRpZXMgYXJlIGF0dGFjaGVkIHRvIHRoZSBjbGFzcyBpdHNlbGYsIGZvciBleGFtcGxlIGx6LmNsYXNzbmFtZSAuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ic3RyZWFtc2NydWJiZXIiIHR5cGU9Imx6eDpzdHJlYW1zY3J1YmJlciIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ic3RyZWFtc2NydWJiZXIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idG90YWx0aW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyByZWFkIG9ubHkgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRpbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHJlYWQgb25seSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3RyZWFtIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyB0aGUgc3RyZWFtIHRvIGNvbnRyb2wgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNjcnViYmluZyIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgdHJ1ZSB3aGVuIHVzZXIgaGFzIHRoZSBtb3VzZSBkb3duIGFuZCBpcyBzY3J1YmJpbmcgdGhlIHN0cmVhbSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icHJvZ3Jlc3MiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHJlYWQgb25seSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWluIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgbWluICd4JyB2YWx1ZSwgZGVmYXVsdHMgdG8gemVybyAodHlwaWNhbGx5IHRoZSBsZWZ0IHNpZGUgb2YgcGFyZW50KSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWF4IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIkb25jZXtwYXJlbnQud2lkdGgtdGhpcy53aWR0aH0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBtYXggJ3gnIHZhbHVlLCBkZWZhdWx0cyB0byB0aGUgcmlnaHQgc2lkZSBvZiB0aGUgcGFyZW50IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InN0cmluZ3ZhbGlkYXRvciIgdHlwZT0ibHp4OnN0cmluZ3ZhbGlkYXRvciIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ic3RyaW5ndmFsaWRhdG9yIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZXZhbGlkYXRvciI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1pbkxlbmd0aCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1pbkVycm9yc3RyaW5nIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9InRoaXMgc3RyaW5nIGlzIHNob3J0ZXIgdGhhbiB0aGUgbWluaW11bSBhbGxvd2VkIGxlbmd0aC4iID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtYXhMZW5ndGgiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjI1NSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1heEVycm9yc3RyaW5nIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9InRoaXMgc3RyaW5nIGlzIGxvbmdlciB0aGFuIHRoZSBtYXhpbXVtIGFsbG93ZWQgbGVuZ3RoLiIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iTHpEZWJ1Z1dpbmRvdyIgdHlwZT0ibHp4Okx6RGVidWdXaW5kb3ciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyAKKyAgICBUaGUgTGFzemxvIGRlYnVnZ2VyIHdpbmRvdy4gQW4gaW5zdGFuY2Ugd2lsbCBiZSBhdXRvbWF0aWNhbGx5CisgICAgaW5zdGFudGlhdGVkIHdoZW4gdGhlIGFwcGxpY2F0aW9uIGlzIGNvbXBpbGVkIGluIGRlYnVnIG1vZGUKKyAgICAocmVxdWVzdGVkIGJ5IGVpdGhlciB1c2luZyB0aGUKKyAgICAmbHQ7Y29kZSZndDtjYW52YXMmbHQ7L2NvZGUmZ3Q7ICZsdDtjb2RlJmd0O2RlYnVnJmx0Oy9jb2RlJmd0OyBhdHRyaWJ1dGUgb3IgYnkgbG9hZGluZyB0aGUKKyAgICBhcHBsaWNhdGlvbiB1c2luZyB0aGUgJmx0O2NvZGUmZ3Q7P2RlYnVnPXRydWUmbHQ7L2NvZGUmZ3Q7IG9wdGlvbikuICAKKworICAgIEBrZXl3b3JkcyBwcml2YXRlX2NvbnN0cnVjdG9yCis8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJMekRlYnVnV2luZG93IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRpdGxlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNtYWxsSW5wdXRBcmVhSGVpZ2h0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjI5IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2F2ZWRZUG9zIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjEwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2F2ZWRYUG9zIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjEwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2F2ZWRXaWR0aCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIzNDAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzYXZlZElucHV0QXJlYUhlaWdodCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSI1MyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNhdmVkSGVpZ2h0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjEyNSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlc2l6YWJsZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJ0cnVlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGVyc2lzdCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1pbmltaXplZCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxpbmVoZWlnaHQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMTMiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYXN0cGFydCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFzdG9iaiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ia2VlcF93aWR0aF9vbl9jYW52YXMiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJrZWVwX2hlaWdodF9vbl9jYW52YXMiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc0xvYWRlZCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImV2YWxsb2FkZXIiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRlZmF1bHRfd2lkdGgiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkZWZhdWx0X2hlaWdodCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRlYnVnZ2VyQm9yZGVyV2lkdGgiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iNSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbnNvbGVSZW1vdGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb21tYW5kaGlzdG9yeV9wdHIiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbW1hbmRoaXN0b3J5IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IltdIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xvc2VhYmxlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9InRydWUiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGllbnRCcmlkZ2UiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImF1dG9zY3JvbGwiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibGF5b3V0IiB0eXBlPSJseng6bGF5b3V0IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisKKyAgICBsYXlvdXQubHp4CisgICAKKyAgICBAY29weXJpZ2h0IENvcHlyaWdodCAyMDAxLTIwMTAgTGFzemxvIFN5c3RlbXMsIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCisgICAgICAgICAgICAgICBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zLgorICAgCisgICAgQHRvcGljIExGQworICAgIEBzdWJ0b3BpYyBDb250cm9sbGVycworICAgIEBhZmZlY3RzIGx6bGF5b3V0CisgICAgQGFjY2VzcyBwdWJsaWMKKyAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibGF5b3V0IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6bm9kZSI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZpcCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQGFjY2VzcyBwcml2YXRlCisgKiBKdXN0IHVzZWQgdG8gZWZmZWN0IGEgdHlwZSBjYXN0IG9mIGltbWVkaWF0ZXBhcmVudCB0byBMelZpZXcgCisgKiBUT0RPIFttYXggMjAxMC0wN10gYWRkIEx6VmlldyB0eXBlIGJhY2sgd2hlbiBwb3NzaWJsZQorIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1cGRhdGVEZWxlZ2F0ZSIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQSBkZWxlZ2F0ZSB1c2VkIHRvIHVwZGF0ZSB0aGUgbGF5b3V0LgorICAgICAgQHR5cGUgTHpEZWxlZ2F0ZQorICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdWJ2aWV3cyIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisKKyAgICAgQXJyYXkgb2YgdGhlIHZpZXdzIHRoaXMgbGF5b3V0IGNvbnRyb2xzLiBVc2VkIGJ5IHN1YmNsYXNzZXMgb2YKKyAgICAgJmx0O2NvZGUmZ3Q7bGF5b3V0Jmx0Oy9jb2RlJmd0OyB0byBpbXBsZW1lbnQgdGhlaXIgYXJyYW5nZW1lbnQgYWxnb3JpdGhtIGJ5CisgICAgIGFkanVzdGluZyB0aGUgYXBwcm9wcmlhdGUgYXR0cmlidXRlIG9mIGVhY2ggdmlldy4KKyAgICAKKyAgICAgQHR5cGUgW0x6Vmlld10KKyAgICAgQGFjY2VzcyBwdWJsaWMKKyAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsb2NrZWQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCisgICAgIFNldCB0byB0cnVlIGlmIGxheW91dCBpcyBsb2NrZWQgZnJvbSB1cGRhdGVzLgorICAgIAorICAgICBAZGV2bm90ZSBsb2NrZWQgaXMgc2V0IHRvIDIgaW4gdGhlIHByb3RvdHlwZSBvZiB0aGUgbGF5b3V0LiBUaGlzCisgICAgIGlzIGEgc3BlY2lhbCBzaWduYWwgdGhhdCB0aGUgbGF5b3V0IGlzIGxvY2tlZCB0ZW1wb3JhcmlseSB1bnRpbAorICAgICBpdCByZXNvbHZlcyBpdHMgcmVmZXJlbmNlcworICAgIAorICAgICBAdHlwZSBCb29sZWFuCisgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ2YWx1ZXJlZ2lvbiIgdHlwZT0ibHp4OnZhbHVlcmVnaW9uIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisKKyAgICAgICAgUmVwcmVzZW50cyBhIHJlZ2lvbiBvZiB2YWx1ZXMgaW4gdGhlIGNoYXJ0CisgICAgICAgIEBhY2Nlc3MgcHVibGljCisgICAgICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InZhbHVlcmVnaW9uIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6ZHJhd3ZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0aXBFbmFibGVkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGVuYWJsZSB0aGUgdmFsdWUgcmVnaW9uJ3MgdG9vbHRpcCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGlwIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRpcCBsYWJlbCB0aGF0IGFwcGVhciB3aGVuIHRoZSBtb3VzZSBpcyBvdmVyIHRoZSB2YWx1ZSByZWdpb248L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVnaW9uRW5hYmxlZCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJ0cnVlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgZW5hYmxlIHRoZSByZW5kZXJpbmcgb2YgdGhlIHZhbHVlIHJlZ2lvbiBpbiB0aGUgY2hhcnQgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxhYmVsIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGxhYmVsIG9mIHRoZSB2YWx1ZSByZWdpb24sIGl0IGlzIHNob3duIG5leHQgdG8gdGhlIHJlZ2lvbiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGF0YTIiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgTWF4aW11bSB2YWx1ZSBmb3IgdGhlIFZhbHVlIHJlZ2lvbjwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkYXRhMSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBNaW5pbXVtIHZhbHVlIGZvciB0aGUgVmFsdWUgcmVnaW9uPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImF4aXMiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHRoZSBhc3NvY2lhdGVkIGF4aXMgdG8gdGhlIFJlZ2lvbiBjYW4gYmUieCIgb3IgInkiIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImdyaWQiIHR5cGU9Imx6eDpncmlkIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJncmlkIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZWdyaWQiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzaG93dnNjcm9sbCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJ0cnVlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSWYgZmFsc2UsIHRoZSBncmlkIHdpbGwgbmV2ZXIgc2hvdyBhIHZlcnRpY2FsIHNjcm9sbGJhciwKKyAgICAgICAgICAgIGV2ZW4gaWYgdGhlIHJvd3MgYXJlIHdpZGVyIHRoYW4gdGhlIGdyaWQuPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNob3doc2Nyb2xsIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9InRydWUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJZiBmYWxzZSwgdGhlIGdyaWQgd2lsbCBuZXZlciBzaG93IGEgaG9yaXpvbnRhbCBzY3JvbGxiYXIsCisgICAgICAgICAgICAgIGV2ZW4gaWYgdGhlIHJvd3MgYXJlIHdpZGVyIHRoYW4gdGhlIGdyaWQuPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZ29sZHN0eWxlIiB0eXBlPSJseng6Z29sZHN0eWxlIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJnb2xkc3R5bGUiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpzdHlsZSI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0idHJlZXNlbGVjdG9yIiB0eXBlPSJseng6dHJlZXNlbGVjdG9yIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgU2VsZWN0aW9uIG1hbmFnZXIgdXNlZCBieSB0cmVlLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0cmVlc2VsZWN0b3IiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpzZWxlY3Rpb25tYW5hZ2VyIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibXVsdGlzZWxlY3QiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJZiBtdWx0aXNlbGVjdCBpcyB0cnVlLCBtdWx0aXBsZSBzZWxlY3Rpb24gaXMgZW5hYmxlZC4gIFdoZW4gdGhlCisgICAgICAgICAgICAgIHNoaWZ0IGtleSBpcyBkb3duLCBhIHJhbmdlIG9mIGl0ZW1zIGlzIHNlbGVjdGVkLiAgV2hlbiB0aGUgY29udHJvbAorICAgICAgICAgICAgICBrZXkgaXMgZG93biwgYW55IGl0ZW0gbWF5IGJlIGFkZGVkIHRvIHRoZSBzZWxlY3Rpb24uIERlZmF1bHQgaXMKKyAgICAgICAgICAgICAgZmFsc2UuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Il9kYmdfbHp0ZXh0c2Nyb2xsZXIiIHR5cGU9Imx6eDpfZGJnX2x6dGV4dHNjcm9sbGVyIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJfZGJnX2x6dGV4dHNjcm9sbGVyIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZpc2libGVsaW5lcyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSI0IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGh1bWJoZWlnaHQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMjQiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZXh0bGluZXMiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iW10iID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsaW5lcHRyIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhdXRvc2Nyb2xsIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9InRydWUiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhcnJvd2J1dHRvbmhlaWdodCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIxMiIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYmFzZXRhYnMiIHR5cGU9Imx6eDpiYXNldGFicyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBiYXNlIHRhYnMgb2JqZWN0LiBUaGlzIGlzIHRoZSBvdXRlcm1vc3QgY29udGFpbmluZyBjb21wb25lbnQKKyAgICAgICAgICB3aXRoaW4gd2hpY2ggdGhlcmUgYXJlIGEgYmFzZXRhYnNiYXIgYW5kIHRoZSBiYXNldGFic2NvbnRlbnQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImJhc2V0YWJzIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZWNvbXBvbmVudCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRhYmNsYXNzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImJhc2V0YWIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBDbGFzcyB0byBpbnN0YW50aWF0ZSB0YWIgaXRlbXMgZm9yIGJhc2V0YWJzYmFyLiBDYW4gYmUKKyAgICAgICAgICAgICAgb3ZlcnJpZGRlbiBieSBiYXNldGFicGFuZS4KKyAgICAgICAgICAgICAgQGtleXdvcmRzIGZpbmFsIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbnNldF90b3AiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjgiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgdG9wIGluc2V0IGZvciBjb250ZW50IGFwcGVhcmluZyB3aXRoaW4gYSBiYXNldGFicGFuZS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imluc2V0X3JpZ2h0IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSI4IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHJpZ2h0IGluc2V0IGZvciBjb250ZW50IGFwcGVhcmluZyB3aXRoaW4gYSBiYXNldGFicGFuZS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imluc2V0X2xlZnQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjgiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgbGVmdCBpbnNldCBmb3IgY29udGVudCBhcHBlYXJpbmcgd2l0aGluIGEgYmFzZXRhYnBhbmUuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbnNldF9ib3R0b20iIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjgiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgYm90dG9tIGluc2V0IGZvciBjb250ZW50IGFwcGVhcmluZyB3aXRoaW4gYSBiYXNldGFicGFuZS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbnRlbnRjbGFzcyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJiYXNldGFic2NvbnRlbnQiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBDbGFzcyB0byBpbnN0YW50aWF0ZSB0byBjb250YWluIGJhc2V0YWJwYW5lcy4KKyAgICAgICAgICAgICAgQGtleXdvcmRzIGZpbmFsIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb250ZW50IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGlzIGlzIGEgcmVmZXJlbmNlIHRvIGJhc2V0YWIncyBjb250ZW50IGFyZWEuIFRoaXMgaXMgd2hlcmUgYWxsCisgICAgICAgICAgICAgIGJhc2V0YWJwYW5lcyBpbiB0YWJzIGFyZSBwbGFjZWQuCisgICAgICAgICAgICAgIEBrZXl3b3JkcyByZWFkb25seSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyc2l6ZSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBzaXplIG9mIHRoZSBib3JkZXIgc3Vycm91bmRpbmcgYSBiYXNldGFicGFuZS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJhcmNsYXNzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImJhc2V0YWJzYmFyIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQ2xhc3MgdG8gaW5zdGFudGlhdGUgdG8gY29udGFpbiB0YWIgaXRlbXMuCisgICAgICAgICAgICAgIEBrZXl3b3JkcyBmaW5hbCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYmFyIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGlzIGlzIGEgcmVmZXJlbmNlIHRvIGl0cyBiYXNldGFic2Jhci4gCisgICAgICAgICAgICAgIEBrZXl3b3JkcyByZWFkb25seSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJyZXNvdXJjZSIgdHlwZT0ibHp4OnJlc291cmNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CitBIHRhZyB0aGF0IGRlZmluZXMgYSBtZWRpYSBvYmplY3QgdGhhdCBjYW4gYmUgYXNzb2NpYXRlZCB3aXRoIGEgdmlldy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0icmVzb3VyY2UiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmdyb3VwIHJlZj0ibHp4OnRvcExldmVsRWxlbWVudHMiIC8+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNyYyIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisJVGhlIHBhdGggb2YgYSBmaWxlIHRoYXQgY29udGFpbnMgdGhlIHNvdXJjZSBmb3IgdGhpcyBvYmplY3QuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvZmZzZXR5IiB0eXBlPSJseng6bnVtYmVyIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisJVGhlIHkgb2Zmc2V0IG9mIGEgYml0bWFwIHJlc291cmNlIHVzZWQgZm9yIGEgY3VzdG9tIGN1cnNvci4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9mZnNldHgiIHR5cGU9Imx6eDpudW1iZXIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKwlUaGUgeCBvZmZzZXQgb2YgYSBiaXRtYXAgcmVzb3VyY2UgdXNlZCBmb3IgYSBjdXN0b20gY3Vyc29yLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisJVGhlIG5hbWUgb2YgYSB2YXJpYWJsZSB0aGF0IHdpbGwgYmUgc2V0IHRvIHRoaXMgb2JqZWN0IHdoZW4gdGhlIGFwcGxpY2F0aW9uIGlzIHN0YXJ0ZWQuIElmIHRoaXMgZWxlbWVudCBpcyBkaXJlY3RseSB3aXRoaW4gYSBjYW52YXMgb3IgbGlicmFyeSBlbGVtZW50LCB0aGUgZ2xvYmFsIHZhcmlhYmxlIGFuZCB0aGUgY2FudmFzIHByb3BlcnR5IHdpdGggdGhpcyBuYW1lIHdpbGwgYmUgc2V0IHRvIHRoaXMgb2JqZWN0LiBJZiB0aGlzIGVsZW1lbnQgaXMgd2l0aGluIGFub3RoZXIgb2JqZWN0LCB0aGF0IG9iamVjdCdzIHByb3BlcnR5IHdpdGggdGhpcyBuYW1lIHdpbGwgYmUgc2V0IHRvIHRoaXMgb2JqZWN0LiAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJkYXRhdGlwIiB0eXBlPSJseng6ZGF0YXRpcCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCisgICAgIHRvb2x0aXAgaXMgYSB0b29sIHRpcCB0byBiZSB1c2UgYmUgdGhlIGNoYXJ0IGVsZW1lbnRzIHN1Y2ggYXMgdGhlIHBsb3QgYXJlYQorICAgICBAYWNjZXNzIHB1YmxpYworICAgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iZGF0YXRpcCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmxhYmVsIj4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJsaXN0IiB0eXBlPSJseng6bGlzdCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEEgbGlzdCBjb250YWluaW5nIGxpc3RpdGVtcyBhbmQgcHJvdmlkaW5nIHNlbGVjdGlvbiBjYXBhYmlsaXRpZXMuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Imxpc3QiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNlbGlzdCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRyYWNraW5nIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVG9nZ2xlcyB0aGUgbW91c2Vkb3duIHRyYWNraW5nLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3BhY2luZyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIG51bWJlciBvZiBwaXhlbHMgdGhhdCBpdGVtcyBzaG91bGQgYmUgc3BhY2VkIGZyb20gb25lIGFub3RoZXIuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzaG93bml0ZW1zIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Ii0xIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIG51bWJlciBvZiBpdGVtcyB0aGF0IGFyZSBkaXNwbGF5ZWQuIFRoaXMgdmFsdWUgd2lsbCBpZ25vcmVkIGlmCisgICAgICAgICAgICAgIHRoaXMgdmlldyBhdHRlbXB0cyB0byBkcmF3IHBhc3QgdGhlIGNhbnZhcyBib3VuZGFyeS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNjcm9sbGJhcmNsYXNzbmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJ2c2Nyb2xsYmFyIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIG5hbWUgb2YgdGhlIGNsYXNzIHRvIGluc3RhbnRpYXRlIGFzIG91ciBzY3JvbGxiYXIuCisgICAgICAgICAgICAgIEBrZXl3b3JkcyBwdWJsaWMgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNjcm9sbGFibGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBAa2V5d29yZHMgcmVhZG9ubHkgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9ubW91c2V0cmFja291dHJpZ2h0IiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBldmVudCBub3QgdXNlZCAtIGRlY2xhcmVkIHRvIHJlbW92ZSBkZWJ1Z2dlciB3YXJuaW5ncyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25tb3VzZXRyYWNrb3V0bGVmdCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgZXZlbnQgbm90IHVzZWQgLSBkZWNsYXJlZCB0byByZW1vdmUgZGVidWdnZXIgd2FybmluZ3MgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1pbmhlaWdodCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMjQiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBtaW51bXVtIGhlaWdodCBvZiB0aGUgbGlzdCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyc2l6ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIxIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHNpemUgaW4gcGl4ZWxzIGZvciB0aGlzIGxpc3QuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJib3JkZXJfdG9wIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiR7dGhpcy5ib3JkZXJzaXplfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBzaXplIG9mIHRoZSB0b3AgYm9yZGVyLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyX3JpZ2h0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiR7dGhpcy5ib3JkZXJzaXplfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBzaXplIG9mIHRoZSByaWdodCBib3JkZXIuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJib3JkZXJfbGVmdCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIke3RoaXMuYm9yZGVyc2l6ZX0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgc2l6ZSBvZiB0aGUgbGVmdCBib3JkZXIuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJib3JkZXJfYm90dG9tIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiR7dGhpcy5ib3JkZXJzaXplfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBzaXplIG9mIHRoZSBib3R0b20gYm9yZGVyLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYXV0b3Njcm9sbGJhciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJ0cnVlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSWYgdHJ1ZSwgYSBzY3JvbGxiYXIgd2lsbCBzaG93IHVwIGF1dG9tYXRpY2FsbHkgd2hlbiB0aGVyZSBhcmUKKyAgICAgICAgICAgICAgbW9yZSBpdGVtcyB0aGFuIHNob3duaXRlbXMuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InZpZGVvdmlldyIgdHlwZT0ibHp4OnZpZGVvdmlldyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idmlkZW92aWV3IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVybCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgdXJsIG9mIHRoZSB2aWRlbywgbWF5IGJlIGEgcmVsYXRpdmUgVVJMLCAKKyAgICAgICAgICAgIGZvciBleGFtcGxlOiAiaHR0cDovL2xvY2FsaG9zdC9teXZpZGVvLmZsdiIsIAorICAgICAgICAgICAgb3Igc2ltcGx5ICJteXZpZGVvLmZsdiIuCisKKyAgICAgICAgICAgIFdoZW4gdHlwZT0icnRtcCIsIHRoZSB1cmwgaXMgYWx3YXlzIHJlbGF0aXZlIHRoZSBydG1wY29ubmVjdGlvbi4KKyAgICAgICAgICAgIChVc2Ugb25seSB3aGVuIHlvdSBhcmUgbm90IGV4cGxpY2l0bHkgZGVjbGFyaW5nIHRoZSBtZWRpYXN0cmVhbS4pCisgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InR5cGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iaHR0cCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFByb3RvY29sICJydG1wIiBvciAiaHR0cCIuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdHJlYW0iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgbWVkaWFzdHJlYW0gb2JqZWN0LiAgQSBtZWRpYXN0cmVhbSB3aWxsIGJlIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGlmIG9uZSBpcyBub3Qgc3BlY2lmaWVkIGF0IGluaXQgdGltZS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN0YXJ0dGltZSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFNob3cgdGhlIGZyYW1lIGZyb20gdGhpcyB0aW1lIChpbiBzZWNvbmRzKSB3aGVuZXZlciB0aGUgdXJsIAorICAgICAgICAgIGlzIHNldCBmb3IgdmlkZW8gcGxheWJhY2suCisgICAgICAgICAgVXNlIC0xIHRvIHNob3cgbm8gZnJhbWUgKHdoaWNoIHdpbGwgbGVhdmUgdGhlIGltYWdlIGFzIGl0CisgICAgICAgICAgd2FzIHdoZW4gc3dpdGNoaW5nIHZpZGVvcykgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBsYXl2b2x1bWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMS4wIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHZvbHVtZSBmb3IgdmlkZW8gcGxheWJhY2ssIGEgZmxvYXQgZnJvbSAwIHRvIDEuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtaWMiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBtaWNyb3Bob25lIG9iamVjdC4gCisgICAgICAgICAgICBAa2V5d29yZHMgcmVhZG9ubHkgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRlYnVnIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSWYgdHJ1ZSwgRGVidWcud3JpdGUgZXh0cmEgc3R1ZmYgKHRoaXMgbWF5IGdvIGF3YXkpLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2FtIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgY2FtZXJhIG9iamVjdC4gCisgICAgICAgICAgICBAa2V5d29yZHMgcmVhZG9ubHkgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJ1ZmZlcnRpbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIElmIHRydWUsIHZpZGVvIHdpbGwgc3RhcnQgcGxheWluZyBhcyBzb29uIGFzIHVybCBpcyBzZXQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhdXRvcGxheSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIElmIHRydWUsIHZpZGVvIHdpbGwgc3RhcnQgcGxheWluZyBhcyBzb29uIGFzIHVybCBpcyBzZXQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InRpbWV2YWxpZGF0b3IiIHR5cGU9Imx6eDp0aW1ldmFsaWRhdG9yIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgdGltZXZhbGlkYXRvciBjbGFzcyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0aW1ldmFsaWRhdG9yIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZXZhbGlkYXRvciI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlcGFyYXRvciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSI6IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgU2VwYXJhdG9yIG11c3QgYmUgdGhlIHNhbWUgYXMgc3BlY2lmaWVkIGluICJmb3JtYXQiIGF0dHJpYnV0ZQorICAgICAgICAgICAgICBpdCdzIG5lZWRlZCB0byBwcmV2ZW50IGlucHV0IHdpdGggZGlmZmVyZW50IHNlcGFyYXRvciA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW52YWxpZGZvcm1hdEVycm9yc3RyaW5nIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IlBsZWFzZSBpbnB1dCB0aGUgdGltZSBpbiBhIHZhbGlkIGZvcm1hdCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBmaXZlIGF0dHJpYnV0ZXMgYWJvdmUgYXJlIGZpdmUgZGlmZmVyZW50IG1lc3NhZ2UgZXJyb3JzIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbnZhbGlkU2VwYXJhdG9yRXJyb3JzdHJpbmciIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iUGxlYXNlIGVudGVyIGEgdmFsaWQgc2VwYXJhdG9yIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW52YWxpZFNlY29uZHNFcnJvcnN0cmluZyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJQbGVhc2UgZW50ZXIgc2Vjb25kcyBiZXR3ZWVuIDAgYW5kIDU5IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW52YWxpZE1pbnV0ZXNFcnJvcnN0cmluZyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJQbGVhc2UgZW50ZXIgbWludXRlcyBiZXR3ZWVuIDAgYW5kIDU5IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW52YWxpZEhvdXJFcnJvcnN0cmluZyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJQbGVhc2UgZW50ZXIgaG91ciBiZXR3ZWVuIDAgYW5kIDIzIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW5jb25ncnVlbnRTZXBhcmF0b3JFcnJvcnN0cmluZyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJXYXJuaW5nISBUd28gZGlmZmVyZW50IHNlcGFyYXRvcnMgYXJlIGRlZmluZWQgaW4gZm9ybWF0IGFuZCBzZXBhcmF0b3IgYXR0cmlidXRlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgV2FybmluZyBtZXNzYWdlIHdoZW4gdGhlIHR3byBhdHRyaWJ1dGUgImZvcm1hdCIgYW5kICJzZXBhcmF0b3IiIGhhdmUgZGlmZmVyZW50IHNlcGFyYXRvcidzIGNoYXIgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZvcm1hdCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJoaDptaTpzcyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSB0aW1lIGZvcm1hdCBhdHRyaWJ1dGUuIERlZmF1bHQ6IGhoOm1pOnNzCisgICAgICAgICAgICAgIGhoID0gaG91cgorICAgICAgICAgICAgICBtaSA9IG1pbnV0ZXMKKyAgICAgICAgICAgICAgc3MgPSBzZWNvbmRzIAorICAgICAgICAgICAgICBUaGUgc2VwYXJhdG9yIG11c3QgYmUgdGhlIHNhbWUgc3Mgc3BlY2lmaWVkIGluICJzZXBhcmF0b3IiIGF0dHJpYnV0ZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJmbG9hdGluZ2xpc3QiIHR5cGU9Imx6eDpmbG9hdGluZ2xpc3QiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImZsb2F0aW5nbGlzdCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmJhc2VmbG9hdGluZ2xpc3QiPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Il9kYmdfaG9yaXpfc2Nyb2xsYmFyIiB0eXBlPSJseng6X2RiZ19ob3Jpel9zY3JvbGxiYXIiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Il9kYmdfaG9yaXpfc2Nyb2xsYmFyIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRodW1id2lkdGgiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMjQiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhdXRvc2Nyb2xsIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9InRydWUiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhcnJvd2J1dHRvbndpZHRoIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjEyIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ4bWxycGMiIHR5cGU9Imx6eDp4bWxycGMiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InhtbHJwYyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnJwYyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlcnZpY2UiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJG9uY2V7bnVsbH0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyAoUmVxdWlyZWQpIFhNTC1SUEMgc2VydmljZSBVUkwuIFRoZSBVUkwgbXVzdCBiZSBodHRwLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ0cmVlbm9kZSIgdHlwZT0ibHp4OnRyZWVub2RlIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0cmVlbm9kZSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmJhc2VvcHR0cmVlbm9kZSI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1vdXNlaW4iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImZpc2hleWVfaXRlbSIgdHlwZT0ibHp4OmZpc2hleWVfaXRlbSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iZmlzaGV5ZV9pdGVtIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRvb2x0aXAiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJHt0aGlzLnRleHR9IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGV4dCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3RhcnRfc2l6ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIke3BhcmVudC5zdGFydF9zaXplfSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9sZF95IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiRvbmNle2NhbnZhcy5nZXRNb3VzZSgneScpfSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9sZF94IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiRvbmNle2NhbnZhcy5nZXRNb3VzZSgneCcpfSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im15VG9vbHRpcE1hbmFnZXIiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJG9uY2V7cGFyZW50LnRvb2x0aXBtYW5hZ2VyfSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imljb24iIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImhhbG9fc2l6ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIke3BhcmVudC5oYWxvX3NpemV9IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZXhwYW5kZWRfc2l6ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIke3BhcmVudC5leHBhbmRlZF9zaXplfSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0idmlkZW90b2dnbGVidXR0b24iIHR5cGU9Imx6eDp2aWRlb3RvZ2dsZWJ1dHRvbiIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idmlkZW90b2dnbGVidXR0b24iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHJhY2tpbmciIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdmVyIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaWNvbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmcmFtZVRhYmxlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiRvbmNleyAgICAgICAgICAgICBbMSwgMiwgMSwgMiwgMywgMywgMywgM119IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhpcyBsb29rLXVwIHRhYmxlIG1hcHMgYSBzdGF0ZSB2YWx1ZSB0byBhIGZyYW1lIGluZGV4LiAKKyAgICAgICAgICAgICAgQ3VycmVudGx5IDJeMz04IHN0YXRlczogCisgICAgICAgICAgICAgIG92ZXIgKDJeMD0xKSwgdHJhY2tpbmcgKDJeMT0yKSBhbmQgZW5nYWdlZCAoMl4yPTQpLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZW5nYWdlZCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZGF0YXNldCIgdHlwZT0ibHp4OmRhdGFzZXQiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KK0FuIGluLW1lbW9yeSB4bWwtc3R5bGUgZGF0YSBoaWVyYXJjaHkuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImRhdGFzZXQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpub2RlIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHlwZSIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisJV2hlbiBzZXQgdG8gImh0dHAiIG9yICJzb2FwIiwgdGhlIGRhdGFzZXQgaW50ZXJwcmV0cyBpdCdzIHNyYyBhdHRyaWJ1dGUgYXMgYSBVUkwgdG8gYmUgbG9hZGVkIGF0IHJ1bnRpbWUuIElmIHRoZSAic3JjIiBhdHRyaWJ1dGUgaXMgc2V0IHRvIGEgVVJMIChlLmcuLCBzdGFydHMgd2l0aCAiaHR0cDoiKSB0aGVuIHRoZSB0eXBlIGF0dHJpYnV0ZSBpbXBsaWNpdGx5IGJlY29tZXMgImh0dHAiLiAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRyaW13aGl0ZXNwYWNlIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKwlXaGVuIHRydWUsIHRoZSBzZXJ2ZXIgd2lsbCB0cmltIHdoaXRlc3BhY2UgaW4gdGhlIFhNTCBkYXRhIChkZWZhdWx0cyB0byBmYWxzZSkuICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGltZW91dCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisJVGhlIG51bWVyIG9mIG1pbGxpc2Vjb25kcyB0byB3YWl0IGJlZm9yZSB0aGUgcmVxdWVzdCB0aW1lcyBvdXQsIGFuZCBhbiBvbnRpbWVvdXQgZXZlbnQgaXMgc2VudC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNyYyIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisJVGhlIHNvdXJjZSBmb3IgcmVxdWVzdHMgbWFkZSBieSB0aGlzIGRhdGFzZXQuIFRoZSB2YWx1ZSBjYW4gYmUgYSBwYXRobmFtZSBvciBhbiBhYnNvbHV0ZSBvciByZWxhdGl2ZSBVUkwuIElmIHRoZSB2YWx1ZSBpcyBhIFVSTCAoc3RhcnRzIHdpdGggImh0dHA6IiksIHRoZSBkYXRhc2V0IHdpbGwgYmUgY29uZmlndXJlZCB0byBsb2FkIGl0cyBkYXRhIGF0IHJ1bnRpbWUuIE90aGVyd2lzZSwgdGhlIGRhdGEgaXMgaW5jbHVkZWQgaW5saW5lIGludG8gdGhlIGFwcGxpY2F0aW9uIGF0IGNvbXBpbGUgdGltZS4gIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWwiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCVNlbGVjdGlvbiBzdGF0ZSBvZiB0aGlzIG5vZGUsIHVzZWQgYnkgZGF0YXNlbGVjdGlvbm1hbmFnZXIgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlY3VyZXBvcnQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjQ0MyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCVRDUCBwb3J0IG51bWJlciB0byB1c2UgZm9yIHNlY3VyZSAoSFRUUFMpIHJlcXVlc3RzIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKwlJZiB0cnVlLCB0aGUgZGF0c2V0IHdpbGwgbWFrZSBhIHJlcXVlc3QgdXBvbiBpbml0aWFsaXphdGlvbiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmF3ZGF0YSIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisJSG9sZHMgcmF3IGRhdGEgcmVzcG9uc2Ugc3RyaW5nIGZyb20gZGF0YSBzb3VyY2UgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InF1ZXJ5dHlwZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJHRVQiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KK0hUVFAgcmVxdWVzdCBtZXRob2QuIFZhbHVlIG11c3QgYmUgb25lIG9mICJHRVQiIG9yICJQT1NUIi4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InF1ZXJ5c3RyaW5nIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKwlBIHN0cmluZyB0byBiZSBhcHBlbmRlZCB0byB0aGUgcmVxdWVzdCB0aGF0IHRoZSBkYXRhc2V0IG1ha2VzLiAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InByb3h5dXJsIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKwlUaGUgVVJMIG9mIHRoZSBwcm94eSBzZXJ2ZXIsIGZvciBwcm94aWVkIHJlcXVlc3RzIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwcm94aWVkIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KK1NldHMgd2hldGhlciBvciBub3QgdGhlIGRhdGFzZXQgbWFrZXMgaXRzIHJlcXVlc3QgZGlyZWN0bHkgdG8gdGhlIHRhcmdldCBzZXJ2ZXIgb3IgdmlhIHRoZSBzZXJ2ZXIgcHJveHkuIEluaGVyaXRzIHZhbHVlIGZyb20gY2FudmFzLnByb3hpZWQgZmxhZy4gIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwb3N0Ym9keSIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisJVXNlZCB0byBzZW5kIGEgc3RyaW5nIGFzIHRoZSBlbnRpcmUgYm9keSBvZiBhIFBPU1QgcmVxdWVzdC4gRm9yIGEgUE9TVCByZXF1ZXN0LCBzZXR0aW5nIHBvc3Rib2R5IHRvIGEgbm9uLW51bGwgc3RyaW5nIHZhbHVlIHdpbGwgc2VuZCB0aGF0IHN0cmluZyBhcyB0aGUgY29tcGxldGUgYm9keSBvZiB0aGUgUE9TVCByZXF1ZXN0LiBJbiB0aGlzIGNhc2UgYW55IG90aGVyIHF1ZXJ5IHBhcmFtZXRlcnMgdGhhdCBoYXZlIGJlZW4gc2V0IHZpYSBzZXRRdWVyeVBhcmFtIGRhdGFzZXQgd2lsbCBiZSBpZ25vcmVkLiBUaGUgYmVoYXZpb3Igb2YgYSBHRVQgcmVxdWVzdCB3aXRoIGEgbm9uLW51bGwgcG9zdGJvZHkgaXMgbm90IGRlZmluZWQuIE5vdGUsIHRoZSBzd2Y4IHJ1bnRpbWUgaXMgZm9yY2VkIHRvIFhNTC1xdW90ZSB0aGUgcG9zdGJvZHksIGR1ZSB0byBsaW1pdGF0aW9ucyBpbiB0aGUgRmxhc2ggOCBwbGF5ZXIgQVBJLiBUaGlzIHJlc3RyaWN0aW9uIGlzIG5vdCBwcmVzZW50IGluIGxhdGVyIHN3ZiBydW50aW1lcywgb3IgaW4gdGhlIERIVE1MIHJ1bnRpbWUuICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGFyZW50Tm9kZSIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgCVRoZSBwYXJlbnQgb2YgdGhpcyBub2RlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwYXJhbXMiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCUFuIGx6LlBhcmFtIG9iamVjdCB3aGljaCBob2xkcyBxdWVyeSBrZXktdmFsdWUgcGFpcnMuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvd25lckRvY3VtZW50IiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKwlUaGUgb3duZXIgZG9jdW1lbnQgZm9yIHRoaXMgbm9kZS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5zcHJlZml4IiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKwlXaGVuIHRydWUsIHRoZSBzZXJ2ZXIgd2lsbCBwcmVzZXJ2ZSBuYW1lc3BhY2UgcHJlZml4ZXMgb24gZGF0YSBub2RlIG5hbWVzIGFuZCBhdHRyaWJ1dGUgbmFtZXMgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJub2RlVHlwZSIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgCVRoZSB0eXBlIG9mIHRoaXMgbm9kZSBvbmUgb2YgbHouRGF0YUVsZW1lbnQuRE9DVU1FTlRfTk9ERSwgbHouRGF0YUVsZW1lbnQuRUxFTUVOVF9OT0RFIG9yIGx6LkRhdGFFbGVtZW50LlRFWFRfTk9ERSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibm9kZU5hbWUiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIAlUaGUgbmFtZSBvZiB0aGlzIG5vZGUuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtdWx0aXJlcXVlc3QiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCUNyZWF0ZSBhIG5ldyBkYXRhIHJlcXVlc3Qgb2JqZWN0IGZvciBlYWNoIHJlcXVlc3QuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJnZXRyZXNwb25zZWhlYWRlcnMiIHR5cGU9Imx6eDpib29sZWFuIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisJV2hlbiB0cnVlLCB0aGUgcHJveHkgc2VydmVyIChpZiBtYWtpbmcgYSBwcm94aWVkIHJlcXVlc3QpIHdpbGwgZW5jb2RlIGFuZCBzZW5kIHRoZSBIVFRQIHJlc3BvbnNlIGhlYWRlcnMgYWxvbmcgd2l0aCB0aGUgZGF0YSAoZGVmYXVsdHMgdG8gZmFsc2UpLiBEdWUgdG8gYSBsYWNrIG9mIGEgbmF0aXZlIEFQSSB0byBnZXQgdGhpcyBpbmZvcm1hdGlvbiwgU09MTyBTV0YgYXBwbGljYXRpb25zIHdpbGwgYWx3YXlzIHJldHVybiBhbiBlbXB0eSBzZXQuIFdoZW4gbWFraW5nIGEgcHJveGllZCByZXF1ZXN0LCBnZXRyZXNwb25zZWhlYWRlcnMgbXVzdCBiZSB0cnVlIGluIG9yZGVyIGZvciB0aGUgcmVzcG9uc2UgaGVhZGVycyB0byBiZSByZXRyaWV2ZWQgdmlhIHRoZSBnZXRSZXNwb25zZUhlYWRlciBvciBnZXRBbGxSZXNwb25zZUhlYWRlcnMgbWV0aG9kcy4gIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkYXRhcHJvdmlkZXIiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIAlIb2xkcyBhIHBvaW50ZXIgdG8gdGhlIERhdGFQcm92aWRlciB3aGljaCBoYW5kbGVzIGRhdGEgbG9hZCByZXF1ZXN0cyBmb3IgdGhpcyBkYXRhc2V0LiBEZWZhdWx0IHZhbHVlIGlzIGNhbnZhcy5kZWZhdWx0ZGF0YXByb3ZpZGVyICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY3JlZGVudGlhbGxlZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CitXaGVuIHRydWUsIHRoZSB3aXRoQ3JlZGVudGlhbHMgcHJvcGVydHkgb24gdGhlIFhIUiBvYmplY3Qgd2lsbCBiZSBzZXQgdG8gdHJ1ZSwgYWxsb3dpbmcgY3JlZGVudGlhbGxlZCBjcm9zcy1vcmlnaW4gcmVzb3VyY2Ugc2hhcmluZyAoQ09SUykgcmVxdWVzdHMuIElmIHdpdGhDcmVkZW50aWFscyBpcyBub3Qgc2V0IGZvciBhIENPUlMgcmVxdWVzdCB1c2luZyBjcmVkZW50aWFscywgdGhlIGJyb3dzZXIgd2lsbCBub3Qgc2V0IGFueSBjb29raWVzIHNlbnQgYnkgdGhlIHNlcnZlci4gU2VlIGh0dHA6Ly93d3cudzMub3JnL1RSL2NvcnMvI2FjY2Vzcy1jb250cm9sLWFsbG93LWNyZWRlbnRpYWxzLXJlc3BvbnMgYW5kIGh0dHA6Ly9kZXYudzMub3JnLzIwMDYvd2ViYXBpL1hNTEh0dHBSZXF1ZXN0LTIvI3RoZS13aXRoY3JlZGVudGlhbHMtYXR0cmlidXRlIGZvciBtb3JlIGluZm9ybWF0aW9uLiAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsaWVudGNhY2hlYWJsZSIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgCVdoZW4gdHJ1ZSwgZGF0YSByZXNwb25zZXMgY2FuIGJlIGNhY2hlZCBieSB0aGUgY2xpZW50IChicm93c2VyKS4gV2hlbiBmYWxzZSwgYSB1bmlxdWUgdmFsdWVkIGFyZ3VtZW50IHdpbGwgYmUgYWRkZWQgdG8gdGhlIHJlcXVlc3Qgc3RyaW5nIGluIHRoZSBmb3JtYXQgJ19fbHpiY19fPTEyMDQ2ODU4NDA3NzcnIHRvIGRlZmVhdCB0aGUgYnJvd3NlcidzIGNhY2hlLiAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoaWxkTm9kZXMiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCUFuIGFycmF5IG9mIGNoaWxkcmVuIG9mIHRoaXMgbm9kZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2FjaGVhYmxlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKwlXaGVuIHRydWUsIHRoZSBzZXJ2ZXIgd2lsbCBhdHRlbXB0IHRvIGNhY2hlIHJlc3BvbnNlIChkZWZhdWx0cyB0byBmYWxzZSkuIFRoZXJlIGFyZSBzZWN1cml0eSBjb25jZXJucyB3aGVuIHRoaXMgZmllbGQgaXMgdHJ1ZS4gV2hlbiB0aGlzIGZpZWxkIGlzIHRydWUsIHlvdSB3aWxsIHVzdWFsbHkgd2FudCB0aGUgZ2V0cmVzcG9uc2VoZWFkZXJzIGZpZWxkIHRvIGJlIGZhbHNlLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYXV0b3JlcXVlc3QiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCUlmIHRydWUsIGNoYW5nZXMgdG8gc3JjIG9yIHF1ZXJ5c3RyaW5nIGF0dHJpYnV0ZXMgY2F1c2UgZG9SZXF1ZXN0KCkgdG8gYmUgY2FsbGVkIGF1dG9tYXRpY2FsbHkuIElmIGZhbHNlLCBkb1JlcXVlc3QoKSBtdXN0IGJlIGNhbGxlZCBtYW51YWxseSB3aGVuIHNyYyBvciBxdWVyeXN0cmluZyBhdHRyaWJ1dGVzIGNoYW5nZS4gIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhdHRyaWJ1dGVzIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgZGljdGlvbmFyeSBvZiBhdHRyaWJ1dGVzIGZvciB0aGlzIG5vZGUuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhY2NlcHRlbmNvZGluZ3MiIHR5cGU9Imx6eDpib29sZWFuIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisJV2hlbiB0cnVlLCB0aGUgc2VydmVyIHdpbGwgYWNjZXB0IGVuY29kZWQgcmVzcG9uc2VzIGZvciB0aGlzIHJlcXVlc3QuIEVuY29kZWQgcmVzcG9uc2VzIHJlcXVpcmUgbW9yZSB3b3JrIGZvciB0aGUgTFBTIChlbmNvZGluZyB0aGUgcmVzcG9uc2UpIGFuZCBjbGllbnQgKGRlY29kaW5nIHRoZSByZXNwb25zZSkgaW4gdHJhZGUgZm9yIGxvd2VyIG5ldHdvcmsgYmFuZHdpZHRoIHVzYWdlLiAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibWluaWJ1dHRvbiIgdHlwZT0ibHp4Om1pbmlidXR0b24iID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Im1pbmlidXR0b24iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpzdHlsaXNoYnV0dG9uIj4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJwbGFpbmZsb2F0aW5nbGlzdCIgdHlwZT0ibHp4OnBsYWluZmxvYXRpbmdsaXN0IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJwbGFpbmZsb2F0aW5nbGlzdCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmJhc2VmbG9hdGluZ2xpc3QiPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJhc2VjaGFydGJhY2tpbmciIHR5cGU9Imx6eDpiYXNlY2hhcnRiYWNraW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIGJhc2UgY2hhcnQgYmFja2dyb3VuZCBjbGFzcyBmb3IgcmVjdGFuZ3VsYXIgY2hhcnRzLgorICAgICAgICAoVGhhdCBpcywgbm90IHVzZWQgaW4gcGllY2hhcnQuKSAgKE9mIGJldGEgcXVhbGl0eS4pIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImJhc2VjaGFydGJhY2tpbmciIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZHJhd3JlYWR5IiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgZHJhd3ZpZXcgcmVzcG9uc2libGUgZm9yIGRyYXdpbmcgaG9yaXpvbnRhbCB0aWNrcy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibHd6ZW5kYXRlcGlja2VyIiB0eXBlPSJseng6bHd6ZW5kYXRlcGlja2VyIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJsd3plbmRhdGVwaWNrZXIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNlZGF0ZXBpY2tlciI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmdyb3VwIG5hbWU9InRvcExldmVsRWxlbWVudHMiPgorPHhzOnNlcXVlbmNlPgorPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4KKzx4czphbnkgLz4KKzwveHM6Y2hvaWNlPgorPC94czpzZXF1ZW5jZT4KKzwveHM6Z3JvdXA+Cis8L3hzOnNjaGVtYT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL1dFQi1JTkYvY2xhc3Nlcy9sb2diYWNrLWNvbmZpZy54bWwgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9XRUItSU5GL2NsYXNzZXMvbG9nYmFjay1jb25maWcueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyZGNhODYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9XRUItSU5GL2NsYXNzZXMvbG9nYmFjay1jb25maWcueG1sCkBAIC0wLDAgKzEsNzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+CisKKzxjb25maWd1cmF0aW9uIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIAorICAgIHhzaTpub05hbWVzcGFjZVNjaGVtYUxvY2F0aW9uPSJsb2diYWNrLnhzZCI+CisJPGNvbnRleHROYW1lPiR7Y3VycmVudF9vcGVubWVldGluZ3NfY29udGV4dF9uYW1lfTwvY29udGV4dE5hbWU+CisJCisJPGpteENvbmZpZ3VyYXRvciBjb250ZXh0TmFtZT0iJHtjdXJyZW50X29wZW5tZWV0aW5nc19jb250ZXh0X25hbWV9IiAvPgorCisgIDxhcHBlbmRlciBuYW1lPSJGTE9HMiIgY2xhc3M9ImNoLnFvcy5sb2diYWNrLmNvcmUuRmlsZUFwcGVuZGVyIj4KKwkJPEZpbGU+bG9nLyR7Y3VycmVudF9vcGVubWVldGluZ3NfY29udGV4dF9uYW1lfS5sb2c8L0ZpbGU+CisJCTxBcHBlbmQ+ZmFsc2U8L0FwcGVuZD4KKwkJPEVuY29kaW5nPlVURi04PC9FbmNvZGluZz4KKwkJPEJ1ZmZlcmVkSU8+ZmFsc2U8L0J1ZmZlcmVkSU8+CisJCTxJbW1lZGlhdGVGbHVzaD50cnVlPC9JbW1lZGlhdGVGbHVzaD4KKwkJPGxheW91dCBjbGFzcz0iY2gucW9zLmxvZ2JhY2suY2xhc3NpYy5QYXR0ZXJuTGF5b3V0Ij4KKwkJCTxQYXR0ZXJuPgorCQkJCSU1cCAlZHtNTS1kZCBISDptbTpzcy5TU1MgfSAlY3sxNX06JUwgWyV0XSAtICVtJW4KKwkJCTwvUGF0dGVybj4KKwkJPC9sYXlvdXQ+CisgIDwvYXBwZW5kZXI+CisgIDxhcHBlbmRlciBuYW1lPSJDT05TT0xFMiIgY2xhc3M9ImNoLnFvcy5sb2diYWNrLmNvcmUuQ29uc29sZUFwcGVuZGVyIj4KKyAgICA8bGF5b3V0IGNsYXNzPSJjaC5xb3MubG9nYmFjay5jbGFzc2ljLlBhdHRlcm5MYXlvdXQiPgorICAgICAgPHBhdHRlcm4+JTVwICVke01NLWRkIEhIOm1tOnNzLlNTUyB9ICVGICVyICVMICVjIFsldF0gLSAlbSVuPC9wYXR0ZXJuPgorICAgIDwvbGF5b3V0PgorICA8L2FwcGVuZGVyPgorICA8bG9nZ2VyIG5hbWU9Im9yZy5hcGFjaGUuYXhpczIiPgorICAgIDxsZXZlbCB2YWx1ZT0iRVJST1IiLz4KKyAgPC9sb2dnZXI+CisgIDxsb2dnZXIgbmFtZT0iY29tLm1jaGFuZ2UudjIiPgorICAgIDxsZXZlbCB2YWx1ZT0iRVJST1IiLz4KKyAgPC9sb2dnZXI+CisgIDxsb2dnZXIgbmFtZT0ib3JnLmFwYWNoZS5heGlvbSI+CisgICAgPGxldmVsIHZhbHVlPSJFUlJPUiIvPgorICA8L2xvZ2dlcj4KKyAgPGxvZ2dlciBuYW1lPSJvcmcuYXBhY2hlLmNvbW1vbnMuaHR0cGNsaWVudCI+CisgICAgPGxldmVsIHZhbHVlPSJFUlJPUiIvPgorICA8L2xvZ2dlcj4KKyAgPGxvZ2dlciBuYW1lPSJkZS5odW5zaWNrZXIuamFsb3B5LmlvIj4KKyAgICA8bGV2ZWwgdmFsdWU9IkVSUk9SIi8+CisgIDwvbG9nZ2VyPgorICA8bG9nZ2VyIG5hbWU9Im9yZy5hcGFjaGUuYXhpczIuZW50ZXJwcmlzZSI+CisgICAgPGxldmVsIHZhbHVlPSJFUlJPUiIvPgorICA8L2xvZ2dlcj4KKyAgPGxvZ2dlciBuYW1lPSJodHRwY2xpZW50LndpcmUuaGVhZGVyIj4KKyAgICA8bGV2ZWwgdmFsdWU9IkVSUk9SIi8+CisgIDwvbG9nZ2VyPgorICA8cm9vdD4KKyAgICA8bGV2ZWwgdmFsdWU9IkRFQlVHIi8+CisgICAgPGFwcGVuZGVyLXJlZiByZWY9IkZMT0cyIi8+CisgICAgPGFwcGVuZGVyLXJlZiByZWY9IkNPTlNPTEUyIi8+CisgIDwvcm9vdD4KKzwvY29uZmlndXJhdGlvbj4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL1dFQi1JTkYvY2xhc3Nlcy9sb2diYWNrLnhzZCBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL1dFQi1JTkYvY2xhc3Nlcy9sb2diYWNrLnhzZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDZlNWE3Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvV0VCLUlORi9jbGFzc2VzL2xvZ2JhY2sueHNkCkBAIC0wLDAgKzEsMTA2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0NCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgIA0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAgICAJICANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAgdW5kZXIgdGhlIExpY2Vuc2UuDQorICANCistLT4NCis8eHM6c2NoZW1hIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiPg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0iY29uZmlndXJhdGlvbiI+DQorICAgIDx4czpjb21wbGV4VHlwZT4NCisgICAgICA8eHM6c2VxdWVuY2U+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbnRleHROYW1lIi8+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImpteENvbmZpZ3VyYXRvciIvPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYXBwZW5kZXIiLz4NCisgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImxvZ2dlciIvPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyb290Ii8+DQorICAgICAgPC94czpzZXF1ZW5jZT4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9ImNvbnRleHROYW1lIiB0eXBlPSJ4czpzdHJpbmciLz4NCisgIDx4czplbGVtZW50IG5hbWU9ImpteENvbmZpZ3VyYXRvciI+DQorICAgIDx4czpjb21wbGV4VHlwZT4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbnRleHROYW1lIiB1c2U9InJlcXVpcmVkIi8+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJhcHBlbmRlciI+DQorICAgIDx4czpjb21wbGV4VHlwZT4NCisgICAgICA8eHM6c2VxdWVuY2U+DQorICAgICAgICA8eHM6c2VxdWVuY2UgbWluT2NjdXJzPSIwIj4NCisgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJGaWxlIi8+DQorICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iQXBwZW5kIi8+DQorICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iRW5jb2RpbmciLz4NCisgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJCdWZmZXJlZElPIi8+DQorICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iSW1tZWRpYXRlRmx1c2giLz4NCisgICAgICAgIDwveHM6c2VxdWVuY2U+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImxheW91dCIvPg0KKyAgICAgIDwveHM6c2VxdWVuY2U+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyIgdXNlPSJyZXF1aXJlZCIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6TkNOYW1lIi8+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJGaWxlIiB0eXBlPSJ4czpzdHJpbmciLz4NCisgIDx4czplbGVtZW50IG5hbWU9IkFwcGVuZCIgdHlwZT0ieHM6Ym9vbGVhbiIvPg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0iRW5jb2RpbmciIHR5cGU9InhzOk5DTmFtZSIvPg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0iQnVmZmVyZWRJTyIgdHlwZT0ieHM6Ym9vbGVhbiIvPg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0iSW1tZWRpYXRlRmx1c2giIHR5cGU9InhzOmJvb2xlYW4iLz4NCisgIDx4czplbGVtZW50IG5hbWU9ImxheW91dCI+DQorICAgIDx4czpjb21wbGV4VHlwZT4NCisgICAgICA8eHM6Y2hvaWNlPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJQYXR0ZXJuIi8+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBhdHRlcm4iLz4NCisgICAgICA8L3hzOmNob2ljZT4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIiB1c2U9InJlcXVpcmVkIi8+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJQYXR0ZXJuIiB0eXBlPSJ4czpzdHJpbmciLz4NCisgIDx4czplbGVtZW50IG5hbWU9InBhdHRlcm4iIHR5cGU9InhzOnN0cmluZyIvPg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0ibG9nZ2VyIj4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czpjb21wbGV4Q29udGVudD4NCisgICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0ibGV2ZWwiPg0KKyAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOk5DTmFtZSIvPg0KKyAgICAgICAgPC94czpleHRlbnNpb24+DQorICAgICAgPC94czpjb21wbGV4Q29udGVudD4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9InJvb3QiPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOmNvbXBsZXhDb250ZW50Pg0KKyAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJsZXZlbCI+DQorICAgICAgICAgIDx4czpzZXF1ZW5jZT4NCisgICAgICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJhcHBlbmRlci1yZWYiLz4NCisgICAgICAgICAgPC94czpzZXF1ZW5jZT4NCisgICAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KKyAgICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJhcHBlbmRlci1yZWYiPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWYiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOk5DTmFtZSIvPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImxldmVsIj4NCisgICAgPHhzOnNlcXVlbmNlPg0KKyAgICAgIDx4czplbGVtZW50IHJlZj0ibGV2ZWwiLz4NCisgICAgPC94czpzZXF1ZW5jZT4NCisgIDwveHM6Y29tcGxleFR5cGU+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJsZXZlbCI+DQorICAgIDx4czpjb21wbGV4VHlwZT4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZhbHVlIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czpOQ05hbWUiLz4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCis8L3hzOnNjaGVtYT4NCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9XRUItSU5GL2NsYXNzZXMvcmViZWwtcmVtb3RlLnhtbCBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL1dFQi1JTkYvY2xhc3Nlcy9yZWJlbC1yZW1vdGUueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkY2U2NTQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9XRUItSU5GL2NsYXNzZXMvcmViZWwtcmVtb3RlLnhtbApAQCAtMCwwICsxLDI0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPHJlYmVsLXJlbW90ZT4KKwk8aWQ+T3Blbm1lZXRpbmdzPC9pZD4KKwk8dXJsPmh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3MvPC91cmw+Cis8L3JlYmVsLXJlbW90ZT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL1dFQi1JTkYvY2xhc3Nlcy9yZWJlbC54bWwgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9XRUItSU5GL2NsYXNzZXMvcmViZWwueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1Mzg2MWMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9XRUItSU5GL2NsYXNzZXMvcmViZWwueG1sCkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8YXBwbGljYXRpb24geG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgeG1sbnM9Imh0dHA6Ly93d3cuemVyb3R1cm5hcm91bmQuY29tIiB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly93d3cuemVyb3R1cm5hcm91bmQuY29tIGh0dHA6Ly93d3cuemVyb3R1cm5hcm91bmQuY29tL2FsZGVyYWFuL3JlYmVsLTJfMC54c2QiPgorCTxjbGFzc3BhdGg+CisJCTxkaXIgbmFtZT0iJHtwcm9qZWN0LnJvb3R9L2J1aWxkL2NsYXNzZXMvZWNsaXBzZSIvPgorCTwvY2xhc3NwYXRoPgorCTx3ZWI+CisJCTxsaW5rIHRhcmdldD0iLyI+CisJCQk8ZGlyIG5hbWU9IiR7cHJvamVjdC5yb290fS9XZWJDb250ZW50L29wZW5tZWV0aW5ncyIvPgorCQk8L2xpbms+CisJPC93ZWI+Cis8L2FwcGxpY2F0aW9uPgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9vcGVubWVldGluZ3MvV0VCLUlORi9jb25mL2F4aXMyLnhtbCBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL1dFQi1JTkYvY29uZi9heGlzMi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTY2MjBmNgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL1dFQi1JTkYvY29uZi9heGlzMi54bWwKQEAgLTAsMCArMSw1MzEgQEAKKzwhLS0KKyAgfiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIH4gb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgfiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICB+IHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB+IHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgfiAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIH4gd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIH4KKyAgfiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgfgorICB+IFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgfiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICB+ICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICB+IEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIH4gc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB+IHVuZGVyIHRoZSBMaWNlbnNlLgorICAtLT4KKworPGF4aXNjb25maWcgbmFtZT0iQXhpc0phdmEyLjAiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiDQorCXhzaTpub05hbWVzcGFjZVNjaGVtYUxvY2F0aW9uPSJheGlzMi54c2QiPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8IS0tIFBhcmFtZXRlcnMgLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDxwYXJhbWV0ZXIgbmFtZT0iaG90ZGVwbG95bWVudCI+dHJ1ZTwvcGFyYW1ldGVyPgorICAgIDxwYXJhbWV0ZXIgbmFtZT0iaG90dXBkYXRlIj5mYWxzZTwvcGFyYW1ldGVyPgorICAgIDxwYXJhbWV0ZXIgbmFtZT0iZW5hYmxlTVRPTSI+ZmFsc2U8L3BhcmFtZXRlcj4KKyAgICA8cGFyYW1ldGVyIG5hbWU9ImVuYWJsZVN3QSI+ZmFsc2U8L3BhcmFtZXRlcj4KKworICAgIDwhLS1VbmNvbW1lbnQgaWYgeW91IHdhbnQgdG8gZW5hYmxlIGZpbGUgY2FjaGluZyBmb3IgYXR0YWNobWVudHMgLS0+CisgICAgPCEtLXBhcmFtZXRlciBuYW1lPSJjYWNoZUF0dGFjaG1lbnRzIj50cnVlPC9wYXJhbWV0ZXI+CisgICAgPHBhcmFtZXRlciBuYW1lPSJhdHRhY2htZW50RElSIj48L3BhcmFtZXRlcj4KKyAgICA8cGFyYW1ldGVyIG5hbWU9InNpemVUaHJlc2hvbGQiPjQwMDA8L3BhcmFtZXRlci0tPgorCisgICAgPHBhcmFtZXRlciBuYW1lPSJFbmFibGVDaGlsZEZpcnN0Q2xhc3NMb2FkaW5nIj5mYWxzZTwvcGFyYW1ldGVyPgorCisgICAgPCEtLQorICAgIFRoZSBleHBvc2VTZXJ2aWNlTWV0YWRhdGEgcGFyYW1ldGVyIGRlY2lkZXMgd2hldGhlciB0aGUgbWV0YWRhdGEgKFdTREwsIHNjaGVtYSwgcG9saWN5KSBvZgorICAgIHRoZSBzZXJ2aWNlcyBkZXBsb3llZCBvbiBBeGlzMiBzaG91bGQgYmUgdmlzaWJsZSB3aGVuID93c2RsLCA/d3NkbDIsID94c2QsID9wb2xpY3kgcmVxdWVzdHMKKyAgICBhcmUgcmVjZWl2ZWQuCisgICAgVGhpcyBwYXJhbWV0ZXIgY2FuIGJlIGRlZmluZWQgaW4gdGhlIGF4aTIueG1sIGZpbGUsIGluIHdoaWNoIGNhc2UgdGhpcyB3aWxsIGJlIGFwcGxpY2FibGUKKyAgICBnbG9iYWxseSwgb3IgaW4gdGhlIHNlcnZpY2VzLnhtbCBmaWxlcywgaW4gd2hpY2ggY2FzZSwgaXQgd2lsbCBiZSBhcHBsaWNhYmxlIHRvIHRoZQorICAgIFNlcnZpY2UgZ3JvdXBzIGFuZC9vciBzZXJ2aWNlcywgZGVwZW5kaW5nIG9uIHRoZSBsZXZlbCBhdCB3aGljaCB0aGUgcGFyYW1ldGVyIGlzIGRlY2xhcmVkLgorICAgIFRoaXMgdmFsdWUgb2YgdGhpcyBwYXJhbWV0ZXIgZGVmYXVsdHMgdG8gdHJ1ZS4KKyAgICAtLT4KKyAgICA8cGFyYW1ldGVyIG5hbWU9ImV4cG9zZVNlcnZpY2VNZXRhZGF0YSI+dHJ1ZTwvcGFyYW1ldGVyPgorCisKKyAgICA8IS0tVW5jb21tZW50IGlmIHlvdSB3YW50IHRvIHBsdWdpbiB5b3VyIG93biBhdHRhY2htZW50cyBsaWZlY3ljbGUgaW1wbGVtZW50YXRpb24gLS0+CisgICAgPCEtLTxhdHRhY2htZW50c0xpZmVjeWNsZU1hbmFnZXIgY2xhc3M9Im9yZy5hcGFjaGUuYXhpb20uYXR0YWNobWVudHMubGlmZWN5Y2xlLmltcGwuTGlmZWN5Y2xlTWFuYWdlckltcGwiLz4tLT4KKworCisgICAgPCEtLVVuY29tbWVudCBpZiB5b3Ugd2FudCB0byBlbmFibGUgdGhlIHJlZHVjdGlvbiBvZiB0aGUgaW4tbWVtb3J5IGNhY2hlIG9mIFdTREwgZGVmaW5pdGlvbnMgLS0+CisgICAgPCEtLUluIHNvbWUgc2VydmVyIGVudmlyb25tZW50cywgdGhlIGF2YWlsYWJsZSBtZW1vcnkgaGVhcCBpcyBsaW1pdGVkIGFuZCBjYW4gZmlsbCB1cCB1bmRlciBsb2FkIC0tPgorICAgIDwhLS1TaW5jZSBpbi1tZW1vcnkgY29waWVzIG9mIFdTREwgZGVmaW5pdGlvbnMgY2FuIGJlIGxhcmdlLCBzb21lIHN0ZXBzIGNhbiBiZSB0YWtlbi0tPgorICAgIDwhLS10byByZWR1Y2UgdGhlIG1lbW9yeSBuZWVkZWQgZm9yIHRoZSBjYWNoZWQgV1NETCBkZWZpbml0aW9ucy4gLS0+CisgICAgPCEtLXBhcmFtZXRlciBuYW1lPSJyZWR1Y2VXU0RMTWVtb3J5Q2FjaGUiPnRydWU8L3BhcmFtZXRlci0tPgorCisgICAgPCEtLVRoaXMgd2lsbCBnaXZlIG91dCB0aGUgdGltb3V0IG9mIHRoZSBjb25maWd1cmF0aW9uIGNvbnRleHRzLCBpbiBtaWxsaXNlY29uZHMtLT4KKyAgICA8cGFyYW1ldGVyIG5hbWU9IkNvbmZpZ0NvbnRleHRUaW1lb3V0SW50ZXJ2YWwiPjMwMDAwPC9wYXJhbWV0ZXI+CisKKyAgICA8IS0tRHVyaW5nIGEgZmF1bHQsIHN0YWNrIHRyYWNlIGNhbiBiZSBzZW50IHdpdGggdGhlIGZhdWx0IG1lc3NhZ2UuIFRoZSBmb2xsb3dpbmcgZmxhZyB3aWxsIGNvbnRyb2wgLS0+CisgICAgPCEtLXRoYXQgYmVoYXZpb3IuLS0+CisgICAgPHBhcmFtZXRlciBuYW1lPSJzZW5kU3RhY2t0cmFjZURldGFpbHNXaXRoRmF1bHRzIj5mYWxzZTwvcGFyYW1ldGVyPgorCisgICAgPCEtLUlmIHRoZXJlIGFyZW4ndCBhbnkgaW5mb3JtYXRpb24gYXZhaWxhYmxlIHRvIGZpbmQgb3V0IHRoZSBmYXVsdCByZWFzb24sIHdlIHNldCB0aGUgbWVzc2FnZSBvZiB0aGUgZXhjZXB0aW9uLS0+CisgICAgPCEtLWFzIHRoZSBmYXVsdHJlYXNvbi9SZWFzb24uIEJ1dCB3aGVuIGEgZmF1bHQgaXMgdGhyb3duIGZyb20gYSBzZXJ2aWNlIG9yIHNvbWUgd2hlcmUsIGl0IHdpbGwgYmUgLS0+CisgICAgPCEtLXdyYXBwZWQgYnkgZGlmZmVyZW50IGxldmVscy4gRHVlIHRvIHRoaXMgdGhlIGluaXRpYWwgZXhjZXB0aW9uIG1lc3NhZ2UgY2FuIGJlIGxvc3QuIElmIHRoaXMgZmxhZy0tPgorICAgIDwhLS1pcyBzZXQsIHRoZW4gQXhpczIgdHJpZXMgdG8gZ2V0IHRoZSBmaXJzdCBleGNlcHRpb24gYW5kIHNldCBpdHMgbWVzc2FnZSBhcyB0aGUgZmF1bHRyZWFzb24vUmVhc29uLi0tPgorICAgIDxwYXJhbWV0ZXIgbmFtZT0iRHJpbGxEb3duVG9Sb290Q2F1c2VGb3JGYXVsdFJlYXNvbiI+ZmFsc2U8L3BhcmFtZXRlcj4KKworICAgIDxwYXJhbWV0ZXIgbmFtZT0idXNlck5hbWUiPmFkbWluPC9wYXJhbWV0ZXI+CisgICAgPHBhcmFtZXRlciBuYW1lPSJwYXNzd29yZCI+YXhpczI8L3BhcmFtZXRlcj4KKworICAgIDwhLS1UbyBvdmVycmlkZSByZXBvc2l0b3J5L3NlcnZpY2VzIHlvdSBuZWVkIHRvIHVuY29tbWVudCBmb2xsb3dpbmcgcGFyYW1ldGVyIGFuZCB2YWx1ZSBTSE9VTEQgYmUgYWJzb2x1dGUgZmlsZSBwYXRoLi0tPgorICAgIDwhLS1TZXJ2aWNlc0RpcmVjdG9yeSBvbmx5IHdvcmtzIG9uIHRoZSBmb2xsb3dpbmcgY2FzZXMtLT4KKyAgICA8IS0tLUZpbGUgYmFzZWQgY29uZmlndXJhdG9yIGFuZCBpbiB0aGF0IGNhc2UgdGhlIHZhbHVlIHNob3VsZCBiZSBhIGZpbGUgVVJMIChodHRwOi8vIG5vdCBhbGxvd2VkKS0tPgorICAgIDwhLS0tV2hlbiBjcmVhdGluZyBVUkwgQmFzZWQgY29uZmlndXJhdG9yIHdpdGggVVJMIGZpbGU6Ly8gLS0+CisgICAgPCEtLS0gV2FyIGJhc2VkIGNvbmZpZ3VyYXRvciB3aXRoIGV4cGFuZGVkIGNhc2UgLCAtLT4KKworICAgIDwhLS1BbGwgdGhlIG90aGVyIHNjZW5hcmlvcyBpdCB3aWxsIGJlIGlnbm9yZWQuLS0+CisgICAgPCEtLTxwYXJhbWV0ZXIgbmFtZT0iU2VydmljZXNEaXJlY3RvcnkiPnNlcnZpY2U8L3BhcmFtZXRlcj4tLT4KKyAgICA8IS0tVG8gb3ZlcnJpZGUgcmVwb3NpdG9yeS9tb2R1bGVzIHlvdSBuZWVkIHRvIHVuY29tbWVudCBmb2xsb3dpbmcgcGFyYW1ldGVyIGFuZCB2YWx1ZSBTSE9VTEQgYmUgYWJzb2x1dGUgZmlsZSBwYXRoLS0+CisgICAgPCEtLTxwYXJhbWV0ZXIgbmFtZT0iTW9kdWxlc0RpcmVjdG9yeSI+bW9kdWxlczwvcGFyYW1ldGVyPi0tPgorCisKKyAgICA8IS0tRm9sbG93aW5nIHBhcmFtcyB3aWxsIHNldCB0aGUgcHJvcGVyIGNvbnRleHQgcGF0aHMgZm9yIGludm9jYXRpb25zLiBBbGwgdGhlIGVuZHBvaW50cyB3aWxsIGhhdmUgYSBjb21tb25zIGNvbnRleHQtLT4KKyAgICA8IS0tcm9vdCB3aGljaCBjYW4gY29uZmlndXJlZCB1c2luZyB0aGUgZm9sbG93aW5nIGNvbnRleHRSb290IHBhcmFtZXRlci0tPgorICAgIDwhLS08cGFyYW1ldGVyIG5hbWU9ImNvbnRleHRSb290Ij5heGlzMjwvcGFyYW1ldGVyPi0tPgorCisgICAgPCEtLU91ciBIVFRQIGVuZHBvaW50cyBjYW4gaGFuZGxlIGJvdGggUkVTVCBhbmQgU09BUC4gRm9sbG93aW5nIHBhcmFtZXRlcnMgY2FuIGJlIHVzZWQgdG8gZGlzdGluZ3VpdXNoIHRob3NlIGVuZHBvaW50cy0tPgorICAgIDwhLS1JbiBjYXNlIG9mIGEgc2VydmxldCwgaWYgeW91IGNoYW5nZSB0aGlzIHlvdSBoYXZlIHRvIG1hbnVhbGx5IGNoYW5nZSB0aGUgc2V0dGluZ3Mgb2YgeW91ciBzZXJ2bGV0IGNvbnRhaW5lciB0byBtYXAgdGhpcyAtLT4KKyAgICA8IS0tY29udGV4dCBwYXRoIHRvIHByb3BlciBBeGlzMiBzZXJ2bGV0cy0tPgorICAgIDwhLS08cGFyYW1ldGVyIG5hbWU9InNlcnZpY2VQYXRoIj5zZXJ2aWNlczwvcGFyYW1ldGVyPi0tPgorICAgIDwhLS08cGFyYW1ldGVyIG5hbWU9InJlc3RQYXRoIj5yZXN0PC9wYXJhbWV0ZXI+LS0+CisKKyAgICA8IS0tIEZvbGxvd2luZyBwYXJhbWV0ZXIgd2lsbCBjb21wbGV0ZWx5IGRpc2FibGUgUkVTVCBoYW5kbGluZyBpbiBBeGlzMi0tPgorICAgIDxwYXJhbWV0ZXIgbmFtZT0iZGlzYWJsZVJFU1QiIGxvY2tlZD0iZmFsc2UiPmZhbHNlPC9wYXJhbWV0ZXI+CisKKyAgICA8IS0tIEZvbGxvd2luZyBwYXJhbWV0ZXIgd2lsbCBzdXBwcmVzcyBnZW5lcmF0aW9uIG9mIFNPQVAgMS4yIGJpbmRpbmdzIGluIGF1dG8tZ2VuZXJhdGVkIFdTREwgZmlsZXMgLS0+CisgICAgPHBhcmFtZXRlciBuYW1lPSJkaXNhYmxlU09BUDEyIiBsb2NrZWQ9InRydWUiPmZhbHNlPC9wYXJhbWV0ZXI+CisKKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPCEtLSBEZXBsb3llcnMgLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorCisgICAgPCEtLVNlcnZpY2UgZGVwbG95ZXIgLCB0aGlzIHdpbGwgYWxvdyB1c2VycyB0byBkZXBsb3kgQUFSIG9yIGV4cGxvZGVkIEFBUiBhcyBheGlzMiBzZXJ2aWNlcy0tPgorICAgIDxkZXBsb3llciBleHRlbnNpb249Ii5hYXIiIGRpcmVjdG9yeT0ic2VydmljZXMiIGNsYXNzPSJvcmcuYXBhY2hlLmF4aXMyLmRlcGxveW1lbnQuU2VydmljZURlcGxveWVyIj4KKyAgICAgICAgPHNlcnZpY2VCdWlsZGVyRXh0ZW5zaW9uIG5hbWUgPSJqd3NidWlsZGVyRXh0IiBjbGFzcz0ib3JnLmFwYWNoZS5heGlzMi5qYXh3cy5mcmFtZXdvcmsuSkFYV1NTZXJ2aWNlQnVpbGRlckV4dGVuc2lvbiIvPgorICAgICAgICA8c2VydmljZUJ1aWxkZXJFeHRlbnNpb24gbmFtZSA9IndzZGxidWlsZGVyRXh0IiBjbGFzcz0ib3JnLmFwYWNoZS5heGlzMi5kZXBsb3ltZW50LldTRExTZXJ2aWNlQnVpbGRlckV4dGVuc2lvbiIvPgorICAgIDwvZGVwbG95ZXI+CisgICAgCisgICAgPCEtLVBPSk8gZGVwbG95ZXIgLCB0aGlzIHdpbGwgYWxvdyB1c2VycyB0byBkcm9wIC5jbGFzcyBmaWxlIGFuZCBtYWtlIHRoYXQgaW50byBhIHNlcnZpY2UtLT4KKyAgICA8ZGVwbG95ZXIgZXh0ZW5zaW9uPSIuY2xhc3MiIGRpcmVjdG9yeT0icG9qbyIgY2xhc3M9Im9yZy5hcGFjaGUuYXhpczIuZGVwbG95bWVudC5QT0pPRGVwbG95ZXIiLz4KKyAgICA8ZGVwbG95ZXIgZXh0ZW5zaW9uPSIuamFyIiBkaXJlY3Rvcnk9InNlcnZpY2VqYXJzIgorICAgICAgICAgICAgICBjbGFzcz0ib3JnLmFwYWNoZS5heGlzMi5qYXh3cy5mcmFtZXdvcmsuSkFYV1NEZXBsb3llciIvPgorICAgIDxkZXBsb3llciBleHRlbnNpb249Ii5qYXIiIGRpcmVjdG9yeT0idHJhbnNwb3J0cyIKKyAgICAgICAgICAgICAgY2xhc3M9Im9yZy5hcGFjaGUuYXhpczIuZGVwbG95bWVudC5UcmFuc3BvcnREZXBsb3llciIvPgorCisgICAgPCEtLUNPUkJBIGRlcGxveWVyICwgdGhpcyB3aWxsIGFsb3cgdXNlcnMgdG8gaW52b2tlIHJlbW90ZSBDT1JCQSBzZXJ2aWNlcyB0aHJvdWdoIEF4aXMyLS0+CisgICAgPCEtLTxkZXBsb3llciBleHRlbnNpb249Ii54bWwiIGRpcmVjdG9yeT0iY29yYmEiIGNsYXNzPSJvcmcuYXBhY2hlLmF4aXMyLmNvcmJhLmRlcGxveWVyLkNvcmJhRGVwbG95ZXIiLz4tLT4KKworICAgIDwhLS08ZGVwbG95ZXIgZXh0ZW5zaW9uPSIuanNhIiBkaXJlY3Rvcnk9InJtaXNlcnZpY2VzIiBjbGFzcz0ib3JnLmFwYWNoZS5heGlzMi5ybWkuZGVwbG95LlJNSVNlcnZpY2VEZXBsb3llciIvPi0tPgorCisKKyAgICA8IS0tIEZvbGxvd2luZyBwYXJhbWV0ZXIgd2lsbCBzZXQgdGhlIGhvc3QgbmFtZSBmb3IgdGhlIGVwci0tPgorICAgIDwhLS08cGFyYW1ldGVyIG5hbWU9Imhvc3RuYW1lIiBsb2NrZWQ9InRydWUiPm15aG9zdC5jb208L3BhcmFtZXRlcj4tLT4KKworICAgIDwhLS0gSWYgeW91IGhhdmUgYSBmcm9udCBlbmQgaG9zdCB3aGljaCBleHBvc2VzIHRoaXMgd2Vic2VydmljZSB1c2luZyBhIGRpZmZlcmVudCBwdWJsaWMgVVJMICAtLT4KKyAgICA8IS0tIHVzZSB0aGlzIHBhcmFtZXRlciB0byBvdmVycmlkZSBhdXRvZGV0ZWN0ZWQgdXJsIC0tPgorICAgIDwhLS08cGFyYW1ldGVyIG5hbWU9Imh0dHBGcm9udGVuZEhvc3RVcmwiPmh0dHBzOi8vc29tZW90aGVyaG9zdC9jb250ZXh0PC9wYXJhbWV0ZXI+LS0+CisKKyAgICA8IS0tQnkgZGVmYXVsdCwgSkFYV1Mgc2VydmljZXMgYXJlIGNyZWF0ZWQgYnkgcmVhZGluZyBhbm5vdGF0aW9ucy4gV1NETCBhbmQgc2NoZW1hIGFyZSBnZW5lcmF0ZWQtLT4KKyAgICA8IS0tdXNpbmcgYSBzZXBhcmF0ZSBXU0RMIGdlbmVyYXRvciBvbmx5IHdoZW4gP3dzZGwgaXMgY2FsbGVkLiBUaGVyZWZvcmUsIGV2ZW4gaWYgeW91IGVuZ2FnZS0tPgorICAgIDwhLS1wb2xpY2llcyBldGMuLiB0byBBeGlzU2VydmljZSwgaXQgZG9lc24ndCBhcHBlYXIgaW4gdGhlIFdTREwuIEJ5IHNldHRpbmcgdGhlIGZvbGxvd2luZyBwcm9wZXJ0eS0tPgorICAgIDwhLS10byB0cnVlLCB5b3UgY2FuIGNyZWF0ZSB0aGUgQXhpc1NlcnZpY2UgdXNpbmcgdGhlIGdlbmVyYXRlZCBXU0RMIGFuZCByZW1vdmUgdGhlIG5lZWQgZm9yIGEtLT4KKyAgICA8IS0tV1NETCBnZW5lcmF0b3IuIFdoZW4gP3dzZGwgaXMgY2FsbGVkLCBXU0RMIGlzIGdlbmVyYXRlZCBpbiB0aGUgbm9ybWFsIHdheS4tLT4KKyAgICA8cGFyYW1ldGVyIG5hbWU9InVzZUdlbmVyYXRlZFdTRExpbkpBWFdTIj5mYWxzZTwvcGFyYW1ldGVyPgorCisgICAgPCEtLSAgICBUaGUgd2F5IG9mIGFkZGluZyBsaXN0ZW5lciB0byB0aGUgc3lzdGVtLS0+CisgICAgPCEtLSAgICA8bGlzdGVuZXIgY2xhc3M9Im9yZy5hcGFjaGUuYXhpczIuT2JzZXJ2ZXJJTVBMIj4tLT4KKyAgICA8IS0tICAgICAgICA8cGFyYW1ldGVyIG5hbWU9IlJTU19VUkwiPmh0dHA6Ly8xMjcuMC4wLjEvcnNzPC9wYXJhbWV0ZXI+LS0+CisgICAgPCEtLSAgICA8L2xpc3RlbmVyPi0tPgorCisgICAgPHRocmVhZENvbnRleHRNaWdyYXRvcnM+CisgICAgICAgIDx0aHJlYWRDb250ZXh0TWlncmF0b3IgbGlzdElkPSJKQVhXUy1UaHJlYWRDb250ZXh0TWlncmF0b3ItTGlzdCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0ib3JnLmFwYWNoZS5heGlzMi5qYXh3cy5hZGRyZXNzaW5nLm1pZ3JhdG9yLkVuZHBvaW50Q29udGV4dE1hcE1pZ3JhdG9yIi8+CisgICAgPC90aHJlYWRDb250ZXh0TWlncmF0b3JzPgorCisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDwhLS0gTWVzc2FnZSBSZWNlaXZlcnMgLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDwhLS1UaGlzIGlzIHRoZSBkZWZhdWx0IE1lc3NhZ2VSZWNlaXZlciBmb3IgdGhlIHN5c3RlbSAsIGlmIHlvdSB3YW50IHRvIGhhdmUgTWVzc2FnZVJlY2VpdmVycyBmb3IgLS0+CisgICAgPCEtLWFsbCB0aGUgb3RoZXIgTUVQIGltcGxlbWVudCBpdCBhbmQgYWRkIHRoZSBjb3JyZWN0IGVudHJ5IHRvIGhlcmUgLCBzbyB0aGF0IHlvdSBjYW4gcmVmZXIgZnJvbS0tPgorICAgIDwhLS1hbnkgb3BlcmF0aW9uIC0tPgorICAgIDwhLS1Ob3RlIDogWW91IGNhbiBvdmVycmlkZSB0aGlzIGZvciBhIHBhcnRpY3VsYXIgc2VydmljZSBieSBhZGRpbmcgdGhlIHNhbWUgZWxlbWVudCB3aXRoIHlvdXIgcmVxdWlyZW1lbnQtLT4KKyAgICA8bWVzc2FnZVJlY2VpdmVycz4gICAgICAgIAorICAgICAgICA8bWVzc2FnZVJlY2VpdmVyIG1lcD0iaHR0cDovL3d3dy53My5vcmcvbnMvd3NkbC9pbi1vbmx5IgorICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJvcmcuYXBhY2hlLmF4aXMyLnJlY2VpdmVycy5SYXdYTUxJTk9ubHlNZXNzYWdlUmVjZWl2ZXIiLz4KKyAgICAgICAgPG1lc3NhZ2VSZWNlaXZlciBtZXA9Imh0dHA6Ly93d3cudzMub3JnL25zL3dzZGwvaW4tb3V0IgorICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJvcmcuYXBhY2hlLmF4aXMyLnJlY2VpdmVycy5SYXdYTUxJTk91dE1lc3NhZ2VSZWNlaXZlciIvPgorICAgIDwvbWVzc2FnZVJlY2VpdmVycz4KKworICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8IS0tIE1lc3NhZ2UgRm9ybWF0dGVyIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8IS0tRm9sbG93aW5nIGNvbnRlbnQgdHlwZSB0byBtZXNzYWdlIGZvcm1hdHRlciBtYXBwaW5nIGNhbiBiZSB1c2VkIHRvIGltcGxlbWVudCBzdXBwb3J0IGZvciBkaWZmZXJlbnQgbWVzc2FnZSAtLT4KKyAgICA8IS0tZm9ybWF0ICBzZXJpYWxpemF0aW9uIGluIEF4aXMyLiBUaGVzZSBtZXNzYWdlIGZvcm1hdHMgYXJlIGV4cGVjdGVkIHRvIGJlIHJlc29sdmVkIGJhc2VkIG9uIHRoZSBjb250ZW50IHR5cGUuIC0tPgorICAgIDxtZXNzYWdlRm9ybWF0dGVycz4KKyAgICAgICAgPG1lc3NhZ2VGb3JtYXR0ZXIgY29udGVudFR5cGU9ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9Im9yZy5hcGFjaGUuYXhpczIudHJhbnNwb3J0Lmh0dHAuWEZvcm1VUkxFbmNvZGVkRm9ybWF0dGVyIi8+CisgICAgICAgIDxtZXNzYWdlRm9ybWF0dGVyIGNvbnRlbnRUeXBlPSJtdWx0aXBhcnQvZm9ybS1kYXRhIgorICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0ib3JnLmFwYWNoZS5heGlzMi50cmFuc3BvcnQuaHR0cC5NdWx0aXBhcnRGb3JtRGF0YUZvcm1hdHRlciIvPgorICAgICAgICA8bWVzc2FnZUZvcm1hdHRlciBjb250ZW50VHlwZT0iYXBwbGljYXRpb24veG1sIgorICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz0ib3JnLmFwYWNoZS5heGlzMi50cmFuc3BvcnQuaHR0cC5BcHBsaWNhdGlvblhNTEZvcm1hdHRlciIvPgorICAgICAgICA8bWVzc2FnZUZvcm1hdHRlciBjb250ZW50VHlwZT0idGV4dC94bWwiCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJvcmcuYXBhY2hlLmF4aXMyLnRyYW5zcG9ydC5odHRwLlNPQVBNZXNzYWdlRm9ybWF0dGVyIi8+CisgICAgICAgIDxtZXNzYWdlRm9ybWF0dGVyIGNvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi9zb2FwK3htbCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9Im9yZy5hcGFjaGUuYXhpczIudHJhbnNwb3J0Lmh0dHAuU09BUE1lc3NhZ2VGb3JtYXR0ZXIiLz4KKyAgICA8L21lc3NhZ2VGb3JtYXR0ZXJzPgorCisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDwhLS0gTWVzc2FnZSBCdWlsZGVycyAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPCEtLUZvbGxvd2luZyBjb250ZW50IHR5cGUgdG8gYnVpbGRlciBtYXBwaW5nIGNhbiBiZSB1c2VkIHRvIGltcGxlbWVudCBzdXBwb3J0IGZvciBkaWZmZXJlbnQgbWVzc2FnZSAtLT4KKyAgICA8IS0tZm9ybWF0cyBpbiBBeGlzMi4gVGhlc2UgbWVzc2FnZSBmb3JtYXRzIGFyZSBleHBlY3RlZCB0byBiZSByZXNvbHZlZCBiYXNlZCBvbiB0aGUgY29udGVudCB0eXBlLiAtLT4KKyAgICA8bWVzc2FnZUJ1aWxkZXJzPgorICAgICAgICA8bWVzc2FnZUJ1aWxkZXIgY29udGVudFR5cGU9ImFwcGxpY2F0aW9uL3htbCIKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJvcmcuYXBhY2hlLmF4aXMyLmJ1aWxkZXIuQXBwbGljYXRpb25YTUxCdWlsZGVyIi8+CisgICAgICAgIDxtZXNzYWdlQnVpbGRlciBjb250ZW50VHlwZT0iYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIgorICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9Im9yZy5hcGFjaGUuYXhpczIuYnVpbGRlci5YRm9ybVVSTEVuY29kZWRCdWlsZGVyIi8+CisgICAgICAgIDxtZXNzYWdlQnVpbGRlciBjb250ZW50VHlwZT0ibXVsdGlwYXJ0L2Zvcm0tZGF0YSIKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJvcmcuYXBhY2hlLmF4aXMyLmJ1aWxkZXIuTXVsdGlwYXJ0Rm9ybURhdGFCdWlsZGVyIi8+CisgICAgPC9tZXNzYWdlQnVpbGRlcnM+CisKKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPCEtLSBUcmFuc3BvcnQgSW5zIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8dHJhbnNwb3J0UmVjZWl2ZXIgbmFtZT0iaHR0cCIKKyAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9Im9yZy5hcGFjaGUuYXhpczIudHJhbnNwb3J0Lmh0dHAuU2ltcGxlSFRUUFNlcnZlciI+CisgICAgICAgIDxwYXJhbWV0ZXIgbmFtZT0icG9ydCI+ODA4MDwvcGFyYW1ldGVyPgorICAgICAgICA8IS0tIEhlcmUgaXMgdGhlIGNvbXBsZXRlIGxpc3Qgb2Ygc3VwcG9ydGVkIHBhcmFtZXRlcnMgKHNlZSBleGFtcGxlIHNldHRpbmdzIGZ1cnRoZXIgYmVsb3cpOgorICAgICAgICAgICAgcG9ydDogdGhlIHBvcnQgdG8gbGlzdGVuIG9uIChkZWZhdWx0IDYwNjApCisgICAgICAgICAgICBob3N0bmFtZTogIGlmIG5vbi1udWxsLCB1cmwgcHJlZml4IHVzZWQgaW4gcmVwbHktdG8gZW5kcG9pbnQgcmVmZXJlbmNlcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0IG51bGwpCisgICAgICAgICAgICBvcmlnaW5TZXJ2ZXI6ICB2YWx1ZSBvZiBodHRwIFNlcnZlciBoZWFkZXIgaW4gb3V0Z29pbmcgbWVzc2FnZXMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0ICJTaW1wbGUtU2VydmVyLzEuMSIpCisgICAgICAgICAgICByZXF1ZXN0VGltZW91dDogIHZhbHVlIGluIG1pbGxpcyBvZiB0aW1lIHRoYXQgcmVxdWVzdHMgY2FuIHdhaXQgZm9yIGRhdGEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0IDIwMDAwKQorICAgICAgICAgICAgcmVxdWVzdFRjcE5vRGVsYXk6ICB0cnVlIHRvIG1heGltaXplIHBlcmZvcm1hbmNlIGFuZCBtaW5pbWl6ZSBsYXRlbmN5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdCB0cnVlKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSB0byBtaW5pbWl6ZSBiYW5kd2lkdGggY29uc3VtcHRpb24gYnkgY29tYmluaW5nIHNlZ21lbnRzCisgICAgICAgICAgICByZXF1ZXN0Q29yZVRocmVhZFBvb2xTaXplOiAgbnVtYmVyIG9mIHRocmVhZHMgYXZhaWxhYmxlIGZvciByZXF1ZXN0IHByb2Nlc3NpbmcgKHVubGVzcyBxdWV1ZSBmaWxscyB1cCkgIChkZWZhdWx0IDI1KQorICAgICAgICAgICAgcmVxdWVzdE1heFRocmVhZFBvb2xTaXplOiAgbnVtYmVyIG9mIHRocmVhZHMgYXZhaWxhYmxlIGZvciByZXF1ZXN0IHByb2Nlc3NpbmcgaWYgcXVldWUgZmlsbHMgdXAgICAgICAgICAoZGVmYXVsdCAxNTApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3RlIHRoYXQgZGVmYXVsdCBxdWV1ZSBuZXZlciBmaWxscyB1cDogIHNlZSBIdHRwRmFjdG9yeQorICAgICAgICAgICAgdGhyZWFkS2VlcEFsaXZlVGltZTogIHRpbWUgdG8ga2VlcCB0aHJlYWRzIGluIGV4Y2VzcyBvZiBjb3JlIHNpemUgYWxpdmUgd2hpbGUgaW5hY3RpdmUgICAgICAgICAgICAgICAgICAoZGVmYXVsdCAxODApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90ZSB0aGF0IG5vIHN1Y2ggdGhyZWFkcyBjYW4gZXhpc3Qgd2l0aCBkZWZhdWx0IHVuYm91bmRlZCByZXF1ZXN0IHF1ZXVlCisgICAgICAgICAgICB0aHJlYWRLZWVwQWxpdmVUaW1lVW5pdDogIFRpbWVVbml0IG9mIHZhbHVlIGluIHRocmVhZEtlZXBBbGl2ZVRpbWUgKGRlZmF1bHQgU0VDT05EUykgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0IFNFQ09ORFMpCisgICAgICAgIC0tPgorICAgICAgICA8IS0tIDxwYXJhbWV0ZXIgbmFtZT0iaG9zdG5hbWUiPmh0dHA6Ly93d3cubXlBcHAuY29tL3dzPC9wYXJhbWV0ZXI+IC0tPgorICAgICAgICA8IS0tIDxwYXJhbWV0ZXIgbmFtZT0ib3JpZ2luU2VydmVyIj5NeS1TZXJ2ZXIvMS4xPC9wYXJhbWV0ZXI+ICAgICAgICAgICAtLT4KKyAgICAgICAgPCEtLSA8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3RUaW1lb3V0Ij4xMDAwMDwvcGFyYW1ldGVyPiAgICAgICAgICAgICAgICAgICAtLT4KKyAgICAgICAgPCEtLSA8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3RUY3BOb0RlbGF5Ij5mYWxzZTwvcGFyYW1ldGVyPiAgICAgICAgICAgICAgICAgICAtLT4KKyAgICAgICAgPCEtLSA8cGFyYW1ldGVyIG5hbWU9InJlcXVlc3RDb3JlVGhyZWFkUG9vbFNpemUiPjUwPC9wYXJhbWV0ZXI+ICAgICAgICAgICAgICAgICAgICAgIC0tPgorICAgICAgICA8IS0tIDxwYXJhbWV0ZXIgbmFtZT0icmVxdWVzdE1heFRocmVhZFBvb2xTaXplIj4xMDA8L3BhcmFtZXRlcj4gICAgICAgICAgICAgICAgICAgICAtLT4KKyAgICAgICAgPCEtLSA8cGFyYW1ldGVyIG5hbWU9InRocmVhZEtlZXBBbGl2ZVRpbWUiPjI0MDAwMDwvcGFyYW1ldGVyPiAgICAgICAgICAgICAgICAgIC0tPgorICAgICAgICA8IS0tIDxwYXJhbWV0ZXIgbmFtZT0idGhyZWFkS2VlcEFsaXZlVGltZVVuaXQiPk1JTExJU0VDT05EUzwvcGFyYW1ldGVyPiAgICAgICAgICAgIC0tPgorICAgIDwvdHJhbnNwb3J0UmVjZWl2ZXI+CisKKyAgICA8IS0tIFRoaXMgaXMgd2hlcmUgeW91J2QgcHV0IGN1c3RvbSB0cmFuc3BvcnRzLiAgU2VlIHRoZSB0cmFuc3BvcnRzIHByb2plY3QgLS0+CisgICAgPCEtLSBmb3IgbW9yZS4gIGh0dHA6Ly93cy5hcGFjaGUub3JnL2NvbW1vbnMvdHJhbnNwb3J0ICAgICAgICAgICAgICAgICAgICAgIC0tPgorCisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDwhLS0gVHJhbnNwb3J0IE91dHMgLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorCisgICAgPHRyYW5zcG9ydFNlbmRlciBuYW1lPSJsb2NhbCIKKyAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJvcmcuYXBhY2hlLmF4aXMyLnRyYW5zcG9ydC5sb2NhbC5Mb2NhbFRyYW5zcG9ydFNlbmRlciIvPgorICAgIDx0cmFuc3BvcnRTZW5kZXIgbmFtZT0iaHR0cCIKKyAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJvcmcuYXBhY2hlLmF4aXMyLnRyYW5zcG9ydC5odHRwLkNvbW1vbnNIVFRQVHJhbnNwb3J0U2VuZGVyIj4KKyAgICAgICAgPHBhcmFtZXRlciBuYW1lPSJQUk9UT0NPTCI+SFRUUC8xLjE8L3BhcmFtZXRlcj4KKyAgICAgICAgPHBhcmFtZXRlciBuYW1lPSJUcmFuc2Zlci1FbmNvZGluZyI+Y2h1bmtlZDwvcGFyYW1ldGVyPgorCisgICAgICAgIDwhLS0gSWYgZm9sbG93aW5nIGlzIHNldCB0byAndHJ1ZScsIG9wdGlvbmFsIGFjdGlvbiBwYXJ0IG9mIHRoZSBDb250ZW50LVR5cGUgd2lsbCBub3QgYmUgYWRkZWQgdG8gdGhlIFNPQVAgMS4yIG1lc3NhZ2VzIC0tPgorICAgICAgICA8IS0tICA8cGFyYW1ldGVyIG5hbWU9Ik9taXRTT0FQMTJBY3Rpb24iPnRydWU8L3BhcmFtZXRlcj4gIC0tPgorICAgIDwvdHJhbnNwb3J0U2VuZGVyPgorCisgICAgPHRyYW5zcG9ydFNlbmRlciBuYW1lPSJodHRwcyIKKyAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJvcmcuYXBhY2hlLmF4aXMyLnRyYW5zcG9ydC5odHRwLkNvbW1vbnNIVFRQVHJhbnNwb3J0U2VuZGVyIj4KKyAgICAgICAgPHBhcmFtZXRlciBuYW1lPSJQUk9UT0NPTCI+SFRUUC8xLjE8L3BhcmFtZXRlcj4KKyAgICAgICAgPHBhcmFtZXRlciBuYW1lPSJUcmFuc2Zlci1FbmNvZGluZyI+Y2h1bmtlZDwvcGFyYW1ldGVyPgorICAgIDwvdHJhbnNwb3J0U2VuZGVyPgorCisgICAgPCEtLSBQbGVhc2UgZW5hYmxlIHRoaXMgaWYgeW91IG5lZWQgdGhlIGphdmEgdHJhbnNwb3J0IC0tPgorICAgIDwhLS0gPHRyYW5zcG9ydFNlbmRlciBuYW1lPSJqYXZhIgorICAgICAgICAgICAgICAgICAgICAgY2xhc3M9Im9yZy5hcGFjaGUuYXhpczIudHJhbnNwb3J0LmphdmEuSmF2YVRyYW5zcG9ydFNlbmRlciIvPiAtLT4KKworICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8IS0tIEdsb2JhbCBNb2R1bGVzICAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPCEtLSBDb21tZW50IHRoaXMgdG8gZGlzYWJsZSBBZGRyZXNzaW5nIC0tPgorICAgIDxtb2R1bGUgcmVmPSJhZGRyZXNzaW5nIi8+CisKKyAgICA8IS0tQ29uZmlndXJpbmcgbW9kdWxlICwgcHJvdmlkaW5nIHBhcmFtZXRlcnMgZm9yIG1vZHVsZXMgd2hldGhlciB0aGV5IHJlZmVyIG9yIG5vdC0tPgorICAgIDwhLS08bW9kdWxlQ29uZmlnIG5hbWU9ImFkZHJlc3NpbmciPi0tPgorICAgIDwhLS08cGFyYW1ldGVyIG5hbWU9ImFkZHJlc3NpbmdQYXJhIj5OL0E8L3BhcmFtZXRlcj4tLT4KKyAgICA8IS0tPC9tb2R1bGVDb25maWc+LS0+CisKKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPCEtLSBDbHVzdGVyaW5nICAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPCEtLQorICAgICBUbyBlbmFibGUgY2x1c3RlcmluZyBmb3IgdGhpcyBub2RlLCBzZXQgdGhlIHZhbHVlIG9mICJlbmFibGUiIGF0dHJpYnV0ZSBvZiB0aGUgImNsdXN0ZXJpbmciCisgICAgIGVsZW1lbnQgdG8gInRydWUiLiBUaGUgaW5pdGlhbGl6YXRpb24gb2YgYSBub2RlIGluIHRoZSBjbHVzdGVyIGlzIGhhbmRsZWQgYnkgdGhlIGNsYXNzCisgICAgIGNvcnJlc3BvbmRpbmcgdG8gdGhlICJjbGFzcyIgYXR0cmlidXRlIG9mIHRoZSAiY2x1c3RlcmluZyIgZWxlbWVudC4gSXQgaXMgYWxzbyByZXNwb25zaWJsZSBmb3IKKyAgICAgZ2V0dGluZyB0aGlzIG5vZGUgdG8gam9pbiB0aGUgY2x1c3Rlci4KKyAgICAgLS0+CisgICAgPGNsdXN0ZXJpbmcgY2xhc3M9Im9yZy5hcGFjaGUuYXhpczIuY2x1c3RlcmluZy50cmliZXMuVHJpYmVzQ2x1c3RlcmluZ0FnZW50IiBlbmFibGU9ImZhbHNlIj4KKworICAgICAgICA8IS0tCisgICAgICAgICAgIFRoaXMgcGFyYW1ldGVyIGluZGljYXRlcyB3aGV0aGVyIHRoZSBjbHVzdGVyIGhhcyB0byBiZSBhdXRvbWF0aWNhbGx5IGluaXRhbGl6ZWQKKyAgICAgICAgICAgd2hlbiB0aGUgQXhpc0NvbmZpZ3VyYXRpb24gaXMgYnVpbHQuIElmIHNldCB0byAidHJ1ZSIgdGhlIGluaXRpYWxpemF0aW9uIHdpbGwgbm90IGJlCisgICAgICAgICAgIGRvbmUgYXQgdGhhdCBzdGFnZSwgYW5kIHNvbWUgb3RoZXIgcGFydHkgd2lsbCBoYXZlIHRvIGV4cGxpY3RseSBpbml0aWFsaXplIHRoZSBjbHVzdGVyLgorICAgICAgICAtLT4KKyAgICAgICAgPHBhcmFtZXRlciBuYW1lPSJBdm9pZEluaXRpYXRpb24iPnRydWU8L3BhcmFtZXRlcj4KKworICAgICAgICA8IS0tCisgICAgICAgICAgIFRoZSBtZW1iZXJzaGlwIHNjaGVtZSB1c2VkIGluIHRoaXMgc2V0dXAuIFRoZSBvbmx5IHZhbHVlcyBzdXBwb3J0ZWQgYXQgdGhlIG1vbWVudCBhcmUKKyAgICAgICAgICAgIm11bHRpY2FzdCIgYW5kICJ3a2EiCisKKyAgICAgICAgICAgMS4gbXVsdGljYXN0IC0gbWVtYmVyc2hpcCBpcyBhdXRvbWF0aWNhbGx5IGRpc2NvdmVyZWQgdXNpbmcgbXVsdGljYXN0aW5nCisgICAgICAgICAgIDIuIHdrYSAtIFdlbGwtS25vd24gQWRkcmVzcyBiYXNlZCBtdWx0aWNhc3RpbmcuIE1lbWJlcnNoaXAgaXMgZGlzY292ZXJlZCB3aXRoIHRoZSBoZWxwCisgICAgICAgICAgICAgICAgICAgIG9mIG9uZSBvciBtb3JlIG5vZGVzIHJ1bm5pbmcgYXQgYSBXZWxsLUtub3duIEFkZHJlc3MuIE5ldyBtZW1iZXJzIGpvaW5pbmcgYQorICAgICAgICAgICAgICAgICAgICBjbHVzdGVyIHdpbGwgZmlyc3QgY29ubmVjdCB0byBhIHdlbGwta25vd24gbm9kZSwgcmVnaXN0ZXIgd2l0aCB0aGUgd2VsbC1rbm93biBub2RlCisgICAgICAgICAgICAgICAgICAgIGFuZCBnZXQgdGhlIG1lbWJlcnNoaXAgbGlzdCBmcm9tIGl0LiBXaGVuIG5ldyBtZW1iZXJzIGpvaW4sIG9uZSBvZiB0aGUgd2VsbC1rbm93bgorICAgICAgICAgICAgICAgICAgICBub2RlcyB3aWxsIG5vdGlmeSB0aGUgb3RoZXJzIGluIHRoZSBncm91cC4gV2hlbiBhIG1lbWJlciBsZWF2ZXMgdGhlIGNsdXN0ZXIgb3IKKyAgICAgICAgICAgICAgICAgICAgaXMgZGVlbWVkIHRvIGhhdmUgbGVmdCB0aGUgY2x1c3RlciwgaXQgd2lsbCBiZSBkZXRlY3RlZCBieSB0aGUgR3JvdXAgTWVtYmVyc2hpcAorICAgICAgICAgICAgICAgICAgICBTZXJ2aWNlIChHTVMpIHVzaW5nIGEgVENQIHBpbmcgbWVjaGFuaXNtLgorICAgICAgICAtLT4KKyAgICAgICAgPHBhcmFtZXRlciBuYW1lPSJtZW1iZXJzaGlwU2NoZW1lIj5tdWx0aWNhc3Q8L3BhcmFtZXRlcj4KKworICAgICAgICA8IS0tCisgICAgICAgICBUaGUgY2x1c3RlcmluZyBkb21haW4vZ3JvdXAuIE5vZGVzIGluIHRoZSBzYW1lIGdyb3VwIHdpbGwgYmVsb25nIHRvIHRoZSBzYW1lIG11bHRpY2FzdAorICAgICAgICAgZG9tYWluLiBUaGVyZSB3aWxsIG5vdCBiZSBpbnRlcmZlcmVuY2UgYmV0d2VlbiBub2RlcyBpbiBkaWZmZXJlbnQgZ3JvdXBzLgorICAgICAgICAtLT4KKyAgICAgICAgPHBhcmFtZXRlciBuYW1lPSJkb21haW4iPndzbzIuY2FyYm9uLmRvbWFpbjwvcGFyYW1ldGVyPgorCisgICAgICAgIDwhLS0KKyAgICAgICAgICAgV2hlbiBhIFdlYiBzZXJ2aWNlIHJlcXVlc3QgaXMgcmVjZWl2ZWQsIGFuZCBwcm9jZXNzZWQsIGJlZm9yZSB0aGUgcmVzcG9uc2UgaXMgc2VudCB0byB0aGUKKyAgICAgICAgICAgY2xpZW50LCBzaG91bGQgd2UgdXBkYXRlIHRoZSBzdGF0ZXMgb2YgYWxsIG1lbWJlcnMgaW4gdGhlIGNsdXN0ZXI/IElmIHRoZSB2YWx1ZSBvZgorICAgICAgICAgICB0aGlzIHBhcmFtZXRlciBpcyBzZXQgdG8gInRydWUiLCB0aGUgcmVzcG9uc2UgdG8gdGhlIGNsaWVudCB3aWxsIGJlIHNlbnQgb25seSBhZnRlcgorICAgICAgICAgICBhbGwgdGhlIG1lbWJlcnMgaGF2ZSBiZWVuIHVwZGF0ZWQuIE9idmlvdXNseSwgdGhpcyBjYW4gYmUgdGltZSBjb25zdW1pbmcuIEluIHNvbWUgY2FzZXMsCisgICAgICAgICAgIHN1Y2ggdGhpcyBvdmVyaGVhZCBtYXkgbm90IGJlIGFjY2VwdGFibGUsIGluIHdoaWNoIGNhc2UgdGhlIHZhbHVlIG9mIHRoaXMgcGFyYW1ldGVyCisgICAgICAgICAgIHNob3VsZCBiZSBzZXQgdG8gImZhbHNlIgorICAgICAgICAtLT4KKyAgICAgICAgPHBhcmFtZXRlciBuYW1lPSJzeW5jaHJvbml6ZUFsbCI+dHJ1ZTwvcGFyYW1ldGVyPgorCisgICAgICAgIDwhLS0KKyAgICAgICAgICBUaGUgbWF4aW11bSBudW1iZXIgb2YgdGltZXMgd2UgbmVlZCB0byByZXRyeSB0byBzZW5kIGEgbWVzc2FnZSB0byBhIHBhcnRpY3VsYXIgbm9kZQorICAgICAgICAgIGJlZm9yZSBnaXZpbmcgdXAgYW5kIGNvbnNpZGVyaW5nIHRoYXQgbm9kZSB0byBiZSBmYXVsdHkKKyAgICAgICAgLS0+CisgICAgICAgIDxwYXJhbWV0ZXIgbmFtZT0ibWF4UmV0cmllcyI+MTA8L3BhcmFtZXRlcj4KKworICAgICAgICA8IS0tIFRoZSBtdWx0aWNhc3QgYWRkcmVzcyB0byBiZSB1c2VkIC0tPgorICAgICAgICA8cGFyYW1ldGVyIG5hbWU9Im1jYXN0QWRkcmVzcyI+MjI4LjAuMC40PC9wYXJhbWV0ZXI+CisKKyAgICAgICAgPCEtLSBUaGUgbXVsdGljYXN0IHBvcnQgdG8gYmUgdXNlZCAtLT4KKyAgICAgICAgPHBhcmFtZXRlciBuYW1lPSJtY2FzdFBvcnQiPjQ1NTY0PC9wYXJhbWV0ZXI+CisKKyAgICAgICAgPCEtLSBUaGUgZnJlcXVlbmN5IG9mIHNlbmRpbmcgbWVtYmVyc2hpcCBtdWx0aWNhc3QgbWVzc2FnZXMgKGluIG1zKSAtLT4KKyAgICAgICAgPHBhcmFtZXRlciBuYW1lPSJtY2FzdEZyZXF1ZW5jeSI+NTAwPC9wYXJhbWV0ZXI+CisKKyAgICAgICAgPCEtLSBUaGUgdGltZSBpbnRlcnZhbCB3aXRoaW4gd2hpY2ggaWYgYSBtZW1iZXIgZG9lcyBub3QgcmVzcG9uZCwgdGhlIG1lbWJlciB3aWxsIGJlCisgICAgICAgICBkZWVtZWQgdG8gaGF2ZSBsZWZ0IHRoZSBncm91cCAoaW4gbXMpCisgICAgICAgICAtLT4KKyAgICAgICAgPHBhcmFtZXRlciBuYW1lPSJtZW1iZXJEcm9wVGltZSI+MzAwMDwvcGFyYW1ldGVyPgorCisgICAgICAgIDwhLS0KKyAgICAgICAgICAgVGhlIElQIGFkZHJlc3Mgb2YgdGhlIG5ldHdvcmsgaW50ZXJmYWNlIHRvIHdoaWNoIHRoZSBtdWx0aWNhc3RpbmcgaGFzIHRvIGJlIGJvdW5kIHRvLgorICAgICAgICAgICBNdWx0aWNhc3Rpbmcgd291bGQgYmUgZG9uZSB1c2luZyB0aGlzIGludGVyZmFjZS4KKyAgICAgICAgLS0+CisgICAgICAgIDxwYXJhbWV0ZXIgbmFtZT0ibWNhc3RCaW5kQWRkcmVzcyI+MTI3LjAuMC4xPC9wYXJhbWV0ZXI+CisKKyAgICAgICAgPCEtLSBUaGUgaG9zdCBuYW1lIG9yIElQIGFkZHJlc3Mgb2YgdGhpcyBtZW1iZXIgLS0+CisgICAgICAgIDxwYXJhbWV0ZXIgbmFtZT0ibG9jYWxNZW1iZXJIb3N0Ij4xMjcuMC4wLjE8L3BhcmFtZXRlcj4KKworICAgICAgICA8IS0tCisgICAgICAgIFRoZSBUQ1AgcG9ydCB1c2VkIGJ5IHRoaXMgbWVtYmVyLiBUaGlzIGlzIHRoZSBwb3J0IHRocm91Z2ggd2hpY2ggb3RoZXIgbm9kZXMgd2lsbAorICAgICAgICBjb250YWN0IHRoaXMgbWVtYmVyCisgICAgICAgICAtLT4KKyAgICAgICAgPHBhcmFtZXRlciBuYW1lPSJsb2NhbE1lbWJlclBvcnQiPjQwMDA8L3BhcmFtZXRlcj4KKworICAgICAgICA8IS0tCisgICAgICAgIFByZXNlcnZlIG1lc3NhZ2Ugb3JkZXJpbmcuIFRoaXMgd2lsbCBiZSBkb25lIGFjY29yZGluZyB0byBzZW5kZXIgb3JkZXIuCisgICAgICAgIC0tPgorICAgICAgICA8cGFyYW1ldGVyIG5hbWU9InByZXNlcnZlTWVzc2FnZU9yZGVyIj50cnVlPC9wYXJhbWV0ZXI+CisKKyAgICAgICAgPCEtLQorICAgICAgICBNYWludGFpbiBhdG1vc3Qtb25jZSBtZXNzYWdlIHByb2Nlc3Npbmcgc2VtYW50aWNzCisgICAgICAgIC0tPgorICAgICAgICA8cGFyYW1ldGVyIG5hbWU9ImF0bW9zdE9uY2VNZXNzYWdlU2VtYW50aWNzIj50cnVlPC9wYXJhbWV0ZXI+CisKKyAgICAgICAgPCEtLQorICAgICAgICBQcm9wZXJ0aWVzIHNwZWNpZmljIHRvIHRoaXMgbWVtYmVyCisgICAgICAgIC0tPgorICAgICAgICA8cGFyYW1ldGVyIG5hbWU9InByb3BlcnRpZXMiPgorICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImJhY2tlbmRTZXJ2ZXJVUkwiIHZhbHVlPSJodHRwczovLyR7aG9zdE5hbWV9OiR7aHR0cHNQb3J0fS9zZXJ2aWNlcy8iLz4KKyAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJtZ3RDb25zb2xlVVJMIiB2YWx1ZT0iaHR0cHM6Ly8ke2hvc3ROYW1lfToke2h0dHBzUG9ydH0vIi8+CisgICAgICAgIDwvcGFyYW1ldGVyPgorCisgICAgICAgIDwhLS0KKyAgICAgICAgICAgVGhlIGxpc3Qgb2Ygc3RhdGljIG9yIHdlbGwta25vd24gbWVtYmVycy4gVGhlc2UgZW50cmllcyB3aWxsIG9ubHkgYmUgdmFsaWQgaWYgdGhlCisgICAgICAgICAgICJtZW1iZXJzaGlwU2NoZW1lIiBhYm92ZSBpcyBzZXQgdG8gIndrYSIKKyAgICAgICAgLS0+CisgICAgICAgIDxtZW1iZXJzPgorICAgICAgICAgICAgPG1lbWJlcj4KKyAgICAgICAgICAgICAgICA8aG9zdE5hbWU+MTI3LjAuMC4xPC9ob3N0TmFtZT4KKyAgICAgICAgICAgICAgICA8cG9ydD40MDAwPC9wb3J0PgorICAgICAgICAgICAgPC9tZW1iZXI+CisgICAgICAgICAgICA8bWVtYmVyPgorICAgICAgICAgICAgICAgIDxob3N0TmFtZT4xMjcuMC4wLjE8L2hvc3ROYW1lPgorICAgICAgICAgICAgICAgIDxwb3J0PjQwMDE8L3BvcnQ+CisgICAgICAgICAgICA8L21lbWJlcj4KKyAgICAgICAgPC9tZW1iZXJzPgorCisgICAgICAgIDwhLS0KKyAgICAgICAgRW5hYmxlIHRoZSBncm91cE1hbmFnZW1lbnQgZW50cnkgaWYgeW91IG5lZWQgdG8gcnVuIHRoaXMgbm9kZSBhcyBhIGNsdXN0ZXIgbWFuYWdlci4KKyAgICAgICAgTXVsdGlwbGUgYXBwbGljYXRpb24gZG9tYWlucyB3aXRoIGRpZmZlcmVudCBHcm91cE1hbmFnZW1lbnRBZ2VudCBpbXBsZW1lbnRhdGlvbnMKKyAgICAgICAgY2FuIGJlIGRlZmluZWQgaW4gdGhpcyBzZWN0aW9uLgorICAgICAgICAtLT4KKyAgICAgICAgPGdyb3VwTWFuYWdlbWVudCBlbmFibGU9ImZhbHNlIj4KKyAgICAgICAgICAgIDxhcHBsaWNhdGlvbkRvbWFpbiBuYW1lPSJhcGFjaGUuYXhpczIuYXBwbGljYXRpb24uZG9tYWluIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPSJBeGlzMiBncm91cCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZ2VudD0ib3JnLmFwYWNoZS5heGlzMi5jbHVzdGVyaW5nLm1hbmFnZW1lbnQuRGVmYXVsdEdyb3VwTWFuYWdlbWVudEFnZW50Ii8+CisgICAgICAgIDwvZ3JvdXBNYW5hZ2VtZW50PgorCisgICAgICAgIDwhLS0KKyAgICAgICAgICAgVGhpcyBpbnRlcmZhY2UgaXMgcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIG1hbmFnZW1lbnQgb2YgYSBzcGVjaWZpYyBub2RlIGluIHRoZSBjbHVzdGVyCisgICAgICAgICAgIFRoZSAiZW5hYmxlIiBhdHRyaWJ1dGUgaW5kaWNhdGVzIHdoZXRoZXIgTm9kZSBtYW5hZ2VtZW50IGhhcyBiZWVuIGVuYWJsZWQKKyAgICAgICAgLS0+CisgICAgICAgIDxub2RlTWFuYWdlciBjbGFzcz0ib3JnLmFwYWNoZS5heGlzMi5jbHVzdGVyaW5nLm1hbmFnZW1lbnQuRGVmYXVsdE5vZGVNYW5hZ2VyIgorICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZT0idHJ1ZSIvPgorCisgICAgICAgIDwhLS0KKyAgICAgICAgICAgVGhpcyBpbnRlcmZhY2UgaXMgcmVzcG9uc2libGUgZm9yIGhhbmRsaW5nIHN0YXRlIHJlcGxpY2F0aW9uLiBUaGUgcHJvcGVydHkgY2hhbmdlcyBpbgorICAgICAgICAgICB0aGUgQXhpczIgY29udGV4dCBoaWVyYXJjaHkgaW4gdGhpcyBub2RlLCBhcmUgcHJvcGFnYXRlZCB0byBhbGwgb3RoZXIgbm9kZXMgaW4gdGhlIGNsdXN0ZXIuCisKKyAgICAgICAgICAgVGhlICJleGNsdWRlcyIgcGF0dGVybnMgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSB0aGUgcHJlZml4ZXMgKGUuZy4gbG9jYWxfKikgb3IKKyAgICAgICAgICAgc3VmZml4ZXMgKGUuZy4gKl9sb2NhbCkgb2YgdGhlIHByb3BlcnRpZXMgdG8gYmUgZXhjbHVkZWQgZnJvbSByZXBsaWNhdGlvbi4gVGhlIHBhdHRlcm4KKyAgICAgICAgICAgIioiIGluZGljYXRlcyB0aGF0IGFsbCBwcm9wZXJ0aWVzIGluIGEgcGFydGljdWxhciBjb250ZXh0IHNob3VsZCBub3QgYmUgcmVwbGljYXRlZC4KKworICAgICAgICAgICAgVGhlICJlbmFibGUiIGF0dHJpYnV0ZSBpbmRpY2F0ZXMgd2hldGhlciBjb250ZXh0IHJlcGxpY2F0aW9uIGhhcyBiZWVuIGVuYWJsZWQKKyAgICAgICAgLS0+CisgICAgICAgIDxzdGF0ZU1hbmFnZXIgY2xhc3M9Im9yZy5hcGFjaGUuYXhpczIuY2x1c3RlcmluZy5zdGF0ZS5EZWZhdWx0U3RhdGVNYW5hZ2VyIgorICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZT0idHJ1ZSI+CisgICAgICAgICAgICA8cmVwbGljYXRpb24+CisgICAgICAgICAgICAgICAgPGRlZmF1bHRzPgorICAgICAgICAgICAgICAgICAgICA8ZXhjbHVkZSBuYW1lPSJsb2NhbF8qIi8+CisgICAgICAgICAgICAgICAgICAgIDxleGNsdWRlIG5hbWU9IkxPQ0FMXyoiLz4KKyAgICAgICAgICAgICAgICA8L2RlZmF1bHRzPgorICAgICAgICAgICAgICAgIDxjb250ZXh0IGNsYXNzPSJvcmcuYXBhY2hlLmF4aXMyLmNvbnRleHQuQ29uZmlndXJhdGlvbkNvbnRleHQiPgorICAgICAgICAgICAgICAgICAgICA8ZXhjbHVkZSBuYW1lPSJsb2NhbF8qIi8+CisgICAgICAgICAgICAgICAgPC9jb250ZXh0PgorICAgICAgICAgICAgICAgIDxjb250ZXh0IGNsYXNzPSJvcmcuYXBhY2hlLmF4aXMyLmNvbnRleHQuU2VydmljZUdyb3VwQ29udGV4dCI+CisgICAgICAgICAgICAgICAgICAgIDxleGNsdWRlIG5hbWU9ImxvY2FsXyoiLz4KKyAgICAgICAgICAgICAgICA8L2NvbnRleHQ+CisgICAgICAgICAgICAgICAgPGNvbnRleHQgY2xhc3M9Im9yZy5hcGFjaGUuYXhpczIuY29udGV4dC5TZXJ2aWNlQ29udGV4dCI+CisgICAgICAgICAgICAgICAgICAgIDxleGNsdWRlIG5hbWU9ImxvY2FsXyoiLz4KKyAgICAgICAgICAgICAgICA8L2NvbnRleHQ+CisgICAgICAgICAgICA8L3JlcGxpY2F0aW9uPgorICAgICAgICA8L3N0YXRlTWFuYWdlcj4KKyAgICA8L2NsdXN0ZXJpbmc+CisKKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPCEtLSBQaGFzZXMgIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8cGhhc2VPcmRlciB0eXBlPSJJbkZsb3ciPgorICAgICAgICA8IS0tICBTeXN0ZW0gcHJlZGVmaW5lZCBwaGFzZXMgICAgICAgLS0+CisgICAgICAgIDxwaGFzZSBuYW1lPSJUcmFuc3BvcnQiPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0iUmVxdWVzdFVSSUJhc2VkRGlzcGF0Y2hlciIKKyAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJvcmcuYXBhY2hlLmF4aXMyLmRpc3BhdGNoZXJzLlJlcXVlc3RVUklCYXNlZERpc3BhdGNoZXIiPgorICAgICAgICAgICAgICAgIDxvcmRlciBwaGFzZT0iVHJhbnNwb3J0Ii8+CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJTT0FQQWN0aW9uQmFzZWREaXNwYXRjaGVyIgorICAgICAgICAgICAgICAgICAgICAgY2xhc3M9Im9yZy5hcGFjaGUuYXhpczIuZGlzcGF0Y2hlcnMuU09BUEFjdGlvbkJhc2VkRGlzcGF0Y2hlciI+CisgICAgICAgICAgICAgICAgPG9yZGVyIHBoYXNlPSJUcmFuc3BvcnQiLz4KKyAgICAgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPC9waGFzZT4KKyAgICAgICAgPHBoYXNlIG5hbWU9IkFkZHJlc3NpbmciPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0iQWRkcmVzc2luZ0Jhc2VkRGlzcGF0Y2hlciIKKyAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJvcmcuYXBhY2hlLmF4aXMyLmRpc3BhdGNoZXJzLkFkZHJlc3NpbmdCYXNlZERpc3BhdGNoZXIiPgorICAgICAgICAgICAgICAgIDxvcmRlciBwaGFzZT0iQWRkcmVzc2luZyIvPgorICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8L3BoYXNlPgorICAgICAgICA8cGhhc2UgbmFtZT0iU2VjdXJpdHkiLz4KKyAgICAgICAgPHBoYXNlIG5hbWU9IlByZURpc3BhdGNoIi8+CisgICAgICAgIDxwaGFzZSBuYW1lPSJEaXNwYXRjaCIgY2xhc3M9Im9yZy5hcGFjaGUuYXhpczIuZW5naW5lLkRpc3BhdGNoUGhhc2UiPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0iUmVxdWVzdFVSSUJhc2VkRGlzcGF0Y2hlciIKKyAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJvcmcuYXBhY2hlLmF4aXMyLmRpc3BhdGNoZXJzLlJlcXVlc3RVUklCYXNlZERpc3BhdGNoZXIiLz4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9IlNPQVBBY3Rpb25CYXNlZERpc3BhdGNoZXIiCisgICAgICAgICAgICAgICAgICAgICBjbGFzcz0ib3JnLmFwYWNoZS5heGlzMi5kaXNwYXRjaGVycy5TT0FQQWN0aW9uQmFzZWREaXNwYXRjaGVyIi8+CisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJSZXF1ZXN0VVJJT3BlcmF0aW9uRGlzcGF0Y2hlciIKKyAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJvcmcuYXBhY2hlLmF4aXMyLmRpc3BhdGNoZXJzLlJlcXVlc3RVUklPcGVyYXRpb25EaXNwYXRjaGVyIi8+CisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJTT0FQTWVzc2FnZUJvZHlCYXNlZERpc3BhdGNoZXIiCisgICAgICAgICAgICAgICAgICAgICBjbGFzcz0ib3JnLmFwYWNoZS5heGlzMi5kaXNwYXRjaGVycy5TT0FQTWVzc2FnZUJvZHlCYXNlZERpc3BhdGNoZXIiLz4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9IkhUVFBMb2NhdGlvbkJhc2VkRGlzcGF0Y2hlciIKKyAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJvcmcuYXBhY2hlLmF4aXMyLmRpc3BhdGNoZXJzLkhUVFBMb2NhdGlvbkJhc2VkRGlzcGF0Y2hlciIvPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0iR2VuZXJpY1Byb3ZpZGVyRGlzcGF0Y2hlciIKKyAgICAgICAgICAgICAgICAgICAgIGNsYXNzPSJvcmcuYXBhY2hlLmF4aXMyLmpheHdzLmRpc3BhdGNoZXJzLkdlbmVyaWNQcm92aWRlckRpc3BhdGNoZXIiLz4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Ik11c3RVbmRlcnN0YW5kVmFsaWRhdGlvbkRpc3BhdGNoZXIiCisgICAgICAgICAgICAgICAgICAgICBjbGFzcz0ib3JnLmFwYWNoZS5heGlzMi5qYXh3cy5kaXNwYXRjaGVycy5NdXN0VW5kZXJzdGFuZFZhbGlkYXRpb25EaXNwYXRjaGVyIi8+CisgICAgICAgIDwvcGhhc2U+CisgICAgICAgIDxwaGFzZSBuYW1lPSJSTVBoYXNlIi8+CisgICAgICAgIDwhLS0gIFN5c3RlbSBwcmVkZWZpbmVkIHBoYXNlcyAgICAgICAtLT4KKyAgICAgICAgPCEtLSAgIEFmdGVyIFBvc3RkaXNwYXRjaCBwaGFzZSBtb2R1bGUgYXV0aG9yIG9yIHNlcnZpY2UgYXV0aG9yIGNhbiBhZGQgYW55IHBoYXNlIGhlIHdhbnQgICAgICAtLT4KKyAgICAgICAgPHBoYXNlIG5hbWU9Ik9wZXJhdGlvbkluUGhhc2UiPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0iTXVzdFVuZGVyc3RhbmRDaGVja2VyIgorICAgICAgICAgICAgICAgICAgICAgY2xhc3M9Im9yZy5hcGFjaGUuYXhpczIuamF4d3MuZGlzcGF0Y2hlcnMuTXVzdFVuZGVyc3RhbmRDaGVja2VyIj4KKyAgICAgICAgICAgICAgICA8b3JkZXIgcGhhc2U9Ik9wZXJhdGlvbkluUGhhc2UiLz4KKyAgICAgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPC9waGFzZT4KKyAgICAgICAgPHBoYXNlIG5hbWU9InNvYXBtb25pdG9yUGhhc2UiLz4KKyAgICA8L3BoYXNlT3JkZXI+CisgICAgPHBoYXNlT3JkZXIgdHlwZT0iT3V0RmxvdyI+CisgICAgICAgIDwhLS0gICAgICB1c2VyIGNhbiBhZGQgaGlzIG93biBwaGFzZXMgdG8gdGhpcyBhcmVhICAtLT4KKyAgICAgICAgPHBoYXNlIG5hbWU9InNvYXBtb25pdG9yUGhhc2UiLz4KKyAgICAgICAgPHBoYXNlIG5hbWU9Ik9wZXJhdGlvbk91dFBoYXNlIi8+CisgICAgICAgIDwhLS1zeXN0ZW0gcHJlZGVmaW5lZCBwaGFzZS0tPgorICAgICAgICA8IS0tdGhlc2UgcGhhc2Ugd2lsbCBydW4gaXJyZXNwZWN0aXZlIG9mIHRoZSBzZXJ2aWNlLS0+CisgICAgICAgIDxwaGFzZSBuYW1lPSJSTVBoYXNlIi8+CisgICAgICAgIDxwaGFzZSBuYW1lPSJQb2xpY3lEZXRlcm1pbmF0aW9uIi8+CisgICAgICAgIDxwaGFzZSBuYW1lPSJNZXNzYWdlT3V0Ii8+CisgICAgICAgIDxwaGFzZSBuYW1lPSJTZWN1cml0eSIvPgorICAgIDwvcGhhc2VPcmRlcj4KKyAgICA8cGhhc2VPcmRlciB0eXBlPSJJbkZhdWx0RmxvdyI+CisgICAgICAgIDxwaGFzZSBuYW1lPSJBZGRyZXNzaW5nIj4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9IkFkZHJlc3NpbmdCYXNlZERpc3BhdGNoZXIiCisgICAgICAgICAgICAgICAgICAgICBjbGFzcz0ib3JnLmFwYWNoZS5heGlzMi5kaXNwYXRjaGVycy5BZGRyZXNzaW5nQmFzZWREaXNwYXRjaGVyIj4KKyAgICAgICAgICAgICAgICA8b3JkZXIgcGhhc2U9IkFkZHJlc3NpbmciLz4KKyAgICAgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPC9waGFzZT4KKyAgICAgICAgPHBoYXNlIG5hbWU9IlNlY3VyaXR5Ii8+CisgICAgICAgIDxwaGFzZSBuYW1lPSJQcmVEaXNwYXRjaCIvPgorICAgICAgICA8cGhhc2UgbmFtZT0iRGlzcGF0Y2giIGNsYXNzPSJvcmcuYXBhY2hlLmF4aXMyLmVuZ2luZS5EaXNwYXRjaFBoYXNlIj4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9IlJlcXVlc3RVUklCYXNlZERpc3BhdGNoZXIiCisgICAgICAgICAgICAgICAgICAgICBjbGFzcz0ib3JnLmFwYWNoZS5heGlzMi5kaXNwYXRjaGVycy5SZXF1ZXN0VVJJQmFzZWREaXNwYXRjaGVyIi8+CisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJTT0FQQWN0aW9uQmFzZWREaXNwYXRjaGVyIgorICAgICAgICAgICAgICAgICAgICAgY2xhc3M9Im9yZy5hcGFjaGUuYXhpczIuZGlzcGF0Y2hlcnMuU09BUEFjdGlvbkJhc2VkRGlzcGF0Y2hlciIvPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0iUmVxdWVzdFVSSU9wZXJhdGlvbkRpc3BhdGNoZXIiCisgICAgICAgICAgICAgICAgICAgICBjbGFzcz0ib3JnLmFwYWNoZS5heGlzMi5kaXNwYXRjaGVycy5SZXF1ZXN0VVJJT3BlcmF0aW9uRGlzcGF0Y2hlciIvPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0iU09BUE1lc3NhZ2VCb2R5QmFzZWREaXNwYXRjaGVyIgorICAgICAgICAgICAgICAgICAgICAgY2xhc3M9Im9yZy5hcGFjaGUuYXhpczIuZGlzcGF0Y2hlcnMuU09BUE1lc3NhZ2VCb2R5QmFzZWREaXNwYXRjaGVyIi8+CisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJIVFRQTG9jYXRpb25CYXNlZERpc3BhdGNoZXIiCisgICAgICAgICAgICAgICAgICAgICBjbGFzcz0ib3JnLmFwYWNoZS5heGlzMi5kaXNwYXRjaGVycy5IVFRQTG9jYXRpb25CYXNlZERpc3BhdGNoZXIiLz4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9IkdlbmVyaWNQcm92aWRlckRpc3BhdGNoZXIiCisgICAgICAgICAgICAgICAgICAgICBjbGFzcz0ib3JnLmFwYWNoZS5heGlzMi5qYXh3cy5kaXNwYXRjaGVycy5HZW5lcmljUHJvdmlkZXJEaXNwYXRjaGVyIi8+CisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJNdXN0VW5kZXJzdGFuZFZhbGlkYXRpb25EaXNwYXRjaGVyIgorICAgICAgICAgICAgICAgICAgICAgY2xhc3M9Im9yZy5hcGFjaGUuYXhpczIuamF4d3MuZGlzcGF0Y2hlcnMuTXVzdFVuZGVyc3RhbmRWYWxpZGF0aW9uRGlzcGF0Y2hlciIvPgorICAgICAgICA8L3BoYXNlPgorICAgICAgICA8cGhhc2UgbmFtZT0iUk1QaGFzZSIvPgorICAgICAgICA8IS0tICAgICAgdXNlciBjYW4gYWRkIGhpcyBvd24gcGhhc2VzIHRvIHRoaXMgYXJlYSAgLS0+CisgICAgICAgIDxwaGFzZSBuYW1lPSJPcGVyYXRpb25JbkZhdWx0UGhhc2UiLz4KKyAgICAgICAgPHBoYXNlIG5hbWU9InNvYXBtb25pdG9yUGhhc2UiLz4KKyAgICA8L3BoYXNlT3JkZXI+CisgICAgPHBoYXNlT3JkZXIgdHlwZT0iT3V0RmF1bHRGbG93Ij4KKyAgICAgICAgPCEtLSAgICAgIHVzZXIgY2FuIGFkZCBoaXMgb3duIHBoYXNlcyB0byB0aGlzIGFyZWEgIC0tPgorICAgICAgICA8cGhhc2UgbmFtZT0ic29hcG1vbml0b3JQaGFzZSIvPgorICAgICAgICA8cGhhc2UgbmFtZT0iT3BlcmF0aW9uT3V0RmF1bHRQaGFzZSIvPgorICAgICAgICA8cGhhc2UgbmFtZT0iUk1QaGFzZSIvPgorICAgICAgICA8cGhhc2UgbmFtZT0iUG9saWN5RGV0ZXJtaW5hdGlvbiIvPgorICAgICAgICA8cGhhc2UgbmFtZT0iTWVzc2FnZU91dCIvPgorICAgICAgICA8cGhhc2UgbmFtZT0iU2VjdXJpdHkiLz4KKyAgICA8L3BoYXNlT3JkZXI+Cis8L2F4aXNjb25maWc+CisKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL1dFQi1JTkYvY29uZi9heGlzMi54c2QgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9XRUItSU5GL2NvbmYvYXhpczIueHNkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmOTUyNTcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9XRUItSU5GL2NvbmYvYXhpczIueHNkCkBAIC0wLDAgKzEsMjY3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0NCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgIA0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAgICAJICANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAgdW5kZXIgdGhlIExpY2Vuc2UuDQorICANCistLT4NCis8eHM6c2NoZW1hIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiPg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0iYXhpc2NvbmZpZyI+DQorICAgIDx4czpjb21wbGV4VHlwZT4NCisgICAgICA8eHM6c2VxdWVuY2U+DQorICAgICAgICA8eHM6Y2hvaWNlIG1heE9jY3Vycz0idW5ib3VuZGVkIj4NCisgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXJhbWV0ZXIiLz4NCisgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJkZXBsb3llciIvPg0KKyAgICAgICAgPC94czpjaG9pY2U+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRocmVhZENvbnRleHRNaWdyYXRvcnMiLz4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0ibWVzc2FnZVJlY2VpdmVycyIvPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtZXNzYWdlRm9ybWF0dGVycyIvPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtZXNzYWdlQnVpbGRlcnMiLz4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0idHJhbnNwb3J0UmVjZWl2ZXIiLz4NCisgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRyYW5zcG9ydFNlbmRlciIvPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtb2R1bGUiLz4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0iY2x1c3RlcmluZyIvPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGhhc2VPcmRlciIvPg0KKyAgICAgIDwveHM6c2VxdWVuY2U+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czpOQ05hbWUiLz4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9ImRlcGxveWVyIj4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czpzZXF1ZW5jZT4NCisgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic2VydmljZUJ1aWxkZXJFeHRlbnNpb24iLz4NCisgICAgICA8L3hzOnNlcXVlbmNlPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiIHVzZT0icmVxdWlyZWQiLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRpcmVjdG9yeSIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6TkNOYW1lIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJleHRlbnNpb24iIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOk5NVE9LRU4iLz4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9InNlcnZpY2VCdWlsZGVyRXh0ZW5zaW9uIj4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiIHVzZT0icmVxdWlyZWQiLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOk5DTmFtZSIvPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0idGhyZWFkQ29udGV4dE1pZ3JhdG9ycyI+DQorICAgIDx4czpjb21wbGV4VHlwZT4NCisgICAgICA8eHM6c2VxdWVuY2U+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRocmVhZENvbnRleHRNaWdyYXRvciIvPg0KKyAgICAgIDwveHM6c2VxdWVuY2U+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJ0aHJlYWRDb250ZXh0TWlncmF0b3IiPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyIgdXNlPSJyZXF1aXJlZCIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGlzdElkIiB1c2U9InJlcXVpcmVkIi8+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJtZXNzYWdlUmVjZWl2ZXJzIj4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czpzZXF1ZW5jZT4NCisgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1lc3NhZ2VSZWNlaXZlciIvPg0KKyAgICAgIDwveHM6c2VxdWVuY2U+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJtZXNzYWdlUmVjZWl2ZXIiPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyIgdXNlPSJyZXF1aXJlZCIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWVwIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czphbnlVUkkiLz4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9Im1lc3NhZ2VGb3JtYXR0ZXJzIj4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czpzZXF1ZW5jZT4NCisgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1lc3NhZ2VGb3JtYXR0ZXIiLz4NCisgICAgICA8L3hzOnNlcXVlbmNlPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0ibWVzc2FnZUZvcm1hdHRlciI+DQorICAgIDx4czpjb21wbGV4VHlwZT4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIiB1c2U9InJlcXVpcmVkIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb250ZW50VHlwZSIgdXNlPSJyZXF1aXJlZCIvPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0ibWVzc2FnZUJ1aWxkZXJzIj4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czpzZXF1ZW5jZT4NCisgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1lc3NhZ2VCdWlsZGVyIi8+DQorICAgICAgPC94czpzZXF1ZW5jZT4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9Im1lc3NhZ2VCdWlsZGVyIj4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiIHVzZT0icmVxdWlyZWQiLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbnRlbnRUeXBlIiB1c2U9InJlcXVpcmVkIi8+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJ0cmFuc3BvcnRSZWNlaXZlciI+DQorICAgIDx4czpjb21wbGV4VHlwZT4NCisgICAgICA8eHM6c2VxdWVuY2U+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmFtZXRlciIvPg0KKyAgICAgIDwveHM6c2VxdWVuY2U+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyIgdXNlPSJyZXF1aXJlZCIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6TkNOYW1lIi8+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJ0cmFuc3BvcnRTZW5kZXIiPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOnNlcXVlbmNlPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJwYXJhbWV0ZXIiLz4NCisgICAgICA8L3hzOnNlcXVlbmNlPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiIHVzZT0icmVxdWlyZWQiLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOk5DTmFtZSIvPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0ibW9kdWxlIj4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVmIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czpOQ05hbWUiLz4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9ImNsdXN0ZXJpbmciPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOnNlcXVlbmNlPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0icGFyYW1ldGVyIi8+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im1lbWJlcnMiLz4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0iZ3JvdXBNYW5hZ2VtZW50Ii8+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im5vZGVNYW5hZ2VyIi8+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN0YXRlTWFuYWdlciIvPg0KKyAgICAgIDwveHM6c2VxdWVuY2U+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyIgdXNlPSJyZXF1aXJlZCIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZW5hYmxlIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czpib29sZWFuIi8+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJtZW1iZXJzIj4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czpzZXF1ZW5jZT4NCisgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1lbWJlciIvPg0KKyAgICAgIDwveHM6c2VxdWVuY2U+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJtZW1iZXIiPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOnNlcXVlbmNlPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJob3N0TmFtZSIvPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwb3J0Ii8+DQorICAgICAgPC94czpzZXF1ZW5jZT4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9Imhvc3ROYW1lIiB0eXBlPSJ4czpOTVRPS0VOIi8+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJwb3J0IiB0eXBlPSJ4czppbnRlZ2VyIi8+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJncm91cE1hbmFnZW1lbnQiPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOnNlcXVlbmNlPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhcHBsaWNhdGlvbkRvbWFpbiIvPg0KKyAgICAgIDwveHM6c2VxdWVuY2U+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlbmFibGUiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOmJvb2xlYW4iLz4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9ImFwcGxpY2F0aW9uRG9tYWluIj4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWdlbnQiIHVzZT0icmVxdWlyZWQiLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRlc2NyaXB0aW9uIiB1c2U9InJlcXVpcmVkIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czpOQ05hbWUiLz4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9Im5vZGVNYW5hZ2VyIj4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiIHVzZT0icmVxdWlyZWQiLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVuYWJsZSIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6Ym9vbGVhbiIvPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0ic3RhdGVNYW5hZ2VyIj4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czpzZXF1ZW5jZT4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0icmVwbGljYXRpb24iLz4NCisgICAgICA8L3hzOnNlcXVlbmNlPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiIHVzZT0icmVxdWlyZWQiLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVuYWJsZSIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6Ym9vbGVhbiIvPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0icmVwbGljYXRpb24iPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOnNlcXVlbmNlPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJkZWZhdWx0cyIvPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29udGV4dCIvPg0KKyAgICAgIDwveHM6c2VxdWVuY2U+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJkZWZhdWx0cyI+DQorICAgIDx4czpjb21wbGV4VHlwZT4NCisgICAgICA8eHM6c2VxdWVuY2U+DQorICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJleGNsdWRlIi8+DQorICAgICAgPC94czpzZXF1ZW5jZT4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9ImNvbnRleHQiPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOnNlcXVlbmNlPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJleGNsdWRlIi8+DQorICAgICAgPC94czpzZXF1ZW5jZT4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIiB1c2U9InJlcXVpcmVkIi8+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJwaGFzZU9yZGVyIj4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czpzZXF1ZW5jZT4NCisgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InBoYXNlIi8+DQorICAgICAgPC94czpzZXF1ZW5jZT4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InR5cGUiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOk5DTmFtZSIvPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0icGhhc2UiPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOnNlcXVlbmNlPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJoYW5kbGVyIi8+DQorICAgICAgPC94czpzZXF1ZW5jZT4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czpOQ05hbWUiLz4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9ImhhbmRsZXIiPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOnNlcXVlbmNlPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiByZWY9Im9yZGVyIi8+DQorICAgICAgPC94czpzZXF1ZW5jZT4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIiB1c2U9InJlcXVpcmVkIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czpOQ05hbWUiLz4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9Im9yZGVyIj4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGhhc2UiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOk5DTmFtZSIvPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0icGFyYW1ldGVyIj4NCisgICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4NCisgICAgICA8eHM6c2VxdWVuY2U+DQorICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InByb3BlcnR5Ii8+DQorICAgICAgPC94czpzZXF1ZW5jZT4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxvY2tlZCIgdHlwZT0ieHM6Ym9vbGVhbiIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6TkNOYW1lIi8+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJwcm9wZXJ0eSI+DQorICAgIDx4czpjb21wbGV4VHlwZT4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOk5DTmFtZSIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmFsdWUiIHVzZT0icmVxdWlyZWQiLz4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9ImV4Y2x1ZGUiPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB1c2U9InJlcXVpcmVkIi8+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorPC94czpzY2hlbWE+DQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9vcGVubWVldGluZ3MvV0VCLUlORi9zZXJ2aWNlcy92ZXJzaW9uLmFhciBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL1dFQi1JTkYvc2VydmljZXMvdmVyc2lvbi5hYXIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQwODEzMAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL1dFQi1JTkYvc2VydmljZXMvdmVyc2lvbi5hYXIKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9vcGVubWVldGluZ3MvY29uZmlnLnhtbCBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2NvbmZpZy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTI0ZDIwNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2NvbmZpZy54bWwKQEAgLTAsMCArMSwzNzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGNvbmZpZyAKKyAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiAKKyAgICB4c2k6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbj0iY29uZmlnLnhzZCI+CisKKzwhLS0gVVJML0lQIHRvIHVzZSBmb3IgdGhlIFNlcnZlciBmb3IgUlRNUCBhbmQgUlRNUFQgdHJhZmZpYy4KKyAgICBJZiB0aGlzIHZhbHVlIGlzIGVtcHR5IGl0IHdpbGwgdHJ5IHRvIGNvbm5lY3QgdG8gdGhlIAorICAgIGRvbWFpbi1uYW1lIHRoZSBPcGVuTWVldGluZ3MtQ2xpZW50IGhhcyBiZWVuIGxvYWRpbmcgZnJvbQorICAgIAorICAgIENhbiBiZSBlaXRoZXIgYW5kIElQIG9yIGEgZG9tYWluIG5hbWUuIAorICAgIEZvciBleGFtcGxlOiAKKyAgICA8cnRtcGhvc3Rsb2NhbD4xOTIuMTY4LjI1NC4xODI8L3J0bXBob3N0bG9jYWw+CisgICAgb3IKKyAgICA8cnRtcGhvc3Rsb2NhbD5teXN1YmRvbWFpbi5zdHJlYW1pbmcudG88L3J0bXBob3N0bG9jYWw+CisgICAgLS0+Cis8cnRtcGhvc3Rsb2NhbD48L3J0bXBob3N0bG9jYWw+CisKKzwhLS0gVVJML0lQIHRvIHVzZSBmb3IgdGhlIFNlcnZlciBmb3IgSFRUUCBhbmQgSFRUUFMgdHJhZmZpYy4KKyAgICBJZiB0aGlzIHZhbHVlIGlzIGVtcHR5IGl0IHdpbGwgdXNlIHRoZSBydG1waG9zdGxvY2FsIAorICAgIHZhcmlhYmxlIChhbmQgaW4gdGhhdCB3YXkgdHJ5IHRvIGNvbm5lY3QgdG8gdGhlIAorICAgIGRvbWFpbi1uYW1lIHRoZSBPcGVuTWVldGluZ3MtQ2xpZW50IGhhcyBiZWVuIGxvYWRpbmcgZnJvbSkKKyAgICAtLT4KKzxodHRwaG9zdGxvY2FsPjwvaHR0cGhvc3Rsb2NhbD4KKworPCEtLSAgCitQb3J0IHRvIHVzZSBmb3IgdGhlIFNlcnZlcgorVG8gdGhpcyBwb3J0IHRoZSBkZWZhdWx0IHNlcnZlciBsb29rdXAgaXMgZG9uZQorCitZb3UgY2FuIGZpbmQgYWxsIHRoaXMgY29uZmlndXJhdGlvbiBpbiB5b3VyIHJlZDUtQ29uZmlnIGluOiAkUkVENV9IT01FL2NvbmYvcmVkNS5wcm9wZXJ0aWVzCisgLS0+Cis8cnRtcHBvcnQ+MTkzNTwvcnRtcHBvcnQ+CisKKzwhLS0gCitQb3J0IHRvIHVzZSBmb3IgdGhlIFNlcnZlcgorVG8gdGhpcyBwb3J0IHRoZSBmYWxsYmFjayBpcyBkb25lIG9uY2UgdGhlIGRlZmF1bHQgcnRtcG9ydCBmYWlsZWQKK3RoaXMgc2hvdWxkIHdvcmthcm91bmQgOTklIG9mIGFsbCBmaXJld2FsbHMKKyAtLT4KKzxydG1wVHVubmVscG9ydD44MDg4PC9ydG1wVHVubmVscG9ydD4KKworPHJ0bXBzc2xwb3J0PjQ0MzwvcnRtcHNzbHBvcnQ+Cis8IS0tCitXZXRoZXIgaXQgc2hvdWxkIHRyeSB0byBjb25uZWN0IHRvIHJ0bXBzIGZpcnN0IG9yIG5vdAorVmFsaWQgdmFsdWVzOiB5ZXMgLyBubworCitOT1RFOiBUaGUgT1N4IGFuZCBMaW51eCBGbGFzaCBQbGF5ZXIgYXJlIE5PVCBhYmxlIHRvIGNvbm5lY3QgdmlhIHJ0bXBzCitUaGUgc3VwcG9ydCBmb3IgV2luZG93cyBpcyBleHBlcmltZW50YWwKKyAtLT4KKzx1c2VTU0w+bm88L3VzZVNTTD4KKworPCEtLSAKK1BvcnQgdG8gdXNlIGZvciB0aGUgU2VydmVyCitUaGlzIHBvcnQgaXMgdXNlZCB0byBjb25uZWN0IHRvIHRoZSBodHRwLXNlcnZsZXQKK29mIHRoZSByZWQ1LXNlcnZsZXQKKyAtLT4KKzxyZWQ1aHR0cHBvcnQ+NTA4MDwvcmVkNWh0dHBwb3J0PgorCis8IS0tCisgICAgVGhlIHByb3RvY29sIHRvIHVzZSBmb3IgdGhlIGh0dHAgY29ubmVjdGlvbnMKKyAgICBmb3IgZXhhbXBsZSB1cGxvYWQvZG93bmxvYWQgb2YgZmlsZXMgCisgLS0+Cis8cHJvdG9jb2w+aHR0cDwvcHJvdG9jb2w+CisKKzwhLS0KKyAgICBUaGUgc2V0dGluZyBmb3IgdGhlIE5ldENvbm5lY3Rpb24KKyAgICBkZWZhdWx0IHNldHRpbmdzIGlzICJub25lIgorICAgIHNldCB0byB2YWx1ZSAiYmVzdCIgaWYgeW91IGFyZSB0cnlpbmcgdG8gdXNlIHJ0bXAgb3ZlciBuYXRpdmUgU1NMCisgICAgc2VlOiBodHRwOi8vaGVscC5hZG9iZS5jb20vZW5fVVMvRmxhc2hQbGF0Zm9ybS9yZWZlcmVuY2UvYWN0aW9uc2NyaXB0LzMvZmxhc2gvbmV0L05ldENvbm5lY3Rpb24uaHRtbCNwcm94eVR5cGUKKyAtLT4KKzxwcm94eVR5cGU+bm9uZTwvcHJveHlUeXBlPgorCQorPCEtLQorICAgIE5hbWUgb2YgdGhlIEFwcGxpY2F0aW9uCisgICAgdGhpcyBpcyB0aGUgVG9wLUljb24gTmFtZSBvZiB0aGUgQXBwbGljYXRpb24KKyAtLT4gICAgCis8Y3VycmVudGFwcG5hbWU+QXBhY2hlIE9wZW5NZWV0aW5nczwvY3VycmVudGFwcG5hbWU+ICAgIAorICAgIAorPCEtLSAKKyAgICBVUkwgdG8gdGhlIEhvbWUgb2YgdGhlIEFwcGxpY2F0aW9uCisgICAgdGhpcyBpcyB0aGUgVVJMIHdoaWNoIGlzIHVzZWQgaWYgeW91IGNsaWNrIG9uIHRoZSBUb3AtaWNvbgorLS0+ICAgIAorPGN1cnJlbnRhcHBuYW1ldXJsPmh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZzwvY3VycmVudGFwcG5hbWV1cmw+ICAgICAgICAKKworPCEtLSAKKyAgICBTaG91bGQgQVBQIG5hbWUgYW5kL29yIGxvZ28gYmUgZGlzcGxheWVkCistLT4gICAgCis8YXBwZGlzcGxheT4KKwk8ZGlzcGxheWVsZW1lbnQgbmFtZT0ibG9nbyIgZGlzcGxheT0idHJ1ZSIgeD0iNSIgeT0iNSIvPgorCTxkaXNwbGF5ZWxlbWVudCBuYW1lPSJuYW1lIiBkaXNwbGF5PSJ0cnVlIiB4PSIxNDAiIHk9IjEwIi8+Cis8L2FwcGRpc3BsYXk+CisKKzwhLS0KKyAgICBVUkwgdG8gQnVncy9TdXBwb3J0CisgICAgdGhpcyBpcyB0aGUgVVJMIHdoaWNoIGlzIHVzZWQgaWYgeW91IGNsaWNrIG9uICpyZXBvcnQgYSBidWcqCisgLS0+Cis8Y3VycmVudGFwcG5hbWVidWd1cmw+aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1M8L2N1cnJlbnRhcHBuYW1lYnVndXJsPiAgIAorICAgICAgICAKKzwhLS0KKyAgICBWaWRlby1TZXR0aW5ncworICAgIAorICAgIE51bWJlciB0aGF0IHNwZWNpZmllcyB0aGUgYW1vdW50IG9mIHNvdW5kIHJlcXVpcmVkIHRvIGFjdGl2YXRlIHRoZSBtaWNyb3Bob25lIAorCUFjY2VwdGFibGUgdmFsdWVzIGZyb20gMCB0byAxMDAuCQorICAgIHRoaXMgdmFsdWUgaXMgdXNlZCBpbiBBdWRpb19TdHJlYW1pbmcsIGF0IHdoaWNoIHRoZSAqYWN0aXZpdHktbWV0ZXIqIHdpbGwKKyAgICBzZW5kIGEgbm90aWZpY2F0aW9uIGZvciBhbGwgY29ubmVjdGVkIGhvc3RzIG9mIGEgY29uZmVyZW5jZQorICAgIHRoZSByZXN1bHQgb2YgdGhpcyBub3RpZmljYXRpb24gaXMgdGhhdCB5b3Ugc2VlIHRoZSBncmVlbi1saWdodCBoaWdobGlnaHRlZCBpZgorICAgIGEgcmVtb3RlIHVzZXIgaXMgc3BlYWtpbmcKKyAtLT4KKzxsb3VkbmVzc0FjaXR2aWF0aW9uPjA8L2xvdWRuZXNzQWNpdHZpYXRpb24+ICAKKyAgICAKKzwhLS0KKyAgICBPcGVuTWVldGluZ3MtV2ViYXBwIE5hbWUKKyAgICBUaGlzIGlzIHRoZSBuYW1lIG9mIHRoZSBXZWJBcHAgdGhlIENsaWVudCB3aWxsIHRyeSB0byBjb25uZWN0CisgICAgaW4gZm9ybWVyIHZlcnNpb25zICh0aWxsIDAuNSBCZXRhNykgdGhlIG5hbWUgd2FzIHhtbGNybQorICAgIHRoZSBzYW1lIHBhcmFtIGthbm4gYmUgZmluZCBpbiB0aGUgd2ViYXBwIGluIHRoZSBSZWQ1LVdlYmFwcAorICAgIHJlZDUtd2ViLnByb3BlcnRpZXMKKyAgICB3ZWIueG1sCisgLS0+Cis8d2ViQXBwUm9vdEtleT5vcGVubWVldGluZ3M8L3dlYkFwcFJvb3RLZXk+ICAKKworPCEtLQorICAgIFdlIG5lZWQgdGhpcyBhZGRpdGlvbmFsIFJPT1QtS2V5IGFzIHdlIGhhdmUgdG8gZGVwbG95IHRoZSBhcHBsaWNhdGlvbiAKKyAgICBhcyBHbG9iYWwgQ29udGV4IFJvb3QuIAorICAgIAorICAgIElmIHRoZSBydG1wdCBpc3N1ZXMgaXMgc29sdmVkIHNvdGhhdCBzZXZlcmFsIFdlYmFwcHMgY2FuIHVzZSBkaWZmZXJlbnQgUlRNUFQgY29ubmVjdGlvbgorICAgIHdlIG1pZ2h0IGNoYW5nZSB0aGlzIHZhbHVlIGFnYWluIHRvIGl0cyBvcmlnaW4gLyB3ZWJhcHAtY29udGV4dAorCisgLS0+Cis8aHR0cFJvb3RLZXk+L29wZW5tZWV0aW5ncy88L2h0dHBSb290S2V5PiAgCisgICAgCis8IS0tCisgICAgV2luZG93LUVmZmVjdCBTZXR0aW5ncworICAgIHNob3dXaW5kb3dFZmZlY3QtdmFsdWVzOgorICAgIHkgPSB5ZXMKKyAgICBuID0gbm8KKyAgICBzaG93V2luZG93RWZmZWN0T3BhY2l0eS12YWx1ZXMKKyAgICBiZXR3ZWVuIDAgYW5kIDEKKyAtLT4KKzxzaG93V2luZG93RWZmZWN0Pm48L3Nob3dXaW5kb3dFZmZlY3Q+IAorCis8IS0tCisgICAgU2hvdyB0aGUgcmVjb3JkZXIgYnV0dG9ucyBpbiB0aGUgQ29uZmVyZW5jZSBSb29tcworICAgIHZpc2libGUgPSB5ZXMKKyAgICBoaWRkZW4gPSBubworIC0tPgkKKzxzaG93UmVjb3JkaW5nPmhpZGRlbjwvc2hvd1JlY29yZGluZz4KKworPCEtLQorICAgIAorCVRvIGVuYWJsZSB0aGUgbW9kZXJuIHdoaXRlYm9hcmQgUGFuZWwgeW91IG5lZWQgdG8gc3dpdGNoIHRoaXMgdG8geQorICAgIG9sZCBtZW51IGJhciBpcyBub3QgYWN0aXZlIGFueSBtb3JlCisgICAgCis8c2hvd21vZGVybldoaXRlQm9hcmQ+eTwvc2hvd21vZGVybldoaXRlQm9hcmQ+ICAgIAorIC0tPiAgICAKKwkKKzwhLS0KKwlGaXJzdCBkYXkgaW4gdGhlIFdlZWsgdXNlZCBieSB0aGUgQ2FsZW5kYXIKKwkwIG1lYW5zIFN1bmRheQorCTEgbWVhbnMgTW9uZGF5CisJdGhpcyBpcyB0aGUgd2F5IGhvdyB0aGUgY2FsZW5kYXIgVUkgc2hvd3MgYSB3ZWVrCistLT4KKzxmaXJzdGRheWlud2Vlaz4wPC9maXJzdGRheWlud2Vlaz4JCisgICAgCisgICAgCis8IS0tCisgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAgICBBdWRpbyBhbmQgVmlkZW8gU2V0dGluZ3MKKyAgICBCZWZvcmUgeW91IGNoYW5nZSBzZXR0aW5ncyBoZXJlLAorICAgIHlvdSBzaG91bGQgZmlyc3QgUGxheSBhbmQgbGVhcm4gaG93IHRoZSBTZXR0aW5ncyB3b3JrIGluIHRoZSBEb2N1bWVudGF0aW9uOgorICAgIGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9vcGVubWVldGluZ3Mvd2lraS9BdWRpb1ZpZGVvVGVzdGluZ0FwcGxpY2F0aW9uCisgICAgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAtLT4KKyAKKzwhLS0gQ2FtZXJhIFNldHRpbmdzIGZvciBjb2RlY1R5cGUKKworICAgIGNvZGVjVHlwZSBwb3NzaWJsZSB2YWx1ZXM6CisgICAgaDI2MworICAgIGgyNjQKKyAgICBJZiB5b3Ugd2FudCB0byB1c2UgcmVkNXNpcCwgc2V0IHZhbHVlIHRvICJoMjY0IgorIC0tPgorPGNvZGVjVHlwZT5oMjY0PC9jb2RlY1R5cGU+CisgICAgCis8IS0tIENhbWVyYSBTZXR0aW5ncyBmb3IgdGhlIEZyYW1lc1BlclNlY29uZAorICAgIAorICAgIGZwczpOdW1iZXIgW29wdGlvbmFsXSAtIFRoZSByZXF1ZXN0ZWQgcmF0ZSBhdCB3aGljaCB0aGUgY2FtZXJhIHNob3VsZCBjYXB0dXJlIAorICAgIGRhdGEsIGluIGZyYW1lcyBwZXIgc2Vjb25kLiBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAxNS4KKyAtLT4gICAgCis8ZnJhbWVzUGVyU2Vjb25kPjMwPC9mcmFtZXNQZXJTZWNvbmQ+CisgICAgCisgICAgCis8IS0tIENhbWVyYSBTZXR0aW5ncyBmb3IgdGhlIEJhbmR3aWR0aDoKKyAgICAKKyAgICBiYW5kd2lkdGg6TnVtYmVyIFtvcHRpb25hbF0gLSBBbiBpbnRlZ2VyIHRoYXQgc3BlY2lmaWVzIHRoZSBtYXhpbXVtIGFtb3VudCAKKyAgICBvZiBiYW5kd2lkdGggdGhhdCB0aGUgY3VycmVudCBvdXRnb2luZyB2aWRlbyBmZWVkIGNhbiB1c2UsIGluIGJ5dGVzIHBlciBzZWNvbmQuIAorICAgIFRvIHNwZWNpZnkgdGhhdCBGbGFzaCB2aWRlbyBjYW4gdXNlIGFzIG11Y2ggYmFuZHdpZHRoIGFzIG5lZWRlZCB0byBtYWludGFpbiAKKyAgICB0aGUgdmFsdWUgb2YgZnJhbWVRdWFsaXR5LCBwYXNzIDAgZm9yIGJhbmR3aWR0aC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgMTYzODQuCisgLS0+Cis8IS0tIFRoZXNlIGFyZSB0aGUgc2V0dGluZ3MgZm9yIHRoZSBRdWFsaXR5LU1vZHVzICpub3JtYWwqCisgICAgVGhlIFF1YWxpdHktTW9kdXMgY2FuIGJlIGNob3NlbiBpbiB0aGUgTG9naW4tQm94IC0tPiAKKzxiYW5kd2lkdGhOZWVkZWROb3JtYWw+MTYzODQ8L2JhbmR3aWR0aE5lZWRlZE5vcm1hbD4gICAgCis8IS0tIFRoZXNlIGFyZSB0aGUgc2V0dGluZ3MgZm9yIHRoZSBRdWFsaXR5LU1vZHVzICpiZXN0KiAtLT4gICAgCis8YmFuZHdpZHRoTmVlZGVkQmVzdD4wPC9iYW5kd2lkdGhOZWVkZWRCZXN0PgorICAgIAorICAgIAorPCEtLSBDYW1lcmEgU2V0dGluZ3MgZm9yIHRoZSBRdWFsaXR5CisgICAgCisgICAgcXVhbGl0eTpOdW1iZXIgW29wdGlvbmFsXSAtIEFuIGludGVnZXIgdGhhdCBzcGVjaWZpZXMgdGhlIHJlcXVpcmVkIGxldmVsIG9mIAorICAgIHBpY3R1cmUgcXVhbGl0eSwgYXMgZGV0ZXJtaW5lZCBieSB0aGUgYW1vdW50IG9mIGNvbXByZXNzaW9uIGJlaW5nIGFwcGxpZWQgdG8gCisgICAgZWFjaCB2aWRlbyBmcmFtZS4gQWNjZXB0YWJsZSB2YWx1ZXMgcmFuZ2UgZnJvbSAxIChsb3dlc3QgcXVhbGl0eSwgbWF4aW11bSAKKyAgICBjb21wcmVzc2lvbikgdG8gMTAwIChoaWdoZXN0IHF1YWxpdHksIG5vIGNvbXByZXNzaW9uKS4gVG8gc3BlY2lmeSB0aGF0IHBpY3R1cmUgCisgICAgcXVhbGl0eSBjYW4gdmFyeSBhcyBuZWVkZWQgdG8gYXZvaWQgZXhjZWVkaW5nIGJhbmR3aWR0aCwgcGFzcyAwIGZvciBxdWFsaXR5LiAKKyAgICBUaGUgZGVmYXVsdCB2YWx1ZSBpcyAwLgorIC0tPiAKKzwhLS0gVGhlc2UgYXJlIHRoZSBzZXR0aW5ncyBmb3IgdGhlIFF1YWxpdHktTW9kdXMgKm5vcm1hbCogLS0+ICAKKzxjYW1RdWFsaXR5Tm9ybWFsPjg1PC9jYW1RdWFsaXR5Tm9ybWFsPiAgICAgCis8IS0tIFRoZXNlIGFyZSB0aGUgc2V0dGluZ3MgZm9yIHRoZSBRdWFsaXR5LU1vZHVzICpiZXN0KiAtLT4gICAgICAgCis8Y2FtUXVhbGl0eUJlc3Q+OTA8L2NhbVF1YWxpdHlCZXN0PiAKKyAgICAKKyAgICAKKzwhLS0gTWljcm9waG9uZSBTZXR0aW5ncyBmb3IgdGhlIFJhdGU6CisgICAgCisgICAgcmF0ZTpOdW1iZXIgLSAKKyAgICBUaGUgcmF0ZSBhdCB3aGljaCB0aGUgbWljcm9waG9uZSBzaG91bGQgY2FwdHVyZSBzb3VuZCwgaW4ga0h6LiAKKyAgICBBY2NlcHRhYmxlIHZhbHVlcyBhcmUgNSwgOCwgMTEsIDIyLCBhbmQgNDQuIAorICAgIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDgga0h6IGlmIHlvdXIgc291bmQgY2FwdHVyZSAKKyAgICBkZXZpY2Ugc3VwcG9ydHMgdGhpcyB2YWx1ZS4gT3RoZXJ3aXNlLCB0aGUgZGVmYXVsdCB2YWx1ZSAKKyAgICBpcyB0aGUgbmV4dCBhdmFpbGFibGUgY2FwdHVyZSBsZXZlbCBhYm92ZSA4IGtIeiB0aGF0IHlvdXIgc291bmQgCisgICAgY2FwdHVyZSBkZXZpY2Ugc3VwcG9ydHMsIHVzdWFsbHkgMTEga0h6LgorIC0tPgorPCEtLSBNaWNyb3Bob25lIFNldHRpbmdzIFF1YWxpdHktTW9kdXMgLS0+Cis8bWljcm9waG9uZVJhdGVCZXN0PjIyPC9taWNyb3Bob25lUmF0ZUJlc3Q+CisKKzwhLS0gQUVDIGNvbmZpZ3VyYXRpb24gdmFsdWUKK1NwZWNpZmllcyB0aGUgZWNobyBwYXRoIGxlbmd0aCAoaW4gbWlsbGlzZWNvbmRzKS4gQSBsb25nZXIgZWNobyBwYXRoIG1lYW5zIGJldHRlciAKK2VjaG8gY2FuY2VsbGF0aW9uIGJ1dCBhbHNvIGludHJvZHVjZXMgbG9uZ2VyIGRlbGF5cyBhbmQgcmVxdWlyZXMgbW9yZSBwcm9jZXNzaW5nIHBvd2VyLiAKK1RoZSBkZWZhdWx0IHZhbHVlIGlzIDEyODsgdGhlIG9ubHkgb3RoZXIgcG9zc2libGUgdmFsdWUgaXMgMjU2LgorVG8gZGlzYWJsZSBBRUMgcGxlYXNlIHNwZWNpZnkgMC4KKyAtLT4KKzxlY2hvUGF0aD4xMjg8L2VjaG9QYXRoPgorCis8IS0tCisgICAgU2V0ICJ0cnVlIiBvciAiZmFsc2UiIHRvIGVuYWJsZS9kaXNhYmxlIG1pY3JvcGhvbmUgZWNobyBzdXBwcmVzc2lvbgorIC0tPgorPGVjaG9TdXBwcmVzc2lvbj50cnVlPC9lY2hvU3VwcHJlc3Npb24+CisKKzwhLS0KKyAgICBUaGUgU2l6ZSBvZiB0aGUgV2hpdGVib2FyZAorICAgIFRoZSBXaGl0ZWJvYXJkIGhhcyBzY3JvbGxiYXJzIHNvIHlvdSBtYXkgaW5jcmVhc2UgdGhlIHNpemUgd2l0aG91dCBwcm9ibGVtcworIC0tPgorPGRlZmF1bHRXaGl0ZWJvYXJkV2lkdGg+MjQwMDwvZGVmYXVsdFdoaXRlYm9hcmRXaWR0aD4gIAorPGRlZmF1bHRXaGl0ZWJvYXJkSGVpZ2h0PjEyMDA8L2RlZmF1bHRXaGl0ZWJvYXJkSGVpZ2h0PiAgCisKKzwhLS0gQXZhaWxhYmxlIENvbmZpZ3VyYXRpb25zIC0tPgorCis8YXZhaWxhYmxlQ2FtZXJhUmVzb2x1dGlvbnM+CisgICAgPHJlc29sdXRpb24gdHlwZT0iNDozICh+NiBLQnl0ZS9zZWMpIiB3aWR0aD0iNDAiIGhlaWdodD0iMzAiIGlzRGVmYXVsdD0iZmFsc2UiIC8+CisgICAgPHJlc29sdXRpb24gdHlwZT0iNDozICh+MTIgS0J5dGUvc2VjKSIgd2lkdGg9IjgwIiBoZWlnaHQ9IjYwIiBpc0RlZmF1bHQ9ImZhbHNlIiAvPgorICAgIDxyZXNvbHV0aW9uIHR5cGU9IjQ6MyAofjIwIEtCeXRlL3NlYykiIHdpZHRoPSIxMjAiIGhlaWdodD0iOTAiIGlzRGVmYXVsdD0idHJ1ZSIgLz4KKyAgICA8cmVzb2x1dGlvbiB0eXBlPSJRUVZHQSA0OjMgKH4zNiBLQnl0ZS9zZWMpIiB3aWR0aD0iMTYwIiBoZWlnaHQ9IjEyMCIgaXNEZWZhdWx0PSJmYWxzZSIgLz4KKyAgICA8cmVzb2x1dGlvbiB0eXBlPSI0OjMgKH40MCBLQnl0ZS9zZWMpIiB3aWR0aD0iMjQwIiBoZWlnaHQ9IjE4MCIgaXNEZWZhdWx0PSJmYWxzZSIgLz4KKyAgICA8cmVzb2x1dGlvbiB0eXBlPSJIVkdBIDQ6MyAofjU2IEtCeXRlL3NlYykiIHdpZHRoPSIzMjAiIGhlaWdodD0iMjQwIiBpc0RlZmF1bHQ9ImZhbHNlIiAvPgorICAgIDxyZXNvbHV0aW9uIHR5cGU9IjQ6MyAgKH42MCBLQnl0ZS9zZWMpIiB3aWR0aD0iNDgwIiBoZWlnaHQ9IjM2MCIgaXNEZWZhdWx0PSJmYWxzZSIgLz4KKyAgICA8cmVzb2x1dGlvbiB0eXBlPSI0OjMgKH42OCBLQnl0ZS9zZWMpIiB3aWR0aD0iNjQwIiBoZWlnaHQ9IjQ4MCIgaXNEZWZhdWx0PSJmYWxzZSIgLz4KKyAgICA8cmVzb2x1dGlvbiB0eXBlPSJYR0EgNDozIiB3aWR0aD0iMTAyNCIgaGVpZ2h0PSI3NjgiIGlzRGVmYXVsdD0iZmFsc2UiIC8+CisgICAgPHJlc29sdXRpb24gdHlwZT0iMTY6OSIgd2lkdGg9IjI1NiIgaGVpZ2h0PSIxNTAiIGlzRGVmYXVsdD0iZmFsc2UiIC8+CisgICAgPHJlc29sdXRpb24gdHlwZT0iV1FWR0EgOTo1IiB3aWR0aD0iNDMyIiBoZWlnaHQ9IjI0MCIgaXNEZWZhdWx0PSJmYWxzZSIgLz4KKyAgICA8cmVzb2x1dGlvbiB0eXBlPSJwc2V1ZG8gMTY6OSIgd2lkdGg9IjQ4MCIgaGVpZ2h0PSIyMzQiIGlzRGVmYXVsdD0iZmFsc2UiIC8+CisgICAgPHJlc29sdXRpb24gdHlwZT0iMTY6OSIgd2lkdGg9IjUxMiIgaGVpZ2h0PSIzMDAiIGlzRGVmYXVsdD0iZmFsc2UiIC8+CisgICAgPHJlc29sdXRpb24gdHlwZT0ibkhEIDE2OjkiIHdpZHRoPSI2NDAiIGhlaWdodD0iMzYwIiBpc0RlZmF1bHQ9ImZhbHNlIiAvPgorICAgIDxyZXNvbHV0aW9uIHR5cGU9IjE2OjkiIHdpZHRoPSIxMDI0IiBoZWlnaHQ9IjYwMCIgaXNEZWZhdWx0PSJmYWxzZSIgLz4KKzwvYXZhaWxhYmxlQ2FtZXJhUmVzb2x1dGlvbnM+CisgICAgCisgCis8IS0tIE1vZHVsZSBDb25maWd1cmF0aW9uIC0tPgorPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAgICBBZG1pbiBNb2R1bGVzCisgIC0tPiAgIAorICAgIAorPGFkbWluTW9kdWxlVXNlcj51c2VyQWRtaW48L2FkbWluTW9kdWxlVXNlcj4KKworPGFkbWluTW9kdWxlUm9vbT5yb29tQWRtaW48L2FkbWluTW9kdWxlUm9vbT4KKworPGFkbWluTW9kdWxlT3JnPm9yZ0FkbWluPC9hZG1pbk1vZHVsZU9yZz4KKworPGFkbWluTW9kdWxlTGFuZ3VhZ2VzPmxhbmd1YWdlc0VkaXRvcjwvYWRtaW5Nb2R1bGVMYW5ndWFnZXM+CisKKzxhZG1pbk1vZHVsZUNvbm5lY3Rpb25zPnJvb21DbGllbnQ8L2FkbWluTW9kdWxlQ29ubmVjdGlvbnM+CisKKzxhZG1pbk1vZHVsZUNvbmZpZ3VyYXRpb24+Y29uZkFkbWluPC9hZG1pbk1vZHVsZUNvbmZpZ3VyYXRpb24+CisKKzxhZG1pbk1vZHVsZUJhY2t1cD5iYWNrdXBDb250ZW50PC9hZG1pbk1vZHVsZUJhY2t1cD4KKworPGFkbWluTW9kdWxlTERBUD5sZGFwQWRtaW48L2FkbWluTW9kdWxlTERBUD4KKworPGFkbWluTW9kdWxlU2VydmVycz5zZXJ2ZXJzQWRtaW48L2FkbWluTW9kdWxlU2VydmVycz4KKzwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgTW9kZXJhdG9yIE1vZHVsZXMKKyAtLT4KKworPG1vZGVyYXRvck1vZHVsZVVzZXI+dXNlck1vZGVyYXRlPC9tb2RlcmF0b3JNb2R1bGVVc2VyPgorCis8bW9kZXJhdG9yTW9kdWxlUm9vbT5yb29tTW9kZXJhdGU8L21vZGVyYXRvck1vZHVsZVJvb20+CisKKworPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAgICBEYXNoYm9hcmQgTW9kdWxlcworIC0tPgorCis8ZGFzaGJvYXJkTW9kdWxlU3RhcnRTY3JlZW4+bWFpbkRhc2hib2FyZDwvZGFzaGJvYXJkTW9kdWxlU3RhcnRTY3JlZW4+CisKKzxkYXNoYm9hcmRNb2R1bGVDYWxlbmRhcj5sekNhbGVuZGFyPC9kYXNoYm9hcmRNb2R1bGVDYWxlbmRhcj4KKworCis8IS0tIENvbmZlcmVuY2UgUm9vbSBNb2R1bGVzIC0tPgorCis8Y29uZmVyZW5jZU1vZHVsZVJvb21MaXN0PmFsbG1lZXRpbmdzPC9jb25mZXJlbmNlTW9kdWxlUm9vbUxpc3Q+CisKKworPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAgICBDb25mZXJlbmNlIFJvb20KKyAgICAKKyAgICBSb29tIExheW91dCdzOiBmbGV4aWJsZUNvbmZlcmVuY2VSb29tLGNvbmZlcmVuY2VWaWV3CisgLS0+CisKKzxjb25mZXJlbmNlUm9vbU1vZHVsZT5mbGV4aWJsZUNvbmZlcmVuY2VSb29tPC9jb25mZXJlbmNlUm9vbU1vZHVsZT4KKworPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAgICBFdmVudCBSb29tCisgICAgCisgICAgUm9vbSBMYXlvdXRzOiBmbGV4aWJsZVJlc3RyaWN0ZWRDb25mZXJlbmNlUm9vbSxyZXN0cmljdGVkQ29uZmVyZW5jZVJvb20KKyAtLT4KKzxyZXN0cmljdGVkUm9vbU1vZHVsZT5yZXN0cmljdGVkQ29uZmVyZW5jZVJvb208L3Jlc3RyaWN0ZWRSb29tTW9kdWxlPgorCis8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICAgIEludGVydmlldyBSb29tCisgICAgCisgICAgUm9vbSBMYXlvdXRzOiBpbnRlcnZpZXdDb25mZXJlbmNlUm9vbQorIC0tPgorPGludGVydmlld1Jvb21Nb2R1bGU+aW50ZXJ2aWV3Q29uZmVyZW5jZVJvb208L2ludGVydmlld1Jvb21Nb2R1bGU+CisKKzwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgRXZlbnQgUm9vbSBNb2R1bGVzCisgLS0+CisKKzxyZWNvcmRNb2R1bGU+bHpSZWNvcmRDb250ZW50PC9yZWNvcmRNb2R1bGU+CisKKzwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgUHJvZmlsZXMgUGFuZWwgTW9kdWxlcworIC0tPgorCis8dXNlclNldHRpbmdzTW9kdWxlPnVzZXJTZXR0aW5nczwvdXNlclNldHRpbmdzTW9kdWxlPgorICAgICAgICAKKzwvY29uZmlnPgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9vcGVubWVldGluZ3MvY29uZmlnLnhzZCBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2NvbmZpZy54c2QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2E5NGQ5NAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2NvbmZpZy54c2QKQEAgLTAsMCArMSwxOTYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPCEtLQ0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAgDQorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICAgIAkgIA0KKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICB1bmRlciB0aGUgTGljZW5zZS4NCisgIA0KKy0tPg0KKzx4czpzY2hlbWEgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCI+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJjb25maWciPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOnNlcXVlbmNlPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJydG1waG9zdGxvY2FsIi8+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imh0dHBob3N0bG9jYWwiLz4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0icnRtcHBvcnQiLz4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0icnRtcFR1bm5lbHBvcnQiLz4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0icnRtcHNzbHBvcnQiLz4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0idXNlU1NMIi8+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJlZDVodHRwcG9ydCIvPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwcm90b2NvbCIvPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwcm94eVR5cGUiLz4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0iY3VycmVudGFwcG5hbWUiLz4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0iY3VycmVudGFwcG5hbWV1cmwiLz4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0iYXBwZGlzcGxheSIvPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjdXJyZW50YXBwbmFtZWJ1Z3VybCIvPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsb3VkbmVzc0FjaXR2aWF0aW9uIi8+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9IndlYkFwcFJvb3RLZXkiLz4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0iaHR0cFJvb3RLZXkiLz4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2hvd1dpbmRvd0VmZmVjdCIvPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJzaG93UmVjb3JkaW5nIi8+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImZpcnN0ZGF5aW53ZWVrIi8+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvZGVjVHlwZSIvPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJmcmFtZXNQZXJTZWNvbmQiLz4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0iYmFuZHdpZHRoTmVlZGVkTm9ybWFsIi8+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImJhbmR3aWR0aE5lZWRlZEJlc3QiLz4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0iY2FtUXVhbGl0eU5vcm1hbCIvPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjYW1RdWFsaXR5QmVzdCIvPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtaWNyb3Bob25lUmF0ZUJlc3QiLz4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0iZWNob1BhdGgiIC8+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImVjaG9TdXBwcmVzc2lvbiIgLz4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0iZGVmYXVsdFdoaXRlYm9hcmRXaWR0aCIvPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJkZWZhdWx0V2hpdGVib2FyZEhlaWdodCIvPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhdmFpbGFibGVDYW1lcmFSZXNvbHV0aW9ucyIvPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZG1pbk1vZHVsZVVzZXIiLz4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0iYWRtaW5Nb2R1bGVSb29tIi8+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFkbWluTW9kdWxlT3JnIi8+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFkbWluTW9kdWxlTGFuZ3VhZ2VzIi8+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFkbWluTW9kdWxlQ29ubmVjdGlvbnMiLz4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0iYWRtaW5Nb2R1bGVDb25maWd1cmF0aW9uIi8+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFkbWluTW9kdWxlQmFja3VwIi8+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImFkbWluTW9kdWxlTERBUCIvPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJhZG1pbk1vZHVsZVNlcnZlcnMiLz4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0ibW9kZXJhdG9yTW9kdWxlVXNlciIvPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtb2RlcmF0b3JNb2R1bGVSb29tIi8+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImRhc2hib2FyZE1vZHVsZVN0YXJ0U2NyZWVuIi8+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImRhc2hib2FyZE1vZHVsZUNhbGVuZGFyIi8+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9ImNvbmZlcmVuY2VNb2R1bGVSb29tTGlzdCIvPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb25mZXJlbmNlUm9vbU1vZHVsZSIvPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJyZXN0cmljdGVkUm9vbU1vZHVsZSIvPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJpbnRlcnZpZXdSb29tTW9kdWxlIi8+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9InJlY29yZE1vZHVsZSIvPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJ1c2VyU2V0dGluZ3NNb2R1bGUiLz4NCisgICAgICA8L3hzOnNlcXVlbmNlPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0icnRtcGhvc3Rsb2NhbCI+DQorICAJPHhzOmFubm90YXRpb24+DQorICAgIAk8eHM6ZG9jdW1lbnRhdGlvbj4NCisgICAgCQlVUkwvSVAgdG8gdXNlIGZvciB0aGUgU2VydmVyIGZvciBSVE1QIGFuZCBSVE1QVCB0cmFmZmljLg0KKwkJICAgIElmIHRoaXMgdmFsdWUgaXMgZW1wdHkgaXQgd2lsbCB0cnkgdG8gY29ubmVjdCB0byB0aGUgDQorCQkgICAgZG9tYWluLW5hbWUgdGhlIE9wZW5NZWV0aW5ncy1DbGllbnQgaGFzIGJlZW4gbG9hZGluZyBmcm9tDQorCQkgICAgDQorCQkgICAgQ2FuIGJlIGVpdGhlciBhbmQgSVAgb3IgYSBkb21haW4gbmFtZS4gDQorCQkgICAgRm9yIGV4YW1wbGU6IA0KKwkJICAgIDE5Mi4xNjguMjU0LjE4Mg0KKwkJICAgIG9yDQorCQkgICAgbXlzdWJkb21haW4uc3RyZWFtaW5nLnRvDQorICAgIAk8L3hzOmRvY3VtZW50YXRpb24+DQorICAgIDwveHM6YW5ub3RhdGlvbj4NCisgICAgPHhzOmNvbXBsZXhUeXBlLz4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9Imh0dHBob3N0bG9jYWwiPg0KKyAgICA8eHM6YW5ub3RhdGlvbj4NCisgICAgCTx4czpkb2N1bWVudGF0aW9uPg0KKyAgICAJCVVSTC9JUCB0byB1c2UgZm9yIHRoZSBTZXJ2ZXIgZm9yIEhUVFAgYW5kIEhUVFBTIHRyYWZmaWMuDQorCQkgICAgSWYgdGhpcyB2YWx1ZSBpcyBlbXB0eSBpdCB3aWxsIHVzZSB0aGUgcnRtcGhvc3Rsb2NhbCANCisJCSAgICB2YXJpYWJsZSAoYW5kIGluIHRoYXQgd2F5IHRyeSB0byBjb25uZWN0IHRvIHRoZSANCisJCSAgICBkb21haW4tbmFtZSB0aGUgT3Blbk1lZXRpbmdzLUNsaWVudCBoYXMgYmVlbiBsb2FkaW5nIGZyb20pDQorICAgIAk8L3hzOmRvY3VtZW50YXRpb24+DQorICAgIDwveHM6YW5ub3RhdGlvbj4NCisgICAgPHhzOmNvbXBsZXhUeXBlLz4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9InJ0bXBwb3J0IiB0eXBlPSJ4czppbnRlZ2VyIi8+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJydG1wVHVubmVscG9ydCIgdHlwZT0ieHM6aW50ZWdlciIvPg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0icnRtcHNzbHBvcnQiIHR5cGU9InhzOmludGVnZXIiLz4NCisgIDx4czplbGVtZW50IG5hbWU9InVzZVNTTCIgdHlwZT0ieHM6TkNOYW1lIi8+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJyZWQ1aHR0cHBvcnQiIHR5cGU9InhzOmludGVnZXIiLz4NCisgIDx4czplbGVtZW50IG5hbWU9InByb3RvY29sIiB0eXBlPSJ4czpOQ05hbWUiLz4NCisgIDx4czplbGVtZW50IG5hbWU9InByb3h5VHlwZSIgdHlwZT0ieHM6TkNOYW1lIi8+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJjdXJyZW50YXBwbmFtZSIgdHlwZT0ieHM6c3RyaW5nIi8+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJjdXJyZW50YXBwbmFtZXVybCIgdHlwZT0ieHM6YW55VVJJIi8+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJhcHBkaXNwbGF5Ij4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czpzZXF1ZW5jZT4NCisgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0iMiIgbWluT2NjdXJzPSIyIiByZWY9ImRpc3BsYXllbGVtZW50Ii8+DQorICAgICAgPC94czpzZXF1ZW5jZT4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9ImRpc3BsYXllbGVtZW50Ij4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6c3RyaW5nIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkaXNwbGF5IiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czpib29sZWFuIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ4IiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czppbnRlZ2VyIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ5IiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czppbnRlZ2VyIi8+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJjdXJyZW50YXBwbmFtZWJ1Z3VybCIgdHlwZT0ieHM6YW55VVJJIi8+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJsb3VkbmVzc0FjaXR2aWF0aW9uIiB0eXBlPSJ4czppbnRlZ2VyIi8+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJ3ZWJBcHBSb290S2V5IiB0eXBlPSJ4czpOQ05hbWUiLz4NCisgIDx4czplbGVtZW50IG5hbWU9Imh0dHBSb290S2V5IiB0eXBlPSJ4czpzdHJpbmciLz4NCisgIDx4czplbGVtZW50IG5hbWU9InNob3dXaW5kb3dFZmZlY3QiIHR5cGU9InhzOk5DTmFtZSIvPg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0ic2hvd1JlY29yZGluZyIgdHlwZT0ieHM6TkNOYW1lIi8+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJmaXJzdGRheWlud2VlayIgdHlwZT0ieHM6aW50ZWdlciIvPg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0iY29kZWNUeXBlIiB0eXBlPSJ4czpzdHJpbmciLz4NCisgIDx4czplbGVtZW50IG5hbWU9ImZyYW1lc1BlclNlY29uZCIgdHlwZT0ieHM6aW50ZWdlciIvPg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0iYmFuZHdpZHRoTmVlZGVkTm9ybWFsIiB0eXBlPSJ4czppbnRlZ2VyIi8+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJiYW5kd2lkdGhOZWVkZWRCZXN0IiB0eXBlPSJ4czppbnRlZ2VyIi8+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJjYW1RdWFsaXR5Tm9ybWFsIiB0eXBlPSJ4czppbnRlZ2VyIi8+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJjYW1RdWFsaXR5QmVzdCIgdHlwZT0ieHM6aW50ZWdlciIvPg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0ibWljcm9waG9uZVJhdGVCZXN0IiB0eXBlPSJ4czppbnRlZ2VyIi8+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJlY2hvU3VwcHJlc3Npb24iIHR5cGU9InhzOnN0cmluZyIvPg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0iZWNob1BhdGgiPg0KKyAgICA8eHM6YW5ub3RhdGlvbj4NCisgICAgICAgIDx4czpkb2N1bWVudGF0aW9uPg0KKyAgICAgICAgICAgIEFFQyBjb25maWd1cmF0aW9uIHZhbHVlIC0gDQorCQkJU3BlY2lmaWVzIHRoZSBlY2hvIHBhdGggbGVuZ3RoIChpbiBtaWxsaXNlY29uZHMpLiBBIGxvbmdlciBlY2hvIHBhdGggbWVhbnMgYmV0dGVyIA0KKwkJCWVjaG8gY2FuY2VsbGF0aW9uIGJ1dCBhbHNvIGludHJvZHVjZXMgbG9uZ2VyIGRlbGF5cyBhbmQgcmVxdWlyZXMgbW9yZSBwcm9jZXNzaW5nIHBvd2VyLiANCisJCQlUaGUgZGVmYXVsdCB2YWx1ZSBpcyAxMjg7IHRoZSBvbmx5IG90aGVyIHBvc3NpYmxlIHZhbHVlIGlzIDI1Ni4NCisgICAgICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4NCisgICAgPC94czphbm5vdGF0aW9uPg0KKyAgICA8eHM6c2ltcGxlVHlwZT4NCisgICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czppbnQiPg0KKyAgICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iMTI4IiAvPg0KKyAgICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iMjU2IiAvPg0KKyAgICAgICAgPC94czpyZXN0cmljdGlvbj4NCisgICAgPC94czpzaW1wbGVUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0iZGVmYXVsdFdoaXRlYm9hcmRXaWR0aCIgdHlwZT0ieHM6aW50ZWdlciIvPg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0iZGVmYXVsdFdoaXRlYm9hcmRIZWlnaHQiIHR5cGU9InhzOmludGVnZXIiLz4NCisgIDx4czplbGVtZW50IG5hbWU9ImF2YWlsYWJsZUNhbWVyYVJlc29sdXRpb25zIj4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czpzZXF1ZW5jZT4NCisgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlc29sdXRpb24iLz4NCisgICAgICA8L3hzOnNlcXVlbmNlPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0icmVzb2x1dGlvbiI+DQorICAgIDx4czpjb21wbGV4VHlwZT4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImhlaWdodCIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6aW50ZWdlciIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNEZWZhdWx0IiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czpib29sZWFuIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0eXBlIiB1c2U9InJlcXVpcmVkIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ3aWR0aCIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6aW50ZWdlciIvPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0iYWRtaW5Nb2R1bGVVc2VyIiB0eXBlPSJ4czpOQ05hbWUiLz4NCisgIDx4czplbGVtZW50IG5hbWU9ImFkbWluTW9kdWxlUm9vbSIgdHlwZT0ieHM6TkNOYW1lIi8+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJhZG1pbk1vZHVsZU9yZyIgdHlwZT0ieHM6TkNOYW1lIi8+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJhZG1pbk1vZHVsZUxhbmd1YWdlcyIgdHlwZT0ieHM6TkNOYW1lIi8+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJhZG1pbk1vZHVsZUNvbm5lY3Rpb25zIiB0eXBlPSJ4czpOQ05hbWUiLz4NCisgIDx4czplbGVtZW50IG5hbWU9ImFkbWluTW9kdWxlQ29uZmlndXJhdGlvbiIgdHlwZT0ieHM6TkNOYW1lIi8+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJhZG1pbk1vZHVsZUJhY2t1cCIgdHlwZT0ieHM6TkNOYW1lIi8+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJhZG1pbk1vZHVsZUxEQVAiIHR5cGU9InhzOk5DTmFtZSIvPg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0iYWRtaW5Nb2R1bGVTZXJ2ZXJzIiB0eXBlPSJ4czpOQ05hbWUiLz4NCisgIDx4czplbGVtZW50IG5hbWU9Im1vZGVyYXRvck1vZHVsZVVzZXIiIHR5cGU9InhzOk5DTmFtZSIvPg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0ibW9kZXJhdG9yTW9kdWxlUm9vbSIgdHlwZT0ieHM6TkNOYW1lIi8+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJkYXNoYm9hcmRNb2R1bGVTdGFydFNjcmVlbiIgdHlwZT0ieHM6TkNOYW1lIi8+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJkYXNoYm9hcmRNb2R1bGVDYWxlbmRhciIgdHlwZT0ieHM6TkNOYW1lIi8+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJjb25mZXJlbmNlTW9kdWxlUm9vbUxpc3QiIHR5cGU9InhzOk5DTmFtZSIvPg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0iY29uZmVyZW5jZVJvb21Nb2R1bGUiIHR5cGU9InhzOk5DTmFtZSIvPg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0icmVzdHJpY3RlZFJvb21Nb2R1bGUiIHR5cGU9InhzOk5DTmFtZSIvPg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0iaW50ZXJ2aWV3Um9vbU1vZHVsZSIgdHlwZT0ieHM6TkNOYW1lIi8+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJyZWNvcmRNb2R1bGUiIHR5cGU9InhzOk5DTmFtZSIvPg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0idXNlclNldHRpbmdzTW9kdWxlIiB0eXBlPSJ4czpOQ05hbWUiLz4NCis8L3hzOnNjaGVtYT4NCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9jc3MvZnVsbGNhbGVuZGFyLmNzcyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9mdWxsY2FsZW5kYXIuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmMDJiYTQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9jc3MvZnVsbGNhbGVuZGFyLmNzcwpAQCAtMCwwICsxLDYxOCBAQAorLyoKKyAqIEZ1bGxDYWxlbmRhciB2MS41LjQgU3R5bGVzaGVldAorICoKKyAqIENvcHlyaWdodCAoYykgMjAxMSBBZGFtIFNoYXcKKyAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBhbmQgR1BMIGxpY2Vuc2VzLCBsb2NhdGVkIGluCisgKiBNSVQtTElDRU5TRS50eHQgYW5kIEdQTC1MSUNFTlNFLnR4dCByZXNwZWN0aXZlbHkuCisgKgorICogRGF0ZTogVHVlIFNlcCA0IDIzOjM4OjMzIDIwMTIgLTA3MDAKKyAqCisgKi8KKworCisuZmMgeworCWRpcmVjdGlvbjogbHRyOworCXRleHQtYWxpZ246IGxlZnQ7CisJfQorCQorLmZjIHRhYmxlIHsKKwlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOworCWJvcmRlci1zcGFjaW5nOiAwOworCX0KKwkKK2h0bWwgLmZjLAorLmZjIHRhYmxlIHsKKwlmb250LXNpemU6IDFlbTsKKwl9CisJCisuZmMgdGQsCisuZmMgdGggeworCXBhZGRpbmc6IDA7CisJdmVydGljYWwtYWxpZ246IHRvcDsKKwl9CisKKworCisvKiBIZWFkZXIKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKy5mYy1oZWFkZXIgdGQgeworCXdoaXRlLXNwYWNlOiBub3dyYXA7CisJfQorCisuZmMtaGVhZGVyLWxlZnQgeworCXdpZHRoOiAyNSU7CisJdGV4dC1hbGlnbjogbGVmdDsKKwl9CisJCisuZmMtaGVhZGVyLWNlbnRlciB7CisJdGV4dC1hbGlnbjogY2VudGVyOworCX0KKwkKKy5mYy1oZWFkZXItcmlnaHQgeworCXdpZHRoOiAyNSU7CisJdGV4dC1hbGlnbjogcmlnaHQ7CisJfQorCQorLmZjLWhlYWRlci10aXRsZSB7CisJZGlzcGxheTogaW5saW5lLWJsb2NrOworCXZlcnRpY2FsLWFsaWduOiB0b3A7CisJfQorCQorLmZjLWhlYWRlci10aXRsZSBoMiB7CisJbWFyZ2luLXRvcDogMDsKKwl3aGl0ZS1zcGFjZTogbm93cmFwOworCX0KKwkKKy5mYyAuZmMtaGVhZGVyLXNwYWNlIHsKKwlwYWRkaW5nLWxlZnQ6IDEwcHg7CisJfQorCQorLmZjLWhlYWRlciAuZmMtYnV0dG9uIHsKKwltYXJnaW4tYm90dG9tOiAxZW07CisJdmVydGljYWwtYWxpZ246IHRvcDsKKwl9CisJCisvKiBidXR0b25zIGVkZ2VzIGJ1dHRpbmcgdG9nZXRoZXIgKi8KKworLmZjLWhlYWRlciAuZmMtYnV0dG9uIHsKKwltYXJnaW4tcmlnaHQ6IC0xcHg7CisJfQorCQorLmZjLWhlYWRlciAuZmMtY29ybmVyLXJpZ2h0IHsKKwltYXJnaW4tcmlnaHQ6IDFweDsgLyogYmFjayB0byBub3JtYWwgKi8KKwl9CisJCisuZmMtaGVhZGVyIC51aS1jb3JuZXItcmlnaHQgeworCW1hcmdpbi1yaWdodDogMDsgLyogYmFjayB0byBub3JtYWwgKi8KKwl9CisJCisvKiBidXR0b24gbGF5ZXJpbmcgKGZvciBib3JkZXIgcHJlY2VkZW5jZSkgKi8KKwkKKy5mYy1oZWFkZXIgLmZjLXN0YXRlLWhvdmVyLAorLmZjLWhlYWRlciAudWktc3RhdGUtaG92ZXIgeworCXotaW5kZXg6IDI7CisJfQorCQorLmZjLWhlYWRlciAuZmMtc3RhdGUtZG93biB7CisJei1pbmRleDogMzsKKwl9CisKKy5mYy1oZWFkZXIgLmZjLXN0YXRlLWFjdGl2ZSwKKy5mYy1oZWFkZXIgLnVpLXN0YXRlLWFjdGl2ZSB7CisJei1pbmRleDogNDsKKwl9CisJCisJCisJCisvKiBDb250ZW50CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCQorLmZjLWNvbnRlbnQgeworCWNsZWFyOiBib3RoOworCX0KKwkKKy5mYy12aWV3IHsKKwl3aWR0aDogMTAwJTsgLyogbmVlZGVkIGZvciB2aWV3IHN3aXRjaGluZyAod2hlbiB2aWV3IGlzIGFic29sdXRlKSAqLworCW92ZXJmbG93OiBoaWRkZW47CisJfQorCQorCQorCisvKiBDZWxsIFN0eWxlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLmZjLXdpZGdldC1oZWFkZXIsICAgIC8qIDx0aD4sIHVzdWFsbHkgKi8KKy5mYy13aWRnZXQtY29udGVudCB7ICAvKiA8dGQ+LCB1c3VhbGx5ICovCisJYm9yZGVyOiAxcHggc29saWQgI2NjYzsKKwl9CisJCisuZmMtc3RhdGUtaGlnaGxpZ2h0IHsgLyogPHRkPiB0b2RheSBjZWxsICovIC8qIFRPRE86IGFkZCAuZmMtdG9kYXkgdG8gPHRoPiAqLworCWJhY2tncm91bmQ6ICNmZmM7CisJfQorCQorLmZjLWNlbGwtb3ZlcmxheSB7IC8qIHNlbWktdHJhbnNwYXJlbnQgcmVjdGFuZ2xlIHdoaWxlIGRyYWdnaW5nICovCisJYmFja2dyb3VuZDogIzljZjsKKwlvcGFjaXR5OiAuMjsKKwlmaWx0ZXI6IGFscGhhKG9wYWNpdHk9MjApOyAvKiBmb3IgSUUgKi8KKwl9CisJCisKKworLyogQnV0dG9ucworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLmZjLWJ1dHRvbiB7CisJcG9zaXRpb246IHJlbGF0aXZlOworCWRpc3BsYXk6IGlubGluZS1ibG9jazsKKwljdXJzb3I6IHBvaW50ZXI7CisJfQorCQorLmZjLXN0YXRlLWRlZmF1bHQgeyAvKiBub24tdGhlbWUgKi8KKwlib3JkZXItc3R5bGU6IHNvbGlkOworCWJvcmRlci13aWR0aDogMXB4IDA7CisJfQorCQorLmZjLWJ1dHRvbi1pbm5lciB7CisJcG9zaXRpb246IHJlbGF0aXZlOworCWZsb2F0OiBsZWZ0OworCW92ZXJmbG93OiBoaWRkZW47CisJfQorCQorLmZjLXN0YXRlLWRlZmF1bHQgLmZjLWJ1dHRvbi1pbm5lciB7IC8qIG5vbi10aGVtZSAqLworCWJvcmRlci1zdHlsZTogc29saWQ7CisJYm9yZGVyLXdpZHRoOiAwIDFweDsKKwl9CisJCisuZmMtYnV0dG9uLWNvbnRlbnQgeworCXBvc2l0aW9uOiByZWxhdGl2ZTsKKwlmbG9hdDogbGVmdDsKKwloZWlnaHQ6IDEuOWVtOworCWxpbmUtaGVpZ2h0OiAxLjllbTsKKwlwYWRkaW5nOiAwIC42ZW07CisJd2hpdGUtc3BhY2U6IG5vd3JhcDsKKwl9CisJCisvKiBpY29uIChmb3IganF1ZXJ5IHVpKSAqLworCQorLmZjLWJ1dHRvbi1jb250ZW50IC5mYy1pY29uLXdyYXAgeworCXBvc2l0aW9uOiByZWxhdGl2ZTsKKwlmbG9hdDogbGVmdDsKKwl0b3A6IDUwJTsKKwl9CisJCisuZmMtYnV0dG9uLWNvbnRlbnQgLnVpLWljb24geworCXBvc2l0aW9uOiByZWxhdGl2ZTsKKwlmbG9hdDogbGVmdDsKKwltYXJnaW4tdG9wOiAtNTAlOworCSptYXJnaW4tdG9wOiAwOworCSp0b3A6IC01MCU7CisJfQorCQorLyogZ2xvc3MgZWZmZWN0ICovCisJCisuZmMtc3RhdGUtZGVmYXVsdCAuZmMtYnV0dG9uLWVmZmVjdCB7CisJcG9zaXRpb246IGFic29sdXRlOworCXRvcDogNTAlOworCWxlZnQ6IDA7CisJfQorCQorLmZjLXN0YXRlLWRlZmF1bHQgLmZjLWJ1dHRvbi1lZmZlY3Qgc3BhbiB7CisJcG9zaXRpb246IGFic29sdXRlOworCXRvcDogLTEwMHB4OworCWxlZnQ6IDA7CisJd2lkdGg6IDUwMHB4OworCWhlaWdodDogMTAwcHg7CisJYm9yZGVyLXdpZHRoOiAxMDBweCAwIDAgMXB4OworCWJvcmRlci1zdHlsZTogc29saWQ7CisJYm9yZGVyLWNvbG9yOiAjZmZmOworCWJhY2tncm91bmQ6ICM0NDQ7CisJb3BhY2l0eTogLjA5OworCWZpbHRlcjogYWxwaGEob3BhY2l0eT05KTsKKwl9CisJCisvKiBidXR0b24gc3RhdGVzIChkZXRlcm1pbmVzIGNvbG9ycykgICovCisJCisuZmMtc3RhdGUtZGVmYXVsdCwKKy5mYy1zdGF0ZS1kZWZhdWx0IC5mYy1idXR0b24taW5uZXIgeworCWJvcmRlci1zdHlsZTogc29saWQ7CisJYm9yZGVyLWNvbG9yOiAjY2NjICNiYmIgI2FhYTsKKwliYWNrZ3JvdW5kOiAjRjNGM0YzOworCWNvbG9yOiAjMDAwOworCX0KKwkKKy5mYy1zdGF0ZS1ob3ZlciwKKy5mYy1zdGF0ZS1ob3ZlciAuZmMtYnV0dG9uLWlubmVyIHsKKwlib3JkZXItY29sb3I6ICM5OTk7CisJfQorCQorLmZjLXN0YXRlLWRvd24sCisuZmMtc3RhdGUtZG93biAuZmMtYnV0dG9uLWlubmVyIHsKKwlib3JkZXItY29sb3I6ICM1NTU7CisJYmFja2dyb3VuZDogIzc3NzsKKwl9CisJCisuZmMtc3RhdGUtYWN0aXZlLAorLmZjLXN0YXRlLWFjdGl2ZSAuZmMtYnV0dG9uLWlubmVyIHsKKwlib3JkZXItY29sb3I6ICM1NTU7CisJYmFja2dyb3VuZDogIzc3NzsKKwljb2xvcjogI2ZmZjsKKwl9CisJCisuZmMtc3RhdGUtZGlzYWJsZWQsCisuZmMtc3RhdGUtZGlzYWJsZWQgLmZjLWJ1dHRvbi1pbm5lciB7CisJY29sb3I6ICM5OTk7CisJYm9yZGVyLWNvbG9yOiAjZGRkOworCX0KKwkKKy5mYy1zdGF0ZS1kaXNhYmxlZCB7CisJY3Vyc29yOiBkZWZhdWx0OworCX0KKwkKKy5mYy1zdGF0ZS1kaXNhYmxlZCAuZmMtYnV0dG9uLWVmZmVjdCB7CisJZGlzcGxheTogbm9uZTsKKwl9CisJCisJCisKKy8qIEdsb2JhbCBFdmVudCBTdHlsZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisJIAorLmZjLWV2ZW50IHsKKwlib3JkZXItc3R5bGU6IHNvbGlkOworCWJvcmRlci13aWR0aDogMDsKKwlmb250LXNpemU6IC44NWVtOworCWN1cnNvcjogZGVmYXVsdDsKKwl9CisJCithLmZjLWV2ZW50LAorLmZjLWV2ZW50LWRyYWdnYWJsZSB7CisJY3Vyc29yOiBwb2ludGVyOworCX0KKwkKK2EuZmMtZXZlbnQgeworCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKKwl9CisJCisuZmMtcnRsIC5mYy1ldmVudCB7CisJdGV4dC1hbGlnbjogcmlnaHQ7CisJfQorCQorLmZjLWV2ZW50LXNraW4geworCWJvcmRlci1jb2xvcjogIzM2YzsgICAgIC8qIGRlZmF1bHQgQk9SREVSIGNvbG9yICovCisJYmFja2dyb3VuZC1jb2xvcjogIzM2YzsgLyogZGVmYXVsdCBCQUNLR1JPVU5EIGNvbG9yICovCisJY29sb3I6ICNmZmY7ICAgICAgICAgICAgLyogZGVmYXVsdCBURVhUIGNvbG9yICovCisJfQorCQorLmZjLWV2ZW50LWlubmVyIHsKKwlwb3NpdGlvbjogcmVsYXRpdmU7CisJd2lkdGg6IDEwMCU7CisJaGVpZ2h0OiAxMDAlOworCWJvcmRlci1zdHlsZTogc29saWQ7CisJYm9yZGVyLXdpZHRoOiAwOworCW92ZXJmbG93OiBoaWRkZW47CisJfQorCQorLmZjLWV2ZW50LXRpbWUsCisuZmMtZXZlbnQtdGl0bGUgeworCXBhZGRpbmc6IDAgMXB4OworCX0KKwkKKy5mYyAudWktcmVzaXphYmxlLWhhbmRsZSB7IC8qKiogVE9ETzogZG9uJ3QgdXNlIHVpLXJlc2l6YWJsZSBhbnltb3JlLCBjaGFuZ2UgY2xhc3MgKioqLworCWRpc3BsYXk6IGJsb2NrOworCXBvc2l0aW9uOiBhYnNvbHV0ZTsKKwl6LWluZGV4OiA5OTk5OTsKKwlvdmVyZmxvdzogaGlkZGVuOyAvKiBoYWNreSBzcGFjZXMgKElFNi83KSAqLworCWZvbnQtc2l6ZTogMzAwJTsgIC8qICovCisJbGluZS1oZWlnaHQ6IDUwJTsgLyogKi8KKwl9CisJCisJCisJCisvKiBIb3Jpem9udGFsIEV2ZW50cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLmZjLWV2ZW50LWhvcmkgeworCWJvcmRlci13aWR0aDogMXB4IDA7CisJbWFyZ2luLWJvdHRvbTogMXB4OworCX0KKwkKKy8qIHJlc2l6YWJsZSAqLworCQorLmZjLWV2ZW50LWhvcmkgLnVpLXJlc2l6YWJsZS1lIHsKKwl0b3A6IDAgICAgICAgICAgICFpbXBvcnRhbnQ7IC8qIGltcG9ydGFudHMgb3ZlcnJpZGUgcHJlIGpxdWVyeSB1aSAxLjcgc3R5bGVzICovCisJcmlnaHQ6IC0zcHggICAgICAhaW1wb3J0YW50OworCXdpZHRoOiA3cHggICAgICAgIWltcG9ydGFudDsKKwloZWlnaHQ6IDEwMCUgICAgICFpbXBvcnRhbnQ7CisJY3Vyc29yOiBlLXJlc2l6ZTsKKwl9CisJCisuZmMtZXZlbnQtaG9yaSAudWktcmVzaXphYmxlLXcgeworCXRvcDogMCAgICAgICAgICAgIWltcG9ydGFudDsKKwlsZWZ0OiAtM3B4ICAgICAgICFpbXBvcnRhbnQ7CisJd2lkdGg6IDdweCAgICAgICAhaW1wb3J0YW50OworCWhlaWdodDogMTAwJSAgICAgIWltcG9ydGFudDsKKwljdXJzb3I6IHctcmVzaXplOworCX0KKwkKKy5mYy1ldmVudC1ob3JpIC51aS1yZXNpemFibGUtaGFuZGxlIHsKKwlfcGFkZGluZy1ib3R0b206IDE0cHg7IC8qIElFNiBoYWQgMCBoZWlnaHQgKi8KKwl9CisJCisJCisJCisvKiBGYWtlIFJvdW5kZWQgQ29ybmVycyAoZm9yIGJ1dHRvbnMgYW5kIGV2ZW50cykKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisJCisuZmMtY29ybmVyLWxlZnQgeworCW1hcmdpbi1sZWZ0OiAxcHg7CisJfQorCQorLmZjLWNvcm5lci1sZWZ0IC5mYy1idXR0b24taW5uZXIsCisuZmMtY29ybmVyLWxlZnQgLmZjLWV2ZW50LWlubmVyIHsKKwltYXJnaW4tbGVmdDogLTFweDsKKwl9CisJCisuZmMtY29ybmVyLXJpZ2h0IHsKKwltYXJnaW4tcmlnaHQ6IDFweDsKKwl9CisJCisuZmMtY29ybmVyLXJpZ2h0IC5mYy1idXR0b24taW5uZXIsCisuZmMtY29ybmVyLXJpZ2h0IC5mYy1ldmVudC1pbm5lciB7CisJbWFyZ2luLXJpZ2h0OiAtMXB4OworCX0KKwkKKy5mYy1jb3JuZXItdG9wIHsKKwltYXJnaW4tdG9wOiAxcHg7CisJfQorCQorLmZjLWNvcm5lci10b3AgLmZjLWV2ZW50LWlubmVyIHsKKwltYXJnaW4tdG9wOiAtMXB4OworCX0KKwkKKy5mYy1jb3JuZXItYm90dG9tIHsKKwltYXJnaW4tYm90dG9tOiAxcHg7CisJfQorCQorLmZjLWNvcm5lci1ib3R0b20gLmZjLWV2ZW50LWlubmVyIHsKKwltYXJnaW4tYm90dG9tOiAtMXB4OworCX0KKwkKKwkKKwkKKy8qIEZha2UgUm91bmRlZCBDb3JuZXJzIFNQRUNJRklDQUxMWSBGT1IgRVZFTlRTCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisJCisuZmMtY29ybmVyLWxlZnQgLmZjLWV2ZW50LWlubmVyIHsKKwlib3JkZXItbGVmdC13aWR0aDogMXB4OworCX0KKwkKKy5mYy1jb3JuZXItcmlnaHQgLmZjLWV2ZW50LWlubmVyIHsKKwlib3JkZXItcmlnaHQtd2lkdGg6IDFweDsKKwl9CisJCisuZmMtY29ybmVyLXRvcCAuZmMtZXZlbnQtaW5uZXIgeworCWJvcmRlci10b3Atd2lkdGg6IDFweDsKKwl9CisJCisuZmMtY29ybmVyLWJvdHRvbSAuZmMtZXZlbnQtaW5uZXIgeworCWJvcmRlci1ib3R0b20td2lkdGg6IDFweDsKKwl9CisJCisJCisJCisvKiBSZXVzYWJsZSBTZXBhcmF0ZS1ib3JkZXIgVGFibGUKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKK3RhYmxlLmZjLWJvcmRlci1zZXBhcmF0ZSB7CisJYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZTsKKwl9CisJCisuZmMtYm9yZGVyLXNlcGFyYXRlIHRoLAorLmZjLWJvcmRlci1zZXBhcmF0ZSB0ZCB7CisJYm9yZGVyLXdpZHRoOiAxcHggMCAwIDFweDsKKwl9CisJCisuZmMtYm9yZGVyLXNlcGFyYXRlIHRoLmZjLWxhc3QsCisuZmMtYm9yZGVyLXNlcGFyYXRlIHRkLmZjLWxhc3QgeworCWJvcmRlci1yaWdodC13aWR0aDogMXB4OworCX0KKwkKKy5mYy1ib3JkZXItc2VwYXJhdGUgdHIuZmMtbGFzdCB0aCwKKy5mYy1ib3JkZXItc2VwYXJhdGUgdHIuZmMtbGFzdCB0ZCB7CisJYm9yZGVyLWJvdHRvbS13aWR0aDogMXB4OworCX0KKwkKKy5mYy1ib3JkZXItc2VwYXJhdGUgdGJvZHkgdHIuZmMtZmlyc3QgdGQsCisuZmMtYm9yZGVyLXNlcGFyYXRlIHRib2R5IHRyLmZjLWZpcnN0IHRoIHsKKwlib3JkZXItdG9wLXdpZHRoOiAwOworCX0KKwkKKwkKKworLyogTW9udGggVmlldywgQmFzaWMgV2VlayBWaWV3LCBCYXNpYyBEYXkgVmlldworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLmZjLWdyaWQgdGggeworCXRleHQtYWxpZ246IGNlbnRlcjsKKwl9CisJCisuZmMtZ3JpZCAuZmMtZGF5LW51bWJlciB7CisJZmxvYXQ6IHJpZ2h0OworCXBhZGRpbmc6IDAgMnB4OworCX0KKwkKKy5mYy1ncmlkIC5mYy1vdGhlci1tb250aCAuZmMtZGF5LW51bWJlciB7CisJb3BhY2l0eTogMC4zOworCWZpbHRlcjogYWxwaGEob3BhY2l0eT0zMCk7IC8qIGZvciBJRSAqLworCS8qIG9wYWNpdHkgd2l0aCBzbWFsbCBmb250IGNhbiBzb21ldGltZXMgbG9vayB0b28gZmFkZWQKKwkgICBtaWdodCB3YW50IHRvIHNldCB0aGUgJ2NvbG9yJyBwcm9wZXJ0eSBpbnN0ZWFkCisJICAgbWFraW5nIGRheS1udW1iZXJzIGJvbGQgYWxzbyBmaXhlcyB0aGUgcHJvYmxlbSAqLworCX0KKwkKKy5mYy1ncmlkIC5mYy1kYXktY29udGVudCB7CisJY2xlYXI6IGJvdGg7CisJcGFkZGluZzogMnB4IDJweCAxcHg7IC8qIGRpc3RhbmNlIGJldHdlZW4gZXZlbnRzIGFuZCBkYXkgZWRnZXMgKi8KKwl9CisJCisvKiBldmVudCBzdHlsZXMgKi8KKwkKKy5mYy1ncmlkIC5mYy1ldmVudC10aW1lIHsKKwlmb250LXdlaWdodDogYm9sZDsKKwl9CisJCisvKiByaWdodC10by1sZWZ0ICovCisJCisuZmMtcnRsIC5mYy1ncmlkIC5mYy1kYXktbnVtYmVyIHsKKwlmbG9hdDogbGVmdDsKKwl9CisJCisuZmMtcnRsIC5mYy1ncmlkIC5mYy1ldmVudC10aW1lIHsKKwlmbG9hdDogcmlnaHQ7CisJfQorCQorCQorCisvKiBBZ2VuZGEgV2VlayBWaWV3LCBBZ2VuZGEgRGF5IFZpZXcKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKy5mYy1hZ2VuZGEgdGFibGUgeworCWJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7CisJfQorCQorLmZjLWFnZW5kYS1kYXlzIHRoIHsKKwl0ZXh0LWFsaWduOiBjZW50ZXI7CisJfQorCQorLmZjLWFnZW5kYSAuZmMtYWdlbmRhLWF4aXMgeworCXdpZHRoOiA1MHB4OworCXBhZGRpbmc6IDAgNHB4OworCXZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CisJdGV4dC1hbGlnbjogcmlnaHQ7CisJd2hpdGUtc3BhY2U6IG5vd3JhcDsKKwlmb250LXdlaWdodDogbm9ybWFsOworCX0KKwkKKy5mYy1hZ2VuZGEgLmZjLWRheS1jb250ZW50IHsKKwlwYWRkaW5nOiAycHggMnB4IDFweDsKKwl9CisJCisvKiBtYWtlIGF4aXMgYm9yZGVyIHRha2UgcHJlY2VkZW5jZSAqLworCQorLmZjLWFnZW5kYS1kYXlzIC5mYy1hZ2VuZGEtYXhpcyB7CisJYm9yZGVyLXJpZ2h0LXdpZHRoOiAxcHg7CisJfQorCQorLmZjLWFnZW5kYS1kYXlzIC5mYy1jb2wwIHsKKwlib3JkZXItbGVmdC13aWR0aDogMDsKKwl9CisJCisvKiBhbGwtZGF5IGFyZWEgKi8KKwkKKy5mYy1hZ2VuZGEtYWxsZGF5IHRoIHsKKwlib3JkZXItd2lkdGg6IDAgMXB4OworCX0KKwkKKy5mYy1hZ2VuZGEtYWxsZGF5IC5mYy1kYXktY29udGVudCB7CisJbWluLWhlaWdodDogMzRweDsgLyogVE9ETzogZG9lc250IHdvcmsgd2VsbCBpbiBxdWlya3Ntb2RlICovCisJX2hlaWdodDogMzRweDsKKwl9CisJCisvKiBkaXZpZGVyIChiZXR3ZWVuIGFsbC1kYXkgYW5kIHNsb3RzKSAqLworCQorLmZjLWFnZW5kYS1kaXZpZGVyLWlubmVyIHsKKwloZWlnaHQ6IDJweDsKKwlvdmVyZmxvdzogaGlkZGVuOworCX0KKwkKKy5mYy13aWRnZXQtaGVhZGVyIC5mYy1hZ2VuZGEtZGl2aWRlci1pbm5lciB7CisJYmFja2dyb3VuZDogI2VlZTsKKwl9CisJCisvKiBzbG90IHJvd3MgKi8KKwkKKy5mYy1hZ2VuZGEtc2xvdHMgdGggeworCWJvcmRlci13aWR0aDogMXB4IDFweCAwOworCX0KKwkKKy5mYy1hZ2VuZGEtc2xvdHMgdGQgeworCWJvcmRlci13aWR0aDogMXB4IDAgMDsKKwliYWNrZ3JvdW5kOiBub25lOworCX0KKwkKKy5mYy1hZ2VuZGEtc2xvdHMgdGQgZGl2IHsKKwloZWlnaHQ6IDIwcHg7CisJfQorCQorLmZjLWFnZW5kYS1zbG90cyB0ci5mYy1zbG90MCB0aCwKKy5mYy1hZ2VuZGEtc2xvdHMgdHIuZmMtc2xvdDAgdGQgeworCWJvcmRlci10b3Atd2lkdGg6IDA7CisJfQorCisuZmMtYWdlbmRhLXNsb3RzIHRyLmZjLW1pbm9yIHRoLAorLmZjLWFnZW5kYS1zbG90cyB0ci5mYy1taW5vciB0ZCB7CisJYm9yZGVyLXRvcC1zdHlsZTogZG90dGVkOworCX0KKwkKKy5mYy1hZ2VuZGEtc2xvdHMgdHIuZmMtbWlub3IgdGgudWktd2lkZ2V0LWhlYWRlciB7CisJKmJvcmRlci10b3Atc3R5bGU6IHNvbGlkOyAvKiBkb2Vzbid0IHdvcmsgd2l0aCBiYWNrZ3JvdW5kIGluIElFNi83ICovCisJfQorCQorCisKKy8qIFZlcnRpY2FsIEV2ZW50cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLmZjLWV2ZW50LXZlcnQgeworCWJvcmRlci13aWR0aDogMCAxcHg7CisJfQorCQorLmZjLWV2ZW50LXZlcnQgLmZjLWV2ZW50LWhlYWQsCisuZmMtZXZlbnQtdmVydCAuZmMtZXZlbnQtY29udGVudCB7CisJcG9zaXRpb246IHJlbGF0aXZlOworCXotaW5kZXg6IDI7CisJd2lkdGg6IDEwMCU7CisJb3ZlcmZsb3c6IGhpZGRlbjsKKwl9CisJCisuZmMtZXZlbnQtdmVydCAuZmMtZXZlbnQtdGltZSB7CisJd2hpdGUtc3BhY2U6IG5vd3JhcDsKKwlmb250LXNpemU6IDEwcHg7CisJfQorCQorLmZjLWV2ZW50LXZlcnQgLmZjLWV2ZW50LWJnIHsgLyogbWFrZXMgdGhlIGV2ZW50IGxpZ2h0ZXIgdy8gYSBzZW1pLXRyYW5zcGFyZW50IG92ZXJsYXkgICovCisJcG9zaXRpb246IGFic29sdXRlOworCXotaW5kZXg6IDE7CisJdG9wOiAwOworCWxlZnQ6IDA7CisJd2lkdGg6IDEwMCU7CisJaGVpZ2h0OiAxMDAlOworCWJhY2tncm91bmQ6ICNmZmY7CisJb3BhY2l0eTogLjM7CisJZmlsdGVyOiBhbHBoYShvcGFjaXR5PTMwKTsKKwl9CisJCisuZmMgLnVpLWRyYWdnYWJsZS1kcmFnZ2luZyAuZmMtZXZlbnQtYmcsIC8qIFRPRE86IHNvbWV0aGluZyBuaWNlciBsaWtlIC5mYy1vcGFjaXR5ICovCisuZmMtc2VsZWN0LWhlbHBlciAuZmMtZXZlbnQtYmcgeworCWRpc3BsYXk6IG5vbmVcOTsgLyogZm9yIElFNi83LzguIG5lc3RlZCBvcGFjaXR5IGZpbHRlcnMgd2hpbGUgZHJhZ2dpbmcgZG9uJ3Qgd29yayAqLworCX0KKwkKKy8qIHJlc2l6YWJsZSAqLworCQorLmZjLWV2ZW50LXZlcnQgLnVpLXJlc2l6YWJsZS1zIHsKKwlib3R0b206IDAgICAgICAgICFpbXBvcnRhbnQ7IC8qIGltcG9ydGFudHMgb3ZlcnJpZGUgcHJlIGpxdWVyeSB1aSAxLjcgc3R5bGVzICovCisJd2lkdGg6IDEwMCUgICAgICAhaW1wb3J0YW50OworCWhlaWdodDogOHB4ICAgICAgIWltcG9ydGFudDsKKwlvdmVyZmxvdzogaGlkZGVuICFpbXBvcnRhbnQ7CisJbGluZS1oZWlnaHQ6IDhweCAhaW1wb3J0YW50OworCWZvbnQtc2l6ZTogMTFweCAgIWltcG9ydGFudDsKKwlmb250LWZhbWlseTogbW9ub3NwYWNlOworCXRleHQtYWxpZ246IGNlbnRlcjsKKwljdXJzb3I6IHMtcmVzaXplOworCX0KKwkKKy5mYy1hZ2VuZGEgLnVpLXJlc2l6YWJsZS1yZXNpemluZyB7IC8qIFRPRE86IGJldHRlciBzZWxlY3RvciAqLworCV9vdmVyZmxvdzogaGlkZGVuOworCX0KKwkKKwkKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9mdWxsY2FsZW5kYXIucHJpbnQuY3NzIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvY3NzL2Z1bGxjYWxlbmRhci5wcmludC5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjI3YjgwZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9mdWxsY2FsZW5kYXIucHJpbnQuY3NzCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBGdWxsQ2FsZW5kYXIgdjEuNS40IFByaW50IFN0eWxlc2hlZXQKKyAqCisgKiBJbmNsdWRlIHRoaXMgc3R5bGVzaGVldCBvbiB5b3VyIHBhZ2UgdG8gZ2V0IGEgbW9yZSBwcmludGVyLWZyaWVuZGx5IGNhbGVuZGFyLgorICogV2hlbiBpbmNsdWRpbmcgdGhpcyBzdHlsZXNoZWV0LCB1c2UgdGhlIG1lZGlhPSdwcmludCcgYXR0cmlidXRlIG9mIHRoZSA8bGluaz4gdGFnLgorICogTWFrZSBzdXJlIHRvIGluY2x1ZGUgdGhpcyBzdHlsZXNoZWV0IElOIEFERElUSU9OIHRvIHRoZSByZWd1bGFyIGZ1bGxjYWxlbmRhci5jc3MuCisgKgorICogQ29weXJpZ2h0IChjKSAyMDExIEFkYW0gU2hhdworICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGFuZCBHUEwgbGljZW5zZXMsIGxvY2F0ZWQgaW4KKyAqIE1JVC1MSUNFTlNFLnR4dCBhbmQgR1BMLUxJQ0VOU0UudHh0IHJlc3BlY3RpdmVseS4KKyAqCisgKiBEYXRlOiBUdWUgU2VwIDQgMjM6Mzg6MzMgMjAxMiAtMDcwMAorICoKKyAqLworIAorIAorIC8qIEV2ZW50cworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworIAorLmZjLWV2ZW50LXNraW4geworCWJhY2tncm91bmQ6IG5vbmUgIWltcG9ydGFudDsKKwljb2xvcjogIzAwMCAhaW1wb3J0YW50OworCX0KKwkKKy8qIGhvcml6b250YWwgZXZlbnRzICovCisJCisuZmMtZXZlbnQtaG9yaSB7CisJYm9yZGVyLXdpZHRoOiAwIDAgMXB4IDAgIWltcG9ydGFudDsKKwlib3JkZXItYm90dG9tLXN0eWxlOiBkb3R0ZWQgIWltcG9ydGFudDsKKwlib3JkZXItYm90dG9tLWNvbG9yOiAjMDAwICFpbXBvcnRhbnQ7CisJcGFkZGluZzogMXB4IDAgMCAwICFpbXBvcnRhbnQ7CisJfQorCQorLmZjLWV2ZW50LWhvcmkgLmZjLWV2ZW50LWlubmVyIHsKKwlib3JkZXItd2lkdGg6IDAgIWltcG9ydGFudDsKKwlwYWRkaW5nOiAwIDFweCAhaW1wb3J0YW50OworCX0KKwkKKy8qIHZlcnRpY2FsIGV2ZW50cyAqLworCQorLmZjLWV2ZW50LXZlcnQgeworCWJvcmRlci13aWR0aDogMCAwIDAgMXB4ICFpbXBvcnRhbnQ7CisJYm9yZGVyLWxlZnQtc3R5bGU6IGRvdHRlZCAhaW1wb3J0YW50OworCWJvcmRlci1sZWZ0LWNvbG9yOiAjMDAwICFpbXBvcnRhbnQ7CisJcGFkZGluZzogMCAxcHggMCAwICFpbXBvcnRhbnQ7CisJfQorCQorLmZjLWV2ZW50LXZlcnQgLmZjLWV2ZW50LWlubmVyIHsKKwlib3JkZXItd2lkdGg6IDAgIWltcG9ydGFudDsKKwlwYWRkaW5nOiAxcHggMCAhaW1wb3J0YW50OworCX0KKwkKKy5mYy1ldmVudC1iZyB7CisJZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OworCX0KKwkKKy5mYy1ldmVudCAudWktcmVzaXphYmxlLWhhbmRsZSB7CisJZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OworCX0KKwkKKwkKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvYXJyb3dfZG93bi5wbmcgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9jc3MvaW1hZ2VzL2Fycm93X2Rvd24ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1YjM1MmIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9jc3MvaW1hZ2VzL2Fycm93X2Rvd24ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvYXJyb3dfcmlnaHQucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvY3NzL2ltYWdlcy9hcnJvd19yaWdodC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2VmMGI3NwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvYXJyb3dfcmlnaHQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvZm9ybXMvYXJyb3dfcmVmcmVzaF9zbWFsbC5wbmcgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9jc3MvaW1hZ2VzL2Zvcm1zL2Fycm93X3JlZnJlc2hfc21hbGwucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzMDg3ZGYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9jc3MvaW1hZ2VzL2Zvcm1zL2Fycm93X3JlZnJlc2hfc21hbGwucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvZm9ybXMvY2FuY2VsX2ljb24ucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvY3NzL2ltYWdlcy9mb3Jtcy9jYW5jZWxfaWNvbi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQyNjA2MgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvZm9ybXMvY2FuY2VsX2ljb24ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvZm9ybXMvZGlzay5wbmcgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9jc3MvaW1hZ2VzL2Zvcm1zL2Rpc2sucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5ZDUzMmUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9jc3MvaW1hZ2VzL2Zvcm1zL2Rpc2sucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvZm9ybXMvcGx1c19pY29uLnBuZyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvZm9ybXMvcGx1c19pY29uLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hY2VjMjkxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvY3NzL2ltYWdlcy9mb3Jtcy9wbHVzX2ljb24ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvZm9ybXMvcGx1c19pY29uX2Rpc2FibGVkLnBuZyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvZm9ybXMvcGx1c19pY29uX2Rpc2FibGVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZmI0Nzc2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvY3NzL2ltYWdlcy9mb3Jtcy9wbHVzX2ljb25fZGlzYWJsZWQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvZm9ybXMvcmVzdWx0c2V0X2ZpcnN0LnBuZyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvZm9ybXMvcmVzdWx0c2V0X2ZpcnN0LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDNlYWY4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvY3NzL2ltYWdlcy9mb3Jtcy9yZXN1bHRzZXRfZmlyc3QucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvZm9ybXMvcmVzdWx0c2V0X2xhc3QucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvY3NzL2ltYWdlcy9mb3Jtcy9yZXN1bHRzZXRfbGFzdC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGVjODk0NwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvZm9ybXMvcmVzdWx0c2V0X2xhc3QucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvZm9ybXMvcmVzdWx0c2V0X25leHQucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvY3NzL2ltYWdlcy9mb3Jtcy9yZXN1bHRzZXRfbmV4dC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTI1MjYwNgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvZm9ybXMvcmVzdWx0c2V0X25leHQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvZm9ybXMvcmVzdWx0c2V0X3ByZXZpb3VzLnBuZyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvZm9ybXMvcmVzdWx0c2V0X3ByZXZpb3VzLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOGY5Y2MxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvY3NzL2ltYWdlcy9mb3Jtcy9yZXN1bHRzZXRfcHJldmlvdXMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvaW5mb3JtYXRpb24ucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvY3NzL2ltYWdlcy9pbmZvcm1hdGlvbi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTJjZDFhZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvaW5mb3JtYXRpb24ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvdWktYmdfZGlhZ29uYWxzLXRoaWNrXzkwX2VlZWVlZV80MHg0MC5wbmcgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9jc3MvaW1hZ2VzL3VpLWJnX2RpYWdvbmFscy10aGlja185MF9lZWVlZWVfNDB4NDAucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzNDgxMTUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9jc3MvaW1hZ2VzL3VpLWJnX2RpYWdvbmFscy10aGlja185MF9lZWVlZWVfNDB4NDAucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvdWktYmdfZmxhdF8xNV9jZDBhMGFfNDB4MTAwLnBuZyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvdWktYmdfZmxhdF8xNV9jZDBhMGFfNDB4MTAwLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjgwYjU0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvY3NzL2ltYWdlcy91aS1iZ19mbGF0XzE1X2NkMGEwYV80MHgxMDAucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvdWktYmdfZ2xhc3NfMTAwX2U0ZjFmYl8xeDQwMC5wbmcgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9jc3MvaW1hZ2VzL3VpLWJnX2dsYXNzXzEwMF9lNGYxZmJfMXg0MDAucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwNWEzMmUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9jc3MvaW1hZ2VzL3VpLWJnX2dsYXNzXzEwMF9lNGYxZmJfMXg0MDAucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvdWktYmdfZ2xhc3NfNTBfM2JhYWUzXzF4NDAwLnBuZyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvdWktYmdfZ2xhc3NfNTBfM2JhYWUzXzF4NDAwLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWFiY2E2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvY3NzL2ltYWdlcy91aS1iZ19nbGFzc181MF8zYmFhZTNfMXg0MDAucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvdWktYmdfZ2xhc3NfODBfZDdlYmY5XzF4NDAwLnBuZyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvdWktYmdfZ2xhc3NfODBfZDdlYmY5XzF4NDAwLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTM4N2U5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvY3NzL2ltYWdlcy91aS1iZ19nbGFzc184MF9kN2ViZjlfMXg0MDAucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvdWktYmdfaGlnaGxpZ2h0LWhhcmRfMTAwX2YyZjVmN18xeDEwMC5wbmcgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9jc3MvaW1hZ2VzL3VpLWJnX2hpZ2hsaWdodC1oYXJkXzEwMF9mMmY1ZjdfMXgxMDAucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4YjU2NmMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9jc3MvaW1hZ2VzL3VpLWJnX2hpZ2hsaWdodC1oYXJkXzEwMF9mMmY1ZjdfMXgxMDAucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvdWktYmdfaGlnaGxpZ2h0LWhhcmRfNzBfMDAwMDAwXzF4MTAwLnBuZyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvdWktYmdfaGlnaGxpZ2h0LWhhcmRfNzBfMDAwMDAwXzF4MTAwLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNTg4Mjk3Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvY3NzL2ltYWdlcy91aS1iZ19oaWdobGlnaHQtaGFyZF83MF8wMDAwMDBfMXgxMDAucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvdWktYmdfaGlnaGxpZ2h0LXNvZnRfMTAwX2RlZWRmN18xeDEwMC5wbmcgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9jc3MvaW1hZ2VzL3VpLWJnX2hpZ2hsaWdodC1zb2Z0XzEwMF9kZWVkZjdfMXgxMDAucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyODlkM2MKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9jc3MvaW1hZ2VzL3VpLWJnX2hpZ2hsaWdodC1zb2Z0XzEwMF9kZWVkZjdfMXgxMDAucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvdWktYmdfaGlnaGxpZ2h0LXNvZnRfMjVfZmZlZjhmXzF4MTAwLnBuZyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvdWktYmdfaGlnaGxpZ2h0LXNvZnRfMjVfZmZlZjhmXzF4MTAwLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZGUzMjc1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvY3NzL2ltYWdlcy91aS1iZ19oaWdobGlnaHQtc29mdF8yNV9mZmVmOGZfMXgxMDAucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvdWktaWNvbnNfMjY5NGU4XzI1NngyNDAucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvY3NzL2ltYWdlcy91aS1pY29uc18yNjk0ZThfMjU2eDI0MC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTYyYjhmNwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvdWktaWNvbnNfMjY5NGU4XzI1NngyNDAucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvdWktaWNvbnNfMmU4M2ZmXzI1NngyNDAucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvY3NzL2ltYWdlcy91aS1pY29uc18yZTgzZmZfMjU2eDI0MC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDlkMWNkYwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvdWktaWNvbnNfMmU4M2ZmXzI1NngyNDAucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvdWktaWNvbnNfM2Q4MGIzXzI1NngyNDAucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvY3NzL2ltYWdlcy91aS1pY29uc18zZDgwYjNfMjU2eDI0MC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTJjM2NjNgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvdWktaWNvbnNfM2Q4MGIzXzI1NngyNDAucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvdWktaWNvbnNfNzJhN2NmXzI1NngyNDAucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvY3NzL2ltYWdlcy91aS1pY29uc183MmE3Y2ZfMjU2eDI0MC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQyMGI3MwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvdWktaWNvbnNfNzJhN2NmXzI1NngyNDAucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvdWktaWNvbnNfZmZmZmZmXzI1NngyNDAucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvY3NzL2ltYWdlcy91aS1pY29uc19mZmZmZmZfMjU2eDI0MC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDJmOGY5OQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9pbWFnZXMvdWktaWNvbnNfZmZmZmZmXzI1NngyNDAucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9qcXVlcnktdWktMS45LjAuY3VzdG9tLm1pbi5jc3MgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9jc3MvanF1ZXJ5LXVpLTEuOS4wLmN1c3RvbS5taW4uY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhMDM4YjcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9jc3MvanF1ZXJ5LXVpLTEuOS4wLmN1c3RvbS5taW4uY3NzCkBAIC0wLDAgKzEsNSBAQAorLyohIGpRdWVyeSBVSSAtIHYxLjkuMCAtIDIwMTItMTAtMTIKKyogaHR0cDovL2pxdWVyeXVpLmNvbQorKiBJbmNsdWRlczoganF1ZXJ5LnVpLmNvcmUuY3NzLCBqcXVlcnkudWkucmVzaXphYmxlLmNzcywganF1ZXJ5LnVpLnNlbGVjdGFibGUuY3NzLCBqcXVlcnkudWkuYWNjb3JkaW9uLmNzcywganF1ZXJ5LnVpLmF1dG9jb21wbGV0ZS5jc3MsIGpxdWVyeS51aS5idXR0b24uY3NzLCBqcXVlcnkudWkuZGF0ZXBpY2tlci5jc3MsIGpxdWVyeS51aS5kaWFsb2cuY3NzLCBqcXVlcnkudWkubWVudS5jc3MsIGpxdWVyeS51aS5wcm9ncmVzc2Jhci5jc3MsIGpxdWVyeS51aS5zbGlkZXIuY3NzLCBqcXVlcnkudWkuc3Bpbm5lci5jc3MsIGpxdWVyeS51aS50YWJzLmNzcywganF1ZXJ5LnVpLnRvb2x0aXAuY3NzCisqIFRvIHZpZXcgYW5kIG1vZGlmeSB0aGlzIHRoZW1lLCB2aXNpdCBodHRwOi8vanF1ZXJ5dWkuY29tL3RoZW1lcm9sbGVyLz9mZkRlZmF1bHQ9THVjaWRhJTIwR3JhbmRlJTJDTHVjaWRhJTIwU2FucyUyQ0FyaWFsJTJDc2Fucy1zZXJpZiZmd0RlZmF1bHQ9Ym9sZCZmc0RlZmF1bHQ9MS4xZW0mY29ybmVyUmFkaXVzPTZweCZiZ0NvbG9ySGVhZGVyPWRlZWRmNyZiZ1RleHR1cmVIZWFkZXI9MDNfaGlnaGxpZ2h0X3NvZnQucG5nJmJnSW1nT3BhY2l0eUhlYWRlcj0xMDAmYm9yZGVyQ29sb3JIZWFkZXI9YWVkMGVhJmZjSGVhZGVyPTIyMjIyMiZpY29uQ29sb3JIZWFkZXI9NzJhN2NmJmJnQ29sb3JDb250ZW50PWYyZjVmNyZiZ1RleHR1cmVDb250ZW50PTA0X2hpZ2hsaWdodF9oYXJkLnBuZyZiZ0ltZ09wYWNpdHlDb250ZW50PTEwMCZib3JkZXJDb2xvckNvbnRlbnQ9ZGRkZGRkJmZjQ29udGVudD0zNjJiMzYmaWNvbkNvbG9yQ29udGVudD03MmE3Y2YmYmdDb2xvckRlZmF1bHQ9ZDdlYmY5JmJnVGV4dHVyZURlZmF1bHQ9MDJfZ2xhc3MucG5nJmJnSW1nT3BhY2l0eURlZmF1bHQ9ODAmYm9yZGVyQ29sb3JEZWZhdWx0PWFlZDBlYSZmY0RlZmF1bHQ9Mjc3OWFhJmljb25Db2xvckRlZmF1bHQ9M2Q4MGIzJmJnQ29sb3JIb3Zlcj1lNGYxZmImYmdUZXh0dXJlSG92ZXI9MDJfZ2xhc3MucG5nJmJnSW1nT3BhY2l0eUhvdmVyPTEwMCZib3JkZXJDb2xvckhvdmVyPTc0YjJlMiZmY0hvdmVyPTAwNzBhMyZpY29uQ29sb3JIb3Zlcj0yNjk0ZTgmYmdDb2xvckFjdGl2ZT0zYmFhZTMmYmdUZXh0dXJlQWN0aXZlPTAyX2dsYXNzLnBuZyZiZ0ltZ09wYWNpdHlBY3RpdmU9NTAmYm9yZGVyQ29sb3JBY3RpdmU9MjY5NGU4JmZjQWN0aXZlPWZmZmZmZiZpY29uQ29sb3JBY3RpdmU9ZmZmZmZmJmJnQ29sb3JIaWdobGlnaHQ9ZmZlZjhmJmJnVGV4dHVyZUhpZ2hsaWdodD0wM19oaWdobGlnaHRfc29mdC5wbmcmYmdJbWdPcGFjaXR5SGlnaGxpZ2h0PTI1JmJvcmRlckNvbG9ySGlnaGxpZ2h0PWY5ZGQzNCZmY0hpZ2hsaWdodD0zNjM2MzYmaWNvbkNvbG9ySGlnaGxpZ2h0PTJlODNmZiZiZ0NvbG9yRXJyb3I9Y2QwYTBhJmJnVGV4dHVyZUVycm9yPTAxX2ZsYXQucG5nJmJnSW1nT3BhY2l0eUVycm9yPTE1JmJvcmRlckNvbG9yRXJyb3I9Y2QwYTBhJmZjRXJyb3I9ZmZmZmZmJmljb25Db2xvckVycm9yPWZmZmZmZiZiZ0NvbG9yT3ZlcmxheT1lZWVlZWUmYmdUZXh0dXJlT3ZlcmxheT0wOF9kaWFnb25hbHNfdGhpY2sucG5nJmJnSW1nT3BhY2l0eU92ZXJsYXk9OTAmb3BhY2l0eU92ZXJsYXk9ODAmYmdDb2xvclNoYWRvdz0wMDAwMDAmYmdUZXh0dXJlU2hhZG93PTA0X2hpZ2hsaWdodF9oYXJkLnBuZyZiZ0ltZ09wYWNpdHlTaGFkb3c9NzAmb3BhY2l0eVNoYWRvdz0zMCZ0aGlja25lc3NTaGFkb3c9N3B4Jm9mZnNldFRvcFNoYWRvdz0tN3B4Jm9mZnNldExlZnRTaGFkb3c9LTdweCZjb3JuZXJSYWRpdXNTaGFkb3c9OHB4CisqIENvcHlyaWdodCAoYykgMjAxMiBqUXVlcnkgRm91bmRhdGlvbiBhbmQgb3RoZXIgY29udHJpYnV0b3JzIExpY2Vuc2VkIE1JVCAqLy51aS1oZWxwZXItaGlkZGVue2Rpc3BsYXk6bm9uZX0udWktaGVscGVyLWhpZGRlbi1hY2Nlc3NpYmxle3Bvc2l0aW9uOmFic29sdXRlIWltcG9ydGFudDtjbGlwOnJlY3QoMXB4KTtjbGlwOnJlY3QoMXB4LDFweCwxcHgsMXB4KX0udWktaGVscGVyLXJlc2V0e21hcmdpbjowO3BhZGRpbmc6MDtib3JkZXI6MDtvdXRsaW5lOjA7bGluZS1oZWlnaHQ6MS4zO3RleHQtZGVjb3JhdGlvbjpub25lO2ZvbnQtc2l6ZToxMDAlO2xpc3Qtc3R5bGU6bm9uZX0udWktaGVscGVyLWNsZWFyZml4OmJlZm9yZSwudWktaGVscGVyLWNsZWFyZml4OmFmdGVye2NvbnRlbnQ6IiI7ZGlzcGxheTp0YWJsZX0udWktaGVscGVyLWNsZWFyZml4OmFmdGVye2NsZWFyOmJvdGh9LnVpLWhlbHBlci1jbGVhcmZpeHt6b29tOjF9LnVpLWhlbHBlci16Zml4e3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCU7dG9wOjA7bGVmdDowO3Bvc2l0aW9uOmFic29sdXRlO29wYWNpdHk6MDtmaWx0ZXI6QWxwaGEoT3BhY2l0eT0wKX0udWktc3RhdGUtZGlzYWJsZWR7Y3Vyc29yOmRlZmF1bHQhaW1wb3J0YW50fS51aS1pY29ue2Rpc3BsYXk6YmxvY2s7dGV4dC1pbmRlbnQ6LTk5OTk5cHg7b3ZlcmZsb3c6aGlkZGVuO2JhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdH0udWktd2lkZ2V0LW92ZXJsYXl7cG9zaXRpb246YWJzb2x1dGU7dG9wOjA7bGVmdDowO3dpZHRoOjEwMCU7aGVpZ2h0OjEwMCV9LnVpLXJlc2l6YWJsZXtwb3NpdGlvbjpyZWxhdGl2ZX0udWktcmVzaXphYmxlLWhhbmRsZXtwb3NpdGlvbjphYnNvbHV0ZTtmb250LXNpemU6MC4xcHg7ZGlzcGxheTpibG9ja30udWktcmVzaXphYmxlLWRpc2FibGVkIC51aS1yZXNpemFibGUtaGFuZGxlLC51aS1yZXNpemFibGUtYXV0b2hpZGUgLnVpLXJlc2l6YWJsZS1oYW5kbGV7ZGlzcGxheTpub25lfS51aS1yZXNpemFibGUtbntjdXJzb3I6bi1yZXNpemU7aGVpZ2h0OjdweDt3aWR0aDoxMDAlO3RvcDotNXB4O2xlZnQ6MH0udWktcmVzaXphYmxlLXN7Y3Vyc29yOnMtcmVzaXplO2hlaWdodDo3cHg7d2lkdGg6MTAwJTtib3R0b206LTVweDtsZWZ0OjB9LnVpLXJlc2l6YWJsZS1le2N1cnNvcjplLXJlc2l6ZTt3aWR0aDo3cHg7cmlnaHQ6LTVweDt0b3A6MDtoZWlnaHQ6MTAwJX0udWktcmVzaXphYmxlLXd7Y3Vyc29yOnctcmVzaXplO3dpZHRoOjdweDtsZWZ0Oi01cHg7dG9wOjA7aGVpZ2h0OjEwMCV9LnVpLXJlc2l6YWJsZS1zZXtjdXJzb3I6c2UtcmVzaXplO3dpZHRoOjEycHg7aGVpZ2h0OjEycHg7cmlnaHQ6MXB4O2JvdHRvbToxcHh9LnVpLXJlc2l6YWJsZS1zd3tjdXJzb3I6c3ctcmVzaXplO3dpZHRoOjlweDtoZWlnaHQ6OXB4O2xlZnQ6LTVweDtib3R0b206LTVweH0udWktcmVzaXphYmxlLW53e2N1cnNvcjpudy1yZXNpemU7d2lkdGg6OXB4O2hlaWdodDo5cHg7bGVmdDotNXB4O3RvcDotNXB4fS51aS1yZXNpemFibGUtbmV7Y3Vyc29yOm5lLXJlc2l6ZTt3aWR0aDo5cHg7aGVpZ2h0OjlweDtyaWdodDotNXB4O3RvcDotNXB4fS51aS1zZWxlY3RhYmxlLWhlbHBlcntwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjEwMDtib3JkZXI6MXB4IGRvdHRlZCBibGFja30udWktYWNjb3JkaW9uIC51aS1hY2NvcmRpb24taGVhZGVye2Rpc3BsYXk6YmxvY2s7Y3Vyc29yOnBvaW50ZXI7cG9zaXRpb246cmVsYXRpdmU7bWFyZ2luLXRvcDoycHg7cGFkZGluZzouNWVtIC41ZW0gLjVlbSAuN2VtO3pvb206MX0udWktYWNjb3JkaW9uIC51aS1hY2NvcmRpb24taWNvbnN7cGFkZGluZy1sZWZ0OjIuMmVtfS51aS1hY2NvcmRpb24gLnVpLWFjY29yZGlvbi1ub2ljb25ze3BhZGRpbmctbGVmdDouN2VtfS51aS1hY2NvcmRpb24gLnVpLWFjY29yZGlvbi1pY29ucyAudWktYWNjb3JkaW9uLWljb25ze3BhZGRpbmctbGVmdDoyLjJlbX0udWktYWNjb3JkaW9uIC51aS1hY2NvcmRpb24taGVhZGVyIC51aS1hY2NvcmRpb24taGVhZGVyLWljb257cG9zaXRpb246YWJzb2x1dGU7bGVmdDouNWVtO3RvcDo1MCU7bWFyZ2luLXRvcDotOHB4fS51aS1hY2NvcmRpb24gLnVpLWFjY29yZGlvbi1jb250ZW50e3BhZGRpbmc6MWVtIDIuMmVtO2JvcmRlci10b3A6MDtvdmVyZmxvdzphdXRvO3pvb206MX0udWktYXV0b2NvbXBsZXRle3Bvc2l0aW9uOmFic29sdXRlO2N1cnNvcjpkZWZhdWx0fSogaHRtbCAudWktYXV0b2NvbXBsZXRle3dpZHRoOjFweH0udWktYnV0dG9ue2Rpc3BsYXk6aW5saW5lLWJsb2NrO3Bvc2l0aW9uOnJlbGF0aXZlO3BhZGRpbmc6MDttYXJnaW4tcmlnaHQ6LjFlbTtjdXJzb3I6cG9pbnRlcjt0ZXh0LWFsaWduOmNlbnRlcjt6b29tOjE7b3ZlcmZsb3c6dmlzaWJsZX0udWktYnV0dG9uLC51aS1idXR0b246bGluaywudWktYnV0dG9uOnZpc2l0ZWQsLnVpLWJ1dHRvbjpob3ZlciwudWktYnV0dG9uOmFjdGl2ZXt0ZXh0LWRlY29yYXRpb246bm9uZX0udWktYnV0dG9uLWljb24tb25seXt3aWR0aDoyLjJlbX1idXR0b24udWktYnV0dG9uLWljb24tb25seXt3aWR0aDoyLjRlbX0udWktYnV0dG9uLWljb25zLW9ubHl7d2lkdGg6My40ZW19YnV0dG9uLnVpLWJ1dHRvbi1pY29ucy1vbmx5e3dpZHRoOjMuN2VtfS51aS1idXR0b24gLnVpLWJ1dHRvbi10ZXh0e2Rpc3BsYXk6YmxvY2s7bGluZS1oZWlnaHQ6MS40fS51aS1idXR0b24tdGV4dC1vbmx5IC51aS1idXR0b24tdGV4dHtwYWRkaW5nOi40ZW0gMWVtfS51aS1idXR0b24taWNvbi1vbmx5IC51aS1idXR0b24tdGV4dCwudWktYnV0dG9uLWljb25zLW9ubHkgLnVpLWJ1dHRvbi10ZXh0e3BhZGRpbmc6LjRlbTt0ZXh0LWluZGVudDotOTk5OTk5OXB4fS51aS1idXR0b24tdGV4dC1pY29uLXByaW1hcnkgLnVpLWJ1dHRvbi10ZXh0LC51aS1idXR0b24tdGV4dC1pY29ucyAudWktYnV0dG9uLXRleHR7cGFkZGluZzouNGVtIDFlbSAuNGVtIDIuMWVtfS51aS1idXR0b24tdGV4dC1pY29uLXNlY29uZGFyeSAudWktYnV0dG9uLXRleHQsLnVpLWJ1dHRvbi10ZXh0LWljb25zIC51aS1idXR0b24tdGV4dHtwYWRkaW5nOi40ZW0gMi4xZW0gLjRlbSAxZW19LnVpLWJ1dHRvbi10ZXh0LWljb25zIC51aS1idXR0b24tdGV4dHtwYWRkaW5nLWxlZnQ6Mi4xZW07cGFkZGluZy1yaWdodDoyLjFlbX1pbnB1dC51aS1idXR0b257cGFkZGluZzouNGVtIDFlbX0udWktYnV0dG9uLWljb24tb25seSAudWktaWNvbiwudWktYnV0dG9uLXRleHQtaWNvbi1wcmltYXJ5IC51aS1pY29uLC51aS1idXR0b24tdGV4dC1pY29uLXNlY29uZGFyeSAudWktaWNvbiwudWktYnV0dG9uLXRleHQtaWNvbnMgLnVpLWljb24sLnVpLWJ1dHRvbi1pY29ucy1vbmx5IC51aS1pY29ue3Bvc2l0aW9uOmFic29sdXRlO3RvcDo1MCU7bWFyZ2luLXRvcDotOHB4fS51aS1idXR0b24taWNvbi1vbmx5IC51aS1pY29ue2xlZnQ6NTAlO21hcmdpbi1sZWZ0Oi04cHh9LnVpLWJ1dHRvbi10ZXh0LWljb24tcHJpbWFyeSAudWktYnV0dG9uLWljb24tcHJpbWFyeSwudWktYnV0dG9uLXRleHQtaWNvbnMgLnVpLWJ1dHRvbi1pY29uLXByaW1hcnksLnVpLWJ1dHRvbi1pY29ucy1vbmx5IC51aS1idXR0b24taWNvbi1wcmltYXJ5e2xlZnQ6LjVlbX0udWktYnV0dG9uLXRleHQtaWNvbi1zZWNvbmRhcnkgLnVpLWJ1dHRvbi1pY29uLXNlY29uZGFyeSwudWktYnV0dG9uLXRleHQtaWNvbnMgLnVpLWJ1dHRvbi1pY29uLXNlY29uZGFyeSwudWktYnV0dG9uLWljb25zLW9ubHkgLnVpLWJ1dHRvbi1pY29uLXNlY29uZGFyeXtyaWdodDouNWVtfS51aS1idXR0b24tdGV4dC1pY29ucyAudWktYnV0dG9uLWljb24tc2Vjb25kYXJ5LC51aS1idXR0b24taWNvbnMtb25seSAudWktYnV0dG9uLWljb24tc2Vjb25kYXJ5e3JpZ2h0Oi41ZW19LnVpLWJ1dHRvbnNldHttYXJnaW4tcmlnaHQ6N3B4fS51aS1idXR0b25zZXQgLnVpLWJ1dHRvbnttYXJnaW4tbGVmdDowO21hcmdpbi1yaWdodDotLjNlbX1idXR0b24udWktYnV0dG9uOjotbW96LWZvY3VzLWlubmVye2JvcmRlcjowO3BhZGRpbmc6MH0udWktZGF0ZXBpY2tlcnt3aWR0aDoxN2VtO3BhZGRpbmc6LjJlbSAuMmVtIDA7ZGlzcGxheTpub25lfS51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLWhlYWRlcntwb3NpdGlvbjpyZWxhdGl2ZTtwYWRkaW5nOi4yZW0gMH0udWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1wcmV2LC51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLW5leHR7cG9zaXRpb246YWJzb2x1dGU7dG9wOjJweDt3aWR0aDoxLjhlbTtoZWlnaHQ6MS44ZW19LnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItcHJldi1ob3ZlciwudWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1uZXh0LWhvdmVye3RvcDoxcHh9LnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItcHJldntsZWZ0OjJweH0udWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1uZXh0e3JpZ2h0OjJweH0udWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1wcmV2LWhvdmVye2xlZnQ6MXB4fS51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLW5leHQtaG92ZXJ7cmlnaHQ6MXB4fS51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLXByZXYgc3BhbiwudWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1uZXh0IHNwYW57ZGlzcGxheTpibG9jaztwb3NpdGlvbjphYnNvbHV0ZTtsZWZ0OjUwJTttYXJnaW4tbGVmdDotOHB4O3RvcDo1MCU7bWFyZ2luLXRvcDotOHB4fS51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLXRpdGxle21hcmdpbjowIDIuM2VtO2xpbmUtaGVpZ2h0OjEuOGVtO3RleHQtYWxpZ246Y2VudGVyfS51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLXRpdGxlIHNlbGVjdHtmb250LXNpemU6MWVtO21hcmdpbjoxcHggMH0udWktZGF0ZXBpY2tlciBzZWxlY3QudWktZGF0ZXBpY2tlci1tb250aC15ZWFye3dpZHRoOjEwMCV9LnVpLWRhdGVwaWNrZXIgc2VsZWN0LnVpLWRhdGVwaWNrZXItbW9udGgsLnVpLWRhdGVwaWNrZXIgc2VsZWN0LnVpLWRhdGVwaWNrZXIteWVhcnt3aWR0aDo0OSV9LnVpLWRhdGVwaWNrZXIgdGFibGV7d2lkdGg6MTAwJTtmb250LXNpemU6LjllbTtib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7bWFyZ2luOjAgMCAuNGVtfS51aS1kYXRlcGlja2VyIHRoe3BhZGRpbmc6LjdlbSAuM2VtO3RleHQtYWxpZ246Y2VudGVyO2ZvbnQtd2VpZ2h0OmJvbGQ7Ym9yZGVyOjB9LnVpLWRhdGVwaWNrZXIgdGR7Ym9yZGVyOjA7cGFkZGluZzoxcHh9LnVpLWRhdGVwaWNrZXIgdGQgc3BhbiwudWktZGF0ZXBpY2tlciB0ZCBhe2Rpc3BsYXk6YmxvY2s7cGFkZGluZzouMmVtO3RleHQtYWxpZ246cmlnaHQ7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItYnV0dG9ucGFuZXtiYWNrZ3JvdW5kLWltYWdlOm5vbmU7bWFyZ2luOi43ZW0gMCAwIDA7cGFkZGluZzowIC4yZW07Ym9yZGVyLWxlZnQ6MDtib3JkZXItcmlnaHQ6MDtib3JkZXItYm90dG9tOjB9LnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItYnV0dG9ucGFuZSBidXR0b257ZmxvYXQ6cmlnaHQ7bWFyZ2luOi41ZW0gLjJlbSAuNGVtO2N1cnNvcjpwb2ludGVyO3BhZGRpbmc6LjJlbSAuNmVtIC4zZW0gLjZlbTt3aWR0aDphdXRvO292ZXJmbG93OnZpc2libGV9LnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItYnV0dG9ucGFuZSBidXR0b24udWktZGF0ZXBpY2tlci1jdXJyZW50e2Zsb2F0OmxlZnR9LnVpLWRhdGVwaWNrZXIudWktZGF0ZXBpY2tlci1tdWx0aXt3aWR0aDphdXRvfS51aS1kYXRlcGlja2VyLW11bHRpIC51aS1kYXRlcGlja2VyLWdyb3Vwe2Zsb2F0OmxlZnR9LnVpLWRhdGVwaWNrZXItbXVsdGkgLnVpLWRhdGVwaWNrZXItZ3JvdXAgdGFibGV7d2lkdGg6OTUlO21hcmdpbjowIGF1dG8gLjRlbX0udWktZGF0ZXBpY2tlci1tdWx0aS0yIC51aS1kYXRlcGlja2VyLWdyb3Vwe3dpZHRoOjUwJX0udWktZGF0ZXBpY2tlci1tdWx0aS0zIC51aS1kYXRlcGlja2VyLWdyb3Vwe3dpZHRoOjMzLjMlfS51aS1kYXRlcGlja2VyLW11bHRpLTQgLnVpLWRhdGVwaWNrZXItZ3JvdXB7d2lkdGg6MjUlfS51aS1kYXRlcGlja2VyLW11bHRpIC51aS1kYXRlcGlja2VyLWdyb3VwLWxhc3QgLnVpLWRhdGVwaWNrZXItaGVhZGVye2JvcmRlci1sZWZ0LXdpZHRoOjB9LnVpLWRhdGVwaWNrZXItbXVsdGkgLnVpLWRhdGVwaWNrZXItZ3JvdXAtbWlkZGxlIC51aS1kYXRlcGlja2VyLWhlYWRlcntib3JkZXItbGVmdC13aWR0aDowfS51aS1kYXRlcGlja2VyLW11bHRpIC51aS1kYXRlcGlja2VyLWJ1dHRvbnBhbmV7Y2xlYXI6bGVmdH0udWktZGF0ZXBpY2tlci1yb3ctYnJlYWt7Y2xlYXI6Ym90aDt3aWR0aDoxMDAlO2ZvbnQtc2l6ZTowZW19LnVpLWRhdGVwaWNrZXItcnRse2RpcmVjdGlvbjpydGx9LnVpLWRhdGVwaWNrZXItcnRsIC51aS1kYXRlcGlja2VyLXByZXZ7cmlnaHQ6MnB4O2xlZnQ6YXV0b30udWktZGF0ZXBpY2tlci1ydGwgLnVpLWRhdGVwaWNrZXItbmV4dHtsZWZ0OjJweDtyaWdodDphdXRvfS51aS1kYXRlcGlja2VyLXJ0bCAudWktZGF0ZXBpY2tlci1wcmV2OmhvdmVye3JpZ2h0OjFweDtsZWZ0OmF1dG99LnVpLWRhdGVwaWNrZXItcnRsIC51aS1kYXRlcGlja2VyLW5leHQ6aG92ZXJ7bGVmdDoxcHg7cmlnaHQ6YXV0b30udWktZGF0ZXBpY2tlci1ydGwgLnVpLWRhdGVwaWNrZXItYnV0dG9ucGFuZXtjbGVhcjpyaWdodH0udWktZGF0ZXBpY2tlci1ydGwgLnVpLWRhdGVwaWNrZXItYnV0dG9ucGFuZSBidXR0b257ZmxvYXQ6bGVmdH0udWktZGF0ZXBpY2tlci1ydGwgLnVpLWRhdGVwaWNrZXItYnV0dG9ucGFuZSBidXR0b24udWktZGF0ZXBpY2tlci1jdXJyZW50e2Zsb2F0OnJpZ2h0fS51aS1kYXRlcGlja2VyLXJ0bCAudWktZGF0ZXBpY2tlci1ncm91cHtmbG9hdDpyaWdodH0udWktZGF0ZXBpY2tlci1ydGwgLnVpLWRhdGVwaWNrZXItZ3JvdXAtbGFzdCAudWktZGF0ZXBpY2tlci1oZWFkZXJ7Ym9yZGVyLXJpZ2h0LXdpZHRoOjA7Ym9yZGVyLWxlZnQtd2lkdGg6MXB4fS51aS1kYXRlcGlja2VyLXJ0bCAudWktZGF0ZXBpY2tlci1ncm91cC1taWRkbGUgLnVpLWRhdGVwaWNrZXItaGVhZGVye2JvcmRlci1yaWdodC13aWR0aDowO2JvcmRlci1sZWZ0LXdpZHRoOjFweH0udWktZGF0ZXBpY2tlci1jb3Zlcntwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4Oi0xO2ZpbHRlcjptYXNrKCk7dG9wOi00cHg7bGVmdDotNHB4O3dpZHRoOjIwMHB4O2hlaWdodDoyMDBweH0udWktZGlhbG9ne3Bvc2l0aW9uOmFic29sdXRlO3BhZGRpbmc6LjJlbTt3aWR0aDozMDBweDtvdmVyZmxvdzpoaWRkZW59LnVpLWRpYWxvZyAudWktZGlhbG9nLXRpdGxlYmFye3BhZGRpbmc6LjRlbSAxZW07cG9zaXRpb246cmVsYXRpdmV9LnVpLWRpYWxvZyAudWktZGlhbG9nLXRpdGxle2Zsb2F0OmxlZnQ7bWFyZ2luOi4xZW0gMTZweCAuMWVtIDB9LnVpLWRpYWxvZyAudWktZGlhbG9nLXRpdGxlYmFyLWNsb3Nle3Bvc2l0aW9uOmFic29sdXRlO3JpZ2h0Oi4zZW07dG9wOjUwJTt3aWR0aDoxOXB4O21hcmdpbjotMTBweCAwIDAgMDtwYWRkaW5nOjFweDtoZWlnaHQ6MThweH0udWktZGlhbG9nIC51aS1kaWFsb2ctdGl0bGViYXItY2xvc2Ugc3BhbntkaXNwbGF5OmJsb2NrO21hcmdpbjoxcHh9LnVpLWRpYWxvZyAudWktZGlhbG9nLXRpdGxlYmFyLWNsb3NlOmhvdmVyLC51aS1kaWFsb2cgLnVpLWRpYWxvZy10aXRsZWJhci1jbG9zZTpmb2N1c3twYWRkaW5nOjB9LnVpLWRpYWxvZyAudWktZGlhbG9nLWNvbnRlbnR7cG9zaXRpb246cmVsYXRpdmU7Ym9yZGVyOjA7cGFkZGluZzouNWVtIDFlbTtiYWNrZ3JvdW5kOm5vbmU7b3ZlcmZsb3c6YXV0bzt6b29tOjF9LnVpLWRpYWxvZyAudWktZGlhbG9nLWJ1dHRvbnBhbmV7dGV4dC1hbGlnbjpsZWZ0O2JvcmRlci13aWR0aDoxcHggMCAwIDA7YmFja2dyb3VuZC1pbWFnZTpub25lO21hcmdpbjouNWVtIDAgMCAwO3BhZGRpbmc6LjNlbSAxZW0gLjVlbSAuNGVtfS51aS1kaWFsb2cgLnVpLWRpYWxvZy1idXR0b25wYW5lIC51aS1kaWFsb2ctYnV0dG9uc2V0e2Zsb2F0OnJpZ2h0fS51aS1kaWFsb2cgLnVpLWRpYWxvZy1idXR0b25wYW5lIGJ1dHRvbnttYXJnaW46LjVlbSAuNGVtIC41ZW0gMDtjdXJzb3I6cG9pbnRlcn0udWktZGlhbG9nIC51aS1yZXNpemFibGUtc2V7d2lkdGg6MTRweDtoZWlnaHQ6MTRweDtyaWdodDozcHg7Ym90dG9tOjNweH0udWktZHJhZ2dhYmxlIC51aS1kaWFsb2ctdGl0bGViYXJ7Y3Vyc29yOm1vdmV9LnVpLW1lbnV7bGlzdC1zdHlsZTpub25lO3BhZGRpbmc6MnB4O21hcmdpbjowO2Rpc3BsYXk6YmxvY2s7b3V0bGluZTpub25lfS51aS1tZW51IC51aS1tZW51e21hcmdpbi10b3A6LTNweDtwb3NpdGlvbjphYnNvbHV0ZX0udWktbWVudSAudWktbWVudS1pdGVte21hcmdpbjowO3BhZGRpbmc6MDt6b29tOjE7d2lkdGg6MTAwJX0udWktbWVudSAudWktbWVudS1kaXZpZGVye21hcmdpbjo1cHggLTJweCA1cHggLTJweDtoZWlnaHQ6MDtmb250LXNpemU6MDtsaW5lLWhlaWdodDowO2JvcmRlci13aWR0aDoxcHggMCAwIDB9LnVpLW1lbnUgLnVpLW1lbnUtaXRlbSBhe3RleHQtZGVjb3JhdGlvbjpub25lO2Rpc3BsYXk6YmxvY2s7cGFkZGluZzoycHggLjRlbTtsaW5lLWhlaWdodDoxLjI7em9vbToxO2ZvbnQtd2VpZ2h0Om5vcm1hbH0udWktbWVudSAudWktbWVudS1pdGVtIGEudWktc3RhdGUtZm9jdXMsLnVpLW1lbnUgLnVpLW1lbnUtaXRlbSBhLnVpLXN0YXRlLWFjdGl2ZXtmb250LXdlaWdodDpub3JtYWw7bWFyZ2luOi0xcHh9LnVpLW1lbnUgLnVpLXN0YXRlLWRpc2FibGVke2ZvbnQtd2VpZ2h0Om5vcm1hbDttYXJnaW46LjRlbSAwIC4yZW07bGluZS1oZWlnaHQ6MS41fS51aS1tZW51IC51aS1zdGF0ZS1kaXNhYmxlZCBhe2N1cnNvcjpkZWZhdWx0fS51aS1tZW51LWljb25ze3Bvc2l0aW9uOnJlbGF0aXZlfS51aS1tZW51LWljb25zIC51aS1tZW51LWl0ZW0gYXtwb3NpdGlvbjpyZWxhdGl2ZTtwYWRkaW5nLWxlZnQ6MmVtfS51aS1tZW51IC51aS1pY29ue3Bvc2l0aW9uOmFic29sdXRlO3RvcDouMmVtO2xlZnQ6LjJlbX0udWktbWVudSAudWktbWVudS1pY29ue3Bvc2l0aW9uOnN0YXRpYztmbG9hdDpyaWdodH0udWktcHJvZ3Jlc3NiYXJ7aGVpZ2h0OjJlbTt0ZXh0LWFsaWduOmxlZnQ7b3ZlcmZsb3c6aGlkZGVufS51aS1wcm9ncmVzc2JhciAudWktcHJvZ3Jlc3NiYXItdmFsdWV7bWFyZ2luOi0xcHg7aGVpZ2h0OjEwMCV9LnVpLXNsaWRlcntwb3NpdGlvbjpyZWxhdGl2ZTt0ZXh0LWFsaWduOmxlZnR9LnVpLXNsaWRlciAudWktc2xpZGVyLWhhbmRsZXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjI7d2lkdGg6MS4yZW07aGVpZ2h0OjEuMmVtO2N1cnNvcjpkZWZhdWx0fS51aS1zbGlkZXIgLnVpLXNsaWRlci1yYW5nZXtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjE7Zm9udC1zaXplOi43ZW07ZGlzcGxheTpibG9jaztib3JkZXI6MDtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgMH0udWktc2xpZGVyLWhvcml6b250YWx7aGVpZ2h0Oi44ZW19LnVpLXNsaWRlci1ob3Jpem9udGFsIC51aS1zbGlkZXItaGFuZGxle3RvcDotLjNlbTttYXJnaW4tbGVmdDotLjZlbX0udWktc2xpZGVyLWhvcml6b250YWwgLnVpLXNsaWRlci1yYW5nZXt0b3A6MDtoZWlnaHQ6MTAwJX0udWktc2xpZGVyLWhvcml6b250YWwgLnVpLXNsaWRlci1yYW5nZS1taW57bGVmdDowfS51aS1zbGlkZXItaG9yaXpvbnRhbCAudWktc2xpZGVyLXJhbmdlLW1heHtyaWdodDowfS51aS1zbGlkZXItdmVydGljYWx7d2lkdGg6LjhlbTtoZWlnaHQ6MTAwcHh9LnVpLXNsaWRlci12ZXJ0aWNhbCAudWktc2xpZGVyLWhhbmRsZXtsZWZ0Oi0uM2VtO21hcmdpbi1sZWZ0OjA7bWFyZ2luLWJvdHRvbTotLjZlbX0udWktc2xpZGVyLXZlcnRpY2FsIC51aS1zbGlkZXItcmFuZ2V7bGVmdDowO3dpZHRoOjEwMCV9LnVpLXNsaWRlci12ZXJ0aWNhbCAudWktc2xpZGVyLXJhbmdlLW1pbntib3R0b206MH0udWktc2xpZGVyLXZlcnRpY2FsIC51aS1zbGlkZXItcmFuZ2UtbWF4e3RvcDowfS51aS1zcGlubmVye3Bvc2l0aW9uOnJlbGF0aXZlO2Rpc3BsYXk6aW5saW5lLWJsb2NrO292ZXJmbG93OmhpZGRlbjtwYWRkaW5nOjA7dmVydGljYWwtYWxpZ246bWlkZGxlfS51aS1zcGlubmVyLWlucHV0e2JvcmRlcjpub25lO2JhY2tncm91bmQ6bm9uZTtwYWRkaW5nOjA7bWFyZ2luOi4yZW0gMDt2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7bWFyZ2luLWxlZnQ6LjRlbTttYXJnaW4tcmlnaHQ6MjJweH0udWktc3Bpbm5lci1idXR0b257d2lkdGg6MTZweDtoZWlnaHQ6NTAlO2ZvbnQtc2l6ZTouNWVtO3BhZGRpbmc6MDttYXJnaW46MDt6LWluZGV4OjEwMDt0ZXh0LWFsaWduOmNlbnRlcjtwb3NpdGlvbjphYnNvbHV0ZTtjdXJzb3I6ZGVmYXVsdDtkaXNwbGF5OmJsb2NrO292ZXJmbG93OmhpZGRlbjtyaWdodDowfS51aS1zcGlubmVyIGEudWktc3Bpbm5lci1idXR0b257Ym9yZGVyLXRvcDpub25lO2JvcmRlci1ib3R0b206bm9uZTtib3JkZXItcmlnaHQ6bm9uZX0udWktc3Bpbm5lciAudWktaWNvbntwb3NpdGlvbjphYnNvbHV0ZTttYXJnaW4tdG9wOi04cHg7dG9wOjUwJTtsZWZ0OjB9LnVpLXNwaW5uZXItdXB7dG9wOjB9LnVpLXNwaW5uZXItZG93bntib3R0b206MH1zcGFuLnVpLXNwaW5uZXJ7YmFja2dyb3VuZDpub25lfS51aS1zcGlubmVyIC51aS1pY29uLXRyaWFuZ2xlLTEtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NXB4IC0xNnB4fS51aS10YWJze3Bvc2l0aW9uOnJlbGF0aXZlO3BhZGRpbmc6LjJlbTt6b29tOjF9LnVpLXRhYnMgLnVpLXRhYnMtbmF2e21hcmdpbjowO3BhZGRpbmc6LjJlbSAuMmVtIDB9LnVpLXRhYnMgLnVpLXRhYnMtbmF2IGxpe2xpc3Qtc3R5bGU6bm9uZTtmbG9hdDpsZWZ0O3Bvc2l0aW9uOnJlbGF0aXZlO3RvcDowO21hcmdpbjoxcHggLjJlbSAwIDA7Ym9yZGVyLWJvdHRvbTowO3BhZGRpbmc6MDt3aGl0ZS1zcGFjZTpub3dyYXB9LnVpLXRhYnMgLnVpLXRhYnMtbmF2IGxpIGF7ZmxvYXQ6bGVmdDtwYWRkaW5nOi41ZW0gMWVtO3RleHQtZGVjb3JhdGlvbjpub25lfS51aS10YWJzIC51aS10YWJzLW5hdiBsaS51aS10YWJzLWFjdGl2ZXttYXJnaW4tYm90dG9tOi0xcHg7cGFkZGluZy1ib3R0b206MXB4fS51aS10YWJzIC51aS10YWJzLW5hdiBsaS51aS10YWJzLWFjdGl2ZSBhLC51aS10YWJzIC51aS10YWJzLW5hdiBsaS51aS1zdGF0ZS1kaXNhYmxlZCBhLC51aS10YWJzIC51aS10YWJzLW5hdiBsaS51aS10YWJzLWxvYWRpbmcgYXtjdXJzb3I6dGV4dH0udWktdGFicyAudWktdGFicy1uYXYgbGkgYSwudWktdGFicy1jb2xsYXBzaWJsZSAudWktdGFicy1uYXYgbGkudWktdGFicy1hY3RpdmUgYXtjdXJzb3I6cG9pbnRlcn0udWktdGFicyAudWktdGFicy1wYW5lbHtkaXNwbGF5OmJsb2NrO2JvcmRlci13aWR0aDowO3BhZGRpbmc6MWVtIDEuNGVtO2JhY2tncm91bmQ6bm9uZX0udWktdG9vbHRpcHtwYWRkaW5nOjhweDtwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4Ojk5OTk7LW8tYm94LXNoYWRvdzowIDAgNXB4ICNhYWE7LW1vei1ib3gtc2hhZG93OjAgMCA1cHggI2FhYTstd2Via2l0LWJveC1zaGFkb3c6MCAwIDVweCAjYWFhO2JveC1zaGFkb3c6MCAwIDVweCAjYWFhfSogaHRtbCAudWktdG9vbHRpcHtiYWNrZ3JvdW5kLWltYWdlOm5vbmV9Ym9keSAudWktdG9vbHRpcHtib3JkZXItd2lkdGg6MnB4fS51aS13aWRnZXR7Zm9udC1mYW1pbHk6THVjaWRhIEdyYW5kZSxMdWNpZGEgU2FucyxBcmlhbCxzYW5zLXNlcmlmO2ZvbnQtc2l6ZToxZW19LnVpLXdpZGdldCAudWktd2lkZ2V0e2ZvbnQtc2l6ZToxZW19LnVpLXdpZGdldCBpbnB1dCwudWktd2lkZ2V0IHNlbGVjdCwudWktd2lkZ2V0IHRleHRhcmVhLC51aS13aWRnZXQgYnV0dG9ue2ZvbnQtZmFtaWx5Okx1Y2lkYSBHcmFuZGUsTHVjaWRhIFNhbnMsQXJpYWwsc2Fucy1zZXJpZjtmb250LXNpemU6MWVtfS51aS13aWRnZXQtY29udGVudHtib3JkZXI6MXB4IHNvbGlkICNkZGQ7YmFja2dyb3VuZDojZjJmNWY3IHVybChpbWFnZXMvdWktYmdfaGlnaGxpZ2h0LWhhcmRfMTAwX2YyZjVmN18xeDEwMC5wbmcpIDUwJSB0b3AgcmVwZWF0LXg7Y29sb3I6IzM2MmIzNn0udWktd2lkZ2V0LWNvbnRlbnQgYXtjb2xvcjojMzYyYjM2fS51aS13aWRnZXQtaGVhZGVye2JvcmRlcjoxcHggc29saWQgI2FlZDBlYTtiYWNrZ3JvdW5kOiNkZWVkZjcgdXJsKGltYWdlcy91aS1iZ19oaWdobGlnaHQtc29mdF8xMDBfZGVlZGY3XzF4MTAwLnBuZykgNTAlIDUwJSByZXBlYXQteDtjb2xvcjojMjIyO2ZvbnQtd2VpZ2h0OmJvbGR9LnVpLXdpZGdldC1oZWFkZXIgYXtjb2xvcjojMjIyfS51aS1zdGF0ZS1kZWZhdWx0LC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtZGVmYXVsdCwudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZGVmYXVsdHtib3JkZXI6MXB4IHNvbGlkICNhZWQwZWE7YmFja2dyb3VuZDojZDdlYmY5IHVybChpbWFnZXMvdWktYmdfZ2xhc3NfODBfZDdlYmY5XzF4NDAwLnBuZykgNTAlIDUwJSByZXBlYXQteDtmb250LXdlaWdodDpib2xkO2NvbG9yOiMyNzc5YWF9LnVpLXN0YXRlLWRlZmF1bHQgYSwudWktc3RhdGUtZGVmYXVsdCBhOmxpbmssLnVpLXN0YXRlLWRlZmF1bHQgYTp2aXNpdGVke2NvbG9yOiMyNzc5YWE7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnVpLXN0YXRlLWhvdmVyLC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtaG92ZXIsLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWhvdmVyLC51aS1zdGF0ZS1mb2N1cywudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWZvY3VzLC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1mb2N1c3tib3JkZXI6MXB4IHNvbGlkICM3NGIyZTI7YmFja2dyb3VuZDojZTRmMWZiIHVybChpbWFnZXMvdWktYmdfZ2xhc3NfMTAwX2U0ZjFmYl8xeDQwMC5wbmcpIDUwJSA1MCUgcmVwZWF0LXg7Zm9udC13ZWlnaHQ6Ym9sZDtjb2xvcjojMDA3MGEzfS51aS1zdGF0ZS1ob3ZlciBhLC51aS1zdGF0ZS1ob3ZlciBhOmhvdmVye2NvbG9yOiMwMDcwYTM7dGV4dC1kZWNvcmF0aW9uOm5vbmV9LnVpLXN0YXRlLWFjdGl2ZSwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWFjdGl2ZSwudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtYWN0aXZle2JvcmRlcjoxcHggc29saWQgIzI2OTRlODtiYWNrZ3JvdW5kOiMzYmFhZTMgdXJsKGltYWdlcy91aS1iZ19nbGFzc181MF8zYmFhZTNfMXg0MDAucG5nKSA1MCUgNTAlIHJlcGVhdC14O2ZvbnQtd2VpZ2h0OmJvbGQ7Y29sb3I6I2ZmZn0udWktc3RhdGUtYWN0aXZlIGEsLnVpLXN0YXRlLWFjdGl2ZSBhOmxpbmssLnVpLXN0YXRlLWFjdGl2ZSBhOnZpc2l0ZWR7Y29sb3I6I2ZmZjt0ZXh0LWRlY29yYXRpb246bm9uZX0udWktc3RhdGUtaGlnaGxpZ2h0LC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtaGlnaGxpZ2h0LC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1oaWdobGlnaHR7Ym9yZGVyOjFweCBzb2xpZCAjZjlkZDM0O2JhY2tncm91bmQ6I2ZmZWY4ZiB1cmwoaW1hZ2VzL3VpLWJnX2hpZ2hsaWdodC1zb2Z0XzI1X2ZmZWY4Zl8xeDEwMC5wbmcpIDUwJSB0b3AgcmVwZWF0LXg7Y29sb3I6IzM2MzYzNn0udWktc3RhdGUtaGlnaGxpZ2h0IGEsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1oaWdobGlnaHQgYSwudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtaGlnaGxpZ2h0IGF7Y29sb3I6IzM2MzYzNn0udWktc3RhdGUtZXJyb3IsLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1lcnJvciwudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZXJyb3J7Ym9yZGVyOjFweCBzb2xpZCAjY2QwYTBhO2JhY2tncm91bmQ6I2NkMGEwYSB1cmwoaW1hZ2VzL3VpLWJnX2ZsYXRfMTVfY2QwYTBhXzQweDEwMC5wbmcpIDUwJSA1MCUgcmVwZWF0LXg7Y29sb3I6I2ZmZn0udWktc3RhdGUtZXJyb3IgYSwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWVycm9yIGEsLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWVycm9yIGF7Y29sb3I6I2ZmZn0udWktc3RhdGUtZXJyb3ItdGV4dCwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWVycm9yLXRleHQsLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWVycm9yLXRleHR7Y29sb3I6I2ZmZn0udWktcHJpb3JpdHktcHJpbWFyeSwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXByaW9yaXR5LXByaW1hcnksLnVpLXdpZGdldC1oZWFkZXIgLnVpLXByaW9yaXR5LXByaW1hcnl7Zm9udC13ZWlnaHQ6Ym9sZH0udWktcHJpb3JpdHktc2Vjb25kYXJ5LC51aS13aWRnZXQtY29udGVudCAudWktcHJpb3JpdHktc2Vjb25kYXJ5LC51aS13aWRnZXQtaGVhZGVyIC51aS1wcmlvcml0eS1zZWNvbmRhcnl7b3BhY2l0eTouNztmaWx0ZXI6QWxwaGEoT3BhY2l0eT03MCk7Zm9udC13ZWlnaHQ6bm9ybWFsfS51aS1zdGF0ZS1kaXNhYmxlZCwudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWRpc2FibGVkLC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1kaXNhYmxlZHtvcGFjaXR5Oi4zNTtmaWx0ZXI6QWxwaGEoT3BhY2l0eT0zNSk7YmFja2dyb3VuZC1pbWFnZTpub25lfS51aS1pY29ue3dpZHRoOjE2cHg7aGVpZ2h0OjE2cHg7YmFja2dyb3VuZC1pbWFnZTp1cmwoaW1hZ2VzL3VpLWljb25zXzcyYTdjZl8yNTZ4MjQwLnBuZyl9LnVpLXdpZGdldC1jb250ZW50IC51aS1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKGltYWdlcy91aS1pY29uc183MmE3Y2ZfMjU2eDI0MC5wbmcpfS51aS13aWRnZXQtaGVhZGVyIC51aS1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKGltYWdlcy91aS1pY29uc183MmE3Y2ZfMjU2eDI0MC5wbmcpfS51aS1zdGF0ZS1kZWZhdWx0IC51aS1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKGltYWdlcy91aS1pY29uc18zZDgwYjNfMjU2eDI0MC5wbmcpfS51aS1zdGF0ZS1ob3ZlciAudWktaWNvbiwudWktc3RhdGUtZm9jdXMgLnVpLWljb257YmFja2dyb3VuZC1pbWFnZTp1cmwoaW1hZ2VzL3VpLWljb25zXzI2OTRlOF8yNTZ4MjQwLnBuZyl9LnVpLXN0YXRlLWFjdGl2ZSAudWktaWNvbntiYWNrZ3JvdW5kLWltYWdlOnVybChpbWFnZXMvdWktaWNvbnNfZmZmZmZmXzI1NngyNDAucG5nKX0udWktc3RhdGUtaGlnaGxpZ2h0IC51aS1pY29ue2JhY2tncm91bmQtaW1hZ2U6dXJsKGltYWdlcy91aS1pY29uc18yZTgzZmZfMjU2eDI0MC5wbmcpfS51aS1zdGF0ZS1lcnJvciAudWktaWNvbiwudWktc3RhdGUtZXJyb3ItdGV4dCAudWktaWNvbntiYWNrZ3JvdW5kLWltYWdlOnVybChpbWFnZXMvdWktaWNvbnNfZmZmZmZmXzI1NngyNDAucG5nKX0udWktaWNvbi1jYXJhdC0xLW57YmFja2dyb3VuZC1wb3NpdGlvbjowIDB9LnVpLWljb24tY2FyYXQtMS1uZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IDB9LnVpLWljb24tY2FyYXQtMS1le2JhY2tncm91bmQtcG9zaXRpb246LTMycHggMH0udWktaWNvbi1jYXJhdC0xLXNle2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggMH0udWktaWNvbi1jYXJhdC0xLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAwfS51aS1pY29uLWNhcmF0LTEtc3d7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAwfS51aS1pY29uLWNhcmF0LTEtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IDB9LnVpLWljb24tY2FyYXQtMS1ud3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAwfS51aS1pY29uLWNhcmF0LTItbi1ze2JhY2tncm91bmQtcG9zaXRpb246LTEyOHB4IDB9LnVpLWljb24tY2FyYXQtMi1lLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggMH0udWktaWNvbi10cmlhbmdsZS0xLW57YmFja2dyb3VuZC1wb3NpdGlvbjowIC0xNnB4fS51aS1pY29uLXRyaWFuZ2xlLTEtbmV7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMTZweH0udWktaWNvbi10cmlhbmdsZS0xLWV7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtMTZweH0udWktaWNvbi10cmlhbmdsZS0xLXNle2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTE2cHh9LnVpLWljb24tdHJpYW5nbGUtMS1ze2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTE2cHh9LnVpLWljb24tdHJpYW5nbGUtMS1zd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0xNnB4fS51aS1pY29uLXRyaWFuZ2xlLTEtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC0xNnB4fS51aS1pY29uLXRyaWFuZ2xlLTEtbnd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTE2cHh9LnVpLWljb24tdHJpYW5nbGUtMi1uLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggLTE2cHh9LnVpLWljb24tdHJpYW5nbGUtMi1lLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTE2cHh9LnVpLWljb24tYXJyb3ctMS1ue2JhY2tncm91bmQtcG9zaXRpb246MCAtMzJweH0udWktaWNvbi1hcnJvdy0xLW5le2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTMycHh9LnVpLWljb24tYXJyb3ctMS1le2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTMycHh9LnVpLWljb24tYXJyb3ctMS1zZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0zMnB4fS51aS1pY29uLWFycm93LTEtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC0zMnB4fS51aS1pY29uLWFycm93LTEtc3d7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMzJweH0udWktaWNvbi1hcnJvdy0xLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtMzJweH0udWktaWNvbi1hcnJvdy0xLW53e2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC0zMnB4fS51aS1pY29uLWFycm93LTItbi1ze2JhY2tncm91bmQtcG9zaXRpb246LTEyOHB4IC0zMnB4fS51aS1pY29uLWFycm93LTItbmUtc3d7YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTMycHh9LnVpLWljb24tYXJyb3ctMi1lLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTYwcHggLTMycHh9LnVpLWljb24tYXJyb3ctMi1zZS1ud3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNzZweCAtMzJweH0udWktaWNvbi1hcnJvd3N0b3AtMS1ue2JhY2tncm91bmQtcG9zaXRpb246LTE5MnB4IC0zMnB4fS51aS1pY29uLWFycm93c3RvcC0xLWV7YmFja2dyb3VuZC1wb3NpdGlvbjotMjA4cHggLTMycHh9LnVpLWljb24tYXJyb3dzdG9wLTEtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMjRweCAtMzJweH0udWktaWNvbi1hcnJvd3N0b3AtMS13e2JhY2tncm91bmQtcG9zaXRpb246LTI0MHB4IC0zMnB4fS51aS1pY29uLWFycm93dGhpY2stMS1ue2JhY2tncm91bmQtcG9zaXRpb246MCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTEtbmV7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTEtZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMS1zZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2stMS1ze2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGljay0xLXN3e2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGljay0xLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTEtbnd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGljay0yLW4tc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjhweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTItbmUtc3d7YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGljay0yLWUtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNjBweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrLTItc2Utbnd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTc2cHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGlja3N0b3AtMS1ue2JhY2tncm91bmQtcG9zaXRpb246LTE5MnB4IC00OHB4fS51aS1pY29uLWFycm93dGhpY2tzdG9wLTEtZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMDhweCAtNDhweH0udWktaWNvbi1hcnJvd3RoaWNrc3RvcC0xLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMjI0cHggLTQ4cHh9LnVpLWljb24tYXJyb3d0aGlja3N0b3AtMS13e2JhY2tncm91bmQtcG9zaXRpb246LTI0MHB4IC00OHB4fS51aS1pY29uLWFycm93cmV0dXJudGhpY2stMS13e2JhY2tncm91bmQtcG9zaXRpb246MCAtNjRweH0udWktaWNvbi1hcnJvd3JldHVybnRoaWNrLTEtbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC02NHB4fS51aS1pY29uLWFycm93cmV0dXJudGhpY2stMS1le2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTY0cHh9LnVpLWljb24tYXJyb3dyZXR1cm50aGljay0xLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtNjRweH0udWktaWNvbi1hcnJvd3JldHVybi0xLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAtNjRweH0udWktaWNvbi1hcnJvd3JldHVybi0xLW57YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtNjRweH0udWktaWNvbi1hcnJvd3JldHVybi0xLWV7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtNjRweH0udWktaWNvbi1hcnJvd3JldHVybi0xLXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTY0cHh9LnVpLWljb24tYXJyb3dyZWZyZXNoLTEtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMjhweCAtNjRweH0udWktaWNvbi1hcnJvd3JlZnJlc2gtMS1ue2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IC02NHB4fS51aS1pY29uLWFycm93cmVmcmVzaC0xLWV7YmFja2dyb3VuZC1wb3NpdGlvbjotMTYwcHggLTY0cHh9LnVpLWljb24tYXJyb3dyZWZyZXNoLTEtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNzZweCAtNjRweH0udWktaWNvbi1hcnJvdy00e2JhY2tncm91bmQtcG9zaXRpb246MCAtODBweH0udWktaWNvbi1hcnJvdy00LWRpYWd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtODBweH0udWktaWNvbi1leHRsaW5re2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTgwcHh9LnVpLWljb24tbmV3d2lue2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTgwcHh9LnVpLWljb24tcmVmcmVzaHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC04MHB4fS51aS1pY29uLXNodWZmbGV7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtODBweH0udWktaWNvbi10cmFuc2Zlci1lLXd7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtODBweH0udWktaWNvbi10cmFuc2ZlcnRoaWNrLWUtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtODBweH0udWktaWNvbi1mb2xkZXItY29sbGFwc2Vke2JhY2tncm91bmQtcG9zaXRpb246MCAtOTZweH0udWktaWNvbi1mb2xkZXItb3BlbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC05NnB4fS51aS1pY29uLWRvY3VtZW50e2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTk2cHh9LnVpLWljb24tZG9jdW1lbnQtYntiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC05NnB4fS51aS1pY29uLW5vdGV7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAtOTZweH0udWktaWNvbi1tYWlsLWNsb3NlZHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC05NnB4fS51aS1pY29uLW1haWwtb3BlbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC05NnB4fS51aS1pY29uLXN1aXRjYXNle2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC05NnB4fS51aS1pY29uLWNvbW1lbnR7YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggLTk2cHh9LnVpLWljb24tcGVyc29ue2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IC05NnB4fS51aS1pY29uLXByaW50e2JhY2tncm91bmQtcG9zaXRpb246LTE2MHB4IC05NnB4fS51aS1pY29uLXRyYXNoe2JhY2tncm91bmQtcG9zaXRpb246LTE3NnB4IC05NnB4fS51aS1pY29uLWxvY2tlZHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xOTJweCAtOTZweH0udWktaWNvbi11bmxvY2tlZHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMDhweCAtOTZweH0udWktaWNvbi1ib29rbWFya3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMjRweCAtOTZweH0udWktaWNvbi10YWd7YmFja2dyb3VuZC1wb3NpdGlvbjotMjQwcHggLTk2cHh9LnVpLWljb24taG9tZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTExMnB4fS51aS1pY29uLWZsYWd7YmFja2dyb3VuZC1wb3NpdGlvbjotMTZweCAtMTEycHh9LnVpLWljb24tY2FsZW5kYXJ7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtMTEycHh9LnVpLWljb24tY2FydHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0xMTJweH0udWktaWNvbi1wZW5jaWx7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAtMTEycHh9LnVpLWljb24tY2xvY2t7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMTEycHh9LnVpLWljb24tZGlza3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC0xMTJweH0udWktaWNvbi1jYWxjdWxhdG9ye2JhY2tncm91bmQtcG9zaXRpb246LTExMnB4IC0xMTJweH0udWktaWNvbi16b29taW57YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggLTExMnB4fS51aS1pY29uLXpvb21vdXR7YmFja2dyb3VuZC1wb3NpdGlvbjotMTQ0cHggLTExMnB4fS51aS1pY29uLXNlYXJjaHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNjBweCAtMTEycHh9LnVpLWljb24td3JlbmNoe2JhY2tncm91bmQtcG9zaXRpb246LTE3NnB4IC0xMTJweH0udWktaWNvbi1nZWFye2JhY2tncm91bmQtcG9zaXRpb246LTE5MnB4IC0xMTJweH0udWktaWNvbi1oZWFydHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMDhweCAtMTEycHh9LnVpLWljb24tc3RhcntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMjRweCAtMTEycHh9LnVpLWljb24tbGlua3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yNDBweCAtMTEycHh9LnVpLWljb24tY2FuY2Vse2JhY2tncm91bmQtcG9zaXRpb246MCAtMTI4cHh9LnVpLWljb24tcGx1c3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC0xMjhweH0udWktaWNvbi1wbHVzdGhpY2t7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtMTI4cHh9LnVpLWljb24tbWludXN7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtMTI4cHh9LnVpLWljb24tbWludXN0aGlja3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC0xMjhweH0udWktaWNvbi1jbG9zZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0xMjhweH0udWktaWNvbi1jbG9zZXRoaWNre2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTEyOHB4fS51aS1pY29uLWtleXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtMTI4cHh9LnVpLWljb24tbGlnaHRidWxie2JhY2tncm91bmQtcG9zaXRpb246LTEyOHB4IC0xMjhweH0udWktaWNvbi1zY2lzc29yc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtMTI4cHh9LnVpLWljb24tY2xpcGJvYXJke2JhY2tncm91bmQtcG9zaXRpb246LTE2MHB4IC0xMjhweH0udWktaWNvbi1jb3B5e2JhY2tncm91bmQtcG9zaXRpb246LTE3NnB4IC0xMjhweH0udWktaWNvbi1jb250YWN0e2JhY2tncm91bmQtcG9zaXRpb246LTE5MnB4IC0xMjhweH0udWktaWNvbi1pbWFnZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMDhweCAtMTI4cHh9LnVpLWljb24tdmlkZW97YmFja2dyb3VuZC1wb3NpdGlvbjotMjI0cHggLTEyOHB4fS51aS1pY29uLXNjcmlwdHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yNDBweCAtMTI4cHh9LnVpLWljb24tYWxlcnR7YmFja2dyb3VuZC1wb3NpdGlvbjowIC0xNDRweH0udWktaWNvbi1pbmZve2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTE0NHB4fS51aS1pY29uLW5vdGljZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC0xNDRweH0udWktaWNvbi1oZWxwe2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTE0NHB4fS51aS1pY29uLWNoZWNre2JhY2tncm91bmQtcG9zaXRpb246LTY0cHggLTE0NHB4fS51aS1pY29uLWJ1bGxldHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0xNDRweH0udWktaWNvbi1yYWRpby1vbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC0xNDRweH0udWktaWNvbi1yYWRpby1vZmZ7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTE0NHB4fS51aS1pY29uLXBpbi13e2JhY2tncm91bmQtcG9zaXRpb246LTEyOHB4IC0xNDRweH0udWktaWNvbi1waW4tc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtMTQ0cHh9LnVpLWljb24tcGxheXtiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTE2MHB4fS51aS1pY29uLXBhdXNle2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTE2MHB4fS51aS1pY29uLXNlZWstbmV4dHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC0xNjBweH0udWktaWNvbi1zZWVrLXByZXZ7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtMTYwcHh9LnVpLWljb24tc2Vlay1lbmR7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAtMTYwcHh9LnVpLWljb24tc2Vlay1zdGFydHtiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0xNjBweH0udWktaWNvbi1zZWVrLWZpcnN0e2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTE2MHB4fS51aS1pY29uLXN0b3B7YmFja2dyb3VuZC1wb3NpdGlvbjotOTZweCAtMTYwcHh9LnVpLWljb24tZWplY3R7YmFja2dyb3VuZC1wb3NpdGlvbjotMTEycHggLTE2MHB4fS51aS1pY29uLXZvbHVtZS1vZmZ7YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggLTE2MHB4fS51aS1pY29uLXZvbHVtZS1vbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNDRweCAtMTYwcHh9LnVpLWljb24tcG93ZXJ7YmFja2dyb3VuZC1wb3NpdGlvbjowIC0xNzZweH0udWktaWNvbi1zaWduYWwtZGlhZ3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNnB4IC0xNzZweH0udWktaWNvbi1zaWduYWx7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtMTc2cHh9LnVpLWljb24tYmF0dGVyeS0we2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTE3NnB4fS51aS1pY29uLWJhdHRlcnktMXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC0xNzZweH0udWktaWNvbi1iYXR0ZXJ5LTJ7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMTc2cHh9LnVpLWljb24tYmF0dGVyeS0ze2JhY2tncm91bmQtcG9zaXRpb246LTk2cHggLTE3NnB4fS51aS1pY29uLWNpcmNsZS1wbHVze2JhY2tncm91bmQtcG9zaXRpb246MCAtMTkycHh9LnVpLWljb24tY2lyY2xlLW1pbnVze2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS1jbG9zZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0zMnB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtdHJpYW5nbGUtZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi00OHB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtdHJpYW5nbGUtc3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtdHJpYW5nbGUtd3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi04MHB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtdHJpYW5nbGUtbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi05NnB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtYXJyb3ctZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xMTJweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLWFycm93LXN7YmFja2dyb3VuZC1wb3NpdGlvbjotMTI4cHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS1hcnJvdy13e2JhY2tncm91bmQtcG9zaXRpb246LTE0NHB4IC0xOTJweH0udWktaWNvbi1jaXJjbGUtYXJyb3ctbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNjBweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLXpvb21pbntiYWNrZ3JvdW5kLXBvc2l0aW9uOi0xNzZweCAtMTkycHh9LnVpLWljb24tY2lyY2xlLXpvb21vdXR7YmFja2dyb3VuZC1wb3NpdGlvbjotMTkycHggLTE5MnB4fS51aS1pY29uLWNpcmNsZS1jaGVja3tiYWNrZ3JvdW5kLXBvc2l0aW9uOi0yMDhweCAtMTkycHh9LnVpLWljb24tY2lyY2xlc21hbGwtcGx1c3tiYWNrZ3JvdW5kLXBvc2l0aW9uOjAgLTIwOHB4fS51aS1pY29uLWNpcmNsZXNtYWxsLW1pbnVze2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTIwOHB4fS51aS1pY29uLWNpcmNsZXNtYWxsLWNsb3Nle2JhY2tncm91bmQtcG9zaXRpb246LTMycHggLTIwOHB4fS51aS1pY29uLXNxdWFyZXNtYWxsLXBsdXN7YmFja2dyb3VuZC1wb3NpdGlvbjotNDhweCAtMjA4cHh9LnVpLWljb24tc3F1YXJlc21hbGwtbWludXN7YmFja2dyb3VuZC1wb3NpdGlvbjotNjRweCAtMjA4cHh9LnVpLWljb24tc3F1YXJlc21hbGwtY2xvc2V7YmFja2dyb3VuZC1wb3NpdGlvbjotODBweCAtMjA4cHh9LnVpLWljb24tZ3JpcC1kb3R0ZWQtdmVydGljYWx7YmFja2dyb3VuZC1wb3NpdGlvbjowIC0yMjRweH0udWktaWNvbi1ncmlwLWRvdHRlZC1ob3Jpem9udGFse2JhY2tncm91bmQtcG9zaXRpb246LTE2cHggLTIyNHB4fS51aS1pY29uLWdyaXAtc29saWQtdmVydGljYWx7YmFja2dyb3VuZC1wb3NpdGlvbjotMzJweCAtMjI0cHh9LnVpLWljb24tZ3JpcC1zb2xpZC1ob3Jpem9udGFse2JhY2tncm91bmQtcG9zaXRpb246LTQ4cHggLTIyNHB4fS51aS1pY29uLWdyaXBzbWFsbC1kaWFnb25hbC1zZXtiYWNrZ3JvdW5kLXBvc2l0aW9uOi02NHB4IC0yMjRweH0udWktaWNvbi1ncmlwLWRpYWdvbmFsLXNle2JhY2tncm91bmQtcG9zaXRpb246LTgwcHggLTIyNHB4fS51aS1jb3JuZXItYWxsLC51aS1jb3JuZXItdG9wLC51aS1jb3JuZXItbGVmdCwudWktY29ybmVyLXRsey1tb3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OjZweDstd2Via2l0LWJvcmRlci10b3AtbGVmdC1yYWRpdXM6NnB4Oy1raHRtbC1ib3JkZXItdG9wLWxlZnQtcmFkaXVzOjZweDtib3JkZXItdG9wLWxlZnQtcmFkaXVzOjZweH0udWktY29ybmVyLWFsbCwudWktY29ybmVyLXRvcCwudWktY29ybmVyLXJpZ2h0LC51aS1jb3JuZXItdHJ7LW1vei1ib3JkZXItcmFkaXVzLXRvcHJpZ2h0OjZweDstd2Via2l0LWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOjZweDsta2h0bWwtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6NnB4O2JvcmRlci10b3AtcmlnaHQtcmFkaXVzOjZweH0udWktY29ybmVyLWFsbCwudWktY29ybmVyLWJvdHRvbSwudWktY29ybmVyLWxlZnQsLnVpLWNvcm5lci1ibHstbW96LWJvcmRlci1yYWRpdXMtYm90dG9tbGVmdDo2cHg7LXdlYmtpdC1ib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOjZweDsta2h0bWwtYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo2cHg7Ym9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czo2cHh9LnVpLWNvcm5lci1hbGwsLnVpLWNvcm5lci1ib3R0b20sLnVpLWNvcm5lci1yaWdodCwudWktY29ybmVyLWJyey1tb3otYm9yZGVyLXJhZGl1cy1ib3R0b21yaWdodDo2cHg7LXdlYmtpdC1ib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo2cHg7LWtodG1sLWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOjZweDtib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czo2cHh9LnVpLXdpZGdldC1vdmVybGF5e2JhY2tncm91bmQ6I2VlZSB1cmwoaW1hZ2VzL3VpLWJnX2RpYWdvbmFscy10aGlja185MF9lZWVlZWVfNDB4NDAucG5nKSA1MCUgNTAlIHJlcGVhdDtvcGFjaXR5Oi44O2ZpbHRlcjpBbHBoYShPcGFjaXR5PTgwKX0udWktd2lkZ2V0LXNoYWRvd3ttYXJnaW46LTdweCAwIDAgLTdweDtwYWRkaW5nOjdweDtiYWNrZ3JvdW5kOiMwMDAgdXJsKGltYWdlcy91aS1iZ19oaWdobGlnaHQtaGFyZF83MF8wMDAwMDBfMXgxMDAucG5nKSA1MCUgdG9wIHJlcGVhdC14O29wYWNpdHk6LjM7ZmlsdGVyOkFscGhhKE9wYWNpdHk9MzApOy1tb3otYm9yZGVyLXJhZGl1czo4cHg7LWtodG1sLWJvcmRlci1yYWRpdXM6OHB4Oy13ZWJraXQtYm9yZGVyLXJhZGl1czo4cHg7Ym9yZGVyLXJhZGl1czo4cHh9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9vcGVubWVldGluZ3MvY3NzL2pxdWVyeS51aS5tZW51YmFyLmNzcyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9qcXVlcnkudWkubWVudWJhci5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWVkODIwNwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy9qcXVlcnkudWkubWVudWJhci5jc3MKQEAgLTAsMCArMSwxNSBAQAorLyoNCisgKiBqUXVlcnkgVUkgTWVudWJhciBAVkVSU0lPTg0KKyAqDQorICogQ29weXJpZ2h0IDIwMTEsIEFVVEhPUlMudHh0IChodHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0KQ0KKyAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBvciBHUEwgVmVyc2lvbiAyIGxpY2Vuc2VzLg0KKyAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2UNCisgKi8NCisudWktbWVudWJhciB7IGxpc3Qtc3R5bGU6IG5vbmU7IG1hcmdpbjogMDsgcGFkZGluZy1sZWZ0OiAwOyB9DQorDQorLnVpLW1lbnViYXItaXRlbSB7IGZsb2F0OiBsZWZ0OyB9DQorDQorLnVpLW1lbnViYXIgLnVpLWJ1dHRvbiB7IGZsb2F0OiBsZWZ0OyBmb250LXdlaWdodDogbm9ybWFsOyBib3JkZXItdG9wLXdpZHRoOiAwICFpbXBvcnRhbnQ7IGJvcmRlci1ib3R0b20td2lkdGg6IDAgIWltcG9ydGFudDsgbWFyZ2luOiAwOyBvdXRsaW5lOiBub25lOyB9DQorLnVpLW1lbnViYXIgLnVpLW1lbnViYXItbGluayB7IGJvcmRlci1yaWdodDogMXB4IGRhc2hlZCB0cmFuc3BhcmVudDsgYm9yZGVyLWxlZnQ6IDFweCBkYXNoZWQgdHJhbnNwYXJlbnQ7IH0NCisNCisudWktbWVudWJhciAudWktbWVudSB7IHdpZHRoOiAyMDBweDsgcG9zaXRpb246IGFic29sdXRlOyB6LWluZGV4OiA5OTk5OyBmb250LXdlaWdodDogbm9ybWFsOyB9DQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9vcGVubWVldGluZ3MvY3NzL29wZW5tZWV0aW5ncy1mb3Jtcy5jc3MgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9jc3Mvb3Blbm1lZXRpbmdzLWZvcm1zLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MWEwOTU1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvY3NzL29wZW5tZWV0aW5ncy1mb3Jtcy5jc3MKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworZGl2LmZvcm1TYXZlQmFyIHsKKwl3aWR0aDogMTAwJTsKKwloZWlnaHQ6IDIycHg7CisJYmFja2dyb3VuZC1jb2xvcjogI0FGQ0JGQjsKK30KKyAKK2Rpdi5mb3JtU2F2ZUJ1dHRvbiBpbnB1dCB7CisJYmFja2dyb3VuZDogdXJsKGltYWdlcy9mb3Jtcy9kaXNrLnBuZykgbm8tcmVwZWF0OworCWZsb2F0OiBsZWZ0OworCWN1cnNvcjogcG9pbnRlcjsKKwl3aWR0aDogMThweDsKKwloZWlnaHQ6IDE4cHg7CisJYm9yZGVyOiBub25lOworCW1hcmdpbi1sZWZ0OiAycHg7CisJbWFyZ2luLXRvcDogMnB4OworfQorCitkaXYuZm9ybU5ld0J1dHRvbiBpbnB1dCB7CisJYmFja2dyb3VuZDogdXJsKGltYWdlcy9mb3Jtcy9wbHVzX2ljb24ucG5nKSBuby1yZXBlYXQ7CisJZmxvYXQ6IGxlZnQ7CisJY3Vyc29yOiBwb2ludGVyOworCXdpZHRoOiAxOHB4OworCWhlaWdodDogMThweDsKKwlib3JkZXI6IG5vbmU7CisJbWFyZ2luLWxlZnQ6IDJweDsKKwltYXJnaW4tdG9wOiAycHg7Cit9CisKK2Rpdi5mb3JtTmV3QnV0dG9uLmRpc2FibGVkIGlucHV0IHsKKwliYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzL2Zvcm1zL3BsdXNfaWNvbl9kaXNhYmxlZC5wbmcpIG5vLXJlcGVhdDsKKwlmbG9hdDogbGVmdDsKKwljdXJzb3I6IGRlZmF1bHQ7CisJd2lkdGg6IDE4cHg7CisJaGVpZ2h0OiAxOHB4OworCWJvcmRlcjogbm9uZTsKKwltYXJnaW4tbGVmdDogMnB4OworCW1hcmdpbi10b3A6IDJweDsKK30KKworZGl2LmZvcm1SZWZyZXNoQnV0dG9uIGlucHV0IHsKKwliYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzL2Zvcm1zL2Fycm93X3JlZnJlc2hfc21hbGwucG5nKSBuby1yZXBlYXQ7CisJZmxvYXQ6IGxlZnQ7CisJY3Vyc29yOiBwb2ludGVyOworCXdpZHRoOiAxOHB4OworCWhlaWdodDogMThweDsKKwlib3JkZXI6IG5vbmU7CisJbWFyZ2luLWxlZnQ6IDJweDsKKwltYXJnaW4tdG9wOiAycHg7Cit9CisKK2Rpdi5mb3JtQ2FuY2VsQnV0dG9uIGlucHV0IHsKKwliYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzL2Zvcm1zL2NhbmNlbF9pY29uLnBuZykgbm8tcmVwZWF0OworCWZsb2F0OiBsZWZ0OworCWN1cnNvcjogcG9pbnRlcjsKKwl3aWR0aDogMThweDsKKwloZWlnaHQ6IDE4cHg7CisJYm9yZGVyOiBub25lOworCW1hcmdpbi1sZWZ0OiAycHg7CisJbWFyZ2luLXRvcDogMnB4OworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2Nzcy90aGVtZS5jc3MgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9jc3MvdGhlbWUuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2ZTY2NDkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9jc3MvdGhlbWUuY3NzCkBAIC0wLDAgKzEsNTM1IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCisjdG9wTGlua3MgeworCXBvc2l0aW9uOiBhYnNvbHV0ZTsKKwl0b3A6IDEwcHg7CisJcmlnaHQ6IDEwcHg7Cit9CisKKyN0b3BMaW5rcyBzcGFuIHsKKwlwYWRkaW5nLXJpZ2h0OiA1cHg7CisJcGFkZGluZy1sZWZ0OiA1cHg7CisJYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgYmxhY2s7Cit9CisKKyN0b3BMaW5rcyBzcGFuOmxhc3QtY2hpbGQgeworCWJvcmRlci1yaWdodDogbm9uZTsKK30KKworI21lbnUgeworCWJhY2tncm91bmQtY29sb3I6ICNBRkNCRkI7CisJbWFyZ2luLXRvcDogMTBweDsKK30KKworLm1lbnVOYW1lIHsKKwlmb250LXdlaWdodDogYm9sZDsKK30KKworLm1lbnVEZXNjIHsKKwlmb250LXNpemU6IHNtYWxsZXI7Cit9CisKKyNidXN5X2luZGljYXRvciB7CisJZGlzcGxheTogbm9uZTsKKwlmbG9hdDogcmlnaHQ7CisJYmFja2dyb3VuZDogcmdiKDI1NSwgMjQxLCAxNjgpOworCW1hcmdpbi10b3A6IDVweDsKKwl6LWluZGV4OiAxMDAwOworCXdpZHRoOiAyMDA7CisJZm9udC13ZWlnaHQ6IGJvbGQ7CisJdGV4dC1hbGlnbjogY2VudGVyOworCWZvbnQtc2l6ZTogMWVtOworfQorCisuYWRtaW5QYW5lbCB7CisJbWluLXdpZHRoOiAxMDcwcHg7Cit9CisKKyNjaGF0UGFuZWwgeworCXBvc2l0aW9uOiBmaXhlZDsKKwl6LWluZGV4OiAyMDAwOworCWJvdHRvbTogMHB4OworCXJpZ2h0OiAxMHB4OworCXdpZHRoOiAzMDBweDsKK30KKworI2NoYXRQYW5lbCAjY2hhdCB7CisJaGVpZ2h0OiAxMHB4OworCWJhY2tncm91bmQtY29sb3I6ICNGMkZBRkY7Cit9CisKKyNjaGF0UGFuZWwgI2NoYXQgI2NvbnRyb2xCbG9jazpob3ZlciB7CisJYmFja2dyb3VuZC1jb2xvcjogIzI3NzlhYTsKK30KKyNjaGF0UGFuZWwgI2NoYXQgI2NvbnRyb2xCbG9jayAjY29udHJvbCB7CisJdGV4dC1hbGlnbjogY2VudGVyOworCW1hcmdpbi1sZWZ0OiA1MCU7CisJbWFyZ2luLXJpZ2h0OiA1MCU7Cit9CisvKiAKKyAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICAgIENvbHVtbiBsYXlvdXQgYWRtaW4gc2VjdGlvbgorICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgKi8KKy5hZG1pblBhbmVsQ29sdW1uVGFibGUgeworCWRpc3BsYXk6IGlubGluZS1ibG9jazsKKwl2ZXJ0aWNhbC1hbGlnbjogdG9wOworfQorCit0YWJsZS5hZG1pbkxpc3RUYWJsZSB7CisJbWF4LXdpZHRoOiA1MThweDsKKwltaW4td2lkdGg6IDUxOHB4OworfQorCit0YWJsZS5hZG1pbkxpc3RUYWJsZSB0aCB7CisJYmFja2dyb3VuZDogI0FGQ0JGQjsKKwljb2xvcjogI2ZmZmZmZjsKK30KKwordGFibGUuYWRtaW5MaXN0VGFibGUgdGgudHdvX2NvbHVtbl9sYXlvdXRfY29sdW1uMSB7CisJd2lkdGg6IDEzNnB4OworfQorCit0YWJsZS5hZG1pbkxpc3RUYWJsZSB0aC50d29fY29sdW1uX2xheW91dF9jb2x1bW4yIHsKKwl3aWR0aDogMzU0cHg7Cit9CisKK3RhYmxlLmFkbWluTGlzdFRhYmxlIHRkLnR3b19jb2x1bW5fbGF5b3V0X2NvbHVtbjEgeworCXdpZHRoOiAxMzZweDsKK30KKwordGFibGUuYWRtaW5MaXN0VGFibGUgdGQudHdvX2NvbHVtbl9sYXlvdXRfY29sdW1uMiB7CisJd2lkdGg6IDM1NHB4OworfQorCit0YWJsZS5hZG1pbkxpc3RUYWJsZSB0ZCBkaXYudHdvX2NvbHVtbl9sYXlvdXRfZGl2Y29sdW1uMSB7CisJd29yZC13cmFwOiBicmVhay13b3JkOworCXdpZHRoOiAxMzZweDsKK30KKwordGFibGUuYWRtaW5MaXN0VGFibGUgdGQgZGl2LnR3b19jb2x1bW5fbGF5b3V0X2RpdmNvbHVtbjIgeworCXdvcmQtd3JhcDogYnJlYWstd29yZDsKKwl3aWR0aDogMzU0cHg7Cit9CisKK3RhYmxlLmFkbWluTGlzdFRhYmxlIHRoLnRocmVlX2NvbHVtbl9sYXlvdXRfY29sdW1uMSB7CisJd2lkdGg6IDk2cHg7Cit9CisKK3RhYmxlLmFkbWluTGlzdFRhYmxlIHRoLnRocmVlX2NvbHVtbl9sYXlvdXRfY29sdW1uMiB7CisJd2lkdGg6IDE1MHB4OworfQorCit0YWJsZS5hZG1pbkxpc3RUYWJsZSB0aC50aHJlZV9jb2x1bW5fbGF5b3V0X2NvbHVtbjMgeworCXdpZHRoOiAyNDRweDsKK30KKwordGFibGUuYWRtaW5MaXN0VGFibGUgdGQudGhyZWVfY29sdW1uX2xheW91dF9jb2x1bW4xIHsKKwl3aWR0aDogOTZweDsKK30KKwordGFibGUuYWRtaW5MaXN0VGFibGUgdGQudGhyZWVfY29sdW1uX2xheW91dF9jb2x1bW4yIHsKKwl3aWR0aDogMTUwcHg7Cit9CisKK3RhYmxlLmFkbWluTGlzdFRhYmxlIHRkLnRocmVlX2NvbHVtbl9sYXlvdXRfY29sdW1uMyB7CisJd2lkdGg6IDI0NHB4OworfQorCit0YWJsZS5hZG1pbkxpc3RUYWJsZSB0ZCBkaXYudGhyZWVfY29sdW1uX2xheW91dF9kaXZjb2x1bW4xIHsKKwl3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CisJd2lkdGg6IDk2cHg7Cit9CisKK3RhYmxlLmFkbWluTGlzdFRhYmxlIHRkIGRpdi50aHJlZV9jb2x1bW5fbGF5b3V0X2RpdmNvbHVtbjIgeworCXdvcmQtd3JhcDogYnJlYWstd29yZDsKKwl3aWR0aDogMTUwcHg7Cit9CisKK3RhYmxlLmFkbWluTGlzdFRhYmxlIHRkIGRpdi50aHJlZV9jb2x1bW5fbGF5b3V0X2RpdmNvbHVtbjMgeworCXdvcmQtd3JhcDogYnJlYWstd29yZDsKKwl3aWR0aDogMjQ0cHg7Cit9CisKK3RhYmxlLmFkbWluTGlzdFRhYmxlIHRoLmZvdXJfY29sdW1uX2xheW91dF9jb2x1bW4xIHsKKwl3aWR0aDogOTZweDsKK30KKwordGFibGUuYWRtaW5MaXN0VGFibGUgdGguZm91cl9jb2x1bW5fbGF5b3V0X2NvbHVtbjIgeworCXdpZHRoOiAxMzBweDsKK30KKwordGFibGUuYWRtaW5MaXN0VGFibGUgdGguZm91cl9jb2x1bW5fbGF5b3V0X2NvbHVtbjMgeworCXdpZHRoOiAxMzJweDsKK30KKwordGFibGUuYWRtaW5MaXN0VGFibGUgdGguZm91cl9jb2x1bW5fbGF5b3V0X2NvbHVtbjQgeworCXdpZHRoOiAxMzJweDsKK30KKwordGFibGUuYWRtaW5MaXN0VGFibGUgdGQuZm91cl9jb2x1bW5fbGF5b3V0X2NvbHVtbjEgeworCXdpZHRoOiA5NnB4OworfQorCit0YWJsZS5hZG1pbkxpc3RUYWJsZSB0ZC5mb3VyX2NvbHVtbl9sYXlvdXRfY29sdW1uMiB7CisJd2lkdGg6IDEzMHB4OworfQorCit0YWJsZS5hZG1pbkxpc3RUYWJsZSB0ZC5mb3VyX2NvbHVtbl9sYXlvdXRfY29sdW1uMyB7CisJd2lkdGg6IDEzMnB4OworfQorCit0YWJsZS5hZG1pbkxpc3RUYWJsZSB0ZC5mb3VyX2NvbHVtbl9sYXlvdXRfY29sdW1uNCB7CisJd2lkdGg6IDEzMnB4OworfQorCit0YWJsZS5hZG1pbkxpc3RUYWJsZSB0ZCBkaXYuZm91cl9jb2x1bW5fbGF5b3V0X2RpdmNvbHVtbjEgeworCXdvcmQtd3JhcDogYnJlYWstd29yZDsKKwl3aWR0aDogOTZweDsKK30KKwordGFibGUuYWRtaW5MaXN0VGFibGUgdGQgZGl2LmZvdXJfY29sdW1uX2xheW91dF9kaXZjb2x1bW4yIHsKKwl3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7CisJd2lkdGg6IDEzMHB4OworfQorCit0YWJsZS5hZG1pbkxpc3RUYWJsZSB0ZCBkaXYuZm91cl9jb2x1bW5fbGF5b3V0X2RpdmNvbHVtbjMgeworCXdvcmQtd3JhcDogYnJlYWstd29yZDsKKwl3aWR0aDogMTMycHg7Cit9CisKK3RhYmxlLmFkbWluTGlzdFRhYmxlIHRkIGRpdi5mb3VyX2NvbHVtbl9sYXlvdXRfZGl2Y29sdW1uNCB7CisJd29yZC13cmFwOiBicmVhay13b3JkOworCXdpZHRoOiAxMzJweDsKK30KKwordGFibGUuYWRtaW5MaXN0VGFibGUgdHIuZXZlbiB7CisJYmFja2dyb3VuZC1jb2xvcjogI0VERjJGRjsKK30KKwordGFibGUuYWRtaW5MaXN0VGFibGUgdHIub2RkIHsKKwliYWNrZ3JvdW5kLWNvbG9yOiAjRjJGQUZGOworfQorCit0YWJsZS5hZG1pbkxpc3RUYWJsZSB0cjpob3ZlciB7CisJYmFja2dyb3VuZC1jb2xvcjogI0NDRENFODsKK30KKworLmNsaWNrYWJsZSB7CisJY3Vyc29yOiBwb2ludGVyOworfQorCitkaXYudGFibGVXcmFwcGVyIHsKKwliYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGOworCWJvcmRlcjogc29saWQgMXB4ICNhYWNmZTQ7CisJd2lkdGg6IDUzNnB4OworCWhlaWdodDogNTAwcHg7CisJb3ZlcmZsb3cteTogc2Nyb2xsOworfQorCisuYWRtaW5QYW5lbENvbHVtbkZvcm0geworCWRpc3BsYXk6IGlubGluZS1ibG9jazsKKwl2ZXJ0aWNhbC1hbGlnbjogdG9wOworCW1hcmdpbi10b3A6IDJweDsKK30KKworLmFkbWluUGFuZWxDb2x1bW5Gb3JtIGRpdi5zY3JvbGxjb250ZW50IHsKKwl2ZXJ0aWNhbC1hbGlnbjogdG9wOworCWhlaWdodDogNTAwcHg7CisJb3ZlcmZsb3cteTogc2Nyb2xsOworfQorCisuYWRtaW5Gb3JtIHsKKwkKK30KKworLmFkbWluRm9ybSBpbnB1dCB7CisJZGlzcGxheTogYmxvY2s7CisJZmxvYXQ6IGxlZnQ7CisJZm9udC1zaXplOiAxNHB4OworCXBhZGRpbmc6IDBweCAwcHg7CisJYm9yZGVyOiBzb2xpZCAxcHggI2FhY2ZlNDsKKwl3aWR0aDogMjgwcHg7CisJaGVpZ2h0OiAyMHB4OworCW1hcmdpbjogMnB4IDJweDsKK30KKworLmFkbWluRm9ybSBpbnB1dC5mb3JtY2hlY2tib3ggeworCWRpc3BsYXk6IGJsb2NrOworCWZsb2F0OiBsZWZ0OworCWZvbnQtc2l6ZTogMTRweDsKKwlwYWRkaW5nOiAwcHggMHB4OworCWJvcmRlcjogbm9uZTsKKwl3aWR0aDogMjBweDsKKwloZWlnaHQ6IDIwcHg7CisJbWFyZ2luOiAycHggMnB4OworfQorCisuYWRtaW5Gb3JtIGZpZWxkc2V0IHsKKwliYWNrZ3JvdW5kLWNvbG9yOiAjRjJGQUZGOworCWJvcmRlcjogc29saWQgMXB4ICNhYWNmZTQ7CisJbWFyZ2luLXRvcDogNHB4OworCXBhZGRpbmc6IDRweDsKK30KKworLmFkbWluRm9ybSBsZWdlbmQgeworCWJhY2tncm91bmQtY29sb3I6ICNGMkZBRkY7CisJcGFkZGluZzogMC4yZW0gMC41ZW07CisJbWFyZ2luOiAwcHggMTBweDsKKwlib3JkZXI6IHNvbGlkIDFweCAjYWFjZmU0OworCWNvbG9yOiAjMDAwMDAwOworCWZvbnQtc3R5bGU6IGl0YWxpYzsKKwl0ZXh0LWFsaWduOiByaWdodDsKK30KKworLmFkbWluRm9ybSB0ZXh0YXJlYSB7CisJZGlzcGxheTogYmxvY2s7CisJZmxvYXQ6IGxlZnQ7CisJZm9udC1zaXplOiAxNHB4OworCXBhZGRpbmc6IDBweCAwcHg7CisJYm9yZGVyOiBzb2xpZCAxcHggI2FhY2ZlNDsKKwl3aWR0aDogMjgwcHg7CisJaGVpZ2h0OiA2MHB4OworCW1hcmdpbjogMnB4IDJweDsKK30KKworLmFkbWluRm9ybSBkaXYuZm9ybWVsZW1lbnQgeworCWRpc3BsYXk6IGJsb2NrOworCWNsZWFyOiBib3RoOworCW1heC13aWR0aDogNDkwcHg7Cit9CisKKy5hZG1pbkZvcm0gc2VsZWN0IHsKKwlmbG9hdDogbGVmdDsKKwloZWlnaHQ6IDIwcHg7CisJZm9udC1zaXplOiAxNHB4OworCXBhZGRpbmc6IDBweCAwcHg7CisJYm9yZGVyOiBzb2xpZCAxcHggI2FhY2ZlNDsKKwl3aWR0aDogMjgycHg7CisJbWFyZ2luOiAycHggMnB4IDJweDsKK30KKworLmFkbWluRm9ybSBsYWJlbCB7CisJZGlzcGxheTogYmxvY2s7CisJZm9udC1zaXplOiAxNHB4OworCWZvbnQtd2VpZ2h0OiBib2xkOworCXRleHQtYWxpZ246IHJpZ2h0OworCXdpZHRoOiAxODBweDsKKwlmbG9hdDogbGVmdDsKKwltYXJnaW46IDRweCAycHggMnB4OworfQorCisuYWRtaW5CYWNrdXBGb3JtIGRpdi5mb3JtZWxlbWVudCB7CisgICAgZGlzcGxheTogYmxvY2s7CisgICAgY2xlYXI6IGJvdGg7CisgICAgbWF4LXdpZHRoOiAxMjQwcHg7Cit9CisKKy5mb3JtZWxlbWVudHJhZGlvYm94IHsKKwltYXJnaW4tbGVmdDogMTAwcHg7Cit9CisKKy5mb3JtZWxlbWVudHJhZGlvYm94IGlucHV0IHsKKwltYXJnaW46IDBweCAwcHg7CisJYm9yZGVyOiBub25lOworCXdpZHRoOiAyMHB4OworfQorCisuZm9ybWVsZW1lbnRyYWRpb2JveCBsYWJlbCB7CisJd2lkdGg6IDI2MHB4OworCW1hcmdpbjogMHB4Cit9CisKKy5hZGRMYW5ndWFnZVBhbmVsIHsKKwlkaXNwbGF5OiBibG9jazsKK30KKworLmFkZExhbmd1YWdlUGFuZWwgc2VsZWN0IHsKKwlwYWRkaW5nOiAwcHggMHB4OworCWJvcmRlcjogc29saWQgMXB4ICNhYWNmZTQ7CisJd2lkdGg6IDE0MHB4OworCWZvbnQtc2l6ZTogMTJweDsKKwltYXJnaW4tbGVmdDogMnB4OworfQorCisucGFnZWRFbnRpdHlMaXN0UGFuZWwgeworCW1hcmdpbi1sZWZ0OiAycHg7CisJZGlzcGxheTogaW5saW5lLWJsb2NrOworfQorCisuc2VhcmNoRm9ybSB7CisJZGlzcGxheTogaW5saW5lLWJsb2NrOworfQorCisucGFnZWRFbnRpdHlMaXN0UGFuZWwgc2VsZWN0IHsKKwlwYWRkaW5nOiAwcHggMHB4OworCWJvcmRlcjogc29saWQgMXB4ICNhYWNmZTQ7CisJd2lkdGg6IDQwcHg7CisJZm9udC1zaXplOiAxMnB4OworCWRpc3BsYXk6IGlubGluZTsKKwlmbG9hdDogbm9uZTsKK30KKworLnBhZ2VkRW50aXR5TGlzdFBhbmVsIGlucHV0IHsKKwlmb250LXNpemU6IDE0cHg7CisJcGFkZGluZzogMHB4IDBweDsKKwlib3JkZXI6IHNvbGlkIDFweCAjYWFjZmU0OworCXdpZHRoOiAxMDBweDsKKwloZWlnaHQ6IDIwcHg7CisJbWFyZ2luOiAycHggMnB4OworCWRpc3BsYXk6IGlubGluZTsKKwlmbG9hdDogbm9uZTsKK30KKworLnVpLWRpYWxvZyB7CisJLW1vei1ib3gtc2hhZG93OiAzcHggM3B4IDRweCAjMDAwOworCS13ZWJraXQtYm94LXNoYWRvdzogM3B4IDNweCA0cHggIzAwMDsKKwkvKiBGb3IgSUUgOCAqLworCS1tcy1maWx0ZXI6CisJCSJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuU2hhZG93KFN0cmVuZ3RoPTQsIERpcmVjdGlvbj0xMzUsIENvbG9yPScjMDAwMDAwJykiOworCS8qIEZvciBJRSA1LjUgLSA3ICovCisJZmlsdGVyOiBwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuU2hhZG93KFN0cmVuZ3RoPTQsIERpcmVjdGlvbj0xMzUsCisJCUNvbG9yPScjMDAwMDAwJyApOworCWJveC1zaGFkb3c6IDNweCAzcHggNHB4ICMwMDA7Cit9CisKKy5pbmZvLWljb24geworCWJhY2tncm91bmQ6IHVybChpbWFnZXMvaW5mb3JtYXRpb24ucG5nKSBuby1yZXBlYXQ7CisJZmxvYXQ6IGxlZnQ7CisJY3Vyc29yOiBkZWZhdWx0OworCXdpZHRoOiAxOHB4OworCWhlaWdodDogMThweDsKKwlib3JkZXI6IG5vbmU7CisJbWFyZ2luLWxlZnQ6IDJweDsKKwltYXJnaW4tdG9wOiAycHg7Cit9CisKKy8qIC5hZG1pbkZvcm0gc2VsZWN0IHsKKyAgICBtYXgtd2lkdGg6IDIwMHB4OworfSAqLworLnNvcnQtaWNvbiB7CisJZGlzcGxheTogaW5saW5lLWJsb2NrICFpbXBvcnRhbnQ7CisJdGV4dC1pbmRlbnQ6IDBweCAhaW1wb3J0YW50OworfQorCisucGFnZWRFbnRpdHlMaXN0UGFuZWwgOkxJTksgeworCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKK30KKworLnBhZ2VkRW50aXR5TGlzdFBhbmVsIDpIT1ZFUiB7CisJdGV4dC1kZWNvcmF0aW9uOiBub25lOworfQorCisucGFnZWRFbnRpdHlMaXN0UGFuZWwgc3Bhbi5wcmV2IHsKKyAgICBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzL2Zvcm1zL3Jlc3VsdHNldF9wcmV2aW91cy5wbmcpIG5vLXJlcGVhdDsKKyAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisgICAgb3BhY2l0eTowLjQ7CisgICAgZmlsdGVyOmFscGhhKG9wYWNpdHk9NDApOyAvKiBGb3IgSUU4IGFuZCBlYXJsaWVyICovCisgICAgd2lkdGg6IDE0cHg7CisgICAgaGVpZ2h0OiAxNHB4OworICAgIGJvcmRlcjogbm9uZTsKKyAgICBtYXJnaW46IDBweDsKKyAgICBwYWRkaW5nOiAwcHg7Cit9CisKKy5wYWdlZEVudGl0eUxpc3RQYW5lbCBzcGFuLm5leHQgeworICAgIGJhY2tncm91bmQ6IHVybChpbWFnZXMvZm9ybXMvcmVzdWx0c2V0X25leHQucG5nKSBuby1yZXBlYXQ7CisgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgIG9wYWNpdHk6MC40OworICAgIGZpbHRlcjphbHBoYShvcGFjaXR5PTQwKTsgLyogRm9yIElFOCBhbmQgZWFybGllciAqLworICAgIHdpZHRoOiAxNHB4OworICAgIGhlaWdodDogMTRweDsKKyAgICBib3JkZXI6IG5vbmU7CisgICAgbWFyZ2luOiAwcHg7CisgICAgcGFkZGluZzogMHB4OworfQorCisucGFnZWRFbnRpdHlMaXN0UGFuZWwgc3Bhbi5maXJzdCB7CisgICAgYmFja2dyb3VuZDogdXJsKGltYWdlcy9mb3Jtcy9yZXN1bHRzZXRfZmlyc3QucG5nKSBuby1yZXBlYXQ7CisgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICAgIG9wYWNpdHk6MC40OworICAgIGZpbHRlcjphbHBoYShvcGFjaXR5PTQwKTsgLyogRm9yIElFOCBhbmQgZWFybGllciAqLworICAgIHdpZHRoOiAxNHB4OworICAgIGhlaWdodDogMTRweDsKKyAgICBib3JkZXI6IG5vbmU7CisgICAgbWFyZ2luOiAwcHg7CisgICAgcGFkZGluZzogMHB4OworfQorCisucGFnZWRFbnRpdHlMaXN0UGFuZWwgc3Bhbi5sYXN0IHsKKyAgICBiYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzL2Zvcm1zL3Jlc3VsdHNldF9sYXN0LnBuZykgbm8tcmVwZWF0OworICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKKyAgICBvcGFjaXR5OjAuNDsKKyAgICBmaWx0ZXI6YWxwaGEob3BhY2l0eT00MCk7IC8qIEZvciBJRTggYW5kIGVhcmxpZXIgKi8KKyAgICB3aWR0aDogMTRweDsKKyAgICBoZWlnaHQ6IDE0cHg7CisgICAgYm9yZGVyOiBub25lOworICAgIG1hcmdpbjogMHB4OworICAgIHBhZGRpbmc6IDBweDsKK30KKworLnBhZ2VkRW50aXR5TGlzdFBhbmVsIGEucHJldiB7CisJYmFja2dyb3VuZDogdXJsKGltYWdlcy9mb3Jtcy9yZXN1bHRzZXRfcHJldmlvdXMucG5nKSBuby1yZXBlYXQ7CisJZGlzcGxheTogaW5saW5lLWJsb2NrOworCXdpZHRoOiAxNHB4OworCWhlaWdodDogMTRweDsKKwlib3JkZXI6IG5vbmU7CisJbWFyZ2luOiAwcHg7CisgICAgcGFkZGluZzogMHB4OworfQorCisucGFnZWRFbnRpdHlMaXN0UGFuZWwgYS5uZXh0IHsKKwliYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzL2Zvcm1zL3Jlc3VsdHNldF9uZXh0LnBuZykgbm8tcmVwZWF0OworCWRpc3BsYXk6IGlubGluZS1ibG9jazsgCisJd2lkdGg6IDE0cHg7CisJaGVpZ2h0OiAxNHB4OworCWJvcmRlcjogbm9uZTsKKwltYXJnaW46IDBweDsKKyAgICBwYWRkaW5nOiAwcHg7Cit9CisKKy5wYWdlZEVudGl0eUxpc3RQYW5lbCBhLmZpcnN0IHsKKwliYWNrZ3JvdW5kOiB1cmwoaW1hZ2VzL2Zvcm1zL3Jlc3VsdHNldF9maXJzdC5wbmcpIG5vLXJlcGVhdDsKKwlkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CisJd2lkdGg6IDE0cHg7CisJaGVpZ2h0OiAxNHB4OworCWJvcmRlcjogbm9uZTsKKwltYXJnaW46IDBweDsKKyAgICBwYWRkaW5nOiAwcHg7Cit9CisKKy5wYWdlZEVudGl0eUxpc3RQYW5lbCBhLmxhc3QgeworCWJhY2tncm91bmQ6IHVybChpbWFnZXMvZm9ybXMvcmVzdWx0c2V0X2xhc3QucG5nKSBuby1yZXBlYXQ7CisJZGlzcGxheTogaW5saW5lLWJsb2NrOworCXdpZHRoOiAxNHB4OworCWhlaWdodDogMTRweDsKKwlib3JkZXI6IG5vbmU7CisJbWFyZ2luOiAwcHg7CisgICAgcGFkZGluZzogMHB4OworfQorCisuYWRtaW5Gb3Jtc0ZlZWRiYWNrUGFuZWwgeworCWJhY2tncm91bmQtY29sb3I6ICNGMkZBRkY7CisJY29sb3I6ICNmZjMzMDA7CisJcG9zaXRpb246YWJzb2x1dGU7CisJbGVmdDo1NTBweDsKKwl3aWR0aDogNDgwcHg7CisJYm90dG9tOiAxNnB4OworCXotaW5kZXg6OTk5OworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2RlZmF1bHQtdGhlbWUueG1sIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvZGVmYXVsdC10aGVtZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2U5MzA0MAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2RlZmF1bHQtdGhlbWUueG1sCkBAIC0wLDAgKzEsMzU4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPHRoZW1lIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIA0KKyAgICB4c2k6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbj0idGhlbWUueHNkIj4NCisNCisJPCEtLSBDb2xvcnMgLS0+DQorDQorCTxjb2xvciBuYW1lPSJtYWluQmFja2dyb3VuZENvbG9yIiB2YWx1ZT0iMHhFRUYwRUIiIA0KKwkJCQlkZXNjcmlwdGlvbj0ibWFpbiBiYWNrZ3JvdW5kIGNvbG9yIiAvPg0KKw0KKwk8Y29sb3IgbmFtZT0iYmFzZWJnY29sb3JpemVyIiB2YWx1ZT0iMHhCREMwREIiIA0KKwkJCQlkZXNjcmlwdGlvbj0iQ29sb3IgZm9yIGJhY2tncm91bmQiIC8+DQorCQkJCQ0KKwk8Y29sb3IgbmFtZT0iYmFzZU1vdXNlY29sb3JpemVyIiB2YWx1ZT0iMHhCREMwREIiIA0KKwkJCQlkZXNjcmlwdGlvbj0iQ29sb3IgTW91c2VvdmVyIGNvbG9yIGZvciBsaXN0IGl0ZW1zIiAvPg0KKwkNCisJPGNvbG9yIG5hbWU9ImJhc2VNb3VzZU92ZXJjb2xvcml6ZXIiIHZhbHVlPSIweEJEQzBEQiIgDQorCQkJCWRlc2NyaXB0aW9uPSJDb2xvciBNb3VzZW92ZXIgY29sb3IgZm9yIGxpc3QgaXRlbXMiIC8+CQ0KKwkNCisJPGNvbG9yIG5hbWU9InN0eWxlTWVudUJhckJhc2VDb2xvciIgdmFsdWU9IjB4MDAwMDg4IiANCisJCQkJZGVzY3JpcHRpb249Im1lbnUgYmFyIGJhY2tncm91bmQgY29sb3IiIC8+CQkJCQ0KKwkNCisJPGNvbG9yIG5hbWU9Im1haW5Cb3JkZXJDb2xvciIgdmFsdWU9IjB4Q0NDQ0NDIiANCisJCQkJZGVzY3JpcHRpb249Im1haW4gYm9yZGVyIGNvbG9yIiAvPg0KKwkJCQkNCisJPGNvbG9yIG5hbWU9InNlY29uZEJvcmRlckNvbG9yIiB2YWx1ZT0iMHhFMEUwRTAiIA0KKwkJCQlkZXNjcmlwdGlvbj0ibWFpbiBib3JkZXIgY29sb3IiIC8+CQ0KKwkJDQorCTxjb2xvciBuYW1lPSJtZW51QmFja2dyb3VuZENvbG9yIiB2YWx1ZT0iMHhFRkVGRUYiIA0KKwkJCQlkZXNjcmlwdGlvbj0ibWFpbiBib3JkZXIgY29sb3IiIC8+DQorCQkJCQ0KKwk8Y29sb3IgbmFtZT0ibWVudVRleHRDb2xvciIgdmFsdWU9IjB4NjY2NjY2IiANCisJCQkJZGVzY3JpcHRpb249ImNvbG9yIG9mIHRleHQgZm9yIG1lbnVzIiAvPg0KKwkNCisJPGNvbG9yIG5hbWU9Im1lbnVUZXh0RGlzYWJsZWRDb2xvciIgdmFsdWU9IjB4QkJCQkJCIiANCisJCQkJZGVzY3JpcHRpb249ImNvbG9yIG9mIHRleHQgZm9yIG1lbnVzIiAvPgkJDQorCQ0KKwk8IS0tIEljb25zIC0tPg0KKwk8cmVzb3VyY2UgbmFtZT0ibG9nb19pbWFnZSIgDQorCQkJCWRlc2NyaXB0aW9uPSJMb2dvIHRvIGRpc3BsYXkgb24gTWFpbiBCRyBOYXZpIiANCisJCQkJbGljZW5zZT0iQVBMIg0KKwkJCQlzcmM9InB1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvZ2VuZXJhbC9sb2dvLnBuZyIgLz4NCisJDQorCTxyZXNvdXJjZSBuYW1lPSJpY29uX2ZhY2Vib29rX3JzY19wbmciIA0KKwkJCQlkZXNjcmlwdGlvbj0iSWNvbiBmb3IgZmFjZWJvb2sgYnV0dG9uIGluIGxvZ2luIiANCisJCQkJbGljZW5zZT0iVW5rb3duIg0KKwkJCQlzcmM9InB1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvYXV0aC9pY29uX2ZhY2Vib29rLnBuZyIgLz4NCisJCQkJDQorCTxyZXNvdXJjZSBuYW1lPSJ3YXJuaW5nX3BvcHVwX2ljb25fcnNjIiANCisJCQkJZGVzY3JpcHRpb249IlRvb2xiYXIgSWNvbiIgDQorCQkJCWxpY2Vuc2U9IkZhbUZhbSBJY29uIFNldCINCisJCQkJc3JjPSJwdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvZXJyb3IucG5nIiAvPgkNCisJCQkJDQorCTxyZXNvdXJjZSBuYW1lPSJpbmZvX3RleHRfaWNvbl9yc2MiIA0KKwkJCQlkZXNjcmlwdGlvbj0iSW5mbyBJY29uIiANCisJCQkJbGljZW5zZT0iRmFtRmFtIEljb24gU2V0Ig0KKwkJCQlzcmM9InB1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvZ2VuZXJhbC9pbmZvcm1hdGlvbi5wbmciIC8+DQorCQ0KKwk8IS0tIFNhdmUgVG9vbGJhciAoZm9yIGV4YW1wbGUgQWRtaW4gc2VjdGlvbikgLS0+DQorCQ0KKwk8cmVzb3VyY2UgbmFtZT0iZmlsZXNhdmVfcnNjIiANCisJCQkJZGVzY3JpcHRpb249IlNhdmUgSWNvbiIgDQorCQkJCWxpY2Vuc2U9IkZhbUZhbSBJY29uIFNldCINCisJCQkJc3JjPSJwdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvZGlzay5wbmciIC8+DQorDQorCTxyZXNvdXJjZSBuYW1lPSJlZGl0X2FkZF9yc2MiIA0KKwkJCQlkZXNjcmlwdGlvbj0iU2F2ZSBJY29uIiANCisJCQkJbGljZW5zZT0iQVBMIEF1dGhvciBzZWJhd2FnbmVyIg0KKwkJCQlzcmM9InB1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvZ2VuZXJhbC9wbHVzX2ljb24ucG5nIiAvPg0KKw0KKwk8cmVzb3VyY2UgbmFtZT0icmVsb2FkX3JzYyIgDQorCQkJCWRlc2NyaXB0aW9uPSJTYXZlIEljb24iIA0KKwkJCQlsaWNlbnNlPSJGYW1GYW0gSWNvbiBTZXQiDQorCQkJCXNyYz0icHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS9nZW5lcmFsL2Fycm93X3JlZnJlc2hfc21hbGwucG5nIiAvPg0KKwkNCisJPHJlc291cmNlIG5hbWU9ImJ1dHRvbl9jYW5jZWxfcnNjIiANCisJCQkJZGVzY3JpcHRpb249IlNhdmUgSWNvbiIgDQorCQkJCWxpY2Vuc2U9IkFQTCBBdXRob3Igc2ViYXdhZ25lciINCisJCQkJc3JjPSJwdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvY2FuY2VsX2ljb24ucG5nIiAvPg0KKw0KKwk8cmVzb3VyY2UgbmFtZT0iYWRkX3JzYyIgDQorCQkJCWRlc2NyaXB0aW9uPSJFZGl0IEFkZCBJY29uIiANCisJCQkJbGljZW5zZT0iQVBMIEF1dGhvciBzZWJhd2FnbmVyIg0KKwkJCQlzcmM9InB1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvZ2VuZXJhbC9hZGQucG5nIiAvPg0KKwkJCQkNCisJPHJlc291cmNlIG5hbWU9ImRhdGVfaWNvbl9yc2MiIA0KKwkJCQlkZXNjcmlwdGlvbj0iRWRpdCBBZGQgSWNvbiIgDQorCQkJCWxpY2Vuc2U9IkZhbUZhbSBJY29uIFNldCINCisJCQkJc3JjPSJwdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvY2FsZW5kYXJfdmlld193ZWVrLnBuZyIgLz4NCisJCQkJDQorCTwhLS0gU29ydGVkIGxpc3QgLS0+DQorCQ0KKwk8cmVzb3VyY2UgbmFtZT0ic3RlcF9iYWNrX3R3b19hcnJvdyIgDQorCQkJCWRlc2NyaXB0aW9uPSJTdGVwIHRvIGZpcnN0IiANCisJCQkJbGljZW5zZT0iRmFtRmFtIEljb24gU2V0Ig0KKwkJCQlzcmM9InB1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvZ2VuZXJhbC9yZXN1bHRzZXRfZmlyc3QucG5nIiAvPg0KKwkJCQkNCisJPHJlc291cmNlIG5hbWU9InN0ZXBfZndkX3R3b19hcnJvdyIgDQorCQkJCWRlc2NyaXB0aW9uPSJTdGVwIHRvIGxhc3QiIA0KKwkJCQlsaWNlbnNlPSJGYW1GYW0gSWNvbiBTZXQiDQorCQkJCXNyYz0icHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS9nZW5lcmFsL3Jlc3VsdHNldF9sYXN0LnBuZyIgLz4NCisJCQkJCQkNCisgICAgPHJlc291cmNlIG5hbWU9InN0ZXBfYmFja19hcnJvdyIgDQorICAgIAkJCWRlc2NyaXB0aW9uPSJTdGVwIG9uZSBiYWNrIiANCisJCQkJbGljZW5zZT0iRmFtRmFtIEljb24gU2V0Ig0KKwkJCQlzcmM9InB1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvZ2VuZXJhbC9yZXN1bHRzZXRfcHJldmlvdXMucG5nIiAvPg0KKyAgICANCisgICAgPHJlc291cmNlIG5hbWU9InN0ZXBfZndkX2Fycm93IiANCisgICAgCQkJZGVzY3JpcHRpb249IlN0ZXAgb25lIG5leHQiIA0KKwkJCQlsaWNlbnNlPSJGYW1GYW0gSWNvbiBTZXQiDQorCQkJCXNyYz0icHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS9nZW5lcmFsL3Jlc3VsdHNldF9uZXh0LnBuZyIgLz4NCisJCQkJDQorICAgIDxyZXNvdXJjZSBuYW1lPSJzb3J0X3VwX3JzYyIgDQorICAgIAkJCWRlc2NyaXB0aW9uPSJTb3J0IHVwIiANCisJCQkJbGljZW5zZT0iRmFtRmFtIEljb24gU2V0Ig0KKwkJCQlzcmM9InB1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvZ2VuZXJhbC9yZXN1bHRzZXRfdXAucG5nIiAvPg0KKyAgICANCisgICAgPHJlc291cmNlIG5hbWU9InNvcnRfZG93bl9yc2MiIA0KKyAgICAJCQlkZXNjcmlwdGlvbj0iU29ydCBkb3duIiANCisJCQkJbGljZW5zZT0iRmFtRmFtIEljb24gU2V0Ig0KKwkJCQlzcmM9InB1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvZ2VuZXJhbC9yZXN1bHRzZXRfZG93bi5wbmciIC8+DQorICAgIA0KKyAgICA8IS0tIENoYXQgdG9vbGJhciAtLT4NCisgICAgDQorICAgIDxyZXNvdXJjZSBuYW1lPSJmb250X3N0eWxlIiANCisgICAgCQkJZGVzY3JpcHRpb249IkNoYW5nZSBmb250IHN0eWxlIGJ1dHRvbiIgDQorCQkJCWxpY2Vuc2U9IkZhbUZhbSBJY29uIFNldCINCisJCQkJc3JjPSJwdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvc3R5bGUucG5nIiAvPg0KKyAgICANCisgICAgPHJlc291cmNlIG5hbWU9ImZvbnRfYm9sZCIgDQorICAgIAkJCWRlc2NyaXB0aW9uPSJCb2xkIGZvbnQgc3R5bGUgYnV0dG9uIiANCisJCQkJbGljZW5zZT0iRmFtRmFtIEljb24gU2V0Ig0KKwkJCQlzcmM9InB1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvZ2VuZXJhbC90ZXh0X2JvbGQucG5nIiAvPg0KKyAgICANCisgICAgPHJlc291cmNlIG5hbWU9ImZvbnRfaXRhbGljIiANCisgICAgCQkJZGVzY3JpcHRpb249Ikl0YWxpYyBmb250IHN0eWxlIGJ1dHRvbiIgDQorCQkJCWxpY2Vuc2U9IkZhbUZhbSBJY29uIFNldCINCisJCQkJc3JjPSJwdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvdGV4dF9pdGFsaWMucG5nIiAvPg0KKyAgICANCisgICAgPHJlc291cmNlIG5hbWU9ImZvbnRfdW5kZXJsaW5lIiANCisgICAgCQkJZGVzY3JpcHRpb249IlVuZGVybGluZSBmb250IHN0eWxlIGJ1dHRvbiIgDQorCQkJCWxpY2Vuc2U9IkZhbUZhbSBJY29uIFNldCINCisJCQkJc3JjPSJwdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvdGV4dF91bmRlcmxpbmUucG5nIiAvPg0KKyAgICANCisgICAgPHJlc291cmNlIG5hbWU9ImZvbnRfY29sb3IiIA0KKyAgICAJCQlkZXNjcmlwdGlvbj0iQ2hhbmdlIGZvbnQgY29sb3IgYnV0dG9uIiANCisJCQkJbGljZW5zZT0iRmFtRmFtIEljb24gU2V0Ig0KKwkJCQlzcmM9InB1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvZ2VuZXJhbC9jb2xvcl9zd2F0Y2gucG5nIiAvPg0KKyAgICANCisgICAgPHJlc291cmNlIG5hbWU9Imh5cGVybGluayIgDQorICAgIAkJCWRlc2NyaXB0aW9uPSJJbnNlcnQgaHlwZXJsaW5rIGJ1dHRvbiIgDQorCQkJCWxpY2Vuc2U9IkZhbUZhbSBJY29uIFNldCINCisJCQkJc3JjPSJwdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvd29ybGRfbGluay5wbmciIC8+DQorCQkJCQ0KKwk8IS0tIFdoaXRlYm9hcmQgVG9vbGJhciAtLT4NCisJDQorCTxyZXNvdXJjZSBuYW1lPSJwbGFpbiIgDQorCQkJCWRlc2NyaXB0aW9uPSJUb29sYmFyIEljb24iIA0KKwkJCQlsaWNlbnNlPSJBUEwgYXV0aG9yIHNlYmF3YWduZXIiDQorCQkJCXNyYz0icHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS93aGl0ZWJvYXJkL2RlbGV0ZV9hbGwucG5nIiAvPg0KKwkNCisJPHJlc291cmNlIG5hbWU9InBsYWluU2xpZGVzIiANCisJCQkJZGVzY3JpcHRpb249IlRvb2xiYXIgSWNvbiIgDQorCQkJCWxpY2Vuc2U9IkZhbUZhbSBJY29uIFNldCINCisJCQkJc3JjPSJwdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvcGFnZV9kZWxldGUucG5nIiAvPg0KKwkNCisJPHJlc291cmNlIG5hbWU9ImFycm93X2RyYXdfcGFuZWxfdG9vbF9jdXJzb3IiIA0KKwkJCQlkZXNjcmlwdGlvbj0iVG9vbGJhciBJY29uIiANCisJCQkJbGljZW5zZT0iQVBMIEF1dGhvciBzZWJhd2FnbmVyIg0KKwkJCQlzcmM9InB1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvd2hpdGVib2FyZC9hcnJvd19jdXJzb3JfdG9vbC5wbmciIC8+DQorDQorCTxyZXNvdXJjZSBuYW1lPSJzYXZlb2JqIiANCisJCQkJZGVzY3JpcHRpb249IlRvb2xiYXIgSWNvbiIgDQorCQkJCWxpY2Vuc2U9IkZhbUZhbSBJY29uIFNldCINCisJCQkJc3JjPSJwdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvZGlzay5wbmciIC8+DQorDQorCTxyZXNvdXJjZSBuYW1lPSJyZXZlcnQiIA0KKwkJCQlkZXNjcmlwdGlvbj0iVG9vbGJhciBJY29uIiANCisJCQkJbGljZW5zZT0iRmFtRmFtIEljb24gU2V0Ig0KKwkJCQlzcmM9InB1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvd2hpdGVib2FyZC9hcnJvd19yb3RhdGVfYW50aWNsb2Nrd2lzZS5wbmciIC8+DQorDQorCTxyZXNvdXJjZSBuYW1lPSJuZXh0IiANCisJCQkJZGVzY3JpcHRpb249IlRvb2xiYXIgSWNvbiIgDQorCQkJCWxpY2Vuc2U9IkZhbUZhbSBJY29uIFNldCINCisJCQkJc3JjPSJwdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvYXJyb3dfcm90YXRlX2Nsb2Nrd2lzZS5wbmciIC8+DQorDQorCTxyZXNvdXJjZSBuYW1lPSJtZW51cG9pbnRlcl9yc2MiIA0KKwkJCQlkZXNjcmlwdGlvbj0iVG9vbGJhciBJY29uIiANCisJCQkJbGljZW5zZT0iQVBMIEF1dGhvciBzZWJhd2FnbmVyIg0KKwkJCQlzcmM9InB1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvd2hpdGVib2FyZC9tZW51cG9pbnRlci5wbmciIC8+DQorCQkJCQ0KKwk8cmVzb3VyY2UgbmFtZT0icG9pbnRlcl93aGl0ZWJvYXJkX21lbnVfcnNjIiANCisJCQkJZGVzY3JpcHRpb249IlRvb2xiYXIgSWNvbiIgDQorCQkJCWxpY2Vuc2U9IkFQTCBBdXRob3Igc2ViYXdhZ25lciINCisJCQkJc3JjPSJwdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvcG9pbnRlcldoaXRlQm9hcmRfbWVudV9yc2MucG5nIiAvPg0KKwkJCQkNCisJPHJlc291cmNlIG5hbWU9ImxldHRlciIgDQorCQkJCWRlc2NyaXB0aW9uPSJUb29sYmFyIEljb24iIA0KKwkJCQlsaWNlbnNlPSJBUEwgQXV0aG9yIHNlYmF3YWduZXIiDQorCQkJCXNyYz0icHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS93aGl0ZWJvYXJkL2xldHRlci5wbmciIC8+DQorDQorCTxyZXNvdXJjZSBuYW1lPSJwYWludCIgDQorCQkJCWRlc2NyaXB0aW9uPSJUb29sYmFyIEljb24iIA0KKwkJCQlsaWNlbnNlPSJGYW1GYW0gSWNvbiBTZXQiDQorCQkJCXNyYz0icHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS93aGl0ZWJvYXJkL3BlbmNpbC5wbmciIC8+DQorCQ0KKwk8cmVzb3VyY2UgbmFtZT0ibGluZV9yc2MiIA0KKwkJCQlkZXNjcmlwdGlvbj0iVG9vbGJhciBJY29uIiANCisJCQkJbGljZW5zZT0iQVBMIEF1dGhvciBzZWJhd2FnbmVyIg0KKwkJCQlzcmM9InB1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvd2hpdGVib2FyZC9saW5lLnBuZyIgLz4JDQorCQ0KKwk8cmVzb3VyY2UgbmFtZT0idWxpbmVfcnNjIiANCisJCQkJZGVzY3JpcHRpb249IlRvb2xiYXIgSWNvbiIgDQorCQkJCWxpY2Vuc2U9IkFQTCBBdXRob3Igc2ViYXdhZ25lciINCisJCQkJc3JjPSJwdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvdWxpbmUucG5nIiAvPgkNCisJCQ0KKwk8cmVzb3VyY2UgbmFtZT0icmVjdGFuZ2xlIiANCisJCQkJZGVzY3JpcHRpb249IlRvb2xiYXIgSWNvbiIgDQorCQkJCWxpY2Vuc2U9IkFQTCBBdXRob3Igc2ViYXdhZ25lciINCisJCQkJc3JjPSJwdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvcmVjdGFuZ2xlLnBuZyIgLz4JDQorDQorCTxyZXNvdXJjZSBuYW1lPSJlbGxpcHNlIiANCisJCQkJZGVzY3JpcHRpb249IlRvb2xiYXIgSWNvbiIgDQorCQkJCWxpY2Vuc2U9IkFQTCBBdXRob3Igc2ViYXdhZ25lciINCisJCQkJc3JjPSJwdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvZWxsaXBzZS5wbmciIC8+CQ0KKwkJCQkNCisJPHJlc291cmNlIG5hbWU9ImRyYXdhcnJvd2ljb25fcnNjIiANCisJCQkJZGVzY3JpcHRpb249IlRvb2xiYXIgSWNvbiIgDQorCQkJCWxpY2Vuc2U9IkFQTCBBdXRob3Igc2ViYXdhZ25lciINCisJCQkJc3JjPSJwdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvZHJhd2Fycm93aWNvbi5wbmciIC8+CQkJDQorCQkNCisJPCEtLSB3aGl0ZWJvYXJkIGdlbmVyYWwgLS0+CQkNCisJCQkJDQorCTxyZXNvdXJjZSBuYW1lPSJib3VuZGluZ19ib3hfZGVsZXRlX2l0ZW1fcnNjIiANCisJCQkJZGVzY3JpcHRpb249IlRvb2xiYXIgSWNvbiIgDQorCQkJCWxpY2Vuc2U9IkFQTCBBdXRob3Igc2ViYXdhZ25lciINCisJCQkJc3JjPSJwdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvY2FuY2VsX2ljb25fc21hbGwucG5nIiAvPgkNCisJDQorCTxyZXNvdXJjZSBuYW1lPSJib3VuZGluZ19ib3hfdGV4dGVkaXRfaXRlbV9yc2MiIA0KKwkJCQlkZXNjcmlwdGlvbj0iVG9vbGJhciBJY29uIiANCisJCQkJbGljZW5zZT0iQVBMIEF1dGhvciBzZWJhd2FnbmVyIg0KKwkJCQlzcmM9InB1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvd2hpdGVib2FyZC90ZXh0X3NpZ25hdHVyZS5wbmciIC8+CQkJCQ0KKwkJCQkJDQorCTwhLS0gZG9jdW1lbnQgVG9vbHMgLS0+CQ0KKwkNCisJPHJlc291cmNlIG5hbWU9ImRvY19uZXh0IiANCisJCQkJZGVzY3JpcHRpb249IlRvb2xiYXIgSWNvbiIgDQorCQkJCWxpY2Vuc2U9IkFQTCBBdXRob3Igc2ViYXdhZ25lciINCisJCQkJc3JjPSJwdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvZG9jX25leHQucG5nIiAvPgkJDQorCQkJCQ0KKwk8cmVzb3VyY2UgbmFtZT0iZG9jX3ByZSIgDQorCQkJCWRlc2NyaXB0aW9uPSJUb29sYmFyIEljb24iIA0KKwkJCQlsaWNlbnNlPSJBUEwgQXV0aG9yIHNlYmF3YWduZXIiDQorCQkJCXNyYz0icHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS93aGl0ZWJvYXJkL2RvY19wcmUucG5nIiAvPgkJDQorCQkJCQ0KKwk8cmVzb3VyY2UgbmFtZT0iZG9jX2ZpcnN0IiANCisJCQkJZGVzY3JpcHRpb249IlRvb2xiYXIgSWNvbiIgDQorCQkJCWxpY2Vuc2U9IkFQTCBBdXRob3Igc2ViYXdhZ25lciINCisJCQkJc3JjPSJwdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvZG9jX2ZpcnN0LnBuZyIgLz4JCQ0KKwkJCQkNCisJPHJlc291cmNlIG5hbWU9ImRvY19sYXN0IiANCisJCQkJZGVzY3JpcHRpb249IlRvb2xiYXIgSWNvbiIgDQorCQkJCWxpY2Vuc2U9IkFQTCBBdXRob3Igc2ViYXdhZ25lciINCisJCQkJc3JjPSJwdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvZG9jX2xhc3QucG5nIiAvPgkJDQorCQkJCQ0KKwk8IS0tIHByb3BlcnR5IHBhbmVsIC0tPgkNCisJPHJlc291cmNlIG5hbWU9ImNvbG9ybGluZWNob29zZV9yc2MiIA0KKwkJCQlkZXNjcmlwdGlvbj0iUHJvcGVydHkgYmFyIGljb24gbGluZSBjb2xvciIgDQorCQkJCWxpY2Vuc2U9IkZhbUZhbSBJY29uIFNldCINCisJCQkJc3JjPSJwdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvcGVuY2lsLnBuZyIgLz4NCisJDQorCTxyZXNvdXJjZSBuYW1lPSJjb2xvcmZpbGxjaG9vc2VfcnNjIiANCisJCQkJZGVzY3JpcHRpb249IlByb3BlcnR5IGJhciBpY29uIGZpbGwgY29sb3IiIA0KKwkJCQlsaWNlbnNlPSJGYW1GYW0gSWNvbiBTZXQiDQorCQkJCXNyYz0icHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS93aGl0ZWJvYXJkL3BhaW50Y2FuLnBuZyIgLz4NCisJDQorCTxyZXNvdXJjZSBuYW1lPSJjb2xvcl9sb2NrX3JzYyIgDQorCQkJCWRlc2NyaXB0aW9uPSJQcm9wZXJ0eSBiYXIgaWNvbiBjb2xvciBsb2NrIiANCisJCQkJbGljZW5zZT0iRmFtRmFtIEljb24gU2V0Ig0KKwkJCQlzcmM9InB1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvd2hpdGVib2FyZC9sb2NrLnBuZyIgLz4NCisJDQorCTxyZXNvdXJjZSBuYW1lPSJjb2xvcl9sb2NrX29wZW5fcnNjIiANCisJCQkJZGVzY3JpcHRpb249IlByb3BlcnR5IGJhciBpY29uIGNvbG9yIGxvY2sgb3BlbiIgDQorCQkJCWxpY2Vuc2U9IkZhbUZhbSBJY29uIFNldCINCisJCQkJc3JjPSJwdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvbG9ja19vcGVuLnBuZyIgLz4JDQorCQkJCQ0KKwk8IS0tIERhc2hib2FyZCAtLT4NCisJDQorCTxyZXNvdXJjZSBuYW1lPSJpY29uX2J0bl9kYXNoYm9hcmRfMSIgDQorCQkJCWRlc2NyaXB0aW9uPSJJbmZvIEd1aWRlIEljb24iIA0KKwkJCQlsaWNlbnNlPSJBUEwgQXV0aG9yIHNlYmF3YWduZXIiDQorCQkJCXNyYz0icHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS9kYXNoYm9hcmQvd2l6emFyZF9idXR0b25fMS5wbmciIC8+DQorCQkJCQ0KKyAgICA8cmVzb3VyY2UgbmFtZT0iaWNvbl9idG5fZGFzaGJvYXJkXzIiIA0KKyAgICAJCQlkZXNjcmlwdGlvbj0iSW5mbyBHdWlkZSBJY29uIiANCisJCQkJbGljZW5zZT0iQVBMIEF1dGhvciBzZWJhd2FnbmVyIg0KKwkJCQlzcmM9InB1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvZGFzaGJvYXJkL3dpenphcmRfYnV0dG9uXzIucG5nIiAvPg0KKwkJCQkNCisgICAgPHJlc291cmNlIG5hbWU9Imljb25fYnRuX2Rhc2hib2FyZF8zIiANCisgICAgCQkJZGVzY3JpcHRpb249IkluZm8gR3VpZGUgSWNvbiIgDQorCQkJCWxpY2Vuc2U9IkFQTCBBdXRob3Igc2ViYXdhZ25lciINCisJCQkJc3JjPSJwdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2Rhc2hib2FyZC93aXp6YXJkX2J1dHRvbl8zLnBuZyIgLz4NCisJCQkJDQorICAgIDxyZXNvdXJjZSBuYW1lPSJpY29uX2J0bl9kYXNoYm9hcmRfNCIgDQorICAgIAkJCWRlc2NyaXB0aW9uPSJJbmZvIEd1aWRlIEljb24iIA0KKwkJCQlsaWNlbnNlPSJBUEwgQXV0aG9yIHNlYmF3YWduZXIiDQorCQkJCXNyYz0icHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS9kYXNoYm9hcmQvd2l6emFyZF9idXR0b25fNC5wbmciIC8+DQorCQ0KKwk8cmVzb3VyY2UgbmFtZT0iaWNvbl9idG5fcnNzX2NvbmZlcmVuY2UiIA0KKyAgICAJCQlkZXNjcmlwdGlvbj0iUlNTIFRhYiBJY29uIiANCisJCQkJbGljZW5zZT0iRmFtRmFtIEljb24gU2V0Ig0KKwkJCQlzcmM9InB1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvZGFzaGJvYXJkL2ZlZWQucG5nIiAvPg0KKwkNCisJPHJlc291cmNlIG5hbWU9Imljb25fYnRuX2NoYXRfZGFzaGJvYXJkIiANCisJCQkJZGVzY3JpcHRpb249IkNoYXQgVGFiIEljb24iIA0KKwkJCQlsaWNlbnNlPSJGYW1GYW0gSWNvbiBTZXQiDQorCQkJCXNyYz0icHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS9kYXNoYm9hcmQvY29tbWVudHMucG5nIiAvPg0KKwkNCisgICAgPHJlc291cmNlIG5hbWU9Imljb25fYnRuX3Jvb21zX2NvbmZlcmVuY2UiIA0KKwkJCQlkZXNjcmlwdGlvbj0iQ29uZmVyZW5jZSBSb29tIFRhYiBJY29uIiANCisJCQkJbGljZW5zZT0iQVBMIGF1dGhvciBzZWJhd2FnbmVyIg0KKwkJCQlzcmM9InB1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvZGFzaGJvYXJkL2NvbmZlcmVuY2VfaWNvbl9ub3JtYWwucG5nIiAvPgkNCisJCQkJDQorCTwhLS0gQ29uZmVyZW5jZSByb29tIC0tPgkNCisJPHJlc291cmNlIG5hbWU9InVzZXJzX3RhYl9idG4iIA0KKwkJCQlkZXNjcmlwdGlvbj0iQ29uZmVyZW5jZSBSb29tIFRhYiBVc2VyIiANCisJCQkJbGljZW5zZT0iRmFtRmFtIEljb24gU2V0Ig0KKwkJCQlzcmM9InB1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvY29uZmVyZW5jZS9ncm91cC5wbmciIC8+DQorCQkNCisJPHJlc291cmNlIG5hbWU9ImZpbGVzX3RhYl9idG4iIA0KKwkJCQlkZXNjcmlwdGlvbj0iQ29uZmVyZW5jZSBSb29tIFRhYiBGaWxlcyIgDQorCQkJCWxpY2Vuc2U9IkZhbUZhbSBJY29uIFNldCINCisJCQkJc3JjPSJwdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2NvbmZlcmVuY2UvZm9sZGVyX2V4cGxvcmUucG5nIiAvPg0KKwkNCisJPHJlc291cmNlIG5hbWU9ImV4aXRfYnRuX3JzYyIgDQorCQkJCWRlc2NyaXB0aW9uPSJDb25mZXJlbmNlIFJvb20gVGFiIEljb24iIA0KKwkJCQlsaWNlbnNlPSJBUEwgYXV0aG9yIHNlYmF3YWduZXIiDQorCQkJCXNyYz0icHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS9jb25mZXJlbmNlL2V4aXRfYnV0dG9uLnBuZyIgLz4JCQkNCisJDQorPC90aGVtZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9kZWZhdWx0L19iaWdfcHJvZmlsZV9waWMuanBnIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvZGVmYXVsdC9fYmlnX3Byb2ZpbGVfcGljLmpwZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wN2ExMjg2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvZGVmYXVsdC9fYmlnX3Byb2ZpbGVfcGljLmpwZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9kZWZhdWx0L19jaGF0X3Byb2ZpbGVfcGljLmpwZyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2RlZmF1bHQvX2NoYXRfcHJvZmlsZV9waWMuanBnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1ZGY0ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9kZWZhdWx0L19jaGF0X3Byb2ZpbGVfcGljLmpwZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9kZWZhdWx0L19wcm9maWxlX3Bob25lLnBuZyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2RlZmF1bHQvX3Byb2ZpbGVfcGhvbmUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllZDY0NDkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9kZWZhdWx0L19wcm9maWxlX3Bob25lLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9kZWZhdWx0L19wcm9maWxlX3Byb2ZpbGVfcGljLmpwZyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2RlZmF1bHQvX3Byb2ZpbGVfcHJvZmlsZV9waWMuanBnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiNjNmMDEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9kZWZhdWx0L19wcm9maWxlX3Byb2ZpbGVfcGljLmpwZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9kZWZhdWx0L190aHVtYl9kZWxldGVkLmpwZyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2RlZmF1bHQvX3RodW1iX2RlbGV0ZWQuanBnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4ZjA4OTUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9kZWZhdWx0L190aHVtYl9kZWxldGVkLmpwZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9kZWZhdWx0L2RlbGV0ZWQuanBnIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvZGVmYXVsdC9kZWxldGVkLmpwZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MzJjOWJkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvZGVmYXVsdC9kZWxldGVkLmpwZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9kZWZhdWx0L2RlbGV0ZWQub2RwIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvZGVmYXVsdC9kZWxldGVkLm9kcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTIwNDRjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvZGVmYXVsdC9kZWxldGVkLm9kcApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9kZWZhdWx0L2RlbGV0ZWQucGRmIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvZGVmYXVsdC9kZWxldGVkLnBkZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NWVmMDc4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvZGVmYXVsdC9kZWxldGVkLnBkZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9kZWZhdWx0L2RlbGV0ZWQuc3dmIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvZGVmYXVsdC9kZWxldGVkLnN3ZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjFkZjI0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvZGVmYXVsdC9kZWxldGVkLnN3ZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9kZWZhdWx0L2RlbGV0ZWQueGNmIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvZGVmYXVsdC9kZWxldGVkLnhjZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42N2IyZjg1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvZGVmYXVsdC9kZWxldGVkLnhjZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9kZWZhdWx0L3Byb2ZpbGVfcGljLmpwZyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2RlZmF1bHQvcHJvZmlsZV9waWMuanBnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiNjNmMDEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9kZWZhdWx0L3Byb2ZpbGVfcGljLmpwZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9lbWJlZC1jb21wcmVzc2VkLmpzIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvZW1iZWQtY29tcHJlc3NlZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40N2NkYzIwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvZW1iZWQtY29tcHJlc3NlZC5qcwpAQCAtMCwwICsxLDg5OCBAQAorLyoNCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgIA0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAgICAJICANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAgdW5kZXIgdGhlIExpY2Vuc2UuDQorICANCisqLw0KK3ZhciAkZGh0bWw9dHJ1ZTt2YXIgJGFzMz1mYWxzZTt2YXIgJGpzMT10cnVlO3ZhciAkc3dmNz1mYWxzZTt2YXIgJHN3Zjg9ZmFsc2U7dmFyICRzdmc9ZmFsc2U7dmFyICRhczI9ZmFsc2U7dmFyICRzd2Y5PWZhbHNlO3ZhciAkcHJvZmlsZT1mYWxzZTt2YXIgJHJ1bnRpbWU9ImRodG1sIjt2YXIgJHN3ZjEwPWZhbHNlO3ZhciAkZGVidWc9ZmFsc2U7dmFyICRqMm1lPWZhbHNlO3RyeXsNCitpZihseil7DQorDQorfX0NCitjYXRjaChlKXsNCitsej17fX07bHouZW1iZWQ9e29wdGlvbnM6e30sc3dmOmZ1bmN0aW9uKCQxLCQyKXsNCitpZigkMj09bnVsbCl7DQorJDI9OA0KK307dmFyICQzPSQxLnVybDt2YXIgJDQ9dGhpcy5fX2dldHF1ZXJ5dXJsKCQzKTtpZigkMS5hY2Nlc3NpYmxlJiYkMS5hY2Nlc3NpYmxlIT0iZmFsc2UiKXsNCiskNC5mbGFzaHZhcnMrPSImYWNjZXNzaWJsZT10cnVlIg0KK307aWYoJDEuaGlzdG9yeSl7DQorJDQuZmxhc2h2YXJzKz0iJmhpc3Rvcnk9dHJ1ZSINCit9O2lmKCQxLmJnY29sb3IhPW51bGwpew0KKyQ0LmZsYXNodmFycys9IiZiZ2NvbG9yPSIrZXNjYXBlKCQxLmJnY29sb3IpDQorfTskNC5mbGFzaHZhcnMrPSImd2lkdGg9Iitlc2NhcGUoJDEud2lkdGgpOyQ0LmZsYXNodmFycys9IiZoZWlnaHQ9Iitlc2NhcGUoJDEuaGVpZ2h0KTskNC5mbGFzaHZhcnMrPSImX19senVybD0iK2VzY2FwZSgkMyk7JDQuZmxhc2h2YXJzKz0iJl9fbHptaW5pbXVtdmVyc2lvbj0iK2VzY2FwZSgkMik7JDQuZmxhc2h2YXJzKz0iJmlkPSIrZXNjYXBlKCQxLmlkKTt2YXIgJDM9JDQudXJsKyI/IiskNC5xdWVyeTt2YXIgJDU9e3dpZHRoOiQxLndpZHRoKyIiLGhlaWdodDokMS5oZWlnaHQrIiIsaWQ6JDEuaWQsYmdjb2xvcjokMS5iZ2NvbG9yLHdtb2RlOiQxLndtb2RlLGZsYXNodmFyczokNC5mbGFzaHZhcnMsYWxsb3dmdWxsc2NyZWVuOiQxLmFsbG93ZnVsbHNjcmVlbixmbGFzaDg6JDMsYXBwZW5kZGl2Omx6LmVtYmVkLl9nZXRBcHBlbmREaXYoJDEuaWQsJDEuYXBwZW5kZGl2aWQpfTtpZihsei5lbWJlZFskMS5pZF0pew0KK2FsZXJ0KCJXYXJuaW5nOiBhbiBhcHAgd2l0aCB0aGUgaWQ6ICIrJDEuaWQrIiBhbHJlYWR5IGV4aXN0cy4iKQ0KK307dmFyIGFwcD1sei5lbWJlZFskMS5pZF09bHouZW1iZWQuYXBwbGljYXRpb25zWyQxLmlkXT17cnVudGltZToic3dmIixfaWQ6JDEuaWQsc2V0Q2FudmFzQXR0cmlidXRlOmx6LmVtYmVkLl9zZXRDYW52YXNBdHRyaWJ1dGVTV0YsZ2V0Q2FudmFzQXR0cmlidXRlOmx6LmVtYmVkLl9nZXRDYW52YXNBdHRyaWJ1dGVTV0YsY2FsbE1ldGhvZDpsei5lbWJlZC5fY2FsbE1ldGhvZFNXRixfcmVhZHk6bHouZW1iZWQuX3JlYWR5LF9vbmxvYWQ6W10sX2dldFNXRkRpdjpsei5lbWJlZC5fZ2V0U1dGRGl2LGxvYWRlZDpmYWxzZSxfc2VuZE1vdXNlV2hlZWw6bHouZW1iZWQuX3NlbmRNb3VzZVdoZWVsLF9zZW5kQWxsS2V5c1VwOmx6LmVtYmVkLl9zZW5kQWxsS2V5c1VwU1dGLF9zZXRDYW52YXNBdHRyaWJ1dGVEZXF1ZXVlOmx6LmVtYmVkLl9zZXRDYW52YXNBdHRyaWJ1dGVEZXF1ZXVlLF9zZW5kUGVyY0xvYWQ6bHouZW1iZWQuX3NlbmRQZXJjTG9hZH07aWYoJDEuaGlzdG9yeT09ZmFsc2Upew0KK2x6LmVtYmVkLmhpc3RvcnkuYWN0aXZlPWZhbHNlDQorfTtsei5lbWJlZC5kb2pvLmFkZExvYWRlZExpc3RlbmVyKGx6LmVtYmVkLl9sb2FkZWQsYXBwKTtsei5lbWJlZC5kb2pvLnNldFN3ZigkNSwkMik7aWYoJDEuY2FuY2VsbW91c2V3aGVlbCE9dHJ1ZSYmKGx6LmVtYmVkLmJyb3dzZXIuT1M9PSJNYWMifHwoJDUud21vZGU9PSJ0cmFuc3BhcmVudCJ8fCQ1Lndtb2RlPT0ib3BhcXVlIikmJmx6LmVtYmVkLmJyb3dzZXIuT1M9PSJXaW5kb3dzIiYmKGx6LmVtYmVkLmJyb3dzZXIuaXNPcGVyYXx8bHouZW1iZWQuYnJvd3Nlci5pc0ZpcmVmb3gpKSl7DQoraWYobHouZW1iZWRbIm1vdXNld2hlZWwiXSl7DQorbHouZW1iZWQubW91c2V3aGVlbC5zZXRDYWxsYmFjayhhcHAsIl9zZW5kTW91c2VXaGVlbCIpDQorfX07aWYoKCQ1Lndtb2RlPT0idHJhbnNwYXJlbnQifHwkNS53bW9kZT09Im9wYXF1ZSIpJiZsei5lbWJlZC5icm93c2VyLk9TPT0iV2luZG93cyImJihsei5lbWJlZC5icm93c2VyLmlzT3BlcmF8fGx6LmVtYmVkLmJyb3dzZXIuaXNGaXJlZm94KSl7DQordmFyIGRpdj0kNS5hcHBlbmRkaXY7ZGl2Lm9ubW91c2VvdXQ9ZnVuY3Rpb24oJDEpew0KK2Rpdi5tb3VzZWlzb3V0c2lkZT10cnVlDQorfTtkaXYub25tb3VzZW92ZXI9ZnVuY3Rpb24oJDEpew0KK2Rpdi5tb3VzZWlzb3V0c2lkZT1mYWxzZQ0KK307ZGl2Ll9nb3Rtb3VzZXVwPWRvY3VtZW50Lm9ubW91c2V1cD1mdW5jdGlvbigkMSl7DQoraWYoZGl2Lm1vdXNlaXNvdXRzaWRlKXsNCithcHAuY2FsbE1ldGhvZCgiTHpNb3VzZUtlcm5lbC5fX21vdXNlVXBPdXRzaWRlSGFuZGxlcigpIikNCit9fX19LGxmYzpmdW5jdGlvbigkMSwkMil7DQoraWYoJDI9PSIiKXsNCiskMj0iLiINCit9ZWxzZXsNCitpZighJDJ8fHR5cGVvZiAkMiE9InN0cmluZyIpew0KK2FsZXJ0KCJXQVJOSU5HOiBsei5lbWJlZC5sZmMoKSByZXF1aXJlcyBhIHZhbGlkIHNlcnZlcnJvb3QgdG8gYmUgc3BlY2lmaWVkLiIpO3JldHVybg0KK319O2x6LmVtYmVkLm9wdGlvbnMuc2VydmVycm9vdD0kMjtpZihsei5lbWJlZC5icm93c2VyLmlzSUUpew0KK3ZhciAkMz0kMisibHBzL2luY2x1ZGVzL2V4Y2FudmFzLmpzIjt0aGlzLl9fZGh0bWxMb2FkU2NyaXB0KCQzKQ0KK307aWYobHouZW1iZWQuYnJvd3Nlci5pc0lFJiZsei5lbWJlZC5icm93c2VyLnZlcnNpb248N3x8bHouZW1iZWQuYnJvd3Nlci5pc1NhZmFyaSYmbHouZW1iZWQuYnJvd3Nlci52ZXJzaW9uPD00MTkuMyl7DQordmFyICQ0PSQxLmluZGV4T2YoImRlYnVnLmpzIil8fCQxLmluZGV4T2YoImJhY2t0cmFjZS5qcyIpO2lmKCQ0IT0tMSl7DQordmFyICQ1PSQxLnN1YnN0cmluZygkNCwkMS5sZW5ndGgtMyk7JDE9JDEuc3Vic3RyaW5nKDAsJDQpKyQ1KyItc2ltcGxlLmpzIg0KK319O3RoaXMuX19kaHRtbExvYWRTY3JpcHQoJDEpDQorfSxkaHRtbDpmdW5jdGlvbigkMSl7DQordmFyICQyPXRoaXMuX19nZXRxdWVyeXVybCgkMS51cmwsdHJ1ZSk7dmFyICQzPSQyLnVybCsiP2x6dD1vYmplY3QmIiskMi5xdWVyeTtsei5lbWJlZC5fX3Byb3BjYWNoZT17Ymdjb2xvcjokMS5iZ2NvbG9yLHdpZHRoOiQxLndpZHRoLmluZGV4T2YoIiUiKT09LTE/JDEud2lkdGgrInB4IjokMS53aWR0aCxoZWlnaHQ6JDEuaGVpZ2h0LmluZGV4T2YoIiUiKT09LTE/JDEuaGVpZ2h0KyJweCI6JDEuaGVpZ2h0LGlkOiQxLmlkLGFwcGVuZGRpdjpsei5lbWJlZC5fZ2V0QXBwZW5kRGl2KCQxLmlkLCQxLmFwcGVuZGRpdmlkKSx1cmw6JDMsY2FuY2Vsa2V5Ym9hcmRjb250cm9sOiQxLmNhbmNlbGtleWJvYXJkY29udHJvbCxzZXJ2ZXJyb290OiQxLnNlcnZlcnJvb3QsYXBwcm9vdDokMS5hcHByb290IT1udWxsPyQxLmFwcHJvb3Q6IiJ9O2lmKGx6LmVtYmVkWyQxLmlkXSl7DQorYWxlcnQoIldhcm5pbmc6IGFuIGFwcCB3aXRoIHRoZSBpZDogIiskMS5pZCsiIGFscmVhZHkgZXhpc3RzLiIpDQorfTt2YXIgJDQ9bHouZW1iZWRbJDEuaWRdPWx6LmVtYmVkLmFwcGxpY2F0aW9uc1skMS5pZF09e3J1bnRpbWU6ImRodG1sIixfaWQ6JDEuaWQsX3JlYWR5Omx6LmVtYmVkLl9yZWFkeSxfb25sb2FkOltdLGxvYWRlZDpmYWxzZSxzZXRDYW52YXNBdHRyaWJ1dGU6bHouZW1iZWQuX3NldENhbnZhc0F0dHJpYnV0ZURIVE1MLGdldENhbnZhc0F0dHJpYnV0ZTpsei5lbWJlZC5fZ2V0Q2FudmFzQXR0cmlidXRlREhUTUwsX3NlbmRBbGxLZXlzVXA6bHouZW1iZWQuX3NlbmRBbGxLZXlzVXBESFRNTH07aWYoJDEuaGlzdG9yeT09ZmFsc2Upew0KK2x6LmVtYmVkLmhpc3RvcnkuYWN0aXZlPWZhbHNlDQorfTt0aGlzLl9fZGh0bWxMb2FkU2NyaXB0KCQzKTtpZihsei5lbWJlZC5icm93c2VyLk9TPT0iV2luZG93cyImJmx6LmVtYmVkLmJyb3dzZXIuaXNGaXJlZm94KXsNCit3aW5kb3cuZm9jdXMoKQ0KK319LGFwcGxpY2F0aW9uczp7fSxfX2RodG1sTG9hZFNjcmlwdDpmdW5jdGlvbigkMSl7DQordmFyICQyPSc8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgbGFuZ3VhZ2U9IkphdmFTY3JpcHQxLjUiIHNyYz0iJyskMSsnIj48L3NjcmlwdD4nO2RvY3VtZW50LndyaXRlbG4oJDIpO3JldHVybiAkMg0KK30sX19kaHRtbExvYWRMaWJyYXJ5OmZ1bmN0aW9uKCQxKXsNCit2YXIgJDI9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7dGhpcy5fX3NldEF0dHIoJDIsInR5cGUiLCJ0ZXh0L2phdmFzY3JpcHQiKTt0aGlzLl9fc2V0QXR0cigkMiwic3JjIiwkMSk7ZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXS5hcHBlbmRDaGlsZCgkMik7cmV0dXJuICQyDQorfSxfX2dldHF1ZXJ5dXJsOmZ1bmN0aW9uKCQxLCQyKXsNCit2YXIgJDM9JDEuc3BsaXQoIj8iKTskMT0kM1swXTtpZigkMy5sZW5ndGg9PTEpew0KK3JldHVybiB7dXJsOiQxLGZsYXNodmFyczoiIixxdWVyeToiIn19O3ZhciAkND10aGlzLl9fcGFyc2VRdWVyeSgkM1sxXSk7dmFyICQ1PSIiO3ZhciAkNj0iIjt2YXIgJDc9bmV3IFJlZ0V4cCgiXFwrIiwiZyIpO2Zvcih2YXIgJDggaW4gJDQpew0KK2lmKCQ4PT0iInx8JDg9PW51bGwpew0KK2NvbnRpbnVlDQorfTt2YXIgJDk9JDRbJDhdO2lmKCQ4PT0ibHpyInx8JDg9PSJsenQifHwkOD09ImRlYnVnInx8JDg9PSJwcm9maWxlInx8JDg9PSJsemJhY2t0cmFjZSJ8fCQ4PT0ibHpjb25zb2xlZGVidWcifHwkOD09Imx6ZGVidWcifHwkOD09Imx6a3JhbmsifHwkOD09Imx6cHJvZmlsZSJ8fCQ4PT0ibHpjb3B5cmVzb3VyY2VzInx8JDg9PSJmYiJ8fCQ4PT0ic291cmNlbG9jYXRvcnMifHwkOD09Il9jYW52YXNfZGVidWcifHwkOD09Imx6c291cmNlYW5ub3RhdGlvbnMiKXsNCiskNSs9JDgrIj0iKyQ5KyImIg0KK307aWYoJDIpew0KK2lmKHdpbmRvd1skOF09PW51bGwpew0KK3dpbmRvd1skOF09dW5lc2NhcGUoJDkucmVwbGFjZSgkNywiICIpKQ0KK319OyQ2Kz0kOCsiPSIrJDkrIiYiDQorfTskNT0kNS5zdWJzdHIoMCwkNS5sZW5ndGgtMSk7JDY9JDYuc3Vic3RyKDAsJDYubGVuZ3RoLTEpO3JldHVybiB7dXJsOiQxLGZsYXNodmFyczokNixxdWVyeTokNX19LF9fcGFyc2VRdWVyeTpmdW5jdGlvbigkMSl7DQoraWYoJDEuaW5kZXhPZigiPSIpPT0tMSl7DQorcmV0dXJuDQorfTt2YXIgJDI9JDEuc3BsaXQoIiYiKTt2YXIgJDM9e307Zm9yKHZhciAkND0wOyQ0PCQyLmxlbmd0aDskNCsrKXsNCit2YXIgJDU9JDJbJDRdLnNwbGl0KCI9Iik7aWYoJDUubGVuZ3RoPT0xKXsNCitjb250aW51ZQ0KK307dmFyICQ2PSQ1WzBdO3ZhciAkNz0kNVsxXTskM1skNl09JDcNCit9O3JldHVybiAkMw0KK30sX19zZXRBdHRyOmZ1bmN0aW9uKCQxLCQyLCQzKXsNCiskMS5zZXRBdHRyaWJ1dGUoJDIsJDMpDQorfSxfc2V0Q2FudmFzQXR0cmlidXRlU1dGOmZ1bmN0aW9uKCQxLCQyLCQzKXsNCitpZih0aGlzLmxvYWRlZCYmbHouZW1iZWQuZG9qby5jb21tW3RoaXMuX2lkXSYmbHouZW1iZWQuZG9qby5jb21tW3RoaXMuX2lkXVsiY2FsbE1ldGhvZCJdKXsNCitpZigkMyl7DQorbHouZW1iZWQuaGlzdG9yeS5fc3RvcmUoJDEsJDIpDQorfWVsc2V7DQorbHouZW1iZWQuZG9qby5jb21tW3RoaXMuX2lkXS5zZXRDYW52YXNBdHRyaWJ1dGUoJDEsJDIrIiIpDQorfX1lbHNlew0KK2lmKHRoaXMuX3NldENhbnZhc0F0dHJpYnV0ZVE9PW51bGwpew0KK3RoaXMuX3NldENhbnZhc0F0dHJpYnV0ZVE9W1skMSwkMiwkM11dDQorfWVsc2V7DQordGhpcy5fc2V0Q2FudmFzQXR0cmlidXRlUS5wdXNoKFskMSwkMiwkM10pDQorfX19LF9zZXRDYW52YXNBdHRyaWJ1dGVESFRNTDpmdW5jdGlvbigkMSwkMiwkMyl7DQoraWYoJDMpew0KK2x6LmVtYmVkLmhpc3RvcnkuX3N0b3JlKCQxLCQyKQ0KK31lbHNlew0KK2lmKGNhbnZhcyl7DQoraWYoIWNhbnZhcy5fX0xaZGVsZXRlZCl7DQordmFyICRsenNjJDEwMjE2OTQzMz0iJGx6YyRzZXRfIiskMTtpZihGdW5jdGlvblsiJGx6c2MkaXNhIl0/RnVuY3Rpb24uJGx6c2MkaXNhKGNhbnZhc1skbHpzYyQxMDIxNjk0MzNdKTpjYW52YXNbJGx6c2MkMTAyMTY5NDMzXSBpbnN0YW5jZW9mIEZ1bmN0aW9uKXsNCitjYW52YXNbJGx6c2MkMTAyMTY5NDMzXSgkMikNCit9ZWxzZXsNCitjYW52YXNbJDFdPSQyO3ZhciAkbHpzYyQxOTk3MzU3OTI2PWNhbnZhc1sib24iKyQxXTtpZihMekV2ZW50WyIkbHpzYyRpc2EiXT9MekV2ZW50LiRsenNjJGlzYSgkbHpzYyQxOTk3MzU3OTI2KTokbHpzYyQxOTk3MzU3OTI2IGluc3RhbmNlb2YgTHpFdmVudCl7DQoraWYoJGx6c2MkMTk5NzM1NzkyNi5yZWFkeSl7DQorJGx6c2MkMTk5NzM1NzkyNi5zZW5kRXZlbnQoJDIpDQorfX19fX19fSxfbG9hZGVkOmZ1bmN0aW9uKCQxKXsNCitpZihsei5lbWJlZFskMV0ubG9hZGVkKXsNCityZXR1cm4NCit9O2lmKGx6LmVtYmVkLmRvam8uaW5mby5jb21tVmVyc2lvbj09OCl7DQorc2V0VGltZW91dCgnbHouZW1iZWRbIicrJDErJyJdLl9yZWFkeS5jYWxsKGx6LmVtYmVkWyInKyQxKyciXSknLDEwMCkNCit9ZWxzZXsNCitsei5lbWJlZFskMV0uX3JlYWR5LmNhbGwobHouZW1iZWRbJDFdKQ0KK319LF9zZXRDYW52YXNBdHRyaWJ1dGVEZXF1ZXVlOmZ1bmN0aW9uKCl7DQord2hpbGUodGhpcy5fc2V0Q2FudmFzQXR0cmlidXRlUS5sZW5ndGg+MCl7DQordmFyICQxPXRoaXMuX3NldENhbnZhc0F0dHJpYnV0ZVEucG9wKCk7dGhpcy5zZXRDYW52YXNBdHRyaWJ1dGUoJDFbMF0sJDFbMV0sJDFbMl0pDQorfX0sX3JlYWR5OmZ1bmN0aW9uKCQxKXsNCit0aGlzLmxvYWRlZD10cnVlO2lmKHRoaXMuX2NhbGxtZXRob2Qpew0KK2Zvcih2YXIgJDI9MDskMjx0aGlzLl9jYWxsbWV0aG9kLmxlbmd0aDskMisrKXsNCit0aGlzLmNhbGxNZXRob2QodGhpcy5fY2FsbG1ldGhvZFskMl0pDQorfTt0aGlzLl9jYWxsbWV0aG9kPW51bGwNCit9O2lmKHRoaXMuX3NldENhbnZhc0F0dHJpYnV0ZVEpew0KK3RoaXMuX3NldENhbnZhc0F0dHJpYnV0ZURlcXVldWUoKQ0KK307aWYoJDEpew0KK3RoaXMuY2FudmFzPSQxDQorfTtmb3IodmFyICQyPTA7JDI8dGhpcy5fb25sb2FkLmxlbmd0aDskMisrKXsNCit2YXIgJDM9dGhpcy5fb25sb2FkWyQyXTtpZih0eXBlb2YgJDM9PSJmdW5jdGlvbiIpew0KKyQzKHRoaXMpDQorfX07aWYodGhpcy5vbmxvYWQmJnR5cGVvZiB0aGlzLm9ubG9hZD09ImZ1bmN0aW9uIil7DQordGhpcy5vbmxvYWQodGhpcykNCit9fSxfZ2V0Q2FudmFzQXR0cmlidXRlU1dGOmZ1bmN0aW9uKCQxKXsNCitpZih0aGlzLmxvYWRlZCl7DQorcmV0dXJuIGx6LmVtYmVkLmRvam8uY29tbVt0aGlzLl9pZF0uZ2V0Q2FudmFzQXR0cmlidXRlKCQxKQ0KK31lbHNlew0KK2FsZXJ0KCJGbGFzaCBpcyBub3QgcmVhZHk6IGdldENhbnZhc0F0dHJpYnV0ZSIrJDEpDQorfX0sX2dldENhbnZhc0F0dHJpYnV0ZURIVE1MOmZ1bmN0aW9uKCQxKXsNCityZXR1cm4gY2FudmFzWyQxXQ0KK30sYnJvd3Nlcjp7aW5pdDpmdW5jdGlvbigpew0KK2lmKHRoaXMuaW5pdHRlZCl7DQorcmV0dXJuDQorfTt0aGlzLmJyb3dzZXI9dGhpcy5zZWFyY2hTdHJpbmcodGhpcy5kYXRhQnJvd3Nlcil8fCJBbiB1bmtub3duIGJyb3dzZXIiO3RoaXMudmVyc2lvbj10aGlzLnNlYXJjaFZlcnNpb24obmF2aWdhdG9yLnVzZXJBZ2VudCl8fHRoaXMuc2VhcmNoVmVyc2lvbihuYXZpZ2F0b3IuYXBwVmVyc2lvbil8fCJhbiB1bmtub3duIHZlcnNpb24iO3RoaXMub3N2ZXJzaW9uPXRoaXMuc2VhcmNoT1NWZXJzaW9uKG5hdmlnYXRvci51c2VyQWdlbnQpfHwiYW4gdW5rbm93biBvc3ZlcnNpb24iO3RoaXMuc3VidmVyc2lvbj10aGlzLnNlYXJjaFN1YlZlcnNpb24obmF2aWdhdG9yLnVzZXJBZ2VudCk7dGhpcy5PUz10aGlzLnNlYXJjaFN0cmluZyh0aGlzLmRhdGFPUyl8fCJhbiB1bmtub3duIE9TIjt0aGlzLmluaXR0ZWQ9dHJ1ZTt0aGlzLmlzTmV0c2NhcGU9dGhpcy5pc1NhZmFyaT10aGlzLmlzT3BlcmE9dGhpcy5pc0ZpcmVmb3g9dGhpcy5pc0lFPXRoaXMuaXNJcGhvbmU9ZmFsc2U7aWYodGhpcy5icm93c2VyPT0iTmV0c2NhcGUiKXsNCit0aGlzLmlzTmV0c2NhcGU9dHJ1ZQ0KK31lbHNlew0KK2lmKHRoaXMuYnJvd3Nlcj09IlNhZmFyaSIpew0KK3RoaXMuaXNTYWZhcmk9dHJ1ZQ0KK31lbHNlew0KK2lmKHRoaXMuYnJvd3Nlcj09Ik9wZXJhIil7DQordGhpcy5pc09wZXJhPXRydWUNCit9ZWxzZXsNCitpZih0aGlzLmJyb3dzZXI9PSJGaXJlZm94Iil7DQordGhpcy5pc0ZpcmVmb3g9dHJ1ZQ0KK31lbHNlew0KK2lmKHRoaXMuYnJvd3Nlcj09IkV4cGxvcmVyIil7DQordGhpcy5pc0lFPXRydWUNCit9ZWxzZXsNCitpZih0aGlzLmJyb3dzZXI9PSJpUGhvbmUiKXsNCit0aGlzLmlzU2FmYXJpPXRydWU7dGhpcy5pc0lwaG9uZT10cnVlDQorfX19fX19fSxzZWFyY2hTdHJpbmc6ZnVuY3Rpb24oJDEpew0KK2Zvcih2YXIgJDI9MDskMjwkMS5sZW5ndGg7JDIrKyl7DQordmFyICQzPSQxWyQyXS5zdHJpbmc7dmFyICQ0PSQxWyQyXS5wcm9wO3RoaXMudmVyc2lvblNlYXJjaFN0cmluZz0kMVskMl0udmVyc2lvblNlYXJjaHx8JDFbJDJdLmlkZW50aXR5O3RoaXMub3N2ZXJzaW9uU2VhcmNoU3RyaW5nPSQxWyQyXS5vc3ZlcnNpb25TZWFyY2h8fCIiO2lmKCQzKXsNCitpZigkMy5pbmRleE9mKCQxWyQyXS5zdWJTdHJpbmcpIT0tMSl7DQorcmV0dXJuICQxWyQyXS5pZGVudGl0eQ0KK319ZWxzZXsNCitpZigkNCl7DQorcmV0dXJuICQxWyQyXS5pZGVudGl0eQ0KK319fX0sc2VhcmNoVmVyc2lvbjpmdW5jdGlvbigkMSl7DQordmFyICQyPSQxLmluZGV4T2YodGhpcy52ZXJzaW9uU2VhcmNoU3RyaW5nKTtpZigkMj09LTEpew0KK3JldHVybg0KK307cmV0dXJuIHBhcnNlRmxvYXQoJDEuc3Vic3RyaW5nKCQyK3RoaXMudmVyc2lvblNlYXJjaFN0cmluZy5sZW5ndGgrMSkpDQorfSxzZWFyY2hTdWJWZXJzaW9uOmZ1bmN0aW9uKCQxKXsNCit2YXIgJDI9bmV3IFJlZ0V4cCh0aGlzLnZlcnNpb25TZWFyY2hTdHJpbmcrIi5cXGQrXFwuXFxkK1xcLihbXFxkLl0rKSIpO3ZhciAkMz0kMi5leGVjKCQxKTtpZigkMyYmJDMubGVuZ3RoPjEpew0KK3JldHVybiBwYXJzZUZsb2F0KCQzWzFdKQ0KK319LHNlYXJjaE9TVmVyc2lvbjpmdW5jdGlvbigkMSl7DQordmFyICQyPSQxLmluZGV4T2YodGhpcy5vc3ZlcnNpb25TZWFyY2hTdHJpbmcpO2lmKCQyPT0tMSl7DQorcmV0dXJuDQorfTtyZXR1cm4gcGFyc2VGbG9hdCgkMS5zdWJzdHJpbmcoJDIrdGhpcy5vc3ZlcnNpb25TZWFyY2hTdHJpbmcubGVuZ3RoKzEpKQ0KK30sZGF0YUJyb3dzZXI6W3tzdHJpbmc6bmF2aWdhdG9yLnVzZXJBZ2VudCxzdWJTdHJpbmc6ImlQaG9uZSIsaWRlbnRpdHk6ImlQaG9uZSIsdmVyc2lvblNlYXJjaDoiV2ViS2l0In0se3N0cmluZzpuYXZpZ2F0b3IudXNlckFnZW50LHN1YlN0cmluZzoiQ2hyb21lIixpZGVudGl0eToiQ2hyb21lIn0se3N0cmluZzpuYXZpZ2F0b3IudXNlckFnZW50LHN1YlN0cmluZzoiT21uaVdlYiIsdmVyc2lvblNlYXJjaDoiT21uaVdlYi8iLGlkZW50aXR5OiJPbW5pV2ViIn0se3N0cmluZzpuYXZpZ2F0b3IudmVuZG9yLHN1YlN0cmluZzoiQXBwbGUiLGlkZW50aXR5OiJTYWZhcmkiLHZlcnNpb25TZWFyY2g6IldlYktpdCJ9LHtwcm9wOndpbmRvdy5vcGVyYSxpZGVudGl0eToiT3BlcmEifSx7c3RyaW5nOm5hdmlnYXRvci52ZW5kb3Isc3ViU3RyaW5nOiJpQ2FiIixpZGVudGl0eToiaUNhYiJ9LHtzdHJpbmc6bmF2aWdhdG9yLnZlbmRvcixzdWJTdHJpbmc6IktERSIsaWRlbnRpdHk6IktvbnF1ZXJvciJ9LHtzdHJpbmc6bmF2aWdhdG9yLnVzZXJBZ2VudCxzdWJTdHJpbmc6IkZpcmVmb3giLGlkZW50aXR5OiJGaXJlZm94In0se3N0cmluZzpuYXZpZ2F0b3IudXNlckFnZW50LHN1YlN0cmluZzoiSWNld2Vhc2VsIix2ZXJzaW9uU2VhcmNoOiJJY2V3ZWFzZWwiLGlkZW50aXR5OiJGaXJlZm94In0se3N0cmluZzpuYXZpZ2F0b3IudmVuZG9yLHN1YlN0cmluZzoiQ2FtaW5vIixpZGVudGl0eToiQ2FtaW5vIn0se3N0cmluZzpuYXZpZ2F0b3IudXNlckFnZW50LHN1YlN0cmluZzoiTmV0c2NhcGUiLGlkZW50aXR5OiJOZXRzY2FwZSJ9LHtzdHJpbmc6bmF2aWdhdG9yLnVzZXJBZ2VudCxzdWJTdHJpbmc6Ik1TSUUiLGlkZW50aXR5OiJFeHBsb3JlciIsdmVyc2lvblNlYXJjaDoiTVNJRSIsb3N2ZXJzaW9uU2VhcmNoOiJXaW5kb3dzIE5UIn0se3N0cmluZzpuYXZpZ2F0b3IudXNlckFnZW50LHN1YlN0cmluZzoiR2Vja28iLGlkZW50aXR5OiJNb3ppbGxhIix2ZXJzaW9uU2VhcmNoOiJydiJ9LHtzdHJpbmc6bmF2aWdhdG9yLnVzZXJBZ2VudCxzdWJTdHJpbmc6Ik1vemlsbGEiLGlkZW50aXR5OiJOZXRzY2FwZSIsdmVyc2lvblNlYXJjaDoiTW96aWxsYSJ9XSxkYXRhT1M6W3tzdHJpbmc6bmF2aWdhdG9yLnBsYXRmb3JtLHN1YlN0cmluZzoiV2luIixpZGVudGl0eToiV2luZG93cyJ9LHtzdHJpbmc6bmF2aWdhdG9yLnBsYXRmb3JtLHN1YlN0cmluZzoiTWFjIixpZGVudGl0eToiTWFjIn0se3N0cmluZzpuYXZpZ2F0b3IudXNlckFnZW50LHN1YlN0cmluZzoiaVBob25lIixpZGVudGl0eToiaVBob25lL2lQb2QifSx7c3RyaW5nOm5hdmlnYXRvci5wbGF0Zm9ybSxzdWJTdHJpbmc6IkxpbnV4IixpZGVudGl0eToiTGludXgifV19LF9jYWxsTWV0aG9kU1dGOmZ1bmN0aW9uKCQxKXsNCitpZih0aGlzLmxvYWRlZCl7DQorcmV0dXJuIGx6LmVtYmVkLmRvam8uY29tbVt0aGlzLl9pZF0uY2FsbE1ldGhvZCgkMSkNCit9ZWxzZXsNCitpZighdGhpcy5fY2FsbG1ldGhvZCl7DQordGhpcy5fY2FsbG1ldGhvZD1bXQ0KK307dGhpcy5fY2FsbG1ldGhvZC5wdXNoKCQxKQ0KK319LF9icm9hZGNhc3RNZXRob2Q6ZnVuY3Rpb24oJDEpew0KK3ZhciAkMj1bXS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTtmb3IodmFyICQzIGluIGx6LmVtYmVkLmFwcGxpY2F0aW9ucyl7DQordmFyICQ0PWx6LmVtYmVkLmFwcGxpY2F0aW9uc1skM107aWYoJDRbJDFdKXsNCiskNFskMV0uYXBwbHkoJDQsJDIpDQorfX19LHNldENhbnZhc0F0dHJpYnV0ZTpmdW5jdGlvbigkMSwkMiwkMyl7DQorbHouZW1iZWQuX2Jyb2FkY2FzdE1ldGhvZCgic2V0Q2FudmFzQXR0cmlidXRlIiwkMSwkMiwkMykNCit9LGNhbGxNZXRob2Q6ZnVuY3Rpb24oJDEpew0KK2x6LmVtYmVkLl9icm9hZGNhc3RNZXRob2QoImNhbGxNZXRob2QiLCQxKQ0KK30sX2dldEFwcGVuZERpdjpmdW5jdGlvbigkMSwkMil7DQordmFyICQzPSQyPyQyOiQxKyJDb250YWluZXIiO3ZhciAkND1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgkMyk7aWYoISQ0KXsNCitkb2N1bWVudC53cml0ZWxuKCc8ZGl2IGlkPSInKyQzKyciPjwvZGl2PicpOyQ0PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCQzKQ0KK307cmV0dXJuICQ0DQorfSxfZ2V0U1dGRGl2OmZ1bmN0aW9uKCl7DQorcmV0dXJuIGx6LmVtYmVkLmRvam8ub2JqW3RoaXMuX2lkXS5nZXQoKQ0KK30sX3NlbmRNb3VzZVdoZWVsOmZ1bmN0aW9uKCQxKXsNCitpZigkMSE9bnVsbCl7DQordGhpcy5jYWxsTWV0aG9kKCJsei5LZXlzLl9fbW91c2V3aGVlbEV2ZW50KCIrJDErIikiKQ0KK319LF9nb3RGb2N1czpmdW5jdGlvbigpew0KK2x6LmVtYmVkLl9icm9hZGNhc3RNZXRob2QoIl9zZW5kQWxsS2V5c1VwIikNCit9LF9zZW5kQWxsS2V5c1VwU1dGOmZ1bmN0aW9uKCl7DQordGhpcy5jYWxsTWV0aG9kKCJsei5LZXlzLl9fYWxsS2V5c1VwKCkiKQ0KK30sX3NlbmRBbGxLZXlzVXBESFRNTDpmdW5jdGlvbigpew0KK2lmKGx6WyJLZXlzIl0mJmx6LktleXNbIl9fYWxsS2V5c1VwIl0pew0KK2x6LktleXMuX19hbGxLZXlzVXAoKQ0KK319LF9zZW5kUGVyY0xvYWQ6ZnVuY3Rpb24oJDEpew0KK2lmKHRoaXMub25sb2Fkc3RhdHVzJiZ0eXBlb2YgdGhpcy5vbmxvYWRzdGF0dXM9PSJmdW5jdGlvbiIpew0KK3RoaXMub25sb2Fkc3RhdHVzKCQxKQ0KK319LGF0dGFjaEV2ZW50SGFuZGxlcjpmdW5jdGlvbigkMSwkMixjYWxsYmFja3Njb3BlLGNhbGxiYWNrbmFtZSxjbG9zdXJlKXsNCitpZighKGNhbGxiYWNrc2NvcGUmJmNhbGxiYWNrbmFtZSYmdHlwZW9mIGNhbGxiYWNrc2NvcGVbY2FsbGJhY2tuYW1lXT09ImZ1bmN0aW9uIikpew0KK3JldHVybg0KK307dmFyICQzPSQxKyQyK2NhbGxiYWNrc2NvcGUrY2FsbGJhY2tuYW1lO3ZhciAkND10aGlzLl9oYW5kbGVyc1skM107aWYoJDQhPW51bGwpew0KK2lmKCQ0IGluc3RhbmNlb2YgQXJyYXkpew0KK2Zvcih2YXIgJDU9JDQubGVuZ3RoLTE7JDU+PTA7LS0kNSl7DQoraWYoJDRbJDVdLiRlPT09JDEmJiQ0WyQ1XS4kYz09PWNhbGxiYWNrc2NvcGUpew0KK3JldHVybg0KK319fWVsc2V7DQoraWYoJDQuJGU9PT0kMSYmJDQuJGM9PT1jYWxsYmFja3Njb3BlKXsNCityZXR1cm4NCit9fX07dmFyICQ2PWZ1bmN0aW9uKCl7DQordmFyICQxPXdpbmRvdy5ldmVudD9bd2luZG93LmV2ZW50XTpbXS5zbGljZS5jYWxsKGFyZ3VtZW50cywwKTtpZihjbG9zdXJlKXsNCiskMS5wdXNoKGNsb3N1cmUpDQorfTtjYWxsYmFja3Njb3BlW2NhbGxiYWNrbmFtZV0uYXBwbHkoY2FsbGJhY2tzY29wZSwkMSkNCit9OyQ2LiRlPSQxOyQ2LiRjPWNhbGxiYWNrc2NvcGU7aWYoJDQhPW51bGwpew0KK2lmKCQ0IGluc3RhbmNlb2YgQXJyYXkpew0KKyQ0LnB1c2goJDYpDQorfWVsc2V7DQorJDQ9WyQ0LCQ2XQ0KK319ZWxzZXsNCiskND0kNg0KK307dGhpcy5faGFuZGxlcnNbJDNdPSQ0O2lmKCQxWyJhZGRFdmVudExpc3RlbmVyIl0pew0KKyQxLmFkZEV2ZW50TGlzdGVuZXIoJDIsJDYsZmFsc2UpO3JldHVybiB0cnVlDQorfWVsc2V7DQoraWYoJDFbImF0dGFjaEV2ZW50Il0pew0KK3JldHVybiAkMS5hdHRhY2hFdmVudCgib24iKyQyLCQ2KQ0KK319fSxyZW1vdmVFdmVudEhhbmRsZXI6ZnVuY3Rpb24oJDEsJDIsJDMsJDQpew0KK3ZhciAkNT0kMSskMiskMyskNDt2YXIgJDYsJDc9dGhpcy5faGFuZGxlcnNbJDVdO2lmKCQ3IT1udWxsKXsNCitpZigkNyBpbnN0YW5jZW9mIEFycmF5KXsNCitmb3IodmFyICQ4PSQ3Lmxlbmd0aC0xOyQ4Pj0wOy0tJDgpew0KK2lmKCQ3WyQ4XS4kZT09PSQxJiYkN1skOF0uJGM9PT0kMyl7DQorJDY9JDdbJDhdOyQ3LnNwbGljZSgkOCwxKTtpZigkNy5sZW5ndGg9PTApew0KK2RlbGV0ZSB0aGlzLl9oYW5kbGVyc1skNV0NCit9fX19ZWxzZXsNCitpZigkNy4kZT09PSQxJiYkNy4kYz09PSQzKXsNCiskNj0kNztkZWxldGUgdGhpcy5faGFuZGxlcnNbJDVdDQorfX19O2lmKCEkNil7DQorcmV0dXJuDQorfTtpZigkMVsicmVtb3ZlRXZlbnRMaXN0ZW5lciJdKXsNCiskMS5yZW1vdmVFdmVudExpc3RlbmVyKCQyLCQ2LGZhbHNlKTtyZXR1cm4gdHJ1ZQ0KK31lbHNlew0KK2lmKCQxWyJkZXRhY2hFdmVudCJdKXsNCityZXR1cm4gJDEuZGV0YWNoRXZlbnQoIm9uIiskMiwkNikNCit9fX0sX2hhbmRsZXJzOnt9LF9jbGVhbnVwSGFuZGxlcnM6ZnVuY3Rpb24oKXsNCitsei5lbWJlZC5faGFuZGxlcnM9e319LGdldEFic29sdXRlUG9zaXRpb246ZnVuY3Rpb24oJDEpew0KK3ZhciAkMj1udWxsO3ZhciAkMz17fTt2YXIgJDQ7aWYoIShsei5lbWJlZC5icm93c2VyLmlzRmlyZWZveCYmJDE9PWRvY3VtZW50LmJvZHkpJiYkMS5nZXRCb3VuZGluZ0NsaWVudFJlY3Qpew0KKyQ0PSQxLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO3ZhciAkNT1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wfHxkb2N1bWVudC5ib2R5LnNjcm9sbFRvcDt2YXIgJDY9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnNjcm9sbExlZnR8fGRvY3VtZW50LmJvZHkuc2Nyb2xsTGVmdDtyZXR1cm4ge3g6TWF0aC5mbG9vcigkNC5sZWZ0KyQ2KSx5Ok1hdGguZmxvb3IoJDQudG9wKyQ1KX19ZWxzZXsNCitpZihkb2N1bWVudC5nZXRCb3hPYmplY3RGb3Ipew0KKyQ0PWRvY3VtZW50LmdldEJveE9iamVjdEZvcigkMSk7JDM9e3g6JDQueCx5OiQ0Lnl9fWVsc2V7DQorJDM9e3g6JDEub2Zmc2V0TGVmdCx5OiQxLm9mZnNldFRvcH07JDI9JDEub2Zmc2V0UGFyZW50O2lmKCQyIT0kMSl7DQord2hpbGUoJDIpew0KKyQzLngrPSQyLm9mZnNldExlZnQ7JDMueSs9JDIub2Zmc2V0VG9wOyQyPSQyLm9mZnNldFBhcmVudA0KK319O2lmKGx6LmVtYmVkLmJyb3dzZXIuaXNTYWZhcmkmJmRvY3VtZW50LmRlZmF1bHRWaWV3JiZkb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKXsNCit2YXIgJDc9ZG9jdW1lbnQuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSgkMSwiIikNCit9O2lmKGx6LmVtYmVkLmJyb3dzZXIuaXNPcGVyYXx8bHouZW1iZWQuYnJvd3Nlci5pc1NhZmFyaSYmJDcmJiQ3WyJwb3NpdGlvbiJdPT0iYWJzb2x1dGUiKXsNCiskMy55LT1kb2N1bWVudC5ib2R5Lm9mZnNldFRvcA0KK319fTtpZigkMS5wYXJlbnROb2RlKXsNCiskMj0kMS5wYXJlbnROb2RlDQorfWVsc2V7DQorcmV0dXJuICQzDQorfTt3aGlsZSgkMiYmJDIudGFnTmFtZSE9IkJPRFkiJiYkMi50YWdOYW1lIT0iSFRNTCIpew0KKyQzLngtPSQyLnNjcm9sbExlZnQ7JDMueS09JDIuc2Nyb2xsVG9wO2lmKCQyLnBhcmVudE5vZGUpew0KKyQyPSQyLnBhcmVudE5vZGUNCit9ZWxzZXsNCityZXR1cm4gJDMNCit9fTtyZXR1cm4gJDMNCit9fTtsei5lbWJlZC5icm93c2VyLmluaXQoKTtsei5lbWJlZC5hdHRhY2hFdmVudEhhbmRsZXIod2luZG93LCJiZWZvcmV1bmxvYWQiLGx6LmVtYmVkLCJfY2xlYW51cEhhbmRsZXJzIik7bHouZW1iZWQuYXR0YWNoRXZlbnRIYW5kbGVyKHdpbmRvdywiZm9jdXMiLGx6LmVtYmVkLCJfZ290Rm9jdXMiKTtpZihsei5lbWJlZC5icm93c2VyLmlzSUUpew0KK2x6LmVtYmVkLmF0dGFjaEV2ZW50SGFuZGxlcih3aW5kb3csImFjdGl2YXRlIixsei5lbWJlZCwiX2dvdEZvY3VzIikNCit9O3RyeXsNCitpZihsek9wdGlvbnMpew0KK2lmKGx6T3B0aW9ucy5kaHRtbEtleWJvYXJkQ29udHJvbCl7DQorYWxlcnQoIldBUk5JTkc6IHRoaXMgcGFnZSB1c2VzIGx6T3B0aW9ucy5kaHRtbEtleWJvYXJkQ29udHJvbC4gIFBsZWFzZSB1c2UgdGhlIGNhbmNlbGtleWJvYXJkY29udHJvbCBlbWJlZCBhcmd1bWVudCBmb3IgbHouZW1iZWQuZGh0bWwoKSBpbnN0ZWFkLiIpDQorfTtpZihsek9wdGlvbnMuU2VydmVyUm9vdCl7DQorYWxlcnQoIldBUk5JTkc6IHRoaXMgcGFnZSB1c2VzIGx6T3B0aW9ucy5TZXJ2ZXJSb290LiAgUGxlYXNlIHVzZSB0aGUgc2Vjb25kIGFyZ3VtZW50IG9mIGx6LmVtYmVkLmxmYygpIGluc3RlYWQuIikNCit9fX0NCitjYXRjaChlKXsNCisNCit9O2x6LmVtYmVkLmRvam89ZnVuY3Rpb24oKXsNCisNCit9O2x6LmVtYmVkLmRvam89e2RlZmF1bHRzOntmbGFzaDg6bnVsbCxyZWFkeTpmYWxzZSx2aXNpYmxlOnRydWUsd2lkdGg6NTAwLGhlaWdodDo0MDAsYmdjb2xvcjoiI2ZmZmZmZiIsYWxsb3dmdWxsc2NyZWVuOmZhbHNlLHdtb2RlOiJ3aW5kb3ciLGZsYXNodmFyczoiIixtaW5pbXVtVmVyc2lvbjo4LGlkOiJmbGFzaE9iamVjdCIsYXBwZW5kZGl2Om51bGx9LG9iajp7fSxjb21tOnt9LF9sb2FkZWRMaXN0ZW5lcnM6W10sX2xvYWRlZExpc3RlbmVyU2NvcGVzOltdLF9pbnN0YWxsaW5nTGlzdGVuZXJzOltdLF9pbnN0YWxsaW5nTGlzdGVuZXJTY29wZXM6W10sc2V0U3dmOmZ1bmN0aW9uKCQxLCQyKXsNCitpZigkMT09bnVsbCl7DQorcmV0dXJuDQorfTt2YXIgJDM9e307Zm9yKHZhciAkNCBpbiB0aGlzLmRlZmF1bHRzKXsNCit2YXIgJDU9JDFbJDRdO2lmKCQ1IT1udWxsKXsNCiskM1skNF09JDUNCit9ZWxzZXsNCiskM1skNF09dGhpcy5kZWZhdWx0c1skNF0NCit9fTtpZigkMiE9bnVsbCl7DQordGhpcy5taW5pbXVtVmVyc2lvbj0kMg0KK307dGhpcy5faW5pdGlhbGl6ZSgkMykNCit9LGFkZExvYWRlZExpc3RlbmVyOmZ1bmN0aW9uKCQxLCQyKXsNCit0aGlzLl9sb2FkZWRMaXN0ZW5lcnMucHVzaCgkMSk7dGhpcy5fbG9hZGVkTGlzdGVuZXJTY29wZXMucHVzaCgkMikNCit9LGFkZEluc3RhbGxpbmdMaXN0ZW5lcjpmdW5jdGlvbigkMSwkMil7DQordGhpcy5faW5zdGFsbGluZ0xpc3RlbmVycy5wdXNoKCQxKTt0aGlzLl9pbnN0YWxsaW5nTGlzdGVuZXJTY29wZXMucHVzaCgkMikNCit9LGxvYWRlZDpmdW5jdGlvbigkMSl7DQordmFyICQyPWx6LmVtYmVkLmRvam87aWYoJDIuX2lzaW5zdGFsbGVyKXsNCit0b3AubG9jYXRpb249dG9wLmxvY2F0aW9uKyIiDQorfTskMi5pbmZvLmluc3RhbGxpbmc9ZmFsc2U7JDIucmVhZHk9dHJ1ZTtpZigkMi5fbG9hZGVkTGlzdGVuZXJzLmxlbmd0aD4wKXsNCitmb3IodmFyICQzPTA7JDM8JDIuX2xvYWRlZExpc3RlbmVycy5sZW5ndGg7JDMrKyl7DQordmFyICQ0PSQyLl9sb2FkZWRMaXN0ZW5lclNjb3Blc1skM107aWYoJDEhPSQ0Ll9pZCl7DQorY29udGludWUNCit9O2x6LmVtYmVkLmRvam8uX2xvYWRlZExpc3RlbmVyc1skM10uYXBwbHkoJDQsWyQ0Ll9pZF0pDQorfX19LGluc3RhbGxpbmc6ZnVuY3Rpb24oKXsNCit2YXIgJDE9bHouZW1iZWQuZG9qbztpZigkMS5faW5zdGFsbGluZ0xpc3RlbmVycy5sZW5ndGg+MCl7DQorZm9yKHZhciAkMj0wOyQyPCQxLl9pbnN0YWxsaW5nTGlzdGVuZXJzLmxlbmd0aDskMisrKXsNCit2YXIgJDM9JDEuX2luc3RhbGxpbmdMaXN0ZW5lclNjb3Blc1skMl07JDEuX2luc3RhbGxpbmdMaXN0ZW5lcnNbJDJdLmFwcGx5KCQzLFskMy5faWRdKQ0KK319fSxfaW5pdGlhbGl6ZTpmdW5jdGlvbigkMSl7DQordmFyICQyPWx6LmVtYmVkLmRvam87dmFyICQzPW5ldyAoJDIuSW5zdGFsbCkoJDEuaWQpOyQyLmluc3RhbGxlcj0kMzt2YXIgJDQ9bmV3ICgkMi5FbWJlZCkoJDEpOyQyLm9ialskMS5pZF09JDQ7aWYoJDMubmVlZGVkKCk9PXRydWUpew0KKyQzLmluc3RhbGwoKQ0KK31lbHNlew0KKyQ0LndyaXRlKCQyLmluZm8uY29tbVZlcnNpb24pOyQyLmNvbW1bJDEuaWRdPW5ldyAoJDIuQ29tbXVuaWNhdG9yKSgkMS5pZCkNCit9fX07bHouZW1iZWQuZG9qby5JbmZvPWZ1bmN0aW9uKCl7DQoraWYobHouZW1iZWQuYnJvd3Nlci5pc0lFKXsNCitkb2N1bWVudC53cml0ZWxuKCc8c2NyaXB0IGxhbmd1YWdlPSJWQlNjcmlwdCIgdHlwZT0idGV4dC92YnNjcmlwdCI+Jyk7ZG9jdW1lbnQud3JpdGVsbigiRnVuY3Rpb24gVkJHZXRTd2ZWZXIoaSkiKTtkb2N1bWVudC53cml0ZWxuKCIgIG9uIGVycm9yIHJlc3VtZSBuZXh0Iik7ZG9jdW1lbnQud3JpdGVsbigiICBEaW0gc3dDb250cm9sLCBzd1ZlcnNpb24iKTtkb2N1bWVudC53cml0ZWxuKCIgIHN3VmVyc2lvbiA9IDAiKTtkb2N1bWVudC53cml0ZWxuKCcgIHNldCBzd0NvbnRyb2wgPSBDcmVhdGVPYmplY3QoIlNob2Nrd2F2ZUZsYXNoLlNob2Nrd2F2ZUZsYXNoLiIgKyBDU3RyKGkpKScpO2RvY3VtZW50LndyaXRlbG4oIiAgaWYgKElzT2JqZWN0KHN3Q29udHJvbCkpIHRoZW4iKTtkb2N1bWVudC53cml0ZWxuKCcgICAgc3dWZXJzaW9uID0gc3dDb250cm9sLkdldFZhcmlhYmxlKCIkdmVyc2lvbiIpJyk7ZG9jdW1lbnQud3JpdGVsbigiICBlbmQgaWYiKTtkb2N1bWVudC53cml0ZWxuKCIgIFZCR2V0U3dmVmVyID0gc3dWZXJzaW9uIik7ZG9jdW1lbnQud3JpdGVsbigiRW5kIEZ1bmN0aW9uIik7ZG9jdW1lbnQud3JpdGVsbigiPC9zY3JpcHQ+IikNCit9O3RoaXMuX2RldGVjdFZlcnNpb24oKTt0aGlzLl9kZXRlY3RDb21tdW5pY2F0aW9uVmVyc2lvbigpDQorfTtsei5lbWJlZC5kb2pvLkluZm8ucHJvdG90eXBlPXt2ZXJzaW9uOi0xLHZlcnNpb25NYWpvcjotMSx2ZXJzaW9uTWlub3I6LTEsdmVyc2lvblJldmlzaW9uOi0xLGNhcGFibGU6ZmFsc2UsY29tbVZlcnNpb246OCxpbnN0YWxsaW5nOmZhbHNlLGlzVmVyc2lvbk9yQWJvdmU6ZnVuY3Rpb24oJDEsJDIsJDMpew0KKyQzPXBhcnNlRmxvYXQoIi4iKyQzKTtpZih0aGlzLnZlcnNpb25NYWpvcj49JDEmJnRoaXMudmVyc2lvbk1pbm9yPj0kMiYmdGhpcy52ZXJzaW9uUmV2aXNpb24+PSQzKXsNCityZXR1cm4gdHJ1ZQ0KK31lbHNlew0KK3JldHVybiBmYWxzZQ0KK319LF9kZXRlY3RWZXJzaW9uOmZ1bmN0aW9uKCl7DQordmFyICQxO3ZhciAkMj1sei5lbWJlZC5icm93c2VyLmlzSUU7Zm9yKHZhciAkMz0yNTskMz4wOyQzLS0pew0KK2lmKCQyKXsNCiskMT1WQkdldFN3ZlZlcigkMykNCit9ZWxzZXsNCiskMT10aGlzLl9KU0ZsYXNoSW5mbygkMykNCit9O2lmKCQxPT0tMSl7DQordGhpcy5jYXBhYmxlPWZhbHNlO3JldHVybg0KK31lbHNlew0KK2lmKCQxIT0wKXsNCit2YXIgJDQ7aWYoJDIpew0KK3ZhciAkNT0kMS5zcGxpdCgiICIpO3ZhciAkNj0kNVsxXTskND0kNi5zcGxpdCgiLCIpDQorfWVsc2V7DQorJDQ9JDEuc3BsaXQoIi4iKQ0KK307dGhpcy52ZXJzaW9uTWFqb3I9JDRbMF07dGhpcy52ZXJzaW9uTWlub3I9JDRbMV07dGhpcy52ZXJzaW9uUmV2aXNpb249JDRbMl07dmFyICQ3PXRoaXMudmVyc2lvbk1ham9yKyIuIit0aGlzLnZlcnNpb25SZXZpc2lvbjt0aGlzLnZlcnNpb249cGFyc2VGbG9hdCgkNyk7dGhpcy5jYXBhYmxlPXRydWU7YnJlYWsNCit9fX19LF9KU0ZsYXNoSW5mbzpmdW5jdGlvbigkMSl7DQoraWYobmF2aWdhdG9yLnBsdWdpbnMhPW51bGwmJm5hdmlnYXRvci5wbHVnaW5zLmxlbmd0aD4wKXsNCitpZihuYXZpZ2F0b3IucGx1Z2luc1siU2hvY2t3YXZlIEZsYXNoIDIuMCJdfHxuYXZpZ2F0b3IucGx1Z2luc1siU2hvY2t3YXZlIEZsYXNoIl0pew0KK3ZhciAkMj1uYXZpZ2F0b3IucGx1Z2luc1siU2hvY2t3YXZlIEZsYXNoIDIuMCJdPyIgMi4wIjoiIjt2YXIgJDM9bmF2aWdhdG9yLnBsdWdpbnNbIlNob2Nrd2F2ZSBGbGFzaCIrJDJdLmRlc2NyaXB0aW9uO3ZhciAkND0kMy5zcGxpdCgiICIpO3ZhciAkNT0kNFsyXS5zcGxpdCgiLiIpO3ZhciAkNj0kNVswXTt2YXIgJDc9JDVbMV07aWYoJDRbM10hPSIiKXsNCit2YXIgJDg9JDRbM10uc3BsaXQoInIiKQ0KK31lbHNlew0KK3ZhciAkOD0kNFs0XS5zcGxpdCgiciIpDQorfTt2YXIgJDk9JDhbMV0+MD8kOFsxXTowO3ZhciAkMTA9JDYrIi4iKyQ3KyIuIiskOTtyZXR1cm4gJDEwDQorfX07cmV0dXJuIC0xDQorfSxfZGV0ZWN0Q29tbXVuaWNhdGlvblZlcnNpb246ZnVuY3Rpb24oKXsNCitpZih0aGlzLmNhcGFibGU9PWZhbHNlKXsNCit0aGlzLmNvbW1WZXJzaW9uPW51bGw7cmV0dXJuDQorfX19O2x6LmVtYmVkLmRvam8uRW1iZWQ9ZnVuY3Rpb24oJDEpew0KK3RoaXMucHJvcGVydGllcz0kMTtpZighdGhpcy5wcm9wZXJ0aWVzLndpZHRoKXsNCit0aGlzLnByb3BlcnRpZXMud2lkdGg9IjEwMCUiDQorfTtpZighdGhpcy5wcm9wZXJ0aWVzLmhlaWdodCl7DQordGhpcy5wcm9wZXJ0aWVzLmhlaWdodD0iMTAwJSINCit9O2lmKCF0aGlzLnByb3BlcnRpZXMuYmdjb2xvcil7DQordGhpcy5wcm9wZXJ0aWVzLmJnY29sb3I9IiNmZmZmZmYiDQorfTtpZighdGhpcy5wcm9wZXJ0aWVzLnZpc2libGUpew0KK3RoaXMucHJvcGVydGllcy52aXNpYmxlPXRydWUNCit9fTtsei5lbWJlZC5kb2pvLkVtYmVkLnByb3RvdHlwZT17cHJvdG9jb2w6ZnVuY3Rpb24oKXsNCitzd2l0Y2god2luZG93LmxvY2F0aW9uLnByb3RvY29sKXsNCitjYXNlICJodHRwczoiOg0KK3JldHVybiAiaHR0cHMiO2JyZWFrOw0KK2RlZmF1bHQ6DQorcmV0dXJuICJodHRwIjticmVhazsNCisNCit9fSxfX2dldENTU1ZhbHVlOmZ1bmN0aW9uKCQxKXsNCitpZigkMSYmJDEubGVuZ3RoJiYkMS5pbmRleE9mKCIlIikhPS0xKXsNCityZXR1cm4gIjFweCINCit9ZWxzZXsNCityZXR1cm4gJDErInB4Ig0KK319LHdyaXRlOmZ1bmN0aW9uKCQxLCQyKXsNCit2YXIgJDM9IiI7JDMrPSJ3aWR0aDogIit0aGlzLl9fZ2V0Q1NTVmFsdWUodGhpcy5wcm9wZXJ0aWVzLndpZHRoKSsiOyI7JDMrPSJoZWlnaHQ6ICIrdGhpcy5fX2dldENTU1ZhbHVlKHRoaXMucHJvcGVydGllcy5oZWlnaHQpKyI7IjtpZih0aGlzLnByb3BlcnRpZXMudmlzaWJsZT09ZmFsc2Upew0KKyQzKz0icG9zaXRpb246IGFic29sdXRlOyAiOyQzKz0iei1pbmRleDogMTAwMDA7ICI7JDMrPSJ0b3A6IC0xMDAwcHg7ICI7JDMrPSJsZWZ0OiAtMTAwMHB4OyAiDQorfTt2YXIgJDQ7dmFyICQ1O3ZhciAkNj1sei5lbWJlZDtpZigkMT4kNi5kb2pvLnZlcnNpb24pew0KKyQyPXRydWUNCit9OyQ1PXRoaXMucHJvcGVydGllcy5mbGFzaDg7dmFyICQ3PXRoaXMucHJvcGVydGllcy5mbGFzaHZhcnM7dmFyICQ4PXRoaXMucHJvcGVydGllcy5mbGFzaHZhcnM7aWYoJDIpew0KK3ZhciAkOT1lc2NhcGUod2luZG93LmxvY2F0aW9uKTtkb2N1bWVudC50aXRsZT1kb2N1bWVudC50aXRsZS5zbGljZSgwLDQ3KSsiIC0gRmxhc2ggUGxheWVyIEluc3RhbGxhdGlvbiI7dmFyICQxMD1lc2NhcGUoZG9jdW1lbnQudGl0bGUpOyQ3Kz0iJk1NcmVkaXJlY3RVUkw9IiskOSsiJk1NcGxheWVyVHlwZT1BY3RpdmVYIisiJk1NZG9jdGl0bGU9IiskMTA7JDgrPSImTU1yZWRpcmVjdFVSTD0iKyQ5KyImTU1wbGF5ZXJUeXBlPVBsdWdJbiINCit9O2lmKCQ2LmJyb3dzZXIuaXNJRSl7DQorJDQ9JzxvYmplY3QgY2xhc3NpZD0iY2xzaWQ6ZDI3Y2RiNmUtYWU2ZC0xMWNmLTk2YjgtNDQ0NTUzNTQwMDAwIiAnKydjb2RlYmFzZT0iJyt0aGlzLnByb3RvY29sKCkrIjovL2ZwZG93bmxvYWQubWFjcm9tZWRpYS5jb20vcHViL3Nob2Nrd2F2ZS9jYWJzL2ZsYXNoLyIrJ3N3Zmxhc2guY2FiI3ZlcnNpb249OCwwLDAsMCIgJysnd2lkdGg9IicrdGhpcy5wcm9wZXJ0aWVzLndpZHRoKyciICcrJ2hlaWdodD0iJyt0aGlzLnByb3BlcnRpZXMuaGVpZ2h0KyciICcrJ2lkPSInK3RoaXMucHJvcGVydGllcy5pZCsnIiAnKydhbGlnbj0ibWlkZGxlIj4gJysnPHBhcmFtIG5hbWU9ImFsbG93U2NyaXB0QWNjZXNzIiB2YWx1ZT0ic2FtZURvbWFpbiIgLz4gJysnPHBhcmFtIG5hbWU9Im1vdmllIiB2YWx1ZT0iJyskNSsnIiAvPiAnKyc8cGFyYW0gbmFtZT0icXVhbGl0eSIgdmFsdWU9ImhpZ2giIC8+ICcrJzxwYXJhbSBuYW1lPSJGbGFzaFZhcnMiIHZhbHVlPSInKyQ3KyciIC8+ICcrJzxwYXJhbSBuYW1lPSJiZ2NvbG9yIiB2YWx1ZT0iJyt0aGlzLnByb3BlcnRpZXMuYmdjb2xvcisnIiAvPiAnKyc8cGFyYW0gbmFtZT0id21vZGUiIHZhbHVlPSInK3RoaXMucHJvcGVydGllcy53bW9kZSsnIiAvPiAnKyc8cGFyYW0gbmFtZT0iYWxsb3dGdWxsU2NyZWVuIiB2YWx1ZT0iJyt0aGlzLnByb3BlcnRpZXMuYWxsb3dmdWxsc2NyZWVuKyciIC8+ICcrIjwvb2JqZWN0PiINCit9ZWxzZXsNCiskND0nPGVtYmVkIHNyYz0iJyskNSsnIiAnKydxdWFsaXR5PSJoaWdoIiAnKydiZ2NvbG9yPSInK3RoaXMucHJvcGVydGllcy5iZ2NvbG9yKyciICcrJ3dtb2RlPSInK3RoaXMucHJvcGVydGllcy53bW9kZSsnIiAnKydhbGxvd0Z1bGxTY3JlZW49IicrdGhpcy5wcm9wZXJ0aWVzLmFsbG93ZnVsbHNjcmVlbisnIiAnKyd3aWR0aD0iJyt0aGlzLnByb3BlcnRpZXMud2lkdGgrJyIgJysnaGVpZ2h0PSInK3RoaXMucHJvcGVydGllcy5oZWlnaHQrJyIgJysnaWQ9IicrdGhpcy5wcm9wZXJ0aWVzLmlkKyciICcrJ25hbWU9IicrdGhpcy5wcm9wZXJ0aWVzLmlkKyciICcrJ0ZsYXNoVmFycz0iJyskOCsnIiAnKydzd0xpdmVDb25uZWN0PSJ0cnVlIiAnKydhbGlnbj0ibWlkZGxlIiAnKydhbGxvd1NjcmlwdEFjY2Vzcz0ic2FtZURvbWFpbiIgJysndHlwZT0iYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giICcrJ3BsdWdpbnNwYWdlPSInK3RoaXMucHJvdG9jb2woKSsnOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIiAvPicNCit9O3ZhciAkMTE9dGhpcy5wcm9wZXJ0aWVzLmlkKyJDb250YWluZXIiO3ZhciAkMTI9dGhpcy5wcm9wZXJ0aWVzLmFwcGVuZGRpdjtpZigkMTIpew0KKyQxMi5pbm5lckhUTUw9JDQ7JDEyLnNldEF0dHJpYnV0ZSgic3R5bGUiLCQzKQ0KK31lbHNlew0KKyQ0PSc8ZGl2IGlkPSInKyQxMSsnIiBzdHlsZT0iJyskMysnIj4gJyskNCsiPC9kaXY+Ijtkb2N1bWVudC53cml0ZWxuKCQ0KQ0KK319LGdldDpmdW5jdGlvbigpew0KK3RyeXsNCit2YXIgJDE9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5wcm9wZXJ0aWVzLmlkKyIiKQ0KK30NCitjYXRjaChlKXsNCisNCit9O3JldHVybiAkMQ0KK30sc2V0VmlzaWJsZTpmdW5jdGlvbigkMSl7DQordmFyICQyPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHRoaXMucHJvcGVydGllcy5pZCsiQ29udGFpbmVyIik7aWYoJDE9PXRydWUpew0KKyQyLnN0eWxlLnZpc2liaWxpdHk9InZpc2libGUiDQorfWVsc2V7DQorJDIuc3R5bGUucG9zaXRpb249ImFic29sdXRlIjskMi5zdHlsZS54PSItMTAwMHB4IjskMi5zdHlsZS55PSItMTAwMHB4IjskMi5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iDQorfX0sY2VudGVyOmZ1bmN0aW9uKCl7DQordmFyICQxPXRoaXMucHJvcGVydGllcy53aWR0aDt2YXIgJDI9dGhpcy5wcm9wZXJ0aWVzLmhlaWdodDt2YXIgJDM9MDt2YXIgJDQ9MDt2YXIgJDU9ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQodGhpcy5wcm9wZXJ0aWVzLmlkKyJDb250YWluZXIiKTskNS5zdHlsZS50b3A9JDQrInB4IjskNS5zdHlsZS5sZWZ0PSQzKyJweCINCit9fTtsei5lbWJlZC5kb2pvLkNvbW11bmljYXRvcj1mdW5jdGlvbigkMSl7DQordGhpcy5faWQ9JDENCit9O2x6LmVtYmVkLmRvam8uQ29tbXVuaWNhdG9yLnByb3RvdHlwZT17X2FkZEV4dGVybmFsSW50ZXJmYWNlQ2FsbGJhY2s6ZnVuY3Rpb24obWV0aG9kTmFtZSxpZCl7DQordmFyIGRvam89bHouZW1iZWQuZG9qbzt2YXIgJDE9ZnVuY3Rpb24oKXsNCit2YXIgJDE9W107Zm9yKHZhciAkMj0wOyQyPGFyZ3VtZW50cy5sZW5ndGg7JDIrKyl7DQorJDFbJDJdPWFyZ3VtZW50c1skMl0NCit9OyQxLmxlbmd0aD1hcmd1bWVudHMubGVuZ3RoO3JldHVybiBkb2pvLmNvbW1baWRdLl9leGVjRmxhc2gobWV0aG9kTmFtZSwkMSxpZCkNCit9O2Rvam8uY29tbVtpZF1bbWV0aG9kTmFtZV09JDENCit9LF9lbmNvZGVEYXRhOmZ1bmN0aW9uKCQxKXsNCit2YXIgJDI9UmVnRXhwKCJcXCYoW147XSopXFw7IiwiZyIpOyQxPSQxLnJlcGxhY2UoJDIsIiZhbXA7JDE7Iik7JDE9JDEucmVwbGFjZShSZWdFeHAoIjwiLCJnIiksIiZsdDsiKTskMT0kMS5yZXBsYWNlKFJlZ0V4cCgiPiIsImciKSwiJmd0OyIpOyQxPSQxLnJlcGxhY2UoIlxcIiwiJmN1c3RvbV9iYWNrc2xhc2g7JmN1c3RvbV9iYWNrc2xhc2g7Iik7JDE9JDEucmVwbGFjZShSZWdFeHAoIlxcbiIsImciKSwiXFxuIik7JDE9JDEucmVwbGFjZShSZWdFeHAoIlxcciIsImciKSwiXFxyIik7JDE9JDEucmVwbGFjZShSZWdFeHAoIlxcZiIsImciKSwiXFxmIik7JDE9JDEucmVwbGFjZShSZWdFeHAoIlxcMCIsImciKSwiXFwwIik7JDE9JDEucmVwbGFjZShSZWdFeHAoIlxcJyIsImciKSwiXFwnIik7JDE9JDEucmVwbGFjZShSZWdFeHAoJ1xcIicsImciKSwnXFwiJyk7cmV0dXJuICQxDQorfSxfZGVjb2RlRGF0YTpmdW5jdGlvbigkMSl7DQoraWYoJDE9PW51bGx8fHR5cGVvZiAkMT09InVuZGVmaW5lZCIpew0KK3JldHVybiAkMQ0KK307JDE9JDEucmVwbGFjZShSZWdFeHAoIlxcJmN1c3RvbV9sdFxcOyIsImciKSwiPCIpOyQxPSQxLnJlcGxhY2UoUmVnRXhwKCJcXCZjdXN0b21fZ3RcXDsiLCJnIiksIj4iKTskMT1ldmFsKCciJyskMSsnIicpO3JldHVybiAkMQ0KK30sX2NodW5rQXJndW1lbnREYXRhOmZ1bmN0aW9uKCQxLCQyLCQzKXsNCit2YXIgJDQ9bHouZW1iZWQuZG9qby5vYmpbJDNdLmdldCgpO3ZhciAkNT1NYXRoLmNlaWwoJDEubGVuZ3RoLzEwMjQpO2Zvcih2YXIgJDY9MDskNjwkNTskNisrKXsNCit2YXIgJDc9JDYqMTAyNDt2YXIgJDg9JDYqMTAyNCsxMDI0O2lmKCQ2PT0kNS0xKXsNCiskOD0kNioxMDI0KyQxLmxlbmd0aA0KK307dmFyICQ5PSQxLnN1YnN0cmluZygkNywkOCk7JDk9dGhpcy5fZW5jb2RlRGF0YSgkOSk7JDQuQ2FsbEZ1bmN0aW9uKCc8aW52b2tlIG5hbWU9ImNodW5rQXJndW1lbnREYXRhIiAnKydyZXR1cm50eXBlPSJqYXZhc2NyaXB0Ij4nKyI8YXJndW1lbnRzPiIrIjxzdHJpbmc+IiskOSsiPC9zdHJpbmc+IisiPG51bWJlcj4iKyQyKyI8L251bWJlcj4iKyI8L2FyZ3VtZW50cz4iKyI8L2ludm9rZT4iKQ0KK319LF9jaHVua1JldHVybkRhdGE6ZnVuY3Rpb24oJDEpew0KK3ZhciAkMj1sei5lbWJlZC5kb2pvLm9ialskMV0uZ2V0KCk7dmFyICQzPSQyLmdldFJldHVybkxlbmd0aCgpO3ZhciAkND1bXTtmb3IodmFyICQ1PTA7JDU8JDM7JDUrKyl7DQordmFyICQ2PSQyLkNhbGxGdW5jdGlvbignPGludm9rZSBuYW1lPSJjaHVua1JldHVybkRhdGEiICcrJ3JldHVybnR5cGU9ImphdmFzY3JpcHQiPicrIjxhcmd1bWVudHM+IisiPG51bWJlcj4iKyQ1KyI8L251bWJlcj4iKyI8L2FyZ3VtZW50cz4iKyI8L2ludm9rZT4iKTtpZigkNj09JyIiJ3x8JDY9PSInJyIpew0KKyQ2PSIiDQorfWVsc2V7DQorJDY9JDYuc3Vic3RyaW5nKDEsJDYubGVuZ3RoLTEpDQorfTskNC5wdXNoKCQ2KQ0KK307dmFyICQ3PSQ0LmpvaW4oIiIpO3JldHVybiAkNw0KK30sX2V4ZWNGbGFzaDpmdW5jdGlvbigkMSwkMiwkMyl7DQordmFyICQ0PWx6LmVtYmVkLmRvam8ub2JqWyQzXS5nZXQoKTskNC5zdGFydEV4ZWMoKTskNC5zZXROdW1iZXJBcmd1bWVudHMoJDIubGVuZ3RoKTtmb3IodmFyICQ1PTA7JDU8JDIubGVuZ3RoOyQ1Kyspew0KK3RoaXMuX2NodW5rQXJndW1lbnREYXRhKCQyWyQ1XSwkNSwkMykNCit9OyQ0LmV4ZWMoJDEpO3ZhciAkNj10aGlzLl9jaHVua1JldHVybkRhdGEoJDMpOyQ2PXRoaXMuX2RlY29kZURhdGEoJDYpOyQ0LmVuZEV4ZWMoKTtyZXR1cm4gJDYNCit9fTtsei5lbWJlZC5kb2pvLkluc3RhbGw9ZnVuY3Rpb24oJDEpew0KK3RoaXMuX2lkPSQxDQorfTtsei5lbWJlZC5kb2pvLkluc3RhbGwucHJvdG90eXBlPXtuZWVkZWQ6ZnVuY3Rpb24oKXsNCit2YXIgJDE9bHouZW1iZWQuZG9qbztpZigkMS5pbmZvLmNhcGFibGU9PWZhbHNlKXsNCityZXR1cm4gdHJ1ZQ0KK307aWYobHouZW1iZWQuYnJvd3Nlci5pc1NhZmFyaT09dHJ1ZSYmISQxLmluZm8uaXNWZXJzaW9uT3JBYm92ZSg4LDAsMCkpew0KK3JldHVybiB0cnVlDQorfTtpZigkMS5taW5pbXVtVmVyc2lvbj4kMS5pbmZvLnZlcnNpb25NYWpvcil7DQorcmV0dXJuIHRydWUNCit9O2lmKCEkMS5pbmZvLmlzVmVyc2lvbk9yQWJvdmUoOCwwLDApKXsNCityZXR1cm4gdHJ1ZQ0KK307cmV0dXJuIGZhbHNlDQorfSxpbnN0YWxsOmZ1bmN0aW9uKCl7DQordmFyICQxPWx6LmVtYmVkLmRvam87JDEuaW5mby5pbnN0YWxsaW5nPXRydWU7JDEuaW5zdGFsbGluZygpO3ZhciAkMj0kMS5vYmpbdGhpcy5faWRdLnByb3BlcnRpZXM7dmFyICQzPSQyLmZsYXNoODt2YXIgJDQ9JDMuaW5kZXhPZigic3dmNyIpO2lmKCQ0IT0tMSl7DQorJDEuX3RlbXB1cmw9JDM7JDM9JDMuc3Vic3RyaW5nKDAsJDQrMykrIjgiKyQzLnN1YnN0cmluZygkNCs0LCQzLmxlbmd0aCk7JDIuZmxhc2g4PSQzDQorfTt2YXIgJDQ9JDMuaW5kZXhPZigic3dmOSIpO2lmKCQ0IT0tMSl7DQorJDEuX3RlbXB1cmw9JDM7JDM9JDMuc3Vic3RyaW5nKDAsJDQrMykrIjgiKyQzLnN1YnN0cmluZygkNCs0LCQzLmxlbmd0aCk7JDIuZmxhc2g4PSQzDQorfTskMS5yZWFkeT1mYWxzZTtpZigkMS5pbmZvLmNhcGFibGU9PWZhbHNlKXsNCiskMS5faXNpbnN0YWxsZXI9dHJ1ZTt2YXIgJDU9bmV3ICgkMS5FbWJlZCkoJDIpOyQ1LndyaXRlKCQxLm1pbmltdW1WZXJzaW9uKQ0KK31lbHNlew0KK2lmKCQxLmluZm8uaXNWZXJzaW9uT3JBYm92ZSg2LDAsNjUpKXsNCit2YXIgJDU9bmV3ICgkMS5FbWJlZCkoJDIpOyQ1LndyaXRlKCQxLm1pbmltdW1WZXJzaW9uLHRydWUpOyQ1LnNldFZpc2libGUodHJ1ZSk7JDUuY2VudGVyKCkNCit9ZWxzZXsNCithbGVydCgiVGhpcyBjb250ZW50IHJlcXVpcmVzIGEgbW9yZSByZWNlbnQgdmVyc2lvbiBvZiB0aGUgTWFjcm9tZWRpYSAiKyIgRmxhc2ggUGxheWVyLiIpO3dpbmRvdy5sb2NhdGlvbj0iaHR0cDovL3d3dy5tYWNyb21lZGlhLmNvbS9nby9nZXRmbGFzaHBsYXllciINCit9fX0sX29uSW5zdGFsbFN0YXR1czpmdW5jdGlvbigkMSl7DQoraWYoJDE9PSJEb3dubG9hZC5Db21wbGV0ZSIpew0KK2lmKGx6LmVtYmVkLmJyb3dzZXIuaXNJRSl7DQordG9wLmxvY2F0aW9uPXRvcC5sb2NhdGlvbisiIg0KK319ZWxzZXsNCitpZigkMT09IkRvd25sb2FkLkNhbmNlbGxlZCIpew0KK2FsZXJ0KCJUaGlzIGNvbnRlbnQgcmVxdWlyZXMgYSBtb3JlIHJlY2VudCB2ZXJzaW9uIG9mIHRoZSBNYWNyb21lZGlhICIrIiBGbGFzaCBQbGF5ZXIuIik7d2luZG93LmxvY2F0aW9uPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIg0KK31lbHNlew0KK2lmKCQxPT0iRG93bmxvYWQuRmFpbGVkIil7DQorYWxlcnQoIlRoZXJlIHdhcyBhbiBlcnJvciBkb3dubG9hZGluZyB0aGUgRmxhc2ggUGxheWVyIHVwZGF0ZS4gIisiUGxlYXNlIHRyeSBhZ2FpbiBsYXRlciwgb3IgdmlzaXQgbWFjcm9tZWRpYS5jb20gdG8gZG93bmxvYWQgIisidGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBGbGFzaCBwbHVnaW4uIik7d2luZG93LmxvY2F0aW9uPSJodHRwOi8vd3d3Lm1hY3JvbWVkaWEuY29tL2dvL2dldGZsYXNocGxheWVyIg0KK319fX19O2x6LmVtYmVkLmRvam8uaW5mbz1uZXcgKGx6LmVtYmVkLmRvam8uSW5mbykoKTtsei5lbWJlZC5pZnJhbWVtYW5hZ2VyPXtfX2NvdW50ZXI6MCxfX2ZyYW1lczp7fSxfX25hbWVieWlkOnt9LF9fbG9hZGluZzp7fSxfX2NhbGxxdWV1ZTp7fSxfX2NhbGxqc3F1ZXVlOnt9LF9fc2VuZG1vdXNlZXZlbnRzOnt9LF9faGlkZW5hdGl2ZWNvbnRleHRtZW51Ont9LF9fc2VsZWN0aW9uYm9va21hcmtzOnt9LGNyZWF0ZTpmdW5jdGlvbigkMSwkMiwkMywkNCwkNSwkNil7DQordmFyICQ3PSJfX2x6Iitsei5lbWJlZC5pZnJhbWVtYW5hZ2VyLl9fY291bnRlcisrO3ZhciAkOD0namF2YXNjcmlwdDoiIic7dmFyICQ5PSdsei5lbWJlZC5pZnJhbWVtYW5hZ2VyLl9fZ290bG9hZCgiJyskNysnIiknO2lmKCQyPT1udWxsfHwkMj09Im51bGwifHwkMj09IiIpew0KKyQyPSQ3DQorfTtsei5lbWJlZC5pZnJhbWVtYW5hZ2VyLl9fbmFtZWJ5aWRbJDddPSQyO2lmKCQ0PT1udWxsfHwkND09InVuZGVmaW5lZCIpew0KKyQ0PWRvY3VtZW50LmJvZHkNCit9O2lmKGRvY3VtZW50LmFsbCl7DQordmFyICQxMD0iPGlmcmFtZSBuYW1lPSciKyQyKyInIGlkPSciKyQ3KyInIHNyYz0nIiskOCsiJyBvbmxvYWQ9JyIrJDkrIicgZnJhbWVCb3JkZXI9JzAnIjtpZigkMyE9dHJ1ZSl7DQorJDEwKz0iIHNjcm9sbGluZz0nbm8nIg0KK307JDEwKz0iPjwvaWZyYW1lPiI7dmFyICQxMT1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTtsei5lbWJlZC5fX3NldEF0dHIoJDExLCJpZCIsJDcrIkNvbnRhaW5lciIpOyQ0LmFwcGVuZENoaWxkKCQxMSk7JDExLmlubmVySFRNTD0kMTA7dmFyICQxMj1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgkNykNCit9ZWxzZXsNCit2YXIgJDEyPWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpO2x6LmVtYmVkLl9fc2V0QXR0cigkMTIsIm5hbWUiLCQyKTtsei5lbWJlZC5fX3NldEF0dHIoJDEyLCJzcmMiLCQ4KTtsei5lbWJlZC5fX3NldEF0dHIoJDEyLCJpZCIsJDcpO2x6LmVtYmVkLl9fc2V0QXR0cigkMTIsIm9ubG9hZCIsJDkpO2lmKCQzIT10cnVlKXsNCitsei5lbWJlZC5fX3NldEF0dHIoJDEyLCJzY3JvbGxpbmciLCJubyIpDQorfTt0aGlzLmFwcGVuZFRvKCQxMiwkNCkNCit9O2lmKCQxMil7DQordGhpcy5fX2ZpbmlzaENyZWF0ZSgkNywkMSwkMiwkMywkNCwkNSwkNikNCit9ZWxzZXsNCit0aGlzLl9fY2FsbHF1ZXVlWyQ3XT1bWyJfX2ZpbmlzaENyZWF0ZSIsJDcsJDEsJDIsJDMsJDQsJDUsJDZdXTtzZXRUaW1lb3V0KCdsei5lbWJlZC5pZnJhbWVtYW5hZ2VyLl9fY2hlY2tpZnJhbWUoIicrJDcrJyIpJywxMCkNCit9O3JldHVybiAkNysiIg0KK30sX19jaGVja2lmcmFtZTpmdW5jdGlvbigkMSl7DQordmFyICQyPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCQxKTtpZigkMil7DQordmFyICQzPWx6LmVtYmVkLmlmcmFtZW1hbmFnZXIuX19jYWxscXVldWVbJDFdO2RlbGV0ZSBsei5lbWJlZC5pZnJhbWVtYW5hZ2VyLl9fY2FsbHF1ZXVlWyQxXTtsei5lbWJlZC5pZnJhbWVtYW5hZ2VyLl9fcGxheVF1ZXVlKCQzKQ0KK31lbHNlew0KK3NldFRpbWVvdXQoJ2x6LmVtYmVkLmlmcmFtZW1hbmFnZXIuX19jaGVja2lmcmFtZSgiJyskMSsnIiknLDEwKQ0KK319LF9fcGxheVF1ZXVlOmZ1bmN0aW9uKCQxKXsNCit2YXIgJDI9bHouZW1iZWQuaWZyYW1lbWFuYWdlcjtmb3IodmFyICQzPTA7JDM8JDEubGVuZ3RoOyQzKyspew0KK3ZhciAkND0kMVskM107dmFyICQ1PSQ0LnNwbGljZSgwLDEpOyQyWyQ1XS5hcHBseSgkMiwkNCkNCit9fSxfX2ZpbmlzaENyZWF0ZTpmdW5jdGlvbigkMSwkMiwkMywkNCwkNSwkNiwkNyl7DQordmFyICQ4PWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCQxKTtpZih0eXBlb2YgJDI9PSJzdHJpbmciKXsNCiskOC5hcHBjb250YWluZXI9bHouZW1iZWQuYXBwbGljYXRpb25zWyQyXS5fZ2V0U1dGRGl2KCkNCit9OyQ4Lm93bmVyPSQyO2x6LmVtYmVkLmlmcmFtZW1hbmFnZXIuX19mcmFtZXNbJDFdPSQ4O3RoaXMuX19uYW1lYnlpZFskMV09JDM7dmFyICQ5PWx6LmVtYmVkLmlmcmFtZW1hbmFnZXIuZ2V0RnJhbWUoJDEpOyQ5Ll9fZ290bG9hZD1sei5lbWJlZC5pZnJhbWVtYW5hZ2VyLl9fZ290bG9hZDskOS5fZGVmYXVsdHo9JDY/JDY6OTk5MDA7dGhpcy5zZXRaKCQxLCQ5Ll9kZWZhdWx0eik7bHouZW1iZWQuaWZyYW1lbWFuYWdlci5fX3RvcGlmcmFtZT0kMTtpZihkb2N1bWVudC5nZXRFbGVtZW50QnlJZCYmIWRvY3VtZW50LmFsbCl7DQorJDkuc3R5bGUuYm9yZGVyPSIwIg0KK31lbHNlew0KK2lmKGRvY3VtZW50LmFsbCl7DQorbHouZW1iZWQuX19zZXRBdHRyKCQ5LCJhbGxvd3RyYW5zcGFyZW5jeSIsInRydWUiKTt2YXIgJDEwPWx6LmVtYmVkWyQ5Lm93bmVyXTtpZigkMTAmJiQxMC5ydW50aW1lPT0ic3dmIil7DQordmFyICQxMT0kMTAuX2dldFNXRkRpdigpOyQxMS5vbmZvY3VzPWx6LmVtYmVkLmlmcmFtZW1hbmFnZXIuX19yZWZyZXNoDQorfX19OyQ5LnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSINCit9LGFwcGVuZFRvOmZ1bmN0aW9uKCQxLCQyKXsNCitpZigkMi5fX2FwcGVuZGVkPT0kMil7DQorcmV0dXJuDQorfTtpZigkMS5fX2FwcGVuZGVkKXsNCitvbGQ9JDEuX19hcHBlbmRlZC5yZW1vdmVDaGlsZCgkMSk7JDIuYXBwZW5kQ2hpbGQob2xkKQ0KK31lbHNlew0KKyQyLmFwcGVuZENoaWxkKCQxKQ0KK307JDEuX19hcHBlbmRlZD0kMg0KK30sZ2V0RnJhbWU6ZnVuY3Rpb24oJDEpew0KK3JldHVybiBsei5lbWJlZC5pZnJhbWVtYW5hZ2VyLl9fZnJhbWVzWyQxXQ0KK30sZ2V0RnJhbWVXaW5kb3c6ZnVuY3Rpb24oJDEpew0KK2lmKCF0aGlzWyJmcmFtZXNDb2xsIl0pew0KK2lmKGRvY3VtZW50LmZyYW1lcyl7DQordGhpcy5mcmFtZXNDb2xsPWRvY3VtZW50LmZyYW1lcw0KK31lbHNlew0KK3RoaXMuZnJhbWVzQ29sbD13aW5kb3cuZnJhbWVzDQorfX07cmV0dXJuIHRoaXMuZnJhbWVzQ29sbFskMV0NCit9LHNldFNyYzpmdW5jdGlvbigkMSwkMiwkMyl7DQoraWYodGhpcy5fX2NhbGxxdWV1ZVskMV0pew0KK3RoaXMuX19jYWxscXVldWVbJDFdLnB1c2goWyJzZXRTcmMiLCQxLCQyLCQzXSk7cmV0dXJuDQorfTt0aGlzLl9fc2V0U2VuZE1vdXNlRXZlbnRzKCQxLGZhbHNlKTtpZigkMyl7DQordmFyICQ0PWx6LmVtYmVkLmlmcmFtZW1hbmFnZXIuZ2V0RnJhbWUoJDEpO2lmKCEkNCl7DQorcmV0dXJuDQorfTtsei5lbWJlZC5fX3NldEF0dHIoJDQsInNyYyIsJDIpDQorfWVsc2V7DQordmFyICQxPWx6LmVtYmVkLmlmcmFtZW1hbmFnZXIuX19uYW1lYnlpZFskMV07dmFyICQ0PXdpbmRvd1skMV07aWYoISQ0KXsNCityZXR1cm4NCit9OyQ0LmxvY2F0aW9uLnJlcGxhY2UoJDIpDQorfTt0aGlzLl9fbG9hZGluZ1skMV09dHJ1ZQ0KK30sc2V0UG9zaXRpb246ZnVuY3Rpb24oJDEsJDIsJDMsJDQsJDUsJDYsJDcpew0KK2lmKHRoaXMuX19jYWxscXVldWVbJDFdKXsNCit0aGlzLl9fY2FsbHF1ZXVlWyQxXS5wdXNoKFsic2V0UG9zaXRpb24iLCQxLCQyLCQzLCQ0LCQ1LCQ2LCQ3XSk7cmV0dXJuDQorfTt2YXIgJDg9bHouZW1iZWQuaWZyYW1lbWFuYWdlci5nZXRGcmFtZSgkMSk7aWYoISQ4KXsNCityZXR1cm4NCit9O2lmKCQ4LmFwcGNvbnRhaW5lcil7DQordmFyICQ5PWx6LmVtYmVkLmdldEFic29sdXRlUG9zaXRpb24oJDguYXBwY29udGFpbmVyKQ0KK31lbHNlew0KK3ZhciAkOT17eDowLHk6MH19O2lmKCQyIT1udWxsJiYhaXNOYU4oJDIpKXsNCiskOC5zdHlsZS5sZWZ0PSQyKyQ5LngrInB4Ig0KK307aWYoJDMhPW51bGwmJiFpc05hTigkMykpew0KKyQ4LnN0eWxlLnRvcD0kMyskOS55KyJweCINCit9O2lmKCQ0IT1udWxsJiYhaXNOYU4oJDQpKXsNCiskOC5zdHlsZS53aWR0aD0kNCsicHgiDQorfTtpZigkNSE9bnVsbCYmIWlzTmFOKCQ1KSl7DQorJDguc3R5bGUuaGVpZ2h0PSQ1KyJweCINCit9O2lmKCQ2IT1udWxsKXsNCitpZih0eXBlb2YgJDY9PSJzdHJpbmciKXsNCiskNj0kNj09InRydWUiDQorfTskOC5zdHlsZS5kaXNwbGF5PSQ2PyJibG9jayI6Im5vbmUiDQorfTtpZigkNyE9bnVsbCl7DQordGhpcy5zZXRaKCQxLCQ3KyQ4Ll9kZWZhdWx0eikNCit9fSxzZXRWaXNpYmxlOmZ1bmN0aW9uKCQxLCQyKXsNCitpZih0aGlzLl9fY2FsbHF1ZXVlWyQxXSl7DQordGhpcy5fX2NhbGxxdWV1ZVskMV0ucHVzaChbInNldFZpc2libGUiLCQxLCQyXSk7cmV0dXJuDQorfTtpZih0eXBlb2YgJDI9PSJzdHJpbmciKXsNCiskMj0kMj09InRydWUiDQorfTt2YXIgJDM9bHouZW1iZWQuaWZyYW1lbWFuYWdlci5nZXRGcmFtZSgkMSk7aWYoISQzKXsNCityZXR1cm4NCit9OyQzLnN0eWxlLmRpc3BsYXk9JDI/ImJsb2NrIjoibm9uZSINCit9LGJyaW5nVG9Gcm9udDpmdW5jdGlvbigkMSl7DQoraWYodGhpcy5fX2NhbGxxdWV1ZVskMV0pew0KK3RoaXMuX19jYWxscXVldWVbJDFdLnB1c2goWyJicmluZ1RvRnJvbnQiLCQxXSk7cmV0dXJuDQorfTt2YXIgJDI9bHouZW1iZWQuaWZyYW1lbWFuYWdlci5nZXRGcmFtZSgkMSk7aWYoISQyKXsNCityZXR1cm4NCit9OyQyLl9kZWZhdWx0ej0xMDAwMDA7dGhpcy5zZXRaKCQxLCQyLl9kZWZhdWx0eik7bHouZW1iZWQuaWZyYW1lbWFuYWdlci5fX3RvcGlmcmFtZT0kMQ0KK30sc2VuZFRvQmFjazpmdW5jdGlvbigkMSl7DQoraWYodGhpcy5fX2NhbGxxdWV1ZVskMV0pew0KK3RoaXMuX19jYWxscXVldWVbJDFdLnB1c2goWyJzZW5kVG9CYWNrIiwkMV0pO3JldHVybg0KK307dmFyICQyPWx6LmVtYmVkLmlmcmFtZW1hbmFnZXIuZ2V0RnJhbWUoJDEpO2lmKCEkMil7DQorcmV0dXJuDQorfTskMi5fZGVmYXVsdHo9OTk5MDA7dGhpcy5zZXRaKCQxLCQyLl9kZWZhdWx0eikNCit9LF9fZ290bG9hZDpmdW5jdGlvbigkMSl7DQordmFyICQyPWx6LmVtYmVkLmlmcmFtZW1hbmFnZXIuZ2V0RnJhbWUoJDEpO2lmKCEkMil7DQorcmV0dXJuDQorfTtpZigkMi5vd25lciYmJDIub3duZXIuX19nb3Rsb2FkKXsNCiskMi5vd25lci5fX2dvdGxvYWQoKQ0KK31lbHNlew0KK2x6LmVtYmVkWyQyLm93bmVyXS5jYWxsTWV0aG9kKCJsei5lbWJlZC5pZnJhbWVtYW5hZ2VyLl9fZ290bG9hZCgnIiskMSsiJykiKQ0KK307dGhpcy5fX2xvYWRpbmdbJDFdPWZhbHNlO2lmKHRoaXMuX19zZW5kbW91c2VldmVudHNbJDFdKXsNCit0aGlzLl9fc2V0U2VuZE1vdXNlRXZlbnRzKCQxLHRydWUpDQorfTtpZih0aGlzLl9fY2FsbGpzcXVldWVbJDFdKXsNCit0aGlzLl9fcGxheVF1ZXVlKHRoaXMuX19jYWxsanNxdWV1ZVskMV0pO2RlbGV0ZSB0aGlzLl9fY2FsbGpzcXVldWVbJDFdDQorfX0sX19yZWZyZXNoOmZ1bmN0aW9uKCl7DQoraWYobHouZW1iZWQuaWZyYW1lbWFuYWdlci5fX3RvcGlmcmFtZSl7DQordmFyICQxPWx6LmVtYmVkLmlmcmFtZW1hbmFnZXIuZ2V0RnJhbWUobHouZW1iZWQuaWZyYW1lbWFuYWdlci5fX3RvcGlmcmFtZSk7aWYoJDEuc3R5bGUuZGlzcGxheT09ImJsb2NrIil7DQorJDEuc3R5bGUuZGlzcGxheT0ibm9uZSI7JDEuc3R5bGUuZGlzcGxheT0iYmxvY2siDQorfX19LHNldFo6ZnVuY3Rpb24oJDEsJDIpew0KK2lmKHRoaXMuX19jYWxscXVldWVbJDFdKXsNCit0aGlzLl9fY2FsbHF1ZXVlWyQxXS5wdXNoKFsic2V0WiIsJDEsJDJdKTtyZXR1cm4NCit9O3ZhciAkMz1sei5lbWJlZC5pZnJhbWVtYW5hZ2VyLmdldEZyYW1lKCQxKTtpZighJDMpew0KK3JldHVybg0KK307JDMuc3R5bGUuekluZGV4PSQyDQorfSxzY3JvbGxCeTpmdW5jdGlvbigkMSwkMiwkMyl7DQoraWYodGhpcy5fX2NhbGxxdWV1ZVskMV0pew0KK3RoaXMuX19jYWxscXVldWVbJDFdLnB1c2goWyJzY3JvbGxCeSIsJDEsJDIsJDNdKTtyZXR1cm4NCit9O3ZhciAkMT1sei5lbWJlZC5pZnJhbWVtYW5hZ2VyLl9fbmFtZWJ5aWRbJDFdO3ZhciAkND13aW5kb3cuZnJhbWVzWyQxXTtpZighJDQpew0KK3JldHVybg0KK307JDQuc2Nyb2xsQnkoJDIsJDMpDQorfSxfX2Rlc3Ryb3k6ZnVuY3Rpb24oJDEpew0KK2lmKHRoaXMuX19jYWxscXVldWVbJDFdKXsNCit0aGlzLl9fY2FsbHF1ZXVlWyQxXS5wdXNoKFsiX19kZXN0cm95IiwkMV0pO3JldHVybg0KK307dmFyICQyPWx6LmVtYmVkLmlmcmFtZW1hbmFnZXIuX19mcmFtZXNbJDFdO2lmKCQyKXsNCit0aGlzLl9fc2V0U2VuZE1vdXNlRXZlbnRzKCQxLGZhbHNlKTskMi5vd25lcj1udWxsOyQyLmFwcGNvbnRhaW5lcj1udWxsO0x6U3ByaXRlLnByb3RvdHlwZS5fX2Rpc2NhcmRFbGVtZW50KCQyKTtkZWxldGUgbHouZW1iZWQuaWZyYW1lbWFuYWdlci5fX2ZyYW1lc1skMV07ZGVsZXRlIGx6LmVtYmVkLmlmcmFtZW1hbmFnZXIuX19uYW1lYnlpZFskMV0NCit9fSxjYWxsSmF2YXNjcmlwdDpmdW5jdGlvbigkMSwkMiwkMywkNCl7DQoraWYodGhpcy5fX2NhbGxxdWV1ZVskMV0pew0KK3RoaXMuX19jYWxscXVldWVbJDFdLnB1c2goWyJjYWxsSmF2YXNjcmlwdCIsJDEsJDIsJDMsJDRdKTtyZXR1cm4NCit9O2lmKHRoaXMuX19sb2FkaW5nWyQxXSl7DQoraWYoIXRoaXMuX19jYWxsanNxdWV1ZVskMV0pew0KK3RoaXMuX19jYWxsanNxdWV1ZVskMV09W10NCit9O3RoaXMuX19jYWxsanNxdWV1ZVskMV0ucHVzaChbImNhbGxKYXZhc2NyaXB0IiwkMSwkMiwkMywkNF0pO3JldHVybg0KK307dmFyICQ1PWx6LmVtYmVkLmlmcmFtZW1hbmFnZXIuZ2V0RnJhbWVXaW5kb3coJDEpO2lmKCEkNCl7DQorJDQ9W10NCit9O3RyeXsNCit2YXIgJDY9JDUuZXZhbCgkMik7aWYoJDYpew0KK3ZhciAkNz0kNi5hcHBseSgkNSwkNCk7aWYoJDMpew0KKyQzLmV4ZWN1dGUoJDcpDQorfTtyZXR1cm4gJDcNCit9fQ0KK2NhdGNoKGUpew0KKw0KK319LF9fZ2xvYmFsTW91c2VvdmVyOmZ1bmN0aW9uKCQxLCQyKXsNCit2YXIgJDM9bHouZW1iZWQuaWZyYW1lbWFuYWdlci5nZXRGcmFtZSgkMik7aWYoISQzKXsNCityZXR1cm4NCit9OyQxPXdpbmRvdy5ldmVudDtpZigkMy5vd25lciYmJDMub3duZXIuc3ByaXRlKXsNCitpZigkMS50b0VsZW1lbnQmJiQxLnRvRWxlbWVudC5ub2RlTmFtZSE9IklGUkFNRSIpew0KK0x6TW91c2VLZXJuZWwuX19yZXNldE1vdXNlKCkNCit9fX0sX19tb3VzZUV2ZW50OmZ1bmN0aW9uKCQxLCQyKXsNCit2YXIgJDM9bHouZW1iZWQ7dmFyICQ0PSQzLmlmcmFtZW1hbmFnZXIuZ2V0RnJhbWUoJDIpO2lmKCEkNCl7DQorcmV0dXJuDQorfTtpZighJDEpew0KKyQxPXdpbmRvdy5ldmVudA0KK307dmFyICQ1PSJvbiIrJDEudHlwZTtpZigkNC5vd25lciYmJDQub3duZXIuc3ByaXRlJiYkNC5vd25lci5zcHJpdGUuX19tb3VzZUV2ZW50KXsNCitpZigkNT09Im9uY29udGV4dG1lbnUiKXsNCitpZighJDMuaWZyYW1lbWFuYWdlci5fX2hpZGVuYXRpdmVjb250ZXh0bWVudVskMl0pew0KK3JldHVybg0KK31lbHNlew0KK3ZhciAkNj0kMy5nZXRBYnNvbHV0ZVBvc2l0aW9uKCQ0KTtMek1vdXNlS2VybmVsLl9fc2VuZE1vdXNlTW92ZSgkMSwkNi54LCQ2LnkpO3JldHVybiBMek1vdXNlS2VybmVsLl9fc2hvd0NvbnRleHRNZW51KCQxKQ0KK319OyQ0Lm93bmVyLnNwcml0ZS5fX21vdXNlRXZlbnQoJDEpO2lmKCQ1PT0ib25tb3VzZXVwIil7DQoraWYoTHpNb3VzZUtlcm5lbC5fX2xhc3RNb3VzZURvd249PSQ0Lm93bmVyLnNwcml0ZSl7DQorTHpNb3VzZUtlcm5lbC5fX2xhc3RNb3VzZURvd249bnVsbA0KK319fWVsc2V7DQoraWYoJDU9PSJvbm1vdXNlbGVhdmUiKXsNCiskNT0ib25tb3VzZW91dCINCit9ZWxzZXsNCitpZigkNT09Im9ubW91c2VlbnRlciIpew0KKyQ1PSJvbm1vdXNlb3ZlciINCit9ZWxzZXsNCitpZigkNT09Im9uY29udGV4dG1lbnUiKXsNCityZXR1cm4NCit9fX07JDNbJDQub3duZXJdLmNhbGxNZXRob2QoImx6LmVtYmVkLmlmcmFtZW1hbmFnZXIuX19nb3RNb3VzZUV2ZW50KCciKyQyKyInLCciKyQ1KyInKSIpDQorfX0sc2V0U2VuZE1vdXNlRXZlbnRzOmZ1bmN0aW9uKCQxLCQyKXsNCitpZih0aGlzLl9fY2FsbHF1ZXVlWyQxXSl7DQordGhpcy5fX2NhbGxxdWV1ZVskMV0ucHVzaChbInNldFNlbmRNb3VzZUV2ZW50cyIsJDEsJDJdKTtyZXR1cm4NCit9O3RoaXMuX19zZW5kbW91c2VldmVudHNbJDFdPSQyDQorfSxfX3NldFNlbmRNb3VzZUV2ZW50czpmdW5jdGlvbihpZCwkMSl7DQordmFyIGlmcmFtZT1sei5lbWJlZC5pZnJhbWVtYW5hZ2VyLmdldEZyYW1lV2luZG93KGlkKTtpZighaWZyYW1lKXsNCityZXR1cm4NCit9O2lmKCQxKXsNCitpZihsei5lbWJlZC5icm93c2VyLmlzSUUpew0KK2x6LmVtYmVkLmF0dGFjaEV2ZW50SGFuZGxlcihkb2N1bWVudCwibW91c2VvdmVyIixsei5lbWJlZC5pZnJhbWVtYW5hZ2VyLCJfX2dsb2JhbE1vdXNlb3ZlciIsaWQpDQorfTt0cnl7DQorbHouZW1iZWQuYXR0YWNoRXZlbnRIYW5kbGVyKGlmcmFtZS5kb2N1bWVudCwibW91c2Vkb3duIixsei5lbWJlZC5pZnJhbWVtYW5hZ2VyLCJfX21vdXNlRXZlbnQiLGlkKTtsei5lbWJlZC5hdHRhY2hFdmVudEhhbmRsZXIoaWZyYW1lLmRvY3VtZW50LCJtb3VzZXVwIixsei5lbWJlZC5pZnJhbWVtYW5hZ2VyLCJfX21vdXNlRXZlbnQiLGlkKTtsei5lbWJlZC5hdHRhY2hFdmVudEhhbmRsZXIoaWZyYW1lLmRvY3VtZW50LCJjbGljayIsbHouZW1iZWQuaWZyYW1lbWFuYWdlciwiX19tb3VzZUV2ZW50IixpZCk7aWZyYW1lLmRvY3VtZW50Lm9uY29udGV4dG1lbnU9ZnVuY3Rpb24oJDEpew0KK2lmKCEkMSl7DQorJDE9aWZyYW1lLmV2ZW50DQorfTtyZXR1cm4gbHouZW1iZWQuaWZyYW1lbWFuYWdlci5fX21vdXNlRXZlbnQoJDEsaWQpDQorfTtpZihsei5lbWJlZC5icm93c2VyLmlzSUUpew0KK2x6LmVtYmVkLmF0dGFjaEV2ZW50SGFuZGxlcihpZnJhbWUuZG9jdW1lbnQsIm1vdXNlZW50ZXIiLGx6LmVtYmVkLmlmcmFtZW1hbmFnZXIsIl9fbW91c2VFdmVudCIsaWQpO2x6LmVtYmVkLmF0dGFjaEV2ZW50SGFuZGxlcihpZnJhbWUuZG9jdW1lbnQsIm1vdXNlbGVhdmUiLGx6LmVtYmVkLmlmcmFtZW1hbmFnZXIsIl9fbW91c2VFdmVudCIsaWQpDQorfWVsc2V7DQorbHouZW1iZWQuYXR0YWNoRXZlbnRIYW5kbGVyKGlmcmFtZS5kb2N1bWVudCwibW91c2VvdmVyIixsei5lbWJlZC5pZnJhbWVtYW5hZ2VyLCJfX21vdXNlRXZlbnQiLGlkKTtsei5lbWJlZC5hdHRhY2hFdmVudEhhbmRsZXIoaWZyYW1lLmRvY3VtZW50LCJtb3VzZW91dCIsbHouZW1iZWQuaWZyYW1lbWFuYWdlciwiX19tb3VzZUV2ZW50IixpZCkNCit9fQ0KK2NhdGNoKGUpew0KKw0KK319ZWxzZXsNCitpZihsei5lbWJlZC5icm93c2VyLmlzSUUpew0KK2x6LmVtYmVkLnJlbW92ZUV2ZW50SGFuZGxlcihkb2N1bWVudCwibW91c2VvdmVyIixsei5lbWJlZC5pZnJhbWVtYW5hZ2VyLCJfX2dsb2JhbE1vdXNlb3ZlciIpDQorfTt0cnl7DQorbHouZW1iZWQucmVtb3ZlRXZlbnRIYW5kbGVyKGlmcmFtZS5kb2N1bWVudCwibW91c2Vkb3duIixsei5lbWJlZC5pZnJhbWVtYW5hZ2VyLCJfX21vdXNlRXZlbnQiKTtsei5lbWJlZC5yZW1vdmVFdmVudEhhbmRsZXIoaWZyYW1lLmRvY3VtZW50LCJtb3VzZXVwIixsei5lbWJlZC5pZnJhbWVtYW5hZ2VyLCJfX21vdXNlRXZlbnQiKTtsei5lbWJlZC5yZW1vdmVFdmVudEhhbmRsZXIoaWZyYW1lLmRvY3VtZW50LCJjbGljayIsbHouZW1iZWQuaWZyYW1lbWFuYWdlciwiX19tb3VzZUV2ZW50Iik7aWZyYW1lLmRvY3VtZW50Lm9uY29udGV4dG1lbnU9bnVsbDtpZihsei5lbWJlZC5icm93c2VyLmlzSUUpew0KK2x6LmVtYmVkLnJlbW92ZUV2ZW50SGFuZGxlcihpZnJhbWUuZG9jdW1lbnQsIm1vdXNlZW50ZXIiLGx6LmVtYmVkLmlmcmFtZW1hbmFnZXIsIl9fbW91c2VFdmVudCIpO2x6LmVtYmVkLnJlbW92ZUV2ZW50SGFuZGxlcihpZnJhbWUuZG9jdW1lbnQsIm1vdXNlbGVhdmUiLGx6LmVtYmVkLmlmcmFtZW1hbmFnZXIsIl9fbW91c2VFdmVudCIpDQorfWVsc2V7DQorbHouZW1iZWQucmVtb3ZlRXZlbnRIYW5kbGVyKGlmcmFtZS5kb2N1bWVudCwibW91c2VvdmVyIixsei5lbWJlZC5pZnJhbWVtYW5hZ2VyLCJfX21vdXNlRXZlbnQiKTtsei5lbWJlZC5yZW1vdmVFdmVudEhhbmRsZXIoaWZyYW1lLmRvY3VtZW50LCJtb3VzZW91dCIsbHouZW1iZWQuaWZyYW1lbWFuYWdlciwiX19tb3VzZUV2ZW50IikNCit9fQ0KK2NhdGNoKGUpew0KKw0KK319fSxzZXRTaG93TmF0aXZlQ29udGV4dE1lbnU6ZnVuY3Rpb24oJDEsJDIpew0KK3RoaXMuX19oaWRlbmF0aXZlY29udGV4dG1lbnVbJDFdPSEkMg0KK30sc3RvcmVTZWxlY3Rpb246ZnVuY3Rpb24oJDEpew0KK3ZhciAkMj1sei5lbWJlZC5pZnJhbWVtYW5hZ2VyO3ZhciAkMz0kMi5nZXRGcmFtZVdpbmRvdygkMSk7aWYoJDMmJiQzLmRvY3VtZW50JiYkMy5kb2N1bWVudC5zZWxlY3Rpb24mJiQzLmRvY3VtZW50LnNlbGVjdGlvbi50eXBlPT0iVGV4dCIpew0KKyQyLl9fc2VsZWN0aW9uYm9va21hcmtzWyQxXT0kMy5kb2N1bWVudC5zZWxlY3Rpb24uY3JlYXRlUmFuZ2UoKS5nZXRCb29rbWFyaygpDQorfX0scmVzdG9yZVNlbGVjdGlvbjpmdW5jdGlvbigkMSl7DQordmFyICQyPWx6LmVtYmVkLmlmcmFtZW1hbmFnZXI7dmFyICQzPSQyLmdldEZyYW1lV2luZG93KCQxKTtpZigkMi5fX3NlbGVjdGlvbmJvb2ttYXJrc1skMV0mJiQzKXsNCit2YXIgJDQ9JDIuX19zZWxlY3Rpb25ib29rbWFya3NbJDFdO3ZhciAkNT0kMy5kb2N1bWVudC5ib2R5LmNyZWF0ZVRleHRSYW5nZSgpOyQ1Lm1vdmVUb0Jvb2ttYXJrKCQ0KTskNS5zZWxlY3QoKQ0KK319fTtsei5lbWJlZC5tb3VzZXdoZWVsPXtfX21vdXNld2hlZWxFdmVudDpmdW5jdGlvbigkMSl7DQoraWYoISQxKXsNCiskMT13aW5kb3cuZXZlbnQNCit9O3ZhciAkMj0wO2lmKCQxLndoZWVsRGVsdGEpew0KKyQyPSQxLndoZWVsRGVsdGEvMTIwO2lmKGx6LmVtYmVkLmJyb3dzZXIuaXNPcGVyYSl7DQorJDI9LSQyDQorfX1lbHNlew0KK2lmKCQxLmRldGFpbCl7DQorJDI9LSQxLmRldGFpbC8zDQorfX07aWYoJDEucHJldmVudERlZmF1bHQpew0KKyQxLnByZXZlbnREZWZhdWx0KCkNCit9OyQxLnJldHVyblZhbHVlPWZhbHNlO3ZhciAkMz1sei5lbWJlZC5tb3VzZXdoZWVsLl9fY2FsbGJhY2tzLmxlbmd0aDtpZigkMiE9bnVsbCYmJDM+MCl7DQorZm9yKHZhciAkND0wOyQ0PCQzOyQ0Kz0yKXsNCit2YXIgJDU9bHouZW1iZWQubW91c2V3aGVlbC5fX2NhbGxiYWNrc1skNF07dmFyICQ2PWx6LmVtYmVkLm1vdXNld2hlZWwuX19jYWxsYmFja3NbJDQrMV07aWYoJDUmJiQ1WyQ2XSl7DQorJDVbJDZdKCQyKQ0KK319fX0sX19jYWxsYmFja3M6W10sc2V0Q2FsbGJhY2s6ZnVuY3Rpb24oJDEsJDIpew0KK3ZhciAkMz1seiYmbHouZW1iZWQmJmx6LmVtYmVkLm9wdGlvbnMmJmx6LmVtYmVkLm9wdGlvbnMuY2FuY2Vsa2V5Ym9hcmRjb250cm9sIT10cnVlfHx0cnVlO2lmKGx6LmVtYmVkLm1vdXNld2hlZWwuX19jYWxsYmFja3MubGVuZ3RoPT0wJiYkMyl7DQoraWYod2luZG93LmFkZEV2ZW50TGlzdGVuZXIpew0KK2x6LmVtYmVkLmF0dGFjaEV2ZW50SGFuZGxlcih3aW5kb3csIkRPTU1vdXNlU2Nyb2xsIixsei5lbWJlZC5tb3VzZXdoZWVsLCJfX21vdXNld2hlZWxFdmVudCIpDQorfTtsei5lbWJlZC5hdHRhY2hFdmVudEhhbmRsZXIoZG9jdW1lbnQsIm1vdXNld2hlZWwiLGx6LmVtYmVkLm1vdXNld2hlZWwsIl9fbW91c2V3aGVlbEV2ZW50IikNCit9O2x6LmVtYmVkLm1vdXNld2hlZWwuX19jYWxsYmFja3MucHVzaCgkMSwkMikNCit9fTtsei5lbWJlZC5oaXN0b3J5PXthY3RpdmU6bnVsbCxfY3VycmVudHN0YXRlOm51bGwsX2FwcHM6W10sX2ludGVydmFsSUQ6bnVsbCxfcmVnaXN0ZXJlZGFwcHM6e30saW50ZXJ2YWx0aW1lOjIwMCxpbml0OmZ1bmN0aW9uKCl7DQordmFyICQxPWx6LmVtYmVkLmhpc3Rvcnk7aWYoJDEuYWN0aXZlfHwkMS5hY3RpdmU9PWZhbHNlKXsNCityZXR1cm4NCit9OyQxLmFjdGl2ZT10cnVlOyQxLl90aXRsZT10b3AuZG9jdW1lbnQudGl0bGU7dmFyICQyPSQxLmdldCgpO2lmKGx6LmVtYmVkLmJyb3dzZXIuaXNTYWZhcmkpew0KKyQxLl9oaXN0b3J5bGVuZ3RoPWhpc3RvcnkubGVuZ3RoOyQxLl9oaXN0b3J5PVtdO2Zvcih2YXIgJDM9MTskMzwkMS5faGlzdG9yeWxlbmd0aDskMysrKXsNCiskMS5faGlzdG9yeS5wdXNoKCIiKQ0KK307JDEuX2hpc3RvcnkucHVzaCgkMik7dmFyICQ0PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImZvcm0iKTskNC5tZXRob2Q9ImdldCI7ZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCgkNCk7JDEuX2Zvcm09JDQ7aWYoIXRvcC5kb2N1bWVudC5sb2NhdGlvbi5semFkZHIpew0KK3RvcC5kb2N1bWVudC5sb2NhdGlvbi5semFkZHI9e319O2lmKHRvcC5kb2N1bWVudC5sb2NhdGlvbi5semFkZHIuaGlzdG9yeSl7DQorJDEuX2hpc3Rvcnk9dG9wLmRvY3VtZW50LmxvY2F0aW9uLmx6YWRkci5oaXN0b3J5LnNwbGl0KCIsIikNCit9O2lmKCQyIT0iIil7DQorJDEuc2V0KCQyKQ0KK319ZWxzZXsNCitpZihsei5lbWJlZC5icm93c2VyLmlzSUUpew0KK3ZhciAkMj10b3AubG9jYXRpb24uaGFzaDtpZigkMil7DQorJDI9JDIuc3Vic3RyaW5nKDEpDQorfTt2YXIgJDM9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaWZyYW1lIik7bHouZW1iZWQuX19zZXRBdHRyKCQzLCJpZCIsImx6SGlzdG9yeSIpO2x6LmVtYmVkLl9fc2V0QXR0cigkMywiZnJhbWVib3JkZXIiLCJubyIpO2x6LmVtYmVkLl9fc2V0QXR0cigkMywic2Nyb2xsaW5nIiwibm8iKTtsei5lbWJlZC5fX3NldEF0dHIoJDMsIndpZHRoIiwiMCIpO2x6LmVtYmVkLl9fc2V0QXR0cigkMywiaGVpZ2h0IiwiMCIpO2x6LmVtYmVkLl9fc2V0QXR0cigkMywic3JjIiwnamF2YXNjcmlwdDoiIicpO2RvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoJDMpOyQzPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsekhpc3RvcnkiKTskMS5faWZyYW1lPSQzOyQzLnN0eWxlLmRpc3BsYXk9Im5vbmUiOyQzLnN0eWxlLnBvc2l0aW9uPSJhYnNvbHV0ZSI7JDMuc3R5bGUubGVmdD0iLTk5OXB4Ijt2YXIgJDU9JDMuY29udGVudERvY3VtZW50fHwkMy5jb250ZW50V2luZG93LmRvY3VtZW50OyQ1Lm9wZW4oKTskNS5jbG9zZSgpO2lmKCQyIT0iIil7DQorJDUubG9jYXRpb24uaGFzaD0iIyIrJDI7JDEuX3BhcnNlKCQyKQ0KK319ZWxzZXsNCitpZigkMiE9IiIpew0KKyQxLl9wYXJzZSgkMik7JDEuX2N1cnJlbnRzdGF0ZT0kMg0KK319fTtpZigkMS5faW50ZXJ2YWxJRCE9bnVsbCl7DQorY2xlYXJJbnRlcnZhbCgkMS5faW50ZXJ2YWxJRCkNCit9O2lmKCQxLmludGVydmFsdGltZT4wKXsNCiskMS5faW50ZXJ2YWxJRD1zZXRJbnRlcnZhbCgibHouZW1iZWQuaGlzdG9yeS5fY2hlY2tsb2NhdGlvbmhhc2goKSIsJDEuaW50ZXJ2YWx0aW1lKQ0KK319LGxpc3RlbjpmdW5jdGlvbigkMSl7DQoraWYodHlwZW9mICQxPT0ic3RyaW5nIil7DQorJDE9bHouZW1iZWQuYXBwbGljYXRpb25zWyQxXTtpZighJDF8fCEkMS5ydW50aW1lKXsNCityZXR1cm4NCit9fTtpZighJDEpew0KK3JldHVybg0KK307dmFyICQyPWx6LmVtYmVkLmhpc3Rvcnk7aWYoJDIuX3JlZ2lzdGVyZWRhcHBzWyQxLl9pZF0pew0KK3JldHVybg0KK307JDIuX3JlZ2lzdGVyZWRhcHBzWyQxLmlkXT10cnVlOyQyLl9hcHBzLnB1c2goJDEpOyQyLmluaXQoKQ0KK30sX2NoZWNrbG9jYXRpb25oYXNoOmZ1bmN0aW9uKCl7DQoraWYobHouZW1iZWQuZG9qbyYmbHouZW1iZWQuZG9qby5pbmZvJiZsei5lbWJlZC5kb2pvLmluZm8uaW5zdGFsbGluZyl7DQorcmV0dXJuDQorfTtpZihsei5lbWJlZC5icm93c2VyLmlzU2FmYXJpKXsNCit2YXIgJDE9dGhpcy5faGlzdG9yeVt0aGlzLl9oaXN0b3J5bGVuZ3RoLTFdO2lmKCQxPT0iInx8JDE9PSIjIil7DQorJDE9IiMwIg0KK307aWYoIXRoaXMuX3NraXAmJnRoaXMuX2hpc3RvcnlsZW5ndGghPWhpc3RvcnkubGVuZ3RoKXsNCit0aGlzLl9oaXN0b3J5bGVuZ3RoPWhpc3RvcnkubGVuZ3RoO2lmKHR5cGVvZiAkMSE9InVuZGVmaW5lZCIpew0KKyQxPSQxLnN1YnN0cmluZygxKTt0aGlzLl9jdXJyZW50c3RhdGU9JDE7dGhpcy5fcGFyc2UoJDEpDQorfX1lbHNlew0KK3RoaXMuX3BhcnNlKCQxLnN1YnN0cmluZygxKSkNCit9fWVsc2V7DQordmFyICQxPWx6LmVtYmVkLmhpc3RvcnkuZ2V0KCk7aWYoJDE9PSIiKXsNCiskMT0iMCINCit9O2lmKGx6LmVtYmVkLmJyb3dzZXIuaXNJRSl7DQoraWYoJDEhPXRoaXMuX2N1cnJlbnRzdGF0ZSl7DQordG9wLmxvY2F0aW9uLmhhc2g9JDE9PSIwIj8iIjoiIyIrJDE7dGhpcy5fY3VycmVudHN0YXRlPSQxO3RoaXMuX3BhcnNlKCQxKQ0KK307aWYodG9wLmRvY3VtZW50LnRpdGxlIT10aGlzLl90aXRsZSl7DQordG9wLmRvY3VtZW50LnRpdGxlPXRoaXMuX3RpdGxlDQorfX1lbHNlew0KK3RoaXMuX2N1cnJlbnRzdGF0ZT0kMTt0aGlzLl9wYXJzZSgkMSkNCit9fX0sc2V0OmZ1bmN0aW9uKCQxKXsNCitpZihsei5lbWJlZC5oaXN0b3J5LmFjdGl2ZT09ZmFsc2Upew0KK3JldHVybg0KK307aWYoJDE9PW51bGwpew0KKyQxPSIiDQorfTtpZihsei5lbWJlZC5oaXN0b3J5Ll9jdXJyZW50c3RhdGU9PSQxKXsNCityZXR1cm4NCit9O2x6LmVtYmVkLmhpc3RvcnkuX2N1cnJlbnRzdGF0ZT0kMTt2YXIgJDI9IiMiKyQxO2lmKGx6LmVtYmVkLmJyb3dzZXIuaXNJRSl7DQordG9wLmxvY2F0aW9uLmhhc2g9JDI9PSIjMCI/IiI6JDI7dmFyICQzPWx6LmVtYmVkLmhpc3RvcnkuX2lmcmFtZS5jb250ZW50RG9jdW1lbnR8fGx6LmVtYmVkLmhpc3RvcnkuX2lmcmFtZS5jb250ZW50V2luZG93LmRvY3VtZW50OyQzLm9wZW4oKTskMy5jbG9zZSgpOyQzLmxvY2F0aW9uLmhhc2g9JDI7bHouZW1iZWQuaGlzdG9yeS5fcGFyc2UoJDErIiIpDQorfWVsc2V7DQoraWYobHouZW1iZWQuYnJvd3Nlci5pc1NhZmFyaSl7DQorbHouZW1iZWQuaGlzdG9yeS5faGlzdG9yeVtoaXN0b3J5Lmxlbmd0aF09JDI7bHouZW1iZWQuaGlzdG9yeS5faGlzdG9yeWxlbmd0aD1oaXN0b3J5Lmxlbmd0aCsxO2lmKGx6LmVtYmVkLmJyb3dzZXIudmVyc2lvbjw0MTIpew0KK2lmKHRvcC5sb2NhdGlvbi5zZWFyY2g9PSIiKXsNCitsei5lbWJlZC5oaXN0b3J5Ll9mb3JtLmFjdGlvbj0kMjt0b3AuZG9jdW1lbnQubG9jYXRpb24ubHphZGRyLmhpc3Rvcnk9bHouZW1iZWQuaGlzdG9yeS5faGlzdG9yeS50b1N0cmluZygpO2x6LmVtYmVkLmhpc3RvcnkuX3NraXA9dHJ1ZTtsei5lbWJlZC5oaXN0b3J5Ll9mb3JtLnN1Ym1pdCgpO2x6LmVtYmVkLmhpc3RvcnkuX3NraXA9ZmFsc2UNCit9fWVsc2V7DQordmFyICQ0PWRvY3VtZW50LmNyZWF0ZUV2ZW50KCJNb3VzZUV2ZW50cyIpOyQ0LmluaXRFdmVudCgiY2xpY2siLHRydWUsdHJ1ZSk7dmFyICQ1PWRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKTskNS5ocmVmPSQyOyQ1LmRpc3BhdGNoRXZlbnQoJDQpDQorfX1lbHNlew0KK3RvcC5sb2NhdGlvbi5oYXNoPSQyO2x6LmVtYmVkLmhpc3RvcnkuX3BhcnNlKCQxKyIiKQ0KK319O3JldHVybiB0cnVlDQorfSxnZXQ6ZnVuY3Rpb24oKXsNCit2YXIgJDE9IiI7aWYobHouZW1iZWQuYnJvd3Nlci5pc0lFKXsNCitpZihsei5lbWJlZC5oaXN0b3J5Ll9pZnJhbWUpew0KK3ZhciAkMj1sei5lbWJlZC5oaXN0b3J5Ll9pZnJhbWUuY29udGVudERvY3VtZW50fHxsei5lbWJlZC5oaXN0b3J5Ll9pZnJhbWUuY29udGVudFdpbmRvdy5kb2N1bWVudDskMT0kMi5sb2NhdGlvbi5oYXNoDQorfX1lbHNlew0KKyQxPXRvcC5sb2NhdGlvbi5ocmVmDQorfTt2YXIgJDM9JDEuaW5kZXhPZigiIyIpO2lmKCQzIT0tMSl7DQorcmV0dXJuICQxLnN1YnN0cmluZygkMysxKQ0KK307cmV0dXJuICIiDQorfSxfcGFyc2U6ZnVuY3Rpb24oJDEpew0KK3ZhciAkMj1sei5lbWJlZC5oaXN0b3J5O2lmKCQxLmxlbmd0aD09MCl7DQorcmV0dXJuDQorfTtmb3IodmFyICQzPTAsJDQ9bHouZW1iZWQuaGlzdG9yeS5fYXBwcy5sZW5ndGg7JDM8JDQ7JDMrKyl7DQordmFyICQ1PWx6LmVtYmVkLmhpc3RvcnkuX2FwcHNbJDNdO2lmKCEkNS5sb2FkZWR8fCQ1Ll9sYXN0aGFzaD09JDEpew0KK2NvbnRpbnVlDQorfTskNS5fbGFzdGhhc2g9JDE7aWYoJDEuaW5kZXhPZigiX2x6IikhPS0xKXsNCiskMT0kMS5zdWJzdHJpbmcoMyk7dmFyICQ2PSQxLnNwbGl0KCIsIik7Zm9yKHZhciAkNz0wOyQ3PCQ2Lmxlbmd0aDskNysrKXsNCit2YXIgJDg9JDZbJDddO3ZhciAkOT0kOC5pbmRleE9mKCI9Iik7dmFyICQxMD11bmVzY2FwZSgkOC5zdWJzdHJpbmcoMCwkOSkpO3ZhciAkMTE9dW5lc2NhcGUoJDguc3Vic3RyaW5nKCQ5KzEpKTtsei5lbWJlZC5zZXRDYW52YXNBdHRyaWJ1dGUoJDEwLCQxMSk7aWYod2luZG93WyJjYW52YXMiXSl7DQorY2FudmFzLnNldEF0dHJpYnV0ZSgkMTAsJDExKQ0KK319fWVsc2V7DQoraWYoJDUucnVudGltZT09InN3ZiIpew0KKyQyLl9fc2V0Rmxhc2goJDEsJDUuX2lkKQ0KK31lbHNlew0KK2lmKHdpbmRvd1sibHoiXSYmbHpbIkhpc3RvcnkiXSYmbHouSGlzdG9yeVsiaXNSZWFkeSJdJiZsei5IaXN0b3J5WyJyZWNlaXZlSGlzdG9yeSJdKXsNCitsei5IaXN0b3J5LnJlY2VpdmVIaXN0b3J5KCQxKQ0KK319fX19LF9zdG9yZTpmdW5jdGlvbigkMSwkMil7DQoraWYoJDEgaW5zdGFuY2VvZiBPYmplY3Qpew0KK3ZhciAkMz0iIjtmb3IodmFyICQ0IGluICQxKXsNCitpZigkMyE9IiIpew0KKyQzKz0iLCINCit9OyQzKz1lc2NhcGUoJDQpKyI9Iitlc2NhcGUoJDFbJDRdKQ0KK319ZWxzZXsNCit2YXIgJDM9ZXNjYXBlKCQxKSsiPSIrZXNjYXBlKCQyKQ0KK307dGhpcy5zZXQoIl9seiIrJDMpDQorfSxfX3NldEZsYXNoOmZ1bmN0aW9uKCQxLCQyKXsNCit2YXIgJDM9bHouZW1iZWRbJDJdO2lmKCQzJiYkMy5sb2FkZWQmJiQzLnJ1bnRpbWU9PSJzd2YiKXsNCit2YXIgJDQ9JDMuX2dldFNXRkRpdigpO2lmKCQ0KXsNCit2YXIgJDU9JDMuY2FsbE1ldGhvZCgibHouSGlzdG9yeS5yZWNlaXZlSGlzdG9yeSgiKyQxKyIpIik7JDMuX2xhc3RoYXNoPSQxDQorfX19fTtpZihsei5lbWJlZC5icm93c2VyLmlzRmlyZWZveCl7DQord2luZG93Lm9udW5sb2FkPWZ1bmN0aW9uKCl7DQorDQorfX07bHouZW1iZWQucmVnZXg9e2NhY2hlOnt9LGNyZWF0ZTpmdW5jdGlvbigkMSwkMiwkMyl7DQordHJ5ew0KK3ZhciAkND1sei5lbWJlZC5yZWdleDskNC5jYWNoZVskMV09bmV3IFJlZ0V4cCgkNC51bm1hc2soJDIpLCQ0LnVubWFzaygkMykpO3JldHVybiB0cnVlDQorfQ0KK2NhdGNoKGUpew0KK3JldHVybiBlLm5hbWUrIjogIitlLm1lc3NhZ2UNCit9fSx0ZXN0OmZ1bmN0aW9uKCQxLCQyLCQzKXsNCit2YXIgJDQ9bHouZW1iZWQucmVnZXg7dmFyICQ1PSQ0LmNhY2hlWyQxXTskNS5sYXN0SW5kZXg9JDM7cmV0dXJuIFskNS50ZXN0KCQ0LnVubWFzaygkMikpLCQ1Lmxhc3RJbmRleF0NCit9LGV4ZWM6ZnVuY3Rpb24oJDEsJDIsJDMpew0KK3ZhciAkND1sei5lbWJlZC5yZWdleDt2YXIgJDU9JDQuY2FjaGVbJDFdOyQ1Lmxhc3RJbmRleD0kMzt2YXIgJDY9JDUuZXhlYygkNC51bm1hc2soJDIpKTtpZigkNil7DQorKCQ2PSQ0Lm1hc2tBcnIoJDYpKS5wdXNoKCQ2LmluZGV4LCQ1Lmxhc3RJbmRleCk7cmV0dXJuICQ2DQorfWVsc2V7DQorcmV0dXJuIG51bGwNCit9fSxtYXRjaDpmdW5jdGlvbigkMSwkMil7DQordmFyICQzPWx6LmVtYmVkLnJlZ2V4O3ZhciAkND0kMy51bm1hc2soJDIpLm1hdGNoKCQzLmNhY2hlWyQxXSk7cmV0dXJuICQ0PyQzLm1hc2tBcnIoJDQpOm51bGwNCit9LHJlcGxhY2U6ZnVuY3Rpb24oJDEsJDIsJDMpew0KK3ZhciAkND1sei5lbWJlZC5yZWdleDtyZXR1cm4gJDQubWFzaygkNC51bm1hc2soJDIpLnJlcGxhY2UoJDQuY2FjaGVbJDFdLCQ0LnVubWFzaygkMykpKQ0KK30sc2VhcmNoOmZ1bmN0aW9uKCQxLCQyKXsNCit2YXIgJDM9bHouZW1iZWQucmVnZXg7cmV0dXJuICQzLnVubWFzaygkMikuc2VhcmNoKCQzLmNhY2hlWyQxXSkNCit9LHNwbGl0OmZ1bmN0aW9uKCQxLCQyLCQzKXsNCit2YXIgJDQ9bHouZW1iZWQucmVnZXg7cmV0dXJuICQ0Lm1hc2tBcnIoJDQudW5tYXNrKCQyKS5zcGxpdCgkNC5jYWNoZVskMV0sJDMpKQ0KK30scmVtb3ZlOmZ1bmN0aW9uKCQxKXsNCitkZWxldGUgbHouZW1iZWQucmVnZXguY2FjaGVbJDFdDQorfSxtYXNrOmZ1bmN0aW9uKCQxKXsNCisNCit2YXIgcmUgPSAvXlxzKiQvOw0KK3ZhciByZTIgPSAvXHMvZzsNCis7cmV0dXJuKCAkMT09bnVsbHx8IXJlLnRlc3QoJDEpPyQxOiJfXyNsem51bGwiKyQxLnJlcGxhY2UocmUyLGZ1bmN0aW9uKCQxKXsNCitzd2l0Y2goJDEpew0KK2Nhc2UgIiAiOg0KK3JldHVybiAidyI7DQorY2FzZSAiXGYiOg0KK3JldHVybiAiZiI7DQorY2FzZSAiXG4iOg0KK3JldHVybiAibiI7DQorY2FzZSAiXHIiOg0KK3JldHVybiAiciI7DQorY2FzZSAiXHQiOg0KK3JldHVybiAidCI7DQorY2FzZSAiXHhBMCI6DQorcmV0dXJuICJzIjsNCitjYXNlICJcdTIwMjgiOg0KK3JldHVybiAibCI7DQorY2FzZSAiXHUyMDI5IjoNCityZXR1cm4gInAiOw0KKw0KK319KSkNCit9LHVubWFzazpmdW5jdGlvbigkMSl7DQorcmV0dXJuICQxPT0iX18jbHpudWxsIj8iIjokMQ0KK30sbWFza0FycjpmdW5jdGlvbigkMSl7DQordmFyICQyPWx6LmVtYmVkLnJlZ2V4O2Zvcih2YXIgJDM9MDskMzwkMS5sZW5ndGg7KyskMyl7DQorJDFbJDNdPSQyLm1hc2soJDFbJDNdKQ0KK307cmV0dXJuICQxDQorfX07ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9vcGVubWVldGluZ3MvZmF2aWNvbi5pY28gYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9mYXZpY29uLmljbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMGMyMmFkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvZmF2aWNvbi5pY28KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9vcGVubWVldGluZ3MvaW1hZ2VzL2FqYXgtbG9hZGVyLmdpZiBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2ltYWdlcy9hamF4LWxvYWRlci5naWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjliNjUyZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2ltYWdlcy9hamF4LWxvYWRlci5naWYKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9vcGVubWVldGluZ3MvanMvZnVsbGNhbGVuZGFyLm1pbi5qcyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2pzL2Z1bGxjYWxlbmRhci5taW4uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGE2YzdjMAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2pzL2Z1bGxjYWxlbmRhci5taW4uanMKQEAgLTAsMCArMSwxMTQgQEAKKy8qCisKKyBGdWxsQ2FsZW5kYXIgdjEuNS40CisgaHR0cDovL2Fyc2hhdy5jb20vZnVsbGNhbGVuZGFyLworCisgVXNlIGZ1bGxjYWxlbmRhci5jc3MgZm9yIGJhc2ljIHN0eWxpbmcuCisgRm9yIGV2ZW50IGRyYWcgJiBkcm9wLCByZXF1aXJlcyBqUXVlcnkgVUkgZHJhZ2dhYmxlLgorIEZvciBldmVudCByZXNpemluZywgcmVxdWlyZXMgalF1ZXJ5IFVJIHJlc2l6YWJsZS4KKworIENvcHlyaWdodCAoYykgMjAxMSBBZGFtIFNoYXcKKyBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgYW5kIEdQTCBsaWNlbnNlcywgbG9jYXRlZCBpbgorIE1JVC1MSUNFTlNFLnR4dCBhbmQgR1BMLUxJQ0VOU0UudHh0IHJlc3BlY3RpdmVseS4KKworIERhdGU6IFR1ZSBTZXAgNCAyMzozODozMyAyMDEyIC0wNzAwCisKKyovCisoZnVuY3Rpb24obSxtYSl7ZnVuY3Rpb24gd2IoYSl7bS5leHRlbmQodHJ1ZSxZYSxhKX1mdW5jdGlvbiBZYihhLGIsZSl7ZnVuY3Rpb24gZChrKXtpZihFKXt1KCk7cSgpO25hKCk7UyhrKX1lbHNlIGYoKX1mdW5jdGlvbiBmKCl7Qj1iLnRoZW1lPyJ1aSI6ImZjIjthLmFkZENsYXNzKCJmYyIpO2IuaXNSVEwmJmEuYWRkQ2xhc3MoImZjLXJ0bCIpO2IudGhlbWUmJmEuYWRkQ2xhc3MoInVpLXdpZGdldCIpO0U9bSgiPGRpdiBjbGFzcz0nZmMtY29udGVudCcgc3R5bGU9J3Bvc2l0aW9uOnJlbGF0aXZlJy8+IikucHJlcGVuZFRvKGEpO0M9bmV3IFpiKFgsYik7KFA9Qy5yZW5kZXIoKSkmJmEucHJlcGVuZChQKTt5KGIuZGVmYXVsdFZpZXcpO20od2luZG93KS5yZXNpemUob2EpO3QoKXx8ZygpfWZ1bmN0aW9uIGcoKXtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7IW4uc3RhcnQmJnQoKSYmUygpfSwwKX1mdW5jdGlvbiBsKCl7bSh3aW5kb3cpLnVuYmluZCgicmVzaXplIixvYSk7Qy5kZXN0cm95KCk7CitFLnJlbW92ZSgpO2EucmVtb3ZlQ2xhc3MoImZjIGZjLXJ0bCB1aS13aWRnZXQiKX1mdW5jdGlvbiBqKCl7cmV0dXJuIGkub2Zmc2V0V2lkdGghPT0wfWZ1bmN0aW9uIHQoKXtyZXR1cm4gbSgiYm9keSIpWzBdLm9mZnNldFdpZHRoIT09MH1mdW5jdGlvbiB5KGspe2lmKCFufHxrIT1uLm5hbWUpe0YrKztwYSgpO3ZhciBEPW4sWjtpZihEKXsoRC5iZWZvcmVIaWRlfHx4YikoKTtaYShFLEUuaGVpZ2h0KCkpO0QuZWxlbWVudC5oaWRlKCl9ZWxzZSBaYShFLDEpO0UuY3NzKCJvdmVyZmxvdyIsImhpZGRlbiIpO2lmKG49WVtrXSluLmVsZW1lbnQuc2hvdygpO2Vsc2Ugbj1ZW2tdPW5ldyBKYVtrXShaPXM9bSgiPGRpdiBjbGFzcz0nZmMtdmlldyBmYy12aWV3LSIraysiJyBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGUnLz4iKS5hcHBlbmRUbyhFKSxYKTtEJiZDLmRlYWN0aXZhdGVCdXR0b24oRC5uYW1lKTtDLmFjdGl2YXRlQnV0dG9uKGspO1MoKTtFLmNzcygib3ZlcmZsb3ciLCIiKTtEJiYKK1phKEUsMSk7Wnx8KG4uYWZ0ZXJTaG93fHx4YikoKTtGLS19fWZ1bmN0aW9uIFMoayl7aWYoaigpKXtGKys7cGEoKTtvPT09bWEmJnUoKTt2YXIgRD1mYWxzZTtpZighbi5zdGFydHx8a3x8cjxuLnN0YXJ0fHxyPj1uLmVuZCl7bi5yZW5kZXIocixrfHwwKTtmYSh0cnVlKTtEPXRydWV9ZWxzZSBpZihuLnNpemVEaXJ0eSl7bi5jbGVhckV2ZW50cygpO2ZhKCk7RD10cnVlfWVsc2UgaWYobi5ldmVudHNEaXJ0eSl7bi5jbGVhckV2ZW50cygpO0Q9dHJ1ZX1uLnNpemVEaXJ0eT1mYWxzZTtuLmV2ZW50c0RpcnR5PWZhbHNlO2dhKEQpO1c9YS5vdXRlcldpZHRoKCk7Qy51cGRhdGVUaXRsZShuLnRpdGxlKTtrPW5ldyBEYXRlO2s+PW4uc3RhcnQmJms8bi5lbmQ/Qy5kaXNhYmxlQnV0dG9uKCJ0b2RheSIpOkMuZW5hYmxlQnV0dG9uKCJ0b2RheSIpO0YtLTtuLnRyaWdnZXIoInZpZXdEaXNwbGF5IixpKX19ZnVuY3Rpb24gUSgpe3EoKTtpZihqKCkpe3UoKTtmYSgpO3BhKCk7bi5jbGVhckV2ZW50cygpOworbi5yZW5kZXJFdmVudHMoSik7bi5zaXplRGlydHk9ZmFsc2V9fWZ1bmN0aW9uIHEoKXttLmVhY2goWSxmdW5jdGlvbihrLEQpe0Quc2l6ZURpcnR5PXRydWV9KX1mdW5jdGlvbiB1KCl7bz1iLmNvbnRlbnRIZWlnaHQ/Yi5jb250ZW50SGVpZ2h0OmIuaGVpZ2h0P2IuaGVpZ2h0LShQP1AuaGVpZ2h0KCk6MCktU2EoRSk6TWF0aC5yb3VuZChFLndpZHRoKCkvTWF0aC5tYXgoYi5hc3BlY3RSYXRpbywwLjUpKX1mdW5jdGlvbiBmYShrKXtGKys7bi5zZXRIZWlnaHQobyxrKTtpZihzKXtzLmNzcygicG9zaXRpb24iLCJyZWxhdGl2ZSIpO3M9bnVsbH1uLnNldFdpZHRoKEUud2lkdGgoKSxrKTtGLS19ZnVuY3Rpb24gb2EoKXtpZighRilpZihuLnN0YXJ0KXt2YXIgaz0rK3Y7c2V0VGltZW91dChmdW5jdGlvbigpe2lmKGs9PXYmJiFGJiZqKCkpaWYoVyE9KFc9YS5vdXRlcldpZHRoKCkpKXtGKys7USgpO24udHJpZ2dlcigid2luZG93UmVzaXplIixpKTtGLS19fSwyMDApfWVsc2UgZygpfWZ1bmN0aW9uIGdhKGspe2lmKCFiLmxhenlGZXRjaGluZ3x8Cit5YShuLnZpc1N0YXJ0LG4udmlzRW5kKSlyYSgpO2Vsc2UgayYmZGEoKX1mdW5jdGlvbiByYSgpe0sobi52aXNTdGFydCxuLnZpc0VuZCl9ZnVuY3Rpb24gc2Eoayl7Sj1rO2RhKCl9ZnVuY3Rpb24gaGEoayl7ZGEoayl9ZnVuY3Rpb24gZGEoayl7bmEoKTtpZihqKCkpe24uY2xlYXJFdmVudHMoKTtuLnJlbmRlckV2ZW50cyhKLGspO24uZXZlbnRzRGlydHk9ZmFsc2V9fWZ1bmN0aW9uIG5hKCl7bS5lYWNoKFksZnVuY3Rpb24oayxEKXtELmV2ZW50c0RpcnR5PXRydWV9KX1mdW5jdGlvbiB1YShrLEQsWil7bi5zZWxlY3QoayxELFo9PT1tYT90cnVlOlopfWZ1bmN0aW9uIHBhKCl7biYmbi51bnNlbGVjdCgpfWZ1bmN0aW9uIFUoKXtTKC0xKX1mdW5jdGlvbiBjYSgpe1MoMSl9ZnVuY3Rpb24ga2EoKXtnYihyLC0xKTtTKCl9ZnVuY3Rpb24gcWEoKXtnYihyLDEpO1MoKX1mdW5jdGlvbiBHKCl7cj1uZXcgRGF0ZTtTKCl9ZnVuY3Rpb24gcChrLEQsWil7aWYoayBpbnN0YW5jZW9mIERhdGUpcj0KK04oayk7ZWxzZSB5YihyLGssRCxaKTtTKCl9ZnVuY3Rpb24gTChrLEQsWil7ayE9PW1hJiZnYihyLGspO0QhPT1tYSYmaGIocixEKTtaIT09bWEmJmJhKHIsWik7UygpfWZ1bmN0aW9uIGMoKXtyZXR1cm4gTihyKX1mdW5jdGlvbiB6KCl7cmV0dXJuIG59ZnVuY3Rpb24gSChrLEQpe2lmKEQ9PT1tYSlyZXR1cm4gYltrXTtpZihrPT0iaGVpZ2h0Inx8az09ImNvbnRlbnRIZWlnaHQifHxrPT0iYXNwZWN0UmF0aW8iKXtiW2tdPUQ7USgpfX1mdW5jdGlvbiBUKGssRCl7aWYoYltrXSlyZXR1cm4gYltrXS5hcHBseShEfHxpLEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKSl9dmFyIFg9dGhpcztYLm9wdGlvbnM9YjtYLnJlbmRlcj1kO1guZGVzdHJveT1sO1gucmVmZXRjaEV2ZW50cz1yYTtYLnJlcG9ydEV2ZW50cz1zYTtYLnJlcG9ydEV2ZW50Q2hhbmdlPWhhO1gucmVyZW5kZXJFdmVudHM9ZGE7WC5jaGFuZ2VWaWV3PXk7WC5zZWxlY3Q9dWE7WC51bnNlbGVjdD1wYTsKK1gucHJldj1VO1gubmV4dD1jYTtYLnByZXZZZWFyPWthO1gubmV4dFllYXI9cWE7WC50b2RheT1HO1guZ290b0RhdGU9cDtYLmluY3JlbWVudERhdGU9TDtYLmZvcm1hdERhdGU9ZnVuY3Rpb24oayxEKXtyZXR1cm4gT2EoayxELGIpfTtYLmZvcm1hdERhdGVzPWZ1bmN0aW9uKGssRCxaKXtyZXR1cm4gaWIoayxELFosYil9O1guZ2V0RGF0ZT1jO1guZ2V0Vmlldz16O1gub3B0aW9uPUg7WC50cmlnZ2VyPVQ7JGIuY2FsbChYLGIsZSk7dmFyIHlhPVguaXNGZXRjaE5lZWRlZCxLPVguZmV0Y2hFdmVudHMsaT1hWzBdLEMsUCxFLEIsbixZPXt9LFcsbyxzLHY9MCxGPTAscj1uZXcgRGF0ZSxKPVtdLE07eWIocixiLnllYXIsYi5tb250aCxiLmRhdGUpO2IuZHJvcHBhYmxlJiZtKGRvY3VtZW50KS5iaW5kKCJkcmFnc3RhcnQiLGZ1bmN0aW9uKGssRCl7dmFyIFo9ay50YXJnZXQsamE9bShaKTtpZighamEucGFyZW50cygiLmZjIikubGVuZ3RoKXt2YXIgaWE9Yi5kcm9wQWNjZXB0O2lmKG0uaXNGdW5jdGlvbihpYSk/CitpYS5jYWxsKFosamEpOmphLmlzKGlhKSl7TT1aO24uZHJhZ1N0YXJ0KE0sayxEKX19fSkuYmluZCgiZHJhZ3N0b3AiLGZ1bmN0aW9uKGssRCl7aWYoTSl7bi5kcmFnU3RvcChNLGssRCk7TT1udWxsfX0pfWZ1bmN0aW9uIFpiKGEsYil7ZnVuY3Rpb24gZSgpe3E9Yi50aGVtZT8idWkiOiJmYyI7aWYoYi5oZWFkZXIpcmV0dXJuIFE9bSgiPHRhYmxlIGNsYXNzPSdmYy1oZWFkZXInIHN0eWxlPSd3aWR0aDoxMDAlJy8+IikuYXBwZW5kKG0oIjx0ci8+IikuYXBwZW5kKGYoImxlZnQiKSkuYXBwZW5kKGYoImNlbnRlciIpKS5hcHBlbmQoZigicmlnaHQiKSkpfWZ1bmN0aW9uIGQoKXtRLnJlbW92ZSgpfWZ1bmN0aW9uIGYodSl7dmFyIGZhPW0oIjx0ZCBjbGFzcz0nZmMtaGVhZGVyLSIrdSsiJy8+Iik7KHU9Yi5oZWFkZXJbdV0pJiZtLmVhY2godS5zcGxpdCgiICIpLGZ1bmN0aW9uKG9hKXtvYT4wJiZmYS5hcHBlbmQoIjxzcGFuIGNsYXNzPSdmYy1oZWFkZXItc3BhY2UnLz4iKTt2YXIgZ2E7CittLmVhY2godGhpcy5zcGxpdCgiLCIpLGZ1bmN0aW9uKHJhLHNhKXtpZihzYT09InRpdGxlIil7ZmEuYXBwZW5kKCI8c3BhbiBjbGFzcz0nZmMtaGVhZGVyLXRpdGxlJz48aDI+Jm5ic3A7PC9oMj48L3NwYW4+Iik7Z2EmJmdhLmFkZENsYXNzKHErIi1jb3JuZXItcmlnaHQiKTtnYT1udWxsfWVsc2V7dmFyIGhhO2lmKGFbc2FdKWhhPWFbc2FdO2Vsc2UgaWYoSmFbc2FdKWhhPWZ1bmN0aW9uKCl7bmEucmVtb3ZlQ2xhc3MocSsiLXN0YXRlLWhvdmVyIik7YS5jaGFuZ2VWaWV3KHNhKX07aWYoaGEpe3JhPWIudGhlbWU/amIoYi5idXR0b25JY29ucyxzYSk6bnVsbDt2YXIgZGE9amIoYi5idXR0b25UZXh0LHNhKSxuYT1tKCI8c3BhbiBjbGFzcz0nZmMtYnV0dG9uIGZjLWJ1dHRvbi0iK3NhKyIgIitxKyItc3RhdGUtZGVmYXVsdCc+PHNwYW4gY2xhc3M9J2ZjLWJ1dHRvbi1pbm5lcic+PHNwYW4gY2xhc3M9J2ZjLWJ1dHRvbi1jb250ZW50Jz4iKyhyYT8iPHNwYW4gY2xhc3M9J2ZjLWljb24td3JhcCc+PHNwYW4gY2xhc3M9J3VpLWljb24gdWktaWNvbi0iKworcmErIicvPjwvc3Bhbj4iOmRhKSsiPC9zcGFuPjxzcGFuIGNsYXNzPSdmYy1idXR0b24tZWZmZWN0Jz48c3Bhbj48L3NwYW4+PC9zcGFuPjwvc3Bhbj48L3NwYW4+Iik7aWYobmEpe25hLmNsaWNrKGZ1bmN0aW9uKCl7bmEuaGFzQ2xhc3MocSsiLXN0YXRlLWRpc2FibGVkIil8fGhhKCl9KS5tb3VzZWRvd24oZnVuY3Rpb24oKXtuYS5ub3QoIi4iK3ErIi1zdGF0ZS1hY3RpdmUiKS5ub3QoIi4iK3ErIi1zdGF0ZS1kaXNhYmxlZCIpLmFkZENsYXNzKHErIi1zdGF0ZS1kb3duIil9KS5tb3VzZXVwKGZ1bmN0aW9uKCl7bmEucmVtb3ZlQ2xhc3MocSsiLXN0YXRlLWRvd24iKX0pLmhvdmVyKGZ1bmN0aW9uKCl7bmEubm90KCIuIitxKyItc3RhdGUtYWN0aXZlIikubm90KCIuIitxKyItc3RhdGUtZGlzYWJsZWQiKS5hZGRDbGFzcyhxKyItc3RhdGUtaG92ZXIiKX0sZnVuY3Rpb24oKXtuYS5yZW1vdmVDbGFzcyhxKyItc3RhdGUtaG92ZXIiKS5yZW1vdmVDbGFzcyhxKyItc3RhdGUtZG93biIpfSkuYXBwZW5kVG8oZmEpOworZ2F8fG5hLmFkZENsYXNzKHErIi1jb3JuZXItbGVmdCIpO2dhPW5hfX19fSk7Z2EmJmdhLmFkZENsYXNzKHErIi1jb3JuZXItcmlnaHQiKX0pO3JldHVybiBmYX1mdW5jdGlvbiBnKHUpe1EuZmluZCgiaDIiKS5odG1sKHUpfWZ1bmN0aW9uIGwodSl7US5maW5kKCJzcGFuLmZjLWJ1dHRvbi0iK3UpLmFkZENsYXNzKHErIi1zdGF0ZS1hY3RpdmUiKX1mdW5jdGlvbiBqKHUpe1EuZmluZCgic3Bhbi5mYy1idXR0b24tIit1KS5yZW1vdmVDbGFzcyhxKyItc3RhdGUtYWN0aXZlIil9ZnVuY3Rpb24gdCh1KXtRLmZpbmQoInNwYW4uZmMtYnV0dG9uLSIrdSkuYWRkQ2xhc3MocSsiLXN0YXRlLWRpc2FibGVkIil9ZnVuY3Rpb24geSh1KXtRLmZpbmQoInNwYW4uZmMtYnV0dG9uLSIrdSkucmVtb3ZlQ2xhc3MocSsiLXN0YXRlLWRpc2FibGVkIil9dmFyIFM9dGhpcztTLnJlbmRlcj1lO1MuZGVzdHJveT1kO1MudXBkYXRlVGl0bGU9ZztTLmFjdGl2YXRlQnV0dG9uPWw7Uy5kZWFjdGl2YXRlQnV0dG9uPQorajtTLmRpc2FibGVCdXR0b249dDtTLmVuYWJsZUJ1dHRvbj15O3ZhciBRPW0oW10pLHF9ZnVuY3Rpb24gJGIoYSxiKXtmdW5jdGlvbiBlKGMseil7cmV0dXJuIWNhfHxjPGNhfHx6PmthfWZ1bmN0aW9uIGQoYyx6KXtjYT1jO2thPXo7TD1bXTtjPSsrcWE7Rz16PVUubGVuZ3RoO2Zvcih2YXIgSD0wO0g8ejtIKyspZihVW0hdLGMpfWZ1bmN0aW9uIGYoYyx6KXtnKGMsZnVuY3Rpb24oSCl7aWYoej09cWEpe2lmKEgpe2Zvcih2YXIgVD0wO1Q8SC5sZW5ndGg7VCsrKXtIW1RdLnNvdXJjZT1jO29hKEhbVF0pfUw9TC5jb25jYXQoSCl9Ry0tO0d8fHVhKEwpfX0pfWZ1bmN0aW9uIGcoYyx6KXt2YXIgSCxUPUFhLnNvdXJjZUZldGNoZXJzLFg7Zm9yKEg9MDtIPFQubGVuZ3RoO0grKyl7WD1UW0hdKGMsY2Esa2Eseik7aWYoWD09PXRydWUpcmV0dXJuO2Vsc2UgaWYodHlwZW9mIFg9PSJvYmplY3QiKXtnKFgseik7cmV0dXJufX1pZihIPWMuZXZlbnRzKWlmKG0uaXNGdW5jdGlvbihIKSl7dSgpOworSChOKGNhKSxOKGthKSxmdW5jdGlvbihDKXt6KEMpO2ZhKCl9KX1lbHNlIG0uaXNBcnJheShIKT96KEgpOnooKTtlbHNlIGlmKGMudXJsKXt2YXIgeWE9Yy5zdWNjZXNzLEs9Yy5lcnJvcixpPWMuY29tcGxldGU7SD1tLmV4dGVuZCh7fSxjLmRhdGF8fHt9KTtUPVRhKGMuc3RhcnRQYXJhbSxhLnN0YXJ0UGFyYW0pO1g9VGEoYy5lbmRQYXJhbSxhLmVuZFBhcmFtKTtpZihUKUhbVF09TWF0aC5yb3VuZCgrY2EvMUUzKTtpZihYKUhbWF09TWF0aC5yb3VuZCgra2EvMUUzKTt1KCk7bS5hamF4KG0uZXh0ZW5kKHt9LGFjLGMse2RhdGE6SCxzdWNjZXNzOmZ1bmN0aW9uKEMpe0M9Q3x8W107dmFyIFA9JGEoeWEsdGhpcyxhcmd1bWVudHMpO2lmKG0uaXNBcnJheShQKSlDPVA7eihDKX0sZXJyb3I6ZnVuY3Rpb24oKXskYShLLHRoaXMsYXJndW1lbnRzKTt6KCl9LGNvbXBsZXRlOmZ1bmN0aW9uKCl7JGEoaSx0aGlzLGFyZ3VtZW50cyk7ZmEoKX19KSl9ZWxzZSB6KCl9ZnVuY3Rpb24gbChjKXtpZihjPQoraihjKSl7RysrO2YoYyxxYSl9fWZ1bmN0aW9uIGooYyl7aWYobS5pc0Z1bmN0aW9uKGMpfHxtLmlzQXJyYXkoYykpYz17ZXZlbnRzOmN9O2Vsc2UgaWYodHlwZW9mIGM9PSJzdHJpbmciKWM9e3VybDpjfTtpZih0eXBlb2YgYz09Im9iamVjdCIpe2dhKGMpO1UucHVzaChjKTtyZXR1cm4gY319ZnVuY3Rpb24gdChjKXtVPW0uZ3JlcChVLGZ1bmN0aW9uKHope3JldHVybiFyYSh6LGMpfSk7TD1tLmdyZXAoTCxmdW5jdGlvbih6KXtyZXR1cm4hcmEoei5zb3VyY2UsYyl9KTt1YShMKX1mdW5jdGlvbiB5KGMpe3ZhciB6LEg9TC5sZW5ndGgsVCxYPW5hKCkuZGVmYXVsdEV2ZW50RW5kLHlhPWMuc3RhcnQtYy5fc3RhcnQsSz1jLmVuZD9jLmVuZC0oYy5fZW5kfHxYKGMpKTowO2Zvcih6PTA7ejxIO3orKyl7VD1MW3pdO2lmKFQuX2lkPT1jLl9pZCYmVCE9Yyl7VC5zdGFydD1uZXcgRGF0ZSgrVC5zdGFydCt5YSk7VC5lbmQ9Yy5lbmQ/VC5lbmQ/bmV3IERhdGUoK1QuZW5kK0spOm5ldyBEYXRlKCtYKFQpKworSyk6bnVsbDtULnRpdGxlPWMudGl0bGU7VC51cmw9Yy51cmw7VC5hbGxEYXk9Yy5hbGxEYXk7VC5jbGFzc05hbWU9Yy5jbGFzc05hbWU7VC5lZGl0YWJsZT1jLmVkaXRhYmxlO1QuY29sb3I9Yy5jb2xvcjtULmJhY2tncm91ZENvbG9yPWMuYmFja2dyb3VkQ29sb3I7VC5ib3JkZXJDb2xvcj1jLmJvcmRlckNvbG9yO1QudGV4dENvbG9yPWMudGV4dENvbG9yO29hKFQpfX1vYShjKTt1YShMKX1mdW5jdGlvbiBTKGMseil7b2EoYyk7aWYoIWMuc291cmNlKXtpZih6KXtwYS5ldmVudHMucHVzaChjKTtjLnNvdXJjZT1wYX1MLnB1c2goYyl9dWEoTCl9ZnVuY3Rpb24gUShjKXtpZihjKXtpZighbS5pc0Z1bmN0aW9uKGMpKXt2YXIgej1jKyIiO2M9ZnVuY3Rpb24oVCl7cmV0dXJuIFQuX2lkPT16fX1MPW0uZ3JlcChMLGMsdHJ1ZSk7Zm9yKEg9MDtIPFUubGVuZ3RoO0grKylpZihtLmlzQXJyYXkoVVtIXS5ldmVudHMpKVVbSF0uZXZlbnRzPW0uZ3JlcChVW0hdLmV2ZW50cyxjLHRydWUpfWVsc2V7TD0KK1tdO2Zvcih2YXIgSD0wO0g8VS5sZW5ndGg7SCsrKWlmKG0uaXNBcnJheShVW0hdLmV2ZW50cykpVVtIXS5ldmVudHM9W119dWEoTCl9ZnVuY3Rpb24gcShjKXtpZihtLmlzRnVuY3Rpb24oYykpcmV0dXJuIG0uZ3JlcChMLGMpO2Vsc2UgaWYoYyl7Yys9IiI7cmV0dXJuIG0uZ3JlcChMLGZ1bmN0aW9uKHope3JldHVybiB6Ll9pZD09Y30pfXJldHVybiBMfWZ1bmN0aW9uIHUoKXtwKyt8fGRhKCJsb2FkaW5nIixudWxsLHRydWUpfWZ1bmN0aW9uIGZhKCl7LS1wfHxkYSgibG9hZGluZyIsbnVsbCxmYWxzZSl9ZnVuY3Rpb24gb2EoYyl7dmFyIHo9Yy5zb3VyY2V8fHt9LEg9VGEoei5pZ25vcmVUaW1lem9uZSxhLmlnbm9yZVRpbWV6b25lKTtjLl9pZD1jLl9pZHx8KGMuaWQ9PT1tYT8iX2ZjIitiYysrOmMuaWQrIiIpO2lmKGMuZGF0ZSl7aWYoIWMuc3RhcnQpYy5zdGFydD1jLmRhdGU7ZGVsZXRlIGMuZGF0ZX1jLl9zdGFydD1OKGMuc3RhcnQ9a2IoYy5zdGFydCxIKSk7Yy5lbmQ9a2IoYy5lbmQsCitIKTtpZihjLmVuZCYmYy5lbmQ8PWMuc3RhcnQpYy5lbmQ9bnVsbDtjLl9lbmQ9Yy5lbmQ/TihjLmVuZCk6bnVsbDtpZihjLmFsbERheT09PW1hKWMuYWxsRGF5PVRhKHouYWxsRGF5RGVmYXVsdCxhLmFsbERheURlZmF1bHQpO2lmKGMuY2xhc3NOYW1lKXtpZih0eXBlb2YgYy5jbGFzc05hbWU9PSJzdHJpbmciKWMuY2xhc3NOYW1lPWMuY2xhc3NOYW1lLnNwbGl0KC9ccysvKX1lbHNlIGMuY2xhc3NOYW1lPVtdfWZ1bmN0aW9uIGdhKGMpe2lmKGMuY2xhc3NOYW1lKXtpZih0eXBlb2YgYy5jbGFzc05hbWU9PSJzdHJpbmciKWMuY2xhc3NOYW1lPWMuY2xhc3NOYW1lLnNwbGl0KC9ccysvKX1lbHNlIGMuY2xhc3NOYW1lPVtdO2Zvcih2YXIgej1BYS5zb3VyY2VOb3JtYWxpemVycyxIPTA7SDx6Lmxlbmd0aDtIKyspeltIXShjKX1mdW5jdGlvbiByYShjLHope3JldHVybiBjJiZ6JiZzYShjKT09c2Eoeil9ZnVuY3Rpb24gc2EoYyl7cmV0dXJuKHR5cGVvZiBjPT0ib2JqZWN0Ij9jLmV2ZW50c3x8CitjLnVybDoiIil8fGN9dmFyIGhhPXRoaXM7aGEuaXNGZXRjaE5lZWRlZD1lO2hhLmZldGNoRXZlbnRzPWQ7aGEuYWRkRXZlbnRTb3VyY2U9bDtoYS5yZW1vdmVFdmVudFNvdXJjZT10O2hhLnVwZGF0ZUV2ZW50PXk7aGEucmVuZGVyRXZlbnQ9UztoYS5yZW1vdmVFdmVudHM9UTtoYS5jbGllbnRFdmVudHM9cTtoYS5ub3JtYWxpemVFdmVudD1vYTt2YXIgZGE9aGEudHJpZ2dlcixuYT1oYS5nZXRWaWV3LHVhPWhhLnJlcG9ydEV2ZW50cyxwYT17ZXZlbnRzOltdfSxVPVtwYV0sY2Esa2EscWE9MCxHPTAscD0wLEw9W107Zm9yKGhhPTA7aGE8Yi5sZW5ndGg7aGErKylqKGJbaGFdKX1mdW5jdGlvbiBnYihhLGIsZSl7YS5zZXRGdWxsWWVhcihhLmdldEZ1bGxZZWFyKCkrYik7ZXx8S2EoYSk7cmV0dXJuIGF9ZnVuY3Rpb24gaGIoYSxiLGUpe2lmKCthKXtiPWEuZ2V0TW9udGgoKStiO3ZhciBkPU4oYSk7ZC5zZXREYXRlKDEpO2Quc2V0TW9udGgoYik7YS5zZXRNb250aChiKTtmb3IoZXx8S2EoYSk7YS5nZXRNb250aCgpIT0KK2QuZ2V0TW9udGgoKTspYS5zZXREYXRlKGEuZ2V0RGF0ZSgpKyhhPGQ/MTotMSkpfXJldHVybiBhfWZ1bmN0aW9uIGJhKGEsYixlKXtpZigrYSl7Yj1hLmdldERhdGUoKStiO3ZhciBkPU4oYSk7ZC5zZXRIb3Vycyg5KTtkLnNldERhdGUoYik7YS5zZXREYXRlKGIpO2V8fEthKGEpO2xiKGEsZCl9cmV0dXJuIGF9ZnVuY3Rpb24gbGIoYSxiKXtpZigrYSlmb3IoO2EuZ2V0RGF0ZSgpIT1iLmdldERhdGUoKTspYS5zZXRUaW1lKCthKyhhPGI/MTotMSkqY2MpfWZ1bmN0aW9uIHhhKGEsYil7YS5zZXRNaW51dGVzKGEuZ2V0TWludXRlcygpK2IpO3JldHVybiBhfWZ1bmN0aW9uIEthKGEpe2Euc2V0SG91cnMoMCk7YS5zZXRNaW51dGVzKDApO2Euc2V0U2Vjb25kcygwKTthLnNldE1pbGxpc2Vjb25kcygwKTtyZXR1cm4gYX1mdW5jdGlvbiBOKGEsYil7aWYoYilyZXR1cm4gS2EobmV3IERhdGUoK2EpKTtyZXR1cm4gbmV3IERhdGUoK2EpfWZ1bmN0aW9uIHpiKCl7dmFyIGE9MCxiO2RvIGI9bmV3IERhdGUoMTk3MCwKK2ErKywxKTt3aGlsZShiLmdldEhvdXJzKCkpO3JldHVybiBifWZ1bmN0aW9uIEZhKGEsYixlKXtmb3IoYj1ifHwxOyFhLmdldERheSgpfHxlJiZhLmdldERheSgpPT0xfHwhZSYmYS5nZXREYXkoKT09NjspYmEoYSxiKTtyZXR1cm4gYX1mdW5jdGlvbiBDYShhLGIpe3JldHVybiBNYXRoLnJvdW5kKChOKGEsdHJ1ZSktTihiLHRydWUpKS9BYil9ZnVuY3Rpb24geWIoYSxiLGUsZCl7aWYoYiE9PW1hJiZiIT1hLmdldEZ1bGxZZWFyKCkpe2Euc2V0RGF0ZSgxKTthLnNldE1vbnRoKDApO2Euc2V0RnVsbFllYXIoYil9aWYoZSE9PW1hJiZlIT1hLmdldE1vbnRoKCkpe2Euc2V0RGF0ZSgxKTthLnNldE1vbnRoKGUpfWQhPT1tYSYmYS5zZXREYXRlKGQpfWZ1bmN0aW9uIGtiKGEsYil7aWYodHlwZW9mIGE9PSJvYmplY3QiKXJldHVybiBhO2lmKHR5cGVvZiBhPT0ibnVtYmVyIilyZXR1cm4gbmV3IERhdGUoYSoxRTMpO2lmKHR5cGVvZiBhPT0ic3RyaW5nIil7aWYoYS5tYXRjaCgvXlxkKyhcLlxkKyk/JC8pKXJldHVybiBuZXcgRGF0ZShwYXJzZUZsb2F0KGEpKgorMUUzKTtpZihiPT09bWEpYj10cnVlO3JldHVybiBCYihhLGIpfHwoYT9uZXcgRGF0ZShhKTpudWxsKX1yZXR1cm4gbnVsbH1mdW5jdGlvbiBCYihhLGIpe2E9YS5tYXRjaCgvXihbMC05XXs0fSkoLShbMC05XXsyfSkoLShbMC05XXsyfSkoW1QgXShbMC05XXsyfSk6KFswLTldezJ9KSg6KFswLTldezJ9KShcLihbMC05XSspKT8pPyhafCgoWy0rXSkoWzAtOV17Mn0pKDo/KFswLTldezJ9KSk/KSk/KT8pPyk/JC8pO2lmKCFhKXJldHVybiBudWxsO3ZhciBlPW5ldyBEYXRlKGFbMV0sMCwxKTtpZihifHwhYVsxM10pe2I9bmV3IERhdGUoYVsxXSwwLDEsOSwwKTtpZihhWzNdKXtlLnNldE1vbnRoKGFbM10tMSk7Yi5zZXRNb250aChhWzNdLTEpfWlmKGFbNV0pe2Uuc2V0RGF0ZShhWzVdKTtiLnNldERhdGUoYVs1XSl9bGIoZSxiKTthWzddJiZlLnNldEhvdXJzKGFbN10pO2FbOF0mJmUuc2V0TWludXRlcyhhWzhdKTthWzEwXSYmZS5zZXRTZWNvbmRzKGFbMTBdKTthWzEyXSYmZS5zZXRNaWxsaXNlY29uZHMoTnVtYmVyKCIwLiIrCithWzEyXSkqMUUzKTtsYihlLGIpfWVsc2V7ZS5zZXRVVENGdWxsWWVhcihhWzFdLGFbM10/YVszXS0xOjAsYVs1XXx8MSk7ZS5zZXRVVENIb3VycyhhWzddfHwwLGFbOF18fDAsYVsxMF18fDAsYVsxMl0/TnVtYmVyKCIwLiIrYVsxMl0pKjFFMzowKTtpZihhWzE0XSl7Yj1OdW1iZXIoYVsxNl0pKjYwKyhhWzE4XT9OdW1iZXIoYVsxOF0pOjApO2IqPWFbMTVdPT0iLSI/MTotMTtlPW5ldyBEYXRlKCtlK2IqNjAqMUUzKX19cmV0dXJuIGV9ZnVuY3Rpb24gbWIoYSl7aWYodHlwZW9mIGE9PSJudW1iZXIiKXJldHVybiBhKjYwO2lmKHR5cGVvZiBhPT0ib2JqZWN0IilyZXR1cm4gYS5nZXRIb3VycygpKjYwK2EuZ2V0TWludXRlcygpO2lmKGE9YS5tYXRjaCgvKFxkKykoPzo6KFxkKykpP1xzKihcdyspPy8pKXt2YXIgYj1wYXJzZUludChhWzFdLDEwKTtpZihhWzNdKXtiJT0xMjtpZihhWzNdLnRvTG93ZXJDYXNlKCkuY2hhckF0KDApPT0icCIpYis9MTJ9cmV0dXJuIGIqNjArKGFbMl0/cGFyc2VJbnQoYVsyXSwKKzEwKTowKX19ZnVuY3Rpb24gT2EoYSxiLGUpe3JldHVybiBpYihhLG51bGwsYixlKX1mdW5jdGlvbiBpYihhLGIsZSxkKXtkPWR8fFlhO3ZhciBmPWEsZz1iLGwsaj1lLmxlbmd0aCx0LHksUyxRPSIiO2ZvcihsPTA7bDxqO2wrKyl7dD1lLmNoYXJBdChsKTtpZih0PT0iJyIpZm9yKHk9bCsxO3k8ajt5Kyspe2lmKGUuY2hhckF0KHkpPT0iJyIpe2lmKGYpe1ErPXk9PWwrMT8iJyI6ZS5zdWJzdHJpbmcobCsxLHkpO2w9eX1icmVha319ZWxzZSBpZih0PT0iKCIpZm9yKHk9bCsxO3k8ajt5Kyspe2lmKGUuY2hhckF0KHkpPT0iKSIpe2w9T2EoZixlLnN1YnN0cmluZyhsKzEseSksZCk7aWYocGFyc2VJbnQobC5yZXBsYWNlKC9cRC8sIiIpLDEwKSlRKz1sO2w9eTticmVha319ZWxzZSBpZih0PT0iWyIpZm9yKHk9bCsxO3k8ajt5Kyspe2lmKGUuY2hhckF0KHkpPT0iXSIpe3Q9ZS5zdWJzdHJpbmcobCsxLHkpO2w9T2EoZix0LGQpO2lmKGwhPU9hKGcsdCxkKSlRKz1sO2w9eTticmVha319ZWxzZSBpZih0PT0KKyJ7Iil7Zj1iO2c9YX1lbHNlIGlmKHQ9PSJ9Iil7Zj1hO2c9Yn1lbHNle2Zvcih5PWo7eT5sO3ktLSlpZihTPWRjW2Uuc3Vic3RyaW5nKGwseSldKXtpZihmKVErPVMoZixkKTtsPXktMTticmVha31pZih5PT1sKWlmKGYpUSs9dH19cmV0dXJuIFF9ZnVuY3Rpb24gVWEoYSl7cmV0dXJuIGEuZW5kP2VjKGEuZW5kLGEuYWxsRGF5KTpiYShOKGEuc3RhcnQpLDEpfWZ1bmN0aW9uIGVjKGEsYil7YT1OKGEpO3JldHVybiBifHxhLmdldEhvdXJzKCl8fGEuZ2V0TWludXRlcygpP2JhKGEsMSk6S2EoYSl9ZnVuY3Rpb24gZmMoYSxiKXtyZXR1cm4oYi5tc0xlbmd0aC1hLm1zTGVuZ3RoKSoxMDArKGEuZXZlbnQuc3RhcnQtYi5ldmVudC5zdGFydCl9ZnVuY3Rpb24gQ2IoYSxiKXtyZXR1cm4gYS5lbmQ+Yi5zdGFydCYmYS5zdGFydDxiLmVuZH1mdW5jdGlvbiBuYihhLGIsZSxkKXt2YXIgZj1bXSxnLGw9YS5sZW5ndGgsaix0LHksUyxRO2ZvcihnPTA7ZzxsO2crKyl7aj1hW2ddO3Q9ai5zdGFydDsKK3k9YltnXTtpZih5PmUmJnQ8ZCl7aWYodDxlKXt0PU4oZSk7Uz1mYWxzZX1lbHNle3Q9dDtTPXRydWV9aWYoeT5kKXt5PU4oZCk7UT1mYWxzZX1lbHNle3k9eTtRPXRydWV9Zi5wdXNoKHtldmVudDpqLHN0YXJ0OnQsZW5kOnksaXNTdGFydDpTLGlzRW5kOlEsbXNMZW5ndGg6eS10fSl9fXJldHVybiBmLnNvcnQoZmMpfWZ1bmN0aW9uIG9iKGEpe3ZhciBiPVtdLGUsZD1hLmxlbmd0aCxmLGcsbCxqO2ZvcihlPTA7ZTxkO2UrKyl7Zj1hW2VdO2ZvcihnPTA7Oyl7bD1mYWxzZTtpZihiW2ddKWZvcihqPTA7ajxiW2ddLmxlbmd0aDtqKyspaWYoQ2IoYltnXVtqXSxmKSl7bD10cnVlO2JyZWFrfWlmKGwpZysrO2Vsc2UgYnJlYWt9aWYoYltnXSliW2ddLnB1c2goZik7ZWxzZSBiW2ddPVtmXX1yZXR1cm4gYn1mdW5jdGlvbiBEYihhLGIsZSl7YS51bmJpbmQoIm1vdXNlb3ZlciIpLm1vdXNlb3ZlcihmdW5jdGlvbihkKXtmb3IodmFyIGY9ZC50YXJnZXQsZztmIT10aGlzOyl7Zz1mO2Y9Zi5wYXJlbnROb2RlfWlmKChmPQorZy5fZmNpKSE9PW1hKXtnLl9mY2k9bWE7Zz1iW2ZdO2UoZy5ldmVudCxnLmVsZW1lbnQsZyk7bShkLnRhcmdldCkudHJpZ2dlcihkKX1kLnN0b3BQcm9wYWdhdGlvbigpfSl9ZnVuY3Rpb24gVmEoYSxiLGUpe2Zvcih2YXIgZD0wLGY7ZDxhLmxlbmd0aDtkKyspe2Y9bShhW2RdKTtmLndpZHRoKE1hdGgubWF4KDAsYi1wYihmLGUpKSl9fWZ1bmN0aW9uIEViKGEsYixlKXtmb3IodmFyIGQ9MCxmO2Q8YS5sZW5ndGg7ZCsrKXtmPW0oYVtkXSk7Zi5oZWlnaHQoTWF0aC5tYXgoMCxiLVNhKGYsZSkpKX19ZnVuY3Rpb24gcGIoYSxiKXtyZXR1cm4gZ2MoYSkraGMoYSkrKGI/aWMoYSk6MCl9ZnVuY3Rpb24gZ2MoYSl7cmV0dXJuKHBhcnNlRmxvYXQobS5jc3MoYVswXSwicGFkZGluZ0xlZnQiLHRydWUpKXx8MCkrKHBhcnNlRmxvYXQobS5jc3MoYVswXSwicGFkZGluZ1JpZ2h0Iix0cnVlKSl8fDApfWZ1bmN0aW9uIGljKGEpe3JldHVybihwYXJzZUZsb2F0KG0uY3NzKGFbMF0sIm1hcmdpbkxlZnQiLAordHJ1ZSkpfHwwKSsocGFyc2VGbG9hdChtLmNzcyhhWzBdLCJtYXJnaW5SaWdodCIsdHJ1ZSkpfHwwKX1mdW5jdGlvbiBoYyhhKXtyZXR1cm4ocGFyc2VGbG9hdChtLmNzcyhhWzBdLCJib3JkZXJMZWZ0V2lkdGgiLHRydWUpKXx8MCkrKHBhcnNlRmxvYXQobS5jc3MoYVswXSwiYm9yZGVyUmlnaHRXaWR0aCIsdHJ1ZSkpfHwwKX1mdW5jdGlvbiBTYShhLGIpe3JldHVybiBqYyhhKStrYyhhKSsoYj9GYihhKTowKX1mdW5jdGlvbiBqYyhhKXtyZXR1cm4ocGFyc2VGbG9hdChtLmNzcyhhWzBdLCJwYWRkaW5nVG9wIix0cnVlKSl8fDApKyhwYXJzZUZsb2F0KG0uY3NzKGFbMF0sInBhZGRpbmdCb3R0b20iLHRydWUpKXx8MCl9ZnVuY3Rpb24gRmIoYSl7cmV0dXJuKHBhcnNlRmxvYXQobS5jc3MoYVswXSwibWFyZ2luVG9wIix0cnVlKSl8fDApKyhwYXJzZUZsb2F0KG0uY3NzKGFbMF0sIm1hcmdpbkJvdHRvbSIsdHJ1ZSkpfHwwKX1mdW5jdGlvbiBrYyhhKXtyZXR1cm4ocGFyc2VGbG9hdChtLmNzcyhhWzBdLAorImJvcmRlclRvcFdpZHRoIix0cnVlKSl8fDApKyhwYXJzZUZsb2F0KG0uY3NzKGFbMF0sImJvcmRlckJvdHRvbVdpZHRoIix0cnVlKSl8fDApfWZ1bmN0aW9uIFphKGEsYil7Yj10eXBlb2YgYj09Im51bWJlciI/YisicHgiOmI7YS5lYWNoKGZ1bmN0aW9uKGUsZCl7ZC5zdHlsZS5jc3NUZXh0Kz0iO21pbi1oZWlnaHQ6IitiKyI7X2hlaWdodDoiK2J9KX1mdW5jdGlvbiB4Yigpe31mdW5jdGlvbiBHYihhLGIpe3JldHVybiBhLWJ9ZnVuY3Rpb24gSGIoYSl7cmV0dXJuIE1hdGgubWF4LmFwcGx5KE1hdGgsYSl9ZnVuY3Rpb24gUGEoYSl7cmV0dXJuKGE8MTA/IjAiOiIiKSthfWZ1bmN0aW9uIGpiKGEsYil7aWYoYVtiXSE9PW1hKXJldHVybiBhW2JdO2I9Yi5zcGxpdCgvKD89W0EtWl0pLyk7Zm9yKHZhciBlPWIubGVuZ3RoLTEsZDtlPj0wO2UtLSl7ZD1hW2JbZV0udG9Mb3dlckNhc2UoKV07aWYoZCE9PW1hKXJldHVybiBkfXJldHVybiBhWyIiXX1mdW5jdGlvbiBRYShhKXtyZXR1cm4gYS5yZXBsYWNlKC8mL2csCisiJmFtcDsiKS5yZXBsYWNlKC88L2csIiZsdDsiKS5yZXBsYWNlKC8+L2csIiZndDsiKS5yZXBsYWNlKC8nL2csIiYjMDM5OyIpLnJlcGxhY2UoLyIvZywiJnF1b3Q7IikucmVwbGFjZSgvXG4vZywiPGJyIC8+Iil9ZnVuY3Rpb24gSWIoYSl7cmV0dXJuIGEuaWQrIi8iK2EuY2xhc3NOYW1lKyIvIithLnN0eWxlLmNzc1RleHQucmVwbGFjZSgvKF58OylccyoodG9wfGxlZnR8d2lkdGh8aGVpZ2h0KVxzKjpbXjtdKi9pZywiIil9ZnVuY3Rpb24gcWIoYSl7YS5hdHRyKCJ1bnNlbGVjdGFibGUiLCJvbiIpLmNzcygiTW96VXNlclNlbGVjdCIsIm5vbmUiKS5iaW5kKCJzZWxlY3RzdGFydC51aSIsZnVuY3Rpb24oKXtyZXR1cm4gZmFsc2V9KX1mdW5jdGlvbiBhYihhKXthLmNoaWxkcmVuKCkucmVtb3ZlQ2xhc3MoImZjLWZpcnN0IGZjLWxhc3QiKS5maWx0ZXIoIjpmaXJzdC1jaGlsZCIpLmFkZENsYXNzKCJmYy1maXJzdCIpLmVuZCgpLmZpbHRlcigiOmxhc3QtY2hpbGQiKS5hZGRDbGFzcygiZmMtbGFzdCIpfQorZnVuY3Rpb24gcmIoYSxiKXthLmVhY2goZnVuY3Rpb24oZSxkKXtkLmNsYXNzTmFtZT1kLmNsYXNzTmFtZS5yZXBsYWNlKC9eZmMtXHcqLywiZmMtIitsY1tiLmdldERheSgpXSl9KX1mdW5jdGlvbiBKYihhLGIpe3ZhciBlPWEuc291cmNlfHx7fSxkPWEuY29sb3IsZj1lLmNvbG9yLGc9YigiZXZlbnRDb2xvciIpLGw9YS5iYWNrZ3JvdW5kQ29sb3J8fGR8fGUuYmFja2dyb3VuZENvbG9yfHxmfHxiKCJldmVudEJhY2tncm91bmRDb2xvciIpfHxnO2Q9YS5ib3JkZXJDb2xvcnx8ZHx8ZS5ib3JkZXJDb2xvcnx8Znx8YigiZXZlbnRCb3JkZXJDb2xvciIpfHxnO2E9YS50ZXh0Q29sb3J8fGUudGV4dENvbG9yfHxiKCJldmVudFRleHRDb2xvciIpO2I9W107bCYmYi5wdXNoKCJiYWNrZ3JvdW5kLWNvbG9yOiIrbCk7ZCYmYi5wdXNoKCJib3JkZXItY29sb3I6IitkKTthJiZiLnB1c2goImNvbG9yOiIrYSk7cmV0dXJuIGIuam9pbigiOyIpfWZ1bmN0aW9uICRhKGEsYixlKXtpZihtLmlzRnVuY3Rpb24oYSkpYT0KK1thXTtpZihhKXt2YXIgZCxmO2ZvcihkPTA7ZDxhLmxlbmd0aDtkKyspZj1hW2RdLmFwcGx5KGIsZSl8fGY7cmV0dXJuIGZ9fWZ1bmN0aW9uIFRhKCl7Zm9yKHZhciBhPTA7YTxhcmd1bWVudHMubGVuZ3RoO2ErKylpZihhcmd1bWVudHNbYV0hPT1tYSlyZXR1cm4gYXJndW1lbnRzW2FdfWZ1bmN0aW9uIG1jKGEsYil7ZnVuY3Rpb24gZShqLHQpe2lmKHQpe2hiKGosdCk7ai5zZXREYXRlKDEpfWo9TihqLHRydWUpO2ouc2V0RGF0ZSgxKTt0PWhiKE4oaiksMSk7dmFyIHk9TihqKSxTPU4odCksUT1mKCJmaXJzdERheSIpLHE9Zigid2Vla2VuZHMiKT8wOjE7aWYocSl7RmEoeSk7RmEoUywtMSx0cnVlKX1iYSh5LC0oKHkuZ2V0RGF5KCktTWF0aC5tYXgoUSxxKSs3KSU3KSk7YmEoUywoNy1TLmdldERheSgpK01hdGgubWF4KFEscSkpJTcpO1E9TWF0aC5yb3VuZCgoUy15KS8oQWIqNykpO2lmKGYoIndlZWtNb2RlIik9PSJmaXhlZCIpe2JhKFMsKDYtUSkqNyk7UT02fWQudGl0bGU9bChqLAorZigidGl0bGVGb3JtYXQiKSk7ZC5zdGFydD1qO2QuZW5kPXQ7ZC52aXNTdGFydD15O2QudmlzRW5kPVM7Zyg2LFEscT81OjcsdHJ1ZSl9dmFyIGQ9dGhpcztkLnJlbmRlcj1lO3NiLmNhbGwoZCxhLGIsIm1vbnRoIik7dmFyIGY9ZC5vcHQsZz1kLnJlbmRlckJhc2ljLGw9Yi5mb3JtYXREYXRlfWZ1bmN0aW9uIG5jKGEsYil7ZnVuY3Rpb24gZShqLHQpe3QmJmJhKGosdCo3KTtqPWJhKE4oaiksLSgoai5nZXREYXkoKS1mKCJmaXJzdERheSIpKzcpJTcpKTt0PWJhKE4oaiksNyk7dmFyIHk9TihqKSxTPU4odCksUT1mKCJ3ZWVrZW5kcyIpO2lmKCFRKXtGYSh5KTtGYShTLC0xLHRydWUpfWQudGl0bGU9bCh5LGJhKE4oUyksLTEpLGYoInRpdGxlRm9ybWF0IikpO2Quc3RhcnQ9ajtkLmVuZD10O2QudmlzU3RhcnQ9eTtkLnZpc0VuZD1TO2coMSwxLFE/Nzo1LGZhbHNlKX12YXIgZD10aGlzO2QucmVuZGVyPWU7c2IuY2FsbChkLGEsYiwiYmFzaWNXZWVrIik7dmFyIGY9ZC5vcHQsZz1kLnJlbmRlckJhc2ljLAorbD1iLmZvcm1hdERhdGVzfWZ1bmN0aW9uIG9jKGEsYil7ZnVuY3Rpb24gZShqLHQpe2lmKHQpe2JhKGosdCk7Zigid2Vla2VuZHMiKXx8RmEoaix0PDA/LTE6MSl9ZC50aXRsZT1sKGosZigidGl0bGVGb3JtYXQiKSk7ZC5zdGFydD1kLnZpc1N0YXJ0PU4oaix0cnVlKTtkLmVuZD1kLnZpc0VuZD1iYShOKGQuc3RhcnQpLDEpO2coMSwxLDEsZmFsc2UpfXZhciBkPXRoaXM7ZC5yZW5kZXI9ZTtzYi5jYWxsKGQsYSxiLCJiYXNpY0RheSIpO3ZhciBmPWQub3B0LGc9ZC5yZW5kZXJCYXNpYyxsPWIuZm9ybWF0RGF0ZX1mdW5jdGlvbiBzYihhLGIsZSl7ZnVuY3Rpb24gZCh3LEksUixWKXt2PUk7Rj1SO2YoKTsoST0hQyk/Zyh3LFYpOnooKTtsKEkpfWZ1bmN0aW9uIGYoKXtpZihrPUwoImlzUlRMIikpe0Q9LTE7Wj1GLTF9ZWxzZXtEPTE7Wj0wfWphPUwoImZpcnN0RGF5Iik7aWE9TCgid2Vla2VuZHMiKT8wOjE7bGE9TCgidGhlbWUiKT8idWkiOiJmYyI7JD1MKCJjb2x1bW5Gb3JtYXQiKX1mdW5jdGlvbiBnKHcsCitJKXt2YXIgUixWPWxhKyItd2lkZ2V0LWhlYWRlciIsZWE9bGErIi13aWRnZXQtY29udGVudCIsYWE7Uj0iPHRhYmxlIGNsYXNzPSdmYy1ib3JkZXItc2VwYXJhdGUnIHN0eWxlPSd3aWR0aDoxMDAlJyBjZWxsc3BhY2luZz0nMCc+PHRoZWFkPjx0cj4iO2ZvcihhYT0wO2FhPEY7YWErKylSKz0iPHRoIGNsYXNzPSdmYy0gIitWKyInLz4iO1IrPSI8L3RyPjwvdGhlYWQ+PHRib2R5PiI7Zm9yKGFhPTA7YWE8dzthYSsrKXtSKz0iPHRyIGNsYXNzPSdmYy13ZWVrIithYSsiJz4iO2ZvcihWPTA7VjxGO1YrKylSKz0iPHRkIGNsYXNzPSdmYy0gIitlYSsiIGZjLWRheSIrKGFhKkYrVikrIic+PGRpdj4iKyhJPyI8ZGl2IGNsYXNzPSdmYy1kYXktbnVtYmVyJy8+IjoiIikrIjxkaXYgY2xhc3M9J2ZjLWRheS1jb250ZW50Jz48ZGl2IHN0eWxlPSdwb3NpdGlvbjpyZWxhdGl2ZSc+Jm5ic3A7PC9kaXY+PC9kaXY+PC9kaXY+PC90ZD4iO1IrPSI8L3RyPiJ9Uis9IjwvdGJvZHk+PC90YWJsZT4iO3c9CittKFIpLmFwcGVuZFRvKGEpO0s9dy5maW5kKCJ0aGVhZCIpO2k9Sy5maW5kKCJ0aCIpO0M9dy5maW5kKCJ0Ym9keSIpO1A9Qy5maW5kKCJ0ciIpO0U9Qy5maW5kKCJ0ZCIpO0I9RS5maWx0ZXIoIjpmaXJzdC1jaGlsZCIpO249UC5lcSgwKS5maW5kKCJkaXYuZmMtZGF5LWNvbnRlbnQgZGl2Iik7YWIoSy5hZGQoSy5maW5kKCJ0ciIpKSk7YWIoUCk7UC5lcSgwKS5hZGRDbGFzcygiZmMtZmlyc3QiKTt5KEUpO1k9bSgiPGRpdiBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDo4O3RvcDowO2xlZnQ6MCcvPiIpLmFwcGVuZFRvKGEpfWZ1bmN0aW9uIGwodyl7dmFyIEk9d3x8dj09MSxSPXAuc3RhcnQuZ2V0TW9udGgoKSxWPUthKG5ldyBEYXRlKSxlYSxhYSx2YTtJJiZpLmVhY2goZnVuY3Rpb24od2EsR2Epe2VhPW0oR2EpO2FhPWNhKHdhKTtlYS5odG1sKHlhKGFhLCQpKTtyYihlYSxhYSl9KTtFLmVhY2goZnVuY3Rpb24od2EsR2Epe2VhPW0oR2EpO2FhPWNhKHdhKTthYS5nZXRNb250aCgpPT0KK1I/ZWEucmVtb3ZlQ2xhc3MoImZjLW90aGVyLW1vbnRoIik6ZWEuYWRkQ2xhc3MoImZjLW90aGVyLW1vbnRoIik7K2FhPT0rVj9lYS5hZGRDbGFzcyhsYSsiLXN0YXRlLWhpZ2hsaWdodCBmYy10b2RheSIpOmVhLnJlbW92ZUNsYXNzKGxhKyItc3RhdGUtaGlnaGxpZ2h0IGZjLXRvZGF5Iik7ZWEuZmluZCgiZGl2LmZjLWRheS1udW1iZXIiKS50ZXh0KGFhLmdldERhdGUoKSk7SSYmcmIoZWEsYWEpfSk7UC5lYWNoKGZ1bmN0aW9uKHdhLEdhKXt2YT1tKEdhKTtpZih3YTx2KXt2YS5zaG93KCk7d2E9PXYtMT92YS5hZGRDbGFzcygiZmMtbGFzdCIpOnZhLnJlbW92ZUNsYXNzKCJmYy1sYXN0Iil9ZWxzZSB2YS5oaWRlKCl9KX1mdW5jdGlvbiBqKHcpe289dzt3PW8tSy5oZWlnaHQoKTt2YXIgSSxSLFY7aWYoTCgid2Vla01vZGUiKT09InZhcmlhYmxlIilJPVI9TWF0aC5mbG9vcih3Lyh2PT0xPzI6NikpO2Vsc2V7ST1NYXRoLmZsb29yKHcvdik7Uj13LUkqKHYtMSl9Qi5lYWNoKGZ1bmN0aW9uKGVhLAorYWEpe2lmKGVhPHYpe1Y9bShhYSk7WmEoVi5maW5kKCI+IGRpdiIpLChlYT09di0xP1I6SSktU2EoVikpfX0pfWZ1bmN0aW9uIHQodyl7Vz13O00uY2xlYXIoKTtzPU1hdGguZmxvb3IoVy9GKTtWYShpLnNsaWNlKDAsLTEpLHMpfWZ1bmN0aW9uIHkodyl7dy5jbGljayhTKS5tb3VzZWRvd24oWCl9ZnVuY3Rpb24gUyh3KXtpZighTCgic2VsZWN0YWJsZSIpKXt2YXIgST1wYXJzZUludCh0aGlzLmNsYXNzTmFtZS5tYXRjaCgvZmNcLWRheShcZCspLylbMV0pO0k9Y2EoSSk7YygiZGF5Q2xpY2siLHRoaXMsSSx0cnVlLHcpfX1mdW5jdGlvbiBRKHcsSSxSKXtSJiZyLmJ1aWxkKCk7Uj1OKHAudmlzU3RhcnQpO2Zvcih2YXIgVj1iYShOKFIpLEYpLGVhPTA7ZWE8djtlYSsrKXt2YXIgYWE9bmV3IERhdGUoTWF0aC5tYXgoUix3KSksdmE9bmV3IERhdGUoTWF0aC5taW4oVixJKSk7aWYoYWE8dmEpe3ZhciB3YTtpZihrKXt3YT1DYSh2YSxSKSpEK1orMTthYT1DYShhYSxSKSpEK1orMX1lbHNle3dhPQorQ2EoYWEsUik7YWE9Q2EodmEsUil9eShxKGVhLHdhLGVhLGFhLTEpKX1iYShSLDcpO2JhKFYsNyl9fWZ1bmN0aW9uIHEodyxJLFIsVil7dz1yLnJlY3QodyxJLFIsVixhKTtyZXR1cm4gSCh3LGEpfWZ1bmN0aW9uIHUodyl7cmV0dXJuIE4odyl9ZnVuY3Rpb24gZmEodyxJKXtRKHcsYmEoTihJKSwxKSx0cnVlKX1mdW5jdGlvbiBvYSgpe1QoKX1mdW5jdGlvbiBnYSh3LEksUil7dmFyIFY9dWEodyk7YygiZGF5Q2xpY2siLEVbVi5yb3cqRitWLmNvbF0sdyxJLFIpfWZ1bmN0aW9uIHJhKHcsSSl7Si5zdGFydChmdW5jdGlvbihSKXtUKCk7UiYmcShSLnJvdyxSLmNvbCxSLnJvdyxSLmNvbCl9LEkpfWZ1bmN0aW9uIHNhKHcsSSxSKXt2YXIgVj1KLnN0b3AoKTtUKCk7aWYoVil7Vj1wYShWKTtjKCJkcm9wIix3LFYsdHJ1ZSxJLFIpfX1mdW5jdGlvbiBoYSh3KXtyZXR1cm4gTih3LnN0YXJ0KX1mdW5jdGlvbiBkYSh3KXtyZXR1cm4gTS5sZWZ0KHcpfWZ1bmN0aW9uIG5hKHcpe3JldHVybiBNLnJpZ2h0KHcpfQorZnVuY3Rpb24gdWEodyl7cmV0dXJue3JvdzpNYXRoLmZsb29yKENhKHcscC52aXNTdGFydCkvNyksY29sOmthKHcuZ2V0RGF5KCkpfX1mdW5jdGlvbiBwYSh3KXtyZXR1cm4gVSh3LnJvdyx3LmNvbCl9ZnVuY3Rpb24gVSh3LEkpe3JldHVybiBiYShOKHAudmlzU3RhcnQpLHcqNytJKkQrWil9ZnVuY3Rpb24gY2Eodyl7cmV0dXJuIFUoTWF0aC5mbG9vcih3L0YpLHclRil9ZnVuY3Rpb24ga2Eodyl7cmV0dXJuKHctTWF0aC5tYXgoamEsaWEpK0YpJUYqRCtafWZ1bmN0aW9uIHFhKHcpe3JldHVybiBQLmVxKHcpfWZ1bmN0aW9uIEcoKXtyZXR1cm57bGVmdDowLHJpZ2h0Old9fXZhciBwPXRoaXM7cC5yZW5kZXJCYXNpYz1kO3Auc2V0SGVpZ2h0PWo7cC5zZXRXaWR0aD10O3AucmVuZGVyRGF5T3ZlcmxheT1RO3AuZGVmYXVsdFNlbGVjdGlvbkVuZD11O3AucmVuZGVyU2VsZWN0aW9uPWZhO3AuY2xlYXJTZWxlY3Rpb249b2E7cC5yZXBvcnREYXlDbGljaz1nYTtwLmRyYWdTdGFydD1yYTtwLmRyYWdTdG9wPQorc2E7cC5kZWZhdWx0RXZlbnRFbmQ9aGE7cC5nZXRIb3Zlckxpc3RlbmVyPWZ1bmN0aW9uKCl7cmV0dXJuIEp9O3AuY29sQ29udGVudExlZnQ9ZGE7cC5jb2xDb250ZW50UmlnaHQ9bmE7cC5kYXlPZldlZWtDb2w9a2E7cC5kYXRlQ2VsbD11YTtwLmNlbGxEYXRlPXBhO3AuY2VsbElzQWxsRGF5PWZ1bmN0aW9uKCl7cmV0dXJuIHRydWV9O3AuYWxsRGF5Um93PXFhO3AuYWxsRGF5Qm91bmRzPUc7cC5nZXRSb3dDbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gdn07cC5nZXRDb2xDbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gRn07cC5nZXRDb2xXaWR0aD1mdW5jdGlvbigpe3JldHVybiBzfTtwLmdldERheVNlZ21lbnRDb250YWluZXI9ZnVuY3Rpb24oKXtyZXR1cm4gWX07S2IuY2FsbChwLGEsYixlKTtMYi5jYWxsKHApO01iLmNhbGwocCk7cGMuY2FsbChwKTt2YXIgTD1wLm9wdCxjPXAudHJpZ2dlcix6PXAuY2xlYXJFdmVudHMsSD1wLnJlbmRlck92ZXJsYXksVD1wLmNsZWFyT3ZlcmxheXMsWD1wLmRheVNlbGVjdGlvbk1vdXNlZG93biwKK3lhPWIuZm9ybWF0RGF0ZSxLLGksQyxQLEUsQixuLFksVyxvLHMsdixGLHIsSixNLGssRCxaLGphLGlhLGxhLCQ7cWIoYS5hZGRDbGFzcygiZmMtZ3JpZCIpKTtyPW5ldyBOYihmdW5jdGlvbih3LEkpe3ZhciBSLFYsZWE7aS5lYWNoKGZ1bmN0aW9uKGFhLHZhKXtSPW0odmEpO1Y9Ui5vZmZzZXQoKS5sZWZ0O2lmKGFhKWVhWzFdPVY7ZWE9W1ZdO0lbYWFdPWVhfSk7ZWFbMV09VitSLm91dGVyV2lkdGgoKTtQLmVhY2goZnVuY3Rpb24oYWEsdmEpe2lmKGFhPHYpe1I9bSh2YSk7Vj1SLm9mZnNldCgpLnRvcDtpZihhYSllYVsxXT1WO2VhPVtWXTt3W2FhXT1lYX19KTtlYVsxXT1WK1Iub3V0ZXJIZWlnaHQoKX0pO0o9bmV3IE9iKHIpO009bmV3IFBiKGZ1bmN0aW9uKHcpe3JldHVybiBuLmVxKHcpfSl9ZnVuY3Rpb24gcGMoKXtmdW5jdGlvbiBhKFUsY2Epe1MoVSk7dWEoZShVKSxjYSl9ZnVuY3Rpb24gYigpe1EoKTtnYSgpLmVtcHR5KCl9ZnVuY3Rpb24gZShVKXt2YXIgY2E9ZGEoKSxrYT0KK25hKCkscWE9TihnLnZpc1N0YXJ0KTtrYT1iYShOKHFhKSxrYSk7dmFyIEc9bS5tYXAoVSxVYSkscCxMLGMseixILFQsWD1bXTtmb3IocD0wO3A8Y2E7cCsrKXtMPW9iKG5iKFUsRyxxYSxrYSkpO2ZvcihjPTA7YzxMLmxlbmd0aDtjKyspe3o9TFtjXTtmb3IoSD0wO0g8ei5sZW5ndGg7SCsrKXtUPXpbSF07VC5yb3c9cDtULmxldmVsPWM7WC5wdXNoKFQpfX1iYShxYSw3KTtiYShrYSw3KX1yZXR1cm4gWH1mdW5jdGlvbiBkKFUsY2Esa2Epe3QoVSkmJmYoVSxjYSk7a2EuaXNFbmQmJnkoVSkmJnBhKFUsY2Esa2EpO3EoVSxjYSl9ZnVuY3Rpb24gZihVLGNhKXt2YXIga2E9cmEoKSxxYTtjYS5kcmFnZ2FibGUoe3pJbmRleDo5LGRlbGF5OjUwLG9wYWNpdHk6bCgiZHJhZ09wYWNpdHkiKSxyZXZlcnREdXJhdGlvbjpsKCJkcmFnUmV2ZXJ0RHVyYXRpb24iKSxzdGFydDpmdW5jdGlvbihHLHApe2ooImV2ZW50RHJhZ1N0YXJ0IixjYSxVLEcscCk7ZmEoVSxjYSk7a2Euc3RhcnQoZnVuY3Rpb24oTCwKK2MseixIKXtjYS5kcmFnZ2FibGUoIm9wdGlvbiIsInJldmVydCIsIUx8fCF6JiYhSCk7aGEoKTtpZihMKXtxYT16KjcrSCoobCgiaXNSVEwiKT8tMToxKTtzYShiYShOKFUuc3RhcnQpLHFhKSxiYShVYShVKSxxYSkpfWVsc2UgcWE9MH0sRywiZHJhZyIpfSxzdG9wOmZ1bmN0aW9uKEcscCl7a2Euc3RvcCgpO2hhKCk7aigiZXZlbnREcmFnU3RvcCIsY2EsVSxHLHApO2lmKHFhKW9hKHRoaXMsVSxxYSwwLFUuYWxsRGF5LEcscCk7ZWxzZXtjYS5jc3MoImZpbHRlciIsIiIpO3UoVSxjYSl9fX0pfXZhciBnPXRoaXM7Zy5yZW5kZXJFdmVudHM9YTtnLmNvbXBpbGVEYXlTZWdzPWU7Zy5jbGVhckV2ZW50cz1iO2cuYmluZERheVNlZz1kO1FiLmNhbGwoZyk7dmFyIGw9Zy5vcHQsaj1nLnRyaWdnZXIsdD1nLmlzRXZlbnREcmFnZ2FibGUseT1nLmlzRXZlbnRSZXNpemFibGUsUz1nLnJlcG9ydEV2ZW50cyxRPWcucmVwb3J0RXZlbnRDbGVhcixxPWcuZXZlbnRFbGVtZW50SGFuZGxlcnMsdT1nLnNob3dFdmVudHMsCitmYT1nLmhpZGVFdmVudHMsb2E9Zy5ldmVudERyb3AsZ2E9Zy5nZXREYXlTZWdtZW50Q29udGFpbmVyLHJhPWcuZ2V0SG92ZXJMaXN0ZW5lcixzYT1nLnJlbmRlckRheU92ZXJsYXksaGE9Zy5jbGVhck92ZXJsYXlzLGRhPWcuZ2V0Um93Q250LG5hPWcuZ2V0Q29sQ250LHVhPWcucmVuZGVyRGF5U2VncyxwYT1nLnJlc2l6YWJsZURheUV2ZW50fWZ1bmN0aW9uIHFjKGEsYil7ZnVuY3Rpb24gZShqLHQpe3QmJmJhKGosdCo3KTtqPWJhKE4oaiksLSgoai5nZXREYXkoKS1mKCJmaXJzdERheSIpKzcpJTcpKTt0PWJhKE4oaiksNyk7dmFyIHk9TihqKSxTPU4odCksUT1mKCJ3ZWVrZW5kcyIpO2lmKCFRKXtGYSh5KTtGYShTLC0xLHRydWUpfWQudGl0bGU9bCh5LGJhKE4oUyksLTEpLGYoInRpdGxlRm9ybWF0IikpO2Quc3RhcnQ9ajtkLmVuZD10O2QudmlzU3RhcnQ9eTtkLnZpc0VuZD1TO2coUT83OjUpfXZhciBkPXRoaXM7ZC5yZW5kZXI9ZTtSYi5jYWxsKGQsYSxiLCJhZ2VuZGFXZWVrIik7Cit2YXIgZj1kLm9wdCxnPWQucmVuZGVyQWdlbmRhLGw9Yi5mb3JtYXREYXRlc31mdW5jdGlvbiByYyhhLGIpe2Z1bmN0aW9uIGUoaix0KXtpZih0KXtiYShqLHQpO2YoIndlZWtlbmRzIil8fEZhKGosdDwwPy0xOjEpfXQ9TihqLHRydWUpO3ZhciB5PWJhKE4odCksMSk7ZC50aXRsZT1sKGosZigidGl0bGVGb3JtYXQiKSk7ZC5zdGFydD1kLnZpc1N0YXJ0PXQ7ZC5lbmQ9ZC52aXNFbmQ9eTtnKDEpfXZhciBkPXRoaXM7ZC5yZW5kZXI9ZTtSYi5jYWxsKGQsYSxiLCJhZ2VuZGFEYXkiKTt2YXIgZj1kLm9wdCxnPWQucmVuZGVyQWdlbmRhLGw9Yi5mb3JtYXREYXRlfWZ1bmN0aW9uIFJiKGEsYixlKXtmdW5jdGlvbiBkKGgpe0JhPWg7ZigpO3Y/UCgpOmcoKTtsKCl9ZnVuY3Rpb24gZigpe1dhPWkoInRoZW1lIik/InVpIjoiZmMiO1NiPWkoIndlZWtlbmRzIik/MDoxO1RiPWkoImZpcnN0RGF5Iik7aWYoVWI9aSgiaXNSVEwiKSl7SGE9LTE7SWE9QmEtMX1lbHNle0hhPTE7SWE9MH1MYT1tYihpKCJtaW5UaW1lIikpOworYmI9bWIoaSgibWF4VGltZSIpKTtWYj1pKCJjb2x1bW5Gb3JtYXQiKX1mdW5jdGlvbiBnKCl7dmFyIGg9V2ErIi13aWRnZXQtaGVhZGVyIixPPVdhKyItd2lkZ2V0LWNvbnRlbnQiLHgsQSx0YSx6YSxEYSxFYT1pKCJzbG90TWludXRlcyIpJTE1PT0wO3g9Ijx0YWJsZSBzdHlsZT0nd2lkdGg6MTAwJScgY2xhc3M9J2ZjLWFnZW5kYS1kYXlzIGZjLWJvcmRlci1zZXBhcmF0ZScgY2VsbHNwYWNpbmc9JzAnPjx0aGVhZD48dHI+PHRoIGNsYXNzPSdmYy1hZ2VuZGEtYXhpcyAiK2grIic+Jm5ic3A7PC90aD4iO2ZvcihBPTA7QTxCYTtBKyspeCs9Ijx0aCBjbGFzcz0nZmMtIGZjLWNvbCIrQSsiICIraCsiJy8+Ijt4Kz0iPHRoIGNsYXNzPSdmYy1hZ2VuZGEtZ3V0dGVyICIraCsiJz4mbmJzcDs8L3RoPjwvdHI+PC90aGVhZD48dGJvZHk+PHRyPjx0aCBjbGFzcz0nZmMtYWdlbmRhLWF4aXMgIitoKyInPiZuYnNwOzwvdGg+Ijtmb3IoQT0wO0E8QmE7QSsrKXgrPSI8dGQgY2xhc3M9J2ZjLSBmYy1jb2wiKworQSsiICIrTysiJz48ZGl2PjxkaXYgY2xhc3M9J2ZjLWRheS1jb250ZW50Jz48ZGl2IHN0eWxlPSdwb3NpdGlvbjpyZWxhdGl2ZSc+Jm5ic3A7PC9kaXY+PC9kaXY+PC9kaXY+PC90ZD4iO3grPSI8dGQgY2xhc3M9J2ZjLWFnZW5kYS1ndXR0ZXIgIitPKyInPiZuYnNwOzwvdGQ+PC90cj48L3Rib2R5PjwvdGFibGU+Ijt2PW0oeCkuYXBwZW5kVG8oYSk7Rj12LmZpbmQoInRoZWFkIik7cj1GLmZpbmQoInRoIikuc2xpY2UoMSwtMSk7Sj12LmZpbmQoInRib2R5Iik7TT1KLmZpbmQoInRkIikuc2xpY2UoMCwtMSk7az1NLmZpbmQoImRpdi5mYy1kYXktY29udGVudCBkaXYiKTtEPU0uZXEoMCk7Wj1ELmZpbmQoIj4gZGl2Iik7YWIoRi5hZGQoRi5maW5kKCJ0ciIpKSk7YWIoSi5hZGQoSi5maW5kKCJ0ciIpKSk7YWE9Ri5maW5kKCJ0aDpmaXJzdCIpO3ZhPXYuZmluZCgiLmZjLWFnZW5kYS1ndXR0ZXIiKTtqYT1tKCI8ZGl2IHN0eWxlPSdwb3NpdGlvbjphYnNvbHV0ZTt6LWluZGV4OjI7bGVmdDowO3dpZHRoOjEwMCUnLz4iKS5hcHBlbmRUbyhhKTsKK2lmKGkoImFsbERheVNsb3QiKSl7aWE9bSgiPGRpdiBzdHlsZT0ncG9zaXRpb246YWJzb2x1dGU7ei1pbmRleDo4O3RvcDowO2xlZnQ6MCcvPiIpLmFwcGVuZFRvKGphKTt4PSI8dGFibGUgc3R5bGU9J3dpZHRoOjEwMCUnIGNsYXNzPSdmYy1hZ2VuZGEtYWxsZGF5JyBjZWxsc3BhY2luZz0nMCc+PHRyPjx0aCBjbGFzcz0nIitoKyIgZmMtYWdlbmRhLWF4aXMnPiIraSgiYWxsRGF5VGV4dCIpKyI8L3RoPjx0ZD48ZGl2IGNsYXNzPSdmYy1kYXktY29udGVudCc+PGRpdiBzdHlsZT0ncG9zaXRpb246cmVsYXRpdmUnLz48L2Rpdj48L3RkPjx0aCBjbGFzcz0nIitoKyIgZmMtYWdlbmRhLWd1dHRlcic+Jm5ic3A7PC90aD48L3RyPjwvdGFibGU+IjtsYT1tKHgpLmFwcGVuZFRvKGphKTskPWxhLmZpbmQoInRyIik7cSgkLmZpbmQoInRkIikpO2FhPWFhLmFkZChsYS5maW5kKCJ0aDpmaXJzdCIpKTt2YT12YS5hZGQobGEuZmluZCgidGguZmMtYWdlbmRhLWd1dHRlciIpKTtqYS5hcHBlbmQoIjxkaXYgY2xhc3M9J2ZjLWFnZW5kYS1kaXZpZGVyICIrCitoKyInPjxkaXYgY2xhc3M9J2ZjLWFnZW5kYS1kaXZpZGVyLWlubmVyJy8+PC9kaXY+Iil9ZWxzZSBpYT1tKFtdKTt3PW0oIjxkaXYgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO3dpZHRoOjEwMCU7b3ZlcmZsb3cteDpoaWRkZW47b3ZlcmZsb3cteTphdXRvJy8+IikuYXBwZW5kVG8oamEpO0k9bSgiPGRpdiBzdHlsZT0ncG9zaXRpb246cmVsYXRpdmU7d2lkdGg6MTAwJTtvdmVyZmxvdzpoaWRkZW4nLz4iKS5hcHBlbmRUbyh3KTtSPW0oIjxkaXYgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6ODt0b3A6MDtsZWZ0OjAnLz4iKS5hcHBlbmRUbyhJKTt4PSI8dGFibGUgY2xhc3M9J2ZjLWFnZW5kYS1zbG90cycgc3R5bGU9J3dpZHRoOjEwMCUnIGNlbGxzcGFjaW5nPScwJz48dGJvZHk+Ijt0YT16YigpO3phPXhhKE4odGEpLGJiKTt4YSh0YSxMYSk7Zm9yKEE9dGI9MDt0YTx6YTtBKyspe0RhPXRhLmdldE1pbnV0ZXMoKTt4Kz0iPHRyIGNsYXNzPSdmYy1zbG90IitBKyIgIisKKyghRGE/IiI6ImZjLW1pbm9yIikrIic+PHRoIGNsYXNzPSdmYy1hZ2VuZGEtYXhpcyAiK2grIic+IisoIUVhfHwhRGE/cyh0YSxpKCJheGlzRm9ybWF0IikpOiImbmJzcDsiKSsiPC90aD48dGQgY2xhc3M9JyIrTysiJz48ZGl2IHN0eWxlPSdwb3NpdGlvbjpyZWxhdGl2ZSc+Jm5ic3A7PC9kaXY+PC90ZD48L3RyPiI7eGEodGEsaSgic2xvdE1pbnV0ZXMiKSk7dGIrK314Kz0iPC90Ym9keT48L3RhYmxlPiI7Vj1tKHgpLmFwcGVuZFRvKEkpO2VhPVYuZmluZCgiZGl2OmZpcnN0Iik7dShWLmZpbmQoInRkIikpO2FhPWFhLmFkZChWLmZpbmQoInRoOmZpcnN0IikpfWZ1bmN0aW9uIGwoKXt2YXIgaCxPLHgsQSx0YT1LYShuZXcgRGF0ZSk7Zm9yKGg9MDtoPEJhO2grKyl7QT11YShoKTtPPXIuZXEoaCk7Ty5odG1sKHMoQSxWYikpO3g9TS5lcShoKTsrQT09K3RhP3guYWRkQ2xhc3MoV2ErIi1zdGF0ZS1oaWdobGlnaHQgZmMtdG9kYXkiKTp4LnJlbW92ZUNsYXNzKFdhKyItc3RhdGUtaGlnaGxpZ2h0IGZjLXRvZGF5Iik7CityYihPLmFkZCh4KSxBKX19ZnVuY3Rpb24gaihoLE8pe2lmKGg9PT1tYSloPVdiO1diPWg7dWI9e307dmFyIHg9Si5wb3NpdGlvbigpLnRvcCxBPXcucG9zaXRpb24oKS50b3A7aD1NYXRoLm1pbihoLXgsVi5oZWlnaHQoKStBKzEpO1ouaGVpZ2h0KGgtU2EoRCkpO2phLmNzcygidG9wIix4KTt3LmhlaWdodChoLUEtMSk7WGE9ZWEuaGVpZ2h0KCkrMTtPJiZ5KCl9ZnVuY3Rpb24gdChoKXtHYT1oO2NiLmNsZWFyKCk7TWE9MDtWYShhYS53aWR0aCgiIikuZWFjaChmdW5jdGlvbihPLHgpe01hPU1hdGgubWF4KE1hLG0oeCkub3V0ZXJXaWR0aCgpKX0pLE1hKTtoPXdbMF0uY2xpZW50V2lkdGg7aWYodmI9dy53aWR0aCgpLWgpe1ZhKHZhLHZiKTt2YS5zaG93KCkucHJldigpLnJlbW92ZUNsYXNzKCJmYy1sYXN0Iil9ZWxzZSB2YS5oaWRlKCkucHJldigpLmFkZENsYXNzKCJmYy1sYXN0Iik7ZGI9TWF0aC5mbG9vcigoaC1NYSkvQmEpO1ZhKHIuc2xpY2UoMCwtMSksZGIpfWZ1bmN0aW9uIHkoKXtmdW5jdGlvbiBoKCl7dy5zY3JvbGxUb3AoQSl9Cit2YXIgTz16YigpLHg9TihPKTt4LnNldEhvdXJzKGkoImZpcnN0SG91ciIpKTt2YXIgQT1jYShPLHgpKzE7aCgpO3NldFRpbWVvdXQoaCwwKX1mdW5jdGlvbiBTKCl7WGI9dy5zY3JvbGxUb3AoKX1mdW5jdGlvbiBRKCl7dy5zY3JvbGxUb3AoWGIpfWZ1bmN0aW9uIHEoaCl7aC5jbGljayhmYSkubW91c2Vkb3duKFcpfWZ1bmN0aW9uIHUoaCl7aC5jbGljayhmYSkubW91c2Vkb3duKEgpfWZ1bmN0aW9uIGZhKGgpe2lmKCFpKCJzZWxlY3RhYmxlIikpe3ZhciBPPU1hdGgubWluKEJhLTEsTWF0aC5mbG9vcigoaC5wYWdlWC12Lm9mZnNldCgpLmxlZnQtTWEpL2RiKSkseD11YShPKSxBPXRoaXMucGFyZW50Tm9kZS5jbGFzc05hbWUubWF0Y2goL2ZjLXNsb3QoXGQrKS8pO2lmKEEpe0E9cGFyc2VJbnQoQVsxXSkqaSgic2xvdE1pbnV0ZXMiKTt2YXIgdGE9TWF0aC5mbG9vcihBLzYwKTt4LnNldEhvdXJzKHRhKTt4LnNldE1pbnV0ZXMoQSU2MCtMYSk7QygiZGF5Q2xpY2siLE1bT10seCxmYWxzZSwKK2gpfWVsc2UgQygiZGF5Q2xpY2siLE1bT10seCx0cnVlLGgpfX1mdW5jdGlvbiBvYShoLE8seCl7eCYmTmEuYnVpbGQoKTt2YXIgQT1OKEsudmlzU3RhcnQpO2lmKFViKXt4PUNhKE8sQSkqSGErSWErMTtoPUNhKGgsQSkqSGErSWErMX1lbHNle3g9Q2EoaCxBKTtoPUNhKE8sQSl9eD1NYXRoLm1heCgwLHgpO2g9TWF0aC5taW4oQmEsaCk7eDxoJiZxKGdhKDAseCwwLGgtMSkpfWZ1bmN0aW9uIGdhKGgsTyx4LEEpe2g9TmEucmVjdChoLE8seCxBLGphKTtyZXR1cm4gRShoLGphKX1mdW5jdGlvbiByYShoLE8pe2Zvcih2YXIgeD1OKEsudmlzU3RhcnQpLEE9YmEoTih4KSwxKSx0YT0wO3RhPEJhO3RhKyspe3ZhciB6YT1uZXcgRGF0ZShNYXRoLm1heCh4LGgpKSxEYT1uZXcgRGF0ZShNYXRoLm1pbihBLE8pKTtpZih6YTxEYSl7dmFyIEVhPXRhKkhhK0lhO0VhPU5hLnJlY3QoMCxFYSwwLEVhLEkpO3phPWNhKHgsemEpO0RhPWNhKHgsRGEpO0VhLnRvcD16YTtFYS5oZWlnaHQ9RGEtemE7dShFKEVhLAorSSkpfWJhKHgsMSk7YmEoQSwxKX19ZnVuY3Rpb24gc2EoaCl7cmV0dXJuIGNiLmxlZnQoaCl9ZnVuY3Rpb24gaGEoaCl7cmV0dXJuIGNiLnJpZ2h0KGgpfWZ1bmN0aW9uIGRhKGgpe3JldHVybntyb3c6TWF0aC5mbG9vcihDYShoLEsudmlzU3RhcnQpLzcpLGNvbDpVKGguZ2V0RGF5KCkpfX1mdW5jdGlvbiBuYShoKXt2YXIgTz11YShoLmNvbCk7aD1oLnJvdztpKCJhbGxEYXlTbG90IikmJmgtLTtoPj0wJiZ4YShPLExhK2gqaSgic2xvdE1pbnV0ZXMiKSk7cmV0dXJuIE99ZnVuY3Rpb24gdWEoaCl7cmV0dXJuIGJhKE4oSy52aXNTdGFydCksaCpIYStJYSl9ZnVuY3Rpb24gcGEoaCl7cmV0dXJuIGkoImFsbERheVNsb3QiKSYmIWgucm93fWZ1bmN0aW9uIFUoaCl7cmV0dXJuKGgtTWF0aC5tYXgoVGIsU2IpK0JhKSVCYSpIYStJYX1mdW5jdGlvbiBjYShoLE8pe2g9TihoLHRydWUpO2lmKE88eGEoTihoKSxMYSkpcmV0dXJuIDA7aWYoTz49eGEoTihoKSxiYikpcmV0dXJuIFYuaGVpZ2h0KCk7CitoPWkoInNsb3RNaW51dGVzIik7Tz1PLmdldEhvdXJzKCkqNjArTy5nZXRNaW51dGVzKCktTGE7dmFyIHg9TWF0aC5mbG9vcihPL2gpLEE9dWJbeF07aWYoQT09PW1hKUE9dWJbeF09Vi5maW5kKCJ0cjplcSgiK3grIikgdGQgZGl2IilbMF0ub2Zmc2V0VG9wO3JldHVybiBNYXRoLm1heCgwLE1hdGgucm91bmQoQS0xK1hhKihPJWgvaCkpKX1mdW5jdGlvbiBrYSgpe3JldHVybntsZWZ0Ok1hLHJpZ2h0OkdhLXZifX1mdW5jdGlvbiBxYSgpe3JldHVybiAkfWZ1bmN0aW9uIEcoaCl7dmFyIE89TihoLnN0YXJ0KTtpZihoLmFsbERheSlyZXR1cm4gTztyZXR1cm4geGEoTyxpKCJkZWZhdWx0RXZlbnRNaW51dGVzIikpfWZ1bmN0aW9uIHAoaCxPKXtpZihPKXJldHVybiBOKGgpO3JldHVybiB4YShOKGgpLGkoInNsb3RNaW51dGVzIikpfWZ1bmN0aW9uIEwoaCxPLHgpe2lmKHgpaSgiYWxsRGF5U2xvdCIpJiZvYShoLGJhKE4oTyksMSksdHJ1ZSk7ZWxzZSBjKGgsTyl9ZnVuY3Rpb24gYyhoLE8pe3ZhciB4PQoraSgic2VsZWN0SGVscGVyIik7TmEuYnVpbGQoKTtpZih4KXt2YXIgQT1DYShoLEsudmlzU3RhcnQpKkhhK0lhO2lmKEE+PTAmJkE8QmEpe0E9TmEucmVjdCgwLEEsMCxBLEkpO3ZhciB0YT1jYShoLGgpLHphPWNhKGgsTyk7aWYoemE+dGEpe0EudG9wPXRhO0EuaGVpZ2h0PXphLXRhO0EubGVmdCs9MjtBLndpZHRoLT01O2lmKG0uaXNGdW5jdGlvbih4KSl7aWYoaD14KGgsTykpe0EucG9zaXRpb249ImFic29sdXRlIjtBLnpJbmRleD04O3dhPW0oaCkuY3NzKEEpLmFwcGVuZFRvKEkpfX1lbHNle0EuaXNTdGFydD10cnVlO0EuaXNFbmQ9dHJ1ZTt3YT1tKG8oe3RpdGxlOiIiLHN0YXJ0OmgsZW5kOk8sY2xhc3NOYW1lOlsiZmMtc2VsZWN0LWhlbHBlciJdLGVkaXRhYmxlOmZhbHNlfSxBKSk7d2EuY3NzKCJvcGFjaXR5IixpKCJkcmFnT3BhY2l0eSIpKX1pZih3YSl7dSh3YSk7SS5hcHBlbmQod2EpO1ZhKHdhLEEud2lkdGgsdHJ1ZSk7RWIod2EsQS5oZWlnaHQsdHJ1ZSl9fX19ZWxzZSByYShoLAorTyl9ZnVuY3Rpb24geigpe0IoKTtpZih3YSl7d2EucmVtb3ZlKCk7d2E9bnVsbH19ZnVuY3Rpb24gSChoKXtpZihoLndoaWNoPT0xJiZpKCJzZWxlY3RhYmxlIikpe1koaCk7dmFyIE87UmEuc3RhcnQoZnVuY3Rpb24oeCxBKXt6KCk7aWYoeCYmeC5jb2w9PUEuY29sJiYhcGEoeCkpe0E9bmEoQSk7eD1uYSh4KTtPPVtBLHhhKE4oQSksaSgic2xvdE1pbnV0ZXMiKSkseCx4YShOKHgpLGkoInNsb3RNaW51dGVzIikpXS5zb3J0KEdiKTtjKE9bMF0sT1szXSl9ZWxzZSBPPW51bGx9LGgpO20oZG9jdW1lbnQpLm9uZSgibW91c2V1cCIsZnVuY3Rpb24oeCl7UmEuc3RvcCgpO2lmKE8peytPWzBdPT0rT1sxXSYmVChPWzBdLGZhbHNlLHgpO24oT1swXSxPWzNdLGZhbHNlLHgpfX0pfX1mdW5jdGlvbiBUKGgsTyx4KXtDKCJkYXlDbGljayIsTVtVKGguZ2V0RGF5KCkpXSxoLE8seCl9ZnVuY3Rpb24gWChoLE8pe1JhLnN0YXJ0KGZ1bmN0aW9uKHgpe0IoKTtpZih4KWlmKHBhKHgpKWdhKHgucm93LAoreC5jb2wseC5yb3cseC5jb2wpO2Vsc2V7eD1uYSh4KTt2YXIgQT14YShOKHgpLGkoImRlZmF1bHRFdmVudE1pbnV0ZXMiKSk7cmEoeCxBKX19LE8pfWZ1bmN0aW9uIHlhKGgsTyx4KXt2YXIgQT1SYS5zdG9wKCk7QigpO0EmJkMoImRyb3AiLGgsbmEoQSkscGEoQSksTyx4KX12YXIgSz10aGlzO0sucmVuZGVyQWdlbmRhPWQ7Sy5zZXRXaWR0aD10O0suc2V0SGVpZ2h0PWo7Sy5iZWZvcmVIaWRlPVM7Sy5hZnRlclNob3c9UTtLLmRlZmF1bHRFdmVudEVuZD1HO0sudGltZVBvc2l0aW9uPWNhO0suZGF5T2ZXZWVrQ29sPVU7Sy5kYXRlQ2VsbD1kYTtLLmNlbGxEYXRlPW5hO0suY2VsbElzQWxsRGF5PXBhO0suYWxsRGF5Um93PXFhO0suYWxsRGF5Qm91bmRzPWthO0suZ2V0SG92ZXJMaXN0ZW5lcj1mdW5jdGlvbigpe3JldHVybiBSYX07Sy5jb2xDb250ZW50TGVmdD1zYTtLLmNvbENvbnRlbnRSaWdodD1oYTtLLmdldERheVNlZ21lbnRDb250YWluZXI9ZnVuY3Rpb24oKXtyZXR1cm4gaWF9OworSy5nZXRTbG90U2VnbWVudENvbnRhaW5lcj1mdW5jdGlvbigpe3JldHVybiBSfTtLLmdldE1pbk1pbnV0ZT1mdW5jdGlvbigpe3JldHVybiBMYX07Sy5nZXRNYXhNaW51dGU9ZnVuY3Rpb24oKXtyZXR1cm4gYmJ9O0suZ2V0Qm9keUNvbnRlbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gSX07Sy5nZXRSb3dDbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gMX07Sy5nZXRDb2xDbnQ9ZnVuY3Rpb24oKXtyZXR1cm4gQmF9O0suZ2V0Q29sV2lkdGg9ZnVuY3Rpb24oKXtyZXR1cm4gZGJ9O0suZ2V0U2xvdEhlaWdodD1mdW5jdGlvbigpe3JldHVybiBYYX07Sy5kZWZhdWx0U2VsZWN0aW9uRW5kPXA7Sy5yZW5kZXJEYXlPdmVybGF5PW9hO0sucmVuZGVyU2VsZWN0aW9uPUw7Sy5jbGVhclNlbGVjdGlvbj16O0sucmVwb3J0RGF5Q2xpY2s9VDtLLmRyYWdTdGFydD1YO0suZHJhZ1N0b3A9eWE7S2IuY2FsbChLLGEsYixlKTtMYi5jYWxsKEspO01iLmNhbGwoSyk7c2MuY2FsbChLKTt2YXIgaT1LLm9wdCxDPUsudHJpZ2dlciwKK1A9Sy5jbGVhckV2ZW50cyxFPUsucmVuZGVyT3ZlcmxheSxCPUsuY2xlYXJPdmVybGF5cyxuPUsucmVwb3J0U2VsZWN0aW9uLFk9Sy51bnNlbGVjdCxXPUsuZGF5U2VsZWN0aW9uTW91c2Vkb3duLG89Sy5zbG90U2VnSHRtbCxzPWIuZm9ybWF0RGF0ZSx2LEYscixKLE0sayxELFosamEsaWEsbGEsJCx3LEksUixWLGVhLGFhLHZhLHdhLEdhLFdiLE1hLGRiLHZiLFhhLFhiLEJhLHRiLE5hLFJhLGNiLHViPXt9LFdhLFRiLFNiLFViLEhhLElhLExhLGJiLFZiO3FiKGEuYWRkQ2xhc3MoImZjLWFnZW5kYSIpKTtOYT1uZXcgTmIoZnVuY3Rpb24oaCxPKXtmdW5jdGlvbiB4KGViKXtyZXR1cm4gTWF0aC5tYXgoRWEsTWF0aC5taW4odGMsZWIpKX12YXIgQSx0YSx6YTtyLmVhY2goZnVuY3Rpb24oZWIsdWMpe0E9bSh1Yyk7dGE9QS5vZmZzZXQoKS5sZWZ0O2lmKGViKXphWzFdPXRhO3phPVt0YV07T1tlYl09emF9KTt6YVsxXT10YStBLm91dGVyV2lkdGgoKTtpZihpKCJhbGxEYXlTbG90Iikpe0E9CiskO3RhPUEub2Zmc2V0KCkudG9wO2hbMF09W3RhLHRhK0Eub3V0ZXJIZWlnaHQoKV19Zm9yKHZhciBEYT1JLm9mZnNldCgpLnRvcCxFYT13Lm9mZnNldCgpLnRvcCx0Yz1FYSt3Lm91dGVySGVpZ2h0KCksZmI9MDtmYjx0YjtmYisrKWgucHVzaChbeChEYStYYSpmYikseChEYStYYSooZmIrMSkpXSl9KTtSYT1uZXcgT2IoTmEpO2NiPW5ldyBQYihmdW5jdGlvbihoKXtyZXR1cm4gay5lcShoKX0pfWZ1bmN0aW9uIHNjKCl7ZnVuY3Rpb24gYShvLHMpe3NhKG8pO3ZhciB2LEY9by5sZW5ndGgscj1bXSxKPVtdO2Zvcih2PTA7djxGO3YrKylvW3ZdLmFsbERheT9yLnB1c2gob1t2XSk6Si5wdXNoKG9bdl0pO2lmKHUoImFsbERheVNsb3QiKSl7TChlKHIpLHMpO25hKCl9ZyhkKEopLHMpfWZ1bmN0aW9uIGIoKXtoYSgpO3VhKCkuZW1wdHkoKTtwYSgpLmVtcHR5KCl9ZnVuY3Rpb24gZShvKXtvPW9iKG5iKG8sbS5tYXAobyxVYSkscS52aXNTdGFydCxxLnZpc0VuZCkpO3ZhciBzLHY9by5sZW5ndGgsCitGLHIsSixNPVtdO2ZvcihzPTA7czx2O3MrKyl7Rj1vW3NdO2ZvcihyPTA7cjxGLmxlbmd0aDtyKyspe0o9RltyXTtKLnJvdz0wO0oubGV2ZWw9cztNLnB1c2goSil9fXJldHVybiBNfWZ1bmN0aW9uIGQobyl7dmFyIHM9eigpLHY9a2EoKSxGPWNhKCkscj14YShOKHEudmlzU3RhcnQpLHYpLEo9bS5tYXAobyxmKSxNLGssRCxaLGphLGlhLGxhPVtdO2ZvcihNPTA7TTxzO00rKyl7az1vYihuYihvLEoscix4YShOKHIpLEYtdikpKTt2YyhrKTtmb3IoRD0wO0Q8ay5sZW5ndGg7RCsrKXtaPWtbRF07Zm9yKGphPTA7amE8Wi5sZW5ndGg7amErKyl7aWE9WltqYV07aWEuY29sPU07aWEubGV2ZWw9RDtsYS5wdXNoKGlhKX19YmEociwxLHRydWUpfXJldHVybiBsYX1mdW5jdGlvbiBmKG8pe3JldHVybiBvLmVuZD9OKG8uZW5kKTp4YShOKG8uc3RhcnQpLHUoImRlZmF1bHRFdmVudE1pbnV0ZXMiKSl9ZnVuY3Rpb24gZyhvLHMpe3ZhciB2LEY9by5sZW5ndGgscixKLE0sayxELFosamEsaWEsbGEsCiskPSIiLHcsSSxSPXt9LFY9e30sZWE9cGEoKSxhYTt2PXooKTtpZih3PXUoImlzUlRMIikpe0k9LTE7YWE9di0xfWVsc2V7ST0xO2FhPTB9Zm9yKHY9MDt2PEY7disrKXtyPW9bdl07Sj1yLmV2ZW50O009cWEoci5zdGFydCxyLnN0YXJ0KTtrPXFhKHIuc3RhcnQsci5lbmQpO0Q9ci5jb2w7Wj1yLmxldmVsO2phPXIuZm9yd2FyZHx8MDtpYT1HKEQqSSthYSk7bGE9cChEKkkrYWEpLWlhO2xhPU1hdGgubWluKGxhLTYsbGEqMC45NSk7RD1aP2xhLyhaK2phKzEpOmphPyhsYS8oamErMSktNikqMjpsYTtaPWlhK2xhLyhaK2phKzEpKloqSSsodz9sYS1EOjApO3IudG9wPU07ci5sZWZ0PVo7ci5vdXRlcldpZHRoPUQ7ci5vdXRlckhlaWdodD1rLU07JCs9bChKLHIpfWVhWzBdLmlubmVySFRNTD0kO3c9ZWEuY2hpbGRyZW4oKTtmb3Iodj0wO3Y8Rjt2Kyspe3I9b1t2XTtKPXIuZXZlbnQ7JD1tKHdbdl0pO0k9ZmEoImV2ZW50UmVuZGVyIixKLEosJCk7aWYoST09PWZhbHNlKSQucmVtb3ZlKCk7CitlbHNle2lmKEkmJkkhPT10cnVlKXskLnJlbW92ZSgpOyQ9bShJKS5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOnIudG9wLGxlZnQ6ci5sZWZ0fSkuYXBwZW5kVG8oZWEpfXIuZWxlbWVudD0kO2lmKEouX2lkPT09cyl0KEosJCxyKTtlbHNlICRbMF0uX2ZjaT12O3lhKEosJCl9fURiKGVhLG8sdCk7Zm9yKHY9MDt2PEY7disrKXtyPW9bdl07aWYoJD1yLmVsZW1lbnQpe0o9UltzPXIua2V5PUliKCRbMF0pXTtyLnZzaWRlcz1KPT09bWE/KFJbc109U2EoJCx0cnVlKSk6SjtKPVZbc107ci5oc2lkZXM9Sj09PW1hPyhWW3NdPXBiKCQsdHJ1ZSkpOko7cz0kLmZpbmQoImRpdi5mYy1ldmVudC1jb250ZW50Iik7aWYocy5sZW5ndGgpci5jb250ZW50VG9wPXNbMF0ub2Zmc2V0VG9wfX1mb3Iodj0wO3Y8Rjt2Kyspe3I9b1t2XTtpZigkPXIuZWxlbWVudCl7JFswXS5zdHlsZS53aWR0aD1NYXRoLm1heCgwLHIub3V0ZXJXaWR0aC1yLmhzaWRlcykrInB4IjtSPU1hdGgubWF4KDAsci5vdXRlckhlaWdodC0KK3IudnNpZGVzKTskWzBdLnN0eWxlLmhlaWdodD1SKyJweCI7Sj1yLmV2ZW50O2lmKHIuY29udGVudFRvcCE9PW1hJiZSLXIuY29udGVudFRvcDwxMCl7JC5maW5kKCJkaXYuZmMtZXZlbnQtdGltZSIpLnRleHQoWShKLnN0YXJ0LHUoInRpbWVGb3JtYXQiKSkrIiAtICIrSi50aXRsZSk7JC5maW5kKCJkaXYuZmMtZXZlbnQtdGl0bGUiKS5yZW1vdmUoKX1mYSgiZXZlbnRBZnRlclJlbmRlciIsSixKLCQpfX19ZnVuY3Rpb24gbChvLHMpe3ZhciB2PSI8IixGPW8udXJsLHI9SmIobyx1KSxKPXI/IiBzdHlsZT0nIityKyInIjoiIixNPVsiZmMtZXZlbnQiLCJmYy1ldmVudC1za2luIiwiZmMtZXZlbnQtdmVydCJdO29hKG8pJiZNLnB1c2goImZjLWV2ZW50LWRyYWdnYWJsZSIpO3MuaXNTdGFydCYmTS5wdXNoKCJmYy1jb3JuZXItdG9wIik7cy5pc0VuZCYmTS5wdXNoKCJmYy1jb3JuZXItYm90dG9tIik7TT1NLmNvbmNhdChvLmNsYXNzTmFtZSk7aWYoby5zb3VyY2UpTT1NLmNvbmNhdChvLnNvdXJjZS5jbGFzc05hbWV8fAorW10pO3YrPUY/ImEgaHJlZj0nIitRYShvLnVybCkrIiciOiJkaXYiO3YrPSIgY2xhc3M9JyIrTS5qb2luKCIgIikrIicgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6ODt0b3A6IitzLnRvcCsicHg7bGVmdDoiK3MubGVmdCsicHg7IityKyInPjxkaXYgY2xhc3M9J2ZjLWV2ZW50LWlubmVyIGZjLWV2ZW50LXNraW4nIitKKyI+PGRpdiBjbGFzcz0nZmMtZXZlbnQtaGVhZCBmYy1ldmVudC1za2luJyIrSisiPjxkaXYgY2xhc3M9J2ZjLWV2ZW50LXRpbWUnPiIrUWEoVyhvLnN0YXJ0LG8uZW5kLHUoInRpbWVGb3JtYXQiKSkpKyI8L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSdmYy1ldmVudC1jb250ZW50Jz48ZGl2IGNsYXNzPSdmYy1ldmVudC10aXRsZSc+IitRYShvLnRpdGxlKSsiPC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0nZmMtZXZlbnQtYmcnPjwvZGl2PjwvZGl2PiI7aWYocy5pc0VuZCYmZ2Eobykpdis9IjxkaXYgY2xhc3M9J3VpLXJlc2l6YWJsZS1oYW5kbGUgdWktcmVzaXphYmxlLXMnPj08L2Rpdj4iOwordis9IjwvIisoRj8iYSI6ImRpdiIpKyI+IjtyZXR1cm4gdn1mdW5jdGlvbiBqKG8scyx2KXtvYShvKSYmeShvLHMsdi5pc1N0YXJ0KTt2LmlzRW5kJiZnYShvKSYmYyhvLHMsdik7ZGEobyxzKX1mdW5jdGlvbiB0KG8scyx2KXt2YXIgRj1zLmZpbmQoImRpdi5mYy1ldmVudC10aW1lIik7b2EobykmJlMobyxzLEYpO3YuaXNFbmQmJmdhKG8pJiZRKG8scyxGKTtkYShvLHMpfWZ1bmN0aW9uIHkobyxzLHYpe2Z1bmN0aW9uIEYoKXtpZighTSl7cy53aWR0aChyKS5oZWlnaHQoIiIpLmRyYWdnYWJsZSgib3B0aW9uIiwiZ3JpZCIsbnVsbCk7TT10cnVlfX12YXIgcixKLE09dHJ1ZSxrLEQ9dSgiaXNSVEwiKT8tMToxLFo9VSgpLGphPUgoKSxpYT1UKCksbGE9a2EoKTtzLmRyYWdnYWJsZSh7ekluZGV4Ojksb3BhY2l0eTp1KCJkcmFnT3BhY2l0eSIsIm1vbnRoIikscmV2ZXJ0RHVyYXRpb246dSgiZHJhZ1JldmVydER1cmF0aW9uIiksc3RhcnQ6ZnVuY3Rpb24oJCx3KXtmYSgiZXZlbnREcmFnU3RhcnQiLAorcyxvLCQsdyk7aShvLHMpO3I9cy53aWR0aCgpO1ouc3RhcnQoZnVuY3Rpb24oSSxSLFYsZWEpe0IoKTtpZihJKXtKPWZhbHNlO2s9ZWEqRDtpZihJLnJvdylpZih2KXtpZihNKXtzLndpZHRoKGphLTEwKTtFYihzLGlhKk1hdGgucm91bmQoKG8uZW5kPyhvLmVuZC1vLnN0YXJ0KS93Yzp1KCJkZWZhdWx0RXZlbnRNaW51dGVzIikpL3UoInNsb3RNaW51dGVzIikpKTtzLmRyYWdnYWJsZSgib3B0aW9uIiwiZ3JpZCIsW2phLDFdKTtNPWZhbHNlfX1lbHNlIEo9dHJ1ZTtlbHNle0UoYmEoTihvLnN0YXJ0KSxrKSxiYShVYShvKSxrKSk7RigpfUo9Snx8TSYmIWt9ZWxzZXtGKCk7Sj10cnVlfXMuZHJhZ2dhYmxlKCJvcHRpb24iLCJyZXZlcnQiLEopfSwkLCJkcmFnIil9LHN0b3A6ZnVuY3Rpb24oJCx3KXtaLnN0b3AoKTtCKCk7ZmEoImV2ZW50RHJhZ1N0b3AiLHMsbywkLHcpO2lmKEope0YoKTtzLmNzcygiZmlsdGVyIiwiIik7SyhvLHMpfWVsc2V7dmFyIEk9MDtNfHwoST1NYXRoLnJvdW5kKChzLm9mZnNldCgpLnRvcC0KK1goKS5vZmZzZXQoKS50b3ApL2lhKSp1KCJzbG90TWludXRlcyIpK2xhLShvLnN0YXJ0LmdldEhvdXJzKCkqNjArby5zdGFydC5nZXRNaW51dGVzKCkpKTtDKHRoaXMsbyxrLEksTSwkLHcpfX19KX1mdW5jdGlvbiBTKG8scyx2KXtmdW5jdGlvbiBGKEkpe3ZhciBSPXhhKE4oby5zdGFydCksSSksVjtpZihvLmVuZClWPXhhKE4oby5lbmQpLEkpO3YudGV4dChXKFIsVix1KCJ0aW1lRm9ybWF0IikpKX1mdW5jdGlvbiByKCl7aWYoTSl7di5jc3MoImRpc3BsYXkiLCIiKTtzLmRyYWdnYWJsZSgib3B0aW9uIiwiZ3JpZCIsWyQsd10pO009ZmFsc2V9fXZhciBKLE09ZmFsc2UsayxELFosamE9dSgiaXNSVEwiKT8tMToxLGlhPVUoKSxsYT16KCksJD1IKCksdz1UKCk7cy5kcmFnZ2FibGUoe3pJbmRleDo5LHNjcm9sbDpmYWxzZSxncmlkOlskLHddLGF4aXM6bGE9PTE/InkiOmZhbHNlLG9wYWNpdHk6dSgiZHJhZ09wYWNpdHkiKSxyZXZlcnREdXJhdGlvbjp1KCJkcmFnUmV2ZXJ0RHVyYXRpb24iKSwKK3N0YXJ0OmZ1bmN0aW9uKEksUil7ZmEoImV2ZW50RHJhZ1N0YXJ0IixzLG8sSSxSKTtpKG8scyk7Sj1zLnBvc2l0aW9uKCk7RD1aPTA7aWEuc3RhcnQoZnVuY3Rpb24oVixlYSxhYSx2YSl7cy5kcmFnZ2FibGUoIm9wdGlvbiIsInJldmVydCIsIVYpO0IoKTtpZihWKXtrPXZhKmphO2lmKHUoImFsbERheVNsb3QiKSYmIVYucm93KXtpZighTSl7TT10cnVlO3YuaGlkZSgpO3MuZHJhZ2dhYmxlKCJvcHRpb24iLCJncmlkIixudWxsKX1FKGJhKE4oby5zdGFydCksayksYmEoVWEobyksaykpfWVsc2UgcigpfX0sSSwiZHJhZyIpfSxkcmFnOmZ1bmN0aW9uKEksUil7RD1NYXRoLnJvdW5kKChSLnBvc2l0aW9uLnRvcC1KLnRvcCkvdykqdSgic2xvdE1pbnV0ZXMiKTtpZihEIT1aKXtNfHxGKEQpO1o9RH19LHN0b3A6ZnVuY3Rpb24oSSxSKXt2YXIgVj1pYS5zdG9wKCk7QigpO2ZhKCJldmVudERyYWdTdG9wIixzLG8sSSxSKTtpZihWJiYoa3x8RHx8TSkpQyh0aGlzLG8sayxNPzA6RCxNLEksUik7CitlbHNle3IoKTtzLmNzcygiZmlsdGVyIiwiIik7cy5jc3MoSik7RigwKTtLKG8scyl9fX0pfWZ1bmN0aW9uIFEobyxzLHYpe3ZhciBGLHIsSj1UKCk7cy5yZXNpemFibGUoe2hhbmRsZXM6e3M6ImRpdi51aS1yZXNpemFibGUtcyJ9LGdyaWQ6SixzdGFydDpmdW5jdGlvbihNLGspe0Y9cj0wO2kobyxzKTtzLmNzcygiei1pbmRleCIsOSk7ZmEoImV2ZW50UmVzaXplU3RhcnQiLHRoaXMsbyxNLGspfSxyZXNpemU6ZnVuY3Rpb24oTSxrKXtGPU1hdGgucm91bmQoKE1hdGgubWF4KEoscy5oZWlnaHQoKSktay5vcmlnaW5hbFNpemUuaGVpZ2h0KS9KKTtpZihGIT1yKXt2LnRleHQoVyhvLnN0YXJ0LCFGJiYhby5lbmQ/bnVsbDp4YShyYShvKSx1KCJzbG90TWludXRlcyIpKkYpLHUoInRpbWVGb3JtYXQiKSkpO3I9Rn19LHN0b3A6ZnVuY3Rpb24oTSxrKXtmYSgiZXZlbnRSZXNpemVTdG9wIix0aGlzLG8sTSxrKTtpZihGKVAodGhpcyxvLDAsdSgic2xvdE1pbnV0ZXMiKSpGLE0sayk7ZWxzZXtzLmNzcygiei1pbmRleCIsCis4KTtLKG8scyl9fX0pfXZhciBxPXRoaXM7cS5yZW5kZXJFdmVudHM9YTtxLmNvbXBpbGVEYXlTZWdzPWU7cS5jbGVhckV2ZW50cz1iO3Euc2xvdFNlZ0h0bWw9bDtxLmJpbmREYXlTZWc9ajtRYi5jYWxsKHEpO3ZhciB1PXEub3B0LGZhPXEudHJpZ2dlcixvYT1xLmlzRXZlbnREcmFnZ2FibGUsZ2E9cS5pc0V2ZW50UmVzaXphYmxlLHJhPXEuZXZlbnRFbmQsc2E9cS5yZXBvcnRFdmVudHMsaGE9cS5yZXBvcnRFdmVudENsZWFyLGRhPXEuZXZlbnRFbGVtZW50SGFuZGxlcnMsbmE9cS5zZXRIZWlnaHQsdWE9cS5nZXREYXlTZWdtZW50Q29udGFpbmVyLHBhPXEuZ2V0U2xvdFNlZ21lbnRDb250YWluZXIsVT1xLmdldEhvdmVyTGlzdGVuZXIsY2E9cS5nZXRNYXhNaW51dGUsa2E9cS5nZXRNaW5NaW51dGUscWE9cS50aW1lUG9zaXRpb24sRz1xLmNvbENvbnRlbnRMZWZ0LHA9cS5jb2xDb250ZW50UmlnaHQsTD1xLnJlbmRlckRheVNlZ3MsYz1xLnJlc2l6YWJsZURheUV2ZW50LHo9cS5nZXRDb2xDbnQsCitIPXEuZ2V0Q29sV2lkdGgsVD1xLmdldFNsb3RIZWlnaHQsWD1xLmdldEJvZHlDb250ZW50LHlhPXEucmVwb3J0RXZlbnRFbGVtZW50LEs9cS5zaG93RXZlbnRzLGk9cS5oaWRlRXZlbnRzLEM9cS5ldmVudERyb3AsUD1xLmV2ZW50UmVzaXplLEU9cS5yZW5kZXJEYXlPdmVybGF5LEI9cS5jbGVhck92ZXJsYXlzLG49cS5jYWxlbmRhcixZPW4uZm9ybWF0RGF0ZSxXPW4uZm9ybWF0RGF0ZXN9ZnVuY3Rpb24gdmMoYSl7dmFyIGIsZSxkLGYsZyxsO2ZvcihiPWEubGVuZ3RoLTE7Yj4wO2ItLSl7Zj1hW2JdO2ZvcihlPTA7ZTxmLmxlbmd0aDtlKyspe2c9ZltlXTtmb3IoZD0wO2Q8YVtiLTFdLmxlbmd0aDtkKyspe2w9YVtiLTFdW2RdO2lmKENiKGcsbCkpbC5mb3J3YXJkPU1hdGgubWF4KGwuZm9yd2FyZHx8MCwoZy5mb3J3YXJkfHwwKSsxKX19fX1mdW5jdGlvbiBLYihhLGIsZSl7ZnVuY3Rpb24gZChHLHApe0c9cWFbR107aWYodHlwZW9mIEc9PSJvYmplY3QiKXJldHVybiBqYihHLHB8fGUpOworcmV0dXJuIEd9ZnVuY3Rpb24gZihHLHApe3JldHVybiBiLnRyaWdnZXIuYXBwbHkoYixbRyxwfHxkYV0uY29uY2F0KEFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywyKSxbZGFdKSl9ZnVuY3Rpb24gZyhHKXtyZXR1cm4gaihHKSYmIWQoImRpc2FibGVEcmFnZ2luZyIpfWZ1bmN0aW9uIGwoRyl7cmV0dXJuIGooRykmJiFkKCJkaXNhYmxlUmVzaXppbmciKX1mdW5jdGlvbiBqKEcpe3JldHVybiBUYShHLmVkaXRhYmxlLChHLnNvdXJjZXx8e30pLmVkaXRhYmxlLGQoImVkaXRhYmxlIikpfWZ1bmN0aW9uIHQoRyl7VT17fTt2YXIgcCxMPUcubGVuZ3RoLGM7Zm9yKHA9MDtwPEw7cCsrKXtjPUdbcF07aWYoVVtjLl9pZF0pVVtjLl9pZF0ucHVzaChjKTtlbHNlIFVbYy5faWRdPVtjXX19ZnVuY3Rpb24geShHKXtyZXR1cm4gRy5lbmQ/TihHLmVuZCk6bmEoRyl9ZnVuY3Rpb24gUyhHLHApe2NhLnB1c2gocCk7aWYoa2FbRy5faWRdKWthW0cuX2lkXS5wdXNoKHApO2Vsc2Uga2FbRy5faWRdPQorW3BdfWZ1bmN0aW9uIFEoKXtjYT1bXTtrYT17fX1mdW5jdGlvbiBxKEcscCl7cC5jbGljayhmdW5jdGlvbihMKXtpZighcC5oYXNDbGFzcygidWktZHJhZ2dhYmxlLWRyYWdnaW5nIikmJiFwLmhhc0NsYXNzKCJ1aS1yZXNpemFibGUtcmVzaXppbmciKSlyZXR1cm4gZigiZXZlbnRDbGljayIsdGhpcyxHLEwpfSkuaG92ZXIoZnVuY3Rpb24oTCl7ZigiZXZlbnRNb3VzZW92ZXIiLHRoaXMsRyxMKX0sZnVuY3Rpb24oTCl7ZigiZXZlbnRNb3VzZW91dCIsdGhpcyxHLEwpfSl9ZnVuY3Rpb24gdShHLHApe29hKEcscCwic2hvdyIpfWZ1bmN0aW9uIGZhKEcscCl7b2EoRyxwLCJoaWRlIil9ZnVuY3Rpb24gb2EoRyxwLEwpe0c9a2FbRy5faWRdO3ZhciBjLHo9Ry5sZW5ndGg7Zm9yKGM9MDtjPHo7YysrKWlmKCFwfHxHW2NdWzBdIT1wWzBdKUdbY11bTF0oKX1mdW5jdGlvbiBnYShHLHAsTCxjLHosSCxUKXt2YXIgWD1wLmFsbERheSx5YT1wLl9pZDtzYShVW3lhXSxMLGMseik7ZigiZXZlbnREcm9wIiwKK0cscCxMLGMseixmdW5jdGlvbigpe3NhKFVbeWFdLC1MLC1jLFgpO3BhKHlhKX0sSCxUKTtwYSh5YSl9ZnVuY3Rpb24gcmEoRyxwLEwsYyx6LEgpe3ZhciBUPXAuX2lkO2hhKFVbVF0sTCxjKTtmKCJldmVudFJlc2l6ZSIsRyxwLEwsYyxmdW5jdGlvbigpe2hhKFVbVF0sLUwsLWMpO3BhKFQpfSx6LEgpO3BhKFQpfWZ1bmN0aW9uIHNhKEcscCxMLGMpe0w9THx8MDtmb3IodmFyIHosSD1HLmxlbmd0aCxUPTA7VDxIO1QrKyl7ej1HW1RdO2lmKGMhPT1tYSl6LmFsbERheT1jO3hhKGJhKHouc3RhcnQscCx0cnVlKSxMKTtpZih6LmVuZCl6LmVuZD14YShiYSh6LmVuZCxwLHRydWUpLEwpO3VhKHoscWEpfX1mdW5jdGlvbiBoYShHLHAsTCl7TD1MfHwwO2Zvcih2YXIgYyx6PUcubGVuZ3RoLEg9MDtIPHo7SCsrKXtjPUdbSF07Yy5lbmQ9eGEoYmEoeShjKSxwLHRydWUpLEwpO3VhKGMscWEpfX12YXIgZGE9dGhpcztkYS5lbGVtZW50PWE7ZGEuY2FsZW5kYXI9YjtkYS5uYW1lPWU7ZGEub3B0PQorZDtkYS50cmlnZ2VyPWY7ZGEuaXNFdmVudERyYWdnYWJsZT1nO2RhLmlzRXZlbnRSZXNpemFibGU9bDtkYS5yZXBvcnRFdmVudHM9dDtkYS5ldmVudEVuZD15O2RhLnJlcG9ydEV2ZW50RWxlbWVudD1TO2RhLnJlcG9ydEV2ZW50Q2xlYXI9UTtkYS5ldmVudEVsZW1lbnRIYW5kbGVycz1xO2RhLnNob3dFdmVudHM9dTtkYS5oaWRlRXZlbnRzPWZhO2RhLmV2ZW50RHJvcD1nYTtkYS5ldmVudFJlc2l6ZT1yYTt2YXIgbmE9ZGEuZGVmYXVsdEV2ZW50RW5kLHVhPWIubm9ybWFsaXplRXZlbnQscGE9Yi5yZXBvcnRFdmVudENoYW5nZSxVPXt9LGNhPVtdLGthPXt9LHFhPWIub3B0aW9uc31mdW5jdGlvbiBRYigpe2Z1bmN0aW9uIGEoaSxDKXt2YXIgUD16KCksRT1wYSgpLEI9VSgpLG49MCxZLFcsbz1pLmxlbmd0aCxzLHY7UFswXS5pbm5lckhUTUw9ZShpKTtkKGksUC5jaGlsZHJlbigpKTtmKGkpO2coaSxQLEMpO2woaSk7aihpKTt0KGkpO0M9eSgpO2ZvcihQPTA7UDxFO1ArKyl7WT1bXTtmb3IoVz0KKzA7VzxCO1crKylZW1ddPTA7Zm9yKDtuPG8mJihzPWlbbl0pLnJvdz09UDspe1c9SGIoWS5zbGljZShzLnN0YXJ0Q29sLHMuZW5kQ29sKSk7cy50b3A9VztXKz1zLm91dGVySGVpZ2h0O2Zvcih2PXMuc3RhcnRDb2w7djxzLmVuZENvbDt2KyspWVt2XT1XO24rK31DW1BdLmhlaWdodChIYihZKSl9UShpLFMoQykpfWZ1bmN0aW9uIGIoaSxDLFApe3ZhciBFPW0oIjxkaXYvPiIpLEI9eigpLG49aS5sZW5ndGgsWTtFWzBdLmlubmVySFRNTD1lKGkpO0U9RS5jaGlsZHJlbigpO0IuYXBwZW5kKEUpO2QoaSxFKTtsKGkpO2ooaSk7dChpKTtRKGksUyh5KCkpKTtFPVtdO2ZvcihCPTA7QjxuO0IrKylpZihZPWlbQl0uZWxlbWVudCl7aVtCXS5yb3c9PT1DJiZZLmNzcygidG9wIixQKTtFLnB1c2goWVswXSl9cmV0dXJuIG0oRSl9ZnVuY3Rpb24gZShpKXt2YXIgQz1mYSgiaXNSVEwiKSxQLEU9aS5sZW5ndGgsQixuLFksVztQPWthKCk7dmFyIG89UC5sZWZ0LHM9UC5yaWdodCx2LEYscixKLE0saz0KKyIiO2ZvcihQPTA7UDxFO1ArKyl7Qj1pW1BdO249Qi5ldmVudDtXPVsiZmMtZXZlbnQiLCJmYy1ldmVudC1za2luIiwiZmMtZXZlbnQtaG9yaSJdO2dhKG4pJiZXLnB1c2goImZjLWV2ZW50LWRyYWdnYWJsZSIpO2lmKEMpe0IuaXNTdGFydCYmVy5wdXNoKCJmYy1jb3JuZXItcmlnaHQiKTtCLmlzRW5kJiZXLnB1c2goImZjLWNvcm5lci1sZWZ0Iik7dj1wKEIuZW5kLmdldERheSgpLTEpO0Y9cChCLnN0YXJ0LmdldERheSgpKTtyPUIuaXNFbmQ/cWEodik6bztKPUIuaXNTdGFydD9HKEYpOnN9ZWxzZXtCLmlzU3RhcnQmJlcucHVzaCgiZmMtY29ybmVyLWxlZnQiKTtCLmlzRW5kJiZXLnB1c2goImZjLWNvcm5lci1yaWdodCIpO3Y9cChCLnN0YXJ0LmdldERheSgpKTtGPXAoQi5lbmQuZ2V0RGF5KCktMSk7cj1CLmlzU3RhcnQ/cWEodik6bztKPUIuaXNFbmQ/RyhGKTpzfVc9Vy5jb25jYXQobi5jbGFzc05hbWUpO2lmKG4uc291cmNlKVc9Vy5jb25jYXQobi5zb3VyY2UuY2xhc3NOYW1lfHwKK1tdKTtZPW4udXJsO009SmIobixmYSk7ays9WT8iPGEgaHJlZj0nIitRYShZKSsiJyI6IjxkaXYiO2srPSIgY2xhc3M9JyIrVy5qb2luKCIgIikrIicgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6ODtsZWZ0OiIrcisicHg7IitNKyInPjxkaXYgY2xhc3M9J2ZjLWV2ZW50LWlubmVyIGZjLWV2ZW50LXNraW4nIisoTT8iIHN0eWxlPSciK00rIiciOiIiKSsiPiI7aWYoIW4uYWxsRGF5JiZCLmlzU3RhcnQpays9IjxzcGFuIGNsYXNzPSdmYy1ldmVudC10aW1lJz4iK1FhKFQobi5zdGFydCxuLmVuZCxmYSgidGltZUZvcm1hdCIpKSkrIjwvc3Bhbj4iO2srPSI8c3BhbiBjbGFzcz0nZmMtZXZlbnQtdGl0bGUnPiIrUWEobi50aXRsZSkrIjwvc3Bhbj48L2Rpdj4iO2lmKEIuaXNFbmQmJnJhKG4pKWsrPSI8ZGl2IGNsYXNzPSd1aS1yZXNpemFibGUtaGFuZGxlIHVpLXJlc2l6YWJsZS0iKyhDPyJ3IjoiZSIpKyInPiZuYnNwOyZuYnNwOyZuYnNwOzwvZGl2PiI7ays9IjwvIisoWT8KKyJhIjoiZGl2IikrIj4iO0IubGVmdD1yO0Iub3V0ZXJXaWR0aD1KLXI7Qi5zdGFydENvbD12O0IuZW5kQ29sPUYrMX1yZXR1cm4ga31mdW5jdGlvbiBkKGksQyl7dmFyIFAsRT1pLmxlbmd0aCxCLG4sWTtmb3IoUD0wO1A8RTtQKyspe0I9aVtQXTtuPUIuZXZlbnQ7WT1tKENbUF0pO249b2EoImV2ZW50UmVuZGVyIixuLG4sWSk7aWYobj09PWZhbHNlKVkucmVtb3ZlKCk7ZWxzZXtpZihuJiZuIT09dHJ1ZSl7bj1tKG4pLmNzcyh7cG9zaXRpb246ImFic29sdXRlIixsZWZ0OkIubGVmdH0pO1kucmVwbGFjZVdpdGgobik7WT1ufUIuZWxlbWVudD1ZfX19ZnVuY3Rpb24gZihpKXt2YXIgQyxQPWkubGVuZ3RoLEUsQjtmb3IoQz0wO0M8UDtDKyspe0U9aVtDXTsoQj1FLmVsZW1lbnQpJiZoYShFLmV2ZW50LEIpfX1mdW5jdGlvbiBnKGksQyxQKXt2YXIgRSxCPWkubGVuZ3RoLG4sWSxXO2ZvcihFPTA7RTxCO0UrKyl7bj1pW0VdO2lmKFk9bi5lbGVtZW50KXtXPW4uZXZlbnQ7aWYoVy5faWQ9PT0KK1ApSChXLFksbik7ZWxzZSBZWzBdLl9mY2k9RX19RGIoQyxpLEgpfWZ1bmN0aW9uIGwoaSl7dmFyIEMsUD1pLmxlbmd0aCxFLEIsbixZLFc9e307Zm9yKEM9MDtDPFA7QysrKXtFPWlbQ107aWYoQj1FLmVsZW1lbnQpe249RS5rZXk9SWIoQlswXSk7WT1XW25dO2lmKFk9PT1tYSlZPVdbbl09cGIoQix0cnVlKTtFLmhzaWRlcz1ZfX19ZnVuY3Rpb24gaihpKXt2YXIgQyxQPWkubGVuZ3RoLEUsQjtmb3IoQz0wO0M8UDtDKyspe0U9aVtDXTtpZihCPUUuZWxlbWVudClCWzBdLnN0eWxlLndpZHRoPU1hdGgubWF4KDAsRS5vdXRlcldpZHRoLUUuaHNpZGVzKSsicHgifX1mdW5jdGlvbiB0KGkpe3ZhciBDLFA9aS5sZW5ndGgsRSxCLG4sWSxXPXt9O2ZvcihDPTA7QzxQO0MrKyl7RT1pW0NdO2lmKEI9RS5lbGVtZW50KXtuPUUua2V5O1k9V1tuXTtpZihZPT09bWEpWT1XW25dPUZiKEIpO0Uub3V0ZXJIZWlnaHQ9QlswXS5vZmZzZXRIZWlnaHQrWX19fWZ1bmN0aW9uIHkoKXt2YXIgaSxDPXBhKCksCitQPVtdO2ZvcihpPTA7aTxDO2krKylQW2ldPWNhKGkpLmZpbmQoInRkOmZpcnN0IGRpdi5mYy1kYXktY29udGVudCA+IGRpdiIpO3JldHVybiBQfWZ1bmN0aW9uIFMoaSl7dmFyIEMsUD1pLmxlbmd0aCxFPVtdO2ZvcihDPTA7QzxQO0MrKylFW0NdPWlbQ11bMF0ub2Zmc2V0VG9wO3JldHVybiBFfWZ1bmN0aW9uIFEoaSxDKXt2YXIgUCxFPWkubGVuZ3RoLEIsbjtmb3IoUD0wO1A8RTtQKyspe0I9aVtQXTtpZihuPUIuZWxlbWVudCl7blswXS5zdHlsZS50b3A9Q1tCLnJvd10rKEIudG9wfHwwKSsicHgiO0I9Qi5ldmVudDtvYSgiZXZlbnRBZnRlclJlbmRlciIsQixCLG4pfX19ZnVuY3Rpb24gcShpLEMsUCl7dmFyIEU9ZmEoImlzUlRMIiksQj1FPyJ3IjoiZSIsbj1DLmZpbmQoImRpdi51aS1yZXNpemFibGUtIitCKSxZPWZhbHNlO3FiKEMpO0MubW91c2Vkb3duKGZ1bmN0aW9uKFcpe1cucHJldmVudERlZmF1bHQoKX0pLmNsaWNrKGZ1bmN0aW9uKFcpe2lmKFkpe1cucHJldmVudERlZmF1bHQoKTsKK1cuc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCl9fSk7bi5tb3VzZWRvd24oZnVuY3Rpb24oVyl7ZnVuY3Rpb24gbyhpYSl7b2EoImV2ZW50UmVzaXplU3RvcCIsdGhpcyxpLGlhKTttKCJib2R5IikuY3NzKCJjdXJzb3IiLCIiKTtzLnN0b3AoKTt5YSgpO2smJnVhKHRoaXMsaSxrLDAsaWEpO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtZPWZhbHNlfSwwKX1pZihXLndoaWNoPT0xKXtZPXRydWU7dmFyIHM9dS5nZXRIb3Zlckxpc3RlbmVyKCksdj1wYSgpLEY9VSgpLHI9RT8tMToxLEo9RT9GLTE6MCxNPUMuY3NzKCJ0b3AiKSxrLEQsWj1tLmV4dGVuZCh7fSxpKSxqYT1MKGkuc3RhcnQpO0soKTttKCJib2R5IikuY3NzKCJjdXJzb3IiLEIrIi1yZXNpemUiKS5vbmUoIm1vdXNldXAiLG8pO29hKCJldmVudFJlc2l6ZVN0YXJ0Iix0aGlzLGksVyk7cy5zdGFydChmdW5jdGlvbihpYSxsYSl7aWYoaWEpe3ZhciAkPU1hdGgubWF4KGphLnJvdyxpYS5yb3cpO2lhPWlhLmNvbDtpZih2PT0xKSQ9MDsKK2lmKCQ9PWphLnJvdylpYT1FP01hdGgubWluKGphLmNvbCxpYSk6TWF0aC5tYXgoamEuY29sLGlhKTtrPSQqNytpYSpyK0otKGxhLnJvdyo3K2xhLmNvbCpyK0opO2xhPWJhKHNhKGkpLGssdHJ1ZSk7aWYoayl7Wi5lbmQ9bGE7JD1EO0Q9YihjKFtaXSksUC5yb3csTSk7RC5maW5kKCIqIikuY3NzKCJjdXJzb3IiLEIrIi1yZXNpemUiKTskJiYkLnJlbW92ZSgpO25hKGkpfWVsc2UgaWYoRCl7ZGEoaSk7RC5yZW1vdmUoKTtEPW51bGx9eWEoKTtYKGkuc3RhcnQsYmEoTihsYSksMSkpfX0sVyl9fSl9dmFyIHU9dGhpczt1LnJlbmRlckRheVNlZ3M9YTt1LnJlc2l6YWJsZURheUV2ZW50PXE7dmFyIGZhPXUub3B0LG9hPXUudHJpZ2dlcixnYT11LmlzRXZlbnREcmFnZ2FibGUscmE9dS5pc0V2ZW50UmVzaXphYmxlLHNhPXUuZXZlbnRFbmQsaGE9dS5yZXBvcnRFdmVudEVsZW1lbnQsZGE9dS5zaG93RXZlbnRzLG5hPXUuaGlkZUV2ZW50cyx1YT11LmV2ZW50UmVzaXplLHBhPXUuZ2V0Um93Q250LAorVT11LmdldENvbENudCxjYT11LmFsbERheVJvdyxrYT11LmFsbERheUJvdW5kcyxxYT11LmNvbENvbnRlbnRMZWZ0LEc9dS5jb2xDb250ZW50UmlnaHQscD11LmRheU9mV2Vla0NvbCxMPXUuZGF0ZUNlbGwsYz11LmNvbXBpbGVEYXlTZWdzLHo9dS5nZXREYXlTZWdtZW50Q29udGFpbmVyLEg9dS5iaW5kRGF5U2VnLFQ9dS5jYWxlbmRhci5mb3JtYXREYXRlcyxYPXUucmVuZGVyRGF5T3ZlcmxheSx5YT11LmNsZWFyT3ZlcmxheXMsSz11LmNsZWFyU2VsZWN0aW9ufWZ1bmN0aW9uIE1iKCl7ZnVuY3Rpb24gYShRLHEsdSl7YigpO3F8fChxPWooUSx1KSk7dChRLHEsdSk7ZShRLHEsdSl9ZnVuY3Rpb24gYihRKXtpZihTKXtTPWZhbHNlO3koKTtsKCJ1bnNlbGVjdCIsbnVsbCxRKX19ZnVuY3Rpb24gZShRLHEsdSxmYSl7Uz10cnVlO2woInNlbGVjdCIsbnVsbCxRLHEsdSxmYSl9ZnVuY3Rpb24gZChRKXt2YXIgcT1mLmNlbGxEYXRlLHU9Zi5jZWxsSXNBbGxEYXksZmE9Zi5nZXRIb3Zlckxpc3RlbmVyKCksCitvYT1mLnJlcG9ydERheUNsaWNrO2lmKFEud2hpY2g9PTEmJmcoInNlbGVjdGFibGUiKSl7YihRKTt2YXIgZ2E7ZmEuc3RhcnQoZnVuY3Rpb24ocmEsc2Epe3koKTtpZihyYSYmdShyYSkpe2dhPVtxKHNhKSxxKHJhKV0uc29ydChHYik7dChnYVswXSxnYVsxXSx0cnVlKX1lbHNlIGdhPW51bGx9LFEpO20oZG9jdW1lbnQpLm9uZSgibW91c2V1cCIsZnVuY3Rpb24ocmEpe2ZhLnN0b3AoKTtpZihnYSl7K2dhWzBdPT0rZ2FbMV0mJm9hKGdhWzBdLHRydWUscmEpO2UoZ2FbMF0sZ2FbMV0sdHJ1ZSxyYSl9fSl9fXZhciBmPXRoaXM7Zi5zZWxlY3Q9YTtmLnVuc2VsZWN0PWI7Zi5yZXBvcnRTZWxlY3Rpb249ZTtmLmRheVNlbGVjdGlvbk1vdXNlZG93bj1kO3ZhciBnPWYub3B0LGw9Zi50cmlnZ2VyLGo9Zi5kZWZhdWx0U2VsZWN0aW9uRW5kLHQ9Zi5yZW5kZXJTZWxlY3Rpb24seT1mLmNsZWFyU2VsZWN0aW9uLFM9ZmFsc2U7Zygic2VsZWN0YWJsZSIpJiZnKCJ1bnNlbGVjdEF1dG8iKSYmbShkb2N1bWVudCkubW91c2Vkb3duKGZ1bmN0aW9uKFEpe3ZhciBxPQorZygidW5zZWxlY3RDYW5jZWwiKTtpZihxKWlmKG0oUS50YXJnZXQpLnBhcmVudHMocSkubGVuZ3RoKXJldHVybjtiKFEpfSl9ZnVuY3Rpb24gTGIoKXtmdW5jdGlvbiBhKGcsbCl7dmFyIGo9Zi5zaGlmdCgpO2p8fChqPW0oIjxkaXYgY2xhc3M9J2ZjLWNlbGwtb3ZlcmxheScgc3R5bGU9J3Bvc2l0aW9uOmFic29sdXRlO3otaW5kZXg6MycvPiIpKTtqWzBdLnBhcmVudE5vZGUhPWxbMF0mJmouYXBwZW5kVG8obCk7ZC5wdXNoKGouY3NzKGcpLnNob3coKSk7cmV0dXJuIGp9ZnVuY3Rpb24gYigpe2Zvcih2YXIgZztnPWQuc2hpZnQoKTspZi5wdXNoKGcuaGlkZSgpLnVuYmluZCgpKX12YXIgZT10aGlzO2UucmVuZGVyT3ZlcmxheT1hO2UuY2xlYXJPdmVybGF5cz1iO3ZhciBkPVtdLGY9W119ZnVuY3Rpb24gTmIoYSl7dmFyIGI9dGhpcyxlLGQ7Yi5idWlsZD1mdW5jdGlvbigpe2U9W107ZD1bXTthKGUsZCl9O2IuY2VsbD1mdW5jdGlvbihmLGcpe3ZhciBsPWUubGVuZ3RoLGo9ZC5sZW5ndGgsCit0LHk9LTEsUz0tMTtmb3IodD0wO3Q8bDt0KyspaWYoZz49ZVt0XVswXSYmZzxlW3RdWzFdKXt5PXQ7YnJlYWt9Zm9yKHQ9MDt0PGo7dCsrKWlmKGY+PWRbdF1bMF0mJmY8ZFt0XVsxXSl7Uz10O2JyZWFrfXJldHVybiB5Pj0wJiZTPj0wP3tyb3c6eSxjb2w6U306bnVsbH07Yi5yZWN0PWZ1bmN0aW9uKGYsZyxsLGosdCl7dD10Lm9mZnNldCgpO3JldHVybnt0b3A6ZVtmXVswXS10LnRvcCxsZWZ0OmRbZ11bMF0tdC5sZWZ0LHdpZHRoOmRbal1bMV0tZFtnXVswXSxoZWlnaHQ6ZVtsXVsxXS1lW2ZdWzBdfX19ZnVuY3Rpb24gT2IoYSl7ZnVuY3Rpb24gYihqKXt4YyhqKTtqPWEuY2VsbChqLnBhZ2VYLGoucGFnZVkpO2lmKCFqIT0hbHx8aiYmKGoucm93IT1sLnJvd3x8ai5jb2whPWwuY29sKSl7aWYoail7Z3x8KGc9aik7ZihqLGcsai5yb3ctZy5yb3csai5jb2wtZy5jb2wpfWVsc2UgZihqLGcpO2w9an19dmFyIGU9dGhpcyxkLGYsZyxsO2Uuc3RhcnQ9ZnVuY3Rpb24oaix0LHkpe2Y9ajsKK2c9bD1udWxsO2EuYnVpbGQoKTtiKHQpO2Q9eXx8Im1vdXNlbW92ZSI7bShkb2N1bWVudCkuYmluZChkLGIpfTtlLnN0b3A9ZnVuY3Rpb24oKXttKGRvY3VtZW50KS51bmJpbmQoZCxiKTtyZXR1cm4gbH19ZnVuY3Rpb24geGMoYSl7aWYoYS5wYWdlWD09PW1hKXthLnBhZ2VYPWEub3JpZ2luYWxFdmVudC5wYWdlWDthLnBhZ2VZPWEub3JpZ2luYWxFdmVudC5wYWdlWX19ZnVuY3Rpb24gUGIoYSl7ZnVuY3Rpb24gYihsKXtyZXR1cm4gZFtsXT1kW2xdfHxhKGwpfXZhciBlPXRoaXMsZD17fSxmPXt9LGc9e307ZS5sZWZ0PWZ1bmN0aW9uKGwpe3JldHVybiBmW2xdPWZbbF09PT1tYT9iKGwpLnBvc2l0aW9uKCkubGVmdDpmW2xdfTtlLnJpZ2h0PWZ1bmN0aW9uKGwpe3JldHVybiBnW2xdPWdbbF09PT1tYT9lLmxlZnQobCkrYihsKS53aWR0aCgpOmdbbF19O2UuY2xlYXI9ZnVuY3Rpb24oKXtkPXt9O2Y9e307Zz17fX19dmFyIFlhPXtkZWZhdWx0VmlldzoibW9udGgiLGFzcGVjdFJhdGlvOjEuMzUsCitoZWFkZXI6e2xlZnQ6InRpdGxlIixjZW50ZXI6IiIscmlnaHQ6InRvZGF5IHByZXYsbmV4dCJ9LHdlZWtlbmRzOnRydWUsYWxsRGF5RGVmYXVsdDp0cnVlLGlnbm9yZVRpbWV6b25lOnRydWUsbGF6eUZldGNoaW5nOnRydWUsc3RhcnRQYXJhbToic3RhcnQiLGVuZFBhcmFtOiJlbmQiLHRpdGxlRm9ybWF0Onttb250aDoiTU1NTSB5eXl5Iix3ZWVrOiJNTU0gZFsgeXl5eV17ICcmIzgyMTI7J1sgTU1NXSBkIHl5eXl9IixkYXk6ImRkZGQsIE1NTSBkLCB5eXl5In0sY29sdW1uRm9ybWF0Onttb250aDoiZGRkIix3ZWVrOiJkZGQgTS9kIixkYXk6ImRkZGQgTS9kIn0sdGltZUZvcm1hdDp7IiI6ImgoOm1tKXQifSxpc1JUTDpmYWxzZSxmaXJzdERheTowLG1vbnRoTmFtZXM6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsCisiRmViIiwiTWFyIiwiQXByIiwiTWF5IiwiSnVuIiwiSnVsIiwiQXVnIiwiU2VwIiwiT2N0IiwiTm92IiwiRGVjIl0sZGF5TmFtZXM6WyJTdW5kYXkiLCJNb25kYXkiLCJUdWVzZGF5IiwiV2VkbmVzZGF5IiwiVGh1cnNkYXkiLCJGcmlkYXkiLCJTYXR1cmRheSJdLGRheU5hbWVzU2hvcnQ6WyJTdW4iLCJNb24iLCJUdWUiLCJXZWQiLCJUaHUiLCJGcmkiLCJTYXQiXSxidXR0b25UZXh0OntwcmV2OiImbmJzcDsmIzk2Njg7Jm5ic3A7IixuZXh0OiImbmJzcDsmIzk2NTg7Jm5ic3A7IixwcmV2WWVhcjoiJm5ic3A7Jmx0OyZsdDsmbmJzcDsiLG5leHRZZWFyOiImbmJzcDsmZ3Q7Jmd0OyZuYnNwOyIsdG9kYXk6InRvZGF5Iixtb250aDoibW9udGgiLHdlZWs6IndlZWsiLGRheToiZGF5In0sdGhlbWU6ZmFsc2UsYnV0dG9uSWNvbnM6e3ByZXY6ImNpcmNsZS10cmlhbmdsZS13IixuZXh0OiJjaXJjbGUtdHJpYW5nbGUtZSJ9LHVuc2VsZWN0QXV0bzp0cnVlLGRyb3BBY2NlcHQ6IioifSx5Yz0KK3toZWFkZXI6e2xlZnQ6Im5leHQscHJldiB0b2RheSIsY2VudGVyOiIiLHJpZ2h0OiJ0aXRsZSJ9LGJ1dHRvblRleHQ6e3ByZXY6IiZuYnNwOyYjOTY1ODsmbmJzcDsiLG5leHQ6IiZuYnNwOyYjOTY2ODsmbmJzcDsiLHByZXZZZWFyOiImbmJzcDsmZ3Q7Jmd0OyZuYnNwOyIsbmV4dFllYXI6IiZuYnNwOyZsdDsmbHQ7Jm5ic3A7In0sYnV0dG9uSWNvbnM6e3ByZXY6ImNpcmNsZS10cmlhbmdsZS1lIixuZXh0OiJjaXJjbGUtdHJpYW5nbGUtdyJ9fSxBYT1tLmZ1bGxDYWxlbmRhcj17dmVyc2lvbjoiMS41LjQifSxKYT1BYS52aWV3cz17fTttLmZuLmZ1bGxDYWxlbmRhcj1mdW5jdGlvbihhKXtpZih0eXBlb2YgYT09InN0cmluZyIpe3ZhciBiPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKSxlO3RoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBmPW0uZGF0YSh0aGlzLCJmdWxsQ2FsZW5kYXIiKTtpZihmJiZtLmlzRnVuY3Rpb24oZlthXSkpe2Y9ZlthXS5hcHBseShmLAorYik7aWYoZT09PW1hKWU9ZjthPT0iZGVzdHJveSImJm0ucmVtb3ZlRGF0YSh0aGlzLCJmdWxsQ2FsZW5kYXIiKX19KTtpZihlIT09bWEpcmV0dXJuIGU7cmV0dXJuIHRoaXN9dmFyIGQ9YS5ldmVudFNvdXJjZXN8fFtdO2RlbGV0ZSBhLmV2ZW50U291cmNlcztpZihhLmV2ZW50cyl7ZC5wdXNoKGEuZXZlbnRzKTtkZWxldGUgYS5ldmVudHN9YT1tLmV4dGVuZCh0cnVlLHt9LFlhLGEuaXNSVEx8fGEuaXNSVEw9PT1tYSYmWWEuaXNSVEw/eWM6e30sYSk7dGhpcy5lYWNoKGZ1bmN0aW9uKGYsZyl7Zj1tKGcpO2c9bmV3IFliKGYsYSxkKTtmLmRhdGEoImZ1bGxDYWxlbmRhciIsZyk7Zy5yZW5kZXIoKX0pO3JldHVybiB0aGlzfTtBYS5zb3VyY2VOb3JtYWxpemVycz1bXTtBYS5zb3VyY2VGZXRjaGVycz1bXTt2YXIgYWM9e2RhdGFUeXBlOiJqc29uIixjYWNoZTpmYWxzZX0sYmM9MTtBYS5hZGREYXlzPWJhO0FhLmNsb25lRGF0ZT1OO0FhLnBhcnNlRGF0ZT1rYjtBYS5wYXJzZUlTTzg2MDE9CitCYjtBYS5wYXJzZVRpbWU9bWI7QWEuZm9ybWF0RGF0ZT1PYTtBYS5mb3JtYXREYXRlcz1pYjt2YXIgbGM9WyJzdW4iLCJtb24iLCJ0dWUiLCJ3ZWQiLCJ0aHUiLCJmcmkiLCJzYXQiXSxBYj04NjRFNSxjYz0zNkU1LHdjPTZFNCxkYz17czpmdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRTZWNvbmRzKCl9LHNzOmZ1bmN0aW9uKGEpe3JldHVybiBQYShhLmdldFNlY29uZHMoKSl9LG06ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZ2V0TWludXRlcygpfSxtbTpmdW5jdGlvbihhKXtyZXR1cm4gUGEoYS5nZXRNaW51dGVzKCkpfSxoOmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEhvdXJzKCklMTJ8fDEyfSxoaDpmdW5jdGlvbihhKXtyZXR1cm4gUGEoYS5nZXRIb3VycygpJTEyfHwxMil9LEg6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZ2V0SG91cnMoKX0sSEg6ZnVuY3Rpb24oYSl7cmV0dXJuIFBhKGEuZ2V0SG91cnMoKSl9LGQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZ2V0RGF0ZSgpfSxkZDpmdW5jdGlvbihhKXtyZXR1cm4gUGEoYS5nZXREYXRlKCkpfSwKK2RkZDpmdW5jdGlvbihhLGIpe3JldHVybiBiLmRheU5hbWVzU2hvcnRbYS5nZXREYXkoKV19LGRkZGQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYi5kYXlOYW1lc1thLmdldERheSgpXX0sTTpmdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRNb250aCgpKzF9LE1NOmZ1bmN0aW9uKGEpe3JldHVybiBQYShhLmdldE1vbnRoKCkrMSl9LE1NTTpmdW5jdGlvbihhLGIpe3JldHVybiBiLm1vbnRoTmFtZXNTaG9ydFthLmdldE1vbnRoKCldfSxNTU1NOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGIubW9udGhOYW1lc1thLmdldE1vbnRoKCldfSx5eTpmdW5jdGlvbihhKXtyZXR1cm4oYS5nZXRGdWxsWWVhcigpKyIiKS5zdWJzdHJpbmcoMil9LHl5eXk6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZ2V0RnVsbFllYXIoKX0sdDpmdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRIb3VycygpPDEyPyJhIjoicCJ9LHR0OmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEhvdXJzKCk8MTI/ImFtIjoicG0ifSxUOmZ1bmN0aW9uKGEpe3JldHVybiBhLmdldEhvdXJzKCk8CisxMj8iQSI6IlAifSxUVDpmdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRIb3VycygpPDEyPyJBTSI6IlBNIn0sdTpmdW5jdGlvbihhKXtyZXR1cm4gT2EoYSwieXl5eS1NTS1kZCdUJ0hIOm1tOnNzJ1onIil9LFM6ZnVuY3Rpb24oYSl7YT1hLmdldERhdGUoKTtpZihhPjEwJiZhPDIwKXJldHVybiJ0aCI7cmV0dXJuWyJzdCIsIm5kIiwicmQiXVthJTEwLTFdfHwidGgifX07QWEuYXBwbHlBbGw9JGE7SmEubW9udGg9bWM7SmEuYmFzaWNXZWVrPW5jO0phLmJhc2ljRGF5PW9jO3diKHt3ZWVrTW9kZToiZml4ZWQifSk7SmEuYWdlbmRhV2Vlaz1xYztKYS5hZ2VuZGFEYXk9cmM7d2Ioe2FsbERheVNsb3Q6dHJ1ZSxhbGxEYXlUZXh0OiJhbGwtZGF5IixmaXJzdEhvdXI6NixzbG90TWludXRlczozMCxkZWZhdWx0RXZlbnRNaW51dGVzOjEyMCxheGlzRm9ybWF0OiJoKDptbSl0dCIsdGltZUZvcm1hdDp7YWdlbmRhOiJoOm1teyAtIGg6bW19In0sZHJhZ09wYWNpdHk6e2FnZW5kYTowLjV9LG1pblRpbWU6MCwKK21heFRpbWU6MjR9KX0pKGpRdWVyeSk7CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9qcy9qcXVlcnktdWktMS45LjAuY3VzdG9tLm1pbi5qcyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL2pzL2pxdWVyeS11aS0xLjkuMC5jdXN0b20ubWluLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmYjFlZjEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9qcy9qcXVlcnktdWktMS45LjAuY3VzdG9tLm1pbi5qcwpAQCAtMCwwICsxLDYgQEAKKy8qISBqUXVlcnkgVUkgLSB2MS45LjAgLSAyMDEyLTEwLTEyCisqIGh0dHA6Ly9qcXVlcnl1aS5jb20KKyogSW5jbHVkZXM6IGpxdWVyeS51aS5jb3JlLmpzLCBqcXVlcnkudWkud2lkZ2V0LmpzLCBqcXVlcnkudWkubW91c2UuanMsIGpxdWVyeS51aS5wb3NpdGlvbi5qcywganF1ZXJ5LnVpLmRyYWdnYWJsZS5qcywganF1ZXJ5LnVpLmRyb3BwYWJsZS5qcywganF1ZXJ5LnVpLnJlc2l6YWJsZS5qcywganF1ZXJ5LnVpLnNlbGVjdGFibGUuanMsIGpxdWVyeS51aS5zb3J0YWJsZS5qcywganF1ZXJ5LnVpLmFjY29yZGlvbi5qcywganF1ZXJ5LnVpLmF1dG9jb21wbGV0ZS5qcywganF1ZXJ5LnVpLmJ1dHRvbi5qcywganF1ZXJ5LnVpLmRhdGVwaWNrZXIuanMsIGpxdWVyeS51aS5kaWFsb2cuanMsIGpxdWVyeS51aS5tZW51LmpzLCBqcXVlcnkudWkucHJvZ3Jlc3NiYXIuanMsIGpxdWVyeS51aS5zbGlkZXIuanMsIGpxdWVyeS51aS5zcGlubmVyLmpzLCBqcXVlcnkudWkudGFicy5qcywganF1ZXJ5LnVpLnRvb2x0aXAuanMsIGpxdWVyeS51aS5lZmZlY3QuanMsIGpxdWVyeS51aS5lZmZlY3QtYmxpbmQuanMsIGpxdWVyeS51aS5lZmZlY3QtYm91bmNlLmpzLCBqcXVlcnkudWkuZWZmZWN0LWNsaXAuanMsIGpxdWVyeS51aS5lZmZlY3QtZHJvcC5qcywganF1ZXJ5LnVpLmVmZmVjdC1leHBsb2RlLmpzLCBqcXVlcnkudWkuZWZmZWN0LWZhZGUuanMsIGpxdWVyeS51aS5lZmZlY3QtZm9sZC5qcywganF1ZXJ5LnVpLmVmZmVjdC1oaWdobGlnaHQuanMsIGpxdWVyeS51aS5lZmZlY3QtcHVsc2F0ZS5qcywganF1ZXJ5LnVpLmVmZmVjdC1zY2FsZS5qcywganF1ZXJ5LnVpLmVmZmVjdC1zaGFrZS5qcywganF1ZXJ5LnVpLmVmZmVjdC1zbGlkZS5qcywganF1ZXJ5LnVpLmVmZmVjdC10cmFuc2Zlci5qcworKiBDb3B5cmlnaHQgKGMpIDIwMTIgalF1ZXJ5IEZvdW5kYXRpb24gYW5kIG90aGVyIGNvbnRyaWJ1dG9ycyBMaWNlbnNlZCBNSVQgKi8KKworKGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gaSh0LG4pe3ZhciByLGksbyx1PXQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4iYXJlYSI9PT11PyhyPXQucGFyZW50Tm9kZSxpPXIubmFtZSwhdC5ocmVmfHwhaXx8ci5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpIT09Im1hcCI/ITE6KG89ZSgiaW1nW3VzZW1hcD0jIitpKyJdIilbMF0sISFvJiZzKG8pKSk6KC9pbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9ufG9iamVjdC8udGVzdCh1KT8hdC5kaXNhYmxlZDoiYSI9PT11P3QuaHJlZnx8bjpuKSYmcyh0KX1mdW5jdGlvbiBzKHQpe3JldHVybiFlKHQpLnBhcmVudHMoKS5hbmRTZWxmKCkuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIGUuY3NzKHRoaXMsInZpc2liaWxpdHkiKT09PSJoaWRkZW4ifHxlLmV4cHIuZmlsdGVycy5oaWRkZW4odGhpcyl9KS5sZW5ndGh9dmFyIG49MCxyPS9edWktaWQtXGQrJC87ZS51aT1lLnVpfHx7fTtpZihlLnVpLnZlcnNpb24pcmV0dXJuO2UuZXh0ZW5kKGUudWkse3ZlcnNpb246IjEuOS4wIixrZXlDb2RlOntCQUNLU1BBQ0U6OCxDT01NQToxODgsREVMRVRFOjQ2LERPV046NDAsRU5EOjM1LEVOVEVSOjEzLEVTQ0FQRToyNyxIT01FOjM2LExFRlQ6MzcsTlVNUEFEX0FERDoxMDcsTlVNUEFEX0RFQ0lNQUw6MTEwLE5VTVBBRF9ESVZJREU6MTExLE5VTVBBRF9FTlRFUjoxMDgsTlVNUEFEX01VTFRJUExZOjEwNixOVU1QQURfU1VCVFJBQ1Q6MTA5LFBBR0VfRE9XTjozNCxQQUdFX1VQOjMzLFBFUklPRDoxOTAsUklHSFQ6MzksU1BBQ0U6MzIsVEFCOjksVVA6Mzh9fSksZS5mbi5leHRlbmQoe19mb2N1czplLmZuLmZvY3VzLGZvY3VzOmZ1bmN0aW9uKHQsbil7cmV0dXJuIHR5cGVvZiB0PT0ibnVtYmVyIj90aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgcj10aGlzO3NldFRpbWVvdXQoZnVuY3Rpb24oKXtlKHIpLmZvY3VzKCksbiYmbi5jYWxsKHIpfSx0KX0pOnRoaXMuX2ZvY3VzLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sc2Nyb2xsUGFyZW50OmZ1bmN0aW9uKCl7dmFyIHQ7cmV0dXJuIGUuYnJvd3Nlci5tc2llJiYvKHN0YXRpY3xyZWxhdGl2ZSkvLnRlc3QodGhpcy5jc3MoInBvc2l0aW9uIikpfHwvYWJzb2x1dGUvLnRlc3QodGhpcy5jc3MoInBvc2l0aW9uIikpP3Q9dGhpcy5wYXJlbnRzKCkuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuLyhyZWxhdGl2ZXxhYnNvbHV0ZXxmaXhlZCkvLnRlc3QoZS5jc3ModGhpcywicG9zaXRpb24iKSkmJi8oYXV0b3xzY3JvbGwpLy50ZXN0KGUuY3NzKHRoaXMsIm92ZXJmbG93IikrZS5jc3ModGhpcywib3ZlcmZsb3cteSIpK2UuY3NzKHRoaXMsIm92ZXJmbG93LXgiKSl9KS5lcSgwKTp0PXRoaXMucGFyZW50cygpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybi8oYXV0b3xzY3JvbGwpLy50ZXN0KGUuY3NzKHRoaXMsIm92ZXJmbG93IikrZS5jc3ModGhpcywib3ZlcmZsb3cteSIpK2UuY3NzKHRoaXMsIm92ZXJmbG93LXgiKSl9KS5lcSgwKSwvZml4ZWQvLnRlc3QodGhpcy5jc3MoInBvc2l0aW9uIikpfHwhdC5sZW5ndGg/ZShkb2N1bWVudCk6dH0sekluZGV4OmZ1bmN0aW9uKG4pe2lmKG4hPT10KXJldHVybiB0aGlzLmNzcygiekluZGV4IixuKTtpZih0aGlzLmxlbmd0aCl7dmFyIHI9ZSh0aGlzWzBdKSxpLHM7d2hpbGUoci5sZW5ndGgmJnJbMF0hPT1kb2N1bWVudCl7aT1yLmNzcygicG9zaXRpb24iKTtpZihpPT09ImFic29sdXRlInx8aT09PSJyZWxhdGl2ZSJ8fGk9PT0iZml4ZWQiKXtzPXBhcnNlSW50KHIuY3NzKCJ6SW5kZXgiKSwxMCk7aWYoIWlzTmFOKHMpJiZzIT09MClyZXR1cm4gc31yPXIucGFyZW50KCl9fXJldHVybiAwfSx1bmlxdWVJZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt0aGlzLmlkfHwodGhpcy5pZD0idWktaWQtIisgKytuKX0pfSxyZW1vdmVVbmlxdWVJZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtyLnRlc3QodGhpcy5pZCkmJmUodGhpcykucmVtb3ZlQXR0cigiaWQiKX0pfX0pLGUoIjxhPiIpLm91dGVyV2lkdGgoMSkuanF1ZXJ5fHxlLmVhY2goWyJXaWR0aCIsIkhlaWdodCJdLGZ1bmN0aW9uKG4scil7ZnVuY3Rpb24gdSh0LG4scixzKXtyZXR1cm4gZS5lYWNoKGksZnVuY3Rpb24oKXtuLT1wYXJzZUZsb2F0KGUuY3NzKHQsInBhZGRpbmciK3RoaXMpKXx8MCxyJiYobi09cGFyc2VGbG9hdChlLmNzcyh0LCJib3JkZXIiK3RoaXMrIldpZHRoIikpfHwwKSxzJiYobi09cGFyc2VGbG9hdChlLmNzcyh0LCJtYXJnaW4iK3RoaXMpKXx8MCl9KSxufXZhciBpPXI9PT0iV2lkdGgiP1siTGVmdCIsIlJpZ2h0Il06WyJUb3AiLCJCb3R0b20iXSxzPXIudG9Mb3dlckNhc2UoKSxvPXtpbm5lcldpZHRoOmUuZm4uaW5uZXJXaWR0aCxpbm5lckhlaWdodDplLmZuLmlubmVySGVpZ2h0LG91dGVyV2lkdGg6ZS5mbi5vdXRlcldpZHRoLG91dGVySGVpZ2h0OmUuZm4ub3V0ZXJIZWlnaHR9O2UuZm5bImlubmVyIityXT1mdW5jdGlvbihuKXtyZXR1cm4gbj09PXQ/b1siaW5uZXIiK3JdLmNhbGwodGhpcyk6dGhpcy5lYWNoKGZ1bmN0aW9uKCl7ZSh0aGlzKS5jc3Mocyx1KHRoaXMsbikrInB4Iil9KX0sZS5mblsib3V0ZXIiK3JdPWZ1bmN0aW9uKHQsbil7cmV0dXJuIHR5cGVvZiB0IT0ibnVtYmVyIj9vWyJvdXRlciIrcl0uY2FsbCh0aGlzLHQpOnRoaXMuZWFjaChmdW5jdGlvbigpe2UodGhpcykuY3NzKHMsdSh0aGlzLHQsITAsbikrInB4Iil9KX19KSxlLmV4dGVuZChlLmV4cHJbIjoiXSx7ZGF0YTplLmV4cHIuY3JlYXRlUHNldWRvP2UuZXhwci5jcmVhdGVQc2V1ZG8oZnVuY3Rpb24odCl7cmV0dXJuIGZ1bmN0aW9uKG4pe3JldHVybiEhZS5kYXRhKG4sdCl9fSk6ZnVuY3Rpb24odCxuLHIpe3JldHVybiEhZS5kYXRhKHQsclszXSl9LGZvY3VzYWJsZTpmdW5jdGlvbih0KXtyZXR1cm4gaSh0LCFpc05hTihlLmF0dHIodCwidGFiaW5kZXgiKSkpfSx0YWJiYWJsZTpmdW5jdGlvbih0KXt2YXIgbj1lLmF0dHIodCwidGFiaW5kZXgiKSxyPWlzTmFOKG4pO3JldHVybihyfHxuPj0wKSYmaSh0LCFyKX19KSxlKGZ1bmN0aW9uKCl7dmFyIHQ9ZG9jdW1lbnQuYm9keSxuPXQuYXBwZW5kQ2hpbGQobj1kb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKSk7bi5vZmZzZXRIZWlnaHQsZS5leHRlbmQobi5zdHlsZSx7bWluSGVpZ2h0OiIxMDBweCIsaGVpZ2h0OiJhdXRvIixwYWRkaW5nOjAsYm9yZGVyV2lkdGg6MH0pLGUuc3VwcG9ydC5taW5IZWlnaHQ9bi5vZmZzZXRIZWlnaHQ9PT0xMDAsZS5zdXBwb3J0LnNlbGVjdHN0YXJ0PSJvbnNlbGVjdHN0YXJ0ImluIG4sdC5yZW1vdmVDaGlsZChuKS5zdHlsZS5kaXNwbGF5PSJub25lIn0pLGUuZm4uZXh0ZW5kKHtkaXNhYmxlU2VsZWN0aW9uOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuYmluZCgoZS5zdXBwb3J0LnNlbGVjdHN0YXJ0PyJzZWxlY3RzdGFydCI6Im1vdXNlZG93biIpKyIudWktZGlzYWJsZVNlbGVjdGlvbiIsZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpfSl9LGVuYWJsZVNlbGVjdGlvbjpmdW5jdGlvbigpe3JldHVybiB0aGlzLnVuYmluZCgiLnVpLWRpc2FibGVTZWxlY3Rpb24iKX19KSxlLmV4dGVuZChlLnVpLHtwbHVnaW46e2FkZDpmdW5jdGlvbih0LG4scil7dmFyIGkscz1lLnVpW3RdLnByb3RvdHlwZTtmb3IoaSBpbiByKXMucGx1Z2luc1tpXT1zLnBsdWdpbnNbaV18fFtdLHMucGx1Z2luc1tpXS5wdXNoKFtuLHJbaV1dKX0sY2FsbDpmdW5jdGlvbihlLHQsbil7dmFyIHIsaT1lLnBsdWdpbnNbdF07aWYoIWl8fCFlLmVsZW1lbnRbMF0ucGFyZW50Tm9kZXx8ZS5lbGVtZW50WzBdLnBhcmVudE5vZGUubm9kZVR5cGU9PT0xMSlyZXR1cm47Zm9yKHI9MDtyPGkubGVuZ3RoO3IrKyllLm9wdGlvbnNbaVtyXVswXV0mJmlbcl1bMV0uYXBwbHkoZS5lbGVtZW50LG4pfX0sY29udGFpbnM6ZS5jb250YWlucyxoYXNTY3JvbGw6ZnVuY3Rpb24odCxuKXtpZihlKHQpLmNzcygib3ZlcmZsb3ciKT09PSJoaWRkZW4iKXJldHVybiExO3ZhciByPW4mJm49PT0ibGVmdCI/InNjcm9sbExlZnQiOiJzY3JvbGxUb3AiLGk9ITE7cmV0dXJuIHRbcl0+MD8hMDoodFtyXT0xLGk9dFtyXT4wLHRbcl09MCxpKX0saXNPdmVyQXhpczpmdW5jdGlvbihlLHQsbil7cmV0dXJuIGU+dCYmZTx0K259LGlzT3ZlcjpmdW5jdGlvbih0LG4scixpLHMsbyl7cmV0dXJuIGUudWkuaXNPdmVyQXhpcyh0LHIscykmJmUudWkuaXNPdmVyQXhpcyhuLGksbyl9fSl9KShqUXVlcnkpOyhmdW5jdGlvbihlLHQpe3ZhciBuPTAscj1BcnJheS5wcm90b3R5cGUuc2xpY2UsaT1lLmNsZWFuRGF0YTtlLmNsZWFuRGF0YT1mdW5jdGlvbih0KXtmb3IodmFyIG49MCxyOyhyPXRbbl0pIT1udWxsO24rKyl0cnl7ZShyKS50cmlnZ2VySGFuZGxlcigicmVtb3ZlIil9Y2F0Y2gocyl7fWkodCl9LGUud2lkZ2V0PWZ1bmN0aW9uKHQsbixyKXt2YXIgaSxzLG8sdSxhPXQuc3BsaXQoIi4iKVswXTt0PXQuc3BsaXQoIi4iKVsxXSxpPWErIi0iK3Qscnx8KHI9bixuPWUuV2lkZ2V0KSxlLmV4cHJbIjoiXVtpLnRvTG93ZXJDYXNlKCldPWZ1bmN0aW9uKHQpe3JldHVybiEhZS5kYXRhKHQsaSl9LGVbYV09ZVthXXx8e30scz1lW2FdW3RdLG89ZVthXVt0XT1mdW5jdGlvbihlLHQpe2lmKCF0aGlzLl9jcmVhdGVXaWRnZXQpcmV0dXJuIG5ldyBvKGUsdCk7YXJndW1lbnRzLmxlbmd0aCYmdGhpcy5fY3JlYXRlV2lkZ2V0KGUsdCl9LGUuZXh0ZW5kKG8scyx7dmVyc2lvbjpyLnZlcnNpb24sX3Byb3RvOmUuZXh0ZW5kKHt9LHIpLF9jaGlsZENvbnN0cnVjdG9yczpbXX0pLHU9bmV3IG4sdS5vcHRpb25zPWUud2lkZ2V0LmV4dGVuZCh7fSx1Lm9wdGlvbnMpLGUuZWFjaChyLGZ1bmN0aW9uKHQsaSl7ZS5pc0Z1bmN0aW9uKGkpJiYoclt0XT1mdW5jdGlvbigpe3ZhciBlPWZ1bmN0aW9uKCl7cmV0dXJuIG4ucHJvdG90eXBlW3RdLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0scj1mdW5jdGlvbihlKXtyZXR1cm4gbi5wcm90b3R5cGVbdF0uYXBwbHkodGhpcyxlKX07cmV0dXJuIGZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5fc3VwZXIsbj10aGlzLl9zdXBlckFwcGx5LHM7cmV0dXJuIHRoaXMuX3N1cGVyPWUsdGhpcy5fc3VwZXJBcHBseT1yLHM9aS5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5fc3VwZXI9dCx0aGlzLl9zdXBlckFwcGx5PW4sc319KCkpfSksby5wcm90b3R5cGU9ZS53aWRnZXQuZXh0ZW5kKHUse3dpZGdldEV2ZW50UHJlZml4OnR9LHIse2NvbnN0cnVjdG9yOm8sbmFtZXNwYWNlOmEsd2lkZ2V0TmFtZTp0LHdpZGdldEJhc2VDbGFzczppLHdpZGdldEZ1bGxOYW1lOml9KSxzPyhlLmVhY2gocy5fY2hpbGRDb25zdHJ1Y3RvcnMsZnVuY3Rpb24odCxuKXt2YXIgcj1uLnByb3RvdHlwZTtlLndpZGdldChyLm5hbWVzcGFjZSsiLiIrci53aWRnZXROYW1lLG8sbi5fcHJvdG8pfSksZGVsZXRlIHMuX2NoaWxkQ29uc3RydWN0b3JzKTpuLl9jaGlsZENvbnN0cnVjdG9ycy5wdXNoKG8pLGUud2lkZ2V0LmJyaWRnZSh0LG8pfSxlLndpZGdldC5leHRlbmQ9ZnVuY3Rpb24obil7dmFyIGk9ci5jYWxsKGFyZ3VtZW50cywxKSxzPTAsbz1pLmxlbmd0aCx1LGE7Zm9yKDtzPG87cysrKWZvcih1IGluIGlbc10pYT1pW3NdW3VdLGlbc10uaGFzT3duUHJvcGVydHkodSkmJmEhPT10JiYoblt1XT1lLmlzUGxhaW5PYmplY3QoYSk/ZS53aWRnZXQuZXh0ZW5kKHt9LG5bdV0sYSk6YSk7cmV0dXJuIG59LGUud2lkZ2V0LmJyaWRnZT1mdW5jdGlvbihuLGkpe3ZhciBzPWkucHJvdG90eXBlLndpZGdldEZ1bGxOYW1lO2UuZm5bbl09ZnVuY3Rpb24obyl7dmFyIHU9dHlwZW9mIG89PSJzdHJpbmciLGE9ci5jYWxsKGFyZ3VtZW50cywxKSxmPXRoaXM7cmV0dXJuIG89IXUmJmEubGVuZ3RoP2Uud2lkZ2V0LmV4dGVuZC5hcHBseShudWxsLFtvXS5jb25jYXQoYSkpOm8sdT90aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgcixpPWUuZGF0YSh0aGlzLHMpO2lmKCFpKXJldHVybiBlLmVycm9yKCJjYW5ub3QgY2FsbCBtZXRob2RzIG9uICIrbisiIHByaW9yIHRvIGluaXRpYWxpemF0aW9uOyAiKyJhdHRlbXB0ZWQgdG8gY2FsbCBtZXRob2QgJyIrbysiJyIpO2lmKCFlLmlzRnVuY3Rpb24oaVtvXSl8fG8uY2hhckF0KDApPT09Il8iKXJldHVybiBlLmVycm9yKCJubyBzdWNoIG1ldGhvZCAnIitvKyInIGZvciAiK24rIiB3aWRnZXQgaW5zdGFuY2UiKTtyPWlbb10uYXBwbHkoaSxhKTtpZihyIT09aSYmciE9PXQpcmV0dXJuIGY9ciYmci5qcXVlcnk/Zi5wdXNoU3RhY2soci5nZXQoKSk6ciwhMX0pOnRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciB0PWUuZGF0YSh0aGlzLHMpO3Q/dC5vcHRpb24ob3x8e30pLl9pbml0KCk6bmV3IGkobyx0aGlzKX0pLGZ9fSxlLldpZGdldD1mdW5jdGlvbihlLHQpe30sZS5XaWRnZXQuX2NoaWxkQ29uc3RydWN0b3JzPVtdLGUuV2lkZ2V0LnByb3RvdHlwZT17d2lkZ2V0TmFtZToid2lkZ2V0Iix3aWRnZXRFdmVudFByZWZpeDoiIixkZWZhdWx0RWxlbWVudDoiPGRpdj4iLG9wdGlvbnM6e2Rpc2FibGVkOiExLGNyZWF0ZTpudWxsfSxfY3JlYXRlV2lkZ2V0OmZ1bmN0aW9uKHQscil7cj1lKHJ8fHRoaXMuZGVmYXVsdEVsZW1lbnR8fHRoaXMpWzBdLHRoaXMuZWxlbWVudD1lKHIpLHRoaXMudXVpZD1uKyssdGhpcy5ldmVudE5hbWVzcGFjZT0iLiIrdGhpcy53aWRnZXROYW1lK3RoaXMudXVpZCx0aGlzLm9wdGlvbnM9ZS53aWRnZXQuZXh0ZW5kKHt9LHRoaXMub3B0aW9ucyx0aGlzLl9nZXRDcmVhdGVPcHRpb25zKCksdCksdGhpcy5iaW5kaW5ncz1lKCksdGhpcy5ob3ZlcmFibGU9ZSgpLHRoaXMuZm9jdXNhYmxlPWUoKSxyIT09dGhpcyYmKGUuZGF0YShyLHRoaXMud2lkZ2V0TmFtZSx0aGlzKSxlLmRhdGEocix0aGlzLndpZGdldEZ1bGxOYW1lLHRoaXMpLHRoaXMuX29uKHtyZW1vdmU6ImRlc3Ryb3kifSksdGhpcy5kb2N1bWVudD1lKHIuc3R5bGU/ci5vd25lckRvY3VtZW50OnIuZG9jdW1lbnR8fHIpLHRoaXMud2luZG93PWUodGhpcy5kb2N1bWVudFswXS5kZWZhdWx0Vmlld3x8dGhpcy5kb2N1bWVudFswXS5wYXJlbnRXaW5kb3cpKSx0aGlzLl9jcmVhdGUoKSx0aGlzLl90cmlnZ2VyKCJjcmVhdGUiLG51bGwsdGhpcy5fZ2V0Q3JlYXRlRXZlbnREYXRhKCkpLHRoaXMuX2luaXQoKX0sX2dldENyZWF0ZU9wdGlvbnM6ZS5ub29wLF9nZXRDcmVhdGVFdmVudERhdGE6ZS5ub29wLF9jcmVhdGU6ZS5ub29wLF9pbml0OmUubm9vcCxkZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5fZGVzdHJveSgpLHRoaXMuZWxlbWVudC51bmJpbmQodGhpcy5ldmVudE5hbWVzcGFjZSkucmVtb3ZlRGF0YSh0aGlzLndpZGdldE5hbWUpLnJlbW92ZURhdGEodGhpcy53aWRnZXRGdWxsTmFtZSkucmVtb3ZlRGF0YShlLmNhbWVsQ2FzZSh0aGlzLndpZGdldEZ1bGxOYW1lKSksdGhpcy53aWRnZXQoKS51bmJpbmQodGhpcy5ldmVudE5hbWVzcGFjZSkucmVtb3ZlQXR0cigiYXJpYS1kaXNhYmxlZCIpLnJlbW92ZUNsYXNzKHRoaXMud2lkZ2V0RnVsbE5hbWUrIi1kaXNhYmxlZCAiKyJ1aS1zdGF0ZS1kaXNhYmxlZCIpLHRoaXMuYmluZGluZ3MudW5iaW5kKHRoaXMuZXZlbnROYW1lc3BhY2UpLHRoaXMuaG92ZXJhYmxlLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1ob3ZlciIpLHRoaXMuZm9jdXNhYmxlLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1mb2N1cyIpfSxfZGVzdHJveTplLm5vb3Asd2lkZ2V0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxlbWVudH0sb3B0aW9uOmZ1bmN0aW9uKG4scil7dmFyIGk9bixzLG8sdTtpZihhcmd1bWVudHMubGVuZ3RoPT09MClyZXR1cm4gZS53aWRnZXQuZXh0ZW5kKHt9LHRoaXMub3B0aW9ucyk7aWYodHlwZW9mIG49PSJzdHJpbmciKXtpPXt9LHM9bi5zcGxpdCgiLiIpLG49cy5zaGlmdCgpO2lmKHMubGVuZ3RoKXtvPWlbbl09ZS53aWRnZXQuZXh0ZW5kKHt9LHRoaXMub3B0aW9uc1tuXSk7Zm9yKHU9MDt1PHMubGVuZ3RoLTE7dSsrKW9bc1t1XV09b1tzW3VdXXx8e30sbz1vW3NbdV1dO249cy5wb3AoKTtpZihyPT09dClyZXR1cm4gb1tuXT09PXQ/bnVsbDpvW25dO29bbl09cn1lbHNle2lmKHI9PT10KXJldHVybiB0aGlzLm9wdGlvbnNbbl09PT10P251bGw6dGhpcy5vcHRpb25zW25dO2lbbl09cn19cmV0dXJuIHRoaXMuX3NldE9wdGlvbnMoaSksdGhpc30sX3NldE9wdGlvbnM6ZnVuY3Rpb24oZSl7dmFyIHQ7Zm9yKHQgaW4gZSl0aGlzLl9zZXRPcHRpb24odCxlW3RdKTtyZXR1cm4gdGhpc30sX3NldE9wdGlvbjpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLm9wdGlvbnNbZV09dCxlPT09ImRpc2FibGVkIiYmKHRoaXMud2lkZ2V0KCkudG9nZ2xlQ2xhc3ModGhpcy53aWRnZXRGdWxsTmFtZSsiLWRpc2FibGVkIHVpLXN0YXRlLWRpc2FibGVkIiwhIXQpLmF0dHIoImFyaWEtZGlzYWJsZWQiLHQpLHRoaXMuaG92ZXJhYmxlLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1ob3ZlciIpLHRoaXMuZm9jdXNhYmxlLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1mb2N1cyIpKSx0aGlzfSxlbmFibGU6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fc2V0T3B0aW9uKCJkaXNhYmxlZCIsITEpfSxkaXNhYmxlOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuX3NldE9wdGlvbigiZGlzYWJsZWQiLCEwKX0sX29uOmZ1bmN0aW9uKHQsbil7bj8odD1lKHQpLHRoaXMuYmluZGluZ3M9dGhpcy5iaW5kaW5ncy5hZGQodCkpOihuPXQsdD10aGlzLmVsZW1lbnQpO3ZhciByPXRoaXM7ZS5lYWNoKG4sZnVuY3Rpb24obixpKXtmdW5jdGlvbiBzKCl7aWYoci5vcHRpb25zLmRpc2FibGVkPT09ITB8fGUodGhpcykuaGFzQ2xhc3MoInVpLXN0YXRlLWRpc2FibGVkIikpcmV0dXJuO3JldHVybih0eXBlb2YgaT09InN0cmluZyI/cltpXTppKS5hcHBseShyLGFyZ3VtZW50cyl9dHlwZW9mIGkhPSJzdHJpbmciJiYocy5ndWlkPWkuZ3VpZD1pLmd1aWR8fHMuZ3VpZHx8ZS5ndWlkKyspO3ZhciBvPW4ubWF0Y2goL14oXHcrKVxzKiguKikkLyksdT1vWzFdK3IuZXZlbnROYW1lc3BhY2UsYT1vWzJdO2E/ci53aWRnZXQoKS5kZWxlZ2F0ZShhLHUscyk6dC5iaW5kKHUscyl9KX0sX29mZjpmdW5jdGlvbihlLHQpe3Q9KHR8fCIiKS5zcGxpdCgiICIpLmpvaW4odGhpcy5ldmVudE5hbWVzcGFjZSsiICIpK3RoaXMuZXZlbnROYW1lc3BhY2UsZS51bmJpbmQodCkudW5kZWxlZ2F0ZSh0KX0sX2RlbGF5OmZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbigpe3JldHVybih0eXBlb2YgZT09InN0cmluZyI/cltlXTplKS5hcHBseShyLGFyZ3VtZW50cyl9dmFyIHI9dGhpcztyZXR1cm4gc2V0VGltZW91dChuLHR8fDApfSxfaG92ZXJhYmxlOmZ1bmN0aW9uKHQpe3RoaXMuaG92ZXJhYmxlPXRoaXMuaG92ZXJhYmxlLmFkZCh0KSx0aGlzLl9vbih0LHttb3VzZWVudGVyOmZ1bmN0aW9uKHQpe2UodC5jdXJyZW50VGFyZ2V0KS5hZGRDbGFzcygidWktc3RhdGUtaG92ZXIiKX0sbW91c2VsZWF2ZTpmdW5jdGlvbih0KXtlKHQuY3VycmVudFRhcmdldCkucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWhvdmVyIil9fSl9LF9mb2N1c2FibGU6ZnVuY3Rpb24odCl7dGhpcy5mb2N1c2FibGU9dGhpcy5mb2N1c2FibGUuYWRkKHQpLHRoaXMuX29uKHQse2ZvY3VzaW46ZnVuY3Rpb24odCl7ZSh0LmN1cnJlbnRUYXJnZXQpLmFkZENsYXNzKCJ1aS1zdGF0ZS1mb2N1cyIpfSxmb2N1c291dDpmdW5jdGlvbih0KXtlKHQuY3VycmVudFRhcmdldCkucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWZvY3VzIil9fSl9LF90cmlnZ2VyOmZ1bmN0aW9uKHQsbixyKXt2YXIgaSxzLG89dGhpcy5vcHRpb25zW3RdO3I9cnx8e30sbj1lLkV2ZW50KG4pLG4udHlwZT0odD09PXRoaXMud2lkZ2V0RXZlbnRQcmVmaXg/dDp0aGlzLndpZGdldEV2ZW50UHJlZml4K3QpLnRvTG93ZXJDYXNlKCksbi50YXJnZXQ9dGhpcy5lbGVtZW50WzBdLHM9bi5vcmlnaW5hbEV2ZW50O2lmKHMpZm9yKGkgaW4gcylpIGluIG58fChuW2ldPXNbaV0pO3JldHVybiB0aGlzLmVsZW1lbnQudHJpZ2dlcihuLHIpLCEoZS5pc0Z1bmN0aW9uKG8pJiZvLmFwcGx5KHRoaXMuZWxlbWVudFswXSxbbl0uY29uY2F0KHIpKT09PSExfHxuLmlzRGVmYXVsdFByZXZlbnRlZCgpKX19LGUuZWFjaCh7c2hvdzoiZmFkZUluIixoaWRlOiJmYWRlT3V0In0sZnVuY3Rpb24odCxuKXtlLldpZGdldC5wcm90b3R5cGVbIl8iK3RdPWZ1bmN0aW9uKHIsaSxzKXt0eXBlb2YgaT09InN0cmluZyImJihpPXtlZmZlY3Q6aX0pO3ZhciBvLHU9aT9pPT09ITB8fHR5cGVvZiBpPT0ibnVtYmVyIj9uOmkuZWZmZWN0fHxuOnQ7aT1pfHx7fSx0eXBlb2YgaT09Im51bWJlciImJihpPXtkdXJhdGlvbjppfSksbz0hZS5pc0VtcHR5T2JqZWN0KGkpLGkuY29tcGxldGU9cyxpLmRlbGF5JiZyLmRlbGF5KGkuZGVsYXkpLG8mJmUuZWZmZWN0cyYmKGUuZWZmZWN0cy5lZmZlY3RbdV18fGUudWlCYWNrQ29tcGF0IT09ITEmJmUuZWZmZWN0c1t1XSk/clt0XShpKTp1IT09dCYmclt1XT9yW3VdKGkuZHVyYXRpb24saS5lYXNpbmcscyk6ci5xdWV1ZShmdW5jdGlvbihuKXtlKHRoaXMpW3RdKCkscyYmcy5jYWxsKHJbMF0pLG4oKX0pfX0pLGUudWlCYWNrQ29tcGF0IT09ITEmJihlLldpZGdldC5wcm90b3R5cGUuX2dldENyZWF0ZU9wdGlvbnM9ZnVuY3Rpb24oKXtyZXR1cm4gZS5tZXRhZGF0YSYmZS5tZXRhZGF0YS5nZXQodGhpcy5lbGVtZW50WzBdKVt0aGlzLndpZGdldE5hbWVdfSl9KShqUXVlcnkpOyhmdW5jdGlvbihlLHQpe3ZhciBuPSExO2UoZG9jdW1lbnQpLm1vdXNldXAoZnVuY3Rpb24oZSl7bj0hMX0pLGUud2lkZ2V0KCJ1aS5tb3VzZSIse3ZlcnNpb246IjEuOS4wIixvcHRpb25zOntjYW5jZWw6ImlucHV0LHRleHRhcmVhLGJ1dHRvbixzZWxlY3Qsb3B0aW9uIixkaXN0YW5jZToxLGRlbGF5OjB9LF9tb3VzZUluaXQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzO3RoaXMuZWxlbWVudC5iaW5kKCJtb3VzZWRvd24uIit0aGlzLndpZGdldE5hbWUsZnVuY3Rpb24oZSl7cmV0dXJuIHQuX21vdXNlRG93bihlKX0pLmJpbmQoImNsaWNrLiIrdGhpcy53aWRnZXROYW1lLGZ1bmN0aW9uKG4pe2lmKCEwPT09ZS5kYXRhKG4udGFyZ2V0LHQud2lkZ2V0TmFtZSsiLnByZXZlbnRDbGlja0V2ZW50IikpcmV0dXJuIGUucmVtb3ZlRGF0YShuLnRhcmdldCx0LndpZGdldE5hbWUrIi5wcmV2ZW50Q2xpY2tFdmVudCIpLG4uc3RvcEltbWVkaWF0ZVByb3BhZ2F0aW9uKCksITF9KSx0aGlzLnN0YXJ0ZWQ9ITF9LF9tb3VzZURlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQudW5iaW5kKCIuIit0aGlzLndpZGdldE5hbWUpLHRoaXMuX21vdXNlTW92ZURlbGVnYXRlJiZlKGRvY3VtZW50KS51bmJpbmQoIm1vdXNlbW92ZS4iK3RoaXMud2lkZ2V0TmFtZSx0aGlzLl9tb3VzZU1vdmVEZWxlZ2F0ZSkudW5iaW5kKCJtb3VzZXVwLiIrdGhpcy53aWRnZXROYW1lLHRoaXMuX21vdXNlVXBEZWxlZ2F0ZSl9LF9tb3VzZURvd246ZnVuY3Rpb24odCl7aWYobilyZXR1cm47dGhpcy5fbW91c2VTdGFydGVkJiZ0aGlzLl9tb3VzZVVwKHQpLHRoaXMuX21vdXNlRG93bkV2ZW50PXQ7dmFyIHI9dGhpcyxpPXQud2hpY2g9PT0xLHM9dHlwZW9mIHRoaXMub3B0aW9ucy5jYW5jZWw9PSJzdHJpbmciJiZ0LnRhcmdldC5ub2RlTmFtZT9lKHQudGFyZ2V0KS5jbG9zZXN0KHRoaXMub3B0aW9ucy5jYW5jZWwpLmxlbmd0aDohMTtpZighaXx8c3x8IXRoaXMuX21vdXNlQ2FwdHVyZSh0KSlyZXR1cm4hMDt0aGlzLm1vdXNlRGVsYXlNZXQ9IXRoaXMub3B0aW9ucy5kZWxheSx0aGlzLm1vdXNlRGVsYXlNZXR8fCh0aGlzLl9tb3VzZURlbGF5VGltZXI9c2V0VGltZW91dChmdW5jdGlvbigpe3IubW91c2VEZWxheU1ldD0hMH0sdGhpcy5vcHRpb25zLmRlbGF5KSk7aWYodGhpcy5fbW91c2VEaXN0YW5jZU1ldCh0KSYmdGhpcy5fbW91c2VEZWxheU1ldCh0KSl7dGhpcy5fbW91c2VTdGFydGVkPXRoaXMuX21vdXNlU3RhcnQodCkhPT0hMTtpZighdGhpcy5fbW91c2VTdGFydGVkKXJldHVybiB0LnByZXZlbnREZWZhdWx0KCksITB9cmV0dXJuITA9PT1lLmRhdGEodC50YXJnZXQsdGhpcy53aWRnZXROYW1lKyIucHJldmVudENsaWNrRXZlbnQiKSYmZS5yZW1vdmVEYXRhKHQudGFyZ2V0LHRoaXMud2lkZ2V0TmFtZSsiLnByZXZlbnRDbGlja0V2ZW50IiksdGhpcy5fbW91c2VNb3ZlRGVsZWdhdGU9ZnVuY3Rpb24oZSl7cmV0dXJuIHIuX21vdXNlTW92ZShlKX0sdGhpcy5fbW91c2VVcERlbGVnYXRlPWZ1bmN0aW9uKGUpe3JldHVybiByLl9tb3VzZVVwKGUpfSxlKGRvY3VtZW50KS5iaW5kKCJtb3VzZW1vdmUuIit0aGlzLndpZGdldE5hbWUsdGhpcy5fbW91c2VNb3ZlRGVsZWdhdGUpLmJpbmQoIm1vdXNldXAuIit0aGlzLndpZGdldE5hbWUsdGhpcy5fbW91c2VVcERlbGVnYXRlKSx0LnByZXZlbnREZWZhdWx0KCksbj0hMCwhMH0sX21vdXNlTW92ZTpmdW5jdGlvbih0KXtyZXR1cm4hZS5icm93c2VyLm1zaWV8fGRvY3VtZW50LmRvY3VtZW50TW9kZT49OXx8ISF0LmJ1dHRvbj90aGlzLl9tb3VzZVN0YXJ0ZWQ/KHRoaXMuX21vdXNlRHJhZyh0KSx0LnByZXZlbnREZWZhdWx0KCkpOih0aGlzLl9tb3VzZURpc3RhbmNlTWV0KHQpJiZ0aGlzLl9tb3VzZURlbGF5TWV0KHQpJiYodGhpcy5fbW91c2VTdGFydGVkPXRoaXMuX21vdXNlU3RhcnQodGhpcy5fbW91c2VEb3duRXZlbnQsdCkhPT0hMSx0aGlzLl9tb3VzZVN0YXJ0ZWQ/dGhpcy5fbW91c2VEcmFnKHQpOnRoaXMuX21vdXNlVXAodCkpLCF0aGlzLl9tb3VzZVN0YXJ0ZWQpOnRoaXMuX21vdXNlVXAodCl9LF9tb3VzZVVwOmZ1bmN0aW9uKHQpe3JldHVybiBlKGRvY3VtZW50KS51bmJpbmQoIm1vdXNlbW92ZS4iK3RoaXMud2lkZ2V0TmFtZSx0aGlzLl9tb3VzZU1vdmVEZWxlZ2F0ZSkudW5iaW5kKCJtb3VzZXVwLiIrdGhpcy53aWRnZXROYW1lLHRoaXMuX21vdXNlVXBEZWxlZ2F0ZSksdGhpcy5fbW91c2VTdGFydGVkJiYodGhpcy5fbW91c2VTdGFydGVkPSExLHQudGFyZ2V0PT09dGhpcy5fbW91c2VEb3duRXZlbnQudGFyZ2V0JiZlLmRhdGEodC50YXJnZXQsdGhpcy53aWRnZXROYW1lKyIucHJldmVudENsaWNrRXZlbnQiLCEwKSx0aGlzLl9tb3VzZVN0b3AodCkpLCExfSxfbW91c2VEaXN0YW5jZU1ldDpmdW5jdGlvbihlKXtyZXR1cm4gTWF0aC5tYXgoTWF0aC5hYnModGhpcy5fbW91c2VEb3duRXZlbnQucGFnZVgtZS5wYWdlWCksTWF0aC5hYnModGhpcy5fbW91c2VEb3duRXZlbnQucGFnZVktZS5wYWdlWSkpPj10aGlzLm9wdGlvbnMuZGlzdGFuY2V9LF9tb3VzZURlbGF5TWV0OmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLm1vdXNlRGVsYXlNZXR9LF9tb3VzZVN0YXJ0OmZ1bmN0aW9uKGUpe30sX21vdXNlRHJhZzpmdW5jdGlvbihlKXt9LF9tb3VzZVN0b3A6ZnVuY3Rpb24oZSl7fSxfbW91c2VDYXB0dXJlOmZ1bmN0aW9uKGUpe3JldHVybiEwfX0pfSkoalF1ZXJ5KTsoZnVuY3Rpb24oZSx0KXtmdW5jdGlvbiBoKGUsdCxuKXtyZXR1cm5bcGFyc2VJbnQoZVswXSwxMCkqKGwudGVzdChlWzBdKT90LzEwMDoxKSxwYXJzZUludChlWzFdLDEwKSoobC50ZXN0KGVbMV0pP24vMTAwOjEpXX1mdW5jdGlvbiBwKHQsbil7cmV0dXJuIHBhcnNlSW50KGUuY3NzKHQsbiksMTApfHwwfWUudWk9ZS51aXx8e307dmFyIG4scj1NYXRoLm1heCxpPU1hdGguYWJzLHM9TWF0aC5yb3VuZCxvPS9sZWZ0fGNlbnRlcnxyaWdodC8sdT0vdG9wfGNlbnRlcnxib3R0b20vLGE9L1tcK1wtXVxkKyU/LyxmPS9eXHcrLyxsPS8lJC8sYz1lLmZuLnBvc2l0aW9uO2UucG9zaXRpb249e3Njcm9sbGJhcldpZHRoOmZ1bmN0aW9uKCl7aWYobiE9PXQpcmV0dXJuIG47dmFyIHIsaSxzPWUoIjxkaXYgc3R5bGU9J2Rpc3BsYXk6YmxvY2s7d2lkdGg6NTBweDtoZWlnaHQ6NTBweDtvdmVyZmxvdzpoaWRkZW47Jz48ZGl2IHN0eWxlPSdoZWlnaHQ6MTAwcHg7d2lkdGg6YXV0bzsnPjwvZGl2PjwvZGl2PiIpLG89cy5jaGlsZHJlbigpWzBdO3JldHVybiBlKCJib2R5IikuYXBwZW5kKHMpLHI9by5vZmZzZXRXaWR0aCxzLmNzcygib3ZlcmZsb3ciLCJzY3JvbGwiKSxpPW8ub2Zmc2V0V2lkdGgscj09PWkmJihpPXNbMF0uY2xpZW50V2lkdGgpLHMucmVtb3ZlKCksbj1yLWl9LGdldFNjcm9sbEluZm86ZnVuY3Rpb24odCl7dmFyIG49dC5pc1dpbmRvdz8iIjp0LmVsZW1lbnQuY3NzKCJvdmVyZmxvdy14Iikscj10LmlzV2luZG93PyIiOnQuZWxlbWVudC5jc3MoIm92ZXJmbG93LXkiKSxpPW49PT0ic2Nyb2xsInx8bj09PSJhdXRvIiYmdC53aWR0aDx0LmVsZW1lbnRbMF0uc2Nyb2xsV2lkdGgscz1yPT09InNjcm9sbCJ8fHI9PT0iYXV0byImJnQuaGVpZ2h0PHQuZWxlbWVudFswXS5zY3JvbGxIZWlnaHQ7cmV0dXJue3dpZHRoOmk/ZS5wb3NpdGlvbi5zY3JvbGxiYXJXaWR0aCgpOjAsaGVpZ2h0OnM/ZS5wb3NpdGlvbi5zY3JvbGxiYXJXaWR0aCgpOjB9fSxnZXRXaXRoaW5JbmZvOmZ1bmN0aW9uKHQpe3ZhciBuPWUodHx8d2luZG93KSxyPWUuaXNXaW5kb3coblswXSk7cmV0dXJue2VsZW1lbnQ6bixpc1dpbmRvdzpyLG9mZnNldDpuLm9mZnNldCgpfHx7bGVmdDowLHRvcDowfSxzY3JvbGxMZWZ0Om4uc2Nyb2xsTGVmdCgpLHNjcm9sbFRvcDpuLnNjcm9sbFRvcCgpLHdpZHRoOnI/bi53aWR0aCgpOm4ub3V0ZXJXaWR0aCgpLGhlaWdodDpyP24uaGVpZ2h0KCk6bi5vdXRlckhlaWdodCgpfX19LGUuZm4ucG9zaXRpb249ZnVuY3Rpb24odCl7aWYoIXR8fCF0Lm9mKXJldHVybiBjLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt0PWUuZXh0ZW5kKHt9LHQpO3ZhciBuLGwsZCx2LG0sZz1lKHQub2YpLHk9ZS5wb3NpdGlvbi5nZXRXaXRoaW5JbmZvKHQud2l0aGluKSxiPWUucG9zaXRpb24uZ2V0U2Nyb2xsSW5mbyh5KSx3PWdbMF0sRT0odC5jb2xsaXNpb258fCJmbGlwIikuc3BsaXQoIiAiKSxTPXt9O3JldHVybiB3Lm5vZGVUeXBlPT09OT8obD1nLndpZHRoKCksZD1nLmhlaWdodCgpLHY9e3RvcDowLGxlZnQ6MH0pOmUuaXNXaW5kb3codyk/KGw9Zy53aWR0aCgpLGQ9Zy5oZWlnaHQoKSx2PXt0b3A6Zy5zY3JvbGxUb3AoKSxsZWZ0Omcuc2Nyb2xsTGVmdCgpfSk6dy5wcmV2ZW50RGVmYXVsdD8odC5hdD0ibGVmdCB0b3AiLGw9ZD0wLHY9e3RvcDp3LnBhZ2VZLGxlZnQ6dy5wYWdlWH0pOihsPWcub3V0ZXJXaWR0aCgpLGQ9Zy5vdXRlckhlaWdodCgpLHY9Zy5vZmZzZXQoKSksbT1lLmV4dGVuZCh7fSx2KSxlLmVhY2goWyJteSIsImF0Il0sZnVuY3Rpb24oKXt2YXIgZT0odFt0aGlzXXx8IiIpLnNwbGl0KCIgIiksbixyO2UubGVuZ3RoPT09MSYmKGU9by50ZXN0KGVbMF0pP2UuY29uY2F0KFsiY2VudGVyIl0pOnUudGVzdChlWzBdKT9bImNlbnRlciJdLmNvbmNhdChlKTpbImNlbnRlciIsImNlbnRlciJdKSxlWzBdPW8udGVzdChlWzBdKT9lWzBdOiJjZW50ZXIiLGVbMV09dS50ZXN0KGVbMV0pP2VbMV06ImNlbnRlciIsbj1hLmV4ZWMoZVswXSkscj1hLmV4ZWMoZVsxXSksU1t0aGlzXT1bbj9uWzBdOjAscj9yWzBdOjBdLHRbdGhpc109W2YuZXhlYyhlWzBdKVswXSxmLmV4ZWMoZVsxXSlbMF1dfSksRS5sZW5ndGg9PT0xJiYoRVsxXT1FWzBdKSx0LmF0WzBdPT09InJpZ2h0Ij9tLmxlZnQrPWw6dC5hdFswXT09PSJjZW50ZXIiJiYobS5sZWZ0Kz1sLzIpLHQuYXRbMV09PT0iYm90dG9tIj9tLnRvcCs9ZDp0LmF0WzFdPT09ImNlbnRlciImJihtLnRvcCs9ZC8yKSxuPWgoUy5hdCxsLGQpLG0ubGVmdCs9blswXSxtLnRvcCs9blsxXSx0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgbyx1LGE9ZSh0aGlzKSxmPWEub3V0ZXJXaWR0aCgpLGM9YS5vdXRlckhlaWdodCgpLHc9cCh0aGlzLCJtYXJnaW5MZWZ0IikseD1wKHRoaXMsIm1hcmdpblRvcCIpLFQ9Zit3K3AodGhpcywibWFyZ2luUmlnaHQiKStiLndpZHRoLE49Yyt4K3AodGhpcywibWFyZ2luQm90dG9tIikrYi5oZWlnaHQsQz1lLmV4dGVuZCh7fSxtKSxrPWgoUy5teSxhLm91dGVyV2lkdGgoKSxhLm91dGVySGVpZ2h0KCkpO3QubXlbMF09PT0icmlnaHQiP0MubGVmdC09Zjp0Lm15WzBdPT09ImNlbnRlciImJihDLmxlZnQtPWYvMiksdC5teVsxXT09PSJib3R0b20iP0MudG9wLT1jOnQubXlbMV09PT0iY2VudGVyIiYmKEMudG9wLT1jLzIpLEMubGVmdCs9a1swXSxDLnRvcCs9a1sxXSxlLnN1cHBvcnQub2Zmc2V0RnJhY3Rpb25zfHwoQy5sZWZ0PXMoQy5sZWZ0KSxDLnRvcD1zKEMudG9wKSksbz17bWFyZ2luTGVmdDp3LG1hcmdpblRvcDp4fSxlLmVhY2goWyJsZWZ0IiwidG9wIl0sZnVuY3Rpb24ocixpKXtlLnVpLnBvc2l0aW9uW0Vbcl1dJiZlLnVpLnBvc2l0aW9uW0Vbcl1dW2ldKEMse3RhcmdldFdpZHRoOmwsdGFyZ2V0SGVpZ2h0OmQsZWxlbVdpZHRoOmYsZWxlbUhlaWdodDpjLGNvbGxpc2lvblBvc2l0aW9uOm8sY29sbGlzaW9uV2lkdGg6VCxjb2xsaXNpb25IZWlnaHQ6TixvZmZzZXQ6W25bMF0ra1swXSxuWzFdK2tbMV1dLG15OnQubXksYXQ6dC5hdCx3aXRoaW46eSxlbGVtOmF9KX0pLGUuZm4uYmdpZnJhbWUmJmEuYmdpZnJhbWUoKSx0LnVzaW5nJiYodT1mdW5jdGlvbihlKXt2YXIgbj12LmxlZnQtQy5sZWZ0LHM9bitsLWYsbz12LnRvcC1DLnRvcCx1PW8rZC1jLGg9e3RhcmdldDp7ZWxlbWVudDpnLGxlZnQ6di5sZWZ0LHRvcDp2LnRvcCx3aWR0aDpsLGhlaWdodDpkfSxlbGVtZW50OntlbGVtZW50OmEsbGVmdDpDLmxlZnQsdG9wOkMudG9wLHdpZHRoOmYsaGVpZ2h0OmN9LGhvcml6b250YWw6czwwPyJsZWZ0IjpuPjA/InJpZ2h0IjoiY2VudGVyIix2ZXJ0aWNhbDp1PDA/InRvcCI6bz4wPyJib3R0b20iOiJtaWRkbGUifTtsPGYmJmkobitzKTxsJiYoaC5ob3Jpem9udGFsPSJjZW50ZXIiKSxkPGMmJmkobyt1KTxkJiYoaC52ZXJ0aWNhbD0ibWlkZGxlIikscihpKG4pLGkocykpPnIoaShvKSxpKHUpKT9oLmltcG9ydGFudD0iaG9yaXpvbnRhbCI6aC5pbXBvcnRhbnQ9InZlcnRpY2FsIix0LnVzaW5nLmNhbGwodGhpcyxlLGgpfSksYS5vZmZzZXQoZS5leHRlbmQoQyx7dXNpbmc6dX0pKX0pfSxlLnVpLnBvc2l0aW9uPXtmaXQ6e2xlZnQ6ZnVuY3Rpb24oZSx0KXt2YXIgbj10LndpdGhpbixpPW4uaXNXaW5kb3c/bi5zY3JvbGxMZWZ0Om4ub2Zmc2V0LmxlZnQscz1uLndpZHRoLG89ZS5sZWZ0LXQuY29sbGlzaW9uUG9zaXRpb24ubWFyZ2luTGVmdCx1PWktbyxhPW8rdC5jb2xsaXNpb25XaWR0aC1zLWksZjt0LmNvbGxpc2lvbldpZHRoPnM/dT4wJiZhPD0wPyhmPWUubGVmdCt1K3QuY29sbGlzaW9uV2lkdGgtcy1pLGUubGVmdCs9dS1mKTphPjAmJnU8PTA/ZS5sZWZ0PWk6dT5hP2UubGVmdD1pK3MtdC5jb2xsaXNpb25XaWR0aDplLmxlZnQ9aTp1PjA/ZS5sZWZ0Kz11OmE+MD9lLmxlZnQtPWE6ZS5sZWZ0PXIoZS5sZWZ0LW8sZS5sZWZ0KX0sdG9wOmZ1bmN0aW9uKGUsdCl7dmFyIG49dC53aXRoaW4saT1uLmlzV2luZG93P24uc2Nyb2xsVG9wOm4ub2Zmc2V0LnRvcCxzPXQud2l0aGluLmhlaWdodCxvPWUudG9wLXQuY29sbGlzaW9uUG9zaXRpb24ubWFyZ2luVG9wLHU9aS1vLGE9byt0LmNvbGxpc2lvbkhlaWdodC1zLWksZjt0LmNvbGxpc2lvbkhlaWdodD5zP3U+MCYmYTw9MD8oZj1lLnRvcCt1K3QuY29sbGlzaW9uSGVpZ2h0LXMtaSxlLnRvcCs9dS1mKTphPjAmJnU8PTA/ZS50b3A9aTp1PmE/ZS50b3A9aStzLXQuY29sbGlzaW9uSGVpZ2h0OmUudG9wPWk6dT4wP2UudG9wKz11OmE+MD9lLnRvcC09YTplLnRvcD1yKGUudG9wLW8sZS50b3ApfX0sZmxpcDp7bGVmdDpmdW5jdGlvbihlLHQpe3ZhciBuPXQud2l0aGluLHI9bi5vZmZzZXQubGVmdCtuLnNjcm9sbExlZnQscz1uLndpZHRoLG89bi5pc1dpbmRvdz9uLnNjcm9sbExlZnQ6bi5vZmZzZXQubGVmdCx1PWUubGVmdC10LmNvbGxpc2lvblBvc2l0aW9uLm1hcmdpbkxlZnQsYT11LW8sZj11K3QuY29sbGlzaW9uV2lkdGgtcy1vLGw9dC5teVswXT09PSJsZWZ0Ij8tdC5lbGVtV2lkdGg6dC5teVswXT09PSJyaWdodCI/dC5lbGVtV2lkdGg6MCxjPXQuYXRbMF09PT0ibGVmdCI/dC50YXJnZXRXaWR0aDp0LmF0WzBdPT09InJpZ2h0Ij8tdC50YXJnZXRXaWR0aDowLGg9LTIqdC5vZmZzZXRbMF0scCxkO2lmKGE8MCl7cD1lLmxlZnQrbCtjK2grdC5jb2xsaXNpb25XaWR0aC1zLXI7aWYocDwwfHxwPGkoYSkpZS5sZWZ0Kz1sK2MraH1lbHNlIGlmKGY+MCl7ZD1lLmxlZnQtdC5jb2xsaXNpb25Qb3NpdGlvbi5tYXJnaW5MZWZ0K2wrYytoLW87aWYoZD4wfHxpKGQpPGYpZS5sZWZ0Kz1sK2MraH19LHRvcDpmdW5jdGlvbihlLHQpe3ZhciBuPXQud2l0aGluLHI9bi5vZmZzZXQudG9wK24uc2Nyb2xsVG9wLHM9bi5oZWlnaHQsbz1uLmlzV2luZG93P24uc2Nyb2xsVG9wOm4ub2Zmc2V0LnRvcCx1PWUudG9wLXQuY29sbGlzaW9uUG9zaXRpb24ubWFyZ2luVG9wLGE9dS1vLGY9dSt0LmNvbGxpc2lvbkhlaWdodC1zLW8sbD10Lm15WzFdPT09InRvcCIsYz1sPy10LmVsZW1IZWlnaHQ6dC5teVsxXT09PSJib3R0b20iP3QuZWxlbUhlaWdodDowLGg9dC5hdFsxXT09PSJ0b3AiP3QudGFyZ2V0SGVpZ2h0OnQuYXRbMV09PT0iYm90dG9tIj8tdC50YXJnZXRIZWlnaHQ6MCxwPS0yKnQub2Zmc2V0WzFdLGQsdjthPDA/KHY9ZS50b3ArYytoK3ArdC5jb2xsaXNpb25IZWlnaHQtcy1yLGUudG9wK2MraCtwPmEmJih2PDB8fHY8aShhKSkmJihlLnRvcCs9YytoK3ApKTpmPjAmJihkPWUudG9wLXQuY29sbGlzaW9uUG9zaXRpb24ubWFyZ2luVG9wK2MraCtwLW8sZS50b3ArYytoK3A+ZiYmKGQ+MHx8aShkKTxmKSYmKGUudG9wKz1jK2grcCkpfX0sZmxpcGZpdDp7bGVmdDpmdW5jdGlvbigpe2UudWkucG9zaXRpb24uZmxpcC5sZWZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKSxlLnVpLnBvc2l0aW9uLmZpdC5sZWZ0LmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sdG9wOmZ1bmN0aW9uKCl7ZS51aS5wb3NpdGlvbi5mbGlwLnRvcC5hcHBseSh0aGlzLGFyZ3VtZW50cyksZS51aS5wb3NpdGlvbi5maXQudG9wLmFwcGx5KHRoaXMsYXJndW1lbnRzKX19fSxmdW5jdGlvbigpe3ZhciB0LG4scixpLHMsbz1kb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdLHU9ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7dD1kb2N1bWVudC5jcmVhdGVFbGVtZW50KG8/ImRpdiI6ImJvZHkiKSxyPXt2aXNpYmlsaXR5OiJoaWRkZW4iLHdpZHRoOjAsaGVpZ2h0OjAsYm9yZGVyOjAsbWFyZ2luOjAsYmFja2dyb3VuZDoibm9uZSJ9LG8mJmUuZXh0ZW5kKHIse3Bvc2l0aW9uOiJhYnNvbHV0ZSIsbGVmdDoiLTEwMDBweCIsdG9wOiItMTAwMHB4In0pO2ZvcihzIGluIHIpdC5zdHlsZVtzXT1yW3NdO3QuYXBwZW5kQ2hpbGQodSksbj1vfHxkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQsbi5pbnNlcnRCZWZvcmUodCxuLmZpcnN0Q2hpbGQpLHUuc3R5bGUuY3NzVGV4dD0icG9zaXRpb246IGFic29sdXRlOyBsZWZ0OiAxMC43NDMyMjIycHg7IixpPWUodSkub2Zmc2V0KCkubGVmdCxlLnN1cHBvcnQub2Zmc2V0RnJhY3Rpb25zPWk+MTAmJmk8MTEsdC5pbm5lckhUTUw9IiIsbi5yZW1vdmVDaGlsZCh0KX0oKSxlLnVpQmFja0NvbXBhdCE9PSExJiZmdW5jdGlvbihlKXt2YXIgbj1lLmZuLnBvc2l0aW9uO2UuZm4ucG9zaXRpb249ZnVuY3Rpb24ocil7aWYoIXJ8fCFyLm9mZnNldClyZXR1cm4gbi5jYWxsKHRoaXMscik7dmFyIGk9ci5vZmZzZXQuc3BsaXQoIiAiKSxzPXIuYXQuc3BsaXQoIiAiKTtyZXR1cm4gaS5sZW5ndGg9PT0xJiYoaVsxXT1pWzBdKSwvXlxkLy50ZXN0KGlbMF0pJiYoaVswXT0iKyIraVswXSksL15cZC8udGVzdChpWzFdKSYmKGlbMV09IisiK2lbMV0pLHMubGVuZ3RoPT09MSYmKC9sZWZ0fGNlbnRlcnxyaWdodC8udGVzdChzWzBdKT9zWzFdPSJjZW50ZXIiOihzWzFdPXNbMF0sc1swXT0iY2VudGVyIikpLG4uY2FsbCh0aGlzLGUuZXh0ZW5kKHIse2F0OnNbMF0raVswXSsiICIrc1sxXStpWzFdLG9mZnNldDp0fSkpfX0oalF1ZXJ5KX0pKGpRdWVyeSk7KGZ1bmN0aW9uKGUsdCl7ZS53aWRnZXQoInVpLmRyYWdnYWJsZSIsZS51aS5tb3VzZSx7dmVyc2lvbjoiMS45LjAiLHdpZGdldEV2ZW50UHJlZml4OiJkcmFnIixvcHRpb25zOnthZGRDbGFzc2VzOiEwLGFwcGVuZFRvOiJwYXJlbnQiLGF4aXM6ITEsY29ubmVjdFRvU29ydGFibGU6ITEsY29udGFpbm1lbnQ6ITEsY3Vyc29yOiJhdXRvIixjdXJzb3JBdDohMSxncmlkOiExLGhhbmRsZTohMSxoZWxwZXI6Im9yaWdpbmFsIixpZnJhbWVGaXg6ITEsb3BhY2l0eTohMSxyZWZyZXNoUG9zaXRpb25zOiExLHJldmVydDohMSxyZXZlcnREdXJhdGlvbjo1MDAsc2NvcGU6ImRlZmF1bHQiLHNjcm9sbDohMCxzY3JvbGxTZW5zaXRpdml0eToyMCxzY3JvbGxTcGVlZDoyMCxzbmFwOiExLHNuYXBNb2RlOiJib3RoIixzbmFwVG9sZXJhbmNlOjIwLHN0YWNrOiExLHpJbmRleDohMX0sX2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMub3B0aW9ucy5oZWxwZXI9PSJvcmlnaW5hbCImJiEvXig/OnJ8YXxmKS8udGVzdCh0aGlzLmVsZW1lbnQuY3NzKCJwb3NpdGlvbiIpKSYmKHRoaXMuZWxlbWVudFswXS5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiKSx0aGlzLm9wdGlvbnMuYWRkQ2xhc3NlcyYmdGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS1kcmFnZ2FibGUiKSx0aGlzLm9wdGlvbnMuZGlzYWJsZWQmJnRoaXMuZWxlbWVudC5hZGRDbGFzcygidWktZHJhZ2dhYmxlLWRpc2FibGVkIiksdGhpcy5fbW91c2VJbml0KCl9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1kcmFnZ2FibGUgdWktZHJhZ2dhYmxlLWRyYWdnaW5nIHVpLWRyYWdnYWJsZS1kaXNhYmxlZCIpLHRoaXMuX21vdXNlRGVzdHJveSgpfSxfbW91c2VDYXB0dXJlOmZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMub3B0aW9ucztyZXR1cm4gdGhpcy5oZWxwZXJ8fG4uZGlzYWJsZWR8fGUodC50YXJnZXQpLmlzKCIudWktcmVzaXphYmxlLWhhbmRsZSIpPyExOih0aGlzLmhhbmRsZT10aGlzLl9nZXRIYW5kbGUodCksdGhpcy5oYW5kbGU/KGUobi5pZnJhbWVGaXg9PT0hMD8iaWZyYW1lIjpuLmlmcmFtZUZpeCkuZWFjaChmdW5jdGlvbigpe2UoJzxkaXYgY2xhc3M9InVpLWRyYWdnYWJsZS1pZnJhbWVGaXgiIHN0eWxlPSJiYWNrZ3JvdW5kOiAjZmZmOyI+PC9kaXY+JykuY3NzKHt3aWR0aDp0aGlzLm9mZnNldFdpZHRoKyJweCIsaGVpZ2h0OnRoaXMub2Zmc2V0SGVpZ2h0KyJweCIscG9zaXRpb246ImFic29sdXRlIixvcGFjaXR5OiIwLjAwMSIsekluZGV4OjFlM30pLmNzcyhlKHRoaXMpLm9mZnNldCgpKS5hcHBlbmRUbygiYm9keSIpfSksITApOiExKX0sX21vdXNlU3RhcnQ6ZnVuY3Rpb24odCl7dmFyIG49dGhpcy5vcHRpb25zO3JldHVybiB0aGlzLmhlbHBlcj10aGlzLl9jcmVhdGVIZWxwZXIodCksdGhpcy5oZWxwZXIuYWRkQ2xhc3MoInVpLWRyYWdnYWJsZS1kcmFnZ2luZyIpLHRoaXMuX2NhY2hlSGVscGVyUHJvcG9ydGlvbnMoKSxlLnVpLmRkbWFuYWdlciYmKGUudWkuZGRtYW5hZ2VyLmN1cnJlbnQ9dGhpcyksdGhpcy5fY2FjaGVNYXJnaW5zKCksdGhpcy5jc3NQb3NpdGlvbj10aGlzLmhlbHBlci5jc3MoInBvc2l0aW9uIiksdGhpcy5zY3JvbGxQYXJlbnQ9dGhpcy5oZWxwZXIuc2Nyb2xsUGFyZW50KCksdGhpcy5vZmZzZXQ9dGhpcy5wb3NpdGlvbkFicz10aGlzLmVsZW1lbnQub2Zmc2V0KCksdGhpcy5vZmZzZXQ9e3RvcDp0aGlzLm9mZnNldC50b3AtdGhpcy5tYXJnaW5zLnRvcCxsZWZ0OnRoaXMub2Zmc2V0LmxlZnQtdGhpcy5tYXJnaW5zLmxlZnR9LGUuZXh0ZW5kKHRoaXMub2Zmc2V0LHtjbGljazp7bGVmdDp0LnBhZ2VYLXRoaXMub2Zmc2V0LmxlZnQsdG9wOnQucGFnZVktdGhpcy5vZmZzZXQudG9wfSxwYXJlbnQ6dGhpcy5fZ2V0UGFyZW50T2Zmc2V0KCkscmVsYXRpdmU6dGhpcy5fZ2V0UmVsYXRpdmVPZmZzZXQoKX0pLHRoaXMub3JpZ2luYWxQb3NpdGlvbj10aGlzLnBvc2l0aW9uPXRoaXMuX2dlbmVyYXRlUG9zaXRpb24odCksdGhpcy5vcmlnaW5hbFBhZ2VYPXQucGFnZVgsdGhpcy5vcmlnaW5hbFBhZ2VZPXQucGFnZVksbi5jdXJzb3JBdCYmdGhpcy5fYWRqdXN0T2Zmc2V0RnJvbUhlbHBlcihuLmN1cnNvckF0KSxuLmNvbnRhaW5tZW50JiZ0aGlzLl9zZXRDb250YWlubWVudCgpLHRoaXMuX3RyaWdnZXIoInN0YXJ0Iix0KT09PSExPyh0aGlzLl9jbGVhcigpLCExKToodGhpcy5fY2FjaGVIZWxwZXJQcm9wb3J0aW9ucygpLGUudWkuZGRtYW5hZ2VyJiYhbi5kcm9wQmVoYXZpb3VyJiZlLnVpLmRkbWFuYWdlci5wcmVwYXJlT2Zmc2V0cyh0aGlzLHQpLHRoaXMuX21vdXNlRHJhZyh0LCEwKSxlLnVpLmRkbWFuYWdlciYmZS51aS5kZG1hbmFnZXIuZHJhZ1N0YXJ0KHRoaXMsdCksITApfSxfbW91c2VEcmFnOmZ1bmN0aW9uKHQsbil7dGhpcy5wb3NpdGlvbj10aGlzLl9nZW5lcmF0ZVBvc2l0aW9uKHQpLHRoaXMucG9zaXRpb25BYnM9dGhpcy5fY29udmVydFBvc2l0aW9uVG8oImFic29sdXRlIik7aWYoIW4pe3ZhciByPXRoaXMuX3VpSGFzaCgpO2lmKHRoaXMuX3RyaWdnZXIoImRyYWciLHQscik9PT0hMSlyZXR1cm4gdGhpcy5fbW91c2VVcCh7fSksITE7dGhpcy5wb3NpdGlvbj1yLnBvc2l0aW9ufWlmKCF0aGlzLm9wdGlvbnMuYXhpc3x8dGhpcy5vcHRpb25zLmF4aXMhPSJ5Iil0aGlzLmhlbHBlclswXS5zdHlsZS5sZWZ0PXRoaXMucG9zaXRpb24ubGVmdCsicHgiO2lmKCF0aGlzLm9wdGlvbnMuYXhpc3x8dGhpcy5vcHRpb25zLmF4aXMhPSJ4Iil0aGlzLmhlbHBlclswXS5zdHlsZS50b3A9dGhpcy5wb3NpdGlvbi50b3ArInB4IjtyZXR1cm4gZS51aS5kZG1hbmFnZXImJmUudWkuZGRtYW5hZ2VyLmRyYWcodGhpcyx0KSwhMX0sX21vdXNlU3RvcDpmdW5jdGlvbih0KXt2YXIgbj0hMTtlLnVpLmRkbWFuYWdlciYmIXRoaXMub3B0aW9ucy5kcm9wQmVoYXZpb3VyJiYobj1lLnVpLmRkbWFuYWdlci5kcm9wKHRoaXMsdCkpLHRoaXMuZHJvcHBlZCYmKG49dGhpcy5kcm9wcGVkLHRoaXMuZHJvcHBlZD0hMSk7dmFyIHI9dGhpcy5lbGVtZW50WzBdLGk9ITE7d2hpbGUociYmKHI9ci5wYXJlbnROb2RlKSlyPT1kb2N1bWVudCYmKGk9ITApO2lmKCFpJiZ0aGlzLm9wdGlvbnMuaGVscGVyPT09Im9yaWdpbmFsIilyZXR1cm4hMTtpZih0aGlzLm9wdGlvbnMucmV2ZXJ0PT0iaW52YWxpZCImJiFufHx0aGlzLm9wdGlvbnMucmV2ZXJ0PT0idmFsaWQiJiZufHx0aGlzLm9wdGlvbnMucmV2ZXJ0PT09ITB8fGUuaXNGdW5jdGlvbih0aGlzLm9wdGlvbnMucmV2ZXJ0KSYmdGhpcy5vcHRpb25zLnJldmVydC5jYWxsKHRoaXMuZWxlbWVudCxuKSl7dmFyIHM9dGhpcztlKHRoaXMuaGVscGVyKS5hbmltYXRlKHRoaXMub3JpZ2luYWxQb3NpdGlvbixwYXJzZUludCh0aGlzLm9wdGlvbnMucmV2ZXJ0RHVyYXRpb24sMTApLGZ1bmN0aW9uKCl7cy5fdHJpZ2dlcigic3RvcCIsdCkhPT0hMSYmcy5fY2xlYXIoKX0pfWVsc2UgdGhpcy5fdHJpZ2dlcigic3RvcCIsdCkhPT0hMSYmdGhpcy5fY2xlYXIoKTtyZXR1cm4hMX0sX21vdXNlVXA6ZnVuY3Rpb24odCl7cmV0dXJuIGUoImRpdi51aS1kcmFnZ2FibGUtaWZyYW1lRml4IikuZWFjaChmdW5jdGlvbigpe3RoaXMucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzKX0pLGUudWkuZGRtYW5hZ2VyJiZlLnVpLmRkbWFuYWdlci5kcmFnU3RvcCh0aGlzLHQpLGUudWkubW91c2UucHJvdG90eXBlLl9tb3VzZVVwLmNhbGwodGhpcyx0KX0sY2FuY2VsOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuaGVscGVyLmlzKCIudWktZHJhZ2dhYmxlLWRyYWdnaW5nIik/dGhpcy5fbW91c2VVcCh7fSk6dGhpcy5fY2xlYXIoKSx0aGlzfSxfZ2V0SGFuZGxlOmZ1bmN0aW9uKHQpe3ZhciBuPSF0aGlzLm9wdGlvbnMuaGFuZGxlfHwhZSh0aGlzLm9wdGlvbnMuaGFuZGxlLHRoaXMuZWxlbWVudCkubGVuZ3RoPyEwOiExO3JldHVybiBlKHRoaXMub3B0aW9ucy5oYW5kbGUsdGhpcy5lbGVtZW50KS5maW5kKCIqIikuYW5kU2VsZigpLmVhY2goZnVuY3Rpb24oKXt0aGlzPT10LnRhcmdldCYmKG49ITApfSksbn0sX2NyZWF0ZUhlbHBlcjpmdW5jdGlvbih0KXt2YXIgbj10aGlzLm9wdGlvbnMscj1lLmlzRnVuY3Rpb24obi5oZWxwZXIpP2Uobi5oZWxwZXIuYXBwbHkodGhpcy5lbGVtZW50WzBdLFt0XSkpOm4uaGVscGVyPT0iY2xvbmUiP3RoaXMuZWxlbWVudC5jbG9uZSgpLnJlbW92ZUF0dHIoImlkIik6dGhpcy5lbGVtZW50O3JldHVybiByLnBhcmVudHMoImJvZHkiKS5sZW5ndGh8fHIuYXBwZW5kVG8obi5hcHBlbmRUbz09InBhcmVudCI/dGhpcy5lbGVtZW50WzBdLnBhcmVudE5vZGU6bi5hcHBlbmRUbyksclswXSE9dGhpcy5lbGVtZW50WzBdJiYhLyhmaXhlZHxhYnNvbHV0ZSkvLnRlc3Qoci5jc3MoInBvc2l0aW9uIikpJiZyLmNzcygicG9zaXRpb24iLCJhYnNvbHV0ZSIpLHJ9LF9hZGp1c3RPZmZzZXRGcm9tSGVscGVyOmZ1bmN0aW9uKHQpe3R5cGVvZiB0PT0ic3RyaW5nIiYmKHQ9dC5zcGxpdCgiICIpKSxlLmlzQXJyYXkodCkmJih0PXtsZWZ0Oit0WzBdLHRvcDordFsxXXx8MH0pLCJsZWZ0ImluIHQmJih0aGlzLm9mZnNldC5jbGljay5sZWZ0PXQubGVmdCt0aGlzLm1hcmdpbnMubGVmdCksInJpZ2h0ImluIHQmJih0aGlzLm9mZnNldC5jbGljay5sZWZ0PXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgtdC5yaWdodCt0aGlzLm1hcmdpbnMubGVmdCksInRvcCJpbiB0JiYodGhpcy5vZmZzZXQuY2xpY2sudG9wPXQudG9wK3RoaXMubWFyZ2lucy50b3ApLCJib3R0b20iaW4gdCYmKHRoaXMub2Zmc2V0LmNsaWNrLnRvcD10aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC10LmJvdHRvbSt0aGlzLm1hcmdpbnMudG9wKX0sX2dldFBhcmVudE9mZnNldDpmdW5jdGlvbigpe3RoaXMub2Zmc2V0UGFyZW50PXRoaXMuaGVscGVyLm9mZnNldFBhcmVudCgpO3ZhciB0PXRoaXMub2Zmc2V0UGFyZW50Lm9mZnNldCgpO3RoaXMuY3NzUG9zaXRpb249PSJhYnNvbHV0ZSImJnRoaXMuc2Nyb2xsUGFyZW50WzBdIT1kb2N1bWVudCYmZS5jb250YWlucyh0aGlzLnNjcm9sbFBhcmVudFswXSx0aGlzLm9mZnNldFBhcmVudFswXSkmJih0LmxlZnQrPXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbExlZnQoKSx0LnRvcCs9dGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsVG9wKCkpO2lmKHRoaXMub2Zmc2V0UGFyZW50WzBdPT1kb2N1bWVudC5ib2R5fHx0aGlzLm9mZnNldFBhcmVudFswXS50YWdOYW1lJiZ0aGlzLm9mZnNldFBhcmVudFswXS50YWdOYW1lLnRvTG93ZXJDYXNlKCk9PSJodG1sIiYmZS5icm93c2VyLm1zaWUpdD17dG9wOjAsbGVmdDowfTtyZXR1cm57dG9wOnQudG9wKyhwYXJzZUludCh0aGlzLm9mZnNldFBhcmVudC5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHwwKSxsZWZ0OnQubGVmdCsocGFyc2VJbnQodGhpcy5vZmZzZXRQYXJlbnQuY3NzKCJib3JkZXJMZWZ0V2lkdGgiKSwxMCl8fDApfX0sX2dldFJlbGF0aXZlT2Zmc2V0OmZ1bmN0aW9uKCl7aWYodGhpcy5jc3NQb3NpdGlvbj09InJlbGF0aXZlIil7dmFyIGU9dGhpcy5lbGVtZW50LnBvc2l0aW9uKCk7cmV0dXJue3RvcDplLnRvcC0ocGFyc2VJbnQodGhpcy5oZWxwZXIuY3NzKCJ0b3AiKSwxMCl8fDApK3RoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbFRvcCgpLGxlZnQ6ZS5sZWZ0LShwYXJzZUludCh0aGlzLmhlbHBlci5jc3MoImxlZnQiKSwxMCl8fDApK3RoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbExlZnQoKX19cmV0dXJue3RvcDowLGxlZnQ6MH19LF9jYWNoZU1hcmdpbnM6ZnVuY3Rpb24oKXt0aGlzLm1hcmdpbnM9e2xlZnQ6cGFyc2VJbnQodGhpcy5lbGVtZW50LmNzcygibWFyZ2luTGVmdCIpLDEwKXx8MCx0b3A6cGFyc2VJbnQodGhpcy5lbGVtZW50LmNzcygibWFyZ2luVG9wIiksMTApfHwwLHJpZ2h0OnBhcnNlSW50KHRoaXMuZWxlbWVudC5jc3MoIm1hcmdpblJpZ2h0IiksMTApfHwwLGJvdHRvbTpwYXJzZUludCh0aGlzLmVsZW1lbnQuY3NzKCJtYXJnaW5Cb3R0b20iKSwxMCl8fDB9fSxfY2FjaGVIZWxwZXJQcm9wb3J0aW9uczpmdW5jdGlvbigpe3RoaXMuaGVscGVyUHJvcG9ydGlvbnM9e3dpZHRoOnRoaXMuaGVscGVyLm91dGVyV2lkdGgoKSxoZWlnaHQ6dGhpcy5oZWxwZXIub3V0ZXJIZWlnaHQoKX19LF9zZXRDb250YWlubWVudDpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3B0aW9uczt0LmNvbnRhaW5tZW50PT0icGFyZW50IiYmKHQuY29udGFpbm1lbnQ9dGhpcy5oZWxwZXJbMF0ucGFyZW50Tm9kZSk7aWYodC5jb250YWlubWVudD09ImRvY3VtZW50Inx8dC5jb250YWlubWVudD09IndpbmRvdyIpdGhpcy5jb250YWlubWVudD1bdC5jb250YWlubWVudD09ImRvY3VtZW50Ij8wOmUod2luZG93KS5zY3JvbGxMZWZ0KCktdGhpcy5vZmZzZXQucmVsYXRpdmUubGVmdC10aGlzLm9mZnNldC5wYXJlbnQubGVmdCx0LmNvbnRhaW5tZW50PT0iZG9jdW1lbnQiPzA6ZSh3aW5kb3cpLnNjcm9sbFRvcCgpLXRoaXMub2Zmc2V0LnJlbGF0aXZlLnRvcC10aGlzLm9mZnNldC5wYXJlbnQudG9wLCh0LmNvbnRhaW5tZW50PT0iZG9jdW1lbnQiPzA6ZSh3aW5kb3cpLnNjcm9sbExlZnQoKSkrZSh0LmNvbnRhaW5tZW50PT0iZG9jdW1lbnQiP2RvY3VtZW50OndpbmRvdykud2lkdGgoKS10aGlzLmhlbHBlclByb3BvcnRpb25zLndpZHRoLXRoaXMubWFyZ2lucy5sZWZ0LCh0LmNvbnRhaW5tZW50PT0iZG9jdW1lbnQiPzA6ZSh3aW5kb3cpLnNjcm9sbFRvcCgpKSsoZSh0LmNvbnRhaW5tZW50PT0iZG9jdW1lbnQiP2RvY3VtZW50OndpbmRvdykuaGVpZ2h0KCl8fGRvY3VtZW50LmJvZHkucGFyZW50Tm9kZS5zY3JvbGxIZWlnaHQpLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LXRoaXMubWFyZ2lucy50b3BdO2lmKCEvXihkb2N1bWVudHx3aW5kb3d8cGFyZW50KSQvLnRlc3QodC5jb250YWlubWVudCkmJnQuY29udGFpbm1lbnQuY29uc3RydWN0b3IhPUFycmF5KXt2YXIgbj1lKHQuY29udGFpbm1lbnQpLHI9blswXTtpZighcilyZXR1cm47dmFyIGk9bi5vZmZzZXQoKSxzPWUocikuY3NzKCJvdmVyZmxvdyIpIT0iaGlkZGVuIjt0aGlzLmNvbnRhaW5tZW50PVsocGFyc2VJbnQoZShyKS5jc3MoImJvcmRlckxlZnRXaWR0aCIpLDEwKXx8MCkrKHBhcnNlSW50KGUocikuY3NzKCJwYWRkaW5nTGVmdCIpLDEwKXx8MCksKHBhcnNlSW50KGUocikuY3NzKCJib3JkZXJUb3BXaWR0aCIpLDEwKXx8MCkrKHBhcnNlSW50KGUocikuY3NzKCJwYWRkaW5nVG9wIiksMTApfHwwKSwocz9NYXRoLm1heChyLnNjcm9sbFdpZHRoLHIub2Zmc2V0V2lkdGgpOnIub2Zmc2V0V2lkdGgpLShwYXJzZUludChlKHIpLmNzcygiYm9yZGVyTGVmdFdpZHRoIiksMTApfHwwKS0ocGFyc2VJbnQoZShyKS5jc3MoInBhZGRpbmdSaWdodCIpLDEwKXx8MCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aC10aGlzLm1hcmdpbnMubGVmdC10aGlzLm1hcmdpbnMucmlnaHQsKHM/TWF0aC5tYXgoci5zY3JvbGxIZWlnaHQsci5vZmZzZXRIZWlnaHQpOnIub2Zmc2V0SGVpZ2h0KS0ocGFyc2VJbnQoZShyKS5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHwwKS0ocGFyc2VJbnQoZShyKS5jc3MoInBhZGRpbmdCb3R0b20iKSwxMCl8fDApLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LXRoaXMubWFyZ2lucy50b3AtdGhpcy5tYXJnaW5zLmJvdHRvbV0sdGhpcy5yZWxhdGl2ZV9jb250YWluZXI9bn1lbHNlIHQuY29udGFpbm1lbnQuY29uc3RydWN0b3I9PUFycmF5JiYodGhpcy5jb250YWlubWVudD10LmNvbnRhaW5tZW50KX0sX2NvbnZlcnRQb3NpdGlvblRvOmZ1bmN0aW9uKHQsbil7bnx8KG49dGhpcy5wb3NpdGlvbik7dmFyIHI9dD09ImFic29sdXRlIj8xOi0xLGk9dGhpcy5vcHRpb25zLHM9dGhpcy5jc3NQb3NpdGlvbiE9ImFic29sdXRlInx8dGhpcy5zY3JvbGxQYXJlbnRbMF0hPWRvY3VtZW50JiYhIWUuY29udGFpbnModGhpcy5zY3JvbGxQYXJlbnRbMF0sdGhpcy5vZmZzZXRQYXJlbnRbMF0pP3RoaXMuc2Nyb2xsUGFyZW50OnRoaXMub2Zmc2V0UGFyZW50LG89LyhodG1sfGJvZHkpL2kudGVzdChzWzBdLnRhZ05hbWUpO3JldHVybnt0b3A6bi50b3ArdGhpcy5vZmZzZXQucmVsYXRpdmUudG9wKnIrdGhpcy5vZmZzZXQucGFyZW50LnRvcCpyLSh0aGlzLmNzc1Bvc2l0aW9uPT0iZml4ZWQiPy10aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxUb3AoKTpvPzA6cy5zY3JvbGxUb3AoKSkqcixsZWZ0Om4ubGVmdCt0aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0KnIrdGhpcy5vZmZzZXQucGFyZW50LmxlZnQqci0odGhpcy5jc3NQb3NpdGlvbj09ImZpeGVkIj8tdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsTGVmdCgpOm8/MDpzLnNjcm9sbExlZnQoKSkqcn19LF9nZW5lcmF0ZVBvc2l0aW9uOmZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMub3B0aW9ucyxyPXRoaXMuY3NzUG9zaXRpb24hPSJhYnNvbHV0ZSJ8fHRoaXMuc2Nyb2xsUGFyZW50WzBdIT1kb2N1bWVudCYmISFlLmNvbnRhaW5zKHRoaXMuc2Nyb2xsUGFyZW50WzBdLHRoaXMub2Zmc2V0UGFyZW50WzBdKT90aGlzLnNjcm9sbFBhcmVudDp0aGlzLm9mZnNldFBhcmVudCxpPS8oaHRtbHxib2R5KS9pLnRlc3QoclswXS50YWdOYW1lKSxzPXQucGFnZVgsbz10LnBhZ2VZO2lmKHRoaXMub3JpZ2luYWxQb3NpdGlvbil7dmFyIHU7aWYodGhpcy5jb250YWlubWVudCl7aWYodGhpcy5yZWxhdGl2ZV9jb250YWluZXIpe3ZhciBhPXRoaXMucmVsYXRpdmVfY29udGFpbmVyLm9mZnNldCgpO3U9W3RoaXMuY29udGFpbm1lbnRbMF0rYS5sZWZ0LHRoaXMuY29udGFpbm1lbnRbMV0rYS50b3AsdGhpcy5jb250YWlubWVudFsyXSthLmxlZnQsdGhpcy5jb250YWlubWVudFszXSthLnRvcF19ZWxzZSB1PXRoaXMuY29udGFpbm1lbnQ7dC5wYWdlWC10aGlzLm9mZnNldC5jbGljay5sZWZ0PHVbMF0mJihzPXVbMF0rdGhpcy5vZmZzZXQuY2xpY2subGVmdCksdC5wYWdlWS10aGlzLm9mZnNldC5jbGljay50b3A8dVsxXSYmKG89dVsxXSt0aGlzLm9mZnNldC5jbGljay50b3ApLHQucGFnZVgtdGhpcy5vZmZzZXQuY2xpY2subGVmdD51WzJdJiYocz11WzJdK3RoaXMub2Zmc2V0LmNsaWNrLmxlZnQpLHQucGFnZVktdGhpcy5vZmZzZXQuY2xpY2sudG9wPnVbM10mJihvPXVbM10rdGhpcy5vZmZzZXQuY2xpY2sudG9wKX1pZihuLmdyaWQpe3ZhciBmPW4uZ3JpZFsxXT90aGlzLm9yaWdpbmFsUGFnZVkrTWF0aC5yb3VuZCgoby10aGlzLm9yaWdpbmFsUGFnZVkpL24uZ3JpZFsxXSkqbi5ncmlkWzFdOnRoaXMub3JpZ2luYWxQYWdlWTtvPXU/Zi10aGlzLm9mZnNldC5jbGljay50b3A8dVsxXXx8Zi10aGlzLm9mZnNldC5jbGljay50b3A+dVszXT9mLXRoaXMub2Zmc2V0LmNsaWNrLnRvcDx1WzFdP2Yrbi5ncmlkWzFdOmYtbi5ncmlkWzFdOmY6Zjt2YXIgbD1uLmdyaWRbMF0/dGhpcy5vcmlnaW5hbFBhZ2VYK01hdGgucm91bmQoKHMtdGhpcy5vcmlnaW5hbFBhZ2VYKS9uLmdyaWRbMF0pKm4uZ3JpZFswXTp0aGlzLm9yaWdpbmFsUGFnZVg7cz11P2wtdGhpcy5vZmZzZXQuY2xpY2subGVmdDx1WzBdfHxsLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ+dVsyXT9sLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ8dVswXT9sK24uZ3JpZFswXTpsLW4uZ3JpZFswXTpsOmx9fXJldHVybnt0b3A6by10aGlzLm9mZnNldC5jbGljay50b3AtdGhpcy5vZmZzZXQucmVsYXRpdmUudG9wLXRoaXMub2Zmc2V0LnBhcmVudC50b3ArKHRoaXMuY3NzUG9zaXRpb249PSJmaXhlZCI/LXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbFRvcCgpOmk/MDpyLnNjcm9sbFRvcCgpKSxsZWZ0OnMtdGhpcy5vZmZzZXQuY2xpY2subGVmdC10aGlzLm9mZnNldC5yZWxhdGl2ZS5sZWZ0LXRoaXMub2Zmc2V0LnBhcmVudC5sZWZ0Kyh0aGlzLmNzc1Bvc2l0aW9uPT0iZml4ZWQiPy10aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxMZWZ0KCk6aT8wOnIuc2Nyb2xsTGVmdCgpKX19LF9jbGVhcjpmdW5jdGlvbigpe3RoaXMuaGVscGVyLnJlbW92ZUNsYXNzKCJ1aS1kcmFnZ2FibGUtZHJhZ2dpbmciKSx0aGlzLmhlbHBlclswXSE9dGhpcy5lbGVtZW50WzBdJiYhdGhpcy5jYW5jZWxIZWxwZXJSZW1vdmFsJiZ0aGlzLmhlbHBlci5yZW1vdmUoKSx0aGlzLmhlbHBlcj1udWxsLHRoaXMuY2FuY2VsSGVscGVyUmVtb3ZhbD0hMX0sX3RyaWdnZXI6ZnVuY3Rpb24odCxuLHIpe3JldHVybiByPXJ8fHRoaXMuX3VpSGFzaCgpLGUudWkucGx1Z2luLmNhbGwodGhpcyx0LFtuLHJdKSx0PT0iZHJhZyImJih0aGlzLnBvc2l0aW9uQWJzPXRoaXMuX2NvbnZlcnRQb3NpdGlvblRvKCJhYnNvbHV0ZSIpKSxlLldpZGdldC5wcm90b3R5cGUuX3RyaWdnZXIuY2FsbCh0aGlzLHQsbixyKX0scGx1Z2luczp7fSxfdWlIYXNoOmZ1bmN0aW9uKGUpe3JldHVybntoZWxwZXI6dGhpcy5oZWxwZXIscG9zaXRpb246dGhpcy5wb3NpdGlvbixvcmlnaW5hbFBvc2l0aW9uOnRoaXMub3JpZ2luYWxQb3NpdGlvbixvZmZzZXQ6dGhpcy5wb3NpdGlvbkFic319fSksZS51aS5wbHVnaW4uYWRkKCJkcmFnZ2FibGUiLCJjb25uZWN0VG9Tb3J0YWJsZSIse3N0YXJ0OmZ1bmN0aW9uKHQsbil7dmFyIHI9ZSh0aGlzKS5kYXRhKCJkcmFnZ2FibGUiKSxpPXIub3B0aW9ucyxzPWUuZXh0ZW5kKHt9LG4se2l0ZW06ci5lbGVtZW50fSk7ci5zb3J0YWJsZXM9W10sZShpLmNvbm5lY3RUb1NvcnRhYmxlKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIG49ZS5kYXRhKHRoaXMsInNvcnRhYmxlIik7biYmIW4ub3B0aW9ucy5kaXNhYmxlZCYmKHIuc29ydGFibGVzLnB1c2goe2luc3RhbmNlOm4sc2hvdWxkUmV2ZXJ0Om4ub3B0aW9ucy5yZXZlcnR9KSxuLnJlZnJlc2hQb3NpdGlvbnMoKSxuLl90cmlnZ2VyKCJhY3RpdmF0ZSIsdCxzKSl9KX0sc3RvcDpmdW5jdGlvbih0LG4pe3ZhciByPWUodGhpcykuZGF0YSgiZHJhZ2dhYmxlIiksaT1lLmV4dGVuZCh7fSxuLHtpdGVtOnIuZWxlbWVudH0pO2UuZWFjaChyLnNvcnRhYmxlcyxmdW5jdGlvbigpe3RoaXMuaW5zdGFuY2UuaXNPdmVyPyh0aGlzLmluc3RhbmNlLmlzT3Zlcj0wLHIuY2FuY2VsSGVscGVyUmVtb3ZhbD0hMCx0aGlzLmluc3RhbmNlLmNhbmNlbEhlbHBlclJlbW92YWw9ITEsdGhpcy5zaG91bGRSZXZlcnQmJih0aGlzLmluc3RhbmNlLm9wdGlvbnMucmV2ZXJ0PSEwKSx0aGlzLmluc3RhbmNlLl9tb3VzZVN0b3AodCksdGhpcy5pbnN0YW5jZS5vcHRpb25zLmhlbHBlcj10aGlzLmluc3RhbmNlLm9wdGlvbnMuX2hlbHBlcixyLm9wdGlvbnMuaGVscGVyPT0ib3JpZ2luYWwiJiZ0aGlzLmluc3RhbmNlLmN1cnJlbnRJdGVtLmNzcyh7dG9wOiJhdXRvIixsZWZ0OiJhdXRvIn0pKToodGhpcy5pbnN0YW5jZS5jYW5jZWxIZWxwZXJSZW1vdmFsPSExLHRoaXMuaW5zdGFuY2UuX3RyaWdnZXIoImRlYWN0aXZhdGUiLHQsaSkpfSl9LGRyYWc6ZnVuY3Rpb24odCxuKXt2YXIgcj1lKHRoaXMpLmRhdGEoImRyYWdnYWJsZSIpLGk9dGhpcyxzPWZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMub2Zmc2V0LmNsaWNrLnRvcCxyPXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQsaT10aGlzLnBvc2l0aW9uQWJzLnRvcCxzPXRoaXMucG9zaXRpb25BYnMubGVmdCxvPXQuaGVpZ2h0LHU9dC53aWR0aCxhPXQudG9wLGY9dC5sZWZ0O3JldHVybiBlLnVpLmlzT3ZlcihpK24scytyLGEsZixvLHUpfTtlLmVhY2goci5zb3J0YWJsZXMsZnVuY3Rpb24ocyl7dGhpcy5pbnN0YW5jZS5wb3NpdGlvbkFicz1yLnBvc2l0aW9uQWJzLHRoaXMuaW5zdGFuY2UuaGVscGVyUHJvcG9ydGlvbnM9ci5oZWxwZXJQcm9wb3J0aW9ucyx0aGlzLmluc3RhbmNlLm9mZnNldC5jbGljaz1yLm9mZnNldC5jbGljayx0aGlzLmluc3RhbmNlLl9pbnRlcnNlY3RzV2l0aCh0aGlzLmluc3RhbmNlLmNvbnRhaW5lckNhY2hlKT8odGhpcy5pbnN0YW5jZS5pc092ZXJ8fCh0aGlzLmluc3RhbmNlLmlzT3Zlcj0xLHRoaXMuaW5zdGFuY2UuY3VycmVudEl0ZW09ZShpKS5jbG9uZSgpLnJlbW92ZUF0dHIoImlkIikuYXBwZW5kVG8odGhpcy5pbnN0YW5jZS5lbGVtZW50KS5kYXRhKCJzb3J0YWJsZS1pdGVtIiwhMCksdGhpcy5pbnN0YW5jZS5vcHRpb25zLl9oZWxwZXI9dGhpcy5pbnN0YW5jZS5vcHRpb25zLmhlbHBlcix0aGlzLmluc3RhbmNlLm9wdGlvbnMuaGVscGVyPWZ1bmN0aW9uKCl7cmV0dXJuIG4uaGVscGVyWzBdfSx0LnRhcmdldD10aGlzLmluc3RhbmNlLmN1cnJlbnRJdGVtWzBdLHRoaXMuaW5zdGFuY2UuX21vdXNlQ2FwdHVyZSh0LCEwKSx0aGlzLmluc3RhbmNlLl9tb3VzZVN0YXJ0KHQsITAsITApLHRoaXMuaW5zdGFuY2Uub2Zmc2V0LmNsaWNrLnRvcD1yLm9mZnNldC5jbGljay50b3AsdGhpcy5pbnN0YW5jZS5vZmZzZXQuY2xpY2subGVmdD1yLm9mZnNldC5jbGljay5sZWZ0LHRoaXMuaW5zdGFuY2Uub2Zmc2V0LnBhcmVudC5sZWZ0LT1yLm9mZnNldC5wYXJlbnQubGVmdC10aGlzLmluc3RhbmNlLm9mZnNldC5wYXJlbnQubGVmdCx0aGlzLmluc3RhbmNlLm9mZnNldC5wYXJlbnQudG9wLT1yLm9mZnNldC5wYXJlbnQudG9wLXRoaXMuaW5zdGFuY2Uub2Zmc2V0LnBhcmVudC50b3Asci5fdHJpZ2dlcigidG9Tb3J0YWJsZSIsdCksci5kcm9wcGVkPXRoaXMuaW5zdGFuY2UuZWxlbWVudCxyLmN1cnJlbnRJdGVtPXIuZWxlbWVudCx0aGlzLmluc3RhbmNlLmZyb21PdXRzaWRlPXIpLHRoaXMuaW5zdGFuY2UuY3VycmVudEl0ZW0mJnRoaXMuaW5zdGFuY2UuX21vdXNlRHJhZyh0KSk6dGhpcy5pbnN0YW5jZS5pc092ZXImJih0aGlzLmluc3RhbmNlLmlzT3Zlcj0wLHRoaXMuaW5zdGFuY2UuY2FuY2VsSGVscGVyUmVtb3ZhbD0hMCx0aGlzLmluc3RhbmNlLm9wdGlvbnMucmV2ZXJ0PSExLHRoaXMuaW5zdGFuY2UuX3RyaWdnZXIoIm91dCIsdCx0aGlzLmluc3RhbmNlLl91aUhhc2godGhpcy5pbnN0YW5jZSkpLHRoaXMuaW5zdGFuY2UuX21vdXNlU3RvcCh0LCEwKSx0aGlzLmluc3RhbmNlLm9wdGlvbnMuaGVscGVyPXRoaXMuaW5zdGFuY2Uub3B0aW9ucy5faGVscGVyLHRoaXMuaW5zdGFuY2UuY3VycmVudEl0ZW0ucmVtb3ZlKCksdGhpcy5pbnN0YW5jZS5wbGFjZWhvbGRlciYmdGhpcy5pbnN0YW5jZS5wbGFjZWhvbGRlci5yZW1vdmUoKSxyLl90cmlnZ2VyKCJmcm9tU29ydGFibGUiLHQpLHIuZHJvcHBlZD0hMSl9KX19KSxlLnVpLnBsdWdpbi5hZGQoImRyYWdnYWJsZSIsImN1cnNvciIse3N0YXJ0OmZ1bmN0aW9uKHQsbil7dmFyIHI9ZSgiYm9keSIpLGk9ZSh0aGlzKS5kYXRhKCJkcmFnZ2FibGUiKS5vcHRpb25zO3IuY3NzKCJjdXJzb3IiKSYmKGkuX2N1cnNvcj1yLmNzcygiY3Vyc29yIikpLHIuY3NzKCJjdXJzb3IiLGkuY3Vyc29yKX0sc3RvcDpmdW5jdGlvbih0LG4pe3ZhciByPWUodGhpcykuZGF0YSgiZHJhZ2dhYmxlIikub3B0aW9ucztyLl9jdXJzb3ImJmUoImJvZHkiKS5jc3MoImN1cnNvciIsci5fY3Vyc29yKX19KSxlLnVpLnBsdWdpbi5hZGQoImRyYWdnYWJsZSIsIm9wYWNpdHkiLHtzdGFydDpmdW5jdGlvbih0LG4pe3ZhciByPWUobi5oZWxwZXIpLGk9ZSh0aGlzKS5kYXRhKCJkcmFnZ2FibGUiKS5vcHRpb25zO3IuY3NzKCJvcGFjaXR5IikmJihpLl9vcGFjaXR5PXIuY3NzKCJvcGFjaXR5IikpLHIuY3NzKCJvcGFjaXR5IixpLm9wYWNpdHkpfSxzdG9wOmZ1bmN0aW9uKHQsbil7dmFyIHI9ZSh0aGlzKS5kYXRhKCJkcmFnZ2FibGUiKS5vcHRpb25zO3IuX29wYWNpdHkmJmUobi5oZWxwZXIpLmNzcygib3BhY2l0eSIsci5fb3BhY2l0eSl9fSksZS51aS5wbHVnaW4uYWRkKCJkcmFnZ2FibGUiLCJzY3JvbGwiLHtzdGFydDpmdW5jdGlvbih0LG4pe3ZhciByPWUodGhpcykuZGF0YSgiZHJhZ2dhYmxlIik7ci5zY3JvbGxQYXJlbnRbMF0hPWRvY3VtZW50JiZyLnNjcm9sbFBhcmVudFswXS50YWdOYW1lIT0iSFRNTCImJihyLm92ZXJmbG93T2Zmc2V0PXIuc2Nyb2xsUGFyZW50Lm9mZnNldCgpKX0sZHJhZzpmdW5jdGlvbih0LG4pe3ZhciByPWUodGhpcykuZGF0YSgiZHJhZ2dhYmxlIiksaT1yLm9wdGlvbnMscz0hMTtpZihyLnNjcm9sbFBhcmVudFswXSE9ZG9jdW1lbnQmJnIuc2Nyb2xsUGFyZW50WzBdLnRhZ05hbWUhPSJIVE1MIil7aWYoIWkuYXhpc3x8aS5heGlzIT0ieCIpci5vdmVyZmxvd09mZnNldC50b3Arci5zY3JvbGxQYXJlbnRbMF0ub2Zmc2V0SGVpZ2h0LXQucGFnZVk8aS5zY3JvbGxTZW5zaXRpdml0eT9yLnNjcm9sbFBhcmVudFswXS5zY3JvbGxUb3A9cz1yLnNjcm9sbFBhcmVudFswXS5zY3JvbGxUb3AraS5zY3JvbGxTcGVlZDp0LnBhZ2VZLXIub3ZlcmZsb3dPZmZzZXQudG9wPGkuc2Nyb2xsU2Vuc2l0aXZpdHkmJihyLnNjcm9sbFBhcmVudFswXS5zY3JvbGxUb3A9cz1yLnNjcm9sbFBhcmVudFswXS5zY3JvbGxUb3AtaS5zY3JvbGxTcGVlZCk7aWYoIWkuYXhpc3x8aS5heGlzIT0ieSIpci5vdmVyZmxvd09mZnNldC5sZWZ0K3Iuc2Nyb2xsUGFyZW50WzBdLm9mZnNldFdpZHRoLXQucGFnZVg8aS5zY3JvbGxTZW5zaXRpdml0eT9yLnNjcm9sbFBhcmVudFswXS5zY3JvbGxMZWZ0PXM9ci5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsTGVmdCtpLnNjcm9sbFNwZWVkOnQucGFnZVgtci5vdmVyZmxvd09mZnNldC5sZWZ0PGkuc2Nyb2xsU2Vuc2l0aXZpdHkmJihyLnNjcm9sbFBhcmVudFswXS5zY3JvbGxMZWZ0PXM9ci5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsTGVmdC1pLnNjcm9sbFNwZWVkKX1lbHNle2lmKCFpLmF4aXN8fGkuYXhpcyE9IngiKXQucGFnZVktZShkb2N1bWVudCkuc2Nyb2xsVG9wKCk8aS5zY3JvbGxTZW5zaXRpdml0eT9zPWUoZG9jdW1lbnQpLnNjcm9sbFRvcChlKGRvY3VtZW50KS5zY3JvbGxUb3AoKS1pLnNjcm9sbFNwZWVkKTplKHdpbmRvdykuaGVpZ2h0KCktKHQucGFnZVktZShkb2N1bWVudCkuc2Nyb2xsVG9wKCkpPGkuc2Nyb2xsU2Vuc2l0aXZpdHkmJihzPWUoZG9jdW1lbnQpLnNjcm9sbFRvcChlKGRvY3VtZW50KS5zY3JvbGxUb3AoKStpLnNjcm9sbFNwZWVkKSk7aWYoIWkuYXhpc3x8aS5heGlzIT0ieSIpdC5wYWdlWC1lKGRvY3VtZW50KS5zY3JvbGxMZWZ0KCk8aS5zY3JvbGxTZW5zaXRpdml0eT9zPWUoZG9jdW1lbnQpLnNjcm9sbExlZnQoZShkb2N1bWVudCkuc2Nyb2xsTGVmdCgpLWkuc2Nyb2xsU3BlZWQpOmUod2luZG93KS53aWR0aCgpLSh0LnBhZ2VYLWUoZG9jdW1lbnQpLnNjcm9sbExlZnQoKSk8aS5zY3JvbGxTZW5zaXRpdml0eSYmKHM9ZShkb2N1bWVudCkuc2Nyb2xsTGVmdChlKGRvY3VtZW50KS5zY3JvbGxMZWZ0KCkraS5zY3JvbGxTcGVlZCkpfXMhPT0hMSYmZS51aS5kZG1hbmFnZXImJiFpLmRyb3BCZWhhdmlvdXImJmUudWkuZGRtYW5hZ2VyLnByZXBhcmVPZmZzZXRzKHIsdCl9fSksZS51aS5wbHVnaW4uYWRkKCJkcmFnZ2FibGUiLCJzbmFwIix7c3RhcnQ6ZnVuY3Rpb24odCxuKXt2YXIgcj1lKHRoaXMpLmRhdGEoImRyYWdnYWJsZSIpLGk9ci5vcHRpb25zO3Iuc25hcEVsZW1lbnRzPVtdLGUoaS5zbmFwLmNvbnN0cnVjdG9yIT1TdHJpbmc/aS5zbmFwLml0ZW1zfHwiOmRhdGEoZHJhZ2dhYmxlKSI6aS5zbmFwKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKSxuPXQub2Zmc2V0KCk7dGhpcyE9ci5lbGVtZW50WzBdJiZyLnNuYXBFbGVtZW50cy5wdXNoKHtpdGVtOnRoaXMsd2lkdGg6dC5vdXRlcldpZHRoKCksaGVpZ2h0OnQub3V0ZXJIZWlnaHQoKSx0b3A6bi50b3AsbGVmdDpuLmxlZnR9KX0pfSxkcmFnOmZ1bmN0aW9uKHQsbil7dmFyIHI9ZSh0aGlzKS5kYXRhKCJkcmFnZ2FibGUiKSxpPXIub3B0aW9ucyxzPWkuc25hcFRvbGVyYW5jZSxvPW4ub2Zmc2V0LmxlZnQsdT1vK3IuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgsYT1uLm9mZnNldC50b3AsZj1hK3IuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0O2Zvcih2YXIgbD1yLnNuYXBFbGVtZW50cy5sZW5ndGgtMTtsPj0wO2wtLSl7dmFyIGM9ci5zbmFwRWxlbWVudHNbbF0ubGVmdCxoPWMrci5zbmFwRWxlbWVudHNbbF0ud2lkdGgscD1yLnNuYXBFbGVtZW50c1tsXS50b3AsZD1wK3Iuc25hcEVsZW1lbnRzW2xdLmhlaWdodDtpZighKGMtczxvJiZvPGgrcyYmcC1zPGEmJmE8ZCtzfHxjLXM8byYmbzxoK3MmJnAtczxmJiZmPGQrc3x8Yy1zPHUmJnU8aCtzJiZwLXM8YSYmYTxkK3N8fGMtczx1JiZ1PGgrcyYmcC1zPGYmJmY8ZCtzKSl7ci5zbmFwRWxlbWVudHNbbF0uc25hcHBpbmcmJnIub3B0aW9ucy5zbmFwLnJlbGVhc2UmJnIub3B0aW9ucy5zbmFwLnJlbGVhc2UuY2FsbChyLmVsZW1lbnQsdCxlLmV4dGVuZChyLl91aUhhc2goKSx7c25hcEl0ZW06ci5zbmFwRWxlbWVudHNbbF0uaXRlbX0pKSxyLnNuYXBFbGVtZW50c1tsXS5zbmFwcGluZz0hMTtjb250aW51ZX1pZihpLnNuYXBNb2RlIT0iaW5uZXIiKXt2YXIgdj1NYXRoLmFicyhwLWYpPD1zLG09TWF0aC5hYnMoZC1hKTw9cyxnPU1hdGguYWJzKGMtdSk8PXMseT1NYXRoLmFicyhoLW8pPD1zO3YmJihuLnBvc2l0aW9uLnRvcD1yLl9jb252ZXJ0UG9zaXRpb25UbygicmVsYXRpdmUiLHt0b3A6cC1yLmhlbHBlclByb3BvcnRpb25zLmhlaWdodCxsZWZ0OjB9KS50b3Atci5tYXJnaW5zLnRvcCksbSYmKG4ucG9zaXRpb24udG9wPXIuX2NvbnZlcnRQb3NpdGlvblRvKCJyZWxhdGl2ZSIse3RvcDpkLGxlZnQ6MH0pLnRvcC1yLm1hcmdpbnMudG9wKSxnJiYobi5wb3NpdGlvbi5sZWZ0PXIuX2NvbnZlcnRQb3NpdGlvblRvKCJyZWxhdGl2ZSIse3RvcDowLGxlZnQ6Yy1yLmhlbHBlclByb3BvcnRpb25zLndpZHRofSkubGVmdC1yLm1hcmdpbnMubGVmdCkseSYmKG4ucG9zaXRpb24ubGVmdD1yLl9jb252ZXJ0UG9zaXRpb25UbygicmVsYXRpdmUiLHt0b3A6MCxsZWZ0Omh9KS5sZWZ0LXIubWFyZ2lucy5sZWZ0KX12YXIgYj12fHxtfHxnfHx5O2lmKGkuc25hcE1vZGUhPSJvdXRlciIpe3ZhciB2PU1hdGguYWJzKHAtYSk8PXMsbT1NYXRoLmFicyhkLWYpPD1zLGc9TWF0aC5hYnMoYy1vKTw9cyx5PU1hdGguYWJzKGgtdSk8PXM7diYmKG4ucG9zaXRpb24udG9wPXIuX2NvbnZlcnRQb3NpdGlvblRvKCJyZWxhdGl2ZSIse3RvcDpwLGxlZnQ6MH0pLnRvcC1yLm1hcmdpbnMudG9wKSxtJiYobi5wb3NpdGlvbi50b3A9ci5fY29udmVydFBvc2l0aW9uVG8oInJlbGF0aXZlIix7dG9wOmQtci5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQsbGVmdDowfSkudG9wLXIubWFyZ2lucy50b3ApLGcmJihuLnBvc2l0aW9uLmxlZnQ9ci5fY29udmVydFBvc2l0aW9uVG8oInJlbGF0aXZlIix7dG9wOjAsbGVmdDpjfSkubGVmdC1yLm1hcmdpbnMubGVmdCkseSYmKG4ucG9zaXRpb24ubGVmdD1yLl9jb252ZXJ0UG9zaXRpb25UbygicmVsYXRpdmUiLHt0b3A6MCxsZWZ0Omgtci5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aH0pLmxlZnQtci5tYXJnaW5zLmxlZnQpfSFyLnNuYXBFbGVtZW50c1tsXS5zbmFwcGluZyYmKHZ8fG18fGd8fHl8fGIpJiZyLm9wdGlvbnMuc25hcC5zbmFwJiZyLm9wdGlvbnMuc25hcC5zbmFwLmNhbGwoci5lbGVtZW50LHQsZS5leHRlbmQoci5fdWlIYXNoKCkse3NuYXBJdGVtOnIuc25hcEVsZW1lbnRzW2xdLml0ZW19KSksci5zbmFwRWxlbWVudHNbbF0uc25hcHBpbmc9dnx8bXx8Z3x8eXx8Yn19fSksZS51aS5wbHVnaW4uYWRkKCJkcmFnZ2FibGUiLCJzdGFjayIse3N0YXJ0OmZ1bmN0aW9uKHQsbil7dmFyIHI9ZSh0aGlzKS5kYXRhKCJkcmFnZ2FibGUiKS5vcHRpb25zLGk9ZS5tYWtlQXJyYXkoZShyLnN0YWNrKSkuc29ydChmdW5jdGlvbih0LG4pe3JldHVybihwYXJzZUludChlKHQpLmNzcygiekluZGV4IiksMTApfHwwKS0ocGFyc2VJbnQoZShuKS5jc3MoInpJbmRleCIpLDEwKXx8MCl9KTtpZighaS5sZW5ndGgpcmV0dXJuO3ZhciBzPXBhcnNlSW50KGlbMF0uc3R5bGUuekluZGV4KXx8MDtlKGkpLmVhY2goZnVuY3Rpb24oZSl7dGhpcy5zdHlsZS56SW5kZXg9cytlfSksdGhpc1swXS5zdHlsZS56SW5kZXg9cytpLmxlbmd0aH19KSxlLnVpLnBsdWdpbi5hZGQoImRyYWdnYWJsZSIsInpJbmRleCIse3N0YXJ0OmZ1bmN0aW9uKHQsbil7dmFyIHI9ZShuLmhlbHBlciksaT1lKHRoaXMpLmRhdGEoImRyYWdnYWJsZSIpLm9wdGlvbnM7ci5jc3MoInpJbmRleCIpJiYoaS5fekluZGV4PXIuY3NzKCJ6SW5kZXgiKSksci5jc3MoInpJbmRleCIsaS56SW5kZXgpfSxzdG9wOmZ1bmN0aW9uKHQsbil7dmFyIHI9ZSh0aGlzKS5kYXRhKCJkcmFnZ2FibGUiKS5vcHRpb25zO3IuX3pJbmRleCYmZShuLmhlbHBlcikuY3NzKCJ6SW5kZXgiLHIuX3pJbmRleCl9fSl9KShqUXVlcnkpOyhmdW5jdGlvbihlLHQpe2Uud2lkZ2V0KCJ1aS5kcm9wcGFibGUiLHt2ZXJzaW9uOiIxLjkuMCIsd2lkZ2V0RXZlbnRQcmVmaXg6ImRyb3AiLG9wdGlvbnM6e2FjY2VwdDoiKiIsYWN0aXZlQ2xhc3M6ITEsYWRkQ2xhc3NlczohMCxncmVlZHk6ITEsaG92ZXJDbGFzczohMSxzY29wZToiZGVmYXVsdCIsdG9sZXJhbmNlOiJpbnRlcnNlY3QifSxfY3JlYXRlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5vcHRpb25zLG49dC5hY2NlcHQ7dGhpcy5pc292ZXI9MCx0aGlzLmlzb3V0PTEsdGhpcy5hY2NlcHQ9ZS5pc0Z1bmN0aW9uKG4pP246ZnVuY3Rpb24oZSl7cmV0dXJuIGUuaXMobil9LHRoaXMucHJvcG9ydGlvbnM9e3dpZHRoOnRoaXMuZWxlbWVudFswXS5vZmZzZXRXaWR0aCxoZWlnaHQ6dGhpcy5lbGVtZW50WzBdLm9mZnNldEhlaWdodH0sZS51aS5kZG1hbmFnZXIuZHJvcHBhYmxlc1t0LnNjb3BlXT1lLnVpLmRkbWFuYWdlci5kcm9wcGFibGVzW3Quc2NvcGVdfHxbXSxlLnVpLmRkbWFuYWdlci5kcm9wcGFibGVzW3Quc2NvcGVdLnB1c2godGhpcyksdC5hZGRDbGFzc2VzJiZ0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLWRyb3BwYWJsZSIpfSxfZGVzdHJveTpmdW5jdGlvbigpe3ZhciB0PWUudWkuZGRtYW5hZ2VyLmRyb3BwYWJsZXNbdGhpcy5vcHRpb25zLnNjb3BlXTtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl0W25dPT10aGlzJiZ0LnNwbGljZShuLDEpO3RoaXMuZWxlbWVudC5yZW1vdmVDbGFzcygidWktZHJvcHBhYmxlIHVpLWRyb3BwYWJsZS1kaXNhYmxlZCIpfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKHQsbil7dD09ImFjY2VwdCImJih0aGlzLmFjY2VwdD1lLmlzRnVuY3Rpb24obik/bjpmdW5jdGlvbihlKXtyZXR1cm4gZS5pcyhuKX0pLGUuV2lkZ2V0LnByb3RvdHlwZS5fc2V0T3B0aW9uLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sX2FjdGl2YXRlOmZ1bmN0aW9uKHQpe3ZhciBuPWUudWkuZGRtYW5hZ2VyLmN1cnJlbnQ7dGhpcy5vcHRpb25zLmFjdGl2ZUNsYXNzJiZ0aGlzLmVsZW1lbnQuYWRkQ2xhc3ModGhpcy5vcHRpb25zLmFjdGl2ZUNsYXNzKSxuJiZ0aGlzLl90cmlnZ2VyKCJhY3RpdmF0ZSIsdCx0aGlzLnVpKG4pKX0sX2RlYWN0aXZhdGU6ZnVuY3Rpb24odCl7dmFyIG49ZS51aS5kZG1hbmFnZXIuY3VycmVudDt0aGlzLm9wdGlvbnMuYWN0aXZlQ2xhc3MmJnRoaXMuZWxlbWVudC5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMuYWN0aXZlQ2xhc3MpLG4mJnRoaXMuX3RyaWdnZXIoImRlYWN0aXZhdGUiLHQsdGhpcy51aShuKSl9LF9vdmVyOmZ1bmN0aW9uKHQpe3ZhciBuPWUudWkuZGRtYW5hZ2VyLmN1cnJlbnQ7aWYoIW58fChuLmN1cnJlbnRJdGVtfHxuLmVsZW1lbnQpWzBdPT10aGlzLmVsZW1lbnRbMF0pcmV0dXJuO3RoaXMuYWNjZXB0LmNhbGwodGhpcy5lbGVtZW50WzBdLG4uY3VycmVudEl0ZW18fG4uZWxlbWVudCkmJih0aGlzLm9wdGlvbnMuaG92ZXJDbGFzcyYmdGhpcy5lbGVtZW50LmFkZENsYXNzKHRoaXMub3B0aW9ucy5ob3ZlckNsYXNzKSx0aGlzLl90cmlnZ2VyKCJvdmVyIix0LHRoaXMudWkobikpKX0sX291dDpmdW5jdGlvbih0KXt2YXIgbj1lLnVpLmRkbWFuYWdlci5jdXJyZW50O2lmKCFufHwobi5jdXJyZW50SXRlbXx8bi5lbGVtZW50KVswXT09dGhpcy5lbGVtZW50WzBdKXJldHVybjt0aGlzLmFjY2VwdC5jYWxsKHRoaXMuZWxlbWVudFswXSxuLmN1cnJlbnRJdGVtfHxuLmVsZW1lbnQpJiYodGhpcy5vcHRpb25zLmhvdmVyQ2xhc3MmJnRoaXMuZWxlbWVudC5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMuaG92ZXJDbGFzcyksdGhpcy5fdHJpZ2dlcigib3V0Iix0LHRoaXMudWkobikpKX0sX2Ryb3A6ZnVuY3Rpb24odCxuKXt2YXIgcj1ufHxlLnVpLmRkbWFuYWdlci5jdXJyZW50O2lmKCFyfHwoci5jdXJyZW50SXRlbXx8ci5lbGVtZW50KVswXT09dGhpcy5lbGVtZW50WzBdKXJldHVybiExO3ZhciBpPSExO3JldHVybiB0aGlzLmVsZW1lbnQuZmluZCgiOmRhdGEoZHJvcHBhYmxlKSIpLm5vdCgiLnVpLWRyYWdnYWJsZS1kcmFnZ2luZyIpLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1lLmRhdGEodGhpcywiZHJvcHBhYmxlIik7aWYodC5vcHRpb25zLmdyZWVkeSYmIXQub3B0aW9ucy5kaXNhYmxlZCYmdC5vcHRpb25zLnNjb3BlPT1yLm9wdGlvbnMuc2NvcGUmJnQuYWNjZXB0LmNhbGwodC5lbGVtZW50WzBdLHIuY3VycmVudEl0ZW18fHIuZWxlbWVudCkmJmUudWkuaW50ZXJzZWN0KHIsZS5leHRlbmQodCx7b2Zmc2V0OnQuZWxlbWVudC5vZmZzZXQoKX0pLHQub3B0aW9ucy50b2xlcmFuY2UpKXJldHVybiBpPSEwLCExfSksaT8hMTp0aGlzLmFjY2VwdC5jYWxsKHRoaXMuZWxlbWVudFswXSxyLmN1cnJlbnRJdGVtfHxyLmVsZW1lbnQpPyh0aGlzLm9wdGlvbnMuYWN0aXZlQ2xhc3MmJnRoaXMuZWxlbWVudC5yZW1vdmVDbGFzcyh0aGlzLm9wdGlvbnMuYWN0aXZlQ2xhc3MpLHRoaXMub3B0aW9ucy5ob3ZlckNsYXNzJiZ0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3ModGhpcy5vcHRpb25zLmhvdmVyQ2xhc3MpLHRoaXMuX3RyaWdnZXIoImRyb3AiLHQsdGhpcy51aShyKSksdGhpcy5lbGVtZW50KTohMX0sdWk6ZnVuY3Rpb24oZSl7cmV0dXJue2RyYWdnYWJsZTplLmN1cnJlbnRJdGVtfHxlLmVsZW1lbnQsaGVscGVyOmUuaGVscGVyLHBvc2l0aW9uOmUucG9zaXRpb24sb2Zmc2V0OmUucG9zaXRpb25BYnN9fX0pLGUudWkuaW50ZXJzZWN0PWZ1bmN0aW9uKHQsbixyKXtpZighbi5vZmZzZXQpcmV0dXJuITE7dmFyIGk9KHQucG9zaXRpb25BYnN8fHQucG9zaXRpb24uYWJzb2x1dGUpLmxlZnQscz1pK3QuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgsbz0odC5wb3NpdGlvbkFic3x8dC5wb3NpdGlvbi5hYnNvbHV0ZSkudG9wLHU9byt0LmhlbHBlclByb3BvcnRpb25zLmhlaWdodCxhPW4ub2Zmc2V0LmxlZnQsZj1hK24ucHJvcG9ydGlvbnMud2lkdGgsbD1uLm9mZnNldC50b3AsYz1sK24ucHJvcG9ydGlvbnMuaGVpZ2h0O3N3aXRjaChyKXtjYXNlImZpdCI6cmV0dXJuIGE8PWkmJnM8PWYmJmw8PW8mJnU8PWM7Y2FzZSJpbnRlcnNlY3QiOnJldHVybiBhPGkrdC5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aC8yJiZzLXQuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgvMjxmJiZsPG8rdC5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQvMiYmdS10LmhlbHBlclByb3BvcnRpb25zLmhlaWdodC8yPGM7Y2FzZSJwb2ludGVyIjp2YXIgaD0odC5wb3NpdGlvbkFic3x8dC5wb3NpdGlvbi5hYnNvbHV0ZSkubGVmdCsodC5jbGlja09mZnNldHx8dC5vZmZzZXQuY2xpY2spLmxlZnQscD0odC5wb3NpdGlvbkFic3x8dC5wb3NpdGlvbi5hYnNvbHV0ZSkudG9wKyh0LmNsaWNrT2Zmc2V0fHx0Lm9mZnNldC5jbGljaykudG9wLGQ9ZS51aS5pc092ZXIocCxoLGwsYSxuLnByb3BvcnRpb25zLmhlaWdodCxuLnByb3BvcnRpb25zLndpZHRoKTtyZXR1cm4gZDtjYXNlInRvdWNoIjpyZXR1cm4obz49bCYmbzw9Y3x8dT49bCYmdTw9Y3x8bzxsJiZ1PmMpJiYoaT49YSYmaTw9Znx8cz49YSYmczw9Znx8aTxhJiZzPmYpO2RlZmF1bHQ6cmV0dXJuITF9fSxlLnVpLmRkbWFuYWdlcj17Y3VycmVudDpudWxsLGRyb3BwYWJsZXM6eyJkZWZhdWx0IjpbXX0scHJlcGFyZU9mZnNldHM6ZnVuY3Rpb24odCxuKXt2YXIgcj1lLnVpLmRkbWFuYWdlci5kcm9wcGFibGVzW3Qub3B0aW9ucy5zY29wZV18fFtdLGk9bj9uLnR5cGU6bnVsbCxzPSh0LmN1cnJlbnRJdGVtfHx0LmVsZW1lbnQpLmZpbmQoIjpkYXRhKGRyb3BwYWJsZSkiKS5hbmRTZWxmKCk7ZTpmb3IodmFyIG89MDtvPHIubGVuZ3RoO28rKyl7aWYocltvXS5vcHRpb25zLmRpc2FibGVkfHx0JiYhcltvXS5hY2NlcHQuY2FsbChyW29dLmVsZW1lbnRbMF0sdC5jdXJyZW50SXRlbXx8dC5lbGVtZW50KSljb250aW51ZTtmb3IodmFyIHU9MDt1PHMubGVuZ3RoO3UrKylpZihzW3VdPT1yW29dLmVsZW1lbnRbMF0pe3Jbb10ucHJvcG9ydGlvbnMuaGVpZ2h0PTA7Y29udGludWUgZX1yW29dLnZpc2libGU9cltvXS5lbGVtZW50LmNzcygiZGlzcGxheSIpIT0ibm9uZSI7aWYoIXJbb10udmlzaWJsZSljb250aW51ZTtpPT0ibW91c2Vkb3duIiYmcltvXS5fYWN0aXZhdGUuY2FsbChyW29dLG4pLHJbb10ub2Zmc2V0PXJbb10uZWxlbWVudC5vZmZzZXQoKSxyW29dLnByb3BvcnRpb25zPXt3aWR0aDpyW29dLmVsZW1lbnRbMF0ub2Zmc2V0V2lkdGgsaGVpZ2h0OnJbb10uZWxlbWVudFswXS5vZmZzZXRIZWlnaHR9fX0sZHJvcDpmdW5jdGlvbih0LG4pe3ZhciByPSExO3JldHVybiBlLmVhY2goZS51aS5kZG1hbmFnZXIuZHJvcHBhYmxlc1t0Lm9wdGlvbnMuc2NvcGVdfHxbXSxmdW5jdGlvbigpe2lmKCF0aGlzLm9wdGlvbnMpcmV0dXJuOyF0aGlzLm9wdGlvbnMuZGlzYWJsZWQmJnRoaXMudmlzaWJsZSYmZS51aS5pbnRlcnNlY3QodCx0aGlzLHRoaXMub3B0aW9ucy50b2xlcmFuY2UpJiYocj10aGlzLl9kcm9wLmNhbGwodGhpcyxuKXx8ciksIXRoaXMub3B0aW9ucy5kaXNhYmxlZCYmdGhpcy52aXNpYmxlJiZ0aGlzLmFjY2VwdC5jYWxsKHRoaXMuZWxlbWVudFswXSx0LmN1cnJlbnRJdGVtfHx0LmVsZW1lbnQpJiYodGhpcy5pc291dD0xLHRoaXMuaXNvdmVyPTAsdGhpcy5fZGVhY3RpdmF0ZS5jYWxsKHRoaXMsbikpfSkscn0sZHJhZ1N0YXJ0OmZ1bmN0aW9uKHQsbil7dC5lbGVtZW50LnBhcmVudHNVbnRpbCgiYm9keSIpLmJpbmQoInNjcm9sbC5kcm9wcGFibGUiLGZ1bmN0aW9uKCl7dC5vcHRpb25zLnJlZnJlc2hQb3NpdGlvbnN8fGUudWkuZGRtYW5hZ2VyLnByZXBhcmVPZmZzZXRzKHQsbil9KX0sZHJhZzpmdW5jdGlvbih0LG4pe3Qub3B0aW9ucy5yZWZyZXNoUG9zaXRpb25zJiZlLnVpLmRkbWFuYWdlci5wcmVwYXJlT2Zmc2V0cyh0LG4pLGUuZWFjaChlLnVpLmRkbWFuYWdlci5kcm9wcGFibGVzW3Qub3B0aW9ucy5zY29wZV18fFtdLGZ1bmN0aW9uKCl7aWYodGhpcy5vcHRpb25zLmRpc2FibGVkfHx0aGlzLmdyZWVkeUNoaWxkfHwhdGhpcy52aXNpYmxlKXJldHVybjt2YXIgcj1lLnVpLmludGVyc2VjdCh0LHRoaXMsdGhpcy5vcHRpb25zLnRvbGVyYW5jZSksaT0hciYmdGhpcy5pc292ZXI9PTE/Imlzb3V0IjpyJiZ0aGlzLmlzb3Zlcj09MD8iaXNvdmVyIjpudWxsO2lmKCFpKXJldHVybjt2YXIgcztpZih0aGlzLm9wdGlvbnMuZ3JlZWR5KXt2YXIgbz10aGlzLm9wdGlvbnMuc2NvcGUsdT10aGlzLmVsZW1lbnQucGFyZW50cygiOmRhdGEoZHJvcHBhYmxlKSIpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiBlLmRhdGEodGhpcywiZHJvcHBhYmxlIikub3B0aW9ucy5zY29wZT09PW99KTt1Lmxlbmd0aCYmKHM9ZS5kYXRhKHVbMF0sImRyb3BwYWJsZSIpLHMuZ3JlZWR5Q2hpbGQ9aT09Imlzb3ZlciI/MTowKX1zJiZpPT0iaXNvdmVyIiYmKHMuaXNvdmVyPTAscy5pc291dD0xLHMuX291dC5jYWxsKHMsbikpLHRoaXNbaV09MSx0aGlzW2k9PSJpc291dCI/Imlzb3ZlciI6Imlzb3V0Il09MCx0aGlzW2k9PSJpc292ZXIiPyJfb3ZlciI6Il9vdXQiXS5jYWxsKHRoaXMsbikscyYmaT09Imlzb3V0IiYmKHMuaXNvdXQ9MCxzLmlzb3Zlcj0xLHMuX292ZXIuY2FsbChzLG4pKX0pfSxkcmFnU3RvcDpmdW5jdGlvbih0LG4pe3QuZWxlbWVudC5wYXJlbnRzVW50aWwoImJvZHkiKS51bmJpbmQoInNjcm9sbC5kcm9wcGFibGUiKSx0Lm9wdGlvbnMucmVmcmVzaFBvc2l0aW9uc3x8ZS51aS5kZG1hbmFnZXIucHJlcGFyZU9mZnNldHModCxuKX19fSkoalF1ZXJ5KTsoZnVuY3Rpb24oZSx0KXtlLndpZGdldCgidWkucmVzaXphYmxlIixlLnVpLm1vdXNlLHt2ZXJzaW9uOiIxLjkuMCIsd2lkZ2V0RXZlbnRQcmVmaXg6InJlc2l6ZSIsb3B0aW9uczp7YWxzb1Jlc2l6ZTohMSxhbmltYXRlOiExLGFuaW1hdGVEdXJhdGlvbjoic2xvdyIsYW5pbWF0ZUVhc2luZzoic3dpbmciLGFzcGVjdFJhdGlvOiExLGF1dG9IaWRlOiExLGNvbnRhaW5tZW50OiExLGdob3N0OiExLGdyaWQ6ITEsaGFuZGxlczoiZSxzLHNlIixoZWxwZXI6ITEsbWF4SGVpZ2h0Om51bGwsbWF4V2lkdGg6bnVsbCxtaW5IZWlnaHQ6MTAsbWluV2lkdGg6MTAsekluZGV4OjFlM30sX2NyZWF0ZTpmdW5jdGlvbigpe3ZhciB0PXRoaXMsbj10aGlzLm9wdGlvbnM7dGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS1yZXNpemFibGUiKSxlLmV4dGVuZCh0aGlzLHtfYXNwZWN0UmF0aW86ISFuLmFzcGVjdFJhdGlvLGFzcGVjdFJhdGlvOm4uYXNwZWN0UmF0aW8sb3JpZ2luYWxFbGVtZW50OnRoaXMuZWxlbWVudCxfcHJvcG9ydGlvbmFsbHlSZXNpemVFbGVtZW50czpbXSxfaGVscGVyOm4uaGVscGVyfHxuLmdob3N0fHxuLmFuaW1hdGU/bi5oZWxwZXJ8fCJ1aS1yZXNpemFibGUtaGVscGVyIjpudWxsfSksdGhpcy5lbGVtZW50WzBdLm5vZGVOYW1lLm1hdGNoKC9jYW52YXN8dGV4dGFyZWF8aW5wdXR8c2VsZWN0fGJ1dHRvbnxpbWcvaSkmJih0aGlzLmVsZW1lbnQud3JhcChlKCc8ZGl2IGNsYXNzPSJ1aS13cmFwcGVyIiBzdHlsZT0ib3ZlcmZsb3c6IGhpZGRlbjsiPjwvZGl2PicpLmNzcyh7cG9zaXRpb246dGhpcy5lbGVtZW50LmNzcygicG9zaXRpb24iKSx3aWR0aDp0aGlzLmVsZW1lbnQub3V0ZXJXaWR0aCgpLGhlaWdodDp0aGlzLmVsZW1lbnQub3V0ZXJIZWlnaHQoKSx0b3A6dGhpcy5lbGVtZW50LmNzcygidG9wIiksbGVmdDp0aGlzLmVsZW1lbnQuY3NzKCJsZWZ0Iil9KSksdGhpcy5lbGVtZW50PXRoaXMuZWxlbWVudC5wYXJlbnQoKS5kYXRhKCJyZXNpemFibGUiLHRoaXMuZWxlbWVudC5kYXRhKCJyZXNpemFibGUiKSksdGhpcy5lbGVtZW50SXNXcmFwcGVyPSEwLHRoaXMuZWxlbWVudC5jc3Moe21hcmdpbkxlZnQ6dGhpcy5vcmlnaW5hbEVsZW1lbnQuY3NzKCJtYXJnaW5MZWZ0IiksbWFyZ2luVG9wOnRoaXMub3JpZ2luYWxFbGVtZW50LmNzcygibWFyZ2luVG9wIiksbWFyZ2luUmlnaHQ6dGhpcy5vcmlnaW5hbEVsZW1lbnQuY3NzKCJtYXJnaW5SaWdodCIpLG1hcmdpbkJvdHRvbTp0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3MoIm1hcmdpbkJvdHRvbSIpfSksdGhpcy5vcmlnaW5hbEVsZW1lbnQuY3NzKHttYXJnaW5MZWZ0OjAsbWFyZ2luVG9wOjAsbWFyZ2luUmlnaHQ6MCxtYXJnaW5Cb3R0b206MH0pLHRoaXMub3JpZ2luYWxSZXNpemVTdHlsZT10aGlzLm9yaWdpbmFsRWxlbWVudC5jc3MoInJlc2l6ZSIpLHRoaXMub3JpZ2luYWxFbGVtZW50LmNzcygicmVzaXplIiwibm9uZSIpLHRoaXMuX3Byb3BvcnRpb25hbGx5UmVzaXplRWxlbWVudHMucHVzaCh0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3Moe3Bvc2l0aW9uOiJzdGF0aWMiLHpvb206MSxkaXNwbGF5OiJibG9jayJ9KSksdGhpcy5vcmlnaW5hbEVsZW1lbnQuY3NzKHttYXJnaW46dGhpcy5vcmlnaW5hbEVsZW1lbnQuY3NzKCJtYXJnaW4iKX0pLHRoaXMuX3Byb3BvcnRpb25hbGx5UmVzaXplKCkpLHRoaXMuaGFuZGxlcz1uLmhhbmRsZXN8fChlKCIudWktcmVzaXphYmxlLWhhbmRsZSIsdGhpcy5lbGVtZW50KS5sZW5ndGg/e246Ii51aS1yZXNpemFibGUtbiIsZToiLnVpLXJlc2l6YWJsZS1lIixzOiIudWktcmVzaXphYmxlLXMiLHc6Ii51aS1yZXNpemFibGUtdyIsc2U6Ii51aS1yZXNpemFibGUtc2UiLHN3OiIudWktcmVzaXphYmxlLXN3IixuZToiLnVpLXJlc2l6YWJsZS1uZSIsbnc6Ii51aS1yZXNpemFibGUtbncifToiZSxzLHNlIik7aWYodGhpcy5oYW5kbGVzLmNvbnN0cnVjdG9yPT1TdHJpbmcpe3RoaXMuaGFuZGxlcz09ImFsbCImJih0aGlzLmhhbmRsZXM9Im4sZSxzLHcsc2Usc3csbmUsbnciKTt2YXIgcj10aGlzLmhhbmRsZXMuc3BsaXQoIiwiKTt0aGlzLmhhbmRsZXM9e307Zm9yKHZhciBpPTA7aTxyLmxlbmd0aDtpKyspe3ZhciBzPWUudHJpbShyW2ldKSxvPSJ1aS1yZXNpemFibGUtIitzLHU9ZSgnPGRpdiBjbGFzcz0idWktcmVzaXphYmxlLWhhbmRsZSAnK28rJyI+PC9kaXY+Jyk7dS5jc3Moe3pJbmRleDpuLnpJbmRleH0pLCJzZSI9PXMmJnUuYWRkQ2xhc3MoInVpLWljb24gdWktaWNvbi1ncmlwc21hbGwtZGlhZ29uYWwtc2UiKSx0aGlzLmhhbmRsZXNbc109Ii51aS1yZXNpemFibGUtIitzLHRoaXMuZWxlbWVudC5hcHBlbmQodSl9fXRoaXMuX3JlbmRlckF4aXM9ZnVuY3Rpb24odCl7dD10fHx0aGlzLmVsZW1lbnQ7Zm9yKHZhciBuIGluIHRoaXMuaGFuZGxlcyl7dGhpcy5oYW5kbGVzW25dLmNvbnN0cnVjdG9yPT1TdHJpbmcmJih0aGlzLmhhbmRsZXNbbl09ZSh0aGlzLmhhbmRsZXNbbl0sdGhpcy5lbGVtZW50KS5zaG93KCkpO2lmKHRoaXMuZWxlbWVudElzV3JhcHBlciYmdGhpcy5vcmlnaW5hbEVsZW1lbnRbMF0ubm9kZU5hbWUubWF0Y2goL3RleHRhcmVhfGlucHV0fHNlbGVjdHxidXR0b24vaSkpe3ZhciByPWUodGhpcy5oYW5kbGVzW25dLHRoaXMuZWxlbWVudCksaT0wO2k9L3N3fG5lfG53fHNlfG58cy8udGVzdChuKT9yLm91dGVySGVpZ2h0KCk6ci5vdXRlcldpZHRoKCk7dmFyIHM9WyJwYWRkaW5nIiwvbmV8bnd8bi8udGVzdChuKT8iVG9wIjovc2V8c3d8cy8udGVzdChuKT8iQm90dG9tIjovXmUkLy50ZXN0KG4pPyJSaWdodCI6IkxlZnQiXS5qb2luKCIiKTt0LmNzcyhzLGkpLHRoaXMuX3Byb3BvcnRpb25hbGx5UmVzaXplKCl9aWYoIWUodGhpcy5oYW5kbGVzW25dKS5sZW5ndGgpY29udGludWV9fSx0aGlzLl9yZW5kZXJBeGlzKHRoaXMuZWxlbWVudCksdGhpcy5faGFuZGxlcz1lKCIudWktcmVzaXphYmxlLWhhbmRsZSIsdGhpcy5lbGVtZW50KS5kaXNhYmxlU2VsZWN0aW9uKCksdGhpcy5faGFuZGxlcy5tb3VzZW92ZXIoZnVuY3Rpb24oKXtpZighdC5yZXNpemluZyl7aWYodGhpcy5jbGFzc05hbWUpdmFyIGU9dGhpcy5jbGFzc05hbWUubWF0Y2goL3VpLXJlc2l6YWJsZS0oc2V8c3d8bmV8bnd8bnxlfHN8dykvaSk7dC5heGlzPWUmJmVbMV0/ZVsxXToic2UifX0pLG4uYXV0b0hpZGUmJih0aGlzLl9oYW5kbGVzLmhpZGUoKSxlKHRoaXMuZWxlbWVudCkuYWRkQ2xhc3MoInVpLXJlc2l6YWJsZS1hdXRvaGlkZSIpLm1vdXNlZW50ZXIoZnVuY3Rpb24oKXtpZihuLmRpc2FibGVkKXJldHVybjtlKHRoaXMpLnJlbW92ZUNsYXNzKCJ1aS1yZXNpemFibGUtYXV0b2hpZGUiKSx0Ll9oYW5kbGVzLnNob3coKX0pLm1vdXNlbGVhdmUoZnVuY3Rpb24oKXtpZihuLmRpc2FibGVkKXJldHVybjt0LnJlc2l6aW5nfHwoZSh0aGlzKS5hZGRDbGFzcygidWktcmVzaXphYmxlLWF1dG9oaWRlIiksdC5faGFuZGxlcy5oaWRlKCkpfSkpLHRoaXMuX21vdXNlSW5pdCgpfSxfZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuX21vdXNlRGVzdHJveSgpO3ZhciB0PWZ1bmN0aW9uKHQpe2UodCkucmVtb3ZlQ2xhc3MoInVpLXJlc2l6YWJsZSB1aS1yZXNpemFibGUtZGlzYWJsZWQgdWktcmVzaXphYmxlLXJlc2l6aW5nIikucmVtb3ZlRGF0YSgicmVzaXphYmxlIikucmVtb3ZlRGF0YSgidWktcmVzaXphYmxlIikudW5iaW5kKCIucmVzaXphYmxlIikuZmluZCgiLnVpLXJlc2l6YWJsZS1oYW5kbGUiKS5yZW1vdmUoKX07aWYodGhpcy5lbGVtZW50SXNXcmFwcGVyKXt0KHRoaXMuZWxlbWVudCk7dmFyIG49dGhpcy5lbGVtZW50O24uYWZ0ZXIodGhpcy5vcmlnaW5hbEVsZW1lbnQuY3NzKHtwb3NpdGlvbjpuLmNzcygicG9zaXRpb24iKSx3aWR0aDpuLm91dGVyV2lkdGgoKSxoZWlnaHQ6bi5vdXRlckhlaWdodCgpLHRvcDpuLmNzcygidG9wIiksbGVmdDpuLmNzcygibGVmdCIpfSkpLnJlbW92ZSgpfXJldHVybiB0aGlzLm9yaWdpbmFsRWxlbWVudC5jc3MoInJlc2l6ZSIsdGhpcy5vcmlnaW5hbFJlc2l6ZVN0eWxlKSx0KHRoaXMub3JpZ2luYWxFbGVtZW50KSx0aGlzfSxfbW91c2VDYXB0dXJlOmZ1bmN0aW9uKHQpe3ZhciBuPSExO2Zvcih2YXIgciBpbiB0aGlzLmhhbmRsZXMpZSh0aGlzLmhhbmRsZXNbcl0pWzBdPT10LnRhcmdldCYmKG49ITApO3JldHVybiF0aGlzLm9wdGlvbnMuZGlzYWJsZWQmJm59LF9tb3VzZVN0YXJ0OmZ1bmN0aW9uKHQpe3ZhciByPXRoaXMub3B0aW9ucyxpPXRoaXMuZWxlbWVudC5wb3NpdGlvbigpLHM9dGhpcy5lbGVtZW50O3RoaXMucmVzaXppbmc9ITAsdGhpcy5kb2N1bWVudFNjcm9sbD17dG9wOmUoZG9jdW1lbnQpLnNjcm9sbFRvcCgpLGxlZnQ6ZShkb2N1bWVudCkuc2Nyb2xsTGVmdCgpfSwocy5pcygiLnVpLWRyYWdnYWJsZSIpfHwvYWJzb2x1dGUvLnRlc3Qocy5jc3MoInBvc2l0aW9uIikpKSYmcy5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdG9wOmkudG9wLGxlZnQ6aS5sZWZ0fSksdGhpcy5fcmVuZGVyUHJveHkoKTt2YXIgbz1uKHRoaXMuaGVscGVyLmNzcygibGVmdCIpKSx1PW4odGhpcy5oZWxwZXIuY3NzKCJ0b3AiKSk7ci5jb250YWlubWVudCYmKG8rPWUoci5jb250YWlubWVudCkuc2Nyb2xsTGVmdCgpfHwwLHUrPWUoci5jb250YWlubWVudCkuc2Nyb2xsVG9wKCl8fDApLHRoaXMub2Zmc2V0PXRoaXMuaGVscGVyLm9mZnNldCgpLHRoaXMucG9zaXRpb249e2xlZnQ6byx0b3A6dX0sdGhpcy5zaXplPXRoaXMuX2hlbHBlcj97d2lkdGg6cy5vdXRlcldpZHRoKCksaGVpZ2h0OnMub3V0ZXJIZWlnaHQoKX06e3dpZHRoOnMud2lkdGgoKSxoZWlnaHQ6cy5oZWlnaHQoKX0sdGhpcy5vcmlnaW5hbFNpemU9dGhpcy5faGVscGVyP3t3aWR0aDpzLm91dGVyV2lkdGgoKSxoZWlnaHQ6cy5vdXRlckhlaWdodCgpfTp7d2lkdGg6cy53aWR0aCgpLGhlaWdodDpzLmhlaWdodCgpfSx0aGlzLm9yaWdpbmFsUG9zaXRpb249e2xlZnQ6byx0b3A6dX0sdGhpcy5zaXplRGlmZj17d2lkdGg6cy5vdXRlcldpZHRoKCktcy53aWR0aCgpLGhlaWdodDpzLm91dGVySGVpZ2h0KCktcy5oZWlnaHQoKX0sdGhpcy5vcmlnaW5hbE1vdXNlUG9zaXRpb249e2xlZnQ6dC5wYWdlWCx0b3A6dC5wYWdlWX0sdGhpcy5hc3BlY3RSYXRpbz10eXBlb2Ygci5hc3BlY3RSYXRpbz09Im51bWJlciI/ci5hc3BlY3RSYXRpbzp0aGlzLm9yaWdpbmFsU2l6ZS53aWR0aC90aGlzLm9yaWdpbmFsU2l6ZS5oZWlnaHR8fDE7dmFyIGE9ZSgiLnVpLXJlc2l6YWJsZS0iK3RoaXMuYXhpcykuY3NzKCJjdXJzb3IiKTtyZXR1cm4gZSgiYm9keSIpLmNzcygiY3Vyc29yIixhPT0iYXV0byI/dGhpcy5heGlzKyItcmVzaXplIjphKSxzLmFkZENsYXNzKCJ1aS1yZXNpemFibGUtcmVzaXppbmciKSx0aGlzLl9wcm9wYWdhdGUoInN0YXJ0Iix0KSwhMH0sX21vdXNlRHJhZzpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmhlbHBlcixuPXRoaXMub3B0aW9ucyxyPXt9LGk9dGhpcyxzPXRoaXMub3JpZ2luYWxNb3VzZVBvc2l0aW9uLG89dGhpcy5heGlzLHU9ZS5wYWdlWC1zLmxlZnR8fDAsYT1lLnBhZ2VZLXMudG9wfHwwLGY9dGhpcy5fY2hhbmdlW29dO2lmKCFmKXJldHVybiExO3ZhciBsPWYuYXBwbHkodGhpcyxbZSx1LGFdKTt0aGlzLl91cGRhdGVWaXJ0dWFsQm91bmRhcmllcyhlLnNoaWZ0S2V5KTtpZih0aGlzLl9hc3BlY3RSYXRpb3x8ZS5zaGlmdEtleSlsPXRoaXMuX3VwZGF0ZVJhdGlvKGwsZSk7cmV0dXJuIGw9dGhpcy5fcmVzcGVjdFNpemUobCxlKSx0aGlzLl9wcm9wYWdhdGUoInJlc2l6ZSIsZSksdC5jc3Moe3RvcDp0aGlzLnBvc2l0aW9uLnRvcCsicHgiLGxlZnQ6dGhpcy5wb3NpdGlvbi5sZWZ0KyJweCIsd2lkdGg6dGhpcy5zaXplLndpZHRoKyJweCIsaGVpZ2h0OnRoaXMuc2l6ZS5oZWlnaHQrInB4In0pLCF0aGlzLl9oZWxwZXImJnRoaXMuX3Byb3BvcnRpb25hbGx5UmVzaXplRWxlbWVudHMubGVuZ3RoJiZ0aGlzLl9wcm9wb3J0aW9uYWxseVJlc2l6ZSgpLHRoaXMuX3VwZGF0ZUNhY2hlKGwpLHRoaXMuX3RyaWdnZXIoInJlc2l6ZSIsZSx0aGlzLnVpKCkpLCExfSxfbW91c2VTdG9wOmZ1bmN0aW9uKHQpe3RoaXMucmVzaXppbmc9ITE7dmFyIG49dGhpcy5vcHRpb25zLHI9dGhpcztpZih0aGlzLl9oZWxwZXIpe3ZhciBpPXRoaXMuX3Byb3BvcnRpb25hbGx5UmVzaXplRWxlbWVudHMscz1pLmxlbmd0aCYmL3RleHRhcmVhL2kudGVzdChpWzBdLm5vZGVOYW1lKSxvPXMmJmUudWkuaGFzU2Nyb2xsKGlbMF0sImxlZnQiKT8wOnIuc2l6ZURpZmYuaGVpZ2h0LHU9cz8wOnIuc2l6ZURpZmYud2lkdGgsYT17d2lkdGg6ci5oZWxwZXIud2lkdGgoKS11LGhlaWdodDpyLmhlbHBlci5oZWlnaHQoKS1vfSxmPXBhcnNlSW50KHIuZWxlbWVudC5jc3MoImxlZnQiKSwxMCkrKHIucG9zaXRpb24ubGVmdC1yLm9yaWdpbmFsUG9zaXRpb24ubGVmdCl8fG51bGwsbD1wYXJzZUludChyLmVsZW1lbnQuY3NzKCJ0b3AiKSwxMCkrKHIucG9zaXRpb24udG9wLXIub3JpZ2luYWxQb3NpdGlvbi50b3ApfHxudWxsO24uYW5pbWF0ZXx8dGhpcy5lbGVtZW50LmNzcyhlLmV4dGVuZChhLHt0b3A6bCxsZWZ0OmZ9KSksci5oZWxwZXIuaGVpZ2h0KHIuc2l6ZS5oZWlnaHQpLHIuaGVscGVyLndpZHRoKHIuc2l6ZS53aWR0aCksdGhpcy5faGVscGVyJiYhbi5hbmltYXRlJiZ0aGlzLl9wcm9wb3J0aW9uYWxseVJlc2l6ZSgpfXJldHVybiBlKCJib2R5IikuY3NzKCJjdXJzb3IiLCJhdXRvIiksdGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1yZXNpemFibGUtcmVzaXppbmciKSx0aGlzLl9wcm9wYWdhdGUoInN0b3AiLHQpLHRoaXMuX2hlbHBlciYmdGhpcy5oZWxwZXIucmVtb3ZlKCksITF9LF91cGRhdGVWaXJ0dWFsQm91bmRhcmllczpmdW5jdGlvbihlKXt2YXIgdD10aGlzLm9wdGlvbnMsbixpLHMsbyx1O3U9e21pbldpZHRoOnIodC5taW5XaWR0aCk/dC5taW5XaWR0aDowLG1heFdpZHRoOnIodC5tYXhXaWR0aCk/dC5tYXhXaWR0aDpJbmZpbml0eSxtaW5IZWlnaHQ6cih0Lm1pbkhlaWdodCk/dC5taW5IZWlnaHQ6MCxtYXhIZWlnaHQ6cih0Lm1heEhlaWdodCk/dC5tYXhIZWlnaHQ6SW5maW5pdHl9O2lmKHRoaXMuX2FzcGVjdFJhdGlvfHxlKW49dS5taW5IZWlnaHQqdGhpcy5hc3BlY3RSYXRpbyxzPXUubWluV2lkdGgvdGhpcy5hc3BlY3RSYXRpbyxpPXUubWF4SGVpZ2h0KnRoaXMuYXNwZWN0UmF0aW8sbz11Lm1heFdpZHRoL3RoaXMuYXNwZWN0UmF0aW8sbj51Lm1pbldpZHRoJiYodS5taW5XaWR0aD1uKSxzPnUubWluSGVpZ2h0JiYodS5taW5IZWlnaHQ9cyksaTx1Lm1heFdpZHRoJiYodS5tYXhXaWR0aD1pKSxvPHUubWF4SGVpZ2h0JiYodS5tYXhIZWlnaHQ9byk7dGhpcy5fdkJvdW5kYXJpZXM9dX0sX3VwZGF0ZUNhY2hlOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMub3B0aW9uczt0aGlzLm9mZnNldD10aGlzLmhlbHBlci5vZmZzZXQoKSxyKGUubGVmdCkmJih0aGlzLnBvc2l0aW9uLmxlZnQ9ZS5sZWZ0KSxyKGUudG9wKSYmKHRoaXMucG9zaXRpb24udG9wPWUudG9wKSxyKGUuaGVpZ2h0KSYmKHRoaXMuc2l6ZS5oZWlnaHQ9ZS5oZWlnaHQpLHIoZS53aWR0aCkmJih0aGlzLnNpemUud2lkdGg9ZS53aWR0aCl9LF91cGRhdGVSYXRpbzpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMub3B0aW9ucyxpPXRoaXMucG9zaXRpb24scz10aGlzLnNpemUsbz10aGlzLmF4aXM7cmV0dXJuIHIoZS5oZWlnaHQpP2Uud2lkdGg9ZS5oZWlnaHQqdGhpcy5hc3BlY3RSYXRpbzpyKGUud2lkdGgpJiYoZS5oZWlnaHQ9ZS53aWR0aC90aGlzLmFzcGVjdFJhdGlvKSxvPT0ic3ciJiYoZS5sZWZ0PWkubGVmdCsocy53aWR0aC1lLndpZHRoKSxlLnRvcD1udWxsKSxvPT0ibnciJiYoZS50b3A9aS50b3ArKHMuaGVpZ2h0LWUuaGVpZ2h0KSxlLmxlZnQ9aS5sZWZ0KyhzLndpZHRoLWUud2lkdGgpKSxlfSxfcmVzcGVjdFNpemU6ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLmhlbHBlcixpPXRoaXMuX3ZCb3VuZGFyaWVzLHM9dGhpcy5fYXNwZWN0UmF0aW98fHQuc2hpZnRLZXksbz10aGlzLmF4aXMsdT1yKGUud2lkdGgpJiZpLm1heFdpZHRoJiZpLm1heFdpZHRoPGUud2lkdGgsYT1yKGUuaGVpZ2h0KSYmaS5tYXhIZWlnaHQmJmkubWF4SGVpZ2h0PGUuaGVpZ2h0LGY9cihlLndpZHRoKSYmaS5taW5XaWR0aCYmaS5taW5XaWR0aD5lLndpZHRoLGw9cihlLmhlaWdodCkmJmkubWluSGVpZ2h0JiZpLm1pbkhlaWdodD5lLmhlaWdodDtmJiYoZS53aWR0aD1pLm1pbldpZHRoKSxsJiYoZS5oZWlnaHQ9aS5taW5IZWlnaHQpLHUmJihlLndpZHRoPWkubWF4V2lkdGgpLGEmJihlLmhlaWdodD1pLm1heEhlaWdodCk7dmFyIGM9dGhpcy5vcmlnaW5hbFBvc2l0aW9uLmxlZnQrdGhpcy5vcmlnaW5hbFNpemUud2lkdGgsaD10aGlzLnBvc2l0aW9uLnRvcCt0aGlzLnNpemUuaGVpZ2h0LHA9L3N3fG53fHcvLnRlc3QobyksZD0vbnd8bmV8bi8udGVzdChvKTtmJiZwJiYoZS5sZWZ0PWMtaS5taW5XaWR0aCksdSYmcCYmKGUubGVmdD1jLWkubWF4V2lkdGgpLGwmJmQmJihlLnRvcD1oLWkubWluSGVpZ2h0KSxhJiZkJiYoZS50b3A9aC1pLm1heEhlaWdodCk7dmFyIHY9IWUud2lkdGgmJiFlLmhlaWdodDtyZXR1cm4gdiYmIWUubGVmdCYmZS50b3A/ZS50b3A9bnVsbDp2JiYhZS50b3AmJmUubGVmdCYmKGUubGVmdD1udWxsKSxlfSxfcHJvcG9ydGlvbmFsbHlSZXNpemU6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnM7aWYoIXRoaXMuX3Byb3BvcnRpb25hbGx5UmVzaXplRWxlbWVudHMubGVuZ3RoKXJldHVybjt2YXIgbj10aGlzLmhlbHBlcnx8dGhpcy5lbGVtZW50O2Zvcih2YXIgcj0wO3I8dGhpcy5fcHJvcG9ydGlvbmFsbHlSZXNpemVFbGVtZW50cy5sZW5ndGg7cisrKXt2YXIgaT10aGlzLl9wcm9wb3J0aW9uYWxseVJlc2l6ZUVsZW1lbnRzW3JdO2lmKCF0aGlzLmJvcmRlckRpZil7dmFyIHM9W2kuY3NzKCJib3JkZXJUb3BXaWR0aCIpLGkuY3NzKCJib3JkZXJSaWdodFdpZHRoIiksaS5jc3MoImJvcmRlckJvdHRvbVdpZHRoIiksaS5jc3MoImJvcmRlckxlZnRXaWR0aCIpXSxvPVtpLmNzcygicGFkZGluZ1RvcCIpLGkuY3NzKCJwYWRkaW5nUmlnaHQiKSxpLmNzcygicGFkZGluZ0JvdHRvbSIpLGkuY3NzKCJwYWRkaW5nTGVmdCIpXTt0aGlzLmJvcmRlckRpZj1lLm1hcChzLGZ1bmN0aW9uKGUsdCl7dmFyIG49cGFyc2VJbnQoZSwxMCl8fDAscj1wYXJzZUludChvW3RdLDEwKXx8MDtyZXR1cm4gbityfSl9aS5jc3Moe2hlaWdodDpuLmhlaWdodCgpLXRoaXMuYm9yZGVyRGlmWzBdLXRoaXMuYm9yZGVyRGlmWzJdfHwwLHdpZHRoOm4ud2lkdGgoKS10aGlzLmJvcmRlckRpZlsxXS10aGlzLmJvcmRlckRpZlszXXx8MH0pfX0sX3JlbmRlclByb3h5OmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5lbGVtZW50LG49dGhpcy5vcHRpb25zO3RoaXMuZWxlbWVudE9mZnNldD10Lm9mZnNldCgpO2lmKHRoaXMuX2hlbHBlcil7dGhpcy5oZWxwZXI9dGhpcy5oZWxwZXJ8fGUoJzxkaXYgc3R5bGU9Im92ZXJmbG93OmhpZGRlbjsiPjwvZGl2PicpO3ZhciByPWUuYnJvd3Nlci5tc2llJiZlLmJyb3dzZXIudmVyc2lvbjw3LGk9cj8xOjAscz1yPzI6LTE7dGhpcy5oZWxwZXIuYWRkQ2xhc3ModGhpcy5faGVscGVyKS5jc3Moe3dpZHRoOnRoaXMuZWxlbWVudC5vdXRlcldpZHRoKCkrcyxoZWlnaHQ6dGhpcy5lbGVtZW50Lm91dGVySGVpZ2h0KCkrcyxwb3NpdGlvbjoiYWJzb2x1dGUiLGxlZnQ6dGhpcy5lbGVtZW50T2Zmc2V0LmxlZnQtaSsicHgiLHRvcDp0aGlzLmVsZW1lbnRPZmZzZXQudG9wLWkrInB4Iix6SW5kZXg6KytuLnpJbmRleH0pLHRoaXMuaGVscGVyLmFwcGVuZFRvKCJib2R5IikuZGlzYWJsZVNlbGVjdGlvbigpfWVsc2UgdGhpcy5oZWxwZXI9dGhpcy5lbGVtZW50fSxfY2hhbmdlOntlOmZ1bmN0aW9uKGUsdCxuKXtyZXR1cm57d2lkdGg6dGhpcy5vcmlnaW5hbFNpemUud2lkdGgrdH19LHc6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMub3B0aW9ucyxpPXRoaXMub3JpZ2luYWxTaXplLHM9dGhpcy5vcmlnaW5hbFBvc2l0aW9uO3JldHVybntsZWZ0OnMubGVmdCt0LHdpZHRoOmkud2lkdGgtdH19LG46ZnVuY3Rpb24oZSx0LG4pe3ZhciByPXRoaXMub3B0aW9ucyxpPXRoaXMub3JpZ2luYWxTaXplLHM9dGhpcy5vcmlnaW5hbFBvc2l0aW9uO3JldHVybnt0b3A6cy50b3ArbixoZWlnaHQ6aS5oZWlnaHQtbn19LHM6ZnVuY3Rpb24oZSx0LG4pe3JldHVybntoZWlnaHQ6dGhpcy5vcmlnaW5hbFNpemUuaGVpZ2h0K259fSxzZTpmdW5jdGlvbih0LG4scil7cmV0dXJuIGUuZXh0ZW5kKHRoaXMuX2NoYW5nZS5zLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLl9jaGFuZ2UuZS5hcHBseSh0aGlzLFt0LG4scl0pKX0sc3c6ZnVuY3Rpb24odCxuLHIpe3JldHVybiBlLmV4dGVuZCh0aGlzLl9jaGFuZ2Uucy5hcHBseSh0aGlzLGFyZ3VtZW50cyksdGhpcy5fY2hhbmdlLncuYXBwbHkodGhpcyxbdCxuLHJdKSl9LG5lOmZ1bmN0aW9uKHQsbixyKXtyZXR1cm4gZS5leHRlbmQodGhpcy5fY2hhbmdlLm4uYXBwbHkodGhpcyxhcmd1bWVudHMpLHRoaXMuX2NoYW5nZS5lLmFwcGx5KHRoaXMsW3QsbixyXSkpfSxudzpmdW5jdGlvbih0LG4scil7cmV0dXJuIGUuZXh0ZW5kKHRoaXMuX2NoYW5nZS5uLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLl9jaGFuZ2Uudy5hcHBseSh0aGlzLFt0LG4scl0pKX19LF9wcm9wYWdhdGU6ZnVuY3Rpb24odCxuKXtlLnVpLnBsdWdpbi5jYWxsKHRoaXMsdCxbbix0aGlzLnVpKCldKSx0IT0icmVzaXplIiYmdGhpcy5fdHJpZ2dlcih0LG4sdGhpcy51aSgpKX0scGx1Z2luczp7fSx1aTpmdW5jdGlvbigpe3JldHVybntvcmlnaW5hbEVsZW1lbnQ6dGhpcy5vcmlnaW5hbEVsZW1lbnQsZWxlbWVudDp0aGlzLmVsZW1lbnQsaGVscGVyOnRoaXMuaGVscGVyLHBvc2l0aW9uOnRoaXMucG9zaXRpb24sc2l6ZTp0aGlzLnNpemUsb3JpZ2luYWxTaXplOnRoaXMub3JpZ2luYWxTaXplLG9yaWdpbmFsUG9zaXRpb246dGhpcy5vcmlnaW5hbFBvc2l0aW9ufX19KSxlLnVpLnBsdWdpbi5hZGQoInJlc2l6YWJsZSIsImFsc29SZXNpemUiLHtzdGFydDpmdW5jdGlvbih0LG4pe3ZhciByPWUodGhpcykuZGF0YSgicmVzaXphYmxlIiksaT1yLm9wdGlvbnMscz1mdW5jdGlvbih0KXtlKHQpLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpO3QuZGF0YSgicmVzaXphYmxlLWFsc29yZXNpemUiLHt3aWR0aDpwYXJzZUludCh0LndpZHRoKCksMTApLGhlaWdodDpwYXJzZUludCh0LmhlaWdodCgpLDEwKSxsZWZ0OnBhcnNlSW50KHQuY3NzKCJsZWZ0IiksMTApLHRvcDpwYXJzZUludCh0LmNzcygidG9wIiksMTApfSl9KX07dHlwZW9mIGkuYWxzb1Jlc2l6ZT09Im9iamVjdCImJiFpLmFsc29SZXNpemUucGFyZW50Tm9kZT9pLmFsc29SZXNpemUubGVuZ3RoPyhpLmFsc29SZXNpemU9aS5hbHNvUmVzaXplWzBdLHMoaS5hbHNvUmVzaXplKSk6ZS5lYWNoKGkuYWxzb1Jlc2l6ZSxmdW5jdGlvbihlKXtzKGUpfSk6cyhpLmFsc29SZXNpemUpfSxyZXNpemU6ZnVuY3Rpb24odCxuKXt2YXIgcj1lKHRoaXMpLmRhdGEoInJlc2l6YWJsZSIpLGk9ci5vcHRpb25zLHM9ci5vcmlnaW5hbFNpemUsbz1yLm9yaWdpbmFsUG9zaXRpb24sdT17aGVpZ2h0OnIuc2l6ZS5oZWlnaHQtcy5oZWlnaHR8fDAsd2lkdGg6ci5zaXplLndpZHRoLXMud2lkdGh8fDAsdG9wOnIucG9zaXRpb24udG9wLW8udG9wfHwwLGxlZnQ6ci5wb3NpdGlvbi5sZWZ0LW8ubGVmdHx8MH0sYT1mdW5jdGlvbih0LHIpe2UodCkuZWFjaChmdW5jdGlvbigpe3ZhciB0PWUodGhpcyksaT1lKHRoaXMpLmRhdGEoInJlc2l6YWJsZS1hbHNvcmVzaXplIikscz17fSxvPXImJnIubGVuZ3RoP3I6dC5wYXJlbnRzKG4ub3JpZ2luYWxFbGVtZW50WzBdKS5sZW5ndGg/WyJ3aWR0aCIsImhlaWdodCJdOlsid2lkdGgiLCJoZWlnaHQiLCJ0b3AiLCJsZWZ0Il07ZS5lYWNoKG8sZnVuY3Rpb24oZSx0KXt2YXIgbj0oaVt0XXx8MCkrKHVbdF18fDApO24mJm4+PTAmJihzW3RdPW58fG51bGwpfSksdC5jc3Mocyl9KX07dHlwZW9mIGkuYWxzb1Jlc2l6ZT09Im9iamVjdCImJiFpLmFsc29SZXNpemUubm9kZVR5cGU/ZS5lYWNoKGkuYWxzb1Jlc2l6ZSxmdW5jdGlvbihlLHQpe2EoZSx0KX0pOmEoaS5hbHNvUmVzaXplKX0sc3RvcDpmdW5jdGlvbih0LG4pe2UodGhpcykucmVtb3ZlRGF0YSgicmVzaXphYmxlLWFsc29yZXNpemUiKX19KSxlLnVpLnBsdWdpbi5hZGQoInJlc2l6YWJsZSIsImFuaW1hdGUiLHtzdG9wOmZ1bmN0aW9uKHQsbil7dmFyIHI9ZSh0aGlzKS5kYXRhKCJyZXNpemFibGUiKSxpPXIub3B0aW9ucyxzPXIuX3Byb3BvcnRpb25hbGx5UmVzaXplRWxlbWVudHMsbz1zLmxlbmd0aCYmL3RleHRhcmVhL2kudGVzdChzWzBdLm5vZGVOYW1lKSx1PW8mJmUudWkuaGFzU2Nyb2xsKHNbMF0sImxlZnQiKT8wOnIuc2l6ZURpZmYuaGVpZ2h0LGE9bz8wOnIuc2l6ZURpZmYud2lkdGgsZj17d2lkdGg6ci5zaXplLndpZHRoLWEsaGVpZ2h0OnIuc2l6ZS5oZWlnaHQtdX0sbD1wYXJzZUludChyLmVsZW1lbnQuY3NzKCJsZWZ0IiksMTApKyhyLnBvc2l0aW9uLmxlZnQtci5vcmlnaW5hbFBvc2l0aW9uLmxlZnQpfHxudWxsLGM9cGFyc2VJbnQoci5lbGVtZW50LmNzcygidG9wIiksMTApKyhyLnBvc2l0aW9uLnRvcC1yLm9yaWdpbmFsUG9zaXRpb24udG9wKXx8bnVsbDtyLmVsZW1lbnQuYW5pbWF0ZShlLmV4dGVuZChmLGMmJmw/e3RvcDpjLGxlZnQ6bH06e30pLHtkdXJhdGlvbjppLmFuaW1hdGVEdXJhdGlvbixlYXNpbmc6aS5hbmltYXRlRWFzaW5nLHN0ZXA6ZnVuY3Rpb24oKXt2YXIgbj17d2lkdGg6cGFyc2VJbnQoci5lbGVtZW50LmNzcygid2lkdGgiKSwxMCksaGVpZ2h0OnBhcnNlSW50KHIuZWxlbWVudC5jc3MoImhlaWdodCIpLDEwKSx0b3A6cGFyc2VJbnQoci5lbGVtZW50LmNzcygidG9wIiksMTApLGxlZnQ6cGFyc2VJbnQoci5lbGVtZW50LmNzcygibGVmdCIpLDEwKX07cyYmcy5sZW5ndGgmJmUoc1swXSkuY3NzKHt3aWR0aDpuLndpZHRoLGhlaWdodDpuLmhlaWdodH0pLHIuX3VwZGF0ZUNhY2hlKG4pLHIuX3Byb3BhZ2F0ZSgicmVzaXplIix0KX19KX19KSxlLnVpLnBsdWdpbi5hZGQoInJlc2l6YWJsZSIsImNvbnRhaW5tZW50Iix7c3RhcnQ6ZnVuY3Rpb24odCxyKXt2YXIgaT1lKHRoaXMpLmRhdGEoInJlc2l6YWJsZSIpLHM9aS5vcHRpb25zLG89aS5lbGVtZW50LHU9cy5jb250YWlubWVudCxhPXUgaW5zdGFuY2VvZiBlP3UuZ2V0KDApOi9wYXJlbnQvLnRlc3QodSk/by5wYXJlbnQoKS5nZXQoMCk6dTtpZighYSlyZXR1cm47aS5jb250YWluZXJFbGVtZW50PWUoYSk7aWYoL2RvY3VtZW50Ly50ZXN0KHUpfHx1PT1kb2N1bWVudClpLmNvbnRhaW5lck9mZnNldD17bGVmdDowLHRvcDowfSxpLmNvbnRhaW5lclBvc2l0aW9uPXtsZWZ0OjAsdG9wOjB9LGkucGFyZW50RGF0YT17ZWxlbWVudDplKGRvY3VtZW50KSxsZWZ0OjAsdG9wOjAsd2lkdGg6ZShkb2N1bWVudCkud2lkdGgoKSxoZWlnaHQ6ZShkb2N1bWVudCkuaGVpZ2h0KCl8fGRvY3VtZW50LmJvZHkucGFyZW50Tm9kZS5zY3JvbGxIZWlnaHR9O2Vsc2V7dmFyIGY9ZShhKSxsPVtdO2UoWyJUb3AiLCJSaWdodCIsIkxlZnQiLCJCb3R0b20iXSkuZWFjaChmdW5jdGlvbihlLHQpe2xbZV09bihmLmNzcygicGFkZGluZyIrdCkpfSksaS5jb250YWluZXJPZmZzZXQ9Zi5vZmZzZXQoKSxpLmNvbnRhaW5lclBvc2l0aW9uPWYucG9zaXRpb24oKSxpLmNvbnRhaW5lclNpemU9e2hlaWdodDpmLmlubmVySGVpZ2h0KCktbFszXSx3aWR0aDpmLmlubmVyV2lkdGgoKS1sWzFdfTt2YXIgYz1pLmNvbnRhaW5lck9mZnNldCxoPWkuY29udGFpbmVyU2l6ZS5oZWlnaHQscD1pLmNvbnRhaW5lclNpemUud2lkdGgsZD1lLnVpLmhhc1Njcm9sbChhLCJsZWZ0Iik/YS5zY3JvbGxXaWR0aDpwLHY9ZS51aS5oYXNTY3JvbGwoYSk/YS5zY3JvbGxIZWlnaHQ6aDtpLnBhcmVudERhdGE9e2VsZW1lbnQ6YSxsZWZ0OmMubGVmdCx0b3A6Yy50b3Asd2lkdGg6ZCxoZWlnaHQ6dn19fSxyZXNpemU6ZnVuY3Rpb24odCxuKXt2YXIgcj1lKHRoaXMpLmRhdGEoInJlc2l6YWJsZSIpLGk9ci5vcHRpb25zLHM9ci5jb250YWluZXJTaXplLG89ci5jb250YWluZXJPZmZzZXQsdT1yLnNpemUsYT1yLnBvc2l0aW9uLGY9ci5fYXNwZWN0UmF0aW98fHQuc2hpZnRLZXksbD17dG9wOjAsbGVmdDowfSxjPXIuY29udGFpbmVyRWxlbWVudDtjWzBdIT1kb2N1bWVudCYmL3N0YXRpYy8udGVzdChjLmNzcygicG9zaXRpb24iKSkmJihsPW8pLGEubGVmdDwoci5faGVscGVyP28ubGVmdDowKSYmKHIuc2l6ZS53aWR0aD1yLnNpemUud2lkdGgrKHIuX2hlbHBlcj9yLnBvc2l0aW9uLmxlZnQtby5sZWZ0OnIucG9zaXRpb24ubGVmdC1sLmxlZnQpLGYmJihyLnNpemUuaGVpZ2h0PXIuc2l6ZS53aWR0aC9yLmFzcGVjdFJhdGlvKSxyLnBvc2l0aW9uLmxlZnQ9aS5oZWxwZXI/by5sZWZ0OjApLGEudG9wPChyLl9oZWxwZXI/by50b3A6MCkmJihyLnNpemUuaGVpZ2h0PXIuc2l6ZS5oZWlnaHQrKHIuX2hlbHBlcj9yLnBvc2l0aW9uLnRvcC1vLnRvcDpyLnBvc2l0aW9uLnRvcCksZiYmKHIuc2l6ZS53aWR0aD1yLnNpemUuaGVpZ2h0KnIuYXNwZWN0UmF0aW8pLHIucG9zaXRpb24udG9wPXIuX2hlbHBlcj9vLnRvcDowKSxyLm9mZnNldC5sZWZ0PXIucGFyZW50RGF0YS5sZWZ0K3IucG9zaXRpb24ubGVmdCxyLm9mZnNldC50b3A9ci5wYXJlbnREYXRhLnRvcCtyLnBvc2l0aW9uLnRvcDt2YXIgaD1NYXRoLmFicygoci5faGVscGVyP3Iub2Zmc2V0LmxlZnQtbC5sZWZ0OnIub2Zmc2V0LmxlZnQtbC5sZWZ0KStyLnNpemVEaWZmLndpZHRoKSxwPU1hdGguYWJzKChyLl9oZWxwZXI/ci5vZmZzZXQudG9wLWwudG9wOnIub2Zmc2V0LnRvcC1vLnRvcCkrci5zaXplRGlmZi5oZWlnaHQpLGQ9ci5jb250YWluZXJFbGVtZW50LmdldCgwKT09ci5lbGVtZW50LnBhcmVudCgpLmdldCgwKSx2PS9yZWxhdGl2ZXxhYnNvbHV0ZS8udGVzdChyLmNvbnRhaW5lckVsZW1lbnQuY3NzKCJwb3NpdGlvbiIpKTtkJiZ2JiYoaC09ci5wYXJlbnREYXRhLmxlZnQpLGgrci5zaXplLndpZHRoPj1yLnBhcmVudERhdGEud2lkdGgmJihyLnNpemUud2lkdGg9ci5wYXJlbnREYXRhLndpZHRoLWgsZiYmKHIuc2l6ZS5oZWlnaHQ9ci5zaXplLndpZHRoL3IuYXNwZWN0UmF0aW8pKSxwK3Iuc2l6ZS5oZWlnaHQ+PXIucGFyZW50RGF0YS5oZWlnaHQmJihyLnNpemUuaGVpZ2h0PXIucGFyZW50RGF0YS5oZWlnaHQtcCxmJiYoci5zaXplLndpZHRoPXIuc2l6ZS5oZWlnaHQqci5hc3BlY3RSYXRpbykpfSxzdG9wOmZ1bmN0aW9uKHQsbil7dmFyIHI9ZSh0aGlzKS5kYXRhKCJyZXNpemFibGUiKSxpPXIub3B0aW9ucyxzPXIucG9zaXRpb24sbz1yLmNvbnRhaW5lck9mZnNldCx1PXIuY29udGFpbmVyUG9zaXRpb24sYT1yLmNvbnRhaW5lckVsZW1lbnQsZj1lKHIuaGVscGVyKSxsPWYub2Zmc2V0KCksYz1mLm91dGVyV2lkdGgoKS1yLnNpemVEaWZmLndpZHRoLGg9Zi5vdXRlckhlaWdodCgpLXIuc2l6ZURpZmYuaGVpZ2h0O3IuX2hlbHBlciYmIWkuYW5pbWF0ZSYmL3JlbGF0aXZlLy50ZXN0KGEuY3NzKCJwb3NpdGlvbiIpKSYmZSh0aGlzKS5jc3Moe2xlZnQ6bC5sZWZ0LXUubGVmdC1vLmxlZnQsd2lkdGg6YyxoZWlnaHQ6aH0pLHIuX2hlbHBlciYmIWkuYW5pbWF0ZSYmL3N0YXRpYy8udGVzdChhLmNzcygicG9zaXRpb24iKSkmJmUodGhpcykuY3NzKHtsZWZ0OmwubGVmdC11LmxlZnQtby5sZWZ0LHdpZHRoOmMsaGVpZ2h0Omh9KX19KSxlLnVpLnBsdWdpbi5hZGQoInJlc2l6YWJsZSIsImdob3N0Iix7c3RhcnQ6ZnVuY3Rpb24odCxuKXt2YXIgcj1lKHRoaXMpLmRhdGEoInJlc2l6YWJsZSIpLGk9ci5vcHRpb25zLHM9ci5zaXplO3IuZ2hvc3Q9ci5vcmlnaW5hbEVsZW1lbnQuY2xvbmUoKSxyLmdob3N0LmNzcyh7b3BhY2l0eTouMjUsZGlzcGxheToiYmxvY2siLHBvc2l0aW9uOiJyZWxhdGl2ZSIsaGVpZ2h0OnMuaGVpZ2h0LHdpZHRoOnMud2lkdGgsbWFyZ2luOjAsbGVmdDowLHRvcDowfSkuYWRkQ2xhc3MoInVpLXJlc2l6YWJsZS1naG9zdCIpLmFkZENsYXNzKHR5cGVvZiBpLmdob3N0PT0ic3RyaW5nIj9pLmdob3N0OiIiKSxyLmdob3N0LmFwcGVuZFRvKHIuaGVscGVyKX0scmVzaXplOmZ1bmN0aW9uKHQsbil7dmFyIHI9ZSh0aGlzKS5kYXRhKCJyZXNpemFibGUiKSxpPXIub3B0aW9ucztyLmdob3N0JiZyLmdob3N0LmNzcyh7cG9zaXRpb246InJlbGF0aXZlIixoZWlnaHQ6ci5zaXplLmhlaWdodCx3aWR0aDpyLnNpemUud2lkdGh9KX0sc3RvcDpmdW5jdGlvbih0LG4pe3ZhciByPWUodGhpcykuZGF0YSgicmVzaXphYmxlIiksaT1yLm9wdGlvbnM7ci5naG9zdCYmci5oZWxwZXImJnIuaGVscGVyLmdldCgwKS5yZW1vdmVDaGlsZChyLmdob3N0LmdldCgwKSl9fSksZS51aS5wbHVnaW4uYWRkKCJyZXNpemFibGUiLCJncmlkIix7cmVzaXplOmZ1bmN0aW9uKHQsbil7dmFyIHI9ZSh0aGlzKS5kYXRhKCJyZXNpemFibGUiKSxpPXIub3B0aW9ucyxzPXIuc2l6ZSxvPXIub3JpZ2luYWxTaXplLHU9ci5vcmlnaW5hbFBvc2l0aW9uLGE9ci5heGlzLGY9aS5fYXNwZWN0UmF0aW98fHQuc2hpZnRLZXk7aS5ncmlkPXR5cGVvZiBpLmdyaWQ9PSJudW1iZXIiP1tpLmdyaWQsaS5ncmlkXTppLmdyaWQ7dmFyIGw9TWF0aC5yb3VuZCgocy53aWR0aC1vLndpZHRoKS8oaS5ncmlkWzBdfHwxKSkqKGkuZ3JpZFswXXx8MSksYz1NYXRoLnJvdW5kKChzLmhlaWdodC1vLmhlaWdodCkvKGkuZ3JpZFsxXXx8MSkpKihpLmdyaWRbMV18fDEpOy9eKHNlfHN8ZSkkLy50ZXN0KGEpPyhyLnNpemUud2lkdGg9by53aWR0aCtsLHIuc2l6ZS5oZWlnaHQ9by5oZWlnaHQrYyk6L14obmUpJC8udGVzdChhKT8oci5zaXplLndpZHRoPW8ud2lkdGgrbCxyLnNpemUuaGVpZ2h0PW8uaGVpZ2h0K2Msci5wb3NpdGlvbi50b3A9dS50b3AtYyk6L14oc3cpJC8udGVzdChhKT8oci5zaXplLndpZHRoPW8ud2lkdGgrbCxyLnNpemUuaGVpZ2h0PW8uaGVpZ2h0K2Msci5wb3NpdGlvbi5sZWZ0PXUubGVmdC1sKTooci5zaXplLndpZHRoPW8ud2lkdGgrbCxyLnNpemUuaGVpZ2h0PW8uaGVpZ2h0K2Msci5wb3NpdGlvbi50b3A9dS50b3AtYyxyLnBvc2l0aW9uLmxlZnQ9dS5sZWZ0LWwpfX0pO3ZhciBuPWZ1bmN0aW9uKGUpe3JldHVybiBwYXJzZUludChlLDEwKXx8MH0scj1mdW5jdGlvbihlKXtyZXR1cm4haXNOYU4ocGFyc2VJbnQoZSwxMCkpfX0pKGpRdWVyeSk7KGZ1bmN0aW9uKGUsdCl7ZS53aWRnZXQoInVpLnNlbGVjdGFibGUiLGUudWkubW91c2Use3ZlcnNpb246IjEuOS4wIixvcHRpb25zOnthcHBlbmRUbzoiYm9keSIsYXV0b1JlZnJlc2g6ITAsZGlzdGFuY2U6MCxmaWx0ZXI6IioiLHRvbGVyYW5jZToidG91Y2gifSxfY3JlYXRlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpczt0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLXNlbGVjdGFibGUiKSx0aGlzLmRyYWdnZWQ9ITE7dmFyIG47dGhpcy5yZWZyZXNoPWZ1bmN0aW9uKCl7bj1lKHQub3B0aW9ucy5maWx0ZXIsdC5lbGVtZW50WzBdKSxuLmFkZENsYXNzKCJ1aS1zZWxlY3RlZSIpLG4uZWFjaChmdW5jdGlvbigpe3ZhciB0PWUodGhpcyksbj10Lm9mZnNldCgpO2UuZGF0YSh0aGlzLCJzZWxlY3RhYmxlLWl0ZW0iLHtlbGVtZW50OnRoaXMsJGVsZW1lbnQ6dCxsZWZ0Om4ubGVmdCx0b3A6bi50b3AscmlnaHQ6bi5sZWZ0K3Qub3V0ZXJXaWR0aCgpLGJvdHRvbTpuLnRvcCt0Lm91dGVySGVpZ2h0KCksc3RhcnRzZWxlY3RlZDohMSxzZWxlY3RlZDp0Lmhhc0NsYXNzKCJ1aS1zZWxlY3RlZCIpLHNlbGVjdGluZzp0Lmhhc0NsYXNzKCJ1aS1zZWxlY3RpbmciKSx1bnNlbGVjdGluZzp0Lmhhc0NsYXNzKCJ1aS11bnNlbGVjdGluZyIpfSl9KX0sdGhpcy5yZWZyZXNoKCksdGhpcy5zZWxlY3RlZXM9bi5hZGRDbGFzcygidWktc2VsZWN0ZWUiKSx0aGlzLl9tb3VzZUluaXQoKSx0aGlzLmhlbHBlcj1lKCI8ZGl2IGNsYXNzPSd1aS1zZWxlY3RhYmxlLWhlbHBlcic+PC9kaXY+Iil9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5zZWxlY3RlZXMucmVtb3ZlQ2xhc3MoInVpLXNlbGVjdGVlIikucmVtb3ZlRGF0YSgic2VsZWN0YWJsZS1pdGVtIiksdGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zZWxlY3RhYmxlIHVpLXNlbGVjdGFibGUtZGlzYWJsZWQiKSx0aGlzLl9tb3VzZURlc3Ryb3koKX0sX21vdXNlU3RhcnQ6ZnVuY3Rpb24odCl7dmFyIG49dGhpczt0aGlzLm9wb3M9W3QucGFnZVgsdC5wYWdlWV07aWYodGhpcy5vcHRpb25zLmRpc2FibGVkKXJldHVybjt2YXIgcj10aGlzLm9wdGlvbnM7dGhpcy5zZWxlY3RlZXM9ZShyLmZpbHRlcix0aGlzLmVsZW1lbnRbMF0pLHRoaXMuX3RyaWdnZXIoInN0YXJ0Iix0KSxlKHIuYXBwZW5kVG8pLmFwcGVuZCh0aGlzLmhlbHBlciksdGhpcy5oZWxwZXIuY3NzKHtsZWZ0OnQuY2xpZW50WCx0b3A6dC5jbGllbnRZLHdpZHRoOjAsaGVpZ2h0OjB9KSxyLmF1dG9SZWZyZXNoJiZ0aGlzLnJlZnJlc2goKSx0aGlzLnNlbGVjdGVlcy5maWx0ZXIoIi51aS1zZWxlY3RlZCIpLmVhY2goZnVuY3Rpb24oKXt2YXIgcj1lLmRhdGEodGhpcywic2VsZWN0YWJsZS1pdGVtIik7ci5zdGFydHNlbGVjdGVkPSEwLCF0Lm1ldGFLZXkmJiF0LmN0cmxLZXkmJihyLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zZWxlY3RlZCIpLHIuc2VsZWN0ZWQ9ITEsci4kZWxlbWVudC5hZGRDbGFzcygidWktdW5zZWxlY3RpbmciKSxyLnVuc2VsZWN0aW5nPSEwLG4uX3RyaWdnZXIoInVuc2VsZWN0aW5nIix0LHt1bnNlbGVjdGluZzpyLmVsZW1lbnR9KSl9KSxlKHQudGFyZ2V0KS5wYXJlbnRzKCkuYW5kU2VsZigpLmVhY2goZnVuY3Rpb24oKXt2YXIgcj1lLmRhdGEodGhpcywic2VsZWN0YWJsZS1pdGVtIik7aWYocil7dmFyIGk9IXQubWV0YUtleSYmIXQuY3RybEtleXx8IXIuJGVsZW1lbnQuaGFzQ2xhc3MoInVpLXNlbGVjdGVkIik7cmV0dXJuIHIuJGVsZW1lbnQucmVtb3ZlQ2xhc3MoaT8idWktdW5zZWxlY3RpbmciOiJ1aS1zZWxlY3RlZCIpLmFkZENsYXNzKGk/InVpLXNlbGVjdGluZyI6InVpLXVuc2VsZWN0aW5nIiksci51bnNlbGVjdGluZz0haSxyLnNlbGVjdGluZz1pLHIuc2VsZWN0ZWQ9aSxpP24uX3RyaWdnZXIoInNlbGVjdGluZyIsdCx7c2VsZWN0aW5nOnIuZWxlbWVudH0pOm4uX3RyaWdnZXIoInVuc2VsZWN0aW5nIix0LHt1bnNlbGVjdGluZzpyLmVsZW1lbnR9KSwhMX19KX0sX21vdXNlRHJhZzpmdW5jdGlvbih0KXt2YXIgbj10aGlzO3RoaXMuZHJhZ2dlZD0hMDtpZih0aGlzLm9wdGlvbnMuZGlzYWJsZWQpcmV0dXJuO3ZhciByPXRoaXMub3B0aW9ucyxpPXRoaXMub3Bvc1swXSxzPXRoaXMub3Bvc1sxXSxvPXQucGFnZVgsdT10LnBhZ2VZO2lmKGk+byl7dmFyIGE9bztvPWksaT1hfWlmKHM+dSl7dmFyIGE9dTt1PXMscz1hfXJldHVybiB0aGlzLmhlbHBlci5jc3Moe2xlZnQ6aSx0b3A6cyx3aWR0aDpvLWksaGVpZ2h0OnUtc30pLHRoaXMuc2VsZWN0ZWVzLmVhY2goZnVuY3Rpb24oKXt2YXIgYT1lLmRhdGEodGhpcywic2VsZWN0YWJsZS1pdGVtIik7aWYoIWF8fGEuZWxlbWVudD09bi5lbGVtZW50WzBdKXJldHVybjt2YXIgZj0hMTtyLnRvbGVyYW5jZT09InRvdWNoIj9mPSEoYS5sZWZ0Pm98fGEucmlnaHQ8aXx8YS50b3A+dXx8YS5ib3R0b208cyk6ci50b2xlcmFuY2U9PSJmaXQiJiYoZj1hLmxlZnQ+aSYmYS5yaWdodDxvJiZhLnRvcD5zJiZhLmJvdHRvbTx1KSxmPyhhLnNlbGVjdGVkJiYoYS4kZWxlbWVudC5yZW1vdmVDbGFzcygidWktc2VsZWN0ZWQiKSxhLnNlbGVjdGVkPSExKSxhLnVuc2VsZWN0aW5nJiYoYS4kZWxlbWVudC5yZW1vdmVDbGFzcygidWktdW5zZWxlY3RpbmciKSxhLnVuc2VsZWN0aW5nPSExKSxhLnNlbGVjdGluZ3x8KGEuJGVsZW1lbnQuYWRkQ2xhc3MoInVpLXNlbGVjdGluZyIpLGEuc2VsZWN0aW5nPSEwLG4uX3RyaWdnZXIoInNlbGVjdGluZyIsdCx7c2VsZWN0aW5nOmEuZWxlbWVudH0pKSk6KGEuc2VsZWN0aW5nJiYoKHQubWV0YUtleXx8dC5jdHJsS2V5KSYmYS5zdGFydHNlbGVjdGVkPyhhLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zZWxlY3RpbmciKSxhLnNlbGVjdGluZz0hMSxhLiRlbGVtZW50LmFkZENsYXNzKCJ1aS1zZWxlY3RlZCIpLGEuc2VsZWN0ZWQ9ITApOihhLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zZWxlY3RpbmciKSxhLnNlbGVjdGluZz0hMSxhLnN0YXJ0c2VsZWN0ZWQmJihhLiRlbGVtZW50LmFkZENsYXNzKCJ1aS11bnNlbGVjdGluZyIpLGEudW5zZWxlY3Rpbmc9ITApLG4uX3RyaWdnZXIoInVuc2VsZWN0aW5nIix0LHt1bnNlbGVjdGluZzphLmVsZW1lbnR9KSkpLGEuc2VsZWN0ZWQmJiF0Lm1ldGFLZXkmJiF0LmN0cmxLZXkmJiFhLnN0YXJ0c2VsZWN0ZWQmJihhLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zZWxlY3RlZCIpLGEuc2VsZWN0ZWQ9ITEsYS4kZWxlbWVudC5hZGRDbGFzcygidWktdW5zZWxlY3RpbmciKSxhLnVuc2VsZWN0aW5nPSEwLG4uX3RyaWdnZXIoInVuc2VsZWN0aW5nIix0LHt1bnNlbGVjdGluZzphLmVsZW1lbnR9KSkpfSksITF9LF9tb3VzZVN0b3A6ZnVuY3Rpb24odCl7dmFyIG49dGhpczt0aGlzLmRyYWdnZWQ9ITE7dmFyIHI9dGhpcy5vcHRpb25zO3JldHVybiBlKCIudWktdW5zZWxlY3RpbmciLHRoaXMuZWxlbWVudFswXSkuZWFjaChmdW5jdGlvbigpe3ZhciByPWUuZGF0YSh0aGlzLCJzZWxlY3RhYmxlLWl0ZW0iKTtyLiRlbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS11bnNlbGVjdGluZyIpLHIudW5zZWxlY3Rpbmc9ITEsci5zdGFydHNlbGVjdGVkPSExLG4uX3RyaWdnZXIoInVuc2VsZWN0ZWQiLHQse3Vuc2VsZWN0ZWQ6ci5lbGVtZW50fSl9KSxlKCIudWktc2VsZWN0aW5nIix0aGlzLmVsZW1lbnRbMF0pLmVhY2goZnVuY3Rpb24oKXt2YXIgcj1lLmRhdGEodGhpcywic2VsZWN0YWJsZS1pdGVtIik7ci4kZWxlbWVudC5yZW1vdmVDbGFzcygidWktc2VsZWN0aW5nIikuYWRkQ2xhc3MoInVpLXNlbGVjdGVkIiksci5zZWxlY3Rpbmc9ITEsci5zZWxlY3RlZD0hMCxyLnN0YXJ0c2VsZWN0ZWQ9ITAsbi5fdHJpZ2dlcigic2VsZWN0ZWQiLHQse3NlbGVjdGVkOnIuZWxlbWVudH0pfSksdGhpcy5fdHJpZ2dlcigic3RvcCIsdCksdGhpcy5oZWxwZXIucmVtb3ZlKCksITF9fSl9KShqUXVlcnkpOyhmdW5jdGlvbihlLHQpe2Uud2lkZ2V0KCJ1aS5zb3J0YWJsZSIsZS51aS5tb3VzZSx7dmVyc2lvbjoiMS45LjAiLHdpZGdldEV2ZW50UHJlZml4OiJzb3J0IixyZWFkeTohMSxvcHRpb25zOnthcHBlbmRUbzoicGFyZW50IixheGlzOiExLGNvbm5lY3RXaXRoOiExLGNvbnRhaW5tZW50OiExLGN1cnNvcjoiYXV0byIsY3Vyc29yQXQ6ITEsZHJvcE9uRW1wdHk6ITAsZm9yY2VQbGFjZWhvbGRlclNpemU6ITEsZm9yY2VIZWxwZXJTaXplOiExLGdyaWQ6ITEsaGFuZGxlOiExLGhlbHBlcjoib3JpZ2luYWwiLGl0ZW1zOiI+ICoiLG9wYWNpdHk6ITEscGxhY2Vob2xkZXI6ITEscmV2ZXJ0OiExLHNjcm9sbDohMCxzY3JvbGxTZW5zaXRpdml0eToyMCxzY3JvbGxTcGVlZDoyMCxzY29wZToiZGVmYXVsdCIsdG9sZXJhbmNlOiJpbnRlcnNlY3QiLHpJbmRleDoxZTN9LF9jcmVhdGU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9wdGlvbnM7dGhpcy5jb250YWluZXJDYWNoZT17fSx0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLXNvcnRhYmxlIiksdGhpcy5yZWZyZXNoKCksdGhpcy5mbG9hdGluZz10aGlzLml0ZW1zLmxlbmd0aD9lLmF4aXM9PT0ieCJ8fC9sZWZ0fHJpZ2h0Ly50ZXN0KHRoaXMuaXRlbXNbMF0uaXRlbS5jc3MoImZsb2F0IikpfHwvaW5saW5lfHRhYmxlLWNlbGwvLnRlc3QodGhpcy5pdGVtc1swXS5pdGVtLmNzcygiZGlzcGxheSIpKTohMSx0aGlzLm9mZnNldD10aGlzLmVsZW1lbnQub2Zmc2V0KCksdGhpcy5fbW91c2VJbml0KCksdGhpcy5yZWFkeT0hMH0sX2Rlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLXNvcnRhYmxlIHVpLXNvcnRhYmxlLWRpc2FibGVkIiksdGhpcy5fbW91c2VEZXN0cm95KCk7Zm9yKHZhciBlPXRoaXMuaXRlbXMubGVuZ3RoLTE7ZT49MDtlLS0pdGhpcy5pdGVtc1tlXS5pdGVtLnJlbW92ZURhdGEodGhpcy53aWRnZXROYW1lKyItaXRlbSIpO3JldHVybiB0aGlzfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKHQsbil7dD09PSJkaXNhYmxlZCI/KHRoaXMub3B0aW9uc1t0XT1uLHRoaXMud2lkZ2V0KCkudG9nZ2xlQ2xhc3MoInVpLXNvcnRhYmxlLWRpc2FibGVkIiwhIW4pKTplLldpZGdldC5wcm90b3R5cGUuX3NldE9wdGlvbi5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LF9tb3VzZUNhcHR1cmU6ZnVuY3Rpb24odCxuKXt2YXIgcj10aGlzO2lmKHRoaXMucmV2ZXJ0aW5nKXJldHVybiExO2lmKHRoaXMub3B0aW9ucy5kaXNhYmxlZHx8dGhpcy5vcHRpb25zLnR5cGU9PSJzdGF0aWMiKXJldHVybiExO3RoaXMuX3JlZnJlc2hJdGVtcyh0KTt2YXIgaT1udWxsLHM9ZSh0LnRhcmdldCkucGFyZW50cygpLmVhY2goZnVuY3Rpb24oKXtpZihlLmRhdGEodGhpcyxyLndpZGdldE5hbWUrIi1pdGVtIik9PXIpcmV0dXJuIGk9ZSh0aGlzKSwhMX0pO2UuZGF0YSh0LnRhcmdldCxyLndpZGdldE5hbWUrIi1pdGVtIik9PXImJihpPWUodC50YXJnZXQpKTtpZighaSlyZXR1cm4hMTtpZih0aGlzLm9wdGlvbnMuaGFuZGxlJiYhbil7dmFyIG89ITE7ZSh0aGlzLm9wdGlvbnMuaGFuZGxlLGkpLmZpbmQoIioiKS5hbmRTZWxmKCkuZWFjaChmdW5jdGlvbigpe3RoaXM9PXQudGFyZ2V0JiYobz0hMCl9KTtpZighbylyZXR1cm4hMX1yZXR1cm4gdGhpcy5jdXJyZW50SXRlbT1pLHRoaXMuX3JlbW92ZUN1cnJlbnRzRnJvbUl0ZW1zKCksITB9LF9tb3VzZVN0YXJ0OmZ1bmN0aW9uKHQsbixyKXt2YXIgaT10aGlzLm9wdGlvbnM7dGhpcy5jdXJyZW50Q29udGFpbmVyPXRoaXMsdGhpcy5yZWZyZXNoUG9zaXRpb25zKCksdGhpcy5oZWxwZXI9dGhpcy5fY3JlYXRlSGVscGVyKHQpLHRoaXMuX2NhY2hlSGVscGVyUHJvcG9ydGlvbnMoKSx0aGlzLl9jYWNoZU1hcmdpbnMoKSx0aGlzLnNjcm9sbFBhcmVudD10aGlzLmhlbHBlci5zY3JvbGxQYXJlbnQoKSx0aGlzLm9mZnNldD10aGlzLmN1cnJlbnRJdGVtLm9mZnNldCgpLHRoaXMub2Zmc2V0PXt0b3A6dGhpcy5vZmZzZXQudG9wLXRoaXMubWFyZ2lucy50b3AsbGVmdDp0aGlzLm9mZnNldC5sZWZ0LXRoaXMubWFyZ2lucy5sZWZ0fSxlLmV4dGVuZCh0aGlzLm9mZnNldCx7Y2xpY2s6e2xlZnQ6dC5wYWdlWC10aGlzLm9mZnNldC5sZWZ0LHRvcDp0LnBhZ2VZLXRoaXMub2Zmc2V0LnRvcH0scGFyZW50OnRoaXMuX2dldFBhcmVudE9mZnNldCgpLHJlbGF0aXZlOnRoaXMuX2dldFJlbGF0aXZlT2Zmc2V0KCl9KSx0aGlzLmhlbHBlci5jc3MoInBvc2l0aW9uIiwiYWJzb2x1dGUiKSx0aGlzLmNzc1Bvc2l0aW9uPXRoaXMuaGVscGVyLmNzcygicG9zaXRpb24iKSx0aGlzLm9yaWdpbmFsUG9zaXRpb249dGhpcy5fZ2VuZXJhdGVQb3NpdGlvbih0KSx0aGlzLm9yaWdpbmFsUGFnZVg9dC5wYWdlWCx0aGlzLm9yaWdpbmFsUGFnZVk9dC5wYWdlWSxpLmN1cnNvckF0JiZ0aGlzLl9hZGp1c3RPZmZzZXRGcm9tSGVscGVyKGkuY3Vyc29yQXQpLHRoaXMuZG9tUG9zaXRpb249e3ByZXY6dGhpcy5jdXJyZW50SXRlbS5wcmV2KClbMF0scGFyZW50OnRoaXMuY3VycmVudEl0ZW0ucGFyZW50KClbMF19LHRoaXMuaGVscGVyWzBdIT10aGlzLmN1cnJlbnRJdGVtWzBdJiZ0aGlzLmN1cnJlbnRJdGVtLmhpZGUoKSx0aGlzLl9jcmVhdGVQbGFjZWhvbGRlcigpLGkuY29udGFpbm1lbnQmJnRoaXMuX3NldENvbnRhaW5tZW50KCksaS5jdXJzb3ImJihlKCJib2R5IikuY3NzKCJjdXJzb3IiKSYmKHRoaXMuX3N0b3JlZEN1cnNvcj1lKCJib2R5IikuY3NzKCJjdXJzb3IiKSksZSgiYm9keSIpLmNzcygiY3Vyc29yIixpLmN1cnNvcikpLGkub3BhY2l0eSYmKHRoaXMuaGVscGVyLmNzcygib3BhY2l0eSIpJiYodGhpcy5fc3RvcmVkT3BhY2l0eT10aGlzLmhlbHBlci5jc3MoIm9wYWNpdHkiKSksdGhpcy5oZWxwZXIuY3NzKCJvcGFjaXR5IixpLm9wYWNpdHkpKSxpLnpJbmRleCYmKHRoaXMuaGVscGVyLmNzcygiekluZGV4IikmJih0aGlzLl9zdG9yZWRaSW5kZXg9dGhpcy5oZWxwZXIuY3NzKCJ6SW5kZXgiKSksdGhpcy5oZWxwZXIuY3NzKCJ6SW5kZXgiLGkuekluZGV4KSksdGhpcy5zY3JvbGxQYXJlbnRbMF0hPWRvY3VtZW50JiZ0aGlzLnNjcm9sbFBhcmVudFswXS50YWdOYW1lIT0iSFRNTCImJih0aGlzLm92ZXJmbG93T2Zmc2V0PXRoaXMuc2Nyb2xsUGFyZW50Lm9mZnNldCgpKSx0aGlzLl90cmlnZ2VyKCJzdGFydCIsdCx0aGlzLl91aUhhc2goKSksdGhpcy5fcHJlc2VydmVIZWxwZXJQcm9wb3J0aW9uc3x8dGhpcy5fY2FjaGVIZWxwZXJQcm9wb3J0aW9ucygpO2lmKCFyKWZvcih2YXIgcz10aGlzLmNvbnRhaW5lcnMubGVuZ3RoLTE7cz49MDtzLS0pdGhpcy5jb250YWluZXJzW3NdLl90cmlnZ2VyKCJhY3RpdmF0ZSIsdCx0aGlzLl91aUhhc2godGhpcykpO3JldHVybiBlLnVpLmRkbWFuYWdlciYmKGUudWkuZGRtYW5hZ2VyLmN1cnJlbnQ9dGhpcyksZS51aS5kZG1hbmFnZXImJiFpLmRyb3BCZWhhdmlvdXImJmUudWkuZGRtYW5hZ2VyLnByZXBhcmVPZmZzZXRzKHRoaXMsdCksdGhpcy5kcmFnZ2luZz0hMCx0aGlzLmhlbHBlci5hZGRDbGFzcygidWktc29ydGFibGUtaGVscGVyIiksdGhpcy5fbW91c2VEcmFnKHQpLCEwfSxfbW91c2VEcmFnOmZ1bmN0aW9uKHQpe3RoaXMucG9zaXRpb249dGhpcy5fZ2VuZXJhdGVQb3NpdGlvbih0KSx0aGlzLnBvc2l0aW9uQWJzPXRoaXMuX2NvbnZlcnRQb3NpdGlvblRvKCJhYnNvbHV0ZSIpLHRoaXMubGFzdFBvc2l0aW9uQWJzfHwodGhpcy5sYXN0UG9zaXRpb25BYnM9dGhpcy5wb3NpdGlvbkFicyk7aWYodGhpcy5vcHRpb25zLnNjcm9sbCl7dmFyIG49dGhpcy5vcHRpb25zLHI9ITE7dGhpcy5zY3JvbGxQYXJlbnRbMF0hPWRvY3VtZW50JiZ0aGlzLnNjcm9sbFBhcmVudFswXS50YWdOYW1lIT0iSFRNTCI/KHRoaXMub3ZlcmZsb3dPZmZzZXQudG9wK3RoaXMuc2Nyb2xsUGFyZW50WzBdLm9mZnNldEhlaWdodC10LnBhZ2VZPG4uc2Nyb2xsU2Vuc2l0aXZpdHk/dGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsVG9wPXI9dGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsVG9wK24uc2Nyb2xsU3BlZWQ6dC5wYWdlWS10aGlzLm92ZXJmbG93T2Zmc2V0LnRvcDxuLnNjcm9sbFNlbnNpdGl2aXR5JiYodGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsVG9wPXI9dGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsVG9wLW4uc2Nyb2xsU3BlZWQpLHRoaXMub3ZlcmZsb3dPZmZzZXQubGVmdCt0aGlzLnNjcm9sbFBhcmVudFswXS5vZmZzZXRXaWR0aC10LnBhZ2VYPG4uc2Nyb2xsU2Vuc2l0aXZpdHk/dGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsTGVmdD1yPXRoaXMuc2Nyb2xsUGFyZW50WzBdLnNjcm9sbExlZnQrbi5zY3JvbGxTcGVlZDp0LnBhZ2VYLXRoaXMub3ZlcmZsb3dPZmZzZXQubGVmdDxuLnNjcm9sbFNlbnNpdGl2aXR5JiYodGhpcy5zY3JvbGxQYXJlbnRbMF0uc2Nyb2xsTGVmdD1yPXRoaXMuc2Nyb2xsUGFyZW50WzBdLnNjcm9sbExlZnQtbi5zY3JvbGxTcGVlZCkpOih0LnBhZ2VZLWUoZG9jdW1lbnQpLnNjcm9sbFRvcCgpPG4uc2Nyb2xsU2Vuc2l0aXZpdHk/cj1lKGRvY3VtZW50KS5zY3JvbGxUb3AoZShkb2N1bWVudCkuc2Nyb2xsVG9wKCktbi5zY3JvbGxTcGVlZCk6ZSh3aW5kb3cpLmhlaWdodCgpLSh0LnBhZ2VZLWUoZG9jdW1lbnQpLnNjcm9sbFRvcCgpKTxuLnNjcm9sbFNlbnNpdGl2aXR5JiYocj1lKGRvY3VtZW50KS5zY3JvbGxUb3AoZShkb2N1bWVudCkuc2Nyb2xsVG9wKCkrbi5zY3JvbGxTcGVlZCkpLHQucGFnZVgtZShkb2N1bWVudCkuc2Nyb2xsTGVmdCgpPG4uc2Nyb2xsU2Vuc2l0aXZpdHk/cj1lKGRvY3VtZW50KS5zY3JvbGxMZWZ0KGUoZG9jdW1lbnQpLnNjcm9sbExlZnQoKS1uLnNjcm9sbFNwZWVkKTplKHdpbmRvdykud2lkdGgoKS0odC5wYWdlWC1lKGRvY3VtZW50KS5zY3JvbGxMZWZ0KCkpPG4uc2Nyb2xsU2Vuc2l0aXZpdHkmJihyPWUoZG9jdW1lbnQpLnNjcm9sbExlZnQoZShkb2N1bWVudCkuc2Nyb2xsTGVmdCgpK24uc2Nyb2xsU3BlZWQpKSksciE9PSExJiZlLnVpLmRkbWFuYWdlciYmIW4uZHJvcEJlaGF2aW91ciYmZS51aS5kZG1hbmFnZXIucHJlcGFyZU9mZnNldHModGhpcyx0KX10aGlzLnBvc2l0aW9uQWJzPXRoaXMuX2NvbnZlcnRQb3NpdGlvblRvKCJhYnNvbHV0ZSIpO2lmKCF0aGlzLm9wdGlvbnMuYXhpc3x8dGhpcy5vcHRpb25zLmF4aXMhPSJ5Iil0aGlzLmhlbHBlclswXS5zdHlsZS5sZWZ0PXRoaXMucG9zaXRpb24ubGVmdCsicHgiO2lmKCF0aGlzLm9wdGlvbnMuYXhpc3x8dGhpcy5vcHRpb25zLmF4aXMhPSJ4Iil0aGlzLmhlbHBlclswXS5zdHlsZS50b3A9dGhpcy5wb3NpdGlvbi50b3ArInB4Ijtmb3IodmFyIGk9dGhpcy5pdGVtcy5sZW5ndGgtMTtpPj0wO2ktLSl7dmFyIHM9dGhpcy5pdGVtc1tpXSxvPXMuaXRlbVswXSx1PXRoaXMuX2ludGVyc2VjdHNXaXRoUG9pbnRlcihzKTtpZighdSljb250aW51ZTtpZihzLmluc3RhbmNlIT09dGhpcy5jdXJyZW50Q29udGFpbmVyKWNvbnRpbnVlO2lmKG8hPXRoaXMuY3VycmVudEl0ZW1bMF0mJnRoaXMucGxhY2Vob2xkZXJbdT09MT8ibmV4dCI6InByZXYiXSgpWzBdIT1vJiYhZS5jb250YWlucyh0aGlzLnBsYWNlaG9sZGVyWzBdLG8pJiYodGhpcy5vcHRpb25zLnR5cGU9PSJzZW1pLWR5bmFtaWMiPyFlLmNvbnRhaW5zKHRoaXMuZWxlbWVudFswXSxvKTohMCkpe3RoaXMuZGlyZWN0aW9uPXU9PTE/ImRvd24iOiJ1cCI7aWYodGhpcy5vcHRpb25zLnRvbGVyYW5jZSE9InBvaW50ZXIiJiYhdGhpcy5faW50ZXJzZWN0c1dpdGhTaWRlcyhzKSlicmVhazt0aGlzLl9yZWFycmFuZ2UodCxzKSx0aGlzLl90cmlnZ2VyKCJjaGFuZ2UiLHQsdGhpcy5fdWlIYXNoKCkpO2JyZWFrfX1yZXR1cm4gdGhpcy5fY29udGFjdENvbnRhaW5lcnModCksZS51aS5kZG1hbmFnZXImJmUudWkuZGRtYW5hZ2VyLmRyYWcodGhpcyx0KSx0aGlzLl90cmlnZ2VyKCJzb3J0Iix0LHRoaXMuX3VpSGFzaCgpKSx0aGlzLmxhc3RQb3NpdGlvbkFicz10aGlzLnBvc2l0aW9uQWJzLCExfSxfbW91c2VTdG9wOmZ1bmN0aW9uKHQsbil7aWYoIXQpcmV0dXJuO2UudWkuZGRtYW5hZ2VyJiYhdGhpcy5vcHRpb25zLmRyb3BCZWhhdmlvdXImJmUudWkuZGRtYW5hZ2VyLmRyb3AodGhpcyx0KTtpZih0aGlzLm9wdGlvbnMucmV2ZXJ0KXt2YXIgcj10aGlzLGk9dGhpcy5wbGFjZWhvbGRlci5vZmZzZXQoKTt0aGlzLnJldmVydGluZz0hMCxlKHRoaXMuaGVscGVyKS5hbmltYXRlKHtsZWZ0OmkubGVmdC10aGlzLm9mZnNldC5wYXJlbnQubGVmdC10aGlzLm1hcmdpbnMubGVmdCsodGhpcy5vZmZzZXRQYXJlbnRbMF09PWRvY3VtZW50LmJvZHk/MDp0aGlzLm9mZnNldFBhcmVudFswXS5zY3JvbGxMZWZ0KSx0b3A6aS50b3AtdGhpcy5vZmZzZXQucGFyZW50LnRvcC10aGlzLm1hcmdpbnMudG9wKyh0aGlzLm9mZnNldFBhcmVudFswXT09ZG9jdW1lbnQuYm9keT8wOnRoaXMub2Zmc2V0UGFyZW50WzBdLnNjcm9sbFRvcCl9LHBhcnNlSW50KHRoaXMub3B0aW9ucy5yZXZlcnQsMTApfHw1MDAsZnVuY3Rpb24oKXtyLl9jbGVhcih0KX0pfWVsc2UgdGhpcy5fY2xlYXIodCxuKTtyZXR1cm4hMX0sY2FuY2VsOmZ1bmN0aW9uKCl7aWYodGhpcy5kcmFnZ2luZyl7dGhpcy5fbW91c2VVcCh7dGFyZ2V0Om51bGx9KSx0aGlzLm9wdGlvbnMuaGVscGVyPT0ib3JpZ2luYWwiP3RoaXMuY3VycmVudEl0ZW0uY3NzKHRoaXMuX3N0b3JlZENTUykucmVtb3ZlQ2xhc3MoInVpLXNvcnRhYmxlLWhlbHBlciIpOnRoaXMuY3VycmVudEl0ZW0uc2hvdygpO2Zvcih2YXIgdD10aGlzLmNvbnRhaW5lcnMubGVuZ3RoLTE7dD49MDt0LS0pdGhpcy5jb250YWluZXJzW3RdLl90cmlnZ2VyKCJkZWFjdGl2YXRlIixudWxsLHRoaXMuX3VpSGFzaCh0aGlzKSksdGhpcy5jb250YWluZXJzW3RdLmNvbnRhaW5lckNhY2hlLm92ZXImJih0aGlzLmNvbnRhaW5lcnNbdF0uX3RyaWdnZXIoIm91dCIsbnVsbCx0aGlzLl91aUhhc2godGhpcykpLHRoaXMuY29udGFpbmVyc1t0XS5jb250YWluZXJDYWNoZS5vdmVyPTApfXJldHVybiB0aGlzLnBsYWNlaG9sZGVyJiYodGhpcy5wbGFjZWhvbGRlclswXS5wYXJlbnROb2RlJiZ0aGlzLnBsYWNlaG9sZGVyWzBdLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQodGhpcy5wbGFjZWhvbGRlclswXSksdGhpcy5vcHRpb25zLmhlbHBlciE9Im9yaWdpbmFsIiYmdGhpcy5oZWxwZXImJnRoaXMuaGVscGVyWzBdLnBhcmVudE5vZGUmJnRoaXMuaGVscGVyLnJlbW92ZSgpLGUuZXh0ZW5kKHRoaXMse2hlbHBlcjpudWxsLGRyYWdnaW5nOiExLHJldmVydGluZzohMSxfbm9GaW5hbFNvcnQ6bnVsbH0pLHRoaXMuZG9tUG9zaXRpb24ucHJldj9lKHRoaXMuZG9tUG9zaXRpb24ucHJldikuYWZ0ZXIodGhpcy5jdXJyZW50SXRlbSk6ZSh0aGlzLmRvbVBvc2l0aW9uLnBhcmVudCkucHJlcGVuZCh0aGlzLmN1cnJlbnRJdGVtKSksdGhpc30sc2VyaWFsaXplOmZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMuX2dldEl0ZW1zQXNqUXVlcnkodCYmdC5jb25uZWN0ZWQpLHI9W107cmV0dXJuIHQ9dHx8e30sZShuKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIG49KGUodC5pdGVtfHx0aGlzKS5hdHRyKHQuYXR0cmlidXRlfHwiaWQiKXx8IiIpLm1hdGNoKHQuZXhwcmVzc2lvbnx8LyguKylbLT1fXSguKykvKTtuJiZyLnB1c2goKHQua2V5fHxuWzFdKyJbXSIpKyI9IisodC5rZXkmJnQuZXhwcmVzc2lvbj9uWzFdOm5bMl0pKX0pLCFyLmxlbmd0aCYmdC5rZXkmJnIucHVzaCh0LmtleSsiPSIpLHIuam9pbigiJiIpfSx0b0FycmF5OmZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMuX2dldEl0ZW1zQXNqUXVlcnkodCYmdC5jb25uZWN0ZWQpLHI9W107cmV0dXJuIHQ9dHx8e30sbi5lYWNoKGZ1bmN0aW9uKCl7ci5wdXNoKGUodC5pdGVtfHx0aGlzKS5hdHRyKHQuYXR0cmlidXRlfHwiaWQiKXx8IiIpfSkscn0sX2ludGVyc2VjdHNXaXRoOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMucG9zaXRpb25BYnMubGVmdCxuPXQrdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aCxyPXRoaXMucG9zaXRpb25BYnMudG9wLGk9cit0aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodCxzPWUubGVmdCxvPXMrZS53aWR0aCx1PWUudG9wLGE9dStlLmhlaWdodCxmPXRoaXMub2Zmc2V0LmNsaWNrLnRvcCxsPXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQsYz1yK2Y+dSYmcitmPGEmJnQrbD5zJiZ0K2w8bztyZXR1cm4gdGhpcy5vcHRpb25zLnRvbGVyYW5jZT09InBvaW50ZXIifHx0aGlzLm9wdGlvbnMuZm9yY2VQb2ludGVyRm9yQ29udGFpbmVyc3x8dGhpcy5vcHRpb25zLnRvbGVyYW5jZSE9InBvaW50ZXIiJiZ0aGlzLmhlbHBlclByb3BvcnRpb25zW3RoaXMuZmxvYXRpbmc/IndpZHRoIjoiaGVpZ2h0Il0+ZVt0aGlzLmZsb2F0aW5nPyJ3aWR0aCI6ImhlaWdodCJdP2M6czx0K3RoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgvMiYmbi10aGlzLmhlbHBlclByb3BvcnRpb25zLndpZHRoLzI8byYmdTxyK3RoaXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LzImJmktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQvMjxhfSxfaW50ZXJzZWN0c1dpdGhQb2ludGVyOmZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMub3B0aW9ucy5heGlzPT09IngifHxlLnVpLmlzT3ZlckF4aXModGhpcy5wb3NpdGlvbkFicy50b3ArdGhpcy5vZmZzZXQuY2xpY2sudG9wLHQudG9wLHQuaGVpZ2h0KSxyPXRoaXMub3B0aW9ucy5heGlzPT09InkifHxlLnVpLmlzT3ZlckF4aXModGhpcy5wb3NpdGlvbkFicy5sZWZ0K3RoaXMub2Zmc2V0LmNsaWNrLmxlZnQsdC5sZWZ0LHQud2lkdGgpLGk9biYmcixzPXRoaXMuX2dldERyYWdWZXJ0aWNhbERpcmVjdGlvbigpLG89dGhpcy5fZ2V0RHJhZ0hvcml6b250YWxEaXJlY3Rpb24oKTtyZXR1cm4gaT90aGlzLmZsb2F0aW5nP28mJm89PSJyaWdodCJ8fHM9PSJkb3duIj8yOjE6cyYmKHM9PSJkb3duIj8yOjEpOiExfSxfaW50ZXJzZWN0c1dpdGhTaWRlczpmdW5jdGlvbih0KXt2YXIgbj1lLnVpLmlzT3ZlckF4aXModGhpcy5wb3NpdGlvbkFicy50b3ArdGhpcy5vZmZzZXQuY2xpY2sudG9wLHQudG9wK3QuaGVpZ2h0LzIsdC5oZWlnaHQpLHI9ZS51aS5pc092ZXJBeGlzKHRoaXMucG9zaXRpb25BYnMubGVmdCt0aGlzLm9mZnNldC5jbGljay5sZWZ0LHQubGVmdCt0LndpZHRoLzIsdC53aWR0aCksaT10aGlzLl9nZXREcmFnVmVydGljYWxEaXJlY3Rpb24oKSxzPXRoaXMuX2dldERyYWdIb3Jpem9udGFsRGlyZWN0aW9uKCk7cmV0dXJuIHRoaXMuZmxvYXRpbmcmJnM/cz09InJpZ2h0IiYmcnx8cz09ImxlZnQiJiYhcjppJiYoaT09ImRvd24iJiZufHxpPT0idXAiJiYhbil9LF9nZXREcmFnVmVydGljYWxEaXJlY3Rpb246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnBvc2l0aW9uQWJzLnRvcC10aGlzLmxhc3RQb3NpdGlvbkFicy50b3A7cmV0dXJuIGUhPTAmJihlPjA/ImRvd24iOiJ1cCIpfSxfZ2V0RHJhZ0hvcml6b250YWxEaXJlY3Rpb246ZnVuY3Rpb24oKXt2YXIgZT10aGlzLnBvc2l0aW9uQWJzLmxlZnQtdGhpcy5sYXN0UG9zaXRpb25BYnMubGVmdDtyZXR1cm4gZSE9MCYmKGU+MD8icmlnaHQiOiJsZWZ0Iil9LHJlZnJlc2g6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX3JlZnJlc2hJdGVtcyhlKSx0aGlzLnJlZnJlc2hQb3NpdGlvbnMoKSx0aGlzfSxfY29ubmVjdFdpdGg6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9wdGlvbnM7cmV0dXJuIGUuY29ubmVjdFdpdGguY29uc3RydWN0b3I9PVN0cmluZz9bZS5jb25uZWN0V2l0aF06ZS5jb25uZWN0V2l0aH0sX2dldEl0ZW1zQXNqUXVlcnk6ZnVuY3Rpb24odCl7dmFyIG49W10scj1bXSxpPXRoaXMuX2Nvbm5lY3RXaXRoKCk7aWYoaSYmdClmb3IodmFyIHM9aS5sZW5ndGgtMTtzPj0wO3MtLSl7dmFyIG89ZShpW3NdKTtmb3IodmFyIHU9by5sZW5ndGgtMTt1Pj0wO3UtLSl7dmFyIGE9ZS5kYXRhKG9bdV0sdGhpcy53aWRnZXROYW1lKTthJiZhIT10aGlzJiYhYS5vcHRpb25zLmRpc2FibGVkJiZyLnB1c2goW2UuaXNGdW5jdGlvbihhLm9wdGlvbnMuaXRlbXMpP2Eub3B0aW9ucy5pdGVtcy5jYWxsKGEuZWxlbWVudCk6ZShhLm9wdGlvbnMuaXRlbXMsYS5lbGVtZW50KS5ub3QoIi51aS1zb3J0YWJsZS1oZWxwZXIiKS5ub3QoIi51aS1zb3J0YWJsZS1wbGFjZWhvbGRlciIpLGFdKX19ci5wdXNoKFtlLmlzRnVuY3Rpb24odGhpcy5vcHRpb25zLml0ZW1zKT90aGlzLm9wdGlvbnMuaXRlbXMuY2FsbCh0aGlzLmVsZW1lbnQsbnVsbCx7b3B0aW9uczp0aGlzLm9wdGlvbnMsaXRlbTp0aGlzLmN1cnJlbnRJdGVtfSk6ZSh0aGlzLm9wdGlvbnMuaXRlbXMsdGhpcy5lbGVtZW50KS5ub3QoIi51aS1zb3J0YWJsZS1oZWxwZXIiKS5ub3QoIi51aS1zb3J0YWJsZS1wbGFjZWhvbGRlciIpLHRoaXNdKTtmb3IodmFyIHM9ci5sZW5ndGgtMTtzPj0wO3MtLSlyW3NdWzBdLmVhY2goZnVuY3Rpb24oKXtuLnB1c2godGhpcyl9KTtyZXR1cm4gZShuKX0sX3JlbW92ZUN1cnJlbnRzRnJvbUl0ZW1zOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5jdXJyZW50SXRlbS5maW5kKCI6ZGF0YSgiK3RoaXMud2lkZ2V0TmFtZSsiLWl0ZW0pIik7Zm9yKHZhciB0PTA7dDx0aGlzLml0ZW1zLmxlbmd0aDt0KyspZm9yKHZhciBuPTA7bjxlLmxlbmd0aDtuKyspZVtuXT09dGhpcy5pdGVtc1t0XS5pdGVtWzBdJiZ0aGlzLml0ZW1zLnNwbGljZSh0LDEpfSxfcmVmcmVzaEl0ZW1zOmZ1bmN0aW9uKHQpe3RoaXMuaXRlbXM9W10sdGhpcy5jb250YWluZXJzPVt0aGlzXTt2YXIgbj10aGlzLml0ZW1zLHI9W1tlLmlzRnVuY3Rpb24odGhpcy5vcHRpb25zLml0ZW1zKT90aGlzLm9wdGlvbnMuaXRlbXMuY2FsbCh0aGlzLmVsZW1lbnRbMF0sdCx7aXRlbTp0aGlzLmN1cnJlbnRJdGVtfSk6ZSh0aGlzLm9wdGlvbnMuaXRlbXMsdGhpcy5lbGVtZW50KSx0aGlzXV0saT10aGlzLl9jb25uZWN0V2l0aCgpO2lmKGkmJnRoaXMucmVhZHkpZm9yKHZhciBzPWkubGVuZ3RoLTE7cz49MDtzLS0pe3ZhciBvPWUoaVtzXSk7Zm9yKHZhciB1PW8ubGVuZ3RoLTE7dT49MDt1LS0pe3ZhciBhPWUuZGF0YShvW3VdLHRoaXMud2lkZ2V0TmFtZSk7YSYmYSE9dGhpcyYmIWEub3B0aW9ucy5kaXNhYmxlZCYmKHIucHVzaChbZS5pc0Z1bmN0aW9uKGEub3B0aW9ucy5pdGVtcyk/YS5vcHRpb25zLml0ZW1zLmNhbGwoYS5lbGVtZW50WzBdLHQse2l0ZW06dGhpcy5jdXJyZW50SXRlbX0pOmUoYS5vcHRpb25zLml0ZW1zLGEuZWxlbWVudCksYV0pLHRoaXMuY29udGFpbmVycy5wdXNoKGEpKX19Zm9yKHZhciBzPXIubGVuZ3RoLTE7cz49MDtzLS0pe3ZhciBmPXJbc11bMV0sbD1yW3NdWzBdO2Zvcih2YXIgdT0wLGM9bC5sZW5ndGg7dTxjO3UrKyl7dmFyIGg9ZShsW3VdKTtoLmRhdGEodGhpcy53aWRnZXROYW1lKyItaXRlbSIsZiksbi5wdXNoKHtpdGVtOmgsaW5zdGFuY2U6Zix3aWR0aDowLGhlaWdodDowLGxlZnQ6MCx0b3A6MH0pfX19LHJlZnJlc2hQb3NpdGlvbnM6ZnVuY3Rpb24odCl7dGhpcy5vZmZzZXRQYXJlbnQmJnRoaXMuaGVscGVyJiYodGhpcy5vZmZzZXQucGFyZW50PXRoaXMuX2dldFBhcmVudE9mZnNldCgpKTtmb3IodmFyIG49dGhpcy5pdGVtcy5sZW5ndGgtMTtuPj0wO24tLSl7dmFyIHI9dGhpcy5pdGVtc1tuXTtpZihyLmluc3RhbmNlIT10aGlzLmN1cnJlbnRDb250YWluZXImJnRoaXMuY3VycmVudENvbnRhaW5lciYmci5pdGVtWzBdIT10aGlzLmN1cnJlbnRJdGVtWzBdKWNvbnRpbnVlO3ZhciBpPXRoaXMub3B0aW9ucy50b2xlcmFuY2VFbGVtZW50P2UodGhpcy5vcHRpb25zLnRvbGVyYW5jZUVsZW1lbnQsci5pdGVtKTpyLml0ZW07dHx8KHIud2lkdGg9aS5vdXRlcldpZHRoKCksci5oZWlnaHQ9aS5vdXRlckhlaWdodCgpKTt2YXIgcz1pLm9mZnNldCgpO3IubGVmdD1zLmxlZnQsci50b3A9cy50b3B9aWYodGhpcy5vcHRpb25zLmN1c3RvbSYmdGhpcy5vcHRpb25zLmN1c3RvbS5yZWZyZXNoQ29udGFpbmVycyl0aGlzLm9wdGlvbnMuY3VzdG9tLnJlZnJlc2hDb250YWluZXJzLmNhbGwodGhpcyk7ZWxzZSBmb3IodmFyIG49dGhpcy5jb250YWluZXJzLmxlbmd0aC0xO24+PTA7bi0tKXt2YXIgcz10aGlzLmNvbnRhaW5lcnNbbl0uZWxlbWVudC5vZmZzZXQoKTt0aGlzLmNvbnRhaW5lcnNbbl0uY29udGFpbmVyQ2FjaGUubGVmdD1zLmxlZnQsdGhpcy5jb250YWluZXJzW25dLmNvbnRhaW5lckNhY2hlLnRvcD1zLnRvcCx0aGlzLmNvbnRhaW5lcnNbbl0uY29udGFpbmVyQ2FjaGUud2lkdGg9dGhpcy5jb250YWluZXJzW25dLmVsZW1lbnQub3V0ZXJXaWR0aCgpLHRoaXMuY29udGFpbmVyc1tuXS5jb250YWluZXJDYWNoZS5oZWlnaHQ9dGhpcy5jb250YWluZXJzW25dLmVsZW1lbnQub3V0ZXJIZWlnaHQoKX1yZXR1cm4gdGhpc30sX2NyZWF0ZVBsYWNlaG9sZGVyOmZ1bmN0aW9uKHQpe3Q9dHx8dGhpczt2YXIgbj10Lm9wdGlvbnM7aWYoIW4ucGxhY2Vob2xkZXJ8fG4ucGxhY2Vob2xkZXIuY29uc3RydWN0b3I9PVN0cmluZyl7dmFyIHI9bi5wbGFjZWhvbGRlcjtuLnBsYWNlaG9sZGVyPXtlbGVtZW50OmZ1bmN0aW9uKCl7dmFyIG49ZShkb2N1bWVudC5jcmVhdGVFbGVtZW50KHQuY3VycmVudEl0ZW1bMF0ubm9kZU5hbWUpKS5hZGRDbGFzcyhyfHx0LmN1cnJlbnRJdGVtWzBdLmNsYXNzTmFtZSsiIHVpLXNvcnRhYmxlLXBsYWNlaG9sZGVyIikucmVtb3ZlQ2xhc3MoInVpLXNvcnRhYmxlLWhlbHBlciIpWzBdO3JldHVybiByfHwobi5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iKSxufSx1cGRhdGU6ZnVuY3Rpb24oZSxpKXtpZihyJiYhbi5mb3JjZVBsYWNlaG9sZGVyU2l6ZSlyZXR1cm47aS5oZWlnaHQoKXx8aS5oZWlnaHQodC5jdXJyZW50SXRlbS5pbm5lckhlaWdodCgpLXBhcnNlSW50KHQuY3VycmVudEl0ZW0uY3NzKCJwYWRkaW5nVG9wIil8fDAsMTApLXBhcnNlSW50KHQuY3VycmVudEl0ZW0uY3NzKCJwYWRkaW5nQm90dG9tIil8fDAsMTApKSxpLndpZHRoKCl8fGkud2lkdGgodC5jdXJyZW50SXRlbS5pbm5lcldpZHRoKCktcGFyc2VJbnQodC5jdXJyZW50SXRlbS5jc3MoInBhZGRpbmdMZWZ0Iil8fDAsMTApLXBhcnNlSW50KHQuY3VycmVudEl0ZW0uY3NzKCJwYWRkaW5nUmlnaHQiKXx8MCwxMCkpfX19dC5wbGFjZWhvbGRlcj1lKG4ucGxhY2Vob2xkZXIuZWxlbWVudC5jYWxsKHQuZWxlbWVudCx0LmN1cnJlbnRJdGVtKSksdC5jdXJyZW50SXRlbS5hZnRlcih0LnBsYWNlaG9sZGVyKSxuLnBsYWNlaG9sZGVyLnVwZGF0ZSh0LHQucGxhY2Vob2xkZXIpfSxfY29udGFjdENvbnRhaW5lcnM6ZnVuY3Rpb24odCl7dmFyIG49bnVsbCxyPW51bGw7Zm9yKHZhciBpPXRoaXMuY29udGFpbmVycy5sZW5ndGgtMTtpPj0wO2ktLSl7aWYoZS5jb250YWlucyh0aGlzLmN1cnJlbnRJdGVtWzBdLHRoaXMuY29udGFpbmVyc1tpXS5lbGVtZW50WzBdKSljb250aW51ZTtpZih0aGlzLl9pbnRlcnNlY3RzV2l0aCh0aGlzLmNvbnRhaW5lcnNbaV0uY29udGFpbmVyQ2FjaGUpKXtpZihuJiZlLmNvbnRhaW5zKHRoaXMuY29udGFpbmVyc1tpXS5lbGVtZW50WzBdLG4uZWxlbWVudFswXSkpY29udGludWU7bj10aGlzLmNvbnRhaW5lcnNbaV0scj1pfWVsc2UgdGhpcy5jb250YWluZXJzW2ldLmNvbnRhaW5lckNhY2hlLm92ZXImJih0aGlzLmNvbnRhaW5lcnNbaV0uX3RyaWdnZXIoIm91dCIsdCx0aGlzLl91aUhhc2godGhpcykpLHRoaXMuY29udGFpbmVyc1tpXS5jb250YWluZXJDYWNoZS5vdmVyPTApfWlmKCFuKXJldHVybjtpZih0aGlzLmNvbnRhaW5lcnMubGVuZ3RoPT09MSl0aGlzLmNvbnRhaW5lcnNbcl0uX3RyaWdnZXIoIm92ZXIiLHQsdGhpcy5fdWlIYXNoKHRoaXMpKSx0aGlzLmNvbnRhaW5lcnNbcl0uY29udGFpbmVyQ2FjaGUub3Zlcj0xO2Vsc2UgaWYodGhpcy5jdXJyZW50Q29udGFpbmVyIT10aGlzLmNvbnRhaW5lcnNbcl0pe3ZhciBzPTFlNCxvPW51bGwsdT10aGlzLnBvc2l0aW9uQWJzW3RoaXMuY29udGFpbmVyc1tyXS5mbG9hdGluZz8ibGVmdCI6InRvcCJdO2Zvcih2YXIgYT10aGlzLml0ZW1zLmxlbmd0aC0xO2E+PTA7YS0tKXtpZighZS5jb250YWlucyh0aGlzLmNvbnRhaW5lcnNbcl0uZWxlbWVudFswXSx0aGlzLml0ZW1zW2FdLml0ZW1bMF0pKWNvbnRpbnVlO3ZhciBmPXRoaXMuY29udGFpbmVyc1tyXS5mbG9hdGluZz90aGlzLml0ZW1zW2FdLml0ZW0ub2Zmc2V0KCkubGVmdDp0aGlzLml0ZW1zW2FdLml0ZW0ub2Zmc2V0KCkudG9wO01hdGguYWJzKGYtdSk8cyYmKHM9TWF0aC5hYnMoZi11KSxvPXRoaXMuaXRlbXNbYV0sdGhpcy5kaXJlY3Rpb249Zi11PjA/ImRvd24iOiJ1cCIpfWlmKCFvJiYhdGhpcy5vcHRpb25zLmRyb3BPbkVtcHR5KXJldHVybjt0aGlzLmN1cnJlbnRDb250YWluZXI9dGhpcy5jb250YWluZXJzW3JdLG8/dGhpcy5fcmVhcnJhbmdlKHQsbyxudWxsLCEwKTp0aGlzLl9yZWFycmFuZ2UodCxudWxsLHRoaXMuY29udGFpbmVyc1tyXS5lbGVtZW50LCEwKSx0aGlzLl90cmlnZ2VyKCJjaGFuZ2UiLHQsdGhpcy5fdWlIYXNoKCkpLHRoaXMuY29udGFpbmVyc1tyXS5fdHJpZ2dlcigiY2hhbmdlIix0LHRoaXMuX3VpSGFzaCh0aGlzKSksdGhpcy5vcHRpb25zLnBsYWNlaG9sZGVyLnVwZGF0ZSh0aGlzLmN1cnJlbnRDb250YWluZXIsdGhpcy5wbGFjZWhvbGRlciksdGhpcy5jb250YWluZXJzW3JdLl90cmlnZ2VyKCJvdmVyIix0LHRoaXMuX3VpSGFzaCh0aGlzKSksdGhpcy5jb250YWluZXJzW3JdLmNvbnRhaW5lckNhY2hlLm92ZXI9MX19LF9jcmVhdGVIZWxwZXI6ZnVuY3Rpb24odCl7dmFyIG49dGhpcy5vcHRpb25zLHI9ZS5pc0Z1bmN0aW9uKG4uaGVscGVyKT9lKG4uaGVscGVyLmFwcGx5KHRoaXMuZWxlbWVudFswXSxbdCx0aGlzLmN1cnJlbnRJdGVtXSkpOm4uaGVscGVyPT0iY2xvbmUiP3RoaXMuY3VycmVudEl0ZW0uY2xvbmUoKTp0aGlzLmN1cnJlbnRJdGVtO3JldHVybiByLnBhcmVudHMoImJvZHkiKS5sZW5ndGh8fGUobi5hcHBlbmRUbyE9InBhcmVudCI/bi5hcHBlbmRUbzp0aGlzLmN1cnJlbnRJdGVtWzBdLnBhcmVudE5vZGUpWzBdLmFwcGVuZENoaWxkKHJbMF0pLHJbMF09PXRoaXMuY3VycmVudEl0ZW1bMF0mJih0aGlzLl9zdG9yZWRDU1M9e3dpZHRoOnRoaXMuY3VycmVudEl0ZW1bMF0uc3R5bGUud2lkdGgsaGVpZ2h0OnRoaXMuY3VycmVudEl0ZW1bMF0uc3R5bGUuaGVpZ2h0LHBvc2l0aW9uOnRoaXMuY3VycmVudEl0ZW0uY3NzKCJwb3NpdGlvbiIpLHRvcDp0aGlzLmN1cnJlbnRJdGVtLmNzcygidG9wIiksbGVmdDp0aGlzLmN1cnJlbnRJdGVtLmNzcygibGVmdCIpfSksKHJbMF0uc3R5bGUud2lkdGg9PSIifHxuLmZvcmNlSGVscGVyU2l6ZSkmJnIud2lkdGgodGhpcy5jdXJyZW50SXRlbS53aWR0aCgpKSwoclswXS5zdHlsZS5oZWlnaHQ9PSIifHxuLmZvcmNlSGVscGVyU2l6ZSkmJnIuaGVpZ2h0KHRoaXMuY3VycmVudEl0ZW0uaGVpZ2h0KCkpLHJ9LF9hZGp1c3RPZmZzZXRGcm9tSGVscGVyOmZ1bmN0aW9uKHQpe3R5cGVvZiB0PT0ic3RyaW5nIiYmKHQ9dC5zcGxpdCgiICIpKSxlLmlzQXJyYXkodCkmJih0PXtsZWZ0Oit0WzBdLHRvcDordFsxXXx8MH0pLCJsZWZ0ImluIHQmJih0aGlzLm9mZnNldC5jbGljay5sZWZ0PXQubGVmdCt0aGlzLm1hcmdpbnMubGVmdCksInJpZ2h0ImluIHQmJih0aGlzLm9mZnNldC5jbGljay5sZWZ0PXRoaXMuaGVscGVyUHJvcG9ydGlvbnMud2lkdGgtdC5yaWdodCt0aGlzLm1hcmdpbnMubGVmdCksInRvcCJpbiB0JiYodGhpcy5vZmZzZXQuY2xpY2sudG9wPXQudG9wK3RoaXMubWFyZ2lucy50b3ApLCJib3R0b20iaW4gdCYmKHRoaXMub2Zmc2V0LmNsaWNrLnRvcD10aGlzLmhlbHBlclByb3BvcnRpb25zLmhlaWdodC10LmJvdHRvbSt0aGlzLm1hcmdpbnMudG9wKX0sX2dldFBhcmVudE9mZnNldDpmdW5jdGlvbigpe3RoaXMub2Zmc2V0UGFyZW50PXRoaXMuaGVscGVyLm9mZnNldFBhcmVudCgpO3ZhciB0PXRoaXMub2Zmc2V0UGFyZW50Lm9mZnNldCgpO3RoaXMuY3NzUG9zaXRpb249PSJhYnNvbHV0ZSImJnRoaXMuc2Nyb2xsUGFyZW50WzBdIT1kb2N1bWVudCYmZS5jb250YWlucyh0aGlzLnNjcm9sbFBhcmVudFswXSx0aGlzLm9mZnNldFBhcmVudFswXSkmJih0LmxlZnQrPXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbExlZnQoKSx0LnRvcCs9dGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsVG9wKCkpO2lmKHRoaXMub2Zmc2V0UGFyZW50WzBdPT1kb2N1bWVudC5ib2R5fHx0aGlzLm9mZnNldFBhcmVudFswXS50YWdOYW1lJiZ0aGlzLm9mZnNldFBhcmVudFswXS50YWdOYW1lLnRvTG93ZXJDYXNlKCk9PSJodG1sIiYmZS5icm93c2VyLm1zaWUpdD17dG9wOjAsbGVmdDowfTtyZXR1cm57dG9wOnQudG9wKyhwYXJzZUludCh0aGlzLm9mZnNldFBhcmVudC5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHwwKSxsZWZ0OnQubGVmdCsocGFyc2VJbnQodGhpcy5vZmZzZXRQYXJlbnQuY3NzKCJib3JkZXJMZWZ0V2lkdGgiKSwxMCl8fDApfX0sX2dldFJlbGF0aXZlT2Zmc2V0OmZ1bmN0aW9uKCl7aWYodGhpcy5jc3NQb3NpdGlvbj09InJlbGF0aXZlIil7dmFyIGU9dGhpcy5jdXJyZW50SXRlbS5wb3NpdGlvbigpO3JldHVybnt0b3A6ZS50b3AtKHBhcnNlSW50KHRoaXMuaGVscGVyLmNzcygidG9wIiksMTApfHwwKSt0aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxUb3AoKSxsZWZ0OmUubGVmdC0ocGFyc2VJbnQodGhpcy5oZWxwZXIuY3NzKCJsZWZ0IiksMTApfHwwKSt0aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxMZWZ0KCl9fXJldHVybnt0b3A6MCxsZWZ0OjB9fSxfY2FjaGVNYXJnaW5zOmZ1bmN0aW9uKCl7dGhpcy5tYXJnaW5zPXtsZWZ0OnBhcnNlSW50KHRoaXMuY3VycmVudEl0ZW0uY3NzKCJtYXJnaW5MZWZ0IiksMTApfHwwLHRvcDpwYXJzZUludCh0aGlzLmN1cnJlbnRJdGVtLmNzcygibWFyZ2luVG9wIiksMTApfHwwfX0sX2NhY2hlSGVscGVyUHJvcG9ydGlvbnM6ZnVuY3Rpb24oKXt0aGlzLmhlbHBlclByb3BvcnRpb25zPXt3aWR0aDp0aGlzLmhlbHBlci5vdXRlcldpZHRoKCksaGVpZ2h0OnRoaXMuaGVscGVyLm91dGVySGVpZ2h0KCl9fSxfc2V0Q29udGFpbm1lbnQ6ZnVuY3Rpb24oKXt2YXIgdD10aGlzLm9wdGlvbnM7dC5jb250YWlubWVudD09InBhcmVudCImJih0LmNvbnRhaW5tZW50PXRoaXMuaGVscGVyWzBdLnBhcmVudE5vZGUpO2lmKHQuY29udGFpbm1lbnQ9PSJkb2N1bWVudCJ8fHQuY29udGFpbm1lbnQ9PSJ3aW5kb3ciKXRoaXMuY29udGFpbm1lbnQ9WzAtdGhpcy5vZmZzZXQucmVsYXRpdmUubGVmdC10aGlzLm9mZnNldC5wYXJlbnQubGVmdCwwLXRoaXMub2Zmc2V0LnJlbGF0aXZlLnRvcC10aGlzLm9mZnNldC5wYXJlbnQudG9wLGUodC5jb250YWlubWVudD09ImRvY3VtZW50Ij9kb2N1bWVudDp3aW5kb3cpLndpZHRoKCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aC10aGlzLm1hcmdpbnMubGVmdCwoZSh0LmNvbnRhaW5tZW50PT0iZG9jdW1lbnQiP2RvY3VtZW50OndpbmRvdykuaGVpZ2h0KCl8fGRvY3VtZW50LmJvZHkucGFyZW50Tm9kZS5zY3JvbGxIZWlnaHQpLXRoaXMuaGVscGVyUHJvcG9ydGlvbnMuaGVpZ2h0LXRoaXMubWFyZ2lucy50b3BdO2lmKCEvXihkb2N1bWVudHx3aW5kb3d8cGFyZW50KSQvLnRlc3QodC5jb250YWlubWVudCkpe3ZhciBuPWUodC5jb250YWlubWVudClbMF0scj1lKHQuY29udGFpbm1lbnQpLm9mZnNldCgpLGk9ZShuKS5jc3MoIm92ZXJmbG93IikhPSJoaWRkZW4iO3RoaXMuY29udGFpbm1lbnQ9W3IubGVmdCsocGFyc2VJbnQoZShuKS5jc3MoImJvcmRlckxlZnRXaWR0aCIpLDEwKXx8MCkrKHBhcnNlSW50KGUobikuY3NzKCJwYWRkaW5nTGVmdCIpLDEwKXx8MCktdGhpcy5tYXJnaW5zLmxlZnQsci50b3ArKHBhcnNlSW50KGUobikuY3NzKCJib3JkZXJUb3BXaWR0aCIpLDEwKXx8MCkrKHBhcnNlSW50KGUobikuY3NzKCJwYWRkaW5nVG9wIiksMTApfHwwKS10aGlzLm1hcmdpbnMudG9wLHIubGVmdCsoaT9NYXRoLm1heChuLnNjcm9sbFdpZHRoLG4ub2Zmc2V0V2lkdGgpOm4ub2Zmc2V0V2lkdGgpLShwYXJzZUludChlKG4pLmNzcygiYm9yZGVyTGVmdFdpZHRoIiksMTApfHwwKS0ocGFyc2VJbnQoZShuKS5jc3MoInBhZGRpbmdSaWdodCIpLDEwKXx8MCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy53aWR0aC10aGlzLm1hcmdpbnMubGVmdCxyLnRvcCsoaT9NYXRoLm1heChuLnNjcm9sbEhlaWdodCxuLm9mZnNldEhlaWdodCk6bi5vZmZzZXRIZWlnaHQpLShwYXJzZUludChlKG4pLmNzcygiYm9yZGVyVG9wV2lkdGgiKSwxMCl8fDApLShwYXJzZUludChlKG4pLmNzcygicGFkZGluZ0JvdHRvbSIpLDEwKXx8MCktdGhpcy5oZWxwZXJQcm9wb3J0aW9ucy5oZWlnaHQtdGhpcy5tYXJnaW5zLnRvcF19fSxfY29udmVydFBvc2l0aW9uVG86ZnVuY3Rpb24odCxuKXtufHwobj10aGlzLnBvc2l0aW9uKTt2YXIgcj10PT0iYWJzb2x1dGUiPzE6LTEsaT10aGlzLm9wdGlvbnMscz10aGlzLmNzc1Bvc2l0aW9uIT0iYWJzb2x1dGUifHx0aGlzLnNjcm9sbFBhcmVudFswXSE9ZG9jdW1lbnQmJiEhZS5jb250YWlucyh0aGlzLnNjcm9sbFBhcmVudFswXSx0aGlzLm9mZnNldFBhcmVudFswXSk/dGhpcy5zY3JvbGxQYXJlbnQ6dGhpcy5vZmZzZXRQYXJlbnQsbz0vKGh0bWx8Ym9keSkvaS50ZXN0KHNbMF0udGFnTmFtZSk7cmV0dXJue3RvcDpuLnRvcCt0aGlzLm9mZnNldC5yZWxhdGl2ZS50b3Aqcit0aGlzLm9mZnNldC5wYXJlbnQudG9wKnItKHRoaXMuY3NzUG9zaXRpb249PSJmaXhlZCI/LXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbFRvcCgpOm8/MDpzLnNjcm9sbFRvcCgpKSpyLGxlZnQ6bi5sZWZ0K3RoaXMub2Zmc2V0LnJlbGF0aXZlLmxlZnQqcit0aGlzLm9mZnNldC5wYXJlbnQubGVmdCpyLSh0aGlzLmNzc1Bvc2l0aW9uPT0iZml4ZWQiPy10aGlzLnNjcm9sbFBhcmVudC5zY3JvbGxMZWZ0KCk6bz8wOnMuc2Nyb2xsTGVmdCgpKSpyfX0sX2dlbmVyYXRlUG9zaXRpb246ZnVuY3Rpb24odCl7dmFyIG49dGhpcy5vcHRpb25zLHI9dGhpcy5jc3NQb3NpdGlvbiE9ImFic29sdXRlInx8dGhpcy5zY3JvbGxQYXJlbnRbMF0hPWRvY3VtZW50JiYhIWUuY29udGFpbnModGhpcy5zY3JvbGxQYXJlbnRbMF0sdGhpcy5vZmZzZXRQYXJlbnRbMF0pP3RoaXMuc2Nyb2xsUGFyZW50OnRoaXMub2Zmc2V0UGFyZW50LGk9LyhodG1sfGJvZHkpL2kudGVzdChyWzBdLnRhZ05hbWUpO3RoaXMuY3NzUG9zaXRpb249PSJyZWxhdGl2ZSImJih0aGlzLnNjcm9sbFBhcmVudFswXT09ZG9jdW1lbnR8fHRoaXMuc2Nyb2xsUGFyZW50WzBdPT10aGlzLm9mZnNldFBhcmVudFswXSkmJih0aGlzLm9mZnNldC5yZWxhdGl2ZT10aGlzLl9nZXRSZWxhdGl2ZU9mZnNldCgpKTt2YXIgcz10LnBhZ2VYLG89dC5wYWdlWTtpZih0aGlzLm9yaWdpbmFsUG9zaXRpb24pe3RoaXMuY29udGFpbm1lbnQmJih0LnBhZ2VYLXRoaXMub2Zmc2V0LmNsaWNrLmxlZnQ8dGhpcy5jb250YWlubWVudFswXSYmKHM9dGhpcy5jb250YWlubWVudFswXSt0aGlzLm9mZnNldC5jbGljay5sZWZ0KSx0LnBhZ2VZLXRoaXMub2Zmc2V0LmNsaWNrLnRvcDx0aGlzLmNvbnRhaW5tZW50WzFdJiYobz10aGlzLmNvbnRhaW5tZW50WzFdK3RoaXMub2Zmc2V0LmNsaWNrLnRvcCksdC5wYWdlWC10aGlzLm9mZnNldC5jbGljay5sZWZ0PnRoaXMuY29udGFpbm1lbnRbMl0mJihzPXRoaXMuY29udGFpbm1lbnRbMl0rdGhpcy5vZmZzZXQuY2xpY2subGVmdCksdC5wYWdlWS10aGlzLm9mZnNldC5jbGljay50b3A+dGhpcy5jb250YWlubWVudFszXSYmKG89dGhpcy5jb250YWlubWVudFszXSt0aGlzLm9mZnNldC5jbGljay50b3ApKTtpZihuLmdyaWQpe3ZhciB1PXRoaXMub3JpZ2luYWxQYWdlWStNYXRoLnJvdW5kKChvLXRoaXMub3JpZ2luYWxQYWdlWSkvbi5ncmlkWzFdKSpuLmdyaWRbMV07bz10aGlzLmNvbnRhaW5tZW50P3UtdGhpcy5vZmZzZXQuY2xpY2sudG9wPHRoaXMuY29udGFpbm1lbnRbMV18fHUtdGhpcy5vZmZzZXQuY2xpY2sudG9wPnRoaXMuY29udGFpbm1lbnRbM10/dS10aGlzLm9mZnNldC5jbGljay50b3A8dGhpcy5jb250YWlubWVudFsxXT91K24uZ3JpZFsxXTp1LW4uZ3JpZFsxXTp1OnU7dmFyIGE9dGhpcy5vcmlnaW5hbFBhZ2VYK01hdGgucm91bmQoKHMtdGhpcy5vcmlnaW5hbFBhZ2VYKS9uLmdyaWRbMF0pKm4uZ3JpZFswXTtzPXRoaXMuY29udGFpbm1lbnQ/YS10aGlzLm9mZnNldC5jbGljay5sZWZ0PHRoaXMuY29udGFpbm1lbnRbMF18fGEtdGhpcy5vZmZzZXQuY2xpY2subGVmdD50aGlzLmNvbnRhaW5tZW50WzJdP2EtdGhpcy5vZmZzZXQuY2xpY2subGVmdDx0aGlzLmNvbnRhaW5tZW50WzBdP2Erbi5ncmlkWzBdOmEtbi5ncmlkWzBdOmE6YX19cmV0dXJue3RvcDpvLXRoaXMub2Zmc2V0LmNsaWNrLnRvcC10aGlzLm9mZnNldC5yZWxhdGl2ZS50b3AtdGhpcy5vZmZzZXQucGFyZW50LnRvcCsodGhpcy5jc3NQb3NpdGlvbj09ImZpeGVkIj8tdGhpcy5zY3JvbGxQYXJlbnQuc2Nyb2xsVG9wKCk6aT8wOnIuc2Nyb2xsVG9wKCkpLGxlZnQ6cy10aGlzLm9mZnNldC5jbGljay5sZWZ0LXRoaXMub2Zmc2V0LnJlbGF0aXZlLmxlZnQtdGhpcy5vZmZzZXQucGFyZW50LmxlZnQrKHRoaXMuY3NzUG9zaXRpb249PSJmaXhlZCI/LXRoaXMuc2Nyb2xsUGFyZW50LnNjcm9sbExlZnQoKTppPzA6ci5zY3JvbGxMZWZ0KCkpfX0sX3JlYXJyYW5nZTpmdW5jdGlvbihlLHQsbixyKXtuP25bMF0uYXBwZW5kQ2hpbGQodGhpcy5wbGFjZWhvbGRlclswXSk6dC5pdGVtWzBdLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKHRoaXMucGxhY2Vob2xkZXJbMF0sdGhpcy5kaXJlY3Rpb249PSJkb3duIj90Lml0ZW1bMF06dC5pdGVtWzBdLm5leHRTaWJsaW5nKSx0aGlzLmNvdW50ZXI9dGhpcy5jb3VudGVyPysrdGhpcy5jb3VudGVyOjE7dmFyIGk9dGhpcy5jb3VudGVyO3RoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7aT09dGhpcy5jb3VudGVyJiZ0aGlzLnJlZnJlc2hQb3NpdGlvbnMoIXIpfSl9LF9jbGVhcjpmdW5jdGlvbih0LG4pe3RoaXMucmV2ZXJ0aW5nPSExO3ZhciByPVtdOyF0aGlzLl9ub0ZpbmFsU29ydCYmdGhpcy5jdXJyZW50SXRlbS5wYXJlbnQoKS5sZW5ndGgmJnRoaXMucGxhY2Vob2xkZXIuYmVmb3JlKHRoaXMuY3VycmVudEl0ZW0pLHRoaXMuX25vRmluYWxTb3J0PW51bGw7aWYodGhpcy5oZWxwZXJbMF09PXRoaXMuY3VycmVudEl0ZW1bMF0pe2Zvcih2YXIgaSBpbiB0aGlzLl9zdG9yZWRDU1MpaWYodGhpcy5fc3RvcmVkQ1NTW2ldPT0iYXV0byJ8fHRoaXMuX3N0b3JlZENTU1tpXT09InN0YXRpYyIpdGhpcy5fc3RvcmVkQ1NTW2ldPSIiO3RoaXMuY3VycmVudEl0ZW0uY3NzKHRoaXMuX3N0b3JlZENTUykucmVtb3ZlQ2xhc3MoInVpLXNvcnRhYmxlLWhlbHBlciIpfWVsc2UgdGhpcy5jdXJyZW50SXRlbS5zaG93KCk7dGhpcy5mcm9tT3V0c2lkZSYmIW4mJnIucHVzaChmdW5jdGlvbihlKXt0aGlzLl90cmlnZ2VyKCJyZWNlaXZlIixlLHRoaXMuX3VpSGFzaCh0aGlzLmZyb21PdXRzaWRlKSl9KSwodGhpcy5mcm9tT3V0c2lkZXx8dGhpcy5kb21Qb3NpdGlvbi5wcmV2IT10aGlzLmN1cnJlbnRJdGVtLnByZXYoKS5ub3QoIi51aS1zb3J0YWJsZS1oZWxwZXIiKVswXXx8dGhpcy5kb21Qb3NpdGlvbi5wYXJlbnQhPXRoaXMuY3VycmVudEl0ZW0ucGFyZW50KClbMF0pJiYhbiYmci5wdXNoKGZ1bmN0aW9uKGUpe3RoaXMuX3RyaWdnZXIoInVwZGF0ZSIsZSx0aGlzLl91aUhhc2goKSl9KSx0aGlzIT09dGhpcy5jdXJyZW50Q29udGFpbmVyJiYobnx8KHIucHVzaChmdW5jdGlvbihlKXt0aGlzLl90cmlnZ2VyKCJyZW1vdmUiLGUsdGhpcy5fdWlIYXNoKCkpfSksci5wdXNoKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtlLl90cmlnZ2VyKCJyZWNlaXZlIix0LHRoaXMuX3VpSGFzaCh0aGlzKSl9fS5jYWxsKHRoaXMsdGhpcy5jdXJyZW50Q29udGFpbmVyKSksci5wdXNoKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtlLl90cmlnZ2VyKCJ1cGRhdGUiLHQsdGhpcy5fdWlIYXNoKHRoaXMpKX19LmNhbGwodGhpcyx0aGlzLmN1cnJlbnRDb250YWluZXIpKSkpO2Zvcih2YXIgaT10aGlzLmNvbnRhaW5lcnMubGVuZ3RoLTE7aT49MDtpLS0pbnx8ci5wdXNoKGZ1bmN0aW9uKGUpe3JldHVybiBmdW5jdGlvbih0KXtlLl90cmlnZ2VyKCJkZWFjdGl2YXRlIix0LHRoaXMuX3VpSGFzaCh0aGlzKSl9fS5jYWxsKHRoaXMsdGhpcy5jb250YWluZXJzW2ldKSksdGhpcy5jb250YWluZXJzW2ldLmNvbnRhaW5lckNhY2hlLm92ZXImJihyLnB1c2goZnVuY3Rpb24oZSl7cmV0dXJuIGZ1bmN0aW9uKHQpe2UuX3RyaWdnZXIoIm91dCIsdCx0aGlzLl91aUhhc2godGhpcykpfX0uY2FsbCh0aGlzLHRoaXMuY29udGFpbmVyc1tpXSkpLHRoaXMuY29udGFpbmVyc1tpXS5jb250YWluZXJDYWNoZS5vdmVyPTApO3RoaXMuX3N0b3JlZEN1cnNvciYmZSgiYm9keSIpLmNzcygiY3Vyc29yIix0aGlzLl9zdG9yZWRDdXJzb3IpLHRoaXMuX3N0b3JlZE9wYWNpdHkmJnRoaXMuaGVscGVyLmNzcygib3BhY2l0eSIsdGhpcy5fc3RvcmVkT3BhY2l0eSksdGhpcy5fc3RvcmVkWkluZGV4JiZ0aGlzLmhlbHBlci5jc3MoInpJbmRleCIsdGhpcy5fc3RvcmVkWkluZGV4PT0iYXV0byI/IiI6dGhpcy5fc3RvcmVkWkluZGV4KSx0aGlzLmRyYWdnaW5nPSExO2lmKHRoaXMuY2FuY2VsSGVscGVyUmVtb3ZhbCl7aWYoIW4pe3RoaXMuX3RyaWdnZXIoImJlZm9yZVN0b3AiLHQsdGhpcy5fdWlIYXNoKCkpO2Zvcih2YXIgaT0wO2k8ci5sZW5ndGg7aSsrKXJbaV0uY2FsbCh0aGlzLHQpO3RoaXMuX3RyaWdnZXIoInN0b3AiLHQsdGhpcy5fdWlIYXNoKCkpfXJldHVybiB0aGlzLmZyb21PdXRzaWRlPSExLCExfW58fHRoaXMuX3RyaWdnZXIoImJlZm9yZVN0b3AiLHQsdGhpcy5fdWlIYXNoKCkpLHRoaXMucGxhY2Vob2xkZXJbMF0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZCh0aGlzLnBsYWNlaG9sZGVyWzBdKSx0aGlzLmhlbHBlclswXSE9dGhpcy5jdXJyZW50SXRlbVswXSYmdGhpcy5oZWxwZXIucmVtb3ZlKCksdGhpcy5oZWxwZXI9bnVsbDtpZighbil7Zm9yKHZhciBpPTA7aTxyLmxlbmd0aDtpKyspcltpXS5jYWxsKHRoaXMsdCk7dGhpcy5fdHJpZ2dlcigic3RvcCIsdCx0aGlzLl91aUhhc2goKSl9cmV0dXJuIHRoaXMuZnJvbU91dHNpZGU9ITEsITB9LF90cmlnZ2VyOmZ1bmN0aW9uKCl7ZS5XaWRnZXQucHJvdG90eXBlLl90cmlnZ2VyLmFwcGx5KHRoaXMsYXJndW1lbnRzKT09PSExJiZ0aGlzLmNhbmNlbCgpfSxfdWlIYXNoOmZ1bmN0aW9uKHQpe3ZhciBuPXR8fHRoaXM7cmV0dXJue2hlbHBlcjpuLmhlbHBlcixwbGFjZWhvbGRlcjpuLnBsYWNlaG9sZGVyfHxlKFtdKSxwb3NpdGlvbjpuLnBvc2l0aW9uLG9yaWdpbmFsUG9zaXRpb246bi5vcmlnaW5hbFBvc2l0aW9uLG9mZnNldDpuLnBvc2l0aW9uQWJzLGl0ZW06bi5jdXJyZW50SXRlbSxzZW5kZXI6dD90LmVsZW1lbnQ6bnVsbH19fSl9KShqUXVlcnkpOyhmdW5jdGlvbihlLHQpe3ZhciBuPTAscj17fSxpPXt9O3IuaGVpZ2h0PXIucGFkZGluZ1RvcD1yLnBhZGRpbmdCb3R0b209ci5ib3JkZXJUb3BXaWR0aD1yLmJvcmRlckJvdHRvbVdpZHRoPSJoaWRlIixpLmhlaWdodD1pLnBhZGRpbmdUb3A9aS5wYWRkaW5nQm90dG9tPWkuYm9yZGVyVG9wV2lkdGg9aS5ib3JkZXJCb3R0b21XaWR0aD0ic2hvdyIsZS53aWRnZXQoInVpLmFjY29yZGlvbiIse3ZlcnNpb246IjEuOS4wIixvcHRpb25zOnthY3RpdmU6MCxhbmltYXRlOnt9LGNvbGxhcHNpYmxlOiExLGV2ZW50OiJjbGljayIsaGVhZGVyOiI+IGxpID4gOmZpcnN0LWNoaWxkLD4gOm5vdChsaSk6ZXZlbiIsaGVpZ2h0U3R5bGU6ImF1dG8iLGljb25zOnthY3RpdmVIZWFkZXI6InVpLWljb24tdHJpYW5nbGUtMS1zIixoZWFkZXI6InVpLWljb24tdHJpYW5nbGUtMS1lIn0sYWN0aXZhdGU6bnVsbCxiZWZvcmVBY3RpdmF0ZTpudWxsfSxfY3JlYXRlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5hY2NvcmRpb25JZD0idWktYWNjb3JkaW9uLSIrKHRoaXMuZWxlbWVudC5hdHRyKCJpZCIpfHwrK24pLHI9dGhpcy5vcHRpb25zO3RoaXMucHJldlNob3c9dGhpcy5wcmV2SGlkZT1lKCksdGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS1hY2NvcmRpb24gdWktd2lkZ2V0IHVpLWhlbHBlci1yZXNldCIpLHRoaXMuaGVhZGVycz10aGlzLmVsZW1lbnQuZmluZChyLmhlYWRlcikuYWRkQ2xhc3MoInVpLWFjY29yZGlvbi1oZWFkZXIgdWktaGVscGVyLXJlc2V0IHVpLXN0YXRlLWRlZmF1bHQgdWktY29ybmVyLWFsbCIpLHRoaXMuX2hvdmVyYWJsZSh0aGlzLmhlYWRlcnMpLHRoaXMuX2ZvY3VzYWJsZSh0aGlzLmhlYWRlcnMpLHRoaXMuaGVhZGVycy5uZXh0KCkuYWRkQ2xhc3MoInVpLWFjY29yZGlvbi1jb250ZW50IHVpLWhlbHBlci1yZXNldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYm90dG9tIikuaGlkZSgpLCFyLmNvbGxhcHNpYmxlJiZyLmFjdGl2ZT09PSExJiYoci5hY3RpdmU9MCksci5hY3RpdmU8MCYmKHIuYWN0aXZlKz10aGlzLmhlYWRlcnMubGVuZ3RoKSx0aGlzLmFjdGl2ZT10aGlzLl9maW5kQWN0aXZlKHIuYWN0aXZlKS5hZGRDbGFzcygidWktYWNjb3JkaW9uLWhlYWRlci1hY3RpdmUgdWktc3RhdGUtYWN0aXZlIikudG9nZ2xlQ2xhc3MoInVpLWNvcm5lci1hbGwgdWktY29ybmVyLXRvcCIpLHRoaXMuYWN0aXZlLm5leHQoKS5hZGRDbGFzcygidWktYWNjb3JkaW9uLWNvbnRlbnQtYWN0aXZlIikuc2hvdygpLHRoaXMuX2NyZWF0ZUljb25zKCksdGhpcy5vcmlnaW5hbEhlaWdodD10aGlzLmVsZW1lbnRbMF0uc3R5bGUuaGVpZ2h0LHRoaXMucmVmcmVzaCgpLHRoaXMuZWxlbWVudC5hdHRyKCJyb2xlIiwidGFibGlzdCIpLHRoaXMuaGVhZGVycy5hdHRyKCJyb2xlIiwidGFiIikuZWFjaChmdW5jdGlvbihuKXt2YXIgcj1lKHRoaXMpLGk9ci5hdHRyKCJpZCIpLHM9ci5uZXh0KCksbz1zLmF0dHIoImlkIik7aXx8KGk9dCsiLWhlYWRlci0iK24sci5hdHRyKCJpZCIsaSkpLG98fChvPXQrIi1wYW5lbC0iK24scy5hdHRyKCJpZCIsbykpLHIuYXR0cigiYXJpYS1jb250cm9scyIsbykscy5hdHRyKCJhcmlhLWxhYmVsbGVkYnkiLGkpfSkubmV4dCgpLmF0dHIoInJvbGUiLCJ0YWJwYW5lbCIpLHRoaXMuaGVhZGVycy5ub3QodGhpcy5hY3RpdmUpLmF0dHIoeyJhcmlhLXNlbGVjdGVkIjoiZmFsc2UiLHRhYkluZGV4Oi0xfSkubmV4dCgpLmF0dHIoeyJhcmlhLWV4cGFuZGVkIjoiZmFsc2UiLCJhcmlhLWhpZGRlbiI6InRydWUifSkuaGlkZSgpLHRoaXMuYWN0aXZlLmxlbmd0aD90aGlzLmFjdGl2ZS5hdHRyKHsiYXJpYS1zZWxlY3RlZCI6InRydWUiLHRhYkluZGV4OjB9KS5uZXh0KCkuYXR0cih7ImFyaWEtZXhwYW5kZWQiOiJ0cnVlIiwiYXJpYS1oaWRkZW4iOiJmYWxzZSJ9KTp0aGlzLmhlYWRlcnMuZXEoMCkuYXR0cigidGFiSW5kZXgiLDApLHRoaXMuX29uKHRoaXMuaGVhZGVycyx7a2V5ZG93bjoiX2tleWRvd24ifSksdGhpcy5fb24odGhpcy5oZWFkZXJzLm5leHQoKSx7a2V5ZG93bjoiX3BhbmVsS2V5RG93biJ9KSx0aGlzLl9zZXR1cEV2ZW50cyhyLmV2ZW50KX0sX2dldENyZWF0ZUV2ZW50RGF0YTpmdW5jdGlvbigpe3JldHVybntoZWFkZXI6dGhpcy5hY3RpdmUsY29udGVudDp0aGlzLmFjdGl2ZS5sZW5ndGg/dGhpcy5hY3RpdmUubmV4dCgpOmUoKX19LF9jcmVhdGVJY29uczpmdW5jdGlvbigpe3ZhciB0PXRoaXMub3B0aW9ucy5pY29uczt0JiYoZSgiPHNwYW4+IikuYWRkQ2xhc3MoInVpLWFjY29yZGlvbi1oZWFkZXItaWNvbiB1aS1pY29uICIrdC5oZWFkZXIpLnByZXBlbmRUbyh0aGlzLmhlYWRlcnMpLHRoaXMuYWN0aXZlLmNoaWxkcmVuKCIudWktYWNjb3JkaW9uLWhlYWRlci1pY29uIikucmVtb3ZlQ2xhc3ModC5oZWFkZXIpLmFkZENsYXNzKHQuYWN0aXZlSGVhZGVyKSx0aGlzLmhlYWRlcnMuYWRkQ2xhc3MoInVpLWFjY29yZGlvbi1pY29ucyIpKX0sX2Rlc3Ryb3lJY29uczpmdW5jdGlvbigpe3RoaXMuaGVhZGVycy5yZW1vdmVDbGFzcygidWktYWNjb3JkaW9uLWljb25zIikuY2hpbGRyZW4oIi51aS1hY2NvcmRpb24taGVhZGVyLWljb24iKS5yZW1vdmUoKX0sX2Rlc3Ryb3k6ZnVuY3Rpb24oKXt2YXIgZTt0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLWFjY29yZGlvbiB1aS13aWRnZXQgdWktaGVscGVyLXJlc2V0IikucmVtb3ZlQXR0cigicm9sZSIpLHRoaXMuaGVhZGVycy5yZW1vdmVDbGFzcygidWktYWNjb3JkaW9uLWhlYWRlciB1aS1hY2NvcmRpb24taGVhZGVyLWFjdGl2ZSB1aS1oZWxwZXItcmVzZXQgdWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItYWxsIHVpLXN0YXRlLWFjdGl2ZSB1aS1zdGF0ZS1kaXNhYmxlZCB1aS1jb3JuZXItdG9wIikucmVtb3ZlQXR0cigicm9sZSIpLnJlbW92ZUF0dHIoImFyaWEtc2VsZWN0ZWQiKS5yZW1vdmVBdHRyKCJhcmlhLWNvbnRyb2xzIikucmVtb3ZlQXR0cigidGFiSW5kZXgiKS5lYWNoKGZ1bmN0aW9uKCl7L151aS1hY2NvcmRpb24vLnRlc3QodGhpcy5pZCkmJnRoaXMucmVtb3ZlQXR0cmlidXRlKCJpZCIpfSksdGhpcy5fZGVzdHJveUljb25zKCksZT10aGlzLmhlYWRlcnMubmV4dCgpLmNzcygiZGlzcGxheSIsIiIpLnJlbW92ZUF0dHIoInJvbGUiKS5yZW1vdmVBdHRyKCJhcmlhLWV4cGFuZGVkIikucmVtb3ZlQXR0cigiYXJpYS1oaWRkZW4iKS5yZW1vdmVBdHRyKCJhcmlhLWxhYmVsbGVkYnkiKS5yZW1vdmVDbGFzcygidWktaGVscGVyLXJlc2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1ib3R0b20gdWktYWNjb3JkaW9uLWNvbnRlbnQgdWktYWNjb3JkaW9uLWNvbnRlbnQtYWN0aXZlIHVpLXN0YXRlLWRpc2FibGVkIikuZWFjaChmdW5jdGlvbigpey9edWktYWNjb3JkaW9uLy50ZXN0KHRoaXMuaWQpJiZ0aGlzLnJlbW92ZUF0dHJpYnV0ZSgiaWQiKX0pLHRoaXMub3B0aW9ucy5oZWlnaHRTdHlsZSE9PSJjb250ZW50IiYmKHRoaXMuZWxlbWVudC5jc3MoImhlaWdodCIsdGhpcy5vcmlnaW5hbEhlaWdodCksZS5jc3MoImhlaWdodCIsIiIpKX0sX3NldE9wdGlvbjpmdW5jdGlvbihlLHQpe2lmKGU9PT0iYWN0aXZlIil7dGhpcy5fYWN0aXZhdGUodCk7cmV0dXJufWU9PT0iZXZlbnQiJiYodGhpcy5vcHRpb25zLmV2ZW50JiZ0aGlzLl9vZmYodGhpcy5oZWFkZXJzLHRoaXMub3B0aW9ucy5ldmVudCksdGhpcy5fc2V0dXBFdmVudHModCkpLHRoaXMuX3N1cGVyKGUsdCksZT09PSJjb2xsYXBzaWJsZSImJiF0JiZ0aGlzLm9wdGlvbnMuYWN0aXZlPT09ITEmJnRoaXMuX2FjdGl2YXRlKDApLGU9PT0iaWNvbnMiJiYodGhpcy5fZGVzdHJveUljb25zKCksdCYmdGhpcy5fY3JlYXRlSWNvbnMoKSksZT09PSJkaXNhYmxlZCImJnRoaXMuaGVhZGVycy5hZGQodGhpcy5oZWFkZXJzLm5leHQoKSkudG9nZ2xlQ2xhc3MoInVpLXN0YXRlLWRpc2FibGVkIiwhIXQpfSxfa2V5ZG93bjpmdW5jdGlvbih0KXtpZih0LmFsdEtleXx8dC5jdHJsS2V5KXJldHVybjt2YXIgbj1lLnVpLmtleUNvZGUscj10aGlzLmhlYWRlcnMubGVuZ3RoLGk9dGhpcy5oZWFkZXJzLmluZGV4KHQudGFyZ2V0KSxzPSExO3N3aXRjaCh0LmtleUNvZGUpe2Nhc2Ugbi5SSUdIVDpjYXNlIG4uRE9XTjpzPXRoaXMuaGVhZGVyc1soaSsxKSVyXTticmVhaztjYXNlIG4uTEVGVDpjYXNlIG4uVVA6cz10aGlzLmhlYWRlcnNbKGktMStyKSVyXTticmVhaztjYXNlIG4uU1BBQ0U6Y2FzZSBuLkVOVEVSOnRoaXMuX2V2ZW50SGFuZGxlcih0KTticmVhaztjYXNlIG4uSE9NRTpzPXRoaXMuaGVhZGVyc1swXTticmVhaztjYXNlIG4uRU5EOnM9dGhpcy5oZWFkZXJzW3ItMV19cyYmKGUodC50YXJnZXQpLmF0dHIoInRhYkluZGV4IiwtMSksZShzKS5hdHRyKCJ0YWJJbmRleCIsMCkscy5mb2N1cygpLHQucHJldmVudERlZmF1bHQoKSl9LF9wYW5lbEtleURvd246ZnVuY3Rpb24odCl7dC5rZXlDb2RlPT09ZS51aS5rZXlDb2RlLlVQJiZ0LmN0cmxLZXkmJmUodC5jdXJyZW50VGFyZ2V0KS5wcmV2KCkuZm9jdXMoKX0scmVmcmVzaDpmdW5jdGlvbigpe3ZhciB0LG4scj10aGlzLm9wdGlvbnMuaGVpZ2h0U3R5bGUsaT10aGlzLmVsZW1lbnQucGFyZW50KCk7dGhpcy5lbGVtZW50LmNzcygiaGVpZ2h0Iix0aGlzLm9yaWdpbmFsSGVpZ2h0KSxyPT09ImZpbGwiPyhlLnN1cHBvcnQubWluSGVpZ2h0fHwobj1pLmNzcygib3ZlcmZsb3ciKSxpLmNzcygib3ZlcmZsb3ciLCJoaWRkZW4iKSksdD1pLmhlaWdodCgpLHRoaXMuZWxlbWVudC5zaWJsaW5ncygiOnZpc2libGUiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIG49ZSh0aGlzKSxyPW4uY3NzKCJwb3NpdGlvbiIpO2lmKHI9PT0iYWJzb2x1dGUifHxyPT09ImZpeGVkIilyZXR1cm47dC09bi5vdXRlckhlaWdodCghMCl9KSxuJiZpLmNzcygib3ZlcmZsb3ciLG4pLHRoaXMuaGVhZGVycy5lYWNoKGZ1bmN0aW9uKCl7dC09ZSh0aGlzKS5vdXRlckhlaWdodCghMCl9KSx0aGlzLmhlYWRlcnMubmV4dCgpLmVhY2goZnVuY3Rpb24oKXtlKHRoaXMpLmhlaWdodChNYXRoLm1heCgwLHQtZSh0aGlzKS5pbm5lckhlaWdodCgpK2UodGhpcykuaGVpZ2h0KCkpKX0pLmNzcygib3ZlcmZsb3ciLCJhdXRvIikpOnI9PT0iYXV0byImJih0PTAsdGhpcy5oZWFkZXJzLm5leHQoKS5lYWNoKGZ1bmN0aW9uKCl7dD1NYXRoLm1heCh0LGUodGhpcykuaGVpZ2h0KCIiKS5oZWlnaHQoKSl9KS5oZWlnaHQodCkpLHIhPT0iY29udGVudCImJnRoaXMuZWxlbWVudC5oZWlnaHQodGhpcy5lbGVtZW50LmhlaWdodCgpKX0sX2FjdGl2YXRlOmZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMuX2ZpbmRBY3RpdmUodClbMF07aWYobj09PXRoaXMuYWN0aXZlWzBdKXJldHVybjtuPW58fHRoaXMuYWN0aXZlWzBdLHRoaXMuX2V2ZW50SGFuZGxlcih7dGFyZ2V0Om4sY3VycmVudFRhcmdldDpuLHByZXZlbnREZWZhdWx0OmUubm9vcH0pfSxfZmluZEFjdGl2ZTpmdW5jdGlvbih0KXtyZXR1cm4gdHlwZW9mIHQ9PSJudW1iZXIiP3RoaXMuaGVhZGVycy5lcSh0KTplKCl9LF9zZXR1cEV2ZW50czpmdW5jdGlvbih0KXt2YXIgbj17fTtpZighdClyZXR1cm47ZS5lYWNoKHQuc3BsaXQoIiAiKSxmdW5jdGlvbihlLHQpe25bdF09Il9ldmVudEhhbmRsZXIifSksdGhpcy5fb24odGhpcy5oZWFkZXJzLG4pfSxfZXZlbnRIYW5kbGVyOmZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMub3B0aW9ucyxyPXRoaXMuYWN0aXZlLGk9ZSh0LmN1cnJlbnRUYXJnZXQpLHM9aVswXT09PXJbMF0sbz1zJiZuLmNvbGxhcHNpYmxlLHU9bz9lKCk6aS5uZXh0KCksYT1yLm5leHQoKSxmPXtvbGRIZWFkZXI6cixvbGRQYW5lbDphLG5ld0hlYWRlcjpvP2UoKTppLG5ld1BhbmVsOnV9O3QucHJldmVudERlZmF1bHQoKTtpZihzJiYhbi5jb2xsYXBzaWJsZXx8dGhpcy5fdHJpZ2dlcigiYmVmb3JlQWN0aXZhdGUiLHQsZik9PT0hMSlyZXR1cm47bi5hY3RpdmU9bz8hMTp0aGlzLmhlYWRlcnMuaW5kZXgoaSksdGhpcy5hY3RpdmU9cz9lKCk6aSx0aGlzLl90b2dnbGUoZiksci5yZW1vdmVDbGFzcygidWktYWNjb3JkaW9uLWhlYWRlci1hY3RpdmUgdWktc3RhdGUtYWN0aXZlIiksbi5pY29ucyYmci5jaGlsZHJlbigiLnVpLWFjY29yZGlvbi1oZWFkZXItaWNvbiIpLnJlbW92ZUNsYXNzKG4uaWNvbnMuYWN0aXZlSGVhZGVyKS5hZGRDbGFzcyhuLmljb25zLmhlYWRlciksc3x8KGkucmVtb3ZlQ2xhc3MoInVpLWNvcm5lci1hbGwiKS5hZGRDbGFzcygidWktYWNjb3JkaW9uLWhlYWRlci1hY3RpdmUgdWktc3RhdGUtYWN0aXZlIHVpLWNvcm5lci10b3AiKSxuLmljb25zJiZpLmNoaWxkcmVuKCIudWktYWNjb3JkaW9uLWhlYWRlci1pY29uIikucmVtb3ZlQ2xhc3Mobi5pY29ucy5oZWFkZXIpLmFkZENsYXNzKG4uaWNvbnMuYWN0aXZlSGVhZGVyKSxpLm5leHQoKS5hZGRDbGFzcygidWktYWNjb3JkaW9uLWNvbnRlbnQtYWN0aXZlIikpfSxfdG9nZ2xlOmZ1bmN0aW9uKHQpe3ZhciBuPXQubmV3UGFuZWwscj10aGlzLnByZXZTaG93Lmxlbmd0aD90aGlzLnByZXZTaG93OnQub2xkUGFuZWw7dGhpcy5wcmV2U2hvdy5hZGQodGhpcy5wcmV2SGlkZSkuc3RvcCghMCwhMCksdGhpcy5wcmV2U2hvdz1uLHRoaXMucHJldkhpZGU9cix0aGlzLm9wdGlvbnMuYW5pbWF0ZT90aGlzLl9hbmltYXRlKG4scix0KTooci5oaWRlKCksbi5zaG93KCksdGhpcy5fdG9nZ2xlQ29tcGxldGUodCkpLHIuYXR0cih7ImFyaWEtZXhwYW5kZWQiOiJmYWxzZSIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9KSxyLnByZXYoKS5hdHRyKCJhcmlhLXNlbGVjdGVkIiwiZmFsc2UiKSxuLmxlbmd0aCYmci5sZW5ndGg/ci5wcmV2KCkuYXR0cigidGFiSW5kZXgiLC0xKTpuLmxlbmd0aCYmdGhpcy5oZWFkZXJzLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiBlKHRoaXMpLmF0dHIoInRhYkluZGV4Iik9PT0wfSkuYXR0cigidGFiSW5kZXgiLC0xKSxuLmF0dHIoeyJhcmlhLWV4cGFuZGVkIjoidHJ1ZSIsImFyaWEtaGlkZGVuIjoiZmFsc2UifSkucHJldigpLmF0dHIoeyJhcmlhLXNlbGVjdGVkIjoidHJ1ZSIsdGFiSW5kZXg6MH0pfSxfYW5pbWF0ZTpmdW5jdGlvbihlLHQsbil7dmFyIHMsbyx1LGE9dGhpcyxmPTAsbD1lLmxlbmd0aCYmKCF0Lmxlbmd0aHx8ZS5pbmRleCgpPHQuaW5kZXgoKSksYz10aGlzLm9wdGlvbnMuYW5pbWF0ZXx8e30saD1sJiZjLmRvd258fGMscD1mdW5jdGlvbigpe2EuX3RvZ2dsZUNvbXBsZXRlKG4pfTt0eXBlb2YgaD09Im51bWJlciImJih1PWgpLHR5cGVvZiBoPT0ic3RyaW5nIiYmKG89aCksbz1vfHxoLmVhc2luZ3x8Yy5lYXNpbmcsdT11fHxoLmR1cmF0aW9ufHxjLmR1cmF0aW9uO2lmKCF0Lmxlbmd0aClyZXR1cm4gZS5hbmltYXRlKGksdSxvLHApO2lmKCFlLmxlbmd0aClyZXR1cm4gdC5hbmltYXRlKHIsdSxvLHApO3M9ZS5zaG93KCkub3V0ZXJIZWlnaHQoKSx0LmFuaW1hdGUocix7ZHVyYXRpb246dSxlYXNpbmc6byxzdGVwOmZ1bmN0aW9uKGUsdCl7dC5ub3c9TWF0aC5yb3VuZChlKX19KSxlLmhpZGUoKS5hbmltYXRlKGkse2R1cmF0aW9uOnUsZWFzaW5nOm8sY29tcGxldGU6cCxzdGVwOmZ1bmN0aW9uKGUsbil7bi5ub3c9TWF0aC5yb3VuZChlKSxuLnByb3AhPT0iaGVpZ2h0Ij9mKz1uLm5vdzphLm9wdGlvbnMuaGVpZ2h0U3R5bGUhPT0iY29udGVudCImJihuLm5vdz1NYXRoLnJvdW5kKHMtdC5vdXRlckhlaWdodCgpLWYpLGY9MCl9fSl9LF90b2dnbGVDb21wbGV0ZTpmdW5jdGlvbihlKXt2YXIgdD1lLm9sZFBhbmVsO3QucmVtb3ZlQ2xhc3MoInVpLWFjY29yZGlvbi1jb250ZW50LWFjdGl2ZSIpLnByZXYoKS5yZW1vdmVDbGFzcygidWktY29ybmVyLXRvcCIpLmFkZENsYXNzKCJ1aS1jb3JuZXItYWxsIiksdC5sZW5ndGgmJih0LnBhcmVudCgpWzBdLmNsYXNzTmFtZT10LnBhcmVudCgpWzBdLmNsYXNzTmFtZSksdGhpcy5fdHJpZ2dlcigiYWN0aXZhdGUiLG51bGwsZSl9fSksZS51aUJhY2tDb21wYXQhPT0hMSYmKGZ1bmN0aW9uKGUsdCl7ZS5leHRlbmQodC5vcHRpb25zLHtuYXZpZ2F0aW9uOiExLG5hdmlnYXRpb25GaWx0ZXI6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5ocmVmLnRvTG93ZXJDYXNlKCk9PT1sb2NhdGlvbi5ocmVmLnRvTG93ZXJDYXNlKCl9fSk7dmFyIG49dC5fY3JlYXRlO3QuX2NyZWF0ZT1mdW5jdGlvbigpe2lmKHRoaXMub3B0aW9ucy5uYXZpZ2F0aW9uKXt2YXIgdD10aGlzLHI9dGhpcy5lbGVtZW50LmZpbmQodGhpcy5vcHRpb25zLmhlYWRlciksaT1yLm5leHQoKSxzPXIuYWRkKGkpLmZpbmQoImEiKS5maWx0ZXIodGhpcy5vcHRpb25zLm5hdmlnYXRpb25GaWx0ZXIpWzBdO3MmJnIuYWRkKGkpLmVhY2goZnVuY3Rpb24obil7aWYoZS5jb250YWlucyh0aGlzLHMpKXJldHVybiB0Lm9wdGlvbnMuYWN0aXZlPU1hdGguZmxvb3Iobi8yKSwhMX0pfW4uY2FsbCh0aGlzKX19KGpRdWVyeSxqUXVlcnkudWkuYWNjb3JkaW9uLnByb3RvdHlwZSksZnVuY3Rpb24oZSx0KXtlLmV4dGVuZCh0Lm9wdGlvbnMse2hlaWdodFN0eWxlOm51bGwsYXV0b0hlaWdodDohMCxjbGVhclN0eWxlOiExLGZpbGxTcGFjZTohMX0pO3ZhciBuPXQuX2NyZWF0ZSxyPXQuX3NldE9wdGlvbjtlLmV4dGVuZCh0LHtfY3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLmhlaWdodFN0eWxlPXRoaXMub3B0aW9ucy5oZWlnaHRTdHlsZXx8dGhpcy5fbWVyZ2VIZWlnaHRTdHlsZSgpLG4uY2FsbCh0aGlzKX0sX3NldE9wdGlvbjpmdW5jdGlvbihlLHQpe2lmKGU9PT0iYXV0b0hlaWdodCJ8fGU9PT0iY2xlYXJTdHlsZSJ8fGU9PT0iZmlsbFNwYWNlIil0aGlzLm9wdGlvbnMuaGVpZ2h0U3R5bGU9dGhpcy5fbWVyZ2VIZWlnaHRTdHlsZSgpO3IuYXBwbHkodGhpcyxhcmd1bWVudHMpfSxfbWVyZ2VIZWlnaHRTdHlsZTpmdW5jdGlvbigpe3ZhciBlPXRoaXMub3B0aW9ucztpZihlLmZpbGxTcGFjZSlyZXR1cm4iZmlsbCI7aWYoZS5jbGVhclN0eWxlKXJldHVybiJjb250ZW50IjtpZihlLmF1dG9IZWlnaHQpcmV0dXJuImF1dG8ifX0pfShqUXVlcnksalF1ZXJ5LnVpLmFjY29yZGlvbi5wcm90b3R5cGUpLGZ1bmN0aW9uKGUsdCl7ZS5leHRlbmQodC5vcHRpb25zLmljb25zLHthY3RpdmVIZWFkZXI6bnVsbCxoZWFkZXJTZWxlY3RlZDoidWktaWNvbi10cmlhbmdsZS0xLXMifSk7dmFyIG49dC5fY3JlYXRlSWNvbnM7dC5fY3JlYXRlSWNvbnM9ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMuaWNvbnMmJih0aGlzLm9wdGlvbnMuaWNvbnMuYWN0aXZlSGVhZGVyPXRoaXMub3B0aW9ucy5pY29ucy5hY3RpdmVIZWFkZXJ8fHRoaXMub3B0aW9ucy5pY29ucy5oZWFkZXJTZWxlY3RlZCksbi5jYWxsKHRoaXMpfX0oalF1ZXJ5LGpRdWVyeS51aS5hY2NvcmRpb24ucHJvdG90eXBlKSxmdW5jdGlvbihlLHQpe3QuYWN0aXZhdGU9dC5fYWN0aXZhdGU7dmFyIG49dC5fZmluZEFjdGl2ZTt0Ll9maW5kQWN0aXZlPWZ1bmN0aW9uKGUpe3JldHVybiBlPT09LTEmJihlPSExKSxlJiZ0eXBlb2YgZSE9Im51bWJlciImJihlPXRoaXMuaGVhZGVycy5pbmRleCh0aGlzLmhlYWRlcnMuZmlsdGVyKGUpKSxlPT09LTEmJihlPSExKSksbi5jYWxsKHRoaXMsZSl9fShqUXVlcnksalF1ZXJ5LnVpLmFjY29yZGlvbi5wcm90b3R5cGUpLGpRdWVyeS51aS5hY2NvcmRpb24ucHJvdG90eXBlLnJlc2l6ZT1qUXVlcnkudWkuYWNjb3JkaW9uLnByb3RvdHlwZS5yZWZyZXNoLGZ1bmN0aW9uKGUsdCl7ZS5leHRlbmQodC5vcHRpb25zLHtjaGFuZ2U6bnVsbCxjaGFuZ2VzdGFydDpudWxsfSk7dmFyIG49dC5fdHJpZ2dlcjt0Ll90cmlnZ2VyPWZ1bmN0aW9uKGUsdCxyKXt2YXIgaT1uLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gaT8oZT09PSJiZWZvcmVBY3RpdmF0ZSI/aT1uLmNhbGwodGhpcywiY2hhbmdlc3RhcnQiLHQse29sZEhlYWRlcjpyLm9sZEhlYWRlcixvbGRDb250ZW50OnIub2xkUGFuZWwsbmV3SGVhZGVyOnIubmV3SGVhZGVyLG5ld0NvbnRlbnQ6ci5uZXdQYW5lbH0pOmU9PT0iYWN0aXZhdGUiJiYoaT1uLmNhbGwodGhpcywiY2hhbmdlIix0LHtvbGRIZWFkZXI6ci5vbGRIZWFkZXIsb2xkQ29udGVudDpyLm9sZFBhbmVsLG5ld0hlYWRlcjpyLm5ld0hlYWRlcixuZXdDb250ZW50OnIubmV3UGFuZWx9KSksaSk6ITF9fShqUXVlcnksalF1ZXJ5LnVpLmFjY29yZGlvbi5wcm90b3R5cGUpLGZ1bmN0aW9uKGUsdCl7ZS5leHRlbmQodC5vcHRpb25zLHthbmltYXRlOm51bGwsYW5pbWF0ZWQ6InNsaWRlIn0pO3ZhciBuPXQuX2NyZWF0ZTt0Ll9jcmVhdGU9ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9wdGlvbnM7ZS5hbmltYXRlPT09bnVsbCYmKGUuYW5pbWF0ZWQ/ZS5hbmltYXRlZD09PSJzbGlkZSI/ZS5hbmltYXRlPTMwMDplLmFuaW1hdGVkPT09ImJvdW5jZXNsaWRlIj9lLmFuaW1hdGU9e2R1cmF0aW9uOjIwMCxkb3duOntlYXNpbmc6ImVhc2VPdXRCb3VuY2UiLGR1cmF0aW9uOjFlM319OmUuYW5pbWF0ZT1lLmFuaW1hdGVkOmUuYW5pbWF0ZT0hMSksbi5jYWxsKHRoaXMpfX0oalF1ZXJ5LGpRdWVyeS51aS5hY2NvcmRpb24ucHJvdG90eXBlKSl9KShqUXVlcnkpOyhmdW5jdGlvbihlLHQpe3ZhciBuPTA7ZS53aWRnZXQoInVpLmF1dG9jb21wbGV0ZSIse3ZlcnNpb246IjEuOS4wIixkZWZhdWx0RWxlbWVudDoiPGlucHV0PiIsb3B0aW9uczp7YXBwZW5kVG86ImJvZHkiLGF1dG9Gb2N1czohMSxkZWxheTozMDAsbWluTGVuZ3RoOjEscG9zaXRpb246e215OiJsZWZ0IHRvcCIsYXQ6ImxlZnQgYm90dG9tIixjb2xsaXNpb246Im5vbmUifSxzb3VyY2U6bnVsbCxjaGFuZ2U6bnVsbCxjbG9zZTpudWxsLGZvY3VzOm51bGwsb3BlbjpudWxsLHJlc3BvbnNlOm51bGwsc2VhcmNoOm51bGwsc2VsZWN0Om51bGx9LHBlbmRpbmc6MCxfY3JlYXRlOmZ1bmN0aW9uKCl7dmFyIHQsbixyO3RoaXMuaXNNdWx0aUxpbmU9dGhpcy5faXNNdWx0aUxpbmUoKSx0aGlzLnZhbHVlTWV0aG9kPXRoaXMuZWxlbWVudFt0aGlzLmVsZW1lbnQuaXMoImlucHV0LHRleHRhcmVhIik/InZhbCI6InRleHQiXSx0aGlzLmlzTmV3TWVudT0hMCx0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLWF1dG9jb21wbGV0ZS1pbnB1dCIpLmF0dHIoImF1dG9jb21wbGV0ZSIsIm9mZiIpLHRoaXMuX29uKHtrZXlkb3duOmZ1bmN0aW9uKGkpe2lmKHRoaXMuZWxlbWVudC5wcm9wKCJyZWFkT25seSIpKXt0PSEwLHI9ITAsbj0hMDtyZXR1cm59dD0hMSxyPSExLG49ITE7dmFyIHM9ZS51aS5rZXlDb2RlO3N3aXRjaChpLmtleUNvZGUpe2Nhc2Ugcy5QQUdFX1VQOnQ9ITAsdGhpcy5fbW92ZSgicHJldmlvdXNQYWdlIixpKTticmVhaztjYXNlIHMuUEFHRV9ET1dOOnQ9ITAsdGhpcy5fbW92ZSgibmV4dFBhZ2UiLGkpO2JyZWFrO2Nhc2Ugcy5VUDp0PSEwLHRoaXMuX2tleUV2ZW50KCJwcmV2aW91cyIsaSk7YnJlYWs7Y2FzZSBzLkRPV046dD0hMCx0aGlzLl9rZXlFdmVudCgibmV4dCIsaSk7YnJlYWs7Y2FzZSBzLkVOVEVSOmNhc2Ugcy5OVU1QQURfRU5URVI6dGhpcy5tZW51LmFjdGl2ZSYmKHQ9ITAsaS5wcmV2ZW50RGVmYXVsdCgpLHRoaXMubWVudS5zZWxlY3QoaSkpO2JyZWFrO2Nhc2Ugcy5UQUI6dGhpcy5tZW51LmFjdGl2ZSYmdGhpcy5tZW51LnNlbGVjdChpKTticmVhaztjYXNlIHMuRVNDQVBFOnRoaXMubWVudS5lbGVtZW50LmlzKCI6dmlzaWJsZSIpJiYodGhpcy5fdmFsdWUodGhpcy50ZXJtKSx0aGlzLmNsb3NlKGkpLGkucHJldmVudERlZmF1bHQoKSk7YnJlYWs7ZGVmYXVsdDpuPSEwLHRoaXMuX3NlYXJjaFRpbWVvdXQoaSl9fSxrZXlwcmVzczpmdW5jdGlvbihyKXtpZih0KXt0PSExLHIucHJldmVudERlZmF1bHQoKTtyZXR1cm59aWYobilyZXR1cm47dmFyIGk9ZS51aS5rZXlDb2RlO3N3aXRjaChyLmtleUNvZGUpe2Nhc2UgaS5QQUdFX1VQOnRoaXMuX21vdmUoInByZXZpb3VzUGFnZSIscik7YnJlYWs7Y2FzZSBpLlBBR0VfRE9XTjp0aGlzLl9tb3ZlKCJuZXh0UGFnZSIscik7YnJlYWs7Y2FzZSBpLlVQOnRoaXMuX2tleUV2ZW50KCJwcmV2aW91cyIscik7YnJlYWs7Y2FzZSBpLkRPV046dGhpcy5fa2V5RXZlbnQoIm5leHQiLHIpfX0saW5wdXQ6ZnVuY3Rpb24oZSl7aWYocil7cj0hMSxlLnByZXZlbnREZWZhdWx0KCk7cmV0dXJufXRoaXMuX3NlYXJjaFRpbWVvdXQoZSl9LGZvY3VzOmZ1bmN0aW9uKCl7dGhpcy5zZWxlY3RlZEl0ZW09bnVsbCx0aGlzLnByZXZpb3VzPXRoaXMuX3ZhbHVlKCl9LGJsdXI6ZnVuY3Rpb24oZSl7aWYodGhpcy5jYW5jZWxCbHVyKXtkZWxldGUgdGhpcy5jYW5jZWxCbHVyO3JldHVybn1jbGVhclRpbWVvdXQodGhpcy5zZWFyY2hpbmcpLHRoaXMuY2xvc2UoZSksdGhpcy5fY2hhbmdlKGUpfX0pLHRoaXMuX2luaXRTb3VyY2UoKSx0aGlzLm1lbnU9ZSgiPHVsPiIpLmFkZENsYXNzKCJ1aS1hdXRvY29tcGxldGUiKS5hcHBlbmRUbyh0aGlzLmRvY3VtZW50LmZpbmQodGhpcy5vcHRpb25zLmFwcGVuZFRvfHwiYm9keSIpWzBdKS5tZW51KHtpbnB1dDplKCkscm9sZTpudWxsfSkuekluZGV4KHRoaXMuZWxlbWVudC56SW5kZXgoKSsxKS5oaWRlKCkuZGF0YSgibWVudSIpLHRoaXMuX29uKHRoaXMubWVudS5lbGVtZW50LHttb3VzZWRvd246ZnVuY3Rpb24odCl7dC5wcmV2ZW50RGVmYXVsdCgpLHRoaXMuY2FuY2VsQmx1cj0hMCx0aGlzLl9kZWxheShmdW5jdGlvbigpe2RlbGV0ZSB0aGlzLmNhbmNlbEJsdXJ9KTt2YXIgbj10aGlzLm1lbnUuZWxlbWVudFswXTtlKHQudGFyZ2V0KS5jbG9zZXN0KCIudWktbWVudS1pdGVtIikubGVuZ3RofHx0aGlzLl9kZWxheShmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy5kb2N1bWVudC5vbmUoIm1vdXNlZG93biIsZnVuY3Rpb24ocil7ci50YXJnZXQhPT10LmVsZW1lbnRbMF0mJnIudGFyZ2V0IT09biYmIWUuY29udGFpbnMobixyLnRhcmdldCkmJnQuY2xvc2UoKX0pfSl9LG1lbnVmb2N1czpmdW5jdGlvbih0LG4pe2lmKHRoaXMuaXNOZXdNZW51KXt0aGlzLmlzTmV3TWVudT0hMTtpZih0Lm9yaWdpbmFsRXZlbnQmJi9ebW91c2UvLnRlc3QodC5vcmlnaW5hbEV2ZW50LnR5cGUpKXt0aGlzLm1lbnUuYmx1cigpLHRoaXMuZG9jdW1lbnQub25lKCJtb3VzZW1vdmUiLGZ1bmN0aW9uKCl7ZSh0LnRhcmdldCkudHJpZ2dlcih0Lm9yaWdpbmFsRXZlbnQpfSk7cmV0dXJufX12YXIgcj1uLml0ZW0uZGF0YSgidWktYXV0b2NvbXBsZXRlLWl0ZW0iKXx8bi5pdGVtLmRhdGEoIml0ZW0uYXV0b2NvbXBsZXRlIik7ITEhPT10aGlzLl90cmlnZ2VyKCJmb2N1cyIsdCx7aXRlbTpyfSk/dC5vcmlnaW5hbEV2ZW50JiYvXmtleS8udGVzdCh0Lm9yaWdpbmFsRXZlbnQudHlwZSkmJnRoaXMuX3ZhbHVlKHIudmFsdWUpOnRoaXMubGl2ZVJlZ2lvbi50ZXh0KHIudmFsdWUpfSxtZW51c2VsZWN0OmZ1bmN0aW9uKGUsdCl7dmFyIG49dC5pdGVtLmRhdGEoInVpLWF1dG9jb21wbGV0ZS1pdGVtIil8fHQuaXRlbS5kYXRhKCJpdGVtLmF1dG9jb21wbGV0ZSIpLHI9dGhpcy5wcmV2aW91czt0aGlzLmVsZW1lbnRbMF0hPT10aGlzLmRvY3VtZW50WzBdLmFjdGl2ZUVsZW1lbnQmJih0aGlzLmVsZW1lbnQuZm9jdXMoKSx0aGlzLnByZXZpb3VzPXIsdGhpcy5fZGVsYXkoZnVuY3Rpb24oKXt0aGlzLnByZXZpb3VzPXIsdGhpcy5zZWxlY3RlZEl0ZW09bn0pKSwhMSE9PXRoaXMuX3RyaWdnZXIoInNlbGVjdCIsZSx7aXRlbTpufSkmJnRoaXMuX3ZhbHVlKG4udmFsdWUpLHRoaXMudGVybT10aGlzLl92YWx1ZSgpLHRoaXMuY2xvc2UoZSksdGhpcy5zZWxlY3RlZEl0ZW09bn19KSx0aGlzLmxpdmVSZWdpb249ZSgiPHNwYW4+Iix7cm9sZToic3RhdHVzIiwiYXJpYS1saXZlIjoicG9saXRlIn0pLmFkZENsYXNzKCJ1aS1oZWxwZXItaGlkZGVuLWFjY2Vzc2libGUiKS5pbnNlcnRBZnRlcih0aGlzLmVsZW1lbnQpLGUuZm4uYmdpZnJhbWUmJnRoaXMubWVudS5lbGVtZW50LmJnaWZyYW1lKCksdGhpcy5fb24odGhpcy53aW5kb3cse2JlZm9yZXVubG9hZDpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC5yZW1vdmVBdHRyKCJhdXRvY29tcGxldGUiKX19KX0sX2Rlc3Ryb3k6ZnVuY3Rpb24oKXtjbGVhclRpbWVvdXQodGhpcy5zZWFyY2hpbmcpLHRoaXMuZWxlbWVudC5yZW1vdmVDbGFzcygidWktYXV0b2NvbXBsZXRlLWlucHV0IikucmVtb3ZlQXR0cigiYXV0b2NvbXBsZXRlIiksdGhpcy5tZW51LmVsZW1lbnQucmVtb3ZlKCksdGhpcy5saXZlUmVnaW9uLnJlbW92ZSgpfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKGUsdCl7dGhpcy5fc3VwZXIoZSx0KSxlPT09InNvdXJjZSImJnRoaXMuX2luaXRTb3VyY2UoKSxlPT09ImFwcGVuZFRvIiYmdGhpcy5tZW51LmVsZW1lbnQuYXBwZW5kVG8odGhpcy5kb2N1bWVudC5maW5kKHR8fCJib2R5IilbMF0pLGU9PT0iZGlzYWJsZWQiJiZ0JiZ0aGlzLnhociYmdGhpcy54aHIuYWJvcnQoKX0sX2lzTXVsdGlMaW5lOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxlbWVudC5pcygidGV4dGFyZWEiKT8hMDp0aGlzLmVsZW1lbnQuaXMoImlucHV0Iik/ITE6dGhpcy5lbGVtZW50LnByb3AoImlzQ29udGVudEVkaXRhYmxlIil9LF9pbml0U291cmNlOmZ1bmN0aW9uKCl7dmFyIHQsbixyPXRoaXM7ZS5pc0FycmF5KHRoaXMub3B0aW9ucy5zb3VyY2UpPyh0PXRoaXMub3B0aW9ucy5zb3VyY2UsdGhpcy5zb3VyY2U9ZnVuY3Rpb24obixyKXtyKGUudWkuYXV0b2NvbXBsZXRlLmZpbHRlcih0LG4udGVybSkpfSk6dHlwZW9mIHRoaXMub3B0aW9ucy5zb3VyY2U9PSJzdHJpbmciPyhuPXRoaXMub3B0aW9ucy5zb3VyY2UsdGhpcy5zb3VyY2U9ZnVuY3Rpb24odCxpKXtyLnhociYmci54aHIuYWJvcnQoKSxyLnhocj1lLmFqYXgoe3VybDpuLGRhdGE6dCxkYXRhVHlwZToianNvbiIsc3VjY2VzczpmdW5jdGlvbihlLHQpe2koZSl9LGVycm9yOmZ1bmN0aW9uKCl7aShbXSl9fSl9KTp0aGlzLnNvdXJjZT10aGlzLm9wdGlvbnMuc291cmNlfSxfc2VhcmNoVGltZW91dDpmdW5jdGlvbihlKXtjbGVhclRpbWVvdXQodGhpcy5zZWFyY2hpbmcpLHRoaXMuc2VhcmNoaW5nPXRoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7dGhpcy50ZXJtIT09dGhpcy5fdmFsdWUoKSYmKHRoaXMuc2VsZWN0ZWRJdGVtPW51bGwsdGhpcy5zZWFyY2gobnVsbCxlKSl9LHRoaXMub3B0aW9ucy5kZWxheSl9LHNlYXJjaDpmdW5jdGlvbihlLHQpe2U9ZSE9bnVsbD9lOnRoaXMuX3ZhbHVlKCksdGhpcy50ZXJtPXRoaXMuX3ZhbHVlKCk7aWYoZS5sZW5ndGg8dGhpcy5vcHRpb25zLm1pbkxlbmd0aClyZXR1cm4gdGhpcy5jbG9zZSh0KTtpZih0aGlzLl90cmlnZ2VyKCJzZWFyY2giLHQpPT09ITEpcmV0dXJuO3JldHVybiB0aGlzLl9zZWFyY2goZSl9LF9zZWFyY2g6ZnVuY3Rpb24oZSl7dGhpcy5wZW5kaW5nKyssdGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS1hdXRvY29tcGxldGUtbG9hZGluZyIpLHRoaXMuY2FuY2VsU2VhcmNoPSExLHRoaXMuc291cmNlKHt0ZXJtOmV9LHRoaXMuX3Jlc3BvbnNlKCkpfSxfcmVzcG9uc2U6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLHQ9KytuO3JldHVybiBmdW5jdGlvbihyKXt0PT09biYmZS5fX3Jlc3BvbnNlKHIpLGUucGVuZGluZy0tLGUucGVuZGluZ3x8ZS5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1hdXRvY29tcGxldGUtbG9hZGluZyIpfX0sX19yZXNwb25zZTpmdW5jdGlvbihlKXtlJiYoZT10aGlzLl9ub3JtYWxpemUoZSkpLHRoaXMuX3RyaWdnZXIoInJlc3BvbnNlIixudWxsLHtjb250ZW50OmV9KSwhdGhpcy5vcHRpb25zLmRpc2FibGVkJiZlJiZlLmxlbmd0aCYmIXRoaXMuY2FuY2VsU2VhcmNoPyh0aGlzLl9zdWdnZXN0KGUpLHRoaXMuX3RyaWdnZXIoIm9wZW4iKSk6dGhpcy5fY2xvc2UoKX0sY2xvc2U6ZnVuY3Rpb24oZSl7dGhpcy5jYW5jZWxTZWFyY2g9ITAsdGhpcy5fY2xvc2UoZSl9LF9jbG9zZTpmdW5jdGlvbihlKXt0aGlzLm1lbnUuZWxlbWVudC5pcygiOnZpc2libGUiKSYmKHRoaXMubWVudS5lbGVtZW50LmhpZGUoKSx0aGlzLm1lbnUuYmx1cigpLHRoaXMuaXNOZXdNZW51PSEwLHRoaXMuX3RyaWdnZXIoImNsb3NlIixlKSl9LF9jaGFuZ2U6ZnVuY3Rpb24oZSl7dGhpcy5wcmV2aW91cyE9PXRoaXMuX3ZhbHVlKCkmJnRoaXMuX3RyaWdnZXIoImNoYW5nZSIsZSx7aXRlbTp0aGlzLnNlbGVjdGVkSXRlbX0pfSxfbm9ybWFsaXplOmZ1bmN0aW9uKHQpe3JldHVybiB0Lmxlbmd0aCYmdFswXS5sYWJlbCYmdFswXS52YWx1ZT90OmUubWFwKHQsZnVuY3Rpb24odCl7cmV0dXJuIHR5cGVvZiB0PT0ic3RyaW5nIj97bGFiZWw6dCx2YWx1ZTp0fTplLmV4dGVuZCh7bGFiZWw6dC5sYWJlbHx8dC52YWx1ZSx2YWx1ZTp0LnZhbHVlfHx0LmxhYmVsfSx0KX0pfSxfc3VnZ2VzdDpmdW5jdGlvbih0KXt2YXIgbj10aGlzLm1lbnUuZWxlbWVudC5lbXB0eSgpLnpJbmRleCh0aGlzLmVsZW1lbnQuekluZGV4KCkrMSk7dGhpcy5fcmVuZGVyTWVudShuLHQpLHRoaXMubWVudS5yZWZyZXNoKCksbi5zaG93KCksdGhpcy5fcmVzaXplTWVudSgpLG4ucG9zaXRpb24oZS5leHRlbmQoe29mOnRoaXMuZWxlbWVudH0sdGhpcy5vcHRpb25zLnBvc2l0aW9uKSksdGhpcy5vcHRpb25zLmF1dG9Gb2N1cyYmdGhpcy5tZW51Lm5leHQoKX0sX3Jlc2l6ZU1lbnU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm1lbnUuZWxlbWVudDtlLm91dGVyV2lkdGgoTWF0aC5tYXgoZS53aWR0aCgiIikub3V0ZXJXaWR0aCgpKzEsdGhpcy5lbGVtZW50Lm91dGVyV2lkdGgoKSkpfSxfcmVuZGVyTWVudTpmdW5jdGlvbih0LG4pe3ZhciByPXRoaXM7ZS5lYWNoKG4sZnVuY3Rpb24oZSxuKXtyLl9yZW5kZXJJdGVtRGF0YSh0LG4pfSl9LF9yZW5kZXJJdGVtRGF0YTpmdW5jdGlvbihlLHQpe3JldHVybiB0aGlzLl9yZW5kZXJJdGVtKGUsdCkuZGF0YSgidWktYXV0b2NvbXBsZXRlLWl0ZW0iLHQpfSxfcmVuZGVySXRlbTpmdW5jdGlvbih0LG4pe3JldHVybiBlKCI8bGk+IikuYXBwZW5kKGUoIjxhPiIpLnRleHQobi5sYWJlbCkpLmFwcGVuZFRvKHQpfSxfbW92ZTpmdW5jdGlvbihlLHQpe2lmKCF0aGlzLm1lbnUuZWxlbWVudC5pcygiOnZpc2libGUiKSl7dGhpcy5zZWFyY2gobnVsbCx0KTtyZXR1cm59aWYodGhpcy5tZW51LmlzRmlyc3RJdGVtKCkmJi9ecHJldmlvdXMvLnRlc3QoZSl8fHRoaXMubWVudS5pc0xhc3RJdGVtKCkmJi9ebmV4dC8udGVzdChlKSl7dGhpcy5fdmFsdWUodGhpcy50ZXJtKSx0aGlzLm1lbnUuYmx1cigpO3JldHVybn10aGlzLm1lbnVbZV0odCl9LHdpZGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1lbnUuZWxlbWVudH0sX3ZhbHVlOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLnZhbHVlTWV0aG9kLmFwcGx5KHRoaXMuZWxlbWVudCxhcmd1bWVudHMpfSxfa2V5RXZlbnQ6ZnVuY3Rpb24oZSx0KXtpZighdGhpcy5pc011bHRpTGluZXx8dGhpcy5tZW51LmVsZW1lbnQuaXMoIjp2aXNpYmxlIikpdGhpcy5fbW92ZShlLHQpLHQucHJldmVudERlZmF1bHQoKX19KSxlLmV4dGVuZChlLnVpLmF1dG9jb21wbGV0ZSx7ZXNjYXBlUmVnZXg6ZnVuY3Rpb24oZSl7cmV0dXJuIGUucmVwbGFjZSgvW1wtXFtcXXt9KCkqKz8uLFxcXF4kfCNcc10vZywiXFwkJiIpfSxmaWx0ZXI6ZnVuY3Rpb24odCxuKXt2YXIgcj1uZXcgUmVnRXhwKGUudWkuYXV0b2NvbXBsZXRlLmVzY2FwZVJlZ2V4KG4pLCJpIik7cmV0dXJuIGUuZ3JlcCh0LGZ1bmN0aW9uKGUpe3JldHVybiByLnRlc3QoZS5sYWJlbHx8ZS52YWx1ZXx8ZSl9KX19KSxlLndpZGdldCgidWkuYXV0b2NvbXBsZXRlIixlLnVpLmF1dG9jb21wbGV0ZSx7b3B0aW9uczp7bWVzc2FnZXM6e25vUmVzdWx0czoiTm8gc2VhcmNoIHJlc3VsdHMuIixyZXN1bHRzOmZ1bmN0aW9uKGUpe3JldHVybiBlKyhlPjE/IiByZXN1bHRzIGFyZSI6IiByZXN1bHQgaXMiKSsiIGF2YWlsYWJsZSwgdXNlIHVwIGFuZCBkb3duIGFycm93IGtleXMgdG8gbmF2aWdhdGUuIn19fSxfX3Jlc3BvbnNlOmZ1bmN0aW9uKGUpe3ZhciB0O3RoaXMuX3N1cGVyQXBwbHkoYXJndW1lbnRzKTtpZih0aGlzLm9wdGlvbnMuZGlzYWJsZWR8fHRoaXMuY2FuY2VsU2VhcmNoKXJldHVybjtlJiZlLmxlbmd0aD90PXRoaXMub3B0aW9ucy5tZXNzYWdlcy5yZXN1bHRzKGUubGVuZ3RoKTp0PXRoaXMub3B0aW9ucy5tZXNzYWdlcy5ub1Jlc3VsdHMsdGhpcy5saXZlUmVnaW9uLnRleHQodCl9fSl9KShqUXVlcnkpOyhmdW5jdGlvbihlLHQpe3ZhciBuLHIsaSxzLG89InVpLWJ1dHRvbiB1aS13aWRnZXQgdWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItYWxsIix1PSJ1aS1zdGF0ZS1ob3ZlciB1aS1zdGF0ZS1hY3RpdmUgIixhPSJ1aS1idXR0b24taWNvbnMtb25seSB1aS1idXR0b24taWNvbi1vbmx5IHVpLWJ1dHRvbi10ZXh0LWljb25zIHVpLWJ1dHRvbi10ZXh0LWljb24tcHJpbWFyeSB1aS1idXR0b24tdGV4dC1pY29uLXNlY29uZGFyeSB1aS1idXR0b24tdGV4dC1vbmx5IixmPWZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKS5maW5kKCI6dWktYnV0dG9uIik7c2V0VGltZW91dChmdW5jdGlvbigpe3QuYnV0dG9uKCJyZWZyZXNoIil9LDEpfSxsPWZ1bmN0aW9uKHQpe3ZhciBuPXQubmFtZSxyPXQuZm9ybSxpPWUoW10pO3JldHVybiBuJiYocj9pPWUocikuZmluZCgiW25hbWU9JyIrbisiJ10iKTppPWUoIltuYW1lPSciK24rIiddIix0Lm93bmVyRG9jdW1lbnQpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiF0aGlzLmZvcm19KSksaX07ZS53aWRnZXQoInVpLmJ1dHRvbiIse3ZlcnNpb246IjEuOS4wIixkZWZhdWx0RWxlbWVudDoiPGJ1dHRvbj4iLG9wdGlvbnM6e2Rpc2FibGVkOm51bGwsdGV4dDohMCxsYWJlbDpudWxsLGljb25zOntwcmltYXJ5Om51bGwsc2Vjb25kYXJ5Om51bGx9fSxfY3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LmNsb3Nlc3QoImZvcm0iKS51bmJpbmQoInJlc2V0Iit0aGlzLmV2ZW50TmFtZXNwYWNlKS5iaW5kKCJyZXNldCIrdGhpcy5ldmVudE5hbWVzcGFjZSxmKSx0eXBlb2YgdGhpcy5vcHRpb25zLmRpc2FibGVkIT0iYm9vbGVhbiI/dGhpcy5vcHRpb25zLmRpc2FibGVkPSEhdGhpcy5lbGVtZW50LnByb3AoImRpc2FibGVkIik6dGhpcy5lbGVtZW50LnByb3AoImRpc2FibGVkIix0aGlzLm9wdGlvbnMuZGlzYWJsZWQpLHRoaXMuX2RldGVybWluZUJ1dHRvblR5cGUoKSx0aGlzLmhhc1RpdGxlPSEhdGhpcy5idXR0b25FbGVtZW50LmF0dHIoInRpdGxlIik7dmFyIHQ9dGhpcyx1PXRoaXMub3B0aW9ucyxhPXRoaXMudHlwZT09PSJjaGVja2JveCJ8fHRoaXMudHlwZT09PSJyYWRpbyIsYz0idWktc3RhdGUtaG92ZXIiKyhhPyIiOiIgdWktc3RhdGUtYWN0aXZlIiksaD0idWktc3RhdGUtZm9jdXMiO3UubGFiZWw9PT1udWxsJiYodS5sYWJlbD10aGlzLnR5cGU9PT0iaW5wdXQiP3RoaXMuYnV0dG9uRWxlbWVudC52YWwoKTp0aGlzLmJ1dHRvbkVsZW1lbnQuaHRtbCgpKSx0aGlzLmJ1dHRvbkVsZW1lbnQuYWRkQ2xhc3MobykuYXR0cigicm9sZSIsImJ1dHRvbiIpLmJpbmQoIm1vdXNlZW50ZXIiK3RoaXMuZXZlbnROYW1lc3BhY2UsZnVuY3Rpb24oKXtpZih1LmRpc2FibGVkKXJldHVybjtlKHRoaXMpLmFkZENsYXNzKCJ1aS1zdGF0ZS1ob3ZlciIpLHRoaXM9PT1uJiZlKHRoaXMpLmFkZENsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKX0pLmJpbmQoIm1vdXNlbGVhdmUiK3RoaXMuZXZlbnROYW1lc3BhY2UsZnVuY3Rpb24oKXtpZih1LmRpc2FibGVkKXJldHVybjtlKHRoaXMpLnJlbW92ZUNsYXNzKGMpfSkuYmluZCgiY2xpY2siK3RoaXMuZXZlbnROYW1lc3BhY2UsZnVuY3Rpb24oZSl7dS5kaXNhYmxlZCYmKGUucHJldmVudERlZmF1bHQoKSxlLnN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbigpKX0pLHRoaXMuZWxlbWVudC5iaW5kKCJmb2N1cyIrdGhpcy5ldmVudE5hbWVzcGFjZSxmdW5jdGlvbigpe3QuYnV0dG9uRWxlbWVudC5hZGRDbGFzcyhoKX0pLmJpbmQoImJsdXIiK3RoaXMuZXZlbnROYW1lc3BhY2UsZnVuY3Rpb24oKXt0LmJ1dHRvbkVsZW1lbnQucmVtb3ZlQ2xhc3MoaCl9KSxhJiYodGhpcy5lbGVtZW50LmJpbmQoImNoYW5nZSIrdGhpcy5ldmVudE5hbWVzcGFjZSxmdW5jdGlvbigpe2lmKHMpcmV0dXJuO3QucmVmcmVzaCgpfSksdGhpcy5idXR0b25FbGVtZW50LmJpbmQoIm1vdXNlZG93biIrdGhpcy5ldmVudE5hbWVzcGFjZSxmdW5jdGlvbihlKXtpZih1LmRpc2FibGVkKXJldHVybjtzPSExLHI9ZS5wYWdlWCxpPWUucGFnZVl9KS5iaW5kKCJtb3VzZXVwIit0aGlzLmV2ZW50TmFtZXNwYWNlLGZ1bmN0aW9uKGUpe2lmKHUuZGlzYWJsZWQpcmV0dXJuO2lmKHIhPT1lLnBhZ2VYfHxpIT09ZS5wYWdlWSlzPSEwfSkpLHRoaXMudHlwZT09PSJjaGVja2JveCI/dGhpcy5idXR0b25FbGVtZW50LmJpbmQoImNsaWNrIit0aGlzLmV2ZW50TmFtZXNwYWNlLGZ1bmN0aW9uKCl7aWYodS5kaXNhYmxlZHx8cylyZXR1cm4hMTtlKHRoaXMpLnRvZ2dsZUNsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKSx0LmJ1dHRvbkVsZW1lbnQuYXR0cigiYXJpYS1wcmVzc2VkIix0LmVsZW1lbnRbMF0uY2hlY2tlZCl9KTp0aGlzLnR5cGU9PT0icmFkaW8iP3RoaXMuYnV0dG9uRWxlbWVudC5iaW5kKCJjbGljayIrdGhpcy5ldmVudE5hbWVzcGFjZSxmdW5jdGlvbigpe2lmKHUuZGlzYWJsZWR8fHMpcmV0dXJuITE7ZSh0aGlzKS5hZGRDbGFzcygidWktc3RhdGUtYWN0aXZlIiksdC5idXR0b25FbGVtZW50LmF0dHIoImFyaWEtcHJlc3NlZCIsInRydWUiKTt2YXIgbj10LmVsZW1lbnRbMF07bChuKS5ub3QobikubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIGUodGhpcykuYnV0dG9uKCJ3aWRnZXQiKVswXX0pLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKS5hdHRyKCJhcmlhLXByZXNzZWQiLCJmYWxzZSIpfSk6KHRoaXMuYnV0dG9uRWxlbWVudC5iaW5kKCJtb3VzZWRvd24iK3RoaXMuZXZlbnROYW1lc3BhY2UsZnVuY3Rpb24oKXtpZih1LmRpc2FibGVkKXJldHVybiExO2UodGhpcykuYWRkQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpLG49dGhpcyx0LmRvY3VtZW50Lm9uZSgibW91c2V1cCIsZnVuY3Rpb24oKXtuPW51bGx9KX0pLmJpbmQoIm1vdXNldXAiK3RoaXMuZXZlbnROYW1lc3BhY2UsZnVuY3Rpb24oKXtpZih1LmRpc2FibGVkKXJldHVybiExO2UodGhpcykucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpfSkuYmluZCgia2V5ZG93biIrdGhpcy5ldmVudE5hbWVzcGFjZSxmdW5jdGlvbih0KXtpZih1LmRpc2FibGVkKXJldHVybiExOyh0LmtleUNvZGU9PT1lLnVpLmtleUNvZGUuU1BBQ0V8fHQua2V5Q29kZT09PWUudWkua2V5Q29kZS5FTlRFUikmJmUodGhpcykuYWRkQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpfSkuYmluZCgia2V5dXAiK3RoaXMuZXZlbnROYW1lc3BhY2UsZnVuY3Rpb24oKXtlKHRoaXMpLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKX0pLHRoaXMuYnV0dG9uRWxlbWVudC5pcygiYSIpJiZ0aGlzLmJ1dHRvbkVsZW1lbnQua2V5dXAoZnVuY3Rpb24odCl7dC5rZXlDb2RlPT09ZS51aS5rZXlDb2RlLlNQQUNFJiZlKHRoaXMpLmNsaWNrKCl9KSksdGhpcy5fc2V0T3B0aW9uKCJkaXNhYmxlZCIsdS5kaXNhYmxlZCksdGhpcy5fcmVzZXRCdXR0b24oKX0sX2RldGVybWluZUJ1dHRvblR5cGU6ZnVuY3Rpb24oKXt2YXIgZSx0LG47dGhpcy5lbGVtZW50LmlzKCJbdHlwZT1jaGVja2JveF0iKT90aGlzLnR5cGU9ImNoZWNrYm94Ijp0aGlzLmVsZW1lbnQuaXMoIlt0eXBlPXJhZGlvXSIpP3RoaXMudHlwZT0icmFkaW8iOnRoaXMuZWxlbWVudC5pcygiaW5wdXQiKT90aGlzLnR5cGU9ImlucHV0Ijp0aGlzLnR5cGU9ImJ1dHRvbiIsdGhpcy50eXBlPT09ImNoZWNrYm94Inx8dGhpcy50eXBlPT09InJhZGlvIj8oZT10aGlzLmVsZW1lbnQucGFyZW50cygpLmxhc3QoKSx0PSJsYWJlbFtmb3I9JyIrdGhpcy5lbGVtZW50LmF0dHIoImlkIikrIiddIix0aGlzLmJ1dHRvbkVsZW1lbnQ9ZS5maW5kKHQpLHRoaXMuYnV0dG9uRWxlbWVudC5sZW5ndGh8fChlPWUubGVuZ3RoP2Uuc2libGluZ3MoKTp0aGlzLmVsZW1lbnQuc2libGluZ3MoKSx0aGlzLmJ1dHRvbkVsZW1lbnQ9ZS5maWx0ZXIodCksdGhpcy5idXR0b25FbGVtZW50Lmxlbmd0aHx8KHRoaXMuYnV0dG9uRWxlbWVudD1lLmZpbmQodCkpKSx0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLWhlbHBlci1oaWRkZW4tYWNjZXNzaWJsZSIpLG49dGhpcy5lbGVtZW50LmlzKCI6Y2hlY2tlZCIpLG4mJnRoaXMuYnV0dG9uRWxlbWVudC5hZGRDbGFzcygidWktc3RhdGUtYWN0aXZlIiksdGhpcy5idXR0b25FbGVtZW50LnByb3AoImFyaWEtcHJlc3NlZCIsbikpOnRoaXMuYnV0dG9uRWxlbWVudD10aGlzLmVsZW1lbnR9LHdpZGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmJ1dHRvbkVsZW1lbnR9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1oZWxwZXItaGlkZGVuLWFjY2Vzc2libGUiKSx0aGlzLmJ1dHRvbkVsZW1lbnQucmVtb3ZlQ2xhc3MobysiICIrdSsiICIrYSkucmVtb3ZlQXR0cigicm9sZSIpLnJlbW92ZUF0dHIoImFyaWEtcHJlc3NlZCIpLmh0bWwodGhpcy5idXR0b25FbGVtZW50LmZpbmQoIi51aS1idXR0b24tdGV4dCIpLmh0bWwoKSksdGhpcy5oYXNUaXRsZXx8dGhpcy5idXR0b25FbGVtZW50LnJlbW92ZUF0dHIoInRpdGxlIil9LF9zZXRPcHRpb246ZnVuY3Rpb24oZSx0KXt0aGlzLl9zdXBlcihlLHQpO2lmKGU9PT0iZGlzYWJsZWQiKXt0P3RoaXMuZWxlbWVudC5wcm9wKCJkaXNhYmxlZCIsITApOnRoaXMuZWxlbWVudC5wcm9wKCJkaXNhYmxlZCIsITEpO3JldHVybn10aGlzLl9yZXNldEJ1dHRvbigpfSxyZWZyZXNoOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5lbGVtZW50LmlzKCI6ZGlzYWJsZWQiKTt0IT09dGhpcy5vcHRpb25zLmRpc2FibGVkJiZ0aGlzLl9zZXRPcHRpb24oImRpc2FibGVkIix0KSx0aGlzLnR5cGU9PT0icmFkaW8iP2wodGhpcy5lbGVtZW50WzBdKS5lYWNoKGZ1bmN0aW9uKCl7ZSh0aGlzKS5pcygiOmNoZWNrZWQiKT9lKHRoaXMpLmJ1dHRvbigid2lkZ2V0IikuYWRkQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpLmF0dHIoImFyaWEtcHJlc3NlZCIsInRydWUiKTplKHRoaXMpLmJ1dHRvbigid2lkZ2V0IikucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpLmF0dHIoImFyaWEtcHJlc3NlZCIsImZhbHNlIil9KTp0aGlzLnR5cGU9PT0iY2hlY2tib3giJiYodGhpcy5lbGVtZW50LmlzKCI6Y2hlY2tlZCIpP3RoaXMuYnV0dG9uRWxlbWVudC5hZGRDbGFzcygidWktc3RhdGUtYWN0aXZlIikuYXR0cigiYXJpYS1wcmVzc2VkIiwidHJ1ZSIpOnRoaXMuYnV0dG9uRWxlbWVudC5yZW1vdmVDbGFzcygidWktc3RhdGUtYWN0aXZlIikuYXR0cigiYXJpYS1wcmVzc2VkIiwiZmFsc2UiKSl9LF9yZXNldEJ1dHRvbjpmdW5jdGlvbigpe2lmKHRoaXMudHlwZT09PSJpbnB1dCIpe3RoaXMub3B0aW9ucy5sYWJlbCYmdGhpcy5lbGVtZW50LnZhbCh0aGlzLm9wdGlvbnMubGFiZWwpO3JldHVybn12YXIgdD10aGlzLmJ1dHRvbkVsZW1lbnQucmVtb3ZlQ2xhc3MoYSksbj1lKCI8c3Bhbj48L3NwYW4+Iix0aGlzLmRvY3VtZW50WzBdKS5hZGRDbGFzcygidWktYnV0dG9uLXRleHQiKS5odG1sKHRoaXMub3B0aW9ucy5sYWJlbCkuYXBwZW5kVG8odC5lbXB0eSgpKS50ZXh0KCkscj10aGlzLm9wdGlvbnMuaWNvbnMsaT1yLnByaW1hcnkmJnIuc2Vjb25kYXJ5LHM9W107ci5wcmltYXJ5fHxyLnNlY29uZGFyeT8odGhpcy5vcHRpb25zLnRleHQmJnMucHVzaCgidWktYnV0dG9uLXRleHQtaWNvbiIrKGk/InMiOnIucHJpbWFyeT8iLXByaW1hcnkiOiItc2Vjb25kYXJ5IikpLHIucHJpbWFyeSYmdC5wcmVwZW5kKCI8c3BhbiBjbGFzcz0ndWktYnV0dG9uLWljb24tcHJpbWFyeSB1aS1pY29uICIrci5wcmltYXJ5KyInPjwvc3Bhbj4iKSxyLnNlY29uZGFyeSYmdC5hcHBlbmQoIjxzcGFuIGNsYXNzPSd1aS1idXR0b24taWNvbi1zZWNvbmRhcnkgdWktaWNvbiAiK3Iuc2Vjb25kYXJ5KyInPjwvc3Bhbj4iKSx0aGlzLm9wdGlvbnMudGV4dHx8KHMucHVzaChpPyJ1aS1idXR0b24taWNvbnMtb25seSI6InVpLWJ1dHRvbi1pY29uLW9ubHkiKSx0aGlzLmhhc1RpdGxlfHx0LmF0dHIoInRpdGxlIixlLnRyaW0obikpKSk6cy5wdXNoKCJ1aS1idXR0b24tdGV4dC1vbmx5IiksdC5hZGRDbGFzcyhzLmpvaW4oIiAiKSl9fSksZS53aWRnZXQoInVpLmJ1dHRvbnNldCIse3ZlcnNpb246IjEuOS4wIixvcHRpb25zOntpdGVtczoiYnV0dG9uLCBpbnB1dFt0eXBlPWJ1dHRvbl0sIGlucHV0W3R5cGU9c3VibWl0XSwgaW5wdXRbdHlwZT1yZXNldF0sIGlucHV0W3R5cGU9Y2hlY2tib3hdLCBpbnB1dFt0eXBlPXJhZGlvXSwgYSwgOmRhdGEoYnV0dG9uKSJ9LF9jcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLmVsZW1lbnQuYWRkQ2xhc3MoInVpLWJ1dHRvbnNldCIpfSxfaW5pdDpmdW5jdGlvbigpe3RoaXMucmVmcmVzaCgpfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKGUsdCl7ZT09PSJkaXNhYmxlZCImJnRoaXMuYnV0dG9ucy5idXR0b24oIm9wdGlvbiIsZSx0KSx0aGlzLl9zdXBlcihlLHQpfSxyZWZyZXNoOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcy5lbGVtZW50LmNzcygiZGlyZWN0aW9uIik9PT0icnRsIjt0aGlzLmJ1dHRvbnM9dGhpcy5lbGVtZW50LmZpbmQodGhpcy5vcHRpb25zLml0ZW1zKS5maWx0ZXIoIjp1aS1idXR0b24iKS5idXR0b24oInJlZnJlc2giKS5lbmQoKS5ub3QoIjp1aS1idXR0b24iKS5idXR0b24oKS5lbmQoKS5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gZSh0aGlzKS5idXR0b24oIndpZGdldCIpWzBdfSkucmVtb3ZlQ2xhc3MoInVpLWNvcm5lci1hbGwgdWktY29ybmVyLWxlZnQgdWktY29ybmVyLXJpZ2h0IikuZmlsdGVyKCI6Zmlyc3QiKS5hZGRDbGFzcyh0PyJ1aS1jb3JuZXItcmlnaHQiOiJ1aS1jb3JuZXItbGVmdCIpLmVuZCgpLmZpbHRlcigiOmxhc3QiKS5hZGRDbGFzcyh0PyJ1aS1jb3JuZXItbGVmdCI6InVpLWNvcm5lci1yaWdodCIpLmVuZCgpLmVuZCgpfSxfZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC5yZW1vdmVDbGFzcygidWktYnV0dG9uc2V0IiksdGhpcy5idXR0b25zLm1hcChmdW5jdGlvbigpe3JldHVybiBlKHRoaXMpLmJ1dHRvbigid2lkZ2V0IilbMF19KS5yZW1vdmVDbGFzcygidWktY29ybmVyLWxlZnQgdWktY29ybmVyLXJpZ2h0IikuZW5kKCkuYnV0dG9uKCJkZXN0cm95Iil9fSl9KShqUXVlcnkpOyhmdW5jdGlvbigkLHVuZGVmaW5lZCl7ZnVuY3Rpb24gRGF0ZXBpY2tlcigpe3RoaXMuZGVidWc9ITEsdGhpcy5fY3VySW5zdD1udWxsLHRoaXMuX2tleUV2ZW50PSExLHRoaXMuX2Rpc2FibGVkSW5wdXRzPVtdLHRoaXMuX2RhdGVwaWNrZXJTaG93aW5nPSExLHRoaXMuX2luRGlhbG9nPSExLHRoaXMuX21haW5EaXZJZD0idWktZGF0ZXBpY2tlci1kaXYiLHRoaXMuX2lubGluZUNsYXNzPSJ1aS1kYXRlcGlja2VyLWlubGluZSIsdGhpcy5fYXBwZW5kQ2xhc3M9InVpLWRhdGVwaWNrZXItYXBwZW5kIix0aGlzLl90cmlnZ2VyQ2xhc3M9InVpLWRhdGVwaWNrZXItdHJpZ2dlciIsdGhpcy5fZGlhbG9nQ2xhc3M9InVpLWRhdGVwaWNrZXItZGlhbG9nIix0aGlzLl9kaXNhYmxlQ2xhc3M9InVpLWRhdGVwaWNrZXItZGlzYWJsZWQiLHRoaXMuX3Vuc2VsZWN0YWJsZUNsYXNzPSJ1aS1kYXRlcGlja2VyLXVuc2VsZWN0YWJsZSIsdGhpcy5fY3VycmVudENsYXNzPSJ1aS1kYXRlcGlja2VyLWN1cnJlbnQtZGF5Iix0aGlzLl9kYXlPdmVyQ2xhc3M9InVpLWRhdGVwaWNrZXItZGF5cy1jZWxsLW92ZXIiLHRoaXMucmVnaW9uYWw9W10sdGhpcy5yZWdpb25hbFsiIl09e2Nsb3NlVGV4dDoiRG9uZSIscHJldlRleHQ6IlByZXYiLG5leHRUZXh0OiJOZXh0IixjdXJyZW50VGV4dDoiVG9kYXkiLG1vbnRoTmFtZXM6WyJKYW51YXJ5IiwiRmVicnVhcnkiLCJNYXJjaCIsIkFwcmlsIiwiTWF5IiwiSnVuZSIsIkp1bHkiLCJBdWd1c3QiLCJTZXB0ZW1iZXIiLCJPY3RvYmVyIiwiTm92ZW1iZXIiLCJEZWNlbWJlciJdLG1vbnRoTmFtZXNTaG9ydDpbIkphbiIsIkZlYiIsIk1hciIsIkFwciIsIk1heSIsIkp1biIsIkp1bCIsIkF1ZyIsIlNlcCIsIk9jdCIsIk5vdiIsIkRlYyJdLGRheU5hbWVzOlsiU3VuZGF5IiwiTW9uZGF5IiwiVHVlc2RheSIsIldlZG5lc2RheSIsIlRodXJzZGF5IiwiRnJpZGF5IiwiU2F0dXJkYXkiXSxkYXlOYW1lc1Nob3J0OlsiU3VuIiwiTW9uIiwiVHVlIiwiV2VkIiwiVGh1IiwiRnJpIiwiU2F0Il0sZGF5TmFtZXNNaW46WyJTdSIsIk1vIiwiVHUiLCJXZSIsIlRoIiwiRnIiLCJTYSJdLHdlZWtIZWFkZXI6IldrIixkYXRlRm9ybWF0OiJtbS9kZC95eSIsZmlyc3REYXk6MCxpc1JUTDohMSxzaG93TW9udGhBZnRlclllYXI6ITEseWVhclN1ZmZpeDoiIn0sdGhpcy5fZGVmYXVsdHM9e3Nob3dPbjoiZm9jdXMiLHNob3dBbmltOiJmYWRlSW4iLHNob3dPcHRpb25zOnt9LGRlZmF1bHREYXRlOm51bGwsYXBwZW5kVGV4dDoiIixidXR0b25UZXh0OiIuLi4iLGJ1dHRvbkltYWdlOiIiLGJ1dHRvbkltYWdlT25seTohMSxoaWRlSWZOb1ByZXZOZXh0OiExLG5hdmlnYXRpb25Bc0RhdGVGb3JtYXQ6ITEsZ290b0N1cnJlbnQ6ITEsY2hhbmdlTW9udGg6ITEsY2hhbmdlWWVhcjohMSx5ZWFyUmFuZ2U6ImMtMTA6YysxMCIsc2hvd090aGVyTW9udGhzOiExLHNlbGVjdE90aGVyTW9udGhzOiExLHNob3dXZWVrOiExLGNhbGN1bGF0ZVdlZWs6dGhpcy5pc284NjAxV2VlayxzaG9ydFllYXJDdXRvZmY6IisxMCIsbWluRGF0ZTpudWxsLG1heERhdGU6bnVsbCxkdXJhdGlvbjoiZmFzdCIsYmVmb3JlU2hvd0RheTpudWxsLGJlZm9yZVNob3c6bnVsbCxvblNlbGVjdDpudWxsLG9uQ2hhbmdlTW9udGhZZWFyOm51bGwsb25DbG9zZTpudWxsLG51bWJlck9mTW9udGhzOjEsc2hvd0N1cnJlbnRBdFBvczowLHN0ZXBNb250aHM6MSxzdGVwQmlnTW9udGhzOjEyLGFsdEZpZWxkOiIiLGFsdEZvcm1hdDoiIixjb25zdHJhaW5JbnB1dDohMCxzaG93QnV0dG9uUGFuZWw6ITEsYXV0b1NpemU6ITEsZGlzYWJsZWQ6ITF9LCQuZXh0ZW5kKHRoaXMuX2RlZmF1bHRzLHRoaXMucmVnaW9uYWxbIiJdKSx0aGlzLmRwRGl2PWJpbmRIb3ZlcigkKCc8ZGl2IGlkPSInK3RoaXMuX21haW5EaXZJZCsnIiBjbGFzcz0idWktZGF0ZXBpY2tlciB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktaGVscGVyLWNsZWFyZml4IHVpLWNvcm5lci1hbGwiPjwvZGl2PicpKX1mdW5jdGlvbiBiaW5kSG92ZXIoZSl7dmFyIHQ9ImJ1dHRvbiwgLnVpLWRhdGVwaWNrZXItcHJldiwgLnVpLWRhdGVwaWNrZXItbmV4dCwgLnVpLWRhdGVwaWNrZXItY2FsZW5kYXIgdGQgYSI7cmV0dXJuIGUuZGVsZWdhdGUodCwibW91c2VvdXQiLGZ1bmN0aW9uKCl7JCh0aGlzKS5yZW1vdmVDbGFzcygidWktc3RhdGUtaG92ZXIiKSx0aGlzLmNsYXNzTmFtZS5pbmRleE9mKCJ1aS1kYXRlcGlja2VyLXByZXYiKSE9LTEmJiQodGhpcykucmVtb3ZlQ2xhc3MoInVpLWRhdGVwaWNrZXItcHJldi1ob3ZlciIpLHRoaXMuY2xhc3NOYW1lLmluZGV4T2YoInVpLWRhdGVwaWNrZXItbmV4dCIpIT0tMSYmJCh0aGlzKS5yZW1vdmVDbGFzcygidWktZGF0ZXBpY2tlci1uZXh0LWhvdmVyIil9KS5kZWxlZ2F0ZSh0LCJtb3VzZW92ZXIiLGZ1bmN0aW9uKCl7JC5kYXRlcGlja2VyLl9pc0Rpc2FibGVkRGF0ZXBpY2tlcihpbnN0QWN0aXZlLmlubGluZT9lLnBhcmVudCgpWzBdOmluc3RBY3RpdmUuaW5wdXRbMF0pfHwoJCh0aGlzKS5wYXJlbnRzKCIudWktZGF0ZXBpY2tlci1jYWxlbmRhciIpLmZpbmQoImEiKS5yZW1vdmVDbGFzcygidWktc3RhdGUtaG92ZXIiKSwkKHRoaXMpLmFkZENsYXNzKCJ1aS1zdGF0ZS1ob3ZlciIpLHRoaXMuY2xhc3NOYW1lLmluZGV4T2YoInVpLWRhdGVwaWNrZXItcHJldiIpIT0tMSYmJCh0aGlzKS5hZGRDbGFzcygidWktZGF0ZXBpY2tlci1wcmV2LWhvdmVyIiksdGhpcy5jbGFzc05hbWUuaW5kZXhPZigidWktZGF0ZXBpY2tlci1uZXh0IikhPS0xJiYkKHRoaXMpLmFkZENsYXNzKCJ1aS1kYXRlcGlja2VyLW5leHQtaG92ZXIiKSl9KX1mdW5jdGlvbiBleHRlbmRSZW1vdmUoZSx0KXskLmV4dGVuZChlLHQpO2Zvcih2YXIgbiBpbiB0KWlmKHRbbl09PW51bGx8fHRbbl09PXVuZGVmaW5lZCllW25dPXRbbl07cmV0dXJuIGV9JC5leHRlbmQoJC51aSx7ZGF0ZXBpY2tlcjp7dmVyc2lvbjoiMS45LjAifX0pO3ZhciBQUk9QX05BTUU9ImRhdGVwaWNrZXIiLGRwdXVpZD0obmV3IERhdGUpLmdldFRpbWUoKSxpbnN0QWN0aXZlOyQuZXh0ZW5kKERhdGVwaWNrZXIucHJvdG90eXBlLHttYXJrZXJDbGFzc05hbWU6Imhhc0RhdGVwaWNrZXIiLG1heFJvd3M6NCxsb2c6ZnVuY3Rpb24oKXt0aGlzLmRlYnVnJiZjb25zb2xlLmxvZy5hcHBseSgiIixhcmd1bWVudHMpfSxfd2lkZ2V0RGF0ZXBpY2tlcjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRwRGl2fSxzZXREZWZhdWx0czpmdW5jdGlvbihlKXtyZXR1cm4gZXh0ZW5kUmVtb3ZlKHRoaXMuX2RlZmF1bHRzLGV8fHt9KSx0aGlzfSxfYXR0YWNoRGF0ZXBpY2tlcjpmdW5jdGlvbih0YXJnZXQsc2V0dGluZ3Mpe3ZhciBpbmxpbmVTZXR0aW5ncz1udWxsO2Zvcih2YXIgYXR0ck5hbWUgaW4gdGhpcy5fZGVmYXVsdHMpe3ZhciBhdHRyVmFsdWU9dGFyZ2V0LmdldEF0dHJpYnV0ZSgiZGF0ZToiK2F0dHJOYW1lKTtpZihhdHRyVmFsdWUpe2lubGluZVNldHRpbmdzPWlubGluZVNldHRpbmdzfHx7fTt0cnl7aW5saW5lU2V0dGluZ3NbYXR0ck5hbWVdPWV2YWwoYXR0clZhbHVlKX1jYXRjaChlcnIpe2lubGluZVNldHRpbmdzW2F0dHJOYW1lXT1hdHRyVmFsdWV9fX12YXIgbm9kZU5hbWU9dGFyZ2V0Lm5vZGVOYW1lLnRvTG93ZXJDYXNlKCksaW5saW5lPW5vZGVOYW1lPT0iZGl2Inx8bm9kZU5hbWU9PSJzcGFuIjt0YXJnZXQuaWR8fCh0aGlzLnV1aWQrPTEsdGFyZ2V0LmlkPSJkcCIrdGhpcy51dWlkKTt2YXIgaW5zdD10aGlzLl9uZXdJbnN0KCQodGFyZ2V0KSxpbmxpbmUpO2luc3Quc2V0dGluZ3M9JC5leHRlbmQoe30sc2V0dGluZ3N8fHt9LGlubGluZVNldHRpbmdzfHx7fSksbm9kZU5hbWU9PSJpbnB1dCI/dGhpcy5fY29ubmVjdERhdGVwaWNrZXIodGFyZ2V0LGluc3QpOmlubGluZSYmdGhpcy5faW5saW5lRGF0ZXBpY2tlcih0YXJnZXQsaW5zdCl9LF9uZXdJbnN0OmZ1bmN0aW9uKGUsdCl7dmFyIG49ZVswXS5pZC5yZXBsYWNlKC8oW15BLVphLXowLTlfLV0pL2csIlxcXFwkMSIpO3JldHVybntpZDpuLGlucHV0OmUsc2VsZWN0ZWREYXk6MCxzZWxlY3RlZE1vbnRoOjAsc2VsZWN0ZWRZZWFyOjAsZHJhd01vbnRoOjAsZHJhd1llYXI6MCxpbmxpbmU6dCxkcERpdjp0P2JpbmRIb3ZlcigkKCc8ZGl2IGNsYXNzPSInK3RoaXMuX2lubGluZUNsYXNzKycgdWktZGF0ZXBpY2tlciB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktaGVscGVyLWNsZWFyZml4IHVpLWNvcm5lci1hbGwiPjwvZGl2PicpKTp0aGlzLmRwRGl2fX0sX2Nvbm5lY3REYXRlcGlja2VyOmZ1bmN0aW9uKGUsdCl7dmFyIG49JChlKTt0LmFwcGVuZD0kKFtdKSx0LnRyaWdnZXI9JChbXSk7aWYobi5oYXNDbGFzcyh0aGlzLm1hcmtlckNsYXNzTmFtZSkpcmV0dXJuO3RoaXMuX2F0dGFjaG1lbnRzKG4sdCksbi5hZGRDbGFzcyh0aGlzLm1hcmtlckNsYXNzTmFtZSkua2V5ZG93bih0aGlzLl9kb0tleURvd24pLmtleXByZXNzKHRoaXMuX2RvS2V5UHJlc3MpLmtleXVwKHRoaXMuX2RvS2V5VXApLmJpbmQoInNldERhdGEuZGF0ZXBpY2tlciIsZnVuY3Rpb24oZSxuLHIpe3Quc2V0dGluZ3Nbbl09cn0pLmJpbmQoImdldERhdGEuZGF0ZXBpY2tlciIsZnVuY3Rpb24oZSxuKXtyZXR1cm4gdGhpcy5fZ2V0KHQsbil9KSx0aGlzLl9hdXRvU2l6ZSh0KSwkLmRhdGEoZSxQUk9QX05BTUUsdCksdC5zZXR0aW5ncy5kaXNhYmxlZCYmdGhpcy5fZGlzYWJsZURhdGVwaWNrZXIoZSl9LF9hdHRhY2htZW50czpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX2dldCh0LCJhcHBlbmRUZXh0Iikscj10aGlzLl9nZXQodCwiaXNSVEwiKTt0LmFwcGVuZCYmdC5hcHBlbmQucmVtb3ZlKCksbiYmKHQuYXBwZW5kPSQoJzxzcGFuIGNsYXNzPSInK3RoaXMuX2FwcGVuZENsYXNzKyciPicrbisiPC9zcGFuPiIpLGVbcj8iYmVmb3JlIjoiYWZ0ZXIiXSh0LmFwcGVuZCkpLGUudW5iaW5kKCJmb2N1cyIsdGhpcy5fc2hvd0RhdGVwaWNrZXIpLHQudHJpZ2dlciYmdC50cmlnZ2VyLnJlbW92ZSgpO3ZhciBpPXRoaXMuX2dldCh0LCJzaG93T24iKTsoaT09ImZvY3VzInx8aT09ImJvdGgiKSYmZS5mb2N1cyh0aGlzLl9zaG93RGF0ZXBpY2tlcik7aWYoaT09ImJ1dHRvbiJ8fGk9PSJib3RoIil7dmFyIHM9dGhpcy5fZ2V0KHQsImJ1dHRvblRleHQiKSxvPXRoaXMuX2dldCh0LCJidXR0b25JbWFnZSIpO3QudHJpZ2dlcj0kKHRoaXMuX2dldCh0LCJidXR0b25JbWFnZU9ubHkiKT8kKCI8aW1nLz4iKS5hZGRDbGFzcyh0aGlzLl90cmlnZ2VyQ2xhc3MpLmF0dHIoe3NyYzpvLGFsdDpzLHRpdGxlOnN9KTokKCc8YnV0dG9uIHR5cGU9ImJ1dHRvbiI+PC9idXR0b24+JykuYWRkQ2xhc3ModGhpcy5fdHJpZ2dlckNsYXNzKS5odG1sKG89PSIiP3M6JCgiPGltZy8+IikuYXR0cih7c3JjOm8sYWx0OnMsdGl0bGU6c30pKSksZVtyPyJiZWZvcmUiOiJhZnRlciJdKHQudHJpZ2dlciksdC50cmlnZ2VyLmNsaWNrKGZ1bmN0aW9uKCl7cmV0dXJuICQuZGF0ZXBpY2tlci5fZGF0ZXBpY2tlclNob3dpbmcmJiQuZGF0ZXBpY2tlci5fbGFzdElucHV0PT1lWzBdPyQuZGF0ZXBpY2tlci5faGlkZURhdGVwaWNrZXIoKTokLmRhdGVwaWNrZXIuX2RhdGVwaWNrZXJTaG93aW5nJiYkLmRhdGVwaWNrZXIuX2xhc3RJbnB1dCE9ZVswXT8oJC5kYXRlcGlja2VyLl9oaWRlRGF0ZXBpY2tlcigpLCQuZGF0ZXBpY2tlci5fc2hvd0RhdGVwaWNrZXIoZVswXSkpOiQuZGF0ZXBpY2tlci5fc2hvd0RhdGVwaWNrZXIoZVswXSksITF9KX19LF9hdXRvU2l6ZTpmdW5jdGlvbihlKXtpZih0aGlzLl9nZXQoZSwiYXV0b1NpemUiKSYmIWUuaW5saW5lKXt2YXIgdD1uZXcgRGF0ZSgyMDA5LDExLDIwKSxuPXRoaXMuX2dldChlLCJkYXRlRm9ybWF0Iik7aWYobi5tYXRjaCgvW0RNXS8pKXt2YXIgcj1mdW5jdGlvbihlKXt2YXIgdD0wLG49MDtmb3IodmFyIHI9MDtyPGUubGVuZ3RoO3IrKyllW3JdLmxlbmd0aD50JiYodD1lW3JdLmxlbmd0aCxuPXIpO3JldHVybiBufTt0LnNldE1vbnRoKHIodGhpcy5fZ2V0KGUsbi5tYXRjaCgvTU0vKT8ibW9udGhOYW1lcyI6Im1vbnRoTmFtZXNTaG9ydCIpKSksdC5zZXREYXRlKHIodGhpcy5fZ2V0KGUsbi5tYXRjaCgvREQvKT8iZGF5TmFtZXMiOiJkYXlOYW1lc1Nob3J0IikpKzIwLXQuZ2V0RGF5KCkpfWUuaW5wdXQuYXR0cigic2l6ZSIsdGhpcy5fZm9ybWF0RGF0ZShlLHQpLmxlbmd0aCl9fSxfaW5saW5lRGF0ZXBpY2tlcjpmdW5jdGlvbihlLHQpe3ZhciBuPSQoZSk7aWYobi5oYXNDbGFzcyh0aGlzLm1hcmtlckNsYXNzTmFtZSkpcmV0dXJuO24uYWRkQ2xhc3ModGhpcy5tYXJrZXJDbGFzc05hbWUpLmFwcGVuZCh0LmRwRGl2KS5iaW5kKCJzZXREYXRhLmRhdGVwaWNrZXIiLGZ1bmN0aW9uKGUsbixyKXt0LnNldHRpbmdzW25dPXJ9KS5iaW5kKCJnZXREYXRhLmRhdGVwaWNrZXIiLGZ1bmN0aW9uKGUsbil7cmV0dXJuIHRoaXMuX2dldCh0LG4pfSksJC5kYXRhKGUsUFJPUF9OQU1FLHQpLHRoaXMuX3NldERhdGUodCx0aGlzLl9nZXREZWZhdWx0RGF0ZSh0KSwhMCksdGhpcy5fdXBkYXRlRGF0ZXBpY2tlcih0KSx0aGlzLl91cGRhdGVBbHRlcm5hdGUodCksdC5zZXR0aW5ncy5kaXNhYmxlZCYmdGhpcy5fZGlzYWJsZURhdGVwaWNrZXIoZSksdC5kcERpdi5jc3MoImRpc3BsYXkiLCJibG9jayIpfSxfZGlhbG9nRGF0ZXBpY2tlcjpmdW5jdGlvbihlLHQsbixyLGkpe3ZhciBzPXRoaXMuX2RpYWxvZ0luc3Q7aWYoIXMpe3RoaXMudXVpZCs9MTt2YXIgbz0iZHAiK3RoaXMudXVpZDt0aGlzLl9kaWFsb2dJbnB1dD0kKCc8aW5wdXQgdHlwZT0idGV4dCIgaWQ9IicrbysnIiBzdHlsZT0icG9zaXRpb246IGFic29sdXRlOyB0b3A6IC0xMDBweDsgd2lkdGg6IDBweDsiLz4nKSx0aGlzLl9kaWFsb2dJbnB1dC5rZXlkb3duKHRoaXMuX2RvS2V5RG93biksJCgiYm9keSIpLmFwcGVuZCh0aGlzLl9kaWFsb2dJbnB1dCkscz10aGlzLl9kaWFsb2dJbnN0PXRoaXMuX25ld0luc3QodGhpcy5fZGlhbG9nSW5wdXQsITEpLHMuc2V0dGluZ3M9e30sJC5kYXRhKHRoaXMuX2RpYWxvZ0lucHV0WzBdLFBST1BfTkFNRSxzKX1leHRlbmRSZW1vdmUocy5zZXR0aW5ncyxyfHx7fSksdD10JiZ0LmNvbnN0cnVjdG9yPT1EYXRlP3RoaXMuX2Zvcm1hdERhdGUocyx0KTp0LHRoaXMuX2RpYWxvZ0lucHV0LnZhbCh0KSx0aGlzLl9wb3M9aT9pLmxlbmd0aD9pOltpLnBhZ2VYLGkucGFnZVldOm51bGw7aWYoIXRoaXMuX3Bvcyl7dmFyIHU9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoLGE9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCxmPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxMZWZ0fHxkb2N1bWVudC5ib2R5LnNjcm9sbExlZnQsbD1kb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsVG9wfHxkb2N1bWVudC5ib2R5LnNjcm9sbFRvcDt0aGlzLl9wb3M9W3UvMi0xMDArZixhLzItMTUwK2xdfXJldHVybiB0aGlzLl9kaWFsb2dJbnB1dC5jc3MoImxlZnQiLHRoaXMuX3Bvc1swXSsyMCsicHgiKS5jc3MoInRvcCIsdGhpcy5fcG9zWzFdKyJweCIpLHMuc2V0dGluZ3Mub25TZWxlY3Q9bix0aGlzLl9pbkRpYWxvZz0hMCx0aGlzLmRwRGl2LmFkZENsYXNzKHRoaXMuX2RpYWxvZ0NsYXNzKSx0aGlzLl9zaG93RGF0ZXBpY2tlcih0aGlzLl9kaWFsb2dJbnB1dFswXSksJC5ibG9ja1VJJiYkLmJsb2NrVUkodGhpcy5kcERpdiksJC5kYXRhKHRoaXMuX2RpYWxvZ0lucHV0WzBdLFBST1BfTkFNRSxzKSx0aGlzfSxfZGVzdHJveURhdGVwaWNrZXI6ZnVuY3Rpb24oZSl7dmFyIHQ9JChlKSxuPSQuZGF0YShlLFBST1BfTkFNRSk7aWYoIXQuaGFzQ2xhc3ModGhpcy5tYXJrZXJDbGFzc05hbWUpKXJldHVybjt2YXIgcj1lLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7JC5yZW1vdmVEYXRhKGUsUFJPUF9OQU1FKSxyPT0iaW5wdXQiPyhuLmFwcGVuZC5yZW1vdmUoKSxuLnRyaWdnZXIucmVtb3ZlKCksdC5yZW1vdmVDbGFzcyh0aGlzLm1hcmtlckNsYXNzTmFtZSkudW5iaW5kKCJmb2N1cyIsdGhpcy5fc2hvd0RhdGVwaWNrZXIpLnVuYmluZCgia2V5ZG93biIsdGhpcy5fZG9LZXlEb3duKS51bmJpbmQoImtleXByZXNzIix0aGlzLl9kb0tleVByZXNzKS51bmJpbmQoImtleXVwIix0aGlzLl9kb0tleVVwKSk6KHI9PSJkaXYifHxyPT0ic3BhbiIpJiZ0LnJlbW92ZUNsYXNzKHRoaXMubWFya2VyQ2xhc3NOYW1lKS5lbXB0eSgpfSxfZW5hYmxlRGF0ZXBpY2tlcjpmdW5jdGlvbihlKXt2YXIgdD0kKGUpLG49JC5kYXRhKGUsUFJPUF9OQU1FKTtpZighdC5oYXNDbGFzcyh0aGlzLm1hcmtlckNsYXNzTmFtZSkpcmV0dXJuO3ZhciByPWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZihyPT0iaW5wdXQiKWUuZGlzYWJsZWQ9ITEsbi50cmlnZ2VyLmZpbHRlcigiYnV0dG9uIikuZWFjaChmdW5jdGlvbigpe3RoaXMuZGlzYWJsZWQ9ITF9KS5lbmQoKS5maWx0ZXIoImltZyIpLmNzcyh7b3BhY2l0eToiMS4wIixjdXJzb3I6IiJ9KTtlbHNlIGlmKHI9PSJkaXYifHxyPT0ic3BhbiIpe3ZhciBpPXQuY2hpbGRyZW4oIi4iK3RoaXMuX2lubGluZUNsYXNzKTtpLmNoaWxkcmVuKCkucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWRpc2FibGVkIiksaS5maW5kKCJzZWxlY3QudWktZGF0ZXBpY2tlci1tb250aCwgc2VsZWN0LnVpLWRhdGVwaWNrZXIteWVhciIpLnByb3AoImRpc2FibGVkIiwhMSl9dGhpcy5fZGlzYWJsZWRJbnB1dHM9JC5tYXAodGhpcy5fZGlzYWJsZWRJbnB1dHMsZnVuY3Rpb24odCl7cmV0dXJuIHQ9PWU/bnVsbDp0fSl9LF9kaXNhYmxlRGF0ZXBpY2tlcjpmdW5jdGlvbihlKXt2YXIgdD0kKGUpLG49JC5kYXRhKGUsUFJPUF9OQU1FKTtpZighdC5oYXNDbGFzcyh0aGlzLm1hcmtlckNsYXNzTmFtZSkpcmV0dXJuO3ZhciByPWUubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtpZihyPT0iaW5wdXQiKWUuZGlzYWJsZWQ9ITAsbi50cmlnZ2VyLmZpbHRlcigiYnV0dG9uIikuZWFjaChmdW5jdGlvbigpe3RoaXMuZGlzYWJsZWQ9ITB9KS5lbmQoKS5maWx0ZXIoImltZyIpLmNzcyh7b3BhY2l0eToiMC41IixjdXJzb3I6ImRlZmF1bHQifSk7ZWxzZSBpZihyPT0iZGl2Inx8cj09InNwYW4iKXt2YXIgaT10LmNoaWxkcmVuKCIuIit0aGlzLl9pbmxpbmVDbGFzcyk7aS5jaGlsZHJlbigpLmFkZENsYXNzKCJ1aS1zdGF0ZS1kaXNhYmxlZCIpLGkuZmluZCgic2VsZWN0LnVpLWRhdGVwaWNrZXItbW9udGgsIHNlbGVjdC51aS1kYXRlcGlja2VyLXllYXIiKS5wcm9wKCJkaXNhYmxlZCIsITApfXRoaXMuX2Rpc2FibGVkSW5wdXRzPSQubWFwKHRoaXMuX2Rpc2FibGVkSW5wdXRzLGZ1bmN0aW9uKHQpe3JldHVybiB0PT1lP251bGw6dH0pLHRoaXMuX2Rpc2FibGVkSW5wdXRzW3RoaXMuX2Rpc2FibGVkSW5wdXRzLmxlbmd0aF09ZX0sX2lzRGlzYWJsZWREYXRlcGlja2VyOmZ1bmN0aW9uKGUpe2lmKCFlKXJldHVybiExO2Zvcih2YXIgdD0wO3Q8dGhpcy5fZGlzYWJsZWRJbnB1dHMubGVuZ3RoO3QrKylpZih0aGlzLl9kaXNhYmxlZElucHV0c1t0XT09ZSlyZXR1cm4hMDtyZXR1cm4hMX0sX2dldEluc3Q6ZnVuY3Rpb24oZSl7dHJ5e3JldHVybiAkLmRhdGEoZSxQUk9QX05BTUUpfWNhdGNoKHQpe3Rocm93Ik1pc3NpbmcgaW5zdGFuY2UgZGF0YSBmb3IgdGhpcyBkYXRlcGlja2VyIn19LF9vcHRpb25EYXRlcGlja2VyOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9nZXRJbnN0KGUpO2lmKGFyZ3VtZW50cy5sZW5ndGg9PTImJnR5cGVvZiB0PT0ic3RyaW5nIilyZXR1cm4gdD09ImRlZmF1bHRzIj8kLmV4dGVuZCh7fSwkLmRhdGVwaWNrZXIuX2RlZmF1bHRzKTpyP3Q9PSJhbGwiPyQuZXh0ZW5kKHt9LHIuc2V0dGluZ3MpOnRoaXMuX2dldChyLHQpOm51bGw7dmFyIGk9dHx8e307dHlwZW9mIHQ9PSJzdHJpbmciJiYoaT17fSxpW3RdPW4pO2lmKHIpe3RoaXMuX2N1ckluc3Q9PXImJnRoaXMuX2hpZGVEYXRlcGlja2VyKCk7dmFyIHM9dGhpcy5fZ2V0RGF0ZURhdGVwaWNrZXIoZSwhMCksbz10aGlzLl9nZXRNaW5NYXhEYXRlKHIsIm1pbiIpLHU9dGhpcy5fZ2V0TWluTWF4RGF0ZShyLCJtYXgiKTtleHRlbmRSZW1vdmUoci5zZXR0aW5ncyxpKSxvIT09bnVsbCYmaS5kYXRlRm9ybWF0IT09dW5kZWZpbmVkJiZpLm1pbkRhdGU9PT11bmRlZmluZWQmJihyLnNldHRpbmdzLm1pbkRhdGU9dGhpcy5fZm9ybWF0RGF0ZShyLG8pKSx1IT09bnVsbCYmaS5kYXRlRm9ybWF0IT09dW5kZWZpbmVkJiZpLm1heERhdGU9PT11bmRlZmluZWQmJihyLnNldHRpbmdzLm1heERhdGU9dGhpcy5fZm9ybWF0RGF0ZShyLHUpKSx0aGlzLl9hdHRhY2htZW50cygkKGUpLHIpLHRoaXMuX2F1dG9TaXplKHIpLHRoaXMuX3NldERhdGUocixzKSx0aGlzLl91cGRhdGVBbHRlcm5hdGUociksdGhpcy5fdXBkYXRlRGF0ZXBpY2tlcihyKX19LF9jaGFuZ2VEYXRlcGlja2VyOmZ1bmN0aW9uKGUsdCxuKXt0aGlzLl9vcHRpb25EYXRlcGlja2VyKGUsdCxuKX0sX3JlZnJlc2hEYXRlcGlja2VyOmZ1bmN0aW9uKGUpe3ZhciB0PXRoaXMuX2dldEluc3QoZSk7dCYmdGhpcy5fdXBkYXRlRGF0ZXBpY2tlcih0KX0sX3NldERhdGVEYXRlcGlja2VyOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fZ2V0SW5zdChlKTtuJiYodGhpcy5fc2V0RGF0ZShuLHQpLHRoaXMuX3VwZGF0ZURhdGVwaWNrZXIobiksdGhpcy5fdXBkYXRlQWx0ZXJuYXRlKG4pKX0sX2dldERhdGVEYXRlcGlja2VyOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fZ2V0SW5zdChlKTtyZXR1cm4gbiYmIW4uaW5saW5lJiZ0aGlzLl9zZXREYXRlRnJvbUZpZWxkKG4sdCksbj90aGlzLl9nZXREYXRlKG4pOm51bGx9LF9kb0tleURvd246ZnVuY3Rpb24oZSl7dmFyIHQ9JC5kYXRlcGlja2VyLl9nZXRJbnN0KGUudGFyZ2V0KSxuPSEwLHI9dC5kcERpdi5pcygiLnVpLWRhdGVwaWNrZXItcnRsIik7dC5fa2V5RXZlbnQ9ITA7aWYoJC5kYXRlcGlja2VyLl9kYXRlcGlja2VyU2hvd2luZylzd2l0Y2goZS5rZXlDb2RlKXtjYXNlIDk6JC5kYXRlcGlja2VyLl9oaWRlRGF0ZXBpY2tlcigpLG49ITE7YnJlYWs7Y2FzZSAxMzp2YXIgaT0kKCJ0ZC4iKyQuZGF0ZXBpY2tlci5fZGF5T3ZlckNsYXNzKyI6bm90KC4iKyQuZGF0ZXBpY2tlci5fY3VycmVudENsYXNzKyIpIix0LmRwRGl2KTtpWzBdJiYkLmRhdGVwaWNrZXIuX3NlbGVjdERheShlLnRhcmdldCx0LnNlbGVjdGVkTW9udGgsdC5zZWxlY3RlZFllYXIsaVswXSk7dmFyIHM9JC5kYXRlcGlja2VyLl9nZXQodCwib25TZWxlY3QiKTtpZihzKXt2YXIgbz0kLmRhdGVwaWNrZXIuX2Zvcm1hdERhdGUodCk7cy5hcHBseSh0LmlucHV0P3QuaW5wdXRbMF06bnVsbCxbbyx0XSl9ZWxzZSAkLmRhdGVwaWNrZXIuX2hpZGVEYXRlcGlja2VyKCk7cmV0dXJuITE7Y2FzZSAyNzokLmRhdGVwaWNrZXIuX2hpZGVEYXRlcGlja2VyKCk7YnJlYWs7Y2FzZSAzMzokLmRhdGVwaWNrZXIuX2FkanVzdERhdGUoZS50YXJnZXQsZS5jdHJsS2V5Py0kLmRhdGVwaWNrZXIuX2dldCh0LCJzdGVwQmlnTW9udGhzIik6LSQuZGF0ZXBpY2tlci5fZ2V0KHQsInN0ZXBNb250aHMiKSwiTSIpO2JyZWFrO2Nhc2UgMzQ6JC5kYXRlcGlja2VyLl9hZGp1c3REYXRlKGUudGFyZ2V0LGUuY3RybEtleT8rJC5kYXRlcGlja2VyLl9nZXQodCwic3RlcEJpZ01vbnRocyIpOiskLmRhdGVwaWNrZXIuX2dldCh0LCJzdGVwTW9udGhzIiksIk0iKTticmVhaztjYXNlIDM1OihlLmN0cmxLZXl8fGUubWV0YUtleSkmJiQuZGF0ZXBpY2tlci5fY2xlYXJEYXRlKGUudGFyZ2V0KSxuPWUuY3RybEtleXx8ZS5tZXRhS2V5O2JyZWFrO2Nhc2UgMzY6KGUuY3RybEtleXx8ZS5tZXRhS2V5KSYmJC5kYXRlcGlja2VyLl9nb3RvVG9kYXkoZS50YXJnZXQpLG49ZS5jdHJsS2V5fHxlLm1ldGFLZXk7YnJlYWs7Y2FzZSAzNzooZS5jdHJsS2V5fHxlLm1ldGFLZXkpJiYkLmRhdGVwaWNrZXIuX2FkanVzdERhdGUoZS50YXJnZXQscj8xOi0xLCJEIiksbj1lLmN0cmxLZXl8fGUubWV0YUtleSxlLm9yaWdpbmFsRXZlbnQuYWx0S2V5JiYkLmRhdGVwaWNrZXIuX2FkanVzdERhdGUoZS50YXJnZXQsZS5jdHJsS2V5Py0kLmRhdGVwaWNrZXIuX2dldCh0LCJzdGVwQmlnTW9udGhzIik6LSQuZGF0ZXBpY2tlci5fZ2V0KHQsInN0ZXBNb250aHMiKSwiTSIpO2JyZWFrO2Nhc2UgMzg6KGUuY3RybEtleXx8ZS5tZXRhS2V5KSYmJC5kYXRlcGlja2VyLl9hZGp1c3REYXRlKGUudGFyZ2V0LC03LCJEIiksbj1lLmN0cmxLZXl8fGUubWV0YUtleTticmVhaztjYXNlIDM5OihlLmN0cmxLZXl8fGUubWV0YUtleSkmJiQuZGF0ZXBpY2tlci5fYWRqdXN0RGF0ZShlLnRhcmdldCxyPy0xOjEsIkQiKSxuPWUuY3RybEtleXx8ZS5tZXRhS2V5LGUub3JpZ2luYWxFdmVudC5hbHRLZXkmJiQuZGF0ZXBpY2tlci5fYWRqdXN0RGF0ZShlLnRhcmdldCxlLmN0cmxLZXk/KyQuZGF0ZXBpY2tlci5fZ2V0KHQsInN0ZXBCaWdNb250aHMiKTorJC5kYXRlcGlja2VyLl9nZXQodCwic3RlcE1vbnRocyIpLCJNIik7YnJlYWs7Y2FzZSA0MDooZS5jdHJsS2V5fHxlLm1ldGFLZXkpJiYkLmRhdGVwaWNrZXIuX2FkanVzdERhdGUoZS50YXJnZXQsNywiRCIpLG49ZS5jdHJsS2V5fHxlLm1ldGFLZXk7YnJlYWs7ZGVmYXVsdDpuPSExfWVsc2UgZS5rZXlDb2RlPT0zNiYmZS5jdHJsS2V5PyQuZGF0ZXBpY2tlci5fc2hvd0RhdGVwaWNrZXIodGhpcyk6bj0hMTtuJiYoZS5wcmV2ZW50RGVmYXVsdCgpLGUuc3RvcFByb3BhZ2F0aW9uKCkpfSxfZG9LZXlQcmVzczpmdW5jdGlvbihlKXt2YXIgdD0kLmRhdGVwaWNrZXIuX2dldEluc3QoZS50YXJnZXQpO2lmKCQuZGF0ZXBpY2tlci5fZ2V0KHQsImNvbnN0cmFpbklucHV0Iikpe3ZhciBuPSQuZGF0ZXBpY2tlci5fcG9zc2libGVDaGFycygkLmRhdGVwaWNrZXIuX2dldCh0LCJkYXRlRm9ybWF0IikpLHI9U3RyaW5nLmZyb21DaGFyQ29kZShlLmNoYXJDb2RlPT11bmRlZmluZWQ/ZS5rZXlDb2RlOmUuY2hhckNvZGUpO3JldHVybiBlLmN0cmxLZXl8fGUubWV0YUtleXx8cjwiICJ8fCFufHxuLmluZGV4T2Yocik+LTF9fSxfZG9LZXlVcDpmdW5jdGlvbihlKXt2YXIgdD0kLmRhdGVwaWNrZXIuX2dldEluc3QoZS50YXJnZXQpO2lmKHQuaW5wdXQudmFsKCkhPXQubGFzdFZhbCl0cnl7dmFyIG49JC5kYXRlcGlja2VyLnBhcnNlRGF0ZSgkLmRhdGVwaWNrZXIuX2dldCh0LCJkYXRlRm9ybWF0IiksdC5pbnB1dD90LmlucHV0LnZhbCgpOm51bGwsJC5kYXRlcGlja2VyLl9nZXRGb3JtYXRDb25maWcodCkpO24mJigkLmRhdGVwaWNrZXIuX3NldERhdGVGcm9tRmllbGQodCksJC5kYXRlcGlja2VyLl91cGRhdGVBbHRlcm5hdGUodCksJC5kYXRlcGlja2VyLl91cGRhdGVEYXRlcGlja2VyKHQpKX1jYXRjaChyKXskLmRhdGVwaWNrZXIubG9nKHIpfXJldHVybiEwfSxfc2hvd0RhdGVwaWNrZXI6ZnVuY3Rpb24oZSl7ZT1lLnRhcmdldHx8ZSxlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkhPSJpbnB1dCImJihlPSQoImlucHV0IixlLnBhcmVudE5vZGUpWzBdKTtpZigkLmRhdGVwaWNrZXIuX2lzRGlzYWJsZWREYXRlcGlja2VyKGUpfHwkLmRhdGVwaWNrZXIuX2xhc3RJbnB1dD09ZSlyZXR1cm47dmFyIHQ9JC5kYXRlcGlja2VyLl9nZXRJbnN0KGUpOyQuZGF0ZXBpY2tlci5fY3VySW5zdCYmJC5kYXRlcGlja2VyLl9jdXJJbnN0IT10JiYoJC5kYXRlcGlja2VyLl9jdXJJbnN0LmRwRGl2LnN0b3AoITAsITApLHQmJiQuZGF0ZXBpY2tlci5fZGF0ZXBpY2tlclNob3dpbmcmJiQuZGF0ZXBpY2tlci5faGlkZURhdGVwaWNrZXIoJC5kYXRlcGlja2VyLl9jdXJJbnN0LmlucHV0WzBdKSk7dmFyIG49JC5kYXRlcGlja2VyLl9nZXQodCwiYmVmb3JlU2hvdyIpLHI9bj9uLmFwcGx5KGUsW2UsdF0pOnt9O2lmKHI9PT0hMSlyZXR1cm47ZXh0ZW5kUmVtb3ZlKHQuc2V0dGluZ3MsciksdC5sYXN0VmFsPW51bGwsJC5kYXRlcGlja2VyLl9sYXN0SW5wdXQ9ZSwkLmRhdGVwaWNrZXIuX3NldERhdGVGcm9tRmllbGQodCksJC5kYXRlcGlja2VyLl9pbkRpYWxvZyYmKGUudmFsdWU9IiIpLCQuZGF0ZXBpY2tlci5fcG9zfHwoJC5kYXRlcGlja2VyLl9wb3M9JC5kYXRlcGlja2VyLl9maW5kUG9zKGUpLCQuZGF0ZXBpY2tlci5fcG9zWzFdKz1lLm9mZnNldEhlaWdodCk7dmFyIGk9ITE7JChlKS5wYXJlbnRzKCkuZWFjaChmdW5jdGlvbigpe3JldHVybiBpfD0kKHRoaXMpLmNzcygicG9zaXRpb24iKT09ImZpeGVkIiwhaX0pO3ZhciBzPXtsZWZ0OiQuZGF0ZXBpY2tlci5fcG9zWzBdLHRvcDokLmRhdGVwaWNrZXIuX3Bvc1sxXX07JC5kYXRlcGlja2VyLl9wb3M9bnVsbCx0LmRwRGl2LmVtcHR5KCksdC5kcERpdi5jc3Moe3Bvc2l0aW9uOiJhYnNvbHV0ZSIsZGlzcGxheToiYmxvY2siLHRvcDoiLTEwMDBweCJ9KSwkLmRhdGVwaWNrZXIuX3VwZGF0ZURhdGVwaWNrZXIodCkscz0kLmRhdGVwaWNrZXIuX2NoZWNrT2Zmc2V0KHQscyxpKSx0LmRwRGl2LmNzcyh7cG9zaXRpb246JC5kYXRlcGlja2VyLl9pbkRpYWxvZyYmJC5ibG9ja1VJPyJzdGF0aWMiOmk/ImZpeGVkIjoiYWJzb2x1dGUiLGRpc3BsYXk6Im5vbmUiLGxlZnQ6cy5sZWZ0KyJweCIsdG9wOnMudG9wKyJweCJ9KTtpZighdC5pbmxpbmUpe3ZhciBvPSQuZGF0ZXBpY2tlci5fZ2V0KHQsInNob3dBbmltIiksdT0kLmRhdGVwaWNrZXIuX2dldCh0LCJkdXJhdGlvbiIpLGE9ZnVuY3Rpb24oKXt2YXIgZT10LmRwRGl2LmZpbmQoImlmcmFtZS51aS1kYXRlcGlja2VyLWNvdmVyIik7aWYoISFlLmxlbmd0aCl7dmFyIG49JC5kYXRlcGlja2VyLl9nZXRCb3JkZXJzKHQuZHBEaXYpO2UuY3NzKHtsZWZ0Oi1uWzBdLHRvcDotblsxXSx3aWR0aDp0LmRwRGl2Lm91dGVyV2lkdGgoKSxoZWlnaHQ6dC5kcERpdi5vdXRlckhlaWdodCgpfSl9fTt0LmRwRGl2LnpJbmRleCgkKGUpLnpJbmRleCgpKzEpLCQuZGF0ZXBpY2tlci5fZGF0ZXBpY2tlclNob3dpbmc9ITAsJC5lZmZlY3RzJiYoJC5lZmZlY3RzLmVmZmVjdFtvXXx8JC5lZmZlY3RzW29dKT90LmRwRGl2LnNob3cobywkLmRhdGVwaWNrZXIuX2dldCh0LCJzaG93T3B0aW9ucyIpLHUsYSk6dC5kcERpdltvfHwic2hvdyJdKG8/dTpudWxsLGEpLCghb3x8IXUpJiZhKCksdC5pbnB1dC5pcygiOnZpc2libGUiKSYmIXQuaW5wdXQuaXMoIjpkaXNhYmxlZCIpJiZ0LmlucHV0LmZvY3VzKCksJC5kYXRlcGlja2VyLl9jdXJJbnN0PXR9fSxfdXBkYXRlRGF0ZXBpY2tlcjpmdW5jdGlvbihlKXt0aGlzLm1heFJvd3M9NDt2YXIgdD0kLmRhdGVwaWNrZXIuX2dldEJvcmRlcnMoZS5kcERpdik7aW5zdEFjdGl2ZT1lLGUuZHBEaXYuZW1wdHkoKS5hcHBlbmQodGhpcy5fZ2VuZXJhdGVIVE1MKGUpKSx0aGlzLl9hdHRhY2hIYW5kbGVycyhlKTt2YXIgbj1lLmRwRGl2LmZpbmQoImlmcmFtZS51aS1kYXRlcGlja2VyLWNvdmVyIik7IW4ubGVuZ3RofHxuLmNzcyh7bGVmdDotdFswXSx0b3A6LXRbMV0sd2lkdGg6ZS5kcERpdi5vdXRlcldpZHRoKCksaGVpZ2h0OmUuZHBEaXYub3V0ZXJIZWlnaHQoKX0pLGUuZHBEaXYuZmluZCgiLiIrdGhpcy5fZGF5T3ZlckNsYXNzKyIgYSIpLm1vdXNlb3ZlcigpO3ZhciByPXRoaXMuX2dldE51bWJlck9mTW9udGhzKGUpLGk9clsxXSxzPTE3O2UuZHBEaXYucmVtb3ZlQ2xhc3MoInVpLWRhdGVwaWNrZXItbXVsdGktMiB1aS1kYXRlcGlja2VyLW11bHRpLTMgdWktZGF0ZXBpY2tlci1tdWx0aS00Iikud2lkdGgoIiIpLGk+MSYmZS5kcERpdi5hZGRDbGFzcygidWktZGF0ZXBpY2tlci1tdWx0aS0iK2kpLmNzcygid2lkdGgiLHMqaSsiZW0iKSxlLmRwRGl2WyhyWzBdIT0xfHxyWzFdIT0xPyJhZGQiOiJyZW1vdmUiKSsiQ2xhc3MiXSgidWktZGF0ZXBpY2tlci1tdWx0aSIpLGUuZHBEaXZbKHRoaXMuX2dldChlLCJpc1JUTCIpPyJhZGQiOiJyZW1vdmUiKSsiQ2xhc3MiXSgidWktZGF0ZXBpY2tlci1ydGwiKSxlPT0kLmRhdGVwaWNrZXIuX2N1ckluc3QmJiQuZGF0ZXBpY2tlci5fZGF0ZXBpY2tlclNob3dpbmcmJmUuaW5wdXQmJmUuaW5wdXQuaXMoIjp2aXNpYmxlIikmJiFlLmlucHV0LmlzKCI6ZGlzYWJsZWQiKSYmZS5pbnB1dFswXSE9ZG9jdW1lbnQuYWN0aXZlRWxlbWVudCYmZS5pbnB1dC5mb2N1cygpO2lmKGUueWVhcnNodG1sKXt2YXIgbz1lLnllYXJzaHRtbDtzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7bz09PWUueWVhcnNodG1sJiZlLnllYXJzaHRtbCYmZS5kcERpdi5maW5kKCJzZWxlY3QudWktZGF0ZXBpY2tlci15ZWFyOmZpcnN0IikucmVwbGFjZVdpdGgoZS55ZWFyc2h0bWwpLG89ZS55ZWFyc2h0bWw9bnVsbH0sMCl9fSxfZ2V0Qm9yZGVyczpmdW5jdGlvbihlKXt2YXIgdD1mdW5jdGlvbihlKXtyZXR1cm57dGhpbjoxLG1lZGl1bToyLHRoaWNrOjN9W2VdfHxlfTtyZXR1cm5bcGFyc2VGbG9hdCh0KGUuY3NzKCJib3JkZXItbGVmdC13aWR0aCIpKSkscGFyc2VGbG9hdCh0KGUuY3NzKCJib3JkZXItdG9wLXdpZHRoIikpKV19LF9jaGVja09mZnNldDpmdW5jdGlvbihlLHQsbil7dmFyIHI9ZS5kcERpdi5vdXRlcldpZHRoKCksaT1lLmRwRGl2Lm91dGVySGVpZ2h0KCkscz1lLmlucHV0P2UuaW5wdXQub3V0ZXJXaWR0aCgpOjAsbz1lLmlucHV0P2UuaW5wdXQub3V0ZXJIZWlnaHQoKTowLHU9ZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoKyhuPzA6JChkb2N1bWVudCkuc2Nyb2xsTGVmdCgpKSxhPWRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQrKG4/MDokKGRvY3VtZW50KS5zY3JvbGxUb3AoKSk7cmV0dXJuIHQubGVmdC09dGhpcy5fZ2V0KGUsImlzUlRMIik/ci1zOjAsdC5sZWZ0LT1uJiZ0LmxlZnQ9PWUuaW5wdXQub2Zmc2V0KCkubGVmdD8kKGRvY3VtZW50KS5zY3JvbGxMZWZ0KCk6MCx0LnRvcC09biYmdC50b3A9PWUuaW5wdXQub2Zmc2V0KCkudG9wK28/JChkb2N1bWVudCkuc2Nyb2xsVG9wKCk6MCx0LmxlZnQtPU1hdGgubWluKHQubGVmdCx0LmxlZnQrcj51JiZ1PnI/TWF0aC5hYnModC5sZWZ0K3ItdSk6MCksdC50b3AtPU1hdGgubWluKHQudG9wLHQudG9wK2k+YSYmYT5pP01hdGguYWJzKGkrbyk6MCksdH0sX2ZpbmRQb3M6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fZ2V0SW5zdChlKSxuPXRoaXMuX2dldCh0LCJpc1JUTCIpO3doaWxlKGUmJihlLnR5cGU9PSJoaWRkZW4ifHxlLm5vZGVUeXBlIT0xfHwkLmV4cHIuZmlsdGVycy5oaWRkZW4oZSkpKWU9ZVtuPyJwcmV2aW91c1NpYmxpbmciOiJuZXh0U2libGluZyJdO3ZhciByPSQoZSkub2Zmc2V0KCk7cmV0dXJuW3IubGVmdCxyLnRvcF19LF9oaWRlRGF0ZXBpY2tlcjpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9jdXJJbnN0O2lmKCF0fHxlJiZ0IT0kLmRhdGEoZSxQUk9QX05BTUUpKXJldHVybjtpZih0aGlzLl9kYXRlcGlja2VyU2hvd2luZyl7dmFyIG49dGhpcy5fZ2V0KHQsInNob3dBbmltIikscj10aGlzLl9nZXQodCwiZHVyYXRpb24iKSxpPWZ1bmN0aW9uKCl7JC5kYXRlcGlja2VyLl90aWR5RGlhbG9nKHQpfTskLmVmZmVjdHMmJigkLmVmZmVjdHMuZWZmZWN0W25dfHwkLmVmZmVjdHNbbl0pP3QuZHBEaXYuaGlkZShuLCQuZGF0ZXBpY2tlci5fZ2V0KHQsInNob3dPcHRpb25zIikscixpKTp0LmRwRGl2W249PSJzbGlkZURvd24iPyJzbGlkZVVwIjpuPT0iZmFkZUluIj8iZmFkZU91dCI6ImhpZGUiXShuP3I6bnVsbCxpKSxufHxpKCksdGhpcy5fZGF0ZXBpY2tlclNob3dpbmc9ITE7dmFyIHM9dGhpcy5fZ2V0KHQsIm9uQ2xvc2UiKTtzJiZzLmFwcGx5KHQuaW5wdXQ/dC5pbnB1dFswXTpudWxsLFt0LmlucHV0P3QuaW5wdXQudmFsKCk6IiIsdF0pLHRoaXMuX2xhc3RJbnB1dD1udWxsLHRoaXMuX2luRGlhbG9nJiYodGhpcy5fZGlhbG9nSW5wdXQuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLGxlZnQ6IjAiLHRvcDoiLTEwMHB4In0pLCQuYmxvY2tVSSYmKCQudW5ibG9ja1VJKCksJCgiYm9keSIpLmFwcGVuZCh0aGlzLmRwRGl2KSkpLHRoaXMuX2luRGlhbG9nPSExfX0sX3RpZHlEaWFsb2c6ZnVuY3Rpb24oZSl7ZS5kcERpdi5yZW1vdmVDbGFzcyh0aGlzLl9kaWFsb2dDbGFzcykudW5iaW5kKCIudWktZGF0ZXBpY2tlci1jYWxlbmRhciIpfSxfY2hlY2tFeHRlcm5hbENsaWNrOmZ1bmN0aW9uKGUpe2lmKCEkLmRhdGVwaWNrZXIuX2N1ckluc3QpcmV0dXJuO3ZhciB0PSQoZS50YXJnZXQpLG49JC5kYXRlcGlja2VyLl9nZXRJbnN0KHRbMF0pOyh0WzBdLmlkIT0kLmRhdGVwaWNrZXIuX21haW5EaXZJZCYmdC5wYXJlbnRzKCIjIiskLmRhdGVwaWNrZXIuX21haW5EaXZJZCkubGVuZ3RoPT0wJiYhdC5oYXNDbGFzcygkLmRhdGVwaWNrZXIubWFya2VyQ2xhc3NOYW1lKSYmIXQuY2xvc2VzdCgiLiIrJC5kYXRlcGlja2VyLl90cmlnZ2VyQ2xhc3MpLmxlbmd0aCYmJC5kYXRlcGlja2VyLl9kYXRlcGlja2VyU2hvd2luZyYmKCEkLmRhdGVwaWNrZXIuX2luRGlhbG9nfHwhJC5ibG9ja1VJKXx8dC5oYXNDbGFzcygkLmRhdGVwaWNrZXIubWFya2VyQ2xhc3NOYW1lKSYmJC5kYXRlcGlja2VyLl9jdXJJbnN0IT1uKSYmJC5kYXRlcGlja2VyLl9oaWRlRGF0ZXBpY2tlcigpfSxfYWRqdXN0RGF0ZTpmdW5jdGlvbihlLHQsbil7dmFyIHI9JChlKSxpPXRoaXMuX2dldEluc3QoclswXSk7aWYodGhpcy5faXNEaXNhYmxlZERhdGVwaWNrZXIoclswXSkpcmV0dXJuO3RoaXMuX2FkanVzdEluc3REYXRlKGksdCsobj09Ik0iP3RoaXMuX2dldChpLCJzaG93Q3VycmVudEF0UG9zIik6MCksbiksdGhpcy5fdXBkYXRlRGF0ZXBpY2tlcihpKX0sX2dvdG9Ub2RheTpmdW5jdGlvbihlKXt2YXIgdD0kKGUpLG49dGhpcy5fZ2V0SW5zdCh0WzBdKTtpZih0aGlzLl9nZXQobiwiZ290b0N1cnJlbnQiKSYmbi5jdXJyZW50RGF5KW4uc2VsZWN0ZWREYXk9bi5jdXJyZW50RGF5LG4uZHJhd01vbnRoPW4uc2VsZWN0ZWRNb250aD1uLmN1cnJlbnRNb250aCxuLmRyYXdZZWFyPW4uc2VsZWN0ZWRZZWFyPW4uY3VycmVudFllYXI7ZWxzZXt2YXIgcj1uZXcgRGF0ZTtuLnNlbGVjdGVkRGF5PXIuZ2V0RGF0ZSgpLG4uZHJhd01vbnRoPW4uc2VsZWN0ZWRNb250aD1yLmdldE1vbnRoKCksbi5kcmF3WWVhcj1uLnNlbGVjdGVkWWVhcj1yLmdldEZ1bGxZZWFyKCl9dGhpcy5fbm90aWZ5Q2hhbmdlKG4pLHRoaXMuX2FkanVzdERhdGUodCl9LF9zZWxlY3RNb250aFllYXI6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPSQoZSksaT10aGlzLl9nZXRJbnN0KHJbMF0pO2lbInNlbGVjdGVkIisobj09Ik0iPyJNb250aCI6IlllYXIiKV09aVsiZHJhdyIrKG49PSJNIj8iTW9udGgiOiJZZWFyIildPXBhcnNlSW50KHQub3B0aW9uc1t0LnNlbGVjdGVkSW5kZXhdLnZhbHVlLDEwKSx0aGlzLl9ub3RpZnlDaGFuZ2UoaSksdGhpcy5fYWRqdXN0RGF0ZShyKX0sX3NlbGVjdERheTpmdW5jdGlvbihlLHQsbixyKXt2YXIgaT0kKGUpO2lmKCQocikuaGFzQ2xhc3ModGhpcy5fdW5zZWxlY3RhYmxlQ2xhc3MpfHx0aGlzLl9pc0Rpc2FibGVkRGF0ZXBpY2tlcihpWzBdKSlyZXR1cm47dmFyIHM9dGhpcy5fZ2V0SW5zdChpWzBdKTtzLnNlbGVjdGVkRGF5PXMuY3VycmVudERheT0kKCJhIixyKS5odG1sKCkscy5zZWxlY3RlZE1vbnRoPXMuY3VycmVudE1vbnRoPXQscy5zZWxlY3RlZFllYXI9cy5jdXJyZW50WWVhcj1uLHRoaXMuX3NlbGVjdERhdGUoZSx0aGlzLl9mb3JtYXREYXRlKHMscy5jdXJyZW50RGF5LHMuY3VycmVudE1vbnRoLHMuY3VycmVudFllYXIpKX0sX2NsZWFyRGF0ZTpmdW5jdGlvbihlKXt2YXIgdD0kKGUpLG49dGhpcy5fZ2V0SW5zdCh0WzBdKTt0aGlzLl9zZWxlY3REYXRlKHQsIiIpfSxfc2VsZWN0RGF0ZTpmdW5jdGlvbihlLHQpe3ZhciBuPSQoZSkscj10aGlzLl9nZXRJbnN0KG5bMF0pO3Q9dCE9bnVsbD90OnRoaXMuX2Zvcm1hdERhdGUociksci5pbnB1dCYmci5pbnB1dC52YWwodCksdGhpcy5fdXBkYXRlQWx0ZXJuYXRlKHIpO3ZhciBpPXRoaXMuX2dldChyLCJvblNlbGVjdCIpO2k/aS5hcHBseShyLmlucHV0P3IuaW5wdXRbMF06bnVsbCxbdCxyXSk6ci5pbnB1dCYmci5pbnB1dC50cmlnZ2VyKCJjaGFuZ2UiKSxyLmlubGluZT90aGlzLl91cGRhdGVEYXRlcGlja2VyKHIpOih0aGlzLl9oaWRlRGF0ZXBpY2tlcigpLHRoaXMuX2xhc3RJbnB1dD1yLmlucHV0WzBdLHR5cGVvZiByLmlucHV0WzBdIT0ib2JqZWN0IiYmci5pbnB1dC5mb2N1cygpLHRoaXMuX2xhc3RJbnB1dD1udWxsKX0sX3VwZGF0ZUFsdGVybmF0ZTpmdW5jdGlvbihlKXt2YXIgdD10aGlzLl9nZXQoZSwiYWx0RmllbGQiKTtpZih0KXt2YXIgbj10aGlzLl9nZXQoZSwiYWx0Rm9ybWF0Iil8fHRoaXMuX2dldChlLCJkYXRlRm9ybWF0Iikscj10aGlzLl9nZXREYXRlKGUpLGk9dGhpcy5mb3JtYXREYXRlKG4scix0aGlzLl9nZXRGb3JtYXRDb25maWcoZSkpOyQodCkuZWFjaChmdW5jdGlvbigpeyQodGhpcykudmFsKGkpfSl9fSxub1dlZWtlbmRzOmZ1bmN0aW9uKGUpe3ZhciB0PWUuZ2V0RGF5KCk7cmV0dXJuW3Q+MCYmdDw2LCIiXX0saXNvODYwMVdlZWs6ZnVuY3Rpb24oZSl7dmFyIHQ9bmV3IERhdGUoZS5nZXRUaW1lKCkpO3Quc2V0RGF0ZSh0LmdldERhdGUoKSs0LSh0LmdldERheSgpfHw3KSk7dmFyIG49dC5nZXRUaW1lKCk7cmV0dXJuIHQuc2V0TW9udGgoMCksdC5zZXREYXRlKDEpLE1hdGguZmxvb3IoTWF0aC5yb3VuZCgobi10KS84NjRlNSkvNykrMX0scGFyc2VEYXRlOmZ1bmN0aW9uKGUsdCxuKXtpZihlPT1udWxsfHx0PT1udWxsKXRocm93IkludmFsaWQgYXJndW1lbnRzIjt0PXR5cGVvZiB0PT0ib2JqZWN0Ij90LnRvU3RyaW5nKCk6dCsiIjtpZih0PT0iIilyZXR1cm4gbnVsbDt2YXIgcj0obj9uLnNob3J0WWVhckN1dG9mZjpudWxsKXx8dGhpcy5fZGVmYXVsdHMuc2hvcnRZZWFyQ3V0b2ZmO3I9dHlwZW9mIHIhPSJzdHJpbmciP3I6KG5ldyBEYXRlKS5nZXRGdWxsWWVhcigpJTEwMCtwYXJzZUludChyLDEwKTt2YXIgaT0obj9uLmRheU5hbWVzU2hvcnQ6bnVsbCl8fHRoaXMuX2RlZmF1bHRzLmRheU5hbWVzU2hvcnQscz0obj9uLmRheU5hbWVzOm51bGwpfHx0aGlzLl9kZWZhdWx0cy5kYXlOYW1lcyxvPShuP24ubW9udGhOYW1lc1Nob3J0Om51bGwpfHx0aGlzLl9kZWZhdWx0cy5tb250aE5hbWVzU2hvcnQsdT0obj9uLm1vbnRoTmFtZXM6bnVsbCl8fHRoaXMuX2RlZmF1bHRzLm1vbnRoTmFtZXMsYT0tMSxmPS0xLGw9LTEsYz0tMSxoPSExLHA9ZnVuY3Rpb24odCl7dmFyIG49eSsxPGUubGVuZ3RoJiZlLmNoYXJBdCh5KzEpPT10O3JldHVybiBuJiZ5Kyssbn0sZD1mdW5jdGlvbihlKXt2YXIgbj1wKGUpLHI9ZT09IkAiPzE0OmU9PSIhIj8yMDplPT0ieSImJm4/NDplPT0ibyI/MzoyLGk9bmV3IFJlZ0V4cCgiXlxcZHsxLCIrcisifSIpLHM9dC5zdWJzdHJpbmcoZykubWF0Y2goaSk7aWYoIXMpdGhyb3ciTWlzc2luZyBudW1iZXIgYXQgcG9zaXRpb24gIitnO3JldHVybiBnKz1zWzBdLmxlbmd0aCxwYXJzZUludChzWzBdLDEwKX0sdj1mdW5jdGlvbihlLG4scil7dmFyIGk9JC5tYXAocChlKT9yOm4sZnVuY3Rpb24oZSx0KXtyZXR1cm5bW3QsZV1dfSkuc29ydChmdW5jdGlvbihlLHQpe3JldHVybi0oZVsxXS5sZW5ndGgtdFsxXS5sZW5ndGgpfSkscz0tMTskLmVhY2goaSxmdW5jdGlvbihlLG4pe3ZhciByPW5bMV07aWYodC5zdWJzdHIoZyxyLmxlbmd0aCkudG9Mb3dlckNhc2UoKT09ci50b0xvd2VyQ2FzZSgpKXJldHVybiBzPW5bMF0sZys9ci5sZW5ndGgsITF9KTtpZihzIT0tMSlyZXR1cm4gcysxO3Rocm93IlVua25vd24gbmFtZSBhdCBwb3NpdGlvbiAiK2d9LG09ZnVuY3Rpb24oKXtpZih0LmNoYXJBdChnKSE9ZS5jaGFyQXQoeSkpdGhyb3ciVW5leHBlY3RlZCBsaXRlcmFsIGF0IHBvc2l0aW9uICIrZztnKyt9LGc9MDtmb3IodmFyIHk9MDt5PGUubGVuZ3RoO3krKylpZihoKWUuY2hhckF0KHkpPT0iJyImJiFwKCInIik/aD0hMTptKCk7ZWxzZSBzd2l0Y2goZS5jaGFyQXQoeSkpe2Nhc2UiZCI6bD1kKCJkIik7YnJlYWs7Y2FzZSJEIjp2KCJEIixpLHMpO2JyZWFrO2Nhc2UibyI6Yz1kKCJvIik7YnJlYWs7Y2FzZSJtIjpmPWQoIm0iKTticmVhaztjYXNlIk0iOmY9digiTSIsbyx1KTticmVhaztjYXNlInkiOmE9ZCgieSIpO2JyZWFrO2Nhc2UiQCI6dmFyIGI9bmV3IERhdGUoZCgiQCIpKTthPWIuZ2V0RnVsbFllYXIoKSxmPWIuZ2V0TW9udGgoKSsxLGw9Yi5nZXREYXRlKCk7YnJlYWs7Y2FzZSIhIjp2YXIgYj1uZXcgRGF0ZSgoZCgiISIpLXRoaXMuX3RpY2tzVG8xOTcwKS8xZTQpO2E9Yi5nZXRGdWxsWWVhcigpLGY9Yi5nZXRNb250aCgpKzEsbD1iLmdldERhdGUoKTticmVhaztjYXNlIiciOnAoIiciKT9tKCk6aD0hMDticmVhaztkZWZhdWx0Om0oKX1pZihnPHQubGVuZ3RoKXt2YXIgdz10LnN1YnN0cihnKTtpZighL15ccysvLnRlc3QodykpdGhyb3ciRXh0cmEvdW5wYXJzZWQgY2hhcmFjdGVycyBmb3VuZCBpbiBkYXRlOiAiK3d9YT09LTE/YT0obmV3IERhdGUpLmdldEZ1bGxZZWFyKCk6YTwxMDAmJihhKz0obmV3IERhdGUpLmdldEZ1bGxZZWFyKCktKG5ldyBEYXRlKS5nZXRGdWxsWWVhcigpJTEwMCsoYTw9cj8wOi0xMDApKTtpZihjPi0xKXtmPTEsbD1jO2Rve3ZhciBFPXRoaXMuX2dldERheXNJbk1vbnRoKGEsZi0xKTtpZihsPD1FKWJyZWFrO2YrKyxsLT1FfXdoaWxlKCEwKX12YXIgYj10aGlzLl9kYXlsaWdodFNhdmluZ0FkanVzdChuZXcgRGF0ZShhLGYtMSxsKSk7aWYoYi5nZXRGdWxsWWVhcigpIT1hfHxiLmdldE1vbnRoKCkrMSE9Znx8Yi5nZXREYXRlKCkhPWwpdGhyb3ciSW52YWxpZCBkYXRlIjtyZXR1cm4gYn0sQVRPTToieXktbW0tZGQiLENPT0tJRToiRCwgZGQgTSB5eSIsSVNPXzg2MDE6Inl5LW1tLWRkIixSRkNfODIyOiJELCBkIE0geSIsUkZDXzg1MDoiREQsIGRkLU0teSIsUkZDXzEwMzY6IkQsIGQgTSB5IixSRkNfMTEyMzoiRCwgZCBNIHl5IixSRkNfMjgyMjoiRCwgZCBNIHl5IixSU1M6IkQsIGQgTSB5IixUSUNLUzoiISIsVElNRVNUQU1QOiJAIixXM0M6Inl5LW1tLWRkIixfdGlja3NUbzE5NzA6KDcxODY4NStNYXRoLmZsb29yKDQ5Mi41KS1NYXRoLmZsb29yKDE5LjcpK01hdGguZmxvb3IoNC45MjUpKSoyNCo2MCo2MCoxZTcsZm9ybWF0RGF0ZTpmdW5jdGlvbihlLHQsbil7aWYoIXQpcmV0dXJuIiI7dmFyIHI9KG4/bi5kYXlOYW1lc1Nob3J0Om51bGwpfHx0aGlzLl9kZWZhdWx0cy5kYXlOYW1lc1Nob3J0LGk9KG4/bi5kYXlOYW1lczpudWxsKXx8dGhpcy5fZGVmYXVsdHMuZGF5TmFtZXMscz0obj9uLm1vbnRoTmFtZXNTaG9ydDpudWxsKXx8dGhpcy5fZGVmYXVsdHMubW9udGhOYW1lc1Nob3J0LG89KG4/bi5tb250aE5hbWVzOm51bGwpfHx0aGlzLl9kZWZhdWx0cy5tb250aE5hbWVzLHU9ZnVuY3Rpb24odCl7dmFyIG49aCsxPGUubGVuZ3RoJiZlLmNoYXJBdChoKzEpPT10O3JldHVybiBuJiZoKyssbn0sYT1mdW5jdGlvbihlLHQsbil7dmFyIHI9IiIrdDtpZih1KGUpKXdoaWxlKHIubGVuZ3RoPG4pcj0iMCIrcjtyZXR1cm4gcn0sZj1mdW5jdGlvbihlLHQsbixyKXtyZXR1cm4gdShlKT9yW3RdOm5bdF19LGw9IiIsYz0hMTtpZih0KWZvcih2YXIgaD0wO2g8ZS5sZW5ndGg7aCsrKWlmKGMpZS5jaGFyQXQoaCk9PSInIiYmIXUoIiciKT9jPSExOmwrPWUuY2hhckF0KGgpO2Vsc2Ugc3dpdGNoKGUuY2hhckF0KGgpKXtjYXNlImQiOmwrPWEoImQiLHQuZ2V0RGF0ZSgpLDIpO2JyZWFrO2Nhc2UiRCI6bCs9ZigiRCIsdC5nZXREYXkoKSxyLGkpO2JyZWFrO2Nhc2UibyI6bCs9YSgibyIsTWF0aC5yb3VuZCgoKG5ldyBEYXRlKHQuZ2V0RnVsbFllYXIoKSx0LmdldE1vbnRoKCksdC5nZXREYXRlKCkpKS5nZXRUaW1lKCktKG5ldyBEYXRlKHQuZ2V0RnVsbFllYXIoKSwwLDApKS5nZXRUaW1lKCkpLzg2NGU1KSwzKTticmVhaztjYXNlIm0iOmwrPWEoIm0iLHQuZ2V0TW9udGgoKSsxLDIpO2JyZWFrO2Nhc2UiTSI6bCs9ZigiTSIsdC5nZXRNb250aCgpLHMsbyk7YnJlYWs7Y2FzZSJ5IjpsKz11KCJ5Iik/dC5nZXRGdWxsWWVhcigpOih0LmdldFllYXIoKSUxMDA8MTA/IjAiOiIiKSt0LmdldFllYXIoKSUxMDA7YnJlYWs7Y2FzZSJAIjpsKz10LmdldFRpbWUoKTticmVhaztjYXNlIiEiOmwrPXQuZ2V0VGltZSgpKjFlNCt0aGlzLl90aWNrc1RvMTk3MDticmVhaztjYXNlIiciOnUoIiciKT9sKz0iJyI6Yz0hMDticmVhaztkZWZhdWx0OmwrPWUuY2hhckF0KGgpfXJldHVybiBsfSxfcG9zc2libGVDaGFyczpmdW5jdGlvbihlKXt2YXIgdD0iIixuPSExLHI9ZnVuY3Rpb24odCl7dmFyIG49aSsxPGUubGVuZ3RoJiZlLmNoYXJBdChpKzEpPT10O3JldHVybiBuJiZpKyssbn07Zm9yKHZhciBpPTA7aTxlLmxlbmd0aDtpKyspaWYobillLmNoYXJBdChpKT09IiciJiYhcigiJyIpP249ITE6dCs9ZS5jaGFyQXQoaSk7ZWxzZSBzd2l0Y2goZS5jaGFyQXQoaSkpe2Nhc2UiZCI6Y2FzZSJtIjpjYXNlInkiOmNhc2UiQCI6dCs9IjAxMjM0NTY3ODkiO2JyZWFrO2Nhc2UiRCI6Y2FzZSJNIjpyZXR1cm4gbnVsbDtjYXNlIiciOnIoIiciKT90Kz0iJyI6bj0hMDticmVhaztkZWZhdWx0OnQrPWUuY2hhckF0KGkpfXJldHVybiB0fSxfZ2V0OmZ1bmN0aW9uKGUsdCl7cmV0dXJuIGUuc2V0dGluZ3NbdF0hPT11bmRlZmluZWQ/ZS5zZXR0aW5nc1t0XTp0aGlzLl9kZWZhdWx0c1t0XX0sX3NldERhdGVGcm9tRmllbGQ6ZnVuY3Rpb24oZSx0KXtpZihlLmlucHV0LnZhbCgpPT1lLmxhc3RWYWwpcmV0dXJuO3ZhciBuPXRoaXMuX2dldChlLCJkYXRlRm9ybWF0Iikscj1lLmxhc3RWYWw9ZS5pbnB1dD9lLmlucHV0LnZhbCgpOm51bGwsaSxzO2k9cz10aGlzLl9nZXREZWZhdWx0RGF0ZShlKTt2YXIgbz10aGlzLl9nZXRGb3JtYXRDb25maWcoZSk7dHJ5e2k9dGhpcy5wYXJzZURhdGUobixyLG8pfHxzfWNhdGNoKHUpe3RoaXMubG9nKHUpLHI9dD8iIjpyfWUuc2VsZWN0ZWREYXk9aS5nZXREYXRlKCksZS5kcmF3TW9udGg9ZS5zZWxlY3RlZE1vbnRoPWkuZ2V0TW9udGgoKSxlLmRyYXdZZWFyPWUuc2VsZWN0ZWRZZWFyPWkuZ2V0RnVsbFllYXIoKSxlLmN1cnJlbnREYXk9cj9pLmdldERhdGUoKTowLGUuY3VycmVudE1vbnRoPXI/aS5nZXRNb250aCgpOjAsZS5jdXJyZW50WWVhcj1yP2kuZ2V0RnVsbFllYXIoKTowLHRoaXMuX2FkanVzdEluc3REYXRlKGUpfSxfZ2V0RGVmYXVsdERhdGU6ZnVuY3Rpb24oZSl7cmV0dXJuIHRoaXMuX3Jlc3RyaWN0TWluTWF4KGUsdGhpcy5fZGV0ZXJtaW5lRGF0ZShlLHRoaXMuX2dldChlLCJkZWZhdWx0RGF0ZSIpLG5ldyBEYXRlKSl9LF9kZXRlcm1pbmVEYXRlOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj1mdW5jdGlvbihlKXt2YXIgdD1uZXcgRGF0ZTtyZXR1cm4gdC5zZXREYXRlKHQuZ2V0RGF0ZSgpK2UpLHR9LGk9ZnVuY3Rpb24odCl7dHJ5e3JldHVybiAkLmRhdGVwaWNrZXIucGFyc2VEYXRlKCQuZGF0ZXBpY2tlci5fZ2V0KGUsImRhdGVGb3JtYXQiKSx0LCQuZGF0ZXBpY2tlci5fZ2V0Rm9ybWF0Q29uZmlnKGUpKX1jYXRjaChuKXt9dmFyIHI9KHQudG9Mb3dlckNhc2UoKS5tYXRjaCgvXmMvKT8kLmRhdGVwaWNrZXIuX2dldERhdGUoZSk6bnVsbCl8fG5ldyBEYXRlLGk9ci5nZXRGdWxsWWVhcigpLHM9ci5nZXRNb250aCgpLG89ci5nZXREYXRlKCksdT0vKFsrLV0/WzAtOV0rKVxzKihkfER8d3xXfG18TXx5fFkpPy9nLGE9dS5leGVjKHQpO3doaWxlKGEpe3N3aXRjaChhWzJdfHwiZCIpe2Nhc2UiZCI6Y2FzZSJEIjpvKz1wYXJzZUludChhWzFdLDEwKTticmVhaztjYXNlInciOmNhc2UiVyI6bys9cGFyc2VJbnQoYVsxXSwxMCkqNzticmVhaztjYXNlIm0iOmNhc2UiTSI6cys9cGFyc2VJbnQoYVsxXSwxMCksbz1NYXRoLm1pbihvLCQuZGF0ZXBpY2tlci5fZ2V0RGF5c0luTW9udGgoaSxzKSk7YnJlYWs7Y2FzZSJ5IjpjYXNlIlkiOmkrPXBhcnNlSW50KGFbMV0sMTApLG89TWF0aC5taW4obywkLmRhdGVwaWNrZXIuX2dldERheXNJbk1vbnRoKGkscykpfWE9dS5leGVjKHQpfXJldHVybiBuZXcgRGF0ZShpLHMsbyl9LHM9dD09bnVsbHx8dD09PSIiP246dHlwZW9mIHQ9PSJzdHJpbmciP2kodCk6dHlwZW9mIHQ9PSJudW1iZXIiP2lzTmFOKHQpP246cih0KTpuZXcgRGF0ZSh0LmdldFRpbWUoKSk7cmV0dXJuIHM9cyYmcy50b1N0cmluZygpPT0iSW52YWxpZCBEYXRlIj9uOnMscyYmKHMuc2V0SG91cnMoMCkscy5zZXRNaW51dGVzKDApLHMuc2V0U2Vjb25kcygwKSxzLnNldE1pbGxpc2Vjb25kcygwKSksdGhpcy5fZGF5bGlnaHRTYXZpbmdBZGp1c3Qocyl9LF9kYXlsaWdodFNhdmluZ0FkanVzdDpmdW5jdGlvbihlKXtyZXR1cm4gZT8oZS5zZXRIb3VycyhlLmdldEhvdXJzKCk+MTI/ZS5nZXRIb3VycygpKzI6MCksZSk6bnVsbH0sX3NldERhdGU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPSF0LGk9ZS5zZWxlY3RlZE1vbnRoLHM9ZS5zZWxlY3RlZFllYXIsbz10aGlzLl9yZXN0cmljdE1pbk1heChlLHRoaXMuX2RldGVybWluZURhdGUoZSx0LG5ldyBEYXRlKSk7ZS5zZWxlY3RlZERheT1lLmN1cnJlbnREYXk9by5nZXREYXRlKCksZS5kcmF3TW9udGg9ZS5zZWxlY3RlZE1vbnRoPWUuY3VycmVudE1vbnRoPW8uZ2V0TW9udGgoKSxlLmRyYXdZZWFyPWUuc2VsZWN0ZWRZZWFyPWUuY3VycmVudFllYXI9by5nZXRGdWxsWWVhcigpLChpIT1lLnNlbGVjdGVkTW9udGh8fHMhPWUuc2VsZWN0ZWRZZWFyKSYmIW4mJnRoaXMuX25vdGlmeUNoYW5nZShlKSx0aGlzLl9hZGp1c3RJbnN0RGF0ZShlKSxlLmlucHV0JiZlLmlucHV0LnZhbChyPyIiOnRoaXMuX2Zvcm1hdERhdGUoZSkpfSxfZ2V0RGF0ZTpmdW5jdGlvbihlKXt2YXIgdD0hZS5jdXJyZW50WWVhcnx8ZS5pbnB1dCYmZS5pbnB1dC52YWwoKT09IiI/bnVsbDp0aGlzLl9kYXlsaWdodFNhdmluZ0FkanVzdChuZXcgRGF0ZShlLmN1cnJlbnRZZWFyLGUuY3VycmVudE1vbnRoLGUuY3VycmVudERheSkpO3JldHVybiB0fSxfYXR0YWNoSGFuZGxlcnM6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fZ2V0KGUsInN0ZXBNb250aHMiKSxuPSIjIitlLmlkLnJlcGxhY2UoL1xcXFwvZywiXFwiKTtlLmRwRGl2LmZpbmQoIltkYXRhLWhhbmRsZXJdIikubWFwKGZ1bmN0aW9uKCl7dmFyIGU9e3ByZXY6ZnVuY3Rpb24oKXt3aW5kb3dbIkRQX2pRdWVyeV8iK2RwdXVpZF0uZGF0ZXBpY2tlci5fYWRqdXN0RGF0ZShuLC10LCJNIil9LG5leHQ6ZnVuY3Rpb24oKXt3aW5kb3dbIkRQX2pRdWVyeV8iK2RwdXVpZF0uZGF0ZXBpY2tlci5fYWRqdXN0RGF0ZShuLCt0LCJNIil9LGhpZGU6ZnVuY3Rpb24oKXt3aW5kb3dbIkRQX2pRdWVyeV8iK2RwdXVpZF0uZGF0ZXBpY2tlci5faGlkZURhdGVwaWNrZXIoKX0sdG9kYXk6ZnVuY3Rpb24oKXt3aW5kb3dbIkRQX2pRdWVyeV8iK2RwdXVpZF0uZGF0ZXBpY2tlci5fZ290b1RvZGF5KG4pfSxzZWxlY3REYXk6ZnVuY3Rpb24oKXtyZXR1cm4gd2luZG93WyJEUF9qUXVlcnlfIitkcHV1aWRdLmRhdGVwaWNrZXIuX3NlbGVjdERheShuLCt0aGlzLmdldEF0dHJpYnV0ZSgiZGF0YS1tb250aCIpLCt0aGlzLmdldEF0dHJpYnV0ZSgiZGF0YS15ZWFyIiksdGhpcyksITF9LHNlbGVjdE1vbnRoOmZ1bmN0aW9uKCl7cmV0dXJuIHdpbmRvd1siRFBfalF1ZXJ5XyIrZHB1dWlkXS5kYXRlcGlja2VyLl9zZWxlY3RNb250aFllYXIobix0aGlzLCJNIiksITF9LHNlbGVjdFllYXI6ZnVuY3Rpb24oKXtyZXR1cm4gd2luZG93WyJEUF9qUXVlcnlfIitkcHV1aWRdLmRhdGVwaWNrZXIuX3NlbGVjdE1vbnRoWWVhcihuLHRoaXMsIlkiKSwhMX19OyQodGhpcykuYmluZCh0aGlzLmdldEF0dHJpYnV0ZSgiZGF0YS1ldmVudCIpLGVbdGhpcy5nZXRBdHRyaWJ1dGUoImRhdGEtaGFuZGxlciIpXSl9KX0sX2dlbmVyYXRlSFRNTDpmdW5jdGlvbihlKXt2YXIgdD1uZXcgRGF0ZTt0PXRoaXMuX2RheWxpZ2h0U2F2aW5nQWRqdXN0KG5ldyBEYXRlKHQuZ2V0RnVsbFllYXIoKSx0LmdldE1vbnRoKCksdC5nZXREYXRlKCkpKTt2YXIgbj10aGlzLl9nZXQoZSwiaXNSVEwiKSxyPXRoaXMuX2dldChlLCJzaG93QnV0dG9uUGFuZWwiKSxpPXRoaXMuX2dldChlLCJoaWRlSWZOb1ByZXZOZXh0Iikscz10aGlzLl9nZXQoZSwibmF2aWdhdGlvbkFzRGF0ZUZvcm1hdCIpLG89dGhpcy5fZ2V0TnVtYmVyT2ZNb250aHMoZSksdT10aGlzLl9nZXQoZSwic2hvd0N1cnJlbnRBdFBvcyIpLGE9dGhpcy5fZ2V0KGUsInN0ZXBNb250aHMiKSxmPW9bMF0hPTF8fG9bMV0hPTEsbD10aGlzLl9kYXlsaWdodFNhdmluZ0FkanVzdChlLmN1cnJlbnREYXk/bmV3IERhdGUoZS5jdXJyZW50WWVhcixlLmN1cnJlbnRNb250aCxlLmN1cnJlbnREYXkpOm5ldyBEYXRlKDk5OTksOSw5KSksYz10aGlzLl9nZXRNaW5NYXhEYXRlKGUsIm1pbiIpLGg9dGhpcy5fZ2V0TWluTWF4RGF0ZShlLCJtYXgiKSxwPWUuZHJhd01vbnRoLXUsZD1lLmRyYXdZZWFyO3A8MCYmKHArPTEyLGQtLSk7aWYoaCl7dmFyIHY9dGhpcy5fZGF5bGlnaHRTYXZpbmdBZGp1c3QobmV3IERhdGUoaC5nZXRGdWxsWWVhcigpLGguZ2V0TW9udGgoKS1vWzBdKm9bMV0rMSxoLmdldERhdGUoKSkpO3Y9YyYmdjxjP2M6djt3aGlsZSh0aGlzLl9kYXlsaWdodFNhdmluZ0FkanVzdChuZXcgRGF0ZShkLHAsMSkpPnYpcC0tLHA8MCYmKHA9MTEsZC0tKX1lLmRyYXdNb250aD1wLGUuZHJhd1llYXI9ZDt2YXIgbT10aGlzLl9nZXQoZSwicHJldlRleHQiKTttPXM/dGhpcy5mb3JtYXREYXRlKG0sdGhpcy5fZGF5bGlnaHRTYXZpbmdBZGp1c3QobmV3IERhdGUoZCxwLWEsMSkpLHRoaXMuX2dldEZvcm1hdENvbmZpZyhlKSk6bTt2YXIgZz10aGlzLl9jYW5BZGp1c3RNb250aChlLC0xLGQscCk/JzxhIGNsYXNzPSJ1aS1kYXRlcGlja2VyLXByZXYgdWktY29ybmVyLWFsbCIgZGF0YS1oYW5kbGVyPSJwcmV2IiBkYXRhLWV2ZW50PSJjbGljayIgdGl0bGU9IicrbSsnIj48c3BhbiBjbGFzcz0idWktaWNvbiB1aS1pY29uLWNpcmNsZS10cmlhbmdsZS0nKyhuPyJlIjoidyIpKyciPicrbSsiPC9zcGFuPjwvYT4iOmk/IiI6JzxhIGNsYXNzPSJ1aS1kYXRlcGlja2VyLXByZXYgdWktY29ybmVyLWFsbCB1aS1zdGF0ZS1kaXNhYmxlZCIgdGl0bGU9IicrbSsnIj48c3BhbiBjbGFzcz0idWktaWNvbiB1aS1pY29uLWNpcmNsZS10cmlhbmdsZS0nKyhuPyJlIjoidyIpKyciPicrbSsiPC9zcGFuPjwvYT4iLHk9dGhpcy5fZ2V0KGUsIm5leHRUZXh0Iik7eT1zP3RoaXMuZm9ybWF0RGF0ZSh5LHRoaXMuX2RheWxpZ2h0U2F2aW5nQWRqdXN0KG5ldyBEYXRlKGQscCthLDEpKSx0aGlzLl9nZXRGb3JtYXRDb25maWcoZSkpOnk7dmFyIGI9dGhpcy5fY2FuQWRqdXN0TW9udGgoZSwxLGQscCk/JzxhIGNsYXNzPSJ1aS1kYXRlcGlja2VyLW5leHQgdWktY29ybmVyLWFsbCIgZGF0YS1oYW5kbGVyPSJuZXh0IiBkYXRhLWV2ZW50PSJjbGljayIgdGl0bGU9IicreSsnIj48c3BhbiBjbGFzcz0idWktaWNvbiB1aS1pY29uLWNpcmNsZS10cmlhbmdsZS0nKyhuPyJ3IjoiZSIpKyciPicreSsiPC9zcGFuPjwvYT4iOmk/IiI6JzxhIGNsYXNzPSJ1aS1kYXRlcGlja2VyLW5leHQgdWktY29ybmVyLWFsbCB1aS1zdGF0ZS1kaXNhYmxlZCIgdGl0bGU9IicreSsnIj48c3BhbiBjbGFzcz0idWktaWNvbiB1aS1pY29uLWNpcmNsZS10cmlhbmdsZS0nKyhuPyJ3IjoiZSIpKyciPicreSsiPC9zcGFuPjwvYT4iLHc9dGhpcy5fZ2V0KGUsImN1cnJlbnRUZXh0IiksRT10aGlzLl9nZXQoZSwiZ290b0N1cnJlbnQiKSYmZS5jdXJyZW50RGF5P2w6dDt3PXM/dGhpcy5mb3JtYXREYXRlKHcsRSx0aGlzLl9nZXRGb3JtYXRDb25maWcoZSkpOnc7dmFyIFM9ZS5pbmxpbmU/IiI6JzxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0idWktZGF0ZXBpY2tlci1jbG9zZSB1aS1zdGF0ZS1kZWZhdWx0IHVpLXByaW9yaXR5LXByaW1hcnkgdWktY29ybmVyLWFsbCIgZGF0YS1oYW5kbGVyPSJoaWRlIiBkYXRhLWV2ZW50PSJjbGljayI+Jyt0aGlzLl9nZXQoZSwiY2xvc2VUZXh0IikrIjwvYnV0dG9uPiIseD1yPyc8ZGl2IGNsYXNzPSJ1aS1kYXRlcGlja2VyLWJ1dHRvbnBhbmUgdWktd2lkZ2V0LWNvbnRlbnQiPicrKG4/UzoiIikrKHRoaXMuX2lzSW5SYW5nZShlLEUpPyc8YnV0dG9uIHR5cGU9ImJ1dHRvbiIgY2xhc3M9InVpLWRhdGVwaWNrZXItY3VycmVudCB1aS1zdGF0ZS1kZWZhdWx0IHVpLXByaW9yaXR5LXNlY29uZGFyeSB1aS1jb3JuZXItYWxsIiBkYXRhLWhhbmRsZXI9InRvZGF5IiBkYXRhLWV2ZW50PSJjbGljayI+Jyt3KyI8L2J1dHRvbj4iOiIiKSsobj8iIjpTKSsiPC9kaXY+IjoiIixUPXBhcnNlSW50KHRoaXMuX2dldChlLCJmaXJzdERheSIpLDEwKTtUPWlzTmFOKFQpPzA6VDt2YXIgTj10aGlzLl9nZXQoZSwic2hvd1dlZWsiKSxDPXRoaXMuX2dldChlLCJkYXlOYW1lcyIpLGs9dGhpcy5fZ2V0KGUsImRheU5hbWVzU2hvcnQiKSxMPXRoaXMuX2dldChlLCJkYXlOYW1lc01pbiIpLEE9dGhpcy5fZ2V0KGUsIm1vbnRoTmFtZXMiKSxPPXRoaXMuX2dldChlLCJtb250aE5hbWVzU2hvcnQiKSxNPXRoaXMuX2dldChlLCJiZWZvcmVTaG93RGF5IiksXz10aGlzLl9nZXQoZSwic2hvd090aGVyTW9udGhzIiksRD10aGlzLl9nZXQoZSwic2VsZWN0T3RoZXJNb250aHMiKSxQPXRoaXMuX2dldChlLCJjYWxjdWxhdGVXZWVrIil8fHRoaXMuaXNvODYwMVdlZWssSD10aGlzLl9nZXREZWZhdWx0RGF0ZShlKSxCPSIiO2Zvcih2YXIgaj0wO2o8b1swXTtqKyspe3ZhciBGPSIiO3RoaXMubWF4Um93cz00O2Zvcih2YXIgST0wO0k8b1sxXTtJKyspe3ZhciBxPXRoaXMuX2RheWxpZ2h0U2F2aW5nQWRqdXN0KG5ldyBEYXRlKGQscCxlLnNlbGVjdGVkRGF5KSksUj0iIHVpLWNvcm5lci1hbGwiLFU9IiI7aWYoZil7VSs9JzxkaXYgY2xhc3M9InVpLWRhdGVwaWNrZXItZ3JvdXAnO2lmKG9bMV0+MSlzd2l0Y2goSSl7Y2FzZSAwOlUrPSIgdWktZGF0ZXBpY2tlci1ncm91cC1maXJzdCIsUj0iIHVpLWNvcm5lci0iKyhuPyJyaWdodCI6ImxlZnQiKTticmVhaztjYXNlIG9bMV0tMTpVKz0iIHVpLWRhdGVwaWNrZXItZ3JvdXAtbGFzdCIsUj0iIHVpLWNvcm5lci0iKyhuPyJsZWZ0IjoicmlnaHQiKTticmVhaztkZWZhdWx0OlUrPSIgdWktZGF0ZXBpY2tlci1ncm91cC1taWRkbGUiLFI9IiJ9VSs9JyI+J31VKz0nPGRpdiBjbGFzcz0idWktZGF0ZXBpY2tlci1oZWFkZXIgdWktd2lkZ2V0LWhlYWRlciB1aS1oZWxwZXItY2xlYXJmaXgnK1IrJyI+JysoL2FsbHxsZWZ0Ly50ZXN0KFIpJiZqPT0wP24/YjpnOiIiKSsoL2FsbHxyaWdodC8udGVzdChSKSYmaj09MD9uP2c6YjoiIikrdGhpcy5fZ2VuZXJhdGVNb250aFllYXJIZWFkZXIoZSxwLGQsYyxoLGo+MHx8ST4wLEEsTykrJzwvZGl2Pjx0YWJsZSBjbGFzcz0idWktZGF0ZXBpY2tlci1jYWxlbmRhciI+PHRoZWFkPicrIjx0cj4iO3ZhciB6PU4/Jzx0aCBjbGFzcz0idWktZGF0ZXBpY2tlci13ZWVrLWNvbCI+Jyt0aGlzLl9nZXQoZSwid2Vla0hlYWRlciIpKyI8L3RoPiI6IiI7Zm9yKHZhciBXPTA7Vzw3O1crKyl7dmFyIFg9KFcrVCklNzt6Kz0iPHRoIisoKFcrVCs2KSU3Pj01PycgY2xhc3M9InVpLWRhdGVwaWNrZXItd2Vlay1lbmQiJzoiIikrIj4iKyc8c3BhbiB0aXRsZT0iJytDW1hdKyciPicrTFtYXSsiPC9zcGFuPjwvdGg+In1VKz16KyI8L3RyPjwvdGhlYWQ+PHRib2R5PiI7dmFyIFY9dGhpcy5fZ2V0RGF5c0luTW9udGgoZCxwKTtkPT1lLnNlbGVjdGVkWWVhciYmcD09ZS5zZWxlY3RlZE1vbnRoJiYoZS5zZWxlY3RlZERheT1NYXRoLm1pbihlLnNlbGVjdGVkRGF5LFYpKTt2YXIgSj0odGhpcy5fZ2V0Rmlyc3REYXlPZk1vbnRoKGQscCktVCs3KSU3LEs9TWF0aC5jZWlsKChKK1YpLzcpLFE9Zj90aGlzLm1heFJvd3M+Sz90aGlzLm1heFJvd3M6SzpLO3RoaXMubWF4Um93cz1RO3ZhciBHPXRoaXMuX2RheWxpZ2h0U2F2aW5nQWRqdXN0KG5ldyBEYXRlKGQscCwxLUopKTtmb3IodmFyIFk9MDtZPFE7WSsrKXtVKz0iPHRyPiI7dmFyIFo9Tj8nPHRkIGNsYXNzPSJ1aS1kYXRlcGlja2VyLXdlZWstY29sIj4nK3RoaXMuX2dldChlLCJjYWxjdWxhdGVXZWVrIikoRykrIjwvdGQ+IjoiIjtmb3IodmFyIFc9MDtXPDc7VysrKXt2YXIgZXQ9TT9NLmFwcGx5KGUuaW5wdXQ/ZS5pbnB1dFswXTpudWxsLFtHXSk6WyEwLCIiXSx0dD1HLmdldE1vbnRoKCkhPXAsbnQ9dHQmJiFEfHwhZXRbMF18fGMmJkc8Y3x8aCYmRz5oO1orPSc8dGQgY2xhc3M9IicrKChXK1QrNiklNz49NT8iIHVpLWRhdGVwaWNrZXItd2Vlay1lbmQiOiIiKSsodHQ/IiB1aS1kYXRlcGlja2VyLW90aGVyLW1vbnRoIjoiIikrKEcuZ2V0VGltZSgpPT1xLmdldFRpbWUoKSYmcD09ZS5zZWxlY3RlZE1vbnRoJiZlLl9rZXlFdmVudHx8SC5nZXRUaW1lKCk9PUcuZ2V0VGltZSgpJiZILmdldFRpbWUoKT09cS5nZXRUaW1lKCk/IiAiK3RoaXMuX2RheU92ZXJDbGFzczoiIikrKG50PyIgIit0aGlzLl91bnNlbGVjdGFibGVDbGFzcysiIHVpLXN0YXRlLWRpc2FibGVkIjoiIikrKHR0JiYhXz8iIjoiICIrZXRbMV0rKEcuZ2V0VGltZSgpPT1sLmdldFRpbWUoKT8iICIrdGhpcy5fY3VycmVudENsYXNzOiIiKSsoRy5nZXRUaW1lKCk9PXQuZ2V0VGltZSgpPyIgdWktZGF0ZXBpY2tlci10b2RheSI6IiIpKSsnIicrKCghdHR8fF8pJiZldFsyXT8nIHRpdGxlPSInK2V0WzJdKyciJzoiIikrKG50PyIiOicgZGF0YS1oYW5kbGVyPSJzZWxlY3REYXkiIGRhdGEtZXZlbnQ9ImNsaWNrIiBkYXRhLW1vbnRoPSInK0cuZ2V0TW9udGgoKSsnIiBkYXRhLXllYXI9IicrRy5nZXRGdWxsWWVhcigpKyciJykrIj4iKyh0dCYmIV8/IiYjeGEwOyI6bnQ/JzxzcGFuIGNsYXNzPSJ1aS1zdGF0ZS1kZWZhdWx0Ij4nK0cuZ2V0RGF0ZSgpKyI8L3NwYW4+IjonPGEgY2xhc3M9InVpLXN0YXRlLWRlZmF1bHQnKyhHLmdldFRpbWUoKT09dC5nZXRUaW1lKCk/IiB1aS1zdGF0ZS1oaWdobGlnaHQiOiIiKSsoRy5nZXRUaW1lKCk9PWwuZ2V0VGltZSgpPyIgdWktc3RhdGUtYWN0aXZlIjoiIikrKHR0PyIgdWktcHJpb3JpdHktc2Vjb25kYXJ5IjoiIikrJyIgaHJlZj0iIyI+JytHLmdldERhdGUoKSsiPC9hPiIpKyI8L3RkPiIsRy5zZXREYXRlKEcuZ2V0RGF0ZSgpKzEpLEc9dGhpcy5fZGF5bGlnaHRTYXZpbmdBZGp1c3QoRyl9VSs9WisiPC90cj4ifXArKyxwPjExJiYocD0wLGQrKyksVSs9IjwvdGJvZHk+PC90YWJsZT4iKyhmPyI8L2Rpdj4iKyhvWzBdPjAmJkk9PW9bMV0tMT8nPGRpdiBjbGFzcz0idWktZGF0ZXBpY2tlci1yb3ctYnJlYWsiPjwvZGl2Pic6IiIpOiIiKSxGKz1VfUIrPUZ9cmV0dXJuIEIrPXgrKCQuYnJvd3Nlci5tc2llJiZwYXJzZUludCgkLmJyb3dzZXIudmVyc2lvbiwxMCk8NyYmIWUuaW5saW5lPyc8aWZyYW1lIHNyYz0iamF2YXNjcmlwdDpmYWxzZTsiIGNsYXNzPSJ1aS1kYXRlcGlja2VyLWNvdmVyIiBmcmFtZWJvcmRlcj0iMCI+PC9pZnJhbWU+JzoiIiksZS5fa2V5RXZlbnQ9ITEsQn0sX2dlbmVyYXRlTW9udGhZZWFySGVhZGVyOmZ1bmN0aW9uKGUsdCxuLHIsaSxzLG8sdSl7dmFyIGE9dGhpcy5fZ2V0KGUsImNoYW5nZU1vbnRoIiksZj10aGlzLl9nZXQoZSwiY2hhbmdlWWVhciIpLGw9dGhpcy5fZ2V0KGUsInNob3dNb250aEFmdGVyWWVhciIpLGM9JzxkaXYgY2xhc3M9InVpLWRhdGVwaWNrZXItdGl0bGUiPicsaD0iIjtpZihzfHwhYSloKz0nPHNwYW4gY2xhc3M9InVpLWRhdGVwaWNrZXItbW9udGgiPicrb1t0XSsiPC9zcGFuPiI7ZWxzZXt2YXIgcD1yJiZyLmdldEZ1bGxZZWFyKCk9PW4sZD1pJiZpLmdldEZ1bGxZZWFyKCk9PW47aCs9JzxzZWxlY3QgY2xhc3M9InVpLWRhdGVwaWNrZXItbW9udGgiIGRhdGEtaGFuZGxlcj0ic2VsZWN0TW9udGgiIGRhdGEtZXZlbnQ9ImNoYW5nZSI+Jztmb3IodmFyIHY9MDt2PDEyO3YrKykoIXB8fHY+PXIuZ2V0TW9udGgoKSkmJighZHx8djw9aS5nZXRNb250aCgpKSYmKGgrPSc8b3B0aW9uIHZhbHVlPSInK3YrJyInKyh2PT10Pycgc2VsZWN0ZWQ9InNlbGVjdGVkIic6IiIpKyI+Iit1W3ZdKyI8L29wdGlvbj4iKTtoKz0iPC9zZWxlY3Q+In1sfHwoYys9aCsoc3x8IWF8fCFmPyImI3hhMDsiOiIiKSk7aWYoIWUueWVhcnNodG1sKXtlLnllYXJzaHRtbD0iIjtpZihzfHwhZiljKz0nPHNwYW4gY2xhc3M9InVpLWRhdGVwaWNrZXIteWVhciI+JytuKyI8L3NwYW4+IjtlbHNle3ZhciBtPXRoaXMuX2dldChlLCJ5ZWFyUmFuZ2UiKS5zcGxpdCgiOiIpLGc9KG5ldyBEYXRlKS5nZXRGdWxsWWVhcigpLHk9ZnVuY3Rpb24oZSl7dmFyIHQ9ZS5tYXRjaCgvY1srLV0uKi8pP24rcGFyc2VJbnQoZS5zdWJzdHJpbmcoMSksMTApOmUubWF0Y2goL1srLV0uKi8pP2crcGFyc2VJbnQoZSwxMCk6cGFyc2VJbnQoZSwxMCk7cmV0dXJuIGlzTmFOKHQpP2c6dH0sYj15KG1bMF0pLHc9TWF0aC5tYXgoYix5KG1bMV18fCIiKSk7Yj1yP01hdGgubWF4KGIsci5nZXRGdWxsWWVhcigpKTpiLHc9aT9NYXRoLm1pbih3LGkuZ2V0RnVsbFllYXIoKSk6dyxlLnllYXJzaHRtbCs9JzxzZWxlY3QgY2xhc3M9InVpLWRhdGVwaWNrZXIteWVhciIgZGF0YS1oYW5kbGVyPSJzZWxlY3RZZWFyIiBkYXRhLWV2ZW50PSJjaGFuZ2UiPic7Zm9yKDtiPD13O2IrKyllLnllYXJzaHRtbCs9JzxvcHRpb24gdmFsdWU9IicrYisnIicrKGI9PW4/JyBzZWxlY3RlZD0ic2VsZWN0ZWQiJzoiIikrIj4iK2IrIjwvb3B0aW9uPiI7ZS55ZWFyc2h0bWwrPSI8L3NlbGVjdD4iLGMrPWUueWVhcnNodG1sLGUueWVhcnNodG1sPW51bGx9fXJldHVybiBjKz10aGlzLl9nZXQoZSwieWVhclN1ZmZpeCIpLGwmJihjKz0oc3x8IWF8fCFmPyImI3hhMDsiOiIiKStoKSxjKz0iPC9kaXY+IixjfSxfYWRqdXN0SW5zdERhdGU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByPWUuZHJhd1llYXIrKG49PSJZIj90OjApLGk9ZS5kcmF3TW9udGgrKG49PSJNIj90OjApLHM9TWF0aC5taW4oZS5zZWxlY3RlZERheSx0aGlzLl9nZXREYXlzSW5Nb250aChyLGkpKSsobj09IkQiP3Q6MCksbz10aGlzLl9yZXN0cmljdE1pbk1heChlLHRoaXMuX2RheWxpZ2h0U2F2aW5nQWRqdXN0KG5ldyBEYXRlKHIsaSxzKSkpO2Uuc2VsZWN0ZWREYXk9by5nZXREYXRlKCksZS5kcmF3TW9udGg9ZS5zZWxlY3RlZE1vbnRoPW8uZ2V0TW9udGgoKSxlLmRyYXdZZWFyPWUuc2VsZWN0ZWRZZWFyPW8uZ2V0RnVsbFllYXIoKSwobj09Ik0ifHxuPT0iWSIpJiZ0aGlzLl9ub3RpZnlDaGFuZ2UoZSl9LF9yZXN0cmljdE1pbk1heDpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuX2dldE1pbk1heERhdGUoZSwibWluIikscj10aGlzLl9nZXRNaW5NYXhEYXRlKGUsIm1heCIpLGk9biYmdDxuP246dDtyZXR1cm4gaT1yJiZpPnI/cjppLGl9LF9ub3RpZnlDaGFuZ2U6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fZ2V0KGUsIm9uQ2hhbmdlTW9udGhZZWFyIik7dCYmdC5hcHBseShlLmlucHV0P2UuaW5wdXRbMF06bnVsbCxbZS5zZWxlY3RlZFllYXIsZS5zZWxlY3RlZE1vbnRoKzEsZV0pfSxfZ2V0TnVtYmVyT2ZNb250aHM6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fZ2V0KGUsIm51bWJlck9mTW9udGhzIik7cmV0dXJuIHQ9PW51bGw/WzEsMV06dHlwZW9mIHQ9PSJudW1iZXIiP1sxLHRdOnR9LF9nZXRNaW5NYXhEYXRlOmZ1bmN0aW9uKGUsdCl7cmV0dXJuIHRoaXMuX2RldGVybWluZURhdGUoZSx0aGlzLl9nZXQoZSx0KyJEYXRlIiksbnVsbCl9LF9nZXREYXlzSW5Nb250aDpmdW5jdGlvbihlLHQpe3JldHVybiAzMi10aGlzLl9kYXlsaWdodFNhdmluZ0FkanVzdChuZXcgRGF0ZShlLHQsMzIpKS5nZXREYXRlKCl9LF9nZXRGaXJzdERheU9mTW9udGg6ZnVuY3Rpb24oZSx0KXtyZXR1cm4obmV3IERhdGUoZSx0LDEpKS5nZXREYXkoKX0sX2NhbkFkanVzdE1vbnRoOmZ1bmN0aW9uKGUsdCxuLHIpe3ZhciBpPXRoaXMuX2dldE51bWJlck9mTW9udGhzKGUpLHM9dGhpcy5fZGF5bGlnaHRTYXZpbmdBZGp1c3QobmV3IERhdGUobixyKyh0PDA/dDppWzBdKmlbMV0pLDEpKTtyZXR1cm4gdDwwJiZzLnNldERhdGUodGhpcy5fZ2V0RGF5c0luTW9udGgocy5nZXRGdWxsWWVhcigpLHMuZ2V0TW9udGgoKSkpLHRoaXMuX2lzSW5SYW5nZShlLHMpfSxfaXNJblJhbmdlOmZ1bmN0aW9uKGUsdCl7dmFyIG49dGhpcy5fZ2V0TWluTWF4RGF0ZShlLCJtaW4iKSxyPXRoaXMuX2dldE1pbk1heERhdGUoZSwibWF4Iik7cmV0dXJuKCFufHx0LmdldFRpbWUoKT49bi5nZXRUaW1lKCkpJiYoIXJ8fHQuZ2V0VGltZSgpPD1yLmdldFRpbWUoKSl9LF9nZXRGb3JtYXRDb25maWc6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5fZ2V0KGUsInNob3J0WWVhckN1dG9mZiIpO3JldHVybiB0PXR5cGVvZiB0IT0ic3RyaW5nIj90OihuZXcgRGF0ZSkuZ2V0RnVsbFllYXIoKSUxMDArcGFyc2VJbnQodCwxMCkse3Nob3J0WWVhckN1dG9mZjp0LGRheU5hbWVzU2hvcnQ6dGhpcy5fZ2V0KGUsImRheU5hbWVzU2hvcnQiKSxkYXlOYW1lczp0aGlzLl9nZXQoZSwiZGF5TmFtZXMiKSxtb250aE5hbWVzU2hvcnQ6dGhpcy5fZ2V0KGUsIm1vbnRoTmFtZXNTaG9ydCIpLG1vbnRoTmFtZXM6dGhpcy5fZ2V0KGUsIm1vbnRoTmFtZXMiKX19LF9mb3JtYXREYXRlOmZ1bmN0aW9uKGUsdCxuLHIpe3R8fChlLmN1cnJlbnREYXk9ZS5zZWxlY3RlZERheSxlLmN1cnJlbnRNb250aD1lLnNlbGVjdGVkTW9udGgsZS5jdXJyZW50WWVhcj1lLnNlbGVjdGVkWWVhcik7dmFyIGk9dD90eXBlb2YgdD09Im9iamVjdCI/dDp0aGlzLl9kYXlsaWdodFNhdmluZ0FkanVzdChuZXcgRGF0ZShyLG4sdCkpOnRoaXMuX2RheWxpZ2h0U2F2aW5nQWRqdXN0KG5ldyBEYXRlKGUuY3VycmVudFllYXIsZS5jdXJyZW50TW9udGgsZS5jdXJyZW50RGF5KSk7cmV0dXJuIHRoaXMuZm9ybWF0RGF0ZSh0aGlzLl9nZXQoZSwiZGF0ZUZvcm1hdCIpLGksdGhpcy5fZ2V0Rm9ybWF0Q29uZmlnKGUpKX19KSwkLmZuLmRhdGVwaWNrZXI9ZnVuY3Rpb24oZSl7aWYoIXRoaXMubGVuZ3RoKXJldHVybiB0aGlzOyQuZGF0ZXBpY2tlci5pbml0aWFsaXplZHx8KCQoZG9jdW1lbnQpLm1vdXNlZG93bigkLmRhdGVwaWNrZXIuX2NoZWNrRXh0ZXJuYWxDbGljaykuZmluZChkb2N1bWVudC5ib2R5KS5hcHBlbmQoJC5kYXRlcGlja2VyLmRwRGl2KSwkLmRhdGVwaWNrZXIuaW5pdGlhbGl6ZWQ9ITApO3ZhciB0PUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGFyZ3VtZW50cywxKTtyZXR1cm4gdHlwZW9mIGUhPSJzdHJpbmcifHxlIT0iaXNEaXNhYmxlZCImJmUhPSJnZXREYXRlIiYmZSE9IndpZGdldCI/ZT09Im9wdGlvbiImJmFyZ3VtZW50cy5sZW5ndGg9PTImJnR5cGVvZiBhcmd1bWVudHNbMV09PSJzdHJpbmciPyQuZGF0ZXBpY2tlclsiXyIrZSsiRGF0ZXBpY2tlciJdLmFwcGx5KCQuZGF0ZXBpY2tlcixbdGhpc1swXV0uY29uY2F0KHQpKTp0aGlzLmVhY2goZnVuY3Rpb24oKXt0eXBlb2YgZT09InN0cmluZyI/JC5kYXRlcGlja2VyWyJfIitlKyJEYXRlcGlja2VyIl0uYXBwbHkoJC5kYXRlcGlja2VyLFt0aGlzXS5jb25jYXQodCkpOiQuZGF0ZXBpY2tlci5fYXR0YWNoRGF0ZXBpY2tlcih0aGlzLGUpfSk6JC5kYXRlcGlja2VyWyJfIitlKyJEYXRlcGlja2VyIl0uYXBwbHkoJC5kYXRlcGlja2VyLFt0aGlzWzBdXS5jb25jYXQodCkpfSwkLmRhdGVwaWNrZXI9bmV3IERhdGVwaWNrZXIsJC5kYXRlcGlja2VyLmluaXRpYWxpemVkPSExLCQuZGF0ZXBpY2tlci51dWlkPShuZXcgRGF0ZSkuZ2V0VGltZSgpLCQuZGF0ZXBpY2tlci52ZXJzaW9uPSIxLjkuMCIsd2luZG93WyJEUF9qUXVlcnlfIitkcHV1aWRdPSR9KShqUXVlcnkpOyhmdW5jdGlvbihlLHQpe3ZhciBuPSJ1aS1kaWFsb2cgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwgIixyPXtidXR0b25zOiEwLGhlaWdodDohMCxtYXhIZWlnaHQ6ITAsbWF4V2lkdGg6ITAsbWluSGVpZ2h0OiEwLG1pbldpZHRoOiEwLHdpZHRoOiEwfSxpPXttYXhIZWlnaHQ6ITAsbWF4V2lkdGg6ITAsbWluSGVpZ2h0OiEwLG1pbldpZHRoOiEwfTtlLndpZGdldCgidWkuZGlhbG9nIix7dmVyc2lvbjoiMS45LjAiLG9wdGlvbnM6e2F1dG9PcGVuOiEwLGJ1dHRvbnM6e30sY2xvc2VPbkVzY2FwZTohMCxjbG9zZVRleHQ6ImNsb3NlIixkaWFsb2dDbGFzczoiIixkcmFnZ2FibGU6ITAsaGlkZTpudWxsLGhlaWdodDoiYXV0byIsbWF4SGVpZ2h0OiExLG1heFdpZHRoOiExLG1pbkhlaWdodDoxNTAsbWluV2lkdGg6MTUwLG1vZGFsOiExLHBvc2l0aW9uOntteToiY2VudGVyIixhdDoiY2VudGVyIixvZjp3aW5kb3csY29sbGlzaW9uOiJmaXQiLHVzaW5nOmZ1bmN0aW9uKHQpe3ZhciBuPWUodGhpcykuY3NzKHQpLm9mZnNldCgpLnRvcDtuPDAmJmUodGhpcykuY3NzKCJ0b3AiLHQudG9wLW4pfX0scmVzaXphYmxlOiEwLHNob3c6bnVsbCxzdGFjazohMCx0aXRsZToiIix3aWR0aDozMDAsekluZGV4OjFlM30sX2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMub3JpZ2luYWxUaXRsZT10aGlzLmVsZW1lbnQuYXR0cigidGl0bGUiKSx0eXBlb2YgdGhpcy5vcmlnaW5hbFRpdGxlIT0ic3RyaW5nIiYmKHRoaXMub3JpZ2luYWxUaXRsZT0iIiksdGhpcy5vbGRQb3NpdGlvbj17cGFyZW50OnRoaXMuZWxlbWVudC5wYXJlbnQoKSxpbmRleDp0aGlzLmVsZW1lbnQucGFyZW50KCkuY2hpbGRyZW4oKS5pbmRleCh0aGlzLmVsZW1lbnQpfSx0aGlzLm9wdGlvbnMudGl0bGU9dGhpcy5vcHRpb25zLnRpdGxlfHx0aGlzLm9yaWdpbmFsVGl0bGU7dmFyIHQ9dGhpcyxyPXRoaXMub3B0aW9ucyxpPXIudGl0bGV8fCImIzE2MDsiLHM9KHRoaXMudWlEaWFsb2c9ZSgiPGRpdj4iKSkuYWRkQ2xhc3MobityLmRpYWxvZ0NsYXNzKS5jc3Moe2Rpc3BsYXk6Im5vbmUiLG91dGxpbmU6MCx6SW5kZXg6ci56SW5kZXh9KS5hdHRyKCJ0YWJJbmRleCIsLTEpLmtleWRvd24oZnVuY3Rpb24obil7ci5jbG9zZU9uRXNjYXBlJiYhbi5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmbi5rZXlDb2RlJiZuLmtleUNvZGU9PT1lLnVpLmtleUNvZGUuRVNDQVBFJiYodC5jbG9zZShuKSxuLnByZXZlbnREZWZhdWx0KCkpfSkubW91c2Vkb3duKGZ1bmN0aW9uKGUpe3QubW92ZVRvVG9wKCExLGUpfSkuYXBwZW5kVG8oImJvZHkiKSxvPXRoaXMuZWxlbWVudC5zaG93KCkucmVtb3ZlQXR0cigidGl0bGUiKS5hZGRDbGFzcygidWktZGlhbG9nLWNvbnRlbnQgdWktd2lkZ2V0LWNvbnRlbnQiKS5hcHBlbmRUbyhzKSx1PSh0aGlzLnVpRGlhbG9nVGl0bGViYXI9ZSgiPGRpdj4iKSkuYWRkQ2xhc3MoInVpLWRpYWxvZy10aXRsZWJhciAgdWktd2lkZ2V0LWhlYWRlciAgdWktY29ybmVyLWFsbCAgdWktaGVscGVyLWNsZWFyZml4IikucHJlcGVuZFRvKHMpLGE9ZSgiPGEgaHJlZj0nIyc+PC9hPiIpLmFkZENsYXNzKCJ1aS1kaWFsb2ctdGl0bGViYXItY2xvc2UgIHVpLWNvcm5lci1hbGwiKS5hdHRyKCJyb2xlIiwiYnV0dG9uIikuY2xpY2soZnVuY3Rpb24oZSl7ZS5wcmV2ZW50RGVmYXVsdCgpLHQuY2xvc2UoZSl9KS5hcHBlbmRUbyh1KSxmPSh0aGlzLnVpRGlhbG9nVGl0bGViYXJDbG9zZVRleHQ9ZSgiPHNwYW4+IikpLmFkZENsYXNzKCJ1aS1pY29uIHVpLWljb24tY2xvc2V0aGljayIpLnRleHQoci5jbG9zZVRleHQpLmFwcGVuZFRvKGEpLGw9ZSgiPHNwYW4+IikudW5pcXVlSWQoKS5hZGRDbGFzcygidWktZGlhbG9nLXRpdGxlIikuaHRtbChpKS5wcmVwZW5kVG8odSksYz0odGhpcy51aURpYWxvZ0J1dHRvblBhbmU9ZSgiPGRpdj4iKSkuYWRkQ2xhc3MoInVpLWRpYWxvZy1idXR0b25wYW5lIHVpLXdpZGdldC1jb250ZW50IHVpLWhlbHBlci1jbGVhcmZpeCIpLGg9KHRoaXMudWlCdXR0b25TZXQ9ZSgiPGRpdj4iKSkuYWRkQ2xhc3MoInVpLWRpYWxvZy1idXR0b25zZXQiKS5hcHBlbmRUbyhjKTtzLmF0dHIoe3JvbGU6ImRpYWxvZyIsImFyaWEtbGFiZWxsZWRieSI6bC5hdHRyKCJpZCIpfSksdS5maW5kKCIqIikuYWRkKHUpLmRpc2FibGVTZWxlY3Rpb24oKSx0aGlzLl9ob3ZlcmFibGUoYSksdGhpcy5fZm9jdXNhYmxlKGEpLHIuZHJhZ2dhYmxlJiZlLmZuLmRyYWdnYWJsZSYmdGhpcy5fbWFrZURyYWdnYWJsZSgpLHIucmVzaXphYmxlJiZlLmZuLnJlc2l6YWJsZSYmdGhpcy5fbWFrZVJlc2l6YWJsZSgpLHRoaXMuX2NyZWF0ZUJ1dHRvbnMoci5idXR0b25zKSx0aGlzLl9pc09wZW49ITEsZS5mbi5iZ2lmcmFtZSYmcy5iZ2lmcmFtZSgpLHRoaXMuX29uKHMse2tleWRvd246ZnVuY3Rpb24odCl7aWYoIXIubW9kYWx8fHQua2V5Q29kZSE9PWUudWkua2V5Q29kZS5UQUIpcmV0dXJuO3ZhciBuPWUoIjp0YWJiYWJsZSIscyksaT1uLmZpbHRlcigiOmZpcnN0Iiksbz1uLmZpbHRlcigiOmxhc3QiKTtpZih0LnRhcmdldD09PW9bMF0mJiF0LnNoaWZ0S2V5KXJldHVybiBpLmZvY3VzKDEpLCExO2lmKHQudGFyZ2V0PT09aVswXSYmdC5zaGlmdEtleSlyZXR1cm4gby5mb2N1cygxKSwhMX19KX0sX2luaXQ6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMuYXV0b09wZW4mJnRoaXMub3BlbigpfSxfZGVzdHJveTpmdW5jdGlvbigpe3ZhciBlLHQ9dGhpcy5vbGRQb3NpdGlvbjt0aGlzLm92ZXJsYXkmJnRoaXMub3ZlcmxheS5kZXN0cm95KCksdGhpcy51aURpYWxvZy5oaWRlKCksdGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1kaWFsb2ctY29udGVudCB1aS13aWRnZXQtY29udGVudCIpLmhpZGUoKS5hcHBlbmRUbygiYm9keSIpLHRoaXMudWlEaWFsb2cucmVtb3ZlKCksdGhpcy5vcmlnaW5hbFRpdGxlJiZ0aGlzLmVsZW1lbnQuYXR0cigidGl0bGUiLHRoaXMub3JpZ2luYWxUaXRsZSksZT10LnBhcmVudC5jaGlsZHJlbigpLmVxKHQuaW5kZXgpLGUubGVuZ3RoJiZlWzBdIT09dGhpcy5lbGVtZW50WzBdP2UuYmVmb3JlKHRoaXMuZWxlbWVudCk6dC5wYXJlbnQuYXBwZW5kKHRoaXMuZWxlbWVudCl9LHdpZGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnVpRGlhbG9nfSxjbG9zZTpmdW5jdGlvbih0KXt2YXIgbj10aGlzLHIsaTtpZighdGhpcy5faXNPcGVuKXJldHVybjtpZighMT09PXRoaXMuX3RyaWdnZXIoImJlZm9yZUNsb3NlIix0KSlyZXR1cm47cmV0dXJuIHRoaXMuX2lzT3Blbj0hMSx0aGlzLm92ZXJsYXkmJnRoaXMub3ZlcmxheS5kZXN0cm95KCksdGhpcy5vcHRpb25zLmhpZGU/dGhpcy51aURpYWxvZy5oaWRlKHRoaXMub3B0aW9ucy5oaWRlLGZ1bmN0aW9uKCl7bi5fdHJpZ2dlcigiY2xvc2UiLHQpfSk6KHRoaXMudWlEaWFsb2cuaGlkZSgpLHRoaXMuX3RyaWdnZXIoImNsb3NlIix0KSksZS51aS5kaWFsb2cub3ZlcmxheS5yZXNpemUoKSx0aGlzLm9wdGlvbnMubW9kYWwmJihyPTAsZSgiLnVpLWRpYWxvZyIpLmVhY2goZnVuY3Rpb24oKXt0aGlzIT09bi51aURpYWxvZ1swXSYmKGk9ZSh0aGlzKS5jc3MoInotaW5kZXgiKSxpc05hTihpKXx8KHI9TWF0aC5tYXgocixpKSkpfSksZS51aS5kaWFsb2cubWF4Wj1yKSx0aGlzfSxpc09wZW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5faXNPcGVufSxtb3ZlVG9Ub3A6ZnVuY3Rpb24odCxuKXt2YXIgcj10aGlzLm9wdGlvbnMsaTtyZXR1cm4gci5tb2RhbCYmIXR8fCFyLnN0YWNrJiYhci5tb2RhbD90aGlzLl90cmlnZ2VyKCJmb2N1cyIsbik6KHIuekluZGV4PmUudWkuZGlhbG9nLm1heFomJihlLnVpLmRpYWxvZy5tYXhaPXIuekluZGV4KSx0aGlzLm92ZXJsYXkmJihlLnVpLmRpYWxvZy5tYXhaKz0xLGUudWkuZGlhbG9nLm92ZXJsYXkubWF4Wj1lLnVpLmRpYWxvZy5tYXhaLHRoaXMub3ZlcmxheS4kZWwuY3NzKCJ6LWluZGV4IixlLnVpLmRpYWxvZy5vdmVybGF5Lm1heFopKSxpPXtzY3JvbGxUb3A6dGhpcy5lbGVtZW50LnNjcm9sbFRvcCgpLHNjcm9sbExlZnQ6dGhpcy5lbGVtZW50LnNjcm9sbExlZnQoKX0sZS51aS5kaWFsb2cubWF4Wis9MSx0aGlzLnVpRGlhbG9nLmNzcygiei1pbmRleCIsZS51aS5kaWFsb2cubWF4WiksdGhpcy5lbGVtZW50LmF0dHIoaSksdGhpcy5fdHJpZ2dlcigiZm9jdXMiLG4pLHRoaXMpfSxvcGVuOmZ1bmN0aW9uKCl7aWYodGhpcy5faXNPcGVuKXJldHVybjt2YXIgdCxuPXRoaXMub3B0aW9ucyxyPXRoaXMudWlEaWFsb2c7cmV0dXJuIHRoaXMuX3NpemUoKSx0aGlzLl9wb3NpdGlvbihuLnBvc2l0aW9uKSxyLnNob3cobi5zaG93KSx0aGlzLm92ZXJsYXk9bi5tb2RhbD9uZXcgZS51aS5kaWFsb2cub3ZlcmxheSh0aGlzKTpudWxsLHRoaXMubW92ZVRvVG9wKCEwKSx0PXRoaXMuZWxlbWVudC5maW5kKCI6dGFiYmFibGUiKSx0Lmxlbmd0aHx8KHQ9dGhpcy51aURpYWxvZ0J1dHRvblBhbmUuZmluZCgiOnRhYmJhYmxlIiksdC5sZW5ndGh8fCh0PXIpKSx0LmVxKDApLmZvY3VzKCksdGhpcy5faXNPcGVuPSEwLHRoaXMuX3RyaWdnZXIoIm9wZW4iKSx0aGlzfSxfY3JlYXRlQnV0dG9uczpmdW5jdGlvbih0KXt2YXIgbixyLGk9dGhpcyxzPSExO3RoaXMudWlEaWFsb2dCdXR0b25QYW5lLnJlbW92ZSgpLHRoaXMudWlCdXR0b25TZXQuZW1wdHkoKSx0eXBlb2YgdD09Im9iamVjdCImJnQhPT1udWxsJiZlLmVhY2godCxmdW5jdGlvbigpe3JldHVybiEocz0hMCl9KSxzPyhlLmVhY2godCxmdW5jdGlvbih0LG4pe249ZS5pc0Z1bmN0aW9uKG4pP3tjbGljazpuLHRleHQ6dH06bjt2YXIgcj1lKCI8YnV0dG9uIHR5cGU9J2J1dHRvbic+IikuYXR0cihuLCEwKS51bmJpbmQoImNsaWNrIikuY2xpY2soZnVuY3Rpb24oKXtuLmNsaWNrLmFwcGx5KGkuZWxlbWVudFswXSxhcmd1bWVudHMpfSkuYXBwZW5kVG8oaS51aUJ1dHRvblNldCk7ZS5mbi5idXR0b24mJnIuYnV0dG9uKCl9KSx0aGlzLnVpRGlhbG9nLmFkZENsYXNzKCJ1aS1kaWFsb2ctYnV0dG9ucyIpLHRoaXMudWlEaWFsb2dCdXR0b25QYW5lLmFwcGVuZFRvKHRoaXMudWlEaWFsb2cpKTp0aGlzLnVpRGlhbG9nLnJlbW92ZUNsYXNzKCJ1aS1kaWFsb2ctYnV0dG9ucyIpfSxfbWFrZURyYWdnYWJsZTpmdW5jdGlvbigpe2Z1bmN0aW9uIHIoZSl7cmV0dXJue3Bvc2l0aW9uOmUucG9zaXRpb24sb2Zmc2V0OmUub2Zmc2V0fX12YXIgdD10aGlzLG49dGhpcy5vcHRpb25zO3RoaXMudWlEaWFsb2cuZHJhZ2dhYmxlKHtjYW5jZWw6Ii51aS1kaWFsb2ctY29udGVudCwgLnVpLWRpYWxvZy10aXRsZWJhci1jbG9zZSIsaGFuZGxlOiIudWktZGlhbG9nLXRpdGxlYmFyIixjb250YWlubWVudDoiZG9jdW1lbnQiLHN0YXJ0OmZ1bmN0aW9uKG4saSl7ZSh0aGlzKS5hZGRDbGFzcygidWktZGlhbG9nLWRyYWdnaW5nIiksdC5fdHJpZ2dlcigiZHJhZ1N0YXJ0IixuLHIoaSkpfSxkcmFnOmZ1bmN0aW9uKGUsbil7dC5fdHJpZ2dlcigiZHJhZyIsZSxyKG4pKX0sc3RvcDpmdW5jdGlvbihpLHMpe24ucG9zaXRpb249W3MucG9zaXRpb24ubGVmdC10LmRvY3VtZW50LnNjcm9sbExlZnQoKSxzLnBvc2l0aW9uLnRvcC10LmRvY3VtZW50LnNjcm9sbFRvcCgpXSxlKHRoaXMpLnJlbW92ZUNsYXNzKCJ1aS1kaWFsb2ctZHJhZ2dpbmciKSx0Ll90cmlnZ2VyKCJkcmFnU3RvcCIsaSxyKHMpKSxlLnVpLmRpYWxvZy5vdmVybGF5LnJlc2l6ZSgpfX0pfSxfbWFrZVJlc2l6YWJsZTpmdW5jdGlvbihuKXtmdW5jdGlvbiB1KGUpe3JldHVybntvcmlnaW5hbFBvc2l0aW9uOmUub3JpZ2luYWxQb3NpdGlvbixvcmlnaW5hbFNpemU6ZS5vcmlnaW5hbFNpemUscG9zaXRpb246ZS5wb3NpdGlvbixzaXplOmUuc2l6ZX19bj1uPT09dD90aGlzLm9wdGlvbnMucmVzaXphYmxlOm47dmFyIHI9dGhpcyxpPXRoaXMub3B0aW9ucyxzPXRoaXMudWlEaWFsb2cuY3NzKCJwb3NpdGlvbiIpLG89dHlwZW9mIG49PSJzdHJpbmciP246Im4sZSxzLHcsc2Usc3csbmUsbnciO3RoaXMudWlEaWFsb2cucmVzaXphYmxlKHtjYW5jZWw6Ii51aS1kaWFsb2ctY29udGVudCIsY29udGFpbm1lbnQ6ImRvY3VtZW50IixhbHNvUmVzaXplOnRoaXMuZWxlbWVudCxtYXhXaWR0aDppLm1heFdpZHRoLG1heEhlaWdodDppLm1heEhlaWdodCxtaW5XaWR0aDppLm1pbldpZHRoLG1pbkhlaWdodDp0aGlzLl9taW5IZWlnaHQoKSxoYW5kbGVzOm8sc3RhcnQ6ZnVuY3Rpb24odCxuKXtlKHRoaXMpLmFkZENsYXNzKCJ1aS1kaWFsb2ctcmVzaXppbmciKSxyLl90cmlnZ2VyKCJyZXNpemVTdGFydCIsdCx1KG4pKX0scmVzaXplOmZ1bmN0aW9uKGUsdCl7ci5fdHJpZ2dlcigicmVzaXplIixlLHUodCkpfSxzdG9wOmZ1bmN0aW9uKHQsbil7ZSh0aGlzKS5yZW1vdmVDbGFzcygidWktZGlhbG9nLXJlc2l6aW5nIiksaS5oZWlnaHQ9ZSh0aGlzKS5oZWlnaHQoKSxpLndpZHRoPWUodGhpcykud2lkdGgoKSxyLl90cmlnZ2VyKCJyZXNpemVTdG9wIix0LHUobikpLGUudWkuZGlhbG9nLm92ZXJsYXkucmVzaXplKCl9fSkuY3NzKCJwb3NpdGlvbiIscykuZmluZCgiLnVpLXJlc2l6YWJsZS1zZSIpLmFkZENsYXNzKCJ1aS1pY29uIHVpLWljb24tZ3JpcC1kaWFnb25hbC1zZSIpfSxfbWluSGVpZ2h0OmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zO3JldHVybiBlLmhlaWdodD09PSJhdXRvIj9lLm1pbkhlaWdodDpNYXRoLm1pbihlLm1pbkhlaWdodCxlLmhlaWdodCl9LF9wb3NpdGlvbjpmdW5jdGlvbih0KXt2YXIgbj1bXSxyPVswLDBdLGk7aWYodCl7aWYodHlwZW9mIHQ9PSJzdHJpbmcifHx0eXBlb2YgdD09Im9iamVjdCImJiIwImluIHQpbj10LnNwbGl0P3Quc3BsaXQoIiAiKTpbdFswXSx0WzFdXSxuLmxlbmd0aD09PTEmJihuWzFdPW5bMF0pLGUuZWFjaChbImxlZnQiLCJ0b3AiXSxmdW5jdGlvbihlLHQpeytuW2VdPT09bltlXSYmKHJbZV09bltlXSxuW2VdPXQpfSksdD17bXk6bi5qb2luKCIgIiksYXQ6bi5qb2luKCIgIiksb2Zmc2V0OnIuam9pbigiICIpfTt0PWUuZXh0ZW5kKHt9LGUudWkuZGlhbG9nLnByb3RvdHlwZS5vcHRpb25zLnBvc2l0aW9uLHQpfWVsc2UgdD1lLnVpLmRpYWxvZy5wcm90b3R5cGUub3B0aW9ucy5wb3NpdGlvbjtpPXRoaXMudWlEaWFsb2cuaXMoIjp2aXNpYmxlIiksaXx8dGhpcy51aURpYWxvZy5zaG93KCksdGhpcy51aURpYWxvZy5wb3NpdGlvbih0KSxpfHx0aGlzLnVpRGlhbG9nLmhpZGUoKX0sX3NldE9wdGlvbnM6ZnVuY3Rpb24odCl7dmFyIG49dGhpcyxzPXt9LG89ITE7ZS5lYWNoKHQsZnVuY3Rpb24oZSx0KXtuLl9zZXRPcHRpb24oZSx0KSxlIGluIHImJihvPSEwKSxlIGluIGkmJihzW2VdPXQpfSksbyYmdGhpcy5fc2l6ZSgpLHRoaXMudWlEaWFsb2cuaXMoIjpkYXRhKHJlc2l6YWJsZSkiKSYmdGhpcy51aURpYWxvZy5yZXNpemFibGUoIm9wdGlvbiIscyl9LF9zZXRPcHRpb246ZnVuY3Rpb24odCxyKXt2YXIgaSxzLG89dGhpcy51aURpYWxvZztzd2l0Y2godCl7Y2FzZSJidXR0b25zIjp0aGlzLl9jcmVhdGVCdXR0b25zKHIpO2JyZWFrO2Nhc2UiY2xvc2VUZXh0Ijp0aGlzLnVpRGlhbG9nVGl0bGViYXJDbG9zZVRleHQudGV4dCgiIityKTticmVhaztjYXNlImRpYWxvZ0NsYXNzIjpvLnJlbW92ZUNsYXNzKHRoaXMub3B0aW9ucy5kaWFsb2dDbGFzcykuYWRkQ2xhc3MobityKTticmVhaztjYXNlImRpc2FibGVkIjpyP28uYWRkQ2xhc3MoInVpLWRpYWxvZy1kaXNhYmxlZCIpOm8ucmVtb3ZlQ2xhc3MoInVpLWRpYWxvZy1kaXNhYmxlZCIpO2JyZWFrO2Nhc2UiZHJhZ2dhYmxlIjppPW8uaXMoIjpkYXRhKGRyYWdnYWJsZSkiKSxpJiYhciYmby5kcmFnZ2FibGUoImRlc3Ryb3kiKSwhaSYmciYmdGhpcy5fbWFrZURyYWdnYWJsZSgpO2JyZWFrO2Nhc2UicG9zaXRpb24iOnRoaXMuX3Bvc2l0aW9uKHIpO2JyZWFrO2Nhc2UicmVzaXphYmxlIjpzPW8uaXMoIjpkYXRhKHJlc2l6YWJsZSkiKSxzJiYhciYmby5yZXNpemFibGUoImRlc3Ryb3kiKSxzJiZ0eXBlb2Ygcj09InN0cmluZyImJm8ucmVzaXphYmxlKCJvcHRpb24iLCJoYW5kbGVzIixyKSwhcyYmciE9PSExJiZ0aGlzLl9tYWtlUmVzaXphYmxlKHIpO2JyZWFrO2Nhc2UidGl0bGUiOmUoIi51aS1kaWFsb2ctdGl0bGUiLHRoaXMudWlEaWFsb2dUaXRsZWJhcikuaHRtbCgiIisocnx8IiYjMTYwOyIpKX10aGlzLl9zdXBlcih0LHIpfSxfc2l6ZTpmdW5jdGlvbigpe3ZhciB0LG4scixpPXRoaXMub3B0aW9ucyxzPXRoaXMudWlEaWFsb2cuaXMoIjp2aXNpYmxlIik7dGhpcy5lbGVtZW50LnNob3coKS5jc3Moe3dpZHRoOiJhdXRvIixtaW5IZWlnaHQ6MCxoZWlnaHQ6MH0pLGkubWluV2lkdGg+aS53aWR0aCYmKGkud2lkdGg9aS5taW5XaWR0aCksdD10aGlzLnVpRGlhbG9nLmNzcyh7aGVpZ2h0OiJhdXRvIix3aWR0aDppLndpZHRofSkub3V0ZXJIZWlnaHQoKSxuPU1hdGgubWF4KDAsaS5taW5IZWlnaHQtdCksaS5oZWlnaHQ9PT0iYXV0byI/ZS5zdXBwb3J0Lm1pbkhlaWdodD90aGlzLmVsZW1lbnQuY3NzKHttaW5IZWlnaHQ6bixoZWlnaHQ6ImF1dG8ifSk6KHRoaXMudWlEaWFsb2cuc2hvdygpLHI9dGhpcy5lbGVtZW50LmNzcygiaGVpZ2h0IiwiYXV0byIpLmhlaWdodCgpLHN8fHRoaXMudWlEaWFsb2cuaGlkZSgpLHRoaXMuZWxlbWVudC5oZWlnaHQoTWF0aC5tYXgocixuKSkpOnRoaXMuZWxlbWVudC5oZWlnaHQoTWF0aC5tYXgoaS5oZWlnaHQtdCwwKSksdGhpcy51aURpYWxvZy5pcygiOmRhdGEocmVzaXphYmxlKSIpJiZ0aGlzLnVpRGlhbG9nLnJlc2l6YWJsZSgib3B0aW9uIiwibWluSGVpZ2h0Iix0aGlzLl9taW5IZWlnaHQoKSl9fSksZS5leHRlbmQoZS51aS5kaWFsb2cse3V1aWQ6MCxtYXhaOjAsZ2V0VGl0bGVJZDpmdW5jdGlvbihlKXt2YXIgdD1lLmF0dHIoImlkIik7cmV0dXJuIHR8fCh0aGlzLnV1aWQrPTEsdD10aGlzLnV1aWQpLCJ1aS1kaWFsb2ctdGl0bGUtIit0fSxvdmVybGF5OmZ1bmN0aW9uKHQpe3RoaXMuJGVsPWUudWkuZGlhbG9nLm92ZXJsYXkuY3JlYXRlKHQpfX0pLGUuZXh0ZW5kKGUudWkuZGlhbG9nLm92ZXJsYXkse2luc3RhbmNlczpbXSxvbGRJbnN0YW5jZXM6W10sbWF4WjowLGV2ZW50czplLm1hcCgiZm9jdXMsbW91c2Vkb3duLG1vdXNldXAsa2V5ZG93bixrZXlwcmVzcyxjbGljayIuc3BsaXQoIiwiKSxmdW5jdGlvbihlKXtyZXR1cm4gZSsiLmRpYWxvZy1vdmVybGF5In0pLmpvaW4oIiAiKSxjcmVhdGU6ZnVuY3Rpb24odCl7dGhpcy5pbnN0YW5jZXMubGVuZ3RoPT09MCYmKHNldFRpbWVvdXQoZnVuY3Rpb24oKXtlLnVpLmRpYWxvZy5vdmVybGF5Lmluc3RhbmNlcy5sZW5ndGgmJmUoZG9jdW1lbnQpLmJpbmQoZS51aS5kaWFsb2cub3ZlcmxheS5ldmVudHMsZnVuY3Rpb24odCl7aWYoZSh0LnRhcmdldCkuekluZGV4KCk8ZS51aS5kaWFsb2cub3ZlcmxheS5tYXhaKXJldHVybiExfSl9LDEpLGUod2luZG93KS5iaW5kKCJyZXNpemUuZGlhbG9nLW92ZXJsYXkiLGUudWkuZGlhbG9nLm92ZXJsYXkucmVzaXplKSk7dmFyIG49dGhpcy5vbGRJbnN0YW5jZXMucG9wKCl8fGUoIjxkaXY+IikuYWRkQ2xhc3MoInVpLXdpZGdldC1vdmVybGF5Iik7cmV0dXJuIGUoZG9jdW1lbnQpLmJpbmQoImtleWRvd24uZGlhbG9nLW92ZXJsYXkiLGZ1bmN0aW9uKHIpe3ZhciBpPWUudWkuZGlhbG9nLm92ZXJsYXkuaW5zdGFuY2VzO2kubGVuZ3RoIT09MCYmaVtpLmxlbmd0aC0xXT09PW4mJnQub3B0aW9ucy5jbG9zZU9uRXNjYXBlJiYhci5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmci5rZXlDb2RlJiZyLmtleUNvZGU9PT1lLnVpLmtleUNvZGUuRVNDQVBFJiYodC5jbG9zZShyKSxyLnByZXZlbnREZWZhdWx0KCkpfSksbi5hcHBlbmRUbyhkb2N1bWVudC5ib2R5KS5jc3Moe3dpZHRoOnRoaXMud2lkdGgoKSxoZWlnaHQ6dGhpcy5oZWlnaHQoKX0pLGUuZm4uYmdpZnJhbWUmJm4uYmdpZnJhbWUoKSx0aGlzLmluc3RhbmNlcy5wdXNoKG4pLG59LGRlc3Ryb3k6ZnVuY3Rpb24odCl7dmFyIG49ZS5pbkFycmF5KHQsdGhpcy5pbnN0YW5jZXMpLHI9MDtuIT09LTEmJnRoaXMub2xkSW5zdGFuY2VzLnB1c2godGhpcy5pbnN0YW5jZXMuc3BsaWNlKG4sMSlbMF0pLHRoaXMuaW5zdGFuY2VzLmxlbmd0aD09PTAmJmUoW2RvY3VtZW50LHdpbmRvd10pLnVuYmluZCgiLmRpYWxvZy1vdmVybGF5IiksdC5oZWlnaHQoMCkud2lkdGgoMCkucmVtb3ZlKCksZS5lYWNoKHRoaXMuaW5zdGFuY2VzLGZ1bmN0aW9uKCl7cj1NYXRoLm1heChyLHRoaXMuY3NzKCJ6LWluZGV4IikpfSksdGhpcy5tYXhaPXJ9LGhlaWdodDpmdW5jdGlvbigpe3ZhciB0LG47cmV0dXJuIGUuYnJvd3Nlci5tc2llPyh0PU1hdGgubWF4KGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zY3JvbGxIZWlnaHQsZG9jdW1lbnQuYm9keS5zY3JvbGxIZWlnaHQpLG49TWF0aC5tYXgoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50Lm9mZnNldEhlaWdodCxkb2N1bWVudC5ib2R5Lm9mZnNldEhlaWdodCksdDxuP2Uod2luZG93KS5oZWlnaHQoKSsicHgiOnQrInB4Iik6ZShkb2N1bWVudCkuaGVpZ2h0KCkrInB4In0sd2lkdGg6ZnVuY3Rpb24oKXt2YXIgdCxuO3JldHVybiBlLmJyb3dzZXIubXNpZT8odD1NYXRoLm1heChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc2Nyb2xsV2lkdGgsZG9jdW1lbnQuYm9keS5zY3JvbGxXaWR0aCksbj1NYXRoLm1heChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQub2Zmc2V0V2lkdGgsZG9jdW1lbnQuYm9keS5vZmZzZXRXaWR0aCksdDxuP2Uod2luZG93KS53aWR0aCgpKyJweCI6dCsicHgiKTplKGRvY3VtZW50KS53aWR0aCgpKyJweCJ9LHJlc2l6ZTpmdW5jdGlvbigpe3ZhciB0PWUoW10pO2UuZWFjaChlLnVpLmRpYWxvZy5vdmVybGF5Lmluc3RhbmNlcyxmdW5jdGlvbigpe3Q9dC5hZGQodGhpcyl9KSx0LmNzcyh7d2lkdGg6MCxoZWlnaHQ6MH0pLmNzcyh7d2lkdGg6ZS51aS5kaWFsb2cub3ZlcmxheS53aWR0aCgpLGhlaWdodDplLnVpLmRpYWxvZy5vdmVybGF5LmhlaWdodCgpfSl9fSksZS5leHRlbmQoZS51aS5kaWFsb2cub3ZlcmxheS5wcm90b3R5cGUse2Rlc3Ryb3k6ZnVuY3Rpb24oKXtlLnVpLmRpYWxvZy5vdmVybGF5LmRlc3Ryb3kodGhpcy4kZWwpfX0pfSkoalF1ZXJ5KTsoZnVuY3Rpb24oZSx0KXt2YXIgbj0hMTtlLndpZGdldCgidWkubWVudSIse3ZlcnNpb246IjEuOS4wIixkZWZhdWx0RWxlbWVudDoiPHVsPiIsZGVsYXk6MzAwLG9wdGlvbnM6e2ljb25zOntzdWJtZW51OiJ1aS1pY29uLWNhcmF0LTEtZSJ9LG1lbnVzOiJ1bCIscG9zaXRpb246e215OiJsZWZ0IHRvcCIsYXQ6InJpZ2h0IHRvcCJ9LHJvbGU6Im1lbnUiLGJsdXI6bnVsbCxmb2N1czpudWxsLHNlbGVjdDpudWxsfSxfY3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5hY3RpdmVNZW51PXRoaXMuZWxlbWVudCx0aGlzLmVsZW1lbnQudW5pcXVlSWQoKS5hZGRDbGFzcygidWktbWVudSB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCIpLnRvZ2dsZUNsYXNzKCJ1aS1tZW51LWljb25zIiwhIXRoaXMuZWxlbWVudC5maW5kKCIudWktaWNvbiIpLmxlbmd0aCkuYXR0cih7cm9sZTp0aGlzLm9wdGlvbnMucm9sZSx0YWJJbmRleDowfSkuYmluZCgiY2xpY2siK3RoaXMuZXZlbnROYW1lc3BhY2UsZS5wcm94eShmdW5jdGlvbihlKXt0aGlzLm9wdGlvbnMuZGlzYWJsZWQmJmUucHJldmVudERlZmF1bHQoKX0sdGhpcykpLHRoaXMub3B0aW9ucy5kaXNhYmxlZCYmdGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS1zdGF0ZS1kaXNhYmxlZCIpLmF0dHIoImFyaWEtZGlzYWJsZWQiLCJ0cnVlIiksdGhpcy5fb24oeyJtb3VzZWRvd24gLnVpLW1lbnUtaXRlbSA+IGEiOmZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKX0sImNsaWNrIC51aS1zdGF0ZS1kaXNhYmxlZCA+IGEiOmZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKX0sImNsaWNrIC51aS1tZW51LWl0ZW06aGFzKGEpIjpmdW5jdGlvbih0KXt2YXIgcj1lKHQudGFyZ2V0KS5jbG9zZXN0KCIudWktbWVudS1pdGVtIik7IW4mJnIubm90KCIudWktc3RhdGUtZGlzYWJsZWQiKS5sZW5ndGgmJihuPSEwLHRoaXMuc2VsZWN0KHQpLHIuaGFzKCIudWktbWVudSIpLmxlbmd0aD90aGlzLmV4cGFuZCh0KTp0aGlzLmVsZW1lbnQuaXMoIjpmb2N1cyIpfHwodGhpcy5lbGVtZW50LnRyaWdnZXIoImZvY3VzIixbITBdKSx0aGlzLmFjdGl2ZSYmdGhpcy5hY3RpdmUucGFyZW50cygiLnVpLW1lbnUiKS5sZW5ndGg9PT0xJiZjbGVhclRpbWVvdXQodGhpcy50aW1lcikpKX0sIm1vdXNlZW50ZXIgLnVpLW1lbnUtaXRlbSI6ZnVuY3Rpb24odCl7dmFyIG49ZSh0LmN1cnJlbnRUYXJnZXQpO24uc2libGluZ3MoKS5jaGlsZHJlbigiLnVpLXN0YXRlLWFjdGl2ZSIpLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKSx0aGlzLmZvY3VzKHQsbil9LG1vdXNlbGVhdmU6ImNvbGxhcHNlQWxsIiwibW91c2VsZWF2ZSAudWktbWVudSI6ImNvbGxhcHNlQWxsIixmb2N1czpmdW5jdGlvbihlLHQpe3ZhciBuPXRoaXMuYWN0aXZlfHx0aGlzLmVsZW1lbnQuY2hpbGRyZW4oIi51aS1tZW51LWl0ZW0iKS5lcSgwKTt0fHx0aGlzLmZvY3VzKGUsbil9LGJsdXI6ZnVuY3Rpb24odCl7dGhpcy5fZGVsYXkoZnVuY3Rpb24oKXtlLmNvbnRhaW5zKHRoaXMuZWxlbWVudFswXSx0aGlzLmRvY3VtZW50WzBdLmFjdGl2ZUVsZW1lbnQpfHx0aGlzLmNvbGxhcHNlQWxsKHQpfSl9LGtleWRvd246Il9rZXlkb3duIn0pLHRoaXMucmVmcmVzaCgpLHRoaXMuX29uKHRoaXMuZG9jdW1lbnQse2NsaWNrOmZ1bmN0aW9uKHQpe2UodC50YXJnZXQpLmNsb3Nlc3QoIi51aS1tZW51IikubGVuZ3RofHx0aGlzLmNvbGxhcHNlQWxsKHQpLG49ITF9fSl9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LnJlbW92ZUF0dHIoImFyaWEtYWN0aXZlZGVzY2VuZGFudCIpLmZpbmQoIi51aS1tZW51IikuYW5kU2VsZigpLnJlbW92ZUNsYXNzKCJ1aS1tZW51IHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsIHVpLW1lbnUtaWNvbnMiKS5yZW1vdmVBdHRyKCJyb2xlIikucmVtb3ZlQXR0cigidGFiSW5kZXgiKS5yZW1vdmVBdHRyKCJhcmlhLWxhYmVsbGVkYnkiKS5yZW1vdmVBdHRyKCJhcmlhLWV4cGFuZGVkIikucmVtb3ZlQXR0cigiYXJpYS1oaWRkZW4iKS5yZW1vdmVBdHRyKCJhcmlhLWRpc2FibGVkIikucmVtb3ZlVW5pcXVlSWQoKS5zaG93KCksdGhpcy5lbGVtZW50LmZpbmQoIi51aS1tZW51LWl0ZW0iKS5yZW1vdmVDbGFzcygidWktbWVudS1pdGVtIikucmVtb3ZlQXR0cigicm9sZSIpLnJlbW92ZUF0dHIoImFyaWEtZGlzYWJsZWQiKS5jaGlsZHJlbigiYSIpLnJlbW92ZVVuaXF1ZUlkKCkucmVtb3ZlQ2xhc3MoInVpLWNvcm5lci1hbGwgdWktc3RhdGUtaG92ZXIiKS5yZW1vdmVBdHRyKCJ0YWJJbmRleCIpLnJlbW92ZUF0dHIoInJvbGUiKS5yZW1vdmVBdHRyKCJhcmlhLWhhc3BvcHVwIikuY2hpbGRyZW4oKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKTt0LmRhdGEoInVpLW1lbnUtc3VibWVudS1jYXJhdCIpJiZ0LnJlbW92ZSgpfSksdGhpcy5lbGVtZW50LmZpbmQoIi51aS1tZW51LWRpdmlkZXIiKS5yZW1vdmVDbGFzcygidWktbWVudS1kaXZpZGVyIHVpLXdpZGdldC1jb250ZW50Iil9LF9rZXlkb3duOmZ1bmN0aW9uKHQpe2Z1bmN0aW9uIGEoZSl7cmV0dXJuIGUucmVwbGFjZSgvW1wtXFtcXXt9KCkqKz8uLFxcXF4kfCNcc10vZywiXFwkJiIpfXZhciBuLHIsaSxzLG8sdT0hMDtzd2l0Y2godC5rZXlDb2RlKXtjYXNlIGUudWkua2V5Q29kZS5QQUdFX1VQOnRoaXMucHJldmlvdXNQYWdlKHQpO2JyZWFrO2Nhc2UgZS51aS5rZXlDb2RlLlBBR0VfRE9XTjp0aGlzLm5leHRQYWdlKHQpO2JyZWFrO2Nhc2UgZS51aS5rZXlDb2RlLkhPTUU6dGhpcy5fbW92ZSgiZmlyc3QiLCJmaXJzdCIsdCk7YnJlYWs7Y2FzZSBlLnVpLmtleUNvZGUuRU5EOnRoaXMuX21vdmUoImxhc3QiLCJsYXN0Iix0KTticmVhaztjYXNlIGUudWkua2V5Q29kZS5VUDp0aGlzLnByZXZpb3VzKHQpO2JyZWFrO2Nhc2UgZS51aS5rZXlDb2RlLkRPV046dGhpcy5uZXh0KHQpO2JyZWFrO2Nhc2UgZS51aS5rZXlDb2RlLkxFRlQ6dGhpcy5jb2xsYXBzZSh0KTticmVhaztjYXNlIGUudWkua2V5Q29kZS5SSUdIVDp0aGlzLmFjdGl2ZSYmIXRoaXMuYWN0aXZlLmlzKCIudWktc3RhdGUtZGlzYWJsZWQiKSYmdGhpcy5leHBhbmQodCk7YnJlYWs7Y2FzZSBlLnVpLmtleUNvZGUuRU5URVI6Y2FzZSBlLnVpLmtleUNvZGUuU1BBQ0U6dGhpcy5fYWN0aXZhdGUodCk7YnJlYWs7Y2FzZSBlLnVpLmtleUNvZGUuRVNDQVBFOnRoaXMuY29sbGFwc2UodCk7YnJlYWs7ZGVmYXVsdDp1PSExLHI9dGhpcy5wcmV2aW91c0ZpbHRlcnx8IiIsaT1TdHJpbmcuZnJvbUNoYXJDb2RlKHQua2V5Q29kZSkscz0hMSxjbGVhclRpbWVvdXQodGhpcy5maWx0ZXJUaW1lciksaT09PXI/cz0hMDppPXIraSxvPW5ldyBSZWdFeHAoIl4iK2EoaSksImkiKSxuPXRoaXMuYWN0aXZlTWVudS5jaGlsZHJlbigiLnVpLW1lbnUtaXRlbSIpLmZpbHRlcihmdW5jdGlvbigpe3JldHVybiBvLnRlc3QoZSh0aGlzKS5jaGlsZHJlbigiYSIpLnRleHQoKSl9KSxuPXMmJm4uaW5kZXgodGhpcy5hY3RpdmUubmV4dCgpKSE9PS0xP3RoaXMuYWN0aXZlLm5leHRBbGwoIi51aS1tZW51LWl0ZW0iKTpuLG4ubGVuZ3RofHwoaT1TdHJpbmcuZnJvbUNoYXJDb2RlKHQua2V5Q29kZSksbz1uZXcgUmVnRXhwKCJeIithKGkpLCJpIiksbj10aGlzLmFjdGl2ZU1lbnUuY2hpbGRyZW4oIi51aS1tZW51LWl0ZW0iKS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4gby50ZXN0KGUodGhpcykuY2hpbGRyZW4oImEiKS50ZXh0KCkpfSkpLG4ubGVuZ3RoPyh0aGlzLmZvY3VzKHQsbiksbi5sZW5ndGg+MT8odGhpcy5wcmV2aW91c0ZpbHRlcj1pLHRoaXMuZmlsdGVyVGltZXI9dGhpcy5fZGVsYXkoZnVuY3Rpb24oKXtkZWxldGUgdGhpcy5wcmV2aW91c0ZpbHRlcn0sMWUzKSk6ZGVsZXRlIHRoaXMucHJldmlvdXNGaWx0ZXIpOmRlbGV0ZSB0aGlzLnByZXZpb3VzRmlsdGVyfXUmJnQucHJldmVudERlZmF1bHQoKX0sX2FjdGl2YXRlOmZ1bmN0aW9uKGUpe3RoaXMuYWN0aXZlLmlzKCIudWktc3RhdGUtZGlzYWJsZWQiKXx8KHRoaXMuYWN0aXZlLmNoaWxkcmVuKCJhW2FyaWEtaGFzcG9wdXA9J3RydWUnXSIpLmxlbmd0aD90aGlzLmV4cGFuZChlKTp0aGlzLnNlbGVjdChlKSl9LHJlZnJlc2g6ZnVuY3Rpb24oKXt2YXIgdCxuPXRoaXMub3B0aW9ucy5pY29ucy5zdWJtZW51LHI9dGhpcy5lbGVtZW50LmZpbmQodGhpcy5vcHRpb25zLm1lbnVzKyI6bm90KC51aS1tZW51KSIpLmFkZENsYXNzKCJ1aS1tZW51IHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsIikuaGlkZSgpLmF0dHIoe3JvbGU6dGhpcy5vcHRpb25zLnJvbGUsImFyaWEtaGlkZGVuIjoidHJ1ZSIsImFyaWEtZXhwYW5kZWQiOiJmYWxzZSJ9KTt0PXIuYWRkKHRoaXMuZWxlbWVudCksdC5jaGlsZHJlbigiOm5vdCgudWktbWVudS1pdGVtKTpoYXMoYSkiKS5hZGRDbGFzcygidWktbWVudS1pdGVtIikuYXR0cigicm9sZSIsInByZXNlbnRhdGlvbiIpLmNoaWxkcmVuKCJhIikudW5pcXVlSWQoKS5hZGRDbGFzcygidWktY29ybmVyLWFsbCIpLmF0dHIoe3RhYkluZGV4Oi0xLHJvbGU6dGhpcy5faXRlbVJvbGUoKX0pLHQuY2hpbGRyZW4oIjpub3QoLnVpLW1lbnUtaXRlbSkiKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIHQ9ZSh0aGlzKTsvW15cLeKAlOKAk1xzXS8udGVzdCh0LnRleHQoKSl8fHQuYWRkQ2xhc3MoInVpLXdpZGdldC1jb250ZW50IHVpLW1lbnUtZGl2aWRlciIpfSksdC5jaGlsZHJlbigiLnVpLXN0YXRlLWRpc2FibGVkIikuYXR0cigiYXJpYS1kaXNhYmxlZCIsInRydWUiKSxyLmVhY2goZnVuY3Rpb24oKXt2YXIgdD1lKHRoaXMpLHI9dC5wcmV2KCJhIiksaT1lKCI8c3Bhbj4iKS5hZGRDbGFzcygidWktbWVudS1pY29uIHVpLWljb24gIituKS5kYXRhKCJ1aS1tZW51LXN1Ym1lbnUtY2FyYXQiLCEwKTtyLmF0dHIoImFyaWEtaGFzcG9wdXAiLCJ0cnVlIikucHJlcGVuZChpKSx0LmF0dHIoImFyaWEtbGFiZWxsZWRieSIsci5hdHRyKCJpZCIpKX0pLHRoaXMuYWN0aXZlJiYhZS5jb250YWlucyh0aGlzLmVsZW1lbnRbMF0sdGhpcy5hY3RpdmVbMF0pJiZ0aGlzLmJsdXIoKX0sX2l0ZW1Sb2xlOmZ1bmN0aW9uKCl7cmV0dXJue21lbnU6Im1lbnVpdGVtIixsaXN0Ym94OiJvcHRpb24ifVt0aGlzLm9wdGlvbnMucm9sZV19LGZvY3VzOmZ1bmN0aW9uKGUsdCl7dmFyIG4scjt0aGlzLmJsdXIoZSxlJiZlLnR5cGU9PT0iZm9jdXMiKSx0aGlzLl9zY3JvbGxJbnRvVmlldyh0KSx0aGlzLmFjdGl2ZT10LmZpcnN0KCkscj10aGlzLmFjdGl2ZS5jaGlsZHJlbigiYSIpLmFkZENsYXNzKCJ1aS1zdGF0ZS1mb2N1cyIpLHRoaXMub3B0aW9ucy5yb2xlJiZ0aGlzLmVsZW1lbnQuYXR0cigiYXJpYS1hY3RpdmVkZXNjZW5kYW50IixyLmF0dHIoImlkIikpLHRoaXMuYWN0aXZlLnBhcmVudCgpLmNsb3Nlc3QoIi51aS1tZW51LWl0ZW0iKS5jaGlsZHJlbigiYTpmaXJzdCIpLmFkZENsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKSxlJiZlLnR5cGU9PT0ia2V5ZG93biI/dGhpcy5fY2xvc2UoKTp0aGlzLnRpbWVyPXRoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7dGhpcy5fY2xvc2UoKX0sdGhpcy5kZWxheSksbj10LmNoaWxkcmVuKCIudWktbWVudSIpLG4ubGVuZ3RoJiYvXm1vdXNlLy50ZXN0KGUudHlwZSkmJnRoaXMuX3N0YXJ0T3BlbmluZyhuKSx0aGlzLmFjdGl2ZU1lbnU9dC5wYXJlbnQoKSx0aGlzLl90cmlnZ2VyKCJmb2N1cyIsZSx7aXRlbTp0fSl9LF9zY3JvbGxJbnRvVmlldzpmdW5jdGlvbih0KXt2YXIgbixyLGkscyxvLHU7dGhpcy5faGFzU2Nyb2xsKCkmJihuPXBhcnNlRmxvYXQoZS5jc3ModGhpcy5hY3RpdmVNZW51WzBdLCJib3JkZXJUb3BXaWR0aCIpKXx8MCxyPXBhcnNlRmxvYXQoZS5jc3ModGhpcy5hY3RpdmVNZW51WzBdLCJwYWRkaW5nVG9wIikpfHwwLGk9dC5vZmZzZXQoKS50b3AtdGhpcy5hY3RpdmVNZW51Lm9mZnNldCgpLnRvcC1uLXIscz10aGlzLmFjdGl2ZU1lbnUuc2Nyb2xsVG9wKCksbz10aGlzLmFjdGl2ZU1lbnUuaGVpZ2h0KCksdT10LmhlaWdodCgpLGk8MD90aGlzLmFjdGl2ZU1lbnUuc2Nyb2xsVG9wKHMraSk6aSt1Pm8mJnRoaXMuYWN0aXZlTWVudS5zY3JvbGxUb3AocytpLW8rdSkpfSxibHVyOmZ1bmN0aW9uKGUsdCl7dHx8Y2xlYXJUaW1lb3V0KHRoaXMudGltZXIpO2lmKCF0aGlzLmFjdGl2ZSlyZXR1cm47dGhpcy5hY3RpdmUuY2hpbGRyZW4oImEiKS5yZW1vdmVDbGFzcygidWktc3RhdGUtZm9jdXMiKSx0aGlzLmFjdGl2ZT1udWxsLHRoaXMuX3RyaWdnZXIoImJsdXIiLGUse2l0ZW06dGhpcy5hY3RpdmV9KX0sX3N0YXJ0T3BlbmluZzpmdW5jdGlvbihlKXtjbGVhclRpbWVvdXQodGhpcy50aW1lcik7aWYoZS5hdHRyKCJhcmlhLWhpZGRlbiIpIT09InRydWUiKXJldHVybjt0aGlzLnRpbWVyPXRoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7dGhpcy5fY2xvc2UoKSx0aGlzLl9vcGVuKGUpfSx0aGlzLmRlbGF5KX0sX29wZW46ZnVuY3Rpb24odCl7dmFyIG49ZS5leHRlbmQoe29mOnRoaXMuYWN0aXZlfSx0aGlzLm9wdGlvbnMucG9zaXRpb24pO2NsZWFyVGltZW91dCh0aGlzLnRpbWVyKSx0aGlzLmVsZW1lbnQuZmluZCgiLnVpLW1lbnUiKS5ub3QodC5wYXJlbnRzKCIudWktbWVudSIpKS5oaWRlKCkuYXR0cigiYXJpYS1oaWRkZW4iLCJ0cnVlIiksdC5zaG93KCkucmVtb3ZlQXR0cigiYXJpYS1oaWRkZW4iKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwidHJ1ZSIpLnBvc2l0aW9uKG4pfSxjb2xsYXBzZUFsbDpmdW5jdGlvbih0LG4pe2NsZWFyVGltZW91dCh0aGlzLnRpbWVyKSx0aGlzLnRpbWVyPXRoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7dmFyIHI9bj90aGlzLmVsZW1lbnQ6ZSh0JiZ0LnRhcmdldCkuY2xvc2VzdCh0aGlzLmVsZW1lbnQuZmluZCgiLnVpLW1lbnUiKSk7ci5sZW5ndGh8fChyPXRoaXMuZWxlbWVudCksdGhpcy5fY2xvc2UociksdGhpcy5ibHVyKHQpLHRoaXMuYWN0aXZlTWVudT1yfSx0aGlzLmRlbGF5KX0sX2Nsb3NlOmZ1bmN0aW9uKGUpe2V8fChlPXRoaXMuYWN0aXZlP3RoaXMuYWN0aXZlLnBhcmVudCgpOnRoaXMuZWxlbWVudCksZS5maW5kKCIudWktbWVudSIpLmhpZGUoKS5hdHRyKCJhcmlhLWhpZGRlbiIsInRydWUiKS5hdHRyKCJhcmlhLWV4cGFuZGVkIiwiZmFsc2UiKS5lbmQoKS5maW5kKCJhLnVpLXN0YXRlLWFjdGl2ZSIpLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKX0sY29sbGFwc2U6ZnVuY3Rpb24oZSl7dmFyIHQ9dGhpcy5hY3RpdmUmJnRoaXMuYWN0aXZlLnBhcmVudCgpLmNsb3Nlc3QoIi51aS1tZW51LWl0ZW0iLHRoaXMuZWxlbWVudCk7dCYmdC5sZW5ndGgmJih0aGlzLl9jbG9zZSgpLHRoaXMuZm9jdXMoZSx0KSl9LGV4cGFuZDpmdW5jdGlvbihlKXt2YXIgdD10aGlzLmFjdGl2ZSYmdGhpcy5hY3RpdmUuY2hpbGRyZW4oIi51aS1tZW51ICIpLmNoaWxkcmVuKCIudWktbWVudS1pdGVtIikuZmlyc3QoKTt0JiZ0Lmxlbmd0aCYmKHRoaXMuX29wZW4odC5wYXJlbnQoKSksdGhpcy5fZGVsYXkoZnVuY3Rpb24oKXt0aGlzLmZvY3VzKGUsdCl9KSl9LG5leHQ6ZnVuY3Rpb24oZSl7dGhpcy5fbW92ZSgibmV4dCIsImZpcnN0IixlKX0scHJldmlvdXM6ZnVuY3Rpb24oZSl7dGhpcy5fbW92ZSgicHJldiIsImxhc3QiLGUpfSxpc0ZpcnN0SXRlbTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmFjdGl2ZSYmIXRoaXMuYWN0aXZlLnByZXZBbGwoIi51aS1tZW51LWl0ZW0iKS5sZW5ndGh9LGlzTGFzdEl0ZW06ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hY3RpdmUmJiF0aGlzLmFjdGl2ZS5uZXh0QWxsKCIudWktbWVudS1pdGVtIikubGVuZ3RofSxfbW92ZTpmdW5jdGlvbihlLHQsbil7dmFyIHI7dGhpcy5hY3RpdmUmJihlPT09ImZpcnN0Inx8ZT09PSJsYXN0Ij9yPXRoaXMuYWN0aXZlW2U9PT0iZmlyc3QiPyJwcmV2QWxsIjoibmV4dEFsbCJdKCIudWktbWVudS1pdGVtIikuZXEoLTEpOnI9dGhpcy5hY3RpdmVbZSsiQWxsIl0oIi51aS1tZW51LWl0ZW0iKS5lcSgwKSk7aWYoIXJ8fCFyLmxlbmd0aHx8IXRoaXMuYWN0aXZlKXI9dGhpcy5hY3RpdmVNZW51LmNoaWxkcmVuKCIudWktbWVudS1pdGVtIilbdF0oKTt0aGlzLmZvY3VzKG4scil9LG5leHRQYWdlOmZ1bmN0aW9uKHQpe3ZhciBuLHIsaTtpZighdGhpcy5hY3RpdmUpe3RoaXMubmV4dCh0KTtyZXR1cm59aWYodGhpcy5pc0xhc3RJdGVtKCkpcmV0dXJuO3RoaXMuX2hhc1Njcm9sbCgpPyhyPXRoaXMuYWN0aXZlLm9mZnNldCgpLnRvcCxpPXRoaXMuZWxlbWVudC5oZWlnaHQoKSx0aGlzLmFjdGl2ZS5uZXh0QWxsKCIudWktbWVudS1pdGVtIikuZWFjaChmdW5jdGlvbigpe3JldHVybiBuPWUodGhpcyksbi5vZmZzZXQoKS50b3Atci1pPDB9KSx0aGlzLmZvY3VzKHQsbikpOnRoaXMuZm9jdXModCx0aGlzLmFjdGl2ZU1lbnUuY2hpbGRyZW4oIi51aS1tZW51LWl0ZW0iKVt0aGlzLmFjdGl2ZT8ibGFzdCI6ImZpcnN0Il0oKSl9LHByZXZpb3VzUGFnZTpmdW5jdGlvbih0KXt2YXIgbixyLGk7aWYoIXRoaXMuYWN0aXZlKXt0aGlzLm5leHQodCk7cmV0dXJufWlmKHRoaXMuaXNGaXJzdEl0ZW0oKSlyZXR1cm47dGhpcy5faGFzU2Nyb2xsKCk/KHI9dGhpcy5hY3RpdmUub2Zmc2V0KCkudG9wLGk9dGhpcy5lbGVtZW50LmhlaWdodCgpLHRoaXMuYWN0aXZlLnByZXZBbGwoIi51aS1tZW51LWl0ZW0iKS5lYWNoKGZ1bmN0aW9uKCl7cmV0dXJuIG49ZSh0aGlzKSxuLm9mZnNldCgpLnRvcC1yK2k+MH0pLHRoaXMuZm9jdXModCxuKSk6dGhpcy5mb2N1cyh0LHRoaXMuYWN0aXZlTWVudS5jaGlsZHJlbigiLnVpLW1lbnUtaXRlbSIpLmZpcnN0KCkpfSxfaGFzU2Nyb2xsOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZWxlbWVudC5vdXRlckhlaWdodCgpPHRoaXMuZWxlbWVudC5wcm9wKCJzY3JvbGxIZWlnaHQiKX0sc2VsZWN0OmZ1bmN0aW9uKHQpe3RoaXMuYWN0aXZlPXRoaXMuYWN0aXZlfHxlKHQudGFyZ2V0KS5jbG9zZXN0KCIudWktbWVudS1pdGVtIik7dmFyIG49e2l0ZW06dGhpcy5hY3RpdmV9O3RoaXMuYWN0aXZlLmhhcygiLnVpLW1lbnUiKS5sZW5ndGh8fHRoaXMuY29sbGFwc2VBbGwodCwhMCksdGhpcy5fdHJpZ2dlcigic2VsZWN0Iix0LG4pfX0pfSkoalF1ZXJ5KTsoZnVuY3Rpb24oZSx0KXtlLndpZGdldCgidWkucHJvZ3Jlc3NiYXIiLHt2ZXJzaW9uOiIxLjkuMCIsb3B0aW9uczp7dmFsdWU6MCxtYXg6MTAwfSxtaW46MCxfY3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS1wcm9ncmVzc2JhciB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCIpLmF0dHIoe3JvbGU6InByb2dyZXNzYmFyIiwiYXJpYS12YWx1ZW1pbiI6dGhpcy5taW4sImFyaWEtdmFsdWVtYXgiOnRoaXMub3B0aW9ucy5tYXgsImFyaWEtdmFsdWVub3ciOnRoaXMuX3ZhbHVlKCl9KSx0aGlzLnZhbHVlRGl2PWUoIjxkaXYgY2xhc3M9J3VpLXByb2dyZXNzYmFyLXZhbHVlIHVpLXdpZGdldC1oZWFkZXIgdWktY29ybmVyLWxlZnQnPjwvZGl2PiIpLmFwcGVuZFRvKHRoaXMuZWxlbWVudCksdGhpcy5vbGRWYWx1ZT10aGlzLl92YWx1ZSgpLHRoaXMuX3JlZnJlc2hWYWx1ZSgpfSxfZGVzdHJveTpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC5yZW1vdmVDbGFzcygidWktcHJvZ3Jlc3NiYXIgdWktd2lkZ2V0IHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1hbGwiKS5yZW1vdmVBdHRyKCJyb2xlIikucmVtb3ZlQXR0cigiYXJpYS12YWx1ZW1pbiIpLnJlbW92ZUF0dHIoImFyaWEtdmFsdWVtYXgiKS5yZW1vdmVBdHRyKCJhcmlhLXZhbHVlbm93IiksdGhpcy52YWx1ZURpdi5yZW1vdmUoKX0sdmFsdWU6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT10P3RoaXMuX3ZhbHVlKCk6KHRoaXMuX3NldE9wdGlvbigidmFsdWUiLGUpLHRoaXMpfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKGUsdCl7ZT09PSJ2YWx1ZSImJih0aGlzLm9wdGlvbnMudmFsdWU9dCx0aGlzLl9yZWZyZXNoVmFsdWUoKSx0aGlzLl92YWx1ZSgpPT09dGhpcy5vcHRpb25zLm1heCYmdGhpcy5fdHJpZ2dlcigiY29tcGxldGUiKSksdGhpcy5fc3VwZXIoZSx0KX0sX3ZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zLnZhbHVlO3JldHVybiB0eXBlb2YgZSE9Im51bWJlciImJihlPTApLE1hdGgubWluKHRoaXMub3B0aW9ucy5tYXgsTWF0aC5tYXgodGhpcy5taW4sZSkpfSxfcGVyY2VudGFnZTpmdW5jdGlvbigpe3JldHVybiAxMDAqdGhpcy5fdmFsdWUoKS90aGlzLm9wdGlvbnMubWF4fSxfcmVmcmVzaFZhbHVlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy52YWx1ZSgpLHQ9dGhpcy5fcGVyY2VudGFnZSgpO3RoaXMub2xkVmFsdWUhPT1lJiYodGhpcy5vbGRWYWx1ZT1lLHRoaXMuX3RyaWdnZXIoImNoYW5nZSIpKSx0aGlzLnZhbHVlRGl2LnRvZ2dsZShlPnRoaXMubWluKS50b2dnbGVDbGFzcygidWktY29ybmVyLXJpZ2h0IixlPT09dGhpcy5vcHRpb25zLm1heCkud2lkdGgodC50b0ZpeGVkKDApKyIlIiksdGhpcy5lbGVtZW50LmF0dHIoImFyaWEtdmFsdWVub3ciLGUpfX0pfSkoalF1ZXJ5KTsoZnVuY3Rpb24oZSx0KXt2YXIgbj01O2Uud2lkZ2V0KCJ1aS5zbGlkZXIiLGUudWkubW91c2Use3ZlcnNpb246IjEuOS4wIix3aWRnZXRFdmVudFByZWZpeDoic2xpZGUiLG9wdGlvbnM6e2FuaW1hdGU6ITEsZGlzdGFuY2U6MCxtYXg6MTAwLG1pbjowLG9yaWVudGF0aW9uOiJob3Jpem9udGFsIixyYW5nZTohMSxzdGVwOjEsdmFsdWU6MCx2YWx1ZXM6bnVsbH0sX2NyZWF0ZTpmdW5jdGlvbigpe3ZhciB0LHI9dGhpcy5vcHRpb25zLGk9dGhpcy5lbGVtZW50LmZpbmQoIi51aS1zbGlkZXItaGFuZGxlIikuYWRkQ2xhc3MoInVpLXN0YXRlLWRlZmF1bHQgdWktY29ybmVyLWFsbCIpLHM9IjxhIGNsYXNzPSd1aS1zbGlkZXItaGFuZGxlIHVpLXN0YXRlLWRlZmF1bHQgdWktY29ybmVyLWFsbCcgaHJlZj0nIyc+PC9hPiIsbz1yLnZhbHVlcyYmci52YWx1ZXMubGVuZ3RofHwxLHU9W107dGhpcy5fa2V5U2xpZGluZz0hMSx0aGlzLl9tb3VzZVNsaWRpbmc9ITEsdGhpcy5fYW5pbWF0ZU9mZj0hMCx0aGlzLl9oYW5kbGVJbmRleD1udWxsLHRoaXMuX2RldGVjdE9yaWVudGF0aW9uKCksdGhpcy5fbW91c2VJbml0KCksdGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS1zbGlkZXIgdWktc2xpZGVyLSIrdGhpcy5vcmllbnRhdGlvbisiIHVpLXdpZGdldCIrIiB1aS13aWRnZXQtY29udGVudCIrIiB1aS1jb3JuZXItYWxsIisoci5kaXNhYmxlZD8iIHVpLXNsaWRlci1kaXNhYmxlZCB1aS1kaXNhYmxlZCI6IiIpKSx0aGlzLnJhbmdlPWUoW10pLHIucmFuZ2UmJihyLnJhbmdlPT09ITAmJihyLnZhbHVlc3x8KHIudmFsdWVzPVt0aGlzLl92YWx1ZU1pbigpLHRoaXMuX3ZhbHVlTWluKCldKSxyLnZhbHVlcy5sZW5ndGgmJnIudmFsdWVzLmxlbmd0aCE9PTImJihyLnZhbHVlcz1bci52YWx1ZXNbMF0sci52YWx1ZXNbMF1dKSksdGhpcy5yYW5nZT1lKCI8ZGl2PjwvZGl2PiIpLmFwcGVuZFRvKHRoaXMuZWxlbWVudCkuYWRkQ2xhc3MoInVpLXNsaWRlci1yYW5nZSB1aS13aWRnZXQtaGVhZGVyIisoci5yYW5nZT09PSJtaW4ifHxyLnJhbmdlPT09Im1heCI/IiB1aS1zbGlkZXItcmFuZ2UtIityLnJhbmdlOiIiKSkpO2Zvcih0PWkubGVuZ3RoO3Q8bzt0KyspdS5wdXNoKHMpO3RoaXMuaGFuZGxlcz1pLmFkZChlKHUuam9pbigiIikpLmFwcGVuZFRvKHRoaXMuZWxlbWVudCkpLHRoaXMuaGFuZGxlPXRoaXMuaGFuZGxlcy5lcSgwKSx0aGlzLmhhbmRsZXMuYWRkKHRoaXMucmFuZ2UpLmZpbHRlcigiYSIpLmNsaWNrKGZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKX0pLm1vdXNlZW50ZXIoZnVuY3Rpb24oKXtyLmRpc2FibGVkfHxlKHRoaXMpLmFkZENsYXNzKCJ1aS1zdGF0ZS1ob3ZlciIpfSkubW91c2VsZWF2ZShmdW5jdGlvbigpe2UodGhpcykucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWhvdmVyIil9KS5mb2N1cyhmdW5jdGlvbigpe3IuZGlzYWJsZWQ/ZSh0aGlzKS5ibHVyKCk6KGUoIi51aS1zbGlkZXIgLnVpLXN0YXRlLWZvY3VzIikucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWZvY3VzIiksZSh0aGlzKS5hZGRDbGFzcygidWktc3RhdGUtZm9jdXMiKSl9KS5ibHVyKGZ1bmN0aW9uKCl7ZSh0aGlzKS5yZW1vdmVDbGFzcygidWktc3RhdGUtZm9jdXMiKX0pLHRoaXMuaGFuZGxlcy5lYWNoKGZ1bmN0aW9uKHQpe2UodGhpcykuZGF0YSgidWktc2xpZGVyLWhhbmRsZS1pbmRleCIsdCl9KSx0aGlzLl9vbih0aGlzLmhhbmRsZXMse2tleWRvd246ZnVuY3Rpb24odCl7dmFyIHIsaSxzLG8sdT1lKHQudGFyZ2V0KS5kYXRhKCJ1aS1zbGlkZXItaGFuZGxlLWluZGV4Iik7c3dpdGNoKHQua2V5Q29kZSl7Y2FzZSBlLnVpLmtleUNvZGUuSE9NRTpjYXNlIGUudWkua2V5Q29kZS5FTkQ6Y2FzZSBlLnVpLmtleUNvZGUuUEFHRV9VUDpjYXNlIGUudWkua2V5Q29kZS5QQUdFX0RPV046Y2FzZSBlLnVpLmtleUNvZGUuVVA6Y2FzZSBlLnVpLmtleUNvZGUuUklHSFQ6Y2FzZSBlLnVpLmtleUNvZGUuRE9XTjpjYXNlIGUudWkua2V5Q29kZS5MRUZUOnQucHJldmVudERlZmF1bHQoKTtpZighdGhpcy5fa2V5U2xpZGluZyl7dGhpcy5fa2V5U2xpZGluZz0hMCxlKHQudGFyZ2V0KS5hZGRDbGFzcygidWktc3RhdGUtYWN0aXZlIikscj10aGlzLl9zdGFydCh0LHUpO2lmKHI9PT0hMSlyZXR1cm59fW89dGhpcy5vcHRpb25zLnN0ZXAsdGhpcy5vcHRpb25zLnZhbHVlcyYmdGhpcy5vcHRpb25zLnZhbHVlcy5sZW5ndGg/aT1zPXRoaXMudmFsdWVzKHUpOmk9cz10aGlzLnZhbHVlKCk7c3dpdGNoKHQua2V5Q29kZSl7Y2FzZSBlLnVpLmtleUNvZGUuSE9NRTpzPXRoaXMuX3ZhbHVlTWluKCk7YnJlYWs7Y2FzZSBlLnVpLmtleUNvZGUuRU5EOnM9dGhpcy5fdmFsdWVNYXgoKTticmVhaztjYXNlIGUudWkua2V5Q29kZS5QQUdFX1VQOnM9dGhpcy5fdHJpbUFsaWduVmFsdWUoaSsodGhpcy5fdmFsdWVNYXgoKS10aGlzLl92YWx1ZU1pbigpKS9uKTticmVhaztjYXNlIGUudWkua2V5Q29kZS5QQUdFX0RPV046cz10aGlzLl90cmltQWxpZ25WYWx1ZShpLSh0aGlzLl92YWx1ZU1heCgpLXRoaXMuX3ZhbHVlTWluKCkpL24pO2JyZWFrO2Nhc2UgZS51aS5rZXlDb2RlLlVQOmNhc2UgZS51aS5rZXlDb2RlLlJJR0hUOmlmKGk9PT10aGlzLl92YWx1ZU1heCgpKXJldHVybjtzPXRoaXMuX3RyaW1BbGlnblZhbHVlKGkrbyk7YnJlYWs7Y2FzZSBlLnVpLmtleUNvZGUuRE9XTjpjYXNlIGUudWkua2V5Q29kZS5MRUZUOmlmKGk9PT10aGlzLl92YWx1ZU1pbigpKXJldHVybjtzPXRoaXMuX3RyaW1BbGlnblZhbHVlKGktbyl9dGhpcy5fc2xpZGUodCx1LHMpfSxrZXl1cDpmdW5jdGlvbih0KXt2YXIgbj1lKHQudGFyZ2V0KS5kYXRhKCJ1aS1zbGlkZXItaGFuZGxlLWluZGV4Iik7dGhpcy5fa2V5U2xpZGluZyYmKHRoaXMuX2tleVNsaWRpbmc9ITEsdGhpcy5fc3RvcCh0LG4pLHRoaXMuX2NoYW5nZSh0LG4pLGUodC50YXJnZXQpLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKSl9fSksdGhpcy5fcmVmcmVzaFZhbHVlKCksdGhpcy5fYW5pbWF0ZU9mZj0hMX0sX2Rlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLmhhbmRsZXMucmVtb3ZlKCksdGhpcy5yYW5nZS5yZW1vdmUoKSx0aGlzLmVsZW1lbnQucmVtb3ZlQ2xhc3MoInVpLXNsaWRlciB1aS1zbGlkZXItaG9yaXpvbnRhbCB1aS1zbGlkZXItdmVydGljYWwgdWktc2xpZGVyLWRpc2FibGVkIHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsIiksdGhpcy5fbW91c2VEZXN0cm95KCl9LF9tb3VzZUNhcHR1cmU6ZnVuY3Rpb24odCl7dmFyIG4scixpLHMsbyx1LGEsZixsPXRoaXMsYz10aGlzLm9wdGlvbnM7cmV0dXJuIGMuZGlzYWJsZWQ/ITE6KHRoaXMuZWxlbWVudFNpemU9e3dpZHRoOnRoaXMuZWxlbWVudC5vdXRlcldpZHRoKCksaGVpZ2h0OnRoaXMuZWxlbWVudC5vdXRlckhlaWdodCgpfSx0aGlzLmVsZW1lbnRPZmZzZXQ9dGhpcy5lbGVtZW50Lm9mZnNldCgpLG49e3g6dC5wYWdlWCx5OnQucGFnZVl9LHI9dGhpcy5fbm9ybVZhbHVlRnJvbU1vdXNlKG4pLGk9dGhpcy5fdmFsdWVNYXgoKS10aGlzLl92YWx1ZU1pbigpKzEsdGhpcy5oYW5kbGVzLmVhY2goZnVuY3Rpb24odCl7dmFyIG49TWF0aC5hYnMoci1sLnZhbHVlcyh0KSk7aT5uJiYoaT1uLHM9ZSh0aGlzKSxvPXQpfSksYy5yYW5nZT09PSEwJiZ0aGlzLnZhbHVlcygxKT09PWMubWluJiYobys9MSxzPWUodGhpcy5oYW5kbGVzW29dKSksdT10aGlzLl9zdGFydCh0LG8pLHU9PT0hMT8hMToodGhpcy5fbW91c2VTbGlkaW5nPSEwLHRoaXMuX2hhbmRsZUluZGV4PW8scy5hZGRDbGFzcygidWktc3RhdGUtYWN0aXZlIikuZm9jdXMoKSxhPXMub2Zmc2V0KCksZj0hZSh0LnRhcmdldCkucGFyZW50cygpLmFuZFNlbGYoKS5pcygiLnVpLXNsaWRlci1oYW5kbGUiKSx0aGlzLl9jbGlja09mZnNldD1mP3tsZWZ0OjAsdG9wOjB9OntsZWZ0OnQucGFnZVgtYS5sZWZ0LXMud2lkdGgoKS8yLHRvcDp0LnBhZ2VZLWEudG9wLXMuaGVpZ2h0KCkvMi0ocGFyc2VJbnQocy5jc3MoImJvcmRlclRvcFdpZHRoIiksMTApfHwwKS0ocGFyc2VJbnQocy5jc3MoImJvcmRlckJvdHRvbVdpZHRoIiksMTApfHwwKSsocGFyc2VJbnQocy5jc3MoIm1hcmdpblRvcCIpLDEwKXx8MCl9LHRoaXMuaGFuZGxlcy5oYXNDbGFzcygidWktc3RhdGUtaG92ZXIiKXx8dGhpcy5fc2xpZGUodCxvLHIpLHRoaXMuX2FuaW1hdGVPZmY9ITAsITApKX0sX21vdXNlU3RhcnQ6ZnVuY3Rpb24oZSl7cmV0dXJuITB9LF9tb3VzZURyYWc6ZnVuY3Rpb24oZSl7dmFyIHQ9e3g6ZS5wYWdlWCx5OmUucGFnZVl9LG49dGhpcy5fbm9ybVZhbHVlRnJvbU1vdXNlKHQpO3JldHVybiB0aGlzLl9zbGlkZShlLHRoaXMuX2hhbmRsZUluZGV4LG4pLCExfSxfbW91c2VTdG9wOmZ1bmN0aW9uKGUpe3JldHVybiB0aGlzLmhhbmRsZXMucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpLHRoaXMuX21vdXNlU2xpZGluZz0hMSx0aGlzLl9zdG9wKGUsdGhpcy5faGFuZGxlSW5kZXgpLHRoaXMuX2NoYW5nZShlLHRoaXMuX2hhbmRsZUluZGV4KSx0aGlzLl9oYW5kbGVJbmRleD1udWxsLHRoaXMuX2NsaWNrT2Zmc2V0PW51bGwsdGhpcy5fYW5pbWF0ZU9mZj0hMSwhMX0sX2RldGVjdE9yaWVudGF0aW9uOmZ1bmN0aW9uKCl7dGhpcy5vcmllbnRhdGlvbj10aGlzLm9wdGlvbnMub3JpZW50YXRpb249PT0idmVydGljYWwiPyJ2ZXJ0aWNhbCI6Imhvcml6b250YWwifSxfbm9ybVZhbHVlRnJvbU1vdXNlOmZ1bmN0aW9uKGUpe3ZhciB0LG4scixpLHM7cmV0dXJuIHRoaXMub3JpZW50YXRpb249PT0iaG9yaXpvbnRhbCI/KHQ9dGhpcy5lbGVtZW50U2l6ZS53aWR0aCxuPWUueC10aGlzLmVsZW1lbnRPZmZzZXQubGVmdC0odGhpcy5fY2xpY2tPZmZzZXQ/dGhpcy5fY2xpY2tPZmZzZXQubGVmdDowKSk6KHQ9dGhpcy5lbGVtZW50U2l6ZS5oZWlnaHQsbj1lLnktdGhpcy5lbGVtZW50T2Zmc2V0LnRvcC0odGhpcy5fY2xpY2tPZmZzZXQ/dGhpcy5fY2xpY2tPZmZzZXQudG9wOjApKSxyPW4vdCxyPjEmJihyPTEpLHI8MCYmKHI9MCksdGhpcy5vcmllbnRhdGlvbj09PSJ2ZXJ0aWNhbCImJihyPTEtciksaT10aGlzLl92YWx1ZU1heCgpLXRoaXMuX3ZhbHVlTWluKCkscz10aGlzLl92YWx1ZU1pbigpK3IqaSx0aGlzLl90cmltQWxpZ25WYWx1ZShzKX0sX3N0YXJ0OmZ1bmN0aW9uKGUsdCl7dmFyIG49e2hhbmRsZTp0aGlzLmhhbmRsZXNbdF0sdmFsdWU6dGhpcy52YWx1ZSgpfTtyZXR1cm4gdGhpcy5vcHRpb25zLnZhbHVlcyYmdGhpcy5vcHRpb25zLnZhbHVlcy5sZW5ndGgmJihuLnZhbHVlPXRoaXMudmFsdWVzKHQpLG4udmFsdWVzPXRoaXMudmFsdWVzKCkpLHRoaXMuX3RyaWdnZXIoInN0YXJ0IixlLG4pfSxfc2xpZGU6ZnVuY3Rpb24oZSx0LG4pe3ZhciByLGksczt0aGlzLm9wdGlvbnMudmFsdWVzJiZ0aGlzLm9wdGlvbnMudmFsdWVzLmxlbmd0aD8ocj10aGlzLnZhbHVlcyh0PzA6MSksdGhpcy5vcHRpb25zLnZhbHVlcy5sZW5ndGg9PT0yJiZ0aGlzLm9wdGlvbnMucmFuZ2U9PT0hMCYmKHQ9PT0wJiZuPnJ8fHQ9PT0xJiZuPHIpJiYobj1yKSxuIT09dGhpcy52YWx1ZXModCkmJihpPXRoaXMudmFsdWVzKCksaVt0XT1uLHM9dGhpcy5fdHJpZ2dlcigic2xpZGUiLGUse2hhbmRsZTp0aGlzLmhhbmRsZXNbdF0sdmFsdWU6bix2YWx1ZXM6aX0pLHI9dGhpcy52YWx1ZXModD8wOjEpLHMhPT0hMSYmdGhpcy52YWx1ZXModCxuLCEwKSkpOm4hPT10aGlzLnZhbHVlKCkmJihzPXRoaXMuX3RyaWdnZXIoInNsaWRlIixlLHtoYW5kbGU6dGhpcy5oYW5kbGVzW3RdLHZhbHVlOm59KSxzIT09ITEmJnRoaXMudmFsdWUobikpfSxfc3RvcDpmdW5jdGlvbihlLHQpe3ZhciBuPXtoYW5kbGU6dGhpcy5oYW5kbGVzW3RdLHZhbHVlOnRoaXMudmFsdWUoKX07dGhpcy5vcHRpb25zLnZhbHVlcyYmdGhpcy5vcHRpb25zLnZhbHVlcy5sZW5ndGgmJihuLnZhbHVlPXRoaXMudmFsdWVzKHQpLG4udmFsdWVzPXRoaXMudmFsdWVzKCkpLHRoaXMuX3RyaWdnZXIoInN0b3AiLGUsbil9LF9jaGFuZ2U6ZnVuY3Rpb24oZSx0KXtpZighdGhpcy5fa2V5U2xpZGluZyYmIXRoaXMuX21vdXNlU2xpZGluZyl7dmFyIG49e2hhbmRsZTp0aGlzLmhhbmRsZXNbdF0sdmFsdWU6dGhpcy52YWx1ZSgpfTt0aGlzLm9wdGlvbnMudmFsdWVzJiZ0aGlzLm9wdGlvbnMudmFsdWVzLmxlbmd0aCYmKG4udmFsdWU9dGhpcy52YWx1ZXModCksbi52YWx1ZXM9dGhpcy52YWx1ZXMoKSksdGhpcy5fdHJpZ2dlcigiY2hhbmdlIixlLG4pfX0sdmFsdWU6ZnVuY3Rpb24oZSl7aWYoYXJndW1lbnRzLmxlbmd0aCl7dGhpcy5vcHRpb25zLnZhbHVlPXRoaXMuX3RyaW1BbGlnblZhbHVlKGUpLHRoaXMuX3JlZnJlc2hWYWx1ZSgpLHRoaXMuX2NoYW5nZShudWxsLDApO3JldHVybn1yZXR1cm4gdGhpcy5fdmFsdWUoKX0sdmFsdWVzOmZ1bmN0aW9uKHQsbil7dmFyIHIsaSxzO2lmKGFyZ3VtZW50cy5sZW5ndGg+MSl7dGhpcy5vcHRpb25zLnZhbHVlc1t0XT10aGlzLl90cmltQWxpZ25WYWx1ZShuKSx0aGlzLl9yZWZyZXNoVmFsdWUoKSx0aGlzLl9jaGFuZ2UobnVsbCx0KTtyZXR1cm59aWYoIWFyZ3VtZW50cy5sZW5ndGgpcmV0dXJuIHRoaXMuX3ZhbHVlcygpO2lmKCFlLmlzQXJyYXkoYXJndW1lbnRzWzBdKSlyZXR1cm4gdGhpcy5vcHRpb25zLnZhbHVlcyYmdGhpcy5vcHRpb25zLnZhbHVlcy5sZW5ndGg/dGhpcy5fdmFsdWVzKHQpOnRoaXMudmFsdWUoKTtyPXRoaXMub3B0aW9ucy52YWx1ZXMsaT1hcmd1bWVudHNbMF07Zm9yKHM9MDtzPHIubGVuZ3RoO3MrPTEpcltzXT10aGlzLl90cmltQWxpZ25WYWx1ZShpW3NdKSx0aGlzLl9jaGFuZ2UobnVsbCxzKTt0aGlzLl9yZWZyZXNoVmFsdWUoKX0sX3NldE9wdGlvbjpmdW5jdGlvbih0LG4pe3ZhciByLGk9MDtlLmlzQXJyYXkodGhpcy5vcHRpb25zLnZhbHVlcykmJihpPXRoaXMub3B0aW9ucy52YWx1ZXMubGVuZ3RoKSxlLldpZGdldC5wcm90b3R5cGUuX3NldE9wdGlvbi5hcHBseSh0aGlzLGFyZ3VtZW50cyk7c3dpdGNoKHQpe2Nhc2UiZGlzYWJsZWQiOm4/KHRoaXMuaGFuZGxlcy5maWx0ZXIoIi51aS1zdGF0ZS1mb2N1cyIpLmJsdXIoKSx0aGlzLmhhbmRsZXMucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWhvdmVyIiksdGhpcy5oYW5kbGVzLnByb3AoImRpc2FibGVkIiwhMCksdGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS1kaXNhYmxlZCIpKToodGhpcy5oYW5kbGVzLnByb3AoImRpc2FibGVkIiwhMSksdGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1kaXNhYmxlZCIpKTticmVhaztjYXNlIm9yaWVudGF0aW9uIjp0aGlzLl9kZXRlY3RPcmllbnRhdGlvbigpLHRoaXMuZWxlbWVudC5yZW1vdmVDbGFzcygidWktc2xpZGVyLWhvcml6b250YWwgdWktc2xpZGVyLXZlcnRpY2FsIikuYWRkQ2xhc3MoInVpLXNsaWRlci0iK3RoaXMub3JpZW50YXRpb24pLHRoaXMuX3JlZnJlc2hWYWx1ZSgpO2JyZWFrO2Nhc2UidmFsdWUiOnRoaXMuX2FuaW1hdGVPZmY9ITAsdGhpcy5fcmVmcmVzaFZhbHVlKCksdGhpcy5fY2hhbmdlKG51bGwsMCksdGhpcy5fYW5pbWF0ZU9mZj0hMTticmVhaztjYXNlInZhbHVlcyI6dGhpcy5fYW5pbWF0ZU9mZj0hMCx0aGlzLl9yZWZyZXNoVmFsdWUoKTtmb3Iocj0wO3I8aTtyKz0xKXRoaXMuX2NoYW5nZShudWxsLHIpO3RoaXMuX2FuaW1hdGVPZmY9ITF9fSxfdmFsdWU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9wdGlvbnMudmFsdWU7cmV0dXJuIGU9dGhpcy5fdHJpbUFsaWduVmFsdWUoZSksZX0sX3ZhbHVlczpmdW5jdGlvbihlKXt2YXIgdCxuLHI7aWYoYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdD10aGlzLm9wdGlvbnMudmFsdWVzW2VdLHQ9dGhpcy5fdHJpbUFsaWduVmFsdWUodCksdDtuPXRoaXMub3B0aW9ucy52YWx1ZXMuc2xpY2UoKTtmb3Iocj0wO3I8bi5sZW5ndGg7cis9MSluW3JdPXRoaXMuX3RyaW1BbGlnblZhbHVlKG5bcl0pO3JldHVybiBufSxfdHJpbUFsaWduVmFsdWU6ZnVuY3Rpb24oZSl7aWYoZTw9dGhpcy5fdmFsdWVNaW4oKSlyZXR1cm4gdGhpcy5fdmFsdWVNaW4oKTtpZihlPj10aGlzLl92YWx1ZU1heCgpKXJldHVybiB0aGlzLl92YWx1ZU1heCgpO3ZhciB0PXRoaXMub3B0aW9ucy5zdGVwPjA/dGhpcy5vcHRpb25zLnN0ZXA6MSxuPShlLXRoaXMuX3ZhbHVlTWluKCkpJXQscj1lLW47cmV0dXJuIE1hdGguYWJzKG4pKjI+PXQmJihyKz1uPjA/dDotdCkscGFyc2VGbG9hdChyLnRvRml4ZWQoNSkpfSxfdmFsdWVNaW46ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5vcHRpb25zLm1pbn0sX3ZhbHVlTWF4OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMub3B0aW9ucy5tYXh9LF9yZWZyZXNoVmFsdWU6ZnVuY3Rpb24oKXt2YXIgdCxuLHIsaSxzLG89dGhpcy5vcHRpb25zLnJhbmdlLHU9dGhpcy5vcHRpb25zLGE9dGhpcyxmPXRoaXMuX2FuaW1hdGVPZmY/ITE6dS5hbmltYXRlLGw9e307dGhpcy5vcHRpb25zLnZhbHVlcyYmdGhpcy5vcHRpb25zLnZhbHVlcy5sZW5ndGg/dGhpcy5oYW5kbGVzLmVhY2goZnVuY3Rpb24ocixpKXtuPShhLnZhbHVlcyhyKS1hLl92YWx1ZU1pbigpKS8oYS5fdmFsdWVNYXgoKS1hLl92YWx1ZU1pbigpKSoxMDAsbFthLm9yaWVudGF0aW9uPT09Imhvcml6b250YWwiPyJsZWZ0IjoiYm90dG9tIl09bisiJSIsZSh0aGlzKS5zdG9wKDEsMSlbZj8iYW5pbWF0ZSI6ImNzcyJdKGwsdS5hbmltYXRlKSxhLm9wdGlvbnMucmFuZ2U9PT0hMCYmKGEub3JpZW50YXRpb249PT0iaG9yaXpvbnRhbCI/KHI9PT0wJiZhLnJhbmdlLnN0b3AoMSwxKVtmPyJhbmltYXRlIjoiY3NzIl0oe2xlZnQ6bisiJSJ9LHUuYW5pbWF0ZSkscj09PTEmJmEucmFuZ2VbZj8iYW5pbWF0ZSI6ImNzcyJdKHt3aWR0aDpuLXQrIiUifSx7cXVldWU6ITEsZHVyYXRpb246dS5hbmltYXRlfSkpOihyPT09MCYmYS5yYW5nZS5zdG9wKDEsMSlbZj8iYW5pbWF0ZSI6ImNzcyJdKHtib3R0b206bisiJSJ9LHUuYW5pbWF0ZSkscj09PTEmJmEucmFuZ2VbZj8iYW5pbWF0ZSI6ImNzcyJdKHtoZWlnaHQ6bi10KyIlIn0se3F1ZXVlOiExLGR1cmF0aW9uOnUuYW5pbWF0ZX0pKSksdD1ufSk6KHI9dGhpcy52YWx1ZSgpLGk9dGhpcy5fdmFsdWVNaW4oKSxzPXRoaXMuX3ZhbHVlTWF4KCksbj1zIT09aT8oci1pKS8ocy1pKSoxMDA6MCxsW3RoaXMub3JpZW50YXRpb249PT0iaG9yaXpvbnRhbCI/ImxlZnQiOiJib3R0b20iXT1uKyIlIix0aGlzLmhhbmRsZS5zdG9wKDEsMSlbZj8iYW5pbWF0ZSI6ImNzcyJdKGwsdS5hbmltYXRlKSxvPT09Im1pbiImJnRoaXMub3JpZW50YXRpb249PT0iaG9yaXpvbnRhbCImJnRoaXMucmFuZ2Uuc3RvcCgxLDEpW2Y/ImFuaW1hdGUiOiJjc3MiXSh7d2lkdGg6bisiJSJ9LHUuYW5pbWF0ZSksbz09PSJtYXgiJiZ0aGlzLm9yaWVudGF0aW9uPT09Imhvcml6b250YWwiJiZ0aGlzLnJhbmdlW2Y/ImFuaW1hdGUiOiJjc3MiXSh7d2lkdGg6MTAwLW4rIiUifSx7cXVldWU6ITEsZHVyYXRpb246dS5hbmltYXRlfSksbz09PSJtaW4iJiZ0aGlzLm9yaWVudGF0aW9uPT09InZlcnRpY2FsIiYmdGhpcy5yYW5nZS5zdG9wKDEsMSlbZj8iYW5pbWF0ZSI6ImNzcyJdKHtoZWlnaHQ6bisiJSJ9LHUuYW5pbWF0ZSksbz09PSJtYXgiJiZ0aGlzLm9yaWVudGF0aW9uPT09InZlcnRpY2FsIiYmdGhpcy5yYW5nZVtmPyJhbmltYXRlIjoiY3NzIl0oe2hlaWdodDoxMDAtbisiJSJ9LHtxdWV1ZTohMSxkdXJhdGlvbjp1LmFuaW1hdGV9KSl9fSl9KShqUXVlcnkpOyhmdW5jdGlvbihlKXtmdW5jdGlvbiB0KGUpe3JldHVybiBmdW5jdGlvbigpe3ZhciB0PXRoaXMuZWxlbWVudC52YWwoKTtlLmFwcGx5KHRoaXMsYXJndW1lbnRzKSx0aGlzLl9yZWZyZXNoKCksdCE9PXRoaXMuZWxlbWVudC52YWwoKSYmdGhpcy5fdHJpZ2dlcigiY2hhbmdlIil9fWUud2lkZ2V0KCJ1aS5zcGlubmVyIix7dmVyc2lvbjoiMS45LjAiLGRlZmF1bHRFbGVtZW50OiI8aW5wdXQ+Iix3aWRnZXRFdmVudFByZWZpeDoic3BpbiIsb3B0aW9uczp7Y3VsdHVyZTpudWxsLGljb25zOntkb3duOiJ1aS1pY29uLXRyaWFuZ2xlLTEtcyIsdXA6InVpLWljb24tdHJpYW5nbGUtMS1uIn0saW5jcmVtZW50YWw6ITAsbWF4Om51bGwsbWluOm51bGwsbnVtYmVyRm9ybWF0Om51bGwscGFnZToxMCxzdGVwOjEsY2hhbmdlOm51bGwsc3BpbjpudWxsLHN0YXJ0Om51bGwsc3RvcDpudWxsfSxfY3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5fc2V0T3B0aW9uKCJtYXgiLHRoaXMub3B0aW9ucy5tYXgpLHRoaXMuX3NldE9wdGlvbigibWluIix0aGlzLm9wdGlvbnMubWluKSx0aGlzLl9zZXRPcHRpb24oInN0ZXAiLHRoaXMub3B0aW9ucy5zdGVwKSx0aGlzLl92YWx1ZSh0aGlzLmVsZW1lbnQudmFsKCksITApLHRoaXMuX2RyYXcoKSx0aGlzLl9vbih0aGlzLl9ldmVudHMpLHRoaXMuX3JlZnJlc2goKSx0aGlzLl9vbih0aGlzLndpbmRvdyx7YmVmb3JldW5sb2FkOmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LnJlbW92ZUF0dHIoImF1dG9jb21wbGV0ZSIpfX0pfSxfZ2V0Q3JlYXRlT3B0aW9uczpmdW5jdGlvbigpe3ZhciB0PXt9LG49dGhpcy5lbGVtZW50O3JldHVybiBlLmVhY2goWyJtaW4iLCJtYXgiLCJzdGVwIl0sZnVuY3Rpb24oZSxyKXt2YXIgaT1uLmF0dHIocik7aSE9PXVuZGVmaW5lZCYmaS5sZW5ndGgmJih0W3JdPWkpfSksdH0sX2V2ZW50czp7a2V5ZG93bjpmdW5jdGlvbihlKXt0aGlzLl9zdGFydChlKSYmdGhpcy5fa2V5ZG93bihlKSYmZS5wcmV2ZW50RGVmYXVsdCgpfSxrZXl1cDoiX3N0b3AiLGZvY3VzOmZ1bmN0aW9uKCl7dGhpcy51aVNwaW5uZXIuYWRkQ2xhc3MoInVpLXN0YXRlLWFjdGl2ZSIpLHRoaXMucHJldmlvdXM9dGhpcy5lbGVtZW50LnZhbCgpfSxibHVyOmZ1bmN0aW9uKGUpe2lmKHRoaXMuY2FuY2VsQmx1cil7ZGVsZXRlIHRoaXMuY2FuY2VsQmx1cjtyZXR1cm59dGhpcy5fcmVmcmVzaCgpLHRoaXMudWlTcGlubmVyLnJlbW92ZUNsYXNzKCJ1aS1zdGF0ZS1hY3RpdmUiKSx0aGlzLnByZXZpb3VzIT09dGhpcy5lbGVtZW50LnZhbCgpJiZ0aGlzLl90cmlnZ2VyKCJjaGFuZ2UiLGUpfSxtb3VzZXdoZWVsOmZ1bmN0aW9uKGUsdCl7aWYoIXQpcmV0dXJuO2lmKCF0aGlzLnNwaW5uaW5nJiYhdGhpcy5fc3RhcnQoZSkpcmV0dXJuITE7dGhpcy5fc3BpbigodD4wPzE6LTEpKnRoaXMub3B0aW9ucy5zdGVwLGUpLGNsZWFyVGltZW91dCh0aGlzLm1vdXNld2hlZWxUaW1lciksdGhpcy5tb3VzZXdoZWVsVGltZXI9dGhpcy5fZGVsYXkoZnVuY3Rpb24oKXt0aGlzLnNwaW5uaW5nJiZ0aGlzLl9zdG9wKGUpfSwxMDApLGUucHJldmVudERlZmF1bHQoKX0sIm1vdXNlZG93biAudWktc3Bpbm5lci1idXR0b24iOmZ1bmN0aW9uKHQpe2Z1bmN0aW9uIHIoKXt2YXIgZT10aGlzLmVsZW1lbnRbMF09PT10aGlzLmRvY3VtZW50WzBdLmFjdGl2ZUVsZW1lbnQ7ZXx8KHRoaXMuZWxlbWVudC5mb2N1cygpLHRoaXMucHJldmlvdXM9bix0aGlzLl9kZWxheShmdW5jdGlvbigpe3RoaXMucHJldmlvdXM9bn0pKX12YXIgbjtuPXRoaXMuZWxlbWVudFswXT09PXRoaXMuZG9jdW1lbnRbMF0uYWN0aXZlRWxlbWVudD90aGlzLnByZXZpb3VzOnRoaXMuZWxlbWVudC52YWwoKSx0LnByZXZlbnREZWZhdWx0KCksci5jYWxsKHRoaXMpLHRoaXMuY2FuY2VsQmx1cj0hMCx0aGlzLl9kZWxheShmdW5jdGlvbigpe2RlbGV0ZSB0aGlzLmNhbmNlbEJsdXIsci5jYWxsKHRoaXMpfSk7aWYodGhpcy5fc3RhcnQodCk9PT0hMSlyZXR1cm47dGhpcy5fcmVwZWF0KG51bGwsZSh0LmN1cnJlbnRUYXJnZXQpLmhhc0NsYXNzKCJ1aS1zcGlubmVyLXVwIik/MTotMSx0KX0sIm1vdXNldXAgLnVpLXNwaW5uZXItYnV0dG9uIjoiX3N0b3AiLCJtb3VzZWVudGVyIC51aS1zcGlubmVyLWJ1dHRvbiI6ZnVuY3Rpb24odCl7aWYoIWUodC5jdXJyZW50VGFyZ2V0KS5oYXNDbGFzcygidWktc3RhdGUtYWN0aXZlIikpcmV0dXJuO2lmKHRoaXMuX3N0YXJ0KHQpPT09ITEpcmV0dXJuITE7dGhpcy5fcmVwZWF0KG51bGwsZSh0LmN1cnJlbnRUYXJnZXQpLmhhc0NsYXNzKCJ1aS1zcGlubmVyLXVwIik/MTotMSx0KX0sIm1vdXNlbGVhdmUgLnVpLXNwaW5uZXItYnV0dG9uIjoiX3N0b3AifSxfZHJhdzpmdW5jdGlvbigpe3ZhciBlPXRoaXMudWlTcGlubmVyPXRoaXMuZWxlbWVudC5hZGRDbGFzcygidWktc3Bpbm5lci1pbnB1dCIpLmF0dHIoImF1dG9jb21wbGV0ZSIsIm9mZiIpLndyYXAodGhpcy5fdWlTcGlubmVySHRtbCgpKS5wYXJlbnQoKS5hcHBlbmQodGhpcy5fYnV0dG9uSHRtbCgpKTt0aGlzLl9ob3ZlcmFibGUoZSksdGhpcy5lbGVtZW50LmF0dHIoInJvbGUiLCJzcGluYnV0dG9uIiksdGhpcy5idXR0b25zPWUuZmluZCgiLnVpLXNwaW5uZXItYnV0dG9uIikuYXR0cigidGFiSW5kZXgiLC0xKS5idXR0b24oKS5yZW1vdmVDbGFzcygidWktY29ybmVyLWFsbCIpLHRoaXMuYnV0dG9ucy5oZWlnaHQoKT5NYXRoLmNlaWwoZS5oZWlnaHQoKSouNSkmJmUuaGVpZ2h0KCk+MCYmZS5oZWlnaHQoZS5oZWlnaHQoKSksdGhpcy5vcHRpb25zLmRpc2FibGVkJiZ0aGlzLmRpc2FibGUoKX0sX2tleWRvd246ZnVuY3Rpb24odCl7dmFyIG49dGhpcy5vcHRpb25zLHI9ZS51aS5rZXlDb2RlO3N3aXRjaCh0LmtleUNvZGUpe2Nhc2Ugci5VUDpyZXR1cm4gdGhpcy5fcmVwZWF0KG51bGwsMSx0KSwhMDtjYXNlIHIuRE9XTjpyZXR1cm4gdGhpcy5fcmVwZWF0KG51bGwsLTEsdCksITA7Y2FzZSByLlBBR0VfVVA6cmV0dXJuIHRoaXMuX3JlcGVhdChudWxsLG4ucGFnZSx0KSwhMDtjYXNlIHIuUEFHRV9ET1dOOnJldHVybiB0aGlzLl9yZXBlYXQobnVsbCwtbi5wYWdlLHQpLCEwfXJldHVybiExfSxfdWlTcGlubmVySHRtbDpmdW5jdGlvbigpe3JldHVybiI8c3BhbiBjbGFzcz0ndWktc3Bpbm5lciB1aS1zdGF0ZS1kZWZhdWx0IHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsJz48L3NwYW4+In0sX2J1dHRvbkh0bWw6ZnVuY3Rpb24oKXtyZXR1cm4iPGEgY2xhc3M9J3VpLXNwaW5uZXItYnV0dG9uIHVpLXNwaW5uZXItdXAgdWktY29ybmVyLXRyJz48c3BhbiBjbGFzcz0ndWktaWNvbiAiK3RoaXMub3B0aW9ucy5pY29ucy51cCsiJz4mIzk2NTA7PC9zcGFuPiIrIjwvYT4iKyI8YSBjbGFzcz0ndWktc3Bpbm5lci1idXR0b24gdWktc3Bpbm5lci1kb3duIHVpLWNvcm5lci1icic+IisiPHNwYW4gY2xhc3M9J3VpLWljb24gIit0aGlzLm9wdGlvbnMuaWNvbnMuZG93bisiJz4mIzk2NjA7PC9zcGFuPiIrIjwvYT4ifSxfc3RhcnQ6ZnVuY3Rpb24oZSl7cmV0dXJuIXRoaXMuc3Bpbm5pbmcmJnRoaXMuX3RyaWdnZXIoInN0YXJ0IixlKT09PSExPyExOih0aGlzLmNvdW50ZXJ8fCh0aGlzLmNvdW50ZXI9MSksdGhpcy5zcGlubmluZz0hMCwhMCl9LF9yZXBlYXQ6ZnVuY3Rpb24oZSx0LG4pe2U9ZXx8NTAwLGNsZWFyVGltZW91dCh0aGlzLnRpbWVyKSx0aGlzLnRpbWVyPXRoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7dGhpcy5fcmVwZWF0KDQwLHQsbil9LGUpLHRoaXMuX3NwaW4odCp0aGlzLm9wdGlvbnMuc3RlcCxuKX0sX3NwaW46ZnVuY3Rpb24oZSx0KXt2YXIgbj10aGlzLnZhbHVlKCl8fDA7dGhpcy5jb3VudGVyfHwodGhpcy5jb3VudGVyPTEpLG49dGhpcy5fYWRqdXN0VmFsdWUobitlKnRoaXMuX2luY3JlbWVudCh0aGlzLmNvdW50ZXIpKTtpZighdGhpcy5zcGlubmluZ3x8dGhpcy5fdHJpZ2dlcigic3BpbiIsdCx7dmFsdWU6bn0pIT09ITEpdGhpcy5fdmFsdWUobiksdGhpcy5jb3VudGVyKyt9LF9pbmNyZW1lbnQ6ZnVuY3Rpb24odCl7dmFyIG49dGhpcy5vcHRpb25zLmluY3JlbWVudGFsO3JldHVybiBuP2UuaXNGdW5jdGlvbihuKT9uKHQpOk1hdGguZmxvb3IodCp0KnQvNWU0LXQqdC81MDArMTcqdC8yMDArMSk6MX0sX3ByZWNpc2lvbjpmdW5jdGlvbigpe3ZhciBlPXRoaXMuX3ByZWNpc2lvbk9mKHRoaXMub3B0aW9ucy5zdGVwKTtyZXR1cm4gdGhpcy5vcHRpb25zLm1pbiE9PW51bGwmJihlPU1hdGgubWF4KGUsdGhpcy5fcHJlY2lzaW9uT2YodGhpcy5vcHRpb25zLm1pbikpKSxlfSxfcHJlY2lzaW9uT2Y6ZnVuY3Rpb24oZSl7dmFyIHQ9ZS50b1N0cmluZygpLG49dC5pbmRleE9mKCIuIik7cmV0dXJuIG49PT0tMT8wOnQubGVuZ3RoLW4tMX0sX2FkanVzdFZhbHVlOmZ1bmN0aW9uKGUpe3ZhciB0LG4scj10aGlzLm9wdGlvbnM7cmV0dXJuIHQ9ci5taW4hPT1udWxsP3IubWluOjAsbj1lLXQsbj1NYXRoLnJvdW5kKG4vci5zdGVwKSpyLnN0ZXAsZT10K24sZT1wYXJzZUZsb2F0KGUudG9GaXhlZCh0aGlzLl9wcmVjaXNpb24oKSkpLHIubWF4IT09bnVsbCYmZT5yLm1heD9yLm1heDpyLm1pbiE9PW51bGwmJmU8ci5taW4/ci5taW46ZX0sX3N0b3A6ZnVuY3Rpb24oZSl7aWYoIXRoaXMuc3Bpbm5pbmcpcmV0dXJuO2NsZWFyVGltZW91dCh0aGlzLnRpbWVyKSxjbGVhclRpbWVvdXQodGhpcy5tb3VzZXdoZWVsVGltZXIpLHRoaXMuY291bnRlcj0wLHRoaXMuc3Bpbm5pbmc9ITEsdGhpcy5fdHJpZ2dlcigic3RvcCIsZSl9LF9zZXRPcHRpb246ZnVuY3Rpb24oZSx0KXtpZihlPT09ImN1bHR1cmUifHxlPT09Im51bWJlckZvcm1hdCIpe3ZhciBuPXRoaXMuX3BhcnNlKHRoaXMuZWxlbWVudC52YWwoKSk7dGhpcy5vcHRpb25zW2VdPXQsdGhpcy5lbGVtZW50LnZhbCh0aGlzLl9mb3JtYXQobikpO3JldHVybn0oZT09PSJtYXgifHxlPT09Im1pbiJ8fGU9PT0ic3RlcCIpJiZ0eXBlb2YgdD09InN0cmluZyImJih0PXRoaXMuX3BhcnNlKHQpKSx0aGlzLl9zdXBlcihlLHQpLGU9PT0iZGlzYWJsZWQiJiYodD8odGhpcy5lbGVtZW50LnByb3AoImRpc2FibGVkIiwhMCksdGhpcy5idXR0b25zLmJ1dHRvbigiZGlzYWJsZSIpKToodGhpcy5lbGVtZW50LnByb3AoImRpc2FibGVkIiwhMSksdGhpcy5idXR0b25zLmJ1dHRvbigiZW5hYmxlIikpKX0sX3NldE9wdGlvbnM6dChmdW5jdGlvbihlKXt0aGlzLl9zdXBlcihlKSx0aGlzLl92YWx1ZSh0aGlzLmVsZW1lbnQudmFsKCkpfSksX3BhcnNlOmZ1bmN0aW9uKGUpe3JldHVybiB0eXBlb2YgZT09InN0cmluZyImJmUhPT0iIiYmKGU9d2luZG93Lkdsb2JhbGl6ZSYmdGhpcy5vcHRpb25zLm51bWJlckZvcm1hdD9HbG9iYWxpemUucGFyc2VGbG9hdChlLDEwLHRoaXMub3B0aW9ucy5jdWx0dXJlKTorZSksZT09PSIifHxpc05hTihlKT9udWxsOmV9LF9mb3JtYXQ6ZnVuY3Rpb24oZSl7cmV0dXJuIGU9PT0iIj8iIjp3aW5kb3cuR2xvYmFsaXplJiZ0aGlzLm9wdGlvbnMubnVtYmVyRm9ybWF0P0dsb2JhbGl6ZS5mb3JtYXQoZSx0aGlzLm9wdGlvbnMubnVtYmVyRm9ybWF0LHRoaXMub3B0aW9ucy5jdWx0dXJlKTplfSxfcmVmcmVzaDpmdW5jdGlvbigpe3RoaXMuZWxlbWVudC5hdHRyKHsiYXJpYS12YWx1ZW1pbiI6dGhpcy5vcHRpb25zLm1pbiwiYXJpYS12YWx1ZW1heCI6dGhpcy5vcHRpb25zLm1heCwiYXJpYS12YWx1ZW5vdyI6dGhpcy5fcGFyc2UodGhpcy5lbGVtZW50LnZhbCgpKX0pfSxfdmFsdWU6ZnVuY3Rpb24oZSx0KXt2YXIgbjtlIT09IiImJihuPXRoaXMuX3BhcnNlKGUpLG4hPT1udWxsJiYodHx8KG49dGhpcy5fYWRqdXN0VmFsdWUobikpLGU9dGhpcy5fZm9ybWF0KG4pKSksdGhpcy5lbGVtZW50LnZhbChlKSx0aGlzLl9yZWZyZXNoKCl9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCJ1aS1zcGlubmVyLWlucHV0IikucHJvcCgiZGlzYWJsZWQiLCExKS5yZW1vdmVBdHRyKCJhdXRvY29tcGxldGUiKS5yZW1vdmVBdHRyKCJyb2xlIikucmVtb3ZlQXR0cigiYXJpYS12YWx1ZW1pbiIpLnJlbW92ZUF0dHIoImFyaWEtdmFsdWVtYXgiKS5yZW1vdmVBdHRyKCJhcmlhLXZhbHVlbm93IiksdGhpcy51aVNwaW5uZXIucmVwbGFjZVdpdGgodGhpcy5lbGVtZW50KX0sc3RlcFVwOnQoZnVuY3Rpb24oZSl7dGhpcy5fc3RlcFVwKGUpfSksX3N0ZXBVcDpmdW5jdGlvbihlKXt0aGlzLl9zcGluKChlfHwxKSp0aGlzLm9wdGlvbnMuc3RlcCl9LHN0ZXBEb3duOnQoZnVuY3Rpb24oZSl7dGhpcy5fc3RlcERvd24oZSl9KSxfc3RlcERvd246ZnVuY3Rpb24oZSl7dGhpcy5fc3BpbigoZXx8MSkqLXRoaXMub3B0aW9ucy5zdGVwKX0scGFnZVVwOnQoZnVuY3Rpb24oZSl7dGhpcy5fc3RlcFVwKChlfHwxKSp0aGlzLm9wdGlvbnMucGFnZSl9KSxwYWdlRG93bjp0KGZ1bmN0aW9uKGUpe3RoaXMuX3N0ZXBEb3duKChlfHwxKSp0aGlzLm9wdGlvbnMucGFnZSl9KSx2YWx1ZTpmdW5jdGlvbihlKXtpZighYXJndW1lbnRzLmxlbmd0aClyZXR1cm4gdGhpcy5fcGFyc2UodGhpcy5lbGVtZW50LnZhbCgpKTt0KHRoaXMuX3ZhbHVlKS5jYWxsKHRoaXMsZSl9LHdpZGdldDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnVpU3Bpbm5lcn19KX0pKGpRdWVyeSk7KGZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gaSgpe3JldHVybisrbn1mdW5jdGlvbiBzKGUpe3JldHVybiBlPWUuY2xvbmVOb2RlKCExKSxlLmhhc2gubGVuZ3RoPjEmJmUuaHJlZi5yZXBsYWNlKHIsIiIpPT09bG9jYXRpb24uaHJlZi5yZXBsYWNlKHIsIiIpfXZhciBuPTAscj0vIy4qJC87ZS53aWRnZXQoInVpLnRhYnMiLHt2ZXJzaW9uOiIxLjkuMCIsZGVsYXk6MzAwLG9wdGlvbnM6e2FjdGl2ZTpudWxsLGNvbGxhcHNpYmxlOiExLGV2ZW50OiJjbGljayIsaGVpZ2h0U3R5bGU6ImNvbnRlbnQiLGhpZGU6bnVsbCxzaG93Om51bGwsYWN0aXZhdGU6bnVsbCxiZWZvcmVBY3RpdmF0ZTpudWxsLGJlZm9yZUxvYWQ6bnVsbCxsb2FkOm51bGx9LF9jcmVhdGU6ZnVuY3Rpb24oKXt2YXIgdCxuPXRoaXMscj10aGlzLm9wdGlvbnMsaT1yLmFjdGl2ZTt0aGlzLnJ1bm5pbmc9ITEsdGhpcy5lbGVtZW50LmFkZENsYXNzKCJ1aS10YWJzIHVpLXdpZGdldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYWxsIikudG9nZ2xlQ2xhc3MoInVpLXRhYnMtY29sbGFwc2libGUiLHIuY29sbGFwc2libGUpLmRlbGVnYXRlKCIudWktdGFicy1uYXYgPiBsaSIsIm1vdXNlZG93biIrdGhpcy5ldmVudE5hbWVzcGFjZSxmdW5jdGlvbih0KXtlKHRoaXMpLmlzKCIudWktc3RhdGUtZGlzYWJsZWQiKSYmdC5wcmV2ZW50RGVmYXVsdCgpfSkuZGVsZWdhdGUoIi51aS10YWJzLWFuY2hvciIsImZvY3VzIit0aGlzLmV2ZW50TmFtZXNwYWNlLGZ1bmN0aW9uKCl7ZSh0aGlzKS5jbG9zZXN0KCJsaSIpLmlzKCIudWktc3RhdGUtZGlzYWJsZWQiKSYmdGhpcy5ibHVyKCl9KSx0aGlzLl9wcm9jZXNzVGFicygpO2lmKGk9PT1udWxsKXtsb2NhdGlvbi5oYXNoJiZ0aGlzLmFuY2hvcnMuZWFjaChmdW5jdGlvbihlLHQpe2lmKHQuaGFzaD09PWxvY2F0aW9uLmhhc2gpcmV0dXJuIGk9ZSwhMX0pLGk9PT1udWxsJiYoaT10aGlzLnRhYnMuZmlsdGVyKCIudWktdGFicy1hY3RpdmUiKS5pbmRleCgpKTtpZihpPT09bnVsbHx8aT09PS0xKWk9dGhpcy50YWJzLmxlbmd0aD8wOiExfWkhPT0hMSYmKGk9dGhpcy50YWJzLmluZGV4KHRoaXMudGFicy5lcShpKSksaT09PS0xJiYoaT1yLmNvbGxhcHNpYmxlPyExOjApKSxyLmFjdGl2ZT1pLCFyLmNvbGxhcHNpYmxlJiZyLmFjdGl2ZT09PSExJiZ0aGlzLmFuY2hvcnMubGVuZ3RoJiYoci5hY3RpdmU9MCksZS5pc0FycmF5KHIuZGlzYWJsZWQpJiYoci5kaXNhYmxlZD1lLnVuaXF1ZShyLmRpc2FibGVkLmNvbmNhdChlLm1hcCh0aGlzLnRhYnMuZmlsdGVyKCIudWktc3RhdGUtZGlzYWJsZWQiKSxmdW5jdGlvbihlKXtyZXR1cm4gbi50YWJzLmluZGV4KGUpfSkpKS5zb3J0KCkpLHRoaXMub3B0aW9ucy5hY3RpdmUhPT0hMSYmdGhpcy5hbmNob3JzLmxlbmd0aD90aGlzLmFjdGl2ZT10aGlzLl9maW5kQWN0aXZlKHRoaXMub3B0aW9ucy5hY3RpdmUpOnRoaXMuYWN0aXZlPWUoKSx0aGlzLl9yZWZyZXNoKCksdGhpcy5hY3RpdmUubGVuZ3RoJiZ0aGlzLmxvYWQoci5hY3RpdmUpfSxfZ2V0Q3JlYXRlRXZlbnREYXRhOmZ1bmN0aW9uKCl7cmV0dXJue3RhYjp0aGlzLmFjdGl2ZSxwYW5lbDp0aGlzLmFjdGl2ZS5sZW5ndGg/dGhpcy5fZ2V0UGFuZWxGb3JUYWIodGhpcy5hY3RpdmUpOmUoKX19LF90YWJLZXlkb3duOmZ1bmN0aW9uKHQpe3ZhciBuPWUodGhpcy5kb2N1bWVudFswXS5hY3RpdmVFbGVtZW50KS5jbG9zZXN0KCJsaSIpLHI9dGhpcy50YWJzLmluZGV4KG4pLGk9ITA7aWYodGhpcy5faGFuZGxlUGFnZU5hdih0KSlyZXR1cm47c3dpdGNoKHQua2V5Q29kZSl7Y2FzZSBlLnVpLmtleUNvZGUuUklHSFQ6Y2FzZSBlLnVpLmtleUNvZGUuRE9XTjpyKys7YnJlYWs7Y2FzZSBlLnVpLmtleUNvZGUuVVA6Y2FzZSBlLnVpLmtleUNvZGUuTEVGVDppPSExLHItLTticmVhaztjYXNlIGUudWkua2V5Q29kZS5FTkQ6cj10aGlzLmFuY2hvcnMubGVuZ3RoLTE7YnJlYWs7Y2FzZSBlLnVpLmtleUNvZGUuSE9NRTpyPTA7YnJlYWs7Y2FzZSBlLnVpLmtleUNvZGUuU1BBQ0U6dC5wcmV2ZW50RGVmYXVsdCgpLGNsZWFyVGltZW91dCh0aGlzLmFjdGl2YXRpbmcpLHRoaXMuX2FjdGl2YXRlKHIpO3JldHVybjtjYXNlIGUudWkua2V5Q29kZS5FTlRFUjp0LnByZXZlbnREZWZhdWx0KCksY2xlYXJUaW1lb3V0KHRoaXMuYWN0aXZhdGluZyksdGhpcy5fYWN0aXZhdGUocj09PXRoaXMub3B0aW9ucy5hY3RpdmU/ITE6cik7cmV0dXJuO2RlZmF1bHQ6cmV0dXJufXQucHJldmVudERlZmF1bHQoKSxjbGVhclRpbWVvdXQodGhpcy5hY3RpdmF0aW5nKSxyPXRoaXMuX2ZvY3VzTmV4dFRhYihyLGkpLHQuY3RybEtleXx8KG4uYXR0cigiYXJpYS1zZWxlY3RlZCIsImZhbHNlIiksdGhpcy50YWJzLmVxKHIpLmF0dHIoImFyaWEtc2VsZWN0ZWQiLCJ0cnVlIiksdGhpcy5hY3RpdmF0aW5nPXRoaXMuX2RlbGF5KGZ1bmN0aW9uKCl7dGhpcy5vcHRpb24oImFjdGl2ZSIscil9LHRoaXMuZGVsYXkpKX0sX3BhbmVsS2V5ZG93bjpmdW5jdGlvbih0KXtpZih0aGlzLl9oYW5kbGVQYWdlTmF2KHQpKXJldHVybjt0LmN0cmxLZXkmJnQua2V5Q29kZT09PWUudWkua2V5Q29kZS5VUCYmKHQucHJldmVudERlZmF1bHQoKSx0aGlzLmFjdGl2ZS5mb2N1cygpKX0sX2hhbmRsZVBhZ2VOYXY6ZnVuY3Rpb24odCl7aWYodC5hbHRLZXkmJnQua2V5Q29kZT09PWUudWkua2V5Q29kZS5QQUdFX1VQKXJldHVybiB0aGlzLl9hY3RpdmF0ZSh0aGlzLl9mb2N1c05leHRUYWIodGhpcy5vcHRpb25zLmFjdGl2ZS0xLCExKSksITA7aWYodC5hbHRLZXkmJnQua2V5Q29kZT09PWUudWkua2V5Q29kZS5QQUdFX0RPV04pcmV0dXJuIHRoaXMuX2FjdGl2YXRlKHRoaXMuX2ZvY3VzTmV4dFRhYih0aGlzLm9wdGlvbnMuYWN0aXZlKzEsITApKSwhMH0sX2ZpbmROZXh0VGFiOmZ1bmN0aW9uKHQsbil7ZnVuY3Rpb24gaSgpe3JldHVybiB0PnImJih0PTApLHQ8MCYmKHQ9ciksdH12YXIgcj10aGlzLnRhYnMubGVuZ3RoLTE7d2hpbGUoZS5pbkFycmF5KGkoKSx0aGlzLm9wdGlvbnMuZGlzYWJsZWQpIT09LTEpdD1uP3QrMTp0LTE7cmV0dXJuIHR9LF9mb2N1c05leHRUYWI6ZnVuY3Rpb24oZSx0KXtyZXR1cm4gZT10aGlzLl9maW5kTmV4dFRhYihlLHQpLHRoaXMudGFicy5lcShlKS5mb2N1cygpLGV9LF9zZXRPcHRpb246ZnVuY3Rpb24oZSx0KXtpZihlPT09ImFjdGl2ZSIpe3RoaXMuX2FjdGl2YXRlKHQpO3JldHVybn1pZihlPT09ImRpc2FibGVkIil7dGhpcy5fc2V0dXBEaXNhYmxlZCh0KTtyZXR1cm59dGhpcy5fc3VwZXIoZSx0KSxlPT09ImNvbGxhcHNpYmxlIiYmKHRoaXMuZWxlbWVudC50b2dnbGVDbGFzcygidWktdGFicy1jb2xsYXBzaWJsZSIsdCksIXQmJnRoaXMub3B0aW9ucy5hY3RpdmU9PT0hMSYmdGhpcy5fYWN0aXZhdGUoMCkpLGU9PT0iZXZlbnQiJiZ0aGlzLl9zZXR1cEV2ZW50cyh0KSxlPT09ImhlaWdodFN0eWxlIiYmdGhpcy5fc2V0dXBIZWlnaHRTdHlsZSh0KX0sX3RhYklkOmZ1bmN0aW9uKGUpe3JldHVybiBlLmF0dHIoImFyaWEtY29udHJvbHMiKXx8InVpLXRhYnMtIitpKCl9LF9zYW5pdGl6ZVNlbGVjdG9yOmZ1bmN0aW9uKGUpe3JldHVybiBlP2UucmVwbGFjZSgvWyEiJCUmJygpKissLlwvOjs8PT4/QFxbXF1cXmB7fH1+XS9nLCJcXCQmIik6IiJ9LHJlZnJlc2g6ZnVuY3Rpb24oKXt2YXIgdCxuPXRoaXMub3B0aW9ucyxyPXRoaXMudGFibGlzdC5jaGlsZHJlbigiOmhhcyhhW2hyZWZdKSIpO24uZGlzYWJsZWQ9ZS5tYXAoci5maWx0ZXIoIi51aS1zdGF0ZS1kaXNhYmxlZCIpLGZ1bmN0aW9uKGUpe3JldHVybiByLmluZGV4KGUpfSksdGhpcy5fcHJvY2Vzc1RhYnMoKSxuLmFjdGl2ZT09PSExfHwhdGhpcy5hbmNob3JzLmxlbmd0aD8obi5hY3RpdmU9ITEsdGhpcy5hY3RpdmU9ZSgpKTp0aGlzLmFjdGl2ZS5sZW5ndGgmJiFlLmNvbnRhaW5zKHRoaXMudGFibGlzdFswXSx0aGlzLmFjdGl2ZVswXSk/dGhpcy50YWJzLmxlbmd0aD09PW4uZGlzYWJsZWQubGVuZ3RoPyhuLmFjdGl2ZT0hMSx0aGlzLmFjdGl2ZT1lKCkpOnRoaXMuX2FjdGl2YXRlKHRoaXMuX2ZpbmROZXh0VGFiKE1hdGgubWF4KDAsbi5hY3RpdmUtMSksITEpKTpuLmFjdGl2ZT10aGlzLnRhYnMuaW5kZXgodGhpcy5hY3RpdmUpLHRoaXMuX3JlZnJlc2goKX0sX3JlZnJlc2g6ZnVuY3Rpb24oKXt0aGlzLl9zZXR1cERpc2FibGVkKHRoaXMub3B0aW9ucy5kaXNhYmxlZCksdGhpcy5fc2V0dXBFdmVudHModGhpcy5vcHRpb25zLmV2ZW50KSx0aGlzLl9zZXR1cEhlaWdodFN0eWxlKHRoaXMub3B0aW9ucy5oZWlnaHRTdHlsZSksdGhpcy50YWJzLm5vdCh0aGlzLmFjdGl2ZSkuYXR0cih7ImFyaWEtc2VsZWN0ZWQiOiJmYWxzZSIsdGFiSW5kZXg6LTF9KSx0aGlzLnBhbmVscy5ub3QodGhpcy5fZ2V0UGFuZWxGb3JUYWIodGhpcy5hY3RpdmUpKS5oaWRlKCkuYXR0cih7ImFyaWEtZXhwYW5kZWQiOiJmYWxzZSIsImFyaWEtaGlkZGVuIjoidHJ1ZSJ9KSx0aGlzLmFjdGl2ZS5sZW5ndGg/KHRoaXMuYWN0aXZlLmFkZENsYXNzKCJ1aS10YWJzLWFjdGl2ZSB1aS1zdGF0ZS1hY3RpdmUiKS5hdHRyKHsiYXJpYS1zZWxlY3RlZCI6InRydWUiLHRhYkluZGV4OjB9KSx0aGlzLl9nZXRQYW5lbEZvclRhYih0aGlzLmFjdGl2ZSkuc2hvdygpLmF0dHIoeyJhcmlhLWV4cGFuZGVkIjoidHJ1ZSIsImFyaWEtaGlkZGVuIjoiZmFsc2UifSkpOnRoaXMudGFicy5lcSgwKS5hdHRyKCJ0YWJJbmRleCIsMCl9LF9wcm9jZXNzVGFiczpmdW5jdGlvbigpe3ZhciB0PXRoaXM7dGhpcy50YWJsaXN0PXRoaXMuX2dldExpc3QoKS5hZGRDbGFzcygidWktdGFicy1uYXYgdWktaGVscGVyLXJlc2V0IHVpLWhlbHBlci1jbGVhcmZpeCB1aS13aWRnZXQtaGVhZGVyIHVpLWNvcm5lci1hbGwiKS5hdHRyKCJyb2xlIiwidGFibGlzdCIpLHRoaXMudGFicz10aGlzLnRhYmxpc3QuZmluZCgiPiBsaTpoYXMoYVtocmVmXSkiKS5hZGRDbGFzcygidWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItdG9wIikuYXR0cih7cm9sZToidGFiIix0YWJJbmRleDotMX0pLHRoaXMuYW5jaG9ycz10aGlzLnRhYnMubWFwKGZ1bmN0aW9uKCl7cmV0dXJuIGUoImEiLHRoaXMpWzBdfSkuYWRkQ2xhc3MoInVpLXRhYnMtYW5jaG9yIikuYXR0cih7cm9sZToicHJlc2VudGF0aW9uIix0YWJJbmRleDotMX0pLHRoaXMucGFuZWxzPWUoKSx0aGlzLmFuY2hvcnMuZWFjaChmdW5jdGlvbihuLHIpe3ZhciBpLG8sdSxhPWUocikudW5pcXVlSWQoKS5hdHRyKCJpZCIpLGY9ZShyKS5jbG9zZXN0KCJsaSIpLGw9Zi5hdHRyKCJhcmlhLWNvbnRyb2xzIik7cyhyKT8oaT1yLmhhc2gsbz10LmVsZW1lbnQuZmluZCh0Ll9zYW5pdGl6ZVNlbGVjdG9yKGkpKSk6KHU9dC5fdGFiSWQoZiksaT0iIyIrdSxvPXQuZWxlbWVudC5maW5kKGkpLG8ubGVuZ3RofHwobz10Ll9jcmVhdGVQYW5lbCh1KSxvLmluc2VydEFmdGVyKHQucGFuZWxzW24tMV18fHQudGFibGlzdCkpLG8uYXR0cigiYXJpYS1saXZlIiwicG9saXRlIikpLG8ubGVuZ3RoJiYodC5wYW5lbHM9dC5wYW5lbHMuYWRkKG8pKSxsJiZmLmRhdGEoInVpLXRhYnMtYXJpYS1jb250cm9scyIsbCksZi5hdHRyKHsiYXJpYS1jb250cm9scyI6aS5zdWJzdHJpbmcoMSksImFyaWEtbGFiZWxsZWRieSI6YX0pLG8uYXR0cigiYXJpYS1sYWJlbGxlZGJ5IixhKX0pLHRoaXMucGFuZWxzLmFkZENsYXNzKCJ1aS10YWJzLXBhbmVsIHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1ib3R0b20iKS5hdHRyKCJyb2xlIiwidGFicGFuZWwiKX0sX2dldExpc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbGVtZW50LmZpbmQoIm9sLHVsIikuZXEoMCl9LF9jcmVhdGVQYW5lbDpmdW5jdGlvbih0KXtyZXR1cm4gZSgiPGRpdj4iKS5hdHRyKCJpZCIsdCkuYWRkQ2xhc3MoInVpLXRhYnMtcGFuZWwgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWJvdHRvbSIpLmRhdGEoInVpLXRhYnMtZGVzdHJveSIsITApfSxfc2V0dXBEaXNhYmxlZDpmdW5jdGlvbih0KXtlLmlzQXJyYXkodCkmJih0Lmxlbmd0aD90Lmxlbmd0aD09PXRoaXMuYW5jaG9ycy5sZW5ndGgmJih0PSEwKTp0PSExKTtmb3IodmFyIG49MCxyO3I9dGhpcy50YWJzW25dO24rKyl0PT09ITB8fGUuaW5BcnJheShuLHQpIT09LTE/ZShyKS5hZGRDbGFzcygidWktc3RhdGUtZGlzYWJsZWQiKS5hdHRyKCJhcmlhLWRpc2FibGVkIiwidHJ1ZSIpOmUocikucmVtb3ZlQ2xhc3MoInVpLXN0YXRlLWRpc2FibGVkIikucmVtb3ZlQXR0cigiYXJpYS1kaXNhYmxlZCIpO3RoaXMub3B0aW9ucy5kaXNhYmxlZD10fSxfc2V0dXBFdmVudHM6ZnVuY3Rpb24odCl7dmFyIG49e2NsaWNrOmZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKX19O3QmJmUuZWFjaCh0LnNwbGl0KCIgIiksZnVuY3Rpb24oZSx0KXtuW3RdPSJfZXZlbnRIYW5kbGVyIn0pLHRoaXMuX29mZih0aGlzLmFuY2hvcnMuYWRkKHRoaXMudGFicykuYWRkKHRoaXMucGFuZWxzKSksdGhpcy5fb24odGhpcy5hbmNob3JzLG4pLHRoaXMuX29uKHRoaXMudGFicyx7a2V5ZG93bjoiX3RhYktleWRvd24ifSksdGhpcy5fb24odGhpcy5wYW5lbHMse2tleWRvd246Il9wYW5lbEtleWRvd24ifSksdGhpcy5fZm9jdXNhYmxlKHRoaXMudGFicyksdGhpcy5faG92ZXJhYmxlKHRoaXMudGFicyl9LF9zZXR1cEhlaWdodFN0eWxlOmZ1bmN0aW9uKHQpe3ZhciBuLHIsaT10aGlzLmVsZW1lbnQucGFyZW50KCk7dD09PSJmaWxsIj8oZS5zdXBwb3J0Lm1pbkhlaWdodHx8KHI9aS5jc3MoIm92ZXJmbG93IiksaS5jc3MoIm92ZXJmbG93IiwiaGlkZGVuIikpLG49aS5oZWlnaHQoKSx0aGlzLmVsZW1lbnQuc2libGluZ3MoIjp2aXNpYmxlIikuZWFjaChmdW5jdGlvbigpe3ZhciB0PWUodGhpcykscj10LmNzcygicG9zaXRpb24iKTtpZihyPT09ImFic29sdXRlInx8cj09PSJmaXhlZCIpcmV0dXJuO24tPXQub3V0ZXJIZWlnaHQoITApfSksciYmaS5jc3MoIm92ZXJmbG93IixyKSx0aGlzLmVsZW1lbnQuY2hpbGRyZW4oKS5ub3QodGhpcy5wYW5lbHMpLmVhY2goZnVuY3Rpb24oKXtuLT1lKHRoaXMpLm91dGVySGVpZ2h0KCEwKX0pLHRoaXMucGFuZWxzLmVhY2goZnVuY3Rpb24oKXtlKHRoaXMpLmhlaWdodChNYXRoLm1heCgwLG4tZSh0aGlzKS5pbm5lckhlaWdodCgpK2UodGhpcykuaGVpZ2h0KCkpKX0pLmNzcygib3ZlcmZsb3ciLCJhdXRvIikpOnQ9PT0iYXV0byImJihuPTAsdGhpcy5wYW5lbHMuZWFjaChmdW5jdGlvbigpe249TWF0aC5tYXgobixlKHRoaXMpLmhlaWdodCgiIikuaGVpZ2h0KCkpfSkuaGVpZ2h0KG4pKX0sX2V2ZW50SGFuZGxlcjpmdW5jdGlvbih0KXt2YXIgbj10aGlzLm9wdGlvbnMscj10aGlzLmFjdGl2ZSxpPWUodC5jdXJyZW50VGFyZ2V0KSxzPWkuY2xvc2VzdCgibGkiKSxvPXNbMF09PT1yWzBdLHU9byYmbi5jb2xsYXBzaWJsZSxhPXU/ZSgpOnRoaXMuX2dldFBhbmVsRm9yVGFiKHMpLGY9ci5sZW5ndGg/dGhpcy5fZ2V0UGFuZWxGb3JUYWIocik6ZSgpLGw9e29sZFRhYjpyLG9sZFBhbmVsOmYsbmV3VGFiOnU/ZSgpOnMsbmV3UGFuZWw6YX07dC5wcmV2ZW50RGVmYXVsdCgpO2lmKHMuaGFzQ2xhc3MoInVpLXN0YXRlLWRpc2FibGVkIil8fHMuaGFzQ2xhc3MoInVpLXRhYnMtbG9hZGluZyIpfHx0aGlzLnJ1bm5pbmd8fG8mJiFuLmNvbGxhcHNpYmxlfHx0aGlzLl90cmlnZ2VyKCJiZWZvcmVBY3RpdmF0ZSIsdCxsKT09PSExKXJldHVybjtuLmFjdGl2ZT11PyExOnRoaXMudGFicy5pbmRleChzKSx0aGlzLmFjdGl2ZT1vP2UoKTpzLHRoaXMueGhyJiZ0aGlzLnhoci5hYm9ydCgpLCFmLmxlbmd0aCYmIWEubGVuZ3RoJiZlLmVycm9yKCJqUXVlcnkgVUkgVGFiczogTWlzbWF0Y2hpbmcgZnJhZ21lbnQgaWRlbnRpZmllci4iKSxhLmxlbmd0aCYmdGhpcy5sb2FkKHRoaXMudGFicy5pbmRleChzKSx0KSx0aGlzLl90b2dnbGUodCxsKX0sX3RvZ2dsZTpmdW5jdGlvbih0LG4pe2Z1bmN0aW9uIG8oKXtyLnJ1bm5pbmc9ITEsci5fdHJpZ2dlcigiYWN0aXZhdGUiLHQsbil9ZnVuY3Rpb24gdSgpe24ubmV3VGFiLmNsb3Nlc3QoImxpIikuYWRkQ2xhc3MoInVpLXRhYnMtYWN0aXZlIHVpLXN0YXRlLWFjdGl2ZSIpLGkubGVuZ3RoJiZyLm9wdGlvbnMuc2hvdz9yLl9zaG93KGksci5vcHRpb25zLnNob3csbyk6KGkuc2hvdygpLG8oKSl9dmFyIHI9dGhpcyxpPW4ubmV3UGFuZWwscz1uLm9sZFBhbmVsO3RoaXMucnVubmluZz0hMCxzLmxlbmd0aCYmdGhpcy5vcHRpb25zLmhpZGU/dGhpcy5faGlkZShzLHRoaXMub3B0aW9ucy5oaWRlLGZ1bmN0aW9uKCl7bi5vbGRUYWIuY2xvc2VzdCgibGkiKS5yZW1vdmVDbGFzcygidWktdGFicy1hY3RpdmUgdWktc3RhdGUtYWN0aXZlIiksdSgpfSk6KG4ub2xkVGFiLmNsb3Nlc3QoImxpIikucmVtb3ZlQ2xhc3MoInVpLXRhYnMtYWN0aXZlIHVpLXN0YXRlLWFjdGl2ZSIpLHMuaGlkZSgpLHUoKSkscy5hdHRyKHsiYXJpYS1leHBhbmRlZCI6ImZhbHNlIiwiYXJpYS1oaWRkZW4iOiJ0cnVlIn0pLG4ub2xkVGFiLmF0dHIoImFyaWEtc2VsZWN0ZWQiLCJmYWxzZSIpLGkubGVuZ3RoJiZzLmxlbmd0aD9uLm9sZFRhYi5hdHRyKCJ0YWJJbmRleCIsLTEpOmkubGVuZ3RoJiZ0aGlzLnRhYnMuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIGUodGhpcykuYXR0cigidGFiSW5kZXgiKT09PTB9KS5hdHRyKCJ0YWJJbmRleCIsLTEpLGkuYXR0cih7ImFyaWEtZXhwYW5kZWQiOiJ0cnVlIiwiYXJpYS1oaWRkZW4iOiJmYWxzZSJ9KSxuLm5ld1RhYi5hdHRyKHsiYXJpYS1zZWxlY3RlZCI6InRydWUiLHRhYkluZGV4OjB9KX0sX2FjdGl2YXRlOmZ1bmN0aW9uKHQpe3ZhciBuLHI9dGhpcy5fZmluZEFjdGl2ZSh0KTtpZihyWzBdPT09dGhpcy5hY3RpdmVbMF0pcmV0dXJuO3IubGVuZ3RofHwocj10aGlzLmFjdGl2ZSksbj1yLmZpbmQoIi51aS10YWJzLWFuY2hvciIpWzBdLHRoaXMuX2V2ZW50SGFuZGxlcih7dGFyZ2V0Om4sY3VycmVudFRhcmdldDpuLHByZXZlbnREZWZhdWx0OmUubm9vcH0pfSxfZmluZEFjdGl2ZTpmdW5jdGlvbih0KXtyZXR1cm4gdD09PSExP2UoKTp0aGlzLnRhYnMuZXEodCl9LF9nZXRJbmRleDpmdW5jdGlvbihlKXtyZXR1cm4gdHlwZW9mIGU9PSJzdHJpbmciJiYoZT10aGlzLmFuY2hvcnMuaW5kZXgodGhpcy5hbmNob3JzLmZpbHRlcigiW2hyZWYkPSciK2UrIiddIikpKSxlfSxfZGVzdHJveTpmdW5jdGlvbigpe3RoaXMueGhyJiZ0aGlzLnhoci5hYm9ydCgpLHRoaXMuZWxlbWVudC5yZW1vdmVDbGFzcygidWktdGFicyB1aS13aWRnZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWFsbCB1aS10YWJzLWNvbGxhcHNpYmxlIiksdGhpcy50YWJsaXN0LnJlbW92ZUNsYXNzKCJ1aS10YWJzLW5hdiB1aS1oZWxwZXItcmVzZXQgdWktaGVscGVyLWNsZWFyZml4IHVpLXdpZGdldC1oZWFkZXIgdWktY29ybmVyLWFsbCIpLnJlbW92ZUF0dHIoInJvbGUiKSx0aGlzLmFuY2hvcnMucmVtb3ZlQ2xhc3MoInVpLXRhYnMtYW5jaG9yIikucmVtb3ZlQXR0cigicm9sZSIpLnJlbW92ZUF0dHIoInRhYkluZGV4IikucmVtb3ZlRGF0YSgiaHJlZi50YWJzIikucmVtb3ZlRGF0YSgibG9hZC50YWJzIikucmVtb3ZlVW5pcXVlSWQoKSx0aGlzLnRhYnMuYWRkKHRoaXMucGFuZWxzKS5lYWNoKGZ1bmN0aW9uKCl7ZS5kYXRhKHRoaXMsInVpLXRhYnMtZGVzdHJveSIpP2UodGhpcykucmVtb3ZlKCk6ZSh0aGlzKS5yZW1vdmVDbGFzcygidWktc3RhdGUtZGVmYXVsdCB1aS1zdGF0ZS1hY3RpdmUgdWktc3RhdGUtZGlzYWJsZWQgdWktY29ybmVyLXRvcCB1aS1jb3JuZXItYm90dG9tIHVpLXdpZGdldC1jb250ZW50IHVpLXRhYnMtYWN0aXZlIHVpLXRhYnMtcGFuZWwiKS5yZW1vdmVBdHRyKCJ0YWJJbmRleCIpLnJlbW92ZUF0dHIoImFyaWEtbGl2ZSIpLnJlbW92ZUF0dHIoImFyaWEtYnVzeSIpLnJlbW92ZUF0dHIoImFyaWEtc2VsZWN0ZWQiKS5yZW1vdmVBdHRyKCJhcmlhLWxhYmVsbGVkYnkiKS5yZW1vdmVBdHRyKCJhcmlhLWhpZGRlbiIpLnJlbW92ZUF0dHIoImFyaWEtZXhwYW5kZWQiKS5yZW1vdmVBdHRyKCJyb2xlIil9KSx0aGlzLnRhYnMuZWFjaChmdW5jdGlvbigpe3ZhciB0PWUodGhpcyksbj10LmRhdGEoInVpLXRhYnMtYXJpYS1jb250cm9scyIpO24/dC5hdHRyKCJhcmlhLWNvbnRyb2xzIixuKTp0LnJlbW92ZUF0dHIoImFyaWEtY29udHJvbHMiKX0pLHRoaXMub3B0aW9ucy5oZWlnaHRTdHlsZSE9PSJjb250ZW50IiYmdGhpcy5wYW5lbHMuY3NzKCJoZWlnaHQiLCIiKX0sZW5hYmxlOmZ1bmN0aW9uKG4pe3ZhciByPXRoaXMub3B0aW9ucy5kaXNhYmxlZDtpZihyPT09ITEpcmV0dXJuO249PT10P3I9ITE6KG49dGhpcy5fZ2V0SW5kZXgobiksZS5pc0FycmF5KHIpP3I9ZS5tYXAocixmdW5jdGlvbihlKXtyZXR1cm4gZSE9PW4/ZTpudWxsfSk6cj1lLm1hcCh0aGlzLnRhYnMsZnVuY3Rpb24oZSx0KXtyZXR1cm4gdCE9PW4/dDpudWxsfSkpLHRoaXMuX3NldHVwRGlzYWJsZWQocil9LGRpc2FibGU6ZnVuY3Rpb24obil7dmFyIHI9dGhpcy5vcHRpb25zLmRpc2FibGVkO2lmKHI9PT0hMClyZXR1cm47aWYobj09PXQpcj0hMDtlbHNle249dGhpcy5fZ2V0SW5kZXgobik7aWYoZS5pbkFycmF5KG4scikhPT0tMSlyZXR1cm47ZS5pc0FycmF5KHIpP3I9ZS5tZXJnZShbbl0scikuc29ydCgpOnI9W25dfXRoaXMuX3NldHVwRGlzYWJsZWQocil9LGxvYWQ6ZnVuY3Rpb24odCxuKXt0PXRoaXMuX2dldEluZGV4KHQpO3ZhciByPXRoaXMsaT10aGlzLnRhYnMuZXEodCksbz1pLmZpbmQoIi51aS10YWJzLWFuY2hvciIpLHU9dGhpcy5fZ2V0UGFuZWxGb3JUYWIoaSksYT17dGFiOmkscGFuZWw6dX07aWYocyhvWzBdKSlyZXR1cm47dGhpcy54aHI9ZS5hamF4KHRoaXMuX2FqYXhTZXR0aW5ncyhvLG4sYSkpLHRoaXMueGhyJiZ0aGlzLnhoci5zdGF0dXNUZXh0IT09ImNhbmNlbGVkIiYmKGkuYWRkQ2xhc3MoInVpLXRhYnMtbG9hZGluZyIpLHUuYXR0cigiYXJpYS1idXN5IiwidHJ1ZSIpLHRoaXMueGhyLnN1Y2Nlc3MoZnVuY3Rpb24oZSl7c2V0VGltZW91dChmdW5jdGlvbigpe3UuaHRtbChlKSxyLl90cmlnZ2VyKCJsb2FkIixuLGEpfSwxKX0pLmNvbXBsZXRlKGZ1bmN0aW9uKGUsdCl7c2V0VGltZW91dChmdW5jdGlvbigpe3Q9PT0iYWJvcnQiJiZyLnBhbmVscy5zdG9wKCExLCEwKSxpLnJlbW92ZUNsYXNzKCJ1aS10YWJzLWxvYWRpbmciKSx1LnJlbW92ZUF0dHIoImFyaWEtYnVzeSIpLGU9PT1yLnhociYmZGVsZXRlIHIueGhyfSwxKX0pKX0sX2FqYXhTZXR0aW5nczpmdW5jdGlvbih0LG4scil7dmFyIGk9dGhpcztyZXR1cm57dXJsOnQuYXR0cigiaHJlZiIpLGJlZm9yZVNlbmQ6ZnVuY3Rpb24odCxzKXtyZXR1cm4gaS5fdHJpZ2dlcigiYmVmb3JlTG9hZCIsbixlLmV4dGVuZCh7anFYSFI6dCxhamF4U2V0dGluZ3M6c30scikpfX19LF9nZXRQYW5lbEZvclRhYjpmdW5jdGlvbih0KXt2YXIgbj1lKHQpLmF0dHIoImFyaWEtY29udHJvbHMiKTtyZXR1cm4gdGhpcy5lbGVtZW50LmZpbmQodGhpcy5fc2FuaXRpemVTZWxlY3RvcigiIyIrbikpfX0pLGUudWlCYWNrQ29tcGF0IT09ITEmJihlLnVpLnRhYnMucHJvdG90eXBlLl91aT1mdW5jdGlvbihlLHQpe3JldHVybnt0YWI6ZSxwYW5lbDp0LGluZGV4OnRoaXMuYW5jaG9ycy5pbmRleChlKX19LGUud2lkZ2V0KCJ1aS50YWJzIixlLnVpLnRhYnMse3VybDpmdW5jdGlvbihlLHQpe3RoaXMuYW5jaG9ycy5lcShlKS5hdHRyKCJocmVmIix0KX19KSxlLndpZGdldCgidWkudGFicyIsZS51aS50YWJzLHtvcHRpb25zOnthamF4T3B0aW9uczpudWxsLGNhY2hlOiExfSxfY3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5fc3VwZXIoKTt2YXIgdD10aGlzO3RoaXMuX29uKHt0YWJzYmVmb3JlbG9hZDpmdW5jdGlvbihuLHIpe2lmKGUuZGF0YShyLnRhYlswXSwiY2FjaGUudGFicyIpKXtuLnByZXZlbnREZWZhdWx0KCk7cmV0dXJufXIuanFYSFIuc3VjY2VzcyhmdW5jdGlvbigpe3Qub3B0aW9ucy5jYWNoZSYmZS5kYXRhKHIudGFiWzBdLCJjYWNoZS50YWJzIiwhMCl9KX19KX0sX2FqYXhTZXR0aW5nczpmdW5jdGlvbih0LG4scil7dmFyIGk9dGhpcy5vcHRpb25zLmFqYXhPcHRpb25zO3JldHVybiBlLmV4dGVuZCh7fSxpLHtlcnJvcjpmdW5jdGlvbihlLHQsbil7dHJ5e2kuZXJyb3IoZSx0LHIudGFiLmNsb3Nlc3QoImxpIikuaW5kZXgoKSxyLnRhYlswXSl9Y2F0Y2gobil7fX19LHRoaXMuX3N1cGVyQXBwbHkoYXJndW1lbnRzKSl9LF9zZXRPcHRpb246ZnVuY3Rpb24oZSx0KXtlPT09ImNhY2hlIiYmdD09PSExJiZ0aGlzLmFuY2hvcnMucmVtb3ZlRGF0YSgiY2FjaGUudGFicyIpLHRoaXMuX3N1cGVyKGUsdCl9LF9kZXN0cm95OmZ1bmN0aW9uKCl7dGhpcy5hbmNob3JzLnJlbW92ZURhdGEoImNhY2hlLnRhYnMiKSx0aGlzLl9zdXBlcigpfSx1cmw6ZnVuY3Rpb24oZSx0KXt0aGlzLmFuY2hvcnMuZXEoZSkucmVtb3ZlRGF0YSgiY2FjaGUudGFicyIpLHRoaXMuX3N1cGVyQXBwbHkoYXJndW1lbnRzKX19KSxlLndpZGdldCgidWkudGFicyIsZS51aS50YWJzLHthYm9ydDpmdW5jdGlvbigpe3RoaXMueGhyJiZ0aGlzLnhoci5hYm9ydCgpfX0pLGUud2lkZ2V0KCJ1aS50YWJzIixlLnVpLnRhYnMse29wdGlvbnM6e3NwaW5uZXI6IjxlbT5Mb2FkaW5nJiM4MjMwOzwvZW0+In0sX2NyZWF0ZTpmdW5jdGlvbigpe3RoaXMuX3N1cGVyKCksdGhpcy5fb24oe3RhYnNiZWZvcmVsb2FkOmZ1bmN0aW9uKGUsdCl7aWYoZS50YXJnZXQhPT10aGlzLmVsZW1lbnRbMF18fCF0aGlzLm9wdGlvbnMuc3Bpbm5lcilyZXR1cm47dmFyIG49dC50YWIuZmluZCgic3BhbiIpLHI9bi5odG1sKCk7bi5odG1sKHRoaXMub3B0aW9ucy5zcGlubmVyKSx0LmpxWEhSLmNvbXBsZXRlKGZ1bmN0aW9uKCl7bi5odG1sKHIpfSl9fSl9fSksZS53aWRnZXQoInVpLnRhYnMiLGUudWkudGFicyx7b3B0aW9uczp7ZW5hYmxlOm51bGwsZGlzYWJsZTpudWxsfSxlbmFibGU6ZnVuY3Rpb24odCl7dmFyIG49dGhpcy5vcHRpb25zLHI7aWYodCYmbi5kaXNhYmxlZD09PSEwfHxlLmlzQXJyYXkobi5kaXNhYmxlZCkmJmUuaW5BcnJheSh0LG4uZGlzYWJsZWQpIT09LTEpcj0hMDt0aGlzLl9zdXBlckFwcGx5KGFyZ3VtZW50cyksciYmdGhpcy5fdHJpZ2dlcigiZW5hYmxlIixudWxsLHRoaXMuX3VpKHRoaXMuYW5jaG9yc1t0XSx0aGlzLnBhbmVsc1t0XSkpfSxkaXNhYmxlOmZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMub3B0aW9ucyxyO2lmKHQmJm4uZGlzYWJsZWQ9PT0hMXx8ZS5pc0FycmF5KG4uZGlzYWJsZWQpJiZlLmluQXJyYXkodCxuLmRpc2FibGVkKT09PS0xKXI9ITA7dGhpcy5fc3VwZXJBcHBseShhcmd1bWVudHMpLHImJnRoaXMuX3RyaWdnZXIoImRpc2FibGUiLG51bGwsdGhpcy5fdWkodGhpcy5hbmNob3JzW3RdLHRoaXMucGFuZWxzW3RdKSl9fSksZS53aWRnZXQoInVpLnRhYnMiLGUudWkudGFicyx7b3B0aW9uczp7YWRkOm51bGwscmVtb3ZlOm51bGwsdGFiVGVtcGxhdGU6IjxsaT48YSBocmVmPScje2hyZWZ9Jz48c3Bhbj4je2xhYmVsfTwvc3Bhbj48L2E+PC9saT4ifSxhZGQ6ZnVuY3Rpb24obixyLGkpe2k9PT10JiYoaT10aGlzLmFuY2hvcnMubGVuZ3RoKTt2YXIgcyxvLHU9dGhpcy5vcHRpb25zLGE9ZSh1LnRhYlRlbXBsYXRlLnJlcGxhY2UoLyNce2hyZWZcfS9nLG4pLnJlcGxhY2UoLyNce2xhYmVsXH0vZyxyKSksZj1uLmluZGV4T2YoIiMiKT90aGlzLl90YWJJZChhKTpuLnJlcGxhY2UoIiMiLCIiKTtyZXR1cm4gYS5hZGRDbGFzcygidWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItdG9wIikuZGF0YSgidWktdGFicy1kZXN0cm95IiwhMCksYS5hdHRyKCJhcmlhLWNvbnRyb2xzIixmKSxzPWk+PXRoaXMudGFicy5sZW5ndGgsbz10aGlzLmVsZW1lbnQuZmluZCgiIyIrZiksby5sZW5ndGh8fChvPXRoaXMuX2NyZWF0ZVBhbmVsKGYpLHM/aT4wP28uaW5zZXJ0QWZ0ZXIodGhpcy5wYW5lbHMuZXEoLTEpKTpvLmFwcGVuZFRvKHRoaXMuZWxlbWVudCk6by5pbnNlcnRCZWZvcmUodGhpcy5wYW5lbHNbaV0pKSxvLmFkZENsYXNzKCJ1aS10YWJzLXBhbmVsIHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1ib3R0b20iKS5oaWRlKCkscz9hLmFwcGVuZFRvKHRoaXMudGFibGlzdCk6YS5pbnNlcnRCZWZvcmUodGhpcy50YWJzW2ldKSx1LmRpc2FibGVkPWUubWFwKHUuZGlzYWJsZWQsZnVuY3Rpb24oZSl7cmV0dXJuIGU+PWk/KytlOmV9KSx0aGlzLnJlZnJlc2goKSx0aGlzLnRhYnMubGVuZ3RoPT09MSYmdS5hY3RpdmU9PT0hMSYmdGhpcy5vcHRpb24oImFjdGl2ZSIsMCksdGhpcy5fdHJpZ2dlcigiYWRkIixudWxsLHRoaXMuX3VpKHRoaXMuYW5jaG9yc1tpXSx0aGlzLnBhbmVsc1tpXSkpLHRoaXN9LHJlbW92ZTpmdW5jdGlvbih0KXt0PXRoaXMuX2dldEluZGV4KHQpO3ZhciBuPXRoaXMub3B0aW9ucyxyPXRoaXMudGFicy5lcSh0KS5yZW1vdmUoKSxpPXRoaXMuX2dldFBhbmVsRm9yVGFiKHIpLnJlbW92ZSgpO3JldHVybiByLmhhc0NsYXNzKCJ1aS10YWJzLWFjdGl2ZSIpJiZ0aGlzLmFuY2hvcnMubGVuZ3RoPjImJnRoaXMuX2FjdGl2YXRlKHQrKHQrMTx0aGlzLmFuY2hvcnMubGVuZ3RoPzE6LTEpKSxuLmRpc2FibGVkPWUubWFwKGUuZ3JlcChuLmRpc2FibGVkLGZ1bmN0aW9uKGUpe3JldHVybiBlIT09dH0pLGZ1bmN0aW9uKGUpe3JldHVybiBlPj10Py0tZTplfSksdGhpcy5yZWZyZXNoKCksdGhpcy5fdHJpZ2dlcigicmVtb3ZlIixudWxsLHRoaXMuX3VpKHIuZmluZCgiYSIpWzBdLGlbMF0pKSx0aGlzfX0pLGUud2lkZ2V0KCJ1aS50YWJzIixlLnVpLnRhYnMse2xlbmd0aDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmFuY2hvcnMubGVuZ3RofX0pLGUud2lkZ2V0KCJ1aS50YWJzIixlLnVpLnRhYnMse29wdGlvbnM6e2lkUHJlZml4OiJ1aS10YWJzLSJ9LF90YWJJZDpmdW5jdGlvbih0KXt2YXIgbj10LmlzKCJsaSIpP3QuZmluZCgiYVtocmVmXSIpOnQ7cmV0dXJuIG49blswXSxlKG4pLmNsb3Nlc3QoImxpIikuYXR0cigiYXJpYS1jb250cm9scyIpfHxuLnRpdGxlJiZuLnRpdGxlLnJlcGxhY2UoL1xzL2csIl8iKS5yZXBsYWNlKC9bXlx3XHUwMGMwLVx1RkZGRlwtXS9nLCIiKXx8dGhpcy5vcHRpb25zLmlkUHJlZml4K2koKX19KSxlLndpZGdldCgidWkudGFicyIsZS51aS50YWJzLHtvcHRpb25zOntwYW5lbFRlbXBsYXRlOiI8ZGl2PjwvZGl2PiJ9LF9jcmVhdGVQYW5lbDpmdW5jdGlvbih0KXtyZXR1cm4gZSh0aGlzLm9wdGlvbnMucGFuZWxUZW1wbGF0ZSkuYXR0cigiaWQiLHQpLmFkZENsYXNzKCJ1aS10YWJzLXBhbmVsIHVpLXdpZGdldC1jb250ZW50IHVpLWNvcm5lci1ib3R0b20iKS5kYXRhKCJ1aS10YWJzLWRlc3Ryb3kiLCEwKX19KSxlLndpZGdldCgidWkudGFicyIsZS51aS50YWJzLHtfY3JlYXRlOmZ1bmN0aW9uKCl7dmFyIGU9dGhpcy5vcHRpb25zO2UuYWN0aXZlPT09bnVsbCYmZS5zZWxlY3RlZCE9PXQmJihlLmFjdGl2ZT1lLnNlbGVjdGVkPT09LTE/ITE6ZS5zZWxlY3RlZCksdGhpcy5fc3VwZXIoKSxlLnNlbGVjdGVkPWUuYWN0aXZlLGUuc2VsZWN0ZWQ9PT0hMSYmKGUuc2VsZWN0ZWQ9LTEpfSxfc2V0T3B0aW9uOmZ1bmN0aW9uKGUsdCl7aWYoZSE9PSJzZWxlY3RlZCIpcmV0dXJuIHRoaXMuX3N1cGVyKGUsdCk7dmFyIG49dGhpcy5vcHRpb25zO3RoaXMuX3N1cGVyKCJhY3RpdmUiLHQ9PT0tMT8hMTp0KSxuLnNlbGVjdGVkPW4uYWN0aXZlLG4uc2VsZWN0ZWQ9PT0hMSYmKG4uc2VsZWN0ZWQ9LTEpfSxfZXZlbnRIYW5kbGVyOmZ1bmN0aW9uKGUpe3RoaXMuX3N1cGVyQXBwbHkoYXJndW1lbnRzKSx0aGlzLm9wdGlvbnMuc2VsZWN0ZWQ9dGhpcy5vcHRpb25zLmFjdGl2ZSx0aGlzLm9wdGlvbnMuc2VsZWN0ZWQ9PT0hMSYmKHRoaXMub3B0aW9ucy5zZWxlY3RlZD0tMSl9fSksZS53aWRnZXQoInVpLnRhYnMiLGUudWkudGFicyx7b3B0aW9uczp7c2hvdzpudWxsLHNlbGVjdDpudWxsfSxfY3JlYXRlOmZ1bmN0aW9uKCl7dGhpcy5fc3VwZXIoKSx0aGlzLm9wdGlvbnMuYWN0aXZlIT09ITEmJnRoaXMuX3RyaWdnZXIoInNob3ciLG51bGwsdGhpcy5fdWkodGhpcy5hY3RpdmUuZmluZCgiLnVpLXRhYnMtYW5jaG9yIilbMF0sdGhpcy5fZ2V0UGFuZWxGb3JUYWIodGhpcy5hY3RpdmUpWzBdKSl9LF90cmlnZ2VyOmZ1bmN0aW9uKGUsdCxuKXt2YXIgcj10aGlzLl9zdXBlckFwcGx5KGFyZ3VtZW50cyk7cmV0dXJuIHI/KGU9PT0iYmVmb3JlQWN0aXZhdGUiJiZuLm5ld1RhYi5sZW5ndGg/cj10aGlzLl9zdXBlcigic2VsZWN0Iix0LHt0YWI6bi5uZXdUYWIuZmluZCgiLnVpLXRhYnMtYW5jaG9yIilbMF0scGFuZWw6bi5uZXdQYW5lbFswXSxpbmRleDpuLm5ld1RhYi5jbG9zZXN0KCJsaSIpLmluZGV4KCl9KTplPT09ImFjdGl2YXRlIiYmbi5uZXdUYWIubGVuZ3RoJiYocj10aGlzLl9zdXBlcigic2hvdyIsdCx7dGFiOm4ubmV3VGFiLmZpbmQoIi51aS10YWJzLWFuY2hvciIpWzBdLHBhbmVsOm4ubmV3UGFuZWxbMF0saW5kZXg6bi5uZXdUYWIuY2xvc2VzdCgibGkiKS5pbmRleCgpfSkpLHIpOiExfX0pLGUud2lkZ2V0KCJ1aS50YWJzIixlLnVpLnRhYnMse3NlbGVjdDpmdW5jdGlvbihlKXtlPXRoaXMuX2dldEluZGV4KGUpO2lmKGU9PT0tMSl7aWYoIXRoaXMub3B0aW9ucy5jb2xsYXBzaWJsZXx8dGhpcy5vcHRpb25zLnNlbGVjdGVkPT09LTEpcmV0dXJuO2U9dGhpcy5vcHRpb25zLnNlbGVjdGVkfXRoaXMuYW5jaG9ycy5lcShlKS50cmlnZ2VyKHRoaXMub3B0aW9ucy5ldmVudCt0aGlzLmV2ZW50TmFtZXNwYWNlKX19KSxmdW5jdGlvbigpe3ZhciB0PTA7ZS53aWRnZXQoInVpLnRhYnMiLGUudWkudGFicyx7b3B0aW9uczp7Y29va2llOm51bGx9LF9jcmVhdGU6ZnVuY3Rpb24oKXt2YXIgZT10aGlzLm9wdGlvbnMsdDtlLmFjdGl2ZT09bnVsbCYmZS5jb29raWUmJih0PXBhcnNlSW50KHRoaXMuX2Nvb2tpZSgpLDEwKSx0PT09LTEmJih0PSExKSxlLmFjdGl2ZT10KSx0aGlzLl9zdXBlcigpfSxfY29va2llOmZ1bmN0aW9uKG4pe3ZhciByPVt0aGlzLmNvb2tpZXx8KHRoaXMuY29va2llPXRoaXMub3B0aW9ucy5jb29raWUubmFtZXx8InVpLXRhYnMtIisgKyt0KV07cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGgmJihyLnB1c2gobj09PSExPy0xOm4pLHIucHVzaCh0aGlzLm9wdGlvbnMuY29va2llKSksZS5jb29raWUuYXBwbHkobnVsbCxyKX0sX3JlZnJlc2g6ZnVuY3Rpb24oKXt0aGlzLl9zdXBlcigpLHRoaXMub3B0aW9ucy5jb29raWUmJnRoaXMuX2Nvb2tpZSh0aGlzLm9wdGlvbnMuYWN0aXZlLHRoaXMub3B0aW9ucy5jb29raWUpfSxfZXZlbnRIYW5kbGVyOmZ1bmN0aW9uKGUpe3RoaXMuX3N1cGVyQXBwbHkoYXJndW1lbnRzKSx0aGlzLm9wdGlvbnMuY29va2llJiZ0aGlzLl9jb29raWUodGhpcy5vcHRpb25zLmFjdGl2ZSx0aGlzLm9wdGlvbnMuY29va2llKX0sX2Rlc3Ryb3k6ZnVuY3Rpb24oKXt0aGlzLl9zdXBlcigpLHRoaXMub3B0aW9ucy5jb29raWUmJnRoaXMuX2Nvb2tpZShudWxsLHRoaXMub3B0aW9ucy5jb29raWUpfX0pfSgpLGUud2lkZ2V0KCJ1aS50YWJzIixlLnVpLnRhYnMse190cmlnZ2VyOmZ1bmN0aW9uKHQsbixyKXt2YXIgaT1lLmV4dGVuZCh7fSxyKTtyZXR1cm4gdD09PSJsb2FkIiYmKGkucGFuZWw9aS5wYW5lbFswXSxpLnRhYj1pLnRhYi5maW5kKCIudWktdGFicy1hbmNob3IiKVswXSksdGhpcy5fc3VwZXIodCxuLGkpfX0pLGUud2lkZ2V0KCJ1aS50YWJzIixlLnVpLnRhYnMse29wdGlvbnM6e2Z4Om51bGx9LF9nZXRGeDpmdW5jdGlvbigpe3ZhciB0LG4scj10aGlzLm9wdGlvbnMuZng7cmV0dXJuIHImJihlLmlzQXJyYXkocik/KHQ9clswXSxuPXJbMV0pOnQ9bj1yKSxyP3tzaG93Om4saGlkZTp0fTpudWxsfSxfdG9nZ2xlOmZ1bmN0aW9uKGUsdCl7ZnVuY3Rpb24gbygpe24ucnVubmluZz0hMSxuLl90cmlnZ2VyKCJhY3RpdmF0ZSIsZSx0KX1mdW5jdGlvbiB1KCl7dC5uZXdUYWIuY2xvc2VzdCgibGkiKS5hZGRDbGFzcygidWktdGFicy1hY3RpdmUgdWktc3RhdGUtYWN0aXZlIiksci5sZW5ndGgmJnMuc2hvdz9yLmFuaW1hdGUocy5zaG93LHMuc2hvdy5kdXJhdGlvbixmdW5jdGlvbigpe28oKX0pOihyLnNob3coKSxvKCkpfXZhciBuPXRoaXMscj10Lm5ld1BhbmVsLGk9dC5vbGRQYW5lbCxzPXRoaXMuX2dldEZ4KCk7aWYoIXMpcmV0dXJuIHRoaXMuX3N1cGVyKGUsdCk7bi5ydW5uaW5nPSEwLGkubGVuZ3RoJiZzLmhpZGU/aS5hbmltYXRlKHMuaGlkZSxzLmhpZGUuZHVyYXRpb24sZnVuY3Rpb24oKXt0Lm9sZFRhYi5jbG9zZXN0KCJsaSIpLnJlbW92ZUNsYXNzKCJ1aS10YWJzLWFjdGl2ZSB1aS1zdGF0ZS1hY3RpdmUiKSx1KCl9KToodC5vbGRUYWIuY2xvc2VzdCgibGkiKS5yZW1vdmVDbGFzcygidWktdGFicy1hY3RpdmUgdWktc3RhdGUtYWN0aXZlIiksaS5oaWRlKCksdSgpKX19KSl9KShqUXVlcnkpOyhmdW5jdGlvbihlKXtmdW5jdGlvbiBuKHQsbil7dmFyIHI9KHQuYXR0cigiYXJpYS1kZXNjcmliZWRieSIpfHwiIikuc3BsaXQoL1xzKy8pO3IucHVzaChuKSx0LmRhdGEoInVpLXRvb2x0aXAtaWQiLG4pLmF0dHIoImFyaWEtZGVzY3JpYmVkYnkiLGUudHJpbShyLmpvaW4oIiAiKSkpfWZ1bmN0aW9uIHIodCl7dmFyIG49dC5kYXRhKCJ1aS10b29sdGlwLWlkIikscj0odC5hdHRyKCJhcmlhLWRlc2NyaWJlZGJ5Iil8fCIiKS5zcGxpdCgvXHMrLyksaT1lLmluQXJyYXkobixyKTtpIT09LTEmJnIuc3BsaWNlKGksMSksdC5yZW1vdmVEYXRhKCJ1aS10b29sdGlwLWlkIikscj1lLnRyaW0oci5qb2luKCIgIikpLHI/dC5hdHRyKCJhcmlhLWRlc2NyaWJlZGJ5IixyKTp0LnJlbW92ZUF0dHIoImFyaWEtZGVzY3JpYmVkYnkiKX12YXIgdD0wO2Uud2lkZ2V0KCJ1aS50b29sdGlwIix7dmVyc2lvbjoiMS45LjAiLG9wdGlvbnM6e2NvbnRlbnQ6ZnVuY3Rpb24oKXtyZXR1cm4gZSh0aGlzKS5hdHRyKCJ0aXRsZSIpfSxoaWRlOiEwLGl0ZW1zOiJbdGl0bGVdIixwb3NpdGlvbjp7bXk6ImxlZnQrMTUgY2VudGVyIixhdDoicmlnaHQgY2VudGVyIixjb2xsaXNpb246ImZsaXBmaXQgZmxpcGZpdCJ9LHNob3c6ITAsdG9vbHRpcENsYXNzOm51bGwsdHJhY2s6ITEsY2xvc2U6bnVsbCxvcGVuOm51bGx9LF9jcmVhdGU6ZnVuY3Rpb24oKXt0aGlzLl9vbih7bW91c2VvdmVyOiJvcGVuIixmb2N1c2luOiJvcGVuIn0pLHRoaXMudG9vbHRpcHM9e319LF9zZXRPcHRpb246ZnVuY3Rpb24odCxuKXt2YXIgcj10aGlzO2lmKHQ9PT0iZGlzYWJsZWQiKXt0aGlzW24/Il9kaXNhYmxlIjoiX2VuYWJsZSJdKCksdGhpcy5vcHRpb25zW3RdPW47cmV0dXJufXRoaXMuX3N1cGVyKHQsbiksdD09PSJjb250ZW50IiYmZS5lYWNoKHRoaXMudG9vbHRpcHMsZnVuY3Rpb24oZSx0KXtyLl91cGRhdGVDb250ZW50KHQpfSl9LF9kaXNhYmxlOmZ1bmN0aW9uKCl7dmFyIHQ9dGhpcztlLmVhY2godGhpcy50b29sdGlwcyxmdW5jdGlvbihuLHIpe3ZhciBpPWUuRXZlbnQoImJsdXIiKTtpLnRhcmdldD1pLmN1cnJlbnRUYXJnZXQ9clswXSx0LmNsb3NlKGksITApfSksdGhpcy5lbGVtZW50LmZpbmQodGhpcy5vcHRpb25zLml0ZW1zKS5hbmRTZWxmKCkuZWFjaChmdW5jdGlvbigpe3ZhciB0PWUodGhpcyk7dC5pcygiW3RpdGxlXSIpJiZ0LmRhdGEoInVpLXRvb2x0aXAtdGl0bGUiLHQuYXR0cigidGl0bGUiKSkuYXR0cigidGl0bGUiLCIiKX0pfSxfZW5hYmxlOmZ1bmN0aW9uKCl7dGhpcy5lbGVtZW50LmZpbmQodGhpcy5vcHRpb25zLml0ZW1zKS5hbmRTZWxmKCkuZWFjaChmdW5jdGlvbigpe3ZhciB0PWUodGhpcyk7dC5kYXRhKCJ1aS10b29sdGlwLXRpdGxlIikmJnQuYXR0cigidGl0bGUiLHQuZGF0YSgidWktdG9vbHRpcC10aXRsZSIpKX0pfSxvcGVuOmZ1bmN0aW9uKHQpe3ZhciBuPWUodD90LnRhcmdldDp0aGlzLmVsZW1lbnQpLmNsb3Nlc3QodGhpcy5vcHRpb25zLml0ZW1zKTtpZighbi5sZW5ndGgpcmV0dXJuO2lmKHRoaXMub3B0aW9ucy50cmFjayYmbi5kYXRhKCJ1aS10b29sdGlwLWlkIikpe3RoaXMuX2ZpbmQobikucG9zaXRpb24oZS5leHRlbmQoe29mOm59LHRoaXMub3B0aW9ucy5wb3NpdGlvbikpLHRoaXMuX29mZih0aGlzLmRvY3VtZW50LCJtb3VzZW1vdmUiKTtyZXR1cm59bi5hdHRyKCJ0aXRsZSIpJiZuLmRhdGEoInVpLXRvb2x0aXAtdGl0bGUiLG4uYXR0cigidGl0bGUiKSksbi5kYXRhKCJ0b29sdGlwLW9wZW4iLCEwKSx0aGlzLl91cGRhdGVDb250ZW50KG4sdCl9LF91cGRhdGVDb250ZW50OmZ1bmN0aW9uKGUsdCl7dmFyIG4scj10aGlzLm9wdGlvbnMuY29udGVudCxpPXRoaXM7aWYodHlwZW9mIHI9PSJzdHJpbmciKXJldHVybiB0aGlzLl9vcGVuKHQsZSxyKTtuPXIuY2FsbChlWzBdLGZ1bmN0aW9uKG4pe2lmKCFlLmRhdGEoInRvb2x0aXAtb3BlbiIpKXJldHVybjtpLl9kZWxheShmdW5jdGlvbigpe3RoaXMuX29wZW4odCxlLG4pfSl9KSxuJiZ0aGlzLl9vcGVuKHQsZSxuKX0sX29wZW46ZnVuY3Rpb24odCxyLGkpe2Z1bmN0aW9uIHUoZSl7by5vZj1lLHMucG9zaXRpb24obyl9dmFyIHMsbztpZighaSlyZXR1cm47cz10aGlzLl9maW5kKHIpO2lmKHMubGVuZ3RoKXtzLmZpbmQoIi51aS10b29sdGlwLWNvbnRlbnQiKS5odG1sKGkpO3JldHVybn1yLmlzKCJbdGl0bGVdIikmJih0JiZ0LnR5cGU9PT0ibW91c2VvdmVyIj9yLmF0dHIoInRpdGxlIiwiIik6ci5yZW1vdmVBdHRyKCJ0aXRsZSIpKSxzPXRoaXMuX3Rvb2x0aXAociksbihyLHMuYXR0cigiaWQiKSkscy5maW5kKCIudWktdG9vbHRpcC1jb250ZW50IikuaHRtbChpKSx0aGlzLm9wdGlvbnMudHJhY2smJnQmJi9ebW91c2UvLnRlc3QodC5vcmlnaW5hbEV2ZW50LnR5cGUpPyhvPWUuZXh0ZW5kKHt9LHRoaXMub3B0aW9ucy5wb3NpdGlvbiksdGhpcy5fb24odGhpcy5kb2N1bWVudCx7bW91c2Vtb3ZlOnV9KSx1KHQpKTpzLnBvc2l0aW9uKGUuZXh0ZW5kKHtvZjpyfSx0aGlzLm9wdGlvbnMucG9zaXRpb24pKSxzLmhpZGUoKSx0aGlzLl9zaG93KHMsdGhpcy5vcHRpb25zLnNob3cpLHRoaXMuX3RyaWdnZXIoIm9wZW4iLHQse3Rvb2x0aXA6c30pLHRoaXMuX29uKHIse21vdXNlbGVhdmU6ImNsb3NlIixmb2N1c291dDoiY2xvc2UiLGtleXVwOmZ1bmN0aW9uKHQpe2lmKHQua2V5Q29kZT09PWUudWkua2V5Q29kZS5FU0NBUEUpe3ZhciBuPWUuRXZlbnQodCk7bi5jdXJyZW50VGFyZ2V0PXJbMF0sdGhpcy5jbG9zZShuLCEwKX19fSl9LGNsb3NlOmZ1bmN0aW9uKHQsbil7dmFyIGk9dGhpcyxzPWUodD90LmN1cnJlbnRUYXJnZXQ6dGhpcy5lbGVtZW50KSxvPXRoaXMuX2ZpbmQocyk7aWYodGhpcy5jbG9zaW5nKXJldHVybjtpZighbiYmdCYmdC50eXBlIT09ImZvY3Vzb3V0IiYmdGhpcy5kb2N1bWVudFswXS5hY3RpdmVFbGVtZW50PT09c1swXSlyZXR1cm47cy5kYXRhKCJ1aS10b29sdGlwLXRpdGxlIikmJnMuYXR0cigidGl0bGUiLHMuZGF0YSgidWktdG9vbHRpcC10aXRsZSIpKSxyKHMpLG8uc3RvcCghMCksdGhpcy5faGlkZShvLHRoaXMub3B0aW9ucy5oaWRlLGZ1bmN0aW9uKCl7ZSh0aGlzKS5yZW1vdmUoKSxkZWxldGUgaS50b29sdGlwc1t0aGlzLmlkXX0pLHMucmVtb3ZlRGF0YSgidG9vbHRpcC1vcGVuIiksdGhpcy5fb2ZmKHMsIm1vdXNlbGVhdmUgZm9jdXNvdXQga2V5dXAiKSx0aGlzLl9vZmYodGhpcy5kb2N1bWVudCwibW91c2Vtb3ZlIiksdGhpcy5jbG9zaW5nPSEwLHRoaXMuX3RyaWdnZXIoImNsb3NlIix0LHt0b29sdGlwOm99KSx0aGlzLmNsb3Npbmc9ITF9LF90b29sdGlwOmZ1bmN0aW9uKG4pe3ZhciByPSJ1aS10b29sdGlwLSIrdCsrLGk9ZSgiPGRpdj4iKS5hdHRyKHtpZDpyLHJvbGU6InRvb2x0aXAifSkuYWRkQ2xhc3MoInVpLXRvb2x0aXAgdWktd2lkZ2V0IHVpLWNvcm5lci1hbGwgdWktd2lkZ2V0LWNvbnRlbnQgIisodGhpcy5vcHRpb25zLnRvb2x0aXBDbGFzc3x8IiIpKTtyZXR1cm4gZSgiPGRpdj4iKS5hZGRDbGFzcygidWktdG9vbHRpcC1jb250ZW50IikuYXBwZW5kVG8oaSksaS5hcHBlbmRUbyh0aGlzLmRvY3VtZW50WzBdLmJvZHkpLGUuZm4uYmdpZnJhbWUmJmkuYmdpZnJhbWUoKSx0aGlzLnRvb2x0aXBzW3JdPW4saX0sX2ZpbmQ6ZnVuY3Rpb24odCl7dmFyIG49dC5kYXRhKCJ1aS10b29sdGlwLWlkIik7cmV0dXJuIG4/ZSgiIyIrbik6ZSgpfSxfZGVzdHJveTpmdW5jdGlvbigpe3ZhciB0PXRoaXM7ZS5lYWNoKHRoaXMudG9vbHRpcHMsZnVuY3Rpb24obixyKXt2YXIgaT1lLkV2ZW50KCJibHVyIik7aS50YXJnZXQ9aS5jdXJyZW50VGFyZ2V0PXJbMF0sdC5jbG9zZShpLCEwKSxlKCIjIituKS5yZW1vdmUoKSxyLmRhdGEoInVpLXRvb2x0aXAtdGl0bGUiKSYmKHIuYXR0cigidGl0bGUiLHIuZGF0YSgidWktdG9vbHRpcC10aXRsZSIpKSxyLnJlbW92ZURhdGEoInVpLXRvb2x0aXAtdGl0bGUiKSl9KX19KX0pKGpRdWVyeSk7alF1ZXJ5LmVmZmVjdHN8fGZ1bmN0aW9uKGUsdCl7dmFyIG49ZS51aUJhY2tDb21wYXQhPT0hMSxyPSJ1aS1lZmZlY3RzLSI7ZS5lZmZlY3RzPXtlZmZlY3Q6e319LGZ1bmN0aW9uKHQsbil7ZnVuY3Rpb24gcChlLHQsbil7dmFyIHI9YVt0LnR5cGVdfHx7fTtyZXR1cm4gZT09bnVsbD9ufHwhdC5kZWY/bnVsbDp0LmRlZjooZT1yLmZsb29yP35+ZTpwYXJzZUZsb2F0KGUpLGlzTmFOKGUpP3QuZGVmOnIubW9kPyhlK3IubW9kKSVyLm1vZDowPmU/MDpyLm1heDxlP3IubWF4OmUpfWZ1bmN0aW9uIGQoZSl7dmFyIG49bygpLHI9bi5fcmdiYT1bXTtyZXR1cm4gZT1lLnRvTG93ZXJDYXNlKCksaChzLGZ1bmN0aW9uKHQsaSl7dmFyIHMsbz1pLnJlLmV4ZWMoZSksYT1vJiZpLnBhcnNlKG8pLGY9aS5zcGFjZXx8InJnYmEiO2lmKGEpcmV0dXJuIHM9bltmXShhKSxuW3VbZl0uY2FjaGVdPXNbdVtmXS5jYWNoZV0scj1uLl9yZ2JhPXMuX3JnYmEsITF9KSxyLmxlbmd0aD8oci5qb2luKCk9PT0iMCwwLDAsMCImJnQuZXh0ZW5kKHIsYy50cmFuc3BhcmVudCksbik6Y1tlXX1mdW5jdGlvbiB2KGUsdCxuKXtyZXR1cm4gbj0obisxKSUxLG4qNjwxP2UrKHQtZSkqbio2Om4qMjwxP3Q6biozPDI/ZSsodC1lKSooMi8zLW4pKjY6ZX12YXIgcj0iYmFja2dyb3VuZENvbG9yIGJvcmRlckJvdHRvbUNvbG9yIGJvcmRlckxlZnRDb2xvciBib3JkZXJSaWdodENvbG9yIGJvcmRlclRvcENvbG9yIGNvbG9yIGNvbHVtblJ1bGVDb2xvciBvdXRsaW5lQ29sb3IgdGV4dERlY29yYXRpb25Db2xvciB0ZXh0RW1waGFzaXNDb2xvciIuc3BsaXQoIiAiKSxpPS9eKFtcLStdKT1ccyooXGQrXC4/XGQqKS8scz1be3JlOi9yZ2JhP1woXHMqKFxkezEsM30pXHMqLFxzKihcZHsxLDN9KVxzKixccyooXGR7MSwzfSlccyooPzosXHMqKFxkKyg/OlwuXGQrKT8pXHMqKT9cKS8scGFyc2U6ZnVuY3Rpb24oZSl7cmV0dXJuW2VbMV0sZVsyXSxlWzNdLGVbNF1dfX0se3JlOi9yZ2JhP1woXHMqKFxkKyg/OlwuXGQrKT8pXCVccyosXHMqKFxkKyg/OlwuXGQrKT8pXCVccyosXHMqKFxkKyg/OlwuXGQrKT8pXCVccyooPzosXHMqKFxkKyg/OlwuXGQrKT8pXHMqKT9cKS8scGFyc2U6ZnVuY3Rpb24oZSl7cmV0dXJuW2VbMV0qMi41NSxlWzJdKjIuNTUsZVszXSoyLjU1LGVbNF1dfX0se3JlOi8jKFthLWYwLTldezJ9KShbYS1mMC05XXsyfSkoW2EtZjAtOV17Mn0pLyxwYXJzZTpmdW5jdGlvbihlKXtyZXR1cm5bcGFyc2VJbnQoZVsxXSwxNikscGFyc2VJbnQoZVsyXSwxNikscGFyc2VJbnQoZVszXSwxNildfX0se3JlOi8jKFthLWYwLTldKShbYS1mMC05XSkoW2EtZjAtOV0pLyxwYXJzZTpmdW5jdGlvbihlKXtyZXR1cm5bcGFyc2VJbnQoZVsxXStlWzFdLDE2KSxwYXJzZUludChlWzJdK2VbMl0sMTYpLHBhcnNlSW50KGVbM10rZVszXSwxNildfX0se3JlOi9oc2xhP1woXHMqKFxkKyg/OlwuXGQrKT8pXHMqLFxzKihcZCsoPzpcLlxkKyk/KVwlXHMqLFxzKihcZCsoPzpcLlxkKyk/KVwlXHMqKD86LFxzKihcZCsoPzpcLlxkKyk/KVxzKik/XCkvLHNwYWNlOiJoc2xhIixwYXJzZTpmdW5jdGlvbihlKXtyZXR1cm5bZVsxXSxlWzJdLzEwMCxlWzNdLzEwMCxlWzRdXX19XSxvPXQuQ29sb3I9ZnVuY3Rpb24oZSxuLHIsaSl7cmV0dXJuIG5ldyB0LkNvbG9yLmZuLnBhcnNlKGUsbixyLGkpfSx1PXtyZ2JhOntwcm9wczp7cmVkOntpZHg6MCx0eXBlOiJieXRlIn0sZ3JlZW46e2lkeDoxLHR5cGU6ImJ5dGUifSxibHVlOntpZHg6Mix0eXBlOiJieXRlIn19fSxoc2xhOntwcm9wczp7aHVlOntpZHg6MCx0eXBlOiJkZWdyZWVzIn0sc2F0dXJhdGlvbjp7aWR4OjEsdHlwZToicGVyY2VudCJ9LGxpZ2h0bmVzczp7aWR4OjIsdHlwZToicGVyY2VudCJ9fX19LGE9eyJieXRlIjp7Zmxvb3I6ITAsbWF4OjI1NX0scGVyY2VudDp7bWF4OjF9LGRlZ3JlZXM6e21vZDozNjAsZmxvb3I6ITB9fSxmPW8uc3VwcG9ydD17fSxsPXQoIjxwPiIpWzBdLGMsaD10LmVhY2g7bC5zdHlsZS5jc3NUZXh0PSJiYWNrZ3JvdW5kLWNvbG9yOnJnYmEoMSwxLDEsLjUpIixmLnJnYmE9bC5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IuaW5kZXhPZigicmdiYSIpPi0xLGgodSxmdW5jdGlvbihlLHQpe3QuY2FjaGU9Il8iK2UsdC5wcm9wcy5hbHBoYT17aWR4OjMsdHlwZToicGVyY2VudCIsZGVmOjF9fSksby5mbj10LmV4dGVuZChvLnByb3RvdHlwZSx7cGFyc2U6ZnVuY3Rpb24ocixpLHMsYSl7aWYocj09PW4pcmV0dXJuIHRoaXMuX3JnYmE9W251bGwsbnVsbCxudWxsLG51bGxdLHRoaXM7aWYoci5qcXVlcnl8fHIubm9kZVR5cGUpcj10KHIpLmNzcyhpKSxpPW47dmFyIGY9dGhpcyxsPXQudHlwZShyKSx2PXRoaXMuX3JnYmE9W10sbTtpIT09biYmKHI9W3IsaSxzLGFdLGw9ImFycmF5Iik7aWYobD09PSJzdHJpbmciKXJldHVybiB0aGlzLnBhcnNlKGQocil8fGMuX2RlZmF1bHQpO2lmKGw9PT0iYXJyYXkiKXJldHVybiBoKHUucmdiYS5wcm9wcyxmdW5jdGlvbihlLHQpe3ZbdC5pZHhdPXAoclt0LmlkeF0sdCl9KSx0aGlzO2lmKGw9PT0ib2JqZWN0IilyZXR1cm4gciBpbnN0YW5jZW9mIG8/aCh1LGZ1bmN0aW9uKGUsdCl7clt0LmNhY2hlXSYmKGZbdC5jYWNoZV09clt0LmNhY2hlXS5zbGljZSgpKX0pOmgodSxmdW5jdGlvbih0LG4pe3ZhciBpPW4uY2FjaGU7aChuLnByb3BzLGZ1bmN0aW9uKGUsdCl7aWYoIWZbaV0mJm4udG8pe2lmKGU9PT0iYWxwaGEifHxyW2VdPT1udWxsKXJldHVybjtmW2ldPW4udG8oZi5fcmdiYSl9ZltpXVt0LmlkeF09cChyW2VdLHQsITApfSksZltpXSYmZS5pbkFycmF5KG51bGwsZltpXS5zbGljZSgwLDMpKTwwJiYoZltpXVszXT0xLG4uZnJvbSYmKGYuX3JnYmE9bi5mcm9tKGZbaV0pKSl9KSx0aGlzfSxpczpmdW5jdGlvbihlKXt2YXIgdD1vKGUpLG49ITAscj10aGlzO3JldHVybiBoKHUsZnVuY3Rpb24oZSxpKXt2YXIgcyxvPXRbaS5jYWNoZV07cmV0dXJuIG8mJihzPXJbaS5jYWNoZV18fGkudG8mJmkudG8oci5fcmdiYSl8fFtdLGgoaS5wcm9wcyxmdW5jdGlvbihlLHQpe2lmKG9bdC5pZHhdIT1udWxsKXJldHVybiBuPW9bdC5pZHhdPT09c1t0LmlkeF0sbn0pKSxufSksbn0sX3NwYWNlOmZ1bmN0aW9uKCl7dmFyIGU9W10sdD10aGlzO3JldHVybiBoKHUsZnVuY3Rpb24obixyKXt0W3IuY2FjaGVdJiZlLnB1c2gobil9KSxlLnBvcCgpfSx0cmFuc2l0aW9uOmZ1bmN0aW9uKGUsdCl7dmFyIG49byhlKSxyPW4uX3NwYWNlKCksaT11W3JdLHM9dGhpcy5hbHBoYSgpPT09MD9vKCJ0cmFuc3BhcmVudCIpOnRoaXMsZj1zW2kuY2FjaGVdfHxpLnRvKHMuX3JnYmEpLGw9Zi5zbGljZSgpO3JldHVybiBuPW5baS5jYWNoZV0saChpLnByb3BzLGZ1bmN0aW9uKGUscil7dmFyIGk9ci5pZHgscz1mW2ldLG89bltpXSx1PWFbci50eXBlXXx8e307aWYobz09PW51bGwpcmV0dXJuO3M9PT1udWxsP2xbaV09bzoodS5tb2QmJihvLXM+dS5tb2QvMj9zKz11Lm1vZDpzLW8+dS5tb2QvMiYmKHMtPXUubW9kKSksbFtpXT1wKChvLXMpKnQrcyxyKSl9KSx0aGlzW3JdKGwpfSxibGVuZDpmdW5jdGlvbihlKXtpZih0aGlzLl9yZ2JhWzNdPT09MSlyZXR1cm4gdGhpczt2YXIgbj10aGlzLl9yZ2JhLnNsaWNlKCkscj1uLnBvcCgpLGk9byhlKS5fcmdiYTtyZXR1cm4gbyh0Lm1hcChuLGZ1bmN0aW9uKGUsdCl7cmV0dXJuKDEtcikqaVt0XStyKmV9KSl9LHRvUmdiYVN0cmluZzpmdW5jdGlvbigpe3ZhciBlPSJyZ2JhKCIsbj10Lm1hcCh0aGlzLl9yZ2JhLGZ1bmN0aW9uKGUsdCl7cmV0dXJuIGU9PW51bGw/dD4yPzE6MDplfSk7cmV0dXJuIG5bM109PT0xJiYobi5wb3AoKSxlPSJyZ2IoIiksZStuLmpvaW4oKSsiKSJ9LHRvSHNsYVN0cmluZzpmdW5jdGlvbigpe3ZhciBlPSJoc2xhKCIsbj10Lm1hcCh0aGlzLmhzbGEoKSxmdW5jdGlvbihlLHQpe3JldHVybiBlPT1udWxsJiYoZT10PjI/MTowKSx0JiZ0PDMmJihlPU1hdGgucm91bmQoZSoxMDApKyIlIiksZX0pO3JldHVybiBuWzNdPT09MSYmKG4ucG9wKCksZT0iaHNsKCIpLGUrbi5qb2luKCkrIikifSx0b0hleFN0cmluZzpmdW5jdGlvbihlKXt2YXIgbj10aGlzLl9yZ2JhLnNsaWNlKCkscj1uLnBvcCgpO3JldHVybiBlJiZuLnB1c2gofn4ocioyNTUpKSwiIyIrdC5tYXAobixmdW5jdGlvbihlLHQpe3JldHVybiBlPShlfHwwKS50b1N0cmluZygxNiksZS5sZW5ndGg9PT0xPyIwIitlOmV9KS5qb2luKCIiKX0sdG9TdHJpbmc6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5fcmdiYVszXT09PTA/InRyYW5zcGFyZW50Ijp0aGlzLnRvUmdiYVN0cmluZygpfX0pLG8uZm4ucGFyc2UucHJvdG90eXBlPW8uZm4sdS5oc2xhLnRvPWZ1bmN0aW9uKGUpe2lmKGVbMF09PW51bGx8fGVbMV09PW51bGx8fGVbMl09PW51bGwpcmV0dXJuW251bGwsbnVsbCxudWxsLGVbM11dO3ZhciB0PWVbMF0vMjU1LG49ZVsxXS8yNTUscj1lWzJdLzI1NSxpPWVbM10scz1NYXRoLm1heCh0LG4sciksbz1NYXRoLm1pbih0LG4sciksdT1zLW8sYT1zK28sZj1hKi41LGwsYztyZXR1cm4gbz09PXM/bD0wOnQ9PT1zP2w9NjAqKG4tcikvdSszNjA6bj09PXM/bD02MCooci10KS91KzEyMDpsPTYwKih0LW4pL3UrMjQwLGY9PT0wfHxmPT09MT9jPWY6Zjw9LjU/Yz11L2E6Yz11LygyLWEpLFtNYXRoLnJvdW5kKGwpJTM2MCxjLGYsaT09bnVsbD8xOmldfSx1LmhzbGEuZnJvbT1mdW5jdGlvbihlKXtpZihlWzBdPT1udWxsfHxlWzFdPT1udWxsfHxlWzJdPT1udWxsKXJldHVybltudWxsLG51bGwsbnVsbCxlWzNdXTt2YXIgdD1lWzBdLzM2MCxuPWVbMV0scj1lWzJdLGk9ZVszXSxzPXI8PS41P3IqKDErbik6cituLXIqbixvPTIqci1zLHUsYSxmO3JldHVybltNYXRoLnJvdW5kKHYobyxzLHQrMS8zKSoyNTUpLE1hdGgucm91bmQodihvLHMsdCkqMjU1KSxNYXRoLnJvdW5kKHYobyxzLHQtMS8zKSoyNTUpLGldfSxoKHUsZnVuY3Rpb24oZSxyKXt2YXIgcz1yLnByb3BzLHU9ci5jYWNoZSxhPXIudG8sZj1yLmZyb207by5mbltlXT1mdW5jdGlvbihlKXthJiYhdGhpc1t1XSYmKHRoaXNbdV09YSh0aGlzLl9yZ2JhKSk7aWYoZT09PW4pcmV0dXJuIHRoaXNbdV0uc2xpY2UoKTt2YXIgcixpPXQudHlwZShlKSxsPWk9PT0iYXJyYXkifHxpPT09Im9iamVjdCI/ZTphcmd1bWVudHMsYz10aGlzW3VdLnNsaWNlKCk7cmV0dXJuIGgocyxmdW5jdGlvbihlLHQpe3ZhciBuPWxbaT09PSJvYmplY3QiP2U6dC5pZHhdO249PW51bGwmJihuPWNbdC5pZHhdKSxjW3QuaWR4XT1wKG4sdCl9KSxmPyhyPW8oZihjKSksclt1XT1jLHIpOm8oYyl9LGgocyxmdW5jdGlvbihuLHIpe2lmKG8uZm5bbl0pcmV0dXJuO28uZm5bbl09ZnVuY3Rpb24ocyl7dmFyIG89dC50eXBlKHMpLHU9bj09PSJhbHBoYSI/dGhpcy5faHNsYT8iaHNsYSI6InJnYmEiOmUsYT10aGlzW3VdKCksZj1hW3IuaWR4XSxsO3JldHVybiBvPT09InVuZGVmaW5lZCI/Zjoobz09PSJmdW5jdGlvbiImJihzPXMuY2FsbCh0aGlzLGYpLG89dC50eXBlKHMpKSxzPT1udWxsJiZyLmVtcHR5P3RoaXM6KG89PT0ic3RyaW5nIiYmKGw9aS5leGVjKHMpLGwmJihzPWYrcGFyc2VGbG9hdChsWzJdKSoobFsxXT09PSIrIj8xOi0xKSkpLGFbci5pZHhdPXMsdGhpc1t1XShhKSkpfX0pfSksaChyLGZ1bmN0aW9uKGUsbil7dC5jc3NIb29rc1tuXT17c2V0OmZ1bmN0aW9uKGUscil7dmFyIGkscyx1PSIiO2lmKHQudHlwZShyKSE9PSJzdHJpbmcifHwoaT1kKHIpKSl7cj1vKGl8fHIpO2lmKCFmLnJnYmEmJnIuX3JnYmFbM10hPT0xKXtzPW49PT0iYmFja2dyb3VuZENvbG9yIj9lLnBhcmVudE5vZGU6ZTt3aGlsZSgodT09PSIifHx1PT09InRyYW5zcGFyZW50IikmJnMmJnMuc3R5bGUpdHJ5e3U9dC5jc3MocywiYmFja2dyb3VuZENvbG9yIikscz1zLnBhcmVudE5vZGV9Y2F0Y2goYSl7fXI9ci5ibGVuZCh1JiZ1IT09InRyYW5zcGFyZW50Ij91OiJfZGVmYXVsdCIpfXI9ci50b1JnYmFTdHJpbmcoKX10cnl7ZS5zdHlsZVtuXT1yfWNhdGNoKHIpe319fSx0LmZ4LnN0ZXBbbl09ZnVuY3Rpb24oZSl7ZS5jb2xvckluaXR8fChlLnN0YXJ0PW8oZS5lbGVtLG4pLGUuZW5kPW8oZS5lbmQpLGUuY29sb3JJbml0PSEwKSx0LmNzc0hvb2tzW25dLnNldChlLmVsZW0sZS5zdGFydC50cmFuc2l0aW9uKGUuZW5kLGUucG9zKSl9fSksdC5jc3NIb29rcy5ib3JkZXJDb2xvcj17ZXhwYW5kOmZ1bmN0aW9uKGUpe3ZhciB0PXt9O3JldHVybiBoKFsiVG9wIiwiUmlnaHQiLCJCb3R0b20iLCJMZWZ0Il0sZnVuY3Rpb24obixyKXt0WyJib3JkZXIiK3IrIkNvbG9yIl09ZX0pLHR9fSxjPXQuQ29sb3IubmFtZXM9e2FxdWE6IiMwMGZmZmYiLGJsYWNrOiIjMDAwMDAwIixibHVlOiIjMDAwMGZmIixmdWNoc2lhOiIjZmYwMGZmIixncmF5OiIjODA4MDgwIixncmVlbjoiIzAwODAwMCIsbGltZToiIzAwZmYwMCIsbWFyb29uOiIjODAwMDAwIixuYXZ5OiIjMDAwMDgwIixvbGl2ZToiIzgwODAwMCIscHVycGxlOiIjODAwMDgwIixyZWQ6IiNmZjAwMDAiLHNpbHZlcjoiI2MwYzBjMCIsdGVhbDoiIzAwODA4MCIsd2hpdGU6IiNmZmZmZmYiLHllbGxvdzoiI2ZmZmYwMCIsdHJhbnNwYXJlbnQ6W251bGwsbnVsbCxudWxsLDBdLF9kZWZhdWx0OiIjZmZmZmZmIn19KGpRdWVyeSksZnVuY3Rpb24oKXtmdW5jdGlvbiBpKCl7dmFyIHQ9dGhpcy5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3P3RoaXMub3duZXJEb2N1bWVudC5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlKHRoaXMsbnVsbCk6dGhpcy5jdXJyZW50U3R5bGUsbj17fSxyLGkscztpZih0JiZ0Lmxlbmd0aCYmdFswXSYmdFt0WzBdXSl7cz10Lmxlbmd0aDt3aGlsZShzLS0pcj10W3NdLHR5cGVvZiB0W3JdPT0ic3RyaW5nIiYmKG5bZS5jYW1lbENhc2UocildPXRbcl0pfWVsc2UgZm9yKHIgaW4gdCl0eXBlb2YgdFtyXT09InN0cmluZyImJihuW3JdPXRbcl0pO3JldHVybiBufWZ1bmN0aW9uIHModCxuKXt2YXIgaT17fSxzLG87Zm9yKHMgaW4gbilvPW5bc10sdFtzXSE9PW8mJiFyW3NdJiYoZS5meC5zdGVwW3NdfHwhaXNOYU4ocGFyc2VGbG9hdChvKSkpJiYoaVtzXT1vKTtyZXR1cm4gaX12YXIgbj1bImFkZCIsInJlbW92ZSIsInRvZ2dsZSJdLHI9e2JvcmRlcjoxLGJvcmRlckJvdHRvbToxLGJvcmRlckNvbG9yOjEsYm9yZGVyTGVmdDoxLGJvcmRlclJpZ2h0OjEsYm9yZGVyVG9wOjEsYm9yZGVyV2lkdGg6MSxtYXJnaW46MSxwYWRkaW5nOjF9O2UuZWFjaChbImJvcmRlckxlZnRTdHlsZSIsImJvcmRlclJpZ2h0U3R5bGUiLCJib3JkZXJCb3R0b21TdHlsZSIsImJvcmRlclRvcFN0eWxlIl0sZnVuY3Rpb24odCxuKXtlLmZ4LnN0ZXBbbl09ZnVuY3Rpb24oZSl7aWYoZS5lbmQhPT0ibm9uZSImJiFlLnNldEF0dHJ8fGUucG9zPT09MSYmIWUuc2V0QXR0cilqUXVlcnkuc3R5bGUoZS5lbGVtLG4sZS5lbmQpLGUuc2V0QXR0cj0hMH19KSxlLmVmZmVjdHMuYW5pbWF0ZUNsYXNzPWZ1bmN0aW9uKHQscixvLHUpe3ZhciBhPWUuc3BlZWQocixvLHUpO3JldHVybiB0aGlzLnF1ZXVlKGZ1bmN0aW9uKCl7dmFyIHI9ZSh0aGlzKSxvPXIuYXR0cigiY2xhc3MiKXx8IiIsdSxmPWEuY2hpbGRyZW4/ci5maW5kKCIqIikuYW5kU2VsZigpOnI7Zj1mLm1hcChmdW5jdGlvbigpe3ZhciB0PWUodGhpcyk7cmV0dXJue2VsOnQsc3RhcnQ6aS5jYWxsKHRoaXMpfX0pLHU9ZnVuY3Rpb24oKXtlLmVhY2gobixmdW5jdGlvbihlLG4pe3Rbbl0mJnJbbisiQ2xhc3MiXSh0W25dKX0pfSx1KCksZj1mLm1hcChmdW5jdGlvbigpe3JldHVybiB0aGlzLmVuZD1pLmNhbGwodGhpcy5lbFswXSksdGhpcy5kaWZmPXModGhpcy5zdGFydCx0aGlzLmVuZCksdGhpc30pLHIuYXR0cigiY2xhc3MiLG8pLGY9Zi5tYXAoZnVuY3Rpb24oKXt2YXIgdD10aGlzLG49ZS5EZWZlcnJlZCgpLHI9alF1ZXJ5LmV4dGVuZCh7fSxhLHtxdWV1ZTohMSxjb21wbGV0ZTpmdW5jdGlvbigpe24ucmVzb2x2ZSh0KX19KTtyZXR1cm4gdGhpcy5lbC5hbmltYXRlKHRoaXMuZGlmZixyKSxuLnByb21pc2UoKX0pLGUud2hlbi5hcHBseShlLGYuZ2V0KCkpLmRvbmUoZnVuY3Rpb24oKXt1KCksZS5lYWNoKGFyZ3VtZW50cyxmdW5jdGlvbigpe3ZhciB0PXRoaXMuZWw7ZS5lYWNoKHRoaXMuZGlmZixmdW5jdGlvbihlKXt0LmNzcyhlLCIiKX0pfSksYS5jb21wbGV0ZS5jYWxsKHJbMF0pfSl9KX0sZS5mbi5leHRlbmQoe19hZGRDbGFzczplLmZuLmFkZENsYXNzLGFkZENsYXNzOmZ1bmN0aW9uKHQsbixyLGkpe3JldHVybiBuP2UuZWZmZWN0cy5hbmltYXRlQ2xhc3MuY2FsbCh0aGlzLHthZGQ6dH0sbixyLGkpOnRoaXMuX2FkZENsYXNzKHQpfSxfcmVtb3ZlQ2xhc3M6ZS5mbi5yZW1vdmVDbGFzcyxyZW1vdmVDbGFzczpmdW5jdGlvbih0LG4scixpKXtyZXR1cm4gbj9lLmVmZmVjdHMuYW5pbWF0ZUNsYXNzLmNhbGwodGhpcyx7cmVtb3ZlOnR9LG4scixpKTp0aGlzLl9yZW1vdmVDbGFzcyh0KX0sX3RvZ2dsZUNsYXNzOmUuZm4udG9nZ2xlQ2xhc3MsdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24obixyLGkscyxvKXtyZXR1cm4gdHlwZW9mIHI9PSJib29sZWFuInx8cj09PXQ/aT9lLmVmZmVjdHMuYW5pbWF0ZUNsYXNzLmNhbGwodGhpcyxyP3thZGQ6bn06e3JlbW92ZTpufSxpLHMsbyk6dGhpcy5fdG9nZ2xlQ2xhc3MobixyKTplLmVmZmVjdHMuYW5pbWF0ZUNsYXNzLmNhbGwodGhpcyx7dG9nZ2xlOm59LHIsaSxzKX0sc3dpdGNoQ2xhc3M6ZnVuY3Rpb24odCxuLHIsaSxzKXtyZXR1cm4gZS5lZmZlY3RzLmFuaW1hdGVDbGFzcy5jYWxsKHRoaXMse2FkZDpuLHJlbW92ZTp0fSxyLGkscyl9fSl9KCksZnVuY3Rpb24oKXtmdW5jdGlvbiBpKG4scixpLHMpe2UuaXNQbGFpbk9iamVjdChuKSYmKHI9bixuPW4uZWZmZWN0KSxuPXtlZmZlY3Q6bn0scj09PXQmJihyPXt9KSxlLmlzRnVuY3Rpb24ocikmJihzPXIsaT1udWxsLHI9e30pO2lmKHR5cGVvZiByPT0ibnVtYmVyInx8ZS5meC5zcGVlZHNbcl0pcz1pLGk9cixyPXt9O3JldHVybiBlLmlzRnVuY3Rpb24oaSkmJihzPWksaT1udWxsKSxyJiZlLmV4dGVuZChuLHIpLGk9aXx8ci5kdXJhdGlvbixuLmR1cmF0aW9uPWUuZngub2ZmPzA6dHlwZW9mIGk9PSJudW1iZXIiP2k6aSBpbiBlLmZ4LnNwZWVkcz9lLmZ4LnNwZWVkc1tpXTplLmZ4LnNwZWVkcy5fZGVmYXVsdCxuLmNvbXBsZXRlPXN8fHIuY29tcGxldGUsbn1mdW5jdGlvbiBzKHQpe3JldHVybiF0fHx0eXBlb2YgdD09Im51bWJlciJ8fGUuZnguc3BlZWRzW3RdPyEwOnR5cGVvZiB0PT0ic3RyaW5nIiYmIWUuZWZmZWN0cy5lZmZlY3RbdF0/biYmZS5lZmZlY3RzW3RdPyExOiEwOiExfWUuZXh0ZW5kKGUuZWZmZWN0cyx7dmVyc2lvbjoiMS45LjAiLHNhdmU6ZnVuY3Rpb24oZSx0KXtmb3IodmFyIG49MDtuPHQubGVuZ3RoO24rKyl0W25dIT09bnVsbCYmZS5kYXRhKHIrdFtuXSxlWzBdLnN0eWxlW3Rbbl1dKX0scmVzdG9yZTpmdW5jdGlvbihlLG4pe3ZhciBpLHM7Zm9yKHM9MDtzPG4ubGVuZ3RoO3MrKyluW3NdIT09bnVsbCYmKGk9ZS5kYXRhKHIrbltzXSksaT09PXQmJihpPSIiKSxlLmNzcyhuW3NdLGkpKX0sc2V0TW9kZTpmdW5jdGlvbihlLHQpe3JldHVybiB0PT09InRvZ2dsZSImJih0PWUuaXMoIjpoaWRkZW4iKT8ic2hvdyI6ImhpZGUiKSx0fSxnZXRCYXNlbGluZTpmdW5jdGlvbihlLHQpe3ZhciBuLHI7c3dpdGNoKGVbMF0pe2Nhc2UidG9wIjpuPTA7YnJlYWs7Y2FzZSJtaWRkbGUiOm49LjU7YnJlYWs7Y2FzZSJib3R0b20iOm49MTticmVhaztkZWZhdWx0Om49ZVswXS90LmhlaWdodH1zd2l0Y2goZVsxXSl7Y2FzZSJsZWZ0IjpyPTA7YnJlYWs7Y2FzZSJjZW50ZXIiOnI9LjU7YnJlYWs7Y2FzZSJyaWdodCI6cj0xO2JyZWFrO2RlZmF1bHQ6cj1lWzFdL3Qud2lkdGh9cmV0dXJue3g6cix5Om59fSxjcmVhdGVXcmFwcGVyOmZ1bmN0aW9uKHQpe2lmKHQucGFyZW50KCkuaXMoIi51aS1lZmZlY3RzLXdyYXBwZXIiKSlyZXR1cm4gdC5wYXJlbnQoKTt2YXIgbj17d2lkdGg6dC5vdXRlcldpZHRoKCEwKSxoZWlnaHQ6dC5vdXRlckhlaWdodCghMCksImZsb2F0Ijp0LmNzcygiZmxvYXQiKX0scj1lKCI8ZGl2PjwvZGl2PiIpLmFkZENsYXNzKCJ1aS1lZmZlY3RzLXdyYXBwZXIiKS5jc3Moe2ZvbnRTaXplOiIxMDAlIixiYWNrZ3JvdW5kOiJ0cmFuc3BhcmVudCIsYm9yZGVyOiJub25lIixtYXJnaW46MCxwYWRkaW5nOjB9KSxpPXt3aWR0aDp0LndpZHRoKCksaGVpZ2h0OnQuaGVpZ2h0KCl9LHM9ZG9jdW1lbnQuYWN0aXZlRWxlbWVudDt0cnl7cy5pZH1jYXRjaChvKXtzPWRvY3VtZW50LmJvZHl9cmV0dXJuIHQud3JhcChyKSwodFswXT09PXN8fGUuY29udGFpbnModFswXSxzKSkmJmUocykuZm9jdXMoKSxyPXQucGFyZW50KCksdC5jc3MoInBvc2l0aW9uIik9PT0ic3RhdGljIj8oci5jc3Moe3Bvc2l0aW9uOiJyZWxhdGl2ZSJ9KSx0LmNzcyh7cG9zaXRpb246InJlbGF0aXZlIn0pKTooZS5leHRlbmQobix7cG9zaXRpb246dC5jc3MoInBvc2l0aW9uIiksekluZGV4OnQuY3NzKCJ6LWluZGV4Iil9KSxlLmVhY2goWyJ0b3AiLCJsZWZ0IiwiYm90dG9tIiwicmlnaHQiXSxmdW5jdGlvbihlLHIpe25bcl09dC5jc3MociksaXNOYU4ocGFyc2VJbnQobltyXSwxMCkpJiYobltyXT0iYXV0byIpfSksdC5jc3Moe3Bvc2l0aW9uOiJyZWxhdGl2ZSIsdG9wOjAsbGVmdDowLHJpZ2h0OiJhdXRvIixib3R0b206ImF1dG8ifSkpLHQuY3NzKGkpLHIuY3NzKG4pLnNob3coKX0scmVtb3ZlV3JhcHBlcjpmdW5jdGlvbih0KXt2YXIgbj1kb2N1bWVudC5hY3RpdmVFbGVtZW50O3JldHVybiB0LnBhcmVudCgpLmlzKCIudWktZWZmZWN0cy13cmFwcGVyIikmJih0LnBhcmVudCgpLnJlcGxhY2VXaXRoKHQpLCh0WzBdPT09bnx8ZS5jb250YWlucyh0WzBdLG4pKSYmZShuKS5mb2N1cygpKSx0fSxzZXRUcmFuc2l0aW9uOmZ1bmN0aW9uKHQsbixyLGkpe3JldHVybiBpPWl8fHt9LGUuZWFjaChuLGZ1bmN0aW9uKGUsbil7dmFyIHM9dC5jc3NVbml0KG4pO3NbMF0+MCYmKGlbbl09c1swXSpyK3NbMV0pfSksaX19KSxlLmZuLmV4dGVuZCh7ZWZmZWN0OmZ1bmN0aW9uKHQscixzLG8pe2Z1bmN0aW9uIGgodCl7ZnVuY3Rpb24gcygpe2UuaXNGdW5jdGlvbihyKSYmci5jYWxsKG5bMF0pLGUuaXNGdW5jdGlvbih0KSYmdCgpfXZhciBuPWUodGhpcykscj11LmNvbXBsZXRlLGk9dS5tb2RlOyhuLmlzKCI6aGlkZGVuIik/aT09PSJoaWRlIjppPT09InNob3ciKT9zKCk6bC5jYWxsKG5bMF0sdSxzKX12YXIgdT1pLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxhPXUubW9kZSxmPXUucXVldWUsbD1lLmVmZmVjdHMuZWZmZWN0W3UuZWZmZWN0XSxjPSFsJiZuJiZlLmVmZmVjdHNbdS5lZmZlY3RdO3JldHVybiBlLmZ4Lm9mZnx8IWwmJiFjP2E/dGhpc1thXSh1LmR1cmF0aW9uLHUuY29tcGxldGUpOnRoaXMuZWFjaChmdW5jdGlvbigpe3UuY29tcGxldGUmJnUuY29tcGxldGUuY2FsbCh0aGlzKX0pOmw/Zj09PSExP3RoaXMuZWFjaChoKTp0aGlzLnF1ZXVlKGZ8fCJmeCIsaCk6Yy5jYWxsKHRoaXMse29wdGlvbnM6dSxkdXJhdGlvbjp1LmR1cmF0aW9uLGNhbGxiYWNrOnUuY29tcGxldGUsbW9kZTp1Lm1vZGV9KX0sX3Nob3c6ZS5mbi5zaG93LHNob3c6ZnVuY3Rpb24oZSl7aWYocyhlKSlyZXR1cm4gdGhpcy5fc2hvdy5hcHBseSh0aGlzLGFyZ3VtZW50cyk7dmFyIHQ9aS5hcHBseSh0aGlzLGFyZ3VtZW50cyk7cmV0dXJuIHQubW9kZT0ic2hvdyIsdGhpcy5lZmZlY3QuY2FsbCh0aGlzLHQpfSxfaGlkZTplLmZuLmhpZGUsaGlkZTpmdW5jdGlvbihlKXtpZihzKGUpKXJldHVybiB0aGlzLl9oaWRlLmFwcGx5KHRoaXMsYXJndW1lbnRzKTt2YXIgdD1pLmFwcGx5KHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gdC5tb2RlPSJoaWRlIix0aGlzLmVmZmVjdC5jYWxsKHRoaXMsdCl9LF9fdG9nZ2xlOmUuZm4udG9nZ2xlLHRvZ2dsZTpmdW5jdGlvbih0KXtpZihzKHQpfHx0eXBlb2YgdD09ImJvb2xlYW4ifHxlLmlzRnVuY3Rpb24odCkpcmV0dXJuIHRoaXMuX190b2dnbGUuYXBwbHkodGhpcyxhcmd1bWVudHMpO3ZhciBuPWkuYXBwbHkodGhpcyxhcmd1bWVudHMpO3JldHVybiBuLm1vZGU9InRvZ2dsZSIsdGhpcy5lZmZlY3QuY2FsbCh0aGlzLG4pfSxjc3NVbml0OmZ1bmN0aW9uKHQpe3ZhciBuPXRoaXMuY3NzKHQpLHI9W107cmV0dXJuIGUuZWFjaChbImVtIiwicHgiLCIlIiwicHQiXSxmdW5jdGlvbihlLHQpe24uaW5kZXhPZih0KT4wJiYocj1bcGFyc2VGbG9hdChuKSx0XSl9KSxyfX0pfSgpLGZ1bmN0aW9uKCl7dmFyIHQ9e307ZS5lYWNoKFsiUXVhZCIsIkN1YmljIiwiUXVhcnQiLCJRdWludCIsIkV4cG8iXSxmdW5jdGlvbihlLG4pe3Rbbl09ZnVuY3Rpb24odCl7cmV0dXJuIE1hdGgucG93KHQsZSsyKX19KSxlLmV4dGVuZCh0LHtTaW5lOmZ1bmN0aW9uKGUpe3JldHVybiAxLU1hdGguY29zKGUqTWF0aC5QSS8yKX0sQ2lyYzpmdW5jdGlvbihlKXtyZXR1cm4gMS1NYXRoLnNxcnQoMS1lKmUpfSxFbGFzdGljOmZ1bmN0aW9uKGUpe3JldHVybiBlPT09MHx8ZT09PTE/ZTotTWF0aC5wb3coMiw4KihlLTEpKSpNYXRoLnNpbigoKGUtMSkqODAtNy41KSpNYXRoLlBJLzE1KX0sQmFjazpmdW5jdGlvbihlKXtyZXR1cm4gZSplKigzKmUtMil9LEJvdW5jZTpmdW5jdGlvbihlKXt2YXIgdCxuPTQ7d2hpbGUoZTwoKHQ9TWF0aC5wb3coMiwtLW4pKS0xKS8xMSk7cmV0dXJuIDEvTWF0aC5wb3coNCwzLW4pLTcuNTYyNSpNYXRoLnBvdygodCozLTIpLzIyLWUsMil9fSksZS5lYWNoKHQsZnVuY3Rpb24odCxuKXtlLmVhc2luZ1siZWFzZUluIit0XT1uLGUuZWFzaW5nWyJlYXNlT3V0Iit0XT1mdW5jdGlvbihlKXtyZXR1cm4gMS1uKDEtZSl9LGUuZWFzaW5nWyJlYXNlSW5PdXQiK3RdPWZ1bmN0aW9uKGUpe3JldHVybiBlPC41P24oZSoyKS8yOjEtbihlKi0yKzIpLzJ9fSl9KCl9KGpRdWVyeSk7KGZ1bmN0aW9uKGUsdCl7dmFyIG49L3VwfGRvd258dmVydGljYWwvLHI9L3VwfGxlZnR8dmVydGljYWx8aG9yaXpvbnRhbC87ZS5lZmZlY3RzLmVmZmVjdC5ibGluZD1mdW5jdGlvbih0LGkpe3ZhciBzPWUodGhpcyksbz1bInBvc2l0aW9uIiwidG9wIiwiYm90dG9tIiwibGVmdCIsInJpZ2h0IiwiaGVpZ2h0Iiwid2lkdGgiXSx1PWUuZWZmZWN0cy5zZXRNb2RlKHMsdC5tb2RlfHwiaGlkZSIpLGE9dC5kaXJlY3Rpb258fCJ1cCIsZj1uLnRlc3QoYSksbD1mPyJoZWlnaHQiOiJ3aWR0aCIsYz1mPyJ0b3AiOiJsZWZ0IixoPXIudGVzdChhKSxwPXt9LGQ9dT09PSJzaG93Iix2LG0sZztzLnBhcmVudCgpLmlzKCIudWktZWZmZWN0cy13cmFwcGVyIik/ZS5lZmZlY3RzLnNhdmUocy5wYXJlbnQoKSxvKTplLmVmZmVjdHMuc2F2ZShzLG8pLHMuc2hvdygpLHY9ZS5lZmZlY3RzLmNyZWF0ZVdyYXBwZXIocykuY3NzKHtvdmVyZmxvdzoiaGlkZGVuIn0pLG09dltsXSgpLGc9cGFyc2VGbG9hdCh2LmNzcyhjKSl8fDAscFtsXT1kP206MCxofHwocy5jc3MoZj8iYm90dG9tIjoicmlnaHQiLDApLmNzcyhmPyJ0b3AiOiJsZWZ0IiwiYXV0byIpLmNzcyh7cG9zaXRpb246ImFic29sdXRlIn0pLHBbY109ZD9nOm0rZyksZCYmKHYuY3NzKGwsMCksaHx8di5jc3MoYyxnK20pKSx2LmFuaW1hdGUocCx7ZHVyYXRpb246dC5kdXJhdGlvbixlYXNpbmc6dC5lYXNpbmcscXVldWU6ITEsY29tcGxldGU6ZnVuY3Rpb24oKXt1PT09ImhpZGUiJiZzLmhpZGUoKSxlLmVmZmVjdHMucmVzdG9yZShzLG8pLGUuZWZmZWN0cy5yZW1vdmVXcmFwcGVyKHMpLGkoKX19KX19KShqUXVlcnkpOyhmdW5jdGlvbihlLHQpe2UuZWZmZWN0cy5lZmZlY3QuYm91bmNlPWZ1bmN0aW9uKHQsbil7dmFyIHI9ZSh0aGlzKSxpPVsicG9zaXRpb24iLCJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiLCJoZWlnaHQiLCJ3aWR0aCJdLHM9ZS5lZmZlY3RzLnNldE1vZGUocix0Lm1vZGV8fCJlZmZlY3QiKSxvPXM9PT0iaGlkZSIsdT1zPT09InNob3ciLGE9dC5kaXJlY3Rpb258fCJ1cCIsZj10LmRpc3RhbmNlLGw9dC50aW1lc3x8NSxjPWwqMisodXx8bz8xOjApLGg9dC5kdXJhdGlvbi9jLHA9dC5lYXNpbmcsZD1hPT09InVwInx8YT09PSJkb3duIj8idG9wIjoibGVmdCIsdj1hPT09InVwInx8YT09PSJsZWZ0IixtLGcseSxiPXIucXVldWUoKSx3PWIubGVuZ3RoOyh1fHxvKSYmaS5wdXNoKCJvcGFjaXR5IiksZS5lZmZlY3RzLnNhdmUocixpKSxyLnNob3coKSxlLmVmZmVjdHMuY3JlYXRlV3JhcHBlcihyKSxmfHwoZj1yW2Q9PT0idG9wIj8ib3V0ZXJIZWlnaHQiOiJvdXRlcldpZHRoIl0oKS8zKSx1JiYoeT17b3BhY2l0eToxfSx5W2RdPTAsci5jc3MoIm9wYWNpdHkiLDApLmNzcyhkLHY/LWYqMjpmKjIpLmFuaW1hdGUoeSxoLHApKSxvJiYoZi89TWF0aC5wb3coMixsLTEpKSx5PXt9LHlbZF09MDtmb3IobT0wO208bDttKyspZz17fSxnW2RdPSh2PyItPSI6Iis9IikrZixyLmFuaW1hdGUoZyxoLHApLmFuaW1hdGUoeSxoLHApLGY9bz9mKjI6Zi8yO28mJihnPXtvcGFjaXR5OjB9LGdbZF09KHY/Ii09IjoiKz0iKStmLHIuYW5pbWF0ZShnLGgscCkpLHIucXVldWUoZnVuY3Rpb24oKXtvJiZyLmhpZGUoKSxlLmVmZmVjdHMucmVzdG9yZShyLGkpLGUuZWZmZWN0cy5yZW1vdmVXcmFwcGVyKHIpLG4oKX0pLHc+MSYmYi5zcGxpY2UuYXBwbHkoYixbMSwwXS5jb25jYXQoYi5zcGxpY2UodyxjKzEpKSksci5kZXF1ZXVlKCl9fSkoalF1ZXJ5KTsoZnVuY3Rpb24oZSx0KXtlLmVmZmVjdHMuZWZmZWN0LmNsaXA9ZnVuY3Rpb24odCxuKXt2YXIgcj1lKHRoaXMpLGk9WyJwb3NpdGlvbiIsInRvcCIsImJvdHRvbSIsImxlZnQiLCJyaWdodCIsImhlaWdodCIsIndpZHRoIl0scz1lLmVmZmVjdHMuc2V0TW9kZShyLHQubW9kZXx8ImhpZGUiKSxvPXM9PT0ic2hvdyIsdT10LmRpcmVjdGlvbnx8InZlcnRpY2FsIixhPXU9PT0idmVydGljYWwiLGY9YT8iaGVpZ2h0Ijoid2lkdGgiLGw9YT8idG9wIjoibGVmdCIsYz17fSxoLHAsZDtlLmVmZmVjdHMuc2F2ZShyLGkpLHIuc2hvdygpLGg9ZS5lZmZlY3RzLmNyZWF0ZVdyYXBwZXIocikuY3NzKHtvdmVyZmxvdzoiaGlkZGVuIn0pLHA9clswXS50YWdOYW1lPT09IklNRyI/aDpyLGQ9cFtmXSgpLG8mJihwLmNzcyhmLDApLHAuY3NzKGwsZC8yKSksY1tmXT1vP2Q6MCxjW2xdPW8/MDpkLzIscC5hbmltYXRlKGMse3F1ZXVlOiExLGR1cmF0aW9uOnQuZHVyYXRpb24sZWFzaW5nOnQuZWFzaW5nLGNvbXBsZXRlOmZ1bmN0aW9uKCl7b3x8ci5oaWRlKCksZS5lZmZlY3RzLnJlc3RvcmUocixpKSxlLmVmZmVjdHMucmVtb3ZlV3JhcHBlcihyKSxuKCl9fSl9fSkoalF1ZXJ5KTsoZnVuY3Rpb24oZSx0KXtlLmVmZmVjdHMuZWZmZWN0LmRyb3A9ZnVuY3Rpb24odCxuKXt2YXIgcj1lKHRoaXMpLGk9WyJwb3NpdGlvbiIsInRvcCIsImJvdHRvbSIsImxlZnQiLCJyaWdodCIsIm9wYWNpdHkiLCJoZWlnaHQiLCJ3aWR0aCJdLHM9ZS5lZmZlY3RzLnNldE1vZGUocix0Lm1vZGV8fCJoaWRlIiksbz1zPT09InNob3ciLHU9dC5kaXJlY3Rpb258fCJsZWZ0IixhPXU9PT0idXAifHx1PT09ImRvd24iPyJ0b3AiOiJsZWZ0IixmPXU9PT0idXAifHx1PT09ImxlZnQiPyJwb3MiOiJuZWciLGw9e29wYWNpdHk6bz8xOjB9LGM7ZS5lZmZlY3RzLnNhdmUocixpKSxyLnNob3coKSxlLmVmZmVjdHMuY3JlYXRlV3JhcHBlcihyKSxjPXQuZGlzdGFuY2V8fHJbYT09PSJ0b3AiPyJvdXRlckhlaWdodCI6Im91dGVyV2lkdGgiXSghMCkvMixvJiZyLmNzcygib3BhY2l0eSIsMCkuY3NzKGEsZj09PSJwb3MiPy1jOmMpLGxbYV09KG8/Zj09PSJwb3MiPyIrPSI6Ii09IjpmPT09InBvcyI/Ii09IjoiKz0iKStjLHIuYW5pbWF0ZShsLHtxdWV1ZTohMSxkdXJhdGlvbjp0LmR1cmF0aW9uLGVhc2luZzp0LmVhc2luZyxjb21wbGV0ZTpmdW5jdGlvbigpe3M9PT0iaGlkZSImJnIuaGlkZSgpLGUuZWZmZWN0cy5yZXN0b3JlKHIsaSksZS5lZmZlY3RzLnJlbW92ZVdyYXBwZXIociksbigpfX0pfX0pKGpRdWVyeSk7KGZ1bmN0aW9uKGUsdCl7ZS5lZmZlY3RzLmVmZmVjdC5leHBsb2RlPWZ1bmN0aW9uKHQsbil7ZnVuY3Rpb24geSgpe2MucHVzaCh0aGlzKSxjLmxlbmd0aD09PXIqaSYmYigpfWZ1bmN0aW9uIGIoKXtzLmNzcyh7dmlzaWJpbGl0eToidmlzaWJsZSJ9KSxlKGMpLnJlbW92ZSgpLHV8fHMuaGlkZSgpLG4oKX12YXIgcj10LnBpZWNlcz9NYXRoLnJvdW5kKE1hdGguc3FydCh0LnBpZWNlcykpOjMsaT1yLHM9ZSh0aGlzKSxvPWUuZWZmZWN0cy5zZXRNb2RlKHMsdC5tb2RlfHwiaGlkZSIpLHU9bz09PSJzaG93IixhPXMuc2hvdygpLmNzcygidmlzaWJpbGl0eSIsImhpZGRlbiIpLm9mZnNldCgpLGY9TWF0aC5jZWlsKHMub3V0ZXJXaWR0aCgpL2kpLGw9TWF0aC5jZWlsKHMub3V0ZXJIZWlnaHQoKS9yKSxjPVtdLGgscCxkLHYsbSxnO2ZvcihoPTA7aDxyO2grKyl7dj1hLnRvcCtoKmwsZz1oLShyLTEpLzI7Zm9yKHA9MDtwPGk7cCsrKWQ9YS5sZWZ0K3AqZixtPXAtKGktMSkvMixzLmNsb25lKCkuYXBwZW5kVG8oImJvZHkiKS53cmFwKCI8ZGl2PjwvZGl2PiIpLmNzcyh7cG9zaXRpb246ImFic29sdXRlIix2aXNpYmlsaXR5OiJ2aXNpYmxlIixsZWZ0Oi1wKmYsdG9wOi1oKmx9KS5wYXJlbnQoKS5hZGRDbGFzcygidWktZWZmZWN0cy1leHBsb2RlIikuY3NzKHtwb3NpdGlvbjoiYWJzb2x1dGUiLG92ZXJmbG93OiJoaWRkZW4iLHdpZHRoOmYsaGVpZ2h0OmwsbGVmdDpkKyh1P20qZjowKSx0b3A6disodT9nKmw6MCksb3BhY2l0eTp1PzA6MX0pLmFuaW1hdGUoe2xlZnQ6ZCsodT8wOm0qZiksdG9wOnYrKHU/MDpnKmwpLG9wYWNpdHk6dT8xOjB9LHQuZHVyYXRpb258fDUwMCx0LmVhc2luZyx5KX19fSkoalF1ZXJ5KTsoZnVuY3Rpb24oZSx0KXtlLmVmZmVjdHMuZWZmZWN0LmZhZGU9ZnVuY3Rpb24odCxuKXt2YXIgcj1lKHRoaXMpLGk9ZS5lZmZlY3RzLnNldE1vZGUocix0Lm1vZGV8fCJ0b2dnbGUiKTtyLmFuaW1hdGUoe29wYWNpdHk6aX0se3F1ZXVlOiExLGR1cmF0aW9uOnQuZHVyYXRpb24sZWFzaW5nOnQuZWFzaW5nLGNvbXBsZXRlOm59KX19KShqUXVlcnkpOyhmdW5jdGlvbihlLHQpe2UuZWZmZWN0cy5lZmZlY3QuZm9sZD1mdW5jdGlvbih0LG4pe3ZhciByPWUodGhpcyksaT1bInBvc2l0aW9uIiwidG9wIiwiYm90dG9tIiwibGVmdCIsInJpZ2h0IiwiaGVpZ2h0Iiwid2lkdGgiXSxzPWUuZWZmZWN0cy5zZXRNb2RlKHIsdC5tb2RlfHwiaGlkZSIpLG89cz09PSJzaG93Iix1PXM9PT0iaGlkZSIsYT10LnNpemV8fDE1LGY9LyhbMC05XSspJS8uZXhlYyhhKSxsPSEhdC5ob3JpekZpcnN0LGM9byE9PWwsaD1jP1sid2lkdGgiLCJoZWlnaHQiXTpbImhlaWdodCIsIndpZHRoIl0scD10LmR1cmF0aW9uLzIsZCx2LG09e30sZz17fTtlLmVmZmVjdHMuc2F2ZShyLGkpLHIuc2hvdygpLGQ9ZS5lZmZlY3RzLmNyZWF0ZVdyYXBwZXIocikuY3NzKHtvdmVyZmxvdzoiaGlkZGVuIn0pLHY9Yz9bZC53aWR0aCgpLGQuaGVpZ2h0KCldOltkLmhlaWdodCgpLGQud2lkdGgoKV0sZiYmKGE9cGFyc2VJbnQoZlsxXSwxMCkvMTAwKnZbdT8wOjFdKSxvJiZkLmNzcyhsP3toZWlnaHQ6MCx3aWR0aDphfTp7aGVpZ2h0OmEsd2lkdGg6MH0pLG1baFswXV09bz92WzBdOmEsZ1toWzFdXT1vP3ZbMV06MCxkLmFuaW1hdGUobSxwLHQuZWFzaW5nKS5hbmltYXRlKGcscCx0LmVhc2luZyxmdW5jdGlvbigpe3UmJnIuaGlkZSgpLGUuZWZmZWN0cy5yZXN0b3JlKHIsaSksZS5lZmZlY3RzLnJlbW92ZVdyYXBwZXIociksbigpfSl9fSkoalF1ZXJ5KTsoZnVuY3Rpb24oZSx0KXtlLmVmZmVjdHMuZWZmZWN0LmhpZ2hsaWdodD1mdW5jdGlvbih0LG4pe3ZhciByPWUodGhpcyksaT1bImJhY2tncm91bmRJbWFnZSIsImJhY2tncm91bmRDb2xvciIsIm9wYWNpdHkiXSxzPWUuZWZmZWN0cy5zZXRNb2RlKHIsdC5tb2RlfHwic2hvdyIpLG89e2JhY2tncm91bmRDb2xvcjpyLmNzcygiYmFja2dyb3VuZENvbG9yIil9O3M9PT0iaGlkZSImJihvLm9wYWNpdHk9MCksZS5lZmZlY3RzLnNhdmUocixpKSxyLnNob3coKS5jc3Moe2JhY2tncm91bmRJbWFnZToibm9uZSIsYmFja2dyb3VuZENvbG9yOnQuY29sb3J8fCIjZmZmZjk5In0pLmFuaW1hdGUobyx7cXVldWU6ITEsZHVyYXRpb246dC5kdXJhdGlvbixlYXNpbmc6dC5lYXNpbmcsY29tcGxldGU6ZnVuY3Rpb24oKXtzPT09ImhpZGUiJiZyLmhpZGUoKSxlLmVmZmVjdHMucmVzdG9yZShyLGkpLG4oKX19KX19KShqUXVlcnkpOyhmdW5jdGlvbihlLHQpe2UuZWZmZWN0cy5lZmZlY3QucHVsc2F0ZT1mdW5jdGlvbih0LG4pe3ZhciByPWUodGhpcyksaT1lLmVmZmVjdHMuc2V0TW9kZShyLHQubW9kZXx8InNob3ciKSxzPWk9PT0ic2hvdyIsbz1pPT09ImhpZGUiLHU9c3x8aT09PSJoaWRlIixhPSh0LnRpbWVzfHw1KSoyKyh1PzE6MCksZj10LmR1cmF0aW9uL2EsbD0wLGM9ci5xdWV1ZSgpLGg9Yy5sZW5ndGgscDtpZihzfHwhci5pcygiOnZpc2libGUiKSlyLmNzcygib3BhY2l0eSIsMCkuc2hvdygpLGw9MTtmb3IocD0xO3A8YTtwKyspci5hbmltYXRlKHtvcGFjaXR5Omx9LGYsdC5lYXNpbmcpLGw9MS1sO3IuYW5pbWF0ZSh7b3BhY2l0eTpsfSxmLHQuZWFzaW5nKSxyLnF1ZXVlKGZ1bmN0aW9uKCl7byYmci5oaWRlKCksbigpfSksaD4xJiZjLnNwbGljZS5hcHBseShjLFsxLDBdLmNvbmNhdChjLnNwbGljZShoLGErMSkpKSxyLmRlcXVldWUoKX19KShqUXVlcnkpOyhmdW5jdGlvbihlLHQpe2UuZWZmZWN0cy5lZmZlY3QucHVmZj1mdW5jdGlvbih0LG4pe3ZhciByPWUodGhpcyksaT1lLmVmZmVjdHMuc2V0TW9kZShyLHQubW9kZXx8ImhpZGUiKSxzPWk9PT0iaGlkZSIsbz1wYXJzZUludCh0LnBlcmNlbnQsMTApfHwxNTAsdT1vLzEwMCxhPXtoZWlnaHQ6ci5oZWlnaHQoKSx3aWR0aDpyLndpZHRoKCl9O2UuZXh0ZW5kKHQse2VmZmVjdDoic2NhbGUiLHF1ZXVlOiExLGZhZGU6ITAsbW9kZTppLGNvbXBsZXRlOm4scGVyY2VudDpzP286MTAwLGZyb206cz9hOntoZWlnaHQ6YS5oZWlnaHQqdSx3aWR0aDphLndpZHRoKnV9fSksci5lZmZlY3QodCl9LGUuZWZmZWN0cy5lZmZlY3Quc2NhbGU9ZnVuY3Rpb24odCxuKXt2YXIgcj1lKHRoaXMpLGk9ZS5leHRlbmQoITAse30sdCkscz1lLmVmZmVjdHMuc2V0TW9kZShyLHQubW9kZXx8ImVmZmVjdCIpLG89cGFyc2VJbnQodC5wZXJjZW50LDEwKXx8KHBhcnNlSW50KHQucGVyY2VudCwxMCk9PT0wPzA6cz09PSJoaWRlIj8wOjEwMCksdT10LmRpcmVjdGlvbnx8ImJvdGgiLGE9dC5vcmlnaW4sZj17aGVpZ2h0OnIuaGVpZ2h0KCksd2lkdGg6ci53aWR0aCgpLG91dGVySGVpZ2h0OnIub3V0ZXJIZWlnaHQoKSxvdXRlcldpZHRoOnIub3V0ZXJXaWR0aCgpfSxsPXt5OnUhPT0iaG9yaXpvbnRhbCI/by8xMDA6MSx4OnUhPT0idmVydGljYWwiP28vMTAwOjF9O2kuZWZmZWN0PSJzaXplIixpLnF1ZXVlPSExLGkuY29tcGxldGU9bixzIT09ImVmZmVjdCImJihpLm9yaWdpbj1hfHxbIm1pZGRsZSIsImNlbnRlciJdLGkucmVzdG9yZT0hMCksaS5mcm9tPXQuZnJvbXx8KHM9PT0ic2hvdyI/e2hlaWdodDowLHdpZHRoOjB9OmYpLGkudG89e2hlaWdodDpmLmhlaWdodCpsLnksd2lkdGg6Zi53aWR0aCpsLngsb3V0ZXJIZWlnaHQ6Zi5vdXRlckhlaWdodCpsLnksb3V0ZXJXaWR0aDpmLm91dGVyV2lkdGgqbC54fSxpLmZhZGUmJihzPT09InNob3ciJiYoaS5mcm9tLm9wYWNpdHk9MCxpLnRvLm9wYWNpdHk9MSkscz09PSJoaWRlIiYmKGkuZnJvbS5vcGFjaXR5PTEsaS50by5vcGFjaXR5PTApKSxyLmVmZmVjdChpKX0sZS5lZmZlY3RzLmVmZmVjdC5zaXplPWZ1bmN0aW9uKHQsbil7dmFyIHI9ZSh0aGlzKSxpPVsicG9zaXRpb24iLCJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiLCJ3aWR0aCIsImhlaWdodCIsIm92ZXJmbG93Iiwib3BhY2l0eSJdLHM9WyJwb3NpdGlvbiIsInRvcCIsImJvdHRvbSIsImxlZnQiLCJyaWdodCIsIm92ZXJmbG93Iiwib3BhY2l0eSJdLG89WyJ3aWR0aCIsImhlaWdodCIsIm92ZXJmbG93Il0sdT1bImZvbnRTaXplIl0sYT1bImJvcmRlclRvcFdpZHRoIiwiYm9yZGVyQm90dG9tV2lkdGgiLCJwYWRkaW5nVG9wIiwicGFkZGluZ0JvdHRvbSJdLGY9WyJib3JkZXJMZWZ0V2lkdGgiLCJib3JkZXJSaWdodFdpZHRoIiwicGFkZGluZ0xlZnQiLCJwYWRkaW5nUmlnaHQiXSxsPWUuZWZmZWN0cy5zZXRNb2RlKHIsdC5tb2RlfHwiZWZmZWN0IiksYz10LnJlc3RvcmV8fGwhPT0iZWZmZWN0IixoPXQuc2NhbGV8fCJib3RoIixwPXQub3JpZ2lufHxbIm1pZGRsZSIsImNlbnRlciJdLGQsdixtLGc9ci5jc3MoInBvc2l0aW9uIik7bD09PSJzaG93IiYmci5zaG93KCksZD17aGVpZ2h0OnIuaGVpZ2h0KCksd2lkdGg6ci53aWR0aCgpLG91dGVySGVpZ2h0OnIub3V0ZXJIZWlnaHQoKSxvdXRlcldpZHRoOnIub3V0ZXJXaWR0aCgpfSxyLmZyb209dC5mcm9tfHxkLHIudG89dC50b3x8ZCxtPXtmcm9tOnt5OnIuZnJvbS5oZWlnaHQvZC5oZWlnaHQseDpyLmZyb20ud2lkdGgvZC53aWR0aH0sdG86e3k6ci50by5oZWlnaHQvZC5oZWlnaHQseDpyLnRvLndpZHRoL2Qud2lkdGh9fTtpZihoPT09ImJveCJ8fGg9PT0iYm90aCIpbS5mcm9tLnkhPT1tLnRvLnkmJihpPWkuY29uY2F0KGEpLHIuZnJvbT1lLmVmZmVjdHMuc2V0VHJhbnNpdGlvbihyLGEsbS5mcm9tLnksci5mcm9tKSxyLnRvPWUuZWZmZWN0cy5zZXRUcmFuc2l0aW9uKHIsYSxtLnRvLnksci50bykpLG0uZnJvbS54IT09bS50by54JiYoaT1pLmNvbmNhdChmKSxyLmZyb209ZS5lZmZlY3RzLnNldFRyYW5zaXRpb24ocixmLG0uZnJvbS54LHIuZnJvbSksci50bz1lLmVmZmVjdHMuc2V0VHJhbnNpdGlvbihyLGYsbS50by54LHIudG8pKTsoaD09PSJjb250ZW50Inx8aD09PSJib3RoIikmJm0uZnJvbS55IT09bS50by55JiYoaT1pLmNvbmNhdCh1KSxyLmZyb209ZS5lZmZlY3RzLnNldFRyYW5zaXRpb24ocix1LG0uZnJvbS55LHIuZnJvbSksci50bz1lLmVmZmVjdHMuc2V0VHJhbnNpdGlvbihyLHUsbS50by55LHIudG8pKSxlLmVmZmVjdHMuc2F2ZShyLGM/aTpzKSxyLnNob3coKSxlLmVmZmVjdHMuY3JlYXRlV3JhcHBlcihyKSxyLmNzcygib3ZlcmZsb3ciLCJoaWRkZW4iKS5jc3Moci5mcm9tKSxwJiYodj1lLmVmZmVjdHMuZ2V0QmFzZWxpbmUocCxkKSxyLmZyb20udG9wPShkLm91dGVySGVpZ2h0LXIub3V0ZXJIZWlnaHQoKSkqdi55LHIuZnJvbS5sZWZ0PShkLm91dGVyV2lkdGgtci5vdXRlcldpZHRoKCkpKnYueCxyLnRvLnRvcD0oZC5vdXRlckhlaWdodC1yLnRvLm91dGVySGVpZ2h0KSp2Lnksci50by5sZWZ0PShkLm91dGVyV2lkdGgtci50by5vdXRlcldpZHRoKSp2LngpLHIuY3NzKHIuZnJvbSk7aWYoaD09PSJjb250ZW50Inx8aD09PSJib3RoIilhPWEuY29uY2F0KFsibWFyZ2luVG9wIiwibWFyZ2luQm90dG9tIl0pLmNvbmNhdCh1KSxmPWYuY29uY2F0KFsibWFyZ2luTGVmdCIsIm1hcmdpblJpZ2h0Il0pLG89aS5jb25jYXQoYSkuY29uY2F0KGYpLHIuZmluZCgiKlt3aWR0aF0iKS5lYWNoKGZ1bmN0aW9uKCl7dmFyIG49ZSh0aGlzKSxyPXtoZWlnaHQ6bi5oZWlnaHQoKSx3aWR0aDpuLndpZHRoKCl9O2MmJmUuZWZmZWN0cy5zYXZlKG4sbyksbi5mcm9tPXtoZWlnaHQ6ci5oZWlnaHQqbS5mcm9tLnksd2lkdGg6ci53aWR0aCptLmZyb20ueH0sbi50bz17aGVpZ2h0OnIuaGVpZ2h0Km0udG8ueSx3aWR0aDpyLndpZHRoKm0udG8ueH0sbS5mcm9tLnkhPT1tLnRvLnkmJihuLmZyb209ZS5lZmZlY3RzLnNldFRyYW5zaXRpb24obixhLG0uZnJvbS55LG4uZnJvbSksbi50bz1lLmVmZmVjdHMuc2V0VHJhbnNpdGlvbihuLGEsbS50by55LG4udG8pKSxtLmZyb20ueCE9PW0udG8ueCYmKG4uZnJvbT1lLmVmZmVjdHMuc2V0VHJhbnNpdGlvbihuLGYsbS5mcm9tLngsbi5mcm9tKSxuLnRvPWUuZWZmZWN0cy5zZXRUcmFuc2l0aW9uKG4sZixtLnRvLngsbi50bykpLG4uY3NzKG4uZnJvbSksbi5hbmltYXRlKG4udG8sdC5kdXJhdGlvbix0LmVhc2luZyxmdW5jdGlvbigpe2MmJmUuZWZmZWN0cy5yZXN0b3JlKG4sbyl9KX0pO3IuYW5pbWF0ZShyLnRvLHtxdWV1ZTohMSxkdXJhdGlvbjp0LmR1cmF0aW9uLGVhc2luZzp0LmVhc2luZyxjb21wbGV0ZTpmdW5jdGlvbigpe3IudG8ub3BhY2l0eT09PTAmJnIuY3NzKCJvcGFjaXR5IixyLmZyb20ub3BhY2l0eSksbD09PSJoaWRlIiYmci5oaWRlKCksZS5lZmZlY3RzLnJlc3RvcmUocixjP2k6cyksY3x8KGc9PT0ic3RhdGljIj9yLmNzcyh7cG9zaXRpb246InJlbGF0aXZlIix0b3A6ci50by50b3AsbGVmdDpyLnRvLmxlZnR9KTplLmVhY2goWyJ0b3AiLCJsZWZ0Il0sZnVuY3Rpb24oZSx0KXtyLmNzcyh0LGZ1bmN0aW9uKHQsbil7dmFyIGk9cGFyc2VJbnQobiwxMCkscz1lP3IudG8ubGVmdDpyLnRvLnRvcDtyZXR1cm4gbj09PSJhdXRvIj9zKyJweCI6aStzKyJweCJ9KX0pKSxlLmVmZmVjdHMucmVtb3ZlV3JhcHBlcihyKSxuKCl9fSl9fSkoalF1ZXJ5KTsoZnVuY3Rpb24oZSx0KXtlLmVmZmVjdHMuZWZmZWN0LnNoYWtlPWZ1bmN0aW9uKHQsbil7dmFyIHI9ZSh0aGlzKSxpPVsicG9zaXRpb24iLCJ0b3AiLCJib3R0b20iLCJsZWZ0IiwicmlnaHQiLCJoZWlnaHQiLCJ3aWR0aCJdLHM9ZS5lZmZlY3RzLnNldE1vZGUocix0Lm1vZGV8fCJlZmZlY3QiKSxvPXQuZGlyZWN0aW9ufHwibGVmdCIsdT10LmRpc3RhbmNlfHwyMCxhPXQudGltZXN8fDMsZj1hKjIrMSxsPU1hdGgucm91bmQodC5kdXJhdGlvbi9mKSxjPW89PT0idXAifHxvPT09ImRvd24iPyJ0b3AiOiJsZWZ0IixoPW89PT0idXAifHxvPT09ImxlZnQiLHA9e30sZD17fSx2PXt9LG0sZz1yLnF1ZXVlKCkseT1nLmxlbmd0aDtlLmVmZmVjdHMuc2F2ZShyLGkpLHIuc2hvdygpLGUuZWZmZWN0cy5jcmVhdGVXcmFwcGVyKHIpLHBbY109KGg/Ii09IjoiKz0iKSt1LGRbY109KGg/Iis9IjoiLT0iKSt1KjIsdltjXT0oaD8iLT0iOiIrPSIpK3UqMixyLmFuaW1hdGUocCxsLHQuZWFzaW5nKTtmb3IobT0xO208YTttKyspci5hbmltYXRlKGQsbCx0LmVhc2luZykuYW5pbWF0ZSh2LGwsdC5lYXNpbmcpO3IuYW5pbWF0ZShkLGwsdC5lYXNpbmcpLmFuaW1hdGUocCxsLzIsdC5lYXNpbmcpLnF1ZXVlKGZ1bmN0aW9uKCl7cz09PSJoaWRlIiYmci5oaWRlKCksZS5lZmZlY3RzLnJlc3RvcmUocixpKSxlLmVmZmVjdHMucmVtb3ZlV3JhcHBlcihyKSxuKCl9KSx5PjEmJmcuc3BsaWNlLmFwcGx5KGcsWzEsMF0uY29uY2F0KGcuc3BsaWNlKHksZisxKSkpLHIuZGVxdWV1ZSgpfX0pKGpRdWVyeSk7KGZ1bmN0aW9uKGUsdCl7ZS5lZmZlY3RzLmVmZmVjdC5zbGlkZT1mdW5jdGlvbih0LG4pe3ZhciByPWUodGhpcyksaT1bInBvc2l0aW9uIiwidG9wIiwiYm90dG9tIiwibGVmdCIsInJpZ2h0Iiwid2lkdGgiLCJoZWlnaHQiXSxzPWUuZWZmZWN0cy5zZXRNb2RlKHIsdC5tb2RlfHwic2hvdyIpLG89cz09PSJzaG93Iix1PXQuZGlyZWN0aW9ufHwibGVmdCIsYT11PT09InVwInx8dT09PSJkb3duIj8idG9wIjoibGVmdCIsZj11PT09InVwInx8dT09PSJsZWZ0IixsLGM9e307ZS5lZmZlY3RzLnNhdmUocixpKSxyLnNob3coKSxsPXQuZGlzdGFuY2V8fHJbYT09PSJ0b3AiPyJvdXRlckhlaWdodCI6Im91dGVyV2lkdGgiXSghMCksZS5lZmZlY3RzLmNyZWF0ZVdyYXBwZXIocikuY3NzKHtvdmVyZmxvdzoiaGlkZGVuIn0pLG8mJnIuY3NzKGEsZj9pc05hTihsKT8iLSIrbDotbDpsKSxjW2FdPShvP2Y/Iis9IjoiLT0iOmY/Ii09IjoiKz0iKStsLHIuYW5pbWF0ZShjLHtxdWV1ZTohMSxkdXJhdGlvbjp0LmR1cmF0aW9uLGVhc2luZzp0LmVhc2luZyxjb21wbGV0ZTpmdW5jdGlvbigpe3M9PT0iaGlkZSImJnIuaGlkZSgpLGUuZWZmZWN0cy5yZXN0b3JlKHIsaSksZS5lZmZlY3RzLnJlbW92ZVdyYXBwZXIociksbigpfX0pfX0pKGpRdWVyeSk7KGZ1bmN0aW9uKGUsdCl7ZS5lZmZlY3RzLmVmZmVjdC50cmFuc2Zlcj1mdW5jdGlvbih0LG4pe3ZhciByPWUodGhpcyksaT1lKHQudG8pLHM9aS5jc3MoInBvc2l0aW9uIik9PT0iZml4ZWQiLG89ZSgiYm9keSIpLHU9cz9vLnNjcm9sbFRvcCgpOjAsYT1zP28uc2Nyb2xsTGVmdCgpOjAsZj1pLm9mZnNldCgpLGw9e3RvcDpmLnRvcC11LGxlZnQ6Zi5sZWZ0LWEsaGVpZ2h0OmkuaW5uZXJIZWlnaHQoKSx3aWR0aDppLmlubmVyV2lkdGgoKX0sYz1yLm9mZnNldCgpLGg9ZSgnPGRpdiBjbGFzcz0idWktZWZmZWN0cy10cmFuc2ZlciI+PC9kaXY+JykuYXBwZW5kVG8oZG9jdW1lbnQuYm9keSkuYWRkQ2xhc3ModC5jbGFzc05hbWUpLmNzcyh7dG9wOmMudG9wLXUsbGVmdDpjLmxlZnQtYSxoZWlnaHQ6ci5pbm5lckhlaWdodCgpLHdpZHRoOnIuaW5uZXJXaWR0aCgpLHBvc2l0aW9uOnM/ImZpeGVkIjoiYWJzb2x1dGUifSkuYW5pbWF0ZShsLHQuZHVyYXRpb24sdC5lYXNpbmcsZnVuY3Rpb24oKXtoLnJlbW92ZSgpLG4oKX0pfX0pKGpRdWVyeSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9vcGVubWVldGluZ3MvanMvanF1ZXJ5LnVpLm1lbnViYXIuanMgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9qcy9qcXVlcnkudWkubWVudWJhci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjQxZTVlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvanMvanF1ZXJ5LnVpLm1lbnViYXIuanMKQEAgLTAsMCArMSwzMTcgQEAKKy8qDQorICogalF1ZXJ5IFVJIE1lbnViYXIgQFZFUlNJT04NCisgKg0KKyAqIENvcHlyaWdodCAyMDExLCBBVVRIT1JTLnR4dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9hYm91dCkNCisgKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgb3IgR1BMIFZlcnNpb24gMiBsaWNlbnNlcy4NCisgKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlDQorICoNCisgKiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1VJL01lbnViYXINCisgKg0KKyAqIERlcGVuZHM6DQorICoJanF1ZXJ5LnVpLmNvcmUuanMNCisgKglqcXVlcnkudWkud2lkZ2V0LmpzDQorICoJanF1ZXJ5LnVpLnBvc2l0aW9uLmpzDQorICoJanF1ZXJ5LnVpLm1lbnUuanMNCisgKi8NCisoZnVuY3Rpb24oICQgKSB7DQorDQorLy8gVE9ETyB3aGVuIG1peGluZyBjbGlja2luZyBtZW51cyBhbmQga2V5Ym9hcmQgbmF2aWdhdGlvbiwgZm9jdXMgaGFuZGxpbmcgaXMgYnJva2VuDQorLy8gdGhlcmUgaGFzIHRvIGJlIGp1c3Qgb25lIGl0ZW0gdGhhdCBoYXMgdGFiaW5kZXgNCiskLndpZGdldCggInVpLm1lbnViYXIiLCB7DQorCXZlcnNpb246ICJAVkVSU0lPTiIsDQorCW9wdGlvbnM6IHsNCisJCWF1dG9FeHBhbmQ6IGZhbHNlLA0KKwkJYnV0dG9uczogZmFsc2UsDQorCQlpdGVtczogImxpIiwNCisJCW1lbnVFbGVtZW50OiAidWwiLA0KKwkJbWVudUljb246IGZhbHNlLA0KKwkJcG9zaXRpb246IHsNCisJCQlteTogImxlZnQgdG9wIiwNCisJCQlhdDogImxlZnQgYm90dG9tIg0KKwkJfQ0KKwl9LA0KKwlfY3JlYXRlOiBmdW5jdGlvbigpIHsNCisJCXZhciB0aGF0ID0gdGhpczsNCisJCXRoaXMubWVudUl0ZW1zID0gdGhpcy5lbGVtZW50LmNoaWxkcmVuKCB0aGlzLm9wdGlvbnMuaXRlbXMgKTsNCisJCXRoaXMuaXRlbXMgPSB0aGlzLm1lbnVJdGVtcy5jaGlsZHJlbiggImJ1dHRvbiwgYSIgKTsNCisNCisJCXRoaXMubWVudUl0ZW1zDQorCQkJLmFkZENsYXNzKCAidWktbWVudWJhci1pdGVtIiApDQorCQkJLmF0dHIoICJyb2xlIiwgInByZXNlbnRhdGlvbiIgKTsNCisJCS8vIGxldCBvbmx5IHRoZSBmaXJzdCBpdGVtIHJlY2VpdmUgZm9jdXMNCisJCXRoaXMuaXRlbXMuc2xpY2UoMSkuYXR0ciggInRhYkluZGV4IiwgLTEgKTsNCisNCisJCXRoaXMuZWxlbWVudA0KKwkJCS5hZGRDbGFzcyggInVpLW1lbnViYXIgdWktd2lkZ2V0LWhlYWRlciB1aS1oZWxwZXItY2xlYXJmaXgiICkNCisJCQkuYXR0ciggInJvbGUiLCAibWVudWJhciIgKTsNCisJCXRoaXMuX2ZvY3VzYWJsZSggdGhpcy5pdGVtcyApOw0KKwkJdGhpcy5faG92ZXJhYmxlKCB0aGlzLml0ZW1zICk7DQorCQl0aGlzLml0ZW1zLnNpYmxpbmdzKCB0aGlzLm9wdGlvbnMubWVudUVsZW1lbnQgKQ0KKwkJCS5tZW51KHsNCisJCQkJcG9zaXRpb246IHsNCisJCQkJCXdpdGhpbjogdGhpcy5vcHRpb25zLnBvc2l0aW9uLndpdGhpbg0KKwkJCQl9LA0KKwkJCQlzZWxlY3Q6IGZ1bmN0aW9uKCBldmVudCwgdWkgKSB7DQorCQkJCQl1aS5pdGVtLnBhcmVudHMoICJ1bC51aS1tZW51Omxhc3QiICkuaGlkZSgpOw0KKwkJCQkJdGhhdC5fY2xvc2UoKTsNCisJCQkJCS8vIFRPRE8gd2hhdCBpcyB0aGlzIHRhcmdldHRpbmc/IHRoZXJlJ3MgcHJvYmFibHkgYSBiZXR0ZXIgd2F5IHRvIGFjY2VzcyBpdA0KKwkJCQkJJChldmVudC50YXJnZXQpLnByZXYoKS5mb2N1cygpOw0KKwkJCQkJdGhhdC5fdHJpZ2dlciggInNlbGVjdCIsIGV2ZW50LCB1aSApOw0KKwkJCQl9LA0KKwkJCQltZW51czogdGhhdC5vcHRpb25zLm1lbnVFbGVtZW50DQorCQkJfSkNCisJCQkuaGlkZSgpDQorCQkJLmF0dHIoew0KKwkJCQkiYXJpYS1oaWRkZW4iOiAidHJ1ZSIsDQorCQkJCSJhcmlhLWV4cGFuZGVkIjogImZhbHNlIg0KKwkJCX0pDQorCQkJLmJpbmQoICJrZXlkb3duLm1lbnViYXIiLCBmdW5jdGlvbiggZXZlbnQgKSB7DQorCQkJCXZhciBtZW51ID0gJCggdGhpcyApOw0KKwkJCQlpZiAoIG1lbnUuaXMoICI6aGlkZGVuIiApICkgew0KKwkJCQkJcmV0dXJuOw0KKwkJCQl9DQorCQkJCXN3aXRjaCAoIGV2ZW50LmtleUNvZGUgKSB7DQorCQkJCWNhc2UgJC51aS5rZXlDb2RlLkxFRlQ6DQorCQkJCQl0aGF0LnByZXZpb3VzKCBldmVudCApOw0KKwkJCQkJZXZlbnQucHJldmVudERlZmF1bHQoKTsNCisJCQkJCWJyZWFrOw0KKwkJCQljYXNlICQudWkua2V5Q29kZS5SSUdIVDoNCisJCQkJCXRoYXQubmV4dCggZXZlbnQgKTsNCisJCQkJCWV2ZW50LnByZXZlbnREZWZhdWx0KCk7DQorCQkJCQlicmVhazsNCisJCQkJfQ0KKwkJCX0pOw0KKwkJdGhpcy5pdGVtcy5lYWNoKGZ1bmN0aW9uKCkgew0KKwkJCXZhciBpbnB1dCA9ICQodGhpcyksDQorCQkJCS8vIFRPRE8gbWVudSB2YXIgaXMgb25seSB1c2VkIG9uIHR3byBwbGFjZXMsIGRvZXNuJ3QgcXVpdGUganVzdGlmeSB0aGUgLmVhY2gNCisJCQkJbWVudSA9IGlucHV0Lm5leHQoIHRoYXQub3B0aW9ucy5tZW51RWxlbWVudCApOw0KKw0KKwkJCS8vIG1pZ2h0IGJlIGEgbm9uLW1lbnUgYnV0dG9uDQorCQkJaWYgKCBtZW51Lmxlbmd0aCApIHsNCisJCQkJaW5wdXQuYmluZCggImNsaWNrLm1lbnViYXIgZm9jdXMubWVudWJhciBtb3VzZWVudGVyLm1lbnViYXIiLCBmdW5jdGlvbiggZXZlbnQgKSB7DQorCQkJCQkvLyBpZ25vcmUgdHJpZ2dlcmVkIGZvY3VzIGV2ZW50DQorCQkJCQlpZiAoIGV2ZW50LnR5cGUgPT09ICJmb2N1cyIgJiYgIWV2ZW50Lm9yaWdpbmFsRXZlbnQgKSB7DQorCQkJCQkJcmV0dXJuOw0KKwkJCQkJfQ0KKwkJCQkJZXZlbnQucHJldmVudERlZmF1bHQoKTsNCisJCQkJCS8vIFRPRE8gY2FuIHdlIHNpbXBsaWZ5IG9yIGV4dHJhY3R0aGlzIGNoZWNrPyBlc3BlY2lhbGx5IHRoZSBsYXN0IHR3byBleHByZXNzaW9ucw0KKwkJCQkJLy8gdGhlcmUncyBhIHNpbWlsYXIgYWN0aXZlWzBdID09IG1lbnVbMF0gY2hlY2sgaW4gX29wZW4NCisJCQkJCWlmICggZXZlbnQudHlwZSA9PT0gImNsaWNrIiAmJiBtZW51LmlzKCAiOnZpc2libGUiICkgJiYgdGhhdC5hY3RpdmUgJiYgdGhhdC5hY3RpdmVbMF0gPT09IG1lbnVbMF0gKSB7DQorCQkJCQkJdGhhdC5fY2xvc2UoKTsNCisJCQkJCQlyZXR1cm47DQorCQkJCQl9DQorCQkJCQlpZiAoICggdGhhdC5vcGVuICYmIGV2ZW50LnR5cGUgPT09ICJtb3VzZWVudGVyIiApIHx8IGV2ZW50LnR5cGUgPT09ICJjbGljayIgfHwgdGhhdC5vcHRpb25zLmF1dG9FeHBhbmQgKSB7DQorCQkJCQkJaWYoIHRoYXQub3B0aW9ucy5hdXRvRXhwYW5kICkgew0KKwkJCQkJCQljbGVhclRpbWVvdXQoIHRoYXQuY2xvc2VUaW1lciApOw0KKwkJCQkJCX0NCisNCisJCQkJCQl0aGF0Ll9vcGVuKCBldmVudCwgbWVudSApOw0KKwkJCQkJfQ0KKwkJCQl9KQ0KKwkJCQkuYmluZCggImtleWRvd24iLCBmdW5jdGlvbiggZXZlbnQgKSB7DQorCQkJCQlzd2l0Y2ggKCBldmVudC5rZXlDb2RlICkgew0KKwkJCQkJY2FzZSAkLnVpLmtleUNvZGUuU1BBQ0U6DQorCQkJCQljYXNlICQudWkua2V5Q29kZS5VUDoNCisJCQkJCWNhc2UgJC51aS5rZXlDb2RlLkRPV046DQorCQkJCQkJdGhhdC5fb3BlbiggZXZlbnQsICQoIHRoaXMgKS5uZXh0KCkgKTsNCisJCQkJCQlldmVudC5wcmV2ZW50RGVmYXVsdCgpOw0KKwkJCQkJCWJyZWFrOw0KKwkJCQkJY2FzZSAkLnVpLmtleUNvZGUuTEVGVDoNCisJCQkJCQl0aGF0LnByZXZpb3VzKCBldmVudCApOw0KKwkJCQkJCWV2ZW50LnByZXZlbnREZWZhdWx0KCk7DQorCQkJCQkJYnJlYWs7DQorCQkJCQljYXNlICQudWkua2V5Q29kZS5SSUdIVDoNCisJCQkJCQl0aGF0Lm5leHQoIGV2ZW50ICk7DQorCQkJCQkJZXZlbnQucHJldmVudERlZmF1bHQoKTsNCisJCQkJCQlicmVhazsNCisJCQkJCX0NCisJCQkJfSkNCisJCQkJLmF0dHIoICJhcmlhLWhhc3BvcHVwIiwgInRydWUiICk7DQorDQorCQkJCS8vIFRPRE8gcmV2aWV3IGlmIHRoZXNlIG9wdGlvbnMgKG1lbnVJY29uIGFuZCBidXR0b25zKSBhcmUgYSBnb29kIGNob2ljZSwgbWF5YmUgdGhleSBjYW4gYmUgbWVyZ2VkDQorCQkJCWlmICggdGhhdC5vcHRpb25zLm1lbnVJY29uICkgew0KKwkJCQkJaW5wdXQuYWRkQ2xhc3MoICJ1aS1zdGF0ZS1kZWZhdWx0IiApLmFwcGVuZCggIjxzcGFuIGNsYXNzPSd1aS1idXR0b24taWNvbi1zZWNvbmRhcnkgdWktaWNvbiB1aS1pY29uLXRyaWFuZ2xlLTEtcyc+PC9zcGFuPiIgKTsNCisJCQkJCWlucHV0LnJlbW92ZUNsYXNzKCAidWktYnV0dG9uLXRleHQtb25seSIgKS5hZGRDbGFzcyggInVpLWJ1dHRvbi10ZXh0LWljb24tc2Vjb25kYXJ5IiApOw0KKwkJCQl9DQorCQkJfQ0KKw0KKwkJCWlucHV0DQorCQkJCS5hZGRDbGFzcyggInVpLWJ1dHRvbiB1aS13aWRnZXQgdWktYnV0dG9uLXRleHQtb25seSB1aS1tZW51YmFyLWxpbmsiICkNCisJCQkJLmF0dHIoICJyb2xlIiwgIm1lbnVpdGVtIiApDQorCQkJCS53cmFwSW5uZXIoICI8c3BhbiBjbGFzcz0ndWktYnV0dG9uLXRleHQnPjwvc3Bhbj4iICk7DQorDQorCQkJaWYgKCB0aGF0Lm9wdGlvbnMuYnV0dG9ucyApIHsNCisJCQkJaW5wdXQucmVtb3ZlQ2xhc3MoICJ1aS1tZW51YmFyLWxpbmsiICkuYWRkQ2xhc3MoICJ1aS1zdGF0ZS1kZWZhdWx0IiApOw0KKwkJCX0NCisJCX0pOw0KKwkJdGhhdC5fb24oIHsNCisJCQlrZXlkb3duOiBmdW5jdGlvbiggZXZlbnQgKSB7DQorCQkJCWlmICggZXZlbnQua2V5Q29kZSA9PT0gJC51aS5rZXlDb2RlLkVTQ0FQRSAmJiB0aGF0LmFjdGl2ZSAmJiB0aGF0LmFjdGl2ZS5tZW51KCAiY29sbGFwc2UiLCBldmVudCApICE9PSB0cnVlICkgew0KKwkJCQkJdmFyIGFjdGl2ZSA9IHRoYXQuYWN0aXZlOw0KKwkJCQkJdGhhdC5hY3RpdmUuYmx1cigpOw0KKwkJCQkJdGhhdC5fY2xvc2UoIGV2ZW50ICk7DQorCQkJCQlhY3RpdmUucHJldigpLmZvY3VzKCk7DQorCQkJCX0NCisJCQl9LA0KKwkJCWZvY3VzaW46IGZ1bmN0aW9uKCBldmVudCApIHsNCisJCQkJY2xlYXJUaW1lb3V0KCB0aGF0LmNsb3NlVGltZXIgKTsNCisJCQl9LA0KKwkJCWZvY3Vzb3V0OiBmdW5jdGlvbiggZXZlbnQgKSB7DQorCQkJCXRoYXQuY2xvc2VUaW1lciA9IHNldFRpbWVvdXQoIGZ1bmN0aW9uKCkgew0KKwkJCQkJdGhhdC5fY2xvc2UoIGV2ZW50ICk7DQorCQkJCX0sIDE1MCk7DQorCQkJfSwNCisJCQkibW91c2VsZWF2ZSAudWktbWVudWJhci1pdGVtIjogZnVuY3Rpb24oIGV2ZW50ICkgew0KKwkJCQlpZiAoIHRoYXQub3B0aW9ucy5hdXRvRXhwYW5kICkgew0KKwkJCQkJdGhhdC5jbG9zZVRpbWVyID0gc2V0VGltZW91dCggZnVuY3Rpb24oKSB7DQorCQkJCQkJdGhhdC5fY2xvc2UoIGV2ZW50ICk7DQorCQkJCQl9LCAxNTApOw0KKwkJCQl9DQorCQkJfSwNCisJCQkibW91c2VlbnRlciAudWktbWVudWJhci1pdGVtIjogZnVuY3Rpb24oIGV2ZW50ICkgew0KKwkJCQljbGVhclRpbWVvdXQoIHRoYXQuY2xvc2VUaW1lciApOw0KKwkJCX0NCisJCX0pOw0KKw0KKwkJLy8gS2VlcCB0cmFjayBvZiBvcGVuIHN1Ym1lbnVzDQorCQl0aGlzLm9wZW5TdWJtZW51cyA9IDA7DQorCX0sDQorDQorCV9kZXN0cm95IDogZnVuY3Rpb24oKSB7DQorCQl0aGlzLm1lbnVJdGVtcw0KKwkJCS5yZW1vdmVDbGFzcyggInVpLW1lbnViYXItaXRlbSIgKQ0KKwkJCS5yZW1vdmVBdHRyKCAicm9sZSIgKTsNCisNCisJCXRoaXMuZWxlbWVudA0KKwkJCS5yZW1vdmVDbGFzcyggInVpLW1lbnViYXIgdWktd2lkZ2V0LWhlYWRlciB1aS1oZWxwZXItY2xlYXJmaXgiICkNCisJCQkucmVtb3ZlQXR0ciggInJvbGUiICkNCisJCQkudW5iaW5kKCAiLm1lbnViYXIiICk7DQorDQorCQl0aGlzLml0ZW1zDQorCQkJLnVuYmluZCggIi5tZW51YmFyIiApDQorCQkJLnJlbW92ZUNsYXNzKCAidWktYnV0dG9uIHVpLXdpZGdldCB1aS1idXR0b24tdGV4dC1vbmx5IHVpLW1lbnViYXItbGluayB1aS1zdGF0ZS1kZWZhdWx0IiApDQorCQkJLnJlbW92ZUF0dHIoICJyb2xlIiApDQorCQkJLnJlbW92ZUF0dHIoICJhcmlhLWhhc3BvcHVwIiApDQorCQkJLy8gVE9ETyB1bndyYXA/DQorCQkJLmNoaWxkcmVuKCAic3Bhbi51aS1idXR0b24tdGV4dCIgKS5lYWNoKGZ1bmN0aW9uKCBpLCBlICkgew0KKwkJCQl2YXIgaXRlbSA9ICQoIHRoaXMgKTsNCisJCQkJaXRlbS5wYXJlbnQoKS5odG1sKCBpdGVtLmh0bWwoKSApOw0KKwkJCX0pDQorCQkJLmVuZCgpDQorCQkJLmNoaWxkcmVuKCAiLnVpLWljb24iICkucmVtb3ZlKCk7DQorDQorCQl0aGlzLmVsZW1lbnQuZmluZCggIjp1aS1tZW51IiApDQorCQkJLm1lbnUoICJkZXN0cm95IiApDQorCQkJLnNob3coKQ0KKwkJCS5yZW1vdmVBdHRyKCAiYXJpYS1oaWRkZW4iICkNCisJCQkucmVtb3ZlQXR0ciggImFyaWEtZXhwYW5kZWQiICkNCisJCQkucmVtb3ZlQXR0ciggInRhYmluZGV4IiApDQorCQkJLnVuYmluZCggIi5tZW51YmFyIiApOw0KKwl9LA0KKw0KKwlfY2xvc2U6IGZ1bmN0aW9uKCkgew0KKwkJaWYgKCAhdGhpcy5hY3RpdmUgfHwgIXRoaXMuYWN0aXZlLmxlbmd0aCApIHsNCisJCQlyZXR1cm47DQorCQl9DQorCQl0aGlzLmFjdGl2ZQ0KKwkJCS5tZW51KCAiY29sbGFwc2VBbGwiICkNCisJCQkuaGlkZSgpDQorCQkJLmF0dHIoew0KKwkJCQkiYXJpYS1oaWRkZW4iOiAidHJ1ZSIsDQorCQkJCSJhcmlhLWV4cGFuZGVkIjogImZhbHNlIg0KKwkJCX0pOw0KKwkJdGhpcy5hY3RpdmUNCisJCQkucHJldigpDQorCQkJLnJlbW92ZUNsYXNzKCAidWktc3RhdGUtYWN0aXZlIiApDQorCQkJLnJlbW92ZUF0dHIoICJ0YWJJbmRleCIgKTsNCisJCXRoaXMuYWN0aXZlID0gbnVsbDsNCisJCXRoaXMub3BlbiA9IGZhbHNlOw0KKwkJdGhpcy5vcGVuU3VibWVudXMgPSAwOw0KKwl9LA0KKw0KKwlfb3BlbjogZnVuY3Rpb24oIGV2ZW50LCBtZW51ICkgew0KKwkJLy8gb24gYSBzaW5nbGUtYnV0dG9uIG1lbnViYXIsIGlnbm9yZSByZW9wZW5pbmcgdGhlIHNhbWUgbWVudQ0KKwkJaWYgKCB0aGlzLmFjdGl2ZSAmJiB0aGlzLmFjdGl2ZVswXSA9PT0gbWVudVswXSApIHsNCisJCQlyZXR1cm47DQorCQl9DQorCQkvLyBUT0RPIHJlZmFjdG9yLCBhbG1vc3QgdGhlIHNhbWUgYXMgX2Nsb3NlIGFib3ZlLCBidXQgZG9uJ3QgcmVtb3ZlIHRhYkluZGV4DQorCQlpZiAoIHRoaXMuYWN0aXZlICkgew0KKwkJCXRoaXMuYWN0aXZlDQorCQkJCS5tZW51KCAiY29sbGFwc2VBbGwiICkNCisJCQkJLmhpZGUoKQ0KKwkJCQkuYXR0cih7DQorCQkJCQkiYXJpYS1oaWRkZW4iOiAidHJ1ZSIsDQorCQkJCQkiYXJpYS1leHBhbmRlZCI6ICJmYWxzZSINCisJCQkJfSk7DQorCQkJdGhpcy5hY3RpdmUNCisJCQkJLnByZXYoKQ0KKwkJCQkucmVtb3ZlQ2xhc3MoICJ1aS1zdGF0ZS1hY3RpdmUiICk7DQorCQl9DQorCQkvLyBzZXQgdGFiSW5kZXggLTEgdG8gaGF2ZSB0aGUgYnV0dG9uIHNraXBwZWQgb24gc2hpZnQtdGFiIHdoZW4gbWVudSBpcyBvcGVuIChpdCBnZXRzIGZvY3VzKQ0KKwkJdmFyIGJ1dHRvbiA9IG1lbnUucHJldigpLmFkZENsYXNzKCAidWktc3RhdGUtYWN0aXZlIiApLmF0dHIoICJ0YWJJbmRleCIsIC0xICk7DQorCQl0aGlzLmFjdGl2ZSA9IG1lbnUNCisJCQkuc2hvdygpDQorCQkJLnBvc2l0aW9uKCAkLmV4dGVuZCh7DQorCQkJCW9mOiBidXR0b24NCisJCQl9LCB0aGlzLm9wdGlvbnMucG9zaXRpb24gKSApDQorCQkJLnJlbW92ZUF0dHIoICJhcmlhLWhpZGRlbiIgKQ0KKwkJCS5hdHRyKCAiYXJpYS1leHBhbmRlZCIsICJ0cnVlIiApDQorCQkJLm1lbnUoImZvY3VzIiwgZXZlbnQsIG1lbnUuY2hpbGRyZW4oICIudWktbWVudS1pdGVtIiApLmZpcnN0KCkgKQ0KKwkJCS8vIFRPRE8gbmVlZCBhIGNvbW1lbnQgaGVyZSB3aHkgYm90aCBldmVudHMgYXJlIHRyaWdnZXJlZA0KKwkJCS5mb2N1cygpDQorCQkJLmZvY3VzaW4oKTsNCisJCXRoaXMub3BlbiA9IHRydWU7DQorCX0sDQorDQorCW5leHQ6IGZ1bmN0aW9uKCBldmVudCApIHsNCisJCWlmICggdGhpcy5vcGVuICYmIHRoaXMuYWN0aXZlLmRhdGEoICJtZW51IiApLmFjdGl2ZS5oYXMoICIudWktbWVudSIgKS5sZW5ndGggKSB7DQorCQkJLy8gVHJhY2sgbnVtYmVyIG9mIG9wZW4gc3VibWVudXMgYW5kIHByZXZlbnQgbW92aW5nIHRvIG5leHQgbWVudWJhciBpdGVtDQorCQkJdGhpcy5vcGVuU3VibWVudXMrKzsNCisJCQlyZXR1cm47DQorCQl9DQorCQl0aGlzLm9wZW5TdWJtZW51cyA9IDA7DQorCQl0aGlzLl9tb3ZlKCAibmV4dCIsICJmaXJzdCIsIGV2ZW50ICk7DQorCX0sDQorDQorCXByZXZpb3VzOiBmdW5jdGlvbiggZXZlbnQgKSB7DQorCQlpZiAoIHRoaXMub3BlbiAmJiB0aGlzLm9wZW5TdWJtZW51cyApIHsNCisJCQkvLyBUcmFjayBudW1iZXIgb2Ygb3BlbiBzdWJtZW51cyBhbmQgcHJldmVudCBtb3ZpbmcgdG8gcHJldmlvdXMgbWVudWJhciBpdGVtDQorCQkJdGhpcy5vcGVuU3VibWVudXMtLTsNCisJCQlyZXR1cm47DQorCQl9DQorCQl0aGlzLm9wZW5TdWJtZW51cyA9IDA7DQorCQl0aGlzLl9tb3ZlKCAicHJldiIsICJsYXN0IiwgZXZlbnQgKTsNCisJfSwNCisNCisJX21vdmU6IGZ1bmN0aW9uKCBkaXJlY3Rpb24sIGZpbHRlciwgZXZlbnQgKSB7DQorCQl2YXIgbmV4dCwNCisJCQl3cmFwSXRlbTsNCisJCWlmICggdGhpcy5vcGVuICkgew0KKwkJCW5leHQgPSB0aGlzLmFjdGl2ZS5jbG9zZXN0KCAiLnVpLW1lbnViYXItaXRlbSIgKVsgZGlyZWN0aW9uICsgIkFsbCIgXSggdGhpcy5vcHRpb25zLml0ZW1zICkuZmlyc3QoKS5jaGlsZHJlbiggIi51aS1tZW51IiApLmVxKCAwICk7DQorCQkJd3JhcEl0ZW0gPSB0aGlzLm1lbnVJdGVtc1sgZmlsdGVyIF0oKS5jaGlsZHJlbiggIi51aS1tZW51IiApLmVxKCAwICk7DQorCQl9IGVsc2Ugew0KKwkJCWlmICggZXZlbnQgKSB7DQorCQkJCW5leHQgPSAkKCBldmVudC50YXJnZXQgKS5jbG9zZXN0KCAiLnVpLW1lbnViYXItaXRlbSIgKVsgZGlyZWN0aW9uICsgIkFsbCIgXSggdGhpcy5vcHRpb25zLml0ZW1zICkuY2hpbGRyZW4oICIudWktbWVudWJhci1saW5rIiApLmVxKCAwICk7DQorCQkJCXdyYXBJdGVtID0gdGhpcy5tZW51SXRlbXNbIGZpbHRlciBdKCkuY2hpbGRyZW4oICIudWktbWVudWJhci1saW5rIiApLmVxKCAwICk7DQorCQkJfSBlbHNlIHsNCisJCQkJbmV4dCA9IHdyYXBJdGVtID0gdGhpcy5tZW51SXRlbXMuY2hpbGRyZW4oICJhIiApLmVxKCAwICk7DQorCQkJfQ0KKwkJfQ0KKw0KKwkJaWYgKCBuZXh0Lmxlbmd0aCApIHsNCisJCQlpZiAoIHRoaXMub3BlbiApIHsNCisJCQkJdGhpcy5fb3BlbiggZXZlbnQsIG5leHQgKTsNCisJCQl9IGVsc2Ugew0KKwkJCQluZXh0LnJlbW92ZUF0dHIoICJ0YWJJbmRleCIpWzBdLmZvY3VzKCk7DQorCQkJfQ0KKwkJfSBlbHNlIHsNCisJCQlpZiAoIHRoaXMub3BlbiApIHsNCisJCQkJdGhpcy5fb3BlbiggZXZlbnQsIHdyYXBJdGVtICk7DQorCQkJfSBlbHNlIHsNCisJCQkJd3JhcEl0ZW0ucmVtb3ZlQXR0ciggInRhYkluZGV4IilbMF0uZm9jdXMoKTsNCisJCQl9DQorCQl9DQorCX0NCit9KTsNCisNCit9KCBqUXVlcnkgKSk7DQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9vcGVubWVldGluZ3Mvb3Blbm1lZXRpbmdzX2Z1bmN0aW9ucy5qcyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL29wZW5tZWV0aW5nc19mdW5jdGlvbnMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWJiYzA0MAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL29wZW5tZWV0aW5nc19mdW5jdGlvbnMuanMKQEAgLTAsMCArMSw2MCBAQAorLyoNCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgIA0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAgICAJICANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAgdW5kZXIgdGhlIExpY2Vuc2UuDQorICANCisqLw0KKy8qDQorICogRnVuY3Rpb25zIHRvIGJlIGluY2x1ZGVkIGluIHRoZSBIVE1MIHdyYXBwZXIsDQorICogc2VlIHRoZSB0ZW1wbGF0ZXMgZGlyICgqLnZtKSBmb3IgdGhlIGluY2x1ZGUgc3RhdGVtZW50cw0KKyAqICANCisgKi8gDQorDQorZnVuY3Rpb24gZ2V0QnJvd3NlckluZm8oKSB7DQorCS8vYWxlcnQobmF2aWdhdG9yLnVzZXJBZ2VudCk7DQorCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsemFwcCIpLmdldEJyb3dzZXJJbmZvQ2FsbGJhY2sobmF2aWdhdG9yLnVzZXJBZ2VudCk7DQorfQ0KKw0KK2Z1bmN0aW9uIGdldEJyb3dzZXJMYW5nKCkgew0KKwkvL2FsZXJ0KG5hdmlnYXRvci51c2VyQWdlbnQpOw0KKwlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibHphcHAiKS5nZXRCcm93c2VyTGFuZ0NhbGxiYWNrKG5hdmlnYXRvci5sYW5ndWFnZSk7DQorfQ0KKw0KK2Z1bmN0aW9uIHJlZGlyZWN0VG9VcmwodXJsKSB7DQorCS8vYWxlcnQobmF2aWdhdG9yLnVzZXJBZ2VudCk7DQorCXdpbmRvdy5sb2NhdGlvbiA9IHVybDsNCisJDQorCWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsemFwcCIpLnJlZGlyZWN0VG9VcmxDYWxsYmFjaygib2siKTsNCit9DQorDQorZnVuY3Rpb24gbG9hZGluZ0NvbXBsZXRlKCkgew0KKwlkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibG9hZGluZyIpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7DQorCXZhciBsekFwcCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsemFwcENvbnRhaW5lciIpOw0KKwlsekFwcC5zdHlsZS53aWR0aCA9ICcxMDAlJzsNCisJbHpBcHAuc3R5bGUuaGVpZ2h0ID0gJzEwMCUnOw0KK30NCisNCitmdW5jdGlvbiBnZXRUaW1lWm9uZU9mZnNldCgpIHsNCisJdmFyIHJpZ2h0Tm93ID0gbmV3IERhdGUoKSwgc3RkX3RpbWVfb2Zmc2V0ID0gLXJpZ2h0Tm93LmdldFRpbWV6b25lT2Zmc2V0KCkgLyA2MDsNCisJZm9yICh2YXIgaSA9IDA7IGkgPCAxMjsgKytpKSB7DQorCQl2YXIgZCA9IG5ldyBEYXRlKHJpZ2h0Tm93LmdldEZ1bGxZZWFyKCksIGksIDEsIDAsIDAsIDAsIDApLCBvZmZzZXQgPSAtZC5nZXRUaW1lem9uZU9mZnNldCgpIC8gNjA7DQorCQlpZiAob2Zmc2V0IDwgc3RkX3RpbWVfb2Zmc2V0KSB7DQorCQkJc3RkX3RpbWVfb2Zmc2V0ID0gb2Zmc2V0Ow0KKwkJCWJyZWFrOw0KKwkJfQ0KKwl9DQorICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJsemFwcCIpLmdldFRpbWVab25lT2Zmc2V0Q2FsbGJhY2soc3RkX3RpbWVfb2Zmc2V0KTsNCit9DQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL2NsaXBhcnRzL2FtYnVsYW5jZS5wbmcgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvY2xpcGFydHMvYW1idWxhbmNlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjFjYzMzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL2NsaXBhcnRzL2FtYnVsYW5jZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL2NsaXBhcnRzL2Jvdy5wbmcgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvY2xpcGFydHMvYm93LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40M2NjM2Y1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL2NsaXBhcnRzL2Jvdy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL2NsaXBhcnRzL2NvbW11bml0eS5wbmcgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvY2xpcGFydHMvY29tbXVuaXR5LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNTZlMTY5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL2NsaXBhcnRzL2NvbW11bml0eS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL2NsaXBhcnRzL2hlbHAucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL2NsaXBhcnRzL2hlbHAucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiN2RiNmEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvY2xpcGFydHMvaGVscC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL2NsaXBhcnRzL2hvbWUucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL2NsaXBhcnRzL2hvbWUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0OTU4M2MKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvY2xpcGFydHMvaG9tZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL2NsaXBhcnRzL2lkZWEucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL2NsaXBhcnRzL2lkZWEucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjMmEzYzcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvY2xpcGFydHMvaWRlYS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL2NsaXBhcnRzL3N3aW0ucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL2NsaXBhcnRzL3N3aW0ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiYjZmMjUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvY2xpcGFydHMvc3dpbS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL2NsaXBhcnRzL3RodW1iL2FtYnVsYW5jZS5wbmcgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvY2xpcGFydHMvdGh1bWIvYW1idWxhbmNlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjFjYzMzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL2NsaXBhcnRzL3RodW1iL2FtYnVsYW5jZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL2NsaXBhcnRzL3RodW1iL2Jvdy5wbmcgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvY2xpcGFydHMvdGh1bWIvYm93LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40M2NjM2Y1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL2NsaXBhcnRzL3RodW1iL2Jvdy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL2NsaXBhcnRzL3RodW1iL2NvbW11bml0eS5wbmcgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvY2xpcGFydHMvdGh1bWIvY29tbXVuaXR5LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNTZlMTY5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL2NsaXBhcnRzL3RodW1iL2NvbW11bml0eS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL2NsaXBhcnRzL3RodW1iL2hlbHAucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL2NsaXBhcnRzL3RodW1iL2hlbHAucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiN2RiNmEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvY2xpcGFydHMvdGh1bWIvaGVscC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL2NsaXBhcnRzL3RodW1iL2hvbWUucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL2NsaXBhcnRzL3RodW1iL2hvbWUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0OTU4M2MKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvY2xpcGFydHMvdGh1bWIvaG9tZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL2NsaXBhcnRzL3RodW1iL2lkZWEucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL2NsaXBhcnRzL3RodW1iL2lkZWEucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjMmEzYzcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvY2xpcGFydHMvdGh1bWIvaWRlYS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL2NsaXBhcnRzL3RodW1iL3N3aW0ucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL2NsaXBhcnRzL3RodW1iL3N3aW0ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiYjZmMjUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvY2xpcGFydHMvdGh1bWIvc3dpbS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL2Vtb3RpY29ucy9lbW90ZXMueG1sIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL2Vtb3RpY29ucy9lbW90ZXMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkMTI2MTgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvZW1vdGljb25zL2Vtb3Rlcy54bWwKQEAgLTAsMCArMSw2NyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0NCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorDQorICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKw0KKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgLS0+DQorPGxpbmtlZC1saXN0IHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIAorICAgIHhzaTpub05hbWVzcGFjZVNjaGVtYUxvY2F0aW9uPSJlbW90ZXMueHNkIj4KKyAgPGxpbmtlZC1saXN0PgorICAgIDxzdHJpbmc+ZW1vdGljb25fZXZpbGdyaW4ucG5nPC9zdHJpbmc+CisgICAgPHN0cmluZz4mZ3Q7Oig8L3N0cmluZz4KKyAgICA8c3RyaW5nPihcXy8pPC9zdHJpbmc+CisJPHN0cmluZz4gICAgPC9zdHJpbmc+CisJPHN0cmluZz55PC9zdHJpbmc+CisgIDwvbGlua2VkLWxpc3Q+CisgIDxsaW5rZWQtbGlzdD4KKyAgICA8c3RyaW5nPmVtb3RpY29uX2dyaW4ucG5nPC9zdHJpbmc+CisgICAgPHN0cmluZz46RDwvc3RyaW5nPgorCTxzdHJpbmc+ICAgIDwvc3RyaW5nPgorCTxzdHJpbmc+eTwvc3RyaW5nPgorICA8L2xpbmtlZC1saXN0PgorICA8bGlua2VkLWxpc3Q+CisgICAgPHN0cmluZz5lbW90aWNvbl9oYXBweS5wbmc8L3N0cmluZz4KKyAgICA8c3RyaW5nPjhEPC9zdHJpbmc+CisJPHN0cmluZz4gICAgPC9zdHJpbmc+CisJPHN0cmluZz55PC9zdHJpbmc+CisgIDwvbGlua2VkLWxpc3Q+CisgIDxsaW5rZWQtbGlzdD4KKyAgICA8c3RyaW5nPmVtb3RpY29uX3NtaWxlLnBuZzwvc3RyaW5nPgorICAgIDxzdHJpbmc+Oik8L3N0cmluZz4KKyAgICA8c3RyaW5nPiheX14pPC9zdHJpbmc+CisJPHN0cmluZz4gICAgPC9zdHJpbmc+CisJPHN0cmluZz55PC9zdHJpbmc+CisgIDwvbGlua2VkLWxpc3Q+CisgIDxsaW5rZWQtbGlzdD4KKyAgICA8c3RyaW5nPmVtb3RpY29uX3N1cnByaXNlZC5wbmc8L3N0cmluZz4KKyAgICA8c3RyaW5nPm9fTzwvc3RyaW5nPgorCTxzdHJpbmc+ICAgIDwvc3RyaW5nPgorCTxzdHJpbmc+eTwvc3RyaW5nPgorICA8L2xpbmtlZC1saXN0PgorICA8bGlua2VkLWxpc3Q+CisgICAgPHN0cmluZz5lbW90aWNvbl90b25ndWUucG5nPC9zdHJpbmc+CisgICAgPHN0cmluZz46UDwvc3RyaW5nPgorCTxzdHJpbmc+ICAgIDwvc3RyaW5nPgorCTxzdHJpbmc+eTwvc3RyaW5nPgorICA8L2xpbmtlZC1saXN0PgorICA8bGlua2VkLWxpc3Q+CisgICAgPHN0cmluZz5lbW90aWNvbl91bmhhcHB5LnBuZzwvc3RyaW5nPgorICAgIDxzdHJpbmc+Oig8L3N0cmluZz4KKwk8c3RyaW5nPiAgICA8L3N0cmluZz4KKwk8c3RyaW5nPnk8L3N0cmluZz4KKyAgPC9saW5rZWQtbGlzdD4KKyAgPGxpbmtlZC1saXN0PgorICAgIDxzdHJpbmc+ZW1vdGljb25fd2luay5wbmc8L3N0cmluZz4KKyAgICA8c3RyaW5nPjspPC9zdHJpbmc+CisJPHN0cmluZz4gICAgPC9zdHJpbmc+CisJPHN0cmluZz55PC9zdHJpbmc+CisgIDwvbGlua2VkLWxpc3Q+Cis8L2xpbmtlZC1saXN0PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL2Vtb3RpY29ucy9lbW90ZXMueHNkIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL2Vtb3RpY29ucy9lbW90ZXMueHNkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlMTAyODUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvZW1vdGljb25zL2Vtb3Rlcy54c2QKQEAgLTAsMCArMSwzMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPHhzOnNjaGVtYSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIj4NCisgIDx4czplbGVtZW50IG5hbWU9ImxpbmtlZC1saXN0Ij4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czpzZXF1ZW5jZSBtaW5PY2N1cnM9IjAiPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsaW5rZWQtbGlzdCIgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIvPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ic3RyaW5nIiBtaW5PY2N1cnM9IjAiLz4NCisgICAgICA8L3hzOnNlcXVlbmNlPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0ic3RyaW5nIiB0eXBlPSJ4czpzdHJpbmciLz4NCis8L3hzOnNjaGVtYT4NCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvZW1vdGljb25zL2Vtb3RpY29uX2V2aWxncmluLnBuZyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy9lbW90aWNvbnMvZW1vdGljb25fZXZpbGdyaW4ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxN2JkNTAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvZW1vdGljb25zL2Vtb3RpY29uX2V2aWxncmluLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvZW1vdGljb25zL2Vtb3RpY29uX2dyaW4ucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL2Vtb3RpY29ucy9lbW90aWNvbl9ncmluLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzYwYzVlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL2Vtb3RpY29ucy9lbW90aWNvbl9ncmluLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvZW1vdGljb25zL2Vtb3RpY29uX2hhcHB5LnBuZyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy9lbW90aWNvbnMvZW1vdGljb25faGFwcHkucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiNzMzNmUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvZW1vdGljb25zL2Vtb3RpY29uX2hhcHB5LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvZW1vdGljb25zL2Vtb3RpY29uX3NtaWxlLnBuZyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy9lbW90aWNvbnMvZW1vdGljb25fc21pbGUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkZTQzMTgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvZW1vdGljb25zL2Vtb3RpY29uX3NtaWxlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvZW1vdGljb25zL2Vtb3RpY29uX3N1cnByaXNlZC5wbmcgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvZW1vdGljb25zL2Vtb3RpY29uX3N1cnByaXNlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDUyMGNmYwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy9lbW90aWNvbnMvZW1vdGljb25fc3VycHJpc2VkLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvZW1vdGljb25zL2Vtb3RpY29uX3Rvbmd1ZS5wbmcgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvZW1vdGljb25zL2Vtb3RpY29uX3Rvbmd1ZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWNhZmQyZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy9lbW90aWNvbnMvZW1vdGljb25fdG9uZ3VlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvZW1vdGljb25zL2Vtb3RpY29uX3VuaGFwcHkucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL2Vtb3RpY29ucy9lbW90aWNvbl91bmhhcHB5LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDVkMDMwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL2Vtb3RpY29ucy9lbW90aWNvbl91bmhhcHB5LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvZW1vdGljb25zL2Vtb3RpY29uX3dpbmsucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL2Vtb3RpY29ucy9lbW90aWNvbl93aW5rLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjMxOTQ5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL2Vtb3RpY29ucy9lbW90aWNvbl93aW5rLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2F1dGgvaWNvbl9mYWNlYm9vay5wbmcgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2F1dGgvaWNvbl9mYWNlYm9vay5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTBmNjY3YwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvYXV0aC9pY29uX2ZhY2Vib29rLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2NvbmZlcmVuY2UvZXhpdF9idXR0b24uZmxhIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS9jb25mZXJlbmNlL2V4aXRfYnV0dG9uLmZsYQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDg5NTRmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS9jb25mZXJlbmNlL2V4aXRfYnV0dG9uLmZsYQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2NvbmZlcmVuY2UvZXhpdF9idXR0b24ucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS9jb25mZXJlbmNlL2V4aXRfYnV0dG9uLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjM0Yzk5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS9jb25mZXJlbmNlL2V4aXRfYnV0dG9uLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2NvbmZlcmVuY2UvZm9sZGVyX2V4cGxvcmUucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS9jb25mZXJlbmNlL2ZvbGRlcl9leHBsb3JlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYmE5MzkxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS9jb25mZXJlbmNlL2ZvbGRlcl9leHBsb3JlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2NvbmZlcmVuY2UvZ3JvdXAucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS9jb25mZXJlbmNlL2dyb3VwLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZmI0ZTFmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS9jb25mZXJlbmNlL2dyb3VwLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2Rhc2hib2FyZC9jb21tZW50cy5wbmcgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2Rhc2hib2FyZC9jb21tZW50cy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk0MzNjZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvZGFzaGJvYXJkL2NvbW1lbnRzLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2Rhc2hib2FyZC9jb25mZXJlbmNlX2ljb25fbm9ybWFsLmZsYSBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvZGFzaGJvYXJkL2NvbmZlcmVuY2VfaWNvbl9ub3JtYWwuZmxhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFmMDEzZjIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2Rhc2hib2FyZC9jb25mZXJlbmNlX2ljb25fbm9ybWFsLmZsYQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2Rhc2hib2FyZC9jb25mZXJlbmNlX2ljb25fbm9ybWFsLnBuZyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvZGFzaGJvYXJkL2NvbmZlcmVuY2VfaWNvbl9ub3JtYWwucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0ZDQ1MGQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2Rhc2hib2FyZC9jb25mZXJlbmNlX2ljb25fbm9ybWFsLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2Rhc2hib2FyZC9mZWVkLnBuZyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvZGFzaGJvYXJkL2ZlZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxNWM0ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2Rhc2hib2FyZC9mZWVkLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2Rhc2hib2FyZC93aXp6YXJkX2J1dHRvbl8xLmZsYSBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvZGFzaGJvYXJkL3dpenphcmRfYnV0dG9uXzEuZmxhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5N2ZmNmIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2Rhc2hib2FyZC93aXp6YXJkX2J1dHRvbl8xLmZsYQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2Rhc2hib2FyZC93aXp6YXJkX2J1dHRvbl8xLnBuZyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvZGFzaGJvYXJkL3dpenphcmRfYnV0dG9uXzEucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhM2E3ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2Rhc2hib2FyZC93aXp6YXJkX2J1dHRvbl8xLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2Rhc2hib2FyZC93aXp6YXJkX2J1dHRvbl8yLmZsYSBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvZGFzaGJvYXJkL3dpenphcmRfYnV0dG9uXzIuZmxhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhYTgwZjEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2Rhc2hib2FyZC93aXp6YXJkX2J1dHRvbl8yLmZsYQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2Rhc2hib2FyZC93aXp6YXJkX2J1dHRvbl8yLnBuZyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvZGFzaGJvYXJkL3dpenphcmRfYnV0dG9uXzIucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1ZWI2MGUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2Rhc2hib2FyZC93aXp6YXJkX2J1dHRvbl8yLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2Rhc2hib2FyZC93aXp6YXJkX2J1dHRvbl8zLmZsYSBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvZGFzaGJvYXJkL3dpenphcmRfYnV0dG9uXzMuZmxhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwMDU0MjAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2Rhc2hib2FyZC93aXp6YXJkX2J1dHRvbl8zLmZsYQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2Rhc2hib2FyZC93aXp6YXJkX2J1dHRvbl8zLnBuZyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvZGFzaGJvYXJkL3dpenphcmRfYnV0dG9uXzMucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNjNjgzMjAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2Rhc2hib2FyZC93aXp6YXJkX2J1dHRvbl8zLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2Rhc2hib2FyZC93aXp6YXJkX2J1dHRvbl80LmZsYSBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvZGFzaGJvYXJkL3dpenphcmRfYnV0dG9uXzQuZmxhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwODhhNjQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2Rhc2hib2FyZC93aXp6YXJkX2J1dHRvbl80LmZsYQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2Rhc2hib2FyZC93aXp6YXJkX2J1dHRvbl80LnBuZyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvZGFzaGJvYXJkL3dpenphcmRfYnV0dG9uXzQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyOGI4NWMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2Rhc2hib2FyZC93aXp6YXJkX2J1dHRvbl80LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvYWRkLnBuZyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvZ2VuZXJhbC9hZGQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzMzJmZWYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvYWRkLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvYXJyb3dfcmVmcmVzaF9zbWFsbC5wbmcgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvYXJyb3dfcmVmcmVzaF9zbWFsbC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDMwODdkZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvZ2VuZXJhbC9hcnJvd19yZWZyZXNoX3NtYWxsLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvY2FsZW5kYXJfdmlld193ZWVrLnBuZyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvZ2VuZXJhbC9jYWxlbmRhcl92aWV3X3dlZWsucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmZTY5NWYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvY2FsZW5kYXJfdmlld193ZWVrLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvY2FuY2VsX2ljb24uZmxhIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS9nZW5lcmFsL2NhbmNlbF9pY29uLmZsYQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lY2M0OThkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS9nZW5lcmFsL2NhbmNlbF9pY29uLmZsYQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvY2FuY2VsX2ljb24ucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS9nZW5lcmFsL2NhbmNlbF9pY29uLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDI2MDYyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS9nZW5lcmFsL2NhbmNlbF9pY29uLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvY2FuY2VsX2ljb25fc21hbGwuZmxhIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS9nZW5lcmFsL2NhbmNlbF9pY29uX3NtYWxsLmZsYQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYmQzMjU4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS9nZW5lcmFsL2NhbmNlbF9pY29uX3NtYWxsLmZsYQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvY2FuY2VsX2ljb25fc21hbGwucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS9nZW5lcmFsL2NhbmNlbF9pY29uX3NtYWxsLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjdlNmMyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS9nZW5lcmFsL2NhbmNlbF9pY29uX3NtYWxsLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvY29sb3Jfc3dhdGNoLnBuZyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvZ2VuZXJhbC9jb2xvcl9zd2F0Y2gucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlNmU4NTIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvY29sb3Jfc3dhdGNoLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvZGlzay5wbmcgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvZGlzay5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTlkNTMyZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvZ2VuZXJhbC9kaXNrLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvZXJyb3IucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS9nZW5lcmFsL2Vycm9yLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MjhjZjJkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS9nZW5lcmFsL2Vycm9yLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvaW5mb3JtYXRpb24ucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS9nZW5lcmFsL2luZm9ybWF0aW9uLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMmNkMWFlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS9nZW5lcmFsL2luZm9ybWF0aW9uLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvbG9nby5wbmcgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvbG9nby5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQ3YTNiYwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvZ2VuZXJhbC9sb2dvLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvcGx1c19pY29uLmZsYSBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvZ2VuZXJhbC9wbHVzX2ljb24uZmxhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhYzExZWQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvcGx1c19pY29uLmZsYQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvcGx1c19pY29uLnBuZyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvZ2VuZXJhbC9wbHVzX2ljb24ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjZWMyOTEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvcGx1c19pY29uLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvcmVzdWx0c2V0X2Rvd24ucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS9nZW5lcmFsL3Jlc3VsdHNldF9kb3duLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDY5NjQyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS9nZW5lcmFsL3Jlc3VsdHNldF9kb3duLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvcmVzdWx0c2V0X2ZpcnN0LnBuZyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvZ2VuZXJhbC9yZXN1bHRzZXRfZmlyc3QucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwM2VhZjgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvcmVzdWx0c2V0X2ZpcnN0LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvcmVzdWx0c2V0X2xhc3QucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS9nZW5lcmFsL3Jlc3VsdHNldF9sYXN0LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZWM4OTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS9nZW5lcmFsL3Jlc3VsdHNldF9sYXN0LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvcmVzdWx0c2V0X25leHQucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS9nZW5lcmFsL3Jlc3VsdHNldF9uZXh0LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjUyNjA2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS9nZW5lcmFsL3Jlc3VsdHNldF9uZXh0LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvcmVzdWx0c2V0X3ByZXZpb3VzLnBuZyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvZ2VuZXJhbC9yZXN1bHRzZXRfcHJldmlvdXMucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4ZjljYzEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvcmVzdWx0c2V0X3ByZXZpb3VzLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvcmVzdWx0c2V0X3VwLnBuZyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvZ2VuZXJhbC9yZXN1bHRzZXRfdXAucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxMjE0ODEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvcmVzdWx0c2V0X3VwLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvc3R5bGUucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS9nZW5lcmFsL3N0eWxlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MWU0MWRlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS9nZW5lcmFsL3N0eWxlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvdGV4dF9ib2xkLnBuZyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvZ2VuZXJhbC90ZXh0X2JvbGQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4OWFlODAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvdGV4dF9ib2xkLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvdGV4dF9pdGFsaWMucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS9nZW5lcmFsL3RleHRfaXRhbGljLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDgyYWM4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS9nZW5lcmFsL3RleHRfaXRhbGljLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvdGV4dF91bmRlcmxpbmUucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS9nZW5lcmFsL3RleHRfdW5kZXJsaW5lLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MGQwZGYyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS9nZW5lcmFsL3RleHRfdW5kZXJsaW5lLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvd29ybGRfbGluay5wbmcgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvd29ybGRfbGluay5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjhlZGMxMgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvZ2VuZXJhbC93b3JsZF9saW5rLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvYXJyb3dfY3Vyc29yX3Rvb2wucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS93aGl0ZWJvYXJkL2Fycm93X2N1cnNvcl90b29sLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOWYzMTY5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS93aGl0ZWJvYXJkL2Fycm93X2N1cnNvcl90b29sLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvYXJyb3dfcm90YXRlX2FudGljbG9ja3dpc2UucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS93aGl0ZWJvYXJkL2Fycm93X3JvdGF0ZV9hbnRpY2xvY2t3aXNlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NmM3NWFhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS93aGl0ZWJvYXJkL2Fycm93X3JvdGF0ZV9hbnRpY2xvY2t3aXNlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvYXJyb3dfcm90YXRlX2Nsb2Nrd2lzZS5wbmcgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvYXJyb3dfcm90YXRlX2Nsb2Nrd2lzZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWE2NTIxMAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvd2hpdGVib2FyZC9hcnJvd19yb3RhdGVfY2xvY2t3aXNlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvY2FuY2VsLnBuZyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvd2hpdGVib2FyZC9jYW5jZWwucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxNDljMmIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvY2FuY2VsLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvZGVsZXRlX2FsbC5mbGEgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvZGVsZXRlX2FsbC5mbGEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFmZTdlMwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvd2hpdGVib2FyZC9kZWxldGVfYWxsLmZsYQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvZGVsZXRlX2FsbC5wbmcgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvZGVsZXRlX2FsbC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2U0MmMwNwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvd2hpdGVib2FyZC9kZWxldGVfYWxsLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvZG9jX2ZpcnN0LmZsYSBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvd2hpdGVib2FyZC9kb2NfZmlyc3QuZmxhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwYjQ5ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvZG9jX2ZpcnN0LmZsYQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvZG9jX2ZpcnN0LnBuZyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvd2hpdGVib2FyZC9kb2NfZmlyc3QucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxZTVhYzkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvZG9jX2ZpcnN0LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvZG9jX2xhc3QuZmxhIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS93aGl0ZWJvYXJkL2RvY19sYXN0LmZsYQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDRkNTM2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS93aGl0ZWJvYXJkL2RvY19sYXN0LmZsYQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvZG9jX2xhc3QucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS93aGl0ZWJvYXJkL2RvY19sYXN0LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZWYzMDU2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS93aGl0ZWJvYXJkL2RvY19sYXN0LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvZG9jX25leHQuZmxhIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS93aGl0ZWJvYXJkL2RvY19uZXh0LmZsYQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOWVhNWNiCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS93aGl0ZWJvYXJkL2RvY19uZXh0LmZsYQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvZG9jX25leHQucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS93aGl0ZWJvYXJkL2RvY19uZXh0LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Y2VkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS93aGl0ZWJvYXJkL2RvY19uZXh0LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvZG9jX3ByZS5mbGEgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvZG9jX3ByZS5mbGEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzA1MDE2OAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvd2hpdGVib2FyZC9kb2NfcHJlLmZsYQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvZG9jX3ByZS5wbmcgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvZG9jX3ByZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjk3NGVjNgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvd2hpdGVib2FyZC9kb2NfcHJlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvZHJhd2Fycm93aWNvbi5wbmcgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvZHJhd2Fycm93aWNvbi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGU3M2NiNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvd2hpdGVib2FyZC9kcmF3YXJyb3dpY29uLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvZWxsaXBzZS5mbGEgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvZWxsaXBzZS5mbGEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQzNzQ2MQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvd2hpdGVib2FyZC9lbGxpcHNlLmZsYQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvZWxsaXBzZS5wbmcgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvZWxsaXBzZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWNjNTFmMwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvd2hpdGVib2FyZC9lbGxpcHNlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvbGV0dGVyLmZsYSBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvd2hpdGVib2FyZC9sZXR0ZXIuZmxhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxYWJhOGUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvbGV0dGVyLmZsYQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvbGV0dGVyLnBuZyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvd2hpdGVib2FyZC9sZXR0ZXIucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViMDM2ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvbGV0dGVyLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvbGluZS5wbmcgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvbGluZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTBiNDIwYQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvd2hpdGVib2FyZC9saW5lLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvbG9jay5wbmcgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvbG9jay5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmViYzRmNgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvd2hpdGVib2FyZC9sb2NrLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvbG9ja19vcGVuLnBuZyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvd2hpdGVib2FyZC9sb2NrX29wZW4ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0NzE3NjUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvbG9ja19vcGVuLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvbWVudXBvaW50ZXIucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS93aGl0ZWJvYXJkL21lbnVwb2ludGVyLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODAzMWY2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS93aGl0ZWJvYXJkL21lbnVwb2ludGVyLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvcGFnZV9kZWxldGUucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS93aGl0ZWJvYXJkL3BhZ2VfZGVsZXRlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMTQxNDY3Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS93aGl0ZWJvYXJkL3BhZ2VfZGVsZXRlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvcGFpbnRjYW4ucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS93aGl0ZWJvYXJkL3BhaW50Y2FuLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODJhODg2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS93aGl0ZWJvYXJkL3BhaW50Y2FuLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvcGVuY2lsLnBuZyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvd2hpdGVib2FyZC9wZW5jaWwucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiZmVjZDUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvcGVuY2lsLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvcG9pbnRlcldoaXRlQm9hcmRfbWVudV9yc2MuZmxhIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS93aGl0ZWJvYXJkL3BvaW50ZXJXaGl0ZUJvYXJkX21lbnVfcnNjLmZsYQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lY2Q5YmZjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS93aGl0ZWJvYXJkL3BvaW50ZXJXaGl0ZUJvYXJkX21lbnVfcnNjLmZsYQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvcG9pbnRlcldoaXRlQm9hcmRfbWVudV9yc2MucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS93aGl0ZWJvYXJkL3BvaW50ZXJXaGl0ZUJvYXJkX21lbnVfcnNjLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTNlZTMwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS93aGl0ZWJvYXJkL3BvaW50ZXJXaGl0ZUJvYXJkX21lbnVfcnNjLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvcmVjdGFuZ2xlLmZsYSBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvd2hpdGVib2FyZC9yZWN0YW5nbGUuZmxhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5MDM4ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvcmVjdGFuZ2xlLmZsYQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvcmVjdGFuZ2xlLnBuZyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3B1YmxpYy90aGVtZXMvYmFzaWMtdGhlbWUvd2hpdGVib2FyZC9yZWN0YW5nbGUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiNzk5ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvcmVjdGFuZ2xlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvdGV4dF9zaWduYXR1cmUucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS93aGl0ZWJvYXJkL3RleHRfc2lnbmF0dXJlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzJmZDgwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS93aGl0ZWJvYXJkL3RleHRfc2lnbmF0dXJlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL3doaXRlYm9hcmQvdWxpbmUucG5nIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS93aGl0ZWJvYXJkL3VsaW5lLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjkxNGYwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvcHVibGljL3RoZW1lcy9iYXNpYy10aGVtZS93aGl0ZWJvYXJkL3VsaW5lLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9zdHJlYW1zL2hpYmVybmF0ZS9kZWZhdWx0X2ludGVydmlld19pbWFnZS5mbGEgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9zdHJlYW1zL2hpYmVybmF0ZS9kZWZhdWx0X2ludGVydmlld19pbWFnZS5mbGEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzEzOThkYwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3N0cmVhbXMvaGliZXJuYXRlL2RlZmF1bHRfaW50ZXJ2aWV3X2ltYWdlLmZsYQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9zdHJlYW1zL2hpYmVybmF0ZS9kZWZhdWx0X2ludGVydmlld19pbWFnZS5qcGcgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9zdHJlYW1zL2hpYmVybmF0ZS9kZWZhdWx0X2ludGVydmlld19pbWFnZS5qcGcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGIwZjI2YgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3N0cmVhbXMvaGliZXJuYXRlL2RlZmF1bHRfaW50ZXJ2aWV3X2ltYWdlLmpwZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9zdHJlYW1zL2hpYmVybmF0ZS9kZWZhdWx0X2ludGVydmlld19pbWFnZS5wbmcgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9zdHJlYW1zL2hpYmVybmF0ZS9kZWZhdWx0X2ludGVydmlld19pbWFnZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg3ZDY0MAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3N0cmVhbXMvaGliZXJuYXRlL2RlZmF1bHRfaW50ZXJ2aWV3X2ltYWdlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9zdHJlYW1zL2hpYmVybmF0ZS9vbmVfc2Vjb25kLndhdiBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3N0cmVhbXMvaGliZXJuYXRlL29uZV9zZWNvbmQud2F2Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0ZDI2MmEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9zdHJlYW1zL2hpYmVybmF0ZS9vbmVfc2Vjb25kLndhdgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L29wZW5tZWV0aW5ncy90aGVtZS54c2QgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy90aGVtZS54c2QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzdhMTg4NQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzL3RoZW1lLnhzZApAQCAtMCwwICsxLDQ1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0NCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgIA0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAgICAJICANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAgdW5kZXIgdGhlIExpY2Vuc2UuDQorICANCistLT4NCis8eHM6c2NoZW1hIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiPg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0idGhlbWUiPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOnNlcXVlbmNlPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iY29sb3IiLz4NCisgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InJlc291cmNlIi8+DQorICAgICAgPC94czpzZXF1ZW5jZT4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9ImNvbG9yIj4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGVzY3JpcHRpb24iIHVzZT0icmVxdWlyZWQiLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOk5DTmFtZSIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmFsdWUiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOk5NVE9LRU4iLz4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9InJlc291cmNlIj4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGVzY3JpcHRpb24iIHVzZT0icmVxdWlyZWQiLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxpY2Vuc2UiIHVzZT0icmVxdWlyZWQiLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOk5DTmFtZSIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3JjIiB1c2U9InJlcXVpcmVkIi8+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorPC94czpzY2hlbWE+DQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9vcGVubWVldGluZ3MvdXBsb2FkL2xpYnJhcnkueG1sIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvdXBsb2FkL2xpYnJhcnkueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5NGJlMjMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy91cGxvYWQvbGlicmFyeS54bWwKQEAgLTAsMCArMSwyMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxwcmVzZW50YXRpb24geG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgCisgICAgeHNpOm5vTmFtZXNwYWNlU2NoZW1hTG9jYXRpb249ImxpYnJhcnkueHNkIj48b3JpZ2luYWxEb2N1bWVudCBsYXN0bW9kPSIxMTg1NDYxODE0MDAwIiBzaXplPSIyNDAyMzMiPlR1dG9yYXQucGRmPC9vcmlnaW5hbERvY3VtZW50Pjxzd2ZEb2N1bWVudCBsYXN0bW9kPSIxMTg1NDYxODE0MDAwIiBzaXplPSIyNDAyMzMiPlR1dG9yYXQuc3dmPC9zd2ZEb2N1bWVudD48dGh1bWJzPjx0aHVtYiBsYXN0bW9kPSIxMTg1NDYxODEzMDAwIiBzaXplPSIzOTk4Ij5fdGh1bWJfcGFnZXMtMDAwLmpwZzwvdGh1bWI+PHRodW1iIGxhc3Rtb2Q9IjExODU0NjE4MTMwMDAiIHNpemU9IjM4NTUiPl90aHVtYl9wYWdlcy0wMDEuanBnPC90aHVtYj48dGh1bWIgbGFzdG1vZD0iMTE4NTQ2MTgxMzAwMCIgc2l6ZT0iNDMwNiI+X3RodW1iX3BhZ2VzLTAwMi5qcGc8L3RodW1iPjx0aHVtYiBsYXN0bW9kPSIxMTg1NDYxODEzMDAwIiBzaXplPSIzNzQ3Ij5fdGh1bWJfcGFnZXMtMDAzLmpwZzwvdGh1bWI+PHRodW1iIGxhc3Rtb2Q9IjExODU0NjE4MTMwMDAiIHNpemU9IjMxNjIiPl90aHVtYl9wYWdlcy0wMDQuanBnPC90aHVtYj48dGh1bWIgbGFzdG1vZD0iMTE4NTQ2MTgxMzAwMCIgc2l6ZT0iMzIzMiI+X3RodW1iX3BhZ2VzLTAwNS5qcGc8L3RodW1iPjx0aHVtYiBsYXN0bW9kPSIxMTg1NDYxODEzMDAwIiBzaXplPSIyOTgxIj5fdGh1bWJfcGFnZXMtMDA2LmpwZzwvdGh1bWI+PHRodW1iIGxhc3Rtb2Q9IjExODU0NjE4MTMwMDAiIHNpemU9IjMxMjYiPl90aHVtYl9wYWdlcy0wMDcuanBnPC90aHVtYj48dGh1bWIgbGFzdG1vZD0iMTE4NTQ2MTgxMzAwMCIgc2l6ZT0iNDQ1NyI+X3RodW1iX3BhZ2VzLTAwOC5qcGc8L3RodW1iPjx0aHVtYiBsYXN0bW9kPSIxMTg1NDYxODEzMDAwIiBzaXplPSI0MjY0Ij5fdGh1bWJfcGFnZXMtMDA5LmpwZzwvdGh1bWI+PHRodW1iIGxhc3Rtb2Q9IjExODU0NjE4MTMwMDAiIHNpemU9IjQyNjMiPl90aHVtYl9wYWdlcy0wMTAuanBnPC90aHVtYj48dGh1bWIgbGFzdG1vZD0iMTE4NTQ2MTgxMzAwMCIgc2l6ZT0iMzc3MCI+X3RodW1iX3BhZ2VzLTAxMS5qcGc8L3RodW1iPjx0aHVtYiBsYXN0bW9kPSIxMTg1NDYxODEzMDAwIiBzaXplPSIzMzU0Ij5fdGh1bWJfcGFnZXMtMDEyLmpwZzwvdGh1bWI+PHRodW1iIGxhc3Rtb2Q9IjExODU0NjE4MTMwMDAiIHNpemU9IjMwMDYiPl90aHVtYl9wYWdlcy0wMTMuanBnPC90aHVtYj48dGh1bWIgbGFzdG1vZD0iMTE4NTQ2MTgxMzAwMCIgc2l6ZT0iMzk3MiI+X3RodW1iX3BhZ2VzLTAxNC5qcGc8L3RodW1iPjx0aHVtYiBsYXN0bW9kPSIxMTg1NDYxODEzMDAwIiBzaXplPSI0MzUzIj5fdGh1bWJfcGFnZXMtMDE1LmpwZzwvdGh1bWI+PHRodW1iIGxhc3Rtb2Q9IjExODU0NjE4MTMwMDAiIHNpemU9IjQxODQiPl90aHVtYl9wYWdlcy0wMTYuanBnPC90aHVtYj48dGh1bWIgbGFzdG1vZD0iMTE4NTQ2MTgxMzAwMCIgc2l6ZT0iNDAyMSI+X3RodW1iX3BhZ2VzLTAxNy5qcGc8L3RodW1iPjx0aHVtYiBsYXN0bW9kPSIxMTg1NDYxODEzMDAwIiBzaXplPSIzMjI1Ij5fdGh1bWJfcGFnZXMtMDE4LmpwZzwvdGh1bWI+PHRodW1iIGxhc3Rtb2Q9IjExODU0NjE4MTMwMDAiIHNpemU9IjM4NDciPl90aHVtYl9wYWdlcy0wMTkuanBnPC90aHVtYj48dGh1bWIgbGFzdG1vZD0iMTE4NTQ2MTgxMzAwMCIgc2l6ZT0iMzA0NiI+X3RodW1iX3BhZ2VzLTAyMC5qcGc8L3RodW1iPjx0aHVtYiBsYXN0bW9kPSIxMTg1NDYxODEzMDAwIiBzaXplPSIyNjMzIj5fdGh1bWJfcGFnZXMtMDIxLmpwZzwvdGh1bWI+PHRodW1iIGxhc3Rtb2Q9IjExODU0NjE4MTMwMDAiIHNpemU9IjQwMDEiPl90aHVtYl9wYWdlcy0wMjIuanBnPC90aHVtYj48dGh1bWIgbGFzdG1vZD0iMTE4NTQ2MTgxMzAwMCIgc2l6ZT0iNDI0MyI+X3RodW1iX3BhZ2VzLTAyMy5qcGc8L3RodW1iPjwvdGh1bWJzPjwvcHJlc2VudGF0aW9uPgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9vcGVubWVldGluZ3MvdXBsb2FkL2xpYnJhcnkueHNkIGIvV2ViQ29udGVudC9vcGVubWVldGluZ3MvdXBsb2FkL2xpYnJhcnkueHNkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxZjJiN2QKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L29wZW5tZWV0aW5ncy91cGxvYWQvbGlicmFyeS54c2QKQEAgLTAsMCArMSw2OCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPHhzOnNjaGVtYSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIj4NCisgIDx4czplbGVtZW50IG5hbWU9InByZXNlbnRhdGlvbiI+DQorICAgIDx4czpjb21wbGV4VHlwZT4NCisgICAgICA8eHM6c2VxdWVuY2U+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9Im9yaWdpbmFsRG9jdW1lbnQiLz4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0ic3dmRG9jdW1lbnQiLz4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0idGh1bWJzIi8+DQorICAgICAgPC94czpzZXF1ZW5jZT4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9Im9yaWdpbmFsRG9jdW1lbnQiPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+DQorICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InhzOk5DTmFtZSI+DQorICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFzdG1vZCIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6aW50ZWdlciIvPg0KKyAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNpemUiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOmludGVnZXIiLz4NCisgICAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KKyAgICAgIDwveHM6c2ltcGxlQ29udGVudD4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9InN3ZkRvY3VtZW50Ij4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czpzaW1wbGVDb250ZW50Pg0KKyAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ4czpOQ05hbWUiPg0KKyAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imxhc3Rtb2QiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOmludGVnZXIiLz4NCisgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzaXplIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czppbnRlZ2VyIi8+DQorICAgICAgICA8L3hzOmV4dGVuc2lvbj4NCisgICAgICA8L3hzOnNpbXBsZUNvbnRlbnQ+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJ0aHVtYnMiPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOnNlcXVlbmNlPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idGh1bWIiLz4NCisgICAgICA8L3hzOnNlcXVlbmNlPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0idGh1bWIiPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOnNpbXBsZUNvbnRlbnQ+DQorICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InhzOk5DTmFtZSI+DQorICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFzdG1vZCIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6aW50ZWdlciIvPg0KKyAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNpemUiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOmludGVnZXIiLz4NCisgICAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KKyAgICAgIDwveHM6c2ltcGxlQ29udGVudD4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCis8L3hzOnNjaGVtYT4NCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3Byb2plY3QueHNkIGIvV2ViQ29udGVudC9wcm9qZWN0LnhzZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NDYwNTNkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9wcm9qZWN0LnhzZApAQCAtMCwwICsxLDk4MDQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPHhzOnNjaGVtYSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIiAKKyAgdGFyZ2V0TmFtZXNwYWNlPSJodHRwOi8vbG9jYWxob3N0L29wZW5sYXN6bG8vcHJvamVjdCIgCisgIHhtbG5zOmx6eD0iaHR0cDovL2xvY2FsaG9zdC9vcGVubGFzemxvL2x6eCIgCisgIHhtbG5zOnByb2plY3Q9Imh0dHA6Ly9sb2NhbGhvc3Qvb3Blbmxhc3psby9wcm9qZWN0Ij4KKzx4czppbXBvcnQgbmFtZXNwYWNlPSJodHRwOi8vbG9jYWxob3N0L29wZW5sYXN6bG8vbHp4IiBzY2hlbWFMb2NhdGlvbj0ibHp4LnhzZCIvPjx4czplbGVtZW50IG5hbWU9InJlc3VsdFBvbGxXaW4iIHR5cGU9InByb2plY3Q6cmVzdWx0UG9sbFdpbiIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0icmVzdWx0UG9sbFdpbiIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpsYWJlbEV4cGxvcmVyQm94Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm9vbVBvbGwiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlc3VsdHBvbGx2b3RlcyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGlzcGxheWVkUG9sbCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYXJjaFBvbGxzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImlubmVyTGlzdFBhZ2luZ0NvbnRlbnQiIHR5cGU9InByb2plY3Q6aW5uZXJMaXN0UGFnaW5nQ29udGVudCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iaW5uZXJMaXN0UGFnaW5nQ29udGVudCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJhc2VEYXRlU2VsZWN0b3IiIHR5cGU9InByb2plY3Q6YmFzZURhdGVTZWxlY3RvciIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYmFzZURhdGVTZWxlY3RvciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpiYXNlRGF0ZVNlbGVjdG9yQ29tcG9uZW50Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ieWVhciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWxlY3RlZGRhdGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlbGVjdGVkIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbnllYXJTZWwiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uc2VsZWN0IiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbm1vbnRoU2VsIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmRvdWJsZXNlbGVjdCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibW9udGhuYW1lcyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJbJ0phbnVhcicsJ0ZlYnJ1YXInLCdNYWVyeicsJ0FwcmlsJywnTWFpJywnSnVuaScsJ0p1bGknLCdBdWd1c3QnLCdTZXB0ZW1iZXInLCdPa3RvYmVyJywnTm92ZW1iZXInLCdEZXplbWJlciddIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmlyc3RkYXlpbndlZWsiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IiRvbmNleyBjYW52YXMuZmlyc3RkYXlpbndlZWsgfSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRheU5hbWVzTGFiZWxJZHMiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRheUxhYmVsTmFtZXNMYWJlbElkcyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJsYWJlbGVkVGFicGFuZSIgdHlwZT0icHJvamVjdDpsYWJlbGVkVGFicGFuZSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibGFiZWxlZFRhYnBhbmUiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp0YWJwYW5lIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZCIgdHlwZT0ibHp4Om51bWJlciIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZWRpdFJlY29yZFN0cmVhbSIgdHlwZT0icHJvamVjdDplZGl0UmVjb3JkU3RyZWFtIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJlZGl0UmVjb3JkU3RyZWFtIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmxhYmVsRXhwbG9yZXJCb3giPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZW1vdGVNZXNzYWdlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJteXZpZGVvY29udGFpbmVyIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc1N5bmNVcGRhdGUiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzSW50ZXJ2aWV3IiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkb0RlZmF1bHRBbmltYXRpb24iIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY3VycmVudENsaWVudCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hvc2VuU2V0dGluZyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hvc2VuTWljIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaG9zZW5DYW0iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iaG9yaXpvbnRhbE1lbnVJY29uQmFyUG9pbnRlciIgdHlwZT0icHJvamVjdDpob3Jpem9udGFsTWVudUljb25CYXJQb2ludGVyIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJob3Jpem9udGFsTWVudUljb25CYXJQb2ludGVyIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZXJyb3JQb3B1cCIgdHlwZT0icHJvamVjdDplcnJvclBvcHVwIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJlcnJvclBvcHVwIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmxhYmVsRXhwbG9yZXJCb3giPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtYWtlTW9kYWwiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVycm9yIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iaW1hZ2VGb3JTY3JlZW5WaWV3ZXIiIHR5cGU9InByb2plY3Q6aW1hZ2VGb3JTY3JlZW5WaWV3ZXIiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImltYWdlRm9yU2NyZWVuVmlld2VyIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6aW1hZ2UiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1c2VybmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb29tIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlZk9iaiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGFyZW50UGF0aCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtb2R1bGVOYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZpbGVOYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRvd25sb2FkdXJsIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRvbWFpbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJiYXNldXJsIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFsdGVyTW9kdXMiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ0ZXJtaW5hcmVhRm9yV2Vla1ZpZXciIHR5cGU9InByb2plY3Q6dGVybWluYXJlYUZvcldlZWtWaWV3IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0ZXJtaW5hcmVhRm9yV2Vla1ZpZXciIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGVybWluT2JqIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkZXNjcmlwdGlvbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb3VudFgiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjYWxlbmRlck9ialJlZiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJwcmV2aW91c05leHRCdXR0b24iIHR5cGU9InByb2plY3Q6cHJldmlvdXNOZXh0QnV0dG9uIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJwcmV2aW91c05leHRCdXR0b24iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6bGFiZWxFeHBsb3JlckJveCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlZk9iaiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib3JnYW5pc2F0aW9uX2lkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJkYXRlU2VsZWN0b3JEYXkiIHR5cGU9InByb2plY3Q6ZGF0ZVNlbGVjdG9yRGF5IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJkYXRlU2VsZWN0b3JEYXkiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZURhdGVTZWxlY3RvckNvbXBvbmVudCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRheWRhdGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iY29uZm1lbnVjb21tYW5kIiB0eXBlPSJwcm9qZWN0OmNvbmZtZW51Y29tbWFuZCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iY29uZm1lbnVjb21tYW5kIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6Y29tbWFuZCI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYmFzZU1lbnVTZXBlcmF0b3IiIHR5cGU9InByb2plY3Q6YmFzZU1lbnVTZXBlcmF0b3IiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImJhc2VNZW51U2VwZXJhdG9yIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iaW50ZXJ2aWV3TW9kZXJhdGlvbk1pbmlJY29ucyIgdHlwZT0icHJvamVjdDppbnRlcnZpZXdNb2RlcmF0aW9uTWluaUljb25zIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJpbnRlcnZpZXdNb2RlcmF0aW9uTWluaUljb25zIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzU3VwZXJNb2RlcmF0b3IiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzTW9kIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImNoYW5nZVdpZHRoTGV0dGVyU2xpZGVyIiB0eXBlPSJwcm9qZWN0OmNoYW5nZVdpZHRoTGV0dGVyU2xpZGVyIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJjaGFuZ2VXaWR0aExldHRlclNsaWRlciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpiYXNlUHJvcGVydHlTZWxlY3RvciI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRlbXBWYWx1ZSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iJG9uY2V7IHBhcmVudC5pbml0aWFsTnVtYmVyIH0iID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdGVwIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25wbHVzIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbm1pbnVzIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJudW1iZXJBbGlnbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJyaWdodCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1pbmltdW0iIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjQiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtYXhpbXVtIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxMDAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbml0aWFsTnVtYmVySW5pdCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImluaXRpYWxOdW1iZXIiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjEyIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJkcmF3Q2hvb3NlTW9kaXJQbGFpbiIgdHlwZT0icHJvamVjdDpkcmF3Q2hvb3NlTW9kaXJQbGFpbiIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iZHJhd0Nob29zZU1vZGlyUGxhaW4iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZUNob29zZUljb24iPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtb2RpIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzU2VsZWN0YWJsZW1vZGkiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0idG9vbFRpcEN1c3RvbVBpYyIgdHlwZT0icHJvamVjdDp0b29sVGlwQ3VzdG9tUGljIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0b29sVGlwQ3VzdG9tUGljIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dGV4dCI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ic2ltcGxlTGFiZWxCdXR0b25Ub29sdGlwIiB0eXBlPSJwcm9qZWN0OnNpbXBsZUxhYmVsQnV0dG9uVG9vbHRpcCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ic2ltcGxlTGFiZWxCdXR0b25Ub29sdGlwIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YnV0dG9uIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idG9vbHRpcElkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZCIgdHlwZT0ibHp4Om51bWJlciIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibWFpblRvb2xzTGVmdFBhbmVsIiB0eXBlPSJwcm9qZWN0Om1haW5Ub29sc0xlZnRQYW5lbCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibWFpblRvb2xzTGVmdFBhbmVsIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VMZWZ0UGFuZWwiPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Im1vZGVyYXRpb25NaW5pSWNvbnNFdmVudFVzZXJMaXN0IiB0eXBlPSJwcm9qZWN0Om1vZGVyYXRpb25NaW5pSWNvbnNFdmVudFVzZXJMaXN0IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJtb2RlcmF0aW9uTWluaUljb25zRXZlbnRVc2VyTGlzdCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzaG93QXZJY29ucyIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc0FjdGl2ZSIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImV2ZW50VXNlckxpc3RUYWJsZSIgdHlwZT0icHJvamVjdDpldmVudFVzZXJMaXN0VGFibGUiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImV2ZW50VXNlckxpc3RUYWJsZSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InVzZXJTdGF0dXMiIHR5cGU9InByb2plY3Q6dXNlclN0YXR1cyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idXNlclN0YXR1cyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdGF0dXNUZXh0IiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdGF0dXNDb2xvciIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0idGFibGVMaXN0SXRlbSIgdHlwZT0icHJvamVjdDp0YWJsZUxpc3RJdGVtIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0YWJsZUxpc3RJdGVtIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzZGF0YXJlY29yZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc2FsdGVyZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYW5nZWhvbGRlciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJiYXNlUGFnaW5nTGlzdEl0ZW0iIHR5cGU9InByb2plY3Q6YmFzZVBhZ2luZ0xpc3RJdGVtIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJiYXNlUGFnaW5nTGlzdEl0ZW0iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZUNvbnRlbnRMaXN0SXRlbSI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Iml0ZW1JZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iY3VzdG9tRWRpdHRleHQiIHR5cGU9InByb2plY3Q6Y3VzdG9tRWRpdHRleHQiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImN1c3RvbUVkaXR0ZXh0IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6ZWRpdHRleHQiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWdleHBUeXBlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im5vbmUiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWdleHBMYWJlbGlkIiB0eXBlPSJseng6bnVtYmVyIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icHJlVGV4dCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmFmdGVyQ2hlY2siIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxhYmVsaWQiIHR5cGU9Imx6eDpudW1iZXIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc3ZhbGlkSW5wdXQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ0ZXJtaW5kZXRhaWxzIiB0eXBlPSJwcm9qZWN0OnRlcm1pbmRldGFpbHMiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRlcm1pbmRldGFpbHMiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6bGFiZWxFeHBsb3JlckJveCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRlcm1pbk9ialJlZiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm9vbXR5cGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbnRhY3QiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJhc2VVcmwiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFycmF5TWVldGluZ01lbWJlciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYXBwb2ludG1lbnRJZCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJjaGFuZ2VXaWR0aFNsaWRlciIgdHlwZT0icHJvamVjdDpjaGFuZ2VXaWR0aFNsaWRlciIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iY2hhbmdlV2lkdGhTbGlkZXIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZVByb3BlcnR5U2VsZWN0b3IiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZW1wVmFsdWUiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IiRvbmNleyBwYXJlbnQuaW5pdGlhbE51bWJlciB9IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3RlcCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9ucGx1cyIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25taW51cyIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibnVtYmVyQWxpZ24iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0icmlnaHQiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtaW5pbXVtIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWF4aW11bSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMTAwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iNDI5IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW5pdGlhbE51bWJlckluaXQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjEiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbml0aWFsTnVtYmVyIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIzIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJjb25mZXJlbmNlQnJvd3NlciIgdHlwZT0icHJvamVjdDpjb25mZXJlbmNlQnJvd3NlciIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iY29uZmVyZW5jZUJyb3dzZXIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6bGFiZWxFeHBsb3JlckJveCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9iak1lc3NhZ2UiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImluaXRlZEJ5VXNlciIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbml0VVJMIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imlnbm9yZU5leHRFdmVudCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2FsbEJhY2tKU0RlbGVnYXRlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJicm93c2VyaGlzdG9yeVByZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYnJvd3Nlcmhpc3RvcnlQb3N0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImFjdGl2aXR5TGlzdFJlc3RyaWN0ZWRSb29tUmVtb3RlIiB0eXBlPSJwcm9qZWN0OmFjdGl2aXR5TGlzdFJlc3RyaWN0ZWRSb29tUmVtb3RlIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJhY3Rpdml0eUxpc3RSZXN0cmljdGVkUm9vbVJlbW90ZSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpiYXNlSXRlbUFjdGl2aXR5TGlzdCI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ic2VhcmNoQ29udGFjdCIgdHlwZT0icHJvamVjdDpzZWFyY2hDb250YWN0IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJzZWFyY2hDb250YWN0IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZvcm5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idXNlcklkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVmT2JqIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYWNobmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlbWFpbCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ0ZXN0aW5nQXBwbGljYXRpb24iIHR5cGU9InByb2plY3Q6dGVzdGluZ0FwcGxpY2F0aW9uIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0ZXN0aW5nQXBwbGljYXRpb24iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGltZXJJc1J1bm5pbmciIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlY29yZGluZ3NDb3VudGVyIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSI1IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFzdFJlY29yZGVkIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzUnVubmluZyIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY291bnRlckRlbGVnYXRlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InJvb21MaXN0SW52aXRlVXNlckl0ZW0iIHR5cGU9InByb2plY3Q6cm9vbUxpc3RJbnZpdGVVc2VySXRlbSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0icm9vbUxpc3RJbnZpdGVVc2VySXRlbSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1c2VyX2lkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3RhcnR0aW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvb21uYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvb21pZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvb21UeXBlIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm9vbUNsYXNzTmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJjb25mZXJlbmNlVmlldyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InB1YmxpY1NJRCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvYmoiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1heFVzZXJzIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSI0IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNwdWJsaWMiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzYXVkaWVuY2UiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImN1cnJlbnR1c2VycyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hlY2tGb3JNYXhVc2VycyIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJmaWxlRXhwbG9yZXIiIHR5cGU9InByb2plY3Q6ZmlsZUV4cGxvcmVyIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJmaWxlRXhwbG9yZXIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGFyZW50Rm9sZGVySWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9Ii0yIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25DbG9zZSIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNUcmFzaENhbiIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50VHJhY2tHcm91cE5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iZmlsZUV4cGxvcmVyIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY3VycmVudERyYWdJdGVtIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImVkaXRXaGl0ZWJvYXJkRGVmYXVsdCIgdHlwZT0icHJvamVjdDplZGl0V2hpdGVib2FyZERlZmF1bHQiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImVkaXRXaGl0ZWJvYXJkRGVmYXVsdCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpsYWJlbEV4cGxvcmVyQm94Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVmT2JqIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImlidXR0b24iIHR5cGU9InByb2plY3Q6aWJ1dHRvbiIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iaWJ1dHRvbiIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdmVyUnNyY051bWJlciIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5vcm1hbFJzcmNOdW1iZXIiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjEiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtb3VzZWlzZG93biIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxhYmVsIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRvd25Sc3JjTnVtYmVyIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIzIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJiYXNlQ29uZmVyZW5jZVJvb20iIHR5cGU9InByb2plY3Q6YmFzZUNvbmZlcmVuY2VSb29tIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJiYXNlQ29uZmVyZW5jZVJvb20iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZUNvbnRlbnRWaWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm9vbW9iaiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+CisJICA8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWVldGluZ1RpbWVyIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImV2ZW50VXNlckxpc3RJbm5lciIgdHlwZT0icHJvamVjdDpldmVudFVzZXJMaXN0SW5uZXIiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImV2ZW50VXNlckxpc3RJbm5lciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpiYXNlUm9vbUlubmVyTGlzdCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNvcnRUeXBlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImFscGhhYmV0aWNhbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlbGVjdGVkSXRlbSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGlzdFR5cGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iZXZlbnRVc2VyTGlzdFRhYmxlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ0dXJub3Zlcmxpc3RoZWFkZXJpdGVtUmVzaXplIiB0eXBlPSJwcm9qZWN0OnR1cm5vdmVybGlzdGhlYWRlcml0ZW1SZXNpemUiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InR1cm5vdmVybGlzdGhlYWRlcml0ZW1SZXNpemUiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzaWN0dXJub3Zlcmxpc3RoZWFkZXJpdGVtIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3Vidmlld3NpZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1pbndpZHRoIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIyIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWluaGVpZ2h0IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxMCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibW9udGhWaWV3IiB0eXBlPSJwcm9qZWN0Om1vbnRoVmlldyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibW9udGhWaWV3IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InllYXIiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0id2Vla2RheW5hbWVzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IlsnU28uJywnTW8uJywnRGkuJywnTWkuJywnRG8uJywnRnIuJywnU2EuJ10iID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzaG93aW5nZGF0ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWxlY3RlZGRhdGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1vbnRobmFtZXMiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iWydKYW51YXInLCdGZWJydWFyJywnTWFlcnonLCdBcHJpbCcsJ01haScsJ0p1bmknLCdKdWxpJywnQXVndXN0JywnU2VwdGVtYmVyJywnT2t0b2JlcicsJ05vdmVtYmVyJywnRGV6ZW1iZXInXSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZpcnN0ZGF5aW53ZWVrIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIkb25jZXsgY2FudmFzLmZpcnN0ZGF5aW53ZWVrIH0iID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkYXlOYW1lc0xhYmVsSWRzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkYXlMYWJlbE5hbWVzTGFiZWxJZHMiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibW9uaXRvckxpc3RJdGVtVmlldyIgdHlwZT0icHJvamVjdDptb25pdG9yTGlzdEl0ZW1WaWV3IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJtb25pdG9yTGlzdEl0ZW1WaWV3IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iY29uZmVyZW5jZU1lbnViYXIiIHR5cGU9InByb2plY3Q6Y29uZmVyZW5jZU1lbnViYXIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBNZW51IGZvciBwdWJsaWMvcHJpdmF0ZSBjb25mZXJlbmNlIGFuZCBhdWRpZW5jZSByb29tLiBUaGlzIGNsYXNzIHNob3dzIAorCQlleGl0LCBtb2RlcmF0b3IsIGZpbGUsIHNldHRlaW5ncyBhbmQgcG9sbCBtZW51LiBUaG9zZSBtZW51IGl0ZW1zIGFyZSBjb25uZWN0ZWQgCisJCXRvIGVhY2ggY29tbWFuZCB0aGF0IGhhcyBiZWVuIGRlY2xhcmVkIGluIGJhc2UvbWFpbk1ldGhvZHMubHp4LiBNYXkgMjQgMjAwOCAKKwkJY29tbWVudGVkIGJ5IG9ub2tlaWppQGdtYWlsLmNvbSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJjb25mZXJlbmNlTWVudWJhciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4Om1lbnViYXIiPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InZpZGVvQm9hcmQiIHR5cGU9InByb2plY3Q6dmlkZW9Cb2FyZCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idmlkZW9Cb2FyZCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpjb25mZXJlbmNlQm94Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJzcG9uc29yc1BvcFVwIiB0eXBlPSJwcm9qZWN0OnNwb25zb3JzUG9wVXAiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InNwb25zb3JzUG9wVXAiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6bGFiZWxFeHBsb3JlckJveCI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iY2hhdFRhYiIgdHlwZT0icHJvamVjdDpjaGF0VGFiIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisKK0NoYXQgdGFicGFuZSBjbGFzcy4gSXQgY29udGFpbnMgY2hhdE91dHB1dC1jbGFzcyBhbmQgY2F0VGFiQm90dG9tLWNsYXNzLgorVGhpcyBpcyB1c2VkIGluIHRoZSBjb25mZXJlbmNlLgorPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iY2hhdFRhYiIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpzaW1wbGVCYXNlVGFicGFuZSI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZWRpdFVzZXJQcm9maWxlIiB0eXBlPSJwcm9qZWN0OmVkaXRVc2VyUHJvZmlsZSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iZWRpdFVzZXJQcm9maWxlIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VDb250ZW50U2F2ZVZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1c2VyX2lkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idXNlck9iaiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VuZE9iamVjdCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ0dXJuT3Zlckxpc3RIZWFkZXJJdGVtIiB0eXBlPSJwcm9qZWN0OnR1cm5PdmVyTGlzdEhlYWRlckl0ZW0iID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InR1cm5PdmVyTGlzdEhlYWRlckl0ZW0iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6c2ltcGxlTGFiZWxCdXR0b24iPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdWJ2aWV3c2lkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJiYXNlUHJvcGVydHlTZWxlY3RvciIgdHlwZT0icHJvamVjdDpiYXNlUHJvcGVydHlTZWxlY3RvciIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYmFzZVByb3BlcnR5U2VsZWN0b3IiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNFbmFibGVkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVuYWJsZWRWaWV3IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJib3hQb3NpdGlvbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJkb3duIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgcG9zaXRpb24gb2YgdGhlIFNsaWRlcldpbiBvciBDb2xvclBpY2tlciA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJvdmVyQWxsQ2hhdE91dHB1dCIgdHlwZT0icHJvamVjdDpvdmVyQWxsQ2hhdE91dHB1dCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGNoYXQgb3V0cHV0IGFyZWEuIEl0IHNob3dzIGNoYXQgaGlzdG9yeSBvbi1pbml0LiAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ib3ZlckFsbENoYXRPdXRwdXQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJhbnN3ZXJQb2xsIiB0eXBlPSJwcm9qZWN0OmFuc3dlclBvbGwiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImFuc3dlclBvbGwiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6bGFiZWxFeHBsb3JlckJveCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvb21TY29wZU5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm9vbVBvbGxJZCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb29tUG9sbEFuc3dlckxpc3QiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icG9sbHZhbHVlIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icG9sbFR5cGVzSWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwb2xsVHlwZUlkIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBvbGxRdWVzdGlvbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwb2xsRGF0ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjcmVhdGVkQnkiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJkb2N1bWVudHNMb2FkZXJJY29uIiB0eXBlPSJwcm9qZWN0OmRvY3VtZW50c0xvYWRlckljb24iID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImRvY3VtZW50c0xvYWRlckljb24iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVzb3VyY2VOIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlZk9iaiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWx0ZXh0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imlzc2VsZWN0ZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0icmVtb3RlV2hpdGVib2FyZCIgdHlwZT0icHJvamVjdDpyZW1vdGVXaGl0ZWJvYXJkIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJyZW1vdGVXaGl0ZWJvYXJkIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VEcmF3U2F2ZSI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVuaXF1ZU9iamVjdFN5bmNOYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxvYWRpbmdPYmplY3RMaXN0SWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsb2FkaW5nT2JqZWN0TGlzdCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibG9hZE9iamVjdERlbGVnYXRlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc1N0YXJ0aW5nIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmaWxlRXhwbG9yZXJJdGVtSWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImRyYXdQYWludFRvb2xzIiB0eXBlPSJwcm9qZWN0OmRyYXdQYWludFRvb2xzIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJkcmF3UGFpbnRUb29scyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InNoYXJlZE9iamVjdCIgdHlwZT0icHJvamVjdDpzaGFyZWRPYmplY3QiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InNoYXJlZE9iamVjdCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4Om5vZGUiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzbyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25TdGF0dXMiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibW9uaXRvckxpc3QiIHR5cGU9InByb2plY3Q6bW9uaXRvckxpc3QiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Im1vbml0b3JMaXN0IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlbGVjdGVkIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbnNlbGVjdCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZG91YmxlY2xpY2tFdmVudCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJsaXN0UHJlc2VudGF0aW9uRmlsZVBERiIgdHlwZT0icHJvamVjdDpsaXN0UHJlc2VudGF0aW9uRmlsZVBERiIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibGlzdFByZXNlbnRhdGlvbkZpbGVQREYiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZUxpc3RQcmVzZW50YXRpb25JdGVtIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3dmTmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGRmbmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJjb25mQWRtaW5MaXN0SXRlbSIgdHlwZT0icHJvamVjdDpjb25mQWRtaW5MaXN0SXRlbSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIENvbmZpZ3VyYXRpb24gbGlzdC4gSXQgc2hvd3MgSUQtS0VZIHBhaXJzLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJjb25mQWRtaW5MaXN0SXRlbSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpiYXNlQ29udGVudExpc3RJdGVtIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29uZmlndXJhdGlvbl9pZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIENvbmZpZ3VyYXRpb24gbGlzdC4gSXQgc2hvd3MgSUQtS0VZIHBhaXJzLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29uZl92YWx1ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb25mX2tleSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJhc2VWaWRlb1N0cmVhbURldmljZSIgdHlwZT0icHJvamVjdDpiYXNlVmlkZW9TdHJlYW1EZXZpY2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKworCWV4dGVuZHMgdGhlIGJhc2VWaWRlb1N0cmVhbSB3aXRoIGZ1bmN0aW9ucyB0byBjYXRjaCBEZXZpY2UgRXZlbnRzCisJdGhpcyBDbGFzcyB1c2VzIEV2ZW50cyBmcm9tIHRoZSBCYXNlIENsYXNzIGJhc2VWaWRlb1N0cmVhbQorCW9ubWljcm8gYW5kIG9uY2FtZXJhLCB3aGljaCBhcmUgdGhyb3duLCBvbmNlIGEgZGV2aWNlIHdhcyBzZXQKKyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJiYXNlVmlkZW9TdHJlYW1EZXZpY2UiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZVZpZGVvU3RyZWFtIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VuZE1pY3JvU3RhdHVzIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZW5kQ2FtZXJhU3RhdHVzIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvYmpNZXNzYWdlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyAKKwlNZXNzYWdlIHRvIHNlbmQgdG8gQ2xpZW50cworCSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWljYWN0aXZlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBTaG93cyBpZiB0aGVyZSBpcyBBY3Rpdml0eSBvbiB0aGUgTWljcm9waG9uZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGV2ZWwiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBBdWRpbyBsZXZlbCwgMC0xMDAsIHRoZSBhbW91bnQgb2Ygc291bmQgZGV0ZWN0ZWQgYnkgdGhpcyBtaWNyb3Bob25lLgorICAgICAgICAgIFJlc2V0IHRvIDAgd2hlbiB0aGVyZSBpcyBubyBhdWRpbyAobm8gYWN0aXZpdHkgb3Igbm90IGFsbG93ZWQpLgorICAgICAgICAgIEBrZXl3b3JkcyByZWFkb25seSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNncmVhdGVyIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyAKKwkJaW5kaWNhdGVzIGlmIHRoZSBtZXNzYWdlIHNob3VsZCBiZSBzZW5kLCB5b3UgY2FuIGNoYW5nZSB0aGUgbm90aWZpY2F0aW9uIAorCQlsZXZlbCBieSBjaGFuZ2luZyB0aGUgbG91ZG5lc3NBY2l0dmlhdGlvbiBpbiB0aGUgY29uZmlnLnhtbAorCSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZG9TZW5kTm90aWZpY2F0aW9uIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNhbWFjdGl2ZSIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgU2hvd3MgaWYgdGhlcmUgaXMgQWN0aXZpdHkgb24gdGhlIENhbWVyYSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJjbG9zYWJsZVZpZXdMZXR0ZXIiIHR5cGU9InByb2plY3Q6Y2xvc2FibGVWaWV3TGV0dGVyIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJjbG9zYWJsZVZpZXdMZXR0ZXIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ1c2VyTGlzdEl0ZW0iIHR5cGU9InByb2plY3Q6dXNlckxpc3RJdGVtIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ1c2VyTGlzdEl0ZW0iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibG9naW4iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFzdG5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmlyc3RuYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZHJhZ0l0ZW1GaWxlRXhwbG9yZXIiIHR5cGU9InByb2plY3Q6ZHJhZ0l0ZW1GaWxlRXhwbG9yZXIiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImRyYWdJdGVtRmlsZUV4cGxvcmVyIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlZk9iaiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib3Zlckl0ZW0iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5ld1BhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1vdmVUb0hvbWUiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzT3duZXIiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZpbGVFeHBsb3Jlckl0ZW1JZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRyYWdJdGVtUmVzb3VyY2UiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWxyZWFkeVNlbnQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYXR0ZW5kZWVMaXN0SXRlbSIgdHlwZT0icHJvamVjdDphdHRlbmRlZUxpc3RJdGVtIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJhdHRlbmRlZUxpc3RJdGVtIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVzZXJJZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1lbWJlcklkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFzdE5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iak5hbWVUaW1lWm9uZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmaXJzdE5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZW1haWwiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJsYWJlbFRvb2x0aXAiIHR5cGU9InByb2plY3Q6bGFiZWxUb29sdGlwIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJsYWJlbFRvb2x0aXAiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGV4dCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZXRDb250ZW50IiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtdWx0aWxpbmUiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxhYmVsaWQiIHR5cGU9Imx6eDpudW1iZXIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc21lbnVidXR0b25sYWJlbCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW5pdHR3aWNlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbml0QnlEYXRhUGF0aHBhcmVudCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaG9sZGVyIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJyb3dzZXJCdXR0b24iIHR5cGU9InByb2plY3Q6YnJvd3NlckJ1dHRvbiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRPRE86CisJCWlucHJlbWVudCBvZiBoaXN0b3J5IGZlYXR1cmUKKwkJYWRkIHJlc2l6ZSBmZWF0dXJlIHRvIGxhYmVsRXhwbG9yZXJCb3ggY29tcG9uZW50CisJPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYnJvd3NlckJ1dHRvbiIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlbmFibGVkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRPRE86CisJCWlucHJlbWVudCBvZiBoaXN0b3J5IGZlYXR1cmUKKwkJYWRkIHJlc2l6ZSBmZWF0dXJlIHRvIGxhYmVsRXhwbG9yZXJCb3ggY29tcG9uZW50CisJPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ic2hhcmluZ1Nlc3Npb24iIHR5cGU9InByb2plY3Q6c2hhcmluZ1Nlc3Npb24iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKworICAgIFZpZXcgZm9yIHJlY29yZGVkIGNvbnRlbnRzIGxpc3QuCisgICAgV2hlbiB5b3Ugc2VsZWN0ICdSZWNvcmRpbmdzJyBvbiB0aGUgdG9wIG1lbnUsIHRoaXMgY2xhc3Mgc2hvd3MgdGhlIGxpc3QuCis8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJzaGFyaW5nU2Vzc2lvbiIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzaGFyaW5nU2Vzc2lvbk9iamVjdCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisKKyAgICBWaWV3IGZvciByZWNvcmRlZCBjb250ZW50cyBsaXN0LgorICAgIFdoZW4geW91IHNlbGVjdCAnUmVjb3JkaW5ncycgb24gdGhlIHRvcCBtZW51LCB0aGlzIGNsYXNzIHNob3dzIHRoZSBsaXN0LgorPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNoYXJlclB1YmxpY1NJRCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWdpc3RlclRvVmlld2VycyIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJodHRwU2Vzc2lvblN0YXJ0ZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRDdXJzb3JPYmplY3QiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsb3NlQnlSZW1vdGUiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZGV2bWVkaWFkZXZpY2UiIHR5cGU9InByb2plY3Q6ZGV2bWVkaWFkZXZpY2UiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImRldm1lZGlhZGV2aWNlIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iaXRlbUtrayIgdHlwZT0icHJvamVjdDppdGVtS2trIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJpdGVtS2trIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibmV0cGFyYW0iIHR5cGU9InByb2plY3Q6bmV0cGFyYW0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKworICAgICAgICBOZXQgcGFyYW1ldGVyLgorICAgICAgICBFbGVtZW50IHRvIHVzZSBpbnNpZGUgbmV0cmVtb3RlY2FsbC4KKyAgICAgICAgQHRvZG8gRG9jdW1lbnQgbmV0cGFyYW0gY2xhc3MuCisgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibmV0cGFyYW0iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpub2RlIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmFsdWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSB2YWx1ZSBvZiB0aGUgbmV0cGFyYW0uIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Il9yZWNvcmRlckNsaWNrTWFzayIgdHlwZT0icHJvamVjdDpfcmVjb3JkZXJDbGlja01hc2siID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Il9yZWNvcmRlckNsaWNrTWFzayIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImRyYXdEb0FuZFVuZG8iIHR5cGU9InByb2plY3Q6ZHJhd0RvQW5kVW5kbyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iZHJhd0RvQW5kVW5kbyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpiYXNlQ2hvb3NlSWNvbiI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRvcmVkbyIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImNoYXRUYWJJdGVtRW1vdGljb25zIiB0eXBlPSJwcm9qZWN0OmNoYXRUYWJJdGVtRW1vdGljb25zIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJjaGF0VGFiSXRlbUVtb3RpY29ucyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1c2VydGltZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1c2VybmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1c2VyY29sb3IiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVzZXJfaWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwdWJsaWNTSUQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGljdHVyZV91cmkiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWVzc2FnZU9iaiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWVzc2FnZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsZWFkaW5nIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSI1IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNEaXJlY3RMaW5rIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJhc2VQcm9wZXJ0eVBhbmVsIiB0eXBlPSJwcm9qZWN0OmJhc2VQcm9wZXJ0eVBhbmVsIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJiYXNlUHJvcGVydHlQYW5lbCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0aXRsZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJiYXNlUGFuZWwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaXRsZSBvZiB0aGlzIHdpbmRvdyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZCIgdHlwZT0ibHp4Om51bWJlciIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsb3NhYmxlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBpZiB0aGlzIEJveCBzaG91bGQgYmUgY2xvc2VhYmxlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InNlYXJjaFVzZXJQcm9maWxlIiB0eXBlPSJwcm9qZWN0OnNlYXJjaFVzZXJQcm9maWxlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgIG1vZHVsZXM6ZGFzaGJvYXJkIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InNlYXJjaFVzZXJQcm9maWxlIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5ld01lc3NhZ2VBY3RpdmUiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibWluaUljb25TbXlib2xFeHRyYUljb25zIiB0eXBlPSJwcm9qZWN0Om1pbmlJY29uU215Ym9sRXh0cmFJY29ucyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibWluaUljb25TbXlib2xFeHRyYUljb25zIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1vZGkiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJpbm5lcmxpc3RWaWV3UGFydGljaXBlbnRzVGFibGUiIHR5cGU9InByb2plY3Q6aW5uZXJsaXN0Vmlld1BhcnRpY2lwZW50c1RhYmxlIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJpbm5lcmxpc3RWaWV3UGFydGljaXBlbnRzVGFibGUiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJsaW5lT25seUNvbG9yQ2hvb3NlIiB0eXBlPSJwcm9qZWN0OmxpbmVPbmx5Q29sb3JDaG9vc2UiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImxpbmVPbmx5Q29sb3JDaG9vc2UiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZVByb3BlcnR5U2VsZWN0b3IiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWxlY3RlZENvbG9yVHJhbnNmb3JtZWRTdHJpbmciIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMHhGRjY2MDAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWxlY3RlZENvbG9yIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIweEZGNjYwMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imlzb3BlbiIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sb3JQaWNrUmVmIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xvcklzRW5hYmxlZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InNjcmVlblNoYXJpbmdEaWFsb2ciIHR5cGU9InByb2plY3Q6c2NyZWVuU2hhcmluZ0RpYWxvZyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ic2NyZWVuU2hhcmluZ0RpYWxvZyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpndWlQcmVzZW50ZXIiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0T2JqZWN0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYXN0TW91c2VZIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSItMSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imxhc3RNb3VzZVgiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9Ii0xIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNXaW5kb3dzIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc1N0YXJ0ZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzTW91c2VPdmVyQWN0aXZlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc01hYyIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNMaW51eCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW5pdE9iamVjdCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaWRsZURlbGVnYXRlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkb1NlbmRFdmVudHMiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY3VycmVudEN1cnNvck9iamVjdCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hlY2tib3hJc2luaXRlZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJmaWxlc1BhbmVsIiB0eXBlPSJwcm9qZWN0OmZpbGVzUGFuZWwiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImZpbGVzUGFuZWwiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6Z3VpUHJlc2VudGVyIj4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJpbnZpdGF0aW9uUXVpY2tMb2FkZXIiIHR5cGU9InByb2plY3Q6aW52aXRhdGlvblF1aWNrTG9hZGVyIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisKKwk8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJpbnZpdGF0aW9uUXVpY2tMb2FkZXIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6bGFiZWxFeHBsb3JlckJveCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVzZXJsYW5nIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisKKwk8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJtZXNzYWdlUmVjb3JkaW5nV2luIiB0eXBlPSJwcm9qZWN0Om1lc3NhZ2VSZWNvcmRpbmdXaW4iID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Im1lc3NhZ2VSZWNvcmRpbmdXaW4iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6Z3VpUHJlc2VudGVyIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWxUaXRsZUlkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZXJyb3IiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJjaGF0T3V0cHV0Um9vbXNMaXN0IiB0eXBlPSJwcm9qZWN0OmNoYXRPdXRwdXRSb29tc0xpc3QiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImNoYXRPdXRwdXRSb29tc0xpc3QiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ3bWxGaWxlRXhwbG9yZXJJdGVtIiB0eXBlPSJwcm9qZWN0OndtbEZpbGVFeHBsb3Jlckl0ZW0iID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IndtbEZpbGVFeHBsb3Jlckl0ZW0iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZUZpbGVFeHBsb3Jlckl0ZW0iPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc1dtbEZpbGUiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJzaW1wbGViYXNlSXRlbUFjdGl2aXR5TGlzdCIgdHlwZT0icHJvamVjdDpzaW1wbGViYXNlSXRlbUFjdGl2aXR5TGlzdCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ic2ltcGxlYmFzZUl0ZW1BY3Rpdml0eUxpc3QiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idFN0YW1wIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyY2wiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1lc3NhZ2UiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJiYXNlRHJhd0NsaXBBcnQiIHR5cGU9InByb2plY3Q6YmFzZURyYXdDbGlwQXJ0IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJiYXNlRHJhd0NsaXBBcnQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZURyYXdBcnJvdyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1pbkNsaXBBcnR5IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWluQ2xpcEFydHgiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtYXhDbGlwQXJ0eSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1heENsaXBBcnR4IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGVsdGFDbGlwQXJ0eSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRlbHRhQ2xpcEFydHgiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50Q2xpcEFydFJlc3NvdXJjZU5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iaWNvbnMucG5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xpcEFydEVuZHkiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGlwQXJ0RW5keCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iaW50ZXJ2aWV3Q29uZmVyZW5jZU1lbnViYXIiIHR5cGU9InByb2plY3Q6aW50ZXJ2aWV3Q29uZmVyZW5jZU1lbnViYXIiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImludGVydmlld0NvbmZlcmVuY2VNZW51YmFyIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6bWVudWJhciI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibGlzdEZvbGRlckRyYWciIHR5cGU9InByb2plY3Q6bGlzdEZvbGRlckRyYWciID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Imxpc3RGb2xkZXJEcmFnIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dGV4dCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVwbG9hZG1vZHVsIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzUHB0IiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZvbGRlcm5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJzaW5nbGV0b25FcnJvclBvcHVwIiB0eXBlPSJwcm9qZWN0OnNpbmdsZXRvbkVycm9yUG9wdXAiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InNpbmdsZXRvbkVycm9yUG9wdXAiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6ZXJyb3JQb3B1cCI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYmFja3VwQ29udGVudCIgdHlwZT0icHJvamVjdDpiYWNrdXBDb250ZW50IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQmFja3VwIG1vZHVsZSBmb3IgYWRtaW4uIEl0IGNhbiBleHBvcnQgb3IgaW1wb3J0IHVzZXIgYWNjb3VudCBkYXRhIGFzIHhtbC1maWxlLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJiYWNrdXBDb250ZW50IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VDb250ZW50VmlldyI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iaWZyYW1lVmlldyIgdHlwZT0icHJvamVjdDppZnJhbWVWaWV3IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJpZnJhbWVWaWV3IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzcmMiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImluYW1lIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpaWQiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlGcmFtZUpzU3RhY2siIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iamF2YXNjcmlwdDoiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjcmVhdGVJRnJhbWVfY2FsbGJhY2tNYXgiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjEwMDAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjcmVhdGVJRnJhbWVfY2FsbGJhY2tDb3VudGVyIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY3JlYXRlSUZyYW1lRG9uZV9hdHRyIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjYWxsYmFja1RpbWVyRGVsYXkiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjEwMCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iY29uZkFkbWluIiB0eXBlPSJwcm9qZWN0OmNvbmZBZG1pbiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIENvbmZpZ3VyYXRpb24gbW9kdWxlIGZvciBBRE1JTiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJjb25mQWRtaW4iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZUNvbnRlbnRWaWV3Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJsYWJlbGVycm9yUG9wdXAiIHR5cGU9InByb2plY3Q6bGFiZWxlcnJvclBvcHVwIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJsYWJlbGVycm9yUG9wdXAiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6ZXJyb3JQb3B1cCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVycm9ybGFiZWxpZCIgdHlwZT0ibHp4Om51bWJlciIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZHJhd1ZpZXdJbm5lciIgdHlwZT0icHJvamVjdDpkcmF3Vmlld0lubmVyIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJkcmF3Vmlld0lubmVyIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6ZHJhd3ZpZXciPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImRhdGVTZWxlY3RvckRheUhlYWRlciIgdHlwZT0icHJvamVjdDpkYXRlU2VsZWN0b3JEYXlIZWFkZXIiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImRhdGVTZWxlY3RvckRheUhlYWRlciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpiYXNlRGF0ZVNlbGVjdG9yQ29tcG9uZW50Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGF5bnVtYmVyIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJsYWJlbFBhbmVsIiB0eXBlPSJwcm9qZWN0OmxhYmVsUGFuZWwiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImxhYmVsUGFuZWwiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZVBhbmVsIj4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ3ZWVrYmtnbmQiIHR5cGU9InByb2plY3Q6d2Vla2JrZ25kIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ3ZWVrYmtnbmQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJpbm5lcmxpc3RWaWV3IiB0eXBlPSJwcm9qZWN0OmlubmVybGlzdFZpZXciID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImlubmVybGlzdFZpZXciIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJhZGRFeHRlcm5hbEF0dGVuZGVlIiB0eXBlPSJwcm9qZWN0OmFkZEV4dGVybmFsQXR0ZW5kZWUiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImFkZEV4dGVybmFsQXR0ZW5kZWUiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6bGFiZWxFeHBsb3JlckJveCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlbGVjdGlvbkFjdGl2ZSIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVmT2JqIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImxvZ2luV2ViIiB0eXBlPSJwcm9qZWN0OmxvZ2luV2ViIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJsb2dpbldlYiIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpleHBsb3JlckJveCI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYXBwbHlGb3JNb2RlcmF0aW9uIiB0eXBlPSJwcm9qZWN0OmFwcGx5Rm9yTW9kZXJhdGlvbiIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYXBwbHlGb3JNb2RlcmF0aW9uIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmxhYmVsRXhwbG9yZXJCb3giPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhcHBseW1lc3NhZ2UiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZ3VpUHJlc2VudGVyIiB0eXBlPSJwcm9qZWN0Omd1aVByZXNlbnRlciIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iZ3VpUHJlc2VudGVyIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRpdGxlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImRlZmF1bHR0aXRsZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBUaXRsZSBvZiB0aGlzIEJveCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVzaXplYWJsZSIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBpZiB0aGlzIEJveCBzaG91bGQgYmUgcmVzaXplYWJsZSAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9ucmVzaXplZCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgdGhpcyBFdmVudCB3aWxsIGJlIHRyaWdnZXJlZCBhZnRlciByZXNpemluZyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25jbG9zZSIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgdGhlIEV2ZW50IHdpbGwgYmUgdGhyb3duIGlmIHlvdSBjbG9zZSB0aGUgQm94IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmFjdGl2YXRlIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyB0aGUgRXZlbnQgd2lsbCBiZSB0aHJvd24gaWYgeW91IGRvIGNsaWNrIG9uIGl0IGFuZCBkcmFnIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtaW5pbWl6ZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1pbmltaXphYmxlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1heGltaXphYmxlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1heGlfeSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1heGlfeCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1heGlfd2lkdGgiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtYXhpX2hlaWdodCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxhYmVsaWQiIHR5cGU9Imx6eDpudW1iZXIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc3Jlc2l6ZWluZyIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNtYXhpbWl6ZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGlmIHRoaXMgQm94IHNob3VsZCBiZSByZXNpemVhYmxlICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW5pdGlhbEhlaWdodCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imhhc3NoYWRvdyIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkb2NraW5nYmFycmllciIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMTUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBIYXJkIHRvIGV4cGxhaW4gYnV0IGl0cyBjbGVhciBpZiB5b3UgcGxheSBhcm91bmQgCisJCXdpdGggdGhhdC4gSXRzIHRoZSBudW1iZXIgb2YgbWluaW11bSBwaXhlbHMgYmVmb3JlIAorCQl0aGUgImRvY2tpbmciIGVmZmVjdCB3aWxsIGJlIHRoZXJlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkb2NraW5nIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIENhbiB0aGlzIEJveCBiZSBkb2NrZWQgdG8gb3RoZXJzIGFuZCAKKwkJCXRoZSB3aWR0aC9oZWlnaHQgb2YgcGFyZW50IGNvbXBvZW50IGJhcnJpZXIgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImN1c3RvbU1pbmltaXplTWV0aG9kIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbG9zYWJsZSIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBpZiB0aGlzIEJveCBzaG91bGQgYmUgY2xvc2VhYmxlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImVkaXRVc2VyQ29udGFjdHMiIHR5cGU9InByb2plY3Q6ZWRpdFVzZXJDb250YWN0cyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iZWRpdFVzZXJDb250YWN0cyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb250YWN0Q29udGVudCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJwYXJlbnRSZXN1bHRQb2xsQmFsayIgdHlwZT0icHJvamVjdDpwYXJlbnRSZXN1bHRQb2xsQmFsayIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0icGFyZW50UmVzdWx0UG9sbEJhbGsiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGV4dEEiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmV3WCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5ld1BlcmNlbnQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMCUiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbnN3ZXIiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImFjdGl2aXR5TGlzdFJlc3RyaWN0ZWRSb29tU2NyZWVuIiB0eXBlPSJwcm9qZWN0OmFjdGl2aXR5TGlzdFJlc3RyaWN0ZWRSb29tU2NyZWVuIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJhY3Rpdml0eUxpc3RSZXN0cmljdGVkUm9vbVNjcmVlbiIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpiYXNlSXRlbUFjdGl2aXR5TGlzdCI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0icm9vbUNsaWVudCIgdHlwZT0icHJvamVjdDpyb29tQ2xpZW50IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQWRtaW4gbW9kdWxlIHRvIGNvbmZpZ3VyZSB0aGUgQ29uZmVyZW5jZSBvciBBdWRpZW5jZSByb29tLjwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InJvb21DbGllbnQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZUNvbnRlbnRWaWV3Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJxdWVzdGlvbkNoZWNrYm94IiB0eXBlPSJwcm9qZWN0OnF1ZXN0aW9uQ2hlY2tib3giID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InF1ZXN0aW9uQ2hlY2tib3giIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmFsQm9vbCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iY2FsZW5kYXIiIHR5cGU9InByb2plY3Q6Y2FsZW5kYXIiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImNhbGVuZGFyIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VDb250ZW50VmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRlcm1pbmFyZWFPYmpSZWYiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRlcm1pbk9ialJlZiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGVybWluT2JqIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWxlY3RlZGRhdGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRldGFpbHNJbml0ZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRTZWxlY3Rpb24iIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbnRhY3QiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFwcG9pbnRtZW50SWQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYmFzZVBhbmVsIiB0eXBlPSJwcm9qZWN0OmJhc2VQYW5lbCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYmFzZVBhbmVsIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VCb3VuZGluZ0JvcmRlclZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0aXRsZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJiYXNlUGFuZWwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaXRsZSBvZiB0aGlzIHdpbmRvdyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZCIgdHlwZT0ibHp4Om51bWJlciIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsb3NhYmxlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBpZiB0aGlzIEJveCBzaG91bGQgYmUgY2xvc2VhYmxlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InJvb3RGTFZFeHBsb3Jlckl0ZW0iIHR5cGU9InByb2plY3Q6cm9vdEZMVkV4cGxvcmVySXRlbSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0icm9vdEZMVkV4cGxvcmVySXRlbSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpiYXNlRkxWRXhwbG9yZXJJdGVtIj4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJyb290RmlsZUV4cGxvcmVySXRlbSIgdHlwZT0icHJvamVjdDpyb290RmlsZUV4cGxvcmVySXRlbSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0icm9vdEZpbGVFeHBsb3Jlckl0ZW0iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZUZpbGVFeHBsb3Jlckl0ZW0iPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJhc2VwYW5lbCIgdHlwZT0icHJvamVjdDpiYXNlcGFuZWwiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImJhc2VwYW5lbCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InNpbXBsZVR1cm5PdmVyTGlzdCIgdHlwZT0icHJvamVjdDpzaW1wbGVUdXJuT3Zlckxpc3QiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBjb21tb24gc2ltcGxlVHVybk92ZXJMaXN0IHZpZXcgY2xhc3MuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InNpbXBsZVR1cm5PdmVyTGlzdCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmRibGNsaWNrZWRJdGVtIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtYWluQmdDb2xvciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIweEVFRjBFQiIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibHpSZWNvcmRpbmdzVmlld01haW4iIHR5cGU9InByb2plY3Q6bHpSZWNvcmRpbmdzVmlld01haW4iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKworCVZpZXcgZm9yIHJlY29yZGVkIGNvbnRlbnRzIGxpc3QuCisJV2hlbiB5b3Ugc2VsZWN0ICdSZWNvcmRpbmdzJyBvbiB0aGUgdG9wIG1lbnUsIHRoaXMgY2xhc3Mgc2hvd3MgdGhlIGxpc3QuCis8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJselJlY29yZGluZ3NWaWV3TWFpbiIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpjb25mZXJlbmNlQm94Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGltZXJEZWxlZ2F0ZVN0YXJ0ZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRpbWVyRGVsZWdhdGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJpZ2h0VGltZSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJpZ2h0IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVjb3JkaW5nTmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKworCVZpZXcgZm9yIHJlY29yZGVkIGNvbnRlbnRzIGxpc3QuCisJV2hlbiB5b3Ugc2VsZWN0ICdSZWNvcmRpbmdzJyBvbiB0aGUgdG9wIG1lbnUsIHRoaXMgY2xhc3Mgc2hvd3MgdGhlIGxpc3QuCis8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVjb3JkaW5nTG9nIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxlZnRUaW1lIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGVmdCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzUGF1c2VkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbml0VyIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iNjQwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW5pdEgiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjQ4MCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZsdlJlY29yZGluZ0lkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGVsdGFJblNlY29uZHMiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InJvb21WYWx1ZUZvcm0iIHR5cGU9InByb2plY3Q6cm9vbVZhbHVlRm9ybSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGNvbmZpZ3VyZSB2YWx1ZSBmb3Igcm9vbWFkbWluIG1vZHVsZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJyb29tVmFsdWVGb3JtIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VDb250ZW50U2F2ZVZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZW5kT2JqZWN0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb29tc19pZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGNvbmZpZ3VyZSB2YWx1ZSBmb3Igcm9vbWFkbWluIG1vZHVsZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm9vbXNPYmoiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZGF0ZVNlbGVjdG9yTW9udGgiIHR5cGU9InByb2plY3Q6ZGF0ZVNlbGVjdG9yTW9udGgiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImRhdGVTZWxlY3Rvck1vbnRoIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VEYXRlU2VsZWN0b3JDb21wb25lbnQiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtb250aCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZpcnN0d2Vla051bWJlciIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRNb250aE5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJjb2xvclBvdCIgdHlwZT0icHJvamVjdDpjb2xvclBvdCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iY29sb3JQb3QiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibXljb2xvclN0cmluZyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIweDAwMDAwMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im15Y29sb3IiIHR5cGU9Imx6eDpjb2xvciIgZGVmYXVsdD0iMHgwMDAwMDAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsaXN0ZW5lciIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ1c2VyQWRtaW5MaXN0SXRlbSIgdHlwZT0icHJvamVjdDp1c2VyQWRtaW5MaXN0SXRlbSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEV4aXN0aW5nIHVzZXIgbGlzdC4gdXNlZCBieSB1c2VyQWRtaW4gb25seSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ1c2VyQWRtaW5MaXN0SXRlbSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpiYXNlQ29udGVudExpc3RJdGVtIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idXNlcl9pZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEV4aXN0aW5nIHVzZXIgbGlzdC4gdXNlZCBieSB1c2VyQWRtaW4gb25seSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibG9naW4iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFzdG5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmlyc3RuYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0icGFydGljaXBlbnRMaXN0SXRlbSIgdHlwZT0icHJvamVjdDpwYXJ0aWNpcGVudExpc3RJdGVtIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJwYXJ0aWNpcGVudExpc3RJdGVtIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVzZXJyb29tIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVzZXJuYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVzZXJfaWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdHJlYW1pZCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWZPYmoiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InB1YmxpY1NJRCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYXN0bmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc1N1cGVyTW9kZXJhdG9yIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc01vZCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmb3JtYXRlZERhdGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmlyc3RuYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbm5lY3RlZFNpbmNlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNhblJlbW90ZSIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InR1cm5vdmVybGlzdGhlYWRlcml0ZW0iIHR5cGU9InByb2plY3Q6dHVybm92ZXJsaXN0aGVhZGVyaXRlbSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idHVybm92ZXJsaXN0aGVhZGVyaXRlbSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpiYXNpY3R1cm5vdmVybGlzdGhlYWRlcml0ZW0iPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdWJ2aWV3c2lkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJjaG9vc2VEcmF3QXJlYU9iamVjdFdpbmRvdyIgdHlwZT0icHJvamVjdDpjaG9vc2VEcmF3QXJlYU9iamVjdFdpbmRvdyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iY2hvb3NlRHJhd0FyZWFPYmplY3RXaW5kb3ciIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6ZXhwbG9yZXJCb3giPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWZPYmoiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imxpc3RWIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InJlc3RyaWN0ZWRVc2VyTGlzdCIgdHlwZT0icHJvamVjdDpyZXN0cmljdGVkVXNlckxpc3QiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InJlc3RyaWN0ZWRVc2VyTGlzdCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvcmdhbmlzYXRpb25faWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xvckFycmF5IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBjb2xvcnMgZm9yIGVhY2ggdXNlciA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYnJvYWRDYXN0Vmlld1JlZiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgaG9sZHMgYSByZWZlcmVuY2VzIHRvIHRoZSB2aWRlb3ZpZXcgd2hpY2ggaXMgYnJvYWRjYXN0aW5nIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhcHBseURlZmF1bHRNb2RlcmF0aW9uIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbGxvd1VzZXJRdWVzdGlvbnMiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJtb25pdG9yU3ViTGlzdEl0ZW0iIHR5cGU9InByb2plY3Q6bW9uaXRvclN1Ykxpc3RJdGVtIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJtb25pdG9yU3ViTGlzdEl0ZW0iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGV4dGl0ZW0iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iZGVmIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFibGVpZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Iml0ZW1pZCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJkZWYiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InR1cm5PdmVyTGlzdEhlYWRlckl0ZW1TaW1wbGUiIHR5cGU9InByb2plY3Q6dHVybk92ZXJMaXN0SGVhZGVySXRlbVNpbXBsZSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idHVybk92ZXJMaXN0SGVhZGVySXRlbVNpbXBsZSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpzaW1wbGVMYWJlbEJ1dHRvbiI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBhdGhPcmRlciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhc2MiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibGFiZWxCbHVlQnV0dG9uIiB0eXBlPSJwcm9qZWN0OmxhYmVsQmx1ZUJ1dHRvbiIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibGFiZWxCbHVlQnV0dG9uIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJsdWVCdXR0b24iPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYWJlbGlkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ0dXJub3Zlcmxpc3RoZWFkZXJpdGVtUmVzaXplV2l6emFyZFJlZnJlc2giIHR5cGU9InByb2plY3Q6dHVybm92ZXJsaXN0aGVhZGVyaXRlbVJlc2l6ZVdpenphcmRSZWZyZXNoIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0dXJub3Zlcmxpc3RoZWFkZXJpdGVtUmVzaXplV2l6emFyZFJlZnJlc2giIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzaWN0dXJub3Zlcmxpc3RoZWFkZXJpdGVtIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3Vidmlld3NpZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1pbndpZHRoIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIyIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWluaGVpZ2h0IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxMCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ib3Blbm1lZXRpbmdzVGFiQnV0dG9uQmFja2dyb3VuZCIgdHlwZT0icHJvamVjdDpvcGVubWVldGluZ3NUYWJCdXR0b25CYWNrZ3JvdW5kIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJvcGVubWVldGluZ3NUYWJCdXR0b25CYWNrZ3JvdW5kIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OnJvdW5kUmVjdEdyYWRpZW50Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJzaGFyaW5nU2NyZWVuSW1hZ2UiIHR5cGU9InByb2plY3Q6c2hhcmluZ1NjcmVlbkltYWdlIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJzaGFyaW5nU2NyZWVuSW1hZ2UiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDppbWFnZSI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImltYWdlQ29tcGxldGVkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Imx6UmVjb3JkQ29udGVudCIgdHlwZT0icHJvamVjdDpselJlY29yZENvbnRlbnQiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKworCVZpZXcgZm9yIHJlY29yZGVkIGNvbnRlbnRzIGxpc3QuCisJV2hlbiB5b3Ugc2VsZWN0ICdSZWNvcmRpbmdzJyBvbiB0aGUgdG9wIG1lbnUsIHRoaXMgY2xhc3Mgc2hvd3MgdGhlIGxpc3QuCis8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJselJlY29yZENvbnRlbnQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZUNvbnRlbnRWaWV3Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJzdWJNZW51SWNvblRvb2xzVG9VcGxvYWQiIHR5cGU9InByb2plY3Q6c3ViTWVudUljb25Ub29sc1RvVXBsb2FkIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJzdWJNZW51SWNvblRvb2xzVG9VcGxvYWQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6Z3VpUHJlc2VudGVyIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVmVG9vbGJhciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY3VycmVudFNlbGVjdGVkIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50Q29udGFpbmVyIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImxhYmVsRXhwbG9yZXJCb3giIHR5cGU9InByb2plY3Q6bGFiZWxFeHBsb3JlckJveCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibGFiZWxFeHBsb3JlckJveCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpleHBsb3JlckJveCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxhYmVsaWQiIHR5cGU9Imx6eDpudW1iZXIiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InVzZXJTZXR0aW5ncyIgdHlwZT0icHJvamVjdDp1c2VyU2V0dGluZ3MiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBVc2VyIFByb2ZpbGUgU2V0dGluZyBQYW5lbCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ1c2VyU2V0dGluZ3MiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZUNvbnRlbnRWaWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY3VycmVudFNlbGVjdGVkIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InBlbmRpbmdDb250YWN0c0xpc3RJdGVtIiB0eXBlPSJwcm9qZWN0OnBlbmRpbmdDb250YWN0c0xpc3RJdGVtIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJwZW5kaW5nQ29udGFjdHNMaXN0SXRlbSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpiYXNlUGFnaW5nTGlzdEl0ZW0iPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1c2VybmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWFyY2hVc2VyUHJvZmlsZUltYWdlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImRvY3VtZW50c1RhYkJhciIgdHlwZT0icHJvamVjdDpkb2N1bWVudHNUYWJCYXIiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImRvY3VtZW50c1RhYkJhciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50SXRlbSIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJwYWludE1lbnUiIHR5cGU9InByb2plY3Q6cGFpbnRNZW51IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJwYWludE1lbnUiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZVRvb2xiYXJNZW51Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJiYXNlRXJyb3JEaWFsb2ciIHR5cGU9InByb2plY3Q6YmFzZUVycm9yRGlhbG9nIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJiYXNlRXJyb3JEaWFsb2ciIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6bGFiZWxFeHBsb3JlckJveCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVycm9ydGV4dCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlcnJvcmlkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWRkSW5mbyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJhc2VMaXN0UHJlc2VudGF0aW9uSXRlbUV4cGxvcmVyIiB0eXBlPSJwcm9qZWN0OmJhc2VMaXN0UHJlc2VudGF0aW9uSXRlbUV4cGxvcmVyIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJiYXNlTGlzdFByZXNlbnRhdGlvbkl0ZW1FeHBsb3JlciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1cGxvYWRtb2R1bGVpbWdmb2xkZXIiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJG9uY2V7IGNhbnZhcy51cGxvYWRtb2R1bGVpbWdmb2xkZXIgfSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVwbG9hZG1vZHVsIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlbGVjdGFibGUiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNzZWxlY3RlZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNvcmlnaW5hbCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJpbnRlcnZpZXdMaXN0SW5uZXIiIHR5cGU9InByb2plY3Q6aW50ZXJ2aWV3TGlzdElubmVyIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJpbnRlcnZpZXdMaXN0SW5uZXIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZVJvb21Jbm5lckxpc3QiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzb3J0VHlwZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJhbHBoYWJldGljYWwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWxlY3RlZEl0ZW0iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYmFzZVRvb2xiYXJNZW51IiB0eXBlPSJwcm9qZWN0OmJhc2VUb29sYmFyTWVudSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYmFzZVRvb2xiYXJNZW51IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlbGVjdGVkQnV0dG9uIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InZpZGVvQm9hcmRBdWRpZW5jZSIgdHlwZT0icHJvamVjdDp2aWRlb0JvYXJkQXVkaWVuY2UiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InZpZGVvQm9hcmRBdWRpZW5jZSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpjb25mZXJlbmNlQm94Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJycGNFcnJvckRpYWxvZyIgdHlwZT0icHJvamVjdDpycGNFcnJvckRpYWxvZyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0icnBjRXJyb3JEaWFsb2ciIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6ZXJyb3JEaWFsb2ciPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Imxpc3RQcmVzZW50YXRpb25GaWxlT3JpZ0V4cGxvcmVyIiB0eXBlPSJwcm9qZWN0Omxpc3RQcmVzZW50YXRpb25GaWxlT3JpZ0V4cGxvcmVyIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJsaXN0UHJlc2VudGF0aW9uRmlsZU9yaWdFeHBsb3JlciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpsaXN0UHJlc2VudGF0aW9uRmlsZVBERkV4cGxvcmVyIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib3JpZ2luYWxOYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZm9sZGVyRkxWRXhwbG9yZXJJdGVtIiB0eXBlPSJwcm9qZWN0OmZvbGRlckZMVkV4cGxvcmVySXRlbSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iZm9sZGVyRkxWRXhwbG9yZXJJdGVtIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VGTFZFeHBsb3Jlckl0ZW0iPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImF1dG9Mb2FkZXIiIHR5cGU9InByb2plY3Q6YXV0b0xvYWRlciIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYXV0b0xvYWRlciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtYXh3aWR0aCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMTAwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWF4c3RlcHMiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjE5IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY3VycmVudHN0ZXBzIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJsb2dvdXRDb25maXJtIiB0eXBlPSJwcm9qZWN0OmxvZ291dENvbmZpcm0iID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImxvZ291dENvbmZpcm0iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6bGFiZWxFeHBsb3JlckJveCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9iamVjdHNUb0NsZWFuIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJveEluaXRFZmZlY3QiIHR5cGU9InByb2plY3Q6Ym94SW5pdEVmZmVjdCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYm94SW5pdEVmZmVjdCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ6aWVseSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMjAwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iemllbHgiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjIwMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InppZWx3aWR0aCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMTAwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iemllbGhlaWdodCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMTAwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib2JqUmVmIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImFwcG9pbnRtZW50Tm90aWZpY2F0aW9uUG9wVXAiIHR5cGU9InByb2plY3Q6YXBwb2ludG1lbnROb3RpZmljYXRpb25Qb3BVcCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYXBwb2ludG1lbnROb3RpZmljYXRpb25Qb3BVcCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpndWlQcmVzZW50ZXIiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb29tb2JqIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImV2ZW50Um9vbVNpZGViYXIiIHR5cGU9InByb2plY3Q6ZXZlbnRSb29tU2lkZWJhciIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iZXZlbnRSb29tU2lkZWJhciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWxlY3RlZCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVzdHJpY3RlZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGlzdFR5cGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iZXZlbnRVc2VyTGlzdFRhYmxlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNPcGVuIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYm9yZGVyZWRJbnB1dHRleHQiIHR5cGU9InByb2plY3Q6Ym9yZGVyZWRJbnB1dHRleHQiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImJvcmRlcmVkSW5wdXR0ZXh0IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InR2YWx1ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJkZWZhdWx0IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGV4dCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZW5kY2hhbmdlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwcmVUZXh0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im11bHRpbGluZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1heGxlbmd0aCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxhYmVsaWQiIHR5cGU9Imx6eDpudW1iZXIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlZGl0YWJsZSIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaGVja0lzTnVtYmVyIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaGVja0lzRG91YmxlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Im1vbnRoVmlld0FsdCIgdHlwZT0icHJvamVjdDptb250aFZpZXdBbHQiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Im1vbnRoVmlld0FsdCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImNhbGVuZGFyVGFicyIgdHlwZT0icHJvamVjdDpjYWxlbmRhclRhYnMiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImNhbGVuZGFyVGFicyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnRhYnNsaWRlciI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYmFzZVByb3BlcnR5UGFuZWxXaGl0ZWJvYXJkIiB0eXBlPSJwcm9qZWN0OmJhc2VQcm9wZXJ0eVBhbmVsV2hpdGVib2FyZCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYmFzZVByb3BlcnR5UGFuZWxXaGl0ZWJvYXJkIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRpdGxlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImJhc2VQYW5lbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRpdGxlIG9mIHRoaXMgd2luZG93IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYWJlbGlkIiB0eXBlPSJseng6bnVtYmVyIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ1c2Vyc1RhYmxlIiB0eXBlPSJwcm9qZWN0OnVzZXJzVGFibGUiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InVzZXJzVGFibGUiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJzZWxlY3RlZERheUxvb2siIHR5cGU9InByb2plY3Q6c2VsZWN0ZWREYXlMb29rIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJzZWxlY3RlZERheUxvb2siIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib3BlbiIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGF5dmlldyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJib3JkZXJlZE11bHRpSW5wdXR0ZXh0IiB0eXBlPSJwcm9qZWN0OmJvcmRlcmVkTXVsdGlJbnB1dHRleHQiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImJvcmRlcmVkTXVsdGlJbnB1dHRleHQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHZhbHVlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImRlZmF1bHQiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZXh0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlbmRjaGFuZ2UiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im11bHRpbGluZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1heGxlbmd0aCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxhYmVsaWQiIHR5cGU9Imx6eDpudW1iZXIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlZGl0YWJsZSIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaGVja0lzTnVtYmVyIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaGVja0lzRG91YmxlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImN1cnNvck9iamVjdCIgdHlwZT0icHJvamVjdDpjdXJzb3JPYmplY3QiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImN1cnNvck9iamVjdCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InZpZGVvT2JqZWN0UGxheVNjcmVlblNoYXJlIiB0eXBlPSJwcm9qZWN0OnZpZGVvT2JqZWN0UGxheVNjcmVlblNoYXJlIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ2aWRlb09iamVjdFBsYXlTY3JlZW5TaGFyZSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50WSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRYIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJmaXhlZEZpbGVFeHBsb3JlcldoaXRlYm9hcmRQYW5lbCIgdHlwZT0icHJvamVjdDpmaXhlZEZpbGVFeHBsb3JlcldoaXRlYm9hcmRQYW5lbCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iZml4ZWRGaWxlRXhwbG9yZXJXaGl0ZWJvYXJkUGFuZWwiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZVByb3BlcnR5UGFuZWxXaGl0ZWJvYXJkIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0id2hpdGVib2FyZElkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJfbGFiZWxNZW51IiB0eXBlPSJwcm9qZWN0Ol9sYWJlbE1lbnUiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Il9sYWJlbE1lbnUiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDptZW51Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZCIgdHlwZT0ibHp4Om51bWJlciIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0idXNlclRhZ1ZpZXciIHR5cGU9InByb2plY3Q6dXNlclRhZ1ZpZXciID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InVzZXJUYWdWaWV3IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dGV4dCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVzZXJyb29tIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVzZXJuYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVzZXJfaWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdHJlYW1pZCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWZPYmoiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imxhc3RuYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzTW9kIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZvcm1hdGVkRGF0ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmaXJzdG5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29ubmVjdGVkU2luY2UiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJjdXN0b21JbnB1dHRleHQiIHR5cGU9InByb2plY3Q6Y3VzdG9tSW5wdXR0ZXh0IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJjdXN0b21JbnB1dHRleHQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDppbnB1dHRleHQiPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InNpbmdsZXRvbkVycm9yUG9wdXBIb2xkZXIiIHR5cGU9InByb2plY3Q6c2luZ2xldG9uRXJyb3JQb3B1cEhvbGRlciIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ic2luZ2xldG9uRXJyb3JQb3B1cEhvbGRlciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlcnJvciIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGlhbG9nUHJlc2VudCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGlhbG9nT2JqZWN0IiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InBhbmVsQm91bmRCb3giIHR5cGU9InByb2plY3Q6cGFuZWxCb3VuZEJveCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0icGFuZWxCb3VuZEJveCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmRyYXd2aWV3Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ0dXJuT3ZlclRleHRJdGVtIiB0eXBlPSJwcm9qZWN0OnR1cm5PdmVyVGV4dEl0ZW0iID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InR1cm5PdmVyVGV4dEl0ZW0iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp0ZXh0Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJzaW1wbGVMYWJlbFJvdW5kQnV0dG9uSWNvbiIgdHlwZT0icHJvamVjdDpzaW1wbGVMYWJlbFJvdW5kQnV0dG9uSWNvbiIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ic2ltcGxlTGFiZWxSb3VuZEJ1dHRvbkljb24iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6c2ltcGxlTGFiZWxSb3VuZEJ1dHRvbiI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRsYWJlbGlkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVzc291cmNlSWNvbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImluY29taW5nU2NyZWVuU2hhcmluZyIgdHlwZT0icHJvamVjdDppbmNvbWluZ1NjcmVlblNoYXJpbmciID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImluY29taW5nU2NyZWVuU2hhcmluZyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpsYWJlbEV4cGxvcmVyQm94Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVmT2JqIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtZXNzYWdlT2JqIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJhc2VDaG9vc2VJY29uRkxWVmlldyIgdHlwZT0icHJvamVjdDpiYXNlQ2hvb3NlSWNvbkZMVlZpZXciID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImJhc2VDaG9vc2VJY29uRkxWVmlldyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZXNvdXJjZU4iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imlzc2VsZWN0ZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibWVudUxpc3RJdGVtVXNlclByb2ZpbGUiIHR5cGU9InByb2plY3Q6bWVudUxpc3RJdGVtVXNlclByb2ZpbGUiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Im1lbnVMaXN0SXRlbVVzZXJQcm9maWxlIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRleHR2YWx1ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGV4dExhYmVsIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlbGVjdGVkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsaXN0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYWJlbGlkIiB0eXBlPSJseng6bnVtYmVyIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWxMYWJlbGlkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSItMSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imlzb3BlbiIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNsZWFmIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhY3Rpb24iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJjaGF0UGFydGljaXBhbnRzSW52aXRlQ29uZmVyZW5jZSIgdHlwZT0icHJvamVjdDpjaGF0UGFydGljaXBhbnRzSW52aXRlQ29uZmVyZW5jZSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iY2hhdFBhcnRpY2lwYW50c0ludml0ZUNvbmZlcmVuY2UiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6Z3VpUHJlc2VudGVyIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idXNlcl9pZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InB1YmxpY1NJRCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InJ0bXBDb25uZWN0aW9uIiB0eXBlPSJwcm9qZWN0OnJ0bXBDb25uZWN0aW9uIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJydG1wQ29ubmVjdGlvbiIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4Om5vZGUiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzcmMiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25lcnJvciIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25jb25uZWN0IiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYXN0Q2FsbGVkIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkZWJ1ZyIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJyZXN1bHRQb2xsQmFsayIgdHlwZT0icHJvamVjdDpyZXN1bHRQb2xsQmFsayIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0icmVzdWx0UG9sbEJhbGsiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJvcmdBZG1pbkNob29zZVVzZXJXaW5kb3ciIHR5cGU9InByb2plY3Q6b3JnQWRtaW5DaG9vc2VVc2VyV2luZG93IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJvcmdBZG1pbkNob29zZVVzZXJXaW5kb3ciIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6bGFiZWxFeHBsb3JlckJveCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVzZXJzSWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWZPYmplY3REaWFsb2ciIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlZk9iaiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib3JnYW5pc2F0aW9uX2lkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNPcmdVc2VyQWRkRm9ybSIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJjb25mZXJlbmNlUm9vbVNpZGViYXJUYWJCdXR0b24iIHR5cGU9InByb2plY3Q6Y29uZmVyZW5jZVJvb21TaWRlYmFyVGFiQnV0dG9uIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJjb25mZXJlbmNlUm9vbVNpZGViYXJUYWJCdXR0b24iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VsZWN0ZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxhYmVsaWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50SWNvblJzYyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Im5ld1ByaXZhdGVNZXNzYWdlRm9sZGVyIiB0eXBlPSJwcm9qZWN0Om5ld1ByaXZhdGVNZXNzYWdlRm9sZGVyIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJuZXdQcml2YXRlTWVzc2FnZUZvbGRlciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpndWlQcmVzZW50ZXIiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWZPYmoiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZvbGRlck5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJkcmF3QXJlYU9iamVjdENvbWJvYm94IiB0eXBlPSJwcm9qZWN0OmRyYXdBcmVhT2JqZWN0Q29tYm9ib3giID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImRyYXdBcmVhT2JqZWN0Q29tYm9ib3giIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNlY29tYm9ib3giPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwcmVzZWxlY3RlZE5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibW9kdXMiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJHsgdGhpcy5wYXJlbnQuY2FudmFzLl9kcmF3YXJlYS5kcmF3bW9kdXMgfSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Ik9iamVjdEJ5TmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJkcmF3QXJlYU9iamVjdFZhbHVlQm94IiB0eXBlPSJwcm9qZWN0OmRyYXdBcmVhT2JqZWN0VmFsdWVCb3giID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImRyYXdBcmVhT2JqZWN0VmFsdWVCb3giIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6Ym9yZGVyZWRJbnB1dHRleHQiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwb3NOYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYmFzZUZMVkV4cGxvcmVySXRlbSIgdHlwZT0icHJvamVjdDpiYXNlRkxWRXhwbG9yZXJJdGVtIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJiYXNlRkxWRXhwbG9yZXJJdGVtIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNpbmdsZUNsaWNrU3RhcnRlZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2luZ2xlQ2xpY2tEZWxlZ2F0ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VsZWN0ZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlZk9iakxpc3RSb290IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvcGVuIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtb3VzZURvd25DbGlja1VzZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1vdXNlRG93bkNsaWNrRGVsZWdhdGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzVHJhc2hDYW4iIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzUm9vdCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNQcmVzZW50YXRpb24iIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzT3duZXIiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzTW91c2VEb3duRHJhZ0FjdGlvbiIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNJbWFnZSIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNGb2xkZXIiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmlsZU5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmlsZUljb24iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ic3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmlsZUhhc2giIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmlsZUV4cGxvcmVySXRlbUlkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ2aWRlb09iamVjdFRlc3RCcm9hZGNhc3QiIHR5cGU9InByb2plY3Q6dmlkZW9PYmplY3RUZXN0QnJvYWRjYXN0IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisKKwljb250YWlucyBtaWNyb3Bob25lIGFuZCBjYW1lcmEgZm9yIGJyb2FkY2FzdGluZywKKwl0aGlzIGNsYXNzIGlzIHVzZWQgb25seSBpbiBNZWV0aW5ncy1Nb2R1cworIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InZpZGVvT2JqZWN0VGVzdEJyb2FkY2FzdCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZW5kTWljcm9TdGF0dXMiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlbmRDYW1lcmFTdGF0dXMiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCisJY29udGFpbnMgbWljcm9waG9uZSBhbmQgY2FtZXJhIGZvciBicm9hZGNhc3RpbmcsCisJdGhpcyBjbGFzcyBpcyB1c2VkIG9ubHkgaW4gTWVldGluZ3MtTW9kdXMKKyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ2aWRlb0NvbnRhaW5lclN0cmVhbSIgdHlwZT0icHJvamVjdDp2aWRlb0NvbnRhaW5lclN0cmVhbSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idmlkZW9Db250YWluZXJTdHJlYW0iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJkcmF3Q2hvb3NlU2l6ZVJhZGlvIiB0eXBlPSJwcm9qZWN0OmRyYXdDaG9vc2VTaXplUmFkaW8iID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImRyYXdDaG9vc2VTaXplUmFkaW8iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpyYWRpb2dyb3VwIj4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJjb252ZXJ0ZXJQb3B1cCIgdHlwZT0icHJvamVjdDpjb252ZXJ0ZXJQb3B1cCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iY29udmVydGVyUG9wdXAiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6bGFiZWxFeHBsb3JlckJveCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVycm9yIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImFjdGl2aXR5TGlzdFJlc3RyaWN0ZWRSb29tQSIgdHlwZT0icHJvamVjdDphY3Rpdml0eUxpc3RSZXN0cmljdGVkUm9vbUEiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImFjdGl2aXR5TGlzdFJlc3RyaWN0ZWRSb29tQSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpiYXNlSXRlbUFjdGl2aXR5TGlzdCI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0idmlkZW9GaWxlRXhwbG9yZXJJdGVtIiB0eXBlPSJwcm9qZWN0OnZpZGVvRmlsZUV4cGxvcmVySXRlbSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idmlkZW9GaWxlRXhwbG9yZXJJdGVtIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VGaWxlRXhwbG9yZXJJdGVtIj4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ0dXJuT3Zlckxpc3QiIHR5cGU9InByb2plY3Q6dHVybk92ZXJMaXN0IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgY29tbW9uIFR1cm5PdmVyTGlzdCB2aWV3IGNsYXNzLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0dXJuT3Zlckxpc3QiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3RlcCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMTAwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3RhcnQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBjb21tb24gVHVybk92ZXJMaXN0IHZpZXcgY2xhc3MuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZW5kRXZlbnRUb1JlbG9hZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVjb3JkcyIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9yZGVyYnkiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iZmlyc3RuYW1lIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25kYmxjbGlja2VkSXRlbSIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25jYWxscHJlIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmNhbGxuZXh0IiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvblVwZGF0ZU9yZGVyIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtYWluQmdDb2xvciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIweEVFRjBFQiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRTZWxlY3RlZE9yZGVyIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhc2MiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJsYW5ndWFnZXNFZGl0b3IiIHR5cGU9InByb2plY3Q6bGFuZ3VhZ2VzRWRpdG9yIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgTGFuZ3VhZ2UgZWRpdG9yIG1vZHVsZS4gWW91IGNhbiBlZGl0IHRoZSBsYWJlbCBmb3IgeW91ciBsYW5ndWFnZS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibGFuZ3VhZ2VzRWRpdG9yIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VDb250ZW50VmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRlbXBWYWx1ZSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imxhbmd1YWdlX2lkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ4bWxDcm1Ub29sdGlwTXVsdGkiIHR5cGU9InByb2plY3Q6eG1sQ3JtVG9vbHRpcE11bHRpIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ4bWxDcm1Ub29sdGlwTXVsdGkiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGV4dCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJob2xkZXIiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZmx2RXhwbG9yZXJJdGVtIiB0eXBlPSJwcm9qZWN0OmZsdkV4cGxvcmVySXRlbSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iZmx2RXhwbG9yZXJJdGVtIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VGTFZFeHBsb3Jlckl0ZW0iPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InBlbmRpbmdVc2VyU3RhdHVzIiB0eXBlPSJwcm9qZWN0OnBlbmRpbmdVc2VyU3RhdHVzIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJwZW5kaW5nVXNlclN0YXR1cyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1c2VyQ29udGFjdElkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGVuZGluZyIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtZXNzYWdlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0idXNlckFjdGl2aXR5SXRlbSIgdHlwZT0icHJvamVjdDp1c2VyQWN0aXZpdHlJdGVtIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ1c2VyQWN0aXZpdHlJdGVtIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVzZXJUZXh0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZHJhd0RyYXdhcnJvd1Rvb2xzIiB0eXBlPSJwcm9qZWN0OmRyYXdEcmF3YXJyb3dUb29scyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iZHJhd0RyYXdhcnJvd1Rvb2xzIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iaGliUnRtcENvbm5lY3Rpb24iIHR5cGU9InByb2plY3Q6aGliUnRtcENvbm5lY3Rpb24iID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImhpYlJ0bXBDb25uZWN0aW9uIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OnJ0bXBDb25uZWN0aW9uIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idXNlcm9iamVjdCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idXNlcmxhbmciIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjEiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1c2VyU2NvcGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iaGliZXJuYXRlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGVzdEFwcExvYWRpbmciIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN0ZXAiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjEwMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN0YXJ0IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2lwTG9hZGVyIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzaG93S2lja01lc3NhZ2UiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNob3dGdWxsTWVzc2FnZSIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm9vbXR5cGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm9vbV9pZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlZnJlc2hEZWxlZ2F0ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVjb25uZWN0aW9uQWN0aW9uIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWNvbm5lY3RlZFJvb21JbnN0YW5jZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVjb25uZWN0T2JqUmVmIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWNvbm5lY3RBZnRlclJvb21sZWZ0IiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwdWJsaWNTSURPZk5ld01vZGVyYXRvciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icHVibGljU0lEIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwcm90b2NvbGxQb3J0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiRvbmNleyBjYW52YXMucnRtcHBvcnQgfSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InByb3RvY29sbE5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0icnRtcCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im11dGUiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1vZHVzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1lc3NhZ2VPYmoiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1heCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMTMwMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxvYWRlclZhciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNDbG9zZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNBbGxvd2VkVG9Ccm9hZENhc3RBViIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW50ZXJ2aWV3UG9kSWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbml0bGFuZ3VhZ2VMb2FkZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRyb29taWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50ZG9tYWluT2JqIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImRvbWFpbjEiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50ZG9tYWluIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImRvbWFpbjEiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50SW52aXRhdGlvbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgdGhlIGN1cnJlbnQgSW52aXRhdGlvbi1PYmplY3QgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRIYXNoU2Vzc2lvbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb3VudGVycm9yIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29uZmVyZW5jZWRvbWFpbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJwdWJsaWMiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjYW5TaGFyZSIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjYW5SZW1vdGUiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2FuRHJhdyIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhdnNldHRpbmdzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImF2IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iVXNlcklEIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJiYXNlRHJhd1JlY3QiIHR5cGU9InByb2plY3Q6YmFzZURyYXdSZWN0IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJiYXNlRHJhd1JlY3QiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZURyYXdTZWxlY3QiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50cmVjdGFuZ2xlc3Ryb2tlRmlsbERpcyIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRyZWN0YW5nbGVzdHJva2VGaWxsIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjB4RkZGRjMzIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY3VycmVudHJlY3RhbmdsZXN0cm9rZURpcyIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRyZWN0YW5nbGVzdHJva2UiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMHhGRjY2MDAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50cmVjdGFuZ2xlaW5lV2lkdGgiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjQiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50cmVjdGFuZ2xlT3BhY2l0eSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0idXNlckFjdGl2aXR5RGV2aWRlciIgdHlwZT0icHJvamVjdDp1c2VyQWN0aXZpdHlEZXZpZGVyIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ1c2VyQWN0aXZpdHlEZXZpZGVyIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRldmlkZXJUZXh0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0icGFpbnRUb29sc1BhbGV0dGUiIHR5cGU9InByb2plY3Q6cGFpbnRUb29sc1BhbGV0dGUiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InBhaW50VG9vbHNQYWxldHRlIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYWRkQXR0ZW5kZWUiIHR5cGU9InByb2plY3Q6YWRkQXR0ZW5kZWUiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImFkZEF0dGVuZGVlIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmxhYmVsRXhwbG9yZXJCb3giPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWZPYmoiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzU3VwZXJNb2RlcmF0b3IiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0idGVzdFNldHVwIiB0eXBlPSJwcm9qZWN0OnRlc3RTZXR1cCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idGVzdFNldHVwIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmxhYmVsRXhwbG9yZXJCb3giPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb29tT2JqIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb29tQ2xhc3NOYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzRGlyZWN0TGluayIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZm9yY2VUZXN0IiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImRyYWdJdGVtRkxWRXhwbG9yZXIiIHR5cGU9InByb2plY3Q6ZHJhZ0l0ZW1GTFZFeHBsb3JlciIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iZHJhZ0l0ZW1GTFZFeHBsb3JlciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWZPYmoiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im92ZXJJdGVtIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuZXdQYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc093bmVyIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmaWxlRXhwbG9yZXJJdGVtSWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkcmFnSXRlbVJlc291cmNlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFscmVhZHlTZW50IiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImFwcG9pbnRtZW50TW9udGgiIHR5cGU9InByb2plY3Q6YXBwb2ludG1lbnRNb250aCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYXBwb2ludG1lbnRNb250aCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZXJtaW5PYmoiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0idGV4dGJveCIgdHlwZT0icHJvamVjdDp0ZXh0Ym94IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0ZXh0Ym94IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJvcmRlcmNvbG9yIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjB4MDAwMDAwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJjaGF0SW5uZXJTbWlseSIgdHlwZT0icHJvamVjdDpjaGF0SW5uZXJTbWlseSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iY2hhdElubmVyU21pbHkiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaWNvbmxhYmVsIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0icnNzRmVlZExpc3RJdGVtIiB0eXBlPSJwcm9qZWN0OnJzc0ZlZWRMaXN0SXRlbSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0icnNzRmVlZExpc3RJdGVtIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVwZGF0ZWQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGl0ZWwiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3VtbWFyeSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsaW5rIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibGlzdFByZXNlbnRhdGlvblRodW1iIiB0eXBlPSJwcm9qZWN0Omxpc3RQcmVzZW50YXRpb25UaHVtYiIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibGlzdFByZXNlbnRhdGlvblRodW1iIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VMaXN0UHJlc2VudGF0aW9uSXRlbSI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRodW1ibmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJubyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImFxdWFCdXR0b24iIHR5cGU9InByb2plY3Q6YXF1YUJ1dHRvbiIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYXF1YUJ1dHRvbiIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYWJlbGlkIiB0eXBlPSJseng6bnVtYmVyIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJsYWJlbFRleHRXaWR0aFRvb2x0aXAiIHR5cGU9InByb2plY3Q6bGFiZWxUZXh0V2lkdGhUb29sdGlwIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJsYWJlbFRleHRXaWR0aFRvb2x0aXAiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp0ZXh0Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZCIgdHlwZT0ibHp4Om51bWJlciIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxhYmVsTGFiZWxpZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iLTEiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InBhcnRpY2lwZW50cyIgdHlwZT0icHJvamVjdDpwYXJ0aWNpcGVudHMiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InBhcnRpY2lwZW50cyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1c2VyTmV3VmlkZW9Db250YWluZXIiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9yZ2FuaXNhdGlvbl9pZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbG9yQXJyYXkiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGNvbG9ycyBmb3IgZWFjaCB1c2VyIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJicm9hZENhc3RWaWV3UmVmIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBob2xkcyBhIHJlZmVyZW5jZXMgdG8gdGhlIHZpZGVvdmlldyB3aGljaCBpcyBicm9hZGNhc3RpbmcgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFwcGx5RGVmYXVsdE1vZGVyYXRpb24iIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0icHJpdmF0ZU1lc3NhZ0l0ZW0iIHR5cGU9InByb2plY3Q6cHJpdmF0ZU1lc3NhZ0l0ZW0iID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InByaXZhdGVNZXNzYWdJdGVtIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VQYWdpbmdMaXN0SXRlbSI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN1YmplY3QiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3RyVGltZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpdGVtU2VsZWN0ZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzUmVhZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZnJvbSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImFjdGl2aXR5TGlzdFJlc3RyaWN0ZWRSb29tViIgdHlwZT0icHJvamVjdDphY3Rpdml0eUxpc3RSZXN0cmljdGVkUm9vbVYiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImFjdGl2aXR5TGlzdFJlc3RyaWN0ZWRSb29tViIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpiYXNlSXRlbUFjdGl2aXR5TGlzdCI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibWluaUljb25zIiB0eXBlPSJwcm9qZWN0Om1pbmlJY29ucyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibWluaUljb25zIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZXZlbnRTZWxlY3RvcmJhciIgdHlwZT0icHJvamVjdDpldmVudFNlbGVjdG9yYmFyIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJldmVudFNlbGVjdG9yYmFyIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InlvZmYiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ4b2ZmIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3RhcnREcmFnRGVsIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdGFydERhdGUyIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdGFydERhdGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNuYXBFZGdlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjMwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib3JpZ3giIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvYmFyeCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1kZWwiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImhpZGVkZWwiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZyZWVkcmFnZ2luZyIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZW5kRGF0ZTIiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVuZERhdGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRyYWdnaW5nIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGlwcGluZyIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xpcGRlbCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYmFzZVVybCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhcHBvaW50ZW1lbnRJZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibmV3UHJpdmF0ZU1lc3NhZ2UiIHR5cGU9InByb2plY3Q6bmV3UHJpdmF0ZU1lc3NhZ2UiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Im5ld1ByaXZhdGVNZXNzYWdlIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0Omd1aVByZXNlbnRlciI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVzZXJfaWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1c2VyT2JqZWN0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZW5kVXBkYXRlVGV4dCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZW5kVXBkYXRlQXR0ciIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZW5kU2luZ2xlVXBkYXRlVGV4dCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWZPYmoiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlY2VpcGVudHMiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBhcmVudE1lc3NhZ2VJZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibGFiZWx0YWJlbGVtZW50IiB0eXBlPSJwcm9qZWN0OmxhYmVsdGFiZWxlbWVudCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibGFiZWx0YWJlbGVtZW50IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dGFiZWxlbWVudCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxhYmVsaWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJhc2V0dXJuT3Zlckxpc3RQYWdlZCIgdHlwZT0icHJvamVjdDpiYXNldHVybk92ZXJMaXN0UGFnZWQiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImJhc2V0dXJuT3Zlckxpc3RQYWdlZCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdGVwIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxMDAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdGFydCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNob3dUb3BCYXIiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2hvd0hTY3JvbGxiYXIiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0idmlzaWJsZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlbGVjdGVkIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZXJlbmRlciIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVuZGVyTGlzdCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVjb3JkcyIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9yZGVyYnkiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iZmlyc3RuYW1lIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25jYWxscHJlIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmNhbGxuZXh0IiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvblNjcm9sbEl0ZW0iIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uTmV4dFNjcm9sbEl0ZW0iIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uTW92ZUxpc3QiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im11bHRpc2VsZWN0IiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1lbnVCYXJYSW5kZW50IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGlzdExhYmVsSWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsaXN0SXRlbU5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iYmFzZVBhZ2luZ0xpc3RJdGVtIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXRlbUhlaWdodCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJoZWFkZXJIZWlnaHQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYXNjIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZHJhd1ZpZXdOZXciIHR5cGU9InByb2plY3Q6ZHJhd1ZpZXdOZXciID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImRyYXdWaWV3TmV3IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6ZHJhd3ZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0eXBlT2ZPYmplY3QiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0icGFpbnQiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbml0d2lkdGgiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbml0aGVpZ2h0IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJtYWluVG9vbHNIUGFuZWxTZXBlcmF0b3IiIHR5cGU9InByb2plY3Q6bWFpblRvb2xzSFBhbmVsU2VwZXJhdG9yIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJtYWluVG9vbHNIUGFuZWxTZXBlcmF0b3IiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ0dXJuT3Zlckxpc3RPcmRlcmVkUGFnZWQiIHR5cGU9InByb2plY3Q6dHVybk92ZXJMaXN0T3JkZXJlZFBhZ2VkIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgY29tbW9uIFR1cm5PdmVyTGlzdCB2aWV3IGNsYXNzLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0dXJuT3Zlckxpc3RPcmRlcmVkUGFnZWQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6dHVybk92ZXJMaXN0UGFnZWQiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvblVwZGF0ZU9yZGVyIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50U2VsZWN0ZWRPcmRlciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgY29tbW9uIFR1cm5PdmVyTGlzdCB2aWV3IGNsYXNzLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJpY29uU3RlcEJ1dHRvbldpenphcmQiIHR5cGU9InByb2plY3Q6aWNvblN0ZXBCdXR0b25XaXp6YXJkIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJpY29uU3RlcEJ1dHRvbldpenphcmQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVzb3VyY2VWaWV3TmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYWJlbGlkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJiYXNlUm9vbUlubmVyTGlzdCIgdHlwZT0icHJvamVjdDpiYXNlUm9vbUlubmVyTGlzdCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYmFzZVJvb21Jbm5lckxpc3QiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sb3JBcnJheSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJyb3VuZFJlY3RHcmFkaWVudCIgdHlwZT0icHJvamVjdDpyb3VuZFJlY3RHcmFkaWVudCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0icm91bmRSZWN0R3JhZGllbnQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpkcmF3dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uaW5zZXR0b3AiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uaW5zZXRyaWdodCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25pbnNldGxlZnQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uaW5zZXRib3R0b20iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uaW5zZXQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uY29tcGxldGUiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imluc2V0dG9wIiB0eXBlPSJseng6c2l6ZSIgZGVmYXVsdD0iJHtudWxsfSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imluc2V0cmlnaHQiIHR5cGU9Imx6eDpzaXplIiBkZWZhdWx0PSIke251bGx9IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW5zZXRsZWZ0IiB0eXBlPSJseng6c2l6ZSIgZGVmYXVsdD0iJHtudWxsfSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imluc2V0Ym90dG9tIiB0eXBlPSJseng6c2l6ZSIgZGVmYXVsdD0iJHtudWxsfSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imluc2V0IiB0eXBlPSJseng6c2l6ZSIgZGVmYXVsdD0iNSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBtYXJnaW4gYmV0d2VlbiB0aGUgb3V0c2lkZSB2aWV3IGFuZCB0aGUgY29udGVudCB2aWV3IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJib3hTaGFkb3dZIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgeCBvZmZzZXQgb2YgdGhlIGJveCBzaGFkb3cuICBUaGUgYm94IHNoYWRvdyBpcyBub3QgZHJhd24gYnkgZGVmYXVsdC4KKyAgICAgICAgICAgIFNwZWNpZnkgYSBib3hTaGFkb3dDb2xvciBpbiBvcmRlciB0byBkcmF3IGl0LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYm94U2hhZG93WCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSI1IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHggb2Zmc2V0IG9mIHRoZSBib3ggc2hhZG93LiAgVGhlIGJveCBzaGFkb3cgaXMgbm90IGRyYXduIGJ5IGRlZmF1bHQuCisgICAgICAgICAgICBTcGVjaWZ5IGEgYm94U2hhZG93Q29sb3IgaW4gb3JkZXIgdG8gZHJhdyBpdC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJveFNoYWRvd09wYWNpdHkiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMC41IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIGJveCBzaGFkb3cgb3BhY2l0eS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJveFNoYWRvd0NvbG9yIiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9IiRvbmNle251bGx9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIGJveCBzaGFkb3cgY29sb3IuICBJZiB0aGlzIGlzIHNwZWNpZmllZCwgYSBib3ggc2hhZG93IGlzIGRyYXduLjwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJib3JkZXJXaWR0aCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIxIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHdpZHRoIG9mIHRoZSBib3JkZXIuICBJZiB0aGlzIGlzIHplcm8sIG5vIGZyYW1lIGlzIGRyYXduLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyUmFkaXVzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgcm91bmRpbmcgcmFkaXVzIG9mIHRoZSBib3JkZXIgY29ybmVycy4gIEJlY2F1c2UgdGhlIGRlZmF1bHQKKyAgICAgICAgICAgIGpvaW4gdHlwZSBpcyBhIHJvdW5kIGpvaW4sIGV2ZW4gYSByYWRpdXMgb2YgemVybyB3aWxsIHByb2R1Y3Qgc29tZQorICAgICAgICAgICAgcm91bmRpbmcuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJib3JkZXJPcGFjaXR5IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjEiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgYm9yZGVyIG9wYWNpdHkgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJvcmRlckNvbG9yIiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9ImJsYWNrIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIGJvcmRlciBjb2xvciA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYmFja2dyb3VuZFN0b3BPcGFjaXR5IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjEiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgYmFja2dyb3VuZCBzdG9wIG9wYWNpdHkuICBUaGlzIGRlZmF1bHRzIHRvIG9uZSAob3BhcXVlKSB1bmxlc3MgdGhlCisgICAgICAgICAgICBzdG9wIGNvbG9yIGlzIG5vdCBzcGVjaWZpZWQgYW5kIHRoZSBzdGFydCBjb2xvciBpcywgaW4gd2hpY2ggY2FzZSBpdAorICAgICAgICAgICAgZGVmYXVsdHMgdG8gemVybyAoZnVsbHkgdHJhbnNwYXJlbnQpLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYmFja2dyb3VuZFN0b3BDb2xvciIgdHlwZT0ibHp4OmNvbG9yIiBkZWZhdWx0PSIkb25jZXtudWxsfSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBiYWNrZ3JvdW5kIHN0b3AgY29sb3IuICBUaGlzIGlzIHRoZSBjb2xvciB0aGF0IGlzIGRyYXduIGF0IHRoZQorICAgICAgICAgICAgYm90dG9tIG9yIHJpZ2h0IG9mIHRoZSB2aWV3LCBkZXBlbmRpbmcgb24gdGhlIHZhbHVlIG9mCisgICAgICAgICAgICBiYWNrZ3JvdW5kR3JhZGllbnRPcmllbnRhdGlvbi4gIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IKKyAgICAgICAgICAgIGJhY2tncm91bmRTdGFydENvbG9yIGZvciBhZGRpdGlvbmFsIGRvY3VtZW50YXRpb24uIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJiYWNrZ3JvdW5kU3RhcnRPcGFjaXR5IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjEiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgYmFja2dyb3VuZCBzdGFydCBvcGFjaXR5LiAgVGhpcyBkZWZhdWx0cyB0byBvbmUgKG9wYXF1ZSkgdW5sZXNzIHRoZQorICAgICAgICAgICAgc3RhcnQgY29sb3IgaXMgbm90IHNwZWNpZmllZCBhbmQgdGhlIHN0b3AgY29sb3IgaXMsIGluIHdoaWNoIGNhc2UgaXQKKyAgICAgICAgICAgIGRlZmF1bHRzIHRvIHplcm8gKGZ1bGx5IHRyYW5zcGFyZW50KS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJhY2tncm91bmRTdGFydENvbG9yIiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9IiRvbmNle251bGx9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIGJhY2tncm91bmQgc3RhcnQgY29sb3IuICBUaGlzIGlzIHRoZSBjb2xvciB0aGF0IGlzIGRyYXduIGF0CisgICAgICAgICAgICB0aGUgdG9wIG9yIGxlZnQgb2YgdGhlIHZpZXcsIGRlcGVuZGluZyBvbiB0aGUgdmFsdWUgb2YKKyAgICAgICAgICAgIGJhY2tncm91bmRHcmFkaWVudE9yaWVudGF0aW9uLiAgSWYgdGhpcyBhbmQgdGhlIGJhY2tyb3VuZCBzdG9wIGNvbG9yCisgICAgICAgICAgICBhcmUgc3BlY2lmaWVkLCBhIGdyYWRpZW50IGJhY2tncm91bmQgaXMgZHJhd24gaW4gdGhlIGRpcmVjdGlvbiBzcGVjaWZpZWQKKyAgICAgICAgICAgIGJ5IGJhY2tncm91bmRHcmFkaWVudE9yaWVudGF0aW9uLiAgSWYgb25seSBvbmUgb2YgdGhlIGJhY2tncm91bmQgc3RhcnQKKyAgICAgICAgICAgIGFuZCBzdG9wIGNvbG9yIGFyZSBzcGVjaWZpZWQsIGEgZ3JhZGllbnQgb2YgdGhlIHNhbWUgY29sb3IgdGhhdCBmYWRlcyB0bworICAgICAgICAgICAgdHJhbnNwYXJlbnQgYXQgdGhlIHVuc3BlY2lmaWVkIGVuZCBpcyBkcmF3bi4gIElmIGEgYm94IHNoYWRvdyBpcyBkcmF3biwKKyAgICAgICAgICAgIHRoZSBiYWNrZ3JvdW5kIGRlZmF1bHRzIHRvIHdoaXRlLiAgU3BlY2lmeSBhIHN0YXJ0IGFuZCBzdG9wIG9wYWNpdHkgdG8KKyAgICAgICAgICAgIHN1cHByZXNzIHRoaXMgYmVoYXZpb3IuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJiYWNrZ3JvdW5kR3JhZGllbnRPcmllbnRhdGlvbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJ2ZXJ0aWNhbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoZSBiYWNrZ3JvdW5kIGdyYWRpZW50IG9yaWVudGF0aW9uLiAgT25lIG9mICd2ZXJ0aWNhbCcgKHRoZSBkZWZhdWx0KQorICAgICAgICAgICAgYW5kICdob3Jpem9udGFsJy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZXJyb3JQb3B1cFVzZXJJbmZvIiB0eXBlPSJwcm9qZWN0OmVycm9yUG9wdXBVc2VySW5mbyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iZXJyb3JQb3B1cFVzZXJJbmZvIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmxhYmVsRXhwbG9yZXJCb3giPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1c2VyIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlcnJvciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImRyYXdFbGxpcHNlVG9vbHMiIHR5cGU9InByb2plY3Q6ZHJhd0VsbGlwc2VUb29scyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iZHJhd0VsbGlwc2VUb29scyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InJlZ2lzdGVyTmV3VXNlciIgdHlwZT0icHJvamVjdDpyZWdpc3Rlck5ld1VzZXIiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InJlZ2lzdGVyTmV3VXNlciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpsYWJlbEV4cGxvcmVyQm94Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idXNlcl9wYXNzX21pbmltdW1fbGVuZ3RoIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSI0IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idXNlcl9sb2dpbl9taW5pbXVtX2xlbmd0aCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iNCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlZ09iamVjdCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVmT2JqIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJhc2VEcmF3U2VsZWN0IiB0eXBlPSJwcm9qZWN0OmJhc2VEcmF3U2VsZWN0IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJiYXNlRHJhd1NlbGVjdCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpiYXNlRHJhd1RyaWFuZ2xlIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY3VycmVudFNlbGVjdGFuZ2xlc3Ryb2tlRmlsbERpcyIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRTZWxlY3RhbmdsZXN0cm9rZUZpbGwiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMHg4ZTg5ODYiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50U2VsZWN0YW5nbGVzdHJva2VEaXMiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjEiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50U2VsZWN0YW5nbGVzdHJva2UiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMHg4ZTg5ODYiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50U2VsZWN0YW5nbGVpbmVXaWR0aCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iNCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRTZWxlY3RhbmdsZU9wYWNpdHkiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAuMiIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZHJhd0NvbG9yUGlja2VyIiB0eXBlPSJwcm9qZWN0OmRyYXdDb2xvclBpY2tlciIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iZHJhd0NvbG9yUGlja2VyIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9ubmV3Y29sb3IiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRlZmF1bHRubyIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZHJhd0Nob29zZVNlcGVyYXRvciIgdHlwZT0icHJvamVjdDpkcmF3Q2hvb3NlU2VwZXJhdG9yIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJkcmF3Q2hvb3NlU2VwZXJhdG9yIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VNZW51U2VwZXJhdG9yIj4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJmaXhlZEZpbGVFeHBsb3JlcldoaXRlQm9hcmQiIHR5cGU9InByb2plY3Q6Zml4ZWRGaWxlRXhwbG9yZXJXaGl0ZUJvYXJkIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJmaXhlZEZpbGVFeHBsb3JlcldoaXRlQm9hcmQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGltZWlzSW5pdGVkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZW5kVXBkYXRlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlbmRPYmplY3RUb0NsaWVudElEIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VuZE9iamVjdERlbCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VuZE9iamVjdCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm9vbSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZXN0cmljdGVkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwYXJlbnRQYXRoIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uc2hhcmVkTWVzc2FnZSIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib2JqZWN0UmVmIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtb2R1bGVOYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzbG9hZGluZ0ltYWdlIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc2xvYWRlZEltYWdlIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbml0VyIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW5pdEgiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImltYWdleSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpZ25vcmVVcGRhdGVzIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpYW1nZXgiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmlsZU5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZG93bmxvYWR1cmwiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZG9tYWluIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRvY3VtZW50bWVudUlzSW5pdGVkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb25maXJtZGlhbG9nIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJiYXNldXJsIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0icHJvcGVydHlQYW5lbExldHRlckJ1dHRvbiIgdHlwZT0icHJvamVjdDpwcm9wZXJ0eVBhbmVsTGV0dGVyQnV0dG9uIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJwcm9wZXJ0eVBhbmVsTGV0dGVyQnV0dG9uIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxhYmVsaWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9Ijg3IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXRlbVJlc291cmNlTmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlbmFibGVkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50VmFsIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImltcG9ydFdpbmRvdyIgdHlwZT0icHJvamVjdDppbXBvcnRXaW5kb3ciID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImltcG9ydFdpbmRvdyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpsYWJlbEV4cGxvcmVyQm94Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0id2lub2JqIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1cGxvYWRtb2R1bGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0idXNlcnMiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZXNzaW9uaWQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2Vjb25kaWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InJlY29yZFZhbHVlTGlzdCIgdHlwZT0icHJvamVjdDpyZWNvcmRWYWx1ZUxpc3QiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InJlY29yZFZhbHVlTGlzdCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDp0dXJuT3Zlckxpc3QiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpdGVtVG9EZWxldGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRlbGV0ZUl0ZW0iIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibG9hZFdoaXRlYm9hcmRXaW5kb3ciIHR5cGU9InByb2plY3Q6bG9hZFdoaXRlYm9hcmRXaW5kb3ciID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImxvYWRXaGl0ZWJvYXJkV2luZG93IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmxhYmVsVGV4dCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlZk9iaiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJiYXNlVG9wUGFuZWwiIHR5cGU9InByb2plY3Q6YmFzZVRvcFBhbmVsIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJiYXNlVG9wUGFuZWwiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZUJvdW5kaW5nQm9yZGVyVmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRpdGxlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImJhc2VQYW5lbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRpdGxlIG9mIHRoaXMgd2luZG93IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYWJlbGlkIiB0eXBlPSJseng6bnVtYmVyIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xvc2FibGUiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGlmIHRoaXMgQm94IHNob3VsZCBiZSBjbG9zZWFibGUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYXR0ZW5kZUl0ZW1MaXN0SXRlbSIgdHlwZT0icHJvamVjdDphdHRlbmRlSXRlbUxpc3RJdGVtIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJhdHRlbmRlSXRlbUxpc3RJdGVtIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VDb250ZW50TGlzdEl0ZW0iPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1c2VySWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbVRpbWVab25lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsb2dpbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYXN0bmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmaXJzdG5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZW1haWwiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJjYWxlbmRhcldlZWtWaWV3IiB0eXBlPSJwcm9qZWN0OmNhbGVuZGFyV2Vla1ZpZXciID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImNhbGVuZGFyV2Vla1ZpZXciIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJpbmZvc1BhbmVsIiB0eXBlPSJwcm9qZWN0OmluZm9zUGFuZWwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyAiU3lzdGVtIiBwYW5lbCBvbiB0aGUgZGFzaGJvYXJkIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImluZm9zUGFuZWwiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6Z3VpUHJlc2VudGVyIj4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJoZWxwQW5kQnVnczIiIHR5cGU9InByb2plY3Q6aGVscEFuZEJ1Z3MyIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJoZWxwQW5kQnVnczIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ2c2xpZGVyVGh1bWIiIHR5cGU9InByb2plY3Q6dnNsaWRlclRodW1iIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ2c2xpZGVyVGh1bWIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpidXR0b24iPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzaG93dmFsdWUiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZHJhZ19taW4iIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkcmFnX21heCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0idGFibGVDb21ib2JveCIgdHlwZT0icHJvamVjdDp0YWJsZUNvbWJvYm94IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0YWJsZUNvbWJvYm94IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6Y29tYm9ib3giPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0dmFsdWUiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlbmRjaGFuZ2UiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImluaXR2YWx1ZSIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJpbWFnZUxpc3RJbm5lclRhYmxlIiB0eXBlPSJwcm9qZWN0OmltYWdlTGlzdElubmVyVGFibGUiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImltYWdlTGlzdElubmVyVGFibGUiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJiYXNlRHJhd0ltYWdlIiB0eXBlPSJwcm9qZWN0OmJhc2VEcmF3SW1hZ2UiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImJhc2VEcmF3SW1hZ2UiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZURyYXdMZXR0ZXIiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzeW5jSW1hZ2VSZWZPYmoiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN5bmNJbWFnZUNoZWNrVGltZSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMTAwMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNldE5ld1NjcmVlblVzZXJOYW1lIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzY3JlZW5JbWFnZVJlZk51bWJlciIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNjcmVlbkltYWdlUmVmMiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2NyZWVuSW1hZ2VSZWYxIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsb2FkaW5nVXNlcnNJbWFnZUxpc3RJbmRleCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxvYWRpbWFnZURhdGFXaW5SZWYiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxvYWRJbWFnZU9iamVjdFRpbWVyIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc1dtbExvYWRlckltYWdlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc1NjcmVlbkltYWdlTG9hZGluZyIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW1hZ2VTeW5jTWVzc2FnZVRleHQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW1hZ2VTeW5jTWVzc2FnZUlkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIyMDkiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbWFnZUxvYWRpbmdDb21wbGV0ZU1lc3NhZ2UiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImltYWdlTG9hZE1lc3NhZ2VJZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMjA4IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJkeW5hbWljRkxWTmFtZSIgdHlwZT0icHJvamVjdDpkeW5hbWljRkxWTmFtZSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iZHluYW1pY0ZMVk5hbWUiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6Y3VzdG9tSW5wdXR0ZXh0Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVmT2JqIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc093bmVyIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc05ldyIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmlsZUV4cGxvcmVySXRlbUlkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ3aGl0ZWJvYXJkQmFyTWVudSIgdHlwZT0icHJvamVjdDp3aGl0ZWJvYXJkQmFyTWVudSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0id2hpdGVib2FyZEJhck1lbnUiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3RhdGljd2lkdGgiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjEyMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRCdG4iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iX3JlY29yZFBsYXllckJHIiB0eXBlPSJwcm9qZWN0Ol9yZWNvcmRQbGF5ZXJCRyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iX3JlY29yZFBsYXllckJHIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iX3ZpZGVvQm9hcmRTdHJlYW0iIHR5cGU9InByb2plY3Q6X3ZpZGVvQm9hcmRTdHJlYW0iID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Il92aWRlb0JvYXJkU3RyZWFtIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0Omd1aVByZXNlbnRlciI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0id2hpdGVib2FyZFZpZGVvUGxheWVyIiB0eXBlPSJwcm9qZWN0OndoaXRlYm9hcmRWaWRlb1BsYXllciIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0id2hpdGVib2FyZFZpZGVvUGxheWVyIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0Omd1aVByZXNlbnRlciI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRpbWVyRGVsZWdhdGVTdGFydGVkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0aW1lckRlbGVnYXRlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZW5kSW5pdCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVjb3JkaW5nTmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc0xvYWRlZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmlsZUV4cGxvcmVySXRlbUlkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGVsdGFJblNlY29uZHMiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImludGVydmlld1doaXRlYm9hcmQiIHR5cGU9InByb2plY3Q6aW50ZXJ2aWV3V2hpdGVib2FyZCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iaW50ZXJ2aWV3V2hpdGVib2FyZCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImNoZWNrTG9naW5EYXRhIiB0eXBlPSJwcm9qZWN0OmNoZWNrTG9naW5EYXRhIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgTE9HSU4gcGFuZWwgd2luZG93IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImNoZWNrTG9naW5EYXRhIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmxhYmVsRXhwbG9yZXJCb3giPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1c2VyX3Bhc3NfbWluaW11bV9sZW5ndGgiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjQiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1c2VyX2xvZ2luX21pbmltdW1fbGVuZ3RoIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSI0IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgTE9HSU4gcGFuZWwgd2luZG93IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzaXBMb2FkZXIiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNob3dSZXNldEJveCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVmT2JqIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYWJlbGlkZXJyb3IiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbml0c2VsZWN0IiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVudGVyUHJlc3NlZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2hpbGRPYmoiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibHpSZWNvcmRpbmdzVmlld0JvdHRvbSIgdHlwZT0icHJvamVjdDpselJlY29yZGluZ3NWaWV3Qm90dG9tIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisKKwlWaWV3IGZvciByZWNvcmRlZCBjb250ZW50cyBsaXN0LgorCVdoZW4geW91IHNlbGVjdCAnUmVjb3JkaW5ncycgb24gdGhlIHRvcCBtZW51LCB0aGlzIGNsYXNzIHNob3dzIHRoZSBsaXN0LgorPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibHpSZWNvcmRpbmdzVmlld0JvdHRvbSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpjb25mZXJlbmNlQm94Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGl4ZWxGYWN0b3IiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKworCVZpZXcgZm9yIHJlY29yZGVkIGNvbnRlbnRzIGxpc3QuCisJV2hlbiB5b3Ugc2VsZWN0ICdSZWNvcmRpbmdzJyBvbiB0aGUgdG9wIG1lbnUsIHRoaXMgY2xhc3Mgc2hvd3MgdGhlIGxpc3QuCis8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGVsdGFJblNlY29uZHMiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50UmVjb3JkaW5nIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImxkYXBBZG1pbkxpc3RJdGVtIiB0eXBlPSJwcm9qZWN0OmxkYXBBZG1pbkxpc3RJdGVtIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgRXhpc3Rpbmcgb3JnYW5pemF0aW9uIGxpc3QuIHVzZWQgYnkgb3JnQWRtaW4gb25seSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJsZGFwQWRtaW5MaXN0SXRlbSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpiYXNlQ29udGVudExpc3RJdGVtIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idE5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGRhcENvbmZpZ0lkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgRXhpc3Rpbmcgb3JnYW5pemF0aW9uIGxpc3QuIHVzZWQgYnkgb3JnQWRtaW4gb25seSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29uZmlnRmlsZU5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ0dXJub3Zlcmxpc3RoZWFkZXJpdGVtSWNvbiIgdHlwZT0icHJvamVjdDp0dXJub3Zlcmxpc3RoZWFkZXJpdGVtSWNvbiIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idHVybm92ZXJsaXN0aGVhZGVyaXRlbUljb24iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzaWN0dXJub3Zlcmxpc3RoZWFkZXJpdGVtIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idG9vbFRpcExhYmVsSWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdWJ2aWV3c2lkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaWNvblJlc291cmNlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibW9kZXJhdGlvbk1pbmlJY29uc0ludGVydmlld1VzZXJMaXN0IiB0eXBlPSJwcm9qZWN0Om1vZGVyYXRpb25NaW5pSWNvbnNJbnRlcnZpZXdVc2VyTGlzdCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibW9kZXJhdGlvbk1pbmlJY29uc0ludGVydmlld1VzZXJMaXN0IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iY29sb3JSZWN0Q2hvb3NlIiB0eXBlPSJwcm9qZWN0OmNvbG9yUmVjdENob29zZSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iY29sb3JSZWN0Q2hvb3NlIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmNvbG9yUmVjdENob29zZWJhc2UiPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InZlcnRpY2FsTWVudUljb25CYXIiIHR5cGU9InByb2plY3Q6dmVydGljYWxNZW51SWNvbkJhciIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idmVydGljYWxNZW51SWNvbkJhciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtb2RpIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ib21sZWdlbmQiIHR5cGU9InByb2plY3Q6b21sZWdlbmQiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKworICAgICBzaW1wbGUgbGVnZW5kIGNsYXNzCisgICAgIEBhY2Nlc3MgcHVibGljCisgICAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJvbWxlZ2VuZCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmRyYXd2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmVydGljYWxnYXAiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjEiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBAa2V5d29yZCBwcml2YXRlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0b3BtYXJnaW4iIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBAa2V5d29yZCBwcml2YXRlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdHlsZUJvcmRlciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSW5kaWNhdGVzIHRoZSBzdHlsZSB3aWxsIGJlIGFwcGxpZWQgdGhvIHRoZSBib3JkZXIgbGVnZW5kIGJveCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmlnaHRtYXJnaW4iIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBAa2V5d29yZCBwcml2YXRlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwb3NpdGlvbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJyaWdodCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEluZGljYXRlcyB3aGVyZSB0aGUgbGVnZW5kIGJveCB3aWxsIGJlIHBvc2l0aW9uZWQsIGRlZmF1bHQ6IHJpZ2h0IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbml0ZW1tb3VzZXVwIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBldmVudCB0aGF0IGFsbG93cyBjdXN0b20gYWN0aW9uIGZvciBtb3VzZSB1cCBldmVudAorICAgICAgICAgICAgQHBhcmFtIE51bWJlciBpdGVtOiBUaGUgaWRlbnRpZmllciBsZWdlbmQgaXRlbQorICAgICAgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uaXRlbW1vdXNlb3ZlciIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgZXZlbnQgdGhhdCBhbGxvd3MgY3VzdG9tIGFjdGlvbiBmb3IgbW91c2Ugb3ZlciBldmVudAorICAgICAgICAgICAgQHBhcmFtIE51bWJlciBpdGVtOiBUaGUgaWRlbnRpZmllciBsZWdlbmQgaXRlbQorICAgICAgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uaXRlbW1vdXNlb3V0IiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBldmVudCB0aGF0IGFsbG93cyBjdXN0b20gYWN0aW9uIGZvciBtb3VzZSBvdXQgZXZlbnQKKyAgICAgICAgICAgIEBwYXJhbSBOdW1iZXIgaXRlbTogVGhlIGlkZW50aWZpZXIgbGVnZW5kIGl0ZW0KKyAgICAgICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbml0ZW1tb3VzZWRvd24iIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGV2ZW50IHRoYXQgYWxsb3dzIGN1c3RvbSBhY3Rpb24gZm9yIG1vdXNlIGRvd24gZXZlbnQKKyAgICAgICAgICAgIEBwYXJhbSBOdW1iZXIgaXRlbTogVGhlIGlkZW50aWZpZXIgbGVnZW5kIGl0ZW0KKyAgICAgICAgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbml0ZW1tb3VzZWNsaWNrIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBldmVudCB0aGF0IGFsbG93cyBjdXN0b20gYWN0aW9uIGZvciBtb3VzZSBjbGljayBldmVudAorICAgICAgICAgICAgQHBhcmFtIE51bWJlciBpdGVtOiBUaGUgaWRlbnRpZmllciBsZWdlbmQgaXRlbQorICAgICAgICAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxlZ2VuZGJvcmRlciIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJbmRpY2F0ZXMgaWYgbGVnZW5kIGJveCB3aWxsIGhhdmUgYSBib3JkZXIsIGRlZmF1bHQ6IHRydWUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxlZ2VuZEZvbnRzaXplIiB0eXBlPSJseng6c2l6ZSIgZGVmYXVsdD0iNiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEluZGljYXRlcyB0aGUgRm9udCBzaXplIHdpaWwgYmUgdXNlZCBpbiB0aGUgbGVnZW5kIGl0ZW0gdGV4dCwgZGVmYXVsdDogMTBweCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGVnZW5kRm9udGNvbG9yIiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9IjB4MDAwMDAwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSW5kaWNhdGVzIHRoZSBGb250IGNvbG9yIHdpaWwgYmUgdXNlZCBpbiB0aGUgbGVnZW5kIGl0ZW0gdGV4dCwgZGVmYXVsdDogYmxhY2sgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxlZ2VuZEZvbnQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ic2VyaWYiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBJbmRpY2F0ZXMgdGhlIEZvbnQgd2lsbCBiZSB1c2VkIGluIHRoZSBsZWdlbmQgaXRlbSB0ZXh0IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsZWZ0bWFyZ2luIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQGtleXdvcmQgcHJpdmF0ZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmlsbENvbG9yIiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9IjB4RkZGRkZGIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQWxsb3cgdG8gc2V0IHRoZSBmaWxsIGNvbG9yIGZyb20gdGhlIGxlZ2VuZCB0YWcgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRpcmVjdGlvbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJ2ZXJ0aWNhbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEluZGljYXRlcyBob3cgdGhlIGxlZ2VuZCBpdGVtcyB3aWxsIGJlIGRpc3BsYXllZCwgZGVmYXVsdDogdmVydGljYWwgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoYXJ0Q2xhc3NOYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiR7bnVsbH0iID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjaGFydCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIke251bGx9IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGFrZXMgdGhlIHJlbGF0aW9uc2hpcCB3aXRoIHRoZSBjaGFydCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYm90dG9tbWFyZ2luIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQGtleXdvcmQgcHJpdmF0ZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyV2lkdGgiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjEiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBBbGxvdyB0byBzZXQgdGhlIGxpbmUgd2lkdGggZnJvbSB0aGUgbGVnZW5kIHRhZyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYm9yZGVyQ29sb3IiIHR5cGU9Imx6eDpjb2xvciIgZGVmYXVsdD0iMHgwMDAwMDAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBBbGxvdyB0byBzZXQgdGhlIGNvbG9yIGxpbmUgZnJvbSB0aGUgbGVnZW5kIHRhZyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ2aWRlb0luZm9TdHVmZiIgdHlwZT0icHJvamVjdDp2aWRlb0luZm9TdHVmZiIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idmlkZW9JbmZvU3R1ZmYiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJkb2N1bWVudEljb25MZWZ0UGFuZWwiIHR5cGU9InByb2plY3Q6ZG9jdW1lbnRJY29uTGVmdFBhbmVsIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJkb2N1bWVudEljb25MZWZ0UGFuZWwiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZUxlZnRQYW5lbCI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iY2xvc2FibGVWaWV3IiB0eXBlPSJwcm9qZWN0OmNsb3NhYmxlVmlldyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iY2xvc2FibGVWaWV3IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iY29sb3JSZWN0Q2hvb3NlU21hbGwiIHR5cGU9InByb2plY3Q6Y29sb3JSZWN0Q2hvb3NlU21hbGwiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImNvbG9yUmVjdENob29zZVNtYWxsIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmNvbG9yUmVjdENob29zZWJhc2UiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkZWZhdWx0bm8iIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJhc2VEcmF3IiB0eXBlPSJwcm9qZWN0OmJhc2VEcmF3IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJiYXNlRHJhdyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdGFydHkiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdGFydHgiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzaG93R3JpZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VsZWN0ZWRPYmplY3RzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZXN0cmljdGVkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWRvbGF5ZXJzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwcmV2eSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InByZXZ4IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib251cGRhdGVTY2FsZSIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25vcGVuV2hpdGVCb2FyZCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibXkiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJteCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1vdXNldHJhY2tlcl9kZWwiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJG9uY2V7IG5ldyBMekRlbGVnYXRlKHRoaXMsICd0cmFja21vdXNlJyApfSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxheWVycyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFzdF95IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFzdF94IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNTbmFwVG9HcmlkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc1JlbW90ZU9JRCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSWYgdHJ1ZSBpdCB3aWxsIHRyeSB0byBsb2FkIHRoZSBPYmplY3RJZGVudGlmaWVyIEV4dGVuc2lvbiBmcm9tIHRoZSBTZXJ2ZXIgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzRHJhZ2dpbmciIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imhhc3ByZXZpb3VzIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJoYXNlbmV4dCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZ3JpZFdpZHRoIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIyNCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVuZHkiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlbmR4IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZHJhd21vZHVzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImhhbmQiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkb0NsZWFyU2xpZGUiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRvQ2xlYXJBbGwiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRsYXllciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY291bnRlciIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvcHlPYmplY3QiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJvdW5kaW5ncmVmIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJib3VuZGluZ0lzQWN0aXZlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJiYXNldGVtcGFjdGlvbm9iamVjdExpc3QiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJhc2VyZWRvYWN0aW9ub2JqZWN0TGlzdCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYmFzZWFjdGlvbm9iamVjdExpc3QiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJhc2RyYXdyZWRvVmlldyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iT2JqZWN0QnlOYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImludGVydmlld0NvbmZlcmVuY2VSb29tIiB0eXBlPSJwcm9qZWN0OmludGVydmlld0NvbmZlcmVuY2VSb29tIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJpbnRlcnZpZXdDb25mZXJlbmNlUm9vbSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpiYXNlQ29uZmVyZW5jZVJvb20iPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Im11bHRpV2hpdGVib2FyZFBhbmVsIiB0eXBlPSJwcm9qZWN0Om11bHRpV2hpdGVib2FyZFBhbmVsIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJtdWx0aVdoaXRlYm9hcmRQYW5lbCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpmaXhlZEZpbGVFeHBsb3JlcldoaXRlQm9hcmQiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ3aGl0ZWJvYXJkSWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvYmpXaGl0ZWJvYXJkIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvYmpNZXNzYWdlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Imxpc3RQcmVzZW50YXRpb25UaHVtYkV4cGxvcmVyIiB0eXBlPSJwcm9qZWN0Omxpc3RQcmVzZW50YXRpb25UaHVtYkV4cGxvcmVyIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJsaXN0UHJlc2VudGF0aW9uVGh1bWJFeHBsb3JlciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpiYXNlTGlzdFByZXNlbnRhdGlvbkl0ZW1FeHBsb3JlciI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRodW1ibmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJubyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InJvb21BZG1pbiIgdHlwZT0icHJvamVjdDpyb29tQWRtaW4iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBBZG1pbiBtb2R1bGUgdG8gY29uZmlndXJlIHRoZSBDb25mZXJlbmNlIG9yIEF1ZGllbmNlIHJvb20uPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0icm9vbUFkbWluIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VDb250ZW50VmlldyI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYmFzZUZpbGVFeHBsb3Jlckl0ZW0iIHR5cGU9InByb2plY3Q6YmFzZUZpbGVFeHBsb3Jlckl0ZW0iID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImJhc2VGaWxlRXhwbG9yZXJJdGVtIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNpbmdsZUNsaWNrU3RhcnRlZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2luZ2xlQ2xpY2tEZWxlZ2F0ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VsZWN0ZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlZk9iakxpc3RSb290IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvcGVuIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtb3VzZURvd25DbGlja1VzZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1vdXNlRG93bkNsaWNrRGVsZWdhdGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzVmlkZW8iIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzVHJhc2hDYW4iIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzUm9vdCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNQcmVzZW50YXRpb24iIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzT3duZXIiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzTW91c2VEb3duRHJhZ0FjdGlvbiIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNJbWFnZSIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNGb2xkZXIiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmlsZU5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmlsZUljb24iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ic3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmlsZUhhc2giIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmlsZUV4cGxvcmVySXRlbUlkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJzZWFyY2hVc2VyUHJvZmlsZUltYWdlIiB0eXBlPSJwcm9qZWN0OnNlYXJjaFVzZXJQcm9maWxlSW1hZ2UiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InNlYXJjaFVzZXJQcm9maWxlSW1hZ2UiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icHJvZmlsZVVybCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImNob29zZU5pY2tOYW1lIiB0eXBlPSJwcm9qZWN0OmNob29zZU5pY2tOYW1lIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJjaG9vc2VOaWNrTmFtZSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpsYWJlbEV4cGxvcmVyQm94Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJzd2ZSZXNvdXJjZVZpZXciIHR5cGU9InByb2plY3Q6c3dmUmVzb3VyY2VWaWV3IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJzd2ZSZXNvdXJjZVZpZXciIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iem9vbWxldmVsIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIyMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVuaXF1ZU9iamVjdFN5bmNOYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InR5cGVPZk9iamVjdCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJzd2YiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdGFuZGFyZEZpbGVOYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNsaWRlTnVtYmVyIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm9vbSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWZPYmoiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlY29yZGVyTW9kdXMiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBhcmVudFBhdGgiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibW9kdWxlTmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbm5lcnkiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbm5lcngiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbm5lcndpZHRoIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW5uZXJoZWlnaHQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbml0d2lkdGgiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbml0aGVpZ2h0IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZnVsbEZpdCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmaWxlTmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkb21haW4iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZG9TZW5kQ2hhbmdlVmFsdWUiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImN1cnJlbnR6b29tRmFjdG9yIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxMDAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50em9vbSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJhc2V1cmwiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWx0ZXJNb2R1cyIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InVzZXJSb29tVGFiSXRlbSIgdHlwZT0icHJvamVjdDp1c2VyUm9vbVRhYkl0ZW0iID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InVzZXJSb29tVGFiSXRlbSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1c2VydGltZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1c2VybmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1c2VyX2lkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2J0ZXh0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iY29sb3JSb3ciIHR5cGU9InByb2plY3Q6Y29sb3JSb3ciID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImNvbG9yUm93IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0icm9vbUNsaWVudExpc3RJdGVtIiB0eXBlPSJwcm9qZWN0OnJvb21DbGllbnRMaXN0SXRlbSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGxpc3Qgb2YgY29uZmVyZW5jZS9hdWRpZW5jZSByb29tcyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJyb29tQ2xpZW50TGlzdEl0ZW0iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZUNvbnRlbnRMaXN0SXRlbSI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN0cmVhbWlkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgbGlzdCBvZiBjb25mZXJlbmNlL2F1ZGllbmNlIHJvb21zIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzY29wZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsb2dpbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkYXRlQ29ubmVjdGVkIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibW9kZXJhdGlvbk1pbmlJY29ucyIgdHlwZT0icHJvamVjdDptb2RlcmF0aW9uTWluaUljb25zIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJtb2RlcmF0aW9uTWluaUljb25zIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InB1YmxpY1NJRCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc1N1cGVyTW9kZXJhdG9yIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc01vZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNBY3RpdmUiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJyZWRpcmVjdEJveCIgdHlwZT0icHJvamVjdDpyZWRpcmVjdEJveCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0icmVkaXJlY3RCb3giIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6bGFiZWxFeHBsb3JlckJveCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRpbWVyRGVsIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWZPYmoiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlZGlyZWN0VVJMIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1heFRpbWUiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjUwMDAiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InJlbWVtYmVyTWVzc2FnZSIgdHlwZT0icHJvamVjdDpyZW1lbWJlck1lc3NhZ2UiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InJlbWVtYmVyTWVzc2FnZSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpsYWJlbEV4cGxvcmVyQm94Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2hvd0NoZWNrQm94IiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlZk9iaiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZGVycm9yIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJpbnB1dHRleHRib3giIHR5cGU9InByb2plY3Q6aW5wdXR0ZXh0Ym94IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJpbnB1dHRleHRib3giIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDppbnB1dHRleHQiPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InBhcnRpY2lwZW50c1RhYmxlIiB0eXBlPSJwcm9qZWN0OnBhcnRpY2lwZW50c1RhYmxlIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJwYXJ0aWNpcGVudHNUYWJsZSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJhc2VEcmF3U2F2ZSIgdHlwZT0icHJvamVjdDpiYXNlRHJhd1NhdmUiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImJhc2VEcmF3U2F2ZSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpiYXNlRHJhd0ltYWdlIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0id21sc3ByZWFkTmV3cyIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0id21scm9vbSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ3bWxmaWxlTmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ3bWxkb21haW4iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0id21sTG9hZGluZ0NvbXBsZXRlTWVzc2FnZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idyIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN5bmNtZXNzYWdlSWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjIwNyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN5bmNjaGVja1RpbWUiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjEwMDAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzbmFwIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZW5kcGljdHVyZU5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ic25hcGNob3QuanBnIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VuZFVSTCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJodHRwOi8vd3d3LndlYmJhc2UtZGVzaWduLmRlL2Rva2Vvcy92aWRlb2NvbmZlcmVuY2UvY3JlYXRlaW1hZ2Vmcm9tYml0bWFwLnBocCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlbmRQYXJ0VVJMIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Imh0dHA6Ly93d3cud2ViYmFzZS1kZXNpZ24uZGUvZG9rZW9zL3ZpZGVvY29uZmVyZW5jZS9jcmVhdGVpbWFnZWZyb21iaXRtYXAucGhwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2F2ZWZpbGVOYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9InNhdmVmaWxlTmFtZTEiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzYXZlZmlsZURhdGFXaW5SZWYiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBpeGVsX2RlbCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIkb25jZXsgbmV3IEx6RGVsZWdhdGUodGhpcywgJ2J1aWxkUGl4ZWxBcnJheScgKX0iID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwaXhlbEFycmF5IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbndtbGxvYWRTdG9wIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbndtbGxvYWRTdGFydCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25wcm9ncmVzcyIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibG9hZG1lc3NhZ2VJZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMjA2IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibG9hZGZpbGVEYXRhV2luUmVmIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsb2FkZmlsZURhdGFJbmRleCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxvYWRmaWxlRGF0YSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibG9hZE9iamVjdFRpbWVyIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc2luaXRSZWNvcmRpbmdMb2FkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc1NlbmRQYXJ0QXJyYXkiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNSZWNvcmRpbmdMb2FkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc0luaXRMb2FkZXIiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImgiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmaWxlRGF0YSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZXhwb3J0VHlwZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJzdmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJicERhdGEiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImEiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJNYXRyaXhWYWx1ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iTUNSZWYiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ic2ltcGxlTGFiZWxCdXR0b24iIHR5cGU9InByb2plY3Q6c2ltcGxlTGFiZWxCdXR0b24iID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InNpbXBsZUxhYmVsQnV0dG9uIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YnV0dG9uIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZCIgdHlwZT0ibHp4Om51bWJlciIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iY2hhdFRhYkl0ZW0iIHR5cGU9InByb2plY3Q6Y2hhdFRhYkl0ZW0iID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImNoYXRUYWJJdGVtIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVzZXJ0aW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVzZXJuYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVzZXJjb2xvciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idXNlcl9pZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNidGV4dCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJvdW5kaW5nQm94QWxsIiB0eXBlPSJwcm9qZWN0OmJvdW5kaW5nQm94QWxsIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJib3VuZGluZ0JveEFsbCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ3aGl0ZWJvYXJkUmVmIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdGFydGRyYWdZIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3RhcnRkcmFnWCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN0YXJ0ZHJhZ1dpZHRoIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3RhcnRkcmFnSGVpZ2h0IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib2JqUmVmIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtaW53aWR0aCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIyIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgTWluaW11bSB3aWR0aCBmb3IgdGhlIHdpbmRvd3ksIGRlZmF1bHQ6IDYwLgorICAgICAgICAgIEBrZXl3b3JkcyBmaW5hbCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWluaGVpZ2h0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBNaW5pbXVtIGhlaWdodCBmb3IgdGhlIHdpbmRvdywgZGVmYXVsdDogNTAuCisgICAgICAgICAgQGtleXdvcmRzIGZpbmFsIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbm5lckluc2V0U2Nyb2xsYmFycyIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImV5IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZXgiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJld2lkdGgiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlaGVpZ2h0IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZG9IYW5kbGVyVXBkYXRlcyIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2FuQmVSZXNpemVkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNhbkJlRHJhZ2dlZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJib3VuZGluZ0RvVXBkYXRlT25Jbml0IiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ic2F2ZUFzV21sV2luZG93IiB0eXBlPSJwcm9qZWN0OnNhdmVBc1dtbFdpbmRvdyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ic2F2ZUFzV21sV2luZG93IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmxhYmVsRXhwbG9yZXJCb3giPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWZPYmoiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZmlsZUV4cGxvcmVyV2luZG93IiB0eXBlPSJwcm9qZWN0OmZpbGVFeHBsb3JlcldpbmRvdyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iZmlsZUV4cGxvcmVyV2luZG93IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmxhYmVsRXhwbG9yZXJCb3giPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImNvbnRhY3RTZWFyY2hIZWFkIiB0eXBlPSJwcm9qZWN0OmNvbnRhY3RTZWFyY2hIZWFkIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJjb250YWN0U2VhcmNoSGVhZCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InVwbG9hZFdpbmRvd0V4cGxvcmVyIiB0eXBlPSJwcm9qZWN0OnVwbG9hZFdpbmRvd0V4cGxvcmVyIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ1cGxvYWRXaW5kb3dFeHBsb3JlciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpsYWJlbEV4cGxvcmVyQm94Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0id2lub2JqIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1c2Vyc2lkIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVwbG9hZG1vZHVsZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJ2aWRlb2NvbmYxIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2luZ2xlc2xpZGVzbW9kdWxlX2lkIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlc3Npb25pZCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZXJ2bGV0TmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJVcGxvYWRIYW5kbGVyIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmV0dXJuT2JqIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBhcmVudEZvbGRlcklkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNkZWZhdWx0cmV0dXJuIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzU3RhcnRlZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNPd25lciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNPbmx5WG1sIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc09ubHlQcm9maWxlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc09ubHlQcHQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzT25seUltYWdlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmaWxlRXhwbG9yZXJSZWYiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibW9kZXJhdGlvblBhbmVsIiB0eXBlPSJwcm9qZWN0Om1vZGVyYXRpb25QYW5lbCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibW9kZXJhdGlvblBhbmVsIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvb21OYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlY29yZGluZ3NOYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlY29yZGluZ1VzZXIiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImluaXRpYWwiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWxsb3dVc2VyUXVlc3Rpb25zIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0icHJlc2VudGF0aW9uRmlsZXNMaXN0IiB0eXBlPSJwcm9qZWN0OnByZXNlbnRhdGlvbkZpbGVzTGlzdCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0icHJlc2VudGF0aW9uRmlsZXNMaXN0IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVwbG9hZG1vZHVsIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiRvbmNleyBjYW52YXMudXBsb2FkbW9kdWxlaW1nIH0iID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmNsb3NlIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImNvbmZlcmVuY2Vjb250YWluZXJ0YWIiIHR5cGU9InByb2plY3Q6Y29uZmVyZW5jZWNvbnRhaW5lcnRhYiIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iY29uZmVyZW5jZWNvbnRhaW5lcnRhYiIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9IndoaXRlYm9hcmRNaW5pQnV0dG9uIiB0eXBlPSJwcm9qZWN0OndoaXRlYm9hcmRNaW5pQnV0dG9uIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ3aGl0ZWJvYXJkTWluaUJ1dHRvbiIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ6aWVseCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMjAwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iemllbHdpZHRoIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxMDAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvYmpSZWYiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzYWN0aXZlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzSGlkZGVuIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJidG5OYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ib3JnVXNlcnNSZWNvcmRWYWx1ZUxpc3QiIHR5cGU9InByb2plY3Q6b3JnVXNlcnNSZWNvcmRWYWx1ZUxpc3QiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBFeGlzdGluZyBvcmdhbml6YXRpb24gbGlzdC4gdXNlZCBieSBvcmdBZG1pbiBvbmx5IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Im9yZ1VzZXJzUmVjb3JkVmFsdWVMaXN0IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OnJlY29yZFZhbHVlTGlzdCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVzZXJzSWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBFeGlzdGluZyBvcmdhbml6YXRpb24gbGlzdC4gdXNlZCBieSBvcmdBZG1pbiBvbmx5IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImxhYmVsQ2hlY2tib3giIHR5cGU9InByb2plY3Q6bGFiZWxDaGVja2JveCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibGFiZWxDaGVja2JveCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmNoZWNrYm94Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZCIgdHlwZT0ibHp4Om51bWJlciIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYmFzZUNob29zZUljb24iIHR5cGU9InByb2plY3Q6YmFzZUNob29zZUljb24iID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImJhc2VDaG9vc2VJY29uIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlc291cmNlTiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYWJlbGlkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNzZWxlY3RlZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW5pdFkiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbml0WCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZHJhd0xpbmVUb29scyIgdHlwZT0icHJvamVjdDpkcmF3TGluZVRvb2xzIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJkcmF3TGluZVRvb2xzIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYmFzZUNvbnRlbnRMaXN0SXRlbSIgdHlwZT0icHJvamVjdDpiYXNlQ29udGVudExpc3RJdGVtIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgYmFzZSBjbGFzcyBmb3IgdGhlIGl0ZW0gbGlzdCB2aWV3czwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImJhc2VDb250ZW50TGlzdEl0ZW0iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib2JqIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc3NlbGVjdGVkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBiYXNlIGNsYXNzIGZvciB0aGUgaXRlbSBsaXN0IHZpZXdzPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iaW1hZ2VzTGlzdGRyYXciIHR5cGU9InByb2plY3Q6aW1hZ2VzTGlzdGRyYXciID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImltYWdlc0xpc3RkcmF3IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVwbG9hZG1vZHVsIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiRvbmNleyBjYW52YXMudXBsb2FkbW9kdWxlaW1nIH0iID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Im1lZXRpbmdUaW1lciIgdHlwZT0icHJvamVjdDptZWV0aW5nVGltZXIiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Im1lZXRpbmdUaW1lciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpsYWJlbEV4cGxvcmVyQm94Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm9vbW9iaiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVmT2JqIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkZW1vVGltZSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iY2hhdE91dHB1dCIgdHlwZT0icHJvamVjdDpjaGF0T3V0cHV0IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgY2hhdCBvdXRwdXQgc3BlY2lhbGl6ZWQgZm9yIHZpZGVvLWNvbmZlcmVuY2UgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iY2hhdE91dHB1dCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc0FscmVhZHlMb2FkZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGNoYXQgb3V0cHV0IHNwZWNpYWxpemVkIGZvciB2aWRlby1jb25mZXJlbmNlIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Im1haW5EYXNoYm9hcmRTcG9uc29yZWQiIHR5cGU9InByb2plY3Q6bWFpbkRhc2hib2FyZFNwb25zb3JlZCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorICBtb2R1bGVzOmRhc2hib2FyZCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJtYWluRGFzaGJvYXJkU3BvbnNvcmVkIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VDb250ZW50VmlldyI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZGVidWdQaW5Db2RlIiB0eXBlPSJwcm9qZWN0OmRlYnVnUGluQ29kZSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iZGVidWdQaW5Db2RlIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmxhYmVsRXhwbG9yZXJCb3giPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImFjdGl2aXR5TGlzdFJlc3RyaWN0ZWRSb29tQXBwbHlGb3JNdXRlT2ZmIiB0eXBlPSJwcm9qZWN0OmFjdGl2aXR5TGlzdFJlc3RyaWN0ZWRSb29tQXBwbHlGb3JNdXRlT2ZmIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJhY3Rpdml0eUxpc3RSZXN0cmljdGVkUm9vbUFwcGx5Rm9yTXV0ZU9mZiIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpiYXNlSXRlbUFjdGl2aXR5TGlzdCI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0idGV4dEJveFN1YkJsYW5rIiB0eXBlPSJwcm9qZWN0OnRleHRCb3hTdWJCbGFuayIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idGV4dEJveFN1YkJsYW5rIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dGV4dCI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibmV0cmVtb3RlY2FsbCIgdHlwZT0icHJvamVjdDpuZXRyZW1vdGVjYWxsIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisKKyAgICAgICAgTmV0IHJlbW90ZSBjYWxsLiAKKyAgICAgICAgQHRvZG8gRG9jdW1lbnQgbmV0cmVtb3RlY2FsbCBjbGFzcy4KKyAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJuZXRyZW1vdGVjYWxsIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6bm9kZSI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlbW90ZWNvbnRleHQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uZXJyb3IiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEVycm9yIGhhbmRsaW5nIGV2ZW50LiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZnVuY25hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJG9uY2V7bnVsbH0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBOYW1lIG9mIHRoZSByZW1vdGUgZnVuY3Rpb24uIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkYXRhb2JqZWN0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImZsZXhpYmxlQ29uZmVyZW5jZVJvb20iIHR5cGU9InByb2plY3Q6ZmxleGlibGVDb25mZXJlbmNlUm9vbSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iZmxleGlibGVDb25mZXJlbmNlUm9vbSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpiYXNlQ29uZmVyZW5jZVJvb20iPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Im1lbnViYXJCdXR0b24iIHR5cGU9InByb2plY3Q6bWVudWJhckJ1dHRvbiIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibWVudWJhckJ1dHRvbiIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpzaW1wbGVMYWJlbEJ1dHRvbiI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imlzc2VsZWN0ZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsaWVudG9iamVjdEFyZWEiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsaWVudG1hc2tuYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iX3doaXRlQm9hcmRQYW5lbFJlY29yZCIgdHlwZT0icHJvamVjdDpfd2hpdGVCb2FyZFBhbmVsUmVjb3JkIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJfd2hpdGVCb2FyZFBhbmVsUmVjb3JkIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0Omd1aVByZXNlbnRlciI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlZk9iaiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ2YWxpZFRleHQiIHR5cGU9InByb2plY3Q6dmFsaWRUZXh0IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQSBlZGl0ZmllbGRUZXh0IHdpdGggdGhlIHBvc3NpYmlsaXR5IG9mIGEgZHJvcGRvd24gbWVudSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ2YWxpZFRleHQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDplZGl0dGV4dCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZhbGlkYXRlX21ldGhvZCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIG1ldGhvZCB0byBiZSBjYWxsZWQgZm9yIHZhbGlkYXRpbmcgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InR5cGV0aW1lIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSI1MDAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0aW1lcklzSW5pdGVkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0aW1lckRlbGVnYXRlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzcGFjaW5nIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2hvd25pdGVtcyIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iNyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGl0ZW1zIHRvIGJlIHNob3duIGluIHRoZSBmbG9hdGluZ2xpc3QgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlc3VsdE5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibmFtZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHRoZSBuYW1lLWF0dHJpYnV0ZSBvZiB0aGUgcmVzdWx0c2V0IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZXN1bHRJZCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJpZCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHRoZSBpZC1hdHRyaWJ1dGUgb2YgdGhlIHJlc3VsdHNldCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25zZWxlY3QiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uaXNvcGVuIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc29wZW4iIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImluaXRTZWxlY3QiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRWYWx1ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJib3JkZXJzaXplIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjEiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGUgYm9yZGVyIHNpemUgKCBpbiBwaXhlbHMgKSBvZiB0aGUgcG9wdXAgbGlzdC4gIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhdXRvc2Nyb2xsYmFyIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9InRydWUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBXaGV0aGVyIGEgc2Nyb2xsYmFyIHNob3VsZCBhdXRvbWF0aWNhbGx5IHNob3cgdXAgd2hlbiB0aGVyZSBhcmUgbW9yZQorICAgICAgICAgICAgICBpdGVtcyB0aGFuIHNob3duaXRlbXMuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhdHRhY2hvZmZzZXQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9Ii0xIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIHZlcnRpY2FsIG9mZnNldCBvZiB0aGUgZmxvYXRpbmdsaXN0IGF0dGFjaGVkIHRvIHRoaXMKKyAgICAgICAgICAgICAgY29tYm9ib3guIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImRyYXdBcmVhQWx0ZXJQb3NpdGlvbiIgdHlwZT0icHJvamVjdDpkcmF3QXJlYUFsdGVyUG9zaXRpb24iID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImRyYXdBcmVhQWx0ZXJQb3NpdGlvbiIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvYmpOYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9iaiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJjYWxlbmRhckRheVZpZXciIHR5cGU9InByb2plY3Q6Y2FsZW5kYXJEYXlWaWV3IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJjYWxlbmRhckRheVZpZXciIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJjbGlja0JveCIgdHlwZT0icHJvamVjdDpjbGlja0JveCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iY2xpY2tCb3giIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNlY29tcG9uZW50Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib252YWx1ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXN1cGRhdGVDaGVjayIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW5pdHZhbCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJjb2xvclNsaWRlciIgdHlwZT0icHJvamVjdDpjb2xvclNsaWRlciIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCisgICAgICBjaGFuZ2VkIGJ5IHN3YWduZXIKKyAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iY29sb3JTbGlkZXIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpzbGlkZXIiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkb1NlbmRWYWx1ZUV2ZW50IiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKworICAgICAgY2hhbmdlZCBieSBzd2FnbmVyCisgIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Im5ld1doaXRlQm9hcmQiIHR5cGU9InByb2plY3Q6bmV3V2hpdGVCb2FyZCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibmV3V2hpdGVCb2FyZCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZW5kT2JqZWN0VG9DbGllbnRJRCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlbmRPYmplY3QiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvb20iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGFyZW50UGF0aCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbnNoYXJlZE1lc3NhZ2UiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9iamVjdFJlZiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibW9kdWxlTmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc2xvYWRpbmdJbWFnZSIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNsb2FkZWRJbWFnZSIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW5pdFciIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImluaXRIIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbWFnZXkiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaWFtZ2V4IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZpbGVOYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRvd25sb2FkdXJsIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRvbWFpbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkb2N1bWVudG1lbnVJc0luaXRlZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29uZmlybWRpYWxvZyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYmFzZXVybCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InZzbGlkZXJUcmFjayIgdHlwZT0icHJvamVjdDp2c2xpZGVyVHJhY2siID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InZzbGlkZXJUcmFjayIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Im5ldFJlbW90ZUNhbGxIaWIiIHR5cGU9InByb2plY3Q6bmV0UmVtb3RlQ2FsbEhpYiIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibmV0UmVtb3RlQ2FsbEhpYiIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpuZXRyZW1vdGVjYWxsIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2hvd0xvYWRpbmciIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+Cisgc2hvdyBFcnJvciBNZXNzYWdlcyB3aXRoIG5vcm1hbCBCb3ggPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlbmRDYWxsQmFjayIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmV0dXJuT2JqIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyB0aGlzIHNob3VsZCBiZSB0aGUgY29udGVudFNhdmVXaW5kb3cgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlZ2lzdGVyT2JqZWN0IiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBpZiB0cnVlIHRoaXMgb2JqZWN0IHdpbGwgcmVnaXN0ZXIgYXQgdGhlIHVwZGF0ZS1vYnNlcnZlciA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNDYWxsQmFja0hhbmRsZXIiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHNob3cgRXJyb3IgTWVzc2FnZXMgd2l0aCBDYWxsYmFjayBCb3ggPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFjdGl2ZUVycm9ySGFuZGxlciIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+Cisgc2hvdyBFcnJvciBNZXNzYWdlcyB3aXRoIG5vcm1hbCBCb3ggPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ib21sZWdlbmRpdGVtIiB0eXBlPSJwcm9qZWN0Om9tbGVnZW5kaXRlbSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEBrZXl3b3JkIHByaXZhdGUKKyAgICBpbmRpdmlkdWFsIGxlZ2VuZCBpdGVtIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Im9tbGVnZW5kaXRlbSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0Qm94IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxpbmV2aXNpYmxlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpZGVudGlmaWVyIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQGtleXdvcmQgcHJpdmF0ZQorICAgIGluZGl2aWR1YWwgbGVnZW5kIGl0ZW0gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZHJhd0Fycm93V2hpdGVCb2FyZCIgdHlwZT0icHJvamVjdDpkcmF3QXJyb3dXaGl0ZUJvYXJkIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJkcmF3QXJyb3dXaGl0ZUJvYXJkIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iY3VzdG9tU2Nyb2xsRWRpdHRleHQiIHR5cGU9InByb2plY3Q6Y3VzdG9tU2Nyb2xsRWRpdHRleHQiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImN1c3RvbVNjcm9sbEVkaXR0ZXh0IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRleHQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib250ZXh0Q2hhbmdlIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYWJlbGlkIiB0eXBlPSJseng6bnVtYmVyIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJzdHlsZWFibGVJbnB1dCIgdHlwZT0icHJvamVjdDpzdHlsZWFibGVJbnB1dCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ic3R5bGVhYmxlSW5wdXQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6Y3VzdG9tSW5wdXR0ZXh0Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3RhcnRBZGp1c3RIaWdodCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2V0Rm9jdXNPbkluaXQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJpbnRlcnZpZXdSb29tU2lkZWJhciIgdHlwZT0icHJvamVjdDppbnRlcnZpZXdSb29tU2lkZWJhciIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iaW50ZXJ2aWV3Um9vbVNpZGViYXIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VsZWN0ZWQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlc3RyaWN0ZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGlzdFR5cGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iZXZlbnRVc2VyTGlzdFRhYmxlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNPcGVuIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYmFzZURyYXdQb2ludGVyIiB0eXBlPSJwcm9qZWN0OmJhc2VEcmF3UG9pbnRlciIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYmFzZURyYXdQb2ludGVyIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VEcmF3RWxsaXBzZSI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iY2hhcnRGaWxlRXhwbG9yZXJJdGVtIiB0eXBlPSJwcm9qZWN0OmNoYXJ0RmlsZUV4cGxvcmVySXRlbSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iY2hhcnRGaWxlRXhwbG9yZXJJdGVtIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VGaWxlRXhwbG9yZXJJdGVtIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNDaGFydEZpbGUiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJncmlkc2xpZGVybGF5b3V0IiB0eXBlPSJwcm9qZWN0OmdyaWRzbGlkZXJsYXlvdXQiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImdyaWRzbGlkZXJsYXlvdXQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpsYXlvdXQiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzcGFjaW5nIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb3dzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjYiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwb3NpdGlvbmRlbCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib3BlbnZpZXciIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9wZW5yb3dfb25seSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9wZW5yb3ciIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iLTEiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvcGVuY29sX29ubHkiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvcGVuY29sIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Ii0xIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib251cGRhdGVzdG9wIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbnVwZGF0ZXN0YXJ0IiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbm9wZW5zdGFydCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25jbG9zZXN0YXJ0IiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYXN0c2VsIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiR7bnVsbH0iID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkdXJhdGlvbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIzMDAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkb2FuaW1hdGlvbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRpc3BsYXlyb3ciIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iLTEiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkaXNwbGF5bW9kZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJncmlkIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGlzcGxheWNvbCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSItMSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImN3IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29scyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSI2IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2giIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjZWxsd2lkdGgiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjZWxsaGVpZ2h0IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWRkZWRPcGVuV2lkdGgiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMTUwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWRkZWRPcGVuSGVpZ2h0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjE3MCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYmFzZUNob29zZUljb25WaWV3IiB0eXBlPSJwcm9qZWN0OmJhc2VDaG9vc2VJY29uVmlldyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYmFzZUNob29zZUljb25WaWV3IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlc291cmNlTiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYWJlbGlkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNzZWxlY3RlZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJtaW5pSWNvblNteWJvbEV4dHJhSWNvbnNJbWFnZU1hcCIgdHlwZT0icHJvamVjdDptaW5pSWNvblNteWJvbEV4dHJhSWNvbnNJbWFnZU1hcCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibWluaUljb25TbXlib2xFeHRyYUljb25zSW1hZ2VNYXAiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJtaW5pSWNvbnNQcmVzZW50ZXIiIHR5cGU9InByb2plY3Q6bWluaUljb25zUHJlc2VudGVyIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJtaW5pSWNvbnNQcmVzZW50ZXIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaWNvblJlc3NvdXJjZU5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJjYWxCdXR0b24iIHR5cGU9InByb2plY3Q6Y2FsQnV0dG9uIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJjYWxCdXR0b24iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ieWFkanVzdCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJpZ2h0aW5zZXQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJpZ2h0Y2FwIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im92YWwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvdmVyUnNyY051bWJlciIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uc2FmZWNsaWNrIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJub3JtYWxSc3JjTnVtYmVyIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibW91c2Vpc2Rvd24iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsZWZ0aW5zZXQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxlZnRjYXAiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ib3ZhbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxhYmVsaWQiIHR5cGU9Imx6eDpudW1iZXIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYWJlbCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJrZWVwaW5pdGlhbHdpZHRoIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaWNvbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlbmFibGVkIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9InRydWUiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkb3duUnNyY051bWJlciIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRpdmlkZXIiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjMiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkZXNlbGVjdFJzcmNOdW1iZXIiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjQiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhcHBsaWVkIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImNsYXNzcm9vdC5sZWZ0Y2FwID09ICdyZWN0JyIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZHJhd0Nob29zZVNpemVSYWRpb1QiIHR5cGU9InByb2plY3Q6ZHJhd0Nob29zZVNpemVSYWRpb1QiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImRyYXdDaG9vc2VTaXplUmFkaW9UIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6cmFkaW9ncm91cCI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iY29uZmlybUNhbmNlbFBvcHVwIiB0eXBlPSJwcm9qZWN0OmNvbmZpcm1DYW5jZWxQb3B1cCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iY29uZmlybUNhbmNlbFBvcHVwIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmxhYmVsRXhwbG9yZXJCb3giPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWZPYmoiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1ha2VNb2RhbCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZXJyb3JsYWJlbGlkIiB0eXBlPSJseng6bnVtYmVyIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZXJyb3IiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJib3VuZGluZ0JveEFsbFJvdGF0aW9uTWFyZ2VyIiB0eXBlPSJwcm9qZWN0OmJvdW5kaW5nQm94QWxsUm90YXRpb25NYXJnZXIiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImJvdW5kaW5nQm94QWxsUm90YXRpb25NYXJnZXIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZHJhZ1N0YXJ0ZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYmFzZVRhYmJhckJ1dHRvbiIgdHlwZT0icHJvamVjdDpiYXNlVGFiYmFyQnV0dG9uIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJiYXNlVGFiYmFyQnV0dG9uIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxhYmVsaWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InJlc3RyaWN0ZWRSb29tU2lkZWJhciIgdHlwZT0icHJvamVjdDpyZXN0cmljdGVkUm9vbVNpZGViYXIiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InJlc3RyaWN0ZWRSb29tU2lkZWJhciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWxlY3RlZCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVzdHJpY3RlZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGlzdFR5cGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iZXZlbnRVc2VyTGlzdFRhYmxlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNPcGVuIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0icHJlc2VudGF0aW9uUHJldmlldyIgdHlwZT0icHJvamVjdDpwcmVzZW50YXRpb25QcmV2aWV3IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJwcmVzZW50YXRpb25QcmV2aWV3IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlZk9iakxpc3QiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1pbmlCdXR0b24iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRvY3VtZW50T2JqIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InVzZXJBZG1pbiIgdHlwZT0icHJvamVjdDp1c2VyQWRtaW4iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBVc2VyIGFkbWluaXN0cmF0aW9uIG1vZHVsZSBmb3IgQURNSU4uPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idXNlckFkbWluIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VDb250ZW50VmlldyI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0icmVzZXRGb3JtIiB0eXBlPSJwcm9qZWN0OnJlc2V0Rm9ybSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0icmVzZXRGb3JtIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNob3dSZXNldEJveCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYmFzZVVybCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImRyYXdDbGlwQXJ0V2hpdGVCb2FyZCIgdHlwZT0icHJvamVjdDpkcmF3Q2xpcEFydFdoaXRlQm9hcmQiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImRyYXdDbGlwQXJ0V2hpdGVCb2FyZCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGlwQXJ0RW5keSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsaXBBcnRFbmR4IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJhbGxtZWV0aW5ncyIgdHlwZT0icHJvamVjdDphbGxtZWV0aW5ncyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYWxsbWVldGluZ3MiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZUNvbnRlbnRWaWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVmT2JqSXRlbSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmluaXNoZWRUYWJzUXVhbnRpdHkiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGlja2VkQnV0dG9uIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImRheW5hbWUiIHR5cGU9InByb2plY3Q6ZGF5bmFtZSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iZGF5bmFtZSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Im1vZFBhbmVsIiB0eXBlPSJwcm9qZWN0Om1vZFBhbmVsIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJtb2RQYW5lbCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpndWlQcmVzZW50ZXIiPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InByb2ZpbGVzUGFuZWwiIHR5cGU9InByb2plY3Q6cHJvZmlsZXNQYW5lbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIExvZ2dlZC1pbiBVc2VyIFByb2ZpbGUgUGFuZWwgb24gdGhlIGRhc2hib2FyZCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJwcm9maWxlc1BhbmVsIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0Omd1aVByZXNlbnRlciI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxpbmsiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJmaWxsQ29sb3JDaG9vc2UiIHR5cGU9InByb2plY3Q6ZmlsbENvbG9yQ2hvb3NlIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJmaWxsQ29sb3JDaG9vc2UiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZVByb3BlcnR5U2VsZWN0b3IiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWxlY3RlZENvbG9yVHJhbnNmb3JtZWRTdHJpbmciIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMHhGRkZGMzMiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWxlY3RlZENvbG9yRGlzIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VsZWN0ZWRDb2xvciIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMHhGRkZGMzMiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc29wZW4iIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImluSW5pdENvbG9yU2VsZWN0aW9uIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbG9yUGlja1JlZiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sb3JJc0VuYWJsZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJyZWdleHB0aXAiIHR5cGU9InByb2plY3Q6cmVnZXhwdGlwIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJyZWdleHB0aXAiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVnZXhwdGV4dCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmYWRlRGVsZWdhdGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ic2ltcGxlTGlzdEl0ZW0iIHR5cGU9InByb2plY3Q6c2ltcGxlTGlzdEl0ZW0iID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InNpbXBsZUxpc3RJdGVtIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZhbHVlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZXh0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlbGVjdGVkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InhtbENybVRvb2x0aXAiIHR5cGU9InByb2plY3Q6eG1sQ3JtVG9vbHRpcCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ieG1sQ3JtVG9vbHRpcCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZXh0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImhvbGRlciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJkb2N1bWVudEZpbGVFeHBsb3Jlckl0ZW0iIHR5cGU9InByb2plY3Q6ZG9jdW1lbnRGaWxlRXhwbG9yZXJJdGVtIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJkb2N1bWVudEZpbGVFeHBsb3Jlckl0ZW0iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZUZpbGVFeHBsb3Jlckl0ZW0iPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InZlcnRpY2FsTWVudUljb25CYXJQb2ludGVyIiB0eXBlPSJwcm9qZWN0OnZlcnRpY2FsTWVudUljb25CYXJQb2ludGVyIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ2ZXJ0aWNhbE1lbnVJY29uQmFyUG9pbnRlciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Im1haW5Ub29sc1BhbmVsSXRlbSIgdHlwZT0icHJvamVjdDptYWluVG9vbHNQYW5lbEl0ZW0iID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Im1haW5Ub29sc1BhbmVsSXRlbSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpibHVlQnV0dG9uIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2V0U2VsZWN0aW9uVG9JdGVtIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1vZGkiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iY29uZmVyZW5jZUNvbnRhaW5lclRhYiIgdHlwZT0icHJvamVjdDpjb25mZXJlbmNlQ29udGFpbmVyVGFiIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJjb25mZXJlbmNlQ29udGFpbmVyVGFiIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVwbG9hZFRhcElzSW5pdGVkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtZW1iZXJzVGFwSXNJbml0ZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZhZGVEZWxlZ2F0ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZG9CbGluayIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ2aWRlb0NvbnRhaW5lckF1ZGllbmNlIiB0eXBlPSJwcm9qZWN0OnZpZGVvQ29udGFpbmVyQXVkaWVuY2UiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InZpZGVvQ29udGFpbmVyQXVkaWVuY2UiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3RyZWFtcyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibW9kTG9hZGVkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbGxVc2VycyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJmbHZNZXRhSW5mb0NvbnRlbnRBcmVhIiB0eXBlPSJwcm9qZWN0OmZsdk1ldGFJbmZvQ29udGVudEFyZWEiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImZsdk1ldGFJbmZvQ29udGVudEFyZWEiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYmFzZVdpZHRoRm9yUG9pbnRlciIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZHJhd0RvY3VtZW50SXRlbSIgdHlwZT0icHJvamVjdDpkcmF3RG9jdW1lbnRJdGVtIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJkcmF3RG9jdW1lbnRJdGVtIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VDaG9vc2VJY29uIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibW9kaSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InNpbXBsZXRpbWVsYXlvdXQiIHR5cGU9InByb2plY3Q6c2ltcGxldGltZWxheW91dCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ic2ltcGxldGltZWxheW91dCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmxheW91dCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZpZXdoZWlnaHQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMjIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlbmFibGVkIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9InRydWUiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImNoYXRJbm5lclRleHRCb3giIHR5cGU9InByb2plY3Q6Y2hhdElubmVyVGV4dEJveCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iY2hhdElubmVyVGV4dEJveCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnRleHQiPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Il9jaGF0SW5uZXJTbWlseUljb24iIHR5cGU9InByb2plY3Q6X2NoYXRJbm5lclNtaWx5SWNvbiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHByaXZhdGUgY2xhc3Mgb2YgZW1vdEljb25zU2VsZWN0b3IuY2xhc3MuIHJlc291cmNlIHZpZXcgb2YgY2hhdCBzbWlseSBpY29ucy4gaXQgc2hvd3MgaWNvbnMgYW5kIGxhYmVsIHRvb2x0aXBzLjwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Il9jaGF0SW5uZXJTbWlseUljb24iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaWNvbnZhbHVlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imljb25sYWJlbCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBwcml2YXRlIGNsYXNzIG9mIGVtb3RJY29uc1NlbGVjdG9yLmNsYXNzLiByZXNvdXJjZSB2aWV3IG9mIGNoYXQgc21pbHkgaWNvbnMuIGl0IHNob3dzIGljb25zIGFuZCBsYWJlbCB0b29sdGlwcy48L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJjb2xvclJlY3RDaG9vc2ViYXNlIiB0eXBlPSJwcm9qZWN0OmNvbG9yUmVjdENob29zZWJhc2UiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImNvbG9yUmVjdENob29zZWJhc2UiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sb3JjaG9vc2UiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibG9naW5TY3JlZW4iIHR5cGU9InByb2plY3Q6bG9naW5TY3JlZW4iID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImxvZ2luU2NyZWVuIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmxhYmVsRXhwbG9yZXJCb3giPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InZpZGVvT2JqZWN0QXVkaWVuY2UiIHR5cGU9InByb2plY3Q6dmlkZW9PYmplY3RBdWRpZW5jZSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idmlkZW9PYmplY3RBdWRpZW5jZSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpiYXNlVmlkZW9PYmplY3QiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc0Fzc2lnbmVkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImhpZGVQcm9wZXJ0eVZpZXciIHR5cGU9InByb2plY3Q6aGlkZVByb3BlcnR5VmlldyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iaGlkZVByb3BlcnR5VmlldyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImFjdGl2aXR5TGlzdCIgdHlwZT0icHJvamVjdDphY3Rpdml0eUxpc3QiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImFjdGl2aXR5TGlzdCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpiYXNlUHJvcGVydHlQYW5lbFdoaXRlYm9hcmQiPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InJvb21BY2Nlc3NNZXNzYWdlIiB0eXBlPSJwcm9qZWN0OnJvb21BY2Nlc3NNZXNzYWdlIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJyb29tQWNjZXNzTWVzc2FnZSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb29tc19pZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ic2ltcGxlTGFiZWxSb3VuZEJ1dHRvbiIgdHlwZT0icHJvamVjdDpzaW1wbGVMYWJlbFJvdW5kQnV0dG9uIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJzaW1wbGVMYWJlbFJvdW5kQnV0dG9uIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6cm91bmRyZWN0YnV0dG9uIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZCIgdHlwZT0ibHp4Om51bWJlciIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYmx1ZUJ1dHRvbiIgdHlwZT0icHJvamVjdDpibHVlQnV0dG9uIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJibHVlQnV0dG9uIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZWNvbXBvbmVudCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InlfaW5zZXRSZXNvdXJjZSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iNCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InhfaW5zZXRSZXNvdXJjZSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iNCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IndpZHRoX2luc2V0UmVzb3VyY2UiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjE4IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVzb3VyY2VJdGVtIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImhlaWdodF9pbnNldFJlc291cmNlIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxOCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iaW5mb19QYW5lbCIgdHlwZT0icHJvamVjdDppbmZvX1BhbmVsIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJpbmZvX1BhbmVsIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VwYW5lbCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN0YXJ0RGF0ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm9vbXR5cGUiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjEiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb29tc19pZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iJHBhdGh7ICdyb29tc19pZC9AdmFsdWUnfSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9wZW5lZCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzQ29ubmVjdGVkRXZlbnQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSIkcGF0aHsgJ2lzQ29ubmVjdGVkRXZlbnQvQHZhbHVlJyB9IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZW5kRGF0ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGF0YWFwcGx5IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYmFzZVVybCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhcnJheU1lZXRpbmdNZW1iZXIiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFwcG9pbnRlbWVudElkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIkcGF0aHsgJ2FwcG9pbnRlbWVudElkL0B2YWx1ZScgfSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZG9jdW1lbnRUb29sc1BhbGV0dGUiIHR5cGU9InByb2plY3Q6ZG9jdW1lbnRUb29sc1BhbGV0dGUiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImRvY3VtZW50VG9vbHNQYWxldHRlIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYWN0aXZpdHlMaXN0TWVzc2FnZVJlcXVlc3QiIHR5cGU9InByb2plY3Q6YWN0aXZpdHlMaXN0TWVzc2FnZVJlcXVlc3QiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImFjdGl2aXR5TGlzdE1lc3NhZ2VSZXF1ZXN0IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OnNpbXBsZWJhc2VJdGVtQWN0aXZpdHlMaXN0Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJpbnRlcnZpZXdWaWRlb0JveCIgdHlwZT0icHJvamVjdDppbnRlcnZpZXdWaWRlb0JveCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iaW50ZXJ2aWV3VmlkZW9Cb3giIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icHVibGljU0lEIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1lc3NhZ2VPYmplY3QiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImludGVydmlld1BvZElkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJpbWFnZUxpc3RJbm5lclRhYmxlRXhwbG9yZXIiIHR5cGU9InByb2plY3Q6aW1hZ2VMaXN0SW5uZXJUYWJsZUV4cGxvcmVyIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJpbWFnZUxpc3RJbm5lclRhYmxlRXhwbG9yZXIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJkYXRlU2VsZWN0b3JXZWVrTnVtYmVyIiB0eXBlPSJwcm9qZWN0OmRhdGVTZWxlY3RvcldlZWtOdW1iZXIiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImRhdGVTZWxlY3RvcldlZWtOdW1iZXIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0id2Vla251bWJlciIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0icmVjb3JkaW5nU2F2ZVdpbiIgdHlwZT0icHJvamVjdDpyZWNvcmRpbmdTYXZlV2luIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisKKwkJRGlhbG9nIGJveCBmb3IgcmVjb3JkaW5nIGRhdGEuCisJCVNpbWlsYXIgd2l0aCByZWNvcmRpbmdTdGFydFdJbi5sengsIGJ1dCBhbnkgb3RoZXIgY2xhc3MgZG9zZSBub3QgaW52b2tlIHRoaXMgY2xhc3MuCisJCU1heWJlIHRoaXMgY2xhc3MgY291bGQgYmUgZGVsZXRlZC4KKwk8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJyZWNvcmRpbmdTYXZlV2luIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmxhYmVsRXhwbG9yZXJCb3giPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWNvcmRpbmdzTmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKworCQlEaWFsb2cgYm94IGZvciByZWNvcmRpbmcgZGF0YS4KKwkJU2ltaWxhciB3aXRoIHJlY29yZGluZ1N0YXJ0V0luLmx6eCwgYnV0IGFueSBvdGhlciBjbGFzcyBkb3NlIG5vdCBpbnZva2UgdGhpcyBjbGFzcy4KKwkJTWF5YmUgdGhpcyBjbGFzcyBjb3VsZCBiZSBkZWxldGVkLgorCTwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImNoYXRQYXJ0aWNpcGFudHNJbnZpdGVNZXNzYWdlIiB0eXBlPSJwcm9qZWN0OmNoYXRQYXJ0aWNpcGFudHNJbnZpdGVNZXNzYWdlIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJjaGF0UGFydGljaXBhbnRzSW52aXRlTWVzc2FnZSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpndWlQcmVzZW50ZXIiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1c2VyX2lkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm9vbUlkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVmT2JqIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwdWJsaWNTSUQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWVzc2FnZU9iamVjdCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29uZmVyZW5jZVJvb21OYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibHpDYWxlbmRhciIgdHlwZT0icHJvamVjdDpsekNhbGVuZGFyIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJsekNhbGVuZGFyIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VDb250ZW50VmlldyI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYWN0aXZpdHlMaXN0UmVzdHJpY3RlZFJvb21BViIgdHlwZT0icHJvamVjdDphY3Rpdml0eUxpc3RSZXN0cmljdGVkUm9vbUFWIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJhY3Rpdml0eUxpc3RSZXN0cmljdGVkUm9vbUFWIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VJdGVtQWN0aXZpdHlMaXN0Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJsYWJlbGRUZXh0TGlzdEl0ZW0iIHR5cGU9InByb2plY3Q6bGFiZWxkVGV4dExpc3RJdGVtIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJsYWJlbGRUZXh0TGlzdEl0ZW0iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp0ZXh0bGlzdGl0ZW0iPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYWJlbGlkIiB0eXBlPSJseng6bnVtYmVyIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJvcmdBZG1pbiIgdHlwZT0icHJvamVjdDpvcmdBZG1pbiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIE9yZ2FuaXphdGlvbiBhZG1pbmlzdHJhdGlvbiBtb2R1bGUgZm9yIEFETUlOLjwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Im9yZ0FkbWluIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VDb250ZW50VmlldyI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iaW50ZXJ2aWV3VXNlckxpc3QiIHR5cGU9InByb2plY3Q6aW50ZXJ2aWV3VXNlckxpc3QiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImludGVydmlld1VzZXJMaXN0IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9yZ2FuaXNhdGlvbl9pZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbG9yQXJyYXkiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGNvbG9ycyBmb3IgZWFjaCB1c2VyIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJicm9hZENhc3RWaWV3UmVmIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBob2xkcyBhIHJlZmVyZW5jZXMgdG8gdGhlIHZpZGVvdmlldyB3aGljaCBpcyBicm9hZGNhc3RpbmcgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFwcGx5RGVmYXVsdE1vZGVyYXRpb24iIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0idGVybWluYXJlYVdlZWtWaWV3IiB0eXBlPSJwcm9qZWN0OnRlcm1pbmFyZWFXZWVrVmlldyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idGVybWluYXJlYVdlZWtWaWV3IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRlcm1pbk9iaiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGVzY3JpcHRpb24iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2FsZW5kZXJPYmpSZWYiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iaW5uZXJsaXN0Vmlld0V2ZW50VXNlckxpc3RUYWJsZVdpdGhOYW1lcyIgdHlwZT0icHJvamVjdDppbm5lcmxpc3RWaWV3RXZlbnRVc2VyTGlzdFRhYmxlV2l0aE5hbWVzIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJpbm5lcmxpc3RWaWV3RXZlbnRVc2VyTGlzdFRhYmxlV2l0aE5hbWVzIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ic2NyZWVuU2hhcmVDdXJzb3JPYmplY3QiIHR5cGU9InByb2plY3Q6c2NyZWVuU2hhcmVDdXJzb3JPYmplY3QiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InNjcmVlblNoYXJlQ3Vyc29yT2JqZWN0IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlZk9iaiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJwYXJ0aWNpcGFudHNQYW5lbCIgdHlwZT0icHJvamVjdDpwYXJ0aWNpcGFudHNQYW5lbCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0icGFydGljaXBhbnRzUGFuZWwiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6c2ltcGxlQmFzZVRhYnBhbmUiPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InJlZG9VbmRvVG9vbHNQYW5lbEl0ZW0iIHR5cGU9InByb2plY3Q6cmVkb1VuZG9Ub29sc1BhbmVsSXRlbSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0icmVkb1VuZG9Ub29sc1BhbmVsSXRlbSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDptYWluVG9vbHNQYW5lbEl0ZW0iPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkb3JlZG8iIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ0ZW1wVGV4dEJveCIgdHlwZT0icHJvamVjdDp0ZW1wVGV4dEJveCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCisJQ29udGFpbnMgbm8gbWljcm9waG9uZSBvciBjYW1lcmEgT2JqZWN0LCB0aGlzIHZpZXcgY2FuIG9ubHkgCisJc3Vic2NyaWJlIHRvIGEgdmlkZW8gb3IgbGl2ZS1zdHJlYW0KKworIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InRlbXBUZXh0Qm94IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzU3RvcHBlZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisKKwlDb250YWlucyBubyBtaWNyb3Bob25lIG9yIGNhbWVyYSBPYmplY3QsIHRoaXMgdmlldyBjYW4gb25seSAKKwlzdWJzY3JpYmUgdG8gYSB2aWRlbyBvciBsaXZlLXN0cmVhbQorCisgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0icmVzcG9uc2VGb3JNb2RlcmF0aW9uIiB0eXBlPSJwcm9qZWN0OnJlc3BvbnNlRm9yTW9kZXJhdGlvbiIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0icmVzcG9uc2VGb3JNb2RlcmF0aW9uIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmxhYmVsRXhwbG9yZXJCb3giPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1c2Vyb2JqZWN0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1c2VyYXV0b1RpbWVyRGVsZWdhdGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVzZXJhdXRvVGltZXJDb3VudGVyIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIzMSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsaWVudElkIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhcHBseW1lc3NhZ2UiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZHJhZ1ZpZXciIHR5cGU9InByb2plY3Q6ZHJhZ1ZpZXciID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImRyYWdWaWV3IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVwbG9hZG1vZHVsIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN0YXJ0WSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN0YXJ0WCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvb20iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVmT2JqIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwYXJlbnRQYXRoIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1vZHVsZU5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmlsZXNpZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZpbGVuYW1lIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmlsZU5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZG9tYWluIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJhc2V1cmwiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJyb29tTW9kZXJhdG9yc1Jvb21DbGllbnRMaXN0SXRlbSIgdHlwZT0icHJvamVjdDpyb29tTW9kZXJhdG9yc1Jvb21DbGllbnRMaXN0SXRlbSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGxpc3Qgb2YgZGRlZmF1bHQgbW9kZXJhdG9ycyByb29tcyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJyb29tTW9kZXJhdG9yc1Jvb21DbGllbnRMaXN0SXRlbSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpiYXNlQ29udGVudExpc3RJdGVtIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idXNlcklkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idU5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm9vbU1vZGVyYXRvcnNJZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGxpc3Qgb2YgZGRlZmF1bHQgbW9kZXJhdG9ycyByb29tcyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibW9kUm9vbUlkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNTdXBlck1vZGVyYXRvciIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZW1haWwiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJjaGF0UGFydGljaXBhbnRzIiB0eXBlPSJwcm9qZWN0OmNoYXRQYXJ0aWNpcGFudHMiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBpdCBzaG93cyBjaGF0IHBhcnRpY2lwYW50cy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iY2hhdFBhcnRpY2lwYW50cyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1c2VybmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1c2VyX2lkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgaXQgc2hvd3MgY2hhdCBwYXJ0aWNpcGFudHMuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwdWJsaWNTSUQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGljdHVyZV91cmkiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29ubmVjdGVkU2luY2UiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJkcmF3UmVjdGFuZ2xlVG9vbHMiIHR5cGU9InByb2plY3Q6ZHJhd1JlY3RhbmdsZVRvb2xzIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJkcmF3UmVjdGFuZ2xlVG9vbHMiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ2ZXJ0aWNhbERvY3VtZW50SWNvbkJhciIgdHlwZT0icHJvamVjdDp2ZXJ0aWNhbERvY3VtZW50SWNvbkJhciIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idmVydGljYWxEb2N1bWVudEljb25CYXIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJyZWNvcmRpbmdzVmlld2VyIiB0eXBlPSJwcm9qZWN0OnJlY29yZGluZ3NWaWV3ZXIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKworCVRoaXMgY2xhc3Mgc2hvd3MgYSBwbGF5LXZpZXdlciBwYW5lbCBmb3IgcmVjb3JkaW5nIGRhdGEuCisJV2hlbiB5b3Ugc2VsZWN0IGFuZCBjbGljayBhIHJlY29yZGluZyBkYXRhIGZyb20gdGhlIHJlY29yZGluZyBsaXN0IHRoYXQgaXMgaW52b2tlZCB3aXRoIHJlY29yZENvbnRlbnQubHp4LAorCXlvdSBjYW4gc2VlIGEgYmlnIHN0YXJ0IGJ1dHRvbiBvbiB0aGlzIHBhbmVsLiBUaGVuIHlvdSBjbGljayBpdCwgcmVnb3JkaW5nIGRhdGEgc3RhcnRzIHdpdGggdmlkZW8vYXVkaW8gcGFuZWwsIAorCXdoaXRlYm9hcmQgcGFuZWwgYW5kIGZpbGVzIHBhbmVsLgorPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0icmVjb3JkaW5nc1ZpZXdlciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpiYXNlQ29udGVudFZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0aW1lckRlbCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisKKwlUaGlzIGNsYXNzIHNob3dzIGEgcGxheS12aWV3ZXIgcGFuZWwgZm9yIHJlY29yZGluZyBkYXRhLgorCVdoZW4geW91IHNlbGVjdCBhbmQgY2xpY2sgYSByZWNvcmRpbmcgZGF0YSBmcm9tIHRoZSByZWNvcmRpbmcgbGlzdCB0aGF0IGlzIGludm9rZWQgd2l0aCByZWNvcmRDb250ZW50Lmx6eCwKKwl5b3UgY2FuIHNlZSBhIGJpZyBzdGFydCBidXR0b24gb24gdGhpcyBwYW5lbC4gVGhlbiB5b3UgY2xpY2sgaXQsIHJlZ29yZGluZyBkYXRhIHN0YXJ0cyB3aXRoIHZpZGVvL2F1ZGlvIHBhbmVsLCAKKwl3aGl0ZWJvYXJkIHBhbmVsIGFuZCBmaWxlcyBwYW5lbC4KKzwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0aW1lU3RlcFN5bmNpbmciIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjUwMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvb21vYmoiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlY29yZGluZ1ZhbHVlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbml0T2JqZWN0Q291bnQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkb3dubG9hZFVybFdoaXRlYm9hcmQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY3VycmVudFRpbWUiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9Ii01MDAiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImNhbGVuZGVybGlzdGl0ZW0iIHR5cGU9InByb2plY3Q6Y2FsZW5kZXJsaXN0aXRlbSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iY2FsZW5kZXJsaXN0aXRlbSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZXh0QXR0ciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZXJtaW5PYmpSZWYiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZml4ZWRXaGl0ZWJvYXJkUGFuZWwiIHR5cGU9InByb2plY3Q6Zml4ZWRXaGl0ZWJvYXJkUGFuZWwiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImZpeGVkV2hpdGVib2FyZFBhbmVsIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmNvbmZlcmVuY2VCb3giPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZXN0cmljdGVkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJhc2VWaWRlb1N0cmVhbSIgdHlwZT0icHJvamVjdDpiYXNlVmlkZW9TdHJlYW0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKworCWV4dGVuZHMgdGhlIFZpZGVvLVZpZXcgd2l0aCBTdHJlYW1pbmcgZnVuY3Rpb25zCisgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYmFzZVZpZGVvU3RyZWFtIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VWaWRlb1ZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdHJlYW1OYW1lIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzb3VuZFJlZk1DIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBSZWZlcmVuY2UgVG8gdGhlIFNvdW5kIE1vdmllQ2xpcAorCQlAa2V5d29yZHMgZmluYWwgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNvdW5kUmVmIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBSZWZlcmVuY2UgVG8gdGhlIFNvdW5kIE9iamVjdAorCQlAa2V5d29yZHMgZmluYWwgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uUGxheVN0YXR1cyIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25NZXRhRGF0YSIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibW9kZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJwbGF5IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhpcyB2YWx1ZSBkb2VzIGluZGljYXRlIGlmIHRoaXMgc3RyZWFtIHBsYXkgb3IgYnJvYWRjYXN0cworICAgICAgICAgICAgICBAa2V5d29yZHMgcmVhZG9ubHkgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1pY3JvIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBUaGlzIGlzIGEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IG1pY3JvcGhvbmUsIG9ubHkgc2V0IGlmIGJyb2FkY2FzdGluZworICAgICAgICAgICAgICBAa2V5d29yZHMgcmVhZG9ubHkgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRlbGF5IiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjYW1lcmEiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoaXMgaXMgYSByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgY2FtYXJhLCBvbmx5IHNldCBpZiBicm9hZGNhc3RpbmcKKyAgICAgICAgICAgICAgQGtleXdvcmRzIHJlYWRvbmx5IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJidWZmZXJUaW1lIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhpcyBpcyB0aGUgY3VycmVudCBidWZmZXIgdXNlZCwgaW4gTGl2ZSBTdHJlYW1pbmcgdGhpcyBNVVNUIGJlIDAKKyAgICAgICAgICAgICAgQGtleXdvcmRzIHJlYWRvbmx5IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImluZm9UYWIiIHR5cGU9InByb2plY3Q6aW5mb1RhYiIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iaW5mb1RhYiIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmJhc2V0YWJlbGVtZW50Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZCIgdHlwZT0ibHp4Om51bWJlciIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxhYmVsIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJhc2VUYWJDaGF0UGFuZWwiIHR5cGU9InByb2plY3Q6YmFzZVRhYkNoYXRQYW5lbCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYmFzZVRhYkNoYXRQYW5lbCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpiYXNlUHJvcGVydHlQYW5lbCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZhZGVEZWxlZ2F0ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZG9CbGluayIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ1c2VyQ29udGFjdHMiIHR5cGU9InByb2plY3Q6dXNlckNvbnRhY3RzIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ1c2VyQ29udGFjdHMiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idXNlckNvbnRhY3RJZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBlbmRpbmciIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZG9TaGFyZSIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImNvcGllZFRleHRQb3B1cCIgdHlwZT0icHJvamVjdDpjb3BpZWRUZXh0UG9wdXAiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImNvcGllZFRleHRQb3B1cCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpsYWJlbEV4cGxvcmVyQm94Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZXJyb3IiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJyZXN0cmljdGVkQ29uZmVyZW5jZVJvb20iIHR5cGU9InByb2plY3Q6cmVzdHJpY3RlZENvbmZlcmVuY2VSb29tIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJyZXN0cmljdGVkQ29uZmVyZW5jZVJvb20iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZUNvbmZlcmVuY2VSb29tIj4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJjb25mQWRtaW5WYWx1ZUZvcm0iIHR5cGU9InByb2plY3Q6Y29uZkFkbWluVmFsdWVGb3JtIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgY29uZmlndXJhdGlvbiBlZGl0IHBhbmVsLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJjb25mQWRtaW5WYWx1ZUZvcm0iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZUNvbnRlbnRTYXZlVmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlbmRPYmplY3QiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbmZvYmoiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbmZpZ3VyYXRpb25faWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBjb25maWd1cmF0aW9uIGVkaXQgcGFuZWwuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImxkYXBBZG1pbiIgdHlwZT0icHJvamVjdDpsZGFwQWRtaW4iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBPcmdhbml6YXRpb24gYWRtaW5pc3RyYXRpb24gbW9kdWxlIGZvciBBRE1JTi48L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJsZGFwQWRtaW4iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZUNvbnRlbnRWaWV3Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJkYXRlU2VsZWN0b3JXZWVrTnVtYmVySGVhZGVyIiB0eXBlPSJwcm9qZWN0OmRhdGVTZWxlY3RvcldlZWtOdW1iZXJIZWFkZXIiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImRhdGVTZWxlY3RvcldlZWtOdW1iZXJIZWFkZXIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWxXZWVrSGVhZGVyIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZmllbGRWYWx1ZUZvcm0iIHR5cGU9InByb2plY3Q6ZmllbGRWYWx1ZUZvcm0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyByaWdodCBibG9jayBvZiB0aGUgTGFuZ3VhZ2VFZGl0b3IuIHlvdSBjYW4gZWRpdCB0aGUgbGFiZWwuPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iZmllbGRWYWx1ZUZvcm0iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZUNvbnRlbnRTYXZlVmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlbmRPYmplY3QiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZpZWxkdmFsdWVzX2lkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmllbGRsYW5ndWFnZXN2YWx1ZXNfaWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InJlc2V0UGFzc3dvcmQiIHR5cGU9InByb2plY3Q6cmVzZXRQYXNzd29yZCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0icmVzZXRQYXNzd29yZCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpsYWJlbEV4cGxvcmVyQm94Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGVtcFZhbHVlIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJselJlY29yZE5hdmlnYXRpb24iIHR5cGU9InByb2plY3Q6bHpSZWNvcmROYXZpZ2F0aW9uIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisKKwlWaWV3IGZvciByZWNvcmRlZCBjb250ZW50cyBsaXN0LgorCVdoZW4geW91IHNlbGVjdCAnUmVjb3JkaW5ncycgb24gdGhlIHRvcCBtZW51LCB0aGlzIGNsYXNzIHNob3dzIHRoZSBsaXN0LgorPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibHpSZWNvcmROYXZpZ2F0aW9uIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlY29yZGluZ05hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGxheVNlbGVjdGVkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwYXJlbnRGb2xkZXJJZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iLTIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc1RyYXNoQ2FuIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzT3BlbiIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKworCVZpZXcgZm9yIHJlY29yZGVkIGNvbnRlbnRzIGxpc3QuCisJV2hlbiB5b3Ugc2VsZWN0ICdSZWNvcmRpbmdzJyBvbiB0aGUgdG9wIG1lbnUsIHRoaXMgY2xhc3Mgc2hvd3MgdGhlIGxpc3QuCis8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY3VycmVudFRyYWNrR3JvdXBOYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImZpbGVFeHBsb3JlciIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRSZWNvcmRpbmciIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImN1cnJlbnREcmFnSXRlbSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWx0ZXJuYXRlTmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Im9yZG5lckluaGFsdEhlYWQiIHR5cGU9InByb2plY3Q6b3JkbmVySW5oYWx0SGVhZCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ib3JkbmVySW5oYWx0SGVhZCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InNob3dDaGF0TG9nIiB0eXBlPSJwcm9qZWN0OnNob3dDaGF0TG9nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisKK0NoYXQgdGFicGFuZSBjbGFzcy4gSXQgY29udGFpbnMgY2hhdE91dHB1dC1jbGFzcyBhbmQgY2F0VGFiQm90dG9tLWNsYXNzLgorVGhpcyBpcyB1c2VkIGluIHRoZSBjb25mZXJlbmNlLgorPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ic2hvd0NoYXRMb2ciIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6bGFiZWxFeHBsb3JlckJveCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVycm9yIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCitDaGF0IHRhYnBhbmUgY2xhc3MuIEl0IGNvbnRhaW5zIGNoYXRPdXRwdXQtY2xhc3MgYW5kIGNhdFRhYkJvdHRvbS1jbGFzcy4KK1RoaXMgaXMgdXNlZCBpbiB0aGUgY29uZmVyZW5jZS4KKzwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InJzc0JveCIgdHlwZT0icHJvamVjdDpyc3NCb3giID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InJzc0JveCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImZpbGVzUGFuZWxTdHJpY3QiIHR5cGU9InByb2plY3Q6ZmlsZXNQYW5lbFN0cmljdCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iZmlsZXNQYW5lbFN0cmljdCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpjb25mZXJlbmNlQm94Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJyZWNvcmRpbmdTdGFydFdpbiIgdHlwZT0icHJvamVjdDpyZWNvcmRpbmdTdGFydFdpbiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCisJCURpYWxvZyBib3ggZm9yIHJlY29yZGluZyBkYXRhLgorCQlXaGVuIHlvdSBjbGljayB0aGUgUmVjb3JkaW5nIGJ1dHRvbiBvbiB5b3VyIGNvbmZlcmVuY2UgbWVudSwgdGhpcyBjbGFzcyBzaG93cyBhIGRpYWxvZyBib3ggZm9yIHNhdmluZyBpdC4KKwk8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJyZWNvcmRpbmdTdGFydFdpbiIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpsYWJlbEV4cGxvcmVyQm94Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVjb3JkaW5nc05hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisKKwkJRGlhbG9nIGJveCBmb3IgcmVjb3JkaW5nIGRhdGEuCisJCVdoZW4geW91IGNsaWNrIHRoZSBSZWNvcmRpbmcgYnV0dG9uIG9uIHlvdXIgY29uZmVyZW5jZSBtZW51LCB0aGlzIGNsYXNzIHNob3dzIGEgZGlhbG9nIGJveCBmb3Igc2F2aW5nIGl0LgorCTwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InNjcmVlblNoYXJpbmdEaWFsb2dDb250YWluZXIiIHR5cGU9InByb2plY3Q6c2NyZWVuU2hhcmluZ0RpYWxvZ0NvbnRhaW5lciIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ic2NyZWVuU2hhcmluZ0RpYWxvZ0NvbnRhaW5lciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InRvb2xiYXJUYWJMaXN0IiB0eXBlPSJwcm9qZWN0OnRvb2xiYXJUYWJMaXN0IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ0b29sYmFyVGFiTGlzdCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWxlY3RlZCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJkcmF3VWxpbmVUb29scyIgdHlwZT0icHJvamVjdDpkcmF3VWxpbmVUb29scyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iZHJhd1VsaW5lVG9vbHMiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJwcml2YXRlTWVzc2FnZUZvbGRlciIgdHlwZT0icHJvamVjdDpwcml2YXRlTWVzc2FnZUZvbGRlciIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0icHJpdmF0ZU1lc3NhZ2VGb2xkZXIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VsZWN0ZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InByaXZhdGVNZXNzYWdlRm9sZGVySWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmb2xkZXJOYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYmFzZURyYXdQYWludCIgdHlwZT0icHJvamVjdDpiYXNlRHJhd1BhaW50IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJiYXNlRHJhd1BhaW50IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VEcmF3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGFpbnR0cmFucyIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY3VycmVudGxheWVyc3Ryb2tlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjB4RkY2NjAwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY3VycmVudGxheWVybGluZVdpZHRoIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIyIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY3VycmVudGxheWVyT3BhY2l0eSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ic2VhcmNoUmVzdWx0c0FkZENvbnRhY3QiIHR5cGU9InByb2plY3Q6c2VhcmNoUmVzdWx0c0FkZENvbnRhY3QiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InNlYXJjaFJlc3VsdHNBZGRDb250YWN0IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibGRhcEFkbWluVmFsdWVGb3JtIiB0eXBlPSJwcm9qZWN0OmxkYXBBZG1pblZhbHVlRm9ybSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibGRhcEFkbWluVmFsdWVGb3JtIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VDb250ZW50U2F2ZVZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZW5kT2JqZWN0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsZGFwQ29uZmlnSWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyByZWNvcmRDb250ZW50IGlkIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImR0bWZCdXR0b24iIHR5cGU9InByb2plY3Q6ZHRtZkJ1dHRvbiIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iZHRtZkJ1dHRvbiIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmJ1dHRvbiI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImR0bWYiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJyb29tQWRtaW5PcmdMaXN0SXRlbSIgdHlwZT0icHJvamVjdDpyb29tQWRtaW5PcmdMaXN0SXRlbSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGxpc3Qgb2YgY29uZmVyZW5jZS9hdWRpZW5jZSByb29tcyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJyb29tQWRtaW5PcmdMaXN0SXRlbSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpiYXNlQ29udGVudExpc3RJdGVtIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib3JnTmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvcmdJZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGxpc3Qgb2YgY29uZmVyZW5jZS9hdWRpZW5jZSByb29tcyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJsekNhbGVuZGFyQ29udGVudCIgdHlwZT0icHJvamVjdDpsekNhbGVuZGFyQ29udGVudCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibHpDYWxlbmRhckNvbnRlbnQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmlld3N0eWxlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im1vbnRoIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmlld21vZGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibW9udGgiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWxlY3Rpb25BY3RpdmUiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImtlZXBpbmZvb3BlbiIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iak5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNsb2FkZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZpcnN0RGF5IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImNvbmZpcm1hdGlvbkJveCIgdHlwZT0icHJvamVjdDpjb25maXJtYXRpb25Cb3giID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImNvbmZpcm1hdGlvbkJveCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpsYWJlbEV4cGxvcmVyQm94Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVmT2JqIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYWJlbGlkZXJyb3IiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkb0Fza0FnYWluIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iY2FsbGJhY2tScGNFcnJvckRpYWxvZyIgdHlwZT0icHJvamVjdDpjYWxsYmFja1JwY0Vycm9yRGlhbG9nIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJjYWxsYmFja1JwY0Vycm9yRGlhbG9nIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmVycm9yRGlhbG9nIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2FsbEJhY2tPYmplY3QiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ib3JnQWRtaW5WYWx1ZUZvcm0iIHR5cGU9InByb2plY3Q6b3JnQWRtaW5WYWx1ZUZvcm0iID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Im9yZ0FkbWluVmFsdWVGb3JtIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VDb250ZW50U2F2ZVZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZW5kT2JqZWN0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvcmdhbmlzYXRpb25faWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyByZWNvcmRDb250ZW50IGlkIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImVtb3RJY29uc1NlbGVjdG9yIiB0eXBlPSJwcm9qZWN0OmVtb3RJY29uc1NlbGVjdG9yIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgdmlldyB0byBzZWxlY3QgZW1vdGljb25zLiBzaXplIGlzIDE2MHgxNDAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iZW1vdEljb25zU2VsZWN0b3IiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6Y2xvc2FibGVWaWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYnRuUmVmIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyB2aWV3IHRvIHNlbGVjdCBlbW90aWNvbnMuIHNpemUgaXMgMTYweDE0MCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJjb2xvcnBpY2tlciIgdHlwZT0icHJvamVjdDpjb2xvcnBpY2tlciIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iY29sb3JwaWNrZXIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6Z3VpUHJlc2VudGVyIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VsZWN0ZWRDb2xvciIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMHgwMGFlZWYiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJidG5SZWYiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ib3ZlckFsbENoYXRUYWJCb3R0b20iIHR5cGU9InByb2plY3Q6b3ZlckFsbENoYXRUYWJCb3R0b20iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBWaWV3IG9mIHRoZSBidXR0b20gYXJlYSBvZiBjaGF0LiBJdCBjb250YWlucyBidXR0b25zIG9mIG1lc3NhZ2UsZW1vdGljb25zLGNsZWFyLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJvdmVyQWxsQ2hhdFRhYkJvdHRvbSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvYmpNZXNzYWdlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkb1VwZGF0ZSIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJkYXRlRmllbGQiIHR5cGU9InByb2plY3Q6ZGF0ZUZpZWxkIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJkYXRlRmllbGQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGV4dCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZXREZWZhdWx0VG9kYXkiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVuYWJsZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWRkaXRpb25hbERheSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibGFiZWxSYWRpb0J1dHRvbiIgdHlwZT0icHJvamVjdDpsYWJlbFJhZGlvQnV0dG9uIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJsYWJlbFJhZGlvQnV0dG9uIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6cmFkaW9idXR0b24iPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYWJlbGlkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJpbWFnZUZpbGVFeHBsb3Jlckl0ZW0iIHR5cGU9InByb2plY3Q6aW1hZ2VGaWxlRXhwbG9yZXJJdGVtIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJpbWFnZUZpbGVFeHBsb3Jlckl0ZW0iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZUZpbGVFeHBsb3Jlckl0ZW0iPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9IndoaXRlQm9hcmQiIHR5cGU9InByb2plY3Q6d2hpdGVCb2FyZCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0id2hpdGVCb2FyZCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZW5kT2JqZWN0VG9DbGllbnRJRCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlbmRPYmplY3QiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvb20iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGFyZW50UGF0aCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbnNoYXJlZE1lc3NhZ2UiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1vZHVsZU5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNsb2FkaW5nSW1hZ2UiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzbG9hZGVkSW1hZ2UiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImluaXRXIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbml0SCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW1hZ2V5IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlhbWdleCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmaWxlTmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkb3dubG9hZHVybCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkb21haW4iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZG9jdW1lbnRtZW51SXNJbml0ZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbmZpcm1kaWFsb2ciIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJhc2V1cmwiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJjb25maXJtYXRpb25TaW5nbGUiIHR5cGU9InByb2plY3Q6Y29uZmlybWF0aW9uU2luZ2xlIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJjb25maXJtYXRpb25TaW5nbGUiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6bGFiZWxFeHBsb3JlckJveCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNob3dDaGVja0JveCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWZSZXR1cm5NZXRob2QiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlZk9iaiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZGVycm9yIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJjaGFuZ2VXaWR0aFNsaWRlcldpbiIgdHlwZT0icHJvamVjdDpjaGFuZ2VXaWR0aFNsaWRlcldpbiIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iY2hhbmdlV2lkdGhTbGlkZXJXaW4iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6Y2xvc2FibGVWaWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWF4dmFsdWUiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjEwMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImluaXRpYWxOdW1iZXIiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjMiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJidG5SZWYiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibWFpblRvb2xzTGVmdFBhbmVsUG9pbnRlciIgdHlwZT0icHJvamVjdDptYWluVG9vbHNMZWZ0UGFuZWxQb2ludGVyIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJtYWluVG9vbHNMZWZ0UGFuZWxQb2ludGVyIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VMZWZ0UGFuZWwiPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJhc2VEcmF3V29yZHMiIHR5cGU9InByb2plY3Q6YmFzZURyYXdXb3JkcyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYmFzZURyYXdXb3JkcyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWZPYmoiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImluaXR0ZXh0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImluaXRUZXh0TmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Indpbm5pIiB0eXBlPSJwcm9qZWN0Ondpbm5pIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ3aW5uaSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OndpbmRvdyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvb21vYmoiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYWN0aXZpdHlMaXN0UmVzdHJpY3RlZFJvb21BcHBseUZvck11dGVPbiIgdHlwZT0icHJvamVjdDphY3Rpdml0eUxpc3RSZXN0cmljdGVkUm9vbUFwcGx5Rm9yTXV0ZU9uIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJhY3Rpdml0eUxpc3RSZXN0cmljdGVkUm9vbUFwcGx5Rm9yTXV0ZU9uIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VJdGVtQWN0aXZpdHlMaXN0Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ2aWRlb09iamVjdFBsYXlUZXN0QnJvYWRjYXN0IiB0eXBlPSJwcm9qZWN0OnZpZGVvT2JqZWN0UGxheVRlc3RCcm9hZGNhc3QiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKworCWNvbnRhaW5zIG1pY3JvcGhvbmUgYW5kIGNhbWVyYSBmb3IgYnJvYWRjYXN0aW5nLAorCXRoaXMgY2xhc3MgaXMgdXNlZCBvbmx5IGluIE1lZXRpbmdzLU1vZHVzCisgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idmlkZW9PYmplY3RQbGF5VGVzdEJyb2FkY2FzdCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImRyYXdMZXR0ZXJUb29scyIgdHlwZT0icHJvamVjdDpkcmF3TGV0dGVyVG9vbHMiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImRyYXdMZXR0ZXJUb29scyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImlubmVyTGlzdCIgdHlwZT0icHJvamVjdDppbm5lckxpc3QiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBwcml2YXRlIGNsYXNzIGZvciB0dXJuT3Zlckxpc3Qgb25seS4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iaW5uZXJMaXN0IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iY2hhbmdlRGV2aWNlIiB0eXBlPSJwcm9qZWN0OmNoYW5nZURldmljZSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iY2hhbmdlRGV2aWNlIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmxhYmVsRXhwbG9yZXJCb3giPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Im15YWxlcnQiIHR5cGU9InByb2plY3Q6bXlhbGVydCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibXlhbGVydCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmFsZXJ0Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ2aWRlb1VzZXJQcm9maWxlUGljIiB0eXBlPSJwcm9qZWN0OnZpZGVvVXNlclByb2ZpbGVQaWMiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InZpZGVvVXNlclByb2ZpbGVQaWMiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmFsdWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZmllbGRWYWx1ZXNMaXN0SXRlbSIgdHlwZT0icHJvamVjdDpmaWVsZFZhbHVlc0xpc3RJdGVtIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhpcyBjbGFzcyBzaG93cyBsYWJlbC1JRCxsYWJlbCBuYW1lLCB2YWx1ZS48L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJmaWVsZFZhbHVlc0xpc3RJdGVtIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VDb250ZW50TGlzdEl0ZW0iPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmaWVsZHZhbHVlc19pZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRoaXMgY2xhc3Mgc2hvd3MgbGFiZWwtSUQsbGFiZWwgbmFtZSwgdmFsdWUuPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZpZWxkdmFsdWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmllbGRuYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZWRpdFByaXZhdGVNZXNzYWdlRm9sZGVyIiB0eXBlPSJwcm9qZWN0OmVkaXRQcml2YXRlTWVzc2FnZUZvbGRlciIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iZWRpdFByaXZhdGVNZXNzYWdlRm9sZGVyIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmN1c3RvbUlucHV0dGV4dCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlZk9iaiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icHJpdmF0ZU1lc3NhZ2VGb2xkZXJJZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZvbGRlck5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJjcmVhdGVQb2xsV2luIiB0eXBlPSJwcm9qZWN0OmNyZWF0ZVBvbGxXaW4iID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImNyZWF0ZVBvbGxXaW4iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6bGFiZWxFeHBsb3JlckJveCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBvbGx0eXBlc2lkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icG9sbHF1ZXN0aW9uIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBvbGxuYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYm9yZGVyZWRQYXNzd29yZFRleHQiIHR5cGU9InByb2plY3Q6Ym9yZGVyZWRQYXNzd29yZFRleHQiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImJvcmRlcmVkUGFzc3dvcmRUZXh0IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InR2YWx1ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJkZWZhdWx0IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VuZGNoYW5nZSIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibXVsdGlsaW5lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWF4bGVuZ3RoIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZCIgdHlwZT0ibHp4Om51bWJlciIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVkaXRhYmxlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoZWNrSXNOdW1iZXIiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoZWNrSXNEb3VibGUiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZXJyb3JNb2RlcmF0b3JQb3B1cCIgdHlwZT0icHJvamVjdDplcnJvck1vZGVyYXRvclBvcHVwIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJlcnJvck1vZGVyYXRvclBvcHVwIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmxhYmVsRXhwbG9yZXJCb3giPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlcnJvciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Im9wZW5tZWV0aW5nc1RhYkJ1dHRvbiIgdHlwZT0icHJvamVjdDpvcGVubWVldGluZ3NUYWJCdXR0b24iID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Im9wZW5tZWV0aW5nc1RhYkJ1dHRvbiIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpyb3VuZFJlY3RHcmFkaWVudCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxhYmVsaWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpY29ucmVzb3VyY2VuYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZml4ZWRXaGl0ZUJvYXJkIiB0eXBlPSJwcm9qZWN0OmZpeGVkV2hpdGVCb2FyZCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iZml4ZWRXaGl0ZUJvYXJkIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRpbWVpc0luaXRlZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VuZFVwZGF0ZSIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZW5kT2JqZWN0VG9DbGllbnRJRCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlbmRPYmplY3REZWwiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlbmRPYmplY3QiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvb20iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVzdHJpY3RlZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGFyZW50UGF0aCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbnNoYXJlZE1lc3NhZ2UiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9iamVjdFJlZiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibW9kdWxlTmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc2xvYWRpbmdJbWFnZSIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNsb2FkZWRJbWFnZSIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW5pdFciIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImluaXRIIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbWFnZXkiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaWdub3JlVXBkYXRlcyIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaWFtZ2V4IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZpbGVOYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRvd25sb2FkdXJsIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRvbWFpbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkb2N1bWVudG1lbnVJc0luaXRlZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29uZmlybWRpYWxvZyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYmFzZXVybCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJhc2ljdHVybm92ZXJsaXN0aGVhZGVyaXRlbSIgdHlwZT0icHJvamVjdDpiYXNpY3R1cm5vdmVybGlzdGhlYWRlcml0ZW0iID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImJhc2ljdHVybm92ZXJsaXN0aGVhZGVyaXRlbSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpzaW1wbGVMYWJlbEJ1dHRvbiI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYmFzZUxpc3RQcmVzZW50YXRpb25JdGVtIiB0eXBlPSJwcm9qZWN0OmJhc2VMaXN0UHJlc2VudGF0aW9uSXRlbSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYmFzZUxpc3RQcmVzZW50YXRpb25JdGVtIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVwbG9hZG1vZHVsZWltZ2ZvbGRlciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIkb25jZXsgY2FudmFzLnVwbG9hZG1vZHVsZWltZ2ZvbGRlciB9IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idXBsb2FkbW9kdWwiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VsZWN0YWJsZSIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc3NlbGVjdGVkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc29yaWdpbmFsIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InZpZXdVc2VyUHJvZmlsZSIgdHlwZT0icHJvamVjdDp2aWV3VXNlclByb2ZpbGUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBVc2VyIFByb2ZpbGUgU2V0dGluZyBQYW5lbCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ2aWV3VXNlclByb2ZpbGUiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idXNlck9iamVjdCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVXNlciBQcm9maWxlIFNldHRpbmcgUGFuZWwgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibGlzdE9mVXNlcnMiIHR5cGU9InByb2plY3Q6bGlzdE9mVXNlcnMiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Imxpc3RPZlVzZXJzIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ic3ViaXRlbXNMaXN0SXRlbSIgdHlwZT0icHJvamVjdDpzdWJpdGVtc0xpc3RJdGVtIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJzdWJpdGVtc0xpc3RJdGVtIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRleHR2YWx1ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VsZWN0ZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imxpc3QiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imlzb3BlbiIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNsZWFmIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhY3Rpb24iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJldmVudFVzZXJMaXN0VGFibGVXaXRoTmFtZXMiIHR5cGU9InByb2plY3Q6ZXZlbnRVc2VyTGlzdFRhYmxlV2l0aE5hbWVzIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJldmVudFVzZXJMaXN0VGFibGVXaXRoTmFtZXMiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJob3Jpem9udGFsRG9jdW1lbnRJY29uQmFyIiB0eXBlPSJwcm9qZWN0Omhvcml6b250YWxEb2N1bWVudEljb25CYXIiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Imhvcml6b250YWxEb2N1bWVudEljb25CYXIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VuZFNlbGVjdGlvbiIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Im11bHRpV2hpdGVCb2FyZCIgdHlwZT0icHJvamVjdDptdWx0aVdoaXRlQm9hcmQiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Im11bHRpV2hpdGVCb2FyZCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZW5kT2JqZWN0VG9DbGllbnRJRCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlbmRPYmplY3QiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvb20iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGFyZW50UGF0aCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbnNoYXJlZE1lc3NhZ2UiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9iamVjdFJlZiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibW9kdWxlTmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc2xvYWRpbmdJbWFnZSIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNsb2FkZWRJbWFnZSIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW5pdFciIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImluaXRIIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbWFnZXkiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaWFtZ2V4IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZpbGVOYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRvd25sb2FkdXJsIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRvbWFpbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkb2N1bWVudG1lbnVJc0luaXRlZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29uZmlybWRpYWxvZyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYmFzZXVybCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImhlYWRlck1lbnUiIHR5cGU9InByb2plY3Q6aGVhZGVyTWVudSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iaGVhZGVyTWVudSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InNoYXJpbmdGcmFtZSIgdHlwZT0icHJvamVjdDpzaGFyaW5nRnJhbWUiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InNoYXJpbmdGcmFtZSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzaGFyaW5nU3RhcnRlZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW5pdFNyYyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJidWZmZXJJbmRleCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZHJhd0Nob29zZU1vZGlyIiB0eXBlPSJwcm9qZWN0OmRyYXdDaG9vc2VNb2RpciIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iZHJhd0Nob29zZU1vZGlyIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VDaG9vc2VJY29uIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibW9kaSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc1NlbGVjdGFibGVtb2RpIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Imxpc3RQcHQiIHR5cGU9InByb2plY3Q6bGlzdFBwdCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibGlzdFBwdCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnRleHQiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1cGxvYWRtb2R1bCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc1BwdCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmaWxlbmFtZVB1cmUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmlsZW5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZXh0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iY2hvb3NlRHJhd0FyZWFPYmplY3RDb21ib2JveCIgdHlwZT0icHJvamVjdDpjaG9vc2VEcmF3QXJlYU9iamVjdENvbWJvYm94IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJjaG9vc2VEcmF3QXJlYU9iamVjdENvbWJvYm94IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6YmFzZWNvbWJvYm94Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVmT2JqIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsaXN0ViIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIkeyB0aGlzLnBhcmVudC5saXN0ViB9IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iT2JqZWN0QnlOYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0id2hpdGVCb2FyZFBvaW50ZXIiIHR5cGU9InByb2plY3Q6d2hpdGVCb2FyZFBvaW50ZXIiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IndoaXRlQm9hcmRQb2ludGVyIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVzZXJOYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZhZGVEZWxlZ2F0ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJkYXRlU2VsZWN0b3IiIHR5cGU9InByb2plY3Q6ZGF0ZVNlbGVjdG9yIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJkYXRlU2VsZWN0b3IiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZURhdGVTZWxlY3RvciI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZG9jdW1lbnRNZW51IiB0eXBlPSJwcm9qZWN0OmRvY3VtZW50TWVudSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iZG9jdW1lbnRNZW51IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VUb29sYmFyTWVudSI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibXlWaWV3IiB0eXBlPSJwcm9qZWN0Om15VmlldyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibXlWaWV3IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6ZHJhd3ZpZXciPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJhc2VEcmF3TGV0dGVyIiB0eXBlPSJwcm9qZWN0OmJhc2VEcmF3TGV0dGVyIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJiYXNlRHJhd0xldHRlciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpiYXNlRHJhd09iamVjdCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxldHRlck9iamVjdElzQWN0aXZlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpdGFsaWMiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVkaXR0ZXh0TGV0dGVyT2JqZWN0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlZGl0dGV4dExldHRlciIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY3VycmVudGxldHRlck9iaiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY3VycmVudGxheWVyc3R5bGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0icGxhaW4iID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50bGF5ZXJzaXplIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxMiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRsYXllcmxldHRlciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIweDAwMDAwMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJvbGQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iX2xhYmVsTWVudUl0ZW0iIHR5cGU9InByb2plY3Q6X2xhYmVsTWVudUl0ZW0iID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Il9sYWJlbE1lbnVJdGVtIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6bWVudWl0ZW0iPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYWJlbGlkIiB0eXBlPSJseng6bnVtYmVyIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ1c2VySXRlbSIgdHlwZT0icHJvamVjdDp1c2VySXRlbSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idXNlckl0ZW0iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idXNlcm5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3RyZWFtaWQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imhhc0Fuc3dlcmVkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhbnN3ZXIiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0idnNsaWRlciIgdHlwZT0icHJvamVjdDp2c2xpZGVyIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ2c2xpZGVyIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN3aXRjaGF4aXMiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHN3aXRjaGF4aXMgdHJ1ZSBtZWFucyBtaW5pbXVtLXZhbHVlIGlzIAorICAgICAgICAgICAgdCBvcCBtYXhpbXVtIGlzIGJvdHRvbSBmYWxzZSB0dXJucyBhcm91bmQgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNob3d2YWx1ZSIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBzaG93dmFsdWUgc2hvdWxkIHRoZSBzbGlkZXIgc2hvdyB0aGUgbnVtYmVycyBvZiBtaW4vbWF4IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzaG93cmFuZ2UiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgU2hvd3JhbmdlIHNob3VsZCB0aGUgc2xpZGVydHJhY2sgYmUgd2l0aCBjb2xvciB3aGlsZSAnc2xpZGluZycgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1pbnZhbHVlIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgTWluaW11bSBWYWx1ZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWF4dmFsdWUiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjEwMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIE1heGltdW0gVmFsdWUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImluaXR2YWx1ZSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYmFzZURyYXdMaW5lIiB0eXBlPSJwcm9qZWN0OmJhc2VEcmF3TGluZSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYmFzZURyYXdMaW5lIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VEcmF3UGFpbnQiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50bGluZXN0cm9rZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIweEZGNjYwMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRsaW5lbGluZVdpZHRoIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIyIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY3VycmVudGxpbmVPcGFjaXR5IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJldmVudFVzZXJMaXN0SXRlbSIgdHlwZT0icHJvamVjdDpldmVudFVzZXJMaXN0SXRlbSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iZXZlbnRVc2VyTGlzdEl0ZW0iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0id2l0aE5hbWVzIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1c2Vycm9vbSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1c2VybmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1c2VyX2lkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3RyZWFtaWQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVmT2JqIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtYXhXaWR0aCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iODIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtYXhIZWlnaHQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjcyIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFzdG5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNTdXBlck1vZGVyYXRvciIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNTZWxlY3RlZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNNb2QiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW5pdFdpZHRoIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSI0MiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZvcm1hdGVkRGF0ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmaXJzdG5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29ubmVjdGVkU2luY2UiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ3aGl0ZUJvYXJkVGV4dEZpZWxkIiB0eXBlPSJwcm9qZWN0OndoaXRlQm9hcmRUZXh0RmllbGQiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9IndoaXRlQm9hcmRUZXh0RmllbGQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp0ZXh0Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHlwZU9mT2JqZWN0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9InRleHQiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Im1haW5Ub29sc1ZQYW5lbFNlcGVyYXRvciIgdHlwZT0icHJvamVjdDptYWluVG9vbHNWUGFuZWxTZXBlcmF0b3IiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Im1haW5Ub29sc1ZQYW5lbFNlcGVyYXRvciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InBhcnRpY2lwZW50TGlzdCIgdHlwZT0icHJvamVjdDpwYXJ0aWNpcGVudExpc3QiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InBhcnRpY2lwZW50TGlzdCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzb3J0VHlwZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJhbHBoYWJldGljYWwiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InNlYXJjaENvbnRhY3RJbkNhbGVuZGFyIiB0eXBlPSJwcm9qZWN0OnNlYXJjaENvbnRhY3RJbkNhbGVuZGFyIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJzZWFyY2hDb250YWN0SW5DYWxlbmRhciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1c2VySWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWZPYmoiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hY2huYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1lZXRpbmdNZW1iZXJJZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVtYWlsIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InhtbENybVVzZXJBZG1pbiIgdHlwZT0icHJvamVjdDp4bWxDcm1Vc2VyQWRtaW4iID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InhtbENybVVzZXJBZG1pbiIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpsYWJlbEV4cGxvcmVyQm94Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJtb2RlcmF0aW9uTWluaUljb25SZXN0cmljdGVkIiB0eXBlPSJwcm9qZWN0Om1vZGVyYXRpb25NaW5pSWNvblJlc3RyaWN0ZWQiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Im1vZGVyYXRpb25NaW5pSWNvblJlc3RyaWN0ZWQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icHVibGljU0lEIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzU3VwZXJNb2RlcmF0b3IiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzTW9kIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc0FjdGl2ZSIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Il9yZWNvcmRlclByb2dyZXNzQmFyIiB0eXBlPSJwcm9qZWN0Ol9yZWNvcmRlclByb2dyZXNzQmFyIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJfcmVjb3JkZXJQcm9ncmVzc0JhciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Il92aWRlb0JvYXJkU3RyZWFtRXZlbnQiIHR5cGU9InByb2plY3Q6X3ZpZGVvQm9hcmRTdHJlYW1FdmVudCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iX3ZpZGVvQm9hcmRTdHJlYW1FdmVudCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpndWlQcmVzZW50ZXIiPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImxhYmVsVGV4dCIgdHlwZT0icHJvamVjdDpsYWJlbFRleHQiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImxhYmVsVGV4dCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnRleHQiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYWJlbGlkIiB0eXBlPSJseng6bnVtYmVyIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJyb29tTGlzdERldGFpbHMiIHR5cGU9InByb2plY3Q6cm9vbUxpc3REZXRhaWxzIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJyb29tTGlzdERldGFpbHMiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm9vbW5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm9vbWlkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm9vbWNvbW1lbnQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY3VycmVudHVzZXJzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImVycm9yRGlhbG9nIiB0eXBlPSJwcm9qZWN0OmVycm9yRGlhbG9nIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJlcnJvckRpYWxvZyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpiYXNlRXJyb3JEaWFsb2ciPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImNvbmZpcm1EZWxldGVXaW5kb3ciIHR5cGU9InByb2plY3Q6Y29uZmlybURlbGV0ZVdpbmRvdyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iY29uZmlybURlbGV0ZVdpbmRvdyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpsYWJlbEV4cGxvcmVyQm94Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVmT2JqIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtZXNzYWdlbGFiZWxpZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMTUzIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29uZmlybWxhYmVsaWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjE1NCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0icmVzdHJpY3RlZFVzZXJMaXN0SW5uZXIiIHR5cGU9InByb2plY3Q6cmVzdHJpY3RlZFVzZXJMaXN0SW5uZXIiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InJlc3RyaWN0ZWRVc2VyTGlzdElubmVyIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VSb29tSW5uZXJMaXN0Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic29ydFR5cGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iYWxwaGFiZXRpY2FsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VsZWN0ZWRJdGVtIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZXNpemVEZWxlZ2F0ZVN0YXJ0ZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlc2l6ZURlbGVnYXRlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZW5kZXJEZWxlZ2F0ZVN0YXJ0ZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlbmRlckRlbGVnYXRlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsaXN0VHlwZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJldmVudFVzZXJMaXN0VGFibGUiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc0xvYWRlZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY3VycmVudFNlbGVjdGVkSW5kZXgiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ic2VhcmNoUmVzdWx0c0NvbnRhY3QiIHR5cGU9InByb2plY3Q6c2VhcmNoUmVzdWx0c0NvbnRhY3QiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InNlYXJjaFJlc3VsdHNDb250YWN0IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlZk9iaiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJiaWdUZXh0TGlzdEl0ZW0iIHR5cGU9InByb2plY3Q6YmlnVGV4dExpc3RJdGVtIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJiaWdUZXh0TGlzdEl0ZW0iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp0ZXh0bGlzdGl0ZW0iPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImludGVydmlld1VzZXJMaXN0SXRlbSIgdHlwZT0icHJvamVjdDppbnRlcnZpZXdVc2VyTGlzdEl0ZW0iID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImludGVydmlld1VzZXJMaXN0SXRlbSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1c2Vycm9vbSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1c2VybmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1c2VyX2lkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3RyZWFtaWQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVmT2JqIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYXN0bmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc1N1cGVyTW9kZXJhdG9yIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc1NlbGVjdGVkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc01vZCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmb3JtYXRlZERhdGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmlyc3RuYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbm5lY3RlZFNpbmNlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYmFzZVZpZGVvVmlldyIgdHlwZT0icHJvamVjdDpiYXNlVmlkZW9WaWV3IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgCisJVGhpcyBjbGFzcyBwcm92aWRlcyB0aGUgYmFzaWMgZnVuY3Rpb25zIGZvciB0aGUgdmlkZW8tb3V0cHV0CisJCisJICAgIEBTVEFSVF9DT0RFCisgICAgICAgICAgICAmbHQ7YmFzZVZpZGVvVmlldyB4PSIyMCIgeT0iMjAiIHdpZHRoPSIzMjAiIGhlaWdodD0iMjQwIiBiZ2NvbG9yPSJibGFjayIgLyZndDsKKyAgICAgICAgQEVORF9DT0RFCQorIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImJhc2VWaWRlb1ZpZXciIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ3ZWVrVmlldyIgdHlwZT0icHJvamVjdDp3ZWVrVmlldyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0id2Vla1ZpZXciIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGF5TmFtZXNMYWJlbElkcyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGF5TGFiZWxOYW1lc0xhYmVsSWRzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Im15U2NoZWR1bGVkTWVldGluZ3MiIHR5cGU9InByb2plY3Q6bXlTY2hlZHVsZWRNZWV0aW5ncyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibXlTY2hlZHVsZWRNZWV0aW5ncyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpiYXNlQ29udGVudFZpZXciPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImNoYXRQYXJ0aWNpcGFudHNJbnZpdGVOb3RpZmljYXRpb24iIHR5cGU9InByb2plY3Q6Y2hhdFBhcnRpY2lwYW50c0ludml0ZU5vdGlmaWNhdGlvbiIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iY2hhdFBhcnRpY2lwYW50c0ludml0ZU5vdGlmaWNhdGlvbiIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpndWlQcmVzZW50ZXIiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1c2VybWVzc2FnZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb29tSWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWZPYmoiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InB1YmxpY1NJRCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtZXNzYWdlT2JqZWN0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb25mZXJlbmNlUm9vbU5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJkYXRlU2VsZWN0b3JXZWVrIiB0eXBlPSJwcm9qZWN0OmRhdGVTZWxlY3RvcldlZWsiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImRhdGVTZWxlY3RvcldlZWsiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZURhdGVTZWxlY3RvckNvbXBvbmVudCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZpcnN0d2Vla2RkYXlkYXRlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImRyYXdTaW1wbGVDbGljayIgdHlwZT0icHJvamVjdDpkcmF3U2ltcGxlQ2xpY2siID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImRyYXdTaW1wbGVDbGljayIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpiYXNlQ2hvb3NlSWNvbiI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1vZGkiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJhZHZhbmNlZFJvb21TZXR0aW5ncyIgdHlwZT0icHJvamVjdDphZHZhbmNlZFJvb21TZXR0aW5ncyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYWR2YW5jZWRSb29tU2V0dGluZ3MiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ1cGxvYWRUYWIiIHR5cGU9InByb2plY3Q6dXBsb2FkVGFiIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ1cGxvYWRUYWIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6c2ltcGxlQmFzZVRhYnBhbmUiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzb3J0T3JkZXIiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iZmlsZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InByZUJ1dHRvbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY3VycmVudEZpbGVzVmFsdWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFzY0ZpbGUiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYXNjRGF0ZSIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJhc2VEYXRlU2VsZWN0b3JDb21wb25lbnQiIHR5cGU9InByb2plY3Q6YmFzZURhdGVTZWxlY3RvckNvbXBvbmVudCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYmFzZURhdGVTZWxlY3RvckNvbXBvbmVudCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ3ZWVrY2xhc3MiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNob3dpbmdkYXRlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNob3djYWxlbmRlcndlZWsiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2hvd2NhbGVuZGVybW9udGgiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibW9udGhjbGFzcyIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGF5bnVtYmVycyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJbMCwxLDIsMyw0LDUsNl0iID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkYXljbGFzcyIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJzaW1wbGVWYWx1ZUxpc3QiIHR5cGU9InByb2plY3Q6c2ltcGxlVmFsdWVMaXN0IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJzaW1wbGVWYWx1ZUxpc3QiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25zZWxlY3QiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im11bHRpc2VsZWN0IiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpdGVtY2xhc3NuYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9InNpbXBsZUxpc3RJdGVtIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJzaW1wbGViYXNldGFicGFuZSIgdHlwZT0icHJvamVjdDpzaW1wbGViYXNldGFicGFuZSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ic2ltcGxlYmFzZXRhYnBhbmUiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJiYXNlTGVmdFBhbmVsIiB0eXBlPSJwcm9qZWN0OmJhc2VMZWZ0UGFuZWwiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImJhc2VMZWZ0UGFuZWwiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZUJvdW5kaW5nQm9yZGVyVmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRpdGxlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImJhc2VQYW5lbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRpdGxlIG9mIHRoaXMgd2luZG93IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYWJlbGlkIiB0eXBlPSJseng6bnVtYmVyIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xvc2FibGUiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGlmIHRoaXMgQm94IHNob3VsZCBiZSBjbG9zZWFibGUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iaW1hZ2VGb3JEcmF3VmlldyIgdHlwZT0icHJvamVjdDppbWFnZUZvckRyYXdWaWV3IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJpbWFnZUZvckRyYXdWaWV3IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6aW1hZ2UiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1bmlxdWVPYmplY3RTeW5jTmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0eXBlT2ZPYmplY3QiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iaW1hZ2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb29tIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlbW90ZXdpZHRoIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVtb3RlaGVpZ2h0IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVmT2JqIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWNvcmRlck1vZHVzIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwYXJlbnRQYXRoIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1vZHVsZU5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNMb2NhbFN5bmMiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZpbGVOYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRvd25sb2FkdXJsIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRvbWFpbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJiYXNldXJsIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFsdGVyTW9kdXMiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJkeW5hbWljQ29tYm9ib3giIHR5cGU9InByb2plY3Q6ZHluYW1pY0NvbWJvYm94IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJkeW5hbWljQ29tYm9ib3giIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpiYXNlZm9ybWl0ZW0iPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbnNlbGVjdCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNDb3VudHJ5Q29tYm9ib3giIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJwcm9wZXJ0eVBhbmVsIiB0eXBlPSJwcm9qZWN0OnByb3BlcnR5UGFuZWwiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InByb3BlcnR5UGFuZWwiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZVByb3BlcnR5UGFuZWwiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZW5kU2VsZWN0aW9uIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imlnbm9yZVVwZGF0ZXMiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYmFzZURyYXdBcnJvdyIgdHlwZT0icHJvamVjdDpiYXNlRHJhd0Fycm93IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJiYXNlRHJhd0Fycm93IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VEcmF3VUxpbmUiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50ZHJhd2Fycm93bGluZXN0cm9rZUZpbGxEaXMiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjEiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50ZHJhd2Fycm93bGluZXN0cm9rZUZpbGwiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMHhGRjY2MDAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50ZHJhd2Fycm93bGluZXN0cm9rZURpcyIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRkcmF3YXJyb3dsaW5lc3Ryb2tlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjB4MDAwMDAwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY3VycmVudGRyYXdhcnJvd2xpbmVsaW5lV2lkdGgiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjQiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50ZHJhd2Fycm93T3BhY2l0eSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYmFzZURyYXdPYmplY3QiIHR5cGU9InByb2plY3Q6YmFzZURyYXdPYmplY3QiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImJhc2VEcmF3T2JqZWN0IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VEcmF3UG9pbnRlciI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5ld1NsaWRlTnVtYmVyIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibW9kZXJuVG9vbGJhciIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZnVsbEZpdCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJhc2VDb250ZW50VmlldyIgdHlwZT0icHJvamVjdDpiYXNlQ29udGVudFZpZXciID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImJhc2VDb250ZW50VmlldyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZW5kSW5pdCIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib250YWJjb250ZW50bGVhdmUiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRlc3Ryb3lCeU1ldGhvZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJvdmVyQWxsQ2hhdCIgdHlwZT0icHJvamVjdDpvdmVyQWxsQ2hhdCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIENoYXQgbW9kdWxlIG9mIHRoZSBkYXNoYm9hcmQuIFRoZSBmaXhlZCBzaXplIGlzIDgxMHgyODAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ib3ZlckFsbENoYXQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJtYWluRGFzaGJvYXJkIiB0eXBlPSJwcm9qZWN0Om1haW5EYXNoYm9hcmQiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyAgbW9kdWxlczpkYXNoYm9hcmQgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibWFpbkRhc2hib2FyZCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpiYXNlQ29udGVudFZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWZPYmpJdGVtIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBDaGF0IG1vZHVsZSBvZiB0aGUgZGFzaGJvYXJkLiBUaGUgZml4ZWQgc2l6ZSBpcyA4MTB4MjgwCisgICAgJmx0O2NsYXNzIG5hbWU9Im92ZXJBbGxDaGF0IiBleHRlbmRzPSJndWlQcmVzZW50ZXIiIHJlc2l6ZWFibGU9ImZhbHNlIgorICAgICAgICB3aWR0aD0iJHsgY2FudmFzLndpZHRoLTIwIH0iIGhlaWdodD0iJHsgY2FudmFzLmhlaWdodC0zNjAgfSIgCisgICAgICAgIHk9IjI0MCIgeD0iMTAiIGNsb3NhYmxlPSJ0cnVlIiBsYWJlbGlkPSI0NDMiIAorICAgICAgICBpc2RyYWdhYmxlPSJmYWxzZSIgbWluaW1pemFibGU9ImZhbHNlIiAKKyAgICAgICAgICAgICAgICAgbWF4aW1pemFibGU9ImZhbHNlIiBjbG9zYWJsZT0iZmFsc2UiJmd0OworICAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJtYWluTWVudU1lZXRpbmdzSXRlbSIgdHlwZT0icHJvamVjdDptYWluTWVudU1lZXRpbmdzSXRlbSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibWFpbk1lbnVNZWV0aW5nc0l0ZW0iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGV4dHZhbHVlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZXh0VG9vbFRpcCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWxlY3RlZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGlzdCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNvcGVuIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc2xlYWYiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFjdGlvbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImlubmVybGlzdFZpZXdFdmVudFVzZXJMaXN0VGFibGUiIHR5cGU9InByb2plY3Q6aW5uZXJsaXN0Vmlld0V2ZW50VXNlckxpc3RUYWJsZSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iaW5uZXJsaXN0Vmlld0V2ZW50VXNlckxpc3RUYWJsZSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InRlcm1pbmFyZWEiIHR5cGU9InByb2plY3Q6dGVybWluYXJlYSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idGVybWluYXJlYSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZXJtaW5PYmoiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzQWN0aXZlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjYWxlbmRlck9ialJlZiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYXJyYXlNZWV0aW5nTWVtYmVyIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImNhbGVuZGFyX2RheSIgdHlwZT0icHJvamVjdDpjYWxlbmRhcl9kYXkiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImNhbGVuZGFyX2RheSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ5ZWFyIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3RhcnRkYXRlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjEiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwaXhlbHNfcGVyX2hvdXIiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMjIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvcGVuZWQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuZXdZZWFyIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmV3TW9udGgiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuZXdEYXkiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtb250aCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImV2ZW50d2lkdGgiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJHtkZXRhaWxzLmJncmVjdC53aWR0aCAtICggdGhpcy5vcGVuZWQgPyAzOCA6IDAgKX0iID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlbmRkYXRlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjEiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkYXlPZk1vbnRoIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYXN5bmNOZXciIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Imludml0ZU1haW5XaW5kb3ciIHR5cGU9InByb2plY3Q6aW52aXRlTWFpbldpbmRvdyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCisJCVRoaXMgY2xhc3Mgc2hvd3MgYSBpbnZpdGF0aW9uIHdpbmRvdyB3aXRoIGNsaWNraW5nIGJ1dHRvbiB3aGljaCBpcyBsb2NhdGVkIGluIHZpZGVvIGFuZCBhdWRpbyBwYW5lbC4KKwk8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJpbnZpdGVNYWluV2luZG93IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmxhYmVsRXhwbG9yZXJCb3giPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb29tVHlwZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJjb25mZXJlbmNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisKKwkJVGhpcyBjbGFzcyBzaG93cyBhIGludml0YXRpb24gd2luZG93IHdpdGggY2xpY2tpbmcgYnV0dG9uIHdoaWNoIGlzIGxvY2F0ZWQgaW4gdmlkZW8gYW5kIGF1ZGlvIHBhbmVsLgorCTwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJiYXNlVXJsIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Imh0dHA6Ly93d3cuZGVuaWMuZGUiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Im1haW5OYXZpIiB0eXBlPSJwcm9qZWN0Om1haW5OYXZpIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJtYWluTmF2aSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwZW5kaW5nIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hdmlPYmplY3QiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRtZW51IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50U3VibWVudSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY3VycmVudE1haW5tZW51IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InNlYXJjaFVzZXJQcm9maWxlTGlzdEl0ZW0iIHR5cGU9InByb2plY3Q6c2VhcmNoVXNlclByb2ZpbGVMaXN0SXRlbSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ic2VhcmNoVXNlclByb2ZpbGVMaXN0SXRlbSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpiYXNlUGFnaW5nTGlzdEl0ZW0iPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1c2VybmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0aW1lem9uZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWFyY2hVc2VyUHJvZmlsZUltYWdlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWFyY2hTZWFyY2hzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlYXJjaE9mZmVycyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwZW5kaW5nIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InJlc3VsdFBpZUNoYXJQb2xsIiB0eXBlPSJwcm9qZWN0OnJlc3VsdFBpZUNoYXJQb2xsIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJyZXN1bHRQaWVDaGFyUG9sbCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpvbXBpZWNoYXJ0Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ieXNlcmllcyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ieHNlcmllcyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idG9vbHRpcHNlcmllcyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJiYXNlSXRlbUFjdGl2aXR5TGlzdCIgdHlwZT0icHJvamVjdDpiYXNlSXRlbUFjdGl2aXR5TGlzdCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYmFzZUl0ZW1BY3Rpdml0eUxpc3QiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idFN0YW1wIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyY2wiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1lc3NhZ2UiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZFRvb2xUaXBPa0J1dHRvbiIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMTM2MCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxhYmVsaWRUb29sVGlwRGVueUJ1dHRvbiIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMTM2MSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0idmlkZW9Db250YWluZXIiIHR5cGU9InByb2plY3Q6dmlkZW9Db250YWluZXIiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKworICAgICAgICBDb250YWluZXIgdmlldyBpbmNsdWRpbmcgYWxsIGF1ZGlvL3ZpZGVvIC0gdmlld3MgZm9yIGEgTWVldGluZworICAgICAgICAKKyAgICAgICAgQGtleXdvcmRzIGRlcHJlY2F0ZWQgc2VlIHBhcnRpY2lwZW50cy5sengKKyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ2aWRlb0NvbnRhaW5lciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb2xvckFycmF5IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBjb2xvcnMgZm9yIGVhY2ggdXNlciA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYnJvYWRDYXN0Vmlld1JlZiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgaG9sZHMgYSByZWZlcmVuY2VzIHRvIHRoZSB2aWRlb3ZpZXcgd2hpY2ggaXMgYnJvYWRjYXN0aW5nIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InJvb21MaXN0SXRlbSIgdHlwZT0icHJvamVjdDpyb29tTGlzdEl0ZW0iID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InJvb21MaXN0SXRlbSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdGFydHRpbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm9vbW5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm9vbWlkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm9vbWNvbW1lbnQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm9vbVR5cGUiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb29tQ2xhc3NOYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImNvbmZlcmVuY2VWaWV3IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib2JqIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtYXhVc2VycyIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iNCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzcHVibGljIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc2F1ZGllbmNlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50dXNlcnMiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNoZWNrRm9yTWF4VXNlcnMiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ic2lwTG9hZGVyIiB0eXBlPSJwcm9qZWN0OnNpcExvYWRlciIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ic2lwTG9hZGVyIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iY291bnRyeUNvbWJvYm94IiB0eXBlPSJwcm9qZWN0OmNvdW50cnlDb21ib2JveCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iY291bnRyeUNvbWJvYm94IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OnJlc2V0Q29tYm9ib3giPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWZPYmoiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRvVXBkYXRlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImF1ZGllbmNlVmlldyIgdHlwZT0icHJvamVjdDphdWRpZW5jZVZpZXciID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImF1ZGllbmNlVmlldyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpiYXNlQ29udGVudFZpZXciPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJhc2VDb250ZW50U2F2ZVZpZXciIHR5cGU9InByb2plY3Q6YmFzZUNvbnRlbnRTYXZlVmlldyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYmFzZUNvbnRlbnRTYXZlVmlldyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpiYXNlQ29udGVudFZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzYXZlSXNWaXNpYmxlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlZnJlc2hJc1Zpc2libGUiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25yZWxvYWQiIHR5cGU9InhzOnN0cmluZyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9ubmV3IiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmRlbGV0ZSIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib2JzZXJ2ZXJWaWV3cyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGVsZXRlSXNWaXNpYmxlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbmZpcm1NZXNzYWdlTGFiZWxJZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iNjYxIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWRkSXNWaXNpYmxlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iY29uZmVyZW5jZUJveCIgdHlwZT0icHJvamVjdDpjb25mZXJlbmNlQm94IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJjb25mZXJlbmNlQm94IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRleHRJbnNldCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMTAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYWJlbGlkIiB0eXBlPSJseng6bnVtYmVyIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNvcGVuIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImluaXRIZWlnaHQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJoZWFkZXJUZXh0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IlVzZXJzIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xvc2VkSGVpZ2h0IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSI0MCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsb3NlYWJsZSIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJpbnRlcnZpZXdMaXN0VGFibGUiIHR5cGU9InByb2plY3Q6aW50ZXJ2aWV3TGlzdFRhYmxlIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJpbnRlcnZpZXdMaXN0VGFibGUiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJjYWxlbmRhcldpbmRvdyIgdHlwZT0icHJvamVjdDpjYWxlbmRhcldpbmRvdyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iY2FsZW5kYXJXaW5kb3ciIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmllbGRSZWYiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iaG9yaXpvbnRhbE1lbnVJY29uQmFyIiB0eXBlPSJwcm9qZWN0Omhvcml6b250YWxNZW51SWNvbkJhciIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iaG9yaXpvbnRhbE1lbnVJY29uQmFyIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1vZGkiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJyZWNvcmRMaXN0SXRlbSIgdHlwZT0icHJvamVjdDpyZWNvcmRMaXN0SXRlbSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0icmVjb3JkTGlzdEl0ZW0iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZUNvbnRlbnRMaXN0SXRlbSI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZhbHVlTmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2YWx1ZSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYmFzZURyYXdUcmlhbmdsZSIgdHlwZT0icHJvamVjdDpiYXNlRHJhd1RyaWFuZ2xlIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJiYXNlRHJhd1RyaWFuZ2xlIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VEcmF3Q2xpcEFydCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImN1cnJlbnR0cmlhbmdsZXN0cm9rZUZpbGxEaXMiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjEiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50dHJpYW5nbGVzdHJva2VGaWxsIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjB4RkZGRjMzIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY3VycmVudHRyaWFuZ2xlc3Ryb2tlRGlzIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY3VycmVudHRyaWFuZ2xlc3Ryb2tlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjB4RkY2NjAwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY3VycmVudHRyaWFuZ2xlaW5lV2lkdGgiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjQiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50dHJpYW5nbGVPcGFjaXR5IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJleHBsb3JlckJveCIgdHlwZT0icHJvamVjdDpleHBsb3JlckJveCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iZXhwbG9yZXJCb3giIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGl0bGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iZGVmYXVsdHRpdGxlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVGhlIFRpdGxlIG9mIHRoaXMgQm94IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZXNpemVhYmxlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBpZiB0aGlzIEJveCBzaG91bGQgYmUgcmVzaXplYWJsZSAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uY2xvc2UiIHR5cGU9InhzOnN0cmluZyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHRoZSBFdmVudCB3aWxsIGJlIHRocm93biBpZiB5b3UgY2xvc2UgdGhlIEJveCA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZG9ja2luZ2JhcnJpZXIiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjE1IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSGFyZCB0byBleHBsYWluIGJ1dCBpdHMgY2xlYXIgaWYgeW91IHBsYXkgYXJvdW5kIAorCQl3aXRoIHRoYXQuIEl0cyB0aGUgbnVtYmVyIG9mIG1pbmltdW0gcGl4ZWxzIGJlZm9yZSAKKwkJdGhlICJkb2NraW5nIiBlZmZlY3Qgd2lsbCBiZSB0aGVyZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZG9ja2luZyIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQ2FuIHRoaXMgQm94IGJlIGRvY2tlZCB0byBvdGhlcnMgYW5kIAorCQkJdGhlIHdpZHRoL2hlaWdodCBvZiBwYXJlbnQgY29tcG9lbnQgYmFycmllciA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xvc2FibGUiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGlmIHRoaXMgQm94IHNob3VsZCBiZSBjbG9zZWFibGUgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZG9jdW1lbnRQYW5lbFZQYW5lbFNlcGVyYXRvciIgdHlwZT0icHJvamVjdDpkb2N1bWVudFBhbmVsVlBhbmVsU2VwZXJhdG9yIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJkb2N1bWVudFBhbmVsVlBhbmVsU2VwZXJhdG9yIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0idmlld1VzZXJQcm9maWxlV2luZG93IiB0eXBlPSJwcm9qZWN0OnZpZXdVc2VyUHJvZmlsZVdpbmRvdyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idmlld1VzZXJQcm9maWxlV2luZG93IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0Omd1aVByZXNlbnRlciI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVzZXJJZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYmFja3VwSW1wb3J0V2luZG93IiB0eXBlPSJwcm9qZWN0OmJhY2t1cEltcG9ydFdpbmRvdyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYmFja3VwSW1wb3J0V2luZG93IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmxhYmVsRXhwbG9yZXJCb3giPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ3aW5vYmoiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVwbG9hZG1vZHVsZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJ1c2VycyIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlc3Npb25pZCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWNvbmRpZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ic3luY1dpbiIgdHlwZT0icHJvamVjdDpzeW5jV2luIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJzeW5jV2luIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmxhYmVsVGV4dCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlZk9iaiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZGVycm9yIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJzaW1wbGVCYXNlVGFicGFuZSIgdHlwZT0icHJvamVjdDpzaW1wbGVCYXNlVGFicGFuZSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFRhYnBhbmUuIGl0IHVzZWQgYnkgY2hhdC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ic2ltcGxlQmFzZVRhYnBhbmUiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJsaXN0UHJlc2VudGF0aW9uRmlsZVBERkV4cGxvcmVyIiB0eXBlPSJwcm9qZWN0Omxpc3RQcmVzZW50YXRpb25GaWxlUERGRXhwbG9yZXIiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Imxpc3RQcmVzZW50YXRpb25GaWxlUERGRXhwbG9yZXIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZUxpc3RQcmVzZW50YXRpb25JdGVtRXhwbG9yZXIiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzd2ZOYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwZGZuYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImNhbGVuZGFyTW9udGhWaWV3IiB0eXBlPSJwcm9qZWN0OmNhbGVuZGFyTW9udGhWaWV3IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJjYWxlbmRhck1vbnRoVmlldyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmdWxsRGF0ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGF5ZGF0ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY291bnRzdWJ3aWV2cyIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibWluaUljb25TbXlib2xFeHRyYUljb25zU2VwYXJhdG9yIiB0eXBlPSJwcm9qZWN0Om1pbmlJY29uU215Ym9sRXh0cmFJY29uc1NlcGFyYXRvciIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibWluaUljb25TbXlib2xFeHRyYUljb25zU2VwYXJhdG9yIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRpdGxlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9InRpdGxlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNvcGVuIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0icmVzdHJpY3RlZENvbmZlcmVuY2VNZW51YmFyIiB0eXBlPSJwcm9qZWN0OnJlc3RyaWN0ZWRDb25mZXJlbmNlTWVudWJhciIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0icmVzdHJpY3RlZENvbmZlcmVuY2VNZW51YmFyIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6bWVudWJhciI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYXV0b2xvYWRlckJhck9ubHkiIHR5cGU9InByb2plY3Q6YXV0b2xvYWRlckJhck9ubHkiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImF1dG9sb2FkZXJCYXJPbmx5IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN0ZXAiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjEwMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN0YXJ0IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWF4d2lkdGgiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjEwMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1heHN0ZXBzIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxOSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1heCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMTMwMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRzdGVwcyIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZG9jdW1lbnRJY29uVG9wUGFuZWwiIHR5cGU9InByb2plY3Q6ZG9jdW1lbnRJY29uVG9wUGFuZWwiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImRvY3VtZW50SWNvblRvcFBhbmVsIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VUb3BQYW5lbCI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iY29tbW9uVmlkZW9WaWV3Q29udGVudCIgdHlwZT0icHJvamVjdDpjb21tb25WaWRlb1ZpZXdDb250ZW50IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJjb21tb25WaWRlb1ZpZXdDb250ZW50IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0icmVzdHJpY3RlZFVzZXJMaXN0SXRlbSIgdHlwZT0icHJvamVjdDpyZXN0cmljdGVkVXNlckxpc3RJdGVtIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJyZXN0cmljdGVkVXNlckxpc3RJdGVtIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VQYWdpbmdMaXN0SXRlbSI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVzZXJyb29tIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVzZXJwaWNWaWV3IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1c2VycGljVVJMIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVzZXJuYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVzZXJfaWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdHJlYW1pZCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWxmSXRlbSIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVmT2JqIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtaWNNdXRlZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFzdG5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNTdXBlck1vZGVyYXRvciIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNNb2QiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzQnJvYWRjYXN0aW5nIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmb3JtYXRlZERhdGUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmlyc3RuYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbm5lY3RlZFNpbmNlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNhblNoYXJlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjYW5SZW1vdGUiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNhbkRyYXciIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZm9sZGVyRmlsZUV4cGxvcmVySXRlbSIgdHlwZT0icHJvamVjdDpmb2xkZXJGaWxlRXhwbG9yZXJJdGVtIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJmb2xkZXJGaWxlRXhwbG9yZXJJdGVtIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VGaWxlRXhwbG9yZXJJdGVtIj4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJpY29uVmlldyIgdHlwZT0icHJvamVjdDppY29uVmlldyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iaWNvblZpZXciIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZW5hYmxlZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImVudGVyRXh0ZXJuTWVtYmVyIiB0eXBlPSJwcm9qZWN0OmVudGVyRXh0ZXJuTWVtYmVyIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJlbnRlckV4dGVybk1lbWJlciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpsYWJlbEV4cGxvcmVyQm94Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVmT2JqIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImludGVydmlld1ZpZGVvQ2hvb3NlVXNlciIgdHlwZT0icHJvamVjdDppbnRlcnZpZXdWaWRlb0Nob29zZVVzZXIiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImludGVydmlld1ZpZGVvQ2hvb3NlVXNlciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpndWlQcmVzZW50ZXIiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWZPYmoiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0idmlkZW9FdmVudENvbnRhaW5lclN0cmVhbSIgdHlwZT0icHJvamVjdDp2aWRlb0V2ZW50Q29udGFpbmVyU3RyZWFtIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ2aWRlb0V2ZW50Q29udGFpbmVyU3RyZWFtIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ib3JnQWRtaW5MaXN0SXRlbSIgdHlwZT0icHJvamVjdDpvcmdBZG1pbkxpc3RJdGVtIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgRXhpc3Rpbmcgb3JnYW5pemF0aW9uIGxpc3QuIHVzZWQgYnkgb3JnQWRtaW4gb25seSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJvcmdBZG1pbkxpc3RJdGVtIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VDb250ZW50TGlzdEl0ZW0iPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvcmduYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9yZ2FuaXNhdGlvbl9pZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIEV4aXN0aW5nIG9yZ2FuaXphdGlvbiBsaXN0LiB1c2VkIGJ5IG9yZ0FkbWluIG9ubHkgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYmFzZVZpZGVvT2JqZWN0IiB0eXBlPSJwcm9qZWN0OmJhc2VWaWRlb09iamVjdCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCisJQmFzZSBjb250YWluZXIgZm9yIGEgY2xpZW50LCBjYW4gYmUgZWl0aGVyOgorCWEgcmVtb3RlLXZpZGVvIChzdWJzY3JpYmluZy9wbGF5aW5nIGEgdmlkZW8pCisJb3IgYSBzZWxmLXZpZGVvIChicm9hZGNhc3RpbmcgYSBjYW0vbWljKQorIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImJhc2VWaWRlb09iamVjdCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1c2VyY29sb3IiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBjb2xvciBvZiB0aGlzIHVzZXIsIHRoaXMgaXMgdGhlIGNvbG9yIHRoZSB1c2VyIHdpbGwgYWxzbyB1c2UgZm9yIGhpcyBjaGF0LWNvbG9yIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZXNwZWN0UmF0aW8iIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icHVibGljU0lEIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIHB1YmxpY1NJRCBpcyBhIGhhc2gtdmFsdWUgdG8gaWRlbnRpZnkgYSB1c2VyIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtaW5pbWl6ZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1pY011dGVkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBtaWNNdXRlZCBpbmRpY2F0ZXMgaWYgdGhlIG1pY3JvcGhvbmUgaXMgY3VycmVudGx5IHR1cm5lZCBzb3VuZCBvciBnYWluIHRvIDAgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzbG9hZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc1Nob3dNaWNNdXRlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc011dGVkQnlNb2RlcmF0b3IiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImluaXRXIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSI0MCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImluaXRIIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSI0MCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImhpZGVieUF1ZGlvT25seSIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY3VzdG9tIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Im1lc3NhZ2VXaW4iIHR5cGU9InByb2plY3Q6bWVzc2FnZVdpbiIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibWVzc2FnZVdpbiIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpsYWJlbEV4cGxvcmVyQm94Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZGVycm9yIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJjb25mZXJlbmNlUm9vbVNpZGViYXIiIHR5cGU9InByb2plY3Q6Y29uZmVyZW5jZVJvb21TaWRlYmFyIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJjb25mZXJlbmNlUm9vbVNpZGViYXIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VsZWN0ZWQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzT3BlbiIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Im9tcGllY2hhcnQiIHR5cGU9InByb2plY3Q6b21waWVjaGFydCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorCisgICAgICAgICAgQSBwaWUgY2hhcnQgcmVwcmVzZW50cyBhIGNoYXJ0IHRoYXQgaXMgZGlzcGxheWVkIGluIHRoZSAyRAorICAgICAgICAgIHBvbGFyIHBsYW5lLiBUaGlzIGNsYXNzIGluaGVyaXRzIGltbWVkaWF0ZWx5IGZyb20gY2hhcnQgY2xhc3MKKyAgICAgICAgICBhbmQgY2FuIGJlIGluc3RhbnRpYXRlZCBkaXJlY3RseS4gKFdhcm5pbmc6IE9mIGJldGEgcXVhbGl0eS4pCisgICAgICAgICAgQGFjY2VzcyBwdWJsaWMKKyAgICAgICAgICA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJvbXBpZWNoYXJ0IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6Y2hhcnQiPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImV2ZW50VXNlckxpc3QiIHR5cGU9InByb2plY3Q6ZXZlbnRVc2VyTGlzdCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iZXZlbnRVc2VyTGlzdCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1c2VyTmV3VmlkZW9Db250YWluZXIiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9yZ2FuaXNhdGlvbl9pZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imxpc3RUeXBlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9ImV2ZW50VXNlckxpc3RUYWJsZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbG9yQXJyYXkiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGNvbG9ycyBmb3IgZWFjaCB1c2VyIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJicm9hZENhc3RWaWV3UmVmIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBob2xkcyBhIHJlZmVyZW5jZXMgdG8gdGhlIHZpZGVvdmlldyB3aGljaCBpcyBicm9hZGNhc3RpbmcgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFwcGx5RGVmYXVsdE1vZGVyYXRpb24iIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFsbG93VXNlclF1ZXN0aW9ucyIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImNvbnRhY3RzTGlzdEl0ZW0iIHR5cGU9InByb2plY3Q6Y29udGFjdHNMaXN0SXRlbSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iY29udGFjdHNMaXN0SXRlbSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpiYXNlUGFnaW5nTGlzdEl0ZW0iPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1c2VybmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzaGFyZUNhbGVuZGFyIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWFyY2hVc2VyUHJvZmlsZUltYWdlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImNvbW9ib3hMaXN0SXRlbU5vSGVhZGVycyIgdHlwZT0icHJvamVjdDpjb21vYm94TGlzdEl0ZW1Ob0hlYWRlcnMiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImNvbW9ib3hMaXN0SXRlbU5vSGVhZGVycyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpiYXNlUGFnaW5nTGlzdEl0ZW0iPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZXh0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYWN0aXZpdHlMaXN0UmVzdHJpY3RlZFJvb21Nb2RlcmF0aW9uIiB0eXBlPSJwcm9qZWN0OmFjdGl2aXR5TGlzdFJlc3RyaWN0ZWRSb29tTW9kZXJhdGlvbiIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYWN0aXZpdHlMaXN0UmVzdHJpY3RlZFJvb21Nb2RlcmF0aW9uIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VJdGVtQWN0aXZpdHlMaXN0Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ0dXJuT3Zlckxpc3RIZWFkZXJJdGVtT3JkZXJlZCIgdHlwZT0icHJvamVjdDp0dXJuT3Zlckxpc3RIZWFkZXJJdGVtT3JkZXJlZCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idHVybk92ZXJMaXN0SGVhZGVySXRlbU9yZGVyZWQiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6dHVybm92ZXJsaXN0aGVhZGVyaXRlbVJlc2l6ZSI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9yZGVyQnkiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNTZWxlY3RlZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYXNjIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYnJvd3NlcmphdmFzY3JpcHRjYWxsYmFjayIgdHlwZT0icHJvamVjdDpicm93c2VyamF2YXNjcmlwdGNhbGxiYWNrIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJicm93c2VyamF2YXNjcmlwdGNhbGxiYWNrIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZhbHVlIiB0eXBlPSJ4czpzdHJpbmciID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0aW1lciIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMTAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwcmV2YWx1ZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJfYnJvd3NlcmphdmFzY3JpcHRjYWxsYmFja3ByZXZhbHVlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibHphcHBJZCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJsemFwcCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iY2hvb3NlT3JnYW5pc2F0aW9uV2luZG93IiB0eXBlPSJwcm9qZWN0OmNob29zZU9yZ2FuaXNhdGlvbldpbmRvdyIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIE9yZ2FuaXphdGlvbiBjaG9pY2UgbW9kYWwgd2luZG93IHdoZW4gYW4gb3JnYW5pemF0aW9uIGlzIGFkZGVkIHRvIGEgdXNlci48L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJjaG9vc2VPcmdhbmlzYXRpb25XaW5kb3ciIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6bGFiZWxFeHBsb3JlckJveCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlZk9iaiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXRlbV9pZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIE9yZ2FuaXphdGlvbiBjaG9pY2UgbW9kYWwgd2luZG93IHdoZW4gYW4gb3JnYW5pemF0aW9uIGlzIGFkZGVkIHRvIGEgdXNlci48L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJkb2N1bWVudFBhbmVsSFBhbmVsU2VwZXJhdG9yIiB0eXBlPSJwcm9qZWN0OmRvY3VtZW50UGFuZWxIUGFuZWxTZXBlcmF0b3IiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImRvY3VtZW50UGFuZWxIUGFuZWxTZXBlcmF0b3IiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJsaW5lQ29sb3JDaG9vc2UiIHR5cGU9InByb2plY3Q6bGluZUNvbG9yQ2hvb3NlIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJsaW5lQ29sb3JDaG9vc2UiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZVByb3BlcnR5U2VsZWN0b3IiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWxlY3RlZENvbG9yVHJhbnNmb3JtZWRTdHJpbmciIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMHhGRjY2MDAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWxlY3RlZENvbG9yRGlzIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VsZWN0ZWRDb2xvciIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMHhGRjY2MDAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc29wZW4iIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImluSW5pdENvbG9yU2VsZWN0aW9uIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0idHJ1ZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbG9yUGlja1JlZiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY29sb3JJc0VuYWJsZWQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJyZXNldENvbWJvYm94IiB0eXBlPSJwcm9qZWN0OnJlc2V0Q29tYm9ib3giID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InJlc2V0Q29tYm9ib3giIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDpjb21ib2JveCI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0icmVjb3JkTGlzdGl0ZW0iIHR5cGU9InByb2plY3Q6cmVjb3JkTGlzdGl0ZW0iID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InJlY29yZExpc3RpdGVtIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iZmlsZVVwbG9hZCIgdHlwZT0icHJvamVjdDpmaWxlVXBsb2FkIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJmaWxlVXBsb2FkIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzT25seVppcCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNPbmx5WG1sIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc09ubHlQcm9maWxlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc09ubHlQcHQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzT25seUltYWdlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJiYXNlQm91bmRpbmdCb3JkZXJWaWV3IiB0eXBlPSJwcm9qZWN0OmJhc2VCb3VuZGluZ0JvcmRlclZpZXciID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImJhc2VCb3VuZGluZ0JvcmRlclZpZXciIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmVydGljYWxDbGFzc0FjdGl2ZSIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idldpZHRoIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idkhlaWdodCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRvcENsYXNzUGFuZWwiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmlnaHRDbGFzc1BhbmVsIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InByZWNsb3NlIiB0eXBlPSJ4czpzdHJpbmciID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBleHRyYSBFdmVudCBmb3IgdGhpcyBraW5kIG9mIHZpZXcKKwkJd2lsbCBiZSB0aHJvd24gYmVmb3JlIHRoZSB2aWV3IGluaXRzIG5ldyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25jbG9zZSIgdHlwZT0ieHM6c3RyaW5nIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgdGhlIEV2ZW50IHdpbGwgYmUgdGhyb3duIGlmIHlvdSBjbG9zZSB0aGUgQm94IDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtb3VzZXRyYWNrZXJfZGVsIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiRvbmNleyBuZXcgTHpEZWxlZ2F0ZSh0aGlzLCAnY2hlY2tTdGF0aWNCb3JkZXJzJyApfSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxlZnRDbGFzc1BhbmVsIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imhhc3NoYWRvdyIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9InRydWUiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJoV2lkdGgiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJoSGVpZ2h0IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZG9ja2luZ2JhcnJpZXIiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjE1IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgSGFyZCB0byBleHBsYWluIGJ1dCBpdHMgY2xlYXIgaWYgeW91IHBsYXkgYXJvdW5kIAorCQl3aXRoIHRoYXQuIEl0cyB0aGUgbnVtYmVyIG9mIG1pbmltdW0gcGl4ZWxzIGJlZm9yZSAKKwkJdGhlICJkb2NraW5nIiBlZmZlY3Qgd2lsbCBiZSB0aGVyZSA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZG9ja2luZyIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgQ2FuIHRoaXMgQm94IGJlIGRvY2tlZCB0byBvdGhlcnMgYW5kIAorCQkJdGhlIHdpZHRoL2hlaWdodCBvZiBwYXJlbnQgY29tcG9lbnQgYmFycmllciA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY3VycmVudEJvdW5kaW5nQm94IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJib3VuZGluZ2JhcnJpZXIiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJib3R0b21DbGFzc1BhbmVsIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFjdGl2YXRpb25WQ2xhc3NCb3VuZGluZyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhY3RpdmF0aW9uQ2xhc3NCb3VuZGluZyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Imxpc3RJbWFnZURyYWciIHR5cGU9InByb2plY3Q6bGlzdEltYWdlRHJhZyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibGlzdEltYWdlRHJhZyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ1cGxvYWRtb2R1bCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc1BwdCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmlsZW5hbWVQdXJlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZpbGVuYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImV4dCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9Im1vZGVybldoaXRlQm9hcmRQYW5lbCIgdHlwZT0icHJvamVjdDptb2Rlcm5XaGl0ZUJvYXJkUGFuZWwiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Im1vZGVybldoaXRlQm9hcmRQYW5lbCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpjb25mZXJlbmNlQm94Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJtaW5pSWNvblNteWJvbEV4dHJhSWNvbnNDb250YWluZXIiIHR5cGU9InByb2plY3Q6bWluaUljb25TbXlib2xFeHRyYUljb25zQ29udGFpbmVyIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJtaW5pSWNvblNteWJvbEV4dHJhSWNvbnNDb250YWluZXIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp0ZXh0Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idG9vbFRpcFJlZmVyZW5jZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc29wZW4iIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaWNvbkxpc3QiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZvbGRlck5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZk5hbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2FsY0l0ZW0iIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iY29udGVudFNhdmVXaW5kb3ciIHR5cGU9InByb2plY3Q6Y29udGVudFNhdmVXaW5kb3ciID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImNvbnRlbnRTYXZlV2luZG93IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VFcnJvckRpYWxvZyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNhdmVPYmoiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlZk9iaiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icHJvY2Vzc05leHRJbmRleCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibGlzdFByZXNlbnRhdGlvbkZpbGVPcmlnIiB0eXBlPSJwcm9qZWN0Omxpc3RQcmVzZW50YXRpb25GaWxlT3JpZyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibGlzdFByZXNlbnRhdGlvbkZpbGVPcmlnIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0Omxpc3RQcmVzZW50YXRpb25GaWxlUERGIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib3JpZ2luYWxOYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0idHVybk92ZXJMaXN0UGFnZWQiIHR5cGU9InByb2plY3Q6dHVybk92ZXJMaXN0UGFnZWQiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBjb21tb24gVHVybk92ZXJMaXN0IHZpZXcgY2xhc3MuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9InR1cm5PdmVyTGlzdFBhZ2VkIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2V0dXJuT3Zlckxpc3RQYWdlZCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlbmRFdmVudFRvUmVsb2FkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InJzc1BhbmVsIiB0eXBlPSJwcm9qZWN0OnJzc1BhbmVsIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJyc3NQYW5lbCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpndWlQcmVzZW50ZXIiPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImRyYXdEb2N1bWVudFBhbmVsSXRlbSIgdHlwZT0icHJvamVjdDpkcmF3RG9jdW1lbnRQYW5lbEl0ZW0iID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImRyYXdEb2N1bWVudFBhbmVsSXRlbSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpibHVlQnV0dG9uIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibW9kaSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYWJlbGlkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJyZW1vdGVVc2VyRGV0YWlscyIgdHlwZT0icHJvamVjdDpyZW1vdGVVc2VyRGV0YWlscyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0icmVtb3RlVXNlckRldGFpbHMiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJtYWluVG9vbHNUb3BQYW5lbCIgdHlwZT0icHJvamVjdDptYWluVG9vbHNUb3BQYW5lbCIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibWFpblRvb2xzVG9wUGFuZWwiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZVRvcFBhbmVsIj4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJmbGV4aWJsZUV2ZW50Um9vbSIgdHlwZT0icHJvamVjdDpmbGV4aWJsZUV2ZW50Um9vbSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iZmxleGlibGVFdmVudFJvb20iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZUNvbmZlcmVuY2VSb29tIj4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJhcHBvaW50bWVudE1lbWJlcnMiIHR5cGU9InByb2plY3Q6YXBwb2ludG1lbnRNZW1iZXJzIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJhcHBvaW50bWVudE1lbWJlcnMiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6bGFiZWxFeHBsb3JlckJveCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRlcm1pbk9ialJlZiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibnVtYmVyT2ZTdGFydCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im51bWJlck9mUmVjb3JkcyIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJudW1iZXJPZk1lc3NhZ2UiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImNvbmZlcmVuY2VWaWV3IiB0eXBlPSJwcm9qZWN0OmNvbmZlcmVuY2VWaWV3IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJjb25mZXJlbmNlVmlldyIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpiYXNlQ29udGVudFZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb29tb2JqIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtZWV0aW5nVGltZXIiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ibGlzdFBhZ2VkQ29udGVudCIgdHlwZT0icHJvamVjdDpsaXN0UGFnZWRDb250ZW50IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgY29tbW9uIFR1cm5PdmVyTGlzdCB2aWV3IGNsYXNzLiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJsaXN0UGFnZWRDb250ZW50IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRvdGFsSXRlbXNJbkxpc3QiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzaG93SFNjcm9sbGJhciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJ2aXNpYmxlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXRlbXNUb1Nob3ciIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpdGVtSGVpZ2h0IiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIyMCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGNvbW1vbiBUdXJuT3Zlckxpc3QgdmlldyBjbGFzcy4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRMYXN0SXRlbUluTGlzdCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0icHJpdmF0ZU1lc3NhZ2VzIiB0eXBlPSJwcm9qZWN0OnByaXZhdGVNZXNzYWdlcyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0icHJpdmF0ZU1lc3NhZ2VzIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVzZXJDb250YWN0SWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZW5kZXJ1c2VySWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZW5kRXZlbnRUb1JlbG9hZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VsZWN0ZWRSZWZPYmpJZHMiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlbGVjdGVkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWxlY3RNZW51SXRlbU9iaiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm9vbU9iamVjdFJlZiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icHJpdmF0ZU1lc3NhZ2VJZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InByaXZhdGVNZXNzYWdlRm9sZGVySWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwZW5kaW5nVXNlclN0YXR1c1JlZiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25seVVwZGF0ZURyb3BEb3duIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuZXdNZXNzYWdlQWN0aXZlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuZXdGb2xkZXJJZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzVHJhc2giIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzU2VuZCIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNSZWFkIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc0luYm94IiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc0ZvbGRlciIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY291bnRVblJlYWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InNjcmVlblNoYXJpbmdDb250YWluZXIiIHR5cGU9InByb2plY3Q6c2NyZWVuU2hhcmluZ0NvbnRhaW5lciIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ic2NyZWVuU2hhcmluZ0NvbnRhaW5lciIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InVzZXJMaXN0QWRtaW4iIHR5cGU9InByb2plY3Q6dXNlckxpc3RBZG1pbiIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idXNlckxpc3RBZG1pbiIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImJhc2VEcmF3VUxpbmUiIHR5cGU9InByb2plY3Q6YmFzZURyYXdVTGluZSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYmFzZURyYXdVTGluZSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpiYXNlRHJhd0xpbmUiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50dWxpbmVzdHJva2UiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iMHhGRjY2MDAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50dWxpbmVsaW5lV2lkdGgiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY3VycmVudHVsaW5lT3BhY2l0eSIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMC41IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJsaXN0ZSIgdHlwZT0icHJvamVjdDpsaXN0ZSIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0ibGlzdGUiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJyZWNvcmRDb250ZW50IiB0eXBlPSJwcm9qZWN0OnJlY29yZENvbnRlbnQiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKworCQlWaWV3IGZvciByZWNvcmRlZCBjb250ZW50cyBsaXN0LgorCQlXaGVuIHlvdSBzZWxlY3QgJ1JlY29yZGluZ3MnIG9uIHRoZSB0b3AgbWVudSwgdGhpcyBjbGFzcyBzaG93cyB0aGUgbGlzdC4KKwk8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJyZWNvcmRDb250ZW50IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VDb250ZW50VmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlY29yZGVkRmlsZVRvRGVsZXRlIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icHJlQnV0dG9uIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InJvb21BZG1pblJvb21DbGllbnRMaXN0SXRlbSIgdHlwZT0icHJvamVjdDpyb29tQWRtaW5Sb29tQ2xpZW50TGlzdEl0ZW0iID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBsaXN0IG9mIGNvbmZlcmVuY2UvYXVkaWVuY2Ugcm9vbXMgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0icm9vbUFkbWluUm9vbUNsaWVudExpc3RJdGVtIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VDb250ZW50TGlzdEl0ZW0iPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWQ1X2lkIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIwIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgbGlzdCBvZiBjb25mZXJlbmNlL2F1ZGllbmNlIHJvb21zIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsb2dpbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc3B1YmxpYyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImVkaXRVc2VyQ29udGFjdHNDb250ZW50IiB0eXBlPSJwcm9qZWN0OmVkaXRVc2VyQ29udGFjdHNDb250ZW50IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJlZGl0VXNlckNvbnRhY3RzQ29udGVudCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImR5bmFtaWNGaWxlTmFtZSIgdHlwZT0icHJvamVjdDpkeW5hbWljRmlsZU5hbWUiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImR5bmFtaWNGaWxlTmFtZSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpjdXN0b21JbnB1dHRleHQiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWZPYmoiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCIgdHlwZT0ibHp4Om51bWJlciIgZGVmYXVsdD0iMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzT3duZXIiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzTmV3IiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmaWxlRXhwbG9yZXJJdGVtSWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImNhbGVuZGFyX2V2ZW50IiB0eXBlPSJwcm9qZWN0OmNhbGVuZGFyX2V2ZW50IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJjYWxlbmRhcl9ldmVudCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdGFydFRpbWUiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJHt0aGlzLnN0YXJ0SG91ciAqIDYwICsgTnVtYmVyKCB0aGlzLnN0YXJ0TWluICl9IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3RhcnRNaW4iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJHBhdGh7J3N0YXJ0WzFdL0BtaW51dGUnfSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN0YXJ0SG91ciIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIkcGF0aHsnc3RhcnRbMV0vQGhvdXInfSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlbGVjdGVkIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiRwYXRoeydAc2VsZWN0ZWQnfSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBpeGVsUGVyTWluIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIyMi82MCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5vcm1hbENvbG9yIiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9IiR7dGhpcy5nZXRFdmVudENvbG9yKCB0aGlzLmNhdGVnb3J5ICl9IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibW91c2VJc0Rvd24iIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJoaUNvbG9yIiB0eXBlPSJseng6Y29sb3IiIGRlZmF1bHQ9IjB4REREREREIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZW5kVGltZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIke3RoaXMuZW5kSG91ciAqIDYwICsgTnVtYmVyKCB0aGlzLmVuZE1pbiApfSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVuZE1pbiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIkcGF0aHsnZW5kWzFdL0BtaW51dGUnfSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImVuZEhvdXIiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJHBhdGh7J2VuZFsxXS9AaG91cid9IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZGVmYXVsdFRpbWVzIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IntzdGFydEhvdXI6IDAsIHN0YXJ0TWluOiAwLCBlbmRIb3VyOiAwLCBlbmRNaW46IDB9IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2F0ZWdvcnkiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iJHBhdGh7J2NhdGVnb3J5WzFdL0B2YWx1ZSd9IiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYmtnbmRDb2xvciIgdHlwZT0ibHp4OmNvbG9yIiBkZWZhdWx0PSIweDVEODRDQiIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iYWRkTGFuZ3VhZ2UiIHR5cGU9InByb2plY3Q6YWRkTGFuZ3VhZ2UiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBQb3B1cCB2aWV3IHRvIGlucHV0IGEgbmV3IGxhbmd1YWdlIG5hbWUgdG8gYmUgYWRkZWQuIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImFkZExhbmd1YWdlIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmxhYmVsRXhwbG9yZXJCb3giPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZW1wVmFsdWUiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWZPYmoiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFBvcHVwIHZpZXcgdG8gaW5wdXQgYSBuZXcgbGFuZ3VhZ2UgbmFtZSB0byBiZSBhZGRlZC4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0idXNlckFkbWluVmFsdWVGb3JtIiB0eXBlPSJwcm9qZWN0OnVzZXJBZG1pblZhbHVlRm9ybSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIFVzZXIgUHJvZmlsZSBlZGl0IHBhbmVsIGluIHRoZSB1c2VyYWRtaW4gbGVmdGJsb2NrLiBQcml2YXRlIGNsYXNzIG9ubHkgZm9yIHVzZXJhZG1pbiA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ1c2VyQWRtaW5WYWx1ZUZvcm0iIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZUNvbnRlbnRTYXZlVmlldyI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVzZXJfaWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyByZWNvcmRDb250ZW50LWlkIDwveHM6ZG9jdW1lbnRhdGlvbj4KKzwveHM6YW5ub3RhdGlvbj4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZW5kT2JqZWN0IiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImFjdGl2aXR5TGlzdFJlc3RyaWN0ZWRSb29tV2hpdGVib2FyZCIgdHlwZT0icHJvamVjdDphY3Rpdml0eUxpc3RSZXN0cmljdGVkUm9vbVdoaXRlYm9hcmQiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9ImFjdGl2aXR5TGlzdFJlc3RyaWN0ZWRSb29tV2hpdGVib2FyZCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpiYXNlSXRlbUFjdGl2aXR5TGlzdCI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0ic3ViaXRlbXNMaXN0Q29udGFpbnRlciIgdHlwZT0icHJvamVjdDpzdWJpdGVtc0xpc3RDb250YWludGVyIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJzdWJpdGVtc0xpc3RDb250YWludGVyIiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6dmlldyI+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0idXBsb2FkV2luZG93IiB0eXBlPSJwcm9qZWN0OnVwbG9hZFdpbmRvdyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idXBsb2FkV2luZG93IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmxhYmVsRXhwbG9yZXJCb3giPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ3aW5vYmoiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0ibnVsbCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InVzZXJzaWQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idXBsb2FkbW9kdWxlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9InZpZGVvY29uZjEiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzaW5nbGVzbGlkZXNtb2R1bGVfaWQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2Vzc2lvbmlkIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlcnZsZXROYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IlVwbG9hZEhhbmRsZXIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZXR1cm5PYmoiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGFyZW50Rm9sZGVySWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc2RlZmF1bHRyZXR1cm4iIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJ0cnVlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNPbmx5WG1sIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc09ubHlQcm9maWxlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpc09ubHlQcHQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzT25seUltYWdlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9InVwZGF0ZWNoZWNrYm94IiB0eXBlPSJwcm9qZWN0OnVwZGF0ZWNoZWNrYm94IiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJ1cGRhdGVjaGVja2JveCIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmNoZWNrYm94Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHZhbHVlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZW5kY2hhbmdlIiB0eXBlPSJseng6Ym9vbGVhbiIgZGVmYXVsdD0iZmFsc2UiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czplbGVtZW50IG5hbWU9ImNoYW5nZVdpZHRoTGV0dGVyU2xpZGVyV2luIiB0eXBlPSJwcm9qZWN0OmNoYW5nZVdpZHRoTGV0dGVyU2xpZGVyV2luIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJjaGFuZ2VXaWR0aExldHRlclNsaWRlcldpbiIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpjbG9zYWJsZVZpZXdMZXR0ZXIiPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbml0aWFsTnVtYmVyIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxMiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImJ0blJlZiIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSJudWxsIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJoZWxwQW5kQnVncyIgdHlwZT0icHJvamVjdDpoZWxwQW5kQnVncyIgPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iaGVscEFuZEJ1Z3MiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp2aWV3Ij4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJyb29tQWRtaW5MaXN0SXRlbSIgdHlwZT0icHJvamVjdDpyb29tQWRtaW5MaXN0SXRlbSIgPgorPHhzOmFubm90YXRpb24+Cis8eHM6ZG9jdW1lbnRhdGlvbiB4bWw6bGFuZz0iZW4iPgorIGxpc3Qgb2YgY29uZmVyZW5jZS9hdWRpZW5jZSByb29tcyA8L3hzOmRvY3VtZW50YXRpb24+Cis8L3hzOmFubm90YXRpb24+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJyb29tQWRtaW5MaXN0SXRlbSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0icHJvamVjdDpiYXNlQ29udGVudExpc3RJdGVtIj4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm9vbXNfaWQiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjAiID4KKzx4czphbm5vdGF0aW9uPgorPHhzOmRvY3VtZW50YXRpb24geG1sOmxhbmc9ImVuIj4KKyBsaXN0IG9mIGNvbmZlcmVuY2UvYXVkaWVuY2Ugcm9vbXMgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJvb21uYW1lIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlzcHVibGljIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IiIgPgorPC94czphdHRyaWJ1dGU+CisgIDwveHM6ZXh0ZW5zaW9uPgorICA8L3hzOmNvbXBsZXhDb250ZW50PgorICA8L3hzOmNvbXBsZXhUeXBlPgorPHhzOmVsZW1lbnQgbmFtZT0iY2hhdFRhYkJvdHRvbSIgdHlwZT0icHJvamVjdDpjaGF0VGFiQm90dG9tIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisgVmlldyBvZiB0aGUgYnV0dG9tIGFyZWEgb2YgY2hhdC4gSXQgY29udGFpbnMgYnV0dG9ucyBvZiBtZXNzYWdlLGVtb3RpY29ucyxjbGVhci4gPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iY2hhdFRhYkJvdHRvbSIgbWl4ZWQ9InRydWUiPgorICA8eHM6Y29tcGxleENvbnRlbnQ+CisgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OnZpZXciPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvYmpNZXNzYWdlIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9Im51bGwiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkb1VwZGF0ZSIgdHlwZT0ibHp4OmJvb2xlYW4iIGRlZmF1bHQ9ImZhbHNlIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJ2aWRlb09iamVjdFBsYXlCcm9hZGNhc3QiIHR5cGU9InByb2plY3Q6dmlkZW9PYmplY3RQbGF5QnJvYWRjYXN0IiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisKKwlDb250YWlucyBubyBtaWNyb3Bob25lIG9yIGNhbWVyYSBPYmplY3QsIHRoaXMgdmlldyBjYW4gb25seSAKKwlzdWJzY3JpYmUgdG8gYSB2aWRlbyBvciBsaXZlLXN0cmVhbQorCisgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czplbGVtZW50PgorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0idmlkZW9PYmplY3RQbGF5QnJvYWRjYXN0IiBtaXhlZD0idHJ1ZSI+CisgIDx4czpjb21wbGV4Q29udGVudD4KKyAgPHhzOmV4dGVuc2lvbiBiYXNlPSJwcm9qZWN0OmJhc2VWaWRlb09iamVjdCI+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJhdGlvVyIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIxIiA+Cis8eHM6YW5ub3RhdGlvbj4KKzx4czpkb2N1bWVudGF0aW9uIHhtbDpsYW5nPSJlbiI+CisKKwlDb250YWlucyBubyBtaWNyb3Bob25lIG9yIGNhbWVyYSBPYmplY3QsIHRoaXMgdmlldyBjYW4gb25seSAKKwlzdWJzY3JpYmUgdG8gYSB2aWRlbyBvciBsaXZlLXN0cmVhbQorCisgPC94czpkb2N1bWVudGF0aW9uPgorPC94czphbm5vdGF0aW9uPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJhdGlvSCIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIxIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJsaXN0V21sIiB0eXBlPSJwcm9qZWN0Omxpc3RXbWwiID4KKzwveHM6ZWxlbWVudD4KKyAgPHhzOmNvbXBsZXhUeXBlIG5hbWU9Imxpc3RXbWwiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDp0ZXh0Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idXBsb2FkbW9kdWwiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaXNQcHQiIHR5cGU9Imx6eDpib29sZWFuIiBkZWZhdWx0PSJmYWxzZSIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZpbGVuYW1lUHVyZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmaWxlbmFtZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJleHQiIHR5cGU9InhzOnN0cmluZyIgZGVmYXVsdD0iIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJtYWluVG9vbHNUb3BQYW5lbFBvaW50ZXIiIHR5cGU9InByb2plY3Q6bWFpblRvb2xzVG9wUGFuZWxQb2ludGVyIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJtYWluVG9vbHNUb3BQYW5lbFBvaW50ZXIiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZVRvcFBhbmVsIj4KKyAgPC94czpleHRlbnNpb24+CisgIDwveHM6Y29tcGxleENvbnRlbnQ+CisgIDwveHM6Y29tcGxleFR5cGU+Cis8eHM6ZWxlbWVudCBuYW1lPSJiYXNlRHJhd0VsbGlwc2UiIHR5cGU9InByb2plY3Q6YmFzZURyYXdFbGxpcHNlIiA+Cis8L3hzOmVsZW1lbnQ+CisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJiYXNlRHJhd0VsbGlwc2UiIG1peGVkPSJ0cnVlIj4KKyAgPHhzOmNvbXBsZXhDb250ZW50PgorICA8eHM6ZXh0ZW5zaW9uIGJhc2U9InByb2plY3Q6YmFzZURyYXdSZWN0Ij4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY3VycmVudGVsbGlwc2VzdHJva2VGaWxsRGlzIiB0eXBlPSJseng6bnVtYmVyIiBkZWZhdWx0PSIxIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY3VycmVudGVsbGlwc2VzdHJva2VGaWxsIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjB4RkZGRjMzIiA+Cis8L3hzOmF0dHJpYnV0ZT4KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY3VycmVudGVsbGlwc2VzdHJva2VEaXMiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjEiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50ZWxsaXBzZXN0cm9rZSIgdHlwZT0ieHM6c3RyaW5nIiBkZWZhdWx0PSIweEZGNjYwMCIgPgorPC94czphdHRyaWJ1dGU+CisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRlbGxpcHNlbGluZVdpZHRoIiB0eXBlPSJ4czpzdHJpbmciIGRlZmF1bHQ9IjQiID4KKzwveHM6YXR0cmlidXRlPgorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50ZWxsaXBzZU9wYWNpdHkiIHR5cGU9Imx6eDpudW1iZXIiIGRlZmF1bHQ9IjEiID4KKzwveHM6YXR0cmlidXRlPgorICA8L3hzOmV4dGVuc2lvbj4KKyAgPC94czpjb21wbGV4Q29udGVudD4KKyAgPC94czpjb21wbGV4VHlwZT4KKzx4czpncm91cCBuYW1lPSJ0b3BMZXZlbEVsZW1lbnRzIj4KKzx4czpzZXF1ZW5jZT4KKzx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+Cis8eHM6YW55IC8+Cis8L3hzOmNob2ljZT4KKzwveHM6c2VxdWVuY2U+Cis8L3hzOmdyb3VwPgorPC94czpzY2hlbWE+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3JlZDUvYWRtaW4uYmF0IGIvV2ViQ29udGVudC9yZWQ1L2FkbWluLmJhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YWU4ZWMyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9yZWQ1L2FkbWluLmJhdApAQCAtMCwwICsxLDIxIEBACitSRU0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorUkVNIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KK1JFTSB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorUkVNIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KK1JFTQ0KK1JFTSAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorUkVNDQorUkVNIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCitSRU0gZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCitSRU0gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorUkVNIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCitSRU0gbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorUkVNICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KK0BlY2hvIG9mZg0KK3NldCBSRUQ1X0hPTUU9JX5kcDANCitzZXQgT01fQ09OVEVYVD1vcGVubWVldGluZ3MNCisNCitzZXQgQ0xBU1NQQVRIPSVSRUQ1X0hPTUUlXCo7JVJFRDVfSE9NRSVcY29uZjslUkVENV9IT01FJVxwbHVnaW5zXCo7JVJFRDVfSE9NRSVcbGliXCo7JVJFRDVfSE9NRSVcd2ViYXBwc1wlT01fQ09OVEVYVCVcV0VCLUlORlxsaWJcKjslUkVENV9IT01FJVx3ZWJhcHBzXCVPTV9DT05URVhUJVxXRUItSU5GOyVSRUQ1X0hPTUUlXHdlYmFwcHNcJU9NX0NPTlRFWFQlXFdFQi1JTkZcY2xhc3Nlcw0KKw0KK2phdmEgLWNwICIlQ0xBU1NQQVRIJSIgLURjb250ZXh0PSVPTV9DT05URVhUJSAtRGxvZ2JhY2suQ29udGV4dFNlbGVjdG9yPW9yZy5yZWQ1LmxvZ2dpbmcuTG9nZ2luZ0NvbnRleHRTZWxlY3RvciBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5jbGkuQWRtaW4gJSoNCisNCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3JlZDUvYWRtaW4uc2ggYi9XZWJDb250ZW50L3JlZDUvYWRtaW4uc2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTMxYTVhZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvcmVkNS9hZG1pbi5zaApAQCAtMCwwICsxLDIxIEBACisjIS9iaW4vYmFzaAorIyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisjCisjICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyMKKyMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorIyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCitleHBvcnQgUkVENV9IT01FPSQoY2QgJChkaXJuYW1lICIkMCIpOyBwd2QpIAorZXhwb3J0IE9NX0NPTlRFWFQ9b3Blbm1lZXRpbmdzCisKK2V4cG9ydCBDTEFTU1BBVEg9JFJFRDVfSE9NRS8qOiRSRUQ1X0hPTUUvY29uZjokUkVENV9IT01FL3BsdWdpbnMvKjokUkVENV9IT01FL2xpYi8qOiRSRUQ1X0hPTUUvd2ViYXBwcy8ke09NX0NPTlRFWFR9L1dFQi1JTkYvbGliLyo6JFJFRDVfSE9NRS93ZWJhcHBzLyR7T01fQ09OVEVYVH0vV0VCLUlORjokUkVENV9IT01FL3dlYmFwcHMvJHtPTV9DT05URVhUfS9XRUItSU5GL2NsYXNzZXMKKworamF2YSAtY3AgIiRDTEFTU1BBVEgiIC1EY29udGV4dD0ke09NX0NPTlRFWFR9IC1EbG9nYmFjay5Db250ZXh0U2VsZWN0b3I9b3JnLnJlZDUubG9nZ2luZy5Mb2dnaW5nQ29udGV4dFNlbGVjdG9yIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmNsaS5BZG1pbiAkKgorCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3JlZDUvaW5kZXguaHRtbCBiL1dlYkNvbnRlbnQvcmVkNS9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxMmE2MTgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3JlZDUvaW5kZXguaHRtbApAQCAtMCwwICsxLDIzIEBACis8IS0tCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorIC0tPgorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMCBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8dGl0bGU+WW91ciBQYWdlIFRpdGxlPC90aXRsZT4KKzxtZXRhIGh0dHAtZXF1aXY9IlJFRlJFU0giIGNvbnRlbnQ9IjA7dXJsPW9wZW5tZWV0aW5ncy8iPjwvSEVBRD4KKzxCT0RZPgorUmVkaXJlY3QgdG8gb3Blbm1lZXRpbmdzLworPC9CT0RZPgorPC9IVE1MPgorCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3JlZDUvamVlLWNvbnRhaW5lci1zc2wueG1sIGIvV2ViQ29udGVudC9yZWQ1L2plZS1jb250YWluZXItc3NsLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YmY2MDIzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9yZWQ1L2plZS1jb250YWluZXItc3NsLnhtbApAQCAtMCwwICsxLDIyNiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+DQorPCEtLQ0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAgDQorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICAgIAkgIA0KKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICB1bmRlciB0aGUgTGljZW5zZS4NCisgIA0KKy0tPg0KKzxiZWFucyB4bWxucz0iaHR0cDovL3d3dy5zcHJpbmdmcmFtZXdvcmsub3JnL3NjaGVtYS9iZWFucyINCisgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSINCisgICAgICAgeG1sbnM6bGFuZz0iaHR0cDovL3d3dy5zcHJpbmdmcmFtZXdvcmsub3JnL3NjaGVtYS9sYW5nIg0KKyAgICAgICB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly93d3cuc3ByaW5nZnJhbWV3b3JrLm9yZy9zY2hlbWEvYmVhbnMgaHR0cDovL3d3dy5zcHJpbmdmcmFtZXdvcmsub3JnL3NjaGVtYS9iZWFucy9zcHJpbmctYmVhbnMtMy4wLnhzZA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0dHA6Ly93d3cuc3ByaW5nZnJhbWV3b3JrLm9yZy9zY2hlbWEvbGFuZyBodHRwOi8vd3d3LnNwcmluZ2ZyYW1ld29yay5vcmcvc2NoZW1hL2xhbmcvc3ByaW5nLWxhbmctMy4wLnhzZCI+DQorCQkJCSAgIAkJCSAgIAkJCQkJCSAgIA0KKwk8YmVhbiBpZD0idG9tY2F0LnNlcnZlciIgY2xhc3M9Im9yZy5yZWQ1LnNlcnZlci50b21jYXQuVG9tY2F0TG9hZGVyIiBpbml0LW1ldGhvZD0iaW5pdCIgZGVzdHJveS1tZXRob2Q9InNodXRkb3duIiBkZXBlbmRzLW9uPSJjb250ZXh0LmxvYWRlciI+DQorDQorCQk8cHJvcGVydHkgbmFtZT0id2ViYXBwRm9sZGVyIiB2YWx1ZT0iJHtyZWQ1LnJvb3R9L3dlYmFwcHMiIC8+DQorCQkJICAgICAgDQorCSAgICA8cHJvcGVydHkgbmFtZT0iY29ubmVjdG9yIj4NCisJCQk8YmVhbiBjbGFzcz0ib3JnLmFwYWNoZS5jYXRhbGluYS5jb25uZWN0b3IuQ29ubmVjdG9yIj4NCisJCQkJPCEtLSBCbG9ja2luZyBJL08gLS0+DQorCQkJCTxjb25zdHJ1Y3Rvci1hcmcgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIgdmFsdWU9Im9yZy5hcGFjaGUuY295b3RlLmh0dHAxMS5IdHRwMTFQcm90b2NvbCIgLz4NCisJCQkJPCEtLSBOb24tYmxvY2tpbmcgSS9PIC0tPg0KKwkJCQk8IS0tDQorCQkJCTxjb25zdHJ1Y3Rvci1hcmcgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIgdmFsdWU9Im9yZy5hcGFjaGUuY295b3RlLmh0dHAxMS5IdHRwMTFOaW9Qcm90b2NvbCIgLz4JDQorCQkJCS0tPg0KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icG9ydCI+PHZhbHVlPiR7aHR0cHMucG9ydH08L3ZhbHVlPjwvcHJvcGVydHk+DQorCQkgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJyZWRpcmVjdFBvcnQiPjx2YWx1ZT4ke2h0dHAucG9ydH08L3ZhbHVlPjwvcHJvcGVydHk+DQorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJlbmFibGVMb29rdXBzIj48dmFsdWU+ZmFsc2U8L3ZhbHVlPjwvcHJvcGVydHk+DQorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ1c2VJUFZIb3N0cyI+PHZhbHVlPnRydWU8L3ZhbHVlPjwvcHJvcGVydHk+DQorCQkJPC9iZWFuPg0KKwkgICAgPC9wcm9wZXJ0eT4NCisJICAgIAkNCisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJhZGRyZXNzIj4NCisgICAgICAgICAgICA8YmVhbiBjbGFzcz0iamF2YS5uZXQuSW5ldFNvY2tldEFkZHJlc3MiPg0KKyAgICAgICAgICAgICAgICA8Y29uc3RydWN0b3ItYXJnIGluZGV4PSIwIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIiB2YWx1ZT0iJHtodHRwLmhvc3R9IiAvPiAgDQorICAgICAgICAgICAgICAgIDxjb25zdHJ1Y3Rvci1hcmcgaW5kZXg9IjEiIHR5cGU9ImludCIgdmFsdWU9IiR7aHR0cC5wb3J0fSIgLz4gIA0KKyAgICAgICAgICAgIDwvYmVhbj4JDQorICAgICAgICA8L3Byb3BlcnR5Pg0KKyAgICAgICAgDQorICAgICAgICAJCTxwcm9wZXJ0eSBuYW1lPSJjb25uZWN0aW9uUHJvcGVydGllcyI+DQorCQkJPG1hcD4NCisJCQkJPGVudHJ5Pg0KKwkJCQkJPGtleT48dmFsdWU+cG9ydDwvdmFsdWU+PC9rZXk+DQorCQkJCQk8dmFsdWU+JHtodHRwcy5wb3J0fTwvdmFsdWU+DQorCQkJCTwvZW50cnk+DQorCQkJCTxlbnRyeT4NCisJCQkJCTxrZXk+PHZhbHVlPnJlZGlyZWN0UG9ydDwvdmFsdWU+PC9rZXk+DQorCQkJCQk8dmFsdWU+JHtodHRwLnBvcnR9PC92YWx1ZT4NCisJCQkJPC9lbnRyeT4NCisJCQkJPGVudHJ5Pg0KKwkJCQkJPGtleT48dmFsdWU+U1NMRW5hYmxlZDwvdmFsdWU+PC9rZXk+DQorCQkJCQk8dmFsdWU+dHJ1ZTwvdmFsdWU+DQorCQkJCTwvZW50cnk+DQorCQkJCTxlbnRyeT4NCisJCQkJCTxrZXk+PHZhbHVlPnNzbFByb3RvY29sPC92YWx1ZT48L2tleT4NCisJCQkJCTx2YWx1ZT5UTFM8L3ZhbHVlPg0KKwkJCQk8L2VudHJ5Pg0KKwkJCQk8ZW50cnk+DQorCQkJCQk8a2V5Pjx2YWx1ZT5jbGllbnRBdXRoPC92YWx1ZT48L2tleT4NCisJCQkJCTx2YWx1ZT5mYWxzZTwvdmFsdWU+DQorCQkJCTwvZW50cnk+DQorCQkJCTxlbnRyeT4NCisJCQkJCTxrZXk+PHZhbHVlPmtleXN0b3JlRmlsZTwvdmFsdWU+PC9rZXk+DQorCQkJCQk8dmFsdWU+Y29uZi9rZXlzdG9yZTwvdmFsdWU+DQorCQkJCTwvZW50cnk+DQorCQkJCTxlbnRyeT4NCisJCQkJCTxrZXk+PHZhbHVlPmtleXN0b3JlUGFzczwvdmFsdWU+PC9rZXk+DQorCQkJCQk8dmFsdWU+JHtydG1wcy5rZXlzdG9yZXBhc3N9PC92YWx1ZT4NCisJCQkJPC9lbnRyeT4NCisJCQkJPGVudHJ5Pg0KKwkJCQkJPGtleT48dmFsdWU+a2V5c3RvcmVUeXBlPC92YWx1ZT48L2tleT4NCisJCQkJCTx2YWx1ZT5KS1M8L3ZhbHVlPg0KKwkJCQk8L2VudHJ5Pg0KKwkJCQk8ZW50cnkga2V5PSJtYXhLZWVwQWxpdmVSZXF1ZXN0cyIgdmFsdWU9IiR7cnRtcHMubWF4X2tlZXBfYWxpdmVfcmVxdWVzdHN9Ii8+DQorCQkJCTxlbnRyeSBrZXk9InVzZUV4ZWN1dG9yIiB2YWx1ZT0idHJ1ZSIvPg0KKwkJCQk8ZW50cnkga2V5PSJtYXhUaHJlYWRzIiB2YWx1ZT0iJHtydG1wcy5tYXhfdGhyZWFkc30iLz4NCisJCQkJPGVudHJ5IGtleT0iYWNjZXB0b3JUaHJlYWRDb3VudCIgdmFsdWU9IiR7cnRtcHMuYWNjZXB0b3JfdGhyZWFkX2NvdW50fSIvPg0KKwkJCQk8ZW50cnkga2V5PSJwcm9jZXNzb3JDYWNoZSIgdmFsdWU9IiR7cnRtcHMucHJvY2Vzc29yX2NhY2hlfSIvPg0KKwkJCTwvbWFwPg0KKwkJPC9wcm9wZXJ0eT4JDQorDQorCSAgICAJDQorICAgICAgICA8cHJvcGVydHkgbmFtZT0iYmFzZUhvc3QiPg0KKwkgICAgICAgPGJlYW4gY2xhc3M9Im9yZy5hcGFjaGUuY2F0YWxpbmEuY29yZS5TdGFuZGFyZEhvc3QiPg0KKwkgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJuYW1lIiB2YWx1ZT0iJHtodHRwLmhvc3R9IiAvPg0KKwkgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ1bnBhY2tXQVJzIiB2YWx1ZT0idHJ1ZSIgLz4NCisJICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iYXV0b0RlcGxveSIgdmFsdWU9InRydWUiIC8+DQorCSAgICAgICA8L2JlYW4+CSAgIA0KKwkgICAgPC9wcm9wZXJ0eT4JCQ0KKw0KKwkJPHByb3BlcnR5IG5hbWU9InZhbHZlcyI+DQorICAgICAgCQk8bGlzdD4NCisgICAgICAgIAk8L2xpc3Q+DQorICAgICAgICA8L3Byb3BlcnR5Pg0KKwkgICAgDQorCTwvYmVhbj4NCisJDQorCTwhLS0gUlRNUFQgKGRlZGljYXRlZCBzZXJ2ZXIpIC0tPg0KKzwhLS0NCisJPGJlYW4gaWQ9InJ0bXB0LnNlcnZlciIgY2xhc3M9Im9yZy5yZWQ1LnNlcnZlci50b21jYXQucnRtcHQuUlRNUFRMb2FkZXIiIGluaXQtbWV0aG9kPSJpbml0IiBsYXp5LWluaXQ9InRydWUiPg0KKwkNCisJCTxwcm9wZXJ0eSBuYW1lPSJ3ZWJhcHBGb2xkZXIiIHZhbHVlPSIke3JlZDUucm9vdH0vd2ViYXBwcyIgLz4NCisJCQ0KKwkJPHByb3BlcnR5IG5hbWU9ImNvbm5lY3RvciI+DQorCQkJPGJlYW4gY2xhc3M9Im9yZy5hcGFjaGUuY2F0YWxpbmEuY29ubmVjdG9yLkNvbm5lY3RvciI+DQorCQkJCTxjb25zdHJ1Y3Rvci1hcmcgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIgdmFsdWU9Im9yZy5hcGFjaGUuY295b3RlLmh0dHAxMS5IdHRwMTFOaW9Qcm90b2NvbCIgLz4JDQorCQkJCTxwcm9wZXJ0eSBuYW1lPSJwb3J0Ij48dmFsdWU+JHtydG1wdC5wb3J0fTwvdmFsdWU+PC9wcm9wZXJ0eT4NCisJCQkJPHByb3BlcnR5IG5hbWU9ImVuYWJsZUxvb2t1cHMiPjx2YWx1ZT5mYWxzZTwvdmFsdWU+PC9wcm9wZXJ0eT4NCisJCQk8L2JlYW4+DQorCQk8L3Byb3BlcnR5Pg0KKw0KKwkJPHByb3BlcnR5IG5hbWU9ImNvbm5lY3Rpb25Qcm9wZXJ0aWVzIj4NCisJCQk8bWFwPg0KKwkJCQk8ZW50cnkga2V5PSJtYXhLZWVwQWxpdmVSZXF1ZXN0cyIgdmFsdWU9IiR7cnRtcHQubWF4X2tlZXBfYWxpdmVfcmVxdWVzdHN9Ii8+DQorCQkJCTxlbnRyeSBrZXk9InVzZUV4ZWN1dG9yIiB2YWx1ZT0idHJ1ZSIvPg0KKwkJCQk8ZW50cnkga2V5PSJtYXhUaHJlYWRzIiB2YWx1ZT0iJHtydG1wdC5tYXhfdGhyZWFkc30iLz4NCisJCQkJPGVudHJ5IGtleT0iYWNjZXB0b3JUaHJlYWRDb3VudCIgdmFsdWU9IiR7cnRtcHQuYWNjZXB0b3JfdGhyZWFkX2NvdW50fSIvPg0KKwkJCQk8ZW50cnkga2V5PSJwcm9jZXNzb3JDYWNoZSIgdmFsdWU9IiR7cnRtcHQucHJvY2Vzc29yX2NhY2hlfSIvPg0KKwkJCTwvbWFwPg0KKwkJPC9wcm9wZXJ0eT4NCisJCQ0KKwkJPHByb3BlcnR5IG5hbWU9Imhvc3QiPg0KKwkJCTxiZWFuIGNsYXNzPSJvcmcuYXBhY2hlLmNhdGFsaW5hLmNvcmUuU3RhbmRhcmRIb3N0Ij4NCisJCQkJPHByb3BlcnR5IG5hbWU9Im5hbWUiIHZhbHVlPSIke3J0bXB0Lmhvc3R9IiAvPg0KKwkJCQk8cHJvcGVydHkgbmFtZT0idW5wYWNrV0FScyIgdmFsdWU9ImZhbHNlIiAvPg0KKwkJCQk8cHJvcGVydHkgbmFtZT0iYXV0b0RlcGxveSIgdmFsdWU9ImZhbHNlIiAvPg0KKwkJCTwvYmVhbj4JICAgDQorCQk8L3Byb3BlcnR5PgkJDQorDQorCTwvYmVhbj4NCistLT4NCisJDQorCTwhLS0gUlRNUFMgKGRlZGljYXRlZCBzZXJ2ZXIpIC0tPgkNCis8IS0tDQorCTxiZWFuIGlkPSJydG1wcy5zZXJ2ZXIiIGNsYXNzPSJvcmcucmVkNS5zZXJ2ZXIudG9tY2F0LnJ0bXBzLlJUTVBTTG9hZGVyIiBpbml0LW1ldGhvZD0iaW5pdCIgbGF6eS1pbml0PSJ0cnVlIj4NCisJDQorCQk8cHJvcGVydHkgbmFtZT0id2ViYXBwRm9sZGVyIiB2YWx1ZT0iJHtyZWQ1LnJvb3R9L3dlYmFwcHMiIC8+DQorCQkNCisJCTxwcm9wZXJ0eSBuYW1lPSJjb25uZWN0b3IiPg0KKwkJCTxiZWFuIGNsYXNzPSJvcmcuYXBhY2hlLmNhdGFsaW5hLmNvbm5lY3Rvci5Db25uZWN0b3IiPg0KKwkJCQk8Y29uc3RydWN0b3ItYXJnIHR5cGU9ImphdmEubGFuZy5TdHJpbmciIHZhbHVlPSJvcmcuYXBhY2hlLmNveW90ZS5odHRwMTEuSHR0cDExTmlvUHJvdG9jb2wiIC8+CQ0KKwkJCQk8cHJvcGVydHkgbmFtZT0icG9ydCIgdmFsdWU9IiR7cnRtcHMucG9ydH0iIC8+DQorCQkJCTxwcm9wZXJ0eSBuYW1lPSJyZWRpcmVjdFBvcnQiIHZhbHVlPSIke3J0bXAucG9ydH0iIC8+DQorCQkJPC9iZWFuPgkJCQ0KKwkJPC9wcm9wZXJ0eT4JDQorCQkNCisJCTxwcm9wZXJ0eSBuYW1lPSJob3N0Ij4NCisJCQk8YmVhbiBjbGFzcz0ib3JnLmFwYWNoZS5jYXRhbGluYS5jb3JlLlN0YW5kYXJkSG9zdCI+DQorCQkJCTxwcm9wZXJ0eSBuYW1lPSJuYW1lIiB2YWx1ZT0iJHtydG1wcy5ob3N0fSIgLz4NCisJCQkJPHByb3BlcnR5IG5hbWU9InVucGFja1dBUnMiIHZhbHVlPSJmYWxzZSIgLz4NCisJCQkJPHByb3BlcnR5IG5hbWU9ImF1dG9EZXBsb3kiIHZhbHVlPSJmYWxzZSIgLz4NCisJCQk8L2JlYW4+CSAgIA0KKwkJPC9wcm9wZXJ0eT4JCQ0KKwkNCisJCTxwcm9wZXJ0eSBuYW1lPSJjb25uZWN0aW9uUHJvcGVydGllcyI+DQorCQkJPG1hcD4NCisJCQkJPGVudHJ5Pg0KKwkJCQkJPGtleT48dmFsdWU+cG9ydDwvdmFsdWU+PC9rZXk+DQorCQkJCQk8dmFsdWU+JHtydG1wcy5wb3J0fTwvdmFsdWU+DQorCQkJCTwvZW50cnk+DQorCQkJCTxlbnRyeT4NCisJCQkJCTxrZXk+PHZhbHVlPnJlZGlyZWN0UG9ydDwvdmFsdWU+PC9rZXk+DQorCQkJCQk8dmFsdWU+JHtydG1wLnBvcnR9PC92YWx1ZT4NCisJCQkJPC9lbnRyeT4NCisJCQkJPGVudHJ5Pg0KKwkJCQkJPGtleT48dmFsdWU+U1NMRW5hYmxlZDwvdmFsdWU+PC9rZXk+DQorCQkJCQk8dmFsdWU+dHJ1ZTwvdmFsdWU+DQorCQkJCTwvZW50cnk+DQorCQkJCTxlbnRyeT4NCisJCQkJCTxrZXk+PHZhbHVlPnNzbFByb3RvY29sPC92YWx1ZT48L2tleT4NCisJCQkJCTx2YWx1ZT5UTFM8L3ZhbHVlPg0KKwkJCQk8L2VudHJ5Pg0KKwkJCQk8ZW50cnk+DQorCQkJCQk8a2V5Pjx2YWx1ZT5jbGllbnRBdXRoPC92YWx1ZT48L2tleT4NCisJCQkJCTx2YWx1ZT5mYWxzZTwvdmFsdWU+DQorCQkJCTwvZW50cnk+DQorCQkJCTxlbnRyeT4NCisJCQkJCTxrZXk+PHZhbHVlPmtleXN0b3JlRmlsZTwvdmFsdWU+PC9rZXk+DQorCQkJCQk8dmFsdWU+Y29uZi9rZXlzdG9yZTwvdmFsdWU+DQorCQkJCTwvZW50cnk+DQorCQkJCTxlbnRyeT4NCisJCQkJCTxrZXk+PHZhbHVlPmtleXN0b3JlUGFzczwvdmFsdWU+PC9rZXk+DQorCQkJCQk8dmFsdWU+JHtydG1wcy5rZXlzdG9yZXBhc3N9PC92YWx1ZT4NCisJCQkJPC9lbnRyeT4NCisJCQkJPGVudHJ5Pg0KKwkJCQkJPGtleT48dmFsdWU+a2V5c3RvcmVUeXBlPC92YWx1ZT48L2tleT4NCisJCQkJCTx2YWx1ZT5KS1M8L3ZhbHVlPg0KKwkJCQk8L2VudHJ5Pg0KKwkJCQk8ZW50cnkga2V5PSJtYXhLZWVwQWxpdmVSZXF1ZXN0cyIgdmFsdWU9IiR7cnRtcHMubWF4X2tlZXBfYWxpdmVfcmVxdWVzdHN9Ii8+DQorCQkJCTxlbnRyeSBrZXk9InVzZUV4ZWN1dG9yIiB2YWx1ZT0idHJ1ZSIvPg0KKwkJCQk8ZW50cnkga2V5PSJtYXhUaHJlYWRzIiB2YWx1ZT0iJHtydG1wcy5tYXhfdGhyZWFkc30iLz4NCisJCQkJPGVudHJ5IGtleT0iYWNjZXB0b3JUaHJlYWRDb3VudCIgdmFsdWU9IiR7cnRtcHMuYWNjZXB0b3JfdGhyZWFkX2NvdW50fSIvPg0KKwkJCQk8ZW50cnkga2V5PSJwcm9jZXNzb3JDYWNoZSIgdmFsdWU9IiR7cnRtcHMucHJvY2Vzc29yX2NhY2hlfSIvPg0KKwkJCTwvbWFwPg0KKwkJPC9wcm9wZXJ0eT4JDQorDQorCQk8cHJvcGVydHkgbmFtZT0idmFsdmVzIj4NCisgICAgICAJCTxsaXN0Pg0KKwkgICAgCQk8YmVhbiBpZD0idmFsdmUuYWNjZXNzIiBjbGFzcz0ib3JnLmFwYWNoZS5jYXRhbGluYS52YWx2ZXMuQWNjZXNzTG9nVmFsdmUiPg0KKwkgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImRpcmVjdG9yeSIgdmFsdWU9ImxvZyIgLz4NCisJICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwcmVmaXgiIHZhbHVlPSIke3J0bXBzLmhvc3R9X3J0bXBzX2FjY2Vzcy4iIC8+DQorCSAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ic3VmZml4IiB2YWx1ZT0iLmxvZyIgLz4NCisJICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwYXR0ZXJuIiB2YWx1ZT0iY29tbW9uIiAvPg0KKwkgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InJlc29sdmVIb3N0cyIgdmFsdWU9ImZhbHNlIiAvPg0KKwkgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InJvdGF0YWJsZSIgdmFsdWU9InRydWUiIC8+DQorCSAgICAgICAgCTwvYmVhbj4NCisgICAgICAgIAk8L2xpc3Q+DQorICAgICAgICA8L3Byb3BlcnR5PgkJCQ0KKwkNCisJPC9iZWFuPgkJDQorLS0+DQorCQ0KKzwvYmVhbnM+DQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9yZWQ1L2plZS1jb250YWluZXIueG1sIGIvV2ViQ29udGVudC9yZWQ1L2plZS1jb250YWluZXIueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkMWYwYWEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3JlZDUvamVlLWNvbnRhaW5lci54bWwKQEAgLTAsMCArMSwxODggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/Pg0KKzwhLS0NCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgIA0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAgICAJICANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAgdW5kZXIgdGhlIExpY2Vuc2UuDQorICANCistLT4NCis8YmVhbnMgeG1sbnM9Imh0dHA6Ly93d3cuc3ByaW5nZnJhbWV3b3JrLm9yZy9zY2hlbWEvYmVhbnMiDQorICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiDQorICAgICAgIHhtbG5zOmxhbmc9Imh0dHA6Ly93d3cuc3ByaW5nZnJhbWV3b3JrLm9yZy9zY2hlbWEvbGFuZyINCisgICAgICAgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vd3d3LnNwcmluZ2ZyYW1ld29yay5vcmcvc2NoZW1hL2JlYW5zIGh0dHA6Ly93d3cuc3ByaW5nZnJhbWV3b3JrLm9yZy9zY2hlbWEvYmVhbnMvc3ByaW5nLWJlYW5zLTMuMC54c2QNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBodHRwOi8vd3d3LnNwcmluZ2ZyYW1ld29yay5vcmcvc2NoZW1hL2xhbmcgaHR0cDovL3d3dy5zcHJpbmdmcmFtZXdvcmsub3JnL3NjaGVtYS9sYW5nL3NwcmluZy1sYW5nLTMuMC54c2QiPg0KKwkJCQkgICAJCQkgICAJCQkJCQkgICANCisJPGJlYW4gaWQ9InRvbWNhdC5zZXJ2ZXIiIGNsYXNzPSJvcmcucmVkNS5zZXJ2ZXIudG9tY2F0LlRvbWNhdExvYWRlciIgaW5pdC1tZXRob2Q9ImluaXQiIGRlc3Ryb3ktbWV0aG9kPSJzaHV0ZG93biIgZGVwZW5kcy1vbj0iY29udGV4dC5sb2FkZXIiPg0KKw0KKwkJPHByb3BlcnR5IG5hbWU9IndlYmFwcEZvbGRlciIgdmFsdWU9IiR7cmVkNS5yb290fS93ZWJhcHBzIiAvPg0KKwkJCSAgICAgIA0KKwkgICAgPHByb3BlcnR5IG5hbWU9ImNvbm5lY3RvciI+DQorCQkJPGJlYW4gY2xhc3M9Im9yZy5hcGFjaGUuY2F0YWxpbmEuY29ubmVjdG9yLkNvbm5lY3RvciI+DQorCQkJCTwhLS0gQmxvY2tpbmcgSS9PIC0tPg0KKwkJCQk8Y29uc3RydWN0b3ItYXJnIHR5cGU9ImphdmEubGFuZy5TdHJpbmciIHZhbHVlPSJvcmcuYXBhY2hlLmNveW90ZS5odHRwMTEuSHR0cDExUHJvdG9jb2wiIC8+DQorCQkJCTwhLS0gTm9uLWJsb2NraW5nIEkvTyAtLT4NCisJCQkJPCEtLQ0KKwkJCQk8Y29uc3RydWN0b3ItYXJnIHR5cGU9ImphdmEubGFuZy5TdHJpbmciIHZhbHVlPSJvcmcuYXBhY2hlLmNveW90ZS5odHRwMTEuSHR0cDExTmlvUHJvdG9jb2wiIC8+CQ0KKwkJCQktLT4NCisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InBvcnQiPjx2YWx1ZT4ke2h0dHAucG9ydH08L3ZhbHVlPjwvcHJvcGVydHk+DQorCQkgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJyZWRpcmVjdFBvcnQiPjx2YWx1ZT4ke2h0dHBzLnBvcnR9PC92YWx1ZT48L3Byb3BlcnR5Pg0KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZW5hYmxlTG9va3VwcyI+PHZhbHVlPmZhbHNlPC92YWx1ZT48L3Byb3BlcnR5Pg0KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idXNlSVBWSG9zdHMiPjx2YWx1ZT50cnVlPC92YWx1ZT48L3Byb3BlcnR5Pg0KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iVVJJRW5jb2RpbmciPjx2YWx1ZT4ke2h0dHAuVVJJRW5jb2Rpbmd9PC92YWx1ZT48L3Byb3BlcnR5Pg0KKwkJCTwvYmVhbj4NCisJICAgIDwvcHJvcGVydHk+DQorCSAgICAJDQorICAgICAgICA8cHJvcGVydHkgbmFtZT0iYWRkcmVzcyI+DQorICAgICAgICAgICAgPGJlYW4gY2xhc3M9ImphdmEubmV0LkluZXRTb2NrZXRBZGRyZXNzIj4NCisgICAgICAgICAgICAgICAgPGNvbnN0cnVjdG9yLWFyZyBpbmRleD0iMCIgdHlwZT0iamF2YS5sYW5nLlN0cmluZyIgdmFsdWU9IiR7aHR0cC5ob3N0fSIgLz4gIA0KKyAgICAgICAgICAgICAgICA8Y29uc3RydWN0b3ItYXJnIGluZGV4PSIxIiB0eXBlPSJpbnQiIHZhbHVlPSIke2h0dHAucG9ydH0iIC8+ICANCisgICAgICAgICAgICA8L2JlYW4+CQ0KKyAgICAgICAgPC9wcm9wZXJ0eT4NCisJICAgIAkNCisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJiYXNlSG9zdCI+DQorCSAgICAgICA8YmVhbiBjbGFzcz0ib3JnLmFwYWNoZS5jYXRhbGluYS5jb3JlLlN0YW5kYXJkSG9zdCI+DQorCSAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9Im5hbWUiIHZhbHVlPSIke2h0dHAuaG9zdH0iIC8+DQorCSAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InVucGFja1dBUnMiIHZhbHVlPSJ0cnVlIiAvPg0KKwkgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJhdXRvRGVwbG95IiB2YWx1ZT0idHJ1ZSIgLz4NCisJICAgICAgIDwvYmVhbj4JICAgDQorCSAgICA8L3Byb3BlcnR5PgkJDQorDQorCQk8cHJvcGVydHkgbmFtZT0idmFsdmVzIj4NCisgICAgICAJCTxsaXN0Pg0KKyAgICAgICAgCTwvbGlzdD4NCisgICAgICAgIDwvcHJvcGVydHk+DQorCSAgICANCisJPC9iZWFuPg0KKwkNCisJPCEtLSBSVE1QVCAoZGVkaWNhdGVkIHNlcnZlcikgLS0+DQorCTxiZWFuIGlkPSJydG1wdC5zZXJ2ZXIiIGNsYXNzPSJvcmcucmVkNS5zZXJ2ZXIudG9tY2F0LnJ0bXB0LlJUTVBUTG9hZGVyIiBpbml0LW1ldGhvZD0iaW5pdCIgbGF6eS1pbml0PSJ0cnVlIj4NCisJDQorCQk8cHJvcGVydHkgbmFtZT0id2ViYXBwRm9sZGVyIiB2YWx1ZT0iJHtyZWQ1LnJvb3R9L3dlYmFwcHMiIC8+DQorCQkNCisJCTxwcm9wZXJ0eSBuYW1lPSJjb25uZWN0b3IiPg0KKwkJCTxiZWFuIGNsYXNzPSJvcmcuYXBhY2hlLmNhdGFsaW5hLmNvbm5lY3Rvci5Db25uZWN0b3IiPg0KKwkJCQk8Y29uc3RydWN0b3ItYXJnIHR5cGU9ImphdmEubGFuZy5TdHJpbmciIHZhbHVlPSJvcmcuYXBhY2hlLmNveW90ZS5odHRwMTEuSHR0cDExTmlvUHJvdG9jb2wiIC8+CQ0KKwkJCQk8cHJvcGVydHkgbmFtZT0icG9ydCI+PHZhbHVlPiR7cnRtcHQucG9ydH08L3ZhbHVlPjwvcHJvcGVydHk+DQorCQkJCTxwcm9wZXJ0eSBuYW1lPSJlbmFibGVMb29rdXBzIj48dmFsdWU+ZmFsc2U8L3ZhbHVlPjwvcHJvcGVydHk+DQorCQkJPC9iZWFuPg0KKwkJPC9wcm9wZXJ0eT4NCisNCisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJhZGRyZXNzIj4NCisgICAgICAgICAgICA8YmVhbiBjbGFzcz0iamF2YS5uZXQuSW5ldFNvY2tldEFkZHJlc3MiPg0KKyAgICAgICAgICAgICAgICA8Y29uc3RydWN0b3ItYXJnIGluZGV4PSIwIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIiB2YWx1ZT0iJHtydG1wdC5ob3N0fSIgLz4gIA0KKyAgICAgICAgICAgICAgICA8Y29uc3RydWN0b3ItYXJnIGluZGV4PSIxIiB0eXBlPSJpbnQiIHZhbHVlPSIke3J0bXB0LnBvcnR9IiAvPiAgDQorICAgICAgICAgICAgPC9iZWFuPg0KKyAgICAgICAgPC9wcm9wZXJ0eT4NCisJCQ0KKwkJPHByb3BlcnR5IG5hbWU9ImNvbm5lY3Rpb25Qcm9wZXJ0aWVzIj4NCisJCQk8bWFwPg0KKwkJCQk8ZW50cnkga2V5PSJtYXhLZWVwQWxpdmVSZXF1ZXN0cyIgdmFsdWU9IiR7cnRtcHQubWF4X2tlZXBfYWxpdmVfcmVxdWVzdHN9Ii8+DQorCQkJCTxlbnRyeSBrZXk9InVzZUV4ZWN1dG9yIiB2YWx1ZT0idHJ1ZSIvPg0KKwkJCQk8ZW50cnkga2V5PSJtYXhUaHJlYWRzIiB2YWx1ZT0iJHtydG1wdC5tYXhfdGhyZWFkc30iLz4NCisJCQkJPGVudHJ5IGtleT0iYWNjZXB0b3JUaHJlYWRDb3VudCIgdmFsdWU9IiR7cnRtcHQuYWNjZXB0b3JfdGhyZWFkX2NvdW50fSIvPg0KKwkJCQk8ZW50cnkga2V5PSJwcm9jZXNzb3JDYWNoZSIgdmFsdWU9IiR7cnRtcHQucHJvY2Vzc29yX2NhY2hlfSIvPg0KKwkJCTwvbWFwPg0KKwkJPC9wcm9wZXJ0eT4NCisJCQ0KKwkJPHByb3BlcnR5IG5hbWU9Imhvc3QiPg0KKwkJCTxiZWFuIGNsYXNzPSJvcmcuYXBhY2hlLmNhdGFsaW5hLmNvcmUuU3RhbmRhcmRIb3N0Ij4NCisJCQkJPHByb3BlcnR5IG5hbWU9Im5hbWUiIHZhbHVlPSIke3J0bXB0Lmhvc3R9IiAvPg0KKwkJCQk8cHJvcGVydHkgbmFtZT0idW5wYWNrV0FScyIgdmFsdWU9ImZhbHNlIiAvPg0KKwkJCQk8cHJvcGVydHkgbmFtZT0iYXV0b0RlcGxveSIgdmFsdWU9ImZhbHNlIiAvPg0KKwkJCTwvYmVhbj4JICAgDQorCQk8L3Byb3BlcnR5PgkJDQorDQorCTwvYmVhbj4NCisJDQorCTwhLS0gUlRNUFMgKGRlZGljYXRlZCBzZXJ2ZXIpIC0tPgkNCis8IS0tDQorCTxiZWFuIGlkPSJydG1wcy5zZXJ2ZXIiIGNsYXNzPSJvcmcucmVkNS5zZXJ2ZXIudG9tY2F0LnJ0bXBzLlJUTVBTTG9hZGVyIiBpbml0LW1ldGhvZD0iaW5pdCIgbGF6eS1pbml0PSJ0cnVlIj4NCisJDQorCQk8cHJvcGVydHkgbmFtZT0id2ViYXBwRm9sZGVyIiB2YWx1ZT0iJHtyZWQ1LnJvb3R9L3dlYmFwcHMiIC8+DQorCQkNCisJCTxwcm9wZXJ0eSBuYW1lPSJjb25uZWN0b3IiPg0KKwkJCTxiZWFuIGNsYXNzPSJvcmcuYXBhY2hlLmNhdGFsaW5hLmNvbm5lY3Rvci5Db25uZWN0b3IiPg0KKwkJCQk8Y29uc3RydWN0b3ItYXJnIHR5cGU9ImphdmEubGFuZy5TdHJpbmciIHZhbHVlPSJvcmcuYXBhY2hlLmNveW90ZS5odHRwMTEuSHR0cDExTmlvUHJvdG9jb2wiIC8+CQ0KKwkJCQk8cHJvcGVydHkgbmFtZT0icG9ydCIgdmFsdWU9IiR7cnRtcHMucG9ydH0iIC8+DQorCQkJCTxwcm9wZXJ0eSBuYW1lPSJyZWRpcmVjdFBvcnQiIHZhbHVlPSIke3J0bXAucG9ydH0iIC8+DQorCQkJPC9iZWFuPgkJCQ0KKwkJPC9wcm9wZXJ0eT4JDQorCQkNCisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJhZGRyZXNzIj4NCisgICAgICAgICAgICA8YmVhbiBjbGFzcz0iamF2YS5uZXQuSW5ldFNvY2tldEFkZHJlc3MiPg0KKyAgICAgICAgICAgICAgICA8Y29uc3RydWN0b3ItYXJnIGluZGV4PSIwIiB0eXBlPSJqYXZhLmxhbmcuU3RyaW5nIiB2YWx1ZT0iJHtydG1wcy5ob3N0fSIgLz4gIA0KKyAgICAgICAgICAgICAgICA8Y29uc3RydWN0b3ItYXJnIGluZGV4PSIxIiB0eXBlPSJpbnQiIHZhbHVlPSIke3J0bXBzLnBvcnR9IiAvPiAgDQorICAgICAgICAgICAgPC9iZWFuPg0KKyAgICAgICAgPC9wcm9wZXJ0eT4NCisJCQ0KKwkJPHByb3BlcnR5IG5hbWU9Imhvc3QiPg0KKwkJCTxiZWFuIGNsYXNzPSJvcmcuYXBhY2hlLmNhdGFsaW5hLmNvcmUuU3RhbmRhcmRIb3N0Ij4NCisJCQkJPHByb3BlcnR5IG5hbWU9Im5hbWUiIHZhbHVlPSIke3J0bXBzLmhvc3R9IiAvPg0KKwkJCQk8cHJvcGVydHkgbmFtZT0idW5wYWNrV0FScyIgdmFsdWU9ImZhbHNlIiAvPg0KKwkJCQk8cHJvcGVydHkgbmFtZT0iYXV0b0RlcGxveSIgdmFsdWU9ImZhbHNlIiAvPg0KKwkJCTwvYmVhbj4JICAgDQorCQk8L3Byb3BlcnR5PgkJDQorCQ0KKwkJPHByb3BlcnR5IG5hbWU9ImNvbm5lY3Rpb25Qcm9wZXJ0aWVzIj4NCisJCQk8bWFwPg0KKwkJCQk8ZW50cnk+DQorCQkJCQk8a2V5Pjx2YWx1ZT5wb3J0PC92YWx1ZT48L2tleT4NCisJCQkJCTx2YWx1ZT4ke3J0bXBzLnBvcnR9PC92YWx1ZT4NCisJCQkJPC9lbnRyeT4NCisJCQkJPGVudHJ5Pg0KKwkJCQkJPGtleT48dmFsdWU+cmVkaXJlY3RQb3J0PC92YWx1ZT48L2tleT4NCisJCQkJCTx2YWx1ZT4ke3J0bXAucG9ydH08L3ZhbHVlPg0KKwkJCQk8L2VudHJ5Pg0KKwkJCQk8ZW50cnk+DQorCQkJCQk8a2V5Pjx2YWx1ZT5TU0xFbmFibGVkPC92YWx1ZT48L2tleT4NCisJCQkJCTx2YWx1ZT50cnVlPC92YWx1ZT4NCisJCQkJPC9lbnRyeT4NCisJCQkJPGVudHJ5Pg0KKwkJCQkJPGtleT48dmFsdWU+c3NsUHJvdG9jb2w8L3ZhbHVlPjwva2V5Pg0KKwkJCQkJPHZhbHVlPlRMUzwvdmFsdWU+DQorCQkJCTwvZW50cnk+DQorCQkJCTxlbnRyeT4NCisJCQkJCTxrZXk+PHZhbHVlPmNsaWVudEF1dGg8L3ZhbHVlPjwva2V5Pg0KKwkJCQkJPHZhbHVlPmZhbHNlPC92YWx1ZT4NCisJCQkJPC9lbnRyeT4NCisJCQkJPGVudHJ5Pg0KKwkJCQkJPGtleT48dmFsdWU+a2V5c3RvcmVGaWxlPC92YWx1ZT48L2tleT4NCisJCQkJCTx2YWx1ZT5jb25mL2tleXN0b3JlPC92YWx1ZT4NCisJCQkJPC9lbnRyeT4NCisJCQkJPGVudHJ5Pg0KKwkJCQkJPGtleT48dmFsdWU+a2V5c3RvcmVQYXNzPC92YWx1ZT48L2tleT4NCisJCQkJCTx2YWx1ZT4ke3J0bXBzLmtleXN0b3JlcGFzc308L3ZhbHVlPg0KKwkJCQk8L2VudHJ5Pg0KKwkJCQk8ZW50cnk+DQorCQkJCQk8a2V5Pjx2YWx1ZT5rZXlzdG9yZVR5cGU8L3ZhbHVlPjwva2V5Pg0KKwkJCQkJPHZhbHVlPkpLUzwvdmFsdWU+DQorCQkJCTwvZW50cnk+DQorCQkJCTxlbnRyeSBrZXk9Im1heEtlZXBBbGl2ZVJlcXVlc3RzIiB2YWx1ZT0iJHtydG1wcy5tYXhfa2VlcF9hbGl2ZV9yZXF1ZXN0c30iLz4NCisJCQkJPGVudHJ5IGtleT0idXNlRXhlY3V0b3IiIHZhbHVlPSJ0cnVlIi8+DQorCQkJCTxlbnRyeSBrZXk9Im1heFRocmVhZHMiIHZhbHVlPSIke3J0bXBzLm1heF90aHJlYWRzfSIvPg0KKwkJCQk8ZW50cnkga2V5PSJhY2NlcHRvclRocmVhZENvdW50IiB2YWx1ZT0iJHtydG1wcy5hY2NlcHRvcl90aHJlYWRfY291bnR9Ii8+DQorCQkJCTxlbnRyeSBrZXk9InByb2Nlc3NvckNhY2hlIiB2YWx1ZT0iJHtydG1wcy5wcm9jZXNzb3JfY2FjaGV9Ii8+DQorCQkJPC9tYXA+DQorCQk8L3Byb3BlcnR5PgkNCisNCisJCTxwcm9wZXJ0eSBuYW1lPSJ2YWx2ZXMiPg0KKyAgICAgIAkJPGxpc3Q+DQorICAgICAgICAJPC9saXN0Pg0KKyAgICAgICAgPC9wcm9wZXJ0eT4JCQkNCisJDQorCTwvYmVhbj4JCQ0KKy0tPg0KKwkNCis8L2JlYW5zPg0KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvcmVkNS9uZXR3b3JrX3Rlc3Quc2ggYi9XZWJDb250ZW50L3JlZDUvbmV0d29ya190ZXN0LnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjY0Y2I4ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3JlZDUvbmV0d29ya190ZXN0LnNoCkBAIC0wLDAgKzEsMTU3IEBACisjIS9iaW4vYmFzaAorIyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisjCisjICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyMKKyMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorIyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyMgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK0xPQ0FMX0hPU1Q9JDEKK1NTSF9MT0dJTj0kMgorVEVTVElOR19IT1NUPSQzCisKK2lmIFsgLXogIiQzIiBdO3RoZW4KKyAgZWNobyAiVXNhZ2U6ICQwIExPQ0FMX0hPU1RfSVAgUkVNT1RFX1NTSF9MT0dJTiBSRU1PVEVfSE9TVF9JUCIKKyAgZWNobyAiU2NyaXB0IHJlcXVhcmUgaW5zdGFsbGVkICdpcGVyZicgb24gYm90aCBsb2NhbCBhbmQgcmVtb3RlIGhvc3RzLiIKKyAgZWNobyAiQWxzbyBuZWVkIHNldHRpbmcgdXAgc3NoIGxvZ2luIHdpdGhvdXQgcmVxdWlyaW5nIGEgcGFzc3dvcmQuIFVzZSBmb3IgdGhpcyBwdXJwb3NlIHNzbCBjZXJ0aWZpY2F0ZXMuIgorICBleGl0IDA7CitmaQorCitURVNUX0xPQ0FMX0lQRVJGPWBpcGVyZiAyPiYxIHwgZ3JlcCAiVXNhZ2U6IGlwZXJmIiB8d2MgLWxgCitpZiBbICIxIiAhPSAiJFRFU1RfTE9DQUxfSVBFUkYiIF07dGhlbgorICBlY2hvICJTY3JpcHQgcmVxdWFyZSBpbnN0YWxsZWQgJ2lwZXJmJyBvbiBsb2NhbCBob3N0LiIKKyAgZXhpdCAwOworZmkKKworVEVTVF9SRU1PVEVfSVBFUkY9YHNzaCAkU1NIX0xPR0lOQCRURVNUSU5HX0hPU1QgImlwZXJmIDI+JjEgfCBncmVwIFwiVXNhZ2U6IGlwZXJmXCIgfHdjIC1sImAKK2lmIFsgIjEiICE9ICIkVEVTVF9SRU1PVEVfSVBFUkYiIF07dGhlbgorICBlY2hvICJTY3JpcHQgcmVxdWFyZSBpbnN0YWxsZWQgJ2lwZXJmJyBvbiByZW1vdGUgaG9zdC4iCisgIGV4aXQgMDsKK2ZpCisKK3Rlc3Rfaml0dGVyX3dpdGhfcGluZyAoKXsKKyMjICQxIC0gc2l6ZSBvZiBwYWNrZXRzIGluIGJpdGVzCisjIyAkMiAtIGNvdW50IG9mIHNlbmQgcGFja2V0cworCitDT1VOVF9QQUNLRVRTPTEwMDAKK2lmIFsgLXogIiQxIiBdOyB0aGVuIAorICBwaW5nIC1jIDEwMDAgLWYgLXMgJDEgJFRFU1RJTkdfSE9TVCAyPiYxID4kezF9Yi5vdXQudHh0CitlbHNlCisgIHBpbmcgLWMgJDIgLWYgLXMgJDEgJFRFU1RJTkdfSE9TVCAyPiYxID4kezF9Yi5vdXQudHh0CisgIENPVU5UX1BBQ0tFVFM9JDIKK2ZpCisKK01JTj1gZ3JlcCAicnR0IG1pbiIgLi8kezF9Yi5vdXQudHh0IHwgY3V0IC1kICIgIiAtZjQgfCBjdXQgLWQgIi8iIC1mMSB8IGN1dCAtZCAiLiIgLWYxYAorQVZHPWBncmVwICJydHQgbWluIiAuLyR7MX1iLm91dC50eHQgfCBjdXQgLWQgIiAiIC1mNCB8IGN1dCAtZCAiLyIgLWYyIHwgY3V0IC1kICIuIiAtZjFgCitNQVg9YGdyZXAgInJ0dCBtaW4iIC4vJHsxfWIub3V0LnR4dCB8IGN1dCAtZCAiICIgLWY0IHwgY3V0IC1kICIvIiAtZjMgfCBjdXQgLWQgIi4iIC1mMWAKKworbGV0ICJKSVRURVI9KCRNQVgtJEFWRyktKCRBVkctJE1JTikiCitpZiBbICIkSklUVEVSIiAtbHQgIjAiIF07dGhlbgorICAgIGxldCAiSklUVEVSPS0kSklUVEVSIgorZmkKK2VjaG8gIkppdHRlciA9ICRKSVRURVIgZm9yICRDT1VOVF9QQUNLRVRTIHBhY2tldHMgd2l0aCBzaXplICQxIGJpdGVzIChwaW5nKSIKK2VjaG8gIk1heCBsYXRlbmN5IGlzICRNQVgiCitpZiBbICIkQVZHIiAhPSAiMCIgIF07IHRoZW4gCisgIGxldCAiSklUVEVSUFM9JEpJVFRFUioxMDAvJEFWRyIKKyAgZWNobyAiSml0dGVyID0gJEpJVFRFUlBTICUgZnJvbSAkQVZHIG1zIgorZmkKKworfQorCit0ZXN0X29wZW5lZF9wb3J0c193aXRoX2lwZXJmICgpeworIyMgVGVzdCBvcGVuZWQgcG9ydHMKK2VjaG8gIlN0YXJ0IHRlc3Rpbmcgb3BlbmVkIHBvcnRzIgorZWNobyAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIKK1BPUlRTPSQxICMiNTA4MCAxOTM1IDgwODgiCitBVkFJTF9QT1JUUz0iIgorcm0gc2VydmVyX3BvcnRfbG9nLnR4dAorZm9yIGkgaW4gJFBPUlRTOyBkbworICAjZWNobyAic3NoICRTU0hfTE9HSU5AJFRFU1RJTkdfSE9TVCBcImlwZXJmIC1zIC1wICRpXCIiCisgIHNzaCAkU1NIX0xPR0lOQCRURVNUSU5HX0hPU1QgImlwZXJmIC1zIC1wICRpIiA+PnNlcnZlcl9wb3J0X2xvZy50eHQgMj4mMSAmCisgIHNsZWVwIDIKKyAgI2VjaG8gInRlbG5ldCAtZSBxICRURVNUSU5HX0hPU1QgJGkgPHRlbG5ldF9jb21tYW5kcy50eHQiCisgIFRFTE5FVF9PVVQ9YGVjaG8gLWUgInFcbnF1aXQifHRlbG5ldCAtZSBxICRURVNUSU5HX0hPU1QgJGlgCisgICNlY2hvICJzc2ggJFNTSF9MT0dJTkAkVEVTVElOR19IT1NUIFwicHMgLUMgaXBlcmZ8Y3V0IC1kIFwiIFwiIC1mMSB8IHhhcmdzIGtpbGwgLTlcIiIKKyAgc3NoICRTU0hfTE9HSU5AJFRFU1RJTkdfSE9TVCAicHMgLUMgaXBlcmZ8Y3V0IC1kIFwiIFwiIC1mMSB8IHhhcmdzIGtpbGwgLTkiID4+c2VydmVyX3BvcnRfbG9nLnR4dCAyPiYxICYKKyAgUE9SVF9JU19BVkFJTEFCTEU9YGVjaG8gIiRURUxORVRfT1VUIiB8IGdyZXAgIkNvbm5lY3RlZCB0byJgCisgIGlmIFsgIiRQT1JUX0lTX0FWQUlMQUJMRSIgIT0gIiIgXTt0aGVuCisgICAgZWNobyAiUG9ydCAkaSBhdmFpbGFibGUiCisgICAgQVZBSUxfUE9SVFM9IiRBVkFJTF9QT1JUUyAkaSIKKyAgZWxzZQorICAgIGVjaG8gIlBvcnQgJGkgbm90IGF2YWlsYWJsZSIKKyAgZmkKKyAgc2xlZXAgMgorZG9uZQorCit9CisKKwordGVzdF9iYW5kd2lkdGhfd2l0aF9pcGVyZiAoKXsKKyMjIFRlc3QgYmFuZHdpZHRoIG9mIHNlcnZlcgorZWNobyAiU3RhcnQgdGVzdGluZyBiYW5kd2lkdGggb2Ygc2VydmVyIgorZWNobyAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIKKyAgUE9SVD0kMQorICBUSU1FX1RPX1RFU1Q9MzAKKyAgTlVNX1RIUkVBRFM9MTAKKyAgUkVQT1JUX0lOVEVSVkFMPTUKKyAgI0Rvd25sb2FkIHRlc3QKKyAgZWNobyAiU3RhcnQgb3V0Ym91bmQgdGVzdCIKKyAgI3NldHVwIHNlcnZlcgorICAjZWNobyAiU3RhcnRpbmcgc2VydmVyLi4uIgorICBzc2ggJFNTSF9MT0dJTkAkVEVTVElOR19IT1NUICJpcGVyZiAtcyAtcCAkUE9SVCIgPnNlcnZlcl9sb2cudHh0IDI+JjEgJgorICAjd2FpdCB3aGVuIHNlcnZlciBzdGFydGVkCisgIHNsZWVwIDIKKyAgI3N0YXJ0IHRlc3QKKyAgI2VjaG8gIlN0YXJ0IHRlc3QiCisgIGlwZXJmIC1jICRURVNUSU5HX0hPU1QgLXAgJFBPUlQgLWkgJFJFUE9SVF9JTlRFUlZBTCAtUCAkTlVNX1RIUkVBRFMgLXQgJFRJTUVfVE9fVEVTVCB8IHRlZSBjbGllbnRfbG9nLnR4dCB8IGdyZXAgIlNVTSIKKyAgI3N0b3Agc2VydmVyCisgIGVjaG8gIlN0b3Agc2VydmVyIgorICBzc2ggJFNTSF9MT0dJTkAkVEVTVElOR19IT1NUICJwcyAtQyBpcGVyZnxjdXQgLWQgXCIgXCIgLWYxIHwgeGFyZ3Mga2lsbCAtOSIgPj5zZXJ2ZXJfbG9nLnR4dCAyPiYxICYKKyAgZWNobyAiRW5kIG91dGJvdW5kIHRlc3QiCisgIHNsZWVwIDIKKyAgZWNobyAKKyAgI1VwbG9hZCB0ZXN0IAorICAjQ29tbWVudDogVGhpcyB3ZSBjYW4gdXNlIGFueSBwb3J0IGZvciB0ZXN0aW5nLCBJIHVzZSAxMjEwMAorICBQT1JUPTEyMTAwCisgIGVjaG8gIlN0YXJ0IGluYm91bmQgdGVzdCIKKyAgI3NldHVwIHNlcnZlcgorICAjZWNobyAiU3RhcnRpbmcgc2VydmVyLi4uIgorICBpcGVyZiAtcyAtcCAkUE9SVCA+bG9jYWxfc2VydmVyX2xvZy50eHQgMj4mMSAmCisgICN3YWl0IHdoZW4gc2VydmVyIHN0YXJ0ZWQKKyAgc2xlZXAgMgorICAjc3RhcnQgdGVzdAorICAjZWNobyAiU3RhcnQgdGVzdCIKKyAgc3NoICRTU0hfTE9HSU5AJFRFU1RJTkdfSE9TVCAiaXBlcmYgLWMgJExPQ0FMX0hPU1QgLXAgJFBPUlQgLWkgJFJFUE9SVF9JTlRFUlZBTCAtUCAkTlVNX1RIUkVBRFMgLXQgJFRJTUVfVE9fVEVTVCIgfCB0ZWUgcmVtb3RlX2NsaWVudF9sb2cudHh0IHwgZ3JlcCAiU1VNIgorICAjc3RvcCBzZXJ2ZXIKKyAgZWNobyAiU3RvcCBzZXJ2ZXIiCisgIHBzIC1DIGlwZXJmIHwgY3V0IC1kICIgIiAtZjEgfCB4YXJncyBraWxsIC05ID5sb2NhbF9zZXJ2ZXJfbG9nLnR4dCAyPiYxICYKKyAgZWNobyAiRW5kIGluYm91bmQgdGVzdCIKK30KKworZWNobyAiU3RhcnQgdGVzdGluZyBsYXRlbmN5IGFuZCBqaXR0ZXIiCitlY2hvICI9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IgordGVzdF9qaXR0ZXJfd2l0aF9waW5nIDEwMDAgMTAwCit0ZXN0X2ppdHRlcl93aXRoX3BpbmcgMTAwMCAxMDAwCit0ZXN0X2ppdHRlcl93aXRoX3BpbmcgMTAwMDAgMTAwMAorI0hhcmQgdGVzdAorI3Rlc3Rfaml0dGVyX3dpdGhfcGluZyAxMDI0IDEwMDAwMAorZWNobworCit0ZXN0X29wZW5lZF9wb3J0c193aXRoX2lwZXJmICI1MDgwIDE5MzUgODA4OCIKKyNlY2hvICIkQVZBSUxfUE9SVFMiCitlY2hvCisKK3Rlc3RfYmFuZHdpZHRoX3dpdGhfaXBlcmYgMTkzNQorCisjIyBnZW5lcmF0ZSBmaWxlIHdpdGggcmFuZG9tIGNvbnRlbnQgYW5kIHNpemUgMU1iCisjZGQgaWY9L2Rldi91cmFuZG9tIG9mPXRlc3QubG9nIGJzPTFrIGNvdW50PTEwMjQKKworCisKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvcmVkNS9yZWQ1LWhpZ2hwZXJmLmJhdCBiL1dlYkNvbnRlbnQvcmVkNS9yZWQ1LWhpZ2hwZXJmLmJhdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNWJhMjg2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9yZWQ1L3JlZDUtaGlnaHBlcmYuYmF0CkBAIC0wLDAgKzEsMjEgQEAKK1JFTSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCitSRU0gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorUkVNIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCitSRU0gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorUkVNDQorUkVNICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCitSRU0NCitSRU0gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KK1JFTSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KK1JFTSBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCitSRU0gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KK1JFTSBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCitSRU0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQorQGVjaG8gb2ZmDQorDQoraWYgTk9UIERFRklORUQgUkVENV9IT01FIHNldCBSRUQ1X0hPTUU9JX5kcDANCisNCitzZXQgSkFWQV9PUFRTPSAtWG14NzY4bSAtWG1zNTEybSAtWG1uNTEybSAtWHNzMjU2ayAtWFg6K0FnZ3Jlc3NpdmVPcHRzIC1YWDorRGlzYWJsZUV4cGxpY2l0R0MgLVhYOlBhcmFsbGVsR0NUaHJlYWRzPTQgLVhYOitVc2VDb25jTWFya1N3ZWVwR0MgLVhYOitVc2VQYXJOZXdHQyAtWFg6U3Vydml2b3JSYXRpbz0xNiAtWFg6VGFyZ2V0U3Vydml2b3JSYXRpbz05MCAtWFg6TWF4VGVudXJpbmdUaHJlc2hvbGQ9MzEgLURqYXZhLm5ldC5wcmVmZXJJUHY0U3RhY2s9dHJ1ZQ0KKw0KK2VjaG8gUnVubmluZyBIaWdoIFBlcmZvcm1hbmNlIFJlZDUNCitzdGFydCBjbWQgL2MgIiVSRUQ1X0hPTUUlXHJlZDUuYmF0IiA+PiAiJVJFRDVfSE9NRSVcbG9nXGp2bS5zdGRvdXQiDQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zY3JlZW5zaGFyaW5nL2ljb24uanBnIGIvV2ViQ29udGVudC9zY3JlZW5zaGFyaW5nL2ljb24uanBnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5ZjI5ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NjcmVlbnNoYXJpbmcvaWNvbi5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zY3JlZW5zaGFyaW5nL2xvZ2JhY2sueG1sIGIvV2ViQ29udGVudC9zY3JlZW5zaGFyaW5nL2xvZ2JhY2sueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxZjEzNzIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NjcmVlbnNoYXJpbmcvbG9nYmFjay54bWwKQEAgLTAsMCArMSw1MyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKworPGNvbmZpZ3VyYXRpb24geG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgCisgICAgeHNpOm5vTmFtZXNwYWNlU2NoZW1hTG9jYXRpb249ImxvZ2JhY2sueHNkIj4KKwk8Y29udGV4dE5hbWU+JHtjdXJyZW50X29wZW5tZWV0aW5nc19jb250ZXh0X25hbWV9PC9jb250ZXh0TmFtZT4KKwkKKwk8am14Q29uZmlndXJhdG9yIGNvbnRleHROYW1lPSIke2N1cnJlbnRfb3Blbm1lZXRpbmdzX2NvbnRleHRfbmFtZX0iIC8+CisKKyAgPGFwcGVuZGVyIG5hbWU9IkZMT0cyIiBjbGFzcz0iY2gucW9zLmxvZ2JhY2suY29yZS5GaWxlQXBwZW5kZXIiPgorCQk8RmlsZT5zY3JlZW5zaGFyaW5nLmxvZzwvRmlsZT4KKwkJPEFwcGVuZD5mYWxzZTwvQXBwZW5kPgorCQk8RW5jb2Rpbmc+VVRGLTg8L0VuY29kaW5nPgorCQk8QnVmZmVyZWRJTz5mYWxzZTwvQnVmZmVyZWRJTz4KKwkJPEltbWVkaWF0ZUZsdXNoPnRydWU8L0ltbWVkaWF0ZUZsdXNoPgorCQk8bGF5b3V0IGNsYXNzPSJjaC5xb3MubG9nYmFjay5jbGFzc2ljLlBhdHRlcm5MYXlvdXQiPgorCQkJPFBhdHRlcm4+CisJCQkJJTVwICVke01NLWRkIEhIOm1tOnNzLlNTUyB9ICVGICVyICVMICVjIFsldF0gLSAlbSVuCisJCQk8L1BhdHRlcm4+CisJCTwvbGF5b3V0PgorICA8L2FwcGVuZGVyPgorICA8YXBwZW5kZXIgbmFtZT0iQ09OU09MRTIiIGNsYXNzPSJjaC5xb3MubG9nYmFjay5jb3JlLkNvbnNvbGVBcHBlbmRlciI+CisgICAgPGxheW91dCBjbGFzcz0iY2gucW9zLmxvZ2JhY2suY2xhc3NpYy5QYXR0ZXJuTGF5b3V0Ij4KKyAgICAgIDxwYXR0ZXJuPiU1cCAlZHtNTS1kZCBISDptbTpzcy5TU1MgfSAlRiAlciAlTCAlYyBbJXRdIC0gJW0lbjwvcGF0dGVybj4KKyAgICA8L2xheW91dD4KKyAgPC9hcHBlbmRlcj4KKyAgPGxvZ2dlciBuYW1lPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncyI+CisgICAgPGxldmVsIHZhbHVlPSJERUJVRyIvPgorICA8L2xvZ2dlcj4KKyAgPHJvb3Q+CisgICAgPGxldmVsIHZhbHVlPSJFUlJPUiIvPgorICAgIDxhcHBlbmRlci1yZWYgcmVmPSJGTE9HMiIvPgorICAgIDxhcHBlbmRlci1yZWYgcmVmPSJDT05TT0xFMiIvPgorICA8L3Jvb3Q+Cis8L2NvbmZpZ3VyYXRpb24+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NjcmVlbnNoYXJpbmcvbG9nYmFjay54c2QgYi9XZWJDb250ZW50L3NjcmVlbnNoYXJpbmcvbG9nYmFjay54c2QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzA2ZTVhNwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc2NyZWVuc2hhcmluZy9sb2diYWNrLnhzZApAQCAtMCwwICsxLDEwNiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPHhzOnNjaGVtYSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIj4NCisgIDx4czplbGVtZW50IG5hbWU9ImNvbmZpZ3VyYXRpb24iPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOnNlcXVlbmNlPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJjb250ZXh0TmFtZSIvPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJqbXhDb25maWd1cmF0b3IiLz4NCisgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9ImFwcGVuZGVyIi8+DQorICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJsb2dnZXIiLz4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0icm9vdCIvPg0KKyAgICAgIDwveHM6c2VxdWVuY2U+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJjb250ZXh0TmFtZSIgdHlwZT0ieHM6c3RyaW5nIi8+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJqbXhDb25maWd1cmF0b3IiPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjb250ZXh0TmFtZSIgdXNlPSJyZXF1aXJlZCIvPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0iYXBwZW5kZXIiPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOnNlcXVlbmNlPg0KKyAgICAgICAgPHhzOnNlcXVlbmNlIG1pbk9jY3Vycz0iMCI+DQorICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iRmlsZSIvPg0KKyAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkFwcGVuZCIvPg0KKyAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkVuY29kaW5nIi8+DQorICAgICAgICAgIDx4czplbGVtZW50IHJlZj0iQnVmZmVyZWRJTyIvPg0KKyAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9IkltbWVkaWF0ZUZsdXNoIi8+DQorICAgICAgICA8L3hzOnNlcXVlbmNlPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJsYXlvdXQiLz4NCisgICAgICA8L3hzOnNlcXVlbmNlPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xhc3MiIHVzZT0icmVxdWlyZWQiLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOk5DTmFtZSIvPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0iRmlsZSIgdHlwZT0ieHM6c3RyaW5nIi8+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJBcHBlbmQiIHR5cGU9InhzOmJvb2xlYW4iLz4NCisgIDx4czplbGVtZW50IG5hbWU9IkVuY29kaW5nIiB0eXBlPSJ4czpOQ05hbWUiLz4NCisgIDx4czplbGVtZW50IG5hbWU9IkJ1ZmZlcmVkSU8iIHR5cGU9InhzOmJvb2xlYW4iLz4NCisgIDx4czplbGVtZW50IG5hbWU9IkltbWVkaWF0ZUZsdXNoIiB0eXBlPSJ4czpib29sZWFuIi8+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJsYXlvdXQiPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOmNob2ljZT4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0iUGF0dGVybiIvPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJwYXR0ZXJuIi8+DQorICAgICAgPC94czpjaG9pY2U+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyIgdXNlPSJyZXF1aXJlZCIvPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0iUGF0dGVybiIgdHlwZT0ieHM6c3RyaW5nIi8+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJwYXR0ZXJuIiB0eXBlPSJ4czpzdHJpbmciLz4NCisgIDx4czplbGVtZW50IG5hbWU9ImxvZ2dlciI+DQorICAgIDx4czpjb21wbGV4VHlwZT4NCisgICAgICA8eHM6Y29tcGxleENvbnRlbnQ+DQorICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9ImxldmVsIj4NCisgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czpOQ05hbWUiLz4NCisgICAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KKyAgICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJyb290Ij4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czpjb21wbGV4Q29udGVudD4NCisgICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0ibGV2ZWwiPg0KKyAgICAgICAgICA8eHM6c2VxdWVuY2U+DQorICAgICAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iYXBwZW5kZXItcmVmIi8+DQorICAgICAgICAgIDwveHM6c2VxdWVuY2U+DQorICAgICAgICA8L3hzOmV4dGVuc2lvbj4NCisgICAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0iYXBwZW5kZXItcmVmIj4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVmIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czpOQ05hbWUiLz4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJsZXZlbCI+DQorICAgIDx4czpzZXF1ZW5jZT4NCisgICAgICA8eHM6ZWxlbWVudCByZWY9ImxldmVsIi8+DQorICAgIDwveHM6c2VxdWVuY2U+DQorICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0ibGV2ZWwiPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2YWx1ZSIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6TkNOYW1lIi8+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorPC94czpzY2hlbWE+DQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zY3JlZW5zaGFyaW5nL3NwbGFzaGljb24uanBnIGIvV2ViQ29udGVudC9zY3JlZW5zaGFyaW5nL3NwbGFzaGljb24uanBnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5ZjI5ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NjcmVlbnNoYXJpbmcvc3BsYXNoaWNvbi5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zaXBpbmRleC5odG1sIGIvV2ViQ29udGVudC9zaXBpbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlYmJmMjgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NpcGluZGV4Lmh0bWwKQEAgLTAsMCArMSwyMyBAQAorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPCEtLQorCWRlc2lnbmVkIHRvIGJlIGVtcHR5CisJbmVjZXNzYXJ5IGZvciB0b21jYXQgcHJvY2VzcyB0byBkZWZhdWx0LWluZGV4LXBhZ2UKKy0tPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvYXV0aC9jaGVja0xvZ2luRGF0YS5senggYi9XZWJDb250ZW50L3NyYy9iYXNlL2F1dGgvY2hlY2tMb2dpbkRhdGEubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwOTgwMGEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2F1dGgvY2hlY2tMb2dpbkRhdGEubHp4CkBAIC0wLDAgKzEsNDIyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzwhRE9DVFlQRSBsaWJyYXJ5IFNZU1RFTSAiL3Byb2plY3QuZHRkIj4KKzxsaWJyYXJ5PgorCis8IS0tLSBMT0dJTiBwYW5lbCB3aW5kb3cgLS0+Cis8Y2xhc3MgbmFtZT0iY2hlY2tMb2dpbkRhdGEiIGV4dGVuZHM9ImxhYmVsRXhwbG9yZXJCb3giIGxhYmVsaWQ9IjEwOCIKKyAgICBkb2NraW5nPSJ0cnVlIiByZXNpemVhYmxlPSJmYWxzZSIgY2xvc2FibGU9ImZhbHNlIiAKKyAgICB3aWR0aD0iNDgwIiBoZWlnaHQ9IjIzMCIKKyAgICAgeD0iJG9uY2V7IGNhbnZhcy53aWR0aC8yIC0gdGhpcy53aWR0aC8yIH0iICB5PSI2MCI+CisgICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0idXNlcl9sb2dpbl9taW5pbXVtX2xlbmd0aCIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0iNCIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9InVzZXJfcGFzc19taW5pbXVtX2xlbmd0aCIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0iNCIgLz4KKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbmNsb3NlIj4KKyAgICAgICAgaWYgKHRoaXMuY2hpbGRPYmohPW51bGwpIHRoaXMuY2hpbGRPYmouY2xvc2UoKTsKKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAJY2FudmFzLnRoaXNoaWIuc2V0RGVmYXVsdFVzZXJMYW5ndWFnZSgpOworICAgIAlfbWFpblNjcm9sbEJhci5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKyAgICAgICAgbHouRm9jdXMuc2V0Rm9jdXModGhpcy51c2VybmFtZSx0cnVlKTsKKyAgICA8L2hhbmRsZXI+CisKKyAgICA8bWV0aG9kIG5hbWU9ImxvZ2luIiBhcmdzPSJpdGVtIj4KKyAgICAgICAgY2FudmFzLmZvY3VzT25JdGVtID0gdGhpcy51c2VybmFtZTsKKyAgICAgICAgdGhpcy5lbnRlclByZXNzZWQgPSBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIGlmICh0aGlzLmIyLnZpc2libGUpIHsKKyAgICAgICAgICAgIHRoaXMuYjIub25jbGljay5zZW5kRXZlbnQoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuYjMub25jbGljay5zZW5kRXZlbnQoKTsKKyAgICAgICAgfQorICAgIDwvbWV0aG9kPiAgIAorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0icmVmT2JqIiB2YWx1ZT0ibnVsbCIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImNoaWxkT2JqIiB2YWx1ZT0ibnVsbCIgLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9ImxhYmVsaWRlcnJvciIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImVudGVyUHJlc3NlZCIgdHlwZT0iYm9vbGVhbiIgdmFsdWU9ImZhbHNlIi8+CisgICAgCisgICAgPGxhYmVsVGV4dCBuYW1lPSJuMSIgbGFiZWxpZD0iMTA5IiB3aWR0aD0iMzAwIiB5PSIyNiIgcmVzaXplPSJmYWxzZSIgeD0iMiIgZm9udHN0eWxlPSJib2xkIi8+CisgICAgPGN1c3RvbUVkaXR0ZXh0IG5hbWU9InVzZXJuYW1lIiB5PSIyNCIgeD0iMTgwIiB3aWR0aD0iMjcwIiA+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgICAgICB2YXIgZyA9IGNhbnZhcy5nZXRVc2VyRGF0YSgpOworICAgICAgICAgICAgaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiY2hlY2tMb2dpbkRhdGEvZzogIixnKTsKKyAgICAgICAgICAgIGlmIChnWyJ1c2VybmFtZSJdIT1udWxsKSB0aGlzLnNldEF0dHJpYnV0ZSgndGV4dCcsZ1sidXNlcm5hbWUiXSk7CisgICAgICAgIDwvaGFuZGxlcj4gICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25rZXl1cCIgYXJncz0ia2V5Ij4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgaWYgKCB0aGlzLnBhcmVudC5lbnRlclByZXNzZWQgJiYgKCBrZXkgPT0gMTMgKSApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcGFyZW50LmxvZ2luKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmtleWRvd24iIGFyZ3M9ImtleSI+CisgICAgICAgICAgICBpZiAoIGtleSA9PSAxMyApCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQuZW50ZXJQcmVzc2VkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9oYW5kbGVyPgorICAgIDwvY3VzdG9tRWRpdHRleHQ+ICAgIAorCisgICAgPGxhYmVsVGV4dCBuYW1lPSJuMiIgbGFiZWxpZD0iMTEwIiB3aWR0aD0iMzAwIiB5PSI0OCIgcmVzaXplPSJmYWxzZSIgeD0iMiIgZm9udHN0eWxlPSJib2xkIi8+CisgICAgPGN1c3RvbUVkaXR0ZXh0IG5hbWU9InVzZXJwYXNzIiB5PSI0OCIgcGFzc3dvcmQ9InRydWUiIHg9IjE4MCIgd2lkdGg9IjI3MCIgPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgICAgICAgICAgdmFyIGcgPSBjYW52YXMuZ2V0VXNlckRhdGEoKTsKKyAgICAgICAgICAgIGlmIChnWyJ1c2VycGFzcyJdIT1udWxsKSB0aGlzLnNldEF0dHJpYnV0ZSgndGV4dCcsZ1sidXNlcnBhc3MiXSk7CisgICAgICAgIDwvaGFuZGxlcj4gICAgICAgICAgICAgICAgCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9ua2V5dXAiIGFyZ3M9ImtleSI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIGlmICggdGhpcy5wYXJlbnQuZW50ZXJQcmVzc2VkICYmICgga2V5ID09IDEzICkgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHBhcmVudC5sb2dpbigpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25rZXlkb3duIiBhcmdzPSJrZXkiPgorICAgICAgICAgICAgaWYgKCBrZXkgPT0gMTMgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LmVudGVyUHJlc3NlZCA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICA8L2N1c3RvbUVkaXR0ZXh0PgorICAgIAorCTxsYWJlbFRleHQgbmFtZT0iZG9tYWluX2xhYmVsIiBsYWJlbGlkPSIxMzcyIiB3aWR0aD0iMzAwIiB5PSI3MiIgcmVzaXplPSJmYWxzZSIgeD0iMiIKKwkJZm9udHN0eWxlPSJib2xkIiB2aXNpYmxlPSJmYWxzZSIvPiAgICAgCisgICAgPHJlc2V0Q29tYm9ib3ggbmFtZT0iZG9tYWluIiB5PSI3MiIgeD0iMTgwIiB3aWR0aD0iMjcwIiBlZGl0YWJsZT0iZmFsc2UiIHZpc2libGU9ImZhbHNlIj4KKyAgICAJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAJCS8vdGhpcy5zZWxlY3RJdGVtQXQoMCk7CisgICAgCQl0aGlzLmdldEFjdGl2ZUxkYXBDb25maWdzLmRvQ2FsbCgpOworICAgIAk8L2hhbmRsZXI+CisgICAgCQorICAgIAk8IS0tCisgICAgCXB1YmxpYyBMaXN0PExkYXBDb25maWc+IGdldEFjdGl2ZUxkYXBDb25maWdzKCkgCisgICAgCSAtLT4KKyAgICAgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iZ2V0QWN0aXZlTGRhcENvbmZpZ3MiIGZ1bmNuYW1lPSJsZGFwY29uZmlnc2VydmljZS5nZXRBY3RpdmVMZGFwQ29uZmlncyIgCisgICAgCQkJCSAgICAgICAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gICAgICAKKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgICAgIC8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisgICAgICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJnZXRBY3RpdmVMZGFwQ29uZmlnczogIix2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5sZW5ndGggPiAxKSB7CisgICAgICAgICAgICAgICAgICAgIAlwYXJlbnQucGFyZW50LmRvbWFpbl9sYWJlbC5zZXRBdHRyaWJ1dGUoInZpc2libGUiLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgCXBhcmVudC5wYXJlbnQuZG9tYWluLnNldEF0dHJpYnV0ZSgidmlzaWJsZSIsIHRydWUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5hZGRJdGVtKHZhbHVlW2ldLm5hbWUsdmFsdWVbaV0ubGRhcENvbmZpZ0lkKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSBjYW52YXMuZ2V0VXNlckRhdGEoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGdbInVzZXJkb21haW4iXSE9bnVsbCkgeworICAgICAgICAgICAgICAgICAgICAJCisgICAgICAgICAgICAgICAgICAgIAl2YXIgdEl0ZW0gPSBwYXJlbnQuZ2V0SXRlbShnWyJ1c2VyZG9tYWluIl0pOworICAgICAgICAgICAgICAgICAgICAJaWYgKHRJdGVtICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuc2VsZWN0SXRlbShnWyJ1c2VyZG9tYWluIl0pOworICAgICAgICAgICAgICAgICAgICAJfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgCQlwYXJlbnQuc2VsZWN0SXRlbUF0KDApOworICAgICAgICAgICAgICAgICAgICAJfQorICAgICAgICAgICAgICAgICAgICAJCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuc2VsZWN0SXRlbUF0KDApOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBwYXJlbnQucGFyZW50LmdldExvZ2luT3B0aW9ucy5kb0NhbGwoKTsKKyAgICAgICAgICAgICAgICBdXT4KKyAgICAgICAgICAgIDwvaGFuZGxlcj4gIAorICAgICAgICA8L25ldFJlbW90ZUNhbGxIaWI+ICAgICAgICAgCSAKKyAgICAJCisgICAgPC9yZXNldENvbWJvYm94PiAgICAgICAgCisKKyAgICA8bGFiZWxUZXh0IG5hbWU9Im9yZ2FuaXNhdGlvbl9sYWJlbF9pbmZvIiBsYWJlbGlkPSI2MTciIHdpZHRoPSIzNTAiIAorICAgICAgICAgICAgICAgbXVsdGlsaW5lPSJ0cnVlIiB5PSIyMiIgcmVzaXplPSJmYWxzZSIgeD0iMiIgdmlzaWJsZT0iZmFsc2UiIC8+ICAgICAKKyAgICAKKyAgICA8bGFiZWxUZXh0IG5hbWU9Im9yZ2FuaXNhdGlvbl9sYWJlbCIgbGFiZWxpZD0iMTg0IiB3aWR0aD0iMzAwIiB5PSI4NiIgCisgICAgCQkJcmVzaXplPSJmYWxzZSIgeD0iMiIgdmlzaWJsZT0iZmFsc2UiIGZvbnRzdHlsZT0iYm9sZCIgLz4gICAgIAorICAgICAgICA8cmVzZXRDb21ib2JveCBuYW1lPSJvcmdhbmlzYXRpb24iIHk9Ijg0IiB4PSIxODAiIHdpZHRoPSIyNzAiIGVkaXRhYmxlPSJmYWxzZSIgdmlzaWJsZT0iZmFsc2UiIC8+CisgICAgICAgIAorICAgIDxzaW1wbGVMYWJlbEJ1dHRvbiBsYWJlbGlkPSIxMjMiIG5hbWU9Il9yZWdpc3RlciIgd2lkdGg9IjE2MCIgeT0iJG9uY2V7IHBhcmVudC5oZWlnaHQtNDAgfSIgCisgICAgICAgIHZpc2libGU9ImZhbHNlIiB4PSIxMCIgaGVpZ2h0PSIyMiI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorCSAgICAgICAgPCFbQ0RBVEFbCisJICAgICAgICAgICAgdGhpcy5wYXJlbnQuX3JlZ2lzdGVyLnNldEF0dHJpYnV0ZSgndmlzaWJsZScsZmFsc2UpOworCSAgICAgICAgICAgIGlmICh0aGlzLnBhcmVudC5jaGlsZE9iaiAhPSBudWxsKSB7CisJICAgICAgICAgICAgCXRoaXMucGFyZW50LmNoaWxkT2JqLmRlc3Ryb3koKTsKKwkgICAgICAgICAgICB9CisJICAgICAgICAgICAgdGhpcy5wYXJlbnQuY2hpbGRPYmogPSBuZXcgbHoucmVnaXN0ZXJOZXdVc2VyKGNhbnZhcyx7CisJICAgICAgICAgICAgCQkJCQkJCQkJcmVmT2JqOnRoaXMucGFyZW50LAorCSAgICAgICAgICAgIAkJCQkJCQkJCXVzZXJfbG9naW5fbWluaW11bV9sZW5ndGg6cGFyZW50LnVzZXJfbG9naW5fbWluaW11bV9sZW5ndGgsCisJICAgICAgICAgICAgCQkJCQkJCQkJdXNlcl9wYXNzX21pbmltdW1fbGVuZ3RoOnBhcmVudC51c2VyX3Bhc3NfbWluaW11bV9sZW5ndGgKKwkgICAgICAgICAgICAJCQkJCQkJCX0pOworICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICA8L3NpbXBsZUxhYmVsQnV0dG9uPiAgICAgCisgICAgCisgICAgPHNpbXBsZUxhYmVsQnV0dG9uIGxhYmVsaWQ9IjEyOTQiIG5hbWU9Il9mYWNlYm9vayIgd2lkdGg9IjE2MCIgeT0iJG9uY2V7IHBhcmVudC5oZWlnaHQtNDAgfSIgCisgICAgICAgICAgICB2aXNpYmxlPSJmYWxzZSIgeD0iMjAwIiBoZWlnaHQ9IjIyIj4KKyAgICAJPGltYWdlIHNyYz0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUltYWdlKCdpY29uX2ZhY2Vib29rX3JzY19wbmcnKSB9IiB4PSIyIiB5PSIxIiAvPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgIGx6LkJyb3dzZXIubG9hZFVSTCgiaHR0cDovL2FwcHMuZmFjZWJvb2suY29tL29wZW5tZWV0aW5ncy8iLCJfcGFyZW50Iik7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSIxMjk1IiAvPgorICAgIDwvc2ltcGxlTGFiZWxCdXR0b24+ICAgICAgIAorICAgICAgICAKKyAgICA8c2ltcGxlTGFiZWxCdXR0b24gbmFtZT0iYjIiIGxhYmVsaWQ9IjExMiIgd2lkdGg9IjEyMCIgeD0iMzMwIiAKKyAgICAJCQkJICAgeT0iJG9uY2V7IHBhcmVudC5oZWlnaHQtNDAgfSIgaGVpZ2h0PSIyMiI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siID4KKyAgICAgICAgICAgIHRoaXMucGFyZW50LmVycm9ybWVzcy5zZXRBdHRyaWJ1dGUoJ3RleHQnLCcnKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHRoaXMucGFyZW50LnVzZXJwYXNzLmdldFRleHQoKS5sZW5ndGggPT0gMCkgeworICAgICAgICAgICAgCW5ldyBsei5ycGNFcnJvckRpYWxvZyhjYW52YXMubWFpbl9jb250ZW50Ll9jb250ZW50LmlubmVyLHtlcnJvcmlkOi01MX0pOworICAgICAgICAgICAgCXJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5wYXJlbnQubG9naW5Vc2VyLmRvQ2FsbCgpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9zaW1wbGVMYWJlbEJ1dHRvbj4gICAKKyAgICAgICAgCisgICAgPHNpbXBsZUxhYmVsQnV0dG9uIG5hbWU9ImIzIiBsYWJlbGlkPSIxODUiIHdpZHRoPSIxMjAiIHg9IjMzMCIgeT0iJG9uY2V7IHBhcmVudC5oZWlnaHQtNDAgfSIKKyAgICAgICAgICAgIHZpc2libGU9ImZhbHNlIiBoZWlnaHQ9IjIyIj4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICB2YXIgb3JnSW5kZXhJZCA9IE51bWJlcihwYXJlbnQub3JnYW5pc2F0aW9uLmdldFZhbHVlKCkpOworICAgICAgICAgICAgaGliLmN1cnJlbnRkb21haW4gPSBoaWIudXNlcm9iamVjdC5vcmdhbmlzYXRpb25fdXNlcnNbb3JnSW5kZXhJZF0ub3JnYW5pc2F0aW9uLm5hbWU7CisgICAgICAgICAgICBoaWIuY3VycmVudGRvbWFpbk9iaiA9IGhpYi51c2Vyb2JqZWN0Lm9yZ2FuaXNhdGlvbl91c2Vyc1tvcmdJbmRleElkXS5vcmdhbmlzYXRpb247CisgICAgICAgICAgICBoaWIuc2V0Q3VycmVudFVzZXJPcmdhbml6YXRpb24uZG9DYWxsKCk7CisgICAgICAgICAgICBoaWIuZ2V0TGFuZ3VhZ2VCeUlkQW5kTWF4LnN0YXJ0ID0gMDsKKyAgICAgICAgICAgIGhpYi5nZXRMYW5ndWFnZUJ5SWRBbmRNYXguZG9DYWxsKCk7CisgICAgICAgICAgICBwYXJlbnQuY2xvc2UoKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgIDwvc2ltcGxlTGFiZWxCdXR0b24+ICAgIAorICAgIAorICAgIDx0ZXh0IG5hbWU9ImVycm9ybWVzcyIgcmVzaXplPSJ0cnVlIiB5PSIxNjgiIHg9IjIiIGZnY29sb3I9InJlZCIgZm9udHNpemU9IjExIi8+CisKKyAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJsb2dpblVzZXIiIGZ1bmNuYW1lPSJ4bWxjcm0ubG9naW5Vc2VyIiAKKyAgICAgICAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iIGFjdGl2ZUVycm9ySGFuZGxlcj0idHJ1ZSIgPiAgIAorICAgICAgICA8YXR0cmlidXRlIG5hbWU9InNpcExvYWRlciIgdmFsdWU9Im51bGwiLz4gICAKKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gY2FudmFzLnNlc3Npb25JZDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4gIAorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBwYXJlbnQucGFyZW50LnVzZXJuYW1lLmdldFRleHQoKTsgPC9tZXRob2Q+PC9uZXRwYXJhbT4gIAorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBwYXJlbnQucGFyZW50LnVzZXJwYXNzLmdldFRleHQoKTsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBhcmVudC5fc2F2ZWxvZ2luZGF0YS5nZXRWYWx1ZSgpOyA8L21ldGhvZD48L25ldHBhcmFtPiAKKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gbnVsbDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4gCisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIE51bWJlcihwYXJlbnQucGFyZW50LmRvbWFpbi5nZXRWYWx1ZSgpKTsgPC9tZXRob2Q+PC9uZXRwYXJhbT4gCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorICAgICAgICAgICAgCWlmICgkZGVidWcpIHsKKyAgICAgICAgICAgICAgICAgICAgRGVidWcud3JpdGUoImxvZ2luVXNlcjogIiwgdmFsdWUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAkKKyAgICAgICAgICAgICAgICBpZiAoISh2YWx1ZTwwKSl7CisgICAgICAgICAgICAgICAgCWlmICghaXNOYU4oTnVtYmVyKHZhbHVlLmxhbmd1YWdlX2lkKSkpIHsKKyAgICAgICAgICAgICAgICAgICAgCWhpYi51c2VybGFuZyA9IE51bWJlcih2YWx1ZS5sYW5ndWFnZV9pZCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIHZhciBnID0gY2FudmFzLmdldFVzZXJEYXRhKCk7CisgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnBhcmVudC5fc2F2ZWxvZ2luZGF0YS5nZXRWYWx1ZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBnWyJ1c2VybmFtZSJdID0gcGFyZW50LnVzZXJuYW1lLmdldFRleHQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdbInVzZXJwYXNzIl0gPSBwYXJlbnQudXNlcnBhc3MuZ2V0VGV4dCgpOworICAgICAgICAgICAgICAgICAgICAgICAgZ1sidXNlcmxhbmciXSA9IGhpYi51c2VybGFuZzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdbInVzZXJkb21haW4iXSA9IHBhcmVudC5kb21haW4uZ2V0VmFsdWUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdbInNhdmV1c2VyZGF0YSJdPXRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBnWyJzdG9yZWRTZXNzaW9uIl0gPSBjYW52YXMuc2Vzc2lvbklkOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgZ1sidXNlcm5hbWUiXSA9ICcnOworICAgICAgICAgICAgICAgICAgICAgICAgZ1sidXNlcnBhc3MiXSA9ICcnOworICAgICAgICAgICAgICAgICAgICAgICAgZ1sidXNlcmxhbmciXSA9IG51bGw7CisgICAgICAgICAgICAgICAgICAgICAgICBnWyJ1c2VyZG9tYWluIl0gPSBudWxsOworICAgICAgICAgICAgICAgICAgICAgICAgZ1sic2F2ZXVzZXJkYXRhIl09ZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBnWyJzdG9yZWRTZXNzaW9uIl0gPSAiIjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBjYW52YXMuc2V0VXNlckRhdGEoZyk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5zZXRBdHRyaWJ1dGUoJ3VzZXJfaWQnLHZhbHVlLnVzZXJfaWQpOworICAgICAgICAgICAgICAgICAgICBjYW52YXMuc2V0QXR0cmlidXRlKCdmaXJzdE5hbWUnLHZhbHVlLmZpcnN0bmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5zZXRBdHRyaWJ1dGUoJ2xhc3ROYW1lJyx2YWx1ZS5sYXN0bmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5zZXRBdHRyaWJ1dGUoJ21haWwnLCcnKTsKKyAgICAgICAgICAgICAgICAgICAgY2FudmFzLnNldEF0dHJpYnV0ZSgnbGFzdExvZ2luJywnJyk7CisgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5zZXRBdHRyaWJ1dGUoJ29mZmljaWFsX2NvZGUnLCcnKTsKKyAgICAgICAgICAgICAgICAgICAgY2FudmFzLnNldEF0dHJpYnV0ZSgncGljdHVyZV91cmknLCcnKTsKKyAgICAgICAgICAgICAgICAgICAgY2FudmFzLnNldEF0dHJpYnV0ZSgndXNlcmxhbmcnLCBoaWIudXNlcmxhbmcpOworICAgICAgICAgICAgICAgICAgICBjYW52YXMuc2V0QXR0cmlidXRlKCdsYW5ndWFnZV9pZCcsIGhpYi51c2VybGFuZyk7CisgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5zZXRBdHRyaWJ1dGUoJ2xhbmd1YWdlJywnJyk7CisgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5zZXRBdHRyaWJ1dGUoJ2N1cnJlbnR1c2VyJyx2YWx1ZS5sb2dpbik7CisgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5vbVRpbWVab25lICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5zZXRBdHRyaWJ1dGUoJ2pOYW1lVGltZVpvbmUnLHZhbHVlLm9tVGltZVpvbmUuam5hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzLnRpbWVab25lSWQgPSB2YWx1ZS5vbVRpbWVab25lLm9tdGltZXpvbmVJZDsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLmZvcmNlVGltZVpvbmVDaGVjaykgeworICAgICAgICAgICAgICAgICAgICAJbmV3IGx6LmxhYmVsZXJyb3JQb3B1cChjYW52YXMse2Vycm9ybGFiZWxpZDoxMTUwfSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5sZXZlbF9pZCA+PSAyKSB7CisgICAgICAgICAgICAgICAgICAgIAljYW52YXMuYmVjb21lbW9kZXJhdG9yID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5iZWNvbWVtb2RlcmF0b3IgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInZhbHVlLm9yZ2FuaXNhdGlvbl91c2VycyAiLHZhbHVlLm9yZ2FuaXNhdGlvbl91c2Vycyk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBoaWIudXNlcm9iamVjdCA9IHZhbHVlOworICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUub3JnYW5pc2F0aW9uX3VzZXJzLmxlbmd0aD09MCl7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53YXJuKCJ0aGlzIHVzZXIgaGFzIG5vIE9yZ2FuaXNhdGlvbiAiKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS5vcmdhbmlzYXRpb25fdXNlcnMubGVuZ3RoPT0xKXsKKyAgICAgICAgICAgICAgICAgICAgICAgIGhpYi5jdXJyZW50ZG9tYWluID0gdmFsdWUub3JnYW5pc2F0aW9uX3VzZXJzWzBdLm9yZ2FuaXNhdGlvbi5uYW1lOworICAgICAgICAgICAgICAgICAgICAgICAgaGliLmN1cnJlbnRkb21haW5PYmogPSB2YWx1ZS5vcmdhbmlzYXRpb25fdXNlcnNbMF0ub3JnYW5pc2F0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgaGliLnNldEN1cnJlbnRVc2VyT3JnYW5pemF0aW9uLmRvQ2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgaGliLmdldExhbmd1YWdlQnlJZEFuZE1heC5zdGFydCA9IDA7CisgICAgICAgICAgICAgICAgICAgIAloaWIuZ2V0TGFuZ3VhZ2VCeUlkQW5kTWF4LmRvQ2FsbCgpOworICAgICAgICAgICAgICAgICAgICAJY2FudmFzLmZvY3VzT25JdGVtID0gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5jbG9zZSgpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Ll9zYXZlbG9naW5kYXRhLnNldEF0dHJpYnV0ZSgndmlzaWJsZScsZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Lm4xLnNldEF0dHJpYnV0ZSgndmlzaWJsZScsZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LnVzZXJuYW1lLnNldEF0dHJpYnV0ZSgndmlzaWJsZScsZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Lm4yLnNldEF0dHJpYnV0ZSgndmlzaWJsZScsZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LnVzZXJwYXNzLnNldEF0dHJpYnV0ZSgndmlzaWJsZScsZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Ll9yZWdpc3Rlci5zZXRBdHRyaWJ1dGUoJ3Zpc2libGUnLGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5iMi5zZXRBdHRyaWJ1dGUoJ3Zpc2libGUnLGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC50ZXN0aW5nLnNldEF0dHJpYnV0ZSgndmlzaWJsZScsZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Lm9yZ2FuaXNhdGlvbl9sYWJlbF9pbmZvLnNldEF0dHJpYnV0ZSgndmlzaWJsZScsdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQub3JnYW5pc2F0aW9uX2xhYmVsLnNldEF0dHJpYnV0ZSgndmlzaWJsZScsdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQub3JnYW5pc2F0aW9uLnNldEF0dHJpYnV0ZSgndmlzaWJsZScsdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuYjMuc2V0QXR0cmlidXRlKCd2aXNpYmxlJyx0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5kb21haW5fbGFiZWwuc2V0QXR0cmlidXRlKCd2aXNpYmxlJyxmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuZG9tYWluLnNldEF0dHJpYnV0ZSgndmlzaWJsZScsZmFsc2UpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8dmFsdWUub3JnYW5pc2F0aW9uX3VzZXJzLmxlbmd0aDtpKyspeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5vcmdhbmlzYXRpb24uYWRkSXRlbSh2YWx1ZS5vcmdhbmlzYXRpb25fdXNlcnNbaV0ub3JnYW5pc2F0aW9uLm5hbWUsU3RyaW5nKGkpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5vcmdhbmlzYXRpb24uc2VsZWN0SXRlbShTdHJpbmcoaS0xKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4gIAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvblNpcFN1Y2Nlc3MiPgorICAgICAgICAJdGhpcy5zaXBMb2FkZXIuZGVzdHJveSgpOworICAgICAgICAJaGliLmdldExhbmd1YWdlQnlJZEFuZE1heC5kb0NhbGwoKTsKKyAgICAgICAgICAgIGNhbnZhcy5mb2N1c09uSXRlbSA9IG51bGw7CisgICAgICAgICAgICBwYXJlbnQuY2xvc2UoKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4KKyAgICAKKyAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJnZXRMb2dpbk9wdGlvbnMiIGZ1bmNuYW1lPSJ4bWxjcm0uZ2V0TG9naW5PcHRpb25zIiByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAgICAgIAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgIC8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisgICAgICAgICAgICAvL0RlYnVnLndyaXRlKCJhbGxvd0Zyb250ZW5kUmVnaXN0ZXI6ICIsdmFsdWUpOworICAgICAgICAgICAgaWYgKHZhbHVlWzBdLmNvbmZfdmFsdWU9PTEpeworICAgICAgICAgICAgICAgIHBhcmVudC5fcmVnaXN0ZXIuc2V0QXR0cmlidXRlKCd2aXNpYmxlJyx0cnVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh2YWx1ZVsxXS5jb25mX3ZhbHVlPT0xKXsKKyAgICAgICAgICAgICAgICBwYXJlbnQuX2ZhY2Vib29rLnNldEF0dHJpYnV0ZSgndmlzaWJsZScsdHJ1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodmFsdWVbNV0uY29uZl92YWx1ZSA+IDApeworICAgICAgICAgICAgICAgIHBhcmVudC5kb21haW4uc2VsZWN0SXRlbUF0KHZhbHVlWzVdLmNvbmZfdmFsdWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcGFyZW50LnVzZXJfbG9naW5fbWluaW11bV9sZW5ndGggPSBOdW1iZXIodmFsdWVbMl0uY29uZl92YWx1ZSk7CisgICAgICAgICAgICBwYXJlbnQudXNlcl9wYXNzX21pbmltdW1fbGVuZ3RoID0gTnVtYmVyKHZhbHVlWzNdLmNvbmZfdmFsdWUpOworICAgICAgICA8L2hhbmRsZXI+ICAKKyAgICA8L25ldFJlbW90ZUNhbGxIaWI+ICAgIAorICAgIAorICAgIDxsYWJlbENoZWNrYm94IHg9IjE4MCIgeT0iOTYiIGZvbnRzaXplPSIxMSIKKyAgICAgICAgCW5hbWU9Il9zYXZlbG9naW5kYXRhIiBsYWJlbGlkPSIyODgiID4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAgICAgICAgIHZhciBnID0gY2FudmFzLmdldFVzZXJEYXRhKCk7CisgICAgICAgICAgICBpZigkZGVidWcpIERlYnVnLndyaXRlKCJjaGVja0xvZ2luRGF0YS9nOiAiLGcpOworICAgICAgICAgICAgdmFyIHNhdmUgPSBnWyJzYXZldXNlcmRhdGEiXTsKKyAgICAgICAgICAgIGlmKCRkZWJ1ZykgRGVidWcud3JpdGUoImNoZWNrTG9naW5EYXRhL3NhdmU6ICIsc2F2ZSk7CisgICAgICAgICAgICBpZihzYXZlKSB0aGlzLnNldFZhbHVlKHRydWUpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9sYWJlbENoZWNrYm94PiAgCisgICAgCisgICAgPGxhYmVsVGV4dCBuYW1lPSJ0ZXN0aW5nIiB5PSI5NiIgeD0iJHsgcGFyZW50LndpZHRoLTEwLXRoaXMud2lkdGggfSI+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ibGluayIgdHlwZT0ic3RyaW5nIiB2YWx1ZT0iIiAvPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgIGx6LkJyb3dzZXIubG9hZFVSTCh0aGlzLmxpbmssIl9ibGFuayIpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAJCQl0aGlzLnNldEF0dHJpYnV0ZSgndGV4dCcsdGhpcy5mb3JtYXRMaW5rVGV4dChjYW52YXMuZ2V0TGFiZWxOYW1lKDE1MjcpKSk7CisgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnbGluaycsY2FudmFzLmdldFRlc3RpbmdVcmwoKSk7ICAKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8bWV0aG9kIG5hbWU9ImZvcm1hdExpbmtUZXh0IiBhcmdzPSJ0ZXh0Ij4KKwkgICAgICAgIDwhW0NEQVRBWworCSAgICAgICAgICAgIHJldHVybiAiPHU+PEZPTlQgY29sb3I9JyMwMDAwQ0MnPiIrdGV4dCsiPC9GT05UPjwvdT4iOworCSAgICAgICAgXV0+CisJICAgIDwvbWV0aG9kPiAgICAKKyAgICA8L2xhYmVsVGV4dD4KKworICAgIDxsYWJlbFRleHQgYWxpZ249InJpZ2h0IiByZXNpemU9InRydWUiIHZhbGlnbj0iYm90dG9tIiA+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgndGV4dCcsIjx1PjxGT05UIGNvbG9yPScjMDAwMENDJz4iICsgY2FudmFzLmdldExhYmVsTmFtZSgxMzczKSArICIgIisgY2FudmFzLmN1cnJlbnRhcHBuYW1lICsiPC9GT05UPjwvdT4iKTsKKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgbHouQnJvd3Nlci5sb2FkVVJMKGNhbnZhcy5jdXJyZW50YXBwbmFtZXVybCwiX2JsYW5rIik7CisgICAgICAgIDwvaGFuZGxlcj4gICAgICAgIAorICAgIDwvbGFiZWxUZXh0PgorICAgIAorICAgIDxsYWJlbFRleHQgYWxpZ249ImxlZnQiIHJlc2l6ZT0idHJ1ZSIgdmFsaWduPSJib3R0b20iPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3RleHQnLCI8dT48Rk9OVCBjb2xvcj0nIzAwMDBDQyc+IisgY2FudmFzLmdldExhYmVsTmFtZSgzMTEpICsiPC9GT05UPjwvdT4iKTsKKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ic2hvd1Jlc2V0Qm94IiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgaWYgKCF0aGlzLnNob3dSZXNldEJveCl7CisgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQuc2hvd1Jlc2V0Rm9ybS5zZXRBdHRyaWJ1dGUoJ3N0YXJ0ZWQnLCB0cnVlKTsKKyAgICAgICAgICAgICAgICB0aGlzLnNob3dSZXNldEJveCA9IHRydWU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LmRpc2FibGVSZXNldEZvcm0uc2V0QXR0cmlidXRlKCdzdGFydGVkJywgdHJ1ZSk7CisgICAgICAgICAgICAgICAgdGhpcy5zaG93UmVzZXRCb3ggPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9oYW5kbGVyPiAgICAgICAKKyAgICA8L2xhYmVsVGV4dD4gICAgICAgIAorICAgIAorICAgIDxtZXRob2QgbmFtZT0iY3JlYXRlUmVzZXQiIGFyZ3M9InZhbHVlIj4KKyAgICAgICB2YXIgcmVzZXRGPW5ldyBsei5yZXNldEZvcm0odmFsdWUse25hbWU6J19yZXNldEZvcm0nfSk7CisgICAgICAgbHouS2V5cy5yZW1vdmVLZXlDb21ib0NhbGwodGhpcy5wcmVzc0VudGVyLCBbImVudGVyIl0pOworICAgICAgIHRoaXMucHJlc3NFbnRlciA9IG5ldyBMekRlbGVnYXRlKHJlc2V0RiwgInJlc2V0Iik7CisgICAgICAgbHouS2V5cy5jYWxsT25LZXlDb21ibyh0aGlzLnByZXNzRW50ZXIsIFsiZW50ZXIiXSk7CisgICAgPC9tZXRob2Q+CisgICAgPG1ldGhvZCBuYW1lPSJkZXN0cm95UmVzZXQiIGFyZ3M9InZhbHVlIj4KKyAgICAgICB2YWx1ZS5fcmVzZXRGb3JtLmRlc3Ryb3koKTsKKyAgICAgICBsei5LZXlzLnJlbW92ZUtleUNvbWJvQ2FsbCh0aGlzLnByZXNzRW50ZXIsIFsiZW50ZXIiXSk7CisgICAgICAgdGhpcy5wcmVzc0VudGVyID0gbmV3IEx6RGVsZWdhdGUodmFsdWUsICJsb2dpbiIpOworICAgICAgIGx6LktleXMuY2FsbE9uS2V5Q29tYm8odGhpcy5wcmVzc0VudGVyLCBbImVudGVyIl0pOworICAgIDwvbWV0aG9kPgorCisgICAgPGFuaW1hdG9yIG5hbWU9ImRvcmVzZXQiIGF0dHJpYnV0ZT0ieCIgdG89IiRvbmNleyBjYW52YXMud2lkdGgvMiAtIHBhcmVudC53aWR0aC8yIH0iIAorICAgICAgICAgICAgICBkdXJhdGlvbj0iMTAwMCIgc3RhcnRlZD0iZmFsc2UiIC8+CisgICAgCisgICAgPGFuaW1hdG9yIG5hbWU9InNob3dSZXNldEZvcm0iIGF0dHJpYnV0ZT0iaGVpZ2h0IiB0bz0iMzcwIiBkdXJhdGlvbj0iMTAwMCIgCisgICAgICAgIG9uc3RvcD0icGFyZW50LmNyZWF0ZVJlc2V0KHBhcmVudCkiIHN0YXJ0ZWQ9ImZhbHNlIiAvPgorICAgIDxhbmltYXRvciBuYW1lPSJkaXNhYmxlUmVzZXRGb3JtIiBhdHRyaWJ1dGU9ImhlaWdodCIgdG89IjIzMCIgZHVyYXRpb249IjEwMDAiIAorICAgICAgICBvbnN0YXJ0PSJwYXJlbnQuZGVzdHJveVJlc2V0KHBhcmVudCk7IiBzdGFydGVkPSJmYWxzZSIgLz4gICAgCisKKzwvY2xhc3M+CisgICAgCisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvYXV0aC9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvYXV0aC9saWJyYXJ5Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjcxZTY2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9hdXRoL2xpYnJhcnkubHp4CkBAIC0wLDAgKzEsMjkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPCFET0NUWVBFIGxpYnJhcnkgU1lTVEVNICIvcHJvamVjdC5kdGQiPgorPGxpYnJhcnkgPgorICAgIAorCTxpbmNsdWRlIGhyZWY9InJlc2V0Rm9ybS5sengiIC8+CisgICAgPGluY2x1ZGUgaHJlZj0iY2hlY2tMb2dpbkRhdGEubHp4IiAvPgorICAgIDxpbmNsdWRlIGhyZWY9InJlZ2lzdGVyTmV3VXNlci5sengiIC8+CisJPGluY2x1ZGUgaHJlZj0icmVzZXRQYXNzd29yZC5sengiIC8+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvYXV0aC9yZWdpc3Rlck5ld1VzZXIubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9hdXRoL3JlZ2lzdGVyTmV3VXNlci5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGVhNDA4OQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvYXV0aC9yZWdpc3Rlck5ld1VzZXIubHp4CkBAIC0wLDAgKzEsMjI0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8Y2xhc3MgbmFtZT0icmVnaXN0ZXJOZXdVc2VyIiBleHRlbmRzPSJsYWJlbEV4cGxvcmVyQm94IiBsYWJlbGlkPSIxMTMiCisgICAgZG9ja2luZz0idHJ1ZSIgcmVzaXplYWJsZT0iZmFsc2UiIGNsb3NhYmxlPSJmYWxzZSIgd2lkdGg9IjUwMCIgCisgICAgeD0iJG9uY2V7IGNhbnZhcy53aWR0aC8yIC0gdGhpcy53aWR0aC8yIH0iIHk9Ii0zNzAiIGhlaWdodD0iMzYwIj4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9InJlZk9iaiIgdmFsdWU9Im51bGwiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJyZWdPYmplY3QiIHZhbHVlPSJudWxsIiAvPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0idXNlcl9sb2dpbl9taW5pbXVtX2xlbmd0aCIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0iNCIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9InVzZXJfcGFzc19taW5pbXVtX2xlbmd0aCIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0iNCIgLz4KKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgIAk8IVtDREFUQVsKKyAgICAgICAgICAgIHZhciBwcmVzc0VudGVyID0gbmV3IEx6RGVsZWdhdGUodGhpcywgInJlZ2lzdGVyIik7CisgICAgICAgICAgICBsei5LZXlzLmNhbGxPbktleUNvbWJvKHByZXNzRW50ZXIsIFsiZW50ZXIiXSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGdldFRpbWVab25lT2Zmc2V0KHRoaXMpOworICAgICAgICAgICAgCisgICAgICAgIF1dPgorICAgIDwvaGFuZGxlcj4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImNhbGxiYWNrIiBhcmdzPSJyZXR1cm5WYWx1ZSI+CisgICAgCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJnZXRUaW1lWm9uZU9mZnNldCBjYWxsYmFjayAiLHJldHVyblZhbHVlKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgdmFyIHN0ZF90aW1lX29mZnNldCA9IE51bWJlcihyZXR1cm5WYWx1ZSk7CisgICAgICAgIAorICAgICAgICB0aGlzLnNldE9mZnNldChzdGRfdGltZV9vZmZzZXQpOworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0ic2V0T2Zmc2V0IiBhcmdzPSJzdGRfdGltZV9vZmZzZXQiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgc3RkX3RpbWVfb2Zmc2V0ID0gTWF0aC5yb3VuZChzdGRfdGltZV9vZmZzZXQpOworICAgICAgICB2YXIgdGltZVpvbmVKYXZhRm9ybWF0ID0gIkV0Yy9HTVQiOworICAgICAgICBpZiAoc3RkX3RpbWVfb2Zmc2V0ID4gMCkgeworICAgICAgICAgICAgdGltZVpvbmVKYXZhRm9ybWF0ICs9ICIrIitzdGRfdGltZV9vZmZzZXQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aW1lWm9uZUphdmFGb3JtYXQgKz0gIi0iK3N0ZF90aW1lX29mZnNldDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInRpbWVab25lSmF2YUZvcm1hdCA6OiAiLHRpbWVab25lSmF2YUZvcm1hdCk7CisgICAgICAgIAorICAgICAgICB0aGlzLl90aW1lWm9uZS5zZWxlY3RJdGVtKHRpbWVab25lSmF2YUZvcm1hdCk7CisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPiAgICAKKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbmNsb3NlIj4KKyAgICAJdGhpcy5yZWZPYmouX3JlZ2lzdGVyLnNldEF0dHJpYnV0ZSgndmlzaWJsZScsdHJ1ZSk7CisgICAgICAgIGx6LktleXMuY2FsbE9uS2V5Q29tYm8ocmVmT2JqLnByZXNzRW50ZXIsIFsiZW50ZXIiXSk7CisgICAgCXRoaXMucmVmT2JqLmRvcmVzZXQuc2V0QXR0cmlidXRlKCdzdGFydGVkJywgdHJ1ZSk7CisgICAgPC9oYW5kbGVyPgorICAgIAorCisgICAgPG1ldGhvZCBuYW1lPSJyZWdpc3RlciIgYXJncz0iaXRlbU9iaiI+CisgICAgICAgIHRoaXMucmVnaXN0ZXJCLm9uY2xpY2suc2VuZEV2ZW50KCk7CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIxMTciIHdpZHRoPSIzMDAiIHk9IjQyIiByZXNpemU9ImZhbHNlIiB4PSIyIi8+CisgICAgICAgIDxjdXN0b21FZGl0dGV4dCBuYW1lPSJmaXJzdG5hbWUiIHk9IjQyIiB4PSIxMjAiIHdpZHRoPSIzNzAiIHRleHQ9IiI+CisgICAgICAgIAk8aGFuZGxlciBuYW1lPSJvbnZhbHVlIiBhcmdzPSJ0eHQiPgorICAgICAgICAJCXBhcmVudC51c2VybmFtZS5zZXRBdHRyaWJ1dGUoInRleHQiLHR4dCsiLiIrcGFyZW50Lmxhc3RuYW1lLnRleHQpOworICAgICAgICAJPC9oYW5kbGVyPgorICAgICAgICA8L2N1c3RvbUVkaXR0ZXh0PgorICAgICAgICAKKyAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjExOCIgd2lkdGg9IjMwMCIgeT0iNzIiIHJlc2l6ZT0iZmFsc2UiIHg9IjIiLz4KKyAgICAgICAgPGN1c3RvbUVkaXR0ZXh0IG5hbWU9Imxhc3RuYW1lIiB5PSI3MiIgeD0iMTIwIiB3aWR0aD0iMzcwIiB0ZXh0PSIiPgorICAgICAgICAJPGhhbmRsZXIgbmFtZT0ib252YWx1ZSIgYXJncz0idHh0Ij4KKyAgICAgICAgCQlwYXJlbnQudXNlcm5hbWUuc2V0QXR0cmlidXRlKCJ0ZXh0IixwYXJlbnQuZmlyc3RuYW1lLnRleHQrIi4iK3R4dCk7CisgICAgICAgIAk8L2hhbmRsZXI+CisgICAgICAgIDwvY3VzdG9tRWRpdHRleHQ+CisgICAgICAgIAorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMTE0IiB3aWR0aD0iMzAwIiB5PSIxMDIiIHJlc2l6ZT0iZmFsc2UiIHg9IjIiLz4KKyAgICAgICAgPGN1c3RvbUVkaXR0ZXh0IG5hbWU9InVzZXJuYW1lIiB5PSIxMDIiIHg9IjEyMCIgd2lkdGg9IjM3MCIgdGV4dD0iIiAvPgorCisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIxMTUiIHdpZHRoPSIzMDAiIHk9IjEzMiIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPgorICAgICAgICA8Y3VzdG9tRWRpdHRleHQgbmFtZT0idXNlcnBhc3MxIiB5PSIxMzIiIHBhc3N3b3JkPSJ0cnVlIiB4PSIxMjAiIHdpZHRoPSIzNzAiIHRleHQ9IiIgLz4KKyAgICAgICAgCisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIxMTYiIHdpZHRoPSIzMDAiIHk9IjE2MiIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPgorICAgICAgICA8Y3VzdG9tRWRpdHRleHQgbmFtZT0idXNlcnBhc3MyIiB5PSIxNjIiIHBhc3N3b3JkPSJ0cnVlIiB4PSIxMjAiIHdpZHRoPSIzNzAiIHRleHQ9IiIgLz4KKyAgICAgICAgICAgICAgICAgICAgCisKKyAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjExOSIgd2lkdGg9IjMwMCIgeT0iMTkyIiByZXNpemU9ImZhbHNlIiB4PSIyIi8+CisgICAgICAgIDxjdXN0b21FZGl0dGV4dCBuYW1lPSJlbWFpbCIgeT0iMTkyIiB4PSIxMjAiIHJlZ2V4cFR5cGU9ImVtYWlsIiAKKyAgICAgICAgCQkJCXdpZHRoPSIzNzAiIHRleHQ9IiIgLz4KKyAgICAgICAgCQkJCQorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMTE0MyIgd2lkdGg9IjMwMCIgeT0iMjIyIiByZXNpemU9ImZhbHNlIiB4PSIyIi8+CisgICAgICAgICA8cmVzZXRDb21ib2JveCBuYW1lPSJfdGltZVpvbmUiIGVkaXRhYmxlPSJmYWxzZSIgeT0iMjIyIiB3aWR0aD0iMzcwIiB4PSIxMjAiCisgICAgICAgICAgICAgICAgICAgICAgIGZvbnRzaXplPSIxMSIgc3R5bGU9ImNvbXBvbmVudFN0eWxlIj4KKyAgICAgICAgICAgIDxsYWJlbGRUZXh0TGlzdEl0ZW0gZGF0YXBhdGg9InRpbWVab25lU2V0Oi9pdGVtIiB0ZXh0PSIkcGF0aHsgJ2Zyb250RW5kTGFiZWwvdGV4dCgpJyB9IiAKKyAgICAgICAgICAgICAgICB2YWx1ZT0iJHBhdGh7ICdqbmFtZS90ZXh0KCknIH0iIC8+CisgICAgICAgICA8L3Jlc2V0Q29tYm9ib3g+ICAgICAgICAgCQkJCQorICAgICAgICAgCisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIxMjAiIHdpZHRoPSIzMDAiIHk9IjI1MiIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPiAgCisKKwkJPGR5bmFtaWNDb21ib2JveCBuYW1lPSJfc3RhdGUiIHdpZHRoPSIzNzAiIHk9IjI1MiIgeD0iMTIwIiAKKwkJCQkJCSB0ZXh0PSJTd2l0emVybGFuZCIgdmFsdWU9IjIwNCIgLz4KKwkJCisJCTwhLS0KKwkJPHZhbGlkVGV4dCBuYW1lPSJzdGF0ZSIgd2lkdGg9IjM3MCIgeT0iMjIyIiB4PSIxMjAiIGZvbnRzaXplPSIxMSIgCisgICAgICAgICAgICBzaG93bml0ZW1zPSI3IiB2YWxpZGF0ZV9tZXRob2Q9IiRvbmNleyBjYW52YXMudmFsaWRhdGVDb3VudHJ5IH0iIAorICAgICAgICAgICAgcmVzdWx0SWQ9InN0YXRlX2lkIiByZXN1bHROYW1lPSJuYW1lIiAvPiAgICAgICAgCisgICAgICAgICAgICAgLS0+CisgICAgICAgIAorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMTExIiB3aWR0aD0iMzAwIiB5PSIyODIiIHJlc2l6ZT0iZmFsc2UiIHg9IjIiLz4gIAorICAgICAgICAKKyAgICAgICAgPHJlc2V0Q29tYm9ib3ggbmFtZT0ibGFuZ3VhZ2VzIiB3aWR0aD0iMzcwIiB5PSIyODIiIHg9IjEyMCIgZWRpdGFibGU9ImZhbHNlIj4KKyAgICAgICAgICAgIDxsYWJlbGRUZXh0TGlzdEl0ZW0gZGF0YXBhdGg9Imxhbmd1YWdlc1NldDovaXRlbSIgdGV4dD0iJHBhdGh7ICduYW1lL3RleHQoKScgfSIgCisgICAgICAgICAgICAgICAgdmFsdWU9IiRwYXRoeyAnbGFuZ3VhZ2VfaWQvdGV4dCgpJyB9IiAvPgorICAgICAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgICAgICAgICAgdmFyIGcgPSBjYW52YXMuZ2V0VXNlckRhdGEoKTsKKyAgICAgICAgICAgICAgICBpZigkZGVidWcpIERlYnVnLndyaXRlKCJjaGVja0xvZ2luRGF0YS9nOiAiLGcpOworICAgICAgICAgICAgICAgIGlmIChnWyJ1c2VybGFuZyJdIT1udWxsKSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0SXRlbShnWyJ1c2VybGFuZyJdKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEl0ZW0oU3RyaW5nKGNhbnZhcy50aGlzaGliLnVzZXJsYW5nKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIDwvaGFuZGxlcj4gIAorICAgICAgICA8L3Jlc2V0Q29tYm9ib3g+ICAgICAgIAorCisgICAgPHNpbXBsZUxhYmVsQnV0dG9uIG5hbWU9InJlZ2lzdGVyQiIgbGFiZWxpZD0iMTIxIiB3aWR0aD0iMTIwIiB4PSIyNDAiIHk9IjMzMiI+CisgICAgCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgdmFyIHB3ZDEgPSBzdHJ0cmltKHRoaXMucGFyZW50LnVzZXJwYXNzMS5nZXRUZXh0KCkpOworICAgICAgICAgICAgICAgIHZhciBwd2QyID0gc3RydHJpbSh0aGlzLnBhcmVudC51c2VycGFzczIuZ2V0VGV4dCgpKTsgICAKKyAgICAgICAgICAgICAgICB2YXIgbG9naW4gPSBzdHJ0cmltKHRoaXMucGFyZW50LnVzZXJuYW1lLmdldFRleHQoKSk7ICAgICAKKyAgICAgICAgICAgICAgICB2YXIgZW1haWwgPSBzdHJ0cmltKHRoaXMucGFyZW50LmVtYWlsLmdldFRleHQoKSk7IAorICAgICAgICAgICAgICAgIGlmIChwd2QxIT1wd2QyKSB7CisJCQkJCW5ldyBsei5ycGNFcnJvckRpYWxvZyhjYW52YXMse2Vycm9yaWQ6LTZ9KTsKKwkJCQl9IGVsc2UgaWYocHdkMS5sZW5ndGg8cGFyZW50LnVzZXJfcGFzc19taW5pbXVtX2xlbmd0aCAKKwkJCQkJCXx8IGxvZ2luPHBhcmVudC51c2VyX2xvZ2luX21pbmltdW1fbGVuZ3RoKXsKKwkJCQkgICAgdmFyIGFkZEluZm8gPSAiPGJyLz4gIgorCQkJCSAgICAJCQkJCSsgcGFyZW50LnVzZXJfcGFzc19taW5pbXVtX2xlbmd0aCArICIgLyAiIAorCQkJCSAgICAJCQkJCSsgcGFyZW50LnVzZXJfbG9naW5fbWluaW11bV9sZW5ndGg7CisgICAgICAgICAgICAgICAgICAgIG5ldyBsei5ycGNFcnJvckRpYWxvZyhjYW52YXMse2Vycm9yaWQ6LTcsYWRkSW5mbzphZGRJbmZvfSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChlbWFpbD09IiIpIHsKKyAgICAgICAgICAgICAgICAgICAgbmV3IGx6LnJwY0Vycm9yRGlhbG9nKGNhbnZhcyx7ZXJyb3JpZDotNTN9KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5yZWdPYmplY3QgPSBuZXcgQXJyYXkoKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQucmVnT2JqZWN0WyJTSUQiXT1jYW52YXMuc2Vzc2lvbklkOworICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5yZWdPYmplY3RbIlVzZXJuYW1lIl09bG9naW47CisgICAgICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnJlZ09iamVjdFsiVXNlcnBhc3MiXT10aGlzLnBhcmVudC51c2VycGFzczEuZ2V0VGV4dCgpOworICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5yZWdPYmplY3RbImxhc3RuYW1lIl09dGhpcy5wYXJlbnQubGFzdG5hbWUuZ2V0VGV4dCgpOworICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5yZWdPYmplY3RbImZpcnN0bmFtZSJdPXRoaXMucGFyZW50LmZpcnN0bmFtZS5nZXRUZXh0KCk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnJlZ09iamVjdFsiZW1haWwiXT1lbWFpbDsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQucmVnT2JqZWN0WyJqTmFtZVRpbWVab25lIl09dGhpcy5wYXJlbnQuX3RpbWVab25lLmdldFZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnJlZ09iamVjdFsiYWdlIl09MDsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQucmVnT2JqZWN0WyJzdHJlZXQiXT0nJzsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQucmVnT2JqZWN0WyJhZGRpdGlvbmFsbmFtZSJdPScnOworICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5yZWdPYmplY3RbImZheCJdPScnOworICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5yZWdPYmplY3RbInppcCJdPScnOworICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5yZWdPYmplY3RbInN0YXRlc19pZCJdPU51bWJlcih0aGlzLnBhcmVudC5fc3RhdGUuZ2V0VmFsdWUoKSk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnJlZ09iamVjdFsidG93biJdPScnOworICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5yZWdPYmplY3RbImxhbmd1YWdlX2lkIl09dGhpcy5wYXJlbnQubGFuZ3VhZ2VzLmdldFZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5yZWdPYmplY3RbImRvbWFpbiJdPWNhbnZhcy5ydG1waG9zdGxvY2FsOyAKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQucmVnT2JqZWN0WyJwb3J0Il09Y2FudmFzLnJlZDVodHRwcG9ydDsgCisgICAgICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnJlZ09iamVjdFsid2ViYXBwIl09Y2FudmFzLmh0dHBSb290S2V5OyAKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmKCAkZGVidWcgKSBEZWJ1Zy53cml0ZSgicGFyZW50LnJlZ09iamVjdDogIixwYXJlbnQucmVnT2JqZWN0KTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnJlZ2lzdGVyVXNlckJ5T2JqZWN0LmRvQ2FsbCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF1dPgorICAgIAk8L2hhbmRsZXI+CisgICAgPC9zaW1wbGVMYWJlbEJ1dHRvbj4gICAKKyAgICAKKyAgICA8c2ltcGxlTGFiZWxCdXR0b24gbGFiZWxpZD0iMTIyIiB3aWR0aD0iMTIwIiB4PSIzNzAiIHk9IjMzMiI+CisgICAgCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgIAkJdGhpcy5wYXJlbnQuY2xvc2UoKTsKKyAgICAJPC9oYW5kbGVyPgorICAgIDwvc2ltcGxlTGFiZWxCdXR0b24+ICAgCisJCisgICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9InJlZ2lzdGVyVXNlckJ5T2JqZWN0IiBmdW5jbmFtZT0ieG1sY3JtLnJlZ2lzdGVyVXNlckJ5T2JqZWN0IiAKKyAgICAgCXJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiBhY3RpdmVFcnJvckhhbmRsZXI9InRydWUiID4gICAgIAorICAgICAgICA8bmV0cGFyYW0+CisgICAgICAgIAk8bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gCisgICAgICAgIAkJcmV0dXJuIHRoaXMucGFyZW50LnBhcmVudC5yZWdPYmplY3Q7IAorICAgICAgICAJPC9tZXRob2Q+CisgICAgICAgIDwvbmV0cGFyYW0+ICAgICAgICAgICAKKyAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgCTwhW0NEQVRBWworICAgICAgICAgICAgLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZSB0aGUgcnRtcGNvbm5lY3Rpb24KKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJyZWdpc3RlclVzZXJCeU9iamVjdDogIix2YWx1ZSk7CisJCQlpZiAoISh2YWx1ZTwwKSl7CisJCQkJLy9EZWJ1Zy53cml0ZSgic3VjY2Vzc2Z1bGx5IHJlZ2lzdGVyZWQiKTsKKyAgICAgICAgICAgICAgICAgbmV3IGx6LnJwY0Vycm9yRGlhbG9nKGNhbnZhcy5tYWluX2NvbnRlbnQuX2NvbnRlbnQuaW5uZXIse2Vycm9yaWQ6LTE4fSk7CisgICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnJlZk9iai51c2VybmFtZS5zZXRBdHRyaWJ1dGUoJ3RleHQnLHRoaXMucGFyZW50LnVzZXJuYW1lLmdldFRleHQoKSk7CisgICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnJlZk9iai51c2VycGFzcy5zZXRBdHRyaWJ1dGUoJ3RleHQnLHRoaXMucGFyZW50LnVzZXJwYXNzMS5nZXRUZXh0KCkpOworICAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5jbG9zZSgpOworCQkJfSBlbHNlIGlmICh2YWx1ZSA9PSAtNDApIHsKKwkJCQl0aGlzLnBhcmVudC5yZWZPYmoudXNlcm5hbWUuc2V0QXR0cmlidXRlKCd0ZXh0Jyx0aGlzLnBhcmVudC51c2VybmFtZS5nZXRUZXh0KCkpOworICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnJlZk9iai51c2VycGFzcy5zZXRBdHRyaWJ1dGUoJ3RleHQnLHRoaXMucGFyZW50LnVzZXJwYXNzMS5nZXRUZXh0KCkpOworICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LmNsb3NlKCk7CisJCQl9CisJCQldXT4KKyAgICAgICAgIDwvaGFuZGxlcj4gIAorICAgICA8L25ldFJlbW90ZUNhbGxIaWI+CQorICAgICAKKyAgICAgCisgICAgIDxhbmltYXRvciBuYW1lPSJzaG93UmVnRm9ybSIgYXR0cmlidXRlPSJ5IiB0bz0iMTIwIiBkdXJhdGlvbj0iMTAwMCIgc3RhcnRlZD0idHJ1ZSIgLz4KKwkKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvYXV0aC9yZXNldEZvcm0ubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9hdXRoL3Jlc2V0Rm9ybS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmRhNTBmMgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvYXV0aC9yZXNldEZvcm0ubHp4CkBAIC0wLDAgKzEsODggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPCFET0NUWVBFIGxpYnJhcnkgU1lTVEVNICIvcHJvamVjdC5kdGQiPgorPGxpYnJhcnk+CisJCis8IS0tIEZvcm0gc2hvd24gaW4gdGhlIExvZ2luIEJveCAtLT4KKyAgICAKKzxjbGFzcyBuYW1lPSJyZXNldEZvcm0iIGV4dGVuZHM9InZpZXciIHg9IjEwIiB5PSIyMzAiID4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9ImJhc2VVcmwiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKyAgICAKKyAgICA8bGFiZWxUZXh0IG5hbWU9InJlc2V0TGFiZWwiIGxhYmVsaWQ9IjMxMiIgd2lkdGg9IjIwMCIgLz4KKworICAgIDxyYWRpb2dyb3VwIG5hbWU9ImNob29zZVRleHRUeXBlIiBsYXlvdXQ9ImNsYXNzOnNpbXBsZWxheW91dDtheGlzOng7c3BhY2luZzoyIiB5PSIzMCIgPgorICAgICAgICA8bGFiZWxSYWRpb0J1dHRvbiBsYWJlbGlkPSIzMTMiIHZhbHVlPSIxIiB0ZXh0PSJNYWlsIiAvPgorICAgICAgICA8bGFiZWxSYWRpb0J1dHRvbiBsYWJlbGlkPSIzMTQiIHZhbHVlPSIyIiB0ZXh0PSJMb2dpbiIgLz4KKyAgICA8L3JhZGlvZ3JvdXA+ICAgCisgICAgCisgICAgPCEtLSByZXNldCBWYWx1ZXMgQXJlYSAtLT4KKyAgICA8bGFiZWxUZXh0IG5hbWU9InJlc2V0QnlNYWlsTGFiZWwiIAorICAgICAgICB2aXNpYmlsaXR5PSIkeyAoIChwYXJlbnQuY2hvb3NlVGV4dFR5cGUudmFsdWU9PTEpID8gJ3Zpc2libGUnIDogJ2hpZGRlbicgKSB9IgorICAgICAgICBsYWJlbGlkPSIzMTUiIHk9IjYwIiB4PSIyIi8+CisgICAgPGN1c3RvbUVkaXR0ZXh0IG5hbWU9InJlc2V0QnlNYWlsIiB5PSI2MCIgcmVnZXhwVHlwZT0iZW1haWwiCisgICAgICAgIHZpc2liaWxpdHk9IiR7ICggKHBhcmVudC5jaG9vc2VUZXh0VHlwZS52YWx1ZT09MSkgPyAndmlzaWJsZScgOiAnaGlkZGVuJyApIH0iCisgICAgICAgIHBhc3N3b3JkPSJmYWxzZSIgeD0iMTIwIiB3aWR0aD0iMTcwIiAvPgorICAgIAorICAgIDxsYWJlbFRleHQgbmFtZT0icmVzZXRCeUxvZ2luTGFiZWwiIAorICAgICAgICB2aXNpYmlsaXR5PSIkeyAoIChwYXJlbnQuY2hvb3NlVGV4dFR5cGUudmFsdWU9PTIpID8gJ3Zpc2libGUnIDogJ2hpZGRlbicgKSB9IgorICAgICAgICBsYWJlbGlkPSIzMTYiIHk9IjYwIiB4PSIyIi8+CisgICAgPGN1c3RvbUVkaXR0ZXh0IG5hbWU9InJlc2V0QnlMb2dpbiIgeT0iNjAiIAorICAgICAgICB2aXNpYmlsaXR5PSIkeyAoIChwYXJlbnQuY2hvb3NlVGV4dFR5cGUudmFsdWU9PTIpID8gJ3Zpc2libGUnIDogJ2hpZGRlbicgKSB9IgorICAgICAgICBwYXNzd29yZD0iZmFsc2UiIHg9IjEyMCIgd2lkdGg9IjE3MCIgLz4KKyAgICAKKyAgICA8c2ltcGxlTGFiZWxCdXR0b24gbmFtZT0ic2VuZEJ0biIgbGFiZWxpZD0iMzE3IiB4PSIxMjAiIHk9IjkwIiA+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ic2hvd1Jlc2V0Qm94IiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgIAkJPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgaWYgKHBhcmVudC5jaG9vc2VUZXh0VHlwZS52YWx1ZT09MSl7CisgICAgICAgICAgICAgICAgICAgIHBhcmVudC5yZXNldEJ5TG9naW4uc2V0QXR0cmlidXRlKCd0ZXh0JywnJyk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50LnJlc2V0QnlNYWlsLnNldEF0dHJpYnV0ZSgndGV4dCcsJycpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBwYXJlbnQuYmFzZVVybCA9IGNhbnZhcy5nZXRBcHBCYXNlVXJsKCk7CisgICAgICAgICAgICAgICAgCisgICAgCQkJcGFyZW50LnJlc2V0VXNlclB3ZC5kb0NhbGwoKTsKKwkJCV1dPgorICAgIAk8L2hhbmRsZXI+CisgICAgPC9zaW1wbGVMYWJlbEJ1dHRvbj4gICAKKyAgICAKKyAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJyZXNldFVzZXJQd2QiIGZ1bmNuYW1lPSJ1c2Vyc2VydmljZS5yZXNldFVzZXJQd2QiIAorICAgICAgICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgYWN0aXZlRXJyb3JIYW5kbGVyPSJ0cnVlIiA+ICAgICAgCisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+ICAKKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBhcmVudC5yZXNldEJ5TWFpbC5nZXRUZXh0KCk7IDwvbWV0aG9kPjwvbmV0cGFyYW0+ICAKKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBhcmVudC5yZXNldEJ5TG9naW4uZ2V0VGV4dCgpOyA8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBwYXJlbnQucGFyZW50LmJhc2VVcmw7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorCQkJPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9udmFsdWUiLHZhbHVlKTsKKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+ICAKKyAgICA8L25ldFJlbW90ZUNhbGxIaWI+ICAgIAorCisgICAgPG1ldGhvZCBuYW1lPSJyZXNldCI+CisgICAgICAgICAgICB0aGlzLnNlbmRCdG4ub25jbGljay5zZW5kRXZlbnQoKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKzwvY2xhc3M+ICAgIAorICAgIAorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2F1dGgvcmVzZXRQYXNzd29yZC5senggYi9XZWJDb250ZW50L3NyYy9iYXNlL2F1dGgvcmVzZXRQYXNzd29yZC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWJhMGFjOQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvYXV0aC9yZXNldFBhc3N3b3JkLmx6eApAQCAtMCwwICsxLDEwNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9InJlc2V0UGFzc3dvcmQiIGV4dGVuZHM9ImxhYmVsRXhwbG9yZXJCb3giIGxhYmVsaWQ9IjMyNSIKKyAgICBkb2NraW5nPSJ0cnVlIiByZXNpemVhYmxlPSJmYWxzZSIgY2xvc2FibGU9ImZhbHNlIiAKKwl3aWR0aD0iMzYwIiB4PSIzNTAiIGhlaWdodD0iMTYwIj4KKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbmNsb3NlIj4KKyAgICAJaWYgKHRoaXMuY2hpbGRPYmohPW51bGwpIHRoaXMuY2hpbGRPYmouY2xvc2UoKTsKKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAgICAgdmFyIHByZXNzRW50ZXIgPSBuZXcgTHpEZWxlZ2F0ZSh0aGlzLCAic2VuZFZhbHVlcyIpOworICAgICAgICBsei5LZXlzLmNhbGxPbktleUNvbWJvKHByZXNzRW50ZXIsIFsiZW50ZXIiXSk7CisJCXRoaXMuZ2V0VXNlckJ5SGFzaC5kb0NhbGwoKTsKKwk8L2hhbmRsZXI+ICAKKyAgICAKKyAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJnZXRVc2VyQnlIYXNoIiBmdW5jbmFtZT0idXNlcnNlcnZpY2UuZ2V0VXNlckJ5SGFzaCIgCisJCXJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiBhY3RpdmVFcnJvckhhbmRsZXI9InRydWUiID4gICAgICAKKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gY2FudmFzLnNlc3Npb25JZDs8L21ldGhvZD48L25ldHBhcmFtPiAKKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gY2FudmFzLnJlc2V0SGFzaDs8L21ldGhvZD48L25ldHBhcmFtPiAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisJCQk8IVtDREFUQVsKKwkJCQkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJnZXRVc2VyQnlIYXNoOiAiLHZhbHVlKTsKKyAgICAgICAgICAgIAkvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorCQkJCWlmICh2YWx1ZTwwKSB7CisJCQkJCXBhcmVudC5jbG9zZSgpOworCQkJCX0gZWxzZSB7CisJCQkJCXBhcmVudC51c2VybmFtZS5zZXRBdHRyaWJ1dGUoJ3RleHQnLHZhbHVlLmxvZ2luKTsKKwkJCQkJbHouRm9jdXMuc2V0Rm9jdXMocGFyZW50LnBhc3MxLHRydWUpOworCQkJCX0KKwkJCV1dPgorICAgICAgICA8L2hhbmRsZXI+ICAKKyAgICA8L25ldFJlbW90ZUNhbGxIaWI+CQorCQorCTxtZXRob2QgbmFtZT0ic2VuZFZhbHVlcyI+CisJCTwhW0NEQVRBWworCQkJaWYgKHRoaXMucGFzczEuZ2V0VGV4dCgpIT10aGlzLnBhc3MxLmdldFRleHQoKSl7CisJCQkJbmV3IGx6LnJwY0Vycm9yRGlhbG9nKGNhbnZhcy5tYWluX2NvbnRlbnQuX2NvbnRlbnQuaW5uZXIse2Vycm9yaWQ6LTZ9KTsKKwkJCX0gZWxzZSBpZiAodGhpcy5wYXNzMS5nZXRUZXh0KCkubGVuZ3RoPDQpIHsKKwkJCQluZXcgbHoucnBjRXJyb3JEaWFsb2coY2FudmFzLm1haW5fY29udGVudC5fY29udGVudC5pbm5lcix7ZXJyb3JpZDotN30pOworCQkJfSBlbHNlIHsKKwkJCQl0aGlzLnJlc2V0UGFzc0J5SGFzaC5kb0NhbGwoKTsKKwkJCX0KKwkJXV0+CisJPC9tZXRob2Q+CisJCisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0icmVzZXRQYXNzQnlIYXNoIiBmdW5jbmFtZT0idXNlcnNlcnZpY2UucmVzZXRQYXNzQnlIYXNoIiAKKwkJcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iIGFjdGl2ZUVycm9ySGFuZGxlcj0idHJ1ZSIKKwkJaXNDYWxsQmFja0hhbmRsZXI9InRydWUiID4gICAgICAKKwkJPGF0dHJpYnV0ZSBuYW1lPSJ0ZW1wVmFsdWUiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4gCisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIGNhbnZhcy5yZXNldEhhc2g7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBhcmVudC5wYXNzMS5nZXRUZXh0KCk7PC9tZXRob2Q+PC9uZXRwYXJhbT4gIAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgIC8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisJCQkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKHZhbHVlKTsKKwkJCXRoaXMudGVtcFZhbHVlID0gdmFsdWU7CisgICAgICAgIDwvaGFuZGxlcj4gIAorCQk8aGFuZGxlciBuYW1lPSJzZW5kQ2FsbEJhY2siPgorCQkJaWYgKHRoaXMudGVtcFZhbHVlPT0tOCkgeworCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzdWNjZXNzIik7CisJCQkJdmFyIGF1dGhMb2dpbiA9IG5ldyBsei5jaGVja0xvZ2luRGF0YShjYW52YXMubWFpbl9jb250ZW50Ll9jb250ZW50LmlubmVyKTsKKwkJCQlhdXRoTG9naW4udXNlcm5hbWUuc2V0QXR0cmlidXRlKCd0ZXh0JyxwYXJlbnQudXNlcm5hbWUuZ2V0VGV4dCgpKTsKKwkJCQlhdXRoTG9naW4udXNlcnBhc3Muc2V0QXR0cmlidXRlKCd0ZXh0JyxwYXJlbnQucGFzczEuZ2V0VGV4dCgpKTsKKwkJCQlwYXJlbnQuY2xvc2UoKTsKKwkJCX0KKwkJPC9oYW5kbGVyPgorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4JCQorCQorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMzI2IiB3aWR0aD0iMjAwIiB5PSIyNCIgeD0iMiIvPgorICAgICAgICA8bGFiZWxUZXh0IG5hbWU9InVzZXJuYW1lIiB5PSIyNCIgeD0iMTQwIiB3aWR0aD0iMTcwIiAvPgorICAgCisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIzMjgiIHdpZHRoPSIyMDAiIHk9IjU0IiB4PSIyIi8+CisgICAgICAgIDxjdXN0b21FZGl0dGV4dCBwYXNzd29yZD0idHJ1ZSIgbmFtZT0icGFzczEiIHk9IjU0IiB4PSIxNDAiIHdpZHRoPSIxNzAiIC8+CisJCisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIzMjkiIHdpZHRoPSIyMDAiIHk9Ijg0IiB4PSIyIi8+CisgICAgICAgIDxjdXN0b21FZGl0dGV4dCBwYXNzd29yZD0idHJ1ZSIgbmFtZT0icGFzczIiIHk9Ijg0IiB4PSIxNDAiIHdpZHRoPSIxNzAiIC8+CisJCisgICAgPHNpbXBsZUxhYmVsQnV0dG9uIG5hbWU9Il9idG4iIGxhYmVsaWQ9IjMyNyIgd2lkdGg9IjEyMCIgeD0iMjMwIiAKKwkJeT0iJG9uY2V7IHBhcmVudC5oZWlnaHQtNDAgfSIgb25jbGljaz0icGFyZW50LnNlbmRWYWx1ZXMoKSIgLz4gICAKKwkKKzwvY2xhc3M+ICAgIAorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvYnV0dG9uL2Jhc2VDaG9vc2VJY29uLmx6eCBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9idXR0b24vYmFzZUNob29zZUljb24ubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2MDA3YzMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvYnV0dG9uL2Jhc2VDaG9vc2VJY29uLmx6eApAQCAtMCwwICsxLDgxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8cmVzb3VyY2UgbmFtZT0iYmFja2dyb3VuZF9kcmF3Y2hvb3NlX3JzYyI+CisgICAgPGZyYW1lIHNyYz0icmVzb3VyY2VzL21lbnVkcmF3X3VwLnBuZyIgLz4KKyAgICA8ZnJhbWUgc3JjPSJyZXNvdXJjZXMvbWVudWRyYXdfb3Zlci5wbmciIC8+CisgICAgPGZyYW1lIHNyYz0icmVzb3VyY2VzL21lbnVkcmF3X2Rvd24ucG5nIiAvPgorPC9yZXNvdXJjZT4KKworPGNsYXNzIG5hbWU9ImJhc2VDaG9vc2VJY29uIiBleHRlbmRzPSJ2aWV3IiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIAorCSAgIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignYmFzZWJnY29sb3JpemVyJykgfSIgPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0icmVzb3VyY2VOIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgICAgCisgICAgPHZpZXcgbmFtZT0iX2JnIiB4PSIxIiB5PSIxIiBoZWlnaHQ9IiRvbmNleyBwYXJlbnQuaGVpZ2h0IC0gMiB9IgorICAgIAkgIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoIC0gMiB9IiBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ2Jhc2VNb3VzZWNvbG9yaXplcicpIH0iIC8+CisgICAgCisgICAgPGltYWdlIG5hbWU9Il9pY29uIiBzcmM9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVJbWFnZShwYXJlbnQucmVzb3VyY2VOKSB9IiAKKyAgICAJICB4PSIkb25jZXsgKHBhcmVudC53aWR0aC10aGlzLndpZHRoKSAvIDIgfSIKKyAgICAJICB5PSIkb25jZXsgKHBhcmVudC5oZWlnaHQtdGhpcy5oZWlnaHQpIC8gMiB9IiAKKyAgICAJICB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHN0cmV0Y2hlcz0iYm90aCIvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iaW5pdFgiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImluaXRZIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIi8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpc3NlbGVjdGVkIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisJPCEtLQorICAgIDxhdHRyaWJ1dGUgbmFtZT0iZW5hYmxlZCIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CisJIC0tPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKyAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3ZlciI+CisgICAgCXRoaXMuaXNPdXQgPSBmYWxzZTsKKyAgICAJdGhpcy5fYmcuc2V0QXR0cmlidXRlKCJiZ2NvbG9yIixjYW52YXMuZ2V0VGhlbWVDb2xvcignYmFzZU1vdXNlT3ZlcmNvbG9yaXplcicpKTsKKyAgICAJdGhpcy5faWNvbi5zZXRBdHRyaWJ1dGUoIngiLHRoaXMuX2ljb24ueC0xKTsKKyAgICAJdGhpcy5faWNvbi5zZXRBdHRyaWJ1dGUoInkiLHRoaXMuX2ljb24ueS0xKTsKKyAgICAJdGhpcy5faWNvbi5zZXRBdHRyaWJ1dGUoIndpZHRoIix0aGlzLl9pY29uLndpZHRoKzIpOworICAgIAl0aGlzLl9pY29uLnNldEF0dHJpYnV0ZSgiaGVpZ2h0Iix0aGlzLl9pY29uLmhlaWdodCsyKTsKKyAgICA8L2hhbmRsZXI+CisgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZW91dCI+CisgICAgCXRoaXMuX2JnLnNldEF0dHJpYnV0ZSgiYmdjb2xvciIsY2FudmFzLmdldFRoZW1lQ29sb3IoJ2Jhc2VNb3VzZWNvbG9yaXplcicpKTsKKyAgICAJaWYgKHRoaXMuaW5pdFggPT0gdGhpcy5faWNvbi54KSB7CisgICAgCQlyZXR1cm47CisgICAgCX0KKyAgICAJdGhpcy5pc091dCA9IHRydWU7CisgICAgCXRoaXMuX2ljb24uc2V0QXR0cmlidXRlKCJ4Iix0aGlzLmluaXRYKTsKKyAgICAJdGhpcy5faWNvbi5zZXRBdHRyaWJ1dGUoInkiLHRoaXMuaW5pdFkpOworICAgIAl0aGlzLl9pY29uLnNldEF0dHJpYnV0ZSgid2lkdGgiLHRoaXMuX2ljb24ud2lkdGgtMik7CisgICAgCXRoaXMuX2ljb24uc2V0QXR0cmlidXRlKCJoZWlnaHQiLHRoaXMuX2ljb24uaGVpZ2h0LTIpOworICAgIDwvaGFuZGxlcj4KKyAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAJdGhpcy5vbm1vdXNlb3V0LnNlbmRFdmVudChudWxsKTsKKyAgICA8L2hhbmRsZXI+CisgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAJdGhpcy5pbml0WCA9IHRoaXMuX2ljb24ueDsKKyAgICAJdGhpcy5pbml0WSA9IHRoaXMuX2ljb24ueTsKKyAgICAgICAgaWYgKHRoaXMuaXNzZWxlY3RlZCl7CisgICAgICAgICAgICB0aGlzLm9uY2xpY2suc2VuZEV2ZW50KCk7CisgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnZnJhbWUnLDMpOworICAgICAgICB9CisgICAgPC9oYW5kbGVyPiAgICAgICAgICAKKyAgICA8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IiRvbmNleyBwYXJlbnQubGFiZWxpZCB9IiBpbml0dHdpY2U9InRydWUiIC8+Cis8L2NsYXNzPgorCisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9idXR0b24vYmx1ZUJ1dHRvbi5senggYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvYnV0dG9uL2JsdWVCdXR0b24ubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzMDQ3NGUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvYnV0dG9uL2JsdWVCdXR0b24ubHp4CkBAIC0wLDAgKzEsODQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKwk8Y2xhc3MgbmFtZT0iYmx1ZUJ1dHRvbiIgZXh0ZW5kcz0iYmFzZWNvbXBvbmVudCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxOCIgCisJICAgICAgIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignc2Vjb25kQm9yZGVyQ29sb3InKSB9IiBmb2N1c2FibGU9InRydWUiPgorCSAgICAKKwkgICAgPGF0dHJpYnV0ZSBuYW1lPSJyZXNvdXJjZUl0ZW0iIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwkgICAgCisJICAgIDxhdHRyaWJ1dGUgbmFtZT0ieF9pbnNldFJlc291cmNlIiB2YWx1ZT0iNCIgdHlwZT0ibnVtYmVyIiAvPgorCSAgICA8YXR0cmlidXRlIG5hbWU9InlfaW5zZXRSZXNvdXJjZSIgdmFsdWU9IjQiIHR5cGU9Im51bWJlciIgLz4KKwkgICAgCisJICAgIDxhdHRyaWJ1dGUgbmFtZT0id2lkdGhfaW5zZXRSZXNvdXJjZSIgdmFsdWU9IjE4IiB0eXBlPSJudW1iZXIiIC8+CisJICAgIDxhdHRyaWJ1dGUgbmFtZT0iaGVpZ2h0X2luc2V0UmVzb3VyY2UiIHZhbHVlPSIxOCIgdHlwZT0ibnVtYmVyIiAvPgorCSAgICAKKwkJPG1ldGhvZCBuYW1lPSJzZXRUZXh0IiBhcmdzPSJ0eHQiPgorCQkJdGhpcy5zZXRBdHRyaWJ1dGUoJ3RleHQnLHR4dCk7CisJCTwvbWV0aG9kPgorCQk8dmlldyBuYW1lPSJfYmciIHg9IjEiIHk9IjEiIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignbWFpbkJhY2tncm91bmRDb2xvcicpIH0iCisJCQkJd2lkdGg9IiR7IHBhcmVudC53aWR0aC0yIH0iIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodC0yIH0iIC8+CisJCTx2aWV3IG5hbWU9Il9iZ092ZXIiIHg9IjEiIHk9IjEiIGJnY29sb3I9IjB4RkZGRkZGIiBvcGFjaXR5PSIwLjUiIHZpc2liaWxpdHk9ImhpZGRlbiIKKwkJCQl3aWR0aD0iJHsgcGFyZW50LndpZHRoLTIgfSIgaGVpZ2h0PSIkeyBwYXJlbnQuaGVpZ2h0LTIgfSIgLz4KKwkJPHZpZXcgbmFtZT0iX2JnRG93biIgeD0iMSIgeT0iMSIgYmdjb2xvcj0iMHgwMDAwMDAiIG9wYWNpdHk9IjAuNSIgdmlzaWJpbGl0eT0iaGlkZGVuIgorCQkJCXdpZHRoPSIkeyBwYXJlbnQud2lkdGgtMiB9IiBoZWlnaHQ9IiR7IHBhcmVudC5oZWlnaHQtMiB9IiAvPgorCQkKKwkJPHZpZXcgbmFtZT0iZGlzQWJsZWRWaWV3IiB2aXNpYmlsaXR5PSIkeyAoIHBhcmVudC5lbmFibGVkICkgPyAnaGlkZGVuJyA6ICd2aXNpYmxlJyB9IgorCSAgICAgICAgICBiZ2NvbG9yPSJ3aGl0ZSIgb3BhY2l0eT0iMSIgeD0iMSIgeT0iMSIKKwkgICAgICAgICAgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGgtMiB9IiBoZWlnaHQ9IiRvbmNleyBwYXJlbnQuaGVpZ2h0LTIgfSIgLz4KKwkJCisJICAgIDxpbWFnZSBuYW1lPSJfcnNjSWNvbiIgc3RyZXRjaGVzPSJib3RoIiAKKwkgICAgCSAgb3BhY2l0eT0iJHsgKCBwYXJlbnQuZW5hYmxlZCApID8gMSA6IDAuNCB9IgorCQkgIAkgIHg9IiRvbmNleyBwYXJlbnQueF9pbnNldFJlc291cmNlIH0iIAorCSAgICAJICB5PSIkb25jZXsgcGFyZW50LnlfaW5zZXRSZXNvdXJjZSB9IiAKKwkgICAgICAgICAgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGhfaW5zZXRSZXNvdXJjZSB9IiAKKwkgICAgICAgICAgaGVpZ2h0PSIkb25jZXsgcGFyZW50LmhlaWdodF9pbnNldFJlc291cmNlIH0iIAorCSAgICAgICAgICBzcmM9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVJbWFnZShwYXJlbnQucmVzb3VyY2VJdGVtKSB9IiAvPgorCSAgICAgICAgICAKKwkgICAgCisJICAgICAKKwkJPGhhbmRsZXIgbmFtZT0ib25tb3VzZW92ZXIiPgorCQkJdGhpcy5fcnNjSWNvbi5zZXRBdHRyaWJ1dGUoIngiLHRoaXMuX3JzY0ljb24ueC0xKTsKKwkJCXRoaXMuX3JzY0ljb24uc2V0QXR0cmlidXRlKCJ5Iix0aGlzLl9yc2NJY29uLnktMSk7CisJCQl0aGlzLl9yc2NJY29uLnNldEF0dHJpYnV0ZSgid2lkdGgiLHRoaXMuX3JzY0ljb24ud2lkdGgrMik7CisJCQl0aGlzLl9yc2NJY29uLnNldEF0dHJpYnV0ZSgiaGVpZ2h0Iix0aGlzLl9yc2NJY29uLmhlaWdodCsyKTsKKwkJCXRoaXMuX2JnT3Zlci5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCd2aXNpYmxlJyk7CisJCTwvaGFuZGxlcj4KKwkJPGhhbmRsZXIgbmFtZT0ib25tb3VzZW91dCI+CisJCQl0aGlzLl9yc2NJY29uLnNldEF0dHJpYnV0ZSgieCIsdGhpcy5fcnNjSWNvbi54KzEpOworCQkJdGhpcy5fcnNjSWNvbi5zZXRBdHRyaWJ1dGUoInkiLHRoaXMuX3JzY0ljb24ueSsxKTsKKwkJCXRoaXMuX3JzY0ljb24uc2V0QXR0cmlidXRlKCJ3aWR0aCIsdGhpcy5fcnNjSWNvbi53aWR0aC0yKTsKKwkJCXRoaXMuX3JzY0ljb24uc2V0QXR0cmlidXRlKCJoZWlnaHQiLHRoaXMuX3JzY0ljb24uaGVpZ2h0LTIpOworCQk8L2hhbmRsZXI+CisJCTxoYW5kbGVyIG5hbWU9Im9ubW91c2Vkb3duIj4KKwkJCWlmICghdGhpcy5lbmFibGVkKSB7CisJCQkJcmV0dXJuOworCQkJfQorCQkJdGhpcy5fYmdPdmVyLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ2hpZGRlbicpOworCQkJdGhpcy5fYmdEb3duLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ3Zpc2libGUnKTsKKwkJPC9oYW5kbGVyPgorCQk8aGFuZGxlciBuYW1lPSJvbm1vdXNldXAiPgorCQkJdGhpcy5fYmdEb3duLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ2hpZGRlbicpOworCQk8L2hhbmRsZXI+CQorCQkJCisJPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2J1dHRvbi9sYWJlbEJsdWVCdXR0b24ubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2J1dHRvbi9sYWJlbEJsdWVCdXR0b24ubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxOGRkZmEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvYnV0dG9uL2xhYmVsQmx1ZUJ1dHRvbi5sengKQEAgLTAsMCArMSwzNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9ImxhYmVsQmx1ZUJ1dHRvbiIgZXh0ZW5kcz0iYmx1ZUJ1dHRvbiIgPgorCisJPGF0dHJpYnV0ZSBuYW1lPSJsYWJlbGlkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiBzZXR0ZXI9InNldExhYmVsSWQobGFiZWxpZCkiIC8+CisJPG1ldGhvZCBuYW1lPSJzZXRMYWJlbElkIiBhcmdzPSJfbGFiZWxpZCIgPgorCQl0aGlzLmxhYmVsaWQgPSBfbGFiZWxpZDsKKwkJLy9EZWJ1Zy53cml0ZSh0aGlzLmxhYmVsaWQpOworCQl0aGlzLnNldEF0dHJpYnV0ZSgndGV4dCcsY2FudmFzLmdldExhYmVsTmFtZSh0aGlzLmxhYmVsaWQpKTsKKwk8L21ldGhvZD4KKwkKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9idXR0b24vbGlicmFyeS5senggYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvYnV0dG9uL2xpYnJhcnkubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhNWRjMTkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvYnV0dG9uL2xpYnJhcnkubHp4CkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKyAgICA8aW5jbHVkZSBocmVmPSJpbmN1YmF0b3Ivcm91bmRyZWN0YnV0dG9uLmx6eCIgLz4KKyAgICAKKwk8aW5jbHVkZSBocmVmPSJibHVlQnV0dG9uLmx6eCIgLz4KKwk8aW5jbHVkZSBocmVmPSJsYWJlbEJsdWVCdXR0b24ubHp4IiAvPgorCTxpbmNsdWRlIGhyZWY9InNpbXBsZUxhYmVsQnV0dG9uLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJiYXNlQ2hvb3NlSWNvbi5sengiIC8+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9idXR0b24vcmVzb3VyY2VzL21lbnVkcmF3X2Rvd24ucG5nIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2J1dHRvbi9yZXNvdXJjZXMvbWVudWRyYXdfZG93bi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGJhNjA2YgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9idXR0b24vcmVzb3VyY2VzL21lbnVkcmF3X2Rvd24ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9idXR0b24vcmVzb3VyY2VzL21lbnVkcmF3X292ZXIucG5nIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2J1dHRvbi9yZXNvdXJjZXMvbWVudWRyYXdfb3Zlci5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDdlOWYyNgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9idXR0b24vcmVzb3VyY2VzL21lbnVkcmF3X292ZXIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9idXR0b24vcmVzb3VyY2VzL21lbnVkcmF3X3VwLnBuZyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9idXR0b24vcmVzb3VyY2VzL21lbnVkcmF3X3VwLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZWJjN2M1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2J1dHRvbi9yZXNvdXJjZXMvbWVudWRyYXdfdXAucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9idXR0b24vc2ltcGxlTGFiZWxCdXR0b24ubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2J1dHRvbi9zaW1wbGVMYWJlbEJ1dHRvbi5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWY2M2ZhZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9idXR0b24vc2ltcGxlTGFiZWxCdXR0b24ubHp4CkBAIC0wLDAgKzEsNTggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzxjbGFzcyBuYW1lPSJzaW1wbGVMYWJlbEJ1dHRvbiIgZXh0ZW5kcz0iYnV0dG9uIiBmb250c3R5bGU9ImJvbGQiCisJICAgZm9udHNpemU9IjExIiBoZWlnaHQ9IjIwIiBzdHlsZT0iY29tcG9uZW50U3R5bGUiPgorCisJPGF0dHJpYnV0ZSBuYW1lPSJsYWJlbGlkIiB0eXBlPSJudW1iZXIiIHNldHRlcj0ic2V0TGFiZWxJZChsYWJlbGlkKSIgLz4KKwk8bWV0aG9kIG5hbWU9InNldExhYmVsSWQiIGFyZ3M9Il9sYWJlbGlkIiA+CisJCXRoaXMubGFiZWxpZCA9IF9sYWJlbGlkOworCQl0aGlzLnNldEF0dHJpYnV0ZSgndGV4dCcsY2FudmFzLmdldExhYmVsTmFtZSh0aGlzLmxhYmVsaWQpKTsKKwk8L21ldGhvZD4KKwkKKzwvY2xhc3M+CisKKzxjbGFzcyBuYW1lPSJzaW1wbGVMYWJlbFJvdW5kQnV0dG9uIiBleHRlbmRzPSJyb3VuZHJlY3RidXR0b24iIAorCSAgIGZvbnRzaXplPSIxMSIgaGVpZ2h0PSIyMCIgc3R5bGU9ImNvbXBvbmVudFN0eWxlIiBmb250c3R5bGU9ImJvbGQiPgorCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJsYWJlbGlkIiB0eXBlPSJudW1iZXIiIHNldHRlcj0ic2V0TGFiZWxJZChsYWJlbGlkKSIgLz4KKyAgICA8bWV0aG9kIG5hbWU9InNldExhYmVsSWQiIGFyZ3M9Il9sYWJlbGlkIiA+CisgICAgICAgIHRoaXMubGFiZWxpZCA9IF9sYWJlbGlkOworICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgndGV4dCcsY2FudmFzLmdldExhYmVsTmFtZSh0aGlzLmxhYmVsaWQpKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKzwvY2xhc3M+CisKKzxjbGFzcyBuYW1lPSJzaW1wbGVMYWJlbEJ1dHRvblRvb2x0aXAiIGV4dGVuZHM9ImJ1dHRvbiIgZm9udHN0eWxlPSJib2xkIgorCSAgIGZvbnRzaXplPSIxMSIgaGVpZ2h0PSIyMCIgc3R5bGU9ImNvbXBvbmVudFN0eWxlIj4KKwkKKwk8YXR0cmlidXRlIG5hbWU9InRvb2x0aXBJZCIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0iMCIgLz4KKworCTxhdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZCIgdHlwZT0ibnVtYmVyIiBzZXR0ZXI9InNldExhYmVsSWQobGFiZWxpZCkiIC8+CisJPG1ldGhvZCBuYW1lPSJzZXRMYWJlbElkIiBhcmdzPSJfbGFiZWxpZCIgPgorCQl0aGlzLmxhYmVsaWQgPSBfbGFiZWxpZDsKKwkJdGhpcy5zZXRBdHRyaWJ1dGUoJ3RleHQnLGNhbnZhcy5nZXRMYWJlbE5hbWUodGhpcy5sYWJlbGlkKSk7CisJPC9tZXRob2Q+CisJPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSIkb25jZXsgcGFyZW50LnRvb2x0aXBJZCB9IiAvPgorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2NhbGVuZGFyL2NhbGVuZGFyV2luZG93Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9jYWxlbmRhci9jYWxlbmRhcldpbmRvdy5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTExODg2MgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9jYWxlbmRhci9jYWxlbmRhcldpbmRvdy5sengKQEAgLTAsMCArMSw5MiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9ImNhbGVuZGFyV2luZG93IiBleHRlbmRzPSJ2aWV3IiBjbGlja2FibGU9InRydWUiIAorCSAgIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignYmFzZWJnY29sb3JpemVyJykgfSI+CQorCisJPGF0dHJpYnV0ZSBuYW1lPSJmaWVsZFJlZiIgdmFsdWU9Im51bGwiIC8+CisJCisJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKwkJbHouTW9kZU1hbmFnZXIubWFrZU1vZGFsKHRoaXMpOworCTwvaGFuZGxlcj4KKwk8bWV0aG9kIG5hbWU9ImNsb3NlIj4KKwkJbHouTW9kZU1hbmFnZXIucmVsZWFzZSh0aGlzKTsKKwkJdGhpcy5kZXN0cm95KCk7CisJPC9tZXRob2Q+CQorCQorICAgIDwhLS0tIEBrZXl3b3JkcyBwcml2YXRlIC0tPgorICAgIDxtZXRob2QgbmFtZT0icGFzc01vZGVFdmVudCIgYXJncz0iZXZlbnRTdHIsdmlldyIgPiAKKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICBpZiAoIGV2ZW50U3RyID09ICJvbm1vdXNlZG93biIgICl7CisgICAgICAgICAgICAgICAgaWYgKCB2aWV3ICE9IG51bGwgKSB7CisgICAgICAgICAgICAgICAgICAgaWYgKCAhdmlldy5jaGlsZE9mKHRoaXMpICkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpOworICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHZpZXcgJiYgdmlldy5jaGlsZE9mKHRoaXMpKSB7CisgICAgICAgICAgICAgICAgaWYgKHZpZXdbIGV2ZW50U3RyIF0pIHsKKyAgICAgICAgICAgICAgICAgICAgdmlld1sgZXZlbnRTdHIgXS5zZW5kRXZlbnQoIHZpZXcgKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIF1dPiAKKyAgICA8L21ldGhvZD4gCQorCQorCTxsYWJlbFRleHQgZmdjb2xvcj0iMHhGRkZGRkYiIGZvbnRzdHlsZT0iYm9sZCIgbGFiZWxpZD0iNDgxIiB4PSIxIiB5PSIxIiAvPgorCQorICAgIDx2aWV3IG5hbWU9Il9jbG9zZSIgeD0iJHsgdGhpcy5wYXJlbnQud2lkdGgtMTkgfSIgeT0iMSIgCisgICAgICAgIHJlc291cmNlPSJidG5fcHJlc2VudGVyX2Nsb3NlIgorICAgICAgICBvbm1vdXNlb3Zlcj0idGhpcy5zZXRBdHRyaWJ1dGUoJ2ZyYW1lJywyKSIKKyAgICAgICAgb25tb3VzZW91dD0idGhpcy5zZXRBdHRyaWJ1dGUoJ2ZyYW1lJywxKSIKKyAgICAgICAgb25tb3VzZWRvd249InRoaXMuc2V0QXR0cmlidXRlKCdmcmFtZScsMykiCisgICAgICAgIG9ubW91c2V1cD0idGhpcy5zZXRBdHRyaWJ1dGUoJ2ZyYW1lJywxKSIgPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdmcmFtZScsMik7CisgICAgICAgICAgICB0aGlzLnBhcmVudC5jbG9zZSgpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iNDMwIiAvPgorICAgIDwvdmlldz4gIAkKKworCTxkYXRlU2VsZWN0b3IgeT0iMjAiIG5hbWU9Il9kYXRlc2VsZWN0b3IiPgorCQk8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorCQkJPCFbQ0RBVEFbCisJCQkvL0RlYnVnLndyaXRlKCJkYXRlc2VsZWN0b3Igb25pbml0LiAiLHRoaXMpOworCQkJdmFyIHQgPSBwYXJlbnQuZmllbGRSZWYuZ2V0VGV4dCgpOworCQkJdmFyIG5ld0RhdGUgPSBwYXJzZVN0cmluZ1RvRGF0ZSh0KTsKKwkJCXRoaXMuc2hvd2luZ2RhdGUgPSBuZXdEYXRlOworCQkJLy9EZWJ1Zy53cml0ZSgibjE6Iix0aGlzLnNob3dpbmdkYXRlKTsKKwkJCXRoaXMuaW5pdCgpOworCQkJXV0+CisJCTwvaGFuZGxlcj4KKwkJPGhhbmRsZXIgbmFtZT0ib25kb3VibGVzZWxlY3QiIGFyZ3M9ImQiPgorCQkJcGFyZW50LmZpZWxkUmVmLnNldEF0dHJpYnV0ZSgndGV4dCcscGFyc2VEYXRlVG9TdHJpbmcoZCkpOworCQkJdGhpcy5wYXJlbnQuY2xvc2UoKTsKKwkJPC9oYW5kbGVyPgorCTwvZGF0ZVNlbGVjdG9yPgkKKworPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2NhbGVuZGFyL2RhdGVGaWVsZC5senggYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvY2FsZW5kYXIvZGF0ZUZpZWxkLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDgzOTExCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2NhbGVuZGFyL2RhdGVGaWVsZC5sengKQEAgLTAsMCArMSw4MCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9ImRhdGVGaWVsZCIgZXh0ZW5kcz0idmlldyIgd2lkdGg9IjEwNCI+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJlbmFibGVkIiB2YWx1ZT0idHJ1ZSIgdHlwZT0iYm9vbGVhbiIgLz4KKwk8YXR0cmlidXRlIG5hbWU9InNldERlZmF1bHRUb2RheSIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0iYWRkaXRpb25hbERheSIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKwkKKwk8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorCQlpZiAodGhpcy5zZXREZWZhdWx0VG9kYXkpeworCQkJaWYgKHRoaXMuYWRkaXRpb25hbERheT09MCl7CisJCQkJdGhpcy5fdGV4dC5zZXRBdHRyaWJ1dGUoJ3RleHQnLHBhcnNlRGF0ZVRvU3RyaW5nKG5ldyBEYXRlKCkpKTsKKwkJCX0gZWxzZSB7CisJCQkJdmFyIGRhdGUgPSBuZXcgRGF0ZSgpOworCQkJCWRhdGUuc2V0VGltZShkYXRlLmdldFRpbWUoKSs4NjQwMDAwMCk7CisJCQkJdGhpcy5fdGV4dC5zZXRBdHRyaWJ1dGUoJ3RleHQnLHBhcnNlRGF0ZVRvU3RyaW5nKGRhdGUpKTsKKwkJCX0KKwkJfQorCTwvaGFuZGxlcj4KKyAKKwk8bWV0aG9kIG5hbWU9InNldFRleHQiIGFyZ3M9InR4dCI+CisJCXRoaXMuc2V0QXR0cmlidXRlKCd0ZXh0Jyx0eHQpOworCTwvbWV0aG9kPgorCTxtZXRob2QgbmFtZT0iZ2V0VGV4dCIgPgorCQlyZXR1cm4gdGhpcy5fdGV4dC5nZXRUZXh0KCk7CisJPC9tZXRob2Q+CQorICAgIAorICAgIDxtZXRob2QgbmFtZT0ic2V0RGF0ZSIgYXJncz0iZCI+CisgICAgICAgIAorICAgIDwvbWV0aG9kPgorICAgIDxtZXRob2QgbmFtZT0iZ2V0RGF0ZSI+CisgICAgICAgIHZhciB0U3RyaW5nID0gdGhpcy5fdGV4dC5nZXRUZXh0KCk7CisgICAgICAgIHZhciB5ID0gdFN0cmluZy5zdWJzdHJpbmcoNiwxMCk7CisgICAgICAgIHZhciBtID0gTnVtYmVyKHRTdHJpbmcuc3Vic3RyaW5nKDMsNSkpLTE7CisgICAgICAgIHZhciBkID0gdFN0cmluZy5zdWJzdHJpbmcoMCwyKTsgICAgIAorICAgICAgICB2YXIgZGF0ZSA9IG5ldyBEYXRlKHksbSxkKTsKKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoZGF0ZSk7IAorICAgICAgICByZXR1cm4gZGF0ZTsKKyAgICA8L21ldGhvZD4KKyAgICAKKwk8YXR0cmlidXRlIG5hbWU9InRleHQiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKworCTxjdXN0b21FZGl0dGV4dCBuYW1lPSJfdGV4dCIgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGgtMjIgfSIgcmVnZXhwVHlwZT0iZGF0ZSIgCisJCQkJCWFsaWduPSJsZWZ0IiB0ZXh0PSIkeyBwYXJlbnQudGV4dCB9IiBlbmFibGVkPSIkeyBwYXJlbnQuZW5hYmxlZCB9IiAvPgorCisJPGJsdWVCdXR0b24gcmVzb3VyY2VJdGVtPSJkYXRlX2ljb25fcnNjIiBhbGlnbj0icmlnaHQiCisJCSAgb3BhY2l0eT0iJHsgKChwYXJlbnQuZW5hYmxlZCkgPyAxIDogMC40KSB9IgorCQkgIHhfaW5zZXRSZXNvdXJjZT0iMiIgeV9pbnNldFJlc291cmNlPSIyIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiCisJCSAgd2lkdGhfaW5zZXRSZXNvdXJjZT0iMTYiIGhlaWdodF9pbnNldFJlc291cmNlPSIxNiI+CisJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorCQkJaWYgKHBhcmVudC5lbmFibGVkKSB7CisJCQkJbmV3IGx6LmNhbGVuZGFyV2luZG93KHRoaXMucGFyZW50LnBhcmVudCx7ZmllbGRSZWY6dGhpcy5wYXJlbnQuX3RleHQseDp0aGlzLnBhcmVudC54Kyh0aGlzLnBhcmVudC53aWR0aC0yMDApLHk6dGhpcy5wYXJlbnQueX0pOworCQkJfQorCQk8L2hhbmRsZXI+CisJCTxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iMTYyIiAvPgorCTwvYmx1ZUJ1dHRvbj4KKworPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2NhbGVuZGFyL2RhdGVTZWxlY3Rvci5senggYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvY2FsZW5kYXIvZGF0ZVNlbGVjdG9yLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YWM3OGEzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2NhbGVuZGFyL2RhdGVTZWxlY3Rvci5sengKQEAgLTAsMCArMSw1MDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzxjbGFzcyBuYW1lPSJiYXNlRGF0ZVNlbGVjdG9yQ29tcG9uZW50IiBleHRlbmRzPSJ2aWV3Ij4KKworCTxhdHRyaWJ1dGUgbmFtZT0iZGF5bnVtYmVycyIgdmFsdWU9IlswLDEsMiwzLDQsNSw2XSIgLz4KKworCTxhdHRyaWJ1dGUgbmFtZT0ic2hvd2luZ2RhdGUiIHR5cGU9InN0cmluZyIgdmFsdWU9IiIgLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9ImRheWNsYXNzIiB3aGVuPSJvbmNlIiAvPgorCisJPGF0dHJpYnV0ZSBuYW1lPSJ3ZWVrY2xhc3MiIHdoZW49Im9uY2UiIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJzaG93Y2FsZW5kZXJ3ZWVrIiB2YWx1ZT0idHJ1ZSIgdHlwZT0iYm9vbGVhbiIgLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9Im1vbnRoY2xhc3MiIHdoZW49Im9uY2UiIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJzaG93Y2FsZW5kZXJtb250aCIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CQorCQorPC9jbGFzcz4KKworPGNsYXNzIG5hbWU9ImRhdGVTZWxlY3RvckRheSIgZXh0ZW5kcz0iYmFzZURhdGVTZWxlY3RvckNvbXBvbmVudCIgd2lkdGg9IjI0IiBiZ2NvbG9yPSIweEZGRkZGRiI+CisKKwk8YXR0cmlidXRlIG5hbWU9ImRheUluZGV4TnVtYmVyIiB2YWx1ZT0iLTEiIHR5cGU9Im51bWJlciIgLz4KKwk8YXR0cmlidXRlIG5hbWU9IndlZWtJbmRleE51bWJlciIgdmFsdWU9Ii0xIiB0eXBlPSJudW1iZXIiIC8+CisKKwk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKwkJdGhpcy5wYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5zZWxlY3REYXRlKHRoaXMuZGF5ZGF0ZSx0aGlzLmRheUluZGV4TnVtYmVyLHRoaXMud2Vla0luZGV4TnVtYmVyKTsKKwk8L2hhbmRsZXI+CisJCisJPGhhbmRsZXIgbmFtZT0ib25kYmxjbGljayI+CisJCXRoaXMucGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQuc2VsZWN0RG91YmxlRGF0ZSh0aGlzLmRheWRhdGUpOworCTwvaGFuZGxlcj4KKwkKKwk8YXR0cmlidXRlIG5hbWU9ImRheWRhdGUiIHZhbHVlPSJudWxsIiAvPgorCQorCTxtZXRob2QgbmFtZT0iaW5pdCI+CisJCTwhW0NEQVRBWworICAgICAgICBzdXBlci5pbml0KCk7CisgICAgICAgIGlmIChwYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQubW9udGghPWRheWRhdGUuZ2V0TW9udGgoKSkKKyAgICAgICAgCXRoaXMuX2RhdGUuc2V0QXR0cmlidXRlKCd0ZXh0JywnPEZPTlQgQ09MT1I9IiNDQ0NDQ0MiPicrZGF5ZGF0ZS5nZXREYXRlKCkrJzwvRk9OVD4nKTsKKyAgICAgICAgZWxzZSAKKyAgICAgICAgCXRoaXMuX2RhdGUuc2V0QXR0cmlidXRlKCd0ZXh0JyxkYXlkYXRlLmdldERhdGUoKSk7CisgICAgICAgIF1dPgorCTwvbWV0aG9kPgorCQorCTx0ZXh0IG5hbWU9Il9kYXRlIiBmb250c2l6ZT0iMTAiIGFsaWduPSJjZW50ZXIiIHJlc2l6ZT0idHJ1ZSIgLz4KKworPC9jbGFzcz4KKworPGNsYXNzIG5hbWU9ImRhdGVTZWxlY3RvckRheUhlYWRlciIgZXh0ZW5kcz0iYmFzZURhdGVTZWxlY3RvckNvbXBvbmVudCIgd2lkdGg9IjI0IiBiZ2NvbG9yPSIweEY5RjlGOSIgPgorCisJPGF0dHJpYnV0ZSBuYW1lPSJkYXludW1iZXIiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisJCisJPG1ldGhvZCBuYW1lPSJpbml0Ij4KKwkJPCFbQ0RBVEFbCisJICAgICAgICBzdXBlci5pbml0KCk7CisJICAgICAgICB2YXIgZGF0ZVJvb3QgPSBwYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQ7CisJICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJkYXludW1iZXIiLHRoaXMsZGF0ZVJvb3QpOworCSAgICAgICAgdGhpcy5fZGF0ZS5zZXRBdHRyaWJ1dGUoJ3RleHQnLGNhbnZhcy5nZXRMYWJlbE5hbWUoZGF0ZVJvb3QuZGF5TmFtZXNMYWJlbElkc1soIChkYXludW1iZXI+NikgPyAoZGF5bnVtYmVyLTcpIDogZGF5bnVtYmVyICldKSk7CisJICAgICAgICB0aGlzLl9kYXRlLl90aXAuc2V0QXR0cmlidXRlKCdsYWJlbGlkJyxkYXRlUm9vdC5kYXlMYWJlbE5hbWVzTGFiZWxJZHNbKCAoZGF5bnVtYmVyPjYpID8gKGRheW51bWJlci03KSA6IGRheW51bWJlciApXSk7IAorICAgICAgICBdXT4KKwk8L21ldGhvZD4KKwkKKwk8dGV4dCBmZ2NvbG9yPSIweDAwMDAwMCIgbmFtZT0iX2RhdGUiIGZvbnRzaXplPSIxMCIgYWxpZ249ImNlbnRlciIgcmVzaXplPSJ0cnVlIgorCQkgIG9ubW91c2VvdmVyPSIiIG9ubW91c2VvdXQ9IiI+CisJCTxsYWJlbFRvb2x0aXAgbmFtZT0iX3RpcCIgLz4KKwk8L3RleHQ+CisKKzwvY2xhc3M+CisKKzxjbGFzcyBuYW1lPSJkYXRlU2VsZWN0b3JXZWVrTnVtYmVyIiBleHRlbmRzPSJ2aWV3IiB3aWR0aD0iMjQiIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignYmFzZWJnY29sb3JpemVyJykgfSI+CisKKwk8YXR0cmlidXRlIG5hbWU9IndlZWtudW1iZXIiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CQorCTx0ZXh0IG5hbWU9Il9kYXRlIiBmZ2NvbG9yPSJ3aGl0ZSIgZm9udHNpemU9IjEwIiB0ZXh0PSIkb25jZXsgcGFyZW50LndlZWtudW1iZXIgfSIgCisJCSAgYWxpZ249ImNlbnRlciIgcmVzaXplPSJ0cnVlIiAvPgorCis8L2NsYXNzPgorCis8Y2xhc3MgbmFtZT0iZGF0ZVNlbGVjdG9yV2Vla051bWJlckhlYWRlciIgZXh0ZW5kcz0idmlldyIgd2lkdGg9IjI0IiBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ2Jhc2ViZ2NvbG9yaXplcicpIH0iPgorCisJPGF0dHJpYnV0ZSBuYW1lPSJsYWJlbFdlZWtIZWFkZXIiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4JCisJPHRleHQgbmFtZT0iX2RhdGUiIGZnY29sb3I9IndoaXRlIiBmb250c2l6ZT0iMTAiIHRleHQ9IiRvbmNleyBwYXJlbnQubGFiZWxXZWVrSGVhZGVyIH0iIAorCQkgIGFsaWduPSJjZW50ZXIiIHJlc2l6ZT0idHJ1ZSIgCisJCSAgb25tb3VzZW92ZXI9IiIgb25tb3VzZW91dD0iIj4KKwkJPGxhYmVsVG9vbHRpcCBuYW1lPSJfdGlwIiBsYWJlbGlkPSI0NjgiIC8+CisJPC90ZXh0PgorCis8L2NsYXNzPgorCis8Y2xhc3MgbmFtZT0iZGF0ZVNlbGVjdG9yV2VlayIgZXh0ZW5kcz0iYmFzZURhdGVTZWxlY3RvckNvbXBvbmVudCIgCisJCWJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignc2Vjb25kQm9yZGVyQ29sb3InKSB9Ij4KKworCTxhdHRyaWJ1dGUgbmFtZT0id2Vla0luZGV4TnVtYmVyIiB2YWx1ZT0iLTEiIHR5cGU9Im51bWJlciIgLz4KKworCTxhdHRyaWJ1dGUgbmFtZT0iZmlyc3R3ZWVrZGRheWRhdGUiIHZhbHVlPSJudWxsIiAvPgorCQorCTxtZXRob2QgbmFtZT0iaW5pdCI+CisgICAgICAgIDwhW0NEQVRBWyAKKyAgICAgICAgc3VwZXIuaW5pdCgpOworICAgICAgICBmb3IoIHZhciBpID0gMCA7IGkgPCA3IDsgaSsrICkgIHsKKyAgICAgICAgCW5ldyBkYXljbGFzcyh0aGlzLmNvbnRlbnQseworICAgICAgICAJCQkJCQlkYXlkYXRlOm5ldyBEYXRlKGZpcnN0d2Vla2RkYXlkYXRlLmdldFRpbWUoKSsoODY0MDAwMDAqaSkpLAorICAgICAgICAJCQkJCQl3ZWVrSW5kZXhOdW1iZXI6dGhpcy53ZWVrSW5kZXhOdW1iZXIsCisgICAgICAgIAkJCQkJCWRheUluZGV4TnVtYmVyOmkKKyAgICAgICAgCQkJCQl9KTsKKyAgICAgICAJfSAgCisJCV1dPgorCTwvbWV0aG9kPgorCQorCTx2aWV3IG5hbWU9ImNvbnRlbnQiIGxheW91dD0iYXhpczp4O3NwYWNpbmc6MSIgLz4KKwkKKzwvY2xhc3M+CisKKworPGNsYXNzIG5hbWU9ImRhdGVTZWxlY3Rvck1vbnRoIiBleHRlbmRzPSJiYXNlRGF0ZVNlbGVjdG9yQ29tcG9uZW50IiAKKwkJYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdzZWNvbmRCb3JkZXJDb2xvcicpIH0iIGhlaWdodD0iMTM3IiB3aWR0aD0iMTc2Ij4KKyAgICAgICAgICAgIAorCTxhdHRyaWJ1dGUgbmFtZT0ibW9udGgiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJmaXJzdHdlZWtOdW1iZXIiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50TW9udGhOYW1lIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisKKwk8bWV0aG9kIG5hbWU9ImluaXQiPgorICAgICAgICA8IVtDREFUQVsgCisgICAgICAgIHN1cGVyLmluaXQoKTsKKyAgICAgICAgdmFyIGRhdGVSb290ID0gcGFyZW50LnBhcmVudDsKKyAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZGF0ZVJvb3Q6ICIsZGF0ZVJvb3QpOworICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnY3VycmVudE1vbnRoTmFtZScsZGF0ZVJvb3QubW9udGhuYW1lc1ttb250aF0pOyAKKyAgICAgICAgZm9yKCB2YXIgaSA9IDAgOyBpIDwgNiA7IGkrKyApIG5ldyBsei5kYXRlU2VsZWN0b3JXZWVrKHRoaXMuY29udGVudCx7Zmlyc3R3ZWVrZGRheWRhdGU6bmV3IERhdGUodGhpcy5zaG93aW5nZGF0ZS5nZXRUaW1lKCkrKDYwNDgwMDAwMCppKSksZGF5Y2xhc3M6ZGF5Y2xhc3MsbW9udGg6bW9udGgsd2Vla0luZGV4TnVtYmVyOml9KTsgIAorICAgICAgICBmb3IoIHZhciBpID0gMCA7IGkgPCA3IDsgaSsrICkgbmV3IGx6LmRhdGVTZWxlY3RvckRheUhlYWRlcih0aGlzLndlZWtoZWFkZXIse2RheW51bWJlcjoodGhpcy5zaG93aW5nZGF0ZS5nZXREYXkoKStpKX0pOyAgCisJCV1dPgorCTwvbWV0aG9kPiAKKwk8dmlldyBuYW1lPSJoZWFkZXIiIGxheW91dD0iYXhpczp4IiBoZWlnaHQ9IjE4IiBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ3NlY29uZEJvcmRlckNvbG9yJykgfSI+CisJCTx0ZXh0IHdpZHRoPSIyMCIgZmdjb2xvcj0iMHgwMDAwMDAiIGhlaWdodD0iMTgiIAorCQkJb25tb3VzZW92ZXI9InRoaXMuc2V0QXR0cmlidXRlKCdiZ2NvbG9yJywweEZGRkZGRikiIG9ubW91c2VvdXQ9InRoaXMuc2V0QXR0cmlidXRlKCdiZ2NvbG9yJyxjYW52YXMuZ2V0VGhlbWVDb2xvcignc2Vjb25kQm9yZGVyQ29sb3InKSkiPgorCQkJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij48IVtDREFUQVsKKwkJCQl0aGlzLnNldEF0dHJpYnV0ZSgndGV4dCcsJyYjNjA7Jyk7XV0+CisJCQk8L2hhbmRsZXI+CisJCQk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKwkJCQl0aGlzLnBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5zaG93UHJldmlld3NNb250aCgpOworCQkJPC9oYW5kbGVyPgorCQk8L3RleHQ+CisJCTx0ZXh0IHdpZHRoPSIyMiIgZmdjb2xvcj0iMHgwMDAwMDAiIGhlaWdodD0iMTgiCisJCQlvbm1vdXNlb3Zlcj0idGhpcy5zZXRBdHRyaWJ1dGUoJ2JnY29sb3InLDB4RkZGRkZGKSIgb25tb3VzZW91dD0idGhpcy5zZXRBdHRyaWJ1dGUoJ2JnY29sb3InLGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdzZWNvbmRCb3JkZXJDb2xvcicpKSI+CisJCQk8aGFuZGxlciBuYW1lPSJvbmluaXQiPjwhW0NEQVRBWworCQkJCXRoaXMuc2V0QXR0cmlidXRlKCd0ZXh0JywnJiM2MDsmIzYwOycpO11dPgorCQkJPC9oYW5kbGVyPgkJCQorCQkJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisJCQkJdGhpcy5wYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQuc2hvd1ByZXZpZXdzWWVhcigpOworCQkJPC9oYW5kbGVyPgorCQk8L3RleHQ+CQorCQk8dmlldyB3aWR0aD0iOTEiIGhlaWdodD0iJG9uY2V7IHBhcmVudC5oZWlnaHQgfSIgPgorCQkJPHRleHQgZm9udHNpemU9IjEwIiBmZ2NvbG9yPSIweDAwMDAwMCIgYWxpZ249ImNlbnRlciIgdGV4dD0iJHsgcGFyZW50LnBhcmVudC5wYXJlbnQuY3VycmVudE1vbnRoTmFtZSsnICcrcGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC55ZWFyIH0iIHJlc2l6ZT0idHJ1ZSIgLz4KKwkJPC92aWV3PgorCQk8dGV4dCB3aWR0aD0iMjIiIGZnY29sb3I9IjB4MDAwMDAwIiB0ZXh0PSI+PiIgaGVpZ2h0PSIxOCIKKwkJCW9ubW91c2VvdmVyPSJ0aGlzLnNldEF0dHJpYnV0ZSgnYmdjb2xvcicsMHhGRkZGRkYpIiBvbm1vdXNlb3V0PSJ0aGlzLnNldEF0dHJpYnV0ZSgnYmdjb2xvcicsY2FudmFzLmdldFRoZW1lQ29sb3IoJ3NlY29uZEJvcmRlckNvbG9yJykpIj4KKwkJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorCQkJCXRoaXMucGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LnNob3dOZXh0WWVhcigpOworCQkJPC9oYW5kbGVyPgorCQk8L3RleHQ+CisJCTx0ZXh0IHdpZHRoPSIyMCIgZmdjb2xvcj0iMHgwMDAwMDAiIHRleHQ9IiAgPiIgaGVpZ2h0PSIxOCIKKwkJCW9ubW91c2VvdmVyPSJ0aGlzLnNldEF0dHJpYnV0ZSgnYmdjb2xvcicsMHhGRkZGRkYpIiBvbm1vdXNlb3V0PSJ0aGlzLnNldEF0dHJpYnV0ZSgnYmdjb2xvcicsY2FudmFzLmdldFRoZW1lQ29sb3IoJ3NlY29uZEJvcmRlckNvbG9yJykpIj4KKwkJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorCQkJCXRoaXMucGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LnNob3dOZXh0TW9udGgoKTsKKwkJCTwvaGFuZGxlcj4KKwkJPC90ZXh0PgkKKwk8L3ZpZXc+CisJPHZpZXcgbmFtZT0id2Vla2hlYWRlciIgbGF5b3V0PSJheGlzOng7c3BhY2luZzoxIiB4PSIxIiB5PSIxOCIgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdzZWNvbmRCb3JkZXJDb2xvcicpIH0iLz4KKwk8IS0tIAorCTx2aWV3IG5hbWU9IndlZWtOdW1iZXIiIGxheW91dD0iYXhpczp5O3NwYWNpbmc6MSIgeD0iMSIgeT0iMzUiIC8+CisJIC0tPgorCTx2aWV3IG5hbWU9ImNvbnRlbnQiIGxheW91dD0iYXhpczp5O3NwYWNpbmc6MSIgeD0iMSIgeT0iMzUiIC8+Cis8L2NsYXNzPgorCis8Y2xhc3MgbmFtZT0iYmFzZURhdGVTZWxlY3RvciIgZXh0ZW5kcz0iYmFzZURhdGVTZWxlY3RvckNvbXBvbmVudCIgPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0iZGF5TmFtZXNMYWJlbElkcyIgdmFsdWU9Im51bGwiIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJkYXlMYWJlbE5hbWVzTGFiZWxJZHMiIHZhbHVlPSJudWxsIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0ibW9udGhuYW1lcyIgdmFsdWU9IlsnSmFudWFyJywnRmVicnVhcicsJ01hZXJ6JywnQXByaWwnLCdNYWknLCdKdW5pJywnSnVsaScsJ0F1Z3VzdCcsJ1NlcHRlbWJlcicsJ09rdG9iZXInLCdOb3ZlbWJlcicsJ0RlemVtYmVyJ10iLz4gCisKKworCTxhdHRyaWJ1dGUgbmFtZT0iZmlyc3RkYXlpbndlZWsiIHZhbHVlPSIkb25jZXsgY2FudmFzLmZpcnN0ZGF5aW53ZWVrIH0iIHR5cGU9Im51bWJlciIgLz4KKwk8YXR0cmlidXRlIG5hbWU9InllYXIiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwk8YXR0cmlidXRlIG5hbWU9InNlbGVjdGVkZGF0ZSIgdmFsdWU9Im51bGwiIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJzZWxlY3RlZCIgdmFsdWU9Im51bGwiIC8+CisJCisJPGV2ZW50IG5hbWU9Im9uc2VsZWN0IiAvPgorCTxldmVudCBuYW1lPSJvbmRvdWJsZXNlbGVjdCIgLz4KKwkKKwk8ZXZlbnQgbmFtZT0ib25tb250aFNlbCIgLz4KKwk8ZXZlbnQgbmFtZT0ib255ZWFyU2VsIiAvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0iZGF5SW5kZXhOdW1iZXIiIHZhbHVlPSItMSIgdHlwZT0ibnVtYmVyIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0id2Vla0luZGV4TnVtYmVyIiB2YWx1ZT0iLTEiIHR5cGU9Im51bWJlciIgLz4KKwkKKwk8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorCQk8IVtDREFUQVsKKwkJCXRoaXMuZGF5TmFtZXNMYWJlbElkcyA9IFs0NTksNDUzLDQ1NCw0NTUsNDU2LDQ1Nyw0NThdOworCQkJdGhpcy5kYXlMYWJlbE5hbWVzTGFiZWxJZHMgPSBbNDY2LDQ2MCw0NjEsNDYyLDQ2Myw0NjQsNDY1XTsKKwkJCXRoaXMubW9udGhuYW1lcyA9IFtjYW52YXMuZ2V0TGFiZWxOYW1lKDQ2OSksY2FudmFzLmdldExhYmVsTmFtZSg0NzApLAorCQkJCQkJCQljYW52YXMuZ2V0TGFiZWxOYW1lKDQ3MSksY2FudmFzLmdldExhYmVsTmFtZSg0NzIpLAorCQkJCQkJCQljYW52YXMuZ2V0TGFiZWxOYW1lKDQ3MyksY2FudmFzLmdldExhYmVsTmFtZSg0NzQpLAorCQkJCQkJCQljYW52YXMuZ2V0TGFiZWxOYW1lKDQ3NSksY2FudmFzLmdldExhYmVsTmFtZSg0NzYpLAorCQkJCQkJCQljYW52YXMuZ2V0TGFiZWxOYW1lKDQ3NyksY2FudmFzLmdldExhYmVsTmFtZSg0NzgpLAorCQkJCQkJCQljYW52YXMuZ2V0TGFiZWxOYW1lKDQ3OSksY2FudmFzLmdldExhYmVsTmFtZSg0ODApXQorCQkJCisJCQl0aGlzLmluaXQoKTsKKwkJXV0+CisJPC9oYW5kbGVyPgkKKwkKKwk8bWV0aG9kIG5hbWU9ImxvYWREYXRlIiBhcmdzPSJkYXRPYmoiPgorCQl0aGlzLnNob3dpbmdkYXRlID0gZGF0T2JqOworCQl0aGlzLmluaXQoKTsKKwkJdGhpcy5zaG93RGF0ZSh0aGlzLnNlbGVjdGVkZGF0ZSk7CisJCS8vdGhpcy5vbnNlbGVjdC5zZW5kRXZlbnQodGhpcy5zZWxlY3RlZGRhdGUpOworCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0iaW5pdCI+CisgICAgICAgIDwhW0NEQVRBWyAKKwkgICAgICAgIHN1cGVyLmluaXQoKTsKKwkgICAgICAgIAorCSAgICAgICAgdmFyIHRJc0luaXQgPSBmYWxzZTsKKwkgICAgICAgIGlmICh0aGlzLnNob3dpbmdkYXRlPT0iIil7CisJICAgICAgICAJdElzSW5pdCA9IHRydWU7CisJICAgICAgICAJdGhpcy5zaG93aW5nZGF0ZSA9IG5ldyBEYXRlKCk7CisJICAgICAgICB9CisJICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgneWVhcicsdGhpcy5zaG93aW5nZGF0ZS5nZXRGdWxsWWVhcigpKTsKKwkgICAgICAgIHRoaXMuc2VsZWN0ZWRkYXRlID0gdGhpcy5zaG93aW5nZGF0ZTsKKwkgICAgICAgIHZhciBmaXJzdGRheURhdGUgPSB0aGlzLmdldERhdGVGaXJzdERheUluTW9udGgoKTsKKwkgICAgICAgIHRoaXMuY29udGVudC5jb250ZW50LmRlc3Ryb3koKTsKKwkgICAgICAgIG5ldyBsei5kYXRlU2VsZWN0b3JNb250aCh0aGlzLmNvbnRlbnQse25hbWU6J2NvbnRlbnQnLAorCQkgICAgICAgIAlmaXJzdHdlZWtOdW1iZXI6dGhpcy5nZXRXZWVrTnVtYmVyKGZpcnN0ZGF5RGF0ZS5nZXRUaW1lKCkpLAorCQkgICAgICAgIAltb250aDp0aGlzLnNlbGVjdGVkZGF0ZS5nZXRNb250aCgpLAorCQkgICAgICAgIAlzaG93aW5nZGF0ZTpmaXJzdGRheURhdGUsCisJCSAgICAgICAgCWRheWNsYXNzOmRheWNsYXNzLAorCQkgICAgICAgIAl3ZWVrY2xhc3M6d2Vla2NsYXNzLAorCQkgICAgICAgIAlzaG93Y2FsZW5kZXJ3ZWVrOnNob3djYWxlbmRlcndlZWssCisJCSAgICAgICAgCXNob3djYWxlbmRlcm1vbnRoOnNob3djYWxlbmRlcm1vbnRoCisJICAgICAgICAJfSk7CisJICAgICAgICB0aGlzLmhpbGl0ZURhdGUodGhpcy5zaG93aW5nZGF0ZSk7CisJICAgICAgICAvL3RoaXMub25zZWxlY3Quc2VuZEV2ZW50KHRoaXMuc2VsZWN0ZWRkYXRlKTsKKwkgICAgICAgIHZhciByZWYgPSB0aGlzLmNoZWNrVG9kYXkoKTsKKwkgICAgICAgIAorCSAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIklOSVQgIixyZWYscmVmLmRheWRhdGUpOworCSAgICAgICAgCisJICAgICAgICBpZiAocmVmICE9IG51bGwgJiYgdElzSW5pdCkgeworCQkgICAgICAgIHRoaXMuc2VsZWN0RGF0ZShyZWYuZGF5ZGF0ZSwgcmVmLmRheUluZGV4TnVtYmVyLCByZWYud2Vla0luZGV4TnVtYmVyKTsKKwkgICAgICAgIH0KKwkJXV0+CisJPC9tZXRob2Q+CisJCisJPG1ldGhvZCBuYW1lPSJjaGVja1RvZGF5Ij4KKwkJPCFbQ0RBVEFbCisJCXZhciB0RGF0ZSA9IG5ldyBEYXRlKCk7CisgICAgICAgIGlmICh0aGlzLnNob3dpbmdkYXRlLmdldE1vbnRoKCk9PSB0RGF0ZS5nZXRNb250aCgpICYmIHRoaXMuc2hvd2luZ2RhdGUuZ2V0RnVsbFllYXIoKSA9PSB0RGF0ZS5nZXRGdWxsWWVhcigpKXsKKyAgICAgICAgCS8vRGVidWcud3JpdGUoIisrKysrKysgRm91bmQgVG9kYXkiKTsKKyAgICAgICAgCXZhciByZWYgPSB0aGlzLmdldERhdGVSZWZCeURhdGVOdW1iZXIodERhdGUuZ2V0RGF0ZSgpLHREYXRlLmdldE1vbnRoKCkpOworICAgICAgICAJaWYgKHJlZiA9PSBudWxsKSB7CisgICAgICAgIAkJaWYgKCRkZWJ1ZykgRGVidWcud2FybigiQ291bGQgbm90IGZpbmQgZGF0ZSByZWYiLHREYXRlKTsKKyAgICAgICAgCX0KKyAgICAgICAgCXJlZi5zZXRBdHRyaWJ1dGUoJ2JnY29sb3InLDB4Q0VDRUNFKTsKKyAgICAgICAgCXJldHVybiByZWY7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiB0aGlzLmdldERhdGVSZWZCeURhdGVOdW1iZXIodGhpcy5zaG93aW5nZGF0ZS5nZXREYXRlKCksdGhpcy5zaG93aW5nZGF0ZS5nZXRNb250aCgpKQorCQldXT4KKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9InNob3dEYXRlIiBhcmdzPSJkYXRlT2JqIj4KKwkJPCFbQ0RBVEFbCisJCWlmKHRoaXMuc2VsZWN0ZWQhPW51bGwpIHRoaXMuc2VsZWN0ZWQuc2V0QXR0cmlidXRlKCdiZ2NvbG9yJywid2hpdGUiKTsKKwkJdmFyIGk9MDsKKwkJd2hpbGUgKGk8dGhpcy5jb250ZW50LmNvbnRlbnQuY29udGVudC5zdWJ2aWV3cy5sZW5ndGgpeworCQkJdmFyIGs9MDsKKwkJCXdoaWxlIChrPHRoaXMuY29udGVudC5jb250ZW50LmNvbnRlbnQuc3Vidmlld3NbaV0uY29udGVudC5zdWJ2aWV3cy5sZW5ndGgpeworCQkJCXZhciB0ID0gdGhpcy5jb250ZW50LmNvbnRlbnQuY29udGVudC5zdWJ2aWV3c1tpXS5jb250ZW50LnN1YnZpZXdzW2tdLmRheWRhdGU7CisJCQkJaWYgKHQuZ2V0RGF0ZSgpPT1kYXRlT2JqLmdldERhdGUoKSAmJiB0LmdldE1vbnRoKCk9PWRhdGVPYmouZ2V0TW9udGgoKSl7CisJCQkJCXRoaXMuY29udGVudC5jb250ZW50LmNvbnRlbnQuc3Vidmlld3NbaV0uY29udGVudC5zdWJ2aWV3c1trXS5vbmNsaWNrLnNlbmRFdmVudChudWxsKTsKKwkJCQkJcmV0dXJuOworCQkJCX0KKwkJCQlrKys7CisJCQl9CisJCQlpKys7CisJCX0KKwkJXV0+CisJPC9tZXRob2Q+CisJCisJPG1ldGhvZCBuYW1lPSJzZWxlY3REYXRlIiBhcmdzPSJkYXRlT2JqLGRheUluZGV4LHdlZWtJbmRleCI+CisJCWRheUluZGV4TnVtYmVyID0gZGF5SW5kZXg7CisJCXdlZWtJbmRleE51bWJlciA9IHdlZWtJbmRleDsKKwkJdGhpcy5zaG93aW5nZGF0ZSA9IGRhdGVPYmo7CisJCXRoaXMuc2VsZWN0ZWRkYXRlID0gZGF0ZU9iajsKKwkJdGhpcy5oaWxpdGVEYXRlKHRoaXMuc2hvd2luZ2RhdGUpOworCQl0aGlzLmNoZWNrVG9kYXkoKTsKKwkJdGhpcy5vbnNlbGVjdC5zZW5kRXZlbnQodGhpcy5zZWxlY3RlZGRhdGUpOworCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0ic2VsZWN0RG91YmxlRGF0ZSIgYXJncz0iZGF0ZU9iaiI+CisJCXRoaXMuc2hvd2luZ2RhdGUgPSBkYXRlT2JqOworCQl0aGlzLnNlbGVjdGVkZGF0ZSA9IGRhdGVPYmo7CisJCXRoaXMuaGlsaXRlRGF0ZSh0aGlzLnNob3dpbmdkYXRlKTsKKwkJdGhpcy5jaGVja1RvZGF5KCk7CisJCXRoaXMub25kb3VibGVzZWxlY3Quc2VuZEV2ZW50KHRoaXMuc2VsZWN0ZWRkYXRlKTsKKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9ImhpbGl0ZURhdGUiIGFyZ3M9ImRhdGVPYmoiPgorCQk8IVtDREFUQVsKKwkJaWYodGhpcy5zZWxlY3RlZCE9bnVsbCkgdGhpcy5zZWxlY3RlZC5zZXRBdHRyaWJ1dGUoJ2JnY29sb3InLCJ3aGl0ZSIpOworCQl2YXIgaT0wOworCQl3aGlsZSAoaTx0aGlzLmNvbnRlbnQuY29udGVudC5jb250ZW50LnN1YnZpZXdzLmxlbmd0aCl7CisJCQl2YXIgaz0wOworCQkJd2hpbGUgKGs8dGhpcy5jb250ZW50LmNvbnRlbnQuY29udGVudC5zdWJ2aWV3c1tpXS5jb250ZW50LnN1YnZpZXdzLmxlbmd0aCl7CisJCQkJdmFyIHQgPSB0aGlzLmNvbnRlbnQuY29udGVudC5jb250ZW50LnN1YnZpZXdzW2ldLmNvbnRlbnQuc3Vidmlld3Nba10uZGF5ZGF0ZTsKKwkJCQlpZiAodC5nZXREYXRlKCk9PWRhdGVPYmouZ2V0RGF0ZSgpICYmIHQuZ2V0TW9udGgoKT09ZGF0ZU9iai5nZXRNb250aCgpKXsKKwkJCQkJdGhpcy5zZWxlY3RlZCA9IHRoaXMuY29udGVudC5jb250ZW50LmNvbnRlbnQuc3Vidmlld3NbaV0uY29udGVudC5zdWJ2aWV3c1trXTsKKwkJCQkJdGhpcy5zZWxlY3RlZC5zZXRBdHRyaWJ1dGUoJ2JnY29sb3InLDB4Q0NEN0UxKTsKKwkJCQkJcmV0dXJuOworCQkJCX0KKwkJCQlrKys7CisJCQl9CisJCQlpKys7CisJCX0KKwkJXV0+CisJPC9tZXRob2Q+CisJCisJPCEtLSAKKwkJSGVyZSB0aGUgRGF0ZSBoYXMgdG8gYmUgY2hhbmdlZCBzb3RoYXQgdGhlIGZpcnN0ZGF5IGluIHdlZWsgaXMgdGhlIGZpcnN0IGRheSBpbiBtb250aAorCSAtLT4KKwk8bWV0aG9kIG5hbWU9ImdldERhdGVGaXJzdERheUluTW9udGgiPgorCQk8IVtDREFUQVsKKwkJLy9GaXJzdCBjYWxjIHRoZSBkYXRlIGJ5IHRoZSBnaXZlbiBmaXJzdCBkYXkgaW4gd2VlaworCQl2YXIgbmV3RGF0ZVRlbXAgPSBuZXcgRGF0ZSh0aGlzLnNob3dpbmdkYXRlLmdldEZ1bGxZZWFyKCksIHRoaXMuc2hvd2luZ2RhdGUuZ2V0TW9udGgoKSwgMSwgMTIpOyAvL3NldCBob3VycyB0byAxMiB0byBwcmV2ZW50IHRpbWV6b25lIGlzc3VlcworCQkvLy8vRGVidWcud3JpdGUobmV3RGF0ZVRlbXApOworCQl2YXIgZmFjdG9yID0gMDsKKwkJaWYgKG5ld0RhdGVUZW1wLmdldERheSgpPnRoaXMuZmlyc3RkYXlpbndlZWspCQorCQkJZmFjdG9yID0gLSgobmV3RGF0ZVRlbXAuZ2V0RGF5KCktdGhpcy5maXJzdGRheWlud2VlaykpOworCQllbHNlIGlmIChuZXdEYXRlVGVtcC5nZXREYXkoKTx0aGlzLmZpcnN0ZGF5aW53ZWVrKQorCQkJZmFjdG9yID0gKHRoaXMuZmlyc3RkYXlpbndlZWstbmV3RGF0ZVRlbXAuZ2V0RGF5KCkpOworCQkvLy8vRGVidWcud3JpdGUoImZhY3RvcjogIixmYWN0b3IpOworCQkKKwkJLy9jYWxjIGZpcnN0IGRheQorCQl2YXIgbmV3RGF0ZSA9IG5ldyBEYXRlKCAobmV3RGF0ZVRlbXAuZ2V0VGltZSgpKyg4NjQwMDAwMCpmYWN0b3IpKSApOworCisJCS8vaWYgdGhlIGZpcnN0IGRheSBpcyBhZnRlciB0aGUgZmlyc3QgZGF5IG9mIHRoZSBzZWxlY3RlZCBtb250aCB0aGVuIHdlIGhhdmUgdG8gYWRkIDcgRGF5cworCQlpZiAobmV3RGF0ZS5nZXREYXRlKCk+MSAmJiBuZXdEYXRlLmdldE1vbnRoKCk9PW5ld0RhdGVUZW1wLmdldE1vbnRoKCkpeworCQkJbmV3RGF0ZSA9IG5ldyBEYXRlKCAobmV3RGF0ZS5nZXRUaW1lKCktKDg2NDAwMDAwKjcpKSApOworCQl9CisJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJnZXREYXRlRmlyc3REYXlJbk1vbnRoICIsbmV3RGF0ZSk7CisJCXJldHVybiBuZXdEYXRlOworCQldXT4KKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9Imlzb1dlZWtEYXlzIiBhcmdzPSJ5ZGF5LHdkYXkiID4KKwkJPCFbQ0RBVEFbCisJCXJldHVybiB5ZGF5IC0gKCh5ZGF5IC0gd2RheSArIDM4MikgJSA3KSArIDM7CisJCV1dPgorCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0iaXNMZWFwWWVhciIgYXJncz0ieWVhciIgPgorCQk8IVtDREFUQVsKKwkJaWYgKCgoeWVhciAlIDQpID09IDAgJiYgKHllYXIgJSAxMDApIT0wKSB8fCAoeWVhciAlIDQwMCk9PTApCisJCQlyZXR1cm4gMTsKKwkJZWxzZQorCQkJcmV0dXJuIDA7CisJCV1dPgorCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0iZ2V0RGF5c0luTW9udGgiIGFyZ3M9ImlZZWFyLGlNb250aCIgPgorCQk8IVtDREFUQVsKKwkJCXJldHVybiAzMiAtIG5ldyBEYXRlKGlZZWFyLCBpTW9udGgsIDMyKS5nZXREYXRlKCk7CisJCV1dPgorCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0iZ2V0V2Vla051bWJlciIgYXJncz0iRGF0ZUluTWlsbGlzZWNvbmRzIiA+CisJCTwhW0NEQVRBWworCQl2YXIgZCA9IG5ldyBEYXRlKERhdGVJbk1pbGxpc2Vjb25kcyk7CisJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJnZXRXZWVrTnVtYmVyOiAiLGQpOworCQl2YXIgTnVtZXJPZkRheXNJbiA9IGQuZ2V0RGF0ZSgpOworCQkKKwkJZm9yICh2YXIgaT0wO2k8ZC5nZXRNb250aCgpO2krKykgeworCQkJdmFyIG1vbnRoRGF5cyA9IHRoaXMuZ2V0RGF5c0luTW9udGgoZC5nZXRGdWxsWWVhcigpLGQuZ2V0TW9udGgoKSk7CisJCQlOdW1lck9mRGF5c0luKz1tb250aERheXM7CisJCX0KKwkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIk51bWVyT2ZEYXlzSW4sbW9udGg6ICIsTnVtZXJPZkRheXNJbixkLmdldE1vbnRoKCkpOworCQkKKwkJdmFyIGRheXMgPSB0aGlzLmlzb1dlZWtEYXlzKE51bWVyT2ZEYXlzSW4sZC5nZXREYXkoKSk7CisJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJkYXlzOiAiLGRheXMpOworCQkKKwkJaWYgKGRheXMgPCAwKSB7CisJCQlOdW1lck9mRGF5c0luICs9IDM2NSArIGlzTGVhcFllYXIoLS1OdW1lck9mRGF5c0luKTsKKwkJCWRheXMgPSB0aGlzLmlzb1dlZWtEYXlzKE51bWVyT2ZEYXlzSW4sIGQuZ2V0RGF5KCkpOworCQl9IGVsc2UgeworCQkJTnVtZXJPZkRheXNJbiAtPSAzNjUgKyBpc0xlYXBZZWFyKE51bWVyT2ZEYXlzSW4pOworCQkJdmFyIGQyID0gdGhpcy5pc29XZWVrRGF5cyhOdW1lck9mRGF5c0luLGQuZ2V0RGF5KCkpOworCQkJaWYgKDAgPD0gZDIpIHsKKwkJCQlkYXlzID0gZDI7CisJCQl9CisJCX0KKworCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZGF5czogIixkYXlzKTsKKwkJCisJCXJldHVybiAoTWF0aC5mbG9vcigoZGF5cyAvIDcpKSk7CisJCV1dPgorCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0iY2xlYXJDb250ZW50Ij4KKwkJdGhpcy5jb250ZW50LmRlc3Ryb3koKTsKKwkJbmV3IEx6Vmlldyh0aGlzLHtuYW1lOidjb250ZW50J30pOworCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0ic2hvd1ByZXZpZXdzTW9udGgiPgorCQk8IVtDREFUQVsKKwkJdGhpcy5jbGVhckNvbnRlbnQoKTsKKwkJdmFyIHByZXllYXIgPSB0aGlzLnNob3dpbmdkYXRlLmdldEZ1bGxZZWFyKCk7CisJCXZhciBwcmV2aWV3c01vbnRoID0gdGhpcy5zaG93aW5nZGF0ZS5nZXRNb250aCgpLTE7CisJCWlmIChwcmV2aWV3c01vbnRoPDApIHsKKwkJCXByZXZpZXdzTW9udGg9MTE7CisJCQlwcmV5ZWFyLS07CisJCX0KKwkJdGhpcy5zaG93aW5nZGF0ZSA9IG5ldyBEYXRlKHByZXllYXIsIHByZXZpZXdzTW9udGgsIHRoaXMuc2hvd2luZ2RhdGUuZ2V0RGF0ZSgpKTsKKwkJdGhpcy5vbm1vbnRoU2VsLnNlbmRFdmVudChwcmV2aWV3c01vbnRoKTsKKwkJdGhpcy5pbml0KCk7CisJCV1dPgorCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0ic2hvd05leHRNb250aCI+CisJCTwhW0NEQVRBWworCQl0aGlzLmNsZWFyQ29udGVudCgpOworCQl2YXIgbmV4dHllYXIgPSB0aGlzLnNob3dpbmdkYXRlLmdldEZ1bGxZZWFyKCk7CisJCXZhciBuZXh0TW9udGggPSB0aGlzLnNob3dpbmdkYXRlLmdldE1vbnRoKCkrMTsKKwkJaWYgKG5leHRNb250aD4xMSkgeworCQkJbmV4dE1vbnRoPTA7CisJCQluZXh0eWVhcisrOworCQl9CQkKKwkJdGhpcy5zaG93aW5nZGF0ZSA9IG5ldyBEYXRlKG5leHR5ZWFyLCBuZXh0TW9udGgsIHRoaXMuc2hvd2luZ2RhdGUuZ2V0RGF0ZSgpKTsKKwkJdGhpcy5vbm1vbnRoU2VsLnNlbmRFdmVudChuZXh0TW9udGgpOworCQl0aGlzLmluaXQoKTsKKwkJXV0+CisJPC9tZXRob2Q+CisJCisJPG1ldGhvZCBuYW1lPSJzaG93UHJldmlld3NZZWFyIj4KKwkJdGhpcy5jbGVhckNvbnRlbnQoKTsKKwkJdGhpcy5zaG93aW5nZGF0ZSA9IG5ldyBEYXRlKHRoaXMuc2hvd2luZ2RhdGUuZ2V0RnVsbFllYXIoKS0xLCB0aGlzLnNob3dpbmdkYXRlLmdldE1vbnRoKCksIHRoaXMuc2hvd2luZ2RhdGUuZ2V0RGF0ZSgpKTsKKwkJdGhpcy5vbnllYXJTZWwuc2VuZEV2ZW50KHRoaXMuc2hvd2luZ2RhdGUuZ2V0RnVsbFllYXIoKSk7CisJCXRoaXMuaW5pdCgpOworCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0ic2hvd05leHRZZWFyIj4KKwkJdGhpcy5jbGVhckNvbnRlbnQoKTsKKwkJdGhpcy5zaG93aW5nZGF0ZSA9IG5ldyBEYXRlKHRoaXMuc2hvd2luZ2RhdGUuZ2V0RnVsbFllYXIoKSsxLCB0aGlzLnNob3dpbmdkYXRlLmdldE1vbnRoKCksIHRoaXMuc2hvd2luZ2RhdGUuZ2V0RGF0ZSgpKTsKKwkJdGhpcy5vbnllYXJTZWwuc2VuZEV2ZW50KHRoaXMuc2hvd2luZ2RhdGUuZ2V0RnVsbFllYXIoKSk7CisJCXRoaXMuaW5pdCgpOworCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0iZ2V0RGF0ZVJlZkJ5RGF0ZU51bWJlciIgYXJncz0iZGF5TnVtYmVyLG1vbnRoIj4KKwkJPCFbQ0RBVEFbCisJCS8vLy9EZWJ1Zy53cml0ZSh0aGlzLmNvbnRlbnQuY29udGVudC5jb250ZW50KTsKKwkJZm9yICh2YXIgaT0wO2k8dGhpcy5jb250ZW50LmNvbnRlbnQuY29udGVudC5zdWJ2aWV3cy5sZW5ndGg7aSsrKXsKKwkJCS8vLy9EZWJ1Zy53cml0ZSgidGhpcy5jb250ZW50LmNvbnRlbnQuY29udGVudC5zdWJ2aWV3czogIixpLHRoaXMuY29udGVudC5jb250ZW50LmNvbnRlbnQuc3Vidmlld3NbaV0pOworCQkJZm9yICh2YXIgaz0wO2s8dGhpcy5jb250ZW50LmNvbnRlbnQuY29udGVudC5zdWJ2aWV3c1tpXS5jb250ZW50LnN1YnZpZXdzLmxlbmd0aDtrKyspeworCQkJCS8vLy9EZWJ1Zy53cml0ZSgidGhpcy5jb250ZW50LmNvbnRlbnQuY29udGVudC5zdWJ2aWV3c1tpXS5jb250ZW50LnN1YnZpZXdzW2tdLmRheWRhdGUuZ2V0RGF0ZSgpOiAiLHRoaXMuY29udGVudC5jb250ZW50LmNvbnRlbnQuc3Vidmlld3NbaV0uY29udGVudC5zdWJ2aWV3c1trXS5kYXlkYXRlLmdldERhdGUoKSxkYXlOdW1iZXIpOworCQkJCS8vLy9EZWJ1Zy53cml0ZSgidGhpcy5jb250ZW50LmNvbnRlbnQuY29udGVudC5zdWJ2aWV3c1tpXS5jb250ZW50LnN1YnZpZXdzW2tdLmRheWRhdGUuZ2V0TW9udGgoKTogIix0aGlzLmNvbnRlbnQuY29udGVudC5jb250ZW50LnN1YnZpZXdzW2ldLmNvbnRlbnQuc3Vidmlld3Nba10uZGF5ZGF0ZS5nZXRNb250aCgpLG1vbnRoKTsKKwkJCQlpZih0aGlzLmNvbnRlbnQuY29udGVudC5jb250ZW50LnN1YnZpZXdzW2ldLmNvbnRlbnQuc3Vidmlld3Nba10uZGF5ZGF0ZS5nZXREYXRlKCk9PWRheU51bWJlciAmJiB0aGlzLmNvbnRlbnQuY29udGVudC5jb250ZW50LnN1YnZpZXdzW2ldLmNvbnRlbnQuc3Vidmlld3Nba10uZGF5ZGF0ZS5nZXRNb250aCgpPT1tb250aCl7CisJCQkJCXJldHVybiB0aGlzLmNvbnRlbnQuY29udGVudC5jb250ZW50LnN1YnZpZXdzW2ldLmNvbnRlbnQuc3Vidmlld3Nba107CisJCQkJfQorCQkJCS8vLy9EZWJ1Zy53cml0ZSgiazogIixrLHRoaXMuY29udGVudC5jb250ZW50LmNvbnRlbnQuc3Vidmlld3NbaV0uY29udGVudC5zdWJ2aWV3c1trXSk7CisJCQkJLy8vL0RlYnVnLndyaXRlKHRoaXMuY29udGVudC5jb250ZW50LmNvbnRlbnQuc3Vidmlld3NbaV0uY29udGVudC5zdWJ2aWV3c1trXS5kYXlkYXRlKTsKKwkJCX0KKwkJfQorCQlyZXR1cm4gbnVsbDsKKwkJXV0+CisJPC9tZXRob2Q+CisJCisJPHZpZXcgbmFtZT0iY29udGVudCI+CisJCTx2aWV3IG5hbWU9ImNvbnRlbnQiIC8+CisJPC92aWV3PgorCis8L2NsYXNzPgorCis8Y2xhc3MgbmFtZT0iZGF0ZVNlbGVjdG9yIiBleHRlbmRzPSJiYXNlRGF0ZVNlbGVjdG9yIgorCXdlZWtjbGFzcz0ibHouZGF0ZVNlbGVjdG9yV2VlayIgZGF5Y2xhc3M9Imx6LmRhdGVTZWxlY3RvckRheSIgbW9udGhjbGFzcz0ibHouZGF0ZVNlbGVjdG9yTW9udGgiID4KKworPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2NhbGVuZGFyL2xpYnJhcnkubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2NhbGVuZGFyL2xpYnJhcnkubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxZTBkMGUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvY2FsZW5kYXIvbGlicmFyeS5sengKQEAgLTAsMCArMSwyNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworCTxpbmNsdWRlIGhyZWY9ImRhdGVTZWxlY3Rvci5sengiIC8+CisJPGluY2x1ZGUgaHJlZj0iZGF0ZUZpZWxkLmx6eCIgLz4KKwk8aW5jbHVkZSBocmVmPSJjYWxlbmRhcldpbmRvdy5sengiIC8+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9jb25mZXJlbmNlYm94L2NvbmZlcmVuY2VCb3gubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2NvbmZlcmVuY2Vib3gvY29uZmVyZW5jZUJveC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGIwZWM0MAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9jb25mZXJlbmNlYm94L2NvbmZlcmVuY2VCb3gubHp4CkBAIC0wLDAgKzEsOTggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+ICAgICAKKworPGNsYXNzIG5hbWU9ImNvbmZlcmVuY2VCb3giIGV4dGVuZHM9InZpZXciIHdpZHRoPSIyNTAiIGhlaWdodD0iNDAwIiA+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJsYWJlbGlkIiB0eXBlPSJudW1iZXIiIHNldHRlcj0ic2V0TGFiZWxJZChsYWJlbGlkKSIgLz4KKyAgICA8bWV0aG9kIG5hbWU9InNldExhYmVsSWQiIGFyZ3M9Il9sYWJlbGlkIiA+CisgICAgICAgIHRoaXMubGFiZWxpZCA9IF9sYWJlbGlkOworICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnaGVhZGVyVGV4dCcsY2FudmFzLmdldExhYmVsTmFtZSh0aGlzLmxhYmVsaWQpKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9ImhlYWRlclRleHQiIHZhbHVlPSJVc2VycyIgdHlwZT0ic3RyaW5nIiAvPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0iY2xvc2VhYmxlIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpc29wZW4iIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0idGV4dEluc2V0IiB2YWx1ZT0iMTAiIHR5cGU9Im51bWJlciIgLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9ImluaXRIZWlnaHQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9ImNsb3NlZEhlaWdodCIgdmFsdWU9IjQwIiB0eXBlPSJudW1iZXIiLz4KKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgICAgICBpZiAodGhpcy5pbml0SGVpZ2h0ID09IDApIHsKKyAgICAgICAgICAgIHRoaXMuaW5pdEhlaWdodCA9IHRoaXMuaGVpZ2h0OworICAgICAgICB9CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iZG9PcGVuIj4KKyAgICAgICAgaWYgKCF0aGlzLmlzb3BlbikgeworICAgICAgICAgICAgdGhpcy50b2dnbGVvcGVuKCk7CisgICAgICAgIH0KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InRvZ2dsZW9wZW4iPgorICAgICAgICBpZiAodGhpcy5pc29wZW4pIHsKKyAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJpc29wZW4iLGZhbHNlKTsKKyAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJoZWlnaHQiLHRoaXMuY2xvc2VkSGVpZ2h0KTsKKyAgICAgICAgICAgIHRoaXMuY29udGVudC5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJpc29wZW4iLHRydWUpOworICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoImhlaWdodCIsdGhpcy5pbml0SGVpZ2h0KTsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInRvZ2dsZW9wZW4gVFJVRSAiLHRoaXMuaW5pdEhlaWdodCkKKyAgICAgICAgICAgIHRoaXMuY29udGVudC5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgIH0KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8dmlldyBuYW1lPSJfaGVhZCIgeD0iMCIgeT0iMCIgd2lkdGg9IiR7IHBhcmVudC53aWR0aCB9IiBoZWlnaHQ9IjI0IiAKKyAgICAJICBjbGlja2FibGU9IiRvbmNleyB0aGlzLnBhcmVudC5jbG9zZWFibGUgfSIgPgorICAgICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgIAlpZiAodGhpcy5wYXJlbnQuY2xvc2VhYmxlKSB7CisgICAgICAgIAkJdGhpcy5wYXJlbnQudG9nZ2xlb3BlbigpOworICAgICAgICAJfQorICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIAorICAgICAgICA8dmlldyB4PSI4IiB5PSI0IiB2aXNpYmxlPSIkeyB0aGlzLnBhcmVudC5wYXJlbnQuY2xvc2VhYmxlIH0iPgorICAgICAgICAgICAgCisJICAgICAgICA8dmlldyB2aXNpYmxlPSIkeyAhdGhpcy5wYXJlbnQucGFyZW50LnBhcmVudC5pc29wZW4gfSIgeD0iMiIgeT0iMyIgcmVzb3VyY2U9ImNvbmZlcmVuY2VCb3hfYnV0dG9uX21pbl9yc2MiPgorCSAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2V1cCI+CisJICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnBhcmVudC5wYXJlbnQudG9nZ2xlb3BlbigpOworCSAgICAgICAgICAgIDwvaGFuZGxlcj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJICAgICAgICA8L3ZpZXc+CisJICAgICAgICA8dmlldyB2aXNpYmxlPSIkeyB0aGlzLnBhcmVudC5wYXJlbnQucGFyZW50Lmlzb3BlbiB9IiB4PSIyIiB5PSIzIiByZXNvdXJjZT0iY29uZmVyZW5jZUJveF9idXR0b25fbWF4X3JzYyI+CisJICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZXVwIj4KKwkgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQucGFyZW50LnBhcmVudC50b2dnbGVvcGVuKCk7CisJICAgICAgICAgICAgPC9oYW5kbGVyPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKwkgICAgICAgIDwvdmlldz4KKyAgICAgICAgICAgIAorICAgICAgICA8L3ZpZXc+CisKKyAgICAgICAgPHRleHQgeD0iJG9uY2V7IHBhcmVudC5wYXJlbnQudGV4dEluc2V0IH0iIGZvbnRzdHlsZT0iYm9sZCIgZm9udHNpemU9IjE0IiBmZ2NvbG9yPSIweEZGRkZGRiIgCisgICAgICAgICAgICAgIHRleHQ9IiR7IHBhcmVudC5wYXJlbnQuaGVhZGVyVGV4dCB9IiB2YWxpZ249Im1pZGRsZSI+PC90ZXh0PgorICAgICAgICAKKyAgICA8L3ZpZXc+ICAKKworPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2NvbmZlcmVuY2Vib3gvbGlicmFyeS5senggYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvY29uZmVyZW5jZWJveC9saWJyYXJ5Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDBlMjgwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2NvbmZlcmVuY2Vib3gvbGlicmFyeS5sengKQEAgLTAsMCArMSwzMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKyAgICAKKyAgICA8cmVzb3VyY2UgbmFtZT0iY29uZmVyZW5jZUJveF9idXR0b25fbWluX3JzYyIgc3JjPSJyZXNvdXJjZXMvYm94X2Nsb3NlZC5wbmciIC8+CisgICAgCisgICAgPHJlc291cmNlIG5hbWU9ImNvbmZlcmVuY2VCb3hfYnV0dG9uX21heF9yc2MiIHNyYz0icmVzb3VyY2VzL2JveF9vcGVuLnBuZyIgLz4KKyAgICAKKyAgICA8cmVzb3VyY2UgbmFtZT0ia2FsZWlkb3Njb3BlX3RleHRib3hfbWlsayIgCisgICAgICAgICAgc3JjPSJyZXNvdXJjZXMvbWlsay5zd2YiIC8+CisKKyAgICA8aW5jbHVkZSBocmVmPSJjb25mZXJlbmNlQm94Lmx6eCIgLz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2NvbmZlcmVuY2Vib3gvcmVzb3VyY2VzL2JveF9jbG9zZWQuZmxhIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2NvbmZlcmVuY2Vib3gvcmVzb3VyY2VzL2JveF9jbG9zZWQuZmxhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2ZTc0NTkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvY29uZmVyZW5jZWJveC9yZXNvdXJjZXMvYm94X2Nsb3NlZC5mbGEKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2NvbmZlcmVuY2Vib3gvcmVzb3VyY2VzL2JveF9jbG9zZWQucG5nIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2NvbmZlcmVuY2Vib3gvcmVzb3VyY2VzL2JveF9jbG9zZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5ZjIwYTMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvY29uZmVyZW5jZWJveC9yZXNvdXJjZXMvYm94X2Nsb3NlZC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2NvbmZlcmVuY2Vib3gvcmVzb3VyY2VzL2JveF9vcGVuLmZsYSBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9jb25mZXJlbmNlYm94L3Jlc291cmNlcy9ib3hfb3Blbi5mbGEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWVhODVhNwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9jb25mZXJlbmNlYm94L3Jlc291cmNlcy9ib3hfb3Blbi5mbGEKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2NvbmZlcmVuY2Vib3gvcmVzb3VyY2VzL2JveF9vcGVuLnBuZyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9jb25mZXJlbmNlYm94L3Jlc291cmNlcy9ib3hfb3Blbi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjU4NzNhOAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9jb25mZXJlbmNlYm94L3Jlc291cmNlcy9ib3hfb3Blbi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2NvbmZlcmVuY2Vib3gvcmVzb3VyY2VzL21pbGsuc3dmIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2NvbmZlcmVuY2Vib3gvcmVzb3VyY2VzL21pbGsuc3dmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1MmExZjgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvY29uZmVyZW5jZWJveC9yZXNvdXJjZXMvbWlsay5zd2YKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2R5bmFtaWNDb21ib2JveC9jb3VudHJ5Q29tYm9ib3gubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2R5bmFtaWNDb21ib2JveC9jb3VudHJ5Q29tYm9ib3gubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxZjFkMWIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvZHluYW1pY0NvbWJvYm94L2NvdW50cnlDb21ib2JveC5sengKQEAgLTAsMCArMSw2OCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9ImNvdW50cnlDb21ib2JveCIgZXh0ZW5kcz0icmVzZXRDb21ib2JveCIgZWRpdGFibGU9ImZhbHNlIiAKKwkgICBmb250c2l6ZT0iMTEiIHN0eWxlPSJjb21wb25lbnRTdHlsZSI+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJyZWZPYmoiIHZhbHVlPSJudWxsIiAvPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0iZG9VcGRhdGUiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIvPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9uc2VsZWN0IiBhcmdzPSJzZWwiPgorICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib25zZWxlY3QgIixzZWwsdGhpcy5yZWZPYmosdGhpcy5kb1VwZGF0ZSk7CisgICAgCWlmICh0aGlzLnJlZk9iaiAhPSBudWxsKSB7CisgICAgCQlpZiAodGhpcy5kb1VwZGF0ZSkgeworICAgIAkJCQorICAgIAkJCXRoaXMucmVmT2JqLnNldFNlbGVjdGVkVmFsdWUoc2VsLnRleHQsc2VsLnZhbHVlKTsKKyAgICAJCQkKKyAgICAJCQl0aGlzLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgIAkJCXRoaXMuZG9VcGRhdGUgPSBmYWxzZTsKKyAgICAJCQkKKyAgICAJCX0KKyAgICAJfQorICAgIDwvaGFuZGxlcj4KKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbmlzb3BlbiIgYXJncz0ibyI+CisgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbiBpc29wZW4gIixvKTsKKyAgICAgICAgCisgICAgICAgIGlmICghbykgeworICAgICAgICAgICAgbHouVGltZXIuYWRkVGltZXIoIG5ldyBMekRlbGVnYXRlKCB0aGlzLCAicmVtb3ZlSXRlbSIgKSwgMjAwICk7CisgICAgICAgIH0KKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPCEtLQorICAgICAgICBZb3UgY2FuIGNsb3NlIHRoZSBjb21ib2JveCB3aXRob3V0IHNlbGVjdGlvbiwgZm9yIHRoYXQgcHVycG9zZSB3ZSBuZWVkCisgICAgICAgIGFub3RoZXIgd2F5IHRvIHRyaWdnZXIgYSBjbG9zZSBldmVudAorICAgICAtLT4KKyAgICA8bWV0aG9kIG5hbWU9InJlbW92ZUl0ZW0iIGFyZ3M9Im8iPgorICAgICAgICBpZiAodGhpcy52aXNpYmlsaXR5ID09ICJ2aXNpYmxlIikgeworCSAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKwkgICAgICAgIHRoaXMuZG9VcGRhdGUgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxsYWJlbGRUZXh0TGlzdEl0ZW0gZGF0YXBhdGg9ImNvdW50cnlTZXQ6L2l0ZW0iIHRleHQ9IiRwYXRoeyAnbmFtZS90ZXh0KCknIH0iIAorICAgICAgICAgICAgICAgIHZhbHVlPSIkcGF0aHsgJ3N0YXRlX2lkL3RleHQoKScgfSIgLz4KKyAgIAorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2R5bmFtaWNDb21ib2JveC9keW5hbWljQ29tYm9ib3gubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2R5bmFtaWNDb21ib2JveC9keW5hbWljQ29tYm9ib3gubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyZTQxZTYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvZHluYW1pY0NvbWJvYm94L2R5bmFtaWNDb21ib2JveC5sengKQEAgLTAsMCArMSw5NCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKwkKKwkKKzxjb3VudHJ5Q29tYm9ib3ggbmFtZT0iX2NvdW50cnlDb21ib2JveCIgd2lkdGg9IjIwMCIgc2hvd25pdGVtcz0iMTQiCisJCQkJIGhlaWdodD0iMjAiIHZpc2liaWxpdHk9ImhpZGRlbiIgLz4KKworPGNsYXNzIG5hbWU9ImR5bmFtaWNDb21ib2JveCIgZXh0ZW5kcz0iYmFzZWZvcm1pdGVtIiBzdHlsZT0iY29tcG9uZW50U3R5bGUiPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0iaXNDb3VudHJ5Q29tYm9ib3giIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPgorICAgIAorICAgIDxldmVudCBuYW1lPSJvbnNlbGVjdCIgLz4KKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAJPCFbQ0RBVEFbCisgICAgCQlpZiAodGhpcy5pc0NvdW50cnlDb21ib2JveCkgeworICAgIAkJCQorICAgIAkJCWNhbnZhcy5fY291bnRyeUNvbWJvYm94LnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKyAgICAJCQljYW52YXMuX2NvdW50cnlDb21ib2JveC5icmluZ1RvRnJvbnQoKTsKKyAgICAJCQljYW52YXMuX2NvdW50cnlDb21ib2JveC5zZXRBdHRyaWJ1dGUoIngiLHRoaXMuZ2V0QXR0cmlidXRlUmVsYXRpdmUoIngiLGNhbnZhcykpOworICAgIAkJCWNhbnZhcy5fY291bnRyeUNvbWJvYm94LnNldEF0dHJpYnV0ZSgieSIsdGhpcy5nZXRBdHRyaWJ1dGVSZWxhdGl2ZSgieSIsY2FudmFzKSk7CisgICAgCQkJY2FudmFzLl9jb3VudHJ5Q29tYm9ib3guc2V0QXR0cmlidXRlKCJ3aWR0aCIsdGhpcy53aWR0aCk7CisgICAgCQkJY2FudmFzLl9jb3VudHJ5Q29tYm9ib3guc2V0QXR0cmlidXRlKCJoZWlnaHQiLHRoaXMuaGVpZ2h0KTsKKyAgICAJCQkKKyAgICAJCQljYW52YXMuX2NvdW50cnlDb21ib2JveC5yZWZPYmogPSB0aGlzOworICAgIAkJCQorICAgIAkJCXZhciBpdGVtID0gY2FudmFzLl9jb3VudHJ5Q29tYm9ib3guZ2V0SXRlbSh0aGlzLnZhbHVlKTsKKyAgICAJCQkKKyAgICAJCQlpZiAoaXRlbSAhPSBudWxsKSB7CisgICAgCQkJCWNhbnZhcy5fY291bnRyeUNvbWJvYm94LnNlbGVjdEl0ZW0odGhpcy52YWx1ZSk7CisgICAgCQkJfSBlbHNlIHsKKyAgICAJCQkJY2FudmFzLl9jb3VudHJ5Q29tYm9ib3guc2VsZWN0SXRlbUF0KDApOworICAgIAkJCX0KKyAgICAJCQkKKyAgICAJCQljYW52YXMuX2NvdW50cnlDb21ib2JveC5zZXRPcGVuKHRydWUsdHJ1ZSk7CisgICAgCQkJCisgICAgCQkJY2FudmFzLl9jb3VudHJ5Q29tYm9ib3guZG9VcGRhdGUgPSB0cnVlOworICAgIAkJfQorICAgIAldXT4KKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPCEtLSB0byBtYWtlIGl0IGJhY2t3YXJkIGNvbXBhdGlibGUgLS0+CisgICAgPG1ldGhvZCBuYW1lPSJhZGRBbmRTZWxlY3RJdGVtIiBhcmdzPSJuYW1lLGlkIj4KKyAgICAJdGhpcy5zZWxlY3RJdGVtQnlUZXh0VmFsdWUobmFtZSxpZCk7CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJzZWxlY3RJdGVtQnlUZXh0VmFsdWUiIGFyZ3M9InRleHQsdmFsdWUiPgorICAgIAl0aGlzLnNldEF0dHJpYnV0ZSgidGV4dCIsdGV4dCk7CisgICAgCXRoaXMuc2V0QXR0cmlidXRlKCJ2YWx1ZSIsdmFsdWUpOworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0ic2V0U2VsZWN0ZWRWYWx1ZSIgYXJncz0idGV4dCx2YWx1ZSI+CisgICAgCXRoaXMuc2V0QXR0cmlidXRlKCJ0ZXh0Iix0ZXh0KTsKKyAgICAJdGhpcy5zZXRBdHRyaWJ1dGUoInZhbHVlIix2YWx1ZSk7CisgICAgCWx6LkZvY3VzLnNldEZvY3VzKHRoaXMpOworICAgIAl0aGlzLm9uc2VsZWN0LnNlbmRFdmVudCh7J3RleHQnOnRleHQsJ3ZhbHVlJzp2YWx1ZX0pOworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPgorICAgIAlyZXR1cm4gdGhpcy52YWx1ZTsKKyAgICA8L21ldGhvZD4KKyAgICAKKwk8dmlldyBuYW1lPSJsZnQiIHJlc291cmNlPSJsemNvbWJvYm94X2xmdF9yc2MiIHBsYWNlbWVudD0iYmtnbmQiLz4KKwk8dmlldyBuYW1lPSJtaWQiIHJlc291cmNlPSJsemNvbWJvYm94X21pZF9yc2MiIHN0cmV0Y2hlcz0id2lkdGgiIHBsYWNlbWVudD0iYmtnbmQiLz4KKwk8YmFzZWJ1dHRvbiBuYW1lPSJyZ3QiIHJlc291cmNlPSJsemNvbWJvYm94X3JndF9yc2MiIHN0eWxlYWJsZT0idHJ1ZSIKKyAgICAgICAgICAgICAgICBwbGFjZW1lbnQ9ImJrZ25kIiBjbGlja2FibGU9ImZhbHNlIiAvPgorICAgCisgICAJPHRleHQgeD0iMiIgeT0iMiIgbmFtZT0iY2J0ZXh0IiB0ZXh0PSIkeyBwYXJlbnQudGV4dCB9IgorICAgCQkgIHdpZHRoPSIkeyBwYXJlbnQud2lkdGggLSAyMCB9IiAvPgorICAgICAgICAgICAgICAgICAgICAKKyAgICA8c3RhYmxlYm9yZGVybGF5b3V0IGF4aXM9IngiIHBsYWNlbWVudD0iYmtnbmQiLz4KKyAgICAKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9keW5hbWljQ29tYm9ib3gvbGlicmFyeS5senggYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvZHluYW1pY0NvbWJvYm94L2xpYnJhcnkubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0YTAyOWMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvZHluYW1pY0NvbWJvYm94L2xpYnJhcnkubHp4CkBAIC0wLDAgKzEsMjYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKyAgICA8aW5jbHVkZSBocmVmPSJkeW5hbWljQ29tYm9ib3gubHp4IiAvPgorICAgIDxpbmNsdWRlIGhyZWY9ImNvdW50cnlDb21ib2JveC5sengiIC8+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9leHBsb3JlckJveC5senggYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvZXhwbG9yZXJCb3gubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkMmU4ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvZXhwbG9yZXJCb3gubHp4CkBAIC0wLDAgKzEsNDA2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8Y2xhc3MgbmFtZT0iZXhwbG9yZXJCb3giIGV4dGVuZHM9InZpZXciIHdpZHRoPSIyNTAiIHk9IjEwMCIgdmlzaWJpbGl0eT0iaGlkZGVuIgorICAgIGhlaWdodD0iNDAwIiBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ3N0eWxlTWVudUJhckJhc2VDb2xvcicpIH0iIAorCW9ubW91c2Vkb3duPSJ0aGlzLl9zdGFydERyYWdTdGF0ZSh0aGlzKSIgb25tb3VzZXVwPSJ0aGlzLl9yZW1vdmVEcmFnU3RhdGUodGhpcykiID4KKworCTxhdHRyaWJ1dGUgbmFtZT0ic2hvd1dpbmRvd0VmZmVjdCIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0iYW5uaW1hdGlvblN0YXJ0U3R5bGUiIHZhbHVlPSJjZW50ZXIiIHR5cGU9InN0cmluZyIgLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9ImFubmltYXRpb25Db2xvciIgdmFsdWU9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignYmFzZWJnY29sb3JpemVyJykgfSIgdHlwZT0ic3RyaW5nIiAvPgorCisJPGV2ZW50IG5hbWU9ImFuaW1hdGlvbkluaXRlZCIgLz4KKworICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgCTwhW0NEQVRBWworCSAgICAJLy9pZigkZGVidWcpIERlYnVnLndyaXRlKCJleHBsb3JlckJveC9vbmluaXQgc2hvd1dpbmRvd0VmZmVjdD8gIixjYW52YXMuc2hvd1dpbmRvd0VmZmVjdCk7CisJICAgIAlpZiAoY2FudmFzLnNob3dXaW5kb3dFZmZlY3Q9PSJ5IiB8fCB0aGlzLnNob3dXaW5kb3dFZmZlY3QpeworCSAgICAJCS8vaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZXhwbG9yZXJCb3gvc2hvd1dpbmRvd0VmZmVjdCA9PSBZRVMiKTsKKwkgICAgCQlpZiAodGhpcy5hbm5pbWF0aW9uU3RhcnRTdHlsZSA9PSAiY2VudGVyIikgeworCSAgICAJCQluZXcgbHouYm94SW5pdEVmZmVjdChwYXJlbnQseworCQkgICAgCQkJCQl4OnRoaXMueCsodGhpcy53aWR0aC8yKS01MCwKKwkJICAgIAkJCQkJeTp0aGlzLnkrKHRoaXMuaGVpZ2h0LzIpLTEwLAorCQkgICAgCQkJCQl6aWVseDp0aGlzLngsCisJCSAgICAJCQkJCXppZWx5OnRoaXMueSwKKwkJICAgIAkJCQkJYmdjb2xvcjphbm5pbWF0aW9uQ29sb3IsCisJCSAgICAJCQkJCXppZWx3aWR0aDp0aGlzLndpZHRoLAorCQkgICAgCQkJCQl6aWVsaGVpZ2h0OnRoaXMuaGVpZ2h0LAorCQkgICAgCQkJCQlvYmpSZWY6dGhpcworCSAgICAJCQkJCX0pOworCSAgICAJCX0gZWxzZSBpZiAodGhpcy5hbm5pbWF0aW9uU3RhcnRTdHlsZSA9PSAibW91c2UiKXsKKwkgICAgCQkJbmV3IGx6LmJveEluaXRFZmZlY3QocGFyZW50LHsKKwkJICAgIAkJCQkJeDpwYXJlbnQuZ2V0TW91c2UoIngiKSwKKwkJICAgIAkJCQkJeTpwYXJlbnQuZ2V0TW91c2UoInkiKSwKKwkJICAgIAkJCQkJd2lkdGg6MiwKKwkJICAgIAkJCQkJaGVpZ2h0OjIsCisJCSAgICAJCQkJCXppZWx4OnRoaXMueCwKKwkJICAgIAkJCQkJemllbHk6dGhpcy55LAorCQkgICAgCQkJCQliZ2NvbG9yOmFubmltYXRpb25Db2xvciwKKwkJICAgIAkJCQkJemllbHdpZHRoOnRoaXMud2lkdGgsCisJCSAgICAJCQkJCXppZWxoZWlnaHQ6dGhpcy5oZWlnaHQsCisJCSAgICAJCQkJCW9ialJlZjp0aGlzCisJICAgIAkJCQkJfSk7CisJCQkJfSBlbHNlIHsKKwkJCQkJaWYgKCRkZWJ1ZykgRGVidWcud2FybigiVW5rb3duIGFubmltYXRpb25TdGFydFN0eWxlIik7CisJCQkJfQorCSAgICAJfSBlbHNlIHsKKwkgICAgCQl0aGlzLnNlbmRBbm5pQ29tcGxldGUoKTsKKwkgICAgCX0KKyAgICAJXV0+CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0ic2VuZEFubmlDb21wbGV0ZSI+CisgICAgCS8vaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2VuZEFubmlDb21wbGV0ZSIpOworICAgIAl0aGlzLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ3Zpc2libGUnKTsKKyAgICAJdGhpcy5hbmltYXRpb25Jbml0ZWQuc2VuZEV2ZW50KG51bGwpOworICAgIAl0aGlzLnNldFNoYWRvdygpOyAJCisgICAgPC9tZXRob2Q+CisKKyAgICA8bWV0aG9kIG5hbWU9InNldFNoYWRvdyIgYXJncz0iYm9vbCI+CisgICAgICAgIHRoaXMuaGFzc2hhZG93ID0gYm9vbDsKKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgIGlmICh0aGlzLmlzaW5pdGVkKXsKKyAgICAgICAgICAgIHRoaXMubm9ybWFsTUMgPSB0aGlzLmdldERpc3BsYXlPYmplY3QoKTsKKyAgICAgICAgICAgIC8vRGVidWcud3JpdGUodGhpcy5ub3JtYWxNQyk7CisgICAgICAgICAgICAvLy8vRGVidWcud3JpdGUoInRoaXMubm9ybWFsTUM6ICIsdGhpcy5ub3JtYWxNQyk7CisgICAgICAgICAgICAvLy8vRGVidWcud3JpdGUoInRoaXM6ICIsdGhpcyk7CisgICAgICAgICAgIAl0aGlzLmRpc3BsYWNlbWVudE1hcCA9IG5ldyBmbGFzaC5maWx0ZXJzLkRyb3BTaGFkb3dGaWx0ZXIoKTsKKyAgICAgICAgICAgIHRoaXMubm9ybWFsTUMuZmlsdGVycyA9IFt0aGlzLmRpc3BsYWNlbWVudE1hcF07CisgICAgICAgIH0KKyAgICAgICAgXV0+ICAgICAgICAgICAgICAKKyAgICA8L21ldGhvZD4JCisgICAgICAgICAgCisJPCEtLS0gVGhlIFRpdGxlIG9mIHRoaXMgQm94IC0tPgorCTxhdHRyaWJ1dGUgbmFtZT0idGl0bGUiIHZhbHVlPSJkZWZhdWx0dGl0bGUiIHR5cGU9InN0cmluZyIgLz4KKwkKKwk8IS0tLSBpZiB0aGlzIEJveCBzaG91bGQgYmUgY2xvc2VhYmxlIC0tPgorCTxhdHRyaWJ1dGUgbmFtZT0iY2xvc2FibGUiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICAKKyAgICA8IS0tLSBpZiB0aGlzIEJveCBzaG91bGQgYmUgcmVzaXplYWJsZSAgLS0+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJyZXNpemVhYmxlIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisJCisJPCEtLS0gQ2FuIHRoaXMgQm94IGJlIGRvY2tlZCB0byBvdGhlcnMgYW5kIAorCQkJdGhlIHdpZHRoL2hlaWdodCBvZiBwYXJlbnQgY29tcG9lbnQgYmFycmllciAtLT4KKwk8YXR0cmlidXRlIG5hbWU9ImRvY2tpbmciIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKwkKKwk8IS0tLSBIYXJkIHRvIGV4cGxhaW4gYnV0IGl0cyBjbGVhciBpZiB5b3UgcGxheSBhcm91bmQgCisJCXdpdGggdGhhdC4gSXRzIHRoZSBudW1iZXIgb2YgbWluaW11bSBwaXhlbHMgYmVmb3JlIAorCQl0aGUgImRvY2tpbmciIGVmZmVjdCB3aWxsIGJlIHRoZXJlIC0tPgorCTxhdHRyaWJ1dGUgbmFtZT0iZG9ja2luZ2JhcnJpZXIiIHZhbHVlPSIxNSIgdHlwZT0ibnVtYmVyIiAvPgorCQorCTwhLS0tIHRoZSBFdmVudCB3aWxsIGJlIHRocm93biBpZiB5b3UgY2xvc2UgdGhlIEJveCAtLT4KKwk8ZXZlbnQgbmFtZT0ib25jbG9zZSIgLz4KKwkKKwk8IS0tLUBrZXl3b3JkcyBwcml2YXRlIHRoZSBsaXN0IG9mIGNvbm5lY3RlZCB2aWV3cyAtLT4KKwk8YXR0cmlidXRlIG5hbWU9ImRvY2tpbmdsaXN0IiB2YWx1ZT0ibnVsbCIgLz4KKwkKKwk8IS0tLSBAa2V5d29yZHMgcHJpdmF0ZSB0ZW1wLW9sZGVyIG9mIHgtZGlzdGFuY2UgdG8gZG9ja2VkLUJveCAgLS0+CisJPGF0dHJpYnV0ZSBuYW1lPSJ0ZW1wWGRpc3RhbmNlIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorCisJPCEtLS0gQGtleXdvcmRzIHByaXZhdGUgdGVtcC1vbGRlciBvZiB5LWRpc3RhbmNlIHRvIGRvY2tlZC1Cb3ggIC0tPgorCTxhdHRyaWJ1dGUgbmFtZT0idGVtcFlkaXN0YW5jZSIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKwkKKwk8IS0tLSBAa2V5d29yZHMgcHJpdmF0ZSBpcyB0aGUgQm94IG1pbmltaXplZCAgLS0+CisJPGF0dHJpYnV0ZSBuYW1lPSJpc29wZW4iIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPgorCQorCTwhLS0tIEBrZXl3b3JkcyBwcml2YXRlIGlzIHRoZSBCb3ggbWluaW1pemVkICAtLT4KKwk8YXR0cmlidXRlIG5hbWU9Im9wZW4iIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPgkKKwkKKwk8IS0tLSBAa2V5d29yZHMgcHJpdmF0ZSAgLS0+CisJPGF0dHJpYnV0ZSBuYW1lPSJpbml0aGVpZ2h0IiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorCQorCTwhLS0gZG8gbm90IGFsbG93IGRyYWdpbmcgb2Ygd2luZG93IC0tPgorCTxhdHRyaWJ1dGUgbmFtZT0iYWxsb3dEcmFnZ2luZyIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CisJCisJPCEtLS0gQGtleXdvcmRzIHByaXZhdGUgc3RvcmUgaW5pdGlhbCBoZWlnaHQgc28gdG9nZ2xlb3BlbiBjYW4gcmVzZXQgaGVpZ2h0ICAtLT4KKwk8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorCQl0aGlzLmluaXRoZWlnaHQ9dGhpcy5oZWlnaHQ7CisJCS8vLy9EZWJ1Zy53cml0ZSgidGhpcy5pc29wZW46ICIsdGhpcy5pc29wZW4pOworCQlpZiAoIXRoaXMub3BlbikgdG9nZ2xlb3BlbigpOworCTwvaGFuZGxlcj4KKwkKKwk8bWV0aG9kIG5hbWU9ImNsb3NlIj4KKwkJaWYgKHRoaXMub25jbG9zZSkgdGhpcy5vbmNsb3NlLnNlbmRFdmVudCgpOworCQl0aGlzLmRvRGVzdHJveSgpOworCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0idG9nZ2xlb3BlbiI+CisJCS8vLy9EZWJ1Zy53cml0ZSgidGhpcy5pc29wZW4iLHRoaXMuaXNvcGVuKTsKKwkJdGhpcy5zZXRBdHRyaWJ1dGUoJ2lzb3BlbicsIXRoaXMuaXNvcGVuKTsKKwkJaWYgKHRoaXMuaXNvcGVuKXsKKwkJCV9jYWxjZG9ja2luZ0xpc3QoKTsKKwkJCWZvciAodmFyIGVnIGluIHRoaXMuZG9ja2luZ2xpc3QpeworCQkJCWlmKHRoaXMuZG9ja2luZ2xpc3RbZWddLmRvY2tpbmcpeworCQkJCQkvLy8vRGVidWcud3JpdGUoInRoaXMuZG9ja2luZ2xpc3RbZWddOiAiLHRoaXMuZG9ja2luZ2xpc3RbZWddLnRpdGxlKTsKKwkJCQkJLy8vL0RlYnVnLndyaXRlKCJvcGVuIG5ldyB5Iix0aGlzLnkrdGhpcy5pbml0aGVpZ2h0KTsKKwkJCQkJdGhpcy5kb2NraW5nbGlzdFtlZ10udG9nZ2xlT3BlbkJ5UGFyZW50KHRoaXMuaW5pdGhlaWdodC0yMik7CisJCQkJCXRoaXMuZG9ja2luZ2xpc3RbZWddLnNldEF0dHJpYnV0ZSgneScsdGhpcy55K3RoaXMuaW5pdGhlaWdodCk7CisJCQkJCQorCQkJCX0KKwkJCX0JCQkKKwkJCXRoaXMuc2V0QXR0cmlidXRlKCdoZWlnaHQnLHRoaXMuaW5pdGhlaWdodCk7CisJCX0gZWxzZSB7CisJCQlfY2FsY2RvY2tpbmdMaXN0KCk7CisJCQlmb3IgKHZhciBlZyBpbiB0aGlzLmRvY2tpbmdsaXN0KXsKKwkJCQlpZih0aGlzLmRvY2tpbmdsaXN0W2VnXS5kb2NraW5nKXsKKwkJCQkJLy8vL0RlYnVnLndyaXRlKCJ0aGlzLmRvY2tpbmdsaXN0W2VnXTogIix0aGlzLmRvY2tpbmdsaXN0W2VnXS50aXRsZSk7CisJCQkJCXRoaXMuZG9ja2luZ2xpc3RbZWddLnRvZ2dsZU9wZW5CeVBhcmVudCgtKHRoaXMuaW5pdGhlaWdodC0yMikpOworCQkJCQl0aGlzLmRvY2tpbmdsaXN0W2VnXS5zZXRBdHRyaWJ1dGUoJ3knLHRoaXMueSsyMik7CisJCQkJfQorCQkJfQkKKwkJCXRoaXMuc2V0QXR0cmlidXRlKCdoZWlnaHQnLDIyKTsJCQorCQl9CisJPC9tZXRob2Q+CisJCisJPG1ldGhvZCBuYW1lPSJ0b2dnbGVPcGVuQnlQYXJlbnQiIGFyZ3M9ImNoYW5nZVkiPgorCQkvLy8vRGVidWcud3JpdGUoIisrKysrIHRvZ2dsZU9wZW5CeVBhcmVudCArKysrKyBjaGFuZ2VZOiAiLHRoaXMudGl0bGUsY2hhbmdlWSk7CisJCXZhciB0ZW1wTGlzdD1uZXcgQXJyYXkoKTsKKwkJPCFbQ0RBVEFbCisJCS8vY2hlY2sgZm9yIGRvY2thYmxlIHN0dWZmIHdoaWNoIGlzIGNvbm5lY3RlZCB0byB0aGlzIEJveAorCQlmb3IgKHZhciBlZyBpbiB0aGlzLnBhcmVudC5zdWJ2aWV3cyl7CisJCQkvL2NoZWNrIHRoYXQgeW91IGRvIG5vdCBjYWxjIHdpdGggeW91cnNlbGYKKwkJCWlmICh0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10hPXRoaXMgJiYgdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLmRvY2tpbmcpeworCQkJCS8vIHRoZXJlIGFyZSA0IGNhc2VzIHdoaWNoIGhhdmUgdG8gYmUgcHJvb2ZlZCB0byBjaGVjayBldmVyeSBwb3NzaWJsZSBzaXR1YXRpb24KKwkJCQl2YXIgcHJvb2Y9ZmFsc2U7CisJCQkJLy8vL0RlYnVnLndyaXRlKCJmb3VuZCBzb21lOiAiLHRoaXMucGFyZW50LnN1YnZpZXdzW2VnXS50aXRsZSk7CisJCQkJLy90b3AgYm94LWJvcmRlcgorCQkJCWlmICAoICggKCh0aGlzLnkrdGhpcy5oZWlnaHQpLXRoaXMucGFyZW50LnN1YnZpZXdzW2VnXS55KSA8IDEgKSAmJiAoICgodGhpcy55K3RoaXMuaGVpZ2h0KS10aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueSkgPiAtMSApICYmICggKHRoaXMueCt0aGlzLndpZHRoKSA+IHRoaXMucGFyZW50LnN1YnZpZXdzW2VnXS54ICkgICYmICggdGhpcy54IDwgKHRoaXMucGFyZW50LnN1YnZpZXdzW2VnXS54K3RoaXMucGFyZW50LnN1YnZpZXdzW2VnXS53aWR0aCkgKSApeworCQkJCQlwcm9vZj10cnVlOworCQkJCX0KKwkJCQkJCisJCQkJaWYgKHByb29mKSB0ZW1wTGlzdC5wdXNoKHRoaXMucGFyZW50LnN1YnZpZXdzW2VnXSk7CisJCQl9CisJCX0KKwkJXV0+CisJCS8vLy9EZWJ1Zy53cml0ZSgidGVtcExpc3QubGVuZ3RoOiAiLHRlbXBMaXN0Lmxlbmd0aCk7CisJCWlmICh0ZW1wTGlzdC5sZW5ndGghPTApeworCQkJZm9yICh2YXIgZWcgaW4gdGVtcExpc3QpeworCQkJCWlmKHRlbXBMaXN0W2VnXS5kb2NraW5nKXsKKwkJCQkJLy8vL0RlYnVnLndyaXRlKCJ0b2dnbGVPcGVuQnlQYXJlbnQgMSBbZWddLGNoYW5nZVk6ICIsdGVtcExpc3RbZWddLnRpdGxlLGNoYW5nZVkpOworCQkJCQl0ZW1wTGlzdFtlZ10udG9nZ2xlT3BlbkJ5UGFyZW50KGNoYW5nZVkpOworCQkJCQl0ZW1wTGlzdFtlZ10uc2V0QXR0cmlidXRlKCd5Jyx0ZW1wTGlzdFtlZ10ueStjaGFuZ2VZKTsKKwkJCQl9CisJCQl9CQorCQl9CisJCQorCTwvbWV0aG9kPgorCQorCTwhLS0tIEBrZXl3b3JkcyBwcml2YXRlICAtLT4KKwk8bWV0aG9kIG5hbWU9Il9yZW1vdmVEcmFnU3RhdGUiIGFyZ3M9Im9iaiI+CisJICAgIGlmICghdGhpcy5hbGxvd0RyYWdnaW5nKSB7CisJICAgICAgIHJldHVybjsKKwkgICAgfQorCQkvL0l0J3MgaW1wb3J0YW50IHRvIHJlbW92ZSB0aGUgZHJhZ2dlciBhbmQgZG8gZG9ja2luZyBzdHVmZiBiZWZvcmUgeW91IGNoZWNrIGZvciBjb25uZWN0ZWQgQm94ZXMKKwkJZHJhZ2dlci5yZW1vdmUoKTsKKwkJaWYgKG9iaj09dGhpcyl7CisJCQlpZiAoZG9ja2luZykgYXJyYW5nZVBvc2l0aW9uKCk7CisJCX0gZWxzZSB7CisJCQlpZiAoZG9ja2luZykgX2xvb2tmb3JQYXJlbnRPbmx5KG9iaik7CisJCX0KKwkJCQorCQkvL2NoZWNrIGZvciBjb25uZWN0ZWQgQm94ZXMKKwkJZm9yICh2YXIgZWcgaW4gdGhpcy5kb2NraW5nbGlzdCl7CisJCQlpZih0aGlzLmRvY2tpbmdsaXN0W2VnXS5kb2NraW5nKXsKKwkJCQl0aGlzLmRvY2tpbmdsaXN0W2VnXS5fcmVtb3ZlRHJhZ1N0YXRlKHRoaXMpOworCQkJfQorCQl9CisKKwk8L21ldGhvZD4KKworCQorCTwhLS0tIEBrZXl3b3JkcyBwcml2YXRlCisJCXRoZSBhcmcgb2JqIGlzIG5lZWRlZCBiZWNhdXNlIHRoZSBkcmFnZ2luZyBjYW4gYmUgY2FsbGVkIGJ5IHRoZSBCb3ggaXRzZWxmCisJCW9yIGJ5IGEgQm94IHdoaWNoIGlzIGNvbm5lY3RlZCB0byB0aGlzIEJveCEgIC0tPgorCTxtZXRob2QgbmFtZT0iX3N0YXJ0RHJhZ1N0YXRlIiBhcmdzPSJvYmoiPgorCQl0aGlzLmJyaW5nVG9Gcm9udCgpOworCQlpZiAoIXRoaXMuYWxsb3dEcmFnZ2luZykgeworICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwkJX2NhbGNkb2NraW5nTGlzdCgpOworCQlmb3IgKHZhciBlZyBpbiB0aGlzLmRvY2tpbmdsaXN0KXsKKwkJCWlmKHRoaXMuZG9ja2luZ2xpc3RbZWddLmRvY2tpbmcpeworCQkJCXRoaXMuZG9ja2luZ2xpc3RbZWddLl9zdGFydERyYWdTdGF0ZSh0aGlzKTsKKwkJCX0KKwkJfQorCQkvL3N0b3JlIHBvc2l0aW9uIGNhdXNlIGl0IHdhc24ndCBkcmFnZ2VkIGJ5IGl0c2VsZgorCQlpZiAob2JqIT10aGlzKXsKKwkJCXN0b3JlQWRqdXN0bWVudFRvUGFyZW50KG9iai54LG9iai55KTsKKwkJfQorCQlkcmFnZ2VyLmFwcGx5KCk7CisJPC9tZXRob2Q+CisJCisJPCEtLS0gQ2FsYyB0aGUgTGlzdCBvZiBCb3hlcyB3aGljaCB3aWxsIGJlIGRyYWdnZWQgYW5kIHNldHBvc2l0aW9uIGlmIHRoaXMgQm94CisJCXdpbGwgYmUgZHJhZ2dlZCxkb2NrZWQgb3IgbWluaW1pemVkL21heGltaXplZCAgLS0+CisJPG1ldGhvZCBuYW1lPSJfY2FsY2RvY2tpbmdMaXN0Ij4KKwkJLy9DbGVhciBsaXN0IG9mIGNvbmVuY3RlZCBCb3hlcworCQl0aGlzLmRvY2tpbmdsaXN0PW5ldyBBcnJheSgpOworCQk8IVtDREFUQVsKKwkJLy9jaGVjayBmb3IgZG9ja2FibGUgc3R1ZmYgd2hpY2ggaXMgY29ubmVjdGVkIHRvIHRoaXMgQm94CisJCWZvciAodmFyIGVnIGluIHRoaXMucGFyZW50LnN1YnZpZXdzKXsKKwkJCS8vY2hlY2sgdGhhdCB5b3UgZG8gbm90IGNhbGMgd2l0aCB5b3Vyc2VsZgorCQkJaWYgKHRoaXMucGFyZW50LnN1YnZpZXdzW2VnXSE9dGhpcyAmJiB0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ11bImRvY2tpbmciXSAmJiB0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10uZG9ja2luZyl7CisJCQkJLy8gdGhlcmUgYXJlIDQgY2FzZXMgd2hpY2ggaGF2ZSB0byBiZSBwcm9vZmVkIHRvIGNoZWNrIGV2ZXJ5IHBvc3NpYmxlIHNpdHVhdGlvbgorCQkJCXZhciBwcm9vZj1mYWxzZTsKKworCQkJCS8vdG9wIGJveC1ib3JkZXIKKwkJCQlpZiAgKCAoICgodGhpcy55K3RoaXMuaGVpZ2h0KS10aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueSkgPCAxICkgJiYgKCAoKHRoaXMueSt0aGlzLmhlaWdodCktdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLnkpID4gLTEgKSAmJiAoICh0aGlzLngrdGhpcy53aWR0aCkgPiB0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueCApICAmJiAoIHRoaXMueCA8ICh0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueCt0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ud2lkdGgpICkgKXsKKwkJCQkJcHJvb2Y9dHJ1ZTsKKwkJCQl9CisKKwkJCQlpZiAocHJvb2YpIHRoaXMuZG9ja2luZ2xpc3QucHVzaCh0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10pOworCQkJfQorCQl9CisJCV1dPgorCQkvLy8vRGVidWcud3JpdGUoInRoaXMuZG9ja2luZ2xpc3QubGVuZ3RoOiIsdGhpcy5kb2NraW5nbGlzdC5sZW5ndGgpOworCTwvbWV0aG9kPgorCQorCTwhLS0tIEBrZXl3b3JkcyBwcml2YXRlICAtLT4KKwk8bWV0aG9kIG5hbWU9ImFycmFuZ2VQb3NpdGlvbiI+CisJCS8vZG8gdGhlIG1hZ2ljCisJCS8vdGhlIGlkZWEgaXM6IGxvb2sgZm9yIGFsbCBvbiB0aGUgdmlldyBjb250YWluZXIgb25lIGxldmVsIGFib3ZlIHRoaXMgb25lCisJCS8vYW5kIGxvb2sgZm9yIHRoZSB3aWR0aC9oZWlnaHQgYW5kIDAvMCBhbmQgbG9vayBmb3IgImRvY2thYmxlIiBzdHVmZiB0aGVyZQorCQl2YXIgbmV3eD10aGlzLng7CisJCXZhciBuZXd5PXRoaXMueTsKKwkgIAorCQk8IVtDREFUQVsKKwkJCQkKKwkJZm9yICh2YXIgZWcgaW4gdGhpcy5wYXJlbnQuc3Vidmlld3MpeworCQkJLy9jaGVjayB0aGF0IHlvdSBkbyBub3QgY2FsYyB3aXRoIHlvdXJzZWxmCisJCQlpZiAodGhpcy5wYXJlbnQuc3Vidmlld3NbZWddIT10aGlzICYmIHRoaXMucGFyZW50LnN1YnZpZXdzW2VnXVsiZG9ja2luZyJdICYmIHRoaXMucGFyZW50LnN1YnZpZXdzW2VnXS5kb2NraW5nKXsKKwkJCQkvLyB0aGVyZSBhcmUgNCBjYXNlcyB3aGljaCBoYXZlIHRvIGJlIHByb29mZWQgdG8gY2hlY2sgZXZlcnkgcG9zc2libGUgc2l0dWF0aW9uCisJCQkJLy9sZWZ0IGJveC1ib3JkZXIKKwkJCQlpZiAoICggKCh0aGlzLngrdGhpcy53aWR0aCktdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLngpIDwgdGhpcy5kb2NraW5nYmFycmllciApICYmICggKCh0aGlzLngrdGhpcy53aWR0aCktdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLngpID4gLXRoaXMuZG9ja2luZ2JhcnJpZXIgKSAmJiAgKCAodGhpcy55K3RoaXMuaGVpZ2h0KSA+IHRoaXMucGFyZW50LnN1YnZpZXdzW2VnXS55ICkgJiYgICggdGhpcy55IDwgKHRoaXMucGFyZW50LnN1YnZpZXdzW2VnXS55K3RoaXMucGFyZW50LnN1YnZpZXdzW2VnXS5oZWlnaHQpICkgKXsKKwkJCQkJbmV3eD0gKCB0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueCAtIHRoaXMud2lkdGggKTsKKwkJCQl9CisJCQkJLy9yaWdodCBib3gtYm9yZGVyCisJCQkJaWYgKCAoICgodGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLngrdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLndpZHRoKS10aGlzLngpPHRoaXMuZG9ja2luZ2JhcnJpZXIgKSAmJiAoICgodGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLngrdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLndpZHRoKS10aGlzLngpPi10aGlzLmRvY2tpbmdiYXJyaWVyICkgJiYgICggKHRoaXMueSt0aGlzLmhlaWdodCkgPiB0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueSApICYmICAoIHRoaXMueSA8ICh0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueSt0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10uaGVpZ2h0KSApICl7CisJCQkJCW5ld3g9ICggdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLnggKyB0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ud2lkdGggKTsKKwkJCQl9CisJCQkJLy90b3AgYm94LWJvcmRlcgorCQkJCWlmICAoICggKCh0aGlzLnkrdGhpcy5oZWlnaHQpLXRoaXMucGFyZW50LnN1YnZpZXdzW2VnXS55KSA8IHRoaXMuZG9ja2luZ2JhcnJpZXIgKSAmJiAoICgodGhpcy55K3RoaXMuaGVpZ2h0KS10aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueSkgPiAtdGhpcy5kb2NraW5nYmFycmllciApICYmICggKHRoaXMueCt0aGlzLndpZHRoKSA+IHRoaXMucGFyZW50LnN1YnZpZXdzW2VnXS54ICkgICYmICggdGhpcy54IDwgKHRoaXMucGFyZW50LnN1YnZpZXdzW2VnXS54K3RoaXMucGFyZW50LnN1YnZpZXdzW2VnXS53aWR0aCkgKSApeworCQkJCQluZXd5ID0gdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLnktdGhpcy5oZWlnaHQ7CisJCQkJfQorCQkJCS8vYm90dG9tIGJveC1ib3JkZXIKKwkJCQlpZiAoICggKCh0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueSt0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10uaGVpZ2h0KS10aGlzLnkpIDwgdGhpcy5kb2NraW5nYmFycmllciApICYmICggKCh0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueSt0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10uaGVpZ2h0KS10aGlzLnkpID4gLXRoaXMuZG9ja2luZ2JhcnJpZXIgKSAmJiAoICh0aGlzLngrdGhpcy53aWR0aCkgPiB0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueCApICAmJiAoIHRoaXMueCA8ICh0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueCt0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ud2lkdGgpICkgKXsKKwkJCQkJbmV3eSA9IHRoaXMucGFyZW50LnN1YnZpZXdzW2VnXS55K3RoaXMucGFyZW50LnN1YnZpZXdzW2VnXS5oZWlnaHQ7CisJCQkJfQorCQkJfQorCQl9CisJCQorCQkvL0NoZWNrIGZvciBCb3JkZXJzCisJCS8vc2hvdWxkIGJlIGRvbmUgX2FmdGVyXyBjaGVja2luZyBmb3Igb3RoZXIgZG9ja2FibGUgc3R1ZmYgc28gaXQgZ2V0cyAKKwkJLy9wcmlvcml0eSB0byBkb2NrIGFnYWluc3QgdGhlIGJvcmRlciBvZiBwYXJlbnQgdmlldworCQlpZiAodGhpcy54PHRoaXMuZG9ja2luZ2JhcnJpZXIpeworCQkJbmV3eD0wOworCQl9CisJCWlmICh0aGlzLnk8dGhpcy5kb2NraW5nYmFycmllcil7CisJCQluZXd5PTA7CisJCX0KKwkJaWYgKCAodGhpcy5wYXJlbnQud2lkdGgtKHRoaXMueCt0aGlzLndpZHRoKSk8dGhpcy5kb2NraW5nYmFycmllcil7CisJCQluZXd4PXRoaXMucGFyZW50LndpZHRoLXRoaXMud2lkdGg7CisJCX0KKwkJaWYgKCAodGhpcy5wYXJlbnQuaGVpZ2h0LSh0aGlzLnkrdGhpcy5oZWlnaHQpKTx0aGlzLmRvY2tpbmdiYXJyaWVyKXsKKwkJCW5ld3k9dGhpcy5wYXJlbnQuaGVpZ2h0LXRoaXMuaGVpZ2h0OworCQl9CisJCQorCQkvL3NldCBwb3NpdGlvbgorCQl0aGlzLnNldEF0dHJpYnV0ZSgneCcsbmV3eCk7CisJCXRoaXMuc2V0QXR0cmlidXRlKCd5JyxuZXd5KTsKKwkJXV0+CisJPC9tZXRob2Q+CisJCisJPG1ldGhvZCBuYW1lPSJzdG9yZUFkanVzdG1lbnRUb1BhcmVudCIgYXJncz0ib2JqWCxvYmpZIj4KKwkJdGhpcy50ZW1wWGRpc3RhbmNlPW9ialgtdGhpcy54OworCQl0aGlzLnRlbXBZZGlzdGFuY2U9b2JqWS10aGlzLnk7CisJPC9tZXRob2Q+CisJCisJPCEtLS0gQGtleXdvcmRzIHByaXZhdGUgCisJCXRoaXMgbWV0aG9kIGlzIG5lZWRlZCBiZWNhdXNlIGlmIHRoZSBkcmFnZ2luZyBlbmQgYW5kCisJCWl0IHdhcyBub3QgZHJhZ2dlZCBfaXRzZWxmXyBpdCB3YXMgZHJhZ2VkIGp1c3QgYmVjYXVzZSBhIGNvbm5lY3RlZAorCQlkb2NrYWJsZSBCb3ggd2FzIGRyYWdnZWQgdGhhbiBpdCBjb3VsZCBiZSB0aGF0IHRoZSBjb25uZWN0ZWQKKwkJQm94IHdhcyBmb3JjZWQgdG8gZG9jayBhZ2FpbnN0IHNvbWV0aGluZyBkaWZmZXJlbnQgb25tb3VzZXVwCisJCXNvIHlvdSBoYXZlIHRvIHJlYXJyYW5nZSB0aGUgb2xkICJhZGp1c3RtZW50IgktLT4KKwk8bWV0aG9kIG5hbWU9Il9sb29rZm9yUGFyZW50T25seSIgYXJncz0ib2JqIj4KKwkJPCFbQ0RBVEFbCQkKKwkJdmFyIG5ld3g9b2JqLngtdGVtcFhkaXN0YW5jZTsKKwkJdmFyIG5ld3k9b2JqLnktdGVtcFlkaXN0YW5jZTsKKwkJCisJCXRoaXMuc2V0QXR0cmlidXRlKCd4JyxuZXd4KTsKKwkJdGhpcy5zZXRBdHRyaWJ1dGUoJ3knLG5ld3kpOworCQldXT4KKwk8L21ldGhvZD4KKwkKKwk8ZHJhZ3N0YXRlIG5hbWU9ImRyYWdnZXIiIC8+CisgICAgCisgICAgPGFuaW1hdG9yIGF0dHJpYnV0ZT0ieSIgdG89IjIwIiBkdXJhdGlvbj0iMTAwMCIgc3RhcnRlZD0iZmFsc2UiIC8+CisgICAgICAgIAorICAgIDxhbmltYXRvciBuYW1lPSJkb091dCIgYXR0cmlidXRlPSJ5IiB0bz0iLTUwMCIgZHVyYXRpb249IjEwMDAiIHN0YXJ0ZWQ9ImZhbHNlIiBvbnN0b3A9InBhcmVudC5kb0Rlc3Ryb3koKSIgLz4gICAgCisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJkb0Rlc3Ryb3kiPgorICAgICAgICB0aGlzLmRlc3Ryb3koKTsKKyAgICA8L21ldGhvZD4KKwkKKwk8dmlldyB3aWR0aD0iJHsgdGhpcy5wYXJlbnQud2lkdGgtMiB9IiBoZWlnaHQ9IiR7IHRoaXMucGFyZW50LmhlaWdodC0yIH0iIAorCQkgIHg9IjEiIHk9IjEiIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignbWFpbkJhY2tncm91bmRDb2xvcicpIH0iIC8+CisJPHZpZXcgeD0iMSIgeT0iMSIgd2lkdGg9IiR7IHRoaXMucGFyZW50LndpZHRoLTIgfSIgaGVpZ2h0PSIyMCIgPgorCQorCQk8Z3JhZGllbnR2aWV3IHg9IjAiIHdpZHRoPSIkeyB0aGlzLnBhcmVudC53aWR0aCB9IiBoZWlnaHQ9IjIwIgorCQkJCWNvbG9yRnJvbT0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdiYXNlTW91c2Vjb2xvcml6ZXInKSB9IgorCQkJCWNvbG9yVG89IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignc3R5bGVNZW51QmFyQmFzZUNvbG9yJykgfSIgPgorCQk8L2dyYWRpZW50dmlldz4KKwkJCisgICAgICAgIDx0ZXh0IGZvbnRzaXplPSIxMCIgaGVpZ2h0PSIxNyIgeD0iNiIgeT0iMSIgdGV4dD0iJHsgdGhpcy5wYXJlbnQucGFyZW50LnRpdGxlIH0iIAorCQkJZmdjb2xvcj0iMHhGRkZGRkYiIHJlc2l6ZT0idHJ1ZSIgZm9udHN0eWxlPSJib2xkIiAvPgorCQkJCisJCTx2aWV3IHZpc2libGU9IiR7IHRoaXMucGFyZW50LnBhcmVudC5jbG9zYWJsZSB9IiB4PSIkeyB0aGlzLnBhcmVudC5wYXJlbnQud2lkdGgtMjAgfSIgCisJCQl5PSIyIiByZXNvdXJjZT0iYnRuX3ByZXNlbnRlcl9jbG9zZSIKKyAgICAgICAgICAgICAgICBvbm1vdXNlb3Zlcj0idGhpcy5zZXRBdHRyaWJ1dGUoJ2ZyYW1lJywyKSIKKyAgICAgICAgICAgICAgICBvbm1vdXNlb3V0PSJ0aGlzLnNldEF0dHJpYnV0ZSgnZnJhbWUnLDEpIgorICAgICAgICAgICAgICAgIG9ubW91c2Vkb3duPSJ0aGlzLnNldEF0dHJpYnV0ZSgnZnJhbWUnLDMpIgorICAgICAgICAgICAgICAgIG9ubW91c2V1cD0idGhpcy5zZXRBdHRyaWJ1dGUoJ2ZyYW1lJywxKSIgPgorCQkJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisJCQkJdGhpcy5wYXJlbnQucGFyZW50LmNsb3NlKCk7CisJCQk8L2hhbmRsZXI+CQkJCQkJCQkJCisJCTwvdmlldz4KKwk8L3ZpZXc+CisgICAgPGhhbmRsZXIgbmFtZT0ib25hZGRzdWJ2aWV3IiBhcmdzPSJ2Ij4KKwkJLy8vL0RlYnVnLndyaXRlKCJvbmFkZHN1YnZpZXciLHYpOworCQlpZiAodi5wYXJlbnQuc3Vidmlld3MubGVuZ3RoPjIpIHRoaXMuX3Jlc2l6ZXZpZXcuYnJpbmdUb0Zyb250KCk7CisgICAgPC9oYW5kbGVyPgorICAgIDx2aWV3IHZpc2libGU9IiR7IHRoaXMucGFyZW50LnJlc2l6ZWFibGUgfSIgbmFtZT0iX3Jlc2l6ZXZpZXciIAorICAgIAkgIHg9IiR7IHRoaXMucGFyZW50LndpZHRoIC0gMTcgfSIgeT0iJHsgdGhpcy5wYXJlbnQuaGVpZ2h0IC0gMTcgfSIgCisgICAgICAgIHJlc291cmNlPSJleHBsb3Jlcl9yZXNpemVfcnNjIiBjdXJzb3I9ImV4cGxvcmVyX3Jlc2l6ZW1vdXNlX3JzYyIgCisgICAgICAgIG9ubW91c2Vkb3duPSJ0aGlzLnBhcmVudC5ycy5hcHBseSgpIgorICAgICAgICBvbm1vdXNldXA9InRoaXMucGFyZW50LnJzLnJlbW92ZSgpIiA+CisgICAgCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgCQkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJzZXRUaW50Iik7CisgICAgCQkvL1RPRE86IEZpeCB0aGlzLCBkb2VzIG5vdCB3b3JrIGF0IHRoZSBtb21lbnQKKyAgICAJCS8vaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL29wZW5tZWV0aW5ncy9pc3N1ZXMvZGV0YWlsP2lkPTQ3MAorICAgIAkJdGhpcy5zZXRDb2xvcihjYW52YXMuZ2V0VGhlbWVDb2xvcignYmFzZU1vdXNlY29sb3JpemVyJykpOworICAgIAk8L2hhbmRsZXI+ICAJCisgICAgPC92aWV3PgorICAgIDxyZXNpemVzdGF0ZSBuYW1lPSJycyIvPgorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2V4cGxvcmVyL2xhYmVsZXhwbG9yZXJCb3gubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2V4cGxvcmVyL2xhYmVsZXhwbG9yZXJCb3gubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2YTE3MGMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvbGFiZWxleHBsb3JlckJveC5sengKQEAgLTAsMCArMSwzMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9ImxhYmVsRXhwbG9yZXJCb3giIGV4dGVuZHM9ImV4cGxvcmVyQm94IiA+CisKKwk8YXR0cmlidXRlIG5hbWU9ImxhYmVsaWQiIHR5cGU9Im51bWJlciIgc2V0dGVyPSJzZXRMYWJlbElkKGxhYmVsaWQpIiAvPgorCTxtZXRob2QgbmFtZT0ic2V0TGFiZWxJZCIgYXJncz0iX2xhYmVsaWQiID4KKwkJdGhpcy5sYWJlbGlkID0gX2xhYmVsaWQ7CisJCXRoaXMudGl0bGU9Y2FudmFzLmdldExhYmVsTmFtZSh0aGlzLmxhYmVsaWQpOworCTwvbWV0aG9kPgorCQorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2V4cGxvcmVyL2xpYnJhcnkubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2V4cGxvcmVyL2xpYnJhcnkubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1M2Q5OTQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvbGlicmFyeS5sengKQEAgLTAsMCArMSwzMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworCTxpbmNsdWRlIGhyZWY9ImluY3ViYXRvci9ncmFkaWVudHZpZXcubHp4IiAvPiAKKworCTxpbmNsdWRlIGhyZWY9InJlc291cmNlcy8iIC8+CisJCisJPGluY2x1ZGUgaHJlZj0iZXhwbG9yZXJCb3gubHp4IiAvPgorCTxpbmNsdWRlIGhyZWY9ImxhYmVsZXhwbG9yZXJCb3gubHp4IiAvPgorCisgICAgCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvcmVzb3VyY2VzL2V4cGxvcmJhcl9tYXhpbWl6ZV9kbi5wbmcgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvcmVzb3VyY2VzL2V4cGxvcmJhcl9tYXhpbWl6ZV9kbi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTVhZTM0MwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9yZXNvdXJjZXMvZXhwbG9yYmFyX21heGltaXplX2RuLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvcmVzb3VyY2VzL2V4cGxvcmJhcl9tYXhpbWl6ZV9tby5wbmcgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvcmVzb3VyY2VzL2V4cGxvcmJhcl9tYXhpbWl6ZV9tby5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDkzYTBiMAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9yZXNvdXJjZXMvZXhwbG9yYmFyX21heGltaXplX21vLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvcmVzb3VyY2VzL2V4cGxvcmJhcl9tYXhpbWl6ZV9uby5wbmcgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvcmVzb3VyY2VzL2V4cGxvcmJhcl9tYXhpbWl6ZV9uby5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmNhNmVjOAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9yZXNvdXJjZXMvZXhwbG9yYmFyX21heGltaXplX25vLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvcmVzb3VyY2VzL2V4cGxvcmJhcl9taW5pbWl6ZV9kbi5wbmcgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvcmVzb3VyY2VzL2V4cGxvcmJhcl9taW5pbWl6ZV9kbi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTA1ZGU4MwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9yZXNvdXJjZXMvZXhwbG9yYmFyX21pbmltaXplX2RuLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvcmVzb3VyY2VzL2V4cGxvcmJhcl9taW5pbWl6ZV9tby5wbmcgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvcmVzb3VyY2VzL2V4cGxvcmJhcl9taW5pbWl6ZV9tby5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmFiYTcwZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9yZXNvdXJjZXMvZXhwbG9yYmFyX21pbmltaXplX21vLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvcmVzb3VyY2VzL2V4cGxvcmJhcl9taW5pbWl6ZV9uby5wbmcgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvcmVzb3VyY2VzL2V4cGxvcmJhcl9taW5pbWl6ZV9uby5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjRkYWZhMwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9yZXNvdXJjZXMvZXhwbG9yYmFyX21pbmltaXplX25vLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvcmVzb3VyY2VzL2V4cGxvcmVyYmFyLnBuZyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9yZXNvdXJjZXMvZXhwbG9yZXJiYXIucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjYjJkNTkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvcmVzb3VyY2VzL2V4cGxvcmVyYmFyLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvcmVzb3VyY2VzL2ZlYXRoZXItMS5wbmcgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvcmVzb3VyY2VzL2ZlYXRoZXItMS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDhmNTE3NQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9yZXNvdXJjZXMvZmVhdGhlci0xLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvcmVzb3VyY2VzL2ZlYXRoZXItMTZ4MTYucG5nIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2V4cGxvcmVyL3Jlc291cmNlcy9mZWF0aGVyLTE2eDE2LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZGIwZDM2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2V4cGxvcmVyL3Jlc291cmNlcy9mZWF0aGVyLTE2eDE2LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvcmVzb3VyY2VzL2xpYnJhcnkubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2V4cGxvcmVyL3Jlc291cmNlcy9saWJyYXJ5Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDMwNTFkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2V4cGxvcmVyL3Jlc291cmNlcy9saWJyYXJ5Lmx6eApAQCAtMCwwICsxLDQ2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8cmVzb3VyY2Ugc3JjPSJleHBsb3JlcmJhci5wbmciIG5hbWU9ImV4cGxvcmVyX3RodW1iX3JzYyIgLz4KKworPHJlc291cmNlIG5hbWU9ImV4cGxvcmVyX3RodW1iX3JzYyIgc3JjPSJmZWF0aGVyLTE2eDE2LnBuZyIvPgorCisKKzxyZXNvdXJjZSBuYW1lPSJleHBsb3Jlcl9idXR0b25fbWluX3JzYyIgPgorCTxmcmFtZSBzcmM9ImV4cGxvcmJhcl9taW5pbWl6ZV9uby5wbmciIC8+CisJPGZyYW1lIHNyYz0iZXhwbG9yYmFyX21pbmltaXplX21vLnBuZyIgLz4KKwk8ZnJhbWUgc3JjPSJleHBsb3JiYXJfbWluaW1pemVfZG4ucG5nIiAvPgorPC9yZXNvdXJjZT4KKworPHJlc291cmNlIG5hbWU9ImV4cGxvcmVyX2J1dHRvbl9tYXhfcnNjIiA+CisJPGZyYW1lIHNyYz0iZXhwbG9yYmFyX21heGltaXplX25vLnBuZyIgLz4KKwk8ZnJhbWUgc3JjPSJleHBsb3JiYXJfbWF4aW1pemVfbW8ucG5nIiAvPgorCTxmcmFtZSBzcmM9ImV4cGxvcmJhcl9tYXhpbWl6ZV9kbi5wbmciIC8+Cis8L3Jlc291cmNlPgorCis8cmVzb3VyY2UgbmFtZT0iZXhwbG9yZXJfcmVzaXplX3JzYyIgc3JjPSJyZXNpemVyLnN3ZiIgLz4KKworPHJlc291cmNlIG5hbWU9ImV4cGxvcmVyX3Jlc2l6ZW1vdXNlX3JzYyIgc3JjPSJyZXNpemVtb3VzZS5wbmciIC8+CisKKworCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvcmVzb3VyY2VzL3Jlc2l6ZW1vdXNlLnBuZyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9yZXNvdXJjZXMvcmVzaXplbW91c2UucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlMzE2NGYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvcmVzb3VyY2VzL3Jlc2l6ZW1vdXNlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvcmVzb3VyY2VzL3Jlc2l6ZXIuZmxhIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2V4cGxvcmVyL3Jlc291cmNlcy9yZXNpemVyLmZsYQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wN2RlOTU3Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2V4cGxvcmVyL3Jlc291cmNlcy9yZXNpemVyLmZsYQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvcmVzb3VyY2VzL3Jlc2l6ZXIucG5nIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2V4cGxvcmVyL3Jlc291cmNlcy9yZXNpemVyLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzk1MWZlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2V4cGxvcmVyL3Jlc291cmNlcy9yZXNpemVyLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvcmVzb3VyY2VzL3Jlc2l6ZXIuc3dmIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2V4cGxvcmVyL3Jlc291cmNlcy9yZXNpemVyLnN3ZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTVkMGRhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2V4cGxvcmVyL3Jlc291cmNlcy9yZXNpemVyLnN3ZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvaWNvblZpZXcubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2ljb25WaWV3Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OTRjNWY4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2ljb25WaWV3Lmx6eApAQCAtMCwwICsxLDQzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8Y2xhc3MgbmFtZT0iaWNvblZpZXciIGV4dGVuZHM9InZpZXciPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iZW5hYmxlZCIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgPGhhbmRsZXIgbmFtZT0ib25lbmFibGVkIiBhcmdzPSJlbmEiPgorICAgICAgICAvL0RlYnVnLndyaXRlKCJvbmVuYWJsZWQ6ICIsZW5hKTsKKyAgICAgICAgKCB0aGlzLmVuYWJsZWQgKSA/IHRoaXMuc2V0QXR0cmlidXRlKCdmcmFtZScsMSkgOiB0aGlzLnNldEF0dHJpYnV0ZSgnZnJhbWUnLDQpOworICAgIDwvaGFuZGxlcj4KKyAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3ZlciI+CisgICAgICAgIGlmICh0aGlzLmVuYWJsZWQpIHRoaXMuc2V0QXR0cmlidXRlKCdmcmFtZScsMik7CisgICAgPC9oYW5kbGVyPgorICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdXQiPgorICAgICAgICBpZiAodGhpcy5lbmFibGVkKSB0aGlzLnNldEF0dHJpYnV0ZSgnZnJhbWUnLDEpOworICAgIDwvaGFuZGxlcj4KKyAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNlZG93biI+CisgICAgICAgIGlmICh0aGlzLmVuYWJsZWQpIHRoaXMuc2V0QXR0cmlidXRlKCdmcmFtZScsMyk7CisgICAgPC9oYW5kbGVyPgorICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2V1cCI+CisgICAgICAgIGlmICh0aGlzLmVuYWJsZWQpIHRoaXMuc2V0QXR0cmlidXRlKCdmcmFtZScsMSk7CisgICAgPC9oYW5kbGVyPiAgICAgICAgICAgIAorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2xhYmVsUmFkaW9CdXR0b24ubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2xhYmVsUmFkaW9CdXR0b24ubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxMWQ3MTgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvbGFiZWxSYWRpb0J1dHRvbi5sengKQEAgLTAsMCArMSwzMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9ImxhYmVsUmFkaW9CdXR0b24iIGV4dGVuZHM9InJhZGlvYnV0dG9uIiBzdHlsZT0iY29tcG9uZW50U3R5bGUiPgorCisJPGF0dHJpYnV0ZSBuYW1lPSJsYWJlbGlkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiBzZXR0ZXI9InNldExhYmVsSWQobGFiZWxpZCkiIC8+CisJPG1ldGhvZCBuYW1lPSJzZXRMYWJlbElkIiBhcmdzPSJfbGFiZWxpZCIgPgorCQl0aGlzLmxhYmVsaWQgPSBfbGFiZWxpZDsKKwkJdGhpcy5zZXRBdHRyaWJ1dGUoJ3RleHQnLGNhbnZhcy5nZXRMYWJlbE5hbWUodGhpcy5sYWJlbGlkKSk7CisJPC9tZXRob2Q+CisJCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvbGFiZWx0YWJlbGVtZW50Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9sYWJlbHRhYmVsZW1lbnQubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhYjI5YWQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvbGFiZWx0YWJlbGVtZW50Lmx6eApAQCAtMCwwICsxLDMzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8Y2xhc3MgbmFtZT0ibGFiZWx0YWJlbGVtZW50IiBleHRlbmRzPSJ0YWJlbGVtZW50IiBzdHlsZT0iY29tcG9uZW50U3R5bGUiPgorCisJPGF0dHJpYnV0ZSBuYW1lPSJsYWJlbGlkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiBzZXR0ZXI9InNldExhYmVsSWQobGFiZWxpZCkiIC8+CisJPG1ldGhvZCBuYW1lPSJzZXRMYWJlbElkIiBhcmdzPSJfbGFiZWxpZCIgPgorCQl0aGlzLmxhYmVsaWQgPSBfbGFiZWxpZDsKKwkJdGhpcy5zZXRBdHRyaWJ1dGUoJ3RleHQnLGNhbnZhcy5nZXRMYWJlbE5hbWUodGhpcy5sYWJlbGlkKSk7CisJPC9tZXRob2Q+CisJCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvbGlicmFyeS5senggYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvbGlicmFyeS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWM1NjZmYwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9saWJyYXJ5Lmx6eApAQCAtMCwwICsxLDUxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCisJCisJPGluY2x1ZGUgaHJlZj0ibWluaUljb25zLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJpY29uVmlldy5sengiIC8+CisgICAgPGluY2x1ZGUgaHJlZj0ibWluaUljb25zTmV3Lmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJyZXNldENvbWJvYm94Lmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJ1cGRhdGVjaGVja2JveC5sengiIC8+CisgICAgPGluY2x1ZGUgaHJlZj0idGFibGVDb21ib2JveC5sengiIC8+CisgICAgPGluY2x1ZGUgaHJlZj0idGFibGVMaXN0SXRlbS5sengiIC8+CisgICAgPGluY2x1ZGUgaHJlZj0ibGFiZWxSYWRpb0J1dHRvbi5sengiIC8+CisgICAgPGluY2x1ZGUgaHJlZj0ibGFiZWx0YWJlbGVtZW50Lmx6eCIgLz4KKyAgICAKKyAgICA8aW5jbHVkZSBocmVmPSJzY3JvbGxiYXJzLyIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJ0ZXh0LyIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJvbWNoYXJ0cy8iIC8+CisgICAgPGluY2x1ZGUgaHJlZj0iYnV0dG9uLyIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJleHBsb3Jlci8iIC8+ICAgIAorICAgIDxpbmNsdWRlIGhyZWY9InBhbmVsLyIgLz4gIAorICAgIDxpbmNsdWRlIGhyZWY9InR1cm5vdmVybGlzdC8iIC8+CisgICAgPGluY2x1ZGUgaHJlZj0idHVybm92ZXJsaXN0cGFnZWQvIiAvPgorICAgIDxpbmNsdWRlIGhyZWY9ImNhbGVuZGFyLyIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJzaW1wbGV2YWx1ZWxpc3QvIiAvPgorICAgIDxpbmNsdWRlIGhyZWY9InVwbG9hZC8iIC8+IAorICAgIDxpbmNsdWRlIGhyZWY9InZhbGlkYm94LyIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJwcmVzZW50ZXIvIiAvPgorICAgIDxpbmNsdWRlIGhyZWY9Imxwcy8iIC8+CisgICAgPGluY2x1ZGUgaHJlZj0iY29uZmVyZW5jZWJveC8iIC8+CisgICAgPGluY2x1ZGUgaHJlZj0iZHluYW1pY0NvbWJvYm94LyIgLz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2xwcy9iYXNlUHJvcGVydHlTZWxlY3Rvci5senggYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvbHBzL2Jhc2VQcm9wZXJ0eVNlbGVjdG9yLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDlhMDk5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2xwcy9iYXNlUHJvcGVydHlTZWxlY3Rvci5sengKQEAgLTAsMCArMSw0OCBAQAorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisJCis8Y2xhc3MgbmFtZT0iaGlkZVByb3BlcnR5VmlldyIgZXh0ZW5kcz0idmlldyIKKwkgICB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCB9IiBoZWlnaHQ9IiRvbmNleyBwYXJlbnQuaGVpZ2h0IH0iCisJICAgb3BhY2l0eT0iMC43IiBiZ2NvbG9yPSIweEZGRkZGRiIgLz4KKworPGNsYXNzIG5hbWU9ImJhc2VQcm9wZXJ0eVNlbGVjdG9yIiBleHRlbmRzPSJ2aWV3Ij4KKwkKKwk8IS0tLSBwb3NpdGlvbiBvZiB0aGUgU2xpZGVyV2luIG9yIENvbG9yUGlja2VyIC0tPgorCTxhdHRyaWJ1dGUgbmFtZT0iYm94UG9zaXRpb24iIHZhbHVlPSJkb3duIiB0eXBlPSJzdHJpbmciIC8+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJpc0VuYWJsZWQiIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0iZW5hYmxlZFZpZXciIHZhbHVlPSJudWxsIiAvPgorCQorCTxtZXRob2QgbmFtZT0ic2V0RW5hYmxlZCIgYXJncz0iYiI+CisJCXRoaXMuc2V0QXR0cmlidXRlKCdpc0VuYWJsZWQnLGIpOworCQlpZiAodGhpcy5lbmFibGVkVmlldyAhPSBudWxsKSB7CisJCQl0aGlzLmVuYWJsZWRWaWV3LmRlc3Ryb3koKTsKKwkJCXRoaXMuZW5hYmxlZFZpZXcgPSBudWxsOworCQl9CisJCWlmICghYikgeworCQkJdGhpcy5lbmFibGVkVmlldyA9IG5ldyBsei5oaWRlUHJvcGVydHlWaWV3KHRoaXMpOworCQl9IAorCTwvbWV0aG9kPgorICAgIAorICAgIAorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2xwcy9jaGFuZ2VXaWR0aExldHRlclNsaWRlci5senggYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvbHBzL2NoYW5nZVdpZHRoTGV0dGVyU2xpZGVyLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDZkZTg5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2xwcy9jaGFuZ2VXaWR0aExldHRlclNsaWRlci5sengKQEAgLTAsMCArMSwxNDYgQEAKKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PiAgCisKKzxjbGFzcyBuYW1lPSJjaGFuZ2VXaWR0aExldHRlclNsaWRlciIgZXh0ZW5kcz0iYmFzZVByb3BlcnR5U2VsZWN0b3IiIGJnY29sb3I9IndoaXRlIiB3aWR0aD0iNjAiIGhlaWdodD0iMjQiPgorCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJudW1iZXJBbGlnbiIgdmFsdWU9InJpZ2h0IiB0eXBlPSJzdHJpbmciLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9Im1pbmltdW0iIHR5cGU9Im51bWJlciIgdmFsdWU9IjQiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJtYXhpbXVtIiB0eXBlPSJudW1iZXIiIHZhbHVlPSIxMDAiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJzdGVwIiB2YWx1ZT0iMSIgdHlwZT0ibnVtYmVyIi8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpbml0aWFsTnVtYmVySW5pdCIgdmFsdWU9IjEiIHR5cGU9Im51bWJlciIvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iaW5pdGlhbE51bWJlciIgdmFsdWU9IjEyIiB0eXBlPSJudW1iZXIiLz4KKyAgICAKKyAgICA8ZXZlbnQgbmFtZT0ib25wbHVzIiAvPgorICAgIDxldmVudCBuYW1lPSJvbm1pbnVzIiAvPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgIHRoaXMuaW5pdGlhbE51bWJlckluaXQ9aW5pdGlhbE51bWJlcjsKKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJzZXRTbGlkZXJWYWx1ZSIgYXJncz0idiI+CisgICAgCXRoaXMuaW5pdGlhbE51bWJlciA9IHY7CisgICAgCXRoaXMubnVtZXJpY1ZhbHVlLnNldEF0dHJpYnV0ZSgndGV4dCcsdGhpcy5pbml0aWFsTnVtYmVyKTsKKyAgICAJdGhpcy5zZXRFbmFibGVkKHRydWUpOworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPgorICAgICAgICByZXR1cm4gdGhpcy5pbml0aWFsTnVtYmVyOworICAgIDwvbWV0aG9kPgorCisKKyAgICA8ZWRpdHRleHQgbmFtZT0ibnVtZXJpY1ZhbHVlIiB3aWR0aD0iMzQiIGhlaWdodD0iMjQiIHRleHQ9IiRvbmNleyBwYXJlbnQuaW5pdGlhbE51bWJlciB9IiA+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0idGVtcFZhbHVlIiB2YWx1ZT0iJG9uY2V7IHBhcmVudC5pbml0aWFsTnVtYmVyIH0iIHR5cGU9Im51bWJlciIgLz4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25mb2N1cyI+CisgICAgICAgICAgICB0aGlzLnRlbXBWYWx1ZSA9IE51bWJlcih0aGlzLmdldFRleHQoKSk7CisgICAgICAgIDwvaGFuZGxlcj4gICAgICAgICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25ibHVyIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIHZhciB0ID0gcGFyc2VJbnQodGhpcy5nZXRUZXh0KCkpOworICAgICAgICAgICAgICAgIGlmIChpc05hTih0KSB8fCB0ID4gdGhpcy5wYXJlbnQubWF4aW11bSB8fCB0IDwgdGhpcy5wYXJlbnQubWluaW11bSl7CisgICAgICAgICAgICAgICAgICAgIHQgPSB0aGlzLnRlbXBWYWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3RleHQnLHQpOworICAgICAgICAgICAgICAgICAgICBsei5Gb2N1cy5zZXRGb2N1cyh0aGlzKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICB0aGlzLnRlbXBWYWx1ZSA9IHQ7CisgICAgICAgICAgICAgICAgICAgIHBhcmVudC5zZXRBdHRyaWJ1dGUoJ2luaXRpYWxOdW1iZXInLHQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9lZGl0dGV4dD4KKworCisgICAgPGJ1dHRvbiBuYW1lPSJhcnJvd1ZpZXciIHg9IjM2IiB3aWR0aD0iMjQiIHk9IjEiIGhlaWdodD0iMjMiID4KKyAgICAgICAgPHZpZXcgbmFtZT0iYXJyb3dfZG93bl9zbGlkZXIiIHJlc291cmNlPSJhcnJvd19kb3duX3NsaWRlcl9yc2MiIAorICAgICAgICAgICAgeD0iNCIgeT0iMyIgLz4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgICAgIHZhciBwaWNrID0gbmV3IGx6LmNoYW5nZVdpZHRoTGV0dGVyU2xpZGVyV2luKGNhbnZhcyx7aW5pdGlhbE51bWJlcjpwYXJlbnQubnVtZXJpY1ZhbHVlLnRlbXBWYWx1ZSxidG5SZWY6dGhpcy5wYXJlbnQseDoocGFyZW50LmdldEF0dHJpYnV0ZVJlbGF0aXZlKCd4JyxjYW52YXMpKSx5OihwYXJlbnQuZ2V0QXR0cmlidXRlUmVsYXRpdmUoJ3knLGNhbnZhcykpfSk7CisgICAgICAgICAgICAgICAgbHouTW9kZU1hbmFnZXIubWFrZU1vZGFsKCBwaWNrICk7CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iNDMxIiAvPgorICAgIDwvYnV0dG9uPgorICAgIAorPC9jbGFzcz4KKyAgICAKKzxjbGFzcyBuYW1lPSJjbG9zYWJsZVZpZXdMZXR0ZXIiIGV4dGVuZHM9InZpZXciPgorICAgIDxtZXRob2QgbmFtZT0iY2xvc2UiPgorICAgICAgICBsei5Nb2RlTWFuYWdlci5yZWxlYXNlKHRoaXMpOworICAgICAgICB0aGlzLmRlc3Ryb3koKTsKKyAgICA8L21ldGhvZD4KKzwvY2xhc3M+ICAgIAorICAgIAorPGNsYXNzIG5hbWU9ImNoYW5nZVdpZHRoTGV0dGVyU2xpZGVyV2luIiBleHRlbmRzPSJjbG9zYWJsZVZpZXdMZXR0ZXIiIGJnY29sb3I9IndoaXRlIiAKKyAgICBjbGlja2FibGU9InRydWUiIHdpZHRoPSI1OCIgaGVpZ2h0PSIxNDAiID4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9ImJ0blJlZiIgdmFsdWU9Im51bGwiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpbml0aWFsTnVtYmVyIiB2YWx1ZT0iMTIiIHR5cGU9Im51bWJlciIvPgorICAgIAorICAgIDwhLS0tIEBrZXl3b3JkcyBwcml2YXRlIC0tPgorICAgIDxtZXRob2QgbmFtZT0icGFzc01vZGVFdmVudCIgYXJncz0iZXZlbnRTdHIsdmlldyIgPiAKKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICBpZiAoIGV2ZW50U3RyID09ICJvbm1vdXNlZG93biIgICl7CisgICAgICAgICAgICAgICAgaWYgKCB2aWV3ICE9IG51bGwgKSB7CisgICAgICAgICAgICAgICAgICAgaWYgKCAhdmlldy5jaGlsZE9mKHRoaXMpICkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpOworICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHZpZXcgJiYgdmlldy5jaGlsZE9mKHRoaXMpKSB7CisgICAgICAgICAgICAgICAgaWYgKHZpZXdbIGV2ZW50U3RyIF0pIHsKKyAgICAgICAgICAgICAgICAgICAgdmlld1sgZXZlbnRTdHIgXS5zZW5kRXZlbnQoIHZpZXcgKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIF1dPiAKKyAgICA8L21ldGhvZD4KKworICAgIDx2aWV3IGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignYmFzZU1vdXNlY29sb3JpemVyJykgfSIgd2lkdGg9IjU4IiBoZWlnaHQ9IjEzOCIgeD0iMSIgeT0iMSIgLz4KKyAgICAKKyAgICA8dnNsaWRlciBuYW1lPSJfc2xpZGVyIiBoZWlnaHQ9IjEyMCIgeT0iMTAiIHg9IjEwIiBtaW52YWx1ZT0iNCIgbWF4dmFsdWU9IjEwMCIKKyAgICAgICAgaW5pdHZhbHVlPSIkb25jZXsgcGFyZW50LmluaXRpYWxOdW1iZXIgfSIgc2hvd3JhbmdlPSJmYWxzZSIgPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbnZhbHVlIiBhcmdzPSJ2Ij4KKyAgICAgICAgICAgIHBhcmVudC5idG5SZWYubnVtZXJpY1ZhbHVlLnRlbXBWYWx1ZSA9IE51bWJlcih2KTsKKyAgICAgICAgICAgIHBhcmVudC5idG5SZWYubnVtZXJpY1ZhbHVlLnNldEF0dHJpYnV0ZSgndGV4dCcsdik7CisgICAgICAgICAgICBwYXJlbnQuYnRuUmVmLnNldEF0dHJpYnV0ZSgnaW5pdGlhbE51bWJlcicsdik7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib252YWx1ZUNob3NlbkZpbmFsIj4KKyAgICAgICAgICAgIHBhcmVudC5jbG9zZSgpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgPC92c2xpZGVyPgorICAgIAorICAgIDx2aWV3IG5hbWU9Il9jbG9zZSIgeD0iJG9uY2V7IHBhcmVudC53aWR0aC10aGlzLndpZHRoLTIgfSIgeT0iMiIKKyAgICAgICAgcmVzb3VyY2U9ImJ0bl9wcmVzZW50ZXJfY2xvc2UiCisgICAgICAgIG9ubW91c2VvdmVyPSJ0aGlzLnNldEF0dHJpYnV0ZSgnZnJhbWUnLDIpIgorICAgICAgICBvbm1vdXNlb3V0PSJ0aGlzLnNldEF0dHJpYnV0ZSgnZnJhbWUnLDEpIgorICAgICAgICBvbm1vdXNlZG93bj0idGhpcy5zZXRBdHRyaWJ1dGUoJ2ZyYW1lJywzKSIKKyAgICAgICAgb25tb3VzZXVwPSJ0aGlzLnNldEF0dHJpYnV0ZSgnZnJhbWUnLDEpIiA+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2ZyYW1lJywyKTsKKyAgICAgICAgICAgIHRoaXMucGFyZW50LmNsb3NlKCk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSI0MzAiIC8+CisgICAgPC92aWV3PiAgICAgCisgICAgICAgIAorPC9jbGFzcz4gICAgCisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9scHMvY2hhbmdlV2lkdGhTbGlkZXIubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2xwcy9jaGFuZ2VXaWR0aFNsaWRlci5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGZhNzQ2YQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9scHMvY2hhbmdlV2lkdGhTbGlkZXIubHp4CkBAIC0wLDAgKzEsMTY4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PiAgCisKKzxjbGFzcyBuYW1lPSJjaGFuZ2VXaWR0aFNsaWRlciIgZXh0ZW5kcz0iYmFzZVByb3BlcnR5U2VsZWN0b3IiIGJnY29sb3I9IjB4RkZGRkZGIiB3aWR0aD0iNjAiIGhlaWdodD0iMjQiPgorCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJudW1iZXJBbGlnbiIgdmFsdWU9InJpZ2h0IiB0eXBlPSJzdHJpbmciLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9Im1pbmltdW0iIHR5cGU9Im51bWJlciIgdmFsdWU9IjEiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJtYXhpbXVtIiB0eXBlPSJudW1iZXIiIHZhbHVlPSIxMDAiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJzdGVwIiB2YWx1ZT0iMSIgdHlwZT0ibnVtYmVyIi8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpbml0aWFsTnVtYmVySW5pdCIgdmFsdWU9IjEiIHR5cGU9Im51bWJlciIvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iaW5pdGlhbE51bWJlciIgdmFsdWU9IjMiIHR5cGU9Im51bWJlciIvPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0iYm94UG9zaXRpb24iIHZhbHVlPSJkb3duIiB0eXBlPSJzdHJpbmciLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9ImxhYmVsaWQiIHZhbHVlPSI0MjkiIHR5cGU9Im51bWJlciIvPgorICAgIAorICAgIDxldmVudCBuYW1lPSJvbnBsdXMiIC8+CisgICAgPGV2ZW50IG5hbWU9Im9ubWludXMiIC8+CisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAgICAgdGhpcy5pbml0aWFsTnVtYmVySW5pdD1pbml0aWFsTnVtYmVyOworICAgIDwvaGFuZGxlcj4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4KKyAgICAgICAgcmV0dXJuIHRoaXMuaW5pdGlhbE51bWJlcjsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InNldFNsaWRlclZhbHVlIiBhcmdzPSJ2Ij4KKyAgICAJdGhpcy5pbml0aWFsTnVtYmVyID0gdjsKKyAgICAJdGhpcy5udW1lcmljVmFsdWUuc2V0QXR0cmlidXRlKCd0ZW1wVmFsdWUnLHRoaXMuaW5pdGlhbE51bWJlcik7CisgICAgCXRoaXMubnVtZXJpY1ZhbHVlLnNldEF0dHJpYnV0ZSgndGV4dCcsdGhpcy5pbml0aWFsTnVtYmVyKTsKKyAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInNldFNsaWRlclZhbHVlICIsdik7CisgICAgCXRoaXMuc2V0RW5hYmxlZCh0cnVlKTsKKyAgICA8L21ldGhvZD4KKworICAgIDxlZGl0dGV4dCBuYW1lPSJudW1lcmljVmFsdWUiIHdpZHRoPSIzNCIgaGVpZ2h0PSIyNCIgdGV4dD0iJG9uY2V7IHBhcmVudC5pbml0aWFsTnVtYmVyIH0iID4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJ0ZW1wVmFsdWUiIHZhbHVlPSIkb25jZXsgcGFyZW50LmluaXRpYWxOdW1iZXIgfSIgdHlwZT0ibnVtYmVyIiAvPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmZvY3VzIj4KKyAgICAgICAgICAgIHRoaXMudGVtcFZhbHVlID0gTnVtYmVyKHRoaXMuZ2V0VGV4dCgpKTsKKyAgICAgICAgPC9oYW5kbGVyPiAgICAgICAgICAgIAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmJsdXIiPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgdmFyIHQgPSBwYXJzZUludCh0aGlzLmdldFRleHQoKSk7CisgICAgICAgICAgICAgICAgaWYgKGlzTmFOKHQpIHx8IHQgPiB0aGlzLnBhcmVudC5tYXhpbXVtIHx8IHQgPCB0aGlzLnBhcmVudC5taW5pbXVtKXsKKyAgICAgICAgICAgICAgICAgICAgdCA9IHRoaXMudGVtcFZhbHVlOworICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgndGV4dCcsdCk7CisgICAgICAgICAgICAgICAgICAgIGx6LkZvY3VzLnNldEZvY3VzKHRoaXMpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMudGVtcFZhbHVlID0gdDsKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50LnNldEF0dHJpYnV0ZSgnaW5pdGlhbE51bWJlcicsdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICA8L2VkaXR0ZXh0PgorCisKKyAgICA8YnV0dG9uIG5hbWU9ImFycm93VmlldyIgeD0iMzYiIHdpZHRoPSIyNCIgeT0iMSIgaGVpZ2h0PSIyMyIgPgorICAgICAgICA8dmlldyBuYW1lPSJhcnJvd19kb3duX3NsaWRlciIgcmVzb3VyY2U9ImFycm93X2Rvd25fc2xpZGVyX3JzYyIgCisgICAgICAgICAgICB4PSI0IiB5PSIzIiAvPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICAJaWYgKHRoaXMucGFyZW50LmJveFBvc2l0aW9uPT0idXAiKXsKKyAgICAgICAgICAgIAkJdmFyIHBpY2sgPSBuZXcgbHouY2hhbmdlV2lkdGhTbGlkZXJXaW4oY2FudmFzLHsKKwkJCQkJICAgICAgICAgICAgCQkJaW5pdGlhbE51bWJlcjpwYXJlbnQubnVtZXJpY1ZhbHVlLnRlbXBWYWx1ZSwKKwkJCQkJICAgICAgICAgICAgCQkJYnRuUmVmOnRoaXMucGFyZW50LHg6KHBhcmVudC5nZXRBdHRyaWJ1dGVSZWxhdGl2ZSgneCcsY2FudmFzKSksCisJCQkJCSAgICAgICAgICAgIAkJCW1heHZhbHVlOnBhcmVudC5tYXhpbXVtLAorCQkJCQkgICAgICAgICAgICAJCQl5OihwYXJlbnQuZ2V0QXR0cmlidXRlUmVsYXRpdmUoJ3knLGNhbnZhcyktMTQwK3BhcmVudC5oZWlnaHQpCisJCQkJICAgICAgICAgICAgCQkJfSk7CisgICAgICAgICAgICAJfSBlbHNlIHsKKyAgICAgICAgICAgIAkJdmFyIHBpY2sgPSBuZXcgbHouY2hhbmdlV2lkdGhTbGlkZXJXaW4oY2FudmFzLHsKKwkJCQkJICAgICAgICAgICAgCQkJaW5pdGlhbE51bWJlcjpwYXJlbnQubnVtZXJpY1ZhbHVlLnRlbXBWYWx1ZSwKKwkJCQkJICAgICAgICAgICAgCQkJYnRuUmVmOnRoaXMucGFyZW50LHg6KHBhcmVudC5nZXRBdHRyaWJ1dGVSZWxhdGl2ZSgneCcsY2FudmFzKSksCisJCQkJCSAgICAgICAgICAgIAkJCW1heHZhbHVlOnBhcmVudC5tYXhpbXVtLAorCQkJCQkgICAgICAgICAgICAJCQl5OihwYXJlbnQuZ2V0QXR0cmlidXRlUmVsYXRpdmUoJ3knLGNhbnZhcykpCisJCQkJICAgICAgICAgICAgCQkJfSk7CisgICAgICAgICAgICAJfQorICAgICAgICAgICAgICAgIGx6Lk1vZGVNYW5hZ2VyLm1ha2VNb2RhbCggcGljayApOworICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IiRvbmNleyBwYXJlbnQucGFyZW50LmxhYmVsaWQgfSIgLz4KKyAgICA8L2J1dHRvbj4KKyAgICAKKzwvY2xhc3M+CisgICAgCis8Y2xhc3MgbmFtZT0iY2xvc2FibGVWaWV3IiBleHRlbmRzPSJ2aWV3Ij4KKyAgICA8bWV0aG9kIG5hbWU9ImNsb3NlIj4KKyAgICAgICAgbHouTW9kZU1hbmFnZXIucmVsZWFzZSh0aGlzKTsKKyAgICAgICAgdGhpcy5kZXN0cm95KCk7CisgICAgPC9tZXRob2Q+Cis8L2NsYXNzPiAgICAKKyAgICAKKzxjbGFzcyBuYW1lPSJjaGFuZ2VXaWR0aFNsaWRlcldpbiIgZXh0ZW5kcz0iY2xvc2FibGVWaWV3IiBiZ2NvbG9yPSJ3aGl0ZSIgCisgICAgY2xpY2thYmxlPSJ0cnVlIiB3aWR0aD0iNTgiIGhlaWdodD0iMTQwIiA+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJidG5SZWYiIHZhbHVlPSJudWxsIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iaW5pdGlhbE51bWJlciIgdmFsdWU9IjMiIHR5cGU9Im51bWJlciIvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibWF4dmFsdWUiIHZhbHVlPSIxMDAiIHR5cGU9Im51bWJlciIgLz4KKyAgICAKKyAgICA8IS0tLSBAa2V5d29yZHMgcHJpdmF0ZSAtLT4KKyAgICA8bWV0aG9kIG5hbWU9InBhc3NNb2RlRXZlbnQiIGFyZ3M9ImV2ZW50U3RyLHZpZXciID4gCisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgaWYgKCBldmVudFN0ciA9PSAib25tb3VzZWRvd24iICApeworICAgICAgICAgICAgICAgIGlmICggdmlldyAhPSBudWxsICkgeworICAgICAgICAgICAgICAgICAgIGlmICggIXZpZXcuY2hpbGRPZih0aGlzKSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTsKKyAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh2aWV3ICYmIHZpZXcuY2hpbGRPZih0aGlzKSkgeworICAgICAgICAgICAgICAgIGlmICh2aWV3WyBldmVudFN0ciBdKSB7CisgICAgICAgICAgICAgICAgICAgIHZpZXdbIGV2ZW50U3RyIF0uc2VuZEV2ZW50KCB2aWV3ICk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBdXT4gCisgICAgPC9tZXRob2Q+CisKKyAgICA8dmlldyBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ2Jhc2VNb3VzZWNvbG9yaXplcicpIH0iIHdpZHRoPSI1OCIgaGVpZ2h0PSIxMzgiIHg9IjEiIHk9IjEiIC8+CisgICAgCisgICAgPHZzbGlkZXIgbmFtZT0iX3NsaWRlciIgaGVpZ2h0PSIxMjAiIHk9IjEwIiB4PSIxMCIgbWludmFsdWU9IjEiIG1heHZhbHVlPSIkb25jZXsgcGFyZW50Lm1heHZhbHVlIH0iIAorICAgICAgICBpbml0dmFsdWU9IiRvbmNleyBwYXJlbnQuaW5pdGlhbE51bWJlciB9IiBzaG93cmFuZ2U9ImZhbHNlIiBzaG93dmFsdWU9InRydWUiPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbnZhbHVlIiBhcmdzPSJ2Ij4KKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9udmFsdWUiLHYpOworICAgICAgICAgICAgcGFyZW50LmJ0blJlZi5udW1lcmljVmFsdWUudGVtcFZhbHVlID0gTnVtYmVyKHYpOworICAgICAgICAgICAgcGFyZW50LmJ0blJlZi5udW1lcmljVmFsdWUuc2V0QXR0cmlidXRlKCd0ZXh0Jyx2KTsKKyAgICAgICAgICAgIHBhcmVudC5idG5SZWYuc2V0QXR0cmlidXRlKCdpbml0aWFsTnVtYmVyJyx2KTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbnZhbHVlQ2hvc2VuRmluYWwiPgorICAgICAgICAgICAgcGFyZW50LmNsb3NlKCk7CisgICAgICAgIDwvaGFuZGxlcj4gICAgICAgIAorICAgIDwvdnNsaWRlcj4KKyAgICAKKyAgICA8dmlldyBuYW1lPSJfY2xvc2UiIHg9IiRvbmNleyBwYXJlbnQud2lkdGgtdGhpcy53aWR0aC0yIH0iIHk9IjIiCisgICAgICAgIHJlc291cmNlPSJidG5fcHJlc2VudGVyX2Nsb3NlIgorICAgICAgICBvbm1vdXNlb3Zlcj0idGhpcy5zZXRBdHRyaWJ1dGUoJ2ZyYW1lJywyKSIKKyAgICAgICAgb25tb3VzZW91dD0idGhpcy5zZXRBdHRyaWJ1dGUoJ2ZyYW1lJywxKSIKKyAgICAgICAgb25tb3VzZWRvd249InRoaXMuc2V0QXR0cmlidXRlKCdmcmFtZScsMykiCisgICAgICAgIG9ubW91c2V1cD0idGhpcy5zZXRBdHRyaWJ1dGUoJ2ZyYW1lJywxKSIgPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdmcmFtZScsMik7CisgICAgICAgICAgICB0aGlzLnBhcmVudC5jbG9zZSgpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iNDMwIiAvPgorICAgIDwvdmlldz4gICAgIAorICAgICAgICAKKzwvY2xhc3M+ICAgIAorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvbHBzL2NvbG9ycGlja2VyLmx6eCBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9scHMvY29sb3JwaWNrZXIubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiZDYyZDUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvbHBzL2NvbG9ycGlja2VyLmx6eApAQCAtMCwwICsxLDM1MyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8IS0tLQorICAgICAgY2hhbmdlZCBieSBzd2FnbmVyCisgIC0tPgorPGxpYnJhcnk+CisgICAgCisgICAgCis8Y2xhc3MgbmFtZT0iY29sb3JTbGlkZXIiIGV4dGVuZHM9InNsaWRlciIgeD0iNCIKKyAgICBtaW52YWx1ZT0iMSIgbWF4dmFsdWU9IjI0MCIgCisgICAgdHJhY2toZWlnaHQ9IjQiIHRodW1iaGVpZ2h0PSIxMiIKKyAgICBzaG93cmFuZ2U9ImZhbHNlIiBzaG93dmFsdWU9InRydWUiPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iZG9TZW5kVmFsdWVFdmVudCIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorICAgIDxoYW5kbGVyIG5hbWU9Im9udmFsdWUiPgorICAgICAgICBpZiAodGhpcy5kb1NlbmRWYWx1ZUV2ZW50KSB7IAorICAgICAgICAgICAgY2xhc3Nyb290LnVwZGF0ZUNvbG9yKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aGlzLmRvU2VuZFZhbHVlRXZlbnQ9dHJ1ZTsKKyAgICAgICAgfQorICAgIDwvaGFuZGxlcj4KKzwvY2xhc3M+ICAgIAorCis8Y2xhc3MgbmFtZT0iY29sb3JQb3QiIHdpZHRoPSIxMyIgaGVpZ2h0PSIxMyIgCisgICAgb25tb3VzZW91dD0iIj4KKyAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3ZlciI+CisgICAgICAgIHZhciB0ID0gX3Jvb3QuY3JlYXRlRW1wdHlNb3ZpZUNsaXAoJ2hhbnMyJywyMCk7CisgICAgICAgIHZhciBteUNvbG9yVFogPSBuZXcgQ29sb3IodCk7CisgICAgICAgIG15Q29sb3JUWi5zZXRSR0IodGhpcy5teWNvbG9yKTsgICAgICAgIAorICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnbXljb2xvclN0cmluZycsdGhpcy5wYXJlbnQucGFyZW50LnBhcmVudC5udW1iZXJUb1JHQihteUNvbG9yVFopKTsKKyAgICA8L2hhbmRsZXI+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJteWNvbG9yIiB0eXBlPSJjb2xvciIgdmFsdWU9IjB4MDAwMDAwIi8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJteWNvbG9yU3RyaW5nIiB0eXBlPSJzdHJpbmciIHZhbHVlPSIweDAwMDAwMCIvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibGlzdGVuZXIiIHR5cGU9ImV4cHJlc3Npb24iLz4KKyAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgbGlzdGVuZXIuY2hhbmdlQ29sb3IodGhpcy5teWNvbG9yKTsKKyAgICAgICAgbGlzdGVuZXIuY2xvc2UoKTsKKyAgICA8L2hhbmRsZXI+CisgICAgPGhhbmRsZXIgbmFtZT0ib25kYmxjbGljayI+CisgICAgICAgIGxpc3RlbmVyLmNoYW5nZUNvbG9yKHRoaXMubXljb2xvcik7CisgICAgICAgIGxpc3RlbmVyLmNsb3NlKCk7CisgICAgPC9oYW5kbGVyPiAgICAKKyAgICA8bGFiZWxUb29sdGlwIHRleHQ9IiR7IHBhcmVudC5teWNvbG9yU3RyaW5nIH0iIC8+CisgICAgPHZpZXcgYmdjb2xvcj0iIzQ0NDQ0NCIgd2lkdGg9IjEzIiBoZWlnaHQ9IjEzIiA+CisgICAgICAgIDx2aWV3IGJnY29sb3I9IiR7Y2xhc3Nyb290Lm15Y29sb3J9IiAgeD0iMSIgeT0iMSIgd2lkdGg9IjExIiBoZWlnaHQ9IjExIi8+CisgICAgPC92aWV3PgorPC9jbGFzcz4KKyAgCis8Y2xhc3MgbmFtZT0iY29sb3JSb3ciIGxheW91dD0iYXhpczp4O3NwYWNpbmc6LTEiIC8+CisgICAgCis8Y2xhc3MgbmFtZT0iY29sb3JwaWNrZXIiIGV4dGVuZHM9Imd1aVByZXNlbnRlciIgbGFiZWxpZD0iNDI1IiBpc2RyYWdhYmxlPSJmYWxzZSIgCisgICAgbWluaW1pemFibGU9ImZhbHNlIiBtYXhpbWl6YWJsZT0iZmFsc2UiIGZ1bGxUb29sQmFyPSJ0cnVlIiAKKyAgICByZXNpemVhYmxlPSJmYWxzZSIgd2lkdGg9IjI1MCIgaGVpZ2h0PSIxNTQiID4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9ImJ0blJlZiIgdmFsdWU9Im51bGwiIC8+CisgICAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9InNlbGVjdGVkQ29sb3IiIHR5cGU9Im51bWJlciIgdmFsdWU9IjB4MDBhZWVmIi8+CisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib25jbG9zZSI+CisgICAgCWx6Lk1vZGVNYW5hZ2VyLnJlbGVhc2UodGhpcyk7CisgICAgICAgIHRoaXMuYnRuUmVmLmNsb3NlZENvbG9yUGlja2VyKCk7CisgICAgICAgIHRoaXMuYnRuUmVmLnNldEF0dHJpYnV0ZSgnc2VsZWN0ZWRDb2xvcicsIHRoaXMuc2VsZWN0ZWRDb2xvcik7CisgICAgICAgIHRoaXMuYnRuUmVmLnNldFRyYW5zZm9ybWVkU3RyaW5nQ29sb3IoKTsgICAgICAgIAorICAgIDwvaGFuZGxlcj4KKyAgICAKKyAgICA8IS0tLSBAa2V5d29yZHMgcHJpdmF0ZSAtLT4KKyAgICA8bWV0aG9kIG5hbWU9InBhc3NNb2RlRXZlbnQiIGFyZ3M9ImV2ZW50U3RyLHZpZXciID4gCisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICBpZiAoIGV2ZW50U3RyID09ICJvbm1vdXNlZG93biIgICl7CisgICAgICAgICAgICAgICBpZiAoIHZpZXcgIT0gbnVsbCApIHsKKyAgICAgICAgICAgICAgICAgIGlmICggIXZpZXcuY2hpbGRPZih0aGlzKSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7CisgICAgICAgICAgICAgICB9CisgICAgICAgICAgIH0KKyAgICAgICAgICAgaWYgKHZpZXcgJiYgdmlldy5jaGlsZE9mKHRoaXMpKSB7CisgICAgICAgICAgICAgICBpZiAodmlld1sgZXZlbnRTdHIgXSkgeworICAgICAgICAgICAgICAgICAgIHZpZXdbIGV2ZW50U3RyIF0uc2VuZEV2ZW50KCB2aWV3ICk7CisgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgIH0KKyAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICBdXT4gCisgICAgPC9tZXRob2Q+ICAKKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImRvRGVmYXVsdENvbG9yIiBhcmdzPSJ0aGlzQyI+CisgICAgICAgIDwhW0NEQVRBWyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIGMgPSB0aGlzQy5nZXRSR0IoKTsKKyAgICAgICAgICAgIHZhciByID0gKGMgPj4gMTYpICYgMHhmZjsKKyAgICAgICAgICAgIHZhciBnID0gKGMgPj4gOCkgJiAgMHhmZjsKKyAgICAgICAgICAgIHZhciBiID0gYyAmIDB4ZmY7CisgICAgICAgICAgICAvLy8vRGVidWcud3JpdGUoInIgZyBiOiAiLHIsZyxiKTsKKyAgICAgICAgICAgIHZhciBoc2wgPSBSR0J0b0hMUyhyLGcsYik7CisgICAgICAgICAgICAvLy8vRGVidWcud3JpdGUoImRvRGVmYXVsdENvbG9yICIsaHNsKTsKKyAgICAgICAgICAgIHRoaXMudXBkYXRlU2xpZGVyc0J5VmFsdWUoaHNsKTsKKyAgICAgICAgICAgIHZhciByZ2IgPSBITFN0b1JHQihzX2h1ZS52YWx1ZSwgc19icmkudmFsdWUsIHNfc2F0LnZhbHVlKTsKKyAgICAgICAgICAgIHZhciBjID0gcmdiLnIgPDwgMTYgfCByZ2IuZyA8PCA4IHwgcmdiLmIKKyAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdzZWxlY3RlZENvbG9yJywgYyk7CisgICAgICAgIF1dPiAgICAKKyAgICA8L21ldGhvZD4gIAorICAgIAorICAgIDxtZXRob2QgbmFtZT0idXBkYXRlQ29sb3IiID4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAvLy8vRGVidWcud3JpdGUoInVwZGF0ZUNvbG9yICIpOworICAgICAgICAgICAgdmFyIHJnYiA9IEhMU3RvUkdCKHNfaHVlLnZhbHVlLCBzX2JyaS52YWx1ZSwgc19zYXQudmFsdWUpOworICAgICAgICAgICAgdmFyIGMgPSByZ2IuciA8PCAxNiB8IHJnYi5nIDw8IDggfCByZ2IuYgorICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3NlbGVjdGVkQ29sb3InLCBjKTsKKworICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImNoYW5nZUNvbG9yIiBhcmdzPSJjIj4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAvLy8vRGVidWcud3JpdGUoImNoYW5nZUNvbG9yICIpOworICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3NlbGVjdGVkQ29sb3InLCBjKTsKKyAgICAgICAgICAgIHZhciByID0gKGMgPj4gMTYpICYgMHhmZjsKKyAgICAgICAgICAgIHZhciBnID0gKGMgPj4gOCkgJiAgMHhmZjsKKyAgICAgICAgICAgIHZhciBiID0gYyAmIDB4ZmY7CisgICAgICAgICAgICB2YXIgaHNsID0gUkdCdG9ITFMocixnLGIpOworICAgICAgICAgICAgdGhpcy51cGRhdGVTbGlkZXJzQnlWYWx1ZShoc2wpOworICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InVwZGF0ZVNsaWRlcnNCeVZhbHVlIiBhcmdzPSJoc2wiPgorICAgICAgICBzX2h1ZS5kb1NlbmRWYWx1ZUV2ZW50PWZhbHNlOworICAgICAgICBzX2h1ZS5zZXRWYWx1ZShoc2wuaCk7CisgICAgICAgIHNfYnJpLmRvU2VuZFZhbHVlRXZlbnQ9ZmFsc2U7CisgICAgICAgIHNfYnJpLnNldFZhbHVlKGhzbC5sKTsKKyAgICAgICAgc19zYXQuZG9TZW5kVmFsdWVFdmVudD1mYWxzZTsKKyAgICAgICAgc19zYXQuc2V0VmFsdWUoaHNsLnMpOyAgICAgICAgCisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJudW1iZXJUb1JHQiIgYXJncz0idGhpc0MiPgorICAgICAgICA8IVtDREFUQVsgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciBjID0gdGhpc0MuZ2V0UkdCKCk7CisgICAgICAgICAgICB2YXIgciA9IChjID4+IDE2KSAmIDB4ZmY7CisgICAgICAgICAgICB2YXIgZyA9IChjID4+IDgpICYgIDB4ZmY7CisgICAgICAgICAgICB2YXIgYiA9IGMgJiAweGZmOworICAgICAgICAgICAgLy8vL0RlYnVnLndyaXRlKCJyIGcgYjogIixyLGcsYik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEhFWF9SID0gci50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTsKKyAgICAgICAgICAgIEhFWF9HID0gZy50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTsKKyAgICAgICAgICAgIEhFWF9CID0gYi50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKEhFWF9SLmxlbmd0aCA8IDIpIHsKKyAgICAgICAgICAgICAgICBIRVhfUiA9ICIwIitIRVhfUjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChIRVhfRy5sZW5ndGggPCAyKSB7CisgICAgICAgICAgICAgICAgSEVYX0cgPSAiMCIrSEVYX0c7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoSEVYX0IubGVuZ3RoIDwgMikgeworICAgICAgICAgICAgICAgIEhFWF9CID0gIjAiK0hFWF9COworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFyIGhleCA9ICIweCIrSEVYX1IgKyBIRVhfRyArIEhFWF9COworCisgICAgICAgICAgICByZXR1cm4gaGV4OworICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9IlJHQnRvSExTIiBhcmdzPSJyLGcsYiI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgdmFyIGgsbCxzOworICAgICAgICAgICAgdmFyIG1heCA9IChNYXRoLm1heChNYXRoLm1heChyLCBnKSwgYikpLzI1NTsKKyAgICAgICAgICAgIHZhciBtaW4gPSAoTWF0aC5taW4oTWF0aC5taW4ociwgZyksIGIpKS8yNTU7CisgICAgICAgICAgICB2YXIgZGVsdGEgPSBtYXgtbWluOworICAgICAgICAgICAgbCA9IChtYXgrbWluKS8yOworICAgICAgICAgICAgcyA9IChtYXggPT0gbWluKSA/IDAgOiAoKGwgPD0gMC41KSA/IGRlbHRhL2wvMiA6IGRlbHRhLygyLWwqMikpOworICAgICAgICAgICAgaWYoci8yNTUgPT0gbWF4KSBoID0gKGctYikvZGVsdGEvMjU1OworICAgICAgICAgICAgZWxzZSBpZihnLzI1NSA9PSBtYXgpIGggPSAyKyhiLXIpL2RlbHRhLzI1NTsKKyAgICAgICAgICAgIGVsc2UgaWYoYi8yNTUgPT0gbWF4KSBoID0gNCsoci1nKS9kZWx0YS8yNTU7CisgICAgICAgICAgICBoICo9IDQwOworICAgICAgICAgICAgaWYoaCA8IDApIGggKz0gMjQwOworICAgICAgICAgICAgaCA9IE1hdGgucm91bmQoaCk7CisgICAgICAgICAgICByZXR1cm4ge2g6KChpc05hTihoKSkgPyAwIDogaCksIGw6TWF0aC5yb3VuZChsKjI0MCksIHM6TWF0aC5yb3VuZChzKjI0MCl9OworICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9IkhMU3RvUkdCIiBhcmdzPSJoLGwscyI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgdmFyIHIsZyxiOworICAgICAgICAgICAgaWYocyA9PSAwKSB7CisgICAgICAgICAgICAgICAgciA9IGcgPSBiID0gTWF0aC5yb3VuZChsLzI0MCoyNTUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBoIC89IDI0MDsgbCAvPSAyNDA7IHMgLz0gMjQwOworICAgICAgICAgICAgICAgIHZhciB0ZW1wNCx0ZW1wMzsKKyAgICAgICAgICAgICAgICB2YXIgdGVtcDIgPSAobCA8IDAuNSkgPyBsKihzKzEpIDogbCtzLWwqczsKKyAgICAgICAgICAgICAgICB2YXIgdGVtcDEgPSBsKjIgLSB0ZW1wMjsKKyAgICAgICAgICAgICAgICBmb3IodmFyIGk9MDsgaTwzOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgc3dpdGNoKGkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDogdGVtcDMgPSBoKzEvMzsgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6IHRlbXAzID0gaDsgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6IHRlbXAzID0gaC0xLzM7IGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmKHRlbXAzIDwgMCkgdGVtcDMrKzsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZih0ZW1wMyA+IDEpIHRlbXAzLS07CisgICAgICAgICAgICAgICAgICAgIGlmKHRlbXAzKjYgPCAxKSB0ZW1wNCA9IHRlbXAxKyh0ZW1wMi10ZW1wMSkqNip0ZW1wMzsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZih0ZW1wMyoyIDwgMSkgdGVtcDQgPSB0ZW1wMjsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZih0ZW1wMyozIDwgMikgdGVtcDQgPSB0ZW1wMSsodGVtcDItdGVtcDEpKigoMi8zKS10ZW1wMykqNjsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSB0ZW1wNCA9IHRlbXAxOworICAgICAgICAgICAgICAgICAgICBzd2l0Y2goaSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOiByID0gTWF0aC5yb3VuZCh0ZW1wNCoyNTUpOyBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTogZyA9IE1hdGgucm91bmQodGVtcDQqMjU1KTsgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6IGIgPSBNYXRoLnJvdW5kKHRlbXA0KjI1NSk7IGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHtyOnIsIGc6ZywgYjpifTsKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgCisgICAgPHRleHQgZm9udHNpemU9IjgiIHg9IiRvbmNle2NsYXNzcm9vdC5zX2h1ZS53aWR0aCArIGNsYXNzcm9vdC5zX2h1ZS54fSIKKyAgICAgICAgICB5PSIkb25jZXtjbGFzc3Jvb3Quc19odWUueSAtIDR9IiB0ZXh0PSJIVUUiIHdpZHRoPSIyNiIvPgorICAgICAgCisgICAgPGNvbG9yU2xpZGVyIG5hbWU9InNfaHVlIiB5PSIxMDIiIC8+CisgICAgCisgICAgPHRleHQgZm9udHNpemU9IjgiIHg9IiRvbmNle2NsYXNzcm9vdC5zX2JyaS53aWR0aCArIGNsYXNzcm9vdC5zX2JyaS54fSIKKyAgICAgICAgICB5PSIkb25jZXtjbGFzc3Jvb3Quc19icmkueSAtIDR9IiB0ZXh0PSJCUkkiIC8+CisgICAgICAKKyAgICA8Y29sb3JTbGlkZXIgbmFtZT0ic19icmkiIHk9IjEyMCIgLz4KKyAgICAKKyAgICA8dGV4dCBmb250c2l6ZT0iOCIgeD0iJG9uY2V7Y2xhc3Nyb290LnNfc2F0LndpZHRoICsgY2xhc3Nyb290LnNfc2F0Lnh9IgorICAgICAgICAgIHk9IiRvbmNle2NsYXNzcm9vdC5zX3NhdC55IC0gNH0iIHRleHQ9IlNBVCIgLz4KKyAgICAKKyAgICA8Y29sb3JTbGlkZXIgbmFtZT0ic19zYXQiIHk9IjEzOCIgLz4gIAorICAgIAorICAgIAorICAgIDwhLS0gY3VycmVudCBjb2xvciAtLT4KKyAgICA8dmlldyBuYW1lPSJjMiIgYmdjb2xvcj0iYmxhY2siIHdpZHRoPSIzMCIgaGVpZ2h0PSI2NiIgeT0iMjQiIHg9IjIwNiI+CisgICAgICAgIDx2aWV3IG5hbWU9ImN1cnJlbnQiIHg9IjEiIHk9IjEiIGJnY29sb3I9IiR7Y2xhc3Nyb290LnNlbGVjdGVkQ29sb3J9IiAKKyAgICAgICAgICAgIHdpZHRoPSIkb25jZXtwYXJlbnQud2lkdGggLTJ9IiBoZWlnaHQ9IiRvbmNle3BhcmVudC5oZWlnaHQgLTJ9IiAvPgorICAgIDwvdmlldz4KKworICAgIDwhLS0gZGVmYXVsdCBjb2xvcnMgLS0+CisgICAgPHZpZXcgeD0iNCIgeT0iMjYiIGxheW91dD0iYXhpczp5O3NwYWNpbmc6LTEiID4KKworICAgICAgICA8Y29sb3JSb3c+CisgICAgICAgICAgICA8Y29sb3JQb3QgbGlzdGVuZXI9IiRvbmNle2NsYXNzcm9vdH0iIG15Y29sb3I9IiNmZjAwMDAiIG15Y29sb3JTdHJpbmc9IjB4RkYwMDAwIiAvPgorICAgICAgICAgICAgPGNvbG9yUG90IGxpc3RlbmVyPSIkb25jZXtjbGFzc3Jvb3R9IiBteWNvbG9yPSIjZmZmZjAwIiBteWNvbG9yU3RyaW5nPSIweEZGRkYwMCIgLz4KKyAgICAgICAgICAgIDxjb2xvclBvdCBsaXN0ZW5lcj0iJG9uY2V7Y2xhc3Nyb290fSIgbXljb2xvcj0iIzAwZmYwMCIgbXljb2xvclN0cmluZz0iMHgwMEZGMDAiIC8+CisgICAgICAgICAgICA8Y29sb3JQb3QgbGlzdGVuZXI9IiRvbmNle2NsYXNzcm9vdH0iIG15Y29sb3I9IiMwMGZmZmYiIG15Y29sb3JTdHJpbmc9IjB4MDBGRkZGIiAvPgorICAgICAgICAgICAgPGNvbG9yUG90IGxpc3RlbmVyPSIkb25jZXtjbGFzc3Jvb3R9IiBteWNvbG9yPSIjMDAwMGZmIiBteWNvbG9yU3RyaW5nPSIweDAwMDBGRiIgLz4KKyAgICAgICAgICAgIDxjb2xvclBvdCBsaXN0ZW5lcj0iJG9uY2V7Y2xhc3Nyb290fSIgbXljb2xvcj0iI2ZmMDBmZiIgbXljb2xvclN0cmluZz0iMHhGRjAwRmYiIC8+CisgICAgICAgICAgICA8Y29sb3JQb3QgbGlzdGVuZXI9IiRvbmNle2NsYXNzcm9vdH0iIG15Y29sb3I9IiNmZmZmZmYiIG15Y29sb3JTdHJpbmc9IjB4RkZGRkZGIiAvPgorICAgICAgICAgICAgPGNvbG9yUG90IGxpc3RlbmVyPSIkb25jZXtjbGFzc3Jvb3R9IiBteWNvbG9yPSIjZWJlYmViIiBteWNvbG9yU3RyaW5nPSIweEVCRUJFQiIgLz4KKyAgICAgICAgICAgIDxjb2xvclBvdCBsaXN0ZW5lcj0iJG9uY2V7Y2xhc3Nyb290fSIgbXljb2xvcj0iI2UxZTFlMSIgbXljb2xvclN0cmluZz0iMHhFMUUxRTEiIC8+CisgICAgICAgICAgICA8Y29sb3JQb3QgbGlzdGVuZXI9IiRvbmNle2NsYXNzcm9vdH0iIG15Y29sb3I9IiNkN2Q3ZDciIG15Y29sb3JTdHJpbmc9IjB4RDdEN0Q3IiAvPgorICAgICAgICAgICAgPGNvbG9yUG90IGxpc3RlbmVyPSIkb25jZXtjbGFzc3Jvb3R9IiBteWNvbG9yPSIjY2NjY2NjIiBteWNvbG9yU3RyaW5nPSIweENDQ0NDQyIgLz4KKyAgICAgICAgICAgIDxjb2xvclBvdCBsaXN0ZW5lcj0iJG9uY2V7Y2xhc3Nyb290fSIgbXljb2xvcj0iI2MyYzJjMiIgbXljb2xvclN0cmluZz0iMHhDMkMyQzIiIC8+CisgICAgICAgICAgICA8Y29sb3JQb3QgbGlzdGVuZXI9IiRvbmNle2NsYXNzcm9vdH0iIG15Y29sb3I9IiNiN2I3YjciIG15Y29sb3JTdHJpbmc9IjB4QjdCN0I3IiAvPgorICAgICAgICAgICAgPGNvbG9yUG90IGxpc3RlbmVyPSIkb25jZXtjbGFzc3Jvb3R9IiBteWNvbG9yPSIjYWNhY2FjIiBteWNvbG9yU3RyaW5nPSIweEFDQUNBQyIgLz4KKyAgICAgICAgICAgIDxjb2xvclBvdCBsaXN0ZW5lcj0iJG9uY2V7Y2xhc3Nyb290fSIgbXljb2xvcj0iI2EwYTBhMCIgbXljb2xvclN0cmluZz0iMHhBMEEwQTAiIC8+CisgICAgICAgICAgICA8Y29sb3JQb3QgbGlzdGVuZXI9IiRvbmNle2NsYXNzcm9vdH0iIG15Y29sb3I9IiM5NTk1OTUiIG15Y29sb3JTdHJpbmc9IjB4OTU5NTk1IiAvPgorICAgICAgICA8L2NvbG9yUm93PgorICAgICAgICA8Y29sb3JSb3c+CisgICAgICAgICAgICA8Y29sb3JQb3QgbGlzdGVuZXI9IiRvbmNle2NsYXNzcm9vdH0iIG15Y29sb3I9IiNlZTFkMjQiIG15Y29sb3JTdHJpbmc9IjB4RUUxRDI0IiAvPgorICAgICAgICAgICAgPGNvbG9yUG90IGxpc3RlbmVyPSIkb25jZXtjbGFzc3Jvb3R9IiBteWNvbG9yPSIjZmZmMTAwIiBteWNvbG9yU3RyaW5nPSIweEZGRjEwMCIgLz4KKyAgICAgICAgICAgIDxjb2xvclBvdCBsaXN0ZW5lcj0iJG9uY2V7Y2xhc3Nyb290fSIgbXljb2xvcj0iIzAwYTY1MCIgbXljb2xvclN0cmluZz0iMHgwMEE2NTAiIC8+CisgICAgICAgICAgICA8Y29sb3JQb3QgbGlzdGVuZXI9IiRvbmNle2NsYXNzcm9vdH0iIG15Y29sb3I9IiMwMGFlZWYiIG15Y29sb3JTdHJpbmc9IjB4MDBBRUVGIiAvPgorICAgICAgICAgICAgPGNvbG9yUG90IGxpc3RlbmVyPSIkb25jZXtjbGFzc3Jvb3R9IiBteWNvbG9yPSIjMmYzMTkyIiBteWNvbG9yU3RyaW5nPSIweDJGMzE5MiIgLz4KKyAgICAgICAgICAgIDxjb2xvclBvdCBsaXN0ZW5lcj0iJG9uY2V7Y2xhc3Nyb290fSIgbXljb2xvcj0iI2VkMDA4YyIgbXljb2xvclN0cmluZz0iMHhFRDAwOEMiIC8+CisgICAgICAgICAgICA8Y29sb3JQb3QgbGlzdGVuZXI9IiRvbmNle2NsYXNzcm9vdH0iIG15Y29sb3I9IiM4OTg5ODkiIG15Y29sb3JTdHJpbmc9IjB4ODk4OTg5IiAvPgorICAgICAgICAgICAgPGNvbG9yUG90IGxpc3RlbmVyPSIkb25jZXtjbGFzc3Jvb3R9IiBteWNvbG9yPSIjN2Q3ZDdkIiBteWNvbG9yU3RyaW5nPSIweDdEN0Q3RCIgLz4KKyAgICAgICAgICAgIDxjb2xvclBvdCBsaXN0ZW5lcj0iJG9uY2V7Y2xhc3Nyb290fSIgbXljb2xvcj0iIzcwNzA3MCIgbXljb2xvclN0cmluZz0iMHg3MDcwNzAiIC8+CisgICAgICAgICAgICA8Y29sb3JQb3QgbGlzdGVuZXI9IiRvbmNle2NsYXNzcm9vdH0iIG15Y29sb3I9IiM2MjYyNjIiIG15Y29sb3JTdHJpbmc9IjB4NjI2MjYyIiAvPgorICAgICAgICAgICAgPGNvbG9yUG90IGxpc3RlbmVyPSIkb25jZXtjbGFzc3Jvb3R9IiBteWNvbG9yPSIjNTU1NTU1IiBteWNvbG9yU3RyaW5nPSIweDU1NTU1NSIgLz4KKyAgICAgICAgICAgIDxjb2xvclBvdCBsaXN0ZW5lcj0iJG9uY2V7Y2xhc3Nyb290fSIgbXljb2xvcj0iIzQ2NDY0NiIgbXljb2xvclN0cmluZz0iMHg0NjQ2NDYiIC8+CisgICAgICAgICAgICA8Y29sb3JQb3QgbGlzdGVuZXI9IiRvbmNle2NsYXNzcm9vdH0iIG15Y29sb3I9IiMzNjM2MzYiIG15Y29sb3JTdHJpbmc9IjB4MzYzNjM2IiAvPgorICAgICAgICAgICAgPGNvbG9yUG90IGxpc3RlbmVyPSIkb25jZXtjbGFzc3Jvb3R9IiBteWNvbG9yPSIjMjYyNjI2IiBteWNvbG9yU3RyaW5nPSIweDI2MjYyNiIgLz4KKyAgICAgICAgICAgIDxjb2xvclBvdCBsaXN0ZW5lcj0iJG9uY2V7Y2xhc3Nyb290fSIgbXljb2xvcj0iIzExMTExMSIgbXljb2xvclN0cmluZz0iMHgxMTExMTEiIC8+CisgICAgICAgICAgICA8Y29sb3JQb3QgbGlzdGVuZXI9IiRvbmNle2NsYXNzcm9vdH0iIG15Y29sb3I9IiMwMDAwMDAiIG15Y29sb3JTdHJpbmc9IjB4MDAwMDAwIiAvPgorICAgICAgICA8L2NvbG9yUm93PgorICAgICAgICAgIAorICAgICAgICA8Y29sb3JSb3c+CisgICAgICAgICAgICA8Y29sb3JQb3QgbGlzdGVuZXI9IiRvbmNle2NsYXNzcm9vdH0iIG15Y29sb3I9IiNmNzk3N2EiIG15Y29sb3JTdHJpbmc9IjB4Rjc5NzdBIiAvPgorICAgICAgICAgICAgPGNvbG9yUG90IGxpc3RlbmVyPSIkb25jZXtjbGFzc3Jvb3R9IiBteWNvbG9yPSIjZmJhZDgyIiBteWNvbG9yU3RyaW5nPSIweEZCQUQ4MiIgLz4KKyAgICAgICAgICAgIDxjb2xvclBvdCBsaXN0ZW5lcj0iJG9uY2V7Y2xhc3Nyb290fSIgbXljb2xvcj0iI2ZkYzY4YyIgbXljb2xvclN0cmluZz0iMHhGREM2OEMiIC8+CisgICAgICAgICAgICA8Y29sb3JQb3QgbGlzdGVuZXI9IiRvbmNle2NsYXNzcm9vdH0iIG15Y29sb3I9IiNmZmY3OTkiIG15Y29sb3JTdHJpbmc9IjB4RkZGNzk5IiAvPgorICAgICAgICAgICAgPGNvbG9yUG90IGxpc3RlbmVyPSIkb25jZXtjbGFzc3Jvb3R9IiBteWNvbG9yPSIjYzZkZjljIiBteWNvbG9yU3RyaW5nPSIweEM2REY5QyIgLz4KKyAgICAgICAgICAgIDxjb2xvclBvdCBsaXN0ZW5lcj0iJG9uY2V7Y2xhc3Nyb290fSIgbXljb2xvcj0iI2E0ZDQ5ZCIgbXljb2xvclN0cmluZz0iMHhBNEQ0OUQiIC8+CisgICAgICAgICAgICA8Y29sb3JQb3QgbGlzdGVuZXI9IiRvbmNle2NsYXNzcm9vdH0iIG15Y29sb3I9IiM4MWNhOWQiIG15Y29sb3JTdHJpbmc9IjB4ODFDQTlEIiAvPgorICAgICAgICAgICAgPGNvbG9yUG90IGxpc3RlbmVyPSIkb25jZXtjbGFzc3Jvb3R9IiBteWNvbG9yPSIjN2JjZGM5IiBteWNvbG9yU3RyaW5nPSIweDdiY2RjOSIgLz4KKyAgICAgICAgICAgIDxjb2xvclBvdCBsaXN0ZW5lcj0iJG9uY2V7Y2xhc3Nyb290fSIgbXljb2xvcj0iIzZjY2ZmNyIgbXljb2xvclN0cmluZz0iMHg2Q0NGRjciIC8+CisgICAgICAgICAgICA8Y29sb3JQb3QgbGlzdGVuZXI9IiRvbmNle2NsYXNzcm9vdH0iIG15Y29sb3I9IiM3Y2E2ZDgiIG15Y29sb3JTdHJpbmc9IjB4N0NBNkQ4IiAvPgorICAgICAgICAgICAgPGNvbG9yUG90IGxpc3RlbmVyPSIkb25jZXtjbGFzc3Jvb3R9IiBteWNvbG9yPSIjODI5M2NhIiBteWNvbG9yU3RyaW5nPSIweDgyOTNDQSIgLz4KKyAgICAgICAgICAgIDxjb2xvclBvdCBsaXN0ZW5lcj0iJG9uY2V7Y2xhc3Nyb290fSIgbXljb2xvcj0iIzg4ODFiZSIgbXljb2xvclN0cmluZz0iMHg4ODgxQkUiIC8+CisgICAgICAgICAgICA8Y29sb3JQb3QgbGlzdGVuZXI9IiRvbmNle2NsYXNzcm9vdH0iIG15Y29sb3I9IiNhMjg2YmQiIG15Y29sb3JTdHJpbmc9IjB4QTI4NkJEIiAvPgorICAgICAgICAgICAgPGNvbG9yUG90IGxpc3RlbmVyPSIkb25jZXtjbGFzc3Jvb3R9IiBteWNvbG9yPSIjYmM4Y2JmIiBteWNvbG9yU3RyaW5nPSIweEJDOENCZiIgLz4KKyAgICAgICAgICAgIDxjb2xvclBvdCBsaXN0ZW5lcj0iJG9uY2V7Y2xhc3Nyb290fSIgbXljb2xvcj0iI2Y0OWJjMSIgbXljb2xvclN0cmluZz0iMHhGNDlCQzEiIC8+CisgICAgICAgICAgICA8Y29sb3JQb3QgbGlzdGVuZXI9IiRvbmNle2NsYXNzcm9vdH0iIG15Y29sb3I9IiNmNTk5OWQiIG15Y29sb3JTdHJpbmc9IjB4ZjU5OTlkIiAvPgorICAgICAgICA8L2NvbG9yUm93PgorICAgICAgICAgIAorICAgICAgICA8Y29sb3JSb3c+CisgICAgICAgICAgICA8Y29sb3JQb3QgbGlzdGVuZXI9IiRvbmNle2NsYXNzcm9vdH0iIG15Y29sb3I9IiNmMTZjNGQiIG15Y29sb3JTdHJpbmc9IjB4RjE2QzREIiAvPgorICAgICAgICAgICAgPGNvbG9yUG90IGxpc3RlbmVyPSIkb25jZXtjbGFzc3Jvb3R9IiBteWNvbG9yPSIjZjY4ZTU0IiBteWNvbG9yU3RyaW5nPSIweEY2OEU1NCIgLz4KKyAgICAgICAgICAgIDxjb2xvclBvdCBsaXN0ZW5lcj0iJG9uY2V7Y2xhc3Nyb290fSIgbXljb2xvcj0iI2ZiYWY1YSIgbXljb2xvclN0cmluZz0iMHhGQkFGNUEiIC8+CisgICAgICAgICAgICA8Y29sb3JQb3QgbGlzdGVuZXI9IiRvbmNle2NsYXNzcm9vdH0iIG15Y29sb3I9IiNmZmY0NjciIG15Y29sb3JTdHJpbmc9IjB4RkZGNDY3IiAvPgorICAgICAgICAgICAgPGNvbG9yUG90IGxpc3RlbmVyPSIkb25jZXtjbGFzc3Jvb3R9IiBteWNvbG9yPSIjYWNkMzcyIiBteWNvbG9yU3RyaW5nPSIweEFDRDM3MiIgLz4KKyAgICAgICAgICAgIDxjb2xvclBvdCBsaXN0ZW5lcj0iJG9uY2V7Y2xhc3Nyb290fSIgbXljb2xvcj0iIzdkYzQ3MyIgbXljb2xvclN0cmluZz0iMHg3REM0NzMiIC8+CisgICAgICAgICAgICA8Y29sb3JQb3QgbGlzdGVuZXI9IiRvbmNle2NsYXNzcm9vdH0iIG15Y29sb3I9IiMzOWI3NzgiIG15Y29sb3JTdHJpbmc9IjB4MzlCNzc4IiAvPgorICAgICAgICAgICAgPGNvbG9yUG90IGxpc3RlbmVyPSIkb25jZXtjbGFzc3Jvb3R9IiBteWNvbG9yPSIjMTZiY2I0IiBteWNvbG9yU3RyaW5nPSIweDE2QkNCNCIgLz4KKyAgICAgICAgICAgIDxjb2xvclBvdCBsaXN0ZW5lcj0iJG9uY2V7Y2xhc3Nyb290fSIgbXljb2xvcj0iIzAwYmZmMyIgbXljb2xvclN0cmluZz0iMHgwMEJGRjMiIC8+CisgICAgICAgICAgICA8Y29sb3JQb3QgbGlzdGVuZXI9IiRvbmNle2NsYXNzcm9vdH0iIG15Y29sb3I9IiM0MzhjY2IiIG15Y29sb3JTdHJpbmc9IjB4NDM4Q0NCIiAvPgorICAgICAgICAgICAgPGNvbG9yUG90IGxpc3RlbmVyPSIkb25jZXtjbGFzc3Jvb3R9IiBteWNvbG9yPSIjNTU3M2I3IiBteWNvbG9yU3RyaW5nPSIweDU1NzNCNyIgLz4KKyAgICAgICAgICAgIDxjb2xvclBvdCBsaXN0ZW5lcj0iJG9uY2V7Y2xhc3Nyb290fSIgbXljb2xvcj0iIzVlNWNhNyIgbXljb2xvclN0cmluZz0iMHg1RTVDQTciIC8+CisgICAgICAgICAgICA8Y29sb3JQb3QgbGlzdGVuZXI9IiRvbmNle2NsYXNzcm9vdH0iIG15Y29sb3I9IiM4NTVGQTgiIG15Y29sb3JTdHJpbmc9IjB4ODU1RkE4IiAvPgorICAgICAgICAgICAgPGNvbG9yUG90IGxpc3RlbmVyPSIkb25jZXtjbGFzc3Jvb3R9IiBteWNvbG9yPSIjYTc2M2E5IiBteWNvbG9yU3RyaW5nPSIweEE3NjNBOSIgLz4KKyAgICAgICAgICAgIDxjb2xvclBvdCBsaXN0ZW5lcj0iJG9uY2V7Y2xhc3Nyb290fSIgbXljb2xvcj0iI2VmNmVhOCIgbXljb2xvclN0cmluZz0iMHhFZjZFQTgiIC8+CisgICAgICAgICAgICA8Y29sb3JQb3QgbGlzdGVuZXI9IiRvbmNle2NsYXNzcm9vdH0iIG15Y29sb3I9IiNmMTZkN2UiIG15Y29sb3JTdHJpbmc9IjB4RjE2RDdFIiAvPgorICAgICAgICA8L2NvbG9yUm93PgorICAgICAgICAgIAorICAgICAgICAgIAorICAgICAgICA8Y29sb3JSb3c+CisgICAgICAgICAgICA8Y29sb3JQb3QgbGlzdGVuZXI9IiRvbmNle2NsYXNzcm9vdH0iIG15Y29sb3I9IiM5YTg1NzUiIG15Y29sb3JTdHJpbmc9IjB4OUE4NTc1IiAvPgorICAgICAgICAgICAgPGNvbG9yUG90IGxpc3RlbmVyPSIkb25jZXtjbGFzc3Jvb3R9IiBteWNvbG9yPSIjNzI2MzU3IiBteWNvbG9yU3RyaW5nPSIweDcyNjM1NyIgLz4KKyAgICAgICAgICAgIDxjb2xvclBvdCBsaXN0ZW5lcj0iJG9uY2V7Y2xhc3Nyb290fSIgbXljb2xvcj0iIzUyNDg0MiIgbXljb2xvclN0cmluZz0iMHg1MjQ4NDIiIC8+CisgICAgICAgICAgICA8Y29sb3JQb3QgbGlzdGVuZXI9IiRvbmNle2NsYXNzcm9vdH0iIG15Y29sb3I9IiMzNjJmMmMiIG15Y29sb3JTdHJpbmc9IjB4MzYyRjJDIiAvPgorICAgICAgICAgICAgPGNvbG9yUG90IGxpc3RlbmVyPSIkb25jZXtjbGFzc3Jvb3R9IiBteWNvbG9yPSIjYzY5YzZkIiBteWNvbG9yU3RyaW5nPSIweEM2OUM2RCIgLz4KKyAgICAgICAgICAgIDxjb2xvclBvdCBsaXN0ZW5lcj0iJG9uY2V7Y2xhc3Nyb290fSIgbXljb2xvcj0iI2E3N2M1MCIgbXljb2xvclN0cmluZz0iMHhBNzdDNTAiIC8+CisgICAgICAgICAgICA8Y29sb3JQb3QgbGlzdGVuZXI9IiRvbmNle2NsYXNzcm9vdH0iIG15Y29sb3I9IiM4YzYyM2EiIG15Y29sb3JTdHJpbmc9IjB4OEM2MjNBIiAvPgorICAgICAgICAgICAgPGNvbG9yUG90IGxpc3RlbmVyPSIkb25jZXtjbGFzc3Jvb3R9IiBteWNvbG9yPSIjNzQ0YjI0IiBteWNvbG9yU3RyaW5nPSIweDc0NEIyNCIgLz4KKyAgICAgICAgICAgIDxjb2xvclBvdCBsaXN0ZW5lcj0iJG9uY2V7Y2xhc3Nyb290fSIgbXljb2xvcj0iIzYxMzgxMyIgbXljb2xvclN0cmluZz0iMHg2MTM4MTMiIC8+CisgICAgICAgIDwvY29sb3JSb3c+CisgICAgICAKKyAgICA8L3ZpZXc+CisgICAgCis8L2NsYXNzPgorCis8L2xpYnJhcnk+Cis8IS0tICogWF9MWl9DT1BZUklHSFRfQkVHSU4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIENvcHlyaWdodCAyMDA1LTIwMDcgTGFzemxvIFN5c3RlbXMsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAqCisqIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisqIFhfTFpfQ09QWVJJR0hUX0VORCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+Cis8IS0tIEBMWlhfVkVSU0lPTkAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9scHMvZmlsbENvbG9yQ2hvb3NlLmx6eCBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9scHMvZmlsbENvbG9yQ2hvb3NlLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMmUzMTZlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2xwcy9maWxsQ29sb3JDaG9vc2UubHp4CkBAIC0wLDAgKzEsMTkwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCisKKzxjbGFzcyBuYW1lPSJmaWxsQ29sb3JDaG9vc2UiIGV4dGVuZHM9ImJhc2VQcm9wZXJ0eVNlbGVjdG9yIgorICAgIGJnY29sb3I9IndoaXRlIiB3aWR0aD0iODAiIGhlaWdodD0iMjQiPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0iaXNvcGVuIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJjb2xvclBpY2tSZWYiIHZhbHVlPSJudWxsIi8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJzZWxlY3RlZENvbG9yIiB0eXBlPSJudW1iZXIiIHZhbHVlPSIweEZGRkYzMyIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9InNlbGVjdGVkQ29sb3JEaXMiIHR5cGU9Im51bWJlciIgdmFsdWU9IjEiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJzZWxlY3RlZENvbG9yVHJhbnNmb3JtZWRTdHJpbmciIHR5cGU9InN0cmluZyIgdmFsdWU9IjB4RkZGRjMzIi8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJjb2xvcklzRW5hYmxlZCIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+IAorICAgIDxhdHRyaWJ1dGUgbmFtZT0iaW5Jbml0Q29sb3JTZWxlY3Rpb24iIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgCWlmICh0aGlzLnNlbGVjdGVkQ29sb3JEaXM9PS0xKXsKKyAgICAJCURlYnVnLndyaXRlKCJGaWxsQ29sb3IgRGlzYWJsZWQiKTsKKyAgICAJCXRoaXMuX2N1cnJlbnRjb2xvci5zZXRBdHRyaWJ1dGUoJ2NsaWNrYWJsZScsZmFsc2UpOworICAgIAkJdGhpcy5fY3VycmVudGNvbG9yLnNldEF0dHJpYnV0ZSgnb3BhY2l0eScsMC4zKTsKKyAgICAJCXRoaXMucmd0LnNldEF0dHJpYnV0ZSgnb3BhY2l0eScsMC4zKTsKKyAgICAJCXRoaXMucmd0LnNldEF0dHJpYnV0ZSgnZW5hYmxlZCcsZmFsc2UpOworICAgIAkJdGhpcy5jb2xvcklzRW5hYmxlZCA9IGZhbHNlOworICAgIAl9CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0ic2V0U2VsZWN0ZWRDb2xvciIgYXJncz0iYyI+CisgICAgCXRoaXMuc2V0RW5hYmxlZCh0cnVlKTsKKwkJdGhpcy5zZXRBdHRyaWJ1dGUoJ3NlbGVjdGVkQ29sb3InLGMpOworCQl0aGlzLnNldFRyYW5zZm9ybWVkU3RyaW5nQ29sb3IoKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InNldFNlbGVjdGVkQ29sb3JXaXRoRGlzIiBhcmdzPSJjLGQiPgorICAgIAl0aGlzLnNldEVuYWJsZWQodHJ1ZSk7CisJCXRoaXMuc2V0QXR0cmlidXRlKCdzZWxlY3RlZENvbG9yJyxjKTsKKwkJdGhpcy5zZXRUcmFuc2Zvcm1lZFN0cmluZ0NvbG9yKCk7CisJCXRoaXMuc2VsZWN0ZWRDb2xvckRpcyA9IGQ7CisJCWlmICh0aGlzLnNlbGVjdGVkQ29sb3JEaXM9PS0xKXsKKyAgICAJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJGaWxsQ29sb3IgRGlzYWJsZWQiKTsKKyAgICAJCXRoaXMuX2N1cnJlbnRjb2xvci5zZXRBdHRyaWJ1dGUoJ2NsaWNrYWJsZScsZmFsc2UpOworICAgIAkJdGhpcy5fY3VycmVudGNvbG9yLnNldEF0dHJpYnV0ZSgnb3BhY2l0eScsMC4zKTsKKyAgICAJCXRoaXMucmd0LnNldEF0dHJpYnV0ZSgnb3BhY2l0eScsMC4zKTsKKyAgICAJCXRoaXMucmd0LnNldEF0dHJpYnV0ZSgnZW5hYmxlZCcsZmFsc2UpOworICAgIAkJdGhpcy5jb2xvcklzRW5hYmxlZCA9IGZhbHNlOworICAgIAkJdGhpcy5yZ3RfYi5fbG9jay5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisJICAgIAl0aGlzLnJndF9iLl9sb2NrX29wZW4uc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgCX0gZWxzZSB7CisJCQl0aGlzLl9jdXJyZW50Y29sb3Iuc2V0QXR0cmlidXRlKCdjbGlja2FibGUnLHRydWUpOworICAgIAkJdGhpcy5fY3VycmVudGNvbG9yLnNldEF0dHJpYnV0ZSgnb3BhY2l0eScsMSk7CisgICAgCQl0aGlzLnJndC5zZXRBdHRyaWJ1dGUoJ29wYWNpdHknLDEpOworICAgIAkJdGhpcy5yZ3Quc2V0QXR0cmlidXRlKCdlbmFibGVkJyx0cnVlKTsKKyAgICAJCXRoaXMub25zZWxlY3RlZENvbG9yLnNlbmRFdmVudCh0aGlzLnNlbGVjdGVkQ29sb3IpOworICAgIAkJdGhpcy5jb2xvcklzRW5hYmxlZCA9IHRydWU7CisgICAgCQl0aGlzLnJndF9iLl9sb2NrLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworCSAgICAJdGhpcy5yZ3RfYi5fbG9ja19vcGVuLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKyAgICAJfQorICAgIDwvbWV0aG9kPgorICAgICAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4KKyAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRDb2xvcjsKKyAgICA8L21ldGhvZD4gICAgCisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJ0b2dnbGUiPgorICAgICAgICB2YXIgdCA9IF9yb290LmNyZWF0ZUVtcHR5TW92aWVDbGlwKCdoYW5zJywxMCk7CisgICAgICAgIHZhciBteUNvbG9yID0gbmV3IENvbG9yKHQpOworICAgICAgICBteUNvbG9yLnNldFJHQihzZWxlY3RlZENvbG9yKTsKKyAgICAgICAgaWYgKHRoaXMuYm94UG9zaXRpb249PSJ1cCIpeworCSAgICAgICAgdGhpcy5jb2xvclBpY2tSZWYgPSBuZXcgbHouY29sb3JwaWNrZXIoY2FudmFzLHtidG5SZWY6dGhpcywKKwkgICAgICAgIAl4Oih0aGlzLmdldEF0dHJpYnV0ZVJlbGF0aXZlKCd4JyxjYW52YXMpLSgyNTAtdGhpcy53aWR0aCkpLAorCSAgICAgICAgCXk6KHRoaXMuZ2V0QXR0cmlidXRlUmVsYXRpdmUoJ3knLGNhbnZhcyktMTU0K3RoaXMuaGVpZ2h0KX0pOworICAgICAgICB9IGVsc2UgeworCSAgICAgICAgdGhpcy5jb2xvclBpY2tSZWYgPSBuZXcgbHouY29sb3JwaWNrZXIoY2FudmFzLHtidG5SZWY6dGhpcywKKwkgICAgICAgIAl4Oih0aGlzLmdldEF0dHJpYnV0ZVJlbGF0aXZlKCd4JyxjYW52YXMpLSgyNTAtdGhpcy53aWR0aCkpLAorCSAgICAgICAgCXk6KHRoaXMuZ2V0QXR0cmlidXRlUmVsYXRpdmUoJ3knLGNhbnZhcykpfSk7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5jb2xvclBpY2tSZWYuZG9EZWZhdWx0Q29sb3IobXlDb2xvcik7CisgICAgICAgIGx6Lk1vZGVNYW5hZ2VyLm1ha2VNb2RhbCggdGhpcy5jb2xvclBpY2tSZWYgKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InNldFRyYW5zZm9ybWVkU3RyaW5nQ29sb3IiPgorICAgICAgICAvLy8vRGVidWcud3JpdGUoInNldFRyYW5zZm9ybWVkU3RyaW5nQ29sb3I6ICIsdGhpcyx0aGlzLnNlbGVjdGVkQ29sb3IpOworICAgICAgICB2YXIgdCA9IF9yb290LmNyZWF0ZUVtcHR5TW92aWVDbGlwKCdoYW5zMicsMjApOworICAgICAgICB2YXIgbXlDb2xvciA9IG5ldyBDb2xvcih0KTsKKyAgICAgICAgbXlDb2xvci5zZXRSR0IodGhpcy5zZWxlY3RlZENvbG9yKTsKKyAgICAgICAgLy92YXIgYSA9IG15Q29sb3IuZ2V0VHJhbnNmb3JtKCk7CisgICAgICAgIC8vLy9EZWJ1Zy53cml0ZSgiYTogIixhKTsKKyAgICAgICAgdmFyIGNvbCA9IHRoaXMubnVtYmVyVG9SR0IobXlDb2xvcik7CisgICAgICAgIC8vLy9EZWJ1Zy53cml0ZSgiY29sOiAiLGNvbCk7CisgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdzZWxlY3RlZENvbG9yVHJhbnNmb3JtZWRTdHJpbmcnLGNvbCk7CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJudW1iZXJUb1JHQiIgYXJncz0idGhpc0MiPgorICAgICAgICA8IVtDREFUQVsgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciBjID0gdGhpc0MuZ2V0UkdCKCk7CisgICAgICAgICAgICB2YXIgciA9IChjID4+IDE2KSAmIDB4ZmY7CisgICAgICAgICAgICB2YXIgZyA9IChjID4+IDgpICYgIDB4ZmY7CisgICAgICAgICAgICB2YXIgYiA9IGMgJiAweGZmOworICAgICAgICAgICAgLy8vL0RlYnVnLndyaXRlKCJyIGcgYjogIixyLGcsYik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIEhFWF9SID0gci50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTsKKyAgICAgICAgICAgIEhFWF9HID0gZy50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTsKKyAgICAgICAgICAgIEhFWF9CID0gYi50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKEhFWF9SLmxlbmd0aCA8IDIpIHsKKyAgICAgICAgICAgICAgICBIRVhfUiA9ICIwIitIRVhfUjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChIRVhfRy5sZW5ndGggPCAyKSB7CisgICAgICAgICAgICAgICAgSEVYX0cgPSAiMCIrSEVYX0c7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoSEVYX0IubGVuZ3RoIDwgMikgeworICAgICAgICAgICAgICAgIEhFWF9CID0gIjAiK0hFWF9COworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFyIGhleCA9ICIweCIrSEVYX1IgKyBIRVhfRyArIEhFWF9COworCisgICAgICAgICAgICByZXR1cm4gaGV4OworICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4gICAgCisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJjbG9zZWRDb2xvclBpY2tlciI+CisgICAgICAgIGx6Lk1vZGVNYW5hZ2VyLnJlbGVhc2UoIHRoaXMuY29sb3JQaWNrUmVmICk7CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPHZpZXcgbmFtZT0iX2N1cnJlbnRjb2xvciIgeD0iMSIgeT0iMSIgb25jbGljaz0icGFyZW50LnRvZ2dsZSgpIiAKKyAgICAgICAgb25tb3VzZW92ZXI9IiIgb25tb3VzZW91dD0iIiB3aWR0aD0iMzAiIAorICAgICAgICBoZWlnaHQ9IjIyIiBiZ2NvbG9yPSIkeyBwYXJlbnQuc2VsZWN0ZWRDb2xvciB9IiA+CisgICAgICAgIDxsYWJlbFRvb2x0aXAgdGV4dD0iJHsgcGFyZW50LnBhcmVudC5zZWxlY3RlZENvbG9yVHJhbnNmb3JtZWRTdHJpbmcgfSIgLz4KKyAgICA8L3ZpZXc+CisgICAgCisgICAgPGJ1dHRvbiBuYW1lPSJyZ3QiIHg9IjMyIiB5PSIxIiBvbmNsaWNrPSJwYXJlbnQudG9nZ2xlKCkiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyMyIgPgorICAgIAk8aW1hZ2UgeD0iNCIgeT0iMyIgc3JjPSIkb25jZXsgY2FudmFzLmdldFRoZW1lSW1hZ2UoJ2NvbG9yZmlsbGNob29zZV9yc2MnKSB9IgorICAgIAkJCXdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3RyZXRjaGVzPSJib3RoIiAvPgorICAgICAgICA8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IjQyNyIgLz4KKyAgICA8L2J1dHRvbj4KKyAgICAgICAgCisgICAgPGJ1dHRvbiBuYW1lPSJyZ3RfYiIgeD0iNTYiIHk9IjEiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyMyIgPgorICAgIAk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAJCWlmIChwYXJlbnQuY29sb3JJc0VuYWJsZWQpeworCSAgICAJCXBhcmVudC5fY3VycmVudGNvbG9yLnNldEF0dHJpYnV0ZSgnY2xpY2thYmxlJyxmYWxzZSk7CisJICAgIAkJcGFyZW50Ll9jdXJyZW50Y29sb3Iuc2V0QXR0cmlidXRlKCdvcGFjaXR5JywwLjMpOworCSAgICAJCXBhcmVudC5yZ3Quc2V0QXR0cmlidXRlKCdvcGFjaXR5JywwLjMpOworCSAgICAJCXBhcmVudC5yZ3Quc2V0QXR0cmlidXRlKCdlbmFibGVkJyxmYWxzZSk7CisJICAgIAkJcGFyZW50LnNlbGVjdGVkQ29sb3JEaXMgPSAtMTsKKwkgICAgCQlwYXJlbnQub25zZWxlY3RlZENvbG9yLnNlbmRFdmVudCgtMSk7CisJICAgIAkJcGFyZW50LmNvbG9ySXNFbmFibGVkID0gZmFsc2U7CisJICAgIAkJdGhpcy5fbG9jay5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKwkgICAgCQl0aGlzLl9sb2NrX29wZW4uc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgIAkJfSBlbHNlIHsKKwkgICAgCQlwYXJlbnQuX2N1cnJlbnRjb2xvci5zZXRBdHRyaWJ1dGUoJ2NsaWNrYWJsZScsdHJ1ZSk7CisJICAgIAkJcGFyZW50Ll9jdXJyZW50Y29sb3Iuc2V0QXR0cmlidXRlKCdvcGFjaXR5JywxKTsKKwkgICAgCQlwYXJlbnQucmd0LnNldEF0dHJpYnV0ZSgnb3BhY2l0eScsMSk7CisJICAgIAkJcGFyZW50LnJndC5zZXRBdHRyaWJ1dGUoJ2VuYWJsZWQnLHRydWUpOworCSAgICAJCXBhcmVudC5zZWxlY3RlZENvbG9yRGlzID0gMTsKKwkgICAgCQlwYXJlbnQub25zZWxlY3RlZENvbG9yLnNlbmRFdmVudChwYXJlbnQuc2VsZWN0ZWRDb2xvcik7CisJICAgIAkJcGFyZW50LmNvbG9ySXNFbmFibGVkID0gdHJ1ZTsKKwkgICAgCQl0aGlzLl9sb2NrLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKwkgICAgCQl0aGlzLl9sb2NrX29wZW4uc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgCQl9CisgICAgCTwvaGFuZGxlcj4KKyAgICAJPGltYWdlIHg9IjQiIHk9IjMiIG5hbWU9Il9sb2NrIiBzcmM9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVJbWFnZSgnY29sb3JfbG9ja19yc2MnKSB9IgorICAgIAkJCXdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3RyZXRjaGVzPSJib3RoIiAvPgorIAkgICAgPGltYWdlIHg9IjQiIHk9IjMiIG5hbWU9Il9sb2NrX29wZW4iIHNyYz0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUltYWdlKCdjb2xvcl9sb2NrX29wZW5fcnNjJykgfSIKKyAgICAJCQl3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHN0cmV0Y2hlcz0iYm90aCIgdmlzaWJpbGl0eT0iaGlkZGVuIiAvPgorICAgICAgICA8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IjQyOCIgLz4KKyAgICA8L2J1dHRvbj4KKyAgICAKKzwvY2xhc3M+ICAKKworICAgIAorPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2xwcy9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9scHMvbGlicmFyeS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTgyNmIwZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9scHMvbGlicmFyeS5sengKQEAgLTAsMCArMSwzNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKyAgICAKKwk8IS0tIEFQTCBBdXRob3Igc2ViYXdhZ25lciAtLT4KKyAgICA8cmVzb3VyY2UgbmFtZT0iYXJyb3dfZG93bl9zbGlkZXJfcnNjIiBzcmM9InJlc291cmNlcy9hcnJvd19kb3duX3NsaWRlci5wbmciIC8+IAorCisJPGluY2x1ZGUgaHJlZj0idnNsaWRlci5sengiIC8+IAorCTxpbmNsdWRlIGhyZWY9ImJhc2VQcm9wZXJ0eVNlbGVjdG9yLmx6eCIgLz4KKwk8aW5jbHVkZSBocmVmPSJjb2xvcnBpY2tlci5sengiIC8+CisgICAgPGluY2x1ZGUgaHJlZj0ibGluZUNvbG9yQ2hvb3NlLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJsaW5lT25seUNvbG9yQ2hvb3NlLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJsaW5lQ29sb3JDaG9vc2UubHp4IiAvPgorICAgIDxpbmNsdWRlIGhyZWY9ImZpbGxDb2xvckNob29zZS5sengiIC8+CisgICAgPGluY2x1ZGUgaHJlZj0iY2hhbmdlV2lkdGhTbGlkZXIubHp4IiAvPgorICAgIDxpbmNsdWRlIGhyZWY9ImNoYW5nZVdpZHRoTGV0dGVyU2xpZGVyLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJyZWdleHB0aXAubHp4IiAvPgorICAgIAorPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2xwcy9saW5lQ29sb3JDaG9vc2UubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2xwcy9saW5lQ29sb3JDaG9vc2UubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4YTg0YTQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvbHBzL2xpbmVDb2xvckNob29zZS5sengKQEAgLTAsMCArMSwxOTMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzxjbGFzcyBuYW1lPSJsaW5lQ29sb3JDaG9vc2UiIGV4dGVuZHM9ImJhc2VQcm9wZXJ0eVNlbGVjdG9yIgorICAgIGJnY29sb3I9IndoaXRlIiB3aWR0aD0iODAiIGhlaWdodD0iMjQiPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0iaXNvcGVuIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJjb2xvclBpY2tSZWYiIHZhbHVlPSJudWxsIi8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJzZWxlY3RlZENvbG9yIiB0eXBlPSJudW1iZXIiIHZhbHVlPSIweEZGNjYwMCIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9InNlbGVjdGVkQ29sb3JEaXMiIHR5cGU9Im51bWJlciIgdmFsdWU9IjEiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJzZWxlY3RlZENvbG9yVHJhbnNmb3JtZWRTdHJpbmciIHR5cGU9InN0cmluZyIgdmFsdWU9IjB4RkY2NjAwIi8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJjb2xvcklzRW5hYmxlZCIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpbkluaXRDb2xvclNlbGVjdGlvbiIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAJaWYgKHRoaXMuc2VsZWN0ZWRDb2xvckRpcz09LTEpeworICAgIAkJdGhpcy5fY3VycmVudGNvbG9yLnNldEF0dHJpYnV0ZSgnY2xpY2thYmxlJyxmYWxzZSk7CisgICAgCQl0aGlzLl9jdXJyZW50Y29sb3Iuc2V0QXR0cmlidXRlKCdvcGFjaXR5JywwLjMpOworICAgIAkJdGhpcy5yZ3Quc2V0QXR0cmlidXRlKCdvcGFjaXR5JywwLjMpOworICAgIAkJdGhpcy5yZ3Quc2V0QXR0cmlidXRlKCdlbmFibGVkJyxmYWxzZSk7CisgICAgCQl0aGlzLmNvbG9ySXNFbmFibGVkID0gZmFsc2U7CisgICAgCX0KKyAgICA8L2hhbmRsZXI+CisgICAgICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgCXRoaXMuc2V0VHJhbnNmb3JtZWRTdHJpbmdDb2xvcigpOworICAgIDwvaGFuZGxlcj4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InNldFNlbGVjdGVkQ29sb3IiIGFyZ3M9ImMiPgorICAgIAl0aGlzLnNldEVuYWJsZWQodHJ1ZSk7CisJCXRoaXMuc2V0QXR0cmlidXRlKCdzZWxlY3RlZENvbG9yJyxjKTsKKwkJdGhpcy5zZXRUcmFuc2Zvcm1lZFN0cmluZ0NvbG9yKCk7CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJzZXRTZWxlY3RlZENvbG9yV2l0aERpcyIgYXJncz0iYyxkIj4KKyAgICAJdGhpcy5zZXRFbmFibGVkKHRydWUpOworCQl0aGlzLnNldEF0dHJpYnV0ZSgnc2VsZWN0ZWRDb2xvcicsYyk7CisJCXRoaXMuc2V0VHJhbnNmb3JtZWRTdHJpbmdDb2xvcigpOworCQl0aGlzLnNlbGVjdGVkQ29sb3JEaXMgPSBkOworCQlpZiAodGhpcy5zZWxlY3RlZENvbG9yRGlzPT0tMSl7CisgICAgCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiRmlsbENvbG9yIERpc2FibGVkIik7CisgICAgCQl0aGlzLl9jdXJyZW50Y29sb3Iuc2V0QXR0cmlidXRlKCdjbGlja2FibGUnLGZhbHNlKTsKKyAgICAJCXRoaXMuX2N1cnJlbnRjb2xvci5zZXRBdHRyaWJ1dGUoJ29wYWNpdHknLDAuMyk7CisgICAgCQl0aGlzLnJndC5zZXRBdHRyaWJ1dGUoJ29wYWNpdHknLDAuMyk7CisgICAgCQl0aGlzLnJndC5zZXRBdHRyaWJ1dGUoJ2VuYWJsZWQnLGZhbHNlKTsKKyAgICAJCXRoaXMuY29sb3JJc0VuYWJsZWQgPSBmYWxzZTsKKyAgICAJCXRoaXMucmd0X2IuX2xvY2suc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworCSAgICAJdGhpcy5yZ3RfYi5fbG9ja19vcGVuLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgIAl9IGVsc2UgeworCQkJdGhpcy5fY3VycmVudGNvbG9yLnNldEF0dHJpYnV0ZSgnY2xpY2thYmxlJyx0cnVlKTsKKyAgICAJCXRoaXMuX2N1cnJlbnRjb2xvci5zZXRBdHRyaWJ1dGUoJ29wYWNpdHknLDEpOworICAgIAkJdGhpcy5yZ3Quc2V0QXR0cmlidXRlKCdvcGFjaXR5JywxKTsKKyAgICAJCXRoaXMucmd0LnNldEF0dHJpYnV0ZSgnZW5hYmxlZCcsdHJ1ZSk7CisgICAgCQl0aGlzLm9uc2VsZWN0ZWRDb2xvci5zZW5kRXZlbnQodGhpcy5zZWxlY3RlZENvbG9yKTsKKyAgICAJCXRoaXMuY29sb3JJc0VuYWJsZWQgPSB0cnVlOworICAgIAkJdGhpcy5yZ3RfYi5fbG9jay5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKwkgICAgCXRoaXMucmd0X2IuX2xvY2tfb3Blbi5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgCX0KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4KKyAgICAgICAgcmV0dXJuIHRoaXMuc2VsZWN0ZWRDb2xvcjsKKyAgICA8L21ldGhvZD4gICAgCisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJ0b2dnbGUiPgorICAgICAgICB2YXIgdCA9IF9yb290LmNyZWF0ZUVtcHR5TW92aWVDbGlwKCdoYW5zJywxMCk7CisgICAgICAgIHZhciBteUNvbG9yID0gbmV3IENvbG9yKHQpOworICAgICAgICBteUNvbG9yLnNldFJHQihzZWxlY3RlZENvbG9yKTsKKyAgICAgICAgaWYgKHRoaXMuYm94UG9zaXRpb249PSJ1cCIpeworCSAgICAgICAgdGhpcy5jb2xvclBpY2tSZWYgPSBuZXcgbHouY29sb3JwaWNrZXIoY2FudmFzLHtidG5SZWY6dGhpcywKKwkgICAgICAgIAl4Oih0aGlzLmdldEF0dHJpYnV0ZVJlbGF0aXZlKCd4JyxjYW52YXMpLSgyNTAtdGhpcy53aWR0aCkpLAorCSAgICAgICAgCXk6KHRoaXMuZ2V0QXR0cmlidXRlUmVsYXRpdmUoJ3knLGNhbnZhcyktMTU0K3RoaXMuaGVpZ2h0KX0pOworICAgICAgICB9IGVsc2UgeworCSAgICAgICAgdGhpcy5jb2xvclBpY2tSZWYgPSBuZXcgbHouY29sb3JwaWNrZXIoY2FudmFzLHtidG5SZWY6dGhpcywKKwkgICAgICAgIAl4Oih0aGlzLmdldEF0dHJpYnV0ZVJlbGF0aXZlKCd4JyxjYW52YXMpLSgyNTAtdGhpcy53aWR0aCkpLAorCSAgICAgICAgCXk6KHRoaXMuZ2V0QXR0cmlidXRlUmVsYXRpdmUoJ3knLGNhbnZhcykpfSk7CisgICAgICAgIH0KKworICAgICAgICB0aGlzLmNvbG9yUGlja1JlZi5kb0RlZmF1bHRDb2xvcihteUNvbG9yKTsKKyAgICAgICAgbHouTW9kZU1hbmFnZXIubWFrZU1vZGFsKCB0aGlzLmNvbG9yUGlja1JlZiApOworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0ic2V0VHJhbnNmb3JtZWRTdHJpbmdDb2xvciI+CisgICAgICAgIC8vLy9EZWJ1Zy53cml0ZSgic2V0VHJhbnNmb3JtZWRTdHJpbmdDb2xvcjogIix0aGlzLHRoaXMuc2VsZWN0ZWRDb2xvcik7CisgICAgICAgIHZhciB0ID0gX3Jvb3QuY3JlYXRlRW1wdHlNb3ZpZUNsaXAoJ2hhbnMyJywyMCk7CisgICAgICAgIHZhciBteUNvbG9yID0gbmV3IENvbG9yKHQpOworICAgICAgICBteUNvbG9yLnNldFJHQih0aGlzLnNlbGVjdGVkQ29sb3IpOworICAgICAgICAvL3ZhciBhID0gbXlDb2xvci5nZXRUcmFuc2Zvcm0oKTsKKyAgICAgICAgLy8vL0RlYnVnLndyaXRlKCJhOiAiLGEpOworICAgICAgICB2YXIgY29sID0gdGhpcy5udW1iZXJUb1JHQihteUNvbG9yKTsKKyAgICAgICAgLy8vL0RlYnVnLndyaXRlKCJjb2w6ICIsY29sKTsKKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3NlbGVjdGVkQ29sb3JUcmFuc2Zvcm1lZFN0cmluZycsY29sKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9Im51bWJlclRvUkdCIiBhcmdzPSJ0aGlzQyI+CisgICAgICAgIDwhW0NEQVRBWyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIGMgPSB0aGlzQy5nZXRSR0IoKTsKKyAgICAgICAgICAgIHZhciByID0gKGMgPj4gMTYpICYgMHhmZjsKKyAgICAgICAgICAgIHZhciBnID0gKGMgPj4gOCkgJiAgMHhmZjsKKyAgICAgICAgICAgIHZhciBiID0gYyAmIDB4ZmY7CisgICAgICAgICAgICAvLy8vRGVidWcud3JpdGUoInIgZyBiOiAiLHIsZyxiKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgSEVYX1IgPSByLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpOworICAgICAgICAgICAgSEVYX0cgPSBnLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpOworICAgICAgICAgICAgSEVYX0IgPSBiLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoSEVYX1IubGVuZ3RoIDwgMikgeworICAgICAgICAgICAgICAgIEhFWF9SID0gIjAiK0hFWF9SOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKEhFWF9HLmxlbmd0aCA8IDIpIHsKKyAgICAgICAgICAgICAgICBIRVhfRyA9ICIwIitIRVhfRzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChIRVhfQi5sZW5ndGggPCAyKSB7CisgICAgICAgICAgICAgICAgSEVYX0IgPSAiMCIrSEVYX0I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2YXIgaGV4ID0gIjB4IitIRVhfUiArIEhFWF9HICsgSEVYX0I7CisKKyAgICAgICAgICAgIHJldHVybiBoZXg7CisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPiAgICAKKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImNsb3NlZENvbG9yUGlja2VyIj4KKyAgICAgICAgbHouTW9kZU1hbmFnZXIucmVsZWFzZSggdGhpcy5jb2xvclBpY2tSZWYgKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8dmlldyBuYW1lPSJfY3VycmVudGNvbG9yIiB4PSIxIiB5PSIxIiBvbmNsaWNrPSJwYXJlbnQudG9nZ2xlKCkiIAorICAgICAgICBvbm1vdXNlb3Zlcj0iIiBvbm1vdXNlb3V0PSIiIHdpZHRoPSIzMCIgCisgICAgICAgIGhlaWdodD0iMjIiIGJnY29sb3I9IiR7IHBhcmVudC5zZWxlY3RlZENvbG9yIH0iID4KKyAgICAgICAgPGxhYmVsVG9vbHRpcCB0ZXh0PSIkeyBwYXJlbnQucGFyZW50LnNlbGVjdGVkQ29sb3JUcmFuc2Zvcm1lZFN0cmluZyB9IiAvPgorICAgIDwvdmlldz4KKyAgICAKKyAgICA8YnV0dG9uIG5hbWU9InJndCIgeD0iMzIiIHk9IjEiIG9uY2xpY2s9InBhcmVudC50b2dnbGUoKSIgd2lkdGg9IjI0IiBoZWlnaHQ9IjIzIiA+CisgICAgCTxpbWFnZSB4PSI0IiB5PSIzIiBzcmM9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVJbWFnZSgnY29sb3JsaW5lY2hvb3NlX3JzYycpIH0iCisgICAgCQkJd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBzdHJldGNoZXM9ImJvdGgiIC8+CisgICAgICAgIDxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iNDI0IiAvPgorICAgIDwvYnV0dG9uPgorICAgICAgICAKKyAgICA8YnV0dG9uIG5hbWU9InJndF9iIiB4PSI1NiIgeT0iMSIgd2lkdGg9IjI0IiBoZWlnaHQ9IjIzIiA+CisgICAgCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgIAkJaWYgKHBhcmVudC5jb2xvcklzRW5hYmxlZCl7CisJICAgIAkJcGFyZW50Ll9jdXJyZW50Y29sb3Iuc2V0QXR0cmlidXRlKCdjbGlja2FibGUnLGZhbHNlKTsKKwkgICAgCQlwYXJlbnQuX2N1cnJlbnRjb2xvci5zZXRBdHRyaWJ1dGUoJ29wYWNpdHknLDAuMyk7CisJICAgIAkJcGFyZW50LnJndC5zZXRBdHRyaWJ1dGUoJ29wYWNpdHknLDAuMyk7CisJICAgIAkJcGFyZW50LnJndC5zZXRBdHRyaWJ1dGUoJ2VuYWJsZWQnLGZhbHNlKTsKKwkgICAgCQlwYXJlbnQuc2VsZWN0ZWRDb2xvckRpcyA9IC0xOworCSAgICAJCXBhcmVudC5vbnNlbGVjdGVkQ29sb3Iuc2VuZEV2ZW50KC0xKTsKKwkgICAgCQlwYXJlbnQuY29sb3JJc0VuYWJsZWQgPSBmYWxzZTsKKwkgICAgCQl0aGlzLl9sb2NrLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworCSAgICAJCXRoaXMuX2xvY2tfb3Blbi5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgCQl9IGVsc2UgeworCSAgICAJCXBhcmVudC5fY3VycmVudGNvbG9yLnNldEF0dHJpYnV0ZSgnY2xpY2thYmxlJyx0cnVlKTsKKwkgICAgCQlwYXJlbnQuX2N1cnJlbnRjb2xvci5zZXRBdHRyaWJ1dGUoJ29wYWNpdHknLDEpOworCSAgICAJCXBhcmVudC5yZ3Quc2V0QXR0cmlidXRlKCdvcGFjaXR5JywxKTsKKwkgICAgCQlwYXJlbnQucmd0LnNldEF0dHJpYnV0ZSgnZW5hYmxlZCcsdHJ1ZSk7CisJICAgIAkJcGFyZW50LnNlbGVjdGVkQ29sb3JEaXMgPSAxOworCSAgICAJCXBhcmVudC5vbnNlbGVjdGVkQ29sb3Iuc2VuZEV2ZW50KHBhcmVudC5zZWxlY3RlZENvbG9yKTsKKwkgICAgCQlwYXJlbnQuY29sb3JJc0VuYWJsZWQgPSB0cnVlOworCSAgICAJCXRoaXMuX2xvY2suc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworCSAgICAJCXRoaXMuX2xvY2tfb3Blbi5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKyAgICAJCX0KKyAgICAJPC9oYW5kbGVyPgorICAgIAk8aW1hZ2UgeD0iNCIgeT0iMyIgbmFtZT0iX2xvY2siIHNyYz0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUltYWdlKCdjb2xvcl9sb2NrX3JzYycpIH0iCisgICAgCQkJd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBzdHJldGNoZXM9ImJvdGgiIC8+CisgCSAgICA8aW1hZ2UgeD0iNCIgeT0iMyIgbmFtZT0iX2xvY2tfb3BlbiIgc3JjPSIkb25jZXsgY2FudmFzLmdldFRoZW1lSW1hZ2UoJ2NvbG9yX2xvY2tfb3Blbl9yc2MnKSB9IgorICAgIAkJCXdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3RyZXRjaGVzPSJib3RoIiB2aXNpYmlsaXR5PSJoaWRkZW4iIC8+CisgICAgICAgIDxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iNDI2IiAvPgorICAgIDwvYnV0dG9uPgorICAgIAorPC9jbGFzcz4gIAorCisgICAgCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvbHBzL2xpbmVPbmx5Q29sb3JDaG9vc2UubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2xwcy9saW5lT25seUNvbG9yQ2hvb3NlLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NWM3NjQwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2xwcy9saW5lT25seUNvbG9yQ2hvb3NlLmx6eApAQCAtMCwwICsxLDEwOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9ImxpbmVPbmx5Q29sb3JDaG9vc2UiIGV4dGVuZHM9ImJhc2VQcm9wZXJ0eVNlbGVjdG9yIgorICAgIGJnY29sb3I9IndoaXRlIiB3aWR0aD0iNTYiIGhlaWdodD0iMjQiPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0iaXNvcGVuIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJjb2xvclBpY2tSZWYiIHZhbHVlPSJudWxsIi8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJzZWxlY3RlZENvbG9yIiB0eXBlPSJudW1iZXIiIHZhbHVlPSIweEZGNjYwMCIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9InNlbGVjdGVkQ29sb3JUcmFuc2Zvcm1lZFN0cmluZyIgdHlwZT0ic3RyaW5nIiB2YWx1ZT0iMHhGRjY2MDAiLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImNvbG9ySXNFbmFibGVkIiB2YWx1ZT0idHJ1ZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgIAl0aGlzLnNldFRyYW5zZm9ybWVkU3RyaW5nQ29sb3IoKTsKKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+CisgICAgICAgIHJldHVybiB0aGlzLnNlbGVjdGVkQ29sb3I7CisgICAgPC9tZXRob2Q+ICAgIAorICAgIAorICAgIDxtZXRob2QgbmFtZT0idG9nZ2xlIj4KKyAgICAgICAgdmFyIHQgPSBfcm9vdC5jcmVhdGVFbXB0eU1vdmllQ2xpcCgnaGFucycsMTApOworICAgICAgICB2YXIgbXlDb2xvciA9IG5ldyBDb2xvcih0KTsKKyAgICAgICAgbXlDb2xvci5zZXRSR0Ioc2VsZWN0ZWRDb2xvcik7CisgICAgICAgIHRoaXMuY29sb3JQaWNrUmVmID0gbmV3IGx6LmNvbG9ycGlja2VyKGNhbnZhcyx7YnRuUmVmOnRoaXMseDoodGhpcy5nZXRBdHRyaWJ1dGVSZWxhdGl2ZSgneCcsY2FudmFzKS0oMjUwLXRoaXMud2lkdGgpKSx5Oih0aGlzLmdldEF0dHJpYnV0ZVJlbGF0aXZlKCd5JyxjYW52YXMpKX0pOworICAgICAgICB0aGlzLmNvbG9yUGlja1JlZi5kb0RlZmF1bHRDb2xvcihteUNvbG9yKTsKKyAgICAgICAgbHouTW9kZU1hbmFnZXIubWFrZU1vZGFsKCB0aGlzLmNvbG9yUGlja1JlZiApOworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0ic2V0VHJhbnNmb3JtZWRTdHJpbmdDb2xvciI+CisgICAgICAgIC8vLy9EZWJ1Zy53cml0ZSgic2V0VHJhbnNmb3JtZWRTdHJpbmdDb2xvcjogIix0aGlzLHRoaXMuc2VsZWN0ZWRDb2xvcik7CisgICAgICAgIHZhciB0ID0gX3Jvb3QuY3JlYXRlRW1wdHlNb3ZpZUNsaXAoJ2hhbnMyJywyMCk7CisgICAgICAgIHZhciBteUNvbG9yID0gbmV3IENvbG9yKHQpOworICAgICAgICBteUNvbG9yLnNldFJHQih0aGlzLnNlbGVjdGVkQ29sb3IpOworICAgICAgICAvL3ZhciBhID0gbXlDb2xvci5nZXRUcmFuc2Zvcm0oKTsKKyAgICAgICAgLy8vL0RlYnVnLndyaXRlKCJhOiAiLGEpOworICAgICAgICB2YXIgY29sID0gdGhpcy5udW1iZXJUb1JHQihteUNvbG9yKTsKKyAgICAgICAgLy8vL0RlYnVnLndyaXRlKCJjb2w6ICIsY29sKTsKKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3NlbGVjdGVkQ29sb3JUcmFuc2Zvcm1lZFN0cmluZycsY29sKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9Im51bWJlclRvUkdCIiBhcmdzPSJ0aGlzQyI+CisgICAgICAgIDwhW0NEQVRBWyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIGMgPSB0aGlzQy5nZXRSR0IoKTsKKyAgICAgICAgICAgIHZhciByID0gKGMgPj4gMTYpICYgMHhmZjsKKyAgICAgICAgICAgIHZhciBnID0gKGMgPj4gOCkgJiAgMHhmZjsKKyAgICAgICAgICAgIHZhciBiID0gYyAmIDB4ZmY7CisgICAgICAgICAgICAvLy8vRGVidWcud3JpdGUoInIgZyBiOiAiLHIsZyxiKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgSEVYX1IgPSByLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpOworICAgICAgICAgICAgSEVYX0cgPSBnLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpOworICAgICAgICAgICAgSEVYX0IgPSBiLnRvU3RyaW5nKDE2KS50b1VwcGVyQ2FzZSgpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoSEVYX1IubGVuZ3RoIDwgMikgeworICAgICAgICAgICAgICAgIEhFWF9SID0gIjAiK0hFWF9SOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKEhFWF9HLmxlbmd0aCA8IDIpIHsKKyAgICAgICAgICAgICAgICBIRVhfRyA9ICIwIitIRVhfRzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChIRVhfQi5sZW5ndGggPCAyKSB7CisgICAgICAgICAgICAgICAgSEVYX0IgPSAiMCIrSEVYX0I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2YXIgaGV4ID0gIjB4IitIRVhfUiArIEhFWF9HICsgSEVYX0I7CisKKyAgICAgICAgICAgIHJldHVybiBoZXg7CisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPiAgICAKKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImNsb3NlZENvbG9yUGlja2VyIj4KKyAgICAgICAgbHouTW9kZU1hbmFnZXIucmVsZWFzZSggdGhpcy5jb2xvclBpY2tSZWYgKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8dmlldyBuYW1lPSJfY3VycmVudGNvbG9yIiB4PSIxIiB5PSIxIiBvbmNsaWNrPSJwYXJlbnQudG9nZ2xlKCkiIAorICAgICAgICBvbm1vdXNlb3Zlcj0iIiBvbm1vdXNlb3V0PSIiIHdpZHRoPSIzMCIgCisgICAgICAgIGhlaWdodD0iMjIiIGJnY29sb3I9IiR7cGFyZW50LnNlbGVjdGVkQ29sb3J9IiA+CisgICAgICAgIDxsYWJlbFRvb2x0aXAgdGV4dD0iJHsgcGFyZW50LnBhcmVudC5zZWxlY3RlZENvbG9yVHJhbnNmb3JtZWRTdHJpbmcgfSIgLz4KKyAgICA8L3ZpZXc+CisgICAgCisgICAgPGJ1dHRvbiBuYW1lPSJyZ3QiIHg9IjMyIiB5PSIxIiBvbmNsaWNrPSJwYXJlbnQudG9nZ2xlKCkiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyMyIgPgorICAgIAk8aW1hZ2UgeD0iNCIgeT0iMyIgc3JjPSIkb25jZXsgY2FudmFzLmdldFRoZW1lSW1hZ2UoJ2NvbG9ybGluZWNob29zZV9yc2MnKSB9IgorICAgIAkJCXdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3RyZXRjaGVzPSJib3RoIiAvPgorICAgICAgICA8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IjQyNCIgLz4KKyAgICA8L2J1dHRvbj4KKyAgICAKKzwvY2xhc3M+ICAKKworICAgIAorPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2xwcy9yZWdleHB0aXAubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2xwcy9yZWdleHB0aXAubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2NmJjNmQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvbHBzL3JlZ2V4cHRpcC5sengKQEAgLTAsMCArMSw1MyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPCEtLSBBUEwgQXV0aG9yIHNlYmF3YWduZXIgLS0+Cis8cmVzb3VyY2UgbmFtZT0icmVnZXhwdGlwX3JzY19yIiBzcmM9InJlc291cmNlcy9yZWdleHAvcmVnZXhwX2JnX3Iuc3dmIiAvPgorPCEtLSBBUEwgQXV0aG9yIHNlYmF3YWduZXIgLS0+Cis8cmVzb3VyY2UgbmFtZT0icmVnZXhwdGlwX3JzY19tIiBzcmM9InJlc291cmNlcy9yZWdleHAvcmVnZXhwX2JnX20uc3dmIiAvPgorPCEtLSBBUEwgQXV0aG9yIHNlYmF3YWduZXIgLS0+Cis8cmVzb3VyY2UgbmFtZT0icmVnZXhwdGlwX3JzY19sIiBzcmM9InJlc291cmNlcy9yZWdleHAvcmVnZXhwX2JnX2wuc3dmIiAvPgorPCEtLSBBUEwgQXV0aG9yIHNlYmF3YWduZXIgLS0+Cis8cmVzb3VyY2UgbmFtZT0icmVnZXhwdGlwX3JzY19wb2ludCIgc3JjPSJyZXNvdXJjZXMvcmVnZXhwL3JlZ2V4cF9wb2ludC5zd2YiIC8+CisKKzxjbGFzcyBuYW1lPSJyZWdleHB0aXAiIGV4dGVuZHM9InZpZXciPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0icmVnZXhwdGV4dCIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iZmFkZURlbGVnYXRlIiB2YWx1ZT0ibnVsbCIgLz4KKyAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgICAgICB0aGlzLmZhZGVEZWxlZ2F0ZSA9IG5ldyBMekRlbGVnYXRlKCB0aGlzLCAiZmFkZVRleHQiICk7CisgICAgICAgIGx6LlRpbWVyLmFkZFRpbWVyKCB0aGlzLmZhZGVEZWxlZ2F0ZSwgNTAwMCApOworICAgIDwvaGFuZGxlcj4KKyAgICA8bWV0aG9kIG5hbWU9ImZhZGVUZXh0IiBhcmdzPSJpdGVtUmVmIj4KKyAgICAgICAgdGhpcy5kZXN0cm95KCk7CisgICAgPC9tZXRob2Q+CisgICAgPHZpZXcgd2lkdGg9IiR7cGFyZW50LndpZHRofSIgbGF5b3V0PSJheGlzOngiPgorICAgICAgICA8dmlldyBuYW1lPSJyZWdleHB0aXBfcnNjX3IiIHJlc291cmNlPSJyZWdleHB0aXBfcnNjX3IiIHdpZHRoPSI1IiAvPgorICAgICAgICA8dmlldyBuYW1lPSJyZWdleHB0aXBfcnNjX20iIHJlc291cmNlPSJyZWdleHB0aXBfcnNjX20iIHN0cmV0Y2hlcz0id2lkdGgiIHdpZHRoPSIkeyBwYXJlbnQud2lkdGgtMTAgfSIvPgorICAgICAgICA8dmlldyBuYW1lPSJyZWdleHB0aXBfcnNjX2wiIHJlc291cmNlPSJyZWdleHB0aXBfcnNjX2wiIHdpZHRoPSI1IiAvPgorICAgIDwvdmlldz4KKyAgICAKKyAgICA8dmlldyByZXNvdXJjZT0icmVnZXhwdGlwX3JzY19wb2ludCIgeT0iLTciIHg9IjEyIiAvPgorCisgICAgPHRleHQgZm9udHNpemU9IjExIiB0ZXh0PSIkeyBwYXJlbnQucmVnZXhwdGV4dH0iIHJlc2l6ZT0idHJ1ZSIgbXVsdGlsaW5lPSJmYWxzZSIgLz4KKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9scHMvcmVzb3VyY2VzL2Fycm93X2Rvd25fc2xpZGVyLnBuZyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9scHMvcmVzb3VyY2VzL2Fycm93X2Rvd25fc2xpZGVyLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTEwN2Q3Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2xwcy9yZXNvdXJjZXMvYXJyb3dfZG93bl9zbGlkZXIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9scHMvcmVzb3VyY2VzL2NvbG9yX2ZpbGwucG5nIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2xwcy9yZXNvdXJjZXMvY29sb3JfZmlsbC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTM2MzFlYwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9scHMvcmVzb3VyY2VzL2NvbG9yX2ZpbGwucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9scHMvcmVzb3VyY2VzL3JlZ2V4cC9yZWdleHBfYmdfbC5zd2YgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvbHBzL3Jlc291cmNlcy9yZWdleHAvcmVnZXhwX2JnX2wuc3dmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyYWU3YTgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvbHBzL3Jlc291cmNlcy9yZWdleHAvcmVnZXhwX2JnX2wuc3dmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9scHMvcmVzb3VyY2VzL3JlZ2V4cC9yZWdleHBfYmdfbS5zd2YgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvbHBzL3Jlc291cmNlcy9yZWdleHAvcmVnZXhwX2JnX20uc3dmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExOWE4YWMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvbHBzL3Jlc291cmNlcy9yZWdleHAvcmVnZXhwX2JnX20uc3dmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9scHMvcmVzb3VyY2VzL3JlZ2V4cC9yZWdleHBfYmdfci5zd2YgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvbHBzL3Jlc291cmNlcy9yZWdleHAvcmVnZXhwX2JnX3Iuc3dmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0MzgzZDQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvbHBzL3Jlc291cmNlcy9yZWdleHAvcmVnZXhwX2JnX3Iuc3dmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9scHMvcmVzb3VyY2VzL3JlZ2V4cC9yZWdleHBfcG9pbnQuc3dmIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL2xwcy9yZXNvdXJjZXMvcmVnZXhwL3JlZ2V4cF9wb2ludC5zd2YKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjJhZGI3ZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9scHMvcmVzb3VyY2VzL3JlZ2V4cC9yZWdleHBfcG9pbnQuc3dmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9scHMvdnNsaWRlci5senggYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvbHBzL3ZzbGlkZXIubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2NWEyMjQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvbHBzL3ZzbGlkZXIubHp4CkBAIC0wLDAgKzEsMTUwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzwhLS0gWF9MWl9DT1BZUklHSFRfQkVHSU4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIENvcHlyaWdodCAyMDA2IExhc3psbyBTeXN0ZW1zLCBJbmMuICBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgICAgICAgKgorKiBVc2UgaXMgc3ViamVjdCB0byBsaWNlbnNlIHRlcm1zLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKyogWF9MWl9DT1BZUklHSFRfRU5EICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPgorPCEtLQorICAgIHZlcnRpY2FsIHNsaWRlciBjb250cmlidXRlZCBieSBTZWJhc3RpYW4gV2FnbmVyCistLT4KKzxsaWJyYXJ5PgorICAKKyAgPGNsYXNzIG5hbWU9InZzbGlkZXJUcmFjayIgZXh0ZW5kcz0idmlldyIgYmdjb2xvcj0iMHgwMDAwMDAiPgorICAgICAgICA8dmlldyB3aWR0aD0iJHsgcGFyZW50LndpZHRoLTJ9IiBoZWlnaHQ9IiR7IHBhcmVudC5oZWlnaHQtMiB9IiAKKyAgICAgICAgICB4PSIxIiB5PSIxIiBiZ2NvbG9yPSIweEZGRkZGRiIvPgorICAgICAgICA8dmlldyB3aWR0aD0iJHsgcGFyZW50LndpZHRoLTJ9IiBiZ2NvbG9yPSIweENDQ0NDQyIKKyAgICAgICAgICB4PSIxIiB5PSIkeyAodGhpcy5wYXJlbnQucGFyZW50LnN3aXRjaGF4aXMpID8gCisgICAgICAgICAgICAgICAgcGFyZW50LnBhcmVudC5fc2xpZGVydGh1bWIueSA6IDEgfSIgCisgICAgICAgICAgdmlzaWJsZT0iJHsgcGFyZW50LnBhcmVudC5zaG93cmFuZ2UgfSIgCisgICAgICAgICAgaGVpZ2h0PSIkeyAodGhpcy5wYXJlbnQucGFyZW50LnN3aXRjaGF4aXMpID8gCisgICAgICAgIChwYXJlbnQucGFyZW50Ll92c2xpZGVydHJhY2suaGVpZ2h0IC0gcGFyZW50LnBhcmVudC5fc2xpZGVydGh1bWIueS0xKSA6IAorICAgICAgICBwYXJlbnQucGFyZW50Ll9zbGlkZXJ0aHVtYi55IH0iIC8+CisgIDwvY2xhc3M+CisJICAKKwk8Y2xhc3MgbmFtZT0idnNsaWRlclRodW1iIiBleHRlbmRzPSJidXR0b24iIGJnY29sb3I9IjB4OTk5OTk5IiBoZWlnaHQ9IjEwIiB3aWR0aD0iMjAiIAorCQlvbm1vdXNlZG93bj0iZHJhZ2dlci5hcHBseSgpIiBvbm1vdXNldXA9ImRyYWdnZXIucmVtb3ZlKCkiPgorICAJCisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iZHJhZ19taW4iIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ic2hvd3ZhbHVlIiB0eXBlPSJib29sZWFuIiB2YWx1ZT0idHJ1ZSIgLz4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJkcmFnX21heCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKyAgICAgICAgCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgICAgICAvL1NldHRpbmcgdGhlIGluaXRWYWwKKyAgICAgICAgICAgIHRoaXMuc2V0WShnZXRQb3NGcm9tVmFsdWUodGhpcy5wYXJlbnQuaW5pdHZhbHVlKSk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgCisgICAgICAgIDxtZXRob2QgbmFtZT0iZ2V0VmFsdWVGcm9tUG9zIj4KKyAgICAgICAgICAgIHZhciBkZWx0YTEgPSB0aGlzLnBhcmVudC5tYXh2YWx1ZS10aGlzLnBhcmVudC5taW52YWx1ZTsKKyAgICAgICAgICAgIHZhciBwZXJjID0gKHRoaXMucGFyZW50LnN3aXRjaGF4aXMpID8gMS0oeSAvICh0aGlzLnBhcmVudC5oZWlnaHQtdGhpcy5oZWlnaHQpKSA6ICh5IC8gKHRoaXMucGFyZW50LmhlaWdodC10aGlzLmhlaWdodCkpOworICAgICAgICAgICAgLy9EZWJ1Zy53cml0ZShkZWx0YTEscGVyYyk7CisgICAgICAgICAgICByZXR1cm4gKE1hdGgucm91bmQocGVyYypkZWx0YTEpKSt0aGlzLnBhcmVudC5taW52YWx1ZTsKKyAgICAgICAgPC9tZXRob2Q+CisgICAgICAgIAorICAgICAgICA8bWV0aG9kIG5hbWU9ImdldFBvc0Zyb21WYWx1ZSIgYXJncz0idmFsIj4KKyAgICAgICAgICAgIHZhciBwZXJjID0gKHZhbC10aGlzLnBhcmVudC5taW52YWx1ZSkgLyAodGhpcy5wYXJlbnQubWF4dmFsdWUtdGhpcy5wYXJlbnQubWludmFsdWUpOworICAgICAgICAgICAgLy9EZWJ1Zy53cml0ZShwZXJjKTsKKyAgICAgICAgICAgIHZhbFkgPSAodGhpcy5wYXJlbnQuc3dpdGNoYXhpcykgPyAoICgxLXBlcmMpICogKHRoaXMucGFyZW50LmhlaWdodC10aGlzLmhlaWdodCkpIDogKHBlcmMgKiAodGhpcy5wYXJlbnQuaGVpZ2h0LXRoaXMuaGVpZ2h0KSk7CisgICAgICAgICAgICAvL0RlYnVnLndyaXRlKCJ2YWxZOiAiLE1hdGgucm91bmQodmFsWSkpOworICAgICAgICAgICAgcmV0dXJuIE1hdGgucm91bmQodmFsWSk7CisgICAgICAgIDwvbWV0aG9kPgorICAgICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib255IiBhcmdzPSJ2Ij4KKyAgICAgICAgICAgIC8vc3VwZXIuc2V0WSh2KTsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInNldFk6ICIsdik7CisJCSAgICB2YXIgdGh1bWJWYWwgPSBnZXRWYWx1ZUZyb21Qb3MoKTsKKwkJICAgIGlmICh0aHVtYlZhbCAhPSBwYXJlbnQudmFsdWUpIHsKKwkJICAgICAgICB0aGlzLnBhcmVudC5zZXRWYWx1ZSh0aHVtYlZhbCk7CisJCSAgICB9ICAgICAgICAgICAgICAgCisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAJcGFyZW50Lm9udmFsdWVDaG9zZW5GaW5hbC5zZW5kRXZlbnQoKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAKKwkJPGRyYWdzdGF0ZSBuYW1lPSJkcmFnZ2VyIiBkcmFnX2F4aXM9InkiCisJCSAgICBkcmFnX21pbl95PSIkeyB0aGlzLmRyYWdfbWluIH0iICAKKwkJICAgIGRyYWdfbWF4X3k9IiR7IHRoaXMuZHJhZ19tYXggfSI+CisJCQk8dGV4dCBuYW1lPSJ0MSIgeD0iLTI2IiB0ZXh0PSIkeyB0aGlzLnBhcmVudC5wYXJlbnQudmFsdWUgfSIgYmdjb2xvcj0iMHhGRkZGRkYiCisJCQkJICB5PSItNCIgcmVzaXplPSJ0cnVlIiAvPgorCQk8L2RyYWdzdGF0ZT4KKwk8L2NsYXNzPgorCis8Y2xhc3MgbmFtZT0idnNsaWRlciIgZXh0ZW5kcz0idmlldyIgPgorICAgIDwhLS0tIE1pbmltdW0gVmFsdWUgLS0+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJtaW52YWx1ZSIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0iMCIvPgorICAgIAorICAgIDwhLS0tIE1heGltdW0gVmFsdWUgLS0+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJtYXh2YWx1ZSIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0iMTAwIi8+CisgICAgCisgICAgPCEtLS0gU2hvd3JhbmdlIHNob3VsZCB0aGUgc2xpZGVydHJhY2sgYmUgd2l0aCBjb2xvciB3aGlsZSAnc2xpZGluZycgLS0+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJzaG93cmFuZ2UiIHR5cGU9ImJvb2xlYW4iIHZhbHVlPSJ0cnVlIi8+CisgICAgCisgICAgPCEtLS0gc2hvd3ZhbHVlIHNob3VsZCB0aGUgc2xpZGVyIHNob3cgdGhlIG51bWJlcnMgb2YgbWluL21heCAtLT4KKyAgICA8YXR0cmlidXRlIG5hbWU9InNob3d2YWx1ZSIgdHlwZT0iYm9vbGVhbiIgdmFsdWU9InRydWUiLz4KKyAgICAKKyAgICA8IS0tLSBzd2l0Y2hheGlzIHRydWUgbWVhbnMgbWluaW11bS12YWx1ZSBpcyAKKyAgICAgICAgICAgIHQgb3AgbWF4aW11bSBpcyBib3R0b20gZmFsc2UgdHVybnMgYXJvdW5kIC0tPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0ic3dpdGNoYXhpcyIgdHlwZT0iYm9vbGVhbiIgdmFsdWU9ImZhbHNlIi8+CisgICAgCisgICAgPCEtLSBJbml0aWFsIFZhbHVlIC0tPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iaW5pdHZhbHVlIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPiAgICAgICAgICAKKyAgICAgICAgCisgICAgPCEtLS0gQGtleXdvcmRzIHByaXZhdGUgLS0+CisgICAgPGV2ZW50IG5hbWU9Im9udmFsdWUiLz4KKyAgICAKKyAgICA8IS0tLSBAa2V5d29yZHMgcHJpdmF0ZSAtLT4KKyAgICA8ZXZlbnQgbmFtZT0ib252YWx1ZUNob3NlbkZpbmFsIi8+CisgICAgICAgIAorICAgIDwhLS0tIEBrZXl3b3JkcyBwcml2YXRlIC0tPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0idmFsdWUiIHZhbHVlPSIwIiBzZXR0ZXI9InNldFZhbHVlKHZhbHVlKSIvPgorICAgIDxtZXRob2QgbmFtZT0ic2V0VmFsdWUiIGFyZ3M9InYiPgorICAgICAgICBpZiAoIWlzaW5pdGVkKSB7CisgICAgICAgICAgdGhpcy52YWx1ZSA9IHY7CisgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmICh0aGlzLnZhbHVlID09IHYpIHJldHVybjsKKyAgICAgICAgdGhpcy52YWx1ZSA9IHY7CisgICAgICAgIGlmIChvbnZhbHVlKSBvbnZhbHVlLnNlbmRFdmVudCh2KTsKKyAgICA8L21ldGhvZD4KKyAgICAgICAKKwk8dnNsaWRlclRyYWNrIG5hbWU9Il92c2xpZGVydHJhY2siIHg9IjUiIAorCSAgICB3aWR0aD0iMTAiIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodCB9IiAvPgorCSAgICAKKwk8dnNsaWRlclRodW1iIG5hbWU9Il9zbGlkZXJ0aHVtYiIgCisJICAgIGRyYWdfbWF4PSIkeyBwYXJlbnQuaGVpZ2h0LXRoaXMuaGVpZ2h0IH0iIAorCSAgICBzaG93dmFsdWU9IiR7IHBhcmVudC5zaG93dmFsdWUgfSIgLz4KKwkgICAgCisJPHRleHQgdGV4dD0iJHsgKCAodGhpcy5wYXJlbnQuc3dpdGNoYXhpcykgPyAKKwkgICAgICAgICAgICB0aGlzLnBhcmVudC5tYXh2YWx1ZSA6IHRoaXMucGFyZW50Lm1pbnZhbHVlICkgfSIgCisJICAgIHZpc2libGU9IiR7IHBhcmVudC5zaG93dmFsdWUgfSIgCisJICAgIHk9Ii04IiB4PSIkeyB0aGlzLnBhcmVudC5fdnNsaWRlcnRyYWNrLndpZHRoKzEwIH0iIC8+CisJICAgIAorCTx0ZXh0IHRleHQ9IiR7ICggKHRoaXMucGFyZW50LnN3aXRjaGF4aXMpID8gCisJICAgICAgICAgICAgdGhpcy5wYXJlbnQubWludmFsdWUgOiB0aGlzLnBhcmVudC5tYXh2YWx1ZSApIH0iIAorCSAgICAgIHZpc2libGU9IiR7IHBhcmVudC5zaG93dmFsdWUgfSIgCisJICAgICAgeT0iJHsgdGhpcy5wYXJlbnQuaGVpZ2h0LTEwIH0iIAorCSAgICAgIHg9IiR7IHRoaXMucGFyZW50Ll92c2xpZGVydHJhY2sud2lkdGgrMTAgfSIgLz4KKyAgICAgICAgICAKKzwvY2xhc3M+CisgIAorICAKKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL21pbmlJY29ucy5senggYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvbWluaUljb25zLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDFkMzgxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL21pbmlJY29ucy5sengKQEAgLTAsMCArMSw2NyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+DQorPCEtLQ0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAgDQorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICAgIAkgIA0KKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICB1bmRlciB0aGUgTGljZW5zZS4NCisgIA0KKy0tPg0KKzxsaWJyYXJ5Pg0KKw0KKzxjbGFzcyBuYW1lPSJtaW5pSWNvbnMiIGV4dGVuZHM9InZpZXciIHN0cmV0Y2hlcz0iYm90aCI+DQorCTxhdHRyaWJ1dGUgbmFtZT0ic2hvd2hhbmRjdXJzb3IiIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPg0KKyAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3ZlciI+DQorICAgIAlpZiAodGhpcy5zaG93aGFuZGN1cnNvcikgew0KKyAgICAgICAgCXRoaXMuc2V0QXR0cmlidXRlKCJ4Iix0aGlzLngtMSk7DQorICAgICAgICAJdGhpcy5zZXRBdHRyaWJ1dGUoInkiLHRoaXMueS0xKTsNCisgICAgICAgIAl0aGlzLnNldEF0dHJpYnV0ZSgiaGVpZ2h0Iix0aGlzLmhlaWdodCsyKTsNCisgICAgICAgIAl0aGlzLnNldEF0dHJpYnV0ZSgid2lkdGgiLHRoaXMud2lkdGgrMik7DQorICAgIAl9DQorICAgICAgICBwYXJlbnQucGFyZW50Lm9ubW91c2VvdmVyLnNlbmRFdmVudCgpOw0KKyAgICA8L2hhbmRsZXI+DQorICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdXQiPg0KKyAgICAJaWYgKHRoaXMuc2hvd2hhbmRjdXJzb3IpIHsNCisgICAgICAgIAl0aGlzLnNldEF0dHJpYnV0ZSgieCIsdGhpcy54KzEpOw0KKyAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJ5Iix0aGlzLnkrMSk7DQorICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoImhlaWdodCIsdGhpcy5oZWlnaHQtMik7DQorICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoIndpZHRoIix0aGlzLndpZHRoLTIpOw0KKyAgICAJfQ0KKyAgICAgICAgcGFyZW50LnBhcmVudC5vbm1vdXNlb3V0LnNlbmRFdmVudCgpOw0KKyAgICA8L2hhbmRsZXI+DQorPC9jbGFzcz4NCisNCis8Y2xhc3MgbmFtZT0ibWluaUljb25zSW1hZ2UiIGV4dGVuZHM9ImltYWdlIiBzdHJldGNoZXM9ImJvdGgiPg0KKwk8YXR0cmlidXRlIG5hbWU9InNob3doYW5kY3Vyc29yIiB2YWx1ZT0idHJ1ZSIgdHlwZT0iYm9vbGVhbiIgLz4NCisgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZW92ZXIiPg0KKyAgICAJaWYgKHRoaXMuc2hvd2hhbmRjdXJzb3IpIHsNCisgICAgICAgIAl0aGlzLnNldEF0dHJpYnV0ZSgieCIsdGhpcy54LTEpOw0KKyAgICAgICAgCXRoaXMuc2V0QXR0cmlidXRlKCJ5Iix0aGlzLnktMSk7DQorICAgICAgICAJdGhpcy5zZXRBdHRyaWJ1dGUoImhlaWdodCIsdGhpcy5oZWlnaHQrMik7DQorICAgICAgICAJdGhpcy5zZXRBdHRyaWJ1dGUoIndpZHRoIix0aGlzLndpZHRoKzIpOw0KKyAgICAJfQ0KKyAgICAgICAgcGFyZW50LnBhcmVudC5vbm1vdXNlb3Zlci5zZW5kRXZlbnQoKTsNCisgICAgPC9oYW5kbGVyPg0KKyAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3V0Ij4NCisgICAgCWlmICh0aGlzLnNob3doYW5kY3Vyc29yKSB7DQorICAgICAgICAJdGhpcy5zZXRBdHRyaWJ1dGUoIngiLHRoaXMueCsxKTsNCisgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgieSIsdGhpcy55KzEpOw0KKyAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJoZWlnaHQiLHRoaXMuaGVpZ2h0LTIpOw0KKyAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJ3aWR0aCIsdGhpcy53aWR0aC0yKTsNCisgICAgCX0NCisgICAgICAgIHBhcmVudC5wYXJlbnQub25tb3VzZW91dC5zZW5kRXZlbnQoKTsNCisgICAgPC9oYW5kbGVyPg0KKzwvY2xhc3M+DQorDQorPC9saWJyYXJ5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9taW5pSWNvbnNOZXcubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL21pbmlJY29uc05ldy5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmU0YTFhMgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9taW5pSWNvbnNOZXcubHp4CkBAIC0wLDAgKzEsNDcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/Pg0KKzwhLS0NCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgIA0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAgICAJICANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAgdW5kZXIgdGhlIExpY2Vuc2UuDQorICANCistLT4NCis8bGlicmFyeT4NCisNCisJPGNsYXNzIG5hbWU9Im1pbmlJY29uc05ldyIgZXh0ZW5kcz0idmlldyIgPg0KKwkJPGF0dHJpYnV0ZSBuYW1lPSJpbm5lclJlc291cmNlIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+DQorCQk8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3ZlciI+DQorCSAgICAJaWYgKHRoaXMuc2hvd2hhbmRjdXJzb3IpIHsNCisJICAgICAgICAJdGhpcy5pbm5uZXJWaWV3LnNldEF0dHJpYnV0ZSgieCIsdGhpcy5pbm5uZXJWaWV3LngtMSk7DQorCSAgICAgICAgCXRoaXMuaW5ubmVyVmlldy5zZXRBdHRyaWJ1dGUoInkiLHRoaXMuaW5ubmVyVmlldy55LTEpOw0KKwkgICAgICAgIAl0aGlzLmlubm5lclZpZXcuc2V0QXR0cmlidXRlKCJoZWlnaHQiLHRoaXMuaW5ubmVyVmlldy5oZWlnaHQrMik7DQorCSAgICAgICAgCXRoaXMuaW5ubmVyVmlldy5zZXRBdHRyaWJ1dGUoIndpZHRoIix0aGlzLmlubm5lclZpZXcud2lkdGgrMik7DQorCSAgICAJfQ0KKwkgICAgPC9oYW5kbGVyPg0KKwkgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZW91dCI+DQorCSAgICAJaWYgKHRoaXMuc2hvd2hhbmRjdXJzb3IpIHsNCisJICAgICAgICAJdGhpcy5pbm5uZXJWaWV3LnNldEF0dHJpYnV0ZSgieCIsdGhpcy5pbm5uZXJWaWV3LngrMSk7DQorCSAgICAgICAgICAgIHRoaXMuaW5ubmVyVmlldy5zZXRBdHRyaWJ1dGUoInkiLHRoaXMuaW5ubmVyVmlldy55KzEpOw0KKwkgICAgICAgICAgICB0aGlzLmlubm5lclZpZXcuc2V0QXR0cmlidXRlKCJoZWlnaHQiLHRoaXMuaW5ubmVyVmlldy5oZWlnaHQtMik7DQorCSAgICAgICAgICAgIHRoaXMuaW5ubmVyVmlldy5zZXRBdHRyaWJ1dGUoIndpZHRoIix0aGlzLmlubm5lclZpZXcud2lkdGgtMik7DQorCSAgICAJfQ0KKwkgICAgPC9oYW5kbGVyPg0KKwkJPHZpZXcgbmFtZT0iaW5ubmVyVmlldyIgcmVzb3VyY2U9IiRvbmNleyBwYXJlbnQuaW5uZXJSZXNvdXJjZSB9IiBzdHJldGNoZXM9ImJvdGgiDQorCQkJCXdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoIH0iIGhlaWdodD0iJG9uY2V7IHBhcmVudC5oZWlnaHQgfSI+DQorCQkgICAgDQorCQk8L3ZpZXc+DQorCTwvY2xhc3M+DQorCQ0KKzwvbGlicmFyeT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvb21jaGFydHMvbGlicmFyeS5senggYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvb21jaGFydHMvbGlicmFyeS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2QxNjU3MQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9vbWNoYXJ0cy9saWJyYXJ5Lmx6eApAQCAtMCwwICsxLDQzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCisgICAgPGluY2x1ZGUgaHJlZj0iY2hhcnRzL3N0eWxlcy9jaGFydHN0eWxlLmx6eCIvPgorICAgIDxpbmNsdWRlIGhyZWY9ImNoYXJ0cy9jb21tb24vZGF0YXNlcmllcy5sengiLz4KKyAgICA8aW5jbHVkZSBocmVmPSJjaGFydHMvY29tbW9uL3ZpZXdzcG9vbG1hbmFnZXIubHp4Ii8+CisgICAgPGluY2x1ZGUgaHJlZj0iY2hhcnRzL2NvbW1vbi92aXJ0dWFsZHJhd3ZpZXcubHp4Ii8+CisgICAgPGluY2x1ZGUgaHJlZj0iY2hhcnRzL2NvbW1vbi9kYXRhbGFiZWwubHp4Ii8+CisgICAgPGluY2x1ZGUgaHJlZj0iY2hhcnRzL2NvbW1vbi9jaGFydC5sengiLz4KKyAgICA8aW5jbHVkZSBocmVmPSJjaGFydHMvY29tbW9uL2xlZ2VuZC5sengiLz4KKyAgICA8aW5jbHVkZSBocmVmPSJjaGFydHMvcGllY2hhcnQvcGllcGllY2UubHp4Ii8+CisgICAgPGluY2x1ZGUgaHJlZj0iY2hhcnRzL3BpZWNoYXJ0L3BpZWNoYXJ0cGxvdGFyZWEubHp4Ii8+CisgICAgCisgICAgPGluY2x1ZGUgaHJlZj0iY2hhcnRzL3N0eWxlcy9zdHJva2VzdHlsZS5sengiLz4KKyAgICA8aW5jbHVkZSBocmVmPSJjaGFydHMvcGllY2hhcnQvcGllcGllY2UubHp4Ii8+CisgICAgPGluY2x1ZGUgaHJlZj0idXRpbHMvbGF5b3V0cy9zaW1wbGVsYXlvdXQubHp4Ii8+CisgICAgPGluY2x1ZGUgaHJlZj0iZXh0ZW5zaW9ucy9kcmF3dmlldy5sengiLz4KKyAgICAKKyAgICA8aW5jbHVkZSBocmVmPSJvbWNoYXJ0c3R5bGUubHp4IiAvPgorICAgIDxpbmNsdWRlIGhyZWY9Im9tbGVnZW5kLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJvbXBpZWNoYXJ0Lmx6eCIgLz4KKworCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvb21jaGFydHMvb21jaGFydHN0eWxlLmx6eCBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9vbWNoYXJ0cy9vbWNoYXJ0c3R5bGUubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1Mzg2ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvb21jaGFydHMvb21jaGFydHN0eWxlLmx6eApAQCAtMCwwICsxLDE1OCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8IS0tLQorICAgIEBhY2Nlc3MgcHVibGljCisgICAgQHRvcGljIENvbXBvbmVudHMKKyAgICBAc3VidG9waWMgQ2hhcnRzCisgIC0tPgorPGxpYnJhcnk+CisgICAgCis8Y2hhcnRzdHlsZSBuYW1lPSJvbWNoYXJ0c3R5bGUiPgorICAgIDxwbG90c3R5bGUgbmFtZT0icGxvdCIgbGluZXNpemU9IjEiIGxpbmVjb2xvcj0iMHhDQ0NDQ0MiIGZpbGxjb2xvcj0iMHhmZmZmZmYiIG9wYWNpdHk9IjAuNSIvPgorICAgIDxjaGFydGJnc3R5bGUgbmFtZT0iY2hhcnRiZ3N0eWxlIj4KKyAgICAgICAgPGxpbmVzdHlsZSBuYW1lPSJsaW5lIiBzaXplPSIwIi8+CisgICAgICAgIDxyZWdpb25zdHlsZSBuYW1lPSJyZWdpb24iIGNvbG9yPSIweEZGRkZGRiIgb3BhY2l0eT0iMC41Ii8+CisgICAgPC9jaGFydGJnc3R5bGU+CisgICAgPHZhbHVlcmVnaW9uc3R5bGUgbmFtZT0idmFsdWVyZWdpb25zdHlsZSI+CisgICAgICAgIDxsaW5lc3R5bGUgbmFtZT0ibGluZSIgY29sb3I9IjB4MDAwMDAwIiBzaXplPSIxIiBvcGFjaXR5PSIxIi8+CisgICAgICAgIDxyZWdpb25zdHlsZSBuYW1lPSJyZWdpb24iIGNvbG9yPSIweEI3MUNCMyIgb3BhY2l0eT0iMC44IiBncmFkaWVudD0ibGluZWFyIi8+CisgICAgICAgIDxsYWJlbHN0eWxlIG5hbWU9ImxhYmVsIiBmb250PSJzZXJpZiIgZm9udHNpemU9IjEyIiBmb250Y29sb3I9IjB4MDAwMDAwIi8+CisgICAgICAgIDxsYWJlbHN0eWxlIG5hbWU9InRpcCIgZm9udD0ic2VyaWYiIGZvbnRzaXplPSIxMiIgZm9udGNvbG9yPSIweDAwMDAwMCIvPgorICAgIDwvdmFsdWVyZWdpb25zdHlsZT4KKyAgICA8YXhpc3N0eWxlIG5hbWU9ImhheGlzc3R5bGUiPgorICAgICAgICA8bGFiZWxzdHlsZSBuYW1lPSJsYWJlbCIgZm9udD0iSGVsbWV0IiBmb250c2l6ZT0iMTYiIGZvbnRjb2xvcj0iMHgwMDAwMDAiIGZvbnRhbmdsZT0iMCIvPgorICAgICAgICA8dGlja3N0eWxlIG5hbWU9InRpY2ttYWpvciIgY29sb3I9IjB4MDAwMDAwIiBwb3NpdGlvbj0ib3V0c2lkZSIgbGVuZ3RoPSIzIiBzaXplPSIxIj4KKyAgICAgICAgICAgIDxsYWJlbHN0eWxlIG5hbWU9ImxhYmVsIiBmb250PSJzZXJpZiIgZm9udHN0eWxlPSJib2xkIiBmb250c2l6ZT0iMTIiIGZvbnRjb2xvcj0iMHg2MDYwNjAiLz4KKyAgICAgICAgPC90aWNrc3R5bGU+CisgICAgICAgIDx0aWNrc3R5bGUgbmFtZT0idGlja21pbm9yIiBjb2xvcj0iMHhEM0QzRDMiIHBvc2l0aW9uPSJvdXRzaWRlIiBsZW5ndGg9IjMiIHNpemU9IjEiLz4KKyAgICAgICAgPGxpbmVzdHlsZSBuYW1lPSJheGlzbGluZSIgY29sb3I9IjB4MDAwMDAwIiBzaXplPSIxIi8+CisgICAgICAgIDxsaW5lc3R5bGUgbmFtZT0iZ3JpZGxpbmUiIGNvbG9yPSIweEQzRDNEMyIgc2l6ZT0iMSIvPgorICAgIDwvYXhpc3N0eWxlPgorICAgIDxheGlzc3R5bGUgbmFtZT0idmF4aXNzdHlsZSI+CisgICAgICAgIDxsYWJlbHN0eWxlIG5hbWU9ImxhYmVsIiBmb250PSJIZWxtZXQiIGZvbnRzaXplPSIxNiIgZm9udGNvbG9yPSIweDAwMDAwMCIgZm9udGFuZ2xlPSItOTAiLz4KKyAgICAgICAgPHRpY2tzdHlsZSBuYW1lPSJ0aWNrbWFqb3IiIGNvbG9yPSIweDAwMDAwMCIgcG9zaXRpb249Im91dHNpZGUiIGxlbmd0aD0iMyIgc2l6ZT0iMSI+CisgICAgICAgICAgICA8bGFiZWxzdHlsZSBuYW1lPSJsYWJlbCIgZm9udD0ic2VyaWYiIGZvbnRzaXplPSIxMiIgZm9udGNvbG9yPSIweDYwNjA2MCIvPgorICAgICAgICA8L3RpY2tzdHlsZT4KKyAgICAgICAgPHRpY2tzdHlsZSBuYW1lPSJ0aWNrbWlub3IiIGNvbG9yPSIweDAwMDAwMCIgcG9zaXRpb249Im91dHNpZGUiIGxlbmd0aD0iMyIgc2l6ZT0iMSIvPgorICAgICAgICA8bGluZXN0eWxlIG5hbWU9ImF4aXNsaW5lIiBjb2xvcj0iMHgwMDAwMDAiIHNpemU9IjEiLz4KKyAgICAgICAgPGxpbmVzdHlsZSBuYW1lPSJncmlkbGluZSIgY29sb3I9IjB4RDNEM0QzIiBzaXplPSIxIi8+CisgICAgICAgIDxyZWdpb25zdHlsZSBuYW1lPSJiYW5kMSIgY29sb3I9IjB4RThFQkVFIiBvcGFjaXR5PSIxIiBncmFkaWVudD0ibGluZWFyIi8+CisgICAgICAgIDxyZWdpb25zdHlsZSBuYW1lPSJiYW5kMiIgY29sb3I9IjB4RTNFNUU3IiBvcGFjaXR5PSIxIiBncmFkaWVudD0ibGluZWFyIi8+CisgICAgPC9heGlzc3R5bGU+CisgICAgPHZhbHVlbGluZXN0eWxlIG5hbWU9InZhbHVlbGluZXN0eWxlIj4KKyAgICAgICAgPGxpbmVzdHlsZSBuYW1lPSJsaW5lIiBjb2xvcj0iMHhGRjk5OTkiIHNpemU9IjIiIG9wYWNpdHk9IjEiLz4KKyAgICAgICAgPGxhYmVsc3R5bGUgbmFtZT0ibGFiZWwiIGZvbnQ9InNlcmlmIiBmb250c2l6ZT0iMTAiIGZvbnRjb2xvcj0iMHgwMDAwMDAiCisgICAgICAgICAgIGxpbmVjb2xvcj0iMHgwMDAwMDAiIGZpbGxjb2xvcj0iMHhGRkZGQzEiIGxpbmVzaXplPSIyIi8+CisgICAgICAgIDxsYWJlbHN0eWxlIG5hbWU9InRpcCIgZm9udD0ic2VyaWYiIGZvbnRzaXplPSIxMCIgZm9udGNvbG9yPSIweDAwMDAwMCIKKyAgICAgICAgICAgbGluZWNvbG9yPSIweDAwMDAwMCIgZmlsbGNvbG9yPSIweEZGRkZDMSIgbGluZXNpemU9IjIiLz4KKyAgICA8L3ZhbHVlbGluZXN0eWxlPgorICAgIDx2YWx1ZXBvaW50c3R5bGUgbmFtZT0idmFsdWVwb2ludHN0eWxlIj4KKyAgICAgICAgPHBvaW50c3R5bGUgbmFtZT0icG9pbnQiIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNSIgY29sb3I9IjB4MDBmZjAwIiBvcGFjaXR5PSIuNSIgc2hhcGU9InRyaWFuZ2xlIiBpbWFnZT0iLi4vLi4vdGVzdC9pbWFnZXMvbWFzdGVyLmdpZiIvPgorICAgICAgICA8bGFiZWxzdHlsZSBuYW1lPSJsYWJlbCIgZm9udD0ic2VyaWYiIGZvbnRzaXplPSIxMCIgZm9udGNvbG9yPSIweDAwMDAwMCIKKyAgICAgICAgICAgbGluZWNvbG9yPSIweDAwMDAwMCIgZmlsbGNvbG9yPSIweEZGRkZDMSIgbGluZXNpemU9IjIiLz4KKyAgICAgICAgPGxhYmVsc3R5bGUgbmFtZT0idGlwIiBmb250PSJzZXJpZiIgZm9udHNpemU9IjEwIiBmb250Y29sb3I9IjB4MDAwMDAwIgorICAgICAgICAgICBsaW5lY29sb3I9IjB4MDAwMDAwIiBmaWxsY29sb3I9IjB4RkZGRkMxIiBsaW5lc2l6ZT0iMiIvPgorICAgIDwvdmFsdWVwb2ludHN0eWxlPgorICAgIDxkYXRhc3R5bGVsaXN0IG5hbWU9ImRhdGFzdHlsZXMiPgorICAgICAgICA8ZGF0YXN0eWxlIG5hbWU9InlsaW5lIj4KKyAgICAgICAgICAgIDxwb2ludHN0eWxlIG5hbWU9InBvaW50IiB3aWR0aD0iMTAiIGhlaWdodD0iMTAiIGNvbG9yPSIweEY5RjkzMiIgb3BhY2l0eT0iMSIgc2hhcGU9ImRpYW1vbmQiIHN0cm9rZVN0eWxlPSIweEEzQTMwNCIgbGluZVdpZHRoPSIxIi8+CisgICAgICAgICAgICA8bGluZXN0eWxlIG5hbWU9ImxpbmUiIGNvbG9yPSIweENDQ0NDQyIgc2l6ZT0iMSIgb3BhY2l0eT0iMSIgdHlwZT0ic29saWQiLz4KKyAgICAgICAgICAgIDxyZWdpb25zdHlsZSBuYW1lPSJyZWdpb24iIGNvbG9yPSIweEE2Q0VFMyIgb3BhY2l0eT0iMSIgZ3JhZGllbnQ9Im5vbmUiLz4KKyAgICAgICAgICAgIDxsYWJlbHN0eWxlIG5hbWU9ImxhYmVsIiBmb250PSJzZXJpZiIgZm9udHNpemU9IjkiIGZvbnRjb2xvcj0iMHgwMDAwMDAiIGxpbmVjb2xvcj0iMHgwMDAwMDAiIGZpbGxjb2xvcj0iMHhGRkZGQzEiIGxpbmVzaXplPSIxMiIgZm9udGFuZ2xlPSI5MCIvPgorICAgICAgICAgICAgPGxhYmVsc3R5bGUgbmFtZT0idGlwIiBmb250PSJzZXJpZiIgZm9udHNpemU9IjgiIGZvbnRjb2xvcj0iMHgwMDAwMDAiCisgICAgICAgICAgICAgICBsaW5lY29sb3I9IjB4RjlGOTMyIiBmaWxsY29sb3I9IjB4RkZGRkMxIiBsaW5lc2l6ZT0iNCIvPgorICAgICAgICA8L2RhdGFzdHlsZT4KKyAgICAgICAgPGRhdGFzdHlsZSBuYW1lPSJibGluZSI+CisgICAgICAgICAgICA8cG9pbnRzdHlsZSBuYW1lPSJwb2ludCIgd2lkdGg9IjEwIiBoZWlnaHQ9IjEwIiBjb2xvcj0iMHgzMkFERkIiIG9wYWNpdHk9IjEiIHNoYXBlPSJmb3VycG9pbnQiIHN0cm9rZVN0eWxlPSIweDAzNjA5QyIgbGluZVdpZHRoPSIxIi8+CisgICAgICAgICAgICA8bGluZXN0eWxlIG5hbWU9ImxpbmUiIGNvbG9yPSIweENDQ0NDQyIgc2l6ZT0iMSIgb3BhY2l0eT0iMSIgdHlwZT0ic29saWQiLz4KKyAgICAgICAgICAgIDxyZWdpb25zdHlsZSBuYW1lPSJyZWdpb24iIGNvbG9yPSIweDFGNzhCNCIgb3BhY2l0eT0iMSIgZ3JhZGllbnQ9Im5vbmUiLz4KKyAgICAgICAgICAgIDxsYWJlbHN0eWxlIG5hbWU9ImxhYmVsIiBmb250PSJzZXJpZiIgZm9udHNpemU9IjkiIGZvbnRjb2xvcj0iMHgwMDAwMDAiIGxpbmVjb2xvcj0iMHgwMDAwMDAiIGZpbGxjb2xvcj0iMHhGRkZGQzEiIGxpbmVzaXplPSIxMiIgZm9udGFuZ2xlPSI5MCIvPgorICAgICAgICAgICAgPGxhYmVsc3R5bGUgbmFtZT0idGlwIiBmb250PSJzZXJpZiIgZm9udHNpemU9IjgiIGZvbnRjb2xvcj0iMHgwMDAwMDAiCisgICAgICAgICAgICAgICBsaW5lY29sb3I9IjB4MDAwMDAwIiBmaWxsY29sb3I9IjB4RkZGRkMxIiBsaW5lc2l6ZT0iMiIvPgorICAgICAgICA8L2RhdGFzdHlsZT4KKyAgICAgICAgPGRhdGFzdHlsZSBuYW1lPSJybGluZSI+CisgICAgICAgICAgICA8cG9pbnRzdHlsZSBuYW1lPSJwb2ludCIgd2lkdGg9IjEwIiBoZWlnaHQ9IjEwIiBjb2xvcj0iMHhGQTgxNTkiIG9wYWNpdHk9IjEiIHNoYXBlPSJjaXJjbGUiIHN0cm9rZVN0eWxlPSIweEIyNEMyQyIgbGluZVdpZHRoPSIxIi8+CisgICAgICAgICAgICA8bGluZXN0eWxlIG5hbWU9ImxpbmUiIGNvbG9yPSIweENDQ0NDQyIgc2l6ZT0iMSIgb3BhY2l0eT0iMSIgdHlwZT0ic29saWQiLz4KKyAgICAgICAgICAgIDxyZWdpb25zdHlsZSBuYW1lPSJyZWdpb24iIGNvbG9yPSIweEIyREY4QSIgb3BhY2l0eT0iMSIgZ3JhZGllbnQ9Im5vbmUiLz4KKyAgICAgICAgICAgIDxsYWJlbHN0eWxlIG5hbWU9ImxhYmVsIiBmb250PSJzZXJpZiIgZm9udHNpemU9IjkiIGZvbnRjb2xvcj0iMHgwMDAwMDAiIGxpbmVjb2xvcj0iMHgwMDAwMDAiIGZpbGxjb2xvcj0iMHhGRkZGQzEiIGxpbmVzaXplPSIxMiIgZm9udGFuZ2xlPSI5MCIvPgorICAgICAgICAgICAgPGxhYmVsc3R5bGUgbmFtZT0idGlwIiBmb250PSJzZXJpZiIgZm9udHNpemU9IjgiIGZvbnRjb2xvcj0iMHgwMDAwMDAiCisgICAgICAgICAgICAgICBsaW5lY29sb3I9IjB4MDAwMDAwIiBmaWxsY29sb3I9IjB4RkZGRkMxIiBsaW5lc2l6ZT0iMiIvPgorICAgICAgICA8L2RhdGFzdHlsZT4KKyAgICAgICAgPGRhdGFzdHlsZSBuYW1lPSJnbGluZSI+CisgICAgICAgICAgICA8cG9pbnRzdHlsZSBuYW1lPSJwb2ludCIgd2lkdGg9IjEwIiBoZWlnaHQ9IjEwIiBjb2xvcj0iMHg1OEZCNTkiIG9wYWNpdHk9IjEiIHNoYXBlPSJzcXVhcmUiIHN0cm9rZVN0eWxlPSIweDFEOTkxRCIgbGluZVdpZHRoPSIxIi8+CisgICAgICAgICAgICA8bGluZXN0eWxlIG5hbWU9ImxpbmUiIGNvbG9yPSIweENDQ0NDQyIgc2l6ZT0iMSIgb3BhY2l0eT0iMSIgdHlwZT0ic29saWQiLz4KKyAgICAgICAgICAgIDxyZWdpb25zdHlsZSBuYW1lPSJyZWdpb24iIGNvbG9yPSIweDMzQTAyQyIgb3BhY2l0eT0iMSIgZ3JhZGllbnQ9Im5vbmUiLz4KKyAgICAgICAgICAgIDxsYWJlbHN0eWxlIG5hbWU9ImxhYmVsIiBmb250PSJzZXJpZiIgZm9udHNpemU9IjkiIGZvbnRjb2xvcj0iMHgwMDAwMDAiIGxpbmVjb2xvcj0iMHgwMDAwMDAiIGZpbGxjb2xvcj0iMHhGRkZGQzEiIGxpbmVzaXplPSIxMiIgZm9udGFuZ2xlPSI5MCIvPgorICAgICAgICAgICAgPGxhYmVsc3R5bGUgbmFtZT0idGlwIiBmb250PSJzZXJpZiIgZm9udHNpemU9IjgiIGZvbnRjb2xvcj0iMHgwMDAwMDAiCisgICAgICAgICAgICAgICBsaW5lY29sb3I9IjB4MDAwMDAwIiBmaWxsY29sb3I9IjB4RkZGRkMxIiBsaW5lc2l6ZT0iMiIvPgorICAgICAgICA8L2RhdGFzdHlsZT4KKyAgICAgICAgPGRhdGFzdHlsZSBuYW1lPSJobGluZSI+CisgICAgICAgICAgICA8cG9pbnRzdHlsZSBuYW1lPSJwb2ludCIgd2lkdGg9IjEwIiBoZWlnaHQ9IjEwIiBjb2xvcj0iMHg1OEZCNTkiIG9wYWNpdHk9IjEiIHNoYXBlPSJzcXVhcmUiIHN0cm9rZVN0eWxlPSIweDFEOTkxRCIgbGluZVdpZHRoPSIxIi8+CisgICAgICAgICAgICA8bGluZXN0eWxlIG5hbWU9ImxpbmUiIGNvbG9yPSIweENDQ0NDQyIgc2l6ZT0iMSIgb3BhY2l0eT0iMSIgdHlwZT0ic29saWQiLz4KKyAgICAgICAgICAgIDxyZWdpb25zdHlsZSBuYW1lPSJyZWdpb24iIGNvbG9yPSIweEZCOUE5OSIgb3BhY2l0eT0iMSIgZ3JhZGllbnQ9Im5vbmUiLz4KKyAgICAgICAgICAgIDxsYWJlbHN0eWxlIG5hbWU9ImxhYmVsIiBmb250PSJzZXJpZiIgZm9udHNpemU9IjkiIGZvbnRjb2xvcj0iMHgwMDAwMDAiIGxpbmVjb2xvcj0iMHgwMDAwMDAiIGZpbGxjb2xvcj0iMHhGRkZGQzEiIGxpbmVzaXplPSIxMiIgZm9udGFuZ2xlPSI5MCIvPgorICAgICAgICAgICAgPGxhYmVsc3R5bGUgbmFtZT0idGlwIiBmb250PSJzZXJpZiIgZm9udHNpemU9IjgiIGZvbnRjb2xvcj0iMHgwMDAwMDAiCisgICAgICAgICAgICAgICBsaW5lY29sb3I9IjB4MDAwMDAwIiBmaWxsY29sb3I9IjB4RkZGRkMxIiBsaW5lc2l6ZT0iMiIvPgorICAgICAgICA8L2RhdGFzdHlsZT4KKyAgICAgICAgPGRhdGFzdHlsZSBuYW1lPSJpbGluZSI+CisgICAgICAgICAgICA8cG9pbnRzdHlsZSBuYW1lPSJwb2ludCIgd2lkdGg9IjEwIiBoZWlnaHQ9IjEwIiBjb2xvcj0iMHg1OEZCNTkiIG9wYWNpdHk9IjEiIHNoYXBlPSJzcXVhcmUiIHN0cm9rZVN0eWxlPSIweDFEOTkxRCIgbGluZVdpZHRoPSIxIi8+CisgICAgICAgICAgICA8bGluZXN0eWxlIG5hbWU9ImxpbmUiIGNvbG9yPSIweENDQ0NDQyIgc2l6ZT0iMSIgb3BhY2l0eT0iMSIgdHlwZT0ic29saWQiLz4KKyAgICAgICAgICAgIDxyZWdpb25zdHlsZSBuYW1lPSJyZWdpb24iIGNvbG9yPSIweEUzMUExQyIgb3BhY2l0eT0iMSIgZ3JhZGllbnQ9Im5vbmUiLz4KKyAgICAgICAgICAgIDxsYWJlbHN0eWxlIG5hbWU9ImxhYmVsIiBmb250PSJzZXJpZiIgZm9udHNpemU9IjkiIGZvbnRjb2xvcj0iMHgwMDAwMDAiIGxpbmVjb2xvcj0iMHgwMDAwMDAiIGZpbGxjb2xvcj0iMHhGRkZGQzEiIGxpbmVzaXplPSIxMiIgZm9udGFuZ2xlPSI5MCIvPgorICAgICAgICAgICAgPGxhYmVsc3R5bGUgbmFtZT0idGlwIiBmb250PSJzZXJpZiIgZm9udHNpemU9IjgiIGZvbnRjb2xvcj0iMHgwMDAwMDAiCisgICAgICAgICAgICAgICBsaW5lY29sb3I9IjB4MDAwMDAwIiBmaWxsY29sb3I9IjB4RkZGRkMxIiBsaW5lc2l6ZT0iMiIvPgorICAgICAgICA8L2RhdGFzdHlsZT4KKyAgICAgICAgPGRhdGFzdHlsZSBuYW1lPSJqbGluZSI+CisgICAgICAgICAgICA8cG9pbnRzdHlsZSBuYW1lPSJwb2ludCIgd2lkdGg9IjEwIiBoZWlnaHQ9IjEwIiBjb2xvcj0iMHg1OEZCNTkiIG9wYWNpdHk9IjEiIHNoYXBlPSJzcXVhcmUiIHN0cm9rZVN0eWxlPSIweDFEOTkxRCIgbGluZVdpZHRoPSIxIi8+CisgICAgICAgICAgICA8bGluZXN0eWxlIG5hbWU9ImxpbmUiIGNvbG9yPSIweENDQ0NDQyIgc2l6ZT0iMSIgb3BhY2l0eT0iMSIgdHlwZT0ic29saWQiLz4KKyAgICAgICAgICAgIDxyZWdpb25zdHlsZSBuYW1lPSJyZWdpb24iIGNvbG9yPSIweEZEQkY2RiIgb3BhY2l0eT0iMSIgZ3JhZGllbnQ9Im5vbmUiLz4KKyAgICAgICAgICAgIDxsYWJlbHN0eWxlIG5hbWU9ImxhYmVsIiBmb250PSJzZXJpZiIgZm9udHNpemU9IjkiIGZvbnRjb2xvcj0iMHgwMDAwMDAiIGxpbmVjb2xvcj0iMHgwMDAwMDAiIGZpbGxjb2xvcj0iMHhGRkZGQzEiIGxpbmVzaXplPSIxMiIgZm9udGFuZ2xlPSI5MCIvPgorICAgICAgICAgICAgPGxhYmVsc3R5bGUgbmFtZT0idGlwIiBmb250PSJzZXJpZiIgZm9udHNpemU9IjgiIGZvbnRjb2xvcj0iMHgwMDAwMDAiCisgICAgICAgICAgICAgICBsaW5lY29sb3I9IjB4MDAwMDAwIiBmaWxsY29sb3I9IjB4RkZGRkMxIiBsaW5lc2l6ZT0iMiIvPgorICAgICAgICA8L2RhdGFzdHlsZT4KKyAgICAgICAgPGRhdGFzdHlsZSBuYW1lPSJrbGluZSI+CisgICAgICAgICAgICA8cG9pbnRzdHlsZSBuYW1lPSJwb2ludCIgd2lkdGg9IjEwIiBoZWlnaHQ9IjEwIiBjb2xvcj0iMHg1OEZCNTkiIG9wYWNpdHk9IjEiIHNoYXBlPSJzcXVhcmUiIHN0cm9rZVN0eWxlPSIweDFEOTkxRCIgbGluZVdpZHRoPSIxIi8+CisgICAgICAgICAgICA8bGluZXN0eWxlIG5hbWU9ImxpbmUiIGNvbG9yPSIweENDQ0NDQyIgc2l6ZT0iMSIgb3BhY2l0eT0iMSIgdHlwZT0ic29saWQiLz4KKyAgICAgICAgICAgIDxyZWdpb25zdHlsZSBuYW1lPSJyZWdpb24iIGNvbG9yPSIweEZGN0YwMCIgb3BhY2l0eT0iMSIgZ3JhZGllbnQ9Im5vbmUiLz4KKyAgICAgICAgICAgIDxsYWJlbHN0eWxlIG5hbWU9ImxhYmVsIiBmb250PSJzZXJpZiIgZm9udHNpemU9IjkiIGZvbnRjb2xvcj0iMHgwMDAwMDAiIGxpbmVjb2xvcj0iMHgwMDAwMDAiIGZpbGxjb2xvcj0iMHhGRkZGQzEiIGxpbmVzaXplPSIxMiIgZm9udGFuZ2xlPSI5MCIvPgorICAgICAgICAgICAgPGxhYmVsc3R5bGUgbmFtZT0idGlwIiBmb250PSJzZXJpZiIgZm9udHNpemU9IjgiIGZvbnRjb2xvcj0iMHgwMDAwMDAiCisgICAgICAgICAgICAgICBsaW5lY29sb3I9IjB4MDAwMDAwIiBmaWxsY29sb3I9IjB4RkZGRkMxIiBsaW5lc2l6ZT0iMiIvPgorICAgICAgICA8L2RhdGFzdHlsZT4KKyAgICAgICAgPGRhdGFzdHlsZSBuYW1lPSJsbGluZSI+CisgICAgICAgICAgICA8cG9pbnRzdHlsZSBuYW1lPSJwb2ludCIgd2lkdGg9IjEwIiBoZWlnaHQ9IjEwIiBjb2xvcj0iMHg1OEZCNTkiIG9wYWNpdHk9IjEiIHNoYXBlPSJzcXVhcmUiIHN0cm9rZVN0eWxlPSIweDFEOTkxRCIgbGluZVdpZHRoPSIxIi8+CisgICAgICAgICAgICA8bGluZXN0eWxlIG5hbWU9ImxpbmUiIGNvbG9yPSIweENDQ0NDQyIgc2l6ZT0iMSIgb3BhY2l0eT0iMSIgdHlwZT0ic29saWQiLz4KKyAgICAgICAgICAgIDxyZWdpb25zdHlsZSBuYW1lPSJyZWdpb24iIGNvbG9yPSIweENBQjJENiIgb3BhY2l0eT0iMSIgZ3JhZGllbnQ9Im5vbmUiLz4KKyAgICAgICAgICAgIDxsYWJlbHN0eWxlIG5hbWU9ImxhYmVsIiBmb250PSJzZXJpZiIgZm9udHNpemU9IjkiIGZvbnRjb2xvcj0iMHgwMDAwMDAiIGxpbmVjb2xvcj0iMHgwMDAwMDAiIGZpbGxjb2xvcj0iMHhGRkZGQzEiIGxpbmVzaXplPSIxMiIgZm9udGFuZ2xlPSI5MCIvPgorICAgICAgICAgICAgPGxhYmVsc3R5bGUgbmFtZT0idGlwIiBmb250PSJzZXJpZiIgZm9udHNpemU9IjgiIGZvbnRjb2xvcj0iMHgwMDAwMDAiCisgICAgICAgICAgICAgICBsaW5lY29sb3I9IjB4MDAwMDAwIiBmaWxsY29sb3I9IjB4RkZGRkMxIiBsaW5lc2l6ZT0iMiIvPgorICAgICAgICA8L2RhdGFzdHlsZT4KKyAgICAgICAgPGRhdGFzdHlsZSBuYW1lPSJtbGluZSI+CisgICAgICAgICAgICA8cG9pbnRzdHlsZSBuYW1lPSJwb2ludCIgd2lkdGg9IjEwIiBoZWlnaHQ9IjEwIiBjb2xvcj0iMHg1OEZCNTkiIG9wYWNpdHk9IjEiIHNoYXBlPSJzcXVhcmUiIHN0cm9rZVN0eWxlPSIweDFEOTkxRCIgbGluZVdpZHRoPSIxIi8+CisgICAgICAgICAgICA8bGluZXN0eWxlIG5hbWU9ImxpbmUiIGNvbG9yPSIweENDQ0NDQyIgc2l6ZT0iMSIgb3BhY2l0eT0iMSIgdHlwZT0ic29saWQiLz4KKyAgICAgICAgICAgIDxyZWdpb25zdHlsZSBuYW1lPSJyZWdpb24iIGNvbG9yPSIweDZBM0Q5QSIgb3BhY2l0eT0iMSIgZ3JhZGllbnQ9Im5vbmUiLz4KKyAgICAgICAgICAgIDxsYWJlbHN0eWxlIG5hbWU9ImxhYmVsIiBmb250PSJzZXJpZiIgZm9udHNpemU9IjkiIGZvbnRjb2xvcj0iMHgwMDAwMDAiIGxpbmVjb2xvcj0iMHgwMDAwMDAiIGZpbGxjb2xvcj0iMHhGRkZGQzEiIGxpbmVzaXplPSIxMiIgZm9udGFuZ2xlPSI5MCIvPgorICAgICAgICAgICAgPGxhYmVsc3R5bGUgbmFtZT0idGlwIiBmb250PSJzZXJpZiIgZm9udHNpemU9IjgiIGZvbnRjb2xvcj0iMHgwMDAwMDAiCisgICAgICAgICAgICAgICBsaW5lY29sb3I9IjB4MDAwMDAwIiBmaWxsY29sb3I9IjB4RkZGRkMxIiBsaW5lc2l6ZT0iMiIvPgorICAgICAgICA8L2RhdGFzdHlsZT4KKyAgICA8L2RhdGFzdHlsZWxpc3Q+Cis8L2NoYXJ0c3R5bGU+ICAgIAorICAgIAorPC9saWJyYXJ5PiAKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9vbWNoYXJ0cy9vbWxlZ2VuZC5senggYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvb21jaGFydHMvb21sZWdlbmQubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkMzY1YjMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvb21jaGFydHMvb21sZWdlbmQubHp4CkBAIC0wLDAgKzEsMjgyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzwhLS0tCisgICAgQGFjY2VzcyBwdWJsaWMKKyAgICBAdG9waWMgQ29tcG9uZW50cworICAgIEBzdWJ0b3BpYyBDaGFydHMKKyAgLS0+Cis8bGlicmFyeT4KKworICAgIDwhLS0tCisgICAgIHNpbXBsZSBsZWdlbmQgY2xhc3MKKyAgICAgQGFjY2VzcyBwdWJsaWMKKyAgICAgIC0tPgorICAgIDxjbGFzcyBuYW1lPSJvbWxlZ2VuZCIgZXh0ZW5kcz0iZHJhd3ZpZXciID4KKyAgICAgICAgPCEtLS0gQGtleXdvcmQgcHJpdmF0ZSAtLT4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJ0b3BtYXJnaW4iIHR5cGU9Im51bWJlciIgdmFsdWU9IjAiLz4KKyAgICAgICAgPCEtLS0gQGtleXdvcmQgcHJpdmF0ZSAtLT4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJib3R0b21tYXJnaW4iIHR5cGU9Im51bWJlciIgdmFsdWU9IjAiLz4KKyAgICAgICAgPCEtLS0gQGtleXdvcmQgcHJpdmF0ZSAtLT4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJsZWZ0bWFyZ2luIiB0eXBlPSJudW1iZXIiIHZhbHVlPSIwIi8+CisgICAgICAgIDwhLS0tIEBrZXl3b3JkIHByaXZhdGUgLS0+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0icmlnaHRtYXJnaW4iIHR5cGU9Im51bWJlciIgdmFsdWU9IjAiLz4KKyAgICAgICAgPCEtLS0gQGtleXdvcmQgcHJpdmF0ZSAtLT4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJ2ZXJ0aWNhbGdhcCIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0iMSIvPgorICAgICAgICA8IS0tLSBJbmRpY2F0ZXMgaWYgbGVnZW5kIGJveCB3aWxsIGhhdmUgYSBib3JkZXIsIGRlZmF1bHQ6IHRydWUgLS0+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ibGVnZW5kYm9yZGVyIiB0eXBlPSJib29sZWFuIiB2YWx1ZT0idHJ1ZSIvPgorICAgICAgICA8IS0tLSBBbGxvdyB0byBzZXQgdGhlIGxpbmUgd2lkdGggZnJvbSB0aGUgbGVnZW5kIHRhZyAtLT4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJib3JkZXJXaWR0aCIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0iMSIvPgorICAgICAgICA8IS0tLSBBbGxvdyB0byBzZXQgdGhlIGNvbG9yIGxpbmUgZnJvbSB0aGUgbGVnZW5kIHRhZyAtLT4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJib3JkZXJDb2xvciIgdHlwZT0iY29sb3IiIHZhbHVlPSIweDAwMDAwMCIvPgorICAgICAgICA8IS0tLSBBbGxvdyB0byBzZXQgdGhlIGZpbGwgY29sb3IgZnJvbSB0aGUgbGVnZW5kIHRhZyAtLT4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJmaWxsQ29sb3IiIHR5cGU9ImNvbG9yIiB2YWx1ZT0iMHhGRkZGRkYiLz4KKyAgICAgICAgPCEtLS0gSW5kaWNhdGVzIGhvdyB0aGUgbGVnZW5kIGl0ZW1zIHdpbGwgYmUgZGlzcGxheWVkLCBkZWZhdWx0OiB2ZXJ0aWNhbCAtLT4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJkaXJlY3Rpb24iIHR5cGU9InN0cmluZyIgdmFsdWU9InZlcnRpY2FsIi8+ICAgICAKKyAgICAgICAgPCEtLS0gSW5kaWNhdGVzIHRoZSBzdHlsZSB3aWxsIGJlIGFwcGxpZWQgdGhvIHRoZSBib3JkZXIgbGVnZW5kIGJveCAtLT4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJzdHlsZUJvcmRlciIgdHlwZT0ic3RyaW5nIiB2YWx1ZT0ibnVsbCIvPgorICAgICAgICA8IS0tLSBJbmRpY2F0ZXMgdGhlIEZvbnQgd2lsbCBiZSB1c2VkIGluIHRoZSBsZWdlbmQgaXRlbSB0ZXh0IC0tPgorICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImxlZ2VuZEZvbnQiIHR5cGU9InN0cmluZyIgdmFsdWU9InNlcmlmIi8+CisgICAgICAgIDwhLS0tIEluZGljYXRlcyB0aGUgRm9udCBzaXplIHdpaWwgYmUgdXNlZCBpbiB0aGUgbGVnZW5kIGl0ZW0gdGV4dCwgZGVmYXVsdDogMTBweCAtLT4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJsZWdlbmRGb250c2l6ZSIgdHlwZT0ic2l6ZSIgdmFsdWU9IjYiLz4KKyAgICAgICAgPCEtLS0gSW5kaWNhdGVzIHRoZSBGb250IGNvbG9yIHdpaWwgYmUgdXNlZCBpbiB0aGUgbGVnZW5kIGl0ZW0gdGV4dCwgZGVmYXVsdDogYmxhY2sgLS0+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ibGVnZW5kRm9udGNvbG9yIiB0eXBlPSJjb2xvciIgdmFsdWU9IjB4MDAwMDAwIi8+CisgICAgICAgIDwhLS0tIEluZGljYXRlcyB3aGVyZSB0aGUgbGVnZW5kIGJveCB3aWxsIGJlIHBvc2l0aW9uZWQsIGRlZmF1bHQ6IHJpZ2h0IC0tPgorICAgICAgICA8YXR0cmlidXRlIG5hbWU9InBvc2l0aW9uIiB0eXBlPSJzdHJpbmciIHZhbHVlPSJyaWdodCIvPgorCisgICAgICAgIDwhLS0tIFRha2VzIHRoZSByZWxhdGlvbnNoaXAgd2l0aCB0aGUgY2hhcnQgLS0+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iY2hhcnQiIHR5cGU9ImV4cHJlc3Npb24iIHZhbHVlPSIke251bGx9Ii8+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iY2hhcnRDbGFzc05hbWUiIHR5cGU9InN0cmluZyIgdmFsdWU9IiR7bnVsbH0iLz4KKworICAgICAgICA8c2ltcGxlbGF5b3V0IGF4aXM9InkiLz4KKyAgICAgICAgCisgICAgICAgICAgICAgICAgCisgICAgICAgPCEtLS0gQGtleXdvcmRzIHByaXZhdGUKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0ZG9uZSIgcmVmZXJlbmNlPSJ0aGlzLmNoYXJ0Ij4KKyAgICAgICAgICAgIGlmKGNoYXJ0LmluaXRkb25lKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIHZhciBsQ2hhcnQgPSB0aGlzLmdldENoYXJ0SW5zdGFuY2UoKTsKKyAgICAgICAgICAgICAgICBpZiggbENoYXJ0ICE9IG51bGwgKSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hhcnRDbGFzc05hbWUgPSBsQ2hhcnQuY29uc3RydWN0b3IudGFnbmFtZTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhcGF0aC5zZXRGcm9tUG9pbnRlcihsQ2hhcnQuZ2V0RGF0YVNlcmllcygpLmdldExlZ2VuZCgpKTsKKyAgICAgICAgICAgICAgICB9ICAgCisgICAgICAgICAgICB9CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgIC0tPgorICAgICAgICAgCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgIAk8IVtDREFUQVsKKyAgICAgICAgCSAgICB2YXIgdE9iamVjdCA9IHBhcmVudC5nZXRPTURhdGFTZXJpZXMoKTsKKyAgICAgICAgCSAgICB0aGlzLmNoYXJ0ID0gcGFyZW50OworICAgICAgICAJICAgIAorICAgICAgICAJICAgIGZvciAodmFyIGk9MDtpPHRPYmplY3QudG9vbHRpcHNlcmllcy5sZW5ndGg7aSsrKSB7CisgICAgICAgIAkgICAgCQorICAgICAgICAJICAgIAluZXcgbHoub21sZWdlbmRpdGVtKHRoaXMudmlld2xlZ2VuZGJveCx7dEJveDp0T2JqZWN0LnRvb2x0aXBzZXJpZXNbaV19KTsKKyAgICAgICAgCSAgICAJCisgICAgICAgIAkgICAgfQorICAgICAgICAJICAgIAorICAgICAgICAJICAgIC8vdGhpcy5icmluZ1RvRnJvbnQoKTsKKyAgICAgICAgCSAgICB0aGlzLmJvcmRlcigpOworICAgICAgICAJXV0+CisgICAgICAgIDwvaGFuZGxlcj4gCisgICAgICAgIAorICAgICAgICA8IS0tIFRvcCBNYXJnaW4gLS0+CisgICAgICAgIDx2aWV3IGhlaWdodD0iJHtwYXJlbnQudG9wbWFyZ2lufSIgLz4KKyAgICAgICAgPCEtLSBMZWdlbmQgYm94IC0tPgorICAgICAgICA8dmlldyBuYW1lPSJ2aWV3bGVnZW5kYm94Ij4gICAgCisgICAgICAgICAgICA8c2ltcGxlbGF5b3V0IHNwYWNpbmc9IiR7cGFyZW50LnBhcmVudC52ZXJ0aWNhbGdhcH0iLz4gICAgICAgCisgICAgICAgICAgICA8bWV0aG9kIG5hbWU9ImluaXQiPgorICAgICAgICAgICAgICAgIDwhW0NEQVRBWworICAgIAorICAgICAgICAgICAgICAgICAgICBzdXBlci5pbml0KCk7CisgICAgICAgICAgICAgICAgICAgIGlmICggcGFyZW50LmRpcmVjdGlvbiA9PSAnaG9yaXpvbnRhbCcpeworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sYXlvdXRzWzBdLnNldEF0dHJpYnV0ZSgnYXhpcycsICd4Jyk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmxheW91dHNbMF0uc2V0QXR0cmlidXRlKCdheGlzJywgJ3knKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIF1dPgorICAgICAgICAgICAgPC9tZXRob2Q+ICAgIAorICAgICAgICAgICAgICAgICAgCisgICAgICAgIDwvdmlldz4KKyAgICAgICAgPCEtLSBCb3R0b20gTWFyZ2luIC0tPgorICAgICAgICA8dmlldyBoZWlnaHQ9IiR7cGFyZW50LmJvdHRvbW1hcmdpbn0iLz4gICAgICAgIAorCisKKyAgICAgICAgPCEtLS0gQGtleXdvcmRzIHByaXZhdGUgLS0+CisgICAgICAgIDxtZXRob2QgbmFtZT0iYm9yZGVyIj4KKyAgICAgICAgICAgIHZhciBsU3RhcnRYID0gTWF0aC5jZWlsKHRoaXMubGluZVdpZHRoLzIpOworICAgICAgICAgICAgdmFyIGxTdGFydFkgPSBNYXRoLmNlaWwodGhpcy5saW5lV2lkdGgvMik7CisgICAgICAgICAgICB2YXIgbE9yZ1dpZHRoID0gdGhpcy53aWR0aDsKKyAgICAgICAgICAgIHZhciBsT3JnSGVpZ2h0ID0gdGhpcy5oZWlnaHQ7CisKKyAgICAgICAgICAgIHRoaXMubGluZVdpZHRoID0gdGhpcy5ib3JkZXJXaWR0aDsKKyAgICAgICAgICAgIHRoaXMuc3Ryb2tlU3R5bGUgPSB0aGlzLmJvcmRlckNvbG9yOworICAgICAgICAgICAgdGhpcy5maWxsU3R5bGUgPSB0aGlzLmZpbGxDb2xvcjsKKworICAgICAgICAgICAgdGhpcy5iZWdpblBhdGgoKTsKKyAgICAgICAgICAgIHRoaXMubW92ZVRvKGxTdGFydFgsIGxTdGFydFkpOworICAgICAgICAgICAgdGhpcy5saW5lVG8odGhpcy53aWR0aCwgbFN0YXJ0WSk7CisgICAgICAgICAgICB0aGlzLmxpbmVUbyh0aGlzLndpZHRoLCB0aGlzLmhlaWdodCk7CisgICAgICAgICAgICB0aGlzLmxpbmVUbyhsU3RhcnRZLCB0aGlzLmhlaWdodCk7CisgICAgICAgICAgICB0aGlzLmxpbmVUbyhsU3RhcnRYLCBsU3RhcnRZKTsKKyAgICAgICAgICAgIHRoaXMuY2xvc2VQYXRoKCk7CisgICAgICAgICAgICB0aGlzLnN0cm9rZSgpOworICAgICAgICAgICAgdGhpcy5maWxsKCk7CisKKyAgICAgICAgICAgIC8vIFJlc3RvcmVzIHRoZSBvcmlnaW5hbCBkaW1lbnNpb25zIG9mIHRoZSBsZWdlbmQsIGR1ZSB0byB0aGUgY2hhbmdlcworICAgICAgICAgICAgLy8gdGhhdCB0aGUgbGluZVRvKCkncyBjYWxscyBwZXJmb3JtIG92ZXIgdGhlIGxlZ2VuZGJveCBkaW1lbnNpb25zLgorICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoICJ3aWR0aCIsIGxPcmdXaWR0aCApOworICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoICJoZWlnaHQiLCBsT3JnSGVpZ2h0ICk7CisgICAgICAgIDwvbWV0aG9kPgorCisgICAgICAgIDwhLS0tIEBrZXl3b3JkcyBwcml2YXRlIC0tPgorICAgICAgICA8bWV0aG9kIG5hbWU9ImdldENoYXJ0SW5zdGFuY2UiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLmNoYXJ0OworICAgICAgICBdXT4KKyAgICAgICAgPC9tZXRob2Q+CisKKyAgICAgICAgPCEtLS0gZXZlbnQgdGhhdCBhbGxvd3MgY3VzdG9tIGFjdGlvbiBmb3IgbW91c2Ugb3ZlciBldmVudAorICAgICAgICAgICAgQHBhcmFtIE51bWJlciBpdGVtOiBUaGUgaWRlbnRpZmllciBsZWdlbmQgaXRlbQorICAgICAgICAgLS0+CisgICAgICAgIDxldmVudCBuYW1lPSJvbml0ZW1tb3VzZW92ZXIiIC8+CisgICAgICAgIDwhLS0tIGV2ZW50IHRoYXQgYWxsb3dzIGN1c3RvbSBhY3Rpb24gZm9yIG1vdXNlIG91dCBldmVudAorICAgICAgICAgICAgQHBhcmFtIE51bWJlciBpdGVtOiBUaGUgaWRlbnRpZmllciBsZWdlbmQgaXRlbQorICAgICAgICAgLS0+CisgICAgICAgIDxldmVudCBuYW1lPSJvbml0ZW1tb3VzZW91dCIgLz4KKyAgICAgICAgPCEtLS0gZXZlbnQgdGhhdCBhbGxvd3MgY3VzdG9tIGFjdGlvbiBmb3IgbW91c2UgZG93biBldmVudAorICAgICAgICAgICAgQHBhcmFtIE51bWJlciBpdGVtOiBUaGUgaWRlbnRpZmllciBsZWdlbmQgaXRlbQorICAgICAgICAgLS0+CisgICAgICAgIDxldmVudCBuYW1lPSJvbml0ZW1tb3VzZWRvd24iIC8+CisgICAgICAgIDwhLS0tIGV2ZW50IHRoYXQgYWxsb3dzIGN1c3RvbSBhY3Rpb24gZm9yIG1vdXNlIHVwIGV2ZW50CisgICAgICAgICAgICBAcGFyYW0gTnVtYmVyIGl0ZW06IFRoZSBpZGVudGlmaWVyIGxlZ2VuZCBpdGVtCisgICAgICAgICAtLT4KKyAgICAgICAgPGV2ZW50IG5hbWU9Im9uaXRlbW1vdXNldXAiIC8+CisgICAgICAgIDwhLS0tIGV2ZW50IHRoYXQgYWxsb3dzIGN1c3RvbSBhY3Rpb24gZm9yIG1vdXNlIGNsaWNrIGV2ZW50CisgICAgICAgICAgICBAcGFyYW0gTnVtYmVyIGl0ZW06IFRoZSBpZGVudGlmaWVyIGxlZ2VuZCBpdGVtCisgICAgICAgICAtLT4KKyAgICAgICAgPGV2ZW50IG5hbWU9Im9uaXRlbW1vdXNlY2xpY2siIC8+CisgICAgICAgIAorICAgIDwvY2xhc3M+CisgICAgCisgICAgPCEtLS0gQGtleXdvcmQgcHJpdmF0ZQorICAgIGluZGl2aWR1YWwgbGVnZW5kIGl0ZW0gLS0+CisgICAgPGNsYXNzIG5hbWU9Im9tbGVnZW5kaXRlbSIgPgorICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImlkZW50aWZpZXIiIHR5cGU9Im51bWJlciIgdmFsdWU9IjAiLz4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJ0Qm94IiB0eXBlPSJzdHJpbmciIHZhbHVlPSIiLz4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJsaW5ldmlzaWJsZSIgdHlwZT0iYm9vbGVhbiIgdmFsdWU9ImZhbHNlIi8+CisgICAgICAgIDxzaW1wbGVsYXlvdXQgYXhpcz0ieCIgc3BhY2luZz0iJG9uY2V7cGFyZW50LnBhcmVudC5wYXJlbnQudmVydGljYWxnYXB9Ii8+CisgICAgICAgIDx2aWV3IG5hbWU9ImxlZnRtYXJnaW52aWV3IiB3aWR0aD0iJG9uY2V7cGFyZW50LnBhcmVudC5wYXJlbnQubGVmdG1hcmdpbn0iIC8+CisgICAgICAgIDxtYXJrZXIgbmFtZT0ibGVnZW5kbWFya2VyIj48L21hcmtlcj4gICAgCisgICAgICAgIDx0ZXh0IG5hbWU9ImxlZ2VuZHRleHQiIHJlc2l6ZT0idHJ1ZSIgdGV4dD0iJG9uY2V7IHBhcmVudC50Qm94IH0iIAorICAgICAgICAJICBmb250c2l6ZT0iJG9uY2V7cGFyZW50LnBhcmVudC5wYXJlbnQubGVnZW5kRm9udHNpemV9IgorICAgICAgICAgICAgICBmZ2NvbG9yPSIkb25jZXtwYXJlbnQucGFyZW50LnBhcmVudC5sZWdlbmRGb250Y29sb3J9IgorICAgICAgICAgICAgICBoZWlnaHQ9IiRvbmNle3BhcmVudC5wYXJlbnQucGFyZW50LmxlZ2VuZEZvbnRzaXplKzZ9Ij4KKyAgICAgICAgPC90ZXh0PgorICAgICAgICA8dmlldyBuYW1lPSJyaWdodG1hcmdpbnZpZXciIHdpZHRoPSIke3BhcmVudC5wYXJlbnQucGFyZW50LnJpZ2h0bWFyZ2lufSIvPgorICAgICAgICA8bWV0aG9kIG5hbWU9ImluaXQiPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgc3VwZXIuaW5pdCgpOworCisgICAgICAgICAgICAgICAgdmFyIGNvbG9ycyA9IG5ldyBBcnJheSgwKTsKKyAgICAgICAgICAgICAgICB2YXIgaW1hZ2VzUGF0aCA9IG5ldyBBcnJheSgwKTsKKyAgICAgICAgICAgICAgICB2YXIgbGVnZW5kaXRlbXMgPSBwYXJlbnQuc3Vidmlld3M7CisgICAgICAgICAgICAgICAgdmFyIGxlZ2VuZG1hcmtlcml0ZW07CisKKyAgICAgICAgICAgICAgICBpZiggcGFyZW50LnBhcmVudC5jaGFydENsYXNzTmFtZSA9PSAicGllY2hhcnQiICkgeworICAgICAgICAgICAgICAgICAgICB2YXIgYXJyUGllY2VzID0gcGFyZW50LnBhcmVudC5nZXRDaGFydEluc3RhbmNlKCkucGxvdGFyZWEuYXJyUGllUGllY2VzOworICAgICAgICAgICAgICAgICAgICB2YXIgcGllUGllY2U7CisKKyAgICAgICAgICAgICAgICAgICAgZm9yKHZhciBpID0gMDsgaSA8IGFyclBpZWNlcy5sZW5ndGg7IGkrKyl7IAorICAgICAgICAgICAgICAgICAgICAgICAgcGllUGllY2UgPSBhcnJQaWVjZXNbaV07ICAKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yc1tpXSA9IHBpZVBpZWNlLnN0eWxlLnJlZ2lvbi5jb2xvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBsZWdlbmRpdGVtc1tpXSAhPSBudWxsICl7ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZ2VuZG1hcmtlcml0ZW0gPSBsZWdlbmRpdGVtc1tpXS5sZWdlbmRtYXJrZXI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVnZW5kbWFya2VyaXRlbS5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgcGllUGllY2Uuc3R5bGUucG9pbnQud2lkdGgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZ2VuZG1hcmtlcml0ZW0uc2V0QXR0cmlidXRlKCdoZWlnaHQnLCBwaWVQaWVjZS5zdHlsZS5wb2ludC5oZWlnaHQpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHRvcHNlcmllcyA9IHBhcmVudC5wYXJlbnQuZ2V0Q2hhcnRJbnN0YW5jZSgpLmdldERhdGFTZXJpZXMoKTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG51bVNlcmllcyA9IHRvcHNlcmllcy5nZXROdW1EYXRhU2VyaWVzKCk7CisgICAgICAgICAgICAgICAgICAgIGZvcih2YXIgaSA9IDA7IGkgPCBudW1TZXJpZXM7IGkrKyl7IAorICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGxkYXRhc3R5bGUgPSBwYXJlbnQucGFyZW50LmdldENoYXJ0SW5zdGFuY2UoKS5zdHlsZS5nZXREYXRhU3R5bGUoaSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIHBhcmVudC5wYXJlbnQuY2hhcnRDbGFzc05hbWUgPT0gImxpbmVjaGFydCIgKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yc1tpXSA9IGxkYXRhc3R5bGUubGluZS5jb2xvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGxkYXRhc3R5bGUucmVnaW9uLmltYWdlICE9IG51bGwgKXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1hZ2VzUGF0aFtpXSA9IGxkYXRhc3R5bGUucmVnaW9uLmltYWdlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yc1tpXSA9IGxkYXRhc3R5bGUucmVnaW9uLmNvbG9yOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICggbGVnZW5kaXRlbXNbaV0gIT0gbnVsbCApeyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZWdlbmRtYXJrZXJpdGVtID0gbGVnZW5kaXRlbXNbaV0ubGVnZW5kbWFya2VyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZ2VuZG1hcmtlcml0ZW0uc2V0QXR0cmlidXRlKCd3aWR0aCcsIGxkYXRhc3R5bGUucG9pbnQud2lkdGgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlZ2VuZG1hcmtlcml0ZW0uc2V0QXR0cmlidXRlKCdoZWlnaHQnLCBsZGF0YXN0eWxlLnBvaW50LmhlaWdodCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgbGVnZW5kaXRlbXMubGVuZ3RoOyBpKyspeworICAgICAgICAgICAgICAgICAgICB2YXIgbGVnZW5kaXRlbSA9IGxlZ2VuZGl0ZW1zW2ldOworICAgICAgICAgICAgICAgICAgICBsZWdlbmRtYXJrZXJpdGVtID0gbGVnZW5kaXRlbS5sZWdlbmRtYXJrZXI7CisgICAgICAgICAgICAgICAgICAgIGlmICggaW1hZ2VzUGF0aFtpXSAhPSBudWxsICl7CisgICAgICAgICAgICAgICAgICAgICAgICBsZWdlbmRtYXJrZXJpdGVtLnNldFNvdXJjZShpbWFnZXNQYXRoW2ldKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxlZ2VuZG1hcmtlcml0ZW0uc2V0QXR0cmlidXRlKCdvcGFjaXR5JywgbGRhdGFzdHlsZS5yZWdpb24ub3BhY2l0eSk7CisgICAgICAgICAgICAgICAgICAgICAgICBsZWdlbmRtYXJrZXJpdGVtLnNldEF0dHJpYnV0ZSggInZpc2libGUiLCB0cnVlICk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgbGVnZW5kbWFya2VyaXRlbS5zZXRBdHRyaWJ1dGUoJ2JnY29sb3InLCBjb2xvcnNbaV0pOworICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnaWRlbnRpZmllcicsIGkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgPCEtLS0gY2FsbHMgdGhlIG1ldGhvZCB0aGF0IGltcGxlbWVudHMgdGhlIGFjdG9uCisgICAgICAgICAgICBAa2V5d29yZCBwcml2YXRlLS0+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdmVyIj4KKyAgICAgICAgCXRoaXMubGVnZW5kdGV4dC5zZXRBdHRyaWJ1dGUoImZvbnRzdHlsZSIsImJvbGQiKTsKKyAgICAgICAgICAgIHBhcmVudC5jbGFzc3Jvb3Qub25pdGVtbW91c2VvdmVyLnNlbmRFdmVudCh0aGlzKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8IS0tLSBjYWxscyB0aGUgbWV0aG9kIHRoYXQgaW1wbGVtZW50cyB0aGUgYWN0b24KKyAgICAgICAgICAgIEBrZXl3b3JkIHByaXZhdGUtLT4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZW91dCI+CisgICAgICAgIAl0aGlzLmxlZ2VuZHRleHQuc2V0QXR0cmlidXRlKCJmb250c3R5bGUiLCJwbGFpbiIpOworICAgICAgICAgICAgcGFyZW50LmNsYXNzcm9vdC5vbml0ZW1tb3VzZW91dC5zZW5kRXZlbnQodGhpcyk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPCEtLS0gY2FsbHMgdGhlIG1ldGhvZCB0aGF0IGltcGxlbWVudHMgdGhlIGFjdG9uCisgICAgICAgICAgICBAa2V5d29yZCBwcml2YXRlLS0+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2Vkb3duIj4KKyAgICAgICAgICAgIHBhcmVudC5jbGFzc3Jvb3Qub25pdGVtbW91c2Vkb3duLnNlbmRFdmVudCh0aGlzKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8IS0tLSBjYWxscyB0aGUgbWV0aG9kIHRoYXQgaW1wbGVtZW50cyB0aGUgYWN0b24KKyAgICAgICAgICAgIEBrZXl3b3JkIHByaXZhdGUtLT4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZXVwIj4KKyAgICAgICAgICAgIHBhcmVudC5jbGFzc3Jvb3Qub25pdGVtbW91c2V1cC5zZW5kRXZlbnQodGhpcyk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPCEtLS0gY2FsbHMgdGhlIG1ldGhvZCB0aGF0IGltcGxlbWVudHMgdGhlIGFjdG9uCisgICAgICAgICAgICBAa2V5d29yZCBwcml2YXRlLS0+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgcGFyZW50LmNsYXNzcm9vdC5vbml0ZW1tb3VzZWNsaWNrLnNlbmRFdmVudCh0aGlzKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgIDwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9vbWNoYXJ0cy9vbXBpZWNoYXJ0Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9vbWNoYXJ0cy9vbXBpZWNoYXJ0Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjQ4MTMzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL29tY2hhcnRzL29tcGllY2hhcnQubHp4CkBAIC0wLDAgKzEsMTA3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzwhLS0tCisgICAgQGFjY2VzcyBwdWJsaWMKKyAgICBAdG9waWMgQ29tcG9uZW50cworICAgIEBzdWJ0b3BpYyBDaGFydHMKKyAgLS0+Cis8bGlicmFyeT4KKyAgICAKKyAgICA8IS0tLQorICAgICAgICAgIEEgcGllIGNoYXJ0IHJlcHJlc2VudHMgYSBjaGFydCB0aGF0IGlzIGRpc3BsYXllZCBpbiB0aGUgMkQKKyAgICAgICAgICBwb2xhciBwbGFuZS4gVGhpcyBjbGFzcyBpbmhlcml0cyBpbW1lZGlhdGVseSBmcm9tIGNoYXJ0IGNsYXNzCisgICAgICAgICAgYW5kIGNhbiBiZSBpbnN0YW50aWF0ZWQgZGlyZWN0bHkuIChXYXJuaW5nOiBPZiBiZXRhIHF1YWxpdHkuKQorICAgICAgICAgIEBhY2Nlc3MgcHVibGljCisgICAgICAgICAgLS0+CisgICAgPGNsYXNzIG5hbWU9Im9tcGllY2hhcnQiIGV4dGVuZHM9ImNoYXJ0Ij4KKworICAgICAgICA8IS0tLSBAa2V5d29yZHMgcHJpdmF0ZSAtLT4KKyAgICAgICAgPG1ldGhvZCBuYW1lPSJpbml0Ij4KKyAgICAgICAgICAgIHBsb3RhcmVhID0gdGhpcy5nZXROb2RlT2ZDbGFzcygicGllY2hhcnRwbG90YXJlYSIpOworICAgICAgICAgICAgX2RhdGFsYWJlbHBvb2wgPSB0aGlzLmNyZWF0ZUxhYmVsVmlld3Nwb29sKCk7CisgICAgICAgICAgICBzdXBlci5pbml0KCk7ICAgICAgICAgICAgCisgICAgICAgIDwvbWV0aG9kPiAgCisgICAgICAgIAorICAgICAgICA8IS0tLSBSZW5kZXJzIHRoZSBwbG90IGFyZWEgd2hpY2ggaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIHBpZWNoYXJ0cGxvdGFyZWEgCisgICAgICAgICAgICAgIGNsYXNzLiBUaGUgcGxvdCBhcmVhIHJlcXVpcmVzIHRvIHJlYWQgYSBncm91cCBvZiB0d28gZGF0YSBzZXJpZXMsIG9uZQorICAgICAgICAgICAgICBmb3IgdGhlIGdyb3VwcyB0aGF0IGFyZSByZXByZXNlbnRlZCBieSB0aGUgcGllIHNsaWNlcyBhbmQgdGhlIHNlY29uZAorICAgICAgICAgICAgICBmb3IgdGhlaXIgdmFsdWVzLiAtLT4KKyAgICAgICAgPG1ldGhvZCBuYW1lPSJyZW5kZXJQbG90QXJlYSI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgc3VwZXIucmVuZGVyUGxvdEFyZWEoKTsKKyAgICAgICAgICAgIHBsb3RhcmVhLmNsZWFyKCk7CisKKyAgICAgICAgICAgIHZhciB0b3BzZXJpZXMgPSB0aGlzLmdldE9NRGF0YVNlcmllcygpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvL3ZhciBudW1TZXJpZXMgPSB0b3BzZXJpZXMuZ2V0TnVtRGF0YVNlcmllcygpOworICAgICAgICAgICAgdmFyIG51bVNlcmllcyA9IDE7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciB4c2VyaWVzID0gdG9wc2VyaWVzLnhzZXJpZXM7CisgICAgICAgICAgICB2YXIgeXNlcmllcyA9IHRvcHNlcmllcy55c2VyaWVzOworICAgICAgICAgICAgdmFyIHRvb2x0aXBzZXJpZXMgPSB0b3BzZXJpZXMudG9vbHRpcHNlcmllczsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgbnVtU2VyaWVzOyBpKyspCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgcGxvdGFyZWEucmVuZGVyU2VyaWVzKHhzZXJpZXMsIHlzZXJpZXMsIHRvb2x0aXBzZXJpZXMpOyAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICggdGhpcy5kYXRhbGFiZWxFbmFibGVkICl7CisgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJEYXRhTGFiZWxzKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgXV0+CisgICAgICAgIDwvbWV0aG9kPgorICAgICAgICAKKyAgICAgICAgPCEtLS0gUmVuZGVycyB0aGUgbGFiZWxzIHRoYXQgZGlzcGxheSB0aGUgdmFsdWVzIG9mIHRoZSBkYXRhIHNlcmllcy4gLS0+CisgICAgICAgIDxtZXRob2QgbmFtZT0icmVuZGVyRGF0YUxhYmVscyI+CisgICAgICAgIAorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgX2RhdGFsYWJlbHBvb2wucmVjbGFpbUFsbCgpOworICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgdmFyIGFyclBpZVBpZWNlcyA9IHRoaXMucGxvdGFyZWEuYXJyUGllUGllY2VzOworICAgICAgICAgICAgICAgIHZhciB0b3BzZXJpZXMgPSB0aGlzLmdldE9NRGF0YVNlcmllcygpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHZhciB4c2VyaWVzID0gdG9wc2VyaWVzLnhzZXJpZXM7CisgICAgICAgICAgICAgICAgdmFyIHlzZXJpZXMgPSB0b3BzZXJpZXMueXNlcmllczsKKyAgICAgICAgICAgICAgICB2YXIgdG9vbHRpcHNlcmllcyA9IHRvcHNlcmllcy50b29sdGlwc2VyaWVzOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJhcnJQaWVQaWVjZXMubGVuZ3RoICIsYXJyUGllUGllY2VzLmxlbmd0aCk7CisKKyAgICAgICAgICAgICAgICBmb3IodmFyIGkgPSAwOyBpIDwgYXJyUGllUGllY2VzLmxlbmd0aDsgaSsrKXsgCisgICAgICAgICAgICAgICAgICAgIHBpZVBpZWNlID0gYXJyUGllUGllY2VzW2ldOyAgCisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICB2YXIgbGJsID0gX2RhdGFsYWJlbHBvb2wuZ2V0VmlldygpOworICAgICAgICAgICAgICAgICAgICB2YXIgbGRhdGFzdHlsZSA9IHBpZVBpZWNlLnN0eWxlOworICAgICAgICAgICAgICAgICAgICBsYmwuc2V0QXR0cmlidXRlKCdzdHlsZScsIGxkYXRhc3R5bGUubGFiZWwpOworICAgICAgICAgICAgICAgICAgICBsYmwucmVuZGVyKHlzZXJpZXNbaV0pOworICAgICAgICAgICAgICAgICAgICBwaWVQaWVjZS5yZW5kZXJMYWJlbChsYmwpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF1dPgorICAgICAgICAgICAgICAgIAorICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgCisgICAgICAgIDwhLS0tIFRoZSBwbG90IGFyZWEgd2hlcmUgdGhlIHBpZSBzbGljZXMgYXJlIHJlbmRlcmVkIC0tPgorICAgICAgICA8cGllY2hhcnRwbG90YXJlYSBuYW1lPSJwbG90YXJlYSIgeD0iNTAiIHk9IjIwIiB3aWR0aD0iNTAwIiBoZWlnaHQ9IjMwMCI+CisgICAgICAgIAkKKyAgICAgICAgPC9waWVjaGFydHBsb3RhcmVhPgorCisgICAgPC9jbGFzcz4KKyAgICAKKzwvbGlicmFyeT4gCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcGFuZWwvYmFzZUJvdW5kaW5nQm9yZGVyVmlldy5senggYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcGFuZWwvYmFzZUJvdW5kaW5nQm9yZGVyVmlldy5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNlMGNkYgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9wYW5lbC9iYXNlQm91bmRpbmdCb3JkZXJWaWV3Lmx6eApAQCAtMCwwICsxLDQ5OCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9ImJhc2VCb3VuZGluZ0JvcmRlclZpZXciIGV4dGVuZHM9InZpZXciIHdpZHRoPSIyNTAiIHk9IjEwMCIgaGVpZ2h0PSI0MDAiCisJb25tb3VzZWRvd249InRoaXMuX3N0YXJ0RHJhZ1N0YXRlKHRoaXMpIiBvbm1vdXNldXA9InRoaXMuX3JlbW92ZURyYWdTdGF0ZSh0aGlzKSIgPgorCQorCTwhLS0tIENhbiB0aGlzIEJveCBiZSBkb2NrZWQgdG8gb3RoZXJzIGFuZCAKKwkJCXRoZSB3aWR0aC9oZWlnaHQgb2YgcGFyZW50IGNvbXBvZW50IGJhcnJpZXIgLS0+CisJPGF0dHJpYnV0ZSBuYW1lPSJkb2NraW5nIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisJCisJPCEtLS0gSGFyZCB0byBleHBsYWluIGJ1dCBpdHMgY2xlYXIgaWYgeW91IHBsYXkgYXJvdW5kIAorCQl3aXRoIHRoYXQuIEl0cyB0aGUgbnVtYmVyIG9mIG1pbmltdW0gcGl4ZWxzIGJlZm9yZSAKKwkJdGhlICJkb2NraW5nIiBlZmZlY3Qgd2lsbCBiZSB0aGVyZSAtLT4KKwk8YXR0cmlidXRlIG5hbWU9ImRvY2tpbmdiYXJyaWVyIiB2YWx1ZT0iMTUiIHR5cGU9Im51bWJlciIgLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9ImJvdW5kaW5nYmFycmllciIgdmFsdWU9IjIiIHR5cGU9Im51bWJlciIgLz4KKwkKKwk8IS0tLSB0aGUgRXZlbnQgd2lsbCBiZSB0aHJvd24gaWYgeW91IGNsb3NlIHRoZSBCb3ggLS0+CisJPGV2ZW50IG5hbWU9Im9uY2xvc2UiIC8+CisJCisJPCEtLS0gZXh0cmEgRXZlbnQgZm9yIHRoaXMga2luZCBvZiB2aWV3CisJCXdpbGwgYmUgdGhyb3duIGJlZm9yZSB0aGUgdmlldyBpbml0cyBuZXcgLS0+CisJPGV2ZW50IG5hbWU9InByZWNsb3NlIiAvPgorCQorCTwhLS0tQGtleXdvcmRzIHByaXZhdGUgdGhlIGxpc3Qgb2YgY29ubmVjdGVkIHZpZXdzIC0tPgorCTxhdHRyaWJ1dGUgbmFtZT0iZG9ja2luZ2xpc3QiIHZhbHVlPSJudWxsIiAvPgorCQorCTwhLS0tIEBrZXl3b3JkcyBwcml2YXRlIHRlbXAtb2xkZXIgb2YgeC1kaXN0YW5jZSB0byBkb2NrZWQtQm94ICAtLT4KKwk8YXR0cmlidXRlIG5hbWU9InRlbXBYZGlzdGFuY2UiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisKKwk8IS0tLSBAa2V5d29yZHMgcHJpdmF0ZSB0ZW1wLW9sZGVyIG9mIHktZGlzdGFuY2UgdG8gZG9ja2VkLUJveCAgLS0+CisJPGF0dHJpYnV0ZSBuYW1lPSJ0ZW1wWWRpc3RhbmNlIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorCQorCTwhLS0tIEBrZXl3b3JkcyBwcml2YXRlIGlzIHRoZSBCb3ggbWluaW1pemVkICAtLT4KKwk8YXR0cmlidXRlIG5hbWU9Imlzb3BlbiIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CisJCisJPCEtLS0gQGtleXdvcmRzIHByaXZhdGUgaXMgdGhlIEJveCBtaW5pbWl6ZWQgIC0tPgorCTxhdHRyaWJ1dGUgbmFtZT0ib3BlbiIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CQorCQorCTxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudEJvdW5kaW5nQm94IiB2YWx1ZT0ibnVsbCIgLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9InZlcnRpY2FsQ2xhc3NBY3RpdmUiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKwk8YXR0cmlidXRlIG5hbWU9ImFjdGl2YXRpb25DbGFzc0JvdW5kaW5nIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJhY3RpdmF0aW9uVkNsYXNzQm91bmRpbmciIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9InRvcENsYXNzUGFuZWwiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwk8YXR0cmlidXRlIG5hbWU9ImJvdHRvbUNsYXNzUGFuZWwiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwk8YXR0cmlidXRlIG5hbWU9InJpZ2h0Q2xhc3NQYW5lbCIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0ibGVmdENsYXNzUGFuZWwiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwkKKwk8IS0tIHRoaXMgaXMgdGhlIFdpZHRoIGFuZCBIZWlnaHQgb2YgdGhlIHZlcnRpY2FsIGFuZCBob3Jpem9udGFsIGNsYXNzCisJCWl0IGNhbiBoYXZlIGRpZmZlcmVudCB2YWx1ZXMgLS0+CisJPGF0dHJpYnV0ZSBuYW1lPSJoV2lkdGgiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJoSGVpZ2h0IiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0idldpZHRoIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0idkhlaWdodCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKwkKKwk8IS0tLSBAa2V5d29yZHMgcHJpdmF0ZSAgLS0+CisJPGF0dHJpYnV0ZSBuYW1lPSJpbml0aGVpZ2h0IiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0iaGFzc2hhZG93IiB2YWx1ZT0idHJ1ZSIgdHlwZT0iYm9vbGVhbiIgLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9Im1vdXNldHJhY2tlcl9kZWwiIHZhbHVlPSIkb25jZXsgbmV3IEx6RGVsZWdhdGUodGhpcywgJ2NoZWNrU3RhdGljQm9yZGVycycgKX0iIC8+CisJCisJPCEtLS0gQGtleXdvcmRzIHByaXZhdGUgc3RvcmUgaW5pdGlhbCBoZWlnaHQgc28gdG9nZ2xlb3BlbiBjYW4gcmVzZXQgaGVpZ2h0ICAtLT4KKyAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgIAl0aGlzLmluaXRoZWlnaHQ9dGhpcy5oZWlnaHQ7CisJCS8vLy9EZWJ1Zy53cml0ZSgidGhpcy5pc29wZW46ICIsdGhpcy5pc29wZW4pOworCQlpZiAoIXRoaXMub3BlbikgdG9nZ2xlb3BlbigpOworICAgIAlpZiAodGhpcy5oYXNzaGFkb3cpIHRoaXMuc2V0U2hhZG93KCk7IAorICAgIDwvaGFuZGxlcj4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InNldFNoYWRvdyIgYXJncz0iYm9vbCI+CisgICAgICAgIHRoaXMuaGFzc2hhZG93ID0gYm9vbDsKKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgIGlmICh0aGlzLmlzaW5pdGVkKXsKKyAgICAgICAgICAgIHRoaXMubm9ybWFsTUMgPSB0aGlzLmdldERpc3BsYXlPYmplY3QoKTsKKyAgICAgICAgICAgIC8vRGVidWcud3JpdGUodGhpcy5ub3JtYWxNQyk7CisgICAgICAgICAgICAvLy8vRGVidWcud3JpdGUoInRoaXMubm9ybWFsTUM6ICIsdGhpcy5ub3JtYWxNQyk7CisgICAgICAgICAgICAvLy8vRGVidWcud3JpdGUoInRoaXM6ICIsdGhpcyk7CisgICAgICAgICAgIAl0aGlzLmRpc3BsYWNlbWVudE1hcCA9IG5ldyBmbGFzaC5maWx0ZXJzLkRyb3BTaGFkb3dGaWx0ZXIoKTsKKyAgICAgICAgICAgIHRoaXMubm9ybWFsTUMuZmlsdGVycyA9IFt0aGlzLmRpc3BsYWNlbWVudE1hcF07CisgICAgICAgIH0KKyAgICAgICAgXV0+ICAgICAgICAgICAgICAKKyAgICA8L21ldGhvZD4JCQorCQorCTxtZXRob2QgbmFtZT0iY2xvc2UiPgorCQlpZiAodGhpcy5vbmNsb3NlKSB0aGlzLm9uY2xvc2Uuc2VuZEV2ZW50KCk7CisJCXRoaXMuZG9EZXN0cm95KCk7CisJPC9tZXRob2Q+CisJCisJPG1ldGhvZCBuYW1lPSJ0b2dnbGVvcGVuIj4KKwkJLy8vL0RlYnVnLndyaXRlKCJ0aGlzLmlzb3BlbiIsdGhpcy5pc29wZW4pOworCQl0aGlzLnNldEF0dHJpYnV0ZSgnaXNvcGVuJywhdGhpcy5pc29wZW4pOworCQlpZiAodGhpcy5pc29wZW4peworCQkJX2NhbGNkb2NraW5nTGlzdCgpOworCQkJZm9yICh2YXIgZWcgaW4gdGhpcy5kb2NraW5nbGlzdCl7CisJCQkJaWYodGhpcy5kb2NraW5nbGlzdFtlZ10uZG9ja2luZyl7CisJCQkJCS8vLy9EZWJ1Zy53cml0ZSgidGhpcy5kb2NraW5nbGlzdFtlZ106ICIsdGhpcy5kb2NraW5nbGlzdFtlZ10udGl0bGUpOworCQkJCQkvLy8vRGVidWcud3JpdGUoIm9wZW4gbmV3IHkiLHRoaXMueSt0aGlzLmluaXRoZWlnaHQpOworCQkJCQl0aGlzLmRvY2tpbmdsaXN0W2VnXS50b2dnbGVPcGVuQnlQYXJlbnQodGhpcy5pbml0aGVpZ2h0LTIyKTsKKwkJCQkJdGhpcy5kb2NraW5nbGlzdFtlZ10uc2V0QXR0cmlidXRlKCd5Jyx0aGlzLnkrdGhpcy5pbml0aGVpZ2h0KTsKKwkJCQkJCisJCQkJfQorCQkJfQkJCQorCQkJdGhpcy5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsdGhpcy5pbml0aGVpZ2h0KTsKKwkJfSBlbHNlIHsKKwkJCV9jYWxjZG9ja2luZ0xpc3QoKTsKKwkJCWZvciAodmFyIGVnIGluIHRoaXMuZG9ja2luZ2xpc3QpeworCQkJCWlmKHRoaXMuZG9ja2luZ2xpc3RbZWddLmRvY2tpbmcpeworCQkJCQkvLy8vRGVidWcud3JpdGUoInRoaXMuZG9ja2luZ2xpc3RbZWddOiAiLHRoaXMuZG9ja2luZ2xpc3RbZWddLnRpdGxlKTsKKwkJCQkJdGhpcy5kb2NraW5nbGlzdFtlZ10udG9nZ2xlT3BlbkJ5UGFyZW50KC0odGhpcy5pbml0aGVpZ2h0LTIyKSk7CisJCQkJCXRoaXMuZG9ja2luZ2xpc3RbZWddLnNldEF0dHJpYnV0ZSgneScsdGhpcy55KzIyKTsKKwkJCQl9CisJCQl9CQorCQkJdGhpcy5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsMjIpOwkJCisJCX0KKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9InRvZ2dsZU9wZW5CeVBhcmVudCIgYXJncz0iY2hhbmdlWSI+CisJCS8vLy9EZWJ1Zy53cml0ZSgiKysrKysgdG9nZ2xlT3BlbkJ5UGFyZW50ICsrKysrIGNoYW5nZVk6ICIsdGhpcy50aXRsZSxjaGFuZ2VZKTsKKwkJdmFyIHRlbXBMaXN0PW5ldyBBcnJheSgpOworCQk8IVtDREFUQVsKKwkJLy9jaGVjayBmb3IgZG9ja2FibGUgc3R1ZmYgd2hpY2ggaXMgY29ubmVjdGVkIHRvIHRoaXMgQm94CisJCWZvciAodmFyIGVnIGluIHRoaXMucGFyZW50LnN1YnZpZXdzKXsKKwkJCS8vY2hlY2sgdGhhdCB5b3UgZG8gbm90IGNhbGMgd2l0aCB5b3Vyc2VsZgorCQkJaWYgKHRoaXMucGFyZW50LnN1YnZpZXdzW2VnXSE9dGhpcyAmJiB0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10uZG9ja2luZyl7CisJCQkJLy8gdGhlcmUgYXJlIDQgY2FzZXMgd2hpY2ggaGF2ZSB0byBiZSBwcm9vZmVkIHRvIGNoZWNrIGV2ZXJ5IHBvc3NpYmxlIHNpdHVhdGlvbgorCQkJCXZhciBwcm9vZj1mYWxzZTsKKwkJCQkvLy8vRGVidWcud3JpdGUoImZvdW5kIHNvbWU6ICIsdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLnRpdGxlKTsKKwkJCQkvL3RvcCBib3gtYm9yZGVyCisJCQkJaWYgICggKCAoKHRoaXMueSt0aGlzLmhlaWdodCktdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLnkpIDwgMSApICYmICggKCh0aGlzLnkrdGhpcy5oZWlnaHQpLXRoaXMucGFyZW50LnN1YnZpZXdzW2VnXS55KSA+IC0xICkgJiYgKCAodGhpcy54K3RoaXMud2lkdGgpID4gdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLnggKSAgJiYgKCB0aGlzLnggPCAodGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLngrdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLndpZHRoKSApICl7CisJCQkJCXByb29mPXRydWU7CisJCQkJfQorCQkJCQkKKwkJCQlpZiAocHJvb2YpIHRlbXBMaXN0LnB1c2godGhpcy5wYXJlbnQuc3Vidmlld3NbZWddKTsKKwkJCX0KKwkJfQorCQldXT4KKwkJLy8vL0RlYnVnLndyaXRlKCJ0ZW1wTGlzdC5sZW5ndGg6ICIsdGVtcExpc3QubGVuZ3RoKTsKKwkJaWYgKHRlbXBMaXN0Lmxlbmd0aCE9MCl7CisJCQlmb3IgKHZhciBlZyBpbiB0ZW1wTGlzdCl7CisJCQkJaWYodGVtcExpc3RbZWddLmRvY2tpbmcpeworCQkJCQkvLy8vRGVidWcud3JpdGUoInRvZ2dsZU9wZW5CeVBhcmVudCAxIFtlZ10sY2hhbmdlWTogIix0ZW1wTGlzdFtlZ10udGl0bGUsY2hhbmdlWSk7CisJCQkJCXRlbXBMaXN0W2VnXS50b2dnbGVPcGVuQnlQYXJlbnQoY2hhbmdlWSk7CisJCQkJCXRlbXBMaXN0W2VnXS5zZXRBdHRyaWJ1dGUoJ3knLHRlbXBMaXN0W2VnXS55K2NoYW5nZVkpOworCQkJCX0KKwkJCX0JCisJCX0KKwkJCisJPC9tZXRob2Q+CisJCisJPCEtLS0gQGtleXdvcmRzIHByaXZhdGUgIC0tPgorCTxtZXRob2QgbmFtZT0iX3JlbW92ZURyYWdTdGF0ZSIgYXJncz0ib2JqIj4KKwkJLy9JdCdzIGltcG9ydGFudCB0byByZW1vdmUgdGhlIGRyYWdnZXIgYW5kIGRvIGRvY2tpbmcgc3R1ZmYgYmVmb3JlIHlvdSBjaGVjayBmb3IgY29ubmVuY3RlZCBCb3hlcworCQlkcmFnZ2VyLnJlbW92ZSgpOworCQlpZiAob2JqPT10aGlzKXsKKwkJCWlmIChkb2NraW5nKSBhcnJhbmdlUG9zaXRpb24oKTsKKwkJfSBlbHNlIHsKKwkJCWlmIChkb2NraW5nKSBfbG9va2ZvclBhcmVudE9ubHkob2JqKTsKKwkJfQorCQkJCisJCS8vY2hlY2sgZm9yIGNvbm5lY3RlZCBCb3hlcworCQlmb3IgKHZhciBlZyBpbiB0aGlzLmRvY2tpbmdsaXN0KXsKKwkJCWlmKHRoaXMuZG9ja2luZ2xpc3RbZWddLmRvY2tpbmcpeworCQkJCXRoaXMuZG9ja2luZ2xpc3RbZWddLl9yZW1vdmVEcmFnU3RhdGUodGhpcyk7CisJCQl9CisJCX0KKwkJbW91c2V0cmFja2VyX2RlbC51bnJlZ2lzdGVyQWxsKCk7CisJCXRoaXMucHJlY2xvc2Uuc2VuZEV2ZW50KCk7CisJCWlmICh0aGlzLmN1cnJlbnRCb3VuZGluZ0JveCE9bnVsbCkgeworCQkJCisJCQlpZih0aGlzLmN1cnJlbnRCb3VuZGluZ0JveC53aWR0aD50aGlzLmN1cnJlbnRCb3VuZGluZ0JveC5oZWlnaHQpeworCQkJCWlmICh0aGlzLmN1cnJlbnRCb3VuZGluZ0JveC55PT0wKXsKKwkJCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIlRPUCIpOworCQkJCQlpZiAodGhpcy50b3BDbGFzc1BhbmVsIT0iIil7CisJCQkJCQluZXcgbHpbdGhpcy50b3BDbGFzc1BhbmVsXShwYXJlbnQseworCQkJCQkJCXg6dGhpcy5jdXJyZW50Qm91bmRpbmdCb3gueCx5OnRoaXMuY3VycmVudEJvdW5kaW5nQm94LnkKKwkJCQkJCX0pOworCQkJCQl9IGVsc2UgeworCQkJCQkJaWYgKCRkZWJ1ZykgRGVidWcud2FybigiTm8gVG9wIFBhbmVsIERlZmluaWVkIik7CisJCQkJCQluZXcgbHpbdGhpcy5hY3RpdmF0aW9uVkNsYXNzQm91bmRpbmddKHBhcmVudCx7CisJCQkJCQkJeDp0aGlzLmN1cnJlbnRCb3VuZGluZ0JveC54LHk6dGhpcy5jdXJyZW50Qm91bmRpbmdCb3gueQorCQkJCQkJfSk7CisJCQkJCX0KKwkJCQl9IGVsc2UgaWYgKHRoaXMuY3VycmVudEJvdW5kaW5nQm94Lnk9PShwYXJlbnQuaGVpZ2h0LXRoaXMuY3VycmVudEJvdW5kaW5nQm94LmhlaWdodCkpeworCQkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiQk9UVE9NIik7CisJCQkJCWlmICh0aGlzLmJvdHRvbUNsYXNzUGFuZWwhPSIiKXsKKwkJCQkJCW5ldyBselt0aGlzLmJvdHRvbUNsYXNzUGFuZWxdKHBhcmVudCx7CisJCQkJCQkJeDp0aGlzLmN1cnJlbnRCb3VuZGluZ0JveC54LHk6dGhpcy5jdXJyZW50Qm91bmRpbmdCb3gueQorCQkJCQkJfSk7CisJCQkJCX0gZWxzZSB7CisJCQkJCQluZXcgbHpbdGhpcy5hY3RpdmF0aW9uVkNsYXNzQm91bmRpbmddKHBhcmVudCx7CisJCQkJCQkJeDp0aGlzLmN1cnJlbnRCb3VuZGluZ0JveC54LHk6dGhpcy5jdXJyZW50Qm91bmRpbmdCb3gueQorCQkJCQkJfSk7CisJCQkJCX0KKwkJCQl9IGVsc2UgeworCQkJCQluZXcgbHpbdGhpcy5hY3RpdmF0aW9uVkNsYXNzQm91bmRpbmddKHBhcmVudCx7CisJCQkJCQl4OnRoaXMuY3VycmVudEJvdW5kaW5nQm94LngseTp0aGlzLmN1cnJlbnRCb3VuZGluZ0JveC55CisJCQkJCX0pOworCQkJCX0KKwkJCX0gZWxzZSB7CisJCQkJaWYgKHRoaXMuY3VycmVudEJvdW5kaW5nQm94Lng9PTApeworCQkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiUklHSFQiKTsKKwkJCQkJaWYgKHRoaXMucmlnaHRDbGFzc1BhbmVsIT0iIil7CisJCQkJCQluZXcgbHpbdGhpcy5yaWdodENsYXNzUGFuZWxdKHBhcmVudCx7CisJCQkJCQkJeDp0aGlzLmN1cnJlbnRCb3VuZGluZ0JveC54LHk6dGhpcy5jdXJyZW50Qm91bmRpbmdCb3gueQorCQkJCQkJfSk7CisJCQkJCX0gZWxzZSB7CisJCQkJCQluZXcgbHpbdGhpcy5hY3RpdmF0aW9uQ2xhc3NCb3VuZGluZ10ocGFyZW50LHsKKwkJCQkJCQl4OnRoaXMuY3VycmVudEJvdW5kaW5nQm94LngseTp0aGlzLmN1cnJlbnRCb3VuZGluZ0JveC55CisJCQkJCQl9KTsKKwkJCQkJfQorCQkJCX0gZWxzZSBpZiAodGhpcy5jdXJyZW50Qm91bmRpbmdCb3gueD09KHBhcmVudC53aWR0aC10aGlzLmN1cnJlbnRCb3VuZGluZ0JveC53aWR0aCkpeworCQkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiTEVGVCIpOworCQkJCQlpZiAodGhpcy5sZWZ0Q2xhc3NQYW5lbCE9IiIpeworCQkJCQkJbmV3IGx6W3RoaXMubGVmdENsYXNzUGFuZWxdKHBhcmVudCx7CisJCQkJCQkJeDp0aGlzLmN1cnJlbnRCb3VuZGluZ0JveC54LHk6dGhpcy5jdXJyZW50Qm91bmRpbmdCb3gueQorCQkJCQkJfSk7CisJCQkJCX0gZWxzZSB7CisJCQkJCQluZXcgbHpbdGhpcy5hY3RpdmF0aW9uQ2xhc3NCb3VuZGluZ10ocGFyZW50LHsKKwkJCQkJCQl4OnRoaXMuY3VycmVudEJvdW5kaW5nQm94LngseTp0aGlzLmN1cnJlbnRCb3VuZGluZ0JveC55CisJCQkJCQl9KTsKKwkJCQkJfQorCQkJCX0gZWxzZSB7CisJCQkJCW5ldyBselt0aGlzLmFjdGl2YXRpb25DbGFzc0JvdW5kaW5nXShwYXJlbnQseworCQkJCQkJeDp0aGlzLmN1cnJlbnRCb3VuZGluZ0JveC54LHk6dGhpcy5jdXJyZW50Qm91bmRpbmdCb3gueQorCQkJCQl9KTsKKwkJCQl9CisJCQl9CisJCQl0aGlzLmN1cnJlbnRCb3VuZGluZ0JveC5kZXN0cm95KCk7CisJCQl0aGlzLmNsb3NlKCk7CisJCX0gZWxzZSB7CisJCQlpZih0aGlzLndpZHRoPnRoaXMuaGVpZ2h0KXsKKwkJCQluZXcgbHpbdGhpcy5hY3RpdmF0aW9uVkNsYXNzQm91bmRpbmddKHBhcmVudCx7eDp0aGlzLngseTp0aGlzLnl9KTsKKwkJCX0gZWxzZSB7CisJCQkJbmV3IGx6W3RoaXMuYWN0aXZhdGlvbkNsYXNzQm91bmRpbmddKHBhcmVudCx7eDp0aGlzLngseTp0aGlzLnl9KTsKKwkJCX0KKwkJCXRoaXMuY2xvc2UoKTsKKwkJfQorCTwvbWV0aG9kPgorCisJCisJPCEtLS0gQGtleXdvcmRzIHByaXZhdGUKKwkJdGhlIGFyZyBvYmogaXMgbmVlZGVkIGJlY2F1c2UgdGhlIGRyYWdnaW5nIGNhbiBiZSBjYWxsZWQgYnkgdGhlIEJveCBpdHNlbGYKKwkJb3IgYnkgYSBCb3ggd2hpY2ggaXMgY29ubmVjdGVkIHRvIHRoaXMgQm94ISAgLS0+CisJPG1ldGhvZCBuYW1lPSJfc3RhcnREcmFnU3RhdGUiIGFyZ3M9Im9iaiI+CisJCXRoaXMuYnJpbmdUb0Zyb250KCk7CisJCV9jYWxjZG9ja2luZ0xpc3QoKTsKKwkJZm9yICh2YXIgZWcgaW4gdGhpcy5kb2NraW5nbGlzdCl7CisJCQlpZih0aGlzLmRvY2tpbmdsaXN0W2VnXS5kb2NraW5nKXsKKwkJCQl0aGlzLmRvY2tpbmdsaXN0W2VnXS5fc3RhcnREcmFnU3RhdGUodGhpcyk7CisJCQl9CisJCX0KKwkJLy9zdG9yZSBwb3NpdGlvbiBjYXVzZSBpdCB3YXNuJ3QgZHJhZ2dlZCBieSBpdHNlbGYKKwkJaWYgKG9iaiE9dGhpcyl7CisJCQlzdG9yZUFkanVzdG1lbnRUb1BhcmVudChvYmoueCxvYmoueSk7CisJCX0KKwkJZHJhZ2dlci5hcHBseSgpOworCQltb3VzZXRyYWNrZXJfZGVsLnJlZ2lzdGVyKGx6LklkbGUsJ29uaWRsZScpOworCTwvbWV0aG9kPgorCQorCTwhLS0tIGFycmFuZ2VzIHRoZSBCb3ggdG8gYmUgYnVpbGQgaW50byBhbnkgYm9yZGVyIC0tPgorCTxtZXRob2QgbmFtZT0iY2hlY2tTdGF0aWNCb3JkZXJzIiBhcmdzPSJpdGVtIj4KKwkJPCFbQ0RBVEFbCisJCQlpZiAoIXRoaXMudmVydGljYWxDbGFzc0FjdGl2ZSl7CisJCQkJLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiY2hlY2tTdGF0aWNCb3JkZXJzIik7CisJCQkJaWYgKHRoaXMueDx0aGlzLmJvdW5kaW5nYmFycmllcil7CisJCQkJCXRoaXMuc2V0QXR0cmlidXRlKCd2aXNpYmlsaXR5JywnaGlkZGVuJyk7CisJCQkJCWlmICh0aGlzLnk8dGhpcy5ib3VuZGluZ2JhcnJpZXIpeworCQkJCQkJLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiYTEiKTsKKwkJCQkJCXRoaXMuZHJhd0N1cnJlbnRCb3VuZGluZ0JveCgwLDAsdGhpcy52V2lkdGgsdGhpcy52SGVpZ2h0KTsKKwkJCQkJfSBlbHNlIGlmICggKHRoaXMucGFyZW50LmhlaWdodC0odGhpcy55K3RoaXMuaGVpZ2h0KSk8dGhpcy5ib3VuZGluZ2JhcnJpZXIpeworCQkJCQkJLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiYTIiKTsKKwkJCQkJCXRoaXMuZHJhd0N1cnJlbnRCb3VuZGluZ0JveCgwLHBhcmVudC5oZWlnaHQtdGhpcy52SGVpZ2h0LHRoaXMudldpZHRoLHRoaXMudkhlaWdodCk7CisJCQkJCX0gZWxzZSB7CisJCQkJCQkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJhMyIpOworCQkJCQkJdGhpcy5kcmF3Q3VycmVudEJvdW5kaW5nQm94KDAsdGhpcy55LHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpOworCQkJCQl9CisJCQkJfSBlbHNlIGlmICh0aGlzLnk8dGhpcy5ib3VuZGluZ2JhcnJpZXIpeworCQkJCQl0aGlzLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ2hpZGRlbicpOworCQkJCQlpZiAoICh0aGlzLnBhcmVudC53aWR0aC0odGhpcy54K3RoaXMuaGVpZ2h0KSk8dGhpcy5ib3VuZGluZ2JhcnJpZXIpeworCQkJCQkJLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiYjEiKTsKKwkJCQkJCXRoaXMuZHJhd0N1cnJlbnRCb3VuZGluZ0JveCgodGhpcy5wYXJlbnQud2lkdGgtdGhpcy52V2lkdGgpLDAsdGhpcy52V2lkdGgsdGhpcy52SGVpZ2h0KTsKKwkJCQkJfSBlbHNlIHsKKwkJCQkJCS8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImIyIik7CisJCQkJCQl0aGlzLmRyYXdDdXJyZW50Qm91bmRpbmdCb3godGhpcy54LDAsdGhpcy52V2lkdGgsdGhpcy52SGVpZ2h0KTsKKwkJCQkJfQorCQkJCX0gZWxzZSBpZiAoICh0aGlzLnBhcmVudC53aWR0aC0odGhpcy54K3RoaXMud2lkdGgpKTx0aGlzLmJvdW5kaW5nYmFycmllcil7CisJCQkJCXRoaXMuc2V0QXR0cmlidXRlKCd2aXNpYmlsaXR5JywnaGlkZGVuJyk7CisJCQkJCS8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImMiKTsKKwkJCQkJaWYgKCAodGhpcy5wYXJlbnQuaGVpZ2h0LSh0aGlzLnkrdGhpcy5oZWlnaHQpKTx0aGlzLmJvdW5kaW5nYmFycmllcil7CisJCQkJCQl0aGlzLmRyYXdDdXJyZW50Qm91bmRpbmdCb3gocGFyZW50LndpZHRoLXRoaXMudldpZHRoLHBhcmVudC5oZWlnaHQtdGhpcy52SGVpZ2h0LHRoaXMudldpZHRoLHRoaXMudkhlaWdodCk7CisJCQkJCX0gZWxzZSB7CisJCQkJCQl0aGlzLmRyYXdDdXJyZW50Qm91bmRpbmdCb3gocGFyZW50LndpZHRoLXRoaXMud2lkdGgsdGhpcy55LHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpOworCQkJCQl9CisJCQkJfSBlbHNlIGlmICggKHRoaXMucGFyZW50LmhlaWdodC0odGhpcy55K3RoaXMuaGVpZ2h0KSk8dGhpcy5ib3VuZGluZ2JhcnJpZXIpeworCQkJCQkKKwkJCQkJdGhpcy5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCdoaWRkZW4nKTsKKwkJCQkJaWYgKCAodGhpcy5wYXJlbnQud2lkdGgtKHRoaXMueCt0aGlzLmhlaWdodCkpPHRoaXMuYm91bmRpbmdiYXJyaWVyKXsKKwkJCQkJCS8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImQxIik7CisJCQkJCQl0aGlzLmRyYXdDdXJyZW50Qm91bmRpbmdCb3gocGFyZW50LndpZHRoLXRoaXMudldpZHRoLHBhcmVudC5oZWlnaHQtdGhpcy52SGVpZ2h0LHRoaXMudldpZHRoLHRoaXMudkhlaWdodCk7CisJCQkJCX0gZWxzZSB7CisJCQkJCQkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJkMiIpOworCQkJCQkJdGhpcy5kcmF3Q3VycmVudEJvdW5kaW5nQm94KHRoaXMueCxwYXJlbnQuaGVpZ2h0LXRoaXMudkhlaWdodCx0aGlzLnZXaWR0aCx0aGlzLnZIZWlnaHQpOworCQkJCQl9CisJCQkJfSBlbHNlIHsKKwkJCQkJLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZCIpOworCQkJCQl0aGlzLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ3Zpc2libGUnKTsKKwkJCQkJaWYgKHRoaXMuY3VycmVudEJvdW5kaW5nQm94IT1udWxsKSB7CisJCQkJCQl0aGlzLmN1cnJlbnRCb3VuZGluZ0JveC5kZXN0cm95KCk7CisJCQkJCQl0aGlzLmN1cnJlbnRCb3VuZGluZ0JveCA9IG51bGw7CisJCQkJCX0KKwkJCQl9CisJCQl9IGVsc2UgeworCQkJCWlmICh0aGlzLng8dGhpcy5ib3VuZGluZ2JhcnJpZXIpeworCQkJCQkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJhIiwodGhpcy5wYXJlbnQuaGVpZ2h0LSh0aGlzLnkrdGhpcy53aWR0aCkpKTsKKwkJCQkJdGhpcy5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCdoaWRkZW4nKTsKKwkJCQkJaWYgKHRoaXMueTx0aGlzLmJvdW5kaW5nYmFycmllcil7CisJCQkJCQkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJhMSIpOworCQkJCQkJdGhpcy5kcmF3Q3VycmVudEJvdW5kaW5nQm94KDAsMCx0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KTsKKwkJCQkJfSBlbHNlIGlmICggKHRoaXMucGFyZW50LmhlaWdodC0odGhpcy55K3RoaXMud2lkdGgpKTx0aGlzLmJvdW5kaW5nYmFycmllcil7CisJCQkJCQkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJhMiIpOworCQkJCQkJdGhpcy5kcmF3Q3VycmVudEJvdW5kaW5nQm94KDAscGFyZW50LmhlaWdodC10aGlzLmhlaWdodCx0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KTsKKwkJCQkJfSBlbHNlIHsKKwkJCQkJCS8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImEzIik7CisJCQkJCQl0aGlzLmRyYXdDdXJyZW50Qm91bmRpbmdCb3goMCx0aGlzLnksdGhpcy5oV2lkdGgsdGhpcy5oSGVpZ2h0KTsKKwkJCQkJfQorCQkJCX0gZWxzZSBpZiAodGhpcy55PHRoaXMuYm91bmRpbmdiYXJyaWVyKXsKKwkJCQkJLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiYiIpOworCQkJCQl0aGlzLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ2hpZGRlbicpOworCQkJCQlpZiAoICh0aGlzLnBhcmVudC53aWR0aC0odGhpcy54K3RoaXMud2lkdGgpKTx0aGlzLmJvdW5kaW5nYmFycmllcil7CisJCQkJCQl0aGlzLmRyYXdDdXJyZW50Qm91bmRpbmdCb3godGhpcy5wYXJlbnQud2lkdGgtdGhpcy53aWR0aCwwLHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpOworCQkJCQl9IGVsc2UgeworCQkJCQkJdGhpcy5kcmF3Q3VycmVudEJvdW5kaW5nQm94KHRoaXMueCwwLHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpOworCQkJCQl9CisJCQkJfSBlbHNlIGlmICggKHRoaXMucGFyZW50LndpZHRoLSh0aGlzLngrdGhpcy53aWR0aCkpPHRoaXMuYm91bmRpbmdiYXJyaWVyKXsKKwkJCQkJdGhpcy5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCdoaWRkZW4nKTsKKwkJCQkJaWYgKCAodGhpcy5wYXJlbnQuaGVpZ2h0LSh0aGlzLnkrdGhpcy53aWR0aCkpPHRoaXMuYm91bmRpbmdiYXJyaWVyKXsKKwkJCQkJCXRoaXMuZHJhd0N1cnJlbnRCb3VuZGluZ0JveCh0aGlzLnBhcmVudC53aWR0aC10aGlzLndpZHRoLHBhcmVudC5oZWlnaHQtdGhpcy5oZWlnaHQsdGhpcy53aWR0aCx0aGlzLmhlaWdodCk7CisJCQkJCX0gZWxzZSB7CisJCQkJCQl0aGlzLmRyYXdDdXJyZW50Qm91bmRpbmdCb3gocGFyZW50LndpZHRoLXRoaXMuaFdpZHRoLHRoaXMueSx0aGlzLmhXaWR0aCx0aGlzLmhIZWlnaHQpOworCQkJCQl9CisJCQkJfSBlbHNlIGlmICggKHRoaXMucGFyZW50LmhlaWdodC0odGhpcy55K3RoaXMuaGVpZ2h0KSk8dGhpcy5ib3VuZGluZ2JhcnJpZXIpeworCQkJCQl0aGlzLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ2hpZGRlbicpOworCQkJCQl0aGlzLmRyYXdDdXJyZW50Qm91bmRpbmdCb3godGhpcy54LHBhcmVudC5oZWlnaHQtdGhpcy5oZWlnaHQsdGhpcy53aWR0aCx0aGlzLmhlaWdodCk7CisJCQkJfSBlbHNlIHsKKwkJCQkJLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZCIpOworCQkJCQl0aGlzLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ3Zpc2libGUnKTsKKwkJCQkJaWYgKHRoaXMuY3VycmVudEJvdW5kaW5nQm94IT1udWxsKSB7CisJCQkJCQl0aGlzLmN1cnJlbnRCb3VuZGluZ0JveC5kZXN0cm95KCk7CisJCQkJCQl0aGlzLmN1cnJlbnRCb3VuZGluZ0JveCA9IG51bGw7CisJCQkJCX0KKwkJCQl9CisJCQl9CQkJCisJCV1dPgorCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0iZHJhd0N1cnJlbnRCb3VuZGluZ0JveCIgYXJncz0ieCx5LHdpZHRoLGhlaWdodCI+CisJCWlmICh0aGlzLmN1cnJlbnRCb3VuZGluZ0JveCE9bnVsbCkgdGhpcy5jdXJyZW50Qm91bmRpbmdCb3guZGVzdHJveSgpOworCQl0aGlzLmN1cnJlbnRCb3VuZGluZ0JveCA9IG5ldyBsei5wYW5lbEJvdW5kQm94KHBhcmVudCx7eDp4LHk6eSwKKwkJCXdpZHRoOndpZHRoLGhlaWdodDpoZWlnaHR9KTsKKwk8L21ldGhvZD4KKwkKKwk8IS0tLSBDYWxjIHRoZSBMaXN0IG9mIEJveGVzIHdoaWNoIHdpbGwgYmUgZHJhZ2dlZCBhbmQgc2V0cG9zaXRpb24gaWYgdGhpcyBCb3gKKwkJd2lsbCBiZSBkcmFnZ2VkLGRvY2tlZCBvciBtaW5pbWl6ZWQvbWF4aW1pemVkICAtLT4KKwk8bWV0aG9kIG5hbWU9Il9jYWxjZG9ja2luZ0xpc3QiPgorCQkvL0NsZWFyIGxpc3Qgb2YgY29uZW5jdGVkIEJveGVzCisJCXRoaXMuZG9ja2luZ2xpc3Q9bmV3IEFycmF5KCk7CisJCTwhW0NEQVRBWworCQkvL2NoZWNrIGZvciBkb2NrYWJsZSBzdHVmZiB3aGljaCBpcyBjb25uZWN0ZWQgdG8gdGhpcyBCb3gKKwkJZm9yICh2YXIgZWcgaW4gdGhpcy5wYXJlbnQuc3Vidmlld3MpeworCQkJLy9jaGVjayB0aGF0IHlvdSBkbyBub3QgY2FsYyB3aXRoIHlvdXJzZWxmCisJCQlpZiAodGhpcy5wYXJlbnQuc3Vidmlld3NbZWddIT10aGlzICYmIHRoaXMucGFyZW50LnN1YnZpZXdzW2VnXS5kb2NraW5nKXsKKwkJCQkvLyB0aGVyZSBhcmUgNCBjYXNlcyB3aGljaCBoYXZlIHRvIGJlIHByb29mZWQgdG8gY2hlY2sgZXZlcnkgcG9zc2libGUgc2l0dWF0aW9uCisJCQkJdmFyIHByb29mPWZhbHNlOworCisJCQkJLy90b3AgYm94LWJvcmRlcgorCQkJCWlmICAoICggKCh0aGlzLnkrdGhpcy5oZWlnaHQpLXRoaXMucGFyZW50LnN1YnZpZXdzW2VnXS55KSA8IDEgKSAmJiAoICgodGhpcy55K3RoaXMuaGVpZ2h0KS10aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueSkgPiAtMSApICYmICggKHRoaXMueCt0aGlzLndpZHRoKSA+IHRoaXMucGFyZW50LnN1YnZpZXdzW2VnXS54ICkgICYmICggdGhpcy54IDwgKHRoaXMucGFyZW50LnN1YnZpZXdzW2VnXS54K3RoaXMucGFyZW50LnN1YnZpZXdzW2VnXS53aWR0aCkgKSApeworCQkJCQlwcm9vZj10cnVlOworCQkJCX0KKworCQkJCWlmIChwcm9vZikgdGhpcy5kb2NraW5nbGlzdC5wdXNoKHRoaXMucGFyZW50LnN1YnZpZXdzW2VnXSk7CisJCQl9CisJCX0KKwkJXV0+CisJCS8vLy9EZWJ1Zy53cml0ZSgidGhpcy5kb2NraW5nbGlzdC5sZW5ndGg6Iix0aGlzLmRvY2tpbmdsaXN0Lmxlbmd0aCk7CisJPC9tZXRob2Q+CisJCisJPCEtLS0gQGtleXdvcmRzIHByaXZhdGUgIC0tPgorCTxtZXRob2QgbmFtZT0iYXJyYW5nZVBvc2l0aW9uIj4KKwkJLy9kbyB0aGUgbWFnaWMKKwkJLy90aGUgaWRlYSBpczogbG9vayBmb3IgYWxsIG9uIHRoZSB2aWV3IGNvbnRhaW5lciBvbmUgbGV2ZWwgYWJvdmUgdGhpcyBvbmUKKwkJLy9hbmQgbG9vayBmb3IgdGhlIHdpZHRoL2hlaWdodCBhbmQgMC8wIGFuZCBsb29rIGZvciAiZG9ja2FibGUiIHN0dWZmIHRoZXJlCisJCXZhciBuZXd4PXRoaXMueDsKKwkJdmFyIG5ld3k9dGhpcy55OworCSAgCisJCTwhW0NEQVRBWworCQkJCQorCQlmb3IgKHZhciBlZyBpbiB0aGlzLnBhcmVudC5zdWJ2aWV3cyl7CisJCQkvL2NoZWNrIHRoYXQgeW91IGRvIG5vdCBjYWxjIHdpdGggeW91cnNlbGYKKwkJCWlmICh0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10hPXRoaXMgJiYgdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLmRvY2tpbmcpeworCQkJCS8vIHRoZXJlIGFyZSA0IGNhc2VzIHdoaWNoIGhhdmUgdG8gYmUgcHJvb2ZlZCB0byBjaGVjayBldmVyeSBwb3NzaWJsZSBzaXR1YXRpb24KKwkJCQkvL2xlZnQgYm94LWJvcmRlcgorCQkJCWlmICggKCAoKHRoaXMueCt0aGlzLndpZHRoKS10aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueCkgPCB0aGlzLmRvY2tpbmdiYXJyaWVyICkgJiYgKCAoKHRoaXMueCt0aGlzLndpZHRoKS10aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueCkgPiAtdGhpcy5kb2NraW5nYmFycmllciApICYmICAoICh0aGlzLnkrdGhpcy5oZWlnaHQpID4gdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLnkgKSAmJiAgKCB0aGlzLnkgPCAodGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLnkrdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLmhlaWdodCkgKSApeworCQkJCQluZXd4PSAoIHRoaXMucGFyZW50LnN1YnZpZXdzW2VnXS54IC0gdGhpcy53aWR0aCApOworCQkJCX0KKwkJCQkvL3JpZ2h0IGJveC1ib3JkZXIKKwkJCQlpZiAoICggKCh0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueCt0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ud2lkdGgpLXRoaXMueCk8dGhpcy5kb2NraW5nYmFycmllciApICYmICggKCh0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueCt0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ud2lkdGgpLXRoaXMueCk+LXRoaXMuZG9ja2luZ2JhcnJpZXIgKSAmJiAgKCAodGhpcy55K3RoaXMuaGVpZ2h0KSA+IHRoaXMucGFyZW50LnN1YnZpZXdzW2VnXS55ICkgJiYgICggdGhpcy55IDwgKHRoaXMucGFyZW50LnN1YnZpZXdzW2VnXS55K3RoaXMucGFyZW50LnN1YnZpZXdzW2VnXS5oZWlnaHQpICkgKXsKKwkJCQkJbmV3eD0gKCB0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueCArIHRoaXMucGFyZW50LnN1YnZpZXdzW2VnXS53aWR0aCApOworCQkJCX0KKwkJCQkvL3RvcCBib3gtYm9yZGVyCisJCQkJaWYgICggKCAoKHRoaXMueSt0aGlzLmhlaWdodCktdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLnkpIDwgdGhpcy5kb2NraW5nYmFycmllciApICYmICggKCh0aGlzLnkrdGhpcy5oZWlnaHQpLXRoaXMucGFyZW50LnN1YnZpZXdzW2VnXS55KSA+IC10aGlzLmRvY2tpbmdiYXJyaWVyICkgJiYgKCAodGhpcy54K3RoaXMud2lkdGgpID4gdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLnggKSAgJiYgKCB0aGlzLnggPCAodGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLngrdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLndpZHRoKSApICl7CisJCQkJCW5ld3kgPSB0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueS10aGlzLmhlaWdodDsKKwkJCQl9CisJCQkJLy9ib3R0b20gYm94LWJvcmRlcgorCQkJCWlmICggKCAoKHRoaXMucGFyZW50LnN1YnZpZXdzW2VnXS55K3RoaXMucGFyZW50LnN1YnZpZXdzW2VnXS5oZWlnaHQpLXRoaXMueSkgPCB0aGlzLmRvY2tpbmdiYXJyaWVyICkgJiYgKCAoKHRoaXMucGFyZW50LnN1YnZpZXdzW2VnXS55K3RoaXMucGFyZW50LnN1YnZpZXdzW2VnXS5oZWlnaHQpLXRoaXMueSkgPiAtdGhpcy5kb2NraW5nYmFycmllciApICYmICggKHRoaXMueCt0aGlzLndpZHRoKSA+IHRoaXMucGFyZW50LnN1YnZpZXdzW2VnXS54ICkgICYmICggdGhpcy54IDwgKHRoaXMucGFyZW50LnN1YnZpZXdzW2VnXS54K3RoaXMucGFyZW50LnN1YnZpZXdzW2VnXS53aWR0aCkgKSApeworCQkJCQluZXd5ID0gdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLnkrdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLmhlaWdodDsKKwkJCQl9CisJCQl9CisJCX0KKwkJCisJCS8vQ2hlY2sgZm9yIEJvcmRlcnMKKwkJLy9zaG91bGQgYmUgZG9uZSBfYWZ0ZXJfIGNoZWNraW5nIGZvciBvdGhlciBkb2NrYWJsZSBzdHVmZiBzbyBpdCBnZXRzIAorCQkvL3ByaW9yaXR5IHRvIGRvY2sgYWdhaW5zdCB0aGUgYm9yZGVyIG9mIHBhcmVudCB2aWV3CisJCWlmICh0aGlzLng8dGhpcy5kb2NraW5nYmFycmllcil7CisJCQluZXd4PTA7CisJCX0KKwkJaWYgKHRoaXMueTx0aGlzLmRvY2tpbmdiYXJyaWVyKXsKKwkJCW5ld3k9MDsKKwkJfQorCQlpZiAoICh0aGlzLnBhcmVudC53aWR0aC0odGhpcy54K3RoaXMud2lkdGgpKTx0aGlzLmRvY2tpbmdiYXJyaWVyKXsKKwkJCW5ld3g9dGhpcy5wYXJlbnQud2lkdGgtdGhpcy53aWR0aDsKKwkJfQorCQlpZiAoICh0aGlzLnBhcmVudC5oZWlnaHQtKHRoaXMueSt0aGlzLmhlaWdodCkpPHRoaXMuZG9ja2luZ2JhcnJpZXIpeworCQkJbmV3eT10aGlzLnBhcmVudC5oZWlnaHQtdGhpcy5oZWlnaHQ7CisJCX0KKwkJCisJCS8vc2V0IHBvc2l0aW9uCisJCXRoaXMuc2V0QXR0cmlidXRlKCd4JyxuZXd4KTsKKwkJdGhpcy5zZXRBdHRyaWJ1dGUoJ3knLG5ld3kpOworCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiUG9zaXRpb246ICIsbmV3eCxuZXd5KTsKKwkJXV0+CisJPC9tZXRob2Q+CisJCisJPG1ldGhvZCBuYW1lPSJzdG9yZUFkanVzdG1lbnRUb1BhcmVudCIgYXJncz0ib2JqWCxvYmpZIj4KKwkJdGhpcy50ZW1wWGRpc3RhbmNlPW9ialgtdGhpcy54OworCQl0aGlzLnRlbXBZZGlzdGFuY2U9b2JqWS10aGlzLnk7CisJPC9tZXRob2Q+CisJCisJPCEtLS0gQGtleXdvcmRzIHByaXZhdGUgCisJCXRoaXMgbWV0aG9kIGlzIG5lZWRlZCBiZWNhdXNlIGlmIHRoZSBkcmFnZ2luZyBlbmQgYW5kCisJCWl0IHdhcyBub3QgZHJhZ2dlZCBfaXRzZWxmXyBpdCB3YXMgZHJhZ2VkIGp1c3QgYmVjYXVzZSBhIGNvbm5lY3RlZAorCQlkb2NrYWJsZSBCb3ggd2FzIGRyYWdnZWQgdGhhbiBpdCBjb3VsZCBiZSB0aGF0IHRoZSBjb25uZWN0ZWQKKwkJQm94IHdhcyBmb3JjZWQgdG8gZG9jayBhZ2FpbnN0IHNvbWV0aGluZyBkaWZmZXJlbnQgb25tb3VzZXVwCisJCXNvIHlvdSBoYXZlIHRvIHJlYXJyYW5nZSB0aGUgb2xkICJhZGp1c3RtZW50IgktLT4KKwk8bWV0aG9kIG5hbWU9Il9sb29rZm9yUGFyZW50T25seSIgYXJncz0ib2JqIj4KKwkJPCFbQ0RBVEFbCQkKKwkJdmFyIG5ld3g9b2JqLngtdGVtcFhkaXN0YW5jZTsKKwkJdmFyIG5ld3k9b2JqLnktdGVtcFlkaXN0YW5jZTsKKwkJCisJCXRoaXMuc2V0QXR0cmlidXRlKCd4JyxuZXd4KTsKKwkJdGhpcy5zZXRBdHRyaWJ1dGUoJ3knLG5ld3kpOworCQldXT4KKwk8L21ldGhvZD4KKwkKKwk8ZHJhZ3N0YXRlIG5hbWU9ImRyYWdnZXIiIC8+CisgICAgCisgICAgPGFuaW1hdG9yIGF0dHJpYnV0ZT0ieSIgdG89IjIwIiBkdXJhdGlvbj0iMTAwMCIgc3RhcnRlZD0iZmFsc2UiIC8+CisgICAgICAgIAorICAgIDxhbmltYXRvciBuYW1lPSJkb091dCIgYXR0cmlidXRlPSJ5IiB0bz0iLTUwMCIgZHVyYXRpb249IjEwMDAiIHN0YXJ0ZWQ9ImZhbHNlIiBvbnN0b3A9InBhcmVudC5kb0Rlc3Ryb3koKSIgLz4gICAgCisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJkb0Rlc3Ryb3kiPgorICAgICAgICB0aGlzLmRlc3Ryb3koKTsKKyAgICA8L21ldGhvZD4KKworPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3BhbmVsL2Jhc2VMZWZ0UGFuZWwubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3BhbmVsL2Jhc2VMZWZ0UGFuZWwubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwYjY4NmMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcGFuZWwvYmFzZUxlZnRQYW5lbC5sengKQEAgLTAsMCArMSw2NCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9ImJhc2VMZWZ0UGFuZWwiIGV4dGVuZHM9ImJhc2VCb3VuZGluZ0JvcmRlclZpZXciIAorCSAgIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignYmFzZWJnY29sb3JpemVyJykgfSIgaGFzc2hhZG93PSJmYWxzZSI+CisJCisJPCEtLS0gaWYgdGhpcyBCb3ggc2hvdWxkIGJlIGNsb3NlYWJsZSAtLT4KKwk8YXR0cmlidXRlIG5hbWU9ImNsb3NhYmxlIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisJCisJPCEtLS0gVGl0bGUgb2YgdGhpcyB3aW5kb3cgLS0+CisJPGF0dHJpYnV0ZSBuYW1lPSJ0aXRsZSIgdHlwZT0ic3RyaW5nIiB2YWx1ZT0iYmFzZVBhbmVsIiAvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZCIgdHlwZT0ibnVtYmVyIiBzZXR0ZXI9InNldExhYmVsSWQobGFiZWxpZCkiIC8+CisJPG1ldGhvZCBuYW1lPSJzZXRMYWJlbElkIiBhcmdzPSJfbGFiZWxpZCIgPgorCQl0aGlzLmxhYmVsaWQgPSBfbGFiZWxpZDsKKwkJdGhpcy50aXRsZT1jYW52YXMuZ2V0TGFiZWxOYW1lKHRoaXMubGFiZWxpZCk7CisJPC9tZXRob2Q+CisJCisJPCEtLSBiYXNlYmdjb2xvcml6ZXIgLS0+CisJCisJPHZpZXcgbmFtZT0iX2JnSXRlbSIgeD0iMSIgeT0iMSIgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdtYWluQmFja2dyb3VuZENvbG9yJykgfSIgCisJCQl3aWR0aD0iJG9uY2V7IHRoaXMucGFyZW50LndpZHRoLTIgfSIgaGVpZ2h0PSIkb25jZXsgdGhpcy5wYXJlbnQuaGVpZ2h0LTIgfSIgLz4KKwkKKwk8dmlldyB4PSIxIiB5PSIxIiB3aWR0aD0iJG9uY2V7IHRoaXMucGFyZW50LndpZHRoLTIgfSIgaGVpZ2h0PSIxNyIgCisJCSAgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdiYXNlTW91c2Vjb2xvcml6ZXInKSB9Ij4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZWRvd24iPgorICAgICAgICAJcGFyZW50Lm9ubW91c2Vkb3duLnNlbmRFdmVudChwYXJlbnQpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2V1cCI+CisgICAgICAgIAlsei5DdXJzb3IudW5sb2NrKCk7CisgICAgICAgIAlwYXJlbnQub25tb3VzZXVwLnNlbmRFdmVudChwYXJlbnQpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdmVyIj4KKyAgICAgICAgCS8vY3Vyc29yPSJhcnJvd19kcmF3X3BhbmVsX2N1cnNvciIgCisgICAgICAgIAlsei5DdXJzb3Iuc2V0Q3Vyc29yR2xvYmFsKCJhcnJvd19kcmF3X3BhbmVsX2N1cnNvciIpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdXQiPgorICAgICAgICAJbHouQ3Vyc29yLnVubG9jaygpOworICAgICAgICA8L2hhbmRsZXI+CisJCTx2aWV3IHJlc291cmNlPSJkcmF3X2JveF9ob3Jpem9udGFsX3JzYyIgLz4KKwk8L3ZpZXc+CisJCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcGFuZWwvYmFzZVBhbmVsLmx6eCBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9wYW5lbC9iYXNlUGFuZWwubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1ZDBkMzIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcGFuZWwvYmFzZVBhbmVsLmx6eApAQCAtMCwwICsxLDEwOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9ImJhc2VQYW5lbCIgZXh0ZW5kcz0iYmFzZUJvdW5kaW5nQm9yZGVyVmlldyIgCisJICAgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdiYXNlYmdjb2xvcml6ZXInKSB9IiA+CisJCisJPCEtLS0gaWYgdGhpcyBCb3ggc2hvdWxkIGJlIGNsb3NlYWJsZSAtLT4KKwk8YXR0cmlidXRlIG5hbWU9ImNsb3NhYmxlIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisJCisJPCEtLS0gVGl0bGUgb2YgdGhpcyB3aW5kb3cgLS0+CisJPGF0dHJpYnV0ZSBuYW1lPSJ0aXRsZSIgdHlwZT0ic3RyaW5nIiB2YWx1ZT0iYmFzZVBhbmVsIiAvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZCIgdHlwZT0ibnVtYmVyIiBzZXR0ZXI9InNldExhYmVsSWQobGFiZWxpZCkiIC8+CisJPG1ldGhvZCBuYW1lPSJzZXRMYWJlbElkIiBhcmdzPSJfbGFiZWxpZCIgPgorCQl0aGlzLmxhYmVsaWQgPSBfbGFiZWxpZDsKKwkJdGhpcy50aXRsZT1jYW52YXMuZ2V0TGFiZWxOYW1lKHRoaXMubGFiZWxpZCk7CisJPC9tZXRob2Q+CisJCisJPHZpZXcgd2lkdGg9IiR7IHRoaXMucGFyZW50LndpZHRoLTIgfSIgaGVpZ2h0PSIkeyB0aGlzLnBhcmVudC5oZWlnaHQtMiB9IiB4PSIxIiB5PSIxIiBiZ2NvbG9yPSIweEZGRkZGRiIgLz4KKwk8dmlldyB4PSIxIiB5PSIxIiB3aWR0aD0iJHsgdGhpcy5wYXJlbnQud2lkdGgtMiB9IiBoZWlnaHQ9IjIwIiA+CisJCQkJPHZpZXcgd2lkdGg9IiR7IHRoaXMucGFyZW50LnBhcmVudC53aWR0aC0yIH0iIHk9IjAiIHN0cmV0Y2hlcz0id2lkdGgiCisgICAgICAgICAgICByZXNvdXJjZT0icHJlc2VudGVyX3RodW1iX3JzYyIgPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAgICAgICAgIAk8IVtDREFUQVsKKyAgICAgICAgICAgIAkJdGhpcy5zZXRDb2xvcihjYW52YXMuZ2V0VGhlbWVDb2xvcignYmFzZWJnY29sb3JpemVyJykpOworICAgICAgICAgICAgCV1dPgorICAgICAgICAgICAgPC9oYW5kbGVyPgorCQkJPG1ldGhvZCBuYW1lPSJzZXRUaW50UkdCIiBhcmdzPSJjb2xvciwgYnJpZ2h0bmVzcyI+CisJCQkgICAgPCFbQ0RBVEFbCisJCQkgICAgaWYgKGNvbG9yICE9ICIiICYmIGNvbG9yICE9IG51bGwpeworCQkJICAgIAkKKwkJCSAgICAgICAgaWYgKGJyaWdodG5lc3MgPT0gbnVsbCkgeyBicmlnaHRuZXNzID0gMDsgfQorCQkJICAgICAgICB2YXIgcmdiID0gY29sb3I7CisJCQkgICAgICAgIHZhciByZWQ9KHJnYiA+PiAxNikgJiAweEZGOworCQkJICAgICAgICB2YXIgZ3JlZW49KHJnYiA+PiA4KSAmIDB4RkY7CisJCQkgICAgICAgIHZhciBibHVlPXJnYiAmIDB4RkY7CisJCQorCQkJICAgICAgICB0aGlzLnNldENvbG9yVHJhbnNmb3JtKCB7IHJhIDogcmVkLCBnYSA6IGdyZWVuLCBiYSA6IGJsdWUsCisJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgCQlyYiA6IDAsIGdiIDogMCwgYmIgOiAwIH0gKTsKKwkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAJCQorCQkJICAgICAgICBpZigkZGVidWcpIERlYnVnLndyaXRlKCJleHBsb3JlckJveC9zZXRUaW50UkdCIix0aGlzKTsKKwkJCSAgICAgICAgaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZXhwbG9yZXJCb3gvc2V0VGludFJHQiIsIHsgcmEgOiByZWQsIGdhIDogZ3JlZW4sIGJhIDogYmx1ZSwgcmIgOiAwLCBnYiA6IDAsIGJiIDogMCB9ICk7CisJCQkgICAgfQorCQkJICAgIF1dPgorCQkJPC9tZXRob2Q+ICAgICAgICAgICAgCisgICAgICAgIDwvdmlldz4KKyAgICAgICAgPHRleHQgZm9udHNpemU9IjExIiBoZWlnaHQ9IjE3IiB4PSIxNiIgeT0iMSIgdGV4dD0iJHsgdGhpcy5wYXJlbnQucGFyZW50LnRpdGxlIH0iIAorCQkJZmdjb2xvcj0iMHhGRkZGRkYiIHJlc2l6ZT0idHJ1ZSIgZm9udHN0eWxlPSJib2xkIiAvPgorCQk8YnV0dG9uIHZpc2libGU9IiR7IHRoaXMucGFyZW50LnBhcmVudC5jbG9zYWJsZSB9IiB4PSIkeyB0aGlzLnBhcmVudC5wYXJlbnQud2lkdGgtMjMgfSIgCisJCQl5PSIxIiB0ZXh0PSJYIiBoZWlnaHQ9IjE4IiB3aWR0aD0iMjAiID4KKwkJCTxoYW5kbGVyIG5hbWU9Im9ubW91c2V1cCI+CisJCQkJdGhpcy5wYXJlbnQucGFyZW50LmNsb3NlKCk7CisJCQk8L2hhbmRsZXI+CQkJCQkJCQkJCisJCTwvYnV0dG9uPgorCQk8dmlldyB2aXNpYmxlPSIkeyAhdGhpcy5wYXJlbnQucGFyZW50Lmlzb3BlbiB9IiB4PSIyIiB5PSIzIiByZXNvdXJjZT0iZXhwbG9yZXJfYnV0dG9uX21pbl9yc2MiPgorCQkJPGhhbmRsZXIgbmFtZT0ib25tb3VzZW92ZXIiPgorCQkJCXRoaXMuc2V0QXR0cmlidXRlKCdmcmFtZScsMik7CisJCQk8L2hhbmRsZXI+CisJCQk8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3V0Ij4KKwkJCQl0aGlzLnNldEF0dHJpYnV0ZSgnZnJhbWUnLDEpOworCQkJPC9oYW5kbGVyPgorCQkJPGhhbmRsZXIgbmFtZT0ib25tb3VzZWRvd24iPgorCQkJCXRoaXMuc2V0QXR0cmlidXRlKCdmcmFtZScsMyk7CisJCQk8L2hhbmRsZXI+CQorCQkJPGhhbmRsZXIgbmFtZT0ib25tb3VzZXVwIj4KKwkJCQl0aGlzLnNldEF0dHJpYnV0ZSgnZnJhbWUnLDEpOworCQkJCXRoaXMucGFyZW50LnBhcmVudC50b2dnbGVvcGVuKCk7CisJCQk8L2hhbmRsZXI+CQkJCQkJCQkJCisJCTwvdmlldz4KKwkJPHZpZXcgdmlzaWJsZT0iJHsgdGhpcy5wYXJlbnQucGFyZW50Lmlzb3BlbiB9IiB4PSIyIiB5PSIzIiByZXNvdXJjZT0iZXhwbG9yZXJfYnV0dG9uX21heF9yc2MiPgorCQkJPGhhbmRsZXIgbmFtZT0ib25tb3VzZW92ZXIiPgorCQkJCXRoaXMuc2V0QXR0cmlidXRlKCdmcmFtZScsMik7CisJCQk8L2hhbmRsZXI+CisJCQk8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3V0Ij4KKwkJCQl0aGlzLnNldEF0dHJpYnV0ZSgnZnJhbWUnLDEpOworCQkJPC9oYW5kbGVyPgorCQkJPGhhbmRsZXIgbmFtZT0ib25tb3VzZWRvd24iPgorCQkJCXRoaXMuc2V0QXR0cmlidXRlKCdmcmFtZScsMyk7CisJCQk8L2hhbmRsZXI+CQorCQkJPGhhbmRsZXIgbmFtZT0ib25tb3VzZXVwIj4KKwkJCQl0aGlzLnNldEF0dHJpYnV0ZSgnZnJhbWUnLDEpOworCQkJCXRoaXMucGFyZW50LnBhcmVudC50b2dnbGVvcGVuKCk7CisJCQk8L2hhbmRsZXI+CQkJCQkJCQkJCisJCTwvdmlldz4KKwk8L3ZpZXc+CisJCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcGFuZWwvYmFzZVByb3BlcnR5UGFuZWwubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3BhbmVsL2Jhc2VQcm9wZXJ0eVBhbmVsLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OGU0OTA2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3BhbmVsL2Jhc2VQcm9wZXJ0eVBhbmVsLmx6eApAQCAtMCwwICsxLDEwNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9ImJhc2VQcm9wZXJ0eVBhbmVsIiBleHRlbmRzPSJ2aWV3IiA+CisJCisJPCEtLS0gQGtleXdvcmRzIHByaXZhdGUgaXMgdGhlIEJveCBtaW5pbWl6ZWQgIC0tPgorCTxhdHRyaWJ1dGUgbmFtZT0iaXNvcGVuIiB2YWx1ZT0idHJ1ZSIgdHlwZT0iYm9vbGVhbiIgLz4KKwkKKwk8IS0tLSBAa2V5d29yZHMgcHJpdmF0ZSBpcyB0aGUgQm94IG1pbmltaXplZCAgLS0+CisJPGF0dHJpYnV0ZSBuYW1lPSJvcGVuIiB2YWx1ZT0idHJ1ZSIgdHlwZT0iYm9vbGVhbiIgLz4JCQorCQorCTwhLS0tIGlmIHRoaXMgQm94IHNob3VsZCBiZSBjbG9zZWFibGUgLS0+CisJPGF0dHJpYnV0ZSBuYW1lPSJjbG9zYWJsZSIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorCQorCTwhLS0tIFRpdGxlIG9mIHRoaXMgd2luZG93IC0tPgorCTxhdHRyaWJ1dGUgbmFtZT0idGl0bGUiIHR5cGU9InN0cmluZyIgdmFsdWU9ImJhc2VQYW5lbCIgLz4KKwkKKwk8IS0tLSBAa2V5d29yZHMgcHJpdmF0ZSAgLS0+CisJPGF0dHJpYnV0ZSBuYW1lPSJpbml0aGVpZ2h0IiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZCIgdHlwZT0ibnVtYmVyIiBzZXR0ZXI9InNldExhYmVsSWQobGFiZWxpZCkiIC8+CisJCQorCTxtZXRob2QgbmFtZT0ic2V0TGFiZWxJZCIgYXJncz0iX2xhYmVsaWQiID4KKwkJdGhpcy5sYWJlbGlkID0gX2xhYmVsaWQ7CisJCXRoaXMudGl0bGU9Y2FudmFzLmdldExhYmVsTmFtZSh0aGlzLmxhYmVsaWQpOworCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0idG9nZ2xlb3BlbiI+CisJCS8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInRvZ2dsZW9wZW46OiB0aGlzLmlzb3BlbiIsIHRoaXMuaXNvcGVuKTsKKwkJdGhpcy5zZXRBdHRyaWJ1dGUoJ2lzb3BlbicsIXRoaXMuaXNvcGVuKTsKKwkJaWYgKHRoaXMuaXNvcGVuKXsJCQorCQkJdGhpcy5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsdGhpcy5pbml0aGVpZ2h0KTsKKwkJCXRoaXMuc2V0QXR0cmlidXRlKCdoZWlnaHQnLHRoaXMuaW5pdGhlaWdodCk7CisJCX0gZWxzZSB7CQorCQkJdGhpcy5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsMjIpOwkJCisJCX0KKwk8L21ldGhvZD4KKwkKKyAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgIAl0aGlzLmluaXRoZWlnaHQ9dGhpcy5oZWlnaHQ7CisgICAgPC9oYW5kbGVyPgorCQorCTx2aWV3IHdpZHRoPSIkeyB0aGlzLnBhcmVudC53aWR0aCB9IiBoZWlnaHQ9IiR7IHRoaXMucGFyZW50LmhlaWdodC0yIH0iIAorCQkgIHg9IjAiIHk9IjEiICAvPgorCQorICAgIDx2aWV3IHg9IjAiIHk9IjEiIHdpZHRoPSIkeyB0aGlzLnBhcmVudC53aWR0aCB9IiBoZWlnaHQ9IjIwIiBiZ2NvbG9yPSIweEUwRTFFQiIgLz4KKyAgICAKKyAgICA8dmlldyB4PSIwIiB5PSIwIiB3aWR0aD0iJHsgdGhpcy5wYXJlbnQud2lkdGggfSIgaGVpZ2h0PSIxIiBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ21haW5Cb3JkZXJDb2xvcicpIH0iIC8+CisgICAgCisgICAgPHZpZXcgeD0iMCIgeT0iMTkiIHdpZHRoPSIkeyB0aGlzLnBhcmVudC53aWR0aCB9IiBoZWlnaHQ9IjEiIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignbWFpbkJvcmRlckNvbG9yJykgfSIgLz4KKwkKKwkJICAKKyAgICA8dmlldyB4PSIwIiB5PSIxIiB3aWR0aD0iJHsgdGhpcy5wYXJlbnQud2lkdGggfSIgaGVpZ2h0PSIyMCIgPgorCQkKKwkJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICB0aGlzLnBhcmVudC50b2dnbGVvcGVuKCk7CisgICAgICAgIDwvaGFuZGxlcj4KKwkJCisgICAgICAgIDx0ZXh0IGZvbnRzaXplPSIxMSIgaGVpZ2h0PSIxNyIgeD0iMTYiIHk9IjEiIHRleHQ9IiR7IHRoaXMucGFyZW50LnBhcmVudC50aXRsZSB9IiAKKwkJCWZnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignbWVudVRleHRDb2xvcicpIH0iIHJlc2l6ZT0idHJ1ZSIgZm9udHN0eWxlPSJib2xkIiAvPgorCQkJCisJCTxidXR0b24gdmlzaWJsZT0iJHsgdGhpcy5wYXJlbnQucGFyZW50LmNsb3NhYmxlIH0iIHg9IiR7IHRoaXMucGFyZW50LnBhcmVudC53aWR0aC0yMyB9IiAKKwkJCXk9IjEiIHRleHQ9IlgiIGhlaWdodD0iMTgiIHdpZHRoPSIyMCIgPgorCQkJPGhhbmRsZXIgbmFtZT0ib25tb3VzZXVwIj4KKwkJCQl0aGlzLnBhcmVudC5wYXJlbnQuY2xvc2UoKTsKKwkJCTwvaGFuZGxlcj4JCQkJCQkJCQkKKwkJPC9idXR0b24+CisJCQorCQk8dmlldyB2aXNpYmxlPSIkeyAhdGhpcy5wYXJlbnQucGFyZW50Lmlzb3BlbiB9IiB4PSIyIiB5PSIyIiByZXNvdXJjZT0iY29uZmVyZW5jZUJveF9idXR0b25fbWluX3NtYWxsX3JzYyI+CisJCQk8aGFuZGxlciBuYW1lPSJvbm1vdXNldXAiPgorCQkJCXRoaXMucGFyZW50LnBhcmVudC50b2dnbGVvcGVuKCk7CisJCQk8L2hhbmRsZXI+CQorCQkJPGxhYmVsVG9vbHRpcCBuYW1lPSJfbGFiZWxUb29sdGlwIiBsYWJlbGlkPSI4NTciIC8+CQkJCQkJCQkKKwkJPC92aWV3PgorCQkKKwkJPHZpZXcgdmlzaWJsZT0iJHsgdGhpcy5wYXJlbnQucGFyZW50Lmlzb3BlbiB9IiB4PSIyIiB5PSIyIiByZXNvdXJjZT0iY29uZmVyZW5jZUJveF9idXR0b25fbWF4X3NtYWxsX3JzYyI+CisJCQk8aGFuZGxlciBuYW1lPSJvbm1vdXNldXAiPgorCQkJCXRoaXMucGFyZW50LnBhcmVudC50b2dnbGVvcGVuKCk7CisJCQk8L2hhbmRsZXI+CisJCQk8bGFiZWxUb29sdGlwIG5hbWU9Il9sYWJlbFRvb2x0aXAiIGxhYmVsaWQ9Ijg1NiIgLz4JCQkJCQkJCQkKKwkJPC92aWV3PgorCQkKKwk8L3ZpZXc+Cis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcGFuZWwvYmFzZVRvcFBhbmVsLmx6eCBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9wYW5lbC9iYXNlVG9wUGFuZWwubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzM2ZjNTgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcGFuZWwvYmFzZVRvcFBhbmVsLmx6eApAQCAtMCwwICsxLDYyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8Y2xhc3MgbmFtZT0iYmFzZVRvcFBhbmVsIiBleHRlbmRzPSJiYXNlQm91bmRpbmdCb3JkZXJWaWV3IiAKKwkgICBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ2Jhc2ViZ2NvbG9yaXplcicpIH0iIGhhc3NoYWRvdz0iZmFsc2UiPgorCQorCTwhLS0tIGlmIHRoaXMgQm94IHNob3VsZCBiZSBjbG9zZWFibGUgLS0+CisJPGF0dHJpYnV0ZSBuYW1lPSJjbG9zYWJsZSIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorCQorCTwhLS0tIFRpdGxlIG9mIHRoaXMgd2luZG93IC0tPgorCTxhdHRyaWJ1dGUgbmFtZT0idGl0bGUiIHR5cGU9InN0cmluZyIgdmFsdWU9ImJhc2VQYW5lbCIgLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9ImxhYmVsaWQiIHR5cGU9Im51bWJlciIgc2V0dGVyPSJzZXRMYWJlbElkKGxhYmVsaWQpIiAvPgorCTxtZXRob2QgbmFtZT0ic2V0TGFiZWxJZCIgYXJncz0iX2xhYmVsaWQiID4KKwkJdGhpcy5sYWJlbGlkID0gX2xhYmVsaWQ7CisJCXRoaXMudGl0bGU9Y2FudmFzLmdldExhYmVsTmFtZSh0aGlzLmxhYmVsaWQpOworCTwvbWV0aG9kPgorCQorCTx2aWV3IG5hbWU9Il9iZ0l0ZW0iIHg9IjEiIHk9IjEiIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignbWFpbkJhY2tncm91bmRDb2xvcicpIH0iIAorCQkJd2lkdGg9IiRvbmNleyB0aGlzLnBhcmVudC53aWR0aC0yIH0iIGhlaWdodD0iJG9uY2V7IHRoaXMucGFyZW50LmhlaWdodC0yIH0iIC8+CisJCQkKKwk8dmlldyB4PSIxIiB5PSIxIiBoZWlnaHQ9IiRvbmNleyB0aGlzLnBhcmVudC5oZWlnaHQtMiB9IiB3aWR0aD0iMTciIAorCQkgIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignYmFzZU1vdXNlY29sb3JpemVyJykgfSI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2Vkb3duIj4KKyAgICAgICAgCXBhcmVudC5vbm1vdXNlZG93bi5zZW5kRXZlbnQocGFyZW50KTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNldXAiPgorICAgICAgICAJbHouQ3Vyc29yLnVubG9jaygpOworICAgICAgICAJcGFyZW50Lm9ubW91c2V1cC5zZW5kRXZlbnQocGFyZW50KTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3ZlciI+CisgICAgICAgIAkvL2N1cnNvcj0iYXJyb3dfZHJhd19wYW5lbF9jdXJzb3IiIAorICAgICAgICAJbHouQ3Vyc29yLnNldEN1cnNvckdsb2JhbCgiYXJyb3dfZHJhd19wYW5lbF9jdXJzb3IiKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3V0Ij4KKyAgICAgICAgCWx6LkN1cnNvci51bmxvY2soKTsKKyAgICAgICAgPC9oYW5kbGVyPgorCQk8dmlldyByZXNvdXJjZT0iZHJhd19ib3hfdmVydGljYWxfcnNjIiAvPgorCTwvdmlldz4KKwkKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9wYW5lbC9sYWJlbFBhbmVsLmx6eCBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9wYW5lbC9sYWJlbFBhbmVsLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNGFhYzIxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3BhbmVsL2xhYmVsUGFuZWwubHp4CkBAIC0wLDAgKzEsMjcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzxjbGFzcyBuYW1lPSJsYWJlbFBhbmVsIiBleHRlbmRzPSJiYXNlUGFuZWwiID4KKwkKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9wYW5lbC9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9wYW5lbC9saWJyYXJ5Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Njc0NmY5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3BhbmVsL2xpYnJhcnkubHp4CkBAIC0wLDAgKzEsMzMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKwk8aW5jbHVkZSBocmVmPSJyZXNvdXJjZXMvIiAvPgorCQorCTxpbmNsdWRlIGhyZWY9ImJhc2VCb3VuZGluZ0JvcmRlclZpZXcubHp4IiAvPgorCTxpbmNsdWRlIGhyZWY9ImJhc2VQYW5lbC5sengiIC8+CisJPGluY2x1ZGUgaHJlZj0iYmFzZVRvcFBhbmVsLmx6eCIgLz4KKwk8aW5jbHVkZSBocmVmPSJiYXNlTGVmdFBhbmVsLmx6eCIgLz4KKwk8aW5jbHVkZSBocmVmPSJwYW5lbEJvdW5kQm94Lmx6eCIgLz4KKwk8aW5jbHVkZSBocmVmPSJiYXNlUHJvcGVydHlQYW5lbC5sengiIC8+CisKKyAgICAKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9wYW5lbC9wYW5lbEJvdW5kQm94Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9wYW5lbC9wYW5lbEJvdW5kQm94Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYjYzN2E2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3BhbmVsL3BhbmVsQm91bmRCb3gubHp4CkBAIC0wLDAgKzEsMTA4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8IS0tCisKKzxjbGFzcyBuYW1lPSJkcmF3Vmlld05ldyIgZXh0ZW5kcz0iZHJhd3ZpZXciIGNhY2hlYml0bWFwPSJmYWxzZSIgeD0iLTEiIHk9Ii0xIiA+CisgLS0+Cis8Y2xhc3MgbmFtZT0icGFuZWxCb3VuZEJveCIgZXh0ZW5kcz0iZHJhd3ZpZXciIGNhY2hlYml0bWFwPSJmYWxzZSIgPgorCQorCTxoYW5kbGVyIG5hbWU9Im9uY29udGV4dCI+CisJCXZhciBudW1iZXJDb2xvciA9IHRoaXMuc3RyaW5nUmdiVG9JbnRlZ2VyKGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdiYXNlYmdjb2xvcml6ZXInKSk7CisJCXZhciBmaWxsQ29sb3IgPSB0aGlzLnN0cmluZ1JnYlRvSW50ZWdlcihjYW52YXMuZ2V0VGhlbWVDb2xvcignYmFzZU1vdXNlY29sb3JpemVyJykpOworCQl0aGlzLmRyYXdCb2R5KHRoaXMsMCwwLHRoaXMud2lkdGgsdGhpcy5oZWlnaHQsZmlsbENvbG9yLDIpOworCQl0aGlzLmRyYXdEb3R0ZWRMaW5lKHRoaXMsMCwwLHRoaXMud2lkdGgsMCxudW1iZXJDb2xvciwyKTsKKwkJdGhpcy5kcmF3RG90dGVkTGluZSh0aGlzLHRoaXMud2lkdGgsMCx0aGlzLndpZHRoLHRoaXMuaGVpZ2h0LG51bWJlckNvbG9yLDIpOworCQl0aGlzLmRyYXdEb3R0ZWRMaW5lKHRoaXMsdGhpcy53aWR0aCx0aGlzLmhlaWdodCwwLHRoaXMuaGVpZ2h0LG51bWJlckNvbG9yLDIpOworCQl0aGlzLmRyYXdEb3R0ZWRMaW5lKHRoaXMsMCx0aGlzLmhlaWdodCwwLDAsbnVtYmVyQ29sb3IsMik7CisJPC9oYW5kbGVyPgorCQorCTxtZXRob2QgbmFtZT0ic3RyaW5nUmdiVG9JbnRlZ2VyIiBhcmdzPSJyZ2IiPgorCSAgICA8IVtDREFUQVsKKwkgICAgICAgIHZhciByZWQ9KHJnYiA+PiAxNikgJiAweEZGOworCSAgICAgICAgdmFyIGdyZWVuPShyZ2IgPj4gOCkgJiAweEZGOworCSAgICAgICAgdmFyIGJsdWU9cmdiICYgMHhGRjsKKwkgICAgICAgIHJldHVybiAocmVkICogNjU1MzYgKyBncmVlbiAqIDI1NiArIGJsdWUpOworCSAgICBdXT4KKwk8L21ldGhvZD4KKwkKKyAgCTxtZXRob2QgbmFtZT0iZHJhd0JvZHkiIGFyZ3M9InRhcmdldE9iaix4MSx5MSx4Mix5MixmaWxsLGxpbmVXaWR0aCI+CisgICAJCTwhW0NEQVRBWworICAgIAkJCisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJkcmF3Qm9keTogIix0YXJnZXRPYmosbGluZVdpZHRoKTsKKyAgICAgICAgCisgICAgCQl0YXJnZXRPYmoubGluZVdpZHRoID0gbGluZVdpZHRoOworICAgIAkJdGFyZ2V0T2JqLmJlZ2luUGF0aCgpOworICAgIAkJdGFyZ2V0T2JqLm1vdmVUbyh4MSx5MSk7CisgICAgCQl0YXJnZXRPYmoubGluZVRvKHgxLHkyKTsKKyAgICAJCXRhcmdldE9iai5saW5lVG8oeDIseTIpOworICAgIAkJdGFyZ2V0T2JqLmxpbmVUbyh4Mix5MSk7CisgICAgCQl0YXJnZXRPYmoubGluZVRvICh4MSx5MSk7CisgICAgCQl0YXJnZXRPYmouY2xvc2VQYXRoKCk7CisKKyAgICAJCXRhcmdldE9iai5maWxsU3R5bGUgPSBmaWxsOworICAgIAkJdGFyZ2V0T2JqLmZpbGwoKTsKKyAgICAJCQorICAgIAldXT4gICAKKyAgCTwvbWV0aG9kPiAJCisKKwk8bWV0aG9kIG5hbWU9ImRyYXdEb3R0ZWRMaW5lIiBhcmdzPSJ0YXJnZXRPYmosc3RhcnR4LHN0YXJ0eSxlbmR4LGVuZHksc3Ryb2tlLGxpbmVXaWR0aCI+CisgICAgCTwhW0NEQVRBWworICAgIAkJLy92YXIgZHJhd09iaiA9IG5ldyBsei5kcmF3dmlldyh0YXJnZXRPYmose3dpZHRoOnRoaXMud2lkdGgsaGVpZ2h0OnRoaXMuaGVpZ2h0fSk7CSAgICAKKyAgICAJCS8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImRyYXdEb3R0ZWRMaW5lOiAiLHRhcmdldE9iaixzdGFydHgsc3RhcnR5LGVuZHgsZW5keSxzdHJva2UsbGluZVdpZHRoKTsKKwkgICAgCU1hdGgubGluZWFyVHdlZW4gPSBmdW5jdGlvbiAodCwgYiwgYywgZCkgeworCQkJICAgIHJldHVybiBjKnQvZCArIGI7CisJCQl9OworCisgICAgCQkvL2lmKCRkZWJ1ZykgIERlYnVnLndyaXRlKCJkcmF3RGFzaExpbmU6ICIsdE9iamVjdCk7CisgICAgCQl2YXIgdHggPSBlbmR4OworICAgIAkJdmFyIHR5ID0gZW5keTsKKyAgICAJCXZhciBzeCA9IHN0YXJ0eDsKKyAgICAJCXZhciBzeSA9IHN0YXJ0eTsKKyAgICAJCXZhciBkaXN0YW5jZSA9IE1hdGguc3FydChNYXRoLnBvdyh0eC1zeCwyKStNYXRoLnBvdyh0eS1zeSwyKSk7IAorICAgIAkJdmFyIHN0ZXBzID0gTWF0aC5mbG9vcihkaXN0YW5jZSAgLyA1ICk7IAorICAgIAkJLy9pZigkZGVidWcpICBEZWJ1Zy53cml0ZSgic3RlcHM6ICIsc3RlcHMpOworICAgIAkJdmFyIGdhcCA9IGZhbHNlOworICAgIAkJLy9pZigkZGVidWcpICBEZWJ1Zy53cml0ZSgiZ2FwMTogIixnYXApOworCSAgICAgICAgZm9yICh2YXIgaSA9IDE7IGk8PXN0ZXBzOyArK2kpIHsKKwkgICAgICAgICAgICB2YXIgY3R4ID0gTWF0aC5saW5lYXJUd2VlbihpLCBzeCwgdHgtc3gsc3RlcHMpOyAgICAvL2VxdWF0aW9ucyBieSBSLlBlbm5lciEKKwkgICAgICAgICAgICB2YXIgY3R5ID0gTWF0aC5saW5lYXJUd2VlbihpLCBzeSwgdHktc3ksc3RlcHMpOworCSAgICAgICAgICAgIC8vaWYoJGRlYnVnKSAgRGVidWcud3JpdGUoImdhcDI6ICIsZ2FwKTsKKwkgICAgICAgICAgICBnYXAgPSAhZ2FwOyAgICAvL2Fid2VjaHNlbG5kIGx1ZWNrZS9uaWNodGx1ZWNrZQorCSAgICAgICAgICAgIGlmKCFnYXApIHsKKwkgICAgICAgICAgICAJLy9pZigkZGVidWcpICBEZWJ1Zy53cml0ZShjc3gsY3N5LCJ8IixjdHgsY3R5KTsKKyAgICAJCQkJdGFyZ2V0T2JqLnN0cm9rZVN0eWxlID0gc3Ryb2tlOworICAgIAkJCQl0YXJnZXRPYmoubGluZVdpZHRoID0gbGluZVdpZHRoOworICAgIAkJCQl0YXJnZXRPYmouYmVnaW5QYXRoKCk7ICAgIAkJCSAgICAgICAgICAgIAkKKwkgICAgICAgICAgICAgICAJdGFyZ2V0T2JqLm1vdmVUbyhjc3gsY3N5KTsKKwkgICAgICAgICAgICAgICAgdGFyZ2V0T2JqLmxpbmVUbyhjdHgsY3R5KTsKKwkgICAgICAgICAgICAgICAgdGFyZ2V0T2JqLnN0cm9rZSgpOworCSAgICAgICAgICAgIH0KKwkgICAgICAgICAgICBjc3ggPWN0eDsKKwkgICAgICAgICAgICBjc3kgPSBjdHk7CisJICAgICAgICB9ICAgICAgIAkJICAJCQorICAgIAldXT4KKwk8L21ldGhvZD4JCisJCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcGFuZWwvcmVzb3VyY2VzL2Fycm93X2N1cnNvci5mbGEgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcGFuZWwvcmVzb3VyY2VzL2Fycm93X2N1cnNvci5mbGEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzkzN2JhYgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9wYW5lbC9yZXNvdXJjZXMvYXJyb3dfY3Vyc29yLmZsYQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcGFuZWwvcmVzb3VyY2VzL2Fycm93X2N1cnNvci5zd2YgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcGFuZWwvcmVzb3VyY2VzL2Fycm93X2N1cnNvci5zd2YKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQxZDhkYwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9wYW5lbC9yZXNvdXJjZXMvYXJyb3dfY3Vyc29yLnN3ZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcGFuZWwvcmVzb3VyY2VzL2Fycm93X2N1cnNvcl9yZXNpemVfdG9vbC5mbGEgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcGFuZWwvcmVzb3VyY2VzL2Fycm93X2N1cnNvcl9yZXNpemVfdG9vbC5mbGEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDdmNmJhOQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9wYW5lbC9yZXNvdXJjZXMvYXJyb3dfY3Vyc29yX3Jlc2l6ZV90b29sLmZsYQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcGFuZWwvcmVzb3VyY2VzL2Fycm93X2N1cnNvcl9yZXNpemVfdG9vbC5zd2YgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcGFuZWwvcmVzb3VyY2VzL2Fycm93X2N1cnNvcl9yZXNpemVfdG9vbC5zd2YKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVhMmU5NwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9wYW5lbC9yZXNvdXJjZXMvYXJyb3dfY3Vyc29yX3Jlc2l6ZV90b29sLnN3ZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcGFuZWwvcmVzb3VyY2VzL2Fycm93X2N1cnNvcl9yb3RhdGVfdG9vbC5mbGEgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcGFuZWwvcmVzb3VyY2VzL2Fycm93X2N1cnNvcl9yb3RhdGVfdG9vbC5mbGEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODIzY2UwOAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9wYW5lbC9yZXNvdXJjZXMvYXJyb3dfY3Vyc29yX3JvdGF0ZV90b29sLmZsYQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcGFuZWwvcmVzb3VyY2VzL2Fycm93X2N1cnNvcl9yb3RhdGVfdG9vbC5zd2YgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcGFuZWwvcmVzb3VyY2VzL2Fycm93X2N1cnNvcl9yb3RhdGVfdG9vbC5zd2YKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWJiYjkwYwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9wYW5lbC9yZXNvdXJjZXMvYXJyb3dfY3Vyc29yX3JvdGF0ZV90b29sLnN3ZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcGFuZWwvcmVzb3VyY2VzL2Fycm93X2N1cnNvcl90b29sLmZsYSBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9wYW5lbC9yZXNvdXJjZXMvYXJyb3dfY3Vyc29yX3Rvb2wuZmxhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkYTc5NGEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcGFuZWwvcmVzb3VyY2VzL2Fycm93X2N1cnNvcl90b29sLmZsYQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcGFuZWwvcmVzb3VyY2VzL2Fycm93X2N1cnNvcl90b29sLnBuZyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9wYW5lbC9yZXNvdXJjZXMvYXJyb3dfY3Vyc29yX3Rvb2wucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5ZjMxNjkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcGFuZWwvcmVzb3VyY2VzL2Fycm93X2N1cnNvcl90b29sLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcGFuZWwvcmVzb3VyY2VzL2JveF9jbG9zZWRfc21hbGwuZmxhIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3BhbmVsL3Jlc291cmNlcy9ib3hfY2xvc2VkX3NtYWxsLmZsYQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjBkOTAxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3BhbmVsL3Jlc291cmNlcy9ib3hfY2xvc2VkX3NtYWxsLmZsYQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcGFuZWwvcmVzb3VyY2VzL2JveF9jbG9zZWRfc21hbGwucG5nIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3BhbmVsL3Jlc291cmNlcy9ib3hfY2xvc2VkX3NtYWxsLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTM0NTEwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3BhbmVsL3Jlc291cmNlcy9ib3hfY2xvc2VkX3NtYWxsLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcGFuZWwvcmVzb3VyY2VzL2JveF9vcGVuX3NtYWxsLmZsYSBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9wYW5lbC9yZXNvdXJjZXMvYm94X29wZW5fc21hbGwuZmxhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjMDRiYzIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcGFuZWwvcmVzb3VyY2VzL2JveF9vcGVuX3NtYWxsLmZsYQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcGFuZWwvcmVzb3VyY2VzL2JveF9vcGVuX3NtYWxsLnBuZyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9wYW5lbC9yZXNvdXJjZXMvYm94X29wZW5fc21hbGwucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3NTk3YTMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcGFuZWwvcmVzb3VyY2VzL2JveF9vcGVuX3NtYWxsLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcGFuZWwvcmVzb3VyY2VzL2RyYXdfYm94X2hvcml6b250YWwuZmxhIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3BhbmVsL3Jlc291cmNlcy9kcmF3X2JveF9ob3Jpem9udGFsLmZsYQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjMxNTZkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3BhbmVsL3Jlc291cmNlcy9kcmF3X2JveF9ob3Jpem9udGFsLmZsYQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcGFuZWwvcmVzb3VyY2VzL2RyYXdfYm94X2hvcml6b250YWwuc3dmIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3BhbmVsL3Jlc291cmNlcy9kcmF3X2JveF9ob3Jpem9udGFsLnN3ZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjc0OGU1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3BhbmVsL3Jlc291cmNlcy9kcmF3X2JveF9ob3Jpem9udGFsLnN3ZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcGFuZWwvcmVzb3VyY2VzL2RyYXdfYm94X3ZlcnRpY2FsLmZsYSBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9wYW5lbC9yZXNvdXJjZXMvZHJhd19ib3hfdmVydGljYWwuZmxhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkZGQ5YTQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcGFuZWwvcmVzb3VyY2VzL2RyYXdfYm94X3ZlcnRpY2FsLmZsYQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcGFuZWwvcmVzb3VyY2VzL2RyYXdfYm94X3ZlcnRpY2FsLnN3ZiBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9wYW5lbC9yZXNvdXJjZXMvZHJhd19ib3hfdmVydGljYWwuc3dmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3ZmZhMmMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcGFuZWwvcmVzb3VyY2VzL2RyYXdfYm94X3ZlcnRpY2FsLnN3ZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcGFuZWwvcmVzb3VyY2VzL2xpYnJhcnkubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3BhbmVsL3Jlc291cmNlcy9saWJyYXJ5Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Y2ZjZmQ0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3BhbmVsL3Jlc291cmNlcy9saWJyYXJ5Lmx6eApAQCAtMCwwICsxLDM4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCQorCTwhLS0gQVBMIEF1dGhvciBzZWJhd2FnbmVyIC0tPgorCTxyZXNvdXJjZSBuYW1lPSJjb25mZXJlbmNlQm94X2J1dHRvbl9taW5fc21hbGxfcnNjIiBzcmM9ImJveF9jbG9zZWRfc21hbGwucG5nIiAvPgorICAgIDwhLS0gQVBMIEF1dGhvciBzZWJhd2FnbmVyIC0tPgorICAgIDxyZXNvdXJjZSBuYW1lPSJjb25mZXJlbmNlQm94X2J1dHRvbl9tYXhfc21hbGxfcnNjIiBzcmM9ImJveF9vcGVuX3NtYWxsLnBuZyIgLz4KKyAgICA8IS0tIEFQTCBBdXRob3Igc2ViYXdhZ25lciAtLT4KKwk8cmVzb3VyY2UgbmFtZT0iYXJyb3dfZHJhd19wYW5lbF9jdXJzb3IiIHNyYz0iYXJyb3dfY3Vyc29yLnN3ZiIgLz4KKwk8IS0tIEFQTCBBdXRob3Igc2ViYXdhZ25lciAtLT4KKwk8cmVzb3VyY2UgbmFtZT0iYXJyb3dfcmVzaXplX3BhbmVsX2N1cnNvciIgc3JjPSJhcnJvd19jdXJzb3JfcmVzaXplX3Rvb2wuc3dmIiAvPgorCTwhLS0gQVBMIEF1dGhvciBzZWJhd2FnbmVyIC0tPgorCTxyZXNvdXJjZSBuYW1lPSJhcnJvd19yb3RhdGVfcGFuZWxfY3Vyc29yIiBzcmM9ImFycm93X2N1cnNvcl9yb3RhdGVfdG9vbC5zd2YiIC8+CisJPCEtLSBBUEwgQXV0aG9yIHNlYmF3YWduZXIgLS0+CisJPHJlc291cmNlIG5hbWU9ImRyYXdfYm94X3ZlcnRpY2FsX3JzYyIgc3JjPSJkcmF3X2JveF92ZXJ0aWNhbC5zd2YiIC8+CisJPCEtLSBBUEwgQXV0aG9yIHNlYmF3YWduZXIgLS0+CisJPHJlc291cmNlIG5hbWU9ImRyYXdfYm94X2hvcml6b250YWxfcnNjIiBzcmM9ImRyYXdfYm94X2hvcml6b250YWwuc3dmIiAvPgorICAgIAorPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3ByZXNlbnRlci9ib3hJbml0RWZmZWN0Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9wcmVzZW50ZXIvYm94SW5pdEVmZmVjdC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDM5MWM5MwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9wcmVzZW50ZXIvYm94SW5pdEVmZmVjdC5sengKQEAgLTAsMCArMSw1NSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9ImJveEluaXRFZmZlY3QiIGV4dGVuZHM9InZpZXciIHdpZHRoPSIxMDAiIGhlaWdodD0iMjAiIAorICAgIG9wYWNpdHk9IjAuMyIgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdiYXNlYmdjb2xvcml6ZXInKSB9IiA+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJ6aWVseCIgdmFsdWU9IjIwMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iemllbHkiIHZhbHVlPSIyMDAiIHR5cGU9Im51bWJlciIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9InppZWx3aWR0aCIgdmFsdWU9IjEwMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iemllbGhlaWdodCIgdmFsdWU9IjEwMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0ib2JqUmVmIiB2YWx1ZT0ibnVsbCIgLz4KKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgIAkvL0l0IHNlZW1zIGxpa2UgeW91IG5lZWQgYWRkaXRpb25hbGx5IHRvIHN0YXJ0IGl0IG9uaW5pdCwgdGhlIHN0YXJ0ID0gdHJ1ZSB3b3JrcworICAgIAkvL29ubHkgZm9yIHRoZSBmaXJzdCBpbml0aWFsaXphdGlvbiwgc2ViYXdhZ25lciAxOS4wMy4yMDEyCisgICAgCS8vdGhlIGZvbGxvd2luZyBjYWxsIHNlZW1zIHRvIGJlIHJlZHVuZGFudCBhZnRlciB1c2luZyBub24tZGVwcmVjYXRlZCBhdHRyaWJ1dGUgbmFtZSAtLSBzb2xvbWF4IDIwMTIuMDcuMjAgCisgICAgCXRoaXMuYW5tLnNldEF0dHJpYnV0ZSgnc3RhcnRlZCcsIHRydWUpOworICAgIDwvaGFuZGxlcj4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InNlbmRTdG9wIj4KKyAgICAgICAgdGhpcy5vYmpSZWYuc2VuZEFubmlDb21wbGV0ZSgpOworICAgICAgICB0aGlzLmRlc3Ryb3koKTsKKyAgICA8L21ldGhvZD4KKworICAgIDxhbmltYXRvcmdyb3VwIG5hbWU9ImFubSIgc3RhcnRlZD0idHJ1ZSIgcHJvY2Vzcz0ic2ltdWx0YW5lb3VzIiAKKyAgICAgICAgCQlkdXJhdGlvbj0iNTAwIiBvbnN0b3A9InRoaXMucGFyZW50LnNlbmRTdG9wKCkiID4KKyAgICAgICAgPGFuaW1hdG9yIGF0dHJpYnV0ZT0ieCIgdG89IiRvbmNleyBwYXJlbnQucGFyZW50LnppZWx4IH0iIC8+CisgICAgICAgIDxhbmltYXRvciBhdHRyaWJ1dGU9InkiIHRvPSIkb25jZXsgcGFyZW50LnBhcmVudC56aWVseSB9IiAvPgorICAgICAgICA8YW5pbWF0b3IgYXR0cmlidXRlPSJ3aWR0aCIgdG89IiRvbmNleyBwYXJlbnQucGFyZW50LnppZWx3aWR0aCB9IiAvPgorICAgICAgICA8YW5pbWF0b3IgYXR0cmlidXRlPSJoZWlnaHQiIHRvPSIkb25jZXsgcGFyZW50LnBhcmVudC56aWVsaGVpZ2h0IH0iIC8+CisgICAgPC9hbmltYXRvcmdyb3VwPgorICAgIAorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3ByZXNlbnRlci9ndWlQcmVzZW50ZXIubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3ByZXNlbnRlci9ndWlQcmVzZW50ZXIubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViMWVkOWUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcHJlc2VudGVyL2d1aVByZXNlbnRlci5sengKQEAgLTAsMCArMSw1NDYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+ICAgICAKKworPGNsYXNzIG5hbWU9Imd1aVByZXNlbnRlciIgZXh0ZW5kcz0idmlldyIgd2lkdGg9IjI1MCIgaGVpZ2h0PSI0MDAiIAorICAgIGNsaWNrYWJsZT0iJG9uY2V7IHRoaXMuaXNkcmFnYWJsZSB9IgorCW9ubW91c2Vkb3duPSJ0aGlzLl9zdGFydERyYWdTdGF0ZSh0aGlzKSIgb25tb3VzZXVwPSJ0aGlzLl9yZW1vdmVEcmFnU3RhdGUodGhpcykiID4KKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgICAgICB0aGlzLnNldFNoYWRvdygpOworICAgIDwvaGFuZGxlcj4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InNldFNoYWRvdyI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICBpZiAodGhpcy5pc2luaXRlZCAmJiB0aGlzLmhhc3NoYWRvdyl7CisgICAgICAgICAgICB0aGlzLm5vcm1hbE1DID0gdGhpcy5nZXREaXNwbGF5T2JqZWN0KCk7CisgICAgICAgICAgICB0aGlzLmRpc3BsYWNlbWVudE1hcCA9IG5ldyBmbGFzaC5maWx0ZXJzLkRyb3BTaGFkb3dGaWx0ZXIoKTsKKyAgICAgICAgICAgIHRoaXMubm9ybWFsTUMuZmlsdGVycyA9IFt0aGlzLmRpc3BsYWNlbWVudE1hcF07CisgICAgICAgIH0KKyAgICAgICAgXV0+ICAgICAgICAgICAgICAKKyAgICA8L21ldGhvZD4JICAgIAorCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJoYXNzaGFkb3ciIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPgorICAgICAgICAgIAorCTwhLS0tIFRoZSBUaXRsZSBvZiB0aGlzIEJveCAtLT4KKwk8YXR0cmlidXRlIG5hbWU9InRpdGxlIiB2YWx1ZT0iZGVmYXVsdHRpdGxlIiB0eXBlPSJzdHJpbmciIC8+CisJCisJPCEtLS0gaWYgdGhpcyBCb3ggc2hvdWxkIGJlIGNsb3NlYWJsZSAtLT4KKwk8YXR0cmlidXRlIG5hbWU9ImNsb3NhYmxlIiB2YWx1ZT0idHJ1ZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICAKKyAgICA8IS0tLSBpZiB0aGlzIEJveCBzaG91bGQgYmUgcmVzaXplYWJsZSAgLS0+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJyZXNpemVhYmxlIiB2YWx1ZT0idHJ1ZSIgdHlwZT0iYm9vbGVhbiIgLz4KKwkKKwk8IS0tLSBDYW4gdGhpcyBCb3ggYmUgZG9ja2VkIHRvIG90aGVycyBhbmQgCisJCQl0aGUgd2lkdGgvaGVpZ2h0IG9mIHBhcmVudCBjb21wb2VudCBiYXJyaWVyIC0tPgorCTxhdHRyaWJ1dGUgbmFtZT0iZG9ja2luZyIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CisJCisJPCEtLS0gSGFyZCB0byBleHBsYWluIGJ1dCBpdHMgY2xlYXIgaWYgeW91IHBsYXkgYXJvdW5kIAorCQl3aXRoIHRoYXQuIEl0cyB0aGUgbnVtYmVyIG9mIG1pbmltdW0gcGl4ZWxzIGJlZm9yZSAKKwkJdGhlICJkb2NraW5nIiBlZmZlY3Qgd2lsbCBiZSB0aGVyZSAtLT4KKwk8YXR0cmlidXRlIG5hbWU9ImRvY2tpbmdiYXJyaWVyIiB2YWx1ZT0iMTUiIHR5cGU9Im51bWJlciIgLz4KKworCTwhLS0tQGtleXdvcmRzIHByaXZhdGUgdGhlIGxpc3Qgb2YgY29ubmVjdGVkIHZpZXdzIC0tPgorCTxhdHRyaWJ1dGUgbmFtZT0iZG9ja2luZ2xpc3QiIHZhbHVlPSJudWxsIiAvPgorCQorCTwhLS0tIEBrZXl3b3JkcyBwcml2YXRlIHRlbXAtb2xkZXIgb2YgeC1kaXN0YW5jZSB0byBkb2NrZWQtQm94ICAtLT4KKwk8YXR0cmlidXRlIG5hbWU9InRlbXBYZGlzdGFuY2UiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisKKwk8IS0tLSBAa2V5d29yZHMgcHJpdmF0ZSB0ZW1wLW9sZGVyIG9mIHktZGlzdGFuY2UgdG8gZG9ja2VkLUJveCAgLS0+CisJPGF0dHJpYnV0ZSBuYW1lPSJ0ZW1wWWRpc3RhbmNlIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorCQorCTwhLS0tIEBrZXl3b3JkcyBwcml2YXRlIGlzIHRoZSBCb3ggbWluaW1pemVkICAtLT4KKwk8YXR0cmlidXRlIG5hbWU9Imlzb3BlbiIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CisJCisJPCEtLS0gQGtleXdvcmRzIHByaXZhdGUgaXMgdGhlIEJveCBtaW5pbWl6ZWQgIC0tPgorCTxhdHRyaWJ1dGUgbmFtZT0ib3BlbiIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CQorCQorCTwhLS0tIEBrZXl3b3JkcyBwcml2YXRlICAtLT4KKwk8YXR0cmlidXRlIG5hbWU9ImluaXRoZWlnaHQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisgICAgCisgICAgPCEtLS0gQGtleXdvcmRzIHByaXZhdGUgc2hvdyBtaW5pbWl6ZSwgbWF4aW1pemUsIGNsb3NlIGJ1dHRvbnMgLS0+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJmdWxsVG9vbEJhciIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJtYXhpbWl6YWJsZSIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJtaW5pbWl6YWJsZSIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJtaW5pbWl6ZWQiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9ImN1c3RvbU1pbmltaXplTWV0aG9kIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpbml0aWFsSGVpZ2h0IiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIi8+CisgICAgCisgICAgPCEtLS0gQGtleXdvcmRzIHByaXZhdGUgaWYgdGhpcyB3aW5kb3cgaXMgZHJhZ2FibGUgLS0+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpc2RyYWdhYmxlIiB2YWx1ZT0idHJ1ZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9Il9iYXJtZW51QnV0dG9uUmVmIiB2YWx1ZT0ibnVsbCIgLz4KKyAgICAKKyAgICA8IS0tLSBpZiB0aGlzIEJveCBzaG91bGQgYmUgcmVzaXplYWJsZSAgLS0+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpc21heGltaXplZCIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPiAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9Im1heGlfeCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9Im1heGlfeSIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9Im1heGlfaGVpZ2h0IiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibWF4aV93aWR0aCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9ImlzcmVzaXplaW5nIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgCisJPGF0dHJpYnV0ZSBuYW1lPSJsYWJlbGlkIiB0eXBlPSJudW1iZXIiIHNldHRlcj0ic2V0TGFiZWxJZChsYWJlbGlkKSIgLz4KKwk8bWV0aG9kIG5hbWU9InNldExhYmVsSWQiIGFyZ3M9ImlkIj4KKwkJdGhpcy5sYWJlbGlkPWlkOworCQl0aGlzLnNldEF0dHJpYnV0ZSgndGl0bGUnLGNhbnZhcy5nZXRMYWJlbE5hbWUodGhpcy5sYWJlbGlkKSk7CisJPC9tZXRob2Q+ICAgIAorCQorCTwhLS0tIHRoZSBFdmVudCB3aWxsIGJlIHRocm93biBpZiB5b3UgY2xvc2UgdGhlIEJveCAtLT4KKwk8ZXZlbnQgbmFtZT0ib25jbG9zZSIgLz4gICAgCisgICAgCisJPCEtLS0gdGhlIEV2ZW50IHdpbGwgYmUgdGhyb3duIGlmIHlvdSBkbyBjbGljayBvbiBpdCBhbmQgZHJhZyAtLT4KKwk8ZXZlbnQgbmFtZT0ib25hY3RpdmF0ZSIgLz4gICAKKyAgICAKKyAgICA8IS0tLSB0aGlzIEV2ZW50IHdpbGwgYmUgdHJpZ2dlcmVkIGFmdGVyIHJlc2l6aW5nIC0tPgorICAgIDxldmVudCBuYW1lPSJvbnJlc2l6ZWQiIC8+CisgICAgCisJPCEtLS0gQGtleXdvcmRzIHByaXZhdGUgc3RvcmUgaW5pdGlhbCBoZWlnaHQgc28gdG9nZ2xlb3BlbiBjYW4gcmVzZXQgaGVpZ2h0ICAtLT4KKwk8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorCQl0aGlzLmluaXRoZWlnaHQ9dGhpcy5oZWlnaHQ7CisJCS8vRGVidWcud3JpdGUoInRoaXMuaXNvcGVuOiAiLHRoaXMuaXNvcGVuKTsKKwkJaWYgKCF0aGlzLm9wZW4pIHRvZ2dsZW9wZW4oKTsKKwk8L2hhbmRsZXI+CisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib253aWR0aCIgYXJncz0idyI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgaWYgKHRoaXMuaXNyZXNpemVpbmcpeworICAgICAgICAgICAgCWlmICh3PDQwKXsKKyAgICAgICAgICAgIAkJdGhpcy5zZXRBdHRyaWJ1dGUoJ3dpZHRoJyw0MSk7IAorICAgICAgICAgICAgCQl0aGlzLl9yZXNpemV2aWV3Lm9ubW91c2V1cC5zZW5kRXZlbnQoKTsKKyAgICAgICAgICAgIAl9CisgICAgICAgICAgICAgICAgaWYgKHc8X3RpdGxlYmFyLl90aXRsZS53aWR0aCs3MCkgeworICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnd2lkdGgnLF90aXRsZWJhci5fdGl0bGUud2lkdGgrNzEpOyAKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fcmVzaXpldmlldy5vbm1vdXNldXAuc2VuZEV2ZW50KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICBdXT4KKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib25oZWlnaHQiIGFyZ3M9ImgiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIGlmICh0aGlzLmlzcmVzaXplaW5nKXsKKyAgICAgICAgICAgICAgICBpZiAoaDw0MCkgeworICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnaGVpZ2h0Jyw0MSk7IAorICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZXNpemV2aWV3Lm9ubW91c2V1cC5zZW5kRXZlbnQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIF1dPgorICAgIDwvaGFuZGxlcj4KKyAgICAKKwk8bWV0aG9kIG5hbWU9ImNsb3NlIj4KKwkJaWYgKHRoaXMub25jbG9zZSkgdGhpcy5vbmNsb3NlLnNlbmRFdmVudCgpOworICAgICAgICBpZiAodGhpcy5fYmFybWVudUJ1dHRvblJlZiE9bnVsbCl7CisgICAgICAgICAgICB0aGlzLl9iYXJtZW51QnV0dG9uUmVmLmRlc3Ryb3koKTsKKyAgICAgICAgICAgIHRoaXMuX2Jhcm1lbnVCdXR0b25SZWYucGFyZW50Lm9ud2lkdGguc2VuZEV2ZW50KCk7CisgICAgICAgIH0KKwkJdGhpcy5kZXN0cm95KCk7CisJPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJtaW5pbWl6ZSI+CisgICAgICAgIDwhW0NEQVRBWworCSAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoIm1pbmltaXplZCIsdHJ1ZSk7CisJICAgICAgICAKKwkgICAgICAgIHRoaXMuX3RpdGxlYmFyLl90b29sYmFyLl9taW5pbWl6ZS5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKwkgICAgICAgIHRoaXMuX3RpdGxlYmFyLl90b29sYmFyLl9tYXhpbWl6ZTIuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworCSAgICAgICAgCisJICAgICAgICBpZiAodGhpcy5jdXN0b21NaW5pbWl6ZU1ldGhvZCkgeworCSAgICAgICAgICAgIHJldHVybjsKKwkgICAgICAgIH0KKwkgICAgICAgIAorCSAgICAgICAgZm9yICh2YXIgZWcgaW4gdGhpcy5zdWJ2aWV3cykgeworCSAgICAgICAgICAgIGlmICh0aGlzLnN1YnZpZXdzW2VnXS5uYW1lICE9ICJfdGl0bGViYXIiIAorCSAgICAgICAgICAgICAgICAgICAgJiYgdGhpcy5zdWJ2aWV3c1tlZ10ubmFtZSAhPSAiX2JnIikgeworCSAgICAgICAgICAgICAgICAgdGhpcy5zdWJ2aWV3c1tlZ10uc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7ICAgCisJICAgICAgICAgICAgfQorCSAgICAgICAgfQorICAgICAgICAgICAgCisJICAgICAgICB0aGlzLmluaXRpYWxIZWlnaHQgPSB0aGlzLmhlaWdodDsKKwkgICAgICAgIC8vdGhpcy5zZXRBdHRyaWJ1dGUoImhlaWdodCIsMjApOworICAgICAgICAgICAgdGhpcy5fbWluaW1pemVab29tLnNldEF0dHJpYnV0ZSgidG8iLDIwKTsKKyAgICAgICAgICAgIHRoaXMuX21pbmltaXplWm9vbS5zZXRBdHRyaWJ1dGUoJ3N0YXJ0ZWQnLCB0cnVlKTsKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJyZW1pbmltaXplIj4KKyAgICAgICAgPCFbQ0RBVEFbCisJICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgibWluaW1pemVkIixmYWxzZSk7CisJICAgICAgICAKKwkgICAgICAgIHRoaXMuX3RpdGxlYmFyLl90b29sYmFyLl9taW5pbWl6ZS5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisJICAgICAgICB0aGlzLl90aXRsZWJhci5fdG9vbGJhci5fbWF4aW1pemUyLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworCSAgICAgICAgCisJICAgICAgICBpZiAodGhpcy5jdXN0b21NaW5pbWl6ZU1ldGhvZCkgeworCSAgICAgICAgICAgIHJldHVybjsKKwkgICAgICAgIH0KKwkgICAgICAgIAorCSAgICAgICAgLy90aGlzLnNldEF0dHJpYnV0ZSgiaGVpZ2h0Iix0aGlzLmluaXRpYWxIZWlnaHQpOyAKKyAgICAgICAgICAgIHRoaXMuX21pbmltaXplWm9vbS5zZXRBdHRyaWJ1dGUoInRvIix0aGlzLmluaXRpYWxIZWlnaHQpOworICAgICAgICAgICAgdGhpcy5fbWluaW1pemVab29tLnNldEF0dHJpYnV0ZSgnc3RhcnRlZCcsIHRydWUpOworICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InJlbWluaW1pemVDb21wbGV0ZSI+CisgICAgICAgIDwhW0NEQVRBWworCSAgICAgICAgaWYgKCF0aGlzLm1pbmltaXplZCkgeworCSAgICAgICAgICAgIAorCSAgICAgICAgICAgIGZvciAodmFyIGVnIGluIHRoaXMuc3Vidmlld3MpIHsKKwkgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3Vidmlld3NbZWddLm5hbWUgIT0gIl90aXRsZWJhciIgCisJICAgICAgICAgICAgICAgICAgICAgICAgJiYgdGhpcy5zdWJ2aWV3c1tlZ10ubmFtZSAhPSAiX2JnIikgeworCSAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3Vidmlld3NbZWddLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsgICAKKwkgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAKKwkgICAgICAgICAgICBpZiAoIXRoaXMucmVzaXplYWJsZSkgeworCSAgICAgICAgICAgICAgICB0aGlzLl9yZXNpemV2aWV3LnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOyAgIAorCSAgICAgICAgICAgIH0KKwkgICAgICAgIAorCSAgICAgICAgfQorICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9InRvZ2dsZW9wZW4iPgorCQkvLy8vLy9EZWJ1Zy53cml0ZSgidGhpcy5pc29wZW4iLHRoaXMuaXNvcGVuKTsKKwkJdGhpcy5zZXRBdHRyaWJ1dGUoJ2lzb3BlbicsIXRoaXMuaXNvcGVuKTsKKwkJaWYgKHRoaXMuaXNvcGVuKXsKKwkJCV9jYWxjZG9ja2luZ0xpc3QoKTsKKwkJCWZvciAodmFyIGVnIGluIHRoaXMuZG9ja2luZ2xpc3QpeworCQkJCWlmKHRoaXMuZG9ja2luZ2xpc3RbZWddLmRvY2tpbmcpeworCQkJCQkvLy8vLy9EZWJ1Zy53cml0ZSgidGhpcy5kb2NraW5nbGlzdFtlZ106ICIsdGhpcy5kb2NraW5nbGlzdFtlZ10udGl0bGUpOworCQkJCQkvLy8vLy9EZWJ1Zy53cml0ZSgib3BlbiBuZXcgeSIsdGhpcy55K3RoaXMuaW5pdGhlaWdodCk7CisJCQkJCXRoaXMuZG9ja2luZ2xpc3RbZWddLnRvZ2dsZU9wZW5CeVBhcmVudCh0aGlzLmluaXRoZWlnaHQtMjIpOworCQkJCQl0aGlzLmRvY2tpbmdsaXN0W2VnXS5zZXRBdHRyaWJ1dGUoJ3knLHRoaXMueSt0aGlzLmluaXRoZWlnaHQpOworCQkJCQkKKwkJCQl9CisJCQl9CQkJCisJCQl0aGlzLnNldEF0dHJpYnV0ZSgnaGVpZ2h0Jyx0aGlzLmluaXRoZWlnaHQpOworCQl9IGVsc2UgeworCQkJX2NhbGNkb2NraW5nTGlzdCgpOworCQkJZm9yICh2YXIgZWcgaW4gdGhpcy5kb2NraW5nbGlzdCl7CisJCQkJaWYodGhpcy5kb2NraW5nbGlzdFtlZ10uZG9ja2luZyl7CisJCQkJCS8vLy8vL0RlYnVnLndyaXRlKCJ0aGlzLmRvY2tpbmdsaXN0W2VnXTogIix0aGlzLmRvY2tpbmdsaXN0W2VnXS50aXRsZSk7CisJCQkJCXRoaXMuZG9ja2luZ2xpc3RbZWddLnRvZ2dsZU9wZW5CeVBhcmVudCgtKHRoaXMuaW5pdGhlaWdodC0yMikpOworCQkJCQl0aGlzLmRvY2tpbmdsaXN0W2VnXS5zZXRBdHRyaWJ1dGUoJ3knLHRoaXMueSsyMik7CisJCQkJfQorCQkJfQkKKwkJCXRoaXMuc2V0QXR0cmlidXRlKCdoZWlnaHQnLDIyKTsJCQorCQl9CisJPC9tZXRob2Q+CisJCisJPG1ldGhvZCBuYW1lPSJ0b2dnbGVPcGVuQnlQYXJlbnQiIGFyZ3M9ImNoYW5nZVkiPgorCQkvLy8vLy9EZWJ1Zy53cml0ZSgiKysrKysgdG9nZ2xlT3BlbkJ5UGFyZW50ICsrKysrIGNoYW5nZVk6ICIsdGhpcy50aXRsZSxjaGFuZ2VZKTsKKwkJdmFyIHRlbXBMaXN0PW5ldyBBcnJheSgpOworCQk8IVtDREFUQVsKKwkJLy9jaGVjayBmb3IgZG9ja2FibGUgc3R1ZmYgd2hpY2ggaXMgY29ubmVjdGVkIHRvIHRoaXMgQm94CisJCWZvciAodmFyIGVnIGluIHRoaXMucGFyZW50LnN1YnZpZXdzKXsKKwkJCS8vY2hlY2sgdGhhdCB5b3UgZG8gbm90IGNhbGMgd2l0aCB5b3Vyc2VsZgorCQkJaWYgKHRoaXMucGFyZW50LnN1YnZpZXdzW2VnXSE9dGhpcyAmJiB0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10uZG9ja2luZyl7CisJCQkJLy8gdGhlcmUgYXJlIDQgY2FzZXMgd2hpY2ggaGF2ZSB0byBiZSBwcm9vZmVkIHRvIGNoZWNrIGV2ZXJ5IHBvc3NpYmxlIHNpdHVhdGlvbgorCQkJCXZhciBwcm9vZj1mYWxzZTsKKwkJCQkvLy8vLy9EZWJ1Zy53cml0ZSgiZm91bmQgc29tZTogIix0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10udGl0bGUpOworCQkJCS8vdG9wIGJveC1ib3JkZXIKKwkJCQlpZiAgKCAoICgodGhpcy55K3RoaXMuaGVpZ2h0KS10aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueSkgPCAxICkgJiYgKCAoKHRoaXMueSt0aGlzLmhlaWdodCktdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLnkpID4gLTEgKSAmJiAoICh0aGlzLngrdGhpcy53aWR0aCkgPiB0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueCApICAmJiAoIHRoaXMueCA8ICh0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueCt0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ud2lkdGgpICkgKXsKKwkJCQkJcHJvb2Y9dHJ1ZTsKKwkJCQl9CisJCQkJCQorCQkJCWlmIChwcm9vZikgdGVtcExpc3QucHVzaCh0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10pOworCQkJfQorCQl9CisJCV1dPgorCQkvLy8vLy9EZWJ1Zy53cml0ZSgidGVtcExpc3QubGVuZ3RoOiAiLHRlbXBMaXN0Lmxlbmd0aCk7CisJCWlmICh0ZW1wTGlzdC5sZW5ndGghPTApeworCQkJZm9yICh2YXIgZWcgaW4gdGVtcExpc3QpeworCQkJCWlmKHRlbXBMaXN0W2VnXS5kb2NraW5nKXsKKwkJCQkJLy8vLy8vRGVidWcud3JpdGUoInRvZ2dsZU9wZW5CeVBhcmVudCAxIFtlZ10sY2hhbmdlWTogIix0ZW1wTGlzdFtlZ10udGl0bGUsY2hhbmdlWSk7CisJCQkJCXRlbXBMaXN0W2VnXS50b2dnbGVPcGVuQnlQYXJlbnQoY2hhbmdlWSk7CisJCQkJCXRlbXBMaXN0W2VnXS5zZXRBdHRyaWJ1dGUoJ3knLHRlbXBMaXN0W2VnXS55K2NoYW5nZVkpOworCQkJCX0KKwkJCX0JCisJCX0KKwkJCisJPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJhY3RpdmF0ZSI+CisgICAgICAgIHRoaXMub25hY3RpdmF0ZS5zZW5kRXZlbnQoKTsKKyAgICAgICAgdGhpcy5icmluZ1RvRnJvbnQoKTsKKyAgICAgICAgaWYgKHRoaXMuX2Jhcm1lbnVCdXR0b25SZWYhPW51bGwpIHRoaXMuX2Jhcm1lbnVCdXR0b25SZWYuc2VuZEFjdGl2ZVdpbmRvdyh0aGlzKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InJzYXBwbHkiPgorICAgICAgICB0aGlzLmlzcmVzaXplaW5nPXRydWU7CisgICAgICAgIHRoaXMucnMuYXBwbHkoKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InJzcmVtb3ZlIj4KKyAgICAgICAgdGhpcy5ycy5yZW1vdmUoKTsKKyAgICAgICAgdGhpcy5pc3Jlc2l6ZWluZz1mYWxzZTsKKyAgICAgICAgLy9EZWJ1Zy53cml0ZSgicnNyZW1vdmUiLHRoaXMsdGhpcy5pc2luaXRlZCk7CisgICAgICAgIHRoaXMub25yZXNpemVkLnNlbmRFdmVudCgpOworICAgIDwvbWV0aG9kPiAgICAKKyAgICAJCisJPCEtLS0gQGtleXdvcmRzIHByaXZhdGUgIC0tPgorCTxtZXRob2QgbmFtZT0iX3JlbW92ZURyYWdTdGF0ZSIgYXJncz0ib2JqIj4KKyAgICAgICAgaWYgKCF0aGlzLmlzbWF4aW1pemVkKXsKKyAgICAgICAgICAgIC8vSXQncyBpbXBvcnRhbnQgdG8gcmVtb3ZlIHRoZSBkcmFnZ2VyIGFuZCBkbyBkb2NraW5nIHN0dWZmIGJlZm9yZSB5b3UgY2hlY2sgZm9yIGNvbmVuY3RlZCBCb3hlcworICAgICAgICAgICAgZHJhZ2dlci5yZW1vdmUoKTsKKyAgICAgICAgICAgIGlmIChvYmo9PXRoaXMpeworICAgICAgICAgICAgICAgIGlmIChkb2NraW5nKSBhcnJhbmdlUG9zaXRpb24oKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKGRvY2tpbmcpIF9sb29rZm9yUGFyZW50T25seShvYmopOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgLy9jaGVjayBmb3IgY29ubmVjdGVkIEJveGVzCisgICAgICAgICAgICBmb3IgKHZhciBlZyBpbiB0aGlzLmRvY2tpbmdsaXN0KXsKKyAgICAgICAgICAgICAgICBpZih0aGlzLmRvY2tpbmdsaXN0W2VnXS5kb2NraW5nKXsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5kb2NraW5nbGlzdFtlZ10uX3JlbW92ZURyYWdTdGF0ZSh0aGlzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwk8L21ldGhvZD4KKworCisJCisJPCEtLS0gQGtleXdvcmRzIHByaXZhdGUKKwkJdGhlIGFyZyBvYmogaXMgbmVlZGVkIGJlY2F1c2UgdGhlIGRyYWdnaW5nIGNhbiBiZSBjYWxsZWQgYnkgdGhlIEJveCBpdHNlbGYKKwkJb3IgYnkgYSBCb3ggd2hpY2ggaXMgY29ubmVjdGVkIHRvIHRoaXMgQm94ISAgLS0+CisJPG1ldGhvZCBuYW1lPSJfc3RhcnREcmFnU3RhdGUiIGFyZ3M9Im9iaiI+CisgICAgICAgIHRoaXMuYWN0aXZhdGUoKTsKKyAgICAgICAgaWYgKCF0aGlzLmlzbWF4aW1pemVkKXsKKyAgICAgICAgICAgIF9jYWxjZG9ja2luZ0xpc3QoKTsKKyAgICAgICAgICAgIGZvciAodmFyIGVnIGluIHRoaXMuZG9ja2luZ2xpc3QpeworICAgICAgICAgICAgICAgIGlmKHRoaXMuZG9ja2luZ2xpc3RbZWddLmRvY2tpbmcpeworICAgICAgICAgICAgICAgICAgICB0aGlzLmRvY2tpbmdsaXN0W2VnXS5fc3RhcnREcmFnU3RhdGUodGhpcyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgLy9zdG9yZSBwb3NpdGlvbiBjYXVzZSBpdCB3YXNuJ3QgZHJhZ2dlZCBieSBpdHNlbGYKKyAgICAgICAgICAgIGlmIChvYmohPXRoaXMpeworICAgICAgICAgICAgICAgIHN0b3JlQWRqdXN0bWVudFRvUGFyZW50KG9iai54LG9iai55KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGRyYWdnZXIuYXBwbHkoKTsKKyAgICAgICAgfQorCTwvbWV0aG9kPgorCQorCTwhLS0tIENhbGMgdGhlIExpc3Qgb2YgQm94ZXMgd2hpY2ggd2lsbCBiZSBkcmFnZ2VkIGFuZCBzZXRwb3NpdGlvbiBpZiB0aGlzIEJveAorCQl3aWxsIGJlIGRyYWdnZWQsZG9ja2VkIG9yIG1pbmltaXplZC9tYXhpbWl6ZWQgIC0tPgorCTxtZXRob2QgbmFtZT0iX2NhbGNkb2NraW5nTGlzdCI+CisJCS8vQ2xlYXIgbGlzdCBvZiBjb25lbmN0ZWQgQm94ZXMKKwkJdGhpcy5kb2NraW5nbGlzdD1uZXcgQXJyYXkoKTsKKwkJPCFbQ0RBVEFbCisJCS8vY2hlY2sgZm9yIGRvY2thYmxlIHN0dWZmIHdoaWNoIGlzIGNvbm5lY3RlZCB0byB0aGlzIEJveAorCQlmb3IgKHZhciBlZyBpbiB0aGlzLnBhcmVudC5zdWJ2aWV3cyl7CisJCQkvL2NoZWNrIHRoYXQgeW91IGRvIG5vdCBjYWxjIHdpdGggeW91cnNlbGYKKwkJCWlmICh0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10hPXRoaXMgJiYgdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLmRvY2tpbmcpeworCQkJCS8vIHRoZXJlIGFyZSA0IGNhc2VzIHdoaWNoIGhhdmUgdG8gYmUgcHJvb2ZlZCB0byBjaGVjayBldmVyeSBwb3NzaWJsZSBzaXR1YXRpb24KKwkJCQl2YXIgcHJvb2Y9ZmFsc2U7CisKKwkJCQkvL3RvcCBib3gtYm9yZGVyCisJCQkJaWYgICggKCAoKHRoaXMueSt0aGlzLmhlaWdodCktdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLnkpIDwgMSApICYmICggKCh0aGlzLnkrdGhpcy5oZWlnaHQpLXRoaXMucGFyZW50LnN1YnZpZXdzW2VnXS55KSA+IC0xICkgJiYgKCAodGhpcy54K3RoaXMud2lkdGgpID4gdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLnggKSAgJiYgKCB0aGlzLnggPCAodGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLngrdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLndpZHRoKSApICl7CisJCQkJCXByb29mPXRydWU7CisJCQkJfQorCisJCQkJaWYgKHByb29mKSB0aGlzLmRvY2tpbmdsaXN0LnB1c2godGhpcy5wYXJlbnQuc3Vidmlld3NbZWddKTsKKwkJCX0KKwkJfQorCQldXT4KKwkJLy8vLy8vRGVidWcud3JpdGUoInRoaXMuZG9ja2luZ2xpc3QubGVuZ3RoOiIsdGhpcy5kb2NraW5nbGlzdC5sZW5ndGgpOworCTwvbWV0aG9kPgorCQorCTwhLS0tIEBrZXl3b3JkcyBwcml2YXRlICAtLT4KKwk8bWV0aG9kIG5hbWU9ImFycmFuZ2VQb3NpdGlvbiI+CisJCS8vZG8gdGhlIG1hZ2ljCisJCS8vdGhlIGlkZWEgaXM6IGxvb2sgZm9yIGFsbCBvbiB0aGUgdmlldyBjb250YWluZXIgb25lIGxldmVsIGFib3ZlIHRoaXMgb25lCisJCS8vYW5kIGxvb2sgZm9yIHRoZSB3aWR0aC9oZWlnaHQgYW5kIDAvMCBhbmQgbG9vayBmb3IgImRvY2thYmxlIiBzdHVmZiB0aGVyZQorCQl2YXIgbmV3eD10aGlzLng7CisJCXZhciBuZXd5PXRoaXMueTsKKwkgIAorCQk8IVtDREFUQVsKKwkJCQkKKwkJZm9yICh2YXIgZWcgaW4gdGhpcy5wYXJlbnQuc3Vidmlld3MpeworCQkJLy9jaGVjayB0aGF0IHlvdSBkbyBub3QgY2FsYyB3aXRoIHlvdXJzZWxmCisJCQlpZiAodGhpcy5wYXJlbnQuc3Vidmlld3NbZWddIT10aGlzICYmIHRoaXMucGFyZW50LnN1YnZpZXdzW2VnXS5kb2NraW5nKXsKKwkJCQkvLyB0aGVyZSBhcmUgNCBjYXNlcyB3aGljaCBoYXZlIHRvIGJlIHByb29mZWQgdG8gY2hlY2sgZXZlcnkgcG9zc2libGUgc2l0dWF0aW9uCisJCQkJLy9sZWZ0IGJveC1ib3JkZXIKKwkJCQlpZiAoICggKCh0aGlzLngrdGhpcy53aWR0aCktdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLngpIDwgdGhpcy5kb2NraW5nYmFycmllciApICYmICggKCh0aGlzLngrdGhpcy53aWR0aCktdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLngpID4gLXRoaXMuZG9ja2luZ2JhcnJpZXIgKSAmJiAgKCAodGhpcy55K3RoaXMuaGVpZ2h0KSA+IHRoaXMucGFyZW50LnN1YnZpZXdzW2VnXS55ICkgJiYgICggdGhpcy55IDwgKHRoaXMucGFyZW50LnN1YnZpZXdzW2VnXS55K3RoaXMucGFyZW50LnN1YnZpZXdzW2VnXS5oZWlnaHQpICkgKXsKKwkJCQkJbmV3eD0gKCB0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueCAtIHRoaXMud2lkdGggKTsKKwkJCQl9CisJCQkJLy9yaWdodCBib3gtYm9yZGVyCisJCQkJaWYgKCAoICgodGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLngrdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLndpZHRoKS10aGlzLngpPHRoaXMuZG9ja2luZ2JhcnJpZXIgKSAmJiAoICgodGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLngrdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLndpZHRoKS10aGlzLngpPi10aGlzLmRvY2tpbmdiYXJyaWVyICkgJiYgICggKHRoaXMueSt0aGlzLmhlaWdodCkgPiB0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueSApICYmICAoIHRoaXMueSA8ICh0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueSt0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10uaGVpZ2h0KSApICl7CisJCQkJCW5ld3g9ICggdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLnggKyB0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ud2lkdGggKTsKKwkJCQl9CisJCQkJLy90b3AgYm94LWJvcmRlcgorCQkJCWlmICAoICggKCh0aGlzLnkrdGhpcy5oZWlnaHQpLXRoaXMucGFyZW50LnN1YnZpZXdzW2VnXS55KSA8IHRoaXMuZG9ja2luZ2JhcnJpZXIgKSAmJiAoICgodGhpcy55K3RoaXMuaGVpZ2h0KS10aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueSkgPiAtdGhpcy5kb2NraW5nYmFycmllciApICYmICggKHRoaXMueCt0aGlzLndpZHRoKSA+IHRoaXMucGFyZW50LnN1YnZpZXdzW2VnXS54ICkgICYmICggdGhpcy54IDwgKHRoaXMucGFyZW50LnN1YnZpZXdzW2VnXS54K3RoaXMucGFyZW50LnN1YnZpZXdzW2VnXS53aWR0aCkgKSApeworCQkJCQluZXd5ID0gdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLnktdGhpcy5oZWlnaHQ7CisJCQkJfQorCQkJCS8vYm90dG9tIGJveC1ib3JkZXIKKwkJCQlpZiAoICggKCh0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueSt0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10uaGVpZ2h0KS10aGlzLnkpIDwgdGhpcy5kb2NraW5nYmFycmllciApICYmICggKCh0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueSt0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10uaGVpZ2h0KS10aGlzLnkpID4gLXRoaXMuZG9ja2luZ2JhcnJpZXIgKSAmJiAoICh0aGlzLngrdGhpcy53aWR0aCkgPiB0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueCApICAmJiAoIHRoaXMueCA8ICh0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueCt0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ud2lkdGgpICkgKXsKKwkJCQkJbmV3eSA9IHRoaXMucGFyZW50LnN1YnZpZXdzW2VnXS55K3RoaXMucGFyZW50LnN1YnZpZXdzW2VnXS5oZWlnaHQ7CisJCQkJfQorCQkJfQorCQl9CisJCQorCQkvL0NoZWNrIGZvciBCb3JkZXJzCisJCS8vc2hvdWxkIGJlIGRvbmUgX2FmdGVyXyBjaGVja2luZyBmb3Igb3RoZXIgZG9ja2FibGUgc3R1ZmYgc28gaXQgZ2V0cyAKKwkJLy9wcmlvcml0eSB0byBkb2NrIGFnYWluc3QgdGhlIGJvcmRlciBvZiBwYXJlbnQgdmlldworCQlpZiAodGhpcy54PHRoaXMuZG9ja2luZ2JhcnJpZXIpeworCQkJbmV3eD0wOworCQl9CisJCWlmICh0aGlzLnk8dGhpcy5kb2NraW5nYmFycmllcil7CisJCQluZXd5PTA7CisJCX0KKwkJaWYgKCAodGhpcy5wYXJlbnQud2lkdGgtKHRoaXMueCt0aGlzLndpZHRoKSk8dGhpcy5kb2NraW5nYmFycmllcil7CisJCQluZXd4PXRoaXMucGFyZW50LndpZHRoLXRoaXMud2lkdGg7CisJCX0KKwkJaWYgKCAodGhpcy5wYXJlbnQuaGVpZ2h0LSh0aGlzLnkrdGhpcy5oZWlnaHQpKTx0aGlzLmRvY2tpbmdiYXJyaWVyKXsKKwkJCW5ld3k9dGhpcy5wYXJlbnQuaGVpZ2h0LXRoaXMuaGVpZ2h0OworCQl9CisKKwkJLy9zZXQgcG9zaXRpb24KKwkJdGhpcy5zZXRBdHRyaWJ1dGUoJ3gnLG5ld3gpOworCQl0aGlzLnNldEF0dHJpYnV0ZSgneScsbmV3eSk7CisJCV1dPgorCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0ic3RvcmVBZGp1c3RtZW50VG9QYXJlbnQiIGFyZ3M9Im9ialgsb2JqWSI+CisJCXRoaXMudGVtcFhkaXN0YW5jZT1vYmpYLXRoaXMueDsKKwkJdGhpcy50ZW1wWWRpc3RhbmNlPW9ialktdGhpcy55OworCTwvbWV0aG9kPgorCQorCTwhLS0tIEBrZXl3b3JkcyBwcml2YXRlIAorCQl0aGlzIG1ldGhvZCBpcyBuZWVkZWQgYmVjYXVzZSBpZiB0aGUgZHJhZ2dpbmcgZW5kIGFuZAorCQlpdCB3YXMgbm90IGRyYWdnZWQgX2l0c2VsZl8gaXQgd2FzIGRyYWdlZCBqdXN0IGJlY2F1c2UgYSBjb25uZWN0ZWQKKwkJZG9ja2FibGUgQm94IHdhcyBkcmFnZ2VkIHRoYW4gaXQgY291bGQgYmUgdGhhdCB0aGUgY29ubmVjdGVkCisJCUJveCB3YXMgZm9yY2VkIHRvIGRvY2sgYWdhaW5zdCBzb21ldGhpbmcgZGlmZmVyZW50IG9ubW91c2V1cAorCQlzbyB5b3UgaGF2ZSB0byByZWFycmFuZ2UgdGhlIG9sZCAiYWRqdXN0bWVudCIJLS0+CisJPG1ldGhvZCBuYW1lPSJfbG9va2ZvclBhcmVudE9ubHkiIGFyZ3M9Im9iaiI+CisJCTwhW0NEQVRBWwkJCisJCXZhciBuZXd4PW9iai54LXRlbXBYZGlzdGFuY2U7CisJCXZhciBuZXd5PW9iai55LXRlbXBZZGlzdGFuY2U7CisJCQorCQl0aGlzLnNldEF0dHJpYnV0ZSgneCcsbmV3eCk7CisJCXRoaXMuc2V0QXR0cmlidXRlKCd5JyxuZXd5KTsKKwkJXV0+CisJPC9tZXRob2Q+CisJCisJPGRyYWdzdGF0ZSBuYW1lPSJkcmFnZ2VyIiAvPgorICAgIAorCTx2aWV3IG5hbWU9Il9iZyIgd2lkdGg9IiR7IHRoaXMucGFyZW50LndpZHRoIH0iIGhlaWdodD0iJHsgdGhpcy5wYXJlbnQuaGVpZ2h0IH0iIAorICAgICAgICBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ2Jhc2ViZ2NvbG9yaXplcicpIH0iID4gCisgICAgICAgIDx2aWV3IHdpZHRoPSIkeyB0aGlzLnBhcmVudC53aWR0aC0yIH0iIGhlaWdodD0iJHsgdGhpcy5wYXJlbnQuaGVpZ2h0LTIgfSIKKyAgICAgICAgICAgICB4PSIxIiB5PSIxIiBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ21haW5CYWNrZ3JvdW5kQ29sb3InKSB9IiAvPgorICAgIDwvdmlldz4gICAgICAgIAorICAgIAorCTx2aWV3IHg9IjEiIHk9IjEiIHdpZHRoPSIkeyB0aGlzLnBhcmVudC53aWR0aC0xIH0iIGhlaWdodD0iMjAiIG5hbWU9Il90aXRsZWJhciIgPgorCQk8IS0tIHN0cmV0Y2hlcz0id2lkdGgiIC0tPgorCQk8Z3JhZGllbnR2aWV3IHg9IjAiIHdpZHRoPSIkeyB0aGlzLnBhcmVudC53aWR0aCB9IiBoZWlnaHQ9IjIwIgorCQkJCWNvbG9yRnJvbT0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdiYXNlTW91c2Vjb2xvcml6ZXInKSB9IgorCQkJCWNvbG9yVG89IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignc3R5bGVNZW51QmFyQmFzZUNvbG9yJykgfSIgPgorCQk8L2dyYWRpZW50dmlldz4KKwkJCisgICAgICAgIDx0ZXh0IG5hbWU9Il90aXRsZSIgZm9udHNpemU9IjEwIiBoZWlnaHQ9IjE3IiB4PSI2IiB5PSIxIiB0ZXh0PSIkeyB0aGlzLnBhcmVudC5wYXJlbnQudGl0bGUgfSIgCisJCQlmZ2NvbG9yPSIweEZGRkZGRiIgcmVzaXplPSJ0cnVlIiBmb250c3R5bGU9ImJvbGQiIC8+CisJCQkKKwkgICAgPHZpZXcgbmFtZT0iX3Rvb2xiYXIiIHZpc2liaWxpdHk9IiRvbmNleyAoKHBhcmVudC5wYXJlbnQuZnVsbFRvb2xCYXIpID8gJ3Zpc2libGUnIDogJ2hpZGRlbicgKSB9IiAKKwkgICAgICAgIHg9IiR7IHBhcmVudC53aWR0aC10aGlzLndpZHRoLTIgfSIgbGF5b3V0PSJheGlzOng7c3BhY2luZzowIiB5PSIyIj4gICAgIAorICAgICAgICAgICAgCisgICAgICAgICAgICA8bWluaUljb25zUHJlc2VudGVyIG5hbWU9Il9taW5pbWl6ZSIKKyAgICAgICAgICAgICAgICB2aXNpYmlsaXR5PSIkb25jZXsgKChwYXJlbnQucGFyZW50LnBhcmVudC5taW5pbWl6YWJsZSkgPyAndmlzaWJsZScgOiAnaGlkZGVuJyApIH0iIAorICAgICAgICAgICAgICAgIGljb25SZXNzb3VyY2VOYW1lPSJidG5fcHJlc2VudGVyX21pbmltaXplIj4KKyAgICAgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQucGFyZW50LnBhcmVudC5taW5pbWl6ZSgpOworICAgICAgICAgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgICAgICAgICA8bGFiZWxUb29sdGlwIGxhYmVsaWQ9Ijg1NiIgLz4KKyAgICAgICAgICAgIDwvbWluaUljb25zUHJlc2VudGVyPgorICAgICAgICAgICAgCisgICAgICAgICAgICA8bWluaUljb25zUHJlc2VudGVyIG5hbWU9Il9tYXhpbWl6ZTIiIHZpc2liaWxpdHk9ImhpZGRlbiIKKyAgICAgICAgICAgICAgICBpY29uUmVzc291cmNlTmFtZT0iYnRuX3ByZXNlbnRlcl9tYXhpbWl6ZSI+CisgICAgICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnBhcmVudC5wYXJlbnQucmVtaW5pbWl6ZSgpOworICAgICAgICAgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgICAgICAgICA8bGFiZWxUb29sdGlwIGxhYmVsaWQ9Ijg1NyIgLz4KKyAgICAgICAgICAgIDwvbWluaUljb25zUHJlc2VudGVyPgorICAgICAgICAgICAgCisJICAgICAgICA8bWluaUljb25zUHJlc2VudGVyIG5hbWU9Il9jbG9zZSIKKwkgICAgICAgICAgICB2aXNpYmlsaXR5PSIkb25jZXsgKChwYXJlbnQucGFyZW50LnBhcmVudC5jbG9zYWJsZSkgPyAndmlzaWJsZScgOiAnaGlkZGVuJyApIH0iCisJICAgICAgICAgICAgaWNvblJlc3NvdXJjZU5hbWU9ImJ0bl9wcmVzZW50ZXJfY2xvc2UyIj4KKwkgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKwkgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQucGFyZW50LnBhcmVudC5jbG9zZSgpOworCSAgICAgICAgICAgIDwvaGFuZGxlcj4KKwkgICAgICAgICAgICA8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IjQzMCIgLz4KKwkgICAgICAgIDwvbWluaUljb25zUHJlc2VudGVyPiAgCisgICAgICAgICAgICAKKwkgICAgPC92aWV3PiAgCQkJCisJPC92aWV3PgorICAgIDxoYW5kbGVyIG5hbWU9Im9uYWRkc3VidmlldyIgYXJncz0idiI+CisJCS8vRGVidWcud3JpdGUoIm9uYWRkc3VidmlldyIsdik7CisJCWlmICh2LnBhcmVudC5zdWJ2aWV3cy5sZW5ndGg+MikgdGhpcy5fcmVzaXpldmlldy5icmluZ1RvRnJvbnQoKTsKKyAgICA8L2hhbmRsZXI+CisgICAgPHZpZXcgdmlzaWJpbGl0eT0iJG9uY2V7ICgodGhpcy5wYXJlbnQucmVzaXplYWJsZSkgPyAndmlzaWJsZScgOiAnaGlkZGVuJyApIH0iCisgICAgICAgIG5hbWU9Il9yZXNpemV2aWV3IiB4PSIkeyB0aGlzLnBhcmVudC53aWR0aCAtIDE2IH0iIAorICAgICAgICB5PSIkeyB0aGlzLnBhcmVudC5oZWlnaHQgLSAxNiB9IiByZXNvdXJjZT0iZXhwbG9yZXJfcmVzaXplX3JzYyIgCisgICAgICAgIGN1cnNvcj0iZXhwbG9yZXJfcmVzaXplbW91c2VfcnNjIiBvbm1vdXNlZG93bj0idGhpcy5wYXJlbnQucnNhcHBseSgpIgorICAgICAgICBvbm1vdXNldXA9InRoaXMucGFyZW50LnJzcmVtb3ZlKCkiID4KKyAgICAgICAgPGxhYmVsVG9vbHRpcCB0ZXh0PSJyZXNpemUiIC8+CisgICAgPC92aWV3PiAgICAKKyAgICA8cmVzaXplc3RhdGUgbmFtZT0icnMiLz4KKyAgICAKKyAgICA8YW5pbWF0b3IgbmFtZT0iX21pbmltaXplWm9vbSIgYXR0cmlidXRlPSJoZWlnaHQiIAorICAgICAgICAgICAgICBkdXJhdGlvbj0iNzUwIiB0bz0iMjAiIHN0YXJ0ZWQ9ImZhbHNlIj4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25zdG9wIiBhcmdzPSJzIj4KKyAgICAgICAgICAgIHBhcmVudC5yZW1pbmltaXplQ29tcGxldGUoKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgIDwvYW5pbWF0b3I+CisgICAgCis8L2NsYXNzPgorCis8Y2xhc3MgbmFtZT0ibWluaUljb25zUHJlc2VudGVyIiBleHRlbmRzPSJ2aWV3Ij4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9Imljb25SZXNzb3VyY2VOYW1lIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciLz4KKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3ZlciI+CisgICAgICAgIHRoaXMuX2JnLnNldEF0dHJpYnV0ZSgiYmdjb2xvciIsMHhGRkZGRkYpOworICAgICAgICB0aGlzLl9iZy5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdXQiPgorICAgICAgICB0aGlzLl9iZy5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZWRvd24iPgorICAgICAgICB0aGlzLl9iZy5zZXRBdHRyaWJ1dGUoImJnY29sb3IiLGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdiYXNlYmdjb2xvcml6ZXInKSk7CisgICAgICAgIHRoaXMuX2JnLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZXVwIj4KKyAgICAgICAgdGhpcy5fYmcuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgIDx2aWV3IG5hbWU9Il9iZyIgdmlzaWJpbGl0eT0iaGlkZGVuIiBvcGFjaXR5PSIwLjciCisgICAgICAgICAgd2lkdGg9IjE0IiBoZWlnaHQ9IjE0IiB4PSIxIiB5PSIxIiBiZ2NvbG9yPSIweEZGRkZGRiIgLz4KKyAgICAgICAgICAKKyAgICA8dmlldyBuYW1lPSJfaXRlbVJzYyIgcmVzb3VyY2U9IiRvbmNleyBwYXJlbnQuaWNvblJlc3NvdXJjZU5hbWUgfSIgLz4KKyAgICAKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9wcmVzZW50ZXIvbGlicmFyeS5senggYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcHJlc2VudGVyL2xpYnJhcnkubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0NzJmYTgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcHJlc2VudGVyL2xpYnJhcnkubHp4CkBAIC0wLDAgKzEsMjggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKwk8aW5jbHVkZSBocmVmPSJyZXNvdXJjZXMvIiAvPgorCTxpbmNsdWRlIGhyZWY9ImJveEluaXRFZmZlY3QubHp4IiAvPgorCTxpbmNsdWRlIGhyZWY9Imd1aVByZXNlbnRlci5sengiIC8+CisKKyAgICAKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9wcmVzZW50ZXIvcmVzb3VyY2VzL2Nsb3NlX21vLnBuZyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9wcmVzZW50ZXIvcmVzb3VyY2VzL2Nsb3NlX21vLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWQwZjk0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3ByZXNlbnRlci9yZXNvdXJjZXMvY2xvc2VfbW8ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9wcmVzZW50ZXIvcmVzb3VyY2VzL2Nsb3NlX3VwLnBuZyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9wcmVzZW50ZXIvcmVzb3VyY2VzL2Nsb3NlX3VwLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OWQzYjcyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3ByZXNlbnRlci9yZXNvdXJjZXMvY2xvc2VfdXAucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9wcmVzZW50ZXIvcmVzb3VyY2VzL2xpYnJhcnkubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3ByZXNlbnRlci9yZXNvdXJjZXMvbGlicmFyeS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTk0Y2EyOQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9wcmVzZW50ZXIvcmVzb3VyY2VzL2xpYnJhcnkubHp4CkBAIC0wLDAgKzEsNDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKwk8IS0tIEFQTCBBdXRob3Igc2ViYXdhZ25lciAtLT4KKwk8cmVzb3VyY2Ugc3JjPSJwcmVzZW50ZXJfdGh1bWIuc3dmIiBuYW1lPSJwcmVzZW50ZXJfdGh1bWJfcnNjIiAvPgorICAgIDwhLS0gQVBMIEF1dGhvciBzZWJhd2FnbmVyIC0tPgorICAgIDxyZXNvdXJjZSBuYW1lPSJidG5fcHJlc2VudGVyX21pbmltaXplIiBzcmM9Im1pbmltaXplX3VwLnBuZyIgLz4KKyAgICA8IS0tIEFQTCBBdXRob3Igc2ViYXdhZ25lciAtLT4KKyAgICA8cmVzb3VyY2UgbmFtZT0iYnRuX3ByZXNlbnRlcl9tYXhpbWl6ZSIgc3JjPSJtYXhpbWl6ZV91cC5wbmciIC8+CisgICAgPCEtLSBBUEwgQXV0aG9yIHNlYmF3YWduZXIgLS0+CisgICAgPHJlc291cmNlIG5hbWU9ImJ0bl9wcmVzZW50ZXJfbWF4aW1pemUyIiBzcmM9Im1heGltaXplMl91cC5wbmciIC8+CisgICAgCisgICAgPCEtLSBBUEwgQXV0aG9yIHNlYmF3YWduZXIgLS0+CisgICAgPHJlc291cmNlIG5hbWU9ImJ0bl9wcmVzZW50ZXJfY2xvc2UyIiBzcmM9ImNsb3NlX3VwLnBuZyIgLz4KKyAgICAKKyAgICA8IS0tIEFQTCBBdXRob3Igc2ViYXdhZ25lciAtLT4KKwk8cmVzb3VyY2UgbmFtZT0iYnRuX3ByZXNlbnRlcl9jbG9zZSI+CisgICAgICAgIDxmcmFtZSBzcmM9ImNsb3NlX3VwLnBuZyIgLz4KKyAgICAgICAgPGZyYW1lIHNyYz0iY2xvc2VfbW8ucG5nIiAvPgorICAgICAgICA8ZnJhbWUgc3JjPSJjbG9zZV91cC5wbmciIC8+CisgICAgPC9yZXNvdXJjZT4gCisgICAgCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcHJlc2VudGVyL3Jlc291cmNlcy9tYXhpbWl6ZTJfdXAucG5nIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3ByZXNlbnRlci9yZXNvdXJjZXMvbWF4aW1pemUyX3VwLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZWRkMjNiCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3ByZXNlbnRlci9yZXNvdXJjZXMvbWF4aW1pemUyX3VwLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcHJlc2VudGVyL3Jlc291cmNlcy9tYXhpbWl6ZV91cC5wbmcgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcHJlc2VudGVyL3Jlc291cmNlcy9tYXhpbWl6ZV91cC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzc4YzA1YwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9wcmVzZW50ZXIvcmVzb3VyY2VzL21heGltaXplX3VwLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcHJlc2VudGVyL3Jlc291cmNlcy9taW5pbWl6ZV91cC5wbmcgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcHJlc2VudGVyL3Jlc291cmNlcy9taW5pbWl6ZV91cC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTYzNzI5OAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9wcmVzZW50ZXIvcmVzb3VyY2VzL21pbmltaXplX3VwLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcHJlc2VudGVyL3Jlc291cmNlcy9wcmVzZW50ZXJfdGh1bWIuc3dmIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3ByZXNlbnRlci9yZXNvdXJjZXMvcHJlc2VudGVyX3RodW1iLnN3ZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NGY4Yjk2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3ByZXNlbnRlci9yZXNvdXJjZXMvcHJlc2VudGVyX3RodW1iLnN3ZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcmVzZXRDb21ib2JveC5senggYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvcmVzZXRDb21ib2JveC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWUwYTg1NQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9yZXNldENvbWJvYm94Lmx6eApAQCAtMCwwICsxLDQxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCisgICAgPGNsYXNzIG5hbWU9InJlc2V0Q29tYm9ib3giIGV4dGVuZHM9ImNvbWJvYm94IiBlZGl0YWJsZT0iZmFsc2UiIHNob3duaXRlbXM9IjEyIgorICAgIAkgICBzdHlsZT0iY29tcG9uZW50U3R5bGUiIGl0ZW1jbGFzc25hbWU9ImxhYmVsZFRleHRMaXN0SXRlbSI+CisgICAgCisgICAgCTxtZXRob2QgbmFtZT0iZ2V0TnVtSXRlbXMiPgorICAgIAkJcmV0dXJuIHRoaXMuY2JsaXN0LmdldE51bUl0ZW1zKCk7CisgICAgCTwvbWV0aG9kPgorICAgIAorICAgICAgICA8bWV0aG9kIG5hbWU9InJlc2V0IiA+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICB2YXIgY3VycmVudENvdW50ID0gdGhpcy5jYmxpc3QuZ2V0TnVtSXRlbXMoKTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGN1cnJlbnRDb3VudDsgaSsrKQorICAgICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUl0ZW1BdCgwKTsKKyAgICAgICAgICAgICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uKCk7CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9tZXRob2Q+CisgICAgCisgICAgPC9jbGFzcz4KKyAgICAgICAgCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvc2Nyb2xsYmFycy9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9zY3JvbGxiYXJzL2xpYnJhcnkubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllZTAwZTEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvc2Nyb2xsYmFycy9saWJyYXJ5Lmx6eApAQCAtMCwwICsxLDQ0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPGxpYnJhcnk+DQorDQorCTwhLS0gQVBMIEF1dGhvciBzZWJhd2FnbmVyIC0tPg0KKwk8cmVzb3VyY2UgbmFtZT0ib21zY3JvbGx0cmFja195X3JzYyIgc3JjPSJyZXNvdXJjZXMveV9zY3JvbGx0cmFjay5zd2YiIC8+DQorCQ0KKwk8IS0tIEFQTCBBdXRob3Igc2ViYXdhZ25lciAtLT4NCisgICAgPHJlc291cmNlIG5hbWU9Im9tc2Nyb2xsYmFyX3l0aHVtYm1pZGRsZV9yc2MiIHNyYz0icmVzb3VyY2VzL3Njcm9sbHRodW1iX3lfbWlkLnN3ZiIgLz4NCisgICAgPCEtLSBBUEwgQXV0aG9yIHNlYmF3YWduZXIgLS0+DQorICAgIDxyZXNvdXJjZSBuYW1lPSJvbXNjcm9sbGJhcl95dGh1bWJ0b3BfcnNjIiBzcmM9InJlc291cmNlcy9zY3JvbGx0aHVtYl95X3RvcC5zd2YiIC8+DQorICAgIDwhLS0gQVBMIEF1dGhvciBzZWJhd2FnbmVyIC0tPg0KKyAgICA8cmVzb3VyY2UgbmFtZT0ib21zY3JvbGxiYXJfeXRodW1iYm90dG9tX3JzYyIgc3JjPSJyZXNvdXJjZXMvc2Nyb2xsdGh1bWJfeV9ib3R0b20uc3dmIiAvPg0KKyAgICA8IS0tIEFQTCBBdXRob3Igc2ViYXdhZ25lciAtLT4NCisgICAJPHJlc291cmNlIG5hbWU9Im9tc2Nyb2xsdHJhY2tfeF9yc2MiIHNyYz0icmVzb3VyY2VzL3hfc2Nyb2xsdHJhY2suc3dmIiAvPg0KKwk8IS0tIEFQTCBBdXRob3Igc2ViYXdhZ25lciAtLT4NCisgICAgPHJlc291cmNlIG5hbWU9Im9tc2Nyb2xsYmFyX3h0aHVtYm1pZGRsZV9yc2MiIHNyYz0icmVzb3VyY2VzL3Njcm9sbHRodW1iX3hfbWlkLnN3ZiIgLz4NCisgICAgPCEtLSBBUEwgQXV0aG9yIHNlYmF3YWduZXIgLS0+DQorICAgIDxyZXNvdXJjZSBuYW1lPSJvbXNjcm9sbGJhcl94dGh1bWJsZWZ0X3JzYyIgc3JjPSJyZXNvdXJjZXMvc2Nyb2xsdGh1bWJfeF9sZWZ0LnN3ZiIgLz4NCisgICAgPCEtLSBBUEwgQXV0aG9yIHNlYmF3YWduZXIgLS0+DQorICAgIDxyZXNvdXJjZSBuYW1lPSJvbXNjcm9sbGJhcl94dGh1bWJyaWdodF9yc2MiIHNyYz0icmVzb3VyY2VzL3Njcm9sbHRodW1iX3hfcmlnaHQuc3dmIiAvPg0KKw0KKwk8aW5jbHVkZSBocmVmPSJvbV92c2Nyb2xsYmFyLmx6eCIvPg0KKwk8aW5jbHVkZSBocmVmPSJvbV9oc2Nyb2xsYmFyLmx6eCIvPg0KKw0KKzwvbGlicmFyeT4NCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvc2Nyb2xsYmFycy9vbV9oc2Nyb2xsYmFyLmx6eCBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9zY3JvbGxiYXJzL29tX2hzY3JvbGxiYXIubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzNmZlZDYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvc2Nyb2xsYmFycy9vbV9oc2Nyb2xsYmFyLmx6eApAQCAtMCwwICsxLDYxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8Y2xhc3MgbmFtZT0ib21faHNjcm9sbGJhciIgZXh0ZW5kcz0iYmFzZXNjcm9sbGJhciIgc3R5bGVhYmxlPSJmYWxzZSIKKyAgICBheGlzPSJ4Ij4KKworICAgIDwhLS0tIEBrZXl3b3JkcyBwcml2YXRlIC0tPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iaGVpZ2h0IiB2YWx1ZT0iMTAiLz4KKyAgICAKKyAgICA8IS0tLSBAa2V5d29yZHMgcHJpdmF0ZSAtLT4KKyAgICA8bWV0aG9kIG5hbWU9Il9zaG93RW5hYmxlZCI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICBpZiAoIV9lbmFibGVkKSB7CisgICAgICAgIAkvL3RoaXMuc2Nyb2xsdHJhY2sudGh1bWIuc2V0QXR0cmlidXRlKCdoZWlnaHQnLCAwKTsKKyAgICAgICAgICAgIHRoaXMuc2Nyb2xsdHJhY2sudGh1bWIuc2V0QXR0cmlidXRlKCd2aXNpYmlsaXR5JywgJ2hpZGRlbicpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5zY3JvbGx0cmFjay50aHVtYi5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCAndmlzaWJsZScpOworICAgICAgICB9CisgICAgICAgIHN1cGVyLl9zaG93RW5hYmxlZCgpOworICAgIF1dPgorICAgIDwvbWV0aG9kPgorCisJPHZpZXcgbmFtZT0icmlnaHRhcnJvdyIgd2lkdGg9IjAiIC8+CisgICAgPHZpZXcgbmFtZT0ic2Nyb2xsdHJhY2siPgorICAgIAkgPGJhc2VzY3JvbGx0cmFjayBuYW1lPSJsZWZ0IgorICAgICAgICAgICByZXNvdXJjZT0ib21zY3JvbGx0cmFja194X3JzYyIgc3RyZXRjaGVzPSJ3aWR0aCI+CisgICAgICAgICAJPGF0dHJpYnV0ZSBuYW1lPSJoZWlnaHQiIHZhbHVlPSIke3BhcmVudC5oZWlnaHR9Ii8+CisgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9IndpZHRoIiB2YWx1ZT0iJHtwYXJlbnQud2lkdGh9Ii8+ICAKKyAgICAgICAgIDwvYmFzZXNjcm9sbHRyYWNrPgorICAgICAgICAgPGJhc2VzY3JvbGx0aHVtYiBuYW1lPSJ0aHVtYiIgeD0iMSI+CisgICAgICAgICAgICAgPHZpZXcgcmVzb3VyY2U9Im9tc2Nyb2xsYmFyX3h0aHVtYmxlZnRfcnNjIi8+CisgICAgICAgICAgICAgPHZpZXcgcmVzb3VyY2U9Im9tc2Nyb2xsYmFyX3h0aHVtYm1pZGRsZV9yc2MiIHN0cmV0Y2hlcz0iYm90aCIvPgorICAgICAgICAgICAgIDx2aWV3IHJlc291cmNlPSJvbXNjcm9sbGJhcl94dGh1bWJyaWdodF9yc2MiLz4KKyAgICAgICAgICAgICA8c3RhYmxlYm9yZGVybGF5b3V0IGF4aXM9IngiLz4KKyAgICAgICAgPC9iYXNlc2Nyb2xsdGh1bWI+CisgICAgPC92aWV3PgorCisJPHZpZXcgaGVpZ2h0PSIwIiBuYW1lPSJsZWZ0YXJyb3ciIC8+CisgICAgPHN0YWJsZWJvcmRlcmxheW91dCBheGlzPSJ4Ii8+CisKKzwvY2xhc3M+Cis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvc2Nyb2xsYmFycy9vbV92c2Nyb2xsYmFyLmx6eCBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9zY3JvbGxiYXJzL29tX3ZzY3JvbGxiYXIubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4NjIzZWQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvc2Nyb2xsYmFycy9vbV92c2Nyb2xsYmFyLmx6eApAQCAtMCwwICsxLDYxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8Y2xhc3MgbmFtZT0ib21fdnNjcm9sbGJhciIgZXh0ZW5kcz0iYmFzZXNjcm9sbGJhciIgc3R5bGVhYmxlPSJmYWxzZSIKKyAgICBheGlzPSJ5Ij4KKworICAgIDwhLS0tIEBrZXl3b3JkcyBwcml2YXRlIC0tPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0id2lkdGgiIHZhbHVlPSIxMCIvPgorICAgIAorICAgIDwhLS0tIEBrZXl3b3JkcyBwcml2YXRlIC0tPgorICAgIDxtZXRob2QgbmFtZT0iX3Nob3dFbmFibGVkIj4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgIGlmICghX2VuYWJsZWQpIHsKKyAgICAgICAgCS8vdGhpcy5zY3JvbGx0cmFjay50aHVtYi5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsIDApOworICAgICAgICAgICAgdGhpcy5zY3JvbGx0cmFjay50aHVtYi5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCAnaGlkZGVuJyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aGlzLnNjcm9sbHRyYWNrLnRodW1iLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsICd2aXNpYmxlJyk7CisgICAgICAgIH0KKyAgICAgICAgc3VwZXIuX3Nob3dFbmFibGVkKCk7CisgICAgXV0+CisgICAgPC9tZXRob2Q+CisKKwk8dmlldyBuYW1lPSJ0b3BhcnJvdyIgaGVpZ2h0PSIwIiAvPgorICAgIDx2aWV3IG5hbWU9InNjcm9sbHRyYWNrIj4KKyAgICAJIDxiYXNlc2Nyb2xsdHJhY2sgbmFtZT0idG9wIgorICAgICAgICAgICByZXNvdXJjZT0ib21zY3JvbGx0cmFja195X3JzYyIgc3RyZXRjaGVzPSJoZWlnaHQiPgorICAgICAgICAgCTxhdHRyaWJ1dGUgbmFtZT0iaGVpZ2h0IiB2YWx1ZT0iJHtwYXJlbnQuaGVpZ2h0fSIvPgorICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJ3aWR0aCIgdmFsdWU9IiR7cGFyZW50LndpZHRofSIvPiAgCisgICAgICAgICA8L2Jhc2VzY3JvbGx0cmFjaz4KKyAgICAgICAgIDxiYXNlc2Nyb2xsdGh1bWIgbmFtZT0idGh1bWIiIHg9IjEiPgorICAgICAgICAgICAgIDx2aWV3IHJlc291cmNlPSJvbXNjcm9sbGJhcl95dGh1bWJ0b3BfcnNjIi8+CisgICAgICAgICAgICAgPHZpZXcgcmVzb3VyY2U9Im9tc2Nyb2xsYmFyX3l0aHVtYm1pZGRsZV9yc2MiIHN0cmV0Y2hlcz0iYm90aCIvPgorICAgICAgICAgICAgIDx2aWV3IHJlc291cmNlPSJvbXNjcm9sbGJhcl95dGh1bWJib3R0b21fcnNjIi8+CisgICAgICAgICAgICAgPHN0YWJsZWJvcmRlcmxheW91dCBheGlzPSJ5Ii8+CisgICAgICAgIDwvYmFzZXNjcm9sbHRodW1iPgorICAgIDwvdmlldz4KKworCTx2aWV3IGhlaWdodD0iMCIgbmFtZT0iYm90dG9tYXJyb3ciIC8+CisgICAgPHN0YWJsZWJvcmRlcmxheW91dCBheGlzPSJ5Ii8+CisKKzwvY2xhc3M+Cis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvc2Nyb2xsYmFycy9yZXNvdXJjZXMvc2Nyb2xsdGh1bWJfeF9sZWZ0LnN3ZiBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9zY3JvbGxiYXJzL3Jlc291cmNlcy9zY3JvbGx0aHVtYl94X2xlZnQuc3dmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkOTQxMWIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvc2Nyb2xsYmFycy9yZXNvdXJjZXMvc2Nyb2xsdGh1bWJfeF9sZWZ0LnN3ZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvc2Nyb2xsYmFycy9yZXNvdXJjZXMvc2Nyb2xsdGh1bWJfeF9taWQuc3dmIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3Njcm9sbGJhcnMvcmVzb3VyY2VzL3Njcm9sbHRodW1iX3hfbWlkLnN3ZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZmYzNzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3Njcm9sbGJhcnMvcmVzb3VyY2VzL3Njcm9sbHRodW1iX3hfbWlkLnN3ZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvc2Nyb2xsYmFycy9yZXNvdXJjZXMvc2Nyb2xsdGh1bWJfeF9yaWdodC5zd2YgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvc2Nyb2xsYmFycy9yZXNvdXJjZXMvc2Nyb2xsdGh1bWJfeF9yaWdodC5zd2YKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzRlYTY0YQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9zY3JvbGxiYXJzL3Jlc291cmNlcy9zY3JvbGx0aHVtYl94X3JpZ2h0LnN3ZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvc2Nyb2xsYmFycy9yZXNvdXJjZXMvc2Nyb2xsdGh1bWJfeV9ib3R0b20uc3dmIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3Njcm9sbGJhcnMvcmVzb3VyY2VzL3Njcm9sbHRodW1iX3lfYm90dG9tLnN3ZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOWEzNzBiCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3Njcm9sbGJhcnMvcmVzb3VyY2VzL3Njcm9sbHRodW1iX3lfYm90dG9tLnN3ZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvc2Nyb2xsYmFycy9yZXNvdXJjZXMvc2Nyb2xsdGh1bWJfeV9taWQuc3dmIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3Njcm9sbGJhcnMvcmVzb3VyY2VzL3Njcm9sbHRodW1iX3lfbWlkLnN3ZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjkwMTVmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3Njcm9sbGJhcnMvcmVzb3VyY2VzL3Njcm9sbHRodW1iX3lfbWlkLnN3ZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvc2Nyb2xsYmFycy9yZXNvdXJjZXMvc2Nyb2xsdGh1bWJfeV90b3Auc3dmIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3Njcm9sbGJhcnMvcmVzb3VyY2VzL3Njcm9sbHRodW1iX3lfdG9wLnN3ZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzAxNzQwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3Njcm9sbGJhcnMvcmVzb3VyY2VzL3Njcm9sbHRodW1iX3lfdG9wLnN3ZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvc2Nyb2xsYmFycy9yZXNvdXJjZXMveF9zY3JvbGx0cmFjay5zd2YgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvc2Nyb2xsYmFycy9yZXNvdXJjZXMveF9zY3JvbGx0cmFjay5zd2YKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTM3ZGQ4ZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9zY3JvbGxiYXJzL3Jlc291cmNlcy94X3Njcm9sbHRyYWNrLnN3ZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvc2Nyb2xsYmFycy9yZXNvdXJjZXMveV9zY3JvbGx0cmFjay5zd2YgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvc2Nyb2xsYmFycy9yZXNvdXJjZXMveV9zY3JvbGx0cmFjay5zd2YKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjA1Yjg4YQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9zY3JvbGxiYXJzL3Jlc291cmNlcy95X3Njcm9sbHRyYWNrLnN3ZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvc2Nyb2xsYmFycy9zY3JvbGxiYXJfeXJlc291cmNlcy5senggYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvc2Nyb2xsYmFycy9zY3JvbGxiYXJfeXJlc291cmNlcy5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmMwOGZmZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9zY3JvbGxiYXJzL3Njcm9sbGJhcl95cmVzb3VyY2VzLmx6eApAQCAtMCwwICsxLDI1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPGxpYnJhcnk+DQorDQorDQorICAgIA0KKzwvbGlicmFyeT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvc2ltcGxldmFsdWVsaXN0L2xpYnJhcnkubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3NpbXBsZXZhbHVlbGlzdC9saWJyYXJ5Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWNhOGZlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3NpbXBsZXZhbHVlbGlzdC9saWJyYXJ5Lmx6eApAQCAtMCwwICsxLDI2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCisJPGluY2x1ZGUgaHJlZj0ic2ltcGxlVmFsdWVMaXN0Lmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJyZWNvcmRWYWx1ZUxpc3QubHp4IiAvPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvc2ltcGxldmFsdWVsaXN0L3JlY29yZFZhbHVlTGlzdC5senggYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvc2ltcGxldmFsdWVsaXN0L3JlY29yZFZhbHVlTGlzdC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTVjYWNhZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy9zaW1wbGV2YWx1ZWxpc3QvcmVjb3JkVmFsdWVMaXN0Lmx6eApAQCAtMCwwICsxLDUyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8Y2xhc3MgbmFtZT0icmVjb3JkTGlzdEl0ZW0iIGV4dGVuZHM9ImJhc2VDb250ZW50TGlzdEl0ZW0iIGhlaWdodD0iMjQiPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0idmFsdWVOYW1lIiB0eXBlPSJzdHJpbmciIHZhbHVlPSIiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJ2YWx1ZSIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0iMCIgLz4KKyAgICAKKwk8dHVybk92ZXJUZXh0SXRlbSB0ZXh0PSIkb25jZXsgcGFyZW50LnZhbHVlTmFtZSB9IiB3aWR0aD0iMjI2IiAvPiAgICAKKyAgICAKKwk8dmlldyB3aWR0aD0iNjAiIGhlaWdodD0iMjQiCisJCW9uY2xpY2s9Im5ldyBsei5jb25maXJtRGVsZXRlV2luZG93KGNhbnZhcy5tYWluX2NvbnRlbnQuX2NvbnRlbnQuaW5uZXIse3JlZk9iajp0aGlzfSk7IiA+CQkKKwkJPG1ldGhvZCBuYW1lPSJjb25maXJtRGVsZXRlIj4KKyAgICAgICAgICAgIHRoaXMucGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5pdGVtVG9EZWxldGU9dGhpczsKKwkJCXRoaXMucGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5kZWxldGVJdGVtLnNlbmRFdmVudChwYXJlbnQpOworCQk8L21ldGhvZD4KKwkJPGltYWdlIHN0cmV0Y2hlcz0iYm90aCIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiAKKwkJCSBzcmM9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVJbWFnZSgnYnV0dG9uX2NhbmNlbF9yc2MnKSB9IgorCQkJIGFsaWduPSJjZW50ZXIiIHk9IjQiIC8+CisJCTxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iMjc0IiAvPgorCTwvdmlldz4JCis8L2NsYXNzPgorCQorCQorPGNsYXNzIG5hbWU9InJlY29yZFZhbHVlTGlzdCIgZXh0ZW5kcz0idHVybk92ZXJMaXN0IiA+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpdGVtVG9EZWxldGUiIHZhbHVlPSJudWxsIiAvPgorICAgIAorICAgIDxldmVudCBuYW1lPSJkZWxldGVJdGVtIiAvPgorICAgIAorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3NpbXBsZXZhbHVlbGlzdC9zaW1wbGVWYWx1ZUxpc3QubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3NpbXBsZXZhbHVlbGlzdC9zaW1wbGVWYWx1ZUxpc3QubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4MDdjNTYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvc2ltcGxldmFsdWVsaXN0L3NpbXBsZVZhbHVlTGlzdC5sengKQEAgLTAsMCArMSwxODAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzxjbGFzcyBuYW1lPSJzaW1wbGVMaXN0SXRlbSIgZXh0ZW5kcz0idmlldyIKKwliZ2NvbG9yPSIweEZGRkZGRiIgb25tb3VzZXVwPSJ0aGlzLnBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC50b2dnbGVTZWxlY3RlZCh0aGlzKSIgPgorCTxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdmVyIj4KKwkJPCFbQ0RBVEFbCisJCQlpZiAodGhpcy5zZWxlY3RlZCkgdGhpcy5zZXRBdHRyaWJ1dGUoJ2JnY29sb3InLGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdiYXNlTW91c2VPdmVyY29sb3JpemVyJykpCisJCQllbHNlIHRoaXMuc2V0QXR0cmlidXRlKCdiZ2NvbG9yJyxjYW52YXMuZ2V0VGhlbWVDb2xvcignYmFzZU1vdXNlT3ZlcmNvbG9yaXplcicpKTsKKwkJXV0+CisJPC9oYW5kbGVyPgorCTxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdXQiPgorCQk8IVtDREFUQVsKKwkJCWlmICh0aGlzLnNlbGVjdGVkKSAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2JnY29sb3InLGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdiYXNlTW91c2VPdmVyY29sb3JpemVyJykpCisJCQllbHNlIHRoaXMuc2V0QXR0cmlidXRlKCdiZ2NvbG9yJywweEZGRkZGRik7CisJCV1dPgorCTwvaGFuZGxlcj4KKwk8YXR0cmlidXRlIG5hbWU9InNlbGVjdGVkIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iLz4KKwk8YXR0cmlidXRlIG5hbWU9InZhbHVlIiB2YWx1ZT0ibnVsbCIgLz4KKwk8YXR0cmlidXRlIG5hbWU9InRleHQiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwk8dGV4dCB0ZXh0PSIkb25jZXsgcGFyZW50LnRleHQgfSIgcmVzaXplPSJ0cnVlIiBmb250c2l6ZT0iMTEiIC8+Cis8L2NsYXNzPgorCQorCQorPGNsYXNzIG5hbWU9InNpbXBsZVZhbHVlTGlzdCIgZXh0ZW5kcz0idmlldyIgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdtYWluQm9yZGVyQ29sb3InKSB9IiA+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJfc2VsZWN0ZWQiIHZhbHVlPSJudWxsIiAvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0ibXVsdGlzZWxlY3QiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9Iml0ZW1jbGFzc25hbWUiIHR5cGU9InN0cmluZyIgdmFsdWU9InNpbXBsZUxpc3RJdGVtIiAvPgorCQorCTxldmVudCBuYW1lPSJvbnNlbGVjdCIgLz4KKwkKKwk8bWV0aG9kIG5hbWU9InRvZ2dsZVNlbGVjdGVkIiBhcmdzPSJvYmoiPgorCQk8IVtDREFUQVsKKwkJCXZhciBkb3dua2V5cyA9IGx6LktleXMuZG93bktleXNBcnJheTsKKwkJCQorCQkJLy9TZWxlY3QgdGhlIE9iagorCQkJCisJCQkKKwkJCWlmKGRvd25rZXlzLmxlbmd0aD09MSAmJiBkb3dua2V5c1swXT09MTcgJiYgdGhpcy5tdWx0aXNlbGVjdCl7CisJCQkJaWYgKHRoaXMuX3NlbGVjdGVkID09IG51bGwpIHRoaXMuX3NlbGVjdGVkID0gbmV3IEFycmF5KCk7CisJCQkJaWYgKHRoaXMuX2NoZWNrRm9yQWxyZWFkeVNlbGVjdGVkKG9iaikpIHsKKwkJCQkJb2JqLnNldEF0dHJpYnV0ZSgnc2VsZWN0ZWQnLGZhbHNlKTsKKwkJCQkJb2JqLnNldEF0dHJpYnV0ZSgnYmdjb2xvcicsMHhGRkZGRkYpOworCQkJCX0gZWxzZSB7CisJCQkJCW9iai5zZXRBdHRyaWJ1dGUoJ3NlbGVjdGVkJyx0cnVlKTsKKwkJCQkJdGhpcy5fc2VsZWN0ZWQucHVzaChvYmopOworCQkJCX0JCQkJCisJCQl9IGVsc2UgaWYgKGRvd25rZXlzLmxlbmd0aD09MCAmJiB0aGlzLm11bHRpc2VsZWN0KXsKKwkJCQlpZiAodGhpcy5fc2VsZWN0ZWQgPT0gbnVsbCkgdGhpcy5fc2VsZWN0ZWQgPSBuZXcgQXJyYXkoKTsKKwkJCQl0aGlzLl9kZXNsZWN0QWxsKCk7CisJCQkJb2JqLnNldEF0dHJpYnV0ZSgnc2VsZWN0ZWQnLHRydWUpOworCQkJCXRoaXMuX3NlbGVjdGVkLnB1c2gob2JqKTsJCisJCQl9IGVsc2UgaWYgKCF0aGlzLm11bHRpc2VsZWN0KSB7CisJCQkJaWYodGhpcy5fc2VsZWN0ZWQhPW51bGwpIHsKKwkJCQkJdGhpcy5fc2VsZWN0ZWQuc2V0QXR0cmlidXRlKCdzZWxlY3RlZCcsZmFsc2UpOworCQkJCQl0aGlzLl9zZWxlY3RlZC5zZXRBdHRyaWJ1dGUoJ2JnY29sb3InLDB4RkZGRkZGKTsKKwkJCQl9CisJCQkJdGhpcy5fc2VsZWN0ZWQgPSBvYmo7CisJCQkgICAgdGhpcy5fc2VsZWN0ZWQuc2V0QXR0cmlidXRlKCdzZWxlY3RlZCcsdHJ1ZSk7CisJCQl9IGVsc2UgeworCQkJCURlYnVnLndhcm5pbmcoIm5vdCBoYW5kbGVkIix0aGlzKTsKKwkJCX0KKwkJCQorCQldXT4KKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9Il9jaGVja0ZvckFscmVhZHlTZWxlY3RlZCIgYXJncz0ib2JqIj4KKwkJPCFbQ0RBVEFbCisJCQlmb3IgKHZhciBpPTA7aTx0aGlzLl9zZWxlY3RlZC5sZW5ndGg7aSsrKXsKKwkJCQlpZiAodGhpcy5fc2VsZWN0ZWRbaV09PW9iaikgeworCQkJCQl0aGlzLl9zZWxlY3RlZC5zcGxpY2UoaSwxKTsKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJfQorCQkJfQorCQkJcmV0dXJuIGZhbHNlOworCQldXT4KKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9Il9kZXNsZWN0QWxsIj4KKwkJPCFbQ0RBVEFbCisJCQlmb3IgKHZhciBpPTA7aTx0aGlzLl9zZWxlY3RlZC5sZW5ndGg7aSsrKXsKKwkJCQl0aGlzLl9zZWxlY3RlZFtpXS5zZXRBdHRyaWJ1dGUoJ3NlbGVjdGVkJyxmYWxzZSk7CisJCQkJdGhpcy5fc2VsZWN0ZWRbaV0uc2V0QXR0cmlidXRlKCdiZ2NvbG9yJywweEZGRkZGRik7CisJCQl9CisJCQl0aGlzLl9zZWxlY3RlZD1uZXcgQXJyYXkoKTsKKwkJXV0+CisJPC9tZXRob2Q+CisJCisgICAgPG1ldGhvZCBuYW1lPSJhZGRJdGVtIiBhcmdzPSJ0eHQsdmFsdWUiPgorICAgIAluZXcgbHpbdGhpcy5pdGVtY2xhc3NuYW1lXSh0aGlzLmNvbnRlbnQuY29udGVudC5pbm4se3RleHQ6dHh0LHZhbHVlOnZhbHVlLHdpZHRoOnRoaXMud2lkdGh9KTsKKyAgICA8L21ldGhvZD4KKwkKKyAgICA8bWV0aG9kIG5hbWU9InJlbW92ZUl0ZW0iIGFyZ3M9InZhbHVlIj4KKwkJPCFbQ0RBVEFbCisJCQlpZiAodGhpcy5fc2VsZWN0ZWQhPW51bGwpeworCQkJCWlmICh0aGlzLm11bHRpc2VsZWN0KXsKKwkJCQkJZm9yICh2YXIgaT0wO2k8dGhpcy5fc2VsZWN0ZWQubGVuZ3RoO2krKyl7CisJCQkJCQlpZiAodGhpcy5fc2VsZWN0ZWRbaV0udmFsdWU9PXZhbHVlKXsKKwkJCQkJCQl0aGlzLl9zZWxlY3RlZC5zcGxpY2UoaSwxKTsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCX0gZWxzZSB7CisJCQkJCWlmICh0aGlzLl9zZWxlY3RlZC52YWx1ZT09dmFsdWUpIHRoaXMuX3NlbGVjdGVkPT1udWxsOworCQkJCX0KKwkJCX0KKwkJCWZvciAodmFyIGk9MDtpPHRoaXMuY29udGVudC5jb250ZW50Lmlubi5zdWJ2aWV3cy5sZW5ndGg7aSsrKXsKKwkJCQlpZih0aGlzLmNvbnRlbnQuY29udGVudC5pbm4uc3Vidmlld3NbaV0udmFsdWU9PXZhbHVlKXsKKwkJCQkJdGhpcy5jb250ZW50LmNvbnRlbnQuaW5uLnN1YnZpZXdzW2ldLmRlc3Ryb3koKTsKKwkJCQl9CisJCQl9CisJCV1dPgorICAgIDwvbWV0aG9kPgorCTxtZXRob2QgbmFtZT0iY2hlY2tWYWx1ZSIgYXJncz0idmFsdWUiPgorCQk8IVtDREFUQVsKKwkJCXZhciB0ID0gdGhpcy5nZXRBbGxPYmplY3RzKCk7CisJCQlpZiAodCE9bnVsbCl7CisJCQkJZm9yICh2YXIgaT0wO2k8dC5sZW5ndGg7aSsrKXsKKwkJCQkJaWYgKHRbaV0udmFsdWU9PXZhbHVlKSByZXR1cm4gdHJ1ZTsKKwkJCQl9CisJCQl9CisJCQlyZXR1cm4gZmFsc2U7CisJCV1dPgorCTwvbWV0aG9kPgkJCisJCQorICAgIDxtZXRob2QgbmFtZT0iZ2V0QWxsSXRlbXMiPgorICAgIAk8IVtDREFUQVsKKyAgICAJdmFyIGEgPSBuZXcgQXJyYXkoKTsKKyAgICAJZm9yICh2YXIgaT0wO2k8dGhpcy5jb250ZW50LmNvbnRlbnQuaW5uLnN1YnZpZXdzLmxlbmd0aDtpKyspeworICAgIAkJLy9EZWJ1Zy53cml0ZSgidDogIix0aGlzLmNvbnRlbnQuY29udGVudC5pbm4uc3Vidmlld3NbaV0udmFsdWUpOworICAgIAkJYS5wdXNoKE51bWJlcih0aGlzLmNvbnRlbnQuY29udGVudC5pbm4uc3Vidmlld3NbaV0udmFsdWUpKTsKKyAgICAJfQorICAgIAlyZXR1cm4gYTsKKyAgICAJXV0+CisgICAgPC9tZXRob2Q+CisJPG1ldGhvZCBuYW1lPSJnZXRBbGxPYmplY3RzIj4KKyAgICAJPCFbQ0RBVEFbCisgICAgCXZhciBhID0gbmV3IEFycmF5KCk7CisgICAgCWZvciAodmFyIGk9MDtpPHRoaXMuY29udGVudC5jb250ZW50Lmlubi5zdWJ2aWV3cy5sZW5ndGg7aSsrKXsKKyAgICAJCWEucHVzaCh0aGlzLmNvbnRlbnQuY29udGVudC5pbm4uc3Vidmlld3NbaV0pOworICAgIAl9CisgICAgCXJldHVybiBhOworICAgIAldXT4KKwk8L21ldGhvZD4KKyAgICA8bWV0aG9kIG5hbWU9ImNsZWFyTGlzdCI+CisgICAgCWZvciAodmFyIGVnIGluIHRoaXMuY29udGVudC5jb250ZW50Lmlubi5zdWJ2aWV3cyl7CisgICAgCQl0aGlzLmNvbnRlbnQuY29udGVudC5pbm4uc3Vidmlld3NbZWddLmRlc3Ryb3koKTsKKyAgICAJfQorICAgIDwvbWV0aG9kPgorICAgIDx2aWV3IG5hbWU9ImNvbnRlbnQiIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoLTIgfSIgaGVpZ2h0PSIkb25jZXsgcGFyZW50LmhlaWdodC0yIH0iCisgICAgCXg9IjEiIHk9IjEiIGNsaXA9InRydWUiIGJnY29sb3I9IjB4RkZGRkZGIj4KKyAgICAJPHZpZXcgbmFtZT0iY29udGVudCIgPgorICAgIAkJPHZpZXcgbmFtZT0iaW5uIiBsYXlvdXQ9ImF4aXM6eTtzcGFjaW5nOjIiIC8+CisgICAgCTwvdmlldz4KKyAgICAJPG9tX3ZzY3JvbGxiYXIgLz4KKyAgICA8L3ZpZXc+Cis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvdGFibGVDb21ib2JveC5senggYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvdGFibGVDb21ib2JveC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDhkOGZiNgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy90YWJsZUNvbWJvYm94Lmx6eApAQCAtMCwwICsxLDM2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8Y2xhc3MgbmFtZT0idGFibGVDb21ib2JveCIgZXh0ZW5kcz0iY29tYm9ib3giIGVkaXRhYmxlPSJmYWxzZSIgZm9udHNpemU9IjEwIiBzdHlsZT0iY29tcG9uZW50U3R5bGUiPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iaW5pdHZhbHVlIiB0eXBlPSJzdHJpbmciIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJ0dmFsdWUiIHR5cGU9InN0cmluZyIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9InNlbmRjaGFuZ2UiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgICAgICB0aGlzLnBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5sb2FkTW9kc0NvbWJvKHRoaXMpOworICAgICAgICB0aGlzLnNlbGVjdEl0ZW0odGhpcy5pbml0dmFsdWUpOworICAgIDwvaGFuZGxlcj4KKyAgICA8aGFuZGxlciBuYW1lPSJvbmJsdXIiPgorICAgICAgICBpZiAodGhpcy5zZW5kY2hhbmdlKSB0aGlzLnBhcmVudC5zZW5kY2hhbmdlKHRoaXMsdHZhbHVlLHRoaXMuZ2V0VmFsdWUoKSk7CisgICAgPC9oYW5kbGVyPgorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3RhYmxlTGlzdEl0ZW0ubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3RhYmxlTGlzdEl0ZW0ubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmZmExYWQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvdGFibGVMaXN0SXRlbS5sengKQEAgLTAsMCArMSw2NSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9InRhYmxlTGlzdEl0ZW0iIGV4dGVuZHM9InZpZXciCisgICAgYmdjb2xvcj0iJHsgKCB0aGlzLmlzYWx0ZXJlZCApID8gcmVkIDogd2hpdGUgfSIgaGVpZ2h0PSIyMiI+CisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAgICAgdGhpcy5jaGFuZ2Vob2xkZXIgPSBuZXcgQXJyYXkoKTsKKyAgICA8L2hhbmRsZXI+CisKKyAgICA8YXR0cmlidXRlIG5hbWU9ImlzZGF0YXJlY29yZCIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJjaGFuZ2Vob2xkZXIiIHZhbHVlPSJudWxsIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iaXNhbHRlcmVkIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisKKyAgICA8bWV0aG9kIG5hbWU9InNlbmRjaGFuZ2UiIGFyZ3M9Im9iaixvbGR2LG5ld3YiPgorICAgICAgICAvLy8vRGVidWcud3JpdGUoImNoZWNrIFVwZGF0ZSIpOworICAgICAgICB2YXIgdCA9IGZhbHNlOworICAgICAgICBmb3IgKHZhciBlZyBpbiB0aGlzLmNoYW5nZWhvbGRlcil7CisgICAgICAgICAgICBpZiAodGhpcy5jaGFuZ2Vob2xkZXJbZWddWzBdPT1vYmopeworICAgICAgICAgICAgICAgIHQgPSB0cnVlOworICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlaG9sZGVyW2VnXVsxXT1vbGR2OworICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlaG9sZGVyW2VnXVsyXT1uZXd2OworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICghdCkgdGhpcy5jaGFuZ2Vob2xkZXIucHVzaChuZXcgQXJyYXkob2JqLG9sZHYsbmV3dikpOworICAgICAgICAKKyAgICAgICAgdCA9IGZhbHNlOworICAgICAgICBmb3IgKHZhciBlZyBpbiB0aGlzLmNoYW5nZWhvbGRlcil7CisgICAgICAgICAgICBpZiAodGhpcy5jaGFuZ2Vob2xkZXJbZWddWzFdIT10aGlzLmNoYW5nZWhvbGRlcltlZ11bMl0peworICAgICAgICAgICAgICAgIHQgPSB0cnVlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnaXNhbHRlcmVkJyx0KTsKKyAgICAgICAgdGhpcy5fZG91cGRhdGUuc2V0VmFsdWUodCk7CisgICAgICAgIHRoaXMucGFyZW50LnBhcmVudC5wYXJlbnQuc2VuZGNoYW5nZSh0aGlzKTsKKyAgICAgICAgCisgICAgPC9tZXRob2Q+CisgICAgPHNpbXBsZWxheW91dCBheGlzPSJ4IiBzcGFjaW5nPSIzIiBpbnNldD0iMiIgLz4KKworPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3RleHQvYm9yZGVyZWRJbnB1dHRleHQubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3RleHQvYm9yZGVyZWRJbnB1dHRleHQubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlNzRlMjYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvdGV4dC9ib3JkZXJlZElucHV0dGV4dC5sengKQEAgLTAsMCArMSwyMDQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzxjbGFzcyBuYW1lPSJib3JkZXJlZElucHV0dGV4dCIgZXh0ZW5kcz0idmlldyIgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdiYXNlYmdjb2xvcml6ZXInKSB9IiA+CisgICAgPCEtLS1Aa2V5d29yZHMgcHJpdmF0ZSAtLT4KKwk8YXR0cmlidXRlIG5hbWU9IndpZHRoIiB2YWx1ZT0iMjAwIiB0eXBlPSJzaXplIiAvPgorCTwhLS0tQGtleXdvcmRzIHByaXZhdGUgLS0+CisJPGF0dHJpYnV0ZSBuYW1lPSJoZWlnaHQiIHZhbHVlPSIxOCIgdHlwZT0ic2l6ZSIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9InR2YWx1ZSIgdHlwZT0ic3RyaW5nIiB2YWx1ZT0iZGVmYXVsdCIvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0ic2VuZGNoYW5nZSIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibXVsdGlsaW5lIiB2YWx1ZT0iZmFsc2UiLz4KKwk8YXR0cmlidXRlIG5hbWU9ImxhYmVsaWQiIHR5cGU9Im51bWJlciIgc2V0dGVyPSJzZXRMYWJlbElkKGxhYmVsaWQpIiAvPgorCTxtZXRob2QgbmFtZT0ic2V0TGFiZWxJZCIgYXJncz0iX2xhYmVsaWQiID4KKwkJdGhpcy5sYWJlbGlkID0gX2xhYmVsaWQ7CisJCXRoaXMuc2V0QXR0cmlidXRlKCd0ZXh0JyxjYW52YXMuZ2V0TGFiZWxOYW1lKHRoaXMubGFiZWxpZCkpOworCTwvbWV0aG9kPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iY2hlY2tJc051bWJlciIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iY2hlY2tJc0RvdWJsZSIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iZWRpdGFibGUiIHZhbHVlPSJ0cnVlIiBzZXR0ZXI9InNldEVkaXRhYmxlKGVkaXRhYmxlKSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICA8bWV0aG9kIG5hbWU9InNldEVkaXRhYmxlIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgIHRoaXMuZWRpdGFibGU9dmFsdWU7CisgICAgCXRoaXMuZmllbGQuc2V0RW5hYmxlZCh2YWx1ZSk7CisgICAgPC9tZXRob2Q+CisgICAgPCEtLS1Aa2V5d29yZHMgcHJpdmF0ZSAtLT4KKyAgICA8ZXZlbnQgbmFtZT0ib25ibHVyIiAvPgorICAgIDxtZXRob2QgbmFtZT0ic2V0SXRlbUVuYWJsZWQiIGFyZ3M9InZhbHVlIj4KKyAgICAJdGhpcy5maWVsZC5zZXRFbmFibGVkKHZhbHVlKTsKKyAgICA8L21ldGhvZD4gICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJtYXhsZW5ndGgiIHZhbHVlPSJudWxsIiB0eXBlPSJudW1iZXIiLz4gICAgICAgICAJCisJPGF0dHJpYnV0ZSBuYW1lPSJ0ZXh0IiB0eXBlPSJzdHJpbmciIHZhbHVlPSIiIC8+CisJCTwhLS0gLS0+CisgIDxpbnB1dHRleHQgbmFtZT0iZmllbGQiIGZvbnRzaXplPSIxMCIgdGV4dD0iJHsgdGhpcy5wYXJlbnQudGV4dCB9IiB4PSIxIiB5PSIxIiBiZ2NvbG9yPSIweEZGRkZGRiIgCisgIAltdWx0aWxpbmU9IiRvbmNle3BhcmVudC5tdWx0aWxpbmV9IiB3aWR0aD0iJHsgdGhpcy5wYXJlbnQud2lkdGgtMiB9IiBoZWlnaHQ9IiR7IHRoaXMucGFyZW50LmhlaWdodC0yIH0iID4KKyAgCQk8YXR0cmlidXRlIG5hbWU9InByZVRleHQiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKyAgCQk8aGFuZGxlciBuYW1lPSJvbmZvY3VzIj4KKyAgCQkJdGhpcy5wcmVUZXh0ID0gdGhpcy5nZXRUZXh0KCk7CisgIAkJPC9oYW5kbGVyPgorICAgICAgCTxoYW5kbGVyIG5hbWU9Im9uYmx1ciI+CisgICAgICAJCXZhciB0ID0gdGhpcy5nZXRUZXh0KCk7CisgICAgICAJCWlmICh0aGlzLnBhcmVudC5jaGVja0lzTnVtYmVyKXsKKyAgICAgIAkJCWlmICggaXNOYU4oIE51bWJlcih0KSApICl7CisgICAgICAJCQkJaWYgKHRoaXMucGFyZW50LmNoZWNrSXNEb3VibGUpeworICAgICAgCQkJCQl0PSIwLjAwIjsKKyAgICAgIAkJCQl9IGVsc2UgeworICAgICAgCQkJCQl0PXRoaXMucHJlVGV4dDsKKyAgICAgIAkJCQl9CisgICAgICAJCQkJdGhpcy5zZXRBdHRyaWJ1dGUoJ3RleHQnLHQpOworICAgICAgCQkJfQorICAgICAgCQl9CisgICAgICAgICAgICBpZiAodGhpcy5wYXJlbnQuc2VuZGNoYW5nZSkgdGhpcy5wYXJlbnQucGFyZW50LnNlbmRjaGFuZ2UodGhpcy5wYXJlbnQsdGhpcy5wYXJlbnQudHZhbHVlLHRoaXMuZ2V0VGV4dCgpKTsKKyAgICAgICAgICAgIGlmICh0aGlzLnBhcmVudC5vbmJsdXIpIHRoaXMucGFyZW50Lm9uYmx1ci5zZW5kRXZlbnQoKTsKKyAgICAgIAk8L2hhbmRsZXI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgICAgICB0aGlzLnNldEVuYWJsZWQodGhpcy5wYXJlbnQuZWRpdGFibGUpOworICAgICAgICA8L2hhbmRsZXI+ICAgICAgIAkgICAgICAgICAgIAorCTwvaW5wdXR0ZXh0PgkgICAKKwkgCisJPG1ldGhvZCBuYW1lPSJnZXRUZXh0Ij4KKwkJcmV0dXJuIHRoaXMuZmllbGQuZ2V0VGV4dCgpOworCTwvbWV0aG9kPgorCTxtZXRob2QgbmFtZT0ic2V0VGV4dCIgYXJncz0idHh0Ij4KKwkJdGhpcy5zZXRBdHRyaWJ1dGUoJ3RleHQnLHR4dCk7CisJPC9tZXRob2Q+IAkJCis8L2NsYXNzPgorCis8Y2xhc3MgbmFtZT0iYm9yZGVyZWRNdWx0aUlucHV0dGV4dCIgZXh0ZW5kcz0idmlldyI+CisgICAgPCEtLS1Aa2V5d29yZHMgcHJpdmF0ZSAtLT4KKwk8YXR0cmlidXRlIG5hbWU9IndpZHRoIiB2YWx1ZT0iMjAwIiB0eXBlPSJzaXplIiAvPgorICAgIDwhLS0tQGtleXdvcmRzIHByaXZhdGUgLS0+CQorCTxhdHRyaWJ1dGUgbmFtZT0iaGVpZ2h0IiB2YWx1ZT0iMTgiIHR5cGU9InNpemUiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJ0dmFsdWUiIHR5cGU9InN0cmluZyIgdmFsdWU9ImRlZmF1bHQiLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9InNlbmRjaGFuZ2UiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9Im11bHRpbGluZSIgdmFsdWU9ImZhbHNlIi8+CisJPGF0dHJpYnV0ZSBuYW1lPSJsYWJlbGlkIiB0eXBlPSJudW1iZXIiIHNldHRlcj0ic2V0TGFiZWxJZChsYWJlbGlkKSIgLz4KKwk8bWV0aG9kIG5hbWU9InNldExhYmVsSWQiIGFyZ3M9Il9sYWJlbGlkIiA+CisJCXRoaXMubGFiZWxpZCA9IF9sYWJlbGlkOworCQl0aGlzLnNldEF0dHJpYnV0ZSgndGV4dCcsY2FudmFzLmdldExhYmVsTmFtZSh0aGlzLmxhYmVsaWQpKTsKKwk8L21ldGhvZD4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImNoZWNrSXNOdW1iZXIiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImNoZWNrSXNEb3VibGUiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImVkaXRhYmxlIiB2YWx1ZT0idHJ1ZSIgc2V0dGVyPSJzZXRFZGl0YWJsZShlZGl0YWJsZSkiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgPG1ldGhvZCBuYW1lPSJzZXRFZGl0YWJsZSIgYXJncz0idmFsdWUiPgorICAgICAgICB0aGlzLmVkaXRhYmxlPXZhbHVlOworICAgIAl0aGlzLmZpZWxkLnNldEVuYWJsZWQodmFsdWUpOworICAgIDwvbWV0aG9kPgorICAgIDxtZXRob2QgbmFtZT0ic2V0SXRlbUVuYWJsZWQiIGFyZ3M9InZhbHVlIj4KKyAgICAJdGhpcy5maWVsZC5zZXRFbmFibGVkKHZhbHVlKTsKKyAgICA8L21ldGhvZD4gICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJtYXhsZW5ndGgiIHZhbHVlPSJudWxsIiB0eXBlPSJudW1iZXIiLz4gICAgICAgCisgICAgPCEtLS1Aa2V5d29yZHMgcHJpdmF0ZSAtLT4gIAkKKwk8YXR0cmlidXRlIG5hbWU9ImJnY29sb3IiIHZhbHVlPSIweEEzQjJDQyIgdHlwZT0iY29sb3IiIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJ0ZXh0IiB0eXBlPSJzdHJpbmciIHZhbHVlPSIiIC8+CisJCTwhLS0gLS0+CisgIDxpbnB1dHRleHQgbmFtZT0iZmllbGQiIGZvbnRzaXplPSIxMCIgdGV4dD0iJHsgdGhpcy5wYXJlbnQudGV4dCB9IiB4PSIxIiB5PSIxIiBiZ2NvbG9yPSIweEZGRkZGRiIgCisgIAltdWx0aWxpbmU9InRydWUiIHdpZHRoPSIkeyB0aGlzLnBhcmVudC53aWR0aC0yIH0iIGhlaWdodD0iJHsgdGhpcy5wYXJlbnQuaGVpZ2h0LTIgfSIgPgorICAgICAgCTxoYW5kbGVyIG5hbWU9Im9uYmx1ciI+CisgICAgICAJCXZhciB0ID0gdGhpcy5nZXRUZXh0KCk7CisgICAgICAJCWlmICh0aGlzLnBhcmVudC5jaGVja0lzTnVtYmVyKXsKKyAgICAgIAkJCWlmICggaXNOYU4oIE51bWJlcih0KSApICl7CisgICAgICAJCQkJaWYgKHRoaXMucGFyZW50LmNoZWNrSXNEb3VibGUpeworICAgICAgCQkJCQl0PSIwLjAwIjsKKyAgICAgIAkJCQl9IGVsc2UgeworICAgICAgCQkJCQl0PSIwIjsKKyAgICAgIAkJCQl9CisgICAgICAJCQkJdGhpcy5zZXRBdHRyaWJ1dGUoJ3RleHQnLHQpOworICAgICAgCQkJfQorICAgICAgCQl9CisgICAgICAgICAgICBpZiAodGhpcy5wYXJlbnQuc2VuZGNoYW5nZSkgdGhpcy5wYXJlbnQucGFyZW50LnNlbmRjaGFuZ2UodGhpcy5wYXJlbnQsdGhpcy5wYXJlbnQudHZhbHVlLHRoaXMuZ2V0VGV4dCgpKTsKKyAgICAgIAk8L2hhbmRsZXI+ICAgCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgICAgICB0aGlzLnNldEVuYWJsZWQodGhpcy5wYXJlbnQuZWRpdGFibGUpOworICAgICAgICAgICAgaWYodGhpcy5tdWx0aWxpbmUpIHRoaXMuaW5pdCgpOworICAgICAgICA8L2hhbmRsZXI+ICAgICAgIAkgICAgICAgICAgIAorICAgICAgICA8bWV0aG9kIG5hbWU9ImluaXQiPgorICAgICAgICAgICAgc3VwZXIuaW5pdCgpOyAgICAgICAgCisgICAgICAgIDwvbWV0aG9kPgorCTwvaW5wdXR0ZXh0PgkgICAKKwkgCisJPG1ldGhvZCBuYW1lPSJnZXRUZXh0Ij4KKwkJcmV0dXJuIHRoaXMuZmllbGQuZ2V0VGV4dCgpOworCTwvbWV0aG9kPgorCTxtZXRob2QgbmFtZT0ic2V0VGV4dCIgYXJncz0idHh0Ij4KKwkJdGhpcy5zZXRBdHRyaWJ1dGUoJ3RleHQnLHR4dCk7CisJPC9tZXRob2Q+IAkJCis8L2NsYXNzPgorCis8Y2xhc3MgbmFtZT0iYm9yZGVyZWRQYXNzd29yZFRleHQiIGV4dGVuZHM9InZpZXciPgorICAgIDwhLS0tQGtleXdvcmRzIHByaXZhdGUgLS0+CisJPGF0dHJpYnV0ZSBuYW1lPSJ3aWR0aCIgdmFsdWU9IjIwMCIgdHlwZT0ic2l6ZSIgLz4KKwk8IS0tLUBrZXl3b3JkcyBwcml2YXRlIC0tPgorCTxhdHRyaWJ1dGUgbmFtZT0iaGVpZ2h0IiB2YWx1ZT0iMTgiIHR5cGU9InNpemUiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJ0dmFsdWUiIHR5cGU9InN0cmluZyIgdmFsdWU9ImRlZmF1bHQiLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9InNlbmRjaGFuZ2UiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9Im11bHRpbGluZSIgdmFsdWU9ImZhbHNlIi8+CisJPGF0dHJpYnV0ZSBuYW1lPSJsYWJlbGlkIiB0eXBlPSJudW1iZXIiIHNldHRlcj0ic2V0TGFiZWxJZChsYWJlbGlkKSIgLz4KKwk8bWV0aG9kIG5hbWU9InNldExhYmVsSWQiIGFyZ3M9Il9sYWJlbGlkIiA+CisJCXRoaXMubGFiZWxpZCA9IF9sYWJlbGlkOworCQl0aGlzLnNldEF0dHJpYnV0ZSgndGV4dCcsY2FudmFzLmdldExhYmVsTmFtZSh0aGlzLmxhYmVsaWQpKTsKKwk8L21ldGhvZD4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImNoZWNrSXNOdW1iZXIiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImNoZWNrSXNEb3VibGUiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImVkaXRhYmxlIiB2YWx1ZT0idHJ1ZSIgc2V0dGVyPSJzZXRFZGl0YWJsZShlZGl0YWJsZSkiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgPG1ldGhvZCBuYW1lPSJzZXRFZGl0YWJsZSIgYXJncz0idmFsdWUiPgorICAgICAgICB0aGlzLmVkaXRhYmxlPXZhbHVlOworICAgIAl0aGlzLmZpZWxkLnNldEVuYWJsZWQodmFsdWUpOworICAgIDwvbWV0aG9kPgorICAgIDxtZXRob2QgbmFtZT0ic2V0SXRlbUVuYWJsZWQiIGFyZ3M9InZhbHVlIj4KKyAgICAJdGhpcy5maWVsZC5zZXRFbmFibGVkKHZhbHVlKTsKKyAgICA8L21ldGhvZD4gICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJtYXhsZW5ndGgiIHZhbHVlPSJudWxsIiB0eXBlPSJudW1iZXIiLz4gIAorICAgIDwhLS0tQGtleXdvcmRzIHByaXZhdGUgLS0+ICAgICAgIAkKKwk8YXR0cmlidXRlIG5hbWU9ImJnY29sb3IiIHZhbHVlPSIweEEzQjJDQyIgdHlwZT0iY29sb3IiIC8+CisJPCEtLS1Aa2V5d29yZHMgcHJpdmF0ZSAtLT4KKwk8YXR0cmlidXRlIG5hbWU9InRleHQiIHR5cGU9InN0cmluZyIgdmFsdWU9IiIgLz4KKwkJPCEtLSAtLT4KKyAgPGlucHV0dGV4dCBuYW1lPSJmaWVsZCIgZm9udHNpemU9IjEwIiB0ZXh0PSIkeyB0aGlzLnBhcmVudC50ZXh0IH0iIHg9IjEiIHk9IjEiIGJnY29sb3I9IjB4RkZGRkZGIiAKKyAgCW11bHRpbGluZT0iJG9uY2V7cGFyZW50Lm11bHRpbGluZX0iIHBhc3N3b3JkPSJ0cnVlIiB3aWR0aD0iJHsgdGhpcy5wYXJlbnQud2lkdGgtMiB9IiBoZWlnaHQ9IiR7IHRoaXMucGFyZW50LmhlaWdodC0yIH0iID4KKyAgICAgIAk8aGFuZGxlciBuYW1lPSJvbmJsdXIiPgorICAgICAgCQl2YXIgdCA9IHRoaXMuZ2V0VGV4dCgpOworICAgICAgCQlpZiAodGhpcy5wYXJlbnQuY2hlY2tJc051bWJlcil7CisgICAgICAJCQlpZiAoIGlzTmFOKCBOdW1iZXIodCkgKSApeworICAgICAgCQkJCWlmICh0aGlzLnBhcmVudC5jaGVja0lzRG91YmxlKXsKKyAgICAgIAkJCQkJdD0iMC4wMCI7CisgICAgICAJCQkJfSBlbHNlIHsKKyAgICAgIAkJCQkJdD0iMCI7CisgICAgICAJCQkJfQorICAgICAgCQkJCXRoaXMuc2V0QXR0cmlidXRlKCd0ZXh0Jyx0KTsKKyAgICAgIAkJCX0KKyAgICAgIAkJfQorICAgICAgICAgICAgaWYgKHRoaXMucGFyZW50LnNlbmRjaGFuZ2UpIHRoaXMucGFyZW50LnBhcmVudC5zZW5kY2hhbmdlKHRoaXMucGFyZW50LHRoaXMucGFyZW50LnR2YWx1ZSx0aGlzLmdldFRleHQoKSk7CisgICAgICAJPC9oYW5kbGVyPiAgIAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgICAgICAgICAgdGhpcy5zZXRFbmFibGVkKHRoaXMucGFyZW50LmVkaXRhYmxlKTsKKyAgICAgICAgPC9oYW5kbGVyPiAgICAgICAJICAgICAgICAgICAKKwk8L2lucHV0dGV4dD4JICAgCisJIAorCTxtZXRob2QgbmFtZT0iZ2V0VGV4dCI+CisJCXJldHVybiB0aGlzLmZpZWxkLmdldFRleHQoKTsKKwk8L21ldGhvZD4KKwk8bWV0aG9kIG5hbWU9InNldFRleHQiIGFyZ3M9InR4dCI+CisJCXRoaXMuc2V0QXR0cmlidXRlKCd0ZXh0Jyx0eHQpOworCTwvbWV0aG9kPiAJCQorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3RleHQvY3VzdG9tRWRpdHRleHQubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3RleHQvY3VzdG9tRWRpdHRleHQubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2MDRjZjQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvdGV4dC9jdXN0b21FZGl0dGV4dC5sengKQEAgLTAsMCArMSwyMzIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzxjbGFzcyBuYW1lPSJjdXN0b21FZGl0dGV4dCIgZXh0ZW5kcz0iaW5wdXR0ZXh0IiBiZ2NvbG9yPSIweEZGRkZGRiIgZm9udHNpemU9IjExIiBoZWlnaHQ9IjIwIiA+CisJCisJPHZpZXcgbmFtZT0idl9ib3JkZXIiIGhlaWdodD0iMSIgICAgICAgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdzZWNvbmRCb3JkZXJDb2xvcicpIH0iIHdpZHRoPSIkb25jZXtwYXJlbnQud2lkdGh9IiAvPgorICAgIDx2aWV3IG5hbWU9ImhfYm9yZGVyIiB3aWR0aD0iMSIgIHk9IjEiIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignc2Vjb25kQm9yZGVyQ29sb3InKSB9IiBoZWlnaHQ9IiRvbmNle3BhcmVudC5oZWlnaHQgLTF9IiAvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZCIgdHlwZT0ibnVtYmVyIiBzZXR0ZXI9InNldExhYmVsSWQobGFiZWxpZCkiIC8+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJpc3ZhbGlkSW5wdXQiIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0icmVnZXhwVHlwZSIgdmFsdWU9Im5vbmUiIHR5cGU9InN0cmluZyIgLz4KKwk8YXR0cmlidXRlIG5hbWU9InJlZ2V4cExhYmVsaWQiIHR5cGU9Im51bWJlciIgLz4KKwk8YXR0cmlidXRlIG5hbWU9InByZVRleHQiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwkKKwk8ZXZlbnQgbmFtZT0ib25hZnRlckNoZWNrIiAvPgorCisJPGhhbmRsZXIgbmFtZT0ib25mb2N1cyIgYXJncz0iZiI+CisgICAgCXRoaXMucHJlVGV4dCA9IHRoaXMuZ2V0VGV4dCgpOworICAgIDwvaGFuZGxlcj4KKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgIAkvL3RoaXMuZmllbGQuc2V0QXR0cmlidXRlKCJiZ2NvbG9yIiwweEZGRkZGRik7CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9udGV4dCIgYXJncz0idHh0Ij4KKyAgICAJPCFbQ0RBVEFbCisgICAgICAgICAgICAKKyAgICAJICAgIC8vCisgICAgCSAgIAorICAgIAkgICAgaWYgKFN5c3RlbS5jYXBhYmlsaXRpZXMub3MuaW5kZXhPZignTGludXgnKT09LTEpIHsgCisgICAgICAgICAgICAgICAgcmV0dXJuOyAKKwkgICAgICAgIH0KKwkgICAgICAgIAorCSAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiU3lzdGVtLmNhcGFiaWxpdGllcy5vcyAtLSBTVEFSVCAiLFN5c3RlbS5jYXBhYmlsaXRpZXMub3MsdHh0KTsKKwkgICAgICAgIAorCSAgICAgICAgaWYgKHR4dCA9PSBudWxsIHx8IHR4dC5sZW5ndGggPT0gMCkgeworCSAgICAgICAgCXJldHVybjsKKwkgICAgICAgIH0KKwkgICAgICAgIAorCSAgICAgICAgCisJICAgICAgICAvL1VURjggY2hhcmFjdGVyIHJlbWFwcGluZ3MKKyAgICAgICAgICAgIHZhciBjcDEyNTIgPSBuZXcgT2JqZWN0KCk7CisgICAgICAgICAgICBjcDEyNTJbMHgyMGFjXT0weDgwOworICAgICAgICAgICAgY3AxMjUyWzB4MjAxYV09MHg4MjsKKyAgICAgICAgICAgIGNwMTI1MlsweDAxOTJdPTB4ODM7CisgICAgICAgICAgICBjcDEyNTJbMHgyMDFlXT0weDg0OworICAgICAgICAgICAgY3AxMjUyWzB4MjAyNl09MHg4NTsKKyAgICAgICAgICAgIGNwMTI1MlsweDIwMjBdPTB4ODY7CisgICAgICAgICAgICBjcDEyNTJbMHgyMDIxXT0weDg3OworICAgICAgICAgICAgY3AxMjUyWzB4MDJjNl09MHg4ODsKKyAgICAgICAgICAgIGNwMTI1MlsweDIwMzBdPTB4ODk7CisgICAgICAgICAgICBjcDEyNTJbMHgwMTYwXT0weDhhOworICAgICAgICAgICAgY3AxMjUyWzB4MjAzOV09MHg4YjsKKyAgICAgICAgICAgIGNwMTI1MlsweDAxNTJdPTB4OGM7CisgICAgICAgICAgICBjcDEyNTJbMHgwMTdkXT0weDhlOworICAgICAgICAgICAgY3AxMjUyWzB4MjAxOF09MHg5MTsKKyAgICAgICAgICAgIGNwMTI1MlsweDIwMTldPTB4OTI7CisgICAgICAgICAgICBjcDEyNTJbMHgyMDFjXT0weDkzOworICAgICAgICAgICAgY3AxMjUyWzB4MjAxZF09MHg5NDsKKyAgICAgICAgICAgIGNwMTI1MlsweDIwMjJdPTB4OTU7CisgICAgICAgICAgICBjcDEyNTJbMHgyMDEzXT0weDk2OworICAgICAgICAgICAgY3AxMjUyWzB4MjAxNF09MHg5NzsKKyAgICAgICAgICAgIGNwMTI1MlsweDAyZGNdPTB4OTg7CisgICAgICAgICAgICBjcDEyNTJbMHgyMTIyXT0weDk5OworICAgICAgICAgICAgY3AxMjUyWzB4MDE2MV09MHg5YTsKKyAgICAgICAgICAgIGNwMTI1MlsweDIwM2FdPTB4OWI7CisgICAgICAgICAgICBjcDEyNTJbMHgwMTUzXT0weDljOworICAgICAgICAgICAgY3AxMjUyWzB4MDE3ZV09MHg5ZTsKKyAgICAgICAgICAgIGNwMTI1MlsweDAxNzhdPTB4OWY7CisgICAgCQorICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgcz1ldmFsKFNlbGVjdGlvbi5nZXRGb2N1cygpKTsgCisgICAgICAgICAgICB2YXIgdD10eHQ7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIGk9U2VsZWN0aW9uLmdldENhcmV0SW5kZXgoKS0xOyAKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiaSIsaSxTZWxlY3Rpb24uZ2V0Q2FyZXRJbmRleCgpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIGQ9aTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiRE8gV0hJTEUgLTEtICIsdC5jaGFyQ29kZUF0KGkpLGNwMTI1Mlt0LmNoYXJDb2RlQXQoaSldLGksMHg4MCwweEJGKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgd2hpbGUgKCgodC5jaGFyQ29kZUF0KGkpPj0weDgwICYmIHQuY2hhckNvZGVBdChpKTw9MHhCRikgfHwgKGNwMTI1Mlt0LmNoYXJDb2RlQXQoaSldKSkgJiYgaT4wKSB7CisgICAgICAgICAgICAJCisgICAgICAgICAgICAJLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiRE8gV0hJTEUgLTItICIsdC5jaGFyQ29kZUF0KGkpLGNwMTI1Mlt0LmNoYXJDb2RlQXQoaSldLGkpOworICAgICAgICAgICAgCQorICAgICAgICAgICAgICAgIGlmIChjcDEyNTJbdC5jaGFyQ29kZUF0KGkpXSkgeworICAgICAgICAgICAgICAgICAgICB0PXQuc3Vic3RyKDAsaSkrU3RyaW5nLmZyb21DaGFyQ29kZShjcDEyNTJbdC5jaGFyQ29kZUF0KGkpXSkrdC5zdWJzdHIoaSsxKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaS0tOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGk9PWQpIHsgCisgICAgICAgICAgICAJLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiaSA9PSBkIE5PVEhJTkcgVE8gUkVQTEFDRSEiKTsKKyAgICAgICAgICAgICAgICByZXR1cm47IAorICAgICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgICAgIHZhciB1PTA7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICh0LmNoYXJDb2RlQXQoaSk+PTB4QzIgJiYgdC5jaGFyQ29kZUF0KGkpPD0weERGICYmIGQtaT09MSkgeworICAgICAgICAgICAgICAgICAvLyB0d28tYnl0ZSBzZXF1ZW5jZQorICAgICAgICAgICAgICAgIHU9ICh0LmNoYXJDb2RlQXQoaSsxKSAmIDB4M0YpICAgICAgICsKKyAgICAgICAgICAgICAgICAgICgodC5jaGFyQ29kZUF0KGkgICkgJiAzICAgKSA8PCA2KSArCisgICAgICAgICAgICAgICAgICAoKHQuY2hhckNvZGVBdChpICApICYgMHgxQykgPDwgNik7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHQuY2hhckNvZGVBdChpKT49MHhFMCAmJiB0LmNoYXJDb2RlQXQoaSk8PTB4RUYgJiYgZC1pPT0yKSB7CisgICAgICAgICAgICAgICAgLy8gdGhyZWUtYnl0ZSBzZXF1ZW5jZQorICAgICAgICAgICAgICAgIC8vIChGbGFzaCBQbGF5ZXIgZG9lc24ndCBjb3BlIHdpdGggYW55IG1vcmUgb2JzY3VyZSBVbmljb2RlKQorICAgICAgICAgICAgICAgIHU9ICh0LmNoYXJDb2RlQXQoaSsyKSAmIDB4M0YpICAgICAgICArCisgICAgICAgICAgICAgICAgICAoKHQuY2hhckNvZGVBdChpKzEpICYgMyAgICkgPDwgNiApICsKKyAgICAgICAgICAgICAgICAgICgodC5jaGFyQ29kZUF0KGkrMSkgJiAweDNDKSA8PCA2ICkgKworICAgICAgICAgICAgICAgICAgKCh0LmNoYXJDb2RlQXQoaSAgKSAmIDB4MEYpIDw8IDEyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICAgICBpZiAodSE9MCkgeworICAgICAgICAgICAgCS8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIlJlcGxhY2UgU3RyaW5nIC0xLSAiLHR4dCx1LCJSZXBsYWNlIFdpdGggIixTdHJpbmcuZnJvbUNoYXJDb2RlKHUpKTsKKyAgICAgICAgICAgIAkKKyAgICAgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgidGV4dCIsdC5zbGljZSgwLGkpK1N0cmluZy5mcm9tQ2hhckNvZGUodSkrdC5zbGljZShkKzEpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJSZXBsYWNlIFN0cmluZyAtMi0gIix0eHQsdSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoInRleHQiLHRoaXMudGV4dC5zcGxpdChTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDMpKS5qb2luKCcnKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIi0tIEVORCAiLHRoaXMudGV4dCk7CisgICAgICAgICAgICAKKyAgICAJXV0+CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0iY2FsbERlbGVnYXRlIiB2YWx1ZT0ibnVsbCIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9InJlZ0V4cENoZWNrSWQiIHZhbHVlPSItMSIgLz4KKwkKKwk8aGFuZGxlciBuYW1lPSJvbmJsdXIiPgorCQk8IVtDREFUQVsKKwkJCWlmICh0aGlzLnJlZ2V4cFR5cGUhPSJub25lIil7CisJCQkKKwkJCQkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbmJsdXIiKTsKKwkJCQkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbmJsdXIgY2hlY2sgIix0aGlzLnJlZ2V4cFR5cGUpOwkJCisJCQkJdmFyIGZpZWxkVmFsdWUgPSB0aGlzLmdldFRleHQoKTsKKwkJCQlpZiAodGhpcy5yZWdleHBUeXBlPT0iZW1haWwiKSB7CisJCQkJCS8vdmFyIHJlZ0V4cFYgPSAiLitcXEAoXFxbPylbYS16QS1aMC05XFwtXFwuXStcXC4oW2EtekEtWl17MiwzfXxbMC05XXsxLDN9KShcXF0/KSI7CisJCQkJCXZhciByZWdFeHBWID0gIl5bX2EtekEtWjAtOS1dKyhcLltfYS16QS1aMC05LV0rKSpAKFthLXpBLVowLTktXStcLikrKFthLXpBLVpdezEsM30pJCI7CisJCQkJCS8vdmFyIHJlZ0V4cFYgPSAiXihbYS16QS1aMC05X1wtXC5dKylAKChcW1swLTldezEsM31cLlswLTldezEsM31cLlswLTldezEsM31cLil8KChbYS16QS1aMC05XC1dK1wuKSspKShbYS16QS1aXXsyLDR9fFswLTldezEsM30pKFxdPykkIjsKKwkJCQkJdGhpcy5yZWdleHBMYWJlbGlkID0gNTE5OworCQkJCX0gZWxzZSBpZiAodGhpcy5yZWdleHBUeXBlPT0iZGF0ZSIpeworCQkJCQl2YXIgcmVnRXhwViA9ICIoMFsxLTldfFsxMl1bMC05XXwzWzAxXSlbLSAvLl0oMFsxLTldfDFbMDEyXSlbLSAvLl0oMTl8MjApXFxkXFxkIjsKKwkJCQkJdGhpcy5yZWdleHBMYWJlbGlkID0gNTE4OworCQkJCX0gZWxzZSBpZiAodGhpcy5yZWdleHBUeXBlPT0iZmxvYXQiKXsKKwkJCQkJdmFyIHJlZ0V4cFYgPSAiWzAtOV0qXFwuWzAtOV0qIjsKKwkJCQkJdGhpcy5yZWdleHBMYWJlbGlkID0gNTIwOworCQkJCX0gZWxzZSBpZiAodGhpcy5yZWdleHBUeXBlPT0icGhvbmUiKXsKKwkJCQkJdmFyIHJlZ0V4cFYgPSAiXFwrWzAtOV0rIFswLTldKyBbMC05XFwtXSsiOworCQkJCQl0aGlzLnJlZ2V4cExhYmVsaWQgPSA1MjI7CisJCQkJfSBlbHNlIGlmICh0aGlzLnJlZ2V4cFR5cGU9PSJudW1iZXIiKXsKKwkJCQkJdmFyIHJlZ0V4cFYgPSAiWzAtOV0qIjsKKwkJCQkJdGhpcy5yZWdleHBMYWJlbGlkID0gNTIxOworCQkJCX0gZWxzZSBpZiAodGhpcy5yZWdleHBUeXBlPT0idGltZSIpeworCQkJCQl2YXIgcmVnRXhwViA9ICIoWzAxXVswLTldfDJbMC0zXSk6WzAtNV1bMC05XSI7CisJCQkJCXRoaXMucmVnZXhwTGFiZWxpZCA9IDUyMzsKKwkJCQl9IGVsc2UgeworCQkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53YXJuKCJVbmtvd24gUmVnZXhwIFR5cGU6ICIsdGhpcy5yZWdleHBUeXBlKTsKKwkJCQl9CisJCQkJLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgicmVnRXhwVjogIixyZWdFeHBWKTsKKwkJICAJICAgIHZhciBmaWVsZFZhbHVlID0gdGhpcy5nZXRUZXh0KCk7CisJCSAgCSAgICAKKwkJICAJICAgIHRoaXMucmVnRXhwQ2hlY2tJZCA9IGNhbnZhcy5kb1JlZ0V4cENoZWNrKHRoaXMuZ2V0VGV4dCgpLHJlZ0V4cFYpOworCQkgIAkgICAgCisJCSAgCSAgICBpZih0aGlzLmNhbGxEZWxlZ2F0ZSA9PSBudWxsKSB7CisJCSAgCSAgICAJdGhpcy5jYWxsRGVsZWdhdGUgPSBuZXcgTHpEZWxlZ2F0ZSggdGhpcywgImNoZWNrUmVnRXhwUmVzdWx0IiApOworCQkgIAkgICAgfQorCQkKKwkJCQlsei5UaW1lci5yZXNldFRpbWVyKCB0aGlzLmNhbGxEZWxlZ2F0ZSwgNTAgKTsKKwkJCX0KKwkJXV0+CisJPC9oYW5kbGVyPgorCQorCTxtZXRob2QgbmFtZT0iY2hlY2tSZWdFeHBSZXN1bHQiIGFyZ3M9Iml0ZW0iPgorCQl2YXIgdFJlc3VsdCA9IGNhbnZhcy5jaGVja1JlZ0V4cFJlc3VsdCh0aGlzLnJlZ0V4cENoZWNrSWQpOworICAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImNhbGxiYWNrIix0UmVzdWx0KTsKKyAgICAgCisJCWlmKHRSZXN1bHQgPT0gdW5kZWZpbmVkIHx8IHRSZXN1bHQgPT0gbnVsbCkgeworCQkJbHouVGltZXIucmVzZXRUaW1lciggdGhpcy5jYWxsRGVsZWdhdGUsIDUwICk7CisJCX0gZWxzZSB7CisJCQlpZighdFJlc3VsdCl7CisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud2FybigiRkFMU0U6IHJlZ2V4cGVycm9yIik7CisgICAgICAgICAgICAgIAlkaXNhYmxlc1Rvb2x0aXBzKG5ldyBsei5yZWdleHB0aXAoY2FudmFzLHt4OnRoaXMuZ2V0QXR0cmlidXRlUmVsYXRpdmUoJ3gnLGNhbnZhcykrMTIsCisgICAgICAgICAgICAgIAkJCQkJeTp0aGlzLmdldEF0dHJpYnV0ZVJlbGF0aXZlKCd5JyxjYW52YXMpKzI2LAorICAgICAgICAgICAgICAJCQkJCXJlZ2V4cHRleHQ6Y2FudmFzLmdldExhYmVsTmFtZSh0aGlzLnJlZ2V4cExhYmVsaWQpfSkpOworICAgICAgICAgICAgICAJdGhpcy51c2VQcmVDb250ZW50KCk7CisgICAgICAgICAgICAgIAl0aGlzLnNldEF0dHJpYnV0ZSgnaXN2YWxpZElucHV0JyxmYWxzZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAJaWYoIXRoaXMuaXN2YWxpZElucHV0KXsKKyAgICAgICAgICAgICAgICAJZGlzYWJsZXNUb29sdGlwcyhudWxsKTsKKyAgICAgICAgICAgICAgCX0KKyAgICAgICAgICAgICAgCXRoaXMuc2V0QXR0cmlidXRlKCdpc3ZhbGlkSW5wdXQnLHRydWUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIi0tIENvbXBsZXRlIC0tIik7CisgICAgICAgICAgICB0aGlzLm9uYWZ0ZXJDaGVjay5zZW5kRXZlbnQoKTsKKwkJfQorICAgICA8L21ldGhvZD4KKwkKKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InNldExhYmVsSWQiIGFyZ3M9Il9sYWJlbGlkIiA+CisgICAgICAgIHRoaXMubGFiZWxpZCA9IF9sYWJlbGlkOworICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgndGV4dCcsY2FudmFzLmdldExhYmVsTmFtZSh0aGlzLmxhYmVsaWQpKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgCTxtZXRob2QgbmFtZT0idXNlUHJlQ29udGVudCI+CisgIAkJdGhpcy5zZXRBdHRyaWJ1dGUoJ3RleHQnLHRoaXMucHJlVGV4dCk7CisgIAk8L21ldGhvZD4gICAgCisgICAgCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvdGV4dC9jdXN0b21JbnB1dHRleHQubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3RleHQvY3VzdG9tSW5wdXR0ZXh0Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzAxYTI5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3RleHQvY3VzdG9tSW5wdXR0ZXh0Lmx6eApAQCAtMCwwICsxLDE1NiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9ImN1c3RvbUlucHV0dGV4dCIgZXh0ZW5kcz0iaW5wdXR0ZXh0Ij4KKwkgIAorCSA8IS0tIGxvc3Qgc2VsZWN0aW9uIHdvcmthcm91ZCAtLT4KKwkgPGF0dHJpYnV0ZSBuYW1lPSJzZWxQb3NpdGlvbiIgdHlwZT0iaW50ZWdlciIvPgorCSA8YXR0cmlidXRlIG5hbWU9InNlbFNpemUiIHR5cGU9ImludGVnZXIiLz4KKwkgPCEtLSB0aGlzIG1ldGhvZCBzaG91bGQgYmUgY2FsbGVkIGJlZm9yZSB0aGUgY29tcG9uZW50IGxvc3QgZm9jdXMgLS0+CisJIDxtZXRob2QgbmFtZT0ic2F2ZXNlbGVjdGlvbiI+CisJIAl0aGlzLnNlbFBvc2l0aW9uPWdldFNlbGVjdGlvblBvc2l0aW9uKCk7CisJIAl0aGlzLnNlbFNpemU9Z2V0U2VsZWN0aW9uU2l6ZSgpOworCSA8L21ldGhvZD4KKwkgIAorCSA8aGFuZGxlciBuYW1lPSJvbmZvY3VzIj4KKwkgCisJIAlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiY3VzdG9tSW5wdXR0ZXh0IG9uRm9jdXMgOiAiLCBjYW52YXMuaXNydGwpOworCSAJCQorCSAKKwkJIGlmKGNhbnZhcy5pc3J0bCA9PSAndHJ1ZScpeworCSAJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJjdXN0b21JbnB1dHRleHQgb25Gb2N1cyA6IFJUTCBpcyBzZXQiKTsKKwkgCQl0aGlzLnNldEF0dHJpYnV0ZSgndGV4dGFsaWduJywgJ3JpZ2h0Jyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZXsKKyAgICAgICAgCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJjdXN0b21JbnB1dHRleHQgb25Gb2N1cyA6IFJUTCBpcyBOT1Qgc2V0Iik7CisgICAgICAJCXRoaXMuc2V0QXR0cmlidXRlKCd0ZXh0YWxpZ24nLCAnbGVmdCcpOworICAgICAgICAKKyAgICAgICAgfQorCSA8L2hhbmRsZXI+CSAgCisJICAKKwkgPGhhbmRsZXIgbmFtZT0ib250ZXh0IiBhcmdzPSJ0eHQiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8KKyAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoU3lzdGVtLmNhcGFiaWxpdGllcy5vcy5pbmRleE9mKCdMaW51eCcpPT0tMSkgeyAKKyAgICAgICAgICAgICAgICByZXR1cm47IAorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJTeXN0ZW0uY2FwYWJpbGl0aWVzLm9zIC0tIFNUQVJUICIsU3lzdGVtLmNhcGFiaWxpdGllcy5vcyx0eHQpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAodHh0ID09IG51bGwgfHwgdHh0Lmxlbmd0aCA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vVVRGOCBjaGFyYWN0ZXIgcmVtYXBwaW5ncworICAgICAgICAgICAgdmFyIGNwMTI1MiA9IG5ldyBPYmplY3QoKTsKKyAgICAgICAgICAgIGNwMTI1MlsweDIwYWNdPTB4ODA7CisgICAgICAgICAgICBjcDEyNTJbMHgyMDFhXT0weDgyOworICAgICAgICAgICAgY3AxMjUyWzB4MDE5Ml09MHg4MzsKKyAgICAgICAgICAgIGNwMTI1MlsweDIwMWVdPTB4ODQ7CisgICAgICAgICAgICBjcDEyNTJbMHgyMDI2XT0weDg1OworICAgICAgICAgICAgY3AxMjUyWzB4MjAyMF09MHg4NjsKKyAgICAgICAgICAgIGNwMTI1MlsweDIwMjFdPTB4ODc7CisgICAgICAgICAgICBjcDEyNTJbMHgwMmM2XT0weDg4OworICAgICAgICAgICAgY3AxMjUyWzB4MjAzMF09MHg4OTsKKyAgICAgICAgICAgIGNwMTI1MlsweDAxNjBdPTB4OGE7CisgICAgICAgICAgICBjcDEyNTJbMHgyMDM5XT0weDhiOworICAgICAgICAgICAgY3AxMjUyWzB4MDE1Ml09MHg4YzsKKyAgICAgICAgICAgIGNwMTI1MlsweDAxN2RdPTB4OGU7CisgICAgICAgICAgICBjcDEyNTJbMHgyMDE4XT0weDkxOworICAgICAgICAgICAgY3AxMjUyWzB4MjAxOV09MHg5MjsKKyAgICAgICAgICAgIGNwMTI1MlsweDIwMWNdPTB4OTM7CisgICAgICAgICAgICBjcDEyNTJbMHgyMDFkXT0weDk0OworICAgICAgICAgICAgY3AxMjUyWzB4MjAyMl09MHg5NTsKKyAgICAgICAgICAgIGNwMTI1MlsweDIwMTNdPTB4OTY7CisgICAgICAgICAgICBjcDEyNTJbMHgyMDE0XT0weDk3OworICAgICAgICAgICAgY3AxMjUyWzB4MDJkY109MHg5ODsKKyAgICAgICAgICAgIGNwMTI1MlsweDIxMjJdPTB4OTk7CisgICAgICAgICAgICBjcDEyNTJbMHgwMTYxXT0weDlhOworICAgICAgICAgICAgY3AxMjUyWzB4MjAzYV09MHg5YjsKKyAgICAgICAgICAgIGNwMTI1MlsweDAxNTNdPTB4OWM7CisgICAgICAgICAgICBjcDEyNTJbMHgwMTdlXT0weDllOworICAgICAgICAgICAgY3AxMjUyWzB4MDE3OF09MHg5ZjsKKyAgICAgICAgCisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciBzPWV2YWwoU2VsZWN0aW9uLmdldEZvY3VzKCkpOyAKKyAgICAgICAgICAgIHZhciB0PXR4dDsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgaT1TZWxlY3Rpb24uZ2V0Q2FyZXRJbmRleCgpLTE7IAorICAgICAgICAgICAgCisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJpIixpLFNlbGVjdGlvbi5nZXRDYXJldEluZGV4KCkpOworICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgZD1pOworICAgICAgICAgICAgCisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJETyBXSElMRSAtMS0gIix0LmNoYXJDb2RlQXQoaSksY3AxMjUyW3QuY2hhckNvZGVBdChpKV0saSwweDgwLDB4QkYpOworICAgICAgICAgICAgCisgICAgICAgICAgICB3aGlsZSAoKCh0LmNoYXJDb2RlQXQoaSk+PTB4ODAgJiYgdC5jaGFyQ29kZUF0KGkpPD0weEJGKSB8fCAoY3AxMjUyW3QuY2hhckNvZGVBdChpKV0pKSAmJiBpPjApIHsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJETyBXSElMRSAtMi0gIix0LmNoYXJDb2RlQXQoaSksY3AxMjUyW3QuY2hhckNvZGVBdChpKV0saSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKGNwMTI1Mlt0LmNoYXJDb2RlQXQoaSldKSB7CisgICAgICAgICAgICAgICAgICAgIHQ9dC5zdWJzdHIoMCxpKStTdHJpbmcuZnJvbUNoYXJDb2RlKGNwMTI1Mlt0LmNoYXJDb2RlQXQoaSldKSt0LnN1YnN0cihpKzEpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpLS07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoaT09ZCkgeyAKKyAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJpID09IGQgTk9USElORyBUTyBSRVBMQUNFISIpOworICAgICAgICAgICAgICAgIHJldHVybjsgCisgICAgICAgICAgICB9CisgICAgICAgIAorICAgICAgICAgICAgdmFyIHU9MDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHQuY2hhckNvZGVBdChpKT49MHhDMiAmJiB0LmNoYXJDb2RlQXQoaSk8PTB4REYgJiYgZC1pPT0xKSB7CisgICAgICAgICAgICAgICAgIC8vIHR3by1ieXRlIHNlcXVlbmNlCisgICAgICAgICAgICAgICAgdT0gKHQuY2hhckNvZGVBdChpKzEpICYgMHgzRikgICAgICAgKworICAgICAgICAgICAgICAgICAgKCh0LmNoYXJDb2RlQXQoaSAgKSAmIDMgICApIDw8IDYpICsKKyAgICAgICAgICAgICAgICAgICgodC5jaGFyQ29kZUF0KGkgICkgJiAweDFDKSA8PCA2KTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodC5jaGFyQ29kZUF0KGkpPj0weEUwICYmIHQuY2hhckNvZGVBdChpKTw9MHhFRiAmJiBkLWk9PTIpIHsKKyAgICAgICAgICAgICAgICAvLyB0aHJlZS1ieXRlIHNlcXVlbmNlCisgICAgICAgICAgICAgICAgLy8gKEZsYXNoIFBsYXllciBkb2Vzbid0IGNvcGUgd2l0aCBhbnkgbW9yZSBvYnNjdXJlIFVuaWNvZGUpCisgICAgICAgICAgICAgICAgdT0gKHQuY2hhckNvZGVBdChpKzIpICYgMHgzRikgICAgICAgICsKKyAgICAgICAgICAgICAgICAgICgodC5jaGFyQ29kZUF0KGkrMSkgJiAzICAgKSA8PCA2ICkgKworICAgICAgICAgICAgICAgICAgKCh0LmNoYXJDb2RlQXQoaSsxKSAmIDB4M0MpIDw8IDYgKSArCisgICAgICAgICAgICAgICAgICAoKHQuY2hhckNvZGVBdChpICApICYgMHgwRikgPDwgMTIpOworICAgICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgICAgIGlmICh1IT0wKSB7CisgICAgICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiUmVwbGFjZSBTdHJpbmcgLTEtICIsdHh0LHUsIlJlcGxhY2UgV2l0aCAiLFN0cmluZy5mcm9tQ2hhckNvZGUodSkpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJ0ZXh0Iix0LnNsaWNlKDAsaSkrU3RyaW5nLmZyb21DaGFyQ29kZSh1KSt0LnNsaWNlKGQrMSkpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIlJlcGxhY2UgU3RyaW5nIC0yLSAiLHR4dCx1KTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgidGV4dCIsdGhpcy50ZXh0LnNwbGl0KFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMykpLmpvaW4oJycpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiLS0gRU5EICIsdGhpcy50ZXh0KTsKKyAgICAgICAgICAgIAorICAgICAgICBdXT4KKyAgICA8L2hhbmRsZXI+CisgIAkKKyAgICAKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy90ZXh0L2N1c3RvbXNjcm9sbEVkaXR0ZXh0Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy90ZXh0L2N1c3RvbXNjcm9sbEVkaXR0ZXh0Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MjZlOWFkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3RleHQvY3VzdG9tc2Nyb2xsRWRpdHRleHQubHp4CkBAIC0wLDAgKzEsNTUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisgICAKKzxpbmNsdWRlIGhyZWY9ImluY3ViYXRvci9zY3JvbGxlZGl0dGV4dC5sengiIC8+CisKKzxjbGFzcyBuYW1lPSJjdXN0b21TY3JvbGxFZGl0dGV4dCIgZXh0ZW5kcz0idmlldyIgPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0idGV4dCIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorCQorCTxldmVudCBuYW1lPSJvbnRleHRDaGFuZ2UiIC8+CisKKyAgICA8YXR0cmlidXRlIG5hbWU9ImxhYmVsaWQiIHR5cGU9Im51bWJlciIgc2V0dGVyPSJzZXRMYWJlbElkKGxhYmVsaWQpIiAvPgorICAgIDxtZXRob2QgbmFtZT0ic2V0TGFiZWxJZCIgYXJncz0iX2xhYmVsaWQiID4KKyAgICAgICAgdGhpcy5sYWJlbGlkID0gX2xhYmVsaWQ7CisgICAgICAgIHRoaXMuc2V0QXR0cmlidHVlKCd0ZXh0JyxjYW52YXMuZ2V0TGFiZWxOYW1lKHRoaXMubGFiZWxpZCkpOworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iZ2V0VGV4dCI+CisgICAgCXJldHVybiB0aGlzLl9jYnRleHQuZ2V0VGV4dCgpOworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDx2aWV3IG5hbWU9Il9mYWNlIiBiZ2NvbG9yPSIweEZGRkZGRkYiIAorICAgICAgICAgIHdpZHRoPSIkb25jZXtwYXJlbnQud2lkdGh9IiAKKyAgICAgICAgICBoZWlnaHQ9IiRvbmNle3BhcmVudC5oZWlnaHR9IiAvPgorICAgICAgICAgIAorICAgIDx2aWV3IG5hbWU9InZfYm9yZGVyIiBoZWlnaHQ9IjEiIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignc2Vjb25kQm9yZGVyQ29sb3InKSB9IiB3aWR0aD0iJG9uY2V7cGFyZW50LndpZHRofSIgLz4KKyAgICA8dmlldyBuYW1lPSJoX2JvcmRlciIgd2lkdGg9IjEiICB5PSIxIiBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ3NlY29uZEJvcmRlckNvbG9yJykgfSIgaGVpZ2h0PSIkb25jZXtwYXJlbnQuaGVpZ2h0IC0xfSIgLz4KKyAgICAgICAgICAKKyAgICA8c2Nyb2xsZWRpdHRleHQgbmFtZT0iX2NidGV4dCIgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGgtMSB9IiB4PSIxIiB5PSIxIiBiZ2NvbG9yPSIweEZGRkZGRiIgIHN0eWxlYWJsZT0iZmFsc2UiCisJCWhlaWdodD0iJG9uY2V7IHBhcmVudC5oZWlnaHQtMSB9IiB0ZXh0PSIkeyBwYXJlbnQudGV4dCB9IiB2c2Nyb2xsYmFyY2xhc3NuYW1lPSJvbV92c2Nyb2xsYmFyIgorCQltdWx0aWxpbmU9InRydWUiIGZvbnRzaXplPSIxMSIgLz4KKyAgICAKKyAgICAgCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvdGV4dC9sYWJlbFRleHQubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3RleHQvbGFiZWxUZXh0Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Mzg3MDc4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3RleHQvbGFiZWxUZXh0Lmx6eApAQCAtMCwwICsxLDU5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8Y2xhc3MgbmFtZT0ibGFiZWxUZXh0IiBleHRlbmRzPSJ0ZXh0IiByZXNpemU9InRydWUiIGZvbnRzaXplPSIxMSIgPgorCisJPGF0dHJpYnV0ZSBuYW1lPSJsYWJlbGlkIiB0eXBlPSJudW1iZXIiIHNldHRlcj0ic2V0TGFiZWxJZChsYWJlbGlkKSIgLz4KKwk8bWV0aG9kIG5hbWU9InNldExhYmVsSWQiIGFyZ3M9Il9sYWJlbGlkIiA+CisJCXRoaXMubGFiZWxpZCA9IF9sYWJlbGlkOworCQl0aGlzLnNldEF0dHJpYnV0ZSgndGV4dCcsY2FudmFzLmdldExhYmVsTmFtZSh0aGlzLmxhYmVsaWQpKTsKKwk8L21ldGhvZD4KKwkKKzwvY2xhc3M+CisKKworPGNsYXNzIG5hbWU9ImxhYmVsVGV4dFdpZHRoVG9vbHRpcCIgZXh0ZW5kcz0idGV4dCIgcmVzaXplPSJ0cnVlIiAKKwkgICBvbm1vdXNlb3Zlcj0iIiBvbm1vdXNlb3V0PSIiCisJICAgZm9udHNpemU9IjExIiA+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJsYWJlbExhYmVsaWQiIHR5cGU9Im51bWJlciIgdmFsdWU9Ii0xIiAvPgorCisJPGF0dHJpYnV0ZSBuYW1lPSJsYWJlbGlkIiB0eXBlPSJudW1iZXIiIHNldHRlcj0ic2V0TGFiZWxJZChsYWJlbGlkKSIgLz4KKwk8bWV0aG9kIG5hbWU9InNldExhYmVsSWQiIGFyZ3M9Il9sYWJlbGlkIiA+CisJCXRoaXMubGFiZWxpZCA9IF9sYWJlbGlkOworCQl0aGlzLnNldEF0dHJpYnV0ZSgndGV4dCcsY2FudmFzLmdldExhYmVsTmFtZSh0aGlzLmxhYmVsaWQpKTsKKwk8L21ldGhvZD4KKwkKKwk8bGFiZWxUb29sdGlwIG5hbWU9Il9sYWJlbFRvb2x0aXAiIGxhYmVsaWQ9IiRvbmNleyBwYXJlbnQubGFiZWxMYWJlbGlkIH0iIC8+CisJCis8L2NsYXNzPgorCis8Y2xhc3MgbmFtZT0ibGFiZWxkVGV4dExpc3RJdGVtIiBleHRlbmRzPSJ0ZXh0bGlzdGl0ZW0iPgorCTxhdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZCIgdHlwZT0ibnVtYmVyIiBzZXR0ZXI9InNldExhYmVsSWQobGFiZWxpZCkiIC8+CisgICAgPG1ldGhvZCBuYW1lPSJzZXRMYWJlbElkIiBhcmdzPSJfbGFiZWxpZCIgPgorICAgICAgICB0aGlzLmxhYmVsaWQgPSBfbGFiZWxpZDsKKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3RleHQnLGNhbnZhcy5nZXRMYWJlbE5hbWUodGhpcy5sYWJlbGlkKSk7CisgICAgPC9tZXRob2Q+CisgICAgPGxhYmVsVG9vbHRpcCBpbml0QnlEYXRhUGF0aHBhcmVudD0idHJ1ZSIgLz4KKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy90ZXh0L2xhYmVsVG9vbHRpcC5senggYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvdGV4dC9sYWJlbFRvb2x0aXAubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxNDM0MDcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvdGV4dC9sYWJlbFRvb2x0aXAubHp4CkBAIC0wLDAgKzEsMTQxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8Y2xhc3MgbmFtZT0ibGFiZWxUb29sdGlwIiBleHRlbmRzPSJ2aWV3IiB2aXNpYmxlPSJmYWxzZSIgPgorCisJPGF0dHJpYnV0ZSBuYW1lPSJpbml0dHdpY2UiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9Im11bHRpbGluZSIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iaXNtZW51YnV0dG9ubGFiZWwiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImluaXRCeURhdGFQYXRocGFyZW50IiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJob2xkZXIiIHZhbHVlPSJudWxsIiAvPgorICAgIAorICAgIDxldmVudCBuYW1lPSJzZXRDb250ZW50IiAvPgorICAgICAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3ZlciIgcmVmZXJlbmNlPSJ0aGlzLnBhcmVudCI+CisgICAgCTwhW0NEQVRBWworICAgICAgICAgICAgdGhpcy5zZXRDb250ZW50LnNlbmRFdmVudCgpOworCSAgICAJaWYgKHRoaXMuaXNtZW51YnV0dG9ubGFiZWwpeworCSAgICAJCXRoaXMucGFyZW50LnNldExhYmVsKCk7CisJICAgIAl9CisJICAgIAlpZiAodGhpcy5pbml0dHdpY2UpeworCSAgICAJCXRoaXMuc2V0QXR0cmlidXRlKCd0ZXh0JyxjYW52YXMuZ2V0TGFiZWxOYW1lKHRoaXMubGFiZWxpZCkpOworCSAgICAJfQorCSAgICAJaWYgKHRoaXMuaW5pdEJ5RGF0YVBhdGhwYXJlbnQpeworICAgICAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCd0ZXh0JyxwYXJlbnQudGV4dCk7CisgICAgICAgICAgICB9CisJICAgICAgICB2YXIgeFZhbCA9IGNhbnZhcy5nZXRNb3VzZSgneCcpOworCSAgICAgICAgdmFyIHlWYWwgPSBjYW52YXMuZ2V0TW91c2UoJ3knKTsKKwkJCS8vLy9EZWJ1Zy53cml0ZSgibXl0ZXh0OiAiLHRoaXMubXl0ZXh0KTsKKwkJCWlmICh0aGlzLm11bHRpbGluZSAmJiB0aGlzLnRleHQubGVuZ3RoIT0wKXsKKwkJCQl0aGlzLmhvbGRlciA9IG5ldyBsei54bWxDcm1Ub29sdGlwTXVsdGkoY2FudmFzLHt0ZXh0OnRoaXMudGV4dCxob2xkZXI6dGhpc30pOworCQkJfSBlbHNlIGlmICh0aGlzLnRleHQubGVuZ3RoIT0wKXsKKwkJCQl0aGlzLmhvbGRlciA9IG5ldyBsei54bWxDcm1Ub29sdGlwKGNhbnZhcyx7dGV4dDp0aGlzLnRleHQsaG9sZGVyOnRoaXN9KTsKKwkJCX0KKwkgICAgICAgIGlmICh4VmFsPGNhbnZhcy53aWR0aC8yKXsKKwkgICAgICAgICAgICB4VmFsICs9IDA7CisJICAgICAgICB9IGVsc2UgeworCSAgICAgICAgICAgIHhWYWwgLT0gdGhpcy5ob2xkZXIud2lkdGgtMTQ7CisJICAgICAgICB9CisJICAgICAgICBpZiAoeVZhbDxjYW52YXMuaGVpZ2h0LzIpeworCSAgICAgICAgICAgIHlWYWwgKz0gMjQ7CisJICAgICAgICB9IGVsc2UgeworCSAgICAgICAgICAgIHlWYWwgLT0gMjQ7CisJICAgICAgICB9CisJICAgICAgICBpZiAodGhpcy5ob2xkZXIhPW51bGwpICB7CisJICAgICAgICAgICB0aGlzLmhvbGRlci5zZXRBdHRyaWJ1dGUoJ3gnLHhWYWwpOworCSAgICAgICAgICAgdGhpcy5ob2xkZXIuc2V0QXR0cmlidXRlKCd5Jyx5VmFsKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhbnZhcy5yZWdpc3RlclRvb2xUaXAodGhpcyk7CisgICAgICAgIF1dPiAgICAgICAgCisgICAgPC9oYW5kbGVyPgorICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdXQiIHJlZmVyZW5jZT0idGhpcy5wYXJlbnQiPgorICAgICAgICB0aGlzLmNsZWFuSG9sZGVyKCk7CisgICAgPC9oYW5kbGVyPgorICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2V1cCIgcmVmZXJlbmNlPSJ0aGlzLnBhcmVudCI+CisgICAgICAgIHRoaXMuY2xlYW5Ib2xkZXIoKTsKKyAgICA8L2hhbmRsZXI+CisgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayIgcmVmZXJlbmNlPSJ0aGlzLnBhcmVudCI+CisgICAgICAgIHRoaXMuY2xlYW5Ib2xkZXIoKTsKKyAgICA8L2hhbmRsZXI+ICAgCisgICAgPG1ldGhvZCBuYW1lPSJjbGVhbkhvbGRlciI+CisgICAgICAgIGlmICh0aGlzLmhvbGRlciE9bnVsbCkgeworICAgICAgICAgICAgdGhpcy5ob2xkZXIuZGVzdHJveSgpOworICAgICAgICAgICAgdGhpcy5ob2xkZXIgPSBudWxsOyAKKyAgICAgICAgICAgIGNhbnZhcy5jbGVhclRvb2xUaXAoKTsKKyAgICAgICAgfQorICAgIDwvbWV0aG9kPiAKKyAgICA8YXR0cmlidXRlIG5hbWU9ImxhYmVsaWQiIHR5cGU9Im51bWJlciIgc2V0dGVyPSJzZXRMYWJlbElkKGxhYmVsaWQpIiAvPgorICAgIDxtZXRob2QgbmFtZT0ic2V0TGFiZWxJZCIgYXJncz0iX2xhYmVsaWQiID4KKyAgICAgICAgdGhpcy5sYWJlbGlkID0gX2xhYmVsaWQ7CisgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCd0ZXh0JyxjYW52YXMuZ2V0TGFiZWxOYW1lKHRoaXMubGFiZWxpZCkpOworICAgIDwvbWV0aG9kPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0idGV4dCIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorPC9jbGFzcz4KKworPGNsYXNzIG5hbWU9InhtbENybVRvb2x0aXAiIGV4dGVuZHM9InZpZXciIGJnY29sb3I9IjB4MDAwMDAwIiAKKyAgICB3aWR0aD0iJHsgdGhpcy5fdGV4dC53aWR0aCsyIH0iIGhlaWdodD0iJHsgdGhpcy5fdGV4dC5oZWlnaHQrMiB9IiA+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJ0ZXh0IiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJob2xkZXIiIHZhbHVlPSJudWxsIiAvPgorICAgIDx0ZXh0IHg9IjEiIHk9IjEiIHRleHQ9IiR7IHBhcmVudC50ZXh0IH0iIHJlc2l6ZT0idHJ1ZSIgCisgICAgICAgIGZvbnRzaXplPSIxMCIgbmFtZT0iX3RleHQiIGJnY29sb3I9IjB4RkZGRkZGIiAvPgorICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdXQiPgorICAgICAgICB0aGlzLmRlc3Ryb3koKTsKKyAgICA8L2hhbmRsZXI+CisgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAgICAgdGhpcy5zZXRTaGFkb3coKTsKKyAgICA8L2hhbmRsZXI+CisgICAgPG1ldGhvZCBuYW1lPSJzZXRTaGFkb3ciID4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgIGlmICh0aGlzLmlzaW5pdGVkKXsKKyAgICAgICAgICAgIHRoaXMubm9ybWFsTUMgPSB0aGlzLmdldERpc3BsYXlPYmplY3QoKTsKKyAgICAgICAgICAgCXRoaXMuZGlzcGxhY2VtZW50TWFwID0gbmV3IGZsYXNoLmZpbHRlcnMuRHJvcFNoYWRvd0ZpbHRlcigpOworICAgICAgICAgICAgdGhpcy5ub3JtYWxNQy5maWx0ZXJzID0gW3RoaXMuZGlzcGxhY2VtZW50TWFwXTsKKyAgICAgICAgfQorICAgICAgICBdXT4gICAgICAgICAgICAgIAorICAgIDwvbWV0aG9kPiAKKzwvY2xhc3M+CisKKzxjbGFzcyBuYW1lPSJ4bWxDcm1Ub29sdGlwTXVsdGkiIGV4dGVuZHM9InZpZXciIGJnY29sb3I9IjB4MDAwMDAwIiAKKyAgICB3aWR0aD0iJHsgdGhpcy5fdGV4dC53aWR0aCsyIH0iIGhlaWdodD0iJHsgdGhpcy5fdGV4dC5oZWlnaHQrMiB9IiA+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJ0ZXh0IiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJob2xkZXIiIHZhbHVlPSJudWxsIiAvPgorICAgIDx0ZXh0IHg9IjEiIHk9IjEiIHRleHQ9IiR7IHBhcmVudC50ZXh0IH0iIHJlc2l6ZT0idHJ1ZSIgCisgICAgICAgIGZvbnRzaXplPSIxMCIgbmFtZT0iX3RleHQiIGJnY29sb3I9IjB4RkZGRkZGIiBtdWx0aWxpbmU9InRydWUiIC8+CisgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAgICAgdGhpcy5zZXRTaGFkb3coKTsKKyAgICA8L2hhbmRsZXI+CisgICAgPG1ldGhvZCBuYW1lPSJzZXRTaGFkb3ciID4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgIGlmICh0aGlzLmlzaW5pdGVkKXsKKyAgICAgICAgICAgIHRoaXMubm9ybWFsTUMgPSB0aGlzLmdldERpc3BsYXlPYmplY3QoKTsKKyAgICAgICAgICAgCXRoaXMuZGlzcGxhY2VtZW50TWFwID0gbmV3IGZsYXNoLmZpbHRlcnMuRHJvcFNoYWRvd0ZpbHRlcigpOworICAgICAgICAgICAgdGhpcy5ub3JtYWxNQy5maWx0ZXJzID0gW3RoaXMuZGlzcGxhY2VtZW50TWFwXTsKKyAgICAgICAgfQorICAgICAgICBdXT4gICAgICAgICAgICAgIAorICAgIDwvbWV0aG9kPgkgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZW91dCI+CisgICAgICAgIHRoaXMuZGVzdHJveSgpOworICAgIDwvaGFuZGxlcj4KKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy90ZXh0L2xpYnJhcnkubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3RleHQvbGlicmFyeS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmFjYmRhYgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy90ZXh0L2xpYnJhcnkubHp4CkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisJCisJPGluY2x1ZGUgaHJlZj0iYm9yZGVyZWRJbnB1dHRleHQubHp4IiAvPgorCTxpbmNsdWRlIGhyZWY9ImxhYmVsVGV4dC5sengiIC8+CisJPGluY2x1ZGUgaHJlZj0ibGFiZWxUb29sdGlwLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJjdXN0b21FZGl0dGV4dC5sengiIC8+CisgICAgPGluY2x1ZGUgaHJlZj0iY3VzdG9tc2Nyb2xsRWRpdHRleHQubHp4IiAvPgorICAgIDxpbmNsdWRlIGhyZWY9ImN1c3RvbUlucHV0dGV4dC5sengiIC8+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy90dXJub3Zlcmxpc3QvYmFzZUNvbnRlbnRMaXN0SXRlbS5senggYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvdHVybm92ZXJsaXN0L2Jhc2VDb250ZW50TGlzdEl0ZW0ubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5OWJlZDMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvdHVybm92ZXJsaXN0L2Jhc2VDb250ZW50TGlzdEl0ZW0ubHp4CkBAIC0wLDAgKzEsNzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzwhLS0tIGJhc2UgY2xhc3MgZm9yIHRoZSBpdGVtIGxpc3Qgdmlld3MtLT4KKzxjbGFzcyBuYW1lPSJiYXNlQ29udGVudExpc3RJdGVtIiBleHRlbmRzPSJ2aWV3IiAKKwkgICBsYXlvdXQ9ImF4aXM6eDtzcGFjaW5nOjAiIGJnY29sb3I9IjB4RkZGRkZGIiA+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJpc3NlbGVjdGVkIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iLz4KKwkKKwk8bWV0aG9kIG5hbWU9InNlbGVjdCI+CisJCXRoaXMuaXNzZWxlY3RlZCA9IHRydWU7CisJCXRoaXMuc2V0QXR0cmlidXRlKCdiZ2NvbG9yJyxjYW52YXMuZ2V0VGhlbWVDb2xvcignYmFzZU1vdXNlT3ZlcmNvbG9yaXplcicpKTsKKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9ImRlc2VsZWN0Ij4KKwkJdGhpcy5pc3NlbGVjdGVkID0gZmFsc2U7CisJCXRoaXMuc2V0QXR0cmlidXRlKCdiZ2NvbG9yJywweEZGRkZGRik7CisJPC9tZXRob2Q+CisJCisJPG1ldGhvZCBuYW1lPSJkb0Rlc2VsZWN0Ij4KKwkJdGhpcy5kZXNlbGVjdCgpOworCTwvbWV0aG9kPgorCQorCTxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdmVyIj4KKwkJaWYgKCF0aGlzLmlzc2VsZWN0ZWQpIHsKKwkJCXRoaXMuc2V0QXR0cmlidXRlKCdiZ2NvbG9yJyxjYW52YXMuZ2V0VGhlbWVDb2xvcignYmFzZU1vdXNlT3ZlcmNvbG9yaXplcicpKTsKKwkJfQorCTwvaGFuZGxlcj4KKwkKKwk8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3V0Ij4KKwkJaWYgKCF0aGlzLmlzc2VsZWN0ZWQpIHsKKwkJCXRoaXMuc2V0QXR0cmlidXRlKCdiZ2NvbG9yJywweEZGRkZGRik7CisJCX0gZWxzZSB7CisJCQl0aGlzLnNldEF0dHJpYnV0ZSgnYmdjb2xvcicsY2FudmFzLmdldFRoZW1lQ29sb3IoJ2Jhc2VNb3VzZU92ZXJjb2xvcml6ZXInKSk7CisJCX0KKwk8L2hhbmRsZXI+CisJCisJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJiYXNlQ29udGVudExpc3RJdGVtIC0tIG9uY2xpY2siKTsKKwkJdGhpcy5wYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQub25jbGlja2VkSXRlbS5zZW5kRXZlbnQodGhpcyk7CisJPC9oYW5kbGVyPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9uZGJsY2xpY2siPgorCQl0aGlzLnBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5vbmRibGNsaWNrZWRJdGVtLnNlbmRFdmVudCh0aGlzKTsKKwk8L2hhbmRsZXI+CisJCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJvYmoiIHZhbHVlPSJudWxsIiAvPgorCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvdHVybm92ZXJsaXN0L2xpYnJhcnkubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3R1cm5vdmVybGlzdC9saWJyYXJ5Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMmFiYjg2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3R1cm5vdmVybGlzdC9saWJyYXJ5Lmx6eApAQCAtMCwwICsxLDM4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorICAgIAorICAgIDwhLS0gQVBMIEF1dGhvciBzZWJhd2FnbmVyIC0tPgorICAgIDxyZXNvdXJjZSBuYW1lPSJ3aWR0aF9ncmlwcGVyX3JzYyIgc3JjPSJyZXNvdXJjZXMvd2lkdGhfY2hhbmdlX2N1cnNvci5zd2YiIC8+CisKKwk8IS0tIEFQTCBBdXRob3Igc2ViYXdhZ25lciAtLT4KKwk8cmVzb3VyY2UgbmFtZT0ic29ydF9hc2NfdHVybm92ZXJfcnNjIiBzcmM9InJlc291cmNlcy9zb3J0X2FzYy5wbmciIC8+CisJCisJPCEtLSBBUEwgQXV0aG9yIHNlYmF3YWduZXIgLS0+CisJPHJlc291cmNlIG5hbWU9InNvcnRfZGVzY190dXJub3Zlcl9yc2MiIHNyYz0icmVzb3VyY2VzL3NvcnRfZGVzYy5wbmciIC8+CisJICAgIAorCTxpbmNsdWRlIGhyZWY9InR1cm5PdmVyTGlzdC5sengiIC8+CisgICAgPGluY2x1ZGUgaHJlZj0ic2ltcGxlVHVybk92ZXJMaXN0Lmx6eCIgLz4KKwk8aW5jbHVkZSBocmVmPSJ0dXJuT3Zlckxpc3RIZWFkZXJJdGVtLmx6eCIgLz4KKwk8aW5jbHVkZSBocmVmPSJ0dXJuT3ZlclRleHRJdGVtLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJiYXNlQ29udGVudExpc3RJdGVtLmx6eCIgLz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3R1cm5vdmVybGlzdC9yZXNvdXJjZXMvc29ydF9hc2MucG5nIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3R1cm5vdmVybGlzdC9yZXNvdXJjZXMvc29ydF9hc2MucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1YzljOGIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvdHVybm92ZXJsaXN0L3Jlc291cmNlcy9zb3J0X2FzYy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3R1cm5vdmVybGlzdC9yZXNvdXJjZXMvc29ydF9kZXNjLnBuZyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy90dXJub3Zlcmxpc3QvcmVzb3VyY2VzL3NvcnRfZGVzYy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWNkYjIwMAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy90dXJub3Zlcmxpc3QvcmVzb3VyY2VzL3NvcnRfZGVzYy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3R1cm5vdmVybGlzdC9yZXNvdXJjZXMvd2lkdGhfY2hhbmdlX2N1cnNvci5mbGEgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvdHVybm92ZXJsaXN0L3Jlc291cmNlcy93aWR0aF9jaGFuZ2VfY3Vyc29yLmZsYQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjA1ZWZiCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3R1cm5vdmVybGlzdC9yZXNvdXJjZXMvd2lkdGhfY2hhbmdlX2N1cnNvci5mbGEKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3R1cm5vdmVybGlzdC9yZXNvdXJjZXMvd2lkdGhfY2hhbmdlX2N1cnNvci5zd2YgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvdHVybm92ZXJsaXN0L3Jlc291cmNlcy93aWR0aF9jaGFuZ2VfY3Vyc29yLnN3ZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWUwZjAwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3R1cm5vdmVybGlzdC9yZXNvdXJjZXMvd2lkdGhfY2hhbmdlX2N1cnNvci5zd2YKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3R1cm5vdmVybGlzdC9zaW1wbGVUdXJuT3Zlckxpc3QubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3R1cm5vdmVybGlzdC9zaW1wbGVUdXJuT3Zlckxpc3QubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkMDIxZmUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvdHVybm92ZXJsaXN0L3NpbXBsZVR1cm5PdmVyTGlzdC5sengKQEAgLTAsMCArMSwxMDIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisJCis8IS0tLSBjb21tb24gc2ltcGxlVHVybk92ZXJMaXN0IHZpZXcgY2xhc3MuIC0tPgorPGNsYXNzIG5hbWU9InNpbXBsZVR1cm5PdmVyTGlzdCIgZXh0ZW5kcz0idmlldyI+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJfc2VsZWN0ZWQiIHZhbHVlPSJudWxsIi8+CisgICAgCisgICAgPGV2ZW50IG5hbWU9Im9uZGJsY2xpY2tlZEl0ZW0iIC8+CisKKyAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrZWRJdGVtIiBhcmdzPSJpdGVtT2JqIj4KKyAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkICE9IG51bGwpIHsKKyAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkLmRlc2VsZWN0KCk7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5fc2VsZWN0ZWQgPSBpdGVtT2JqOworICAgICAgICB0aGlzLl9zZWxlY3RlZC5zZWxlY3QoKTsKKyAgICA8L2hhbmRsZXI+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJtYWluQmdDb2xvciIgdmFsdWU9IjB4RUVGMEVCIiAvPgorICAgIAorCTxtZXRob2QgbmFtZT0iYWRkSGVhZGVySXRlbSIgYXJncz0ibGFiZWxpZCx3aWR0aCIgPgorCQluZXcgbHoudHVybk92ZXJMaXN0SGVhZGVySXRlbSh0aGlzLl9pbm5lcmxpc3RoZWFkLl9pbm4se2xhYmVsaWQ6bGFiZWxpZCx3aWR0aDp3aWR0aCxzdWJ2aWV3c2lkOnRoaXMuX2lubmVybGlzdGhlYWQuX2lubi5zdWJ2aWV3cy5sZW5ndGh9KTsKKwk8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InNlbmRJbml0aWFsV2lkdGhVcGRhdGUiPgorICAgICAgICBmb3IgKHZhciBlZyBpbiB0aGlzLl9pbm5lcmxpc3RoZWFkLl9pbm4uc3Vidmlld3MpIHsKKyAgICAgICAgICAgIHRoaXMuX2lubmVybGlzdGhlYWQuX2lubi5zdWJ2aWV3c1tlZ10ub253aWR0aC5zZW5kRXZlbnQodGhpcy5faW5uZXJsaXN0aGVhZC5faW5uLnN1YnZpZXdzW2VnXS53aWR0aCk7CisgICAgICAgIH0KKyAgICA8L21ldGhvZD4gCisJCisJPG1ldGhvZCBuYW1lPSJzZW5kV2lkdGhVcGRhdGUiIGFyZ3M9Incsc3Vidmlld3NpZCIgPgorCQk8IVtDREFUQVsKKwkJLy8vL0RlYnVnLndyaXRlKHcsc3Vidmlld3NpZCx0aGlzLl9pbm5lcmxpc3QuX2lubik7CisJCWZvciAodmFyIGk9MDtpPHRoaXMuX2lubmVybGlzdC5faW5uLl9pbm4uc3Vidmlld3MubGVuZ3RoO2krKyl7CisJCQl0aGlzLl9pbm5lcmxpc3QuX2lubi5faW5uLnN1YnZpZXdzW2ldLnN1YnZpZXdzW3N1YnZpZXdzaWRdLnNldEF0dHJpYnV0ZSgnd2lkdGgnLHcpOworCQl9CisJCV1dPgorCTwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iaW5pdFZhbHVlcyIgYXJncz0ibnVtYmVyT2ZSZWNvcmRzIj4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICB0aGlzLl9yZWNvcmRzLnNldEF0dHJpYnV0ZSgndGV4dCcsbnVtYmVyT2ZSZWNvcmRzICsgJyAnICsgY2FudmFzLmdldExhYmVsTmFtZSgyNzIpICk7CisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0iY2xlYXJMaXN0Ij4KKyAgICAgICAgdGhpcy5fc2VsZWN0ZWQgPSBudWxsOworCQl0aGlzLl9pbm5lcmxpc3QuX2lubi5faW5uLmRlc3Ryb3koKTsKKwkJbmV3IGx6LmlubmVyTGlzdCh0aGlzLl9pbm5lcmxpc3QuX2lubix7bmFtZTonX2lubid9KTsKKwk8L21ldGhvZD4KKyAgICAKKyAgICA8IS0tID09PT09PT09PSAgQmdBcmVhIGFyZWEgID09PT09PT09PS0tPgorICAgIDx2aWV3IHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoIH0iIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignbWFpbkJvcmRlckNvbG9yJykgfSIKKyAgICAgICAgICBoZWlnaHQ9IiRvbmNleyBwYXJlbnQuaGVpZ2h0LTIwIH0iIHg9IjAiIHk9IjIwIj4KKyAgICAgICAgPHZpZXcgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGgtMiB9IiBiZ2NvbG9yPSIkb25jZXsgcGFyZW50LnBhcmVudC5tYWluQmdDb2xvciB9IgorICAgICAgICAgIGhlaWdodD0iJG9uY2V7IHBhcmVudC5oZWlnaHQtMiB9IiB4PSIxIiB5PSIxIj48L3ZpZXc+CisgICAgPC92aWV3PgorICAgIAorCTwhLS0gPT09PT09PT09ICBDb250cm9sIGFyZWEgID09PT09PT09PS0tPgorCisgICAgPGxhYmVsVGV4dCBuYW1lPSJfcmVjb3JkcyIgeD0iMiIgcmVzaXplPSJ0cnVlIiAvPgorICAgIAorICAgIAorCTwhLS0gPT09PT09PT09ICBMaXN0IEhlYWRlciBhcmVhICA9PT09PT09PT0tLT4KKworCTx2aWV3IG5hbWU9Il9pbm5lcmxpc3RoZWFkIiBoZWlnaHQ9IjIwIiB4PSIxIiB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aC0yIH0iCisgICAgICAgICB5PSIyMiIgY2xpcD0idHJ1ZSI+CisgICAgICAgIDx2aWV3IG5hbWU9Il9pbm4iIHg9IiR7IHBhcmVudC5wYXJlbnQuX2lubmVybGlzdC5faW5uLnggfSIgbGF5b3V0PSJheGlzOng7c3BhY2luZzowIiAvPgorICAgIDwvdmlldz4gCisJCisJPCEtLSA9PT09PT09PT0gIExpc3QgQ29udGVudHMgYXJlYSAgPT09PT09PT09LS0+CisJPHZpZXcgbmFtZT0iX2lubmVybGlzdCIgaGVpZ2h0PSIkb25jZXsgcGFyZW50LmhlaWdodC00MyB9IiB4PSIxIiB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aC0yIH0iCisJCXk9IjQyIiBjbGlwPSJ0cnVlIiBiZ2NvbG9yPSIkb25jZXsgcGFyZW50Lm1haW5CZ0NvbG9yIH0iPgorCQk8dmlldyBuYW1lPSJfaW5uIiA+CisJCQk8aW5uZXJMaXN0IG5hbWU9Il9pbm4iIC8+CisJCTwvdmlldz4KKwkJPG9tX3ZzY3JvbGxiYXIgLz4KKwkJPG9tX2hzY3JvbGxiYXIgLz4KKwk8L3ZpZXc+CisKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy90dXJub3Zlcmxpc3QvdHVybk92ZXJMaXN0Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy90dXJub3Zlcmxpc3QvdHVybk92ZXJMaXN0Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MjFiMjBmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3R1cm5vdmVybGlzdC90dXJuT3Zlckxpc3QubHp4CkBAIC0wLDAgKzEsMjgzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8IS0tLSBwcml2YXRlIGNsYXNzIGZvciB0dXJuT3Zlckxpc3Qgb25seS4gLS0+Cis8Y2xhc3MgbmFtZT0iaW5uZXJMaXN0IiBsYXlvdXQ9ImF4aXM6eTtzcGFjaW5nOjEiIC8+CisJCis8IS0tLSBjb21tb24gVHVybk92ZXJMaXN0IHZpZXcgY2xhc3MuIC0tPgorPGNsYXNzIG5hbWU9InR1cm5PdmVyTGlzdCIgZXh0ZW5kcz0idmlldyIgPgorCisJPGF0dHJpYnV0ZSBuYW1lPSJzdGFydCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKwk8YXR0cmlidXRlIG5hbWU9InN0ZXAiIHZhbHVlPSIxMDAiIHR5cGU9Im51bWJlciIgLz4KKwk8YXR0cmlidXRlIG5hbWU9Im9yZGVyYnkiIHZhbHVlPSJmaXJzdG5hbWUiIHR5cGU9InN0cmluZyIgLz4KKwk8YXR0cmlidXRlIG5hbWU9ImFzYyIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJyZWNvcmRzIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0iX3NlbGVjdGVkIiB2YWx1ZT0ibnVsbCIvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudFNlbGVjdGVkT3JkZXIiIHZhbHVlPSJudWxsIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibWFpbkJnQ29sb3IiIHZhbHVlPSIweEVFRjBFQiIgLz4KKwkKKwk8ZXZlbnQgbmFtZT0ib25jYWxsbmV4dCIgLz4KKwk8ZXZlbnQgbmFtZT0ib25jYWxscHJlIiAvPgorCTxldmVudCBuYW1lPSJvbmRibGNsaWNrZWRJdGVtIiAvPgorICAgIDxldmVudCBuYW1lPSJvblVwZGF0ZU9yZGVyIiAvPgorCQorCTxtZXRob2QgbmFtZT0iY2FsbGZpcnN0Ij4KKwkJdGhpcy5zdGFydCA9IDA7CisJCXRoaXMub25jYWxsbmV4dC5zZW5kRXZlbnQoKTsKKwk8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImNsZWFyU2VsZWN0aW9uIj4KKyAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkICE9IG51bGwpIHsKKyAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkLmRlc2VsZWN0KCk7CisgICAgICAgIH0KKyAgICA8L21ldGhvZD4KKwkKKwk8aGFuZGxlciBuYW1lPSJvbmNsaWNrZWRJdGVtIiBhcmdzPSJpdGVtT2JqIj4KKwkJaWYgKHRoaXMuX3NlbGVjdGVkICE9IG51bGwpIHsKKwkJCXRoaXMuX3NlbGVjdGVkLmRlc2VsZWN0KCk7CisJCX0KKwkJdGhpcy5fc2VsZWN0ZWQgPSBpdGVtT2JqOworCQl0aGlzLl9zZWxlY3RlZC5zZWxlY3QoKTsKKwk8L2hhbmRsZXI+CisJCisJPG1ldGhvZCBuYW1lPSJjYWxsbGFzdCI+CisJCXZhciBuZXdNYXhQYWdlcyA9IE1hdGguZmxvb3IodGhpcy5yZWNvcmRzL3RoaXMuc3RlcCk7CisgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJjYWxsbGFzdCAxICIsbmV3TWF4UGFnZXMpOworICAgICAgICB0aGlzLnN0YXJ0ID0gbmV3TWF4UGFnZXMqdGhpcy5zdGVwOworICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiY2FsbGxhc3QgMiAiLHRoaXMuc3RhcnQpOworICAgICAgICBpZiAodGhpcy5zdGFydCA9PSB0aGlzLnJlY29yZHMpIHsKKyAgICAgICAgICAgIHRoaXMuc3RhcnQgPSB0aGlzLnJlY29yZHMtdGhpcy5zdGVwOworICAgICAgICB9CisgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJjYWxsbGFzdCAzICIsdGhpcy5zdGFydCk7CisgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJjYWxsbGFzdCA0ICIsdGhpcy5yZWNvcmRzKTsKKyAgICAgICAgdGhpcy5vbmNhbGxuZXh0LnNlbmRFdmVudCgpOworICAgICAgICB0aGlzLm9ubG9hZC5zZW5kRXZlbnQoKTsKKyAgICAgICAgCisJCS8vdGhpcy5zdGFydCA9IHRoaXMucmVjb3Jkcy10aGlzLnN0ZXA7CisJCS8vdGhpcy5vbmNhbGxuZXh0LnNlbmRFdmVudCgpOworCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0iY2FsbG5leHQiPgorCQl0aGlzLl9uZXh0MS5zZXRBdHRyaWJ1dGUoJ2VuYWJsZWQnLGZhbHNlKTsKKwkJdGhpcy5fcHJlMi5zZXRBdHRyaWJ1dGUoJ2VuYWJsZWQnLGZhbHNlKTsKKwkJaWYgKHRoaXMucmVjb3Jkcz4odGhpcy5zdGFydCt0aGlzLnN0ZXApKXsKKwkJCXRoaXMuc3RhcnQrPXRoaXMuc3RlcDsKKwkJfQorCQl0aGlzLm9uY2FsbG5leHQuc2VuZEV2ZW50KCk7CisJPC9tZXRob2Q+CisJCisJPG1ldGhvZCBuYW1lPSJjYWxscHJlIj4KKwkJdGhpcy5fbmV4dDEuc2V0QXR0cmlidXRlKCdlbmFibGVkJyxmYWxzZSk7CisJCXRoaXMuX3ByZTIuc2V0QXR0cmlidXRlKCdlbmFibGVkJyxmYWxzZSk7CisJCWlmICh0aGlzLnN0YXJ0PjApeworCQkJdGhpcy5zdGFydC09dGhpcy5zdGVwOworCQl9CisJCXRoaXMub25jYWxscHJlLnNlbmRFdmVudCgpOworCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0iaW5pdFZhbHVlcyIgYXJncz0icmVjIj4KKwkJPCFbQ0RBVEFbCisgICAgICAgICAgICB0aGlzLnJlY29yZHMgPSByZWM7CisgICAgICAgICAgICBpZiAodGhpcy5yZWNvcmRzPih0aGlzLnN0YXJ0K3RoaXMuc3RlcCkpeworICAgICAgICAgICAgICAgIHRoaXMuX25leHQxLnNldEF0dHJpYnV0ZSgnZW5hYmxlZCcsdHJ1ZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRoaXMuX25leHQxLnNldEF0dHJpYnV0ZSgnZW5hYmxlZCcsZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHRoaXMuc3RhcnQ+MCl7CisgICAgICAgICAgICAgICAgdGhpcy5fcHJlMi5zZXRBdHRyaWJ1dGUoJ2VuYWJsZWQnLHRydWUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9wcmUyLnNldEF0dHJpYnV0ZSgnZW5hYmxlZCcsZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGhpcy5fcmVjb3Jkcy5zZXRBdHRyaWJ1dGUoJ3RleHQnLHRoaXMuc3RhcnQgKyAnIC0gJyArKHRoaXMuc3RhcnQrdGhpcy5zdGVwKSArICcgJyArIGNhbnZhcy5nZXRMYWJlbE5hbWUoMjcyKSArICcgJyArIHRoaXMucmVjb3Jkcyk7CisJCV1dPgorCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0iYWRkSGVhZGVySXRlbSIgYXJncz0ibGFiZWxpZCx3aWR0aCIgPgorCQluZXcgbHoudHVybk92ZXJMaXN0SGVhZGVySXRlbSh0aGlzLl9pbm5lcmxpc3RoZWFkLl9pbm4se2xhYmVsaWQ6bGFiZWxpZCx3aWR0aDp3aWR0aCxzdWJ2aWV3c2lkOnRoaXMuX2lubmVybGlzdGhlYWQuX2lubi5zdWJ2aWV3cy5sZW5ndGh9KTsKKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9ImFkZEhlYWRlckl0ZW1PcmRlcmVkIiBhcmdzPSJsYWJlbGlkLHdpZHRoLG9yZGVyQnksYXNjLGlzU2VsZWN0ZWQiID4KKyAgICAgICAgbmV3IGx6LnR1cm5PdmVyTGlzdEhlYWRlckl0ZW1PcmRlcmVkKHRoaXMuX2lubmVybGlzdGhlYWQuX2lubix7CisgICAgICAgICAgICAgICAgbGFiZWxpZDpsYWJlbGlkLHdpZHRoOndpZHRoLAorICAgICAgICAgICAgICAgIG9yZGVyQnk6b3JkZXJCeSxhc2M6YXNjLGlzU2VsZWN0ZWQ6aXNTZWxlY3RlZCwKKyAgICAgICAgICAgICAgICBzdWJ2aWV3c2lkOnRoaXMuX2lubmVybGlzdGhlYWQuX2lubi5zdWJ2aWV3cy5sZW5ndGgKKyAgICAgICAgICAgIH0pOworICAgIDwvbWV0aG9kPiAKKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InVwZGF0ZU9yZGVyIiBhcmdzPSJpdGVtUmVmIj4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAvL29ubHkgZG8gdGhhdCBpZiB0aGUgcHJldmlvdXMgb3JkZXJCeSAhPSBuZXcgb3JkZXJieQorICAgICAgICAgICAgLy9pZiAodGhpcy5jdXJyZW50U2VsZWN0ZWRPcmRlciA9PSBudWxsIHx8IAorICAgICAgICAgICAgLy8gICAgICAgIHRoaXMuY3VycmVudFNlbGVjdGVkT3JkZXIub3JkZXJCeSAhPSBpdGVtUmVmLm9yZGVyQnkpeworICAgICAgICAgICAgaWYgKGl0ZW1SZWYuaXNTZWxlY3RlZCkgeworICAgICAgICAgICAgICAgIGl0ZW1SZWYuYXNjID0gIWl0ZW1SZWYuYXNjOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpdGVtUmVmLmlzU2VsZWN0ZWQgPSB0cnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKGl0ZW1SZWYuYXNjKSB7CisgICAgICAgICAgICAgICAgaXRlbVJlZi5fc29ydFVwLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ2hpZGRlbicpOworICAgICAgICAgICAgICAgIGl0ZW1SZWYuX3NvcnREb3duLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ3Zpc2libGUnKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaXRlbVJlZi5fc29ydFVwLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ3Zpc2libGUnKTsKKyAgICAgICAgICAgICAgICBpdGVtUmVmLl9zb3J0RG93bi5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCdoaWRkZW4nKTsgCisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vZG8gbm90IHBlcmZvcm0gc2VhcmNoIG9uIGluaXRpYWwgU2VsZWN0aW9uCisgICAgICAgICAgICB2YXIgaXNJbml0U2VsZWN0ID0gZmFsc2U7CisgICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50U2VsZWN0ZWRPcmRlciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudFNlbGVjdGVkT3JkZXIub3JkZXJCeSAhPSBpdGVtUmVmLm9yZGVyQnkpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50U2VsZWN0ZWRPcmRlci5pc1NlbGVjdGVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFNlbGVjdGVkT3JkZXIuX3NvcnRVcC5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCdoaWRkZW4nKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50U2VsZWN0ZWRPcmRlci5fc29ydERvd24uc2V0QXR0cmlidXRlKCd2aXNpYmlsaXR5JywnaGlkZGVuJyk7IAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaXNJbml0U2VsZWN0ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRoaXMuY3VycmVudFNlbGVjdGVkT3JkZXIgPSBpdGVtUmVmOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidXBkYXRlT3JkZXI6ICIsaXRlbVJlZixpdGVtUmVmLm9yZGVyQnksaXRlbVJlZi5hc2MsaXNJbml0U2VsZWN0KTsKKyAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdvcmRlcmJ5JyxpdGVtUmVmLm9yZGVyQnkpOworICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2FzYycsaXRlbVJlZi5hc2MpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIWlzSW5pdFNlbGVjdCl7CisgICAgICAgICAgICAgICAgdGhpcy5vblVwZGF0ZU9yZGVyLnNlbmRFdmVudChpdGVtUmVmKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8vfQorICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InNlbmRJbml0aWFsV2lkdGhVcGRhdGUiPgorICAgICAgICBmb3IgKHZhciBlZyBpbiB0aGlzLl9pbm5lcmxpc3RoZWFkLl9pbm4uc3Vidmlld3MpIHsKKyAgICAgICAgICAgIHRoaXMuX2lubmVybGlzdGhlYWQuX2lubi5zdWJ2aWV3c1tlZ10ub253aWR0aC5zZW5kRXZlbnQodGhpcy5faW5uZXJsaXN0aGVhZC5faW5uLnN1YnZpZXdzW2VnXS53aWR0aCk7CisgICAgICAgIH0KKyAgICA8L21ldGhvZD4gCisJCisJPG1ldGhvZCBuYW1lPSJzZW5kV2lkdGhVcGRhdGUiIGFyZ3M9Incsc3Vidmlld3NpZCIgPgorCQk8IVtDREFUQVsKKwkJLy8vL0RlYnVnLndyaXRlKHcsc3Vidmlld3NpZCx0aGlzLl9pbm5lcmxpc3QuX2lubik7CisJCWZvciAodmFyIGk9MDtpPHRoaXMuX2lubmVybGlzdC5faW5uLl9pbm4uc3Vidmlld3MubGVuZ3RoO2krKyl7CisJCQl0aGlzLl9pbm5lcmxpc3QuX2lubi5faW5uLnN1YnZpZXdzW2ldLnN1YnZpZXdzW3N1YnZpZXdzaWRdLnNldEF0dHJpYnV0ZSgnd2lkdGgnLHcpOworCQl9CisJCV1dPgorCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0iY2xlYXJMaXN0Ij4KKwkJdGhpcy5fc2VsZWN0ZWQgPSBudWxsOworCQl0aGlzLl9pbm5lcmxpc3QuX2lubi5faW5uLmRlc3Ryb3koKTsKKwkJbmV3IGx6LmlubmVyTGlzdCh0aGlzLl9pbm5lcmxpc3QuX2lubix7bmFtZTonX2lubid9KTsKKwk8L21ldGhvZD4KKyAgICAKKworCisJPCEtLSA9PT09PT09PT0gIENvbnRyb2wgYXJlYSAgPT09PT09PT09LS0+CisKKyAgICA8bGFiZWxUZXh0IG5hbWU9Il9yZWNvcmRzIiB4PSIyIiByZXNpemU9InRydWUiIC8+CisgICAgCisgICAgPCEtLSAzNjg6Z290byBmaXJzdCAtLT4KKyAgICA8Ymx1ZUJ1dHRvbiBuYW1lPSJfcHJlMSIgeT0iMCIgeD0iJG9uY2V7IHBhcmVudC53aWR0aC0xODggfSIgcmVzb3VyY2VJdGVtPSJzdGVwX2JhY2tfdHdvX2Fycm93IiAKKwkJCQkJeF9pbnNldFJlc291cmNlPSIyIiB5X2luc2V0UmVzb3VyY2U9IjIiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIKKwkJCQkJd2lkdGhfaW5zZXRSZXNvdXJjZT0iMTYiIGhlaWdodF9pbnNldFJlc291cmNlPSIxNiIgPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgIHBhcmVudC5jYWxsZmlyc3QoKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IjM2OCIgLz4KKyAgICA8L2JsdWVCdXR0b24+CisKKyAgICA8IS0tIDM2OTpnb3RvIHByZXZpb3VzIC0tPgorICAgIDxibHVlQnV0dG9uIG5hbWU9Il9wcmUyIiB5PSIwIiB4PSIkb25jZXsgcGFyZW50LndpZHRoLTE2NiB9IiByZXNvdXJjZUl0ZW09InN0ZXBfYmFja19hcnJvdyIgCisJCQkJCXhfaW5zZXRSZXNvdXJjZT0iMiIgeV9pbnNldFJlc291cmNlPSIyIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiCisJCQkJCXdpZHRoX2luc2V0UmVzb3VyY2U9IjE2IiBoZWlnaHRfaW5zZXRSZXNvdXJjZT0iMTYiPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgIHBhcmVudC5jYWxscHJlKCk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSIzNjkiIC8+CisgICAgPC9ibHVlQnV0dG9uPgorCisgICAgPCEtLSBjb21ib2JveCB0byBkZWNpZGUgdGhlIHN0ZXAgbnVtYmVyIC0tPgorICAgIDxyZXNldENvbWJvYm94IG5hbWU9Imxhbmd1YWdlcyIgd2lkdGg9Ijk2IiB4PSIkb25jZXsgcGFyZW50LndpZHRoLTE0NCB9IiAKKwkJCSAgZWRpdGFibGU9ImZhbHNlIiBoZWlnaHQ9IjIwIiA+CisJCTxhdHRyaWJ1dGUgbmFtZT0ic2VuZEV2ZW50VG9SZWxvYWQiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICAgICAgPHRleHRsaXN0aXRlbSB2YWx1ZT0iMTAiIHRleHQ9IjEwIiAvPgorICAgICAgICA8dGV4dGxpc3RpdGVtIHZhbHVlPSIyNSIgdGV4dD0iMjUiIC8+CisgICAgICAgIDx0ZXh0bGlzdGl0ZW0gdmFsdWU9IjUwIiB0ZXh0PSI1MCIgLz4KKyAgICAgICAgPHRleHRsaXN0aXRlbSB2YWx1ZT0iNzUiIHRleHQ9Ijc1IiAvPgorICAgICAgICA8dGV4dGxpc3RpdGVtIHZhbHVlPSIxMDAiIHRleHQ9IjEwMCIgLz4KKyAgICAgICAgPHRleHRsaXN0aXRlbSB2YWx1ZT0iMjAwIiB0ZXh0PSIyMDAiIC8+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uc2VsZWN0Ij4KKyAgICAgICAgCWlmICh0aGlzLnNlbmRFdmVudFRvUmVsb2FkKXsgCisgICAgICAgIAkJcGFyZW50LnNldEF0dHJpYnV0ZSgnc3RlcCcsTnVtYmVyKHRoaXMuZ2V0VmFsdWUoKSkpOworICAgICAgICAJfQorICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgIAl0aGlzLnNlbGVjdEl0ZW0oU3RyaW5nKHBhcmVudC5zdGVwKSk7CisgICAgICAgIAl0aGlzLnNlbmRFdmVudFRvUmVsb2FkID0gdHJ1ZTsKKyAgICAgICAgPC9oYW5kbGVyPgorCTwvcmVzZXRDb21ib2JveD4KKwkKKwk8IS0tIDM3MDpnb3RvIG5leHQgLS0+CisJPGJsdWVCdXR0b24gbmFtZT0iX25leHQxIiB5PSIwIiB4PSIkb25jZXsgcGFyZW50LndpZHRoLTQ0IH0iIHJlc291cmNlSXRlbT0ic3RlcF9md2RfYXJyb3ciIAorICAgICAgICAgICAgICAgIHhfaW5zZXRSZXNvdXJjZT0iMiIgeV9pbnNldFJlc291cmNlPSIyIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiCisJCQkJd2lkdGhfaW5zZXRSZXNvdXJjZT0iMTYiIGhlaWdodF9pbnNldFJlc291cmNlPSIxNiI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgcGFyZW50LmNhbGxuZXh0KCk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSIzNzAiIC8+CisgICAgPC9ibHVlQnV0dG9uPgorCisgICAgPCEtLSAzNzE6Z290byBsYXN0IC0tPgorICAgIDxibHVlQnV0dG9uIG5hbWU9Il9uZXh0MiIgeT0iMCIgeD0iJG9uY2V7IHBhcmVudC53aWR0aC0yMSB9IiByZXNvdXJjZUl0ZW09InN0ZXBfZndkX3R3b19hcnJvdyIgCisJCQkJeF9pbnNldFJlc291cmNlPSIyIiB5X2luc2V0UmVzb3VyY2U9IjIiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIKKwkJCQl3aWR0aF9pbnNldFJlc291cmNlPSIxNiIgaGVpZ2h0X2luc2V0UmVzb3VyY2U9IjE2Ij4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICBwYXJlbnQuY2FsbGxhc3QoKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IjM3MSIgLz4KKyAgICA8L2JsdWVCdXR0b24+CisJCisgICAgPCEtLSA9PT09PT09PT0gIEJnQXJlYSBhcmVhICA9PT09PT09PT0tLT4KKyAgICA8dmlldyB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCB9IiBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ21haW5Cb3JkZXJDb2xvcicpIH0iCisgICAgICAgICAgaGVpZ2h0PSIkeyBwYXJlbnQuaGVpZ2h0LTIwIH0iIHg9IjAiIHk9IjIwIj4KKyAgICAgICAgPHZpZXcgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGgtMiB9IiBiZ2NvbG9yPSIkb25jZXsgcGFyZW50LnBhcmVudC5tYWluQmdDb2xvciB9IgorICAgICAgICAgIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodC0yIH0iIHg9IjEiIHk9IjEiPjwvdmlldz4KKyAgICA8L3ZpZXc+CisgICAgICAgICAgCisJPCEtLSA9PT09PT09PT0gIExpc3QgSGVhZGVyIGFyZWEgID09PT09PT09PS0tPgorCisJPHZpZXcgbmFtZT0iX2lubmVybGlzdGhlYWQiIGhlaWdodD0iMjAiIHg9IjEiIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoLTIgfSIgCisJCSB5PSIyMiIgY2xpcD0idHJ1ZSI+CisJCTx2aWV3IG5hbWU9Il9pbm4iIHg9IiR7IHBhcmVudC5wYXJlbnQuX2lubmVybGlzdC5faW5uLnggfSIgbGF5b3V0PSJheGlzOng7c3BhY2luZzowIiAvPgorCTwvdmlldz4JCisJCisJPCEtLSA9PT09PT09PT0gIExpc3QgQ29udGVudHMgYXJlYSAgPT09PT09PT09LS0+CisJPHZpZXcgbmFtZT0iX2lubmVybGlzdCIgaGVpZ2h0PSIkeyBwYXJlbnQuaGVpZ2h0LTQzIH0iIHg9IjEiIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoLTIgfSIKKwkJeT0iNDIiIGNsaXA9InRydWUiIGJnY29sb3I9IiRvbmNleyBwYXJlbnQubWFpbkJnQ29sb3IgfSI+CisJCTx2aWV3IG5hbWU9Il9pbm4iID4KKwkJCTxpbm5lckxpc3QgbmFtZT0iX2lubiIgLz4KKwkJPC92aWV3PgorCQk8b21fdnNjcm9sbGJhciAvPgorCQk8b21faHNjcm9sbGJhciAvPgorCTwvdmlldz4KKworPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3R1cm5vdmVybGlzdC90dXJuT3Zlckxpc3RIZWFkZXJJdGVtLmx6eCBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy90dXJub3Zlcmxpc3QvdHVybk92ZXJMaXN0SGVhZGVySXRlbS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTM0OWY0ZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy90dXJub3Zlcmxpc3QvdHVybk92ZXJMaXN0SGVhZGVySXRlbS5sengKQEAgLTAsMCArMSwxNzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzxjbGFzcyBuYW1lPSJ0dXJuT3Zlckxpc3RIZWFkZXJJdGVtIiBleHRlbmRzPSJzaW1wbGVMYWJlbEJ1dHRvbiIgY2xpcD0idHJ1ZSIgZm9udHN0eWxlPSJwbGFpbiI+CisKKwk8YXR0cmlidXRlIG5hbWU9InN1YnZpZXdzaWQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisKKwk8dmlldyBoZWlnaHQ9IiRvbmNleyBwYXJlbnQuaGVpZ2h0LTIgfSIgd2lkdGg9IjUiIGFsaWduPSJyaWdodCIKKwkJY3Vyc29yPSJ3aWR0aF9ncmlwcGVyX3JzYyIgCisJCW9ubW91c2Vkb3duPSJwYXJlbnQucnMuYXBwbHkoKSIgb25tb3VzZXVwPSJwYXJlbnQucnMucmVtb3ZlKCkiIC8+CisJCQorCTxoYW5kbGVyIG5hbWU9Im9ud2lkdGgiIGFyZ3M9InciPgorCQl0aGlzLnBhcmVudC5wYXJlbnQucGFyZW50LnNlbmRXaWR0aFVwZGF0ZSh3LHRoaXMuc3Vidmlld3NpZCk7CisJPC9oYW5kbGVyPgorCTxyZXNpemVzdGF0ZSBuYW1lPSJycyIgaGVpZ2h0PSIyMCIgLz4KKzwvY2xhc3M+CisKKzxjbGFzcyBuYW1lPSJ0dXJuT3Zlckxpc3RIZWFkZXJJdGVtU2ltcGxlIiBleHRlbmRzPSJzaW1wbGVMYWJlbEJ1dHRvbiIgZm9udHN0eWxlPSJwbGFpbiI+CisJPGF0dHJpYnV0ZSBuYW1lPSJhc2MiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKwk8YXR0cmlidXRlIG5hbWU9InBhdGhPcmRlciIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorCQlpZiAocGFyZW50LnByZUJ1dHRvbiE9bnVsbCl7CisJCQlwYXJlbnQucHJlQnV0dG9uLl9hc2Muc2V0QXR0cmlidXRlKCd2aXNpYmlsaXR5JywnaGlkZGVuJyk7CisJCQlwYXJlbnQucHJlQnV0dG9uLl9kZXNjLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ2hpZGRlbicpOworCQl9CisJCWlmICghdGhpcy5hc2MpeworCQkJdGhpcy5fYXNjLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ2hpZGRlbicpOworCQkJdGhpcy5fZGVzYy5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCd2aXNpYmxlJyk7CisJCX0gZWxzZSB7CisJCQl0aGlzLl9hc2Muc2V0QXR0cmlidXRlKCd2aXNpYmlsaXR5JywndmlzaWJsZScpOworCQkJdGhpcy5fZGVzYy5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCdoaWRkZW4nKTsJCQorCQl9CisJCXBhcmVudC5wcmVCdXR0b24gPSB0aGlzOworCQlwYXJlbnQuc2V0TmV3U29ydE9yZGVyKHRoaXMucGF0aE9yZGVyLHRoaXMpOworCTwvaGFuZGxlcj4KKwk8dmlldyBuYW1lPSJfYXNjIiB4PSIkb25jZXsgcGFyZW50LndpZHRoLTIwIH0iIAorCQkgIHZpc2liaWxpdHk9ImhpZGRlbiIgcmVzb3VyY2U9InNvcnRfYXNjX3R1cm5vdmVyX3JzYyIgLz4KKwk8dmlldyBuYW1lPSJfZGVzYyIgeD0iJG9uY2V7IHBhcmVudC53aWR0aC0yMCB9IiAKKwkJICB2aXNpYmlsaXR5PSJoaWRkZW4iIHJlc291cmNlPSJzb3J0X2Rlc2NfdHVybm92ZXJfcnNjIiAvPgorPC9jbGFzcz4KKworPGNsYXNzIG5hbWU9ImJhc2ljdHVybm92ZXJsaXN0aGVhZGVyaXRlbSIgZm9udHNpemU9IjkiCisgICAgICAgZXh0ZW5kcz0ic2ltcGxlTGFiZWxCdXR0b24iIGNsaXA9InRydWUiPgorCQorPC9jbGFzcz4KKworPGNsYXNzIG5hbWU9InR1cm5vdmVybGlzdGhlYWRlcml0ZW0iIGV4dGVuZHM9ImJhc2ljdHVybm92ZXJsaXN0aGVhZGVyaXRlbSIgPgorCisJPGF0dHJpYnV0ZSBuYW1lPSJzdWJ2aWV3c2lkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorCisJPGhhbmRsZXIgbmFtZT0ib253aWR0aCIgYXJncz0idyI+CisJCXRoaXMucGFyZW50LnBhcmVudC5wYXJlbnQuc2VuZFdpZHRoVXBkYXRlKHcsdGhpcy5zdWJ2aWV3c2lkKTsKKwk8L2hhbmRsZXI+CisKKzwvY2xhc3M+CisKKzxjbGFzcyBuYW1lPSJ0dXJub3Zlcmxpc3RoZWFkZXJpdGVtSWNvbiIgZXh0ZW5kcz0iYmFzaWN0dXJub3Zlcmxpc3RoZWFkZXJpdGVtIiA+CisKKyAgICA8YXR0cmlidXRlIG5hbWU9InN1YnZpZXdzaWQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJ0b29sVGlwTGFiZWxJZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9Imljb25SZXNvdXJjZSIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorCisgICAgPGhhbmRsZXIgbmFtZT0ib253aWR0aCIgYXJncz0idyI+CisgICAgICAgIHRoaXMucGFyZW50LnBhcmVudC5wYXJlbnQuc2VuZFdpZHRoVXBkYXRlKHcsdGhpcy5zdWJ2aWV3c2lkKTsKKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayIgPgorICAgICAgICB0aGlzLnBhcmVudC5wYXJlbnQucGFyZW50LnNlbmRIZWFkZXJDbGljay5zZW5kRXZlbnQodGhpcyk7CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgIDx2aWV3IGFsaWduPSJjZW50ZXIiIHZhbGlnbj0ibWlkZGxlIiAKKyAgICAgICAgICByZXNvdXJjZT0iJG9uY2V7IHBhcmVudC5pY29uUmVzb3VyY2UgfSIgLz4KKyAgICAKKyAgICA8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IiRvbmNleyBwYXJlbnQudG9vbFRpcExhYmVsSWQgfSIgLz4KKyAgICAKKzwvY2xhc3M+CisKKzxjbGFzcyBuYW1lPSJ0dXJub3Zlcmxpc3RoZWFkZXJpdGVtUmVzaXplIiBleHRlbmRzPSJiYXNpY3R1cm5vdmVybGlzdGhlYWRlcml0ZW0iID4KKworCTxhdHRyaWJ1dGUgbmFtZT0ic3Vidmlld3NpZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKworICAgIDxhdHRyaWJ1dGUgbmFtZT0ibWlud2lkdGgiIHZhbHVlPSIyIiB0eXBlPSJudW1iZXIiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJtaW5oZWlnaHQiIHZhbHVlPSIxMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgIAorCTx2aWV3IGhlaWdodD0iJG9uY2V7IHBhcmVudC5oZWlnaHQgfSIgd2lkdGg9IjQiIGFsaWduPSJyaWdodCIgYmdjb2xvcj0iYmxhY2siCisJCWN1cnNvcj0id2lkdGhfZ3JpcHBlcl9yc2MiIG9wYWNpdHk9IjAuMDEiCisJCW9ubW91c2Vkb3duPSJwYXJlbnQucnMuYXBwbHkoKSIgb25tb3VzZXVwPSJwYXJlbnQucnMucmVtb3ZlKCkiIC8+CisKKwk8aGFuZGxlciBuYW1lPSJvbndpZHRoIiBhcmdzPSJ3Ij4KKyAgICAgICAgLy8vLy8vaWYgKCRkZWJ1ZykgLy9EZWJ1Zy53cml0ZSgib253aWR0aDogIix3KTsKKwkJdGhpcy5wYXJlbnQucGFyZW50LnBhcmVudC5zZW5kV2lkdGhVcGRhdGUody0xLHRoaXMuc3Vidmlld3NpZCk7CisJPC9oYW5kbGVyPgorCisJPHJlc2l6ZXN0YXRlbWluIG5hbWU9InJzIiBoZWlnaHQ9IjIwIiAvPgorCis8L2NsYXNzPgorCis8Y2xhc3MgbmFtZT0idHVybm92ZXJsaXN0aGVhZGVyaXRlbVJlc2l6ZVdpenphcmRSZWZyZXNoIiBleHRlbmRzPSJiYXNpY3R1cm5vdmVybGlzdGhlYWRlcml0ZW0iID4KKworICAgIDxhdHRyaWJ1dGUgbmFtZT0ic3Vidmlld3NpZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKworICAgIDxhdHRyaWJ1dGUgbmFtZT0ibWlud2lkdGgiIHZhbHVlPSIyIiB0eXBlPSJudW1iZXIiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJtaW5oZWlnaHQiIHZhbHVlPSIxMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgIAorICAgIDx2aWV3IGhlaWdodD0iJG9uY2V7IHBhcmVudC5oZWlnaHQgfSIgd2lkdGg9IjQiIGFsaWduPSJyaWdodCIgYmdjb2xvcj0iYmxhY2siCisgICAgICAgIGN1cnNvcj0id2lkdGhfZ3JpcHBlcl9yc2MiIG9wYWNpdHk9IjAuMDEiCisgICAgICAgIG9ubW91c2Vkb3duPSJwYXJlbnQucnMuYXBwbHkoKSIgb25tb3VzZXVwPSJwYXJlbnQucnMucmVtb3ZlKCkiIC8+CisKKyAgICA8aGFuZGxlciBuYW1lPSJvbndpZHRoIiBhcmdzPSJ3Ij4KKyAgICAgICAgLy8vLy8vaWYgKCRkZWJ1ZykgLy9EZWJ1Zy53cml0ZSgib253aWR0aDogIix3KTsKKyAgICAgICAgdGhpcy5wYXJlbnQucGFyZW50LnBhcmVudC5zZW5kV2lkdGhVcGRhdGUody0xLHRoaXMuc3Vidmlld3NpZCk7CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgIDx2aWV3IG5hbWU9InJlZnJlc2hfZ2VvbUNvbXAiIHJlc291cmNlPSJyZWZyZXNoX2dlb21Db21wIiB5PSIxIiB4PSIkeyBwYXJlbnQud2lkdGggLSAxOSB9IgorICAgICAgICBvbm1vdXNlb3Zlcj0iIiBvbm1vdXNlb3V0PSIiPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgdGhpcy5wYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LnVwZGF0ZUdlb21CeVZhbHVlKCk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSI2MiIgLz4KKyAgICA8L3ZpZXc+ICAgCisKKyAgICA8cmVzaXplc3RhdGVtaW4gbmFtZT0icnMiIGhlaWdodD0iMjAiIC8+CisKKzwvY2xhc3M+CisKKworCis8Y2xhc3MgbmFtZT0idHVybk92ZXJMaXN0SGVhZGVySXRlbU9yZGVyZWQiIGV4dGVuZHM9InR1cm5vdmVybGlzdGhlYWRlcml0ZW1SZXNpemUiPgorCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJvcmRlckJ5IiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJhc2MiIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iaXNTZWxlY3RlZCIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgIGlmICh0aGlzLmlzU2VsZWN0ZWQpIHsKKyAgICAgICAgICAgIHBhcmVudC5wYXJlbnQucGFyZW50LnVwZGF0ZU9yZGVyKHRoaXMpOworICAgICAgICB9CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICBwYXJlbnQucGFyZW50LnBhcmVudC51cGRhdGVPcmRlcih0aGlzKTsKKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPGltYWdlIG5hbWU9Il9zb3J0VXAiIHZpc2liaWxpdHk9ImhpZGRlbiIgc3RyZXRjaGVzPSJib3RoIiB3aWR0aD0iOCIgaGVpZ2h0PSI4IiB5PSI2IgorICAgICAgICB4PSIke3BhcmVudC53aWR0aCAtIDEzIH0iIHNyYz0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUltYWdlKCdzb3J0X3VwX3JzYycpIH0iIC8+CisgICAgPGltYWdlIG5hbWU9Il9zb3J0RG93biIgdmlzaWJpbGl0eT0iaGlkZGVuIiBzdHJldGNoZXM9ImJvdGgiIHdpZHRoPSI4IiBoZWlnaHQ9IjgiIHk9IjYiCisgICAgICAgIHg9IiR7cGFyZW50LndpZHRoIC0gMTMgfSIgc3JjPSIkb25jZXsgY2FudmFzLmdldFRoZW1lSW1hZ2UoJ3NvcnRfZG93bl9yc2MnKSB9IiAvPgorCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvdHVybm92ZXJsaXN0L3R1cm5PdmVyVGV4dEl0ZW0ubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3R1cm5vdmVybGlzdC90dXJuT3ZlclRleHRJdGVtLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzU4MTYzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3R1cm5vdmVybGlzdC90dXJuT3ZlclRleHRJdGVtLmx6eApAQCAtMCwwICsxLDI4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8Y2xhc3MgbmFtZT0idHVybk92ZXJUZXh0SXRlbSIgZXh0ZW5kcz0idGV4dCIgZm9udHNpemU9IjExIiByZXNpemU9ImZhbHNlIj4KKwk8dmlldyBoZWlnaHQ9IiRvbmNleyBwYXJlbnQucGFyZW50LmhlaWdodCB9IiB3aWR0aD0iMSIgCisgICAgICAgIGFsaWduPSJyaWdodCIgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdzZWNvbmRCb3JkZXJDb2xvcicpIH0iIC8+Cis8L2NsYXNzPgorICAgICAgICAKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy90dXJub3Zlcmxpc3RwYWdlZC9iYXNlUGFnaW5nTGlzdEl0ZW0ubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3R1cm5vdmVybGlzdHBhZ2VkL2Jhc2VQYWdpbmdMaXN0SXRlbS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQ4YjI0YgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy90dXJub3Zlcmxpc3RwYWdlZC9iYXNlUGFnaW5nTGlzdEl0ZW0ubHp4CkBAIC0wLDAgKzEsNDEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzxjbGFzcyBuYW1lPSJiYXNlUGFnaW5nTGlzdEl0ZW0iIGV4dGVuZHM9ImJhc2VDb250ZW50TGlzdEl0ZW0iIGhlaWdodD0iMjAiPiAKKworCTxhdHRyaWJ1dGUgbmFtZT0iaXRlbUlkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgIAorPC9jbGFzcz4KKworCis8Y2xhc3MgbmFtZT0iY29tb2JveExpc3RJdGVtTm9IZWFkZXJzIiBleHRlbmRzPSJiYXNlUGFnaW5nTGlzdEl0ZW0iID4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9InRleHQiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKyAgICAKKyAgICA8dGV4dCB3aWR0aD0iMTAwIiBoZWlnaHQ9IjIwIiByZXNpemU9ImZhbHNlIiBmb250c2l6ZT0iMTAiCisgICAgICAgICAgdGV4dD0iJHsgcGFyZW50LnRleHQgfSIgLz4KKyAgICAgICAgICAKKyAgICA8bGFiZWxUb29sdGlwIHRleHQ9IiR7IHBhcmVudC50ZXh0IH0iIC8+CisgICAgCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvdHVybm92ZXJsaXN0cGFnZWQvbGlicmFyeS5senggYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvdHVybm92ZXJsaXN0cGFnZWQvbGlicmFyeS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTBmNTkyMAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy90dXJub3Zlcmxpc3RwYWdlZC9saWJyYXJ5Lmx6eApAQCAtMCwwICsxLDI4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorICAgIAorICAgIDxpbmNsdWRlIGhyZWY9ImJhc2VQYWdpbmdMaXN0SXRlbS5sengiIC8+CisgICAgPGluY2x1ZGUgaHJlZj0ibGlzdFBhZ2VkQ29udGVudC5sengiIC8+CisJPGluY2x1ZGUgaHJlZj0idHVybk92ZXJMaXN0UGFnZWQubHp4IiAvPgorICAgIDxpbmNsdWRlIGhyZWY9InR1cm5PdmVyTGlzdE9yZGVyZWRQYWdlZC5sengiIC8+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy90dXJub3Zlcmxpc3RwYWdlZC9saXN0UGFnZWRDb250ZW50Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy90dXJub3Zlcmxpc3RwYWdlZC9saXN0UGFnZWRDb250ZW50Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYmFmY2I0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3R1cm5vdmVybGlzdHBhZ2VkL2xpc3RQYWdlZENvbnRlbnQubHp4CkBAIC0wLDAgKzEsMjA2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCQorPCEtLS0gY29tbW9uIFR1cm5PdmVyTGlzdCB2aWV3IGNsYXNzLiAtLT4KKzxjbGFzcyBuYW1lPSJsaXN0UGFnZWRDb250ZW50IiBleHRlbmRzPSJ2aWV3IiBjbGlwPSJ0cnVlIiA+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJpdGVtSGVpZ2h0IiB2YWx1ZT0iMjAiIHR5cGU9Im51bWJlciIvPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0ic2hvd0hTY3JvbGxiYXIiIHZhbHVlPSJ2aXNpYmxlIiB0eXBlPSJzdHJpbmciLz4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImluaXRJdGVtc0J5U3ViSXRlbU5vIiBhcmdzPSJpdGVtTmFtZSxub1N1Ykl0ZW1zLHN1Ykl0ZW1DbGFzc05hbWUiPiAKKyAgICAgICAgdGhpcy5faW5uLmluaXRJdGVtc0J5U3ViSXRlbU5vKGl0ZW1OYW1lLG5vU3ViSXRlbXMsc3ViSXRlbUNsYXNzTmFtZSk7CisgICAgPC9tZXRob2Q+ICAgIAorCQorICAgIDx2aWV3IG5hbWU9Il9pbm4iID4KKyAgICAgICAgCisgICAgICAgIDwhLS0gY2FsY3VsYXRlcyB0aGUgYWRkaXRpb25hbCBpdGVtcyAtLT4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJpdGVtc1RvU2hvdyIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJ0b3RhbEl0ZW1zSW5MaXN0IiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgICAgICAKKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50TGFzdEl0ZW1Jbkxpc3QiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisgICAgICAgIAorICAgICAgICA8YXR0cmlidXRlIG5hbWU9Iml0ZW1IZWlnaHQiIHZhbHVlPSIkb25jZXsgcGFyZW50Lml0ZW1IZWlnaHQgfSIgdHlwZT0ibnVtYmVyIi8+CisgICAgICAgIAorCQk8bWV0aG9kIG5hbWU9ImluaXRJdGVtcyIgYXJncz0iaXRlbU5hbWUiPgorCSAgICAgICAgPCFbQ0RBVEFbCisJICAgICAgICAgICAgdGhpcy50b3RhbEl0ZW1zSW5MaXN0ID0gTWF0aC5yb3VuZChwYXJlbnQuaGVpZ2h0L3RoaXMuaXRlbUhlaWdodCk7CisJICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8dGhpcy50b3RhbEl0ZW1zSW5MaXN0O2krKyl7CisJICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudExhc3RJdGVtSW5MaXN0ID0gaTsKKwkgICAgICAgICAgICAgICAgbmV3IGx6W2l0ZW1OYW1lXSh0aGlzLl9pbm4se3k6aSp0aGlzLml0ZW1IZWlnaHQsaXRlbUlkOmksY2xpY2thYmxlOmZhbHNlfSk7CisJICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJpbml0SXRlbXMgLTEtICIsaSxpdGVtTmFtZSxseltpdGVtTmFtZV0pOworICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJpbml0SXRlbXMgLTItICIsdGhpcy5faW5uLnN1YnZpZXdzLmxlbmd0aCk7CisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImluaXRJdGVtcyAtMy0gIix0b3RhbEl0ZW1zSW5MaXN0KTsKKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiaW5pdEl0ZW1zIC00LSAiLHBhcmVudC5oZWlnaHQpOworICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJpbml0SXRlbXMgLTUtICIsdGhpcy5pdGVtSGVpZ2h0KTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvL2NhbnZhcy5jdXJyZW50RGVidWdQYWdlTGlzdCA9IHRoaXM7CisgICAgICAgICAgICAgICAgCisJICAgICAgICBdXT4KKwkgICAgPC9tZXRob2Q+CQorCSAgICAKKwkgICAgPGhhbmRsZXIgbmFtZT0ib255IiBhcmdzPSJ5Ij4KKwkgICAgCXBhcmVudC5wYXJlbnQub25Nb3ZlTGlzdC5zZW5kRXZlbnQoeSk7CisJICAgIDwvaGFuZGxlcj4gCisgICAgICAgIAorICAgICAgICA8bWV0aG9kIG5hbWU9ImluaXRJdGVtc0J5U3ViSXRlbU5vIiBhcmdzPSJpdGVtTmFtZSxub1N1Ykl0ZW1zLHN1Ykl0ZW1DbGFzc05hbWUiPgorICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICB0aGlzLnRvdGFsSXRlbXNJbkxpc3QgPSBNYXRoLnJvdW5kKHBhcmVudC5oZWlnaHQvdGhpcy5pdGVtSGVpZ2h0KTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTx0aGlzLnRvdGFsSXRlbXNJbkxpc3Q7aSsrKXsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50TGFzdEl0ZW1Jbkxpc3QgPSBpOworICAgICAgICAgICAgICAgICAgICB2YXIgYmFzZUl0ZW0gPSBuZXcgbHpbaXRlbU5hbWVdKHRoaXMuX2lubix7eTppKnRoaXMuaXRlbUhlaWdodCxpdGVtSWQ6aSxjbGlja2FibGU6ZmFsc2V9KTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGs9MDtrPG5vU3ViSXRlbXM7aysrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgbHpbc3ViSXRlbUNsYXNzTmFtZV0oYmFzZUl0ZW0pOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L21ldGhvZD4gICAgICAKKyAgICAgICAgCisgICAgICAgIDxtZXRob2QgbmFtZT0icmVzZXRJdGVtcyI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTx0aGlzLl9pbm4uc3Vidmlld3MubGVuZ3RoO2krKykgeworICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbm4uc3Vidmlld3NbaV0uaXRlbUlkID0gaTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50TGFzdEl0ZW1Jbkxpc3QgPSBpOworICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbm4uc3Vidmlld3NbaV0uc2V0QXR0cmlidXRlKCJ5IixpKnRoaXMuaXRlbUhlaWdodCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXV0+CisgICAgICAgIDwvbWV0aG9kPgorICAgICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib255IiBhcmdzPSJ5Ij4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9ueSAiLHkpOworICAgICAgICAgICAgICAgIHZhciBpdGVtcyA9IE1hdGgucm91bmQoeS90aGlzLml0ZW1IZWlnaHQpOworICAgICAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIml0ZW1zICIsaXRlbXMpOworICAgICAgICAgICAgICAgIGlmICh0aGlzLml0ZW1zVG9TaG93ICE9IGl0ZW1zKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBkZWx0YUl0ZW0gPSBpdGVtc1RvU2hvdyAtIGl0ZW1zOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZGVsdGFJdGVtICIsZGVsdGFJdGVtKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmIChkZWx0YUl0ZW0gPiAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvL0FkZCBuZXcgSXRlbXMgdG8gdGhlIGVuZAorICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8ZGVsdGFJdGVtO2krKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBpdGVtID0gdGhpcy5faW5uLmdldFVwbW9zdEl0ZW1Jbkxpc3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNoaWZ0VG9MYXN0KGl0ZW0pOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgLy9BZGQgbmV3IEl0ZW1zIHRvIHRoZSBiZWdpbm5pbmcKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPmRlbHRhSXRlbTtpLS0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IHRoaXMuX2lubi5nZXRMYXN0SXRlbUluTGlzdCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hpZnRUb0ZpcnN0KGl0ZW0pOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICB0aGlzLml0ZW1zVG9TaG93ID0gaXRlbXM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgCisgICAgICAgIDxtZXRob2QgbmFtZT0ic2hpZnRUb0xhc3QiIGFyZ3M9Iml0ZW0iPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgcGFyZW50LnBhcmVudC5vbk5leHRTY3JvbGxJdGVtLnNlbmRFdmVudChpdGVtKTsKKyAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJzaGlmdFRvTGFzdCAiLGl0ZW0saXRlbS5pdGVtSWQpOworICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudExhc3RJdGVtSW5MaXN0Kys7CisgICAgICAgICAgICAgICAgaXRlbS5zZXRBdHRyaWJ1dGUoInkiLHRoaXMuY3VycmVudExhc3RJdGVtSW5MaXN0KnRoaXMuaXRlbUhlaWdodCk7CisgICAgICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2hpZnRUb0xhc3QgLTEtICIsaXRlbS55LHRoaXMuY3VycmVudExhc3RJdGVtSW5MaXN0KTsKKyAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCIrKyBzaGlmdFRvTGFzdCA0ICIsaXRlbS55LHRoaXMuY3VycmVudExhc3RJdGVtSW5MaXN0KTsKKyAgICAgICAgICAgICAgICBpdGVtLml0ZW1JZCA9IHRoaXMuY3VycmVudExhc3RJdGVtSW5MaXN0OworICAgICAgICAgICAgICAgIHBhcmVudC5wYXJlbnQub25TY3JvbGxJdGVtLnNlbmRFdmVudChpdGVtKTsKKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgCisgICAgICAgIDxtZXRob2QgbmFtZT0ic2hpZnRUb0ZpcnN0IiBhcmdzPSJpdGVtIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIHBhcmVudC5wYXJlbnQub25OZXh0U2Nyb2xsSXRlbS5zZW5kRXZlbnQoaXRlbSk7CisgICAgICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2hpZnRUb0ZpcnN0IDEgIixpdGVtLml0ZW1JZCk7CisgICAgICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2hpZnRUb0ZpcnN0IDIgIixpdGVtLnkpOworICAgICAgICAgICAgICAgIHZhciBuZXdJdGVtID0gdGhpcy5jdXJyZW50TGFzdEl0ZW1Jbkxpc3QtdGhpcy50b3RhbEl0ZW1zSW5MaXN0OworICAgICAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInNoaWZ0VG9GaXJzdCAzICIsbmV3SXRlbSk7CisgICAgICAgICAgICAgICAgaXRlbS5zZXRBdHRyaWJ1dGUoInkiLG5ld0l0ZW0qdGhpcy5pdGVtSGVpZ2h0KTsKKyAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCItLSBzaGlmdFRvRmlyc3QgNCAiLGl0ZW0ueSxuZXdJdGVtLHRoaXMuY3VycmVudExhc3RJdGVtSW5MaXN0KTsKKyAgICAgICAgICAgICAgICBpdGVtLml0ZW1JZCA9IG5ld0l0ZW07CisgICAgICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2hpZnRUb0ZpcnN0IDUgIixpdGVtLml0ZW1JZCk7CisgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50TGFzdEl0ZW1Jbkxpc3QtLTsKKyAgICAgICAgICAgICAgICBwYXJlbnQucGFyZW50Lm9uU2Nyb2xsSXRlbS5zZW5kRXZlbnQoaXRlbSk7CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9tZXRob2Q+CisgICAgICAgICAgICAKKyAgICAgICAgPGlubmVyTGlzdFBhZ2luZ0NvbnRlbnQgbmFtZT0iX2lubiIgLz4KKyAgICAgICAgCisgICAgPC92aWV3PgorICAgIDxvbV92c2Nyb2xsYmFyIG5hbWU9Il9zY3JvbGxiYXIiIHN0ZXBzaXplPSIkb25jZXsgcGFyZW50Lml0ZW1IZWlnaHQgfSIgLz4KKyAgICAKKyAgICAKKyAgICA8b21faHNjcm9sbGJhciB2aXNpYmlsaXR5PSIkb25jZXsgcGFyZW50LnNob3dIU2Nyb2xsYmFyIH0iIC8+CisKKzwvY2xhc3M+CisKKzxjbGFzcyBuYW1lPSJpbm5lckxpc3RQYWdpbmdDb250ZW50IiBleHRlbmRzPSJ2aWV3Ij4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImdldEl0ZW1CeVBvc2l0aW9uIiBhcmdzPSJ5UG9zIj4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTx0aGlzLnN1YnZpZXdzLmxlbmd0aDtpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5zdWJ2aWV3c1tpXS55ID09IHlQb3MpeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zdWJ2aWV3c1tpXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iZ2V0VXBtb3N0SXRlbUluTGlzdCI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgdmFyIGl0ZW0gPSB0aGlzLnN1YnZpZXdzWzBdOworICAgICAgICAgICAgCisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJnZXRVcG1vc3RJdGVtSW5MaXN0ICIsdGhpcy5zdWJ2aWV3cy5sZW5ndGgpOworICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTx0aGlzLnN1YnZpZXdzLmxlbmd0aDtpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5zdWJ2aWV3c1tpXS5pdGVtSWQgPCBpdGVtLml0ZW1JZCl7CisgICAgICAgICAgICAgICAgICAgIGl0ZW0gPSB0aGlzLnN1YnZpZXdzW2ldOworICAgICAgICAgICAgICAgICAgICAvL2JyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZ2V0VXBtb3N0SXRlbUluTGlzdCAiLGl0ZW0pOworICAgICAgICAgICAgCisgICAgICAgICAgICByZXR1cm4gaXRlbTsKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJnZXRMYXN0SXRlbUluTGlzdCI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgdmFyIGl0ZW0gPSB0aGlzLnN1YnZpZXdzWzBdOworICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8dGhpcy5zdWJ2aWV3cy5sZW5ndGg7aSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3Vidmlld3NbaV0uaXRlbUlkID4gaXRlbS5pdGVtSWQpeworICAgICAgICAgICAgICAgICAgICBpdGVtID0gdGhpcy5zdWJ2aWV3c1tpXTsKKyAgICAgICAgICAgICAgICAgICAgLy9icmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gaXRlbTsKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvdHVybm92ZXJsaXN0cGFnZWQvdHVybk92ZXJMaXN0T3JkZXJlZFBhZ2VkLmx6eCBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy90dXJub3Zlcmxpc3RwYWdlZC90dXJuT3Zlckxpc3RPcmRlcmVkUGFnZWQubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0ZGIyYTYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvdHVybm92ZXJsaXN0cGFnZWQvdHVybk92ZXJMaXN0T3JkZXJlZFBhZ2VkLmx6eApAQCAtMCwwICsxLDc2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorICAgIAorCisKKzwhLS0tIGNvbW1vbiBUdXJuT3Zlckxpc3QgdmlldyBjbGFzcy4gLS0+Cis8Y2xhc3MgbmFtZT0idHVybk92ZXJMaXN0T3JkZXJlZFBhZ2VkIiBleHRlbmRzPSJ0dXJuT3Zlckxpc3RQYWdlZCI+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50U2VsZWN0ZWRPcmRlciIgdmFsdWU9Im51bGwiIC8+CisgICAgCisgICAgPGV2ZW50IG5hbWU9Im9uVXBkYXRlT3JkZXIiIC8+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJ1cGRhdGVPcmRlciIgYXJncz0iaXRlbVJlZiI+CisgICAgICAgIDwhW0NEQVRBWworCSAgICAgICAgLy9vbmx5IGRvIHRoYXQgaWYgdGhlIHByZXZpb3VzIG9yZGVyQnkgIT0gbmV3IG9yZGVyYnkKKwkgICAgICAgIC8vaWYgKHRoaXMuY3VycmVudFNlbGVjdGVkT3JkZXIgPT0gbnVsbCB8fCAKKyAgICAgICAgICAgIC8vICAgICAgICB0aGlzLmN1cnJlbnRTZWxlY3RlZE9yZGVyLm9yZGVyQnkgIT0gaXRlbVJlZi5vcmRlckJ5KXsKKwkgICAgICAgIGlmIChpdGVtUmVmLmlzU2VsZWN0ZWQpIHsKKwkgICAgICAgICAgICBpdGVtUmVmLmFzYyA9ICFpdGVtUmVmLmFzYzsKKwkgICAgICAgIH0gZWxzZSB7CisJICAgICAgICAgICAgaXRlbVJlZi5pc1NlbGVjdGVkID0gdHJ1ZTsKKwkgICAgICAgIH0KKwkgICAgICAgIGlmIChpdGVtUmVmLmFzYykgeworCSAgICAgICAgICAgIGl0ZW1SZWYuX3NvcnRVcC5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCdoaWRkZW4nKTsKKwkgICAgICAgICAgICBpdGVtUmVmLl9zb3J0RG93bi5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCd2aXNpYmxlJyk7CisJICAgICAgICB9IGVsc2UgeworCSAgICAgICAgICAgIGl0ZW1SZWYuX3NvcnRVcC5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCd2aXNpYmxlJyk7CisJICAgICAgICAgICAgaXRlbVJlZi5fc29ydERvd24uc2V0QXR0cmlidXRlKCd2aXNpYmlsaXR5JywnaGlkZGVuJyk7IAorCSAgICAgICAgfQorCSAgICAgICAgCisJICAgICAgICAvL2RvIG5vdCBwZXJmb3JtIHNlYXJjaCBvbiBpbml0aWFsIFNlbGVjdGlvbgorCSAgICAgICAgdmFyIGlzSW5pdFNlbGVjdCA9IGZhbHNlOworCSAgICAgICAgaWYgKHRoaXMuY3VycmVudFNlbGVjdGVkT3JkZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRTZWxlY3RlZE9yZGVyLm9yZGVyQnkgIT0gaXRlbVJlZi5vcmRlckJ5KSB7CisJCSAgICAgICAgICAgIHRoaXMuY3VycmVudFNlbGVjdGVkT3JkZXIuaXNTZWxlY3RlZCA9IGZhbHNlOworCQkgICAgICAgICAgICB0aGlzLmN1cnJlbnRTZWxlY3RlZE9yZGVyLl9zb3J0VXAuc2V0QXR0cmlidXRlKCd2aXNpYmlsaXR5JywnaGlkZGVuJyk7CisJCSAgICAgICAgICAgIHRoaXMuY3VycmVudFNlbGVjdGVkT3JkZXIuX3NvcnREb3duLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ2hpZGRlbicpOyAKKyAgICAgICAgICAgICAgICB9CisJICAgICAgICB9IGVsc2UgeworCSAgICAgICAgICAgIGlzSW5pdFNlbGVjdCA9IHRydWU7CisJICAgICAgICB9CisJICAgICAgICB0aGlzLmN1cnJlbnRTZWxlY3RlZE9yZGVyID0gaXRlbVJlZjsKKwkgICAgICAgIAorCSAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInVwZGF0ZU9yZGVyOiAiLGl0ZW1SZWYsaXRlbVJlZi5vcmRlckJ5LGl0ZW1SZWYuYXNjLGlzSW5pdFNlbGVjdCk7CisJICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnb3JkZXJieScsaXRlbVJlZi5vcmRlckJ5KTsKKwkgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdhc2MnLGl0ZW1SZWYuYXNjKTsKKwkgICAgICAgIAorCSAgICAgICAgaWYgKCFpc0luaXRTZWxlY3QpeworICAgICAgICAgICAgCXRoaXMub25VcGRhdGVPcmRlci5zZW5kRXZlbnQoaXRlbVJlZik7CisgICAgICAgICAgICB9CisJICAgICAgICAvL30KKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy90dXJub3Zlcmxpc3RwYWdlZC90dXJuT3Zlckxpc3RQYWdlZC5senggYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvdHVybm92ZXJsaXN0cGFnZWQvdHVybk92ZXJMaXN0UGFnZWQubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxMDU1MGQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvdHVybm92ZXJsaXN0cGFnZWQvdHVybk92ZXJMaXN0UGFnZWQubHp4CkBAIC0wLDAgKzEsNTQwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorICAgIAorPGNsYXNzIG5hbWU9ImJhc2V0dXJuT3Zlckxpc3RQYWdlZCIgZXh0ZW5kcz0idmlldyI+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJzdGFydCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9InN0ZXAiIHZhbHVlPSIxMDAiIHR5cGU9Im51bWJlciIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9Im9yZGVyYnkiIHZhbHVlPSJmaXJzdG5hbWUiIHR5cGU9InN0cmluZyIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImFzYyIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJyZWNvcmRzIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0icmVuZGVyTGlzdCIgdmFsdWU9Im51bGwiLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9Il9zZWxlY3RlZCIgdmFsdWU9Im51bGwiIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJfc2VsZWN0ZWRSZWZPYmoiIHZhbHVlPSJudWxsIiAvPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibXVsdGlzZWxlY3QiIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0ic2VsZWN0ZWQiIHZhbHVlPSJudWxsIiAvPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0ic2hvd1RvcEJhciIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgCisgICAgPGV2ZW50IG5hbWU9Im9uY2FsbG5leHQiIC8+CisgICAgPGV2ZW50IG5hbWU9Im9uY2FsbHByZSIgLz4KKyAgICAKKyAgICA8IS0tLSBAa2V5d29yZHMgcHJpdmF0ZSAtLT4KKyAgICA8ZXZlbnQgbmFtZT0ib25sb2FkIiAvPgorICAgIAorICAgIDxldmVudCBuYW1lPSJyZXJlbmRlciIgLz4KKyAgICAKKyAgICA8ZXZlbnQgbmFtZT0ib25Nb3ZlTGlzdCIgLz4KKyAgICAKKyAgICA8ZXZlbnQgbmFtZT0ib25TY3JvbGxJdGVtIiAvPgorICAgIDxldmVudCBuYW1lPSJvbk5leHRTY3JvbGxJdGVtIiAvPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibGlzdEl0ZW1OYW1lIiB2YWx1ZT0iYmFzZVBhZ2luZ0xpc3RJdGVtIiB0eXBlPSJzdHJpbmciIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpdGVtSGVpZ2h0IiB2YWx1ZT0iMjAiIHR5cGU9Im51bWJlciIvPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibWVudUJhclhJbmRlbnQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9ImhlYWRlckhlaWdodCIgdmFsdWU9IjIwIiB0eXBlPSJudW1iZXIiIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJsaXN0TGFiZWxJZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9InNob3dIU2Nyb2xsYmFyIiB2YWx1ZT0idmlzaWJsZSIgdHlwZT0ic3RyaW5nIi8+CisgICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgCTwhW0NEQVRBWworICAgICAgICAgICAgLy90aGlzIGluaXRzIHRoZSBpdGVtcworICAgICAgICAgICAgdGhpcy5faW5uZXJsaXN0Ll9pbm4uaW5pdEl0ZW1zKHRoaXMubGlzdEl0ZW1OYW1lKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHRoaXNbIl9tZW51Il0gJiYgdGhpc1siX21lbnUiXVsiX3ByZTEiXSkgeworICAgICAgICAgICAgICAgIHRoaXMuX21lbnUuX3ByZTEuc2V0QXR0cmlidXRlKCdpc0VuYWJsZWQnLGZhbHNlKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9tZW51Ll9uZXh0Mi5zZXRBdHRyaWJ1dGUoJ2lzRW5hYmxlZCcsZmFsc2UpOworICAgICAgICAgICAgICAgIHRoaXMuX21lbnUuX25leHQxLnNldEF0dHJpYnV0ZSgnaXNFbmFibGVkJyxmYWxzZSk7CisgICAgICAgICAgICAgICAgdGhpcy5fbWVudS5fcHJlMi5zZXRBdHRyaWJ1dGUoJ2lzRW5hYmxlZCcsZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICBdXT4KKyAgICA8L2hhbmRsZXI+ICAKKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrZWRJdGVtIiBhcmdzPSJvYmoiID4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICB0aGlzLmFkZFRvU2VsZWN0aW9uKG9iaixmYWxzZSk7IAorICAgICAgICBdXT4KKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJzZWxlY3RBbGwiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgCisgICAgICAgICAgICBpZiAoIXRoaXMubXVsdGlzZWxlY3QpeworICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndhcm4oIkNhbm5vdCBzZWxlY3RBbGwgd2hlbiBtdWx0aXNlbGVjdCBpcyBGQUxTRSIpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRSZWZPYmogPSBuZXcgQXJyYXkoKTsKKyAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkID0gbmV3IEFycmF5KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPHRoaXMucmVuZGVyTGlzdC5sZW5ndGg7aSsrKSB7CisgICAgICAgICAgICAJdGhpcy5yZW5kZXJMaXN0W2ldLml0ZW1TZWxlY3RlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJMaXN0W2ldLmlzc2VsZWN0ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkUmVmT2JqLnB1c2goaSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ0aGlzLl9zZWxlY3RlZFJlZk9iaiBMRU5HVEggIix0aGlzLl9zZWxlY3RlZFJlZk9iai5sZW5ndGgpOworICAgICAgICAKKyAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPHRoaXMuX2lubmVybGlzdC5faW5uLl9pbm4uc3Vidmlld3MubGVuZ3RoO2krKyl7CisgICAgICAgICAgICAJaWYgKHRoaXMuX2lubmVybGlzdC5faW5uLl9pbm4uc3Vidmlld3NbaV0uY2xpY2thYmxlKSB7CisJICAgICAgICAgICAgCXRoaXMuX2lubmVybGlzdC5faW5uLl9pbm4uc3Vidmlld3NbaV0uc2V0QXR0cmlidXRlKCJpdGVtU2VsZWN0ZWQiLHRydWUpOworCQkgICAgICAgICAgICB0aGlzLl9pbm5lcmxpc3QuX2lubi5faW5uLnN1YnZpZXdzW2ldLmlzc2VsZWN0ZWQgPSB0cnVlOworCSAgICAgICAgICAgICAgICB0aGlzLl9pbm5lcmxpc3QuX2lubi5faW5uLnN1YnZpZXdzW2ldLm9ubW91c2VvdXQuc2VuZEV2ZW50KCk7CisJICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkLnB1c2godGhpcy5faW5uZXJsaXN0Ll9pbm4uX2lubi5zdWJ2aWV3c1tpXSk7CisgICAgICAgICAgICAJfQorCSAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJkZWxldGVTZWxlY3RlZCI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAKKwkgICAgICAgIGZ1bmN0aW9uIHNvcnRUYWJsZVBvaW50cyhhLGIpeworCSAgICAgICAgICAgIHZhciBhMSA9IGE7CisJICAgICAgICAgICAgdmFyIGIxID0gYjsKKwkgICAgICAgICAgICAvL19yb290Li8vRGVidWcud3JpdGUoIm5hdGNvbXBhcmU6ICIsYTEsYjEsbmF0Y29tcGFyZShhMSxiMSkpOworCSAgICAgICAgICAgIGlmKGExPT1iMSl7CisJICAgICAgICAgICAgICAgIHJldHVybiAwOworCSAgICAgICAgICAgIH0gZWxzZSBpZihhMT5iMSl7CisJICAgICAgICAgICAgICAgIHJldHVybiAxOworCSAgICAgICAgICAgIH0gZWxzZSB7CisJICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKwkgICAgICAgICAgICB9CisJICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkUmVmT2JqLnNvcnQoc29ydFRhYmxlUG9pbnRzKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImRlbGV0ZVNlbGVjdGVkIix0aGlzLl9zZWxlY3RlZFJlZk9iaik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCItMS0gdGhpcy5yZW5kZXJMaXN0ICIsdGhpcy5yZW5kZXJMaXN0Lmxlbmd0aCk7CisgICAgICAgIAorICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8dGhpcy5fc2VsZWN0ZWRSZWZPYmoubGVuZ3RoO2krKykgeworICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyTGlzdC5zcGxpY2UodGhpcy5fc2VsZWN0ZWRSZWZPYmpbaV0sMSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCItMi0gdGhpcy5yZW5kZXJMaXN0ICIsdGhpcy5yZW5kZXJMaXN0Lmxlbmd0aCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuZGVzZWxlY3RBbGwoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5yZXJlbmRlci5zZW5kRXZlbnQodGhpcyk7CisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iZGVzZWxlY3RBbGwiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgCisgICAgICAgICAgICBpZiAoIXRoaXMubXVsdGlzZWxlY3QpeworICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndhcm4oIkNhbm5vdCBkZXNlbGVjdEFsbCB3aGVuIG11bHRpc2VsZWN0IGlzIEZBTFNFIik7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkUmVmT2JqID0gbmV3IEFycmF5KCk7CisgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZCA9IG5ldyBBcnJheSgpOworICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTx0aGlzLnJlbmRlckxpc3QubGVuZ3RoO2krKykgeworICAgICAgICAgICAgCXRoaXMucmVuZGVyTGlzdFtpXS5pdGVtU2VsZWN0ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB0aGlzLnJlbmRlckxpc3RbaV0uaXNzZWxlY3RlZCA9IGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTx0aGlzLl9pbm5lcmxpc3QuX2lubi5faW5uLnN1YnZpZXdzLmxlbmd0aDtpKyspeworICAgICAgICAgICAgCXRoaXMuX2lubmVybGlzdC5faW5uLl9pbm4uc3Vidmlld3NbaV0uc2V0QXR0cmlidXRlKCJpdGVtU2VsZWN0ZWQiLGZhbHNlKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9pbm5lcmxpc3QuX2lubi5faW5uLnN1YnZpZXdzW2ldLmlzc2VsZWN0ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB0aGlzLl9pbm5lcmxpc3QuX2lubi5faW5uLnN1YnZpZXdzW2ldLm9ubW91c2VvdXQuc2VuZEV2ZW50KCk7CisgICAgICAgICAgICB9CisgICAgICAgIAorICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4gICAgCisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJhZGRUb1NlbGVjdGlvbiIgYXJncz0ib2JqLGZvcmNlTXVsdGlBZGQiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgCisgICAgICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWQhPW51bGwgfHx0aGlzLl9zZWxlY3RlZFJlZk9iaiE9bnVsbCl7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpeworICAgICAgICAgICAgICAgICAgICBpZiAobHouS2V5cy5kb3duS2V5c0FycmF5Lmxlbmd0aD09MCB8fCAKKyAgICAgICAgICAgICAgICAgICAgICAgIChsei5LZXlzLmRvd25LZXlzQXJyYXlbMF0hPTE3ICYmIGx6LktleXMuZG93bktleXNBcnJheVswXSE9MTYpKXsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZm9yY2VNdWx0aUFkZCkgeworCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9uY2xpY2tlZEl0ZW0gRGVzZWxlY3QgQUxMIC0xLSAiLHRoaXMuX3NlbGVjdGVkLmxlbmd0aCk7ICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbmNsaWNrZWRJdGVtIERlc2VsZWN0IEFMTCAtMi0gIix0aGlzLl9zZWxlY3RlZFJlZk9iai5sZW5ndGgpOyAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTx0aGlzLl9zZWxlY3RlZC5sZW5ndGg7aSsrKXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAJdGhpcy5fc2VsZWN0ZWRbaV0uc2V0QXR0cmlidXRlKCJpdGVtU2VsZWN0ZWQiLGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRbaV0uaXNzZWxlY3RlZCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFtpXS5kb0Rlc2VsZWN0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPHRoaXMuX3NlbGVjdGVkUmVmT2JqLmxlbmd0aDtpKyspeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiREVTRUxFQ1QgSVRFTSBJRCAiLHRoaXMuX3NlbGVjdGVkUmVmT2JqW2ldKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJMaXN0W3RoaXMuX3NlbGVjdGVkUmVmT2JqW2ldXS5pdGVtU2VsZWN0ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJMaXN0W3RoaXMuX3NlbGVjdGVkUmVmT2JqW2ldXS5pc3NlbGVjdGVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8vLy8vaWYgKCRkZWJ1ZykgLy9EZWJ1Zy53cml0ZSgib25jbGlja2VkSXRlbSBLZXkgSG9sZCBJVCIpOworICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8dGhpcy5fc2VsZWN0ZWQubGVuZ3RoO2krKyl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkW2ldID09IG9iaikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vLy9pZiAoJGRlYnVnKSAvL0RlYnVnLndyaXRlKCJGb3VuZCBPYmplY3Q6ICIsb2JqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLmlzc2VsZWN0ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIkRFU0VMRUNUIElURU0gSUQgMiAiLHRoaXMuX3NlbGVjdGVkUmVmT2JqW2ldKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJMaXN0W3RoaXMuX3NlbGVjdGVkUmVmT2JqW2ldXS5pc3NlbGVjdGVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy9pZiAoJGRlYnVnKSAvL0RlYnVnLndyaXRlKCJzZW5kIG9ubW91c2VvdXQgVE86ICIsb2JqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqLmRvRGVzZWxlY3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWQuc3BsaWNlKGksMSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkUmVmT2JqLnNwbGljZShpLDEpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJMaXN0W3RoaXMuX3NlbGVjdGVkLml0ZW1JZF0uaXNzZWxlY3RlZCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZC5pc3NlbGVjdGVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkLmRvRGVzZWxlY3QoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vLy8vL2lmICgkZGVidWcpIC8vRGVidWcud3JpdGUoIm9uY2xpY2tlZEl0ZW0gU2V0IElUIik7CisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiU0VMRUNUIElURU0gSUQgIixvYmouaXRlbUlkKTsKKyAgICAgICAgICAgIHRoaXMucmVuZGVyTGlzdFtvYmouaXRlbUlkXS5pc3NlbGVjdGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIG9iai5pc3NlbGVjdGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIG9iai5vbm1vdXNlb3V0LnNlbmRFdmVudCgpOworICAgICAgICAgICAgaWYgKHRoaXMubXVsdGlzZWxlY3QpeworICAgICAgICAgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZD09bnVsbCl7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkID0gbmV3IEFycmF5KCk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkUmVmT2JqID0gbmV3IEFycmF5KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICgobHouS2V5cy5kb3duS2V5c0FycmF5Lmxlbmd0aD09MSAmJiAKKyAgICAgICAgICAgICAgICAgICAgKGx6LktleXMuZG93bktleXNBcnJheVswXT09MTcgfHwgbHouS2V5cy5kb3duS2V5c0FycmF5WzBdPT0xNikpCisgICAgICAgICAgICAgICAgICAgIHx8IGZvcmNlTXVsdGlBZGQpeworICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZC5wdXNoKG9iaik7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkUmVmT2JqLnB1c2gob2JqLml0ZW1JZCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWQgPSBuZXcgQXJyYXkoKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRSZWZPYmogPSBuZXcgQXJyYXkoKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWQucHVzaChvYmopOworICAgICAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFJlZk9iai5wdXNoKG9iai5pdGVtSWQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWQgPSBvYmo7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+ICAgIAorICAgIAorICAgIDwhLS0KKyAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrZWRJdGVtIiBhcmdzPSJvYmoiID4KKyAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWQgIT0gbnVsbCkgeworICAgICAgICAgICAgdGhpcy5zZWxlY3RlZC5kZXNlbGVjdCgpOworICAgICAgICB9CisgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBvYmo7CisgICAgICAgIHRoaXMuc2VsZWN0ZWQuc2VsZWN0KCk7CisgICAgPC9oYW5kbGVyPgorICAgICAtLT4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImNhbGxmaXJzdCI+CisgICAgICAgIHRoaXMuc3RhcnQgPSAwOworICAgICAgICB0aGlzLm9uY2FsbG5leHQuc2VuZEV2ZW50KCk7CisgICAgICAgIHRoaXMub25sb2FkLnNlbmRFdmVudCgpOworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0icmVsb2FkIj4KKyAgICAJdGhpcy5vbmNhbGxuZXh0LnNlbmRFdmVudCgpOworICAgICAgICB0aGlzLm9ubG9hZC5zZW5kRXZlbnQoKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImNhbGxsYXN0Ij4KKyAgICAJdmFyIG5ld01heFBhZ2VzID0gTWF0aC5mbG9vcih0aGlzLnJlY29yZHMvdGhpcy5zdGVwKTsKKyAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImNhbGxsYXN0IDEgIixuZXdNYXhQYWdlcyk7CisgICAgICAgIHRoaXMuc3RhcnQgPSBuZXdNYXhQYWdlcyp0aGlzLnN0ZXA7CisgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJjYWxsbGFzdCAyICIsdGhpcy5zdGFydCk7CisgICAgICAgIGlmICh0aGlzLnN0YXJ0ID09IHRoaXMucmVjb3JkcykgeworICAgICAgICAJdGhpcy5zdGFydCA9IHRoaXMucmVjb3Jkcy10aGlzLnN0ZXA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImNhbGxsYXN0IDMgIix0aGlzLnN0YXJ0KTsKKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImNhbGxsYXN0IDQgIix0aGlzLnJlY29yZHMpOworICAgICAgICB0aGlzLm9uY2FsbG5leHQuc2VuZEV2ZW50KCk7CisgICAgICAgIHRoaXMub25sb2FkLnNlbmRFdmVudCgpOworICAgICAgICAKKyAgICAgICAgLy90aGlzLnN0YXJ0ID0gdGhpcy5yZWNvcmRzLXRoaXMuc3RlcDsKKyAgICAgICAgLy90aGlzLm9uY2FsbG5leHQuc2VuZEV2ZW50KCk7CisgICAgICAgIC8vdGhpcy5vbmxvYWQuc2VuZEV2ZW50KCk7CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJjYWxsbmV4dCI+CisgICAgICAgIGlmICh0aGlzLnJlY29yZHM+KHRoaXMuc3RhcnQrdGhpcy5zdGVwKSl7CisgICAgICAgICAgICB0aGlzLnN0YXJ0Kz10aGlzLnN0ZXA7CisgICAgICAgIH0KKyAgICAgICAgdGhpcy5vbmNhbGxuZXh0LnNlbmRFdmVudCgpOworICAgICAgICB0aGlzLm9ubG9hZC5zZW5kRXZlbnQoKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImNhbGxwcmUiPgorICAgICAgICBpZiAodGhpcy5zdGFydD4wKXsKKyAgICAgICAgICAgIHRoaXMuc3RhcnQtPXRoaXMuc3RlcDsKKyAgICAgICAgfQorICAgICAgICB0aGlzLm9uY2FsbHByZS5zZW5kRXZlbnQoKTsKKyAgICAgICAgdGhpcy5vbmxvYWQuc2VuZEV2ZW50KCk7CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJpbml0VmFsdWVzIiBhcmdzPSJyZWMiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIHRoaXMucmVjb3JkcyA9IHJlYzsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHRoaXMuc3RhcnQgPT0gMCkgeworICAgICAgICAgICAgICAgIHRoaXMuX21lbnUuX3ByZTEuc2V0QXR0cmlidXRlKCdpc0VuYWJsZWQnLGZhbHNlKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGhpcy5fbWVudS5fcHJlMS5zZXRBdHRyaWJ1dGUoJ2lzRW5hYmxlZCcsdHJ1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICgodGhpcy5zdGFydCt0aGlzLnN0ZXApID49IHRoaXMucmVjb3JkcykgeworICAgICAgICAgICAgICAgIHRoaXMuX21lbnUuX25leHQyLnNldEF0dHJpYnV0ZSgnaXNFbmFibGVkJyxmYWxzZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRoaXMuX21lbnUuX25leHQyLnNldEF0dHJpYnV0ZSgnaXNFbmFibGVkJyx0cnVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHRoaXMucmVjb3Jkcz4odGhpcy5zdGFydCt0aGlzLnN0ZXApKXsKKyAgICAgICAgICAgICAgICBpZiAodGhpc1siX21lbnUiXSkgdGhpcy5fbWVudS5fbmV4dDEuc2V0QXR0cmlidXRlKCdpc0VuYWJsZWQnLHRydWUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAodGhpc1siX21lbnUiXSkgdGhpcy5fbWVudS5fbmV4dDEuc2V0QXR0cmlidXRlKCdpc0VuYWJsZWQnLGZhbHNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh0aGlzLnN0YXJ0PjApeworICAgICAgICAgICAgICAgIGlmICh0aGlzWyJfbWVudSJdKSB0aGlzLl9tZW51Ll9wcmUyLnNldEF0dHJpYnV0ZSgnaXNFbmFibGVkJyx0cnVlKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKHRoaXNbIl9tZW51Il0pIHRoaXMuX21lbnUuX3ByZTIuc2V0QXR0cmlidXRlKCdpc0VuYWJsZWQnLGZhbHNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHRoaXMuc2hvd1RvcEJhcikgeworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHZhciBtYXhSZWNvcmQgPSB0aGlzLnN0YXJ0K3RoaXMuc3RlcDsKKyAgICAgICAgICAgICAgICBpZiAoKHRoaXMuc3RhcnQrdGhpcy5zdGVwKSA+IHRoaXMucmVjb3JkcykgeworICAgICAgICAgICAgICAgICAgICBtYXhSZWNvcmQgPSB0aGlzLnJlY29yZHM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHRoaXMuX3JlY29yZHMuc2V0QXR0cmlidXRlKCJ0ZXh0IiwodGhpcy5zdGFydCsxKSArICcgLSAnICsgbWF4UmVjb3JkICsgJyB2b24gJyArIHRoaXMucmVjb3Jkcyk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHRoaXMuX3JlY29yZHMuc2V0QXR0cmlidXRlKCJ0ZXh0IixyZWMpOworICAgICAgICAgICAgfQorICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImFkZEhlYWRlckl0ZW0iIGFyZ3M9ImxhYmVsaWQsd2lkdGgiID4KKyAgICAgICAgbmV3IGx6LnR1cm5vdmVybGlzdGhlYWRlcml0ZW1SZXNpemUodGhpcy5faW5uZXJsaXN0aGVhZC5faW5uLHsKKyAgICAgICAgICAgICAgICBsYWJlbGlkOmxhYmVsaWQsd2lkdGg6d2lkdGgsCisgICAgICAgICAgICAgICAgc3Vidmlld3NpZDp0aGlzLl9pbm5lcmxpc3RoZWFkLl9pbm4uc3Vidmlld3MubGVuZ3RoCisgICAgICAgICAgICB9KTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImNsZWFySGVhZCI+CisgICAgICAgIGZvciAodmFyIGVnIGluIHRoaXMuX2lubmVybGlzdGhlYWQuX2lubi5zdWJ2aWV3cykgeworICAgICAgICAgICAgdGhpcy5faW5uZXJsaXN0aGVhZC5faW5uLnN1YnZpZXdzW2VnXS5kZXN0cm95KCk7CisgICAgICAgIH0KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImFkZEhlYWRlckl0ZW1CeVRleHQiIGFyZ3M9InpUZXh0LHdpZHRoIiA+CisgICAgICAgIG5ldyBsei50dXJub3Zlcmxpc3RoZWFkZXJpdGVtUmVzaXplKHRoaXMuX2lubmVybGlzdGhlYWQuX2lubix7CisgICAgICAgICAgICAgICAgdGV4dDp6VGV4dCx3aWR0aDp3aWR0aCwKKyAgICAgICAgICAgICAgICBzdWJ2aWV3c2lkOnRoaXMuX2lubmVybGlzdGhlYWQuX2lubi5zdWJ2aWV3cy5sZW5ndGgKKyAgICAgICAgICAgIH0pOworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iYWRkSGVhZGVySXRlbU9yZGVyZWQiIGFyZ3M9ImxhYmVsaWQsd2lkdGgsb3JkZXJCeSxhc2MsaXNTZWxlY3RlZCIgPgorICAgIAlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidHVybk92ZXJMaXN0SGVhZGVySXRlbU9yZGVyZWQgIixsYWJlbGlkLHdpZHRoLG9yZGVyQnksYXNjLGlzU2VsZWN0ZWQpOworICAgICAgICBuZXcgbHoudHVybk92ZXJMaXN0SGVhZGVySXRlbU9yZGVyZWQodGhpcy5faW5uZXJsaXN0aGVhZC5faW5uLHsKKyAgICAgICAgICAgICAgICBsYWJlbGlkOmxhYmVsaWQsd2lkdGg6d2lkdGgsCisgICAgICAgICAgICAgICAgb3JkZXJCeTpvcmRlckJ5LGFzYzphc2MsaXNTZWxlY3RlZDppc1NlbGVjdGVkLAorICAgICAgICAgICAgICAgIHN1YnZpZXdzaWQ6dGhpcy5faW5uZXJsaXN0aGVhZC5faW5uLnN1YnZpZXdzLmxlbmd0aAorICAgICAgICAgICAgfSk7CisgICAgPC9tZXRob2Q+IAorICAgIAorICAgIDxtZXRob2QgbmFtZT0ic2V0U2VsZWN0aW9uT3JkZXIiIGFyZ3M9Im9yZGVyQnksYXNjIj4KKyAgICAJPCFbQ0RBVEFbCisgICAgCQkKKyAgICAJCWZvciAodmFyIGk9MDtpPHRoaXMuX2lubmVybGlzdGhlYWQuX2lubi5zdWJ2aWV3cy5sZW5ndGg7aSsrKSB7CisgICAgCQkJCisgICAgCQkJaWYgKHRoaXMuX2lubmVybGlzdGhlYWQuX2lubi5zdWJ2aWV3c1tpXVsib3JkZXJCeSJdICYmIAorICAgIAkJCQkJdGhpcy5faW5uZXJsaXN0aGVhZC5faW5uLnN1YnZpZXdzW2ldLm9yZGVyQnkgPT0gb3JkZXJCeSkgeworICAgIAkJCQkKKyAgICAJCQkJaWYgKHRoaXMuY3VycmVudFNlbGVjdGVkT3JkZXIgIT0gbnVsbCkgeworICAgIAkJCQkJdGhpcy5jdXJyZW50U2VsZWN0ZWRPcmRlci5pc1NlbGVjdGVkID0gZmFsc2U7CisgICAgCQkJCX0KKyAgICAJCQkJCisJCQkJCXRoaXMuX2lubmVybGlzdGhlYWQuX2lubi5zdWJ2aWV3c1tpXS5pc1NlbGVjdGVkID0gdHJ1ZTsKKyAgICAJCQkJdGhpcy5faW5uZXJsaXN0aGVhZC5faW5uLnN1YnZpZXdzW2ldLmFzYyA9ICFhc2M7CisgICAgCQkJCQorICAgIAkJCQl0aGlzLl9pbm5lcmxpc3RoZWFkLl9pbm4uc3Vidmlld3NbaV0ub25jbGljay5zZW5kRXZlbnQoKTsKKyAgICAJCQkJCisgICAgCQkJCXJldHVybjsKKyAgICAJCQkJCisgICAgCQkJfQorICAgIAkJCQorICAgIAkJfQorICAgIAkKKyAgICAJXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJzZW5kSW5pdGlhbFdpZHRoVXBkYXRlIj4KKyAgICAgICAgZm9yICh2YXIgZWcgaW4gdGhpcy5faW5uZXJsaXN0aGVhZC5faW5uLnN1YnZpZXdzKSB7CisgICAgICAgICAgICB0aGlzLl9pbm5lcmxpc3RoZWFkLl9pbm4uc3Vidmlld3NbZWddLm9ud2lkdGguc2VuZEV2ZW50KHRoaXMuX2lubmVybGlzdGhlYWQuX2lubi5zdWJ2aWV3c1tlZ10ud2lkdGgpOworICAgICAgICB9CisgICAgPC9tZXRob2Q+IAorICAgIAorICAgIDxtZXRob2QgbmFtZT0ic2VuZFdpZHRoVXBkYXRlIiBhcmdzPSJ3LHN1YnZpZXdzaWQiID4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgIC8vLy9EZWJ1Zy53cml0ZSh3LHN1YnZpZXdzaWQsdGhpcy5faW5uZXJsaXN0Ll9pbm4pOworICAgICAgICBmb3IgKHZhciBpPTA7aTx0aGlzLl9pbm5lcmxpc3QuX2lubi5faW5uLnN1YnZpZXdzLmxlbmd0aDtpKyspeworICAgICAgICAgICAgdGhpcy5faW5uZXJsaXN0Ll9pbm4uX2lubi5zdWJ2aWV3c1tpXS5zdWJ2aWV3c1tzdWJ2aWV3c2lkXS5zZXRBdHRyaWJ1dGUoJ3dpZHRoJyx3KzEpOworICAgICAgICB9CisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iZ2V0TGlzdEl0ZW1OdW1iZXIiPgorICAgICAgICByZXR1cm4gdGhpcy5faW5uZXJsaXN0Ll9pbm4uX2lubi5zdWJ2aWV3cy5sZW5ndGg7CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJnZXRJdGVtQnlOdW1iZXIiIGFyZ3M9Iml0ZW1ObyI+CisgICAgICAgIDwhW0NEQVRBWworCSAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImdldEl0ZW1CeU51bWJlciIsaXRlbU5vKTsKKwkgICAgICAgIGZvciAodmFyIGk9MDtpPHRoaXMuX2lubmVybGlzdC5faW5uLl9pbm4uc3Vidmlld3MubGVuZ3RoO2krKyl7CisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImdldEl0ZW1CeU51bWJlciA6OiAiLHRoaXMuX2lubmVybGlzdC5faW5uLl9pbm4uc3Vidmlld3NbaV0uaXRlbUlkKTsKKwkgICAgICAgICAgICBpZiAodGhpcy5faW5uZXJsaXN0Ll9pbm4uX2lubi5zdWJ2aWV3c1tpXS5pdGVtSWQgPT0gaXRlbU5vKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLl9pbm5lcmxpc3QuX2lubi5faW5uLnN1YnZpZXdzW2ldOworICAgICAgICAgICAgICAgIH0KKwkgICAgICAgIH0KKyAgICAgICAgXV0+CisgICAgICAgIHJldHVybiB0aGlzLl9pbm5lcmxpc3QuX2lubi5faW5uLnN1YnZpZXdzW2l0ZW1Ob107CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJjbGVhckxpc3QiPgorICAgICAgICB0aGlzLl9pbm5lcmxpc3QuX2lubi5faW5uLmRlc3Ryb3koKTsKKyAgICAgICAgbmV3IGx6LmlubmVyTGlzdFBhZ2luZ0NvbnRlbnQodGhpcy5faW5uZXJsaXN0Ll9pbm4se25hbWU6J19pbm4nfSk7CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJpbml0SXRlbXNCeVN1Ykl0ZW1ObyIgYXJncz0iaXRlbU5hbWUsbm9TdWJJdGVtcyxzdWJJdGVtQ2xhc3NOYW1lIj4KKyAgICAgICAgdGhpcy5faW5uZXJsaXN0LmluaXRJdGVtc0J5U3ViSXRlbU5vKGl0ZW1OYW1lLG5vU3ViSXRlbXMsc3ViSXRlbUNsYXNzTmFtZSk7CisgICAgPC9tZXRob2Q+CisKKyAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IiR7IHBhcmVudC5saXN0TGFiZWxJZCB9IiB2aXNpYmlsaXR5PSIkb25jZXsgKHBhcmVudC5zaG93VG9wQmFyKSA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nIH0iCisgICAgICAgICAgICAgICAgICAgICAgIHk9IjQiIGZvbnRzaXplPSIxMCIgeD0iMiIgLz4KKyAgICAgICAgICAgICAgICAgICAgICAgCisgICAgPHRleHQgZm9udHNpemU9IjEwIiB5PSI0IiB4PSIkb25jZXsgKCFwYXJlbnQuc2hvd1RvcEJhcikgPyA2NCtwYXJlbnQubWVudUJhclhJbmRlbnQgOiAyK3BhcmVudC5tZW51QmFyWEluZGVudCB9IgorICAgICAgICAgIG5hbWU9Il9yZWNvcmRzIiByZXNpemU9InRydWUiIHZpc2liaWxpdHk9IiRvbmNleyAocGFyZW50LnNob3dUb3BCYXIpID8gJ3Zpc2libGUnIDogJ2hpZGRlbicgfSIgLz4KKyAgICAKKyAgICA8IS0tID09PT09PT09PSAgTGlzdCBIZWFkZXIgYXJlYSAgPT09PT09PT09LS0+CisgICAgPHZpZXcgbmFtZT0iX2lubmVybGlzdGhlYWQiIGhlaWdodD0iJHsgcGFyZW50LmhlYWRlckhlaWdodCB9IiB3aWR0aD0iJHsgcGFyZW50LndpZHRoIH0iIHk9IiRvbmNleyBwYXJlbnQuaGVhZGVySGVpZ2h0ICsgMiB9IiBjbGlwPSJ0cnVlIj4KKyAgICAgICAgPHZpZXcgbmFtZT0iX2lubiIgeD0iJHsgcGFyZW50LnBhcmVudC5faW5uZXJsaXN0Ll9pbm4ueCB9IiBsYXlvdXQ9ImF4aXM6eDtzcGFjaW5nOjAiIC8+CisgICAgPC92aWV3PiAKKyAgICAKKyAgICA8IS0tID09PT09PT09PSAgTGlzdCBDb250ZW50cyBhcmVhICA9PT09PT09PT0tLT4gICAKKyAgICA8bGlzdFBhZ2VkQ29udGVudCBuYW1lPSJfaW5uZXJsaXN0IiBoZWlnaHQ9IiR7IHBhcmVudC5oZWlnaHQtMjItcGFyZW50LmhlYWRlckhlaWdodCB9IiBiZ2NvbG9yPSIweEZGRkZGRiIKKyAgICAgICAgICB3aWR0aD0iJHsgcGFyZW50LndpZHRoIH0iIHk9IiRvbmNleyBwYXJlbnQuaGVhZGVySGVpZ2h0ICsgMjIgfSIgc2hvd0hTY3JvbGxiYXI9IiRvbmNleyBwYXJlbnQuc2hvd0hTY3JvbGxiYXIgfSIKKyAgICAgICAgICBpdGVtSGVpZ2h0PSIkb25jZXsgcGFyZW50Lml0ZW1IZWlnaHQgfSIgLz4KKzwvY2xhc3M+CisJCis8IS0tLSBjb21tb24gVHVybk92ZXJMaXN0IHZpZXcgY2xhc3MuIC0tPgorPGNsYXNzIG5hbWU9InR1cm5PdmVyTGlzdFBhZ2VkIiBleHRlbmRzPSJiYXNldHVybk92ZXJMaXN0UGFnZWQiPgorCisgICAgPCEtLSA9PT09PT09PT0gIENvbnRyb2wgYXJlYSAgPT09PT09PT09LS0+CisgICAgPHZpZXcgbmFtZT0iX21lbnUiIGFsaWduPSJyaWdodCIgeT0iMiIgd2lkdGg9IjE4MCIKKyAgICAgICAgICB2aXNpYmlsaXR5PSIkb25jZXsgKHBhcmVudC5zaG93VG9wQmFyKSA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nIH0iPgorICAgIAkKKwkgICAgPCEtLSAzNjg6Z290byBmaXJzdCAtLT4KKwkgICAgPGJsdWVCdXR0b24gbmFtZT0iX3ByZTEiIHk9IjAiIHg9IjAiIHJlc291cmNlSXRlbT0ic3RlcF9iYWNrX3R3b19hcnJvdyIgCisJCQkJCXhfaW5zZXRSZXNvdXJjZT0iMiIgeV9pbnNldFJlc291cmNlPSIyIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiCisJCQkJd2lkdGhfaW5zZXRSZXNvdXJjZT0iMTYiIGhlaWdodF9pbnNldFJlc291cmNlPSIxNiI+CisJCQk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKwkJCQlwYXJlbnQucGFyZW50LmNhbGxmaXJzdCgpOworCSAgICAgICAgPC9oYW5kbGVyPgorCSAgICAgICAgPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSIzNjgiIC8+CisJICAgIDwvYmx1ZUJ1dHRvbj4KKwkKKwkgICAgPCEtLSAzNjk6Z290byBwcmV2aW91cyAtLT4KKwkgICAgPGJsdWVCdXR0b24gbmFtZT0iX3ByZTIiIHk9IjAiIHg9IjIwIiByZXNvdXJjZUl0ZW09InN0ZXBfYmFja19hcnJvdyIgCisJCQkJCXhfaW5zZXRSZXNvdXJjZT0iMiIgeV9pbnNldFJlc291cmNlPSIyIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiCisJCQkJd2lkdGhfaW5zZXRSZXNvdXJjZT0iMTYiIGhlaWdodF9pbnNldFJlc291cmNlPSIxNiI+CisJCQk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKwkJCQlwYXJlbnQucGFyZW50LmNhbGxwcmUoKTsKKwkgICAgICAgIDwvaGFuZGxlcj4KKwkgICAgICAgIDxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iMzY5IiAvPgorCSAgICA8L2JsdWVCdXR0b24+CisgICAgCTxyZXNldENvbWJvYm94IG5hbWU9Il9zdGVwIiB3aWR0aD0iMTAwIiB4PSI0MCIgZWRpdGFibGU9ImZhbHNlIiBmb250c2l6ZT0iMTAiIGhlaWdodD0iMjAiID4KKyAgICAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ic2VuZEV2ZW50VG9SZWxvYWQiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICAgICAgICAgIDx0ZXh0bGlzdGl0ZW0gdmFsdWU9IjEwIiB0ZXh0PSIxMCIgLz4KKyAgICAgICAgICAgIDx0ZXh0bGlzdGl0ZW0gdmFsdWU9IjI1IiB0ZXh0PSIyNSIgLz4KKyAgICAgICAgICAgIDx0ZXh0bGlzdGl0ZW0gdmFsdWU9IjUwIiB0ZXh0PSI1MCIgLz4KKyAgICAgICAgICAgIDx0ZXh0bGlzdGl0ZW0gdmFsdWU9Ijc1IiB0ZXh0PSI3NSIgLz4KKyAgICAgICAgICAgIDx0ZXh0bGlzdGl0ZW0gdmFsdWU9IjEwMCIgdGV4dD0iMTAwIiAvPgorICAgICAgICAgICAgPHRleHRsaXN0aXRlbSB2YWx1ZT0iMjAwIiB0ZXh0PSIyMDAiIC8+CisgICAgICAgICAgICA8dGV4dGxpc3RpdGVtIHZhbHVlPSI1MDAiIHRleHQ9IjUwMCIgLz4KKyAgICAgICAgICAgIDx0ZXh0bGlzdGl0ZW0gdmFsdWU9IjEwMDAiIHRleHQ9IjEwMDAiIC8+CisgICAgICAgICAgICA8dGV4dGxpc3RpdGVtIHZhbHVlPSIyNTAwIiB0ZXh0PSIyNTAwIiAvPgorICAgICAgICAgICAgPHRleHRsaXN0aXRlbSB2YWx1ZT0iNTAwMCIgdGV4dD0iNTAwMCIgLz4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uc2VsZWN0Ij4KKyAgICAgICAgICAgICAgICBpZiAodGhpcy5zZW5kRXZlbnRUb1JlbG9hZCl7IAorICAgICAgICAgICAgICAgIAlwYXJlbnQucGFyZW50LnN0YXJ0ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50LnBhcmVudC5zZXRBdHRyaWJ1dGUoJ3N0ZXAnLE51bWJlcih0aGlzLmdldFZhbHVlKCkpKTsKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50LnBhcmVudC5vbmxvYWQuc2VuZEV2ZW50KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEl0ZW0oU3RyaW5nKHBhcmVudC5wYXJlbnQuc3RlcCkpOworICAgICAgICAgICAgICAgIHRoaXMuc2VuZEV2ZW50VG9SZWxvYWQgPSB0cnVlOworICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8L3Jlc2V0Q29tYm9ib3g+CisgICAgICAgIAorICAgICAgICA8IS0tIDM3MDpnb3RvIG5leHQgLS0+CisgICAgICAgIDxibHVlQnV0dG9uIG5hbWU9Il9uZXh0MSIgeT0iMCIgeD0iMTQwIiByZXNvdXJjZUl0ZW09InN0ZXBfZndkX2Fycm93IiAKKwkJCQkJeF9pbnNldFJlc291cmNlPSIyIiB5X2luc2V0UmVzb3VyY2U9IjIiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIKKwkJCQl3aWR0aF9pbnNldFJlc291cmNlPSIxNiIgaGVpZ2h0X2luc2V0UmVzb3VyY2U9IjE2Ij4KKwkJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorCQkJCXBhcmVudC5wYXJlbnQuY2FsbG5leHQoKTsKKwkgICAgICAgIDwvaGFuZGxlcj4KKwkgICAgICAgIDxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iMzcwIiAvPgorCSAgICA8L2JsdWVCdXR0b24+CisJCQorCSAgICA8IS0tIDM3MTpnb3RvIGxhc3QgLS0+CisJICAgIDxibHVlQnV0dG9uIG5hbWU9Il9uZXh0MiIgeT0iMCIgeD0iMTYwIiByZXNvdXJjZUl0ZW09InN0ZXBfZndkX3R3b19hcnJvdyIgCisJCQkJCXhfaW5zZXRSZXNvdXJjZT0iMiIgeV9pbnNldFJlc291cmNlPSIyIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiCisJCQkJd2lkdGhfaW5zZXRSZXNvdXJjZT0iMTYiIGhlaWdodF9pbnNldFJlc291cmNlPSIxNiI+CisJCQk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKwkJCQlwYXJlbnQucGFyZW50LmNhbGxsYXN0KCk7CisJICAgICAgICA8L2hhbmRsZXI+CisJICAgICAgICA8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IjM3MSIgLz4KKwkgICAgPC9ibHVlQnV0dG9uPgorCQkKKwkJPHZpZXcgd2lkdGg9IjIiIC8+CisgICAgPC92aWV3PgorICAgIAorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3VwZGF0ZWNoZWNrYm94Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy91cGRhdGVjaGVja2JveC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTI1OTE2MQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy91cGRhdGVjaGVja2JveC5sengKQEAgLTAsMCArMSwzOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9InVwZGF0ZWNoZWNrYm94IiBleHRlbmRzPSJjaGVja2JveCIgc3R5bGU9ImNvbXBvbmVudFN0eWxlIj4KKyAgICA8YXR0cmlidXRlIG5hbWU9InR2YWx1ZSIgdHlwZT0iYm9vbGVhbiIgdmFsdWU9ImZhbHNlIi8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJzZW5kY2hhbmdlIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+ICAgICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9uYmx1ciI+CisgICAgICAgIGlmICh0aGlzLnBhcmVudC5zZW5kY2hhbmdlKSB0aGlzLnBhcmVudC5zZW5kY2hhbmdlKHRoaXMsdHZhbHVlLHRoaXMuZ2V0VmFsdWUoKSk7IAorICAgIDwvaGFuZGxlcj4gIAorPC9jbGFzcz4KKworPGNsYXNzIG5hbWU9ImxhYmVsQ2hlY2tib3giIGV4dGVuZHM9ImNoZWNrYm94IiBzdHlsZT0iY29tcG9uZW50U3R5bGUiIGZvbnRzaXplPSIxMSIgPgorCTxhdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZCIgdHlwZT0ibnVtYmVyIiBzZXR0ZXI9InNldExhYmVsSWQobGFiZWxpZCkiIC8+CisJPG1ldGhvZCBuYW1lPSJzZXRMYWJlbElkIiBhcmdzPSJfbGFiZWxpZCIgPgorCQl0aGlzLmxhYmVsaWQgPSBfbGFiZWxpZDsKKwkJdGhpcy5zZXRBdHRyaWJ1dGUoJ3RleHQnLGNhbnZhcy5nZXRMYWJlbE5hbWUodGhpcy5sYWJlbGlkKSk7CisJPC9tZXRob2Q+Cis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvdXBsb2FkL2ZpbGVVcGxvYWQubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3VwbG9hZC9maWxlVXBsb2FkLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDNjNDY0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3VwbG9hZC9maWxlVXBsb2FkLmx6eApAQCAtMCwwICsxLDE3MyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKyAKKyAJPGNsYXNzIG5hbWU9ImZpbGVVcGxvYWQiPgorIAkKKyAJCTwhLS0gIFNob3cgYWxsIERvY3VtZW50cyBpbiBGaWxlQnJvd3NlciAtLT4KKyAJCTxhdHRyaWJ1dGUgbmFtZT0iaXNPbmx5SW1hZ2UiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAJCQorIAkJPCEtLSBTaG93IG9ubHkgUG93ZXJQb2ludCBQcmVzZW50YXRpb25zIGluIEZpbGVCcm93c2VyIC0tPgorIAkJPGF0dHJpYnV0ZSBuYW1lPSJpc09ubHlQcHQiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAJCQorIAkJPCEtLSBTaG93IG9ubHkgWE1MIEZpbGVzIGluIEZpbGVCcm93c2VyIC0tPgorIAkJPGF0dHJpYnV0ZSBuYW1lPSJpc09ubHlYbWwiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAJCQorIAkJPCEtLSBTaG93IG9ubHkgWklQIEZpbGVzIGluIEZpbGVCcm93c2VyIC0tPgorIAkJPGF0dHJpYnV0ZSBuYW1lPSJpc09ubHlaaXAiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAJCQorIAkJPCEtLSBTaG93IG9ubHkgSW1hZ2VzIEZpbGVzIGluIEZpbGVCcm93c2VyIC0tPgorIAkJPGF0dHJpYnV0ZSBuYW1lPSJpc09ubHlQcm9maWxlIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgICAgIAorICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImZyIiB2YWx1ZT0ibnVsbCIgLz4KKyAJCSAJCQorCQk8aGFuZGxlciBuYW1lPSJvbmluaXQiIGFyZ3M9Imludm9rZXIiPgorCQk8IVtDREFUQVsKKwkJCXRoaXMuZnIgPSBuZXcgZmxhc2gubmV0LkZpbGVSZWZlcmVuY2UoKTsJCisgICAgCQl0aGlzLmZyLm9uSFRUUEVycm9yID0gZnVuY3Rpb24oZnIsIGh0dHBFcnJvcil7CisgICAgICAgICAgICAgICAgdmFyIHQgPSBfcm9vdDsKKyAgICAgICAgICAgIAlpZiAoJGRlYnVnKSB0LkRlYnVnLndyaXRlKCdvbkhUVFBFcnJvciBmdW5jdGlvbjogJyArIGh0dHBFcnJvcik7CisgICAgICAgICAgICAJbmV3IGx6LmVycm9yUG9wdXAoY2FudmFzLHtlcnJvcjonRXJyMjogJytodHRwRXJyb3J9KTsKKwkJCX0KKwkJCXRoaXMuZnIub25JT0Vycm9yID0gZnVuY3Rpb24oZnIpeworCQkJCXZhciB0ID0gX3Jvb3Q7CisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgdC5EZWJ1Zy53cml0ZS53cml0ZSgnb25JT0Vycm9yIGZ1bmN0aW9uJyk7CisJCQkJbmV3IGx6LmVycm9yUG9wdXAoY2FudmFzLHtlcnJvcjonb25JT0Vycm9yIGludm9rZWQgJ30pOworCQkJfQorCQkJZnVuY3Rpb24gY2FsbGJhY2tGdW5jdGlvbiAoIGUgKSB7CisJCQkJdmFyIHQgPSBfcm9vdDsKKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSB0LkRlYnVnLndyaXRlKCBlLmRhdGEgKTsKKwkJCX0JCQorCQkJdGhpcy5mci5vblNlY3VyaXR5RXJyb3IgPSBmdW5jdGlvbihmciwgZXJyb3JTdHJpbmcpeworCQkJCXZhciB0ID0gX3Jvb3Q7CisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgdC5EZWJ1Zy53cml0ZSgnb25TZWN1cml0eUVycm9yIGZ1bmN0aW9uOiAnICsgZXJyb3JTdHJpbmcpOworICAgICAgICAgICAgCW5ldyBsei5lcnJvclBvcHVwKGNhbnZhcyx7ZXJyb3I6J0VycjI6ICcrZXJyb3JTdHJpbmd9KTsKKwkJCX0KKwkJCXRoaXMuZnIuYWRkTGlzdGVuZXIoaW52b2tlciwgY2FsbGJhY2tGdW5jdGlvbik7CisJCV1dPgorCQk8L2hhbmRsZXI+CisKKwkJPG1ldGhvZCBuYW1lPSJicm93c2UiPgorCQk8IVtDREFUQVsJCisJCQl2YXIgemlwRXh0ID0gIiouemlwIgorCQkJCSwgcHJvZmlsZUV4dCA9ICIqLnBzZDsqLnRpZmY7Ki5ibXA7Ki5zdmc7Ki5kcHg7Ki5leHI7Ki5qcGc7Ki5qcGVnOyouZ2lmOyoucG5nIgorCQkJCSwgcHB0RXh0ID0gIioucHB0Oyoub2RwOyIKKwkJCQksIGRvY0V4dCA9IHBwdEV4dCArICI7Ki50eHQ7Ki5wcHR4Oyoub2R0Oyoud3BkOyouZG9jOyouZG9jeDsqLnJ0ZjsqLm9kczsqLnN4YzsqLnhsczsqLnhsc3g7Ki5zeGk7Ki5wZGYiCisJCQkJLCB2aWRFeHQgPSAiKi5hdmk7Ki5tb3Y7Ki5mbHY7Ki5tcDQiCisJCQkJLCBpbWdFeHQgPSBwcm9maWxlRXh0ICsgIjsqLnRnYTsqLnhjZjsqLndwZzsqLmljbzsqLnR0ZjsqLnBjZDsqLnBjZHM7Ki5wcyIKKwkJCQksIGFsbEV4dCA9IGRvY0V4dCArICI7IiArIHZpZEV4dCArICI7IiArIGltZ0V4dDsKKworCQkJaWYgKHRoaXMuaXNPbmx5WmlwKSB7CisJCQkJCisJCQkJdmFyIGFsbFR5cGVzID0gbmV3IEFycmF5KCk7CisJCQkJdmFyIGltYWdlVHlwZXMgPSBuZXcgT2JqZWN0KCk7CisJCQkJaW1hZ2VUeXBlcy5kZXNjcmlwdGlvbiA9ICJaSVAgKCouemlwKSI7CisJCQkJaW1hZ2VUeXBlcy5leHRlbnNpb24gPSB6aXBFeHQ7CisJCQkJYWxsVHlwZXMucHVzaChpbWFnZVR5cGVzKTsgCQkJCQorCQkJCWZyLmJyb3dzZShhbGxUeXBlcyk7CisJCQkJCisJCQl9IGVsc2UgaWYodGhpcy5pc09ubHlQcm9maWxlKXsJCisJCQkJdmFyIGFsbFR5cGVzID0gbmV3IEFycmF5KCk7CisJCQkJdmFyIGltYWdlVHlwZXMgPSBuZXcgT2JqZWN0KCk7CisJCQkJaW1hZ2VUeXBlcy5kZXNjcmlwdGlvbiA9ICJBbGxvd2VkIEZpbGVzICgiICsgcHJvZmlsZUV4dCArICIpIjsKKwkJCQlpbWFnZVR5cGVzLmV4dGVuc2lvbiA9IHByb2ZpbGVFeHQ7CisJCQkJYWxsVHlwZXMucHVzaChpbWFnZVR5cGVzKTsgCQkJCQorCQkJCWZyLmJyb3dzZShhbGxUeXBlcyk7CisJCQl9IGVsc2UgaWYgKHRoaXMuaXNPbmx5SW1hZ2UpeworCQkJCWZyLmJyb3dzZShbCisJCQkJCXtkZXNjcmlwdGlvbjogIkFsbG93ZWQgRmlsZXMiLCBleHRlbnNpb246IGFsbEV4dH0KKwkJCQkJLCB7ZGVzY3JpcHRpb246ICJEb2N1bWVudHMiLCBleHRlbnNpb246IGRvY0V4dH0KKwkJCQkJLCB7ZGVzY3JpcHRpb246ICJWaWRlb3MiLCBleHRlbnNpb246IHZpZEV4dH0KKwkJCQkJLCB7ZGVzY3JpcHRpb246ICJQaWN0dXJlcyIsIGV4dGVuc2lvbjogaW1nRXh0fQorCQkJCV0pOworCQkJfSBlbHNlIGlmKHRoaXMuaXNPbmx5UHB0KXsJCisJCQkJdmFyIGFsbFR5cGVzID0gbmV3IEFycmF5KCk7CisJCQkJdmFyIGltYWdlVHlwZXMgPSBuZXcgT2JqZWN0KCk7CisJCQkJaW1hZ2VUeXBlcy5kZXNjcmlwdGlvbiA9ICJQb3dlcnBvaW50ICgiICsgcHB0RXh0ICsgIikiOworCQkJCWltYWdlVHlwZXMuZXh0ZW5zaW9uID0gcHB0RXh0OworCQkJCWFsbFR5cGVzLnB1c2goaW1hZ2VUeXBlcyk7IAkJCQkKKwkJCQlmci5icm93c2UoYWxsVHlwZXMpOworCQkJfSBlbHNlIGlmKHRoaXMuaXNPbmx5WG1sKXsJCisJCQkJdmFyIGFsbFR5cGVzID0gbmV3IEFycmF5KCk7CisJCQkJdmFyIGltYWdlVHlwZXMgPSBuZXcgT2JqZWN0KCk7CisJCQkJaW1hZ2VUeXBlcy5kZXNjcmlwdGlvbiA9ICJYTUwgKCoueG1sKSI7CisJCQkJaW1hZ2VUeXBlcy5leHRlbnNpb24gPSAiKi54bWw7IjsKKwkJCQlhbGxUeXBlcy5wdXNoKGltYWdlVHlwZXMpOyAJCQkJCisJCQkJZnIuYnJvd3NlKGFsbFR5cGVzKTsKKwkJCX0gZWxzZSB7CQorCQkJCWZyLmJyb3dzZSgpOworCQkJfQorCQldXT4KKwkJPC9tZXRob2Q+CisKKwkJPG1ldGhvZCBuYW1lPSJnZXROYW1lIj48IVtDREFUQVsKKwkJCXJldHVybiB0aGlzLmZyLm5hbWU7CisJCV1dPgorCQk8L21ldGhvZD4KKworCQk8bWV0aG9kIG5hbWU9InVwbG9hZCIgYXJncz0idXJsIj48IVtDREFUQVsKKwkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ1cmw6ICIsdXJsLHRoaXMuZnIpOworCQkJdGhpcy5mci51cGxvYWQodXJsKTsKKwkJXV0+CisJCTwvbWV0aG9kPgorCQkKKyAgICA8bWV0aG9kIG5hbWU9Im9uQ2FuY2VsIiBhcmdzPSJmciI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoJ29uQ2FuY2VsIGludm9rZWQnKTsKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJvbkNvbXBsZXRlIiBhcmdzPSJmciI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoJ29uQ29tcGxldGUgaW52b2tlZCcpOworICAgICAgICAgICAgY2FudmFzLmZpbGVkaWFsb2dSZWYucHJvZ3Jlc3NCYXIuc2V0VmFsdWUoMTAwKTsKKyAgICAgICAgICAgIC8vY2FudmFzLmZpbGVkaWFsb2dSZWYudXBsb2FkLnNldEF0dHJpYnV0ZSgnZW5hYmxlZCcsIGZhbHNlKTsKKyAgICAgICAgICAgIGlmIChjYW52YXMuZmlsZWRpYWxvZ1JlZi5zZW5kQ29tcGxldGVkKWNhbnZhcy5maWxlZGlhbG9nUmVmLnNlbmRDb21wbGV0ZWQuc2VuZEV2ZW50KCk7CisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0ib25IVFRQRXJyb3IiIGFyZ3M9ImZyLCBodHRwRXJyb3IiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCdvbkhUVFBFcnJvciBpbnZva2VkOiAnICsgaHR0cEVycm9yKTsKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJvbklPRXJyb3IiIGFyZ3M9ImZyIj4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgnb25JT0Vycm9yIGludm9rZWQnLGZyKTsKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJvbk9wZW4iIGFyZ3M9ImZyIj4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgnb25PcGVuIGludm9rZWQnLGZyKTsKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJvblNlY3VyaXR5RXJyb3IiIGFyZ3M9ImZyLCBlcnJvclN0cmluZyI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoJ29uU2VjdXJpdHlFcnJvciBpbnZva2VkOiAnICsgZXJyb3JTdHJpbmcpOworICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKwkJCisgCTwvY2xhc3M+CisgCQorIDwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy91cGxvYWQvbGlicmFyeS5senggYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvdXBsb2FkL2xpYnJhcnkubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxMjAxMjMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvdXBsb2FkL2xpYnJhcnkubHp4CkBAIC0wLDAgKzEsMzMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKworCTxpbmNsdWRlIGhyZWY9ImZpbGVVcGxvYWQubHp4IiAvPgorCTxpbmNsdWRlIGhyZWY9InVwbG9hZFdpbmRvd0V4cGxvcmVyLmx6eCIgLz4KKwkKKwk8IS0tCisJPGluY2x1ZGUgaHJlZj0iYmFja3VwSW1wb3J0V2luZG93Lmx6eCIgLz4KKwk8aW5jbHVkZSBocmVmPSJpbXBvcnRXaW5kb3cubHp4IiAvPgorCTxpbmNsdWRlIGhyZWY9InVwbG9hZFdpbmRvdy5sengiIC8+CisJIC0tPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvdXBsb2FkL3VwbG9hZFdpbmRvd0V4cGxvcmVyLmx6eCBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy91cGxvYWQvdXBsb2FkV2luZG93RXhwbG9yZXIubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1ZTJmMzkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvdXBsb2FkL3VwbG9hZFdpbmRvd0V4cGxvcmVyLmx6eApAQCAtMCwwICsxLDI4OCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKyAKKyA8Y2xhc3MgbmFtZT0idXBsb2FkV2luZG93RXhwbG9yZXIiIGV4dGVuZHM9ImxhYmVsRXhwbG9yZXJCb3giIGxhYmVsaWQ9IjMwNCIKKyAgICBkb2NraW5nPSJ0cnVlIiBjbG9zYWJsZT0idHJ1ZSIgd2lkdGg9IjI2NCIgeD0iMjAwIiBoZWlnaHQ9IjIzMCI+CisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAJbHouTW9kZU1hbmFnZXIubWFrZU1vZGFsKHRoaXMpOworICAgICAgICBjYW52YXMuY3VycmVudFVwbG9hZFdpbmRvdyA9IHRoaXM7CisgICAgICAgIGlmICh0aGlzLnNlcnZsZXROYW1lICE9ICJmaWxlLnVwbG9hZCIpIHsKKyAgICAgICAgCXRoaXMuX2xvYWRUb1doaXRlYm9hcmQuZGVzdHJveSgpOworICAgICAgICB9CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xvc2UiPgorICAgIAlsei5Nb2RlTWFuYWdlci5yZWxlYXNlKHRoaXMpOworICAgIDwvaGFuZGxlcj4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9Indpbm9iaiIgdmFsdWU9Im51bGwiIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJzZXNzaW9uaWQiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwk8YXR0cmlidXRlIG5hbWU9ImlzT3duZXIiIHZhbHVlPSIwIiB0eXBlPSJzdHJpbmciIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJ1c2Vyc2lkIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJzaW5nbGVzbGlkZXNtb2R1bGVfaWQiIHR5cGU9InN0cmluZyIgdmFsdWU9IiIgLz4KKwk8YXR0cmlidXRlIG5hbWU9ImZpbGVFeHBsb3JlclJlZiIgdmFsdWU9Im51bGwiIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJzZWNvbmRpZCIgdmFsdWU9IjAiIHR5cGU9InN0cmluZyIgLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9InNlcnZsZXROYW1lIiB2YWx1ZT0idXBsb2FkLnVwbG9hZCIgdHlwZT0ic3RyaW5nIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0icGFyZW50Rm9sZGVySWQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJ1cGxvYWRtb2R1bGUiIHZhbHVlPSJ2aWRlb2NvbmYxIiB0eXBlPSJzdHJpbmciIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpc09ubHlJbWFnZSIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iaXNPbmx5UHB0IiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpc09ubHlQcm9maWxlIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpc09ubHlYbWwiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImlzT25seVppcCIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0iaXNkZWZhdWx0cmV0dXJuIiB2YWx1ZT0idHJ1ZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9InJldHVybk9iaiIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgCisgCTxmaWxlVXBsb2FkIG5hbWU9Im15RmlsZVVwbG9hZCIgaXNPbmx5SW1hZ2U9IiR7IHRoaXMucGFyZW50LmlzT25seUltYWdlIH0iIAorIAkJIGlzT25seVBwdD0iJHsgdGhpcy5wYXJlbnQuaXNPbmx5UHB0IH0iIGlzT25seVByb2ZpbGU9IiR7IHRoaXMucGFyZW50LmlzT25seVByb2ZpbGUgfSIgCisgCQkgaXNPbmx5WG1sPSIkeyB0aGlzLnBhcmVudC5pc09ubHlYbWwgfSIgaXNPbmx5WmlwPSIkeyB0aGlzLnBhcmVudC5pc09ubHlaaXAgfSI+CisJCTxtZXRob2QgbmFtZT0ib25Db21wbGV0ZSIgYXJncz0iZnIiPgorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9uY29tcGxldGUgIixmcik7CisgICAgICAgIDwvbWV0aG9kPgorICAgICAgICA8bWV0aG9kIG5hbWU9ImZvcm1hdFVSTCIgYXJncz0iZmlsZUhhc2giPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgdmFyIHVwbG9hZG1vZHVsZWltZ2ZvbGRlclZhciA9ICcvJyArIGZpbGVIYXNoOworICAgICAgICAgICAgICAgIHZhciBkb3dubG9hZHVybCA9IGNhbnZhcy5nZXRVcmwoKSsnRG93bmxvYWRIYW5kbGVyPycgKworICAgICAgICAgICAgICAgICAgICAnZmlsZU5hbWU9JyArIGVuY29kZVVSSUNvbXBvbmVudChmaWxlSGFzaCArICIuc3dmIikgKworICAgICAgICAgICAgICAgICAgICAnJm1vZHVsZU5hbWU9JyArICd2aWRlb2NvbmYxJyArIAorICAgICAgICAgICAgICAgICAgICAnJnBhcmVudFBhdGg9JyArIGVuY29kZVVSSUNvbXBvbmVudCh1cGxvYWRtb2R1bGVpbWdmb2xkZXJWYXIgKyAnLycgKSsKKyAgICAgICAgICAgICAgICAgICAgJyZyb29tX2lkPWZpbGVzJysgCisgICAgICAgICAgICAgICAgICAgICcmc2lkPScrY2FudmFzLnNlc3Npb25JZDsKKyAgICAgICAgICAgICAgICAvLy8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImRvd25sb2FkdXJsOiAiLGRvd25sb2FkdXJsKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gZG93bmxvYWR1cmw7CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9tZXRob2Q+IAorICAgICAgICAKKyAgICAgICAgPG1ldGhvZCBuYW1lPSJnZW5lcmF0ZUZpbGVMaW5rIiBhcmdzPSJmaWxlSGFzaCI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICByZXR1cm4gY2FudmFzLmdldFVybCgpKydEb3dubG9hZEhhbmRsZXI/JyArCisgICAgICAgICAgICAgICAgICAgICAgICAnZmlsZU5hbWU9JysgZmlsZUhhc2ggKyAKKyAgICAgICAgICAgICAgICAgICAgICAgICcmbW9kdWxlTmFtZT0nKyAidmlkZW9jb25mMSIgKworICAgICAgICAgICAgICAgICAgICAgICAgJyZwYXJlbnRQYXRoPScrICcvJyArCisgICAgICAgICAgICAgICAgICAgICAgICAnJnJvb21faWQ9ZmlsZXMnICsKKyAgICAgICAgICAgICAgICAgICAgICAgICcmc2lkPScrY2FudmFzLnNlc3Npb25JZDsKKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L21ldGhvZD4KKyAgICAKKyAgICAgICAgPG1ldGhvZCBuYW1lPSJvbkNvbXBsZXRlQnlSZW1vdGUiIGFyZ3M9InRBcnJheVZhbHVlT2JqIj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9uQ29tcGxldGVCeVJlbW90ZSAiLHRBcnJheVZhbHVlT2JqKTsKKyAgICAgICAgICAgIHRoaXMucGFyZW50LnByb2dyZXNzQmFyLnNldFZhbHVlKDEwMCk7CisgICAgICAgICAgICB0aGlzLnBhcmVudC51cGxvYWQuc2V0QXR0cmlidXRlKCdlbmFibGVkJywgZmFsc2UpOworICAgICAgICAgICAgdGhpcy5wYXJlbnQudXBsb2FkLnNldEF0dHJpYnV0ZSgidmlzaWJsZSIsZmFsc2UpOworICAgICAgICAgICAgdGhpcy5wYXJlbnQuYnJvd3NlLnNldEF0dHJpYnV0ZSgidmlzaWJsZSIsZmFsc2UpOworICAgICAgICAgICAgdGhpcy5wYXJlbnQudHh0RmlsZS5zZXRBdHRyaWJ1dGUoInZpc2libGUiLGZhbHNlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHRoaXMuaXNPbmx5WmlwKSB7CisgICAgICAgICAgICAJdGhpcy5wYXJlbnQuY2xvc2UoKTsKKyAgICAgICAgICAgIAlyZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICh0aGlzLmlzT25seVhtbCkgeworICAgICAgICAgICAgCXBhcmVudC5yZXR1cm5PYmouc2VuZFJlZnJlc2goKTsKKyAgICAgICAgICAgIAl0aGlzLnBhcmVudC5jbG9zZSgpOworICAgICAgICAgICAgCXJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHRoaXMuaXNPbmx5UHJvZmlsZSkgeworICAgICAgICAgICAgCXBhcmVudC5yZXR1cm5PYmouc2VuZFJlZnJlc2goKTsKKyAgICAgICAgICAgIAl0aGlzLnBhcmVudC5jbG9zZSgpOworICAgICAgICAgICAgCXJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHBhcmVudC5fbG9hZFRvV2hpdGVib2FyZC5nZXRWYWx1ZSgpKSB7CisgICAgICAgICAgICAJCisgICAgICAgICAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUodEFycmF5VmFsdWVPYmopOworICAgICAgICAgICAgCWlmICh0QXJyYXlWYWx1ZU9iai5pc1ByZXNlbnRhdGlvbikgeworICAgICAgICAgICAgCQl2YXIgdXJsID0gdGhpcy5mb3JtYXRVUkwodEFycmF5VmFsdWVPYmouZmlsZUhhc2gpOworICAgICAgICAgICAgCQkKKyAgICAgICAgICAgIAkJdmFyIHVwbG9hZG1vZHVsZWltZ2ZvbGRlclZhciA9ICcvJyArIHRBcnJheVZhbHVlT2JqLmZpbGVIYXNoOworICAgICAgICAgICAgCQkKKyAgICAgICAgICAgIAkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUodXJsKTsKKyAgICAgICAgICAgIAkJCisgICAgICAgICAgICAgICAgCWNhbnZhcy5fZHJhd2FyZWEubG9hZFNXRlByZXNlbnRhdGlvblN5bmNlZCh1cmwsdEFycmF5VmFsdWVPYmouZmlsZUhhc2ggKyAiLnN3ZiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmlkZW9jb25mMSIsdXBsb2FkbW9kdWxlaW1nZm9sZGVyVmFyLCJmaWxlcyIsaGliLmNvbmZlcmVuY2Vkb21haW4sMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRBcnJheVZhbHVlT2JqLmZpbGVTeXN0ZW1OYW1lKTsKKyAgICAgICAgICAgIAl9IGVsc2UgaWYgKHRBcnJheVZhbHVlT2JqLmlzSW1hZ2UpIHsKKyAgICAgICAgICAgIAkJY2FudmFzLl9kcmF3YXJlYS5wYXJlbnQucGFyZW50LmNsZWFyQXJlYUFuZEFkZEltYWdlKHRoaXMuZ2VuZXJhdGVGaWxlTGluayh0QXJyYXlWYWx1ZU9iai5maWxlSGFzaCksMCwwLAorICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5nZXRVcmwoKSArJ0Rvd25sb2FkSGFuZGxlcicsCisgICAgICAgICAgICAgICAgICAgICAgdEFycmF5VmFsdWVPYmouZmlsZUhhc2gsInZpZGVvY29uZjEiLCIvIiwiZmlsZXMiLGhpYi5jb25mZXJlbmNlZG9tYWluKTsKKyAgICAgICAgICAgIAl9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChwYXJlbnQuaXNkZWZhdWx0cmV0dXJuKSB7CisgICAgICAgICAgICAJCisgICAgICAgICAgICAgICAgdmFyIHRlbXBTZW5kQXJyYXkgPSBuZXcgQXJyYXkgKCk7CisgICAgICAgICAgICAgICAgdGVtcFNlbmRBcnJheVswXSA9ICdmaWxlc2xpc3QnOworICAgICAgICAgICAgICAgIHZhciBub3dUaW1lID0gbmV3IERhdGUoKTsKKyAgICAgICAgICAgICAgICB2YXIgZGF0dW1zU3RyaW5nID0gbm93VGltZS5nZXRIb3VycygpKyc6Jytub3dUaW1lLmdldE1pbnV0ZXMoKTsKKyAgICAgICAgICAgICAgICB0ZW1wU2VuZEFycmF5WzFdID0gZGF0dW1zU3RyaW5nOworICAgICAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIlNldHRpbmcgTWVzc2FnZSIpOworICAgICAgICAgICAgICAgIHRlbXBTZW5kQXJyYXlbMl0gPSAnbmV3ZmlsZSc7CisgICAgICAgICAgICAgICAgdGVtcFNlbmRBcnJheVszXSA9IGNhbnZhcy5jdXJyZW50dXNlbmFtZTsKKyAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJzZW5kOiAiLHRlbXBTZW5kQXJyYXkpOworICAgICAgICAgICAgICAgIGNhbnZhcy5vYmpNZXNzYWdlID0gdGVtcFNlbmRBcnJheTsKKyAgICAgICAgICAgICAgICBjYW52YXMudGhpc2hpYi5zZW5kTWVzc2FnZUFsbC5kb0NhbGwoKTsKKworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBwYXJlbnQucmV0dXJuT2JqLnNlbmRSZWZyZXNoKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChwYXJlbnQuZmlsZUV4cGxvcmVyUmVmICE9IG51bGwpIHsKKyAgICAgICAgICAgIAlwYXJlbnQuZmlsZUV4cGxvcmVyUmVmLm9uQ2xvc2Uuc2VuZEV2ZW50KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHBhcmVudC5jbG9zZSgpOworICAgICAgICA8L21ldGhvZD4KKworCQk8bWV0aG9kIG5hbWU9Im9uUHJvZ3Jlc3MiIGFyZ3M9ImZyLCBieXRlc0xvYWRlZCwgYnl0ZXNUb3RhbCI+CisJCQk8IVtDREFUQVsKKyAgICAJCQl0aGlzLnBhcmVudC5wcm9ncmVzc0Jhci5zZXRWYWx1ZShieXRlc0xvYWRlZCAqIDEwMCAvIGJ5dGVzVG90YWwpOworICAgIAkJCWlmIChNYXRoLnJvdW5kKGJ5dGVzTG9hZGVkICogMTAwIC8gYnl0ZXNUb3RhbCk9PTEwMCl7CisgICAgCQkJCXRoaXMucGFyZW50LnByb2dyZXNzQmFyLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ2hpZGRlbicpOworICAgIAkJCQl0aGlzLnBhcmVudC5wcm9ncmVzczIuc3RhcnRTaG93aW5nKCk7CisgICAgCQkJfQorICAgIAkJXV0+CisJCTwvbWV0aG9kPgorICAgIAorCSAgICA8bWV0aG9kIG5hbWU9Im9uSFRUUEVycm9yIiBhcmdzPSJmciwgaHR0cEVycm9yIj4KKwkgICAgICAgIDwhW0NEQVRBWworCSAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCdvbkhUVFBFcnJvciBpbnZva2VkOiAnICsgaHR0cEVycm9yKTsKKwkgICAgICAgICAgICBuZXcgbHouZXJyb3JQb3B1cChjYW52YXMse2Vycm9yOidIVFRQLUVSUk9SOiAnK2h0dHBFcnJvcn0pOworCSAgICAgICAgICAgIHRoaXMucGFyZW50LmNsb3NlKCk7CisJCSAgCQl2YXIgdGVtcFNlbmRBcnJheSA9IG5ldyBBcnJheSAoKTsKKwkJICAJCXRlbXBTZW5kQXJyYXlbMF0gPSAnZmlsZXNsaXN0JzsKKwkJICAJCXZhciBub3dUaW1lID0gbmV3IERhdGUoKTsKKwkJICAJCXZhciBkYXR1bXNTdHJpbmcgPSBub3dUaW1lLmdldEhvdXJzKCkrJzonK25vd1RpbWUuZ2V0TWludXRlcygpOworCQkgIAkJdGVtcFNlbmRBcnJheVsxXSA9IGRhdHVtc1N0cmluZzsKKwkgIAkJCS8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIlNldHRpbmcgTWVzc2FnZSIpOworCSAgCQkJdGVtcFNlbmRBcnJheVsyXSA9ICduZXdmaWxlJzsKKwkgIAkJCXRlbXBTZW5kQXJyYXlbM10gPSBjYW52YXMuY3VycmVudHVzZW5hbWU7CisJCSAgCQkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJzZW5kOiAiLHRlbXBTZW5kQXJyYXkpOworCQkgIAkJY2FudmFzLm9iak1lc3NhZ2UgPSB0ZW1wU2VuZEFycmF5OworCQkgIAkJaGliLnNlbmRNZXNzYWdlLmRvQ2FsbCgpOwkgICAgICAgICAgICAKKwkgICAgICAgIF1dPgorCSAgICA8L21ldGhvZD4KKyAgICAKKwkJPG1ldGhvZCBuYW1lPSJvblNlbGVjdCIgYXJncz0iZnIiPgorCQkJLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib25TZWxlY3Q6ICIsZ2V0TmFtZSgpKTsKKwkJCXRoaXMucGFyZW50LnR4dEZpbGUuc2V0QXR0cmlidXRlKCd0ZXh0JyxnZXROYW1lKCkpOworCQkJdGhpcy5wYXJlbnQudXBsb2FkLnNldEF0dHJpYnV0ZSgnZW5hYmxlZCcsIHRydWUpOworCQk8L21ldGhvZD4KKwk8L2ZpbGVVcGxvYWQ+CisgICAgCisgICAgPGxhYmVsVGV4dCB4PSIxMCIgd2lkdGg9IjI1MCIgeT0iMjQiIG11bHRpbGluZT0idHJ1ZSIgbmFtZT0idHh0RmlsZURlc2NyIiBsYWJlbGlkPSI1OTQiIC8+CisJCisJPGxhYmVsVGV4dCB4PSIxMCIgZm9udHNpemU9IjExIiB5PSI2MCIgd2lkdGg9IjI1MCIgbmFtZT0idHh0RmlsZSIgbXVsdGlsaW5lPSJ0cnVlIiAKKwkJCSAgIHJlc2l6ZT0iZmFsc2UiIGZnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignbWVudVRleHRDb2xvcicpIH0iIC8+CisKKwk8c2ltcGxlTGFiZWxCdXR0b24gZm9udHNpemU9IjExIiBuYW1lPSJicm93c2UiIHg9IjEwIiB5PSIxMDAiIGxhYmVsaWQ9IjU5NiIgd2lkdGg9IjI1MCIgaGVpZ2h0PSIyMCI+CisJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorCQkJcGFyZW50Lm15RmlsZVVwbG9hZC5icm93c2UoKTsKKwkJPC9oYW5kbGVyPgorCTwvc2ltcGxlTGFiZWxCdXR0b24+CisKKyAgICA8IS0tIG1vZHVsZU5hbWU9dmlkZW9jb25mMSc7IC0tPgorCTxzaW1wbGVMYWJlbEJ1dHRvbiBuYW1lPSJ1cGxvYWQiIHg9IjEwIiB5PSIxMjAiIGxhYmVsaWQ9IjU5MyIgd2lkdGg9IjI1MCIgZW5hYmxlZD0iZmFsc2UiIGhlaWdodD0iMjAiPgorCQk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKwkJCTwhW0NEQVRBWworCQkJdmFyIHVwbG9hZHVybCA9IGNhbnZhcy5nZXRVcmwoKSArIHBhcmVudC5zZXJ2bGV0TmFtZSArJz8nICsKKwkJCQkJJ21vZHVsZU5hbWU9Jyt0aGlzLnBhcmVudC51cGxvYWRtb2R1bGUgKworICAgICAgICAgICAgICAgICAgICAnJnB1YmxpY1NJRD0nK2NhbnZhcy5wdWJsaWNTSUQgKworICAgICAgICAgICAgICAgICAgICAnJmZpbGVuYW1lPScrZW5jb2RlVVJJQ29tcG9uZW50KHBhcmVudC50eHRGaWxlLnRleHQpICsKKyAgICAgICAgICAgICAgICAgICAgJyZwYXJlbnRGb2xkZXJJZD0nK3BhcmVudC5wYXJlbnRGb2xkZXJJZCArCisJCQkJCScmcm9vbV9pZD0nK2hpYi5jdXJyZW50cm9vbWlkICsKKwkJCQkJJyZzZWNvbmRpZD0nK3BhcmVudC5zZWNvbmRpZCArCisJCQkJCScmaXNPd25lcj0nK3BhcmVudC5pc093bmVyICsgCisJCQkJCScmc2lkPScrY2FudmFzLnNlc3Npb25JZDsKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ1cGxvYWR1cmw6ICIsdXBsb2FkdXJsKTsKKwkJCXBhcmVudC5teUZpbGVVcGxvYWQudXBsb2FkKHVwbG9hZHVybCk7CisJCQl0aGlzLnNldEF0dHJpYnV0ZSgiZW5hYmxlZCIsIGZhbHNlKTsKKwkJCV1dPgorCQk8L2hhbmRsZXI+CisJPC9zaW1wbGVMYWJlbEJ1dHRvbj4KKyAgICAKKyAgICA8dmlldyBuYW1lPSJwcm9ncmVzczIiIHg9IjEwIiB5PSIxNTgiIHdpZHRoPSIyNTAiIHZpc2liaWxpdHk9ImhpZGRlbiIgaGVpZ2h0PSIxMCIgYmdjb2xvcj0iI0M2Q0VERiI+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iaXNTdGFydGVkIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgICAgIDxtZXRob2QgbmFtZT0ic3RhcnRTaG93aW5nIj4KKyAgICAgICAgCWlmICghdGhpcy5pc1N0YXJ0ZWQpIHsKKyAgICAgICAgCQl0aGlzLmlzU3RhcnRlZCA9IHRydWU7CisgICAgICAgIAkJdGhpcy5zdGF0dXMuX2hpZGUuc2V0QXR0cmlidXRlKCdzdGFydGVkJywgdHJ1ZSk7CisgICAgICAgIAkJdGhpcy5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgIAl9IGVsc2UgeworICAgICAgICAJCXJldHVybjsKKyAgICAgICAgCX0KKyAgICAgICAgPC9tZXRob2Q+CisgICAgICAgIDx2aWV3IHg9IjEiIHk9IjEiIHdpZHRoPSIyNDgiIGhlaWdodD0iOCIgYmdjb2xvcj0iI0ZGRkZGRiIvPgorICAgICAgICA8dmlldyBuYW1lPSJzdGF0dXMiIHg9IjEiIHk9IjEiIGhlaWdodD0iOCIgd2lkdGg9IjI0OCIgYmdjb2xvcj0iI0Q2REVFRiI+CisgICAgICAgIAkKKyAgICAgICAgCTxhbmltYXRvciBuYW1lPSJfaGlkZSIgYXR0cmlidXRlPSJvcGFjaXR5IiB0bz0iMCIgZnJvbT0iMSIgZHVyYXRpb249IjEwMDAiIHN0YXJ0ZWQ9ImZhbHNlIj4KKyAgICAgICAgCQk8aGFuZGxlciBuYW1lPSJvbnN0b3AiPgorICAgICAgICAJCQlpZiAocGFyZW50WyJfc2hvdyJdKSB7CisgICAgICAgIAkJCQlwYXJlbnQuX3Nob3cuc2V0QXR0cmlidXRlKCdzdGFydGVkJywgdHJ1ZSk7CisgICAgICAgIAkJCX0KKyAgICAgICAgCQk8L2hhbmRsZXI+CisgICAgICAgIAk8L2FuaW1hdG9yPgorICAgICAgICAJPGFuaW1hdG9yIG5hbWU9Il9zaG93IiBhdHRyaWJ1dGU9Im9wYWNpdHkiIHRvPSIxIiBmcm9tPSIwIiBkdXJhdGlvbj0iMTAwMCIgc3RhcnRlZD0iZmFsc2UiPgorICAgICAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uc3RvcCI+CisgICAgICAgICAgICAgICAgCWlmIChwYXJlbnRbIl9zaG93Il0pIHsKKyAgICAgICAgICAgICAgICAgICAgCXBhcmVudC5fc2hvdy5zZXRBdHRyaWJ1dGUoJ3N0YXJ0ZWQnLCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgICAgIDwvYW5pbWF0b3I+CisgICAgICAgIDwvdmlldz4KKyAgICAgICAgPGxhYmVsVGV4dCBuYW1lPSJwZXJjZW50IiBhbGlnbj0iY2VudGVyIiByZXNpemU9InRydWUiIHk9Ii0xOCIgZm9udHN0eWxlPSJib2xkIiAKKyAgICAgICAgICAgIGZvbnRzaXplPSIxMCIgZmdjb2xvcj0iIzU1NTU1NSIgbGFiZWxpZD0iNTkyIi8+CisgICAgPC92aWV3PgorICAgIAkJICAgCisJPHZpZXcgbmFtZT0icHJvZ3Jlc3NCYXIiIHg9IjEwIiB5PSIxNTgiIHdpZHRoPSIyNTAiIHZpc2liaWxpdHk9ImhpZGRlbiIgaGVpZ2h0PSIxMCIgYmdjb2xvcj0iI0M2Q0VERiI+CisJCTx2aWV3IHg9IjEiIHk9IjEiIHdpZHRoPSIyNDgiIGhlaWdodD0iOCIgYmdjb2xvcj0iI0ZGRkZGRiIvPgorCQk8dmlldyBuYW1lPSJzdGF0dXMiIHg9IjEiIHk9IjEiIGhlaWdodD0iOCIgYmdjb2xvcj0iI0Q2REVFRiIvPgorCQk8bWV0aG9kIG5hbWU9InNldFZhbHVlIiBhcmdzPSJ2YWx1ZSI+CisJCQk8IVtDREFUQVsKKyAgICAgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgidmlzaWJsZSIsdHJ1ZSk7CisgICAgICAgICAgICAgICAgc3RhdHVzLnNldEF0dHJpYnV0ZSgnd2lkdGgnLCB2YWx1ZSAqIDI0OCAvIDEwMCk7CisgICAgICAgICAgICAgICAgcGVyY2VudC5zZXRBdHRyaWJ1dGUoJ3RleHQnLE1hdGgucm91bmQodmFsdWUpICsgJyUnKTsKKwkJCV1dPgorCQk8L21ldGhvZD4KKwkJPHRleHQgbmFtZT0icGVyY2VudCIgYWxpZ249ImNlbnRlciIgcmVzaXplPSJ0cnVlIiB5PSItMTgiIGZvbnRzdHlsZT0iYm9sZCIgCisJCQlmb250c2l6ZT0iMTAiIGZnY29sb3I9IiM1NTU1NTUiIC8+CisJPC92aWV3PgorCQorCTxsYWJlbENoZWNrYm94IG5hbWU9Il9sb2FkVG9XaGl0ZWJvYXJkIiB4PSI0IiB5PSIxODQiIGZvbnRzaXplPSIxMSIgCisJCWxhYmVsaWQ9IjEzMTIiIHZhbHVlPSIkeyBjYW52YXMud2hpdGVib2FyZENvdW50ICZndDsgMCB9IiBlbmFibGVkPSIkeyBjYW52YXMud2hpdGVib2FyZENvdW50ICZndDsgMCB9IiAvPgorCQorCTxzaW1wbGVMYWJlbEJ1dHRvbiBuYW1lPSJfY2xvc2UiIHg9IjEwMCIgeT0iMjA0IiBsYWJlbGlkPSI1OTUiIHdpZHRoPSIxNjAiIGhlaWdodD0iMjAiPgorCQk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKwkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ0aGlzLnBhcmVudDogIix0aGlzLnBhcmVudCk7CisJCQl0aGlzLnBhcmVudC5jbG9zZSgpOworCQk8L2hhbmRsZXI+CisJPC9zaW1wbGVMYWJlbEJ1dHRvbj4KKzwvY2xhc3M+CisJCis8L2xpYnJhcnk+CisgCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvdmFsaWRib3gvbGlicmFyeS5senggYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvdmFsaWRib3gvbGlicmFyeS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjNhNDZiNwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29tcG9uZW50cy92YWxpZGJveC9saWJyYXJ5Lmx6eApAQCAtMCwwICsxLDI1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCisJPGluY2x1ZGUgaHJlZj0idmFsaWRUZXh0Lmx6eCIgLz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3ZhbGlkYm94L3ZhbGlkVGV4dC5senggYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbXBvbmVudHMvdmFsaWRib3gvdmFsaWRUZXh0Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjVmZmMyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb21wb25lbnRzL3ZhbGlkYm94L3ZhbGlkVGV4dC5sengKQEAgLTAsMCArMSwyMTQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisgICAgCisgICAgPCEtLS0gQSBlZGl0ZmllbGRUZXh0IHdpdGggdGhlIHBvc3NpYmlsaXR5IG9mIGEgZHJvcGRvd24gbWVudSAtLT4KKworICAgIDxjbGFzcyBuYW1lPSJ2YWxpZFRleHQiIGV4dGVuZHM9ImVkaXR0ZXh0Ij4KKyAgICAgICAgCisgICAgICAgIDwhLS0tIFRoZSBtZXRob2QgdG8gYmUgY2FsbGVkIGZvciB2YWxpZGF0aW5nIC0tPgorICAgICAgICA8YXR0cmlidXRlIG5hbWU9InZhbGlkYXRlX21ldGhvZCIgdmFsdWU9Im51bGwiIC8+CisgICAgICAgIAorICAgICAgICA8IS0tLSB0aGUgaWQtYXR0cmlidXRlIG9mIHRoZSByZXN1bHRzZXQgLS0+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0icmVzdWx0SWQiIHZhbHVlPSJpZCIgdHlwZT0ic3RyaW5nIiAvPgorICAgICAgICA8IS0tLSB0aGUgbmFtZS1hdHRyaWJ1dGUgb2YgdGhlIHJlc3VsdHNldCAtLT4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJyZXN1bHROYW1lIiB2YWx1ZT0ibmFtZSIgdHlwZT0ic3RyaW5nIiAvPiAgICAgICAgCisJCQkJCQorICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImluaXRTZWxlY3QiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKwkJCQkJCisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0idGltZXJEZWxlZ2F0ZSIgdmFsdWU9Im51bGwiLz4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJ0eXBldGltZSIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0iNTAwIi8+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0idGltZXJJc0luaXRlZCIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIi8+CisgICAgICAgIAorICAgICAgICA8IS0tLSBpdGVtcyB0byBiZSBzaG93biBpbiB0aGUgZmxvYXRpbmdsaXN0IC0tPgorICAgICAgICA8YXR0cmlidXRlIG5hbWU9InNob3duaXRlbXMiIHZhbHVlPSI3IiB0eXBlPSJudW1iZXIiIC8+ICAgICAgICAgIAorICAgICAgICA8YXR0cmlidXRlIG5hbWU9InNwYWNpbmciIHZhbHVlPSIxIiB0eXBlPSJudW1iZXIiIC8+ICAKKyAgICAgICAgPCEtLS0gVGhlIHZlcnRpY2FsIG9mZnNldCBvZiB0aGUgZmxvYXRpbmdsaXN0IGF0dGFjaGVkIHRvIHRoaXMKKyAgICAgICAgICAgICAgY29tYm9ib3guIC0tPgorICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImF0dGFjaG9mZnNldCIgdmFsdWU9Ii0xIiB0eXBlPSJudW1iZXIiLz4KKyAgICAgICAgPCEtLS0gV2hldGhlciBhIHNjcm9sbGJhciBzaG91bGQgYXV0b21hdGljYWxseSBzaG93IHVwIHdoZW4gdGhlcmUgYXJlIG1vcmUKKyAgICAgICAgICAgICAgaXRlbXMgdGhhbiBzaG93bml0ZW1zLiAtLT4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJhdXRvc2Nyb2xsYmFyIiB2YWx1ZT0idHJ1ZSIvPiAgIAorCisgICAgICAgIDwhLS0tIFRoZSBib3JkZXIgc2l6ZSAoIGluIHBpeGVscyApIG9mIHRoZSBwb3B1cCBsaXN0LiAgLS0+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iYm9yZGVyc2l6ZSIgICB2YWx1ZT0iMSIgLz4gICAgICAKKyAgICAgICAgCisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudFZhbHVlIiB0eXBlPSJzdHJpbmciIHZhbHVlPSIiIC8+CisgICAgICAgIAorICAgICAgICA8IS0tLSByZWZlcm5jZSB0byB0aGUgY3VycmVudCBzZWxlY3RlZCBpdGVtIC0tPgorICAgICAgICA8YXR0cmlidXRlIG5hbWU9Il9zZWxlY3RlZCIgdmFsdWU9Im51bGwiIC8+ICAgIAorICAgICAgICAKKyAgICAgICAgPG1ldGhvZCBuYW1lPSJhZGRBbmRTZWxlY3RJdGVtIiBhcmdzPSJ0eHQsaWQiPgorICAgICAgICAgICAgdGhpcy5jYmxpc3QuYWRkSXRlbSh0eHQsaWQpOworICAgICAgICAgICAgdGhpcy5jdXJyZW50VmFsdWUgPSBpZDsKKyAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCd0ZXh0Jyx0eHQpOworICAgICAgICA8L21ldGhvZD4gICAgCisgICAgICAgIAorICAgICAgICA8bWV0aG9kIG5hbWU9InNldFNlbGVjdGlvbiIgYXJncz0ib2JqIj4KKyAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkID0gb2JqOworICAgICAgICAgICAgdGhpcy5jdXJyZW50VmFsdWUgPSBvYmoudmFsdWU7CisgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgndGV4dCcsb2JqLnRleHQpOworICAgICAgICAgICAgdGhpcy5zZXRPcGVuKGZhbHNlLHRydWUpOworICAgICAgICAgICAgdGhpcy5vbnNlbGVjdC5zZW5kRXZlbnQoKTsKKyAgICAgICAgPC9tZXRob2Q+ICAgIAorICAgICAgICAKKyAgICAgICAgPGV2ZW50IG5hbWU9Im9uc2VsZWN0IiAvPgorICAgICAgICAKKyAgICAgICAgPG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+CisgICAgICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50VmFsdWU7CisgICAgICAgIDwvbWV0aG9kPgorCisgICAgICAgICAgICAgICAgICAgIDwhLS0gYXJyb3cgZG93biBhbmQgdXAgYm90aCBwb3B1cCBmbG9hdGluZ2xpc3QsIGFuZCBwYXNzIHRoZSBrZXkgZXZlbnQgdG8gaXQgLS0+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9ua2V5ZG93biIgYXJncz0ia2V5Ij4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIC8vRGVidWcud3JpdGUoIm9ua2V5ZG93bjogIixrZXkpOworICAgICAgICAgICAgICAgIC8vIDM4IGlzIHVwLWFycm93CisgICAgICAgICAgICAgICAgLy8gNDAgaXMgZG93bi1hcnJvdworICAgICAgICAgICAgICAgIC8vIDMyIGlzIHNwYWNlCisgICAgICAgICAgICAgICAgLy8gMTMgaXMgcmV0dXJuCisgICAgICAgICAgICAgICAgaWYgKChrZXk9PTM4KSB8fCAoa2V5PT00MCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmlzb3BlbikgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRPcGVuKHRydWUsIHRydWUpOyAvLyBvcGVuLCB3aXRoS2V5CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsei5Gb2N1cy5zZXRGb2N1cyh0aGlzLmNibGlzdCwgdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgLy8gcGFzcyB0aGUga2V5IGV2ZW50IG9uIHRvIHRoZSBmbG9hdGluZ2xpc3QKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5jYmxpc3Qub25rZXlkb3duLnNlbmRFdmVudChrZXkpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoa2V5PT0yNyl7CisgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc29wZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0T3Blbih0cnVlLCB0cnVlKTsgLy8gb3Blbiwgd2l0aEtleQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgbHouRm9jdXMuc2V0Rm9jdXModGhpcy5jYmxpc3QsIHRydWUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHRoaXMuY2JsaXN0Lm9ua2V5ZG93bi5zZW5kRXZlbnQoa2V5KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGtleSE9MTMgJiYga2V5IT05KXsKKyAgICAgICAgICAgICAgICAgICAgLy9Eb24ndCBoYW5kbGUgRW50ZXIgYW5kIFRhYiBFdmVudHMgY2F1c2UgaXQgd2lsbCBvcGVuIHRoZSBsaXN0SXRlbXMKKyAgICAgICAgICAgICAgICAgICAgLy8vL0RlYnVnLndyaXRlKCJvbmtleWRvd24gdHh0OiAiLHRoaXMuZ2V0VGV4dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmluaXRTZWxlY3QpeworICAgICAgICAgICAgICAgICAgICAgICAgLy8vL0RlYnVnLndyaXRlKCJvbnZhbHVlOiAiLHR4dCx0aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy50aW1lcklzSW5pdGVkKXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRpbWVySXNJbml0ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGltZXJEZWxlZ2F0ZSA9IG5ldyBMekRlbGVnYXRlKCB0aGlzLCAidmFsaWRhdGVkVGV4dCIgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vRGVidWcud3JpdGUoIisrKysrKysrKysrKysrKysrIGFkZFRpbWVyIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9EZWJ1Zy53cml0ZSgiKysrKysrKysrKysrKysrKysgcmVtb3ZlVGltZXIgIixsei5UaW1lci5jb3VudFRpbWVycygpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsei5UaW1lci5hZGRUaW1lciggdGhpcy50aW1lckRlbGVnYXRlLCB0aGlzLnR5cGV0aW1lICk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy9EZWJ1Zy53cml0ZSgiIyMjIyMjIyMjIyMjIyMjIHJlc2V0VGltZXIgTk8gQURESU5HICIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vRGVidWcud3JpdGUoIiMjIyMjIyMjIyMjIyMjIyByZXNldFRpbWVyICIsbHouVGltZXIuY291bnRUaW1lcnMoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHouVGltZXIucmVzZXRUaW1lciggdGhpcy50aW1lckRlbGVnYXRlLCB0aGlzLnR5cGV0aW1lICk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRTZWxlY3QgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIAorICAgICAgICA8bWV0aG9kIG5hbWU9InZhbGlkYXRlZFRleHQiPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgLy8vL0RlYnVnLndyaXRlKCJ2YWxpZGF0ZWRUZXh0OiAiLHRoaXMuZ2V0VGV4dCgpKTsKKyAgICAgICAgICAgICAgICAvL3RoaXMucmVzZXQoKTsKKyAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaW5pdFNlbGVjdCl7CisgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gdGhpcy52YWxpZGF0ZV9tZXRob2QodGhpcy5nZXRUZXh0KCkpOworICAgICAgICAgICAgICAgICAgICAvLy8vRGVidWcud3JpdGUoJ3Q6ICcsdC5sZW5ndGgpOworICAgICAgICAgICAgICAgICAgICAvL3RoaXMucGFyZW50Ll9jYmxpc3Quc2V0QXR0cmlidXRlKCd2aXNpYmxlJyx0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5jYmxpc3QucmVtb3ZlQWxsSXRlbXMoKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8dC5sZW5ndGg7aSsrKXsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vLy9EZWJ1Zy53cml0ZSh0W2ldW3RoaXMucmVzdWx0TmFtZV0sdFtpXVt0aGlzLnJlc3VsdElkXSk7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNibGlzdC5hZGRJdGVtKHRbaV1bdGhpcy5yZXN1bHROYW1lXSx0W2ldW3RoaXMucmVzdWx0SWRdKTsKKyAgICAgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAKKworICAgICAgICAgICAgICAgICAgICAvLy8vRGVidWcud3JpdGUoInZhbGlkYXRlVGV4dDogIix0aGlzLmdldFRleHQoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc29wZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0T3Blbih0cnVlLCB0cnVlKTsgLy8gb3Blbiwgd2l0aEtleQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHRoaXMudGltZXJJc0luaXRlZCA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdFNlbGVjdD1mYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy50aW1lcklzSW5pdGVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXV0+CisgICAgICAgIDwvbWV0aG9kPgkKKyAgICAgICAgCisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iaXNvcGVuIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIHNldHRlcj0idGhpcy5zZXRPcGVuKGlzb3BlbikiIC8+CisgICAgICAgIAorICAgICAgICA8ZXZlbnQgbmFtZT0ib25pc29wZW4iIC8+CisgICAgICAgIAorICAgICAgICA8bWV0aG9kIG5hbWU9InNldE9wZW4iIGFyZ3M9Im9wZW4sIHdpdGhrZXkiID4KKyAgICAgICAgICAgIGlmICghdGhpcy5pc2luaXRlZCkgeworICAgICAgICAgICAgICAgIHRoaXMuaXNvcGVuID0gb3BlbjsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAob3BlbikgeyAvLyBvcGVuIGNvbWJveAorICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzb3BlbikgcmV0dXJuOyAvLyB0ZW5kcyB0byBnZXQgY2FsbGVkIG1vcmUgdGhhbiBvbmNlLCBlc3Agd2hlbgorICAgICAgICAgICAgICAgIC8vbHouTW9kZU1hbmFnZXIubWFrZU1vZGFsKCB0aGlzICk7CisKKyAgICAgICAgICAgICAgICB0aGlzLmNibGlzdC5icmluZ1RvRnJvbnQoKTsKKyAgICAgICAgICAgICAgICB0aGlzLmNibGlzdC5zZXRWaXNpYmxlKHRydWUpOworICAgICAgICAgICAgICAgIC8vbHouRm9jdXMuc2V0Rm9jdXModGhpcy5jYmxpc3QsIHdpdGhrZXkpOworCisgICAgICAgICAgICAgICAgdGhpcy5pc29wZW4gPSB0cnVlOworICAgICAgICAgICAgICAgIGlmICh0aGlzWydvbmlzb3BlbiddKSB0aGlzLm9uaXNvcGVuLnNlbmRFdmVudCh0cnVlKTsKKyAgICAgICAgICAgIH0gZWxzZSB7IC8vIGNsb3NlIGNvbWJveAorICAgICAgICAgICAgICAgIGlmICghdGhpc1snaXNvcGVuJ10pIHJldHVybjsKKyAgICAgICAgICAgICAgICB0aGlzLmlzb3BlbiA9IGZhbHNlOworCisgICAgICAgICAgICAgICAgLy9sei5Nb2RlTWFuYWdlci5yZWxlYXNlKCB0aGlzICk7CisgICAgICAgICAgICAgICAgdGhpcy5jYmxpc3Quc2V0VmlzaWJsZShmYWxzZSk7CisgICAgICAgICAgICAgICAgaWYgKHRoaXNbJ29uaXNvcGVuJ10pIHRoaXMub25pc29wZW4uc2VuZEV2ZW50KGZhbHNlKTsKKyAgICAgICAgICAgICAgICBpZiAoIGx6LkZvY3VzLmdldEZvY3VzKCkgPT0gdGhpcy5jYmxpc3QgKSB7CisgICAgICAgICAgICAgICAgICAgIGx6LkZvY3VzLnNldEZvY3VzKHRoaXMsIHdpdGhrZXkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9tZXRob2Q+ICAgICAgICAgICAKKworICAgICAgICA8ZmxvYXRpbmdsaXN0IG5hbWU9ImNibGlzdCIKKyAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iJHtvd25lci53aWR0aCAtIDF9IgorICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcnNpemU9IiR7dGhpcy5vd25lci5ib3JkZXJzaXplfSIKKyAgICAgICAgICAgICAgICAgICAgICBzcGFjaW5nPSIke3RoaXMub3duZXIuc3BhY2luZ30iCisgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZT0iZmFsc2UiCisgICAgICAgICAgICAgICAgICAgICAgc2hvd25pdGVtcz0iJHt0aGlzLm93bmVyLnNob3duaXRlbXN9IgorICAgICAgICAgICAgICAgICAgICAgIGF0dGFjaD0iYm90dG9tIgorICAgICAgICAgICAgICAgICAgICAgIGF0dGFjaG9mZnNldD0iJHt0aGlzLm93bmVyLmF0dGFjaG9mZnNldH0iCisgICAgICAgICAgICAgICAgICAgICAgbXVsdGlzZWxlY3Q9ImZhbHNlIgorICAgICAgICAgICAgICAgICAgICAgIGF1dG9zY3JvbGxiYXI9IiR7b3duZXIuYXV0b3Njcm9sbGJhcn0iID4KKworICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25rZXl1cCIgYXJncz0ia2MiPgorICAgICAgICAgICAgICAgIC8vbmFtZT0iX2Rva2V5dXAiIAorICAgICAgICAgICAgICAgIGlmIChrYyA9PSAyNykgeyAgLy8gZXNjYXBlIG5lZWRzIHRvIGNsb3NlIGZsb2F0aW5nIGxpc3QKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5vd25lci5zZXRPcGVuKGZhbHNlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgICAgICA8bWV0aG9kIG5hbWU9InJlbW92ZUFsbEl0ZW1zIiBhcmdzPSJpbmRleCI+IAorICAgICAgICAgICAgICAgIGZvciAodmFyIGVnIGluIF9jb250ZW50dmlldy5zdWJ2aWV3cyl7CisgICAgICAgICAgICAgICAgICAgIF9yZW1vdmVpdGVtKF9jb250ZW50dmlldy5zdWJ2aWV3c1tlZ10pOyAKKyAgICAgICAgICAgICAgICB9IAorICAgICAgICAgICAgPC9tZXRob2Q+CQorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25zZWxlY3QiIGFyZ3M9Im9iaiI+CisgICAgICAgICAgICAgICAgLy8vL0RlYnVnLndyaXRlKCJvYmo6ICIsb2JqKTsKKyAgICAgICAgICAgICAgICB0aGlzLm93bmVyLnNldFNlbGVjdGlvbihvYmopOworICAgICAgICAgICAgPC9oYW5kbGVyPgkJCisgICAgICAgIDwvZmxvYXRpbmdsaXN0PgorCisgICAgPC9jbGFzcz4KKwkKKyAgICAKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29udGVudHZpZXdzL2Jhc2VDb250ZW50U2F2ZVZpZXcubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb250ZW50dmlld3MvYmFzZUNvbnRlbnRTYXZlVmlldy5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTE1YzBhNgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29udGVudHZpZXdzL2Jhc2VDb250ZW50U2F2ZVZpZXcubHp4CkBAIC0wLDAgKzEsMTEzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorICAgIAorPGNsYXNzIG5hbWU9ImJhc2VDb250ZW50U2F2ZVZpZXciIGV4dGVuZHM9ImJhc2VDb250ZW50VmlldyI+CisKKyAgICA8YXR0cmlidXRlIG5hbWU9Im9ic2VydmVyVmlld3MiIHZhbHVlPSJudWxsIiAvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0ic2F2ZUlzVmlzaWJsZSIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJhZGRJc1Zpc2libGUiIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0icmVmcmVzaElzVmlzaWJsZSIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJkZWxldGVJc1Zpc2libGUiIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0iY29uZmlybU1lc3NhZ2VMYWJlbElkIiB2YWx1ZT0iNjYxIiB0eXBlPSJudW1iZXIiIC8+CisgICAgCisJPGV2ZW50IG5hbWU9Im9ubmV3IiAvPgorICAgIDxldmVudCBuYW1lPSJvbmRlbGV0ZSIgLz4KKyAgICA8aGFuZGxlciBuYW1lPSJvbnNhdmVjb21wbGV0ZWQiID4KKwkJdGhpcy5oaWRlTmV3UmVjb3JkVGV4dCgpOworCTwvaGFuZGxlcj4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImhpZGVOZXdSZWNvcmRUZXh0Ij4KKyAgICAgICAgdGhpcy5fbmV3UmVjb3JkLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ2hpZGRlbicpOworICAgIDwvbWV0aG9kPgorICAgIAorCTxldmVudCBuYW1lPSJvbnJlbG9hZCIgLz4KKworICAgIDx2aWV3IG5hbWU9Il9zYXZlY29udGVudGJhciIgbGF5b3V0PSJheGlzOng7c3BhY2luZzoyO2luc2V0OjIiIHg9IjIiIGhlaWdodD0iMjgiIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoIH0iCisgICAgICAgIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignYmFzZU1vdXNlY29sb3JpemVyJykgfSI+CisgICAgICAgIAorICAgICAgICA8c3RhdGUgYXBwbGllZD0iJG9uY2V7IHBhcmVudC5wYXJlbnQuc2F2ZUlzVmlzaWJsZSB9Ij4KKwkgICAgICAgIDxiYXNlQ2hvb3NlSWNvbiByZXNvdXJjZU49ImZpbGVzYXZlX3JzYyIgbGFiZWxpZD0iMTQ0IiB5PSIyIiAKKwkgICAgICAgIAlvbmNsaWNrPSJ0aGlzLnBhcmVudC5wYXJlbnQuZG9TYXZlRXZlbnQoKSIgLz4KKyAgICAgICAgPC9zdGF0ZT4JCisgICAgICAgIDxzdGF0ZSBhcHBsaWVkPSIkb25jZXsgcGFyZW50LnBhcmVudC5hZGRJc1Zpc2libGUgfSI+CisgICAgICAgIAk8YmFzZUNob29zZUljb24gcmVzb3VyY2VOPSJlZGl0X2FkZF9yc2MiIGxhYmVsaWQ9IjE1NSIgeT0iMiIgCisgICAgICAgIAkJb25jbGljaz0idGhpcy5wYXJlbnQucGFyZW50LmRvQWRkRXZlbnQoKSIgLz4gIAorICAgICAgICA8L3N0YXRlPgorICAgICAgICA8c3RhdGUgYXBwbGllZD0iJG9uY2V7IHBhcmVudC5wYXJlbnQucmVmcmVzaElzVmlzaWJsZSB9Ij4KKwkgICAgICAgIDxiYXNlQ2hvb3NlSWNvbiByZXNvdXJjZU49InJlbG9hZF9yc2MiIGxhYmVsaWQ9IjE1NiIgeT0iMiIgCisJICAgICAgICAJb25jbGljaz0idGhpcy5wYXJlbnQucGFyZW50LmRvUmVsb2FkRXZlbnQoKSIgLz4KKyAgICAgICAgPC9zdGF0ZT4gCisgICAgICAgIDxzdGF0ZSBhcHBsaWVkPSIkb25jZXsgcGFyZW50LnBhcmVudC5kZWxldGVJc1Zpc2libGUgfSI+ICAgIAorCSAgICAgICAgPGJhc2VDaG9vc2VJY29uIHJlc291cmNlTj0iYnV0dG9uX2NhbmNlbF9yc2MiIGxhYmVsaWQ9IjE1NyIgeT0iMiIgCisJICAgICAgICAJb25jbGljaz0idGhpcy5wYXJlbnQucGFyZW50LmRvRGVsZXRlRXZlbnQoKSIgIC8+CisgICAgICAgIDwvc3RhdGU+CisgICAgICAgIAorCQkgIAorCQkgCSAJICAgICAgCQorICAgIDwvdmlldz4KKyAgICAKKyAgICA8bGFiZWxUZXh0IG5hbWU9Il9uZXdSZWNvcmQiIHg9IjEyMCIKKyAgIAkJCQkJCXZpc2liaWxpdHk9ImhpZGRlbiIgbGFiZWxpZD0iMzQ0IiBmZ2NvbG9yPSJncmVlbiIgd2lkdGg9IjE1MCIgLz4gICAgIAorICAgIAorICAgIDxtZXRob2QgbmFtZT0iYWRkVmlld1RvT2JzZXJ2ZXIiIGFyZ3M9Im9iaiI+CisgICAgCWlmICh0aGlzLm9ic2VydmVyVmlld3M9PW51bGwpIHRoaXMub2JzZXJ2ZXJWaWV3cyA9IG5ldyBBcnJheSgpOworICAgICAgICB0aGlzLm9ic2VydmVyVmlld3MucHVzaChvYmopOworICAgIDwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0iZG9BZGRFdmVudCI+CisJCXRoaXMuX25ld1JlY29yZC5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCd2aXNpYmxlJyk7CisJCXRoaXMub25uZXcuc2VuZEV2ZW50KCk7CisJPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJkb1NhdmVFdmVudCI+CisgICAgCWlmICh0aGlzLm9ic2VydmVyVmlld3MubGVuZ3RoIT0wKXsKKyAgICAgICAgCW5ldyBsei5jb250ZW50U2F2ZVdpbmRvdyhjYW52YXMubWFpbl9jb250ZW50Ll9jb250ZW50LmlubmVyLHtyZWZPYmo6dGhpcyxzYXZlT2JqOnRoaXMub2JzZXJ2ZXJWaWV3c30pOworICAgICAgICB9CisgICAgPC9tZXRob2Q+CisJCisJPG1ldGhvZCBuYW1lPSJkb1JlbG9hZEV2ZW50Ij4KKwkJdGhpcy5vbnJlbG9hZC5zZW5kRXZlbnQoKTsKKwk8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImRvRGVsZXRlRXZlbnQiPgorICAgIAluZXcgbHouY29uZmlybURlbGV0ZVdpbmRvdyhjYW52YXMubWFpbl9jb250ZW50Ll9jb250ZW50LmlubmVyLHsKKyAgICAJICAgICAgICAgICAgICAgICAgIHJlZk9iajp0aGlzLAorICAgIAkgICAgICAgICAgICAgICAgICAgbWVzc2FnZWxhYmVsaWQ6Y29uZmlybU1lc3NhZ2VMYWJlbElkCisgICAgCSAgICAgICAgICAgICAgIH0pOworICAgIDwvbWV0aG9kPiAKKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImNvbmZpcm1EZWxldGUiPgorICAgIAl0aGlzLm9uZGVsZXRlLnNlbmRFdmVudCgpOworICAgIDwvbWV0aG9kPgorCisgICAgPGV2ZW50IG5hbWU9Im9udGFiY29udGVudGxlYXZlIiAvPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iY2xvc2UiPgorICAgICAgICB0aGlzLm9udGFiY29udGVudGxlYXZlLnNlbmRFdmVudCgpOworICAgICAgICB0aGlzLmRlc3Ryb3koKTsKKyAgICA8L21ldGhvZD4KKworPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvYmFzZS9jb250ZW50dmlld3MvYmFzZUNvbnRlbnRWaWV3Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29udGVudHZpZXdzL2Jhc2VDb250ZW50Vmlldy5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY3YjViYgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29udGVudHZpZXdzL2Jhc2VDb250ZW50Vmlldy5sengKQEAgLTAsMCArMSw1OCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKyAgICAKKzxjbGFzcyBuYW1lPSJiYXNlQ29udGVudFZpZXciIGV4dGVuZHM9InZpZXciPgorCisgICAgPCEtLS0KKyAgICAgICAgSWYgZGVzdHJveUJ5TWV0aG9kIGlzIHRydWUsIHRoZSBjbGVhciBjb250ZW50IGNhbGwgd2lsbCBub3QgZGVzdHJveSB0aGUgdmlld3MsIGJ1dCB0aGUgbWV0aG9kIAorICAgICAgICBvbnRhYmNvbnRlbnRsZWF2ZSBpcyBzdGlsbCBpbnZva2VkLCB0aGlzIGNhbiBiZSBoYW5keSBpZiBzb21lIGNvbm5lY3Rpb25zIG11c3QgYmUgY2xvc2VkIGJlZm9yZSAKKyAgICAgICAgZGVzdHJveWluZyAvIGxlYXZpbmcgdGhlIG1vZHVsZSwgeW91IGNvdWxkIHByb2JhYmx5IGFsc28gdXNlIGl0IHRvIGNvbmZpcm0gbGVhdmluZyB0aGUgbW9kdWxlIAorICAgICAtLT4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImRlc3Ryb3lCeU1ldGhvZCIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorICAgIAorICAgIDxldmVudCBuYW1lPSJvbnRhYmNvbnRlbnRsZWF2ZSIgLz4KKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgIAljYW52YXMuY3VycmVudENvbnRlbnRWaWV3ID0gdGhpczsKKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPCEtLQorICAgICAgICBUaGlzIEV2ZW50IGlzIGZvciBzZW5kaW5nIGFkZGl0aW9uYWwgSW5pdCBFdmVudHMsIGZvciBleGFtcGxlIGFmdGVyIHRoZSByZWNvbm5lY3QKKyAgICAgICAgdGhlIEZpbGUtTGlzdCBoYXMgdG8gYmUgcmVmcmVzaGVkIGZvciB0aGUgRmlsZS1Ccm93c2VyIFBsdWdpbiAKKyAgICAgLS0+CisgICAgPGV2ZW50IG5hbWU9InNlbmRJbml0IiAvPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iY2xvc2UiPgorICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiY2xvc2U6ICIsdGhpcyx0aGlzLmRlc3Ryb3lCeU1ldGhvZCk7CisgICAgICAgIC8vTWFrZSBzdXJlIGFueSBjdXJzb3Igc3RhdHVzIGlzIHJlc2V0CisJCWx6LkN1cnNvci5yZXN0b3JlQ3Vyc29yKCk7CisJCWx6LkN1cnNvci5zaG93SGFuZEN1cnNvcih0cnVlKTsKKwkJLy9NYWtlIHN1cmUgYW55IHRvb2x0aXAgaXMgY2xlYXJlZAorCQljYW52YXMuY2xlYXJUb29sVGlwKCk7CisgICAgICAgIHRoaXMub250YWJjb250ZW50bGVhdmUuc2VuZEV2ZW50KCk7CisgICAgICAgIGlmICghdGhpcy5kZXN0cm95QnlNZXRob2QpIHRoaXMuZGVzdHJveSgpOworICAgICAgICByZXR1cm4gdGhpcy5kZXN0cm95QnlNZXRob2Q7CisgICAgPC9tZXRob2Q+CisKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29udGVudHZpZXdzL2NvbmZpcm1EZWxldGVXaW5kb3cubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9jb250ZW50dmlld3MvY29uZmlybURlbGV0ZVdpbmRvdy5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmIwOTBkYQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29udGVudHZpZXdzL2NvbmZpcm1EZWxldGVXaW5kb3cubHp4CkBAIC0wLDAgKzEsNTggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzxjbGFzcyBuYW1lPSJjb25maXJtRGVsZXRlV2luZG93IiBleHRlbmRzPSJsYWJlbEV4cGxvcmVyQm94IiBsYWJlbGlkPSIxNTIiCisgICAgZG9ja2luZz0idHJ1ZSIgd2lkdGg9IjI2NCIgeD0iNDUwIiB5PSIyMCIgaGVpZ2h0PSIyMDAiPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0icmVmT2JqIiB2YWx1ZT0ibnVsbCIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9Im1lc3NhZ2VsYWJlbGlkIiB2YWx1ZT0iMTUzIiB0eXBlPSJudW1iZXIiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJjb25maXJtbGFiZWxpZCIgdmFsdWU9IjE1NCIgdHlwZT0ibnVtYmVyIiAvPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgIGx6Lk1vZGVNYW5hZ2VyLm1ha2VNb2RhbCh0aGlzKTsKKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib25jbG9zZSI+CisgICAgICAgIGx6Lk1vZGVNYW5hZ2VyLnJlbGVhc2UodGhpcyk7CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iJG9uY2V7IHBhcmVudC5tZXNzYWdlbGFiZWxpZCB9IiB5PSIyMiIgeD0iNCIKKyAgICAJCSAgIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoIC0gOCB9IiBtdWx0aWxpbmU9InRydWUiLz4KKyAgICAKKyAgICA8c2ltcGxlTGFiZWxCdXR0b24gbGFiZWxpZD0iJG9uY2V7IHBhcmVudC5jb25maXJtbGFiZWxpZCB9IiB3aWR0aD0iMTAwIiB4PSI0MCIgeT0iMTcwIj4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICAvL0RlYnVnLndyaXRlKCJjb25maXJtIik7CisgICAgICAgICAgICB0aGlzLnBhcmVudC5yZWZPYmouY29uZmlybURlbGV0ZSgpOworICAgICAgICAgICAgdGhpcy5wYXJlbnQuY2xvc2UoKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgIDwvc2ltcGxlTGFiZWxCdXR0b24+CisgICAgCisgICAgPHNpbXBsZUxhYmVsQnV0dG9uIGxhYmVsaWQ9IjE1MyIgd2lkdGg9IjEwMCIgeD0iMTUwIiB5PSIxNzAiPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgIC8vRGVidWcud3JpdGUoImNhbmNlbCIpOworICAgICAgICAgICAgdGhpcy5wYXJlbnQuY2xvc2UoKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgIDwvc2ltcGxlTGFiZWxCdXR0b24+CisgICAgCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2NvbnRlbnR2aWV3cy9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvY29udGVudHZpZXdzL2xpYnJhcnkubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlNmM5YTEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2NvbnRlbnR2aWV3cy9saWJyYXJ5Lmx6eApAQCAtMCwwICsxLDI3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorICAgIAorICAgIDxpbmNsdWRlIGhyZWY9ImJhc2VDb250ZW50Vmlldy5sengiIC8+CisgICAgPGluY2x1ZGUgaHJlZj0iYmFzZUNvbnRlbnRTYXZlVmlldy5sengiIC8+CisgICAgPGluY2x1ZGUgaHJlZj0iY29uZmlybURlbGV0ZVdpbmRvdy5sengiIC8+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvZXh0ZXJuYWxKYXZhU2NyaXB0Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvZXh0ZXJuYWxKYXZhU2NyaXB0Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmYxOWI4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9leHRlcm5hbEphdmFTY3JpcHQubHp4CkBAIC0wLDAgKzEsMTA5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8c2NyaXB0PgorPCFbQ0RBVEFbCisKKworCWZsYXNoLmV4dGVybmFsLkV4dGVybmFsSW50ZXJmYWNlLmFkZENhbGxiYWNrKCJyZWRpcmVjdFRvVXJsQ2FsbGJhY2siLCBudWxsLCByZWRpcmVjdFRvVXJsQ2FsbGJhY2spOworCWZsYXNoLmV4dGVybmFsLkV4dGVybmFsSW50ZXJmYWNlLmFkZENhbGxiYWNrKCJnZXRUaW1lWm9uZU9mZnNldENhbGxiYWNrIiwgbnVsbCwgZ2V0VGltZVpvbmVPZmZzZXRDYWxsYmFjayk7CisgICAgZmxhc2guZXh0ZXJuYWwuRXh0ZXJuYWxJbnRlcmZhY2UuYWRkQ2FsbGJhY2soImdldEJyb3dzZXJJbmZvQ2FsbGJhY2siLCBudWxsLCBnZXRCcm93c2VySW5mb0NhbGxiYWNrKTsKKyAgICBmbGFzaC5leHRlcm5hbC5FeHRlcm5hbEludGVyZmFjZS5hZGRDYWxsYmFjaygiZ2V0QnJvd3NlckxhbmdDYWxsYmFjayIsIG51bGwsIGdldEJyb3dzZXJMYW5nQ2FsbGJhY2spOworCisJCisJdmFyIHJlZGlyZWN0VG9VcmxSZXR1cm5PYmplY3QgPSBudWxsOworCXZhciB0aW1lWm9uZU9mZnNldFJldHVybk9iamVjdCA9IG51bGw7CisJdmFyIGJyb3dzZXJJbmZvUmV0dXJuT2JqZWN0ID0gbnVsbDsKKwl2YXIgYnJvd3NlckxhbmdSZXR1cm5PYmplY3QgPSBudWxsOworCQorCWZ1bmN0aW9uIHJlZGlyZWN0VG9VcmwodXJsLCByZXR1cm5PYmplY3QpIHsKKwkJCisJCXJlZGlyZWN0VG9VcmxSZXR1cm5PYmplY3QgPSByZXR1cm5PYmplY3Q7CisJCQorCQlmbGFzaC5leHRlcm5hbC5FeHRlcm5hbEludGVyZmFjZS5jYWxsKCJyZWRpcmVjdFRvVXJsIiwgdXJsKTsKKwkJCisJCS8vbHouQnJvd3Nlci5jYWxsSlMoInJlZGlyZWN0VG9VcmwiLGNhbGxiYWNrLHRoaXMucmVkaXJlY3RVUkwpOworCX0KKwkKKwlmdW5jdGlvbiByZWRpcmVjdFRvVXJsQ2FsbGJhY2socmV0dXJuVmFsdWUpIHsKKwkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInJlZGlyZWN0VG9VcmxDYWxsYmFjayAiLHJldHVyblZhbHVlKTsKKwkJaWYgKHJlZGlyZWN0VG9VcmxSZXR1cm5PYmplY3QgIT0gbnVsbCkgeworCQkJcmVkaXJlY3RUb1VybFJldHVybk9iamVjdC5jYWxsYmFjayhyZXR1cm5WYWx1ZSk7CisJCX0KKwl9CisKKwkKKwlmdW5jdGlvbiBnZXRUaW1lWm9uZU9mZnNldChyZXR1cm5PYmplY3QpIHsKKwkJCisJCXRpbWVab25lT2Zmc2V0UmV0dXJuT2JqZWN0ID0gcmV0dXJuT2JqZWN0OworCQkKKwkJZmxhc2guZXh0ZXJuYWwuRXh0ZXJuYWxJbnRlcmZhY2UuY2FsbCgiZ2V0VGltZVpvbmVPZmZzZXQiKTsKKwkJCisJCS8vbHouQnJvd3Nlci5jYWxsSlMoImdldFRpbWVab25lT2Zmc2V0IixnZXRUaW1lWm9uZU9mZnNldENhbGxiYWNrKTsKKwl9CisJCisJZnVuY3Rpb24gZ2V0VGltZVpvbmVPZmZzZXRDYWxsYmFjayhyZXR1cm5WYWx1ZSkgeworCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZ2V0VGltZVpvbmVPZmZzZXRDYWxsYmFjayAiLHJldHVyblZhbHVlKTsKKwkJaWYgKHRpbWVab25lT2Zmc2V0UmV0dXJuT2JqZWN0ICE9IG51bGwpIHsKKwkJCXRpbWVab25lT2Zmc2V0UmV0dXJuT2JqZWN0LmNhbGxiYWNrKHJldHVyblZhbHVlKTsKKwkJfQorCX0KKwkKKwkKKwlmdW5jdGlvbiBnZXRCcm93c2VySW5mbyhyZXR1cm5PYmplY3QpIHsKKyAgICAgICAgCisgICAgICAgIGJyb3dzZXJJbmZvUmV0dXJuT2JqZWN0ID0gcmV0dXJuT2JqZWN0OworICAgICAgICAKKyAgICAgICAgZmxhc2guZXh0ZXJuYWwuRXh0ZXJuYWxJbnRlcmZhY2UuY2FsbCgiZ2V0QnJvd3NlckluZm8iKTsKKyAgICAgICAgCisgICAgICAgIC8vbHouQnJvd3Nlci5jYWxsSlMoImdldEJyb3dzZXJJbmZvIixjYWxsYmFjayk7CisgICAgfQorICAgIAorICAgIGZ1bmN0aW9uIGdldEJyb3dzZXJJbmZvQ2FsbGJhY2socmV0dXJuVmFsdWUpIHsKKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImdldEJyb3dzZXJJbmZvQ2FsbGJhY2sgIixyZXR1cm5WYWx1ZSk7CisgICAgICAgIGlmIChicm93c2VySW5mb1JldHVybk9iamVjdCAhPSBudWxsKSB7CisgICAgICAgICAgICBicm93c2VySW5mb1JldHVybk9iamVjdC5jYWxsYmFjayhyZXR1cm5WYWx1ZSk7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgCisgICAgZnVuY3Rpb24gZ2V0QnJvd3NlckxhbmcocmV0dXJuT2JqZWN0KSB7CisgICAgICAgIAorICAgICAgICBicm93c2VyTGFuZ1JldHVybk9iamVjdCA9IHJldHVybk9iamVjdDsKKyAgICAgICAgCisgICAgICAgIGZsYXNoLmV4dGVybmFsLkV4dGVybmFsSW50ZXJmYWNlLmNhbGwoImdldEJyb3dzZXJMYW5nIik7CisgICAgICAgIAorICAgICAgICAvL2x6LkJyb3dzZXIuY2FsbEpTKCJnZXRCcm93c2VyTGFuZyIsY2FsbGJhY2spOworICAgIH0KKyAgICAKKyAgICBmdW5jdGlvbiBnZXRCcm93c2VyTGFuZ0NhbGxiYWNrKHJldHVyblZhbHVlKSB7CisgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJnZXRCcm93c2VyTGFuZ0NhbGxiYWNrICIscmV0dXJuVmFsdWUpOworICAgICAgICBpZiAoYnJvd3NlckxhbmdSZXR1cm5PYmplY3QgIT0gbnVsbCkgeworICAgICAgICAgICAgYnJvd3NlckxhbmdSZXR1cm5PYmplY3QuY2FsbGJhY2socmV0dXJuVmFsdWUpOworICAgICAgICB9CisgICAgfQorCQorCitdXT4KKzwvc2NyaXB0PgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2Z1bmN0aW9ucy5senggYi9XZWJDb250ZW50L3NyYy9iYXNlL2Z1bmN0aW9ucy5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc2MTFkNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvZnVuY3Rpb25zLmx6eApAQCAtMCwwICsxLDQwOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPHNjcmlwdD4KKzwhW0NEQVRBWworCit2YXIgbGFiZWxPYmo7CisgICAgCit2YXIgdGVtcEFjdGlvbkZvck5hdmkgPSBudWxsOworCisvLyBMb2FkIExhYmVscyBmcm9tIExpc3QKK3ZhciBsYWJlbHMgPSBuZXcgT2JqZWN0KCk7CisKK1N0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aCA9IGZ1bmN0aW9uKHByZWZpeCkgeworICAgIHJldHVybiAodGhpcy5pbmRleE9mKHByZWZpeCkgPT09IDApOworfTsJCisKK3ZhciBfbGFiZWxPYmplY3QgPSBuZXcgQXJyYXkoKTsKKwordmFyIFJlZ0V4cFRvb2x0aXBsaXN0ID0gbnVsbDsKKworZnVuY3Rpb24gZGlzYWJsZXNUb29sdGlwcyhvYmopeworICBpZihSZWdFeHBUb29sdGlwbGlzdCE9bnVsbCl7CisgICAgUmVnRXhwVG9vbHRpcGxpc3QuZGVzdHJveSgpOworICAgIFJlZ0V4cFRvb2x0aXBsaXN0PW51bGw7CisgIH0KKyAgUmVnRXhwVG9vbHRpcGxpc3QgPSBvYmo7Cit9CisKK2Z1bmN0aW9uIHNldExhYmVsT2JqZWN0KGxhYmxlT2JqKXsKKwlfbGFiZWxPYmplY3QgPSBsYWJsZU9iajsKK30KKworZnVuY3Rpb24gZ2V0TGFiZWxPYmplY3RCeUlkKGxhYmVsaWQpeworCWZvciAodmFyIGk9MDtpPF9sYWJlbE9iamVjdC5sZW5ndGg7aSsrKXsKKwkJaWYgKE51bWJlcihfbGFiZWxPYmplY3RbaV1bJ2xhYmVsaWQnXSk9PWxhYmVsaWQpeworCQkJcmV0dXJuIF9sYWJlbE9iamVjdFtpXTsKKwkJfQorCX0KK30KKworZnVuY3Rpb24gZ2V0TGFiZWxOYW1lR2xvYihsYWJlbGlkKXsKKwlmb3IgKHZhciBpPTA7aTxfbGFiZWxPYmplY3QubGVuZ3RoO2krKyl7CisJCWlmIChOdW1iZXIoX2xhYmVsT2JqZWN0W2ldWydsYWJlbGlkJ10pPT1sYWJlbGlkKXsKKwkJCXJldHVybiBfbGFiZWxPYmplY3RbaV1bJ2xhYmVsdmFsdWUnXTsKKwkJfQorCX0KK30KKyAgICAKK3ZhciBjdXJyZW50TW91c2VXaGVlbE9iamVjdCA9IG51bGw7CisgICAgCitmdW5jdGlvbiBzZXRDdXJyZW50TW91c2VXaGVlbE9iamVjdChvYmopIHsKKyAgICBjdXJyZW50TW91c2VXaGVlbE9iamVjdD1vYmo7Cit9ICAgIAorZnVuY3Rpb24gZ2V0Q3VycmVudE1vdXNlV2hlZWxPYmplY3Qob2JqKSB7CisgICAgcmV0dXJuIGN1cnJlbnRNb3VzZVdoZWVsT2JqZWN0OworfSAgCitmdW5jdGlvbiBkaXNhYmxlQ3VycmVudE1vdXNlV2hlZWxPYmplY3QoKSB7CisgICAgY3VycmVudE1vdXNlV2hlZWxPYmplY3Q9bnVsbDsKK30gIAorCitmdW5jdGlvbiBzZXRMYWJlbE9iamVjdEJ5SHVuZHJlZChubyxvYmopeworICAgIGNhbnZhcy5zZW5kVmlhTG9jYWxDb25uZWN0aW9uKGNhbnZhcy5ydG1wX2xjX25hbWUsICJoaWJBZGFwdGVyX3NldExhYmVsT2JqZWN0QnlIdW5kcmVkIiwgW25vLCBvYmpdKTsgCisgICAJZm9yICh2YXIgaSA9IDA7IGkgPCBvYmoubGVuZ3RoOyArK2kpIHsKKwkgICAgbGFiZWxzWyJpZCIgKyBvYmpbaV0uaWRdID0gb2JqW2ldLnZhbHVlOworICAgCX0KK30KKworZnVuY3Rpb24gZ2V0TGFiZWxUYWcobGFiZWxpZCl7CisJdmFyIGwgPSBsYWJlbHNbImlkIiArIGxhYmVsaWRdOworCWlmIChsICE9IHVuZGVmaW5lZCkgeworCQlpZiAoJGRlYnVnKSBsICs9ICIgWyIgKyBsYWJlbGlkICsgIl0iOworCX0gZWxzZSB7CisJCWwgPSAiRXJyb3IgTWlzc2luZyBbIiArIGxhYmVsaWQgKyAiXSI7CisJfQorICAgIHJldHVybiBsOworfQorCitmdW5jdGlvbiBxdWlja2xpbmtBY3QoYWN0aW9uKSB7CisgICAgLy8gaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiRlVOQy9xdWlja2xpbmtBY3QiLGFjdGlvbik7CisgICAgbG9hZENvbnRlbnQoe2FjdGlvbjogYWN0aW9uLCBwYXJhbXM6IG51bGx9LG51bGwsbnVsbCk7Cit9ICAgICAgICAgICAgCisKK2Z1bmN0aW9uIGxvYWRDb250ZW50KG9iaixwYXJlbnRvYmoscHJlcGFyZW50b2JqKXsKKyAgICBpZigkZGVidWcpIERlYnVnLndyaXRlKCJGVU5DL2xvYWRDb250ZW50OiAiLCBvYmopOworICAgIAorCWlmIChvYmouYWN0aW9uIT0ibG9nb3V0IikgeworCSAgICB0ZW1wQWN0aW9uRm9yTmF2aSA9IHthY3Rpb246IG9iai5hY3Rpb24sIHBhcmFtczogb2JqLnBhcmFtc307CisJCWlmICghY2xlYXJTdGFnZUNvbnRlbnQoKSkgeworCQkJbG9hZENvbnRlbnRCeVRlbXBBY3Rpb25Gb3JOYXZpKCk7CisJCX0KKwl9IGVsc2UgeworCQluZXcgbHoubG9nb3V0Q29uZmlybShjYW52YXMse29iamVjdHNUb0NsZWFuOiBvYmp9KTsKKwl9CisgICAgCit9CisgICAgCitmdW5jdGlvbiBsb2FkQ29udGVudEJ5VGVtcEFjdGlvbkZvck5hdmkoKXsKKyAgICAvLyBpZigkZGVidWcpIERlYnVnLndyaXRlKCJGVU5DL2xvYWRDb250ZW50QnlUZW1wQWN0aW9uRm9yTmF2aSIpOworICAgIAorCWlmIChjYW52YXMucm9vbUp1bXBJZCAhPSAwKSB7CisJCWNhbnZhcy5pbml0cm9vbWlkID0gY2FudmFzLnJvb21KdW1wSWQ7CisgICAgICAgIGNhbnZhcy50aGlzaGliLmdldFJvb21CeUlkLmRvQ2FsbCgpOworCQljYW52YXMucm9vbUp1bXBJZCA9IDA7CisJfSBlbHNlIHsKKyAgICAgICAgaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiRlVOQy9sb2FkQ29udGVudEJ5U3RyaW5nIC0xLSAiLHRlbXBBY3Rpb25Gb3JOYXZpKTsKKyAgICAgICAgaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiRlVOQy9sb2FkQ29udGVudEJ5U3RyaW5nIC0yLSAiLGNhbnZhc1t0ZW1wQWN0aW9uRm9yTmF2aS5hY3Rpb25dKTsKKyAgICAgICAgaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiRlVOQy9sb2FkQ29udGVudEJ5U3RyaW5nIC0zLSAiLGx6W2NhbnZhc1t0ZW1wQWN0aW9uRm9yTmF2aS5hY3Rpb25dXSk7CisgICAgICAgIAorICAgICAgICBuZXcgbHpbY2FudmFzW3RlbXBBY3Rpb25Gb3JOYXZpLmFjdGlvbl1dKGNhbnZhcy5tYWluX2NvbnRlbnQuX2NvbnRlbnQuaW5uZXIsIHtwYXJhbXM6IHRlbXBBY3Rpb25Gb3JOYXZpLnBhcmFtc30pOworCX0KK30gICAgCisKK2Z1bmN0aW9uIGNsZWFyU3RhZ2VDb250ZW50KCl7CisgICAgcmV0dXJuIGNhbnZhcy5tYWluX2NvbnRlbnQuX2NvbnRlbnQuY2xlYXJBbGwoKTsKK30KKworZnVuY3Rpb24gc2V0TGFiZWxPYmplY3QobGFiZWxPYmpSZWYpeworICAgIC8vIGlmKCRkZWJ1ZykgRGVidWcud3JpdGUoIkZVTkMvc2V0TGFiZWxPYmplY3QiLGxhYmVsT2JqUmVmKTsKKyAgICBsYWJlbE9iaiA9IGxhYmVsT2JqUmVmOworfQorCitmdW5jdGlvbiBnZXRMYWJlbE5hbWVYTUxDUk0obGFiZWxpZCl7CisgICAgLy8gaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiRlVOQy9nZXRMYWJlbE5hbWVYTUxDUk0iLGxhYmVsaWQpOworICAgIGZvciAodmFyIGk9MDtpPGxhYmVsT2JqLmxlbmd0aDtpKyspeworICAgICAgICBpZiAobGFiZWxpZD09bGFiZWxPYmpbaV0uZmllbGR2YWx1ZXNfaWQpeworICAgICAgICAgICAgcmV0dXJuIGxhYmVsT2JqW2ldLnZhbHVlOworICAgICAgICB9CisgICAgfQorICAgIAorfQorCitmdW5jdGlvbiBnZXRTdHJpbmdUaW1lKCl7CisgICAgdmFyIGRhdGVPYmogPSBuZXcgRGF0ZSgpOworICAgIHZhciBob3VycyA9IGRhdGVPYmouZ2V0SG91cnMoKTsKKyAgICBpZiAoaG91cnM8MTApIGhvdXJzPSIwIitob3VyczsKKyAgICB2YXIgbWludXRlcyA9IGRhdGVPYmouZ2V0TWludXRlcygpOworICAgIGlmIChtaW51dGVzPDEwKSBtaW51dGVzPSIwIittaW51dGVzOworICAgIHJldHVybiAnJytob3VycysnOicrbWludXRlczsKK30gICAKKworZnVuY3Rpb24gZ2V0U3RyaW5nVGltZVdpdGhTZWNvbmRzKCl7CisgICAgdmFyIGRhdGVPYmogPSBuZXcgRGF0ZSgpOworICAgIHZhciBob3VycyA9IGRhdGVPYmouZ2V0SG91cnMoKTsKKyAgICBpZiAoaG91cnM8MTApIGhvdXJzPSIwIitob3VyczsKKyAgICB2YXIgbWludXRlcyA9IGRhdGVPYmouZ2V0TWludXRlcygpOworICAgIGlmIChtaW51dGVzPDEwKSBtaW51dGVzPSIwIittaW51dGVzOworICAgIHZhciBzZWNvbmRzID0gZGF0ZU9iai5nZXRTZWNvbmRzKCk7CisgICAgaWYgKHNlY29uZHM8MTApIHNlY29uZHM9IjAiK3NlY29uZHM7CisgICAgcmV0dXJuICcnK2hvdXJzKyc6JyttaW51dGVzKyc6JytzZWNvbmRzOworfSAgIAorCitmdW5jdGlvbiBwYXJzZURhdGVUb1N0cmluZyhkYXRlT2JqKXsKKyAgICAvLyBpZigkZGVidWcpIERlYnVnLndyaXRlKCJGVU5DL3BhcnNlRGF0ZVRvU3RyaW5nIixkYXRlT2JqKTsKKyAgICBpZiAoZGF0ZU9iaj09bnVsbCkgcmV0dXJuICIiOworICAgIHZhciBkID0gZGF0ZU9iai5nZXREYXRlKCk7CisgICAgaWYgKGQ8MTApIGQgPSAiMCIrZDsKKyAgICB2YXIgbSA9IGRhdGVPYmouZ2V0TW9udGgoKSsxOworICAgIGlmIChtPDEwKSBtID0gIjAiK207CisgICAgdmFyIHkgPSBkYXRlT2JqLmdldEZ1bGxZZWFyKCk7CisgICAgaWYgKHk8MTApIHkgPSAiMCIreTsKKyAgICByZXR1cm4gZCsnLicrbSsnLicreTsKK30KKworZnVuY3Rpb24gcGFyc2VEYXRlVG9TdHJpbmdUaW1lT25seShkYXRlT2JqKXsKKyAgICAvLyBpZigkZGVidWcpIERlYnVnLndyaXRlKCJGVU5DL3BhcnNlRGF0ZVRvU3RyaW5nVGltZSIsZGF0ZU9iaik7CisgICAgaWYgKGRhdGVPYmo9PW51bGwpIHJldHVybiAiIjsKKyAgICB2YXIgZCA9IGRhdGVPYmouZ2V0RGF0ZSgpOworICAgIGlmIChkPDEwKSBkID0gIjAiK2Q7CisgICAgdmFyIG1vID0gZGF0ZU9iai5nZXRNb250aCgpKzE7CisgICAgaWYgKG1vPDEwKSBtbyA9ICIwIittbzsKKyAgICB2YXIgeSA9IGRhdGVPYmouZ2V0RnVsbFllYXIoKTsKKyAgICBpZiAoeTwxMCkgeSA9ICIwIit5OworICAgIHZhciBoID0gZGF0ZU9iai5nZXRIb3VycygpOworICAgIGlmIChoPDEwKSBoID0gIjAiK2g7ICAgIAorICAgIHZhciBtID0gZGF0ZU9iai5nZXRNaW51dGVzKCk7CisgICAgaWYgKG08MTApIG0gPSAiMCIrbTsgICAgICAgIAorICAgIHJldHVybiBoKyc6JyttOworfQorCitmdW5jdGlvbiBwYXJzZVRpbWVTdHJpbmdUb0RhdGUodCl7CisgICAgLy8gaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiRlVOQy9wYXJzZVN0cmluZ1RvVGltZSIsdCk7CisgICAgaWYgKHQubGVuZ3RoPT01KXsKKyAgICAgICAgdmFyIGQgPSAxOworICAgICAgICB2YXIgbSA9IDE7CisgICAgICAgIHZhciB5ID0gMTk3MDsKKyAgICAgICAgdmFyIHN0ZCA9IE51bWJlcih0LnN1YnN0cmluZygwLCAyKSk7CisgICAgICAgIHZhciBtaW4gPSBOdW1iZXIodC5zdWJzdHJpbmcoMywgNSkpOworICAgICAgICBpZiAoIWlzTmFOKGQpICYmICFpc05hTihtKSAmJiAhaXNOYU4oeSkpeworICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInBhcnNlVGltZVN0cmluZ1RvRGF0ZTogIixuZXcgRGF0ZSh5LCBtLTEsIGQsIHN0ZCwgbWluKSkKKyAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZSh5LCBtLTEsIGQsIHN0ZCwgbWluKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZSgpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIG5ldyBEYXRlKCk7CisgICAgfQorfQorCitmdW5jdGlvbiBwYXJzZURhdGVUb1N0cmluZ1RpbWUoZGF0ZU9iail7CisgICAgLy8gaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiRlVOQy9wYXJzZURhdGVUb1N0cmluZ1RpbWUiLGRhdGVPYmopOworICAgIGlmIChkYXRlT2JqPT1udWxsKSByZXR1cm4gIiI7CisgICAgdmFyIGQgPSBkYXRlT2JqLmdldERhdGUoKTsKKyAgICBpZiAoZDwxMCkgZCA9ICIwIitkOworICAgIHZhciBtbyA9IGRhdGVPYmouZ2V0TW9udGgoKSsxOworICAgIGlmIChtbzwxMCkgbW8gPSAiMCIrbW87CisgICAgdmFyIHkgPSBkYXRlT2JqLmdldEZ1bGxZZWFyKCk7CisgICAgaWYgKHk8MTApIHkgPSAiMCIreTsKKyAgICB2YXIgaCA9IGRhdGVPYmouZ2V0SG91cnMoKTsKKyAgICBpZiAoaDwxMCkgaCA9ICIwIitoOyAgICAKKyAgICB2YXIgbSA9IGRhdGVPYmouZ2V0TWludXRlcygpOworICAgIGlmIChtPDEwKSBtID0gIjAiK207ICAgICAgICAKKyAgICByZXR1cm4gZCsnLicrbW8rJy4nK3krJyAnK2grJzonK207Cit9CisKK2Z1bmN0aW9uIHBhcnNlRGF0ZVRvU3RyaW5nVGltZVNlY29uZHMoZGF0ZU9iail7CisgICAgLy8gaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiRlVOQy9wYXJzZURhdGVUb1N0cmluZ1RpbWUiLGRhdGVPYmopOworICAgIGlmIChkYXRlT2JqPT1udWxsKSByZXR1cm4gIiI7CisgICAgdmFyIGQgPSBkYXRlT2JqLmdldERhdGUoKTsKKyAgICBpZiAoZDwxMCkgZCA9ICIwIitkOworICAgIHZhciBtbyA9IGRhdGVPYmouZ2V0TW9udGgoKSsxOworICAgIGlmIChtbzwxMCkgbW8gPSAiMCIrbW87CisgICAgdmFyIHkgPSBkYXRlT2JqLmdldEZ1bGxZZWFyKCk7CisgICAgaWYgKHk8MTApIHkgPSAiMCIreTsKKyAgICB2YXIgaCA9IGRhdGVPYmouZ2V0SG91cnMoKTsKKyAgICBpZiAoaDwxMCkgaCA9ICIwIitoOyAgICAKKyAgICB2YXIgbSA9IGRhdGVPYmouZ2V0TWludXRlcygpOworICAgIGlmIChtPDEwKSBtID0gIjAiK207IAorICAgIHZhciBzID0gZGF0ZU9iai5nZXRTZWNvbmRzKCk7CisgICAgaWYgKHM8MTApIHMgPSAiMCIrczsgCisgICAgcmV0dXJuIGQrJy4nK21vKycuJyt5KycgJytoKyc6JyttKyc6JytzOworfQorCitmdW5jdGlvbiBwYXJzZVN0cmluZ1RvRGF0ZSh0KXsKKyAgICAvLyBpZigkZGVidWcpIERlYnVnLndyaXRlKCJGVU5DL3BhcnNlU3RyaW5nVG9EYXRlIix0KTsKKyAgICBpZiAodC5sZW5ndGg9PTEwKXsKKyAgICAgICAgdmFyIGQgPSBOdW1iZXIodC5zdWJzdHJpbmcoMCwgMikpOworICAgICAgICB2YXIgbSA9IE51bWJlcih0LnN1YnN0cmluZygzLCA1KSk7CisgICAgICAgIHZhciB5ID0gTnVtYmVyKHQuc3Vic3RyaW5nKDYsIDEwKSk7CisgICAgICAgIGlmICghaXNOYU4oZCkgJiYgIWlzTmFOKG0pICYmICFpc05hTih5KSl7CisgICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoeSwgbS0xLCBkKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZSgpOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dXJuIG5ldyBEYXRlKCk7CisgICAgfQorfQorCitmdW5jdGlvbiBwYXJzZVN0cmluZ1RvRGF0ZVRpbWUodCl7CisgICAgLy8gaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiRlVOQy9wYXJzZVN0cmluZ1RvRGF0ZSIsdCk7CisgICAgaWYgKHQubGVuZ3RoPT0xNSl7CisgICAgICAgIHZhciBkID0gTnVtYmVyKHQuc3Vic3RyaW5nKDAsIDIpKTsKKyAgICAgICAgdmFyIG0gPSBOdW1iZXIodC5zdWJzdHJpbmcoMywgNSkpOworICAgICAgICB2YXIgeSA9IE51bWJlcih0LnN1YnN0cmluZyg2LCAxMCkpOworICAgICAgICB2YXIgaCA9IE51bWJlcih0LnN1YnN0cmluZygxMCwgMTIpKTsKKyAgICAgICAgdmFyIG1pbiA9IE51bWJlcih0LnN1YnN0cmluZygxMywgMTUpKTsKKyAgICAgICAgaWYgKCFpc05hTihkKSAmJiAhaXNOYU4obSkgJiYgIWlzTmFOKHkpKXsKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJwYXJzZVN0cmluZ1RvRGF0ZVRpbWUrOiAiLG5ldyBEYXRlKHksIG0tMSwgZCwgaCwgbWluKSkKKyAgICAgICAgICAgIHJldHVybiBuZXcgRGF0ZSh5LCBtLTEsIGQsIGgsIG1pbik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gbmV3IERhdGUoKTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBuZXcgRGF0ZSgpOworICAgIH0KK30KKworZnVuY3Rpb24gZ2V0U3RyaW5nRGF0ZUZpbGVTYXZlKCl7CisgICAgLy8gaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiRlVOQy9nZXRTdHJpbmdEYXRlRmlsZVNhdmUiKTsKKyAgICB2YXIgZGF0ZU9iaiA9IG5ldyBEYXRlKCk7CisgICAgdmFyIGhvdXJzID0gZGF0ZU9iai5nZXRIb3VycygpOworICAgIGlmIChob3VyczwxMCkgaG91cnM9IjAiK2hvdXJzOworICAgIHZhciBtaW51dGVzID0gZGF0ZU9iai5nZXRNaW51dGVzKCk7CisgICAgaWYgKG1pbnV0ZXM8MTApIG1pbnV0ZXM9IjAiK21pbnV0ZXM7CisgICAgdmFyIGRhdGUgPSBkYXRlT2JqLmdldERhdGUoKTsKKyAgICBpZiAoZGF0ZTwxMCkgZGF0ZT0iMCIrZGF0ZTsKKyAgICB2YXIgbW9udGggPSBkYXRlT2JqLmdldE1vbnRoKCkrMTsKKyAgICBpZiAobW9udGg8MTApIG1vbnRoPSIwIittb250aDsKKyAgICByZXR1cm4gZGF0ZSsnXycrbW9udGgrJ18nK2RhdGVPYmouZ2V0RnVsbFllYXIoKSsnX2F0XycraG91cnMrJ18nK21pbnV0ZXM7Cit9IAorCitmdW5jdGlvbiBnZXRTdHJpbmdUaW1lQnlUaW1lU3RhbXAodFN0YW1wKXsKKyAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZ2V0U3RyaW5nVGltZUJ5VGltZVN0YW1wICIrdFN0YW1wKTsKKyAgICB2YXIgZGF0ZU9iaiA9IG5ldyBEYXRlKHRTdGFtcCk7CisgICAgdmFyIGhvdXJzID0gZGF0ZU9iai5nZXRIb3VycygpOworICAgIGlmIChob3VyczwxMCkgaG91cnM9IjAiK2hvdXJzOworICAgIHZhciBtaW51dGVzID0gZGF0ZU9iai5nZXRNaW51dGVzKCk7CisgICAgaWYgKG1pbnV0ZXM8MTApIG1pbnV0ZXM9IjAiK21pbnV0ZXM7CisgICAgdmFyIHNlY29uZHMgPSBkYXRlT2JqLmdldFNlY29uZHMoKTsKKyAgICBpZiAoc2Vjb25kczwxMCkgc2Vjb25kcz0iMCIrc2Vjb25kczsKKyAgICByZXR1cm4gJycraG91cnMrJzonK21pbnV0ZXMrJzonK3NlY29uZHM7Cit9ICAKKworCitmdW5jdGlvbiBzdHJ0cmltKHN0cikKK3sKKyAgICBmb3IodmFyIGkgPSAwOyBzdHIuY2hhckNvZGVBdChpKSA8IDMzOyBpKyspOworICAgIGZvcih2YXIgaiA9IHN0ci5sZW5ndGgtMTsgc3RyLmNoYXJDb2RlQXQoaikgPCAzMzsgai0tKTsKKyAgICByZXR1cm4gc3RyLnN1YnN0cmluZyhpLCBqKzEpOworfQorCitmdW5jdGlvbiBwYXJzZURhdGVUaW1lU3RyaW5nRnJvbVhtbFN0cmluZyhzdHIpIHsgCisJLy8wMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwCisJLy8yMDEyLTAzLTA4VDA2OjMwOjAwLjAwMCswMTowMAorCS8vMjAxMi0wMy0xMVQxNTowMDowMC43MTNaCisJdmFyIHRZZWFyID0gc3RyLnN1YnN0cigwLDQpOworCXZhciB0TW9udGggPSBzdHIuc3Vic3RyKDUsMik7CisJdmFyIHREYXkgPSBzdHIuc3Vic3RyKDgsMik7CisJdmFyIHRIb3VyID0gc3RyLnN1YnN0cigxMSwyKTsKKwl2YXIgdE1pbiA9IHN0ci5zdWJzdHIoMTQsMik7CisJcmV0dXJuICIiK3REYXkrIi4iK3RNb250aCsiLiIrdFllYXIrIiAiK3RIb3VyKyI6Iit0TWluOworfQorCitmdW5jdGlvbiBwYXJzZURhdGVTdHJpbmdGcm9tWG1sU3RyaW5nKHN0cikgeyAKKwkvLzAxMjM0NTY3ODkwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAKKwkvLzIwMTItMDMtMDhUMDY6MzA6MDAuMDAwKzAxOjAwCisJLy8yMDEyLTAzLTExVDE1OjAwOjAwLjcxM1oKKwl2YXIgdFllYXIgPSBzdHIuc3Vic3RyKDAsNCk7CisJdmFyIHRNb250aCA9IHN0ci5zdWJzdHIoNSwyKTsKKwl2YXIgdERheSA9IHN0ci5zdWJzdHIoOCwyKTsKKwlyZXR1cm4gIiIrdERheSsiLiIrdE1vbnRoKyIuIit0WWVhcjsKK30KKworZnVuY3Rpb24gcGFyc2VUaW1lU3RyaW5nRnJvbVhtbFN0cmluZyhzdHIpIHsgCisJLy8wMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwCisJLy8yMDEyLTAzLTA4VDA2OjMwOjAwLjAwMCswMTowMAorCS8vMjAxMi0wMy0xMVQxNTowMDowMC43MTNaCisJdmFyIHRIb3VyID0gc3RyLnN1YnN0cigxMSwyKTsKKwl2YXIgdE1pbiA9IHN0ci5zdWJzdHIoMTQsMik7CisJCisJcmV0dXJuICIiK3RIb3VyKyI6Iit0TWluOworfQorCisvKgorICogcGFyc2UgZGF0ZSBmcm9tIHN0cmluZworICogc2FtcGxlIHN0cmluZ3M6CisgKiAyMDEyLTAzLTA1CisgKi8KK2Z1bmN0aW9uIHBhcnNlRGF0ZU9ubHlGcm9tWG1sU3RyaW5nKHN0cikgeyAKKwl2YXIgdFllYXIgPSBzdHIuc3Vic3RyKDAsNCk7CisJdmFyIHRNb250aCA9IHN0ci5zdWJzdHIoNSwyKTsKKwl2YXIgdERheSA9IHN0ci5zdWJzdHIoOCwyKTsKKwlyZXR1cm4gbmV3IERhdGUodFllYXIsTnVtYmVyKHRNb250aCktMSx0RGF5KTsKK30KKworCisvKgorICogcGFyc2UgZGF0ZSBmcm9tIHN0cmluZworICogc2FtcGxlIHN0cmluZ3M6CisgKiAwMTIzNDU2Nzg5MDEyMzQ1Njc4OTAxMjM0NTY3ODkwCisgKiAyMDEyLTAzLTA4VDA2OjMwOjAwLjAwMCswMTowMAorICogMjAxMi0wMy0xMVQxNTowMDowMC43MTNaCisgKi8KK2Z1bmN0aW9uIHBhcnNlRGF0ZVRpbWVGcm9tWG1sU3RyaW5nKHN0cikgeyAKKwl2YXIgdFllYXIgPSBzdHIuc3Vic3RyKDAsNCk7CisJdmFyIHRNb250aCA9IHN0ci5zdWJzdHIoNSwyKTsKKwl2YXIgdERheSA9IHN0ci5zdWJzdHIoOCwyKTsKKwl2YXIgdEhvdXIgPSBzdHIuc3Vic3RyKDExLDIpOworCXZhciB0TWluID0gc3RyLnN1YnN0cigxNCwyKTsKKwlyZXR1cm4gbmV3IERhdGUodFllYXIsTnVtYmVyKHRNb250aCktMSx0RGF5LHRIb3VyLHRNaW4sMCk7Cit9CisKKy8qKgorICogQ29ycmVjdCBSRVNUIGZvcm1hdCBmb3IgamF2YS51dGlsLkNhbGVuZGFyIGlzOiB5eXl5LW1tLWRkVEhIOk1NOlNTCisgKgorICoKKyAqLworZnVuY3Rpb24gcGFyc2VEYXRlVG9SZXN0RGF0ZUNhbGVuZGFyKGRhdGVPYmopeworICAgIGlmKCRkZWJ1ZykgRGVidWcud3JpdGUoIkZVTkMvcGFyc2VEYXRlVG9TdHJpbmdUaW1lIDEiLGRhdGVPYmopOworICAgIGlmIChkYXRlT2JqPT1udWxsKSByZXR1cm4gIiI7CisgICAgdmFyIGQgPSBkYXRlT2JqLmdldERhdGUoKTsKKyAgICBpZiAoZDwxMCkgZCA9ICIwIitkOworICAgIHZhciBtbyA9IGRhdGVPYmouZ2V0TW9udGgoKSsxOworICAgIGlmIChtbzwxMCkgbW8gPSAiMCIrbW87CisgICAgdmFyIHkgPSBkYXRlT2JqLmdldEZ1bGxZZWFyKCk7CisgICAgdmFyIGggPSBkYXRlT2JqLmdldEhvdXJzKCk7CisgICAgaWYgKGg8MTApIGggPSAiMCIraDsgICAgCisgICAgdmFyIG0gPSBkYXRlT2JqLmdldE1pbnV0ZXMoKTsKKyAgICBpZiAobTwxMCkgbSA9ICIwIittOyAKKyAgICB2YXIgcyA9IGRhdGVPYmouZ2V0U2Vjb25kcygpOworICAgIGlmIChzPDEwKSBzID0gIjAiK3M7IAorICAgIGlmKCRkZWJ1ZykgRGVidWcud3JpdGUoIkZVTkMvcGFyc2VEYXRlVG9TdHJpbmdUaW1lIDIiLCIiK3krIi0iK21vKyItIitkKyJUIitoKyI6IittKyI6IitzKTsKKyAgICByZXR1cm4gIiIreSsiLSIrbW8rIi0iK2QrIlQiK2grIjoiK20rIjoiK3M7Cit9CisKK11dPgorPC9zY3JpcHQ+CisJCQorPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvYmFzZS9oaWJlcm5hdGUvaGliUnRtcENvbm5lY3Rpb24ubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9oaWJlcm5hdGUvaGliUnRtcENvbm5lY3Rpb24ubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkOWFhN2UKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL2hpYmVybmF0ZS9oaWJSdG1wQ29ubmVjdGlvbi5sengKQEAgLTAsMCArMSwxOTY0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgICAgICAgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorICAgIAorPGRhdGFzZXQgbmFtZT0ibXlyZXN1bHRuYXZpIiAvPgorCis8ZGF0YXNldCBuYW1lPSJsYW5ndWFnZXNTZXQiIC8+ICAgICAgICAKKworPGRhdGFzZXQgbmFtZT0iY291bnRyeVNldCIgLz4KKzxkYXRhc2V0IG5hbWU9InRpbWVab25lU2V0IiAvPgorCis8Y2xhc3MgbmFtZT0idXNlclN0YXR1cyIgZXh0ZW5kcz0idmlldyIgd2lkdGg9IjI1MCIgaGVpZ2h0PSIzMCI+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJzdGF0dXNUZXh0IiB0eXBlPSJzdHJpbmciIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJzdGF0dXNDb2xvciIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0iMCIgLz4KKworICAgIDx0ZXh0IG5hbWU9InN0YXR1cyIgd2lkdGg9IjI0MCIgaGVpZ2h0PSIyMCIgeD0iNSIgeT0iNSIgZm9udHN0eWxlPSJib2xkIiBmZ2NvbG9yPSIwIiB0ZXh0PSJkZWZhdWx0dGV4dCIgZm9udHNpemU9IjEwIi8+CisKKyAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgICAgICB0aGlzLnN0YXR1cy5zZXRBdHRyaWJ1dGUoInRleHQiLCB0aGlzLnN0YXR1c1RleHQpOworICAgICAgICB0aGlzLnN0YXR1cy5zZXRBdHRyaWJ1dGUoImZnY29sb3IiLCB0aGlzLnN0YXR1c0NvbG9yKTsKKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCAidmlzaWJsZSIpOworICAgICAgICBsei5UaW1lci5hZGRUaW1lciggbmV3IEx6RGVsZWdhdGUoIHRoaXMsICJzZWxmRGVzdHJveSIgKSwgMzAwMCApOworICAgIDwvaGFuZGxlcj4KKworICAgIDxtZXRob2QgbmFtZT0ic2VsZkRlc3Ryb3kiIGFyZ3M9Imlnbm9yZT1udWxsIj4KKyAgICAgICAgdGhpcy5kZXN0cm95KCk7CisgICAgPC9tZXRob2Q+Cis8L2NsYXNzPgorCis8Y2xhc3MgbmFtZT0iaGliUnRtcENvbm5lY3Rpb24iIGV4dGVuZHM9InJ0bXBDb25uZWN0aW9uIiBkZWJ1Zz0iZmFsc2UiCisgICAgc3JjPSIkb25jZXsgdGhpcy5nZXRVcmwoKSB9IiA+CisKKyAgICA8YXR0cmlidXRlIG5hbWU9ImNvdW50ZXJyb3IiIHR5cGU9Im51bWJlciIgdmFsdWU9IjAiIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJsb2FkZXJWYXIiIHZhbHVlPSJudWxsIiAvPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0idXNlclNjb3BlIiB2YWx1ZT0iaGliZXJuYXRlIiB0eXBlPSJzdHJpbmciIC8+CisgICAgCisgICAgPCEtLSByZWZyZXNoaW5nIHRoZSBzZXNzaW9uIHJlZ3VsYXJ5IC0tPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0icmVmcmVzaERlbGVnYXRlIiB2YWx1ZT0ibnVsbCIgLz4KKyAgICAKKyAgICA8IS0tIFVzZXJJZC0tPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iVXNlcklEIiB2YWx1ZT0iMSIgdHlwZT0ibnVtYmVyIiAvPgorICAgIDwhLS0gcmVjb25uZWN0IGFmdGVyIGVhY2ggY29uZmVyZW5jZVZpZXcgLS0+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJyZWNvbm5lY3RBZnRlclJvb21sZWZ0IiB0eXBlPSJib29sZWFuIiB2YWx1ZT0iZmFsc2UiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJyZWNvbm5lY3RlZFJvb21JbnN0YW5jZSIgdmFsdWU9Im51bGwiIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJyZWNvbm5lY3Rpb25BY3Rpb24iIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9InJlY29ubmVjdE9ialJlZiIgdmFsdWU9Im51bGwiIC8+CisgICAgICAgICAKKyAgICAgPGF0dHJpYnV0ZSBuYW1lPSJ1c2Vyb2JqZWN0IiB2YWx1ZT0ibnVsbCIgLz4KKyAgICAgCisgICAgIDwhLS0gZGVmYXVsdCB3aWxsIGJlIGxvYWRlZCBvbiBzdGFydHVwIC0tPgorICAgICA8YXR0cmlidXRlIG5hbWU9InVzZXJsYW5nIiB2YWx1ZT0iMSIgdHlwZT0ibnVtYmVyIiAvPgorICAgICAKKyAgICAgPCEtLSBUaGUgZGVmYXVsdCBMYW5ndWFnZSB3aWxsIGJlIGxvYWRlZCBvbiBpbml0ICAtLT4KKyAgICAgPGF0dHJpYnV0ZSBuYW1lPSJpbml0bGFuZ3VhZ2VMb2FkZWQiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICAgCisgICAgIDwhLS0gVGhpcyBkb21haW4gaXMgdGhlIG9yZ2RvbWFpbiB1c2VkIGluIHRoZSB2aWRlby1jb25mZXJlbmNlIC0tPgorICAgICA8YXR0cmlidXRlIG5hbWU9ImNvbmZlcmVuY2Vkb21haW4iIHZhbHVlPSJwdWJsaWMiIHR5cGU9InN0cmluZyIgLz4KKyAgICAgCisgICAgIDwhLS0gaWYgdGhpcyBjb25uZWN0aW9uIGlzIHVzZWQgZm9yIHRlc3RpbmcgdGhlIGFwcAorICAgICBzZWUgdGVzdC1zZXR1cC5senggLS0+CisgICAgIDxhdHRyaWJ1dGUgbmFtZT0idGVzdEFwcExvYWRpbmciIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICAgCisgICAgIDwhLS0gCisgICAgICAgIHRoZSByZWFsIFJPT01fSUQKKyAgICAgLS0+CisgICAgIDxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudHJvb21pZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKyAgICAgCisgICAgIDwhLS0gVGhpcyBpcyB0aGUgY3VycmVudCBkb21haW4gdGhlIHVzZXIgaGFzIGxvZ2dlZC1pbiAtLT4KKyAgICAgPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50ZG9tYWluIiB2YWx1ZT0iZG9tYWluMSIgdHlwZT0ic3RyaW5nIiAvPgorICAgICA8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRkb21haW5PYmoiIHZhbHVlPSJkb21haW4xIiB0eXBlPSJzdHJpbmciIC8+CisgICAgIAorICAgICA8IS0tLSB0aGUgY3VycmVudCBJbnZpdGF0aW9uLU9iamVjdCAtLT4KKyAgICAgPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50SW52aXRhdGlvbiIgdmFsdWU9Im51bGwiIC8+CisgICAgCisJPCEtLS0gdGhlIGN1cnJlbnQgRGFzaGJvYXJkIGNvbmZpZyAtLT4KKwk8YXR0cmlidXRlIG5hbWU9ImRhc2hib2FyZENvbmZpZyIgdmFsdWU9Im51bGwiIC8+CisgICAgIAorICAgIDwhLS0gc2hvd3Mgd2hhdCBraW5kIG9mIGNvbmZlcmVuY2VWaWV3IGl0IGlzIGF0IHRoZSBtb21lbnQKKyAgICAgICAgd2V0aGVyIGl0cyBjb25mZXJlbmNlVmlldyBvciBhdWRpZW5jZVZpZXcgLS0+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJtb2R1cyIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorICAgIAorICAgIDwhLS0gc2hvd3Mgd2hhdCBraW5kIG9mIHJvb20gdGhlIHVzZSBpcyBwdWJsaWMgb3IgcHJpdmF0ZSAtLT4KKyAgICA8YXR0cmlidXRlIG5hbWU9InJvb210eXBlIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgICAgICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0ic2hvd0tpY2tNZXNzYWdlIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9InNob3dGdWxsTWVzc2FnZSIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIi8+CisgICAgICAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9InVzZVJUTVBUIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJnZXRQcm90b2NvbCI+CisgICAgCWlmIChjYW52YXMudXNlU1NMKSB7CisgICAgCQlyZXR1cm4gInJ0bXBzIjsKKyAgICAJfQorICAgIAlpZiAodGhpcy51c2VSVE1QVCkgeworICAgIAkJcmV0dXJuICJydG1wdCI7CisgICAgCX0KKyAgICAJcmV0dXJuICJydG1wIjsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImdldFBvcnQiPgorICAgIAlpZiAoY2FudmFzLnVzZVNTTCkgeworICAgIAkJaWYgKGNhbnZhcy5pc1NsYXZlSG9zdGVkKSB7CisgICAgCQkJcmV0dXJuIGNhbnZhcy5zbGF2ZVJ0bXBzc2xwb3J0OworICAgIAkJfQorICAgICAgICAgICAgcmV0dXJuIGNhbnZhcy5ydG1wc3NscG9ydDsKKyAgICAgICAgfQorICAgIAlpZiAodGhpcy51c2VSVE1QVCkgeworICAgIAkJaWYgKGNhbnZhcy5pc1NsYXZlSG9zdGVkKSB7CisgICAgCQkJcmV0dXJuIGNhbnZhcy5zbGF2ZVJ0bXBUdW5uZWxwb3J0OworICAgIAkJfQorICAgIAkJcmV0dXJuIGNhbnZhcy5ydG1wVHVubmVscG9ydDsKKyAgICAJfQorICAgIAlpZiAoY2FudmFzLmlzU2xhdmVIb3N0ZWQpIHsKKyAgICAJCXJldHVybiBjYW52YXMuc2xhdmVSdG1wcG9ydDsKKyAgICAJfQorICAgIAlyZXR1cm4gY2FudmFzLnJ0bXBwb3J0OworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iZ2V0SG9zdCI+CisgICAgCWlmIChjYW52YXMuaXNTbGF2ZUhvc3RlZCkgeworICAgIAkJcmV0dXJuIGNhbnZhcy5zbGF2ZVJ0bXBob3N0bG9jYWw7CisgICAgCX0KKyAgICAJcmV0dXJuIGNhbnZhcy5ydG1waG9zdGxvY2FsOworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iZ2V0V2ViYXBwUm9vdEtleSI+CisgICAgCWlmIChjYW52YXMuaXNTbGF2ZUhvc3RlZCkgeworICAgIAkJcmV0dXJuIGNhbnZhcy5zbGF2ZVdlYkFwcFJvb3RLZXk7CisgICAgCX0KKyAgICAJcmV0dXJuIGNhbnZhcy53ZWJBcHBSb290S2V5OworICAgIDwvbWV0aG9kPgorICAgICAgICAgCisgICAgPCEtLSAKKyAgICAJY2FudmFzLmdldFVybCgpIGNhbiBub3QgYmUgcmV1c2VkIHNpbmNlIGl0IGhhcyBkaWZmZXJlbnQgcHJvdG9jb2wgYW5kIHBvcnQgCisgICAgCWFuZCBwb3RlbnRpYWxseSBpbiBjbHVzdGVyIGFub3RoZXIgaG9zdCwgdGhlIG9ubHkgdGhpbmcgdGhhdCBzdGF5cyB0aGUgc2FtZQorICAgIAlubyBtYXR0ZXIgaWYgaG9zdGVkIG9uIHNsYXZlIG9yIG9uIG1hc3RlciwgaXMgdGhlIHNjb3BlLCBzbworICAgIAl1c2VyU2NvcGUgYWx3YXlzIHN0YXlzIHRoZSBzYW1lCisgICAgIC0tPgorICAgIDxtZXRob2QgbmFtZT0iZ2V0VXJsIj4KKyAgICAgICAgcmV0dXJuIHRoaXMuZ2V0UHJvdG9jb2woKSArICc6Ly8nICsgdGhpcy5nZXRIb3N0KCkgKyAnOicgKyB0aGlzLmdldFBvcnQoKSAKKyAgICAgICAgCQkJKyAnLycgKyB0aGlzLmdldFdlYmFwcFJvb3RLZXkoKSArICcvJyArIHRoaXMudXNlclNjb3BlOworICAgIDwvbWV0aG9kPgorICAgICAgICAgICAgIAorICAgICA8IS0tCisgICAgICAgIFRoZSBvbmNvbm5lY3QgTWV0aG9kIGlzIHRyaWdnZXJlZCBzZXZlcmFsIHRpbWVzOgorICAgICAgICAgICAgIC0gV2hlbiB5b3UgZW50ZXIgYSByb29tIHRoZSBOZXRDb25uZWN0aW9uIHdpbGwgY2xvc2UgYW5kIHJlY29ubmVjdCB0byB0aGUgU2NvcGUgb2YgdGhlIFJvb20KKyAgICAgICAgICAgICAtIFdoZW4geW91IGxlYXZlIHRoZSByb29tIGFnYWluIGl0IHdpbGwgYmUgcmUtY29ubmVjdGVkIHRvIHRoZSBkZWZhdWx0IHNjb3BlIGFnYWluCisgICAgICAtLT4KKyAgICAgPGhhbmRsZXIgbmFtZT0ib25jb25uZWN0Ij4KKyAgICAgICAgaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiaGliUnRtcENvbm5lY3Rpb24vb25jb25uZWN0Iik7CisgICAgICAgIGlmICh0aGlzLnJlY29ubmVjdGlvbkFjdGlvbil7CisgICAgICAgICAgICB0aGlzLm92ZXJ3cml0ZVB1YmxpY1NJRC5kb0NhbGwoKTsKKyAgICAgICAgICAgIHRoaXMuc2V0VXNlcm5hbWVSZWNvbm5lY3QuZG9DYWxsKCk7CisgICAgICAgIH0gZWxzZSBpZiAodGhpcy5yZWNvbm5lY3RBZnRlclJvb21sZWZ0KSB7CisgICAgICAgICAgICAvL1JldHVybiB0byBjb250ZW50IGFmdGVyIHJlY29ubmVjdAorICAgICAgICAgICAgY2FudmFzLnRoaXNoaWIucmVjb25uZWN0ZWRSb29tSW5zdGFuY2UuZGVzdHJveSgpOworICAgICAgICAgICAgdGhpcy5vdmVyd3JpdGVQdWJsaWNTSUQuZG9DYWxsKCk7CisgICAgICAgICAgICB0aGlzLnNldFVzZXJuYW1lUmVjb25uZWN0LmRvQ2FsbCgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5yZWZyZXNoRGVsZWdhdGUgPSBuZXcgTHpEZWxlZ2F0ZSggdGhpcywgInJlZnJlc2hTZXNzaW9uTWV0aCIgKTsKKyAgICAgICAgICAgIC8vbHouVGltZXIuYWRkVGltZXIoIHRoaXMucmVmcmVzaERlbGVnYXRlLCA2MDAwMCApOworICAgICAgICAgICAgbHouVGltZXIuYWRkVGltZXIoIHRoaXMucmVmcmVzaERlbGVnYXRlLCBjYW52YXMucmVmcmVzaFNlc3Npb24gKTsKKyAgICAgICAgICAgIGNhbnZhcy50aGlzaGliLmxvYWRlclZhci5zZXRQcm9ncmVzcygpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvL0xvYWQgU2Vzc2lvbiBEYXRhCisgICAgICAgICAgICB0aGlzLmdldHNlc3Npb25kYXRhLmNhbGxSUEMoKTsgICAgCisgICAgICAgIH0KKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib25kaXNjb25uZWN0Ij4KKyAgICAgICAgY2FudmFzLnNlbmRWaWFMb2NhbENvbm5lY3Rpb24oY2FudmFzLnJ0bXBfbGNfbmFtZSwgImRpc2Nvbm5lY3QiLCBbY2FudmFzLnRoaXNoaWIuc3JjXSk7CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0icmVjb25uZWN0Q29tcGxldGUiPgorICAgICAgICAgaWYgKHRoaXMucmVjb25uZWN0aW9uQWN0aW9uKXsKKyAgICAgICAgICAgIHRoaXMucmVjb25uZWN0aW9uQWN0aW9uID0gZmFsc2U7CisgICAgICAgICAgICB0aGlzLnJlY29ubmVjdE9ialJlZi5yZWNvbm5lY3RTdWNjZXNzKCk7CisgICAgICAgIH0gZWxzZSBpZiAodGhpcy5yZWNvbm5lY3RBZnRlclJvb21sZWZ0KSB7CisgICAgICAgICAgICBsb2FkQ29udGVudEJ5VGVtcEFjdGlvbkZvck5hdmkoKTsKKyAgICAgICAgfQorICAgICAgICBjYW52YXMuY3VycmVudENvbnRlbnRWaWV3LnNlbmRJbml0LnNlbmRFdmVudCh0aGlzKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbmVycm9yIiA+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgY2FudmFzLnJlbW90ZUxvZ1dyaXRlKCJlcnJvciAiICsgdGhpcy5zdGF0dXMgKyAiICIgKyB0aGlzLnNyYyArICIgIiArIHRoaXMubGFzdENhbGxlZCArICIgIiArIHRoaXMuc2hvd0tpY2tNZXNzYWdlKTsKKyAgICAgICAgICAgIGlmICh0aGlzLnNob3dGdWxsTWVzc2FnZSkgeworICAgICAgICAgICAgICAgIG5ldyBsei5sYWJlbGVycm9yUG9wdXAoY2FudmFzLHtlcnJvcmxhYmVsaWQ6OTl9KTsKKyAgICAgICAgICAgICAgICB0aGlzLnNob3dGdWxsTWVzc2FnZSA9IGZhbHNlOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zaG93S2lja01lc3NhZ2UpIHsKKyAgICAgICAgICAgICAgICBuZXcgbHoubGFiZWxlcnJvclBvcHVwKGNhbnZhcyx7ZXJyb3JsYWJlbGlkOjYwNn0pOworICAgICAgICAgICAgICAgIGNhbnZhcy5fbG9hZGluZ0FsbC5oaWRlQ29udGVudE9ubHkoKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucmVjb25uZWN0aW9uQWN0aW9uKXsKKyAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3QoKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5yZWNvbm5lY3RBZnRlclJvb21sZWZ0KSB7CisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInRoaXMucmVjb25uZWN0QWZ0ZXJSb29tbGVmdDogIix0aGlzLnJlY29ubmVjdEFmdGVyUm9vbWxlZnQpOworICAgICAgICAgICAgICAgIHRoaXMuY291bnRlcnJvcj0wOworICAgICAgICAgICAgICAgIHRoaXMuY29ubmVjdCgpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIAl0aGlzLnVzZVJUTVBUID0gdHJ1ZQorICAgICAgICAgICAgICAgIHZhciBzcmMgPSBnZXRVcmwoKTsKKyAgICAgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnc3JjJyxzcmMpOworICAgICAgICAgICAgICAgIC8vRGVidWcud3JpdGUoIm5ldyBzcmMgIix0aGlzLnNyYyk7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuY291bnRlcnJvcjwzKXsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5jb3VudGVycm9yKys7CisgICAgICAgICAgICAgICAgICAgIC8vRGVidWcud3JpdGUoInRyeSAiLHRoaXMuY291bnRlcnJvciwib25lIik7CisgICAgICAgICAgICAgICAgICAgIGNhbnZhcy50aGlzaGliLmxvYWRlclZhci5lcnJvci5zZXRBdHRyaWJ1dGUoJ3RleHQnLCJ0cnkgIit0aGlzLmNvdW50ZXJyb3IpOworICAgICAgICAgICAgICAgICAgICB0aGlzLmNvbm5lY3QoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAvL0RlYnVnLndyaXRlKCJjb25uZWN0aW9uIGZhaWxlZCIpOworICAgICAgICAgICAgICAgICAgICBjYW52YXMudGhpc2hpYi5sb2FkZXJWYXIuZXJyb3Iuc2V0QXR0cmlidXRlKCd0ZXh0Jyx0aGlzLnN0YXR1cyk7CisgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5zZXRBdHRyaWJ1dGUoJ2xvYWRpbmdtZXNzYWdlJywnY29ubmVjdGlvbiBmYWlsZWQnKTsKKyAgICAgICAgICAgICAgICAgICAgbmV3IGx6LmxhYmVsZXJyb3JQb3B1cChjYW52YXMse2Vycm9ybGFiZWxpZDo1NTZ9KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FudmFzLnRoaXNoaWIubG9hZGVyVmFyLl9zcmMuc2V0QXR0cmlidXRlKCd0ZXh0JyxzcmMpOworICAgICAgICAgICAgfQorICAgICAgICBdXT4KKyAgICA8L2hhbmRsZXI+ICAgIAorICAgIAorICAgIDxtZXRob2QgbmFtZT0icmVmcmVzaFNlc3Npb25NZXRoIiBhcmdzPSJjYWxsZWVPYmoiPgorICAgICAgICB0aGlzLnJlZnJlc2hTZXNzaW9uLmRvQ2FsbCgpOworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDwhLS0gVGhpcyBGdW5jdGlvbiBpcyBqdXN0IGZvciByZWZyZXNoaW5nIHRoZSBTZXNzaW9uIC0tPgorICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9InJlZnJlc2hTZXNzaW9uIiBmdW5jbmFtZT0idXNlcnNlcnZpY2UucmVmcmVzaFNlc3Npb24iIHNob3dMb2FkaW5nPSJmYWxzZSIgPiAgICAKKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBjYW52YXMuc2Vzc2lvbklkOzwvbWV0aG9kPjwvbmV0cGFyYW0+ICAgCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiaGliUnRtcENvbm5lY3Rpb24vcmVmcmVzaFNlc3Npb24gWyIsdmFsdWUsIl0iKTsKKyAgICAgICAgICAgIGx6LlRpbWVyLmFkZFRpbWVyKCBwYXJlbnQucmVmcmVzaERlbGVnYXRlLCBjYW52YXMucmVmcmVzaFNlc3Npb24gKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4KKyAgICAgIAorICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImdldHNlc3Npb25kYXRhIiBmdW5jbmFtZT0ieG1sY3JtLmdldHNlc3Npb25kYXRhIiA+ICAgICAgCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZSB0aGUgcnRtcGNvbm5lY3Rpb24KKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJoaWJSdG1wQ29ubmVjdGlvbi9nZXRzZXNzaW9uZGF0YSBbIix2YWx1ZSwiXSIpOworICAgICAgICAgICAgY2FudmFzLnNlc3Npb25PYmplY3QgPSB2YWx1ZTsKKyAgICAgICAgICAgIGNhbnZhcy5zZXNzaW9uSWQgPSB2YWx1ZS5zZXNzaW9uX2lkOworCQkJY2FudmFzLnNlbmRWaWFMb2NhbENvbm5lY3Rpb24oY2FudmFzLnZpZF9sY19uYW1lLCAic2V0U2Vzc2lvbklkIiwgW2NhbnZhcy5zZXNzaW9uSWRdKTsKKyAgICAgICAgICAgIGNhbnZhcy50aGlzaGliLmxvYWRlclZhci5zZXRQcm9ncmVzcygpOworICAgICAgICAgICAgcGFyZW50LmdldFB1YmxpY1NJRC5kb0NhbGwoKTsKKyAgICAgICAgPC9oYW5kbGVyPiAgCisgICAgPC9uZXRSZW1vdGVDYWxsSGliPgorICAgICAKKyAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJnZXRQdWJsaWNTSUQiIGZ1bmNuYW1lPSJnZXRQdWJsaWNTSUQiID4gICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImhpYlJ0bXBDb25uZWN0aW9uL2dldFB1YmxpY1NJRCBbIix2YWx1ZSwiXSIpOworICAgICAgICAgICAgY2FudmFzLnB1YmxpY1NJRCA9IHZhbHVlOyAgICAgCisgICAgICAgICAgICBjYW52YXMudGhpc2hpYi5sb2FkZXJWYXIuc2V0UHJvZ3Jlc3MoKTsKKwkJCXBhcmVudC5nZXRMYW5ndWFnZXMuZG9DYWxsKCk7CisgICAgICAgIDwvaGFuZGxlcj4gIAorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4KKyAgICAKKyAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJvdmVyd3JpdGVQdWJsaWNTSUQiIGZ1bmNuYW1lPSJvdmVyd3JpdGVQdWJsaWNTSUQiID4gICAgIAorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBjYW52YXMucHVibGljU0lEOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZSB0aGUgcnRtcGNvbm5lY3Rpb24KKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJvdmVyd3JpdGVQdWJsaWNTSUQ6ICIsdmFsdWUpOworICAgICAgICA8L2hhbmRsZXI+ICAKKyAgICA8L25ldFJlbW90ZUNhbGxIaWI+ICAgIAorICAgIAorICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImdldExhbmd1YWdlcyIgZnVuY25hbWU9Imxhbmd1YWdlc2VydmljZS5nZXRMYW5ndWFnZXMiIAorICAgICAgICAgICAgICAgICAgICAgIGRhdGFvYmplY3Q9Imxhbmd1YWdlc1NldCIgPiAgICAgIAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgIC8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisgICAgICAgICAgICAvL0RlYnVnLndyaXRlKCJnZXRMYW5ndWFnZXM6ICIsdmFsdWUpOworICAgICAgICAgICAgY2FudmFzLnRoaXNoaWIubG9hZGVyVmFyLnNldFByb2dyZXNzKCk7CisgICAgICAgICAgICBwYXJlbnQuZ2V0RGVmYXVsdExhbmd1YWdlLmRvQ2FsbCgpOworICAgICAgICA8L2hhbmRsZXI+ICAKKyAgICA8L25ldFJlbW90ZUNhbGxIaWI+ICAgIAorICAgIAorICAgIDxtZXRob2QgbmFtZT0ic2V0RGVmYXVsdFVzZXJMYW5ndWFnZSI+CisJICAgIDwhW0NEQVRBWworCSAgICAgICAgaWYgKHVzZXJsYW5nID09IC0xICYmIGNhbnZhcy5sYW5ndWFnZV9pZCAhPSAwKSB7CisJICAgICAgICAgICAgdXNlcmxhbmcgPSBjYW52YXMubGFuZ3VhZ2VfaWQ7CisJICAgICAgICB9IGVsc2UgaWYgKHVzZXJsYW5nID09IC0xKSB7CisJICAgICAgICAgICAgdmFyIGxhbmdfaWQgPSBjYW52YXMuZGVmYXVsdF9sYW5nX2lkOworCSAgICAgICAgICAgIAorCSAgICAgICAgICAgIHZhciBicm93c2VyTGFuZyA9IGZsYXNoLmV4dGVybmFsLkV4dGVybmFsSW50ZXJmYWNlLmNhbGwoImZ1bmN0aW9uKCl7cmV0dXJuIHdpbmRvdy5uYXZpZ2F0b3Iuc3lzdGVtTGFuZ3VhZ2UgfHwgd2luZG93Lm5hdmlnYXRvci51c2VyTGFuZ3VhZ2UgfHwgd2luZG93Lm5hdmlnYXRvci5sYW5ndWFnZTt9Iik7CisJICAgICAgICAgICAgaWYgKGJyb3dzZXJMYW5nID09IG51bGwpIHsKKwkgICAgICAgICAgICAgICAgYnJvd3NlckxhbmcgPSAiIiArIFN5c3RlbS5jYXBhYmlsaXRpZXMubGFuZ3VhZ2U7CisJICAgICAgICAgICAgfQorCSAgICAgICAgICAgIGlmIChicm93c2VyTGFuZyAhPSBudWxsICYmIGJyb3dzZXJMYW5nLmxlbmd0aCA+IDEpIHsKKwkgICAgICAgICAgICAgICAgdmFyIGxuZ0NvZGUgPSBicm93c2VyTGFuZy5zdWJzdHJpbmcoMCwgMik7CisJICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICAvL29wZW5sYXN6bG8gWFBhdGggaXMgYWJsZSB0byBzZWFyY2ggbm90aGluZywgc28gd2lsbCBpdGVyYXRlCisJICAgICAgICAgICAgICAgIHZhciB4cGF0aCA9ICJsYW5ndWFnZXNTZXQ6L2l0ZW0iOworCSAgICAgICAgICAgICAgICB2YXIgbGlzdCA9IGxhbmd1YWdlc1NldC5nZXRQb2ludGVyKCkueHBhdGhRdWVyeSh4cGF0aCk7CisJICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICB2YXIgcGFydE1hdGNoID0gLTEsIGZ1bGxNYXRjaCA9IC0xOyAKKwkgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGxpc3QgIT0gbnVsbCAmJiBpIDw9IGxpc3QubGVuZ3RoOyArK2kpIHsKKwkgICAgICAgICAgICAgICAgICAgIHhwYXRoID0gImxhbmd1YWdlc1NldDovaXRlbVsiICsgaSArICJdL2NvZGUvdGV4dCgpIjsKKwkgICAgICAgICAgICAgICAgICAgIHZhciB2YWwgPSBsYW5ndWFnZXNTZXQuZ2V0UG9pbnRlcigpLnhwYXRoUXVlcnkoeHBhdGgpOworCSAgICAgICAgICAgICAgICAgICAgaWYgKHZhbCAhPSBudWxsICYmIHZhbC5sZW5ndGggPiAxKSB7CisJICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHBhcnRDb2RlID0gKCIiICsgdmFsKS5zdWJzdHJpbmcoMCwgMik7CisJICAgICAgICAgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGJyb3dzZXJMYW5nID09IHZhbCkgeworCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsTWF0Y2ggPSBpOworCSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAobG5nQ29kZSA9PSB2YWwpIHsKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydE1hdGNoID0gaTsKKwkgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHBhcnRDb2RlID09IGxuZ0NvZGUpIHsKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFydE1hdGNoID0gaTsKKwkgICAgICAgICAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAgICAgaWYgKHBhcnRNYXRjaCAhPSAtMSB8fCBmdWxsTWF0Y2ggIT0gLTEpIHsKKwkgICAgICAgICAgICAgICAgICAgIGkgPSAoZnVsbE1hdGNoICE9IC0xKSA/IGZ1bGxNYXRjaCA6IHBhcnRNYXRjaDsKKwkgICAgICAgICAgICAgICAgICAgIHhwYXRoID0gImxhbmd1YWdlc1NldDovaXRlbVsiICsgaSArICJdL2xhbmd1YWdlX2lkL3RleHQoKSI7CisJICAgICAgICAgICAgICAgICAgICBsYW5nX2lkID0gbGFuZ3VhZ2VzU2V0LmdldFBvaW50ZXIoKS54cGF0aFF1ZXJ5KHhwYXRoKTsKKwkgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAKKwkgICAgICAgICAgICBpZiAoY2FudmFzLmxhbmd1YWdlX2lkID09IDApIHsKKwkgICAgICAgICAgICAgICAgdXNlcmxhbmcgPSBsYW5nX2lkOworCSAgICAgICAgICAgIH0gZWxzZSB7CisJICAgICAgICAgICAgICAgIHVzZXJsYW5nID0gY2FudmFzLmxhbmd1YWdlX2lkOworCSAgICAgICAgICAgIH0KKwkgICAgICAgIH0KKwkgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0ibG9nb3V0VXNlciIgZnVuY25hbWU9InhtbGNybS5sb2dvdXRVc2VyIgorICAgICAgICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgYWN0aXZlRXJyb3JIYW5kbGVyPSJ0cnVlIiAKKyAgICAgICAgaXNDYWxsQmFja0hhbmRsZXI9InRydWUiPgorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ic2VuZENhbGxCYWNrIj4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInNlbmRDYWxsQmFjayBsb2dvdXRVc2VyOiAiKTsgICAgCisgICAgICAgICAgICBwYXJlbnQuaW5pdGxhbmd1YWdlTG9hZGVkID0gZmFsc2U7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciBnID0gY2FudmFzLmdldFVzZXJEYXRhKCk7CisgICAgICAgICAgICBnWyJ1c2VybmFtZSJdID0gJyc7CisgICAgICAgICAgICBnWyJ1c2VycGFzcyJdID0gJyc7CisgICAgICAgICAgICBnWyJ1c2VycXVhbGl0eSJdID0gbnVsbDsKKyAgICAgICAgICAgIGdbInVzZXJjb2xvciJdID0gbnVsbDsKKyAgICAgICAgICAgIGdbInVzZXJsYW5nIl0gPSBudWxsOworICAgICAgICAgICAgZ1sic2F2ZXVzZXJkYXRhIl09ZmFsc2U7CisgICAgICAgICAgICBnWyJzdG9yZWRTZXNzaW9uIl0gPSAiIjsKKyAgICAgICAgICAgIGNhbnZhcy5zZXRVc2VyRGF0YShnKTsKKyAgICAgICAgICAgIGNhbnZhcy5zZXRDb2xvclN0eWxlKGNhbnZhcy5iYXNlQ29sb3JTY2hlbWUpOworICAgICAgICAgICAgCisgICAgICAgICAgICBwYXJlbnQudXNlcmxhbmcgPSAtMTsKKyAgICAgICAgICAgIHBhcmVudC5zZXREZWZhdWx0VXNlckxhbmd1YWdlKCk7CisKKyAgICAgICAgICAgIHBhcmVudC5nZXRMYW5ndWFnZUJ5SWRBbmRNYXguc3RhcnQgPSAwOworICAgICAgICAgICAgcGFyZW50LmdldExhbmd1YWdlQnlJZEFuZE1heC5kb0NhbGwoKTsKKyAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4gICAgICAgICAgCisgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAgICAgCisgICAgCisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0ic2V0VXNlcm5hbWVSZWNvbm5lY3QiIGZ1bmNuYW1lPSJzZXRVc2VybmFtZVJlY29ubmVjdCIgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gICAKKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBjYW52YXMuc2Vzc2lvbklkOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gY2FudmFzLnVzZXJfaWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBjYW52YXMuY3VycmVudHVzZXI7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBjYW52YXMuZmlyc3ROYW1lOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gY2FudmFzLmxhc3ROYW1lOzwvbWV0aG9kPjwvbmV0cGFyYW0+ICAgCisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gY2FudmFzLnBpY3R1cmVfdXJpOzwvbWV0aG9kPjwvbmV0cGFyYW0+ICAgCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZSB0aGUgcnRtcGNvbm5lY3Rpb24KKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzZXRVc2VybmFtZVJlY29ubmVjdDogIixjYW52YXMudXNlcl9pZCx2YWx1ZSk7ICAgCisgICAgICAgICAgICBwYXJlbnQucmVjb25uZWN0Q29tcGxldGUoKTsKKyAgICAgICAgPC9oYW5kbGVyPiAgCisgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAgICAKKyAgICAgICAgCisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iZ2V0RGVmYXVsdExhbmd1YWdlIiBmdW5jbmFtZT0ibGFuZ3VhZ2VzZXJ2aWNlLmdldERlZmF1bHRMYW5ndWFnZSIgPiAgICAgIAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgIC8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisgICAgICAgICAgICBjYW52YXMuZGVmYXVsdF9sYW5nX2lkID0gdmFsdWU7CisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZ2V0RGVmYXVsdExhbmd1YWdlOiAiLHZhbHVlLCI7IGNhbnZhcy5sYW5nID0gIiwgY2FudmFzLmxhbmd1YWdlX2lkKTsKKyAgICAgICAgICAgIGlmIChjYW52YXMubGFuZ3VhZ2VfaWQ9PTApeworICAgICAgICAgICAgICAgIHBhcmVudC51c2VybGFuZyA9IGNhbnZhcy5kZWZhdWx0X2xhbmdfaWQ7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHBhcmVudC51c2VybGFuZyA9IGNhbnZhcy5sYW5ndWFnZV9pZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBhcmVudC5nZXRMYW5ndWFnZUJ5SWRBbmRNYXguZG9DYWxsKCk7CisgICAgICAgIDwvaGFuZGxlcj4gIAorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4gICAgICAKKyAgICAKKyAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJnZXRJbnZpdGF0aW9uQnlIYXNoIiBhY3RpdmVFcnJvckhhbmRsZXI9InRydWUiIAorICAgICAgICBmdW5jbmFtZT0iaW52aXRhdGlvbnNlcnZpY2UuZ2V0SW52aXRhdGlvbkJ5SGFzaCIgPiAgICAgICAgICAKKyAgICAgICAgPG5ldHBhcmFtIG5hbWU9Imludml0YXRpb25IYXNoIj48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gY2FudmFzLmludml0YXRpb25IYXNoOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgY2FudmFzLnRoaXNoaWIubG9hZGVyVmFyLmNsb3NlKCk7CisgICAgICAgICAgICAgICAgLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZSB0aGUgcnRtcGNvbm5lY3Rpb24KKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZ2V0SW52aXRhdGlvbkJ5SGFzaDogIix2YWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlPDApeworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLmFsbG93RW50cnkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5jdXJyZW50SW52aXRhdGlvbiA9IHZhbHVlOworICAgICAgICAgICAgICAgICAgICAgICAgbmV3IGx6Lmludml0YXRpb25RdWlja0xvYWRlcihjYW52YXMubWFpbl9jb250ZW50Ll9jb250ZW50LmlubmVyKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGFkZEluZm8gPSAiIiArIHZhbHVlLnZhbGlkRnJvbSArIjxici8+IC0gPGJyLz4iKyB2YWx1ZS52YWxpZFRvOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZGxnID0gbmV3IGx6LnJwY0Vycm9yRGlhbG9nKGNhbnZhcyx7ZXJyb3JpZDotNTAsYWRkSW5mbzphZGRJbmZvfSk7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4gICAKKyAgICA8L25ldFJlbW90ZUNhbGxIaWI+IAorICAgIAorICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9InNlY3VyZUxvZ2luQnlSZW1vdGUiIGFjdGl2ZUVycm9ySGFuZGxlcj0idHJ1ZSIgCisgICAgICAgIGZ1bmNuYW1lPSJ4bWxjcm0uc2VjdXJlTG9naW5CeVJlbW90ZSIgPiAgCisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gY2FudmFzLnNlc3Npb25JZDs8L21ldGhvZD48L25ldHBhcmFtPiAgICAgICAKKyAgICAgICAgPG5ldHBhcmFtIG5hbWU9InJlbW90ZVNlc3Npb25JZCI+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGNhbnZhcy5zZWN1cmVIYXNoOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgY2FudmFzLnRoaXNoaWIubG9hZGVyVmFyLmNsb3NlKCk7CisgICAgICAgICAgICAgICAgLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZSB0aGUgcnRtcGNvbm5lY3Rpb24KKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2VjdXJlTG9naW5CeVJlbW90ZTogIix2YWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlPDApeworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBsei5lcnJvclBvcHVwKGNhbnZhcyx7ZXJyb3I6J0ludmFsaWQgSGFzaCd9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgY2FudmFzLnNob3dOaWNrTmFtZURpYWxvZyA9IHZhbHVlLnNob3dOaWNrTmFtZURpYWxvZzsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJtYXJrU2Vzc2lvbkFzTG9nZWRJbjkgIixjYW52YXMuc2hvd05pY2tOYW1lRGlhbG9nKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5pbml0cm9vbWlkID0gdmFsdWUucm9vbV9pZDsKKyAgICAgICAgICAgICAgICAgICAgY2FudmFzLmJlY29tZW1vZGVyYXRvciA9IHZhbHVlLmJlY29tZW1vZGVyYXRvcjsKKyAgICAgICAgICAgICAgICAgICAgY2FudmFzLnNob3dBdWRpb1ZpZGVvVGVzdCA9IHZhbHVlLnNob3dBdWRpb1ZpZGVvVGVzdDsKKyAgICAgICAgICAgICAgICAgICAgY2FudmFzLmxhbmRpbmdab25lID0gdmFsdWUubGFuZGluZ1pvbmU7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBjYW52YXMucm9vbVJlY29yZGluZ0lkID0gdmFsdWUucm9vbVJlY29yZGluZ0lkOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNhbnZhcy5yb29tUmVjb3JkaW5nSWQgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzLnJvb21SZWNvcmRpbmdJZCA9IDA7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmIChjYW52YXMuc2hvd05pY2tOYW1lRGlhbG9nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgbHouY2hvb3NlTmlja05hbWUoY2FudmFzKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5nZXRDdXJyZW50Um9vbUNsaWVudC5kb0NhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+ICAgCisgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAgCisgICAgCisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0ibG9naW5Vc2VyQnlSZW1vdGUiIGFjdGl2ZUVycm9ySGFuZGxlcj0idHJ1ZSIgCisgICAgICAgIGZ1bmNuYW1lPSJ4bWxjcm0ubG9naW5Vc2VyQnlSZW1vdGUiID4gICAgICAgICAgCisgICAgICAgIDxuZXRwYXJhbSBuYW1lPSJyZW1vdGVTZXNzaW9uSWQiPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBjYW52YXMucmVtb3RlVXNlclNpZDs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImxvZ2luVXNlckJ5UmVtb3RlIC0xLTogIix2YWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImxvZ2luVXNlckJ5UmVtb3RlIC0yLTogIixjYW52YXMucmVtb3RlVXNlclNpZCk7CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlPDApeworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBwYXJlbnQuZ2V0Q3VycmVudFJvb21DbGllbnQuZG9DYWxsKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4gICAKKyAgICA8L25ldFJlbW90ZUNhbGxIaWI+ICAKKyAgICAKKyAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJnZXRDdXJyZW50Um9vbUNsaWVudCIgZnVuY25hbWU9InhtbGNybS5nZXRDdXJyZW50Um9vbUNsaWVudCIgPiAgICAgICAgICAKKyAgICAgICAgPG5ldHBhcmFtIG5hbWU9InNlc3Npb25JZCI+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJnZXRDdXJyZW50Um9vbUNsaWVudDogIix2YWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlIT1udWxsKXsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5zZXRBdHRyaWJ1dGUoJ2N1cnJlbnR1c2VyJyx2YWx1ZS5maXJzdG5hbWUrIiAiK3ZhbHVlLmxhc3RuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC8vU29tZWhvdyB0aGlzIGxlYWRzIHRvIGEgYnVnIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgc2VjdXJlIFVzZXIgTG9naW4KKyAgICAgICAgICAgICAgICAgICAgY2FudmFzLnNldEF0dHJpYnV0ZSgndXNlcl9pZCcsdmFsdWUudXNlcl9pZCk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBjYW52YXMuc2V0QXR0cmlidXRlKCdhbGxvd1JlY29yZGluZycsdmFsdWUuYWxsb3dSZWNvcmRpbmcpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgY2FudmFzLnNldEF0dHJpYnV0ZSgnZmlyc3ROYW1lJyx2YWx1ZS5maXJzdG5hbWUpOworICAgICAgICAgICAgICAgICAgICBjYW52YXMuc2V0QXR0cmlidXRlKCdsYXN0TmFtZScsdmFsdWUubGFzdG5hbWUpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaGliLnVzZXJvYmplY3QuZmlyc3RuYW1lID0gdmFsdWUuZmlyc3RuYW1lOworICAgICAgICAgICAgICAgICAgICBoaWIudXNlcm9iamVjdC5sYXN0bmFtZSA9IHZhbHVlLmxhc3RuYW1lOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgY2FudmFzLnNldEF0dHJpYnV0ZSgnbWFpbCcsJycpOworICAgICAgICAgICAgICAgICAgICBjYW52YXMuc2V0QXR0cmlidXRlKCdsYXN0TG9naW4nLCcnKTsKKyAgICAgICAgICAgICAgICAgICAgY2FudmFzLnNldEF0dHJpYnV0ZSgnb2ZmaWNpYWxfY29kZScsJycpOworICAgICAgICAgICAgICAgICAgICBjYW52YXMuc2V0QXR0cmlidXRlKCdwaWN0dXJlX3VyaScsdmFsdWUucGljdHVyZV91cmkpOworICAgICAgICAgICAgICAgICAgICBjYW52YXMuc2V0QXR0cmlidXRlKCdsYW5ndWFnZScsJycpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImNhbnZhcy5sYW5kaW5nWm9uZSA6OiAiLGNhbnZhcy5sYW5kaW5nWm9uZSk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAoY2FudmFzLmxhbmRpbmdab25lID09ICJkYXNoYm9hcmQiKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMuZGVzdHJveUV4aXRCdXR0b24gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5nZXRSb29tVHlwZXMuZG9DYWxsKCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY2FudmFzLnJvb21SZWNvcmRpbmdJZCA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy50aGlzaGliLmxvYWRlclZhci5jbG9zZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgLy9wYXJlbnQuZ2V0Um9vbUJ5SWQuZG9DYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgb2JqID0gbmV3IEFycmF5KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBvYmpbImFjdGlvbiJdID0gInJlY29yZE1vZHVsZSI7CisgICAgICAgICAgICAgICAgICAgICAgICBsb2FkQ29udGVudChvYmosbnVsbCxudWxsKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy50aGlzaGliLmxvYWRlclZhci5jbG9zZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LmdldFJvb21CeUlkLmRvQ2FsbCgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4gICAKKyAgICA8L25ldFJlbW90ZUNhbGxIaWI+CisgICAgCisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iZ2V0Um9vbUJ5SWQiIGZ1bmNuYW1lPSJjb25mZXJlbmNlc2VydmljZS5nZXRSb29tQnlJZCIgPiAgICAgICAgICAKKyAgICAgICAgPG5ldHBhcmFtIG5hbWU9InNlc3Npb25JZCI+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPG5ldHBhcmFtIG5hbWU9InJvb21JZCI+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGNhbnZhcy5pbml0cm9vbWlkOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZSB0aGUgcnRtcGNvbm5lY3Rpb24KKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZ2V0Um9vbUJ5SWQ6ICIsdmFsdWUpOworICAgICAgICAgICAgICAgIGlmICh2YWx1ZSE9bnVsbCl7CisgICAgICAgICAgICAgICAgICAgIGlmIChjYW52YXMuZGlyZWN0VXNlckxvZ2luKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMuZGlyZWN0Um9vbU9iaiA9IHZhbHVlOworICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzLnRoaXNoaWIubG9hZGVyVmFyLmNsb3NlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzLnNldFJvb21WYWx1ZXModmFsdWUucm9vbXR5cGUucm9vbXR5cGVzX2lkLHZhbHVlLnJvb21zX2lkLHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzLnNlbmRWaWFMb2NhbENvbm5lY3Rpb24oY2FudmFzLnJ0bXBfbGNfbmFtZSwic2V0Um9vbVZhbHVlcyIsW3ZhbHVlLnJvb210eXBlLnJvb210eXBlc19pZCx2YWx1ZS5yb29tc19pZCx2YWx1ZV0pOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbmV3IGx6LmxhYmVsZXJyb3JQb3B1cChjYW52YXMse2Vycm9ybGFiZWxpZDoxMjg2fSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4gICAKKyAgICA8L25ldFJlbW90ZUNhbGxIaWI+CisgICAgICAgIAorICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImdldExhbmd1YWdlQnlJZEFuZE1heCIgZnVuY25hbWU9Imxhbmd1YWdlc2VydmljZS5nZXRMYW5ndWFnZUJ5SWRBbmRNYXgiID4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJzdGFydCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJzdGVwIiB2YWx1ZT0iMTAwIiB0eXBlPSJudW1iZXIiIC8+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ibWF4IiB2YWx1ZT0iMTUwMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQudXNlcmxhbmc7PC9tZXRob2Q+PC9uZXRwYXJhbT4gCisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnN0YXJ0OzwvbWV0aG9kPjwvbmV0cGFyYW0+IAorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5zdGVwOzwvbWV0aG9kPjwvbmV0cGFyYW0+IAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiaGliUnRtcENvbm5lY3Rpb24vdXNlcmxhbmc6WyIscGFyZW50LnVzZXJsYW5nLCJdIik7CisgICAgICAgICAgICAgICAgLy9pZigkZGVidWcpIERlYnVnLndyaXRlKCJoaWJSdG1wQ29ubmVjdGlvbi9nZXRMYW5ndWFnZUJ5SWRBbmRNYXg6WyIsdmFsdWUsIl0iKTsKKyAgICAgICAgICAgICAgICBzZXRMYWJlbE9iamVjdEJ5SHVuZHJlZCh0aGlzLnN0YXJ0LHZhbHVlKTsKKyAgICAgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorICAgICAgICAgICAgICAgIGlmICh0aGlzLnN0YXJ0IDw9IG1heCl7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuc3RhcnQgKz0gdGhpcy5zdGVwOworICAgICAgICAgICAgICAgICAgICBpZiAoY2FudmFzLnRoaXNoaWIubG9hZGVyVmFyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzLnRoaXNoaWIubG9hZGVyVmFyLnNldFByb2dyZXNzKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgdGhpcy5kb0NhbGwoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIAlpZigkZGVidWcpIERlYnVnLndyaXRlKCJsb2FkaW5nIGxhbmcgY29tcGxldGUiKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudC5pbml0bGFuZ3VhZ2VMb2FkZWQpeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbnZhcy50aGlzaGliLmxvYWRlclZhciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzLnRoaXNoaWIubG9hZGVyVmFyLnNldFByb2dyZXNzKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZigkZGVidWcpIERlYnVnLndyaXRlKCJnZXRSb29tVHlwZXMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5nZXRSb29tVHlwZXMuZG9DYWxsKCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIAlpZigkZGVidWcpIERlYnVnLndyaXRlKCJnZXRTdGF0ZXMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5pbml0bGFuZ3VhZ2VMb2FkZWQ9dHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5nZXRTdGF0ZXMuZG9DYWxsKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPiAgCisgICAgPC9uZXRSZW1vdGVDYWxsSGliPgorICAgICAgICAKKyAgICA8IS0tCisgICAgICAgIFRoZXJlIG11c3QgYmUgYSB0ZW1wb3JhcnkgU0lQLUFjY291bnQgY3JlYXRlZCBhdCB0aGlzIG1vbWVudAorICAgICAtLT4gIAorICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9Im1hcmtTZXNzaW9uQXNMb2dlZEluIiBmdW5jbmFtZT0ieG1sY3JtLm1hcmtTZXNzaW9uQXNMb2dlZEluIiA+CisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gY2FudmFzLnNlc3Npb25JZDs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgIC8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgbmV3IGx6LmVycm9yUG9wdXAoY2FudmFzLHtlcnJvcjoiTWlzc2luZyBVc2VyIE9iamVjdCwgc2V0IHRoZSBDb25maWd1cmF0aW9uIHZhbHVlIG9mIHRoZSBrZXkgJ2RlZmF1bHQucnBjLnVzZXJpZCcgdG8gYSB2YWxpZCB1c2VyIElkIHRoYXQgaGFzIGF0IGxlYXN0IG9uZSBPcmdhbml6YXRpb24gYXNzaWduZWQgaW4gdGhlIE9wZW5NZWV0aW5ncyBBZG1pbmlzdHJpb24gQ29uZmlndXJhdGlvbiBQYW5lbCAifSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJtYXJrU2Vzc2lvbkFzTG9nZWRJbjEgIix2YWx1ZSk7CisgICAgICAgICAgICAgCisgICAgICAgICAgICBoaWIudXNlcm9iamVjdCA9IHZhbHVlOworICAgICAgICAgICAgIAorICAgICAgICAgICAgY2FudmFzLnVzZXJfaWQgPSBoaWIudXNlcm9iamVjdC51c2VyX2lkOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAodmFsdWUub3JnYW5pc2F0aW9uX3VzZXJzLmxlbmd0aCA+IDApeworICAgICAgICAgICAgICAgIGhpYi5jdXJyZW50ZG9tYWluID0gdmFsdWUub3JnYW5pc2F0aW9uX3VzZXJzWzBdLm9yZ2FuaXNhdGlvbi5uYW1lOworICAgICAgICAgICAgICAgIGhpYi5jdXJyZW50ZG9tYWluT2JqID0gdmFsdWUub3JnYW5pc2F0aW9uX3VzZXJzWzBdLm9yZ2FuaXNhdGlvbjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbmV3IGx6LmVycm9yUG9wdXAoY2FudmFzLHtlcnJvcjoiTWlzc2luZyBPcmdhbml6YXRpb24gaW4gVXNlciBPYmplY3QsIHNldCB0aGUgQ29uZmlndXJhdGlvbiB2YWx1ZSBvZiB0aGUga2V5ICdkZWZhdWx0LnJwYy51c2VyaWQnIHRvIGEgdmFsaWQgdXNlciBJZCB0aGF0IGhhcyBhdCBsZWFzdCBvbmUgT3JnYW5pemF0aW9uIGFzc2lnbmVkIGluIHRoZSBPcGVuTWVldGluZ3MgQWRtaW5pc3RyaW9uIENvbmZpZ3VyYXRpb24gUGFuZWwgIn0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgibWFya1Nlc3Npb25Bc0xvZ2VkSW4yICIsY2FudmFzLnNlc3Npb25JZCk7CisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgibWFya1Nlc3Npb25Bc0xvZ2VkSW4zICIsY2FudmFzLmluaXRyb29taWQpOworICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm1hcmtTZXNzaW9uQXNMb2dlZEluNCAiLGNhbnZhcy5pc2luaXRSb29tRGlyZWN0KTsKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJtYXJrU2Vzc2lvbkFzTG9nZWRJbjUgIixjYW52YXMucmVtb3RlVXNlckxvZ2luKTsKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJtYXJrU2Vzc2lvbkFzTG9nZWRJbjYgIixjYW52YXMuZGlyZWN0VXNlckxvZ2luKTsKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJtYXJrU2Vzc2lvbkFzTG9nZWRJbjcgIixjYW52YXMuZGlyZWN0Um9vbUlkKTsKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJtYXJrU2Vzc2lvbkFzTG9nZWRJbjggIixjYW52YXMuc2VjdXJlUmVtb3RlVXNlckxvZ2luKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGNhbnZhcy5zZWN1cmVSZW1vdGVVc2VyTG9naW4pIHsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgibWFya1Nlc3Npb25Bc0xvZ2VkSW4gPT0gQ0FMTCAiLGNhbnZhcy5zZWN1cmVIYXNoKTsKKyAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBwYXJlbnQuc2VjdXJlTG9naW5CeVJlbW90ZS5kb0NhbGwoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoY2FudmFzLmlzaW5pdFJvb21EaXJlY3QpeworICAgICAgICAgICAgICAgIHBhcmVudC5nZXRJbnZpdGF0aW9uQnlIYXNoLmRvQ2FsbCgpOyAgIAorICAgICAgICAgICAgfSBlbHNlIGlmIChjYW52YXMucmVtb3RlVXNlckxvZ2luKSB7CisgICAgICAgICAgICAgICAgcGFyZW50LmxvZ2luVXNlckJ5UmVtb3RlLmRvQ2FsbCgpOyAgIAorICAgICAgICAgICAgfSBlbHNlIGlmIChjYW52YXMuZGlyZWN0VXNlckxvZ2luKSB7CisgICAgICAgICAgICAgICAgLy9zaG93IE5pY2sgTmFtZSBvciBQYXNzd29yZCBQcm90ZWN0aW9uIERpYWxvZworICAgICAgICAgICAgICAgIGNhbnZhcy5pbml0cm9vbWlkID0gTnVtYmVyKGNhbnZhcy5kaXJlY3RSb29tSWQpOworICAgICAgICAgICAgICAgIHBhcmVudC5nZXRSb29tQnlJZC5kb0NhbGwoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9oYW5kbGVyPiAgCisgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAKKyAgICAKKyAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJnZXRTdGF0ZXMiIGZ1bmNuYW1lPSJ4bWxjcm0uZ2V0U3RhdGVzIiBkYXRhb2JqZWN0PSJjb3VudHJ5U2V0Ij4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImdldFN0YXRlczogIix2YWx1ZSk7CisgICAgICAgICAgICBjYW52YXMuc3RhdGVzSW5pdFZhbHVlcyA9IHZhbHVlOworICAgICAgICAgICAgY2FudmFzLnRoaXNoaWIubG9hZGVyVmFyLnNldFByb2dyZXNzKCk7CisgICAgICAgICAgICBwYXJlbnQuZ2V0VGltZVpvbmVzLmRvQ2FsbCgpOworICAgICAgICA8L2hhbmRsZXI+ICAKKyAgICA8L25ldFJlbW90ZUNhbGxIaWI+ICAKKyAgICAKKyAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJnZXRUaW1lWm9uZXMiIGZ1bmNuYW1lPSJ4bWxjcm0uZ2V0VGltZVpvbmVzIiBkYXRhb2JqZWN0PSJ0aW1lWm9uZVNldCI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZSB0aGUgcnRtcGNvbm5lY3Rpb24KKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJnZXRUaW1lWm9uZXM6ICIsdmFsdWUpOworICAgICAgICAgICAgY2FudmFzLnRoaXNoaWIubG9hZGVyVmFyLnNldFByb2dyZXNzKCk7CisgICAgICAgICAgICBwYXJlbnQuZ2V0R2VuZXJhbE9wdGlvbnMuZG9DYWxsKCk7CisgICAgICAgIDwvaGFuZGxlcj4gIAorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4KKworCTxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImdldEdlbmVyYWxPcHRpb25zIiBmdW5jbmFtZT0ieG1sY3JtLmdldEdlbmVyYWxPcHRpb25zIj4KKwkJPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisJCTwhW0NEQVRBWworCQkJaWYgKGNhbnZhcy50aGlzaGliLmxvYWRlclZhciAhPSBudWxsKSB7CisJCQkJY2FudmFzLnRoaXNoaWIubG9hZGVyVmFyLnNldFByb2dyZXNzKCk7CisJCQl9CisJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZ2V0R2VuZXJhbE9wdGlvbnM6ICIsIHZhbHVlLmxlbmd0aCwgdmFsdWUpOworCQkJaWYgKHZhbHVlICE9IG51bGwpIHsKKwkJCQlpZiAodmFsdWUubGVuZ3RoID4gMCkgeworCQkJCQkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJHaXZlIGV4Y2x1c2l2ZSBhdWRpbyBrZXljb2RlIGlzOiAiLCB2YWx1ZVswXS5jb25mX3ZhbHVlKTsKKwkJCQkJY2FudmFzLnNldEF0dHJpYnV0ZSgnR0lWRV9FWENMVVNJVkVfQVVESU9fS0VZJywgdmFsdWVbMF0uY29uZl92YWx1ZSk7CisJCQkJfQorCQkJCWlmICh2YWx1ZS5sZW5ndGggPiAxKSB7CisJCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJyZWQ1c2lwLmVuYWJsZSBpczogIiwgdmFsdWVbMV0uY29uZl92YWx1ZSk7CisJCQkJCWNhbnZhcy5zZXRBdHRyaWJ1dGUoJ1JFRDVfU0lQX0VOQUJMRScsIHZhbHVlWzFdLmNvbmZfdmFsdWUpOworCQkJCX0KKwkJCQlpZiAodmFsdWUubGVuZ3RoID4gMikgeworCQkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgibWF4X3VwbG9hZF9zaXplIGlzOiAiLCB2YWx1ZVsyXS5jb25mX3ZhbHVlKTsKKwkJCQkJY2FudmFzLnNldEF0dHJpYnV0ZSgnTUFYX1VQTE9BRF9TSVpFJywgdmFsdWVbMl0uY29uZl92YWx1ZSk7CisJCQkJfQorCQkJCWlmICh2YWx1ZS5sZW5ndGggPiAzKSB7CisJCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJNdXRlL3VubXV0ZSBrZXljb2RlIGlzOiAiLCB2YWx1ZVszXS5jb25mX3ZhbHVlKTsKKwkJCQkJY2FudmFzLnNldEF0dHJpYnV0ZSgnTVVURV9BVURJT19LRVknLCB2YWx1ZVszXS5jb25mX3ZhbHVlKTsKKwkJCQl9CisJCQl9IGVsc2UgeworCQkJCWlmICgkZGVidWcpIERlYnVnLndhcm4oInhtbGNybS5nZXRHZW5lcmFsT3B0aW9ucyBlbXB0eSEiKTsKKwkJCX0KKwkJCXBhcmVudC5nZXRVc2VyU2FsdXRhdGlvbnMuZG9DYWxsKCk7CisJCV1dPgorCQk8L2hhbmRsZXI+CisJPC9uZXRSZW1vdGVDYWxsSGliPgorICAgIAorICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9InNldEN1cnJlbnRVc2VyT3JnYW5pemF0aW9uIiBmdW5jbmFtZT0ieG1sY3JtLnNldEN1cnJlbnRVc2VyT3JnYW5pemF0aW9uIj4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBjYW52YXMuc2Vzc2lvbklkOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gaGliLmN1cnJlbnRkb21haW5PYmoub3JnYW5pc2F0aW9uX2lkOzwvbWV0aG9kPjwvbmV0cGFyYW0+ICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICAvL1Nlc3Npb25tYW5hZ2VtZW50LmdldEluc3RhbmNlKCkgCisgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInNldEN1cnJlbnRVc2VyT3JnYW5pemF0aW9uOiAiLHZhbHVlKTsKKyAgICAgICAgPC9oYW5kbGVyPiAgCisgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAKKyAgICAgCisgICAgCisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iZ2V0VXNlclNhbHV0YXRpb25zIiBmdW5jbmFtZT0idXNlcnNlcnZpY2UuZ2V0VXNlclNhbHV0YXRpb25zIiA+CisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gY2FudmFzLnNlc3Npb25JZDs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQudXNlcmxhbmc7IDwvbWV0aG9kPjwvbmV0cGFyYW0+IAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgIC8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisgICAgICAgICAgICAvL0RlYnVnLndyaXRlKCJnZXRVc2VyU2FsdXRhdGlvbnMgIix2YWx1ZSk7CisgICAgICAgICAgICBjYW52YXMuc2FsdXRhdGlvbnNJbml0VmFsdWVzID0gdmFsdWU7CisgICAgICAgICAgICAvL2NoZWNrIGZvciBwYXNzd29yZCByZXNldAorICAgICAgICAgICAgaWYgKGNhbnZhcy5pc1Jlc2V0VXNlcm5hbWUpeworICAgICAgICAgICAgICAgIGlmIChjYW52YXMudGhpc2hpYi5sb2FkZXJWYXIgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgY2FudmFzLnRoaXNoaWIubG9hZGVyVmFyLmNsb3NlKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIG5ldyBsei5yZXNldFBhc3N3b3JkKGNhbnZhcy5tYWluX2NvbnRlbnQuX2NvbnRlbnQuaW5uZXIpOworICAgICAgICAgICAgfSBlbHNlIHsgCisgICAgICAgICAgICAgICAgaWYgKGNhbnZhcy50aGlzaGliLmxvYWRlclZhciAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgY2FudmFzLnRoaXNoaWIubG9hZGVyVmFyLmNsb3NlKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8vZG8gbm90IHNob3cgbG9nZ2luLVBvcFVwIGZvciB0aGUgdGVzdC1BcHBsaWNhdGlvbgorICAgICAgICAgICAgICAgIGlmIChwYXJlbnQudGVzdEFwcExvYWRpbmcpeyAKKyAgICAgICAgICAgICAgICAgICAgY2FudmFzLmxvYWROZXh0U3RlcFRlc3RBcHAoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNhbnZhcy5pc2luaXRSb29tRGlyZWN0IHx8IGNhbnZhcy5yZW1vdGVVc2VyTG9naW4gCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IGNhbnZhcy5kaXJlY3RVc2VyTG9naW4gfHwgY2FudmFzLnNlY3VyZVJlbW90ZVVzZXJMb2dpbil7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FudmFzLnRoaXNoaWIubG9hZGVyVmFyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzLnRoaXNoaWIubG9hZGVyVmFyLnNldFByb2dyZXNzKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBpZigkZGVidWcpIERlYnVnLndyaXRlKCJpc2luaXRSb29tRGlyZWN0IG9yIHJlbW90ZVVzZXJMb2dpbiBpcyB0cnVlIik7CisgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQubWFya1Nlc3Npb25Bc0xvZ2VkSW4uZG9DYWxsKCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FudmFzLnRoaXNoaWIubG9hZGVyVmFyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzLnRoaXNoaWIubG9hZGVyVmFyLnNldFByb2dyZXNzKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAvL0NoZWNrIGlmIHVzZXIgaXMgYXV0by1sb2dnZWQgaW4gYnkgc2Vzc2lvbgorICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSBjYW52YXMuZ2V0VXNlckRhdGEoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKCRkZWJ1ZykgRGVidWcud3JpdGUoImNoZWNrTG9naW5EYXRhL2c6ICIsZyk7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RvcmVkU2Vzc2lvbiA9IGdbInN0b3JlZFNlc3Npb24iXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmKCRkZWJ1ZykgRGVidWcud3JpdGUoImNoZWNrTG9naW5EYXRhL3NhdmU6ICIsc3RvcmVkU2Vzc2lvbik7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5sb2dpbkJ5UmVtZW1iZXIuY3VycmVudEhhc2hTZXNzaW9uID0gc3RvcmVkU2Vzc2lvbjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5sb2dpbkJ5UmVtZW1iZXIuZG9DYWxsKCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICA8L2hhbmRsZXI+ICAKKyAgICA8L25ldFJlbW90ZUNhbGxIaWI+CisgICAgCisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0ibG9naW5CeVJlbWVtYmVyIiBmdW5jbmFtZT0ieG1sY3JtLmxvZ2luQnlSZW1lbWJlciIgPgorICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRIYXNoU2Vzc2lvbiIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIi8+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ic2lwTG9hZGVyIiB2YWx1ZT0ibnVsbCIvPiAgIAorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQuY3VycmVudEhhc2hTZXNzaW9uOzwvbWV0aG9kPjwvbmV0cGFyYW0+IAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImxvZ2luQnlSZW1lbWJlciIsdmFsdWUpOworICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9IG51bGwpeworICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5zZXRBdHRyaWJ1dGUoJ3VzZXJfaWQnLHZhbHVlLnVzZXJfaWQpOworICAgICAgICAgICAgICAgICAgICBjYW52YXMuc2V0QXR0cmlidXRlKCdmaXJzdE5hbWUnLHZhbHVlLmZpcnN0bmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5zZXRBdHRyaWJ1dGUoJ2xhc3ROYW1lJyx2YWx1ZS5sYXN0bmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5zZXRBdHRyaWJ1dGUoJ21haWwnLCcnKTsKKyAgICAgICAgICAgICAgICAgICAgY2FudmFzLnNldEF0dHJpYnV0ZSgnbGFzdExvZ2luJywnJyk7CisgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5zZXRBdHRyaWJ1dGUoJ29mZmljaWFsX2NvZGUnLCcnKTsKKyAgICAgICAgICAgICAgICAgICAgY2FudmFzLnNldEF0dHJpYnV0ZSgncGljdHVyZV91cmknLCcnKTsKKyAgICAgICAgICAgICAgICAgICAgY2FudmFzLnNldEF0dHJpYnV0ZSgnbGFuZ3VhZ2UnLCcnKTsKKyAgICAgICAgICAgICAgICAgICAgY2FudmFzLnNldEF0dHJpYnV0ZSgnY3VycmVudHVzZXInLHZhbHVlLmxvZ2luKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLm9tVGltZVpvbmUgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzLnNldEF0dHJpYnV0ZSgnak5hbWVUaW1lWm9uZScsdmFsdWUub21UaW1lWm9uZS5qbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMudGltZVpvbmVJZCA9IHZhbHVlLm9tVGltZVpvbmUub210aW1lem9uZUlkOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUuZm9yY2VUaW1lWm9uZUNoZWNrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgbHoubGFiZWxlcnJvclBvcHVwKGNhbnZhcyx7ZXJyb3JsYWJlbGlkOjExNTB9KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLmxldmVsX2lkID49IDIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5iZWNvbWVtb2RlcmF0b3IgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzLmJlY29tZW1vZGVyYXRvciA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUuc2Vzc2lvbkRhdGEgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIk5vIExhbmd1YWdlIEZvdW5kIHRvIGFzc2lnbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgbmV3IGx6LmNoZWNrTG9naW5EYXRhKGNhbnZhcy5tYWluX2NvbnRlbnQuX2NvbnRlbnQuaW5uZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidmFsdWUuc2Vzc2lvbkRhdGE6ICIsIHZhbHVlLnNlc3Npb25EYXRhKTsKKyAgICAgICAgICAgICAgICAgICAgaGliLnVzZXJsYW5nID0gaXNOYU4odmFsdWUuc2Vzc2lvbkRhdGEubGFuZ3VhZ2VfaWQpID8gMSA6ICBOdW1iZXIodmFsdWUuc2Vzc2lvbkRhdGEubGFuZ3VhZ2VfaWQpOworICAgICAgICAgICAgICAgICAgICBjYW52YXMuc2V0QXR0cmlidXRlKCd1c2VybGFuZycsIGhpYi51c2VybGFuZyk7CisgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5zZXRBdHRyaWJ1dGUoJ2xhbmd1YWdlX2lkJywgaGliLnVzZXJsYW5nKTsKKyAgICAgICAgICAgICAgICAgICAgaGliLnVzZXJvYmplY3QgPSB2YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIHZhciBmb3VuZCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8dmFsdWUub3JnYW5pc2F0aW9uX3VzZXJzLmxlbmd0aDtpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5vcmdhbmlzYXRpb25fdXNlcnNbaV0ub3JnYW5pc2F0aW9uLm9yZ2FuaXNhdGlvbl9pZCA9PSB2YWx1ZS5zZXNzaW9uRGF0YS5vcmdhbml6YXRpb25faWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGliLmN1cnJlbnRkb21haW4gPSB2YWx1ZS5vcmdhbmlzYXRpb25fdXNlcnNbaV0ub3JnYW5pc2F0aW9uLm5hbWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGliLmN1cnJlbnRkb21haW5PYmogPSB2YWx1ZS5vcmdhbmlzYXRpb25fdXNlcnNbaV0ub3JnYW5pc2F0aW9uOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmIChmb3VuZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaGliLmdldExhbmd1YWdlQnlJZEFuZE1heC5zdGFydCA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIGhpYi5nZXRMYW5ndWFnZUJ5SWRBbmRNYXguZG9DYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMuZm9jdXNPbkl0ZW0gPSBudWxsOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIk5vIE9yZ2FuaXphdGlvbiBGb3VuZCB0byBhc3NpZ24iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBsei5jaGVja0xvZ2luRGF0YShjYW52YXMubWFpbl9jb250ZW50Ll9jb250ZW50LmlubmVyKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJObyBSUEMtU2VzaW9uIEZvdW5kIHRvIGFzc2lnbiIpOworICAgICAgICAgICAgICAgICAgIG5ldyBsei5jaGVja0xvZ2luRGF0YShjYW52YXMubWFpbl9jb250ZW50Ll9jb250ZW50LmlubmVyKTsKKyAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9uZXRSZW1vdGVDYWxsSGliPgorICAgIAorICAgIAorICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImdldFJvb21UeXBlcyIgZnVuY25hbWU9ImNvbmZlcmVuY2VzZXJ2aWNlLmdldFJvb21UeXBlcyIgPgorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorICAgICAgICAgICAgLy9EZWJ1Zy53cml0ZSgiZ2V0Um9vbVR5cGVzICIsdmFsdWUpOworICAgICAgICAgICAgY2FudmFzLnJvb21UeXBlc0luaXRWYWx1ZXMgPSB2YWx1ZTsKKyAgICAgICAgICAgIGNhbnZhcy5zZW5kVmlhTG9jYWxDb25uZWN0aW9uKGNhbnZhcy5ydG1wX2xjX25hbWUsICJnZXRSb29tVHlwZXMiLCBbdmFsdWVdKTsKKyAgICAgICAgICAgIGNhbnZhcy50aGlzaGliLmxvYWRlclZhci5zZXRQcm9ncmVzcygpOworICAgICAgICAgICAgcGFyZW50LnNldFVzZXJuYW1lQW5kU2Vzc2lvbi5kb0NhbGwoKTsKKyAgICAgICAgPC9oYW5kbGVyPiAgCisgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAgICAgIAorICAgIAorICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImdldE5hdmkiIGZ1bmNuYW1lPSJ4bWxjcm0uZ2V0TmF2aSIgZGF0YW9iamVjdD0ibXlyZXN1bHRuYXZpIj4gICAgICAKKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gY2FudmFzLnNlc3Npb25JZDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4gCisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIHBhcmVudC5wYXJlbnQudXNlcmxhbmc7IDwvbWV0aG9kPjwvbmV0cGFyYW0+IAorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBoaWIuY3VycmVudGRvbWFpbk9iai5vcmdhbmlzYXRpb25faWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJnZXROYXZpOiAiLHZhbHVlKTsKKyAgICAgICAgICAgICAgICBjYW52YXMudGhpc2hpYi5sb2FkZXJWYXIuY2xvc2UoKTsKKyAgICAgICAgICAgICAgICAvL1RoZSBNYWluLU5hdmkgd2lsbCBhdXRvbWF0aWNhbGx5IGluaXQgdGhlIERhc2hib2FyZCAKKyAgICAgICAgICAgICAgICBuZXcgbHoubWFpbk5hdmkoY2FudmFzLl9tYWluYmdjb250ZW50TmF2aSx7bmFtZTonbmF2aScsbmF2aU9iamVjdDp2YWx1ZX0pOworICAgICAgICAgICAgICAgIG5ldyBsei5oZWxwQW5kQnVncyhjYW52YXMuX21haW5iZ2NvbnRlbnROYXZpLHtuYW1lOidoZWxwJ30pOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChjYW52YXMubGFuZGluZ1pvbmUgPT0gImRhc2hib2FyZCIpIHsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5kZXN0cm95RXhpdEJ1dHRvbiA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSBjYW52YXMuZ2V0VXNlckRhdGEoKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJkb1Nob3dVcGRhdGVQcm9maWxlTWVzc2FnZSIsZ1siZG9TaG93VXBkYXRlUHJvZmlsZU1lc3NhZ2UiXSk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAoZ1siZG9TaG93VXBkYXRlUHJvZmlsZU1lc3NhZ2UiXSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy9EbyBub3Qgc2hvdyBtZXNzYWdlCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgbHoucmVtZW1iZXJNZXNzYWdlKGNhbnZhcy5tYWluX2NvbnRlbnQuX2NvbnRlbnQuaW5uZXIse2xhYmVsaWQ6MTI5OCxsYWJlbGlkZXJyb3I6MTI5NyxyZWZPYmo6dGhpc30pOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIAorICAgICAgICA8bWV0aG9kIG5hbWU9InNlbmRDb25maXJtYXRpb24iIGFyZ3M9ImFza2FnYWluIiA+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vRGVidWcud3JpdGUoImNsZWFyIHllc25vLGFza2FnYWluOiAiLHllc25vLGFza2FnYWluKTsKKyAgICAgICAgICAgIC8vY2FuIG9ubHkgYmUgdHJ1ZSBpbiB0aGlzIGNhc2UKKyAgICAgICAgCisgICAgICAgICAgICAgdmFyIGcgPSBjYW52YXMuZ2V0VXNlckRhdGEoKTsKKyAgICAgICAgICAgICBnWyJkb1Nob3dVcGRhdGVQcm9maWxlTWVzc2FnZSJdPWFza2FnYWluOworICAgICAgICAgICAgIGNhbnZhcy5zZXRVc2VyRGF0YShnKTsKKyAgICAgICAgPC9tZXRob2Q+ICAgICAKKyAgICA8L25ldFJlbW90ZUNhbGxIaWI+CisgICAgCisgICAgICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9InNldElkIiBmdW5jbmFtZT0ic2V0SWQiPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICAgICAgLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZSB0aGUgcnRtcGNvbm5lY3Rpb24KKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiIyMjIyMjIyMjIyMjIyMjIyBzZXRJZDogIix2YWx1ZSk7CisgICAgICAgICAgICAgICAgY2FudmFzLnNldEF0dHJpYnV0ZSgnc3RyZWFtaWQnLHZhbHVlKTsgICAKKyAgICAgICAgICAgIDwvaGFuZGxlcj4gIAorICAgICAgICA8L25ldFJlbW90ZUNhbGxIaWI+IAorICAgICAgICAKKyAgICAgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0ic2V0VXNlcm5hbWVBbmRTZXNzaW9uIiBmdW5jbmFtZT0ic2V0VXNlcm5hbWVBbmRTZXNzaW9uIiByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAgIAorICAgICAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gY2FudmFzLnNlc3Npb25JZDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4gCisgICAgICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGNhbnZhcy51c2VyX2lkOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGNhbnZhcy5jdXJyZW50dXNlcjs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBjYW52YXMuZmlyc3ROYW1lOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGNhbnZhcy5sYXN0TmFtZTs8L21ldGhvZD48L25ldHBhcmFtPiAgICAgIAorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICAgICAgLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZSB0aGUgcnRtcGNvbm5lY3Rpb24KKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2V0VXNlcm5hbWVBbmRTZXNzaW9uOiAiLGNhbnZhcy51c2VyX2lkLHZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAoY2FudmFzLnRoaXNoaWIubG9hZGVyVmFyICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgIGNhbnZhcy50aGlzaGliLmxvYWRlclZhci5zZXRQcm9ncmVzcygpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBwYXJlbnQuZ2V0RGFzaGJvYXJkQ29uZmlndXJhdGlvbi5kb0NhbGwoKTsKKyAgICAgICAgICAgIDwvaGFuZGxlcj4gIAorICAgICAgICA8L25ldFJlbW90ZUNhbGxIaWI+ICAgICAgICAKKyAgICAgICAgCisJCTxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImdldERhc2hib2FyZENvbmZpZ3VyYXRpb24iIGZ1bmNuYW1lPSJ4bWxjcm0uZ2V0RGFzaGJvYXJkQ29uZmlndXJhdGlvbiIgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4KKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gY2FudmFzLnNlc3Npb25JZDs8L21ldGhvZD48L25ldHBhcmFtPgorCQkJPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisJCQk8IVtDREFUQVsKKwkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZ2V0RGFzaGJvYXJkQ29uZmlndXJhdGlvbjogIiwgdmFsdWUpOworCQkJCWlmIChjYW52YXMudGhpc2hpYi5sb2FkZXJWYXIgIT0gbnVsbCkgeworCQkJCQljYW52YXMudGhpc2hpYi5sb2FkZXJWYXIuc2V0UHJvZ3Jlc3MoKTsKKwkJCQl9CisJCQkJcGFyZW50LmRhc2hib2FyZENvbmZpZyA9IHZhbHVlOworCQkJCXBhcmVudC5nZXROYXZpLmRvQ2FsbCgpOworCQkJXV0+CisJCQk8L2hhbmRsZXI+CisJCTwvbmV0UmVtb3RlQ2FsbEhpYj4gCisJICAgIAorICAgICAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJ0ZXN0TWV0aG9kIiBmdW5jbmFtZT0idGVzdE1ldGhvZCI+CisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ0ZXN0TWV0aG9kICIsdmFsdWUpOyAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIDwvaGFuZGxlcj4gIAorICAgICAgICA8L25ldFJlbW90ZUNhbGxIaWI+CisKKyAgICAgICAgPCEtLS0gTm90aWZpY2F0aW9uIG9mIG5ldyBVc2VyIC0tPiAKKwkJPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iYWRkTmV3VXNlciIgZnVuY25hbWU9ImFkZE5ld1VzZXIiPgorCQkJPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisJCQkJLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZSB0aGUgcnRtcGNvbm5lY3Rpb24KKwkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiYWRkTmV3VXNlcjogIix2YWx1ZSk7CisJCQkJaWYodmFsdWUuc2lwVHJhbnNwb3J0KSB7CisJCQkJCWNhbnZhcy5fdmlkZW9jb250YWluZXIuYWRkSXRlbSh2YWx1ZS5jb25uZWN0ZWRTaW5jZSx2YWx1ZS5pc01vZCx2YWx1ZS5zdHJlYW1pZCx2YWx1ZS5yb29tX2lkLCcnLHZhbHVlLmZvcm1hdGVkRGF0ZSx2YWx1ZS51c2VycG9zLHZhbHVlLnVzZXJjb2xvcix2YWx1ZSk7CisJCQkJfSBlbHNlIHsKKwkJCQkJY2FudmFzLl92aWRlb2NvbnRhaW5lci5hZGRDbGllbnRJdGVtKHZhbHVlLmNvbm5lY3RlZFNpbmNlLHZhbHVlLmlzTW9kLHZhbHVlLnN0cmVhbWlkLHZhbHVlLnJvb21faWQsJycsdmFsdWUuZm9ybWF0ZWREYXRlLHZhbHVlLnVzZXJwb3MsdmFsdWUudXNlcmNvbG9yLHZhbHVlKTsKKwkJCQl9CisJCQkJY2FudmFzLnNldEF0dHJpYnV0ZSgnbnVtYmVyb2ZwYXJ0bmVycycsY2FudmFzLm51bWJlcm9mcGFydG5lcnMrMSk7CisJCQk8L2hhbmRsZXI+CisJCTwvbmV0UmVtb3RlQ2FsbEhpYj4gICAgCisgICAgICAgIAorICAgICAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJnZXRDdXJyZW50TW9kZXJhdG9yTGlzdCIgZnVuY25hbWU9ImdldEN1cnJlbnRNb2RlcmF0b3JMaXN0Ij4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiIyMjIyMjIyMjIyMjIGdldEN1cnJlbnRNb2RlcmF0b3JMaXN0OiAiLHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5hbmFseXplTW9kZXJhdGlvbkxpc3QodmFsdWUpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgY2FudmFzLmN1cnJlbnRNb2RlcmF0b3JMaXN0ID0gdmFsdWU7CisgICAgICAgICAgICAgICAgICAgIC8vVXBkYXRlIE1vZGVyYXRpb24gRmxhZworICAgICAgICAgICAgICAgICAgICBjYW52YXMudXBkYXRlTW9kZXJhdGlvbkZsYWcoKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIHZhciBtZXNzYWdlQWxyZWFkeVRocm93biA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidGhyb3cgZXZlbnQgdG8gZHJhd2FyZWE6ICIsY2FudmFzLm1vZGVyYXRvclN0cmVhbUlELGNhbnZhcy5pc21vZGVyYXRvcik7CisgICAgICAgICAgICAgICAgICAgIAorCQkJCQlpZiAodGhpcy5wYXJlbnQubW9kdXMgPT0gImNvbmZlcmVuY2UiKXsKKwkJCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCIjIyMjIyMjIyMjIyMjIyBzaG93RGV2aWNlUG9wVXAiKTsKKwkJCQkJCWNhbnZhcy5fdmlkZW9jb250YWluZXIuX3ZpZGVvdmlld2NvbnRlbnQuc2hvd0RldmljZVBvcFVwKGZhbHNlKTsKKwkJCQkJfQorICAgICAgICAgICAgICAgICAgICBjYW52YXMuX2RyYXdhcmVhLm9ub3BlbldoaXRlQm9hcmQuc2VuZEV2ZW50KCk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgicm9vbVR5cGVfaWQgIixjYW52YXMuY3VycmVudFJvb21PYmplY3QpOworICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgicm9vbVR5cGVfaWQgIixjYW52YXMuY3VycmVudFJvb21PYmplY3Qucm9vbXR5cGUucm9vbXR5cGVzX2lkKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmIChjYW52YXMuY3VycmVudFJvb21PYmplY3Qucm9vbXR5cGUucm9vbXR5cGVzX2lkIT0zKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvL1dlIGRvIG5vdCBzaG93IHRoaXMgd2FybmluZyB3aGVuIHRoZSByb29tdHlwZSBpcyAzIChyZXN0cmljdGVkKQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbnZhcy5jdXJyZW50Um9vbU9iai5pc01vZGVyYXRlZFJvb20pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoID09IDAgJiYgIW1lc3NhZ2VBbHJlYWR5VGhyb3duKXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IGx6LmxhYmVsZXJyb3JQb3B1cChjYW52YXMse2Vycm9ybGFiZWxpZDo2NDF9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5sZW5ndGggPT0gMCAmJiAhbWVzc2FnZUFscmVhZHlUaHJvd24peworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgbHouZXJyb3JNb2RlcmF0b3JQb3B1cChjYW52YXMse2Vycm9yOmNhbnZhcy5nZXRMYWJlbE5hbWUoNDk4KX0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIF1dPgorICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8L25ldFJlbW90ZUNhbGxIaWI+CisgICAgICAgIAorICAgICAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJuZXdTdHJlYW0iIGZ1bmNuYW1lPSJuZXdTdHJlYW0iPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICAgICAgLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZSB0aGUgcnRtcGNvbm5lY3Rpb24KKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgibmV3U3RyZWFtOiAiLHZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUuaXNTY3JlZW5DbGllbnQpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYW52YXMuX3ZpZGVvY29udGFpbmVyLnN0YXJ0U3RyZWFtKHZhbHVlLnB1YmxpY1NJRCx2YWx1ZS5icm9hZENhc3RJRCx2YWx1ZS5maXJzdG5hbWUsdmFsdWUubGFzdG5hbWUsdmFsdWUuaW50ZXJ2aWV3UG9kSWQsdmFsdWUuVldpZHRoLHZhbHVlLlZIZWlnaHQpOyAKKyAgICAgICAgICAgIDwvaGFuZGxlcj4gICAKKyAgICAgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAKKyAgICAgICAgICAgCisgICAgICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImNsb3NlU3RyZWFtIiBmdW5jbmFtZT0iY2xvc2VTdHJlYW0iPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICAgICAgLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZSB0aGUgcnRtcGNvbm5lY3Rpb24KKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiKioqKiBjbG9zZVN0cmVhbTogIix2YWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlLmlzU2NyZWVuQ2xpZW50KSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCIgb25kYXRhIGNsb3NlU3RyZWFtOiAiLHZhbHVlLnN0cmVhbVB1Ymxpc2hOYW1lKTsgCisgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5jdXJyZW50QmFzZUNvbmZlcmVuY2VSb29tLl9zY3JlZW5TaGFyaW5nQWRhcHRlci5jbG9zZVNjcmVlblNoYXJpbmcodmFsdWUpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vZnJlZSB0aGUgVmlkZW9Db250YWluZXIKKyAgICAgICAgICAgICAgICAgICAgLy9jYW52YXMuX3ZpZGVvY29udGFpbmVyLmNsb3NlU3RyZWFtQ2xpZW50KHZhbHVlLnB1YmxpY1NJRCk7CisgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5zZW5kVmlhTG9jYWxDb25uZWN0aW9uKGNhbnZhcy52aWRfbGNfbmFtZSwgImNsb3NlU3RyZWFtQ2xpZW50IiwgW3ZhbHVlLnB1YmxpY1NJRF0pOworICAgICAgICAgICAgICAgICAgICBjYW52YXMuc2V0QXR0cmlidXRlKCdudW1iZXJvZnBhcnRuZXJzJyxjYW52YXMubnVtYmVyb2ZwYXJ0bmVycy0xKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLy9UT0RPOmNoZWNrIGZpcnN0IGN1cnJlbnQgdGFiCisgICAgICAgICAgICA8L2hhbmRsZXI+ICAgCisgICAgICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4gIAorICAgICAgICAKKyAgICAgICAgPCEtLS0KKyAgICAgICAgICAgIEV2ZW50IGlzIGludm9rZWQgaWYgYSByZWQ1IHN0cmVhbSBzaGFyaW5nIGlzIGNsb3NlZAorICAgICAgICAgLS0+CisgICAgICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9InN0b3BTY3JlZW5TaGFyaW5nTWVzc2FnZSIgZnVuY25hbWU9InN0b3BTY3JlZW5TaGFyaW5nTWVzc2FnZSI+CisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCIqKioqIGNsb3NlU3RyZWFtOiAiLHZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiIG9uUmVzdWx0IHN0b3BTY3JlZW5TaGFyaW5nTWVzc2FnZSA6ICIsdmFsdWUuc3RyZWFtUHVibGlzaE5hbWUpOyAKKyAgICAgICAgICAgICAgICBjYW52YXMuY3VycmVudEJhc2VDb25mZXJlbmNlUm9vbS5fc2NyZWVuU2hhcmluZ0FkYXB0ZXIuY2xvc2VTY3JlZW5TaGFyaW5nKHZhbHVlKTsKKyAgICAgICAgICAgIDwvaGFuZGxlcj4gICAKKyAgICAgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAKKyAgICAgICAgICAgICAKKyAgICAgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iY2xpZW50cmVnaXN0ZXJSb29tIiBmdW5jbmFtZT0iY2xpZW50cmVnaXN0ZXJSb29tIj4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCIqKioqIGNsaWVudHJlZ2lzdGVyUm9vbTo6b25kYXRhICIsIHZhbHVlKTsKKyAgICAgICAgICAgIDwvaGFuZGxlcj4gICAKKyAgICAgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAgIAorCisJCTxtZXRob2QgbmFtZT0icm9vbURpc2Nvbm5lY3RVc2VyIiBhcmdzPSJ2YWx1ZSxpZCI+CisJCQlpZiAoY2FudmFzLl92aWRlb2NvbnRhaW5lciE9bnVsbCl7CisJCQkJY2FudmFzLl92aWRlb2NvbnRhaW5lci5kaXNjb25uZWN0Y2xpZW50KGlkKTsKKwkJCQlpZiAoY2FudmFzLmN1cnJlbnRNb2RBcHBseSE9bnVsbCkgY2FudmFzLmN1cnJlbnRNb2RBcHBseS5yZWplY3RVc2VyKHZhbHVlKTsKKwkJCQlpZiAodmFsdWUuaXNSZWNvcmRpbmcpIHsKKwkJCQkJY2FudmFzLl9teW1vZC5yZWNvcmRpbmdVc2VyID0gbnVsbDsKKwkJCQl9CisJCQkJaWYgKHZhbHVlLnN0cmVhbVB1Ymxpc2hTdGFydGVkKSB7CisJCQkJCWNhbnZhcy5fbXltb2QucHVibGlzaGluZ09iaiA9IG51bGw7CisJCQkJfQorCQkJCWNhbnZhcy5fbXltb2Quc2V0TWVzc2FnZSgpOworCQkJfQorCQk8L21ldGhvZD4KKwkJCisgICAgICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9InJvb21EaXNjb25uZWN0IiBmdW5jbmFtZT0icm9vbURpc2Nvbm5lY3QiPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJyb29tRGlzY29ubmVjdDogIix2YWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlLmlzU2NyZWVuQ2xpZW50KSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImNhbnZhcy5jdXJyZW50QmFzZUNvbmZlcmVuY2VSb29tLl9jaGF0UGFuZWxTdHJpY3Q6ICIsIGNhbnZhcy5jdXJyZW50QmFzZUNvbmZlcmVuY2VSb29tLl9jaGF0UGFuZWxTdHJpY3QpOworICAgICAgICAgICAgICAgIGlmIChjYW52YXMuY3VycmVudEJhc2VDb25mZXJlbmNlUm9vbSAhPSBudWxsICYmIGNhbnZhcy5jdXJyZW50QmFzZUNvbmZlcmVuY2VSb29tLl9jaGF0UGFuZWxTdHJpY3QgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIAljYW52YXMuY3VycmVudEJhc2VDb25mZXJlbmNlUm9vbS5fY2hhdFBhbmVsU3RyaWN0LmNsb3NlcHJpdmF0ZWNoYXQoWyJjbG9zZSIsIHZhbHVlLnB1YmxpY1NJRF0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoY2FudmFzLmN1cnJlbnRBY3Rpdml0eUxpc3QgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBjYW52YXMuY3VycmVudEFjdGl2aXR5TGlzdC5hZGRNZXNzYWdlUmVxdWVzdCh2YWx1ZSwgY2FudmFzLmdldExhYmVsTmFtZSgxMzY3KSwgbmV3IERhdGUoKS5nZXRUaW1lKCkpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoY2FudmFzLl9vdmVyYWxsY2hhdGNvbnRlbnQhPW51bGwpeworICAgICAgICAgICAgICAgICAgICB2YXIgcGFyZW50T2JqID0gY2FudmFzLl9vdmVyYWxsY2hhdGNvbnRlbnQucGFyZW50LnBhcmVudC5wYXJlbnQuX2NoYXRwYXJ0aWNpcGFudHM7CisgICAgICAgICAgICAgICAgICAgIHBhcmVudE9iai5yZW1vdmVJdGVtQnlJZCh2YWx1ZS51c2VyX2lkKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcGFyZW50LnJvb21EaXNjb25uZWN0VXNlcih2YWx1ZSwgdmFsdWUucHVibGljU0lEKTsKKyAgICAgICAgICAgIF1dPgorICAgICAgICAgICAgPC9oYW5kbGVyPiAgIAorICAgICAgICA8L25ldFJlbW90ZUNhbGxIaWI+CisgICAgICAgIAorICAgICAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJzdG9wUmVjb3JkaW5nTWVzc2FnZSIgZnVuY25hbWU9InN0b3BSZWNvcmRpbmdNZXNzYWdlIj4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgICAgIC8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisgICAgICAgICAgICAgICAgY2FudmFzLl9teW1vZC5yZWNvcmRpbmdVc2VyID0gbnVsbDsKKyAgICAgICAgICAgICAgICBjYW52YXMuX215bW9kLnNldE1lc3NhZ2UoKTsgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgPC9oYW5kbGVyPiAgIAorICAgICAgICA8L25ldFJlbW90ZUNhbGxIaWI+CisgICAgICAgIAorICAgICAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJzdG9wUHVibGlzaGluZ01lc3NhZ2UiIGZ1bmNuYW1lPSJzdG9wUHVibGlzaGluZ01lc3NhZ2UiPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICAgICAgLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZSB0aGUgcnRtcGNvbm5lY3Rpb24KKwkJCQljYW52YXMuX215bW9kLnB1Ymxpc2hpbmdPYmogPSBudWxsOworICAgICAgICAgICAgICAgIGNhbnZhcy5fbXltb2Quc2V0TWVzc2FnZSgpOyAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICA8L2hhbmRsZXI+ICAgCisgICAgICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4KKyAgICAgICAgCisgICAgICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9InNldFN5bmNGbGFnIiBmdW5jbmFtZT0ic2V0U3luY0ZsYWciID4gICAgICAKKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzZXRTeW5jRmxhZzogIix2YWx1ZSk7CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4gICAKKyAgICAgICAgICAgICAKKyAgICAgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0ibG9naWNhbFJvb21MZWF2ZURpcyIgZnVuY25hbWU9ImxvZ2ljYWxSb29tTGVhdmVEaXMiID4gICAgICAKKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJsb2dpY2FsUm9vbUxlYXZlRGlzOiAiLHZhbHVlKTsKKyAgICAgICAgICAgICAgICBwYXJlbnQucm9vbURpc2Nvbm5lY3RVc2VyKHZhbHVlLCB2YWx1ZS5icm9hZENhc3RJRCk7CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4gICAgICAgICAgICAgCisgIAorICAgICAgICA8bWV0aG9kIG5hbWU9InNldFVzZXJTdGF0dXMiIGFyZ3M9ImN0eCx1c2VyLG8iPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisJCQkJaWYgKCFvIHx8ICF1c2VyKSByZXR1cm47CisgICAgICAgICAgICAgICAgLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZSB0aGUgcnRtcGNvbm5lY3Rpb24KKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSB7CisgICAgICAgICAgICAgICAgICAgIERlYnVnLndyaXRlKCJzZXRVc2VyU3RhdHVzOiAiLCB1c2VyKTsKKyAgICAgICAgICAgICAgICAgICAgRGVidWcud3JpdGUoInNldFVzZXJTdGF0dXM6ICIsIG8ucGFyYW0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB2YXIgYU9iaiA9IG8ucGFyYW1bM107CisgICAgICAgICAgICAgICAgdmFyIHVzUG9pbnQgPSBudWxsOworICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJkcmF3T2JqOiAiLCBhT2JqWzBdKTsKKyAgICAgICAgICAgICAgICBzd2l0Y2goYU9ialswXSkgeworICAgICAgICAgICAgICAgICAgICBjYXNlICdsaW5lJzoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAndWxpbmUnOgorICAgICAgICAgICAgICAgICAgICAgICAgdXNQb2ludCA9IHt4OiBhT2JqW2FPYmoubGVuZ3RoIC0gNV0gKyBhT2JqWzZdLCB5OiBhT2JqW2FPYmoubGVuZ3RoIC0gNF0gKyBhT2JqWzddfTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlICdsZXR0ZXInOgorICAgICAgICAgICAgICAgICAgICBjYXNlICdyZWN0YW5nbGUnOgorICAgICAgICAgICAgICAgICAgICBjYXNlICdlbGxpcHNlJzoKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAnY2xpcGFydCc6CisgICAgICAgICAgICAgICAgICAgICAgICB1c1BvaW50ID0ge3g6IGFPYmpbYU9iai5sZW5ndGggLSAzXSArIGFPYmpbYU9iai5sZW5ndGggLSA1XSwgeTogYU9ialthT2JqLmxlbmd0aCAtIDJdICsgYU9ialthT2JqLmxlbmd0aCAtIDRdfTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlICdwYWludCc6CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgcG9pbnRzID0gYU9ialsxXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vcG9pbnRzIGFyZSBlbXB0eSBvbiAncGFpbnQnIG1vdmUKKyAgICAgICAgICAgICAgICAgICAgICAgIHVzUG9pbnQgPSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDogYU9ialthT2JqLmxlbmd0aCAtIDVdICsgKHBvaW50cy5sZW5ndGggPyBwb2ludHNbcG9pbnRzLmxlbmd0aCAtIDFdWzNdIDogYU9ialthT2JqLmxlbmd0aCAtIDNdKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgeTogYU9ialthT2JqLmxlbmd0aCAtIDRdICsgKHBvaW50cy5sZW5ndGggPyBwb2ludHNbcG9pbnRzLmxlbmd0aCAtIDFdWzRdIDogYU9ialthT2JqLmxlbmd0aCAtIDJdKX07CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAnZHJhd2Fycm93JzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHVzUG9pbnQgPSB7eDogYU9ialthT2JqLmxlbmd0aCAtIDVdICsgYU9ials5XSwgeTogYU9ialthT2JqLmxlbmd0aCAtIDRdICsgYU9ialsxMF19OworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgJ2NsaXBhcnQnOgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICh1c1BvaW50KSB7CisgICAgICAgICAgICAgICAgICAgIHZhciB1cyA9IG5ldyBsei51c2VyU3RhdHVzKGN0eCwgeworICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6MTAwCisgICAgICAgICAgICAgICAgICAgICAgICAsIHg6IHVzUG9pbnQueAorICAgICAgICAgICAgICAgICAgICAgICAgLCB5OiB1c1BvaW50LnkgLSAyNSAvL2xpdHRsZSBhYm92ZQorICAgICAgICAgICAgICAgICAgICAgICAgLCBxdWV1ZWFibGU6IGZhbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAsIHN0YXR1c1RleHQ6IHVzZXIuZmlyc3RuYW1lICsgIiAiICsgdXNlci5sYXN0bmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ1czogIiwgdXMsICI7IHVzUG9pbnQ6ICIsIHVzUG9pbnQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L21ldGhvZD4KKworICAgICAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJzZW5kVmFyc1RvV2hpdGVib2FyZCIgZnVuY25hbWU9InNlbmRWYXJzVG9XaGl0ZWJvYXJkIj4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIC8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzZW5kVmFyc1RvV2hpdGVib2FyZCA6ICIsdmFsdWUpOworICAgICAgICAgICAgcGFyZW50LnNldFVzZXJTdGF0dXMoY2FudmFzLl9kcmF3YXJlYSwgdmFsdWVbMF0sIHZhbHVlWzFdKTsKKyAgICAgICAgICAgIGNhbnZhcy5fZHJhd2FyZWEuc2VuZFdhdGNoT2JqZWN0KGNhbnZhcy5fZHJhd2FyZWEsdmFsdWVbMV1bMl0sdmFsdWVbMV1bM10sZmFsc2UpOworICAgICAgICAgICAgICAgIF1dPgorICAgICAgICAgICAgPC9oYW5kbGVyPiAgIAorICAgICAgICA8L25ldFJlbW90ZUNhbGxIaWI+ICAKKyAgICAgICAgCisgICAgICAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJzZW5kVmFyc1RvV2hpdGVib2FyZEJ5SWQiIGZ1bmNuYW1lPSJzZW5kVmFyc1RvV2hpdGVib2FyZEJ5SWQiPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZSB0aGUgcnRtcGNvbm5lY3Rpb24KKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzZW5kVmFyc1RvV2hpdGVib2FyZEJ5SWQgOiAiLHZhbHVlKTsKKyAgICAgICAgICAgIHBhcmVudC5zZXRVc2VyU3RhdHVzKGNhbnZhcy5fZHJhd2FyZWEsIHZhbHVlWzBdLCB2YWx1ZVsxXSk7CisgICAgICAgICAgICBjYW52YXMuX2RyYXdhcmVhLnBhcmVudC5wYXJlbnQucGFyZW50LnNlbmRXYXRjaE9iamVjdEJ5V2hpdGVib2FyZCh2YWx1ZVsxXSk7CisgICAgICAgICAgICAgICAgXV0+CisgICAgICAgICAgICA8L2hhbmRsZXI+ICAgCisgICAgICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4gCisgICAgICAgIAorICAgICAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJsb2FkV21sVG9XaGl0ZWJvYXJkQnlJZCIgZnVuY25hbWU9ImxvYWRXbWxUb1doaXRlYm9hcmRCeUlkIj4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIC8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzZW5kVmFyc1RvV2hpdGVib2FyZEJ5SWQgOiAiLHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgY2FudmFzLl9kcmF3YXJlYS5wYXJlbnQucGFyZW50LnBhcmVudC5sb2FkV21sVG9XaGl0ZWJvYXJkQnlJZCh2YWx1ZSk7CisgICAgICAgICAgICAgICAgXV0+CisgICAgICAgICAgICA8L2hhbmRsZXI+ICAgCisgICAgICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4KKyAgICAgICAgCisgICAgICAgIDwhLS0KKyAgICAgICAgICAgIEFkZHMgdGhpcyBVc2VyIHRvIHRoZSBMaXN0IG9mIGN1cnJlbnQgTW9kZXJhdG9ycworICAgICAgICAgLS0+CisgICAgICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImFkZE1vZGVyYXRvciIgZnVuY25hbWU9ImFkZE1vZGVyYXRvciI+CisgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9InB1YmxpY1NJRE9mTmV3TW9kZXJhdG9yIiB2YWx1ZT0iMCIgdHlwZT0ic3RyaW5nIiAvPgorICAgICAgICAgICAgPG5ldHBhcmFtIG5hbWU9InZhcnMiPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucHVibGljU0lET2ZOZXdNb2RlcmF0b3I7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIC8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIiBhZGRNb2RlcmF0b3IgOiAiLHZhbHVlKTsgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgXV0+CisgICAgICAgICAgICA8L2hhbmRsZXI+ICAgCisgICAgICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4KKyAgICAgICAgCisgICAgICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9InJlbW92ZU1vZGVyYXRvciIgZnVuY25hbWU9InJlbW92ZU1vZGVyYXRvciI+CisgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9InB1YmxpY1NJRE9mTmV3TW9kZXJhdG9yIiB2YWx1ZT0iMCIgdHlwZT0ic3RyaW5nIiAvPgorICAgICAgICAgICAgPG5ldHBhcmFtIG5hbWU9InZhcnMiPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucHVibGljU0lET2ZOZXdNb2RlcmF0b3I7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIC8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisgICAgICAgICAgICAgICAgLy9EZWJ1Zy53cml0ZSgiIG9uUmVzdWx0IHNldE1vZGVyYXRvciA6ICIsdmFsdWUpOyAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBdXT4KKyAgICAgICAgICAgIDwvaGFuZGxlcj4gICAKKyAgICAgICAgPC9uZXRSZW1vdGVDYWxsSGliPgorICAgICAgICAKKyAgICAgICAgPCEtLQorICAgICAgICBwdWJsaWMgc3luY2hyb25pemVkIExvbmcgc2V0QnJvYWRDYXN0aW5nRmxhZyhTdHJpbmcgcHVibGljU0lELCBib29sZWFuIHZhbHVlKSAKKyAgICAgICAgIC0tPgorICAgICAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJzZXRCcm9hZENhc3RpbmdGbGFnIiBmdW5jbmFtZT0ic2V0QnJvYWRDYXN0aW5nRmxhZyI+CisgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9InB1YmxpY1NJRE9mTmV3TW9kZXJhdG9yIiB2YWx1ZT0iMCIgdHlwZT0ic3RyaW5nIiAvPgorICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJpc0FsbG93ZWRUb0Jyb2FkQ2FzdEFWIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImF2c2V0dGluZ3MiIHZhbHVlPSJhdiIgdHlwZT0ic3RyaW5nIiAvPgorICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJpbnRlcnZpZXdQb2RJZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKyAgICAgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnB1YmxpY1NJRE9mTmV3TW9kZXJhdG9yOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5pc0FsbG93ZWRUb0Jyb2FkQ2FzdEFWOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5pbnRlcnZpZXdQb2RJZDs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZSB0aGUgcnRtcGNvbm5lY3Rpb24KKyAgICAgICAgICAgICAgICAvL0RlYnVnLndyaXRlKCIgb25SZXN1bHQgc2V0TW9kZXJhdG9yIDogIix2YWx1ZSk7ICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIF1dPgorICAgICAgICAgICAgPC9oYW5kbGVyPiAgIAorICAgICAgICA8L25ldFJlbW90ZUNhbGxIaWI+CisgICAgICAgIAorICAgICAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJzZXROZXdCcm9hZENhc3RpbmdGbGFnIiBmdW5jbmFtZT0ic2V0TmV3QnJvYWRDYXN0aW5nRmxhZyI+CisgICAgICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIG51bGw7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorICAgICAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCIgb25SZXN1bHQgc2V0TmV3QnJvYWRDYXN0aW5nRmxhZyA6ICIsdmFsdWUpOyAgIAorICAgICAgICAgICAgICAgICAgICBpZiAoY2FudmFzLnB1YmxpY1NJRCA9PSB2YWx1ZS5wdWJsaWNTSUQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJJdHMgYWJvdXQgWW91ICIsdmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLmlzQnJvYWRjYXN0aW5nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbnZhcy50aGlzaGliLm1vZHVzID09ICJpbnRlcnZpZXciKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzLl9kcmF3YXJlYS5uZXdJbnRlcnZpZXdTdGFydGluZyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAJY2FudmFzLl92aWRlb2NvbnRhaW5lci5fdmlkZW92aWV3Y29udGVudC5zaG93RGV2aWNlUG9wVXAoZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMuc2V0QXR0cmlidXRlKCJpc0Jyb2FkQ2FzdGluZyIsdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5zZXRBdHRyaWJ1dGUoImlzQnJvYWRDYXN0aW5nIixmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0gCisgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5zZXRBdHRyaWJ1dGUoImxhc3RCcm9hZENhc3RpbmdVc2VyIix2YWx1ZSk7CisgICAgICAgICAgICAgICAgXV0+CisgICAgICAgICAgICA8L2hhbmRsZXI+ICAgCisgICAgICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4KKworICAgICAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJnaXZlRXhjbHVzaXZlQXVkaW8iIGZ1bmNuYW1lPSJnaXZlRXhjbHVzaXZlQXVkaW8iPgorICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJwdWJsaWNTSUQiIHZhbHVlPSIwIiB0eXBlPSJzdHJpbmciIC8+CisgICAgICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wdWJsaWNTSUQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgICAgIDxtZXRob2QgbmFtZT0ic2V0RXhjbHVzaXZlQXVkaW8iIGFyZ3M9InRQdWJsaWNTSUQiPgorICAgICAgICAgICAgICAgIHRoaXMucHVibGljU0lEID0gdFB1YmxpY1NJRDsKKyAgICAgICAgICAgICAgICB0aGlzLmRvQ2FsbCgpOworICAgICAgICAgICAgPC9tZXRob2Q+CisgICAgICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4KKworICAgICAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJyZWNlaXZlRXhjbHVzaXZlQXVkaW9GbGFnIiBmdW5jbmFtZT0icmVjZWl2ZUV4Y2x1c2l2ZUF1ZGlvRmxhZyI+CisgICAgICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIG51bGw7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorICAgICAgICAgICAgICAgICAgICBjYW52YXMuX3ZpZGVvY29udGFpbmVyLnJlY2VpdmVFeGNsdXNpdmVBdWRpb0ZsYWcodmFsdWUucHVibGljU0lEKQorICAgICAgICAgICAgICAgIF1dPgorICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8L25ldFJlbW90ZUNhbGxIaWI+CisKKyAgICAgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0ic3dpdGNoTWljTXV0ZWQiIGZ1bmNuYW1lPSJzd2l0Y2hNaWNNdXRlZCI+CisgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9InB1YmxpY1NJRCIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJtdXRlIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgICAgICAgICA8ZXZlbnQgbmFtZT0ib25NdXRlIiAvPgorICAgICAgICAgICAgPG1ldGhvZCBuYW1lPSJzZXRNdXRlIiBhcmdzPSJ0UHVibGljU0lELHRNdXRlIj4KKyAgICAgICAgICAgICAgICB0aGlzLnB1YmxpY1NJRCA9IHRQdWJsaWNTSUQ7CisgICAgICAgICAgICAgICAgdGhpcy5tdXRlID0gdE11dGU7CisgICAgICAgICAgICAgICAgdmFyIG9iaiA9IG5ldyBBcnJheSgpOworICAgICAgICAgICAgICAgIG9ialsibXV0ZSJdID0gdE11dGU7CisgICAgICAgICAgICAgICAgb2JqWyJwdWJsaWNTSUQiXSA9IHRQdWJsaWNTSUQ7CisgICAgICAgICAgICAgICAgdGhpcy5vbk11dGUuc2VuZEV2ZW50KG9iaik7CisgICAgICAgICAgICAgICAgdGhpcy5kb0NhbGwoKTsKKyAgICAgICAgICAgIDwvbWV0aG9kPgorICAgICAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucHVibGljU0lEOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5tdXRlOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4KKworICAgICAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJuZXdSZWQ1U2NyZWVuQ3Vyc29yIiBmdW5jbmFtZT0ibmV3UmVkNVNjcmVlbkN1cnNvciI+CisgICAgICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIG51bGw7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorICAgICAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCIgb25SZXN1bHQgbmV3UmVkNVNjcmVlbkN1cnNvciA6ICIsdmFsdWUpOyAgCisgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5jdXJyZW50QmFzZUNvbmZlcmVuY2VSb29tLl9zY3JlZW5TaGFyaW5nQWRhcHRlci51cGRhdGVDdXJzb3JTY3JlZW5TaGFyaW5nKHZhbHVlKTsKKyAgICAgICAgICAgICAgICBdXT4KKyAgICAgICAgICAgIDwvaGFuZGxlcj4gICAKKyAgICAgICAgPC9uZXRSZW1vdGVDYWxsSGliPgorICAgICAgICAKKyAgICAgICAgCisgICAgICAgIDwhLS0KKyAgICAgICAgICAgIFJlZDUgU2NyZWVuIFNoYXJpbmcKKyAgICAgICAgIC0tPgorICAgICAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJuZXdTY3JlZW5TaGFyaW5nIiBmdW5jbmFtZT0ibmV3U2NyZWVuU2hhcmluZyI+CisgICAgICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIG51bGw7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorICAgICAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCIgb25SZXN1bHQgbmV3U2NyZWVuU2hhcmluZyAxIDogIix2YWx1ZSk7ICAKKyAgICAgICAgICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiIG9uUmVzdWx0IG5ld1NjcmVlblNoYXJpbmcgMiA6ICIsdmFsdWUuc3RyZWFtaWQpOyAKKyAgICAgICAgICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiIG9uUmVzdWx0IG5ld1NjcmVlblNoYXJpbmcgMyA6ICIsY2FudmFzLnN0cmVhbWlkKTsgCisgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCIgb25SZXN1bHQgbmV3U2NyZWVuU2hhcmluZyA0IDogIix2YWx1ZS5zdHJlYW1QdWJsaXNoTmFtZSk7IAorICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiIG9uUmVzdWx0IG5ld2NyZWVuU2hhcmluZyA1IDogIixjYW52YXMucHVibGljU0lEKTsgCisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBjYW52YXMuY3VycmVudEJhc2VDb25mZXJlbmNlUm9vbS5fc2NyZWVuU2hhcmluZ0FkYXB0ZXIubmV3U2NyZWVuU2hhcmluZyh2YWx1ZSk7CisgICAgICAgICAgICAgICAgXV0+CisgICAgICAgICAgICA8L2hhbmRsZXI+ICAgCisgICAgICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4KKyAgICAgICAgCisgICAgICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImNoZWNrU2NyZWVuU2hhcmluZyIgZnVuY25hbWU9ImNoZWNrU2NyZWVuU2hhcmluZyI+CisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICAgICAgLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZSB0aGUgcnRtcGNvbm5lY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIiBvblJlc3VsdCBjaGVja1NjcmVlblNoYXJpbmcgOiAiLHZhbHVlKTsgIAorICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAJY2FudmFzLmN1cnJlbnRCYXNlQ29uZmVyZW5jZVJvb20uX3NjcmVlblNoYXJpbmdBZGFwdGVyLm5ld1NjcmVlblNoYXJpbmdzKHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndhcm4oIlNlbGYgU2NyZWVuIFNoYXJpbmciKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIF1dPgorICAgICAgICAgICAgPC9oYW5kbGVyPiAgIAorICAgICAgICA8L25ldFJlbW90ZUNhbGxIaWI+CisgICAgICAgIAorICAgICAgICAKKyAgICAgICAgPCEtLQorICAgICAgICBwdWJsaWMgc3luY2hyb25pemVkIExvbmcgYXBwbHlGb3JNb2RlcmF0aW9uKFN0cmluZyBwdWJsaWNTSUQpCisgICAgICAgICAtLT4KKyAgICAgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iYXBwbHlGb3JNb2RlcmF0aW9uIiBmdW5jbmFtZT0iYXBwbHlGb3JNb2RlcmF0aW9uIgorICAgICAgICAgICAgICAgICAgICAgICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSI+CisgICAgICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGNhbnZhcy5wdWJsaWNTSUQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiYXBwbHlGb3JNb2RlcmF0aW9uIDogIix2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSAxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvL0RvIGFkZCBkaXJlY3QKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5hZGRNb2RlcmF0b3IucHVibGljU0lET2ZOZXdNb2RlcmF0b3IgPSBjYW52YXMucHVibGljU0lEOworICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LmFkZE1vZGVyYXRvci5kb0NhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA9PSAyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvL0FzayB0aGUgTW9kZXJhdG9yCisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdERhdGUgPSBuZXcgRGF0ZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LnNlbmRNZXNzYWdlV2l0aENsaWVudC5zZW5kTWVzc2FnZSgiYXBwbHlGb3JNb2RlcmF0aW9uIix0RGF0ZS5nZXRUaW1lKCkpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID09IDMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBsei5sYWJlbGVycm9yUG9wdXAoY2FudmFzLHtlcnJvcmxhYmVsaWQ6Njk2fSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBdXT4KKyAgICAgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPC9uZXRSZW1vdGVDYWxsSGliPgorICAgICAgICAKKyAgICAgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0ic2V0Q2FuRHJhdyIgZnVuY25hbWU9IndoaXRlYm9hcmRzZXJ2aWNlLnNldENhbkRyYXciCisgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9Ij4KKyAgICAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0icHVibGljU0lEIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImNhbkRyYXciIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPgorICAgICAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBjYW52YXMuc2Vzc2lvbklkOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wdWJsaWNTSUQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LmNhbkRyYXc7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2V0Q2FuRHJhdyA6ICIsdmFsdWUpOworICAgICAgICAgICAgICAgIF1dPgorICAgICAgICAgICAgPC9oYW5kbGVyPiAgIAorICAgICAgICA8L25ldFJlbW90ZUNhbGxIaWI+CisgICAgICAgIAorICAgICAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJzZXRDYW5TaGFyZSIgZnVuY25hbWU9IndoaXRlYm9hcmRzZXJ2aWNlLnNldENhblNoYXJlIgorICAgICAgICAgICAgICAgICAgICAgICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSI+CisgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9InB1YmxpY1NJRCIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJjYW5TaGFyZSIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnB1YmxpY1NJRDs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQuY2FuU2hhcmU7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2V0Q2FuU2hhcmUgOiAiLHZhbHVlKTsKKyAgICAgICAgICAgICAgICBdXT4KKyAgICAgICAgICAgIDwvaGFuZGxlcj4gICAKKyAgICAgICAgPC9uZXRSZW1vdGVDYWxsSGliPgorICAgICAgICAKKyAgICAgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0ic2V0Q2FuUmVtb3RlIiBmdW5jbmFtZT0id2hpdGVib2FyZHNlcnZpY2Uuc2V0Q2FuUmVtb3RlIgorICAgICAgICAgICAgICAgICAgICAgICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSI+CisgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9InB1YmxpY1NJRCIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJjYW5SZW1vdGUiIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPgorICAgICAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBjYW52YXMuc2Vzc2lvbklkOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wdWJsaWNTSUQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LmNhblJlbW90ZTs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgICAgIC8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzZXRDYW5SZW1vdGUgOiAiLHZhbHVlKTsKKyAgICAgICAgICAgICAgICBdXT4KKyAgICAgICAgICAgIDwvaGFuZGxlcj4gICAKKyAgICAgICAgPC9uZXRSZW1vdGVDYWxsSGliPgorICAgICAgICAKKyAgICAgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0ic2V0TmV3TW9kZXJhdG9yQnlMaXN0IiBmdW5jbmFtZT0ic2V0TmV3TW9kZXJhdG9yQnlMaXN0Ij4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2V0TmV3TW9kZXJhdG9yQnlMaXN0ICIsdmFsdWUpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgY2FudmFzLmFuYWx5emVNb2RlcmF0aW9uTGlzdCh2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorICAgICAgICAgICAgICAgICAgICBjYW52YXMuY3VycmVudE1vZGVyYXRvckxpc3QgPSB2YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgLy9VcGRhdGUgTW9kZXJhdGlvbiBGbGFnCisgICAgICAgICAgICAgICAgICAgIGNhbnZhcy51cGRhdGVNb2RlcmF0aW9uRmxhZygpOworICAgICAgICAgICAgICAgIF1dPgorICAgICAgICAgICAgPC9oYW5kbGVyPiAgIAorICAgICAgICA8L25ldFJlbW90ZUNhbGxIaWI+IAorICAgICAgICAKKyAgICAgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0ic2VuZE1lc3NhZ2UiIGZ1bmNuYW1lPSJzZW5kTWVzc2FnZSI+CisgICAgICAgICAgICA8bmV0cGFyYW0gbmFtZT0idmFycyI+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGNhbnZhcy5vYmpNZXNzYWdlOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorICAgICAgICAgICAgICAgIC8vRGVidWcud3JpdGUoImdldFZhbHVlIDogIix2YWx1ZSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgXV0+CisgICAgICAgICAgICA8L2hhbmRsZXI+ICAgCisgICAgICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4gCisgICAgICAgIAorICAgICAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJzZW5kTWVzc2FnZUFsbCIgZnVuY25hbWU9InNlbmRNZXNzYWdlQWxsIj4KKyAgICAgICAgICAgIDxuZXRwYXJhbSBuYW1lPSJ2YXJzIj48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gY2FudmFzLm9iak1lc3NhZ2U7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIC8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisgICAgICAgICAgICAgICAgLy9EZWJ1Zy53cml0ZSgiZ2V0VmFsdWUgOiAiLHZhbHVlKTsKKyAgICAgICAgICAgICAgICBdXT4KKyAgICAgICAgICAgIDwvaGFuZGxlcj4gICAKKyAgICAgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAKKyAgICAgICAgCisgICAgICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9InNlbmRWYXJzVG9NZXNzYWdlIiBmdW5jbmFtZT0ic2VuZFZhcnNUb01lc3NhZ2UiPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgICAgIC8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisgICAgICAgICAgICAgICAgICAgIC8vRGVidWcud3JpdGUoInNlbmRWYXJzVG9NZXNzYWdlIDogIix2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZVswXT09J2F1ZGlvQWN0aXZpdHknKXsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vY2FudmFzLmN1cnJlbnRNb2RBcHBseQorICAgICAgICAgICAgICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiYXVkaW9BY3Rpdml0eSBDbGllbnQgIix2YWx1ZVsxXSx2YWx1ZVsyXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMuX3ZpZGVvY29udGFpbmVyLnNldFNwZWFraW5nQnlQb3ModmFsdWVbMl0sdmFsdWVbMV0pOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlWzBdPT0nY2hhdCcpeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm90IFVzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vRGVidWcud2FybigiTm90IFVzZWQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5hZGRDaGF0SGlzdG9yeSh2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWVbMF09PSdhY3RpdmF0ZVdoaXRlYm9hcmQnKXsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vdCBVc2VkCisgICAgICAgICAgICAgICAgICAgICAgICAvL0RlYnVnLndhcm4oIk5vdCBVc2VkIik7CisgICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMuX2RyYXdhcmVhLnBhcmVudC5wYXJlbnQucGFyZW50LmFjdGl2YXRlV2hpdGVib2FyZCh2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWVbMF09PSduZXdXaGl0ZWJvYXJkJyl7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBOb3QgVXNlZAorICAgICAgICAgICAgICAgICAgICAgICAgLy9EZWJ1Zy53YXJuKCJOb3QgVXNlZCIpOworICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzLl9kcmF3YXJlYS5wYXJlbnQucGFyZW50LnBhcmVudC5uZXdXaGl0ZWJvYXJkKHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZVswXT09J3JlbW92ZVdpbmRvdycpeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm90IFVzZWQKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vRGVidWcud2FybigiTm90IFVzZWQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5fZHJhd2FyZWEucGFyZW50LnBhcmVudC5wYXJlbnQucmVtb3ZlV2luZG93KHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmKHZhbHVlWzBdPT0nZmlsZXNsaXN0Jyl7CisgICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMuY3VycmVudEltYWdlc0xpc3RkcmF3LnBhcmVudC5vbnZpc2libGUuc2VuZEV2ZW50KHRydWUpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYodmFsdWVbMF09PSdpbml0QnJvd3NlcicpeworICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzLnN0YXJ0QnJvd3Nlcih2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZih2YWx1ZVswXT09J25ld0Jyb3dzZXJVUkwnKXsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5zdGFydEJyb3dzZXIodmFsdWUpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYodmFsdWVbMF09PSdjbG9zZUJyb3dzZXJVUkwnKXsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5jbG9zZUJyb3dzZXIodmFsdWUpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYodmFsdWVbMF09PSdjbGVhck92ZXJhbGxDaGF0SGlzdG9yeScpeworICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzLl9vdmVyYWxsY2hhdGNvbnRlbnQuY2xlYXIoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBdXT4KKyAgICAgICAgICAgIDwvaGFuZGxlcj4gICAKKyAgICAgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAgIAorICAgICAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJzZW5kVmFyc01vZGVyYXRvckdlbmVyYWwiIGZ1bmNuYW1lPSJzZW5kVmFyc01vZGVyYXRvckdlbmVyYWwiPgorICAgICAgICAgICAgPG5ldHBhcmFtIG5hbWU9InZhcnMiPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBjYW52YXMuVmFyc01vZGVyYXRvckdlbmVyYWw7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIC8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisgICAgICAgICAgICAgICAgLy9EZWJ1Zy53cml0ZSgic2VuZFZhcnNNb2RlcmF0b3JHZW5lcmFsIDogIix2YWx1ZSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgXV0+CisgICAgICAgICAgICA8L2hhbmRsZXI+ICAgCisgICAgICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4gIAorCisJCTxuZXRSZW1vdGVDYWxsSGliIG5hbWU9InNlbmRDaGF0TWVzc2FnZVdpdGhDbGllbnQiCisJCQlmdW5jbmFtZT0iY2hhdHNlcnZpY2Uuc2VuZE1lc3NhZ2VXaXRoQ2xpZW50IiByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSI+CisgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9Im1lc3NhZ2VPYmoiIHZhbHVlPSJudWxsIiAvPgorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQubWVzc2FnZU9iajs8L21ldGhvZD48L25ldHBhcmFtPgorCisgICAgICAgICAgICA8bWV0aG9kIG5hbWU9InNlbmRNZXNzYWdlIiBhcmdzPSJtZXNzYWdlT2JqZWN0Ij4KKyAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VPYmogPSBtZXNzYWdlT2JqZWN0OworICAgICAgICAgICAgICAgIHRoaXMuZG9DYWxsKCk7CisgICAgICAgICAgICA8L21ldGhvZD4KKwkJCTxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiY2hhdHNlcnZpY2Uuc2VuZE1lc3NhZ2VXaXRoQ2xpZW50IGdldFZhbHVlIDogIix2YWx1ZSk7CisgICAgICAgICAgICAgICAgXV0+CisJCQk8L2hhbmRsZXI+CisJCTwvbmV0UmVtb3RlQ2FsbEhpYj4KKwkJCisgICAgICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9InNlbmRNZXNzYWdlV2l0aENsaWVudCIgZnVuY25hbWU9InNlbmRNZXNzYWdlV2l0aENsaWVudCIgCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiA+ICAKKyAgICAgICAgICAgIAorICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJtZXNzYWdlT2JqIiB2YWx1ZT0ibnVsbCIgLz4KKyAgICAgICAgICAgIDxtZXRob2QgbmFtZT0ic2VuZE1lc3NhZ2UiIGFyZ3M9InR5cGVOYW1lLG1lc3NhZ2VPYmplY3QiPgorICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZU9iaiA9IG5ldyBPYmplY3QoKTsKKyAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VPYmpbMF0gPSB0eXBlTmFtZTsKKyAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VPYmpbMV0gPSBtZXNzYWdlT2JqZWN0OworICAgICAgICAgICAgICAgIHRoaXMuZG9DYWxsKCk7CisgICAgICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPG1ldGhvZCBuYW1lPSJzZW5kQWR2TWVzc2FnZSIgYXJncz0idHlwZU5hbWUsbWVzc2FnZU9iamVjdCx0U3RhbXAiPgorICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZU9iaiA9IG5ldyBPYmplY3QoKTsKKyAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VPYmpbMF0gPSB0eXBlTmFtZTsKKyAgICAgICAgICAgICAgICB0aGlzLm1lc3NhZ2VPYmpbMV0gPSBtZXNzYWdlT2JqZWN0OworICAgICAgICAgICAgICAgIHRoaXMubWVzc2FnZU9ialsyXSA9IHRTdGFtcDsKKyAgICAgICAgICAgICAgICB0aGlzLmRvQ2FsbCgpOworICAgICAgICAgICAgPC9tZXRob2Q+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxuZXRwYXJhbSBuYW1lPSJ2YXJzIj48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50Lm1lc3NhZ2VPYmo7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgICAgIC8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisgICAgICAgICAgICAgICAgLy9EZWJ1Zy53cml0ZSgic2VuZE1lc3NhZ2VXaXRoQ2xpZW50IDogIix2YWx1ZSk7CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4KKyAgICAgICAgICAKKyAgICAgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0ic2VuZFZhcnNUb01lc3NhZ2VXaXRoQ2xpZW50IiBmdW5jbmFtZT0ic2VuZFZhcnNUb01lc3NhZ2VXaXRoQ2xpZW50IiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gIAorICAgICAgICAgICAgPG5ldHBhcmFtIG5hbWU9InZhcnMiPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50LmFwcGx5bWVzc2FnZTs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZSB0aGUgcnRtcGNvbm5lY3Rpb24KKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2VuZFZhcnNUb01lc3NhZ2VXaXRoQ2xpZW50IDogIix2YWx1ZSx2YWx1ZS5tZXNzYWdlLHZhbHVlLm1lc3NhZ2VbMF0pOworICAgICAgICAgICAgICAgIGlmICh2YWx1ZVswXT09J2tpY2snIHx8IHZhbHVlLm1lc3NhZ2VbMF09PSdraWNrJyl7CisgICAgICAgICAgICAgICAgICAgIC8vY2FudmFzLmN1cnJlbnRNb2RBcHBseQorICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiISEhISEhIFRISVMgVVNFUiBHT0lORyBUTyBCRSBLSUNLRUQiKTsKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50LnNob3dLaWNrTWVzc2FnZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIHBhcmVudC5kaXNjb25uZWN0KCk7CisgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5zZW5kVmlhTG9jYWxDb25uZWN0aW9uKGNhbnZhcy52aWRfbGNfbmFtZSwgImltbWVkaWF0ZUV4aXRSb29tIiwgW3RydWUsbnVsbF0pOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUubWVzc2FnZVswXT09J2NvcGllZFRleHQnKXsKKyAgICAgICAgICAgICAgICAgICAgLy9jYW52YXMuY3VycmVudE1vZEFwcGx5CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy5pbmZvKCJjb3BpZWRUZXh0IDo6ICIsdmFsdWUubWVzc2FnZVsxXSk7CisgICAgICAgICAgICAgICAgICAgIC8vU3lzdGVtLnNldENsaXBib2FyZCh2YWx1ZS5tZXNzYWdlWzFdKTsKKyAgICAgICAgICAgICAgICAgICAgLy9sei5Ccm93c2VyLnNldENsaXBib2FyZCh2YWx1ZS5tZXNzYWdlWzFdKTsKKyAgICAgICAgICAgICAgICAgICAgLy9MekJyb3dzZXJLZXJuZWwuc2V0Q2xpcGJvYXJkICh2YWx1ZS5tZXNzYWdlWzFdKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC8vaW1wb3J0IGZsYXNoLlN5c3RlbTsKKyAgICAgICAgICAgICAgICAgICAgLy9mbGFzaC5TeXN0ZW0uc2V0Q2xpcGJvYXJkKHZhbHVlLm1lc3NhZ2VbMV0pOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgbmV3IGx6LmNvcGllZFRleHRQb3B1cChjYW52YXMseworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6dmFsdWUubWVzc2FnZVsxXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUubWVzc2FnZVswXT09J2FwcGx5Zm9yTW9kJyl7CisgICAgICAgICAgICAgICAgICAgIC8vY2FudmFzLmN1cnJlbnRNb2RBcHBseQorICAgICAgICAgICAgICAgICAgICBpZiAoY2FudmFzLnN0cmVhbWlkIT12YWx1ZS5jbGllbnQuc3RyZWFtaWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBsei5yZXNwb25zZUZvck1vZGVyYXRpb24oY2FudmFzLm1haW5fY29udGVudC5fY29udGVudC5pbm5lcix7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcm9iamVjdDp2YWx1ZS5jbGllbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50SWQ6dmFsdWUuY2xpZW50LnN0cmVhbWlkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUubWVzc2FnZVswXT09J2FwcGx5TW9kQW5zd2VyJyl7CisgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5jdXJyZW50TW9kQXBwbHkuc2V0VXNlckFuc3dlcih2YWx1ZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS5tZXNzYWdlWzBdPT0ncHJpdmF0ZWNoYXQnKXsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInByaXZhdGVjaGF0Iix2YWx1ZS5tZXNzYWdlLHZhbHVlLmNsaWVudCk7CisgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5fY3VycmVudENoYXRQYW5lbC5wcml2YXRlY2hhdCh2YWx1ZS5tZXNzYWdlLHZhbHVlLmNsaWVudCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS5tZXNzYWdlWzBdPT0nY2hhdCcpeworICAgICAgICAgICAgICAgICAgICBpZiAoY2FudmFzLl9jaGF0Y29udGVudCkgY2FudmFzLl9jaGF0Y29udGVudC5hZGRDaGF0SGlzdG9yeSh2YWx1ZS5tZXNzYWdlLHZhbHVlLmNsaWVudCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS5tZXNzYWdlWzBdPT0nYXZzZXR0aW5ncycpeworICAgICAgICAgICAgICAgICAgICBjYW52YXMuX3ZpZGVvY29udGFpbmVyLnNldEFWU2V0dGluZ3NUb0NsaWVudCh2YWx1ZS5jbGllbnQpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUubWVzc2FnZVswXT09J3doaXRlYm9hcmQnKXsKKyAgICAgICAgICAgICAgICAgICAgLy9pZiAodmFsdWUubWVzc2FnZVsxXT09J3dtbGxvYWRjb21wbGV0ZScpeworICAgICAgICAgICAgICAgICAgICAvLyAgICBjYW52YXMuX2RyYXdhcmVhLnNlbmRDb21wbGV0ZVdtbExvYWRlZFJDbGllbnQodmFsdWUuY2xpZW50KTsKKyAgICAgICAgICAgICAgICAgICAgLy99IGVsc2UgaWYgKHZhbHVlLm1lc3NhZ2VbMV09PSd3bWxzeW5jY29tcGxldGUnKXsKKyAgICAgICAgICAgICAgICAgICAgLy8gICAgY2FudmFzLl9kcmF3YXJlYS5zZW5kQ29tcGxldGVXbWxTeW5jKHZhbHVlLmNsaWVudCk7CisgICAgICAgICAgICAgICAgICAgIC8vfSBlbHNlIAorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLm1lc3NhZ2VbMV09PSdpbWFnZWxvYWRjb21wbGV0ZScpeworICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzLl9kcmF3YXJlYS5zZW5kQ29tcGxldGVJbWFnZUxvYWRlZFJDbGllbnQodmFsdWUuY2xpZW50KTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS5tZXNzYWdlWzFdPT0naW1hZ2VzeW5jY29tcGxldGUnKXsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5fZHJhd2FyZWEuc2VuZENvbXBsZXRlSW1hZ2VTeW5jKHZhbHVlLmNsaWVudCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUubWVzc2FnZVsxXT09J2ltYWdlbG9hZGVycm9yJyl7CisgICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMuX2RyYXdhcmVhLnNlbmRDb21wbGV0ZUltYWdlTG9hZGVkUkNsaWVudCh2YWx1ZS5jbGllbnQpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLm1lc3NhZ2VbMV09PSdpbWFnZWxvYWR0aW1lb3V0Jyl7CisgICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMuX2RyYXdhcmVhLnNlbmRDb21wbGV0ZUltYWdlTG9hZGVkUkNsaWVudCh2YWx1ZS5jbGllbnQpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLm1lc3NhZ2VbMV09PSdzd2Zsb2FkY29tcGxldGUnKXsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5fZHJhd2FyZWEuc2VuZENvbXBsZXRlU1dGTG9hZGVkUkNsaWVudCh2YWx1ZS5jbGllbnQpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLm1lc3NhZ2VbMV09PSdzd2ZzeW5jY29tcGxldGUnKXsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5fZHJhd2FyZWEuc2VuZENvbXBsZXRlU1dGU3luYyh2YWx1ZS5jbGllbnQpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLm1lc3NhZ2VbMV09PSdzd2Zsb2FkZXJyb3InKXsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5fZHJhd2FyZWEuc2VuZENvbXBsZXRlU1dGTG9hZGVkUkNsaWVudCh2YWx1ZS5jbGllbnQpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLm1lc3NhZ2VbMV09PSdzd2Zsb2FkdGltZW91dCcpeworICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzLl9kcmF3YXJlYS5zZW5kQ29tcGxldGVTV0ZMb2FkZWRSQ2xpZW50KHZhbHVlLmNsaWVudCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUubWVzc2FnZVsxXT09J2luaXR1c2VyJyl7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vdGhpcyBtZXNzYWdlIGlzIGRlcHJlY2F0ZWQgYW5kIGNhbiBiZSByZW1vdmVkIQorICAgICAgICAgICAgICAgICAgICAgICAgLy9zd2FnbmVyIDEyLjA2LjIwMDgKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vY2FudmFzLl9kcmF3YXJlYS5zZW5kQ29tcGxldGVJbWFnZVN5bmModmFsdWUuY2xpZW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJpbml0dXNlciBsb2Fkd21sT2JqZWN0VG9TdGFnZTogIix2YWx1ZS5tZXNzYWdlWzJdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY2FudmFzLmlzbW9kZXJhdG9yKSBjYW52YXMuX2RyYXdhcmVhLmxvYWR3bWxPYmplY3RUb1N0YWdlKHZhbHVlLm1lc3NhZ2VbMl0sIiIsIiIsIiIsdHJ1ZSx0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS5tZXNzYWdlWzFdPT0naW5pdGdldFZhcnMnKXsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vY2FudmFzLl9kcmF3YXJlYS5zZW5kQ29tcGxldGVJbWFnZVN5bmModmFsdWUuY2xpZW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vRGVidWcud3JpdGUoImluaXRnZXRWYXJzIHNlbmRWYXJzVG9NZXNzYWdlV2l0aENsaWVudDogIix2YWx1ZS5tZXNzYWdlWzJdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5fZHJhd2FyZWEuc2VuZFdhdGNoT2JqZWN0KHZhbHVlLm1lc3NhZ2VbMV0sdmFsdWUubWVzc2FnZVsyXSxmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUubWVzc2FnZVsxXT09J3N5bmNpbml0TG9hZGVyJyl7CisgICAgICAgICAgICAgICAgICAgICAgICAvL2NhbnZhcy5fZHJhd2FyZWEuc2VuZENvbXBsZXRlSW1hZ2VTeW5jKHZhbHVlLmNsaWVudCk7CisgICAgICAgICAgICAgICAgICAgICAgICAvL0RlYnVnLndyaXRlKCJzeW5jaW5pdExvYWRlciBzZW5kVmFyc1RvTWVzc2FnZVdpdGhDbGllbnQ6ICIsdmFsdWUubWVzc2FnZVsyXSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWUuY2xpZW50LnN0cmVhbWlkIT1jYW52YXMuc3RyZWFtaWQpIGNhbnZhcy5fZHJhd2FyZWEucmVtb3RlU3luY0xvYWRlcigpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLm1lc3NhZ2VbMV1bMF09PSdpc1NuYXBUb0dyaWQnKXsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5fZHJhd2FyZWEuc2V0QXR0cmlidXRlKCdpc1NuYXBUb0dyaWQnLCB2YWx1ZS5tZXNzYWdlWzFdWzFdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vRGVidWcud3JpdGUoInN5bmNpbml0TG9hZGVyIHNlbmRWYXJzVG9NZXNzYWdlV2l0aENsaWVudDogIix2YWx1ZS5tZXNzYWdlWzJdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vaWYgKHZhbHVlLmNsaWVudC5zdHJlYW1pZCE9Y2FudmFzLnN0cmVhbWlkKSBjYW52YXMuX2RyYXdhcmVhLnJlbW90ZVN5bmNMb2FkZXIoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUubWVzc2FnZVswXT09J3VwZGF0ZU11dGVTdGF0dXMnKXsKKyAgICAgICAgICAgICAgICAgICAgY2FudmFzLnNldE11dGVTdGF0dXModmFsdWUubWVzc2FnZVsxXSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS5tZXNzYWdlWzBdPT0ndXBkYXRlRHJhd1N0YXR1cycpeworICAgICAgICAgICAgICAgICAgICBjYW52YXMuc2V0RHJhd0FsbG93U3RhdHVzKHZhbHVlLm1lc3NhZ2VbMV0pOworICAgICAgICAgICAgICAgICAgICAvL05vdGlmeSBhbGwgTGlzdGVuZXJzIGZvciBjaGFuZ2Ugb2YgdGhlIGl0ZW0KKyAgICAgICAgICAgICAgICAgICAgY2FudmFzLnNldEF0dHJpYnV0ZSgiZHJhd0FsbG93U3RhdHVzIix2YWx1ZS5tZXNzYWdlWzFdKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLm1lc3NhZ2VbMF09PSd1cGRhdGVHaXZlQXVkaW9TdGF0dXMnKSB7CisgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5zZXRFeGNsdXNpdmVBdWRpb0FsbG93U3RhdHVzKHZhbHVlLm1lc3NhZ2VbMV0pOworICAgICAgICAgICAgICAgICAgICBjYW52YXMuc2V0QXR0cmlidXRlKCJleGNsdXNpdmVBdWRpb0FsbG93U3RhdHVzIix2YWx1ZS5tZXNzYWdlWzFdKTsgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUubWVzc2FnZVswXT09J2FwcGx5Rm9yTW9kZXJhdGlvbicpeworICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiU29tZWJvZHkgd2FudHMgdGhlIE1vZGVyYXRpb24gIix2YWx1ZS5jbGllbnQpOworICAgICAgICAgICAgICAgICAgICBjYW52YXMuY3VycmVudEFjdGl2aXR5TGlzdC5hZGRNb2RlcmF0aW9uUmVxdWVzdCh2YWx1ZS5jbGllbnQsdmFsdWUubWVzc2FnZVsxXSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS5tZXNzYWdlWzBdPT0nYXBwbHlGb3JTY3JlZW4nKXsKKyAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiU29tZWJvZHkgd2FudHMgdG8gc2hhcmUvcmVjb3JkIFNjcmVlbiAiLHZhbHVlLmNsaWVudCk7CisgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5jdXJyZW50QWN0aXZpdHlMaXN0LmFkZFNjcmVlblJlcXVlc3QodmFsdWUuY2xpZW50LHZhbHVlLm1lc3NhZ2VbMV0pOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUubWVzc2FnZVswXT09J2FwcGx5Rm9yUmVtb3RlJyl7CisgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJTb21lYm9keSB3YW50cyB0byByZW1vdGUgY29udHJvbCBzY3JlZW4gIix2YWx1ZS5jbGllbnQpOworICAgICAgICAgICAgICAgICAgICBjYW52YXMuY3VycmVudEFjdGl2aXR5TGlzdC5hZGRSZW1vdGVSZXF1ZXN0KHZhbHVlLmNsaWVudCx2YWx1ZS5tZXNzYWdlWzFdKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLm1lc3NhZ2VbMF09PSdhcHBseUZvcldoaXRlYm9hcmQnKXsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIlNvbWVib2R5IHdhbnRzIHRvIGRyYXcgb24gV2hpdGVib2FyZCAiLHZhbHVlLmNsaWVudCk7CisgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5jdXJyZW50QWN0aXZpdHlMaXN0LmFkZFdoaXRlYm9hcmRSZXF1ZXN0KHZhbHVlLmNsaWVudCx2YWx1ZS5tZXNzYWdlWzFdKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLm1lc3NhZ2VbMF09PSdhcHBseUZvckEnKXsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIlNvbWVib2R5IHdhbnRzIHRvIHNoYXJlIEEgIix2YWx1ZS5jbGllbnQpOworICAgICAgICAgICAgICAgICAgICBjYW52YXMuY3VycmVudEFjdGl2aXR5TGlzdC5hZGRBdWRpb1JlcXVlc3QodmFsdWUuY2xpZW50LHZhbHVlLm1lc3NhZ2VbMV0pOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUubWVzc2FnZVswXT09J2FwcGx5Rm9yQVYnKXsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIlNvbWVib2R5IHdhbnRzIHRvIHNoYXJlIEFWICIsdmFsdWUuY2xpZW50KTsKKyAgICAgICAgICAgICAgICAgICAgY2FudmFzLmN1cnJlbnRBY3Rpdml0eUxpc3QuYWRkQXVkaW9BbmRWaWRlb1JlcXVlc3QodmFsdWUuY2xpZW50LHZhbHVlLm1lc3NhZ2VbMV0pOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUubWVzc2FnZVswXT09J2hpZGVBY3Rpdml0eU9iaicpeworICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiU29tZWJvZHkgd2FudHMgdG8gaGlkZUFjdGl2aXR5T2JqICIsdmFsdWUuY2xpZW50KTsKKyAgICAgICAgICAgICAgICAgICAgY2FudmFzLmN1cnJlbnRBY3Rpdml0eUxpc3QuaGlkZUFjdGl2aXR5T2JqKHZhbHVlKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLm1lc3NhZ2VbMF09PSdhcHBseUZvck11dGVPbicpeworICAgICAgICAgICAgICAgICAgICBjYW52YXMuY3VycmVudEFjdGl2aXR5TGlzdC5hcHBseUZvck11dGVPbih2YWx1ZS5jbGllbnQsdmFsdWUubWVzc2FnZVsxXSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS5tZXNzYWdlWzBdPT0nYXBwbHlGb3JNdXRlT2ZmJyl7CisgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5jdXJyZW50QWN0aXZpdHlMaXN0LmFwcGx5Rm9yTXV0ZU9mZih2YWx1ZS5jbGllbnQsdmFsdWUubWVzc2FnZVsxXSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS5tZXNzYWdlWzBdPT0nYXBwbHlGb3JHaXZlRXhjbHVzaXZlQXVkaW9PbicpeworICAgICAgICAgICAgICAgICAgICBjYW52YXMuY3VycmVudEFjdGl2aXR5TGlzdC5hcHBseUZvckdpdmVFeGNsdXNpdmVBdWRpb09uKHZhbHVlLmNsaWVudCx2YWx1ZS5tZXNzYWdlWzFdKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLm1lc3NhZ2VbMF0gPT0gJ3BlcnNvbmFsJykgeworICAgICAgICAgICAgICAgIAl2YXIgcFNJRCA9IHZhbHVlLmNsaWVudC5wdWJsaWNTSUQ7CisgICAgICAgICAgICAgICAgICAgIHZhciB2byA9IGNhbnZhcy5fdmlkZW9jb250YWluZXIuX3BhcnRpY2lwYW50cy5nZXRVc2VyTGlzdEl0ZW1CeVB1YmxpY1NJRChwU0lEKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZvICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgCXZvLnNldEF0dHJpYnV0ZSgnbGFzdG5hbWUnLCB2YWx1ZS5tZXNzYWdlWzJdKTsKKyAgICAgICAgICAgICAgICAgICAgCXZvLnJlZk9iai5sYXN0bmFtZSA9IHZhbHVlLm1lc3NhZ2VbMl07CisgICAgICAgICAgICAgICAgICAgIH0KKwkJCQkJY2FudmFzLnNlbmRWaWFMb2NhbENvbm5lY3Rpb24oY2FudmFzLnZpZF9sY19uYW1lLCAidXBkYXRlRmlyc3RMYXN0TmFtZSIsIFtwU0lELCB2YWx1ZS5tZXNzYWdlWzFdLCB2YWx1ZS5tZXNzYWdlWzJdXSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud2Fybigic2VuZFZhcnNUb01lc3NhZ2VXaXRoQ2xpZW50IHVua293biBtZXNzYWdlICIsdmFsdWUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBdXT4KKyAgICAgICAgICAgIDwvaGFuZGxlcj4gICAKKyAgICAgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAgICAgCisgICAgCisgICAgICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9Im5ld01lc3NhZ2VCeVJvb21BbmREb21haW4iIGZ1bmNuYW1lPSJuZXdNZXNzYWdlQnlSb29tQW5kRG9tYWluIj4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgICAgIC8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisgICAgICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgibmV3TWVzc2FnZUJ5Um9vbUFuZERvbWFpbjogIix2YWx1ZSk7ICAgIAorICAgICAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVbMF09PSdjbG9zZXByaXZhdGVjaGF0Jyl7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiY2xvc2Vwcml2YXRlY2hhdCIsdmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzLl9jdXJyZW50Q2hhdFBhbmVsLmNsb3NlcHJpdmF0ZWNoYXQodmFsdWUpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlWzBdPT0nbmV3cHJpdmF0ZWNoYXQnKXsKKwkgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJuZXdwcml2YXRlY2hhdCIsdmFsdWUpOworCSAgICAgICAgICAgICAgICAgICAgY2FudmFzLl9jdXJyZW50Q2hhdFBhbmVsLm5ld3ByaXZhdGVjaGF0KHZhbHVlKTsKKwkgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS5tZXNzYWdlPT0nZGVza3RvcCcpeworICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzLl9kcmF3YXJlYS5pbmNvbWluZ1NjcmVlblNoYXJpbmcodmFsdWUpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlLm1lc3NhZ2U9PSdsaWJyYXJ5Jyl7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5hY3Rpb24gPT0gJ2ltcG9ydCcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMuY3VycmVudFVwbG9hZFdpbmRvdy5teUZpbGVVcGxvYWQub25Db21wbGV0ZUJ5UmVtb3RlKHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBlcnJvciA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZWcgaW4gdmFsdWUuZXJyb3IpeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZS5lcnJvcltlZ10uZXhpdFZhbHVlIT0wKXsKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImVnICIsZWcsIiB2YWx1ZSAiLHZhbHVlLmVycm9yW2VnXSk7CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJlZyAiLGVnLCIgdmFsdWUgIix2YWx1ZS5lcnJvcltlZ10uZXhpdFZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5jdXJyZW50VXBsb2FkV2luZG93Lm15RmlsZVVwbG9hZC5vbkNvbXBsZXRlQnlSZW1vdGUodmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlLmhhc0Vycm9yKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IGx6LmNvbnZlcnRlclBvcHVwKGNhbnZhcy5tYWluX2NvbnRlbnQuX2NvbnRlbnQuaW5uZXIse2Vycm9yOnZhbHVlLmVycm9yfSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUubWVzc2FnZT09J3N0YXJ0U3RyZWFtaW5nJyl7CisgICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMuX2RyYXdhcmVhLnN0YXJ0U3RyZWFtaW5nKHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS5tZXNzYWdlPT0nc3RvcFN0cmVhbWluZycpeworICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzLl9kcmF3YXJlYS5zdG9wU3RyZWFtaW5nKHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS5tZXNzYWdlPT0ncm9vbUNsb3NlZCcpeworICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzLnJvb21DbG9zZWQoKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZS5tZXNzYWdlPT0naW52aXRlVG9Sb29tJyl7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiSW5jb21pbmcgUm9vbSBJbnZpdGF0aW9uICIsdmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgbmV3IGx6LmNoYXRQYXJ0aWNpcGFudHNJbnZpdGVOb3RpZmljYXRpb24oY2FudmFzLHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpY1NJRDp2YWx1ZS5wdWJsaWNTSUQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VybWVzc2FnZTp2YWx1ZS51c2VybWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb21JZDp2YWx1ZS5yb29tSWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUubWVzc2FnZT09J2ludml0ZVRvUm9vbUFuc3dlcicpeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIkluY29taW5nIFJvb20gaW52aXRlVG9Sb29tQW5zd2VyICIsdmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgbmV3IGx6LmVycm9yUG9wdXAoY2FudmFzLHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yOnZhbHVlLnVzZXJtZXNzYWdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud2FybigiVW5rbm93biBFdmVudCAtbmV3TWVzc2FnZUJ5Um9vbUFuZERvbWFpbi0gIix2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIF1dPiAgICAKKyAgICAgICAgICAgIDwvaGFuZGxlcj4gIAorICAgICAgICA8L25ldFJlbW90ZUNhbGxIaWI+ICAgICAgCisgICAgICAgICAgICAgICAKKyAgICAgICAgCisgICAgICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9Im5ld1BvbGwiIGZ1bmNuYW1lPSJuZXdQb2xsIj4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIC8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYnkgdGhlIHJ0bXBjb25uZWN0aW9uCisgICAgICAgICAgICAgICAgLy9EZWJ1Zy53cml0ZSgibmV3UG9sbCA6ICIsdmFsdWUpOworICAgICAgICAgICAgICAgIGlmKGNhbnZhcy51c2VyX2lkIT12YWx1ZS5jcmVhdGVkQnkudXNlcl9pZCkKKyAgICAgICAgICAgICAgICAgICAgbmV3IGx6LmFuc3dlclBvbGwoCisgICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMubWFpbl9jb250ZW50Ll9jb250ZW50LmlubmVyCisgICAgICAgICAgICAgICAgICAgICAgICAsIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkQnk6IHZhbHVlLmNyZWF0ZWRCeS5sb2dpbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgcG9sbERhdGU6IHZhbHVlLmNyZWF0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIHBvbGxRdWVzdGlvbjogdmFsdWUucG9sbFF1ZXN0aW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBwb2xsVHlwZUlkOiB2YWx1ZS5wb2xsVHlwZS5wb2xsVHlwZXNJZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgcm9vbVBvbGxBbnN3ZXJMaXN0OiB2YWx1ZS5yb29tUG9sbEFuc3dlckxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIHJvb21Qb2xsSWQ6IHZhbHVlLnJvb21Qb2xsSWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIHJvb21TY29wZU5hbWU6IHZhbHVlLnJvb21TY29wZU5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgKTsKKyAgICAgICAgICAgICAgICBdXT4KKyAgICAgICAgICAgIDwvaGFuZGxlcj4gICAKKyAgICAgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJzZW5kVmFyc1RvTW9kZXJhdG9yR2VuZXJhbCIgZnVuY25hbWU9InNlbmRWYXJzVG9Nb2RlcmF0b3JHZW5lcmFsIj4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIC8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisgICAgICAgICAgICAgICAgLy9EZWJ1Zy53cml0ZSgic2VuZFZhcnNUb1doaXRlYm9hcmQgOiAiLHZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWVbMF09PSdzaGFyZXdoaXRlaW5pdCcpeworICAgICAgICAgICAgICAgICAgICBpZiAoIWNhbnZhcy5odG1sZnJhbWVpc2xvYWRlZCl7ICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMuaWZybS5jcmVhdGVJRnJhbWUoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5zZXRBdHRyaWJ1dGUoJ2h0bWxmcmFtZWlzbG9hZGVkJyx0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWVbMF09PSdzaGFyZXdoaXRlc2lkZScpeworICAgICAgICAgICAgICAgICAgICBpZiAoY2FudmFzLmh0bWxmcmFtZWlzbG9hZGVkKXsgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIF9odG1sc2lkZS5zZXRBdHRyaWJ1dGUoJ3RleHQnLHZhbHVlWzJdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5pZnJtLnNldEF0dHJpYnV0ZSgnaXNyYycsJ2h0dHA6Ly8nK3ZhbHVlWzJdKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBdXT4KKyAgICAgICAgICAgIDwvaGFuZGxlcj4gICAKKyAgICAgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAgICAgICAKKyAgICAgICAgCisgICA8IS0tIHJlY29yZENvbnRlbnRpbmdzIE5vdGlmaWNhdGlvbnMgLS0+CisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0ic3RvcGVkUmVjb3JkaW5nIiBmdW5jbmFtZT0ic3RvcGVkUmVjb3JkaW5nIiA+ICAgICAgCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInN0b3BlZFJlY29yZGluZzogIix2YWx1ZSk7CisgICAgICAgICAgICBjYW52YXMuX215bW9kLnJlY29yZGluZ1VzZXIgPSBudWxsOworICAgICAgICAgICAgY2FudmFzLl9teW1vZC5zZXRNZXNzYWdlKCk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICA8L25ldFJlbW90ZUNhbGxIaWI+CisgICAgCisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0ic3RhcnRlZFJlY29yZGluZyIgZnVuY25hbWU9InN0YXJ0ZWRSZWNvcmRpbmciID4gICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic3RhcnRlZFJlY29yZGluZzogIix2YWx1ZSk7CisgICAgICAgICAgICBjYW52YXMuX215bW9kLnJlY29yZGluZ1VzZXIgPSB2YWx1ZTsKKyAgICAgICAgICAgIGNhbnZhcy5fbXltb2Quc2V0TWVzc2FnZSgpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9uZXRSZW1vdGVDYWxsSGliPgorICAgIAorICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImNoZWNrTHpSZWNvcmRpbmciIGZ1bmNuYW1lPSJmbHZyZWNvcmRlcnNlcnZpY2UuY2hlY2tMelJlY29yZGluZyIgPiAgICAgIAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJjaGVja0x6UmVjb3JkaW5nOiAiLHZhbHVlKTsKKyAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgY2FudmFzLl9teW1vZC5yZWNvcmRpbmdVc2VyID0gdmFsdWU7CisgICAgICAgICAgICAgICAgY2FudmFzLl9teW1vZC5zZXRNZXNzYWdlKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwYXJlbnQuY2hlY2tTY3JlZW5TaGFyaW5nLmRvQ2FsbCgpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9uZXRSZW1vdGVDYWxsSGliPgorICAgIAorICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9InN0YXJ0ZWRQdWJsaXNoaW5nIiBmdW5jbmFtZT0ic3RhcnRlZFB1Ymxpc2hpbmciID4gICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic3RhcnRlZFB1Ymxpc2hpbmc6ICIsIHZhbHVlKTsKKyAgICAgICAgICAgIGNhbnZhcy5fbXltb2QucHVibGlzaGluZ09iaiA9IHt1c2VyOiB2YWx1ZVswXSwgdXJsOiB2YWx1ZVsxXX07CisgICAgICAgICAgICBjYW52YXMuX215bW9kLnNldE1lc3NhZ2UoKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4KKyAgICAKKyAgICA8IS0tIG5vdGlmaWNhdGlvbnMgZm9yIE92ZXJhbGwtQ2hhdCAtLT4KKyAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJzZW5kVmFyc1RvT3ZlcmFsbENoYXQiIGZ1bmNuYW1lPSJzZW5kVmFyc1RvT3ZlcmFsbENoYXQiID4gICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2VuZFZhcnNUb092ZXJhbGxDaGF0OiAiLHZhbHVlKTsKKyAgICAgICAgICAgIGlmIChjYW52YXMuX292ZXJhbGxjaGF0Y29udGVudCE9bnVsbCl7CisgICAgICAgICAgICAgICAgY2FudmFzLl9vdmVyYWxsY2hhdGNvbnRlbnQuYWRkQ2hhdEhpc3RvcnkodmFsdWUubWVzc2FnZSx2YWx1ZS5jbGllbnQpOworICAgICAgICAgICAgfQorICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9uZXRSZW1vdGVDYWxsSGliPgorCisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0icm9vbUNvbm5lY3QiIGZ1bmNuYW1lPSJyb29tQ29ubmVjdCIgPiAgICAgIAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJyb29tQ29ubmVjdDogIix2YWx1ZSk7CisgICAgICAgICAgICBpZiAoY2FudmFzLl9vdmVyYWxsY2hhdGNvbnRlbnQgIT0gbnVsbCl7CisgICAgICAgICAgICAgICAgY2FudmFzLl9vdmVyYWxsY2hhdGNvbnRlbnQucGFyZW50LnBhcmVudC5wYXJlbnQuX2NoYXRwYXJ0aWNpcGFudHMuYWRkSXRlbSh2YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICA8L25ldFJlbW90ZUNhbGxIaWI+CisgICAgCisgICAgCisgICAgPCEtLSBXaGl0ZWJvYXJkIHN5bmMgRXZlbnRzIC0tPgorICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9InNlbmRTeW5jRmxhZyIgZnVuY25hbWU9InNlbmRTeW5jRmxhZyI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZSB0aGUgcnRtcGNvbm5lY3Rpb24KKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2VuZFN5bmNGbGFnOiAiLHZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAoY2FudmFzLnN5bmNXaW5kb3cgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBjYW52YXMuc3luY1dpbmRvdyA9IG5ldyBsei5zeW5jV2luKGNhbnZhcy5tYWluX2NvbnRlbnQuX2NvbnRlbnQuaW5uZXIseworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsaWQ6NTU4LGxhYmVsaWRlcnJvcjo1NTl9KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPiAgIAorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4gICAgIAorICAgIAorICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9InNlbmRTeW5jQ29tcGxldGVGbGFnIiBmdW5jbmFtZT0ic2VuZFN5bmNDb21wbGV0ZUZsYWciPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIC8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInNlbmRTeW5jQ29tcGxldGVGbGFnOiAiLHZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAoY2FudmFzLnN5bmNXaW5kb3cgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBjYW52YXMuc3luY1dpbmRvdy5jbG9zZSgpOworICAgICAgICAgICAgICAgICAgICBjYW52YXMuc3luY1dpbmRvdyA9IG51bGw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4gICAKKyAgICA8L25ldFJlbW90ZUNhbGxIaWI+ICAKKyAgICAKKyAgICA8IS0tIFdoaXRlYm9hcmQgT2JqZWN0IFN5bmMgUHJvY2VzcyAtLT4KKyAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJzZW5kT2JqZWN0U3luY0ZsYWciIGZ1bmNuYW1lPSJzZW5kT2JqZWN0U3luY0ZsYWciPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIC8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInNlbmRPYmplY3RTeW5jRmxhZzogIix2YWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKGNhbnZhcy5zeW5jSW1hZ2VXaW5kb3cgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBjYW52YXMuc3luY0ltYWdlV2luZG93ID0gbmV3IGx6LnN5bmNXaW4oY2FudmFzLm1haW5fY29udGVudC5fY29udGVudC5pbm5lcix7bGFiZWxpZGVycm9yOjU5MX0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+ICAgCisgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAgICAgCisgICAgCisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0ic2VuZE9iamVjdFN5bmNDb21wbGV0ZUZsYWciIGZ1bmNuYW1lPSJzZW5kT2JqZWN0U3luY0NvbXBsZXRlRmxhZyI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZSB0aGUgcnRtcGNvbm5lY3Rpb24KKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2VuZE9iamVjdFN5bmNDb21wbGV0ZUZsYWc6ICIsdmFsdWUpOworICAgICAgICAgICAgICAgIGlmIChjYW52YXMuc3luY0ltYWdlV2luZG93ICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgY2FudmFzLnN5bmNJbWFnZVdpbmRvdy5jbG9zZSgpOworICAgICAgICAgICAgICAgICAgICBjYW52YXMuc3luY0ltYWdlV2luZG93ID0gbnVsbDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPiAgIAorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4gIAorICAgIAorICAgIAorICAgIDwhLS0gUmVjb3JkaW5nIG9mIE1lZXRpbmdzIC0tPgorICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImNoZWNrRm9yUmVjb3JkaW5nIiBmdW5jbmFtZT0iZmx2cmVjb3JkZXJzZXJ2aWNlLmNoZWNrRm9yUmVjb3JkaW5nIj4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJjaGVja0ZvclJlY29yZGluZzogIix2YWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgbmV3IGx6LnJlY29yZGluZ1N0YXJ0V2luKGNhbnZhcy5tYWluX2NvbnRlbnQuX2NvbnRlbnQuaW5uZXIpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG5ldyBsei5lcnJvclBvcHVwVXNlckluZm8oY2FudmFzLHtlcnJvcjpjYW52YXMuZ2V0TGFiZWxOYW1lKDQxOCksdXNlcjp2YWx1ZX0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+ICAgCisgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAgCisgICAgCisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iaW50ZXJ2aWV3U3RhdHVzIiBmdW5jbmFtZT0iaW50ZXJ2aWV3U3RhdHVzIj4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJpbnRlcnZpZXdTdGF0dXM6ICIsdmFsdWUpOworICAgICAgICAgICAgICAgIGNhbnZhcy5fZHJhd2FyZWEucmVsb2FkU3RhdHVzKCk7CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPiAgIAorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4gIAorICAgIAorICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImNsb3NlUm9vbSIgZnVuY25hbWU9InhtbGNybS5jbG9zZVJvb20iPgorICAgICAgICA8YXR0cmlidXRlIG5hbWU9InJvb21faWQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iaXNDbG9zZWQiIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPgorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucm9vbV9pZDs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5pc0Nsb3NlZDs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIC8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImNsb3NlUm9vbTogIix2YWx1ZSk7CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPiAgIAorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4gCisgICAgCisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iY2xlYXJDaGF0Q29udGVudCIgZnVuY25hbWU9ImNsZWFyQ2hhdENvbnRlbnQiPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIC8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisgICAgICAgICAgICAgICAgY2FudmFzLl9jaGF0Y29udGVudC5yZWxvYWQoKTsKKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+ICAgCisgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAKKyAgICAKKyAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJzZXRDYW5HaXZlQXVkaW8iIGZ1bmNuYW1lPSJ3aGl0ZWJvYXJkc2VydmljZS5zZXRDYW5HaXZlQXVkaW8iCisgICAgICAgICAgICAgICAgICAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iPgorICAgICAgICA8YXR0cmlidXRlIG5hbWU9InB1YmxpY1NJRCIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImNhbkdpdmVBdWRpbyIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgICAgIDxtZXRob2QgbmFtZT0ic2VuZFZhbHVlIiBhcmdzPSJwdWJsaWNTSUQsZ2l2ZUF1ZGlvIj4KKyAgICAgICAgCXRoaXMucHVibGljU0lEID0gcHVibGljU0lEOworICAgICAgICAJdGhpcy5jYW5HaXZlQXVkaW8gPSBnaXZlQXVkaW87CisgICAgICAgIAl0aGlzLmRvQ2FsbCgpOworICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBjYW52YXMuc2Vzc2lvbklkOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnB1YmxpY1NJRDs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5jYW5HaXZlQXVkaW87PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzZXRDYW5HaXZlQXVkaW8gOiAiLHZhbHVlKTsKKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9uZXRSZW1vdGVDYWxsSGliPgorICAgIAorICAgIAorPC9jbGFzcz4KKworPGhpYlJ0bXBDb25uZWN0aW9uIG5hbWU9InRoaXNoaWIiIGlkPSJoaWIiIC8+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvaGliZXJuYXRlL2xpYnJhcnkubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9oaWJlcm5hdGUvbGlicmFyeS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNiZmJmMQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvaGliZXJuYXRlL2xpYnJhcnkubHp4CkBAIC0wLDAgKzEsMjYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKwk8aW5jbHVkZSBocmVmPSJuZXRSZW1vdGVDYWxsSGliLmx6eCIgLz4KKwk8aW5jbHVkZSBocmVmPSJoaWJSdG1wQ29ubmVjdGlvbi5sengiIC8+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvaGliZXJuYXRlL25ldFJlbW90ZUNhbGxIaWIubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9oaWJlcm5hdGUvbmV0UmVtb3RlQ2FsbEhpYi5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2QxM2RhMQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvaGliZXJuYXRlL25ldFJlbW90ZUNhbGxIaWIubHp4CkBAIC0wLDAgKzEsODcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzxjbGFzcyBuYW1lPSJuZXRSZW1vdGVDYWxsSGliIiBleHRlbmRzPSJuZXRyZW1vdGVjYWxsIj4KKworCTwhLS0tIHRoaXMgc2hvdWxkIGJlIHRoZSBjb250ZW50U2F2ZVdpbmRvdyAtLT4KKwk8YXR0cmlidXRlIG5hbWU9InJldHVybk9iaiIgdmFsdWU9Im51bGwiIC8+CisJIAorCTwhLS0tIGlmIHRydWUgdGhpcyBvYmplY3Qgd2lsbCByZWdpc3RlciBhdCB0aGUgdXBkYXRlLW9ic2VydmVyIC0tPgorCTxhdHRyaWJ1dGUgbmFtZT0icmVnaXN0ZXJPYmplY3QiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKwkKKwk8IS0tLSBzaG93IEVycm9yIE1lc3NhZ2VzIHdpdGggbm9ybWFsIEJveCAtLT4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImFjdGl2ZUVycm9ySGFuZGxlciIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgkKKyAgICAKKwk8IS0tLSBzaG93IEVycm9yIE1lc3NhZ2VzIHdpdGggbm9ybWFsIEJveCAtLT4KKyAgICA8YXR0cmlidXRlIG5hbWU9InNob3dMb2FkaW5nIiB2YWx1ZT0idHJ1ZSIgdHlwZT0iYm9vbGVhbiIgLz4gICAgCisJCisJPCEtLS0gc2hvdyBFcnJvciBNZXNzYWdlcyB3aXRoIENhbGxiYWNrIEJveCAtLT4KKwk8YXR0cmlidXRlIG5hbWU9ImlzQ2FsbEJhY2tIYW5kbGVyIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CQorCQorCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisJCWlmICh0aGlzLnJlZ2lzdGVyT2JqZWN0KSB0aGlzLnBhcmVudC5hZGRWaWV3VG9PYnNlcnZlcih0aGlzKTsKKwk8L2hhbmRsZXI+CQorCTxtZXRob2QgbmFtZT0iZG9DYWxsIj4KKyAgICAgICAgaWYgKHRoaXMuc2hvd0xvYWRpbmcpIGNhbnZhcy5fbG9hZGluZ0FsbC5zaG93TG9hZGluZygpOworCQkvL2lmKCRkZWJ1ZykgRGVidWcud3JpdGUoIm5ldFJlbW90ZUNhbGxIaWIvZG9DYWxsOiBbICIgLCB0aGlzLmZ1bmNuYW1lICwgIiBdIix0aGlzLnBhcmVudCk7CisJCXRoaXMuY2FsbFJQQygpOworCTwvbWV0aG9kPgorCQorCTxldmVudCBuYW1lPSJzZW5kQ2FsbEJhY2siIC8+CisJCisJPCEtLS0KKyAgICAgICAgQGtleXdvcmRzIHByaXZhdGUKKwkgLS0+CisJPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisJCTwhW0NEQVRBWworCQkJLy9EZWJ1Zy53cml0ZSgib25kYXRhOiAiLHRoaXMuZnVuY25hbWUsdmFsdWUpOworCQkJCisJCQlpZiAodGhpcy5zaG93TG9hZGluZykgY2FudmFzLl9sb2FkaW5nQWxsLmhpZGVMb2FkaW5nKCk7CisJCQkKKwkJCS8vQW5vdGhlciBFcnJvciBIYW5kbGVyIGZvciB0aGUgRm9ybS1Db21wb25lbnRzCisJCQlpZiAodGhpcy5yZXR1cm5PYmohPW51bGwgJiYgTnVtYmVyKHZhbHVlKT4wKSB7CisJCQkJLy9EZWJ1Zy53cml0ZSgidGhpcy5yZXR1cm5PYmoucHJvY2Vzc05leHQiKTsKKwkJCQl0aGlzLnJldHVybk9iai5wcm9jZXNzTmV4dCgpOworCQkJfSBlbHNlIGlmICh0aGlzLnJldHVybk9iaiE9bnVsbCAmJiBOdW1iZXIodmFsdWUpPDApIHsKKwkJCQl0aGlzLnJldHVybk9iai5lcnJvckJ5Q29kZShOdW1iZXIodmFsdWUpKTsKKwkJCX0gZWxzZSBpZiAodGhpcy5yZXR1cm5PYmohPW51bGwgJiYgdmFsdWU9PW51bGwpIHsKKwkJCQl0aGlzLnJldHVybk9iai5lcnJvckJ5Q29kZSgtMSk7CisJCQl9CisJCQkKKyAgICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZUVycm9ySGFuZGxlcikgeworICAgICAgICAgICAgICAgIGlmIChOdW1iZXIodmFsdWUpPDApeworICAgICAgICAgICAgICAgICAgICBEZWJ1Zy53YXJuKCJSZWNlaXZlZCBFcnJvciBJRDogIix2YWx1ZSk7CQkJCQkKKwkJCQkJaWYgKHRoaXMuaXNDYWxsQmFja0hhbmRsZXIpIAorCQkJCQl7CisJCQkJCQl2YXIgZGxnID0gbmV3IGx6LmNhbGxiYWNrUnBjRXJyb3JEaWFsb2coY2FudmFzLHtjYWxsQmFja09iamVjdDp0aGlzLGVycm9yaWQ6TnVtYmVyKHZhbHVlKX0pOwkJCQkJCQorCQkJCQkJbHouRm9jdXMuc2V0Rm9jdXMoZGxnKTsKKwkJCQkJfSBlbHNlIHsKKwkJCQkJCXZhciBkbGcgPSBuZXcgbHoucnBjRXJyb3JEaWFsb2coY2FudmFzLHtlcnJvcmlkOk51bWJlcih2YWx1ZSl9KTsKKwkJCQkJCWx6LkZvY3VzLnNldEZvY3VzKGRsZyk7CisJCQkJCX0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CQkJCisJCV1dPgorCTwvaGFuZGxlcj4JCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2xpYnJhcnkubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9saWJyYXJ5Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NDNmMzA2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9saWJyYXJ5Lmx6eApAQCAtMCwwICsxLDQ1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCisgICAgPGluY2x1ZGUgaHJlZj0icmVtb3RlLyIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJjb21wb25lbnRzLyIgLz4gCisgICAgPGluY2x1ZGUgaHJlZj0iaGliZXJuYXRlLyIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJjb250ZW50dmlld3MvIiAvPgorICAgIDxpbmNsdWRlIGhyZWY9Im5hdmkvIiAvPgorCisgICAgPGluY2x1ZGUgaHJlZj0iYXV0aC8iIC8+CisKKwk8IS0tIGZvciBtYWluLmx6eCAtLT4KKwk8aW5jbHVkZSBocmVmPSJleHRlcm5hbEphdmFTY3JpcHQubHp4IiAvPgorICAgIDxpbmNsdWRlIGhyZWY9ImZ1bmN0aW9ucy5sengiIC8+CisJPGluY2x1ZGUgaHJlZj0ibWFpbkF0dHJpYnV0ZXMubHp4IiAvPiAKKwk8aW5jbHVkZSBocmVmPSJtYWluRGF0YXNldHMubHp4IiAvPiAKKwk8aW5jbHVkZSBocmVmPSJtYWluTWV0aG9kcy5sengiIC8+IAorCTxpbmNsdWRlIGhyZWY9ImxvZ291dENvbmZpcm0ubHp4IiAvPgorCQorCTwhLS0gCisJICAgRGVmaW5lcyB0aGUgQ29yZSBDbGFzc2VzIHRoYXQgZ2V0cyBsb2FkZWQgaW4gdGhlIE1haW4gTmF2aWdhdGlvbgorCSAtLT4KKwk8aW5jbHVkZSBocmVmPSJtb2R1bGVDb25maWd1cmF0aW9uLmx6eCIgLz4KKworCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL2xvZ291dENvbmZpcm0ubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9sb2dvdXRDb25maXJtLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMWMxOGFiCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9sb2dvdXRDb25maXJtLmx6eApAQCAtMCwwICsxLDUwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8Y2xhc3MgbmFtZT0ibG9nb3V0Q29uZmlybSIgZXh0ZW5kcz0ibGFiZWxFeHBsb3JlckJveCIgbGFiZWxpZD0iNjMzIgorICAgIGRvY2tpbmc9InRydWUiIHJlc2l6ZWFibGU9ImZhbHNlIiBjbG9zYWJsZT0iZmFsc2UiIHdpZHRoPSIyNzAiIHg9IiR7IGNhbnZhcy53aWR0aCAvIDIgLSAxNDUgfSIgeT0iJHsgY2FudmFzLmhlaWdodCAvIDIgLSAxMjB9IiBoZWlnaHQ9IjEwMCI+CisKKwk8YXR0cmlidXRlIG5hbWU9Im9iamVjdHNUb0NsZWFuIiB0eXBlPSJleHByZXNzaW9uIi8+CisJCisJPGxhYmVsVGV4dCBmb250c3R5bGU9ImJvbGQiIHk9IjI1IiBsYWJlbGlkPSI2MzQiIHg9IjEwIiB3aWR0aD0iMjcwIiBtdWx0aWxpbmU9InRydWUiIC8+CisJCisJPHNpbXBsZUxhYmVsQnV0dG9uIG5hbWU9Im9rIiB4PSIyMCIgeT0iNzAiIGxhYmVsaWQ9IjU0IiB3aWR0aD0iMTIwIiBoZWlnaHQ9IjIwIj4KKwkJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisJCQlpZiAoIWNsZWFyU3RhZ2VDb250ZW50KCkpCisJCQl7CisJCQkJY2FudmFzLl9tYWluYmdjb250ZW50TmF2aS5uYXZpLmRlc3Ryb3koKTsKKwkJCQljYW52YXMuX21haW5iZ2NvbnRlbnROYXZpLmhlbHAuZGVzdHJveSgpOworCQkJCWNhbnZhcy50aGlzaGliLmxvZ291dFVzZXIuZG9DYWxsKCk7CisJCQl9CisgICAgICAgIAorICAgICAgICAgICAgdGhpcy5wYXJlbnQuY2xvc2UoKTsgICAgICAgICAgICAgICAgICAgCisJCQkKKwkJPC9oYW5kbGVyPgorCTwvc2ltcGxlTGFiZWxCdXR0b24+CisJPHNpbXBsZUxhYmVsQnV0dG9uIG5hbWU9ImNhbmNlbCIgeD0iMTQwIiB5PSI3MCIgbGFiZWxpZD0iNTUiIHdpZHRoPSIxMjAiIGhlaWdodD0iMjAiPgorCQk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKwkJCXRoaXMucGFyZW50LmNsb3NlKCk7CisJCTwvaGFuZGxlcj4KKwk8L3NpbXBsZUxhYmVsQnV0dG9uPgkJCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL21haW5BdHRyaWJ1dGVzLmx6eCBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvbWFpbkF0dHJpYnV0ZXMubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiMmI4ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL21haW5BdHRyaWJ1dGVzLmx6eApAQCAtMCwwICsxLDUxNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAgICAgICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+CisKKzwhLS0gYWxsIGF0dHJpYnV0ZXMgZm9yIG1haW4ubHp4IC0tPgorCis8bGlicmFyeT4KKzwhLS0gCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCit0aGVzZSBwcm9wZXJ0aWVzIHdpbGwgYmUgb3ZlcndyaXR0ZW4gYnkgY29uZmlnLnhtbCAtLT4gIAorCis8YXR0cmlidXRlIG5hbWU9InZpZF9sY19uYW1lIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciLz4KKworPGF0dHJpYnV0ZSBuYW1lPSJsY19TSUQiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIvPgorCis8YXR0cmlidXRlIG5hbWU9ImxjIi8+CisKKzxhdHRyaWJ1dGUgbmFtZT0icnRtcF9sY19uYW1lIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciLz4KKworPGF0dHJpYnV0ZSBuYW1lPSJydG1wX2xjIi8+CisKKzxhdHRyaWJ1dGUgbmFtZT0idmlkZW9Db21wX2xjX25hbWUiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIvPgorCis8YXR0cmlidXRlIG5hbWU9InZpZGVvQ29tcF9sY19jYWxsYmFja19uYW1lIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciLz4KKworPGF0dHJpYnV0ZSBuYW1lPSJ2aWRlb0NvbXBfbGMiLz4KKworPCEtLS0gVVJML0lQIHRvIHVzZSBmb3IgdGhlIFNlcnZlciAxOTIuMTY4LjE3OC4yOAorICAgIGlubm8wMi5maC1wZm9yemhlaW0uZGUgbWFjYm9vayAxOTIuMTY4LjIuMTAzCisgICAgMTkyLjE2OC4yLjEwMiBieGx1Zy5ob21lbGludXgub3JnIDIxMy4yMTkuMTYwLjcyCisgICAgICAgIGlmIHRoaXMgdmFsdWUgaXMgZW1wdHkgaXQgd2lsbCB0cnkgdG8gY29ubmVjdCB0byB0aGUgCisgICAgZG9tYWluLW5hbWUgaXQgaGFzIGJlZW4gbG9hZGluZyBmcm9tCisgICAgLS0+Cis8YXR0cmlidXRlIG5hbWU9InJ0bXBob3N0bG9jYWwiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKworPCEtLSAKKwlVUkwvSVAgdG8gdXNlIGZvciB0aGUgU2VydmVyIGZvciBIVFRQIGFuZCBIVFRQUyB0cmFmZmljLgorICAgIElmIHRoaXMgdmFsdWUgaXMgZW1wdHkgaXQgd2lsbCB1c2UgdGhlIHJ0bXBob3N0bG9jYWwgCisgICAgdmFyaWFibGUgKGFuZCBpbiB0aGF0IHdheSB0cnkgdG8gY29ubmVjdCB0byB0aGUgCisgICAgZG9tYWluLW5hbWUgdGhlIE9wZW5NZWV0aW5ncy1DbGllbnQgaGFzIGJlZW4gbG9hZGluZyBmcm9tKQorIC0tPgorPGF0dHJpYnV0ZSBuYW1lPSJodHRwaG9zdGxvY2FsIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgCis8IS0tLSAgCisgICAgUG9ydCB0byB1c2UgZm9yIHRoZSBTZXJ2ZXIKKyAgICBUbyB0aGlzIHBvcnQgdGhlIGRlZmF1bHQgc2VydmVyIGxvb2t1cCBpcyBkb25lCisgICAgCisgICAgWW91IGNhbiBmaW5kIGFsbCB0aGlzIGNvbmZpZ3VyYWl0b24gaW4geW91ciByZWQ1LUNvbmZpZyBpbjogJFJFRDVfSE9NRS9jb25mL3JlZDUucHJvcGVydGllcworIC0tPgorPGF0dHJpYnV0ZSBuYW1lPSJydG1wcG9ydCIgdmFsdWU9IjE5MzUiIHR5cGU9InN0cmluZyIgLz4KKworPCEtLS0gCisgICAgUG9ydCB0byB1c2UgZm9yIHRoZSBTZXJ2ZXIKKyAgICBUbyB0aGlzIHBvcnQgdGhlIGZhbGxiYWNrIGlzIGRvbmUgb25jZSB0aGUgZGVmYXVsdCBydG1wb3J0IGZhaWxlZAorICAgIHRoaXMgc2hvdWxkIHdvcmthcm91bmQgOTklIG9mIGFsbCBmaXJld2FsbHMKKyAtLT4KKzxhdHRyaWJ1dGUgbmFtZT0icnRtcFR1bm5lbHBvcnQiIHZhbHVlPSI4MDg4IiB0eXBlPSJzdHJpbmciIC8+CisKKzwhLS0tIAorICAgIFBvcnQgdG8gdXNlIGZvciB0aGUgU2VydmVyCisgICAgVGhpcyBwb3J0IGlzIHVzZWQgdG8gY29ubmVjdCB0byB0aGUgSFRUUC1TZXJ2bGV0CisgICAgb2YgdGhlIFJlZDUtU2VydmxldAorIC0tPgorPGF0dHJpYnV0ZSBuYW1lPSJyZWQ1aHR0cHBvcnQiIHZhbHVlPSI1MDgwIiB0eXBlPSJzdHJpbmciIC8+CisKKzxhdHRyaWJ1dGUgbmFtZT0idXNlU1NMIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+Cis8YXR0cmlidXRlIG5hbWU9InJ0bXBzc2xwb3J0IiB2YWx1ZT0iNDQzIiB0eXBlPSJzdHJpbmciIC8+CisKKzwhLS0tCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgVGhlc2UgY29sb3JzIGFyZSB0aGUgbWFpbiBjb2xvcnMgYW5kIHN0eWxlIHRoZSBob2xlIGFwcGxpY2F0aW9uCisgLS0+Cis8YXR0cmlidXRlIG5hbWU9ImJhc2ViZ2NvbG9yaXplciIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPiAKKzxhdHRyaWJ1dGUgbmFtZT0iYmFzZU1vdXNlY29sb3JpemVyIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+ICAKKzxhdHRyaWJ1dGUgbmFtZT0iYmFzZU1vdXNlT3ZlcmNvbG9yaXplciIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPiAgICAgIAorPGF0dHJpYnV0ZSBuYW1lPSJzdHlsZU1lbnVCYXJCYXNlQ29sb3IiIHZhbHVlPSIweEZGRkZGRiIgdHlwZT0ic3RyaW5nIiAvPiAgICAKKworPGF0dHJpYnV0ZSBuYW1lPSJmb250Q29sb3JIZWFkZXIiIHZhbHVlPSIweDAwMDAwMCIgdHlwZT0ic3RyaW5nIiAvPgorPGF0dHJpYnV0ZSBuYW1lPSJiZ0NvbG9yTWVudUl0ZW1zIiB2YWx1ZT0iMHhFQUVBRUEiIHR5cGU9InN0cmluZyIgLz4KKworPGF0dHJpYnV0ZSBuYW1lPSJ3ZWJBcHBSb290S2V5IiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisKKzxhdHRyaWJ1dGUgbmFtZT0iaHR0cFJvb3RLZXkiIHZhbHVlPSIvIiB0eXBlPSJzdHJpbmciIC8+CisKKzxhdHRyaWJ1dGUgbmFtZT0icHJvdG9jb2wiIHZhbHVlPSJodHRwIiB0eXBlPSJzdHJpbmciIC8+Cis8YXR0cmlidXRlIG5hbWU9InByb3h5VHlwZSIgdmFsdWU9Im5vbmUiIHR5cGU9InN0cmluZyIgLz4KKworPGF0dHJpYnV0ZSBuYW1lPSJzaG93QXVkaW9WaWRlb1Rlc3QiIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPgorCis8IS0tIAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworQXR0cmlidXRlcyBuZWVkZWQgZm9yIGNsdXN0ZXJpbmcgLS0+CisKKzxhdHRyaWJ1dGUgbmFtZT0iaXNTbGF2ZUhvc3RlZCIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorCis8IS0tIHNlcnZlciBvYmplY3QncyBhZGRyZXNzIChub3QgbG9hZGVkIGZyb20gY29uZmlnLnhtbCBjYXVzZSB0aGlzIHZhcmlhYmxlIGlzIGVtcHR5IGJ5IGRlZmF1bHQpIC0tPgorPGF0dHJpYnV0ZSBuYW1lPSJzbGF2ZVJ0bXBob3N0bG9jYWwiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKzwhLS0gcnRtcHBvcnQgZnJvbSBzbGF2ZSdzIGNvbmZpZy54bWwgIC0tPiAKKzxhdHRyaWJ1dGUgbmFtZT0ic2xhdmVSdG1wcG9ydCIgdmFsdWU9IjUwODAiIHR5cGU9InN0cmluZyIgLz4KKzwhLS0gcnRtcFR1bm5lbHBvcnQgZnJvbSBzbGF2ZSdzIGNvbmZpZy54bWwgLS0+Cis8YXR0cmlidXRlIG5hbWU9InNsYXZlUnRtcFR1bm5lbHBvcnQiIHZhbHVlPSI4MDg4IiB0eXBlPSJzdHJpbmciIC8+Cis8IS0tIHJ0bXBzc2xwb3J0IGZyb20gc2xhdmUncyBjb25maWcueG1sIC0tPgorPGF0dHJpYnV0ZSBuYW1lPSJzbGF2ZVJ0bXBzc2xwb3J0IiB2YWx1ZT0iNDQzIiB0eXBlPSJzdHJpbmciIC8+Cis8IS0tIGZyb20gc2xhdmUncyBjb25maWcueG1sIC0tPgorPGF0dHJpYnV0ZSBuYW1lPSJzbGF2ZVdlYkFwcFJvb3RLZXkiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4gCisKKzwhLS0KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAgICBJZCBvZiB0aGUgUmVjb3JkaW5nIHRoYXQgaXMgcGxheWVkIHdoZW4gYWNjZXNzIHRoZSBSZWNvcmRpbmdzIFBsYXllciB2aWEgRGlyZWN0IExpbmsgVVJMCisgLS0+Cis8YXR0cmlidXRlIG5hbWU9InJvb21SZWNvcmRpbmdJZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKworPCEtLS0gTmFtZSBvZiB0aGUgQXBwbGljYXRpb24gLS0+Cis8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRhcHBuYW1lIiB2YWx1ZT0iT3Blbk1lZXRpbmdzIiB0eXBlPSJzdHJpbmciIC8+ICAgCis8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRhcHBuYW1ldXJsIiB2YWx1ZT0iT3Blbk1lZXRpbmdzIiB0eXBlPSJzdHJpbmciIC8+ICAgCis8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRhcHBuYW1lYnVndXJsIiB2YWx1ZT0iT3Blbk1lZXRpbmdzIiB0eXBlPSJzdHJpbmciIC8+IAorCis8IS0tLSBWaWRlbyBTZXR0aW5ncyAtLT4KKzxhdHRyaWJ1dGUgbmFtZT0ibG91ZG5lc3NBY2l0dmlhdGlvbiIgdmFsdWU9IjEwIiB0eXBlPSJudW1iZXIiIC8+Cis8YXR0cmlidXRlIG5hbWU9InNob3dXaW5kb3dFZmZlY3QiIHZhbHVlPSJ5IiB0eXBlPSJzdHJpbmciIC8+IAorCis8IS0tLSBDYWxlbmRhciBTZXR0aW5ncyAtLT4KKzxhdHRyaWJ1dGUgbmFtZT0iZmlyc3RkYXlpbndlZWsiIHZhbHVlPSIxIiB0eXBlPSJudW1iZXIiIC8+CisKKzxhdHRyaWJ1dGUgbmFtZT0ic2hvd21vZGVybldoaXRlQm9hcmQiIHZhbHVlPSJ5IiB0eXBlPSJzdHJpbmciIC8+CisKKzxhdHRyaWJ1dGUgbmFtZT0ic2hvd1JlY29yZGluZyIgdmFsdWU9InZpc2libGUiIHR5cGU9InN0cmluZyIgLz4KKworPGF0dHJpYnV0ZSBuYW1lPSJkZWZhdWx0V2hpdGVib2FyZFdpZHRoIiB2YWx1ZT0iMjQwMCIgdHlwZT0ibnVtYmVyIiAvPgorPGF0dHJpYnV0ZSBuYW1lPSJkZWZhdWx0V2hpdGVib2FyZEhlaWdodCIgdmFsdWU9IjEyMDAiIHR5cGU9Im51bWJlciIgLz4KKworPCEtLSBFTkQgT0YgY29uZmlnLnhtbCBhdHRyaWJ1dGVzCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgLS0+CisKKzxhdHRyaWJ1dGUgbmFtZT0idXNlckhpc3RvcnkiIHZhbHVlPSJudWxsIiAvPgorPGF0dHJpYnV0ZSBuYW1lPSJicm93c2VyVGFiSGlzdG9yeSIgdmFsdWU9Im51bGwiIC8+CisKKzwhLS0gdGhpcyBhdHRyaWJ1dGUgaG9sZHMgYW4gb2JqZWN0IG9mIHR5cGUgUm9vbUNsaWVudAorIHRoZSBMQVNUIFJvb21DbGllbnQgT2JqZWN0IHRoYXQgaGFzIGJlZW4gY2hhbmdlZCB0aGUgZHJhd3N0YXR1cworIHNvIG9uZHJhd0FsbG93U3RhdHVzID0gd2lsbCB0cmlnZ2VyIHRoYXQgdGhlIGRyYXctc3RhdHVzIG9mIEFOWUJPRFkgaGFzIGNoYW5nZWQKKyBhbmQgY2FudmFzLmRyYXdBbGxvd1N0YXR1cyA9IGlzIHRoZSBSb29tQ2xpZW50IHRoYXQgaGFzIGNoYW5nZWQKKyBhbmQgY2FudmFzLmRyYXdBbGxvd1N0YXR1cy5jYW5EcmF3ID0gaXMgdGhlIG5ldyBTdGF0dXMgb2YgdGhhdCBSb29tQ2xpZW50CisgLS0+CisKKzxhdHRyaWJ1dGUgbmFtZT0iZHJhd0FsbG93U3RhdHVzIiB2YWx1ZT0ibnVsbCIvPgorCis8IS0tIHRoaXMgYXR0cmlidXRlIGhvbGRzIGFuIG9iamVjdCBvZiB0eXBlIFJvb21DbGllbnQKK3RoZSBMQVNUIFJvb21DbGllbnQgT2JqZWN0IHRoYXQgaGFzIGJlZW4gY2hhbmdlZCB0aGUgZ2l2ZUV4Y2x1c2l2ZUF1ZGlvIHN0YXR1cworLS0+Cis8YXR0cmlidXRlIG5hbWU9ImV4Y2x1c2l2ZUF1ZGlvQWxsb3dTdGF0dXMiIHZhbHVlPSJudWxsIi8+CisKKzwhLS0KKyAgICB0aGlzIHZhbHVlIGluZGljYXRlcyBpZiB0aGlzIHVzZXIgaXMgYWxsb3dlZCB0byBkcmF3IHRvIHRoZSBXaGl0ZWJvYXJkCisgICAgSWYgdGhpcyB1c2VyIGlzIGN1cnJlbnRseSBNb2RlcmF0b3IgPT4gaGUgQUxXQVlTIGNhbiBkcmF3IHRvIHdoaXRlYm9hcmQKKyAgICBldmVuIGlmIHRoaXMgaXNBbGxvd2VkVG9EcmF3ID09IGZhbHNlCisgLS0+Cis8YXR0cmlidXRlIG5hbWU9ImlzQWxsb3dlZFRvRHJhdyIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorCis8IS0tIAorICAgIHRoaXMgYXR0cmlidXRlIGhvbGRzIGFuIG9iamVjdCBvZiB0eXBlIFJvb21DbGllbnQKKyAgICB0aGUgTEFTVCBSb29tQ2xpZW50IE9iamVjdCB0aGF0IGhhcyBiZWVuIGNoYW5nZWQgdGhlIG11dGUtc3RhdHVzCisgLS0+Cis8YXR0cmlidXRlIG5hbWU9Im1pY011dGVkU3RhdHVzQ2hhbmdlZEl0ZW0iIHZhbHVlPSJudWxsIiAvPgorCis8IS0tCisgICAgdGhpcyB2YWx1ZSBpbmRpY2F0ZXMgaWYgdGhpcyB1c2VyIGlzIGN1cnJlbnRseSBtdXRlZAorIC0tPgorPGF0dHJpYnV0ZSBuYW1lPSJtaWNNdXRlZCIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorCis8IS0tLSBVUkwvSVAgdG8gdXNlIGZvciB0aGUgU2VydmVyIC0tPgorPGF0dHJpYnV0ZSBuYW1lPSJydG1waG9zdCIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorCis8IS0tLSBVc2VybmFtZS9OaWNrbmFtZSAtLT4KKzxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudHVzZXIiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKworPCEtLS0gUm9vbW5hbWUgaW50ZXJuYWx5IFNjb3BlIC0tPgorPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50Y291cnNlIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisKKzwhLS0tIFJvb21uYW1lL0NvdXJzZW5hbWUgLS0+Cis8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRjb3Vyc2VOYW1lIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisKKzxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudEltYWdlc0xpc3RkcmF3IiB2YWx1ZT0ibnVsbCIgLz4KKworPCEtLS0gCisgICAgVGhlIFJlZmVyZW5jZSBmb3IgYSBTdHJlYW1pbmcgT2JqZWN0CisgICAgVGhpcyBzaG91bGQgYmUgcmVtb3ZlZCBsYXRlciB3aGVuIHRoZSBPcGVuTGFzemxvIEFQSSBoYW5kbGVzCisgICAgdGhlIGJyb2FkY2FzdCBiZXR0ZXIKKyAgICAtc3dhZ25lcgorIC0tPgorPGF0dHJpYnV0ZSBuYW1lPSJfbmMiIHZhbHVlPSJudWxsIiAvPgorICAgIAorPCEtLQorPGF0dHJpYnV0ZSBuYW1lPSJtb2RlcmF0b3JTdHJlYW1JRCIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorPGF0dHJpYnV0ZSBuYW1lPSJtb2RlcmF0b3JhdGlvbk9iamVjdCIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorPGF0dHJpYnV0ZSBuYW1lPSJtb2RlcmF0b3JOYW1lIiB0eXBlPSJzdHJpbmciIHNldHRlcj0idGhpcy5zZXRNb2RlcmF0b3JOYW1lKG1vZGVyYXRvck5hbWUpIiAvPgorIC0tPgorPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50TW9kZXJhdG9yTGlzdCIgdmFsdWU9Im51bGwiIC8+CisKKzxhdHRyaWJ1dGUgbmFtZT0ibmV3TW9kZXJhdG9yTGlzdCIgdmFsdWU9Im51bGwiIC8+Cis8YXR0cmlidXRlIG5hbWU9InJlbW92ZU1vZGVyYXRvckxpc3QiIHZhbHVlPSJudWxsIiAvPgorCis8YXR0cmlidXRlIG5hbWU9ImlzbW9kZXJhdG9yIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisKKzxhdHRyaWJ1dGUgbmFtZT0ibG9hZGluZ21lc3NhZ2UiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKzwhLS0tIAorICAgIFRoZSBzdGF0ZSBvZiB0aGUgQXBwbGljYXRpb24KKyAgICBBdCB0aGUgYmVnaW5uaW5nIHlvdSBzaG91bGQgY2hvb3NlIGhvdyBtYW55IHVzZXJzIGFyZSBhbGxvd2VkIHRvCisgICAgbG9naW4gc2ltdWx0YW5pb3VzbHkKKyAtLT4KKzxhdHRyaWJ1dGUgbmFtZT0iaXNsb2dlZGluIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAKKzxhdHRyaWJ1dGUgbmFtZT0iaHRtbGZyYW1laXNsb2FkZWQiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKzxhdHRyaWJ1dGUgbmFtZT0iY3JlYXRlSUZyYW1lRG9uZV9hdHRyIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisKKworPGF0dHJpYnV0ZSBuYW1lPSJ1cGxvYWRtb2R1bGVwcHQiIHZhbHVlPSJ2aWRlb2NvbmYxcHB0IiB0eXBlPSJzdHJpbmciIC8+Cis8YXR0cmlidXRlIG5hbWU9InVwbG9hZG1vZHVsZWltZyIgdmFsdWU9InZpZGVvY29uZjEiIHR5cGU9InN0cmluZyIgLz4KKzxhdHRyaWJ1dGUgbmFtZT0iZm9sZGVyc2VxdWVuY2UiIHZhbHVlPSJudWxsIiAvPgorPGF0dHJpYnV0ZSBuYW1lPSJ1cGxvYWRtb2R1bGVpbWdmb2xkZXIiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKzwhLS0tCisgICAgQ2FuIGJlIGVpdGhlciAyIG9yIDQKKyAgICBCdXQgdGhlb3JldGljYWxseSB0aGVyZSBpcyBubyBsaW1pdAorIC0tPgorPGF0dHJpYnV0ZSBuYW1lPSJudW1iZXJvZmFsbG93ZWRwYXJ0bmVycyIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKworPCEtLS0gTnVtYmVyIG9mIGN1cnJlbnRseSBjb25uZWN0ZWQgVXNlcnMgLS0+Cis8YXR0cmlidXRlIG5hbWU9Im51bWJlcm9mcGFydG5lcnMiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisKKzwhLS0tIHVuaXF1ZSBJRCBvZiB0aGlzIFN0cmVhbSAtLT4KKzxhdHRyaWJ1dGUgbmFtZT0ic3RyZWFtaWQiIHZhbHVlPSIwIiB0eXBlPSJzdHJpbmciIC8+CisKKzwhLS0tIGlkIG9mIHRoZSBjdXJyZW50IE1vZCBpbiB0aGlzIHJvb20gLS0+Cis8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRtb2RpZCIgdmFsdWU9IjAiIHR5cGU9InN0cmluZyIgLz4KKworPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50bGFuZ3VhZ2UiIHZhbHVlPSJlbmdsaXNoIiB0eXBlPSJzdHJpbmciIC8+CisKKzxhdHRyaWJ1dGUgbmFtZT0ib2JqV2hpdGVib2FyZCIgdmFsdWU9Im51bGwiIC8+Cis8YXR0cmlidXRlIG5hbWU9IndoaXRlYm9hcmRDb3VudCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKzxhdHRyaWJ1dGUgbmFtZT0ib2JqTWVzc2FnZSIgdmFsdWU9Im51bGwiIC8+Cis8YXR0cmlidXRlIG5hbWU9IlZhcnNNb2RlcmF0b3JHZW5lcmFsIiB2YWx1ZT0ibnVsbCIgLz4KKworPGF0dHJpYnV0ZSBuYW1lPSJpc0NvbmZlcmVuY2UiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKworPGF0dHJpYnV0ZSBuYW1lPSJzdGF0ZXNJbml0VmFsdWVzIiB2YWx1ZT0ibnVsbCIgLz4KKzxhdHRyaWJ1dGUgbmFtZT0ic2FsdXRhdGlvbnNJbml0VmFsdWVzIiB2YWx1ZT0ibnVsbCIgLz4KKzxhdHRyaWJ1dGUgbmFtZT0icm9vbVR5cGVzSW5pdFZhbHVlcyIgdmFsdWU9Im51bGwiIC8+CisKKzwhLS0tIEF1ZGlvLVZpZGVvIFF1YWxpdHkgU2V0dGluZ3MKKyAgICBvdmVyd3JpdHRlbiBieSB2YWx1ZXMgZnJvbSB0aGUgY29uZmlnLnhtbCAKKyAtLT4KKzxhdHRyaWJ1dGUgbmFtZT0iY29kZWNUeXBlIiB2YWx1ZT0iaDI2NCIgdHlwZT0ic3RyaW5nIiAvPgorPGF0dHJpYnV0ZSBuYW1lPSJmcmFtZXNQZXJTZWNvbmQiIHZhbHVlPSIzMCIgdHlwZT0ibnVtYmVyIiAvPgorPGF0dHJpYnV0ZSBuYW1lPSJiYW5kd2lkdGhOZWVkZWROb3JtYWwiIHZhbHVlPSIxNjM4NCIgdHlwZT0ibnVtYmVyIiAvPgorPGF0dHJpYnV0ZSBuYW1lPSJiYW5kd2lkdGhOZWVkZWRCZXN0IiB2YWx1ZT0iMzI3NjgiIHR5cGU9Im51bWJlciIgLz4KKzxhdHRyaWJ1dGUgbmFtZT0iY2FtUXVhbGl0eU5vcm1hbCIgdmFsdWU9Ijc1IiB0eXBlPSJudW1iZXIiIC8+Cis8YXR0cmlidXRlIG5hbWU9ImNhbVF1YWxpdHlCZXN0IiB2YWx1ZT0iNzUiIHR5cGU9Im51bWJlciIgLz4KKyAgICAgICAgCis8IS0tLSBSZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgYWN0aXZlIGRyYXdhcmVhIC0tPgorPGF0dHJpYnV0ZSBuYW1lPSJfZHJhd2FyZWEiIHZhbHVlPSJudWxsIiAvPiAKKworPCEtLS0gVXNlcm5hbWUgb2YgY3VycmVudCB1c2VyIC0tPgorPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50dXNlbmFtZSIgdmFsdWU9ImRlZmF1bHRuYW1lIiB0eXBlPSJzdHJpbmciIC8+Cis8YXR0cmlidXRlIG5hbWU9InVzZXJfaWQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+Cis8YXR0cmlidXRlIG5hbWU9ImZpcnN0TmFtZSIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorPGF0dHJpYnV0ZSBuYW1lPSJ0aW1lWm9uZUlkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorPGF0dHJpYnV0ZSBuYW1lPSJqTmFtZVRpbWVab25lIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+Cis8YXR0cmlidXRlIG5hbWU9Imxhc3ROYW1lIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+Cis8YXR0cmlidXRlIG5hbWU9Im1haWwiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKzxhdHRyaWJ1dGUgbmFtZT0ibGFzdExvZ2luIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+Cis8YXR0cmlidXRlIG5hbWU9Im9mZmljaWFsX2NvZGUiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKzxhdHRyaWJ1dGUgbmFtZT0icGljdHVyZV91cmkiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKzxhdHRyaWJ1dGUgbmFtZT0ibGFuZ3VhZ2UiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKworPCEtLS0gVXNlciBwb3JwZXJ0aWVzIC0tPgorPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50dXNlcmNvbG9yIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50dXNlcnBvcyIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKyAgICAKKzxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudE1vZEFwcGx5IiB2YWx1ZT0ibnVsbCIgLz4gICAKKworPGF0dHJpYnV0ZSBuYW1lPSJzZXNzaW9uT2JqZWN0IiB2YWx1ZT0ibnVsbCIgLz4KKzxhdHRyaWJ1dGUgbmFtZT0ic2Vzc2lvbklkIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisKKzxhdHRyaWJ1dGUgbmFtZT0ic3luY1dpbmRvdyIgdmFsdWU9Im51bGwiIC8+Cis8YXR0cmlidXRlIG5hbWU9InN5bmNJbWFnZVdpbmRvdyIgdmFsdWU9Im51bGwiIC8+Cis8YXR0cmlidXRlIG5hbWU9InN5bmNTV0ZXaW5kb3ciIHZhbHVlPSJudWxsIiAvPgorPGF0dHJpYnV0ZSBuYW1lPSJwdWJsaWNTSUQiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKworPCEtLS0gYXR0cmlidXRlcyBmb3IgZGlyZWN0IHJvb20gYWNjZXNzIC0tPgorPGF0dHJpYnV0ZSBuYW1lPSJpbml0cm9vbWlkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorPGF0dHJpYnV0ZSBuYW1lPSJpbml0cm9vbVN0ciIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorPGF0dHJpYnV0ZSBuYW1lPSJpbml0cm9vbXR5cGUiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKzxhdHRyaWJ1dGUgbmFtZT0iaW5pdGRvbWFpbmlkIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+Cis8YXR0cmlidXRlIG5hbWU9ImluaXRsYW5naWQiIHZhbHVlPSIxIiB0eXBlPSJudW1iZXIiIC8+Cis8YXR0cmlidXRlIG5hbWU9ImlzaW5pdFJvb21EaXJlY3QiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKzxhdHRyaWJ1dGUgbmFtZT0iaXNpbml0Um9vbU9iamVjdCIgdmFsdWU9Im51bGwiIC8+IAorCis8IS0tIGF0dHJpYnV0ZXMgZm9yIGRpcmVjdCByb29tIGFjY2VzcyB2aWEgZGlyZWN0IGxpbmsgLS0+Cis8YXR0cmlidXRlIG5hbWU9ImRpcmVjdFVzZXJMb2dpbiIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorPGF0dHJpYnV0ZSBuYW1lPSJkaXJlY3RSb29tSWQiIHZhbHVlPSIxIiB0eXBlPSJudW1iZXIiIC8+Cis8YXR0cmlidXRlIG5hbWU9ImRpcmVjdFJvb21PYmoiIHZhbHVlPSJudWxsIiAvPgorCis8IS0tLSBhdHRyaWJ1dGVzIGZvciBkaXJlY3Qgcm9vbSBhY2Nlc3MgdmlhIHJlbW90ZVVzZXIgLS0+Cis8YXR0cmlidXRlIG5hbWU9InJlbW90ZVVzZXJMb2dpbiIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorPGF0dHJpYnV0ZSBuYW1lPSJyZW1vdGVVc2VyU2lkIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisKKzwhLS0tIGF0dHJpYnV0ZXMgZm9yIGRpcmVjdCByb29tIGFjY2VzcyB2aWEgcmVtb3RlVXNlcgorICAgIFRoaXMgaXMgdXNpbmcgdGhlIGFkdmFuY2VkIG1ldGhvZHMgdG8gcHJldmVudCBhYnVzZQorIC0tPgorPGF0dHJpYnV0ZSBuYW1lPSJzZWN1cmVSZW1vdGVVc2VyTG9naW4iIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKzxhdHRyaWJ1dGUgbmFtZT0ic2VjdXJlSGFzaCIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorCis8IS0tLSBza2lwIGxvYWRpbmcgb2YgTGFuZ3VhZ2UgLS0+Cis8YXR0cmlidXRlIG5hbWU9Imxhbmd1YWdlX2lkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorPCEtLS0gYXBwbGljYXRpb24gZGVmYXVsdCBsYW5ndWFnZSAtLT4KKzxhdHRyaWJ1dGUgbmFtZT0iZGVmYXVsdF9sYW5nX2lkIiB2YWx1ZT0iMSIgdHlwZT0ibnVtYmVyIiAvPgorCis8YXR0cmlidXRlIG5hbWU9ImlzUmVzZXRVc2VybmFtZSIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorPGF0dHJpYnV0ZSBuYW1lPSJyZXNldEhhc2giIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKyAgICAKKzxhdHRyaWJ1dGUgbmFtZT0ibmF2aUhlaWdodCIgdmFsdWU9Ijg0IiB0eXBlPSJudW1iZXIiIC8+ICAgIAorPGF0dHJpYnV0ZSBuYW1lPSJuYXZpSGVpZ2h0RGVsdGEiIHZhbHVlPSI4NCIgdHlwZT0ibnVtYmVyIiAvPiAgCisKKzxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudHJlY29yZGVyIiB2YWx1ZT0ibnVsbCIgLz4gCis8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRyZWNvcmRlcl9pZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4gCisKKzwhLS0tIAorSG9sZHMgYSByZWZlcm5jZSB0byB0aGUgY3VycmVudCBWaWRlb0NPbnRhaW5lciBPYmplY3QKK2NvbnRhaW5pbmcgdGhlIFZpZGVvVmlld3MKK2FuZCBzb21lIG1vcmUgcmVmZXJlbmNlcyB0byB0ZW1wLW9iamVjdHMKKyAtLT4KKzxhdHRyaWJ1dGUgbmFtZT0iX3ZpZGVvY29udGFpbmVyIiB2YWx1ZT0ibnVsbCIgLz4KKzxhdHRyaWJ1dGUgbmFtZT0iX215bW9kIiB2YWx1ZT0ibnVsbCIgLz4KKworPGF0dHJpYnV0ZSBuYW1lPSJpc3J0bCIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPiAgICAKKworPCEtLS0KKyAgICBBdHRyaWJ1dGVzIGZvciBicm93c2VyIHBhbmVsIHNpemUuCisgICAgVGhvc2UgYXR0cmlidXRlcyBhcmUgdXNlZCB0byBkZXRlcm1pbmUgc2l6ZSBvZiBicm93c2VyIGNsYXNzIChtb2R1bGVzL2NvbmZlcmVuY2UvYnJvd3Nlci9jb25mZXJlbmVjQnJvd3Nlci5sengpCisgICAgaW4gYmFzZS9tYWluTWV0aG9kcy5senguCisgICAgICAgIDIwMDggQXByIDkgY29tbWVudGVkIGJ5IG9ub2tlaWppQGdtYWlsLmNvbQorLS0+Cis8YXR0cmlidXRlIG5hbWU9ImJyb3dzZXJQYW5lbFdpZHRoIiB2YWx1ZT0iNjAwIi8+Cis8YXR0cmlidXRlIG5hbWU9ImJyb3dzZXJQYW5lbEhlaWdodCIgdmFsdWU9IjUwMCIvPgorCis8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRTbGlkZU5vIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50U2xpZGVUb3RhbCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKzxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudFNsaWRlWm9vbSIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKworPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50VXBsb2FkV2luZG93IiB2YWx1ZT0ibnVsbCIgLz4KKworPCEtLQorICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgQXR0cmlidXRlcyBmb3IgZGlyZWN0IE1vZGVyYXRvciBzZXR1cCB2aWEgTW9vZGxlCisgLS0+Cis8YXR0cmlidXRlIG5hbWU9ImlzTW9vZGxlUm9vbSIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPiAKKworPGF0dHJpYnV0ZSBuYW1lPSJiZWNvbWVtb2RlcmF0b3IiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKzxhdHRyaWJ1dGUgbmFtZT0iYmVjb21lU3VwZXJNb2RlcmF0b3IiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKworPGF0dHJpYnV0ZSBuYW1lPSJtb29kbGVXd3dSb290IiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+Cis8YXR0cmlidXRlIG5hbWU9Im1vb2RsZVVzZXJJZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKzxhdHRyaWJ1dGUgbmFtZT0ibW9vZGxlUGljdHVyZSIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKworCis8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRSb29tT2JqIiB2YWx1ZT0ibnVsbCIgLz4KKworPGF0dHJpYnV0ZSBuYW1lPSJyZWZyZXNoU2Vzc2lvbiIgdmFsdWU9IjYwMDAwIiB0eXBlPSJudW1iZXIiIC8+CisKKzxhdHRyaWJ1dGUgbmFtZT0iZ2xvYmFsRm9udFNpemUiIHZhbHVlPSIxMSIgdHlwZT0ibnVtYmVyIiAvPgorCis8YXR0cmlidXRlIG5hbWU9Imxhc3RCcm9hZENhc3RpbmdVc2VyIiB2YWx1ZT0ibnVsbCIgLz4KKworPGF0dHJpYnV0ZSBuYW1lPSJpc0Jyb2FkQ2FzdGluZyIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorCis8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRDb250ZW50VmlldyIgdmFsdWU9Im51bGwiIC8+CisKKzwhLS0gaXRlbSB0byBmb2N1cyBvbiBhZnRlciBycGNFcnJvckRpYWxvZyBoYXMgYmVlbiBzaG93bi0tPgorPGF0dHJpYnV0ZSBuYW1lPSJmb2N1c09uSXRlbSIgdmFsdWU9Im51bGwiLz4KKworPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50Um9vbU9iamVjdCIgdmFsdWU9Im51bGwiLz4KKworPGF0dHJpYnV0ZSBuYW1lPSJhcHBvaW50bWVudE5vdGlmaWNhdGlvblBvcFVwIiB2YWx1ZT0ibnVsbCIvPgorCis8YXR0cmlidXRlIG5hbWU9ImNvbmZlcmVuY2VCcm93c2VySXNpbml0ZWQiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKworPGF0dHJpYnV0ZSBuYW1lPSJpc0FsbG93ZWRUb1NjcmVlblNoYXJlIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisKKzxhdHRyaWJ1dGUgbmFtZT0iaXNBbGxvd2VkVG9SZW1vdGVDb250cm9sIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisKKzxhdHRyaWJ1dGUgbmFtZT0iaXNBbGxvd2VkVG9HaXZlRXhjbHVzaXZlQXVkaW8iIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKworPGF0dHJpYnV0ZSBuYW1lPSJsekNhbGVuZGFySW5mb1RhYiIgdmFsdWU9Im51bGwiLz4KKworPGF0dHJpYnV0ZSBuYW1lPSJyb29tSnVtcElkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorCis8YXR0cmlidXRlIG5hbWU9InVzZXJDb250YWN0cyIgdmFsdWU9Im51bGwiIC8+CisKKzwhLS0KKyAgICBMb2FkcyBhIFVzZXIgcHJvZmlsZSBwYWdlIGRpcmVjdGx5IGluc3RlYWQgb2YgbG9hZGluZyB0aGUgRGFzaGJvYXJkCisgICAgY3VzZXIgaXMgYSBoYXNoIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBVc2VyQ29udGFjdHMgVGFibGUKKyAtLT4gICAgIAorPGF0dHJpYnV0ZSBuYW1lPSJjdXNlciIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIi8+CisKKzwhLS0KKyAgICBJbmRpY2F0ZXMgaWYgdGhlIHVzZXIgZG9lcyBhY2NlcHQgb3IgZGVueSBhIHVzZXIgY29udGFjdCByZXF1ZXN0CisgLS0+ICAgIAorPGF0dHJpYnV0ZSBuYW1lPSJjdXNlclN0YXR1cyIgdmFsdWU9Im5vbmUiIHR5cGU9InN0cmluZyIvPgorCis8IS0tCisgICAgQXR0cmlidXRlcyB0byBoYW5kbGUgdGhlIGNsaWNrIHNlYXJjaCBvbiBsaW5rZWQgdXNlci1rZXl3b3JkcworIC0tPgorPGF0dHJpYnV0ZSBuYW1lPSJ1c2VyU2V0dGluZ3NNb2R1bGVPcHQiIHZhbHVlPSJ1c2VyUHJvZmlsZSIgdHlwZT0ic3RyaW5nIi8+CisKKzxhdHRyaWJ1dGUgbmFtZT0idXNlclNldHRpbmdzU2VhcmNoVHlwZSIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIi8+Cis8YXR0cmlidXRlIG5hbWU9InVzZXJTZXR0aW5nc1NlYXJjaFBocmFzZSIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIi8+Cis8YXR0cmlidXRlIG5hbWU9InVzZXJTZXR0aW5nc1NlYXJjaFJlZiIgdmFsdWU9Im51bGwiLz4KKworPCEtLQorICAgIEF0dHJpYnV0ZSB0byBsb2FkIGEgY3VzdG9tIHVzZXIgY2FsZW5kYXIgaW5zdGVhZCBvZiB0aGUgb3duIG9uZQorLS0+Cis8YXR0cmlidXRlIG5hbWU9ImNvbnRhY3RVc2VyIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorCis8YXR0cmlidXRlIG5hbWU9Im1vbnRobmFtZXMiIHZhbHVlPSJbJ0phbnVhcicsJ0ZlYnJ1YXInLCdNYWVyeicsJ0FwcmlsJywnTWFpJywnSnVuaScsJ0p1bGknLCdBdWd1c3QnLCdTZXB0ZW1iZXInLCdPa3RvYmVyJywnTm92ZW1iZXInLCdEZXplbWJlciddIi8+IAorCis8YXR0cmlidXRlIG5hbWU9ImRheVNob3J0TmFtZXMiIHZhbHVlPSJudWxsIiAvPgorCis8IS0tCisgICAgVXNlZCBpbiBTT0FQIEFQSSB0byBpbmRpY2F0ZSBpZiB0aGUgdXNlciB3aWxsIHNlZSBhIHBvcCB1cCB0byBlbnRlciBpdHMgbmlja25hbWUKKyAtLT4KKzxhdHRyaWJ1dGUgbmFtZT0ic2hvd05pY2tOYW1lRGlhbG9nIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisKKzwhLS0KKyAgICBVc2VkIGluIFNPQVAgQVBJIHRvIGluZGljYXRlIGlmIHRoZSB1c2VyIGxvZ3MgZGlyZWN0bHkgaW50byBhIHJvb20gb3IgaW50byB0aGUgZGFzaGJvYXJkCisgLS0+Cis8YXR0cmlidXRlIG5hbWU9ImxhbmRpbmdab25lIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciLz4KKworPCEtLQorICAgIGlmIHRoZSB1c2VycyBsb2dzIGluIHZpYSBTT0FQIGhlIGRvZXMgbm90IHNlZSB0aGUgZXhpdCBidXR0b24gYnkgZGVmYXVsdAorICAgIG9ubHkgaWYgdGhlIGxhbmRpbmdab25lID09IGRhc2hib2FyZAorIC0tPgorPGF0dHJpYnV0ZSBuYW1lPSJkZXN0cm95RXhpdEJ1dHRvbiIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CisKKzxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudEZpbGVFeHBsb3JlciIgdmFsdWU9Im51bGwiLz4KKworPGF0dHJpYnV0ZSBuYW1lPSJhbGxvd1JlY29yZGluZyIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CisKKzwhLS0gdXNlcmRhdGEgLS0+Cis8YXR0cmlidXRlIG5hbWU9InNoYXJlZE9iamVjdCIgdmFsdWU9Im51bGwiIC8+CisKKzxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudE1pY05hbWUiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIvPgorPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50Q2FtTmFtZSIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIi8+CisKKzxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudEJhc2VDb25mZXJlbmNlUm9vbSIgdmFsdWU9Im51bGwiIC8+CisKKzxhdHRyaWJ1dGUgbmFtZT0iR0lWRV9FWENMVVNJVkVfQVVESU9fS0VZIiB2YWx1ZT0iMTIzIi8+IDwhLS0gRjEyIC0tPiAKKzxhdHRyaWJ1dGUgbmFtZT0iQVJSQU5HRV9XSU5ET1dTX0tFWSIgdmFsdWU9IjExOSIvPiA8IS0tIEY4IC0tPiAKKzxhdHRyaWJ1dGUgbmFtZT0iTVVURV9BVURJT19LRVkiIHZhbHVlPSIxMTgiLz4gPCEtLSBGNyAtLT4gCisKKzwhLS0gCisJSW5kaWNhdGVzIGlmIHRoZSBSZWQ1IFNJUCBJbnRlZ3JhdGlvbiBpcyBlbmFibGVkIG9yIG5vdCBhbmQgCisJaWYgdGhlIFNJUCBEaWFsZXIgaXMgc2hvd24gaW4gdGhlIGNvbmZlcmVuY2UgbWVudQorIC0tPgorPGF0dHJpYnV0ZSBuYW1lPSJSRUQ1X1NJUF9FTkFCTEUiIHZhbHVlPSJubyIgdHlwZT0ic3RyaW5nIiAvPiAKKworPCEtLSAKKwlUaGUgc2VydmVyIHNpZGUgY29uZmlndXJhdGlvbiBvZiB0aGUgbWF4IHVwbG9hZCBzaXplIGZvciBmaWxlcworIC0tPgorPGF0dHJpYnV0ZSBuYW1lPSJNQVhfVVBMT0FEX1NJWkUiIHZhbHVlPSItMSIgdHlwZT0ic3RyaW5nIiAvPiAKKworPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50TkMiIHZhbHVlPSJudWxsIiAvPgorCis8IS0tIAorCUhvbGRzIGEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IHRvb2x0aXAsIGlmIHRoZXJlIGlzIG9uZQorIC0tPgorPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50VG9vbFRpcCIgdmFsdWU9Im51bGwiIC8+CisKKzxtZXRob2QgbmFtZT0icmVnaXN0ZXJUb29sVGlwIiBhcmdzPSJ2aWV3SW5zdGFuY2UiPgorCWlmICh0aGlzLmN1cnJlbnRUb29sVGlwICE9IG51bGwpIHsKKwkJdGhpcy5jdXJyZW50VG9vbFRpcC5jbGVhbkhvbGRlcigpOworCX0KKwl0aGlzLmN1cnJlbnRUb29sVGlwID0gdmlld0luc3RhbmNlOworPC9tZXRob2Q+CisKKzxtZXRob2QgbmFtZT0iY2xlYXJUb29sVGlwIj4KKwlpZiAodGhpcy5jdXJyZW50VG9vbFRpcCAhPSBudWxsKSB7CisJCXRoaXMuY3VycmVudFRvb2xUaXAuY2xlYW5Ib2xkZXIoKTsKKwkJdGhpcy5jdXJyZW50VG9vbFRpcCA9IG51bGw7CisJfQorPC9tZXRob2Q+CisKKzwhLS0gCisJSG9sZHMgYSByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgYWN0aXZpdHkgbGlzdCwgaWYgdGhlcmUgaXMgb25lCisgLS0+Cis8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRBY3Rpdml0eUxpc3QiIHZhbHVlPSJudWxsIiAvPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL21haW5EYXRhc2V0cy5senggYi9XZWJDb250ZW50L3NyYy9iYXNlL21haW5EYXRhc2V0cy5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjNlYTZkZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvbWFpbkRhdGFzZXRzLmx6eApAQCAtMCwwICsxLDYyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKworPCEtLSBhbGwgZGF0YXNldHMgZm9yIG1haW4ubHp4IC0tPgorCis8bGlicmFyeT4KKworPCEtLSBnZXQgdmFsdWVzIGZyb20gY29uZmlnLnhtbCAtLT4KKzxkYXRhc2V0IHR5cGU9Imh0dHAiIG5hbWU9Im15Q29uZmlnU2V0IiByZXF1ZXN0PSJmYWxzZSIgb25kYXRhPSJwYXJlbnQubWFpblRoZW1lLmxvYWRUaGVtZSgpIj4KKyAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgICAgICB2YXIgZCA9IG5ldyBEYXRlKCk7CisgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJzcmMiLCJjb25maWcueG1sP3JhbmRvbT0iK2QuZ2V0VGltZSgpKTsKKyAgICAgICAgdGhpcy5kb1JlcXVlc3QoKTsKKyAgICA8L2hhbmRsZXI+CisgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIj4KKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9uZGF0YSIpOworICAgIDwvaGFuZGxlcj4KKyAgICA8aGFuZGxlciBuYW1lPSJvbmVycm9yIiBhcmdzPSJlIj4KKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9uZXJyb3IiLGUpOworICAgIDwvaGFuZGxlcj4KKyAgICA8aGFuZGxlciBuYW1lPSJvbnRpbWVvdXQiIGFyZ3M9ImUiPgorICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib250aW1lb3V0IixlKTsKKyAgICA8L2hhbmRsZXI+Cis8L2RhdGFzZXQ+CisKKzwhLS0gZ2V0IHZhbHVlcyBmcm9tIGNvbmZpZy54bWwgLS0+Cis8ZGF0YXNldCB0eXBlPSJodHRwIiBuYW1lPSJtYWluVGhlbWUiIHJlcXVlc3Q9ImZhbHNlIiBvbmRhdGE9ImNhbnZhcy5teWluaXQoKSI+CisgICAgPG1ldGhvZCBuYW1lPSJsb2FkVGhlbWUiPgorICAgICAgICB2YXIgZCA9IG5ldyBEYXRlKCk7CisgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJzcmMiLCJkZWZhdWx0LXRoZW1lLnhtbD9yYW5kb209IitkLmdldFRpbWUoKSk7CisgICAgICAgIHRoaXMuZG9SZXF1ZXN0KCk7CisgICAgPC9tZXRob2Q+CisgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIj4KKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9uZGF0YSIpOworICAgIDwvaGFuZGxlcj4KKyAgICA8aGFuZGxlciBuYW1lPSJvbmVycm9yIiBhcmdzPSJlIj4KKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9uZXJyb3IiLGUpOworICAgIDwvaGFuZGxlcj4KKyAgICA8aGFuZGxlciBuYW1lPSJvbnRpbWVvdXQiIGFyZ3M9ImUiPgorICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib250aW1lb3V0IixlKTsKKyAgICA8L2hhbmRsZXI+Cis8L2RhdGFzZXQ+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvbWFpbk1ldGhvZHMubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9tYWluTWV0aG9kcy5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDlmMjAwYgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvbWFpbk1ldGhvZHMubHp4CkBAIC0wLDAgKzEsMTEzMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAgICAgICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+CisKKzwhLS0gbWV0aG9kcyBmb3IgbWFpbi5senggLS0+CisKKzxsaWJyYXJ5PgorCisJPGNsYXNzIG5hbWU9ImJhc2Vjb25mbWVudWNvbW1hbmQiIGV4dGVuZHM9ImNvbW1hbmQiID4KKyAgICAJPGF0dHJpYnV0ZSBuYW1lPSJlbmFibGVkIiB2YWx1ZT0idHJ1ZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICAJPGF0dHJpYnV0ZSBuYW1lPSJ0aXBMYWJlbElkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgIDwvY2xhc3M+CisgICAgCisgICAgPGNsYXNzIG5hbWU9ImNvbmZtZW51Y29tbWFuZCIgZXh0ZW5kcz0iYmFzZWNvbmZtZW51Y29tbWFuZCIgPgorICAgIAk8YXR0cmlidXRlIG5hbWU9ImFjdGlvbkNvbW1hbmQiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKyAgICAJPGhhbmRsZXIgbmFtZT0ib25zZWxlY3QiIGFyZ3M9InNlbCI+CisgICAgCQlpZiAoIXRoaXMuZW5hYmxlZCkgeworICAgIAkJCXJldHVybjsKKyAgICAJCX0KKyAgICAJCWNhbnZhcy5kb0FjdGlvbm1lbnUodGhpcy5hY3Rpb25Db21tYW5kKTsKKyAgICAJPC9oYW5kbGVyPgorICAgIDwvY2xhc3M+CisgICAgICAgIAorICAgIDxiYXNlY29uZm1lbnVjb21tYW5kIGlkPSJjbWRfc2hhcmVEZXNrdG9wIiB0aXBMYWJlbElkPSIxNDgwIiA+CisgICAgCTxoYW5kbGVyIG5hbWU9Im9uc2VsZWN0IiBhcmdzPSJzZWwiPgorICAgIAkJaWYgKCF0aGlzLmVuYWJsZWQpIHsKKyAgICAJCQlyZXR1cm47CisgICAgCQl9CisgICAgCQljYW52YXMuX215bW9kLmNoZWNrRm9yQXBwbHlTY3JlZW4oIm5vIik7CisgICAgCTwvaGFuZGxlcj4KKyAgICA8L2Jhc2Vjb25mbWVudWNvbW1hbmQ+CisgICAgCisgICAgPGNvbmZtZW51Y29tbWFuZCBpZD0iY21kX2FwcGx5Zm9yTW9kIiB0aXBMYWJlbElkPSIxNDgxIiBhY3Rpb25Db21tYW5kPSJhcHBseUZvck1vZCIgLz4KKyAgICAKKyAgICA8Y29uZm1lbnVjb21tYW5kIGlkPSJjbWRfYXBwbHlmb3JXaGl0ZUJvYXJkIiB0aXBMYWJlbElkPSIxNDkyIiBrZXk9IlsnY29udHJvbCcsJ3NoaWZ0JywnMiddIj4KKyAgICAJPGhhbmRsZXIgbmFtZT0ib25zZWxlY3QiIGFyZ3M9InRTZWwiPgorICAgIAkJaWYgKCF0aGlzLmVuYWJsZWQpIHsKKyAgICAJCQlyZXR1cm47CisgICAgCQl9CisgICAgCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiY21kX2FwcGx5Zm9yV2hpdGVCb2FyZCBvbnNlbGVjdCIsdFNlbCk7CisgICAgCQkvL0FzayBmb3IgUmlnaHQgdG8gRHJhdyBvbiBXaGl0ZWJvYXJkCisJCQl2YXIgdERhdGUgPSBuZXcgRGF0ZSgpOworCQkJY2FudmFzLnRoaXNoaWIuc2VuZE1lc3NhZ2VXaXRoQ2xpZW50LnNlbmRNZXNzYWdlKCJhcHBseUZvcldoaXRlYm9hcmQiLHREYXRlLmdldFRpbWUoKSk7CisgICAgCTwvaGFuZGxlcj4KKyAgICA8L2NvbmZtZW51Y29tbWFuZD4KKyAgICAKKyAgICA8YmFzZWNvbmZtZW51Y29tbWFuZCBpZD0iY21kX2FwcGx5Zm9yQVYiIHRpcExhYmVsSWQ9IjE0ODIiPgorICAgIAk8aGFuZGxlciBuYW1lPSJvbnNlbGVjdCIgYXJncz0idFNlbCI+CisgICAgCQlpZiAoIXRoaXMuZW5hYmxlZCkgeworICAgIAkJCXJldHVybjsKKyAgICAJCX0KKyAgICAJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJjbWRfYXBwbHlmb3JBViBvbnNlbGVjdCIsY2FudmFzLmlzbW9kZXJhdG9yLHRTZWwpOworICAgIAkJaWYgKGNhbnZhcy5pc21vZGVyYXRvcikgeworCQkJCS8vRG8gZGlyZWN0bHkgc2VuZCBjb25maXJtYXRpb24gdG8gc2hhcmUgQXVkaW8vVmlkZW8gdG8gU0VMRiEgc28gdGhhdCBhbGwgdXNlcnMgZ2V0CisJCQkJLy90aGUgbm90aWZpY2F0aW9uIGFuZCB0aGUgYnJvYWRjYXN0aW5nIEJpdCBpcyBzZXQgZm9yIHRoaXMgVXNlcgorCQkJCWNhbnZhcy50aGlzaGliLnNldEJyb2FkQ2FzdGluZ0ZsYWcucHVibGljU0lET2ZOZXdNb2RlcmF0b3IgPSBjYW52YXMucHVibGljU0lEOworCQkJCWNhbnZhcy50aGlzaGliLnNldEJyb2FkQ2FzdGluZ0ZsYWcuaXNBbGxvd2VkVG9Ccm9hZENhc3RBViA9IHRydWU7CisJCQkJY2FudmFzLnRoaXNoaWIuc2V0QnJvYWRDYXN0aW5nRmxhZy5kb0NhbGwoKTsKKwkJCX0gZWxzZSB7CisJCQkJLy9BcHBseSBmb3IgUmlnaHQgdG8gU2hhcmUgQXVkaW8vVmlkZW8KKwkJCQl2YXIgdERhdGUgPSBuZXcgRGF0ZSgpOworCQkJCWNhbnZhcy50aGlzaGliLnNlbmRNZXNzYWdlV2l0aENsaWVudC5zZW5kTWVzc2FnZSgiYXBwbHlGb3JBViIsdERhdGUuZ2V0VGltZSgpKTsKKwkJCX0KKyAgICAJPC9oYW5kbGVyPgorICAgIDwvYmFzZWNvbmZtZW51Y29tbWFuZD4KKyAgICAKKyAgICA8Y29uZm1lbnVjb21tYW5kIGlkPSJjbWRfY3JlYXRlUG9sbCIgdGlwTGFiZWxJZD0iMTQ4MyIgYWN0aW9uQ29tbWFuZD0iY3JlYXRlUG9sbCIgLz4KKyAgICA8Y29uZm1lbnVjb21tYW5kIGlkPSJjbWRfcG9sbFJlc3VsdHMiIHRpcExhYmVsSWQ9IjE0ODQiIGFjdGlvbkNvbW1hbmQ9InBvbGxSZXN1bHRzIiAvPgorICAgIDxjb25mbWVudWNvbW1hbmQgaWQ9ImNtZF9jaGVja1BvbGxWb3RlZCIgdGlwTGFiZWxJZD0iMTQ4NSIgYWN0aW9uQ29tbWFuZD0iY2hlY2tQb2xsVm90ZWQiIC8+CisgICAgPGNvbmZtZW51Y29tbWFuZCBpZD0iY21kX2ltcG9ydEZpbGUiIHRpcExhYmVsSWQ9IjE0NzkiIGFjdGlvbkNvbW1hbmQ9ImltcG9ydEZpbGUiIC8+CisgICAgPGNvbmZtZW51Y29tbWFuZCBpZD0iY21kX2VkaXRDYW1NaWNTZXR0aW5ncyIgYWN0aW9uQ29tbWFuZD0iZWRpdENhbU1pY1NldHRpbmdzIiB0aXBMYWJlbElkPSIxNDg2IiAvPiAKKyAgICA8Y29uZm1lbnVjb21tYW5kIGlkPSJjbWRfcXVpdCIgYWN0aW9uQ29tbWFuZD0icXVpdCIgdGlwTGFiZWxJZD0iMTQ4NyIgLz4KKyAgICA8Y29uZm1lbnVjb21tYW5kIGlkPSJjbWRfc2hvd1NpcERpYWxlciIgYWN0aW9uQ29tbWFuZD0ic2hvd1NpcERpYWxlciIgdGlwTGFiZWxJZD0iMTQ4OCIgLz4KKyAgICAKKyAgICA8Y29uZm1lbnVjb21tYW5kIGlkPSJjbWRfaW52aXRhdGlvbiIgYWN0aW9uQ29tbWFuZD0iaW52aXRhdGlvbiIgdGlwTGFiZWxJZD0iMTQ4OSIgLz4gCisgICAgPGNvbmZtZW51Y29tbWFuZCBpZD0iY21kX2VkaXRXaGl0ZWJvYXJkRGVmYXVsdCIgYWN0aW9uQ29tbWFuZD0iZWRpdFdoaXRlYm9hcmREZWZhdWx0IiB0aXBMYWJlbElkPSIxNDkwIiAvPiAKKyAgICAKKyAgICA8IS0tIAorICAgIDxjb25mbWVudWNvbW1hbmQgaWQ9ImNtZF9jb0Jyb3dzZXIiIGFjdGlvbkNvbW1hbmQ9ImJyb3dzZXJfb3BlbiIga2V5PSJbJ2NvbnRyb2wnLCdiJ10iLz4gCisgICAgIC0tPgorICAgCisgICAgPGNvbmZtZW51Y29tbWFuZCBpZD0iY21kX2V4cG9ydEZpbGVQTkciIG9uc2VsZWN0PSJjYW52YXMuZG9XaGl0ZWJvYXJkQWN0aW9ubWVudSgnZXhwb3J0RmlsZVBORycpIiB0aXBMYWJlbElkPSIxNDg5IiAvPgorICAgIDxjb25mbWVudWNvbW1hbmQgaWQ9ImNtZF9leHBvcnRGaWxlSlBHIiBvbnNlbGVjdD0iY2FudmFzLmRvV2hpdGVib2FyZEFjdGlvbm1lbnUoJ2V4cG9ydEZpbGVKUEcnKSIgdGlwTGFiZWxJZD0iMTQ4OSIgLz4KKyAgICA8Y29uZm1lbnVjb21tYW5kIGlkPSJjbWRfZXhwb3J0RmlsZVNWRyIgb25zZWxlY3Q9ImNhbnZhcy5kb1doaXRlYm9hcmRBY3Rpb25tZW51KCdleHBvcnRGaWxlU1ZHJykiIHRpcExhYmVsSWQ9IjE0ODkiIC8+CisgICAgPCEtLSAKKyAgICA8Y29uZm1lbnVjb21tYW5kIGlkPSJjbWRfZXhwb3J0RmlsZVBERiIgb25zZWxlY3Q9ImNhbnZhcy5kb1doaXRlYm9hcmRBY3Rpb25tZW51KCdleHBvcnRGaWxlUERGJykiIHRpcExhYmVsSWQ9IjE0ODkiIC8+CisgICAgPGNvbmZtZW51Y29tbWFuZCBpZD0iY21kX2V4cG9ydEZpbGVUSUYiIG9uc2VsZWN0PSJjYW52YXMuZG9XaGl0ZWJvYXJkQWN0aW9ubWVudSgnZXhwb3J0RmlsZVRJRicpIiB0aXBMYWJlbElkPSIxNDg5IiAvPgorICAgICAtLT4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9ImNvbG9yQXJyYXkiIHZhbHVlPSJudWxsIiAvPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iZ2V0Q29sb3JGb3JVc2VyIj4KKyAgICAJPCFbQ0RBVEFbCisgICAgCSAgIHZhciBjb2xvckFycmF5ID0gWzB4OTJFOEE0LDB4QzJGMUZGLDB4RkZGQ0FFLDB4RThDNzkyLDB4RkY4MDczLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDB4RThEQjg3LDB4QUZGRkI4LDB4QkVENEZGLDB4RTBCQkU4LDB4RkZCQkE1XTsKKyAgICAJICAgcmV0dXJuIGNvbG9yQXJyYXlbTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpKjEwKV07CisgICAgCV1dPgorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0icmVtb3RlTG9nV3JpdGUiIGFyZ3M9Im1lc3NhZ2UiPgorICAgIAlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZShtZXNzYWdlKTsKKyAgICAJdmFyIHJlbW90ZUxvZyA9IG5ldyBsei5kYXRhc2V0KCk7CisgICAgCXJlbW90ZUxvZy5zZXRRdWVyeVR5cGUoIlBPU1QiKTsKKyAgICAJcmVtb3RlTG9nLnNldEF0dHJpYnV0ZSgic3JjIiwgY2FudmFzLmdldFVybCgpICsgIi9yZW1vdGVsb2cudXBsb2FkIik7CisgICAgCXJlbW90ZUxvZy5zZXRRdWVyeVBhcmFtKCJtZXNzYWdlIiwgbWVzc2FnZSk7CisgICAgCXJlbW90ZUxvZy5kb1JlcXVlc3QoKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImdldEh0dHBIb3N0Ij4KKyAgIAk8IVtDREFUQVsKKyAgICAJaWYgKGNhbnZhcy5odHRwaG9zdGxvY2FsICE9IG51bGwgJiYgY2FudmFzLmh0dHBob3N0bG9jYWwubGVuZ3RoID4gMCkgeworCQkJcmV0dXJuIGNhbnZhcy5odHRwaG9zdGxvY2FsOworCQl9CisJCXJldHVybiBjYW52YXMucnRtcGhvc3Rsb2NhbDsKKwldXT4KKyAgICA8L21ldGhvZD4KKyAgICAgICAgCisJPG1ldGhvZCBuYW1lPSJnZXRVcmwiPgorCTwhW0NEQVRBWworCQlyZXR1cm4gY2FudmFzLnByb3RvY29sICsgJzovLycgKyBnZXRIdHRwSG9zdCgpCisJCQkrICc6JyArIGNhbnZhcy5yZWQ1aHR0cHBvcnQgKyBjYW52YXMuaHR0cFJvb3RLZXk7CisJXV0+CisJPC9tZXRob2Q+CisgICAgICAgIAorCTxtZXRob2QgbmFtZT0iZ2V0U2VydmljZXNVcmwiPgorCTwhW0NEQVRBWworCQlyZXR1cm4gZ2V0VXJsKCkgKyAnc2VydmljZXMvJzsKKwldXT4KKwk8L21ldGhvZD4KKworCTxtZXRob2QgbmFtZT0iZ2V0VGVzdGluZ1VybCI+CisJPCFbQ0RBVEFbCisJCXJldHVybiBnZXRVcmwoKSArICc/c3dmPW5ldHdvcmt0ZXN0aW5nJyArICgkZGVidWcgPyAnZGVidWcnIDogJycpICsgJy5zd2YxMC5zd2YnOworCV1dPgorCTwvbWV0aG9kPgorCisJPG1ldGhvZCBuYW1lPSJnZXRBcHBCYXNlVXJsIj4KKwk8IVtDREFUQVsKKwkJdmFyIHVybE9iamVjdCA9IGx6LkJyb3dzZXIuZ2V0QmFzZVVSTCgpOworCQkvL0lmIFBvcnQgaXMgTnVsbCBvciB1bmRlZmluaWVkIHVzZSBwb3J0IDgwCisJCXZhciBwb3J0ID0gKHVybE9iamVjdC5wb3J0ICE9IG51bGwgJiYgdXJsT2JqZWN0LnBvcnQgIT0gdW5kZWZpbmVkKSA/IHVybE9iamVjdC5wb3J0IDogODA7CisJCS8vaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZ2V0QmFzZVVybDo6IFt1cmxPYmplY3QsIHBvcnRdIiwgdXJsT2JqZWN0LCBwb3J0KTsKKwkJcmV0dXJuIHVybE9iamVjdC5wcm90b2NvbCArICI6Ly8iICsgdXJsT2JqZWN0Lmhvc3QgKyAocG9ydCAhPSA4MCA/ICI6IiArIHBvcnQgOiAiIikgKyB1cmxPYmplY3QucGF0aDs7CisJXV0+CisJPC9tZXRob2Q+CisKKwk8bWV0aG9kIG5hbWU9ImdldFNjcmVlblNoYXJpbmdVcmwiPgorCTwhW0NEQVRBWworCQl2YXIgb3JnYW5pc2F0aW9uX2lkID0gKGhpYi5jdXJyZW50ZG9tYWluT2JqICE9IG51bGwgJiYgaGliLmN1cnJlbnRkb21haW5PYmoub3JnYW5pc2F0aW9uX2lkICE9IG51bGwpCisJCQk/IGhpYi5jdXJyZW50ZG9tYWluT2JqLm9yZ2FuaXNhdGlvbl9pZCA6IDE7CisJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJtYWluTWV0aG9kczo6Z2V0U2NyZWVuU2hhcmluZ1VybCAiLCBoaWIudXNlcm9iamVjdCwgaGliLmN1cnJlbnRkb21haW5PYmopOworCQkKKwkJdmFyIGFwcEJhc2UgPSBjYW52YXMuZ2V0QXBwQmFzZVVybCgpOworCQl2YXIgZG93bmxvYWR1cmwgPSBhcHBCYXNlICsgJ3NjcmVlbi51cGxvYWQ/JworCQkJKydydG1waG9zdGxvY2FsPScgKyBjYW52YXMuZ2V0SHR0cEhvc3QoKQorCQkJKycmYmFzZXVybD0nICsgZXNjYXBlKGFwcEJhc2UpCisJCQkrJyZkb21haW49JyArIGhpYi5jb25mZXJlbmNlZG9tYWluCisJCQkrJyZvcmdhbml6YXRpb25faWQ9JyArIG9yZ2FuaXNhdGlvbl9pZAorCQkJKycmc2lkPScgKyBjYW52YXMuc2Vzc2lvbklkCisJCQkrJyZjb25uZWN0aW9uVHlwZT0nICsgY2FudmFzLnRoaXNoaWIuZ2V0UHJvdG9jb2woKQorCQkJKycmcG9ydD0nICsgY2FudmFzLnRoaXNoaWIuZ2V0UG9ydCgpCisJCQkrJyZwdWJsaWNTSUQ9JyArIGNhbnZhcy5wdWJsaWNTSUQKKwkJCSsnJmxhbmd1YWdlQXNTdHJpbmc9JyArIGhpYi51c2VybGFuZzsKKwkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm1haW5NZXRob2RzOjpnZXRTY3JlZW5TaGFyaW5nVXJsICIsIGRvd25sb2FkdXJsKTsgCisJCXJldHVybiBkb3dubG9hZHVybDsKKwldXT4KKwk8L21ldGhvZD4KKwkKKyAgICA8ZGF0YXNldCB0eXBlPSJodHRwIiBuYW1lPSJsYW5ndWFnZURhdGEiIHJlcXVlc3Q9ImZhbHNlIiAKKyAgICAgICAgc3JjPSIkeyBjYW52YXMuY3VycmVudGxhbmd1YWdlKycueG1sJyB9IiBwcm94aWVkPSJmYWxzZSI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgcGFyZW50LnBhcnNlTGFudWdhZ2VPYmplY3QodmFsdWUpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9kYXRhc2V0PgorCisgICAgPG1ldGhvZCBuYW1lPSJteWluaXQiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgY2FudmFzLm1lZGlhZXJyb3J0aW1lb3V0ID0gMzAwMDA7CisgICAgICAgIGNhbnZhcy5tZWRpYWxvYWR0aW1lb3V0ID0gMzAwMDA7CisgICAgICAgIAorICAgICAgICBpZigkZGVidWcpIERlYnVnLndyaXRlKCJtYWluLmx6eC9jb25maWcueG1sIG9uZGF0YSIsdGhpcyk7CisgICAgICAgIAorICAgICAgICAvL1NldCBDb25maWctdmFsdWVzIGJ5IGNvbmZpZy54bWwsIHNlZSBjb21tZW50cyBvbiBjb25maWcueG1sCisgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdydG1waG9zdGxvY2FsJyxjYW52YXMubXlDb25maWdTZXQuZ2V0UG9pbnRlcigpLnhwYXRoUXVlcnkoJ2NvbmZpZy9ydG1waG9zdGxvY2FsL3RleHQoKScpKTsgICAKKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3J0bXBwb3J0JyxOdW1iZXIoY2FudmFzLm15Q29uZmlnU2V0LmdldFBvaW50ZXIoKS54cGF0aFF1ZXJ5KCdjb25maWcvcnRtcHBvcnQvdGV4dCgpJykpKTsgIAorICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgncnRtcFR1bm5lbHBvcnQnLE51bWJlcihjYW52YXMubXlDb25maWdTZXQuZ2V0UG9pbnRlcigpLnhwYXRoUXVlcnkoJ2NvbmZpZy9ydG1wVHVubmVscG9ydC90ZXh0KCknKSkpOyAKKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3J0bXBzc2xwb3J0JyxOdW1iZXIoY2FudmFzLm15Q29uZmlnU2V0LmdldFBvaW50ZXIoKS54cGF0aFF1ZXJ5KCdjb25maWcvcnRtcHNzbHBvcnQvdGV4dCgpJykpKTsgCisgICAgICAgIAorICAgICAgICB2YXIgdXNlclNTTFN0cmluZyA9IGNhbnZhcy5teUNvbmZpZ1NldC5nZXRQb2ludGVyKCkueHBhdGhRdWVyeSgnY29uZmlnL3VzZVNTTC90ZXh0KCknKTsKKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInVzZXJTU0xTdHJpbmciLHVzZXJTU0xTdHJpbmcpCisgICAgICAgIGlmICh1c2VyU1NMU3RyaW5nID09ICJ5ZXMiKSB7CisgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgndXNlU1NMJyx0cnVlKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3JlZDVodHRwcG9ydCcsTnVtYmVyKGNhbnZhcy5teUNvbmZpZ1NldC5nZXRQb2ludGVyKCkueHBhdGhRdWVyeSgnY29uZmlnL3JlZDVodHRwcG9ydC90ZXh0KCknKSkpOworICAgICAgICAKKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2N1cnJlbnRhcHBuYW1lJyxjYW52YXMubXlDb25maWdTZXQuZ2V0UG9pbnRlcigpLnhwYXRoUXVlcnkoJ2NvbmZpZy9jdXJyZW50YXBwbmFtZS90ZXh0KCknKSk7ICAKKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2N1cnJlbnRhcHBuYW1ldXJsJyxjYW52YXMubXlDb25maWdTZXQuZ2V0UG9pbnRlcigpLnhwYXRoUXVlcnkoJ2NvbmZpZy9jdXJyZW50YXBwbmFtZXVybC90ZXh0KCknKSk7ICAKKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2N1cnJlbnRhcHBuYW1lYnVndXJsJyxjYW52YXMubXlDb25maWdTZXQuZ2V0UG9pbnRlcigpLnhwYXRoUXVlcnkoJ2NvbmZpZy9jdXJyZW50YXBwbmFtZWJ1Z3VybC90ZXh0KCknKSk7CisgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdsb3VkbmVzc0FjaXR2aWF0aW9uJyxjYW52YXMubXlDb25maWdTZXQuZ2V0UG9pbnRlcigpLnhwYXRoUXVlcnkoJ2NvbmZpZy9sb3VkbmVzc0FjaXR2aWF0aW9uL3RleHQoKScpKTsKKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3dlYkFwcFJvb3RLZXknLGNhbnZhcy5teUNvbmZpZ1NldC5nZXRQb2ludGVyKCkueHBhdGhRdWVyeSgnY29uZmlnL3dlYkFwcFJvb3RLZXkvdGV4dCgpJykpOworICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnc2hvd1dpbmRvd0VmZmVjdCcsY2FudmFzLm15Q29uZmlnU2V0LmdldFBvaW50ZXIoKS54cGF0aFF1ZXJ5KCdjb25maWcvc2hvd1dpbmRvd0VmZmVjdC90ZXh0KCknKSk7CisgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdmaXJzdGRheWlud2VlaycsY2FudmFzLm15Q29uZmlnU2V0LmdldFBvaW50ZXIoKS54cGF0aFF1ZXJ5KCdjb25maWcvZmlyc3RkYXlpbndlZWsvdGV4dCgpJykpOworICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnc2hvd1JlY29yZGluZycsY2FudmFzLm15Q29uZmlnU2V0LmdldFBvaW50ZXIoKS54cGF0aFF1ZXJ5KCdjb25maWcvc2hvd1JlY29yZGluZy90ZXh0KCknKSk7CisgICAgICAgIAorICAgICAgICAvL29sZCBtZW51YmFyIGlzIG5vdCBhY3RpdmUgYW55bW9yZQorICAgICAgICAvL3RoaXMuc2V0QXR0cmlidXRlKCdzaG93bW9kZXJuV2hpdGVCb2FyZCcsY2FudmFzLm15Q29uZmlnU2V0LmdldFBvaW50ZXIoKS54cGF0aFF1ZXJ5KCdjb25maWcvc2hvd21vZGVybldoaXRlQm9hcmQvdGV4dCgpJykpOworICAgICAgICAKKyAgICAgICAgLy9BdWRpby1WaWRlby1TZXR0aW5ncworICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnY29kZWNUeXBlJyxjYW52YXMubXlDb25maWdTZXQuZ2V0UG9pbnRlcigpLnhwYXRoUXVlcnkoJ2NvbmZpZy9jb2RlY1R5cGUvdGV4dCgpJykpOworICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnZnJhbWVzUGVyU2Vjb25kJyxOdW1iZXIoY2FudmFzLm15Q29uZmlnU2V0LmdldFBvaW50ZXIoKS54cGF0aFF1ZXJ5KCdjb25maWcvZnJhbWVzUGVyU2Vjb25kL3RleHQoKScpKSk7ICAKKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2JhbmR3aWR0aE5lZWRlZE5vcm1hbCcsTnVtYmVyKGNhbnZhcy5teUNvbmZpZ1NldC5nZXRQb2ludGVyKCkueHBhdGhRdWVyeSgnY29uZmlnL2JhbmR3aWR0aE5lZWRlZE5vcm1hbC90ZXh0KCknKSkpOyAgCisgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdiYW5kd2lkdGhOZWVkZWRCZXN0JyxOdW1iZXIoY2FudmFzLm15Q29uZmlnU2V0LmdldFBvaW50ZXIoKS54cGF0aFF1ZXJ5KCdjb25maWcvYmFuZHdpZHRoTmVlZGVkQmVzdC90ZXh0KCknKSkpOyAgCisgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdjYW1RdWFsaXR5Tm9ybWFsJyxOdW1iZXIoY2FudmFzLm15Q29uZmlnU2V0LmdldFBvaW50ZXIoKS54cGF0aFF1ZXJ5KCdjb25maWcvY2FtUXVhbGl0eU5vcm1hbC90ZXh0KCknKSkpOyAgCisgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdjYW1RdWFsaXR5QmVzdCcsTnVtYmVyKGNhbnZhcy5teUNvbmZpZ1NldC5nZXRQb2ludGVyKCkueHBhdGhRdWVyeSgnY29uZmlnL2NhbVF1YWxpdHlCZXN0L3RleHQoKScpKSk7ICAKKyAgICAgICAgCisgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdkZWZhdWx0V2hpdGVib2FyZFdpZHRoJyxOdW1iZXIoY2FudmFzLm15Q29uZmlnU2V0LmdldFBvaW50ZXIoKS54cGF0aFF1ZXJ5KCdjb25maWcvZGVmYXVsdFdoaXRlYm9hcmRXaWR0aC90ZXh0KCknKSkpOyAgCisgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdkZWZhdWx0V2hpdGVib2FyZEhlaWdodCcsTnVtYmVyKGNhbnZhcy5teUNvbmZpZ1NldC5nZXRQb2ludGVyKCkueHBhdGhRdWVyeSgnY29uZmlnL2RlZmF1bHRXaGl0ZWJvYXJkSGVpZ2h0L3RleHQoKScpKSk7ICAKKyAgICAgICAgCisgICAgICAgIAorICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnYWRtaW5Nb2R1bGVVc2VyJyxjYW52YXMubXlDb25maWdTZXQuZ2V0UG9pbnRlcigpLnhwYXRoUXVlcnkoJ2NvbmZpZy9hZG1pbk1vZHVsZVVzZXIvdGV4dCgpJykpOyAgCisgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdhZG1pbk1vZHVsZVJvb20nLGNhbnZhcy5teUNvbmZpZ1NldC5nZXRQb2ludGVyKCkueHBhdGhRdWVyeSgnY29uZmlnL2FkbWluTW9kdWxlUm9vbS90ZXh0KCknKSk7ICAKKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2FkbWluTW9kdWxlT3JnJyxjYW52YXMubXlDb25maWdTZXQuZ2V0UG9pbnRlcigpLnhwYXRoUXVlcnkoJ2NvbmZpZy9hZG1pbk1vZHVsZU9yZy90ZXh0KCknKSk7ICAKKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2FkbWluTW9kdWxlTGFuZ3VhZ2VzJyxjYW52YXMubXlDb25maWdTZXQuZ2V0UG9pbnRlcigpLnhwYXRoUXVlcnkoJ2NvbmZpZy9hZG1pbk1vZHVsZUxhbmd1YWdlcy90ZXh0KCknKSk7ICAKKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2FkbWluTW9kdWxlQ29ubmVjdGlvbnMnLGNhbnZhcy5teUNvbmZpZ1NldC5nZXRQb2ludGVyKCkueHBhdGhRdWVyeSgnY29uZmlnL2FkbWluTW9kdWxlQ29ubmVjdGlvbnMvdGV4dCgpJykpOyAgCisgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdhZG1pbk1vZHVsZUNvbmZpZ3VyYXRpb24nLGNhbnZhcy5teUNvbmZpZ1NldC5nZXRQb2ludGVyKCkueHBhdGhRdWVyeSgnY29uZmlnL2FkbWluTW9kdWxlQ29uZmlndXJhdGlvbi90ZXh0KCknKSk7ICAKKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2FkbWluTW9kdWxlQmFja3VwJyxjYW52YXMubXlDb25maWdTZXQuZ2V0UG9pbnRlcigpLnhwYXRoUXVlcnkoJ2NvbmZpZy9hZG1pbk1vZHVsZUJhY2t1cC90ZXh0KCknKSk7ICAKKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2FkbWluTW9kdWxlU2VydmVycycsY2FudmFzLm15Q29uZmlnU2V0LmdldFBvaW50ZXIoKS54cGF0aFF1ZXJ5KCdjb25maWcvYWRtaW5Nb2R1bGVTZXJ2ZXJzL3RleHQoKScpKTsgIAorICAgICAgICAKKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ21vZGVyYXRvck1vZHVsZVVzZXInLGNhbnZhcy5teUNvbmZpZ1NldC5nZXRQb2ludGVyKCkueHBhdGhRdWVyeSgnY29uZmlnL21vZGVyYXRvck1vZHVsZVVzZXIvdGV4dCgpJykpOyAgCisgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdtb2RlcmF0b3JNb2R1bGVSb29tJyxjYW52YXMubXlDb25maWdTZXQuZ2V0UG9pbnRlcigpLnhwYXRoUXVlcnkoJ2NvbmZpZy9tb2RlcmF0b3JNb2R1bGVSb29tL3RleHQoKScpKTsgIAorICAgICAgICAKKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2Rhc2hib2FyZE1vZHVsZVN0YXJ0U2NyZWVuJyxjYW52YXMubXlDb25maWdTZXQuZ2V0UG9pbnRlcigpLnhwYXRoUXVlcnkoJ2NvbmZpZy9kYXNoYm9hcmRNb2R1bGVTdGFydFNjcmVlbi90ZXh0KCknKSk7ICAKKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2Rhc2hib2FyZE1vZHVsZUNhbGVuZGFyJyxjYW52YXMubXlDb25maWdTZXQuZ2V0UG9pbnRlcigpLnhwYXRoUXVlcnkoJ2NvbmZpZy9kYXNoYm9hcmRNb2R1bGVDYWxlbmRhci90ZXh0KCknKSk7ICAKKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2NvbmZlcmVuY2VNb2R1bGVSb29tTGlzdCcsY2FudmFzLm15Q29uZmlnU2V0LmdldFBvaW50ZXIoKS54cGF0aFF1ZXJ5KCdjb25maWcvY29uZmVyZW5jZU1vZHVsZVJvb21MaXN0L3RleHQoKScpKTsgIAorICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnY29uZmVyZW5jZVJvb21Nb2R1bGUnLGNhbnZhcy5teUNvbmZpZ1NldC5nZXRQb2ludGVyKCkueHBhdGhRdWVyeSgnY29uZmlnL2NvbmZlcmVuY2VSb29tTW9kdWxlL3RleHQoKScpKTsgIAorICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgncmVzdHJpY3RlZFJvb21Nb2R1bGUnLGNhbnZhcy5teUNvbmZpZ1NldC5nZXRQb2ludGVyKCkueHBhdGhRdWVyeSgnY29uZmlnL3Jlc3RyaWN0ZWRSb29tTW9kdWxlL3RleHQoKScpKTsgIAorICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnaW50ZXJ2aWV3Um9vbU1vZHVsZScsY2FudmFzLm15Q29uZmlnU2V0LmdldFBvaW50ZXIoKS54cGF0aFF1ZXJ5KCdjb25maWcvaW50ZXJ2aWV3Um9vbU1vZHVsZS90ZXh0KCknKSk7ICAKKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3VzZXJTZXR0aW5nc01vZHVsZScsY2FudmFzLm15Q29uZmlnU2V0LmdldFBvaW50ZXIoKS54cGF0aFF1ZXJ5KCdjb25maWcvdXNlclNldHRpbmdzTW9kdWxlL3RleHQoKScpKTsgIAorICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgncmVjb3JkTW9kdWxlJyxjYW52YXMubXlDb25maWdTZXQuZ2V0UG9pbnRlcigpLnhwYXRoUXVlcnkoJ2NvbmZpZy9yZWNvcmRNb2R1bGUvdGV4dCgpJykpOworICAgICAgICAgIAorICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnaHR0cFJvb3RLZXknLGNhbnZhcy5teUNvbmZpZ1NldC5nZXRQb2ludGVyKCkueHBhdGhRdWVyeSgnY29uZmlnL2h0dHBSb290S2V5L3RleHQoKScpKTsKKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2h0dHBob3N0bG9jYWwnLGNhbnZhcy5teUNvbmZpZ1NldC5nZXRQb2ludGVyKCkueHBhdGhRdWVyeSgnY29uZmlnL2h0dHBob3N0bG9jYWwvdGV4dCgpJykpOworICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgncHJvdG9jb2wnLGNhbnZhcy5teUNvbmZpZ1NldC5nZXRQb2ludGVyKCkueHBhdGhRdWVyeSgnY29uZmlnL3Byb3RvY29sL3RleHQoKScpKTsgIAorICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgncHJveHlUeXBlJyxjYW52YXMubXlDb25maWdTZXQuZ2V0UG9pbnRlcigpLnhwYXRoUXVlcnkoJ2NvbmZpZy9wcm94eVR5cGUvdGV4dCgpJykpOworCisJCS8vc2V0IHVzZXIgY29sb3IKKwkJY2FudmFzLmN1cnJlbnR1c2VyY29sb3IgPSBjYW52YXMuZ2V0Q29sb3JGb3JVc2VyKCk7CisKKyAgICAgICAgdmFyIGxjX1NJRCA9IGx6LkJyb3dzZXIuZ2V0SW5pdEFyZygnbGNfU0lEJyk7CisgICAgICAgIAorICAgICAgICBpZigkZGVidWcpIERlYnVnLndyaXRlKCJsY19TSUQ6ICIsIGxjX1NJRCk7CisgICAgICAgIAorICAgICAgICBpZiAobGNfU0lEID09IHVuZGVmaW5lZCkgeworICAgICAgICAJbmV3IGx6LmVycm9yUG9wdXAoY2FudmFzLHsnZXJyb3InOidZb3UgYXJlIGxvYWRpbmcgdGhlIHdyb25nIFNXRiwgdGhlcmUgaXMgbm8gbHpfU0lEIGdpdmVuJ30pOworICAgICAgICAJcmV0dXJuOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAKKworICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnbGNfU0lEJywgbGNfU0lEKTsKKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3ZpZF9sY19uYW1lJywgdGhpcy5sY19TSUQgKyAiX192aWRlb0xDIik7CisgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdydG1wX2xjX25hbWUnLCB0aGlzLmxjX1NJRCArICJfX3J0bXBMQyIpOworICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgndmlkZW9Db21wX2xjX25hbWUnLCB0aGlzLmxjX1NJRCArICJfX3N0cmVhbUxDIik7CisgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCd2aWRlb0NvbXBfbGNfY2FsbGJhY2tfbmFtZScsIHRoaXMubGNfU0lEICsgIl9fc3RyZWFtTENfY2JhY2siKTsKKworICAgICAgICB2YXIgdmlkZW9Db21wX2xjID0gbmV3IExvY2FsQ29ubmVjdGlvbigpOworICAgICAgICB2aWRlb0NvbXBfbGMuY29ubmVjdCh0aGlzLnZpZGVvQ29tcF9sY19uYW1lKTsKKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3ZpZGVvQ29tcF9sYycsIHZpZGVvQ29tcF9sYyk7CisgICAgICAgIAorICAgICAgICB2YXIgdCA9IHRoaXM7CisgICAgCWNhbnZhcy52aWRlb0NvbXBfbGMucmVnRXhwUmVzdWx0ID0gZnVuY3Rpb24odElkLHRSZXN1bHQpIHsKKyAgICAgIAkJdC5yZWdFeHBSZXN1bHQodElkLHRSZXN1bHQpOworICAgICAgICB9CisgICAgICAgIGNhbnZhcy52aWRlb0NvbXBfbGMuZXhpdFJvb20gPSBmdW5jdGlvbihjb25maXJtKSB7CisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiY29uZmlybSBleGl0Um9vbToiLCBjb25maXJtKTsKKyAgICAgICAgICAgIGlmIChjb25maXJtKSB7CisgICAgICAgICAgICAgICAgY2FudmFzLmN1cnJlbnRCYXNlQ29uZmVyZW5jZVJvb20uX3NjcmVlblNoYXJpbmdBZGFwdGVyLmNsb3NlQWxsU2NyZWVuU2hhcmluZ3MoKTsKKyAgICAgICAgICAgICAgICBpZiAoY2FudmFzLmFwcG9pbnRtZW50Tm90aWZpY2F0aW9uUG9wVXAgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBjYW52YXMuYXBwb2ludG1lbnROb3RpZmljYXRpb25Qb3BVcC5kZXN0cm95KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhbnZhcy5kb0FjdGlvbm1lbnUoJ3F1aXQnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIAorICAgICAgICBtYWluQmFzZVRleHQuc2V0QXR0cmlidXRlKCd0ZXh0JyxjYW52YXMuY3VycmVudGFwcG5hbWUpOworICAgICAgICB2YXIgZWxlbVByZWZpeCA9ICJjb25maWcvYXBwZGlzcGxheS9kaXNwbGF5ZWxlbWVudCI7CisgICAgICAgIHZhciBjZmdEcCA9IGNhbnZhcy5teUNvbmZpZ1NldC5nZXRQb2ludGVyKCk7CisgICAgICAgIG1haW5CYXNlVGV4dC5zZXRBdHRyaWJ1dGUoJ3gnLCBjZmdEcC54cGF0aFF1ZXJ5KGVsZW1QcmVmaXggKyAiW0BuYW1lPSduYW1lJ10vQHgiKSk7CisgICAgICAgIG1haW5CYXNlVGV4dC5zZXRBdHRyaWJ1dGUoJ3knLCBjZmdEcC54cGF0aFF1ZXJ5KGVsZW1QcmVmaXggKyAiW0BuYW1lPSduYW1lJ10vQHkiKSk7CisgICAgICAgIG1haW5CYXNlVGV4dC5zZXRBdHRyaWJ1dGUoJ3Zpc2libGUnLCAidHJ1ZSIgPT0gY2ZnRHAueHBhdGhRdWVyeShlbGVtUHJlZml4ICsgIltAbmFtZT0nbmFtZSddL0BkaXNwbGF5IikpOworICAgICAgICBtYWluQmFzZVRleHQuc2V0U2hhZG93KCk7CisgICAgICAgIG1haW5CYXNlVGV4dExhYmVsLnNldEF0dHJpYnV0ZSgndGV4dCcsY2FudmFzLmN1cnJlbnRhcHBuYW1ldXJsKTsgIAorCQltYWluQXBwbG9nby5zZXRBdHRyaWJ1dGUoJ3NyYycsIGdldFRoZW1lSW1hZ2UoJ2xvZ29faW1hZ2UnKSk7CisgICAgICAgIG1haW5BcHBsb2dvLnNldEF0dHJpYnV0ZSgneCcsIGNmZ0RwLnhwYXRoUXVlcnkoZWxlbVByZWZpeCArICJbQG5hbWU9J2xvZ28nXS9AeCIpKTsKKyAgICAgICAgbWFpbkFwcGxvZ28uc2V0QXR0cmlidXRlKCd5JywgY2ZnRHAueHBhdGhRdWVyeShlbGVtUHJlZml4ICsgIltAbmFtZT0nbG9nbyddL0B5IikpOworICAgICAgICBtYWluQXBwbG9nby5zZXRBdHRyaWJ1dGUoJ3Zpc2libGUnLCAidHJ1ZSIgPT0gY2ZnRHAueHBhdGhRdWVyeShlbGVtUHJlZml4ICsgIltAbmFtZT0nbG9nbyddL0BkaXNwbGF5IikpOworICAgICAgICAKKyAgICAgICAgdmFyIGNsZWFuVXJsID0gX3VybDsKKyAgICAgICAgCisgICAgICAgIHZhciBoYXNQYXJhbXMgPSBfdXJsLmluZGV4T2YoIj8iKTsKKyAgICAgICAgaWYgKGhhc1BhcmFtcyAhPSAtMSkgeworICAgICAgICAgICAgY2xlYW5VcmwgPSBfdXJsLnN1YnN0cigwLGhhc1BhcmFtcy0xKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIl91cmwgIixfdXJsLGNsZWFuVXJsKTsKKyAgICAgICAgdmFyIGRvdWJsZVNsYXNoID0gY2xlYW5VcmwuaW5kZXhPZigiLy8iKTsKKyAgICAgICAgdmFyIGlzTm90UG9ydDgwID0gY2xlYW5VcmwuaW5kZXhPZigiOiIsIGRvdWJsZVNsYXNoKzIpOworICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiaXNOb3RQb3J0ODA6ICIsaXNOb3RQb3J0ODAsZG91YmxlU2xhc2gpOworICAgICAgICBpZiAoaXNOb3RQb3J0ODAhPS0xKXsKKyAgICAgICAgICAgIC8vRGVidWcud3JpdGUoImlzTm90UG9ydDgwOiAiLGRvdWJsZVNsYXNoKzIsIF91cmwuaW5kZXhPZigiOiIsIGRvdWJsZVNsYXNoKzIpLWRvdWJsZVNsYXNoLTIpOworICAgICAgICAgICAgdmFyIHNlcnZlciA9IGNsZWFuVXJsLnN1YnN0cihkb3VibGVTbGFzaCsyLCBfdXJsLmluZGV4T2YoIjoiLCBkb3VibGVTbGFzaCsyKS1kb3VibGVTbGFzaC0yKTsgCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB2YXIgc2VydmVyID0gY2xlYW5Vcmwuc3Vic3RyKGRvdWJsZVNsYXNoKzIsIF91cmwuaW5kZXhPZigiLyIsIGRvdWJsZVNsYXNoKzIpLWRvdWJsZVNsYXNoLTIpOyAKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInRoaXMgemllbG5yOiAiLHRoaXMsc2VydmVyKTsKKyAgICAgICAgCisgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdydG1waG9zdCcsc2VydmVyKTsKKyAgICAKKyAgICAgICAgaWYgKHRoaXMucnRtcGhvc3Rsb2NhbC5sZW5ndGg9PTApeworICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3J0bXBob3N0bG9jYWwnLHNlcnZlcik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vQ2hlY2sgZm9yIEludml0YXRpb24KKyAgICAgICAgdmFyIGludml0YXRpb25IYXNoID0gbHouQnJvd3Nlci5nZXRJbml0QXJnKCdpbnZpdGF0aW9uSGFzaCcpOworICAgICAgICAKKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcuaW5mbygiIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAtMSAiKTsKKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcuaW5mbygiaW52aXRhdGlvbkhhc2ggOjogIixpbnZpdGF0aW9uSGFzaCk7CisgICAgICAgIAorICAgICAgICBpZiAoaW52aXRhdGlvbkhhc2ggIT0gdW5kZWZpbmVkKXsKKyAgICAgICAgICAgIGNhbnZhcy5pc2luaXRSb29tRGlyZWN0ID0gdHJ1ZTsKKyAgICAgICAgICAgIGNhbnZhcy5pbnZpdGF0aW9uSGFzaCA9IGludml0YXRpb25IYXNoOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2YXIgc2VjdXJlSGFzaCA9IGx6LkJyb3dzZXIuZ2V0SW5pdEFyZygnc2VjdXJlSGFzaCcpOworICAgICAgICBpZiAoc2VjdXJlSGFzaCAhPSB1bmRlZmluZWQpeworICAgICAgICAgICAgY2FudmFzLnNlY3VyZVJlbW90ZVVzZXJMb2dpbiA9IHRydWU7CisgICAgICAgICAgICBjYW52YXMuc2VjdXJlSGFzaCA9IHNlY3VyZUhhc2g7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmICgkZGVidWcpIERlYnVnLmluZm8oIiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgLTIgIik7CisgICAgICAgIAorICAgICAgICAvL3NpZD1mZTllYTU1Mjg0ZTBiMjM5OTFiMWMxMDg5YjJjOGY2NCZyb29taWQ9MQorICAgICAgICB2YXIgc2lkID0gbHouQnJvd3Nlci5nZXRJbml0QXJnKCdzaWQnKTsKKyAgICAgICAgdmFyIGluaXRyb29taWQgPSBsei5Ccm93c2VyLmdldEluaXRBcmcoJ3Jvb21pZCcpOworICAgICAgICBpZiAoc2lkICE9IHVuZGVmaW5lZCAmJiBpbml0cm9vbWlkICE9IHVuZGVmaW5lZCl7CisgICAgICAgICAgICBjYW52YXMucmVtb3RlVXNlckxvZ2luID0gdHJ1ZTsKKyAgICAgICAgICAgIGNhbnZhcy5pbml0cm9vbWlkID0gaW5pdHJvb21pZDsKKyAgICAgICAgICAgIGNhbnZhcy5yZW1vdGVVc2VyU2lkID0gc2lkOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2YXIgZGlyZWN0Um9vbUlkID0gbHouQnJvd3Nlci5nZXRJbml0QXJnKCdkaXJlY3RSb29tSWQnKTsKKyAgICAgICAgaWYgKGRpcmVjdFJvb21JZCAhPSB1bmRlZmluZWQpIHsKKyAgICAgICAgICAgIGNhbnZhcy5kaXJlY3RVc2VyTG9naW4gPSB0cnVlOworICAgICAgICAgICAgY2FudmFzLmRpcmVjdFJvb21JZCA9IGRpcmVjdFJvb21JZDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdmFyIGxhbmd1YWdlID0gbHouQnJvd3Nlci5nZXRJbml0QXJnKCdsYW5ndWFnZScpOworICAgICAgICBpZiAobGFuZ3VhZ2UgIT0gdW5kZWZpbmVkKSB7CisgICAgICAgICAgICBjYW52YXMubGFuZ3VhZ2VfaWQgPSBOdW1iZXIobGFuZ3VhZ2UpOworICAgICAgICB9CisgICAgCisgICAgICAgIC8vY2hlY2sgZm9yIHJlc2V0IHBhc3N3b3JkCisgICAgICAgIHZhciBoYXNoID0gbHouQnJvd3Nlci5nZXRJbml0QXJnKCdoYXNoJyk7CisgICAgICAgIGlmIChoYXNoIT11bmRlZmluZWQpeworICAgICAgICAgICAgY2FudmFzLmlzUmVzZXRVc2VybmFtZSA9IHRydWU7CisgICAgICAgICAgICBjYW52YXMucmVzZXRIYXNoID0gaGFzaDsgICAgICAgIAorICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2YXIgY3VzZXJJdGVtID0gbHouQnJvd3Nlci5nZXRJbml0QXJnKCdjdXNlcicpOworICAgICAgICBpZiAoY3VzZXJJdGVtIT11bmRlZmluZWQpeworICAgICAgICAgICAgY2FudmFzLmN1c2VyID0gY3VzZXJJdGVtOyAgCisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vTG9va3VwIGFkZGl0aW9uYWwgYWN0aW9ucworICAgICAgICAgICAgdmFyIHRBY2NlcHQgPSBsei5Ccm93c2VyLmdldEluaXRBcmcoJ3RBY2NlcHQnKTsKKyAgICAgICAgICAgIGlmICh0QWNjZXB0ICE9IHVuZGVmaW5lZCkgeworICAgICAgICAgICAgICAgIGNhbnZhcy5jdXNlclN0YXR1cyA9IHRBY2NlcHQ7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGNhbnZhcy5jdXNlclN0YXR1cyA9ICJub25lIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIAorICAgICAgICB2YXIgbW9vZGxlUm9vbSA9IGx6LkJyb3dzZXIuZ2V0SW5pdEFyZygnbW9vZGxlUm9vbScpOworICAgICAgICB2YXIgYmVjb21lbW9kZXJhdG9yID0gbHouQnJvd3Nlci5nZXRJbml0QXJnKCdiZWNvbWVtb2RlcmF0b3InKTsKKyAgICAgICAgCisgICAgICAgIGlmIChiZWNvbWVtb2RlcmF0b3IgIT0gdW5kZWZpbmVkKSB7CisgICAgICAgICAgICBpZiAoYmVjb21lbW9kZXJhdG9yID09ICIyIil7CisgICAgICAgICAgICAgICAgY2FudmFzLmJlY29tZW1vZGVyYXRvciA9IHRydWU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGNhbnZhcy5iZWNvbWVtb2RlcmF0b3IgPSBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKG1vb2RsZVJvb20gIT0gdW5kZWZpbmVkKXsKKyAgICAgICAgICAgIGNhbnZhcy5pc01vb2RsZVJvb20gPSB0cnVlOworICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgbW9vZGxlV3d3Um9vdCA9IGx6LkJyb3dzZXIuZ2V0SW5pdEFyZygnd3d3cm9vdCcpOworICAgICAgICAgICAgdmFyIG1vb2RsZVVzZXJJZCA9IGx6LkJyb3dzZXIuZ2V0SW5pdEFyZygndXNlcl9pZCcpOworICAgICAgICAgICAgdmFyIG1vb2RsZVBpY3R1cmUgPSBsei5Ccm93c2VyLmdldEluaXRBcmcoJ3BpY3R1cmUnKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG1vb2RsZVd3d1Jvb3QgIT0gdW5kZWZpbmVkKSB7CisgICAgICAgICAgICAgICAgY2FudmFzLm1vb2RsZVd3d1Jvb3QgPSBtb29kbGVXd3dSb290OworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1vb2RsZVVzZXJJZCAhPSB1bmRlZmluZWQpIHsKKyAgICAgICAgICAgICAgICBjYW52YXMubW9vZGxlVXNlcklkID0gTnVtYmVyKG1vb2RsZVVzZXJJZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobW9vZGxlUGljdHVyZSAhPSB1bmRlZmluZWQpIHsKKyAgICAgICAgICAgICAgICBjYW52YXMubW9vZGxlUGljdHVyZSA9IG1vb2RsZVBpY3R1cmU7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHZhciBzY29wZVJvb21JZCA9IGx6LkJyb3dzZXIuZ2V0SW5pdEFyZygnc2NvcGVSb29tSWQnKTsKKyAgICAgICAgaWYgKHNjb3BlUm9vbUlkICE9IHVuZGVmaW5lZCl7CisgICAgICAgICAgICBoaWIudXNlclNjb3BlID0gc2NvcGVSb29tSWQ7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHRoaXMuc2V0QmFzZUNvbG9ycygpOworICAgIAorICAgICAgICAvL0RlYnVnLndyaXRlKCJydG1waG9zdGxvY2FsLHJ0bXBob3N0OiAiLGNhbnZhcy5ydG1waG9zdGxvY2FsLGNhbnZhcy5ydG1waG9zdCk7IAorICAgICAgICB2YXIgc3JjID0gaGliLmdldFVybCgpOworICAgICAgICAKKyAgICAgICAgY2FudmFzLnRoaXNoaWIuc2V0QXR0cmlidXRlKCdzcmMnLHNyYyk7CisgICAgICAgIGNhbnZhcy50aGlzaGliLmxvYWRlclZhciA9IG5ldyBsei5hdXRvTG9hZGVyKGNhbnZhcyk7CisgICAgICAgIGNhbnZhcy50aGlzaGliLmxvYWRlclZhci5fc3JjLnNldEF0dHJpYnV0ZSgndGV4dCcsc3JjKTsKKyAgICAgICAgY2FudmFzLnRoaXNoaWIuY29ubmVjdCgpOworICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImdldExhYmVsTmFtZSIgYXJncz0iaWQiPgorICAgICAgICAvL2lmKCRkZWJ1ZykgRGVidWcud3JpdGUoIm1haW4ubHp4L2dldExhYmVsTmFtZSgpIixpZCk7CisgICAgICAgIHJldHVybiBnZXRMYWJlbFRhZyhpZCk7CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPCEtLQorICAgICAgICBleHBvcnRGaWxlUE5HIGV4cG9ydEZpbGVKUEcgZXhwb3J0RmlsZVBERiBleHBvcnRGaWxlU1ZHIGV4cG9ydEZpbGVUSUYKKyAgICAgLS0+CisgICAgIAorICAgIDxtZXRob2QgbmFtZT0iZG9XaGl0ZWJvYXJkQWN0aW9ubWVudSIgYXJncz0iYWN0aW9uIj4KKyAgICAgICAgaWYgKGFjdGlvbiA9PSAiZXhwb3J0RmlsZVBORyIpIHsKKyAgICAgICAgICAgIGNhbnZhcy5fZHJhd2FyZWEuY29uZmlybVNhdmVBc0ltYWdlVHlwZUV4cG9ydCgiaW1hZ2UiLCJwbmciKTsKKyAgICAgICAgfSBlbHNlIGlmIChhY3Rpb24gPT0gImV4cG9ydEZpbGVKUEciKSB7CisgICAgICAgICAgICBjYW52YXMuX2RyYXdhcmVhLmNvbmZpcm1TYXZlQXNJbWFnZVR5cGVFeHBvcnQoImltYWdlIiwianBnIik7CisgICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uID09ICJleHBvcnRGaWxlUERGIikgeworICAgICAgICAgICAgY2FudmFzLl9kcmF3YXJlYS5jb25maXJtU2F2ZUFzSW1hZ2VUeXBlRXhwb3J0KCJpbWFnZSIsInBkZiIpOworICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbiA9PSAiZXhwb3J0RmlsZVNWRyIpIHsKKyAgICAgICAgICAgIGNhbnZhcy5fZHJhd2FyZWEuY29uZmlybVNhdmVBc0ltYWdlRXhwb3J0KCJpbWFnZSIpOworICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbiA9PSAiZXhwb3J0RmlsZVRJRiIpIHsKKyAgICAgICAgICAgIGNhbnZhcy5fZHJhd2FyZWEuY29uZmlybVNhdmVBc0ltYWdlVHlwZUV4cG9ydCgiaW1hZ2UiLCJ0aWYiKTsKKyAgICAgICAgfQorICAgIDwvbWV0aG9kPgorCisJPCEtLS0KKwkJQWN0aW9ucyBjb25uZWN0ZWQgdG8gdGhlIHNob3J0Y3V0cworCSAtLT4KKyAgICA8bWV0aG9kIG5hbWU9ImRvQWN0aW9ubWVudSIgYXJncz0ic3RyaW5nU3ViIj4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICBpZigkZGVidWcpIERlYnVnLndyaXRlKCJkb0FjdGlvbm1lbnU6ICIsc3RyaW5nU3ViKTsKKyAgICAgICAgICAgIGlmIChjYW52YXMuX2NvbmZlcmVuY2VtZW51LnZpc2liaWxpdHkgPT0gJ3Zpc2libGUnKXsKKyAgICAgICAgICAgIAkgaWYgKHN0cmluZ1N1YiA9PSAiaW52aXRhdGlvbiIpIHsKKwkJCSAgICAgICAgbmV3IGx6Lmludml0ZU1haW5XaW5kb3coY2FudmFzLm1haW5fY29udGVudC5fY29udGVudC5pbm5lcik7CisJCQkgICAgfSBlbHNlIGlmIChzdHJpbmdTdWI9PSdlZGl0V2hpdGVib2FyZERlZmF1bHQnKSB7CisgICAgICAgICAgICAgICAgICAgIG5ldyBsei5lZGl0V2hpdGVib2FyZERlZmF1bHQoY2FudmFzLm1haW5fY29udGVudC5fY29udGVudC5pbm5lcik7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdHJpbmdTdWI9PSdjcmVhdGVQb2xsJykgeworICAgICAgICAgICAgICAgICAgICBuZXcgbHouY3JlYXRlUG9sbFdpbihjYW52YXMubWFpbl9jb250ZW50Ll9jb250ZW50LmlubmVyKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN0cmluZ1N1Yj09J3BvbGxSZXN1bHRzJykgeworICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFZvdGVzLmRvQ2FsbCgpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RyaW5nU3ViPT0nY2hlY2tQb2xsVm90ZWQnKSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tIYXNWb3RlZC5kb0NhbGwoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHN0cmluZ1N1Yj09J2ltcG9ydEZpbGUnKSB7CisgICAgICAgICAgICAgICAgICAgIG5ldyBsei51cGxvYWRXaW5kb3dFeHBsb3JlcihjYW52YXMubWFpbl9jb250ZW50Ll9jb250ZW50LmlubmVyLHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OjYwLHVwbG9hZG1vZHVsZTpjYW52YXMudXBsb2FkbW9kdWxlaW1nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudEZvbGRlcklkOjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNPd25lcjpmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlRXhwbG9yZXJSZWY6bnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc09ubHlJbWFnZTp0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZsZXROYW1lOidmaWxlLnVwbG9hZCcKKyAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RyaW5nU3ViPT0nYXBwbHlGb3JNb2QnKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLmluZm8oIkFwcGx5IEZvciBNb2QgdGhyb3VnaCBkb0FjdGlvbm1lbnUiKTsKKyAgICAgICAgICAgICAgICAgICAgLy9uZXcgbHouYXBwbHlGb3JNb2RlcmF0aW9uKGNhbnZhcy5tYWluX2NvbnRlbnQuX2NvbnRlbnQuaW5uZXIpOworICAgICAgICAgICAgICAgICAgICBjYW52YXMudGhpc2hpYi5hcHBseUZvck1vZGVyYXRpb24uZG9DYWxsKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdHJpbmdTdWI9PSdlZGl0Q2FtTWljU2V0dGluZ3MnKSB7CisgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5fdmlkZW9jb250YWluZXIuX3ZpZGVvdmlld2NvbnRlbnQuY2hhbmdlRGV2aWNlKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzdHJpbmdTdWI9PSdzaG93U2lwRGlhbGVyJykgeworICAgICAgICAgICAgICAgICAgICBuZXcgbHouc2lwRGlhbGVyKGNhbnZhcy5tYWluX2NvbnRlbnQuX2NvbnRlbnQuaW5uZXIpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoc3RyaW5nU3ViPT0ncXVpdCcpIHsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIHF1aWNrbGlua0FjdCgnY29uZmVyZW5jZU1vZHVsZVJvb21MaXN0JykKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYoIHN0cmluZ1N1YiA9PSAiYnJvd3Nlcl9vcGVuIiApeworICAgICAgICAgICAgICAgICAgICB2YXIgYnJvd3NlclBhbmVsV2lkdGggID0gY2FudmFzLmJyb3dzZXJQYW5lbFdpZHRoOworICAgICAgICAgICAgICAgICAgICB2YXIgYnJvd3NlclBhbmVsSGVpZ2h0ID0gY2FudmFzLmJyb3dzZXJQYW5lbEhlaWdodDsKKworICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSggImlzIGJyb3dzZXJbb3Blbl0gPyAiLCBjYW52YXMubWFpbl9jb250ZW50Ll9jb250ZW50LmlubmVyLmNvbmZlcmVuY2VCcm93c2VyICk7CisgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCAiaXMgYnJvd3Nlclticm93c2VyUGFuZWxXaWR0aF0gPyAiLCBicm93c2VyUGFuZWxXaWR0aCApOworICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSggImlzIGJyb3dzZXJbYnJvd3NlclBhbmVsSGVpZ2h0XSA/ICIsIGJyb3dzZXJQYW5lbEhlaWdodCApOworCisgICAgICAgICAgICAgICAgICAgIGlmKCAhY2FudmFzLmNvbmZlcmVuY2VCcm93c2VySXNpbml0ZWQgKXsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBsei5jb25mZXJlbmNlQnJvd3NlciggY2FudmFzLm1haW5fY29udGVudC5fY29udGVudC5pbm5lcix7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOidjb25mZXJlbmNlQnJvd3NlcicseTozMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOmNhbnZhcy53aWR0aC0yMjAsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OmNhbnZhcy5oZWlnaHQtMTAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6YnJvd3NlclBhbmVsV2lkdGgsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OmJyb3dzZXJQYW5lbEhlaWdodAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNleworICAgICAgICAgICAgICAgICAgICB3aXRoKCBjYW52YXMubWFpbl9jb250ZW50Ll9jb250ZW50LmlubmVyICl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmVyZW5jZUJyb3dzZXIuaHRtbHZpZXdlci5zZXRWaXNpYmxlKCB0cnVlICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmVyZW5jZUJyb3dzZXIuc2V0VmlzaWJsZSggdHJ1ZSApOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgIH0gZWxzZSBpZiggc3RyaW5nU3ViID09ICJicm93c2VyX2Nsb3NlIiApeworICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCAiaXMgYnJvd3NlcltjbG9zZV0gPyAiLCBjYW52YXMubWFpbl9jb250ZW50Ll9jb250ZW50LmlubmVyLmNvbmZlcmVuY2VCcm93c2VyICk7CisgICAgICAgICAgICAgICAgd2l0aCggY2FudmFzLm1haW5fY29udGVudC5fY29udGVudC5pbm5lciApeworICAgICAgICAgICAgICAgICAgICBpZiggY29uZmVyZW5jZUJyb3dzZXIgICE9IHVuZGVmaW5lZCApeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZlcmVuY2VCcm93c2VyLmh0bWx2aWV3ZXIuc2V0VmlzaWJsZSggZmFsc2UgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25mZXJlbmNlQnJvd3Nlci5zZXRWaXNpYmxlKCBmYWxzZSApOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+IAorICAgIAorICAgIDxtZXRob2QgbmFtZT0ic3RhcnRCcm93c2VyIiBhcmdzPSJvYmpNZXNzYWdlIj4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICBpZiggIWNhbnZhcy5jb25mZXJlbmNlQnJvd3NlcklzaW5pdGVkICl7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSggImlmIHRoaXMiICk7CisgICAgICAgICAgICAgICAgbmV3IGx6LmNvbmZlcmVuY2VCcm93c2VyKGNhbnZhcy5tYWluX2NvbnRlbnQuX2NvbnRlbnQuaW5uZXIseworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTonY29uZmVyZW5jZUJyb3dzZXInLHk6MzAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDpjYW52YXMud2lkdGgtMjIwLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDpjYW52YXMuaGVpZ2h0LTEwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRlZEJ5VXNlcjpmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaXRVUkw6b2JqTWVzc2FnZVsxXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSBlbHNle0RlYnVnLndyaXRlKCAiZWxzZSB0aGlzIiApOworICAgICAgICAgICAgICAgIHdpdGgoIGNhbnZhcy5tYWluX2NvbnRlbnQuX2NvbnRlbnQuaW5uZXIgKXsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZlcmVuY2VCcm93c2VyLmh0bWx2aWV3ZXIuc2V0VmlzaWJsZSggdHJ1ZSApOworICAgICAgICAgICAgICAgICAgICAgICAgY29uZmVyZW5jZUJyb3dzZXIuc2V0VmlzaWJsZSggdHJ1ZSApOworICAgICAgICAgICAgICAgICAgICAgICAgY29uZmVyZW5jZUJyb3dzZXIubmV3QnJvd3NlclVSTChvYmpNZXNzYWdlWzFdKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPiAgIAorICAgIAorICAgIDxtZXRob2QgbmFtZT0iY2xvc2VCcm93c2VyIiBhcmdzPSJvYmpNZXNzYWdlIj4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICBpZiggY2FudmFzLmNvbmZlcmVuY2VCcm93c2VySXNpbml0ZWQgKXsKKyAgICAgICAgICAgICAgICB3aXRoKCBjYW52YXMubWFpbl9jb250ZW50Ll9jb250ZW50LmlubmVyICl7CisgICAgICAgICAgICAgICAgICAgICAgICBjb25mZXJlbmNlQnJvd3Nlci5jbG9zZSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iZ2V0Vm90ZXMiIGZ1bmNuYW1lPSJwb2xsc2VydmljZS5nZXRWb3RlcyIgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICBuZXcgbHoucmVzdWx0UG9sbFdpbihjYW52YXMubWFpbl9jb250ZW50Ll9jb250ZW50LmlubmVyLCB7cm9vbVBvbGw6IHZhbHVlfSk7CisgICAgICAgIDwvaGFuZGxlcj4gICAKKyAgICA8L25ldFJlbW90ZUNhbGxIaWI+ICAKKyAgICAgICAgCisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iY2hlY2tIYXNWb3RlZCIgZnVuY25hbWU9InBvbGxzZXJ2aWNlLmNoZWNrSGFzVm90ZWQiIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiA+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlPT0xKXsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5nZXRQb2xsLmRvQ2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWU9PS0xKXsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBsei5tZXNzYWdlV2luKGNhbnZhcy5tYWluX2NvbnRlbnQuX2NvbnRlbnQuaW5uZXIse2xhYmVsaWRlcnJvcjozMX0pOworICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWU9PS0yKXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgbHoubWVzc2FnZVdpbihjYW52YXMubWFpbl9jb250ZW50Ll9jb250ZW50LmlubmVyLHtsYWJlbGlkZXJyb3I6NDF9KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPiAgIAorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4gCisgICAgCisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iZ2V0UG9sbCIgZnVuY25hbWU9InBvbGxzZXJ2aWNlLmdldFBvbGwiIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiA+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgaWYgKHZhbHVlIT1udWxsKXsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIjo6IGdldFBvbGw6ICIsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgIG5ldyBsei5hbnN3ZXJQb2xsKAorICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzLm1haW5fY29udGVudC5fY29udGVudC5pbm5lcgorICAgICAgICAgICAgICAgICAgICAgICAgLCB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZEJ5OiB2YWx1ZS5jcmVhdGVkQnkubG9naW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIHBvbGxEYXRlOiB2YWx1ZS5jcmVhdGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCBwb2xsUXVlc3Rpb246IHZhbHVlLnBvbGxRdWVzdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICwgcG9sbFR5cGVJZDogdmFsdWUucG9sbFR5cGUucG9sbFR5cGVzSWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAsIHJvb21Qb2xsQW5zd2VyTGlzdDogdmFsdWUucm9vbVBvbGxBbnN3ZXJMaXN0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCByb29tUG9sbElkOiB2YWx1ZS5yb29tUG9sbElkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLCByb29tU2NvcGVOYW1lOiB2YWx1ZS5yb29tU2NvcGVOYW1lCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAKKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InNldFJvb21WYWx1ZXMiIGFyZ3M9InJvb21UeXBlSWQscm9vbUlkLHJvb21PYmoiPgorICAgIAorICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53YXJuKCJzZXRSb29tVmFsdWVzICIscm9vbVR5cGVJZCxyb29tSWQscm9vbU9iaik7CisgICAgICAgIGlmIChyb29tVHlwZUlkPT0xKXsKKyAgICAgICAgICAgICAgICBjYW52YXMuaXNDb25mZXJlbmNlID0gdHJ1ZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgY2FudmFzLmlzQ29uZmVyZW5jZSA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvL3RoaXMgaXMgbmVlZGVkIGNhdXNlIGluIHRoZSBycGMtbWV0aG9kICpnZXRDdXJyZW50TW9kZXJhdG9yTGlzdCogd2UgY2hlY2sgaWYgaXRzIHJvb210eXBlX2lkID09IDMKKyAgICAgICAgLy9hbmQgaWYgcm9vbXR5cGVfaWQgPT0gMyB3ZSB3aWxsIG5vdCBzaG93IGFueSAqVGhlcmUgaXMgbm8gTW9kZXJhdG9yKiBXYXJuaW5nIERpYWxvZworICAgICAgICBjYW52YXMuY3VycmVudFJvb21PYmplY3QgPSByb29tT2JqOworICAgICAgICAKKyAgICAgICAgaGliLmN1cnJlbnRyb29taWQgPSByb29tSWQ7CisgICAgICAgIGlmIChyb29tT2JqIT1udWxsKXsKKyAgICAgICAgICAgIGlmIChyb29tVHlwZUlkPT0xKXsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBuZXcgbHoudGVzdFNldHVwKGNhbnZhcyx7aXNEaXJlY3RMaW5rOnRydWUscm9vbUNsYXNzTmFtZTpjYW52YXMuY29uZmVyZW5jZVJvb21Nb2R1bGUscm9vbU9iajpyb29tT2JqfSk7CisgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfSBlbHNlIGlmIChyb29tVHlwZUlkPT0yKXsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBuZXcgbHoudGVzdFNldHVwKGNhbnZhcyx7aXNEaXJlY3RMaW5rOnRydWUscm9vbUNsYXNzTmFtZTpjYW52YXMucmVzdHJpY3RlZFJvb21Nb2R1bGUscm9vbU9iajpyb29tT2JqfSk7CisgICAgICAgICAgICAgICAgbmV3IGx6LmxhYmVsZXJyb3JQb3B1cChjYW52YXMse2Vycm9yOidObyBSb29tVHlwZSBjdXJyZW50bHkgYXZhaWxhYmxlIGZvciByb29tVHlwZUlkIDInfSk7CisgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfSBlbHNlIGlmIChyb29tVHlwZUlkPT0zKXsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBuZXcgbHoudGVzdFNldHVwKGNhbnZhcyx7aXNEaXJlY3RMaW5rOnRydWUscm9vbUNsYXNzTmFtZTpjYW52YXMucmVzdHJpY3RlZFJvb21Nb2R1bGUscm9vbU9iajpyb29tT2JqfSk7CisgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfSBlbHNlIGlmIChyb29tVHlwZUlkPT00KXsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBuZXcgbHoudGVzdFNldHVwKGNhbnZhcyx7aXNEaXJlY3RMaW5rOnRydWUscm9vbUNsYXNzTmFtZTpjYW52YXMuaW50ZXJ2aWV3Um9vbU1vZHVsZSxyb29tT2JqOnJvb21PYmp9KTsKKyAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB9IGVsc2UgaWYgKHJvb21UeXBlSWQ9PTUpeworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG5ldyBsei50ZXN0U2V0dXAoY2FudmFzLHtpc0RpcmVjdExpbms6dHJ1ZSxyb29tQ2xhc3NOYW1lOmNhbnZhcy5jdXN0b21Sb29tTW9kdWxlLHJvb21PYmo6cm9vbU9ian0pOworICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0gCisgICAgICAgIH0KKyAgICA8L21ldGhvZD4KKyAgICAKKwk8bWV0aG9kIG5hbWU9InJvb21DbG9zZWQiPgorCSAgICA8IVtDREFUQVsKKwkgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJjYW52YXMuY3VycmVudFJvb21PYmplY3QgIixjYW52YXMuY3VycmVudFJvb21PYmplY3QpOworCSAgICAgICAgbmV3IGx6LnJlZGlyZWN0Qm94KGNhbnZhcyx7cmVkaXJlY3RVUkw6Y2FudmFzLmN1cnJlbnRSb29tT2JqZWN0LnJlZGlyZWN0VVJMfSk7CisJICAgIF1dPgorCTwvbWV0aG9kPgorICAgICAgICAgICAgICAgICAKKyAgICAgICAgCisKKwkKKwk8bWV0aG9kIG5hbWU9InBhcnNlTGFudWdhZ2VPYmplY3QiIGFyZ3M9Im9iaiI+CisJCisJICAgIC8vLy9EZWJ1Zy53cml0ZSgncGFyc2VMYW51Z2FnZU9iamVjdDogJyxvYmopOworCSAgICAvLy8vRGVidWcud3JpdGUoJ3BhcnNlTGFudWdhZ2VPYmplY3Q6ICcsb2JqLmNoaWxkTm9kZXMpOworCSAgICA8IVtDREFUQVsKKwkgICAgdmFyIHQgPSBuZXcgQXJyYXkoKTsKKwkgICAgZm9yICh2YXIgaT0wO2k8b2JqLmNoaWxkTm9kZXMubGVuZ3RoO2krKyl7CisJICAgICAgICBmb3IgKHZhciBrPTA7azxvYmouY2hpbGROb2Rlc1tpXS5jaGlsZE5vZGVzLmxlbmd0aDtrKyspeworCSAgICAgICAgICAgIC8vLy9EZWJ1Zy53cml0ZShvYmouY2hpbGROb2Rlc1tpXS5jaGlsZE5vZGVzW2tdKTsKKwkgICAgICAgICAgICB2YXIgdDIgPSBuZXcgQXJyYXkoKTsKKwkgICAgICAgICAgICB0MltvYmouY2hpbGROb2Rlc1tpXS5jaGlsZE5vZGVzW2tdLmNoaWxkTm9kZXNbMF0ubm9kZU5hbWVdPW9iai5jaGlsZE5vZGVzW2ldLmNoaWxkTm9kZXNba10uY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzWzBdLmRhdGE7CisJICAgICAgICAgICAgdDJbb2JqLmNoaWxkTm9kZXNbaV0uY2hpbGROb2Rlc1trXS5jaGlsZE5vZGVzWzFdLm5vZGVOYW1lXT1vYmouY2hpbGROb2Rlc1tpXS5jaGlsZE5vZGVzW2tdLmNoaWxkTm9kZXNbMV0uY2hpbGROb2Rlc1swXS5kYXRhOworCSAgICAgICAgICAgIHQucHVzaCh0Mik7CisJICAgICAgICB9CisJICAgIH0KKwkgICAgc2V0TGFiZWxPYmplY3QodCk7CisJICAgIGNhbnZhcy5pbml0U2NyZWVuKCk7CisJICAgIC8vRGVidWcud3JpdGUodCk7CisJICAgIF1dPgorCTwvbWV0aG9kPgorCQorCTwhLS0gRGF0YSBTb3VyY2UgRGVmaW5pdGlvbiAtLT4KKwk8ZGF0YXNldCBuYW1lPSJnZXRTZXNzaW9uVmFyc0RhdGEiIHJlcXVlc3Q9ImZhbHNlIiBwcm94aWVkPSJmYWxzZSIKKwkgICAgcXVlcnl0eXBlPSJQT1NUIiBzcmM9IiR7ICdodHRwOi8vJytjYW52YXMucnRtcGhvc3QrJy93ZWJyb29tcy9jaGVja3Nlc3Npb24ucGhwJyB9IiAKKwkgICAgdHlwZT0iaHR0cCIgPgorCSAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKwkgICAgCisJICAgICAgICAvL0RlYnVnLndyaXRlKHZhbHVlKTsKKwkgICAgICAgIGNhbnZhcy5zZXRBdHRyaWJ1dGUoJ2N1cnJlbnRjb3Vyc2UnLHZhbHVlLmNoaWxkTm9kZXNbMF0uY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzWzBdLmNoaWxkTm9kZXNbMF0uZGF0YSk7CisJICAgICAgICBjYW52YXMuc2V0QXR0cmlidXRlKCdjdXJyZW50Y291cnNlTmFtZScsY2FudmFzLmN1cnJlbnRjb3Vyc2UpOworCSAgICAgICAgY2FudmFzLnNldEF0dHJpYnV0ZSgnY3VycmVudGNvdXJzZU5hbWVMb25nJyx2YWx1ZS5jaGlsZE5vZGVzWzBdLmNoaWxkTm9kZXNbMF0uY2hpbGROb2Rlc1sxXS5jaGlsZE5vZGVzWzBdLmRhdGEpOworCSAgICAgICAgY2FudmFzLnNldEF0dHJpYnV0ZSgnY3VycmVudGxhbmd1YWdlJyx2YWx1ZS5jaGlsZE5vZGVzWzBdLmNoaWxkTm9kZXNbMF0uY2hpbGROb2Rlc1s4XS5jaGlsZE5vZGVzWzBdLmRhdGEpOworCQorCSAgICAgICAgY2FudmFzLnNldEF0dHJpYnV0ZSgnY3VycmVudHVzZW5hbWUnLHZhbHVlLmNoaWxkTm9kZXNbMF0uY2hpbGROb2Rlc1sxXS5jaGlsZE5vZGVzWzJdLmNoaWxkTm9kZXNbMF0uZGF0YSsnICcrdmFsdWUuY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzWzFdLmNoaWxkTm9kZXNbMV0uY2hpbGROb2Rlc1swXS5kYXRhKTsKKwkgICAgICAgIAorCSAgICAgICAgY2FudmFzLnNldEF0dHJpYnV0ZSgndXNlcl9pZCcsdmFsdWUuY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzWzFdLmNoaWxkTm9kZXNbMF0uY2hpbGROb2Rlc1swXS5kYXRhKTsKKwkgICAgICAgIGNhbnZhcy5zZXRBdHRyaWJ1dGUoJ2ZpcnN0TmFtZScsdmFsdWUuY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzWzFdLmNoaWxkTm9kZXNbMV0uY2hpbGROb2Rlc1swXS5kYXRhKTsKKwkgICAgICAgIGNhbnZhcy5zZXRBdHRyaWJ1dGUoJ2xhc3ROYW1lJyx2YWx1ZS5jaGlsZE5vZGVzWzBdLmNoaWxkTm9kZXNbMV0uY2hpbGROb2Rlc1syXS5jaGlsZE5vZGVzWzBdLmRhdGEpOworCSAgICAgICAgY2FudmFzLnNldEF0dHJpYnV0ZSgnbWFpbCcsdmFsdWUuY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzWzFdLmNoaWxkTm9kZXNbM10uY2hpbGROb2Rlc1swXS5kYXRhKTsKKwkgICAgICAgIGNhbnZhcy5zZXRBdHRyaWJ1dGUoJ2xhc3RMb2dpbicsJycpOworCSAgICAgICAgY2FudmFzLnNldEF0dHJpYnV0ZSgnb2ZmaWNpYWxfY29kZScsdmFsdWUuY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzWzFdLmNoaWxkTm9kZXNbNV0uY2hpbGROb2Rlc1swXS5kYXRhKTsKKwkgICAgICAgIGNhbnZhcy5zZXRBdHRyaWJ1dGUoJ3BpY3R1cmVfdXJpJywnJyk7CisJICAgICAgICBjYW52YXMuc2V0QXR0cmlidXRlKCdsYW5ndWFnZScsdmFsdWUuY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzWzFdLmNoaWxkTm9kZXNbN10uY2hpbGROb2Rlc1swXS5kYXRhKTsKKwkKKwkgICAgICAgIC8vRGVidWcud3JpdGUodmFsdWUuY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzWzFdLmNoaWxkTm9kZXNbMF0uY2hpbGROb2Rlc1swXS5kYXRhKTsKKwkgICAgICAgIC8vRGVidWcud3JpdGUodmFsdWUuY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzWzFdLmNoaWxkTm9kZXNbMV0uY2hpbGROb2Rlc1swXS5kYXRhKTsKKwkgICAgICAgIC8vRGVidWcud3JpdGUodmFsdWUuY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzWzFdLmNoaWxkTm9kZXNbMl0uY2hpbGROb2Rlc1swXS5kYXRhKTsKKwkgICAgICAgIC8vRGVidWcud3JpdGUodmFsdWUuY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzWzFdLmNoaWxkTm9kZXNbM10uY2hpbGROb2Rlc1swXS5kYXRhKTsKKwkgICAgICAgIC8vRGVidWcud3JpdGUodmFsdWUuY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzWzFdLmNoaWxkTm9kZXNbNF0uY2hpbGROb2Rlc1swXS5kYXRhKTsKKwkgICAgICAgIC8vRGVidWcud3JpdGUodmFsdWUuY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzWzFdLmNoaWxkTm9kZXNbNV0uY2hpbGROb2Rlc1swXS5kYXRhKTsKKwkgICAgICAgIC8vRGVidWcud3JpdGUodmFsdWUuY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzWzFdLmNoaWxkTm9kZXNbNl0uY2hpbGROb2Rlc1swXS5kYXRhKTsKKwkgICAgICAgIC8vRGVidWcud3JpdGUodmFsdWUuY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzWzFdLmNoaWxkTm9kZXNbN10uY2hpbGROb2Rlc1swXS5kYXRhKTsKKwkgICAgICAgIAorCSAgICAgICAgc3dpdGNoIChjYW52YXMuY3VycmVudGxhbmd1YWdlKXsKKwkgICAgICAgICAgICBjYXNlICdlbmdsaXNoJzoKKwkgICAgICAgICAgICBicmVhazsKKwkgICAgICAgICAgICBjYXNlICdnZXJtYW4nOgorCSAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgICAgIGNhc2UgJ2ZyZW5jaCc6CisJICAgICAgICAgICAgYnJlYWs7ICAgICAgICAgIAorCSAgICAgICAgICAgIGRlZmF1bHQ6CisJICAgICAgICAgICAgY2FudmFzLnNldEF0dHJpYnV0ZSgnY3VycmVudGxhbmd1YWdlJywnZW5nbGlzaCcpOworCSAgICAgICAgICAgIGJyZWFrOworCSAgICAgICAgfQorCSAgICAgICAgCisJICAgICAgICB2YXIgYWRkSXQ9J2NvbmYnOworCSAgICAgICAgaWYgKCFjYW52YXMuaXNDb25mZXJlbmNlKXsKKwkgICAgICAgICAgICBhZGRJdD0nbWVldCcKKwkgICAgICAgIH0KKwkgICAgICAgIGNhbnZhcy5zZXRBdHRyaWJ1dGUoJ2N1cnJlbnRjb3Vyc2UnLGNhbnZhcy5ydG1waG9zdCtjYW52YXMuY3VycmVudGNvdXJzZSthZGRJdCk7CisJICAgICAgICBjYW52YXMuc2V0QXR0cmlidXRlKCdjdXJyZW50dXNlcicsdmFsdWUuY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzWzFdLmNoaWxkTm9kZXNbNV0uY2hpbGROb2Rlc1swXS5kYXRhKTsKKwkgICAgICAgIAorCSAgICAgICAgY2FudmFzLnNldEF0dHJpYnV0ZSgnbG9hZGluZ21lc3NhZ2UnLCdsb2FkaW5nIGxhbmd1YWdlIGRhdGEnKTsKKwkgICAgICAgIGNhbnZhcy5sYW5ndWFnZURhdGEuZG9SZXF1ZXN0KCk7CisJICAgIDwvaGFuZGxlcj4KKwk8L2RhdGFzZXQ+CisJCisJPG1ldGhvZCBuYW1lPSJhZGRCcm93c2VyVGFiSGlzdG9yeSIgYXJncz0idmFsdWUiPgorCSAgICA8IVtDREFUQVsKKwkgICAgLy9EZWJ1Zy53cml0ZSgiYWRkQnJvd3NlclRhYkhpc3Rvcnk6ICIsdmFsdWUpOworCSAgICBfYnJvd3Nlcmhpc3RvcnkuYWRkSXRlbSh2YWx1ZSk7CisJICAgIHRoaXMuYnJvd3NlclRhYkhpc3RvcnkucHVzaCh2YWx1ZSk7CisJICAgIF1dPgorCTwvbWV0aG9kPgorCSAgCisJPCEtLS0KKwlAZG9jIFRoZSBmdW5jdGlvbiBkb2VzIGNvbXBhcmUgdGhlIG5ldyBtb2RlcmF0b3IgbGlzdCB3aXRoIHRoZSBvbGQgYW5kIHByZXBhcmVzIHRoZSBsaXN0IAorCQl0aGUgcmVtb3ZlTW9kZXJhdG9yTGlzdCBpcyB1c2VkIGluIHRoZSBwZXJmb3JtYW5jZSBvcHRpbWl6ZWQgdXNlciBsaXN0IG9mIHRoZSByZXN0cmljdGVkIAorCQlyb29tIHR5cGUgdG8gcmUtcmVuZGVyIHRoZSBsaXN0IGl0ZW1zIG9ubHkgaWYgcmVhbGx5IHNvbWV0aGluZyBoYXMgY2hhbmdlZCBpbiBhbnkgCisJCW9mIHRoZSB1c2VyIGxpc3QgaXRlbXMKKwkgLS0+CisJPG1ldGhvZCBuYW1lPSJhbmFseXplTW9kZXJhdGlvbkxpc3QiIGFyZ3M9Im5ld0xpc3QiPgorCSAgICA8IVtDREFUQVsKKwkgICAgCisJICAgICAgIGNhbnZhcy5uZXdNb2RlcmF0b3JMaXN0ID0gbmV3IEFycmF5KCk7CisJICAgICAgIGNhbnZhcy5yZW1vdmVNb2RlcmF0b3JMaXN0ID0gbmV3IEFycmF5KCk7CisJICAgICAgIAorCSAgICAgICBpZiAoY2FudmFzLmN1cnJlbnRNb2RlcmF0b3JMaXN0ICE9IG51bGwpIHsKKwkgICAgICAgICAgIGZvciAodmFyIGk9MDtpPGNhbnZhcy5jdXJyZW50TW9kZXJhdG9yTGlzdC5sZW5ndGg7aSsrKSB7CisJICAgICAgICAgICAgICAgIGNhbnZhcy5jdXJyZW50TW9kZXJhdG9yTGlzdFtpXS5mb3VuZCA9IGZhbHNlOworCSAgICAgICAgICAgfQorCSAgICAgICAKKwkgICAgICAgICAgIGZvciAodmFyIGk9MDtpPGNhbnZhcy5jdXJyZW50TW9kZXJhdG9yTGlzdC5sZW5ndGg7aSsrKSB7CisJICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICBmb3IgKHZhciBrPTA7azxuZXdMaXN0Lmxlbmd0aDtrKyspIHsKKwkgICAgICAgICAgICAgICAgICAgIGlmIChuZXdMaXN0W2tdLnB1YmxpY1NJRCA9PSBjYW52YXMuY3VycmVudE1vZGVyYXRvckxpc3RbaV0ucHVibGljU0lEKSB7CisJICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzLmN1cnJlbnRNb2RlcmF0b3JMaXN0W2ldLmZvdW5kID0gdHJ1ZTsKKwkgICAgICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgIH0KKwkgICAgICAgIH0KKwkgICAgICAgIAorCSAgICAgICAgZm9yICh2YXIgaz0wO2s8bmV3TGlzdC5sZW5ndGg7aysrKSB7CisJICAgICAgICAgICAgbmV3TGlzdFtrXS5mb3VuZCA9IGZhbHNlOworCSAgICAgICAgfQorCSAgICAgICAKKwkgICAgICAgIGZvciAodmFyIGs9MDtrPG5ld0xpc3QubGVuZ3RoO2srKykgeworCSAgICAgICAgCWlmIChjYW52YXMuY3VycmVudE1vZGVyYXRvckxpc3QgIT0gbnVsbCkgeworCSAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTxjYW52YXMuY3VycmVudE1vZGVyYXRvckxpc3QubGVuZ3RoO2krKykgeworCSAgICAgICAgICAgICAgICAgICAgaWYgKG5ld0xpc3Rba10ucHVibGljU0lEID09IGNhbnZhcy5jdXJyZW50TW9kZXJhdG9yTGlzdFtpXS5wdWJsaWNTSUQpIHsKKwkgICAgICAgICAgICAgICAgICAgICAgICBuZXdMaXN0W2tdLmZvdW5kID0gdHJ1ZTsKKwkgICAgICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAgICAgfQorCSAgICAgICAgCX0KKwkgICAgICAgIH0KKwkgICAgICAgIAorCSAgICAgICAgZm9yICh2YXIgaz0wO2s8bmV3TGlzdC5sZW5ndGg7aysrKSB7CisJICAgICAgICAgICAgaWYgKCFuZXdMaXN0W2tdLmZvdW5kKSB7CisJICAgICAgICAgICAgICAgIGNhbnZhcy5uZXdNb2RlcmF0b3JMaXN0LnB1c2gobmV3TGlzdFtrXSk7CisJICAgICAgICAgICAgfQorCSAgICAgICAgfQorCSAgICAgICAgCisJICAgICAgICBpZiAoY2FudmFzLmN1cnJlbnRNb2RlcmF0b3JMaXN0ICE9IG51bGwpIHsKKwkgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTxjYW52YXMuY3VycmVudE1vZGVyYXRvckxpc3QubGVuZ3RoO2krKykgeworCSAgICAgICAgICAgICAgICAKKwkgICAgICAgICAgICAgICAgaWYgKCFjYW52YXMuY3VycmVudE1vZGVyYXRvckxpc3RbaV0uZm91bmQpIHsKKwkgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5yZW1vdmVNb2RlcmF0b3JMaXN0LnB1c2goY2FudmFzLmN1cnJlbnRNb2RlcmF0b3JMaXN0W2ldKQorCSAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgfQorCSAgICAgICAgfQorCSAgICAgICAgCisJICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgibmV3TW9kZXJhdG9yTGlzdCA6OiAiLGNhbnZhcy5uZXdNb2RlcmF0b3JMaXN0KTsKKwkgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJyZW1vdmVNb2RlcmF0b3JMaXN0IDo6ICIsY2FudmFzLnJlbW92ZU1vZGVyYXRvckxpc3QpOworCSAgICBdXT4KKwk8L21ldGhvZD4KKwkKKwk8IS0tLQorCQlVcGRhdGVzIHRoZSAiaXNtb2RlcmF0b3IiIGZsYWcKKwkJdGhlIHNldEF0dHJpYnV0ZSBtZXRob2Qgd2lsbCBicm9hZGNhc3QgYW4gZXZlbnQgdG8gYWxsIGV2ZW50IGxpc3RlbmVycyB0aGF0IAorCQlkaWQgc3Vic2NyaWJlIHVzaW5nIHRoZSAib25pc21vZGVyYXRvciIgaGFuZGxlciB3aXRoIHJlZmVyZW5jZSB0byBjYW52YXMgIQorCQlGb3IgZXhhbXBsZSBpbiB0aGUgdXNlcmxpc3QncyBvZiB0aGUgcm9vbXR5cGVzCisJIC0tPgorCTxtZXRob2QgbmFtZT0idXBkYXRlTW9kZXJhdGlvbkZsYWciPgorCSAgICA8IVtDREFUQVsKKwkgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ1cGRhdGVNb2RlcmF0aW9uRmxhZyIsY2FudmFzLmN1cnJlbnRNb2RlcmF0b3JMaXN0KTsKKwkgICAgICAgIHZhciBpc0N1cnJlbnRNb2RlcmF0b3IgPSBmYWxzZTsKKwkgICAgICAgIGZvciAodmFyIGk9MDtpPGNhbnZhcy5jdXJyZW50TW9kZXJhdG9yTGlzdC5sZW5ndGg7aSsrKSB7CisJICAgICAgICAgICAgdmFyIGl0ZW0gPSBjYW52YXMuY3VycmVudE1vZGVyYXRvckxpc3RbaV07CisJICAgICAgICAgICAgaWYgKGNhbnZhcy5wdWJsaWNTSUQgPT0gaXRlbS5wdWJsaWNTSUQpIHsKKwkgICAgICAgICAgICAgICAgaXNDdXJyZW50TW9kZXJhdG9yID0gdHJ1ZTsKKwkgICAgICAgICAgICB9CisJICAgICAgICB9CisJICAgICAgICAKKwkgICAgICAgIC8vT25seSBzZW5kIHRoaXMgZXZlbnQgaWYgdGhlIGN1cnJlbnQgdXNlciBtb2RlcmF0b3JzIHN0YXR1cyBjaGFuZ2VzCisJICAgICAgICBpZiAoaXNDdXJyZW50TW9kZXJhdG9yICE9IHRoaXMuaXNtb2RlcmF0b3IpIHsKKwkJICAgICAgICBjYW52YXMuc2VuZFZpYUxvY2FsQ29ubmVjdGlvbihjYW52YXMudmlkX2xjX25hbWUsICJ1cGRhdGVNb2RlcmF0aW9uRmxhZyIsIFtpc0N1cnJlbnRNb2RlcmF0b3JdKTsKKwkgICAgICAgIH0KKwkgICAgICAgIAorCSAgICAgICAgLy8gZG8gYWx3YXlzIHNwcmVhZCB0aGlzIGV2ZW50LCB3ZSBuZWVkIHRvIGJyb2FkY2FzdCB0aGUgIm9uaXNtb2RlcmF0b3IiIGV2ZW50CisJICAgICAgICAvLyBzbyB0aGF0IHdlIGNhbiB1cGRhdGUgdGhlIHN0YXR1cyBvZiBvdGhlciB1c2VycyBpbiB0aGUgdXNlciBsaXN0CisJICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnaXNtb2RlcmF0b3InLGlzQ3VycmVudE1vZGVyYXRvcik7CisJICAgIF1dPgorCTwvbWV0aG9kPiAKKwkKKwk8IS0tLQorCQlDaGVja3MgaWYgYSBjZXJ0YWluIHB1YmxpY1NJRCBpcyBhIG1vZGVyYXRvcgorCSAtLT4KKwk8bWV0aG9kIG5hbWU9ImdldElzTW9kZXJhdG9yQnlQdWJsaWNTSUQiIGFyZ3M9InB1YmxpY1NJRCI+CisJICAgIDwhW0NEQVRBWworCSAgICAgICAgZm9yICh2YXIgaT0wO2k8Y2FudmFzLmN1cnJlbnRNb2RlcmF0b3JMaXN0Lmxlbmd0aDtpKyspIHsKKwkgICAgICAgICAgICB2YXIgaXRlbSA9IGNhbnZhcy5jdXJyZW50TW9kZXJhdG9yTGlzdFtpXTsKKwkgICAgICAgICAgICBpZiAocHVibGljU0lEID09IGl0ZW0ucHVibGljU0lEKSB7CisJICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOworCSAgICAgICAgICAgIH0KKwkgICAgICAgIH0KKwkgICAgICAgIHJldHVybiBmYWxzZTsKKwkgICAgXV0+CisJPC9tZXRob2Q+CisJIAorCTwhLS0tCisJCVNldHMgdGhlIGZsYWdzIGlzQWxsb3dlZFRvRHJhdywgaXNBbGxvd2VkVG9TY3JlZW5TaGFyZSwgaXNBbGxvd2VkVG9SZW1vdGVDb250cm9sIAorCQlhbmQgYnJvYWRjYXN0cyB0aGUgdGhyZWUgcmlnaHRzIHRvIFNXRjEwIGNvbnRhaW5lcgorCSAtLT4KKwk8bWV0aG9kIG5hbWU9InNldERyYXdBbGxvd1N0YXR1cyIgYXJncz0icm9vbUNsaWVudE9iaiI+CisJICAgIDwhW0NEQVRBWworCSAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImRyYXdBbGxvd1N0YXR1cyBjaGFuZ2VzICMjIyMjIyAiKTsKKwkgICAgICAgIGlmIChyb29tQ2xpZW50T2JqLnB1YmxpY1NJRD09Y2FudmFzLnB1YmxpY1NJRCkgeworCSAgICAgICAgICAgIGNhbnZhcy5zZXRBdHRyaWJ1dGUoImlzQWxsb3dlZFRvRHJhdyIscm9vbUNsaWVudE9iai5jYW5EcmF3KTsKKwkgICAgICAgICAgICBjYW52YXMuc2V0QXR0cmlidXRlKCJpc0FsbG93ZWRUb1NjcmVlblNoYXJlIixyb29tQ2xpZW50T2JqLmNhblNoYXJlKTsKKwkgICAgICAgICAgICBjYW52YXMuc2V0QXR0cmlidXRlKCJpc0FsbG93ZWRUb1JlbW90ZUNvbnRyb2wiLHJvb21DbGllbnRPYmouY2FuUmVtb3RlKTsKKwkgICAgICAgICAgICBjYW52YXMuc2VuZFZpYUxvY2FsQ29ubmVjdGlvbihjYW52YXMudmlkX2xjX25hbWUsICJzZXREcmF3QWxsb3dTdGF0dXMiLCBbcm9vbUNsaWVudE9iai5jYW5EcmF3LCByb29tQ2xpZW50T2JqLmNhblNoYXJlLCByb29tQ2xpZW50T2JqLmNhblJlbW90ZV0pOworCSAgICAgICAgfQorCSAgICBdXT4KKwk8L21ldGhvZD4KKwkKKwk8IS0tLQorCQlTZXRzIHRoZSBmbGFnIGZvciB0aGUgaXNBbGxvd2VkVG9HaXZlRXhjbHVzaXZlQXVkaW8gc3RhdHVzIGFuZCBicm9hZGNhc3RzIGl0IHRvIHRoZSAKKwkJU1dGMTAgY29udGFpbmVyCisJIC0tPgorCTxtZXRob2QgbmFtZT0ic2V0RXhjbHVzaXZlQXVkaW9BbGxvd1N0YXR1cyIgYXJncz0icm9vbUNsaWVudE9iaiI+CisJICAgIDwhW0NEQVRBWworCSAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImdpdmVFeGNsdXNpdmVBdWRpb1N0YXR1cyBjaGFuZ2VzICMjIyMjIyAiKTsKKwkgICAgICAgIGlmIChyb29tQ2xpZW50T2JqLnB1YmxpY1NJRD09Y2FudmFzLnB1YmxpY1NJRCkgeworCSAgICAgICAgICAgIGNhbnZhcy5zZXRBdHRyaWJ1dGUoImlzQWxsb3dlZFRvR2l2ZUV4Y2x1c2l2ZUF1ZGlvIixyb29tQ2xpZW50T2JqLmNhbkdpdmVBdWRpbyk7CisJICAgICAgICAgICAgY2FudmFzLnNlbmRWaWFMb2NhbENvbm5lY3Rpb24oY2FudmFzLnZpZF9sY19uYW1lLCAic2V0RXhjbHVzaXZlQXVkaW9BbGxvd1N0YXR1cyIsIFtyb29tQ2xpZW50T2JqLmNhbkdpdmVBdWRpb10pOworCSAgICAgICAgfQorCSAgICBdXT4KKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9InNldE11dGVTdGF0dXMiIGFyZ3M9InJvb21DbGllbnRPYmoiPgorCSAgICA8IVtDREFUQVsKKwkgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzZXRNdXRlU3RhdHVzIGNoYW5nZXMgIyMjIyMjICIscm9vbUNsaWVudE9iai5taWNNdXRlZCk7CisJICAgICAgICAvL0NoZWNrIGZvciBzZWxmIHN0YXR1cworCSAgICAgICAgaWYgKHJvb21DbGllbnRPYmoucHVibGljU0lEPT1jYW52YXMucHVibGljU0lEKSB7CisJICAgICAgICAgICAgY2FudmFzLnNldEF0dHJpYnV0ZSgibWljTXV0ZWQiLHJvb21DbGllbnRPYmoubWljTXV0ZWQpOworCSAgICAgICAgfQorCSAgICAgICAgCisJICAgICAgICBjYW52YXMuX3ZpZGVvY29udGFpbmVyLnVwZGF0ZU11dGVTdGF0dXNWaWRlb1ZpZXcocm9vbUNsaWVudE9iaik7CisJICAgICAgICAKKwkgICAgICAgIC8vTm90aWZ5IGFsbCBMaXN0ZW5lcnMgZm9yIGNoYW5nZSBvZiB0aGUgaXRlbQorCSAgICAgICAgY2FudmFzLnNldEF0dHJpYnV0ZSgibWljTXV0ZWRTdGF0dXNDaGFuZ2VkSXRlbSIscm9vbUNsaWVudE9iaik7CisJICAgIF1dPgorCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0iYWRkRm9sZGVyU2VxdWVuY2UiIGFyZ3M9ImZvbGRlcm5hbWUiPgorCSAgICA8IVtDREFUQVsKKwkgICAgdGhpcy51cGxvYWRtb2R1bGVpbWdmb2xkZXIgPSAnLyc7CisJICAgIHRoaXMudXBsb2FkbW9kdWxlaW1nZm9sZGVyICs9IGZvbGRlcm5hbWU7CisJICAgIHRoaXMuc2V0QXR0cmlidXRlKCd1cGxvYWRtb2R1bGVpbWdmb2xkZXInLHRoaXMudXBsb2FkbW9kdWxlaW1nZm9sZGVyKTsKKwkgICAgXV0+CisJPC9tZXRob2Q+CisJICAgIAorCSAgICAKKwk8IS0tIGNvdW50cnkgdmFsaWRhdGlvbiAtLT4KKwk8bWV0aG9kIG5hbWU9InZhbGlkYXRlQ291bnRyeSIgYXJncz0ic3RyIj4KKwkgICAgLy8vL0RlYnVnLndyaXRlKCJ2YWxpZGF0ZUNvdW50cnk6ICIsc3RyKTsKKwkgICAgc3RyID0gc3RyLnRvTG93ZXJDYXNlKCk7CisJICAgIDwhW0NEQVRBWworCSAgICAgICAgaWYgKHN0ci5sZW5ndGghPTApeworCSAgICAgICAgICAgIHZhciBhID0gbmV3IEFycmF5KCk7CisJICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8Y2FudmFzLnN0YXRlc0luaXRWYWx1ZXMubGVuZ3RoO2krKyl7CisJICAgICAgICAgICAgICAgIHZhciBzdCA9IGNhbnZhcy5zdGF0ZXNJbml0VmFsdWVzW2ldLm5hbWUudG9Mb3dlckNhc2UoKTsKKwkgICAgICAgICAgICAgICAgaWYgKHN0LnN0YXJ0c1dpdGgoc3RyKSlhLnB1c2goY2FudmFzLnN0YXRlc0luaXRWYWx1ZXNbaV0pOworCSAgICAgICAgICAgICAgICAvL3RoaXMuYWRkSXRlbShjYW52YXMuc3RhdGVzSW5pdFZhbHVlc1tpXS5uYW1lLGNhbnZhcy5zdGF0ZXNJbml0VmFsdWVzW2ldLnN0YXRlX2lkKTsKKwkgICAgICAgICAgICB9CisJICAgICAgICAgICAgcmV0dXJuIGE7CisJICAgICAgICB9CisJICAgIF1dPiAKKwk8L21ldGhvZD4KKwkgICAgCisJPG1ldGhvZCBuYW1lPSJnZXRDb3VudHJ5UmVjb3JkIiBhcmdzPSJpZCI+CisJICAgIHJldHVybiBjYW52YXMuc3RhdGVzSW5pdFZhbHVlc1tpZF07CisJPC9tZXRob2Q+CisJICAgIAorCTxoYW5kbGVyIG5hbWU9Im9ubW91c2V3aGVlbGRlbHRhIiByZWZlcmVuY2U9Imx6LktleXMiIGFyZ3M9ImQiPgorCSAgICB2YXIgb2JqID0gZ2V0Q3VycmVudE1vdXNlV2hlZWxPYmplY3QoKTsKKwkgICAgLy8vL0RlYnVnLndyaXRlKCJvbm1vdXNld2hlZWxkZWx0YSAxMjogIixkLG9iaik7CisJICAgIDwhW0NEQVRBWworCSAgICAgICAgaWYgKG9iaiE9bnVsbCkgeworCSAgICAgICAgICAgIG9iai5zdGVwKC1kKTsKKwkgICAgICAgIH0KKwkgICAgXV0+CisJPC9oYW5kbGVyPiAgICAKKwkKKwk8bWV0aG9kIG5hbWU9InJldmVyc2VXb3JkaW5nc0J5U3BsaXQiIGFyZ3M9InN0ciI+CisJICAgIDwhW0NEQVRBWworCSAgICAgICAgdmFyIHdvcmRzX2FyciA9IHN0ci5zcGxpdCggIiAiICk7IC8vIGFuIGFycmF5IG9mIGNoYXJzCisJICAgICAgICBmb3IgKCB2YXIgaSA9IDAsIHN0ciA9ICIiOyBpIDwgd29yZHNfYXJyLmxlbmd0aDsgaSsrICkgLy8gcmV2ZXJzZSB0aGVpciBvcmRlcgorCSAgICAgICAgeworCSAgICAgICAgICAgIHN0ciArPSB3b3Jkc19hcnJbIHdvcmRzX2Fyci5sZW5ndGggLSBpIC0gMSBdOworCSAgICAgICAgICAgIGlmICh3b3Jkc19hcnIubGVuZ3RoICE9IDEpIHsKKwkgICAgICAgICAgICAgICAgc3RyICs9ICIgIjsKKwkgICAgICAgICAgICB9CisJICAgICAgICB9CisJICAgICAgICByZXR1cm4gc3RyOworCSAgICAgICAgCisJICAgIF1dPgorCTwvbWV0aG9kPiAKKwkKKwk8bWV0aG9kIG5hbWU9InJldmVyc2VBbGwiIGFyZ3M9InN0ciI+CisJICAgIDwhW0NEQVRBWworCSAgICAgICAgdmFyIHdvcmRzX2FyciA9IHN0ci5zcGxpdCggIiIgKTsgLy8gYW4gYXJyYXkgb2YgY2hhcnMKKwkgICAgICAgIGZvciAoIHZhciBpID0gMCwgc3RyID0gIiI7IGkgPCB3b3Jkc19hcnIubGVuZ3RoOyBpKysgKSAvLyByZXZlcnNlIHRoZWlyIG9yZGVyCisJICAgICAgICB7CisJICAgICAgICAgICAgc3RyICs9IHdvcmRzX2Fyclsgd29yZHNfYXJyLmxlbmd0aCAtIGkgLSAxIF07CisJICAgICAgICAgICAgCisJICAgICAgICB9CisJICAgICAgICByZXR1cm4gc3RyOworCSAgICAgICAgCisJICAgIF1dPgorCTwvbWV0aG9kPiAKKwkgICAgCisJPG1ldGhvZCBuYW1lPSJyZXZlcnNlV29yZHMiIGFyZ3M9InN0ciI+CisJICAgIDwhW0NEQVRBWworCSAgICAgICAgaWYgKCBzdHIgPT0gIiIgfHwgc3RyID09IG51bGwgKSByZXR1cm4gIiI7IC8vIHVuZGVmaW5lZAorCSAgICAgICAgLy8gZmlyc3QgY2hhciBpbmRpY2F0ZXMgdGhlIG1haW4gZGlyZWN0aXZlIG9mIHN0ciAocnRsL2x0cikKKwkgICAgICAgIGlmICggaXNMVFIoIHN0ci5jaGFyQ29kZUF0KCAwICkgKSApIHJldHVybiBzdHI7IC8vIGVuZ2xpc2ggb3IgbnVtYmVyCisJICAgICAgICB2YXIgd29yZHNfYXJyID0gc3RyLnNwbGl0KCAiIiApOyAvLyBhbiBhcnJheSBvZiBjaGFycworCSAgICAgICAgZm9yICggdmFyIGkgPSAwLCBzdHIgPSAiIjsgaSA8IHdvcmRzX2Fyci5sZW5ndGg7IGkrKyApIC8vIHJldmVyc2UgdGhlaXIgb3JkZXIKKwkgICAgICAgICAgICBzdHIgKz0gd29yZHNfYXJyWyB3b3Jkc19hcnIubGVuZ3RoIC0gaSAtIDEgXTsKKwkgICAgICAgIHJldHVybiBzdHI7CisJICAgIF1dPgorCTwvbWV0aG9kPgorCSAgICAKKwk8bWV0aG9kIG5hbWU9ImlzTFRSIiBhcmdzPSJjIj4KKwkgICAgPCFbQ0RBVEFbCisJICAgICAgICByZXR1cm4gKCBjID49IDQ4ICYmIGMgPD0gNTcgfHwgYyA+PSA2NSAmJiBjIDw9IDkwIHx8IGMgPj0gOTcgJiYgYyA8PSAxMjIgKTsKKwkgICAgXV0+CisJPC9tZXRob2Q+CisJCisJPG1ldGhvZCBuYW1lPSJpc0hFQiIgYXJncz0iYyI+CisJICAgIDwhW0NEQVRBWworCSAgICAgICAgcmV0dXJuICggYyA+PSAyMjQgJiYgYyA8PSAyNTAgKTsKKwkgICAgXV0+CisJPC9tZXRob2Q+ICAgIAorCQorCTxtZXRob2QgbmFtZT0ic2V0VGV4dEFsaWduIiBhcmdzPSJvYmosdHlwZSI+CisJICAgIHN3aXRjaCAoIHR5cGUgKSB7CisJICAgICAgICBjYXNlICJsZWZ0IiA6CisJICAgICAgICAgICAgb2JqLnNldFgoIDAgKTsKKwkgICAgICAgIGJyZWFrOworCSAgICAgICAgY2FzZSAiY2VudGVyIiA6CisJICAgICAgICAgICAgb2JqLnNldFgoIHRoaXMucGFyZW50LndpZHRoIC8gMiAtIHRoaXMuZ2V0VGV4dFdpZHRoKCkgLyAyICk7CisJICAgICAgICBicmVhazsKKwkgICAgICAgIGNhc2UgInJpZ2h0IiA6CisJICAgICAgICAgICAgb2JqLnNldFgoIHRoaXMucGFyZW50LndpZHRoIC0gdGhpcy5nZXRUZXh0V2lkdGgoKSApOworCSAgICAgICAgYnJlYWs7CisJICAgIH0KKwk8L21ldGhvZD4gIAorCQorCTxtZXRob2QgbmFtZT0iaW5pdFNoYXJlZE9iamVjdCI+CisJICAgIGlmIChjYW52YXMuc2hhcmVkT2JqZWN0ID09IG51bGwpIHsKKwkgICAgICAgIGlmKCRkZWJ1ZykgRGVidWcud3JpdGUoImNhbnZhcy5pbml0U2hhcmVkT2JqZWN0IHNoYXJlZE9iamVjdCBJUyBudWxsIik7CisJICAgICAgICBjYW52YXMuc2hhcmVkT2JqZWN0ID0gbmV3IGx6LnNoYXJlZE9iamVjdCgpOworCSAgICAgICAgY2FudmFzLnNoYXJlZE9iamVjdC5nZXRMb2NhbCgndXNlcmRhdGEnKTsKKwkgICAgfQorCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0iZ2V0VXNlckRhdGEiPgorCSAgICBjYW52YXMuaW5pdFNoYXJlZE9iamVjdCgpOworCSAgICB2YXIgZyA9IGNhbnZhcy5zaGFyZWRPYmplY3QuZ2V0RGF0YSgndXNlcmRhdGEnKTsKKwkgICAgaWYgKGc9PW51bGwpIHsKKwkgICAgICAgIGlmKCRkZWJ1ZykgRGVidWcud3JpdGUoInNoYXJlZE9iamVjdC5nZXREYXRhIElTIG51bGwiKTsKKwkgICAgICAgIGcgPSBuZXcgQXJyYXkoKTsKKwkgICAgfQorCSAgICByZXR1cm4gZzsKKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9InNldFVzZXJEYXRhIiBhcmdzPSJnIj4KKwkgICAgY2FudmFzLmluaXRTaGFyZWRPYmplY3QoKTsKKwkgICAgY2FudmFzLnNoYXJlZE9iamVjdC5zZXREYXRhKCd1c2VyZGF0YScsIGcpOworCSAgICBjYW52YXMuc2hhcmVkT2JqZWN0LmZsdXNoKCk7CisJPC9tZXRob2Q+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJyZWdFeHBDb3VudGVyIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0icmVnRXhwUmVzdWx0QXJyYXkiIHZhbHVlPSJudWxsIiAvPgorCQorCTxtZXRob2QgbmFtZT0iZG9SZWdFeHBDaGVjayIgYXJncz0iZmllbGRWYWx1ZSxyZWdFeHBWIj4KKwkJdGhpcy5yZWdFeHBDb3VudGVyID0gdGhpcy5yZWdFeHBDb3VudGVyICsxOworCQljYW52YXMuc2VuZFZpYUxvY2FsQ29ubmVjdGlvbihjYW52YXMucnRtcF9sY19uYW1lLCAicmVnRXhwVGVzdCIsIFtmaWVsZFZhbHVlLCByZWdFeHBWLCB0aGlzLnJlZ0V4cENvdW50ZXJdKTsKKwkJcmV0dXJuIHRoaXMucmVnRXhwQ291bnRlcjsKKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9InJlZ0V4cFJlc3VsdCIgYXJncz0idElkLHRSZXN1bHQiPgorCQlpZiAodGhpcy5yZWdFeHBSZXN1bHRBcnJheSA9PSBudWxsKSB7CisJCQl0aGlzLnJlZ0V4cFJlc3VsdEFycmF5ID0gbmV3IEFycmF5KCk7CisJCX0KKwkJdGhpcy5yZWdFeHBSZXN1bHRBcnJheVt0SWRdID0gdFJlc3VsdDsKKwkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInJlZ0V4cFJlc3VsdCAiLHRJZCx0UmVzdWx0KTsKKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9ImNoZWNrUmVnRXhwUmVzdWx0IiBhcmdzPSJ0SWQiPgorCQlyZXR1cm4gdGhpcy5yZWdFeHBSZXN1bHRBcnJheVt0SWRdOworCTwvbWV0aG9kPgorCQorCQorCTxtZXRob2QgbmFtZT0iZ2V0VGhlbWVJbWFnZSIgYXJncz0idE5hbWUiPgorCQkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJsb2FkIEltYWdlIGJ5IE5hbWU6ICIsdE5hbWUpOworCQl2YXIgdFBhdGggPSBjYW52YXMubWFpblRoZW1lLmdldFBvaW50ZXIoKS54cGF0aFF1ZXJ5KCJ0aGVtZS9yZXNvdXJjZVtAbmFtZT0nIit0TmFtZSsiJ10vQHNyYyIpOworCQkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJ0UGF0aCAiK3RQYXRoKTsKKwkJaWYgKHRQYXRoID09IG51bGwpIHsKKwkJCWlmICgkZGVidWcpIERlYnVnLndhcm4oImdldFRoZW1lSW1hZ2UgLSBObyBJbWFnZSBmb3VuZCBmb3IgY29uZmlnOiAiLHROYW1lKTsKKwkJfQorCQlyZXR1cm4gdFBhdGg7CisJPC9tZXRob2Q+CisJCisJPG1ldGhvZCBuYW1lPSJnZXRUaGVtZUNvbG9yIiBhcmdzPSJ0Q29sb3IiPgorCQkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJsb2FkIENvbG9yIGJ5IE5hbWU6ICIsdENvbG9yKTsKKwkJdmFyIHRSZXNDb2xvciA9IGNhbnZhcy5tYWluVGhlbWUuZ2V0UG9pbnRlcigpLnhwYXRoUXVlcnkoInRoZW1lL2NvbG9yW0BuYW1lPSciK3RDb2xvcisiJ10vQHZhbHVlIik7CisJCS8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInRDb2xvciAiK3RDb2xvcik7CisJCWlmICh0UmVzQ29sb3IgPT0gbnVsbCkgeworCQkJaWYgKCRkZWJ1ZykgRGVidWcud2FybigiZ2V0VGhlbWVDb2xvciAtIE5vIENvbG9yIGZvdW5kIGZvciBjb25maWc6ICIsdENvbG9yKTsKKwkJfQorCQlyZXR1cm4gdFJlc0NvbG9yOworCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0ic2V0QmFzZUNvbG9ycyI+CisJCWRlZmF1bHRzdHlsZS5zZXRBdHRyaWJ1dGUoImJhc2Vjb2xvciIsY2FudmFzLmdldFRoZW1lQ29sb3IoJ2Jhc2ViZ2NvbG9yaXplcicpKTsKKwkJaXRlbVN0eWxlLnNldEF0dHJpYnV0ZSgiYmFzZWNvbG9yIixjYW52YXMuZ2V0VGhlbWVDb2xvcignYmFzZWJnY29sb3JpemVyJykpOworCQltZW51U3R5bGUuc2V0QXR0cmlidXRlKCJiYXNlY29sb3IiLGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdzdHlsZU1lbnVCYXJCYXNlQ29sb3InKSk7CisJCV9jb25mZXJlbmNlbWVudS5zZXRBdHRyaWJ1dGUoImJnY29sb3IiLGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdiYXNlTW91c2Vjb2xvcml6ZXInKSk7CisJCV9tYWluYmdjb250ZW50TmF2aS5zZXRBdHRyaWJ1dGUoImJnY29sb3IiLGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdtYWluQmFja2dyb3VuZENvbG9yJykpOworCQltYWluX2NvbnRlbnQuc2V0QXR0cmlidXRlKCJiZ2NvbG9yIixjYW52YXMuZ2V0VGhlbWVDb2xvcignbWFpbkJhY2tncm91bmRDb2xvcicpKTsKKwk8L21ldGhvZD4KKworCTxtZXRob2QgbmFtZT0iZ2V0UGljdHVyZVVybCIgYXJncz0icGljdHVyZXVyaSxleHRyYVBhcmFtcyI+CisJPCFbQ0RBVEFbCisJCXZhciBwVXJpID0gKHBpY3R1cmV1cmkgPT0gbnVsbCB8fCBwaWN0dXJldXJpLmxlbmd0aCA9PSAwKSA/ICJkLmpwZyIgOiBwaWN0dXJldXJpOworCQl2YXIgZG93bmxvYWR1cmwgPSBwVXJpOworCQlpZiAoIXBVcmkuc3RhcnRzV2l0aCgiaHR0cDovLyIpICYmICFwVXJpLnN0YXJ0c1dpdGgoImh0dHBzOi8vIikpIHsKKwkJCXBVcmkgPSAiX3Byb2ZpbGVfIiArIHBVcmk7CisJCQkKKwkJCWRvd25sb2FkdXJsID0gY2FudmFzLmdldFVybCgpICsgJ0Rvd25sb2FkSGFuZGxlcj9maWxlTmFtZT0nICsgcFVyaQorCQkJCSsgJyZwYXJlbnRQYXRoPSZyb29tX2lkPSZyPScgKyAobmV3IERhdGUoKSkuZ2V0VGltZSgpCisJCQkJKyBleHRyYVBhcmFtcyArICcmc2lkPScrY2FudmFzLnNlc3Npb25JZDsKKwkJfQorCQlpZigkZGVidWcpIERlYnVnLndyaXRlKCJnZXRQaWN0dXJlVXJsL2Rvd25sb2FkdXJsICIsIGRvd25sb2FkdXJsKTsKKwkJcmV0dXJuIGRvd25sb2FkdXJsOworCV1dPgorCTwvbWV0aG9kPgorCQkKKwk8bWV0aG9kIG5hbWU9InNlbmRWaWFMb2NhbENvbm5lY3Rpb24iIGFyZ3M9ImxjX25hbWUsbWV0aG9kTmFtZSx0QXJyYXkiPgorCQkvL2lmICgkZGVidWcpIERlYnVnLmluZm8oInNlbmRWaWFMb2NhbENvbm5lY3Rpb24gIixsY19uYW1lLG1ldGhvZE5hbWUpOyAvLyx0QXJyYXkKKwkJaWYgKHRBcnJheSA9PSBudWxsIHx8IHRBcnJheS5sZW5ndGggPT0gMCkgeworCQkJY2FudmFzLmxjLnNlbmQobGNfbmFtZSxtZXRob2ROYW1lKTsKKwkJfSBlbHNlIGlmICh0QXJyYXkubGVuZ3RoID09IDEpIHsKKwkJCWNhbnZhcy5sYy5zZW5kKGxjX25hbWUsbWV0aG9kTmFtZSx0QXJyYXlbMF0pOworCQl9IGVsc2UgaWYgKHRBcnJheS5sZW5ndGggPT0gMikgeworCQkJY2FudmFzLmxjLnNlbmQobGNfbmFtZSxtZXRob2ROYW1lLHRBcnJheVswXSx0QXJyYXlbMV0pOworCQl9IGVsc2UgaWYgKHRBcnJheS5sZW5ndGggPT0gMykgeworCQkJY2FudmFzLmxjLnNlbmQobGNfbmFtZSxtZXRob2ROYW1lLHRBcnJheVswXSx0QXJyYXlbMV0sdEFycmF5WzJdKTsKKwkJfSBlbHNlIGlmICh0QXJyYXkubGVuZ3RoID09IDQpIHsKKwkJCWNhbnZhcy5sYy5zZW5kKGxjX25hbWUsbWV0aG9kTmFtZSx0QXJyYXlbMF0sdEFycmF5WzFdLHRBcnJheVsyXSx0QXJyYXlbM10pOworCQl9IGVsc2UgaWYgKHRBcnJheS5sZW5ndGggPT0gNSkgeworCQkJY2FudmFzLmxjLnNlbmQobGNfbmFtZSxtZXRob2ROYW1lLHRBcnJheVswXSx0QXJyYXlbMV0sdEFycmF5WzJdLHRBcnJheVszXSx0QXJyYXlbNF0pOworCQl9IGVsc2UgaWYgKHRBcnJheS5sZW5ndGggPT0gNikgeworCQkJY2FudmFzLmxjLnNlbmQobGNfbmFtZSxtZXRob2ROYW1lLHRBcnJheVswXSx0QXJyYXlbMV0sdEFycmF5WzJdLHRBcnJheVszXSx0QXJyYXlbNF0sdEFycmF5WzVdKTsKKwkJfSBlbHNlIGlmICh0QXJyYXkubGVuZ3RoID09IDcpIHsKKwkJCWNhbnZhcy5sYy5zZW5kKGxjX25hbWUsbWV0aG9kTmFtZSx0QXJyYXlbMF0sdEFycmF5WzFdLHRBcnJheVsyXSx0QXJyYXlbM10sdEFycmF5WzRdLHRBcnJheVs1XSx0QXJyYXlbNl0pOworCQl9IGVsc2UgaWYgKHRBcnJheS5sZW5ndGggPT0gOCkgeworCQkJY2FudmFzLmxjLnNlbmQobGNfbmFtZSxtZXRob2ROYW1lLHRBcnJheVswXSx0QXJyYXlbMV0sdEFycmF5WzJdLHRBcnJheVszXSx0QXJyYXlbNF0sdEFycmF5WzVdLHRBcnJheVs2XSx0QXJyYXlbN10pOworCQl9IGVsc2UgaWYgKHRBcnJheS5sZW5ndGggPT0gOSkgeworCQkJY2FudmFzLmxjLnNlbmQobGNfbmFtZSxtZXRob2ROYW1lLHRBcnJheVswXSx0QXJyYXlbMV0sdEFycmF5WzJdLHRBcnJheVszXSx0QXJyYXlbNF0sdEFycmF5WzVdLHRBcnJheVs2XSx0QXJyYXlbN10sdEFycmF5WzhdKTsKKwkJfSBlbHNlIGlmICh0QXJyYXkubGVuZ3RoID09IDEwKSB7CisJCQljYW52YXMubGMuc2VuZChsY19uYW1lLG1ldGhvZE5hbWUsdEFycmF5WzBdLHRBcnJheVsxXSx0QXJyYXlbMl0sdEFycmF5WzNdLHRBcnJheVs0XSx0QXJyYXlbNV0sdEFycmF5WzZdLHRBcnJheVs3XSx0QXJyYXlbOF0sdEFycmF5WzldKTsKKwkJfSBlbHNlIHsKKwkJCWlmICgkZGVidWcpIERlYnVnLmVycm9yKCJ0QXJyYXkgaW4gc2VuZFZpYUxvY2FsQ29ubmVjdGlvbiBsb25nZXIgdGhlbiBhbGxvd2VkIikKKwkJfQorCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0iZ2V0Tm90TnVsbFN0cmluZyIgYXJncz0idmFsdWUiPgorCQlyZXR1cm4gdmFsdWUgPT0gbnVsbCA/ICcnIDogdmFsdWU7CisJPC9tZXRob2Q+CisJCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL21vZHVsZUNvbmZpZ3VyYXRpb24ubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9tb2R1bGVDb25maWd1cmF0aW9uLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWIwNWIyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9tb2R1bGVDb25maWd1cmF0aW9uLmx6eApAQCAtMCwwICsxLDExMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+CisKKzxsaWJyYXJ5PgorPCEtLSAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKK3RoZXNlIHByb3BlcnRpZXMgY2FuIGJlIG92ZXJ3cml0dGVuIGJ5IGNvbmZpZy54bWwgLS0+ICAKKyAgIAorICAgCis8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICAgIEFkbWluIE1vZHVsZXMKKyAgLS0+ICAgCisgICAgCis8YXR0cmlidXRlIG5hbWU9ImFkbWluTW9kdWxlVXNlciIgdmFsdWU9InVzZXJBZG1pbiIgdHlwZT0ic3RyaW5nIiAvPgorCis8YXR0cmlidXRlIG5hbWU9ImFkbWluTW9kdWxlUm9vbSIgdmFsdWU9InJvb21BZG1pbiIgdHlwZT0ic3RyaW5nIiAvPgorCis8YXR0cmlidXRlIG5hbWU9ImFkbWluTW9kdWxlT3JnIiB2YWx1ZT0ib3JnQWRtaW4iIHR5cGU9InN0cmluZyIgLz4KKworPGF0dHJpYnV0ZSBuYW1lPSJhZG1pbk1vZHVsZUxhbmd1YWdlcyIgdmFsdWU9Imxhbmd1YWdlc0VkaXRvciIgdHlwZT0ic3RyaW5nIiAvPgorCis8YXR0cmlidXRlIG5hbWU9ImFkbWluTW9kdWxlQ29ubmVjdGlvbnMiIHZhbHVlPSJyb29tQ2xpZW50IiB0eXBlPSJzdHJpbmciIC8+CisKKzxhdHRyaWJ1dGUgbmFtZT0iYWRtaW5Nb2R1bGVDb25maWd1cmF0aW9uIiB2YWx1ZT0iY29uZkFkbWluIiB0eXBlPSJzdHJpbmciIC8+CisKKzxhdHRyaWJ1dGUgbmFtZT0iYWRtaW5Nb2R1bGVMREFQIiB2YWx1ZT0ibGRhcEFkbWluIiB0eXBlPSJzdHJpbmciIC8+CisKKzxhdHRyaWJ1dGUgbmFtZT0iYWRtaW5Nb2R1bGVCYWNrdXAiIHZhbHVlPSJiYWNrdXBDb250ZW50IiB0eXBlPSJzdHJpbmciIC8+CisKKzxhdHRyaWJ1dGUgbmFtZT0iYWRtaW5Nb2R1bGVTZXJ2ZXJzIiB2YWx1ZT0ic2VydmVyc0FkbWluIiB0eXBlPSJzdHJpbmciIC8+CisKKworPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAgICBNb2RlcmF0b3IgTW9kdWxlcworIC0tPgorCis8YXR0cmlidXRlIG5hbWU9Im1vZGVyYXRvck1vZHVsZVVzZXIiIHZhbHVlPSJ1c2VyTW9kZXJhdGUiIHR5cGU9InN0cmluZyIgLz4KKworPGF0dHJpYnV0ZSBuYW1lPSJtb2RlcmF0b3JNb2R1bGVSb29tIiB2YWx1ZT0icm9vbU1vZGVyYXRlIiB0eXBlPSJzdHJpbmciIC8+CisKKworPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAgICBEYXNoYm9hcmQgTW9kdWxlcworIC0tPgorCis8YXR0cmlidXRlIG5hbWU9ImRhc2hib2FyZE1vZHVsZVN0YXJ0U2NyZWVuIiB2YWx1ZT0ibWFpbkRhc2hib2FyZCIgdHlwZT0ic3RyaW5nIiAvPgorCis8YXR0cmlidXRlIG5hbWU9ImRhc2hib2FyZE1vZHVsZUNhbGVuZGFyIiB2YWx1ZT0ibXlTY2hlZHVsZWRNZWV0aW5ncyIgdHlwZT0ic3RyaW5nIiAvPgorCisKKzwhLS0gQ29uZmVyZW5jZSBSb29tIE1vZHVsZXMgLS0+CisKKzxhdHRyaWJ1dGUgbmFtZT0iY29uZmVyZW5jZU1vZHVsZVJvb21MaXN0IiB2YWx1ZT0iYWxsbWVldGluZ3MiIHR5cGU9InN0cmluZyIgLz4KKworCis8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICAgIENvbmZlcmVuY2UgUm9vbQorIC0tPgorCis8YXR0cmlidXRlIG5hbWU9ImNvbmZlcmVuY2VSb29tIiB2YWx1ZT0iY29uZmVyZW5jZVZpZXciIHR5cGU9InN0cmluZyIgLz4KKworCis8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICAgIFJlc3RyaWN0ZWQgUm9vbQorICAgIAorICAgIFJvb20gTGF5b3V0czogZmxleGlibGVSZXN0cmljdGVkQ29uZmVyZW5jZVJvb20scmVzdHJpY3RlZENvbmZlcmVuY2VSb29tCisgLS0+Cis8YXR0cmlidXRlIG5hbWU9InJlc3RyaWN0ZWRSb29tTW9kdWxlIiB2YWx1ZT0icmVzdHJpY3RlZENvbmZlcmVuY2VSb29tIiB0eXBlPSJzdHJpbmciIC8+CisKKzwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgQ3VzdG9tIFJvb20KKyAtLT4KKworPGF0dHJpYnV0ZSBuYW1lPSJjdXN0b21Sb29tTW9kdWxlIiB2YWx1ZT0iZmxleGlibGVDdXN0b21Sb29tIiB0eXBlPSJzdHJpbmciIC8+CisKKzwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgRXZlbnQgUm9vbQorICAgIAorICAgIFJvb20gTGF5b3V0czogaW50ZXJ2aWV3Q29uZmVyZW5jZVJvb20KKyAtLT4KKzxhdHRyaWJ1dGUgbmFtZT0iaW50ZXJ2aWV3Um9vbU1vZHVsZSIgdmFsdWU9ImludGVydmlld0NvbmZlcmVuY2VSb29tIiB0eXBlPSJzdHJpbmciIC8+CisKKzwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgRXZlbnQgUm9vbSBNb2R1bGVzCisgLS0+CisKKzxhdHRyaWJ1dGUgbmFtZT0icmVjb3JkTW9kdWxlIiB2YWx1ZT0icmVjb3JkQ29udGVudCIgdHlwZT0ic3RyaW5nIiAvPgorCis8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICAgIFByb2ZpbGVzIFBhbmVsIE1vZHVsZXMKKyAtLT4KKworPGF0dHJpYnV0ZSBuYW1lPSJ1c2VyU2V0dGluZ3NNb2R1bGUiIHZhbHVlPSJ1c2VyU2V0dGluZ3MiIHR5cGU9InN0cmluZyIgLz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvYmFzZS9uYXZpL2hlbHBBbmRCdWdzLmx6eCBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvbmF2aS9oZWxwQW5kQnVncy5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGM4NjI2NgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvbmF2aS9oZWxwQW5kQnVncy5sengKQEAgLTAsMCArMSwxODQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisJCis8Y2xhc3MgbmFtZT0iaGVscEFuZEJ1Z3MiIGV4dGVuZHM9InZpZXciIHg9IiR7IHBhcmVudC53aWR0aC00NzAgfSIgbGF5b3V0PSJheGlzOng7c3BhY2luZzoyIj4KKyAgICA8dmlldyBuYW1lPSJidG4wIiB3aWR0aD0iMTgwIiBoZWlnaHQ9IjI2Ij4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZW92ZXIiPgorICAgICAgICAgICAgdGhpcy5fYmcuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdXQiPgorICAgICAgICAgICAgdGhpcy5fYmcuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgIAljYW52YXMudXNlclNldHRpbmdzTW9kdWxlT3B0ID0gImNvbnRhY3RNZXNzYWdlcyI7CisgICAgICAgICAgICBxdWlja2xpbmtBY3QoInVzZXJTZXR0aW5nc01vZHVsZSIpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDx2aWV3IG5hbWU9Il9iZyIgdmlzaWJpbGl0eT0iaGlkZGVuIiB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCB9IiB5PSI0IiBvcGFjaXR5PSIwLjQiCisgICAgICAgICAgICBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ2Jhc2VNb3VzZU92ZXJjb2xvcml6ZXInKSB9IiBoZWlnaHQ9IiRvbmNleyBwYXJlbnQuaGVpZ2h0LTQgfSIgLz4KKyAgICAgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIxMTg4IiB4PSIxMCIgeT0iNiIgZm9udHNpemU9IjEyIiBmZ2NvbG9yPSIkb25jZXsgY2FudmFzLmZvbnRDb2xvckhlYWRlciB9Ii8+CisgICAgPC92aWV3PgorICAgIDx2aWV3IGJnY29sb3I9IjB4M0M4NkMzIiB5PSIxMCIgaGVpZ2h0PSIxMCIgd2lkdGg9IjEiIC8+CisgICAgPHZpZXcgbmFtZT0iYnRuMSIgd2lkdGg9IjgwIiBoZWlnaHQ9IjI2Ij4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZW92ZXIiPgorICAgICAgICAgICAgdGhpcy5fYmcuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdXQiPgorICAgICAgICAgICAgdGhpcy5fYmcuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgIAljYW52YXMudXNlclNldHRpbmdzTW9kdWxlT3B0ID0gInVzZXJQcm9maWxlIjsKKyAgICAgICAgICAgIHF1aWNrbGlua0FjdCgidXNlclNldHRpbmdzTW9kdWxlIik7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPHZpZXcgbmFtZT0iX2JnIiB2aXNpYmlsaXR5PSJoaWRkZW4iIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoIH0iIHk9IjQiIG9wYWNpdHk9IjAuNCIKKyAgICAgICAgICAgIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignYmFzZU1vdXNlT3ZlcmNvbG9yaXplcicpIH0iIGhlaWdodD0iJG9uY2V7IHBhcmVudC5oZWlnaHQtNCB9IiAvPgorICAgICAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjUiIHg9IjEwIiB5PSI2IiBmb250c2l6ZT0iMTIiIGZnY29sb3I9IiRvbmNleyBjYW52YXMuZm9udENvbG9ySGVhZGVyIH0iLz4KKyAgICA8L3ZpZXc+CisgICAgPHZpZXcgYmdjb2xvcj0iMHgzQzg2QzMiIHk9IjEwIiBoZWlnaHQ9IjEwIiB3aWR0aD0iMSIgLz4KKyAgICA8dmlldyBuYW1lPSJidG4zIiB3aWR0aD0iODAiIGhlaWdodD0iMjYiPgorICAgIAk8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3ZlciI+CisgICAgICAgICAgICB0aGlzLl9iZy5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZW91dCI+CisgICAgICAgICAgICB0aGlzLl9iZy5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgIHF1aWNrbGlua0FjdCgnbG9nb3V0Jyk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPHZpZXcgbmFtZT0iX2JnIiB2aXNpYmlsaXR5PSJoaWRkZW4iIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoIH0iIHk9IjQiIG9wYWNpdHk9IjAuNCIKKyAgICAgICAgICAgIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignYmFzZU1vdXNlT3ZlcmNvbG9yaXplcicpIH0iIGhlaWdodD0iJG9uY2V7IHBhcmVudC5oZWlnaHQgfSIgLz4KKyAgICAgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIzMTAiIHg9IjEwIiB5PSI2IiBmb250c2l6ZT0iMTIiIGZnY29sb3I9IiRvbmNleyBjYW52YXMuZm9udENvbG9ySGVhZGVyIH0iLz4KKyAgICA8L3ZpZXc+CisgICAgPHZpZXcgYmdjb2xvcj0iMHgzQzg2QzMiIHk9IjEwIiBoZWlnaHQ9IjEwIiB3aWR0aD0iMSIgLz4KKyAgICA8dmlldyBuYW1lPSJidG4yIiB3aWR0aD0iMTIwIiBoZWlnaHQ9IjI2Ij4KKyAgICAJPGhhbmRsZXIgbmFtZT0ib25tb3VzZW92ZXIiPgorICAgICAgICAgICAgdGhpcy5fYmcuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdXQiPgorICAgICAgICAgICAgdGhpcy5fYmcuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICBsei5Ccm93c2VyLmxvYWRVUkwoY2FudmFzLmN1cnJlbnRhcHBuYW1lYnVndXJsLCJfYmxhbmsiKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8dmlldyBuYW1lPSJfYmciIHZpc2liaWxpdHk9ImhpZGRlbiIgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGgtNCB9IiB5PSI0IiBvcGFjaXR5PSIwLjQiCisgICAgICAgICAgICBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ2Jhc2VNb3VzZU92ZXJjb2xvcml6ZXInKSB9IiBoZWlnaHQ9IiRvbmNleyBwYXJlbnQuaGVpZ2h0LTQgfSIgLz4KKyAgICAgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIyODQiIHg9IjEwIiB5PSI2IiBmb250c2l6ZT0iMTIiIGZnY29sb3I9IiRvbmNleyBjYW52YXMuZm9udENvbG9ySGVhZGVyIH0iLz4KKyAgICA8L3ZpZXc+Cis8L2NsYXNzPgorCQorCis8Y2xhc3MgbmFtZT0iaGVscEFuZEJ1Z3MyIiBleHRlbmRzPSJ2aWV3IiB4PSIkeyBwYXJlbnQud2lkdGgtMjkwIH0iIGxheW91dD0iYXhpczp4Ij4KKyAgICA8dmlldyBuYW1lPSJidG4xIiB3aWR0aD0iODAiPgorICAgICAgICA8dmlldyBuYW1lPSJ2MWEiIHJlc291cmNlPSJjbF9uYXZpYmFyX3JzYyIgLz4KKyAgICAgICAgPHZpZXcgbmFtZT0idjFiIiB4PSIxMCIgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGgtMTAgfSIKKyAgICAgICAgICAgIHN0cmV0Y2hlcz0id2lkdGgiIHJlc291cmNlPSJuYXZpYmFyX3JzYyIgLz4KKworICAgICAgICA8dmlldyBuYW1lPSJ2MmEiIHJlc291cmNlPSJjbF9uYXZpYmFyYnRuX3JzYyIgdmlzaWJpbGl0eT0iaGlkZGVuIi8+CisgICAgICAgIDx2aWV3IG5hbWU9InYyYiIgeD0iMTAiIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoLTEwIH0iIHZpc2liaWxpdHk9ImhpZGRlbiIKKyAgICAgICAgICAgIHN0cmV0Y2hlcz0id2lkdGgiIHJlc291cmNlPSJtYWlubmF2aV9yc2MiIC8+CisKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZW92ZXIiPgorICAgICAgICAgICAgdGhpcy52MWEuc2V0QXR0cmlidXRlKCd2aXNpYmlsaXR5JywnaGlkZGVuJyk7CisgICAgICAgICAgICB0aGlzLnYxYi5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCdoaWRkZW4nKTsKKyAgICAgICAgICAgIHRoaXMudjJhLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ3Zpc2libGUnKTsKKyAgICAgICAgICAgIHRoaXMudjJiLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ3Zpc2libGUnKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3V0Ij4KKyAgICAgICAgICAgIHRoaXMudjFhLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ3Zpc2libGUnKTsKKyAgICAgICAgICAgIHRoaXMudjFiLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ3Zpc2libGUnKTsKKyAgICAgICAgICAgIHRoaXMudjJhLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ2hpZGRlbicpOworICAgICAgICAgICAgdGhpcy52MmIuc2V0QXR0cmlidXRlKCd2aXNpYmlsaXR5JywnaGlkZGVuJyk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSI1IiB4PSIxMCIgeT0iNiIgZm9udHNpemU9IjE0IiB3aWR0aD0iMTUwIiAvPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgIHF1aWNrbGlua0FjdCgidXNlclNldHRpbmdzTW9kdWxlIik7CisgICAgICAgIDwvaGFuZGxlcj4KKworICAgIDwvdmlldz4KKyAgICA8dmlldyBuYW1lPSJidG4zIiB3aWR0aD0iODAiPgorCisgICAgICAgIDx2aWV3IG5hbWU9InYxYiIgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGggfSIKKyAgICAgICAgICAgIHN0cmV0Y2hlcz0id2lkdGgiIHJlc291cmNlPSJuYXZpYmFyX3JzYyIgLz4KKworICAgICAgICA8dmlldyBuYW1lPSJ2MmIiIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoIH0iIHZpc2liaWxpdHk9ImhpZGRlbiIKKyAgICAgICAgICAgIHN0cmV0Y2hlcz0id2lkdGgiIHJlc291cmNlPSJtYWlubmF2aV9yc2MiIC8+CisKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZW92ZXIiPgorICAgICAgICAgICAgdGhpcy52MWIuc2V0QXR0cmlidXRlKCd2aXNpYmlsaXR5JywnaGlkZGVuJyk7CisgICAgICAgICAgICB0aGlzLnYyYi5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCd2aXNpYmxlJyk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZW91dCI+CisgICAgICAgICAgICB0aGlzLnYxYi5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCd2aXNpYmxlJyk7CisgICAgICAgICAgICB0aGlzLnYyYi5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCdoaWRkZW4nKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjMxMCIgeD0iMTAiIHk9IjYiIGZvbnRzaXplPSIxNCIgd2lkdGg9IjE1MCIgLz4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICBxdWlja2xpbmtBY3QoJ2xvZ291dCcpOworICAgICAgICA8L2hhbmRsZXI+CisKKyAgICA8L3ZpZXc+CisgICAgPHZpZXcgbmFtZT0iYnRuMiIgd2lkdGg9IjEyMCI+CisKKyAgICAgICAgPHZpZXcgbmFtZT0idjFiIiB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aC0xMCB9IgorICAgICAgICAgICAgc3RyZXRjaGVzPSJ3aWR0aCIgcmVzb3VyY2U9Im5hdmliYXJfcnNjIiAvPgorICAgICAgICA8dmlldyBuYW1lPSJ2MWEiICB4PSIkb25jZXsgcGFyZW50LndpZHRoLTEwIH0iCisgICAgICAgICAgICByZXNvdXJjZT0iY3JfbmF2aWJhcl9yc2MiIC8+CisKKyAgICAgICAgPHZpZXcgbmFtZT0idjJiIiB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aC0xMCB9IiB2aXNpYmlsaXR5PSJoaWRkZW4iCisgICAgICAgICAgICBzdHJldGNoZXM9IndpZHRoIiByZXNvdXJjZT0ibWFpbm5hdmlfcnNjIiAvPgorICAgICAgICA8dmlldyBuYW1lPSJ2MmEiIHg9IiRvbmNleyBwYXJlbnQud2lkdGgtMTAgfSIKKyAgICAgICAgICAgIHJlc291cmNlPSJjcl9uYXZpYmFyYnRuX3JzYyIgdmlzaWJpbGl0eT0iaGlkZGVuIi8+CisKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZW92ZXIiPgorICAgICAgICAgICAgdGhpcy52MWEuc2V0QXR0cmlidXRlKCd2aXNpYmlsaXR5JywnaGlkZGVuJyk7CisgICAgICAgICAgICB0aGlzLnYxYi5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCdoaWRkZW4nKTsKKyAgICAgICAgICAgIHRoaXMudjJhLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ3Zpc2libGUnKTsKKyAgICAgICAgICAgIHRoaXMudjJiLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ3Zpc2libGUnKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3V0Ij4KKyAgICAgICAgICAgIHRoaXMudjFhLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ3Zpc2libGUnKTsKKyAgICAgICAgICAgIHRoaXMudjFiLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ3Zpc2libGUnKTsKKyAgICAgICAgICAgIHRoaXMudjJhLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ2hpZGRlbicpOworICAgICAgICAgICAgdGhpcy52MmIuc2V0QXR0cmlidXRlKCd2aXNpYmlsaXR5JywnaGlkZGVuJyk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIyODQiIHg9IjEwIiB5PSI2IiBmb250c2l6ZT0iMTQiIHdpZHRoPSIxNTAiIC8+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgbHouQnJvd3Nlci5sb2FkVVJMKGNhbnZhcy5jdXJyZW50YXBwbmFtZWJ1Z3VybCwiX2JsYW5rIik7CisgICAgICAgIDwvaGFuZGxlcj4KKworICAgIDwvdmlldz4KKworICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgIHRoaXMuc2V0U2hhZG93KCk7CisgICAgPC9oYW5kbGVyPgorICAgIDxtZXRob2QgbmFtZT0ic2V0U2hhZG93IiA+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICBpZiAodGhpcy5pc2luaXRlZCl7CisgICAgICAgICAgICB0aGlzLm5vcm1hbE1DID0gdGhpcy5nZXREaXNwbGF5T2JqZWN0KCk7CisgICAgICAgICAgICAgICB0aGlzLmRpc3BsYWNlbWVudE1hcCA9IG5ldyBmbGFzaC5maWx0ZXJzLkRyb3BTaGFkb3dGaWx0ZXIoKTsKKyAgICAgICAgICAgIHRoaXMubm9ybWFsTUMuZmlsdGVycyA9IFt0aGlzLmRpc3BsYWNlbWVudE1hcF07CisgICAgICAgIH0KKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvbmF2aS9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvbmF2aS9saWJyYXJ5Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDk2ZThhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvYmFzZS9uYXZpL2xpYnJhcnkubHp4CkBAIC0wLDAgKzEsMzQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisgICAgCisgICAgPCEtLSAKKyAgICBJY29uIGZyb20gRmFtRmFtIEljb24gU2V0CisgICAgIC0tPgorICAgIDxyZXNvdXJjZSBuYW1lPSJidWxsZXRfYXJyb3dfZG93bl9yc2MiPgorICAgIAk8ZnJhbWUgc3JjPSJyZXNvdXJjZXMvYnVsbGV0X2Fycm93X2Rvd24ucG5nIiAvPiAKKyAgICAJPGZyYW1lIHNyYz0icmVzb3VyY2VzL2J1bGxldF9hcnJvd19kb3duX2RhcmsucG5nIiAvPiAKKyAgICA8L3Jlc291cmNlPgorICAgIAorICAgIDxpbmNsdWRlIGhyZWY9ImhlbHBBbmRCdWdzLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJtYWluTmF2aS5sengiIC8+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvbmF2aS9tYWluTmF2aS5senggYi9XZWJDb250ZW50L3NyYy9iYXNlL25hdmkvbWFpbk5hdmkubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwNWY1MWEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL25hdmkvbWFpbk5hdmkubHp4CkBAIC0wLDAgKzEsMzYyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8Y2xhc3MgbmFtZT0idGV4dEJveFN1YkJsYW5rIiBleHRlbmRzPSJ0ZXh0IiB0ZXh0PSIkb25jZXsgcGFyZW50LnRleHQgfSIKKyAgICBmZ2NvbG9yPSIweDAwMDAwMCIgZm9udHN0eWxlPSJib2xkIgorICAgICAgICBmb250c2l6ZT0iMTQiIHk9IjYiIHg9IjEwIiAvPgorCisKKzxjbGFzcyBuYW1lPSJiYXNlRHJvcERvd25NZW51TGlzdEl0ZW0iIGV4dGVuZHM9InZpZXciIGhlaWdodD0iMzYiPgorCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJhY3Rpb24iIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9InBhcmFtcyIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iaXNvcGVuIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpc2xlYWYiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9Imxpc3QiIHZhbHVlPSJudWxsIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0idGV4dHZhbHVlIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJzZWxlY3RlZCIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0idGV4dFRvb2xUaXAiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9ImlzU3BhY2VyIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJ0ZXh0IiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZW92ZXIiPgorICAgICAgICB0aGlzLl9iZy5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdXQiPgorICAgICAgICB0aGlzLl9iZy5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKyAgICA8L2hhbmRsZXI+CisKKyAgICA8dmlldyBuYW1lPSJfYmciIHZpc2liaWxpdHk9ImhpZGRlbiIgd2lkdGg9IiR7IHBhcmVudC53aWR0aC0yIH0iIHk9IjAiIHg9IjEiCisgICAgICAgICAgYmdjb2xvcj0iMHhGRkZGRkYiIG9wYWNpdHk9IjAuNSIgaGVpZ2h0PSIzNiIgLz4KKyAgICAKKyAgICA8dGV4dCB0ZXh0PSIkb25jZXsgcGFyZW50LnRleHQgfSIgbmFtZT0iX2N0ZXh0IiBmb250c3R5bGU9ImJvbGQiIGZnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignbWVudVRleHRDb2xvcicpIH0iCisgICAgICAgIAlmb250c2l6ZT0iMTQiIHk9IjIiIHg9IjEwIiAvPgorICAgICAgICAJCisgICAgPHRleHQgdGV4dD0iJG9uY2V7IHBhcmVudC50ZXh0VG9vbFRpcCB9IiBuYW1lPSJfY3RleHRUb29sdGlwIiBmb250c3R5bGU9InBsYWluIiBmZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ21lbnVUZXh0Q29sb3InKSB9IgorICAgICAgICAJZm9udHNpemU9IjEwIiB5PSIyMCIgeD0iMTAiIC8+CQorICAgCis8L2NsYXNzPgorCis8Y2xhc3MgbmFtZT0iZHJvcERvd25NZW51TGlzdEl0ZW0iIGV4dGVuZHM9ImJhc2VEcm9wRG93bk1lbnVMaXN0SXRlbSIgPgorCisgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgIGxvYWRDb250ZW50KHRoaXMsbnVsbCxudWxsKTsKKyAgICAgICAgcGFyZW50LnBhcmVudC5jbG9zZSgpOworICAgIDwvaGFuZGxlcj4KKyAgICAKKzwvY2xhc3M+CisKKzxjbGFzcyBuYW1lPSJob3Jpem9udGFsRHJvcERvd25TcGFjZXIiIHg9IjQiIGhlaWdodD0iMSIgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdtYWluQm9yZGVyQ29sb3InKSB9Ij4KKwk8YXR0cmlidXRlIG5hbWU9ImlzU3BhY2VyIiB2YWx1ZT0idHJ1ZSIgdHlwZT0iYm9vbGVhbiIgLz4KKzwvY2xhc3M+CisKKzxjbGFzcyBuYW1lPSJiYXNlRHJvcERvd25NZW51TGlzdCIgZXh0ZW5kcz0idmlldyIgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdtYWluQm9yZGVyQ29sb3InKSB9Ij4KKwkJCisJPGF0dHJpYnV0ZSBuYW1lPSJsaXN0IiB2YWx1ZT0ibnVsbCIgLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9ImJ0blJlZiIgdmFsdWU9Im51bGwiIC8+CisJCisJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKwkJbHouTW9kZU1hbmFnZXIubWFrZU1vZGFsKHRoaXMpOworCTwvaGFuZGxlcj4KKwkKKwk8IS0tLSBAa2V5d29yZHMgcHJpdmF0ZSAtLT4KKyAgICA8bWV0aG9kIG5hbWU9InBhc3NNb2RlRXZlbnQiIGFyZ3M9ImV2ZW50U3RyLHZpZXciID4gCisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICBpZiAoIGV2ZW50U3RyID09ICJvbm1vdXNlZG93biIgICl7CisgICAgICAgICAgICAgICBpZiAoIHZpZXcgIT0gbnVsbCApIHsKKyAgICAgICAgICAgICAgICAgIGlmICggIXZpZXcuY2hpbGRPZih0aGlzKSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7CisgICAgICAgICAgICAgICB9CisgICAgICAgICAgIH0KKyAgICAgICAgICAgaWYgKHZpZXcgJiYgdmlldy5jaGlsZE9mKHRoaXMpKSB7CisgICAgICAgICAgICAgICBpZiAodmlld1sgZXZlbnRTdHIgXSkgeworICAgICAgICAgICAgICAgICAgIHZpZXdbIGV2ZW50U3RyIF0uc2VuZEV2ZW50KCB2aWV3ICk7CisgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgIH0KKyAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICBdXT4gCisgICAgPC9tZXRob2Q+ICAKKyAgICAKKwk8bWV0aG9kIG5hbWU9ImNsb3NlIj4KKwkJdGhpcy5idG5SZWYuc2V0QXR0cmlidXRlKCJzZWxlY3RlZCIsZmFsc2UpOworCQlsei5Nb2RlTWFuYWdlci5yZWxlYXNlKHRoaXMpOworCQl0aGlzLmRlc3Ryb3koKTsKKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9ImZpeFdpZHRoIj4KKwkJPCFbQ0RBVEFbCisgICAgICAgICAgICAvL3RoZSBzZWNvbmQgcm91bmQgZ29lcyB0aHJvdWdoIHRoZSBsaXN0IG9mIGl0ZW1zLCBhcyAKKyAgICAgICAgICAgIC8vbm93IHRoZSBtYXh3aWR0aCBpcyBkZXRlY3RlZCB3ZSBhZGp1c3QgdGhlIHJlc3QgdG8gaXQKKyAgICAgICAgICAgIHZhciBtYXhXaWR0aCA9IDA7CisgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTx0aGlzLl9jb250ZW50LnN1YnZpZXdzLmxlbmd0aDtpKyspIHsKKyAgICAgICAgICAgIAlpZiAodGhpcy5fY29udGVudC5zdWJ2aWV3c1tpXS53aWR0aCA+IG1heFdpZHRoKSB7CisgICAgICAgICAgICAJCW1heFdpZHRoID0gdGhpcy5fY29udGVudC5zdWJ2aWV3c1tpXS53aWR0aDsKKyAgICAgICAgICAgIAl9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvL2FkZCBhIGxpdHRsZSBiaXQgb2Ygc3BhY2luZyBhdCB0aGUgZW5kCisgICAgICAgICAgICBtYXhXaWR0aCArPSAxMDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8dGhpcy5fY29udGVudC5zdWJ2aWV3cy5sZW5ndGg7aSsrKSB7CisgICAgICAgICAgICAJaWYgKHRoaXMuX2NvbnRlbnQuc3Vidmlld3NbaV0uaXNTcGFjZXIpIHsKKyAgICAgICAgICAgIAkJdGhpcy5fY29udGVudC5zdWJ2aWV3c1tpXS5zZXRBdHRyaWJ1dGUoIndpZHRoIixtYXhXaWR0aC04KTsKKyAgICAgICAgICAgIAl9IGVsc2UgeworICAgICAgICAgICAgCQl0aGlzLl9jb250ZW50LnN1YnZpZXdzW2ldLnNldEF0dHJpYnV0ZSgid2lkdGgiLG1heFdpZHRoKTsKKyAgICAgICAgICAgIAl9CisgICAgICAgICAgICB9CisJCV1dPgorCTwvbWV0aG9kPgorCis8L2NsYXNzPgorCis8Y2xhc3MgbmFtZT0iZHJvcERvd25NZW51TGlzdCIgZXh0ZW5kcz0iYmFzZURyb3BEb3duTWVudUxpc3QiCisJCWhlaWdodD0iJHsgdGhpcy5fY29udGVudC5oZWlnaHQrMiB9IiB3aWR0aD0iJHsgdGhpcy5fY29udGVudC53aWR0aCsyIH0iPgorCQkKKwk8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorCQk8IVtDREFUQVsKKwkJCWlmICh0aGlzLmxpc3QgPT0gbnVsbCkgeworCQkJCXJldHVybjsKKwkJCX0KKwkJCWZvciAodmFyIGk9MDtpPHRoaXMubGlzdC5sZW5ndGg7aSsrKSB7CisJCQkJaWYgKGkhPTApIHsKKwkJCQkJbmV3IGx6Lmhvcml6b250YWxEcm9wRG93blNwYWNlcih0aGlzLl9jb250ZW50KTsKKwkJCQl9CisgICAgICAgICAgICAgICAgbmV3IGx6LmRyb3BEb3duTWVudUxpc3RJdGVtKHRoaXMuX2NvbnRlbnQseworICAgICAgICAgICAgICAgIAkJCXRleHR2YWx1ZTp0aGlzLmxpc3RbaV0ubmFtZSwKKyAgICAgICAgICAgICAgICAJCQl0ZXh0OnRoaXMubGlzdFtpXS5sYWJlbC52YWx1ZSwKKyAgICAgICAgICAgICAgICAJCQlpc29wZW46dGhpcy5saXN0W2ldLmlzb3BlbiwKKyAgICAgICAgICAgICAgICAJCQlpc2xlYWY6dGhpcy5saXN0W2ldLmlzbGVhZiwKKyAgICAgICAgICAgICAgICAJCQlhY3Rpb246dGhpcy5saXN0W2ldLmFjdGlvbiwKKyAgICAgICAgICAgICAgICAJCQlwYXJhbXM6dGhpcy5saXN0W2ldLnBhcmFtcywKKyAgICAgICAgICAgICAgICAJCQl0ZXh0VG9vbFRpcDpsaXN0W2ldLnRvb2x0aXAudmFsdWUKKyAgICAgICAgICAgICAgIAkJCX0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLmZpeFdpZHRoKCk7CisJCV1dPgorCTwvaGFuZGxlcj4JCisJCisJPHZpZXcgbmFtZT0iX2NvbnRlbnQiIHg9IjEiIHk9IjEiIAorCQkJbGF5b3V0PSJheGlzOnk7c3BhY2luZzoxIiBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ21lbnVCYWNrZ3JvdW5kQ29sb3InKSB9IiAvPgorCQkKKzwvY2xhc3M+CisKKzxjbGFzcyBuYW1lPSJiYXNlTWVudU1lZXRpbmdzSXRlbSIgZXh0ZW5kcz0idmlldyIgaGVpZ2h0PSIzNCIKKyAgICB3aWR0aD0iJHsgdGhpcy5fY3RleHQud2lkdGgrMzYgfSIgPgorCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJhY3Rpb24iIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwk8YXR0cmlidXRlIG5hbWU9InRleHQiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9InRleHRUb29sVGlwIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJfbWVudVJlZiIgdmFsdWU9Im51bGwiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpc29wZW4iIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImlzbGVhZiIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibGlzdCIgdmFsdWU9Im51bGwiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJ0ZXh0dmFsdWUiIHZhbHVlPSJudWxsIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0ic2VsZWN0ZWQiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9InRleHRfeV9pbnNldCIgdmFsdWU9IjYiIHR5cGU9Im51bWJlciIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9InRleHRfZm9udHNpemUiIHZhbHVlPSIxNCIgdHlwZT0ibnVtYmVyIiAvPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0iZG93bl95X2luc2V0IiB2YWx1ZT0iMTAiIHR5cGU9Im51bWJlciIgLz4KKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3ZlciI+CisgICAgICAgIGlmICghdGhpcy5zZWxlY3RlZCl7CisgICAgICAgICAgICB0aGlzLmJnYy5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCd2aXNpYmxlJyk7CisgICAgICAgIH0KKyAgICA8L2hhbmRsZXI+CisgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZW91dCI+CisgICAgICAgIGlmICghdGhpcy5zZWxlY3RlZCl7CisgICAgICAgICAgICB0aGlzLmJnYy5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCdoaWRkZW4nKTsKKyAgICAgICAgfQorICAgIDwvaGFuZGxlcj4KKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbnNlbGVjdGVkIiBhcmdzPSJ0U2VsZWN0Ij4KKyAgICAJdGhpcy5zZWxlY3RlZCA9IHRTZWxlY3Q7CisgICAgCWlmICh0U2VsZWN0KSB7CisgICAgCQl0aGlzLl9pY29uX2Rvd24uc2V0QXR0cmlidXRlKCJmcmFtZSIsMik7CisgICAgCQl0aGlzLmJnYS5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgCQl0aGlzLl9jdGV4dC5zZXRBdHRyaWJ1dGUoImZnY29sb3IiLDB4MDAwMDg4KTsKKyAgICAJfSBlbHNlIHsKKyAgICAJCXRoaXMuX2ljb25fZG93bi5zZXRBdHRyaWJ1dGUoImZyYW1lIiwxKTsKKyAgICAJCXRoaXMuYmdjLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgIAkJdGhpcy5iZ2Euc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgCQl0aGlzLl9jdGV4dC5zZXRBdHRyaWJ1dGUoImZnY29sb3IiLDB4RkZGRkZGKTsKKyAgICAJfQorICAgIDwvaGFuZGxlcj4KKyAgICAKKyAgICA8dmlldyB3aWR0aD0iJHsgcGFyZW50LndpZHRoLTEgfSIgYmdjb2xvcj0iMHhGRkZGRkYiIG9wYWNpdHk9IjAuNCIgaGVpZ2h0PSIkb25jZXsgcGFyZW50LmhlaWdodCAtIDJ9IiB5PSIxIgorICAgICAgICB2aXNpYmlsaXR5PSJoaWRkZW4iIG5hbWU9ImJnYyIvPgorICAgICAgICAKKyAgICA8dmlldyB3aWR0aD0iJHsgcGFyZW50LndpZHRoLTEgfSIgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdtZW51QmFja2dyb3VuZENvbG9yJykgfSIgaGVpZ2h0PSIkb25jZXsgcGFyZW50LmhlaWdodCB9IiAKKyAgICAgICAgdmlzaWJpbGl0eT0iaGlkZGVuIiBuYW1lPSJiZ2EiPgorICAgICAgICA8dmlldyB3aWR0aD0iJHsgcGFyZW50LndpZHRoIH0iIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignbWFpbkJvcmRlckNvbG9yJykgfSIgaGVpZ2h0PSIxIiAvPgorICAgIDwvdmlldz4KKyAgICAKKyAgICA8dmlldyBuYW1lPSJfaWNvbl9kb3duIiB4PSIkeyBwYXJlbnQud2lkdGgtMjAgfSIgeT0iJG9uY2V7IHBhcmVudC5kb3duX3lfaW5zZXQgfSIgCisgICAgCQkJcmVzb3VyY2U9ImJ1bGxldF9hcnJvd19kb3duX3JzYyIgZnJhbWU9IjEiIC8+ICAKKyAgICAKKyAgICA8dmlldyB3aWR0aD0iMSIgaGVpZ2h0PSIkeyBwYXJlbnQuaGVpZ2h0IH0iIHk9IjAiIGJnY29sb3I9IjB4RUVFRUVFIiB4PSIkeyBwYXJlbnQud2lkdGgtMSB9IiAvPgorICAgIDx0ZXh0IHRleHQ9IiRvbmNleyBwYXJlbnQudGV4dCB9IiBuYW1lPSJfY3RleHQiIGZvbnRzdHlsZT0icGxhaW4iIGZnY29sb3I9IjB4RkZGRkZGIgorICAgICAgICAJZm9udHNpemU9IiRvbmNleyBwYXJlbnQudGV4dF9mb250c2l6ZSB9IiB5PSIkb25jZXsgcGFyZW50LnRleHRfeV9pbnNldCB9IiB4PSIxMCIgLz4KKworICAgIDxsYWJlbFRvb2x0aXAgbmFtZT0iX3RleHRUb29sVGlwIiB0ZXh0PSIkb25jZXsgcGFyZW50LnRleHRUb29sVGlwIH0iIG11bHRpbGluZT0iZmFsc2UiIC8+CisgICAgCis8L2NsYXNzPgorCis8Y2xhc3MgbmFtZT0ibWFpbk1lbnVNZWV0aW5nc0l0ZW0iIGV4dGVuZHM9ImJhc2VNZW51TWVldGluZ3NJdGVtIiA+CisKKyAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAJbmV3IGx6LmRyb3BEb3duTWVudUxpc3QoY2FudmFzLHsKKyAgICAJCQkJeDp0aGlzLmdldEF0dHJpYnV0ZVJlbGF0aXZlKCJ4IixjYW52YXMpLAorICAgIAkJCQl5OnRoaXMuZ2V0QXR0cmlidXRlUmVsYXRpdmUoInkiLGNhbnZhcykrdGhpcy5oZWlnaHQsCisgICAgCQkJCWJ0blJlZjp0aGlzLAorICAgIAkJCQlsaXN0OnRoaXMubGlzdAorICAgIAkJCX0pOworICAgICAgICB0aGlzLnBhcmVudC5wYXJlbnQuc2VuZE9wZW5NZW51KHRoaXMpOworICAgIDwvaGFuZGxlcj4KKworPC9jbGFzcz4KKworPGNsYXNzIG5hbWU9Im1haW5OYXZpIiBleHRlbmRzPSJ2aWV3IiBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ3N0eWxlTWVudUJhckJhc2VDb2xvcicpIH0iIAorCSAgIHdpZHRoPSIkeyBjYW52YXMud2lkdGggfSIgeT0iNTAiID4KKworICAgIDxhdHRyaWJ1dGUgbmFtZT0ibmF2aU9iamVjdCIgdmFsdWU9Im51bGwiIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJzZWxlY3RlZCIgdmFsdWU9Im51bGwiIC8+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJzZW5kT3Blbk1lbnUiIGFyZ3M9Im1lbnVyZWYiPgorICAgIAlpZiAodGhpcy5zZWxlY3RlZCAhPSBudWxsKSB7CisgICAgCQl0aGlzLnNlbGVjdGVkLnNldEF0dHJpYnV0ZSgic2VsZWN0ZWQiLGZhbHNlKTsKKyAgICAJfQorICAgIAl0aGlzLnNlbGVjdGVkID0gbWVudXJlZjsKKyAgICAJdGhpcy5zZWxlY3RlZC5zZXRBdHRyaWJ1dGUoInNlbGVjdGVkIix0cnVlKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8IS0tLQorICAgICAgSW5pdGlhbGl6ZSBNZW51CisgICAgLS0+CisJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKwkJPCFbQ0RBVEFbCisJICAgICAgICAgdmFyIHZhbHVlID0gdGhpcy5uYXZpT2JqZWN0OworCSAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyArK2kpIHsKKwkgICAgICAgICAgICAgdmFyIHQxID0gbmV3IGx6Lm1haW5NZW51TWVldGluZ3NJdGVtKHRoaXMuaXRlbWxpc3QseworCSAgICAgICAgICAgICAgICAgIHRleHR2YWx1ZTp2YWx1ZVtpXS5uYW1lLAorCSAgICAgICAgICAgICAgICAgIGxpc3Q6dmFsdWVbaV0ubWFpbm5hdmksCisJICAgICAgICAgICAgICAgICAgaXNsZWFmOnZhbHVlW2ldLmlzbGVhZiwKKwkgICAgICAgICAgICAgICAgICB0ZXh0OnZhbHVlW2ldLmxhYmVsLnZhbHVlLAorCSAgICAgICAgICAgICAgICAgIHRleHRUb29sVGlwOnZhbHVlW2ldLnRvb2x0aXAudmFsdWUsCisJICAgICAgICAgICAgICAgICAgYWN0aW9uOnZhbHVlW2ldLmFjdGlvbgorCSAgICAgICAgICAgICAgICAgfSk7CisJICAgICAgICAgfQorCSAgICAgICAgIAorCSAgICAgICAgIGlmIChjYW52YXMuY3VzZXIgPT0gIiIpIHsKKwkgICAgICAgICAJdmFyIG9wZW5lZCA9IGZhbHNlOworCQkJCWZvciAodmFyIGkgPSAwOyBpIDwgY2FudmFzLnRoaXNoaWIuZGFzaGJvYXJkQ29uZmlnLmxlbmd0aDsgKytpKSB7CisJCQkJCXZhciBjZmcgPSBjYW52YXMudGhpc2hpYi5kYXNoYm9hcmRDb25maWdbaV07CisJCQkJCWlmIChjZmcuY29uZl9rZXkgPT0gImRlZmF1bHQubGFuZGluZy56b25lIikgeworCQkJCQkJc3dpdGNoIChjZmcuY29uZl92YWx1ZSkgeworCQkJCQkJCWNhc2UgImRhc2hib2FyZC5yb29tcyI6CisJCQkJCQkJCWxvYWRDb250ZW50KHthY3Rpb246ICJkYXNoYm9hcmRNb2R1bGVTdGFydFNjcmVlbiIsIHBhcmFtczogIm15Um9vbXNUYWJCdXR0b24ifSk7CisJCQkJCQkJCW9wZW5lZCA9IHRydWU7CisJCQkJCQkJCWJyZWFrOworCQkJCQkJCWNhc2UgImRhc2hib2FyZC5jaGF0IjoKKwkJCQkJCQkJbG9hZENvbnRlbnQoe2FjdGlvbjogImRhc2hib2FyZE1vZHVsZVN0YXJ0U2NyZWVuIiwgcGFyYW1zOiAiY2hhdFRhYkJ1dHRvbiJ9KTsKKwkJCQkJCQkJb3BlbmVkID0gdHJ1ZTsKKwkJCQkJCQkJYnJlYWs7CisJCQkJCQkJY2FzZSAiY2FsZW5kYXIiOgorCQkJCQkJCQlxdWlja2xpbmtBY3QoImRhc2hib2FyZE1vZHVsZUNhbGVuZGFyIik7CisJCQkJCQkJCW9wZW5lZCA9IHRydWU7CisJCQkJCQkJCWJyZWFrOworCQkJCQkJCWNhc2UgInJvb21zLnB1YmxpYyI6CisJCQkJCQkJCWxvYWRDb250ZW50KHthY3Rpb246ICJjb25mZXJlbmNlTW9kdWxlUm9vbUxpc3QiLCBwYXJhbXM6ICJwdWJsaWNUYWJCdXR0b24ifSk7CisJCQkJCQkJCW9wZW5lZCA9IHRydWU7CisJCQkJCQkJCWJyZWFrOworCQkJCQkJCWNhc2UgInJvb21zLnByaXZhdGUiOgorCQkJCQkJCQlsb2FkQ29udGVudCh7YWN0aW9uOiAiY29uZmVyZW5jZU1vZHVsZVJvb21MaXN0IiwgcGFyYW1zOiAicHJpdmF0ZVRhYkJ1dHRvbiJ9KTsKKwkJCQkJCQkJb3BlbmVkID0gdHJ1ZTsKKwkJCQkJCQkJYnJlYWs7CisJCQkJCQkJY2FzZSAicm9vbXMudXNlciI6CisJCQkJCQkJCWxvYWRDb250ZW50KHthY3Rpb246ICJjb25mZXJlbmNlTW9kdWxlUm9vbUxpc3QiLCBwYXJhbXM6ICJteVRhYkJ1dHRvbiJ9KTsKKwkJCQkJCQkJb3BlbmVkID0gdHJ1ZTsKKwkJCQkJCQkJYnJlYWs7CisJCQkJCQl9CisJCQkJCQlicmVhazsKKwkJCQkJfQorCQkJCX0KKwkJCQlpZiAoIW9wZW5lZCAmJiB2YWx1ZS5sZW5ndGgpIHsKKwkJCQkJdmFyIG5hdmkgPSB2YWx1ZVswXS5tYWlubmF2aVswXTsKKwkJCQkJbG9hZENvbnRlbnQoe2FjdGlvbjogbmF2aS5hY3Rpb24sIHBhcmFtczogbmF2aS5wYXJhbXN9KTsKKwkJCQl9CisJICAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAJaWYgKGNhbnZhcy5jdXNlclN0YXR1cyA9PSAieWVzIikgeworCSAgICAgICAgIAkJdGhpcy5jaGFuZ2VVc2VyQ29udGFjdEJ5SGFzaC5wZW5kaW5nID0gdHJ1ZTsKKwkgICAgICAgICAJCXRoaXMuY2hhbmdlVXNlckNvbnRhY3RCeUhhc2guZG9DYWxsKCk7CisJICAgICAgICAgCX0gZWxzZSBpZiAoY2FudmFzLmN1c2VyU3RhdHVzID09ICJubyIpIHsKKwkgICAgICAgICAJCXRoaXMuY2hhbmdlVXNlckNvbnRhY3RCeUhhc2gucGVuZGluZyA9IGZhbHNlOworCSAgICAgICAgIAkJdGhpcy5jaGFuZ2VVc2VyQ29udGFjdEJ5SGFzaC5kb0NhbGwoKTsKKwkgICAgICAgICAJfSBlbHNlIHsKKwkgICAgICAgICAJCWNhbnZhcy51c2VyU2V0dGluZ3NNb2R1bGVPcHQgPSAiY29udGFjdE1lc3NhZ2VzIjsKKwkgICAgICAgICAJCXF1aWNrbGlua0FjdCgidXNlclNldHRpbmdzTW9kdWxlIik7CisJICAgICAgICAgCX0KKwkJCX0KKwkgICAgICAgICAgICAKKyAgICAgIAldXT4KKwk8L2hhbmRsZXI+CisgICAgCisgICAgPCEtLQorICAgIAlwdWJsaWMgT2JqZWN0IGNoYW5nZVVzZXJDb250YWN0QnlIYXNoKFN0cmluZyBTSUQsIFN0cmluZyBoYXNoLCBCb29sZWFuIHN0YXR1cykKKyAgICAgLS0+CisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iY2hhbmdlVXNlckNvbnRhY3RCeUhhc2giIGZ1bmNuYW1lPSJ1c2Vyc2VydmljZS5jaGFuZ2VVc2VyQ29udGFjdEJ5SGFzaCIgCisJCQkJICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgYWN0aXZlRXJyb3JIYW5kbGVyPSJ0cnVlIiA+ICAgICAgCisJCTxhdHRyaWJ1dGUgbmFtZT0icGVuZGluZyIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CisJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIGNhbnZhcy5jdXNlcjsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBlbmRpbmc7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgCTxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgIAkJPCFbQ0RBVEFbCisJICAgIAkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImNoYW5nZVBlbmRpbmdTdGF0dXNVc2VyQ29udGFjdHMgMTogIix2YWx1ZSk7CisJICAgIAkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImNoYW5nZVBlbmRpbmdTdGF0dXNVc2VyQ29udGFjdHMgMjogIixjYW52YXMuY3VzZXIpOworCSAgICAJCQorCSAgICAJCWlmICh2YWx1ZSA+IDApIHsKKwkgICAgCQkJaWYgKHRoaXMucGVuZGluZykgeworCSAgICAJCQkJbmV3IGx6LmxhYmVsZXJyb3JQb3B1cChjYW52YXMse2xhYmVsaWQ6MjE3LGVycm9ybGFiZWxpZDoxMjI5fSk7CisJICAgIAkJCX0gZWxzZSB7CisJICAgIAkJCQluZXcgbHoubGFiZWxlcnJvclBvcHVwKGNhbnZhcyx7bGFiZWxpZDoyMTcsZXJyb3JsYWJlbGlkOjEyMzB9KTsKKwkgICAgCQkJfQorCSAgICAJCX0KKwkgICAgCQkKKwkgICAgCQlxdWlja2xpbmtBY3QoInVzZXJTZXR0aW5nc01vZHVsZSIpOworICAgIAkJXV0+CisgICAgCTwvaGFuZGxlcj4KKyAgICA8L25ldFJlbW90ZUNhbGxIaWI+CisgICAgCisgICAgPHZpZXcgbmFtZT0iaXRlbWxpc3QiIGxheW91dD0iYXhpczp4O3NwYWNpbmc6MCIgLz4KKyAgICAKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvbmF2aS9yZXNvdXJjZXMvYnVsbGV0X2Fycm93X2Rvd24ucG5nIGIvV2ViQ29udGVudC9zcmMvYmFzZS9uYXZpL3Jlc291cmNlcy9idWxsZXRfYXJyb3dfZG93bi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWIyM2MwNgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvbmF2aS9yZXNvdXJjZXMvYnVsbGV0X2Fycm93X2Rvd24ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvbmF2aS9yZXNvdXJjZXMvYnVsbGV0X2Fycm93X2Rvd25fZGFyay5wbmcgYi9XZWJDb250ZW50L3NyYy9iYXNlL25hdmkvcmVzb3VyY2VzL2J1bGxldF9hcnJvd19kb3duX2RhcmsucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1NTA0ZjgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9iYXNlL25hdmkvcmVzb3VyY2VzL2J1bGxldF9hcnJvd19kb3duX2RhcmsucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvcmVtb3RlL2RhdGFzZXRIZWxwZXIubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9yZW1vdGUvZGF0YXNldEhlbHBlci5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQ3Y2YyMgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvcmVtb3RlL2RhdGFzZXRIZWxwZXIubHp4CkBAIC0wLDAgKzEsNTcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/Pg0KKzwhLS0NCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgIA0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAgICAJICANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAgdW5kZXIgdGhlIExpY2Vuc2UuDQorICANCistLT4NCis8bGlicmFyeT4NCisJPGNsYXNzIG5hbWU9ImRhdGFzZXRIZWxwZXIiPg0KKwkJPGF0dHJpYnV0ZSBuYW1lPSJzdWNjZXNzSGFuZGxlciIgdHlwZT0ib2JqZWN0IiAvPg0KKwkJDQorCQk8ZGF0YXNldCBuYW1lPSJyZXN0ZGF0YXNldCIgdHlwZT0iaHR0cCI+DQorCQkJPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJkIj4NCisJCQk8IVtDREFUQVsNCisJCQkJLy9NYWtlIHN1cmUgYW55IGN1cnNvciBzdGF0dXMgaXMgcmVzZXQNCisJCQkJbHouQ3Vyc29yLnJlc3RvcmVDdXJzb3IoKTsNCisJCQkJbHouQ3Vyc29yLnNob3dIYW5kQ3Vyc29yKHRydWUpOw0KKwkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgicmVzdGRhdGFzZXQgb25kYXRhIiwgZCk7DQorCQkJCQ0KKwkJCQlpZiAodHlwZW9mIHBhcmVudC5zdWNjZXNzSGFuZGxlciAhPSB1bmRlZmluZWQgJiYgcGFyZW50LnN1Y2Nlc3NIYW5kbGVyICE9IHVuZGVmaW5lZCAmJiBwYXJlbnQuc3VjY2Vzc0hhbmRsZXIgIT0gbnVsbCkgew0KKwkJCQkJcGFyZW50LnN1Y2Nlc3NIYW5kbGVyKHBhcmVudC5wYXJlbnQsIGQpOw0KKwkJCQl9DQorCQkJXV0+DQorCQkJPC9oYW5kbGVyPg0KKwkJPC9kYXRhc2V0Pg0KKwkJDQorCQk8bWV0aG9kIG5hbWU9ImNhbGwiPg0KKwkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ0aGlzLnJlc3RkYXRhc2V0ICIsdGhpcy5yZXN0ZGF0YXNldCk7DQorCQkJdGhpcy5yZXN0ZGF0YXNldC5kb1JlcXVlc3QoKTsNCisJCTwvbWV0aG9kPg0KKwkJDQorCQk8bWV0aG9kIG5hbWU9InNldFNlcnZpY2VTb3VyY2UiIGFyZ3M9Im0sbyI+DQorCQk8IVtDREFUQVsNCisJCQl2YXIgcGFyYW1zID0gIj9TSUQ9IiArIGNhbnZhcy5zZXNzaW9uSWQ7DQorCQkJaWYgKG8pIHsNCisJCQkJZm9yICh2YXIga2V5IGluIG8pIHsNCisJCQkJCXBhcmFtcyArPSAiJiIgKyBlbmNvZGVVUklDb21wb25lbnQoa2V5KSArICI9IiArIGVuY29kZVVSSUNvbXBvbmVudChvW2tleV0pOw0KKwkJCQl9DQorCQkJfQ0KKwkJCXRoaXMucmVzdGRhdGFzZXQuc2V0QXR0cmlidXRlKCJzcmMiLCBjYW52YXMuZ2V0U2VydmljZXNVcmwoKSArIG0gKyBwYXJhbXMpOw0KKwkJXV0+DQorCQk8L21ldGhvZD4NCisJPC9jbGFzcz4gDQorPC9saWJyYXJ5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL2Jhc2UvcmVtb3RlL2xpYnJhcnkubHp4IGIvV2ViQ29udGVudC9zcmMvYmFzZS9yZW1vdGUvbGlicmFyeS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc2MzY4ZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvcmVtb3RlL2xpYnJhcnkubHp4CkBAIC0wLDAgKzEsMjcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisJCisJPGluY2x1ZGUgaHJlZj0iZGF0YXNldEhlbHBlci5sengiIC8+CisJPGluY2x1ZGUgaHJlZj0icnRtcENvbm5lY3Rpb24ubHp4IiAvPgorCTxpbmNsdWRlIGhyZWY9InNoYXJlZE9iamVjdC5sengiIC8+CisgICAgCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9iYXNlL3JlbW90ZS9ydG1wQ29ubmVjdGlvbi5senggYi9XZWJDb250ZW50L3NyYy9iYXNlL3JlbW90ZS9ydG1wQ29ubmVjdGlvbi5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQzMThiNAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvcmVtb3RlL3J0bXBDb25uZWN0aW9uLmx6eApAQCAtMCwwICsxLDMzNiBAQAorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKworPGNsYXNzIG5hbWU9InJ0bXBDb25uZWN0aW9uIiBleHRlbmRzPSJub2RlIj4KKyAgICAJCisgICAgCTxhdHRyaWJ1dGUgbmFtZT0iZGVidWciIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICAJCisgICAgCTxldmVudCBuYW1lPSJvbmNvbm5lY3QiLz4KKyAgICAJPGV2ZW50IG5hbWU9Im9uZXJyb3IiLz4KKyAgICAJPGV2ZW50IG5hbWU9Im9uZGlzY29ubmVjdCIgLz4KKyAgICAgICAgCisgICAgICAgIDwhLS0gdGhpcyBhdHRyaWJ1dGUgaG9sZHMgYSByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQvbGFzdCBjYWxsZWQgbmV0cmVtb3RlQ2FsbCwKKyAgICAgICAgaW4gY2FzZSBvZiBlcnJvciB5b3UgY2FuIGRlYnVnIHRoYXQgd2F5IHdoaWNoIGNhbGwgZGlkIGZhaWwgLS0+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ibGFzdENhbGxlZCIgdmFsdWU9Im51bGwiIC8+CisgICAgCQorICAgIAk8YXR0cmlidXRlIG5hbWU9InNyYyIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIi8+CisgICAgCQorCQk8bWV0aG9kIG5hbWU9ImNvbm5lY3QiPgorICAgICAgICAgICAgdGhpcy5fbmMgPSBuZXcgTmV0Q29ubmVjdGlvbigpOworCisgICAgICAgICAgICAvLyBsb2NhbCByZWZlcmVuY2UgdG8gcnRtcGNvbm5lY3Rpb24KKyAgICAgICAgICAgIHRoaXMuX25jLnQgPSB0aGlzOyAgICAgCisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuX25jLnByb3h5VHlwZSA9IGNhbnZhcy5wcm94eVR5cGU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciBvayA9IHRoaXMuX25jLmNvbm5lY3Qoc3JjID09ICJudWxsIiA/IG51bGwgOiBzcmMsIGZhbHNlKTsgLy9pc0FWQ2xpZW50ID0gZmFsc2UKKyAgICAgICAgICAgIGlmICh0aGlzLmRlYnVnKSB7CisgICAgICAgICAgICAJaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiKioqIGRlYnVnICoqKiIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAvL2NhbnZhcy5jdXJyZW50TkMgaXMgdGhlIHJlZmVyZW5jZSB0byB0aGUgTmV0Q29ubmVjdGlvbiB0aGF0IGlzIHVzZWQgaW4gdGhlIE5ldFN0cmVhbQorICAgICAgICAgICAgY2FudmFzLmN1cnJlbnROQyA9IHRoaXMuX25jOworICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLl9uYy5vblN0YXR1cyA9IGZ1bmN0aW9uKGluZm8peworICAgICAgICAgICAgICAgIHRoaXMudC5fb25TdGF0dXMoaW5mbyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAJCWlmKCRkZWJ1ZykgRGVidWcud3JpdGUoImRldlJ0bXBDb25uZWN0aW9uL3JlZ2lzdGVyTWV0aG9kcygpIik7CisJCQkvL1JlZ2lzdGVyIE1ldGhvZHMKKwkJCXRoaXMucmVnaXN0ZXJNZXRob2RzKCk7ICAgIAkgICAgICAgICAgICAKKwkJPC9tZXRob2Q+CisJCQorICAgICAgICA8bWV0aG9kIG5hbWU9Il9vblN0YXR1cyIgYXJncz0iaW5mbyI+PCFbQ0RBVEFbCisgICAgICAgICAgICBpZiAodGhpcy5kZWJ1ZykgeworICAgICAgICAgICAgICAgIERlYnVnLndyaXRlKCJkZXZydG1wY29ubmVjdGlvbiIsIHRoaXMsICJfb25TdGF0dXMiLCBpbmZvLmNvZGUpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgbXNnID0gIiI7CisKKyAgICAgICAgICAgIHN3aXRjaCAoaW5mby5jb2RlKSB7CisKKyAgICAgICAgICAgICAgICBjYXNlICJOZXRDb25uZWN0aW9uLkNvbm5lY3QuU3VjY2VzcyI6IHsKKyAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGNvbm5lY3Rpb24gYXR0ZW1wdCBzdWNjZWVkZWQuCisgICAgICAgICAgICAgICAgICAgIG1zZyA9IGluZm8uY29kZTsKKyAgICAgICAgICAgICAgICAgICAgcyA9IDI7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHsKKyAgICAgICAgICAgICAgICAgICAgbXNnID0gaW5mby5jb2RlOworICAgICAgICAgICAgICAgICAgICBzID0gMDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJzdGF0dXMiLCBtc2cpOworCisgICAgICAgICAgICBpZiAocyA9PSAyKSB7CisgICAgICAgICAgICAgICAgdGhpcy5vbmNvbm5lY3Quc2VuZEV2ZW50KCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgCXRoaXMub25lcnJvci5zZW5kRXZlbnQoKTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgIF1dPgorICAgICAgICA8L21ldGhvZD4JCisgICAgICAgIAorICAgICAgICA8bWV0aG9kIG5hbWU9ImRpc2Nvbm5lY3QiPgorICAgICAgICAgICAgdGhpcy5vbmRpc2Nvbm5lY3Quc2VuZEV2ZW50KCk7CisgICAgICAgIAljYW52YXMuY3VycmVudE5DID0gbnVsbDsKKyAgICAgICAgICAgIHRoaXMuX25jLmNsb3NlKCk7CisgICAgICAgIDwvbWV0aG9kPgorICAgIDwhLS0tIAorICAgICAgICBXaXRoIHRoaXMgZnVuY3Rpb24gYWxsIG1ldGhvZHMgYXJlIHJlZ2lzdGVyZWQgdG8gdGhlIE5ldENvbm5lY3Rpb24KKyAgICAgICAgQSBzZXJ2ZXIgY2FuIGludm9rZSB0aGlzIE1ldGhvZCB3aXRoIGEgY2FsbCBmb3IgaXQgZnJvbSB0aGUgQ2xpZW50CisgICAgICAgIE9ubHkgc3Vibm9kZXMgb2YgcnRtcGNvbm5lY3Rpb25zIHdoaWNoIGFyZSBhIGluc3RhbmNlIG9mIG5ldFJlbW90ZUNhbGxIaWIKKyAgICAgICAgYXJlIHJlZ2lzdGVyZWQsIHRvIGFkZCBkeW5hbWljYWxseSBtZXRob2RzIHRvIHRoZSByZW1vdGVmdW5jdGlvbiB5b3Ugd2lsbAorICAgICAgICBoYXZlIHRvIGludm9rZSB0aGlzIG1ldGhvZCBvbmNlIGFnYWluCisgICAgICAgIC1zd2FnbmVyCisgICAgIC0tPgorICAgIDxtZXRob2QgbmFtZT0icmVnaXN0ZXJNZXRob2RzIj4KKyAgICAgICAgPCFbQ0RBVEFbCisJICAgICAgICBpZiAodGhpcy5zdWJub2RlcyE9bnVsbCl7CisJCSAgICAgICAgLy9SZWdpc3RlciBhbGwgbWV0aG9kcyB3aGljaCBhcmUgb25zdGFuY2VvZiBuZXRSZW1vdGVDYWxsSGliCisJCSAgICAgICAgZm9yICh2YXIgaT0wO2k8dGhpcy5zdWJub2Rlcy5sZW5ndGg7aSsrKXsKKwkJICAgICAgICAgICAgLy9JZiBpdCBpcyBvZiBUeXBlIG5ldFJlbW90ZUNhbGxIaWIgdGhlbiByZWdpc3RlciBpdCB0byB0aGUgTmV0Q29ubmVjdGlvbgorCQkgICAgICAgICAgICBpZiAodGhpcy5zdWJub2Rlc1tpXSBpbnN0YW5jZW9mIGx6Lm5ldFJlbW90ZUNhbGxIaWIpeworCQkgICAgICAgICAgICAgICAgdmFyIHQgPSBoaWI7CisJCSAgICAgICAgICAgICAgICB0aGlzLl9uY1t0aGlzLnN1Ym5vZGVzW2ldLmZ1bmNuYW1lXSA9IGZ1bmN0aW9uKCBhcmdzICl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhpYi5yZW1vdGVDYWxsTWV0aG9kKGFyZ3VtZW50cy5jYWxsZWUsYXJndW1lbnRzKTsKKwkJICAgICAgICAgICAgICAgICAgICAvL3JldHVybiBoaWIucmVtb3RlQ2FsbE1ldGhvZChhcmd1bWVudHMuY2FsbGVlLGFyZ3MpOworCQkgICAgICAgICAgICAgICAgfQorCQkgICAgICAgICAgICB9CisJCSAgICAgICAgfQorICAgICAgICAJfQorICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8IS0tIAorICAgICAgICBQcm9jZXNzIHRoZSBSZW1vdGVDYWxsIHRvIHRoZSBSaWdodCBGdW50aW9uCisgICAgICAgIC1zd2FnbmVyCisgICAgIC0tPgorICAgIDxtZXRob2QgbmFtZT0icmVtb3RlQ2FsbE1ldGhvZCIgYXJncz0iY2FsbGVlLGFyZ3MiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIGZvciAodmFyIGVnIGluIHRoaXMuX25jKXsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5fbmNbZWddPT1jYWxsZWUpeworICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5kZWJ1ZykgeworICAgICAgICAgICAgICAgICAgICAgICAgLy9fcm9vdC5EZWJ1Zy53cml0ZS53cml0ZSgiREVCVUcgaW52b2tlZCBhIGZ1bmN0aW9uIHJlbW90ZWx5OiAiLGVnLGFyZ3MpOworICAgICAgICAgICAgICAgICAgICB9ICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAoYXJncy5sZW5ndGggPT0gMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2FsbEZ1bnRpb24oZWcsYXJnc1swXSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jYWxsRnVudGlvbihlZyxhcmdzKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAvL3JldHVybiB0aGlzLmNhbGxGdW50aW9uKGVnLGFyZ3MpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPCEtLSAKKyAgICAgICAgTWFwIHRoZSBGdW5jdGlvbiB0byBhIG5ldFJlbW90ZUNhbGxIaWIKKyAgICAgICAgLXN3YWduZXIKKyAgICAgLS0+CisgICAgPG1ldGhvZCBuYW1lPSJjYWxsRnVudGlvbiIgYXJncz0iZnVuY25hbWUsYXJncyI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8dGhpcy5zdWJub2Rlcy5sZW5ndGg7aSsrKXsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5zdWJub2Rlc1tpXS5mdW5jbmFtZT09ZnVuY25hbWUpeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zdWJub2Rlc1tpXS5vblJlc3VsdChhcmdzKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgkJCisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJjYWxsUlBDIiBhcmdzPSJmdW5jLCBvYmosIHBhcmFtcyI+CisgICAgCWlmICh0aGlzLmRlYnVnKSBEZWJ1Zy53cml0ZSgiKioqIGNhbGw6IGZ1bmMsIG9iaiwgcGFyYW1zIixmdW5jLG9iaiwgdHlwZW9mIChwYXJhbXMpICxwYXJhbXMubGVuZ3RoKTsKKyAgICAJaWYgKHBhcmFtcy5sZW5ndGggIT0gMCl7CisJICAgIAkvL2RvZXMgdGhpcyByZWFsbHkgd29yaz8KKwkgICAgCUFTU2V0UHJvcEZsYWdzKF9nbG9iYWwsIG51bGwsIDgsIDEpOworCSAgICAJLy9EZWJ1Zy53cml0ZSgiZG9lcyBpdCB3b3JrPyIsYXJndW1lbnRzKTsKKwkgICAgCTwhLS0KKwkgICAgCXRoaXMuX25jLmNhbGwuYXBwbHkodGhpcy5fbmMsYXJndW1lbnRzKTsKKwkgICAgCSAtLT4KKwkJCWlmIChwYXJhbXMubGVuZ3RoPT0xKXsKKwkJCSAgICB0aGlzLl9uYy5jYWxsKGZ1bmMsIG9iaixwYXJhbXNbMF0pOworCQkJfSBlbHNlIGlmIChwYXJhbXMubGVuZ3RoPT0yKXsKKwkJCSAgICB0aGlzLl9uYy5jYWxsKGZ1bmMsIG9iaixwYXJhbXNbMF0scGFyYW1zWzFdKTsKKwkJCX0gZWxzZSBpZiAocGFyYW1zLmxlbmd0aD09Myl7CisJCQkgICAgdGhpcy5fbmMuY2FsbChmdW5jLCBvYmoscGFyYW1zWzBdLHBhcmFtc1sxXSxwYXJhbXNbMl0pOworCQkJfSBlbHNlIGlmIChwYXJhbXMubGVuZ3RoPT00KXsKKwkJCSAgICB0aGlzLl9uYy5jYWxsKGZ1bmMsIG9iaixwYXJhbXNbMF0scGFyYW1zWzFdLHBhcmFtc1syXSxwYXJhbXNbM10pOworCQkJfSBlbHNlIGlmIChwYXJhbXMubGVuZ3RoPT01KXsKKwkJCSAgICB0aGlzLl9uYy5jYWxsKGZ1bmMsIG9iaixwYXJhbXNbMF0scGFyYW1zWzFdLHBhcmFtc1syXSxwYXJhbXNbM10scGFyYW1zWzRdKTsKKwkJCX0gZWxzZSBpZiAocGFyYW1zLmxlbmd0aD09Nil7CisJCQkgICAgdGhpcy5fbmMuY2FsbChmdW5jLCBvYmoscGFyYW1zWzBdLHBhcmFtc1sxXSxwYXJhbXNbMl0scGFyYW1zWzNdLHBhcmFtc1s0XSxwYXJhbXNbNV0pOworCQkJfSBlbHNlIGlmIChwYXJhbXMubGVuZ3RoPT03KXsKKwkJCSAgICB0aGlzLl9uYy5jYWxsKGZ1bmMsIG9iaixwYXJhbXNbMF0scGFyYW1zWzFdLHBhcmFtc1syXSxwYXJhbXNbM10scGFyYW1zWzRdLHBhcmFtc1s1XSxwYXJhbXNbNl0pOworCQkJfSBlbHNlIGlmIChwYXJhbXMubGVuZ3RoPT04KXsKKwkJCSAgICB0aGlzLl9uYy5jYWxsKGZ1bmMsIG9iaixwYXJhbXNbMF0scGFyYW1zWzFdLHBhcmFtc1syXSxwYXJhbXNbM10scGFyYW1zWzRdLHBhcmFtc1s1XSxwYXJhbXNbNl0scGFyYW1zWzddKTsKKwkJCX0gZWxzZSBpZiAocGFyYW1zLmxlbmd0aD09OSl7CisJCQkgICAgdGhpcy5fbmMuY2FsbChmdW5jLCBvYmoscGFyYW1zWzBdLHBhcmFtc1sxXSxwYXJhbXNbMl0scGFyYW1zWzNdLHBhcmFtc1s0XSxwYXJhbXNbNV0scGFyYW1zWzZdLHBhcmFtc1s3XSxwYXJhbXNbOF0pOworCQkJfSBlbHNlIGlmIChwYXJhbXMubGVuZ3RoPT0xMCl7CisJCQkgICAgdGhpcy5fbmMuY2FsbChmdW5jLCBvYmoscGFyYW1zWzBdLHBhcmFtc1sxXSxwYXJhbXNbMl0scGFyYW1zWzNdLHBhcmFtc1s0XSxwYXJhbXNbNV0scGFyYW1zWzZdLHBhcmFtc1s3XSxwYXJhbXNbOF0scGFyYW1zWzldKTsKKwkJCX0gZWxzZSBpZiAocGFyYW1zLmxlbmd0aD09MTEpeworCQkJICAgIHRoaXMuX25jLmNhbGwoZnVuYywgb2JqLHBhcmFtc1swXSxwYXJhbXNbMV0scGFyYW1zWzJdLHBhcmFtc1szXSxwYXJhbXNbNF0scGFyYW1zWzVdLHBhcmFtc1s2XSxwYXJhbXNbN10scGFyYW1zWzhdLHBhcmFtc1s5XSxwYXJhbXNbMTBdKTsKKwkJCX0gZWxzZSBpZiAocGFyYW1zLmxlbmd0aD09MTIpeworCQkJICAgIHRoaXMuX25jLmNhbGwoZnVuYywgb2JqLHBhcmFtc1swXSxwYXJhbXNbMV0scGFyYW1zWzJdLHBhcmFtc1szXSxwYXJhbXNbNF0scGFyYW1zWzVdLHBhcmFtc1s2XSxwYXJhbXNbN10scGFyYW1zWzhdLHBhcmFtc1s5XSxwYXJhbXNbMTBdLHBhcmFtc1sxMV0pOworCQkJfSBlbHNlIGlmIChwYXJhbXMubGVuZ3RoPT0xMyl7CisJCQkgICAgdGhpcy5fbmMuY2FsbChmdW5jLCBvYmoscGFyYW1zWzBdLHBhcmFtc1sxXSxwYXJhbXNbMl0scGFyYW1zWzNdLHBhcmFtc1s0XSxwYXJhbXNbNV0scGFyYW1zWzZdLHBhcmFtc1s3XSxwYXJhbXNbOF0scGFyYW1zWzldLHBhcmFtc1sxMF0scGFyYW1zWzExXSxwYXJhbXNbMTJdKTsKKwkJCX0gZWxzZSBpZiAocGFyYW1zLmxlbmd0aD09MTQpeworCQkJICAgIHRoaXMuX25jLmNhbGwoZnVuYywgb2JqLHBhcmFtc1swXSxwYXJhbXNbMV0scGFyYW1zWzJdLHBhcmFtc1szXSxwYXJhbXNbNF0scGFyYW1zWzVdLHBhcmFtc1s2XSxwYXJhbXNbN10scGFyYW1zWzhdLHBhcmFtc1s5XSxwYXJhbXNbMTBdLHBhcmFtc1sxMV0scGFyYW1zWzEyXSxwYXJhbXNbMTNdKTsKKwkJCX0gZWxzZSBpZiAocGFyYW1zLmxlbmd0aD09MTUpeworCQkJICAgIHRoaXMuX25jLmNhbGwoZnVuYywgb2JqLHBhcmFtc1swXSxwYXJhbXNbMV0scGFyYW1zWzJdLHBhcmFtc1szXSxwYXJhbXNbNF0scGFyYW1zWzVdLHBhcmFtc1s2XSxwYXJhbXNbN10scGFyYW1zWzhdLHBhcmFtc1s5XSxwYXJhbXNbMTBdLHBhcmFtc1sxMV0scGFyYW1zWzEyXSxwYXJhbXNbMTNdLHBhcmFtc1sxNF0pOworCQkJfSBlbHNlIGlmIChwYXJhbXMubGVuZ3RoPT0xNil7CisJCQkgICAgdGhpcy5fbmMuY2FsbChmdW5jLCBvYmoscGFyYW1zWzBdLHBhcmFtc1sxXSxwYXJhbXNbMl0scGFyYW1zWzNdLHBhcmFtc1s0XSxwYXJhbXNbNV0scGFyYW1zWzZdLHBhcmFtc1s3XSxwYXJhbXNbOF0scGFyYW1zWzldLHBhcmFtc1sxMF0scGFyYW1zWzExXSxwYXJhbXNbMTJdLHBhcmFtc1sxM10scGFyYW1zWzE0XSxwYXJhbXNbMTVdKTsKKwkJCX0gZWxzZSBpZiAocGFyYW1zLmxlbmd0aD09MTcpeworCQkJICAgIHRoaXMuX25jLmNhbGwoZnVuYywgb2JqLHBhcmFtc1swXSxwYXJhbXNbMV0scGFyYW1zWzJdLHBhcmFtc1szXSxwYXJhbXNbNF0scGFyYW1zWzVdLHBhcmFtc1s2XSxwYXJhbXNbN10scGFyYW1zWzhdLHBhcmFtc1s5XSxwYXJhbXNbMTBdLHBhcmFtc1sxMV0scGFyYW1zWzEyXSxwYXJhbXNbMTNdLHBhcmFtc1sxNF0scGFyYW1zWzE1XSxwYXJhbXNbMTZdKTsKKwkJCX0gZWxzZSBpZiAocGFyYW1zLmxlbmd0aD09MTgpeworCQkJICAgIHRoaXMuX25jLmNhbGwoZnVuYywgb2JqLHBhcmFtc1swXSxwYXJhbXNbMV0scGFyYW1zWzJdLHBhcmFtc1szXSxwYXJhbXNbNF0scGFyYW1zWzVdLHBhcmFtc1s2XSxwYXJhbXNbN10scGFyYW1zWzhdLHBhcmFtc1s5XSxwYXJhbXNbMTBdLHBhcmFtc1sxMV0scGFyYW1zWzEyXSxwYXJhbXNbMTNdLHBhcmFtc1sxNF0scGFyYW1zWzE1XSxwYXJhbXNbMTZdLHBhcmFtc1sxN10pOworCQkJfSBlbHNlIGlmIChwYXJhbXMubGVuZ3RoPT0xOSl7CisJCQkgICAgdGhpcy5fbmMuY2FsbChmdW5jLCBvYmoscGFyYW1zWzBdLHBhcmFtc1sxXSxwYXJhbXNbMl0scGFyYW1zWzNdLHBhcmFtc1s0XSxwYXJhbXNbNV0scGFyYW1zWzZdLHBhcmFtc1s3XSxwYXJhbXNbOF0scGFyYW1zWzldLHBhcmFtc1sxMF0scGFyYW1zWzExXSxwYXJhbXNbMTJdLHBhcmFtc1sxM10scGFyYW1zWzE0XSxwYXJhbXNbMTVdLHBhcmFtc1sxNl0scGFyYW1zWzE3XSxwYXJhbXNbMThdKTsKKwkJCX0gZWxzZSBpZiAocGFyYW1zLmxlbmd0aD09MjApeworCQkJICAgIHRoaXMuX25jLmNhbGwoZnVuYywgb2JqLHBhcmFtc1swXSxwYXJhbXNbMV0scGFyYW1zWzJdLHBhcmFtc1szXSxwYXJhbXNbNF0scGFyYW1zWzVdLHBhcmFtc1s2XSxwYXJhbXNbN10scGFyYW1zWzhdLHBhcmFtc1s5XSxwYXJhbXNbMTBdLHBhcmFtc1sxMV0scGFyYW1zWzEyXSxwYXJhbXNbMTNdLHBhcmFtc1sxNF0scGFyYW1zWzE1XSxwYXJhbXNbMTZdLHBhcmFtc1sxN10scGFyYW1zWzE4XSxwYXJhbXNbMTldKTsKKwkJCX0JICAgIAkgCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aGlzLl9uYy5jYWxsKGZ1bmMsIG9iaik7CisgICAgICAgIH0KKyAgICA8L21ldGhvZD4KKyAgICAKKzwvY2xhc3M+CisKKworICAgIDwhLS0tCisgICAgICAgIE5ldCByZW1vdGUgY2FsbC4gCisgICAgICAgIEB0b2RvIERvY3VtZW50IG5ldHJlbW90ZWNhbGwgY2xhc3MuCisgICAgLS0+CisgICAgPGNsYXNzIG5hbWU9Im5ldHJlbW90ZWNhbGwiIGV4dGVuZHM9Im5vZGUiPgorCisKKyAgICAgICAgPCEtLS0gTmFtZSBvZiB0aGUgcmVtb3RlIGZ1bmN0aW9uLiAtLT4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJmdW5jbmFtZSIgdmFsdWU9IiRvbmNle251bGx9IiB0eXBlPSJzdHJpbmciIC8+CisgICAgCisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0icmVtb3RlY29udGV4dCIgdmFsdWU9Im51bGwiIC8+CisgICAgCisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iZGF0YW9iamVjdCIgdmFsdWU9Im51bGwiIC8+CisJCQorICAgICAgICA8IS0tLSBEYXRhIGhhbmRsaW5nIGV2ZW50LiBhcmdzPSJ2YWx1ZSIgCisgICAgICAgIEBrZXl3b3JkcyBwcml2YXRlICAtLT4KKyAgICAgICAgPGV2ZW50IG5hbWU9Im9uZGF0YSIgLz4KKworICAgICAgICA8IS0tLSBFcnJvciBoYW5kbGluZyBldmVudC4gLS0+CisgICAgICAgIDxldmVudCBuYW1lPSJvbmVycm9yIi8+CisKKyAgICAgICAgPCEtLS0gQ2FsbCB0aGUgcmVtb3RlIG1ldGhvZCwgcGFzc2luZyB0aGUgYXJyYXkgb2YgcGFyYW1zLiAtLT4KKyAgICAgICAgPG1ldGhvZCBuYW1lPSJjYWxsUlBDIiBhcmdzPSJwYXJhbXMiPjwhW0NEQVRBWworICAgICAgICAgICAgaWYgKHRoaXMuZnVuY25hbWUgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIC8vRGVidWcud3JpdGUoIk5vIGZ1bmNuYW1lIGdpdmVuIik7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMub25lcnJvcikgdGhpcy5vbmVycm9yLnNlbmRFdmVudCgiTm8gZnVuY25hbWUgZ2l2ZW4iKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChwYXJhbXMgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHBhcmFtcyA9IFtdOworCisgICAgICAgICAgICAgICAgdmFyIHN1Ym5vZGVzID0gdGhpcy5zdWJub2RlczsKKyAgICAgICAgICAgICAgICBpZiAoc3Vibm9kZXMgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICB2YXIgaTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBzdWJub2Rlcy5sZW5ndGg7CisgICAgICAgICAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIElmIGdldFZhbHVlIG1ldGhvZCBpcyBkZWNsYXJlZCBpbiBwYXJhbSwgY2FsbCB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnN0ZWFkIHRvIGdldCB2YWx1ZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0c2kgPSBzdWJub2Rlc1tpXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodHNpWyJnZXRWYWx1ZSJdICE9IG51bGwpICYmIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0c2kuZ2V0VmFsdWVbInByb3RvdHlwZSJdICE9IG51bGwpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zW2ldID0gdHNpLmdldFZhbHVlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtc1tpXSA9IHRzaS52YWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJhbXMuX19wcm90b19fICE9IEFycmF5LnByb3RvdHlwZSkgeworICAgICAgICAgICAgICAgIC8vRGVidWcud3JpdGUodGhpcy5uYW1lLCAiZXJyb3I6IGZpcnN0IGFyZ3VtZW50IChwYXJhbXMpIGlzIG5vdCBhbiBhcnJheSIpOworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiY2FsbCIsIHRoaXMsIHRoaXMucGFyZW50LCB0aGlzLnBhcmVudC5zdGF0dXMpOworICAgICAgICAgICAgdmFyIHJ0bXBPYmplY3QgPSBudWxsOworICAgICAgICAgICAgaWYgKHRoaXMucGFyZW50IGluc3RhbmNlb2YgbHoucnRtcENvbm5lY3Rpb24peworICAgICAgICAJICAgIHJ0bXBPYmplY3QgPSB0aGlzLnBhcmVudDsKKyAgICAgICAgICAgIH0gZWxzZSBpZih0aGlzLnJlbW90ZWNvbnRleHQgIGluc3RhbmNlb2YgbHoucnRtcENvbm5lY3Rpb24peworICAgICAgICAJICAgIHJ0bXBPYmplY3QgPSB0aGlzLnJlbW90ZWNvbnRleHQ7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAJICAgIGlmICgkZGVidWcpIERlYnVnLndhcm4oIkVSUk9SOiBubyByZW1vdGVjb250ZXh0IGF2YWlsaWJsZSBhYm9ydCBjYWxsIiwgdGhpcy5mdW5jbmFtZSwgdGhpcyk7CisgICAgICAgIAkgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAJLy9EZWJ1Zy53cml0ZSgnY2FsbCcsIHRoaXMsIHJ0bXBPYmplY3QsIHJ0bXBPYmplY3Quc3RhdHVzKTsKKyAgICAgICAgCS8vRGVidWcud3JpdGUoJ2NhbGwnLCB0aGlzLnJlbW90ZWNvbnRleHQpOworICAgICAgICAgICAgaWYgKHJ0bXBPYmplY3QuZGVidWcpIERlYnVnLndyaXRlKCdjYWxsJywgdGhpcywgcnRtcE9iamVjdCwgcnRtcE9iamVjdC5zdGF0dXMpOworICAgICAgICAgICAgcnRtcE9iamVjdC5sYXN0Q2FsbGVkID0gdGhpczsKKyAgICAgICAgICAgIHJ0bXBPYmplY3QuY2FsbFJQQyh0aGlzLmZ1bmNuYW1lLCB0aGlzLCBwYXJhbXMpOworCisgICAgICAgICAgXV0+CisgICAgICAgIDwvbWV0aG9kPgorCisKKyAgICAgICAgPCEtLS0gSGFuZGxlIHRoZSByZXN1bHQgcmV0dXJuZWQgZnJvbSB0aGUgcmVtb3RlIG1ldGhvZC4gLS0+CisgICAgICAgIDxtZXRob2QgbmFtZT0ib25SZXN1bHQiIGFyZ3M9InZhbHVlIj48IVtDREFUQVsKKyAgICAgICAgICAgIC8vIENhbiBiZSBvdmVycmlkZW4uCisgICAgICAgICAgICAvLyBXb3VsZCBiZSBncmVhdCBpZiBpdCBjYW4gYmUgdXNlZCB3aXRoIGRhdGFvYmplY3QsCisgICAgICAgICAgICAvLyBidXQgSSBkb24ndCBrbm93IGhvdyB0byBjb252ZXJ0IEFycmF5L3ByaW1pdGl2ZSB0byBMekRhdGFzZXQvTHpEYXRhUG9pbnRlci4KKyAgICAgICAgICAgIC8vLy9EZWJ1Zy53cml0ZSgibmV0cmVtb3RlY2FsbCIsIHRoaXMsICJvblJlc3VsdCIsIHZhbHVlKTsKKworICAgICAgICAgICAgaWYgKHRoaXMuZGF0YW9iamVjdCE9bnVsbCkgeworICAgICAgICAgICAgICAgIGlmICggdGhpcy5kYXRhb2JqZWN0IGluc3RhbmNlb2YgTHpEYXRhc2V0ICkgeworICAgICAgICAgICAgICAgICAgICAvL0RlYnVnLndyaXRlKCJvblJlc3VsdDogIix0aGlzLHZhbHVlLGRhdGFvYmplY3QpOworICAgICAgICAgICAgICAgICAgICB2YXIgZWxlbWVudCA9IEx6RGF0YUVsZW1lbnQudmFsdWVUb0VsZW1lbnQodmFsdWUpOworICAgICAgICAgICAgICAgICAgICB0aGlzLmRhdGFvYmplY3Quc2V0RGF0YShlbGVtZW50LmNoaWxkTm9kZXMpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIHRoaXMuZGF0YW9iamVjdCBpbnN0YW5jZW9mIEx6RGF0YUVsZW1lbnQgKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBlbGVtZW50ID0gTHpEYXRhRWxlbWVudC52YWx1ZVRvRWxlbWVudCh2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YW9iamVjdC5hcHBlbmRDaGlsZCggZWxlbWVudCApOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIERlYnVnLndhcm4oImRhdGFvYmplY3QgaXMgbm90IEx6RGF0YXNldCBvciBMekRhdGFFbGVtZW50OiAiLHRoaXMsdGhpcy5kYXRhb2JqZWN0LGRlbGVnYXRlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0aGlzLm9uZGF0YS5zZW5kRXZlbnQodmFsdWUpOwkJCisgICAgICAgICAgXV0+CisgICAgICAgIDwvbWV0aG9kPgorCisKKyAgICA8L2NsYXNzPgorCisKKyAgICA8IS0tLQorICAgICAgICBOZXQgcGFyYW1ldGVyLgorICAgICAgICBFbGVtZW50IHRvIHVzZSBpbnNpZGUgbmV0cmVtb3RlY2FsbC4KKyAgICAgICAgQHRvZG8gRG9jdW1lbnQgbmV0cGFyYW0gY2xhc3MuCisgICAgLS0+CisgICAgPGNsYXNzIG5hbWU9Im5ldHBhcmFtIiBleHRlbmRzPSJub2RlIj4KKworICAgICAgICA8IS0tLSBUaGUgdmFsdWUgb2YgdGhlIG5ldHBhcmFtLiAtLT4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJ2YWx1ZSIgdmFsdWU9Im51bGwiLz4KKworICAgIDwvY2xhc3M+CisKKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvYmFzZS9yZW1vdGUvc2hhcmVkT2JqZWN0Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvcmVtb3RlL3NoYXJlZE9iamVjdC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZkYTU2OAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL2Jhc2UvcmVtb3RlL3NoYXJlZE9iamVjdC5sengKQEAgLTAsMCArMSw5NSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9InNoYXJlZE9iamVjdCIgZXh0ZW5kcz0ibm9kZSI+CisKKwk8YXR0cmlidXRlIG5hbWU9InNvIiB2YWx1ZT0ibnVsbCIgLz4KKwk8YXR0cmlidXRlIG5hbWU9Im9uU3RhdHVzIiB2YWx1ZT0ibnVsbCIgLz4KKwkKKworCTxtZXRob2QgbmFtZT0iY29ubmVjdCIgYXJncz0ic29fTmFtZSxuYyxwZXJzaXN0YW50Ij4KKworCQkvL0RlYnVnLndyaXRlKCJjb25uZWN0IFNoYXJlZE9iamVjdDogIixuYy51cmkpOworCQl0aGlzLnNvID0gU2hhcmVkT2JqZWN0LmdldFJlbW90ZShzb19OYW1lLG5jLnVyaSxwZXJzaXN0YW50KTsgCisJCQorCQl2YXIgdCA9IHRoaXM7CisJCXRoaXMuc28ub25TeW5jID0gZnVuY3Rpb24gKGV2dE9iail7CisJCQlpZiAodC5vblN0YXR1cyl0Lm9uU3RhdHVzLnNlbmRFdmVudChldnRPYmopOworCQkJLy9fcm9vdC5EZWJ1Zy53cml0ZS53cml0ZSgiU2hhcmVkIE9iamVjdCBvblN5bmMiLGV2dE9iaixhcmd1bWVudHMpOworCQl9CisJCQorCQl0aGlzLnNvLmNvbm5lY3QobmMpOworCQkKKwk8L21ldGhvZD4KKwkKKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImdldFJlbW90ZSIgYXJncz0ic29fTmFtZSxuYyxwZXJzaXN0YW50Ij4KKworICAgICAgICAvL0RlYnVnLndyaXRlKCJjb25uZWN0IFNoYXJlZE9iamVjdDogIixuYy51cmkpOworICAgICAgICB0aGlzLnNvID0gU2hhcmVkT2JqZWN0LmdldFJlbW90ZShzb19OYW1lLG5jLnVyaSxwZXJzaXN0YW50KTsgCisKKyAgICAgICAgdmFyIHQgPSB0aGlzOworICAgICAgICB0aGlzLnNvLm9uU3luYyA9IGZ1bmN0aW9uIChldnRPYmopeworICAgICAgICAgICAgaWYgKHQub25TdGF0dXMpdC5vblN0YXR1cy5zZW5kRXZlbnQoZXZ0T2JqKTsKKyAgICAgICAgICAgIC8vX3Jvb3QuRGVidWcud3JpdGUud3JpdGUoIlNoYXJlZCBPYmplY3Qgb25TeW5jIixldnRPYmosYXJndW1lbnRzKTsKKyAgICAgICAgfQorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDwhLS0tIGNyZWF0ZSBPYmplY3QgaWYgbm90IGV4aXN0aW5nICAtLT4KKyAgICA8bWV0aG9kIG5hbWU9ImdldExvY2FsIiBhcmdzPSJuYW1lIj4KKworICAgICAgICB0aGlzLnNvID0gU2hhcmVkT2JqZWN0LmdldExvY2FsKG5hbWUpOyAKKworICAgICAgICB2YXIgdCA9IHRoaXM7CisgICAgICAgIHRoaXMuc28ub25TeW5jID0gZnVuY3Rpb24gKGV2dE9iail7CisgICAgICAgICAgICBpZiAodC5vblN0YXR1cyl0Lm9uU3RhdHVzLnNlbmRFdmVudChldnRPYmopOworICAgICAgICAgICAgLy9fcm9vdC5EZWJ1Zy53cml0ZS53cml0ZSgiU2hhcmVkIE9iamVjdCBvblN5bmMiLGV2dE9iaixhcmd1bWVudHMpOworICAgICAgICB9CisgICAgICAgIAorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDwhLS0tIAorICAgICAgICBmb3JjZSB3cml0ZSB0byBkaXNrCisgICAgICAgIEByZXR1cm4gdHJ1ZShzdWNjZXNzKSBmYWxzZShVc2VyIGhhcyBmb3JiaWRkZW4gdG8gc3RvcmUgZGF0YSBsb2NhbCkKKyAgICAgIC0tPgorICAgIDxtZXRob2QgbmFtZT0iZmx1c2giPgorICAgICAgICByZXR1cm4gdGhpcy5zby5mbHVzaCgpOworICAgIDwvbWV0aG9kPgorCisgICAgPG1ldGhvZCBuYW1lPSJnZXREYXRhIiBhcmdzPSJrZXkiPgorICAgICAgICBpZiAodGhpcy5zby5kYXRhWyJrZXkiXSA9PSB1bmRlZmluZWQpeworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgICAgIC8vX3Jvb3QuRGVidWcud3JpdGUud3JpdGUoImtleSB1bmRlZmluZWQiLGtleSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy5zby5kYXRhWyJrZXkiXTsKKyAgICAgICAgfQorICAgIDwvbWV0aG9kPgorCQorICAgIDxtZXRob2QgbmFtZT0ic2V0RGF0YSIgYXJncz0ia2V5LHZhbCI+CisgICAgCS8vRGVidWcud3JpdGUoInRoaXMuLi4uLi4gc286ICIsdGhpcy5zbyk7CisgICAgICAgIHRoaXMuc28uZGF0YVsia2V5Il0gPSB2YWw7CisgICAgPC9tZXRob2Q+CisKKwkJCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9icm9hZGNhc3QubHp4Lmx6cj1zd2Y4LnN3ZiBiL1dlYkNvbnRlbnQvc3JjL2Jyb2FkY2FzdC5sengubHpyPXN3Zjguc3dmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1Y2RjMjQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9icm9hZGNhc3QubHp4Lmx6cj1zd2Y4LnN3ZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9jbGFzc2ludHJvLnN3ZiBiL1dlYkNvbnRlbnQvc3JjL2NsYXNzaW50cm8uc3dmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkMGVlOTIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9jbGFzc2ludHJvLnN3ZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9jb25maW50cm8uc3dmIGIvV2ViQ29udGVudC9zcmMvY29uZmludHJvLnN3ZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjQ1MDVjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvY29uZmludHJvLnN3ZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9pbmRleC5odG1sIGIvV2ViQ29udGVudC9zcmMvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjdlZjk2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvaW5kZXguaHRtbApAQCAtMCwwICsxLDExMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8aHRtbD4KKzxoZWFkPgorCis8bWV0YSBodHRwLWVxdWl2PSJjYWNoZS1jb250cm9sIiBjb250ZW50PSJuby1jYWNoZSI+CisKKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KKzxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0iSUU9RW11bGF0ZUlFNyI+Cis8bGluayByZWw9InNob3J0Y3V0IGljb24iIHR5cGU9ImltYWdlL3gtaWNvbiIgaHJlZj0iZmF2aWNvbi5pY28iPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aDsgaW5pdGlhbC1zY2FsZT0xLjA7Ij4KKzx0aXRsZT5PcGVuTGFzemxvIEFwcGxpY2F0aW9uPC90aXRsZT4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICAgICAgICAvLyBJZiBsb2FkZWQgYmFyZSBpbnRvIGEgYnJvd3Nlciwgc2V0IHRoZSBicm93c2VyIHNpemUgdG8gdGhlIGNhbnZhcyBzaXplCisgICAgICAgICAgaWYgKHdpbmRvdyA9PT0gdG9wKSB7CisgICAgICAgICAgICAoZnVuY3Rpb24gKHdpZHRoLCBoZWlnaHQpIHsKKyAgICAgICAgICAgICAgLy8gQ2YuIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvdmlld3BvcnQvY29tcGF0aWJpbGl0eS5odG1sCisgICAgICAgICAgICAgIGlmICh3aW5kb3cuaW5uZXJIZWlnaHQpIHsKKyAgICAgICAgICAgICAgICAvLyBTYWRseSwgaW5uZXJIZWlnaHQvV2lkdGggaXMgbm90IHIvdyBvbiBzb21lIGJyb3dzZXJzLCBhbmQgcmVzaXplVG8gaXMgZm9yIG91dGVySGVpZ2h0L1dpZHRoCisgICAgICAgICAgICAgICAgd2luZG93LnJlc2l6ZVRvKHdpZHRoID8gKHdpZHRoICsgd2luZG93Lm91dGVyV2lkdGggLSB3aW5kb3cuaW5uZXJXaWR0aCkgOiB3aW5kb3cub3V0ZXJXaWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0ID8gKGhlaWdodCArIHdpbmRvdy5vdXRlckhlaWdodCAtIHdpbmRvdy5pbm5lckhlaWdodCkgOiB3aW5kb3cub3V0ZXJIZWlnaHQpOworICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCAmJiBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50SGVpZ2h0KSB7CisgICAgICAgICAgICAgICAgaWYgKHdpZHRoKSB7CisgICAgICAgICAgICAgICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuY2xpZW50V2lkdGggPSB3aWR0aDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGhlaWdodCkgeworICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCA9IGhlaWdodDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKHdpZHRoKSB7CisgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmNsaWVudFdpZHRoID0gd2lkdGg7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChoZWlnaHQpIHsKKyAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xpZW50SGVpZ2h0ID0gaGVpZ2h0OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSkobnVsbCwgbnVsbCk7CisgICAgICAgICAgfQorICAgICAgICA8L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IgorCXNyYz0iZW1iZWQtY29tcHJlc3NlZC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisKK2Z1bmN0aW9uIGdldEJyb3dzZXJJbmZvKCkgeworCS8vYWxlcnQobmF2aWdhdG9yLnVzZXJBZ2VudCk7CisJcmV0dXJuIG5hdmlnYXRvci51c2VyQWdlbnQ7Cit9CisKKzwvc2NyaXB0PgorCQorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK2h0bWwsYm9keSB7IC8qIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvY3NzLzEwMHBlcmNoZWlnaHQuaHRtbCAqLworCWhlaWdodDogMTAwJTsKKwkvKiBwcmV2ZW50IHNjcm9sbGJhcnMgKi8KKwltYXJnaW46IDA7CisJcGFkZGluZzogMDsKKwlib3JkZXI6IDAgbm9uZTsKKwlvdmVyZmxvdzogaGlkZGVuOworfQorCitib2R5IHsKKwliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOworfQorCitpbWcgeworCWJvcmRlcjogMCBub25lOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGx6LmVtYmVkLnN3Zih7dXJsOiAnbWFpbmRlYnVnLmx6eD9senI9c3dmOCZsenByb3hpZWQ9c29sbyZsenQ9c3dmJywgYWxsb3dmdWxsc2NyZWVuOiAndHJ1ZScsIGJnY29sb3I6ICcjZmZmZmZmJywgd2lkdGg6ICcxMDAlJywgaGVpZ2h0OiAnMTAwJScsIGlkOiAnbHphcHAnLCBhY2Nlc3NpYmxlOiAnZmFsc2UnfSk7CisKKyAgICBsei5lbWJlZC5semFwcC5vbmxvYWRzdGF0dXMgPSBmdW5jdGlvbiBsb2Fkc3RhdHVzKHApIHsKKyAgICAgIC8vIGNhbGxlZCB3aXRoIGEgcGVyY2VudGFnZSAoMC0xMDApIGluZGljYXRpbmcgbG9hZCBwcm9ncmVzcworICAgIH0KKworICAgIGx6LmVtYmVkLmx6YXBwLm9ubG9hZCA9IGZ1bmN0aW9uIGxvYWRlZCgpIHsKKyAgICAgIC8vIGNhbGxlZCB3aGVuIHRoaXMgYXBwbGljYXRpb24gaXMgZG9uZSBsb2FkaW5nCisgICAgfQorPC9zY3JpcHQ+Cis8ZGl2IHN0eWxlPSJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyIgaWQ9Imx6YXBwQ29udGFpbmVyIj48ZW1iZWQKKwlzcmM9Im1haW5kZWJ1Zy5sengtRGF0ZWllbi9tYWluZGVidWcubHp4IiBxdWFsaXR5PSJoaWdoIgorCWJnY29sb3I9IiNmZmZmZmYiIHdtb2RlPSJ3aW5kb3ciIGFsbG93ZnVsbHNjcmVlbj0iZmFsc2UiIGlkPSJsemFwcCIKKwluYW1lPSJsemFwcCIKKwlmbGFzaHZhcnM9Imx6dD1zd2YmYW1wO2x6cHJveGllZD1zb2xvJmFtcDtsenI9c3dmOCZhbXA7Ymdjb2xvcj0lMjNmZmZmZmYmYW1wO3dpZHRoPTEwMCUyNSZhbXA7aGVpZ2h0PTEwMCUyNSZhbXA7X19senVybD1tYWluZGVidWcubHp4JTNGbHp0JTNEc3dmJTI2bHpwcm94aWVkJTNEc29sbyUyNmx6ciUzRHN3ZjgmYW1wO19fbHptaW5pbXVtdmVyc2lvbj04JmFtcDtpZD1semFwcCIKKwlzd2xpdmVjb25uZWN0PSJ0cnVlIiBhbGxvd3NjcmlwdGFjY2Vzcz0ic2FtZURvbWFpbiIKKwl0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIKKwlwbHVnaW5zcGFnZT0iaHR0cDovL3d3dy5tYWNyb21lZGlhLmNvbS9nby9nZXRmbGFzaHBsYXllciIKKwlhbGlnbj0ibWlkZGxlIiBoZWlnaHQ9IjEwMCUiIHdpZHRoPSIxMDAlIj48L2Rpdj4KKzxub3NjcmlwdD5QbGVhc2UgZW5hYmxlIEphdmFTY3JpcHQgaW4gb3JkZXIgdG8gdXNlIHRoaXMKK2FwcGxpY2F0aW9uLjwvbm9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbWFpbi5senggYi9XZWJDb250ZW50L3NyYy9tYWluLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZGVmYzg0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbWFpbi5sengKQEAgLTAsMCArMSwxNjYgQEAKK++7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgICAgICAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGNhbnZhcyB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiB0aXRsZT0iT3Blbk1lZXRpbmdzIj4KKzxzd2l0Y2g+CisJPHdoZW4gcHJvcGVydHk9IiRkZWJ1ZyI+CisJCTxtZXRob2QgbmFtZT0iZG9EZWJ1Z0luaXQiPgorCQkJY2FudmFzLnNldEF0dHJpYnV0ZSgnZGVidWcnLCB0cnVlKTsKKwkJPC9tZXRob2Q+CisJCTxkZWJ1ZyBmb250c2l6ZT0iMTEiIG9uaW5pdD0iRGVidWcuc2hvd0ludGVybmFsUHJvcGVydGllcyA9IHRydWUiIHdpZHRoPSI0MCUiIHk9IjUwJSIgeD0iMCIgaGVpZ2h0PSI1MCUiIC8+CisJPC93aGVuPgorCTxvdGhlcndpc2U+CisJCTxtZXRob2QgbmFtZT0iZG9EZWJ1Z0luaXQiPgorCQk8L21ldGhvZD4KKwk8L290aGVyd2lzZT4KKzwvc3dpdGNoPiAgICAKKyAgICAgCis8aW5jbHVkZSBocmVmPSJpbmN1YmF0b3IvbHpjb21ib2JveC5sengiIC8+Cis8aW5jbHVkZSBocmVmPSJpbmN1YmF0b3Ivc2hhZG93Ym94Lmx6eCIgLz4KKworPGluY2x1ZGUgaHJlZj0icmVzb3VyY2VzLyIgLz4gCis8aW5jbHVkZSBocmVmPSJiYXNlLyIgLz48IS0tIGF0dHJpYnV0ZXMsbWV0aG9kcyxkYXRhc2V0cyxhcmUgbW92ZWQgaW50byAvYmFzZSAtLT4KKzxpbmNsdWRlIGhyZWY9Im1vZHVsZXMvIiAvPgorPGluY2x1ZGUgaHJlZj0icGx1Z2lucy8iIC8+ICAKKworPHNpbHZlcnN0eWxlIG5hbWU9ImRlZmF1bHRzdHlsZSIgaXNkZWZhdWx0PSJ0cnVlIiBjYW52YXNjb2xvcj0id2hpdGUiIC8+CisKKzxzaWx2ZXJzdHlsZSBuYW1lPSJjb21wb25lbnRTdHlsZSIgYmFzZWNvbG9yPSIweEZGRkZGRiIgdGV4dGNvbG9yPSIweDAwMDAwMCIgLz4KKworPHNpbHZlcnN0eWxlIG5hbWU9Iml0ZW1TdHlsZSIgdGV4dGNvbG9yPSIweEZGRkZGRiIgLz4KKworPHdoaXRlc3R5bGUgbmFtZT0ibWVudVN0eWxlIiB0ZXh0Y29sb3I9IjB4MDAwMDAwIiAvPgorCis8IS0tIG1haW4gY29sb3JzOiAyNjQyNjkgLS0+Cis8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorCWZsYXNoLmV4dGVybmFsLkV4dGVybmFsSW50ZXJmYWNlLmNhbGwoImxvYWRpbmdDb21wbGV0ZSIpOworCWRvRGVidWdJbml0KCk7CisJdmFyIGNtZW51ID0gbmV3IEx6Q29udGV4dE1lbnUoKTsKKwljYW52YXMuc2V0RGVmYXVsdENvbnRleHRNZW51KGNtZW51KTsKKwljbWVudS5oaWRlQnVpbHRJbkl0ZW1zKCk7CisJaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgibWFpbi5sengvb25pbml0OiIsdGhpcyk7CisJY2FudmFzLmxjID0gbmV3IExvY2FsQ29ubmVjdGlvbigpOworPC9oYW5kbGVyPgorCis8IS0tIFZpZXcgZm9yIENvbnRlbnRzLiBBbGwgV2luZG93cyB3aWxsIGJlIGxvYWRlZCBvbiB0aGlzIHZpZXcuIC0tPgorPHZpZXcgbmFtZT0ibWFpbl9jb250ZW50IiB5PSIkeyBjYW52YXMubmF2aUhlaWdodERlbHRhIH0iIHdpZHRoPSIke2NhbnZhcy53aWR0aH0iIAorCQkJICAgIGhlaWdodD0iJHsgY2FudmFzLmhlaWdodC1jYW52YXMubmF2aUhlaWdodERlbHRhIH0iCisJCQkgICAgdmlzaWJpbGl0eT0iaGlkZGVuIiBzaG93aGFuZGN1cnNvcj0iZmFsc2UiPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdmVyIj4KKyAgICAgICAgc2V0Q3VycmVudE1vdXNlV2hlZWxPYmplY3QodGhpcy5fc2Nyb2xsYmFyKTsKKyAgICA8L2hhbmRsZXI+CisgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZW91dCI+CisgICAgICAgIGRpc2FibGVDdXJyZW50TW91c2VXaGVlbE9iamVjdCgpOworICAgIDwvaGFuZGxlcj4KKyAgICAKKyAgICA8dmlldyB4PSIwIiBuYW1lPSJfY29udGVudCIgPgorICAgICAgICA8dmlldyBuYW1lPSJpbm5lciIgLz4KKyAgICAgICAgPG1ldGhvZCBuYW1lPSJjbGVhckFsbCI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICBjYW52YXMuc2VuZFZpYUxvY2FsQ29ubmVjdGlvbihjYW52YXMudmlkX2xjX25hbWUsICJjbGVhckFsbCIsIG51bGwpOworICAgICAgICAgICAgICAgIGlmKCRkZWJ1ZykgRGVidWcud3JpdGUoIm1haW4ubHp4L21haW5fY29udGVudC5fY29udGVudC5pbm5lci5jbGVhckFsbCgpOiAiLHRoaXMuaW5uZXIsdGhpcy5pbm5lci5zdWJ2aWV3cy5sZW5ndGgpOworICAgICAgICAgICAgICAgIHZhciBiYXNlQ29udGVudCA9IHRoaXMuaW5uZXIuc3Vidmlld3NbMF0uY2xvc2UoKTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBlZyBpbiB0aGlzLmlubmVyLnN1YnZpZXdzKSB7CisgICAgICAgICAgICAgICAgICAgIGlmKCRkZWJ1ZykgRGVidWcud3JpdGUoIm1haW4ubHp4L21haW5fY29udGVudC5fY29udGVudC5pbm5lci5jbGVhckFsbCgpLXN1YnZpZXdzOiAiLHRoaXMuaW5uZXIuc3Vidmlld3NbZWddKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGVnIT0wKSB0aGlzLmlubmVyLnN1YnZpZXdzW2VnXS5jbG9zZSgpOyAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gYmFzZUNvbnRlbnQ7CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9tZXRob2Q+CisgICAgPC92aWV3PgorICAgIDxvbV9oc2Nyb2xsYmFyIG5hbWU9Il9zY3JvbGxiYXJIIiBpZD0iX21haW5TY3JvbGxIQmFyIiB2aXNpYmlsaXR5PSJoaWRkZW4iIC8+CisgICAgPG9tX3ZzY3JvbGxiYXIgbmFtZT0iX3Njcm9sbGJhciIgaWQ9Il9tYWluU2Nyb2xsQmFyIiAvPgorPC92aWV3PiAgCisgIAorPCEtLSBWaWV3IGZvciBOYXZpZ2F0aW9uLWJhciBhbmQgQXBwLW5hbWUgLS0+Cis8dmlldyBuYW1lPSJfbWFpbmJnY29udGVudE5hdmkiIHg9IjAiIHk9IjAiIGNsaXA9InRydWUiCisgICAgd2lkdGg9IjEwMCUiIGhlaWdodD0iJHsgY2FudmFzLm5hdmlIZWlnaHQgfSIgdmlzaWJpbGl0eT0iaGlkZGVuIj4KKyAgICA8aW1hZ2UgaWQ9Im1haW5BcHBsb2dvIiB2aXNpYmxlPSJmYWxzZSIgLz4KKyAgICA8dGV4dCBpZD0ibWFpbkJhc2VUZXh0IiB2aXNpYmxlPSJmYWxzZSIKKyAgICAgICAgZmdjb2xvcj0iJHsgY2FudmFzLmZvbnRDb2xvckhlYWRlciB9IiBmb250c2l6ZT0iMjAiIGZvbnRzdHlsZT0iYm9sZCI+CisgICAgICAgIDxtZXRob2QgbmFtZT0ic2V0U2hhZG93IiA+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIGlmICh0aGlzLmlzaW5pdGVkICYmIGZhbHNlKXsKKyAgICAgICAgICAgICAgICB0aGlzLm5vcm1hbE1DID0gdGhpcy5nZXREaXNwbGF5T2JqZWN0KCk7CisgICAgICAgICAgICAgICAgdGhpcy5kaXNwbGFjZW1lbnRNYXAgPSBuZXcgZmxhc2guZmlsdGVycy5Ecm9wU2hhZG93RmlsdGVyKCk7CisgICAgICAgICAgICAgICAgdGhpcy5ub3JtYWxNQy5maWx0ZXJzID0gW3RoaXMuZGlzcGxhY2VtZW50TWFwXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF1dPiAgICAgICAgICAgICAgCisgICAgICAgIDwvbWV0aG9kPiAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICBsei5Ccm93c2VyLmxvYWRVUkwoY2FudmFzLmN1cnJlbnRhcHBuYW1ldXJsLCJfYmxhbmsiKTsKKyAgICAgICAgPC9oYW5kbGVyPiAgCisgICAgICAgIDxsYWJlbFRvb2x0aXAgaWQ9Im1haW5CYXNlVGV4dExhYmVsIiAvPiAgICAgIAorICAgIDwvdGV4dD4KKyAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgICAgICB2YXIgY21lbnUgPSBuZXcgTHpDb250ZXh0TWVudSgpOworICAgICAgICB0aGlzLnNldENvbnRleHRNZW51KGNtZW51KTsKKyAgICAgICAgY21lbnUuaGlkZUJ1aWx0SW5JdGVtcygpOworICAgIDwvaGFuZGxlcj4gICAgIAorPC92aWV3PgorCis8IS0tIFZpZXcgZm9yIENvbmZlcmVuY2UgbWVudSBiYXIgYXQgdGhlIHRvcCBzaWRlLiBWaXNpYmxlIG9uIGNvbmZlcmVuY2UgLS0+Cis8dmlldyBuYW1lPSJfY29uZmVyZW5jZW1lbnUiIHk9IjAiIHg9IjAiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjIwIiB2aXNpYmlsaXR5PSJoaWRkZW4iID4gCisgICAgPG1ldGhvZCBuYW1lPSJyZW1vdmVBbGwiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIGlmKCRkZWJ1ZykgRGVidWcud3JpdGUoIm1haW4ubHp4L19jb2ZlcmVuY2VtZW51LnJlbW92ZUFsbCgpOiAiKTsKKyAgICAgICAgICAgIHdoaWxlICh0aGlzLnN1YnZpZXdzLmxlbmd0aCA+IDApIHsKKyAgICAgICAgICAgICAgICB0aGlzLnN1YnZpZXdzWzBdLmRlc3Ryb3koKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBhcmVudC5fbW9kZXJhdG9ybWVudS5yZW1vdmVBbGwoKTsKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+Cis8L3ZpZXc+IAorCis8dmlldyBuYW1lPSJfbW9kZXJhdG9ybWVudSIgeT0iMCIgeD0iMCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMjAiPgorICAgIDxtZXRob2QgbmFtZT0icmVtb3ZlQWxsIj4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICBpZigkZGVidWcpIERlYnVnLndyaXRlKCJtYWluLmx6eC9fbW9kZXJhdG9ybWVudS5yZW1vdmVBbGwoKTogIik7CisgICAgICAgICAgICB3aGlsZSAodGhpcy5zdWJ2aWV3cy5sZW5ndGggPiAwKSB7CisgICAgICAgICAgICAgICAgdGhpcy5zdWJ2aWV3c1swXS5kZXN0cm95KCk7CisgICAgICAgICAgICB9CisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorPC92aWV3PiAgCisgICAgCis8IS0tIFZpZXcgZm9yICJMb2FkaW5nIiAtLT4KKzx2aWV3IG5hbWU9Il9sb2FkaW5nQWxsIiB2aXNpYmxlPSJmYWxzZSIgb3BhY2l0eT0iMC43IiAKKyAgICB3aWR0aD0iJHsgY2FudmFzLndpZHRoIH0iIGhlaWdodD0iJHsgY2FudmFzLmhlaWdodCB9IiAKKyAgICBiZ2NvbG9yPSIweEZGRkZGRiIgY2xpY2thYmxlPSJ0cnVlIiBzaG93aGFuZGN1cnNvcj0iZmFsc2UiPgorICAgIDxtZXRob2QgbmFtZT0iaGlkZUNvbnRlbnRPbmx5Ij4KKyAgICAJdGhpcy5zaG93TG9hZGluZ0Fubmkuc2V0QXR0cmlidXRlKCdzdGFydGVkJywgdHJ1ZSk7CisgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgICAgICB0aGlzLl90ZXh0LnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgIDwvbWV0aG9kPgorICAgIDxtZXRob2QgbmFtZT0ic2hvd0xvYWRpbmciPgorICAgIAl0aGlzLnNob3dMb2FkaW5nQW5uaS5zZXRBdHRyaWJ1dGUoJ3N0YXJ0ZWQnLCB0cnVlKTsKKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgIHRoaXMuX3RleHQuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgIDwvbWV0aG9kPgorICAgIDxtZXRob2QgbmFtZT0iaGlkZUxvYWRpbmciPgorICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgIDwvbWV0aG9kPgorICAgIDxhbmltYXRvciBuYW1lPSJzaG93TG9hZGluZ0FubmkiIGF0dHJpYnV0ZT0ib3BhY2l0eSIgCisgICAgCQlmcm9tPSIwIiB0bz0iMC43IiBzdGFydGVkPSJmYWxzZSIgZHVyYXRpb249IjI1MCIgLz4KKyAgICA8dGV4dCBuYW1lPSJfdGV4dCIgYWxpZ249InJpZ2h0IiB5PSI1NiIgZm9udHNpemU9IjE0IiBmZ2NvbG9yPSJyZWQiPkxvYWRpbmcuLi48L3RleHQ+Cis8L3ZpZXc+CisKKzwvY2FudmFzPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvYWRtaW4vYmFja3VwL2JhY2t1cENvbnRlbnQubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi9iYWNrdXAvYmFja3VwQ29udGVudC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWY5NjExYgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvYWRtaW4vYmFja3VwL2JhY2t1cENvbnRlbnQubHp4CkBAIC0wLDAgKzEsODUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzwhLS0tIEJhY2t1cCBtb2R1bGUgZm9yIGFkbWluLiBJdCBjYW4gZXhwb3J0IG9yIGltcG9ydCB1c2VyIGFjY291bnQgZGF0YSBhcyB4bWwtZmlsZS4gLS0+Cis8Y2xhc3MgbmFtZT0iYmFja3VwQ29udGVudCIgZXh0ZW5kcz0iYmFzZUNvbnRlbnRWaWV3Ij4KKwkKKwk8bGFiZWxUZXh0IGZvbnRzaXplPSIxMCIgZm9udHN0eWxlPSJib2xkIiB5PSIyIiB4PSIyIiBsYWJlbGlkPSIxMDY2IiAvPgorCQorICAgIDx2aWV3IHg9IjQiIHJlc291cmNlPSJ3YXJuaW5nX2ljb25fcnNjIiB5PSIyNiIgLz4KKworICAgIDxsYWJlbFRleHQgZm9udHNpemU9IjEwIiB5PSIyNCIKKwkgICAgIHg9IjMwIiB3aWR0aD0iNjAwIiBsYWJlbGlkPSIxMDY1IiBtdWx0aWxpbmU9InRydWUiIC8+CisJCisJPGxhYmVsQ2hlY2tib3ggeD0iMTAiIHk9IjE4MCIgZm9udHNpemU9IjExIgorICAgICAgICBuYW1lPSJfaW5jbHVkZUZpbGVPcHRpb24iIGxhYmVsaWQ9IjE1MzciID4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAgICAgICAgIHRoaXMuc2V0VmFsdWUodHJ1ZSk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICA8L2xhYmVsQ2hlY2tib3g+ICAKKwkKKwk8IS0tIFN5c3RlbSBJbXBvcnQgLS0+CisgICAgPHNpbXBsZUxhYmVsQnV0dG9uIGxhYmVsaWQ9IjE1MzYiIHg9IjMwIiB5PSIyMjAiIHdpZHRoPSIyMDAiPgorICAgIAk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgCTwhW0NEQVRBWworCSAgICAgICAgCW5ldyBsei51cGxvYWRXaW5kb3dFeHBsb3JlcihjYW52YXMubWFpbl9jb250ZW50Ll9jb250ZW50LmlubmVyLHsKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDozMDAsCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzT25seVppcDp0cnVlLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2bGV0TmFtZTonYmFja3VwLnVwbG9hZCcKKwkgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgCV1dPgorICAgICAgICA8L2hhbmRsZXI+CisJICAgIDwhLS0gCisJICAgICAgICBuZXcgbHouYmFja3VwSW1wb3J0V2luZG93KGNhbnZhcy5tYWluX2NvbnRlbnQuX2NvbnRlbnQuaW5uZXIse3g6NjAseTo2MCx1cGxvYWRtb2R1bGU6J3VzZXJzJ30pOworCSAgICAgLS0+CisgICAgPC9zaW1wbGVMYWJlbEJ1dHRvbj4gCisgICAgCisgICAgPCEtLSBTeXN0ZW0gQmFja3VwIC0tPgorICAgIDxzaW1wbGVMYWJlbEJ1dHRvbiBsYWJlbGlkPSIxMDY2IiB4PSIyMzIiIHk9IjIyMCIgd2lkdGg9IjIwMCI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgdmFyIGV4cG9ydHVybCA9IGNhbnZhcy5nZXRVcmwoKSArICdCYWNrdXBFeHBvcnQ/bW9kdWxlTmFtZT1iYWNrdXAnCisgICAgICAgICAgICAgICAgICAgICAgICArJyZzaWQ9JytjYW52YXMuc2Vzc2lvbklkOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChwYXJlbnQuX2luY2x1ZGVGaWxlT3B0aW9uLmdldFZhbHVlKCkpIHsKKyAgICAgICAgICAgICAgICAJZXhwb3J0dXJsICs9ICImaW5jbHVkZUZpbGVPcHRpb249eWVzIjsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIAlleHBvcnR1cmwgKz0gIiZpbmNsdWRlRmlsZU9wdGlvbj1ubyI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiQkFDS1VQL2V4cG9ydHVybCAiK2V4cG9ydHVybCk7CisgICAgICAgICAgICAgICAgbHouQnJvd3Nlci5sb2FkVVJMKGV4cG9ydHVybCwiX3BhcmVudCIpOworICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICA8L3NpbXBsZUxhYmVsQnV0dG9uPiAgCisgICAgCisgICAgPGxhYmVsVGV4dCBmb250c2l6ZT0iMTAiIGZvbnRzdHlsZT0iaXRhbGljIiB5PSIyNTAiIHg9IjEwIj4KKyAgICAJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAJCXZhciBtQnl0ZXMgPSBNYXRoLnJvdW5kKE51bWJlcihjYW52YXMuTUFYX1VQTE9BRF9TSVpFKS8xMDI0LzEwMjQpOworICAgIAkJdGhpcy5zZXRBdHRyaWJ1dGUoInRleHQiLGNhbnZhcy5nZXRMYWJlbE5hbWUoMTQ5MSkrIiAiK21CeXRlcysiIE1CICBbbWF4X3VwbG9hZF9zaXplID0gIitjYW52YXMuTUFYX1VQTE9BRF9TSVpFKyIgQnl0ZXNdIik7CisgICAgCTwvaGFuZGxlcj4KKyAgICA8L2xhYmVsVGV4dD4gICAgCisgICAgCisgICAgPGxhYmVsVGV4dCBmb250c2l6ZT0iMTAiIHk9IjI4MCIgbGFiZWxpZD0iMTUwNSIgbXVsdGlsaW5lPSJ0cnVlIiAvPgorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi9iYWNrdXAvbGlicmFyeS5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2FkbWluL2JhY2t1cC9saWJyYXJ5Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTFhZjNkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi9iYWNrdXAvbGlicmFyeS5sengKQEAgLTAsMCArMSwyNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKyAgICAKKyAgICA8aW5jbHVkZSBocmVmPSJiYWNrdXBDb250ZW50Lmx6eCIgLz4KKyAgICAKKyAgICAKKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi9jb25mYWRtaW4vY29uZkFkbWluLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvYWRtaW4vY29uZmFkbWluL2NvbmZBZG1pbi5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJkN2FjOAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvYWRtaW4vY29uZmFkbWluL2NvbmZBZG1pbi5sengKQEAgLTAsMCArMSw5MiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPCEtLS0gQ29uZmlndXJhdGlvbiBtb2R1bGUgZm9yIEFETUlOIC0tPgorPGNsYXNzIG5hbWU9ImNvbmZBZG1pbiIgZXh0ZW5kcz0iYmFzZUNvbnRlbnRWaWV3Ij4KKworICAgIDx0dXJuT3Zlckxpc3QgbmFtZT0iX3R1cm5vdmVybGlzdCIgd2lkdGg9IjQxMCIgCisgICAgCWhlaWdodD0iJHsgY2FudmFzLmhlaWdodCAtIGNhbnZhcy5uYXZpSGVpZ2h0IH0iIHg9IjIiIAorICAgIAl5PSIkeyAwIC0gcGFyZW50LnBhcmVudC5wYXJlbnQueSB9IiAKKwkJb3JkZXJieT0iYy5jb25maWd1cmF0aW9uX2lkIiBzdGVwPSI1MCIgYXNjPSJ0cnVlIj4KKworCQk8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorCQkJdGhpcy5hZGRIZWFkZXJJdGVtKDI2NCw4MCk7CisJCQl0aGlzLmFkZEhlYWRlckl0ZW0oMjY1LDE2NCk7CisgICAgICAgICAgICB0aGlzLmFkZEhlYWRlckl0ZW0oNTk4LDE1MCk7CisJCQl0aGlzLmdldEFsbENvbmYuZG9DYWxsKCk7CisJCTwvaGFuZGxlcj4KKwkJCisJCTxoYW5kbGVyIG5hbWU9Im9uY2FsbG5leHQiID4KKwkJCXRoaXMuZ2V0QWxsQ29uZi5kb0NhbGwoKTsKKwkJPC9oYW5kbGVyPgorCQkKKwkJPGhhbmRsZXIgbmFtZT0ib25jYWxscHJlIiA+CQkKKwkJCXRoaXMuZ2V0QWxsQ29uZi5kb0NhbGwoKTsKKwkJPC9oYW5kbGVyPgorCQkKKwkJPGhhbmRsZXIgbmFtZT0ib25jbGlja2VkSXRlbSIgYXJncz0ib2JqIj4KKwkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbmNsaWNrZWRJdGVtIixvYmosb2JqLm9iaik7CisgICAgICAgICAgICBwYXJlbnQuX2NvbmZ2YWx1ZWZvcm0uaGlkZU5ld1JlY29yZFRleHQoKTsKKwkJCXBhcmVudC5fY29uZnZhbHVlZm9ybS5pbml0VmFsdWVGaWVsZHNCeU9iamVjdChvYmoub2JqKTsKKwkJPC9oYW5kbGVyPgorCQkKKwkJPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iZ2V0QWxsQ29uZiIgZnVuY25hbWU9ImNvbmZpZ3NlcnZpY2UuZ2V0QWxsQ29uZiIgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gICAgICAKKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBwYXJlbnQucGFyZW50LnN0YXJ0OyA8L21ldGhvZD48L25ldHBhcmFtPgorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBhcmVudC5zdGVwOyA8L21ldGhvZD48L25ldHBhcmFtPgorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBhcmVudC5vcmRlcmJ5OyA8L21ldGhvZD48L25ldHBhcmFtPgorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBhcmVudC5hc2M7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJICAgIAk8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKwkgICAgCQkvL0RlYnVnLndyaXRlKCJnZXRBbGxDb25mICIsdmFsdWUpOworCSAgICAJCS8vdGhpcy5wYXJlbnQuZGVzdHJveSgpOworCSAgICAJCXRoaXMucGFyZW50LmluaXRWYWx1ZXModmFsdWUucmVjb3Jkcyk7CisJICAgIAkJdGhpcy5wYXJlbnQucmVuZGVyQ29udGVudCh2YWx1ZS5yZXN1bHQpOworCSAgICAJPC9oYW5kbGVyPgorCSAgICA8L25ldFJlbW90ZUNhbGxIaWI+CQorCSAgICAKKwkgICAgPG1ldGhvZCBuYW1lPSJyZW5kZXJDb250ZW50IiBhcmdzPSJyZWNvcmRzIj4KKwkgICAgCTwhW0NEQVRBWworCSAgICAJdGhpcy5jbGVhckxpc3QoKTsKKwkgICAgCWZvciAodmFyIGk9MDtpPHJlY29yZHMubGVuZ3RoO2krKyl7CisJICAgIAkJbmV3IGx6LmNvbmZBZG1pbkxpc3RJdGVtKHRoaXMuX2lubmVybGlzdC5faW5uLl9pbm4seworCSAgICAgICAgICAgICAgICAgICAgb2JqOnJlY29yZHNbaV0sCisJICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uX2lkOnJlY29yZHNbaV0uY29uZmlndXJhdGlvbl9pZCwKKwkgICAgICAgICAgICAgICAgICAgIGNvbmZfa2V5OnJlY29yZHNbaV0uY29uZl9rZXksCisgICAgICAgICAgICAgICAgICAgICAgICBjb25mX3ZhbHVlOnJlY29yZHNbaV0uY29uZl92YWx1ZQorICAgICAgICAgICAgICAgICAgICB9KTsKKwkgICAgCX0KKyAgICAgICAgICAgIHRoaXMuc2VuZEluaXRpYWxXaWR0aFVwZGF0ZSgpOworCSAgICAJXV0+CisJICAgIDwvbWV0aG9kPgorCisJPC90dXJuT3Zlckxpc3Q+CisgICAgCisgICAgPGNvbmZBZG1pblZhbHVlRm9ybSBuYW1lPSJfY29uZnZhbHVlZm9ybSIgeD0iNDE2Ij4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25uZXciIGFyZ3M9InJlZk9iaiI+CisgICAgICAgICAgICBwYXJlbnQuX3R1cm5vdmVybGlzdC5jbGVhclNlbGVjdGlvbigpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9jb25mQWRtaW5WYWx1ZUZvcm0+CisKKyAgICAgICAgCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2FkbWluL2NvbmZhZG1pbi9jb25mQWRtaW5MaXN0SXRlbS5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2FkbWluL2NvbmZhZG1pbi9jb25mQWRtaW5MaXN0SXRlbS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjRkM2ZkNgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvYWRtaW4vY29uZmFkbWluL2NvbmZBZG1pbkxpc3RJdGVtLmx6eApAQCAtMCwwICsxLDM2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8IS0tLSBDb25maWd1cmF0aW9uIGxpc3QuIEl0IHNob3dzIElELUtFWSBwYWlycy4gLS0+Cis8Y2xhc3MgbmFtZT0iY29uZkFkbWluTGlzdEl0ZW0iIGV4dGVuZHM9ImJhc2VDb250ZW50TGlzdEl0ZW0iPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0iY29uZmlndXJhdGlvbl9pZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKwk8YXR0cmlidXRlIG5hbWU9ImNvbmZfa2V5IiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJjb25mX3ZhbHVlIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisJCisJPHR1cm5PdmVyVGV4dEl0ZW0gdGV4dD0iJG9uY2V7IHBhcmVudC5jb25maWd1cmF0aW9uX2lkIH0iIHdpZHRoPSI4MCIgLz4KKwk8dHVybk92ZXJUZXh0SXRlbSB0ZXh0PSIkb25jZXsgcGFyZW50LmNvbmZfa2V5IH0iIHdpZHRoPSIxNjYiIC8+CisgICAgPHR1cm5PdmVyVGV4dEl0ZW0gdGV4dD0iJG9uY2V7IHBhcmVudC5jb25mX3ZhbHVlIH0iIHdpZHRoPSIxNTAiIC8+CisJCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2FkbWluL2NvbmZhZG1pbi9jb25mQWRtaW5WYWx1ZUZvcm0ubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi9jb25mYWRtaW4vY29uZkFkbWluVmFsdWVGb3JtLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOTdjM2U1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi9jb25mYWRtaW4vY29uZkFkbWluVmFsdWVGb3JtLmx6eApAQCAtMCwwICsxLDE1OSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPCEtLS0gY29uZmlndXJhdGlvbiBlZGl0IHBhbmVsLiAtLT4KKzxjbGFzcyBuYW1lPSJjb25mQWRtaW5WYWx1ZUZvcm0iIGV4dGVuZHM9ImJhc2VDb250ZW50U2F2ZVZpZXciPgorCisJPCEtLSByZWNvcmRDb250ZW50LWlkIC0tPgorCTxhdHRyaWJ1dGUgbmFtZT0iY29uZmlndXJhdGlvbl9pZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImNvbmZvYmoiIHZhbHVlPSJudWxsIiAvPgorCQorCTwhLS1oYW5kbGVycyAtLT4KKworCTxoYW5kbGVyIG5hbWU9Im9uc2F2ZWNvbXBsZXRlZCIgPgorCQl0aGlzLmdldENvbmZCeUNvbmZpZ3VyYXRpb25JZC5kb0NhbGwoKTsKKwk8L2hhbmRsZXI+CisJCisJPGhhbmRsZXIgbmFtZT0ib25yZWxvYWQiID4KKwkJaWYgKHRoaXMuY29uZmlndXJhdGlvbl9pZCE9MCkgdGhpcy5nZXRDb25mQnlDb25maWd1cmF0aW9uSWQuZG9DYWxsKCk7CisJPC9oYW5kbGVyPgkKKworCTxoYW5kbGVyIG5hbWU9Im9ubmV3Ij4KKwkJdGhpcy5jb25maWd1cmF0aW9uX2lkPTA7CisJCXRoaXMuY29tbWVudC5zZXRBdHRyaWJ1dGUoJ3RleHQnLCcnKTsKKwkJdGhpcy5jb25mX2tleS5zZXRBdHRyaWJ1dGUoJ3RleHQnLCcnKTsKKwkJdGhpcy5jb25mX3ZhbHVlLnNldEF0dHJpYnV0ZSgndGV4dCcsJycpOworCQl0aGlzLnVwZGF0ZXRpbWUuc2V0QXR0cmlidXRlKCd0ZXh0JywnJyk7CisgICAgICAgIHRoaXMudXNlcnNfbG9naW4uc2V0QXR0cmlidXRlKCd0ZXh0JywnJyk7CisJPC9oYW5kbGVyPgorCQorICAgIDxoYW5kbGVyIG5hbWU9Im9uZGVsZXRlIiA+CisJCWlmICh0aGlzLmNvbmZpZ3VyYXRpb25faWQhPTApeworICAgICAgICAgICAgdGhpcy5kZWxldGVDb25maWd1cmF0aW9uLnByZXBhcmVDYWxsKCk7CisJCQl0aGlzLmRlbGV0ZUNvbmZpZ3VyYXRpb24uZG9DYWxsKCk7CisJCX0KKyAgICA8L2hhbmRsZXI+CisJCisJPCEtLSBtZXRob2RzIC0tPgorCisgICAgPG1ldGhvZCBuYW1lPSJpbml0VmFsdWVGaWVsZHNCeU9iamVjdCIgYXJncz0ib2JqIj4KKwkJdGhpcy5jb25maWd1cmF0aW9uX2lkID0gb2JqLmNvbmZpZ3VyYXRpb25faWQ7CisJCWlmICh0aGlzLmNvbmZpZ3VyYXRpb25faWQhPTApeworCQkJdGhpcy5nZXRDb25mQnlDb25maWd1cmF0aW9uSWQuZG9DYWxsKCk7CisJCX0KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImluaXRGaWVsZHMiIGFyZ3M9Im9iaiI+CisgICAgCTwhW0NEQVRBWworICAgICAgICAgICAgLy9EZWJ1Zy53cml0ZSgiaW5pdEZpZWxkczogIixvYmopOworICAgICAgICAgICAgdGhpcy5jb25mb2JqID0gb2JqOworCQkJdGhpcy5jb21tZW50LnNldEF0dHJpYnV0ZSgndGV4dCcsb2JqLmNvbW1lbnQpOworCQkJdGhpcy5jb25mX2tleS5zZXRBdHRyaWJ1dGUoJ3RleHQnLG9iai5jb25mX2tleSk7CisJCQl0aGlzLmNvbmZfdmFsdWUuc2V0QXR0cmlidXRlKCd0ZXh0JyxvYmouY29uZl92YWx1ZSk7CisJCQl0aGlzLnVwZGF0ZXRpbWUuc2V0QXR0cmlidXRlKCd0ZXh0JywgY2FudmFzLmdldE5vdE51bGxTdHJpbmcob2JqLnVwZGF0ZXRpbWUpKTsKKwkJCXRoaXMudXNlcnNfbG9naW4uc2V0QXR0cmlidXRlKCd0ZXh0JywgY2FudmFzLmdldE5vdE51bGxTdHJpbmcob2JqLnVzZXIubG9naW4pKTsKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisJCisJPCEtLSByZW1vdGVjYWxscyAtLT4KKwkKKyAgCTxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImdldENvbmZCeUNvbmZpZ3VyYXRpb25JZCIgZnVuY25hbWU9ImNvbmZpZ3NlcnZpY2UuZ2V0Q29uZkJ5Q29uZmlndXJhdGlvbklkIiAKKyAgCQlyZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAKKyAgCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC5jb25maWd1cmF0aW9uX2lkOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgCTxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgIAkJcGFyZW50LmluaXRGaWVsZHModmFsdWUpOworICAgIAk8L2hhbmRsZXI+CisgIAk8L25ldFJlbW90ZUNhbGxIaWI+CisJCisJPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iZGVsZXRlQ29uZmlndXJhdGlvbiIgZnVuY25hbWU9ImNvbmZpZ3NlcnZpY2UuZGVsZXRlQ29uZmlndXJhdGlvbiIgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gICAgICAKKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJzZW5kT2JqZWN0IiB2YWx1ZT0ibnVsbCIgLz4KKwkJPG1ldGhvZCBuYW1lPSJwcmVwYXJlQ2FsbCI+CisgIAkJCXRoaXMuc2VuZE9iamVjdD1uZXcgQXJyYXkoKTsKKyAgICAgICAgICAgIHRoaXMuc2VuZE9iamVjdFsiY29uZmlndXJhdGlvbl9pZCJdID0gdGhpcy5wYXJlbnQuY29uZmlndXJhdGlvbl9pZDsKKyAgICAgICAgICAgIHRoaXMuc2VuZE9iamVjdFsiY29tbWVudCJdID0gdGhpcy5wYXJlbnQuY29tbWVudC5nZXRUZXh0KCk7CisgICAgICAgICAgICB0aGlzLnNlbmRPYmplY3RbImNvbmZfa2V5Il0gPSB0aGlzLnBhcmVudC5jb25mX2tleS5nZXRUZXh0KCk7CisgICAgICAgICAgICB0aGlzLnNlbmRPYmplY3RbImNvbmZfdmFsdWUiXSA9IHRoaXMucGFyZW50LmNvbmZfdmFsdWUuZ2V0VGV4dCgpOworICAJCQkvL0RlYnVnLndyaXRlKCJwcmVwYXJlQ2FsbDogIix0aGlzLnNlbmRPYmplY3QpOworICAJCTwvbWV0aG9kPgorICAJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gY2FudmFzLnNlc3Npb25JZDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQuc2VuZE9iamVjdDs8L21ldGhvZD48L25ldHBhcmFtPgkKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisJCQkvL0RlYnVnLndyaXRlKCJkZWxldGVDb25maWd1cmF0aW9uICIsdmFsdWUpOworCQkJaWYgKHZhbHVlPjApeworCQkJCXRoaXMucGFyZW50LnBhcmVudC5fdHVybm92ZXJsaXN0Lm9uY2FsbG5leHQuc2VuZEV2ZW50KCk7CisJCQkJdGhpcy5wYXJlbnQub25uZXcuc2VuZEV2ZW50KCk7CisJCQl9CisJCTwvaGFuZGxlcj4KKwk8L25ldFJlbW90ZUNhbGxIaWI+CQkKKworICAJPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0ic2F2ZU9yVXBkYXRlQ29uZmlndXJhdGlvbiIgZnVuY25hbWU9ImNvbmZpZ3NlcnZpY2Uuc2F2ZU9yVXBkYXRlQ29uZmlndXJhdGlvbiIgCisgIAkJcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iIHJlZ2lzdGVyT2JqZWN0PSJ0cnVlIiA+ICAgCisJCTxhdHRyaWJ1dGUgbmFtZT0ic2VuZE9iamVjdCIgdmFsdWU9Im51bGwiIC8+CisJCTwhLS0gZ2V0cyBjYWxsZWQgYnkgT2JzZXJ2ZXIgLS0+CisgIAkJPG1ldGhvZCBuYW1lPSJwcmVwYXJlQ2FsbCI+CisgIAkJCXRoaXMuc2VuZE9iamVjdD1uZXcgQXJyYXkoKTsKKyAgICAgICAgICAgIHRoaXMuc2VuZE9iamVjdFsiY29uZmlndXJhdGlvbl9pZCJdID0gdGhpcy5wYXJlbnQuY29uZmlndXJhdGlvbl9pZDsKKyAgICAgICAgICAgIHRoaXMuc2VuZE9iamVjdFsiY29tbWVudCJdID0gdGhpcy5wYXJlbnQuY29tbWVudC5nZXRUZXh0KCk7CisgICAgICAgICAgICB0aGlzLnNlbmRPYmplY3RbImNvbmZfa2V5Il0gPSB0aGlzLnBhcmVudC5jb25mX2tleS5nZXRUZXh0KCk7CisgICAgICAgICAgICB0aGlzLnNlbmRPYmplY3RbImNvbmZfdmFsdWUiXSA9IHRoaXMucGFyZW50LmNvbmZfdmFsdWUuZ2V0VGV4dCgpOworICAgICAgICAgICAgLy9EZWJ1Zy53cml0ZSgicHJlcGFyZUNhbGw6ICIsdGhpcy5zZW5kT2JqZWN0KTsKKyAgCQk8L21ldGhvZD4KKyAgCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnNlbmRPYmplY3Q7PC9tZXRob2Q+PC9uZXRwYXJhbT4JICAJCQorICAgIAk8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbCI+CisJCQk8IVtDREFUQVsKKyAgICAJCS8vRGVidWcud3JpdGUoInNhdmVPclVwZGF0ZUNvbmZpZ3VyYXRpb24gIix2YWwpOworCQkJaWYgKHZhbD4wKXsKKwkJCQkvL0RlYnVnLndyaXRlKCJ1cGRhdGVDb25mQnlDb25maWd1cmF0aW9uSWQgdmFsIGdyZWF0ZXIgMDogIix2YWwpOworCQkJCXRoaXMucGFyZW50LnBhcmVudC5fdHVybm92ZXJsaXN0Lm9uY2FsbG5leHQuc2VuZEV2ZW50KCk7CisJCQkJdmFyIG9iaiA9IG5ldyBBcnJheSgpOworCQkJCW9ialsiY29uZmlndXJhdGlvbl9pZCJdID0gdmFsOworCQkJCXRoaXMucGFyZW50LmluaXRWYWx1ZUZpZWxkc0J5T2JqZWN0KG9iaik7CisJCQl9CisJCQldXT4KKyAgICAJPC9oYW5kbGVyPgorICAJPC9uZXRSZW1vdGVDYWxsSGliPgkKKwkKKwk8IS0tIGNvbnRlbnQgLS0+CisgICAgCisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIyNjYiIHdpZHRoPSIyMDAiIHk9IjQwIiByZXNpemU9ImZhbHNlIiBmb250c3R5bGU9ImJvbGQiIC8+CisgICAgCisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIyNjciIHdpZHRoPSIyMDAiIHk9IjcwIiByZXNpemU9ImZhbHNlIiB4PSIyIi8+CisgICAgICAgIDxjdXN0b21FZGl0dGV4dCBuYW1lPSJjb25mX2tleSIgeT0iNzAiIHg9IjEyMCIgd2lkdGg9IjI3MCIgdGV4dD0iIiAvPgorCisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIyNzEiIHdpZHRoPSIyMDAiIHk9IjEwMCIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPgorICAgICAgICA8Y3VzdG9tRWRpdHRleHQgbmFtZT0iY29uZl92YWx1ZSIgeT0iMTAwIiB4PSIxMjAiIHdpZHRoPSIyNzAiIHRleHQ9IiIgLz4KKworICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMjY4IiB3aWR0aD0iMjAwIiB5PSIxMzAiIHJlc2l6ZT0iZmFsc2UiIHg9IjIiLz4KKyAgICAgICAgPGxhYmVsVGV4dCBuYW1lPSJ1cGRhdGV0aW1lIiB5PSIxMzAiIHg9IjEyMCIgd2lkdGg9IjI3MCIgdGV4dD0iIiAvPgorIAorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMjY5IiB3aWR0aD0iMjAwIiB5PSIxNjAiIHJlc2l6ZT0iZmFsc2UiIHg9IjIiLz4KKyAgICAgICAgPGxhYmVsVGV4dCBuYW1lPSJ1c2Vyc19sb2dpbiIgeT0iMTYwIiB4PSIxMjAiIHdpZHRoPSIyNzAiIHRleHQ9IiIgLz4KKworICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMjcwIiB3aWR0aD0iMjAwIiB5PSIxOTAiIHJlc2l6ZT0iZmFsc2UiIHg9IjIiLz4KKyAgICAgICAgPGN1c3RvbVNjcm9sbEVkaXR0ZXh0IG5hbWU9ImNvbW1lbnQiIHk9IjE5MCIgeD0iMTIwIiB3aWR0aD0iMjcwIiAKKyAgICAgICAgICAgIGhlaWdodD0iMTAwIiB0ZXh0PSIiIC8+ICAgIAorICAgICAgICAgCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2FkbWluL2NvbmZhZG1pbi9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvYWRtaW4vY29uZmFkbWluL2xpYnJhcnkubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjZmRiNjEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2FkbWluL2NvbmZhZG1pbi9saWJyYXJ5Lmx6eApAQCAtMCwwICsxLDI3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCisJPGluY2x1ZGUgaHJlZj0iY29uZkFkbWluLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJjb25mQWRtaW5MaXN0SXRlbS5sengiIC8+CisgICAgPGluY2x1ZGUgaHJlZj0iY29uZkFkbWluVmFsdWVGb3JtLmx6eCIgLz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi9jb25uZWN0aW9ucy9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvYWRtaW4vY29ubmVjdGlvbnMvbGlicmFyeS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTU4Mzc5YQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvYWRtaW4vY29ubmVjdGlvbnMvbGlicmFyeS5sengKQEAgLTAsMCArMSwyNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKyAgICAKKyAgICA8aW5jbHVkZSBocmVmPSJzZXNzaW9uRGV0YWlscy5sengiIC8+CisgICAgPGluY2x1ZGUgaHJlZj0icm9vbUNsaWVudC5sengiIC8+CisgICAgPGluY2x1ZGUgaHJlZj0icm9vbUNsaWVudExpc3RJdGVtLmx6eCIgLz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi9jb25uZWN0aW9ucy9yb29tQ2xpZW50Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvYWRtaW4vY29ubmVjdGlvbnMvcm9vbUNsaWVudC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGUxMzdjYQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvYWRtaW4vY29ubmVjdGlvbnMvcm9vbUNsaWVudC5sengKQEAgLTAsMCArMSwxNDcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzwhLS0tIEFkbWluIG1vZHVsZSB0byBjb25maWd1cmUgdGhlIENvbmZlcmVuY2Ugb3IgQXVkaWVuY2Ugcm9vbS4tLT4KKzxjbGFzcyBuYW1lPSJyb29tQ2xpZW50IiBleHRlbmRzPSJiYXNlQ29udGVudFZpZXciPgkKKworICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgCV9tYWluU2Nyb2xsQmFyLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgIDwvaGFuZGxlcj4KKyAgICA8aGFuZGxlciBuYW1lPSJvbnRhYmNvbnRlbnRsZWF2ZSI+CisgICAgICAgIF9tYWluU2Nyb2xsQmFyLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKyAgICA8L2hhbmRsZXI+CisJCisJPHR1cm5PdmVyTGlzdCBuYW1lPSJfdHVybm92ZXJsaXN0IiB3aWR0aD0iNzgwIiAKKwkJCWhlaWdodD0iJHsgY2FudmFzLmhlaWdodCAtIGNhbnZhcy5uYXZpSGVpZ2h0IH0iIAorICAgICAgICAgICAgeD0iMiIgeT0iMCIgb3JkZXJieT0icm9vbV9pZCIgc3RlcD0iNTAiIGFzYz0idHJ1ZSI+CisKKwkJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKwkJCXRoaXMuYWRkSGVhZGVySXRlbSg1OTksODApOworCQkJdGhpcy5hZGRIZWFkZXJJdGVtKDYwMCwyNDApOworCQkJdGhpcy5hZGRIZWFkZXJJdGVtKDYwMSwxMzApOworICAgICAgICAgICAgdGhpcy5hZGRIZWFkZXJJdGVtKDYwMiwxMDApOworICAgICAgICAgICAgdGhpcy5hZGRIZWFkZXJJdGVtKDYwMywxMDApOworICAgICAgICAgICAgdGhpcy5hZGRIZWFkZXJJdGVtKDE1MDEsMTAwKTsKKwkJCXRoaXMuZ2V0Um9vbUNsaWVudHNNYXAuZG9DYWxsKCk7CisJCTwvaGFuZGxlcj4KKwkJCisJCTxoYW5kbGVyIG5hbWU9Im9uY2FsbG5leHQiID4KKwkJCXRoaXMuZ2V0Um9vbUNsaWVudHNNYXAuZG9DYWxsKCk7CisJCTwvaGFuZGxlcj4KKwkJCisJCTxoYW5kbGVyIG5hbWU9Im9uY2FsbHByZSIgPgkJCisJCQl0aGlzLmdldFJvb21DbGllbnRzTWFwLmRvQ2FsbCgpOworCQk8L2hhbmRsZXI+CisJCQorCQk8aGFuZGxlciBuYW1lPSJvbmNsaWNrZWRJdGVtIiBhcmdzPSJvYmoiPgorCQkJLy9EZWJ1Zy53cml0ZSgib25jbGlja2VkSXRlbSIsb2JqLG9iai5vYmopOworCQkJcGFyZW50Ll9yb29tdmFsdWVmb3JtLmluaXRWYWx1ZUZpZWxkc0J5T2JqZWN0KG9iai5vYmopOworCQk8L2hhbmRsZXI+CisJCQorCQk8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJnZXRSb29tQ2xpZW50c01hcCIgZnVuY25hbWU9ImNvbmZlcmVuY2VzZXJ2aWNlLmdldFJvb21DbGllbnRzTWFwIiByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAgICAgIAorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gY2FudmFzLnNlc3Npb25JZDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIHBhcmVudC5wYXJlbnQuc3RhcnQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBwYXJlbnQucGFyZW50LnN0ZXA7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBwYXJlbnQucGFyZW50Lm9yZGVyYnk7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBwYXJlbnQucGFyZW50LmFzYzsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkgICAgCTxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorCSAgICAJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJnZXRSb29tQ2xpZW50c01hcDogIix2YWx1ZSk7CisJICAgIAkJLy90aGlzLnBhcmVudC5kZXN0cm95KCk7CisJICAgIAkJdGhpcy5wYXJlbnQuaW5pdFZhbHVlcyh2YWx1ZS5yZWNvcmRzKTsKKwkgICAgCQl0aGlzLnBhcmVudC5yZW5kZXJDb250ZW50KHZhbHVlLnJlc3VsdCk7CisJICAgIAk8L2hhbmRsZXI+CisJICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4JCisJICAgIAorCSAgICA8bWV0aG9kIG5hbWU9InJlbmRlckNvbnRlbnQiIGFyZ3M9InJlY29yZHMiPgorCSAgICAJPCFbQ0RBVEFbCisJICAgIAl0aGlzLmNsZWFyTGlzdCgpOworCSAgICAJZm9yICh2YXIgaT0wO2k8cmVjb3Jkcy5sZW5ndGg7aSsrKXsKKwkgICAgCQl2YXIgdFNlcnZlciA9ICJubyBjbHVzdGVyIjsKKwkgICAgCQl2YXIgc2VydmVySWQgPSAwOworCSAgICAJCWlmIChyZWNvcmRzW2ldLnNlcnZlciAhPSBudWxsKSB7CisJICAgIAkJICAgIHNlcnZlcklkID0gcmVjb3Jkc1tpXS5zZXJ2ZXIuaWQ7CisJICAgIAkJCXRTZXJ2ZXIgPSByZWNvcmRzW2ldLnNlcnZlci5hZGRyZXNzICsgIiBbIityZWNvcmRzW2ldLnNlcnZlci5pZCsiXSI7CisJICAgIAkJfQorCisJICAgIAkJbmV3IGx6LnJvb21DbGllbnRMaXN0SXRlbSh0aGlzLl9pbm5lcmxpc3QuX2lubi5faW5uLHsKKwkgICAgICAgICAgICAgICAgICAgIG9iajpyZWNvcmRzW2ldLAorCSAgICAgICAgICAgICAgICAgICAgc3RyZWFtaWQ6cmVjb3Jkc1tpXS5zdHJlYW1pZCwKKwkgICAgICAgICAgICAgICAgICAgIGxvZ2luOnJlY29yZHNbaV0udXNlcm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICBkYXRlQ29ubmVjdGVkOnBhcnNlRGF0ZVRvU3RyaW5nVGltZShyZWNvcmRzW2ldLmNvbm5lY3RlZFNpbmNlKSwKKwkgICAgICAgICAgICAgICAgICAgIHNjb3BlOnJlY29yZHNbaV0uc2NvcGUsCisJICAgICAgICAgICAgICAgICAgICBraWNrYWJsZTogdHJ1ZSAhPSByZWNvcmRzW2ldLmlzU2NyZWVuQ2xpZW50ICYmIHRydWUgIT0gcmVjb3Jkc1tpXS5pc0FWQ2xpZW50LAorCSAgICAgICAgICAgICAgICAgICAgc2VydmVySWQ6c2VydmVySWQsCisJICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJBZGRyOnRTZXJ2ZXIKKyAgICAgICAgICAgICAgICAgICAgfSk7CisJICAgIAl9CisgICAgICAgICAgICB0aGlzLnNlbmRJbml0aWFsV2lkdGhVcGRhdGUoKTsKKwkgICAgCV1dPgorCSAgICA8L21ldGhvZD4KKworCTwvdHVybk92ZXJMaXN0PgorCQorCTx0ZXh0IG5hbWU9Il9oZWFkZXIiIGZvbnRzdHlsZT0iYm9sZCIgdGV4dD0iU2Vzc2lvbnZhcnMiIHg9Ijc5MCIgeT0iMiIvPgorCQorCTx2aWV3IHJlc291cmNlPSJtZXNzYWdlYm94X2luZm9fcnNjIiB4PSIkeyBjYW52YXMud2lkdGggLSAyMCB9IiB5PSIyIj4KKwkJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisJCQk8IVtDREFUQVsKKwkJCQluZXcgbHouc2Vzc2lvbkRldGFpbHMocGFyZW50KTsKKwkJCV1dPgorCQk8L2hhbmRsZXI+CisJCTxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iMTUzNCIgLz4KKwk8L3ZpZXc+CisJCisJPHZpZXcgbmFtZT0iX3Jvb212YWx1ZWZvcm0iIHg9Ijc5MCIgeT0iMjAiIGNsaXA9InRydWUiIAorCQkgIGhlaWdodD0iJHsgY2FudmFzLmhlaWdodCAtIGNhbnZhcy5uYXZpSGVpZ2h0IC0gMjAgfSIgd2lkdGg9IiR7IGNhbnZhcy53aWR0aCAtIDc5MCB9Ij4KKwkJCisJCTxtZXRob2QgbmFtZT0iaW5pdFZhbHVlRmllbGRzQnlPYmplY3QiIGFyZ3M9InZhbHVlIj4KKwkJCTwhW0NEQVRBWworCQkJICAgIHZhciB0QXJyYXkgPSBuZXcgQXJyYXkoKTsKKwkJCSAgICBmb3IgKHZhciBlZyBpbiB2YWx1ZSkgeworCQkJICAgIAl0QXJyYXkucHVzaChuZXcgQXJyYXkoZWcsIHZhbHVlW2VnXSkpCisJCQkgICAgfQorCQkJCisJCQkgICAgZnVuY3Rpb24gc29ydEJ5S2V5KGEsYikgeworICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZihhWzBdLnRvTG93ZXJDYXNlKCkgPCBiWzBdLnRvTG93ZXJDYXNlKCkpIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZihhWzBdLnRvTG93ZXJDYXNlKCkgPiBiWzBdLnRvTG93ZXJDYXNlKCkpIHJldHVybiAxOworICAgICAgICAgICAgICAgICAgICBlbHNlIHJldHVybiAwOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIH0KKwkJCSAgICB0QXJyYXkuc29ydChzb3J0QnlLZXkpOworCQkJICAgIAorCQkJICAgIHZhciB0U3RyaW5nID0gIiI7CisJCQkgICAgZm9yICh2YXIgaT0wO2k8dEFycmF5Lmxlbmd0aDtpKyspIHsKKwkJCSAgICAJdFN0cmluZyArPSAiIiArIHRBcnJheVtpXVswXSArICI6ICIgKyB0QXJyYXlbaV1bMV0rICIgPGJyLz4iOworCQkJICAgIH0KKwkJCSAgICB0aGlzLl9jb250ZW50Vmlldy5zZXRBdHRyaWJ1dGUoInRleHQiLHRTdHJpbmcpOworCQkJXV0+CisJCTwvbWV0aG9kPgorCQkKKwkJPHRleHQgbmFtZT0iX2NvbnRlbnRWaWV3IiBtdWx0aWxpbmU9InRydWUiIHNlbGVjdGFibGU9InRydWUiIC8+CisJCTxvbV92c2Nyb2xsYmFyIC8+CisJCTxvbV9oc2Nyb2xsYmFyIC8+CisJPC92aWV3PgorICAgIAorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi9jb25uZWN0aW9ucy9yb29tQ2xpZW50TGlzdEl0ZW0ubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi9jb25uZWN0aW9ucy9yb29tQ2xpZW50TGlzdEl0ZW0ubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhNGMyOTIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2FkbWluL2Nvbm5lY3Rpb25zL3Jvb21DbGllbnRMaXN0SXRlbS5sengKQEAgLTAsMCArMSw3MyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPCEtLS0gbGlzdCBvZiBjb25mZXJlbmNlL2F1ZGllbmNlIHJvb21zIC0tPgorPGNsYXNzIG5hbWU9InJvb21DbGllbnRMaXN0SXRlbSIgZXh0ZW5kcz0iYmFzZUNvbnRlbnRMaXN0SXRlbSI+CisgICAgCisJPGF0dHJpYnV0ZSBuYW1lPSJzdHJlYW1pZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKwk8YXR0cmlidXRlIG5hbWU9ImxvZ2luIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJkYXRlQ29ubmVjdGVkIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJzY29wZSIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0ic2VydmVySWQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJzZXJ2ZXJBZGRyIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJraWNrYWJsZSIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CisJCisJPHR1cm5PdmVyVGV4dEl0ZW0gdGV4dD0iJG9uY2V7IHBhcmVudC5zdHJlYW1pZCB9IiAvPgorCTx0dXJuT3ZlclRleHRJdGVtIHRleHQ9IiRvbmNleyBwYXJlbnQubG9naW4gfSIgLz4KKwk8dHVybk92ZXJUZXh0SXRlbSB0ZXh0PSIkb25jZXsgcGFyZW50LmRhdGVDb25uZWN0ZWQgfSIgLz4KKyAgICA8dHVybk92ZXJUZXh0SXRlbSB0ZXh0PSIkb25jZXsgcGFyZW50LnNjb3BlIH0iIC8+CisgICAgPHNpbXBsZUxhYmVsQnV0dG9uIGxhYmVsaWQ9IjYwMyIgZW5hYmxlZD0iJHsgcGFyZW50LmtpY2thYmxlIH0iPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbmNsaWNrICIsdGhpcyk7CisgICAgICAgICAgICBuZXcgbHouY29uZmlybWF0aW9uU2luZ2xlKGNhbnZhcy5tYWluX2NvbnRlbnQuX2NvbnRlbnQuaW5uZXIse2xhYmVsaWQ6NjA0LGxhYmVsaWRlcnJvcjo2MDUscmVmT2JqOnRoaXMsc2hvd0NoZWNrQm94OmZhbHNlfSk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPG1ldGhvZCBuYW1lPSJzZW5kQ29uZmlybWF0aW9uIiBhcmdzPSJ5ZXNubyIgPgorCSAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIktpY2sgdGhhdCBVc2VyIik7CisgICAgICAgICAgICB0aGlzLmtpY2tVc2VyQnlTdHJlYW1JZC5kb0NhbGwoKTsKKwkgICAgPC9tZXRob2Q+CisgICAgICAgIAorICAgICAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJraWNrVXNlckJ5U3RyZWFtSWQiIGZ1bmNuYW1lPSJ1c2Vyc2VydmljZS5raWNrVXNlckJ5U3RyZWFtSWQiIAorICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAgICAgIAorICAgICAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gY2FudmFzLnNlc3Npb25JZDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIHBhcmVudC5wYXJlbnQucGFyZW50LnN0cmVhbWlkOyA8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBhcmVudC5wYXJlbnQuc2VydmVySWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgia2lja1VzZXJCeVN0cmVhbUlkOiAiLHZhbHVlKTsKKyAgICAgICAgICAgICAgICAvL3RoaXMucGFyZW50LmRlc3Ryb3koKTsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50LnBhcmVudC5kZXN0cm95KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8L25ldFJlbW90ZUNhbGxIaWI+IAorICAgIDwvc2ltcGxlTGFiZWxCdXR0b24+CisgICAgPHR1cm5PdmVyVGV4dEl0ZW0gdGV4dD0iJG9uY2V7IHBhcmVudC5zZXJ2ZXJBZGRyIH0iIC8+CisgICAgCisgICAgPGxhYmVsVG9vbHRpcCBuYW1lPSJfbGFiZWxUb29sdGlwIiBtdWx0aWxpbmU9ImZhbHNlIj4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ic2V0Q29udGVudCI+CisgICAgICAgIAlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZShwYXJlbnQub2JqKTsKKyAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCd0ZXh0JywicHVibGljU0lEOiAiK3BhcmVudC5vYmoucHVibGljU0lEKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgIDwvbGFiZWxUb29sdGlwPgorCQorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi9jb25uZWN0aW9ucy9zZXNzaW9uRGV0YWlscy5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2FkbWluL2Nvbm5lY3Rpb25zL3Nlc3Npb25EZXRhaWxzLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MWYzNzI5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi9jb25uZWN0aW9ucy9zZXNzaW9uRGV0YWlscy5sengKQEAgLTAsMCArMSw1MiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPCEtLS0gUG9wdXAgdmlldyB0byBpbnB1dCBhIG5ldyBsYW5ndWFnZSBuYW1lIHRvIGJlIGFkZGVkLiAtLT4KKzxjbGFzcyBuYW1lPSJzZXNzaW9uRGV0YWlscyIgZXh0ZW5kcz0ibGFiZWxFeHBsb3JlckJveCIgbGFiZWxpZD0iMTUzNSIgeT0iMzAiIAorICAgIGRvY2tpbmc9InRydWUiIHJlc2l6ZWFibGU9InRydWUiIGNsb3NhYmxlPSJ0cnVlIiB3aWR0aD0iNDYwIiB4PSIkb25jZXsgcGFyZW50LndpZHRoIC0gNDcwIH0iIGhlaWdodD0iMzYwIj4KKwkKKwk8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorCQk8IVtDREFUQVsKKwkJCXRoaXMuZ2V0U2Vzc2lvblN0YXRpc3RpY3MuZG9DYWxsKCk7CisJCV1dPgorCTwvaGFuZGxlcj4KKwkKKyAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJnZXRTZXNzaW9uU3RhdGlzdGljcyIgZnVuY25hbWU9ImNvbmZlcmVuY2VzZXJ2aWNlLmdldFNlc3Npb25TdGF0aXN0aWNzIiAKKwkJCXJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiBhY3RpdmVFcnJvckhhbmRsZXI9InRydWUiCisJCQlpc0NhbGxCYWNrSGFuZGxlcj0idHJ1ZSIgPiAgICAgIAorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBjYW52YXMuc2Vzc2lvbklkOzwvbWV0aG9kPjwvbmV0cGFyYW0+IAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgIC8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisJCQlpZigkZGVidWcpIERlYnVnLndyaXRlKCJnZXRTZXNzaW9uU3RhdGlzdGljcyAiLHZhbHVlKTsKKwkJCXBhcmVudC5lcnJvclZpZXcuZXJyb3JWaWV3LnNldEF0dHJpYnV0ZSgidGV4dCIsdmFsdWUpOworICAgICAgICA8L2hhbmRsZXI+ICAKKyAgICA8L25ldFJlbW90ZUNhbGxIaWI+CSAgICAgIAkKKyAgIAorICAgIDx2aWV3IHk9IjI0IiB3aWR0aD0iJHsgcGFyZW50LndpZHRoIC0gNCB9IiBoZWlnaHQ9IiR7IHBhcmVudC5oZWlnaHQgLSAzMCB9IiB4PSIyIiBjbGlwPSJ0cnVlIiBuYW1lPSJlcnJvclZpZXciPgorCQk8dGV4dCB5PSIzMCIgZm9udHNpemU9IjEwIiBmb250c3R5bGU9ImJvbGQiIG5hbWU9ImVycm9yVmlldyIKKwkJCW11bHRpbGluZT0idHJ1ZSIgd2lkdGg9IiR7IHBhcmVudC53aWR0aCAtIDE0IH0iIHNlbGVjdGFibGU9InRydWUiIC8+CisJCTxvbV92c2Nyb2xsYmFyIC8+CisJPC92aWV3PgorCQorPC9jbGFzcz4gICAgCisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvYWRtaW4vbGFuZ3VhZ2VzZWRpdG9yL2FkZExhbmd1YWdlLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvYWRtaW4vbGFuZ3VhZ2VzZWRpdG9yL2FkZExhbmd1YWdlLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjBlMmE1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi9sYW5ndWFnZXNlZGl0b3IvYWRkTGFuZ3VhZ2UubHp4CkBAIC0wLDAgKzEsNzEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzwhLS0tIFBvcHVwIHZpZXcgdG8gaW5wdXQgYSBuZXcgbGFuZ3VhZ2UgbmFtZSB0byBiZSBhZGRlZC4gLS0+Cis8Y2xhc3MgbmFtZT0iYWRkTGFuZ3VhZ2UiIGV4dGVuZHM9ImxhYmVsRXhwbG9yZXJCb3giIGxhYmVsaWQ9IjM2NCIKKyAgICBkb2NraW5nPSJ0cnVlIiByZXNpemVhYmxlPSJmYWxzZSIgY2xvc2FibGU9InRydWUiIAorCXdpZHRoPSIzNjAiIHg9IjM1MCIgaGVpZ2h0PSIxNjAiPgorCTwhLS0gMzY0OkFkZCBuZXcgbGFuZ3VhZ2UgLS0+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJyZWZPYmoiIHZhbHVlPSJudWxsIiAvPgorCisgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAgICAgdmFyIHByZXNzRW50ZXIgPSBuZXcgTHpEZWxlZ2F0ZSh0aGlzLCAic2VuZFZhbHVlcyIpOworICAgICAgICBsei5LZXlzLmNhbGxPbktleUNvbWJvKHByZXNzRW50ZXIsIFsiZW50ZXIiXSk7CisJPC9oYW5kbGVyPiAgCisJCisJPG1ldGhvZCBuYW1lPSJzZW5kVmFsdWVzIj4KKwkJPCFbQ0RBVEFbCisJCQl0aGlzLmFkZExhbmd1YWdlLmRvQ2FsbCgpOworCQldXT4KKwk8L21ldGhvZD4KKwkKKyAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJhZGRMYW5ndWFnZSIgZnVuY25hbWU9Imxhbmd1YWdlc2VydmljZS5hZGRMYW5ndWFnZSIgCisJCXJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiBhY3RpdmVFcnJvckhhbmRsZXI9InRydWUiCisJCWlzQ2FsbEJhY2tIYW5kbGVyPSJ0cnVlIiA+ICAgICAgCisJCTxhdHRyaWJ1dGUgbmFtZT0idGVtcFZhbHVlIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBjYW52YXMuc2Vzc2lvbklkOzwvbWV0aG9kPjwvbmV0cGFyYW0+IAorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBwYXJlbnQucGFyZW50LmxhbmdOYW1lLmdldFRleHQoKTs8L21ldGhvZD48L25ldHBhcmFtPiAgCisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIHBhcmVudC5wYXJlbnQubGFuZ0NvZGUuZ2V0VGV4dCgpOzwvbWV0aG9kPjwvbmV0cGFyYW0+ICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorCQkJaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSh2YWx1ZSk7CisJCQlwYXJlbnQucmVmT2JqLmxhbmd1YWdlcy5nZXRMYW5ndWFnZXMuZG9DYWxsKCk7CisJCQlwYXJlbnQuY2xvc2UoKTsKKyAgICAgICAgPC9oYW5kbGVyPiAgCisgICAgPC9uZXRSZW1vdGVDYWxsSGliPgkgICAgICAJCisgICAKKyAgICA8IS0tIDM2NTpOYW1lIC0tPgorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMzY1IiB3aWR0aD0iMjAwIiB5PSI1NCIgeD0iMiIvPgorICAgICAgICA8Y3VzdG9tRWRpdHRleHQgbmFtZT0ibGFuZ05hbWUiIHk9IjU0IiB4PSIxNDAiIHdpZHRoPSIxNzAiIC8+CisJCisgICAgPCEtLSAxNDIyOkNvZGUgLS0+CisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIxNDIyIiB3aWR0aD0iMjAwIiB5PSI3NCIgeD0iMiIvPgorICAgICAgICA8Y3VzdG9tRWRpdHRleHQgbmFtZT0ibGFuZ0NvZGUiIHk9Ijc0IiB4PSIxNDAiIHdpZHRoPSIxNzAiIC8+CisJCisJPCEtLSAzNjY6YWRkIGxhbmd1YWdlICAtLT4KKyAgICA8c2ltcGxlTGFiZWxCdXR0b24gbmFtZT0iX2J0biIgbGFiZWxpZD0iMzY2IiB3aWR0aD0iMTIwIiB4PSIyMzAiIAorCQl5PSIkb25jZXsgcGFyZW50LmhlaWdodC00MCB9IiBvbmNsaWNrPSJwYXJlbnQuc2VuZFZhbHVlcygpIiAvPiAgIAorCQorPC9jbGFzcz4gICAgCisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvYWRtaW4vbGFuZ3VhZ2VzZWRpdG9yL2ZpZWxkVmFsdWVGb3JtLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvYWRtaW4vbGFuZ3VhZ2VzZWRpdG9yL2ZpZWxkVmFsdWVGb3JtLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzQ3MWEzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi9sYW5ndWFnZXNlZGl0b3IvZmllbGRWYWx1ZUZvcm0ubHp4CkBAIC0wLDAgKzEsMTU5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8IS0tLSByaWdodCBibG9jayBvZiB0aGUgTGFuZ3VhZ2VFZGl0b3IuIHlvdSBjYW4gZWRpdCB0aGUgbGFiZWwuLS0+Cis8Y2xhc3MgbmFtZT0iZmllbGRWYWx1ZUZvcm0iIGV4dGVuZHM9ImJhc2VDb250ZW50U2F2ZVZpZXciPgorCQorCTxkYXRhc2V0IG5hbWU9ImZpZWxkdmFsdWVzIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0iZmllbGR2YWx1ZXNfaWQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJmaWVsZGxhbmd1YWdlc3ZhbHVlc19pZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKworCTwhLS0gaGFuZGxlciAtLT4KKwkKKwk8aGFuZGxlciBuYW1lPSJvbnNhdmVjb21wbGV0ZWQiID4KKwkJLy90aGlzLmdldEZpZWxkdmFsdWVCeUlkLmRvQ2FsbCgpOworCTwvaGFuZGxlcj4KKwkKKwk8aGFuZGxlciBuYW1lPSJvbnJlbG9hZCIgPgorCQlpZiAodGhpcy5maWVsZHZhbHVlc19pZCE9MCkgeworICAgICAgICAgICAgdGhpcy5nZXRGaWVsZHZhbHVlQnlJZC5kb0NhbGwoKTsKKyAgICAgICAgfQorCTwvaGFuZGxlcj4JCisKKwk8aGFuZGxlciBuYW1lPSJvbm5ldyI+CisgICAgICAgIHRoaXMuaW5pdFZhbHVlRmllbGRzQnlPYmplY3QobnVsbCk7CisJCXRoaXMuc2V0QXR0cmlidXRlKCdmaWVsZHZhbHVlc19pZCcsMCk7CisgICAgICAgIHRoaXMuZmllbGRsYW5ndWFnZXN2YWx1ZXNfaWQ9MDsgICAKKwk8L2hhbmRsZXI+CisJCisgICAgPGhhbmRsZXIgbmFtZT0ib25kZWxldGUiID4KKwkJaWYgKHRoaXMuZmllbGRsYW5ndWFnZXN2YWx1ZXNfaWQhPTApeworCQkJdGhpcy5kZWxldGVGaWVsZGxhbmd1YWdlc3ZhbHVlc0J5SWQuZG9DYWxsKCk7CisJCX0gZWxzZSB7CisJCQluZXcgbHoucnBjRXJyb3JEaWFsb2coY2FudmFzLm1haW5fY29udGVudC5fY29udGVudC5pbm5lcix7ZXJyb3JpZDotMjl9KTsKKwkJfQorICAgIDwvaGFuZGxlcj4JCisJCisJPCEtLSBtZXRob2RzIC0tPgorCQorICAgIDxtZXRob2QgbmFtZT0iaW5pdFZhbHVlRmllbGRzQnlPYmplY3QiIGFyZ3M9Im9iaiI+CisgICAgICAgIGlmIChvYmogIT0gbnVsbCkgeworCQkJaWYgKG9iai5maWVsZHZhbHVlc19pZCE9bnVsbCkgeworCQkJCXRoaXMuc2V0QXR0cmlidXRlKCdmaWVsZHZhbHVlc19pZCcsb2JqLmZpZWxkdmFsdWVzX2lkKTsKKwkJCQl0aGlzLm9uc2F2ZWNvbXBsZXRlZC5zZW5kRXZlbnQoKTsKKwkJCX0KKwkgICAgCWlmIChvYmouZmllbGRsYW5ndWFnZXN2YWx1ZSE9bnVsbCkgeworCSAgICAJCXRoaXMuZmllbGRsYW5ndWFnZXN2YWx1ZXNfaWQgPSBvYmouZmllbGRsYW5ndWFnZXN2YWx1ZS5maWVsZGxhbmd1YWdlc3ZhbHVlc19pZDsKKwkgICAgCX0gZWxzZSB7CisJICAgIAkJdGhpcy5maWVsZGxhbmd1YWdlc3ZhbHVlc19pZCA9IDA7CisJICAgIAl9CisgICAgICAgICAgICB0aGlzLl9vdXRwdXQubGFiZWxpZC5zZXRBdHRyaWJ1dGUoInRleHQiLG9iai5maWVsZHZhbHVlc19pZCk7CisgICAgICAgICAgICB0aGlzLl9vdXRwdXQuZmllbGRuYW1lLnNldEF0dHJpYnV0ZSgidGV4dCIsb2JqLm5hbWUpOworICAgICAgICAgICAgdGhpcy5fb3V0cHV0LmZpZWxkdmFsdWUuc2V0QXR0cmlidXRlKCJ0ZXh0IixvYmouZmllbGRsYW5ndWFnZXN2YWx1ZS52YWx1ZSk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aGlzLl9vdXRwdXQubGFiZWxpZC5zZXRBdHRyaWJ1dGUoInRleHQiLCIiKTsKKyAgICAgICAgICAgIHRoaXMuX291dHB1dC5maWVsZG5hbWUuc2V0QXR0cmlidXRlKCJ0ZXh0IiwiIik7CisgICAgICAgICAgICB0aGlzLl9vdXRwdXQuZmllbGR2YWx1ZS5zZXRBdHRyaWJ1dGUoInRleHQiLCIiKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAJLy92YXIgZWxlbWVudCA9IEx6RGF0YUVsZW1lbnQudmFsdWVUb0VsZW1lbnQob2JqKTsKKwkJLy90aGlzLmZpZWxkdmFsdWVzLnNldERhdGEoZWxlbWVudC5jaGlsZE5vZGVzKTsKKyAgICA8L21ldGhvZD4JCisKKyAgCTxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImdldEZpZWxkdmFsdWVCeUlkIiBmdW5jbmFtZT0ibGFuZ3VhZ2VzZXJ2aWNlLmdldEZpZWxkdmFsdWVCeUlkIiAKKyAgCQlyZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAKKyAgCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC5maWVsZHZhbHVlc19pZDs8L21ldGhvZD48L25ldHBhcmFtPgorICAgIAk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQucGFyZW50Ll90dXJub3Zlcmxpc3QubGFuZ3VhZ2VfaWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAJPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgCQkvL2lmKCRkZWJ1ZykgRGVidWcud3JpdGUoImdldEZpZWxkdmFsdWVCeUlkICIsdmFsdWUpOworICAgIAkJaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZShwYXJlbnQuZmllbGR2YWx1ZXNfaWQpOworICAgIAkJaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZShwYXJlbnQucGFyZW50Ll90dXJub3Zlcmxpc3QubGFuZ3VhZ2VfaWQpOworICAgIAkJcGFyZW50LmluaXRWYWx1ZUZpZWxkc0J5T2JqZWN0KHZhbHVlKTsKKyAgICAJPC9oYW5kbGVyPgorICAJPC9uZXRSZW1vdGVDYWxsSGliPgkKKworCTxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImRlbGV0ZUZpZWxkbGFuZ3VhZ2VzdmFsdWVzQnlJZCIgYWN0aXZlRXJyb3JIYW5kbGVyPSJ0cnVlIgorCQlmdW5jbmFtZT0ibGFuZ3VhZ2VzZXJ2aWNlLmRlbGV0ZUZpZWxkbGFuZ3VhZ2VzdmFsdWVzQnlJZCIgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gICAgICAKKwkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gY2FudmFzLnNlc3Npb25JZDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBhcmVudC5maWVsZGxhbmd1YWdlc3ZhbHVlc19pZDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisJCQkvL2lmKCRkZWJ1ZykgRGVidWcud3JpdGUoImRlbGV0ZUZpZWxkbGFuZ3VhZ2VzdmFsdWVzQnlJZCAiLHZhbHVlKTsKKwkJCXRoaXMucGFyZW50LnBhcmVudC5fdHVybm92ZXJsaXN0Lm9uY2FsbG5leHQuc2VuZEV2ZW50KCk7CisJCQl0aGlzLnBhcmVudC5nZXRGaWVsZHZhbHVlQnlJZC5kb0NhbGwoKTsKKwkJPC9oYW5kbGVyPgorCTwvbmV0UmVtb3RlQ2FsbEhpYj4JCisKKyAgCTxuZXRSZW1vdGVDYWxsSGliIG5hbWU9InNhdmVPclVwZGF0ZUxhYmVsIiBmdW5jbmFtZT0ibGFuZ3VhZ2VzZXJ2aWNlLnNhdmVPclVwZGF0ZUxhYmVsIiAKKyAgCQlyZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgcmVnaXN0ZXJPYmplY3Q9InRydWUiID4gICAKKwkJPGF0dHJpYnV0ZSBuYW1lPSJzZW5kT2JqZWN0IiB2YWx1ZT0ibnVsbCIgLz4KKworICAJCTxtZXRob2QgbmFtZT0icHJlcGFyZUNhbGwiPgorICAJCQl0aGlzLnNlbmRPYmplY3Q9bmV3IEFycmF5KCk7CisgIAkJCXRoaXMuc2VuZE9iamVjdFsiZmllbGR2YWx1ZXNfaWQiXSA9IHRoaXMucGFyZW50LmZpZWxkdmFsdWVzX2lkOworICAJCQl0aGlzLnNlbmRPYmplY3RbImxhbmd1YWdlX2lkIl0gPSBwYXJlbnQucGFyZW50Ll90dXJub3Zlcmxpc3QubGFuZ3VhZ2VfaWQ7CisgIAkJCXRoaXMuc2VuZE9iamVjdFsiZmllbGRsYW5ndWFnZXN2YWx1ZXNfaWQiXSA9IHRoaXMucGFyZW50LmZpZWxkbGFuZ3VhZ2VzdmFsdWVzX2lkOworICAJCQl0aGlzLnNlbmRPYmplY3RbIm5hbWUiXSA9IHRoaXMucGFyZW50Ll9vdXRwdXQuZmllbGRuYW1lLmdldFRleHQoKTsKKyAgCQkJdGhpcy5zZW5kT2JqZWN0WyJ2YWx1ZSJdID0gdGhpcy5wYXJlbnQuX291dHB1dC5maWVsZHZhbHVlLmdldFRleHQoKTsKKworICAJCQlpZigkZGVidWcpIERlYnVnLndyaXRlKCJwcmVwYXJlQ2FsbDogIix0aGlzLnNlbmRPYmplY3QpOworICAJCTwvbWV0aG9kPgorICAJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnNlbmRPYmplY3Q7PC9tZXRob2Q+PC9uZXRwYXJhbT4JICAJCQorICAgIAk8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbCI+CisJCQk8IVtDREFUQVsKKwkgICAgCQlpZigkZGVidWcpIERlYnVnLndyaXRlKCJzYXZlT3JVcGRhdGVPcmdhbmlzYXRpb246ICIsdmFsKTsKKwkJCQlpZiAodmFsPjApeworCQkJCQlpZigkZGVidWcpIERlYnVnLndyaXRlKCJzYXZlT3JVcGRhdGVVc2VyIHZhbCBncmVhdGVyIDA6ICIsdmFsKTsKKwkJCQkJcGFyZW50LmZpZWxkdmFsdWVzX2lkID0gdmFsOworCQkJCQlwYXJlbnQuZ2V0RmllbGR2YWx1ZUJ5SWQuZG9DYWxsKCk7CisJCQkJfQorCQkJCXBhcmVudC5wYXJlbnQuX3R1cm5vdmVybGlzdC5vbmNhbGxuZXh0LnNlbmRFdmVudCgpOworCQkJXV0+CisgICAgCTwvaGFuZGxlcj4KKyAgCTwvbmV0UmVtb3RlQ2FsbEhpYj4JCQorCisJPCEtLSBjb250ZW50IC0tPgkKKyAgICA8dmlldyBuYW1lPSJfb3V0cHV0IiBkYXRhcGF0aD0ibG9jYWw6Y2xhc3Nyb290LmZpZWxkdmFsdWVzOi8iPgorCisJICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMzUzIiB5PSI0MCIgZm9udHN0eWxlPSJib2xkIiAvPgkKKwkgICAgCisJICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMzU2IiB3aWR0aD0iMjAwIiB5PSI3MCIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPgorCSAgICAgICAgPGxhYmVsVGV4dCBuYW1lPSJsYWJlbGlkIiB5PSI3MCIgeD0iMTIwIiB3aWR0aD0iMjcwIiB0ZXh0PSIiIC8+CisJICAgICAgICAKKwkgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIzNTQiIHdpZHRoPSIyMDAiIHk9IjEwMCIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPgorCSAgICAgICAgPGN1c3RvbUVkaXR0ZXh0IG5hbWU9ImZpZWxkbmFtZSIgeT0iMTAwIiB4PSIxMjAiIHdpZHRoPSIyNzAiIAorCSAgICAgICAgCQkJCWVuYWJsZWQ9IiR7ICgocGFyZW50LnBhcmVudC5maWVsZHZhbHVlc19pZD09MCkgPyB0cnVlIDogZmFsc2UgKSB9IiAKKwkgICAgICAgIAkJCQl0ZXh0PSIiIC8+CQorCQkKKwkgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIzNTUiIHdpZHRoPSIyMDAiIHk9IjEzMCIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPgorCSAgICAgICA8IS0tCisJICAgIAk8Y3VzdG9tRWRpdHRleHQgbmFtZT0iZmllbGR2YWx1ZSIgeT0iMTMwIiB4PSIxMjAiIHdpZHRoPSIyNzAiIGhlaWdodD0iMTIwIgorCSAgICAgICAgCQkJCQkgIHRleHQ9IiIgbXVsdGlsaW5lPSJ0cnVlIiAvPiAtLT4KKwkgICAgICAgIDxjdXN0b21TY3JvbGxFZGl0dGV4dCBuYW1lPSJmaWVsZHZhbHVlIiB5PSIxMzAiIHg9IjEyMCIgd2lkdGg9IjI3MCIgaGVpZ2h0PSIxMjAiCisJICAgICAgICAJCQkJCSAgdGV4dD0iIiAvPgkKKwkgICAgICAgIAkJCQkJICAKKwk8L3ZpZXc+CisJCis8L2NsYXNzPgorCQorPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi9sYW5ndWFnZXNlZGl0b3IvZmllbGRWYWx1ZXNMaXN0SXRlbS5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2FkbWluL2xhbmd1YWdlc2VkaXRvci9maWVsZFZhbHVlc0xpc3RJdGVtLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMmE2NzYxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi9sYW5ndWFnZXNlZGl0b3IvZmllbGRWYWx1ZXNMaXN0SXRlbS5sengKQEAgLTAsMCArMSwzNiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPCEtLS0gVGhpcyBjbGFzcyBzaG93cyBsYWJlbC1JRCxsYWJlbCBuYW1lLCB2YWx1ZS4tLT4KKzxjbGFzcyBuYW1lPSJmaWVsZFZhbHVlc0xpc3RJdGVtIiBleHRlbmRzPSJiYXNlQ29udGVudExpc3RJdGVtIj4KKwkKKwk8YXR0cmlidXRlIG5hbWU9ImZpZWxkdmFsdWVzX2lkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0iZmllbGRuYW1lIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJmaWVsZHZhbHVlIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisJCisJPHR1cm5PdmVyVGV4dEl0ZW0gdGV4dD0iJG9uY2V7IHBhcmVudC5maWVsZHZhbHVlc19pZCB9IiB3aWR0aD0iMTIwIiAvPgorCTx0dXJuT3ZlclRleHRJdGVtIHRleHQ9IiRvbmNleyBwYXJlbnQuZmllbGRuYW1lIH0iIHdpZHRoPSIxMjYiIC8+CisJPHR1cm5PdmVyVGV4dEl0ZW0gdGV4dD0iJG9uY2V7IHBhcmVudC5maWVsZHZhbHVlIH0iIHdpZHRoPSIyMDAiIC8+CisJCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2FkbWluL2xhbmd1YWdlc2VkaXRvci9sYW5ndWFnZXNFZGl0b3IubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi9sYW5ndWFnZXNlZGl0b3IvbGFuZ3VhZ2VzRWRpdG9yLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MTI5NjAzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi9sYW5ndWFnZXNlZGl0b3IvbGFuZ3VhZ2VzRWRpdG9yLmx6eApAQCAtMCwwICsxLDIwMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPCEtLS0gTGFuZ3VhZ2UgZWRpdG9yIG1vZHVsZS4gWW91IGNhbiBlZGl0IHRoZSBsYWJlbCBmb3IgeW91ciBsYW5ndWFnZS4gLS0+Cis8Y2xhc3MgbmFtZT0ibGFuZ3VhZ2VzRWRpdG9yIiBleHRlbmRzPSJiYXNlQ29udGVudFZpZXciPgorCQorICAgIDxtZXRob2QgbmFtZT0iZG9EZWxldGVFdmVudCI+CisgICAgCW5ldyBsei5jb25maXJtRGVsZXRlV2luZG93KGNhbnZhcy5tYWluX2NvbnRlbnQuX2NvbnRlbnQuaW5uZXIse3JlZk9iajp0aGlzfSk7CisgICAgPC9tZXRob2Q+IAorICAgIAorICAgIDxtZXRob2QgbmFtZT0iY29uZmlybURlbGV0ZSI+CisgICAgCXZhciBsYW5nSWQgPSBOdW1iZXIodGhpcy5sYW5ndWFnZXMuZ2V0VmFsdWUoKSk7CisgICAgCWlmIChsYW5nSWQ+MCl7CisgICAgCQl0aGlzLmRlbGV0ZUxhbmd1YWdlLmxhbmd1YWdlX2lkID0gbGFuZ0lkOworICAgIAkJdGhpcy5kZWxldGVMYW5ndWFnZS5kb0NhbGwoKTsKKyAgICAJfQorICAgIDwvbWV0aG9kPgorCisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iZGVsZXRlTGFuZ3VhZ2UiIGZ1bmNuYW1lPSJsYW5ndWFnZXNlcnZpY2UuZGVsZXRlTGFuZ3VhZ2UiIAorCQlyZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgYWN0aXZlRXJyb3JIYW5kbGVyPSJ0cnVlIiA+ICAgIAorCQk8YXR0cmlidXRlIG5hbWU9Imxhbmd1YWdlX2lkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPiAgCisJCTxhdHRyaWJ1dGUgbmFtZT0idGVtcFZhbHVlIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBjYW52YXMuc2Vzc2lvbklkOzwvbWV0aG9kPjwvbmV0cGFyYW0+IAorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBwYXJlbnQubGFuZ3VhZ2VfaWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4gIAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgIC8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisJCQlpZigkZGVidWcpIERlYnVnLndyaXRlKCJkZWxldGVMYW5ndWFnZSIsdmFsdWUpOworCQkJcGFyZW50Lmxhbmd1YWdlcy5nZXRMYW5ndWFnZXMuZG9DYWxsKCk7CisgICAgICAgIDwvaGFuZGxlcj4gIAorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4JICAgICAgICAgCisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJkb0FkZEV2ZW50Ij4KKyAgICAJbmV3IGx6LmFkZExhbmd1YWdlKGNhbnZhcy5tYWluX2NvbnRlbnQuX2NvbnRlbnQuaW5uZXIse3JlZk9iajp0aGlzfSk7CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPHZpZXcgbmFtZT0iX3NhdmVjb250ZW50YmFyIiBsYXlvdXQ9ImF4aXM6eDtzcGFjaW5nOjI7aW5zZXQ6MiIgeD0iMiIgaGVpZ2h0PSIyOCIgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGggfSIKKyAgICAgICAgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdiYXNlTW91c2Vjb2xvcml6ZXInKSB9Ij4KKworICAgICAgICA8IS0tIDM2MjpBZGQgbmV3IGxhbmd1YWdlIC0tPgorICAgICAgICA8YmFzZUNob29zZUljb24gcmVzb3VyY2VOPSJlZGl0X2FkZF9yc2MiIGxhYmVsaWQ9IjM2MiIgeT0iMiIgCisgICAgICAgIAlvbmNsaWNrPSJ0aGlzLnBhcmVudC5wYXJlbnQuZG9BZGRFdmVudCgpIiAvPiAgCisKKyAgICAgICAgPCEtLSAzNjM6ZGVsZXRlIGxhbmd1YWdlIC0tPgorICAgICAgICA8YmFzZUNob29zZUljb24gcmVzb3VyY2VOPSJidXR0b25fY2FuY2VsX3JzYyIgbGFiZWxpZD0iMzYzIiB5PSIyIiAKKyAgICAgICAgCW9uY2xpY2s9InRoaXMucGFyZW50LnBhcmVudC5kb0RlbGV0ZUV2ZW50KCkiIC8+CisJPC92aWV3PgorCQorCTwhLS0gMzQ5Okxhbmd1YWdlIC0tPgorICAgIDxsYWJlbFRleHQgbmFtZT0ibjMiIGxhYmVsaWQ9IjM0OSIgeT0iMzIiIHdpZHRoPSIxMTAiIHg9IjIiLz4gIAorICAgICAgICAKKyAgICAgICAgPHJlc2V0Q29tYm9ib3ggbmFtZT0ibGFuZ3VhZ2VzIiB3aWR0aD0iMTcwIiB5PSIzMiIgeD0iMTIwIiBlZGl0YWJsZT0iZmFsc2UiID4KKyAgICAgICAgCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgIAkJdGhpcy5nZXRMYW5ndWFnZXMuZG9DYWxsKCk7CisgICAgICAgIAk8L2hhbmRsZXI+CisJCSAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJnZXRMYW5ndWFnZXMiIGZ1bmNuYW1lPSJsYW5ndWFnZXNlcnZpY2UuZ2V0TGFuZ3VhZ2VzIiAKKwkJICAgIAkJcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gICAgICAKKwkJICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKwkJICAgICAgICAJPCFbQ0RBVEFbCisJCQkgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorCQkJICAgICAgICAgICAgLy9pZigkZGVidWcpIERlYnVnLndyaXRlKCJnZXRMYW5ndWFnZXM6ICIsdmFsdWUpOworCQkJICAgICAgICAgICAgdGhpcy5wYXJlbnQucmVzZXQoKTsKKwkJICAgICAgICAgICAgCWZvciAodmFyIGk9MDtpPHZhbHVlLmxlbmd0aDtpKyspeworCQkgICAgICAgICAgICAJCXRoaXMucGFyZW50LmFkZEl0ZW0odmFsdWVbaV0ubmFtZSx2YWx1ZVtpXS5sYW5ndWFnZV9pZCk7CisJCSAgICAgICAgICAgIAl9CisJCSAgICAgICAgICAgIAl0aGlzLnBhcmVudC5zZWxlY3RJdGVtKFN0cmluZyh2YWx1ZVswXS5sYW5ndWFnZV9pZCkpOworCQkgICAgICAgICAgICBdXT4KKwkJICAgICAgICA8L2hhbmRsZXI+ICAKKwkJICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4gICAgICAgICAgCQorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25zZWxlY3QiPgorICAgICAgICAgICAgICAgIHBhcmVudC5fdHVybm92ZXJsaXN0Lmxhbmd1YWdlX2lkID0gTnVtYmVyKHRoaXMudmFsdWUpOworICAgICAgICAgICAgICAgIGlmICh0aGlzLnBhcmVudC5fdHVybm92ZXJsaXN0LmlzaW5pdGVkKQorICAgICAgICAgICAgICAgIAlwYXJlbnQuX3R1cm5vdmVybGlzdC5vbmNhbGxuZXh0LnNlbmRFdmVudCgpOworICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8L3Jlc2V0Q29tYm9ib3g+CisgICAgCisgICAgPCEtLSAzNjA6ZXhwb3J0IC0tPgorICAgIDxzaW1wbGVMYWJlbEJ1dHRvbiBuYW1lPSJiMiIgbGFiZWxpZD0iMzYwIiB3aWR0aD0iNzUiIHg9IjMwMCIgeT0iMzIiPgorICAgIAk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAJCTwhW0NEQVRBWworCSAgICAJCXZhciBleHBvcnR1cmwgPSBjYW52YXMuZ2V0VXJsKCkgKyAnTGFuZ0V4cG9ydD9sYW5ndWFnZT0nK3BhcmVudC5sYW5ndWFnZXMuZ2V0VmFsdWUoKQorCSAgICAJCQkJKycmc2lkPScrY2FudmFzLnNlc3Npb25JZDsKKwkgICAgICAgICAgICBsei5Ccm93c2VyLmxvYWRVUkwoZXhwb3J0dXJsLCJfcGFyZW50Iik7CisgICAgICAgICAgICBdXT4KKyAgICAJPC9oYW5kbGVyPgorICAgIAk8bGFiZWxUb29sdGlwIG11bHRpbGluZT0idHJ1ZSIgbGFiZWxpZD0iMzg4IiAvPgorICAgIDwvc2ltcGxlTGFiZWxCdXR0b24+ICAgICAgCisgICAgCisgICAgPCEtLSAzODc6aW1wb3J0IC0tPgorICAgIDxzaW1wbGVMYWJlbEJ1dHRvbiBsYWJlbGlkPSIzODciIHg9IjM4NyIgeT0iMzIiIHdpZHRoPSI3NSI+CisJICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorCSAgICAgICAgLy9uZXcgbHouaW1wb3J0V2luZG93KGNhbnZhcy5tYWluX2NvbnRlbnQuX2NvbnRlbnQuaW5uZXIse3g6NjAsc2Vjb25kaWQ6cGFyZW50Lmxhbmd1YWdlcy5nZXRWYWx1ZSgpLHVwbG9hZG1vZHVsZTonbGFuZ3VhZ2UnfSk7CisgICAgICAgIAluZXcgbHoudXBsb2FkV2luZG93RXhwbG9yZXIoY2FudmFzLm1haW5fY29udGVudC5fY29udGVudC5pbm5lcix7CisgICAgICAgICAgICAgICAgICAgICAgICB4OjMwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHVwbG9hZG1vZHVsZTonbGFuZ3VhZ2UnLAorICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kaWQ6cGFyZW50Lmxhbmd1YWdlcy5nZXRWYWx1ZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgaXNPbmx5WG1sOnRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2bGV0TmFtZTonaW1wb3J0LnVwbG9hZCcKKyAgICAgICAgICAgICAgICAgICAgfSk7CisJICAgIDwvaGFuZGxlcj4KKwkgICAgPGxhYmVsVG9vbHRpcCBtdWx0aWxpbmU9InRydWUiIGxhYmVsaWQ9IjM4OSIgLz4KKyAgICA8L3NpbXBsZUxhYmVsQnV0dG9uPiAgICAgCisgICAgCisgICAgPGxhYmVsVGV4dCB4PSIyIiB5PSI2NCIgbGFiZWxpZD0iNzE0IiAvPgorCQorCTxjdXN0b21FZGl0dGV4dCBuYW1lPSJfc2VhcmNoIiB5PSI2MCIgeD0iMTIwIiB3aWR0aD0iMjAwIiBoZWlnaHQ9IjI0Ii8+CisJCisgICAgPHNpbXBsZUxhYmVsQnV0dG9uIGxhYmVsaWQ9IjcxNSIgeD0iMzMwIiB3aWR0aD0iMTMyIiB5PSI2MCI+CisgICAgCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgIAkJcGFyZW50Ll90dXJub3Zlcmxpc3QuZ2V0RmllbGRzQnlMYW5ndWFnZS5kb0NhbGwoKTsKKyAgICAJPC9oYW5kbGVyPgorICAgIDwvc2ltcGxlTGFiZWxCdXR0b24+ICAKKyAgICAKKwk8dHVybk92ZXJMaXN0IG5hbWU9Il90dXJub3Zlcmxpc3QiIHdpZHRoPSI0NjAiIGhlaWdodD0iJHsgY2FudmFzLmhlaWdodCAtIGNhbnZhcy5uYXZpSGVpZ2h0LTkwIH0iIHg9IjIiIHk9IjkwIiAKKwkJb3JkZXJieT0iYy5maWVsZHZhbHVlc19pZCIgc3RlcD0iMjUiIGFzYz0idHJ1ZSI+CisgICAgICAgIAorICAgICAgICA8YXR0cmlidXRlIG5hbWU9Imxhbmd1YWdlX2lkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorCisJCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisJCQl0aGlzLmFkZEhlYWRlckl0ZW0oMzUwLDEyMCk7CisJCQl0aGlzLmFkZEhlYWRlckl0ZW0oMzUxLDEyNCk7CisJCQl0aGlzLmFkZEhlYWRlckl0ZW0oMzUyLDIwMCk7CisJCQl0aGlzLmdldEZpZWxkc0J5TGFuZ3VhZ2UuZG9DYWxsKCk7CisJCTwvaGFuZGxlcj4KKwkJCisJCTxoYW5kbGVyIG5hbWU9Im9uY2FsbG5leHQiID4KKwkJCXRoaXMuZ2V0RmllbGRzQnlMYW5ndWFnZS5kb0NhbGwoKTsKKwkJPC9oYW5kbGVyPgorCQkKKwkJPGhhbmRsZXIgbmFtZT0ib25jYWxscHJlIiA+CQkKKwkJCXRoaXMuZ2V0RmllbGRzQnlMYW5ndWFnZS5kb0NhbGwoKTsKKwkJPC9oYW5kbGVyPgorCQkKKwkJPGhhbmRsZXIgbmFtZT0ib25jbGlja2VkSXRlbSIgYXJncz0ib2JqIj4KKwkJCS8vaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib25jbGlja2VkSXRlbSIsb2JqLG9iai5vYmopOworICAgICAgICAgICAgcGFyZW50Ll9maWVsZHZhbHVlZm9ybS5oaWRlTmV3UmVjb3JkVGV4dCgpOworCQkJcGFyZW50Ll9maWVsZHZhbHVlZm9ybS5pbml0VmFsdWVGaWVsZHNCeU9iamVjdChvYmoub2JqKTsKKwkJPC9oYW5kbGVyPgorCQkKKwkJPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iZ2V0RmllbGRzQnlMYW5ndWFnZSIgZnVuY25hbWU9Imxhbmd1YWdlc2VydmljZS5nZXRGaWVsZHNCeUxhbmd1YWdlIiAKKwkJCQkJCSAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gICAgICAKKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBwYXJlbnQucGFyZW50LnN0YXJ0OyA8L21ldGhvZD48L25ldHBhcmFtPgorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBhcmVudC5zdGVwOyA8L21ldGhvZD48L25ldHBhcmFtPgorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBhcmVudC5vcmRlcmJ5OyA8L21ldGhvZD48L25ldHBhcmFtPgorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBhcmVudC5hc2M7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBwYXJlbnQucGFyZW50Lmxhbmd1YWdlX2lkOyA8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBhcmVudC5wYXJlbnQuX3NlYXJjaC5nZXRUZXh0KCk7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJICAgIAk8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKwkgICAgCQkvL2lmKCRkZWJ1ZykgRGVidWcud3JpdGUoImdldEZpZWxkc0J5TGFuZ3VhZ2UgIix2YWx1ZSk7CisJICAgIAkJLy90aGlzLnBhcmVudC5kZXN0cm95KCk7CisJICAgIAkJdGhpcy5wYXJlbnQuaW5pdFZhbHVlcyh2YWx1ZS5yZWNvcmRzKTsKKwkgICAgCQl0aGlzLnBhcmVudC5yZW5kZXJDb250ZW50KHZhbHVlLnJlc3VsdCk7CisJICAgIAk8L2hhbmRsZXI+CisJICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4JCisJICAgIAorCSAgICA8bWV0aG9kIG5hbWU9InJlbmRlckNvbnRlbnQiIGFyZ3M9InJlY29yZHMiPgorCSAgICAJPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgdGhpcy5jbGVhckxpc3QoKTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTxyZWNvcmRzLmxlbmd0aDtpKyspeworICAgICAgICAgICAgICAgICAgICBuZXcgbHouZmllbGRWYWx1ZXNMaXN0SXRlbSh0aGlzLl9pbm5lcmxpc3QuX2lubi5faW5uLHsKKwkgICAgICAgICAgICAgICAgICAgICAgICBvYmo6cmVjb3Jkc1tpXSwKKwkgICAgICAgICAgICAgICAgICAgICAgICBmaWVsZHZhbHVlc19pZDpyZWNvcmRzW2ldLmZpZWxkdmFsdWVzX2lkLAorCSAgICAgICAgICAgICAgICAgICAgICAgIGZpZWxkbmFtZTpyZWNvcmRzW2ldLm5hbWUsCisJICAgICAgICAgICAgICAgICAgICAgICAgZmllbGR2YWx1ZTpyZWNvcmRzW2ldLmZpZWxkbGFuZ3VhZ2VzdmFsdWUudmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB0aGlzLnNlbmRJbml0aWFsV2lkdGhVcGRhdGUoKTsKKwkgICAgCV1dPgorCSAgICA8L21ldGhvZD4KKworCTwvdHVybk92ZXJMaXN0PgorCQorICAgIDwhLS0gMzYxOllvdSBuZWVkIHRvIGxvZ291dCB0byBzZWUgYW55IGNoYW5nZXMuIC0tPgorCTxsYWJlbFRleHQgeD0iNDcwIiBsYWJlbGlkPSIzNjEiIHk9IjIiIHJlc2l6ZT0idHJ1ZSIgLz4gIAorCQorCTxmaWVsZFZhbHVlRm9ybSBuYW1lPSJfZmllbGR2YWx1ZWZvcm0iIHg9IjQ3MCIgeT0iMzIiID4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25uZXciIGFyZ3M9InJlZk9iaiI+CisgICAgICAgICAgICBwYXJlbnQuX3R1cm5vdmVybGlzdC5jbGVhclNlbGVjdGlvbigpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9maWVsZFZhbHVlRm9ybT4KKwkKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvYWRtaW4vbGFuZ3VhZ2VzZWRpdG9yL2xpYnJhcnkubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi9sYW5ndWFnZXNlZGl0b3IvbGlicmFyeS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTZiZWY4NQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvYWRtaW4vbGFuZ3VhZ2VzZWRpdG9yL2xpYnJhcnkubHp4CkBAIC0wLDAgKzEsMjggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisgICAgCisgICAgPGluY2x1ZGUgaHJlZj0iZmllbGRWYWx1ZXNMaXN0SXRlbS5sengiIC8+CisgICAgPGluY2x1ZGUgaHJlZj0iZmllbGRWYWx1ZUZvcm0ubHp4IiAvPgorICAgIDxpbmNsdWRlIGhyZWY9ImFkZExhbmd1YWdlLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJsYW5ndWFnZXNFZGl0b3IubHp4IiAvPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2FkbWluL2xkYXAvbGRhcEFkbWluLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvYWRtaW4vbGRhcC9sZGFwQWRtaW4ubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0ZDYyMTgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2FkbWluL2xkYXAvbGRhcEFkbWluLmx6eApAQCAtMCwwICsxLDEwMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKwkKKzwhLS0tIEV4aXN0aW5nIG9yZ2FuaXphdGlvbiBsaXN0LiB1c2VkIGJ5IG9yZ0FkbWluIG9ubHkgLS0+Cis8Y2xhc3MgbmFtZT0ibGRhcEFkbWluTGlzdEl0ZW0iIGV4dGVuZHM9ImJhc2VDb250ZW50TGlzdEl0ZW0iPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibGRhcENvbmZpZ0lkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0idE5hbWUiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImNvbmZpZ0ZpbGVOYW1lIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgICAgCisgICAgPHR1cm5PdmVyVGV4dEl0ZW0gdGV4dD0iJG9uY2V7IHBhcmVudC5sZGFwQ29uZmlnSWQgfSIgd2lkdGg9IjEyMCIgLz4KKyAgICA8dHVybk92ZXJUZXh0SXRlbSB0ZXh0PSIkb25jZXsgcGFyZW50LnROYW1lIH0iIHdpZHRoPSIyMDAiIC8+CisgICAgPHR1cm5PdmVyVGV4dEl0ZW0gdGV4dD0iJG9uY2V7IHBhcmVudC5jb25maWdGaWxlTmFtZSB9IiB3aWR0aD0iMjAwIiAvPgorICAgIAorPC9jbGFzcz4JCisKKzwhLS0tIE9yZ2FuaXphdGlvbiBhZG1pbmlzdHJhdGlvbiBtb2R1bGUgZm9yIEFETUlOLi0tPgorPGNsYXNzIG5hbWU9ImxkYXBBZG1pbiIgZXh0ZW5kcz0iYmFzZUNvbnRlbnRWaWV3Ij4KKwkKKwk8dHVybk92ZXJMaXN0IG5hbWU9Il90dXJub3Zlcmxpc3QiIHdpZHRoPSI0MjAiIAorCQloZWlnaHQ9IiR7IGNhbnZhcy5oZWlnaHQgLSBjYW52YXMubmF2aUhlaWdodCB9IiB4PSIyIiAKKwkJeT0iJHsgMCAtIHBhcmVudC5wYXJlbnQucGFyZW50LnkgfSIgCisJCW9yZGVyYnk9ImxkYXBDb25maWdJZCIgc3RlcD0iNTAiIGFzYz0idHJ1ZSI+CisKKwkJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKwkJCXRoaXMuYWRkSGVhZGVySXRlbSgxMTA0LDYwKTsKKwkJCXRoaXMuYWRkSGVhZGVySXRlbSgxMTA1LDE4NCk7CisJCQl0aGlzLmFkZEhlYWRlckl0ZW0oMTEwNiwxNjApOworCQkJdGhpcy5nZXRMZGFwQ29uZmlncy5kb0NhbGwoKTsKKwkJPC9oYW5kbGVyPgorCQkKKwkJPGhhbmRsZXIgbmFtZT0ib25jYWxsbmV4dCIgPgorCQkJdGhpcy5nZXRMZGFwQ29uZmlncy5kb0NhbGwoKTsKKwkJPC9oYW5kbGVyPgorCQkKKwkJPGhhbmRsZXIgbmFtZT0ib25jYWxscHJlIiA+CQkKKwkJCXRoaXMuZ2V0TGRhcENvbmZpZ3MuZG9DYWxsKCk7CisJCTwvaGFuZGxlcj4KKwkJCisJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2tlZEl0ZW0iIGFyZ3M9Im9iaiI+CisJCQkvL0RlYnVnLndyaXRlKCJvbmNsaWNrZWRJdGVtIixvYmosb2JqLm9iaik7CisJCQlwYXJlbnQuX2xkYXBBZG1pblZhbHVlRm9ybS5pbml0VmFsdWVGaWVsZHNCeU9iamVjdChvYmoub2JqKTsKKwkJPC9oYW5kbGVyPgorCQkKKwkJPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iZ2V0TGRhcENvbmZpZ3MiIGZ1bmNuYW1lPSJsZGFwY29uZmlnc2VydmljZS5nZXRMZGFwQ29uZmlncyIgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gICAgICAKKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBwYXJlbnQucGFyZW50LnN0YXJ0OyA8L21ldGhvZD48L25ldHBhcmFtPgorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBhcmVudC5zdGVwOyA8L21ldGhvZD48L25ldHBhcmFtPgorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBhcmVudC5vcmRlcmJ5OyA8L21ldGhvZD48L25ldHBhcmFtPgorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBhcmVudC5hc2M7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJICAgIAk8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKwkgICAgCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZ2V0TGRhcENvbmZpZ3MgIix2YWx1ZSk7CisJICAgIAkJLy90aGlzLnBhcmVudC5kZXN0cm95KCk7CisJICAgIAkJdGhpcy5wYXJlbnQuaW5pdFZhbHVlcyh2YWx1ZS5yZWNvcmRzKTsKKwkgICAgCQl0aGlzLnBhcmVudC5yZW5kZXJDb250ZW50KHZhbHVlLnJlc3VsdCk7CisJICAgIAk8L2hhbmRsZXI+CisJICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4JCisJICAgIAorCSAgICA8bWV0aG9kIG5hbWU9InJlbmRlckNvbnRlbnQiIGFyZ3M9InJlY29yZHMiPgorCSAgICAJPCFbQ0RBVEFbCisJICAgIAl0aGlzLmNsZWFyTGlzdCgpOworCSAgICAJZm9yICh2YXIgaT0wO2k8cmVjb3Jkcy5sZW5ndGg7aSsrKXsKKwkgICAgCQluZXcgbHoubGRhcEFkbWluTGlzdEl0ZW0odGhpcy5faW5uZXJsaXN0Ll9pbm4uX2lubix7CisgICAgCSAgICAJCSAgICAgICAgICAgICAgICAgb2JqOnJlY29yZHNbaV0sCisgICAgCSAgICAJCSAgICAgICAgICAgICAgICAgbGRhcENvbmZpZ0lkOnJlY29yZHNbaV0ubGRhcENvbmZpZ0lkLAorICAgIAkgICAgCQkgICAgICAgICAgICAgICAgIHROYW1lOnJlY29yZHNbaV0ubmFtZSwKKyAgICAJICAgIAkJICAgICAgICAgICAgICAgICBjb25maWdGaWxlTmFtZTpyZWNvcmRzW2ldLmNvbmZpZ0ZpbGVOYW1lCisJICAgIAkJICAgICAgICAgICAgICAgICB9KTsKKwkgICAgCX0KKyAgICAgICAgICAgIHRoaXMuc2VuZEluaXRpYWxXaWR0aFVwZGF0ZSgpOworCSAgICAJXV0+CisJICAgIDwvbWV0aG9kPgorCisJPC90dXJuT3Zlckxpc3Q+CisJCisJPGxkYXBBZG1pblZhbHVlRm9ybSBuYW1lPSJfbGRhcEFkbWluVmFsdWVGb3JtIiB4PSI0NDAiPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbm5ldyIgYXJncz0icmVmT2JqIj4KKyAgICAgICAgICAgIHBhcmVudC5fdHVybm92ZXJsaXN0LmNsZWFyU2VsZWN0aW9uKCk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICA8L2xkYXBBZG1pblZhbHVlRm9ybT4KKwkgCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2FkbWluL2xkYXAvbGRhcEFkbWluVmFsdWVGb3JtLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvYWRtaW4vbGRhcC9sZGFwQWRtaW5WYWx1ZUZvcm0ubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyMjQ5N2UKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2FkbWluL2xkYXAvbGRhcEFkbWluVmFsdWVGb3JtLmx6eApAQCAtMCwwICsxLDIzMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9ImxkYXBBZG1pblZhbHVlRm9ybSIgZXh0ZW5kcz0iYmFzZUNvbnRlbnRTYXZlVmlldyI+CisJCisJPCEtLS0gcmVjb3JkQ29udGVudCBpZCAtLT4KKwk8YXR0cmlidXRlIG5hbWU9ImxkYXBDb25maWdJZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4JCisKKwk8IS0tIGhhbmRsZXIgLS0+CisJCisJPGhhbmRsZXIgbmFtZT0ib25zYXZlY29tcGxldGVkIiA+CisJCXRoaXMuZ2V0TGRhcENvbmZpZ0J5SWQuZG9DYWxsKCk7CisJPC9oYW5kbGVyPgorCQorCTxoYW5kbGVyIG5hbWU9Im9ucmVsb2FkIiA+CisJCWlmICh0aGlzLmxkYXBDb25maWdJZCE9MCkgeworICAgICAgICAgICAgdGhpcy5nZXRMZGFwQ29uZmlnQnlJZC5kb0NhbGwoKTsKKyAgICAgICAgfQorCTwvaGFuZGxlcj4JCisKKwk8aGFuZGxlciBuYW1lPSJvbm5ldyI+CisJCXRoaXMubGRhcENvbmZpZ0lkPTA7CisgICAgICAgIHRoaXMudE5hbWUuc2V0QXR0cmlidXRlKCd0ZXh0JywnJyk7CisgICAgICAgIHRoaXMuY29uZmlnRmlsZU5hbWUuc2V0QXR0cmlidXRlKCd0ZXh0JywnJyk7CisgICAgICAgIAorICAgICAgICB0aGlzLmFkZERvbWFpblRvVXNlck5hbWUuc2V0VmFsdWUoZmFsc2UpOworICAgICAgICB0aGlzLmRvbWFpbi5zZXRBdHRyaWJ1dGUoJ3RleHQnLCcnKTsKKyAgICAgICAgCisgICAgICAgIHRoaXMuaXNBY3RpdmUuc2V0VmFsdWUoZmFsc2UpOworICAgICAgICB0aGlzLnVwZGF0ZWQuc2V0QXR0cmlidXRlKCd0ZXh0JywnJyk7CisgICAgICAgIHRoaXMudXBkYXRlZGJ5LnNldEF0dHJpYnV0ZSgndGV4dCcsJycpOworICAgICAgICB0aGlzLmluc2VydGVkLnNldEF0dHJpYnV0ZSgndGV4dCcsJycpOworICAgICAgICB0aGlzLnVwZGF0ZWRieS5zZXRBdHRyaWJ1dGUoJ3RleHQnLCcnKTsKKwk8L2hhbmRsZXI+CisJCisgICAgPGhhbmRsZXIgbmFtZT0ib25kZWxldGUiID4KKwkJaWYgKHRoaXMubGRhcENvbmZpZ0lkIT0wKXsKKwkJCXRoaXMuZGVsZXRlTGRhcENvbmZpZ0J5SWQuZG9DYWxsKCk7CisJCX0KKyAgICA8L2hhbmRsZXI+CQorCQorCTwhLS0gbWV0aG9kcyAtLT4KKwkKKyAgICA8bWV0aG9kIG5hbWU9ImluaXRWYWx1ZUZpZWxkc0J5T2JqZWN0IiBhcmdzPSJvYmoiPgorCQl0aGlzLmxkYXBDb25maWdJZCA9IG9iai5sZGFwQ29uZmlnSWQ7CisJCWlmICh0aGlzLmxkYXBDb25maWdJZCE9MCl7CisJCQl0aGlzLmdldExkYXBDb25maWdCeUlkLmRvQ2FsbCgpOworCQl9CisgICAgPC9tZXRob2Q+CQorCQorICAJPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iZ2V0TGRhcENvbmZpZ0J5SWQiIGZ1bmNuYW1lPSJsZGFwY29uZmlnc2VydmljZS5nZXRMZGFwQ29uZmlnQnlJZCIgCisgIAkJcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gCisgIAkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gY2FudmFzLnNlc3Npb25JZDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50LmxkYXBDb25maWdJZDs8L21ldGhvZD48L25ldHBhcmFtPgorICAgIAk8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJnZXRMZGFwQ29uZmlnQnlJZCAiLHZhbHVlKTsKKyAgICAJCXBhcmVudC5pbml0RmllbGRzKHZhbHVlKTsKKyAgICAJPC9oYW5kbGVyPgorICAJPC9uZXRSZW1vdGVDYWxsSGliPgkKKwkKKwkKKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImluaXRGaWVsZHMiIGFyZ3M9Im9iaiI+CisgICAgCTwhW0NEQVRBWworICAgIAlpZiAob2JqID09IG51bGwpIHsKKyAgICAJCXJldHVybjsKKyAgICAJfQorICAgIAl0aGlzLmxkYXBDb25maWdJZCA9IG9iai5sZGFwQ29uZmlnSWQ7CisgICAgICAgIHRoaXMudE5hbWUuc2V0QXR0cmlidXRlKCd0ZXh0JyxvYmoubmFtZSk7CisgICAgICAgIHRoaXMuY29uZmlnRmlsZU5hbWUuc2V0QXR0cmlidXRlKCd0ZXh0JyxvYmouY29uZmlnRmlsZU5hbWUpOworICAgICAgICAKKyAgICAgICAgaWYgKG9iai5hZGREb21haW5Ub1VzZXJOYW1lKSB7CisgICAgICAgIAl0aGlzLmFkZERvbWFpblRvVXNlck5hbWUuc2V0VmFsdWUob2JqLmFkZERvbWFpblRvVXNlck5hbWUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAJdGhpcy5hZGREb21haW5Ub1VzZXJOYW1lLnNldFZhbHVlKGZhbHNlKTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLmRvbWFpbi5zZXRBdHRyaWJ1dGUoJ3RleHQnLG9iai5kb21haW4pOworICAgICAgICAKKyAgICAgICAgaWYgKG9iai5pc0FjdGl2ZSkgeworICAgICAgICAgICAgdGhpcy5pc0FjdGl2ZS5zZXRWYWx1ZShvYmouaXNBY3RpdmUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5pc0FjdGl2ZS5zZXRWYWx1ZShmYWxzZSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChvYmoudXBkYXRlZCAhPSBudWxsKSB7CisgICAgICAgICAgICB0aGlzLnVwZGF0ZWQuc2V0QXR0cmlidXRlKCd0ZXh0JyxvYmoudXBkYXRlZCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgIAl0aGlzLnVwZGF0ZWQuc2V0QXR0cmlidXRlKCd0ZXh0JywnJyk7CisgICAgICAgIH0KKyAgICAgICAgaWYob2JqLnVwZGF0ZWRieSE9bnVsbCl7CisgICAgICAgICAgICB0aGlzLnVwZGF0ZWRieS5zZXRBdHRyaWJ1dGUoJ3RleHQnLG9iai51cGRhdGVkYnkuZmlyc3RuYW1lKycgJytvYmoudXBkYXRlZGJ5Lmxhc3RuYW1lKydbJytvYmoudXBkYXRlZGJ5LmxvZ2luKyddJyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aGlzLnVwZGF0ZWRieS5zZXRBdHRyaWJ1dGUoJ3RleHQnLCcnKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKG9iai5pbnNlcnRlZCAhPSBudWxsKSB7CisgICAgICAgICAgICB0aGlzLmluc2VydGVkLnNldEF0dHJpYnV0ZSgndGV4dCcsb2JqLmluc2VydGVkKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuaW5zZXJ0ZWQuc2V0QXR0cmlidXRlKCd0ZXh0JywnJyk7CisgICAgICAgIH0KKyAgICAgICAgaWYob2JqLmluc2VydGVkYnkhPW51bGwpeworICAgICAgICAgICAgdGhpcy5pbnNlcnRlZGJ5LnNldEF0dHJpYnV0ZSgndGV4dCcsb2JqLmluc2VydGVkYnkuZmlyc3RuYW1lKycgJytvYmouaW5zZXJ0ZWRieS5sYXN0bmFtZSsnWycrb2JqLmluc2VydGVkYnkubG9naW4rJ10nKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuaW5zZXJ0ZWRieS5zZXRBdHRyaWJ1dGUoJ3RleHQnLCcnKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisJCisJPCEtLSByZW1vdGVjYWxscyAtLT4KKworCTxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImRlbGV0ZUxkYXBDb25maWdCeUlkIiBmdW5jbmFtZT0ibGRhcGNvbmZpZ3NlcnZpY2UuZGVsZXRlTGRhcENvbmZpZ0J5SWQiIAorCQkJICAgIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiA+ICAgICAgCisJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIHBhcmVudC5wYXJlbnQubGRhcENvbmZpZ0lkOyA8L21ldGhvZD48L25ldHBhcmFtPgorCQk8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKwkJCS8vRGVidWcud3JpdGUoImRlbGV0ZU9yZ2FuaXNhdGlvbiAiLHZhbHVlKTsKKwkJCS8vdGhpcy5wYXJlbnQuZGVzdHJveSgpOworCQkJaWYgKHZhbHVlPjApeworCQkJCXRoaXMucGFyZW50LnBhcmVudC5fdHVybm92ZXJsaXN0Lm9uY2FsbG5leHQuc2VuZEV2ZW50KCk7CisJCQkJdGhpcy5wYXJlbnQub25uZXcuc2VuZEV2ZW50KCk7CisJCQl9CisJCTwvaGFuZGxlcj4KKwk8L25ldFJlbW90ZUNhbGxIaWI+CQorCQorICAJPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0ic2F2ZU9yVXBkYXRlTGRhcENvbmZpZyIgZnVuY25hbWU9ImxkYXBjb25maWdzZXJ2aWNlLnNhdmVPclVwZGF0ZUxkYXBDb25maWciIAorICAJCSAgICAgICAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iIHJlZ2lzdGVyT2JqZWN0PSJ0cnVlIiA+ICAgCisJCTxhdHRyaWJ1dGUgbmFtZT0ic2VuZE9iamVjdCIgdmFsdWU9Im51bGwiIC8+CisJCTwhLS0gZ2V0cyBjYWxsZWQgYnkgT2JzZXJ2ZXIgLS0+CisgIAkJPG1ldGhvZCBuYW1lPSJwcmVwYXJlQ2FsbCI+CisgIAkJCXRoaXMuc2VuZE9iamVjdD1uZXcgQXJyYXkoKTsKKyAgCQkJdGhpcy5zZW5kT2JqZWN0WyJsZGFwQ29uZmlnSWQiXSA9IHRoaXMucGFyZW50LmxkYXBDb25maWdJZDsKKyAgCQkJdGhpcy5zZW5kT2JqZWN0WyJ0TmFtZSJdID0gdGhpcy5wYXJlbnQudE5hbWUuZ2V0VGV4dCgpOworICAJCQl0aGlzLnNlbmRPYmplY3RbImNvbmZpZ0ZpbGVOYW1lIl0gPSB0aGlzLnBhcmVudC5jb25maWdGaWxlTmFtZS5nZXRUZXh0KCk7CisgIAkJCXRoaXMuc2VuZE9iamVjdFsiYWRkRG9tYWluVG9Vc2VyTmFtZSJdID0gdGhpcy5wYXJlbnQuYWRkRG9tYWluVG9Vc2VyTmFtZS5nZXRWYWx1ZSgpOworICAgICAgICAgICAgdGhpcy5zZW5kT2JqZWN0WyJpc0FjdGl2ZSJdID0gdGhpcy5wYXJlbnQuaXNBY3RpdmUuZ2V0VmFsdWUoKTsKKyAgICAgICAgICAgIHRoaXMuc2VuZE9iamVjdFsiZG9tYWluIl0gPSB0aGlzLnBhcmVudC5kb21haW4uZ2V0VGV4dCgpOworCisgIAkJCS8vRGVidWcud3JpdGUoInByZXBhcmVDYWxsOiAiLHRoaXMuc2VuZE9iamVjdCk7CisgIAkJPC9tZXRob2Q+CisgIAkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBjYW52YXMuc2Vzc2lvbklkOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnNlbmRPYmplY3Q7PC9tZXRob2Q+PC9uZXRwYXJhbT4JICAJCQorICAgIAk8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbCI+CisJCQk8IVtDREFUQVsKKyAgICAJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzYXZlT3JVcGRhdGVMZGFwQ29uZmlnOiAiLHZhbCk7CisJCQlpZiAodmFsPjApeworCQkJCS8vRGVidWcud3JpdGUoInNhdmVPclVwZGF0ZVVzZXIgdmFsIGdyZWF0ZXIgMDogIix2YWwpOworCQkJCXRoaXMucGFyZW50LnBhcmVudC5fdHVybm92ZXJsaXN0Lm9uY2FsbG5leHQuc2VuZEV2ZW50KCk7CisJCQkJdmFyIG9iaiA9IG5ldyBBcnJheSgpOworCQkJCW9ialsibGRhcENvbmZpZ0lkIl0gPSB2YWw7CisJCQkJdGhpcy5wYXJlbnQuaW5pdFZhbHVlRmllbGRzQnlPYmplY3Qob2JqKTsKKwkJCX0KKwkJCV1dPgorICAgIAk8L2hhbmRsZXI+CisgIAk8L25ldFJlbW90ZUNhbGxIaWI+CQkKKwkKKwk8IS0tIGNvbnRlbnQKKwkKKwlwdWJsaWMgU3RyaW5nIG5hbWU7CisgICAgcHVibGljIFN0cmluZyBjb25maWdGaWxlTmFtZTsKKyAgICBwdWJsaWMgQm9vbGVhbiBhZGREb21haW5Ub1VzZXJOYW1lOworICAgIHB1YmxpYyBTdHJpbmcgZG9tYWluOworICAgIHB1YmxpYyBCb29sZWFuIGlzQWN0aXZlOworICAgIHB1YmxpYyBEYXRlIGluc2VydGVkOworICAgIHB1YmxpYyBEYXRlIHVwZGF0ZWQ7CisgICAgcHVibGljIFVzZXJzIGluc2VydGVkYnk7CisgICAgcHVibGljIFVzZXJzIHVwZGF0ZWRieTsKKyAgICAKKwkgLS0+CQorICAgIAorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMTEwNyIgd2lkdGg9IjIwMCIgeT0iNDAiIHJlc2l6ZT0iZmFsc2UiIGZvbnRzdHlsZT0iYm9sZCIgLz4JCisJCisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIxMTA4IiB3aWR0aD0iMjAwIiB5PSI3MCIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPgorICAgICAgICA8Y3VzdG9tRWRpdHRleHQgbmFtZT0idE5hbWUiIHk9IjcwIiB4PSIxMjAiIHdpZHRoPSIyNzAiIHRleHQ9IiIgLz4JCisgICAgICAgIAorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMTEwOSIgd2lkdGg9IjIwMCIgeT0iMTAwIiByZXNpemU9ImZhbHNlIiB4PSIyIi8+ICAKKyAgICAgICAgPGxhYmVsQ2hlY2tib3ggbmFtZT0iaXNBY3RpdmUiIHdpZHRoPSIyNzAiIHk9IjEwMCIgeD0iMTIwIiBmb250c2l6ZT0iMTEiIC8+ICAgICAgICAgCisgICAgICAgIAorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMTExMCIgd2lkdGg9IjIwMCIgeT0iMTMwIiByZXNpemU9ImZhbHNlIiB4PSIyIi8+CisgICAgICAgIDxsYWJlbFRleHQgbmFtZT0iaW5zZXJ0ZWQiIHk9IjEzMCIgeD0iMTIwIiB3aWR0aD0iMjcwIiB0ZXh0PSIiIGJnY29sb3I9IjB4Q0NDQ0NDIi8+CisgCisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIxMTExIiB3aWR0aD0iMjAwIiB5PSIxNTAiIHJlc2l6ZT0iZmFsc2UiIHg9IjIiLz4KKyAgICAgICAgPGxhYmVsVGV4dCBuYW1lPSJpbnNlcnRlZGJ5IiB5PSIxNTAiIHg9IjEyMCIgd2lkdGg9IjI3MCIgdGV4dD0iIiBiZ2NvbG9yPSIweENDQ0NDQyIvPgorICAgICAgICAKKyAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjExMTIiIHdpZHRoPSIyMDAiIHk9IjE3MCIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPgorICAgICAgICA8bGFiZWxUZXh0IG5hbWU9InVwZGF0ZWQiIHk9IjE3MCIgeD0iMTIwIiB3aWR0aD0iMjcwIiB0ZXh0PSIiIGJnY29sb3I9IjB4Q0NDQ0NDIi8+CisgCisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIxMTEzIiB3aWR0aD0iMjAwIiB5PSIxOTAiIHJlc2l6ZT0iZmFsc2UiIHg9IjIiLz4KKyAgICAgICAgPGxhYmVsVGV4dCBuYW1lPSJ1cGRhdGVkYnkiIHk9IjE5MCIgeD0iMTIwIiB3aWR0aD0iMjcwIiB0ZXh0PSIiIGJnY29sb3I9IjB4Q0NDQ0NDIi8+CisgICAgICAgIAorICAgIDx2aWV3IHJlc291cmNlPSJtZXNzYWdlYm94X2luZm9fcnNjIiB4PSIwIiB5PSIyMjAiIC8+CisgICAgCisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIxMTE0IiB4PSIyNCIgeT0iMjIwIiBmb250c3R5bGU9Iml0YWxpYyIKKyAgICAgICAgICAgICAgIG11bHRpbGluZT0idHJ1ZSIgd2lkdGg9IjM3MCIgLz4gICAKKyAgICAgICAgICAgICAgICAgICAgICAgIAorCTxsYWJlbFRleHQgbGFiZWxpZD0iMTExNSIgd2lkdGg9IjIwMCIgeT0iMjgwIiByZXNpemU9ImZhbHNlIiB4PSIyIi8+CisgICAgICAgIDxjdXN0b21FZGl0dGV4dCBuYW1lPSJjb25maWdGaWxlTmFtZSIgeT0iMjgwIiB4PSIxMjAiIHdpZHRoPSIyNzAiIHRleHQ9IiIgLz4gIAorICAgICAgICAKKyAgICA8dmlldyByZXNvdXJjZT0ibWVzc2FnZWJveF9pbmZvX3JzYyIgeD0iMCIgeT0iMzEwIiAvPgorICAgIAorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMTExNiIgeD0iMjQiIHk9IjMxMCIgZm9udHN0eWxlPSJpdGFsaWMiCisgICAgICAgICAgICAgICBtdWx0aWxpbmU9InRydWUiIHdpZHRoPSIzNzAiIC8+IAorICAgICAgICAgICAgICAgCisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIxMTE3IiB3aWR0aD0iMjAwIiB5PSI0MDAiIHJlc2l6ZT0iZmFsc2UiIHg9IjIiLz4gIAorICAgICAgICA8bGFiZWxDaGVja2JveCBuYW1lPSJhZGREb21haW5Ub1VzZXJOYW1lIiB3aWR0aD0iMjcwIiB5PSI0MDAiIHg9IjE2MCIgZm9udHNpemU9IjExIiAvPiAgIAorCisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIxMTE4IiB3aWR0aD0iMjAwIiB5PSI0MzAiIHJlc2l6ZT0iZmFsc2UiIHg9IjIiLz4KKyAgICAgICAgPGN1c3RvbUVkaXR0ZXh0IG5hbWU9ImRvbWFpbiIgeT0iNDMwIiB4PSIxMjAiIHdpZHRoPSIyNzAiIHRleHQ9IiIgLz4gCisgICAgICAgICAgICAgCis8L2NsYXNzPgorCQorPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi9sZGFwL2xpYnJhcnkubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi9sZGFwL2xpYnJhcnkubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0NmU4NDYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2FkbWluL2xkYXAvbGlicmFyeS5sengKQEAgLTAsMCArMSwyNiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworCTxpbmNsdWRlIGhyZWY9ImxkYXBBZG1pbi5sengiIC8+CisJPGluY2x1ZGUgaHJlZj0ibGRhcEFkbWluVmFsdWVGb3JtLmx6eCIgLz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvYWRtaW4vbGlicmFyeS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODViNWFiZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvYWRtaW4vbGlicmFyeS5sengKQEAgLTAsMCArMSwzNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8IURPQ1RZUEUgbGlicmFyeSBTWVNURU0gIi9wcm9qZWN0LmR0ZCI+Cis8bGlicmFyeT4KKworPCEtLSBhZG1pbiBtb2R1bGVzIC0tPgorPCEtLSAtLT4KKwk8aW5jbHVkZSBocmVmPSJ1c2VyYWRtaW4vIiAvPgorCTxpbmNsdWRlIGhyZWY9Im9yZ2FkbWluLyIgLz4KKwk8aW5jbHVkZSBocmVmPSJyb29tYWRtaW4vIiAvPgorCTxpbmNsdWRlIGhyZWY9ImNvbmZhZG1pbi8iIC8+CisJPGluY2x1ZGUgaHJlZj0ibGFuZ3VhZ2VzZWRpdG9yLyIgLz4KKwk8aW5jbHVkZSBocmVmPSJsZGFwLyIgLz4KKwk8IS0tIC0tPgorCTxpbmNsdWRlIGhyZWY9ImJhY2t1cC8iIC8+CisgICAgPGluY2x1ZGUgaHJlZj0iY29ubmVjdGlvbnMvIiAvPgorCTxpbmNsdWRlIGhyZWY9InNlcnZlcnMvIiAvPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2FkbWluL29yZ2FkbWluL2xpYnJhcnkubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi9vcmdhZG1pbi9saWJyYXJ5Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTAwMWFmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi9vcmdhZG1pbi9saWJyYXJ5Lmx6eApAQCAtMCwwICsxLDI5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCisJPGluY2x1ZGUgaHJlZj0ib3JnQWRtaW4ubHp4IiAvPgorCTxpbmNsdWRlIGhyZWY9Im9yZ1VzZXJzUmVjb3JkVmFsdWVMaXN0Lmx6eCIgLz4KKwk8aW5jbHVkZSBocmVmPSJvcmdBZG1pbkxpc3RJdGVtLmx6eCIgLz4KKwk8aW5jbHVkZSBocmVmPSJvcmdBZG1pblZhbHVlRm9ybS5sengiIC8+CisJPGluY2x1ZGUgaHJlZj0ib3JnQWRtaW5DaG9vc2VVc2VyV2luZG93Lmx6eCIgLz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi9vcmdhZG1pbi9vcmdBZG1pbi5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2FkbWluL29yZ2FkbWluL29yZ0FkbWluLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjIzZGIyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi9vcmdhZG1pbi9vcmdBZG1pbi5sengKQEAgLTAsMCArMSw4MyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPCEtLS0gT3JnYW5pemF0aW9uIGFkbWluaXN0cmF0aW9uIG1vZHVsZSBmb3IgQURNSU4uLS0+Cis8Y2xhc3MgbmFtZT0ib3JnQWRtaW4iIGV4dGVuZHM9ImJhc2VDb250ZW50VmlldyI+CisJCisJPHR1cm5PdmVyTGlzdCBuYW1lPSJfdHVybm92ZXJsaXN0IiB3aWR0aD0iMzIwIiBoZWlnaHQ9IiR7IGNhbnZhcy5oZWlnaHQgLSBjYW52YXMubmF2aUhlaWdodCB9IiB4PSIyIiB5PSIwIiAKKwkJb3JkZXJieT0ib3JnYW5pc2F0aW9uX2lkIiBzdGVwPSI1MCIgYXNjPSJ0cnVlIj4KKworCQk8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorCQkJdGhpcy5hZGRIZWFkZXJJdGVtKDE2NCwxMjApOworCQkJdGhpcy5hZGRIZWFkZXJJdGVtKDE2NSwxODQpOworCQkJdGhpcy5nZXRPcmdhbmlzYXRpb25zLmRvQ2FsbCgpOworCQk8L2hhbmRsZXI+CisJCQorCQk8aGFuZGxlciBuYW1lPSJvbmNhbGxuZXh0IiA+CisJCQl0aGlzLmdldE9yZ2FuaXNhdGlvbnMuZG9DYWxsKCk7CisJCTwvaGFuZGxlcj4KKwkJCisJCTxoYW5kbGVyIG5hbWU9Im9uY2FsbHByZSIgPgkJCisJCQl0aGlzLmdldE9yZ2FuaXNhdGlvbnMuZG9DYWxsKCk7CisJCTwvaGFuZGxlcj4KKwkJCisJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2tlZEl0ZW0iIGFyZ3M9Im9iaiI+CisJCQkvL0RlYnVnLndyaXRlKCJvbmNsaWNrZWRJdGVtIixvYmosb2JqLm9iaik7CisgICAgICAgICAgICBwYXJlbnQuX29yZ2FkbWludmFsdWVmb3JtLmhpZGVOZXdSZWNvcmRUZXh0KCk7CisJCQlwYXJlbnQuX29yZ2FkbWludmFsdWVmb3JtLmluaXRWYWx1ZUZpZWxkc0J5T2JqZWN0KG9iai5vYmopOworCQk8L2hhbmRsZXI+CisJCQorCQk8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJnZXRPcmdhbmlzYXRpb25zIiBmdW5jbmFtZT0ib3JnYW5pc2F0aW9uc2VydmljZS5nZXRPcmdhbmlzYXRpb25zIiByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAgICAgIAorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gY2FudmFzLnNlc3Npb25JZDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIHBhcmVudC5wYXJlbnQuc3RhcnQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBwYXJlbnQucGFyZW50LnN0ZXA7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBwYXJlbnQucGFyZW50Lm9yZGVyYnk7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBwYXJlbnQucGFyZW50LmFzYzsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkgICAgCTxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorCSAgICAJCS8vRGVidWcud3JpdGUoImdldE9yZ2FuaXNhdGlvbnMgIix2YWx1ZSk7CisJICAgIAkJLy90aGlzLnBhcmVudC5kZXN0cm95KCk7CisJICAgIAkJdGhpcy5wYXJlbnQuaW5pdFZhbHVlcyh2YWx1ZS5yZWNvcmRzKTsKKwkgICAgCQl0aGlzLnBhcmVudC5yZW5kZXJDb250ZW50KHZhbHVlLnJlc3VsdCk7CisJICAgIAk8L2hhbmRsZXI+CisJICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4JCisJICAgIAorCSAgICA8bWV0aG9kIG5hbWU9InJlbmRlckNvbnRlbnQiIGFyZ3M9InJlY29yZHMiPgorCSAgICAJPCFbQ0RBVEFbCisJICAgIAl0aGlzLmNsZWFyTGlzdCgpOworCSAgICAJZm9yICh2YXIgaT0wO2k8cmVjb3Jkcy5sZW5ndGg7aSsrKXsKKwkgICAgCQluZXcgbHoub3JnQWRtaW5MaXN0SXRlbSh0aGlzLl9pbm5lcmxpc3QuX2lubi5faW5uLHtvYmo6cmVjb3Jkc1tpXSxvcmdhbmlzYXRpb25faWQ6cmVjb3Jkc1tpXS5vcmdhbmlzYXRpb25faWQsb3JnbmFtZTpyZWNvcmRzW2ldLm5hbWV9KTsKKwkgICAgCX0KKyAgICAgICAgICAgIHRoaXMuc2VuZEluaXRpYWxXaWR0aFVwZGF0ZSgpOworCSAgICAJXV0+CisJICAgIDwvbWV0aG9kPgorCisJPC90dXJuT3Zlckxpc3Q+CisJCisJPG9yZ0FkbWluVmFsdWVGb3JtIG5hbWU9Il9vcmdhZG1pbnZhbHVlZm9ybSIgeD0iMzQwIj4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25uZXciIGFyZ3M9InJlZk9iaiI+CisgICAgICAgICAgICBwYXJlbnQuX3R1cm5vdmVybGlzdC5jbGVhclNlbGVjdGlvbigpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9vcmdBZG1pblZhbHVlRm9ybT4KKwkKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvYWRtaW4vb3JnYWRtaW4vb3JnQWRtaW5DaG9vc2VVc2VyV2luZG93Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvYWRtaW4vb3JnYWRtaW4vb3JnQWRtaW5DaG9vc2VVc2VyV2luZG93Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDRiNTlhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi9vcmdhZG1pbi9vcmdBZG1pbkNob29zZVVzZXJXaW5kb3cubHp4CkBAIC0wLDAgKzEsMTE3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorIAorPGNsYXNzIG5hbWU9Im9yZ0FkbWluQ2hvb3NlVXNlcldpbmRvdyIgZXh0ZW5kcz0ibGFiZWxFeHBsb3JlckJveCIgbGFiZWxpZD0iMTgwIgorICAgIGRvY2tpbmc9InRydWUiIHdpZHRoPSI0MDAiIHg9IjIwMCIgeT0iMCIgaGVpZ2h0PSIyOTAiPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0ib3JnYW5pc2F0aW9uX2lkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0icmVmT2JqIiB2YWx1ZT0ibnVsbCIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9InVzZXJzSWQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpc09yZ1VzZXJBZGRGb3JtIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9InJlZk9iamVjdERpYWxvZyIgdmFsdWU9Im51bGwiLz4KKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgICAgICBsei5Nb2RlTWFuYWdlci5tYWtlTW9kYWwodGhpcyk7CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xvc2UiPgorICAgICAgICBsei5Nb2RlTWFuYWdlci5yZWxlYXNlKHRoaXMpOworICAgIDwvaGFuZGxlcj4KKwkKKwk8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJzZWFyY2hVc2VyIiBmdW5jbmFtZT0idXNlcnNlcnZpY2Uuc2VhcmNoVXNlciIgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gICAgICAKKwkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gY2FudmFzLnNlc3Npb25JZDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gImxvZ2luIjsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBhcmVudC5zZWFyY2hzdHJpbmcuZ2V0VGV4dCgpOyA8L21ldGhvZD48L25ldHBhcmFtPgorCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiAyMDA7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIDA7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuICJ1c2VyX2lkIjsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gdHJ1ZTsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisJCQk8IVtDREFUQVsKKwkJCS8vRGVidWcud3JpdGUoInNlYXJjaFVzZXIgIix2YWx1ZSk7CisJCQlpZiAodmFsdWUhPW51bGwpeworCQkJCWZvciAodmFyIGk9MDtpPHZhbHVlLmxlbmd0aDtpKyspeworICAgICAgICAgICAgICAgICAgICB2YXIgdiA9IHZhbHVlW2ldLmxvZ2luKycgWycrdmFsdWVbaV0ubGFzdG5hbWUrJywgJyt2YWx1ZVtpXS5maXJzdG5hbWUrJ10nOworCQkJCQl0aGlzLnBhcmVudC5fdXNlcmxpc3QuYWRkSXRlbSh2LHZhbHVlW2ldLnVzZXJfaWQpOworCQkJCX0KKwkJCX0KKwkJCV1dPgkJCQorCQk8L2hhbmRsZXI+CisJPC9uZXRSZW1vdGVDYWxsSGliPgkKKwkKKwk8bGFiZWxUZXh0IGxhYmVsaWQ9IjE4MSIgd2lkdGg9IjIwMCIgeT0iMjQiIHJlc2l6ZT0iZmFsc2UiIHg9IjIiLz4gICAgCQorCQk8Y3VzdG9tRWRpdHRleHQgbmFtZT0ic2VhcmNoc3RyaW5nIiB5PSIyNCIgeD0iMTIwIiB3aWR0aD0iMjcwIiB0ZXh0PSIiIC8+CQorCQorCTxzaW1wbGVMYWJlbEJ1dHRvbiBsYWJlbGlkPSIxODIiIHg9IjI5MCIgeT0iNTQiIHdpZHRoPSIxMDAiPgorCQk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKwkJCXBhcmVudC5zZWFyY2hVc2VyLmRvQ2FsbCgpOworCQk8L2hhbmRsZXI+CisJPC9zaW1wbGVMYWJlbEJ1dHRvbj4JCisJCisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIxODMiIHdpZHRoPSIyMDAiIHk9Ijg0IiByZXNpemU9ImZhbHNlIiB4PSIyIi8+ICAgICAKKyAgICA8c2ltcGxlVmFsdWVMaXN0IG5hbWU9Il91c2VybGlzdCIgeT0iODQiIHg9IjEyMCIgd2lkdGg9IjI3MCIgaGVpZ2h0PSIxMDAiIAorCQltdWx0aXNlbGVjdD0iZmFsc2UiIC8+CisJCisgICAgPHNpbXBsZUxhYmVsQnV0dG9uIGxhYmVsaWQ9IjE3NSIgeD0iMTgwIiB5PSIkb25jZXsgcGFyZW50LmhlaWdodC0zMCB9IiB3aWR0aD0iMTAwIj4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC51c2Vyc0lkID0gdGhpcy5wYXJlbnQuX3VzZXJsaXN0Ll9zZWxlY3RlZC52YWx1ZTsKKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSh0aGlzLnBhcmVudC51c2Vyc0lkKTsKKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSh0aGlzLnBhcmVudC5fdXNlcmxpc3QuX3NlbGVjdGVkLnZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAocGFyZW50LmlzT3JnVXNlckFkZEZvcm0pIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQuYWRkVXNlclRvT3JnYW5pc2F0aW9uLmRvQ2FsbCgpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnJlZk9iamVjdERpYWxvZy5hZGRVc2VyQnlJZCh0aGlzLnBhcmVudC51c2Vyc0lkKTsKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50LmNsb3NlKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIC8vCisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPgorICAgIDwvc2ltcGxlTGFiZWxCdXR0b24+CisgICAgCisgICAgPHNpbXBsZUxhYmVsQnV0dG9uIGxhYmVsaWQ9IjE3NCIgeD0iMjkwIiB5PSIkb25jZXsgcGFyZW50LmhlaWdodC0zMCB9IiB3aWR0aD0iMTAwIj4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICB0aGlzLnBhcmVudC5jbG9zZSgpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9zaW1wbGVMYWJlbEJ1dHRvbj4gICAgCisgICAgCisgICAgICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImFkZFVzZXJUb09yZ2FuaXNhdGlvbiIgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iIAorICAgICAgICAgICAgZnVuY25hbWU9Im9yZ2FuaXNhdGlvbnNlcnZpY2UuYWRkVXNlclRvT3JnYW5pc2F0aW9uIiA+ICAgICAgCisgICAgICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBjYW52YXMuc2Vzc2lvbklkOyA8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBhcmVudC5vcmdhbmlzYXRpb25faWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBwYXJlbnQucGFyZW50LnVzZXJzSWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiYWRkVXNlclRvT3JnYW5pc2F0aW9uICIsdmFsdWUpOworICAgICAgICAgICAgICAgIGlmICh2YWx1ZT4wKXsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQucmVmT2JqLm9ucmVsb2FkLnNlbmRFdmVudCgpOworICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5jbG9zZSgpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIG5ldyBsei5ycGNFcnJvckRpYWxvZyhjYW52YXMubWFpbl9jb250ZW50Ll9jb250ZW50LmlubmVyLHtlcnJvcmlkOnZhbHVlfSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8L25ldFJlbW90ZUNhbGxIaWI+CSAgICAgIAorICAgIAorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi9vcmdhZG1pbi9vcmdBZG1pbkxpc3RJdGVtLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvYWRtaW4vb3JnYWRtaW4vb3JnQWRtaW5MaXN0SXRlbS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDYyMDNhZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvYWRtaW4vb3JnYWRtaW4vb3JnQWRtaW5MaXN0SXRlbS5sengKQEAgLTAsMCArMSwzNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPCEtLS0gRXhpc3Rpbmcgb3JnYW5pemF0aW9uIGxpc3QuIHVzZWQgYnkgb3JnQWRtaW4gb25seSAtLT4KKzxjbGFzcyBuYW1lPSJvcmdBZG1pbkxpc3RJdGVtIiBleHRlbmRzPSJiYXNlQ29udGVudExpc3RJdGVtIj4KKwkKKwk8YXR0cmlidXRlIG5hbWU9Im9yZ2FuaXNhdGlvbl9pZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKwk8YXR0cmlidXRlIG5hbWU9Im9yZ25hbWUiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwkKKwk8dHVybk92ZXJUZXh0SXRlbSB0ZXh0PSIkb25jZXsgcGFyZW50Lm9yZ2FuaXNhdGlvbl9pZCB9IiB3aWR0aD0iMTIwIiAvPgorCTx0dXJuT3ZlclRleHRJdGVtIHRleHQ9IiRvbmNleyBwYXJlbnQub3JnbmFtZSB9IiB3aWR0aD0iMjAwIiAvPgorCQorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi9vcmdhZG1pbi9vcmdBZG1pblZhbHVlRm9ybS5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2FkbWluL29yZ2FkbWluL29yZ0FkbWluVmFsdWVGb3JtLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzU5MDkzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi9vcmdhZG1pbi9vcmdBZG1pblZhbHVlRm9ybS5sengKQEAgLTAsMCArMSwxNTYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzxjbGFzcyBuYW1lPSJvcmdBZG1pblZhbHVlRm9ybSIgZXh0ZW5kcz0iYmFzZUNvbnRlbnRTYXZlVmlldyI+CisJCisJPCEtLS0gcmVjb3JkQ29udGVudCBpZCAtLT4KKwk8YXR0cmlidXRlIG5hbWU9Im9yZ2FuaXNhdGlvbl9pZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4JCisKKwk8IS0tIGhhbmRsZXIgLS0+CisJCisJPGhhbmRsZXIgbmFtZT0ib25zYXZlY29tcGxldGVkIiA+CisJCXRoaXMuZ2V0T3JnYW5pc2F0aW9uQnlJZC5kb0NhbGwoKTsKKwk8L2hhbmRsZXI+CisJCisJPGhhbmRsZXIgbmFtZT0ib25yZWxvYWQiID4KKwkJaWYgKHRoaXMub3JnYW5pc2F0aW9uX2lkIT0wKSB7CisgICAgICAgICAgICB0aGlzLmdldE9yZ2FuaXNhdGlvbkJ5SWQuZG9DYWxsKCk7CisgICAgICAgICAgICB0aGlzLl91c2VybGlzdC5nZXRVc2Vyc0J5T3JnYW5pc2F0aW9uLmRvQ2FsbCgpOworICAgICAgICB9CisJPC9oYW5kbGVyPgkKKworCTxoYW5kbGVyIG5hbWU9Im9ubmV3Ij4KKwkJdGhpcy5vcmdhbmlzYXRpb25faWQ9MDsKKyAgICAgICAgdGhpcy5vcmduYW1lLnNldEF0dHJpYnV0ZSgndGV4dCcsJycpOworCTwvaGFuZGxlcj4KKwkKKyAgICA8aGFuZGxlciBuYW1lPSJvbmRlbGV0ZSIgPgorCQlpZiAodGhpcy5vcmdhbmlzYXRpb25faWQhPTApeworCQkJdGhpcy5kZWxldGVPcmdhbmlzYXRpb24uZG9DYWxsKCk7CisJCX0KKyAgICA8L2hhbmRsZXI+CQorCQorCTwhLS0gbWV0aG9kcyAtLT4KKwkKKyAgICA8bWV0aG9kIG5hbWU9ImluaXRWYWx1ZUZpZWxkc0J5T2JqZWN0IiBhcmdzPSJvYmoiPgorCQl0aGlzLm9yZ2FuaXNhdGlvbl9pZCA9IG9iai5vcmdhbmlzYXRpb25faWQ7CisJCWlmICh0aGlzLm9yZ2FuaXNhdGlvbl9pZCE9MCl7CisJCQl0aGlzLmdldE9yZ2FuaXNhdGlvbkJ5SWQuZG9DYWxsKCk7CisJCQl0aGlzLl91c2VybGlzdC5nZXRVc2Vyc0J5T3JnYW5pc2F0aW9uLmRvQ2FsbCgpOworCQl9CisgICAgPC9tZXRob2Q+CQorCQorICAJPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iZ2V0T3JnYW5pc2F0aW9uQnlJZCIgZnVuY25hbWU9Im9yZ2FuaXNhdGlvbnNlcnZpY2UuZ2V0T3JnYW5pc2F0aW9uQnlJZCIgCisgIAkJcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gCisgIAkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gY2FudmFzLnNlc3Npb25JZDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50Lm9yZ2FuaXNhdGlvbl9pZDs8L21ldGhvZD48L25ldHBhcmFtPgorICAgIAk8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAJCXBhcmVudC5pbml0RmllbGRzKHZhbHVlKTsKKyAgICAJPC9oYW5kbGVyPgorICAJPC9uZXRSZW1vdGVDYWxsSGliPgkKKwkKKwkKKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImluaXRGaWVsZHMiIGFyZ3M9Im9iaiI+CisgICAgCTwhW0NEQVRBWworICAgIAl0aGlzLm9yZ2FuaXNhdGlvbl9pZCA9IG9iai5vcmdhbmlzYXRpb25faWQ7CisgICAgICAgIHRoaXMub3JnbmFtZS5zZXRBdHRyaWJ1dGUoJ3RleHQnLG9iai5uYW1lKTsKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisJCisJPCEtLSByZW1vdGVjYWxscyAtLT4KKworCTxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImRlbGV0ZU9yZ2FuaXNhdGlvbiIgZnVuY25hbWU9Im9yZ2FuaXNhdGlvbnNlcnZpY2UuZGVsZXRlT3JnYW5pc2F0aW9uIiByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAgICAgIAorCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBjYW52YXMuc2Vzc2lvbklkOyA8L21ldGhvZD48L25ldHBhcmFtPgorCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBwYXJlbnQucGFyZW50Lm9yZ2FuaXNhdGlvbl9pZDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisJCQkvL0RlYnVnLndyaXRlKCJkZWxldGVPcmdhbmlzYXRpb24gIix2YWx1ZSk7CisJCQkvL3RoaXMucGFyZW50LmRlc3Ryb3koKTsKKwkJCWlmICh2YWx1ZT4wKXsKKwkJCQl0aGlzLnBhcmVudC5wYXJlbnQuX3R1cm5vdmVybGlzdC5vbmNhbGxuZXh0LnNlbmRFdmVudCgpOworCQkJCXRoaXMucGFyZW50Lm9ubmV3LnNlbmRFdmVudCgpOworCQkJfQorCQk8L2hhbmRsZXI+CisJPC9uZXRSZW1vdGVDYWxsSGliPgkKKwkKKyAgCTxuZXRSZW1vdGVDYWxsSGliIG5hbWU9InNhdmVPclVwZGF0ZU9yZ2FuaXNhdGlvbiIgZnVuY25hbWU9Im9yZ2FuaXNhdGlvbnNlcnZpY2Uuc2F2ZU9yVXBkYXRlT3JnYW5pc2F0aW9uIiAKKyAgCQlyZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgcmVnaXN0ZXJPYmplY3Q9InRydWUiID4gICAKKwkJPGF0dHJpYnV0ZSBuYW1lPSJzZW5kT2JqZWN0IiB2YWx1ZT0ibnVsbCIgLz4KKwkJPCEtLSBnZXRzIGNhbGxlZCBieSBPYnNlcnZlciAtLT4KKyAgCQk8bWV0aG9kIG5hbWU9InByZXBhcmVDYWxsIj4KKyAgCQkJdGhpcy5zZW5kT2JqZWN0PW5ldyBBcnJheSgpOworICAJCQl0aGlzLnNlbmRPYmplY3RbIm9yZ2FuaXNhdGlvbl9pZCJdID0gdGhpcy5wYXJlbnQub3JnYW5pc2F0aW9uX2lkOworICAJCQl0aGlzLnNlbmRPYmplY3RbIm9yZ25hbWUiXSA9IHRoaXMucGFyZW50Lm9yZ25hbWUuZ2V0VGV4dCgpOworCisgIAkJCS8vRGVidWcud3JpdGUoInByZXBhcmVDYWxsOiAiLHRoaXMuc2VuZE9iamVjdCk7CisgIAkJPC9tZXRob2Q+CisgIAkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gY2FudmFzLnNlc3Npb25JZDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQuc2VuZE9iamVjdDs8L21ldGhvZD48L25ldHBhcmFtPgkgIAkJCisgICAgCTxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsIj4KKwkJCTwhW0NEQVRBWworICAgIAkJLy9EZWJ1Zy53cml0ZSgic2F2ZU9yVXBkYXRlT3JnYW5pc2F0aW9uOiAiLHZhbCk7CisJCQlpZiAodmFsPjApeworCQkJCS8vRGVidWcud3JpdGUoInNhdmVPclVwZGF0ZVVzZXIgdmFsIGdyZWF0ZXIgMDogIix2YWwpOworCQkJCXRoaXMucGFyZW50LnBhcmVudC5fdHVybm92ZXJsaXN0Lm9uY2FsbG5leHQuc2VuZEV2ZW50KCk7CisJCQkJdmFyIG9iaiA9IG5ldyBBcnJheSgpOworCQkJCW9ialsib3JnYW5pc2F0aW9uX2lkIl0gPSB2YWw7CisJCQkJdGhpcy5wYXJlbnQuaW5pdFZhbHVlRmllbGRzQnlPYmplY3Qob2JqKTsKKwkJCX0KKwkJCV1dPgorICAgIAk8L2hhbmRsZXI+CisgIAk8L25ldFJlbW90ZUNhbGxIaWI+CQkKKwkKKwk8IS0tIGNvbnRlbnQgLS0+CQorICAgIAorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMTcwIiB3aWR0aD0iMjAwIiB5PSI0MCIgcmVzaXplPSJmYWxzZSIgZm9udHN0eWxlPSJib2xkIiAvPgkKKwkKKyAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjE3MSIgd2lkdGg9IjIwMCIgeT0iNzAiIHJlc2l6ZT0iZmFsc2UiIHg9IjIiLz4KKyAgICAgICAgPGN1c3RvbUVkaXR0ZXh0IG5hbWU9Im9yZ25hbWUiIHk9IjcwIiB4PSIxMjAiIHdpZHRoPSIyNzAiIHRleHQ9IiIgLz4JCisJCisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIyNzMiIHdpZHRoPSIyMDAiIHk9IjEwMCIgcmVzaXplPSJmYWxzZSIgeD0iMiIgZm9udHN0eWxlPSJib2xkIiAvPiAgIAorICAgIAorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMTc3IiB3aWR0aD0iMjAwIiB5PSIxMzAiIHJlc2l6ZT0iZmFsc2UiIHg9IjIiLz4KKyAgICAgICAgIAorICAgIDxvcmdVc2Vyc1JlY29yZFZhbHVlTGlzdCBuYW1lPSJfdXNlcmxpc3QiIHk9IjEzMCIgeD0iMTIwIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjIwMCIgLz4gIAorCisJPGJsdWVCdXR0b24gcmVzb3VyY2VJdGVtPSJlZGl0X2FkZF9yc2MiIHk9IjEwMCIgeD0iNDAwIgorCQl4X2luc2V0UmVzb3VyY2U9IjIiIHlfaW5zZXRSZXNvdXJjZT0iMiIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIgorCQl3aWR0aF9pbnNldFJlc291cmNlPSIxNiIgaGVpZ2h0X2luc2V0UmVzb3VyY2U9IjE2IgorCQlvbmNsaWNrPSJ0aGlzLnBhcmVudC5hZGRPcmdhbmlzYXRpb25Ub1VzZXIoKSI+CisJCTxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iMTc4IiAvPgorCTwvYmx1ZUJ1dHRvbj4KKwkJCQorCTxtZXRob2QgbmFtZT0iYWRkT3JnYW5pc2F0aW9uVG9Vc2VyIj4KKwkJaWYgKHRoaXMub3JnYW5pc2F0aW9uX2lkIT0wKSB7CisJCQluZXcgbHoub3JnQWRtaW5DaG9vc2VVc2VyV2luZG93KGNhbnZhcy5tYWluX2NvbnRlbnQuX2NvbnRlbnQuaW5uZXIseworCQkJICAgICByZWZPYmo6dGhpcyxvcmdhbmlzYXRpb25faWQ6dGhpcy5vcmdhbmlzYXRpb25faWQsCisJCQkgICAgIGlzT3JnVXNlckFkZEZvcm06dHJ1ZX0pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgbmV3IGx6LmxhYmVsZXJyb3JQb3B1cChjYW52YXMubWFpbl9jb250ZW50Ll9jb250ZW50LmlubmVyLHsKKyAgICAgICAgICAgICAgICAgICAgIGVycm9ybGFiZWxpZDo2NTQKKyAgICAgICAgICAgICAgICAgICAgfSkKKyAgICAgICAgfQorCTwvbWV0aG9kPgkKKyAgICAKKzwvY2xhc3M+CisJCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2FkbWluL29yZ2FkbWluL29yZ1VzZXJzUmVjb3JkVmFsdWVMaXN0Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvYWRtaW4vb3JnYWRtaW4vb3JnVXNlcnNSZWNvcmRWYWx1ZUxpc3QubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxNDlkMDAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2FkbWluL29yZ2FkbWluL29yZ1VzZXJzUmVjb3JkVmFsdWVMaXN0Lmx6eApAQCAtMCwwICsxLDg0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8IS0tLSBFeGlzdGluZyBvcmdhbml6YXRpb24gbGlzdC4gdXNlZCBieSBvcmdBZG1pbiBvbmx5IC0tPgorPGNsYXNzIG5hbWU9Im9yZ1VzZXJzUmVjb3JkVmFsdWVMaXN0IiBleHRlbmRzPSJyZWNvcmRWYWx1ZUxpc3QiID4KKyAgICAgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJ1c2Vyc0lkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgIHRoaXMuYWRkSGVhZGVySXRlbSgxNzcsMjI2KTsgICAgCisgICAgICAgIHRoaXMuYWRkSGVhZGVySXRlbSgyNzUsNjApOyAgIAorICAgIDwvaGFuZGxlcj4KKyAgICAgICAgCisgICAgPGhhbmRsZXIgbmFtZT0iZGVsZXRlSXRlbSIgYXJncz0ib2JqIj4KKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImRlbGV0ZUl0ZW06ICIsb2JqLnZhbHVlKTsKKyAgICAgICAgdGhpcy51c2Vyc0lkID0gTnVtYmVyKG9iai52YWx1ZSk7CisgICAgICAgIHRoaXMuZGVsZXRlVXNlckZyb21PcmdhbmlzYXRpb24uZG9DYWxsKCk7CisgICAgPC9oYW5kbGVyPiAgCisKKyAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJnZXRVc2Vyc0J5T3JnYW5pc2F0aW9uIiBmdW5jbmFtZT0ib3JnYW5pc2F0aW9uc2VydmljZS5nZXRVc2Vyc0J5T3JnYW5pc2F0aW9uIiAKKyAgICAgICAgICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAKKyAgICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBjYW52YXMuc2Vzc2lvbklkOyA8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQucGFyZW50Lm9yZ2FuaXNhdGlvbl9pZDs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiAwOyA8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiAyMDA7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuICJ1c2VyX2lkIjsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gdHJ1ZTsgPC9tZXRob2Q+PC9uZXRwYXJhbT4gICAgICAgICAgCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgRGVidWcud3JpdGUoImdldFVzZXJzQnlvcmdhbmlzYXRpb24gIix2YWx1ZSk7CisgICAgICAgICAgICB0aGlzLnBhcmVudC5pbml0VmFsdWVzKHZhbHVlLnJlY29yZHMpOworICAgICAgICAgICAgdGhpcy5wYXJlbnQucmVuZGVyQ29udGVudCh2YWx1ZS5yZXN1bHQpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAKKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InJlbmRlckNvbnRlbnQiIGFyZ3M9InJlY29yZHMiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgdGhpcy5jbGVhckxpc3QoKTsKKyAgICAgICAgZm9yICh2YXIgaT0wO2k8cmVjb3Jkcy5sZW5ndGg7aSsrKXsKKyAgICAgICAgICAgIHZhciB2ID0gcmVjb3Jkc1tpXS5sb2dpbisnIFsnK3JlY29yZHNbaV0ubGFzdG5hbWUrJywgJytyZWNvcmRzW2ldLmZpcnN0bmFtZSsnXSc7CisgICAgICAgICAgICBuZXcgbHoucmVjb3JkTGlzdEl0ZW0odGhpcy5faW5uZXJsaXN0Ll9pbm4uX2lubix7dmFsdWVOYW1lOnYsdmFsdWU6cmVjb3Jkc1tpXS51c2VyX2lkfSk7CisgICAgICAgIH0KKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgICAgICAgICAKKyAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJkZWxldGVVc2VyRnJvbU9yZ2FuaXNhdGlvbiIgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iIAorICAgICAgICBmdW5jbmFtZT0ib3JnYW5pc2F0aW9uc2VydmljZS5kZWxldGVVc2VyRnJvbU9yZ2FuaXNhdGlvbiIgPiAgICAgIAorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBjYW52YXMuc2Vzc2lvbklkOyA8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBwYXJlbnQucGFyZW50LnBhcmVudC5vcmdhbmlzYXRpb25faWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIHBhcmVudC5wYXJlbnQudXNlcnNJZDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gJyc7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgRGVidWcud3JpdGUoImRlbGV0ZVVzZXJGcm9tT3JnYW5pc2F0aW9uICIsdmFsdWUpOworICAgICAgICAgICAgLy90aGlzLnBhcmVudC5kZXN0cm95KCk7CisgICAgICAgICAgICBpZiAodmFsdWU+MCl7CisgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQucGFyZW50Lm9ucmVsb2FkLnNlbmRFdmVudCgpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBuZXcgbHoucnBjRXJyb3JEaWFsb2coY2FudmFzLm1haW5fY29udGVudC5fY29udGVudC5pbm5lcix7ZXJyb3JpZDp2YWx1ZX0pOworICAgICAgICAgICAgfQorICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAgICAgICAKKyAgICAgIAorPC9jbGFzcz4gCisKKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi9yb29tYWRtaW4vYWR2YW5jZWRSb29tU2V0dGluZ3MubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi9yb29tYWRtaW4vYWR2YW5jZWRSb29tU2V0dGluZ3MubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5ZTM2NTQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2FkbWluL3Jvb21hZG1pbi9hZHZhbmNlZFJvb21TZXR0aW5ncy5sengKQEAgLTAsMCArMSwxMzIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzxjbGFzcyBuYW1lPSJhZHZhbmNlZFJvb21TZXR0aW5ncyIgZXh0ZW5kcz0idmlldyIgeT0iNTcwIj4KKwkKKwk8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorCQk8IVtDREFUQVsKKwkJCWlmIChwYXJlbnQucm9vbXNfaWQhPTApeworCQkJCXRoaXMuX3ZpZGVvUG9kSGVpZ2h0LnNldEF0dHJpYnV0ZSgndGV4dCcscGFyZW50LnJvb21zT2JqLnZpZGVvUG9kSGVpZ2h0KTsKKwkJCQl0aGlzLl92aWRlb1BvZFdpZHRoLnNldEF0dHJpYnV0ZSgndGV4dCcscGFyZW50LnJvb21zT2JqLnZpZGVvUG9kV2lkdGgpOworCQkJCXRoaXMuX3ZpZGVvUG9kWFBvc2l0aW9uLnNldEF0dHJpYnV0ZSgndGV4dCcscGFyZW50LnJvb21zT2JqLnZpZGVvUG9kWFBvc2l0aW9uKTsKKwkJCQl0aGlzLl92aWRlb1BvZFlQb3NpdGlvbi5zZXRBdHRyaWJ1dGUoJ3RleHQnLHBhcmVudC5yb29tc09iai52aWRlb1BvZFlQb3NpdGlvbik7CisJCQkJCisJCQkJdGhpcy5fbW9kZXJhdGlvblBhbmVsWFBvc2l0aW9uLnNldEF0dHJpYnV0ZSgndGV4dCcscGFyZW50LnJvb21zT2JqLm1vZGVyYXRpb25QYW5lbFhQb3NpdGlvbik7CisJCQkJdGhpcy5fc2hvd1doaXRlQm9hcmQuc2V0VmFsdWUocGFyZW50LnJvb21zT2JqLnNob3dXaGl0ZUJvYXJkKTsKKwkJCQkKKwkJCQl0aGlzLl93aGl0ZUJvYXJkUGFuZWxYUG9zaXRpb24uc2V0QXR0cmlidXRlKCd0ZXh0JyxwYXJlbnQucm9vbXNPYmoud2hpdGVCb2FyZFBhbmVsWFBvc2l0aW9uKTsKKwkJCQl0aGlzLl93aGl0ZUJvYXJkUGFuZWxZUG9zaXRpb24uc2V0QXR0cmlidXRlKCd0ZXh0JyxwYXJlbnQucm9vbXNPYmoud2hpdGVCb2FyZFBhbmVsWVBvc2l0aW9uKTsKKwkJCQl0aGlzLl93aGl0ZUJvYXJkUGFuZWxXaWR0aC5zZXRBdHRyaWJ1dGUoJ3RleHQnLHBhcmVudC5yb29tc09iai53aGl0ZUJvYXJkUGFuZWxXaWR0aCk7CisJCQkJdGhpcy5fd2hpdGVCb2FyZFBhbmVsSGVpZ2h0LnNldEF0dHJpYnV0ZSgndGV4dCcscGFyZW50LnJvb21zT2JqLndoaXRlQm9hcmRQYW5lbEhlaWdodCk7CisJCQkJCisJCQkJdGhpcy5fc2hvd0ZpbGVzUGFuZWwuc2V0VmFsdWUocGFyZW50LnJvb21zT2JqLnNob3dGaWxlc1BhbmVsKTsKKwkJCQkKKwkJCQl0aGlzLl9maWxlc1BhbmVsWFBvc2l0aW9uLnNldEF0dHJpYnV0ZSgndGV4dCcscGFyZW50LnJvb21zT2JqLmZpbGVzUGFuZWxYUG9zaXRpb24pOworCQkJCXRoaXMuX2ZpbGVzUGFuZWxZUG9zaXRpb24uc2V0QXR0cmlidXRlKCd0ZXh0JyxwYXJlbnQucm9vbXNPYmouZmlsZXNQYW5lbFlQb3NpdGlvbik7CisJCQkJdGhpcy5fZmlsZXNQYW5lbFdpZHRoLnNldEF0dHJpYnV0ZSgndGV4dCcscGFyZW50LnJvb21zT2JqLmZpbGVzUGFuZWxXaWR0aCk7CisJCQkJdGhpcy5fZmlsZXNQYW5lbEhlaWdodC5zZXRBdHRyaWJ1dGUoJ3RleHQnLHBhcmVudC5yb29tc09iai5maWxlc1BhbmVsSGVpZ2h0KTsKKwkJCX0gZWxzZSB7CisJCQkJdGhpcy5fdmlkZW9Qb2RIZWlnaHQuc2V0QXR0cmlidXRlKCd0ZXh0JywyODApOworCQkJCXRoaXMuX3ZpZGVvUG9kV2lkdGguc2V0QXR0cmlidXRlKCd0ZXh0JywyNzApOworCQkJCXRoaXMuX3ZpZGVvUG9kWFBvc2l0aW9uLnNldEF0dHJpYnV0ZSgndGV4dCcsMik7CisJCQkJdGhpcy5fdmlkZW9Qb2RZUG9zaXRpb24uc2V0QXR0cmlidXRlKCd0ZXh0JywyKTsKKwkJCQkKKwkJCQl0aGlzLl9tb2RlcmF0aW9uUGFuZWxYUG9zaXRpb24uc2V0QXR0cmlidXRlKCd0ZXh0Jyw0MDApOworCQkJCXRoaXMuX3Nob3dXaGl0ZUJvYXJkLnNldFZhbHVlKHRydWUpOworCQkJCQorCQkJCXRoaXMuX3doaXRlQm9hcmRQYW5lbFhQb3NpdGlvbi5zZXRBdHRyaWJ1dGUoJ3RleHQnLDI3Nik7CisJCQkJdGhpcy5fd2hpdGVCb2FyZFBhbmVsWVBvc2l0aW9uLnNldEF0dHJpYnV0ZSgndGV4dCcsMik7CisJCQkJdGhpcy5fd2hpdGVCb2FyZFBhbmVsV2lkdGguc2V0QXR0cmlidXRlKCd0ZXh0Jyw2NjApOworCQkJCXRoaXMuX3doaXRlQm9hcmRQYW5lbEhlaWdodC5zZXRBdHRyaWJ1dGUoJ3RleHQnLDU5Mik7CisJCQkJCisJCQkJdGhpcy5fc2hvd0ZpbGVzUGFuZWwuc2V0VmFsdWUodHJ1ZSk7CisJCQkJCisJCQkJdGhpcy5fZmlsZXNQYW5lbFhQb3NpdGlvbi5zZXRBdHRyaWJ1dGUoJ3RleHQnLDIpOworCQkJCXRoaXMuX2ZpbGVzUGFuZWxZUG9zaXRpb24uc2V0QXR0cmlidXRlKCd0ZXh0JywyODQpOworCQkJCXRoaXMuX2ZpbGVzUGFuZWxXaWR0aC5zZXRBdHRyaWJ1dGUoJ3RleHQnLDI3MCk7CisJCQkJdGhpcy5fZmlsZXNQYW5lbEhlaWdodC5zZXRBdHRyaWJ1dGUoJ3RleHQnLDMxMCk7CisJCQl9CisJCV1dPgorCTwvaGFuZGxlcj4KKyAgICAKKyAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjQ4NiIgZm9udHN0eWxlPSJib2xkIiB3aWR0aD0iMjAwIiAKKyAgICAJCSAgIHk9IjAiIHJlc2l6ZT0idHJ1ZSIgeD0iMiIgLz4KKyAgICAKKyAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjQ4NCIgd2lkdGg9IjEyMCIgeT0iMzAiIHJlc2l6ZT0iZmFsc2UiIHg9IjIiLz4KKyAgICA8Y3VzdG9tRWRpdHRleHQgbmFtZT0iX3ZpZGVvUG9kWFBvc2l0aW9uIiB5PSIzMCIgeD0iMTIwIiB3aWR0aD0iMTAwIiAKKyAgICAJCQkJcmVnZXhwVHlwZT0ibnVtYmVyIiB0ZXh0PSIiIC8+IAorICAgIDxjdXN0b21FZGl0dGV4dCBuYW1lPSJfdmlkZW9Qb2RZUG9zaXRpb24iIHk9IjMwIiB4PSIyMzAiIHdpZHRoPSIxMDAiIAorICAgIAkJCQlyZWdleHBUeXBlPSJudW1iZXIiIHRleHQ9IiIgLz4gIAorICAgIAorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iNDg1IiB3aWR0aD0iMjAwIiB5PSI2MCIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPgorICAgIDxjdXN0b21FZGl0dGV4dCBuYW1lPSJfdmlkZW9Qb2RXaWR0aCIgeT0iNjAiIHg9IjEyMCIgd2lkdGg9IjEwMCIgCisgICAgCQkJCXJlZ2V4cFR5cGU9Im51bWJlciIgdGV4dD0iIiAvPiAgCisgICAgPGN1c3RvbUVkaXR0ZXh0IG5hbWU9Il92aWRlb1BvZEhlaWdodCIgeT0iNjAiIHg9IjIzMCIgd2lkdGg9IjEwMCIgCisgICAgCQkJCXJlZ2V4cFR5cGU9Im51bWJlciIgdGV4dD0iIiAvPiAKKyAgICAKKyAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjQ4NyIgZm9udHN0eWxlPSJib2xkIiB3aWR0aD0iMjAwIiAgCisgICAgCQkgICB5PSI5MCIgcmVzaXplPSJ0cnVlIiB4PSIyIiAvPgorICAgIAkJICAgCisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSI0ODgiIHdpZHRoPSIyMDAiIHk9IjEyMCIgcmVzaXplPSJmYWxzZSIgeD0iMiIgLz4KKyAgICA8Y3VzdG9tRWRpdHRleHQgbmFtZT0iX21vZGVyYXRpb25QYW5lbFhQb3NpdGlvbiIgeT0iMTIwIiAKKyAgICAJCQkJeD0iMTIwIiB3aWR0aD0iMTAwIiAgCisgICAgCQkJCXJlZ2V4cFR5cGU9Im51bWJlciIgdGV4dD0iIiAvPiAgIAorICAgIAorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iNDg5IiBmb250c3R5bGU9ImJvbGQiIHdpZHRoPSIyMDAiICAKKyAgICAJCSAgIHk9IjE1MCIgcmVzaXplPSJ0cnVlIiB4PSIyIiAvPgorICAgIAkJICAgCisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSI0OTAiIHdpZHRoPSIyMDAiIHk9IjE4MCIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPgorICAgIDxjaGVja2JveCBuYW1lPSJfc2hvd1doaXRlQm9hcmQiIHdpZHRoPSIxMDAiIHk9IjE4MCIgeD0iMTIwIiBmb250c2l6ZT0iMTEiIC8+CisgICAgCisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSI0OTEiIHdpZHRoPSIyMDAiIHk9IjIxMCIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPgorICAgIDxjdXN0b21FZGl0dGV4dCBuYW1lPSJfd2hpdGVCb2FyZFBhbmVsWFBvc2l0aW9uIiB5PSIyMTAiIHg9IjEyMCIgd2lkdGg9IjEwMCIgIAorICAgIAkJCQlyZWdleHBUeXBlPSJudW1iZXIiIHRleHQ9IiIgLz4gCisgICAgPGN1c3RvbUVkaXR0ZXh0IG5hbWU9Il93aGl0ZUJvYXJkUGFuZWxZUG9zaXRpb24iIHk9IjIxMCIgeD0iMjMwIiB3aWR0aD0iMTAwIiAgCisgICAgCQkJCXJlZ2V4cFR5cGU9Im51bWJlciIgdGV4dD0iIiAvPiAKKyAgICAKKyAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjQ5MiIgd2lkdGg9IjIwMCIgeT0iMjQwIiByZXNpemU9ImZhbHNlIiB4PSIyIi8+CisgICAgPGN1c3RvbUVkaXR0ZXh0IG5hbWU9Il93aGl0ZUJvYXJkUGFuZWxXaWR0aCIgeT0iMjQwIiB4PSIxMjAiIHdpZHRoPSIxMDAiICAKKyAgICAJCQkJcmVnZXhwVHlwZT0ibnVtYmVyIiB0ZXh0PSIiIC8+ICAKKyAgICA8Y3VzdG9tRWRpdHRleHQgbmFtZT0iX3doaXRlQm9hcmRQYW5lbEhlaWdodCIgeT0iMjQwIiB4PSIyMzAiIHdpZHRoPSIxMDAiICAKKyAgICAJCQkJcmVnZXhwVHlwZT0ibnVtYmVyIiB0ZXh0PSIiIC8+ICAKKyAgICAKKyAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjQ5MyIgZm9udHN0eWxlPSJib2xkIiB3aWR0aD0iMjAwIiAgCisgICAgCQkgICB5PSIyNzAiIHJlc2l6ZT0idHJ1ZSIgeD0iMiIgLz4KKyAgICAJCSAgIAorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iNDk0IiB3aWR0aD0iMjAwIiB5PSIzMDAiIHJlc2l6ZT0iZmFsc2UiIHg9IjIiLz4KKyAgICA8Y2hlY2tib3ggbmFtZT0iX3Nob3dGaWxlc1BhbmVsIiB3aWR0aD0iMTAwIiB5PSIzMDAiIHg9IjEyMCIgZm9udHNpemU9IjExIiAvPgorICAgIAorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iNDk1IiB3aWR0aD0iMjAwIiB5PSIzMzAiIHJlc2l6ZT0iZmFsc2UiIHg9IjIiLz4KKyAgICA8Y3VzdG9tRWRpdHRleHQgbmFtZT0iX2ZpbGVzUGFuZWxYUG9zaXRpb24iIHk9IjMzMCIgeD0iMTIwIiB3aWR0aD0iMTAwIiAgCisgICAgCQkJCXJlZ2V4cFR5cGU9Im51bWJlciIgdGV4dD0iIiAvPiAgCisgICAgPGN1c3RvbUVkaXR0ZXh0IG5hbWU9Il9maWxlc1BhbmVsWVBvc2l0aW9uIiB5PSIzMzAiIHg9IjIzMCIgd2lkdGg9IjEwMCIgIAorICAgIAkJCQlyZWdleHBUeXBlPSJudW1iZXIiIHRleHQ9IiIgLz4gCisgICAgCisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSI0OTYiIHdpZHRoPSIzMDAiIHk9IjM2MCIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPgorICAgIDxjdXN0b21FZGl0dGV4dCBuYW1lPSJfZmlsZXNQYW5lbFdpZHRoIiB5PSIzNjAiIHg9IjEyMCIgd2lkdGg9IjEwMCIgIAorICAgIAkJCQlyZWdleHBUeXBlPSJudW1iZXIiIHRleHQ9IiIgLz4gCisgICAgPGN1c3RvbUVkaXR0ZXh0IG5hbWU9Il9maWxlc1BhbmVsSGVpZ2h0IiB5PSIzNjAiIHg9IjIzMCIgd2lkdGg9IjEwMCIgIAorICAgIAkJCQlyZWdleHBUeXBlPSJudW1iZXIiIHRleHQ9IiIgLz4gIAorCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2FkbWluL3Jvb21hZG1pbi9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvYWRtaW4vcm9vbWFkbWluL2xpYnJhcnkubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxZWU0NjMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2FkbWluL3Jvb21hZG1pbi9saWJyYXJ5Lmx6eApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorICAgIAorICAgIDxpbmNsdWRlIGhyZWY9InJvb21BZG1pbi5sengiIC8+CisJPGluY2x1ZGUgaHJlZj0icm9vbUFkbWluTGlzdEl0ZW0ubHp4IiAvPgorICAgIDwhLS0KKwk8aW5jbHVkZSBocmVmPSJhZHZhbmNlZFJvb21TZXR0aW5ncy5sengiIC8+CisgICAgIC0tPgorCTxpbmNsdWRlIGhyZWY9InJvb21WYWx1ZUZvcm0ubHp4IiAvPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2FkbWluL3Jvb21hZG1pbi9yb29tQWRtaW4ubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi9yb29tYWRtaW4vcm9vbUFkbWluLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzM4ZTQ5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi9yb29tYWRtaW4vcm9vbUFkbWluLmx6eApAQCAtMCwwICsxLDExMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPCEtLS0gQWRtaW4gbW9kdWxlIHRvIGNvbmZpZ3VyZSB0aGUgQ29uZmVyZW5jZSBvciBBdWRpZW5jZSByb29tLi0tPgorPGNsYXNzIG5hbWU9InJvb21BZG1pbiIgZXh0ZW5kcz0iYmFzZUNvbnRlbnRWaWV3Ij4JCisKKwk8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorCQlfbWFpblNjcm9sbEhCYXIuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworCTwvaGFuZGxlcj4KKwkKKwk8aGFuZGxlciBuYW1lPSJvbnRhYmNvbnRlbnRsZWF2ZSIgYXJncz0idFJlZiI+CisJCV9tYWluU2Nyb2xsSEJhci5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKwk8L2hhbmRsZXI+CisJCisJPGxhYmVsVGV4dCB4PSIyIiB5PSIkeyA4IC0gcGFyZW50LnBhcmVudC5wYXJlbnQueSB9IiBsYWJlbGlkPSI3MTQiIC8+CisJCisJPGN1c3RvbUVkaXR0ZXh0IG5hbWU9Il9zZWFyY2giIHk9IiR7IDQgLSBwYXJlbnQucGFyZW50LnBhcmVudC55IH0iIHg9IjEyMCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyNCIvPgorICAgIAorICAgIDxzaW1wbGVMYWJlbEJ1dHRvbiBsYWJlbGlkPSI3MTUiIHg9IjMzMCIgd2lkdGg9IjcwIiBoZWlnaHQ9IjI0IiB5PSIkeyA0IC0gcGFyZW50LnBhcmVudC5wYXJlbnQueSB9Ij4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICBwYXJlbnQuX3R1cm5vdmVybGlzdC5nZXRSb29tcy5kb0NhbGwoKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgIDwvc2ltcGxlTGFiZWxCdXR0b24+CisJCisJPHR1cm5PdmVyTGlzdCBuYW1lPSJfdHVybm92ZXJsaXN0IiB3aWR0aD0iNDAwIiBoZWlnaHQ9IiR7IGNhbnZhcy5oZWlnaHQgLSBjYW52YXMubmF2aUhlaWdodCAtIDQwIH0iIHg9IjIiIHk9IiR7IDMwIC0gcGFyZW50LnBhcmVudC5wYXJlbnQueSB9IiAKKwkJb3JkZXJieT0iYy5yb29tc19pZCIgc3RlcD0iNTAiIGFzYz0idHJ1ZSI+CisKKwkJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKwkJCXRoaXMuYWRkSGVhZGVySXRlbSgxODgsNjApOworCQkJdGhpcy5hZGRIZWFkZXJJdGVtKDE4OSwxODQpOworCQkJdGhpcy5hZGRIZWFkZXJJdGVtKDE5MCwxMzQpOworCQkJdGhpcy5nZXRSb29tcy5kb0NhbGwoKTsKKwkJPC9oYW5kbGVyPgorCQkKKwkJPGhhbmRsZXIgbmFtZT0ib25jYWxsbmV4dCIgPgorCQkJdGhpcy5nZXRSb29tcy5kb0NhbGwoKTsKKwkJPC9oYW5kbGVyPgorCQkKKwkJPGhhbmRsZXIgbmFtZT0ib25jYWxscHJlIiA+CQkKKwkJCXRoaXMuZ2V0Um9vbXMuZG9DYWxsKCk7CisJCTwvaGFuZGxlcj4KKwkJCisJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2tlZEl0ZW0iIGFyZ3M9Im9iaiI+CisJCQkvL0RlYnVnLndyaXRlKCJvbmNsaWNrZWRJdGVtIixvYmosb2JqLm9iaik7CisgICAgICAgICAgICBwYXJlbnQuX3Jvb212YWx1ZWZvcm0uaGlkZU5ld1JlY29yZFRleHQoKTsKKwkJCXBhcmVudC5fcm9vbXZhbHVlZm9ybS5pbml0VmFsdWVGaWVsZHNCeU9iamVjdChvYmoub2JqKTsKKwkJPC9oYW5kbGVyPgorCQkKKwkJPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iZ2V0Um9vbXMiIGZ1bmNuYW1lPSJjb25mZXJlbmNlc2VydmljZS5nZXRSb29tcyIgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gICAgICAKKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBwYXJlbnQucGFyZW50LnN0YXJ0OyA8L21ldGhvZD48L25ldHBhcmFtPgorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBhcmVudC5zdGVwOyA8L21ldGhvZD48L25ldHBhcmFtPgorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBhcmVudC5vcmRlcmJ5OyA8L21ldGhvZD48L25ldHBhcmFtPgorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBhcmVudC5hc2M7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJICAgIAk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBwYXJlbnQucGFyZW50LnBhcmVudC5fc2VhcmNoLmdldFRleHQoKTsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorCSAgICAJCS8vRGVidWcud3JpdGUoImdldFJvb21zOiAiLHZhbHVlKTsKKwkgICAgCQkvL3RoaXMucGFyZW50LmRlc3Ryb3koKTsKKwkgICAgCQl0aGlzLnBhcmVudC5pbml0VmFsdWVzKHZhbHVlLnJlY29yZHMpOworCSAgICAJCXRoaXMucGFyZW50LnJlbmRlckNvbnRlbnQodmFsdWUucmVzdWx0KTsKKwkgICAgCTwvaGFuZGxlcj4KKwkgICAgPC9uZXRSZW1vdGVDYWxsSGliPgkKKwkgICAgCisJICAgIDxtZXRob2QgbmFtZT0icmVuZGVyQ29udGVudCIgYXJncz0icmVjb3JkcyI+CisJICAgIAk8IVtDREFUQVsKKwkgICAgCXRoaXMuY2xlYXJMaXN0KCk7CisJICAgIAlmb3IgKHZhciBpPTA7aTxyZWNvcmRzLmxlbmd0aDtpKyspeworCSAgICAJCW5ldyBsei5yb29tQWRtaW5MaXN0SXRlbSh0aGlzLl9pbm5lcmxpc3QuX2lubi5faW5uLHtvYmo6cmVjb3Jkc1tpXSxyb29tc19pZDpyZWNvcmRzW2ldLnJvb21zX2lkLHJvb21uYW1lOnJlY29yZHNbaV0ubmFtZSxpc3B1YmxpYzpyZWNvcmRzW2ldLmlzcHVibGljfSk7CisJICAgIAl9CisJICAgIAlpZiAocGFyZW50Ll9yb29tdmFsdWVmb3JtLnJvb21zX2lkID09IDApIHsKKyAgICAgICAgICAgICAgICBpZiAocmVjb3Jkcy5sZW5ndGggPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIHBhcmVudC5fcm9vbXZhbHVlZm9ybS5pbml0VmFsdWVGaWVsZHNCeU9iamVjdChyZWNvcmRzWzBdKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0aGlzLnNlbmRJbml0aWFsV2lkdGhVcGRhdGUoKTsKKwkgICAgCV1dPgorCSAgICA8L21ldGhvZD4KKworCTwvdHVybk92ZXJMaXN0PgorCQorCTxyb29tVmFsdWVGb3JtIG5hbWU9Il9yb29tdmFsdWVmb3JtIiB4PSI0MDIiPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbm5ldyIgYXJncz0icmVmT2JqIj4KKyAgICAgICAgICAgIHBhcmVudC5fdHVybm92ZXJsaXN0LmNsZWFyU2VsZWN0aW9uKCk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICA8L3Jvb21WYWx1ZUZvcm0+CisJCQorPC9jbGFzcz4KKworCisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvYWRtaW4vcm9vbWFkbWluL3Jvb21BZG1pbkxpc3RJdGVtLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvYWRtaW4vcm9vbWFkbWluL3Jvb21BZG1pbkxpc3RJdGVtLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzIxYTZiCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi9yb29tYWRtaW4vcm9vbUFkbWluTGlzdEl0ZW0ubHp4CkBAIC0wLDAgKzEsMzYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzwhLS0tIGxpc3Qgb2YgY29uZmVyZW5jZS9hdWRpZW5jZSByb29tcyAtLT4KKzxjbGFzcyBuYW1lPSJyb29tQWRtaW5MaXN0SXRlbSIgZXh0ZW5kcz0iYmFzZUNvbnRlbnRMaXN0SXRlbSI+CisgICAgCisJPGF0dHJpYnV0ZSBuYW1lPSJyb29tc19pZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKwk8YXR0cmlidXRlIG5hbWU9InJvb21uYW1lIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJpc3B1YmxpYyIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorCQorCTx0dXJuT3ZlclRleHRJdGVtIHRleHQ9IiRvbmNleyBwYXJlbnQucm9vbXNfaWQgfSIgd2lkdGg9IjYwIiAvPgorCTx0dXJuT3ZlclRleHRJdGVtIHRleHQ9IiRvbmNleyBwYXJlbnQucm9vbW5hbWUgfSIgd2lkdGg9IjE4NiIgLz4KKwk8dHVybk92ZXJUZXh0SXRlbSB0ZXh0PSIkb25jZXsgcGFyZW50LmlzcHVibGljIH0iIHdpZHRoPSIxNDAiIC8+CisJCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2FkbWluL3Jvb21hZG1pbi9yb29tVmFsdWVGb3JtLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvYWRtaW4vcm9vbWFkbWluL3Jvb21WYWx1ZUZvcm0ubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyN2FkOTAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2FkbWluL3Jvb21hZG1pbi9yb29tVmFsdWVGb3JtLmx6eApAQCAtMCwwICsxLDg1MCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPCEtLS0gY29uZmlndXJlIHZhbHVlIGZvciByb29tYWRtaW4gbW9kdWxlIC0tPgorPGNsYXNzIG5hbWU9InJvb21WYWx1ZUZvcm0iIGV4dGVuZHM9ImJhc2VDb250ZW50U2F2ZVZpZXciPgorCisJPCEtLSByZWNvcmRDb250ZW50LWlkIC0tPgorCTxhdHRyaWJ1dGUgbmFtZT0icm9vbXNfaWQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJyb29tc09iaiIgdmFsdWU9Im51bGwiIC8+CisJCisJPCEtLWhhbmRsZXJzIC0tPgorCisJPGhhbmRsZXIgbmFtZT0ib25zYXZlY29tcGxldGVkIiA+CisJCXRoaXMuZ2V0Um9vbUJ5SWQuZG9DYWxsKCk7CisJPC9oYW5kbGVyPgorCQorCTxoYW5kbGVyIG5hbWU9Im9ucmVsb2FkIiA+CisJCWlmICh0aGlzLnJvb21zX2lkIT0wKSB0aGlzLmdldFJvb21CeUlkLmRvQ2FsbCgpOworCTwvaGFuZGxlcj4JCisKKwk8aGFuZGxlciBuYW1lPSJvbm5ldyI+CisJCXRoaXMucm9vbXNfaWQ9MDsKKyAgICAgICAgdGhpcy5yb29tbmFtZS5zZXRBdHRyaWJ1dGUoJ3RleHQnLCcnKTsKKwkJdGhpcy5jb21tZW50LnNldEF0dHJpYnV0ZSgndGV4dCcsJycpOworCQl0aGlzLmlzcHVibGljLnNldFZhbHVlKGZhbHNlKTsKKwkJdGhpcy5pc01vZGVyYXRlZFJvb20uc2V0VmFsdWUoZmFsc2UpOworCQl0aGlzLmlzRGVtb1Jvb20uc2V0VmFsdWUoZmFsc2UpOworCQl0aGlzLmRlbW9UaW1lLnNldEF0dHJpYnV0ZSgndGV4dCcsJycpOworCQl0aGlzLmlzYXBwb2ludG1lbnQuc2V0VmFsdWUoZmFsc2UpOworCQl0aGlzLm51bWJlck9mUGFydGljaXBhbnRzLnNlbGVjdEl0ZW0oJzQnKTsKKwkJdGhpcy5fb3JnYW5pc2F0aW9uc2xpc3QuY2xlYXJMaXN0KCk7CisgICAgICAgIHRoaXMuX3R1cm5vdmVybGlzdC5jbGVhckxpc3QoKTsKKyAgICAgICAgdGhpcy5hbGxvd1VzZXJRdWVzdGlvbnMuc2V0VmFsdWUodHJ1ZSk7CisgICAgICAgIHRoaXMuaXNBdWRpb09ubHkuc2V0VmFsdWUoZmFsc2UpOworICAgICAgICB0aGlzLmFsbG93Rm9udFN0eWxlcy5zZXRWYWx1ZSh0cnVlKTsKKyAgICAgICAgdGhpcy5zaXBOdW1iZXIuc2V0QXR0cmlidXRlKCJ0ZXh0IiwiIik7CisgICAgICAgIHRoaXMuY29uZmVyZW5jZVBpbi5zZXRBdHRyaWJ1dGUoInRleHQiLCIiKTsKKyAgICAgICAgdGhpcy5pc0Nsb3NlZC5zZXRWYWx1ZShmYWxzZSk7CisgICAgICAgIHRoaXMucmVkaXJlY3RVUkwuc2V0QXR0cmlidXRlKCJ0ZXh0IiwiIik7CisgICAgICAgIHRoaXMuX2xpc3RSb29tTW9kZXJhdG9ycy5jbGVhckxpc3QoKTsKKyAgICAgICAgdGhpcy5vd25lcklkLnNldEF0dHJpYnV0ZSgidGV4dCIsIjAiKTsKKyAgICAgICAgdGhpcy53YWl0Rm9yUmVjb3JkaW5nLnNldFZhbHVlKGZhbHNlKTsKKyAgICAgICAgdGhpcy5hbGxvd1JlY29yZGluZy5zZXRWYWx1ZShmYWxzZSk7CisgICAgICAgIHRoaXMuaGlkZVRvcEJhci5zZXRWYWx1ZShmYWxzZSk7CisgICAgICAgIHRoaXMuaGlkZUNoYXQuc2V0VmFsdWUoZmFsc2UpOyAgICAgICAgCisgICAgICAgIHRoaXMuaGlkZUFjdGl2aXRpZXNBbmRBY3Rpb25zLnNldFZhbHVlKGZhbHNlKTsKKyAgICAgICAgdGhpcy5oaWRlRmlsZXNFeHBsb3Jlci5zZXRWYWx1ZShmYWxzZSk7CisgICAgICAgIHRoaXMuaGlkZUFjdGlvbnNNZW51LnNldFZhbHVlKGZhbHNlKTsKKyAgICAgICAgdGhpcy5oaWRlU2NyZWVuU2hhcmluZy5zZXRWYWx1ZShmYWxzZSk7CisgICAgICAgIHRoaXMuaGlkZVdoaXRlYm9hcmQuc2V0VmFsdWUoZmFsc2UpOyAKKyAgICAgICAgdGhpcy5zaG93TWljcm9waG9uZVN0YXR1cy5zZXRWYWx1ZShmYWxzZSk7CisJCXRoaXMuY2hhdE1vZGVyYXRlZC5zZXRWYWx1ZShmYWxzZSk7CisJCXRoaXMuY2hhdE9wZW5lZC5zZXRWYWx1ZShmYWxzZSk7CisJCXRoaXMuZmlsZXNPcGVuZWQuc2V0VmFsdWUoZmFsc2UpOworCQl0aGlzLmF1dG9WaWRlb1NlbGVjdC5zZXRWYWx1ZShmYWxzZSk7CisJCXRoaXMuc2lwRW5hYmxlZC5zZXRWYWx1ZShmYWxzZSk7CisJPC9oYW5kbGVyPgorCQorICAgIDxoYW5kbGVyIG5hbWU9Im9uZGVsZXRlIiA+CisJCWlmICh0aGlzLnJvb21zX2lkIT0wKXsKKwkJCXRoaXMuZGVsZXRlUm9vbS5kb0NhbGwoKTsKKwkJfQorICAgIDwvaGFuZGxlcj4KKwkKKwk8IS0tIG1ldGhvZHMgLS0+CisKKyAgICA8bWV0aG9kIG5hbWU9ImluaXRWYWx1ZUZpZWxkc0J5T2JqZWN0IiBhcmdzPSJvYmoiPgorCQl0aGlzLnJvb21zX2lkID0gb2JqLnJvb21zX2lkOworCQlpZiAodGhpcy5yb29tc19pZCE9MCl7CisJCQl0aGlzLmdldFJvb21CeUlkLmRvQ2FsbCgpOworCQl9CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJpbml0RmllbGRzIiBhcmdzPSJvYmoiPgorICAgIAk8IVtDREFUQVsKKyAgICAJCisgICAgCSAgIGlmIChvYmogPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgIAkJdGhpcy5yb29tc09iaiA9IG9iajsKKyAgICAJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJpbml0RmllbGRzOiAiLG9iaik7CisgICAgCQl0aGlzLnJvb21zX2lkID0gb2JqLnJvb21zX2lkOworICAgIAkJCisJCQl0aGlzLnJvb21uYW1lLnNldEF0dHJpYnV0ZSgndGV4dCcsb2JqLm5hbWUpOworCQkJdGhpcy5jb21tZW50LnNldEF0dHJpYnV0ZSgndGV4dCcsIGNhbnZhcy5nZXROb3ROdWxsU3RyaW5nKG9iai5jb21tZW50KSk7CisJCQl0aGlzLmlzcHVibGljLnNldFZhbHVlKG9iai5pc3B1YmxpYyk7CisgICAgICAgICAgICB0aGlzLmRlbW9UaW1lLnNldEF0dHJpYnV0ZSgiZW5hYmxlZCIsdHJ1ZSk7CisJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiQXBwb2ludG1lbnQ6ICIsb2JqLmFwcG9pbnRtZW50KTsKKwkJCXRoaXMuaXNhcHBvaW50bWVudC5zZXRWYWx1ZShvYmouYXBwb2ludG1lbnQpOworCQkJCisJCSAgICBpZiAob2JqLmlzTW9kZXJhdGVkUm9vbSAhPSBudWxsICYmIG9iai5pc01vZGVyYXRlZFJvb20peworICAgICAgICAgICAgICAgIHRoaXMuaXNNb2RlcmF0ZWRSb29tLnNldFZhbHVlKHRydWUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aGlzLmlzTW9kZXJhdGVkUm9vbS5zZXRWYWx1ZShmYWxzZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChvYmouZGVtb1RpbWUgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHRoaXMuZGVtb1RpbWUuc2V0VGV4dChvYmouZGVtb1RpbWUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aGlzLmRlbW9UaW1lLnNldEF0dHJpYnV0ZSgidGV4dCIsIiIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAob2JqLmlzRGVtb1Jvb20gIT0gbnVsbCAmJiBvYmouaXNEZW1vUm9vbSl7CisgICAgICAgICAgICAgICAgdGhpcy5pc0RlbW9Sb29tLnNldFZhbHVlKHRydWUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aGlzLmlzRGVtb1Jvb20uc2V0VmFsdWUoZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAob2JqLmFsbG93VXNlclF1ZXN0aW9ucyAhPSBudWxsICYmIG9iai5hbGxvd1VzZXJRdWVzdGlvbnMpeworICAgICAgICAgICAgICAgIHRoaXMuYWxsb3dVc2VyUXVlc3Rpb25zLnNldFZhbHVlKHRydWUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aGlzLmFsbG93VXNlclF1ZXN0aW9ucy5zZXRWYWx1ZShmYWxzZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChvYmouaXNBdWRpb09ubHkgIT0gbnVsbCAmJiBvYmouaXNBdWRpb09ubHkpeworICAgICAgICAgICAgICAgIHRoaXMuaXNBdWRpb09ubHkuc2V0VmFsdWUodHJ1ZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRoaXMuaXNBdWRpb09ubHkuc2V0VmFsdWUoZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAob2JqLmFsbG93Rm9udFN0eWxlcyAhPSBudWxsICYmIG9iai5hbGxvd0ZvbnRTdHlsZXMpeworICAgICAgICAgICAgCXRoaXMuYWxsb3dGb250U3R5bGVzLnNldFZhbHVlKHRydWUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIAl0aGlzLmFsbG93Rm9udFN0eWxlcy5zZXRWYWx1ZShmYWxzZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChvYmouaXNDbG9zZWQgIT0gbnVsbCAmJiBvYmouaXNDbG9zZWQpeworICAgICAgICAgICAgICAgIHRoaXMuaXNDbG9zZWQuc2V0VmFsdWUodHJ1ZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRoaXMuaXNDbG9zZWQuc2V0VmFsdWUoZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLnJlZGlyZWN0VVJMLnNldEF0dHJpYnV0ZSgidGV4dCIsIGNhbnZhcy5nZXROb3ROdWxsU3RyaW5nKG9iai5yZWRpcmVjdFVSTCkpOworICAgICAgICAgICAgICAgIAorCQkJdGhpcy5udW1iZXJPZlBhcnRpY2lwYW50cy5zZWxlY3RJdGVtKFN0cmluZyhvYmoubnVtYmVyT2ZQYXJ0aXppcGFudHMpKTsKKwkJCXRoaXMucm9vbXR5cGUuc2VsZWN0SXRlbShTdHJpbmcob2JqLnJvb210eXBlLnJvb210eXBlc19pZCkpOworCQkJCisJCQlpZiAob2JqICE9IG51bGwgJiYgb2JqLmNvbmZubyAhPSBudWxsKSB7CisJCSAgICAgICAgdGhpcy5zaXBOdW1iZXIuc2V0QXR0cmlidXRlKCJ0ZXh0Iiwgb2JqLmNvbmZubyk7CisJCQl9IGVsc2UgeworCQkJCXRoaXMuc2lwTnVtYmVyLnNldEF0dHJpYnV0ZSgidGV4dCIsIiIpOworCQkJfQorCQkJCisJCQlpZiAob2JqICE9IG51bGwgJiYgb2JqLnBpbiAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgdGhpcy5jb25mZXJlbmNlUGluLnNldEF0dHJpYnV0ZSgidGV4dCIsIG9iai5waW4pOworCQkJfSBlbHNlIHsKKwkJCQl0aGlzLmNvbmZlcmVuY2VQaW4uc2V0QXR0cmlidXRlKCJ0ZXh0IiwgIiIpOworCQkJfQorCQkJCisgICAgICAgICAgICB0aGlzLl90dXJub3Zlcmxpc3QuY2xlYXJMaXN0KCk7CisgICAgICAgICAgICB0aGlzLl90dXJub3Zlcmxpc3QuZ2V0Um9vbUNsaWVudHNMaXN0QnlSb29tSWQuZG9DYWxsKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChvYmoub3duZXJJZCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgdGhpcy5vd25lcklkLnNldEF0dHJpYnV0ZSgidGV4dCIsb2JqLm93bmVySWQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aGlzLm93bmVySWQuc2V0QXR0cmlidXRlKCJ0ZXh0IiwiMCIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAob2JqLndhaXRGb3JSZWNvcmRpbmcgIT0gbnVsbCAmJiBvYmoud2FpdEZvclJlY29yZGluZyl7CisgICAgICAgICAgICAJdGhpcy53YWl0Rm9yUmVjb3JkaW5nLnNldFZhbHVlKHRydWUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIAl0aGlzLndhaXRGb3JSZWNvcmRpbmcuc2V0VmFsdWUoZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAob2JqLmFsbG93UmVjb3JkaW5nICE9IG51bGwgJiYgb2JqLmFsbG93UmVjb3JkaW5nKXsKKyAgICAgICAgICAgICAgICB0aGlzLmFsbG93UmVjb3JkaW5nLnNldFZhbHVlKHRydWUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aGlzLmFsbG93UmVjb3JkaW5nLnNldFZhbHVlKGZhbHNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG9iai5oaWRlVG9wQmFyICE9IG51bGwgJiYgb2JqLmhpZGVUb3BCYXIpeworICAgICAgICAgICAgICAgIHRoaXMuaGlkZVRvcEJhci5zZXRWYWx1ZSh0cnVlKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGhpcy5oaWRlVG9wQmFyLnNldFZhbHVlKGZhbHNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG9iai5oaWRlQ2hhdCAhPSBudWxsICYmIG9iai5oaWRlQ2hhdCl7CisgICAgICAgICAgICAgICAgdGhpcy5oaWRlQ2hhdC5zZXRWYWx1ZSh0cnVlKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGhpcy5oaWRlQ2hhdC5zZXRWYWx1ZShmYWxzZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChvYmouaGlkZUFjdGl2aXRpZXNBbmRBY3Rpb25zICE9IG51bGwgJiYgb2JqLmhpZGVBY3Rpdml0aWVzQW5kQWN0aW9ucyl7CisgICAgICAgICAgICAgICAgdGhpcy5oaWRlQWN0aXZpdGllc0FuZEFjdGlvbnMuc2V0VmFsdWUodHJ1ZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRoaXMuaGlkZUFjdGl2aXRpZXNBbmRBY3Rpb25zLnNldFZhbHVlKGZhbHNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG9iai5oaWRlRmlsZXNFeHBsb3JlciAhPSBudWxsICYmIG9iai5oaWRlRmlsZXNFeHBsb3Jlcil7CisgICAgICAgICAgICAgICAgdGhpcy5oaWRlRmlsZXNFeHBsb3Jlci5zZXRWYWx1ZSh0cnVlKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGhpcy5oaWRlRmlsZXNFeHBsb3Jlci5zZXRWYWx1ZShmYWxzZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChvYmouaGlkZUFjdGlvbnNNZW51ICE9IG51bGwgJiYgb2JqLmhpZGVBY3Rpb25zTWVudSl7CisgICAgICAgICAgICAgICAgdGhpcy5oaWRlQWN0aW9uc01lbnUuc2V0VmFsdWUodHJ1ZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRoaXMuaGlkZUFjdGlvbnNNZW51LnNldFZhbHVlKGZhbHNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG9iai5oaWRlU2NyZWVuU2hhcmluZyAhPSBudWxsICYmIG9iai5oaWRlU2NyZWVuU2hhcmluZyl7CisgICAgICAgICAgICAgICAgdGhpcy5oaWRlU2NyZWVuU2hhcmluZy5zZXRWYWx1ZSh0cnVlKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGhpcy5oaWRlU2NyZWVuU2hhcmluZy5zZXRWYWx1ZShmYWxzZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChvYmouaGlkZVdoaXRlYm9hcmQgIT0gbnVsbCAmJiBvYmouaGlkZVdoaXRlYm9hcmQpeworICAgICAgICAgICAgICAgIHRoaXMuaGlkZVdoaXRlYm9hcmQuc2V0VmFsdWUodHJ1ZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRoaXMuaGlkZVdoaXRlYm9hcmQuc2V0VmFsdWUoZmFsc2UpOworICAgICAgICAgICAgfQorCQkJdGhpcy5jaGF0T3BlbmVkLnNldFZhbHVlKG9iai5jaGF0T3BlbmVkKTsKKwkJCXRoaXMuZmlsZXNPcGVuZWQuc2V0VmFsdWUob2JqLmZpbGVzT3BlbmVkKTsKKwkJCXRoaXMuYXV0b1ZpZGVvU2VsZWN0LnNldFZhbHVlKG9iai5hdXRvVmlkZW9TZWxlY3QpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAob2JqLnNob3dNaWNyb3Bob25lU3RhdHVzICE9IG51bGwgJiYgb2JqLnNob3dNaWNyb3Bob25lU3RhdHVzKXsKKyAgICAgICAgICAgICAgICB0aGlzLnNob3dNaWNyb3Bob25lU3RhdHVzLnNldFZhbHVlKHRydWUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aGlzLnNob3dNaWNyb3Bob25lU3RhdHVzLnNldFZhbHVlKGZhbHNlKTsKKyAgICAgICAgICAgIH0KKwkJCXRoaXMuY2hhdE1vZGVyYXRlZC5zZXRWYWx1ZShvYmouY2hhdE1vZGVyYXRlZCAhPSBudWxsICYmIG9iai5jaGF0TW9kZXJhdGVkKTsKKwkJCXRoaXMuc2lwRW5hYmxlZC5zZXRWYWx1ZShvYmouc2lwRW5hYmxlZCAhPSBudWxsICYmIG9iai5zaXBFbmFibGVkKTsKKwkJCQorICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLl9saXN0Um9vbU1vZGVyYXRvcnMuZ2V0Um9vbU1vZGVyYXRvcnNCeVJvb21JZC5kb0NhbGwoKTsKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisJCisJPG1ldGhvZCBuYW1lPSJpbml0T3JnYW5pc2F0aW9ucyIgYXJncz0ib2JqIj4KKwkJPCFbQ0RBVEFbCisJCQl0aGlzLl9vcmdhbmlzYXRpb25zbGlzdC5jbGVhckxpc3QoKTsKKwkJCWZvciAodmFyIGk9MDtpPG9iai5sZW5ndGg7aSsrKXsKKwkJCQkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJpbml0T3JnYW5pc2F0aW9uczogIixvYmpbaV0pOworCQkJCXRoaXMuX29yZ2FuaXNhdGlvbnNsaXN0LmFkZEl0ZW0ob2JqW2ldLm9yZ2FuaXNhdGlvbi5uYW1lLG9ialtpXS5vcmdhbmlzYXRpb24ub3JnYW5pc2F0aW9uX2lkKTsKKwkJCX0KKwkJXV0+CisJPC9tZXRob2Q+CisJCisJPCEtLSByZW1vdGVjYWxscyAtLT4KKwkKKyAgCTxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImdldFJvb21CeUlkIiBmdW5jbmFtZT0iY29uZmVyZW5jZXNlcnZpY2UuZ2V0Um9vbUJ5SWQiIAorICAJCXJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiA+IAorICAJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC5yb29tc19pZDs8L21ldGhvZD48L25ldHBhcmFtPgorICAgIAk8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAJCXBhcmVudC5pbml0RmllbGRzKHZhbHVlKTsKKwkJCXBhcmVudC5nZXRPcmdhbmlzYXRpb25CeVJvb20uZG9DYWxsKCk7CisgICAgCTwvaGFuZGxlcj4KKyAgCTwvbmV0UmVtb3RlQ2FsbEhpYj4KKwkKKyAgCTxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImdldE9yZ2FuaXNhdGlvbkJ5Um9vbSIgZnVuY25hbWU9ImNvbmZlcmVuY2VzZXJ2aWNlLmdldE9yZ2FuaXNhdGlvbkJ5Um9vbSIgCisgIAkJcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gCisgIAkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gY2FudmFzLnNlc3Npb25JZDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50LnJvb21zX2lkOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgCTxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorCQkJLy9EZWJ1Zy53cml0ZSgiZ2V0T3JnYW5pc2F0aW9uQnlSb29tOiAiLHZhbHVlKTsKKyAgICAJCXBhcmVudC5pbml0T3JnYW5pc2F0aW9ucyh2YWx1ZSk7CisgICAgCTwvaGFuZGxlcj4KKyAgCTwvbmV0UmVtb3RlQ2FsbEhpYj4KKwkKKwk8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJkZWxldGVSb29tIiBmdW5jbmFtZT0iY29uZmVyZW5jZXNlcnZpY2UuZGVsZXRlUm9vbSIgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gICAgICAKKwkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gY2FudmFzLnNlc3Npb25JZDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBhcmVudC5yb29tc19pZDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisJCQkvL0RlYnVnLndyaXRlKCJkZWxldGVVc2VyQWRtaW4gIix2YWx1ZSk7CisJCQkvL3RoaXMucGFyZW50LmRlc3Ryb3koKTsKKwkJCWlmICh2YWx1ZT4wKXsKKwkJCQl0aGlzLnBhcmVudC5wYXJlbnQuX3R1cm5vdmVybGlzdC5vbmNhbGxuZXh0LnNlbmRFdmVudCgpOworCQkJCXRoaXMucGFyZW50Lm9ubmV3LnNlbmRFdmVudCgpOworCQkJfQorCQk8L2hhbmRsZXI+CisJPC9uZXRSZW1vdGVDYWxsSGliPgkJCisKKyAgCTxuZXRSZW1vdGVDYWxsSGliIG5hbWU9InNhdmVPclVwZGF0ZVJvb20iIGZ1bmNuYW1lPSJjb25mZXJlbmNlc2VydmljZS5zYXZlT3JVcGRhdGVSb29tIiAKKyAgCQlyZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgcmVnaXN0ZXJPYmplY3Q9InRydWUiID4gICAKKwkJPGF0dHJpYnV0ZSBuYW1lPSJzZW5kT2JqZWN0IiB2YWx1ZT0ibnVsbCIgLz4KKwkJPCEtLSBnZXRzIGNhbGxlZCBieSBPYnNlcnZlciAgLS0+CisgIAkJPG1ldGhvZCBuYW1lPSJwcmVwYXJlQ2FsbCI+CisgIAkJCXRoaXMuc2VuZE9iamVjdD1uZXcgQXJyYXkoKTsKKyAgICAgICAgICAgIAorICAJCQl0aGlzLnNlbmRPYmplY3RbInJvb21zX2lkIl0gPSB0aGlzLnBhcmVudC5yb29tc19pZDsKKyAgCQkJdGhpcy5zZW5kT2JqZWN0WyJuYW1lIl0gPSB0aGlzLnBhcmVudC5yb29tbmFtZS5nZXRUZXh0KCk7CisJCQl0aGlzLnNlbmRPYmplY3RbInJvb210eXBlc19pZCJdID0gTnVtYmVyKHRoaXMucGFyZW50LnJvb210eXBlLmdldFZhbHVlKCkpOworICAJCQl0aGlzLnNlbmRPYmplY3RbImNvbW1lbnQiXSA9IHRoaXMucGFyZW50LmNvbW1lbnQuZ2V0VGV4dCgpOworICAJCQl0aGlzLnNlbmRPYmplY3RbImlzcHVibGljIl0gPSB0aGlzLnBhcmVudC5pc3B1YmxpYy5nZXRWYWx1ZSgpOworCQkJdGhpcy5zZW5kT2JqZWN0WyJudW1iZXJPZlBhcnRpemlwYW50cyJdID0gTnVtYmVyKHRoaXMucGFyZW50Lm51bWJlck9mUGFydGljaXBhbnRzLmdldFZhbHVlKCkpOworICAJCQl0aGlzLnNlbmRPYmplY3RbIm9yZ2FuaXNhdGlvbnMiXSA9IHRoaXMucGFyZW50Ll9vcmdhbmlzYXRpb25zbGlzdC5nZXRBbGxJdGVtcygpOworICAJCQl0aGlzLnNlbmRPYmplY3RbImFwcG9pbnRtZW50Il0gPSB0aGlzLnBhcmVudC5pc2FwcG9pbnRtZW50LmdldFZhbHVlKCk7CisgIAkJCXRoaXMuc2VuZE9iamVjdFsiaXNNb2RlcmF0ZWRSb29tIl0gPSB0aGlzLnBhcmVudC5pc01vZGVyYXRlZFJvb20uZ2V0VmFsdWUoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5zZW5kT2JqZWN0WyJpc0RlbW9Sb29tIl0gPSBwYXJlbnQuaXNEZW1vUm9vbS5nZXRWYWx1ZSgpOworICAgICAgICAgICAgdGhpcy5zZW5kT2JqZWN0WyJkZW1vVGltZSJdID0gcGFyZW50LmRlbW9UaW1lLmdldFRleHQoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5zZW5kT2JqZWN0WyJyb29tTW9kZXJhdG9ycyJdID0gcGFyZW50Ll9saXN0Um9vbU1vZGVyYXRvcnMuZ2V0VmFsdWVzKCk7CisKKyAgICAgICAgICAgIHRoaXMuc2VuZE9iamVjdFsiYWxsb3dVc2VyUXVlc3Rpb25zIl0gPSBwYXJlbnQuYWxsb3dVc2VyUXVlc3Rpb25zLmdldFZhbHVlKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuc2VuZE9iamVjdFsiaXNBdWRpb09ubHkiXSA9IHBhcmVudC5pc0F1ZGlvT25seS5nZXRWYWx1ZSgpOworICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLnNlbmRPYmplY3RbImFsbG93Rm9udFN0eWxlcyJdID0gcGFyZW50LmFsbG93Rm9udFN0eWxlcy5nZXRWYWx1ZSgpOworICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLnNlbmRPYmplY3RbImlzQ2xvc2VkIl0gPSBwYXJlbnQuaXNDbG9zZWQuZ2V0VmFsdWUoKTsKKyAgICAgICAgICAgIHRoaXMuc2VuZE9iamVjdFsicmVkaXJlY3RVUkwiXSA9IHBhcmVudC5yZWRpcmVjdFVSTC5nZXRUZXh0KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuc2VuZE9iamVjdFsiY29uZmVyZW5jZVBpbiJdID0gIHBhcmVudC5jb25mZXJlbmNlUGluLmdldFRleHQoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5zZW5kT2JqZWN0WyJ3YWl0Rm9yUmVjb3JkaW5nIl0gPSBwYXJlbnQud2FpdEZvclJlY29yZGluZy5nZXRWYWx1ZSgpOworICAgICAgICAgICAgdGhpcy5zZW5kT2JqZWN0WyJhbGxvd1JlY29yZGluZyJdID0gcGFyZW50LmFsbG93UmVjb3JkaW5nLmdldFZhbHVlKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuc2VuZE9iamVjdFsiaGlkZVRvcEJhciJdID0gcGFyZW50LmhpZGVUb3BCYXIuZ2V0VmFsdWUoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5zZW5kT2JqZWN0WyJoaWRlQ2hhdCJdID0gcGFyZW50LmhpZGVDaGF0LmdldFZhbHVlKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuc2VuZE9iamVjdFsiaGlkZUFjdGl2aXRpZXNBbmRBY3Rpb25zIl0gPSBwYXJlbnQuaGlkZUFjdGl2aXRpZXNBbmRBY3Rpb25zLmdldFZhbHVlKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuc2VuZE9iamVjdFsiaGlkZUZpbGVzRXhwbG9yZXIiXSA9IHBhcmVudC5oaWRlRmlsZXNFeHBsb3Jlci5nZXRWYWx1ZSgpOworICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLnNlbmRPYmplY3RbImhpZGVBY3Rpb25zTWVudSJdID0gcGFyZW50LmhpZGVBY3Rpb25zTWVudS5nZXRWYWx1ZSgpOworICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLnNlbmRPYmplY3RbImhpZGVTY3JlZW5TaGFyaW5nIl0gPSBwYXJlbnQuaGlkZVNjcmVlblNoYXJpbmcuZ2V0VmFsdWUoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5zZW5kT2JqZWN0WyJoaWRlV2hpdGVib2FyZCJdID0gcGFyZW50LmhpZGVXaGl0ZWJvYXJkLmdldFZhbHVlKCk7ICAgICAgCisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuc2VuZE9iamVjdFsic2hvd01pY3JvcGhvbmVTdGF0dXMiXSA9IHBhcmVudC5zaG93TWljcm9waG9uZVN0YXR1cy5nZXRWYWx1ZSgpOworCQkJdGhpcy5zZW5kT2JqZWN0WyJjaGF0TW9kZXJhdGVkIl0gPSBwYXJlbnQuY2hhdE1vZGVyYXRlZC5nZXRWYWx1ZSgpOworCQkJdGhpcy5zZW5kT2JqZWN0WyJjaGF0T3BlbmVkIl0gPSBwYXJlbnQuY2hhdE9wZW5lZC5nZXRWYWx1ZSgpOworCQkJdGhpcy5zZW5kT2JqZWN0WyJmaWxlc09wZW5lZCJdID0gcGFyZW50LmZpbGVzT3BlbmVkLmdldFZhbHVlKCk7CisgICAgICAgICAgICB0aGlzLnNlbmRPYmplY3RbImF1dG9WaWRlb1NlbGVjdCJdID0gcGFyZW50LmF1dG9WaWRlb1NlbGVjdC5nZXRWYWx1ZSgpOworCQkJdGhpcy5zZW5kT2JqZWN0WyJzaXBFbmFibGVkIl0gPSBwYXJlbnQuc2lwRW5hYmxlZC5nZXRWYWx1ZSgpOworICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgb3duZXJJZCA9IHBhcmVudC5vd25lcklkLmdldFRleHQoKTsKKyAgICAgICAgICAgIGlmIChvd25lcklkID09ICIiKSBvd25lcklkID0gMDsKKyAgICAgICAgICAgIHRoaXMuc2VuZE9iamVjdFsib3duZXJJZCJdID0gb3duZXJJZDsKKworICAJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgicHJlcGFyZUNhbGw6ICIsdGhpcy5zZW5kT2JqZWN0KTsKKyAgCQk8L21ldGhvZD4KKyAgCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQuc2VuZE9iamVjdDs8L21ldGhvZD48L25ldHBhcmFtPgkgIAkJCisgICAgCTxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsIj4KKwkJCTwhW0NEQVRBWworICAgIAkJLy9EZWJ1Zy53cml0ZSgic2F2ZU9yVXBkYXRlUm9vbSAiLHZhbCk7CisJCQlpZiAodmFsPjApeworCQkJCS8vRGVidWcud3JpdGUoInNhdmVPclVwZGF0ZVJvb20gdmFsIGdyZWF0ZXIgMDogIix2YWwpOworCQkJCXRoaXMucGFyZW50LnBhcmVudC5fdHVybm92ZXJsaXN0Lm9uY2FsbG5leHQuc2VuZEV2ZW50KCk7CisJCQkJdmFyIG9iaiA9IG5ldyBBcnJheSgpOworCQkJCW9ialsicm9vbXNfaWQiXSA9IHZhbDsKKwkJCQl0aGlzLnBhcmVudC5pbml0VmFsdWVGaWVsZHNCeU9iamVjdChvYmopOworCQkJfQorCQkJXV0+CisgICAgCTwvaGFuZGxlcj4KKyAgCTwvbmV0UmVtb3RlQ2FsbEhpYj4JCisJCisJPCEtLSBjb250ZW50IC0tPgorICAgIAorICAgIDwhLS0gMTg3OkNvbmZlcmVuY2Vyb29tcyAtLT4KKyAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjE4NyIgd2lkdGg9IjIwMCIgeT0iNDAiIHJlc2l6ZT0iZmFsc2UiIGZvbnRzdHlsZT0iYm9sZCIgLz4KKyAgICAKKyAgICA8IS0tIDE5MzpOYW1lIC0tPgorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMTkzIiB3aWR0aD0iMjAwIiB5PSI3MCIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPgorICAgICAgICA8Y3VzdG9tRWRpdHRleHQgbmFtZT0icm9vbW5hbWUiIHk9IjcwIiB4PSIxMjAiIHdpZHRoPSIyNzAiIHRleHQ9IiIgLz4gICAKKyAgICAKKyAgICA8IS0tIDQ4MjpQYXJ0aWNpcGFudHMgLS0+CisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSI0ODIiIHdpZHRoPSIyMDAiIHk9IjEwMCIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPgorICAgICAgICA8cmVzZXRDb21ib2JveCBuYW1lPSJudW1iZXJPZlBhcnRpY2lwYW50cyIgd2lkdGg9IjI3MCIgeT0iMTAwIiB4PSIxMjAiIGVkaXRhYmxlPSJmYWxzZSIgZm9udHNpemU9IjExIj4KKwkgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCIgPgorCSAgICAgICAgICAgIDwhW0NEQVRBWworCSAgICAgICAgICAgIAl0aGlzLmFkZEl0ZW0oMiwyKTsKKwkgICAgICAgICAgICAJdGhpcy5hZGRJdGVtKDQsNCk7CisJICAgICAgICAgICAgCXRoaXMuYWRkSXRlbSg2LDYpOworCSAgICAgICAgICAgIAl0aGlzLmFkZEl0ZW0oOCw4KTsKKwkgICAgICAgICAgICAJdGhpcy5hZGRJdGVtKDEwLDEwKTsKKwkgICAgICAgICAgICAJdGhpcy5hZGRJdGVtKDEyLDEyKTsKKwkgICAgICAgICAgICAJdGhpcy5hZGRJdGVtKDE0LDE0KTsKKwkgICAgICAgICAgICAJdGhpcy5hZGRJdGVtKDE2LDE2KTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRJdGVtKDI1LDI1KTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRJdGVtKDMyLDMyKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRJdGVtKDUwLDUwKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRJdGVtKDEwMCwxMDApOworICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZEl0ZW0oMTUwLDE1MCk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkSXRlbSgyMDAsMjAwKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRJdGVtKDEwMDAsMTAwMCk7CisJICAgICAgICAgICAgCXRoaXMuc2VsZWN0SXRlbUF0KDEpOworCSAgICAgICAgICAgIF1dPgorCSAgICAgICAgPC9oYW5kbGVyPiAKKyAgICAgICAgPC9yZXNldENvbWJvYm94PiAKKworCTwhLS0gMTk0OlR5cGUgLS0+CisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIxOTQiIHdpZHRoPSIyMDAiIHk9IjEzMCIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPiAgCisgICAgICAgIDxyZXNldENvbWJvYm94IG5hbWU9InJvb210eXBlIiB3aWR0aD0iMjcwIiB5PSIxMzAiIHg9IjEyMCIgZWRpdGFibGU9ImZhbHNlIiBmb250c2l6ZT0iMTEiPgorCSAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0IiA+CisJICAgICAgICAgICAgPCFbQ0RBVEFbCisJICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8Y2FudmFzLnJvb21UeXBlc0luaXRWYWx1ZXMubGVuZ3RoO2krKyl7CisJICAgICAgICAgICAgICAgIHRoaXMuYWRkSXRlbShjYW52YXMucm9vbVR5cGVzSW5pdFZhbHVlc1tpXS5uYW1lLGNhbnZhcy5yb29tVHlwZXNJbml0VmFsdWVzW2ldLnJvb210eXBlc19pZCk7CisJICAgICAgICAgICAgfQorCSAgICAgICAgICAgIHRoaXMuc2VsZWN0SXRlbShTdHJpbmcoY2FudmFzLnJvb21UeXBlc0luaXRWYWx1ZXNbMF0ucm9vbXR5cGVzX2lkKSk7CisJICAgICAgICAgICAgXV0+CisJICAgICAgICA8L2hhbmRsZXI+IAorICAgICAgICA8L3Jlc2V0Q29tYm9ib3g+IAkgICAgICAgICAgICAgICAgICAKKworCTwhLS0gMTk2OkNvbW1lbnQgLS0+CisJPGxhYmVsVGV4dCBsYWJlbGlkPSIxOTYiIHdpZHRoPSIyMDAiIHk9IjE2MCIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPgorICAgICAgICA8Y3VzdG9tU2Nyb2xsRWRpdHRleHQgbmFtZT0iY29tbWVudCIgeT0iMTYwIiB4PSIxMjAiIHdpZHRoPSIyNzAiIAorICAgICAgICAgICAgaGVpZ2h0PSIxMDAiIHRleHQ9IiIgLz4JCisJCisJPCEtLSBBcHBvaW50bWVudCAtLT4KKwk8bGFiZWxUZXh0IGxhYmVsaWQ9IjYyMCIgd2lkdGg9IjIwMCIgeT0iMjcwIiByZXNpemU9ImZhbHNlIiB4PSIyIi8+ICAKKyAgICAgICAgPGxhYmVsQ2hlY2tib3ggbmFtZT0iaXNhcHBvaW50bWVudCIgd2lkdGg9IjI3MCIgeT0iMjcwIiB4PSIxMzAiIGZvbnRzaXplPSIxMSIgLz4KKwkKKwk8IS0tIDE5MTpvcmdhbmlzYXRpb25zIC0tPgorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMTkxIiB3aWR0aD0iMjAwIiB5PSIzMDAiIGZvbnRzdHlsZT0iYm9sZCIKKyAgICAgICAgICAgICAgIHJlc2l6ZT0iZmFsc2UiIHg9IjIiLz4gICAgCisgICAgICAgICAgICAgICAKKyAgICA8IS0tIDE5NTpQdWJsaWMgLS0+CisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIxOTUiIHdpZHRoPSIyMDAiIHk9IjMyMCIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPiAgCisgICAgICAgIDxsYWJlbENoZWNrYm94IG5hbWU9ImlzcHVibGljIiB3aWR0aD0iMjcwIiB5PSIzMjAiIHg9IjEzMCIgZm9udHNpemU9IjExIiAvPiAgICAgICAgICAgICAgIAorICAgIAorICAgIDx2aWV3IHJlc291cmNlPSJtZXNzYWdlYm94X2luZm9fcnNjIiB4PSIwIiB5PSIzNDAiIC8+CisgICAgCisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSI4MjgiIHg9IjI0IiB5PSIzNDAiIGZvbnRzdHlsZT0iaXRhbGljIgorICAgICAgICAgICAgICAgbXVsdGlsaW5lPSJ0cnVlIiB3aWR0aD0iMzcwIiAvPiAgICAKKyAgICAgCisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIxOTEiIHdpZHRoPSIyMDAiIHk9IjM5MCIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPiAgICAgCisgICAgIAorICAgIDwhLS0gMTcyOmFkZCBvcmdhbmlzYXRpb24gLS0+CisgICAgPGJsdWVCdXR0b24gd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiByZXNvdXJjZUl0ZW09ImVkaXRfYWRkX3JzYyIKKyAgICAgICAgCQkJeF9pbnNldFJlc291cmNlPSIyIiB5X2luc2V0UmVzb3VyY2U9IjIiIHk9IjM5MCIgeD0iMzcwIiAKKyAgICAgICAgCQkJd2lkdGhfaW5zZXRSZXNvdXJjZT0iMTYiIGhlaWdodF9pbnNldFJlc291cmNlPSIxNiIKKyAgICAgICAgCQkJb25jbGljaz0idGhpcy5wYXJlbnQuYWRkT3JnYW5pc2F0aW9uVG9Vc2VyKCkiIC8+ICAgICAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImFkZE9yZ2FuaXNhdGlvblRvVXNlciI+CisgICAgICAgIG5ldyBsei5jaG9vc2VPcmdhbmlzYXRpb25XaW5kb3coY2FudmFzLm1haW5fY29udGVudC5fY29udGVudC5pbm5lcix7cmVmT2JqOnRoaXMsaXRlbV9pZDp0aGlzLnJvb21zX2lkfSk7CisgICAgPC9tZXRob2Q+ICAgCisgICAgIAorICAgICA8IS0tCisgICAgPHNpbXBsZVZhbHVlTGlzdCBuYW1lPSJfb3JnYW5pc2F0aW9uc2xpc3QiIHk9IjQxMCIgeD0iMTIwIiB3aWR0aD0iMjcwIiBoZWlnaHQ9IjgwIiAKKwkJbXVsdGlzZWxlY3Q9InRydWUiIC8+CisgICAgICAgICAtLT4KKyAgICAgICAgCisJPHNpbXBsZVR1cm5PdmVyTGlzdCBuYW1lPSJfb3JnYW5pc2F0aW9uc2xpc3QiIHk9IjM5MCIgeD0iMCIgCisgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMzkwIiBoZWlnaHQ9IjEwMCIgbWFpbkJnQ29sb3I9IjB4RkZGRkZGIj4KKworICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgICAgICAgICAgdGhpcy5hZGRIZWFkZXJJdGVtKDU4OCwzMCk7CisgICAgICAgICAgICB0aGlzLmFkZEhlYWRlckl0ZW0oODMxLDMyMCk7CisgICAgICAgICAgICB0aGlzLmFkZEhlYWRlckl0ZW0oNTkwLDIyKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAKKyAgICAgICAgPG1ldGhvZCBuYW1lPSJnZXRBbGxJdGVtcyI+CisgICAgICAgICAgICA8IVtDREFUQVsKKwkJICAgICAgICB2YXIgYSA9IG5ldyBBcnJheSgpOworCQkgICAgICAgIGZvciAodmFyIGk9MDtpPHRoaXMuX2lubmVybGlzdC5faW5uLl9pbm4uc3Vidmlld3MubGVuZ3RoO2krKyl7CisJCSAgICAgICAgICAgIC8vRGVidWcud3JpdGUoInQ6ICIsdGhpcy5jb250ZW50LmNvbnRlbnQuaW5uLnN1YnZpZXdzW2ldLnZhbHVlKTsKKwkJICAgICAgICAgICAgYS5wdXNoKE51bWJlcih0aGlzLl9pbm5lcmxpc3QuX2lubi5faW5uLnN1YnZpZXdzW2ldLm9yZ0lkKSk7CisJCSAgICAgICAgfQorCQkgICAgICAgIHJldHVybiBhOworCSAgICAgICAgXV0+CisgICAgICAgIDwvbWV0aG9kPgorICAgICAgICAKKyAgICAgICAgPG1ldGhvZCBuYW1lPSJhZGRJdGVtIiBhcmdzPSJvcmdOYW1lLG9yZ0lkIj4KKyAgICAgICAgICAgIG5ldyBsei5yb29tQWRtaW5PcmdMaXN0SXRlbSh0aGlzLl9pbm5lcmxpc3QuX2lubi5faW5uLHsKKwkgICAgICAgICAgICAgICAgb2JqOm51bGwsCisJICAgICAgICAgICAgICAgIG9yZ05hbWU6b3JnTmFtZSwKKwkgICAgICAgICAgICAgICAgb3JnSWQ6b3JnSWQKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHRoaXMuc2VuZEluaXRpYWxXaWR0aFVwZGF0ZSgpOworICAgICAgICA8L21ldGhvZD4KKyAgICA8L3NpbXBsZVR1cm5PdmVyTGlzdD4JCisgICAgCisgICAgPCEtLSBMaW1pdGF0aW9ucyAtLT4KKyAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjgzMCIgd2lkdGg9IjIwMCIgeT0iNTAwIiBmb250c3R5bGU9ImJvbGQiCisgICAgICAgICAgICAgICByZXNpemU9ImZhbHNlIiB4PSIyIi8+ICAgIAorICAgIAorICAgIDwhLS0gSXMgRGVtbyBSb29tIC0tPgorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iNjM2IiB3aWR0aD0iMjAwIiB5PSI1MjAiIHJlc2l6ZT0iZmFsc2UiIHg9IjIiLz4gIAorICAgICAgICA8bGFiZWxDaGVja2JveCBuYW1lPSJpc0RlbW9Sb29tIiB3aWR0aD0iMjUwIiB5PSI1MjAiIHg9IjI3MCIgZm9udHNpemU9IjExIj4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9udmFsdWUiIGFyZ3M9InYiPgorICAgICAgICAgICAgICAgIGlmICghcGFyZW50LmlzaW5pdGVkKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHYpIHsKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50LmRlbW9UaW1lLnNldEF0dHJpYnV0ZSgiZWRpdGFibGUiLHRydWUpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHBhcmVudC5kZW1vVGltZS5zZXRBdHRyaWJ1dGUoImVkaXRhYmxlIixmYWxzZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8L2xhYmVsQ2hlY2tib3g+ICAgCisJCisgICAgPCEtLSBEZW1vIFRpbWUgLS0+CisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSI2MzciIHdpZHRoPSIyMDAiIHk9IjU1MCIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPiAgCisgICAgICAgIDxjdXN0b21FZGl0dGV4dCBuYW1lPSJkZW1vVGltZSIgeT0iNTQ2IiB4PSIxMjAiIHdpZHRoPSIyNzAiIHJlZ2V4cFR5cGU9Im51bWJlciIKKyAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ9IiIgLz4gCisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgCisgICAgPCEtLSBSaWdodHMgLS0+CisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSI4ODEiIHdpZHRoPSIyMDAiIHk9IjU4MCIgZm9udHN0eWxlPSJib2xkIgorICAgICAgICAgICAgICAgcmVzaXplPSJmYWxzZSIgeD0iMiIvPiAgICAKKyAgICAgCisgICAgPCEtLSBhbGxvd1VzZXJRdWVzdGlvbnMgLS0+ICAgICAgICAgIAorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iODc5IiB3aWR0aD0iMjAwIiB5PSI2MTAiIHJlc2l6ZT0iZmFsc2UiIHg9IjIiLz4gIAorICAgICAgICA8bGFiZWxDaGVja2JveCBuYW1lPSJhbGxvd1VzZXJRdWVzdGlvbnMiIHdpZHRoPSIyNTAiIHk9IjYxMCIgeD0iMjcwIiBmb250c2l6ZT0iMTEiIC8+CisgICAgCisgICAgPCEtLSBhbGxvd1VzZXJRdWVzdGlvbnMgRGVzY3JpcHRpb24gLS0+ICAgICAgICAgIAorICAgIDx2aWV3IHJlc291cmNlPSJtZXNzYWdlYm94X2luZm9fcnNjIiB4PSIwIiB5PSI2MzAiIC8+CisgICAgCisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSI4ODAiIHg9IjI0IiB5PSI2MzAiICBmb250c3R5bGU9Iml0YWxpYyIKKyAgICAgICAgICAgICAgIG11bHRpbGluZT0idHJ1ZSIgd2lkdGg9IjM3MCIgLz4gCisgICAgICAgICAgICAgICAKKyAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjEwNzYiIHdpZHRoPSIyMDAiIHk9IjY4MCIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPiAgCisgICAgICAgIDxsYWJlbENoZWNrYm94IG5hbWU9ImlzQXVkaW9Pbmx5IiB3aWR0aD0iMjUwIiB5PSI2ODAiIHg9IjI3MCIgZm9udHNpemU9IjExIiAvPiAgCisgICAgICAgIAorICAgIDwhLS0gYWxsb3dVc2VyUXVlc3Rpb25zIERlc2NyaXB0aW9uIC0tPiAgICAgICAgICAKKyAgICA8dmlldyByZXNvdXJjZT0ibWVzc2FnZWJveF9pbmZvX3JzYyIgeD0iMCIgeT0iNzAwIiAvPgorICAgIAorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMTA3NyIgeD0iMjQiIHk9IjcwMCIgIGZvbnRzdHlsZT0iaXRhbGljIgorICAgICAgICAgICAgICAgbXVsdGlsaW5lPSJ0cnVlIiB3aWR0aD0iMzcwIiAvPiAKKyAgICAgICAgICAgICAgICAKKyAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjE1MzEiIHg9IjIiIHJlc2l6ZT0iZmFsc2UiIHdpZHRoPSIyNTAiIHk9Ijc2MCIgLz4KKyAgICAJPGxhYmVsQ2hlY2tib3ggbmFtZT0iYWxsb3dGb250U3R5bGVzIiB3aWR0aD0iMjUwIiB5PSI3NjAiIHg9IjI3MCIgLz4gICAgICAgICAgIAorICAgICAgICAgICAgICAgCisgICAgPCEtLSBSb29tIHRlcm1pbmF0aW9uIHNldHRpbmdzIC0tPgorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMTEwMSIgd2lkdGg9IjI1MCIgeT0iNzgwIiBmb250c3R5bGU9ImJvbGQiCisgICAgICAgICAgICAgICByZXNpemU9ImZhbHNlIiB4PSIyIi8+ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIDwhLS0gaXNDbG9zZWQgLS0+ICAgICAgICAgIAorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMTA5OSIgd2lkdGg9IjIwMCIgeT0iODEwIiByZXNpemU9ImZhbHNlIiB4PSIyIi8+ICAKKyAgICAgICAgPGxhYmVsQ2hlY2tib3ggbmFtZT0iaXNDbG9zZWQiIHdpZHRoPSIyNTAiIHk9IjgxMCIgeD0iMjcwIiBmb250c2l6ZT0iMTEiIC8+CisgICAgICAgIAorICAgIDwhLS0gMTEwMDpFeGl0IFVSTCAtLT4KKyAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjExMDAiIHdpZHRoPSIyMDAiIHk9Ijg0MCIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPgorICAgICAgICA8Y3VzdG9tRWRpdHRleHQgbmFtZT0icmVkaXJlY3RVUkwiIHk9Ijg0MCIgeD0iMTIwIiB3aWR0aD0iMjcwIiB0ZXh0PSIiIC8+ICAgIAorICAgICAgCisgICAgPCEtLSB0ZXJtaW5hdGlvbiBEZXNjcmlwdGlvbiAtLT4gICAgICAgICAgCisgICAgPHZpZXcgcmVzb3VyY2U9Im1lc3NhZ2Vib3hfaW5mb19yc2MiIHg9IjAiIHk9Ijg3MCIgLz4KKyAgICAKKyAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjExMDIiIHg9IjI0IiB5PSI4NzAiICBmb250c3R5bGU9Iml0YWxpYyIKKyAgICAgICAgICAgICAgIG11bHRpbGluZT0idHJ1ZSIgd2lkdGg9IjM3MCIgLz4gCisgICAgICAgICAgICAgICAgCisgICAgPCEtLSBpc0Nsb3NlZCAtLT4gICAgICAgICAgCisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIxMzU1IiB3aWR0aD0iMjAwIiB5PSI5MTAiIHJlc2l6ZT0iZmFsc2UiIHg9IjIiLz4gIAorICAgICAgICA8bGFiZWxDaGVja2JveCBuYW1lPSJ3YWl0Rm9yUmVjb3JkaW5nIiB3aWR0aD0iMjUwIiB5PSI5MTAiIHg9IjI3MCIgZm9udHNpemU9IjExIiAvPgorIAorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMTM1NiIgd2lkdGg9IjIwMCIgeT0iOTMwIiByZXNpemU9ImZhbHNlIiB4PSIyIiB2aXNpYmlsaXR5PSJoaWRkZW4iIC8+ICAKKyAgICAgICAgPGxhYmVsQ2hlY2tib3ggbmFtZT0iYWxsb3dSZWNvcmRpbmciIHdpZHRoPSIyNTAiIHk9IjkzMCIgeD0iMjcwIiBmb250c2l6ZT0iMTEiIHZpc2liaWxpdHk9ImhpZGRlbiIgLz4KKyAKKyAJCisgCTwhLS0gUm9vbSBMYXlvdXQgb3B0aW9ucyAtLT4KKyAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjE0NDMiIHdpZHRoPSIyNTAiIHk9Ijk1MCIgZm9udHN0eWxlPSJib2xkIgorICAgICAgICAgICAgICAgcmVzaXplPSJmYWxzZSIgeD0iMiIvPiAgCisgCisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIxMzU3IiB3aWR0aD0iMjUwIiB5PSI5OTAiIHJlc2l6ZT0iZmFsc2UiIHg9IjIiIC8+ICAKKyAgICAgICAgPGxhYmVsQ2hlY2tib3ggbmFtZT0iaGlkZVRvcEJhciIgd2lkdGg9IjI3MCIgeT0iOTkwIiB4PSIyNzAiIGZvbnRzaXplPSIxMSIgLz4KKyAgICAgICAgCisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIxNDM2IiB3aWR0aD0iMjUwIiB5PSIxMDEwIiByZXNpemU9ImZhbHNlIiB4PSIyIiAvPiAgCisgICAgICAgIDxsYWJlbENoZWNrYm94IG5hbWU9ImhpZGVDaGF0IiB3aWR0aD0iMjcwIiB5PSIxMDEwIiB4PSIyNzAiIGZvbnRzaXplPSIxMSIgLz4KKyAgICAgICAgCisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIxNDM3IiB3aWR0aD0iMjUwIiB5PSIxMDMwIiByZXNpemU9ImZhbHNlIiB4PSIyIiAvPiAgCisgICAgICAgIDxsYWJlbENoZWNrYm94IG5hbWU9ImhpZGVBY3Rpdml0aWVzQW5kQWN0aW9ucyIgd2lkdGg9IjI1MCIgeT0iMTAzMCIgeD0iMjcwIiBmb250c2l6ZT0iMTEiIC8+CisgICAgICAgIAorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMTQzOCIgd2lkdGg9IjI1MCIgeT0iMTA1MCIgcmVzaXplPSJmYWxzZSIgeD0iMiIgLz4gIAorICAgICAgICA8bGFiZWxDaGVja2JveCBuYW1lPSJoaWRlRmlsZXNFeHBsb3JlciIgd2lkdGg9IjI1MCIgeT0iMTA1MCIgeD0iMjcwIiBmb250c2l6ZT0iMTEiIC8+CisgICAgCisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIxNDM5IiB3aWR0aD0iMjUwIiB5PSIxMDcwIiByZXNpemU9ImZhbHNlIiB4PSIyIiAvPiAgCisgICAgICAgIDxsYWJlbENoZWNrYm94IG5hbWU9ImhpZGVBY3Rpb25zTWVudSIgd2lkdGg9IjI1MCIgeT0iMTA3MCIgeD0iMjcwIiBmb250c2l6ZT0iMTEiIC8+CisgCQorIAk8bGFiZWxUZXh0IGxhYmVsaWQ9IjE0NDAiIHdpZHRoPSIyNTAiIHk9IjEwOTAiIHJlc2l6ZT0iZmFsc2UiIHg9IjIiIC8+ICAKKyAgICAgICAgPGxhYmVsQ2hlY2tib3ggbmFtZT0iaGlkZVNjcmVlblNoYXJpbmciIHdpZHRoPSIyNTAiIHk9IjEwOTAiIHg9IjI3MCIgZm9udHNpemU9IjExIiAvPgorICAgICAgICAKKyAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjE0NDEiIHdpZHRoPSIyNTAiIHk9IjExMTAiIHJlc2l6ZT0iZmFsc2UiIHg9IjIiIC8+ICAKKyAgICAgICAgPGxhYmVsQ2hlY2tib3ggbmFtZT0iaGlkZVdoaXRlYm9hcmQiIHdpZHRoPSIyNTAiIHk9IjExMTAiIHg9IjI3MCIgZm9udHNpemU9IjExIiAvPgorICAgICAKKyAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjE0NDIiIHdpZHRoPSIyNTAiIHk9IjExMzAiIHJlc2l6ZT0iZmFsc2UiIHg9IjIiIC8+ICAKKyAgICAgICAgPGxhYmVsQ2hlY2tib3ggbmFtZT0ic2hvd01pY3JvcGhvbmVTdGF0dXMiIHdpZHRoPSIyNTAiIHk9IjExMzAiIHg9IjI3MCIgZm9udHNpemU9IjExIiAvPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMTUxMyIgd2lkdGg9IjI1MCIgeT0iMTE1MCIgcmVzaXplPSJmYWxzZSIgeD0iMiIgLz4gIAorICAgICAgICA8bGFiZWxDaGVja2JveCBuYW1lPSJjaGF0TW9kZXJhdGVkIiB3aWR0aD0iMjUwIiB5PSIxMTUwIiB4PSIyNzAiIGZvbnRzaXplPSIxMSIgLz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjE1MTUiIHdpZHRoPSIyNTAiIHk9IjExNzAiIHJlc2l6ZT0iZmFsc2UiIHg9IjIiIC8+ICAKKyAgICAgICAgPGxhYmVsQ2hlY2tib3ggbmFtZT0iY2hhdE9wZW5lZCIgd2lkdGg9IjI1MCIgeT0iMTE3MCIgeD0iMjcwIiBmb250c2l6ZT0iMTEiIC8+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisJPGxhYmVsVGV4dCBsYWJlbGlkPSIxNTE2IiB3aWR0aD0iMjUwIiB5PSIxMTkwIiByZXNpemU9ImZhbHNlIiB4PSIyIiAvPiAgCisJCTxsYWJlbENoZWNrYm94IG5hbWU9ImZpbGVzT3BlbmVkIiB3aWR0aD0iMjUwIiB5PSIxMTkwIiB4PSIyNzAiIGZvbnRzaXplPSIxMSIgLz4KKworCTxsYWJlbFRleHQgbGFiZWxpZD0iMTUyOCIgd2lkdGg9IjI1MCIgeT0iMTIxMCIgcmVzaXplPSJmYWxzZSIgeD0iMiIgLz4gIAorCQk8bGFiZWxDaGVja2JveCBuYW1lPSJhdXRvVmlkZW9TZWxlY3QiIHdpZHRoPSIyNTAiIHk9IjEyMTAiIHg9IjI3MCIgZm9udHNpemU9IjExIiAvPgorCisgICAgPCEtLSBSb29tQ2xpZW50IExpc3QgUmlnaHQgU2lkZSAtLT4KKyAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjU4NyIgd2lkdGg9IjMwMCIgeT0iNDAiIHJlc2l6ZT0iZmFsc2UiIAorICAgICAgICAgICAgICAgIHg9IjM5OCIgZm9udHN0eWxlPSJib2xkIiAvPiAgIAorICAgIAorICAgIDxzaW1wbGVUdXJuT3Zlckxpc3QgbmFtZT0iX3R1cm5vdmVybGlzdCIgd2lkdGg9IjMwMCIgbWFpbkJnQ29sb3I9IjB4RkZGRkZGIgorICAgICAgICAgICAgICAgIGhlaWdodD0iMjAwIiB5PSI0MCIgeD0iNDAwIj4KKworICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgICAgICAgICAgdGhpcy5hZGRIZWFkZXJJdGVtKDU4OCwzMCk7CisgICAgICAgICAgICB0aGlzLmFkZEhlYWRlckl0ZW0oNTg5LDIzMCk7CisgICAgICAgICAgICB0aGlzLmFkZEhlYWRlckl0ZW0oNTkwLDIyKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGlja2VkSXRlbSIgYXJncz0ib2JqIj4KKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbmNsaWNrZWRJdGVtIixvYmosb2JqLm9iaik7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgCisgICAgICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImdldFJvb21DbGllbnRzTGlzdEJ5Um9vbUlkIiBmdW5jbmFtZT0iY29uZmVyZW5jZXNlcnZpY2UuZ2V0Um9vbUNsaWVudHNMaXN0QnlSb29tSWQiIAorICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAgICAgIAorICAgICAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBhcmVudC5wYXJlbnQucm9vbXNfaWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZ2V0Um9vbUNsaWVudHNMaXN0QnlSb29tSWQ6ICIsdmFsdWUpOworICAgICAgICAgICAgICAgIC8vdGhpcy5wYXJlbnQuZGVzdHJveSgpOworICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnJlbmRlckNvbnRlbnQodmFsdWUpOworICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8L25ldFJlbW90ZUNhbGxIaWI+IAorICAgICAgICAKKyAgICAgICAgPG1ldGhvZCBuYW1lPSJyZW5kZXJDb250ZW50IiBhcmdzPSJyZWNvcmRzIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgdGhpcy5jbGVhckxpc3QoKTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcmVjb3Jkcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgICAgIG5ldyBsei5yb29tQWRtaW5Sb29tQ2xpZW50TGlzdEl0ZW0odGhpcy5faW5uZXJsaXN0Ll9pbm4uX2lubix7CisgICAgICAgICAgICAgICAgICAgIG9iajpyZWNvcmRzW2ldLAorICAgICAgICAgICAgICAgICAgICByZWQ1X2lkOmksCisgICAgICAgICAgICAgICAgICAgIGxvZ2luOnJlY29yZHNbaV0udXNlcm5hbWUrIigiK3JlY29yZHNbaV0uc3RyZWFtaWQrIikifSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0aGlzLnNlbmRJbml0aWFsV2lkdGhVcGRhdGUoKTsKKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L21ldGhvZD4KKworICAgIDwvc2ltcGxlVHVybk92ZXJMaXN0PgorICAgIAorICAgIDwhLS1Nb2RlcmF0ZWQgLS0+CisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSI4MjkiIHdpZHRoPSIyMDAiIHk9IjI1MCIgcmVzaXplPSJmYWxzZSIgCisgICAgICAgICAgICAgICB4PSI0MDAiIGZvbnRzdHlsZT0iYm9sZCIgLz4gICAKKyAgICAKKyAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjY0MCIgd2lkdGg9IjIwMCIgeT0iMjcwIiByZXNpemU9ImZhbHNlIiB4PSI0MDAiLz4gIAorICAgICAgICA8bGFiZWxDaGVja2JveCBuYW1lPSJpc01vZGVyYXRlZFJvb20iIHdpZHRoPSIyNzAiIHk9IjI3MCIgeD0iNjg4IiBmb250c2l6ZT0iMTEiIC8+CisgICAgCisgICAgPHZpZXcgcmVzb3VyY2U9Im1lc3NhZ2Vib3hfaW5mb19yc2MiIHg9IjQwMCIgeT0iMjkwIiAvPgorICAgIAorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iODIzIiB4PSI0MjQiIHk9IjI5MCIgIGZvbnRzdHlsZT0iaXRhbGljIgorICAgICAgICAgICAgICAgbXVsdGlsaW5lPSJ0cnVlIiB3aWR0aD0iMjcwIiAvPgorICAgICAgICAKKyAgICAKKyAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjgxNiIgd2lkdGg9IjMwMCIgeT0iMzgwIiByZXNpemU9ImZhbHNlIiB4PSI0MDAiLz4gIAorICAgIAorICAgIDwhLS0gMTcyOmFkZCBkZWZhdWx0IG1vZGVyYXRvciAtLT4KKwk8Ymx1ZUJ1dHRvbiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHJlc291cmNlSXRlbT0iZWRpdF9hZGRfcnNjIgorICAgICAgICAJCQl4X2luc2V0UmVzb3VyY2U9IjIiIHlfaW5zZXRSZXNvdXJjZT0iMiIgeT0iMzgwIiB4PSI2ODAiIAorICAgICAgICAJCQl3aWR0aF9pbnNldFJlc291cmNlPSIxNiIgaGVpZ2h0X2luc2V0UmVzb3VyY2U9IjE2IiAgICAKKyAgICAgICAgCQkJb25jbGljaz0idGhpcy5wYXJlbnQuYWRkTW9kZXJhdG9yVG9Sb29tKCkiIC8+ICAgICAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImFkZE1vZGVyYXRvclRvUm9vbSI+CisgICAgICAgIG5ldyBsei5hZGRBdHRlbmRlZShjYW52YXMubWFpbl9jb250ZW50Ll9jb250ZW50LmlubmVyLHsKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzU3VwZXJNb2RlcmF0b3I6dHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsaWQ6ODM1LAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmT2JqOnRoaXMuX2xpc3RSb29tTW9kZXJhdG9ycworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICA8L21ldGhvZD4gICAKKworICAgIDxzaW1wbGVUdXJuT3Zlckxpc3QgbmFtZT0iX2xpc3RSb29tTW9kZXJhdG9ycyIgd2lkdGg9IjMwMCIgbWFpbkJnQ29sb3I9IjB4RkZGRkZGIgorICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIyMDAiIHk9IjM4MiIgeD0iNDAwIj4KKworICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgICAgICAgICAgdGhpcy5hZGRIZWFkZXJJdGVtKDgxNyw1MCk7CisgICAgICAgICAgICB0aGlzLmFkZEhlYWRlckl0ZW0oODE4LDMwKTsKKyAgICAgICAgICAgIHRoaXMuYWRkSGVhZGVySXRlbSg4MTksMTAwKTsKKyAgICAgICAgICAgIHRoaXMuYWRkSGVhZGVySXRlbSg4MjAsODQpOworICAgICAgICAgICAgdGhpcy5hZGRIZWFkZXJJdGVtKDgyNywyMCk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgCisgICAgICAgIDxtZXRob2QgbmFtZT0iZ2V0VmFsdWVzIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHZhciB0QXJyYXkgPSBuZXcgQXJyYXkoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTx0aGlzLl9pbm5lcmxpc3QuX2lubi5faW5uLnN1YnZpZXdzLmxlbmd0aDtpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIHZhciB0T2JqZWN0ID0gbmV3IE9iamVjdCgpOworICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IHRoaXMuX2lubmVybGlzdC5faW5uLl9pbm4uc3Vidmlld3NbaV07CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICB0T2JqZWN0LnJvb21Nb2RlcmF0b3JzSWQgPSBpdGVtLnJvb21Nb2RlcmF0b3JzSWQ7CisgICAgICAgICAgICAgICAgICAgIHRPYmplY3QudXNlcklkID0gaXRlbS51c2VySWQ7CisgICAgICAgICAgICAgICAgICAgIHRPYmplY3QuaXNTdXBlck1vZGVyYXRvciA9IGl0ZW0uaXNTdXBlck1vZGVyYXRvcjsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIHRBcnJheS5wdXNoKHRPYmplY3QpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHJldHVybiB0QXJyYXk7CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9tZXRob2Q+CisgICAgICAgIAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrZWRJdGVtIiBhcmdzPSJvYmoiPgorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9uY2xpY2tlZEl0ZW0iLG9iaixvYmoub2JqKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAKKyAgICAgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iZ2V0Um9vbU1vZGVyYXRvcnNCeVJvb21JZCIgZnVuY25hbWU9ImNvbmZlcmVuY2VzZXJ2aWNlLmdldFJvb21Nb2RlcmF0b3JzQnlSb29tSWQiIAorICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAgCisgICAgICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4gICAgCisgICAgICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQucGFyZW50LnJvb21zX2lkOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZ2V0Um9vbU1vZGVyYXRvcnNCeVJvb21JZDogIix2YWx1ZSk7CisgICAgICAgICAgICAgICAgLy90aGlzLnBhcmVudC5kZXN0cm95KCk7CisgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQucmVuZGVyQ29udGVudCh2YWx1ZSk7CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4gCisgICAgICAgIAorICAgICAgICA8bWV0aG9kIG5hbWU9ImFkZExpc3RJdGVtIiBhcmdzPSJ1c2VySWQsZmlyc3QsbGFzdCxlbWFpbCxzdXBlckFkbWluIj4KKyAgICAgICAgICAgIG5ldyBsei5yb29tTW9kZXJhdG9yc1Jvb21DbGllbnRMaXN0SXRlbSh0aGlzLl9pbm5lcmxpc3QuX2lubi5faW5uLHsKKyAgICAgICAgICAgICAgICAgICAgcm9vbU1vZGVyYXRvcnNJZDowLAorICAgICAgICAgICAgICAgICAgICBvYmo6bnVsbCwKKyAgICAgICAgICAgICAgICAgICAgaXNTdXBlck1vZGVyYXRvcjpzdXBlckFkbWluLAorICAgICAgICAgICAgICAgICAgICB1c2VySWQ6dXNlcklkLAorICAgICAgICAgICAgICAgICAgICBlbWFpbDplbWFpbCwKKyAgICAgICAgICAgICAgICAgICAgdU5hbWU6Zmlyc3QrJyAnK2xhc3QKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHRoaXMuc2VuZEluaXRpYWxXaWR0aFVwZGF0ZSgpOworICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgCisgICAgICAgIDxtZXRob2QgbmFtZT0icmVuZGVyQ29udGVudCIgYXJncz0icmVjb3JkcyI+CisgICAgICAgICAgICA8IVtDREFUQVsKKwkgICAgICAgICAgICB0aGlzLmNsZWFyTGlzdCgpOworICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgIGZvciAodmFyIGkgaW4gcmVjb3Jkcyl7CisJICAgICAgICAgICAgICAgIG5ldyBsei5yb29tTW9kZXJhdG9yc1Jvb21DbGllbnRMaXN0SXRlbSh0aGlzLl9pbm5lcmxpc3QuX2lubi5faW5uLHsKKwkJICAgICAgICAgICAgICAgICAgICByb29tTW9kZXJhdG9yc0lkOnJlY29yZHNbaV0ucm9vbU1vZGVyYXRvcnNJZCwKKwkJICAgICAgICAgICAgICAgICAgICBvYmo6cmVjb3Jkc1tpXSwKKwkJICAgICAgICAgICAgICAgICAgICBpc1N1cGVyTW9kZXJhdG9yOnJlY29yZHNbaV0uaXNTdXBlck1vZGVyYXRvciwKKwkJICAgICAgICAgICAgICAgICAgICB1c2VySWQ6cmVjb3Jkc1tpXS51c2VyLnVzZXJfaWQsCisJCSAgICAgICAgICAgICAgICAgICAgZW1haWw6cmVjb3Jkc1tpXS51c2VyLmFkcmVzc2VzLmVtYWlsLAorCQkgICAgICAgICAgICAgICAgICAgIHVOYW1lOnJlY29yZHNbaV0udXNlci5maXJzdG5hbWUrJyAnK3JlY29yZHNbaV0udXNlci5sYXN0bmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisJICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgIHRoaXMuc2VuZEluaXRpYWxXaWR0aFVwZGF0ZSgpOworICAgICAgICAgICAgXV0+CisgICAgICAgIDwvbWV0aG9kPgorCisgICAgPC9zaW1wbGVUdXJuT3Zlckxpc3Q+ICAgIAorICAgIAorICAgIDwhLS1TSVAgU2V0dGluZ3MgLS0+CisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIxMDAxIiB3aWR0aD0iMjAwIiB5PSI2MDAiIHJlc2l6ZT0iZmFsc2UiIAorICAgICAgICAgICAgICAgeD0iNDAwIiBmb250c3R5bGU9ImJvbGQiIC8+ICAgCisgICAgCisgICAgPHZpZXcgcmVzb3VyY2U9Im1lc3NhZ2Vib3hfaW5mb19yc2MiIHg9IjQwMCIgeT0iNjIwIiAvPgorICAgIAorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMTAwMiIgeD0iNDI0IiB5PSI2MjAiIGZvbnRzdHlsZT0iaXRhbGljIgorICAgICAgICAgICAgICAgbXVsdGlsaW5lPSJ0cnVlIiB3aWR0aD0iMjcwIiAvPiAgIAorICAgICAKKyAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjEwMDMiIHg9IjQwMCIgeT0iNjcwIiB3aWR0aD0iMjcwIiAvPiAKKyAgICAJPGN1c3RvbUVkaXR0ZXh0IG5hbWU9InNpcE51bWJlciIgeD0iNTIwIiB5PSI2NzAiIHdpZHRoPSIxODAiIGVuYWJsZWQ9ImZhbHNlIiAvPiAgCisgICAgICAgICAgICAgICAKKyAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjEwMDQiIHg9IjQwMCIgeT0iNjkyIiB3aWR0aD0iMjcwIiAvPiAgICAgICAgICAgICAgICAgCisgICAgCTxjdXN0b21FZGl0dGV4dCBuYW1lPSJjb25mZXJlbmNlUGluIiB4PSI1MjAiIHk9IjY5MiIgd2lkdGg9IjE4MCIgLz4gICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgCisJPGxhYmVsVGV4dCBsYWJlbGlkPSIxMzA4IiB4PSI0MDAiIHk9IjcyMiIgd2lkdGg9IjI3MCIgLz4gICAgICAgICAgICAgICAgIAorCQk8Y3VzdG9tRWRpdHRleHQgbmFtZT0ib3duZXJJZCIgeD0iNTIwIiB5PSI3MjIiIHdpZHRoPSIxODAiIC8+ICAgICAgCisKKwk8bGFiZWxUZXh0IGxhYmVsaWQ9IjE1MzgiIHg9IjQwMCIgeT0iNzUwIiB3aWR0aD0iMjUwIiAvPiAgICAgICAgICAgICAgICAgCisgICAgICAgIDxsYWJlbENoZWNrYm94IG5hbWU9InNpcEVuYWJsZWQiIHdpZHRoPSIxODAiIHk9Ijc1MCIgeD0iNjg4IiBmb250c2l6ZT0iMTEiIC8+CisKKyAgICA8dmlldyB4PSI0MDAiIHk9IjE0MDAiIC8+ICAgIAorICAgIAorPC9jbGFzcz4KKworPCEtLS0gbGlzdCBvZiBjb25mZXJlbmNlL2F1ZGllbmNlIHJvb21zIC0tPgorPGNsYXNzIG5hbWU9InJvb21BZG1pblJvb21DbGllbnRMaXN0SXRlbSIgZXh0ZW5kcz0iYmFzZUNvbnRlbnRMaXN0SXRlbSI+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJyZWQ1X2lkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibG9naW4iIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImlzcHVibGljIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgICAgCisgICAgPHR1cm5PdmVyVGV4dEl0ZW0gdGV4dD0iJG9uY2V7IHBhcmVudC5yZWQ1X2lkIH0iIHdpZHRoPSI2MCIgLz4KKyAgICA8dHVybk92ZXJUZXh0SXRlbSB0ZXh0PSIkb25jZXsgcGFyZW50LmxvZ2luIH0iIHdpZHRoPSIyMDAiIC8+CisgICAgPHR1cm5PdmVyVGV4dEl0ZW0gd2lkdGg9IjQwIiB0ZXh0PSIiPgorICAgICAgICAKKyAgICA8L3R1cm5PdmVyVGV4dEl0ZW0+CisgICAgCis8L2NsYXNzPgorCis8IS0tLSBsaXN0IG9mIGNvbmZlcmVuY2UvYXVkaWVuY2Ugcm9vbXMgLS0+Cis8Y2xhc3MgbmFtZT0icm9vbUFkbWluT3JnTGlzdEl0ZW0iIGV4dGVuZHM9ImJhc2VDb250ZW50TGlzdEl0ZW0iPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0ib3JnSWQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJvcmdOYW1lIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgICAgCisgICAgPHR1cm5PdmVyVGV4dEl0ZW0gdGV4dD0iJG9uY2V7IHBhcmVudC5vcmdJZCB9IiB3aWR0aD0iNjAiIC8+CisgICAgPHR1cm5PdmVyVGV4dEl0ZW0gdGV4dD0iJG9uY2V7IHBhcmVudC5vcmdOYW1lIH0iIHdpZHRoPSIyMDAiIC8+CisgICAgCisgICAgPHZpZXcgd2lkdGg9IjIwIiBoZWlnaHQ9IjE4IiAKKyAgICAgICAgb25jbGljaz0ibmV3IGx6LmNvbmZpcm1hdGlvblNpbmdsZShjYW52YXMubWFpbl9jb250ZW50Ll9jb250ZW50LmlubmVyLHtyZWZPYmo6dGhpcyxsYWJlbGlkZXJyb3I6ODMzLHNob3dDaGVja0JveDpmYWxzZX0pOyIgPiAgICAgICAKKyAgICAgICAgPG1ldGhvZCBuYW1lPSJzZW5kQ29uZmlybWF0aW9uIj4KKyAgICAgICAgICAgIHRoaXMucGFyZW50LmRlc3Ryb3koKTsKKyAgICAgICAgPC9tZXRob2Q+CisgICAgICAgIDxpbWFnZSBzcmM9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVJbWFnZSgnYnV0dG9uX2NhbmNlbF9yc2MnKSB9IiBhbGlnbj0iY2VudGVyIiB2YWxpZ249Im1pZGRsZSIgLz4KKyAgICAgICAgPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSIyNzQiIC8+CisgICAgPC92aWV3PiAgCisgICAgCis8L2NsYXNzPgorCis8IS0tLSBsaXN0IG9mIGRkZWZhdWx0IG1vZGVyYXRvcnMgcm9vbXMgLS0+Cis8Y2xhc3MgbmFtZT0icm9vbU1vZGVyYXRvcnNSb29tQ2xpZW50TGlzdEl0ZW0iIGV4dGVuZHM9ImJhc2VDb250ZW50TGlzdEl0ZW0iPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0icm9vbU1vZGVyYXRvcnNJZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImlzU3VwZXJNb2RlcmF0b3IiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9Im1vZFJvb21JZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9InVOYW1lIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJ1c2VySWQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJlbWFpbCIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorICAgIAorICAgIDx2aWV3IHdpZHRoPSIyMCIgaGVpZ2h0PSIxOCIgb3BhY2l0eT0iJHsgKHBhcmVudC5pc1N1cGVyTW9kZXJhdG9yKSA/IDEgOiAwLjQgfSIgCisgICAgICAgICAgb25jbGljaz0ibmV3IGx6LmNvbmZpcm1hdGlvblNpbmdsZShjYW52YXMubWFpbl9jb250ZW50Ll9jb250ZW50LmlubmVyLHtyZWZPYmo6dGhpcyxsYWJlbGlkZXJyb3I6KChwYXJlbnQuaXNTdXBlck1vZGVyYXRvcikgPyA4MzcgOiA4MzYpLHNob3dDaGVja0JveDpmYWxzZX0pOyIgPiAgICAgICAKKyAgICAgICAgPG1ldGhvZCBuYW1lPSJzZW5kQ29uZmlybWF0aW9uIj4KKyAgICAgICAgICAgIHRoaXMucGFyZW50LnNldEF0dHJpYnV0ZSgiaXNTdXBlck1vZGVyYXRvciIsIXBhcmVudC5pc1N1cGVyTW9kZXJhdG9yKQorICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgPHZpZXcgcmVzb3VyY2U9InVzZXJfbW9kZXJhdG9yX2xpc3RfYXBwbHlfcnNjIiBhbGlnbj0iY2VudGVyIiB2YWxpZ249Im1pZGRsZSIgLz4KKyAgICAgICAgPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSIkeyAocGFyZW50LnBhcmVudC5pc1N1cGVyTW9kZXJhdG9yKSA/IDgyNiA6IDgyNSB9IiAvPgorICAgIDwvdmlldz4gCisgICAgCisgICAgPHR1cm5PdmVyVGV4dEl0ZW0gdGV4dD0iJG9uY2V7IHBhcmVudC51c2VySWQgfSIgd2lkdGg9IjIwMCIgLz4KKyAgICA8dHVybk92ZXJUZXh0SXRlbSB0ZXh0PSIkb25jZXsgcGFyZW50LnVOYW1lIH0iIHdpZHRoPSIyMDAiIC8+CisgICAgPHR1cm5PdmVyVGV4dEl0ZW0gdGV4dD0iJG9uY2V7IHBhcmVudC5lbWFpbCB9IiB3aWR0aD0iMjAwIiAvPgorICAgIAorICAgIDx2aWV3IHdpZHRoPSIyMCIgaGVpZ2h0PSIxOCIgCisgICAgICAgIG9uY2xpY2s9Im5ldyBsei5jb25maXJtYXRpb25TaW5nbGUoY2FudmFzLm1haW5fY29udGVudC5fY29udGVudC5pbm5lcix7cmVmT2JqOnRoaXMsbGFiZWxpZGVycm9yOjgzMyxzaG93Q2hlY2tCb3g6ZmFsc2V9KTsiID4gICAgICAgCisgICAgICAgIDxtZXRob2QgbmFtZT0ic2VuZENvbmZpcm1hdGlvbiI+CisgICAgICAgICAgICB0aGlzLnBhcmVudC5kZXN0cm95KCk7CisgICAgICAgIDwvbWV0aG9kPgorICAgICAgICA8aW1hZ2Ugc3JjPSIkb25jZXsgY2FudmFzLmdldFRoZW1lSW1hZ2UoJ2J1dHRvbl9jYW5jZWxfcnNjJykgfSIKKyAgICAgICAgCQkgYWxpZ249ImNlbnRlciIgdmFsaWduPSJtaWRkbGUiIC8+CisgICAgICAgIDxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iMjc0IiAvPgorICAgIDwvdmlldz4gICAgCisgICAgCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2FkbWluL3NlcnZlcnMvbGlicmFyeS5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2FkbWluL3NlcnZlcnMvbGlicmFyeS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Q0OWMwOQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvYWRtaW4vc2VydmVycy9saWJyYXJ5Lmx6eApAQCAtMCwwICsxLDI2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPGxpYnJhcnk+DQorICAgIDxpbmNsdWRlIGhyZWY9InNlcnZlcnNBZG1pbi5sengiIC8+DQorICAgIDxpbmNsdWRlIGhyZWY9InNlcnZlckFkbWluVmFsdWVGb3JtLmx6eCIgLz4NCisgICAgPGluY2x1ZGUgaHJlZj0ic2VydmVyQWRtaW5MaXN0SXRlbS5sengiIC8+DQorICAgIDxpbmNsdWRlIGhyZWY9InNlcnZlckNvbWJvYm94Lmx6eCIgLz4NCis8L2xpYnJhcnk+DQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi9zZXJ2ZXJzL3NlcnZlckFkbWluTGlzdEl0ZW0ubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi9zZXJ2ZXJzL3NlcnZlckFkbWluTGlzdEl0ZW0ubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzMTIwNmYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2FkbWluL3NlcnZlcnMvc2VydmVyQWRtaW5MaXN0SXRlbS5sengKQEAgLTAsMCArMSwyOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+DQorPCEtLQ0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAgDQorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICAgIAkgIA0KKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICB1bmRlciB0aGUgTGljZW5zZS4NCisgIA0KKy0tPg0KKzxsaWJyYXJ5Pg0KKwk8IS0tLSBFeGlzdGluZyB1c2VyIGxpc3QuIHVzZWQgYnkgdXNlckFkbWluIG9ubHkgLS0+DQorCTxjbGFzcyBuYW1lPSJzZXJ2ZXJBZG1pbkxpc3RJdGVtIiBleHRlbmRzPSJiYXNlQ29udGVudExpc3RJdGVtIj4NCisJCTx0dXJuT3ZlclRleHRJdGVtIHRleHQ9IiRvbmNleyBwYXJlbnQub2JqLmlkIH0iIHdpZHRoPSI2MCIgLz4NCisJCTx0dXJuT3ZlclRleHRJdGVtIHRleHQ9IiRvbmNleyBwYXJlbnQub2JqLm5hbWUgfSIgd2lkdGg9IjEzMiIgLz4NCisJCTx0dXJuT3ZlclRleHRJdGVtIHRleHQ9IiRvbmNleyBwYXJlbnQub2JqLmFkZHJlc3MgfSIgd2lkdGg9IjEzMiIgLz4NCisJCTx0dXJuT3ZlclRleHRJdGVtIHRleHQ9IiRvbmNleyBwYXJlbnQub2JqLmxhc3RQaW5nIH0iIHdpZHRoPSIxMDAiIC8+DQorCTwvY2xhc3M+DQorPC9saWJyYXJ5Pg0KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvYWRtaW4vc2VydmVycy9zZXJ2ZXJBZG1pblZhbHVlRm9ybS5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2FkbWluL3NlcnZlcnMvc2VydmVyQWRtaW5WYWx1ZUZvcm0ubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3NTA3MGEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2FkbWluL3NlcnZlcnMvc2VydmVyQWRtaW5WYWx1ZUZvcm0ubHp4CkBAIC0wLDAgKzEsMTUyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPGxpYnJhcnk+DQorCTwhLS0tIFVzZXIgUHJvZmlsZSBlZGl0IHBhbmVsIGluIHRoZSB1c2VyYWRtaW4gbGVmdGJsb2NrLiBQcml2YXRlIGNsYXNzIG9ubHkgZm9yIHVzZXJhZG1pbiAtLT4NCisJPGNsYXNzIG5hbWU9InNlcnZlckFkbWluVmFsdWVGb3JtIiBleHRlbmRzPSJiYXNlQ29udGVudFNhdmVWaWV3Ij4NCisJCTxhdHRyaWJ1dGUgbmFtZT0ic2VydmVyX2lkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPg0KKwkJDQorCQk8aGFuZGxlciBuYW1lPSJvbnNhdmVjb21wbGV0ZWQiID4NCisJCQkvL3RoaXMuZ2V0VXNlckJ5SWQuZG9DYWxsKCk7DQorCQk8L2hhbmRsZXI+DQorCQkNCisJCTxoYW5kbGVyIG5hbWU9Im9ucmVsb2FkIiA+DQorCQkJaWYgKHRoaXMuc2VydmVyX2lkICE9IDApIHsNCisJCQkJLy90aGlzLmdldFVzZXJCeUlkLmRvQ2FsbCgpOw0KKwkJCX0NCisJCTwvaGFuZGxlcj4JDQorCQ0KKwkJPGhhbmRsZXIgbmFtZT0ib25uZXciPg0KKwkJCXRoaXMuc2VydmVyX2lkID0gMDsNCisJCQl0aGlzLnNlcnZlck5hbWUuc2V0QXR0cmlidXRlKCd0ZXh0JywgJycpOw0KKwkJCXRoaXMuaXAuc2V0QXR0cmlidXRlKCd0ZXh0JywgJycpOw0KKwkJCXRoaXMubGFzdFBpbmcuc2V0QXR0cmlidXRlKCd0ZXh0JywnJyk7DQorCQkJdGhpcy5jb21tZW50LnNldEF0dHJpYnV0ZSgndGV4dCcsJycpOw0KKwkJCXRoaXMucG9ydC5zZXRBdHRyaWJ1dGUoJ3RleHQnLCcnKTsNCisJCQl0aGlzLnVzZXIuc2V0QXR0cmlidXRlKCd0ZXh0JywnJyk7DQorCQkJdGhpcy5wYXNzLnNldEF0dHJpYnV0ZSgndGV4dCcsJycpOw0KKwkJCXRoaXMud2ViYXBwLnNldEF0dHJpYnV0ZSgndGV4dCcsJ29wZW5tZWV0aW5ncycpOw0KKwkJCXRoaXMucHJvdG9jb2wuc2V0QXR0cmlidXRlKCd0ZXh0JywnaHR0cCcpOw0KKwkJCXRoaXMuYWN0aXZlLnNldFZhbHVlKHRydWUpOw0KKwkJPC9oYW5kbGVyPg0KKwkJDQorCSAgICA8aGFuZGxlciBuYW1lPSJvbmRlbGV0ZSIgPg0KKwkJPCFbQ0RBVEFbDQorCQkJaWYgKHRoaXMuc2VydmVyX2lkICE9IDApIHsNCisJCQkJdmFyIGRoID0gbmV3IGx6LmRhdGFzZXRIZWxwZXIocGFyZW50Ll90dXJub3Zlcmxpc3QpOw0KKwkJCQlkaC5zZXRTZXJ2aWNlU291cmNlKCdTZXJ2ZXJTZXJ2aWNlL2RlbGV0ZVNlcnZlcicsIHtpZDogdGhpcy5zZXJ2ZXJfaWR9KTsNCisJCQkJZGguc3VjY2Vzc0hhbmRsZXIgPSBwYXJlbnQuX3R1cm5vdmVybGlzdC5sb2FkU2VydmVyc0RhdGE7DQorCQkJCWRoLmNhbGwoKTsNCisJCQkJDQorCQkJCXRoaXMuc2VydmVyX2lkID0gMDsNCisJCQl9DQorCQldXT4NCisJICAgIDwvaGFuZGxlcj4NCisJICAgIA0KKwkgICAgPG1ldGhvZCBuYW1lPSJpbml0QnlPYmplY3QiIGFyZ3M9InNlcnZlciI+DQorICAgIAkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImluaXRCeU9iamVjdCBzZXJ2ZXIgIiwgc2VydmVyKTsNCisJCQl0aGlzLnNlcnZlcl9pZCA9IHNlcnZlci5pZDsNCisJCQl0aGlzLnNlcnZlck5hbWUuc2V0QXR0cmlidXRlKCd0ZXh0Jywgc2VydmVyLm5hbWUpOw0KKwkJCXRoaXMuaXAuc2V0QXR0cmlidXRlKCd0ZXh0Jywgc2VydmVyLmFkZHJlc3MpOw0KKwkJCXRoaXMubGFzdFBpbmcuc2V0QXR0cmlidXRlKCd0ZXh0Jywgc2VydmVyLmxhc3RQaW5nKTsNCisJCQl0aGlzLmNvbW1lbnQuc2V0QXR0cmlidXRlKCd0ZXh0Jywgc2VydmVyLmNvbW1lbnQpOw0KKwkJCXRoaXMuY29tbWVudC5zZXRBdHRyaWJ1dGUoJ3RleHQnLCBzZXJ2ZXIuY29tbWVudCk7DQorCQkJdGhpcy5wb3J0LnNldEF0dHJpYnV0ZSgndGV4dCcsIHNlcnZlci5wb3J0KTsNCisJCQl0aGlzLnVzZXIuc2V0QXR0cmlidXRlKCd0ZXh0Jywgc2VydmVyLnVzZXIpOw0KKwkJCXRoaXMucGFzcy5zZXRBdHRyaWJ1dGUoJ3RleHQnLCBzZXJ2ZXIucGFzcyk7DQorCQkJdGhpcy53ZWJhcHAuc2V0QXR0cmlidXRlKCd0ZXh0Jywgc2VydmVyLndlYmFwcCk7DQorCQkJdGhpcy5wcm90b2NvbC5zZXRBdHRyaWJ1dGUoJ3RleHQnLCBzZXJ2ZXIucHJvdG9jb2wpOw0KKwkJCWlmIChzZXJ2ZXIuYWN0aXZlID09ICJ0cnVlIikgew0KKwkJCQl0aGlzLmFjdGl2ZS5zZXRWYWx1ZSh0cnVlKTsNCisJCQl9IGVsc2Ugew0KKwkJCQl0aGlzLmFjdGl2ZS5zZXRWYWx1ZShmYWxzZSk7DQorCQkJfQ0KKwkgICAgPC9tZXRob2Q+DQorCSAgICANCisJICAgIDxtZXRob2QgbmFtZT0iZG9TYXZlRXZlbnQiPg0KKwkJPCFbQ0RBVEFbDQorCQkJdmFyIGRoID0gbmV3IGx6LmRhdGFzZXRIZWxwZXIodGhpcyk7DQorCQkJZGguc2V0U2VydmljZVNvdXJjZSgnU2VydmVyU2VydmljZS9zYXZlU2VydmVyJywgew0KKwkJCQkJCQkJCWlkOiB0aGlzLnNlcnZlcl9pZCwgDQorCQkJCQkJCQkJbmFtZTogdGhpcy5zZXJ2ZXJOYW1lLmdldFRleHQoKSwgDQorCQkJCQkJCQkJYWRkcmVzczogdGhpcy5pcC5nZXRUZXh0KCksIA0KKwkJCQkJCQkJCXBvcnQ6IHRoaXMucG9ydC5nZXRUZXh0KCksDQorCQkJCQkJCQkJdXNlcjogdGhpcy51c2VyLmdldFRleHQoKSwNCisJCQkJCQkJCQlwYXNzOiB0aGlzLnBhc3MuZ2V0VGV4dCgpLCANCisJCQkJCQkJCQl3ZWJhcHA6IHRoaXMud2ViYXBwLmdldFRleHQoKSwgDQorCQkJCQkJCQkJcHJvdG9jb2w6IHRoaXMucHJvdG9jb2wuZ2V0VGV4dCgpLCANCisJCQkJCQkJCQlhY3RpdmU6IHRoaXMuYWN0aXZlLmdldFZhbHVlKCksDQorCQkJCQkJCQkJY29tbWVudDogdGhpcy5jb21tZW50LmdldFRleHQoKSB9KTsNCisJCQlkaC5zdWNjZXNzSGFuZGxlciA9IGdldFNhdmVkSWQ7DQorCQkJZGguY2FsbCgpOw0KKwkJXV0+DQorCSAgICA8L21ldGhvZD4NCisJICAgIA0KKwkJPG1ldGhvZCBuYW1lPSJnZXRTYXZlZElkIiBhcmdzPSJwLGQiPg0KKyAgICAJPCFbQ0RBVEFbDQorICAgIAkJdmFyIHNpZCA9IGQuZ2V0UG9pbnRlcigpLnhwYXRoUXVlcnkoJy9zYXZlU2VydmVyUmVzcG9uc2UvcmV0dXJuL3RleHQoKScpOw0KKwkJCXAuc2VydmVyX2lkID0gaXNOYU4oTnVtYmVyKHNpZCkpID8gMCA6IE51bWJlcihzaWQpOw0KKwkJCQ0KKwkJCXAucGFyZW50Ll90dXJub3Zlcmxpc3QubG9hZFNlcnZlcnNEYXRhKHAucGFyZW50Ll90dXJub3Zlcmxpc3QpOw0KKyAgICAJXV0+DQorCQk8L21ldGhvZD4NCisJCQ0KKwkgICAgPCEtLSBjb250ZW50IC0tPg0KKwkgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIxNTAyIiB3aWR0aD0iMjAwIiB5PSI0MCIgcmVzaXplPSJmYWxzZSIgZm9udHN0eWxlPSJib2xkIiAvPg0KKwkgICAgDQorCSAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjE1MDAiIHdpZHRoPSIyMDAiIHk9IjcwIiByZXNpemU9ImZhbHNlIiB4PSIyIi8+DQorICAgICAgICAJPGN1c3RvbUVkaXR0ZXh0IG5hbWU9InNlcnZlck5hbWUiIHk9IjcwIiB4PSIxMjAiIHdpZHRoPSIyNzAiIC8+DQorICAgICAgICAJDQorICAgICAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjE1MjUiIHdpZHRoPSIyMDAiIHk9IjEwMCIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPg0KKyAgICAgICAgCTxsYWJlbENoZWNrYm94IG5hbWU9ImFjdGl2ZSIgd2lkdGg9IjI3MCIgeT0iMTAwIiB4PSIxMjAiIGZvbnRzaXplPSIxMSIgLz4gIA0KKyAgICAgICAgDQorICAgICAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjE1MDEiIHdpZHRoPSIyMDAiIHk9IjEzMCIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPg0KKyAgICAgICAgCTxjdXN0b21FZGl0dGV4dCBuYW1lPSJpcCIgeT0iMTMwIiB4PSIxMjAiIHdpZHRoPSIyNzAiIC8+DQorICAgICAgICAJDQorICAgICAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjE1MTkiIHdpZHRoPSIyMDAiIHk9IjE2MCIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPg0KKyAgICAgICAgCTxjdXN0b21FZGl0dGV4dCBuYW1lPSJwb3J0IiByZWdleHBUeXBlPSJudW1iZXIiIHk9IjE2MCIgeD0iMTIwIiB3aWR0aD0iMjcwIiAvPg0KKyAgICAgICAgCQ0KKyAgICAgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIxNTIwIiB3aWR0aD0iMjAwIiB5PSIxOTAiIHJlc2l6ZT0iZmFsc2UiIHg9IjIiLz4NCisgICAgICAgIAk8Y3VzdG9tRWRpdHRleHQgbmFtZT0idXNlciIgeT0iMTkwIiB4PSIxMjAiIHdpZHRoPSIyNzAiIC8+DQorICAgICAgICAJDQorICAgICAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjE1MjEiIHdpZHRoPSIyMDAiIHk9IjIyMCIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPg0KKyAgICAgICAgCTxjdXN0b21FZGl0dGV4dCBuYW1lPSJwYXNzIiBwYXNzd29yZD0idHJ1ZSIgeT0iMjIwIiB4PSIxMjAiIHdpZHRoPSIyNzAiIC8+DQorICAgICAgICAJDQorICAgICAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjE1MjIiIHdpZHRoPSIyMDAiIHk9IjI1MCIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPg0KKyAgICAgICAgCTxjdXN0b21FZGl0dGV4dCBuYW1lPSJ3ZWJhcHAiIHk9IjI1MCIgeD0iMTIwIiB3aWR0aD0iMjcwIiAvPg0KKyAgICAgICAgCQ0KKyAgICAgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIxNTIzIiB3aWR0aD0iMjAwIiB5PSIyODAiIHJlc2l6ZT0iZmFsc2UiIHg9IjIiLz4NCisgICAgICAgIAk8Y3VzdG9tRWRpdHRleHQgbmFtZT0icHJvdG9jb2wiIHk9IjI4MCIgeD0iMTIwIiB3aWR0aD0iMjcwIiAvPgkNCisgICAgICAgIAkNCisJICAgIDx2aWV3IHJlc291cmNlPSJtZXNzYWdlYm94X2luZm9fcnNjIiB4PSIyIiB5PSIzMTAiIC8+DQorCSAgICANCisJICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMTUxOCIgeD0iMjQiIHk9IjMxMCIgIGZvbnRzdHlsZT0iaXRhbGljIg0KKwkgICAgICAgICAgICAgICBtdWx0aWxpbmU9InRydWUiIHdpZHRoPSIzNzAiIC8+DQorICAgICAgICAJDQorICAgICAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjE1MTciIHdpZHRoPSIyMDAiIHk9IjM2MCIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPg0KKyAgICAgICAgCTxsYWJlbFRleHQgbmFtZT0ibGFzdFBpbmciIHk9IjM2MCIgeD0iMTIwIiB3aWR0aD0iMjcwIiAvPg0KKyAgICAgICAgCQ0KKwkgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIyNzAiIHdpZHRoPSIyMDAiIHk9IjM4MCIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPg0KKwkgICAgICAgIDxjdXN0b21TY3JvbGxFZGl0dGV4dCBuYW1lPSJjb21tZW50IiB5PSIzODAiIHg9IjEyMCIgd2lkdGg9IjI3MCIgDQorCSAgICAgICAgICAgIGhlaWdodD0iMTAwIiB0ZXh0PSIiIC8+ICAgIA0KKyAgICAgICAgCQ0KKwk8L2NsYXNzPg0KKwkNCis8L2xpYnJhcnk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi9zZXJ2ZXJzL3NlcnZlckNvbWJvYm94Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvYWRtaW4vc2VydmVycy9zZXJ2ZXJDb21ib2JveC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjVkNTI2YQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvYWRtaW4vc2VydmVycy9zZXJ2ZXJDb21ib2JveC5sengKQEAgLTAsMCArMSw3OSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+DQorPCEtLQ0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAgDQorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICAgIAkgIA0KKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICB1bmRlciB0aGUgTGljZW5zZS4NCisgIA0KKy0tPg0KKzxsaWJyYXJ5Pg0KKzxjbGFzcyBuYW1lPSJzZXJ2ZXJDb21ib2JveCIgZXh0ZW5kcz0icmVzZXRDb21ib2JveCIgIHNob3duaXRlbXM9IjE1Ij4NCisJPGF0dHJpYnV0ZSBuYW1lPSJzZXJ2ZXJDb3VudCIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0iMCIgLz4NCisJPGF0dHJpYnV0ZSBuYW1lPSJmaXJzdEl0ZW0iIHR5cGU9Im51bWJlciIgdmFsdWU9IjAiIC8+DQorCTxhdHRyaWJ1dGUgbmFtZT0iaWRUb1NlbGVjdCIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0iMCIgLz4NCisNCisJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4NCisJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzZXJ2ZXJDb21ib2JveDo6b25pbml0ICIpOw0KKwkJdmFyIGRoID0gbmV3IGx6LmRhdGFzZXRIZWxwZXIodGhpcyk7DQorCQlkaC5zZXRTZXJ2aWNlU291cmNlKCdTZXJ2ZXJTZXJ2aWNlL2dldFNlcnZlcnMnLCB7c3RhcnQ6IDAsIG1heDogOTk5OX0pOw0KKwkJZGguc3VjY2Vzc0hhbmRsZXIgPSBwcm9jZXNzU2VydmVyczsNCisJCWRoLmNhbGwoKTsNCisJPC9oYW5kbGVyPg0KKwkNCisJPG1ldGhvZCBuYW1lPSJwcm9jZXNzU2VydmVycyIgYXJncz0icCxkIj4NCisJPCFbQ0RBVEFbDQorICAgCQl2YXIgZHAgPSBkLmdldFBvaW50ZXIoKTsNCisJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJwcm9jZXNzU2VydmVyczogZHAgLT4gIiwgZHApOw0KKwkJcC5zZXJ2ZXJDb3VudCA9IGRwLnhwYXRoUXVlcnkoJy9nZXRTZXJ2ZXJzUmVzcG9uc2UvcmV0dXJuL2xhc3QoKScpOw0KKwkJcC5zZXJ2ZXJDb3VudCA9IHAuc2VydmVyQ291bnQgPT0gbnVsbCA/IDAgOiBwLnNlcnZlckNvdW50Ow0KKwkJDQorCQl2YXIgc2VydmVycyA9IG5ldyBBcnJheSgpOw0KKyAgICAJaWYgKHAuc2VydmVyQ291bnQgPiAxKSB7DQorCSAgICAJLy9zZXJ2ZXJzID09IEFycmF5IGluIGNhc2UgPiAxIG9yIGp1c3Qgc2VydmVyDQorCSAgICAJZm9yICh2YXIgaSA9IDE7IGkgPD0gcC5zZXJ2ZXJDb3VudDsgKytpKSB7DQorCSAgICAJCXAuYWRkU2VydmVyKGRwLCBpLCBzZXJ2ZXJzKTsNCisJICAgIAl9DQorCSAgICB9IGVsc2UgaWYgKHAuc2VydmVyQ291bnQgPiAwKSB7DQorCSAgICAJcC5hZGRTZXJ2ZXIoZHAsIC0xLCBzZXJ2ZXJzKTsNCisJICAgIH0NCisJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJwcm9jZXNzU2VydmVyczogc2VydmVycyAtPiAiLCBzZXJ2ZXJzKTsNCisJCXAucmVzZXQoKTsNCisgICAgCWZvciAodmFyIGkgPSAwOyBpIDwgc2VydmVycy5sZW5ndGg7ICsraSkgew0KKyAgICAJCXAuYWRkSXRlbShzZXJ2ZXJzW2ldLm5hbWUsIHNlcnZlcnNbaV0udmFsdWUpOw0KKyAgICAJfQ0KKwkJDQorCQlpZiAocC5pZFRvU2VsZWN0ICE9IDApIHsNCisJCQlwLnNlbGVjdEl0ZW0ocC5pZFRvU2VsZWN0KTsNCisJCQlwLmlkVG9TZWxlY3QgPSAwOw0KKwkJfSBlbHNlIHsNCisJCQlwLnNlbGVjdEl0ZW0ocC5maXJzdEl0ZW0pOw0KKwkJfQ0KKwkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInByb2Nlc3NTZXJ2ZXJzOiBwIC0+ICIsIHApOw0KKwldXT4NCisJPC9tZXRob2Q+DQorDQorCTxtZXRob2QgbmFtZT0iYWRkU2VydmVyIiBhcmdzPSJkcCwgaSwgc2VydmVycyI+DQorICAgCTwhW0NEQVRBWw0KKwkJdmFyIGJhc2VQYXRoID0gJy9nZXRTZXJ2ZXJzUmVzcG9uc2UvcmV0dXJuJyArIChpID4gLTEgPyAnWycgKyBpICsgJ10nIDogJycpICsgJy8nOw0KKwkJdmFyIHNpZCA9IGRwLnhwYXRoUXVlcnkoYmFzZVBhdGggKyAnaWQvdGV4dCgpJyk7DQorCQlzZXJ2ZXJzW3NlcnZlcnMubGVuZ3RoXSA9IHtuYW1lOiBkcC54cGF0aFF1ZXJ5KGJhc2VQYXRoICsgJ25hbWUvdGV4dCgpJyksIHZhbHVlOiBzaWR9Ow0KKwkJaWYgKHRoaXMuZmlyc3RJdGVtID09IDApIHsNCisJCQl0aGlzLmZpcnN0SXRlbSA9IHNpZDsNCisJCX0NCisgICAJXV0+DQorCTwvbWV0aG9kPg0KKzwvY2xhc3M+DQorDQorPC9saWJyYXJ5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvYWRtaW4vc2VydmVycy9zZXJ2ZXJzQWRtaW4ubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi9zZXJ2ZXJzL3NlcnZlcnNBZG1pbi5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDM0MmQyYQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvYWRtaW4vc2VydmVycy9zZXJ2ZXJzQWRtaW4ubHp4CkBAIC0wLDAgKzEsMTE5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPGxpYnJhcnk+DQorCTxjbGFzcyBuYW1lPSJzZXJ2ZXJzQWRtaW4iIGV4dGVuZHM9ImJhc2VDb250ZW50VmlldyI+DQorCQk8dHVybk92ZXJMaXN0IG5hbWU9Il90dXJub3Zlcmxpc3QiIHdpZHRoPSI0NDAiDQorCQkJaGVpZ2h0PSIkeyBjYW52YXMuaGVpZ2h0IC0gY2FudmFzLm5hdmlIZWlnaHQgLSAzMCB9IiB4PSIyIg0KKwkJCW9yZGVyYnk9InNlcnZlcl9pZCIgc3RlcD0iNTAiIGFzYz0idHJ1ZSI+DQorCQkJDQorCQkJPG1ldGhvZCBuYW1lPSJnZXRTZXJ2ZXJDb3VudCIgYXJncz0icCxkIj4NCisJICAgIAk8IVtDREFUQVsNCisJICAgIAkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImdldFNlcnZlckNvdW50OjpwICIsIHApOw0KKwkJCQl2YXIgcmVjb3JkcyA9IGQuZ2V0UG9pbnRlcigpLnhwYXRoUXVlcnkoJ2dldFNlcnZlckNvdW50UmVzcG9uc2UvcmV0dXJuL3RleHQoKScpOw0KKwkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgicmVjb3JkcyAiLCByZWNvcmRzKTsNCisJCQkJcGFyZW50LmluaXRWYWx1ZXMocmVjb3Jkcyk7DQorDQorCQkJCXZhciBkaCA9IG5ldyBsei5kYXRhc2V0SGVscGVyKHApOw0KKwkJCQlkaC5zZXRTZXJ2aWNlU291cmNlKCdTZXJ2ZXJTZXJ2aWNlL2dldFNlcnZlcnMnLCB7c3RhcnQ6IHAuc3RhcnQsIG1heDogcC5zdGVwfSk7DQorCQkJCWRoLnN1Y2Nlc3NIYW5kbGVyID0gcC5yZW5kZXJDb250ZW50Ow0KKwkJCQlkaC5jYWxsKCk7DQorCSAgICAJXV0+DQorCQkJPC9tZXRob2Q+DQorCQkJDQorCQkJPG1ldGhvZCBuYW1lPSJsb2FkU2VydmVyc0RhdGEiIGFyZ3M9InAiPg0KKwkgICAgCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgibG9hZFNlcnZlcnNEYXRhOjpwICIsIHApOw0KKwkJCQl2YXIgZGggPSBuZXcgbHouZGF0YXNldEhlbHBlcihwKTsNCisJCQkJZGguc2V0U2VydmljZVNvdXJjZSgnU2VydmVyU2VydmljZS9nZXRTZXJ2ZXJDb3VudCcpOw0KKwkJCQlkaC5zdWNjZXNzSGFuZGxlciA9IHAuZ2V0U2VydmVyQ291bnQ7DQorCQkJCWRoLmNhbGwoKTsNCisJCQk8L21ldGhvZD4NCisJCQ0KKwkJCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+DQorCQkJCXRoaXMuYWRkSGVhZGVySXRlbSgxODgsIDYwKTsNCisJCQkJdGhpcy5hZGRIZWFkZXJJdGVtKDE1MDAsIDEzMik7DQorCQkJCXRoaXMuYWRkSGVhZGVySXRlbSgxNTAxLCAxMzIpOw0KKwkJCQl0aGlzLmFkZEhlYWRlckl0ZW0oMTUxNywgMTAwKTsNCisJCQkJbG9hZFNlcnZlcnNEYXRhKHRoaXMpOw0KKwkJCTwvaGFuZGxlcj4NCisNCisJCQk8aGFuZGxlciBuYW1lPSJvbmNhbGxuZXh0Ij4NCisJCQkJbG9hZFNlcnZlcnNEYXRhKHRoaXMpOw0KKwkJCTwvaGFuZGxlcj4NCisNCisJCQk8aGFuZGxlciBuYW1lPSJvbmNhbGxwcmUiPg0KKwkJCQlsb2FkU2VydmVyc0RhdGEodGhpcyk7DQorCQkJPC9oYW5kbGVyPg0KKw0KKwkJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2tlZEl0ZW0iIGFyZ3M9Im9iaiI+DQorCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbmNsaWNrZWRJdGVtIixvYmosb2JqLm9iaik7DQorCQkJCXBhcmVudC5fc2VydmVyQWRtaW5WYWx1ZUZvcm0uaGlkZU5ld1JlY29yZFRleHQoKTsNCisJCQkJcGFyZW50Ll9zZXJ2ZXJBZG1pblZhbHVlRm9ybS5pbml0QnlPYmplY3Qob2JqLm9iaik7DQorCQkJPC9oYW5kbGVyPg0KKw0KKwkJCTxtZXRob2QgbmFtZT0iYWRkU2VydmVyIiBhcmdzPSJkcCxpIj4NCisJICAgIAk8IVtDREFUQVsNCisJICAgIAkJdmFyIGJhc2VQYXRoID0gJ2dldFNlcnZlcnNSZXNwb25zZS9yZXR1cm4nICsgKGkgPiAtMSA/ICdbJyArIGkgKyAnXScgOiAnJykgKyAnLyc7DQorCSAgICAJCXZhciBzID0ge2lkOiBkcC54cGF0aFF1ZXJ5KGJhc2VQYXRoICsgJ2lkL3RleHQoKScpDQorICAgIAkJCQksIG5hbWU6IGRwLnhwYXRoUXVlcnkoYmFzZVBhdGggKyAnbmFtZS90ZXh0KCknKQ0KKyAgICAJCQkJLCBhZGRyZXNzOiBkcC54cGF0aFF1ZXJ5KGJhc2VQYXRoICsgJ2FkZHJlc3MvdGV4dCgpJykNCisgICAgCQkJCSwgcG9ydDogZHAueHBhdGhRdWVyeShiYXNlUGF0aCArICdwb3J0L3RleHQoKScpDQorICAgIAkJCQksIHVzZXI6IGRwLnhwYXRoUXVlcnkoYmFzZVBhdGggKyAndXNlci90ZXh0KCknKQ0KKyAgICAJCQkJLCBwYXNzOiBkcC54cGF0aFF1ZXJ5KGJhc2VQYXRoICsgJ3Bhc3MvdGV4dCgpJykNCisgICAgCQkJCSwgd2ViYXBwOiBkcC54cGF0aFF1ZXJ5KGJhc2VQYXRoICsgJ3dlYmFwcC90ZXh0KCknKQ0KKyAgICAJCQkJLCBwcm90b2NvbDogZHAueHBhdGhRdWVyeShiYXNlUGF0aCArICdwcm90b2NvbC90ZXh0KCknKQ0KKyAgICAJCQkJLCBwaW5nUnVubmluZzogZHAueHBhdGhRdWVyeShiYXNlUGF0aCArICdwaW5nUnVubmluZy90ZXh0KCknKQ0KKyAgICAJCQkJLCBsYXN0UGluZzogZHAueHBhdGhRdWVyeShiYXNlUGF0aCArICdsYXN0UGluZy90ZXh0KCknKQ0KKyAgICAJCQkJLCBhY3RpdmU6IGRwLnhwYXRoUXVlcnkoYmFzZVBhdGggKyAnYWN0aXZlL3RleHQoKScpDQorICAgIAkJCQksIGNvbW1lbnQ6IGRwLnhwYXRoUXVlcnkoYmFzZVBhdGggKyAnY29tbWVudC90ZXh0KCknKQ0KKyAgICAJCQkJfTsNCisJICAgIAkJdmFyIGxpID0gbmV3IGx6LnNlcnZlckFkbWluTGlzdEl0ZW0odGhpcy5faW5uZXJsaXN0Ll9pbm4uX2lubiwge29iajogc30pOw0KKwkJICAgIAlpZiAocGFyZW50Ll9zZXJ2ZXJBZG1pblZhbHVlRm9ybS5zZXJ2ZXJfaWQgPT0gMCkgew0KKyAgICAJCQkJcGFyZW50Ll9zZXJ2ZXJBZG1pblZhbHVlRm9ybS5pbml0QnlPYmplY3Qocyk7DQorCQkgICAgCX0NCisJICAgIAldXT4NCisJCQk8L21ldGhvZD4NCisJCQkNCisJCQk8bWV0aG9kIG5hbWU9InJlbmRlckNvbnRlbnQiIGFyZ3M9InAsZCI+DQorCSAgICAJPCFbQ0RBVEFbDQorCSAgICAJCXZhciBkcCA9IGQuZ2V0UG9pbnRlcigpOw0KKwkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZHAgIiwgZHApOw0KKwkJICAgIAlwLmNsZWFyTGlzdCgpOw0KKwkJICAgIAlpZiAocC5yZWNvcmRzID4gMSkgew0KKwkJCSAgICAJLy9zZXJ2ZXJzID09IEFycmF5IGluIGNhc2UgPiAxIG9yIGp1c3Qgc2VydmVyDQorCQkJICAgIAlmb3IgKHZhciBpID0gMTsgaSA8PSBNYXRoLm1pbihwLnJlY29yZHMgLSBwLnN0YXJ0LCBwLnN0ZXApOyArK2kpIHsNCisJCQkgICAgCQlwLmFkZFNlcnZlcihkcCwgaSk7DQorCQkJICAgIAl9DQorCQkJICAgIH0gZWxzZSBpZiAocC5yZWNvcmRzID4gMCkgew0KKwkJCSAgICAJcC5hZGRTZXJ2ZXIoZHAsIC0xKTsNCisJCQkgICAgfQ0KKwkgICAgICAgICAgICBwLnNlbmRJbml0aWFsV2lkdGhVcGRhdGUoKTsNCisJICAgIAldXT4NCisJCQk8L21ldGhvZD4NCisJCTwvdHVybk92ZXJMaXN0Pg0KKw0KKwkJPHNlcnZlckFkbWluVmFsdWVGb3JtIG5hbWU9Il9zZXJ2ZXJBZG1pblZhbHVlRm9ybSIgeD0iNDYwIj4NCisJCQk8aGFuZGxlciBuYW1lPSJvbm5ldyIgYXJncz0icmVmT2JqIj4NCisJCQkJcGFyZW50Ll90dXJub3Zlcmxpc3QuY2xlYXJTZWxlY3Rpb24oKTsNCisJCQk8L2hhbmRsZXI+DQorCQk8L3NlcnZlckFkbWluVmFsdWVGb3JtPg0KKwk8L2NsYXNzPg0KKw0KKzwvbGlicmFyeT4NCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2FkbWluL3VzZXJhZG1pbi9jaG9vc2VPcmdhbmlzYXRpb25XaW5kb3cubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi91c2VyYWRtaW4vY2hvb3NlT3JnYW5pc2F0aW9uV2luZG93Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTcyMDhjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi91c2VyYWRtaW4vY2hvb3NlT3JnYW5pc2F0aW9uV2luZG93Lmx6eApAQCAtMCwwICsxLDgyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorIAorPCEtLS0gT3JnYW5pemF0aW9uIGNob2ljZSBtb2RhbCB3aW5kb3cgd2hlbiBhbiBvcmdhbml6YXRpb24gaXMgYWRkZWQgdG8gYSB1c2VyLi0tPgorPGNsYXNzIG5hbWU9ImNob29zZU9yZ2FuaXNhdGlvbldpbmRvdyIgZXh0ZW5kcz0ibGFiZWxFeHBsb3JlckJveCIgbGFiZWxpZD0iMTczIgorICAgIGRvY2tpbmc9InRydWUiIHdpZHRoPSI0MDAiIHg9IjQwMCIgeT0iMzAwIiBoZWlnaHQ9IjIwMCI+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpdGVtX2lkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0icmVmT2JqIiB2YWx1ZT0ibnVsbCIgLz4KKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgICAgICAvL2x6Lk1vZGVNYW5hZ2VyLm1ha2VNb2RhbCh0aGlzKTsKKwkJdGhpcy5nZXRPcmdhbmlzYXRpb25zLmRvQ2FsbCgpOworICAgIDwvaGFuZGxlcj4KKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbmNsb3NlIj4KKyAgICAgICAgLy9sei5Nb2RlTWFuYWdlci5yZWxlYXNlKHRoaXMpOworICAgIDwvaGFuZGxlcj4KKwkKKwk8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJnZXRPcmdhbmlzYXRpb25zIiBmdW5jbmFtZT0ib3JnYW5pc2F0aW9uc2VydmljZS5nZXRPcmdhbmlzYXRpb25zIiByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAgICAgIAorCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBjYW52YXMuc2Vzc2lvbklkOyA8L21ldGhvZD48L25ldHBhcmFtPgorCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiAwOyA8L21ldGhvZD48L25ldHBhcmFtPgorCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiAyMDA7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuICJvcmdhbmlzYXRpb25faWQiOyA8L21ldGhvZD48L25ldHBhcmFtPgorCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiB0cnVlOyA8L21ldGhvZD48L25ldHBhcmFtPgorCQk8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKwkJCTwhW0NEQVRBWworCQkJLy9EZWJ1Zy53cml0ZSgiZ2V0T3JnYW5pc2F0aW9ucyAiLHZhbHVlKTsKKwkJCWlmICh2YWx1ZSE9bnVsbCl7CisJCQkJZm9yICh2YXIgaT0wO2k8dmFsdWUucmVzdWx0Lmxlbmd0aDtpKyspeworCQkJCQlpZiAoIXRoaXMucGFyZW50LnJlZk9iai5fb3JnYW5pc2F0aW9uc2xpc3QuY2hlY2tWYWx1ZSh2YWx1ZS5yZXN1bHRbaV0ub3JnYW5pc2F0aW9uX2lkKSl7CisJCQkJCQl0aGlzLnBhcmVudC5fb3JnYW5pc2F0aW9uc2xpc3QuYWRkSXRlbSh2YWx1ZS5yZXN1bHRbaV0ubmFtZSx2YWx1ZS5yZXN1bHRbaV0ub3JnYW5pc2F0aW9uX2lkKTsKKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJCV1dPgkJCQorCQk8L2hhbmRsZXI+CisJPC9uZXRSZW1vdGVDYWxsSGliPgkJCQorCQorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMTYxIiB3aWR0aD0iMjAwIiB5PSIyNCIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPiAgICAgCisgICAgPHNpbXBsZVZhbHVlTGlzdCBuYW1lPSJfb3JnYW5pc2F0aW9uc2xpc3QiIHk9IjI0IiB4PSIxMjAiIHdpZHRoPSIyNzAiIGhlaWdodD0iMTIwIiAKKwkJbXVsdGlzZWxlY3Q9InRydWUiIC8+CisJCisJPHNpbXBsZUxhYmVsQnV0dG9uIGxhYmVsaWQ9IjE3NCIgeD0iMjkwIiB5PSIxNzAiIHdpZHRoPSIxMDAiPgorCQk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKwkJCXRoaXMucGFyZW50LmNsb3NlKCk7CisJCTwvaGFuZGxlcj4KKwk8L3NpbXBsZUxhYmVsQnV0dG9uPgorCTxzaW1wbGVMYWJlbEJ1dHRvbiBsYWJlbGlkPSIxNzUiIHg9IjE4MCIgeT0iMTcwIiB3aWR0aD0iMTAwIj4KKwkJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisJCQk8IVtDREFUQVsKKwkJCQlmb3IgKHZhciBpPTA7aTx0aGlzLnBhcmVudC5fb3JnYW5pc2F0aW9uc2xpc3QuX3NlbGVjdGVkLmxlbmd0aDtpKyspeworCQkJCQkvL0RlYnVnLndyaXRlKCJ0aGlzLnBhcmVudC5yZWZPYmouX29yZ2FuaXNhdGlvbnNsaXN0LmFkZEl0ZW0gIix0aGlzLnBhcmVudC5fb3JnYW5pc2F0aW9uc2xpc3QuX3NlbGVjdGVkW2ldLnRleHQsdGhpcy5wYXJlbnQuX29yZ2FuaXNhdGlvbnNsaXN0Ll9zZWxlY3RlZFtpXS52YWx1ZSk7CisJCQkJCXRoaXMucGFyZW50LnJlZk9iai5fb3JnYW5pc2F0aW9uc2xpc3QuYWRkSXRlbSh0aGlzLnBhcmVudC5fb3JnYW5pc2F0aW9uc2xpc3QuX3NlbGVjdGVkW2ldLnRleHQsdGhpcy5wYXJlbnQuX29yZ2FuaXNhdGlvbnNsaXN0Ll9zZWxlY3RlZFtpXS52YWx1ZSk7CisJCQkJfQorCQkJCXRoaXMucGFyZW50LmNsb3NlKCk7CisJCQldXT4KKwkJPC9oYW5kbGVyPgorCTwvc2ltcGxlTGFiZWxCdXR0b24+CQorICAgIAorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi91c2VyYWRtaW4vbGlicmFyeS5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2FkbWluL3VzZXJhZG1pbi9saWJyYXJ5Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMWIyMjRkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi91c2VyYWRtaW4vbGlicmFyeS5sengKQEAgLTAsMCArMSwyOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworICAgIDxpbmNsdWRlIGhyZWY9InVzZXJBZG1pbi5sengiIC8+CisJPGluY2x1ZGUgaHJlZj0idXNlckFkbWluTGlzdEl0ZW0ubHp4IiAvPgorCTxpbmNsdWRlIGhyZWY9InVzZXJBZG1pblZhbHVlRm9ybS5sengiIC8+CisJPGluY2x1ZGUgaHJlZj0iY2hvb3NlT3JnYW5pc2F0aW9uV2luZG93Lmx6eCIgLz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi91c2VyYWRtaW4vdXNlckFkbWluLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvYWRtaW4vdXNlcmFkbWluL3VzZXJBZG1pbi5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQ1Y2ZiMwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvYWRtaW4vdXNlcmFkbWluL3VzZXJBZG1pbi5sengKQEAgLTAsMCArMSwxMDggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzwhLS0tIFVzZXIgYWRtaW5pc3RyYXRpb24gbW9kdWxlIGZvciBBRE1JTi4tLT4KKzxjbGFzcyBuYW1lPSJ1c2VyQWRtaW4iIGV4dGVuZHM9ImJhc2VDb250ZW50VmlldyI+CisJCisJPGxhYmVsVGV4dCB4PSIyIiB5PSIkeyA4IC0gcGFyZW50LnBhcmVudC5wYXJlbnQueSB9IiBsYWJlbGlkPSI3MTQiIC8+CisJCisJPGN1c3RvbUVkaXR0ZXh0IG5hbWU9Il9zZWFyY2giIHk9IiR7IDQgLSBwYXJlbnQucGFyZW50LnBhcmVudC55IH0iIHg9IjEyMCIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIyNCIvPgorCQorICAgIDxzaW1wbGVMYWJlbEJ1dHRvbiBsYWJlbGlkPSI3MTUiIHg9IjMzMCIgd2lkdGg9IjExMiIgaGVpZ2h0PSIyNCIgeT0iJHsgNCAtIHBhcmVudC5wYXJlbnQucGFyZW50LnkgfSI+CisgICAgCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgIAkJcGFyZW50Ll90dXJub3Zlcmxpc3QuZ2V0VXNlckxpc3RXaXRoU2VhcmNoLmRvQ2FsbCgpOworICAgIAk8L2hhbmRsZXI+CisgICAgPC9zaW1wbGVMYWJlbEJ1dHRvbj4KKworCTx0dXJuT3Zlckxpc3QgbmFtZT0iX3R1cm5vdmVybGlzdCIgd2lkdGg9IjQ0MCIgaGVpZ2h0PSIkeyBjYW52YXMuaGVpZ2h0IC0gY2FudmFzLm5hdmlIZWlnaHQgLSAzMCB9IiB4PSIyIiB5PSIkeyAzMCAtIHBhcmVudC5wYXJlbnQucGFyZW50LnkgfSIgCisJCW9yZGVyYnk9InVzZXJfaWQiIHN0ZXA9IjUwIiBhc2M9InRydWUiPgorCisJCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisJCQl0aGlzLmFkZEhlYWRlckl0ZW0oMTQ2LDYwKTsKKwkJCXRoaXMuYWRkSGVhZGVySXRlbSgxNDcsMTAwKTsKKwkJCXRoaXMuYWRkSGVhZGVySXRlbSgxNDgsMTMyKTsKKwkJCXRoaXMuYWRkSGVhZGVySXRlbSgxNDksMTMyKTsKKwkJCXRoaXMuZ2V0VXNlckxpc3RXaXRoU2VhcmNoLmRvQ2FsbCgpOworCQk8L2hhbmRsZXI+CisJCQorCQk8aGFuZGxlciBuYW1lPSJvbmNhbGxuZXh0IiA+CisJCQl0aGlzLmdldFVzZXJMaXN0V2l0aFNlYXJjaC5kb0NhbGwoKTsKKwkJPC9oYW5kbGVyPgorCQkKKwkJPGhhbmRsZXIgbmFtZT0ib25jYWxscHJlIiA+CQkKKwkJCXRoaXMuZ2V0VXNlckxpc3RXaXRoU2VhcmNoLmRvQ2FsbCgpOworCQk8L2hhbmRsZXI+CisJCQorCQk8aGFuZGxlciBuYW1lPSJvbmNsaWNrZWRJdGVtIiBhcmdzPSJvYmoiPgorCQkJLy9EZWJ1Zy53cml0ZSgib25jbGlja2VkSXRlbSIsb2JqLG9iai5vYmopOworICAgICAgICAgICAgcGFyZW50Ll91c2VyYWRtaW52YWx1ZWZvcm0uaGlkZU5ld1JlY29yZFRleHQoKTsKKwkJCXBhcmVudC5fdXNlcmFkbWludmFsdWVmb3JtLmluaXRWYWx1ZUZpZWxkc0J5T2JqZWN0KG9iai5vYmopOworCQk8L2hhbmRsZXI+CisJCQorCQk8IS0tCisJCXB1YmxpYyBTZWFyY2hSZXN1bHQgZ2V0VXNlckxpc3RXaXRoU2VhcmNoKFN0cmluZyBTSUQsIGludCBzdGFydCwgaW50IG1heCwgCisgICAgICAgICAgICBTdHJpbmcgb3JkZXJieSwgYm9vbGVhbiBhc2MsIFN0cmluZyBzZWFyY2gpeworICAgICAgICAgICAgLS0+CisJCQorCQk8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJnZXRVc2VyTGlzdFdpdGhTZWFyY2giIGZ1bmNuYW1lPSJ1c2Vyc2VydmljZS5nZXRVc2VyTGlzdFdpdGhTZWFyY2giIAorCQkJCQkJICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAgICAgIAorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gY2FudmFzLnNlc3Npb25JZDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIHBhcmVudC5wYXJlbnQuc3RhcnQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBwYXJlbnQucGFyZW50LnN0ZXA7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBwYXJlbnQucGFyZW50Lm9yZGVyYnk7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBwYXJlbnQucGFyZW50LmFzYzsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIHBhcmVudC5wYXJlbnQucGFyZW50Ll9zZWFyY2guZ2V0VGV4dCgpOyA8L21ldGhvZD48L25ldHBhcmFtPgorCSAgICAJPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisJICAgIAkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImdldFVzZXJMaXN0V2l0aFNlYXJjaDogIix2YWx1ZSk7CisJICAgIAkJLy90aGlzLnBhcmVudC5kZXN0cm95KCk7CisJICAgIAkJdGhpcy5wYXJlbnQuaW5pdFZhbHVlcyh2YWx1ZS5yZWNvcmRzKTsKKwkgICAgCQl0aGlzLnBhcmVudC5yZW5kZXJDb250ZW50KHZhbHVlLnJlc3VsdCk7CisJICAgIAk8L2hhbmRsZXI+CisJICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4JCisJICAgIAorCSAgICA8bWV0aG9kIG5hbWU9InJlbmRlckNvbnRlbnQiIGFyZ3M9InJlY29yZHMiPgorCSAgICAJPCFbQ0RBVEFbCisJICAgIAl0aGlzLmNsZWFyTGlzdCgpOworCSAgICAJZm9yICh2YXIgaT0wO2k8cmVjb3Jkcy5sZW5ndGg7aSsrKXsKKwkgICAgCQluZXcgbHoudXNlckFkbWluTGlzdEl0ZW0odGhpcy5faW5uZXJsaXN0Ll9pbm4uX2lubix7b2JqOnJlY29yZHNbaV0sdXNlcl9pZDpyZWNvcmRzW2ldLnVzZXJfaWQsbG9naW46cmVjb3Jkc1tpXS5sb2dpbixmaXJzdG5hbWU6cmVjb3Jkc1tpXS5maXJzdG5hbWUsbGFzdG5hbWU6cmVjb3Jkc1tpXS5sYXN0bmFtZX0pOworCSAgICAJfQorCSAgICAJaWYgKHBhcmVudC5fdXNlcmFkbWludmFsdWVmb3JtLnVzZXJfaWQgPT0gMCkgeworICAgIAkJCWlmIChyZWNvcmRzLmxlbmd0aD4wKQorICAgIAkJCXsKKyAgICAJCQkJcGFyZW50Ll91c2VyYWRtaW52YWx1ZWZvcm0uaW5pdFZhbHVlRmllbGRzQnlPYmplY3QocmVjb3Jkc1swXSk7CisgICAgCQkJfQorCSAgICAJfQorICAgICAgICAgICAgdGhpcy5zZW5kSW5pdGlhbFdpZHRoVXBkYXRlKCk7CisJICAgIAldXT4KKwkgICAgPC9tZXRob2Q+CisKKwk8L3R1cm5PdmVyTGlzdD4KKwkKKwk8dXNlckFkbWluVmFsdWVGb3JtIG5hbWU9Il91c2VyYWRtaW52YWx1ZWZvcm0iIHg9IjQ2MCI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9ubmV3IiBhcmdzPSJyZWZPYmoiPgorICAgICAgICAgICAgcGFyZW50Ll90dXJub3Zlcmxpc3QuY2xlYXJTZWxlY3Rpb24oKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgIDwvdXNlckFkbWluVmFsdWVGb3JtPgorCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2FkbWluL3VzZXJhZG1pbi91c2VyQWRtaW5MaXN0SXRlbS5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2FkbWluL3VzZXJhZG1pbi91c2VyQWRtaW5MaXN0SXRlbS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDkxMjAzYwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvYWRtaW4vdXNlcmFkbWluL3VzZXJBZG1pbkxpc3RJdGVtLmx6eApAQCAtMCwwICsxLDM4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8IS0tLSBFeGlzdGluZyB1c2VyIGxpc3QuIHVzZWQgYnkgdXNlckFkbWluIG9ubHkgLS0+Cis8Y2xhc3MgbmFtZT0idXNlckFkbWluTGlzdEl0ZW0iIGV4dGVuZHM9ImJhc2VDb250ZW50TGlzdEl0ZW0iPiAKKyAgICAKKwk8YXR0cmlidXRlIG5hbWU9InVzZXJfaWQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJsb2dpbiIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0iZmlyc3RuYW1lIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJsYXN0bmFtZSIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorCQorCTx0dXJuT3ZlclRleHRJdGVtIHRleHQ9IiRvbmNleyBwYXJlbnQudXNlcl9pZCB9IiB3aWR0aD0iNjAiIC8+CisJPHR1cm5PdmVyVGV4dEl0ZW0gdGV4dD0iJG9uY2V7IHBhcmVudC5sb2dpbiB9IiB3aWR0aD0iMTAwIiAvPgorCTx0dXJuT3ZlclRleHRJdGVtIHRleHQ9IiRvbmNleyBjYW52YXMuZ2V0Tm90TnVsbFN0cmluZyhwYXJlbnQuZmlyc3RuYW1lKSB9IiB3aWR0aD0iMTMyIiAvPgorCTx0dXJuT3ZlclRleHRJdGVtIHRleHQ9IiRvbmNleyBjYW52YXMuZ2V0Tm90TnVsbFN0cmluZyhwYXJlbnQubGFzdG5hbWUpIH0iIHdpZHRoPSIxMzIiIC8+CisJCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2FkbWluL3VzZXJhZG1pbi91c2VyQWRtaW5WYWx1ZUZvcm0ubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi91c2VyYWRtaW4vdXNlckFkbWluVmFsdWVGb3JtLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjAwNTVjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9hZG1pbi91c2VyYWRtaW4vdXNlckFkbWluVmFsdWVGb3JtLmx6eApAQCAtMCwwICsxLDQ2NSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPCEtLS0gVXNlciBQcm9maWxlIGVkaXQgcGFuZWwgaW4gdGhlIHVzZXJhZG1pbiBsZWZ0YmxvY2suIFByaXZhdGUgY2xhc3Mgb25seSBmb3IgdXNlcmFkbWluIC0tPgorPGNsYXNzIG5hbWU9InVzZXJBZG1pblZhbHVlRm9ybSIgZXh0ZW5kcz0iYmFzZUNvbnRlbnRTYXZlVmlldyI+CisKKwk8IS0tLSByZWNvcmRDb250ZW50LWlkIC0tPgorCTxhdHRyaWJ1dGUgbmFtZT0idXNlcl9pZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKwkKKwk8IS0taGFuZGxlcnMgLS0+CisKKwk8aGFuZGxlciBuYW1lPSJvbnNhdmVjb21wbGV0ZWQiID4KKwkJLy90aGlzLmdldFVzZXJCeUlkLmRvQ2FsbCgpOworCTwvaGFuZGxlcj4KKwkKKwk8aGFuZGxlciBuYW1lPSJvbnJlbG9hZCIgPgorCQlpZiAodGhpcy51c2VyX2lkIT0wKSB0aGlzLmdldFVzZXJCeUlkLmRvQ2FsbCgpOworCTwvaGFuZGxlcj4JCisKKwk8aGFuZGxlciBuYW1lPSJvbm5ldyI+CisJCTwhW0NEQVRBWworICAgIAkJdGhpcy51c2VyX2lkPTA7CisgICAgCQl0aGlzLmxldmVsLnNlbGVjdEl0ZW1BdCgwKTsKKyAgICAgICAgICAgIHRoaXMudXNlcm5hbWUuc2V0QXR0cmlidXRlKCd0ZXh0JywnJyk7CisgICAgICAgICAgICB0aGlzLmZpcnN0bmFtZS5zZXRBdHRyaWJ1dGUoJ3RleHQnLCcnKTsKKyAgICAgICAgICAgIHRoaXMubGFzdG5hbWUuc2V0QXR0cmlidXRlKCd0ZXh0JywnJyk7CisgICAgICAgICAgICB0aGlzLmVtYWlsLnNldEF0dHJpYnV0ZSgndGV4dCcsJycpOworICAgICAgICAgICAgdGhpcy5waG9uZS5zZXRBdHRyaWJ1dGUoJ3RleHQnLCcnKTsKKyAgICAgICAgICAgIHRoaXMuc2VuZFNNUy5zZXRWYWx1ZShmYWxzZSk7CisgICAgICAgICAgICB0aGlzLmFnZS5zZXRBdHRyaWJ1dGUoJ3RleHQnLCcnKTsKKyAgICAgICAgICAgIHRoaXMuc3RyZWV0LnNldEF0dHJpYnV0ZSgndGV4dCcsJycpOworICAgICAgICAgICAgdGhpcy5ob3VzZS5zZXRBdHRyaWJ1dGUoJ3RleHQnLCcnKTsKKyAgICAgICAgICAgIHRoaXMuemlwLnNldEF0dHJpYnV0ZSgndGV4dCcsJycpOworICAgICAgICAgICAgdGhpcy50b3duLnNldEF0dHJpYnV0ZSgndGV4dCcsJycpOworICAgIAkJdGhpcy51c2VycGFzczEuc2V0QXR0cmlidXRlKCd0ZXh0JywnJyk7CisgICAgICAgICAgICB2YXIgZGVmYXVsdHN0YXRlID0gY2FudmFzLmdldENvdW50cnlSZWNvcmQoMSk7CisgICAgICAgICAgICB0aGlzLnN0YXRlLmFkZEFuZFNlbGVjdEl0ZW0oZGVmYXVsdHN0YXRlLm5hbWUsZGVmYXVsdHN0YXRlLnN0YXRlX2lkKTsKKyAgICAgICAgICAgIHRoaXMuYWRyZXNzX2NvbW1lbnQuc2V0QXR0cmlidXRlKCd0ZXh0JywnJyk7CisgICAgICAgICAgICB0aGlzLnN0YXR1cy5zZWxlY3RJdGVtKFN0cmluZygnMScpKTsKKyAgICAgICAgICAgIHRoaXMuZm9yY2VUaW1lWm9uZUNoZWNrLnNldFZhbHVlKGZhbHNlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIHQgPSB0aGlzOworICAgICAgICAgICAgCisgICAgICAgICAgICBmdW5jdGlvbiBnZXRUaW1lWm9uZU9mZnNldENhbGxiYWNrKHJldHVyblZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImdldFRpbWVab25lT2Zmc2V0Q2FsbGJhY2sgIixyZXR1cm5WYWx1ZSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgdmFyIHN0ZF90aW1lX29mZnNldCA9IE51bWJlcihyZXR1cm5WYWx1ZSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgdC5zZXRPZmZzZXQoc3RkX3RpbWVfb2Zmc2V0KTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZ2V0VGltZVpvbmVPZmZzZXQodGhpcyk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuX29yZ2FuaXNhdGlvbnNsaXN0LmNsZWFyTGlzdCgpOworICAgICAgICAgICAgCisJCQl0aGlzLnVzZXJPZmZlcnMuc2V0QXR0cmlidXRlKCd0ZXh0JywiIik7CisJCQl0aGlzLnVzZXJTZWFyY2hzLnNldEF0dHJpYnV0ZSgndGV4dCcsIiIpOworCQkJdGhpcy5zaG93Q29udGFjdERhdGEuc2VsZWN0SXRlbSgiMyIpOworICAgICAgICAgICAgdGhpcy5sYW5ndWFnZXMuc2VsZWN0SXRlbShTdHJpbmcoJzEnKSk7CisJCQkKKyAgICAgICAgXV0+CisJPC9oYW5kbGVyPgorCQorCTxtZXRob2QgbmFtZT0iY2FsbGJhY2siIGFyZ3M9InJldHVyblZhbHVlIj4KKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImdldFRpbWVab25lT2Zmc2V0IGNhbGxiYWNrICIscmV0dXJuVmFsdWUpOworICAgICAgICAgICAgICAgIAorICAgICAgICB2YXIgc3RkX3RpbWVfb2Zmc2V0ID0gTnVtYmVyKHJldHVyblZhbHVlKTsKKyAgICAgICAgCisgICAgICAgIHRoaXMuc2V0T2Zmc2V0KHN0ZF90aW1lX29mZnNldCk7CisgICAgPC9tZXRob2Q+CisJCisJPG1ldGhvZCBuYW1lPSJzZXRPZmZzZXQiIGFyZ3M9InN0ZF90aW1lX29mZnNldCI+CisJCTwhW0NEQVRBWworCQl2YXIgdGltZVpvbmVKYXZhRm9ybWF0ID0gIkV0Yy9HTVQiOworICAgICAgICBpZiAoc3RkX3RpbWVfb2Zmc2V0ID4gMCkgeworICAgICAgICAgICAgdGltZVpvbmVKYXZhRm9ybWF0ICs9ICIrIitzdGRfdGltZV9vZmZzZXQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aW1lWm9uZUphdmFGb3JtYXQgKz0gIi0iK3N0ZF90aW1lX29mZnNldDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInRpbWVab25lSmF2YUZvcm1hdCA6OiAiLHRpbWVab25lSmF2YUZvcm1hdCk7CisgICAgICAgIAorICAgICAgICB0aGlzLl90aW1lWm9uZS5zZWxlY3RJdGVtKHRpbWVab25lSmF2YUZvcm1hdCk7CisgICAgICAgIF1dPgorCTwvbWV0aG9kPgorCQorICAgIDxoYW5kbGVyIG5hbWU9Im9uZGVsZXRlIiA+CisJCWlmICh0aGlzLnVzZXJfaWQhPTApeworCQkJdGhpcy5kZWxldGVVc2VyQWRtaW4uZG9DYWxsKCk7CisJCX0KKyAgICA8L2hhbmRsZXI+CisJCisJPCEtLSBtZXRob2RzIC0tPgorCisgICAgPG1ldGhvZCBuYW1lPSJpbml0VmFsdWVGaWVsZHNCeU9iamVjdCIgYXJncz0ib2JqIj4KKwkJdGhpcy51c2VyX2lkID0gb2JqLnVzZXJfaWQ7CisJCWlmICh0aGlzLnVzZXJfaWQhPTApeworCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInRoaXMuZ2V0VXNlckJ5SWQgdGhpcy51c2VyX2lkIix0aGlzLnVzZXJfaWQpOworCQkJdGhpcy5nZXRVc2VyQnlJZC5kb0NhbGwoKTsKKwkJfQorICAgIDwvbWV0aG9kPgorCisgICAgPG1ldGhvZCBuYW1lPSJpbml0RmllbGRzIiBhcmdzPSJvYmoiPgorICAgIAk8IVtDREFUQVsKKyAgICAgICAgICAgIGlmIChvYmogPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgCisJCQl0aGlzLmxldmVsLnNlbGVjdEl0ZW0oU3RyaW5nKG9iai5sZXZlbF9pZCkpOworCQkJdGhpcy51c2VybmFtZS5zZXRBdHRyaWJ1dGUoJ3RleHQnLG9iai5sb2dpbik7CisJCQl0aGlzLmZpcnN0bmFtZS5zZXRBdHRyaWJ1dGUoJ3RleHQnLCBjYW52YXMuZ2V0Tm90TnVsbFN0cmluZyhvYmouZmlyc3RuYW1lKSk7CisJCQl0aGlzLmxhc3RuYW1lLnNldEF0dHJpYnV0ZSgndGV4dCcsIGNhbnZhcy5nZXROb3ROdWxsU3RyaW5nKG9iai5sYXN0bmFtZSkpOworCQkJdGhpcy51c2VycGFzczEuc2V0QXR0cmlidXRlKCd0ZXh0JywnJyk7CisJCQl0aGlzLmVtYWlsLnNldEF0dHJpYnV0ZSgndGV4dCcsIGNhbnZhcy5nZXROb3ROdWxsU3RyaW5nKG9iai5hZHJlc3Nlcy5lbWFpbCkpOworCQkJdGhpcy5waG9uZS5zZXRBdHRyaWJ1dGUoJ3RleHQnLCBjYW52YXMuZ2V0Tm90TnVsbFN0cmluZyhvYmouYWRyZXNzZXMucGhvbmUpKTsKKwkJCXRoaXMuc2VuZFNNUy5zZXRWYWx1ZShvYmpbInNlbmRTTVMiXSAmJiBvYmouc2VuZFNNUyE9IG51bGwgJiYgb2JqLnNlbmRTTVMpOworCQkJdGhpcy5hZ2Uuc2V0QXR0cmlidXRlKCd0ZXh0JyxwYXJzZURhdGVUb1N0cmluZyhvYmouYWdlKSk7CisJCQl0aGlzLnN0cmVldC5zZXRBdHRyaWJ1dGUoJ3RleHQnLCBjYW52YXMuZ2V0Tm90TnVsbFN0cmluZyhvYmouYWRyZXNzZXMuc3RyZWV0KSk7CisJCQl0aGlzLmhvdXNlLnNldEF0dHJpYnV0ZSgndGV4dCcsIGNhbnZhcy5nZXROb3ROdWxsU3RyaW5nKG9iai5hZHJlc3Nlcy5hZGRpdGlvbmFsbmFtZSkpOworCQkJdGhpcy56aXAuc2V0QXR0cmlidXRlKCd0ZXh0JywgY2FudmFzLmdldE5vdE51bGxTdHJpbmcob2JqLmFkcmVzc2VzLnppcCkpOworCQkJdGhpcy50b3duLnNldEF0dHJpYnV0ZSgndGV4dCcsIGNhbnZhcy5nZXROb3ROdWxsU3RyaW5nKG9iai5hZHJlc3Nlcy50b3duKSk7CisJCQl0aGlzLnN0YXRlLmFkZEFuZFNlbGVjdEl0ZW0ob2JqLmFkcmVzc2VzLnN0YXRlcy5uYW1lLFN0cmluZyhvYmouYWRyZXNzZXMuc3RhdGVzLnN0YXRlX2lkKSk7CisJCQl0aGlzLmFkcmVzc19jb21tZW50LnNldEF0dHJpYnV0ZSgndGV4dCcsIGNhbnZhcy5nZXROb3ROdWxsU3RyaW5nKG9iai5hZHJlc3Nlcy5jb21tZW50KSk7CisJCQl0aGlzLnN0YXR1cy5zZWxlY3RJdGVtKFN0cmluZyhvYmouc3RhdHVzKSk7CisJCQl0aGlzLnNhbHV0YXRpb24uc2VsZWN0SXRlbShTdHJpbmcob2JqLnNhbHV0YXRpb25zX2lkKSk7CisJCQl0aGlzLl90aW1lWm9uZS5zZWxlY3RJdGVtKFN0cmluZyhvYmoub21UaW1lWm9uZS5qbmFtZSkpOworCQkJdGhpcy5sYW5ndWFnZXMuc2VsZWN0SXRlbShTdHJpbmcob2JqLmxhbmd1YWdlX2lkKSk7CisJCQkKKwkJCWlmIChvYmpbImZvcmNlVGltZVpvbmVDaGVjayJdICYmIG9iai5mb3JjZVRpbWVab25lQ2hlY2shPSBudWxsKSB7CisJCQkJaWYgKG9iai5mb3JjZVRpbWVab25lQ2hlY2spIHsKKwkJCQkJdGhpcy5mb3JjZVRpbWVab25lQ2hlY2suc2V0VmFsdWUodHJ1ZSk7CisJCQkJfSBlbHNlIHsKKwkJCQkJdGhpcy5mb3JjZVRpbWVab25lQ2hlY2suc2V0VmFsdWUoZmFsc2UpOworCQkJCX0KKwkJCX0gZWxzZSB7CisJCQkJdGhpcy5mb3JjZVRpbWVab25lQ2hlY2suc2V0VmFsdWUoZmFsc2UpOworCQkJfQorCQkJCisJCQkKKwkJCXRoaXMuX29yZ2FuaXNhdGlvbnNsaXN0LmNsZWFyTGlzdCgpOworCQkJZm9yICh2YXIgaT0wO2k8b2JqLm9yZ2FuaXNhdGlvbl91c2Vycy5sZW5ndGg7aSsrKXsKKwkJCQl0aGlzLl9vcmdhbmlzYXRpb25zbGlzdC5hZGRJdGVtKG9iai5vcmdhbmlzYXRpb25fdXNlcnNbaV0ub3JnYW5pc2F0aW9uLm5hbWUsb2JqLm9yZ2FuaXNhdGlvbl91c2Vyc1tpXS5vcmdhbmlzYXRpb24ub3JnYW5pc2F0aW9uX2lkKTsKKwkJCX0KKwkJCQorCQkJaWYgKG9iai51c2VyT2ZmZXJzICE9IG51bGwpIHsKKwkJCQl0aGlzLnVzZXJPZmZlcnMuc2V0QXR0cmlidXRlKCd0ZXh0JyxvYmoudXNlck9mZmVycyk7CisJCQl9IGVsc2UgeworCQkJCXRoaXMudXNlck9mZmVycy5zZXRBdHRyaWJ1dGUoJ3RleHQnLCIiKTsKKwkJCX0KKwkJCQorCQkJaWYgKG9iai51c2VyU2VhcmNocyAhPSBudWxsKSB7CisJCQkJdGhpcy51c2VyU2VhcmNocy5zZXRBdHRyaWJ1dGUoJ3RleHQnLG9iai51c2VyU2VhcmNocyk7CisJCQl9IGVsc2UgeworCQkJCXRoaXMudXNlclNlYXJjaHMuc2V0QXR0cmlidXRlKCd0ZXh0JywiIik7CisJCQl9CisJCQkKKwkJCWlmIChvYmouc2hvd0NvbnRhY3REYXRhICE9IG51bGwgJiYgb2JqLnNob3dDb250YWN0RGF0YVRvQ29udGFjdHMgIT0gbnVsbCkgeworCQkJCQorCQkJCWlmIChvYmouc2hvd0NvbnRhY3REYXRhKSB7CisJCQkJCXRoaXMuc2hvd0NvbnRhY3REYXRhLnNlbGVjdEl0ZW0oIjEiKTsKKwkJCQl9IGVsc2UgaWYgKG9iai5zaG93Q29udGFjdERhdGFUb0NvbnRhY3RzKSB7CisJCQkJCXRoaXMuc2hvd0NvbnRhY3REYXRhLnNlbGVjdEl0ZW0oIjIiKTsKKwkJCQl9IGVsc2UgeworCQkJCQl0aGlzLnNob3dDb250YWN0RGF0YS5zZWxlY3RJdGVtKCIzIik7CisJCQkJfQorCQkJCQorCQkJfQorCQkJCisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorCQorCTwhLS0gcmVtb3RlY2FsbHMgLS0+CisJCisgIAk8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJnZXRVc2VyQnlJZCIgZnVuY25hbWU9InVzZXJzZXJ2aWNlLmdldFVzZXJCeUlkIiAKKyAgCQlyZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAKKyAgCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBjYW52YXMuc2Vzc2lvbklkOyA8L21ldGhvZD48L25ldHBhcmFtPgorICAgIAk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQudXNlcl9pZDs8L21ldGhvZD48L25ldHBhcmFtPgorICAgIAk8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKwkJCWlmKCRkZWJ1ZykgRGVidWcud3JpdGUoIlthZG1pbl11c2VyVmFsdWVGb3JtL2dldFVzZXJCeUlkOiAiLHZhbHVlKTsKKyAgICAJCXBhcmVudC5pbml0RmllbGRzKHZhbHVlKTsKKyAgICAJPC9oYW5kbGVyPgorICAJPC9uZXRSZW1vdGVDYWxsSGliPgorCQorCTxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImRlbGV0ZVVzZXJBZG1pbiIgZnVuY25hbWU9InVzZXJzZXJ2aWNlLmRlbGV0ZVVzZXJBZG1pbiIgCisJCQkJCSAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iIGFjdGl2ZUVycm9ySGFuZGxlcj0idHJ1ZSI+ICAgICAgCisJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIHBhcmVudC5wYXJlbnQudXNlcl9pZDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisJCQkvL0RlYnVnLndyaXRlKCJkZWxldGVVc2VyQWRtaW4gIix2YWx1ZSk7CisJCQkvL3RoaXMucGFyZW50LmRlc3Ryb3koKTsKKwkJCWlmICh2YWx1ZT4wKXsKKwkJCQl0aGlzLnBhcmVudC5wYXJlbnQuX3R1cm5vdmVybGlzdC5vbmNhbGxuZXh0LnNlbmRFdmVudCgpOworCQkJCXRoaXMucGFyZW50Lm9ubmV3LnNlbmRFdmVudCgpOworCQkJfQorCQk8L2hhbmRsZXI+CisJPC9uZXRSZW1vdGVDYWxsSGliPgkJCisKKyAgCTxuZXRSZW1vdGVDYWxsSGliIG5hbWU9InNhdmVPclVwZGF0ZVVzZXIiIGZ1bmNuYW1lPSJ1c2Vyc2VydmljZS5zYXZlT3JVcGRhdGVVc2VyIiAKKyAgCQlyZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgcmVnaXN0ZXJPYmplY3Q9InRydWUiIGFjdGl2ZUVycm9ySGFuZGxlcj0iZmFsc2UiID4gICAKKwkJPGF0dHJpYnV0ZSBuYW1lPSJzZW5kT2JqZWN0IiB2YWx1ZT0ibnVsbCIgLz4KKwkJPCEtLSBnZXRzIGNhbGxlZCBieSBPYnNlcnZlciAtLT4KKyAgCQk8bWV0aG9kIG5hbWU9InByZXBhcmVDYWxsIj4KKyAgCQkJdGhpcy5zZW5kT2JqZWN0PW5ldyBBcnJheSgpOworICAJCQl0aGlzLnNlbmRPYmplY3RbInVzZXJfaWRDbGllbnQiXSA9IHRoaXMucGFyZW50LnVzZXJfaWQ7CisgIAkJCXRoaXMuc2VuZE9iamVjdFsibG9naW4iXSA9IHRoaXMucGFyZW50LnVzZXJuYW1lLmdldFRleHQoKTsKKyAgCQkJdGhpcy5zZW5kT2JqZWN0WyJwYXNzd29yZCJdID0gdGhpcy5wYXJlbnQudXNlcnBhc3MxLmdldFRleHQoKTsKKyAgCQkJdGhpcy5zZW5kT2JqZWN0WyJmaXJzdG5hbWUiXSA9IHRoaXMucGFyZW50LmZpcnN0bmFtZS5nZXRUZXh0KCk7CisgIAkJCXRoaXMuc2VuZE9iamVjdFsibGFzdG5hbWUiXSA9IHRoaXMucGFyZW50Lmxhc3RuYW1lLmdldFRleHQoKTsKKyAgCQkJdGhpcy5zZW5kT2JqZWN0WyJlbWFpbCJdID0gdGhpcy5wYXJlbnQuZW1haWwuZ2V0VGV4dCgpOworICAJCQl0aGlzLnNlbmRPYmplY3RbInBob25lIl0gPSB0aGlzLnBhcmVudC5waG9uZS5nZXRUZXh0KCk7CisgIAkJCXRoaXMuc2VuZE9iamVjdFsic2VuZFNNUyJdID0gcGFyZW50LnNlbmRTTVMuZ2V0VmFsdWUoKTsKKyAgCQkJdGhpcy5zZW5kT2JqZWN0WyJzdHJlZXQiXSA9IHRoaXMucGFyZW50LnN0cmVldC5nZXRUZXh0KCk7CisgIAkJCXRoaXMuc2VuZE9iamVjdFsiYWRkaXRpb25hbG5hbWUiXSA9IHRoaXMucGFyZW50LmhvdXNlLmdldFRleHQoKTsKKyAgCQkJdGhpcy5zZW5kT2JqZWN0WyJ6aXAiXSA9IHRoaXMucGFyZW50LnppcC5nZXRUZXh0KCk7CisgIAkJCXRoaXMuc2VuZE9iamVjdFsidG93biJdID0gdGhpcy5wYXJlbnQudG93bi5nZXRUZXh0KCk7CisgIAkJCXRoaXMuc2VuZE9iamVjdFsic3RhdGVzX2lkIl0gPSB0aGlzLnBhcmVudC5zdGF0ZS5nZXRWYWx1ZSgpOworICAJCQl0aGlzLnNlbmRPYmplY3RbImNvbW1lbnQiXSA9IHRoaXMucGFyZW50LmFkcmVzc19jb21tZW50LmdldFRleHQoKTsKKyAgCQkJdGhpcy5zZW5kT2JqZWN0WyJ0ZWxlZm9uIl0gPSAnJzsKKyAgCQkJdGhpcy5zZW5kT2JqZWN0WyJmYXgiXSA9ICcnOworCQkJdmFyIGRhdGUgPSB0aGlzLnBhcmVudC5hZ2UuZ2V0VGV4dCgpOworCQkJaWYgKGRhdGUubGVuZ3RoPjApIGRhdGUgPSBwYXJzZVN0cmluZ1RvRGF0ZShkYXRlKTsKKyAgCQkJdGhpcy5zZW5kT2JqZWN0WyJ1c2VyYWdlIl0gPSBkYXRlOworICAJCQl0aGlzLnNlbmRPYmplY3RbIm1vYmlsIl0gPSAnJzsKKyAgCQkJdGhpcy5zZW5kT2JqZWN0WyJhdmFpbGlibGUiXSA9IDA7CisgIAkJCXRoaXMuc2VuZE9iamVjdFsic3RhdHVzIl0gPSBOdW1iZXIodGhpcy5wYXJlbnQuc3RhdHVzLmdldFZhbHVlKCkpOworICAJCQl0aGlzLnNlbmRPYmplY3RbImxldmVsX2lkIl0gPSBOdW1iZXIodGhpcy5wYXJlbnQubGV2ZWwuZ2V0VmFsdWUoKSk7CisJCQl0aGlzLnNlbmRPYmplY3RbInNhbHV0YXRpb25zX2lkIl0gPSBOdW1iZXIodGhpcy5wYXJlbnQuc2FsdXRhdGlvbi5nZXRWYWx1ZSgpKTsKKwkJCXRoaXMuc2VuZE9iamVjdFsiak5hbWVUaW1lWm9uZSJdID0gcGFyZW50Ll90aW1lWm9uZS5nZXRWYWx1ZSgpOworICAgICAgICAgICAgdGhpcy5zZW5kT2JqZWN0WyJsYW5ndWFnZV9pZCJdID0gcGFyZW50Lmxhbmd1YWdlcy5nZXRWYWx1ZSgpOworCQkJdGhpcy5zZW5kT2JqZWN0WyJmb3JjZVRpbWVab25lQ2hlY2siXSA9IHBhcmVudC5mb3JjZVRpbWVab25lQ2hlY2suZ2V0VmFsdWUoKTsKKyAgCQkJdGhpcy5zZW5kT2JqZWN0WyJvcmdhbmlzYXRpb25zIl0gPSB0aGlzLnBhcmVudC5fb3JnYW5pc2F0aW9uc2xpc3QuZ2V0QWxsSXRlbXMoKTsKKyAgCQkJCisJCQl0aGlzLnNlbmRPYmplY3RbInVzZXJPZmZlcnMiXSA9IHBhcmVudC51c2VyT2ZmZXJzLmdldFRleHQoKTsKKwkJCXRoaXMuc2VuZE9iamVjdFsidXNlclNlYXJjaHMiXSA9IHBhcmVudC51c2VyU2VhcmNocy5nZXRUZXh0KCk7CisJCQkKKwkJCXZhciBzaG93Q29udGFjdERhdGEgPSBOdW1iZXIocGFyZW50LnNob3dDb250YWN0RGF0YS5nZXRWYWx1ZSgpKTsKKwkJCQorCQkJaWYgKHNob3dDb250YWN0RGF0YSA9PSAxKSB7CisJCQkJdGhpcy5zZW5kT2JqZWN0WyJzaG93Q29udGFjdERhdGEiXSA9IHRydWU7CisJCQkJdGhpcy5zZW5kT2JqZWN0WyJzaG93Q29udGFjdERhdGFUb0NvbnRhY3RzIl0gPSB0cnVlOworCQkJfSBlbHNlIGlmIChzaG93Q29udGFjdERhdGEgPT0gMikgeworCQkJCXRoaXMuc2VuZE9iamVjdFsic2hvd0NvbnRhY3REYXRhIl0gPSBmYWxzZTsKKwkJCQl0aGlzLnNlbmRPYmplY3RbInNob3dDb250YWN0RGF0YVRvQ29udGFjdHMiXSA9IHRydWU7CisJCQl9IGVsc2UgaWYgKHNob3dDb250YWN0RGF0YSA9PSAzKSB7CisJCQkJdGhpcy5zZW5kT2JqZWN0WyJzaG93Q29udGFjdERhdGEiXSA9IGZhbHNlOworCQkJCXRoaXMuc2VuZE9iamVjdFsic2hvd0NvbnRhY3REYXRhVG9Db250YWN0cyJdID0gZmFsc2U7CisJCQl9CisKKyAgCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInByZXBhcmVDYWxsOiAiLHRoaXMuc2VuZE9iamVjdCk7CisgIAkJPC9tZXRob2Q+CisgIAkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gY2FudmFzLnNlc3Npb25JZDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQuc2VuZE9iamVjdDs8L21ldGhvZD48L25ldHBhcmFtPgkgIAkJCisgICAgCTxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsIj4KKwkJCTwhW0NEQVRBWworCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzYXZlT3JVcGRhdGVVc2VyIG9uZGF0YTogIix2YWwpOworCQkJCWlmICh2YWw+MCl7CisJCQkJCXZhciBvYmogPSBuZXcgQXJyYXkoKTsKKwkJCQkJb2JqWyJ1c2VyX2lkIl0gPSB2YWw7CisJCQkJCXRoaXMucGFyZW50LmluaXRWYWx1ZUZpZWxkc0J5T2JqZWN0KG9iaik7CisJCQkJCQorCQkJCQlpZiAodGhpcy5wYXJlbnQuX29yZ2FuaXNhdGlvbnNsaXN0LmdldEFsbEl0ZW1zKCkubGVuZ3RoIDwgMSkKKwkJCQkJeworCQkJCQkJbmV3IGx6LnJwY0Vycm9yRGlhbG9nKGNhbnZhcy5tYWluX2NvbnRlbnQuX2NvbnRlbnQuaW5uZXIse2Vycm9yaWQ6LTIzfSk7CisJCQkJCX0KKwkJCQkJCisJCQkJCXRoaXMucGFyZW50LnBhcmVudC5fdHVybm92ZXJsaXN0Lm9uY2FsbG5leHQuc2VuZEV2ZW50KCk7CisJCQkJfQorCQkJXV0+CisgICAgCTwvaGFuZGxlcj4KKyAgCTwvbmV0UmVtb3RlQ2FsbEhpYj4JCisJCisJPCEtLSBjb250ZW50IC0tPgorICAgIAorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMTQzIiB3aWR0aD0iMjAwIiB5PSI0MCIgcmVzaXplPSJmYWxzZSIgZm9udHN0eWxlPSJib2xkIiAvPgorICAgIAorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMTMyIiB3aWR0aD0iMjAwIiB5PSI3MCIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPgorICAgICAgICA8Y3VzdG9tRWRpdHRleHQgbmFtZT0idXNlcm5hbWUiIHk9IjcwIiB4PSIxMjAiIHdpZHRoPSIyNzAiIC8+CisKKyAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjEzMyIgd2lkdGg9IjIwMCIgeT0iMTAwIiByZXNpemU9ImZhbHNlIiB4PSIyIi8+CisgICAgICAgIDxjdXN0b21FZGl0dGV4dCBuYW1lPSJ1c2VycGFzczEiIHk9IjEwMCIgcGFzc3dvcmQ9InRydWUiIHg9IjEyMCIgd2lkdGg9IjI3MCIgLz4KKworICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMTM1IiB3aWR0aD0iMjAwIiB5PSIxMzAiIHJlc2l6ZT0iZmFsc2UiIHg9IjIiLz4KKyAgICAgICAgPHJlc2V0Q29tYm9ib3ggbmFtZT0ic2FsdXRhdGlvbiIgd2lkdGg9IjEwMCIgeT0iMTMwIiB4PSIxMjAiIGVkaXRhYmxlPSJmYWxzZSIgZm9udHNpemU9IjExIj4KKwkgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCIgPgorCSAgICAgICAgICAgIDwhW0NEQVRBWworCQkgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTxjYW52YXMuc2FsdXRhdGlvbnNJbml0VmFsdWVzLmxlbmd0aDtpKyspeworCQkgICAgICAgICAgICAgICAgdGhpcy5hZGRJdGVtKGNhbnZhcy5zYWx1dGF0aW9uc0luaXRWYWx1ZXNbaV0ubGFiZWwudmFsdWUsY2FudmFzLnNhbHV0YXRpb25zSW5pdFZhbHVlc1tpXS5zYWx1dGF0aW9uc19pZCk7CisJCSAgICAgICAgICAgIH0KKwkJICAgICAgICAgICAgdGhpcy5zZWxlY3RJdGVtKFN0cmluZyhjYW52YXMuc2FsdXRhdGlvbnNJbml0VmFsdWVzWzBdLnNhbHV0YXRpb25zX2lkKSk7CisJICAgICAgICAgICAgXV0+CisJICAgICAgICA8L2hhbmRsZXI+IAorICAgICAgICA8L3Jlc2V0Q29tYm9ib3g+IAorICAgICAgICA8Y3VzdG9tRWRpdHRleHQgbmFtZT0iZmlyc3RuYW1lIiB5PSIxMzAiIHg9IjIzMCIgd2lkdGg9IjE2MCIgLz4KKyAgICAgICAgCisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIxMzYiIHdpZHRoPSIyMDAiIHk9IjE2MCIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPgorICAgICAgICA8Y3VzdG9tRWRpdHRleHQgbmFtZT0ibGFzdG5hbWUiIHk9IjE2MCIgeD0iMTIwIiB3aWR0aD0iMjcwIiAvPiAgIAorICAgICAgICAKKyAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjExNDMiIHdpZHRoPSIyMDAiIHk9IjE5MCIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPgorICAgICAgICAgPHJlc2V0Q29tYm9ib3ggbmFtZT0iX3RpbWVab25lIiBlZGl0YWJsZT0iZmFsc2UiIHk9IjE5MCIgd2lkdGg9IjI3MCIgeD0iMTIwIgorICAgICAgICAgICAgICAgICAgICAgICBmb250c2l6ZT0iMTEiIHN0eWxlPSJjb21wb25lbnRTdHlsZSI+CisgICAgICAgICAgICA8bGFiZWxkVGV4dExpc3RJdGVtIGRhdGFwYXRoPSJ0aW1lWm9uZVNldDovaXRlbSIgdGV4dD0iJHBhdGh7ICdmcm9udEVuZExhYmVsL3RleHQoKScgfSIgCisgICAgICAgICAgICAgICAgdmFsdWU9IiRwYXRoeyAnam5hbWUvdGV4dCgpJyB9IiAvPgorICAgICAgICAgPC9yZXNldENvbWJvYm94PiAgIAorICAgICAgICAgICAgIAorCTxsYWJlbFRleHQgbGFiZWxpZD0iMTExIiB3aWR0aD0iMzAwIiB5PSIyMjAiIHJlc2l6ZT0iZmFsc2UiIHg9IjIiLz4KKworICAgICAgICA8cmVzZXRDb21ib2JveCBuYW1lPSJsYW5ndWFnZXMiIHdpZHRoPSIyNzAiIHk9IjIyMCIgeD0iMTIwIiBlZGl0YWJsZT0iZmFsc2UiPgorICAgICAgICAgICAgPGxhYmVsZFRleHRMaXN0SXRlbSBkYXRhcGF0aD0ibGFuZ3VhZ2VzU2V0Oi9pdGVtIiB0ZXh0PSIkcGF0aHsgJ25hbWUvdGV4dCgpJyB9IgorICAgICAgICAgICAgICAgIHZhbHVlPSIkcGF0aHsgJ2xhbmd1YWdlX2lkL3RleHQoKScgfSIgLz4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgICAgICAgICAgdmFyIGcgPSBjYW52YXMuZ2V0VXNlckRhdGEoKTsKKyAgICAgICAgICAgICAgICBpZigkZGVidWcpIERlYnVnLndyaXRlKCJjaGVja0xvZ2luRGF0YS9nOiAiLGcpOworICAgICAgICAgICAgICAgIGlmIChnWyJ1c2VybGFuZyJdIT1udWxsKSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0SXRlbShnWyJ1c2VybGFuZyJdKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdEl0ZW0oU3RyaW5nKGNhbnZhcy50aGlzaGliLnVzZXJsYW5nKSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8L3Jlc2V0Q29tYm9ib3g+CisKKyAgICA8dmlldyByZXNvdXJjZT0ibWVzc2FnZWJveF9pbmZvX3JzYyIgeD0iMCIgeT0iMjUwIiAvPgorICAgIAorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMTE0OSIgeD0iMjQiIHk9IjI1MCIgIGZvbnRzdHlsZT0iaXRhbGljIgorICAgICAgICAgICAgICAgbXVsdGlsaW5lPSJ0cnVlIiB3aWR0aD0iMzY0IiAvPgorICAgICAgICAgICAgICAgCisJPGxhYmVsVGV4dCBsYWJlbGlkPSIxMTQ4IiB3aWR0aD0iMjAwIiB5PSIyODAiIHJlc2l6ZT0iZmFsc2UiIHg9IjIiLz4gIAorICAgICAgICA8bGFiZWxDaGVja2JveCBuYW1lPSJmb3JjZVRpbWVab25lQ2hlY2siIHdpZHRoPSIyNzAiIHk9IjI4MCIgeD0iMTMwIiBmb250c2l6ZT0iMTEiIC8+CisJCisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIxMzciIHdpZHRoPSIyMDAiIHk9IjMxMCIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPgorICAgICAgICA8Y3VzdG9tRWRpdHRleHQgbmFtZT0iZW1haWwiIHk9IjMxMCIgeD0iMTIwIiB3aWR0aD0iMjcwIiByZWdleHBUeXBlPSJlbWFpbCIgLz4KKyAgICAgICAgCQkJCQorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iNjA3IiB3aWR0aD0iMjAwIiB5PSIzNDAiIHJlc2l6ZT0iZmFsc2UiIHg9IjIiLz4KKyAgICAgICAgPGN1c3RvbUVkaXR0ZXh0IG5hbWU9InBob25lIiB5PSIzNDAiIHg9IjEyMCIgd2lkdGg9IjE3MCIgLz4KKyAgICAgICAgCisJPGxhYmVsVGV4dCBsYWJlbGlkPSIxNTAzIiB3aWR0aD0iMjAwIiB5PSIzNDAiIHJlc2l6ZT0iZmFsc2UiIHg9IjMwMCIvPiAgCisgICAgICAgIDxsYWJlbENoZWNrYm94IG5hbWU9InNlbmRTTVMiIHdpZHRoPSIxNzAiIHk9IjM0MCIgeD0iMzcwIiBmb250c2l6ZT0iMTEiIC8+CisKKyAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjEzOCIgd2lkdGg9IjIwMCIgeT0iMzcwIiByZXNpemU9ImZhbHNlIiB4PSIyIi8+CisgICAgICAgIDxkYXRlRmllbGQgbmFtZT0iYWdlIiB5PSIzNzAiIHg9IjEyMCIgd2lkdGg9IjI3MCIgLz4KKyAgICAgICAgCisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIxMzkiIHdpZHRoPSIyMDAiIHk9IjQwMCIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPgorICAgICAgICA8Y3VzdG9tRWRpdHRleHQgbmFtZT0ic3RyZWV0IiB5PSI0MDAiIHg9IjEyMCIgd2lkdGg9IjIyMCIgLz4KKyAgICAgICAgPGN1c3RvbUVkaXR0ZXh0IG5hbWU9ImhvdXNlIiB5PSI0MDAiIHg9IjM1MCIgd2lkdGg9IjQwIiAvPgorICAgICAgICAKKyAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjE0MCIgd2lkdGg9IjIwMCIgeT0iNDMwIiByZXNpemU9ImZhbHNlIiB4PSIyIi8+CisgICAgICAgIDxjdXN0b21FZGl0dGV4dCBuYW1lPSJ6aXAiIHk9IjQzMCIgeD0iMTIwIiB3aWR0aD0iNzAiIC8+ICAgCisgICAgICAgIDxjdXN0b21FZGl0dGV4dCBuYW1lPSJ0b3duIiB5PSI0MzAiIHg9IjIwMCIgd2lkdGg9IjE5MCIgLz4gICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgIAorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMTQxIiB3aWR0aD0iMjAwIiB5PSI0NjAiIHJlc2l6ZT0iZmFsc2UiIHg9IjIiLz4gIAorCQk8ZHluYW1pY0NvbWJvYm94IG5hbWU9InN0YXRlIiB3aWR0aD0iMjcwIiB5PSI0NjAiIHg9IjEyMCIKKwkJCQkJCSB0ZXh0PSJTd2l0emVybGFuZCIgdmFsdWU9IjIwNCIgLz4KKyAgICAKKyAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjE1OCIgd2lkdGg9IjIwMCIgeT0iNDkwIiByZXNpemU9ImZhbHNlIiB4PSIyIi8+ICAKKyAgICAgICAgPHJlc2V0Q29tYm9ib3ggbmFtZT0ic3RhdHVzIiB3aWR0aD0iMjcwIiB5PSI0OTAiIHg9IjEyMCIgZWRpdGFibGU9ImZhbHNlIiBmb250c2l6ZT0iMTEiPgorCSAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0IiA+CisJICAgICAgICAgICAgPCFbQ0RBVEFbCisJICAgICAgICAgICAgdGhpcy5hZGRJdGVtKGNhbnZhcy5nZXRMYWJlbE5hbWUoMTU5KSwnMCcpOworCSAgICAgICAgICAgIHRoaXMuYWRkSXRlbShjYW52YXMuZ2V0TGFiZWxOYW1lKDE2MCksJzEnKTsKKwkgICAgICAgICAgICB0aGlzLnNlbGVjdEl0ZW0oJzAnKTsKKwkgICAgICAgICAgICBdXT4KKwkgICAgICAgIDwvaGFuZGxlcj4gCisgICAgICAgIDwvcmVzZXRDb21ib2JveD4gCisKKworICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMTY5IiB3aWR0aD0iMjAwIiB5PSI1MjAiIHJlc2l6ZT0iZmFsc2UiIHg9IjIiLz4gIAorICAgICAgICA8cmVzZXRDb21ib2JveCBuYW1lPSJsZXZlbCIgd2lkdGg9IjI3MCIgeT0iNTIwIiB4PSIxMjAiIGVkaXRhYmxlPSJmYWxzZSIgZm9udHNpemU9IjExIj4KKwkgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCIgPgorCSAgICAgICAgICAgIDwhW0NEQVRBWworCSAgICAgICAgICAgIHRoaXMuYWRkSXRlbShjYW52YXMuZ2V0TGFiZWxOYW1lKDE2NiksJzEnKTsKKwkgICAgICAgICAgICB0aGlzLmFkZEl0ZW0oY2FudmFzLmdldExhYmVsTmFtZSgxNjcpLCcyJyk7CisJCQkJdGhpcy5hZGRJdGVtKGNhbnZhcy5nZXRMYWJlbE5hbWUoMTY4KSwnMycpOworCQkJCXRoaXMuYWRkSXRlbShjYW52YXMuZ2V0TGFiZWxOYW1lKDEzMTEpLCc0Jyk7CisJICAgICAgICAgICAgdGhpcy5zZWxlY3RJdGVtKCcxJyk7CisJICAgICAgICAgICAgXV0+CisJICAgICAgICA8L2hhbmRsZXI+IAorICAgICAgICA8L3Jlc2V0Q29tYm9ib3g+IAorCQorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMTQyIiB3aWR0aD0iMjAwIiB5PSI1NTAiIHJlc2l6ZT0iZmFsc2UiIHg9IjIiLz4KKyAgICAgICAgPGN1c3RvbVNjcm9sbEVkaXR0ZXh0IG5hbWU9ImFkcmVzc19jb21tZW50IiB5PSI1NTAiIHg9IjEyMCIgd2lkdGg9IjI3MCIgCisgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjcwIiAvPgorICAgICAgIAorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMTYxIiB3aWR0aD0iMjAwIiB5PSI2MzAiIHJlc2l6ZT0iZmFsc2UiIHg9IjIiLz4gICAgIAorICAgIDxzaW1wbGVWYWx1ZUxpc3QgbmFtZT0iX29yZ2FuaXNhdGlvbnNsaXN0IiB5PSI2MzAiIHg9IjEyMCIgd2lkdGg9IjI3MCIgaGVpZ2h0PSIxMDAiIAorCQltdWx0aXNlbGVjdD0idHJ1ZSIgLz4KKwkKKwk8Ymx1ZUJ1dHRvbiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHJlc291cmNlSXRlbT0iZWRpdF9hZGRfcnNjIgorICAgICAgICAJCQl4X2luc2V0UmVzb3VyY2U9IjIiIHlfaW5zZXRSZXNvdXJjZT0iMiIgeT0iNjMyIiB4PSIzOTYiCisgICAgICAgIAkJCXdpZHRoX2luc2V0UmVzb3VyY2U9IjE2IiBoZWlnaHRfaW5zZXRSZXNvdXJjZT0iMTYiPgorCQk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKwkJCXRoaXMucGFyZW50LmFkZE9yZ2FuaXNhdGlvblRvVXNlcigpOworCQk8L2hhbmRsZXI+CisJCTxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iMTcyIiAvPgorCTwvYmx1ZUJ1dHRvbj4KKwkKKwk8bWV0aG9kIG5hbWU9ImFkZE9yZ2FuaXNhdGlvblRvVXNlciI+CisJCS8vaWYgKHRoaXMudXNlcl9pZCE9MCkKKwkJCW5ldyBsei5jaG9vc2VPcmdhbmlzYXRpb25XaW5kb3cocGFyZW50LHtyZWZPYmo6dGhpcyxpdGVtX2lkOnRoaXMudXNlcl9pZH0pOworCTwvbWV0aG9kPgkKKwkKKwk8Ymx1ZUJ1dHRvbiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHJlc291cmNlSXRlbT0iYnV0dG9uX2NhbmNlbF9yc2MiCisgICAgICAgIAkJCXhfaW5zZXRSZXNvdXJjZT0iMiIgeV9pbnNldFJlc291cmNlPSIyIiB5PSI2MzIiIHg9IjQxNiIKKyAgICAgICAgCQkJd2lkdGhfaW5zZXRSZXNvdXJjZT0iMTYiIGhlaWdodF9pbnNldFJlc291cmNlPSIxNiI+CisJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorCQkJbmV3IGx6LmNvbmZpcm1EZWxldGVXaW5kb3coY2FudmFzLm1haW5fY29udGVudC5fY29udGVudC5pbm5lcix7cmVmT2JqOnRoaXN9KTsKKwkJPC9oYW5kbGVyPgorCQk8bWV0aG9kIG5hbWU9ImNvbmZpcm1EZWxldGUiPgorCQkJaWYgKHRoaXMucGFyZW50Ll9vcmdhbmlzYXRpb25zbGlzdC5fc2VsZWN0ZWQhPW51bGwpCisJCQkJZm9yICh2YXIgaSBpbiB0aGlzLnBhcmVudC5fb3JnYW5pc2F0aW9uc2xpc3QuX3NlbGVjdGVkKQl0aGlzLnBhcmVudC5fb3JnYW5pc2F0aW9uc2xpc3QucmVtb3ZlSXRlbSh0aGlzLnBhcmVudC5fb3JnYW5pc2F0aW9uc2xpc3QuX3NlbGVjdGVkW2ldLnZhbHVlKTsKKwkJPC9tZXRob2Q+CisJCTxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iMTc2IiAvPgorCTwvYmx1ZUJ1dHRvbj4KKwkKKyAgICA8IS0tIFNJUCBBY2NvdW50IERhdGEgLS0+CisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSI4OTMiIHdpZHRoPSIyMDAiIHk9Ijc3MCIgcmVzaXplPSJmYWxzZSIgCisgICAgICAgICAgICAgICB4PSIwIiBmb250c3R5bGU9ImJvbGQiIC8+ICAgCisgICAgCisgICAgPHZpZXcgcmVzb3VyY2U9Im1lc3NhZ2Vib3hfaW5mb19yc2MiIHg9IjAiIHk9Ijc5MCIgLz4KKyAgICAKKyAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9Ijg5NCIgeD0iMjQiIHk9Ijc5MCIgIGZvbnRzdHlsZT0iaXRhbGljIgorICAgICAgICAgICAgICAgbXVsdGlsaW5lPSJ0cnVlIiB3aWR0aD0iMzY0IiAvPgorCisgICAgPCEtLSBDb21tdW5pdHkgU2V0dGluZ3MgLS0+CisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIxMTU5IiB3aWR0aD0iMjAwIiB5PSI5NTAiIHJlc2l6ZT0iZmFsc2UiIAorICAgICAgICAgICAgICAgeD0iMCIgZm9udHN0eWxlPSJib2xkIiAvPiAgICAgIAkJCQkKKyAgICAgICAgCQkJCQorICAgCTxyYWRpb2dyb3VwIG5hbWU9InNob3dDb250YWN0RGF0YSIgbGF5b3V0PSJjbGFzczpzaW1wbGVsYXlvdXQ7YXhpczp5O3NwYWNpbmc6MiIgeT0iOTgwIiB4PSIxMCI+CisgICAgICAgIDxsYWJlbFJhZGlvQnV0dG9uIGxhYmVsaWQ9IjExNjAiIHZhbHVlPSIxIiAvPgorICAgICAgICA8bGFiZWxSYWRpb0J1dHRvbiBsYWJlbGlkPSIxMTY4IiB2YWx1ZT0iMiIgLz4KKyAgICAgICAgPGxhYmVsUmFkaW9CdXR0b24gbGFiZWxpZD0iMTE2OSIgdmFsdWU9IjMiIC8+CisgICAgPC9yYWRpb2dyb3VwPiAKKyAgICAKKwk8bGFiZWxUZXh0IGxhYmVsaWQ9IjExNjIiIHdpZHRoPSIyMDAiIHk9IjEwNDAiIHJlc2l6ZT0iZmFsc2UiIHg9IjIiLz4KKyAgICAgICAgPGN1c3RvbVNjcm9sbEVkaXR0ZXh0IG5hbWU9InVzZXJPZmZlcnMiIHk9IjEwNDAiIHg9IjEyMCIgd2lkdGg9IjI3MCIgCisgICAgICAgICAgIAkJCSBoZWlnaHQ9IjEwMCIgLz4JCisKKwk8bGFiZWxUZXh0IGxhYmVsaWQ9IjExNjMiIHdpZHRoPSIyMDAiIHk9IjExNTAiIHJlc2l6ZT0iZmFsc2UiIHg9IjIiLz4KKyAgICAgICAgPGN1c3RvbVNjcm9sbEVkaXR0ZXh0IG5hbWU9InVzZXJTZWFyY2hzIiB5PSIxMTUwIiB4PSIxMjAiIHdpZHRoPSIyNzAiIAorICAgICAgICAgICAJCQkgaGVpZ2h0PSIxMDAiIC8+CQorCQkgICAgIAkJCQkKKwk8dmlldyB5PSIxNDQwIiAvPiAgICAgICAgCQkJCQorICAgICAgICAJCQkJICAgICAgICAJCQkJCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NoYXQvY2hhdEJhck1lbnUubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jaGF0L2NoYXRCYXJNZW51Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MmYyZjMwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jaGF0L2NoYXRCYXJNZW51Lmx6eApAQCAtMCwwICsxLDEwOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+DQorPCEtLQ0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAgDQorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICAgIAkgIA0KKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICB1bmRlciB0aGUgTGljZW5zZS4NCisgIA0KKy0tPg0KKzxsaWJyYXJ5Pg0KKw0KKzxjbGFzcyBuYW1lPSJjaGF0QmFyTWVudSIgZXh0ZW5kcz0idmlldyIgd2lkdGg9IiR7IHBhcmVudC53aWR0aCB9IiB4PSIwIiANCisgICAgaGVpZ2h0PSIyMCIgbGF5b3V0PSJheGlzOng7c3BhY2luZzoxO2luc2V0OjIiIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignYmFzZU1vdXNlY29sb3JpemVyJykgfSI+DQorICAgIA0KKyAgICA8YXR0cmlidXRlIG5hbWU9InN0YXRpY3dpZHRoIiB0eXBlPSJudW1iZXIiIHZhbHVlPSIxMjAiIC8+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudEJ0biIgdmFsdWU9Im51bGwiIC8+DQorICAgIA0KKyAgICA8ZXZlbnQgbmFtZT0ib25SZW1vdmVXaW5kb3ciIC8+DQorICAgIA0KKyAgICA8bWV0aG9kIG5hbWU9ImdldEN1cnJlbnRTaXplIj4NCisgICAgICAgIDwhW0NEQVRBWw0KKyAgICAgICAgICAgIGlmICggKCh0aGlzLnN1YnZpZXdzLmxlbmd0aCsxKSoodGhpcy5zdGF0aWN3aWR0aCsxKSkgPD0gdGhpcy53aWR0aCkgew0KKyAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zdGF0aWN3aWR0aDsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICB2YXIgbmV3d2lkdGggPSBNYXRoLnJvdW5kKCh0aGlzLndpZHRoLXRoaXMuc3Vidmlld3MubGVuZ3RoKS8odGhpcy5zdWJ2aWV3cy5sZW5ndGgrMSkpOw0KKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTx0aGlzLnN1YnZpZXdzLmxlbmd0aDtpKyspIHsNCisgICAgICAgICAgICAgICAgICAgIHRoaXMuc3Vidmlld3NbaV0uc2V0QXR0cmlidXRlKCd3aWR0aCcsbmV3d2lkdGgpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIHJldHVybiBuZXd3aWR0aDsNCisgICAgICAgICAgICB9ICAgDQorICAgICAgICBdXT4NCisgICAgPC9tZXRob2Q+DQorICAgIA0KKyAgICA8aGFuZGxlciBuYW1lPSJvbndpZHRoIj4NCisgICAgICAgIDwhW0NEQVRBWw0KKyAgICAgICAgICAgIGlmICggKCh0aGlzLnN1YnZpZXdzLmxlbmd0aCkqKHRoaXMuc3RhdGljd2lkdGgrMSkpIDw9IHRoaXMud2lkdGgpIHsNCisgICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8dGhpcy5zdWJ2aWV3cy5sZW5ndGg7aSsrKSB7DQorICAgICAgICAgICAgICAgICAgICB0aGlzLnN1YnZpZXdzW2ldLnNldEF0dHJpYnV0ZSgnd2lkdGgnLHRoaXMuc3RhdGljd2lkdGgpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgdmFyIG5ld3dpZHRoID0gTWF0aC5yb3VuZCgodGhpcy53aWR0aC10aGlzLnN1YnZpZXdzLmxlbmd0aCkvKHRoaXMuc3Vidmlld3MubGVuZ3RoKSk7DQorICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPHRoaXMuc3Vidmlld3MubGVuZ3RoO2krKykgew0KKyAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJ2aWV3c1tpXS5zZXRBdHRyaWJ1dGUoJ3dpZHRoJyxuZXd3aWR0aCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9IA0KKyAgICAgICAgXV0+DQorICAgIDwvaGFuZGxlcj4NCisgICAgDQorICAgIDxtZXRob2QgbmFtZT0icmVtb3ZlT2JqZWN0IiBhcmdzPSJidG4iPg0KKyAgICAJdGhpcy5yZW1vdmVPYmplY3RTeW5jZWQoYnRuKTsNCisgICAgCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJyZW1vdmVPYmplY3QgOjogIixidG4pOw0KKyAgICAJdGhpcy5vblJlbW92ZVdpbmRvdy5zZW5kRXZlbnQoYnRuLm9ialJlZi5yZWZPYmoucHVibGljU0lEKTsNCisgICAgPC9tZXRob2Q+DQorICAgIA0KKyAgICA8bWV0aG9kIG5hbWU9InJlbW92ZU9iamVjdFN5bmNlZCIgYXJncz0iYnRuIj4NCisgICAgCXZhciByZW1vdmVDdXJyZW50ID0gZmFsc2U7DQorICAgIAlpZiAodGhpcy5jdXJyZW50QnRuID09IGJ0bil7DQorICAgIAkJcmVtb3ZlQ3VycmVudCA9IHRydWU7DQorICAgIAl9DQorICAgIAlidG4ub2JqUmVmLmRlc3Ryb3koKTsNCisgICAgICAgIGJ0bi5kZXN0cm95KCk7DQorICAgICAgICBpZiAodGhpcy5zdWJ2aWV3cy5sZW5ndGggIT0gMCkgew0KKwkgICAgICAgIGlmIChyZW1vdmVDdXJyZW50KSB7DQorCSAgICAgICAgCXRoaXMuc2VuZEFjdGl2ZVdpbmRvd1N5bmNlZCh0aGlzLnN1YnZpZXdzW3RoaXMuc3Vidmlld3MubGVuZ3RoLTFdKTsNCisJICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICANCisgICAgPC9tZXRob2Q+DQorDQorICAgIA0KKyAgICA8bWV0aG9kIG5hbWU9InNlbmRBY3RpdmVXaW5kb3ciIGFyZ3M9ImJ0bix3aW4iPg0KKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInNlbmRBY3RpdmVXaW5kb3c6ICIsIGJ0biwgd2luKTsNCisgICAgICAgIHRoaXMuc2VuZEFjdGl2ZVdpbmRvd1N5bmNlZChidG4pOw0KKyAgICA8L21ldGhvZD4NCisgICAgDQorICAgIDxtZXRob2QgbmFtZT0ic2VuZEFjdGl2ZVdpbmRvd1N5bmNlZCIgYXJncz0iYnRuIj4NCisgICAgCTwhW0NEQVRBWw0KKyAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRCdG4gIT0gbnVsbCl7DQorICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudEJ0bi5pc2FjdGl2ZT1mYWxzZTsNCisgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QnRuLm9ialJlZi5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCAiaGlkZGVuIik7DQorICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzZW5kQWN0aXZlV2luZG93MTogIix0aGlzLmN1cnJlbnRCdG4pOw0KKyAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRCdG4uX21pbmltaXplYnRuX21vLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ2hpZGRlbicpOw0KKyAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRCdG4uX21pbmltaXplYnRuX2RuLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ2hpZGRlbicpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICB0aGlzLmN1cnJlbnRCdG4gPSBidG47DQorICAgICAgICAgICAgdGhpcy5jdXJyZW50QnRuLm9ialJlZi5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7DQorICAgICAgICAJdGhpcy5jdXJyZW50QnRuLm9ialJlZi5icmluZ1RvRnJvbnQoKTsNCisgICAgICAgICAgICBpZiAoJGRlYnVnKSAgLy9EZWJ1Zy53cml0ZSgic2VuZEFjdGl2ZVdpbmRvdzI6ICIsdGhpcy5jdXJyZW50QnRuKTsNCisgICAgICAgICAgICB0aGlzLmN1cnJlbnRCdG4uX21pbmltaXplYnRuX21vLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ2hpZGRlbicpOw0KKyAgICAgICAgICAgIHRoaXMuY3VycmVudEJ0bi5fbWluaW1pemVidG5fZG4uc2V0QXR0cmlidXRlKCd2aXNpYmlsaXR5JywndmlzaWJsZScpOw0KKyAgICAgICAgICAgIHRoaXMuY3VycmVudEJ0bi5pc2FjdGl2ZT10cnVlOw0KKwkgICAgICAgCXRoaXMuY3VycmVudEJ0bi5vYmpSZWYuc2VuZEFjdGl2ZVdpbmRvdygpOw0KKyAgICAgICAgXV0+DQorICAgIDwvbWV0aG9kPg0KKyAgICANCis8L2NsYXNzPg0KKw0KKzwvbGlicmFyeT4NCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NoYXQvY2hhdE1pbmlCdXR0b24ubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jaGF0L2NoYXRNaW5pQnV0dG9uLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMGUxYmVlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jaGF0L2NoYXRNaW5pQnV0dG9uLmx6eApAQCAtMCwwICsxLDE3MSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+DQorPCEtLQ0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAgDQorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICAgIAkgIA0KKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICB1bmRlciB0aGUgTGljZW5zZS4NCisgIA0KKy0tPg0KKzxsaWJyYXJ5Pg0KKw0KKzxjbGFzcyBuYW1lPSJjaGF0TWluaUJ1dHRvbiIgZXh0ZW5kcz0idmlldyIgd2lkdGg9IjI1MCIgaGVpZ2h0PSIxOCIgeT0iMiINCisgICAgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdiYXNlYmdjb2xvcml6ZXInKSB9Ij4NCisgICAgIA0KKyAgICA8YXR0cmlidXRlIG5hbWU9ImJ0bk5hbWUiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4NCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJvYmpSZWYiIHZhbHVlPSJudWxsIiAvPg0KKw0KKyAgICA8YXR0cmlidXRlIG5hbWU9InppZWx4IiB2YWx1ZT0iMjAwIiB0eXBlPSJudW1iZXIiIC8+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0iemllbHdpZHRoIiB2YWx1ZT0iMTAwIiB0eXBlPSJudW1iZXIiIC8+ICAgIA0KKyAgICANCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpc2FjdGl2ZSIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+DQorICAgIA0KKyAgICA8YXR0cmlidXRlIG5hbWU9ImlzSGlkZGVuIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+DQorICAgIA0KKyAgICA8YXR0cmlidXRlIG5hbWU9ImlzQ2xvc2FibGUiIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPg0KKyAgICANCisgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4NCisgICAgICAgIHRoaXMuY2FsY1RleHRXaWR0aCgpOw0KKyAgICAgICAgcGFyZW50Lm9ud2lkdGguc2VuZEV2ZW50KCk7DQorICAgIDwvaGFuZGxlcj4NCisgICAgDQorICAgIDxoYW5kbGVyIG5hbWU9Im9ud2lkdGgiPg0KKyAgICAgICAgaWYgKHRoaXMuaXNpbml0ZWQpew0KKyAgICAgICAgICAgIHRoaXMuY2FsY1RleHRXaWR0aCgpOw0KKyAgICAgICAgfQ0KKyAgICA8L2hhbmRsZXI+DQorICAgIA0KKyAgICA8bWV0aG9kIG5hbWU9ImRpc2FibGVJdGVtIj4NCisgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImRpc2FibGVJdGVtIDo6IHNldCB2aXNpYmlsaXR5IHRvIGhpZGRlbiIpOw0KKyAgICAgICAgdGhpcy5pc0hpZGRlbiA9IHRydWU7DQorICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOw0KKyAgICAgICAgLy90aGlzLmRlc3Ryb3koKTsNCisgICAgPC9tZXRob2Q+DQorICAgIA0KKyAgICA8bWV0aG9kIG5hbWU9ImVuYWJsZUl0ZW0iPg0KKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7DQorICAgICAgICB0aGlzLmlzSGlkZGVuID0gZmFsc2U7DQorICAgIDwvbWV0aG9kPg0KKyAgICANCisgICAgPG1ldGhvZCBuYW1lPSJjYWxjVGV4dFdpZHRoIj4NCisgICAgICAgIDwhW0NEQVRBWw0KKyAgICAgICAgICAgIGlmICh0aGlzLmlzSGlkZGVuKSB7DQorICAgICAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgLy8vLy8vLy9pZiAoJGRlYnVnKSAgLy9EZWJ1Zy53cml0ZSh0aGlzLHRoaXMuX3RleHQsdGhpcy5fdGV4dC5nZXRUZXh0V2lkdGgoKSk7DQorICAgICAgICAgICAgaWYgKHRoaXMuX3RleHQuZ2V0VGV4dFdpZHRoKCk+KHRoaXMud2lkdGgtMjQpKSB7DQorICAgICAgICAgICAgICAgIHRoaXMuX2xvbmcuc2V0QXR0cmlidXRlKCd2aXNpYmlsaXR5JywndmlzaWJsZScpOw0KKyAgICAgICAgICAgICAgICB0aGlzLl90ZXh0LnNldEF0dHJpYnV0ZSgnd2lkdGgnLHRoaXMud2lkdGgtMjYpOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIHRoaXMuX2xvbmcuc2V0QXR0cmlidXRlKCd2aXNpYmlsaXR5JywnaGlkZGVuJyk7DQorICAgICAgICAgICAgICAgIHRoaXMuX3RleHQuc2V0QXR0cmlidXRlKCd3aWR0aCcsdGhpcy53aWR0aC0xOCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgXV0+ICAgICAgICANCisgICAgPC9tZXRob2Q+DQorICAgICAgICANCisgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+DQorICAgICAgICBpZiAodGhpcy5pc0hpZGRlbikgew0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgICAgIHRoaXMuX21pbmltaXplYnRuX21vLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ3Zpc2libGUnKTsNCisgICAgICAgIHRoaXMuX21pbmltaXplYnRuX2RuLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ2hpZGRlbicpOw0KKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIiA6OiBvbmNsaWNrIDo6ICIpOw0KKyAgICAgICAgdGhpcy5zZW5kQWN0aXZlV2luZG93KHRoaXMub2JqUmVmKTsNCisgICAgPC9oYW5kbGVyPg0KKyAgICANCisgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZW92ZXIiPg0KKyAgICAgICAgaWYgKHRoaXMuaXNIaWRkZW4pIHsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgICAgICB0aGlzLl9taW5pbWl6ZWJ0bl9tby5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCd2aXNpYmxlJyk7DQorICAgICAgICB0aGlzLl9taW5pbWl6ZWJ0bl9kbi5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCdoaWRkZW4nKTsNCisgICAgPC9oYW5kbGVyPg0KKyAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3V0Ij4NCisgICAgICAgIGlmICh0aGlzLmlzSGlkZGVuKSB7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHRoaXMuaXNhY3RpdmUpIHsNCisgICAgICAgICAgICB0aGlzLl9taW5pbWl6ZWJ0bl9tby5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCdoaWRkZW4nKTsNCisgICAgICAgICAgICB0aGlzLl9taW5pbWl6ZWJ0bl9kbi5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCd2aXNpYmxlJyk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHRoaXMuX21pbmltaXplYnRuX21vLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ2hpZGRlbicpOw0KKyAgICAgICAgICAgIHRoaXMuX21pbmltaXplYnRuX2RuLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ2hpZGRlbicpOw0KKyAgICAgICAgfSAgICAgICAgDQorICAgIDwvaGFuZGxlcj4NCisgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZWRvd24iPg0KKyAgICAgICAgaWYgKHRoaXMuaXNIaWRkZW4pIHsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9ICAgICAgICANCisgICAgICAgIHRoaXMuX21pbmltaXplYnRuX21vLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ2hpZGRlbicpOw0KKyAgICAgICAgdGhpcy5fbWluaW1pemVidG5fZG4uc2V0QXR0cmlidXRlKCd2aXNpYmlsaXR5JywndmlzaWJsZScpOw0KKyAgICA8L2hhbmRsZXI+DQorICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2V1cCI+DQorICAgICAgICBpZiAodGhpcy5pc0hpZGRlbikgew0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0gICAgICAgIA0KKyAgICAgICAgdGhpcy5fbWluaW1pemVidG5fbW8uc2V0QXR0cmlidXRlKCd2aXNpYmlsaXR5JywndmlzaWJsZScpOw0KKyAgICAgICAgdGhpcy5fbWluaW1pemVidG5fZG4uc2V0QXR0cmlidXRlKCd2aXNpYmlsaXR5JywnaGlkZGVuJyk7DQorICAgIDwvaGFuZGxlcj4NCisgICAgDQorICAgIDxtZXRob2QgbmFtZT0ic2VuZEFjdGl2ZVdpbmRvdyIgYXJncz0id2luIj4NCisgICAgICAgIHRoaXMucGFyZW50LnNlbmRBY3RpdmVXaW5kb3codGhpcyx3aW4pOw0KKyAgICA8L21ldGhvZD4gICAgDQorDQorCTxtZXRob2QgbmFtZT0iYWN0aXZhdGVTeW5jZWQiPg0KKwkJdGhpcy5wYXJlbnQuc2VuZEFjdGl2ZVdpbmRvd1N5bmNlZCh0aGlzLHdpbik7DQorCTwvbWV0aG9kPg0KKyAgICANCisgICAgPHZpZXcgbmFtZT0iX21pbmltaXplYnRuX21vIiB3aWR0aD0iJHsgcGFyZW50LndpZHRoLTIgfSIgaGVpZ2h0PSIxNiINCisgICAgICAgIGJnY29sb3I9IjB4RkZGRkZGIiBvcGFjaXR5PSIwLjMiIHZpc2liaWxpdHk9ImhpZGRlbiIgeD0iMSIgeT0iMSIgLz4NCisNCisgICAgPHZpZXcgbmFtZT0iX21pbmltaXplYnRuX2RuIiB3aWR0aD0iJHsgcGFyZW50LndpZHRoLTIgfSIgaGVpZ2h0PSIxNiINCisgICAgICAgIGJnY29sb3I9IjB4MDAwMDAwIiBvcGFjaXR5PSIwLjMiIHZpc2liaWxpdHk9ImhpZGRlbiIgeD0iMSIgeT0iMSIgLz4NCisgICAgDQorDQorICAgIDx0ZXh0IHRleHQ9IiR7IHBhcmVudC5idG5OYW1lIH0iIGZnY29sb3I9IjB4RkZGRkZGIiByZXNpemU9ImZhbHNlIiANCisgICAgICAgIHg9IjEiIGZvbnRzaXplPSIxMCIgbmFtZT0iX3RleHQiIC8+DQorICAgIA0KKyAgICAgICAgPHZpZXcgeT0iMSIgeD0iJHsgcGFyZW50LndpZHRoLTE4IH0iIG5hbWU9Il9jbG9zZSINCisgICAgICAgICAgICByZXNvdXJjZT0iYnRuX3ByZXNlbnRlcl9jbG9zZSINCisgICAgICAgICAgICB2aXNpYmxlPSIkb25jZXsgcGFyZW50LmlzQ2xvc2FibGUgfSIgDQorICAgICAgICAgICAgb25tb3VzZW92ZXI9InRoaXMuc2V0QXR0cmlidXRlKCdmcmFtZScsMikiDQorICAgICAgICAgICAgb25tb3VzZW91dD0idGhpcy5zZXRBdHRyaWJ1dGUoJ2ZyYW1lJywxKSINCisgICAgICAgICAgICBvbm1vdXNlZG93bj0idGhpcy5zZXRBdHRyaWJ1dGUoJ2ZyYW1lJywzKSINCisgICAgICAgICAgICBvbm1vdXNldXA9InRoaXMuc2V0QXR0cmlidXRlKCdmcmFtZScsMSkiID4NCisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4NCisgICAgICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2ZyYW1lJywyKTsNCisgICAgICAgICAgICAgICAgbmV3IGx6LmNvbmZpcm1hdGlvblNpbmdsZShjYW52YXMsew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZk9iajp0aGlzLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsaWRlcnJvcjoxNDk3LA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDaGVja0JveDpmYWxzZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KKyAgICAgICAgICAgIDwvaGFuZGxlcj4NCisgICAgICAgICAgICA8bWV0aG9kIG5hbWU9InNlbmRDb25maXJtYXRpb24iIGFyZ3M9ImJvb2wsYXNrQWdhaW4iPg0KKyAgICAgICAgICAgICAgICBpZiAoYm9vbCkgew0KKyAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQucGFyZW50LnJlbW92ZU9iamVjdCh0aGlzLnBhcmVudCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICA8L21ldGhvZD4NCisgICAgICAgICAgICA8bWV0aG9kIG5hbWU9InNlbmROb0NvbmZpcm1hdGlvbiI+DQorICAgICAgICAgICAgCQ0KKyAgICAgICAgICAgIDwvbWV0aG9kPg0KKyAgICAgICAgICAgIDxsYWJlbFRvb2x0aXAgdGV4dD0iY2xvc2UiIC8+DQorICAgICAgICA8L3ZpZXc+ICAgICANCisgDQorICAgIDx0ZXh0IHk9IjEiIG5hbWU9Il9sb25nIiB0ZXh0PSIuLi4iIA0KKyAgICAgICAgeD0iJHsgcGFyZW50LndpZHRoLTI4IH0iIGZvbnRzaXplPSIxMCIgLz4NCisNCisgICAgPGxhYmVsVG9vbHRpcCB0ZXh0PSIkeyBwYXJlbnQuYnRuTmFtZSB9IiAvPg0KKzwvY2xhc3M+DQorDQorPC9saWJyYXJ5Pg0KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY2hhdC9jaGF0UGFydGljaXBhbnRzLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY2hhdC9jaGF0UGFydGljaXBhbnRzLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOGZhZmZiCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jaGF0L2NoYXRQYXJ0aWNpcGFudHMubHp4CkBAIC0wLDAgKzEsMTU1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCQorPCEtLS0gaXQgc2hvd3MgY2hhdCBwYXJ0aWNpcGFudHMuIC0tPgorPGNsYXNzIG5hbWU9ImNoYXRQYXJ0aWNpcGFudHMiIGV4dGVuZHM9InZpZXciIGhlaWdodD0iNDAiIGNsaWNrYWJsZT0idHJ1ZSIKKwkgICB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCB9IiBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmJnQ29sb3JNZW51SXRlbXMgfSI+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJ1c2VyX2lkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0idXNlcm5hbWUiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwk8YXR0cmlidXRlIG5hbWU9ImNvbm5lY3RlZFNpbmNlIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJwdWJsaWNTSUQiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9InBpY3R1cmVfdXJpIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciLz4KKwkKKwk8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorCQk8IVtDREFUQVsKKwkJCWlmKCRkZWJ1ZykgRGVidWcud3JpdGUoImNoYXRQYXJ0aWNpcGFudHMvcGljdHVyZV91cmk6ICIsdGhpcy5waWN0dXJlX3VyaSk7CisJCQkKKwkJCWlmICh0aGlzLnBpY3R1cmVfdXJpICE9IG51bGwgJiYgdGhpcy5waWN0dXJlX3VyaS5zdGFydHNXaXRoKCJodHRwIikpIHsKKwkJCQkKKwkJCQl0aGlzLl91c2VycGljLnNldEF0dHJpYnV0ZSgnc3JjJyx0aGlzLnBpY3R1cmVfdXJpKTsgIAorCQkJCQorCQkJfSBlbHNlIHsKKwkJCQkKKwkJCQl2YXIgZG93bmxvYWR1cmwgPSBjYW52YXMuZ2V0VXJsKCkgKyAnRG93bmxvYWRIYW5kbGVyP2ZpbGVOYW1lPUNIQVQnCisgICAgICAgICAgICAgICAgICAgICAgICArJyZtb2R1bGVOYW1lPWNoYXQmcGFyZW50UGF0aD0mcm9vbV9pZD0nCisgICAgICAgICAgICAgICAgICAgICAgICArJyZyZW1vdGVVc2VyaWQ9Jyt0aGlzLnVzZXJfaWQKKyAgICAgICAgICAgICAgICAgICAgICAgICsnJnNpZD0nK2NhbnZhcy5zZXNzaW9uSWQ7CisgICAgICAgICAgICAgICAgLy9EZWJ1Zy53cml0ZSgiZG93bmxvYWR1cmwgIitkb3dubG9hZHVybCk7CisgICAgICAgICAgICAgICAgdGhpcy5fdXNlcnBpYy5zZXRBdHRyaWJ1dGUoJ3NyYycsZG93bmxvYWR1cmwpOyAgCisgICAgICAgICAgICAgICAgCisJCQl9CisJICAgICAgICAKKwkgICAgICAgIC8vRGVidWcud3JpdGUoIlRJTUU6ICIrdGhpcy51c2VydGltZSk7CisgICAgICAgIF1dPgorCTwvaGFuZGxlcj4KKwkKKwk8IS0tCisgICAgcHVibGljIExvbmcgcmVxdWVzdFVzZXJUb0NvbnRhY3RMaXN0KFN0cmluZyBTSUQsIExvbmcgdXNlclRvQWRkX2lkLCAKKyAgICAgICAgICAgICAgICBTdHJpbmcgZG9tYWluLCBTdHJpbmcgcG9ydCwgU3RyaW5nIHdlYmFwcCkKKyAgICAgLS0+CisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0icmVxdWVzdFVzZXJUb0NvbnRhY3RMaXN0IiBmdW5jbmFtZT0idXNlcnNlcnZpY2UucmVxdWVzdFVzZXJUb0NvbnRhY3RMaXN0IiAKKyAgICAgICAgICAgICAgICAgIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiBhY3RpdmVFcnJvckhhbmRsZXI9InRydWUiID4gICAgICAKKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gY2FudmFzLnNlc3Npb25JZDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBhcmVudC51c2VyX2lkOyA8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBjYW52YXMucnRtcGhvc3Rsb2NhbDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gY2FudmFzLnJlZDVodHRwcG9ydDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gY2FudmFzLmh0dHBSb290S2V5OyA8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJyZXF1ZXN0VXNlclRvQ29udGFjdExpc3Q6ICIsdmFsdWUpOworICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgbmV3IGx6LmxhYmVsZXJyb3JQb3B1cChjYW52YXMse2xhYmVsaWQ6MTI2NyxlcnJvcmxhYmVsaWQ6MTI2Nn0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAKKyAgICAKKyAgICA8dmlldyB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCB9IiBoZWlnaHQ9IiRvbmNleyBwYXJlbnQuaGVpZ2h0LTEgfSIgCisgICAgCWJnY29sb3I9IjB4RkZGRkZGIiBvcGFjaXR5PSIwLjIiIC8+CisJCisJPGltYWdlIG5hbWU9Il91c2VycGljIiBzdHJldGNoZXM9ImJvdGgiIHg9IjEiIHk9IjEiPgorCQk8aGFuZGxlciBuYW1lPSJvbmxvYWQiPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgaWYgKHRoaXMuaGVpZ2h0ID4gMzgpIHsKKyAgICAgICAgICAgICAgICAgICAgLy9JZiBiaWdnZXIgdGhlbiBjb250YWludGVyIHRoZW4gc2NhbGUgaXQKKyAgICAgICAgICAgICAgICAgICAgdmFyIHdpZHRoID0gdGhpcy53aWR0aC8odGhpcy5oZWlnaHQvMzgpOworICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywzOCk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCd3aWR0aCcsd2lkdGgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+CisJPC9pbWFnZT4KKwkKKwk8dGV4dCB0ZXh0PSIkb25jZXsgcGFyZW50LnVzZXJuYW1lIH0iIHg9IjQwIiByZXNpemU9ImZhbHNlIgorCQkgIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoIC0gNDAgfSIgLz4JCisJCSAgCisJPG1pbmlJY29uc0ltYWdlIG5hbWU9ImFkZCIgc3JjPSIkb25jZXsgY2FudmFzLmdldFRoZW1lSW1hZ2UoJ2VkaXRfYWRkX3JzYycpIH0iIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgCisgICAgICAgICAgICAgICAgICAgeT0iMjAiIHg9IiRvbmNleyBwYXJlbnQud2lkdGggLSA4MCB9IiBzaG93aGFuZGN1cnNvcj0idHJ1ZSI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIlN0YXJ0IENvbmZlcmVuY2UiKTsKKyAgICAgICAgICAgIGlmIChoaWIudXNlcm9iamVjdC51c2VyX2lkID09IHBhcmVudC51c2VyX2lkKSB7CisgICAgICAgICAgICAgICAgbmV3IGx6LmxhYmVsZXJyb3JQb3B1cChjYW52YXMse2Vycm9ybGFiZWxpZDoxMjI1fSk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcGFyZW50LnJlcXVlc3RVc2VyVG9Db250YWN0TGlzdC5kb0NhbGwoKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IjExODYiIC8+CisgICAgPC9taW5pSWNvbnNJbWFnZT4KKyAgICAKKyAgICA8bWluaUljb25zIG5hbWU9InByaXZhdGVfbWVzc2FnZV9hZGQiIHJlc291cmNlPSJwcml2YXRlX21lc3NhZ2VfYWRkX3JzYyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiAKKyAgICAgICAgICAgICAgICAgICB5PSIyMCIgeD0iJG9uY2V7IHBhcmVudC53aWR0aCAtIDYwIH0iIHNob3doYW5kY3Vyc29yPSJ0cnVlIj4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiU3RhcnQgQ29uZmVyZW5jZSIpOworICAgICAgICAgICAgbmV3IGx6Lm5ld1ByaXZhdGVNZXNzYWdlKGNhbnZhcyx7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6MjAwLHk6MTIwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZPYmo6bnVsbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluaW1pemFibGU6dHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4aW1pemFibGU6dHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlck9iamVjdDpudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc2RyYWdhYmxlOnRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfaWQ6cGFyZW50LnVzZXJfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOmNhbnZhcy53aWR0aC0zMDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDpjYW52YXMuaGVpZ2h0LTEzMAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iMTI1MyIgLz4KKyAgICA8L21pbmlJY29ucz4KKwkKKwk8bWluaUljb25zIHJlc291cmNlPSJ1c2VyX3Byb2ZpbGVfcnNjIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIAorICAgICAgICAgICAgICAgeT0iMjAiIHg9IiRvbmNleyBwYXJlbnQud2lkdGggLSA0MCB9IiBzaG93aGFuZGN1cnNvcj0idHJ1ZSI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIlN0YXJ0IENvbmZlcmVuY2UiKTsKKyAgICAgICAgICAgIG5ldyBsei52aWV3VXNlclByb2ZpbGVXaW5kb3coY2FudmFzLHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcklkOnBhcmVudC51c2VyX2lkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSIxMjM2IiAvPgorICAgIDwvbWluaUljb25zPiAgICAKKwkKKwk8bWluaUljb25zIHJlc291cmNlPSJzdGFydF9jb25mZXJlbmNlMl9yc2MiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgCisJCQkgICB5PSIyMCIgeD0iJG9uY2V7IHBhcmVudC53aWR0aCAtIDIwIH0iIHNob3doYW5kY3Vyc29yPSJ0cnVlIj4KKwkJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiU3RhcnQgQ29uZmVyZW5jZSIpOworCQkJbmV3IGx6LmNoYXRQYXJ0aWNpcGFudHNJbnZpdGVDb25mZXJlbmNlKGNhbnZhcyx7CisgICAgICAgICAgICAJCQkgICAgcHVibGljU0lEOnBhcmVudC5wdWJsaWNTSUQKKyAgICAgICAgICAgIAkJCX0pOworCQk8L2hhbmRsZXI+CisJCTxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iMTEzMSIgLz4KKwk8L21pbmlJY29ucz4JIAorCQorCTxsYWJlbFRvb2x0aXAgdGV4dD0iJG9uY2V7IHBhcmVudC5jb25uZWN0ZWRTaW5jZSB9IiAvPiAKKwkKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY2hhdC9lbW90SWNvbnNTZWxlY3Rvci5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NoYXQvZW1vdEljb25zU2VsZWN0b3IubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4ZWRjNzAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NoYXQvZW1vdEljb25zU2VsZWN0b3IubHp4CkBAIC0wLDAgKzEsMTE4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCQorPCEtLS0gdmlldyB0byBzZWxlY3QgZW1vdGljb25zLiBzaXplIGlzIDE2MHgxNDAgLS0+Cis8Y2xhc3MgbmFtZT0iZW1vdEljb25zU2VsZWN0b3IiIGV4dGVuZHM9ImNsb3NhYmxlVmlldyIgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdiYXNlYmdjb2xvcml6ZXInKSB9IiAKKyAgICBjbGlja2FibGU9InRydWUiIHdpZHRoPSIxNjAiIGhlaWdodD0iMTQwIiA+CisKKyAgICA8YXR0cmlidXRlIG5hbWU9ImJ0blJlZiIgdmFsdWU9Im51bGwiIC8+CisKKyAgICA8IS0tLSBAa2V5d29yZHMgcHJpdmF0ZSAtLT4KKyAgICA8bWV0aG9kIG5hbWU9InBhc3NNb2RlRXZlbnQiIGFyZ3M9ImV2ZW50U3RyLHZpZXciID4gCisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgaWYgKCBldmVudFN0ciA9PSAib25tb3VzZWRvd24iICApeworICAgICAgICAgICAgICAgIGlmICggdmlldyAhPSBudWxsICkgeworICAgICAgICAgICAgICAgICAgIGlmICggIXZpZXcuY2hpbGRPZih0aGlzKSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTsKKyAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh2aWV3ICYmIHZpZXcuY2hpbGRPZih0aGlzKSkgeworICAgICAgICAgICAgICAgIGlmICh2aWV3WyBldmVudFN0ciBdKSB7CisgICAgICAgICAgICAgICAgICAgIHZpZXdbIGV2ZW50U3RyIF0uc2VuZEV2ZW50KCB2aWV3ICk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBdXT4gCisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAJdGhpcy5nZXRBbGxQdWJsaWNFbW90aWNvbnMuZG9DYWxsKCk7CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgICAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJnZXRBbGxQdWJsaWNFbW90aWNvbnMiIGZ1bmNuYW1lPSJjaGF0c2VydmljZS5nZXRBbGxQdWJsaWNFbW90aWNvbnMiIAorCQkJcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gCisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgIAk8IVtDREFUQVsKKyAgICAgICAgICAgICAgICAJLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZSB0aGUgcnRtcGNvbm5lY3Rpb24KKwkJCQkJaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZW1vdEljb25zU2VsZWN0b3IvZ2V0QWxsUHVibGljRW1vdGljb25zIDogIix2YWx1ZSk7CisJCQkJCWZvciAodmFyIGk9MDtpPHZhbHVlLmxlbmd0aDtpKyspeworCQkJCQkJdmFyIHN3ZnVybCA9IGNhbnZhcy5nZXRVcmwoKSArICdwdWJsaWMvZW1vdGljb25zLycrdmFsdWVbaV1bMF07CisJCQkJCQlpY29ubGFiZWwgPSB2YWx1ZVtpXVsxXTsKKwkJCQkJCWlmICh2YWx1ZVtpXS5sZW5ndGg+NCl7CisJCQkJCQkJaWNvbmxhYmVsICs9ICIsICIrdmFsdWVbaV1bMl07CQkJCQkJCQorCQkJCQkJfQorCQkJCQkJCisJCQkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic3dmdXJsICIrc3dmdXJsKTsKKwkJCQkJCQorCQkJCQkJdmFyIG0gPSBuZXcgbHouX2NoYXRJbm5lclNtaWx5SWNvbihwYXJlbnQuaW5uLmlubix7aWNvbnZhbHVlOnZhbHVlW2ldWzFdLGljb25sYWJlbDppY29ubGFiZWx9KTsKKwkJCQkJCW0uc2V0U291cmNlKHN3ZnVybCk7CQkJCQkJCisJCQkJCX0KKyAgICAgICAgICAgICAgICBdXT4KKyAgICAgICAgICAgIDwvaGFuZGxlcj4gICAKKyAgICAgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAgICAKKworICAgIDx2aWV3IGJnY29sb3I9IjB4RkZGRkZGIiB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aC0yIH0iIG9wYWNpdHk9IjAuOCIKKyAgICAJICBoZWlnaHQ9IiRvbmNleyBwYXJlbnQuaGVpZ2h0LTIgfSIgeD0iMSIgeT0iMSIgLz4KKyAgICAJICAKKyAgICA8bGFiZWxUZXh0IHg9IjEiIHk9IjEiIGxhYmVsaWQ9IjQ0NiIgZm9udHN0eWxlPSJib2xkIiAvPjwhLS0gNDQ2OkVtb3RpY29ucyAtLT4KKwk8dmlldyBuYW1lPSJpbm4iIHdpZHRoPSIxNTgiIGhlaWdodD0iMTE4IiB4PSIwIiB5PSIyMCIgY2xpcD0idHJ1ZSI+CisJCTx2aWV3IG5hbWU9ImlubiIgd2lkdGg9IiRvbmNleyBwYXJlbnQuaGVpZ2h0IH0iID4KKwkJCTx3cmFwcGluZ2xheW91dCBheGlzPSJ4IiBzcGFjaW5nPSIyIiAvPgorCQk8L3ZpZXc+CisJCTxvbV92c2Nyb2xsYmFyIG5hbWU9Im15c2Nyb2xsYmFyIiAvPgorCTwvdmlldz4KKyAgICAKKyAgICA8dmlldyBuYW1lPSJfY2xvc2UiIHg9IiRvbmNleyBwYXJlbnQud2lkdGgtdGhpcy53aWR0aC0yIH0iIHk9IjIiCisgICAgICAgIHJlc291cmNlPSJidG5fcHJlc2VudGVyX2Nsb3NlIgorICAgICAgICBvbm1vdXNlb3Zlcj0idGhpcy5zZXRBdHRyaWJ1dGUoJ2ZyYW1lJywyKSIKKyAgICAgICAgb25tb3VzZW91dD0idGhpcy5zZXRBdHRyaWJ1dGUoJ2ZyYW1lJywxKSIKKyAgICAgICAgb25tb3VzZWRvd249InRoaXMuc2V0QXR0cmlidXRlKCdmcmFtZScsMykiCisgICAgICAgIG9ubW91c2V1cD0idGhpcy5zZXRBdHRyaWJ1dGUoJ2ZyYW1lJywxKSIgPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdmcmFtZScsMik7CisgICAgICAgICAgICB0aGlzLnBhcmVudC5jbG9zZSgpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iNDMwIiAvPjwhLS0gNDMwOmNsb3NlIC0tPgorICAgIDwvdmlldz4gICAgCisJCis8L2NsYXNzPgkKKworPCEtLS0gcHJpdmF0ZSBjbGFzcyBvZiBlbW90SWNvbnNTZWxlY3Rvci5jbGFzcy4gcmVzb3VyY2UgdmlldyBvZiBjaGF0IHNtaWx5IGljb25zLiBpdCBzaG93cyBpY29ucyBhbmQgbGFiZWwgdG9vbHRpcHMuLS0+Cis8Y2xhc3MgbmFtZT0iX2NoYXRJbm5lclNtaWx5SWNvbiIgZXh0ZW5kcz0idmlldyIgb25tb3VzZW92ZXI9IiIgb25tb3VzZW91dD0iIj4KKwk8YXR0cmlidXRlIG5hbWU9Imljb25sYWJlbCIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0iaWNvbnZhbHVlIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisJCXZhciBtZXNzYWdlQm94ID0gcGFyZW50LnBhcmVudC5wYXJlbnQuYnRuUmVmLm1lc3NhZ2U7CisJCW1lc3NhZ2VCb3guc2V0VGV4dChtZXNzYWdlQm94LmdldFRleHQoKSsiICIraWNvbnZhbHVlKyIgICIpOworCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgibWVzc2FnZUJveCBURVhUOiAiLG1lc3NhZ2VCb3gudGV4dCxtZXNzYWdlQm94KTsKKwkJbHouRm9jdXMuc2V0Rm9jdXMobWVzc2FnZUJveC5fY3RleHQpOworCQltZXNzYWdlQm94Ll9jdGV4dC5zZXRTZWxlY3Rpb24obWVzc2FnZUJveC5nZXRUZXh0KCkubGVuZ3RoLTEsbWVzc2FnZUJveC5nZXRUZXh0KCkubGVuZ3RoKTsKKwkJcGFyZW50LnBhcmVudC5wYXJlbnQuY2xvc2UoKTsKKwk8L2hhbmRsZXI+CisJPGxhYmVsVG9vbHRpcCB0ZXh0PSIkb25jZXsgcGFyZW50Lmljb25sYWJlbCB9IiAvPgorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jaGF0L2ZvbnRPcHRpb25zLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY2hhdC9mb250T3B0aW9ucy5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGIxMWM4NwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY2hhdC9mb250T3B0aW9ucy5sengKQEAgLTAsMCArMSwxNTQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzxjbGFzcyBuYW1lPSJmb250T3B0aW9ucyIgZXh0ZW5kcz0iY2xvc2FibGVWaWV3IiBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ2Jhc2ViZ2NvbG9yaXplcicpIH0iCisJY2xpY2thYmxlPSJ0cnVlIiB3aWR0aD0iMTMwIiBoZWlnaHQ9IjQyIj4KKworCTxhdHRyaWJ1dGUgbmFtZT0iYnRuUmVmIiB2YWx1ZT0ibnVsbCIgLz4KKwkKKwk8bWV0aG9kIG5hbWU9InBhc3NNb2RlRXZlbnQiIGFyZ3M9ImV2ZW50U3RyLHZpZXciID4gCisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgaWYgKCBldmVudFN0ciA9PSAib25tb3VzZWRvd24iICApeworICAgICAgICAgICAgICAgIGlmICggdmlldyAhPSBudWxsICkgeworICAgICAgICAgICAgICAgICAgIGlmICggIXZpZXcuY2hpbGRPZih0aGlzKSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTsKKyAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh2aWV3ICYmIHZpZXcuY2hpbGRPZih0aGlzKSkgeworICAgICAgICAgICAgICAgIGlmICh2aWV3WyBldmVudFN0ciBdKSB7CisgICAgICAgICAgICAgICAgICAgIHZpZXdbIGV2ZW50U3RyIF0uc2VuZEV2ZW50KCB2aWV3ICk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBdXT4gCisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJhcHBseVN0eWxlIiBhcmdzPSJzdHlsZUxlZnRQYXJ0LCBzdHlsZVJpZ2h0UGFydCI+CisgICAgCXZhciBtZXNzYWdlQm94ID0gYnRuUmVmLm1lc3NhZ2U7CisgICAgCXZhciBiZWZvcmVTZWxlY3Rpb24gPSBtZXNzYWdlQm94LmdldFRleHQoKS5zdWJzdHJpbmcoMCwgbWVzc2FnZUJveC5fY3RleHQuc2VsUG9zaXRpb24pOworICAgIAl2YXIgc2VsZWN0aW9uID0gbWVzc2FnZUJveC5nZXRUZXh0KCkuc3Vic3RyaW5nKG1lc3NhZ2VCb3guX2N0ZXh0LnNlbFBvc2l0aW9uLCAKKyAgICAJCW1lc3NhZ2VCb3guX2N0ZXh0LnNlbFBvc2l0aW9uICsgbWVzc2FnZUJveC5fY3RleHQuc2VsU2l6ZSk7CisgICAgCXZhciBhZnRlclNlbGVjdGlvbiA9IG1lc3NhZ2VCb3guZ2V0VGV4dCgpLnN1YnN0cmluZyhtZXNzYWdlQm94Ll9jdGV4dC5zZWxQb3NpdGlvbiArIAorICAgIAkJbWVzc2FnZUJveC5fY3RleHQuc2VsU2l6ZSwgbWVzc2FnZUJveC5nZXRUZXh0KCkubGVuZ3RoKTsKKwkJbWVzc2FnZUJveC5zZXRUZXh0KGJlZm9yZVNlbGVjdGlvbiArIHN0eWxlTGVmdFBhcnQgKyBzZWxlY3Rpb24gKyBzdHlsZVJpZ2h0UGFydCArIGFmdGVyU2VsZWN0aW9uKTsKKwkJY2xvc2UoKTsKKwkJbHouRm9jdXMuc2V0Rm9jdXMobWVzc2FnZUJveC5fY3RleHQpOworICAgIDwvbWV0aG9kPgorICAgICAgICAKKyAgICA8dmlldyBiZ2NvbG9yPSIweEZGRkZGRiIgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGgtMiB9IiBvcGFjaXR5PSIwLjgiCisgICAgCSAgaGVpZ2h0PSIkb25jZXsgcGFyZW50LmhlaWdodC0yIH0iIHg9IjEiIHk9IjEiIC8+CisgICAgCSAgCisgICAgPGxhYmVsVGV4dCB4PSIxIiB5PSIxIiBsYWJlbGlkPSIxNTMwIiBmb250c3R5bGU9ImJvbGQiIC8+PCEtLSAxNTMwOkZvbnQgc3R5bGUgLS0+CisgICAgCisgICAgPHZpZXcgbmFtZT0iX2Nsb3NlIiB4PSIkb25jZXsgcGFyZW50LndpZHRoLXRoaXMud2lkdGgtMiB9IiB5PSIyIgorICAgICAgICByZXNvdXJjZT0iYnRuX3ByZXNlbnRlcl9jbG9zZSIKKyAgICAgICAgb25tb3VzZW92ZXI9InRoaXMuc2V0QXR0cmlidXRlKCdmcmFtZScsMikiCisgICAgICAgIG9ubW91c2VvdXQ9InRoaXMuc2V0QXR0cmlidXRlKCdmcmFtZScsMSkiCisgICAgICAgIG9ubW91c2Vkb3duPSJ0aGlzLnNldEF0dHJpYnV0ZSgnZnJhbWUnLDMpIgorICAgICAgICBvbm1vdXNldXA9InRoaXMuc2V0QXR0cmlidXRlKCdmcmFtZScsMSkiID4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnZnJhbWUnLDIpOworICAgICAgICAgICAgdGhpcy5wYXJlbnQuY2xvc2UoKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IjQzMCIgLz48IS0tIDQzMDpjbG9zZSAtLT4KKyAgICA8L3ZpZXc+CisKKwk8bWluaUljb25zSW1hZ2UgeT0iMTgiIHg9IjAiIHNyYz0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUltYWdlKCdmb250X2JvbGQnKSB9IgorCQl3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHNob3doYW5kY3Vyc29yPSJ0cnVlIiBzdHJldGNoZXM9Im5vbmUiIHhvZmZzZXQ9Ii00IiB5b2Zmc2V0PSItNCI+CisJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorCQkJPCFbQ0RBVEFbCisJCQlwYXJlbnQuYXBwbHlTdHlsZSgiPGI+IiwgIjwvYj4iKTsKKwkJCV1dPgorCQk8L2hhbmRsZXI+CisJCTxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iODciIC8+CisJPC9taW5pSWNvbnNJbWFnZT4KKwkgICAgCisJPG1pbmlJY29uc0ltYWdlIHk9IjE4IiB4PSIyNCIgc3JjPSIkb25jZXsgY2FudmFzLmdldFRoZW1lSW1hZ2UoJ2ZvbnRfaXRhbGljJykgfSIgCisJCXdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgc2hvd2hhbmRjdXJzb3I9InRydWUiIHN0cmV0Y2hlcz0ibm9uZSIgeG9mZnNldD0iLTQiIHlvZmZzZXQ9Ii00Ij4KKwkJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisJCQk8IVtDREFUQVsKKwkJCXBhcmVudC5hcHBseVN0eWxlKCI8aT4iLCAiPC9pPiIpOworCQkJXV0+CisJCTwvaGFuZGxlcj4KKwkJPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSI4NiIgLz4KKwk8L21pbmlJY29uc0ltYWdlPgorCSAgICAKKwk8bWluaUljb25zSW1hZ2UgeT0iMTgiIHg9IjQ4IiBzcmM9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVJbWFnZSgnZm9udF91bmRlcmxpbmUnKSB9IgorCQl3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHNob3doYW5kY3Vyc29yPSJ0cnVlIiBzdHJldGNoZXM9Im5vbmUiIHhvZmZzZXQ9Ii00IiB5b2Zmc2V0PSItNCI+CisJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorCQkJPCFbQ0RBVEFbCisJCQlwYXJlbnQuYXBwbHlTdHlsZSgiPHU+IiwgIjwvdT4iKTsKKwkJCV1dPgorCQk8L2hhbmRsZXI+CisJCTxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iMTUyOSIgLz4KKwk8L21pbmlJY29uc0ltYWdlPgorCQorCTxtaW5pSWNvbnNJbWFnZSB5PSIxOCIgeD0iNzIiIHNyYz0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUltYWdlKCdmb250X2NvbG9yJykgfSIgCisJCXdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgc2hvd2hhbmRjdXJzb3I9InRydWUiIHN0cmV0Y2hlcz0ibm9uZSIgeG9mZnNldD0iLTQiIHlvZmZzZXQ9Ii00Ij4KKwkJPGF0dHJpYnV0ZSBuYW1lPSJzZWxlY3RlZENvbG9yIiB0eXBlPSJudW1iZXIiIHZhbHVlPSIwIiAvPgorCQk8YXR0cmlidXRlIG5hbWU9ImNvbG9yQmVmb3JlT3BlbiIgdHlwZT0ibnVtYmVyIiAvPgorCQk8YXR0cmlidXRlIG5hbWU9ImNvbG9yUGlja1JlZiIgdmFsdWU9Im51bGwiLz4KKwkJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisJCQk8IVtDREFUQVsKKwkJCQl0aGlzLmNvbG9yUGlja1JlZiA9IG5ldyBsei5jb2xvcnBpY2tlcihjYW52YXMse2J0blJlZjp0aGlzLAorCSAgICAgICAgCQl4Oih0aGlzLmdldEF0dHJpYnV0ZVJlbGF0aXZlKCd4JyxjYW52YXMpLSgyNTAtdGhpcy53aWR0aCkpLAorCSAgICAgICAgCQl5Oih0aGlzLmdldEF0dHJpYnV0ZVJlbGF0aXZlKCd5JyxjYW52YXMpLTE1NCt0aGlzLmhlaWdodCl9KTsKKwkgICAgICAgIAl2YXIgbXlDb2xvciA9IG5ldyBDb2xvcigpOworICAgICAgICAJCW15Q29sb3Iuc2V0UkdCKDApOworCSAgICAgICAgCXRoaXMuY29sb3JQaWNrUmVmLmRvRGVmYXVsdENvbG9yKG15Q29sb3IpOworCSAgICAgICAgCXRoaXMuY29sb3JCZWZvcmVPcGVuID0gY29sb3JQaWNrUmVmLnNlbGVjdGVkQ29sb3I7CisJICAgICAgICAJbHouTW9kZU1hbmFnZXIubWFrZU1vZGFsKHRoaXMuY29sb3JQaWNrUmVmKTsKKwkJCV1dPgorCQk8L2hhbmRsZXI+CisJCQorCQk8bWV0aG9kIG5hbWU9ImNsb3NlZENvbG9yUGlja2VyIj4KKwkJCS8vIGNhbGxlZCBieSBjb2xvcnBpY2tlcgorCQk8L21ldGhvZD4KKwkJCisJCTxtZXRob2QgbmFtZT0ic2V0VHJhbnNmb3JtZWRTdHJpbmdDb2xvciI+CisJCTwhW0NEQVRBWworCQkJaWYgKGNvbG9yQmVmb3JlT3BlbiAhPSB0aGlzLmNvbG9yUGlja1JlZi5zZWxlY3RlZENvbG9yKQorCQkJCXBhcmVudC5hcHBseVN0eWxlKCI8Zm9udCBjb2xvcj1cJyMiICsgCisJCQkJCXBhcnNlSW50KHRoaXMuY29sb3JQaWNrUmVmLnNlbGVjdGVkQ29sb3IpLnRvU3RyaW5nKDE2KSArICJcJz4iLCAiPC9mb250PiIpOworCQldXT4KKwkJPC9tZXRob2Q+CisJCQorCQk8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IjE1MzIiIC8+CisJPC9taW5pSWNvbnNJbWFnZT4KKwkKKwk8bWluaUljb25zSW1hZ2UgeT0iMTgiIHg9Ijk2IiBzcmM9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVJbWFnZSgnaHlwZXJsaW5rJykgfSIgCisJCXdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgc2hvd2hhbmRjdXJzb3I9InRydWUiIHN0cmV0Y2hlcz0ibm9uZSIgIHhvZmZzZXQ9Ii00IiB5b2Zmc2V0PSItNCI+CisJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorCQkJPCFbQ0RBVEFbCisJCQlwYXJlbnQuYXBwbHlTdHlsZSgiPGEgaHJlZj1cIlwiPiIsICI8L2E+Iik7CisJCQldXT4KKwkJPC9oYW5kbGVyPgorCQk8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IjE1MzMiIC8+CisJPC9taW5pSWNvbnNJbWFnZT4KKyAgICAKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NoYXQvZ2xvYmFsQXR0cmlidXRlcy5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NoYXQvZ2xvYmFsQXR0cmlidXRlcy5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTE3MWU3OAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY2hhdC9nbG9iYWxBdHRyaWJ1dGVzLmx6eApAQCAtMCwwICsxLDM4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKworPCEtLSBnbG9iYWwgYXR0cmlidXRlcyBmb3IgY2hhdCBtb2R1bGUgLS0+CisKKzxsaWJyYXJ5PgorCis8IS0tLSBjaGF0IG1vZHVsZXM6IGNoYXQgaGlzdG9yeSAtLT4KKzxhdHRyaWJ1dGUgbmFtZT0iY2hhdGhpc3RvcnkiIHZhbHVlPSJudWxsIiAvPgorCis8IS0tLSBjaGF0IG1vZHVsZXM6IGNoYXQgY29udGVudCAtLT4KKzxhdHRyaWJ1dGUgbmFtZT0iX2NoYXRjb250ZW50IiB2YWx1ZT0ibnVsbCIgLz4KKworPCEtLS0gY2hhdCBtb2R1bGVzOiBjaGF0IGNvbnRlbnQgLS0+Cis8YXR0cmlidXRlIG5hbWU9Il9jdXJyZW50Q2hhdFBhbmVsIiB2YWx1ZT0ibnVsbCIgLz4KKworPCEtLS0gY2hhdCBtb2R1bGVzOiBvdmVyYWxsIGNoYXQgY29udGVudCAtLT4KKzxhdHRyaWJ1dGUgbmFtZT0iX292ZXJhbGxjaGF0Y29udGVudCIgdmFsdWU9Im51bGwiIC8+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY2hhdC9nbG9iYWxNZXRob2RzLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY2hhdC9nbG9iYWxNZXRob2RzLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDIzOTRmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jaGF0L2dsb2JhbE1ldGhvZHMubHp4CkBAIC0wLDAgKzEsMTk5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKworPCEtLSBnbG9iYWwgbWV0aG9kcyBmb3IgY2hhdCBtb2R1bGUgLS0+Cis8bGlicmFyeT4KKworPHNjcmlwdD4KKzwhW0NEQVRBWworCisJLy8gZ2xvYmFsIGNoYXQgaGlzdG9yeSBhcnJheSBmb3IgYWxsIGNoYXQgbW9kdWxlCisJdGhpcy5jaGF0aGlzdG9yeT1uZXcgQXJyYXkoKTsKKwordmFyIG1heHNpemUgPSAyMjA7Cit2YXIgdGV4dEZpZWxkdGV4dCA9ICIiOwordmFyIHN0YXJ0SW5kZXggPSAwOwordmFyIGN1cnJlbnRMaW5lID0gMDsKK3ZhciB0ZXh0T2JqZWN0ID0gbnVsbDsKK3ZhciBteVRleHRGb3JtYXQgPSBudWxsOwordmFyIGxpbmVIZWlnaHQgPSAwOworCitmdW5jdGlvbiBjYWxjTGluZVdpZHRoQnlUZXh0RmllbGQobWF4c2l6ZVRleHQsdGV4dEZvckNhbGNpbmcsZm9udHNpemUsIGZvbnRuYW1lKXsKKwkvL2NoZWNrIHRlc3QvdGVzdExpbmVXaWR0aC5senggaW4gdGVzdC1kaXJlY3RvcnkgZm9yIGEgZGV0YWlsZWQgZXhhbXBsZSBjYWxjdWxhdGlvbiAKKwkvL0RlYnVnLndyaXRlKCJjYWxjTGluZVdpZHRoQnlUZXh0RmllbGQ6ICIsdGV4dEZvckNhbGNpbmcpOworCQorCW1heHNpemUgPSBtYXhzaXplVGV4dDsKKwlzdGFydEluZGV4ID0gMDsKKwljdXJyZW50TGluZSA9IDA7CisJdGV4dE9iamVjdCA9IG5ldyBBcnJheSgpOworCQorCXRleHRGaWVsZHRleHQgPSB0ZXh0Rm9yQ2FsY2luZzsKKwlteVRleHRGb3JtYXQgPSBuZXcgVGV4dEZvcm1hdCgpOworCW15VGV4dEZvcm1hdC5zaXplID0gZm9udHNpemU7CisJbXlUZXh0Rm9ybWF0LmZvbnQgPSBmb250bmFtZTsKKwkKKwl2YXIgbWV0cmljcyA9IG15VGV4dEZvcm1hdC5nZXRUZXh0RXh0ZW50KHRleHRGaWVsZHRleHQsIDEwMDAwMCk7CisJbGluZUhlaWdodCA9IG1ldHJpY3MuYXNjZW50K21ldHJpY3MuZGVzY2VudDsKKwkvL0RlYnVnLndyaXRlKGxpbmVIZWlnaHQpOworCQorCW1lYXN1cmVMaW5lKCk7CisJCisJcmV0dXJuIHRleHRPYmplY3Q7Cit9CisKK2Z1bmN0aW9uIG1lYXN1cmVMaW5lKCl7CisgICAgdmFyIHJlbWFpbmluZ0xlbmd0aCA9IHRleHRGaWVsZHRleHQubGVuZ3RoOworICAgICAgICAKKyAgICB2YXIgdGVzdFR4dCA9ICIiOworICAgIHZhciB0ZXN0VHh0MiA9ICIiOworICAgIHZhciB0ZXh0RmllbGR0ZXh0MiA9IHRleHRGaWVsZHRleHQ7CisgICAgdmFyIG1ldHJpY3MgPSAwOworICAgIHZhciBmaXJzdFNwYWNlSW5kZXggPSAwOworICAgIHZhciBpc0ZpcnN0V29yZCA9IHRydWU7CisKKyAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJGVU5DL2NoYXQgTWVzc2FnZTogIiwgdGV4dEZpZWxkdGV4dCk7CisgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiRlVOQy9sZW5ndGggb2YgY2hhdCBNZXNzYWdlOiAiLCByZW1haW5pbmdMZW5ndGgpOworCisgICAgd2hpbGUgKHJlbWFpbmluZ0xlbmd0aCA+IDApIHsKKyAgICAgICAgdGVzdFR4dCA9ICIiOworICAgICAgICB0ZXN0VHh0MiA9ICIiOworICAgICAgICB0ZXh0RmllbGR0ZXh0MiA9IHRleHRGaWVsZHRleHQ7CisgICAgICAgIG1ldHJpY3MgPSBteVRleHRGb3JtYXQuZ2V0VGV4dEV4dGVudCh0ZXh0RmllbGR0ZXh0MiwgMTAwMDAwKTsKKyAgICAgICAgaXNGaXJzdFdvcmQgPSB0cnVlOworICAgICAgICAKKyAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2l6ZSBvZiB0aGUgY3VycmVudCBwYXJ0OiAiLCBtZXRyaWNzLndpZHRoKTsKKyAgICAgICAgZG8geworICAgICAgICAgICAgZmlyc3RTcGFjZUluZGV4ID0gdGV4dEZpZWxkdGV4dDIuaW5kZXhPZigiICIpOworICAgICAgICAgICAgdGVzdFR4dDIgPSB0ZXN0VHh0OworCisgICAgICAgICAgICBpZiAoZmlyc3RTcGFjZUluZGV4ICE9IC0xKSB7CisgICAgICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidGhlIGZpcnN0IHNwYWNlIGlzIGF0IHBvc2l0aW9uOiAiLCBmaXJzdFNwYWNlSW5kZXgpOworICAgICAgICAgICAgICAgIGlmIChpc0ZpcnN0V29yZCkgeworICAgICAgICAgICAgICAgICAgICB0ZXN0VHh0ID0gdGV4dEZpZWxkdGV4dDIuc2xpY2Uoc3RhcnRJbmRleCwgZmlyc3RTcGFjZUluZGV4KTsKKyAgICAgICAgICAgICAgICAgICAgaXNGaXJzdFdvcmQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICB0ZXN0VHh0ID0gdGVzdFR4dCArICIgIiArIHRleHRGaWVsZHRleHQyLnNsaWNlKHN0YXJ0SW5kZXgsIGZpcnN0U3BhY2VJbmRleCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRleHRGaWVsZHRleHQyID0gdGV4dEZpZWxkdGV4dDIuc2xpY2UoZmlyc3RTcGFjZUluZGV4ICsgMSwgdGV4dEZpZWxkdGV4dDIubGVuZ3RoKTsKKyAgICAgICAgICAgICAgICBtZXRyaWNzID0gbXlUZXh0Rm9ybWF0LmdldFRleHRFeHRlbnQodGVzdFR4dCwgMTAwMDAwKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gdGhpcyBpcyB0aGUgbGFzdCB3b3JkCisgICAgICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidGhpcyBpcyB0aGUgbGFzdCB3b3JkISIpOworICAgICAgICAgICAgICAgIHRlc3RUeHQgPSB0ZXN0VHh0ICsgIiAiICsgdGV4dEZpZWxkdGV4dDI7CisgICAgICAgICAgICAgICAgbWV0cmljcyA9IG15VGV4dEZvcm1hdC5nZXRUZXh0RXh0ZW50KHRlc3RUeHQsIDEwMDAwMCk7CisgICAgICAgICAgICAgICAgaWYgKGlzRmlyc3RXb3JkICYmIG1ldHJpY3Mud2lkdGggPCBtYXhzaXplKSB7CisgICAgICAgICAgICAgICAgICAgIHRlc3RUeHQyID0gdGVzdFR4dDsKKyAgICAgICAgICAgICAgICAgICAgaXNGaXJzdFdvcmQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0gd2hpbGUgKG1ldHJpY3Mud2lkdGggPCBtYXhzaXplKQorICAgICAgICAKKyAgICAgICAgaWYgKG1ldHJpY3Mud2lkdGggPCBtYXhzaXplKSB7CisgICAgICAgICAgICB0ZXN0VHh0MiA9IHRlc3RUeHQ7CisgICAgICAgIH0KKworICAgICAgICBpZiAodGVzdFR4dDIubGVuZ3RoID09IDApIHsKKyAgICAgICAgICAgIC8vIHRoZSBmaXJzdCB3b3JkIGlzIGFscmVhZHkgdG9vIGxvbmcKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInRoZSBmaXJzdCB3b3JkIGlzIGFscmVhZHkgdG9vIGxvbmchIik7CisgICAgICAgICAgICB0ZXN0VHh0ID0gIiI7CisgICAgICAgICAgICB0ZXh0RmllbGR0ZXh0MiA9IHRleHRGaWVsZHRleHQ7CisgICAgICAgICAgICBtZXRyaWNzID0gbXlUZXh0Rm9ybWF0LmdldFRleHRFeHRlbnQodGVzdFR4dCwgMTAwMDAwKTsKKyAgICAgICAgICAgIGlzRmlyc3RXb3JkID0gdHJ1ZTsKKworICAgICAgICAgICAgd2hpbGUgKG1ldHJpY3Mud2lkdGggPCBtYXhzaXplKSB7CisgICAgICAgICAgICAgICAgdGVzdFR4dCA9IHRlc3RUeHQgKyB0ZXh0RmllbGR0ZXh0Mi5zbGljZShzdGFydEluZGV4LCAxKTsKKyAgICAgICAgICAgICAgICB0ZXh0RmllbGR0ZXh0MiA9IHRleHRGaWVsZHRleHQyLnNsaWNlKDEsIHJlbWFpbmluZ0xlbmd0aCk7CisgICAgICAgICAgICAgICAgbWV0cmljcyA9IG15VGV4dEZvcm1hdC5nZXRUZXh0RXh0ZW50KHRlc3RUeHQsIDEwMDAwMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRlc3RUeHQyID0gdGVzdFR4dDsKKyAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICB0ZXh0T2JqZWN0W2N1cnJlbnRMaW5lXSA9IG5ldyBBcnJheSgpOworICAgICAgICB0ZXh0T2JqZWN0W2N1cnJlbnRMaW5lXVsidGV4dCJdID0gdGVzdFR4dDI7CisgICAgICAgIG1ldHJpY3MyID0gbXlUZXh0Rm9ybWF0LmdldFRleHRFeHRlbnQodGV4dE9iamVjdFtjdXJyZW50TGluZV1bInRleHQiXSwgMTAwMDAwKTsKKyAgICAgICAgdGV4dE9iamVjdFtjdXJyZW50TGluZV1bImxpbmVXaWR0aCJdID0gbWV0cmljczIud2lkdGg7CisgICAgICAgIGN1cnJlbnRMaW5lICs9IDE7CisgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm5ldyBsaW5lOiAiLCB0ZXh0T2JqZWN0W2N1cnJlbnRMaW5lXVsidGV4dCJdKTsKKyAgICAgICAgICAgICAgIAorICAgICAgICB0ZXh0RmllbGR0ZXh0ID0gdGV4dEZpZWxkdGV4dC5zbGljZSh0ZXN0VHh0Mi5sZW5ndGgsIHRleHRGaWVsZHRleHQubGVuZ3RoKQorICAgICAgICBpZiAodGV4dEZpZWxkdGV4dC5pbmRleE9mKCIgIikgPT0gMCkgeworICAgICAgICAgICB0ZXh0RmllbGR0ZXh0ID0gdGV4dEZpZWxkdGV4dC5zbGljZSgxLCB0ZXh0RmllbGR0ZXh0Lmxlbmd0aCkKKyAgICAgICAgfQorICAgICAgICByZW1haW5pbmdMZW5ndGggPSB0ZXh0RmllbGR0ZXh0Lmxlbmd0aDsKKworICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJyZW1haW5pbmcgdGV4dDogIiwgdGV4dEZpZWxkdGV4dCk7CisgICAgfQorfQorCitmdW5jdGlvbiBnZXRMaW5lSGVpZ2h0KCl7CisJcmV0dXJuIGxpbmVIZWlnaHQ7Cit9CisKKworCisKK11dPgorPC9zY3JpcHQ+CisKKworCisKKzxtZXRob2QgbmFtZT0iYWRkQ2hhdEhpc3RvcnkiIGFyZ3M9InZhbHVlLGNsaWVudCI+CisgIAk8IVtDREFUQVsKKyAgCURlYnVnLndyaXRlKCJhZGRDaGF0SGlzdG9yeTogIix2YWx1ZSxjbGllbnQpOworICAgIGlmICh2YWx1ZVs3XSl7CisgICAgICAgICAgdmFyIG5ld21lc3NhZ2UgPSAiPEZPTlQgQ09MT1I9JyIrdmFsdWVbNV0rIicgc2l6ZT0nMTEnPiIrY2xpZW50LmZpcnN0bmFtZSsiICIrY2xpZW50Lmxhc3RuYW1lKyI8L0ZPTlQ+OjxGT05UIENPTE9SPScweDAwMDAwMCcgc2l6ZT0nMTEnPiIrdmFsdWVbNF0rIjwvRk9OVD48YnIgLz4iOworICAgIH0gZWxzZSB7CisgICAgICAgICAgdmFyIG5ld21lc3NhZ2UgPSAiPEZPTlQgQ09MT1I9JyIrdmFsdWVbNV0rIicgc2l6ZT0nMTEnPiIrY2xpZW50LmZpcnN0bmFtZSsiICIrY2xpZW50Lmxhc3RuYW1lKyI8L0ZPTlQ+OjxGT05UIENPTE9SPScweDAwMDAwMCcgc2l6ZT0nMTEnPiIrdmFsdWVbNF0rIjwvRk9OVD48YnIgLz4iOworICAgIH0KKyAgCS8vRGVidWcud3JpdGUoIm5ld21lc3NhZ2U6ICIsbmV3bWVzc2FnZSk7CisgIAljYW52YXMuX2NoYXRjb250ZW50LmFkZENoYXRJdGVtKG5ld21lc3NhZ2UpOyAgLy8gSXMgImFkZENoYXRJdGVtKCkiIHVzZWQ/ICBCeSB3aGF0PyBoLmt1emUgMjAwOC8zLzI3CisgIAljYW52YXMuX2NoYXRoaXN0b3J5LnB1c2gobmV3bWVzc2FnZSk7CisgIAldXT4KKzwvbWV0aG9kPgorCis8bWV0aG9kIG5hbWU9InJlc2V0Rm9ybWF0ZWRDaGF0SGlzdG9yeSI+CisgIAk8IVtDREFUQVsKKyAgCWlmICh0aGlzLmNoYXRoaXN0b3J5PT1udWxsKSByZXR1cm4gJyc7CisgIAl2YXIgY29tcGxldGVUZXh0ID0gJyc7CisgIAlmb3IgKHZhciBpPTA7aTxjaGF0aGlzdG9yeS5sZW5ndGg7aSsrKXsKKyAgCQljb21wbGV0ZVRleHQrPWNoYXRoaXN0b3J5W2ldOworICAJfQorICAJLy9EZWJ1Zy53cml0ZSgiZ2V0Rm9ybWF0ZWRDaGF0SGlzdG9yeTogIixjb21wbGV0ZVRleHQpOworICAJcmV0dXJuIGNvbXBsZXRlVGV4dDsKKyAgCV1dPgorPC9tZXRob2Q+Cis8bWV0aG9kIG5hbWU9ImdldEZvcm1hdGVkQ2hhdEhpc3RvcnkiPgorICAJPCFbQ0RBVEFbCisgIAlpZiAodGhpcy5jaGF0aGlzdG9yeT09bnVsbCkgcmV0dXJuICcnOworICAJdmFyIGNvbXBsZXRlVGV4dCA9ICcnOworICAJZm9yICh2YXIgaT0wO2k8Y2hhdGhpc3RvcnkubGVuZ3RoO2krKyl7CisgIAkJY29tcGxldGVUZXh0Kz1jaGF0aGlzdG9yeVtpXTsKKyAgCX0KKyAgCS8vRGVidWcud3JpdGUoImdldEZvcm1hdGVkQ2hhdEhpc3Rvcnk6ICIsY29tcGxldGVUZXh0KTsKKyAgCXJldHVybiBjb21wbGV0ZVRleHQ7CisgIAldXT4KKzwvbWV0aG9kPgorCisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY2hhdC9pbnZpdGV1c2VyL2NoYXRQYXJ0aWNpcGFudHNJbnZpdGVDb25mZXJlbmNlLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY2hhdC9pbnZpdGV1c2VyL2NoYXRQYXJ0aWNpcGFudHNJbnZpdGVDb25mZXJlbmNlLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYWU0ODM1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jaGF0L2ludml0ZXVzZXIvY2hhdFBhcnRpY2lwYW50c0ludml0ZUNvbmZlcmVuY2UubHp4CkBAIC0wLDAgKzEsMTI5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCQorPGNsYXNzIG5hbWU9ImNoYXRQYXJ0aWNpcGFudHNJbnZpdGVDb25mZXJlbmNlIiBleHRlbmRzPSJndWlQcmVzZW50ZXIiIHJlc2l6ZWFibGU9ImZhbHNlIgorICAgIHdpZHRoPSI0OTAiIGhlaWdodD0iNDMwIiB5PSIyNDAiIHg9IjI0MCIgY2xvc2FibGU9InRydWUiIGxhYmVsaWQ9IjExMzEiID4KKwkKKwk8YXR0cmlidXRlIG5hbWU9InB1YmxpY1NJRCIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0idXNlcl9pZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKwkKKyAgICA8dmlldyByZXNvdXJjZT0ibWVzc2FnZWJveF9pbmZvX3JzYyIgeD0iMTAiIHk9IjI0IiAvPgorICAgIAorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMTEzMiIgeD0iMzAiIHk9IjIyIiBmb250c3R5bGU9Iml0YWxpYyIKKyAgICAgICAgICAgICAgIG11bHRpbGluZT0idHJ1ZSIgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGggLSA0MCB9IiAvPgorCQorCTxsYWJlbFRleHQgbGFiZWxpZD0iNzc3IiB4PSIyIiB5PSI1MiIgZm9udHN0eWxlPSJib2xkIiAvPgorCQorICAgIDx2aWV3IHg9IjQiIHk9IjcyIiBoZWlnaHQ9IjE1MCI+CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgICAgICAgICAgdGhpcy5nZXRSb29tc1B1YmxpY1dpdGhvdXRUeXBlLmRvQ2FsbCgpOworICAgICAgICA8L2hhbmRsZXI+CisKKyAgICAgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iZ2V0Um9vbXNQdWJsaWNXaXRob3V0VHlwZSIgZnVuY25hbWU9ImNvbmZlcmVuY2VzZXJ2aWNlLmdldFJvb21zUHVibGljV2l0aG91dFR5cGUiIAorICAgICAgICAgICAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gICAKKyAgICAgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gY2FudmFzLnNlc3Npb25JZDs8L21ldGhvZD48L25ldHBhcmFtPiAgCisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4gICAgCisgICAgICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJnZXRSb29tc1B1YmxpY1dpdGhvdXRUeXBlOiAiLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlZyA9IDA7IGVnIDwgdmFsdWUubGVuZ3RoOyBlZysrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRpbWUgPSB2YWx1ZVtlZ10uc3RhcnR0aW1lLmdldEhvdXJzKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgJzonICsgdmFsdWVbZWddLnN0YXJ0dGltZS5nZXRNaW51dGVzKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgJyAnICsgdmFsdWVbZWddLnN0YXJ0dGltZS5nZXREYXRlKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgJy4nICsgKHZhbHVlW2VnXS5zdGFydHRpbWUuZ2V0TW9udGgoKSArIDEpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICcuJyArIHZhbHVlW2VnXS5zdGFydHRpbWUuZ2V0RnVsbFllYXIoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBsei5yb29tTGlzdEludml0ZVVzZXJJdGVtKHBhcmVudC5pbm4uaW5uLmlubiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb29tVHlwZTp2YWx1ZVtlZ10ucm9vbXR5cGUucm9vbXR5cGVzX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnR1c2VycyA6IHZhbHVlW2VnXS5jdXJyZW50dXNlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqIDogdmFsdWVbZWddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzcHVibGljIDogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb29taWQgOiB2YWx1ZVtlZ10ucm9vbXNfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnR0aW1lIDogdGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb29tbmFtZSA6IHZhbHVlW2VnXS5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1YmxpY1NJRDpwYXJlbnQucGFyZW50LnB1YmxpY1NJRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2lkOnBhcmVudC5wYXJlbnQudXNlcl9pZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBdXT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICA8L2hhbmRsZXI+ICAKKyAgICAgICAgPC9uZXRSZW1vdGVDYWxsSGliPgorCisgICAgICAgIDwhLS0gaW5uLmlubi5pbm4gdmlldyB3b3VsZCBiZSBzZXR0ZWQgb2JqZWN0IGJ5IGFib3ZlIG9uZGF0YSBoYW5kZXIuIC0tPgorICAgICAgICA8dmlldyBuYW1lPSJpbm4iIHdpZHRoPSI0ODAiIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodCB9IiBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ2Jhc2ViZ2NvbG9yaXplcicpIH0iID4KKyAgICAgICAgICAgIDx2aWV3IG5hbWU9ImlubiIgeD0iMSIgeT0iMSIgd2lkdGg9IjQ3OCIgaGVpZ2h0PSIkeyBwYXJlbnQuaGVpZ2h0LTIgfSIgCisgICAgICAgICAgICAgICAgICAgICAgICBiZ2NvbG9yPSIweEZGRkZGRiIgY2xpcD0idHJ1ZSIgPgorICAgICAgICAgICAgICAgIDx2aWV3IG5hbWU9ImlubiIgbGF5b3V0PSJheGlzOnk7c3BhY2luZzoxIi8+CisgICAgICAgICAgICAgICAgPG9tX3ZzY3JvbGxiYXIgLz4KKyAgICAgICAgICAgIDwvdmlldz4KKyAgICAgICAgPC92aWV3PgorICAgIDwvdmlldz4KKwkKKwk8bGFiZWxUZXh0IGxhYmVsaWQ9Ijc3OSIgeD0iMiIgeT0iMjIyIiBmb250c3R5bGU9ImJvbGQiIC8+CisJCisgICAgPHZpZXcgeD0iNCIgeT0iMjQyIiBoZWlnaHQ9IjE1MCI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgICAgICB0aGlzLmdldFJvb21zQnlPcmdhbmlzYXRpb25XaXRob3V0VHlwZS5kb0NhbGwoKTsKKyAgICAgICAgPC9oYW5kbGVyPiAgICAKKworICAgICAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJnZXRSb29tc0J5T3JnYW5pc2F0aW9uV2l0aG91dFR5cGUiIGZ1bmNuYW1lPSJjb25mZXJlbmNlc2VydmljZS5nZXRSb29tc0J5T3JnYW5pc2F0aW9uV2l0aG91dFR5cGUiIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiA+ICAgCisgICAgICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4gIAorICAgICAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBoaWIuY3VycmVudGRvbWFpbk9iai5vcmdhbmlzYXRpb25faWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4gIAorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+ICAgIAorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImdldFJvb21zQnlPcmdhbmlzYXRpb25XaXRob3V0VHlwZSAiLHZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlZyA9IDA7IGVnIDwgdmFsdWUubGVuZ3RoOyBlZysrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgbHoucm9vbUxpc3RJbnZpdGVVc2VySXRlbShwYXJlbnQuaW5uLmlubi5pbm4seworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vbVR5cGU6dmFsdWVbZWddLnJvb20ucm9vbXR5cGUucm9vbXR5cGVzX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VycmVudHVzZXJzIDogdmFsdWVbZWddLnJvb20uY3VycmVudHVzZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqIDogdmFsdWVbZWddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNwdWJsaWMgOiBmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb21pZCA6IHZhbHVlW2VnXS5yb29tLnJvb21zX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnR0aW1lIDogcGFyc2VEYXRlVG9TdHJpbmdUaW1lKHZhbHVlW2VnXS5yb29tLnN0YXJ0dGltZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb29tbmFtZSA6IHZhbHVlW2VnXS5yb29tLm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWNTSUQ6cGFyZW50LnBhcmVudC5wdWJsaWNTSUQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdXT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICA8L2hhbmRsZXI+ICAKKyAgICAgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAKKyAKKyAgICAgICAgICAgICAgICA8IS0tIGlubi5pbm4uaW5uIHZpZXcgd291bGQgYmUgc2V0dGVkIG9iamVjdCBieSBhYm92ZSBvbmRhdGEgaGFuZGVyLiAtLT4KKyAgICAgICAgPHZpZXcgbmFtZT0iaW5uIiB3aWR0aD0iNDgwIiBoZWlnaHQ9IiR7IHBhcmVudC5oZWlnaHQgfSIgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdiYXNlYmdjb2xvcml6ZXInKSB9IiA+CisgICAgICAgICAgICA8dmlldyBuYW1lPSJpbm4iIHg9IjEiIHk9IjEiIHdpZHRoPSI0NzgiIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodC0yIH0iIGJnY29sb3I9IjB4RkZGRkZGIiBjbGlwPSJ0cnVlIiA+CisgICAgICAgICAgICAgICAgPHZpZXcgbmFtZT0iaW5uIiBsYXlvdXQ9ImF4aXM6eTtzcGFjaW5nOjEiLz4KKyAgICAgICAgICAgICAgICA8b21fdnNjcm9sbGJhciAvPgorICAgICAgICAgICAgPC92aWV3PgorICAgICAgICA8L3ZpZXc+CisgICAgPC92aWV3PgorICAgIAorICAgIDxzaW1wbGVMYWJlbEJ1dHRvbiBsYWJlbGlkPSI1NSIgd2lkdGg9IjEwMCIgb25jbGljaz0idGhpcy5wYXJlbnQuY2xvc2UoKTsiCisJCSAgIHg9IiRvbmNleyBwYXJlbnQud2lkdGgtMTA0IH0iIHk9IiRvbmNleyBwYXJlbnQuaGVpZ2h0LTI2IH0iIC8+ICAgIAkKKwkKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY2hhdC9pbnZpdGV1c2VyL2NoYXRQYXJ0aWNpcGFudHNJbnZpdGVNZXNzYWdlLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY2hhdC9pbnZpdGV1c2VyL2NoYXRQYXJ0aWNpcGFudHNJbnZpdGVNZXNzYWdlLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDVkNWE5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jaGF0L2ludml0ZXVzZXIvY2hhdFBhcnRpY2lwYW50c0ludml0ZU1lc3NhZ2UubHp4CkBAIC0wLDAgKzEsMTA0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCQorPGNsYXNzIG5hbWU9ImNoYXRQYXJ0aWNpcGFudHNJbnZpdGVNZXNzYWdlIiBleHRlbmRzPSJndWlQcmVzZW50ZXIiIGxhYmVsaWQ9IjExMzgiCisgICAgZG9ja2luZz0idHJ1ZSIgcmVzaXplYWJsZT0iZmFsc2UiIGNsb3NhYmxlPSJ0cnVlIiB5PSIyNjAiCisgICAgd2lkdGg9IjQwMCIgeD0iMzAwIiBoZWlnaHQ9IjI0MCI+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJyZWZPYmoiIHZhbHVlPSJudWxsIiAvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0icHVibGljU0lEIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJ1c2VyX2lkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0iY29uZmVyZW5jZVJvb21OYW1lIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJyb29tSWQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisJCisJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKwkJPCFbQ0RBVEFbCisJCSAgCisJCSAgdmFyIHRTdHJpbmcgPSBjYW52YXMuZmlyc3ROYW1lICsgJyAnICsgY2FudmFzLmxhc3ROYW1lICsgJyAnIAorCQkgICAgICAgICAgICAgICAgICArIGNhbnZhcy5nZXRMYWJlbE5hbWUoMTEzNykgKyAnICcgCisJCSAgICAgICAgICAgICAgICAgICsgdGhpcy5jb25mZXJlbmNlUm9vbU5hbWU7CisJCSAgICAgICAgICAgICAgICAgIAorCQkgIHRoaXMubWVzc2FnZS5zZXRBdHRyaWJ1dGUoInRleHQiLHRTdHJpbmcpOworCQkKKwkJXV0+CisJPC9oYW5kbGVyPgorCQorCTxtZXRob2QgbmFtZT0ic2VuZCI+CisJCQorCQl0aGlzLnNlbmRNZXNzYWdlV2l0aENsaWVudEJ5UHVibGljU0lET3JVc2VyLm1lc3NhZ2VPYmplY3QgPSBuZXcgT2JqZWN0CisJCXRoaXMuc2VuZE1lc3NhZ2VXaXRoQ2xpZW50QnlQdWJsaWNTSURPclVzZXIubWVzc2FnZU9iamVjdFsibWVzc2FnZSJdID0gImludml0ZVRvUm9vbSI7CisJCXRoaXMuc2VuZE1lc3NhZ2VXaXRoQ2xpZW50QnlQdWJsaWNTSURPclVzZXIubWVzc2FnZU9iamVjdFsiYWN0aW9uIl0gPSAiaW52aXRlVG9Sb29tIjsKKwkJdGhpcy5zZW5kTWVzc2FnZVdpdGhDbGllbnRCeVB1YmxpY1NJRE9yVXNlci5tZXNzYWdlT2JqZWN0WyJyb29tSWQiXSA9IHRoaXMucm9vbUlkOworCQl0aGlzLnNlbmRNZXNzYWdlV2l0aENsaWVudEJ5UHVibGljU0lET3JVc2VyLm1lc3NhZ2VPYmplY3RbInVzZXJtZXNzYWdlIl0gPSB0aGlzLm1lc3NhZ2UuZ2V0VGV4dCgpOworCQl0aGlzLnNlbmRNZXNzYWdlV2l0aENsaWVudEJ5UHVibGljU0lET3JVc2VyLm1lc3NhZ2VPYmplY3RbInB1YmxpY1NJRCJdID0gY2FudmFzLnB1YmxpY1NJRDsKKwkJCisJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJTZW5kIHRvIF8gIix0aGlzLnB1YmxpY1NJRCk7CisJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJTZW5kIHRvIF8gIix0aGlzLnVzZXJfaWQpOworCQkKKwkJdGhpcy5zZW5kTWVzc2FnZVdpdGhDbGllbnRCeVB1YmxpY1NJRE9yVXNlci5kb0NhbGwoKTsKKwkJCisJPC9tZXRob2Q+CisJCisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0ic2VuZE1lc3NhZ2VXaXRoQ2xpZW50QnlQdWJsaWNTSURPclVzZXIiIGZ1bmNuYW1lPSJzZW5kTWVzc2FnZVdpdGhDbGllbnRCeVB1YmxpY1NJRE9yVXNlciIgCisgICAgICAgICAgICAgICAgICAgICAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gIAorICAgICAgICA8YXR0cmlidXRlIG5hbWU9Im1lc3NhZ2VPYmplY3QiIHZhbHVlPSJudWxsIiAvPgorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5tZXNzYWdlT2JqZWN0OzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC5wdWJsaWNTSUQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50LnVzZXJfaWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiK3NlbmRNZXNzYWdlV2l0aENsaWVudEJ5UHVibGljU0lET3JVc2VyIDogIix2YWx1ZSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKHBhcmVudC5fc3dpdGNoLmdldFZhbHVlKCkpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBwYXJlbnQucmVmT2JqLmNoZWNrQ29uZGl0aW9uc1doZW5CdXR0b25DbGlja2VkKG51bGwpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIAkKKyAgICAgICAgICAgICAgICAJcGFyZW50LnJlZk9iai5kb0Nsb3NlV2luZG93KCk7CisgICAgICAgICAgICAgICAgCQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBwYXJlbnQuY2xvc2UoKTsKKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+ICAKKyAgICA8L25ldFJlbW90ZUNhbGxIaWI+CQorICAgIAorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMTEzNiIgeD0iMiIgeT0iMjIiIGZvbnRzdHlsZT0iYm9sZCIgLz4KKyAgICAKKyAgICA8Y3VzdG9tU2Nyb2xsRWRpdHRleHQgbmFtZT0ibWVzc2FnZSIgeT0iNDIiIHg9IjIiIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoIC0gNCB9IiAKKyAgICAgICAgICAgIGhlaWdodD0iMTAwIiB0ZXh0PSIiIC8+CisgICAgICAgICAgICAKKyAgICA8bGFiZWxDaGVja2JveCB4PSIyIiB5PSIkb25jZXsgcGFyZW50LmhlaWdodC00OCB9IiBmb250c2l6ZT0iMTEiCisgICAgICAgIG5hbWU9Il9zd2l0Y2giIGxhYmVsaWQ9IjExMzQiID4KKyAgICA8L2xhYmVsQ2hlY2tib3g+ICAKKyAgICAKKyAgICA8c2ltcGxlTGFiZWxCdXR0b24gbGFiZWxpZD0iMTEzOSIgd2lkdGg9IjIwMCIgeD0iODgiIHk9IiRvbmNleyBwYXJlbnQuaGVpZ2h0LTIyIH0iIAorICAgICAgICBvbmNsaWNrPSJ0aGlzLnBhcmVudC5zZW5kKCk7IiAvPgorICAgICAgICAKKyAgICA8c2ltcGxlTGFiZWxCdXR0b24gbGFiZWxpZD0iMjUiIHdpZHRoPSIxMDAiIHg9IjI5MCIgeT0iJG9uY2V7IHBhcmVudC5oZWlnaHQtMjIgfSIgCisgICAgICAgIG9uY2xpY2s9InRoaXMucGFyZW50LmNsb3NlKCk7IiAvPgorCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NoYXQvaW52aXRldXNlci9jaGF0UGFydGljaXBhbnRzSW52aXRlTm90aWZpY2F0aW9uLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY2hhdC9pbnZpdGV1c2VyL2NoYXRQYXJ0aWNpcGFudHNJbnZpdGVOb3RpZmljYXRpb24ubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwNTNhYjYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NoYXQvaW52aXRldXNlci9jaGF0UGFydGljaXBhbnRzSW52aXRlTm90aWZpY2F0aW9uLmx6eApAQCAtMCwwICsxLDkxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCQorPGNsYXNzIG5hbWU9ImNoYXRQYXJ0aWNpcGFudHNJbnZpdGVOb3RpZmljYXRpb24iIGV4dGVuZHM9Imd1aVByZXNlbnRlciIgbGFiZWxpZD0iMTEzOCIKKyAgICBkb2NraW5nPSJ0cnVlIiByZXNpemVhYmxlPSJmYWxzZSIgY2xvc2FibGU9InRydWUiIHk9IjI2MCIKKyAgICB3aWR0aD0iNDAwIiB4PSIzMDAiIGhlaWdodD0iMjQwIj4KKwkKKwk8YXR0cmlidXRlIG5hbWU9InJlZk9iaiIgdmFsdWU9Im51bGwiIC8+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJwdWJsaWNTSUQiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwk8YXR0cmlidXRlIG5hbWU9ImNvbmZlcmVuY2VSb29tTmFtZSIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0idXNlcm1lc3NhZ2UiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwk8YXR0cmlidXRlIG5hbWU9InJvb21JZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKwkKKwk8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorCQk8IVtDREFUQVsKKwkJICAKKwkJICB0aGlzLm1lc3NhZ2UubWVzc2FnZS5zZXRBdHRyaWJ1dGUoInRleHQiLHRoaXMudXNlcm1lc3NhZ2UpOworCQkKKwkJXV0+CisJPC9oYW5kbGVyPgorCQorCTxtZXRob2QgbmFtZT0iYWNjZXB0Ij4KKwkJY2FudmFzLnJvb21KdW1wSWQgPSB0aGlzLnJvb21JZDsKKyAgICAgICAgcXVpY2tsaW5rQWN0KCJqdW1wVG9Sb29tIik7CisJCQorCQl0aGlzLmNsb3NlKCk7CisJPC9tZXRob2Q+CisJCisJPG1ldGhvZCBuYW1lPSJkZW55Ij4KKwkJCisJCXRoaXMuc2VuZE1lc3NhZ2VXaXRoQ2xpZW50QnlQdWJsaWNTSUQubWVzc2FnZU9iamVjdCA9IG5ldyBPYmplY3QKKwkJdGhpcy5zZW5kTWVzc2FnZVdpdGhDbGllbnRCeVB1YmxpY1NJRC5tZXNzYWdlT2JqZWN0WyJtZXNzYWdlIl0gPSAiaW52aXRlVG9Sb29tQW5zd2VyIjsKKwkJdGhpcy5zZW5kTWVzc2FnZVdpdGhDbGllbnRCeVB1YmxpY1NJRC5tZXNzYWdlT2JqZWN0WyJhY3Rpb24iXSA9ICJpbnZpdGVUb1Jvb21BbnN3ZXIiOworCQl0aGlzLnNlbmRNZXNzYWdlV2l0aENsaWVudEJ5UHVibGljU0lELm1lc3NhZ2VPYmplY3RbInVzZXJtZXNzYWdlIl0gPSBjYW52YXMuZmlyc3ROYW1lICsgJyAnICsgY2FudmFzLmxhc3ROYW1lICsgJyAnIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBjYW52YXMuZ2V0TGFiZWxOYW1lKDExNDApOworCQl0aGlzLnNlbmRNZXNzYWdlV2l0aENsaWVudEJ5UHVibGljU0lELmRvQ2FsbCgpOworCQkKKwk8L21ldGhvZD4KKwkKKyAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJzZW5kTWVzc2FnZVdpdGhDbGllbnRCeVB1YmxpY1NJRCIgZnVuY25hbWU9InNlbmRNZXNzYWdlV2l0aENsaWVudEJ5UHVibGljU0lEIiAKKyAgICAgICAgICAgICAgICAgICAgICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAgCisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ibWVzc2FnZU9iamVjdCIgdmFsdWU9Im51bGwiIC8+CisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50Lm1lc3NhZ2VPYmplY3Q7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50LnB1YmxpY1NJRDs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCIrc2VuZE1lc3NhZ2VXaXRoQ2xpZW50QnlQdWJsaWNTSUQgOiAiLHZhbHVlKTsKKyAgICAgICAgICAgICAgICBwYXJlbnQuY2xvc2UoKTsKKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+ICAKKyAgICA8L25ldFJlbW90ZUNhbGxIaWI+CQorICAgIAorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMTEzNiIgeD0iMiIgeT0iMjIiIGZvbnRzdHlsZT0iYm9sZCIgLz4KKyAgICAKKyAgICA8dmlldyB5PSI0MiIgeD0iMiIgbmFtZT0ibWVzc2FnZSIgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGggLSA0IH0iIGNsaXA9InRydWUiPgorICAgIAk8dGV4dCBuYW1lPSJtZXNzYWdlIiAgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGggLSAxNiB9IgorICAgICAgICAgICAgaGVpZ2h0PSIxMDAiIHRleHQ9IiIgbXVsdGlsaW5lPSJ0cnVlIiAvPgorICAgIDwvdmlldz4KKyAgICAKKyAgICA8c2ltcGxlTGFiZWxCdXR0b24gbGFiZWxpZD0iMTE0MSIgd2lkdGg9IjEwMCIgeD0iODYiIHk9IiRvbmNleyBwYXJlbnQuaGVpZ2h0LTIyIH0iIAorICAgICAgICBvbmNsaWNrPSJ0aGlzLnBhcmVudC5hY2NlcHQoKTsiIC8+CisgICAgICAgIAorICAgIDxzaW1wbGVMYWJlbEJ1dHRvbiBsYWJlbGlkPSIxMTQyIiB3aWR0aD0iMTAwIiB4PSIxODgiIHk9IiRvbmNleyBwYXJlbnQuaGVpZ2h0LTIyIH0iIAorICAgICAgICBvbmNsaWNrPSJ0aGlzLnBhcmVudC5kZW55KCk7IiAvPgorICAgICAgICAKKyAgICA8c2ltcGxlTGFiZWxCdXR0b24gbGFiZWxpZD0iMjUiIHdpZHRoPSIxMDAiIHg9IjI5MCIgeT0iJG9uY2V7IHBhcmVudC5oZWlnaHQtMjIgfSIgCisgICAgICAgIG9uY2xpY2s9InRoaXMucGFyZW50LmNsb3NlKCk7IiAvPgorCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NoYXQvaW52aXRldXNlci9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY2hhdC9pbnZpdGV1c2VyL2xpYnJhcnkubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmZmJmZTEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NoYXQvaW52aXRldXNlci9saWJyYXJ5Lmx6eApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCisKKwk8aW5jbHVkZSBocmVmPSJyb29tTGlzdEludml0ZVVzZXJJdGVtLmx6eCIgLz4KKwk8aW5jbHVkZSBocmVmPSJjaGF0UGFydGljaXBhbnRzSW52aXRlTWVzc2FnZS5sengiIC8+CisJPGluY2x1ZGUgaHJlZj0iY2hhdFBhcnRpY2lwYW50c0ludml0ZU5vdGlmaWNhdGlvbi5sengiIC8+CisJPGluY2x1ZGUgaHJlZj0iY2hhdFBhcnRpY2lwYW50c0ludml0ZUNvbmZlcmVuY2UubHp4IiAvPgorCQorICAgIAorPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jaGF0L2ludml0ZXVzZXIvcm9vbUxpc3RJbnZpdGVVc2VySXRlbS5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NoYXQvaW52aXRldXNlci9yb29tTGlzdEludml0ZVVzZXJJdGVtLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGU5ZWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jaGF0L2ludml0ZXVzZXIvcm9vbUxpc3RJbnZpdGVVc2VySXRlbS5sengKQEAgLTAsMCArMSwxNjcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKwk8Y2xhc3MgbmFtZT0icm9vbUxpc3RJbnZpdGVVc2VySXRlbSIgZXh0ZW5kcz0idmlldyIgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5iZ0NvbG9yTWVudUl0ZW1zIH0iIAorCQkgICBoZWlnaHQ9IjUwIiBvbm1vdXNlb3Zlcj0iIiBvbm1vdXNlb3V0PSIiIHdpZHRoPSI0NzgiID4KKworCQk8YXR0cmlidXRlIG5hbWU9ImlzcHVibGljIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisJCTxhdHRyaWJ1dGUgbmFtZT0iaXNhdWRpZW5jZSIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorCQk8YXR0cmlidXRlIG5hbWU9Im9iaiIgdmFsdWU9Im51bGwiIC8+CisJCTxhdHRyaWJ1dGUgbmFtZT0icm9vbWlkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorCQk8YXR0cmlidXRlIG5hbWU9InN0YXJ0dGltZSIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorCQk8YXR0cmlidXRlIG5hbWU9InJvb21uYW1lIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisKKwkJPGF0dHJpYnV0ZSBuYW1lPSJyb29tQ2xhc3NOYW1lIiB2YWx1ZT0iY29uZmVyZW5jZVZpZXciIHR5cGU9InN0cmluZyIgLz4KKwkJPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50dXNlcnMiIHZhbHVlPSJudWxsIiAvPgorCisJCTxhdHRyaWJ1dGUgbmFtZT0ibWF4VXNlcnMiIHZhbHVlPSI0IiB0eXBlPSJudW1iZXIiIC8+CisJCQorCQk8YXR0cmlidXRlIG5hbWU9InJvb21UeXBlIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorCisJCTxhdHRyaWJ1dGUgbmFtZT0iY2hlY2tGb3JNYXhVc2VycyIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorCQkKKwkJPGF0dHJpYnV0ZSBuYW1lPSJwdWJsaWNTSUQiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwkJPGF0dHJpYnV0ZSBuYW1lPSJ1c2VyX2lkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorCisJCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisJCTwhW0NEQVRBWworCisJCQkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJvYmo6ICIsb2JqKTsKKwkJCWlmICh0aGlzLmlzcHVibGljKSB7CisJCQkJdGhpcy5tYXhVc2VycyA9IG9iai5udW1iZXJPZlBhcnRpemlwYW50czsKKwkJCX0gZWxzZSB7CisJCQkJdGhpcy5tYXhVc2VycyA9IG9iai5yb29tLm51bWJlck9mUGFydGl6aXBhbnRzOworCQkJfQorCQkJdGhpcy5fdXNlcnMuc2V0QXR0cmlidXRlKCd0ZXh0JywgY2FudmFzLmdldExhYmVsTmFtZSgzOTgpICsgJyAnCisJCQkJCQkJKyB0aGlzLmN1cnJlbnR1c2Vycy5sZW5ndGggKyAiIC8gIiArIHRoaXMubWF4VXNlcnMpOworCQkJdmFyIHRTdHJpbmcgPSBjYW52YXMuZ2V0TGFiZWxOYW1lKDQwMSkgKyAiPGJyLz4iOworCQkJZm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLmN1cnJlbnR1c2Vycy5sZW5ndGg7IGkrKykgeworCQkJCXRTdHJpbmcgKz0gdGhpcy5jdXJyZW50dXNlcnNbaV0uZmlyc3RuYW1lICsgIiAiCisJCQkJCQkrIHRoaXMuY3VycmVudHVzZXJzW2ldLmxhc3RuYW1lICsgIiAoIgorCQkJCQkJKyB0aGlzLmN1cnJlbnR1c2Vyc1tpXS51c2VybmFtZSArICIpICIKKwkJCQkJCSsgY2FudmFzLmdldExhYmVsTmFtZSgzOTkpCisJCQkJCQkrIHBhcnNlRGF0ZVRvU3RyaW5nVGltZSh0aGlzLmN1cnJlbnR1c2Vyc1tpXS5yb29tRW50ZXIpCisJCQkJCQkrICIgPGJyLz4iOworCQkJfQorCQkJdGhpcy5fbGFiZWx0b29sdGlwLnNldEF0dHJpYnV0ZSgndGV4dCcsIHRTdHJpbmcpOworCQldXT4KKwkJPC9oYW5kbGVyPgorCisJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorCQkJY2FudmFzLmlzQ29uZmVyZW5jZSA9ICF0aGlzLmlzYXVkaWVuY2U7CisJCQlpZiAodGhpcy5pc2F1ZGllbmNlKQorCQkJCWNvbm5lY3RlZElzQXVkaWVuY2UgPSAnXycgKyAnYXVkaSc7CisJCQlpZiAodGhpcy5pc3B1YmxpYykgeworCQkJCWhpYi5jb25mZXJlbmNlZG9tYWluID0gInB1YmxpYyI7CisJCQkJaGliLmN1cnJlbnRyb29taWQgPSB0aGlzLm9iai5yb29tc19pZDsKKwkJCQkvL0RlYnVnLndyaXRlKCJpc3B1YmxpYyIpOworCQkJfSBlbHNlIHsKKwkJCQloaWIuY29uZmVyZW5jZWRvbWFpbiA9IHRoaXMub2JqLm9yZ2FuaXNhdGlvbi5vcmdhbmlzYXRpb25faWQ7CisJCQkJaGliLmN1cnJlbnRyb29taWQgPSB0aGlzLm9iai5yb29tLnJvb21zX2lkOworCQkJCS8vRGVidWcud3JpdGUoIm5vbiBpc3B1YmxpYyIpOworCQkJfQorCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9uY2xpY2siLCB0aGlzKTsKKwkJCXBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQuX3Jvb21saXN0ZGV0YWlscy5kb2luaXQoCisJCQkJCXRoaXMuY3VycmVudHVzZXJzLCB0aGlzLnJvb21pZCwgdGhpcy5yb29tbmFtZSk7CisJCTwvaGFuZGxlcj4KKworCQk8bWV0aG9kIG5hbWU9ImNoZWNrTWF4VXNlcnMiPgorCQk8IVtDREFUQVsKKwkJCWlmICh0aGlzLmN1cnJlbnR1c2Vycy5sZW5ndGggPCB0aGlzLm1heFVzZXJzKSB7CisJCQkJdGhpcy5lbnRlclJvb20oKTsKKwkJCX0gZWxzZSB7CisJCQkJbmV3IGx6LmxhYmVsZXJyb3JQb3B1cChjYW52YXMse2Vycm9ybGFiZWxpZDo5OX0pOworCQkJCS8vbmV3IGx6LnJwY0Vycm9yRGlhbG9nKGNhbnZhcy5tYWluX2NvbnRlbnQuX2NvbnRlbnQuaW5uZXIsIHsKKwkJCQkvLwkJCWVycm9yaWQgOiAzMAorCQkJCS8vCQl9KTsKKwkJCX0KKwkJXV0+CisJCTwvbWV0aG9kPgorCisJCTxtZXRob2QgbmFtZT0iZW50ZXJSb29tIj4KKwkJCQorCQkJdmFyIHJvb21pZCA9IDA7CisJCQkKKwkJCWlmICh0aGlzLmlzcHVibGljKSB7CisJCQkJcm9vbWlkID0gdGhpcy5vYmoucm9vbXNfaWQ7CisJCQkJLy9EZWJ1Zy53cml0ZSgiaXNwdWJsaWMiKTsKKwkJCX0gZWxzZSB7CisJCQkJcm9vbWlkID0gdGhpcy5vYmoucm9vbS5yb29tc19pZDsKKwkJCQkvL0RlYnVnLndyaXRlKCJub24gaXNwdWJsaWMiKTsKKwkJCX0KKwkJCQorCQkJY2FudmFzLnJvb21KdW1wSWQgPSByb29taWQ7CisJCQlxdWlja2xpbmtBY3QoImp1bXBUb1Jvb20iKTsKKwkJCQorCQkJdGhpcy5kb0Nsb3NlV2luZG93KCk7CisJCTwvbWV0aG9kPgorCisJCTxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImdldFJvb21DbGllbnRzTGlzdEJ5Um9vbUlkIiBmdW5jbmFtZT0iY29uZmVyZW5jZXNlcnZpY2UuZ2V0Um9vbUNsaWVudHNMaXN0QnlSb29tSWQiCisJCQlyZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPgorCQkJPG5ldHBhcmFtPiA8bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC5yb29taWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJCTxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorCQkJPCFbQ0RBVEFbCisJCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImdldFJvb21DbGllbnRzTGlzdEJ5Um9vbUlkOiAiLCB2YWx1ZSk7CisJCQkJcGFyZW50LmN1cnJlbnR1c2VycyA9IHZhbHVlOworCQkJCXBhcmVudC5vbmluaXQuc2VuZEV2ZW50KCk7CisJCQkJaWYgKHBhcmVudC5jaGVja0Zvck1heFVzZXJzKSB7CisJCQkJCXBhcmVudC5jaGVja01heFVzZXJzKCk7CisJCQkJfQorCQkJXV0+CisJCQk8L2hhbmRsZXI+CisJCTwvbmV0UmVtb3RlQ2FsbEhpYj4KKworCQk8bGFiZWxUZXh0IHRleHQ9IiRvbmNleyBwYXJlbnQucm9vbW5hbWUgfSIgLz4KKworCQk8bGFiZWxUZXh0IG5hbWU9Il91c2VycyIgeT0iMjYiIC8+CisJCTxpbWFnZSBuYW1lPSJfciIgc3JjPSIkb25jZXsgY2FudmFzLmdldFRoZW1lSW1hZ2UoJ3JlbG9hZF9yc2MnKSB9IiB4PSIxMzAiIHk9IjI2IgorCQkJb25jbGljaz0icGFyZW50LmdldFJvb21DbGllbnRzTGlzdEJ5Um9vbUlkLmRvQ2FsbCgpIiA+CisJCQk8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IjQwMiIgLz4KKwkJPC9pbWFnZT4KKworCQk8bWV0aG9kIG5hbWU9ImNoZWNrQ29uZGl0aW9uc1doZW5CdXR0b25DbGlja2VkIiBhcmdzPSJfY2xpY2tlZCI+CisJCQljaGVja0Zvck1heFVzZXJzID0gdHJ1ZTsKKwkJCWdldFJvb21DbGllbnRzTGlzdEJ5Um9vbUlkLmRvQ2FsbCgpOworCQk8L21ldGhvZD4KKwkJCisJCTxtZXRob2QgbmFtZT0iZG9DbG9zZVdpbmRvdyI+CisJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZG9DbG9zZVdpbmRvdyA6OiAiKTsKKwkJCXBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQuY2xvc2UoKTsKKwkJPC9tZXRob2Q+CisKKwkJPHNpbXBsZUxhYmVsQnV0dG9uIGxhYmVsaWQ9IjExMzUiIHg9IjM4MCIgd2lkdGg9IjgwIiBoZWlnaHQ9IjI0IiB5PSIyMCI+CisJCQk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKwkJCQluZXcgbHouY2hhdFBhcnRpY2lwYW50c0ludml0ZU1lc3NhZ2UoY2FudmFzLHsKKyAgICAJCQkJICAgIHJlZk9iajpwYXJlbnQsCisgICAgCQkJCSAgICBwdWJsaWNTSUQ6cGFyZW50LnB1YmxpY1NJRCwKKyAgICAJCQkJICAgIHVzZXJfaWQ6cGFyZW50LnVzZXJfaWQsCisgICAgCQkJCSAgICBjb25mZXJlbmNlUm9vbU5hbWU6cGFyZW50LnJvb21uYW1lLAorICAgIAkJCQkgICAgcm9vbUlkOnBhcmVudC5yb29taWQKKyAgICAJCQkJfSk7CisJCQk8L2hhbmRsZXI+CisJCTwvc2ltcGxlTGFiZWxCdXR0b24+CisKKwkJPGxhYmVsVG9vbHRpcCBtdWx0aWxpbmU9InRydWUiIG5hbWU9Il9sYWJlbHRvb2x0aXAiIC8+CisKKwk8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NoYXQvbGlicmFyeS5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NoYXQvbGlicmFyeS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDU2MDI5MAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY2hhdC9saWJyYXJ5Lmx6eApAQCAtMCwwICsxLDM4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCisKKwk8aW5jbHVkZSBocmVmPSJnbG9iYWxBdHRyaWJ1dGVzLmx6eCIgLz4KKwk8aW5jbHVkZSBocmVmPSJnbG9iYWxNZXRob2RzLmx6eCIgLz4KKwkKKwk8aW5jbHVkZSBocmVmPSJjaGF0TWluaUJ1dHRvbi5sengiIC8+CisJPGluY2x1ZGUgaHJlZj0iY2hhdEJhck1lbnUubHp4IiAvPgorCTxpbmNsdWRlIGhyZWY9Imludml0ZXVzZXIvIiAvPgorCQorCTxpbmNsdWRlIGhyZWY9ImNoYXRQYXJ0aWNpcGFudHMubHp4IiAvPgorCTxpbmNsdWRlIGhyZWY9ImZvbnRPcHRpb25zLmx6eCIgLz4KKwk8aW5jbHVkZSBocmVmPSJlbW90SWNvbnNTZWxlY3Rvci5sengiIC8+CisJPGluY2x1ZGUgaHJlZj0ib3ZlckFsbENoYXRPdXRwdXQubHp4IiAvPgorCTxpbmNsdWRlIGhyZWY9Im92ZXJBbGxDaGF0VGFiQm90dG9tLmx6eCIgLz4KKwk8aW5jbHVkZSBocmVmPSJvdmVyQWxsQ2hhdC5sengiIC8+CisgICAgCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NoYXQvb3ZlckFsbENoYXQubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jaGF0L292ZXJBbGxDaGF0Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDJmNGUyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jaGF0L292ZXJBbGxDaGF0Lmx6eApAQCAtMCwwICsxLDEwMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKyAKKzwhLS0tIENoYXQgbW9kdWxlIG9mIHRoZSBkYXNoYm9hcmQuIFRoZSBmaXhlZCBzaXplIGlzIDgxMHgyODAgLS0+Cis8Y2xhc3MgbmFtZT0ib3ZlckFsbENoYXQiIGV4dGVuZHM9InZpZXciIHg9IjIiCisgICAgd2lkdGg9IiR7IHBhcmVudC53aWR0aC00IH0iIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodCB9IiA+CisgICAgPCEtLSA0NDM6Q2hhdCAtLT4KKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbmNsb3NlIj4KKyAgICAgICAgaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib3ZlckFsbENoYXQvY2xvc2UoKTogIix0aGlzKTsKKyAgICAgICAgY2FudmFzLl9vdmVyYWxsY2hhdGNvbnRlbnQ9bnVsbDsKKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPCEtLSBtZXNzYWdlIGFuZCBidXR0b25zIGFyZWEtLT4KKyAgICA8dmlldyB5PSIwIiB4PSIxOTYiIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodCB9IiA+CisgICAgICAgIDx2aWV3IG5hbWU9Il9jaGF0b3V0cHV0Ym9yZGVyIiBoZWlnaHQ9IiR7IHBhcmVudC5oZWlnaHQtNDggfSIKKyAgICAgICAgICAgIHdpZHRoPSIkeyBwYXJlbnQucGFyZW50LndpZHRoIC0gMTk2IH0iICBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ3NlY29uZEJvcmRlckNvbG9yJykgfSI+CisgICAgICAgIAk8IS0tIDYwNCAtLT4KKyAgICAgICAgICAgIDxvdmVyQWxsQ2hhdE91dHB1dCBuYW1lPSJfY2hhdG91dHB1dCIgeD0iMSIgeT0iMSIgPgorICAgICAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgICAgICAgICAgICAgIGlmIChjYW52YXMuX292ZXJhbGxjaGF0Y29udGVudCE9bnVsbCkgY2FudmFzLl9vdmVyYWxsY2hhdGNvbnRlbnQucGFyZW50LnBhcmVudC5wYXJlbnQuY2xvc2UoKTsKKyAgICAgICAgICAgICAgICAgICAgY2FudmFzLl9vdmVyYWxsY2hhdGNvbnRlbnQgPSB0aGlzOworICAgICAgICAgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgICAgIDwvb3ZlckFsbENoYXRPdXRwdXQ+CisgICAgICAgIDwvdmlldz4KKyAgICAgICAgPG92ZXJBbGxDaGF0VGFiQm90dG9tIG5hbWU9Il9jaGF0dGFiYm90dG9tIiAKKyAgICAgICAgICAgICAgICAgICAgICAgeT0iJHsgcGFyZW50LmhlaWdodC00NiB9IiB4PSIwIiB3aWR0aD0iJHsgcGFyZW50LnBhcmVudC53aWR0aCAtIDE5NiB9IiAvPgorICAgIDwvdmlldz4KKyAgICAKKyAgICA8IS0tIGNoYXQgcGFydGljaXBhbnRzIGFyZWEgLS0+CisgICAgPHZpZXcgeD0iMCIgeT0iMCIgbmFtZT0iX2NoYXRwYXJ0aWNpcGFudHMiIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignc2Vjb25kQm9yZGVyQ29sb3InKSB9IgorICAgICAgICAgIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodC0yIH0iIHdpZHRoPSIxOTAiID4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAgICAgICAgIHRoaXMuZ2V0Q2hhdE92ZXJhbGxVc2Vycy5kb0NhbGwoKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAKKyAgICAgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iZ2V0Q2hhdE92ZXJhbGxVc2VycyIgZnVuY25hbWU9ImNoYXRzZXJ2aWNlLmdldENoYXRPdmVyYWxsVXNlcnMiIAorICAgICAgICAgICAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gCisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICAgICAgLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZSB0aGUgcnRtcGNvbm5lY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImdldENoYXRPdmVyYWxsVXNlcnMgOiAiLHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8dmFsdWUub3ZlcmFsbExpc3QubGVuZ3RoO2krKyl7CisgICAgICAgICAgICAgICAgICAgIAlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidmFsdWUub3ZlcmFsbExpc3RbaV0ucGljdHVyZV91cmkiLHZhbHVlLm92ZXJhbGxMaXN0W2ldLnBpY3R1cmVfdXJpKTsKKyAgICAgICAgICAgICAgICAgICAgCXBhcmVudC5hZGRJdGVtKHZhbHVlLm92ZXJhbGxMaXN0W2ldKQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgXV0+CisgICAgICAgICAgICA8L2hhbmRsZXI+ICAgCisgICAgICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4KKyAgICAgICAgCisgICAgICAgIDxtZXRob2QgbmFtZT0iYWRkSXRlbSIgYXJncz0idmFsdWUiPgorCQkJbmV3IGx6LmNoYXRQYXJ0aWNpcGFudHModGhpcy5faW5uZXJsaXN0Ll9saXN0LHsKKwkJCSAgICAgICAgdXNlcl9pZDp2YWx1ZS51c2VyX2lkLAorCQkJICAgICAgICBwdWJsaWNTSUQ6dmFsdWUucHVibGljU0lELAorCQkJICAgICAgICBwaWN0dXJlX3VyaTp2YWx1ZS5waWN0dXJlX3VyaSwKKwkJCSAgICAgICAgY29ubmVjdGVkU2luY2U6Y2FudmFzLmdldExhYmVsTmFtZSgxMTMzKSsnICcrcGFyc2VEYXRlVG9TdHJpbmdUaW1lU2Vjb25kcyh2YWx1ZS5jb25uZWN0ZWRTaW5jZSksCisJCQkgICAgICAgIHVzZXJuYW1lOnZhbHVlLmZpcnN0bmFtZSsiICIrdmFsdWUubGFzdG5hbWUKKwkJCSAgICB9KTsgICAgICAKKyAgICAgICAgPC9tZXRob2Q+CisgICAgICAgIAorICAgICAgICA8bWV0aG9kIG5hbWU9InJlbW92ZUl0ZW1CeUlkIiBhcmdzPSJ1c2VyX2lkIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPHRoaXMuX2lubmVybGlzdC5fbGlzdC5zdWJ2aWV3cy5sZW5ndGg7aSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9pbm5lcmxpc3QuX2xpc3Quc3Vidmlld3NbaV0udXNlcl9pZD09dXNlcl9pZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5faW5uZXJsaXN0Ll9saXN0LnN1YnZpZXdzW2ldLmRlc3Ryb3koKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgICAgIAorICAgICAgICA8dmlldyBuYW1lPSJfaW5uZXJsaXN0IiB4PSIxIiB5PSIxIiB3aWR0aD0iMTg5IiBjbGlwPSJ0cnVlIgorICAgICAgICAJCQloZWlnaHQ9IiR7IHBhcmVudC5oZWlnaHQtMSB9IiBiZ2NvbG9yPSIweEZGRkZGRiI+CisJICAgICAgICA8dmlldyBuYW1lPSJfbGlzdCIgd2lkdGg9IjE4MCIgbGF5b3V0PSJheGlzOnk7c3BhY2luZzowIiAvPgorCSAgICAgICAgPG9tX3ZzY3JvbGxiYXIgbmFtZT0iX3Njcm9sbCIgLz4KKyAgICAgICAgPC92aWV3PgorICAgIDwvdmlldz4KKyAgICAKKzwvY2xhc3M+CisKKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jaGF0L292ZXJBbGxDaGF0T3V0cHV0Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY2hhdC9vdmVyQWxsQ2hhdE91dHB1dC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjc3MTY2OQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY2hhdC9vdmVyQWxsQ2hhdE91dHB1dC5sengKQEAgLTAsMCArMSwxMzIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzwhLS0tIGNoYXQgb3V0cHV0IGFyZWEuIEl0IHNob3dzIGNoYXQgaGlzdG9yeSBvbi1pbml0LiAgLS0+Cis8Y2xhc3MgbmFtZT0ib3ZlckFsbENoYXRPdXRwdXQiIGV4dGVuZHM9InZpZXciIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodC0xIH0iIAorICAgICAgICAgICAgY2xpcD0idHJ1ZSIgYmdjb2xvcj0iMHhGRkZGRkYiIHdpZHRoPSIkeyBwYXJlbnQud2lkdGgtMSB9IiA+CisKKyAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgICAgICBpZigkZGVidWcpIERlYnVnLndyaXRlKCJvdmVyQWxsQ2hhdE91dHB1dC9vbmluaXQiKTsKKyAgICAgICAgdGhpcy5sb2FkQ29udGVudCgpOworICAgIDwvaGFuZGxlcj4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImxvYWRDb250ZW50Ij4KKyAgICAgICAgdGhpcy5fY2J0ZXh0LmNsZWFyQ2hhdE91dHB1dCgpOworICAgICAgICB0aGlzLmdldE92ZXJhbGxDaGF0SGlzdG9yeS5kb0NhbGwoKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImNsZWFyIj4KKyAgICAJdGhpcy5fY2J0ZXh0LmNsZWFyQ2hhdE91dHB1dCgpOworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImdldE92ZXJhbGxDaGF0SGlzdG9yeSIgZnVuY25hbWU9ImNoYXRzZXJ2aWNlLmdldE92ZXJhbGxDaGF0SGlzdG9yeSIgCisgICAgICAgIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiA+IAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIC8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisgICAgICAgICAgICAgICAgaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib3ZlckFsbENoYXRPdXRwdXQvZ2V0Um9vbUNoYXRIaXN0b3J5OiAiLHZhbHVlKTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTx2YWx1ZS5sZW5ndGg7aSsrKXsKKyAgICAgICAgICAgICAgICAgICAgaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib3ZlckFsbENoYXRPdXRwdXQgIix2YWx1ZVtpXS5tZXNzYWdlLHZhbHVlW2ldLmNsaWVudCk7CisgICAgICAgICAgICAgICAgICAgIHBhcmVudC5hZGRDaGF0SGlzdG9yeSh2YWx1ZVtpXS5tZXNzYWdlLHZhbHVlW2ldLmNsaWVudCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4gICAKKyAgICA8L25ldFJlbW90ZUNhbGxIaWI+ICAgCisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJnZXRMb2ciPgorICAgIAk8IVtDREFUQVsKKyAgICAJCXZhciB0U3RyaW5nID0gIiI7CisgICAgCQkKKyAgICAJCWZvciAodmFyIGk9MDtpPHRoaXMuX2NidGV4dC5zdWJ2aWV3cy5sZW5ndGg7aSsrKSB7CisgICAgCQkJCisgICAgCQkJaWYgKGkhPTApIHsKKyAgICAJCQkJdFN0cmluZyArPSAiPGJyLz4iOworICAgIAkJCX0KKyAgICAJCQkKKyAgICAJCQl0U3RyaW5nICs9IHRoaXMuX2NidGV4dC5zdWJ2aWV3c1tpXS51c2VybmFtZSArICc6ICcKKyAgICAJCQkJCSsgdGhpcy5fY2J0ZXh0LnN1YnZpZXdzW2ldLm1lc3NhZ2U7CisgICAgCQkJCisgICAgCQl9CisgICAgCQkKKyAgICAJCXJldHVybiB0U3RyaW5nOworICAgIAkKKyAgICAJXV0+CisgICAgPC9tZXRob2Q+ICAgCisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJhZGRDaGF0SGlzdG9yeSIgYXJncz0idmFsdWUsY2xpZW50Ij4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAvL2lmKCRkZWJ1ZykgRGVidWcud3JpdGUoIm92ZXJBbGxDaGF0T3V0cHV0L2FkZENoYXRIaXN0b3J5OiAiLHZhbHVlLGNsaWVudCk7CisgICAgICAgICAgICAvL2lzIFJpZ2h0IFRvIExlZnQgPyBub3QgY2hlY2tlZCBmb3IgdGhlIG1vbWVudAorICAgICAgICAgICAgaWYgKHZhbHVlWzddKXsKKyAgICAgICAgICAgICAgICB2YXIgdXNlcm5hbWUgPSBjbGllbnQuZmlyc3RuYW1lKyIgIitjbGllbnQubGFzdG5hbWU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHZhciB1c2VybmFtZSA9IGNsaWVudC5maXJzdG5hbWUrIiAiK2NsaWVudC5sYXN0bmFtZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhciBtZXNzYWdlT2JqID0gdmFsdWVbOV07CisgICAgICAgICAgICAvL3ZhciBuZXdtZXNzYWdlID0gIjxGT05UIENPTE9SPSciK3ZhbHVlWzVdKyInIHNpemU9JzExJz4iK2NsaWVudC5maXJzdG5hbWUrIiAiK2NsaWVudC5sYXN0bmFtZSsiPC9GT05UPjo8Rk9OVCBDT0xPUj0nMHgwMDAwMDAnIHNpemU9JzExJz4iK3ZhbHVlWzRdKyI8L0ZPTlQ+PGJyIC8+IjsKKyAgICAgICAgICAgIC8vaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib3ZlckFsbENoYXRPdXRwdXQvbWVzc2FnZU9iajogIixtZXNzYWdlT2JqKTsKKyAgICAgICAgICAgIHZhciB1c2VyY29sb3IgPSB2YWx1ZVs1XTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib3ZlckFsbENoYXRPdXRwdXQvdXNlcmNvbG9yOiAiLHVzZXJjb2xvcik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICggdXNlcmNvbG9yPT1udWxsIHx8IHVzZXJjb2xvcj09MCB8fCB1c2VyY29sb3I+MCB8fCB1c2VyY29sb3IubGVuZ3RoPT0wICl1c2VyY29sb3I9MHhDQ0NDQ0M7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG5ldyBsei5jaGF0VGFiSXRlbUVtb3RpY29ucyh0aGlzLl9jYnRleHQseworCSAgICAgICAgICAgICAgICBtZXNzYWdlT2JqOm1lc3NhZ2VPYmosdXNlcl9pZDp2YWx1ZVs4XSwKKwkgICAgICAgICAgICAgICAgdXNlcmNvbG9yOnVzZXJjb2xvciwKKwkgICAgICAgICAgICAgICAgcHVibGljU0lEOnZhbHVlWzZdLAorCSAgICAgICAgICAgICAgICBwaWN0dXJlX3VyaTpjbGllbnQucGljdHVyZV91cmksCisJICAgICAgICAgICAgICAgIG1lc3NhZ2U6dmFsdWVbNF0sCisJICAgICAgICAgICAgICAgIHVzZXJuYW1lOnVzZXJuYW1lLAorCSAgICAgICAgICAgICAgICB1c2VydGltZTp2YWx1ZVsxXQorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5zZXRTY3JvbGxUb01heCgpOyAgICAgICAgICAgICAgCisgICAgICAgIF1dPiAKKyAgICA8L21ldGhvZD4gICAgICAgICAgIAorICAgIAorICAgIDxtZXRob2QgbmFtZT0ic2V0U2Nyb2xsVG9NYXgiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgaWYoX2NidGV4dC5oZWlnaHQ+dGhpcy5oZWlnaHQpeworICAgICAgICAgICAgbXlzY3JvbGxiYXIuc2Nyb2xsdGFyZ2V0LnNldEF0dHJpYnV0ZShteXNjcm9sbGJhci5zY3JvbGxhdHRyLCh0aGlzLmhlaWdodC1fY2J0ZXh0LmhlaWdodCkpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8dmlldyBuYW1lPSJfY2J0ZXh0IiB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCB9IiBsYXlvdXQ9ImF4aXM6eTtzcGFjaW5nOjAiID4KKyAgICAJPG1ldGhvZCBuYW1lPSJjbGVhckNoYXRPdXRwdXQiPgorICAgIAkJPCFbQ0RBVEFbCisgICAgCQkJaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib3ZlckFsbENoYXRPdXRwdXQvY2xlYXJDaGF0T3V0cHV0ICIsdGhpcy5zdWJ2aWV3cy5sZW5ndGgpOworICAgIAkJCXdoaWxlICh0aGlzLnN1YnZpZXdzLmxlbmd0aD4wKXsKKyAgICAJCQkJdGhpcy5zdWJ2aWV3c1swXS5kZXN0cm95KCk7CisgICAgCQkJfQorICAgIAkJXV0+CisgICAgCTwvbWV0aG9kPgorICAgIDwvdmlldz4KKyAgICAKKyAgICA8b21fdnNjcm9sbGJhciBuYW1lPSJteXNjcm9sbGJhciIgLz4KKworPC9jbGFzcz4KKyAgICAKKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jaGF0L292ZXJBbGxDaGF0VGFiQm90dG9tLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY2hhdC9vdmVyQWxsQ2hhdFRhYkJvdHRvbS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTNkNzQ0NQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY2hhdC9vdmVyQWxsQ2hhdFRhYkJvdHRvbS5sengKQEAgLTAsMCArMSwxODEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzwhLS0tIAorCVZpZXcgb2YgdGhlIGJ1dHRvbSBhcmVhIG9mIGNoYXQuIEl0IGNvbnRhaW5zIGJ1dHRvbnMgb2YgbWVzc2FnZSxlbW90aWNvbnMsY2xlYXIuCisgLS0+Cis8Y2xhc3MgbmFtZT0ib3ZlckFsbENoYXRUYWJCb3R0b20iIGV4dGVuZHM9InZpZXciID4KKworICAgIDx2aWV3IHg9IjAiIHk9IjAiIGhlaWdodD0iMjAiIHdpZHRoPSIkeyBwYXJlbnQud2lkdGggfSIgbmFtZT0ibWVzc2FnZSIgCisgICAgICAgICAgYmdjb2xvcj0iMHhCQkJCQkIiPgorICAgICAgICAKKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJvYmpNZXNzYWdlIiB2YWx1ZT0ibnVsbCIgLz4KKyAgICAgICAgICAKKyAgICAgICAgPG1ldGhvZCBuYW1lPSJnZXRUZXh0Ij4KKyAgICAgICAgICAgIHJldHVybiB0aGlzLl9jdGV4dC5nZXRUZXh0KCk7CisgICAgICAgIDwvbWV0aG9kPgorICAgICAgICA8bWV0aG9kIG5hbWU9InNldFRleHQiIGFyZ3M9InR4dCI+CisgICAgICAgICAgICB0aGlzLl9jdGV4dC5zZXRBdHRyaWJ1dGUoJ3RleHQnLHR4dCk7CisgICAgICAgIDwvbWV0aG9kPgorICAgICAgICA8Y3VzdG9tSW5wdXR0ZXh0IG5hbWU9Il9jdGV4dCIgd2lkdGg9IiR7IHBhcmVudC53aWR0aC04MSB9IiBoZWlnaHQ9IiRvbmNleyBwYXJlbnQuaGVpZ2h0LTIgfSIKKyAgICAgICAgICAgIHg9IjEiIHk9IjEiIGJnY29sb3I9IndoaXRlIiA+CisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmtleXVwIiBhcmdzPSJrZXkiPgorICAgICAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIC8vIDEzIGlzIHJldHVybgorICAgICAgICAgICAgICAgIGlmICgoa2V5PT0yNykgfHwgKGtleT09MTMpKSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMucGFyZW50Ll9idXR0b24ub25jbGljay5zZW5kRXZlbnQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgXV0+CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDwvY3VzdG9tSW5wdXR0ZXh0PiAgICAgCisgICAgICAgIAorICAgICAgICA8c2ltcGxlTGFiZWxCdXR0b24gbGFiZWxpZD0iMjIwIiBuYW1lPSJfYnV0dG9uIiAKKyAgICAgICAgCQl4PSIkb25jZXsgcGFyZW50LndpZHRoLTgwIH0iIHdpZHRoPSI4MCIgaGVpZ2h0PSIyMCI+IAorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICAgICAgcGFyZW50Lm9iak1lc3NhZ2UgPSBuZXcgQXJyYXkgKCk7CisgICAgICAgICAgICAgICAgcGFyZW50Lm9iak1lc3NhZ2VbMF0gPSAnY2hhdCc7CisgICAgICAgICAgICAgICAgLy9UaGUgc2VydmVyIHNpZGUgd2lsbCBwdXQgdGltZSBoZXJlCisgICAgICAgICAgICAgICAgcGFyZW50Lm9iak1lc3NhZ2VbMV0gPSAiIjsKKyAgICAgICAgICAgICAgICAvL0RlYnVnLndyaXRlKCJTZXR0aW5nIE1lc3NhZ2UiKTsKKyAgICAgICAgICAgICAgICBwYXJlbnQub2JqTWVzc2FnZVsyXSA9ICduZXd0ZXh0bWVzc2FnZSc7CisgICAgICAgICAgICAgICAgcGFyZW50Lm9iak1lc3NhZ2VbM10gPSBoaWIudXNlcm9iamVjdC5sb2dpbjsKKyAgICAgICAgICAgICAgICB2YXIgbWVzc2FnZSA9IHRoaXMucGFyZW50LmdldFRleHQoKTsKKyAgICAgICAgICAgICAgICBpZiAocGFyZW50LnBhcmVudC5faW52ZXJzZVdvcmRpbmcuZ2V0VmFsdWUoKSkgbWVzc2FnZSA9IGNhbnZhcy5yZXZlcnNlV29yZGluZ3NCeVNwbGl0KG1lc3NhZ2UpCisgICAgICAgICAgICAgICAgcGFyZW50Lm9iak1lc3NhZ2VbNF0gPSBtZXNzYWdlOworICAgICAgICAgICAgICAgIHBhcmVudC5vYmpNZXNzYWdlWzVdID0gY2FudmFzLmN1cnJlbnR1c2VyY29sb3I7CisgICAgICAgICAgICAgICAgcGFyZW50Lm9iak1lc3NhZ2VbNl0gPSBjYW52YXMucHVibGljU0lEOworICAgICAgICAgICAgICAgIHBhcmVudC5vYmpNZXNzYWdlWzddID0gY2FudmFzLmlzcnRsOworICAgICAgICAgICAgICAgIHBhcmVudC5vYmpNZXNzYWdlWzhdID0gaGliLnVzZXJvYmplY3QudXNlcl9pZDsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5wYXJlbnQucGFyZW50Lm1lc3NhZ2UuZ2V0VGV4dCgpLmxlbmd0aCE9MCl7CisgICAgICAgICAgICAgICAgICAgIC8vRGVidWcud3JpdGUoInNlbmQ6ICIsdGhpcy5wYXJlbnQub2JqTWVzc2FnZSk7CisgICAgICAgICAgICAgICAgICAgIHBhcmVudC5zZW5kTWVzc2FnZVRvT3ZlcmFsbENoYXQuZG9DYWxsKCk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnNldFRleHQoJycpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPC9zaW1wbGVMYWJlbEJ1dHRvbj4KKyAgICAgICAgCisgICAgICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9InNlbmRNZXNzYWdlVG9PdmVyYWxsQ2hhdCIgZnVuY25hbWU9ImNoYXRzZXJ2aWNlLnNlbmRNZXNzYWdlVG9PdmVyYWxsQ2hhdCIgCisgICAgICAgICAgICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAKKyAgICAgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIHBhcmVudC5wYXJlbnQub2JqTWVzc2FnZTsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiY2hhdHNlcnZpY2Uuc2VuZE1lc3NhZ2VUb092ZXJhbGxDaGF0IGdldFZhbHVlOiAiLHZhbHVlKTsKKyAgICAgICAgICAgICAgICBdXT4KKyAgICAgICAgICAgIDwvaGFuZGxlcj4gICAKKyAgICAgICAgPC9uZXRSZW1vdGVDYWxsSGliPgorICAgICAgICAgICAKKyAgICA8L3ZpZXc+CisgICAgCisgICAgPGxhYmVsQ2hlY2tib3ggbmFtZT0iX2ludmVyc2VXb3JkaW5nIiB4PSIyIiB5PSIyNCIgbGFiZWxpZD0iNTgwIj4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJkb1VwZGF0ZSIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgICAgICAgICAgdmFyIGcgPSBjYW52YXMuZ2V0VXNlckRhdGEoKTsKKyAgICAgICAgICAgIHZhciBzYXZlID0gZ1sicnRsQ2hlY2tib3giXTsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9uaW5pdCBkb1VwZGF0ZSIsc2F2ZSxnKTsKKyAgICAgICAgICAgIGlmKHNhdmUpIHsKKyAgICAgICAgICAgICAgICB0aGlzLmRvVXBkYXRlID0gZmFsc2U7CisgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZSh0cnVlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRoaXMuZG9VcGRhdGUgPSB0cnVlOworICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9udmFsdWUiIGFyZ3M9InYiPgorICAgICAgICAgICAgaWYgKHRoaXMuZG9VcGRhdGUpIHsKKyAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbnZhbHVlIGRvVXBkYXRlIix0aGlzLmdldFZhbHVlKCkpOworICAgICAgICAgICAgICAgIHZhciBnID0gY2FudmFzLmdldFVzZXJEYXRhKCk7CisgICAgICAgICAgICAgICAgZ1sicnRsQ2hlY2tib3giXT10aGlzLmdldFZhbHVlKCk7CisgICAgICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib252YWx1ZSBkb1VwZGF0ZSIsZ1sicnRsQ2hlY2tib3giXSk7CisgICAgICAgICAgICAgICAgY2FudmFzLnNldFVzZXJEYXRhKGcpOworICAgICAgICAgICAgfQorICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iNTgxIiAvPgorICAgIDwvbGFiZWxDaGVja2JveD4KKworICAgIDx2aWV3IG5hbWU9Il9idXR0b24iIHdpZHRoPSIxNDAiIHk9IjIyIiBhbGlnbj0icmlnaHQiPgorICAgICAgICAKKyAgICAgICAgPG1pbmlJY29uc0ltYWdlIHk9IjIiIHg9IjYyIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiICAgCisJCSAgICAgICBzaG93aGFuZGN1cnNvcj0idHJ1ZSIgc3JjPSIkb25jZXsgY2FudmFzLmdldFRoZW1lSW1hZ2UoJ2ZvbnRfc3R5bGUnKSB9Ij4KKyAgICAgICAJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgIAkJCXZhciBwaWNrID0gbmV3IGx6LmZvbnRPcHRpb25zKGNhbnZhcyx7CisJCQkJCWJ0blJlZjp0aGlzLnBhcmVudC5wYXJlbnQsCisJCQkJCXg6KHRoaXMuZ2V0QXR0cmlidXRlUmVsYXRpdmUoJ3gnLGNhbnZhcyktMTMwKSwKKwkJCQkJeToodGhpcy5nZXRBdHRyaWJ1dGVSZWxhdGl2ZSgneScsY2FudmFzKS00MikKKwkJCQl9KTsKKwkJCQlsei5Nb2RlTWFuYWdlci5tYWtlTW9kYWwocGljayk7ICAgCisgICAgICAgCQk8L2hhbmRsZXI+CisgICAgICAgCQk8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3ZlciI+CisgICAgICAgCQkJPCEtLSBsb3N0IHNlbGVjdGlvbiB3b3JrYXJvdW5kIC0tPgorICAgICAgIAkJCXBhcmVudC5wYXJlbnQubWVzc2FnZS5fY3RleHQuc2F2ZXNlbGVjdGlvbigpOworICAgICAgIAkJPC9oYW5kbGVyPgorICAgICAgIAkJPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSIxNTMwIiAvPgorICAgICAgIAk8L21pbmlJY29uc0ltYWdlPgorICAgICAgICAKKyAgICAgICAgPG1pbmlJY29ucyB5PSIyIiB4PSI4MiIgcmVzb3VyY2U9InNtaWxlX2NoYXRfbG9nX3JzYyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiAKKyAgICAgICAgICAgICAgICAgICBzaG93aGFuZGN1cnNvcj0idHJ1ZSI+CisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgICAgICB2YXIgcGljayA9IG5ldyBsei5lbW90SWNvbnNTZWxlY3RvcihjYW52YXMseworICAgICAgICAgICAgICAgICAgICAgICAgYnRuUmVmOnRoaXMucGFyZW50LnBhcmVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHg6KHRoaXMuZ2V0QXR0cmlidXRlUmVsYXRpdmUoJ3gnLGNhbnZhcyktMTQwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHk6KHRoaXMuZ2V0QXR0cmlidXRlUmVsYXRpdmUoJ3knLGNhbnZhcyktMTQwKQorICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBsei5Nb2RlTWFuYWdlci5tYWtlTW9kYWwoIHBpY2sgKTsKKyAgICAgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgICAgIDxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iNDQ1IiAvPgorICAgICAgICA8L21pbmlJY29ucz4KKyAgICAgICAgCisgICAgICAgIDxtaW5pSWNvbnMgeT0iMiIgeD0iMTAyIiByZXNvdXJjZT0iY29weV9jaGF0X2xvZ19yc2MiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgCisgICAgICAgICAgICAgICAgICAgc2hvd2hhbmRjdXJzb3I9InRydWUiPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgICAgIHZhciB0U3RyaW5nID0gY2FudmFzLl9vdmVyYWxsY2hhdGNvbnRlbnQuZ2V0TG9nKCk7CisgICAgICAgICAgICAgICAgICAgIG5ldyBsei5zaG93Q2hhdExvZyhjYW52YXMseworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3I6dFN0cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICBdXT4KKyAgICAgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgICAgIDxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iMTIwMCIgLz4KKyAgICAgICAgPC9taW5pSWNvbnM+CisgICAgICAgIAorICAgICAgICA8bWluaUljb25zSW1hZ2UgeT0iMiIgeD0iMTIyIiBzcmM9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVJbWFnZSgnYnV0dG9uX2NhbmNlbF9yc2MnKSB9IiAKKyAgICAgICAgCQkJCXdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc2hvd2hhbmRjdXJzb3I9InRydWUiPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICAgICAgcGFyZW50LmNsZWFyT3ZlcmFsbENoYXQuZG9DYWxsKCk7CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgICAgICA8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IjQ0MiIgLz4KKyAgICAgICAgPC9taW5pSWNvbnNJbWFnZT4gICAgICAKKyAgICAgICAgCisgICAgICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImNsZWFyT3ZlcmFsbENoYXQiIGZ1bmNuYW1lPSJjaGF0c2VydmljZS5jbGVhck92ZXJhbGxDaGF0IiAKKyAgICAgICAgICAgIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiA+IAorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgICAgIC8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJjbGVhckNoYXQgOiAiLHZhbHVlLGNhbnZhcy5fb3ZlcmFsbGNoYXRjb250ZW50KTsKKyAgICAgICAgICAgICAgICAgICAgY2FudmFzLl9vdmVyYWxsY2hhdGNvbnRlbnQubG9hZENvbnRlbnQoKTsgICAKKyAgICAgICAgICAgICAgICBdXT4KKyAgICAgICAgICAgIDwvaGFuZGxlcj4gICAKKyAgICAgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAgICAgCisgICAgICAgIAorICAgIDwvdmlldz4KKworPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2Jyb3dzZXIvY29uZmVyZW5jZUJyb3dzZXIubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2Jyb3dzZXIvY29uZmVyZW5jZUJyb3dzZXIubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0MWI2YjMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvYnJvd3Nlci9jb25mZXJlbmNlQnJvd3Nlci5sengKQEAgLTAsMCArMSw0MzYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKwk8IS0tLSBUT0RPOgorCQlpbnByZW1lbnQgb2YgaGlzdG9yeSBmZWF0dXJlCisJCWFkZCByZXNpemUgZmVhdHVyZSB0byBsYWJlbEV4cGxvcmVyQm94IGNvbXBvbmVudAorCS0tPgorCTwhLS0KKwk8aW5jbHVkZSBocmVmPSJleHRlbnNpb25zL2h0bWwubHp4Ii8+CisgICAgIC0tPgorICAgICAKKyAgICA8Y2xhc3MgbmFtZT0iYnJvd3NlckJ1dHRvbiIgZXh0ZW5kcz0idmlldyIgd2lkdGg9IjIyIiBoZWlnaHQ9IjIyIj4KKyAgICAJCisgICAgCTxhdHRyaWJ1dGUgbmFtZT0iZW5hYmxlZCIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgCQorICAgIAk8aGFuZGxlciBuYW1lPSJvbmVuYWJsZWQiIGFyZ3M9Im8iPgorICAgIAkJdGhpcy5lbmFibGVkID0gbzsKKyAgICAJCWlmIChvKSB7CisgICAgCQkJdGhpcy5zZXRBdHRyaWJ1dGUoIm9wYWNpdHkiLDEpOworICAgIAkJfSBlbHNlIHsKKyAgICAJCQl0aGlzLnNldEF0dHJpYnV0ZSgib3BhY2l0eSIsMC41KTsKKyAgICAJCX0KKyAgICAJPC9oYW5kbGVyPgorICAgIAkKKyAgICA8L2NsYXNzPiAKKyAgICAgCisJPGNsYXNzIG5hbWU9ImNvbmZlcmVuY2VCcm93c2VyIiBleHRlbmRzPSJsYWJlbEV4cGxvcmVyQm94IiBsYWJlbGlkPSI3NDkiIAorCQkgICB4PSIyMDAiIGNsb3NhYmxlPSJmYWxzZSIgcmVzaXplYWJsZT0idHJ1ZSI+CisJCSAKKwkJPCEtLQorCQkgICAgICB0aGlzIGF0dHJpYnV0ZSBpcyB0cnVlIGlmIHRoZSB1c2VyIGhhcyBvcGVuZWQgdGhlIGJyb3dzZXIgb24gaXRzIG93bgorCQkgICAgICBpZiB0aGUgYnJvd3NlciBpcyBvcGVuZWQgYnkgYSBSZW1vdGUtQ2FsbCwgdGhlIHVzZXIgd2lsbCBnZXQgdGhlIFdlYi1TaXRlIAorCQkgICAgICBub3RpZmljYXRpb25zIGZyb20gdGhlIE1vZGVyYXRvcihzKQorCQkgLS0+CisJCTxhdHRyaWJ1dGUgbmFtZT0iaW5pdGVkQnlVc2VyIiB2YWx1ZT0idHJ1ZSIgdHlwZT0iYm9vbGVhbiIgLz4gCisJCQorCQk8YXR0cmlidXRlIG5hbWU9ImluaXRVUkwiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4gCisJCQorCQk8YXR0cmlidXRlIG5hbWU9ImNhbGxCYWNrSlNEZWxlZ2F0ZSIgdmFsdWU9Im51bGwiIC8+IAorCQkKKwkJPGF0dHJpYnV0ZSBuYW1lPSJicm93c2VyaGlzdG9yeVByZSIgdmFsdWU9Im51bGwiIC8+CisJCTxhdHRyaWJ1dGUgbmFtZT0iYnJvd3Nlcmhpc3RvcnlQb3N0IiB2YWx1ZT0ibnVsbCIgLz4gCisJCSAKKwkJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKwkJCTwhW0NEQVRBWworCQkJCisJCQkgICAgdGhpcy5icm93c2VyaGlzdG9yeVByZSA9IG5ldyBBcnJheSgpOworCQkJICAgIHRoaXMuYnJvd3Nlcmhpc3RvcnlQb3N0ID0gbmV3IEFycmF5KCk7CisJCQkgICAgCisJCQkgICAgdGhpcy51cGRhdGVJY29ucygpOworCQkJCisJCQkJY2FudmFzLmNvbmZlcmVuY2VCcm93c2VySXNpbml0ZWQgPSB0cnVlOworCQkJCXRoaXMuY2FsbEJhY2tKU0RlbGVnYXRlID0gbmV3IEx6RGVsZWdhdGUodGhpcywgInVwZGF0ZWRVUkxWYWx1ZXMiKTsKKwkJCQorICAgICAgICAgICAgICAgIHZhciBvcyA9IGx6LkJyb3dzZXIuZ2V0T1MoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvL1dlIGhhdmUgdG8gZGV0ZWN0IEZpcmVmb3gsIHVuZm9ydHVuYXRlbHkgaXQgZG9lcyBub3Qgd29yayBmb3IKKyAgICAgICAgICAgICAgICAvL1dpbmRvd3Mgd2l0aCBGaXJlZm94IHNlZTogaHR0cDovL2ppcmEub3Blbmxhc3psby5vcmcvamlyYS9icm93c2UvTFBQLTg1MjUKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib3MgOjoiLG9zLmluZGV4T2YoJ1dpbicpLG9zKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvL1RvIHRlc3QgdGhpcyB5b3UgaGF2ZSB0byBydW4gdGhlIGFwcGxpY2F0aW9uIHdpdGggdGhlIGluZGV4LmpzcCB3cmFwcGVyIHRoYXQKKyAgICAgICAgICAgICAgICAvL2NvbnRhaW5zIHRoZSBicm93c2VyLWRldGVjdGlvbiBjb2RlCisgICAgICAgICAgICAgICAgaWYgKGZhbHNlICYmIG9zLmluZGV4T2YoIldpbiIpID49IDApIHsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9zIDo6IHZlcnNpb24gaXNXaW5kb3dzIGNoZWNrIGZvciBGaXJlZm94IEJ1ZyAiLG9zLHZlcnNpb24pOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgZ2V0QnJvd3NlckxhbmcodGhpcyk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChjYW52YXMuaXNtb2RlcmF0b3IpIHsKKyAgICAgICAgICAgICAgICAJCisgICAgICAgICAgICAgICAgICAgIHRoaXMuX25hdmlnYXRpb24uX2lubmVyLl9zaG93QmFyLnNldEF0dHJpYnV0ZSgnc3RhcnRlZCcsIHRydWUpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy9zZWUgYXR0cmlidXRlIGRlZmluaXRpb24gZm9yIGRvY3MKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5pbml0ZWRCeVVzZXIpIHsKKyAgICAgICAgICAgICAgICAJdGhpcy5fbmF2aWdhdGlvbi5faW5uZXIuYnJvd3Nlci5uYXZpZ2F0aW9uLnVybC5zZXRBdHRyaWJ1dGUoInRleHQiLCJodHRwOi8vd3d3Lmdvb2dsZS5jb20iKTsKKyAgICAgICAgICAgICAgICAJdGhpcy5fbmF2aWdhdGlvbi5faW5uZXIuYnJvd3Nlci5uYXZpZ2F0aW9uLnJlYWRTdGFydC5zZXRVUkwoKTsKKyAgICAgICAgICAgICAgICAJCisgICAgICAgICAgICAgICAgCXRoaXMuc2VuZEJyb3dzZXJNZXNzYWdlVG9NZW1iZXJzLm9iak1lc3NhZ2UgPSBuZXcgQXJyYXkoKTsKKyAgICAgICAgICAgICAgICAJdGhpcy5zZW5kQnJvd3Nlck1lc3NhZ2VUb01lbWJlcnMub2JqTWVzc2FnZVswXSA9ICJpbml0QnJvd3NlciI7CisgICAgICAgICAgICAgICAgCXRoaXMuc2VuZEJyb3dzZXJNZXNzYWdlVG9NZW1iZXJzLm9iak1lc3NhZ2VbMV0gPSB0aGlzLl9uYXZpZ2F0aW9uLl9pbm5lci5icm93c2VyLm5hdmlnYXRpb24udXJsLnRleHQ7CisgICAgICAgICAgICAgICAgCXRoaXMuc2VuZEJyb3dzZXJNZXNzYWdlVG9NZW1iZXJzLmRvQ2FsbCgpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgCQorICAgICAgICAgICAgICAgIAl0aGlzLl9uYXZpZ2F0aW9uLl9pbm5lci5icm93c2VyLm5hdmlnYXRpb24udXJsLnNldEF0dHJpYnV0ZSgidGV4dCIsdGhpcy5pbml0VVJMKTsKKyAgICAgICAgICAgICAgICAJdGhpcy5fbmF2aWdhdGlvbi5faW5uZXIuYnJvd3Nlci5uYXZpZ2F0aW9uLnJlYWRTdGFydC5zZXRVUkwoKTsKKyAgICAgICAgICAgICAgICAJCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgCisgICAgICAgIDxtZXRob2QgbmFtZT0iY2FsbGJhY2siIGFyZ3M9InJldHVyblZhbHVlIj4KKyAgICAgICAgCTwhW0NEQVRBWworICAgICAgICAJCisgICAgICAgIAkgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImdldEJyb3dzZXJJbmZvIGNhbGxiYWNrICIscmV0dXJuVmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKHJldHVyblZhbHVlLmluZGV4T2YoIkZpcmVmb3giKSA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgieSIsMTYwKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIG5ldyBsei5sYWJlbGVycm9yUG9wdXAoY2FudmFzLHt5OjAsZXJyb3JsYWJlbGlkOjc1MH0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgCQorICAgICAgICAJXV0+CisgICAgICAgIDwvbWV0aG9kPgorICAgICAgICAKKyAgICAgICAgPG1ldGhvZCBuYW1lPSJuZXdCcm93c2VyVVJMIiBhcmdzPSJuZXdVUkwiPgorICAgICAgICAJdGhpcy5fbmF2aWdhdGlvbi5faW5uZXIuYnJvd3Nlci5uYXZpZ2F0aW9uLnVybC5zZXRBdHRyaWJ1dGUoInRleHQiLG5ld1VSTCk7CisgICAgICAgIAl0aGlzLl9uYXZpZ2F0aW9uLl9pbm5lci5icm93c2VyLm5hdmlnYXRpb24ucmVhZFN0YXJ0LnNldFVSTCgpOworICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgCisgICAgICAgIDxtZXRob2QgbmFtZT0idXBkYXRlZFVSTFZhbHVlcyIgYXJncz0icmV0dXJuVmFsdWUiPgorICAgICAgICAJCisgICAgICAgIAlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidXBkYXRlZFVSTFZhbHVlcyAiLHJldHVyblZhbHVlKTsKKyAgICAgICAgCQorICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgCisgICAgICAgIDxtZXRob2QgbmFtZT0iZ2V0SUZyYW1lTG9jYXRpb24iPgorICAgICAgICAJPCFbQ0RBVEFbCisKKyAgICAgICAgICAgICAgICAvL2Z1bmN0aW9uIGNhbGxiYWNrSUZyYW1lTG9jYXRpb24ocmV0dXJuVmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8gICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImNhbGxiYWNrSUZyYW1lTG9jYXRpb24gIixyZXR1cm5WYWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vbHouQnJvd3Nlci5jYWxsSlMoImdldGlGcmFtZU9NU291cmNlIixjYWxsYmFja0lGcmFtZUxvY2F0aW9uLCAiX19sejAiKTsgICAKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB0aGlzLmh0bWx2aWV3ZXIuY2FsbEphdmFzY3JpcHQoIndpbmRvdy5sb2NhdGlvbi5ocmVmIix0aGlzLmNhbGxCYWNrSlNEZWxlZ2F0ZSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgCisgICAgICAgIAldXT4KKyAgICAgICAgPC9tZXRob2Q+CisgICAgICAgIAorICAgICAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJzZW5kQnJvd3Nlck1lc3NhZ2VUb01lbWJlcnMiIGZ1bmNuYW1lPSJzZW5kQnJvd3Nlck1lc3NhZ2VUb01lbWJlcnMiIAorICAgICAgICAJCQkJICAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4KKyAgICAgICAgCTxhdHRyaWJ1dGUgbmFtZT0ib2JqTWVzc2FnZSIgdmFsdWU9Im51bGwiIC8+CisgICAgICAgICAgICA8bmV0cGFyYW0gbmFtZT0idmFycyI+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5vYmpNZXNzYWdlOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorICAgICAgICAgICAgICAgIAlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZ2V0VmFsdWUgOiAiLHZhbHVlKTsKKyAgICAgICAgICAgICAgICAJaWYgKHRoaXMub2JqTWVzc2FnZVswXSA9PSAiY2xvc2VCcm93c2VyVVJMIikgeworICAgICAgICAgICAgICAgIAkJcGFyZW50LmNsb3NlKCk7CisgICAgICAgICAgICAgICAgCX0KKyAgICAgICAgICAgICAgICBdXT4KKyAgICAgICAgICAgIDwvaGFuZGxlcj4gICAKKyAgICAgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAKKyAgICAgICAgCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uaXNtb2RlcmF0b3IiIHJlZmVyZW5jZT0iY2FudmFzIiBhcmdzPSJtIj4KKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCIjIyMjIyMgaXNtb2RlcmF0b3IgIixtKTsKKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIC8vdGhpcy5pc01vZCA9IGNhbnZhcy5nZXRJc01vZGVyYXRvckJ5UHVibGljU0lEKHRoaXMucmVmT2JqLnB1YmxpY1NJRCk7CisgICAgICAgICAgICAgICAgaWYgKG0pIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fbmF2aWdhdGlvbi5faW5uZXIuX3Nob3dCYXIuc2V0QXR0cmlidXRlKCdzdGFydGVkJywgdHJ1ZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAJdGhpcy5fbmF2aWdhdGlvbi5faW5uZXIuc2V0QXR0cmlidXRlKCJ5IiwtNDApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvL3Rocm93IGEgb254L3kgZXZlbnQgdG8gCisgICAgICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoInkiLHRoaXMueSk7CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAKKyAgICAgICAgPG1ldGhvZCBuYW1lPSJhZGRMb2NhbEhpc3RvcnlQcmUiIGFyZ3M9InVybCI+CisgICAgICAgIAl0aGlzLmJyb3dzZXJoaXN0b3J5UHJlLnB1c2godXJsKTsKKyAgICAgICAgCXRoaXMudXBkYXRlSWNvbnMoKTsKKyAgICAgICAgPC9tZXRob2Q+CisgICAgICAgIAorICAgICAgICA8bWV0aG9kIG5hbWU9ImFkZExvY2FsSGlzdG9yeVBvc3QiIGFyZ3M9InVybCI+CisgICAgICAgICAgICB0aGlzLmJyb3dzZXJoaXN0b3J5UG9zdC5wdXNoKHVybCk7CisgICAgICAgICAgICB0aGlzLnVwZGF0ZUljb25zKCk7CisgICAgICAgIDwvbWV0aG9kPgorICAgICAgICAKKyAgICAgICAgPG1ldGhvZCBuYW1lPSJ1cGRhdGVJY29ucyI+CisgICAgICAgIAk8IVtDREFUQVsKKyAgICAgICAgICAgIAlpZiAodGhpcy5icm93c2VyaGlzdG9yeVByZS5sZW5ndGggPiAxKSB7CisgICAgICAgICAgICAJCXRoaXMuX25hdmlnYXRpb24uX2lubmVyLmJyb3dzZXIubmF2aWdhdGlvbi5fcHJlLnNldEF0dHJpYnV0ZSgiZW5hYmxlZCIsdHJ1ZSk7CisgICAgICAgICAgICAJfSBlbHNlIHsKKyAgICAgICAgICAgIAkJdGhpcy5fbmF2aWdhdGlvbi5faW5uZXIuYnJvd3Nlci5uYXZpZ2F0aW9uLl9wcmUuc2V0QXR0cmlidXRlKCJlbmFibGVkIixmYWxzZSk7CisgICAgICAgICAgICAJfQorICAgICAgICAgICAgCQorICAgICAgICAgICAgCWlmICh0aGlzLmJyb3dzZXJoaXN0b3J5UG9zdC5sZW5ndGggPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX25hdmlnYXRpb24uX2lubmVyLmJyb3dzZXIubmF2aWdhdGlvbi5fcG9zdC5zZXRBdHRyaWJ1dGUoImVuYWJsZWQiLHRydWUpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX25hdmlnYXRpb24uX2lubmVyLmJyb3dzZXIubmF2aWdhdGlvbi5fcG9zdC5zZXRBdHRyaWJ1dGUoImVuYWJsZWQiLGZhbHNlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgIAldXT4KKyAgICAgICAgPC9tZXRob2Q+CisgICAgICAgIAorICAgICAgICA8bWV0aG9kIG5hbWU9ImRvUHJlSXRlbSI+CisgICAgICAgIAk8IVtDREFUQVsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5icm93c2VyaGlzdG9yeVByZS5sZW5ndGggPiAxKSB7CisgICAgICAgICAgICAgICAgCQorICAgICAgICAgICAgICAgIAlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZG9QcmVJdGVtIDEgIix0aGlzLmJyb3dzZXJoaXN0b3J5UHJlLmxlbmd0aCk7CisgICAgICAgICAgICAgICAgCQorICAgICAgICAgICAgICAgIAl2YXIgbGFzdEl0ZW0gPSB0aGlzLmJyb3dzZXJoaXN0b3J5UHJlW3RoaXMuYnJvd3Nlcmhpc3RvcnlQcmUubGVuZ3RoLTJdOworICAgICAgICAgICAgICAgIAl2YXIgbmV4dEl0ZW0gPSB0aGlzLmJyb3dzZXJoaXN0b3J5UHJlW3RoaXMuYnJvd3Nlcmhpc3RvcnlQcmUubGVuZ3RoLTFdOworICAgICAgICAgICAgICAgIAkKKyAgICAgICAgICAgICAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImRvUHJlSXRlbSAyICIsbGFzdEl0ZW0pOworICAgICAgICAgICAgICAgIAkKKyAgICAgICAgICAgICAgICAJdGhpcy5icm93c2VyaGlzdG9yeVBvc3QucHVzaChuZXh0SXRlbSk7CisgICAgICAgICAgICAgICAgCQorICAgICAgICAgICAgICAgIAl0aGlzLmJyb3dzZXJoaXN0b3J5UHJlLnNwbGljZSh0aGlzLmJyb3dzZXJoaXN0b3J5UHJlLmxlbmd0aC0yLDEpOworICAgICAgICAgICAgICAgIAkKKyAgICAgICAgICAgICAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImRvUHJlSXRlbSAzICIsdGhpcy5icm93c2VyaGlzdG9yeVByZS5sZW5ndGgpOworICAgICAgICAgICAgICAgIAkKKyAgICAgICAgICAgICAgICAJdGhpcy5fbmF2aWdhdGlvbi5faW5uZXIuYnJvd3Nlci5uYXZpZ2F0aW9uLnVybC5zZXRBdHRyaWJ1dGUoInRleHQiLGxhc3RJdGVtKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fbmF2aWdhdGlvbi5faW5uZXIuYnJvd3Nlci5uYXZpZ2F0aW9uLnJlYWRTdGFydC5zZXRVUkxXaXRob3V0RXZlbnQoKTsKKyAgICAgICAgICAgICAgICAJCisgICAgICAgICAgICAgICAgCXRoaXMudXBkYXRlSWNvbnMoKTsKKyAgICAgICAgICAgICAgICAJCisgICAgICAgICAgICAgICAgCXJldHVybiBsYXN0SXRlbTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9tZXRob2Q+CisgICAgICAgIAorICAgICAgICA8bWV0aG9kIG5hbWU9ImRvUG9zdEl0ZW0iPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgaWYgKHRoaXMuYnJvd3Nlcmhpc3RvcnlQb3N0Lmxlbmd0aCA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIHZhciBsYXN0SXRlbSA9IHRoaXMuYnJvd3Nlcmhpc3RvcnlQb3N0W3RoaXMuYnJvd3Nlcmhpc3RvcnlQb3N0Lmxlbmd0aC0xXTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIHRoaXMuYnJvd3Nlcmhpc3RvcnlQb3N0LnNwbGljZSh0aGlzLmJyb3dzZXJoaXN0b3J5UG9zdC5sZW5ndGgtMSwxKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIHRoaXMuYnJvd3Nlcmhpc3RvcnlQcmUucHVzaChsYXN0SXRlbSk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uLl9pbm5lci5icm93c2VyLm5hdmlnYXRpb24udXJsLnNldEF0dHJpYnV0ZSgidGV4dCIsbGFzdEl0ZW0pOworICAgICAgICAgICAgICAgICAgICB0aGlzLl9uYXZpZ2F0aW9uLl9pbm5lci5icm93c2VyLm5hdmlnYXRpb24ucmVhZFN0YXJ0LnNldFVSTFdpdGhvdXRFdmVudCgpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVJY29ucygpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxhc3RJdGVtOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgCisgICAgICAgIDxtZXRob2QgbmFtZT0iZG9DbG9zZSI+CisgICAgICAgICAgICBpZiAoY2FudmFzLmlzbW9kZXJhdG9yKSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB0aGlzLnNlbmRCcm93c2VyTWVzc2FnZVRvTWVtYmVycy5vYmpNZXNzYWdlID0gbmV3IEFycmF5KCk7CisgICAgICAgICAgICAgICAgdGhpcy5zZW5kQnJvd3Nlck1lc3NhZ2VUb01lbWJlcnMub2JqTWVzc2FnZVswXSA9ICJjbG9zZUJyb3dzZXJVUkwiOworICAgICAgICAgICAgICAgIHRoaXMuc2VuZEJyb3dzZXJNZXNzYWdlVG9NZW1iZXJzLmRvQ2FsbCgpOworICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgIDwvbWV0aG9kPgorICAgICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbG9zZSI+CisgICAgICAgIAljYW52YXMuY29uZmVyZW5jZUJyb3dzZXJJc2luaXRlZCA9IGZhbHNlOworICAgICAgICAgICAgdGhpcy5odG1sdmlld2VyLnNldFZpc2libGUoZmFsc2UpOworICAgICAgICA8L2hhbmRsZXI+ICAgICAgICAgICAgICAKKyAgICAgICAgCisgICAgICAgIDwhLS0KKyAgICAgICAgICAgIEJyb2FkY2FzdCBNZXNzYWdlIHRvIGFsbCB1c2VyCisgICAgICAgICAtLT4KKyAgICAgICAgPHZpZXcgbmFtZT0iX25hdmlnYXRpb24iIGNsaXA9InRydWUiIHk9IjIyIiBoZWlnaHQ9IjM4IiB3aWR0aD0iJHsgcGFyZW50LndpZHRoIH0iID4KKyAgICAJCTx2aWV3IG5hbWU9Il9pbm5lciIgeT0iLTQwIj4KKyAgICAJCQkKKyAgICAJCQk8YW5pbWF0b3IgbmFtZT0iX3Nob3dCYXIiIGF0dHJpYnV0ZT0ieSIgdG89IjAiIGR1cmF0aW9uPSI3NTAiIHN0YXJ0ZWQ9ImZhbHNlIj4KKyAgICAJCQkJPGhhbmRsZXIgbmFtZT0ib25zdG9wIj4KKyAgICAJCQkJCWx6LkZvY3VzLnNldEZvY3VzKHBhcmVudC5icm93c2VyLm5hdmlnYXRpb24udXJsLHRydWUpOworICAgIAkJCQk8L2hhbmRsZXI+CisgICAgCQkJPC9hbmltYXRvcj4KKyAgICAJCQkKKyAgICAJCQk8IS0tIGVuYWJsZWQ9ImZhbHNlIiAtLT4KKyAgICAgICAgCQk8dmlldyBuYW1lPSJicm93c2VyIiBoZWlnaHQ9IjI4IiBiZ2NvbG9yPSIweEVFRUVFRSIgeD0iMSIgPgorICAgICAgICAJCQkKKyAgICAgICAgCQkJPHZpZXcgbmFtZT0ibmF2aWdhdGlvbiIgbGF5b3V0PSJheGlzOng7c3BhY2luZzoxO2luc2V0OjEiPgorICAgICAgICAJCQkJCisgICAgICAgIAkJCQk8YnJvd3NlckJ1dHRvbiBuYW1lPSJfcHJlIiByZXNvdXJjZT0iLi9yZXNvdXJjZXMvcHJlLnBuZyIgeT0iMiI+CisgICAgICAgIAkJCQkJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgIAkJCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJQUkUiKTsKKyAgICAgICAgCQkJCQkJcGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5kb1ByZUl0ZW0oKTsKKyAgICAgICAgCQkJCQk8L2hhbmRsZXI+CisgICAgICAgIAkJCQkJPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSI3NTEiIC8+CisgICAgICAgIAkJCQk8L2Jyb3dzZXJCdXR0b24+CisgICAgICAgIAkJCQkKKyAgICAgICAgCQkJCTxicm93c2VyQnV0dG9uIG5hbWU9Il9wb3N0IiByZXNvdXJjZT0iLi9yZXNvdXJjZXMvbmV4dC5wbmciIHk9IjIiIGVuYWJsZWQ9ImZhbHNlIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIk5FWFQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5kb1Bvc3RJdGVtKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iNzUyIiAvPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9icm93c2VyQnV0dG9uPgorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICA8YnJvd3NlckJ1dHRvbiByZXNvdXJjZT0iLi9yZXNvdXJjZXMvcmVmcmVzaC5wbmciIHk9IjIiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiUkVMT0FEIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5yZWFkU3RhcnQuc2VuZFVSTCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWxUb29sdGlwIGxhYmVsaWQ9Ijc1MyIgLz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvYnJvd3NlckJ1dHRvbj4KKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgPGJyb3dzZXJCdXR0b24gcmVzb3VyY2U9Ii4vcmVzb3VyY2VzL2hvbWUucG5nIiB5PSIyIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIkhPTUUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LnVybC5zZXRBdHRyaWJ1dGUoInRleHQiLCJodHRwOi8vd3d3Lmdvb2dsZS5jb20iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LnJlYWRTdGFydC5zZW5kVVJMKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iNzU0IiAvPgorICAgICAgICAgICAgICAgICAgICAgICAgPC9icm93c2VyQnV0dG9uPgorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIAkJCQk8ZWRpdHRleHQgbmFtZT0idXJsIiB3aWR0aD0iJHtjbGFzc3Jvb3Qud2lkdGgtICg1KjIyKSAtIDh9Ij4gCisgICAgICAgIAkJCQkJPGhhbmRsZXIgbmFtZT0ib25rZXl1cCIgYXJncz0ia2V5Ij4KKyAgICAgICAgCQkJCQkJaWYgKChrZXkgPT0gMjcpIHx8IChrZXkgPT0gMTMpKSB7CisgICAgICAgIAkJCQkJCQl0aGlzLnBhcmVudC5yZWFkU3RhcnQub25jbGljay5zZW5kRXZlbnQoKTsKKyAgICAgICAgCQkJCQkJfQorICAgICAgICAJCQkJCTwvaGFuZGxlcj4KKyAgICAgICAgCQkJCTwvZWRpdHRleHQ+CisgICAgICAgIAkJCQkKKyAgICAgICAgCQkJCTxicm93c2VyQnV0dG9uIG5hbWU9InJlYWRTdGFydCIgcmVzb3VyY2U9Ii4vcmVzb3VyY2VzL3J1bi5wbmciIAorICAgICAgICAJCQkJCQkJICAgIHk9IjIiPgorICAgICAgICAJCQkJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgCQkJCQl0aGlzLnNlbmRVUkwoKTsKKyAgICAgICAgCQkJCQk8L2hhbmRsZXI+CisgICAgICAgIAkJCQkJPG1ldGhvZCBuYW1lPSJzZW5kVVJMIj4KKyAgICAgICAgCQkJCQkJdGhpcy5zZXRVUkwoKTsKKyAgICAgICAgCQkJCQkJCisgICAgICAgIAkJCQkJCXBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQuc2VuZEJyb3dzZXJNZXNzYWdlVG9NZW1iZXJzLm9iak1lc3NhZ2UgPSBuZXcgQXJyYXkoKTsKKwkJCSAgICAgICAgICAgICAgICAJcGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5zZW5kQnJvd3Nlck1lc3NhZ2VUb01lbWJlcnMub2JqTWVzc2FnZVswXSA9ICJuZXdCcm93c2VyVVJMIjsKKwkJCSAgICAgICAgICAgICAgICAJcGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5zZW5kQnJvd3Nlck1lc3NhZ2VUb01lbWJlcnMub2JqTWVzc2FnZVsxXSA9IHBhcmVudC51cmwudGV4dDsKKwkJCSAgICAgICAgICAgICAgICAJcGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5zZW5kQnJvd3Nlck1lc3NhZ2VUb01lbWJlcnMuZG9DYWxsKCk7CisgICAgICAgIAkJCQkJPC9tZXRob2Q+CisgICAgICAgIAkJCQkJPG1ldGhvZCBuYW1lPSJzZXRVUkwiPgorICAgICAgICAJCQkJCQk8IVtDREFUQVsKKyAgICAgICAgICAgIAkJCQkJCXZhciB1cmwgPSBwYXJlbnQudXJsLmdldFRleHQoKTsKKyAgICAgICAgICAgIAkJCQkJCWlmICgodXJsLmluZGV4T2YoImh0dHA6Ly8iKSA8IDApCisgICAgICAgICAgICAJCQkJCQkJCSYmICh1cmwuaW5kZXhPZigiaHR0cHM6Ly8iKSA8IDApKSB7CisgICAgICAgICAgICAJCQkJCQkJdXJsID0gImh0dHA6Ly8iICsgdXJsOworICAgICAgICAgICAgCQkJCQkJfQorICAgICAgICAgICAgCisgICAgICAgICAgICAJCQkJCQlwYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50Lmh0bWx2aWV3ZXIuaWdub3JlTmV4dEV2ZW50ID0gdHJ1ZTsKKyAgICAgICAgICAgIAkJCQkJCXBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQuaHRtbHZpZXdlci5zZXRBdHRyaWJ1dGUoInNyYyIsdXJsKTsKKyAgICAgICAgICAgIAkJCQkJCXBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQuaHRtbHZpZXdlci5zZXRBdHRyaWJ1dGUoInZpc2libGUiLHRydWUpOworICAgICAgICAgICAgCQkJCQkJCisgICAgICAgICAgICAJCQkJCQlwYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LmFkZExvY2FsSGlzdG9yeVByZSh1cmwpOworICAgICAgICAgICAgCQkJCQkJCisgICAgICAgICAgICAJCQkJCQlwYXJlbnQudXJsLnNldEF0dHJpYnV0ZSgndGV4dCcsIHVybCk7CisgICAgICAgICAgICAJCQkJCV1dPgorICAgICAgICAJCQkJCTwvbWV0aG9kPgorICAgICAgICAJCQkJCQorICAgICAgICAJCQkJCTxtZXRob2QgbmFtZT0ic2V0VVJMV2l0aG91dEV2ZW50Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdXJsID0gcGFyZW50LnVybC5nZXRUZXh0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHVybC5pbmRleE9mKCJodHRwOi8vIikgPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAodXJsLmluZGV4T2YoImh0dHBzOi8vIikgPCAwKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybCA9ICJodHRwOi8vIiArIHVybDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5odG1sdmlld2VyLmlnbm9yZU5leHRFdmVudCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50Lmh0bWx2aWV3ZXIuc2V0QXR0cmlidXRlKCJzcmMiLHVybCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50Lmh0bWx2aWV3ZXIuc2V0QXR0cmlidXRlKCJ2aXNpYmxlIix0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LnVybC5zZXRBdHRyaWJ1dGUoJ3RleHQnLCB1cmwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgCQkJCQkKKyAgICAgICAgCQkJCTwvYnJvd3NlckJ1dHRvbj4gCisgICAgICAgIAkJCQkKKyAgICAgICAgCQkJPC92aWV3PgorICAgICAgICAJCQkKKyAgICAgICAgCQkJPHZpZXcgeD0iMCIgcmVzb3VyY2U9Ii4vcmVzb3VyY2VzL2Jyb3dzZXJfc3ViX2NpdC5zd2YiIAorICAgICAgICAJCQkJICB3aWR0aD0iJHsgcGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LndpZHRoLTIgfSIgc3RyZXRjaGVzPSJ3aWR0aCIgeT0iMjgiIC8+CisgICAgICAgIAkJCQorICAgICAgICAJCTwvdmlldz4KKyAgICAgICAgCQkKKyAgICAgICAgICAgIDwvdmlldz4KKyAgICAgICAgPC92aWV3PgorICAgICAgICAKKwkJPGh0bWwgbmFtZT0iaHRtbHZpZXdlciIgeD0iNCIgeT0iJHsgKGNhbnZhcy5pc21vZGVyYXRvcikgPyA2MCA6IDIyIH0iIHdpZHRoPSIkeyBwYXJlbnQud2lkdGgtOCB9IiAKKwkJCSAgaGVpZ2h0PSIkeyAoY2FudmFzLmlzbW9kZXJhdG9yKSA/IChwYXJlbnQuaGVpZ2h0IC0gOTApIDogKHBhcmVudC5oZWlnaHQtNTIpIH0iID4KKwkJCQorCQkJPGF0dHJpYnV0ZSBuYW1lPSJpZ25vcmVOZXh0RXZlbnQiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKwkJCQorCQkJPGhhbmRsZXIgbmFtZT0ib25sb2FkaW5nIiBhcmdzPSJsb2FkaW5nIj4KKwkJCQk8IVtDREFUQVsKKwkJCQkJdGhpcy5sb2FkaW5nID0gbG9hZGluZzsKKwkJCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIkxPQURJTkcgMSAiLGxvYWRpbmcsdGhpcy5zcmMpOworCQkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiTE9BRElORyAyICIsbG9hZGluZyx0aGlzKTsKKwkJCQkJaWYgKGNhbnZhcy5pc21vZGVyYXRvcikgeworCQkJCQkJaWYgKCFsb2FkaW5nICYmICF0aGlzLmlnbm9yZU5leHRFdmVudCkgeworCQkJCQkJCXBhcmVudC5nZXRJRnJhbWVMb2NhdGlvbigpOworCQkJCQkJCQorCQkJCQkJCS8vcGFyZW50LnNlbmRCcm93c2VyTWVzc2FnZVRvTWVtYmVycy5vYmpNZXNzYWdlID0gbmV3IE9iamVjdCgpOworCQkgICAgICAgICAgICAgICAgCS8vcGFyZW50LnNlbmRCcm93c2VyTWVzc2FnZVRvTWVtYmVycy5vYmpNZXNzYWdlWzBdID0gIm5ld0Jyb3dzZXJVUkwiOworCQkgICAgICAgICAgICAgICAgCS8vcGFyZW50LnNlbmRCcm93c2VyTWVzc2FnZVRvTWVtYmVycy5vYmpNZXNzYWdlWzFdID0gdGhpcy5zcmM7CisJCSAgICAgICAgICAgICAgICAJLy9wYXJlbnQuc2VuZEJyb3dzZXJNZXNzYWdlVG9NZW1iZXJzLmRvQ2FsbCgpOworCQkJCQkJfQorCQkJCQl9CisJCQkJCQorCQkJCQlpZiAoIWxvYWRpbmcpIHsKKwkJCQkJCXRoaXMuaWdub3JlTmV4dEV2ZW50ID0gZmFsc2U7CisJCQkJCX0KKwkJCQldXT4KKwkJCTwvaGFuZGxlcj4KKwkJCTxoYW5kbGVyIG5hbWU9Im9uc3JjIiBhcmdzPSJzcmMiPgorCQkJCXRoaXMuc3JjID0gc3JjOworCQkJCS8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIlNSQyAiLHNyYyk7CisJCQk8L2hhbmRsZXI+CisJCTwvaHRtbD4KKwkJCisJCTxsYWJlbFRleHQgbGFiZWxpZD0iMTAwNiIgeT0iJHsgcGFyZW50LmhlaWdodC0yMiB9IiB4PSIyIgorCQkJCSAgIHZpc2liaWxpdHk9IiR7IChjYW52YXMuaXNtb2RlcmF0b3IpID8gJ3Zpc2libGUnIDogJ2hpZGRlbicgfSIgLz4KKwkJCisgICAgICAgIDxzaW1wbGVMYWJlbEJ1dHRvbiBsYWJlbGlkPSI2MSIgd2lkdGg9IjEwMCIgCisJCQkgICB2aXNpYmlsaXR5PSIkeyAoY2FudmFzLmlzbW9kZXJhdG9yKSA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nIH0iIAorCQkJICAgeD0iJHsgcGFyZW50LndpZHRoLTEwNSB9IiB5PSIkeyBwYXJlbnQuaGVpZ2h0LTI0IH0iIAorICAgICAgICAgICAgICAgb25jbGljaz0idGhpcy5wYXJlbnQuZG9DbG9zZSgpOyIgLz4KKyAgICAJCSAgCisJPC9jbGFzcz4KKyAJCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvYnJvd3Nlci9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9icm93c2VyL2xpYnJhcnkubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4OGZmYzIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvYnJvd3Nlci9saWJyYXJ5Lmx6eApAQCAtMCwwICsxLDIzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCTxpbmNsdWRlIGhyZWY9ImNvbmZlcmVuY2VCcm93c2VyLmx6eCIvPgorPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2Jyb3dzZXIvcmVzb3VyY2VzL2Jyb3dzZXJfc3ViX2NpdC5mbGEgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvYnJvd3Nlci9yZXNvdXJjZXMvYnJvd3Nlcl9zdWJfY2l0LmZsYQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNWU1YWM2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2Jyb3dzZXIvcmVzb3VyY2VzL2Jyb3dzZXJfc3ViX2NpdC5mbGEKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2Jyb3dzZXIvcmVzb3VyY2VzL2Jyb3dzZXJfc3ViX2NpdC5zd2YgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvYnJvd3Nlci9yZXNvdXJjZXMvYnJvd3Nlcl9zdWJfY2l0LnN3ZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ODRjNWNjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2Jyb3dzZXIvcmVzb3VyY2VzL2Jyb3dzZXJfc3ViX2NpdC5zd2YKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2Jyb3dzZXIvcmVzb3VyY2VzL2hvbWUuZmxhIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2Jyb3dzZXIvcmVzb3VyY2VzL2hvbWUuZmxhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4ZDA5NWEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvYnJvd3Nlci9yZXNvdXJjZXMvaG9tZS5mbGEKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2Jyb3dzZXIvcmVzb3VyY2VzL2hvbWUucG5nIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2Jyb3dzZXIvcmVzb3VyY2VzL2hvbWUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5ZDExMjMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvYnJvd3Nlci9yZXNvdXJjZXMvaG9tZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2Jyb3dzZXIvcmVzb3VyY2VzL25leHQuZmxhIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2Jyb3dzZXIvcmVzb3VyY2VzL25leHQuZmxhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzYzg0NGUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvYnJvd3Nlci9yZXNvdXJjZXMvbmV4dC5mbGEKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2Jyb3dzZXIvcmVzb3VyY2VzL25leHQucG5nIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2Jyb3dzZXIvcmVzb3VyY2VzL25leHQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyNDE1MzIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvYnJvd3Nlci9yZXNvdXJjZXMvbmV4dC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2Jyb3dzZXIvcmVzb3VyY2VzL3ByZS5mbGEgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvYnJvd3Nlci9yZXNvdXJjZXMvcHJlLmZsYQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NGRhNzhmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2Jyb3dzZXIvcmVzb3VyY2VzL3ByZS5mbGEKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2Jyb3dzZXIvcmVzb3VyY2VzL3ByZS5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvYnJvd3Nlci9yZXNvdXJjZXMvcHJlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTUyNmY1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2Jyb3dzZXIvcmVzb3VyY2VzL3ByZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2Jyb3dzZXIvcmVzb3VyY2VzL3JlYWQucG5nIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2Jyb3dzZXIvcmVzb3VyY2VzL3JlYWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0MWZhMmIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvYnJvd3Nlci9yZXNvdXJjZXMvcmVhZC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2Jyb3dzZXIvcmVzb3VyY2VzL3JlZnJlc2guZmxhIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2Jyb3dzZXIvcmVzb3VyY2VzL3JlZnJlc2guZmxhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjZTM5NjEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvYnJvd3Nlci9yZXNvdXJjZXMvcmVmcmVzaC5mbGEKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2Jyb3dzZXIvcmVzb3VyY2VzL3JlZnJlc2gucG5nIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2Jyb3dzZXIvcmVzb3VyY2VzL3JlZnJlc2gucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5MTI2NzIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvYnJvd3Nlci9yZXNvdXJjZXMvcmVmcmVzaC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2Jyb3dzZXIvcmVzb3VyY2VzL3J1bi5mbGEgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvYnJvd3Nlci9yZXNvdXJjZXMvcnVuLmZsYQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NWQwNzNlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2Jyb3dzZXIvcmVzb3VyY2VzL3J1bi5mbGEKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2Jyb3dzZXIvcmVzb3VyY2VzL3J1bi5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvYnJvd3Nlci9yZXNvdXJjZXMvcnVuLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzdiOGQ5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2Jyb3dzZXIvcmVzb3VyY2VzL3J1bi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2Jyb3dzZXIvdGVzdC9jb25mZXJlbmNlQnJvd3Nlcl90ZXN0LmpzcCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9icm93c2VyL3Rlc3QvY29uZmVyZW5jZUJyb3dzZXJfdGVzdC5qc3AKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzE3MmFiZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9icm93c2VyL3Rlc3QvY29uZmVyZW5jZUJyb3dzZXJfdGVzdC5qc3AKQEAgLTAsMCArMSwzMyBAQAorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGh0bWw+CisgICA8aGVhZD4KKyAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04Ij4KKyAgIAorICAgICAgPGxpbmsgcmVsPSJTSE9SVENVVCBJQ09OIiBocmVmPSJodHRwOi8vd3d3Lmxhc3psb3N5c3RlbXMuY29tL2Zhdmljb24uaWNvIj4KKyAgICAgIDx0aXRsZT5PcGVuTGFzemxvIEFwcGxpY2F0aW9uPC90aXRsZT4KKwk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSI8JT0gcmVxdWVzdC5nZXRDb250ZXh0UGF0aCgpICU+L2xwcy9pbmNsdWRlcy9lbWJlZC1jb21wcmVzc2VkLmpzIj48L3NjcmlwdD4KKwk8L2hlYWQ+CisgICAJPGJvZHk+CisJICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICAgICAgICAgICAgTHouc3dmRW1iZWQoe3VybDogJ2NvbmZlcmVuY2VCcm93c2VyX3Rlc3QubHp4P2x6dD1zd2YnLCBiZ2NvbG9yOiAnI2ZmZmZmZicsIHdpZHRoOiAnMTAwJScsIGhlaWdodDogJzEwMCUnLCBpZDogJ2x6YXBwJywgYWNjZXNzaWJsZTogJ2ZhbHNlJywgd21vZGU6ICd0cmFuc3BhcmVudCd9KTsKKyAgICAgICAgICAgIDwvc2NyaXB0PgorICAgPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2Jyb3dzZXIvdGVzdC9jb25mZXJlbmNlQnJvd3Nlcl90ZXN0Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9icm93c2VyL3Rlc3QvY29uZmVyZW5jZUJyb3dzZXJfdGVzdC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFlZWQwZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9icm93c2VyL3Rlc3QvY29uZmVyZW5jZUJyb3dzZXJfdGVzdC5sengKQEAgLTAsMCArMSwyNiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8Y2FudmFzIHRpdGxlPSJCcm93c2VyIFRlc3QiIGRlYnVnPSJ0cnVlIj4KKwk8aW5jbHVkZSBocmVmPSIuLi8uLi8uLi8uLi9iYXNlLyIvPgorCTxpbmNsdWRlIGhyZWY9Ii4uL2NvbmZlcmVuY2VCcm93c2VyLmx6eCIvPgorCQorCTxjb25mZXJlbmNlQnJvd3NlciBuYW1lPSJjYiIgd2lkdGg9IjQwMCIgaGVpZ2h0Nj0iODAwIi8+Cis8L2NhbnZhcz4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9jb21tb25WaWRlb0NvbXBvbmVudEFkYXB0ZXIubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2NvbW1vblZpZGVvQ29tcG9uZW50QWRhcHRlci5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmJjNjYzOQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9jb21tb25WaWRlb0NvbXBvbmVudEFkYXB0ZXIubHp4CkBAIC0wLDAgKzEsMTkwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPGxpYnJhcnk+DQorDQorPGNsYXNzIG5hbWU9ImNvbW1vblZpZGVvQ29tcG9uZW50QWRhcHRlciIgZXh0ZW5kcz0ibm9kZSI+DQorCQ0KKw0KKyAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPg0KKyAgICAJdmFyIHQgPSB0aGlzOw0KKyAgICAgICAgY2FudmFzLnZpZGVvQ29tcF9sYy5sY19zd2l0Y2hNaWNNdXRlZCA9IGZ1bmN0aW9uKHB1YmxpY1NJRCwgdE11dGUpIHsNCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgibGNfc3dpdGNoTWljTXV0ZWQiLCBwdWJsaWNTSUQsIHRNdXRlKTsNCisgICAgICAgICAgICBjYW52YXMudGhpc2hpYi5zd2l0Y2hNaWNNdXRlZC5zZXRNdXRlKHB1YmxpY1NJRCwgdE11dGUpOw0KKyAgICAgICAgfTsNCisgICAgICAgIGNhbnZhcy52aWRlb0NvbXBfbGMubGNfZ2l2ZUV4Y2x1c2l2ZUF1ZGlvID0gZnVuY3Rpb24ocHVibGljU0lEKSB7DQorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImxjX2dpdmVFeGNsdXNpdmVBdWRpbyIsIHB1YmxpY1NJRCk7DQorICAgICAgICAgICAgY2FudmFzLnRoaXNoaWIuZ2l2ZUV4Y2x1c2l2ZUF1ZGlvLnNldEV4Y2x1c2l2ZUF1ZGlvKHB1YmxpY1NJRCk7DQorICAgICAgICB9Ow0KKyAgICAgICAgY2FudmFzLnZpZGVvQ29tcF9sYy5hczNDb25uZWN0aW9uU3VjY2VzcyA9IGZ1bmN0aW9uKCkgew0KKyAgICAgICAgCS8vRklYTUU6IFRocm93cyBhIE51bGwgUG9pbnRlciBFeGNlcHRpb24gaWYgdGhlIHBhcmVudCB2aWV3IHdhcyBhbHJlYWR5IGRlc3Ryb3llZA0KKyAgICAgICAgCXQucGFyZW50LmFzM0Nvbm5lY3Rpb25TdWNjZXNzKCk7DQorICAgICAgICB9DQorICAgIDwvaGFuZGxlcj4NCisgICAgDQorICAgIDwhLS0tDQorICAgICAgICBTaG93IHRoZSBwb3B1cCB3aXRoIHRoZSBwb3NzaWJpbGl0eSB0byBjaG9vc2UgdGhlIGRldmljZSBzZXR0aW5ncw0KKyAgICAgICAgQHBhcmFtIGlzU3luY1VwZGF0ZSBzaG93IHRoZSBwb3B1cCBhbHNvIGlmIHRoZSB1c2VyIGhhcyBjbGlja2VkIHRoZSAiZG8gbm90IHNob3cgYWdhaW4iIGNoY2Vja2JveA0KKyAgICAgICAgQHBhcmFtIGludGVydmlld1BvZElkIHRoZSB2aWV3IGlkDQorICAgICAgICBAcGFyYW0gdHggeC1wb3NpdGlvbg0KKyAgICAgICAgQHBhcmFtIHR5IHktcG9zaXRpb24NCisgICAgICAgIEBwYXJhbSB0d2lkdGggd2lkdGgtcG9zaXRpb24NCisgICAgICAgIEBwYXJhbSB0aGVpZ2h0IGhlaWdodC1wb3NpdGlvbg0KKyAgICAgLS0+DQorICAgIDxtZXRob2QgbmFtZT0ic2hvd0RldmljZVBvcFVwSW50ZXJ2aWV3IiBhcmdzPSJpc1N5bmNVcGRhdGUsaW50ZXJ2aWV3UG9kSWQsdHgsdHksdHdpZHRoLHRoZWlnaHQiPg0KKyAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInNob3dEZXZpY2VQb3BVcEludGVydmlldyAiLGlzU3luY1VwZGF0ZSxpbnRlcnZpZXdQb2RJZCx0eCx0eSx0d2lkdGgsdGhlaWdodCk7DQorICAgICAgICBjYW52YXMuc2VuZFZpYUxvY2FsQ29ubmVjdGlvbihjYW52YXMudmlkX2xjX25hbWUsICJjcmVhdGVFZGl0UmVjb3JkU3RyZWFtIiwgW2lzU3luY1VwZGF0ZSwgdHJ1ZSwgaW50ZXJ2aWV3UG9kSWRdKTsNCisgICAgPC9tZXRob2Q+DQorICAgIA0KKyAgICA8IS0tLQ0KKyAgICAgICAgU2hvdyB0aGUgcG9wdXAgd2l0aCB0aGUgcG9zc2liaWxpdHkgdG8gY2hvb3NlIHRoZSBkZXZpY2Ugc2V0dGluZ3MNCisgICAgICAgIEBwYXJhbSBpc1N5bmNVcGRhdGUgc2hvdyB0aGUgcG9wdXAgYWxzbyBpZiB0aGUgdXNlciBoYXMgY2xpY2tlZCB0aGUgImRvIG5vdCBzaG93IGFnYWluIiBjaGNlY2tib3gNCisgICAgIC0tPg0KKyAgICA8bWV0aG9kIG5hbWU9InNob3dEZXZpY2VQb3BVcCIgYXJncz0iaXNTeW5jVXBkYXRlIj4NCisgICAgCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzaG93RGV2aWNlUG9wVXAgIixpc1N5bmNVcGRhdGUpOw0KKyAgICAgICAgY2FudmFzLnNlbmRWaWFMb2NhbENvbm5lY3Rpb24oY2FudmFzLnZpZF9sY19uYW1lLCAiY3JlYXRlRWRpdFJlY29yZFN0cmVhbSIsIFtpc1N5bmNVcGRhdGUsIGZhbHNlLCAtMV0pOw0KKyAgICA8L21ldGhvZD4NCisgICAgDQorICAgIDwhLS0tDQorICAgICAgICBJbnZva2VkIGFmdGVyIHRoZSB1c2VyIGVudGVycyB0aGUgcm9vbSB0byBjb25uZWN0IHRoZSBTV0YxMCBhcHAgdG8gdGhlIHNlcnZlciB2aWEgcnRtcCh0L3MpDQorICAgICAtLT4NCisgICAgPG1ldGhvZCBuYW1lPSJyZWNvbm5lY3RTdWNjZXNzIiBhcmdzPSJpc0ludGVydmlldyI+DQorICAgIAlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiU2VuZCByZWNvbm5lY3RTdWNjZXNzIHRvICIsY2FudmFzLnJ0bXBfbGNfbmFtZSk7DQorICAgIAljYW52YXMuc2VuZFZpYUxvY2FsQ29ubmVjdGlvbihjYW52YXMucnRtcF9sY19uYW1lLCAicmVjb25uZWN0U3VjY2VzcyIsIFtjYW52YXMudGhpc2hpYi5zcmMsIGNhbnZhcy5wdWJsaWNTSUQsIGhpYi51c2Vyb2JqZWN0LCBpc0ludGVydmlldywgY2FudmFzLmdldEh0dHBIb3N0KCldKTsNCisgICAgPC9tZXRob2Q+DQorICAgIA0KKyAgICA8aGFuZGxlciBuYW1lPSJvbmlzbW9kZXJhdG9yIiByZWZlcmVuY2U9ImNhbnZhcyIgYXJncz0ibSI+DQorICAgICAgICBjYW52YXMuc2VuZFZpYUxvY2FsQ29ubmVjdGlvbihjYW52YXMudmlkX2xjX25hbWUsICJpc21vZGVyYXRvckNoYW5nZWQiLCBbbV0pOw0KKyAgICA8L2hhbmRsZXI+DQorDQorICAgIDwhLS0tDQorICAgICAgICBDcmVhdGVzIHZpZGVvIG9iamVjdA0KKyAgICAtLT4NCisgICAgPG1ldGhvZCBuYW1lPSJjcmVhdGVWaWRlbyIgYXJncz0icHVibGljU0lELGRpc3BsYXlOYW1lLGJyb2FkY2FzdElkLGF2c2V0dGluZ3MsaW50ZXJ2aWV3UG9kSWQsb2JqZWN0Ij4NCisgICAgICAgIGNhbnZhcy5zZW5kVmlhTG9jYWxDb25uZWN0aW9uKGNhbnZhcy52aWRfbGNfbmFtZSwgImNyZWF0ZVZpZGVvIiwgW3B1YmxpY1NJRCwgZGlzcGxheU5hbWUsIGJyb2FkY2FzdElkLCBhdnNldHRpbmdzLCBpbnRlcnZpZXdQb2RJZCwgb2JqZWN0XSk7DQorICAgIDwvbWV0aG9kPg0KKw0KKyAgICA8bWV0aG9kIG5hbWU9ImNyZWF0ZVZpZGVvT2JqZWN0IiBhcmdzPSJwdWJsaWNTSUQsaXNCcm9hZGNhc3RpbmcsaW50ZXJ2aWV3UG9kSWQsb2JqZWN0Ij4NCisgICAgICAgIGNhbnZhcy5zZW5kVmlhTG9jYWxDb25uZWN0aW9uKGNhbnZhcy52aWRfbGNfbmFtZSwgImNyZWF0ZVZpZGVvT2JqZWN0IiwgW3B1YmxpY1NJRCwgaXNCcm9hZGNhc3RpbmcsIGludGVydmlld1BvZElkLG9iamVjdF0pOw0KKyAgICA8L21ldGhvZD4NCisNCisgICAgPCEtLS0NCisgICAgICAgIGludm9rZWQgd2hlbmV2ZXIgYSBVc2VyIHN0YXJ0cyB0byBTdHJlYW0gVmlkZW8gaW4gdGhpcyBSb29tLA0KKyAgICAgICAgaW50ZXJ2aWV3UG9kSWQgaGFzIG9ubHkgYSBtZWFuaW5nIGluIHRoZSBSb29tIFR5cGUgSW50ZXJ2aWV3DQorICAgICAtLT4NCisgICAgPG1ldGhvZCBuYW1lPSJzdGFydFN0cmVhbSIgYXJncz0icHVibGljU0lELGJyb2FkY2FzdElkLGZpcnN0bmFtZSxsYXN0bmFtZSxpbnRlcnZpZXdQb2RJZCx2V2lkdGgsdkhlaWdodCI+DQorICAgICAgICBjYW52YXMuc2VuZFZpYUxvY2FsQ29ubmVjdGlvbihjYW52YXMudmlkX2xjX25hbWUsICJzdGFydFN0cmVhbSIsIFtwdWJsaWNTSUQsYnJvYWRjYXN0SWQsZmlyc3RuYW1lLGxhc3RuYW1lLGludGVydmlld1BvZElkLHZXaWR0aCx2SGVpZ2h0XSk7DQorICAgIDwvbWV0aG9kPg0KKw0KKyAgICA8IS0tLQ0KKyAgICAgICAgaW52b2tlZCByZW1vdGVseSBieSBSZWQ1LW5vdGlmaWNhdGlvbg0KKyAgICAgICAgc2hvd3MgYSBncmVlbiBsaWdodCBpZiBzb21lYm9keSBpcyBzcGVha2luZw0KKyAgICAgICAgQHBhcmFtIHN0cmluZyBicm9hZGNhc3RJZCBicm9hZGNhc3RJZA0KKyAgICAgICAgQHBhcmFtIGJvb2xlYW4gYm9vbCBzaG93IGxpZ2h0IG9uL29mZg0KKyAgICAtLT4NCisgICAgPG1ldGhvZCBuYW1lPSJzZXRTcGVha2luZ0J5UG9zIiBhcmdzPSJwdWJsaWNTSUQsYm9vbCI+DQorICAgICAgICBjYW52YXMuc2VuZFZpYUxvY2FsQ29ubmVjdGlvbihjYW52YXMudmlkX2xjX25hbWUsICJzZXRTcGVha2luZ0J5UG9zIiwgW3B1YmxpY1NJRCwgYm9vbF0pOw0KKyAgICA8L21ldGhvZD4NCisNCisgICAgPCEtLS0NCisgICAgICAgIHN0b3BzIHRoZSBzdHJlYW1pbmcgYnV0IGRvZXMgbm90IGRlc3Ryb3kgdGhlIHZpZXcNCisgICAgICAgIEBwYXJhbSBpbnQgYnJvYWRjYXN0SWQgYnJvYWRjYXN0SWQNCisgICAgIC0tPg0KKyAgICA8bWV0aG9kIG5hbWU9ImNsb3NlU3RyZWFtQ2xpZW50IiBhcmdzPSJwdWJsaWNTSUQiPg0KKyAgICAgICAgY2FudmFzLnNlbmRWaWFMb2NhbENvbm5lY3Rpb24oY2FudmFzLnZpZF9sY19uYW1lLCAiY2xvc2VTdHJlYW1DbGllbnQiLCBbcHVibGljU0lEXSk7DQorICAgIDwvbWV0aG9kPg0KKw0KKyAgICA8IS0tLQ0KKyAgICAgICAgc3RvcHMgdGhlIHN0cmVhbWluZyBidXQgYW5kIGRlc3Ryb3lzIHRoZSB2aWV3DQorICAgICAgICBAcGFyYW0gaW50IGJyb2FkY2FzdElkIGJyb2FkY2FzdElkDQorICAgICAtLT4NCisgICAgPG1ldGhvZCBuYW1lPSJkaXNjb25uZWN0Y2xpZW50IiBhcmdzPSJwdWJsaWNTSUQiPg0KKyAgICAgICAgY2FudmFzLnNlbmRWaWFMb2NhbENvbm5lY3Rpb24oY2FudmFzLnZpZF9sY19uYW1lLCAiZGlzY29ubmVjdGNsaWVudCIsIFtwdWJsaWNTSURdKTsNCisgICAgPC9tZXRob2Q+DQorDQorICAgIDxtZXRob2QgbmFtZT0icmVzZXRBbGxWYWx1ZXMiPg0KKyAgICAgICAgY2FudmFzLnNlbmRWaWFMb2NhbENvbm5lY3Rpb24oY2FudmFzLnZpZF9sY19uYW1lLCAicmVzZXRBbGxWYWx1ZXMiLG51bGwpOw0KKyAgICA8L21ldGhvZD4NCisNCisgICAgPCEtLS0NCisgICAgIGludm9rZWQgaWYgYW5vdGhlciBjbGllbnQgbG9ncyBpbnRvIHRoZSByb29tDQorICAgIGFmdGVyIGNob29zaW5nIGRldmljZXMgLS0+DQorICAgIDxtZXRob2QgbmFtZT0ic2V0QVZTZXR0aW5nc1RvQ2xpZW50IiBhcmdzPSJyY2wiPg0KKyAgICAgICAgY2FudmFzLnNlbmRWaWFMb2NhbENvbm5lY3Rpb24oY2FudmFzLnZpZF9sY19uYW1lLCAic2V0QVZTZXR0aW5nc1RvQ2xpZW50IiwgW3JjbF0pOw0KKyAgICA8L21ldGhvZD4NCisNCisgICAgPG1ldGhvZCBuYW1lPSJjcmVhdGVFZGl0UmVjb3JkU3RyZWFtIiBhcmdzPSJzeW5jVXBkYXRlIj48IVtDREFUQVsNCisgICAgICAgIC8vdGhpcy5zeW5jVXBkYXRlID0gc3luY1VwZGF0ZTsNCisgICAgICAgIC8vaC5nZXRCcm9hZENhc3RJZC5kb0NhbGwoKTsNCisgICAgICAgIGNhbnZhcy5zZW5kVmlhTG9jYWxDb25uZWN0aW9uKGNhbnZhcy52aWRfbGNfbmFtZSwgImNyZWF0ZUVkaXRSZWNvcmRTdHJlYW0iLCBbc3luY1VwZGF0ZV0pOw0KKyAgICBdXT48L21ldGhvZD4NCisNCisgICAgPG1ldGhvZCBuYW1lPSJyZW1vdmVWaWRlb0J5VXNlciIgYXJncz0icHVibGljU0lEIj4NCisgICAgICAgIGNhbnZhcy5zZW5kVmlhTG9jYWxDb25uZWN0aW9uKGNhbnZhcy52aWRfbGNfbmFtZSwgInJlbW92ZVZpZGVvQnlVc2VyIiwgW3B1YmxpY1NJRF0pOw0KKyAgICA8L21ldGhvZD4NCisNCisgICAgPCEtLQ0KKyAgICAgICAgTXV0ZXMvdW5tdXRlcyBhIHNvdW5kIG9mIHVzZXIncyB2aWRlbw0KKyAgICAgICAgd2l0aCB0aGUgcHVibGljU0lEDQorICAgIC0tPg0KKyAgICA8bWV0aG9kIG5hbWU9Im11dGVTb3VuZCIgYXJncz0icHVibGljU0lELCBib29sIj4NCisgICAgCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJtdXRlU291bmQgOjogIixwdWJsaWNTSUQsYm9vbCk7DQorICAgICAgICBjYW52YXMuc2VuZFZpYUxvY2FsQ29ubmVjdGlvbihjYW52YXMudmlkX2xjX25hbWUsICJtdXRlU291bmQiLCBbcHVibGljU0lELCBib29sXSk7DQorICAgIDwvbWV0aG9kPg0KKw0KKyAgICA8bWV0aG9kIG5hbWU9ImdpdmVFeGNsdXNpdmVBdWRpbyIgYXJncz0icHVibGljU0lEIj4NCisgICAgCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJnaXZlRXhjbHVzaXZlQXVkaW8gOjogIixwdWJsaWNTSUQpOw0KKyAgICAgICAgY2FudmFzLnNlbmRWaWFMb2NhbENvbm5lY3Rpb24oY2FudmFzLnZpZF9sY19uYW1lLCAiZ2l2ZUV4Y2x1c2l2ZUF1ZGlvIiwgW3B1YmxpY1NJRF0pOw0KKyAgICA8L21ldGhvZD4NCisNCisgICAgPCEtLS0NCisgICAgICAgIFVwZGF0ZXMgbWljcm9waG9uZSdzIHN0YXRlIG9mIHJvb21DbGllbnQNCisgICAgLS0+DQorICAgIDxtZXRob2QgbmFtZT0idXBkYXRlTXV0ZVN0YXR1c1ZpZGVvVmlldyIgYXJncz0icm9vbUNsaWVudCI+DQorICAgIAlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidXBkYXRlTXV0ZVN0YXR1c1ZpZGVvVmlldyA6OiAiLHJvb21DbGllbnQpOw0KKyAgICAgICAgY2FudmFzLnNlbmRWaWFMb2NhbENvbm5lY3Rpb24oY2FudmFzLnZpZF9sY19uYW1lLCAidXBkYXRlTXV0ZVN0YXR1c1ZpZGVvVmlldyIsIFtyb29tQ2xpZW50XSk7DQorICAgIDwvbWV0aG9kPg0KKw0KKyAgICA8IS0tLQ0KKyAgICAgICAgU2hvd3MgdGhlIHdpbmRvdyB3aXRoIGRldmljZSBzZXR0aW5ncw0KKyAgICAtLT4NCisgICAgPG1ldGhvZCBuYW1lPSJjaGFuZ2VEZXZpY2UiPg0KKyAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImNoYW5nZURldmljZSA6OiAiKTsNCisgICAgICAgIGNhbnZhcy5zZW5kVmlhTG9jYWxDb25uZWN0aW9uKGNhbnZhcy52aWRfbGNfbmFtZSwgImNoYW5nZURldmljZSIsIG51bGwpOw0KKyAgICA8L21ldGhvZD4NCisNCisgICAgPCEtLS0NCisgICAgICAgIFNob3dzIHRoZSBleGl0IGRpYWxvZw0KKyAgICAtLT4NCisgICAgPG1ldGhvZCBuYW1lPSJleGl0Um9vbSI+DQorICAgIAlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZXhpdFJvb20gOjogIik7DQorICAgICAgICBjYW52YXMuc2VuZFZpYUxvY2FsQ29ubmVjdGlvbihjYW52YXMudmlkX2xjX25hbWUsICJleGl0Um9vbSIsIG51bGwpOw0KKyAgICA8L21ldGhvZD4NCisNCisgICAgPCEtLS0NCisgICAgICAgIFNob3dzIHRoZSBjbG9zZSB3aGl0ZWJvYXJkIGRpYWxvZw0KKyAgICAtLT4NCisgICAgPG1ldGhvZCBuYW1lPSJjbG9zZVdoaXRlYm9hcmQiPg0KKyAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImNsb3NlV2hpdGVib2FyZCA6OiAiKTsNCisgICAgICAgIGNhbnZhcy5zZW5kVmlhTG9jYWxDb25uZWN0aW9uKGNhbnZhcy52aWRfbGNfbmFtZSwgImNsb3NlV2hpdGVib2FyZCIsIG51bGwpOw0KKyAgICA8L21ldGhvZD4NCis8L2NsYXNzPg0KKw0KKzwvbGlicmFyeT4NCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvY29tbW9uVmlkZW9WaWV3Q29udGVudC5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvY29tbW9uVmlkZW9WaWV3Q29udGVudC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmY4ZjAxOAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9jb21tb25WaWRlb1ZpZXdDb250ZW50Lmx6eApAQCAtMCwwICsxLDExOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworCis8Y2xhc3MgbmFtZT0iY29tbW9uVmlkZW9WaWV3Q29udGVudCIgZXh0ZW5kcz0idmlldyI+CisKKyAgICA8IS0tCisJCVRoaXMgbWV0aG9kIHJldHVybnMgYSBmcmVlIHBvc2l0aW9uIGZvciBhIG5ldyB2aWRlbyBvYmplY3QKKwkJQHBhcmFtIGhvcml6b250YWwgb2Zmc2V0IGJldHdlZW4gdHdvIHZpZGVvIG9iamVjdHMKKwkgLS0+CisgICAgPG1ldGhvZCBuYW1lPSJnZXRWaWRlb09iamVjdEZyZWVQb3MiIGFyZ3M9Im9mZnNldExlbmd0aCx2aWRlb1dpZHRoLHZpZGVvSGVpZ2h0Ij4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICB2YXIgbmV3eCA9IDIwOworICAgICAgICAgICAgdmFyIG5ld3kgPSAwOworICAgICAgICAgICAgdmFyIHBvc0ZvdW5kID0gZmFsc2U7CisgICAgICAgICAgICB3aGlsZSAoIXBvc0ZvdW5kKSB7CisgICAgICAgICAgICAgICAgcG9zRm91bmQgPSB0cnVlOworICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPHRoaXMuc3Vidmlld3MubGVuZ3RoO2krKyl7CisgICAgICAgICAgICAgICAgICAgIHZhciBzdWJ2aWV3ID0gdGhpcy5zdWJ2aWV3c1tpXTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGxlZnQgPSBzdWJ2aWV3Lng7CisgICAgICAgICAgICAgICAgICAgIHZhciByaWdodCA9IHN1YnZpZXcueCArIHN1YnZpZXcud2lkdGg7CisgICAgICAgICAgICAgICAgICAgIHZhciB0b3AgPSBzdWJ2aWV3Lnk7CisgICAgICAgICAgICAgICAgICAgIHZhciBib3R0b20gPSBzdWJ2aWV3LnkgKyBzdWJ2aWV3LmhlaWdodDsKKworICAgICAgICAgICAgICAgICAgICBpZiggIShuZXd4ID4gcmlnaHQKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IChuZXd4ICsgdmlkZW9XaWR0aCkgPCBsZWZ0CisgICAgICAgICAgICAgICAgICAgICAgICB8fCBuZXd5ID4gYm90dG9tCisgICAgICAgICAgICAgICAgICAgICAgICB8fCAobmV3eSArIHZpZGVvSGVpZ2h0KSA8IHRvcCApKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXd4ID0gcmlnaHQgKyBvZmZzZXRMZW5ndGg7CisgICAgICAgICAgICAgICAgICAgICAgICBwb3NGb3VuZCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICgobmV3eCArIHZpZGVvV2lkdGgpID49IGNhbnZhcy53aWR0aCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbmV3eCA9IDIwOworICAgICAgICAgICAgICAgICAgICAgICAgbmV3eSArPSAxMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBvc0ZvdW5kID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmICgobmV3eSArIHZpZGVvSGVpZ2h0KSA+PSBjYW52YXMuaGVpZ2h0KSB7CisgICAgICAgICAgICAgICAgbmV3eSA9IDA7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHZhciByZXN1bHQgPSBbbmV3eCwgbmV3eV07CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKworPC9jbGFzcz4KKworPGNsYXNzIG5hbWU9ImNvbW1vblZpZGVvVmlld0NvbnRlbnRIaWRlV2hpdGVib2FyZCIgZXh0ZW5kcz0idmlldyI+CisKKyAgICA8IS0tCisJCVRoaXMgbWV0aG9kIHJldHVybnMgYSBmcmVlIHBvc2l0aW9uIGZvciBhIG5ldyB2aWRlbyBvYmplY3QKKwkJQHBhcmFtIGhvcml6b250YWwgb2Zmc2V0IGJldHdlZW4gdHdvIHZpZGVvIG9iamVjdHMKKwkgLS0+CisgICAgPG1ldGhvZCBuYW1lPSJnZXRWaWRlb09iamVjdEZyZWVQb3MiIGFyZ3M9Im9mZnNldExlbmd0aCx2aWRlb1dpZHRoLHZpZGVvSGVpZ2h0Ij4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICB2YXIgbmV3eCA9IDIwOworICAgICAgICAgICAgdmFyIG5ld3kgPSAwOworICAgICAgICAgICAgdmFyIHBvc0ZvdW5kID0gZmFsc2U7CisgICAgICAgICAgICB3aGlsZSAoIXBvc0ZvdW5kKSB7CisgICAgICAgICAgICAgICAgcG9zRm91bmQgPSB0cnVlOworICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPHRoaXMuc3Vidmlld3MubGVuZ3RoO2krKyl7CisgICAgICAgICAgICAgICAgICAgIHZhciBzdWJ2aWV3ID0gdGhpcy5zdWJ2aWV3c1tpXTsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGxlZnQgPSBzdWJ2aWV3Lng7CisgICAgICAgICAgICAgICAgICAgIHZhciByaWdodCA9IHN1YnZpZXcueCArIHN1YnZpZXcud2lkdGg7CisgICAgICAgICAgICAgICAgICAgIHZhciB0b3AgPSBzdWJ2aWV3Lnk7CisgICAgICAgICAgICAgICAgICAgIHZhciBib3R0b20gPSBzdWJ2aWV3LnkgKyBzdWJ2aWV3LmhlaWdodDsKKworICAgICAgICAgICAgICAgICAgICBpZiggIShuZXd4ID4gcmlnaHQKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IChuZXd4ICsgdmlkZW9XaWR0aCkgPCBsZWZ0CisgICAgICAgICAgICAgICAgICAgICAgICB8fCBuZXd5ID4gYm90dG9tCisgICAgICAgICAgICAgICAgICAgICAgICB8fCAobmV3eSArIHZpZGVvSGVpZ2h0KSA8IHRvcCApKQorICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXd4ID0gcmlnaHQgKyBvZmZzZXRMZW5ndGg7CisgICAgICAgICAgICAgICAgICAgICAgICBwb3NGb3VuZCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICgobmV3eCArIHZpZGVvV2lkdGgpID49IHRoaXMud2lkdGgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld3ggPSAyMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld3kgKz0gMTA7CisgICAgICAgICAgICAgICAgICAgICAgICBwb3NGb3VuZCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoKG5ld3kgKyB2aWRlb0hlaWdodCkgPj0gcGFyZW50LmhlaWdodCkgeworICAgICAgICAgICAgICAgIG5ld3kgPSAwOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIgcmVzdWx0ID0gW25ld3gsIG5ld3ldOworICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9jb25mZXJlbmNlL2NvbmZlcmVuY2VNZW51YmFyLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9jb25mZXJlbmNlL2NvbmZlcmVuY2VNZW51YmFyLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNzcxMTk0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2NvbmZlcmVuY2UvY29uZmVyZW5jZU1lbnViYXIubHp4CkBAIC0wLDAgKzEsMjc1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCisJPGNsYXNzIG5hbWU9InJlc3RyaWN0ZWRDb25mZXJlbmNlTWVudWJhciIgZXh0ZW5kcz0iY29uZmVyZW5jZU1lbnViYXIiIHZpZXdUeXBlPSJyZXN0cmljdGVkIiAvPgorCisJPGNsYXNzIG5hbWU9ImludGVydmlld0NvbmZlcmVuY2VNZW51YmFyIiBleHRlbmRzPSJjb25mZXJlbmNlTWVudWJhciIgdmlld1R5cGU9ImludGVydmlldyIvPgorCQorCTxjbGFzcyBuYW1lPSJjb25mZXJlbmNlTWVudWJhciIgZXh0ZW5kcz0idmlldyIgaGVpZ2h0PSIyOCIgd2lkdGg9IiR7IGNhbnZhcy53aWR0aCB9IiAKKwkJCQkJCWJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignc3R5bGVNZW51QmFyQmFzZUNvbG9yJykgfSIgPgorCQkJCQkJCisJCTxhdHRyaWJ1dGUgbmFtZT0idmlld1R5cGUiIHZhbHVlPSJjb25mZXJlbmNlIiB0eXBlPSJzdHJpbmciIC8+CisJCQkJCQkKKwkgICAgPGF0dHJpYnV0ZSBuYW1lPSJzZWxlY3RlZCIgdmFsdWU9Im51bGwiIC8+CisgICAgCisJICAgIDxtZXRob2QgbmFtZT0ic2VuZE9wZW5NZW51IiBhcmdzPSJtZW51cmVmIj4KKwkgICAgCWlmICh0aGlzLnNlbGVjdGVkICE9IG51bGwpIHsKKwkgICAgCQl0aGlzLnNlbGVjdGVkLnNldEF0dHJpYnV0ZSgic2VsZWN0ZWQiLGZhbHNlKTsKKwkgICAgCX0KKwkgICAgCXRoaXMuc2VsZWN0ZWQgPSBtZW51cmVmOworCSAgICAJdGhpcy5zZWxlY3RlZC5zZXRBdHRyaWJ1dGUoInNlbGVjdGVkIix0cnVlKTsKKwkgICAgPC9tZXRob2Q+CisJCQkKKwkJPHZpZXcgbmFtZT0iaXRlbWxpc3QiIGxheW91dD0iYXhpczp4O3NwYWNpbmc6MCIgPgorCQkJCisJCQk8Y29uZmVyZW5jZUV4aXRCdXR0b24gbmFtZT0iX2V4aXRidG4iIAorCQkJCXRleHRfeV9pbnNldD0iNCIgdGV4dF9mb250c2l6ZT0iMTQiIGRvd25feV9pbnNldD0iOCIgaGVpZ2h0PSIyOCIgLz4KKwkJCQkKKwkJCTxiYXNlTWVudU1lZXRpbmdzSXRlbSB0ZXh0PSIkb25jZXsgY2FudmFzLmdldExhYmVsTmFtZSgyNDUpIH0iIAorCQkJCQkJdGV4dF95X2luc2V0PSI0IiB0ZXh0X2ZvbnRzaXplPSIxNCIgZG93bl95X2luc2V0PSI4IgorCQkJCQkJdGV4dFRvb2xUaXA9IiIgaGVpZ2h0PSIyOCIKKwkJCQkJCXZpc2libGU9IiR7IChjbGFzc3Jvb3Qudmlld1R5cGU9PSdjb25mZXJlbmNlJykgPyB0cnVlIDogKChjYW52YXMuaXNtb2RlcmF0b3IpID8gdHJ1ZSA6ICgoY2FudmFzLmlzQWxsb3dlZFRvRHJhdykgPyB0cnVlIDogZmFsc2UgKSkgfSIKKwkJCQkJCT4KKwkJCQk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKwkJCSAgICAJbmV3IGx6LmNvbmZlcmVuY2VNZW51RmlsZXMoY2FudmFzLHsKKwkJCSAgICAJCQkJeDp0aGlzLmdldEF0dHJpYnV0ZVJlbGF0aXZlKCJ4IixjYW52YXMpLAorCQkJICAgIAkJCQl5OnRoaXMuZ2V0QXR0cmlidXRlUmVsYXRpdmUoInkiLGNhbnZhcykrdGhpcy5oZWlnaHQsCisJCQkgICAgCQkJCWJ0blJlZjp0aGlzLAorCQkJICAgIAkJCQlsaXN0OnRoaXMubGlzdAorCQkJICAgIAkJCX0pOworCQkJICAgICAgICB0aGlzLnBhcmVudC5wYXJlbnQuc2VuZE9wZW5NZW51KHRoaXMpOworCQkJICAgIDwvaGFuZGxlcj4KKwkJCTwvYmFzZU1lbnVNZWV0aW5nc0l0ZW0+CisJCQkKKwkJCTxiYXNlTWVudU1lZXRpbmdzSXRlbSB0ZXh0PSIkb25jZXsgY2FudmFzLmdldExhYmVsTmFtZSg2MzUpIH0iIAorCQkJCQkJdGV4dF95X2luc2V0PSI0IiB0ZXh0X2ZvbnRzaXplPSIxNCIgZG93bl95X2luc2V0PSI4IgorCQkJCQkJdGV4dFRvb2xUaXA9IiIgaGVpZ2h0PSIyOCIKKwkJCQkJCXZpc2libGU9IiR7IChjbGFzc3Jvb3Qudmlld1R5cGU9PSdjb25mZXJlbmNlJykgPyB0cnVlIDogKChjYW52YXMuaXNtb2RlcmF0b3IpID8gdHJ1ZSA6ICgoY2FudmFzLmlzQWxsb3dlZFRvRHJhdykgPyB0cnVlIDogZmFsc2UgKSkgfSIKKwkJCQkJCT4KKwkJCQk8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorCQkJCQlpZihjYW52YXMuY3VycmVudFJvb21PYmouaGlkZUFjdGlvbnNNZW51KXsJICAgICAgCisJCQkJCQl0aGlzLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsICJoaWRkZW4iKTsKKwkJCQkJfQorCQkJCTwvaGFuZGxlcj4JCQorCQkJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorCQkJICAgIAluZXcgbHouY29uZmVyZW5jZU1lbnVBY3Rpb25zKGNhbnZhcyx7CisJCQkgICAgCQkJCXg6dGhpcy5nZXRBdHRyaWJ1dGVSZWxhdGl2ZSgieCIsY2FudmFzKSwKKwkJCSAgICAJCQkJeTp0aGlzLmdldEF0dHJpYnV0ZVJlbGF0aXZlKCJ5IixjYW52YXMpK3RoaXMuaGVpZ2h0LAorCQkJICAgIAkJCQlidG5SZWY6dGhpcworCQkJICAgIAkJCX0pOworCQkJICAgICAgICB0aGlzLnBhcmVudC5wYXJlbnQuc2VuZE9wZW5NZW51KHRoaXMpOworCQkJICAgIDwvaGFuZGxlcj4KKwkJCTwvYmFzZU1lbnVNZWV0aW5nc0l0ZW0+CisJCQkKKwkJPC92aWV3PgorCQorCTwvY2xhc3M+IAorCQorCTxjbGFzcyBuYW1lPSJjb25mZXJlbmNlRXhpdEJ1dHRvbiIgZXh0ZW5kcz0idmlldyIgaGVpZ2h0PSIzNCIgd2lkdGg9IiR7IHRoaXMuX2N0ZXh0LndpZHRoKzM2IH0iID4KKwkKKwkgICAgPGF0dHJpYnV0ZSBuYW1lPSJ0ZXh0X3lfaW5zZXQiIHZhbHVlPSI2IiB0eXBlPSJudW1iZXIiIC8+CisJICAgIDxhdHRyaWJ1dGUgbmFtZT0idGV4dF9mb250c2l6ZSIgdmFsdWU9IjE0IiB0eXBlPSJudW1iZXIiIC8+CisJICAgIAorCSAgICA8YXR0cmlidXRlIG5hbWU9ImRvd25feV9pbnNldCIgdmFsdWU9IjEwIiB0eXBlPSJudW1iZXIiIC8+CisJICAgIAorCSAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3ZlciI+CisgICAgICAgICAgICB0aGlzLmJnYy5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCd2aXNpYmxlJyk7CisJICAgIDwvaGFuZGxlcj4KKwkgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZW91dCI+CisgICAgICAgICAgICB0aGlzLmJnYy5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCdoaWRkZW4nKTsKKwkgICAgPC9oYW5kbGVyPgorCSAgICAKKwkgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKwkJCTwhW0NEQVRBWworCQkJCWlmIChjYW52YXMuaXNpbml0Um9vbURpcmVjdCB8fCBjYW52YXMucmVtb3RlVXNlckxvZ2luIHx8IGNhbnZhcy5zZWN1cmVSZW1vdGVVc2VyTG9naW4pIHsKKwkgICAgICAgICAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInRoaXMgbWJhcmNvbnRlbnQgIix0aGlzKTsKKwkgICAgICAgICAgICAJaWYgKGNhbnZhcy5kZXN0cm95RXhpdEJ1dHRvbikgeworCSAgICAgICAgICAgICAgICAgICAgdGhpcy5kZXN0cm95KCk7CisJICAgICAgICAgICAgCX0KKwkgICAgICAgICAgICB9CisgICAgICAgICAgICBdXT4KKwkJPC9oYW5kbGVyPgorCQk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgIGNhbnZhcy5fdmlkZW9jb250YWluZXIuX3ZpZGVvdmlld2NvbnRlbnQuZXhpdFJvb20oKTsKKwkJPC9oYW5kbGVyPgorCSAgICAKKwkgICAgPHZpZXcgd2lkdGg9IiR7IHBhcmVudC53aWR0aC0xIH0iIGJnY29sb3I9IjB4RkZGRkZGIiBvcGFjaXR5PSIwLjQiIGhlaWdodD0iJG9uY2V7IHBhcmVudC5oZWlnaHQgLSAyfSIgeT0iMSIKKwkgICAgICAgIHZpc2liaWxpdHk9ImhpZGRlbiIgbmFtZT0iYmdjIi8+CisJICAgICAgICAKKwkgICAgPGltYWdlIHNyYz0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUltYWdlKCAnZXhpdF9idG5fcnNjJyApIH0iIHk9IjQiIHg9IjQiIC8+CisJICAgIAorCSAgICA8dmlldyB3aWR0aD0iMSIgaGVpZ2h0PSIkeyBwYXJlbnQuaGVpZ2h0IH0iIHk9IjAiIGJnY29sb3I9IjB4RUVFRUVFIiB4PSIkeyBwYXJlbnQud2lkdGgtMSB9IiAvPgorCSAgICAKKwkgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSI3ODkiIG5hbWU9Il9jdGV4dCIgZm9udHN0eWxlPSJwbGFpbiIgZmdjb2xvcj0iMHhGRkZGRkYiCisJICAgICAgICAJZm9udHNpemU9IiRvbmNleyBwYXJlbnQudGV4dF9mb250c2l6ZSB9IiB5PSIkb25jZXsgcGFyZW50LnRleHRfeV9pbnNldCB9IiB4PSIzMCIgLz4KKwkKKwkgICAgPGxhYmVsVG9vbHRpcCBuYW1lPSJfdGV4dFRvb2xUaXAiIGxhYmVsaWQ9IjMwOSIgbXVsdGlsaW5lPSJmYWxzZSIgLz4KKwkgICAgCisJPC9jbGFzcz4KKwkKKwkKKwkKKwk8Y2xhc3MgbmFtZT0iY29uZmVyZW5jRHJvcERvd25NZW51SXRlbSIgZXh0ZW5kcz0idmlldyIgaGVpZ2h0PSIzNiI+CisJCisJCTxhdHRyaWJ1dGUgbmFtZT0iaXNTcGFjZXIiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKwkKKwkJPGF0dHJpYnV0ZSBuYW1lPSJlbmFibGVkIiB0eXBlPSJib29sZWFuIiBzZXR0ZXI9InRoaXMuc2V0RW5hYmxlZChlbmFibGVkKSIgLz4KKwkJCisJCTxtZXRob2QgbmFtZT0ic2V0RW5hYmxlZCIgYXJncz0iZSI+CisJCQl0aGlzLmVuYWJsZWQgPSBlOworCQkJaWYgKCF0aGlzLmlzaW5pdGVkKSB7CisJCQkJcmV0dXJuOworCQkJfQorCQkJaWYgKHRoaXMuZW5hYmxlZCkgeworCQkJCXRoaXMuX2N0ZXh0LnNldEF0dHJpYnV0ZSgiZmdjb2xvciIsY2FudmFzLmdldFRoZW1lQ29sb3IoJ21lbnVUZXh0Q29sb3InKSk7CisJCQkJdGhpcy5fY3RleHRUb29sdGlwLnNldEF0dHJpYnV0ZSgiZmdjb2xvciIsY2FudmFzLmdldFRoZW1lQ29sb3IoJ21lbnVUZXh0Q29sb3InKSk7CisJCQl9IGVsc2UgeworCQkJCXRoaXMuX2N0ZXh0LnNldEF0dHJpYnV0ZSgiZmdjb2xvciIsY2FudmFzLmdldFRoZW1lQ29sb3IoJ21lbnVUZXh0RGlzYWJsZWRDb2xvcicpKTsKKwkJCQl0aGlzLl9jdGV4dFRvb2x0aXAuc2V0QXR0cmlidXRlKCJmZ2NvbG9yIixjYW52YXMuZ2V0VGhlbWVDb2xvcignbWVudVRleHREaXNhYmxlZENvbG9yJykpOworCQkJfQorCQkJaWYgKHRoaXMuY29tbWFuZCkgeworCQkJCXRoaXMuY29tbWFuZC5lbmFibGVkID0gdGhpcy5lbmFibGVkOworCQkJfQorCQk8L21ldGhvZD4KKwkJCisJCTxhdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZCIgdHlwZT0ibnVtYmVyIgorICAgICAgICAgICAgICAgICAgIHNldHRlcj0idGhpcy5zZXRMYWJlbElkKCBsYWJlbGlkICkiICAgd2hlbj0ib25jZSIgLz4KKyAgICAgICAgICAgICAgICAgICAKKwkJPG1ldGhvZCBuYW1lPSJzZXRMYWJlbElkIiBhcmdzPSJpZCIgPgorICAgICAgICAgICAgdGhpcy5sYWJlbGlkID0gaWQ7CisgICAgICAgICAgICBpZiAoIHRoaXMubGFiZWxpZCApIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9jdGV4dC5zZXRBdHRyaWJ1dGUoJ3RleHQnLCBjYW52YXMuZ2V0TGFiZWxOYW1lKHRoaXMubGFiZWxpZCkpOworICAgICAgICAgICAgfQorICAgICAgICA8L21ldGhvZD4KKwkJCisJCTxhdHRyaWJ1dGUgbmFtZT0iY29tbWFuZCIgdHlwZT0iZXhwcmVzc2lvbiIKKyAgICAgICAgICAgICAgICAgICBzZXR0ZXI9InRoaXMuc2V0Q29tbWFuZCggY29tbWFuZCApIiAgIHdoZW49Im9uY2UiIC8+CisJCQorCQk8bWV0aG9kIG5hbWU9InNldENvbW1hbmQiIGFyZ3M9ImNtZCIgPgorICAgICAgICAgICAgdGhpcy5jb21tYW5kID0gY21kOworICAgICAgICAgICAgaWYgKCB0aGlzLmNvbW1hbmQgKSB7CisgICAgICAgICAgICAgICAgdGhpcy5fY3RleHRUb29sdGlwLnNldEF0dHJpYnV0ZSgndGV4dCcsY2FudmFzLmdldExhYmVsTmFtZShjb21tYW5kLnRpcExhYmVsSWQpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9tZXRob2Q+CisgICAgICAgIAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgCWlmICghdGhpcy5lbmFibGVkKSB7CisgICAgICAgIAkJcmV0dXJuOworICAgICAgICAJfQorICAgICAgICAJdGhpcy5jb21tYW5kLmV4ZWN1dGUobnVsbCk7CisgICAgICAgIAlwYXJlbnQucGFyZW50LmNsb3NlKCk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdmVyIj4KKwkgICAgICAgIHRoaXMuX2JnLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKwkgICAgPC9oYW5kbGVyPgorCSAgICAKKwkgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZW91dCI+CisJICAgICAgICB0aGlzLl9iZy5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKwkgICAgPC9oYW5kbGVyPgorCQorCSAgICA8dmlldyBuYW1lPSJfYmciIHZpc2liaWxpdHk9ImhpZGRlbiIgd2lkdGg9IiR7IHBhcmVudC53aWR0aC0yIH0iIHk9IjAiIHg9IjEiCisJICAgICAgICAgIGJnY29sb3I9IjB4RkZGRkZGIiBvcGFjaXR5PSIwLjUiIGhlaWdodD0iMzYiIC8+CisJICAgIAorCSAgICA8dGV4dCBuYW1lPSJfY3RleHQiIGZvbnRzdHlsZT0iYm9sZCIgZmdjb2xvcj0iMHg2NjY2NjYiCisJICAgICAgICAJZm9udHNpemU9IjE0IiB5PSIyIiB4PSIxMCIgLz4KKwkgICAgICAgIAkKKwkgICAgPHRleHQgbmFtZT0iX2N0ZXh0VG9vbHRpcCIgZm9udHN0eWxlPSJwbGFpbiIgZmdjb2xvcj0iMHg2NjY2NjYiCisJICAgICAgICAJZm9udHNpemU9IjEwIiB5PSIyMCIgeD0iMTAiIC8+CQorCQkKKwk8L2NsYXNzPiAKKwkKKwk8Y2xhc3MgbmFtZT0iY29uZmVyZW5jZU1lbnVGaWxlcyIgZXh0ZW5kcz0iYmFzZURyb3BEb3duTWVudUxpc3QiCisJCQloZWlnaHQ9IiR7IHRoaXMuX2NvbnRlbnQuaGVpZ2h0KzIgfSIgd2lkdGg9IiR7IHRoaXMuX2NvbnRlbnQud2lkdGgrMiB9Ij4KKwkJCQorCQk8dmlldyBuYW1lPSJfY29udGVudCIgeD0iMSIgeT0iMSIgCisJCQlsYXlvdXQ9ImF4aXM6eTtzcGFjaW5nOjEiIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignbWVudUJhY2tncm91bmRDb2xvcicpIH0iID4KKwkJCQorCQkJPGNvbmZlcmVuY0Ryb3BEb3duTWVudUl0ZW0gbGFiZWxpZD0iMTUiIGNvbW1hbmQ9ImNtZF9pbXBvcnRGaWxlIgorCQkJCQkJZW5hYmxlZD0iJHsgY2FudmFzLmlzbW9kZXJhdG9yIH0iIC8+CisJCQkKKwkJPC92aWV3PgorCQkKKwk8L2NsYXNzPgorCQorCTxjbGFzcyBuYW1lPSJjb25mZXJlbmNlTWVudUFjdGlvbnMiIGV4dGVuZHM9ImJhc2VEcm9wRG93bk1lbnVMaXN0IgorCQkJaGVpZ2h0PSIkeyB0aGlzLl9jb250ZW50LmhlaWdodCsyIH0iIHdpZHRoPSIkeyB0aGlzLl9jb250ZW50LndpZHRoKzIgfSI+CisJCQkKKwkJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKwkgICAgICAgIHRoaXMuZml4V2lkdGgoKTsKKwkJPC9oYW5kbGVyPgorCQkJCisJCTx2aWV3IG5hbWU9Il9jb250ZW50IiB4PSIxIiB5PSIxIiAKKwkJCWxheW91dD0iYXhpczp5O3NwYWNpbmc6MSIgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdtZW51QmFja2dyb3VuZENvbG9yJykgfSIgPgorCQkJCisJCQk8Y29uZmVyZW5jRHJvcERvd25NZW51SXRlbSBsYWJlbGlkPSIyMTMiIGNvbW1hbmQ9ImNtZF9pbnZpdGF0aW9uIiAKKwkJCQkJCWVuYWJsZWQ9IiR7IGNhbnZhcy5pc21vZGVyYXRvciB9IiAvPgorCQkJPGhvcml6b250YWxEcm9wRG93blNwYWNlciAvPgorCQkJPGNvbmZlcmVuY0Ryb3BEb3duTWVudUl0ZW0gbGFiZWxpZD0iMjM5IiBjb21tYW5kPSJjbWRfc2hhcmVEZXNrdG9wIiAKKwkJCQkJCWVuYWJsZWQ9IiR7IGNhbnZhcy5pc21vZGVyYXRvciB9IiAvPgkJCQorCQkJPGhvcml6b250YWxEcm9wRG93blNwYWNlciAvPgorCQkJPCEtLSAKKwkJCTxjb25mZXJlbmNEcm9wRG93bk1lbnVJdGVtIGxhYmVsaWQ9IjMwNiIgY29tbWFuZD0iY21kX2VkaXRDYW1NaWNTZXR0aW5ncyIgCisJCQkJCQllbmFibGVkPSJ0cnVlIiAvPgkJCQorCQkJPGhvcml6b250YWxEcm9wRG93blNwYWNlciAvPgorCQkJIC0tPgorCQkJPGNvbmZlcmVuY0Ryb3BEb3duTWVudUl0ZW0gbGFiZWxpZD0iNzg0IiBjb21tYW5kPSJjbWRfYXBwbHlmb3JNb2QiCisJCQkJCQllbmFibGVkPSIkeyAhY2FudmFzLmlzbW9kZXJhdG9yIH0iIC8+CQorCQkJPGhvcml6b250YWxEcm9wRG93blNwYWNlciAvPgorCQkJPGNvbmZlcmVuY0Ryb3BEb3duTWVudUl0ZW0gbGFiZWxpZD0iNzg1IiBjb21tYW5kPSJjbWRfYXBwbHlmb3JXaGl0ZUJvYXJkIgorCQkJCQkJZW5hYmxlZD0iJHsgIWNhbnZhcy5pc21vZGVyYXRvciB9IiAvPgkKKwkJCTxob3Jpem9udGFsRHJvcERvd25TcGFjZXIgLz4KKwkJCTxjb25mZXJlbmNEcm9wRG93bk1lbnVJdGVtIGxhYmVsaWQ9Ijc4NiIgY29tbWFuZD0iY21kX2FwcGx5Zm9yQVYiCisJCQkJCQllbmFibGVkPSIkeyAhY2FudmFzLmlzbW9kZXJhdG9yIH0iIC8+CQkJCQorCQkJPGhvcml6b250YWxEcm9wRG93blNwYWNlciAvPgorCQkJPGNvbmZlcmVuY0Ryb3BEb3duTWVudUl0ZW0gbGFiZWxpZD0iMjQiIGNvbW1hbmQ9ImNtZF9jcmVhdGVQb2xsIiAKKwkJCQkJCWVuYWJsZWQ9IiR7IGNhbnZhcy5pc21vZGVyYXRvciB9IiAvPgorCQkJPGhvcml6b250YWxEcm9wRG93blNwYWNlciAvPgkJCQorCQkJPGNvbmZlcmVuY0Ryb3BEb3duTWVudUl0ZW0gbGFiZWxpZD0iMzciIGNvbW1hbmQ9ImNtZF9wb2xsUmVzdWx0cyIgCisJCQkJCQllbmFibGVkPSJ0cnVlIiAvPgorCQkJPGhvcml6b250YWxEcm9wRG93blNwYWNlciAvPgorCQkJPGNvbmZlcmVuY0Ryb3BEb3duTWVudUl0ZW0gbGFiZWxpZD0iNDIiIGNvbW1hbmQ9ImNtZF9jaGVja1BvbGxWb3RlZCIgCisJCQkJCQkgZW5hYmxlZD0idHJ1ZSIvPgorCQkJPGhvcml6b250YWxEcm9wRG93blNwYWNlcgorCQkJCQkJIHZpc2libGU9IiRvbmNleyBjYW52YXMuUkVENV9TSVBfRU5BQkxFID09ICd5ZXMnICZhbXA7JmFtcDsgY2FudmFzLmN1cnJlbnRSb29tT2JqZWN0LnNpcEVuYWJsZWQgfSIgLz4KKyAgICAgICAgICAgIDxjb25mZXJlbmNEcm9wRG93bk1lbnVJdGVtIGxhYmVsaWQ9IjE0NDciIGNvbW1hbmQ9ImNtZF9zaG93U2lwRGlhbGVyIiAKKyAgICAgICAgICAgIAkJCSB2aXNpYmxlPSIkb25jZXsgY2FudmFzLlJFRDVfU0lQX0VOQUJMRSA9PSAneWVzJyAmYW1wOyZhbXA7IGNhbnZhcy5jdXJyZW50Um9vbU9iamVjdC5zaXBFbmFibGVkIH0iCisgICAgICAgICAgICAJCQkgZW5hYmxlZD0iJG9uY2V7IGNhbnZhcy5SRUQ1X1NJUF9FTkFCTEUgPT0gJ3llcycgJmFtcDsmYW1wOyBjYW52YXMuY3VycmVudFJvb21PYmplY3Quc2lwRW5hYmxlZCB9Ii8+CisgICAgICAgICAgICA8aG9yaXpvbnRhbERyb3BEb3duU3BhY2VyIC8+CisJCQk8Y29uZmVyZW5jRHJvcERvd25NZW51SXRlbSBsYWJlbGlkPSIxMTI2IiBjb21tYW5kPSJjbWRfZWRpdFdoaXRlYm9hcmREZWZhdWx0IiAKKwkJCQkJCSBlbmFibGVkPSJ0cnVlIi8+CisJCQk8IS0tIFNhdmUgV2hpdGVib2FyZCBhcyBJbWFnZSBtZW51ZXMgYXJlIGNvbW1lbnRlZCBmb3Igbm93CisgICAgICAgICAgICA8aG9yaXpvbnRhbERyb3BEb3duU3BhY2VyIC8+CisJCQk8Y29uZmVyZW5jRHJvcERvd25NZW51SXRlbSBsYWJlbGlkPSI1NjAiIGNvbW1hbmQ9ImNtZF9leHBvcnRGaWxlU1ZHIiBlbmFibGVkPSJ0cnVlIi8+CisJCQk8Y29uZmVyZW5jRHJvcERvd25NZW51SXRlbSBsYWJlbGlkPSI1NjEiIGNvbW1hbmQ9ImNtZF9leHBvcnRGaWxlUE5HIiBlbmFibGVkPSJ0cnVlIi8+CisJCQk8Y29uZmVyZW5jRHJvcERvd25NZW51SXRlbSBsYWJlbGlkPSI1NjIiIGNvbW1hbmQ9ImNtZF9leHBvcnRGaWxlSlBHIiBlbmFibGVkPSJ0cnVlIi8+CisJCQktLT4KKwkJPC92aWV3PgorCQkKKwk8L2NsYXNzPgorCQorCisKKwkKKworCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvY29uZmVyZW5jZS9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9jb25mZXJlbmNlL2xpYnJhcnkubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjMTVmMDQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvY29uZmVyZW5jZS9saWJyYXJ5Lmx6eApAQCAtMCwwICsxLDI3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCQorCTxpbmNsdWRlIGhyZWY9InJvb21MaXN0SXRlbS5sengiIC8+CisJPGluY2x1ZGUgaHJlZj0icm9vbUxpc3REZXRhaWxzLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJjb25mZXJlbmNlTWVudWJhci5sengiIC8+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9jb25mZXJlbmNlL3Jvb21MaXN0RGV0YWlscy5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvY29uZmVyZW5jZS9yb29tTGlzdERldGFpbHMubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxNzBiNjUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvY29uZmVyZW5jZS9yb29tTGlzdERldGFpbHMubHp4CkBAIC0wLDAgKzEsMTcxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCQorPGNsYXNzIG5hbWU9InVzZXJSb29tVGFiSXRlbSIgZXh0ZW5kcz0idmlldyIgCisJICAgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGggfSIgPgorCisJPGF0dHJpYnV0ZSBuYW1lPSJ1c2VyX2lkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0idXNlcm5hbWUiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwk8YXR0cmlidXRlIG5hbWU9InVzZXJ0aW1lIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJjYnRleHQiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwkKKwk8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorCQk8IVtDREFUQVsKKwkgICAgICAgIHZhciBkb3dubG9hZHVybCA9IGNhbnZhcy5nZXRVcmwoKSArICdEb3dubG9hZEhhbmRsZXI/ZmlsZU5hbWU9Q0hBVCcKKwkgICAgICAgIAkJKycmbW9kdWxlTmFtZT1jaGF0JnBhcmVudFBhdGg9JnJvb21faWQ9JworCSAgICAgICAgCQkrJyZyZW1vdGVVc2VyaWQ9Jyt0aGlzLnVzZXJfaWQKKwkgICAgICAgIAkJKycmc2lkPScrY2FudmFzLnNlc3Npb25JZDsKKwkgICAgICAgIAkJCisJICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZG93bmxvYWR1cmwgIitkb3dubG9hZHVybCk7CisJICAgICAgICB0aGlzLl91c2VycGljLnNldEF0dHJpYnV0ZSgnc3JjJyxkb3dubG9hZHVybCk7CQorCSAgICAgICAgCisJICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiVElNRTogIit0aGlzLnVzZXJ0aW1lKTsKKwkgICAgICAgIAorICAgICAgICBdXT4KKwk8L2hhbmRsZXI+CisJCisJPGltYWdlIG5hbWU9Il91c2VycGljIiAvPgorCisJPHRleHQgdGV4dD0iJG9uY2V7IHBhcmVudC51c2VybmFtZSB9IiB4PSI0MCIKKwkJICB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCAtIDQwIH0iCisJCSAgc2VsZWN0YWJsZT0idHJ1ZSIgLz4KKwkKKwk8dGV4dCB0ZXh0PSIkb25jZXsgcGFyZW50LnVzZXJ0aW1lIH0iIHg9IjQwIiB5PSIyMCIgLz4KKworPC9jbGFzcz4KKworPGNsYXNzIG5hbWU9InJvb21MaXN0RGV0YWlscyIgZXh0ZW5kcz0idmlldyIgPgorCisJPGF0dHJpYnV0ZSBuYW1lPSJyb29taWQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJyb29tbmFtZSIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0icm9vbWNvbW1lbnQiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwk8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnR1c2VycyIgdmFsdWU9Im51bGwiIC8+CisJCisJCisJPG1ldGhvZCBuYW1lPSJkb2luaXQiIGFyZ3M9ImN1cnJlbnR1c2Vycyxyb29taWQscm9vbW5hbWUscm9vbWNvbW1lbnQiPgorCQk8IVtDREFUQVsKKwkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJkb2luaXQiLGN1cnJlbnR1c2Vycyxyb29taWQscm9vbW5hbWUpOworCQkJdGhpcy5zZXRBdHRyaWJ1dGUoJ2N1cnJlbnR1c2VycycsY3VycmVudHVzZXJzKTsKKwkJCXRoaXMuc2V0QXR0cmlidXRlKCdyb29taWQnLHJvb21pZCk7CisJCQl0aGlzLnNldEF0dHJpYnV0ZSgncm9vbW5hbWUnLHJvb21uYW1lKTsKKwkJCXRoaXMuc2V0QXR0cmlidXRlKCdyb29tY29tbWVudCcscm9vbWNvbW1lbnQpOworCQkJdGhpcy5fcm9vbW5hbWUuc2V0QXR0cmlidXRlKCd0ZXh0JyxjYW52YXMuZ2V0TGFiZWxOYW1lKDQwNikrIiAiK3Jvb21uYW1lKTsKKwkJCXRoaXMuX3Jvb21jb21tZW50LnNldEF0dHJpYnV0ZSgndGV4dCcsIHJvb21jb21tZW50KTsKKwkJCXRoaXMuX3VzZXJzLmNsZWFyTGlzdCgpOworCQkJaWYgKHRoaXMuY3VycmVudHVzZXJzICE9IG51bGwpIHsKKwkJCQlmb3IgKHZhciBpID0gMDtpPHRoaXMuY3VycmVudHVzZXJzLmxlbmd0aDtpKyspeworCQkJCQl2YXIgdXNlcm5hbWUgPSB0aGlzLmN1cnJlbnR1c2Vyc1tpXS5maXJzdG5hbWUgKyAiICIKKwkJCQkJCQkrIHRoaXMuY3VycmVudHVzZXJzW2ldLmxhc3RuYW1lCisJCQkJCQkJKyAiICgiICsgdGhpcy5jdXJyZW50dXNlcnNbaV0udXNlcm5hbWUgKyAiKSAiOworCQkJCQkgbmV3IGx6LnVzZXJSb29tVGFiSXRlbSh0aGlzLl91c2Vycy5fdXNlcnMuX2NidGV4dCx7dXNlcl9pZDp0aGlzLmN1cnJlbnR1c2Vyc1tpXS51c2VyX2lkLHVzZXJuYW1lOnVzZXJuYW1lLHVzZXJ0aW1lOmNhbnZhcy5nZXRMYWJlbE5hbWUoNDA4KStwYXJzZURhdGVUb1N0cmluZ1RpbWUodGhpcy5jdXJyZW50dXNlcnNbaV0ucm9vbUVudGVyKX0pOworCQkJCX0KKwkJCX0KKwkJCXRoaXMuYmRhdHVtLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsICJoaWRkZW4iKTsKKyAgICAJCXRoaXMuZWRhdHVtLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsICJoaWRkZW4iKTsKKyAgICAJCXRoaXMubF9iZGF0dW0uc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwgImhpZGRlbiIpOworICAgIAkJdGhpcy5sX2VkYXR1bS5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCAiaGlkZGVuIik7CisgICAgCQlpZiAocm9vbWlkID4gMCkgeworCQkJCXRoaXMuZ2V0QXBwb2ludG1lbnREYXRhLmRvQ2FsbCgpOworCQkJfQorCQldXT4KKwk8L21ldGhvZD4KKwkKKwk8IS0tIFJldHJpZXZpbmcgQXBwb2ludG1lbnRkYXRhIGZvciBNZWV0aW5nIC0tPgorCTxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImdldEFwcG9pbnRtZW50RGF0YSIgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iIAorCQlmdW5jbmFtZT0iY29uZmVyZW5jZXNlcnZpY2UuZ2V0QXBwb2ludE1lbnREYXRhRm9yUm9vbSIgPiAgIAorCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQucm9vbWlkOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCTxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgkKKwkJICAgIDwhW0NEQVRBWworCQkgICAgCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJnZXRBcHBvaW50bWVudERhdGE6ICIsdmFsdWUpOworCQkgICAgCQorCQkgICAgCWlmKHZhbHVlIT1udWxsKXsKKwkJICAgIAkJCisJCSAgICAJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJBcHBvaW50bWVudCBOYW1lIDogIiArIHZhbHVlLmFwcG9pbnRtZW50TmFtZSk7CisJCSAgICAJCXBhcmVudC5iZGF0dW0uc2V0QXR0cmlidXRlKCd0ZXh0JywiIit2YWx1ZS5hcHBvaW50bWVudFN0YXJ0dGltZSk7CisJCSAgICAJCXBhcmVudC5lZGF0dW0uc2V0QXR0cmlidXRlKCd0ZXh0JywiIit2YWx1ZS5hcHBvaW50bWVudEVuZHRpbWUpOworCQkgICAgCQkKKwkJICAgIAkJCisJCSAgICAJCXBhcmVudC5iZGF0dW0uc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworCQkgICAgCQlwYXJlbnQuZWRhdHVtLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKwkJICAgIAkJcGFyZW50LmxfYmRhdHVtLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKwkJICAgIAkJcGFyZW50LmxfZWRhdHVtLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKwkJICAgIAkJCisJCSAgICAJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJBcHBvaW50bWVudCBTdGFydCA6ICIgKyB2YWx1ZS5hcHBvaW50bWVudFN0YXJ0dGltZSk7CisJCSAgICAJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJBcHBvaW50bWVudCBFbmQgOiAiICsgdmFsdWUuYXBwb2ludG1lbnRFbmR0aW1lKTsKKwkJICAgIAkJCisJCSAgICAJfSBlbHNleworCQkgICAgCQkKKwkJICAgIAkJcGFyZW50LmJkYXR1bS5zZXRBdHRyaWJ1dGUoJ3RleHQnLCcnKTsKKwkJICAgIAkJcGFyZW50LmVkYXR1bS5zZXRBdHRyaWJ1dGUoJ3RleHQnLCcnKTsKKwkJICAgIAkJCisJCSAgICAJCXBhcmVudC5iZGF0dW0uc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwgImhpZGRlbiIpOworCQkgICAgCQlwYXJlbnQuZWRhdHVtLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsICJoaWRkZW4iKTsKKwkJICAgIAkJcGFyZW50LmxfYmRhdHVtLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsICJoaWRkZW4iKTsKKwkJICAgIAkJcGFyZW50LmxfZWRhdHVtLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsICJoaWRkZW4iKTsKKwkJICAgIAkJCisJCSAgICAJfQorCQkgICAgXV0+CSAgICAgICAgCSAgICAgICAgICAJCQkJCisJCTwvaGFuZGxlcj4JCisJPC9uZXRSZW1vdGVDYWxsSGliPiAJCisJCisJPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iZ2V0Um9vbUNsaWVudHNMaXN0QnlSb29tSWQiIGZ1bmNuYW1lPSJjb25mZXJlbmNlc2VydmljZS5nZXRSb29tQ2xpZW50c0xpc3RCeVJvb21JZCIgCisJCXJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiA+ICAgCisJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC5yb29taWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CQorCQkgICAgPCFbQ0RBVEFbCisJCSAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImdldFJvb21DbGllbnRzTGlzdEJ5Um9vbUlkOiAiLHZhbHVlKTsKKwkJICAgIAlwYXJlbnQuY3VycmVudHVzZXJzID0gdmFsdWU7CisJCSAgICAJcGFyZW50LmRvaW5pdCgpOworCQkgICAgXV0+CSAgICAgICAgCSAgICAgICAgICAJCQkJCisJCTwvaGFuZGxlcj4JCisJPC9uZXRSZW1vdGVDYWxsSGliPiAgIAkKKwkKKwk8bGFiZWxUZXh0IGxhYmVsaWQ9IjQwNCIgZm9udHN0eWxlPSJpdGFsaWMiIHdpZHRoPSIyMDAiIC8+CisJCisJPGxhYmVsVGV4dCBuYW1lPSJfcm9vbW5hbWUiIGxhYmVsaWQ9IjQwNiIgeT0iMjAiIHdpZHRoPSIyMDAiIC8+CisJCisJPGxhYmVsVGV4dCBuYW1lPSJsX2JkYXR1bSIgbGFiZWxpZD0iNTcwIiB5PSI0MCIgd2lkdGg9IjUwIiB2aXNpYmxlPSJmYWxzZSIgLz4KKwk8bGFiZWxUZXh0IG5hbWU9ImJkYXR1bSIgeT0iNDAiIHg9Ijc1IiB3aWR0aD0iMTAwIiB0ZXh0PSIiIHZpc2libGU9ImZhbHNlIiAvPiAJICAgICAgICAgICAgCQorCisJPGxhYmVsVGV4dCBuYW1lPSJsX2VkYXR1bSIgbGFiZWxpZD0iNTcxIiB5PSI2MCIgd2lkdGg9IjUwIiB2aXNpYmxlPSJmYWxzZSIgLz4KKwk8bGFiZWxUZXh0IG5hbWU9ImVkYXR1bSIgeT0iNjAiIHg9Ijc1IiB3aWR0aD0iMTAwIiB0ZXh0PSIiIHZpc2libGU9ImZhbHNlIiAvPgorCisJPGxhYmVsVGV4dCBuYW1lPSJfcm9vbWNvbW1lbnQiIHg9Ijc1IiB5PSIke3BhcmVudC5sX2VkYXR1bS55ICsgKHBhcmVudC5sX2VkYXR1bS52aXNpYmxlID8gMzAgOiAwKX0iIHdpZHRoPSIxMDAiIHRleHQ9IiIvPgorCTxsYWJlbFRleHQgbGFiZWxpZD0iMjcwIiB5PSIke3BhcmVudC5fcm9vbWNvbW1lbnQueX0iIHdpZHRoPSI1MCIgLz4KKworCTxsYWJlbFRleHQgbmFtZT0idXNlcl9sYWJlbCIgbGFiZWxpZD0iNDA3IiB5PSIkezEwICsgcGFyZW50Ll9yb29tY29tbWVudC55ICsgcGFyZW50Ll9yb29tY29tbWVudC5oZWlnaHR9IiB3aWR0aD0iMjAwIiAvPgorCTx2aWV3IG5hbWU9Il91c2VycyIgd2lkdGg9IjMwMCIgeT0iJHszMCArIHBhcmVudC5fcm9vbWNvbW1lbnQueSArIHBhcmVudC5fcm9vbWNvbW1lbnQuaGVpZ2h0fSIKKwkJCQloZWlnaHQ9IiR7IHBhcmVudC5oZWlnaHQgLSBwYXJlbnQuX3VzZXJzLnkgfSIgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdzZWNvbmRCb3JkZXJDb2xvcicpIH0iPgorCQk8bWV0aG9kIG5hbWU9ImNsZWFyTGlzdCI+CisJCQlmb3IgKHZhciBlZyBpbiB0aGlzLl91c2Vycy5fY2J0ZXh0LnN1YnZpZXdzKSAKKwkJCQl0aGlzLl91c2Vycy5fY2J0ZXh0LnN1YnZpZXdzW2VnXS5kZXN0cm95KCk7CisJCTwvbWV0aG9kPgorCQk8dmlldyBuYW1lPSJfdXNlcnMiIHdpZHRoPSIyOTkiIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodCAtIDEgfSIgYmdjb2xvcj0iMHhGRkZGRkYiIAorCQkJICB4PSIxIiB5PSIxIiBjbGlwPSJ0cnVlIiA+CisJCQk8dmlldyBuYW1lPSJfY2J0ZXh0IiB3aWR0aD0iMjg2IiBsYXlvdXQ9ImF4aXM6eTtzcGFjaW5nOjIiIC8+CisJCQk8b21fdnNjcm9sbGJhciAvPgorCQk8L3ZpZXc+CisJPC92aWV3PgorCQorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2NvbmZlcmVuY2Uvcm9vbUxpc3RJdGVtLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9jb25mZXJlbmNlL3Jvb21MaXN0SXRlbS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTk3NzZkOQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9jb25mZXJlbmNlL3Jvb21MaXN0SXRlbS5sengKQEAgLTAsMCArMSwyMDYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKwk8Y2xhc3MgbmFtZT0icm9vbUxpc3RJdGVtIiBleHRlbmRzPSJ2aWV3IiBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmJnQ29sb3JNZW51SXRlbXMgfSIgCisJCSAgIGhlaWdodD0iNTAiIG9ubW91c2VvdmVyPSIiIG9ubW91c2VvdXQ9IiIgd2lkdGg9IjQ3OCIgPgorCisJCTxhdHRyaWJ1dGUgbmFtZT0iaXNwdWJsaWMiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKwkJPGF0dHJpYnV0ZSBuYW1lPSJpc2F1ZGllbmNlIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisJCTxhdHRyaWJ1dGUgbmFtZT0ib2JqIiB2YWx1ZT0ibnVsbCIgLz4KKwkJPGF0dHJpYnV0ZSBuYW1lPSJyb29taWQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisJCTxhdHRyaWJ1dGUgbmFtZT0ic3RhcnR0aW1lIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisJCTxhdHRyaWJ1dGUgbmFtZT0icm9vbW5hbWUiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwkJPGF0dHJpYnV0ZSBuYW1lPSJyb29tY29tbWVudCIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorCisJCTxhdHRyaWJ1dGUgbmFtZT0icm9vbUNsYXNzTmFtZSIgdmFsdWU9ImNvbmZlcmVuY2VWaWV3IiB0eXBlPSJzdHJpbmciIC8+CisJCTxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudHVzZXJzIiB2YWx1ZT0ibnVsbCIgLz4KKworCQk8YXR0cmlidXRlIG5hbWU9Im1heFVzZXJzIiB2YWx1ZT0iNCIgdHlwZT0ibnVtYmVyIiAvPgorCQkKKwkJPGF0dHJpYnV0ZSBuYW1lPSJyb29tVHlwZSIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKworCQk8YXR0cmlidXRlIG5hbWU9ImNoZWNrRm9yTWF4VXNlcnMiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKworCQk8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorCQk8IVtDREFUQVsKKworCQkgICAgaWYgKG9iaiAhPSBudWxsKSB7CisgICAgCQkJLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib2JqOiAiLG9iaik7CisgICAgCQkJaWYgKHRoaXMuaXNwdWJsaWMpIHsKKyAgICAJCQkJdGhpcy5tYXhVc2VycyA9IG9iai5udW1iZXJPZlBhcnRpemlwYW50czsKKyAgICAJCQl9IGVsc2UgeworICAgIAkJCQl0aGlzLm1heFVzZXJzID0gb2JqLnJvb20ubnVtYmVyT2ZQYXJ0aXppcGFudHM7CisgICAgCQkJfQorICAgIAkJCXRoaXMuX3VzZXJzLnNldEF0dHJpYnV0ZSgndGV4dCcsIGNhbnZhcy5nZXRMYWJlbE5hbWUoMzk4KSArICcgJworICAgIAkJCQkJCQkrIHRoaXMuY3VycmVudHVzZXJzLmxlbmd0aCArICIgLyAiICsgdGhpcy5tYXhVc2Vycyk7CisgICAgCQkJdmFyIHRTdHJpbmcgPSBjYW52YXMuZ2V0TGFiZWxOYW1lKDQwMSkgKyAiPGJyLz4iOworICAgIAkJCWZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy5jdXJyZW50dXNlcnMubGVuZ3RoOyBpKyspIHsKKyAgICAJCQkJdFN0cmluZyArPSB0aGlzLmN1cnJlbnR1c2Vyc1tpXS5maXJzdG5hbWUgKyAiICIKKyAgICAJCQkJCQkrIHRoaXMuY3VycmVudHVzZXJzW2ldLmxhc3RuYW1lICsgIiAoIgorICAgIAkJCQkJCSsgdGhpcy5jdXJyZW50dXNlcnNbaV0udXNlcm5hbWUgKyAiKSAiCisgICAgCQkJCQkJKyBjYW52YXMuZ2V0TGFiZWxOYW1lKDM5OSkKKyAgICAJCQkJCQkrIHBhcnNlRGF0ZVRvU3RyaW5nVGltZSh0aGlzLmN1cnJlbnR1c2Vyc1tpXS5yb29tRW50ZXIpCisgICAgCQkJCQkJKyAiIDxici8+IjsKKyAgICAJCQl9CisgICAgCQkJdGhpcy5fbGFiZWx0b29sdGlwLnNldEF0dHJpYnV0ZSgndGV4dCcsIHRTdHJpbmcpOworCQkgICAgfQorCQldXT4KKwkJPC9oYW5kbGVyPgorCisJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorCQkJaWYgKG9iaiAhPSBudWxsKSB7CisgICAgCQkJY2FudmFzLmlzQ29uZmVyZW5jZSA9ICF0aGlzLmlzYXVkaWVuY2U7CisgICAgCQkJaWYgKHRoaXMuaXNhdWRpZW5jZSkKKyAgICAJCQkJY29ubmVjdGVkSXNBdWRpZW5jZSA9ICdfJyArICdhdWRpJzsKKyAgICAJCQlpZiAodGhpcy5pc3B1YmxpYykgeworICAgIAkJCQloaWIuY29uZmVyZW5jZWRvbWFpbiA9ICJwdWJsaWMiOworICAgIAkJCQloaWIuY3VycmVudHJvb21pZCA9IHRoaXMub2JqLnJvb21zX2lkOworICAgIAkJCX0gZWxzZSB7CisgICAgCQkJCWhpYi5jb25mZXJlbmNlZG9tYWluID0gdGhpcy5vYmoub3JnYW5pc2F0aW9uLm9yZ2FuaXNhdGlvbl9pZDsKKyAgICAJCQkJaGliLmN1cnJlbnRyb29taWQgPSB0aGlzLm9iai5yb29tLnJvb21zX2lkOworICAgIAkJCX0KKwkJCX0KKwkJCXBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQuX3Jvb21saXN0ZGV0YWlscy5kb2luaXQoCisgICAgCQkJCQl0aGlzLmN1cnJlbnR1c2VycywgdGhpcy5yb29taWQsIHRoaXMucm9vbW5hbWUsIHRoaXMucm9vbWNvbW1lbnQpOworCQk8L2hhbmRsZXI+CisKKwkJPG1ldGhvZCBuYW1lPSJjaGVja01heFVzZXJzIj4KKwkJPCFbQ0RBVEFbCisJCQlpZiAodGhpcy5jdXJyZW50dXNlcnMgPT0gbnVsbCB8fCB0aGlzLmN1cnJlbnR1c2Vycy5sZW5ndGggPCB0aGlzLm1heFVzZXJzKSB7CisJCQkJdGhpcy5lbnRlclJvb20oKTsKKwkJCX0gZWxzZSB7CisJCQkJbmV3IGx6LmxhYmVsZXJyb3JQb3B1cChjYW52YXMse2Vycm9ybGFiZWxpZDo5OX0pOworCQkJCS8vbmV3IGx6LnJwY0Vycm9yRGlhbG9nKGNhbnZhcy5tYWluX2NvbnRlbnQuX2NvbnRlbnQuaW5uZXIsIHsKKwkJCQkvLwkJCWVycm9yaWQgOiAzMAorCQkJCS8vCQl9KTsKKwkJCX0KKwkJXV0+CisJCTwvbWV0aG9kPgorCQkKKwkJPG1ldGhvZCBuYW1lPSJlbnRlclJvb20iPgorCQkJaWYgKHRoaXMub2JqID09IG51bGwpIHsKKwkJCQl0aGlzLmdldFJvb21CeU93bmVyQW5kVHlwZS5kb0NhbGwoKTsKKwkJCX0gZWxzZSB7CisJCQkJdGhpcy5pbml0Um9vbSgpOworCQkJfQorCQk8L21ldGhvZD4KKwkJCisJCTxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImdldFJvb21CeU93bmVyQW5kVHlwZSIgZnVuY25hbWU9ImNvbmZlcmVuY2VzZXJ2aWNlLmdldFJvb21CeU93bmVyQW5kVHlwZSIKKyAgICAgICAgICAgIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiA+CisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4gIAorICAgICAgICAgICAgPG5ldHBhcmFtPiA8bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC5yb29tVHlwZTs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICAgICAgPG5ldHBhcmFtPiA8bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC5yb29tbmFtZTs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZ2V0Um9vbUJ5T3duZXJBbmRUeXBlOiAiLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50Lm9iaiA9IHZhbHVlOworICAgICAgICAgICAgICAgICAgICBwYXJlbnQuZW50ZXJSb29tKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXV0+CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4KKworCQk8bWV0aG9kIG5hbWU9ImluaXRSb29tIj4KKwkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJyb29tTGlzdEl0ZW06OmluaXRSb29tICIsIHRoaXMpOworCQkJCisJCQljYW52YXMuaXNDb25mZXJlbmNlID0gIXRoaXMuaXNhdWRpZW5jZTsKKwkJCWlmICh0aGlzLmlzYXVkaWVuY2UpCisJCQkJY29ubmVjdGVkSXNBdWRpZW5jZSA9ICdfJyArICdhdWRpJzsKKwkJCWlmICh0aGlzLmlzcHVibGljKSB7CisJCQkJdmFyIHJvb21PYmogPSB0aGlzLm9iajsKKwkJCQloaWIuY29uZmVyZW5jZWRvbWFpbiA9ICJwdWJsaWMiOworCQkJCWhpYi5jdXJyZW50cm9vbWlkID0gdGhpcy5vYmoucm9vbXNfaWQ7CisJCQkJLy9EZWJ1Zy53cml0ZSgiaXNwdWJsaWMiKTsKKwkJCX0gZWxzZSB7CisJCQkJdmFyIHJvb21PYmogPSB0aGlzLm9iai5yb29tOworCQkJCWhpYi5jb25mZXJlbmNlZG9tYWluID0gdGhpcy5vYmoub3JnYW5pc2F0aW9uLm9yZ2FuaXNhdGlvbl9pZDsKKwkJCQloaWIuY3VycmVudHJvb21pZCA9IHRoaXMub2JqLnJvb20ucm9vbXNfaWQ7CisJCQkJLy9EZWJ1Zy53cml0ZSgibm9uIGlzcHVibGljIik7CisJCQl9CisJCQkKKwkJCWlmICh0aGlzLnJvb21UeXBlID09IDEpIHsKKwkJCQl0aGlzLnJvb21DbGFzc05hbWUgPSBjYW52YXMuY29uZmVyZW5jZVJvb21Nb2R1bGU7CisJCQl9IGVsc2UgaWYgKHRoaXMucm9vbVR5cGUgPT0gMikgeworCQkJCW5ldyBsei5sYWJlbGVycm9yUG9wdXAoY2FudmFzLHtlcnJvcjonTm8gUm9vbVR5cGUgY3VycmVudGx5IGF2YWlsYWJsZSBmb3Igcm9vbVR5cGVJZCAyJ30pOworCQkJCXRoaXMucm9vbUNsYXNzTmFtZSA9IGNhbnZhcy5yZXN0cmljdGVkUm9vbU1vZHVsZTsKKwkJCX0gZWxzZSBpZiAodGhpcy5yb29tVHlwZSA9PSAzKSB7CisgICAgICAgICAgICAgICAgdGhpcy5yb29tQ2xhc3NOYW1lID0gY2FudmFzLnJlc3RyaWN0ZWRSb29tTW9kdWxlOworICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnJvb21UeXBlID09IDQpIHsKKyAgICAgICAgICAgICAgICB0aGlzLnJvb21DbGFzc05hbWUgPSBjYW52YXMuaW50ZXJ2aWV3Um9vbU1vZHVsZTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5yb29tVHlwZSA9PSA1KSB7CisgICAgICAgICAgICAgICAgdGhpcy5yb29tQ2xhc3NOYW1lID0gY2FudmFzLmN1c3RvbVJvb21Nb2R1bGU7CisgICAgICAgICAgICB9IGVsc2UgeworCQkJCWlmICgkZGVidWcpIERlYnVnLndhcm4oIk5vdCBrbm93biBSb29tVHlwZTogIix0aGlzLnJvb21UeXBlKTsKKwkJCX0KKwkJCS8vdGhlIGNvbmZlcmVuY2Vkb21haW4gaXMgbm8gbW9yZSBpbnRlcmVzdGluZywgc3dhZ25lciAwNy4xMC4yMDA5CisJCQkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJoaWIuY29uZmVyZW5jZWRvbWFpbjogIiwgaGliLmNvbmZlcmVuY2Vkb21haW4pOworCisJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiVGVzdCBTZXR1cCAiLHRoaXMucm9vbUNsYXNzTmFtZSk7CisgICAgICAgICAgICAKKwkJCW5ldyBsei50ZXN0U2V0dXAoY2FudmFzLHtyb29tQ2xhc3NOYW1lOnRoaXMucm9vbUNsYXNzTmFtZSxyb29tT2JqOnJvb21PYmp9KTsKKwkJCQorCQk8L21ldGhvZD4KKworCQk8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJnZXRSb29tQ2xpZW50c0xpc3RCeVJvb21JZCIgZnVuY25hbWU9ImNvbmZlcmVuY2VzZXJ2aWNlLmdldFJvb21DbGllbnRzTGlzdEJ5Um9vbUlkIgorCQkJcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4KKwkJCTxuZXRwYXJhbT4gPG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQucm9vbWlkOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCQk8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKwkJCTwhW0NEQVRBWworCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJnZXRSb29tQ2xpZW50c0xpc3RCeVJvb21JZDogIiwgdmFsdWUpOworCQkJCXBhcmVudC5jdXJyZW50dXNlcnMgPSB2YWx1ZTsKKwkJCQlwYXJlbnQub25pbml0LnNlbmRFdmVudCgpOworCQkJCWlmIChwYXJlbnQuY2hlY2tGb3JNYXhVc2VycykgeworCQkJCQlwYXJlbnQuY2hlY2tNYXhVc2VycygpOworCQkJCX0KKwkJCV1dPgorCQkJPC9oYW5kbGVyPgorCQk8L25ldFJlbW90ZUNhbGxIaWI+CisKKwkJPGxhYmVsVGV4dCB0ZXh0PSIkb25jZXsgcGFyZW50LnJvb21uYW1lIH0iIC8+CisKKwkJPGxhYmVsVGV4dCBuYW1lPSJfdXNlcnMiIHk9IjI2IiAvPgorCQk8aW1hZ2UgbmFtZT0iX3IiIHNyYz0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUltYWdlKCdyZWxvYWRfcnNjJykgfSIgeD0iMTMwIiB5PSIyNiIKKwkJCW9uY2xpY2s9InBhcmVudC5nZXRSb29tQ2xpZW50c0xpc3RCeVJvb21JZC5kb0NhbGwoKSIgPgorCQkJPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSI0MDIiIC8+CisJCTwvaW1hZ2U+CisgIAorCQk8bWV0aG9kIG5hbWU9ImNoZWNrQ29uZGl0aW9uc1doZW5CdXR0b25DbGlja2VkIiBhcmdzPSJfY2xpY2tlZCI+CisJCTwhW0NEQVRBWworCQkJaWYgKHBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQuZmluaXNoZWRUYWJzUXVhbnRpdHkgPCAzKSB7CisJCQkJcGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5jbGlja2VkQnV0dG9uID0gX2NsaWNrZWQ7CisJCQl9IGVsc2UgeworCQkJCWNoZWNrRm9yTWF4VXNlcnMgPSB0cnVlOworCQkJCWdldFJvb21DbGllbnRzTGlzdEJ5Um9vbUlkLmRvQ2FsbCgpOworCQkJfQorCQldXT4KKwkJPC9tZXRob2Q+CisKKwkJPHNpbXBsZUxhYmVsQnV0dG9uIGxhYmVsaWQ9IjEzMSIgeD0iMzY0IiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjI0IiB5PSIyNCIKKwkJCW9uY2xpY2s9InBhcmVudC5jaGVja0NvbmRpdGlvbnNXaGVuQnV0dG9uQ2xpY2tlZCh0aGlzKSI+CisJCTwvc2ltcGxlTGFiZWxCdXR0b24+CisJCQorCQk8bGFiZWxUb29sdGlwIG11bHRpbGluZT0idHJ1ZSIgbmFtZT0iX2xhYmVsdG9vbHRpcCIgLz4KKworCTwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tL2FjdGl2aXR5bGlzdC9hY3Rpdml0eUxpc3QubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vYWN0aXZpdHlsaXN0L2FjdGl2aXR5TGlzdC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc1OWQyMQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tL2FjdGl2aXR5bGlzdC9hY3Rpdml0eUxpc3QubHp4CkBAIC0wLDAgKzEsNTgyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCQorPGNsYXNzIG5hbWU9InNpbXBsZWJhc2VJdGVtQWN0aXZpdHlMaXN0IiBleHRlbmRzPSJ2aWV3IiBoZWlnaHQ9IjQwIiBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ2Jhc2VNb3VzZU92ZXJjb2xvcml6ZXInKSB9Ij4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9Im1lc3NhZ2UiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9InJjbCIgdmFsdWU9Im51bGwiIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJ0U3RhbXAiIHZhbHVlPSJudWxsIiAvPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0icmVtb3ZlT2JqZWN0Ij4KKyAgICAgICAgdGhpcy5zZW5kQ2xlYXJNZXNzYWdlKGZhbHNlKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImNsb3NlSXRlbSI+CisgICAgICAgIHRoaXMuX2RvSGlkZS5zZXRBdHRyaWJ1dGUoJ3N0YXJ0ZWQnLCB0cnVlKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImRlc3Ryb3lJdGVtIj4KKyAgICAgICAgdGhpcy5kZXN0cm95KCk7CisgICAgICAgIHBhcmVudC5zY3JvbGxUb01heCgpOworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0ic2VuZENsZWFyTWVzc2FnZSIgYXJncz0iYm9vbCI+CisgICAgICAgIGNhbnZhcy50aGlzaGliLnNlbmRNZXNzYWdlV2l0aENsaWVudC5zZW5kQWR2TWVzc2FnZSgiaGlkZUFjdGl2aXR5T2JqIixib29sLHRoaXMudFN0YW1wKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWluaUljb25zIHJlc291cmNlPSJhbGxvd19kZW55X2ljb25fcnNjIiB2aXNpYmxlPSIkeyBjYW52YXMuaXNtb2RlcmF0b3IgfSIKKyAgICAgICAgICAgICAgIHg9IiRvbmNleyBwYXJlbnQud2lkdGggLSAxOCB9IiB5PSIwIj4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICB0aGlzLnBhcmVudC5yZW1vdmVPYmplY3QoKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IjE1NCIgLz4KKyAgICA8L21pbmlJY29ucz4gICAKKyAgICAKKyAgICA8YW5pbWF0b3IgbmFtZT0iX2RvSGlkZSIgYXR0cmlidXRlPSJvcGFjaXR5IiBkdXJhdGlvbj0iMTI1MCIgdG89IjAiIHN0YXJ0ZWQ9ImZhbHNlIj4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25zdG9wIj4KKyAgICAgICAgICAgIHBhcmVudC5kZXN0cm95SXRlbSgpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9hbmltYXRvcj4gICAgCisgICAgCis8L2NsYXNzPgkKKwkKKzxjbGFzcyBuYW1lPSJiYXNlSXRlbUFjdGl2aXR5TGlzdCIgZXh0ZW5kcz0idmlldyIgaGVpZ2h0PSI0MCIgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdiYXNlTW91c2VPdmVyY29sb3JpemVyJykgfSI+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJtZXNzYWdlIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJsYWJlbGlkVG9vbFRpcE9rQnV0dG9uIiB2YWx1ZT0iMTM2MCIgdHlwZT0ibnVtYmVyIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZFRvb2xUaXBEZW55QnV0dG9uIiB2YWx1ZT0iMTM2MSIgdHlwZT0ibnVtYmVyIiAvPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0icmNsIiB2YWx1ZT0ibnVsbCIgLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9InRTdGFtcCIgdmFsdWU9Im51bGwiIC8+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJyZW1vdmVPYmplY3QiPgorICAgICAgICB0aGlzLnNlbmRDbGVhck1lc3NhZ2UoZmFsc2UpOworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iY2xvc2VJdGVtIj4KKyAgICAJdGhpcy5fZG9IaWRlLnNldEF0dHJpYnV0ZSgnc3RhcnRlZCcsIHRydWUpOworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iZGVzdHJveUl0ZW0iPgorICAgICAgICB0aGlzLmRlc3Ryb3koKTsKKyAgICAgICAgcGFyZW50LnNjcm9sbFRvTWF4KCk7CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJzZW5kQ2xlYXJNZXNzYWdlIiBhcmdzPSJib29sIj4KKwkJY2FudmFzLnRoaXNoaWIuc2VuZE1lc3NhZ2VXaXRoQ2xpZW50LnNlbmRBZHZNZXNzYWdlKCJoaWRlQWN0aXZpdHlPYmoiLGJvb2wsdGhpcy50U3RhbXApOworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtaW5pSWNvbnMgcmVzb3VyY2U9ImFsbG93X29rX2ljb25fcnNjIiB2aXNpYmxlPSIkeyBjYW52YXMuaXNtb2RlcmF0b3IgfSIKKyAgICAJCSAgIHg9IiRvbmNleyBwYXJlbnQud2lkdGggLSAxOCB9IiA+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgdGhpcy5wYXJlbnQuYXBwbHlPYmplY3QoKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IiRvbmNleyBwYXJlbnQucGFyZW50LmxhYmVsaWRUb29sVGlwT2tCdXR0b24gfSIgLz4KKyAgICA8L21pbmlJY29ucz4gCisgICAgICAgICAgICAgICAKKyAgICA8bWluaUljb25zIHJlc291cmNlPSJhbGxvd19kZW55X2ljb25fcnNjIiB2aXNpYmxlPSIkeyBjYW52YXMuaXNtb2RlcmF0b3IgfSIKKyAgICAJCSAgIHg9IiRvbmNleyBwYXJlbnQud2lkdGggLSAxOCB9IiB5PSIxNiI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgdGhpcy5wYXJlbnQucmVtb3ZlT2JqZWN0KCk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSIkb25jZXsgcGFyZW50LnBhcmVudC5sYWJlbGlkVG9vbFRpcERlbnlCdXR0b24gfSIgLz4KKyAgICA8L21pbmlJY29ucz4gICAKKyAgICAKKyAgICA8YW5pbWF0b3IgbmFtZT0iX2RvSGlkZSIgYXR0cmlidXRlPSJvcGFjaXR5IiBkdXJhdGlvbj0iMTI1MCIgdG89IjAiIHN0YXJ0ZWQ9ImZhbHNlIj4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25zdG9wIj4KKyAgICAgICAgICAgIHBhcmVudC5kZXN0cm95SXRlbSgpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9hbmltYXRvcj4gICAgCisJCis8L2NsYXNzPgorCis8Y2xhc3MgbmFtZT0iYWN0aXZpdHlMaXN0UmVzdHJpY3RlZFJvb21BViIgZXh0ZW5kcz0iYmFzZUl0ZW1BY3Rpdml0eUxpc3QiPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iYXBwbHlPYmplY3QiPgorICAgICAgICBjYW52YXMudGhpc2hpYi5zZXRCcm9hZENhc3RpbmdGbGFnLnB1YmxpY1NJRE9mTmV3TW9kZXJhdG9yID0gdGhpcy5yY2wucHVibGljU0lEOworICAgICAgICBjYW52YXMudGhpc2hpYi5zZXRCcm9hZENhc3RpbmdGbGFnLmlzQWxsb3dlZFRvQnJvYWRDYXN0QVYgPSB0cnVlOworICAgICAgICBjYW52YXMudGhpc2hpYi5zZXRCcm9hZENhc3RpbmdGbGFnLmF2c2V0dGluZ3MgPSAiYXYiOworICAgICAgICBjYW52YXMudGhpc2hpYi5zZXRCcm9hZENhc3RpbmdGbGFnLmRvQ2FsbCgpOyAKKyAgICAgICAgdGhpcy5zZW5kQ2xlYXJNZXNzYWdlKHRydWUpOworICAgIDwvbWV0aG9kPiAgIAorICAgIAorICAgIDx2aWV3IHJlc291cmNlPSJhdl9hbGxvd19yc2MiIHg9IjIiIHk9IjIiIC8+CisgICAgCisgICAgPGxhYmVsVGV4dCB0ZXh0PSIkb25jZXsgcGFyZW50Lm1lc3NhZ2UgfSIgbXVsdGlsaW5lPSJ0cnVlIiB4PSI0MCIKKyAgICAgICAgICAgICAgIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoIC0gNjAgfSIvPgorICAgICAgICAgICAgICAgCis8L2NsYXNzPgorCQorPGNsYXNzIG5hbWU9ImFjdGl2aXR5TGlzdFJlc3RyaWN0ZWRSb29tQXBwbHlGb3JNdXRlT24iIGV4dGVuZHM9ImJhc2VJdGVtQWN0aXZpdHlMaXN0IiAKKwkgICBsYWJlbGlkVG9vbFRpcE9rQnV0dG9uPSIxNDAwIj4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImFwcGx5T2JqZWN0Ij4KKyAgICAgICAgY2FudmFzLnRoaXNoaWIuc3dpdGNoTWljTXV0ZWQuc2V0TXV0ZSh0aGlzLnJjbC5wdWJsaWNTSUQsdHJ1ZSk7CisgICAgICAgIHRoaXMuc2VuZENsZWFyTWVzc2FnZSh0cnVlKTsKKyAgICA8L21ldGhvZD4gICAKKyAgICAKKyAgICA8dmlldyByZXNvdXJjZT0ibXV0ZV9idG5fcnNjIiB4PSIyIiB5PSIyIiAvPgorICAgIAorICAgIDxsYWJlbFRleHQgdGV4dD0iJG9uY2V7IHBhcmVudC5tZXNzYWdlIH0iIG11bHRpbGluZT0idHJ1ZSIgeD0iNDAiCisgICAgICAgICAgICAgICB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCAtIDYwIH0iLz4KKyAgICAgICAgICAgICAgIAorPC9jbGFzcz4KKworPGNsYXNzIG5hbWU9ImFjdGl2aXR5TGlzdFJlc3RyaWN0ZWRSb29tQXBwbHlGb3JHaXZlRXhjbHVzaXZlQXVkaW9PbiIgZXh0ZW5kcz0iYmFzZUl0ZW1BY3Rpdml0eUxpc3QiCisJICAgbGFiZWxpZFRvb2xUaXBPa0J1dHRvbj0iMTQyOCI+CisKKyAgICA8bWV0aG9kIG5hbWU9ImFwcGx5T2JqZWN0Ij4KKyAgICAgICAgY2FudmFzLnRoaXNoaWIuc2V0Q2FuR2l2ZUF1ZGlvLnNlbmRWYWx1ZSh0aGlzLnJjbC5wdWJsaWNTSUQsdHJ1ZSk7CisgICAgICAgIHRoaXMuc2VuZENsZWFyTWVzc2FnZSh0cnVlKTsKKyAgICA8L21ldGhvZD4KKworICAgIDx2aWV3IHJlc291cmNlPSJwYXJ0aWNpcGFudHNfZXhjbHVzaXZlX2F1ZGlvX3JzYyIgeD0iMiIgeT0iMiIgLz4KKworICAgIDxsYWJlbFRleHQgdGV4dD0iJG9uY2V7IHBhcmVudC5tZXNzYWdlIH0iIG11bHRpbGluZT0idHJ1ZSIgeD0iMjAiCisgICAgICAgICAgICAgICB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCAtIDQwIH0iLz4KKworPC9jbGFzcz4KKwkKKzxjbGFzcyBuYW1lPSJhY3Rpdml0eUxpc3RSZXN0cmljdGVkUm9vbUFwcGx5Rm9yTXV0ZU9mZiIgZXh0ZW5kcz0iYmFzZUl0ZW1BY3Rpdml0eUxpc3QiIAorCSAgIGxhYmVsaWRUb29sVGlwT2tCdXR0b249IjE0MDEiPgorCQorICAgIDxtZXRob2QgbmFtZT0iYXBwbHlPYmplY3QiPgorICAgIAljYW52YXMudGhpc2hpYi5zd2l0Y2hNaWNNdXRlZC5zZXRNdXRlKHRoaXMucmNsLnB1YmxpY1NJRCxmYWxzZSk7CisgICAgICAgIHRoaXMuc2VuZENsZWFyTWVzc2FnZSh0cnVlKTsKKyAgICA8L21ldGhvZD4JCisJCisJPHZpZXcgcmVzb3VyY2U9InVubXV0ZV9idG5fcnNjIiB4PSIyIiB5PSIyIiAvPgorCQorCTxsYWJlbFRleHQgdGV4dD0iJG9uY2V7IHBhcmVudC5tZXNzYWdlIH0iIG11bHRpbGluZT0idHJ1ZSIgeD0iMjAiCisJCQkgICB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCAtIDQwIH0iLz4KKyAgICAgICAgICAgICAgIAorPC9jbGFzcz4JCisKKzxjbGFzcyBuYW1lPSJhY3Rpdml0eUxpc3RSZXN0cmljdGVkUm9vbUEiIGV4dGVuZHM9ImJhc2VJdGVtQWN0aXZpdHlMaXN0Ij4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImFwcGx5T2JqZWN0Ij4KKyAgICAgICAgY2FudmFzLnRoaXNoaWIuc2V0QnJvYWRDYXN0aW5nRmxhZy5wdWJsaWNTSURPZk5ld01vZGVyYXRvciA9IHRoaXMucmNsLnB1YmxpY1NJRDsKKyAgICAgICAgY2FudmFzLnRoaXNoaWIuc2V0QnJvYWRDYXN0aW5nRmxhZy5pc0FsbG93ZWRUb0Jyb2FkQ2FzdEFWID0gdHJ1ZTsKKyAgICAgICAgY2FudmFzLnRoaXNoaWIuc2V0QnJvYWRDYXN0aW5nRmxhZy5hdnNldHRpbmdzID0gImEiOworICAgICAgICBjYW52YXMudGhpc2hpYi5zZXRCcm9hZENhc3RpbmdGbGFnLmRvQ2FsbCgpOyAKKyAgICAgICAgdGhpcy5zZW5kQ2xlYXJNZXNzYWdlKHRydWUpOworICAgIDwvbWV0aG9kPiAgIAorICAgIAorICAgIDx2aWV3IHJlc291cmNlPSJhbGxvd19hdWRpb19vbmx5X3JzYyIgeD0iMiIgeT0iMiIgLz4KKyAgICAKKyAgICA8bGFiZWxUZXh0IHRleHQ9IiRvbmNleyBwYXJlbnQubWVzc2FnZSB9IiBtdWx0aWxpbmU9InRydWUiIHg9IjIwIgorICAgICAgICAgICAgICAgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGggLSA0MCB9Ii8+CisgICAgICAgICAgICAgICAKKzwvY2xhc3M+ICAKKyAgICAKKzxjbGFzcyBuYW1lPSJhY3Rpdml0eUxpc3RSZXN0cmljdGVkUm9vbVYiIGV4dGVuZHM9ImJhc2VJdGVtQWN0aXZpdHlMaXN0Ij4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImFwcGx5T2JqZWN0Ij4KKyAgICAgICAgY2FudmFzLnRoaXNoaWIuc2V0QnJvYWRDYXN0aW5nRmxhZy5wdWJsaWNTSURPZk5ld01vZGVyYXRvciA9IHRoaXMucmNsLnB1YmxpY1NJRDsKKyAgICAgICAgY2FudmFzLnRoaXNoaWIuc2V0QnJvYWRDYXN0aW5nRmxhZy5pc0FsbG93ZWRUb0Jyb2FkQ2FzdEFWID0gdHJ1ZTsKKyAgICAgICAgY2FudmFzLnRoaXNoaWIuc2V0QnJvYWRDYXN0aW5nRmxhZy5hdnNldHRpbmdzID0gInYiOworICAgICAgICBjYW52YXMudGhpc2hpYi5zZXRCcm9hZENhc3RpbmdGbGFnLmRvQ2FsbCgpOyAKKyAgICAgICAgdGhpcy5zZW5kQ2xlYXJNZXNzYWdlKHRydWUpOworICAgIDwvbWV0aG9kPiAgIAorICAgIAorICAgIDx2aWV3IHJlc291cmNlPSJhbGxvd192aWRlb19vbmx5X3JzYyIgeD0iMiIgeT0iMiIgLz4KKyAgICAKKyAgICA8bGFiZWxUZXh0IHRleHQ9IiRvbmNleyBwYXJlbnQubWVzc2FnZSB9IiBtdWx0aWxpbmU9InRydWUiIHg9IjIwIgorICAgICAgICAgICAgICAgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGggLSA0MCB9Ii8+CisgICAgICAgICAgICAgICAKKzwvY2xhc3M+ICAgCisKKzxjbGFzcyBuYW1lPSJhY3Rpdml0eUxpc3RSZXN0cmljdGVkUm9vbVdoaXRlYm9hcmQiIGV4dGVuZHM9ImJhc2VJdGVtQWN0aXZpdHlMaXN0Ij4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImFwcGx5T2JqZWN0Ij4KKyAgICAgICAgY2FudmFzLnRoaXNoaWIuc2V0Q2FuRHJhdy5wdWJsaWNTSUQgPSB0aGlzLnJjbC5wdWJsaWNTSUQ7CisgICAgICAgIGNhbnZhcy50aGlzaGliLnNldENhbkRyYXcuY2FuRHJhdyA9IHRydWU7CisgICAgICAgIGNhbnZhcy50aGlzaGliLnNldENhbkRyYXcuZG9DYWxsKCk7CisgICAgICAgIHRoaXMuc2VuZENsZWFyTWVzc2FnZSh0cnVlKTsKKyAgICA8L21ldGhvZD4gICAKKyAgICAKKyAgICA8dmlldyByZXNvdXJjZT0icGFydGljaXBhbnRzX2FsbG93X2RyYXdpbmdfcnNjIiB4PSIyIiB5PSIyIiAvPgorICAgIAorICAgIDxsYWJlbFRleHQgdGV4dD0iJG9uY2V7IHBhcmVudC5tZXNzYWdlIH0iIG11bHRpbGluZT0idHJ1ZSIgeD0iMjAiCisgICAgICAgICAgICAgICB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCAtIDQwIH0iLz4KKyAgICAgICAgICAgICAgIAorPC9jbGFzcz4gIAorCis8Y2xhc3MgbmFtZT0iYWN0aXZpdHlMaXN0UmVzdHJpY3RlZFJvb21TY3JlZW4iIGV4dGVuZHM9ImJhc2VJdGVtQWN0aXZpdHlMaXN0Ij4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImFwcGx5T2JqZWN0Ij4KKyAgICAgICAgCisgICAgICAgIGNhbnZhcy50aGlzaGliLnNldENhblNoYXJlLnB1YmxpY1NJRCA9IHRoaXMucmNsLnB1YmxpY1NJRDsKKyAgICAgICAgY2FudmFzLnRoaXNoaWIuc2V0Q2FuU2hhcmUuY2FuU2hhcmUgPSB0cnVlOworICAgICAgICBjYW52YXMudGhpc2hpYi5zZXRDYW5TaGFyZS5kb0NhbGwoKTsKKyAgICAgICAgCisgICAgICAgIHRoaXMuc2VuZENsZWFyTWVzc2FnZSh0cnVlKTsKKyAgICA8L21ldGhvZD4gICAKKyAgICAKKyAgICA8dmlldyByZXNvdXJjZT0ic2NyZWVuX2FsbG93X3JzYyIgeD0iMiIgeT0iMiIgLz4KKyAgICAKKyAgICA8bGFiZWxUZXh0IHRleHQ9IiRvbmNleyBwYXJlbnQubWVzc2FnZSB9IiBtdWx0aWxpbmU9InRydWUiIHg9IjIwIgorICAgICAgICAgICAgICAgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGggLSA0MCB9Ii8+CisgICAgICAgICAgICAgICAKKzwvY2xhc3M+ICAKKworPGNsYXNzIG5hbWU9ImFjdGl2aXR5TGlzdFJlc3RyaWN0ZWRSb29tUmVtb3RlIiBleHRlbmRzPSJiYXNlSXRlbUFjdGl2aXR5TGlzdCI+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJhcHBseU9iamVjdCI+CisgICAgICAgIAorICAgICAgICBjYW52YXMudGhpc2hpYi5zZXRDYW5SZW1vdGUucHVibGljU0lEID0gdGhpcy5yY2wucHVibGljU0lEOworICAgICAgICBjYW52YXMudGhpc2hpYi5zZXRDYW5SZW1vdGUuY2FuUmVtb3RlID0gdHJ1ZTsKKyAgICAgICAgY2FudmFzLnRoaXNoaWIuc2V0Q2FuUmVtb3RlLmRvQ2FsbCgpOworCisgICAgICAgIHRoaXMuc2VuZENsZWFyTWVzc2FnZSh0cnVlKTsKKyAgICA8L21ldGhvZD4gICAKKyAgICAKKyAgICA8dmlldyByZXNvdXJjZT0icmVtb3RlX2FsbG93X3JzYyIgeD0iMiIgeT0iMiIgLz4KKyAgICAKKyAgICA8bGFiZWxUZXh0IHRleHQ9IiRvbmNleyBwYXJlbnQubWVzc2FnZSB9IiBtdWx0aWxpbmU9InRydWUiIHg9IjIwIgorICAgICAgICAgICAgICAgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGggLSA0MCB9Ii8+CisgICAgICAgICAgICAgICAKKzwvY2xhc3M+IAorCis8Y2xhc3MgbmFtZT0iYWN0aXZpdHlMaXN0TWVzc2FnZVJlcXVlc3QiIGV4dGVuZHM9InNpbXBsZWJhc2VJdGVtQWN0aXZpdHlMaXN0Ij4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImFwcGx5T2JqZWN0Ij4KKyAgICAgICAgdGhpcy5zZW5kQ2xlYXJNZXNzYWdlKHRydWUpOworICAgIDwvbWV0aG9kPiAgIAorICAgIAorICAgIDx2aWV3IHJlc291cmNlPSJ3YXJuaW5nX2ljb25fcnNjIiB4PSIyIiB5PSIyIiAvPgorICAgIAorICAgIDxsYWJlbFRleHQgdGV4dD0iJG9uY2V7IHBhcmVudC5tZXNzYWdlIH0iIG11bHRpbGluZT0idHJ1ZSIgeD0iMjAiCisgICAgICAgICAgICAgICB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCAtIDQwIH0iLz4KKyAgICAgICAgICAgICAgIAorPC9jbGFzcz4gIAorCis8Y2xhc3MgbmFtZT0iYWN0aXZpdHlMaXN0UmVzdHJpY3RlZFJvb21Nb2RlcmF0aW9uIiBleHRlbmRzPSJiYXNlSXRlbUFjdGl2aXR5TGlzdCI+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJhcHBseU9iamVjdCI+CisgICAgICAgIGNhbnZhcy50aGlzaGliLmFkZE1vZGVyYXRvci5wdWJsaWNTSURPZk5ld01vZGVyYXRvciA9IHRoaXMucmNsLnB1YmxpY1NJRDsKKyAgICAgICAgY2FudmFzLnRoaXNoaWIuYWRkTW9kZXJhdG9yLmRvQ2FsbCgpOworICAgICAgICB0aGlzLnNlbmRDbGVhck1lc3NhZ2UodHJ1ZSk7CisgICAgPC9tZXRob2Q+ICAgCisgICAgCisgICAgPHZpZXcgcmVzb3VyY2U9InBhcnRpY2lwYW50c19pc01vZF9yc2MiIHg9IjIiIHk9IjIiIC8+CisgICAgCisgICAgPGxhYmVsVGV4dCB0ZXh0PSIkb25jZXsgcGFyZW50Lm1lc3NhZ2UgfSIgbXVsdGlsaW5lPSJ0cnVlIiB4PSIyMCIKKyAgICAgICAgICAgICAgIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoIC0gNDAgfSIvPgorICAgICAgICAgICAgICAgCis8L2NsYXNzPiAgCisKKzxjbGFzcyBuYW1lPSJhY3Rpdml0eUxpc3QiIHk9IiR7IHBhcmVudC5oZWlnaHQgLSAyMDAgfSIgeD0iMCIKKwkgICBleHRlbmRzPSJiYXNlUHJvcGVydHlQYW5lbFdoaXRlYm9hcmQiIGhlaWdodD0iMjAwIiAKKyAgICAgICAgIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoLTEwIH0iIGxhYmVsaWQ9IjEzNjMiIAorICAgICAgICAgdmlzaWJpbGl0eT0iJHsoKGNhbnZhcy5jdXJyZW50Um9vbU9iai5oaWRlQWN0aXZpdGllc0FuZEFjdGlvbnMgPT0gdHJ1ZSkgPyAnaGlkZGVuJzondmlzaWJsZScpfSI+CisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAgICAgY2FudmFzLmN1cnJlbnRBY3Rpdml0eUxpc3QgPSB0aGlzOworICAgIDwvaGFuZGxlcj4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImFkZE1lc3NhZ2VSZXF1ZXN0IiBhcmdzPSJyY2wsbWVzc2FnZSx0U3RhbXAiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIHZhciB0eHQgPSByY2wuZmlyc3RuYW1lICsgIiAiICsgcmNsLmxhc3RuYW1lICsgIiAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlsiICsgcmNsLnVzZXJuYW1lICsgIl0gOiAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSArICIgWyIgKyBnZXRTdHJpbmdUaW1lQnlUaW1lU3RhbXAodFN0YW1wKSArICJdIjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgbmV3IGx6LmFjdGl2aXR5TGlzdE1lc3NhZ2VSZXF1ZXN0KHRoaXMuX2xpc3QuX2xpc3QseworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOnR4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6dGhpcy5fbGlzdC53aWR0aC0xNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmNsOnJjbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdFN0YW1wOnRTdGFtcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5fbGlzdC5fbGlzdC5zY3JvbGxUb01heCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgXV0+ICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgPC9tZXRob2Q+CisgICAgCisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJhZGRNb2RlcmF0aW9uUmVxdWVzdCIgYXJncz0icmNsLHRTdGFtcCI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgaWYgKHJjbC5wdWJsaWNTSUQgPT0gY2FudmFzLnB1YmxpY1NJRCkgeworICAgICAgICAgICAgICAgIHZhciB0eHQgPSAiPGI+IitjYW52YXMuZ2V0TGFiZWxOYW1lKDEzNjIpKyI8L2I+ICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMuZ2V0TGFiZWxOYW1lKDY5MykgKyAiIFsiICsgZ2V0U3RyaW5nVGltZUJ5VGltZVN0YW1wKHRTdGFtcCkgKyAiXSI7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHZhciB0eHQgPSByY2wuZmlyc3RuYW1lICsgIiAiICsgcmNsLmxhc3RuYW1lICsgIiAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlsiICsgcmNsLnVzZXJuYW1lICsgIl0gIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5nZXRMYWJlbE5hbWUoNjkzKSArICIgWyIgKyBnZXRTdHJpbmdUaW1lQnlUaW1lU3RhbXAodFN0YW1wKSArICJdIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgbmV3IGx6LmFjdGl2aXR5TGlzdFJlc3RyaWN0ZWRSb29tTW9kZXJhdGlvbih0aGlzLl9saXN0Ll9saXN0LHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTp0eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOnRoaXMuX2xpc3Qud2lkdGgtMTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJjbDpyY2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRTdGFtcDp0U3RhbXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuX2xpc3QuX2xpc3Quc2Nyb2xsVG9NYXgoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIF1dPiAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iYWRkU2NyZWVuUmVxdWVzdCIgYXJncz0icmNsLHRTdGFtcCI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgaWYgKHJjbC5wdWJsaWNTSUQgPT0gY2FudmFzLnB1YmxpY1NJRCkgeworICAgICAgICAgICAgICAgIHZhciB0eHQgPSAiPGI+IitjYW52YXMuZ2V0TGFiZWxOYW1lKDEzNjIpKyI8L2I+ICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzLmdldExhYmVsTmFtZSgxMDcwKSArICIgWyIgKyBnZXRTdHJpbmdUaW1lQnlUaW1lU3RhbXAodFN0YW1wKSArICJdIjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdmFyIHR4dCA9IHJjbC5maXJzdG5hbWUgKyAiICIgKyByY2wubGFzdG5hbWUgKyAiICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWyIgKyByY2wudXNlcm5hbWUgKyAiXSAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzLmdldExhYmVsTmFtZSgxMDcwKSArICIgWyIgKyBnZXRTdHJpbmdUaW1lQnlUaW1lU3RhbXAodFN0YW1wKSArICJdIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIG5ldyBsei5hY3Rpdml0eUxpc3RSZXN0cmljdGVkUm9vbVNjcmVlbih0aGlzLl9saXN0Ll9saXN0LHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTp0eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOnRoaXMuX2xpc3Qud2lkdGgtMTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJjbDpyY2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRTdGFtcDp0U3RhbXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuX2xpc3QuX2xpc3Quc2Nyb2xsVG9NYXgoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIF1dPiAgICAgICAgICAgICAgICAgICAgICAKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImFkZFJlbW90ZVJlcXVlc3QiIGFyZ3M9InJjbCx0U3RhbXAiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIGlmIChyY2wucHVibGljU0lEID09IGNhbnZhcy5wdWJsaWNTSUQpIHsKKyAgICAgICAgICAgICAgICB2YXIgdHh0ID0gIjxiPiIrY2FudmFzLmdldExhYmVsTmFtZSgxMzYyKSsiPC9iPiAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5nZXRMYWJlbE5hbWUoMTA4MikgKyAiIFsiICsgZ2V0U3RyaW5nVGltZUJ5VGltZVN0YW1wKHRTdGFtcCkgKyAiXSI7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHZhciB0eHQgPSByY2wuZmlyc3RuYW1lICsgIiAiICsgcmNsLmxhc3RuYW1lICsgIiAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlsiICsgcmNsLnVzZXJuYW1lICsgIl0gIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5nZXRMYWJlbE5hbWUoMTA4MikgKyAiIFsiICsgZ2V0U3RyaW5nVGltZUJ5VGltZVN0YW1wKHRTdGFtcCkgKyAiXSI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBuZXcgbHouYWN0aXZpdHlMaXN0UmVzdHJpY3RlZFJvb21SZW1vdGUodGhpcy5fbGlzdC5fbGlzdCx7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6dHh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDp0aGlzLl9saXN0LndpZHRoLTE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByY2w6cmNsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0U3RhbXA6dFN0YW1wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLl9saXN0Ll9saXN0LnNjcm9sbFRvTWF4KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICBdXT4gICAgICAgICAgICAgICAgICAgICAgCisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJhcHBseUZvck11dGVPbiIgYXJncz0icmNsLHRTdGFtcCI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgaWYgKHJjbC5wdWJsaWNTSUQgPT0gY2FudmFzLnB1YmxpY1NJRCkgeworICAgICAgICAgICAgICAgIHZhciB0eHQgPSAiPGI+IitjYW52YXMuZ2V0TGFiZWxOYW1lKDEzNjIpKyI8L2I+ICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzLmdldExhYmVsTmFtZSgxMzk2KSArICIgWyIgKyBnZXRTdHJpbmdUaW1lQnlUaW1lU3RhbXAodFN0YW1wKSArICJdIjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdmFyIHR4dCA9IHJjbC5maXJzdG5hbWUgKyAiICIgKyByY2wubGFzdG5hbWUgKyAiICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWyIgKyByY2wudXNlcm5hbWUgKyAiXSAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzLmdldExhYmVsTmFtZSgxMzk5KSArICIgWyIgKyBnZXRTdHJpbmdUaW1lQnlUaW1lU3RhbXAodFN0YW1wKSArICJdIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIG5ldyBsei5hY3Rpdml0eUxpc3RSZXN0cmljdGVkUm9vbUFwcGx5Rm9yTXV0ZU9uKHRoaXMuX2xpc3QuX2xpc3QseworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOnR4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6dGhpcy5fbGlzdC53aWR0aC0xNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmNsOnJjbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdFN0YW1wOnRTdGFtcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5fbGlzdC5fbGlzdC5zY3JvbGxUb01heCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgXV0+ICAgICAgICAgICAgICAgICAgICAgIAorICAgIDwvbWV0aG9kPgorCisgICAgPG1ldGhvZCBuYW1lPSJhcHBseUZvckdpdmVFeGNsdXNpdmVBdWRpb09uIiBhcmdzPSJyY2wsdFN0YW1wIj4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICBpZiAocmNsLnB1YmxpY1NJRCA9PSBjYW52YXMucHVibGljU0lEKSB7CisgICAgICAgICAgICAgICAgdmFyIHR4dCA9ICI8Yj4iK2NhbnZhcy5nZXRMYWJlbE5hbWUoMTM2MikrIjwvYj4gIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMuZ2V0TGFiZWxOYW1lKDE0MjcpICsgIiBbIiArIGdldFN0cmluZ1RpbWVCeVRpbWVTdGFtcCh0U3RhbXApICsgIl0iOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB2YXIgdHh0ID0gcmNsLmZpcnN0bmFtZSArICIgIiArIHJjbC5sYXN0bmFtZSArICIgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJbIiArIHJjbC51c2VybmFtZSArICJdICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMuZ2V0TGFiZWxOYW1lKDE0MjYpICsgIiBbIiArIGdldFN0cmluZ1RpbWVCeVRpbWVTdGFtcCh0U3RhbXApICsgIl0iOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBuZXcgbHouYWN0aXZpdHlMaXN0UmVzdHJpY3RlZFJvb21BcHBseUZvckdpdmVFeGNsdXNpdmVBdWRpb09uKHRoaXMuX2xpc3QuX2xpc3QseworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOnR4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6dGhpcy5fbGlzdC53aWR0aC0xNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmNsOnJjbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdFN0YW1wOnRTdGFtcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICB0aGlzLl9saXN0Ll9saXN0LnNjcm9sbFRvTWF4KCk7CisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iYXBwbHlGb3JNdXRlT2ZmIiBhcmdzPSJyY2wsdFN0YW1wIj4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICBpZiAocmNsLnB1YmxpY1NJRCA9PSBjYW52YXMucHVibGljU0lEKSB7CisgICAgICAgICAgICAgICAgdmFyIHR4dCA9ICI8Yj4iK2NhbnZhcy5nZXRMYWJlbE5hbWUoMTM2MikrIjwvYj4gIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMuZ2V0TGFiZWxOYW1lKDEzOTcpICsgIiBbIiArIGdldFN0cmluZ1RpbWVCeVRpbWVTdGFtcCh0U3RhbXApICsgIl0iOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB2YXIgdHh0ID0gcmNsLmZpcnN0bmFtZSArICIgIiArIHJjbC5sYXN0bmFtZSArICIgIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJbIiArIHJjbC51c2VybmFtZSArICJdICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMuZ2V0TGFiZWxOYW1lKDEzOTgpICsgIiBbIiArIGdldFN0cmluZ1RpbWVCeVRpbWVTdGFtcCh0U3RhbXApICsgIl0iOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgbmV3IGx6LmFjdGl2aXR5TGlzdFJlc3RyaWN0ZWRSb29tQXBwbHlGb3JNdXRlT2ZmKHRoaXMuX2xpc3QuX2xpc3QseworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOnR4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6dGhpcy5fbGlzdC53aWR0aC0xNCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmNsOnJjbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdFN0YW1wOnRTdGFtcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5fbGlzdC5fbGlzdC5zY3JvbGxUb01heCgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgXV0+ICAgICAgICAgICAgICAgICAgICAgIAorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iYWRkV2hpdGVib2FyZFJlcXVlc3QiIGFyZ3M9InJjbCx0U3RhbXAiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIGlmIChyY2wucHVibGljU0lEID09IGNhbnZhcy5wdWJsaWNTSUQpIHsKKyAgICAgICAgICAgICAgICB2YXIgdHh0ID0gIjxiPiIrY2FudmFzLmdldExhYmVsTmFtZSgxMzYyKSsiPC9iPiAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5nZXRMYWJlbE5hbWUoNjk0KSArICIgWyIgKyBnZXRTdHJpbmdUaW1lQnlUaW1lU3RhbXAodFN0YW1wKSArICJdIjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdmFyIHR4dCA9IHJjbC5maXJzdG5hbWUgKyAiICIgKyByY2wubGFzdG5hbWUgKyAiICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWyIgKyByY2wudXNlcm5hbWUgKyAiXSAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzLmdldExhYmVsTmFtZSg2OTQpICsgIiBbIiArIGdldFN0cmluZ1RpbWVCeVRpbWVTdGFtcCh0U3RhbXApICsgIl0iOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgbmV3IGx6LmFjdGl2aXR5TGlzdFJlc3RyaWN0ZWRSb29tV2hpdGVib2FyZCh0aGlzLl9saXN0Ll9saXN0LHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTp0eHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOnRoaXMuX2xpc3Qud2lkdGgtMTQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJjbDpyY2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRTdGFtcDp0U3RhbXAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuX2xpc3QuX2xpc3Quc2Nyb2xsVG9NYXgoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIF1dPiAgICAgICAgICAgICAgICAgICAgICAKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImFkZEF1ZGlvUmVxdWVzdCIgYXJncz0icmNsLHRTdGFtcCI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgaWYgKHJjbC5wdWJsaWNTSUQgPT0gY2FudmFzLnB1YmxpY1NJRCkgeworICAgICAgICAgICAgICAgIHZhciB0eHQgPSAiPGI+IitjYW52YXMuZ2V0TGFiZWxOYW1lKDEzNjIpKyI8L2I+ICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzLmdldExhYmVsTmFtZSgxMDgwKSArICIgWyIgKyBnZXRTdHJpbmdUaW1lQnlUaW1lU3RhbXAodFN0YW1wKSArICJdIjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdmFyIHR4dCA9IHJjbC5maXJzdG5hbWUgKyAiICIgKyByY2wubGFzdG5hbWUgKyAiICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWyIgKyByY2wudXNlcm5hbWUgKyAiXSAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzLmdldExhYmVsTmFtZSgxMDgwKSArICIgWyIgKyBnZXRTdHJpbmdUaW1lQnlUaW1lU3RhbXAodFN0YW1wKSArICJdIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgbmV3IGx6LmFjdGl2aXR5TGlzdFJlc3RyaWN0ZWRSb29tQSh0aGlzLl9saXN0Ll9saXN0LHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOnR4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDp0aGlzLl9saXN0LndpZHRoLTE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJjbDpyY2wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdFN0YW1wOnRTdGFtcAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuX2xpc3QuX2xpc3Quc2Nyb2xsVG9NYXgoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICBdXT4gICAgICAgICAgICAgICAgICAKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImFkZFZpZGVvUmVxdWVzdCIgYXJncz0icmNsLHRTdGFtcCI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgaWYgKHJjbC5wdWJsaWNTSUQgPT0gY2FudmFzLnB1YmxpY1NJRCkgeworICAgICAgICAgICAgICAgIHZhciB0eHQgPSAiPGI+IitjYW52YXMuZ2V0TGFiZWxOYW1lKDEzNjIpKyI8L2I+ICIgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzLmdldExhYmVsTmFtZSgxMDgxKSArICIgWyIgKyBnZXRTdHJpbmdUaW1lQnlUaW1lU3RhbXAodFN0YW1wKSArICJdIjsKKyAgICAgICAgICAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHZhciB0eHQgPSByY2wuZmlyc3RuYW1lICsgIiAiICsgcmNsLmxhc3RuYW1lICsgIiAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlsiICsgcmNsLnVzZXJuYW1lICsgIl0gIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5nZXRMYWJlbE5hbWUoMTA4MSkgKyAiIFsiICsgZ2V0U3RyaW5nVGltZUJ5VGltZVN0YW1wKHRTdGFtcCkgKyAiXSI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIG5ldyBsei5hY3Rpdml0eUxpc3RSZXN0cmljdGVkUm9vbVYodGhpcy5fbGlzdC5fbGlzdCx7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6dHh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDp0aGlzLl9saXN0LndpZHRoLTE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByY2w6cmNsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0U3RhbXA6dFN0YW1wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLl9saXN0Ll9saXN0LnNjcm9sbFRvTWF4KCk7CisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iYWRkQXVkaW9BbmRWaWRlb1JlcXVlc3QiIGFyZ3M9InJjbCx0U3RhbXAiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIGlmIChyY2wucHVibGljU0lEID09IGNhbnZhcy5wdWJsaWNTSUQpIHsKKyAgICAgICAgICAgICAgICB2YXIgdHh0ID0gIjxiPiIrY2FudmFzLmdldExhYmVsTmFtZSgxMzYyKSsiPC9iPiAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMuZ2V0TGFiZWxOYW1lKDY5NSkgKyAiIFsiICsgZ2V0U3RyaW5nVGltZUJ5VGltZVN0YW1wKHRTdGFtcCkgKyAiXSI7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHZhciB0eHQgPSByY2wuZmlyc3RuYW1lICsgIiAiICsgcmNsLmxhc3RuYW1lICsgIiAiICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlsiICsgcmNsLnVzZXJuYW1lICsgIl0gIiArCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5nZXRMYWJlbE5hbWUoNjk1KSArICIgWyIgKyBnZXRTdHJpbmdUaW1lQnlUaW1lU3RhbXAodFN0YW1wKSArICJdIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgbmV3IGx6LmFjdGl2aXR5TGlzdFJlc3RyaWN0ZWRSb29tQVYodGhpcy5fbGlzdC5fbGlzdCx7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6dHh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDp0aGlzLl9saXN0LndpZHRoLTE0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByY2w6cmNsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0U3RhbXA6dFN0YW1wCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLl9saXN0Ll9saXN0LnNjcm9sbFRvTWF4KCk7CisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iaGlkZUFjdGl2aXR5T2JqIiBhcmdzPSJtZXNzYWdlT2JqIj4KKyAgICAJPCFbQ0RBVEFbCisgICAgCQorICAgIAkgICAgZm9yICh2YXIgaT0wO2k8dGhpcy5fbGlzdC5fbGlzdC5zdWJ2aWV3cy5sZW5ndGg7aSsrKSB7CisgICAgCSAgICAJCisgICAgCSAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImhpZGVBY3Rpdml0eU9iajo6ICIsdGhpcy5fbGlzdC5fbGlzdC5zdWJ2aWV3c1tpXS50U3RhbXAsbWVzc2FnZU9iai5tZXNzYWdlWzJdKTsKKyAgICAJICAgIAkKKyAgICAJICAgIAlpZiAodGhpcy5fbGlzdC5fbGlzdC5zdWJ2aWV3c1tpXS50U3RhbXAgPT0gbWVzc2FnZU9iai5tZXNzYWdlWzJdKSB7CisgICAgCSAgICAJCQorICAgIAkgICAgCQl0aGlzLl9saXN0Ll9saXN0LnN1YnZpZXdzW2ldLmNsb3NlSXRlbSgpOworICAgIAkgICAgCQkKKyAgICAJICAgIAkJcmV0dXJuOworICAgIAkgICAgCQkKKyAgICAJICAgIAl9CisgICAgCSAgICAJCisgICAgCSAgICB9CisgICAgCQorICAgIAldXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8dmlldyBuYW1lPSJfbGlzdCIgeT0iMjEiIGhlaWdodD0iMTc5IiBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ21haW5CYWNrZ3JvdW5kQ29sb3InKSB9IgorICAgIAkgIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoIH0iIGNsaXA9InRydWUiPgorICAgICAgICAKKyAgICAgICAgPHZpZXcgbmFtZT0iX2xpc3QiPgorICAgICAgICAgICAgCisgICAgICAgICAgICA8bWV0aG9kIG5hbWU9InNjcm9sbFRvTWF4Ij4KKyAgICAgICAgICAgICAgICA8IVtDREFUQVsKKwkJCSAgICAgICAgaWYodGhpcy5oZWlnaHQ+cGFyZW50LmhlaWdodCl7CisJCQkgICAgICAgICAgICBwYXJlbnQubXlzY3JvbGxiYXIuc2Nyb2xsdGFyZ2V0LnNldEF0dHJpYnV0ZShwYXJlbnQubXlzY3JvbGxiYXIuc2Nyb2xsYXR0ciwocGFyZW50LmhlaWdodC10aGlzLmhlaWdodCkpOworCQkJICAgICAgICB9CisJCSAgICAgICAgXV0+CisgICAgICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPHNpbXBsZWxheW91dCBuYW1lPSJfbGF5b3V0IiBheGlzPSJ5IiBzcGFjaW5nPSIxIiAvPgorICAgICAgICAgICAgCisgICAgICAgIDwvdmlldz4KKyAgICAgICAgCisgICAgICAgIDxvbV92c2Nyb2xsYmFyIG5hbWU9Im15c2Nyb2xsYmFyIiAvPgorICAgICAgICAKKyAgICA8L3ZpZXc+CisgICAgCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvZmxleGlibGVDb25mZXJlbmNlUm9vbS9hY3Rpdml0eWxpc3QvbGlicmFyeS5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvZmxleGlibGVDb25mZXJlbmNlUm9vbS9hY3Rpdml0eWxpc3QvbGlicmFyeS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDA0NmQ5MgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tL2FjdGl2aXR5bGlzdC9saWJyYXJ5Lmx6eApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCQorCTwhLS0gRmFtRmFtIEljb24gU2V0IC0tPgorICAgIDxyZXNvdXJjZSBuYW1lPSJhbGxvd19va19pY29uX3JzYyIgc3JjPSJyZXNvdXJjZXMvdGljay5wbmciIC8+CisgICAgPCEtLSBGYW1GYW0gSWNvbiBTZXQgLS0+CisgICAgPHJlc291cmNlIG5hbWU9ImFsbG93X2RlbnlfaWNvbl9yc2MiIHNyYz0icmVzb3VyY2VzL2Nyb3NzLnBuZyIgLz4KKyAgCisgICAgPGluY2x1ZGUgaHJlZj0iYWN0aXZpdHlMaXN0Lmx6eCIgLz4KKwkKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tL2FjdGl2aXR5bGlzdC9yZXNvdXJjZXMvY3Jvc3MucG5nIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vYWN0aXZpdHlsaXN0L3Jlc291cmNlcy9jcm9zcy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTUxNGQ1MQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tL2FjdGl2aXR5bGlzdC9yZXNvdXJjZXMvY3Jvc3MucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tL2FjdGl2aXR5bGlzdC9yZXNvdXJjZXMvdGljay5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvZmxleGlibGVDb25mZXJlbmNlUm9vbS9hY3Rpdml0eWxpc3QvcmVzb3VyY2VzL3RpY2sucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5OTI1YTAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvZmxleGlibGVDb25mZXJlbmNlUm9vbS9hY3Rpdml0eWxpc3QvcmVzb3VyY2VzL3RpY2sucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tL2FwcG9pbnRtZW50Tm90aWZpY2F0aW9uUG9wVXAubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vYXBwb2ludG1lbnROb3RpZmljYXRpb25Qb3BVcC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdiMTFjZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tL2FwcG9pbnRtZW50Tm90aWZpY2F0aW9uUG9wVXAubHp4CkBAIC0wLDAgKzEsODUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzxjbGFzcyBuYW1lPSJhcHBvaW50bWVudE5vdGlmaWNhdGlvblBvcFVwIiBleHRlbmRzPSJndWlQcmVzZW50ZXIiIGxhYmVsaWQ9IjExNDQiIHk9IjMwIgorICAgIGlzZHJhZ2FibGU9ImZhbHNlIiBtaW5pbWl6YWJsZT0iZmFsc2UiIG1heGltaXphYmxlPSJmYWxzZSIgZnVsbFRvb2xCYXI9InRydWUiIAorICAgIHJlc2l6ZWFibGU9ImZhbHNlIiB3aWR0aD0iMjgwIiBoZWlnaHQ9IjI4MCIgeD0iJG9uY2V7IHBhcmVudC53aWR0aC10aGlzLndpZHRoLTEwIH0iPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0icm9vbW9iaiIgdmFsdWU9Im51bGwiIC8+CisJCisJPGhhbmRsZXIgbmFtZT0ib25pbml0IiA+CisJCXRoaXMuZ2V0QXBwb2ludE1lbnRBbmRUaW1lWm9uZXMuZG9DYWxsKCk7CisJPC9oYW5kbGVyPgorCQorCTwhLS0gUmV0cmlldmluZyBBcHBvaW50bWVudGRhdGEgZm9yIE1lZXRpbmcgLS0+CisJPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iZ2V0QXBwb2ludE1lbnRBbmRUaW1lWm9uZXMiIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiAKKwkJZnVuY25hbWU9ImNvbmZlcmVuY2VzZXJ2aWNlLmdldEFwcG9pbnRNZW50QW5kVGltZVpvbmVzIiA+ICAgCisJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC5yb29tb2JqLnJvb21zX2lkOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCTxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgkKKwkJICAgIDwhW0NEQVRBWworCQkgICAgCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJnZXRBcHBvaW50TWVudEFuZFRpbWVab25lcyAxOiAiLHBhcmVudC5yb29tb2JqLnJvb21zX2lkKTsKKwkJICAgIAlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZ2V0QXBwb2ludE1lbnRBbmRUaW1lWm9uZXMgMjogIix2YWx1ZSk7CisJCSAgICAJCisJCSAgICAJaWYodmFsdWUhPW51bGwpeworCQkgICAgCQkKKwkJICAgIAkJcGFyZW50Ll9hcHBzdGFydC5zZXRBdHRyaWJ1dGUoJ3RleHQnLHZhbHVlLnN0YXJ0KTsKKwkJICAgIAkJcGFyZW50Ll9hcHBlbmQuc2V0QXR0cmlidXRlKCd0ZXh0Jyx2YWx1ZS5lbmQpOworCQkgICAgCQlwYXJlbnQuX3RpbWVab25lLnNldEF0dHJpYnV0ZSgndGV4dCcsdmFsdWUudGltZVpvbmUpOworCQkgICAgCQkKKwkJICAgIAkJcGFyZW50Ll9hcHBOYW1lLnNldEF0dHJpYnV0ZSgndGV4dCcsdmFsdWUuYXBwb2ludG1lbnQuYXBwb2ludG1lbnROYW1lKTsKKwkJICAgIAkJcGFyZW50Ll9hcHBEZXNjci5fYXBwRGVzY3Iuc2V0QXR0cmlidXRlKCd0ZXh0Jyx2YWx1ZS5hcHBvaW50bWVudC5hcHBvaW50bWVudERlc2NyaXB0aW9uKTsKKwkJICAgIAkKKwkJICAgIAkJcGFyZW50Ll9jcmVhdGVkYnkuc2V0QXR0cmlidXRlKCd0ZXh0Jyx2YWx1ZS5hcHBvaW50bWVudC51c2VySWQuZmlyc3RuYW1lICsgJyAnICsgdmFsdWUuYXBwb2ludG1lbnQudXNlcklkLmxhc3RuYW1lICk7CisJCSAgICAJCQorCQkgICAgCX0KKwkJICAgIAkKKwkJICAgIF1dPgkgICAgICAgIAkgICAgICAgICAgCQkJCQorCQk8L2hhbmRsZXI+CQorCTwvbmV0UmVtb3RlQ2FsbEhpYj4gCisJCisJPGxhYmVsVGV4dCBuYW1lPSJhcHBOYW1lIiB5PSIyNCIgbGFiZWxpZD0iMTE0NSIgd2lkdGg9IjUwIi8+CisJPGxhYmVsVGV4dCBuYW1lPSJfYXBwTmFtZSIgeD0iNzUiIHk9IjI0IiB3aWR0aD0iMjAwIiBmb250c3R5bGU9ImJvbGQiIC8+IAorCQorCTxsYWJlbFRleHQgbmFtZT0iYXBwRGVzY3IiIHk9IjQ2IiBsYWJlbGlkPSIxMTQ2IiB3aWR0aD0iNTAiLz4KKwk8dmlldyBuYW1lPSJfYXBwRGVzY3IiIHg9Ijc1IiB5PSI0NiIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiIGJnY29sb3I9IjB4RkZGRkZGIiBjbGlwPSJ0cnVlIj4KKwkJPGxhYmVsVGV4dCBuYW1lPSJfYXBwRGVzY3IiIHk9IjI0IiB3aWR0aD0iMTg0IiBtdWx0aWxpbmU9InRydWUiIC8+IAorCQk8b21fdnNjcm9sbGJhciAvPgorCTwvdmlldz4KKwkKKwk8bGFiZWxUZXh0IG5hbWU9Imxfc2RhdHVtIiBsYWJlbGlkPSIxMTQzIiB5PSIxNTAiIHdpZHRoPSI1MCIgLz4KKwk8bGFiZWxUZXh0IG5hbWU9Il90aW1lWm9uZSIgeD0iNzUiIHk9IjE1MCIgd2lkdGg9IjIwMCIgcmVzaXplPSJmYWxzZSIgYmdjb2xvcj0iMHhGRkZGRkYiIGZnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignbWVudVRleHRDb2xvcicpIH0iLz4gCisJCisJPGxhYmVsVGV4dCBuYW1lPSJhcHBzdGFydGxhYmVsIiB5PSIxNzAiIGxhYmVsaWQ9IjU3MCIgd2lkdGg9IjUwIi8+CisJPGxhYmVsVGV4dCBuYW1lPSJfYXBwc3RhcnQiIHg9Ijc1IiB5PSIxNzAiIHdpZHRoPSIyMDAiIHJlc2l6ZT0iZmFsc2UiIGJnY29sb3I9IjB4RkZGRkZGIiBmZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ21lbnVUZXh0Q29sb3InKSB9Ii8+IAorCQorCTxsYWJlbFRleHQgbmFtZT0ibF9lZGF0dW0iIGxhYmVsaWQ9IjU3MSIgeT0iMTkwIiB3aWR0aD0iNTAiICAvPgorCTxsYWJlbFRleHQgbmFtZT0iX2FwcGVuZCIgeT0iMTkwIiB4PSI3NSIgd2lkdGg9IjIwMCIgdGV4dD0iIiByZXNpemU9ImZhbHNlIiBiZ2NvbG9yPSIweEZGRkZGRiIgZmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdtZW51VGV4dENvbG9yJykgfSIvPiAJIAorCQorCTxsYWJlbFRleHQgbmFtZT0ibF9jcmVhdGVkYnkiIGxhYmVsaWQ9IjExNDciIHk9IjIxMCIgd2lkdGg9IjUwIiAgLz4KKwk8bGFiZWxUZXh0IG5hbWU9Il9jcmVhdGVkYnkiIHk9IjIxMCIgeD0iNzUiIHdpZHRoPSIyMDAiIHRleHQ9IiIgcmVzaXplPSJmYWxzZSIgYmdjb2xvcj0iMHhGRkZGRkYiIGZnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignbWVudVRleHRDb2xvcicpIH0iLz4gCSAgIAorCQorICAgIDxzaW1wbGVMYWJlbEJ1dHRvbiBsYWJlbGlkPSIxMTMwIiB3aWR0aD0iMTAwIiB4PSIkb25jZXsgcGFyZW50LndpZHRoLTEwNSB9IiAKKyAgICAgICAgICAgeT0iJG9uY2V7IHBhcmVudC5oZWlnaHQtMjQgfSIgb25jbGljaz0idGhpcy5wYXJlbnQuY2xvc2UoKTsiIC8+CSAgICAgICAgICAgCQorCQorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vYmFzZUNvbmZlcmVuY2VSb29tLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tL2Jhc2VDb25mZXJlbmNlUm9vbS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVjYWU5NAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tL2Jhc2VDb25mZXJlbmNlUm9vbS5sengKQEAgLTAsMCArMSwxMzMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgICAgICAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisgICAgCis8Y2xhc3MgbmFtZT0iZHRtZkJ1dHRvbiIgZXh0ZW5kcz0iYnV0dG9uIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiID4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImR0bWYiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIvPgorICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICBjYWxsRFRNRkJ1dHRvbih0aGlzLHRoaXMudGV4dCk7CisgICAgPC9oYW5kbGVyPgorICAgIDxtZXRob2QgbmFtZT0iZG9OZXh0U2lwTnVtYmVyIj4KKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImRvTmV4dFNpcE51bWJlciAiLHRoaXMudGV4dCk7CisgICAgPC9tZXRob2Q+Cis8L2NsYXNzPgorICAgIAorPGNsYXNzIG5hbWU9ImRlYnVnUGluQ29kZSIgZXh0ZW5kcz0ibGFiZWxFeHBsb3JlckJveCIgdGl0bGU9IkVudGVyIFBJTiBDb2RlIgorICAgIGRvY2tpbmc9InRydWUiIHJlc2l6ZWFibGU9ImZhbHNlIiBjbG9zYWJsZT0idHJ1ZSIgd2lkdGg9IjEwMCIgeD0iMTQiIGhlaWdodD0iMTIwIj4KKyAgICAKKyAgICAKKyAgICA8dmlldyB5PSIyNCI+CisgICAgICAgIAorICAgICAgICA8ZHRtZkJ1dHRvbiB0ZXh0PSIxIiB4PSIyMCIgZHRtZj0iMSIvPiAKKyAgICAgICAgICAgIDxkdG1mQnV0dG9uIHRleHQ9IjIiIHg9IjQwIiBkdG1mPSIyIi8+IAorICAgICAgICAgICAgICAgIDxkdG1mQnV0dG9uIHRleHQ9IjMiIHg9IjYwIiBkdG1mPSIzIi8+CisgICAgICAgICAgICAgICAgCisgICAgICAgIDxkdG1mQnV0dG9uIHRleHQ9IjQiIHg9IjIwIiB5PSIyMCIgZHRtZj0iNCIvPiAKKyAgICAgICAgICAgIDxkdG1mQnV0dG9uIHRleHQ9IjUiIHg9IjQwIiB5PSIyMCIgZHRtZj0iNSIvPiAKKyAgICAgICAgICAgICAgICA8ZHRtZkJ1dHRvbiB0ZXh0PSI2IiB4PSI2MCIgeT0iMjAiIGR0bWY9IjYiLz4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgPGR0bWZCdXR0b24gdGV4dD0iNyIgeD0iMjAiIHk9IjQwIiBkdG1mPSI3Ii8+IAorICAgICAgICAgICAgPGR0bWZCdXR0b24gdGV4dD0iOCIgeD0iNDAiIHk9IjQwIiBkdG1mPSI4Ii8+IAorICAgICAgICAgICAgICAgIDxkdG1mQnV0dG9uIHRleHQ9IjkiIHg9IjYwIiB5PSI0MCIgZHRtZj0iOSIvPgorICAgICAgICAgICAgICAgIAorICAgICAgICA8ZHRtZkJ1dHRvbiB0ZXh0PSIxMCIgeD0iMjAiIHk9IjYwIiBkdG1mPSIxMCIvPgorICAgICAgICAKKyAgICA8L3ZpZXc+CisgICAgCisgICAgCis8L2NsYXNzPgorCis8Y2xhc3MgbmFtZT0iYmFzZUNvbmZlcmVuY2VSb29tIiBleHRlbmRzPSJiYXNlQ29udGVudFZpZXciIGRlc3Ryb3lCeU1ldGhvZD0idHJ1ZSIgPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0icm9vbW9iaiIgdmFsdWU9Im51bGwiIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJtZWV0aW5nVGltZXIiIHZhbHVlPSJudWxsIiAvPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgX21haW5TY3JvbGxCYXIuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJyb29tb2JqOiAiLHRoaXMucm9vbW9iaik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhbnZhcy5jdXJyZW50Um9vbU9iamVjdCA9IHRoaXMucm9vbW9iajsKKyAgICAgICAgICAgIGNhbnZhcy5zZW5kVmlhTG9jYWxDb25uZWN0aW9uKGNhbnZhcy5ydG1wX2xjX25hbWUsInNldFJvb21WYWx1ZXMiLCBbdGhpcy5yb29tb2JqLnJvb210eXBlLnJvb210eXBlc19pZCx0aGlzLnJvb21vYmoucm9vbXNfaWQsdGhpcy5yb29tb2JqXSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICh0aGlzLnJvb21vYmouaXNDbG9zZWQpIHsKKyAgICAgICAgICAgICAgICBjYW52YXMucm9vbUNsb3NlZCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAodGhpcy5yb29tb2JqLndhaXRGb3JSZWNvcmRpbmcpIHsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBuZXcgbHouZXJyb3JEaWFsb2coY2FudmFzLHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsaWQ6MTMxNiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ydGV4dDpjYW52YXMuZ2V0TGFiZWxOYW1lKDEzMTUpCisgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgY2FudmFzLmN1cnJlbnRSb29tT2JqZWN0ID0gdGhpcy5yb29tb2JqOworICAgICAgICAgICAgY2FudmFzLl9tYWluYmdjb250ZW50TmF2aS5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsMCk7CisgICAgICAgICAgICBjYW52YXMuc2V0QXR0cmlidXRlKCduYXZpSGVpZ2h0RGVsdGEnLDI4KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYodGhpcy5fY2hhdFBhbmVsU3RyaWN0KXsKKyAgICAgICAgICAgIAl2YXIgaGlkZUNoYXQgPSB0aGlzLnJvb21vYmouaGlkZUNoYXQgIT0gbnVsbCAmJiB0aGlzLnJvb21vYmouaGlkZUNoYXQ7CisJCQkJdGhpcy5fY2hhdFBhbmVsU3RyaWN0LnNldEF0dHJpYnV0ZSgndmlzaWJsZScsICFoaWRlQ2hhdCk7CisgICAgICAgICAgICAgICAgaWYgKGhpZGVDaGF0KSB7ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NoYXRQYW5lbFN0cmljdC5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsIDI4KTsgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9ICAgICAgICAgICAgCisgICAgICAgIF1dPgorICAgIDwvaGFuZGxlcj4KKyAgICAKKwk8aGFuZGxlciBuYW1lPSJvbmtleWRvd24iIHJlZmVyZW5jZT0ibHouS2V5cyIgYXJncz0ia2V5Q29kZSI+CisJPCFbQ0RBVEFbCisJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbmtleWRvd246OiBrZXlDb2RlID0gIiwga2V5Q29kZSk7CisJCS8vIGNvbW1vbiBrZXlzIGFyZSBwcm9jZXNzZWQgZmlyc3RseQorCQlpZiAoY2FudmFzLkFSUkFOR0VfV0lORE9XU19LRVkgPT0ga2V5Q29kZSkgeworCQkJY2FudmFzLnNlbmRWaWFMb2NhbENvbm5lY3Rpb24oY2FudmFzLnZpZF9sY19uYW1lLCAiYXJyYW5nZVdpbmRvd3MiLCBudWxsKTsKKwkJCXJldHVybjsKKwkJfQorCQlpZiAoY2FudmFzLkdJVkVfRVhDTFVTSVZFX0FVRElPX0tFWSA9PSBrZXlDb2RlKSB7CisJCQlpZiAoY2FudmFzLmlzbW9kZXJhdG9yIHx8IGNhbnZhcy5pc0FsbG93ZWRUb0dpdmVFeGNsdXNpdmVBdWRpbykgeworCQkJCWNhbnZhcy50aGlzaGliLmdpdmVFeGNsdXNpdmVBdWRpby5zZXRFeGNsdXNpdmVBdWRpbyhjYW52YXMucHVibGljU0lEKTsKKwkJCX0gZWxzZSB7CisJCQkJbmV3IGx6LnJwY0Vycm9yRGlhbG9nKGNhbnZhcy5tYWluX2NvbnRlbnQuX2NvbnRlbnQuaW5uZXIse2Vycm9yaWQ6LTU0fSk7CisJCQl9CisJCQlyZXR1cm47CisJCX0KKwkJaWYgKGNhbnZhcy5NVVRFX0FVRElPX0tFWSA9PSBrZXlDb2RlKSB7CisJCQljYW52YXMuX3ZpZGVvY29udGFpbmVyLl92aWRlb3ZpZXdjb250ZW50Lm11dGVTb3VuZChjYW52YXMucHVibGljU0lELCAhY2FudmFzLm1pY011dGVkKTsKKwkJCXJldHVybjsKKwkJfQorCV1dPgorCTwvaGFuZGxlcj4KKworICAgIDxzY3JlZW5TaGFyaW5nQWRhcHRlciBuYW1lPSJfc2NyZWVuU2hhcmluZ0FkYXB0ZXIiIC8+CisgICAgCisgICAgPGJhc2VUYWJDaGF0UGFuZWwgbmFtZT0iX2NoYXRQYW5lbFN0cmljdCIgbGFiZWxpZD0iNjE2IgorICAgICAgIGhlaWdodD0iMjAwIiB4PSIkeyBwYXJlbnQuX3NpZGVQYW5lbC53aWR0aCB9IiAgCisgICAgICAgeT0iJHsgY2FudmFzLmhlaWdodCAtICh0aGlzLmhlaWdodCkgLSAoKGNhbnZhcy5jdXJyZW50Um9vbU9iai5oaWRlVG9wQmFyKSA/IDAgOiAyOCkgfSIgCisgICAgICAgd2lkdGg9IiR7IGNhbnZhcy53aWR0aCAtIHBhcmVudC5fc2lkZVBhbmVsLndpZHRoIH0iIGlzb3Blbj0iJHsgIWNhbnZhcy5jdXJyZW50Um9vbU9iai5jaGF0T3BlbmVkIH0iIC8+CisgICAgICAgPCEtLSBpc29wZW4gbmVlZCB0byBiZSByZXZlcnRlZCwgd2lsbCBiZSB0b2dnbGVkIC0tPgorICAgICAgIAorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tL2Jhc2VSb29tSW5uZXJMaXN0Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tL2Jhc2VSb29tSW5uZXJMaXN0Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDY4NDRiCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vYmFzZVJvb21Jbm5lckxpc3QubHp4CkBAIC0wLDAgKzEsNDAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzwhLS0KKworICAgIFRoaXMgY2xhc3MgaG9sZCBhIGJ1bmNoIG1ldGhvZCB0aGF0IGlzIHNoYXJlZCBiZXR3ZWVuIHRoZSAKKyAgICBVc2VyIExpc3Qgb2YgZGlmZmVyZW50IFJvb20gVHlwZXMKKworIC0tPgorCis8Y2xhc3MgbmFtZT0iYmFzZVJvb21Jbm5lckxpc3QiIGV4dGVuZHM9InZpZXciID4KKwkKKyAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIHRoaXMuaW5pdExpc3QoKTsKKyAgICAgICAgXV0+CisgICAgPC9oYW5kbGVyPgorICAgIAorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vZmxleGlibGVDb25mZXJlbmNlUm9vbS5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvZmxleGlibGVDb25mZXJlbmNlUm9vbS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTRlMDYzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vZmxleGlibGVDb25mZXJlbmNlUm9vbS5sengKQEAgLTAsMCArMSwxNjEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzxjbGFzcyBuYW1lPSJmbGV4aWJsZUNvbmZlcmVuY2VSb29tIiBleHRlbmRzPSJiYXNlQ29uZmVyZW5jZVJvb20iPgorCisgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAJCisgICAgCWlmICh0aGlzLnJvb21vYmouaGlkZVRvcEJhciA9PSBudWxsIHx8ICF0aGlzLnJvb21vYmouaGlkZVRvcEJhcikgeworICAgICAgICAgICAgbmV3IGx6LmNvbmZlcmVuY2VNZW51YmFyKGNhbnZhcy5fY29uZmVyZW5jZW1lbnUpOworICAgICAgICAgICAgY2FudmFzLl9jb25mZXJlbmNlbWVudS5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCd2aXNpYmxlJyk7CisgICAgCX0gZWxzZSB7CisgICAgCQljYW52YXMuX21haW5iZ2NvbnRlbnROYXZpLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywwKTsKKyAgICAgICAgICAgIGNhbnZhcy5zZXRBdHRyaWJ1dGUoJ25hdmlIZWlnaHQnLDApOworICAgICAgICAgICAgY2FudmFzLnNldEF0dHJpYnV0ZSgnbmF2aUhlaWdodERlbHRhJywwKTsKKyAgICAgICAgICAgIGNhbnZhcy5fY29uZmVyZW5jZW1lbnUuc2V0QXR0cmlidXRlKCd2aXNpYmlsaXR5JywnaGlkZGVuJyk7CisgICAgICAgICAgICBjYW52YXMuX21haW5iZ2NvbnRlbnROYXZpLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ2hpZGRlbicpOyAgICAgICAgICAgIAorICAgIAl9ICAgIAkKKyAgICAJCisgICAgICAgIG5ldyBsei5tb2RlcmF0aW9uUGFuZWwoY2FudmFzLl9tb2RlcmF0b3JtZW51LHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTonX21vZGVyYXRpb25QYW5lbCcsYWxpZ246J3JpZ2h0JywKKyAgICAgICAgICAgICAgICAgICAgYWxsb3dVc2VyUXVlc3Rpb25zOnRoaXMucm9vbW9iai5hbGxvd1VzZXJRdWVzdGlvbnMsCisgICAgICAgICAgICAgICAgICAgIHJvb21OYW1lOnRoaXMucm9vbW9iai5uYW1lCisgICAgICAgICAgICAgICAgfSk7ICAgICAgICAgIAorICAgICAgICAKKyAgICAgICAgaWYocm9vbW9iai5hcHBvaW50bWVudCl7CisgICAgICAgICAgICBjYW52YXMuYXBwb2ludG1lbnROb3RpZmljYXRpb25Qb3BVcCA9IAorICAgICAgICAgICAgCW5ldyBsei5hcHBvaW50bWVudE5vdGlmaWNhdGlvblBvcFVwKGNhbnZhcy5jb25mZXJlbmNlVmlldyx7IAorICAgICAgICAgICAgCQkJbmFtZTonYXBwRGV0YWlsJywgcm9vbW9iajp0aGlzLnJvb21vYmogfSk7ICAgIAorICAgICAgICB9IGVsc2V7CisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgibm8gYXBwb2ludGVkIG1lZXRpbmciKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKHRoaXMucm9vbW9iai5pc0RlbW9Sb29tKSB7CisgICAgICAgICAgICBpZiAodGhpcy5yb29tb2JqLmRlbW9UaW1lICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53YXJuKCJUSElTIElTIEEgREVNTyBST09NIFRIQVQgU0hPVUxEIENMT1NFIEFGVEVSIFNFQzogIix0aGlzLnJvb21vYmouZGVtb1RpbWUpOworICAgICAgICAgICAgICAgIHRoaXMubWVldGluZ1RpbWVyID0gbmV3IGx6Lm1lZXRpbmdUaW1lcihjYW52YXMse3JlZk9iajp0aGlzLHJvb21vYmo6dGhpcy5yb29tb2JqfSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGNhbnZhcy5jdXJyZW50QmFzZUNvbmZlcmVuY2VSb29tID0gdGhpczsKKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib250YWJjb250ZW50bGVhdmUiPgorICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiIyMjIyMjIyMjIyMjIyMjIyMgb250YWJjb250ZW50bGVhdmU6Iix0aGlzKTsKKyAgICAgICAgCisgICAgICAgIC8vY2xvc2UgYWxsIHNjcmVlbnNoYXJpbmdzLCB2aWRlb3MgYW5kIGNsb3NlcyB0aGUgcnRtcCBjb25uZWN0aW9uIGluIHRoZSByZW1vdGUgaG9zdAorICAgICAgICB0aGlzLl9zY3JlZW5TaGFyaW5nQWRhcHRlci5jbG9zZUFsbFNjcmVlblNoYXJpbmdzKCk7CisgICAgICAgIAorICAgICAgICAvL3Jlc2V0IHRoZSByaWdodCB0byBkcmF3IG9uIFdIaXRlYm9hcmQgYXMgdGhlIFJvb21DbGllbnQgT2JqZWN0IHdpbGwgYmUgZGVzdHJveWVkIGFsc28KKyAgICAgICAgLy9vbiBzZXJ2ZXItU2lkZSB0aGUgY2FuRHJhdyBzdGF0dXMgd2lsbCBiZSBmYWxzZSBhZ2FpbiB3aGVuIHlvdSByZWxvZ2luIHRoZSBzYW1lIHJvb20KKyAgICAgICAgY2FudmFzLmlzQWxsb3dlZFRvRHJhdyA9IHRydWU7CisgICAgICAgIAorICAgICAgICBfbWFpblNjcm9sbEJhci5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgIAorICAgICAgICAvL3Jlc2V0IHJpZ2h0cworICAgICAgICBjYW52YXMuaXNBbGxvd2VkVG9HaXZlRXhjbHVzaXZlQXVkaW8gPSBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIGlmIChjYW52YXMuX3ZpZGVvY29udGFpbmVyIT1udWxsKXsKKyAgICAgICAgICAgIGNhbnZhcy5fdmlkZW9jb250YWluZXIucmVzZXRBbGxWYWx1ZXMoKTsKKyAgICAgICAgICAgIGNhbnZhcy5fdmlkZW9jb250YWluZXIgPSBudWxsOworICAgICAgICB9CisgICAgICAgIGlmIChjYW52YXMuX2NoYXRjb250ZW50IT1udWxsKXsKKyAgICAgICAgICAgIGNhbnZhcy5fY2hhdGNvbnRlbnQgPSBudWxsOworICAgICAgICB9CisgICAgICAgIGlmIChjYW52YXMuX215bW9kIT1udWxsKXsKKyAgICAgICAgICAgIGNhbnZhcy5fbXltb2QgPSBudWxsOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAodGhpcy5tZWV0aW5nVGltZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgdGhpcy5tZWV0aW5nVGltZXIuY2xvc2UoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGNhbnZhcy5fZHJhd2FyZWEubGV0dGVyT2JqZWN0SXNBY3RpdmUpeworICAgICAgICAgICAgY2FudmFzLl9kcmF3YXJlYS5jdXJyZW50bGV0dGVyT2JqLmRlc3Ryb3koKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGNhbnZhcy5jdXJyZW50RmlsZUV4cGxvcmVyICE9IG51bGwpIHsKKyAgICAgICAgCWNhbnZhcy5jdXJyZW50RmlsZUV4cGxvcmVyID0gbnVsbDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGNhbnZhcy5jdXJyZW50QWN0aXZpdHlMaXN0ICE9IG51bGwpIHsKKyAgICAgICAgCWNhbnZhcy5jdXJyZW50QWN0aXZpdHlMaXN0ID0gbnVsbDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy9yZXNldCBpZiB0aGUgdXNlciB3YXMgY29ubmVjdGVkIHRvIGFueSBzbGF2ZQorICAgICAgICBjYW52YXMuaXNTbGF2ZUhvc3RlZCA9IGZhbHNlOworICAgICAgICAKKyAgICAgICAgLy9AZGVwcmVjYXRlZCB3ZSB3aWxsIG5vdCB1c2Ugb2xkIHNjcmVlbiBzaGFyaW5nIGltcGxlbWVudGF0aW9uCisgICAgICAgIC8vY2FudmFzLl9zY3JlZW5zLmNsZWFyQWxsU2Vzc2lvbnMoKTsKKyAgICAgICAgdGhpcy5sb2dpY2FsUm9vbUxlYXZlLmRvQ2FsbCgpOworICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiIyMjIyMjIyMjIyMjIHRoaXMubG9naWNhbFJvb21MZWF2ZSAiLHRoaXMubG9naWNhbFJvb21MZWF2ZSk7CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgIAorCisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0ibG9naWNhbFJvb21MZWF2ZSIgZnVuY25hbWU9ImxvZ2ljYWxSb29tTGVhdmUiIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiA+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIiMjIyMjIyMjIyMjIyMgbG9naWNhbFJvb21MZWF2ZTogIix2YWx1ZSk7CisgICAgICAgICAgICAvL3RoaXMucGFyZW50LmRlc3Ryb3koKTsKKyAgICAgICAgICAgIGNhbnZhcy50aGlzaGliLnJlY29ubmVjdEFmdGVyUm9vbWxlZnQgPSB0cnVlOworICAgICAgICAgICAgY2FudmFzLnRoaXNoaWIucmVjb25uZWN0ZWRSb29tSW5zdGFuY2UgPSB0aGlzLnBhcmVudDsKKyAgICAgICAgICAgIGNhbnZhcy5jdXJyZW50QmFzZUNvbmZlcmVuY2VSb29tID0gbnVsbDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gUmVjb25uZWN0IFVzZXIgdG8gZGVmYXVsdCBTY29wZQorICAgICAgICAgICAgY2FudmFzLnRoaXNoaWIudXNlclNjb3BlID0gImhpYmVybmF0ZSI7CisgICAgICAgICAgICB2YXIgc3JjID0gaGliLmdldFVybCgpOworICAgICAgICAgICAgY2FudmFzLnRoaXNoaWIuc2V0QXR0cmlidXRlKCdzcmMnLHNyYyk7CisgICAgICAgICAgICBjYW52YXMudGhpc2hpYi5kaXNjb25uZWN0KCk7CisgICAgICAgICAgICBjYW52YXMuX21haW5iZ2NvbnRlbnROYXZpLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JyxjYW52YXMubmF2aUhlaWdodCk7CisgICAgICAgICAgICBjYW52YXMuc2V0QXR0cmlidXRlKCduYXZpSGVpZ2h0RGVsdGEnLGNhbnZhcy5uYXZpSGVpZ2h0KTsKKyAgICAgICAgICAgIGNhbnZhcy5fY29uZmVyZW5jZW1lbnUucmVtb3ZlQWxsKCk7CisgICAgICAgICAgICBjYW52YXMuX2NvbmZlcmVuY2VtZW51LnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ2hpZGRlbicpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9uZXRSZW1vdGVDYWxsSGliPgorICAgIAorICAgIDxjb25mZXJlbmNlUm9vbVNpZGViYXIgbmFtZT0iX3NpZGVQYW5lbCIgLz4KKyAgICAKKyAgICA8dmlldyBuYW1lPSJfdmlkZW92aWV3Y29udGVudF9oaWRlV2hpdGVib2FyZCIgeT0iMCIgeD0iJHsgcGFyZW50Ll9zaWRlUGFuZWwud2lkdGggfSIKKwkJICB3aWR0aD0iJHtjYW52YXMud2lkdGgtcGFyZW50Ll9zaWRlUGFuZWwud2lkdGh9IiBoZWlnaHQ9IiR7Y2FudmFzLmhlaWdodC0ocGFyZW50Ll9jaGF0UGFuZWxTdHJpY3QuaGVpZ2h0KSAtIAorICAgICAgICAoKHBhcmVudC5fY2hhdFBhbmVsU3RyaWN0LnZpc2liaWxpdHkgPT0gJ2hpZGRlbicpID8gNToyOCkgKyAoKGNhbnZhcy5jdXJyZW50Um9vbU9iai5oaWRlVG9wQmFyKSA/IDI4OjApfSIgY2xpcD0idHJ1ZSIgCisJCSAgdmlzaWJpbGl0eT0iJHsoKGNhbnZhcy5jdXJyZW50Um9vbU9iai5oaWRlV2hpdGVib2FyZCkgPyAndmlzaWJsZSc6J2hpZGRlbicpfSI+CisJCQk8dmlldyBuYW1lPSJfaW5uIiB3aWR0aD0iJHtwYXJlbnQud2lkdGgtMTB9Ij4JCQkJCisJCQkJPHdyYXBwaW5nbGF5b3V0IGF4aXM9IngiIHNwYWNpbmc9IjEwIi8+CisJCQk8L3ZpZXc+CisJCQk8b21fdnNjcm9sbGJhciBuYW1lPSJfYXR0ZW5kZGVlc2Nyb2xsYmFyIiB2aXNpYmlsaXR5PSJ2aXNpYmxlIj48L29tX3ZzY3JvbGxiYXI+CisJPC92aWV3PgorICAgIAorICAgIDxmaXhlZEZpbGVFeHBsb3JlcldoaXRlYm9hcmRQYW5lbCBuYW1lPSJfd2hpdGVib2FyZCIgbGFiZWxpZD0iNjE1IgorICAgICAgICB5PSIwIiB4PSIkeyBwYXJlbnQuX3NpZGVQYW5lbC53aWR0aCB9IiAKKyAgICAgICAgd2lkdGg9IiR7IGNhbnZhcy53aWR0aCAtIHBhcmVudC5fc2lkZVBhbmVsLndpZHRoIH0iCisgICAgICAgIGhlaWdodD0iJHsgY2FudmFzLmhlaWdodCAtIChwYXJlbnQuX2NoYXRQYW5lbFN0cmljdC5oZWlnaHQpIC0gCisgICAgICAgICgocGFyZW50Ll9jaGF0UGFuZWxTdHJpY3QudmlzaWJsZSkgPyAyOCA6IDYpICsgKChjYW52YXMuY3VycmVudFJvb21PYmouaGlkZVRvcEJhcikgPyAyODowKX0iIC8+CisgICAgCisgICAgPCEtLQorICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgICAgIFRoaXMgaXMgdGhlIGNvbnRhaW5lciBmb3IgYWxsIFZpZGVvcworICAgICAtLT4KKyAgICA8Y29tbW9uVmlkZW9WaWV3Q29udGVudCBuYW1lPSJfdmlkZW92aWV3Y29udGVudCIgLz4KKyAgICAKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tL2lubmVybGlzdFZpZXdFdmVudFVzZXJMaXN0VGFibGUubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vaW5uZXJsaXN0Vmlld0V2ZW50VXNlckxpc3RUYWJsZS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzJjYjU5ZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tL2lubmVybGlzdFZpZXdFdmVudFVzZXJMaXN0VGFibGUubHp4CkBAIC0wLDAgKzEsMjcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/Pg0KKzwhLS0NCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgIA0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAgICAJICANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAgdW5kZXIgdGhlIExpY2Vuc2UuDQorICANCistLT4NCis8bGlicmFyeT4NCisNCis8Y2xhc3MgbmFtZT0iaW5uZXJsaXN0Vmlld0V2ZW50VXNlckxpc3RUYWJsZSIgZXh0ZW5kcz0idmlldyIgd2lkdGg9IjI1OCIgPg0KKyAgICA8d3JhcHBpbmdsYXlvdXQgbmFtZT0iX2xheW91dCIgYXhpcz0ieCIgc3BhY2luZz0iNCIvPg0KKzwvY2xhc3M+DQorDQorPC9saWJyYXJ5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tL2ludGVydmlld0NvbmZlcmVuY2VSb29tLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tL2ludGVydmlld0NvbmZlcmVuY2VSb29tLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDhlNDZhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vaW50ZXJ2aWV3Q29uZmVyZW5jZVJvb20ubHp4CkBAIC0wLDAgKzEsMTQzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8Y2xhc3MgbmFtZT0iaW50ZXJ2aWV3Q29uZmVyZW5jZVJvb20iIGV4dGVuZHM9ImJhc2VDb25mZXJlbmNlUm9vbSI+CisKKyAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgIAkKKyAgICAJaWYgKHRoaXMucm9vbW9iai5oaWRlVG9wQmFyID09IG51bGwgfHwgIXRoaXMucm9vbW9iai5oaWRlVG9wQmFyKSB7CisgICAgICAgICAgICBuZXcgbHouaW50ZXJ2aWV3Q29uZmVyZW5jZU1lbnViYXIoY2FudmFzLl9jb25mZXJlbmNlbWVudSk7CisgICAgICAgICAgICBjYW52YXMuX2NvbmZlcmVuY2VtZW51LnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ3Zpc2libGUnKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNhbnZhcy5fbWFpbmJnY29udGVudE5hdmkuc2V0QXR0cmlidXRlKCdoZWlnaHQnLDApOworICAgICAgICAgICAgY2FudmFzLnNldEF0dHJpYnV0ZSgnbmF2aUhlaWdodCcsMCk7CisgICAgICAgICAgICBjYW52YXMuc2V0QXR0cmlidXRlKCduYXZpSGVpZ2h0RGVsdGEnLDApOworICAgICAgICAgICAgY2FudmFzLl9jb25mZXJlbmNlbWVudS5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCdoaWRkZW4nKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInRoaXMucm9vbW9iaiAiLHRoaXMucm9vbW9iaik7CisgICAgICAgIAorICAgICAgICBpZih0aGlzLnJvb21vYmouYXBwb2ludG1lbnQpeworICAgICAgICAJY2FudmFzLmFwcG9pbnRtZW50Tm90aWZpY2F0aW9uUG9wVXAgPQorICAgICAgICAJCW5ldyBsei5hcHBvaW50bWVudE5vdGlmaWNhdGlvblBvcFVwKGNhbnZhcy5jb25mZXJlbmNlVmlldyx7IAorCQkJCQkJbmFtZTonYXBwRGV0YWlsJywgcm9vbW9iajp0aGlzLnJvb21vYmogfSk7ICAgCisgICAgICAgIH0gZWxzZXsKKyAgICAgICAgCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJubyBhcHBvaW50ZWQgbWVldGluZyIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAodGhpcy5yb29tb2JqLmlzRGVtb1Jvb20pIHsKKyAgICAgICAgICAgIGlmICh0aGlzLnJvb21vYmouZGVtb1RpbWUgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndhcm4oIlRISVMgSVMgQSBERU1PIFJPT00gVEhBVCBTSE9VTEQgQ0xPU0UgQUZURVIgU0VDOiAiLHRoaXMucm9vbW9iai5kZW1vVGltZSk7CisgICAgICAgICAgICAgICAgdGhpcy5tZWV0aW5nVGltZXIgPSBuZXcgbHoubWVldGluZ1RpbWVyKGNhbnZhcyx7cmVmT2JqOnRoaXMscm9vbW9iajp0aGlzLnJvb21vYmp9KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgY2FudmFzLmN1cnJlbnRCYXNlQ29uZmVyZW5jZVJvb20gPSB0aGlzOworICAgICAgICAKKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib250YWJjb250ZW50bGVhdmUiPgorICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiIyMjIyMjIyMjIyMjIyMjIyMgb250YWJjb250ZW50bGVhdmU6Iix0aGlzKTsKKyAgICAgICAgCisgICAgICAgIHRoaXMuX3NjcmVlblNoYXJpbmdBZGFwdGVyLmNsb3NlQWxsU2NyZWVuU2hhcmluZ3MoKTsKKyAgICAgICAgCisgICAgICAgIGNhbnZhcy5jdXJyZW50QmFzZUNvbmZlcmVuY2VSb29tID0gbnVsbDsKKyAgICAgICAgCisgICAgICAgIC8vcmVzZXQgdGhlIHJpZ2h0IHRvIGRyYXcgb24gV0hpdGVib2FyZCBhcyB0aGUgUm9vbUNsaWVudCBPYmplY3Qgd2lsbCBiZSBkZXN0cm95ZWQgYWxzbworICAgICAgICAvL29uIHNlcnZlci1TaWRlIHRoZSBjYW5EcmF3IHN0YXR1cyB3aWxsIGJlIGZhbHNlIGFnYWluIHdoZW4geW91IHJlbG9naW4gdGhlIHNhbWUgcm9vbQorICAgICAgICBjYW52YXMuaXNBbGxvd2VkVG9EcmF3ID0gdHJ1ZTsKKyAgICAgICAgCisgICAgICAgIF9tYWluU2Nyb2xsQmFyLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKyAgICAgICAgCisgICAgICAgIC8vcmVzZXQgcmlnaHRzCisgICAgICAgIGNhbnZhcy5pc0FsbG93ZWRUb0dpdmVFeGNsdXNpdmVBdWRpbyA9IGZhbHNlOworICAgICAgICAKKyAgICAgICAgaWYgKGNhbnZhcy5fdmlkZW9jb250YWluZXIhPW51bGwpeworCSAgICAgICAgY2FudmFzLl92aWRlb2NvbnRhaW5lci5yZXNldEFsbFZhbHVlcygpOworCSAgICAgICAgY2FudmFzLl92aWRlb2NvbnRhaW5lciA9IG51bGw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNhbnZhcy5fY2hhdGNvbnRlbnQhPW51bGwpeworICAgICAgICAJY2FudmFzLl9jaGF0Y29udGVudCA9IG51bGw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGNhbnZhcy5fbXltb2QhPW51bGwpeworICAgICAgICAJY2FudmFzLl9teW1vZCA9IG51bGw7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmICh0aGlzLm1lZXRpbmdUaW1lciAhPSBudWxsKSB7CisgICAgICAgICAgICB0aGlzLm1lZXRpbmdUaW1lci5jbG9zZSgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoY2FudmFzLl9kcmF3YXJlYS5sZXR0ZXJPYmplY3RJc0FjdGl2ZSl7CisgICAgICAgICAgICBjYW52YXMuX2RyYXdhcmVhLmN1cnJlbnRsZXR0ZXJPYmouZGVzdHJveSgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoY2FudmFzLmN1cnJlbnRGaWxlRXhwbG9yZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgY2FudmFzLmN1cnJlbnRGaWxlRXhwbG9yZXIgPSBudWxsOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoY2FudmFzLmN1cnJlbnRBY3Rpdml0eUxpc3QgIT0gbnVsbCkgeworICAgICAgICAJY2FudmFzLmN1cnJlbnRBY3Rpdml0eUxpc3QgPSBudWxsOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAvL3Jlc2V0IGlmIHRoZSB1c2VyIHdhcyBjb25uZWN0ZWQgdG8gYW55IHNsYXZlCisgICAgICAgIGNhbnZhcy5pc1NsYXZlSG9zdGVkID0gZmFsc2U7CisgICAgICAgIAorICAgICAgICAvL0BkZXByZWNhdGVkIHdlIHdpbGwgbm90IHVzZSBvbGQgc2NyZWVuIHNoYXJpbmcgaW1wbGVtZW50YXRpb24KKyAgICAgICAgLy9jYW52YXMuX3NjcmVlbnMuY2xlYXJBbGxTZXNzaW9ucygpOworICAgICAgICB0aGlzLmxvZ2ljYWxSb29tTGVhdmUuZG9DYWxsKCk7CisgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCIjIyMjIyMjIyMjIyMgdGhpcy5sb2dpY2FsUm9vbUxlYXZlICIsdGhpcy5sb2dpY2FsUm9vbUxlYXZlKTsKKyAgICA8L2hhbmRsZXI+CisKKyAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJsb2dpY2FsUm9vbUxlYXZlIiBmdW5jbmFtZT0ibG9naWNhbFJvb21MZWF2ZSIgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisJICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiIyMjIyMjIyMjIyMjIyBsb2dpY2FsUm9vbUxlYXZlOiAiLHZhbHVlKTsKKwkgICAgICAgIC8vdGhpcy5wYXJlbnQuZGVzdHJveSgpOworICAgICAgICAgICAgY2FudmFzLnRoaXNoaWIucmVjb25uZWN0QWZ0ZXJSb29tbGVmdCA9IHRydWU7CisgICAgICAgICAgICBjYW52YXMudGhpc2hpYi5yZWNvbm5lY3RlZFJvb21JbnN0YW5jZSA9IHRoaXMucGFyZW50OworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBSZWNvbm5lY3QgVXNlciB0byBkZWZhdWx0IFNjb3BlCisJICAgICAgICBjYW52YXMudGhpc2hpYi51c2VyU2NvcGUgPSAiaGliZXJuYXRlIjsKKwkgICAgICAgIHZhciBzcmMgPSBoaWIuZ2V0VXJsKCk7CisJICAgICAgICBjYW52YXMudGhpc2hpYi5zZXRBdHRyaWJ1dGUoJ3NyYycsc3JjKTsKKyAgICAgICAgICAgIGNhbnZhcy50aGlzaGliLmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgICAgIGNhbnZhcy5fbWFpbmJnY29udGVudE5hdmkuc2V0QXR0cmlidXRlKCdoZWlnaHQnLGNhbnZhcy5uYXZpSGVpZ2h0KTsKKyAgICAgICAgICAgIGNhbnZhcy5zZXRBdHRyaWJ1dGUoJ25hdmlIZWlnaHREZWx0YScsY2FudmFzLm5hdmlIZWlnaHQpOworICAgICAgICAgICAgY2FudmFzLl9jb25mZXJlbmNlbWVudS5yZW1vdmVBbGwoKTsKKyAgICAgICAgICAgIGNhbnZhcy5fY29uZmVyZW5jZW1lbnUuc2V0QXR0cmlidXRlKCd2aXNpYmlsaXR5JywnaGlkZGVuJyk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICA8L25ldFJlbW90ZUNhbGxIaWI+CisgICAgCisgICAgPCEtLQorICAgICAgICBVc2VyIFBhbmVsIGFuZCBQYXJ0aWNpcGFudHMgTGlzdAorICAgICAtLT4KKyAgICA8aW50ZXJ2aWV3Um9vbVNpZGViYXIgbmFtZT0iX3NpZGVQYW5lbCIgCisgICAgICAgICAgICAgICAgICAgICAgbGlzdFR5cGU9ImV2ZW50VXNlckxpc3RUYWJsZVdpdGhOYW1lcyIgLz4KKyAgICAKKyAgICA8IS0tCisgICAgICAgIFdoaXRlYm9hcmQgaW4gSW50ZXJ2aWV3IFJvb20gVHlwZSB0aG9zZSBhcmUgdGhlIFZpZGVvIFBvZHMKKyAgICAgLS0+CisgICAgPGludGVydmlld1doaXRlYm9hcmQgbmFtZT0iX3doaXRlYm9hcmRJbnRlcnZpZXciIHg9IiR7IHBhcmVudC5fc2lkZVBhbmVsLndpZHRoIH0iIAorICAgIAkgIHdpZHRoPSIkeyBjYW52YXMud2lkdGggLSBwYXJlbnQuX3NpZGVQYW5lbC53aWR0aCB9IiAvPgorICAgIAorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vbGlicmFyeS5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvZmxleGlibGVDb25mZXJlbmNlUm9vbS9saWJyYXJ5Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOGNmMmJiCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vbGlicmFyeS5sengKQEAgLTAsMCArMSw3OSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworCTxyZXNvdXJjZSBuYW1lPSJ1c2Vyc3RhdHVzX211bHRpZnJhbWVfcnNjIj4KKwkJPGZyYW1lIHNyYz0icmVzb3VyY2VzL2J1bGxldF9iYWxsX2dsYXNzX2dyZWVuLnBuZyIvPiA8IS0tIHVzZXIgLS0+CisJCTxmcmFtZSBzcmM9InJlc291cmNlcy9idWxsZXRfYmFsbF9nbGFzc195ZWxsb3cucG5nIi8+IDwhLS0gbW9kIC0tPgorCQk8ZnJhbWUgc3JjPSJyZXNvdXJjZXMvYnVsbGV0X2JhbGxfZ2xhc3NfcmVkLnBuZyIvPiA8IS0tIHdoaXRlYm9hcmQgYWxsb3cgLS0+CisJPC9yZXNvdXJjZT4KKwkKKwk8cmVzb3VyY2UgbmFtZT0iY2hhdF9tZXNzYWdlX2luY29taW5nX3JzYyIgc3JjPSJyZXNvdXJjZXMvbGVkbGlnaHRncmVlbi5wbmciIC8+CisJCisJPCEtLSBGYW1GYW0gSWNvbiBTZXQgLS0+CisJPHJlc291cmNlIG5hbWU9InNjcmVlbl9hbGxvd19yc2MiIHNyYz0icmVzb3VyY2VzL21vbml0b3JfYWRkLnBuZyIgLz4KKwk8IS0tIEZhbUZhbSBJY29uIFNldCAtLT4KKyAgICA8cmVzb3VyY2UgbmFtZT0ic2NyZWVuX2RlbnlfcnNjIiBzcmM9InJlc291cmNlcy9tb25pdG9yX2RlbGV0ZS5wbmciIC8+CisgICAgPCEtLSBGYW1GYW0gSWNvbiBTZXQgLS0+CisgICAgPHJlc291cmNlIG5hbWU9InJlbW90ZV9hbGxvd19yc2MiIHNyYz0icmVzb3VyY2VzL21vdXNlX2FkZC5wbmciIC8+CisgICAgPCEtLSBGYW1GYW0gSWNvbiBTZXQgLS0+CisgICAgPHJlc291cmNlIG5hbWU9InJlbW90ZV9kZW55X3JzYyIgc3JjPSJyZXNvdXJjZXMvbW91c2VfZGVsZXRlLnBuZyIgLz4KKwkKKwk8IS0tIEZhbUZhbSBJY29uIFNldCAtLT4KKwk8cmVzb3VyY2UgbmFtZT0iYXZfYWxsb3dfcnNjIiBzcmM9InJlc291cmNlcy9hdWRpb19hbmRfdmlkZW8ucG5nIiAvPgorCTwhLS0gRmFtRmFtIEljb24gU2V0IC0tPgorCTxyZXNvdXJjZSBuYW1lPSJhdl9kZW55X3JzYyIgc3JjPSJyZXNvdXJjZXMvYXVkaW9fYW5kX3ZpZGVvX25vLnBuZyIgLz4KKwk8IS0tIEZhbUZhbSBJY29uIFNldCAtLT4KKwk8cmVzb3VyY2UgbmFtZT0ic3RhcnRfcHJpdmF0ZV9jaGF0X3JzYyIgc3JjPSJyZXNvdXJjZXMvcGFnZV9lZGl0LnBuZyIgLz4KKwkKKwk8IS0tIEFQTCBhdXRob3Igc2ViYXdhZ25lciAtLT4KKwk8cmVzb3VyY2UgbmFtZT0ia2lja191c2VyX3JzYyIgc3JjPSJyZXNvdXJjZXMvY2FuY2VsX2ljb24ucG5nIiAvPgorCQorCTwhLS0gQVBMIGF1dGhvciBzZWJhd2FnbmVyIC0tPgorCTxyZXNvdXJjZSBuYW1lPSJtdXRlX21pY3JvX2J0bl9yc2MiPgorICAgICAgICA8ZnJhbWUgc3JjPSJyZXNvdXJjZXMvbXV0ZV9taWNyby5wbmciIC8+CisgICAgICAgIDxmcmFtZSBzcmM9InJlc291cmNlcy9tdXRlX21pY3JvX3JlZC5wbmciIC8+CisgICAgPC9yZXNvdXJjZT4KKyAgICAKKyAgICA8IS0tIEFQTCBhdXRob3Igc2ViYXdhZ25lciAtLT4KKyAgICA8cmVzb3VyY2UgbmFtZT0ibXV0ZV9idG5fcnNjIiBzcmM9InJlc291cmNlcy9tdXRlX21pY3JvLnBuZyIgLz4KKyAgICA8IS0tIEFQTCBhdXRob3Igc2ViYXdhZ25lciAtLT4KKyAgICA8cmVzb3VyY2UgbmFtZT0idW5tdXRlX2J0bl9yc2MiIHNyYz0icmVzb3VyY2VzL211dGVfbWljcm9fcmVkLnBuZyIgLz4KKwkKKwk8IS0tIEFQTCBhdXRob3Igc2ViYXdhZ25lciAtLT4KKwk8cmVzb3VyY2UgbmFtZT0ic2lkZWJhcl90YWJfYnRuIj4KKwkJPGZyYW1lIHNyYz0icmVzb3VyY2VzL3NpZGViYXJfY2xvc2UucG5nIiAvPgorCQk8ZnJhbWUgc3JjPSJyZXNvdXJjZXMvc2lkZWJhcl9vcGVuLnBuZyIgLz4KKwk8L3Jlc291cmNlPgorCQorCTxpbmNsdWRlIGhyZWY9ImlubmVybGlzdFZpZXdFdmVudFVzZXJMaXN0VGFibGUubHp4IiAvPgorCTxpbmNsdWRlIGhyZWY9Im1vZGVyYXRpb25NaW5pSWNvbnNFdmVudFVzZXJMaXN0Lmx6eCIgLz4KKwk8aW5jbHVkZSBocmVmPSJhY3Rpdml0eWxpc3QvIiAvPgorCTxpbmNsdWRlIGhyZWY9InJvb21TaWRlYmFyLyIgLz4KKwk8aW5jbHVkZSBocmVmPSJhcHBvaW50bWVudE5vdGlmaWNhdGlvblBvcFVwLmx6eCIgLz4KKwk8aW5jbHVkZSBocmVmPSJiYXNlUm9vbUlubmVyTGlzdC5sengiIC8+CisgICAgPGluY2x1ZGUgaHJlZj0iYmFzZUNvbmZlcmVuY2VSb29tLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJmbGV4aWJsZUNvbmZlcmVuY2VSb29tLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJyZXN0cmljdGVkQ29uZmVyZW5jZVJvb20ubHp4IiAvPgorICAgIDxpbmNsdWRlIGhyZWY9ImludGVydmlld0NvbmZlcmVuY2VSb29tLmx6eCIgLz4KKyAgICAKKyAgICAKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tL21vZGVyYXRpb25NaW5pSWNvbnNFdmVudFVzZXJMaXN0Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tL21vZGVyYXRpb25NaW5pSWNvbnNFdmVudFVzZXJMaXN0Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDc2ZTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vbW9kZXJhdGlvbk1pbmlJY29uc0V2ZW50VXNlckxpc3QubHp4CkBAIC0wLDAgKzEsMjk2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8Y2xhc3MgbmFtZT0ibW9kZXJhdGlvbk1pbmlJY29uc0V2ZW50VXNlckxpc3QiIGV4dGVuZHM9InZpZXciPgorCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJzaG93QXZJY29ucyIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CisJCisgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAJdGhpcy51cGRhdGVJY29ucygpOworICAgIDwvaGFuZGxlcj4JCisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJ1cGRhdGVJY29ucyI+CisgICAgICAgIGlmIChjYW52YXMuaXNtb2RlcmF0b3IpIHsKKyAgICAgICAgICAgIHRoaXMuX2lzTW9kLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKyAgICAgICAgICAgIHRoaXMuX2lzTW9kQWRkYnV0dG9uLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5faXNNb2Quc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgICAgICAgICB0aGlzLl9pc01vZEFkZGJ1dHRvbi5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmIChjYW52YXMuaXNtb2RlcmF0b3IpIHsKKyAgICAgICAgICAgIHRoaXMuX2NhbkRyYXcuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgICAgICAgICAgdGhpcy5fY2FuRHJhdy5pc0FjdGl2ZSA9IGZhbHNlOworICAgICAgICAgICAgLy90aGlzLl9jYW5EcmF3Ll90ZXh0LnNldEF0dHJpYnV0ZSgidGV4dCIsY2FudmFzLmdldExhYmVsTmFtZSg2ODEpKTsKKyAgICAgICAgICAgIHRoaXMuX2NhbkRyYXdNb2RlcmF0b3Iuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoY2FudmFzLmlzQWxsb3dlZFRvRHJhdykgeworICAgICAgICAgICAgICAgIHRoaXMuX2NhbkRyYXcuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgICAgICAgICAgICAgIHRoaXMuX2NhbkRyYXcuaXNBY3RpdmUgPSB0cnVlOworICAgICAgICAgICAgICAgIC8vdGhpcy5fY2FuRHJhdy5fdGV4dC5zZXRBdHRyaWJ1dGUoInRleHQiLGNhbnZhcy5nZXRMYWJlbE5hbWUoNjEyKSk7CisgICAgICAgICAgICAgICAgdGhpcy5fY2FuRHJhd01vZGVyYXRvci5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGhpcy5fY2FuRHJhdy5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9jYW5EcmF3TW9kZXJhdG9yLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImNhbnZhcy5pc0FsbG93ZWRUb1NjcmVlblNoYXJlIDo6ICIsY2FudmFzLmlzQWxsb3dlZFRvU2NyZWVuU2hhcmUpOworICAgICAgICAKKyAgICAgICAgaWYgKGNhbnZhcy5pc21vZGVyYXRvcikgeworICAgICAgICAgICAgdGhpcy5fYWxsb3dTY3JlZW4uc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgICAgICAgICAgdGhpcy5fYWxsb3dTY3JlZW4uaXNBY3RpdmUgPSBmYWxzZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5fYWxsb3dSZW1vdGUuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgICAgICAgICAgdGhpcy5fYWxsb3dSZW1vdGUuaXNBY3RpdmUgPSBmYWxzZTsKKworICAgICAgICAgICAgdGhpcy5fYWxsb3dFeGNsdXNpdmVBdWRpby5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgICAgICB0aGlzLl9hbGxvd0V4Y2x1c2l2ZUF1ZGlvLmlzQWN0aXZlID0gZmFsc2U7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vdGhpcy5fY2FuRHJhdy5fdGV4dC5zZXRBdHRyaWJ1dGUoInRleHQiLGNhbnZhcy5nZXRMYWJlbE5hbWUoNjgxKSk7CisgICAgICAgICAgICB0aGlzLl9kZW55U2NyZWVuLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgICAgICAgICAgdGhpcy5fZGVueVJlbW90ZS5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKyAgICAgICAgICAgIHRoaXMuX2RlbnlFeGNsdXNpdmVBdWRpby5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmIChjYW52YXMuaXNBbGxvd2VkVG9TY3JlZW5TaGFyZSkgeworICAgICAgICAgICAgICAgIHRoaXMuX2FsbG93U2NyZWVuLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9hbGxvd1NjcmVlbi5pc0FjdGl2ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgLy90aGlzLl9jYW5EcmF3Ll90ZXh0LnNldEF0dHJpYnV0ZSgidGV4dCIsY2FudmFzLmdldExhYmVsTmFtZSg2MTIpKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9kZW55U2NyZWVuLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9hbGxvd1NjcmVlbi5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9kZW55U2NyZWVuLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGNhbnZhcy5pc0FsbG93ZWRUb1JlbW90ZUNvbnRyb2wpIHsKKyAgICAgICAgICAgIAl0aGlzLl9hbGxvd1JlbW90ZS5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgICAgICAJdGhpcy5fYWxsb3dSZW1vdGUuaXNBY3RpdmUgPSB0cnVlOworICAgICAgICAgICAgCXRoaXMuX2RlbnlSZW1vdGUuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgCXRoaXMuX2FsbG93UmVtb3RlLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgICAgICAgICAgCXRoaXMuX2RlbnlSZW1vdGUuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoY2FudmFzLmlzQWxsb3dlZFRvR2l2ZUV4Y2x1c2l2ZUF1ZGlvKSB7CisgICAgICAgICAgICAgICAgdGhpcy5fYWxsb3dFeGNsdXNpdmVBdWRpby5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgICAgICAJdGhpcy5fYWxsb3dFeGNsdXNpdmVBdWRpby5pc0FjdGl2ZSA9IHRydWU7CisgICAgICAgICAgICAJdGhpcy5fZGVueUV4Y2x1c2l2ZUF1ZGlvLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9hbGxvd0V4Y2x1c2l2ZUF1ZGlvLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgICAgICAgICAgCXRoaXMuX2RlbnlFeGNsdXNpdmVBdWRpby5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCIrIFNUQVRVUyBJQ09OUyArICIsdGhpcy5zaG93QXZJY29ucyxjYW52YXMuaXNCcm9hZENhc3RpbmcpOworICAgICAgICAKKyAgICAgICAgaWYgKHRoaXMuc2hvd0F2SWNvbnMpIHsKKwkgICAgICAgIGlmIChjYW52YXMuaXNCcm9hZENhc3RpbmcpIHsKKwkgICAgICAgICAgICB0aGlzLl9hbGxvd0RldmljZS5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKwkgICAgICAgICAgICB0aGlzLl9kZW55RGV2aWNlLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKwkgICAgICAgIH0gZWxzZSB7CisJICAgICAgICAgICAgdGhpcy5fYWxsb3dEZXZpY2Uuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworCSAgICAgICAgICAgIHRoaXMuX2RlbnlEZXZpY2Uuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisJICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIAorICAgICAgICBpZiAoY2FudmFzLm1pY011dGVkKSB7CisgICAgICAgICAgICB0aGlzLl9tdXRlRGV2aWNlLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgICAgICAgICAgdGhpcy5fdW5NdXRlRGV2aWNlLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuX211dGVEZXZpY2Uuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgICAgICAgICAgdGhpcy5fdW5NdXRlRGV2aWNlLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8c2ltcGxlbGF5b3V0IGF4aXM9IngiIHNwYWNpbmc9IjIiIC8+CisKKyAgICA8aGFuZGxlciBuYW1lPSJvbk11dGUiIHJlZmVyZW5jZT0iY2FudmFzLnRoaXNoaWIuc3dpdGNoTWljTXV0ZWQiIGFyZ3M9ImV2ZW50Ij4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib25NdXRlICIsIGV2ZW50LnB1YmxpY1NJRCwgZXZlbnQubXV0ZSk7CisgICAgICAgICAgICBpZihjYW52YXMucHVibGljU0lEID09IGV2ZW50LnB1YmxpY1NJRCkgeworICAgICAgICAgICAgICAgIGNhbnZhcy5taWNNdXRlZCA9IGV2ZW50Lm11dGU7CisgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVJY29ucygpOworICAgICAgICAgICAgfQorICAgICAgICBdXT4KKyAgICA8L2hhbmRsZXI+CisJCisgICAgPG1pbmlJY29uc05ldyBuYW1lPSJfaXNNb2QiIHg9IjAiIHdpZHRoPSIxNiIgaW5uZXJSZXNvdXJjZT0icGFydGljaXBhbnRzX2lzTW9kX3JzYyIgCisgICAgCQkgICBoZWlnaHQ9IjE2IiBzaG93aGFuZGN1cnNvcj0iZmFsc2UiPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIC8vTm90aGluZyBoYXBwZW5zIGhlcmUKKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDxsYWJlbFRvb2x0aXAgbmFtZT0iX3RleHQiIGxhYmVsaWQ9IjY4OCIgLz4KKyAgICA8L21pbmlJY29uc05ldz4KKyAgICAKKyAgICA8bWluaUljb25zTmV3IG5hbWU9Il9pc01vZEFkZGJ1dHRvbiIgb3BhY2l0eT0iMC41IiB4PSIwIiB3aWR0aD0iMTYiIGlubmVyUmVzb3VyY2U9InBhcnRpY2lwYW50c19pc01vZF9yc2MiIGhlaWdodD0iMTYiPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIC8vQXBwbHkgZm9yIE1vZGVyYXRpb24KKyAgICAgICAgICAgICAgICBjYW52YXMudGhpc2hpYi5hcHBseUZvck1vZGVyYXRpb24uZG9DYWxsKCk7CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8bGFiZWxUb29sdGlwIG5hbWU9Il90ZXh0IiBsYWJlbGlkPSI2ODUiIC8+CisgICAgPC9taW5pSWNvbnNOZXc+CisgICAgICAgIAorICAgIDxtaW5pSWNvbnNOZXcgbmFtZT0iX2NhbkRyYXciIHg9IjIwIiB3aWR0aD0iMTYiIGlubmVyUmVzb3VyY2U9InBhcnRpY2lwYW50c19hbGxvd19kcmF3aW5nX3JzYyIgCisgICAgICAgICAgICAgICBoZWlnaHQ9IjE2IiBzaG93aGFuZGN1cnNvcj0iZmFsc2UiID4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJpc0FjdGl2ZSIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgLy9Ob3RoaW5nIGhhcHBlbnMgaGVyZQorICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGxhYmVsVG9vbHRpcCBuYW1lPSJfdGV4dCIgbGFiZWxpZD0iNjg5IiAvPgorICAgIDwvbWluaUljb25zTmV3PgorICAgIAorICAgIDxtaW5pSWNvbnNOZXcgbmFtZT0iX2NhbkRyYXdNb2RlcmF0b3IiIHg9IjIwIiB3aWR0aD0iMTYiIG9wYWNpdHk9IjAuNSIKKyAgICAgICAgICAgICAgIGlubmVyUmVzb3VyY2U9InBhcnRpY2lwYW50c19hbGxvd19kcmF3aW5nX3JzYyIgaGVpZ2h0PSIxNiIgc2hvd2hhbmRjdXJzb3I9InRydWUiPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgIC8vQXNrIGZvciBSaWdodCB0byBEcmF3IG9uIFdoaXRlYm9hcmQKKyAgICAgICAgICAgIHZhciB0RGF0ZSA9IG5ldyBEYXRlKCk7CisgICAgICAgICAgICBjYW52YXMudGhpc2hpYi5zZW5kTWVzc2FnZVdpdGhDbGllbnQuc2VuZE1lc3NhZ2UoImFwcGx5Rm9yV2hpdGVib2FyZCIsdERhdGUuZ2V0VGltZSgpKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IjY4NiIgLz4KKyAgICA8L21pbmlJY29uc05ldz4KKyAgICAKKyAgICA8bWluaUljb25zTmV3IG5hbWU9Il9hbGxvd1NjcmVlbiIgeD0iNDAiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgCisgICAgICAgICAgICAgICBpbm5lclJlc291cmNlPSJzY3JlZW5fYWxsb3dfcnNjIiBzaG93aGFuZGN1cnNvcj0iZmFsc2UiPgorICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImlzQWN0aXZlIiB2YWx1ZT0idHJ1ZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiRGVueSBTY3JlZW46ICIsY2FudmFzLnB1YmxpY1NJRCk7CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8bGFiZWxUb29sdGlwIG5hbWU9Il90ZXh0IiBsYWJlbGlkPSIxMDcxIiAvPgorICAgIDwvbWluaUljb25zTmV3PgorICAgIAorICAgIDxtaW5pSWNvbnNOZXcgbmFtZT0iX2RlbnlTY3JlZW4iIHg9IjQwIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIG9wYWNpdHk9IjAuNSIKKyAgICAgICAgICAgICAgIGlubmVyUmVzb3VyY2U9InNjcmVlbl9hbGxvd19yc2MiIHNob3doYW5kY3Vyc29yPSJ0cnVlIj4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiQWxsb3cgU2NyZWVuOiAiLGNhbnZhcy5yZWZPYmoucHVibGljU0lEKTsKKyAgICAgICAgICAgIHZhciB0RGF0ZSA9IG5ldyBEYXRlKCk7CisgICAgICAgIAljYW52YXMudGhpc2hpYi5zZW5kTWVzc2FnZVdpdGhDbGllbnQuc2VuZE1lc3NhZ2UoImFwcGx5Rm9yU2NyZWVuIix0RGF0ZS5nZXRUaW1lKCkpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iMTA3MiIgLz4KKyAgICA8L21pbmlJY29uc05ldz4gICAgCisgICAgCisgCTxtaW5pSWNvbnNOZXcgbmFtZT0iX2FsbG93UmVtb3RlIiB4PSI2MCIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiAKKyAgICAgICAgICAgICAgIGlubmVyUmVzb3VyY2U9InJlbW90ZV9hbGxvd19yc2MiIHNob3doYW5kY3Vyc29yPSJmYWxzZSI+CisgICAgCTxhdHRyaWJ1dGUgbmFtZT0iaXNBY3RpdmUiIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgCTwhW0NEQVRBWworICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJEZW55IFJlbW90ZTogIixjYW52YXMucHVibGljU0lEKTsKKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDxsYWJlbFRvb2x0aXAgbmFtZT0iX3RleHQiIGxhYmVsaWQ9IjEwODEiIC8+CisgICAgPC9taW5pSWNvbnNOZXc+CisgICAgCisgICAgPG1pbmlJY29uc05ldyBuYW1lPSJfZGVueVJlbW90ZSIgeD0iNjAiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgb3BhY2l0eT0iMC41IgorICAgICAgICAgICAgICAgaW5uZXJSZXNvdXJjZT0icmVtb3RlX2FsbG93X3JzYyIgc2hvd2hhbmRjdXJzb3I9InRydWUiPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJBbGxvdyBSZW1vdGU6ICIscGFyZW50LnBhcmVudC5wYXJlbnQucmVmT2JqLnB1YmxpY1NJRCk7CisgICAgICAgICAgICB2YXIgdERhdGUgPSBuZXcgRGF0ZSgpOworICAgICAgICAgICAgY2FudmFzLnRoaXNoaWIuc2VuZE1lc3NhZ2VXaXRoQ2xpZW50LnNlbmRNZXNzYWdlKCJhcHBseUZvclJlbW90ZSIsdERhdGUuZ2V0VGltZSgpKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IjEwODAiIC8+CisgICAgPC9taW5pSWNvbnNOZXc+ICAgICAgCisgICAgICAgICAgCisgICAgCisgICAgPG1pbmlJY29uc05ldyBuYW1lPSJfYWxsb3dEZXZpY2UiIHg9IjgwIiB3aWR0aD0iNDAiIGhlaWdodD0iMTYiIG9wYWNpdHk9IjAuNSIgCisgICAgICAgICAgICB2aXNpYmxlPSIkb25jZXsgcGFyZW50LnNob3dBdkljb25zIH0iIGlubmVyUmVzb3VyY2U9ImF2X2FsbG93X3JzYyIgc2hvd2hhbmRjdXJzb3I9InRydWUiPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJOT1RISU5HOiAiLGNhbnZhcy5wdWJsaWNTSUQpOworICAgICAgICAgICAgaWYgKGNhbnZhcy5pc21vZGVyYXRvcikgeworICAgICAgICAgICAgICAgIC8vRG8gZGlyZWN0bHkgc2VuZCBjb25maXJtYXRpb24gdG8gc2hhcmUgQXVkaW8vVmlkZW8gdG8gU0VMRiEgc28gdGhhdCBhbGwgdXNlcnMgZ2V0CisgICAgICAgICAgICAgICAgLy90aGUgbm90aWZpY2F0aW9uIGFuZCB0aGUgYnJvYWRjYXN0aW5nIEJpdCBpcyBzZXQgZm9yIHRoaXMgVXNlcgorICAgICAgICAgICAgICAgIGNhbnZhcy50aGlzaGliLnNldEJyb2FkQ2FzdGluZ0ZsYWcucHVibGljU0lET2ZOZXdNb2RlcmF0b3IgPSBjYW52YXMucHVibGljU0lEOworICAgICAgICAgICAgICAgIGNhbnZhcy50aGlzaGliLnNldEJyb2FkQ2FzdGluZ0ZsYWcuaXNBbGxvd2VkVG9Ccm9hZENhc3RBViA9IHRydWU7CisgICAgICAgICAgICAgICAgY2FudmFzLnRoaXNoaWIuc2V0QnJvYWRDYXN0aW5nRmxhZy5kb0NhbGwoKTsgCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vQXBwbHkgZm9yIFJpZ2h0IHRvIFNoYXJlIEF1ZGlvL1ZpZGVvCisgICAgICAgICAgICAgICAgdmFyIHREYXRlID0gbmV3IERhdGUoKTsKKyAgICAgICAgICAgICAgICBjYW52YXMudGhpc2hpYi5zZW5kTWVzc2FnZVdpdGhDbGllbnQuc2VuZE1lc3NhZ2UoImFwcGx5Rm9yQVYiLHREYXRlLmdldFRpbWUoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSI2ODciIC8+CisgICAgPC9taW5pSWNvbnNOZXc+CisgICAgCisgICAgPG1pbmlJY29uc05ldyBuYW1lPSJfZGVueURldmljZSIgeD0iODAiIHdpZHRoPSI0MCIgaGVpZ2h0PSIxNiIgCisgICAgICAgICAgICB2aXNpYmxlPSIkb25jZXsgcGFyZW50LnNob3dBdkljb25zIH0iIGlubmVyUmVzb3VyY2U9ImF2X2FsbG93X3JzYyIgc2hvd2hhbmRjdXJzb3I9ImZhbHNlIj4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiREVOWTogIixjYW52YXMucHVibGljU0lEKTsKKyAgICAgICAgICAgIC8vTm90aGluZyBoYXBwZW5zIGhlcmUKKyAgICAgICAgICAgIGNhbnZhcy50aGlzaGliLnNldEJyb2FkQ2FzdGluZ0ZsYWcucHVibGljU0lET2ZOZXdNb2RlcmF0b3IgPSBjYW52YXMucHVibGljU0lEOworICAgICAgICAgICAgY2FudmFzLnRoaXNoaWIuc2V0QnJvYWRDYXN0aW5nRmxhZy5pc0FsbG93ZWRUb0Jyb2FkQ2FzdEFWID0gZmFsc2U7CisgICAgICAgICAgICBjYW52YXMudGhpc2hpYi5zZXRCcm9hZENhc3RpbmdGbGFnLmRvQ2FsbCgpOyAKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8bGFiZWxUb29sdGlwIG5hbWU9Il90ZXh0IiBsYWJlbGlkPSI2OTAiIC8+CisgICAgPC9taW5pSWNvbnNOZXc+CisgICAgCisgICAgPG1pbmlJY29uc05ldyBuYW1lPSJfbXV0ZURldmljZSIgeD0iMTIwIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIAorICAgIAkJICAgaW5uZXJSZXNvdXJjZT0ibXV0ZV9idG5fcnNjIiBzaG93aGFuZGN1cnNvcj0idHJ1ZSI+CisgICAgCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgY2FudmFzLl92aWRlb2NvbnRhaW5lci5fdmlkZW92aWV3Y29udGVudC5tdXRlU291bmQoY2FudmFzLnB1YmxpY1NJRCwgdHJ1ZSk7CisgICAgCTwvaGFuZGxlcj4KKyAgICAgICAgPGxhYmVsVG9vbHRpcCBuYW1lPSJfdGlwIiBsYWJlbGlkPSIxNDAzIiAvPgorICAgIDwvbWluaUljb25zTmV3PgorICAgIAorICAgIDxtaW5pSWNvbnNOZXcgbmFtZT0iX3VuTXV0ZURldmljZSIgeD0iMTIwIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGlubmVyUmVzb3VyY2U9InVubXV0ZV9idG5fcnNjIiAKKyAgICAgICAgICAgICAgIHNob3doYW5kY3Vyc29yPSJ0cnVlIiA+CisgICAgCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgY2FudmFzLl92aWRlb2NvbnRhaW5lci5fdmlkZW92aWV3Y29udGVudC5tdXRlU291bmQoY2FudmFzLnB1YmxpY1NJRCwgZmFsc2UpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDxsYWJlbFRvb2x0aXAgbmFtZT0iX3RpcCIgbGFiZWxpZD0iMTQwNCIgLz4KKyAgICA8L21pbmlJY29uc05ldz4KKworICAgIDxtaW5pSWNvbnNOZXcgbmFtZT0iX2FsbG93RXhjbHVzaXZlQXVkaW8iIHg9IjYwIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiCisgICAgICAgICAgICAgICBpbm5lclJlc291cmNlPSJwYXJ0aWNpcGFudHNfZXhjbHVzaXZlX2F1ZGlvX3JzYyIgc2hvd2hhbmRjdXJzb3I9ImZhbHNlIj4KKyAgICAJPGF0dHJpYnV0ZSBuYW1lPSJpc0FjdGl2ZSIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAJPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIkRlbnkgR2l2ZSBFeGNsdXNpdmUgQXVkaW86ICIsY2FudmFzLnB1YmxpY1NJRCk7CisgICAgICAgICAgICAgICAgaWYgKGNhbnZhcy5pc21vZGVyYXRvciB8fCBjYW52YXMuaXNBbGxvd2VkVG9HaXZlRXhjbHVzaXZlQXVkaW8pIHsKKwkgICAgICAgICAgICAgICAgY2FudmFzLnRoaXNoaWIuZ2l2ZUV4Y2x1c2l2ZUF1ZGlvLnB1YmxpY1NJRCA9IGNhbnZhcy5wdWJsaWNTSUQ7CisJICAgICAgICAgICAgICAgIGNhbnZhcy50aGlzaGliLmdpdmVFeGNsdXNpdmVBdWRpby5kb0NhbGwoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8bGFiZWxUb29sdGlwIG5hbWU9Il90ZXh0IiBsYWJlbGlkPSIxNDMzIiAvPgorICAgIDwvbWluaUljb25zTmV3PgorCisgICAgPG1pbmlJY29uc05ldyBuYW1lPSJfZGVueUV4Y2x1c2l2ZUF1ZGlvIiB4PSI2MCIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBvcGFjaXR5PSIwLjUiCisgICAgICAgICAgICAgICBpbm5lclJlc291cmNlPSJwYXJ0aWNpcGFudHNfZXhjbHVzaXZlX2F1ZGlvX3JzYyIgc2hvd2hhbmRjdXJzb3I9InRydWUiPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJBbGxvdyBHaXZlIEV4Y2x1c2l2ZSBBdWRpbzogIixjYW52YXMucHVibGljU0lEKTsKKyAgICAgICAgICAgIHZhciB0RGF0ZSA9IG5ldyBEYXRlKCk7CisgICAgICAgICAgICBjYW52YXMudGhpc2hpYi5zZW5kTWVzc2FnZVdpdGhDbGllbnQuc2VuZE1lc3NhZ2UoImFwcGx5Rm9yR2l2ZUV4Y2x1c2l2ZUF1ZGlvT24iLHREYXRlLmdldFRpbWUoKSk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSIxNDMyIiAvPgorICAgIDwvbWluaUljb25zTmV3PgorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcmVzb3VyY2VzL2F1ZGlvX2FuZF92aWRlby5mbGEgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvZmxleGlibGVDb25mZXJlbmNlUm9vbS9yZXNvdXJjZXMvYXVkaW9fYW5kX3ZpZGVvLmZsYQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTFlNjAxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcmVzb3VyY2VzL2F1ZGlvX2FuZF92aWRlby5mbGEKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcmVzb3VyY2VzL2F1ZGlvX2FuZF92aWRlby5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvZmxleGlibGVDb25mZXJlbmNlUm9vbS9yZXNvdXJjZXMvYXVkaW9fYW5kX3ZpZGVvLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzViYjEwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcmVzb3VyY2VzL2F1ZGlvX2FuZF92aWRlby5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcmVzb3VyY2VzL2F1ZGlvX2FuZF92aWRlb19uby5mbGEgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvZmxleGlibGVDb25mZXJlbmNlUm9vbS9yZXNvdXJjZXMvYXVkaW9fYW5kX3ZpZGVvX25vLmZsYQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTk2MmYzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcmVzb3VyY2VzL2F1ZGlvX2FuZF92aWRlb19uby5mbGEKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcmVzb3VyY2VzL2F1ZGlvX2FuZF92aWRlb19uby5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvZmxleGlibGVDb25mZXJlbmNlUm9vbS9yZXNvdXJjZXMvYXVkaW9fYW5kX3ZpZGVvX25vLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTdkYjljCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcmVzb3VyY2VzL2F1ZGlvX2FuZF92aWRlb19uby5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcmVzb3VyY2VzL2J1bGxldF9iYWxsX2dsYXNzX2dyZWVuLnBuZyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tL3Jlc291cmNlcy9idWxsZXRfYmFsbF9nbGFzc19ncmVlbi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmJkY2IwMQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tL3Jlc291cmNlcy9idWxsZXRfYmFsbF9nbGFzc19ncmVlbi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcmVzb3VyY2VzL2J1bGxldF9iYWxsX2dsYXNzX3JlZC5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvZmxleGlibGVDb25mZXJlbmNlUm9vbS9yZXNvdXJjZXMvYnVsbGV0X2JhbGxfZ2xhc3NfcmVkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODZjMTI1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcmVzb3VyY2VzL2J1bGxldF9iYWxsX2dsYXNzX3JlZC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcmVzb3VyY2VzL2J1bGxldF9iYWxsX2dsYXNzX3llbGxvdy5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvZmxleGlibGVDb25mZXJlbmNlUm9vbS9yZXNvdXJjZXMvYnVsbGV0X2JhbGxfZ2xhc3NfeWVsbG93LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYmYxOWRiCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcmVzb3VyY2VzL2J1bGxldF9iYWxsX2dsYXNzX3llbGxvdy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcmVzb3VyY2VzL2NhbmNlbF9pY29uLnBuZyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tL3Jlc291cmNlcy9jYW5jZWxfaWNvbi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQyNjA2MgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tL3Jlc291cmNlcy9jYW5jZWxfaWNvbi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcmVzb3VyY2VzL2xlZGxpZ2h0Z3JlZW4ucG5nIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcmVzb3VyY2VzL2xlZGxpZ2h0Z3JlZW4ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiYmRkMTIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvZmxleGlibGVDb25mZXJlbmNlUm9vbS9yZXNvdXJjZXMvbGVkbGlnaHRncmVlbi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcmVzb3VyY2VzL21vbml0b3JfYWRkLnBuZyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tL3Jlc291cmNlcy9tb25pdG9yX2FkZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTgxODA2NgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tL3Jlc291cmNlcy9tb25pdG9yX2FkZC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcmVzb3VyY2VzL21vbml0b3JfZGVsZXRlLnBuZyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tL3Jlc291cmNlcy9tb25pdG9yX2RlbGV0ZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzczMzI1NgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tL3Jlc291cmNlcy9tb25pdG9yX2RlbGV0ZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcmVzb3VyY2VzL21vdXNlX2FkZC5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvZmxleGlibGVDb25mZXJlbmNlUm9vbS9yZXNvdXJjZXMvbW91c2VfYWRkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NWJjYWI1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcmVzb3VyY2VzL21vdXNlX2FkZC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcmVzb3VyY2VzL21vdXNlX2RlbGV0ZS5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvZmxleGlibGVDb25mZXJlbmNlUm9vbS9yZXNvdXJjZXMvbW91c2VfZGVsZXRlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Mjg2NTY2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcmVzb3VyY2VzL21vdXNlX2RlbGV0ZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcmVzb3VyY2VzL211dGVfbWljcm8uZmxhIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcmVzb3VyY2VzL211dGVfbWljcm8uZmxhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxMGRkYmYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvZmxleGlibGVDb25mZXJlbmNlUm9vbS9yZXNvdXJjZXMvbXV0ZV9taWNyby5mbGEKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcmVzb3VyY2VzL211dGVfbWljcm8ucG5nIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcmVzb3VyY2VzL211dGVfbWljcm8ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxZWZkYmUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvZmxleGlibGVDb25mZXJlbmNlUm9vbS9yZXNvdXJjZXMvbXV0ZV9taWNyby5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcmVzb3VyY2VzL211dGVfbWljcm9fcmVkLmZsYSBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tL3Jlc291cmNlcy9tdXRlX21pY3JvX3JlZC5mbGEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjg3YzJhMAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tL3Jlc291cmNlcy9tdXRlX21pY3JvX3JlZC5mbGEKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcmVzb3VyY2VzL211dGVfbWljcm9fcmVkLnBuZyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tL3Jlc291cmNlcy9tdXRlX21pY3JvX3JlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjllMTZiNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tL3Jlc291cmNlcy9tdXRlX21pY3JvX3JlZC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcmVzb3VyY2VzL3BhZ2VfZWRpdC5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvZmxleGlibGVDb25mZXJlbmNlUm9vbS9yZXNvdXJjZXMvcGFnZV9lZGl0LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDY4MTFlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcmVzb3VyY2VzL3BhZ2VfZWRpdC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcmVzb3VyY2VzL3NpZGViYXJfY2xvc2UuZmxhIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcmVzb3VyY2VzL3NpZGViYXJfY2xvc2UuZmxhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkNWZmZmQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvZmxleGlibGVDb25mZXJlbmNlUm9vbS9yZXNvdXJjZXMvc2lkZWJhcl9jbG9zZS5mbGEKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcmVzb3VyY2VzL3NpZGViYXJfY2xvc2UucG5nIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcmVzb3VyY2VzL3NpZGViYXJfY2xvc2UucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4MDIwZmQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvZmxleGlibGVDb25mZXJlbmNlUm9vbS9yZXNvdXJjZXMvc2lkZWJhcl9jbG9zZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcmVzb3VyY2VzL3NpZGViYXJfb3Blbi5mbGEgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvZmxleGlibGVDb25mZXJlbmNlUm9vbS9yZXNvdXJjZXMvc2lkZWJhcl9vcGVuLmZsYQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZmQ3ZjdmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcmVzb3VyY2VzL3NpZGViYXJfb3Blbi5mbGEKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcmVzb3VyY2VzL3NpZGViYXJfb3Blbi5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvZmxleGlibGVDb25mZXJlbmNlUm9vbS9yZXNvdXJjZXMvc2lkZWJhcl9vcGVuLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzc4NTM4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcmVzb3VyY2VzL3NpZGViYXJfb3Blbi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcmVzdHJpY3RlZENvbmZlcmVuY2VSb29tLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tL3Jlc3RyaWN0ZWRDb25mZXJlbmNlUm9vbS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjA0NTVhZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tL3Jlc3RyaWN0ZWRDb25mZXJlbmNlUm9vbS5sengKQEAgLTAsMCArMSwxNTMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzxjbGFzcyBuYW1lPSJyZXN0cmljdGVkQ29uZmVyZW5jZVJvb20iIGV4dGVuZHM9ImJhc2VDb25mZXJlbmNlUm9vbSI+CisKKyAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgICAgICBuZXcgbHoucmVzdHJpY3RlZENvbmZlcmVuY2VNZW51YmFyKGNhbnZhcy5fY29uZmVyZW5jZW1lbnUpOworICAgICAgICAKKyAgICAgICAgbmV3IGx6Lm1vZGVyYXRpb25QYW5lbChjYW52YXMuX2NvbmZlcmVuY2VtZW51LHsKKyAgICAgICAgICAgICAgICAgICAgbmFtZTonX21vZGVyYXRpb25QYW5lbCcsYWxpZ246J3JpZ2h0JywKKyAgICAgICAgICAgICAgICAgICAgYWxsb3dVc2VyUXVlc3Rpb25zOnRoaXMucm9vbW9iai5hbGxvd1VzZXJRdWVzdGlvbnMKKyAgICAgICAgICAgICAgICB9KTsgIAorICAgICAgICAgICAgICAgIAorICAgICAgICBjYW52YXMuX2NvbmZlcmVuY2VtZW51LnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ3Zpc2libGUnKTsKKyAgICAgICAgCisgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ0aGlzLnJvb21vYmogIix0aGlzLnJvb21vYmopOworICAgICAgICAKKyAgICAgICAgaWYodGhpcy5yb29tb2JqLmFwcG9pbnRtZW50KXsKKyAgICAgICAgICAgIGNhbnZhcy5hcHBvaW50bWVudE5vdGlmaWNhdGlvblBvcFVwID0KKyAgICAgICAgICAgICAgICBuZXcgbHouYXBwb2ludG1lbnROb3RpZmljYXRpb25Qb3BVcChjYW52YXMuY29uZmVyZW5jZVZpZXcseyAKKyAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6J2FwcERldGFpbCcsIHJvb21vYmo6dGhpcy5yb29tb2JqIH0pOyAgIAorICAgICAgICB9IGVsc2V7CisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgibm8gYXBwb2ludGVkIG1lZXRpbmciKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKHRoaXMucm9vbW9iai5pc0RlbW9Sb29tKSB7CisgICAgICAgICAgICBpZiAodGhpcy5yb29tb2JqLmRlbW9UaW1lICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53YXJuKCJUSElTIElTIEEgREVNTyBST09NIFRIQVQgU0hPVUxEIENMT1NFIEFGVEVSIFNFQzogIix0aGlzLnJvb21vYmouZGVtb1RpbWUpOworICAgICAgICAgICAgICAgIHRoaXMubWVldGluZ1RpbWVyID0gbmV3IGx6Lm1lZXRpbmdUaW1lcihjYW52YXMse3JlZk9iajp0aGlzLHJvb21vYmo6dGhpcy5yb29tb2JqfSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIGNhbnZhcy5jdXJyZW50QmFzZUNvbmZlcmVuY2VSb29tID0gdGhpczsKKyAgICAgICAgY2FudmFzLl92aWRlb2NvbnRhaW5lci5zZXRBdHRyaWJ1dGUoImFsbG93VXNlclF1ZXN0aW9ucyIsdGhpcy5yb29tb2JqLmFsbG93VXNlclF1ZXN0aW9ucyk7CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9udGFiY29udGVudGxlYXZlIj4KKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIiMjIyMjIyMjIyMjIyMjIyMjIG9udGFiY29udGVudGxlYXZlOiIsdGhpcyk7CisgICAgICAgIAorICAgICAgICB0aGlzLl9zY3JlZW5TaGFyaW5nQWRhcHRlci5jbG9zZUFsbFNjcmVlblNoYXJpbmdzKCk7CisgICAgICAgIAorICAgICAgICBjYW52YXMuY3VycmVudEJhc2VDb25mZXJlbmNlUm9vbSA9IG51bGw7CisgICAgICAgIAorICAgICAgICAvL3Jlc2V0IHRoZSByaWdodCB0byBkcmF3IG9uIFdIaXRlYm9hcmQgYXMgdGhlIFJvb21DbGllbnQgT2JqZWN0IHdpbGwgYmUgZGVzdHJveWVkIGFsc28KKyAgICAgICAgLy9vbiBzZXJ2ZXItU2lkZSB0aGUgY2FuRHJhdyBzdGF0dXMgd2lsbCBiZSBmYWxzZSBhZ2FpbiB3aGVuIHlvdSByZWxvZ2luIHRoZSBzYW1lIHJvb20KKyAgICAgICAgY2FudmFzLmlzQWxsb3dlZFRvRHJhdyA9IHRydWU7CisgICAgICAgIAorICAgICAgICBfbWFpblNjcm9sbEJhci5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgIAorICAgICAgICAvL3Jlc2V0IHJpZ2h0cworICAgICAgICBjYW52YXMuaXNBbGxvd2VkVG9HaXZlRXhjbHVzaXZlQXVkaW8gPSBmYWxzZTsKKyAgICAgICAgCisgICAgICAgIGlmIChjYW52YXMuX3ZpZGVvY29udGFpbmVyIT1udWxsKXsKKyAgICAgICAgICAgIGNhbnZhcy5fdmlkZW9jb250YWluZXIucmVzZXRBbGxWYWx1ZXMoKTsKKyAgICAgICAgICAgIGNhbnZhcy5fdmlkZW9jb250YWluZXIgPSBudWxsOworICAgICAgICB9CisgICAgICAgIGlmIChjYW52YXMuX2NoYXRjb250ZW50IT1udWxsKXsKKyAgICAgICAgICAgIGNhbnZhcy5fY2hhdGNvbnRlbnQgPSBudWxsOworICAgICAgICB9CisgICAgICAgIGlmIChjYW52YXMuX215bW9kIT1udWxsKXsKKyAgICAgICAgICAgIGNhbnZhcy5fbXltb2QgPSBudWxsOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAodGhpcy5tZWV0aW5nVGltZXIgIT0gbnVsbCkgeworICAgICAgICAgICAgdGhpcy5tZWV0aW5nVGltZXIuY2xvc2UoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGNhbnZhcy5fZHJhd2FyZWEubGV0dGVyT2JqZWN0SXNBY3RpdmUpeworICAgICAgICAgICAgY2FudmFzLl9kcmF3YXJlYS5jdXJyZW50bGV0dGVyT2JqLmRlc3Ryb3koKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGNhbnZhcy5jdXJyZW50RmlsZUV4cGxvcmVyICE9IG51bGwpIHsKKyAgICAgICAgICAgIGNhbnZhcy5jdXJyZW50RmlsZUV4cGxvcmVyID0gbnVsbDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGNhbnZhcy5jdXJyZW50QWN0aXZpdHlMaXN0ICE9IG51bGwpIHsKKyAgICAgICAgICAgIGNhbnZhcy5jdXJyZW50QWN0aXZpdHlMaXN0ID0gbnVsbDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy9yZXNldCBpZiB0aGUgdXNlciB3YXMgY29ubmVjdGVkIHRvIGFueSBzbGF2ZQorICAgICAgICBjYW52YXMuaXNTbGF2ZUhvc3RlZCA9IGZhbHNlOworICAgICAgICAKKyAgICAgICAgLy9AZGVwcmVjYXRlZCB3ZSB3aWxsIG5vdCB1c2Ugb2xkIHNjcmVlbiBzaGFyaW5nIGltcGxlbWVudGF0aW9uCisgICAgICAgIC8vY2FudmFzLl9zY3JlZW5zLmNsZWFyQWxsU2Vzc2lvbnMoKTsKKyAgICAgICAgdGhpcy5sb2dpY2FsUm9vbUxlYXZlLmRvQ2FsbCgpOworICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiIyMjIyMjIyMjIyMjIHRoaXMubG9naWNhbFJvb21MZWF2ZSAiLHRoaXMubG9naWNhbFJvb21MZWF2ZSk7CisgICAgPC9oYW5kbGVyPgorCisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0ibG9naWNhbFJvb21MZWF2ZSIgZnVuY25hbWU9ImxvZ2ljYWxSb29tTGVhdmUiIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiA+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIiMjIyMjIyMjIyMjIyMgbG9naWNhbFJvb21MZWF2ZTogIix2YWx1ZSk7CisgICAgICAgICAgICAvL3RoaXMucGFyZW50LmRlc3Ryb3koKTsKKyAgICAgICAgICAgIGNhbnZhcy50aGlzaGliLnJlY29ubmVjdEFmdGVyUm9vbWxlZnQgPSB0cnVlOworICAgICAgICAgICAgY2FudmFzLnRoaXNoaWIucmVjb25uZWN0ZWRSb29tSW5zdGFuY2UgPSB0aGlzLnBhcmVudDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gUmVjb25uZWN0IFVzZXIgdG8gZGVmYXVsdCBTY29wZQorICAgICAgICAgICAgY2FudmFzLnRoaXNoaWIudXNlclNjb3BlID0gImhpYmVybmF0ZSI7CisgICAgICAgICAgICB2YXIgc3JjID0gaGliLmdldFVybCgpOworICAgICAgICAgICAgY2FudmFzLnRoaXNoaWIuc2V0QXR0cmlidXRlKCdzcmMnLHNyYyk7CisgICAgICAgICAgICBjYW52YXMudGhpc2hpYi5kaXNjb25uZWN0KCk7CisgICAgICAgICAgICBjYW52YXMuX21haW5iZ2NvbnRlbnROYXZpLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JyxjYW52YXMubmF2aUhlaWdodCk7CisgICAgICAgICAgICBjYW52YXMuc2V0QXR0cmlidXRlKCduYXZpSGVpZ2h0RGVsdGEnLGNhbnZhcy5uYXZpSGVpZ2h0KTsKKyAgICAgICAgICAgIGNhbnZhcy5fY29uZmVyZW5jZW1lbnUucmVtb3ZlQWxsKCk7CisgICAgICAgICAgICBjYW52YXMuX2NvbmZlcmVuY2VtZW51LnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ2hpZGRlbicpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9uZXRSZW1vdGVDYWxsSGliPgorICAgIAorICAgIDxyZXN0cmljdGVkUm9vbVNpZGViYXIgbmFtZT0iX3NpZGVQYW5lbCIgcmVzdHJpY3RlZD0idHJ1ZSIgCisgICAgICAgICAgICAgICAgICAgICAgbGlzdFR5cGU9ImV2ZW50VXNlckxpc3RUYWJsZVdpdGhOYW1lcyIgLz4KKyAgICAKKyAgICA8dmlldyBuYW1lPSJfdmlkZW92aWV3Y29udGVudF9oaWRlV2hpdGVib2FyZCIgeT0iMCIgeD0iJHsgcGFyZW50Ll9zaWRlUGFuZWwud2lkdGggfSIKKwkJICB3aWR0aD0iJHtjYW52YXMud2lkdGgtcGFyZW50Ll9zaWRlUGFuZWwud2lkdGh9IiBoZWlnaHQ9IiR7Y2FudmFzLmhlaWdodC0ocGFyZW50Ll9jaGF0UGFuZWxTdHJpY3QuaGVpZ2h0KSAtIAorICAgICAgICAoKHBhcmVudC5fY2hhdFBhbmVsU3RyaWN0LnZpc2liaWxpdHkgPT0gJ2hpZGRlbicpID8gNToyOCl9IiBjbGlwPSJ0cnVlIiAKKwkJICB2aXNpYmlsaXR5PSIkeygoY2FudmFzLmN1cnJlbnRSb29tT2JqLmhpZGVXaGl0ZWJvYXJkKSA/ICd2aXNpYmxlJzonaGlkZGVuJyl9Ij4KKwkJCTx2aWV3IG5hbWU9Il9pbm4iIHdpZHRoPSIke3BhcmVudC53aWR0aC0xMH0iPgkJCQkKKwkJCQk8d3JhcHBpbmdsYXlvdXQgYXhpcz0ieCIgc3BhY2luZz0iMTAiLz4KKwkJCTwvdmlldz4KKwkJCTxvbV92c2Nyb2xsYmFyIG5hbWU9Il9hdHRlbmRkZWVzY3JvbGxiYXIiIHZpc2liaWxpdHk9InZpc2libGUiPjwvb21fdnNjcm9sbGJhcj4KKwk8L3ZpZXc+CisgICAgCisgICAgPGZpeGVkRmlsZUV4cGxvcmVyV2hpdGVib2FyZFBhbmVsIG5hbWU9Il93aGl0ZWJvYXJkIiBsYWJlbGlkPSI2MTUiCisgICAgICAgIHk9IjAiIHg9IiR7IHBhcmVudC5fc2lkZVBhbmVsLndpZHRoIH0iIAorICAgICAgICB3aWR0aD0iJHsgY2FudmFzLndpZHRoIC0gcGFyZW50Ll9zaWRlUGFuZWwud2lkdGggfSIKKyAgICAgICAgaGVpZ2h0PSIkeyBjYW52YXMuaGVpZ2h0IC0gKHBhcmVudC5fY2hhdFBhbmVsU3RyaWN0LmhlaWdodCkgLSAoKHBhcmVudC5fY2hhdFBhbmVsU3RyaWN0LnZpc2liaWxpdHkgPT0gJ2hpZGRlbicpID8gMDoyOCkgfSIgLz4KKyAgICAgICAgCisgICAgPCEtLQorICAgICAgICAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgICAgIFRoaXMgaXMgdGhlIGNvbnRhaW5lciBmb3IgYWxsIFZpZGVvcworICAgICAtLT4KKyAgICA8Y29tbW9uVmlkZW9WaWV3Q29udGVudCBuYW1lPSJfdmlkZW92aWV3Y29udGVudCIgLz4KKyAgICAKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tL3Jvb21TaWRlYmFyL2NvbmZlcmVuY2VSb29tU2lkZWJhci5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvZmxleGlibGVDb25mZXJlbmNlUm9vbS9yb29tU2lkZWJhci9jb25mZXJlbmNlUm9vbVNpZGViYXIubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwYzg5OGUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvZmxleGlibGVDb25mZXJlbmNlUm9vbS9yb29tU2lkZWJhci9jb25mZXJlbmNlUm9vbVNpZGViYXIubHp4CkBAIC0wLDAgKzEsMTM2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8Y2xhc3MgbmFtZT0iY29uZmVyZW5jZVJvb21TaWRlYmFyIiBleHRlbmRzPSJ2aWV3IiB3aWR0aD0iMjgwIiBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ21haW5CYWNrZ3JvdW5kQ29sb3InKSB9IiAKKyAgICAgICBoZWlnaHQ9IiR7IGNhbnZhcy5oZWlnaHQgLSAoKGNhbnZhcy5jdXJyZW50Um9vbU9iai5oaWRlVG9wQmFyKSA/IDA6MjgpIH0iIHk9IjAiIGNsaXA9InRydWUiPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0ic2VsZWN0ZWQiIHZhbHVlPSJudWxsIiAvPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0iaXNPcGVuIiB2YWx1ZT0idHJ1ZSIgdHlwZT0iYm9vbGVhbiIvPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iZG9TZWxlY3Rpb24iIGFyZ3M9Iml0ZW1SZWYiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkLmRlc2VsZWN0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBpdGVtUmVmOworICAgICAgICAgICAgdGhpcy5zZWxlY3RlZC5zZWxlY3QoKTsKKyAgICAgICAgICAKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ0aGlzLnNlbGVjdGVkLm5hbWUgIix0aGlzLnNlbGVjdGVkLm5hbWUpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZC5uYW1lID09ICJ1c2VyVGFiQnV0dG9uIikgeworICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCItLSB1c2VyVGFiQnV0dG9uIik7CisgICAgICAgICAgICAgICAgdGhpcy5fZmlsZXMuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgICAgICAgICAgICAgdGhpcy5fdmlkZW9jb250YWluZXIuX2FwcGx5QW5kU3RhdHVzSWNvbnMuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgICAgICAgICAgICAgIHRoaXMuX3ZpZGVvY29udGFpbmVyLl9wYXJ0aWNpcGFudHMuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNlbGVjdGVkLm5hbWUgPT0gImZpbGVzVGFiQnV0dG9uIikgeworICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCItLSBmaWxlc1RhYkJ1dHRvbiIpOworICAgICAgICAgICAgICAgIHRoaXMuX2ZpbGVzLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKyAgICAgICAgICAgICAgICB0aGlzLl92aWRlb2NvbnRhaW5lci5fYXBwbHlBbmRTdGF0dXNJY29ucy5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKyAgICAgICAgICAgICAgICB0aGlzLl92aWRlb2NvbnRhaW5lci5fcGFydGljaXBhbnRzLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgICAgICAgICAgfQorICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InRvZ2dsZVN0YXR1cyI+CisgICAgICAgIGlmICh0aGlzLmlzT3BlbikgeworICAgICAgICAgICAgdGhpcy5fZG9DbG9zZS5zZXRBdHRyaWJ1dGUoJ3N0YXJ0ZWQnLCB0cnVlKTsKKyAgICAgICAgICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7CisgICAgICAgICAgICB0aGlzLl9taW5pbWl6ZVNpZGViYXIuX2ljb24uc2V0QXR0cmlidXRlKCJmcmFtZSIsMik7CisgICAgICAgICAgICB0aGlzLl9taW5pbWl6ZVNpZGViYXIuX2ljb24uX2xhYmVsVG9vbHRpcC5zZXRBdHRyaWJ1dGUoImxhYmVsaWQiLDg1Nyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aGlzLl9kb09wZW4uc2V0QXR0cmlidXRlKCdzdGFydGVkJywgdHJ1ZSk7CisgICAgICAgICAgICB0aGlzLmlzT3BlbiA9IHRydWU7CisgICAgICAgICAgICB0aGlzLl9taW5pbWl6ZVNpZGViYXIuX2ljb24uc2V0QXR0cmlidXRlKCJmcmFtZSIsMSk7CisgICAgICAgICAgICB0aGlzLl9taW5pbWl6ZVNpZGViYXIuX2ljb24uX2xhYmVsVG9vbHRpcC5zZXRBdHRyaWJ1dGUoImxhYmVsaWQiLDg1Nik7CisgICAgICAgIH0KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8dmlldyBuYW1lPSJib3JkZXJCYXJUb3AiIHk9IjAiCisgICAgCQkJd2lkdGg9IiR7IHBhcmVudC53aWR0aCB9IiBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ21haW5Cb3JkZXJDb2xvcicpIH0iIGhlaWdodD0iMSIgLz4KKyAgIAk8dmlldyBuYW1lPSJfdGFiYmFyQmciIHdpZHRoPSIkeyBwYXJlbnQud2lkdGggfSIgaGVpZ2h0PSIzMiIgeT0iMSIgYmdjb2xvcj0iMHhGQUZBRkEiIC8+CisJPHZpZXcgbmFtZT0iYm9yZGVyQmFyQm90dG9tIiB5PSIzNCIKKyAgIAkJCXdpZHRoPSIkeyBwYXJlbnQud2lkdGggfSIgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdtYWluQm9yZGVyQ29sb3InKSB9IiBoZWlnaHQ9IjEiIC8+IAorICAgIAorICAgIDx2aWV3IG5hbWU9Il9oZWFkIiB5PSIxIiB3aWR0aD0iJHsgcGFyZW50LndpZHRoLTEwIH0iIGhlaWdodD0iMzIiCisgICAgCQkgIGxheW91dD0iYXhpczp4O3NwYWNpbmc6MjtpbnNldDoyIiA+CisgICAgCisgICAgCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisJCTwhW0NEQVRBWworICAgIAkJZm9yICh2YXIgZWcgaW4gdGhpcy5zdWJ2aWV3cykgeworICAgICAgICAgICAgCXRoaXMuc3Vidmlld3NbZWddLmRlc2VsZWN0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAoIWNhbnZhcy5jdXJyZW50Um9vbU9iai5oaWRlRmlsZXNFeHBsb3JlciAmJiBjYW52YXMuY3VycmVudFJvb21PYmouZmlsZXNPcGVuZWQpIHsKKwkJCQl0aGlzLmZpbGVzVGFiQnV0dG9uLmRvU2VsZWN0aW9uKCk7CisJCQl9IGVsc2UgeworCQkJCXRoaXMudXNlclRhYkJ1dHRvbi5kb1NlbGVjdGlvbigpOworCQkJfQorCQldXT4KKyAgICAJPC9oYW5kbGVyPgorICAgCisgICAgICAgIDx0YWJCdXR0b25NYWluIG5hbWU9InVzZXJUYWJCdXR0b24iIGhlaWdodD0iJG9uY2V7IHBhcmVudC5oZWlnaHQgfSIgd2lkdGg9IiRvbmNleyAocGFyZW50LndpZHRoLTYpLzIgfSIKKyAgICAgICAgICAgICAgICBjdXJyZW50SWNvblJzYz0idXNlcnNfdGFiX2J0biIgbGFiZWxpZD0iNjEzIiAvPgorICAgICAgICAKKyAgICAgICAgPHRhYkJ1dHRvbk1haW4gbmFtZT0iZmlsZXNUYWJCdXR0b24iIGN1cnJlbnRJY29uUnNjPSJmaWxlc190YWJfYnRuIiBoZWlnaHQ9IiRvbmNleyBwYXJlbnQuaGVpZ2h0IH0iIAorICAgICAgICAgICAgICAgIGxhYmVsaWQ9IjYxNCIgd2lkdGg9IiRvbmNleyAocGFyZW50LndpZHRoLTYpLzIgfSIKKyAgICAgICAgICAgICAgICB2aXNpYmxlPSIkeyhjYW52YXMuY3VycmVudFJvb21PYmouaGlkZUZpbGVzRXhwbG9yZXIgPyBmYWxzZTp0cnVlKX0iLz4KKyAgICAgICAgCisgICAgPC92aWV3PgorICAgIAorICAgIDxmaWxlRXhwbG9yZXIgbmFtZT0iX2ZpbGVzIiB5PSIyMiIgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGgtMTIgfSIKKyAgICAgICAgICAgICAgIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodC0yMjIgfSIgdmlzaWJpbGl0eT0iaGlkZGVuIiAvPgorICAgIAorICAgIDxwYXJ0aWNpcGFudHMgbmFtZT0iX3ZpZGVvY29udGFpbmVyIiB5PSIzNiIgCisgICAgICAgICAgICAgICAgICB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aC0xMCB9IiAKKyAgICAgICAgICAgICAgIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodC0oKGNhbnZhcy5jdXJyZW50Um9vbU9iai5oaWRlQWN0aXZpdGllc0FuZEFjdGlvbnMgPT0gdHJ1ZSkgPyAzNjoyMzYpIH0iIC8+CisgICAgICAgICAgICAgICAKKyAgICA8YWN0aXZpdHlMaXN0IG5hbWU9Il9hY3Rpdml0eUxpc3QiIC8+CisgICAgCisgICAgPHZpZXcgbmFtZT0iX21pbmltaXplU2lkZWJhciIgeD0iJHsgcGFyZW50LndpZHRoIC0gMTAgfSIgd2lkdGg9IjEwIiB5PSIxIgorICAgICAgICAgIAkJCQliZ2NvbG9yPSIweEUwRTFFQiIgaGVpZ2h0PSIkeyBwYXJlbnQuaGVpZ2h0LTEgfSI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgcGFyZW50LnRvZ2dsZVN0YXR1cygpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIAorICAgICAgICA8dmlldyB3aWR0aD0iJHsgcGFyZW50LndpZHRoIH0iIGhlaWdodD0iJG9uY2V7IHBhcmVudC5oZWlnaHQgfSIgCisgICAgICAgICAgICAgICBiZ2NvbG9yPSIweEUwRTFFQiIgPgorICAgICAgICA8L3ZpZXc+CisgICAgICAgICAgICAKKyAgICAgICAgPHZpZXcgbmFtZT0iX2ljb24iIHJlc291cmNlPSJzaWRlYmFyX3RhYl9idG4iIHk9IjAiPgorICAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorCSAgICAgICAgICAgIHBhcmVudC5wYXJlbnQudG9nZ2xlU3RhdHVzKCk7CisJICAgICAgICAgPC9oYW5kbGVyPgorCSAgICAgICAgIDxsYWJlbFRvb2x0aXAgbmFtZT0iX2xhYmVsVG9vbHRpcCIgbGFiZWxpZD0iODU2IiAvPgorICAgICAgICA8L3ZpZXc+CisgICAgICAgIAorICAgIDwvdmlldz4KKyAgICAKKyAgICA8YW5pbWF0b3IgbmFtZT0iX2RvT3BlbiIgYXR0cmlidXRlPSJ3aWR0aCIgdG89IiRvbmNleyBwYXJlbnQud2lkdGggfSIgCisgICAgICAgICAgICAgIGR1cmF0aW9uPSI3NTAiIHN0YXJ0ZWQ9ImZhbHNlIiAvPgorICAgICAgICAgICAgICAKKyAgICA8YW5pbWF0b3IgbmFtZT0iX2RvQ2xvc2UiIGF0dHJpYnV0ZT0id2lkdGgiIHRvPSIxMCIgCisgICAgICAgICAgICAgIGR1cmF0aW9uPSI3NTAiIHN0YXJ0ZWQ9ImZhbHNlIiAvPgorICAgIAorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcm9vbVNpZGViYXIvY29uZmVyZW5jZVJvb21TaWRlYmFyVGFiQnV0dG9uLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tL3Jvb21TaWRlYmFyL2NvbmZlcmVuY2VSb29tU2lkZWJhclRhYkJ1dHRvbi5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTM3YjQ3MwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tL3Jvb21TaWRlYmFyL2NvbmZlcmVuY2VSb29tU2lkZWJhclRhYkJ1dHRvbi5sengKQEAgLTAsMCArMSw4NyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9ImNvbmZlcmVuY2VSb29tU2lkZWJhclRhYkJ1dHRvbiIgZXh0ZW5kcz0idmlldyIgCisJICAgd2lkdGg9IiRvbmNleyAocGFyZW50LndpZHRoLTIpLzIgfSIgaGVpZ2h0PSIzNiIgeT0iMCI+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJsYWJlbGlkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0ic2VsZWN0ZWQiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9InRleHRGb250U2l6ZSIgdmFsdWU9IjE0IiB0eXBlPSJudW1iZXIiIC8+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50SWNvblJzYyIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIi8+CisJCisJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKwkJaWYgKHRoaXMuc2VsZWN0ZWQpIHsKKwkJCXBhcmVudC5wYXJlbnQuZG9TZWxlY3Rpb24odGhpcyk7CisJCX0KKwk8L2hhbmRsZXI+CisJCisJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisJCXBhcmVudC5wYXJlbnQuZG9TZWxlY3Rpb24odGhpcyk7CisJPC9oYW5kbGVyPgorCQorCTxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdmVyIj4KKwkJaWYgKCF0aGlzLnNlbGVjdGVkKSB7CisJCQl0aGlzLl9iZzEuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworCQl9CisJPC9oYW5kbGVyPgorCQorCTxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdXQiPgorICAgICAgICB0aGlzLl9iZzEuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgPC9oYW5kbGVyPgorCQorCTxtZXRob2QgbmFtZT0ic2VsZWN0Ij4KKwkJdGhpcy5zZWxlY3RlZCA9IHRydWU7CisJCXRoaXMuX2ljb24uc2V0QXR0cmlidXRlKCJvcGFjaXR5IiwxKTsKKyAgICAgICAgdGhpcy5fdGV4dC5zZXRBdHRyaWJ1dGUoIm9wYWNpdHkiLDEpOworICAgICAgICB0aGlzLl9iZzEuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisJCXRoaXMuX2JnMi5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisJCXRoaXMuX3RleHQuc2V0QXR0cmlidXRlKCJmb250c3R5bGUiLCJib2xkIik7CisJCXRoaXMuX3RleHQuc2V0QXR0cmlidXRlKCJmZ2NvbG9yIiwiMHhGRkZGRkYiKTsKKwk8L21ldGhvZD4KKyAgICAgCisgICAgPG1ldGhvZCBuYW1lPSJkZXNlbGVjdCI+CisgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5faWNvbi5zZXRBdHRyaWJ1dGUoIm9wYWNpdHkiLDAuNSk7CisgICAgICAgIHRoaXMuX3RleHQuc2V0QXR0cmlidXRlKCJvcGFjaXR5IiwwLjUpOworICAgICAgICB0aGlzLl9iZzIuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgICAgIHRoaXMuX3RleHQuc2V0QXR0cmlidXRlKCJmb250c3R5bGUiLCJib2xkIik7CisgICAgICAgIHRoaXMuX3RleHQuc2V0QXR0cmlidXRlKCJmZ2NvbG9yIiwiMHhGRkZGRkYiKTsKKyAgICA8L21ldGhvZD4gICAgICAgCisgICAgCisgICAgCisgICAgPHZpZXcgbmFtZT0iX2JnMSIgYmdjb2xvcj0iMHhGRkZGRkYiIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoIH0iIAorICAgICAgICAgIGhlaWdodD0iJG9uY2V7IHBhcmVudC5oZWlnaHQgfSIgb3BhY2l0eT0iMC43IiB2aXNpYmlsaXR5PSJoaWRkZW4iLz4gCisgICAgICAgICAgCisgICAgPHZpZXcgbmFtZT0iX2JnMiIgYmdjb2xvcj0iMHhGRkZGRkYiIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoIH0iIAorICAgICAgICAgIGhlaWdodD0iJG9uY2V7IHBhcmVudC5oZWlnaHQgfSIgb3BhY2l0eT0iMC40IiB2aXNpYmlsaXR5PSJoaWRkZW4iLz4KKyAgICAKKyAgICA8dmlldyB4PSI0IiB5PSI2IiBuYW1lPSJfaWNvbiIgcmVzb3VyY2U9IiRvbmNleyBwYXJlbnQuY3VycmVudEljb25Sc2MgfSIgLz4KKyAgICAgICAgICAgICAgICAKKyAgICA8bGFiZWxUZXh0IG5hbWU9Il90ZXh0IiB4PSIyOCIgZm9udHNpemU9IiRvbmNleyBwYXJlbnQudGV4dEZvbnRTaXplIH0iIHZhbGlnbj0ibWlkZGxlIiAKKyAgICAgICAgICAgICAgIGZnY29sb3I9IjB4RkZGRkZGIiBsYWJlbGlkPSIkb25jZXsgcGFyZW50LmxhYmVsaWQgfSIgLz4KKwkKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tL3Jvb21TaWRlYmFyL2ludGVydmlld1Jvb21TaWRlYmFyLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tL3Jvb21TaWRlYmFyL2ludGVydmlld1Jvb21TaWRlYmFyLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wY2E0YTI1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcm9vbVNpZGViYXIvaW50ZXJ2aWV3Um9vbVNpZGViYXIubHp4CkBAIC0wLDAgKzEsODMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzxjbGFzcyBuYW1lPSJpbnRlcnZpZXdSb29tU2lkZWJhciIgZXh0ZW5kcz0idmlldyIgd2lkdGg9IjI4MCIgCisgICAgICAgaGVpZ2h0PSIkeyBjYW52YXMuaGVpZ2h0IC0gKChjYW52YXMuY3VycmVudFJvb21PYmouaGlkZVRvcEJhcikgPyAwOjI4KSB9IiB5PSIwIiBjbGlwPSJ0cnVlIj4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9InNlbGVjdGVkIiB2YWx1ZT0ibnVsbCIgLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9ImlzT3BlbiIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9InJlc3RyaWN0ZWQiIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPgorICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJsaXN0VHlwZSIgdmFsdWU9ImV2ZW50VXNlckxpc3RUYWJsZSIgdHlwZT0ic3RyaW5nIiAvPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iZG9TZWxlY3Rpb24iIGFyZ3M9Iml0ZW1SZWYiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkLmRlc2VsZWN0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBpdGVtUmVmOworICAgICAgICAgICAgdGhpcy5zZWxlY3RlZC5zZWxlY3QoKTsKKyAgICAgICAgICAKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPHZpZXcgbmFtZT0iYm9yZGVyQmFyVG9wIiB5PSIwIgorICAgIAkJCXdpZHRoPSIkeyBwYXJlbnQud2lkdGggfSIgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdtYWluQm9yZGVyQ29sb3InKSB9IiBoZWlnaHQ9IjEiIC8+CisgICAJPHZpZXcgbmFtZT0iX3RhYmJhckJnIiB3aWR0aD0iJHsgcGFyZW50LndpZHRoIH0iIGhlaWdodD0iMzIiIHk9IjEiIGJnY29sb3I9IjB4RkFGQUZBIiAvPgorCTx2aWV3IG5hbWU9ImJvcmRlckJhckJvdHRvbSIgeT0iMzQiCisgICAJCQl3aWR0aD0iJHsgcGFyZW50LndpZHRoIH0iIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignbWFpbkJvcmRlckNvbG9yJykgfSIgaGVpZ2h0PSIxIiAvPiAKKyAgICAKKyAgICA8dmlldyBuYW1lPSJfaGVhZCIgeT0iMSIgd2lkdGg9IiR7IHBhcmVudC53aWR0aC0xMCB9IiBoZWlnaHQ9IjMyIgorICAgIAkJICBsYXlvdXQ9ImF4aXM6eDtzcGFjaW5nOjI7aW5zZXQ6MiIgPgorICAgIAorICAgIAk8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgIAkJZm9yICh2YXIgZWcgaW4gdGhpcy5zdWJ2aWV3cykgeworICAgICAgICAgICAgCXRoaXMuc3Vidmlld3NbZWddLmRlc2VsZWN0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB0aGlzLnVzZXJUYWJCdXR0b24uZG9TZWxlY3Rpb24oKTsKKyAgICAJPC9oYW5kbGVyPgorICAgICAgICAKKyAgICAgICAgPHRhYkJ1dHRvbk1haW4gbmFtZT0idXNlclRhYkJ1dHRvbiIgaGVpZ2h0PSIkb25jZXsgcGFyZW50LmhlaWdodCB9IiB3aWR0aD0iJG9uY2V7IChwYXJlbnQud2lkdGgtNikvMiB9IgorICAgICAgICAgICAgICAgIGN1cnJlbnRJY29uUnNjPSJ1c2Vyc190YWJfYnRuIiBsYWJlbGlkPSI2MTMiIC8+CisgICAgICAgIAorICAgIDwvdmlldz4KKyAgICAKKyAgICA8aW50ZXJ2aWV3VXNlckxpc3QgbmFtZT0iX3ZpZGVvY29udGFpbmVyIiB5PSIzNiIKKwkJCSAgIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoLTEwIH0iIAorICAgICAgICAgICAgICAgaGVpZ2h0PSIkeyBwYXJlbnQuaGVpZ2h0LSgoY2FudmFzLmN1cnJlbnRSb29tT2JqLmhpZGVBY3Rpdml0aWVzQW5kQWN0aW9ucyA9PSB0cnVlKSA/IDM2OjIzNikgfSIgLz4KKyAgICAgICAgICAgICAgIAorICAgIDxhY3Rpdml0eUxpc3QgbmFtZT0iX2FjdGl2aXR5TGlzdCIgLz4KKyAgICAKKyAgICA8dmlldyBuYW1lPSJfbWluaW1pemVTaWRlYmFyIiB4PSIkeyBwYXJlbnQud2lkdGggLSAxMCB9IiB3aWR0aD0iMTAiIHk9IjEiCisgICAgCWJnY29sb3I9IjB4RTBFMUVCIiBoZWlnaHQ9IiR7IHBhcmVudC5oZWlnaHQtMSB9Ij4KKyAgICAgICAgCisgICAgICAgIDx2aWV3IHdpZHRoPSIkeyBwYXJlbnQud2lkdGggfSIgaGVpZ2h0PSIkb25jZXsgcGFyZW50LmhlaWdodCB9IiAKKyAgICAgICAgICAgICAgIGJnY29sb3I9IjB4RTBFMUVCIiA+CisgICAgICAgIDwvdmlldz4KKyAgICAgICAgICAgIAorICAgIDwvdmlldz4KKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tL3Jvb21TaWRlYmFyL2xpYnJhcnkubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcm9vbVNpZGViYXIvbGlicmFyeS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2QxMjAxZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tL3Jvb21TaWRlYmFyL2xpYnJhcnkubHp4CkBAIC0wLDAgKzEsMjggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisJCisgICAgPGluY2x1ZGUgaHJlZj0iY29uZmVyZW5jZVJvb21TaWRlYmFyLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJpbnRlcnZpZXdSb29tU2lkZWJhci5sengiIC8+CisgICAgPGluY2x1ZGUgaHJlZj0icmVzdHJpY3RlZFJvb21TaWRlYmFyLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJjb25mZXJlbmNlUm9vbVNpZGViYXJUYWJCdXR0b24ubHp4IiAvPgorICAgIAorPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ZsZXhpYmxlQ29uZmVyZW5jZVJvb20vcm9vbVNpZGViYXIvcmVzdHJpY3RlZFJvb21TaWRlYmFyLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tL3Jvb21TaWRlYmFyL3Jlc3RyaWN0ZWRSb29tU2lkZWJhci5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc0MDc2MAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tL3Jvb21TaWRlYmFyL3Jlc3RyaWN0ZWRSb29tU2lkZWJhci5sengKQEAgLTAsMCArMSwxNDggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzxjbGFzcyBuYW1lPSJyZXN0cmljdGVkUm9vbVNpZGViYXIiIGV4dGVuZHM9InZpZXciIHdpZHRoPSIyODAiCisgICAgICAgaGVpZ2h0PSIkeyBjYW52YXMuaGVpZ2h0IC0gMjggfSIgeT0iMCIgY2xpcD0idHJ1ZSI+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJzZWxlY3RlZCIgdmFsdWU9Im51bGwiIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpc09wZW4iIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIi8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJyZXN0cmljdGVkIiB2YWx1ZT0idHJ1ZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibGlzdFR5cGUiIHZhbHVlPSJldmVudFVzZXJMaXN0VGFibGUiIHR5cGU9InN0cmluZyIgLz4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImRvU2VsZWN0aW9uIiBhcmdzPSJpdGVtUmVmIj4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgIAlpZiAoaXRlbVJlZi5uYW1lID09ICJmaWxlc1RhYkJ1dHRvbiIpIHsKKyAgICAgICAgICAgIAlpZiAodGhpcy5yZXN0cmljdGVkKSB7CisgICAgICAgICAgICAJCWlmICghY2FudmFzLmlzbW9kZXJhdG9yICYmICFjYW52YXMuaXNBbGxvd2VkVG9EcmF3KSB7CisgICAgICAgICAgICAJCQkvL0RvIG5vdCBhbGxvdworICAgICAgICAgICAgCQkJbmV3IGx6LmxhYmVsZXJyb3JQb3B1cChjYW52YXMse2Vycm9ybGFiZWxpZDo3ODN9KTsKKyAgICAgICAgICAgIAkJCXJldHVybjsKKyAgICAgICAgICAgIAkJfQorICAgICAgICAgICAgCX0KKyAgICAgICAgCX0KKyAgICAgICAgICAgIAkKKyAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkLmRlc2VsZWN0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWQgPSBpdGVtUmVmOworICAgICAgICAgICAgdGhpcy5zZWxlY3RlZC5zZWxlY3QoKTsKKyAgICAgICAgICAKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ0aGlzLnNlbGVjdGVkLm5hbWUgIix0aGlzLnNlbGVjdGVkLm5hbWUsIHRoaXMuaW5pdGVkKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWQubmFtZSA9PSAidXNlclRhYkJ1dHRvbiIpIHsKKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiLS0gdXNlclRhYkJ1dHRvbiIpOworICAgICAgICAgICAgICAgIHRoaXMuX2ZpbGVzLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgICAgICAgICAgICAgIHRoaXMuX3BhcnRpY2lwYW50cy5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0ZWQubmFtZSA9PSAiZmlsZXNUYWJCdXR0b24iKSB7CisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIi0tIGZpbGVzVGFiQnV0dG9uIik7CisgICAgICAgICAgICAgICAgdGhpcy5fZmlsZXMuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgICAgICAgICAgICAgIHRoaXMuX3BhcnRpY2lwYW50cy5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJ0b2dnbGVTdGF0dXMiPgorICAgICAgICBpZiAodGhpcy5pc09wZW4pIHsKKyAgICAgICAgICAgIHRoaXMuX2RvQ2xvc2Uuc2V0QXR0cmlidXRlKCdzdGFydGVkJywgdHJ1ZSk7CisgICAgICAgICAgICB0aGlzLmlzT3BlbiA9IGZhbHNlOworICAgICAgICAgICAgdGhpcy5fbWluaW1pemVTaWRlYmFyLl9pY29uLnNldEF0dHJpYnV0ZSgiZnJhbWUiLDIpOworICAgICAgICAgICAgdGhpcy5fbWluaW1pemVTaWRlYmFyLl9pY29uLl9sYWJlbFRvb2x0aXAuc2V0QXR0cmlidXRlKCJsYWJlbGlkIiw4NTcpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5fZG9PcGVuLnNldEF0dHJpYnV0ZSgnc3RhcnRlZCcsIHRydWUpOworICAgICAgICAgICAgdGhpcy5pc09wZW4gPSB0cnVlOworICAgICAgICAgICAgdGhpcy5fbWluaW1pemVTaWRlYmFyLl9pY29uLnNldEF0dHJpYnV0ZSgiZnJhbWUiLDEpOworICAgICAgICAgICAgdGhpcy5fbWluaW1pemVTaWRlYmFyLl9pY29uLl9sYWJlbFRvb2x0aXAuc2V0QXR0cmlidXRlKCJsYWJlbGlkIiw4NTYpOworICAgICAgICB9CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPHZpZXcgbmFtZT0iYm9yZGVyQmFyVG9wIiB5PSIwIgorICAgIAkJCXdpZHRoPSIkeyBwYXJlbnQud2lkdGggfSIgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdtYWluQm9yZGVyQ29sb3InKSB9IiBoZWlnaHQ9IjEiIC8+CisgICAJPHZpZXcgbmFtZT0iX3RhYmJhckJnIiB3aWR0aD0iJHsgcGFyZW50LndpZHRoIH0iIGhlaWdodD0iMzIiIHk9IjEiIGJnY29sb3I9IjB4RkFGQUZBIiAvPgorCTx2aWV3IG5hbWU9ImJvcmRlckJhckJvdHRvbSIgeT0iMzQiCisgICAJCQl3aWR0aD0iJHsgcGFyZW50LndpZHRoIH0iIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignbWFpbkJvcmRlckNvbG9yJykgfSIgaGVpZ2h0PSIxIiAvPiAKKyAgICAKKyAgICA8dmlldyBuYW1lPSJfaGVhZCIgeT0iMSIgd2lkdGg9IiR7IHBhcmVudC53aWR0aC0xMCB9IiBoZWlnaHQ9IjMyIgorICAgIAkJICBsYXlvdXQ9ImF4aXM6eDtzcGFjaW5nOjI7aW5zZXQ6MiIgPgorICAgIAorICAgIAk8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorCQk8IVtDREFUQVsKKyAgICAJCWZvciAodmFyIGVnIGluIHRoaXMuc3Vidmlld3MpIHsKKyAgICAgICAgICAgIAl0aGlzLnN1YnZpZXdzW2VnXS5kZXNlbGVjdCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFjYW52YXMuY3VycmVudFJvb21PYmouaGlkZUZpbGVzRXhwbG9yZXIgJiYgY2FudmFzLmN1cnJlbnRSb29tT2JqLmZpbGVzT3BlbmVkKSB7CisJCQkJdGhpcy5maWxlc1RhYkJ1dHRvbi5kb1NlbGVjdGlvbigpOworCQkJfSBlbHNlIHsKKwkJCQl0aGlzLnVzZXJUYWJCdXR0b24uZG9TZWxlY3Rpb24oKTsKKwkJCX0KKwkJXV0+CisgICAgCTwvaGFuZGxlcj4KKyAgIAorICAgICAgICA8dGFiQnV0dG9uTWFpbiBuYW1lPSJ1c2VyVGFiQnV0dG9uIiBoZWlnaHQ9IiRvbmNleyBwYXJlbnQuaGVpZ2h0IH0iIHdpZHRoPSIkb25jZXsgKHBhcmVudC53aWR0aC02KS8yIH0iCisgICAgICAgICAgICAgICAgY3VycmVudEljb25Sc2M9InVzZXJzX3RhYl9idG4iIGxhYmVsaWQ9IjYxMyIgLz4KKyAgICAgICAgCisgICAgICAgIDx0YWJCdXR0b25NYWluIG5hbWU9ImZpbGVzVGFiQnV0dG9uIiBjdXJyZW50SWNvblJzYz0iZmlsZXNfdGFiX2J0biIgaGVpZ2h0PSIkb25jZXsgcGFyZW50LmhlaWdodCB9IiAKKyAgICAgICAgICAgICAgICBsYWJlbGlkPSI2MTQiIHdpZHRoPSIkb25jZXsgKHBhcmVudC53aWR0aC02KS8yIH0iCisgICAgICAgICAgICAgICAgdmlzaWJsZT0iJHsoY2FudmFzLmN1cnJlbnRSb29tT2JqLmhpZGVGaWxlc0V4cGxvcmVyID8gZmFsc2U6dHJ1ZSl9Ii8+CisgICAgICAgIAorICAgIDwvdmlldz4KKyAgICAKKyAgICA8ZmlsZUV4cGxvcmVyIG5hbWU9Il9maWxlcyIgeT0iMjIiIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoLTEyIH0iIAorICAgICAgICAgICAgICAgaGVpZ2h0PSIkeyBwYXJlbnQuaGVpZ2h0LTIyMiB9IiB2aXNpYmlsaXR5PSJoaWRkZW4iIC8+CisgICAgCisgICAgPHJlc3RyaWN0ZWRVc2VyTGlzdCBuYW1lPSJfcGFydGljaXBhbnRzIiB5PSIzNiIgCisJCQkgICAgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGgtMTAgfSIgCisJCQkgICBoZWlnaHQ9IiR7IHBhcmVudC5oZWlnaHQtKChjYW52YXMuY3VycmVudFJvb21PYmouaGlkZUFjdGl2aXRpZXNBbmRBY3Rpb25zID09IHRydWUpID8gMzY6MjM2KSB9IiAvPgorCQkJICAgCisgICAgPGFjdGl2aXR5TGlzdCBuYW1lPSJfYWN0aXZpdHlMaXN0IiAvPgorICAgIAorICAgIDx2aWV3IG5hbWU9Il9taW5pbWl6ZVNpZGViYXIiIHg9IiR7IHBhcmVudC53aWR0aCAtIDEwIH0iIHdpZHRoPSIxMCIgeT0iMSIKKyAgICAgICAgICAJCQkJYmdjb2xvcj0iMHhFMEUxRUIiIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodC0xIH0iPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgIHBhcmVudC50b2dnbGVTdGF0dXMoKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAKKyAgICAgICAgPHZpZXcgd2lkdGg9IiR7IHBhcmVudC53aWR0aCB9IiBoZWlnaHQ9IiRvbmNleyBwYXJlbnQuaGVpZ2h0IH0iIAorICAgICAgICAgICAgICAgYmdjb2xvcj0iMHhFMEUxRUIiID4KKyAgICAgICAgPC92aWV3PgorICAgICAgICAgICAgCisgICAgICAgIDx2aWV3IG5hbWU9Il9pY29uIiByZXNvdXJjZT0ic2lkZWJhcl90YWJfYnRuIiB5PSIwIj4KKyAgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKwkgICAgICAgICAgICBwYXJlbnQucGFyZW50LnRvZ2dsZVN0YXR1cygpOworCSAgICAgICAgIDwvaGFuZGxlcj4KKwkgICAgICAgICA8bGFiZWxUb29sdGlwIG5hbWU9Il9sYWJlbFRvb2x0aXAiIGxhYmVsaWQ9Ijg1NiIgLz4KKyAgICAgICAgPC92aWV3PgorICAgICAgICAKKyAgICA8L3ZpZXc+CisgICAgCisgICAgPGFuaW1hdG9yIG5hbWU9Il9kb09wZW4iIGF0dHJpYnV0ZT0id2lkdGgiIHRvPSIkb25jZXsgcGFyZW50LndpZHRoIH0iIAorICAgICAgICAgICAgICBkdXJhdGlvbj0iNzUwIiBzdGFydGVkPSJmYWxzZSIgLz4KKyAgICAgICAgICAgICAgCisgICAgPGFuaW1hdG9yIG5hbWU9Il9kb0Nsb3NlIiBhdHRyaWJ1dGU9IndpZHRoIiB0bz0iMTAiIAorICAgICAgICAgICAgICBkdXJhdGlvbj0iNzUwIiBzdGFydGVkPSJmYWxzZSIgLz4KKyAgICAKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9pbnRlcnZpZXd1c2VybGlzdC9pbnRlcnZpZXdMaXN0SW5uZXIubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ludGVydmlld3VzZXJsaXN0L2ludGVydmlld0xpc3RJbm5lci5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQxZThhMAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9pbnRlcnZpZXd1c2VybGlzdC9pbnRlcnZpZXdMaXN0SW5uZXIubHp4CkBAIC0wLDAgKzEsMjkyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgICAgICAgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorICAgIAorPGNsYXNzIG5hbWU9ImludGVydmlld0xpc3RUYWJsZSIgZXh0ZW5kcz0idmlldyIgeT0iNjAiIAorICAgICAgIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodC02NC1wYXJlbnQubW9kZXJhdGlvblBhbmVsLmhlaWdodCB9IgorICAgICAgICBiZ2NvbG9yPSIweEZGRkZGRiIgeD0iMiIgY2xpcD0idHJ1ZSIgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGgtNCB9IiA+CisgICAgICAgIDxpbm5lcmxpc3RWaWV3RXZlbnRVc2VyTGlzdFRhYmxlIG5hbWU9ImlubmVyTGlzdCIgLz4KKyAgICA8b21fdnNjcm9sbGJhciAvPgorPC9jbGFzcz4gICAgCisKKzxjbGFzcyBuYW1lPSJpbnRlcnZpZXdMaXN0SW5uZXIiIGV4dGVuZHM9ImJhc2VSb29tSW5uZXJMaXN0IiAgCisgICAgICAgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGggfSIgaGVpZ2h0PSIkeyBwYXJlbnQuaGVpZ2h0IH0iIAorICAgICAgIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignYmFzZWJnY29sb3JpemVyJykgfSIgPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0ic2VsZWN0ZWRJdGVtIiB2YWx1ZT0ibnVsbCIgLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9InNvcnRUeXBlIiB2YWx1ZT0iYWxwaGFiZXRpY2FsIiB0eXBlPSJzdHJpbmciIC8+ICAgIAorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIiEhISEhIGludGVydmlld0xpc3RUYWJsZSBvbmluaXQ6ICIpOworICAgICAgICAgICAgdGhpcy5pbml0TGlzdCgpOworICAgICAgICBdXT4KKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPCEtLSBjbGlwPSJ0cnVlIiAtLT4KKyAgICAKKyAgICA8dmlldyB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aC0yIH0iIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodC0yIH0iIAorICAgICAgICB4PSIxIiB5PSIxIiBiZ2NvbG9yPSJ3aGl0ZSIgLz4KKworICAgIDxtZXRob2QgbmFtZT0iYWRkSXRlbSIgYXJncz0ib2JqZWN0Ij4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiaW50ZXJ2aWV3TGlzdFRhYmxlIGFkZEl0ZW06ICIsb2JqZWN0LG9iamVjdC5wdWJsaWNTSUQpOworICAgICAgICAgICAgdmFyIGxpc3QgPSB0aGlzLl90YWJsZS5pbm5lckxpc3Q7CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxpc3Quc3Vidmlld3MubGVuZ3RoO2krKykgeworICAgICAgICAgICAgICAgIGlmIChsaXN0LnN1YnZpZXdzW2ldLnJlZk9iai5wdWJsaWNTSUQgPT0gb2JqZWN0LnB1YmxpY1NJRCkgeworICAgICAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndhcm4oIkFscmVhZHkgb24gTGlzdCwgZG8gbm90IGFkZCB0d2ljZSIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFyIGxhc3RuYW1lID0gb2JqZWN0Lmxhc3RuYW1lOworICAgICAgICAgICAgaWYgKG9iamVjdC5pc1N1cGVyTW9kZXJhdG9yKSB7CisgICAgICAgICAgICAgICAgbGFzdG5hbWUgKz0gIiAqIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgbmV3IGx6LmludGVydmlld1VzZXJMaXN0SXRlbShsaXN0LHsKKyAgICAgICAgICAgICAgICAgICAgdXNlcl9pZDpvYmplY3QudXNlcl9pZCwKKyAgICAgICAgICAgICAgICAgICAgZmlyc3RuYW1lOm9iamVjdC5maXJzdG5hbWUsCisgICAgICAgICAgICAgICAgICAgIGlzU3VwZXJNb2RlcmF0b3I6b2JqZWN0LmlzU3VwZXJNb2RlcmF0b3IsCisgICAgICAgICAgICAgICAgICAgIGxhc3RuYW1lOmxhc3RuYW1lLAorICAgICAgICAgICAgICAgICAgICByZWZPYmo6b2JqZWN0LAorICAgICAgICAgICAgICAgICAgICBjb25uZWN0ZWRTaW5jZTpvYmplY3QuY29ubmVjdGVkU2luY2UsCisgICAgICAgICAgICAgICAgICAgIGlzTW9kOm9iamVjdC5pc01vZCwKKyAgICAgICAgICAgICAgICAgICAgc3RyZWFtaWQ6b2JqZWN0LnN0cmVhbWlkLAorICAgICAgICAgICAgICAgICAgICB1c2VybmFtZTpvYmplY3QudXNlcm5hbWUsCisgICAgICAgICAgICAgICAgICAgIGZvcm1hdGVkRGF0ZTpvYmplY3QuZm9ybWF0ZWREYXRlCisgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuc29ydFVzZXJMaXN0KCk7CisgICAgICAgICAgICBpZiAoY2FudmFzLmN1cnJlbnRSb29tT2JqLmF1dG9WaWRlb1NlbGVjdCkgeworCQkJCWlmIChvYmplY3QucHVibGljU0lEID09IGNhbnZhcy5wdWJsaWNTSUQgJiYgIW9iamVjdC5pbnRlcnZpZXdQb2RJZAorCQkJCQkmJiAob2JqZWN0LmlzTW9kIHx8IG9iamVjdC5pc1N1cGVyTW9kZXJhdG9yIHx8IG9iamVjdC5jYW5EcmF3KSkKKwkJCQl7CisJCSAgICAgICAgICAgIGZvciAodmFyIGlpID0gMTsgaWkgPCAzOyArK2lpKSB7CisJCSAgICAgICAgICAgIAl2YXIgb2JqID0gZ2V0VmlkZW9PYmplY3RCeUludGVydmlld1BvZElkKGlpKTsKKwkJICAgICAgICAgICAgCWlmICghb2JqKSB7CisJICAgICAgICAgICAgCQkJdmFyIGludGVydmlld0JveCA9IGNhbnZhcy5fZHJhd2FyZWEuX3ZpZGVvdmlld2NvbnRlbnQuc2VhcmNoSW1tZWRpYXRlU3Vibm9kZXMoIm5hbWUiLCAiaW50ZXJ2aWV3VmlkZW9Cb3giICsgaWkpOworCSAgICAgICAgICAgIAkJCS8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIiEhISEgaW50ZXJ2aWV3TGlzdElubmVyOjogaW50ZXJ2aWV3Qm94ID0gIiwgaWksIGludGVydmlld0JveCk7CisJICAgICAgICAgICAJCQkJaW50ZXJ2aWV3Qm94LnNlbmRDb25maXJtYXRpb24oY2FudmFzLnB1YmxpY1NJRCk7CisJCSAgICAgICAgICAgIAkJYnJlYWs7CisJCSAgICAgICAgICAgIAl9CisJCQkJCX0KKwkJCQl9CisJCQl9CisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0ic29ydFVzZXJMaXN0Ij4KKyAgICAgICAgPCFbQ0RBVEFbIAorICAgICAgICAKKyAgICAgICAgICAgaWYgKHRoaXMuc29ydFR5cGUgPT0gImFscGhhYmV0aWNhbCIpIHsKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiBzb3J0QnlOYW1lKGEsYikgeworICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZihhLmZpcnN0bmFtZS50b0xvd2VyQ2FzZSgpIDwgYi5maXJzdG5hbWUudG9Mb3dlckNhc2UoKSkgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKGEuZmlyc3RuYW1lLnRvTG93ZXJDYXNlKCkgPiBiLmZpcnN0bmFtZS50b0xvd2VyQ2FzZSgpKSByZXR1cm4gMTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB0aGlzLl90YWJsZS5pbm5lckxpc3Quc3Vidmlld3Muc29ydChzb3J0QnlTdHJlYW1JZCk7CisgICAgICAgICAgICAgICAgdGhpcy5fdGFibGUuaW5uZXJMaXN0Ll9sYXlvdXQuc3Vidmlld3Muc29ydChzb3J0QnlTdHJlYW1JZCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHNvcnRCeVN0cmVhbUlkKGEsYikgeworICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZihOdW1iZXIoYS5zdHJlYW1pZCkgPT0gTnVtYmVyKGIuc3RyZWFtaWQpKSByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSBpZihOdW1iZXIoYS5zdHJlYW1pZCkgPiBOdW1iZXIoYi5zdHJlYW1pZCkpIHJldHVybiAxOworICAgICAgICAgICAgICAgICAgICBlbHNlIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB0aGlzLl90YWJsZS5pbm5lckxpc3Quc3Vidmlld3Muc29ydChzb3J0QnlTdHJlYW1JZCk7CisgICAgICAgICAgICAgICAgdGhpcy5fdGFibGUuaW5uZXJMaXN0Ll9sYXlvdXQuc3Vidmlld3Muc29ydChzb3J0QnlTdHJlYW1JZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuX3RhYmxlLmlubmVyTGlzdC5fbGF5b3V0LnVwZGF0ZSgpOyAKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgICAgIAorICAgIAorICAgIDxtZXRob2QgbmFtZT0iaW5pdExpc3QiPgorICAgICAgICBuZXcgbHouaW50ZXJ2aWV3TGlzdFRhYmxlKHRoaXMse25hbWU6J190YWJsZSd9KTsKKyAgICAgICAgdGhpcy5tb2RlcmF0aW9uUGFuZWwuYnJpbmdUb0Zyb250KCk7CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJjbGVhckxpc3QiPgorICAgICAgICB0aGlzLl90YWJsZS5kZXN0cm95KCk7CisgICAgICAgIHRoaXMuaW5pdExpc3QoKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKwk8bWV0aG9kIG5hbWU9ImRpc2Nvbm5lY3RjbGllbnQiIGFyZ3M9InB1YmxpY1NJRCI+CisJPCFbQ0RBVEFbCisJCXZhciBpdGVtID0gZ2V0VXNlckxpc3RJdGVtQnlQdWJsaWNTSUQocHVibGljU0lEKTsKKwkJaWYgKGl0ZW0pIHsKKwkJCWl0ZW0uZGVzdHJveSgpOworCQl9CisJXV0+CisJPC9tZXRob2Q+CisgICAgCisgICAgPCEtLS0gZ2V0IGEgT2JqZWN0cyBMaXN0IEl0ZW0KKyAgICAgICAgQHBhcmFtIHN0cmluZyBwdWJsaWNTSUQgcHVibGljU0lECisgICAgIC0tPgorCTxtZXRob2QgbmFtZT0iZ2V0VXNlckxpc3RJdGVtQnlQdWJsaWNTSUQiIGFyZ3M9InB1YmxpY1NJRCI+CisJPCFbQ0RBVEFbCisJCWZvciAodmFyIGk9MDtpPHRoaXMuX3RhYmxlLmlubmVyTGlzdC5zdWJ2aWV3cy5sZW5ndGg7aSsrKXsKKwkJCS8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImdldFVzZXJMaXN0SXRlbUJ5UHVibGljU0lEIDogdGhpcy5fdGFibGUuaW5uZXJMaXN0LnN1YnZpZXdzW2ldIix0aGlzLl90YWJsZS5pbm5lckxpc3Quc3Vidmlld3NbaV0pOworCQkJaWYgKHRoaXMuX3RhYmxlLmlubmVyTGlzdC5zdWJ2aWV3c1tpXS5yZWZPYmoucHVibGljU0lEPT1wdWJsaWNTSUQpeworCQkJCXJldHVybiB0aGlzLl90YWJsZS5pbm5lckxpc3Quc3Vidmlld3NbaV07CisJCQl9CisJCX0KKwkJcmV0dXJuIG51bGw7CisJXV0+CisJPC9tZXRob2Q+CisKKwk8bWV0aG9kIG5hbWU9ImdldFZpZGVvT2JqZWN0QnlJbnRlcnZpZXdQb2RJZCIgYXJncz0iaW50ZXJ2aWV3UG9kSWQiPgorCTwhW0NEQVRBWworCQl2YXIgbGlzdCA9IHRoaXMuX3RhYmxlLmlubmVyTGlzdC5zdWJ2aWV3czsKKwkJZm9yICh2YXIgaSA9IDA7IGkgPCBsaXN0Lmxlbmd0aDsgKytpKSB7CisJCQkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJnZXRWaWRlb09iamVjdEJ5SW50ZXJ2aWV3UG9kSWQgOiBsaXN0W2ldIiwgbGlzdFtpXSk7CisJCQlpZiAobGlzdFtpXS5yZWZPYmouaW50ZXJ2aWV3UG9kSWQgPT0gaW50ZXJ2aWV3UG9kSWQpeworCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJnZXRWaWRlb09iamVjdEJ5SW50ZXJ2aWV3UG9kSWQgOiBsaXN0W2ldLnJlZk9iai5pbnRlcnZpZXdQb2RJZCIsIGludGVydmlld1BvZElkLCBsaXN0W2ldLnJlZk9iai5pbnRlcnZpZXdQb2RJZCk7CisJCQkJcmV0dXJuIGxpc3RbaV07CisJCQl9CisJCX0KKwkJcmV0dXJuIG51bGw7CisJXV0+CisJPC9tZXRob2Q+CisKKyAgICA8bWV0aG9kIG5hbWU9InNlbGVjdEl0ZW0iIGFyZ3M9Iml0ZW1PYmoiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInNlbGVjdEl0ZW0gIixpdGVtT2JqKTsKKyAgICAgICAgCisgICAgICAgIGlmIChjYW52YXMuaXNtb2RlcmF0b3IpIHsKKyAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkSXRlbSAhPSBudWxsICYmIHRoaXMuc2VsZWN0ZWRJdGVtICE9IGl0ZW1PYmopIHsKKyAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbS5kZXNlbGVjdCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSXRlbSA9IGl0ZW1PYmo7CisgICAgICAgICAgICBpZiAodGhpcy5zZWxlY3RlZEl0ZW0uaXNTZWxlY3RlZCkgeworICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtLmRlc2VsZWN0KCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJdGVtLnNlbGVjdCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorCisgICAgPHZpZXcgbmFtZT0idXNlclN0YXR1cyIgbGF5b3V0PSJheGlzOnkiPgorICAgICAgICA8dmlldz4KKyAgICAgICAgICAgICA8dmlldyByZXNvdXJjZT0idXNlcnN0YXR1c19tdWx0aWZyYW1lX3JzYyIgZnJhbWU9IjEiIC8+CisgICAgICAgICAgICAgPGxhYmVsVGV4dCB4PSIxNiIgbGFiZWxpZD0iNjc3IiAvPgorICAgICAgICA8L3ZpZXc+CisgICAgICAgIDx2aWV3PgorICAgICAgICAgICAgIDx2aWV3IHJlc291cmNlPSJ1c2Vyc3RhdHVzX211bHRpZnJhbWVfcnNjIiBmcmFtZT0iMiIgLz4KKyAgICAgICAgICAgICA8bGFiZWxUZXh0IHg9IjE2IiBsYWJlbGlkPSI2NzgiIC8+CisgICAgICAgIDwvdmlldz4KKyAgICAgICAgPHZpZXc+CisgICAgICAgICAgICAgPHZpZXcgcmVzb3VyY2U9InVzZXJzdGF0dXNfbXVsdGlmcmFtZV9yc2MiIGZyYW1lPSIzIiAvPgorICAgICAgICAgICAgIDxsYWJlbFRleHQgeD0iMTYiIGxhYmVsaWQ9IjY3OSIgLz4KKyAgICAgICAgPC92aWV3PgorICAgIDwvdmlldz4KKyAgICAKKyAgICA8bW9kZXJhdGlvbk1pbmlJY29uc0ludGVydmlld1VzZXJMaXN0IG5hbWU9Il9hcHBseUFuZFN0YXR1c0ljb25zIiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgeD0iJG9uY2V7IHBhcmVudC53aWR0aC10aGlzLndpZHRoLTQgfSIgeT0iMiIgLz4KKyAgICAKKyAgICA8IS0tCisgICAgPGV2ZW50VXNlckxpc3RUYWJsZSBuYW1lPSJfdGFibGUiIC8+IAorICAgICAtLT4KKyAgICA8dmlldyBuYW1lPSJtb2RlcmF0aW9uUGFuZWwiIGhlaWdodD0iMCIgY2xpcD0idHJ1ZSIgCisgICAgICAgICAgeT0iJHsgcGFyZW50LmhlaWdodCAtIHRoaXMuaGVpZ2h0IC0gMiB9Ij4KKyAgICAgICAgCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uaXNtb2RlcmF0b3IiIHJlZmVyZW5jZT0iY2FudmFzIiBhcmdzPSJtIj4KKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCIjIyMjIyMgaXNtb2RlcmF0b3IgIixtKTsKKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIC8vdGhpcy5pc01vZCA9IGNhbnZhcy5nZXRJc01vZGVyYXRvckJ5UHVibGljU0lEKHRoaXMucmVmT2JqLnB1YmxpY1NJRCk7CisgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVJY29ucygpOworICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZHJhd0FsbG93U3RhdHVzIiByZWZlcmVuY2U9ImNhbnZhcyIgYXJncz0iZHJhd09iamVjdCI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICAvL3NlYXJjaCBmb3IgdGhlIHVzZXIgYW5kIHVwZGF0ZSBpdHMgZHJhd1N0YXR1c0ljb24KKyAgICAgICAgICAgICAgICB2YXIgdkxpc3QgPSBwYXJlbnQuX3RhYmxlLmlubmVyTGlzdC5zdWJ2aWV3czsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTx2TGlzdC5sZW5ndGg7aSsrKSB7CisgICAgICAgICAgICAgICAgICAgIC8vdkxpc3RbaV0udXBkYXRlSWNvbkJ5TW9kKCk7CisgICAgICAgICAgICAgICAgICAgIGlmICh2TGlzdFtpXS5yZWZPYmoucHVibGljU0lEID09IGRyYXdPYmplY3QucHVibGljU0lEKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2TGlzdFtpXS5yZWZPYmouY2FuRHJhdyA9IGRyYXdPYmplY3QuY2FuRHJhdzsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZMaXN0W2ldLnVwZGF0ZUljb25CeU1vZCgpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25sYXN0QnJvYWRDYXN0aW5nVXNlciIgcmVmZXJlbmNlPSJjYW52YXMiIGFyZ3M9InVzZXJPYmplY3QiPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKCF1c2VyT2JqZWN0LmlzQnJvYWRjYXN0aW5nKSB7CisgICAgICAgICAgICAgICAgICAgIC8vU3RvcCBCcm9hZGNhc3RpbmcgYW5kIGNsb3NlIERpYWxvZworICAgICAgICAgICAgICAgICAgICAvL1NlYXJjaCwgc3RvcCBhbmQgcmVtb3ZlIHZpZGVvCisgICAgICAgICAgICAgICAgICAgIHBhcmVudC5wYXJlbnQucmVtb3ZlVmlkZW9CeVVzZXIodXNlck9iamVjdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vc2VhcmNoIGZvciB0aGUgdXNlciBhbmQgdXBkYXRlIGl0cyBkcmF3U3RhdHVzSWNvbgorICAgICAgICAgICAgICAgIHZhciB2TGlzdCA9IHBhcmVudC5fdGFibGUuaW5uZXJMaXN0LnN1YnZpZXdzOworICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPHZMaXN0Lmxlbmd0aDtpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgLy92TGlzdFtpXS51cGRhdGVJY29uQnlNb2QoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZMaXN0W2ldLnJlZk9iai5wdWJsaWNTSUQgPT0gdXNlck9iamVjdC5wdWJsaWNTSUQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZMaXN0W2ldLnJlZk9iai5pc0Jyb2FkY2FzdGluZyA9IHVzZXJPYmplY3QuaXNCcm9hZGNhc3Rpbmc7CisgICAgICAgICAgICAgICAgICAgICAgICB2TGlzdFtpXS51cGRhdGVJY29uQnlNb2QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHBhcmVudC5fYXBwbHlBbmRTdGF0dXNJY29ucy51cGRhdGVJY29ucygpOworICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgCisgICAgICAgIDxtZXRob2QgbmFtZT0idXBkYXRlSWNvbnMiPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgaWYgKGNhbnZhcy5pc21vZGVyYXRvcikgeworICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dJdGVtLnNldEF0dHJpYnV0ZSgnc3RhcnRlZCcsIHRydWUpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJoZWlnaHQiLDApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB2YXIgdkxpc3QgPSBwYXJlbnQuX3RhYmxlLmlubmVyTGlzdC5zdWJ2aWV3czsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTx2TGlzdC5sZW5ndGg7aSsrKSB7CisgICAgICAgICAgICAgICAgICAgIHZMaXN0W2ldLnVwZGF0ZUljb25CeU1vZCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBwYXJlbnQuX2FwcGx5QW5kU3RhdHVzSWNvbnMudXBkYXRlSWNvbnMoKTsKKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgCisgICAgICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iOTEyIiB3aWR0aD0iMjcwIiB4PSIwIiBtdWx0aWxpbmU9InRydWUiIHk9IjAiIC8+CisgICAgICAgIAorICAgICAgICA8YW5pbWF0b3IgbmFtZT0ic2hvd0l0ZW0iIGF0dHJpYnV0ZT0iaGVpZ2h0IiAKKyAgICAgICAgICAgICAgICAgIHRvPSI2MCIgZHVyYXRpb249IjEwMDAiIHN0YXJ0ZWQ9ImZhbHNlIiAvPgorICAgIDwvdmlldz4KKworPC9jbGFzcz4KKworCis8L2xpYnJhcnk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ludGVydmlld3VzZXJsaXN0L2ludGVydmlld01vZGVyYXRpb25NaW5pSWNvbnMubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ludGVydmlld3VzZXJsaXN0L2ludGVydmlld01vZGVyYXRpb25NaW5pSWNvbnMubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyZGUwYzIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvaW50ZXJ2aWV3dXNlcmxpc3QvaW50ZXJ2aWV3TW9kZXJhdGlvbk1pbmlJY29ucy5sengKQEAgLTAsMCArMSw5MSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9ImludGVydmlld01vZGVyYXRpb25NaW5pSWNvbnMiIGV4dGVuZHM9InZpZXciIHZhbGlnbj0iYm90dG9tIiBoZWlnaHQ9IjE4Ij4KKwkKKwk8YXR0cmlidXRlIG5hbWU9ImlzTW9kIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImlzU3VwZXJNb2RlcmF0b3IiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIvPgorCQorCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisJCXRoaXMuaXNNb2QgPSBjYW52YXMuZ2V0SXNNb2RlcmF0b3JCeVB1YmxpY1NJRChwYXJlbnQucmVmT2JqLnB1YmxpY1NJRCk7CisJCQorCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidGhpcy5pc01vZCAiLHRoaXMuaXNNb2QpOworCQkKKwkJaWYgKHRoaXMuaXNNb2QpIHsKKwkJCXRoaXMuX2lzTW9kLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKwkJCXRoaXMuX2lzTW9kQWRkYnV0dG9uLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworCQl9IGVsc2UgeworCQkJdGhpcy5faXNNb2Quc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgICAgICAgICB0aGlzLl9pc01vZEFkZGJ1dHRvbi5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisJCX0KKwkJCisJPC9oYW5kbGVyPgorICAgICAgICAKKyAgICA8bWluaUljb25zIG5hbWU9Il9pc01vZCIgeD0iMCIgd2lkdGg9IjE2IiByZXNvdXJjZT0icGFydGljaXBhbnRzX2lzTW9kX3JzYyIgaGVpZ2h0PSIxNiI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAocGFyZW50LmlzU3VwZXJNb2RlcmF0b3IpIHsKKyAgICAgICAgICAgICAgICAgICAgbmV3IGx6LmxhYmVsZXJyb3JQb3B1cChjYW52YXMubWFpbl9jb250ZW50Ll9jb250ZW50LmlubmVyLHtlcnJvcmxhYmVsaWQ6ODM4fSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvL2lmIHRoZSBsYWJlbCBpcyBzZXQgYW5kIHRoaXMgaXMgYSBNb2RlcmF0b3IgdGhlbiB0aGlzIHVzZXIgc2hvdWxkCisgICAgICAgICAgICAgICAgLy9hbGxvdyB0aGUgY2xpY2sgZXZlbnQgPT4gdGhlIGNsaWNrIGV2ZW50IHdpbGwgdHJpZ2dlcgorICAgICAgICAgICAgICAgIC8vdGhpcyB1c2VyIGF3YXkgZnJvbSBiZWVpbmcgYWJsZSB0byBkcmF3IG9uIHRoZSB3aGl0ZWJvYXJkCisgICAgICAgICAgICAgICAgaWYgKGNhbnZhcy5pc21vZGVyYXRvcikgeworICAgICAgICAgICAgICAgICAgICAvL0RvIGl0IAorICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiRG8gUmVtb3ZlIEl0Iik7CisgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnQucGFyZW50LnJlZk9iai5wdWJsaWNTSUQgIT0gY2FudmFzLnB1YmxpY1NJRCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaGliLnJlbW92ZU1vZGVyYXRvci5wdWJsaWNTSURPZk5ld01vZGVyYXRvciA9IHBhcmVudC5wYXJlbnQucmVmT2JqLnB1YmxpY1NJRDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGhpYi5yZW1vdmVNb2RlcmF0b3IuZG9DYWxsKCk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIAluZXcgbHoubGFiZWxlcnJvclBvcHVwKGNhbnZhcyx7ZXJyb3JsYWJlbGlkOjY4Mn0pOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIC8vcGFyZW50LnBhcmVudC5zZXRDYW5EcmF3LmRvQ2FsbCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDxsYWJlbFRvb2x0aXAgbmFtZT0iX3RleHQiIGxhYmVsaWQ9IjY3NSIgLz4KKyAgICA8L21pbmlJY29ucz4KKyAgICAKKyAgICA8bWluaUljb25zIG5hbWU9Il9pc01vZEFkZGJ1dHRvbiIgb3BhY2l0eT0iMC41IiB4PSIwIiB3aWR0aD0iMTYiIHJlc291cmNlPSJwYXJ0aWNpcGFudHNfaXNNb2RfcnNjIiBoZWlnaHQ9IjE2Ij4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICAvL2lmIHRoZSBsYWJlbCBpcyBzZXQgYW5kIHRoaXMgaXMgYSBNb2RlcmF0b3IgdGhlbiB0aGlzIHVzZXIgc2hvdWxkCisgICAgICAgICAgICAgICAgLy9hbGxvdyB0aGUgY2xpY2sgZXZlbnQgPT4gdGhlIGNsaWNrIGV2ZW50IHdpbGwgdHJpZ2dlcgorICAgICAgICAgICAgICAgIC8vdGhpcyB1c2VyIGF3YXkgZnJvbSBiZWVpbmcgYWJsZSB0byBkcmF3IG9uIHRoZSB3aGl0ZWJvYXJkCisgICAgICAgICAgICAgICAgaWYgKGNhbnZhcy5pc21vZGVyYXRvcikgeworICAgICAgICAgICAgICAgICAgICAvL0RvIGl0IAorICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiRG8gQWRkIEl0Iik7CisgICAgICAgICAgICAgICAgICAgIGhpYi5hZGRNb2RlcmF0b3IucHVibGljU0lET2ZOZXdNb2RlcmF0b3IgPSBwYXJlbnQucGFyZW50LnJlZk9iai5wdWJsaWNTSUQ7CisgICAgICAgICAgICAgICAgICAgIGhpYi5hZGRNb2RlcmF0b3IuZG9DYWxsKCk7CisgICAgICAgICAgICAgICAgICAgIC8vcGFyZW50LnBhcmVudC5zZXRDYW5EcmF3LmRvQ2FsbCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDxsYWJlbFRvb2x0aXAgbmFtZT0iX3RleHQiIGxhYmVsaWQ9IjY3NiIgLz4KKyAgICA8L21pbmlJY29ucz4KKyAgICAgICAgCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvaW50ZXJ2aWV3dXNlcmxpc3QvaW50ZXJ2aWV3VXNlckxpc3QubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ludGVydmlld3VzZXJsaXN0L2ludGVydmlld1VzZXJMaXN0Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YWRhYmNlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ludGVydmlld3VzZXJsaXN0L2ludGVydmlld1VzZXJMaXN0Lmx6eApAQCAtMCwwICsxLDI1MCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAgICAgICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworIAorPGNsYXNzIG5hbWU9ImludGVydmlld1VzZXJMaXN0IiBleHRlbmRzPSJ2aWV3IiB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCB9IiAKKyAgICAgICBoZWlnaHQ9IiR7IHBhcmVudC5oZWlnaHQtMzQgfSI+CisKKyAgICA8IS0tLSBob2xkcyBhIHJlZmVyZW5jZXMgdG8gdGhlIHZpZGVvdmlldyB3aGljaCBpcyBicm9hZGNhc3RpbmcgLS0+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJicm9hZENhc3RWaWV3UmVmIiB2YWx1ZT0ibnVsbCIgLz4KKyAgICAKKyAgICA8IS0tLSBjb2xvcnMgZm9yIGVhY2ggdXNlciAtLT4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImNvbG9yQXJyYXkiIHZhbHVlPSJudWxsIiAvPgorCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJzaG93c1ZpZGVvSW5TZXBhcmF0ZUNvbXBvbmVudCIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgIC8vc2V0IG1vZHVzCisgICAgICAgIGNhbnZhcy50aGlzaGliLm1vZHVzID0gImludGVydmlldyI7CisgICAgICAgIAorICAgICAgICAvL3NldCByZWZlcmVuY2UsIHRoaXMgcmVmZXJlbmNlIHdpbGwgYmUgY2xlYXJlZCBhdCAqb250YWJjb250ZW5jdGxlYXZlKiBldmVudAorICAgICAgICBjYW52YXMuX3ZpZGVvY29udGFpbmVyPXRoaXM7CisgICAgICAgIAorICAgICAgICAvLyBSZWNvbm5lY3QgVXNlciB0byBpdHMgUm9vbSBJZAorICAgICAgICBjYW52YXMudGhpc2hpYi51c2VyU2NvcGUgPSBjYW52YXMudGhpc2hpYi5jdXJyZW50cm9vbWlkOworICAgICAgICB2YXIgc3JjID0gaGliLmdldFVybCgpOworICAgICAgICAKKyAgICAgICAgaWYoICRkZWJ1ZyApIERlYnVnLndyaXRlKCJ2aWRlb0NvbnRhaW5lcjogY2FudmFzLnRoaXNoaWI6ICIsY2FudmFzLnRoaXNoaWIuc3JjLGNhbnZhcy50aGlzaGliKTsKKyAgICAgICAgCisgICAgICAgIGlmIChjYW52YXMudGhpc2hpYi5zcmMgIT0gc3JjKSB7CisgICAgICAgICAgICBjYW52YXMudGhpc2hpYi5zZXRBdHRyaWJ1dGUoJ3NyYycsc3JjKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgY2FudmFzLnRoaXNoaWIucmVjb25uZWN0aW9uQWN0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgIGNhbnZhcy50aGlzaGliLnJlY29ubmVjdE9ialJlZiA9IHRoaXM7CisgICAgICAgICAgICBjYW52YXMudGhpc2hpYi5kaXNjb25uZWN0KCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvL1RoZSB1c2VyIGlzIGFscmVhZHkgaW4gdGhlIGNvcnJlY3QgU2NvcGUKKyAgICAgICAgICAgIHRoaXMucmVjb25uZWN0U3VjY2VzcygpOworICAgICAgICB9CisgICAgPC9oYW5kbGVyPgorICAgICAgICAgICAgICAgICAgCisgICAgPG1ldGhvZCBuYW1lPSJyZWNvbm5lY3RTdWNjZXNzIj4KKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud2FybigiVXNlciBSZWxvZ2VkIEluICIsY2FudmFzLmJlY29tZW1vZGVyYXRvcik7CisgICAgICAgIC8vU2VuZCB0byBTV0YxMCB2aWRlby1jb250YWluZXIgdG8gY29ubmVjdCBvbiB0aGUgY29uZmVyZW5jZSByb29tIHVybCAKKyAgICAgICAgLy9hbmQgd2FpdCBmb3IgdGhlIGFzM0Nvbm5lY3Rpb25TdWNjZXNzLUV2ZW50CisgICAgICAgIHRoaXMuX3ZpZGVvdmlld2NvbnRlbnQucmVjb25uZWN0U3VjY2Vzcyh0cnVlKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8IS0tLQorICAgICAgICBXZSBuZWVkIHRvIHdhaXQgdGlsbCB0aGUgdmlkZW8tY29udGFpbmVyIC8gYXMzIGFwcCBoYXMgdGhlIGNvbm5lY3Rpb24gZXN0YWJsaXNoZWQKKyAgICAgICAgb3RoZXJ3aXNlIGl0IGNhbiBoYXBwZW4gdGhhdCB0aGUgdmlkZW8gdHJpZXMgdG8gc3RhcnQgcGxheWluZyBiZWZvcmUgdGhlIHJ0bXAtY29ubmVjdGlvbgorICAgICAgICB3YXMgZXN0YWJsaXNoZWQKKyAgICAgLS0+CisgICAgPG1ldGhvZCBuYW1lPSJhczNDb25uZWN0aW9uU3VjY2VzcyI+CisgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJhczNDb25uZWN0aW9uU3VjY2VzcyBjb250aW51ZSBsb2FkaW5nIik7CisgICAgICAgIC8vc2V0IGRlZmF1bHQgdmFsdWVzIGFuZCBnZXQgYWxyZWFkeSBhdmFpbGlibGUgc3RyZWFtcworICAgICAgICAvL2l0IGNhbiBoYXBwZW4gdGhhdCBpZiB5b3UgY2xpY2sgdG8gZXhpdCB0aGUgcm9vbSB0aGUgdmlld3MgYXJlIG5vdCAKKyAgICAgICAgLy9ub3QgY2xlYW5lZCB1cCB5ZXQgYW5kIHlvdSByZWNlaXZlIHRoaXMgZXZlbnQgZnJvbSB0aGUgTG9jYWxDb25uZWN0aW9uCisgICAgICAgIGlmICh0aGlzWyJnZXRSb29tTW9kZXJhdG9yc0J5Um9vbUlkIl0pIHsKKyAgICAgICAgICAgIHRoaXMuZ2V0Um9vbU1vZGVyYXRvcnNCeVJvb21JZC5kb0NhbGwoKTsKKyAgICAgICAgfQorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImdldFJvb21Nb2RlcmF0b3JzQnlSb29tSWQiIGZ1bmNuYW1lPSJjb25mZXJlbmNlc2VydmljZS5nZXRSb29tTW9kZXJhdG9yc0J5Um9vbUlkIiAKKyAgICAgICAgICAgICAgICAgICAgICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAgCisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gY2FudmFzLnNlc3Npb25JZDs8L21ldGhvZD48L25ldHBhcmFtPiAgICAKKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBoaWIuY3VycmVudHJvb21pZDs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJnZXRSb29tTW9kZXJhdG9yc0J5Um9vbUlkOiAiLHZhbHVlKTsKKyAgICAgICAgICAgICAgICBjYW52YXMuYmVjb21lU3VwZXJNb2RlcmF0b3IgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBwYXJlbnQuc2V0Um9vbVZhbHVlcy5hcHBseURlZmF1bHRNb2RlcmF0aW9uID0gY2FudmFzLmJlY29tZW1vZGVyYXRvcjsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTx2YWx1ZS5sZW5ndGg7aSsrKSB7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAodmFsdWVbaV0udXNlci51c2VyX2lkID09IGNhbnZhcy51c2VyX2lkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuc2V0Um9vbVZhbHVlcy5hcHBseURlZmF1bHRNb2RlcmF0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5iZWNvbWVTdXBlck1vZGVyYXRvciA9IHZhbHVlW2ldLmlzU3VwZXJNb2RlcmF0b3I7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy5pbmZvKCJNYWtlIHRoaXMgVXNlciB0byBhbiBNb2RlcmF0b3IiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiY2FudmFzLmJlY29tZW1vZGVyYXRvcjogIixjYW52YXMuYmVjb21lbW9kZXJhdG9yKTsKKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiY2FudmFzLmJlY29tZVN1cGVyTW9kZXJhdG9yOiAiLGNhbnZhcy5iZWNvbWVTdXBlck1vZGVyYXRvcik7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgY2FudmFzLmN1cnJlbnR1c2VyY29sb3IgPSBjYW52YXMuZ2V0Q29sb3JGb3JVc2VyKCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgdmFyIG9yZ2FuaXNhdGlvbl9pZCA9IDE7CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZShoaWIudXNlcm9iamVjdCk7IAorICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKGhpYi5jdXJyZW50ZG9tYWluT2JqKTsgCisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKGhpYi5jdXJyZW50ZG9tYWluT2JqICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgb3JnYW5pc2F0aW9uX2lkID0gaGliLmN1cnJlbnRkb21haW5PYmoub3JnYW5pc2F0aW9uX2lkCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnNldFJvb21WYWx1ZXMub3JnYW5pc2F0aW9uX2lkID0gb3JnYW5pc2F0aW9uX2lkOworICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnNldFJvb21WYWx1ZXMuZG9DYWxsKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAgICAgCisKKyAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJzZXRSb29tVmFsdWVzIiBmdW5jbmFtZT0ic2V0Um9vbVZhbHVlcyIgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gICAKKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJhcHBseURlZmF1bHRNb2RlcmF0aW9uIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ib3JnYW5pc2F0aW9uX2lkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGhpYi5jdXJyZW50cm9vbWlkOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LmFwcGx5RGVmYXVsdE1vZGVyYXRpb247PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBjYW52YXMuYmVjb21lU3VwZXJNb2RlcmF0b3I7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQub3JnYW5pc2F0aW9uX2lkOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gY2FudmFzLmN1cnJlbnR1c2VyY29sb3I7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJyb29tU3RhdHVzIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZSB0aGUgcnRtcGNvbm5lY3Rpb24KKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInNldFJvb21WYWx1ZXMxOiAiLHZhbHVlKTsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInNldFJvb21WYWx1ZXMyOiAiLGhpYi5jdXJyZW50cm9vbWlkKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHJvb21TdGF0dXMucm9vbUZ1bGwpIHsKKyAgICAgICAgICAgICAgICBjYW52YXMudGhpc2hpYi5zaG93RnVsbE1lc3NhZ2UgPSB0cnVlOworICAgICAgICAgICAgICAgIGNhbnZhcy50aGlzaGliLmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHJvb21TdGF0dXMuYnJvd3NlclN0YXR1cy5icm93c2VySW5pdGVkKSB7CisgICAgICAgICAgICAgICAgdmFyIHRPYmogPSBuZXcgT2JqZWN0KCk7CisgICAgICAgICAgICAgICAgdE9ialswXSA9ICJuZXdCcm93c2VyVVJMIjsKKyAgICAgICAgICAgICAgICB0T2JqWzFdID0gcm9vbVN0YXR1cy5icm93c2VyU3RhdHVzLmN1cnJlbnRVUkw7CisgICAgICAgICAgICAgICAgY2FudmFzLnN0YXJ0QnJvd3Nlcih0T2JqKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIHZhbHVlID0gcm9vbVN0YXR1cy5jbGllbnRMaXN0OworICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgKytpKXsKKyAgICAgICAgICAgICAgICBpZiAoIHZhbHVlW2ldLnN0cmVhbWlkID09IGNhbnZhcy5zdHJlYW1pZCApIHsKKyAgICAgICAgICAgICAgICAgICAgY2FudmFzLmlzQWxsb3dlZFRvRHJhdyA9IHZhbHVlW2ldLmNhbkRyYXc7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQuYWRkSXRlbSh2YWx1ZVtpXS5jb25uZWN0ZWRTaW5jZSx2YWx1ZVtpXS5pc01vZCx2YWx1ZVtpXS5zdHJlYW1pZCx2YWx1ZVtpXS51c2VybmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLHZhbHVlW2ldLmZvcm1hdGVkRGF0ZSx2YWx1ZVtpXS51c2VycG9zLHZhbHVlW2ldLnVzZXJjb2xvcix2YWx1ZVtpXSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvL3RoaXMgY29udGVudCBtdXN0IGJlIGluaXRlZCBfYWZ0ZXJfIHNldHRpbmcgdGhlIGRlZmF1bHQgdmFsdWVzCisgICAgICAgICAgICBjYW52YXMudGhpc2hpYi5nZXRDdXJyZW50TW9kZXJhdG9yTGlzdC5kb0NhbGwoKTsgCisgICAgICAgICAgICAvL0ZJWE1FIElzc3VlLTEwNzYKKyAgICAgICAgICAgIGNhbnZhcy50aGlzaGliLmNoZWNrTHpSZWNvcmRpbmcuZG9DYWxsKCk7CisgICAgICAgICAgICBpZiAoY2FudmFzLl9jdXJyZW50Q2hhdFBhbmVsLnZpc2libGUpIHsKKwkJCQljYW52YXMuX2N1cnJlbnRDaGF0UGFuZWwudG9nZ2xlb3BlbigpOworCQkJfQorICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4gIAorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4KKworICAgIDwhLS0gaW52b2tlZCBpZiBhbm90aGVyIGNsaWVudCBsb2dzIGludG8gdGhlIHJvb20gCisgICAgYWZ0ZXIgY2hvb3NpbmcgZGV2aWNlcyAtLT4gICAgIAorICAgIDxtZXRob2QgbmFtZT0ic2V0QVZTZXR0aW5nc1RvQ2xpZW50IiBhcmdzPSJyY2wiPgorICAgICAgICAgdGhpcy5fdmlkZW92aWV3Y29udGVudC5zZXRBVlNldHRpbmdzVG9DbGllbnQocmNsKTsKKyAgICA8L21ldGhvZD4gCisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJhZGRJdGVtIiBhcmdzPSJjb25uZWN0ZWRTaW5jZSxpc01vZCxzdHJlYW1pZCx1c2VybmFtZSx1c2Vycm9vbSxmb3JtYXRlZERhdGUscG9zaXRpb24sY29sb3Isb2JqZWN0Ij4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiaW5pdGlhbGl6ZVN0cmVhbXMgYWRkSXRlbTogIixjb25uZWN0ZWRTaW5jZSxvYmplY3QpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvL0RvIGluaXQgb25seSBpbiBjYXNlIHRoaXMgc3RyZWFtIGlzIE5PVCB0aGUgc2FtZSBhcyB3ZSBhcmUKKyAgICAgICAgICAgIGlmIChzdHJlYW1pZCE9Y2FudmFzLnN0cmVhbWlkKXsKKyAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCI/Pz8/Pz8/PyBvYmplY3QuaXNCcm9hZGNhc3RpbmcgOjogIixvYmplY3QuaXNCcm9hZGNhc3RpbmcpOworICAgICAgICAgICAgICAgIHRoaXMuX3ZpZGVvdmlld2NvbnRlbnQuY3JlYXRlVmlkZW8ob2JqZWN0LnB1YmxpY1NJRCwgb2JqZWN0LmZpcnN0bmFtZSsnICcrb2JqZWN0Lmxhc3RuYW1lLCBvYmplY3QuYnJvYWRDYXN0SUQsIG9iamVjdC5hdnNldHRpbmdzLCBvYmplY3QuaW50ZXJ2aWV3UG9kSWQsIG9iamVjdCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgIAorICAgICAgICAgICAgLy9kbyBhZGQgc2VsZiB0b28KKyAgICAgICAgICAgIHRoaXMuX3BhcnRpY2lwYW50cy5hZGRJdGVtKG9iamVjdCk7CisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iYWRkQ2xpZW50SXRlbSIgYXJncz0iY29ubmVjdGVkU2luY2UsaXNNb2Qsc3RyZWFtaWQsdXNlcm5hbWUscm9vbV9pZCxmb3JtYXRlZERhdGUscG9zaXRpb24sY29sb3Isb2JqZWN0Ij4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCIjIyMgaW5pdGlhbGl6ZVN0cmVhbXMgYWRkQ2xpZW50SXRlbTogIixjb25uZWN0ZWRTaW5jZSxpc01vZCxzdHJlYW1pZCx1c2VybmFtZSxyb29tX2lkLGZvcm1hdGVkRGF0ZSk7CisKKyAgICAgICAgaWYgKGNhbnZhcy5wdWJsaWNTSUQgIT0gb2JqZWN0LnB1YmxpY1NJRCl7CisgICAgICAgICAgICB0aGlzLl92aWRlb3ZpZXdjb250ZW50LmNyZWF0ZVZpZGVvT2JqZWN0KG9iamVjdC5wdWJsaWNTSUQsIGZhbHNlLCBvYmplY3QuaW50ZXJ2aWV3UG9kSWQsIG9iamVjdCk7CisgICAgICAgIH0KKworICAgICAgICAvL0RvIEFkZCBpdCBhbnl3YXkKKyAgICAgICAgdGhpcy5fcGFydGljaXBhbnRzLmFkZEl0ZW0ob2JqZWN0KTsKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgICAgIAorICAgIDwhLS0KKyAgICAgICAgaW52b2tlZCB3aGVuZXZlciBhIFVzZXIgc3RhcnRzIHRvIFN0cmVhbSBWaWRlbyBpbiB0aGlzIFJvb20sCisgICAgICAgIGludGVydmlld1BvZElkIGhhcyBvbmx5IGEgbWVhbmluZyBpbiB0aGUgUm9vbSBUeXBlIEludGVydmlldworICAgICAtLT4KKyAgICA8bWV0aG9kIG5hbWU9InN0YXJ0U3RyZWFtIiBhcmdzPSJwdWJsaWNTSUQsYnJvYWRjYXN0SWQsZmlyc3RuYW1lLGxhc3RuYW1lLGludGVydmlld1BvZElkLFZXaWR0aCxWSGVpZ2h0Ij4KKyAgICAgICAgdGhpcy5fdmlkZW92aWV3Y29udGVudC5zdGFydFN0cmVhbShwdWJsaWNTSUQsYnJvYWRjYXN0SWQsZmlyc3RuYW1lLGxhc3RuYW1lLGludGVydmlld1BvZElkLFZXaWR0aCxWSGVpZ2h0KTsKKyAgICA8L21ldGhvZD4KKworICAgIDxtZXRob2QgbmFtZT0idXBkYXRlTXV0ZVN0YXR1c1ZpZGVvVmlldyIgYXJncz0icm9vbUNsaWVudCI+CisgICAgICAgIHRoaXMuX3ZpZGVvdmlld2NvbnRlbnQudXBkYXRlTXV0ZVN0YXR1c1ZpZGVvVmlldyhyb29tQ2xpZW50KTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InNldFNwZWFraW5nQnlQb3MiIGFyZ3M9InB1YmxpY1NJRCxib29sIj4KKyAgICAgICAgdGhpcy5fdmlkZW92aWV3Y29udGVudC5zZXRTcGVha2luZ0J5UG9zKHB1YmxpY1NJRCwgYm9vbCk7CisgICAgPC9tZXRob2Q+ICAKKyAgICAKKyAgICA8IS0tLSAKKyAgICAgICAgc3RvcHMgdGhlIHN0cmVhbWluZyBidXQgZG9lcyBub3QgZGVzdHJveSB0aGUgdmlldworICAgICAgICBAcGFyYW0gaW50IGJyb2FkY2FzdElkIGJyb2FkY2FzdElkCisgICAgIC0tPgorICAgIDxtZXRob2QgbmFtZT0iY2xvc2VTdHJlYW1DbGllbnQiIGFyZ3M9InB1YmxpY1NJRCI+CisgICAgICAgIHRoaXMuX3ZpZGVvdmlld2NvbnRlbnQuY2xvc2VTdHJlYW1DbGllbnQocHVibGljU0lEKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InJlbW92ZVZpZGVvQnlVc2VyIiBhcmdzPSJ1c2VyT2JqZWN0Ij4KKyAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInJlbW92ZVZpZGVvQnlVc2VyICIsdXNlck9iamVjdCk7CisgICAgICAgIHRoaXMuY2xvc2VTdHJlYW1DbGllbnQodXNlck9iamVjdC5wdWJsaWNTSUQpOworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iZGlzY29ubmVjdGNsaWVudCIgYXJncz0icHVibGljU0lEIj4KKyAgICAgICAgdGhpcy5fdmlkZW92aWV3Y29udGVudC5kaXNjb25uZWN0Y2xpZW50KHB1YmxpY1NJRCk7CisgICAgICAgIHRoaXMuX3BhcnRpY2lwYW50cy5kaXNjb25uZWN0Y2xpZW50KHB1YmxpY1NJRCk7CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJyZXNldEFsbFZhbHVlcyI+CisgICAgICAgIHRoaXMuX3ZpZGVvdmlld2NvbnRlbnQucmVzZXRBbGxWYWx1ZXMoKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8aW50ZXJ2aWV3TGlzdElubmVyIG5hbWU9Il9wYXJ0aWNpcGFudHMiIC8+CisgICAgCisgICAgPGNvbW1vblZpZGVvQ29tcG9uZW50QWRhcHRlciBuYW1lPSJfdmlkZW92aWV3Y29udGVudCIvPgorICAgIAorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ludGVydmlld3VzZXJsaXN0L2ludGVydmlld1VzZXJMaXN0SXRlbS5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvaW50ZXJ2aWV3dXNlcmxpc3QvaW50ZXJ2aWV3VXNlckxpc3RJdGVtLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzljYTZiCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ludGVydmlld3VzZXJsaXN0L2ludGVydmlld1VzZXJMaXN0SXRlbS5sengKQEAgLTAsMCArMSwxNTggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzxjbGFzcyBuYW1lPSJpbnRlcnZpZXdVc2VyTGlzdEl0ZW0iIGV4dGVuZHM9InZpZXciIHNob3doYW5kY3Vyc29yPSJmYWxzZSIgCisJICAgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdtYWluQm9yZGVyQ29sb3InKSB9IiB3aWR0aD0iMjUyIiBoZWlnaHQ9IjQyIj4KKwkKKwk8YXR0cmlidXRlIG5hbWU9ImNvbm5lY3RlZFNpbmNlIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpc01vZCIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0ic3RyZWFtaWQiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9InVzZXJuYW1lIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJ1c2Vycm9vbSIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iZm9ybWF0ZWREYXRlIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJmaXJzdG5hbWUiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9Imxhc3RuYW1lIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJ1c2VyX2lkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0icmVmT2JqIiB2YWx1ZT0ibnVsbCIgLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9ImlzU3VwZXJNb2RlcmF0b3IiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIvPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0iaXNTZWxlY3RlZCIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorICAgIAorCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAKKyAgICAgICAgICAgIC8vdGhpcy5fdXNlcnBpYy5zZXRBdHRyaWJ1dGUoJ3NyYycsZG93bmxvYWR1cmwpOyAKKyAgICAgICAgICAgIC8vVGhpcyBpcyBhIHdvcmthcm91bmQgY2F1c2UgaW4gTFBTLTQuMi54IGltbWVkaWF0ZWxseSBsb2FkaW5nIGRvZXMgbm90IHdvcmsKKyAgICAgICAgICAgIGx6LlRpbWVyLmFkZFRpbWVyKCBuZXcgTHpEZWxlZ2F0ZSggdGhpcywgImZhZGVUZXh0IiApLCAxMDAwICk7CisKKyAgICAgICAgICAgIGlmICh0aGlzLmlzTW9kKSB7CisgICAgICAgICAgICAJdGhpcy51c2VyU3RhdHVzLnNldEF0dHJpYnV0ZSgiZnJhbWUiLDMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoY2FudmFzLnB1YmxpY1NJRCA9PSB0aGlzLnJlZk9iai5wdWJsaWNTSUQpIHsKKyAgICAgICAgICAgICAgICAvL3RoaXMuX3VzZXJOYW1lLnNldEF0dHJpYnV0ZSgiZm9udHN0eWxlIiwiYm9sZCIpOworICAgICAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJiZ2NvbG9yIiwweDAwRkYwMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMudXBkYXRlSWNvbkJ5TW9kKCk7CisgICAgICAgIF1dPgorICAgIDwvaGFuZGxlcj4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InVwZGF0ZUljb25CeU1vZCI+CisgICAgCXRoaXMuaXNNb2QgPSBjYW52YXMuZ2V0SXNNb2RlcmF0b3JCeVB1YmxpY1NJRCh0aGlzLnJlZk9iai5wdWJsaWNTSUQpOworICAgIAlpZiAodGhpcy5pc01vZCkgeworICAgICAgICAgICAgdGhpcy51c2VyU3RhdHVzLnNldEF0dHJpYnV0ZSgiZnJhbWUiLDMpOworICAgICAgICB9IGVsc2UgaWYgKHRoaXMucmVmT2JqLmNhbkRyYXcpIHsKKyAgICAgICAgCXRoaXMudXNlclN0YXR1cy5zZXRBdHRyaWJ1dGUoImZyYW1lIiwyKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgCXRoaXMudXNlclN0YXR1cy5zZXRBdHRyaWJ1dGUoImZyYW1lIiwxKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKHRoaXMuaXNTZWxlY3RlZCkgeworICAgICAgICAJdGhpcy5fbWluaUljb25zLm9uaW5pdC5zZW5kRXZlbnQoKTsKKyAgICAgICAgfQorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iZmFkZVRleHQiIGFyZ3M9Imlnbm9yZT1udWxsIj4gCisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgaWYgKHRoaXMucmVmT2JqLnBpY3R1cmVfdXJpLnN0YXJ0c1dpdGgoImh0dHAiKSB8fCB0aGlzLnJlZk9iai5waWN0dXJlX3VyaS5zdGFydHNXaXRoKCJodHRwcyIpKSB7CisgICAgICAgICAgICAgICAgdmFyIGRvd25sb2FkdXJsID0gdGhpcy5yZWZPYmoucGljdHVyZV91cmk7CisgICAgICAgICAgICAvL0RvIExvYWQgdGhlIEN1c3RvbSBNb29kbGUgUHJvZmlsZWUgUGljdHVyZQorICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnJlZk9iai5leHRlcm5hbFVzZXJJZCA+PSAxICYmIHRoaXMucmVmT2JqLmV4dGVybmFsVXNlclR5cGUgPT0gIm1vb2RsZSIpIHsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5yZWZPYmouZXh0ZXJuYWxVc2VySWQgPT0gMSkgeworICAgICAgICAgICAgICAgICAgICAvL01lYW5zIGl0IGlzIGEgZ3Vlc3QKKyAgICAgICAgICAgICAgICAgICAgdmFyIGRvd25sb2FkdXJsID0gY2FudmFzLm1vb2RsZVd3d1Jvb3QrIi9waXgvdS9mMi5wbmciOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBkb3dubG9hZHVybCA9IGNhbnZhcy5tb29kbGVXd3dSb290KyIvdXNlci9waXgucGhwLyIrIHRoaXMucmVmT2JqLmV4dGVybmFsVXNlcklkICsiL2YyLmpwZyI7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgCisgICAgICAgICAgICAgICAgdmFyIGRvd25sb2FkdXJsID0gY2FudmFzLmdldFVybCgpICsgJ0Rvd25sb2FkSGFuZGxlcj9maWxlTmFtZT1DSEFUJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKycmbW9kdWxlTmFtZT1jaGF0JnBhcmVudFBhdGg9JnJvb21faWQ9JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKycmcmVtb3RlVXNlcmlkPScrdGhpcy51c2VyX2lkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArJyZzaWQ9JytjYW52YXMuc2Vzc2lvbklkOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuX3VzZXJwaWMuc2V0QXR0cmlidXRlKCdzcmMnLGRvd25sb2FkdXJsKTsgCisgICAgICAgIF1dPiAgICAgICAgICAKKyAgICA8L21ldGhvZD4KKyAgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgCXBhcmVudC5wYXJlbnQucGFyZW50LnNlbGVjdEl0ZW0odGhpcyk7CisgICAgPC9oYW5kbGVyPgorICAgICAKKyAgICA8bWV0aG9kIG5hbWU9InNlbGVjdCI+CisgICAgCWlmICghdGhpcy5pc1NlbGVjdGVkKSB7CisJICAgIAluZXcgbHouaW50ZXJ2aWV3TW9kZXJhdGlvbk1pbmlJY29ucyh0aGlzLHtuYW1lOidfbWluaUljb25zJyxhbGlnbjoncmlnaHQnLAorICAgICAgICAgICAgICAgIGlzTW9kOnRoaXMuaXNNb2QsCisgICAgICAgICAgICAgICAgaXNTdXBlck1vZGVyYXRvcjp0aGlzLmlzU3VwZXJNb2RlcmF0b3J9KTsKKwkgICAgCXRoaXMuaXNTZWxlY3RlZCA9IHRydWU7CisJICAgIAl0aGlzLl91c2VyTmFtZS50ZXh0ID0gIiI7CisJICAgIAl0aGlzLnNob3dJdGVtLnNldEF0dHJpYnV0ZSgnc3RhcnRlZCcsIHRydWUpOworICAgIAl9CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJkZXNlbGVjdCI+CisgICAgCWlmICh0aGlzLmlzU2VsZWN0ZWQpIHsKKwkgICAgCXRoaXMuX21pbmlJY29ucy5kZXN0cm95KCk7CisJICAgIAl0aGlzLmlzU2VsZWN0ZWQgPSBmYWxzZTsKKwkgICAgCXRoaXMuX3VzZXJOYW1lLnRleHQgPSB0aGlzLmZpcnN0bmFtZSsnICcrdGhpcy5sYXN0bmFtZTsKKwkgICAgCXRoaXMuY2xvc2VJdGVtLnNldEF0dHJpYnV0ZSgnc3RhcnRlZCcsIHRydWUpOworICAgIAl9CisgICAgPC9tZXRob2Q+CisgICAgIAorICAgIDxpbWFnZSBuYW1lPSJfdXNlcnBpYyIgc3RyZXRjaGVzPSJib3RoIiB4PSIxIiB5PSIxIj4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25sb2FkIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIGlmICh0aGlzLmhlaWdodCA+IDM4KSB7CisgICAgICAgICAgICAgICAgICAgIC8vSWYgYmlnZ2VyIHRoZW4gY29udGFpbnRlciB0aGVuIHNjYWxlIGl0CisgICAgICAgICAgICAgICAgICAgIHZhciB3aWR0aCA9IHRoaXMud2lkdGgvKHRoaXMuaGVpZ2h0LzM4KTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsMzgpOworICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnd2lkdGgnLHdpZHRoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPgorICAgIDwvaW1hZ2U+CisgICAgCisgICAgPHZpZXcgbmFtZT0idXNlclN0YXR1cyIgYWxpZ249InJpZ2h0IiBmcmFtZT0iMSIgCisgICAgCSAgcmVzb3VyY2U9InVzZXJzdGF0dXNfbXVsdGlmcmFtZV9yc2MiIC8+CisgICAgCisgICAgPGxhYmVsVGV4dCBuYW1lPSJfdXNlck5hbWUiIHg9IjQxIiB5PSIyIgorICAgIAkJICAgdGV4dD0iJG9uY2V7IHBhcmVudC5maXJzdG5hbWUgKyAnICcgKyBwYXJlbnQubGFzdG5hbWUgfSIgLz4KKyAgICAgCisgICAgPGFuaW1hdG9yZ3JvdXAgbmFtZT0ic2hvd0l0ZW0iIHN0YXJ0ZWQ9ImZhbHNlIiBwcm9jZXNzPSJzaW11bHRhbmVvdXMiPgorICAgIAk8YW5pbWF0b3IgYXR0cmlidXRlPSJoZWlnaHQiIHRvPSI2MiIgZHVyYXRpb249Ijc1MCIgLz4KKyAgICAJPGFuaW1hdG9yIGF0dHJpYnV0ZT0id2lkdGgiIHRvPSIyNTIiIGR1cmF0aW9uPSI3NTAiIC8+CisgICAgPC9hbmltYXRvcmdyb3VwPgorICAgIAorICAgIDxhbmltYXRvcmdyb3VwIG5hbWU9ImNsb3NlSXRlbSIgc3RhcnRlZD0iZmFsc2UiIHByb2Nlc3M9InNpbXVsdGFuZW91cyI+CisgICAgICAgIDxhbmltYXRvciBhdHRyaWJ1dGU9ImhlaWdodCIgdG89IjQyIiBkdXJhdGlvbj0iNzUwIiAvPgorICAgICAgICA8YW5pbWF0b3IgYXR0cmlidXRlPSJ3aWR0aCIgdG89IjI1MiIgZHVyYXRpb249Ijc1MCIgLz4KKyAgICA8L2FuaW1hdG9yZ3JvdXA+CisgICAgICAgICAgICAgICAgIAorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ludGVydmlld3VzZXJsaXN0L2ludGVydmlld1ZpZGVvQm94Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9pbnRlcnZpZXd1c2VybGlzdC9pbnRlcnZpZXdWaWRlb0JveC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2VlZWMzNAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9pbnRlcnZpZXd1c2VybGlzdC9pbnRlcnZpZXdWaWRlb0JveC5sengKQEAgLTAsMCArMSwxMTkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgICAgICAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisgICAgCisKKzxjbGFzcyBuYW1lPSJpbnRlcnZpZXdWaWRlb0Nob29zZVVzZXIiIGV4dGVuZHM9Imd1aVByZXNlbnRlciIgcmVzaXplYWJsZT0iZmFsc2UiCisgICAgd2lkdGg9IjIyMCIgaGVpZ2h0PSIxMDAiIGNsb3NhYmxlPSJ0cnVlIiBsYWJlbGlkPSI5MTAiIHk9IjEwIiBtaW5pbWl6YWJsZT0iZmFsc2UiPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0icmVmT2JqIiB2YWx1ZT0ibnVsbCIgLz4KKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgICAgICB0aGlzLmdldENsaWVudExpc3RTY29wZS5kb0NhbGwoKTsKKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iZ2V0Q2xpZW50TGlzdFNjb3BlIiBmdW5jbmFtZT0iZ2V0Q2xpZW50TGlzdFNjb3BlIiAKKyAgICAgICAgICAgICAgICAgICAgICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAgIAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCIrKysrKysrKysrKysrKysrKyBnZXRDbGllbnRMaXN0U2NvcGUgOiAiLHZhbHVlKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgICAgIHBhcmVudC5fdXNlcnMuYWRkSXRlbSh2YWx1ZVtpXS5maXJzdG5hbWUrJywnK3ZhbHVlW2ldLmxhc3RuYW1lKycgWycrdmFsdWVbaV0udXNlcm5hbWUrJ10nLHZhbHVlW2ldLnB1YmxpY1NJRCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHBhcmVudC5fdXNlcnMuc2VsZWN0SXRlbUF0KDApOworICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4gIAorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4KKyAgICAKKyAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjkxMSIgeD0iMiIgeT0iMjIiLz4KKyAgICAKKyAgICA8cmVzZXRDb21ib2JveCBuYW1lPSJfdXNlcnMiIHg9IjIiIHk9IjQyIiB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aC00IH0iLz4KKyAgICAKKyAgICA8c2ltcGxlTGFiZWxCdXR0b24gbGFiZWxpZD0iNjEiIHdpZHRoPSIxMDAiIHg9IiRvbmNleyBwYXJlbnQud2lkdGggLSAxMDUgfSIgeT0iJG9uY2V7IHBhcmVudC5oZWlnaHQgLSAyNiB9Ij4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICB0aGlzLnBhcmVudC5jbG9zZSgpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9zaW1wbGVMYWJlbEJ1dHRvbj4gICAgCisgICAgCisgICAgPHNpbXBsZUxhYmVsQnV0dG9uIGxhYmVsaWQ9IjYwIiB3aWR0aD0iMTAwIiB4PSIkb25jZXsgcGFyZW50LndpZHRoIC0gMjEwIH0iIHk9IiRvbmNleyBwYXJlbnQuaGVpZ2h0IC0gMjYgfSI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgdmFyIHZhbHVlQ29tYm9ib3ggPSBwYXJlbnQuX3VzZXJzLmdldFZhbHVlKCk7CisgICAgICAgICAgICBpZiAodGhpcy5wYXJlbnQucmVmT2JqLnNlbmRDb25maXJtYXRpb24odmFsdWVDb21ib2JveCkpIHsKKyAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5jbG9zZSgpOworICAgICAgICAgICAgfQorICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9zaW1wbGVMYWJlbEJ1dHRvbj4gICAKKyAgICAKKzwvY2xhc3M+CisgCis8Y2xhc3MgbmFtZT0iaW50ZXJ2aWV3VmlkZW9Cb3giIGV4dGVuZHM9InZpZXciIHdpZHRoPSIzMjIiIGhlaWdodD0iMjgxIiBiZ2NvbG9yPSIweDAwMDAwMCI+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpbnRlcnZpZXdQb2RJZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InN0YXJ0SW50ZXJWaWV3Ij4KKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInN0YXJ0SW50ZXJWaWV3IDo6ICIpOworICAgICAgICB2YXIgdHggPSB0aGlzLmdldEF0dHJpYnV0ZVJlbGF0aXZlKCJ4IixjYW52YXMpOworICAgICAgICB2YXIgdHkgPSB0aGlzLmdldEF0dHJpYnV0ZVJlbGF0aXZlKCJ5IixjYW52YXMpOworICAgICAgICBjYW52YXMuX3ZpZGVvY29udGFpbmVyLl92aWRlb3ZpZXdjb250ZW50LnNob3dEZXZpY2VQb3BVcEludGVydmlldyhmYWxzZSx0aGlzLmludGVydmlld1BvZElkLHR4LHR5LHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpOworICAgIDwvbWV0aG9kPgorCisgICAgPG1ldGhvZCBuYW1lPSJzZW5kQ29uZmlybWF0aW9uIiBhcmdzPSJwdWJsaWNTSUQiPgorICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2VuZENvbmZpcm1hdGlvbiA6OiAiLHB1YmxpY1NJRCk7CisgICAgICAgIAorICAgICAgICBjYW52YXMudGhpc2hpYi5zZXRCcm9hZENhc3RpbmdGbGFnLnB1YmxpY1NJRE9mTmV3TW9kZXJhdG9yID0gcHVibGljU0lEOworICAgICAgICBjYW52YXMudGhpc2hpYi5zZXRCcm9hZENhc3RpbmdGbGFnLmlzQWxsb3dlZFRvQnJvYWRDYXN0QVYgPSB0cnVlOworICAgICAgICBjYW52YXMudGhpc2hpYi5zZXRCcm9hZENhc3RpbmdGbGFnLmludGVydmlld1BvZElkID0gdGhpcy5pbnRlcnZpZXdQb2RJZDsKKyAgICAgICAgY2FudmFzLnRoaXNoaWIuc2V0QnJvYWRDYXN0aW5nRmxhZy5kb0NhbGwoKTsgCisgICAgICAgIAorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJzZW5kTWVzc2FnZVdpdGhDbGllbnRCeVB1YmxpY1NJRCIgZnVuY25hbWU9InNlbmRNZXNzYWdlV2l0aENsaWVudEJ5UHVibGljU0lEIiAKKyAgICAgICAgICAgICAgICAgICAgICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAgCisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ibWVzc2FnZU9iamVjdCIgdmFsdWU9Im51bGwiIC8+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0icHVibGljU0lEIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50Lm1lc3NhZ2VPYmplY3Q7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucHVibGljU0lEOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIitzZW5kTWVzc2FnZVdpdGhDbGllbnRCeVB1YmxpY1NJRCA6ICIsdmFsdWUpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4gIAorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4KKyAgICAKKyAgICA8c2ltcGxlTGFiZWxCdXR0b24gbGFiZWxpZD0iOTEwIiBoZWlnaHQ9IjMwIiB2YWxpZ249Im1pZGRsZSIgYWxpZ249ImNlbnRlciIKKyAgICAgICAgICAgICAgIHZpc2libGU9IiR7ICgoY2FudmFzLmlzbW9kZXJhdG9yKSA/IHRydWUgOiAoKGNhbnZhcy5pc0FsbG93ZWRUb0RyYXcpID8gdHJ1ZSA6IGZhbHNlICkpIH0iPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIiBhcmdzPSJyZWZPYmoiPgorICAgICAgICAgICAgbmV3IGx6LmludGVydmlld1ZpZGVvQ2hvb3NlVXNlcihjYW52YXMseworICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNJbnRlcnZpZXc6dHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6dGhpcy5nZXRBdHRyaWJ1dGVSZWxhdGl2ZSgieCIsY2FudmFzKS0xMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHk6dGhpcy5nZXRBdHRyaWJ1dGVSZWxhdGl2ZSgieSIsY2FudmFzKS0yMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOnRoaXMud2lkdGgrMjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZPYmo6cGFyZW50CisgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgIDwvc2ltcGxlTGFiZWxCdXR0b24+Cis8L2NsYXNzPgorCisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9pbnRlcnZpZXd1c2VybGlzdC9pbnRlcnZpZXdXaGl0ZWJvYXJkLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9pbnRlcnZpZXd1c2VybGlzdC9pbnRlcnZpZXdXaGl0ZWJvYXJkLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNGQyMGJiCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ludGVydmlld3VzZXJsaXN0L2ludGVydmlld1doaXRlYm9hcmQubHp4CkBAIC0wLDAgKzEsMTI0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgICAgICAgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorICAgIAorPGNsYXNzIG5hbWU9ImludGVydmlld1doaXRlYm9hcmQiIGV4dGVuZHM9InZpZXciIGNsaXA9InRydWUiPgorICAgICAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgICAgICBjYW52YXMuX2RyYXdhcmVhID0gdGhpczsKKyAgICAgICAgdGhpcy5yZWxvYWRTdGF0dXMoKTsKKyAgICA8L2hhbmRsZXI+CisgICAgPGhhbmRsZXIgbmFtZT0ib25vcGVuV2hpdGVCb2FyZCIgPgorICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiLS0gb25PcGVuV2hpdGVCb2FyZCAtLSIpOworICAgIDwvaGFuZGxlcj4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9Im5ld0ludGVydmlld1N0YXJ0aW5nIiBhcmdzPSJyZWZPYmoiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgdGhpcy5fdmlkZW92aWV3Y29udGVudFsiaW50ZXJ2aWV3VmlkZW9Cb3giK3JlZk9iai5pbnRlcnZpZXdQb2RJZF0uc3RhcnRJbnRlclZpZXcoKTsKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgICAgIAorICAgIDxtZXRob2QgbmFtZT0icmVsb2FkU3RhdHVzIj4KKyAgICAgICAgdGhpcy5nZXRJbnRlcnZpZXdSZWNvcmRpbmdTdGF0dXMuZG9DYWxsKCk7CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPCEtLQorICAgIGdldEludGVydmlld1JlY29yZGluZ1N0YXR1cygpCisgICAgIC0tPgorICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImdldEludGVydmlld1JlY29yZGluZ1N0YXR1cyIgZnVuY25hbWU9ImdldEludGVydmlld1JlY29yZGluZ1N0YXR1cyIgCisgICAgICAgICAgICAgICAgICAgICAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gIAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJnZXRJbnRlcnZpZXdSZWNvcmRpbmdTdGF0dXM6ICIsdmFsdWUpOworICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkgeworICAgICAgICAgICAgICAgICAgICBwYXJlbnQuX3JlY1N0YXJ0ZWQuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHBhcmVudC5fcmVjU3RhcnRlZC5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPgorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4gCisgICAgCisgICAgPHNpbXBsZWxheW91dCBheGlzPSJ5IiBzcGFjaW5nPSIyIiAvPgorICAgIAorICAgIDxjb21tb25WaWRlb1ZpZXdDb250ZW50IG5hbWU9Il92aWRlb3ZpZXdjb250ZW50IiB4PSI0MCIgPgorICAgICAgICA8c2ltcGxlbGF5b3V0IGF4aXM9IngiIHNwYWNpbmc9IjIiIC8+CisgICAgICAgIAorICAgICAgICA8aW50ZXJ2aWV3VmlkZW9Cb3ggbmFtZT0iaW50ZXJ2aWV3VmlkZW9Cb3gxIiBpbnRlcnZpZXdQb2RJZD0iMSIgLz4KKyAgICAgICAgPGludGVydmlld1ZpZGVvQm94IG5hbWU9ImludGVydmlld1ZpZGVvQm94MiIgeD0iMzI0IiBpbnRlcnZpZXdQb2RJZD0iMiIgLz4KKyAgICA8L2NvbW1vblZpZGVvVmlld0NvbnRlbnQ+CisgICAgCisgICAgPHZpZXcgbmFtZT0iX2ludGVydmlldyIgYWxpZ249ImNlbnRlciIgdmlzaWJsZT0iJHsgY2FudmFzLmlzbW9kZXJhdG9yIH0iPgorICAgICAgICAKKyAgICAgICAgPCEtLQorICAgICAgICAgICBwdWJsaWMgc3luY2hyb25pemVkIEJvb2xlYW4gc3RhcnRJbnRlcnZpZXdSZWNvcmRpbmcoKQorICAgICAgICAgLS0+CisgICAgICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9InN0YXJ0SW50ZXJ2aWV3UmVjb3JkaW5nIiBmdW5jbmFtZT0ic3RhcnRJbnRlcnZpZXdSZWNvcmRpbmciIAorICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAgCisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInN0YXJ0SW50ZXJ2aWV3UmVjb3JkaW5nOiAiLHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCF2YWx1ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgbmV3IGx6LmxhYmVsZXJyb3JQb3B1cChjYW52YXMse2Vycm9ybGFiZWxpZDo5MTV9KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIF1dPgorICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8L25ldFJlbW90ZUNhbGxIaWI+ICAgICAgICAgIAorICAgICAgICAKKyAgICAgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0ic3RvcEludGVydmlld1JlY29yZGluZyIgZnVuY25hbWU9InN0b3BJbnRlcnZpZXdSZWNvcmRpbmciIAorICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAgCisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInN0b3BJbnRlcnZpZXdSZWNvcmRpbmc6ICIsdmFsdWUpOworICAgICAgICAgICAgICAgICAgICBpZiAoIXZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgbHoubGFiZWxlcnJvclBvcHVwKGNhbnZhcyx7ZXJyb3JsYWJlbGlkOjkxNn0pOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgXV0+CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4gIAorICAgICAgICAKKyAgICAgICAgPHNpbXBsZWxheW91dCBheGlzPSJ4IiBzcGFjaW5nPSIyIiAvPgorICAgICAgICAKKyAgICAgICAgPHNpbXBsZUxhYmVsQnV0dG9uIG5hbWU9Il9zdGFydCIgbGFiZWxpZD0iOTEzIiBoZWlnaHQ9IjMwIiB3aWR0aD0iMjAwIj4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJTdGFydCBSZWNvcmRpbmciKTsKKyAgICAgICAgICAgICAgICBwYXJlbnQuc3RhcnRJbnRlcnZpZXdSZWNvcmRpbmcuZG9DYWxsKCk7CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgICAgICA8dmlldyB4PSIyIiB5PSI0IiByZXNvdXJjZT0iaW50ZXJ2aWV3X3JlY29yZF9zdGFydCIgLz4KKyAgICAgICAgPC9zaW1wbGVMYWJlbEJ1dHRvbj4KKyAgICAgICAgCisgICAgICAgIDxzaW1wbGVMYWJlbEJ1dHRvbiBuYW1lPSJfc3RvcCIgbGFiZWxpZD0iOTE0IiBoZWlnaHQ9IjMwIiB3aWR0aD0iMjAwIj4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJTdG9wIFJlY29yZGluZyIpOworICAgICAgICAgICAgICAgIHBhcmVudC5zdG9wSW50ZXJ2aWV3UmVjb3JkaW5nLmRvQ2FsbCgpOworICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAgICAgPHZpZXcgeD0iMiIgeT0iNCIgcmVzb3VyY2U9ImludGVydmlld19yZWNvcmRfc3RvcCIgLz4KKyAgICAgICAgPC9zaW1wbGVMYWJlbEJ1dHRvbj4KKyAgICAgICAgCisgICAgPC92aWV3PgorICAgIAorICAgIDx2aWV3IG5hbWU9Il9yZWNTdGFydGVkIiBhbGlnbj0iY2VudGVyIiB2aXNpYmlsaXR5PSJoaWRkZW4iPgorICAgICAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjkxNyIgLz4KKyAgICA8L3ZpZXc+CisgICAgICAgIAorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9pbnRlcnZpZXd1c2VybGlzdC9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9pbnRlcnZpZXd1c2VybGlzdC9saWJyYXJ5Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDFiMmY4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ludGVydmlld3VzZXJsaXN0L2xpYnJhcnkubHp4CkBAIC0wLDAgKzEsMzUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisJCisJPHJlc291cmNlIG5hbWU9ImludGVydmlld19yZWNvcmRfc3RhcnQiIHNyYz0icmVzb3VyY2VzL3dlYnN0YXJ0X3BsYXkucG5nIiAvPgorCTxyZXNvdXJjZSBuYW1lPSJpbnRlcnZpZXdfcmVjb3JkX3N0b3AiIHNyYz0icmVzb3VyY2VzL3dlYnN0YXJ0X3N0b3AucG5nIiAvPgorCQorICAgIDxpbmNsdWRlIGhyZWY9ImludGVydmlld1VzZXJMaXN0Lmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJpbnRlcnZpZXdXaGl0ZWJvYXJkLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJpbnRlcnZpZXdWaWRlb0JveC5sengiIC8+CisgICAgPGluY2x1ZGUgaHJlZj0iaW50ZXJ2aWV3TW9kZXJhdGlvbk1pbmlJY29ucy5sengiIC8+CisgICAgPGluY2x1ZGUgaHJlZj0iaW50ZXJ2aWV3VXNlckxpc3RJdGVtLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJpbnRlcnZpZXdMaXN0SW5uZXIubHp4IiAvPgorICAgIDxpbmNsdWRlIGhyZWY9Im1vZGVyYXRpb25NaW5pSWNvbnNJbnRlcnZpZXdVc2VyTGlzdC5sengiIC8+CisgICAgCisgICAgCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvaW50ZXJ2aWV3dXNlcmxpc3QvbW9kZXJhdGlvbk1pbmlJY29uc0ludGVydmlld1VzZXJMaXN0Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9pbnRlcnZpZXd1c2VybGlzdC9tb2RlcmF0aW9uTWluaUljb25zSW50ZXJ2aWV3VXNlckxpc3QubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlZGNlYTgyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2ludGVydmlld3VzZXJsaXN0L21vZGVyYXRpb25NaW5pSWNvbnNJbnRlcnZpZXdVc2VyTGlzdC5sengKQEAgLTAsMCArMSw2MSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9Im1vZGVyYXRpb25NaW5pSWNvbnNJbnRlcnZpZXdVc2VyTGlzdCIgZXh0ZW5kcz0idmlldyI+CisJCisgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAJdGhpcy51cGRhdGVJY29ucygpOworICAgIDwvaGFuZGxlcj4JCisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJ1cGRhdGVJY29ucyI+CisgICAgICAgIGlmIChjYW52YXMuaXNtb2RlcmF0b3IpIHsKKyAgICAgICAgICAgIHRoaXMuX2lzTW9kLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKyAgICAgICAgICAgIHRoaXMuX2lzTW9kQWRkYnV0dG9uLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5faXNNb2Quc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgICAgICAgICB0aGlzLl9pc01vZEFkZGJ1dHRvbi5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgIH0KKyAgICA8L21ldGhvZD4KKwkKKyAgICA8bWluaUljb25zIG5hbWU9Il9pc01vZCIgeD0iMCIgd2lkdGg9IjE2IiByZXNvdXJjZT0icGFydGljaXBhbnRzX2lzTW9kX3JzYyIgCisgICAgCQkgICBoZWlnaHQ9IjE2IiBzaG93aGFuZGN1cnNvcj0iZmFsc2UiPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIC8vTm90aGluZyBoYXBwZW5zIGhlcmUKKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDxsYWJlbFRvb2x0aXAgbmFtZT0iX3RleHQiIGxhYmVsaWQ9IjY4OCIgLz4KKyAgICA8L21pbmlJY29ucz4KKyAgICAKKyAgICA8bWluaUljb25zIG5hbWU9Il9pc01vZEFkZGJ1dHRvbiIgb3BhY2l0eT0iMC41IiB4PSIwIiB3aWR0aD0iMTYiIHJlc291cmNlPSJwYXJ0aWNpcGFudHNfaXNNb2RfcnNjIiBoZWlnaHQ9IjE2Ij4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICAvL0FwcGx5IGZvciBNb2RlcmF0aW9uCisgICAgICAgICAgICAgICAgY2FudmFzLnRoaXNoaWIuYXBwbHlGb3JNb2RlcmF0aW9uLmRvQ2FsbCgpOworICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGxhYmVsVG9vbHRpcCBuYW1lPSJfdGV4dCIgbGFiZWxpZD0iNjg1IiAvPgorICAgIDwvbWluaUljb25zPgorICAgICAgICAKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9pbnRlcnZpZXd1c2VybGlzdC9yZXNvdXJjZXMvd2Vic3RhcnRfcGxheS5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvaW50ZXJ2aWV3dXNlcmxpc3QvcmVzb3VyY2VzL3dlYnN0YXJ0X3BsYXkucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkMTM2ODMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvaW50ZXJ2aWV3dXNlcmxpc3QvcmVzb3VyY2VzL3dlYnN0YXJ0X3BsYXkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9pbnRlcnZpZXd1c2VybGlzdC9yZXNvdXJjZXMvd2Vic3RhcnRfc3RvcC5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvaW50ZXJ2aWV3dXNlcmxpc3QvcmVzb3VyY2VzL3dlYnN0YXJ0X3N0b3AucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzODliZjMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvaW50ZXJ2aWV3dXNlcmxpc3QvcmVzb3VyY2VzL3dlYnN0YXJ0X3N0b3AucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9saWJyYXJ5Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTE3Y2Q0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL2xpYnJhcnkubHp4CkBAIC0wLDAgKzEsNTggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisJCisJPCEtLSBGYW1GYW0gSWNvbiBTZXQgLS0+CisgICAgPHJlc291cmNlIG5hbWU9InJlc3luY3VzZXJfcnNjIiBzcmM9InJlc291cmNlcy9hcnJvd19yZWZyZXNoX3NtYWxsLnBuZyIgLz4KKyAgICAKKyAgICA8IS0tIEFQTCBhdXRob3Igc2ViYXdhZ25lciAtLT4KKyAgICA8cmVzb3VyY2UgbmFtZT0ic3BlYWtpbmciIHNyYz0icmVzb3VyY2VzL3NwZWFraW5nLnBuZyIgLz4KKyAgICAKKyAgICA8IS0tIEFQTCBhdXRob3Igc2ViYXdhZ25lciAtLT4KKyAgICA8cmVzb3VyY2UgbmFtZT0ibHpfcmVjb3JkZXJfcGxheSIgc3JjPSJyZXNvdXJjZXMvd2Vic3RhcnRfcGxheS5wbmciIC8+CisJCisgICAgPGluY2x1ZGUgaHJlZj0iY29tbW9uVmlkZW9WaWV3Q29udGVudC5sengiLz4KKyAgICA8aW5jbHVkZSBocmVmPSJjb21tb25WaWRlb0NvbXBvbmVudEFkYXB0ZXIubHp4Ii8+CisgICAgPGluY2x1ZGUgaHJlZj0ic2NyZWVuU2hhcmluZ0FkYXB0ZXIubHp4IiAvPgorCisJPGluY2x1ZGUgaHJlZj0id2hpdGVib2FyZC8iIC8+IAorIAkKKyAgIAk8aW5jbHVkZSBocmVmPSJ0YWJjb250ZW50LyIgLz4KKyAgIAk8aW5jbHVkZSBocmVmPSJwb3B1cHMvIiAvPgorICAgCTxpbmNsdWRlIGhyZWY9Im1vZGVyYXRpb24vIiAvPgorICAgCTxpbmNsdWRlIGhyZWY9InBvbGxzLyIgLz4KKyAgIAkKKyAgIAk8aW5jbHVkZSBocmVmPSJjb25mZXJlbmNlLyIgLz4KKyAgIAkKKyAgICA8IS0tIHRocm93cyBhbiBFeGNlcHRpb24KKwk8aW5jbHVkZSBocmVmPSJicm93c2VyLyIvPiAgCisgICAgIC0tPgorICAgIDxpbmNsdWRlIGhyZWY9InBhcnRpY2lwYW50cy8iIC8+IAorICAgIDxpbmNsdWRlIGhyZWY9ImludGVydmlld3VzZXJsaXN0LyIgLz4gCisgICAgCisgICAgPGluY2x1ZGUgaHJlZj0icmVzdHJpY3RlZC8iIC8+CisgICAgPGluY2x1ZGUgaHJlZj0iYnJvd3Nlci8iIC8+CisgICAgPGluY2x1ZGUgaHJlZj0idGVzdHNldHVwLyIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJzaXAvIiAvPgorICAgIAorICAgIDxpbmNsdWRlIGhyZWY9ImZsZXhpYmxlQ29uZmVyZW5jZVJvb20vIiAvPgorICAgIAorPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL21vZGVyYXRpb24vYXBwbHlGb3JNb2RlcmF0aW9uLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9tb2RlcmF0aW9uL2FwcGx5Rm9yTW9kZXJhdGlvbi5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWFkNWRlNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9tb2RlcmF0aW9uL2FwcGx5Rm9yTW9kZXJhdGlvbi5sengKQEAgLTAsMCArMSwxNjEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzxjbGFzcyBuYW1lPSJ1c2VySXRlbSIgZXh0ZW5kcz0idmlldyIgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdiYXNlYmdjb2xvcml6ZXInKSB9IiB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCB9IiBoZWlnaHQ9IjIwIj4KKwk8YXR0cmlidXRlIG5hbWU9InN0cmVhbWlkIiB2YWx1ZT0iMCIgdHlwZT0ic3RyaW5nIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0idXNlcm5hbWUiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwk8YXR0cmlidXRlIG5hbWU9Imhhc0Fuc3dlcmVkIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJhbnN3ZXIiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKwkKKwk8dmlldyBuYW1lPSJpbm5lciIgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGgtMiB9IiBoZWlnaHQ9IiRvbmNleyBwYXJlbnQuaGVpZ2h0LTIgfSIgeD0iMSIgeT0iMSIKKwkJb25tb3VzZW92ZXI9InRoaXMuc2V0QXR0cmlidXRlKCdiZ2NvbG9yJyxjYW52YXMuZ2V0VGhlbWVDb2xvcignYmFzZU1vdXNlY29sb3JpemVyJykpIgorCQlvbm1vdXNlb3V0PSJ0aGlzLnNldEF0dHJpYnV0ZSgnYmdjb2xvcicsMHhGRkZGRkYpIiBiZ2NvbG9yPSIweEZGRkZGRiI+CisJCTxsYWJlbFRleHQgdGV4dD0iJG9uY2V7IHBhcmVudC5wYXJlbnQuc3RyZWFtaWQgfSIgd2lkdGg9IjUwIiAvPgorCQk8bGFiZWxUZXh0IHRleHQ9IiRvbmNleyBwYXJlbnQucGFyZW50LnVzZXJuYW1lIH0iIHg9IjUwIiB3aWR0aD0iMzAwIiAvPgorCQk8bGFiZWxUZXh0IG5hbWU9ImFuc3dlciIgbGFiZWxpZD0iODgiIHg9IjM1MCIgd2lkdGg9IjE0MCIgLz4KKwk8L3ZpZXc+Cis8L2NsYXNzPgorICAgIAorPGNsYXNzIG5hbWU9ImFwcGx5Rm9yTW9kZXJhdGlvbiIgIGV4dGVuZHM9ImxhYmVsRXhwbG9yZXJCb3giIGxhYmVsaWQ9IjgxIgorCXdpZHRoPSI1MDAiIGhlaWdodD0iMjUwIiB4PSIxNCIgY2xvc2FibGU9InRydWUiPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0iYXBwbHltZXNzYWdlIiB2YWx1ZT0ibnVsbCIgLz4KKwkKKwk8bGFiZWxUZXh0IGxhYmVsaWQ9IjkzIiB5PSIzMCIgeD0iMiIgLz4KKworCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisJCWNhbnZhcy5jdXJyZW50TW9kQXBwbHkgPSB0aGlzOworCQl0aGlzLmdldENsaWVudExpc3RTY29wZS5kb0NhbGwoKTsKKwkJdGhpcy5hcHBseW1lc3NhZ2UgPSBuZXcgQXJyYXkoKTsKKwkJdGhpcy5hcHBseW1lc3NhZ2VbMF0gPSAnYXBwbHlmb3JNb2QnOworCQl0aGlzLmNoZWNrUm9vbVZhbHVlcy5kb0NhbGwoKTsKKwk8L2hhbmRsZXI+CisgICAgCisgICAgPCEtLQorICAgICAgICBUaGlzIGlzIG5lY2Vzc2FyeSBhcyBpbiBzb21lIGNhc2VzIHRoZSB1c2VyIHNob3VsZCBub3QgYmUgYWxsb3dlZCAKKyAgICAgICAgdG8gYXBwbHkgZm9yIE1vZGVyYXRpb24gYXQgYWxsLCB0aGlzIEZ1bmN0aW9uIGNoZWNrcyB0aGlzCisgICAgIC0tPgorICAgIAorICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImNoZWNrUm9vbVZhbHVlcyIgZnVuY25hbWU9ImNoZWNrUm9vbVZhbHVlcyIgCisgICAgICAgICAgICAgICAgICAgICAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gICAKKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBoaWIuY3VycmVudHJvb21pZDs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgIGlmICh2YWx1ZSkgeworICAgICAgICAgICAgICAgIHBhcmVudC5zZW5kTWVzc2FnZVdpdGhDbGllbnQuZG9DYWxsKCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIG5ldyBsei5sYWJlbGVycm9yUG9wdXAoY2FudmFzLHtlcnJvcmxhYmVsaWQ6NjQxfSk7CisgICAgICAgICAgICAgICAgcGFyZW50LmNsb3NlKCk7CisgICAgICAgICAgICB9CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICA8L25ldFJlbW90ZUNhbGxIaWI+CisJCisJPG1ldGhvZCBuYW1lPSJzZXRVc2VyQW5zd2VyIiBhcmdzPSJ2YWx1ZSI+CisJCTwhW0NEQVRBWworCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiKioqIHNldFVzZXJBbnN3ZXI6ICIsdmFsdWUsdGhpcy51c2Vyc2xpc3QpOworCisJCXZhciB0ID0gdGhpcy51c2Vyc2xpc3QudXNlcnNsaXN0LnVzZXJzbGlzdFt2YWx1ZS5jbGllbnQuc3RyZWFtaWRdOworCQkvL0RlYnVnLndyaXRlKCIgdDogIix0KTsKKwkJdC5oYXNBbnN3ZXJlZCA9IHRydWU7CisJCXZhciBhbnN3ZXIgPSB2YWx1ZS5tZXNzYWdlWzFdOworCQkvL0RlYnVnLndyaXRlKCJhbnN3ZXI6ICIsYW5zd2VyKTsKKwkJaWYgKGFuc3dlcj09J29rJyl7CisJCQl0LmlubmVyLmFuc3dlci5zZXRBdHRyaWJ1dGUoJ3RleHQnLGNhbnZhcy5nZXRMYWJlbE5hbWUoOTQpKTsKKwkJCXQuYW5zd2VyID0gdHJ1ZTsKKwkJfSBlbHNlIHsKKwkJCXQuaW5uZXIuYW5zd2VyLnNldEF0dHJpYnV0ZSgndGV4dCcsY2FudmFzLmdldExhYmVsTmFtZSg5NSkpOworCQkJdC5hbnN3ZXIgPSBmYWxzZTsKKwkJfQorCQldXT4KKwkJdGhpcy5jaGVja0ZvclVwZGF0ZXMoKTsKKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9InJlamVjdFVzZXIiIGFyZ3M9InZhbHVlIj4KKwkJdGhpcy51c2Vyc2xpc3QudXNlcnNsaXN0LnVzZXJzbGlzdFt2YWx1ZS5zdHJlYW1pZF0uZGVzdHJveSgpOworCQl0aGlzLmNoZWNrRm9yVXBkYXRlcygpOworCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0iY2hlY2tGb3JVcGRhdGVzIj4KKwkJPCFbQ0RBVEFbCisJCXZhciBiID0gdHJ1ZTsKKwkJZm9yICh2YXIgaT0wO2k8dGhpcy51c2Vyc2xpc3QudXNlcnNsaXN0LnVzZXJzbGlzdC5zdWJ2aWV3cy5sZW5ndGg7aSsrKXsKKwkJCS8vRGVidWcud3JpdGUoIml0ZW1JRCA6ICIsdGhpcy51c2Vyc2xpc3QudXNlcnNsaXN0LnVzZXJzbGlzdC5zdWJ2aWV3c1tpXSk7CisJCQlpZiAoIXRoaXMudXNlcnNsaXN0LnVzZXJzbGlzdC51c2Vyc2xpc3Quc3Vidmlld3NbaV0uYW5zd2VyKXsKKwkJCQliPWZhbHNlOworCQkJCWJyZWFrOworCQkJfQorCQl9CisJCWlmIChiKSB0aGlzLmFwcGx5QnV0dG9uLnNldEF0dHJpYnV0ZSgnbGFiZWxpZCcsOTYpOworCQl0aGlzLmFwcGx5QnV0dG9uLnNldEF0dHJpYnV0ZSgnZW5hYmxlZCcsYik7CisJCV1dPgorCTwvbWV0aG9kPgorCQorCTxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImdldENsaWVudExpc3RTY29wZSIgZnVuY25hbWU9ImdldENsaWVudExpc3RTY29wZSIgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gICAgICAgIAorICAgICAgIAk8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAJCTwhW0NEQVRBWworICAgICAgICAgICAJLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZSB0aGUgcnRtcGNvbm5lY3Rpb24KKyAgICAgICAgICAgCS8vRGVidWcud3JpdGUoIklOU1RBTkNFIGdldENsaWVudExpc3RTY29wZSA6ICIsdmFsdWUpOworICAgICAgICAgICAgZm9yICh2YXIgZWcgPSAwOyBlZyA8IHZhbHVlLmxlbmd0aDsgKytlZykgeworCQkJCS8vRGVidWcud3JpdGUoInZhbHVlOiAiLGVnLHZhbHVlLHBhcmVudC51c2Vyc2xpc3QudXNlcnNsaXN0LnVzZXJzbGlzdCk7CisJCQkJaWYgKGNhbnZhcy5zdHJlYW1pZCE9dmFsdWVbZWddLnN0cmVhbWlkKSB7CisJCQkJICAgIG5ldyBsei51c2VySXRlbShwYXJlbnQudXNlcnNsaXN0LnVzZXJzbGlzdC51c2Vyc2xpc3Qse25hbWU6dmFsdWVbZWddLnN0cmVhbWlkLHVzZXJuYW1lOnZhbHVlW2VnXS51c2VybmFtZSxzdHJlYW1pZDp2YWx1ZVtlZ10uc3RyZWFtaWR9KTsKKwkJCQl9CisJCQkJLy9EZWJ1Zy53cml0ZSgidmFsdWU6ICIsZWcsdmFsdWUscGFyZW50LnVzZXJzbGlzdC51c2Vyc2xpc3QudXNlcnNsaXN0KTsKKwkJCX0KKwkJICAgIGlmIChwYXJlbnQudXNlcnNsaXN0LnVzZXJzbGlzdC51c2Vyc2xpc3Quc3Vidmlld3MubGVuZ3RoPT0wKQorCQkJCSAgIHBhcmVudC5hcHBseUJ1dHRvbi5zZXRBdHRyaWJ1dGUoJ2VuYWJsZWQnLHRydWUpOworICAgICAgICAgICBdXT4KKwkJPC9oYW5kbGVyPiAgIAorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4gCisgICAgIAorICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9InNlbmRNZXNzYWdlV2l0aENsaWVudCIgZnVuY25hbWU9InNlbmRNZXNzYWdlV2l0aENsaWVudCIgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gIAorICAgIAk8bmV0cGFyYW0gbmFtZT0idmFycyI+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQuYXBwbHltZXNzYWdlOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAJPCFbQ0RBVEFbCisgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorICAgICAgICAgICAgLy9EZWJ1Zy53cml0ZSgic2VuZE1lc3NhZ2VXaXRoQ2xpZW50IDogIix2YWx1ZSk7CisKKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+ICAgCisgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAgICAgIAorCQorCTx2aWV3IG5hbWU9InVzZXJzbGlzdCIgeT0iNjAiIHg9IjQiIGhlaWdodD0iMTQwIiBjbGlwPSJ0cnVlIiB3aWR0aD0iNDkyIiBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ2Jhc2ViZ2NvbG9yaXplcicpIH0iID4KKwkJPHZpZXcgbmFtZT0idXNlcnNsaXN0IiB5PSIxIiB4PSIxIiBoZWlnaHQ9IjEzOCIgY2xpcD0idHJ1ZSIgd2lkdGg9IjQ5MCIgYmdjb2xvcj0iMHhGRkZGRkYiID4KKwkJCTx2aWV3IG5hbWU9InVzZXJzbGlzdCIgbGF5b3V0PSJheGlzOnk7c3BhY2luZzoyIiB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCB9IiAvPgorCQkJPG9tX3ZzY3JvbGxiYXIgLz4KKwkJPC92aWV3PgorCTwvdmlldz4JCisJCisgICAgPHNpbXBsZUxhYmVsQnV0dG9uIG5hbWU9ImFwcGx5QnV0dG9uIiBsYWJlbGlkPSI4OCIgd2lkdGg9IjIwMCIgeD0iODAiIHk9IjIxOCIgZW5hYmxlZD0iZmFsc2UiPgorICAgIAk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAJCS8vaGliLnNldE1vZGVyYXRvci5kb0NhbGwoKTsKKyAgICAJCWhpYi5hZGRNb2RlcmF0b3IucHVibGljU0lET2ZOZXdNb2RlcmF0b3IgPSBjYW52YXMucHVibGljU0lEOworICAgIAkJaGliLmFkZE1vZGVyYXRvci5kb0NhbGwoKTsKKyAgICAJCXRoaXMucGFyZW50LmNsb3NlKCk7CisgICAgCTwvaGFuZGxlcj4KKyAgICA8L3NpbXBsZUxhYmVsQnV0dG9uPgorICAgIAorICAgIDxzaW1wbGVMYWJlbEJ1dHRvbiBsYWJlbGlkPSI4MyIgd2lkdGg9IjIwMCIgeD0iMjkwIiB5PSIyMTgiIAorICAgICAgICBvbmNsaWNrPSJ0aGlzLnBhcmVudC5jbG9zZSgpOyIgLz4KKyAgCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvbW9kZXJhdGlvbi9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9tb2RlcmF0aW9uL2xpYnJhcnkubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4OTc5Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvbW9kZXJhdGlvbi9saWJyYXJ5Lmx6eApAQCAtMCwwICsxLDMzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCisJPHJlc291cmNlIG5hbWU9ImFwcGx5Zm9ybW9kaWNvbl9yc2MiIHNyYz0icmVzb3VyY2VzL3VzZXJfYWRkLnBuZyIgLz4KKwkKKwk8IS0tICBGYW1GYW0gSWNvbiBDcmVhdGl2ZSBDb21tb25zIC0tPgorCTxyZXNvdXJjZSBuYW1lPSJzdGFydF9zY3JlZW5zaGFyaW5nX3JzYyIgc3JjPSJyZXNvdXJjZXMvbW9uaXRvcl9nby5wbmciIC8+CisKKyAgIAk8aW5jbHVkZSBocmVmPSJhcHBseUZvck1vZGVyYXRpb24ubHp4IiAvPgorICAgCTxpbmNsdWRlIGhyZWY9Im1vZGVyYXRpb25QYW5lbC5sengiIC8+CisgICAJPGluY2x1ZGUgaHJlZj0icmVzcG9uc2VGb3JNb2RlcmF0aW9uLmx6eCIgLz4KKwk8aW5jbHVkZSBocmVmPSJyZWNvcmRpbmdTdGFydFdpbi5sengiLz4KKwkKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9tb2RlcmF0aW9uL21vZGVyYXRpb25QYW5lbC5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvbW9kZXJhdGlvbi9tb2RlcmF0aW9uUGFuZWwubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhMzJkOWMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvbW9kZXJhdGlvbi9tb2RlcmF0aW9uUGFuZWwubHp4CkBAIC0wLDAgKzEsMTIyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorICAgIAorPGNsYXNzIG5hbWU9ImVycm9yUG9wdXBVc2VySW5mbyIgZXh0ZW5kcz0ibGFiZWxFeHBsb3JlckJveCIgbGFiZWxpZD0iMjA0IgorICAgIGRvY2tpbmc9InRydWUiIHJlc2l6ZWFibGU9ImZhbHNlIiBjbG9zYWJsZT0idHJ1ZSIgCisgICAgd2lkdGg9IjIyNCIgeD0iMzAwIiBoZWlnaHQ9IjIzMCI+CisKKyAgICA8YXR0cmlidXRlIG5hbWU9ImVycm9yIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJ1c2VyIiB2YWx1ZT0ibnVsbCIgLz4KKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIERlYnVnLndyaXRlKHVzZXIpOworICAgICAgICAgICAgdmFyIHRTdHJpbmcgPSB0aGlzLmVycm9yICsgIjxCUi8+IgorICAgICAgICAgICAgICAgICAgICArIHVzZXIudXNlcm5hbWUrIjxCUi8+IiAKKyAgICAgICAgICAgICAgICAgICAgKyB1c2VyLmZpcnN0bmFtZSArICIgIiArIHVzZXIubGFzdG5hbWUgKyAiPEJSLz4iCisgICAgICAgICAgICAgICAgICAgICsgcGFyc2VEYXRlVG9TdHJpbmdUaW1lKHVzZXIucm9vbUVudGVyKTsKKyAgICAgICAgICAgIHRoaXMudGV4dElubmVyLl9pbm5lci5zZXRBdHRyaWJ1dGUoJ3RleHQnLHRTdHJpbmcpOworICAgICAgICBdXT4KKyAgICA8L2hhbmRsZXI+CisKKyAgICA8dmlldyBuYW1lPSJ0ZXh0SW5uZXIiIHk9IjI0IiB3aWR0aD0iMjE4IiBoZWlnaHQ9IjIwMCIgeD0iMiIgY2xpcD0idHJ1ZSI+CisgICAgICAgIDx0ZXh0IG5hbWU9Il9pbm5lciIgZm9udHNpemU9IjEwIiBmb250c3R5bGU9ImJvbGQiCisgICAgICAgICAgICBtdWx0aWxpbmU9InRydWUiIHdpZHRoPSIxOTAiIC8+CisgICAgICAgIDxvbV92c2Nyb2xsYmFyIC8+CisgICAgPC92aWV3PgorCis8L2NsYXNzPgorCis8Y2xhc3MgbmFtZT0ibW9kZXJhdGlvblBhbmVsIiBleHRlbmRzPSJ2aWV3IiBsYXlvdXQ9ImF4aXM6eDtzcGFjaW5nOjIiPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0icmVjb3JkaW5nc05hbWUiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImluaXRpYWwiIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0icmVjb3JkaW5nVXNlciIgdmFsdWU9Im51bGwiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJwdWJsaXNoaW5nT2JqIiB2YWx1ZT0ibnVsbCIgLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9ImFsbG93VXNlclF1ZXN0aW9ucyIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJyb29tTmFtZSIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgIDwhW0NEQVRBWworCSAgICAgICAgY2FudmFzLl9teW1vZCA9IHRoaXM7CisJICAgICAgICBpZiAodGhpcy5hbGxvd1VzZXJRdWVzdGlvbnMgIT0gbnVsbCAmJiAhdGhpcy5hbGxvd1VzZXJRdWVzdGlvbnMpIHsKKwkgICAgICAgICAgICB0aGlzLm1vZF9idG4uZGVzdHJveSgpOworCSAgICAgICAgfQorCSAgICAgICAgdGhpcy5fcm9vbU5hbWUuc2V0QXR0cmlidXRlKCJ0ZXh0Iix0aGlzLnJvb21OYW1lKTsKKyAgICAgICAgXV0+CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0ic2V0TWVzc2FnZSI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInNldE1lc3NhZ2U6ICIsdGhpcy5yZWNvcmRpbmdVc2VyKTsKKyAgICAgICAgICAgIHZhciB0U3RyaW5nID0gIiI7CisgICAgICAgICAgICBpZiAodGhpcy5yZWNvcmRpbmdVc2VyIT1udWxsKXsKKyAgICAgICAgICAgICAgICB0U3RyaW5nICs9IGNhbnZhcy5nZXRMYWJlbE5hbWUoNDE5KQorICAgICAgICAgICAgICAgCQkrICIgIiArIHRoaXMucmVjb3JkaW5nVXNlci51c2VybmFtZQorICAgICAgICAgICAgICAgCQkrICIgIiArIHRoaXMucmVjb3JkaW5nVXNlci5maXJzdG5hbWUKKyAgICAgICAgICAgICAgIAkJKyAiICIgKyB0aGlzLnJlY29yZGluZ1VzZXIubGFzdG5hbWUKKyAgICAgICAgICAgICAgIAkJKyAiICIgKyBwYXJzZURhdGVUb1N0cmluZ1RpbWUodGhpcy5yZWNvcmRpbmdVc2VyLnJvb21FbnRlcikgKyAiOyI7CisgICAgICAgICAgICB9CisJCQlpZiAodGhpcy5wdWJsaXNoaW5nT2JqICE9IG51bGwpIHsKKyAgICAgICAgICAgIAl0U3RyaW5nICs9IGNhbnZhcy5nZXRMYWJlbE5hbWUoMTUwNCkKKwkJCQkJKyAiICIgKyB0aGlzLnB1Ymxpc2hpbmdPYmoudXNlci51c2VybmFtZQorCQkJCQkrICIgIiArIHRoaXMucHVibGlzaGluZ09iai51c2VyLmZpcnN0bmFtZQorCQkJCQkrICIgIiArIHRoaXMucHVibGlzaGluZ09iai51c2VyLmxhc3RuYW1lCisJCQkJCSsgIiAiICsgdGhpcy5wdWJsaXNoaW5nT2JqLnVybCArICI7IjsKKyAgICAgICAgICAgIH0KKwkJCXRoaXMuX2lubmVyLnNldEF0dHJpYnV0ZSgndGV4dCcsIHRTdHJpbmcpOworICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4gICAKKyAgICAKKwk8bWV0aG9kIG5hbWU9ImNoZWNrRm9yQXBwbHlTY3JlZW4iIGFyZ3M9InJlY29yZCI+CisJCWx6LkJyb3dzZXIubG9hZFVSTChjYW52YXMuZ2V0U2NyZWVuU2hhcmluZ1VybCgpLCAnX2JsYW5rJyk7CisJPC9tZXRob2Q+ICAKKyAgICAKKyAgICA8bGFiZWxUZXh0IG5hbWU9Il9yb29tTmFtZSIgZmdjb2xvcj0iMHhGRkZGRkYiIHk9IjQiIGZvbnRzdHlsZT0iYm9sZCIgZm9udHNpemU9IjEyIiAvPiAKKyAgICAKKyAgICA8bWluaUljb25zTmV3IG5hbWU9Im1vZF9idG4iIHk9IjYiIGlubmVyUmVzb3VyY2U9ImFwcGx5Zm9ybW9kaWNvbl9yc2MiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIKKyAgICAgICAgICAgICAgIHZpc2libGU9IiR7IChjYW52YXMuaXNtb2RlcmF0b3IpID8gZmFsc2UgOiB0cnVlICB9IiBzaG93aGFuZGN1cnNvcj0idHJ1ZSI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgLy9XZSBkbyBvbmx5IGFzayB0aGUgTW9kZXJhdG9yKHMpIHRvIGNoYW5nZSBNb2RlcmF0aW9uCisgICAgICAgICAgICAvL25ldyBsei5hcHBseUZvck1vZGVyYXRpb24oY2FudmFzLm1haW5fY29udGVudC5fY29udGVudC5pbm5lcik7CisgICAgICAgICAgICBjYW52YXMudGhpc2hpYi5hcHBseUZvck1vZGVyYXRpb24uZG9DYWxsKCk7CisgICAgICAgIDwvaGFuZGxlcj4gIAorICAgICAgICA8bGFiZWxUb29sdGlwIGluaXR0d2ljZT0idHJ1ZSIgbGFiZWxpZD0iOTA2IiAvPiAgICAgIAorICAgIDwvbWluaUljb25zTmV3PgorICAgIAorICAgIDxtaW5pSWNvbnNOZXcgbmFtZT0iX2RvU2hhcmUiIHk9IjYiIGlubmVyUmVzb3VyY2U9InN0YXJ0X3NjcmVlbnNoYXJpbmdfcnNjIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIAorICAgIAkJCXNob3doYW5kY3Vyc29yPSJ0cnVlIgorICAgICAgICAgICAgICAgdmlzaWJsZT0iJHtjYW52YXMuY3VycmVudFJvb21PYmouaGlkZVNjcmVlblNoYXJpbmcgPyBmYWxzZSA6ICgoY2FudmFzLmlzbW9kZXJhdG9yKSA/IHRydWUgOiAoKGNhbnZhcy5pc0FsbG93ZWRUb1NjcmVlblNoYXJlKSA/IHRydWUgOiBmYWxzZSApKSB9IiA+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgdGhpcy5wYXJlbnQuY2hlY2tGb3JBcHBseVNjcmVlbigibm8iKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IjIzOSIgLz4KKyAgICA8L21pbmlJY29uc05ldz4KKyAgICAKKyAgICA8bGFiZWxUZXh0IG5hbWU9Il9pbm5lciIgZmdjb2xvcj0iMHhGRjMzMDAiIHk9IjQiIC8+CisgICAgCisgICAgPHZpZXcgd2lkdGg9IjIiIC8+CisgICAgCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvbW9kZXJhdGlvbi9yZWNvcmRpbmdTdGFydFdpbi5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvbW9kZXJhdGlvbi9yZWNvcmRpbmdTdGFydFdpbi5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZiODgxZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9tb2RlcmF0aW9uL3JlY29yZGluZ1N0YXJ0V2luLmx6eApAQCAtMCwwICsxLDg3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorICAgIAorCTwhLS0tCisJCURpYWxvZyBib3ggZm9yIHJlY29yZGluZyBkYXRhLgorCQlXaGVuIHlvdSBjbGljayB0aGUgUmVjb3JkaW5nIGJ1dHRvbiBvbiB5b3VyIGNvbmZlcmVuY2UgbWVudSwgdGhpcyBjbGFzcyBzaG93cyBhIGRpYWxvZyBib3ggZm9yIHNhdmluZyBpdC4KKwktLT4gCisgICAgCisJPCEtLSBsYWJlbDogc2F2ZSBhcyAtLT4KKwk8Y2xhc3MgbmFtZT0icmVjb3JkaW5nU3RhcnRXaW4iIGV4dGVuZHM9ImxhYmVsRXhwbG9yZXJCb3giIGxhYmVsaWQ9IjM5MSIKKwkgICAgCQlkb2NraW5nPSJ0cnVlIiByZXNpemVhYmxlPSJmYWxzZSIgY2xvc2FibGU9ImZhbHNlIiB3aWR0aD0iNDAwIiB4PSIzMDAiIGhlaWdodD0iMjI2Ij4KKwkgCQorCQk8YXR0cmlidXRlIG5hbWU9InJlY29yZGluZ3NOYW1lIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisJIAkKKwkgCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisJIAkJdGhpcy5yTmFtZS5zZXRBdHRyaWJ1dGUoJ3RleHQnLCJyZWNvcmRpbmdfIitnZXRTdHJpbmdEYXRlRmlsZVNhdmUoKSk7CisJIAk8L2hhbmRsZXI+CisJIAkKKwkgICAJPCEtLSBsYWJlbDogcmVjb3JkIG5hbWUgLS0+IAorCSAgICAJPGxhYmVsVGV4dCBsYWJlbGlkPSIzOTIiIHdpZHRoPSIyMDAiIHk9IjIyIiByZXNpemU9ImZhbHNlIiB4PSIyIi8+CisJICAgICAgPGN1c3RvbUVkaXR0ZXh0IG5hbWU9InJOYW1lIiB5PSIyMiIgeD0iMTIwIiB3aWR0aD0iMjcwIiAvPgkKKwkJCisJCTwhLS0gbGFiZWw6IGNvbW1lbnQgLS0+CisJICAgIAk8bGFiZWxUZXh0IGxhYmVsaWQ9IjM5MyIgd2lkdGg9IjIwMCIgeT0iNTIiIHJlc2l6ZT0iZmFsc2UiIHg9IjIiLz4KKwkgICAgICA8Y3VzdG9tU2Nyb2xsRWRpdHRleHQgbmFtZT0ickNvbW1lbnQiIHk9IjUyIiB4PSIxMjAiIHdpZHRoPSIyNzAiIGhlaWdodD0iMTIwIiAvPgkgICAJCQkJCQorCSAgCisJICAgIAk8IS0tIGxhYmVsOiBjYW5jZWwgLS0+CQorCSAgICAJPHNpbXBsZUxhYmVsQnV0dG9uIGxhYmVsaWQ9IjQzOCIgd2lkdGg9IjEwMCIgeD0iMTgwIiB5PSIxOTAiID4KKwkgICAgCQk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKwkgICAgCQkJcGFyZW50LmNsb3NlKCk7CisJICAgIAkJPC9oYW5kbGVyPgorCSAgICAJPC9zaW1wbGVMYWJlbEJ1dHRvbj4KKwkgICAgICAgIAorCSAgICAJPCEtLSBsYWJlbDogc3RhcnQgLS0+CisJICAgIAk8c2ltcGxlTGFiZWxCdXR0b24gbGFiZWxpZD0iNDM5IiB3aWR0aD0iMTAwIiB4PSIyOTAiIHk9IjE5MCIgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25jbGljaz0idGhpcy5wYXJlbnQuY2hlY2tGb3JSZWNvcmRpbmcuZG9DYWxsKCk7IiAvPgorCSAgCQorCQk8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJyZWNvcmRNZWV0aW5nU3RyZWFtIiBmdW5jbmFtZT0iZmx2cmVjb3JkZXJzZXJ2aWNlLnJlY29yZE1lZXRpbmdTdHJlYW0iIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiA+ICAKKwkgIAkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBjYW52YXMudGhpc2hpYi5tb2R1czs8L21ldGhvZD48L25ldHBhcmFtPgorCSAgCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGNhbnZhcy5fZHJhd2FyZWEuYmFzZWFjdGlvbm9iamVjdExpc3Q7PC9tZXRob2Q+PC9uZXRwYXJhbT4gCisJICAgIAkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50LnJOYW1lLmdldFRleHQoKTs8L21ldGhvZD48L25ldHBhcmFtPgorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50LnJDb21tZW50LmdldFRleHQoKTs8L21ldGhvZD48L25ldHBhcmFtPiAgICAKKwkgICAgCQorCSAgICAJCTxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorCQkJCS8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisJCQkJaWYoICRkZWJ1ZyApIERlYnVnLndyaXRlKCJyZWNvcmRpbmdTdGFydFdpbi5yZWNvcmRNZWV0aW5nc1N0cmVhbSgpOiAiLHZhbHVlKTsJCisJCQkJY2FudmFzLl9teW1vZC5yZWNvcmRpbmdzTmFtZSA9IHZhbHVlOworCQkJCWNhbnZhcy5fbXltb2Quc3RhX2J0bi5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCdoaWRkZW4nKTsKKwkJCQljYW52YXMuX215bW9kLnN0cF9idG4uc2V0QXR0cmlidXRlKCd2aXNpYmlsaXR5JywndmlzaWJsZScpOwkKKwkJCQlwYXJlbnQuY2xvc2UoKTsJCQkKKwkJCTwvaGFuZGxlcj4JCisJICAJPC9uZXRSZW1vdGVDYWxsSGliPgorCSAgCQorCSAgCTxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImNoZWNrRm9yUmVjb3JkaW5nIiBmdW5jbmFtZT0iZmx2cmVjb3JkZXJzZXJ2aWNlLmNoZWNrRm9yUmVjb3JkaW5nIiByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAgCisJCQk8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKwkJCQkvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorCQkJCWlmKCAkZGViZ3VnICkgRGVidWcud3JpdGUoInJlY29yZGluZ1N0YXJ0V2luLmNoZWNrRm9yUmVjb3JkaW5nKCk6ICIsdmFsdWUpOwkKKwkJCQlwYXJlbnQucmVjb3JkaW5nVXNlciA9IHZhbHVlOworCQkJCWlmICh2YWx1ZT09bnVsbCkgeworCQkJCQlwYXJlbnQucmVjb3JkTWVldGluZ1N0cmVhbS5kb0NhbGwoKTsKKwkJCQl9IGVsc2UgeworCQkJCQluZXcgbHouZXJyb3JQb3B1cFVzZXJJbmZvKGNhbnZhcyx7ZXJyb3I6Y2FudmFzLmdldExhYmVsTmFtZSg0MTgpLHVzZXI6dmFsdWV9KTsKKwkJCQl9CisJCQk8L2hhbmRsZXI+CQorCSAgCTwvbmV0UmVtb3RlQ2FsbEhpYj4gIAkKKyAgICAgICAgIAorCTwvY2xhc3M+Cis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvbW9kZXJhdGlvbi9yZXNvdXJjZXMvbW9uaXRvcl9nby5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvbW9kZXJhdGlvbi9yZXNvdXJjZXMvbW9uaXRvcl9nby5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGFmM2VkYQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9tb2RlcmF0aW9uL3Jlc291cmNlcy9tb25pdG9yX2dvLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvbW9kZXJhdGlvbi9yZXNvdXJjZXMvdXNlcl9hZGQucG5nIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL21vZGVyYXRpb24vcmVzb3VyY2VzL3VzZXJfYWRkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWFlOTliCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL21vZGVyYXRpb24vcmVzb3VyY2VzL3VzZXJfYWRkLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvbW9kZXJhdGlvbi9yZXNwb25zZUZvck1vZGVyYXRpb24ubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL21vZGVyYXRpb24vcmVzcG9uc2VGb3JNb2RlcmF0aW9uLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODNjZGY3Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL21vZGVyYXRpb24vcmVzcG9uc2VGb3JNb2RlcmF0aW9uLmx6eApAQCAtMCwwICsxLDk1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorICAgIAorPGNsYXNzIG5hbWU9InJlc3BvbnNlRm9yTW9kZXJhdGlvbiIgIGV4dGVuZHM9ImxhYmVsRXhwbG9yZXJCb3giIGxhYmVsaWQ9IjgxIgorCXdpZHRoPSI1MDAiIGhlaWdodD0iMjUwIiB4PSIxNCIgY2xvc2FibGU9InRydWUiPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0iYXBwbHltZXNzYWdlIiB2YWx1ZT0ibnVsbCIgLz4KKyAgICA8IS0tIFRpbWUgdGlsbCBhdXRvbWF0aWNhbGx5IGFwcGx5IGZvciBtb2RhcmF0aW9uIHdpbGwgYmUgYWNjZXB0ZWQgLS0+CisJPGF0dHJpYnV0ZSBuYW1lPSJjbGllbnRJZCIgdmFsdWU9IjAiIHR5cGU9InN0cmluZyIgLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9InVzZXJvYmplY3QiIHZhbHVlPSJudWxsIiAvPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0idXNlcmF1dG9UaW1lckRlbGVnYXRlIiB2YWx1ZT0ibnVsbCIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9InVzZXJhdXRvVGltZXJDb3VudGVyIiB2YWx1ZT0iMzEiIHR5cGU9Im51bWJlciIgLz4KKwkKKwk8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorCQk8IVtDREFUQVsKKyAgICAgICAgICAgIHZhciBkdFN0cmluZyA9ICcnOworICAgICAgICAgICAgZHRTdHJpbmcgKz0gJ05hbWU6ICcrdXNlcm9iamVjdFsndXNlcm5hbWUnXSsnPEJSIC8+JzsKKyAgICAgICAgICAgIGR0U3RyaW5nICs9ICdIb3N0OiAnK3VzZXJvYmplY3RbJ3VzZXJpcCddKyc8QlIgLz4nOworICAgICAgICAgICAgZHRTdHJpbmcgKz0gJ1RpbWU6ICcrdXNlcm9iamVjdFsnY29ubmVjdGVkU2luY2UnXSsnPEJSIC8+JzsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy51c2VyVG9BY2NlcHQuc2V0QXR0cmlidXRlKCd0ZXh0JyxkdFN0cmluZyk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMudXNlcmF1dG9UaW1lckRlbGVnYXRlID0gbmV3IEx6RGVsZWdhdGUoIHRoaXMsICJhdXRvUmVzcG9uc2UiICk7CisgICAgICAgICAgICBsei5UaW1lci5hZGRUaW1lciggdGhpcy51c2VyYXV0b1RpbWVyRGVsZWdhdGUsIDEwMDAgKTsgICAgICAgICAgICAKKwkJXV0+CisJPC9oYW5kbGVyPgorCisgICAgPG1ldGhvZCBuYW1lPSJhdXRvUmVzcG9uc2UiIGFyZ3M9Iml0ZW1PYmoiPgorICAgICAgICB0aGlzLnVzZXJhdXRvVGltZXJDb3VudGVyLS07CisgICAgICAgIGlmICh0aGlzLnVzZXJhdXRvVGltZXJDb3VudGVyIT0wKXsKKyAgICAgICAgICAgIHRoaXMuX2FwcGx5QnRuLnNldEF0dHJpYnV0ZSgndGV4dCcsY2FudmFzLmdldExhYmVsTmFtZSh0aGlzLl9hcHBseUJ0bi5sYWJlbGlkKSsiICIrdGhpcy51c2VyYXV0b1RpbWVyQ291bnRlcik7CisgICAgICAgICAgICBsei5UaW1lci5hZGRUaW1lciggdGhpcy51c2VyYXV0b1RpbWVyRGVsZWdhdGUsIDEwMDAgKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuX2FwcGx5QnRuLm9uY2xpY2suc2VuZEV2ZW50KCk7CisgICAgICAgIH0KKyAgICA8L21ldGhvZD4gICAKKwkKKwk8bGFiZWxUZXh0IGxhYmVsaWQ9Ijg5IiB5PSIyMCIgeD0iMiIgLz4KKwkKKwk8bGFiZWxUZXh0IG5hbWU9InVzZXJUb0FjY2VwdCIgeT0iNTAiIG11bHRpbGluZT0idHJ1ZSIgd2lkdGg9IjIwMCIgcmVzaXplPSJmYWxzZSIgLz4KKyAgICAKKyAgICA8c2ltcGxlTGFiZWxCdXR0b24gbGFiZWxpZD0iOTAiIHdpZHRoPSIyMDAiIHg9IjgwIiB5PSIyMTgiIG5hbWU9Il9hcHBseUJ0biIgPgorICAgIAk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKwkJCXBhcmVudC5hcHBseW1lc3NhZ2UgPSBuZXcgQXJyYXkoKTsKKwkJCXBhcmVudC5hcHBseW1lc3NhZ2VbMF0gPSAnYXBwbHlNb2RBbnN3ZXInOworCQkJcGFyZW50LmFwcGx5bWVzc2FnZVsxXSA9ICdvayc7ICAgCisJCQlwYXJlbnQuc2VuZE1lc3NhZ2VXaXRoQ2xpZW50QnlJZC5kb0NhbGwoKTsJCQorICAgIAk8L2hhbmRsZXI+CisgICAgPC9zaW1wbGVMYWJlbEJ1dHRvbj4KKyAgICAKKyAgICA8c2ltcGxlTGFiZWxCdXR0b24gbGFiZWxpZD0iOTEiIHdpZHRoPSIyMDAiIHg9IjI5MCIgeT0iMjE4IiA+CisgICAgCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorCQkJcGFyZW50LmFwcGx5bWVzc2FnZSA9IG5ldyBBcnJheSgpOworCQkJcGFyZW50LmFwcGx5bWVzc2FnZVswXSA9ICdhcHBseU1vZEFuc3dlcic7CisJCQlwYXJlbnQuYXBwbHltZXNzYWdlWzFdID0gJ25vJzsgCisJCQlwYXJlbnQuc2VuZE1lc3NhZ2VXaXRoQ2xpZW50QnlJZC5kb0NhbGwoKTsJCisgICAgCTwvaGFuZGxlcj4KKyAgICA8L3NpbXBsZUxhYmVsQnV0dG9uPgorICAgICAKKyAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJzZW5kTWVzc2FnZVdpdGhDbGllbnRCeUlkIiBmdW5jbmFtZT0ic2VuZE1lc3NhZ2VXaXRoQ2xpZW50QnlJZCIgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gIAorICAgIAk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQuYXBwbHltZXNzYWdlOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC5jbGllbnRJZDs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgCTwhW0NEQVRBWworCSAgICAgICAgICAgIC8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisJICAgICAgICAgICAgLy9EZWJ1Zy53cml0ZSgic2VuZE1lc3NhZ2VXaXRoQ2xpZW50QnlJZCA6ICIsdmFsdWUpOworCQkJCXRoaXMucGFyZW50LmNsb3NlKCk7CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPiAgIAorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4gCisKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9wYXJ0aWNpcGFudHMvbGlicmFyeS5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvcGFydGljaXBhbnRzL2xpYnJhcnkubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0NTcyOTkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvcGFydGljaXBhbnRzL2xpYnJhcnkubHp4CkBAIC0wLDAgKzEsNDQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisgICAgCisgICAgPCEtLSAgRmFtRmFtIEljb24gQ3JlYXRpdmUgQ29tbW9ucyAtLT4KKyAgICA8cmVzb3VyY2UgbmFtZT0icmlnaHRfaXNhY3RpdmVfcnNjIiBzcmM9InJlc291cmNlcy9hY2NlcHQucG5nIiAvPgorICAgIAorICAgIDwhLS0gIEZhbUZhbSBJY29uIENyZWF0aXZlIENvbW1vbnMgLS0+CisgICAgPHJlc291cmNlIG5hbWU9InJpZ2h0X25vdGFjdGl2ZV9yc2MiIHNyYz0icmVzb3VyY2VzL2RlbGV0ZS5wbmciIC8+CisgICAgCisgICAgPCEtLSAgRmFtRmFtIEljb24gQ3JlYXRpdmUgQ29tbW9ucyAtLT4KKyAgICA8cmVzb3VyY2UgbmFtZT0icGFydGljaXBhbnRzX2lzTW9kX3JzYyIgc3JjPSJyZXNvdXJjZXMvdXNlcl9hZGQucG5nIiAvPgorICAgIDwhLS0gIEZhbUZhbSBJY29uIENyZWF0aXZlIENvbW1vbnMgLS0+CisgICAgPHJlc291cmNlIG5hbWU9InBhcnRpY2lwYW50c19hbGxvd19kcmF3aW5nX3JzYyIgc3JjPSJyZXNvdXJjZXMvcGVuY2lsX2FkZC5wbmciIC8+CisgICAgCisgICAgPCEtLSAgRmFtRmFtIEljb24gQ3JlYXRpdmUgQ29tbW9ucyAtLT4KKyAgICA8cmVzb3VyY2UgbmFtZT0icGFydGljaXBhbnRzX2RlbnlfZHJhd2luZ19yc2MiIHNyYz0icmVzb3VyY2VzL3BlbmNpbF9kZWxldGUucG5nIiAvPgorICAgIAorICAgIDwhLS0gIEFQTCBhdXRob3Igc2ViYXdhZ25lciAtLT4KKyAgICA8cmVzb3VyY2UgbmFtZT0icGFydGljaXBhbnRzX2V4Y2x1c2l2ZV9hdWRpb19yc2MiIHNyYz0icmVzb3VyY2VzL21pY3JvX3NtYWxsLnBuZyIgLz4KKyAgICAKKyAgICA8aW5jbHVkZSBocmVmPSJwYXJ0aWNpcGFudExpc3QubHp4IiAvPgorICAgIDxpbmNsdWRlIGhyZWY9InBhcnRpY2lwYW50TGlzdEl0ZW0ubHp4IiAvPgorICAgIDxpbmNsdWRlIGhyZWY9InBhcnRpY2lwYW50cy5sengiIC8+CisgICAgCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvcGFydGljaXBhbnRzL3BhcnRpY2lwYW50TGlzdC5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvcGFydGljaXBhbnRzL3BhcnRpY2lwYW50TGlzdC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGUxYzYxNgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9wYXJ0aWNpcGFudHMvcGFydGljaXBhbnRMaXN0Lmx6eApAQCAtMCwwICsxLDIxNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKwkKKzxjbGFzcyBuYW1lPSJpbm5lcmxpc3RWaWV3cGFydGljaXBhbnRzVGFibGUiIGV4dGVuZHM9InZpZXciIHdpZHRoPSIyNTgiID4KKyAgICA8c2ltcGxlbGF5b3V0IG5hbWU9Il9sYXlvdXQiIGF4aXM9InkiIHNwYWNpbmc9IjAiIC8+Cis8L2NsYXNzPgorICAgIAorPGNsYXNzIG5hbWU9InBhcnRpY2lwYW50c1RhYmxlIiBleHRlbmRzPSJ2aWV3IiBoZWlnaHQ9IiR7IHBhcmVudC5oZWlnaHQtMjAgfSIgCisgICAgCWJnY29sb3I9IjB4RkZGRkZGIiB4PSIyIiB5PSI2IiBjbGlwPSJ0cnVlIiB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aC00IH0iID4KKyAgICAgICAgPGlubmVybGlzdFZpZXdwYXJ0aWNpcGFudHNUYWJsZSBuYW1lPSJpbm5lckxpc3QiIC8+CisgICAgPG9tX3ZzY3JvbGxiYXIgLz4KKzwvY2xhc3M+CisKKzxjbGFzcyBuYW1lPSJwYXJ0aWNpcGFudExpc3QiIGV4dGVuZHM9InZpZXciICB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCB9IiBoZWlnaHQ9IiR7IHBhcmVudC5oZWlnaHQtMjIgfSIgCisgICAgICAgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdzZWNvbmRCb3JkZXJDb2xvcicpIH0iIHk9IjIyIj4KKyAgICA8IS0tIGNsaXA9InRydWUiIC0tPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0ic29ydFR5cGUiIHZhbHVlPSJhbHBoYWJldGljYWwiIHR5cGU9InN0cmluZyIgLz4gICAgCisgICAgCisgICAgPHZpZXcgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGgtMiB9IiBoZWlnaHQ9IiR7IHBhcmVudC5oZWlnaHQtMiB9IiAKKyAgICAgICAgeD0iMSIgeT0iMSIgYmdjb2xvcj0iMHhGRkZGRkYiIC8+CisgICAgICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgdmFyIGl0ZW1zID0gdGhpcy5fdGFibGUuaW5uZXJMaXN0LnN1Ym5vZGVzOworICAgICAgICAgICAgY2FudmFzLnZpZGVvQ29tcF9sYy5sY19zZXRTb3VuZE11dGVkID0gZnVuY3Rpb24ocHVibGljU0lELGlzTXV0ZWQpIHsKKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgibGNfc2V0U291bmRNdXRlZDogcHVibGljU0lELCBpc011dGVkIixwdWJsaWNTSUQsIGlzTXV0ZWQpOworCisgICAgICAgICAgICAgICAgZm9yICh2YXIgaT0xOyBpPGl0ZW1zLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBsaXN0SXRlbSA9IGl0ZW1zW2ldOworICAgICAgICAgICAgICAgICAgICBpZiAobGlzdEl0ZW0ucmVmT2JqLnB1YmxpY1NJRCA9PSBwdWJsaWNTSUQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtdXRlVmlldyA9IGxpc3RJdGVtLl9taW5pSWNvbnMuX211dGU7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNNdXRlZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11dGVWaWV3LnNldEF0dHJpYnV0ZSgnZnJhbWUnLCAyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXRlVmlldy5fdGlwLnNldEF0dHJpYnV0ZSgnbGFiZWxpZCcsIDEwNzUpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXRlVmlldy5zZXRBdHRyaWJ1dGUoJ2ZyYW1lJywgMSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV0ZVZpZXcuX3RpcC5zZXRBdHRyaWJ1dGUoJ2xhYmVsaWQnLCAxMDc0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfTsKKyAgICAgICAgXV0+CisgICAgPC9oYW5kbGVyPgorCisgICAgPG1ldGhvZCBuYW1lPSJhZGRJdGVtIiBhcmdzPSJvYmplY3QiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJwYXJ0aWNpcGFudExpc3QgYWRkSXRlbTogIixvYmplY3Qsb2JqZWN0LnB1YmxpY1NJRCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPHRoaXMuX3RhYmxlLmlubmVyTGlzdC5zdWJ2aWV3cy5sZW5ndGg7aSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3RhYmxlLmlubmVyTGlzdC5zdWJ2aWV3c1tpXS5yZWZPYmoucHVibGljU0lEID09IG9iamVjdC5wdWJsaWNTSUQpIHsKKyAgICAgICAgICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53YXJuKCJBbHJlYWR5IG9uIExpc3QsIGRvIG5vdCBhZGQgdHdpY2UiKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIGxhc3RuYW1lID0gb2JqZWN0Lmxhc3RuYW1lOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib2JqZWN0LmlzU3VwZXJNb2RlcmF0b3IgIixvYmplY3QuaXNTdXBlck1vZGVyYXRvcik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChvYmplY3QuaXNTdXBlck1vZGVyYXRvcikgeworICAgICAgICAgICAgICAgIGxhc3RuYW1lICs9ICIgKiI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG5ldyBsei5wYXJ0aWNpcGFudExpc3RJdGVtKHRoaXMuX3RhYmxlLmlubmVyTGlzdCx7CisgICAgICAgICAgICAgICAgICAgIHVzZXJfaWQ6b2JqZWN0LnVzZXJfaWQsCisgICAgICAgICAgICAgICAgICAgIGlzU3VwZXJNb2RlcmF0b3I6b2JqZWN0LmlzU3VwZXJNb2RlcmF0b3IsCisgICAgICAgICAgICAgICAgICAgIGZpcnN0bmFtZTpvYmplY3QuZmlyc3RuYW1lLAorICAgICAgICAgICAgICAgICAgICBsYXN0bmFtZTpsYXN0bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgd2lkdGg6dGhpcy53aWR0aC0xNywKKyAgICAgICAgICAgICAgICAgICAgcmVmT2JqOm9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgY29ubmVjdGVkU2luY2U6b2JqZWN0LmNvbm5lY3RlZFNpbmNlLAorICAgICAgICAgICAgICAgICAgICBpc01vZDpvYmplY3QuaXNNb2QsCisgICAgICAgICAgICAgICAgICAgIHN0cmVhbWlkOm9iamVjdC5zdHJlYW1pZCwKKyAgICAgICAgICAgICAgICAgICAgdXNlcm5hbWU6b2JqZWN0LnVzZXJuYW1lLAorICAgICAgICAgICAgICAgICAgICBmb3JtYXRlZERhdGU6b2JqZWN0LmZvcm1hdGVkRGF0ZQorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLnNvcnRVc2VyTGlzdCgpOworICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InNvcnRVc2VyTGlzdCI+CisgICAgICAgIDwhW0NEQVRBWyAKKyAgICAgICAgCisgICAgICAgICAgICBpZiAodGhpcy5zb3J0VHlwZSA9PSAiYWxwaGFiZXRpY2FsIikgeworICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHNvcnRCeU5hbWUoYSxiKSB7CisgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmKGEuZmlyc3RuYW1lLnRvTG93ZXJDYXNlKCkgPCBiLmZpcnN0bmFtZS50b0xvd2VyQ2FzZSgpKSByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYoYS5maXJzdG5hbWUudG9Mb3dlckNhc2UoKSA+IGIuZmlyc3RuYW1lLnRvTG93ZXJDYXNlKCkpIHJldHVybiAxOworICAgICAgICAgICAgICAgICAgICBlbHNlIHJldHVybiAwOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHRoaXMuX3RhYmxlLmlubmVyTGlzdC5zdWJ2aWV3cy5zb3J0KHNvcnRCeVN0cmVhbUlkKTsKKyAgICAgICAgICAgICAgICB0aGlzLl90YWJsZS5pbm5lckxpc3QuX2xheW91dC5zdWJ2aWV3cy5zb3J0KHNvcnRCeVN0cmVhbUlkKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZnVuY3Rpb24gc29ydEJ5U3RyZWFtSWQoYSxiKSB7CisgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmKE51bWJlcihhLnN0cmVhbWlkKSA9PSBOdW1iZXIoYi5zdHJlYW1pZCkpIHJldHVybiAwOworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKE51bWJlcihhLnN0cmVhbWlkKSA+IE51bWJlcihiLnN0cmVhbWlkKSkgcmV0dXJuIDE7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHRoaXMuX3RhYmxlLmlubmVyTGlzdC5zdWJ2aWV3cy5zb3J0KHNvcnRCeVN0cmVhbUlkKTsKKyAgICAgICAgICAgICAgICB0aGlzLl90YWJsZS5pbm5lckxpc3QuX2xheW91dC5zdWJ2aWV3cy5zb3J0KHNvcnRCeVN0cmVhbUlkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5fdGFibGUuaW5uZXJMaXN0Ll9sYXlvdXQudXBkYXRlKCk7ICAKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+ICAgIAorICAgIAorICAgIDxtZXRob2QgbmFtZT0iY2xlYXJMaXN0Ij4KKyAgICAgICAgdGhpcy5fdGFibGUuZGVzdHJveSgpOworICAgICAgICBuZXcgbHoucGFydGljaXBhbnRzVGFibGUodGhpcyx7bmFtZTonX3RhYmxlJ30pOworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iZGlzY29ubmVjdGNsaWVudCIgYXJncz0icHVibGljU0lEIj4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTx0aGlzLl90YWJsZS5pbm5lckxpc3Quc3Vidmlld3MubGVuZ3RoO2krKyl7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3RhYmxlLmlubmVyTGlzdC5zdWJ2aWV3c1tpXS5yZWZPYmoucHVibGljU0lEPT1wdWJsaWNTSUQpeworICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IHRoaXMuX3RhYmxlLmlubmVyTGlzdC5zdWJ2aWV3c1tpXTsKKyAgICAgICAgICAgICAgICAgICAgaXRlbS5kZXN0cm95KCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPCEtLS0gZ2V0IGEgT2JqZWN0cyBMaXN0IEl0ZW0KKyAgICAgICAgQHBhcmFtIHN0cmluZyBwdWJsaWNTSUQgcHVibGljU0lECisgICAgIC0tPgorCTxtZXRob2QgbmFtZT0iZ2V0VXNlckxpc3RJdGVtQnlQdWJsaWNTSUQiIGFyZ3M9InB1YmxpY1NJRCI+CisJPCFbQ0RBVEFbCisJCXZhciB2ID0gbnVsbDsKKwkJdmFyIGxzdCA9IHRoaXMuX3RhYmxlLmlubmVyTGlzdDsKKwkJZm9yICh2YXIgaSA9IDA7IGkgPCBsc3Quc3Vidmlld3MubGVuZ3RoOyBpKyspIHsKKwkJCWlmIChsc3Quc3Vidmlld3NbaV0ucmVmT2JqLnB1YmxpY1NJRCA9PSBwdWJsaWNTSUQpIHsKKwkJCQl2ID0gbHN0LnN1YnZpZXdzW2ldOworCQkJCWJyZWFrOworCQkJfQorCQl9CisJCXJldHVybiB2OworCV1dPgorCTwvbWV0aG9kPgorICAgIAorICAgIDxwYXJ0aWNpcGFudHNUYWJsZSBuYW1lPSJfdGFibGUiIHk9IjIwIiAvPiAKKworICAgIDx2aWV3IG5hbWU9Il9taW5pSWNvbnMiIHg9IjExMiIgeT0iMCIgaGVpZ2h0PSIxOCI+CisgICAgICAgIAorICAgICAgICA8dmlldyB3aWR0aD0iMSIgaGVpZ2h0PSIkeyBwYXJlbnQucGFyZW50LmhlaWdodCB9IiB4PSIwIgorICAgICAgICAgICAgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdzZWNvbmRCb3JkZXJDb2xvcicpIH0iIC8+CisgICAgICAgIDx2aWV3IG5hbWU9Il9pY29uX21vZCIgeD0iMiIgeT0iMyIgcmVzb3VyY2U9InBhcnRpY2lwYW50c19pc01vZF9yc2MiIG9uY2xpY2s9IiIgc2hvd2hhbmRjdXJzb3I9ImZhbHNlIj4KKyAgICAgICAgICAgIDxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iNjA4IiAvPgorICAgICAgICA8L3ZpZXc+CisgICAgICAgIAorICAgICAgICA8dmlldyB3aWR0aD0iMSIgaGVpZ2h0PSIkeyBwYXJlbnQucGFyZW50LmhlaWdodCB9IiB4PSIyMCIKKyAgICAgICAgICAgIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignc2Vjb25kQm9yZGVyQ29sb3InKSB9IiAvPgorICAgICAgICA8dmlldyBuYW1lPSJfaWNvbl9kcmF3IiB4PSIyMiIgeT0iMyIgcmVzb3VyY2U9InBhcnRpY2lwYW50c19hbGxvd19kcmF3aW5nX3JzYyIgb25jbGljaz0iIiBzaG93aGFuZGN1cnNvcj0iZmFsc2UiPgorICAgICAgICAgICAgPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSI2MDkiIC8+CisgICAgICAgIDwvdmlldz4KKyAgICAgICAgCisgICAgICAgIDx2aWV3IHdpZHRoPSIxIiBoZWlnaHQ9IiR7IHBhcmVudC5wYXJlbnQuaGVpZ2h0IH0iIHg9IjQwIgorICAgICAgICAgICAgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdzZWNvbmRCb3JkZXJDb2xvcicpIH0iIC8+CisgICAgICAgIDx2aWV3IG5hbWU9Il9pY29uX3NoYXJlIiB4PSI0MiIgeT0iMyIgcmVzb3VyY2U9InNjcmVlbl9hbGxvd19yc2MiIG9uY2xpY2s9IiIgc2hvd2hhbmRjdXJzb3I9ImZhbHNlIj4KKyAgICAgICAgICAgIDxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iMTA3MyIgLz4KKyAgICAgICAgPC92aWV3PgorICAgICAgICAKKyAgICAgICAgPHZpZXcgd2lkdGg9IjEiIGhlaWdodD0iJHsgcGFyZW50LnBhcmVudC5oZWlnaHQgfSIgeD0iNjAiCisgICAgICAgICAgICBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ3NlY29uZEJvcmRlckNvbG9yJykgfSIgLz4KKyAgICAgICAgPHZpZXcgbmFtZT0iX2ljb25fcmVtb3RlIiB4PSI2MiIgeT0iMyIgcmVzb3VyY2U9InJlbW90ZV9hbGxvd19yc2MiIG9uY2xpY2s9IiIgc2hvd2hhbmRjdXJzb3I9ImZhbHNlIj4KKyAgICAgICAgICAgIDxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iMTA4NCIgLz4KKyAgICAgICAgPC92aWV3PgorICAgIAorICAgICAgICA8dmlldyB3aWR0aD0iMSIgaGVpZ2h0PSIkeyBwYXJlbnQucGFyZW50LmhlaWdodCB9IiB4PSI4MCIKKyAgICAgICAgICAgIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignc2Vjb25kQm9yZGVyQ29sb3InKSB9IiAvPgorICAgICAgICA8dmlldyBuYW1lPSJfaWNvbl9leGNsdXNpdmVfYXVkaW8iIHg9IjgyIiB5PSIzIiByZXNvdXJjZT0icGFydGljaXBhbnRzX2V4Y2x1c2l2ZV9hdWRpb19yc2MiIG9uY2xpY2s9IiIgc2hvd2hhbmRjdXJzb3I9ImZhbHNlIj4KKyAgICAgICAgICAgIDxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iMTQyMyIgLz4KKyAgICAgICAgPC92aWV3PgorICAgICAgICAKKyAgICAgICAgPHZpZXcgd2lkdGg9IjEiIGhlaWdodD0iJHsgcGFyZW50LnBhcmVudC5oZWlnaHQgfSIgeD0iMTAwIgorICAgICAgICAgICAgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdzZWNvbmRCb3JkZXJDb2xvcicpIH0iIC8+CisgICAgICAgIDx2aWV3IG5hbWU9Il9pY29uX2F2X2FsbG93IiB4PSIxMDIiIHk9IjMiIHJlc291cmNlPSJhdl9hbGxvd19yc2MiIG9uY2xpY2s9IiIgc2hvd2hhbmRjdXJzb3I9ImZhbHNlIj4KKyAgICAgICAgICAgIDxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iNjEwIiAvPgorICAgICAgICA8L3ZpZXc+CisgICAgICAgIAorICAgICAgICA8dmlldyB3aWR0aD0iMSIgaGVpZ2h0PSIkeyBwYXJlbnQucGFyZW50LmhlaWdodCB9IiB4PSIxNDIiCisgICAgICAgICAgICBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ3NlY29uZEJvcmRlckNvbG9yJykgfSIgLz4KKyAgICA8L3ZpZXc+CisgICAgCisgICAgPHZpZXcgbmFtZT0iaGVhZGVyRGl2aXNpb25MaW5lIiB3aWR0aD0iJHsgcGFyZW50LndpZHRoIH0iIAorICAgICAgICAgIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignc2Vjb25kQm9yZGVyQ29sb3InKSB9IiBoZWlnaHQ9IjEiIHk9IjIwIiAvPgorICAgIAorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3BhcnRpY2lwYW50cy9wYXJ0aWNpcGFudExpc3RJdGVtLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9wYXJ0aWNpcGFudHMvcGFydGljaXBhbnRMaXN0SXRlbS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQ1NzIxOAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9wYXJ0aWNpcGFudHMvcGFydGljaXBhbnRMaXN0SXRlbS5sengKQEAgLTAsMCArMSw2NTIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisgICAgCis8IS0tIAorICAgIFRoZSBXaWR0aCBvZiBlYWNoIGl0ZW0gaXMgc2V0IGluIHRoZSBwYXJ0aWNpcGFudExpc3QtQ2xhc3MKKyAtLT4KKzxjbGFzcyBuYW1lPSJwYXJ0aWNpcGFudExpc3RJdGVtIiBleHRlbmRzPSJ2aWV3IiBiZ2NvbG9yPSIweERBREFEQSIgaGVpZ2h0PSI0MCIgCisgICAgICAgc2hvd2hhbmRjdXJzb3I9ImZhbHNlIj4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9ImNvbm5lY3RlZFNpbmNlIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpc01vZCIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0ic3RyZWFtaWQiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9InVzZXJuYW1lIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJ1c2Vycm9vbSIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iZm9ybWF0ZWREYXRlIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJmaXJzdG5hbWUiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9Imxhc3RuYW1lIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJ1c2VyX2lkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iaXNTdXBlck1vZGVyYXRvciIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIi8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJyZWZPYmoiIHZhbHVlPSJudWxsIiAvPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgLy90aGlzLl91c2VycGljLnNldEF0dHJpYnV0ZSgnc3JjJyxkb3dubG9hZHVybCk7IAorICAgICAgICAgICAgLy9UaGlzIGlzIGEgd29ya2Fyb3VuZCBjYXVzZSBpbiBMUFMtNC4yLnggaW1tZWRpYXRlbGx5IGxvYWRpbmcgZG9lcyBub3Qgd29yaworICAgICAgICAgICAgbHouVGltZXIuYWRkVGltZXIoIG5ldyBMekRlbGVnYXRlKCB0aGlzLCAiZmFkZVRleHQiICksIDEwMDAgKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoY2FudmFzLnB1YmxpY1NJRCA9PSB0aGlzLnJlZk9iai5wdWJsaWNTSUQpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9maXJzdE5hbWUuc2V0QXR0cmlidXRlKCJmb250c3R5bGUiLCJib2xkIik7CisgICAgICAgICAgICAgICAgdGhpcy5fbGFzdE5hbWUuc2V0QXR0cmlidXRlKCJmb250c3R5bGUiLCJib2xkIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMudXBkYXRlSWNvbnMoKTsKKyAgICAgICAgXV0+CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iZmFkZVRleHQiIGFyZ3M9Imlnbm9yZT1udWxsIj4gCisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAKKyAgICAgICAgCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJmYWRlVGV4dCA6MTogIix0aGlzLnJlZk9iaik7CisgICAgICAgIAlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZmFkZVRleHQgOjI6ICIsdGhpcy5yZWZPYmoucGljdHVyZV91cmkpOworICAgICAgICAKKyAgICAgICAgCWlmICh0aGlzLnJlZk9iai5waWN0dXJlX3VyaS5zdGFydHNXaXRoKCJodHRwIikgfHwgdGhpcy5yZWZPYmoucGljdHVyZV91cmkuc3RhcnRzV2l0aCgiaHR0cHMiKSkgeworICAgICAgICAJCXZhciBkb3dubG9hZHVybCA9IHRoaXMucmVmT2JqLnBpY3R1cmVfdXJpOworICAgICAgICAgICAgLy9EbyBMb2FkIHRoZSBDdXN0b20gTW9vZGxlIFByb2ZpbGVlIFBpY3R1cmUKKyAgICAgICAgCX0gZWxzZSBpZiAodGhpcy5yZWZPYmouZXh0ZXJuYWxVc2VySWQgPj0gMSAmJiB0aGlzLnJlZk9iai5leHRlcm5hbFVzZXJUeXBlID09ICJtb29kbGUiKSB7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVmT2JqLmV4dGVybmFsVXNlcklkID09IDEpIHsKKyAgICAgICAgICAgICAgICAgICAgLy9NZWFucyBpdCBpcyBhIGd1ZXN0CisgICAgICAgICAgICAgICAgICAgIHZhciBkb3dubG9hZHVybCA9IGNhbnZhcy5tb29kbGVXd3dSb290KyIvcGl4L3UvZjIucG5nIjsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICB2YXIgZG93bmxvYWR1cmwgPSBjYW52YXMubW9vZGxlV3d3Um9vdCsiL3VzZXIvcGl4LnBocC8iKyB0aGlzLnJlZk9iai5leHRlcm5hbFVzZXJJZCArIi9mMi5qcGciOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgIAorICAgICAgICAgICAgICAgIHZhciBkb3dubG9hZHVybCA9IGNhbnZhcy5nZXRVcmwoKSArICdEb3dubG9hZEhhbmRsZXI/ZmlsZU5hbWU9Q0hBVCcKKyAgICAgICAgICAgICAgICAgICAgICAgICsnJm1vZHVsZU5hbWU9Y2hhdCZwYXJlbnRQYXRoPSZyb29tX2lkPScKKyAgICAgICAgICAgICAgICAgICAgICAgICsnJnJlbW90ZVVzZXJpZD0nK3RoaXMudXNlcl9pZAorICAgICAgICAgICAgICAgICAgICAgICAgKycmc2lkPScrY2FudmFzLnNlc3Npb25JZDsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53YXJuKCJkb3dubG9hZHVybCA6MzogIixkb3dubG9hZHVybCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuX3VzZXJwaWMuc2V0QXR0cmlidXRlKCdzcmMnLGRvd25sb2FkdXJsKTsgCisgICAgICAgICAgICAKKyAgICAgICAgXV0+ICAgICAgICAgIAorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9uaXNtb2RlcmF0b3IiIHJlZmVyZW5jZT0iY2FudmFzIiBhcmdzPSJtIj4KKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIiMjIyMjIyBpc21vZGVyYXRvciAiLG0pOworICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIHRoaXMuaXNNb2QgPSBjYW52YXMuZ2V0SXNNb2RlcmF0b3JCeVB1YmxpY1NJRCh0aGlzLnJlZk9iai5wdWJsaWNTSUQpOworICAgICAgICAgICAgdGhpcy51cGRhdGVJY29ucygpOworICAgICAgICBdXT4KKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib25kcmF3QWxsb3dTdGF0dXMiIHJlZmVyZW5jZT0iY2FudmFzIiBhcmdzPSJkcmF3T2JqZWN0Ij4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICBpZiAodGhpcy5yZWZPYmoucHVibGljU0lEID09IGRyYXdPYmplY3QucHVibGljU0lEKSB7CisgICAgICAgICAgICAgICAgdGhpcy5yZWZPYmouY2FuRHJhdyA9IGRyYXdPYmplY3QuY2FuRHJhdzsKKyAgICAgICAgICAgICAgICB0aGlzLnJlZk9iai5jYW5TaGFyZSA9IGRyYXdPYmplY3QuY2FuU2hhcmU7CisgICAgICAgICAgICAgICAgdGhpcy5yZWZPYmouY2FuUmVtb3RlID0gZHJhd09iamVjdC5jYW5SZW1vdGU7CisgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVJY29ucygpOworICAgICAgICAgICAgfQorICAgICAgICBdXT4KKyAgICA8L2hhbmRsZXI+CisKKyAgICA8aGFuZGxlciBuYW1lPSJvbmV4Y2x1c2l2ZUF1ZGlvQWxsb3dTdGF0dXMiIHJlZmVyZW5jZT0iY2FudmFzIiBhcmdzPSJyY2xPYmplY3QiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIGlmICh0aGlzLnJlZk9iai5wdWJsaWNTSUQgPT0gcmNsT2JqZWN0LnB1YmxpY1NJRCkgeworICAgICAgICAgICAgICAgIHRoaXMucmVmT2JqLmNhbkdpdmVBdWRpbyA9IHJjbE9iamVjdC5jYW5HaXZlQXVkaW87CisgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVJY29ucygpOworICAgICAgICAgICAgfQorICAgICAgICBdXT4KKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib25taWNNdXRlZFN0YXR1c0NoYW5nZWRJdGVtIiByZWZlcmVuY2U9ImNhbnZhcyIgYXJncz0icm9vbUNsaWVudE9iaiI+CisgICAgCTwhW0NEQVRBWworICAgIAkgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9ubWljTXV0ZWRTdGF0dXNDaGFuZ2VkSXRlbSA6MTogIixyb29tQ2xpZW50T2JqLnB1YmxpY1NJRCk7CisgICAgICAgICAgICBpZiAodGhpcy5yZWZPYmoucHVibGljU0lEID09IHJvb21DbGllbnRPYmoucHVibGljU0lEKSB7CisgICAgICAgICAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9ubWljTXV0ZWRTdGF0dXNDaGFuZ2VkSXRlbSA6MjogIixyb29tQ2xpZW50T2JqLm1pY011dGVkKTsKKyAgICAgICAgICAgICAgICB0aGlzLnJlZk9iai5taWNNdXRlZCA9IHJvb21DbGllbnRPYmoubWljTXV0ZWQ7CisgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVJY29ucygpOworICAgICAgICAgICAgfQorICAgICAgICBdXT4KKyAgICA8L2hhbmRsZXI+CisKKyAgICA8aGFuZGxlciBuYW1lPSJvbk11dGUiIHJlZmVyZW5jZT0iY2FudmFzLnRoaXNoaWIuc3dpdGNoTWljTXV0ZWQiIGFyZ3M9ImV2ZW50Ij4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib25NdXRlICIsIGV2ZW50LnB1YmxpY1NJRCwgZXZlbnQubXV0ZSk7CisgICAgICAgICAgICBpZih0aGlzLnJlZk9iai5wdWJsaWNTSUQgPT0gZXZlbnQucHVibGljU0lEKSB7CisgICAgICAgICAgICAgICAgdGhpcy5yZWZPYmoubWljTXV0ZWQgPSBldmVudC5tdXRlOworICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlSWNvbnMoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgXV0+CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgIDwhLS0KKyAgICAgICAgU2V0IGFjdGlvbnMgdG8gdXBkYXRlIHRoZSBVc2VyLVJpZ2h0cyBhbmQgSW5mb3JtYXRpb24gd2hhdCBoZSBjYW4gZG8KKyAgICAgLS0+CisgICAgPG1ldGhvZCBuYW1lPSJ1cGRhdGVJY29ucyI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ1cGRhdGVCeU1vZCwiLHRoaXMuaXNNb2QsY2FudmFzLnN0cmVhbWlkKTsKKyAgICAgICAgCisgICAgICAgICAgICAvL0lmIHRoaXMgaXMgb25lIE1vZCBoZSBjYW4gYWxzbyBkcmF3IG9uIHRoZSBXaGl0Ym9hcmQKKyAgICAgICAgICAgIGlmICh0aGlzLmlzTW9kKSB7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgdGhpcy5fbWluaUljb25zLl9pc01vZC5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgICAgICAgICAgdGhpcy5fbWluaUljb25zLl9pc01vZEFkZGJ1dHRvbi5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9taW5pSWNvbnMuX2NhbkRyYXcuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgICAgICAgICAgICAgIC8vdGhlIG1vZGVyYXRvciBjYW4gbmV2ZXIgcmVtb3ZlIHRoZSByaWdodCB0byBkcmF3IG9uIHRoZSB3aGl0ZWJvYXJkIGZvciBoaW1zZWxmCisgICAgICAgICAgICAgICAgdGhpcy5fbWluaUljb25zLl9jYW5EcmF3LnNldEF0dHJpYnV0ZSgic2hvd2hhbmRjdXJzb3IiLGZhbHNlKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9taW5pSWNvbnMuX2NhbkRyYXcuX3RleHQuc2V0QXR0cmlidXRlKCJ0ZXh0IiwiIik7CisgICAgICAgICAgICAgICAgdGhpcy5fbWluaUljb25zLl9jYW5EcmF3TW9kZXJhdG9yLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHRoaXMuX21pbmlJY29ucy5fYWxsb3dTaGFyZS5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgICAgICAgICAgdGhpcy5fbWluaUljb25zLl9hbGxvd1NoYXJlLnNldEF0dHJpYnV0ZSgic2hvd2hhbmRjdXJzb3IiLGZhbHNlKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9taW5pSWNvbnMuX2FsbG93U2hhcmUuX3RleHQuc2V0QXR0cmlidXRlKCJ0ZXh0IiwiIik7CisgICAgICAgICAgICAgICAgdGhpcy5fbWluaUljb25zLl9kZW55U2hhcmUuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgdGhpcy5fbWluaUljb25zLl9hbGxvd1JlbW90ZS5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgICAgICAgICAgdGhpcy5fbWluaUljb25zLl9hbGxvd1JlbW90ZS5zZXRBdHRyaWJ1dGUoInNob3doYW5kY3Vyc29yIixmYWxzZSk7CisgICAgICAgICAgICAgICAgdGhpcy5fbWluaUljb25zLl9hbGxvd1JlbW90ZS5fdGV4dC5zZXRBdHRyaWJ1dGUoInRleHQiLCIiKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9taW5pSWNvbnMuX2RlbnlSZW1vdGUuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisKKyAgICAgICAgICAgICAgICB0aGlzLl9taW5pSWNvbnMuX2FsbG93RXhjbHVzaXZlQXVkaW8uc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgICAgICAgICAgICAgIHRoaXMuX21pbmlJY29ucy5fYWxsb3dFeGNsdXNpdmVBdWRpby5zZXRBdHRyaWJ1dGUoInNob3doYW5kY3Vyc29yIixmYWxzZSk7CisgICAgICAgICAgICAgICAgdGhpcy5fbWluaUljb25zLl9hbGxvd0V4Y2x1c2l2ZUF1ZGlvLl90ZXh0LnNldEF0dHJpYnV0ZSgidGV4dCIsIiIpOworICAgICAgICAgICAgICAgIHRoaXMuX21pbmlJY29ucy5fZGVueUV4Y2x1c2l2ZUF1ZGlvLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChjYW52YXMuaXNtb2RlcmF0b3IpIHsKKyAgICAgICAgICAgICAgICAJdGhpcy5feC5fa2lja1VzZXIuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgICAgICAgICAgICAgICAgICBpZiAoY2FudmFzLmlzbW9kZXJhdG9yICYmIGNhbnZhcy5wdWJsaWNTSUQgIT0gdGhpcy5yZWZPYmoucHVibGljU0lEKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9taW5pSWNvbnMuX2lzTW9kLnNldEF0dHJpYnV0ZSgic2hvd2hhbmRjdXJzb3IiLHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbWluaUljb25zLl9pc01vZC5fdGV4dC5zZXRBdHRyaWJ1dGUoInRleHQiLGNhbnZhcy5nZXRMYWJlbE5hbWUoNjc1KSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9taW5pSWNvbnMuX2lzTW9kLl90ZXh0LnNldEF0dHJpYnV0ZSgidGV4dCIsIiIpOworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbWluaUljb25zLl9pc01vZC5zZXRBdHRyaWJ1dGUoInNob3doYW5kY3Vyc29yIixmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIAl0aGlzLl94Ll9raWNrVXNlci5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fbWluaUljb25zLl9pc01vZC5fdGV4dC5zZXRBdHRyaWJ1dGUoInRleHQiLCIiKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fbWluaUljb25zLl9pc01vZC5zZXRBdHRyaWJ1dGUoInNob3doYW5kY3Vyc29yIixmYWxzZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9taW5pSWNvbnMuX2lzTW9kLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvL2lmIHRoaXMgVXNlciBpcyB0aGUgTW9kZXJhdG9yIGhlIGNhbiBncmFudCBhY2Nlc3MgdG8gd2hpdGVib2FyZCB0byBhbnlib2R5CisgICAgICAgICAgICAgICAgaWYgKGNhbnZhcy5pc21vZGVyYXRvcikgeworICAgICAgICAgICAgICAgIAl0aGlzLl94Ll9raWNrVXNlci5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX21pbmlJY29ucy5faXNNb2RBZGRidXR0b24uc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIHRoaXMuX21pbmlJY29ucy5fY2FuRHJhdy5fdGV4dC5zZXRBdHRyaWJ1dGUoInRleHQiLGNhbnZhcy5nZXRMYWJlbE5hbWUoNjEyKSk7CisgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlZk9iai5jYW5EcmF3KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvL09ubHkgaW4gVEhJUyBjYXNlIHlvdSBjYW4gcmVtb3ZlIHRoZSBEcmF3LXRvLXdoaXRlYm9hcmQgcmlnaHQgCisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9taW5pSWNvbnMuX2NhbkRyYXcuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbWluaUljb25zLl9jYW5EcmF3LnNldEF0dHJpYnV0ZSgic2hvd2hhbmRjdXJzb3IiLHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbWluaUljb25zLl9jYW5EcmF3TW9kZXJhdG9yLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbWluaUljb25zLl9jYW5EcmF3LnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbWluaUljb25zLl9jYW5EcmF3LnNldEF0dHJpYnV0ZSgic2hvd2hhbmRjdXJzb3IiLGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX21pbmlJY29ucy5fY2FuRHJhdy5fdGV4dC5zZXRBdHRyaWJ1dGUoInRleHQiLCIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX21pbmlJY29ucy5fY2FuRHJhd01vZGVyYXRvci5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAJdGhpcy5fbWluaUljb25zLl9hbGxvd1NoYXJlLl90ZXh0LnNldEF0dHJpYnV0ZSgidGV4dCIsY2FudmFzLmdldExhYmVsTmFtZSgxMDY4KSk7CisgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlZk9iai5jYW5TaGFyZSkgeworICAgICAgICAgICAgICAgICAgICAJdGhpcy5fbWluaUljb25zLl9hbGxvd1NoYXJlLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX21pbmlJY29ucy5fYWxsb3dTaGFyZS5zZXRBdHRyaWJ1dGUoInNob3doYW5kY3Vyc29yIix0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX21pbmlJY29ucy5fZGVueVNoYXJlLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAJdGhpcy5fbWluaUljb25zLl9hbGxvd1NoYXJlLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbWluaUljb25zLl9hbGxvd1NoYXJlLnNldEF0dHJpYnV0ZSgic2hvd2hhbmRjdXJzb3IiLGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX21pbmlJY29ucy5fZGVueVNoYXJlLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fbWluaUljb25zLl9hbGxvd1JlbW90ZS5fdGV4dC5zZXRBdHRyaWJ1dGUoInRleHQiLGNhbnZhcy5nZXRMYWJlbE5hbWUoMTA3OSkpOworICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZWZPYmouY2FuUmVtb3RlKSB7CisgICAgICAgICAgICAgICAgICAgIAl0aGlzLl9taW5pSWNvbnMuX2FsbG93UmVtb3RlLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX21pbmlJY29ucy5fYWxsb3dSZW1vdGUuc2V0QXR0cmlidXRlKCJzaG93aGFuZGN1cnNvciIsdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9taW5pSWNvbnMuX2RlbnlSZW1vdGUuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIAl0aGlzLl9taW5pSWNvbnMuX2FsbG93UmVtb3RlLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbWluaUljb25zLl9hbGxvd1JlbW90ZS5zZXRBdHRyaWJ1dGUoInNob3doYW5kY3Vyc29yIixmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9taW5pSWNvbnMuX2RlbnlSZW1vdGUuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgICAgICAgICAgICAgICAgICB9CisKKwkJCQkJdGhpcy5fbWluaUljb25zLl9hbGxvd0V4Y2x1c2l2ZUF1ZGlvLl90ZXh0LnNldEF0dHJpYnV0ZSgidGV4dCIsY2FudmFzLmdldExhYmVsTmFtZSgxNDI1KSk7CisgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlZk9iai5jYW5HaXZlQXVkaW8pIHsKKyAgICAgICAgICAgICAgICAgICAgCXRoaXMuX21pbmlJY29ucy5fYWxsb3dFeGNsdXNpdmVBdWRpby5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9taW5pSWNvbnMuX2FsbG93RXhjbHVzaXZlQXVkaW8uc2V0QXR0cmlidXRlKCJzaG93aGFuZGN1cnNvciIsdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9taW5pSWNvbnMuX2RlbnlFeGNsdXNpdmVBdWRpby5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgCXRoaXMuX21pbmlJY29ucy5fYWxsb3dFeGNsdXNpdmVBdWRpby5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX21pbmlJY29ucy5fYWxsb3dFeGNsdXNpdmVBdWRpby5zZXRBdHRyaWJ1dGUoInNob3doYW5kY3Vyc29yIixmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9taW5pSWNvbnMuX2RlbnlFeGNsdXNpdmVBdWRpby5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAJdGhpcy5feC5fa2lja1VzZXIuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX21pbmlJY29ucy5faXNNb2RBZGRidXR0b24uc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZWZPYmouY2FuRHJhdykgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbWluaUljb25zLl9jYW5EcmF3LnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX21pbmlJY29ucy5fY2FuRHJhdy5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVmT2JqLmNhblNoYXJlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9taW5pSWNvbnMuX2FsbG93U2hhcmUuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5fbWluaUljb25zLl9hbGxvd1NoYXJlLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZWZPYmouY2FuUmVtb3RlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9taW5pSWNvbnMuX2FsbG93UmVtb3RlLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX21pbmlJY29ucy5fYWxsb3dSZW1vdGUuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZWZPYmouY2FuR2l2ZUF1ZGlvKSB7CisgICAgICAgICAgICAgICAgICAgIAl0aGlzLl9taW5pSWNvbnMuX2FsbG93RXhjbHVzaXZlQXVkaW8uc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAJdGhpcy5fbWluaUljb25zLl9hbGxvd0V4Y2x1c2l2ZUF1ZGlvLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAvL05vIFVwZGF0ZSBhY3Rpb24gYXZhaWxhYmxlCisgICAgICAgICAgICAgICAgICAgIHRoaXMuX21pbmlJY29ucy5fY2FuRHJhd01vZGVyYXRvci5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fbWluaUljb25zLl9kZW55U2hhcmUuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX21pbmlJY29ucy5fZGVueVJlbW90ZS5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fbWluaUljb25zLl9kZW55RXhjbHVzaXZlQXVkaW8uc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX21pbmlJY29ucy5fY2FuRHJhdy5zZXRBdHRyaWJ1dGUoInNob3doYW5kY3Vyc29yIixmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX21pbmlJY29ucy5fY2FuRHJhdy5fdGV4dC5zZXRBdHRyaWJ1dGUoInRleHQiLCIiKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fbWluaUljb25zLl9hbGxvd1JlbW90ZS5fdGV4dC5zZXRBdHRyaWJ1dGUoInRleHQiLCIiKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fbWluaUljb25zLl9hbGxvd0V4Y2x1c2l2ZUF1ZGlvLl90ZXh0LnNldEF0dHJpYnV0ZSgidGV4dCIsIiIpOworICAgICAgICAgICAgICAgICAgICB0aGlzLl9taW5pSWNvbnMuX2FsbG93U2hhcmUuX3RleHQuc2V0QXR0cmlidXRlKCJ0ZXh0IiwiIik7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbm1pY011dGVkU3RhdHVzQ2hhbmdlZEl0ZW0gOjM6ICIsdGhpcy5yZWZPYmoucHVibGljU0lELHRoaXMucmVmT2JqLm1pY011dGVkKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHRoaXMucmVmT2JqLm1pY011dGVkKSB7CisgICAgICAgICAgICAJdGhpcy5feC5fbXV0ZS5fdGV4dC5zZXRBdHRyaWJ1dGUoImxhYmVsaWQiLDE0MDgpOworICAgICAgICAgICAgCXRoaXMuX3guX211dGUuc2V0QXR0cmlidXRlKCJmcmFtZSIsMik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgCXRoaXMuX3guX211dGUuX3RleHQuc2V0QXR0cmlidXRlKCJsYWJlbGlkIiwxNDA3KTsKKyAgICAgICAgICAgIAl0aGlzLl94Ll9tdXRlLnNldEF0dHJpYnV0ZSgiZnJhbWUiLDEpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAvL3RoaXMgSWNvbiBpcyBvbmx5IGF2YWlsYWJsZSBpbiBjYXNlIGl0cyB0aGUgY3VycmVudCBVc2VyIAorICAgICAgICAgICAgaWYgKGNhbnZhcy5wdWJsaWNTSUQgPT0gdGhpcy5yZWZPYmoucHVibGljU0lEKSB7CisgICAgICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiSVMgU0VMRiAhISEhISEiKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9taW5pSWNvbnMuX3Jlc3RhcnREZXZpY2Uuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9taW5pSWNvbnMuX3Jlc3RhcnREZXZpY2Uuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgICAgICAgICB9CisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDwhLS0KKyAgICBwdWJsaWMgQm9vbGVhbiBzZXRDYW5EcmF3KFN0cmluZyBTSUQsIFN0cmluZyBwdWJsaWNTSUQsIGJvb2xlYW4gY2FuRHJhdykKKyAgICAgLS0+CisgICAgIAorICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9InNldENhbkRyYXciIGZ1bmNuYW1lPSJ3aGl0ZWJvYXJkc2VydmljZS5zZXRDYW5EcmF3IgorICAgICAgICAgICAgICAgICAgICAgICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSI+CisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50LnJlZk9iai5wdWJsaWNTSUQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiAhcGFyZW50LnBhcmVudC5yZWZPYmouY2FuRHJhdzs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZSB0aGUgcnRtcGNvbm5lY3Rpb24KKyAgICAgICAgICAgIC8vRGVidWcud3JpdGUoIndoaXRlYm9hcmRzZXJ2aWNlLnNldENhbkRyYXcgOiAiLHZhbHVlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4gICAKKyAgICA8L25ldFJlbW90ZUNhbGxIaWI+ICAKKyAgICAgICAgICAgIAorICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9InNldENhblNoYXJlIiBmdW5jbmFtZT0id2hpdGVib2FyZHNlcnZpY2Uuc2V0Q2FuU2hhcmUiCisgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9Ij4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gY2FudmFzLnNlc3Npb25JZDs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQucmVmT2JqLnB1YmxpY1NJRDs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuICFwYXJlbnQucGFyZW50LnJlZk9iai5jYW5TaGFyZTs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZSB0aGUgcnRtcGNvbm5lY3Rpb24KKyAgICAgICAgICAgIC8vRGVidWcud3JpdGUoIndoaXRlYm9hcmRzZXJ2aWNlLnNldENhblNoYXJlIDogIix2YWx1ZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+ICAgCisgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAKKyAgICAKKyAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJzZXRDYW5SZW1vdGUiIGZ1bmNuYW1lPSJ3aGl0ZWJvYXJkc2VydmljZS5zZXRDYW5SZW1vdGUiCisgICAgICAgICAgICAgICAgICAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iPgorICAgICAgICA8YXR0cmlidXRlIG5hbWU9InB1YmxpY1NJRCIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImNhblJlbW90ZSIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gY2FudmFzLnNlc3Npb25JZDs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQucmVmT2JqLnB1YmxpY1NJRDs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuICFwYXJlbnQucGFyZW50LnJlZk9iai5jYW5SZW1vdGU7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ3aGl0ZWJvYXJkc2VydmljZS5zZXRDYW5SZW1vdGUgOiAiLHZhbHVlKTsKKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+ICAgCisgICAgPC9uZXRSZW1vdGVDYWxsSGliPgorCisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0ic2V0Q2FuR2l2ZUF1ZGlvIiBmdW5jbmFtZT0id2hpdGVib2FyZHNlcnZpY2Uuc2V0Q2FuR2l2ZUF1ZGlvIgorICAgICAgICAgICAgICAgICAgIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9Ij4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBjYW52YXMuc2Vzc2lvbklkOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC5yZWZPYmoucHVibGljU0lEOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gIXBhcmVudC5wYXJlbnQucmVmT2JqLmNhbkdpdmVBdWRpbzs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIC8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInNldENhbkdpdmVBdWRpbyA6ICIsdmFsdWUpOworICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICA8L25ldFJlbW90ZUNhbGxIaWI+CisgICAgICAgICAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3ZlciI+CisgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdiZ2NvbG9yJyxjYW52YXMuZ2V0VGhlbWVDb2xvcignYmFzZU1vdXNlY29sb3JpemVyJykpOworICAgIDwvaGFuZGxlcj4KKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3V0Ij4KKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2JnY29sb3InLDB4REFEQURBKTsKKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPGltYWdlIG5hbWU9Il91c2VycGljIiBzdHJldGNoZXM9ImJvdGgiIHg9IjEiPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmxvYWQiPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgaWYgKHRoaXMuaGVpZ2h0ID4gMzgpIHsKKyAgICAgICAgICAgICAgICAgICAgLy9JZiBiaWdnZXIgdGhlbiBjb250YWludGVyIHRoZW4gc2NhbGUgaXQKKyAgICAgICAgICAgICAgICAgICAgdmFyIHdpZHRoID0gdGhpcy53aWR0aC8odGhpcy5oZWlnaHQvMzgpOworICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywzOCk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCd3aWR0aCcsd2lkdGgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAodGhpcy53aWR0aCA+IDM4KSB7CisgICAgICAgICAgICAgICAgICAgIC8vSWYgYmlnZ2VyIHRoZW4gY29udGFpbnRlciB0aGVuIHNjYWxlIGl0CisgICAgICAgICAgICAgICAgICAgIHZhciBoZWlnaHQgPSB0aGlzLmhlaWdodC8odGhpcy53aWR0aC8zOCk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdoZWlnaHQnLGhlaWdodCk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCd3aWR0aCcsMzgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9pbWFnZT4KKyAgICAKKyAgICA8bGFiZWxUZXh0IG5hbWU9Il9maXJzdE5hbWUiIGZvbnRzaXplPSIxMCIgeD0iNDAiIHRleHQ9IiR7IHBhcmVudC5maXJzdG5hbWUgfSIgLz4KKyAgICA8bGFiZWxUZXh0IG5hbWU9Il9sYXN0TmFtZSIgZm9udHNpemU9IjEwIiB4PSI0MCIgeT0iMjAiIHRleHQ9IiR7IHBhcmVudC5sYXN0bmFtZSB9IiAvPgorICAgIAorCTxtaW5pSWNvbnMgbmFtZT0iX3N0YXJ0X3ByaXZhdGVfY2hhdF9yc2MiIHg9IjExNCIgeSA9ICIyIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiCisJCXJlc291cmNlPSJzdGFydF9wcml2YXRlX2NoYXRfcnNjIiBzaG93aGFuZGN1cnNvcj0idHJ1ZSIKKwkJdmlzaWJsZT0iJHsgKGNhbnZhcy5jdXJyZW50Um9vbU9iai5oaWRlQ2hhdCA9PSBudWxsIHx8ICFjYW52YXMuY3VycmVudFJvb21PYmouaGlkZUNoYXQpICZhbXA7JmFtcDsgcGFyZW50LnJlZk9iai5wdWJsaWNTSUQgIT0gY2FudmFzLnB1YmxpY1NJRCB9Ij4KKwkJCisJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorCQkJdmFyIHJlZk9iaiA9IHBhcmVudC5yZWZPYmo7CisJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiU3RhcnQgUHJpdmF0ZSBDaGF0OiAiLCByZWZPYmopOworCQkJaWYgKHJlZk9iai5wdWJsaWNTSUQgPT0gY2FudmFzLnB1YmxpY1NJRCkgeworCQkJCW5ldyBsei5sYWJlbGVycm9yUG9wdXAoY2FudmFzLm1haW5fY29udGVudC5fY29udGVudC5pbm5lcgorCQkJCQksIHtlcnJvcmxhYmVsaWQ6MTQ5NX0pOworCQkJCXJldHVybjsKKwkJCX0KKwkJCWNhbnZhcy5fY3VycmVudENoYXRQYW5lbC5hZGRDaGF0KHJlZk9iaik7CisJCTwvaGFuZGxlcj4KKwkJPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSIxNDkzIiAvPgorCTwvbWluaUljb25zPgorICAgIAorICAgIDx2aWV3IG5hbWU9Il94IiB4PSIxMzIiIHk9IjIiPgorCSAgICAgCisJICAgIDxtaW5pSWNvbnMgbmFtZT0iX211dGUiIHg9IjgyIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHJlc291cmNlPSJtdXRlX21pY3JvX2J0bl9yc2MiIHNob3doYW5kY3Vyc29yPSJ0cnVlIiA+CisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICAgICAgY2FudmFzLl92aWRlb2NvbnRhaW5lci5fdmlkZW92aWV3Y29udGVudC5tdXRlU291bmQocGFyZW50LnBhcmVudC5yZWZPYmoucHVibGljU0lELCAhcGFyZW50LnBhcmVudC5yZWZPYmoubWljTXV0ZWQpOworICAgICAgICAgICAgICAgIF1dPgorICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAgICAgPGxhYmVsVG9vbHRpcCBuYW1lPSJfdGV4dCIgdGV4dD0iIiBsYWJlbGlkPSIxNDA3IiAvPgorICAgICAgICA8L21pbmlJY29ucz4gIAorICAgICAgICAKKwkgICAgPG1pbmlJY29ucyBuYW1lPSJfa2lja1VzZXIiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgeD0iMTAwIgorCSAgICAgICAgICAgICAgIHJlc291cmNlPSJraWNrX3VzZXJfcnNjIiBzaG93aGFuZGN1cnNvcj0idHJ1ZSI+CisJICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKwkgICAgICAgIAkKKwkgICAgICAgIAlpZiAocGFyZW50LnBhcmVudC5yZWZPYmoucHVibGljU0lEID09IGNhbnZhcy5wdWJsaWNTSUQpIHsKKwkgICAgICAgICAgICAgICAgbmV3IGx6LmxhYmVsZXJyb3JQb3B1cChjYW52YXMubWFpbl9jb250ZW50Ll9jb250ZW50LmlubmVyLHsKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JsYWJlbGlkOjEyMTQKKwkgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKwkgICAgICAgICAgICAgICAgcmV0dXJuOworCSAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAgICAgCisJICAgICAgICAJaWYgKHBhcmVudC5pc1N1cGVyTW9kZXJhdG9yKSB7CisJICAgICAgICAgICAgICAgIG5ldyBsei5sYWJlbGVycm9yUG9wdXAoY2FudmFzLm1haW5fY29udGVudC5fY29udGVudC5pbm5lcix7ZXJyb3JsYWJlbGlkOjEyMTd9KTsKKwkgICAgICAgICAgICAgICAgcmV0dXJuOworCSAgICAgICAgICAgIH0KKwkgICAgICAgIAkKKwkgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiVVNFUiBLaWNrOiAiLHBhcmVudC5wYXJlbnQucmVmT2JqLnB1YmxpY1NJRCk7CisJICAgICAgICAgICAgbmV3IGx6LmNvbmZpcm1hdGlvblNpbmdsZShjYW52YXMubWFpbl9jb250ZW50Ll9jb250ZW50LmlubmVyLHsKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxpZDoxMjE2LGxhYmVsaWRlcnJvcjoxMjE1LAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZPYmo6dGhpcyxzaG93Q2hlY2tCb3g6ZmFsc2V9KTsKKwkgICAgICAgICAgICAKKwkgICAgICAgIDwvaGFuZGxlcj4KKwkgICAgICAgIAorCSAgICAgICAgPG1ldGhvZCBuYW1lPSJzZW5kQ29uZmlybWF0aW9uIiBhcmdzPSJ5ZXNubyIgPgorCSAgICAgICAgICAgIHRoaXMua2lja1VzZXJCeVB1YmxpY1NJRC5wdWJsaWNTSUQgPSBwYXJlbnQucGFyZW50LnJlZk9iai5wdWJsaWNTSUQ7CisJICAgICAgICAgICAgdGhpcy5raWNrVXNlckJ5UHVibGljU0lELmRvQ2FsbCgpOworCSAgICAgICAgPC9tZXRob2Q+CisJICAgICAgICAKKwkgICAgICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImtpY2tVc2VyQnlQdWJsaWNTSUQiIGZ1bmNuYW1lPSJ1c2Vyc2VydmljZS5raWNrVXNlckJ5UHVibGljU0lEIiAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiA+ICAgIAorCSAgICAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0icHVibGljU0lEIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+ICAKKwkgICAgICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBjYW52YXMuc2Vzc2lvbklkOyA8L21ldGhvZD48L25ldHBhcmFtPgorCSAgICAgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIHBhcmVudC5wdWJsaWNTSUQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisJICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJraWNrVXNlckJ5UHVibGljU0lEOiAiLHZhbHVlKTsKKwkgICAgICAgICAgICAgICAgLy90aGlzLnBhcmVudC5kZXN0cm95KCk7CisJICAgICAgICAgICAgPC9oYW5kbGVyPgorCSAgICAgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAKKwkgICAgICAgIAorCSAgICAgICAgPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSIxMjEzIiAvPgorCSAgICA8L21pbmlJY29ucz4gICAKKyAgICA8L3ZpZXc+CisgICAgCisgICAgPHZpZXcgbmFtZT0iX21pbmlJY29ucyIgeD0iMTEzIiB5PSIyMiIgaGVpZ2h0PSIxOCIgPgorICAgICAgICAKKyAgICAgICAgPG1pbmlJY29ucyBuYW1lPSJfaXNNb2QiIHg9IjAiIHdpZHRoPSIxNiIgcmVzb3VyY2U9InJpZ2h0X2lzYWN0aXZlX3JzYyIgCisgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxNiIgc2hvd2hhbmRjdXJzb3I9ImZhbHNlIj4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50LnBhcmVudC5pc1N1cGVyTW9kZXJhdG9yKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgbHoubGFiZWxlcnJvclBvcHVwKGNhbnZhcy5tYWluX2NvbnRlbnQuX2NvbnRlbnQuaW5uZXIse2Vycm9ybGFiZWxpZDo4Mzh9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAvL2lmIHRoZSBsYWJlbCBpcyBzZXQgYW5kIHRoaXMgaXMgYSBNb2RlcmF0b3IgdGhlbiB0aGlzIHVzZXIgc2hvdWxkCisgICAgICAgICAgICAgICAgICAgIC8vYWxsb3cgdGhlIGNsaWNrIGV2ZW50ID0+IHRoZSBjbGljayBldmVudCB3aWxsIHRyaWdnZXIKKyAgICAgICAgICAgICAgICAgICAgLy90aGlzIHVzZXIgYXdheSBmcm9tIGJlZWluZyBhYmxlIHRvIGRyYXcgb24gdGhlIHdoaXRlYm9hcmQKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNhbnZhcy5pc21vZGVyYXRvciAmJiB0aGlzLl90ZXh0LnRleHQubGVuZ3RoICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vRG8gaXQgCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiRG8gUmVtb3ZlIEl0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBoaWIucmVtb3ZlTW9kZXJhdG9yLnB1YmxpY1NJRE9mTmV3TW9kZXJhdG9yID0gcGFyZW50LnBhcmVudC5yZWZPYmoucHVibGljU0lEOworICAgICAgICAgICAgICAgICAgICAgICAgaGliLnJlbW92ZU1vZGVyYXRvci5kb0NhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vcGFyZW50LnBhcmVudC5zZXRDYW5EcmF3LmRvQ2FsbCgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgXV0+CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgICAgICA8bGFiZWxUb29sdGlwIG5hbWU9Il90ZXh0IiB0ZXh0PSIiIC8+CisgICAgICAgIDwvbWluaUljb25zPgorICAgICAgICAKKyAgICAgICAgPG1pbmlJY29ucyBuYW1lPSJfaXNNb2RBZGRidXR0b24iIG9wYWNpdHk9IjAuNSIgeD0iMCIgd2lkdGg9IjE2IiByZXNvdXJjZT0icmlnaHRfbm90YWN0aXZlX3JzYyIgCisgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxNiIgc2hvd2hhbmRjdXJzb3I9InRydWUiPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgICAgIC8vaWYgdGhlIGxhYmVsIGlzIHNldCBhbmQgdGhpcyBpcyBhIE1vZGVyYXRvciB0aGVuIHRoaXMgdXNlciBzaG91bGQKKyAgICAgICAgICAgICAgICAgICAgLy9hbGxvdyB0aGUgY2xpY2sgZXZlbnQgPT4gdGhlIGNsaWNrIGV2ZW50IHdpbGwgdHJpZ2dlcgorICAgICAgICAgICAgICAgICAgICAvL3RoaXMgdXNlciBhd2F5IGZyb20gYmVlaW5nIGFibGUgdG8gZHJhdyBvbiB0aGUgd2hpdGVib2FyZAorICAgICAgICAgICAgICAgICAgICBpZiAoY2FudmFzLmlzbW9kZXJhdG9yICYmIHRoaXMuX3RleHQudGV4dC5sZW5ndGggIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy9EbyBpdCAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJEbyBBZGQgSXQiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGhpYi5hZGRNb2RlcmF0b3IucHVibGljU0lET2ZOZXdNb2RlcmF0b3IgPSBwYXJlbnQucGFyZW50LnJlZk9iai5wdWJsaWNTSUQ7CisgICAgICAgICAgICAgICAgICAgICAgICBoaWIuYWRkTW9kZXJhdG9yLmRvQ2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgLy9wYXJlbnQucGFyZW50LnNldENhbkRyYXcuZG9DYWxsKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBdXT4KKyAgICAgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgICAgIDxsYWJlbFRvb2x0aXAgbmFtZT0iX3RleHQiIGxhYmVsaWQ9IjY3NiIgLz4KKyAgICAgICAgPC9taW5pSWNvbnM+CisgICAgICAgICAgICAKKyAgICAgICAgPG1pbmlJY29ucyBuYW1lPSJfY2FuRHJhdyIgeD0iMjAiIHdpZHRoPSIxNiIgcmVzb3VyY2U9InJpZ2h0X2lzYWN0aXZlX3JzYyIgCisgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxNiIgc2hvd2hhbmRjdXJzb3I9ImZhbHNlIiA+CisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICAgICAgLy9pZiB0aGUgbGFiZWwgaXMgc2V0IGFuZCB0aGlzIGlzIGEgTW9kZXJhdG9yIHRoZW4gdGhpcyB1c2VyIHNob3VsZAorICAgICAgICAgICAgICAgICAgICAvL2FsbG93IHRoZSBjbGljayBldmVudCA9PiB0aGUgY2xpY2sgZXZlbnQgd2lsbCB0cmlnZ2VyCisgICAgICAgICAgICAgICAgICAgIC8vdGhpcyB1c2VyIGF3YXkgZnJvbSBiZWVpbmcgYWJsZSB0byBkcmF3IG9uIHRoZSB3aGl0ZWJvYXJkCisgICAgICAgICAgICAgICAgICAgIGlmIChjYW52YXMuaXNtb2RlcmF0b3IgJiYgdGhpcy5fdGV4dC50ZXh0Lmxlbmd0aCAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvL0RvIGl0IAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIkRvIGFkZCBkcmF3IHRvIGl0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQucGFyZW50LnNldENhbkRyYXcuZG9DYWxsKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBdXT4KKyAgICAgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgICAgIDxsYWJlbFRvb2x0aXAgbmFtZT0iX3RleHQiIHRleHQ9IiIgLz4KKyAgICAgICAgPC9taW5pSWNvbnM+CisgICAgICAgIAorICAgICAgICA8bWluaUljb25zIG5hbWU9Il9jYW5EcmF3TW9kZXJhdG9yIiB4PSIyMCIgd2lkdGg9IjE2IiBvcGFjaXR5PSIwLjUiCisgICAgICAgICAgICAgICAgICAgcmVzb3VyY2U9InJpZ2h0X25vdGFjdGl2ZV9yc2MiIGhlaWdodD0iMTYiIHNob3doYW5kY3Vyc29yPSJ0cnVlIj4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgICAgIC8vRG8gaXQgCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIkRvIGl0Iik7CisgICAgICAgICAgICAgICAgcGFyZW50LnBhcmVudC5zZXRDYW5EcmF3LmRvQ2FsbCgpOworICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAgICAgPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSI2MTEiIC8+CisgICAgICAgIDwvbWluaUljb25zPgorICAgICAgICAKKyAgICAgICAgPG1pbmlJY29ucyBuYW1lPSJfYWxsb3dTaGFyZSIgeD0iNDAiIHdpZHRoPSIxNiIgcmVzb3VyY2U9InJpZ2h0X2lzYWN0aXZlX3JzYyIgCisgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxNiIgc2hvd2hhbmRjdXJzb3I9ImZhbHNlIiA+CisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICAgICAgLy9pZiB0aGUgbGFiZWwgaXMgc2V0IGFuZCB0aGlzIGlzIGEgTW9kZXJhdG9yIHRoZW4gdGhpcyB1c2VyIHNob3VsZAorICAgICAgICAgICAgICAgICAgICAvL2FsbG93IHRoZSBjbGljayBldmVudCA9PiB0aGUgY2xpY2sgZXZlbnQgd2lsbCB0cmlnZ2VyCisgICAgICAgICAgICAgICAgICAgIC8vdGhpcyB1c2VyIGF3YXkgZnJvbSBiZWVpbmcgYWJsZSB0byBkcmF3IG9uIHRoZSB3aGl0ZWJvYXJkCisgICAgICAgICAgICAgICAgICAgIGlmIChjYW52YXMuaXNtb2RlcmF0b3IgJiYgdGhpcy5fdGV4dC50ZXh0Lmxlbmd0aCAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvL0RvIGl0IAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIkRvIGFkZCBkcmF3IHRvIGl0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQucGFyZW50LnNldENhblNoYXJlLmRvQ2FsbCgpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgXV0+CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgICAgICA8bGFiZWxUb29sdGlwIG5hbWU9Il90ZXh0IiB0ZXh0PSIiIGxhYmVsaWQ9IjEwNjgiIC8+CisgICAgICAgIDwvbWluaUljb25zPgorICAgICAgICAKKyAgICAgICAgPG1pbmlJY29ucyBuYW1lPSJfZGVueVNoYXJlIiB4PSI0MCIgd2lkdGg9IjE2IiBvcGFjaXR5PSIwLjUiCisgICAgICAgICAgICAgICAgICAgcmVzb3VyY2U9InJpZ2h0X25vdGFjdGl2ZV9yc2MiIGhlaWdodD0iMTYiIHNob3doYW5kY3Vyc29yPSJ0cnVlIj4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgICAgIC8vRG8gaXQgCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIkRvIGl0Iik7CisgICAgICAgICAgICAgICAgcGFyZW50LnBhcmVudC5zZXRDYW5TaGFyZS5kb0NhbGwoKTsKKyAgICAgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgICAgIDxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iMTA2NyIgLz4KKyAgICAgICAgPC9taW5pSWNvbnM+CisgICAgICAgIAorICAgICAgICAKKyAgICAgICAgPG1pbmlJY29ucyBuYW1lPSJfYWxsb3dSZW1vdGUiIHg9IjYwIiB3aWR0aD0iMTYiIHJlc291cmNlPSJyaWdodF9pc2FjdGl2ZV9yc2MiIAorICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMTYiIHNob3doYW5kY3Vyc29yPSJmYWxzZSIgPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgICAgIC8vaWYgdGhlIGxhYmVsIGlzIHNldCBhbmQgdGhpcyBpcyBhIE1vZGVyYXRvciB0aGVuIHRoaXMgdXNlciBzaG91bGQKKyAgICAgICAgICAgICAgICAgICAgLy9hbGxvdyB0aGUgY2xpY2sgZXZlbnQgPT4gdGhlIGNsaWNrIGV2ZW50IHdpbGwgdHJpZ2dlcgorICAgICAgICAgICAgICAgICAgICAvL3RoaXMgdXNlciBhd2F5IGZyb20gYmVlaW5nIGFibGUgdG8gZHJhdyBvbiB0aGUgd2hpdGVib2FyZAorICAgICAgICAgICAgICAgICAgICBpZiAoY2FudmFzLmlzbW9kZXJhdG9yICYmIHRoaXMuX3RleHQudGV4dC5sZW5ndGggIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgLy9EbyBpdCAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJEbyBhZGQgZHJhdyB0byBpdCIpOworICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LnBhcmVudC5zZXRDYW5SZW1vdGUuZG9DYWxsKCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBdXT4KKyAgICAgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgICAgIDxsYWJlbFRvb2x0aXAgbmFtZT0iX3RleHQiIHRleHQ9IiIgbGFiZWxpZD0iMTA3OSIgLz4KKyAgICAgICAgPC9taW5pSWNvbnM+CisgICAgICAgIAorICAgICAgICA8bWluaUljb25zIG5hbWU9Il9kZW55UmVtb3RlIiB4PSI2MCIgd2lkdGg9IjE2IiBvcGFjaXR5PSIwLjUiCisgICAgICAgICAgICAgICAgICAgcmVzb3VyY2U9InJpZ2h0X25vdGFjdGl2ZV9yc2MiIGhlaWdodD0iMTYiIHNob3doYW5kY3Vyc29yPSJ0cnVlIj4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgICAgIC8vRG8gaXQgCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIkRvIGl0Iik7CisgICAgICAgICAgICAgICAgcGFyZW50LnBhcmVudC5zZXRDYW5SZW1vdGUuZG9DYWxsKCk7CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgICAgICA8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IjEwNzgiIC8+CisgICAgICAgIDwvbWluaUljb25zPgorCisgICAgICAgIDxtaW5pSWNvbnMgbmFtZT0iX2FsbG93RXhjbHVzaXZlQXVkaW8iIHg9IjgwIiB3aWR0aD0iMTYiIHJlc291cmNlPSJyaWdodF9pc2FjdGl2ZV9yc2MiCisgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxNiIgc2hvd2hhbmRjdXJzb3I9ImZhbHNlIiA+CisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICAgICAgLy9pZiB0aGUgbGFiZWwgaXMgc2V0IGFuZCB0aGlzIGlzIGEgTW9kZXJhdG9yIHRoZW4gdGhpcyB1c2VyIHNob3VsZAorICAgICAgICAgICAgICAgICAgICAvL2FsbG93IHRoZSBjbGljayBldmVudCA9PiB0aGUgY2xpY2sgZXZlbnQgd2lsbCB0cmlnZ2VyCisgICAgICAgICAgICAgICAgICAgIC8vdGhpcyB1c2VyIGF3YXkgZnJvbSBiZWVpbmcgYWJsZSB0byBnaXZlIGV4Y2x1c2l2ZSBhdWRpbworICAgICAgICAgICAgICAgICAgICBpZiAoY2FudmFzLmlzbW9kZXJhdG9yICYmIHRoaXMuX3RleHQudGV4dC5sZW5ndGggIT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIkRvIGl0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQucGFyZW50LnNldENhbkdpdmVBdWRpby5kb0NhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIF1dPgorICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAgICAgPGxhYmVsVG9vbHRpcCBuYW1lPSJfdGV4dCIgdGV4dD0iIiBsYWJlbGlkPSIxNDI1IiAvPgorICAgICAgICA8L21pbmlJY29ucz4KKworICAgICAgICA8bWluaUljb25zIG5hbWU9Il9kZW55RXhjbHVzaXZlQXVkaW8iIHg9IjgwIiB3aWR0aD0iMTYiIG9wYWNpdHk9IjAuNSIKKyAgICAgICAgICAgICAgICAgICByZXNvdXJjZT0icmlnaHRfbm90YWN0aXZlX3JzYyIgaGVpZ2h0PSIxNiIgc2hvd2hhbmRjdXJzb3I9InRydWUiPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICAgICAgcGFyZW50LnBhcmVudC5zZXRDYW5HaXZlQXVkaW8uZG9DYWxsKCk7CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgICAgICA8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IjE0MjQiIC8+CisgICAgICAgIDwvbWluaUljb25zPgorICAgICAgICAKKyAgICAgICAgCisgICAgICAgIDxtaW5pSWNvbnMgbmFtZT0iX3Jlc3RhcnREZXZpY2UiIHg9IjEwMCIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiByZXNvdXJjZT0icmVzeW5jdXNlcl9yc2MiIHNob3doYW5kY3Vyc29yPSJ0cnVlIj4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgICAgIC8vVE9ETzogbG9jYWwgY29ubmVjdGlvbiBjYWxsCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInBhcmVudC5wYXJlbnQucmVmT2JqLnB1YmxpY1NJRDogIixwYXJlbnQucGFyZW50LnJlZk9iai5wdWJsaWNTSUQpOworICAgICAgICAgICAgICAgIGNhbnZhcy5fdmlkZW9jb250YWluZXIuX3ZpZGVvdmlld2NvbnRlbnQuc2hvd0RldmljZVBvcFVwKHRydWUpOworICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAgICAgPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSI2MTAiIC8+CisgICAgICAgIDwvbWluaUljb25zPgorICAgICAgICAKKyAgICAgICAgPHZpZXcgbmFtZT0iX2xvdWRuZXNzIiB4PSIxMjAiID4KKyAgICAgICAgICAgIDx2aWV3IHg9IjAiIHk9IjAiIG5hbWU9ImxvdWRuZXNzIiByZXNvdXJjZT0ic3BlYWtpbmciIG9wYWNpdHk9IjAuMiIKKyAgICAgICAgICAgICAgICAgIG9ubW91c2VvdmVyPSIiIG9ubW91c2VvdXQ9IiIgPiAgICAgIAorCQkJICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorCQkJCQk8IVtDREFUQVsKKwkJCQkgICAgICAJaWYgKGNhbnZhcy5pc21vZGVyYXRvciB8fCBjYW52YXMuaXNBbGxvd2VkVG9HaXZlRXhjbHVzaXZlQXVkaW8pIHsKKwkJCQkgICAgICAgICAgICBjYW52YXMudGhpc2hpYi5naXZlRXhjbHVzaXZlQXVkaW8uc2V0RXhjbHVzaXZlQXVkaW8ocGFyZW50LnBhcmVudC5wYXJlbnQucmVmT2JqLnB1YmxpY1NJRCk7CisJCQkJICAgICAgICB9IGVsc2UgeworCQkJCSAgICAgICAgCW5ldyBsei5sYWJlbGVycm9yUG9wdXAoY2FudmFzLm1haW5fY29udGVudC5fY29udGVudC5pbm5lcix7ZXJyb3JsYWJlbGlkOjE0Nzh9KTsgICAgCisJCQkJICAgICAgICB9CisJCQkJCV1dPgorCQkJCTwvaGFuZGxlcj4gCisgICAgICAgICAgICAgICAgPGxhYmVsVG9vbHRpcCBpbml0dHdpY2U9InRydWUiIGxhYmVsaWQ9IjM3MiIgLz4KKyAgICAgICAgICAgIDwvdmlldz4KKyAgICAgICAgPC92aWV3PiAgICAKKyAgICA8L3ZpZXc+CisgICAgCisgICAgPHZpZXcgbmFtZT0iZGl2aXNpb25MaW5lIiB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCB9IiAKKyAgICAgICAgICBiZ2NvbG9yPSIweEZGRkZGRiIgaGVpZ2h0PSIxIiB5PSIzOSIgLz4KKyAgICAKKzwvY2xhc3M+CisgCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvcGFydGljaXBhbnRzL3BhcnRpY2lwYW50cy5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvcGFydGljaXBhbnRzL3BhcnRpY2lwYW50cy5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQxZTRkNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9wYXJ0aWNpcGFudHMvcGFydGljaXBhbnRzLmx6eApAQCAtMCwwICsxLDI5NSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKyAgICAKKzxjbGFzcyBuYW1lPSJwYXJ0aWNpcGFudHMiIGV4dGVuZHM9ImJhc2VSb29tSW5uZXJMaXN0IiAKKyAgICAgICBoZWlnaHQ9IiRvbmNleyBwYXJlbnQuaGVpZ2h0LTM0IH0iPgorCisgICAgPCEtLS0gaG9sZHMgYSByZWZlcmVuY2VzIHRvIHRoZSB2aWRlb3ZpZXcgd2hpY2ggaXMgYnJvYWRjYXN0aW5nIC0tPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iYnJvYWRDYXN0Vmlld1JlZiIgdmFsdWU9Im51bGwiIC8+CisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAgICAgLy9zZXQgbW9kdXMKKyAgICAgICAgY2FudmFzLnRoaXNoaWIubW9kdXMgPSAiY29uZmVyZW5jZSI7CisgICAgICAgCisgICAgICAgIC8vc2V0IHJlZmVyZW5jZSwgdGhpcyByZWZlcmVuY2Ugd2lsbCBiZSBjbGVhcmVkIGF0ICpvbnRhYmNvbnRlbmN0bGVhdmUqIGV2ZW50CisgICAgICAgIGNhbnZhcy5fdmlkZW9jb250YWluZXI9dGhpczsKKyAgICAgICAgCisgICAgICAgIC8vIFJlY29ubmVjdCBVc2VyIHRvIGl0cyBSb29tIElkCisgICAgICAgIGNhbnZhcy50aGlzaGliLnVzZXJTY29wZSA9IGNhbnZhcy50aGlzaGliLmN1cnJlbnRyb29taWQ7CisgICAgICAgIHZhciBzcmMgPSBoaWIuZ2V0VXJsKCk7CisgICAgICAgIAorICAgICAgICBpZiggJGRlYnVnICkgRGVidWcud3JpdGUoInZpZGVvQ29udGFpbmVyOiBjYW52YXMudGhpc2hpYjogIixjYW52YXMudGhpc2hpYi5zcmMsY2FudmFzLnRoaXNoaWIpOworICAgICAgICAKKyAgICAgICAgaWYgKGNhbnZhcy50aGlzaGliLnNyYyAhPSBzcmMpIHsKKyAgICAgICAgICAgIGNhbnZhcy50aGlzaGliLnNldEF0dHJpYnV0ZSgnc3JjJyxzcmMpOworICAgICAgICAgICAgCisgICAgICAgICAgICBjYW52YXMudGhpc2hpYi5yZWNvbm5lY3Rpb25BY3Rpb24gPSB0cnVlOworICAgICAgICAgICAgY2FudmFzLnRoaXNoaWIucmVjb25uZWN0T2JqUmVmID0gdGhpczsKKyAgICAgICAgICAgIGNhbnZhcy50aGlzaGliLmRpc2Nvbm5lY3QoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vVGhlIHVzZXIgaXMgYWxyZWFkeSBpbiB0aGUgY29ycmVjdCBTY29wZQorICAgICAgICAgICAgdGhpcy5yZWNvbm5lY3RTdWNjZXNzKCk7CisgICAgICAgIH0KKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJpbml0TGlzdCI+CisgICAgCS8vCisgICAgPC9tZXRob2Q+CisKKyAgICA8Y29tbW9uVmlkZW9Db21wb25lbnRBZGFwdGVyIG5hbWU9Il92aWRlb3ZpZXdjb250ZW50IiAvPgorCisgICAgPG1ldGhvZCBuYW1lPSJyZWNvbm5lY3RTdWNjZXNzIj4KKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIlVzZXIgUmVsb2dlZCBJbiIpOworICAgICAgICAvL1NlbmQgdG8gU1dGMTAgdmlkZW8tY29udGFpbmVyIHRvIGNvbm5lY3Qgb24gdGhlIGNvbmZlcmVuY2Ugcm9vbSB1cmwKKyAgICAgICAgLy9hbmQgd2FpdCBmb3IgdGhlIGFzM0Nvbm5lY3Rpb25TdWNjZXNzLUV2ZW50CisgICAgICAgIHRoaXMuX3ZpZGVvdmlld2NvbnRlbnQucmVjb25uZWN0U3VjY2VzcyhmYWxzZSk7CisgICAgPC9tZXRob2Q+CisKKyAgICA8IS0tLQorICAgICAgICBXZSBuZWVkIHRvIHdhaXQgdGlsbCB0aGUgdmlkZW8tY29udGFpbmVyIC8gYXMzIGFwcCBoYXMgdGhlIGNvbm5lY3Rpb24gZXN0YWJsaXNoZWQKKyAgICAgICAgb3RoZXJ3aXNlIGl0IGNhbiBoYXBwZW4gdGhhdCB0aGUgdmlkZW8gdHJpZXMgdG8gc3RhcnQgcGxheWluZyBiZWZvcmUgdGhlIHJ0bXAtY29ubmVjdGlvbgorICAgICAgICB3YXMgZXN0YWJsaXNoZWQKKyAgICAgLS0+CisgICAgPG1ldGhvZCBuYW1lPSJhczNDb25uZWN0aW9uU3VjY2VzcyI+CisgICAgCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJhczNDb25uZWN0aW9uU3VjY2VzcyBjb250aW51ZSBsb2FkaW5nIik7CisgICAgCS8vc2V0IGRlZmF1bHQgdmFsdWVzIGFuZCBnZXQgYWxyZWFkeSBhdmFpbGlibGUgc3RyZWFtcworICAgIAkvL2l0IGNhbiBoYXBwZW4gdGhhdCBpZiB5b3UgY2xpY2sgdG8gZXhpdCB0aGUgcm9vbSB0aGUgdmlld3MgYXJlIG5vdAorICAgIAkvL25vdCBjbGVhbmVkIHVwIHlldCBhbmQgeW91IHJlY2VpdmUgdGhpcyBldmVudCBmcm9tIHRoZSBMb2NhbENvbm5lY3Rpb24KKyAgICAJaWYgKHRoaXNbImdldFJvb21Nb2RlcmF0b3JzQnlSb29tSWQiXSkgeworICAgICAgICAgICAgdGhpcy5nZXRSb29tTW9kZXJhdG9yc0J5Um9vbUlkLmRvQ2FsbCgpOworICAgIAl9CisgICAgPC9tZXRob2Q+CisKKworCisgICAgPCEtLS0KKyAgICAgICAgUmV0dXJucyBhIGxpc3Qgb2YgYWxsIG1vZGVyYXRvcnMgb2YgdGhlIGN1cnJlbnQgcm9vbSBhbmQgcGFyc2VzIAorICAgICAgICBpZiB0aGUgY3VycmVudCB1c2VyIHNob3VsZCByZWNlaXZlIHRoZSBzdXBlcm1vZGVyYXRvciBmbGFnIG9yIG5vdAorICAgICAtLT4KKyAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJnZXRSb29tTW9kZXJhdG9yc0J5Um9vbUlkIiBmdW5jbmFtZT0iY29uZmVyZW5jZXNlcnZpY2UuZ2V0Um9vbU1vZGVyYXRvcnNCeVJvb21JZCIgCisgICAgICAgICAgICAgICAgICAgICAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gIAorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4gICAgCisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gaGliLmN1cnJlbnRyb29taWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZ2V0Um9vbU1vZGVyYXRvcnNCeVJvb21JZDogIix2YWx1ZSk7CisgICAgICAgICAgICAgICAgY2FudmFzLmJlY29tZVN1cGVyTW9kZXJhdG9yID0gZmFsc2U7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgcGFyZW50LnNldFJvb21WYWx1ZXMuYXBwbHlEZWZhdWx0TW9kZXJhdGlvbiA9IGNhbnZhcy5iZWNvbWVtb2RlcmF0b3I7CisgICAgICAgICAgICAgICAgY2FudmFzLmJlY29tZVN1cGVyTW9kZXJhdG9yID0gY2FudmFzLmJlY29tZW1vZGVyYXRvcjsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoIWNhbnZhcy5iZWNvbWVTdXBlck1vZGVyYXRvcikgeworICAgIAkgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTx2YWx1ZS5sZW5ndGg7aSsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZVtpXS51c2VyLnVzZXJfaWQgPT0gY2FudmFzLnVzZXJfaWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuc2V0Um9vbVZhbHVlcy5hcHBseURlZmF1bHRNb2RlcmF0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMuYmVjb21lU3VwZXJNb2RlcmF0b3IgPSB2YWx1ZVtpXS5pc1N1cGVyTW9kZXJhdG9yOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLmluZm8oIk1ha2UgdGhpcyBVc2VyIHRvIGFuIE1vZGVyYXRvciIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImNhbnZhcy5iZWNvbWVtb2RlcmF0b3I6ICIsY2FudmFzLmJlY29tZW1vZGVyYXRvcik7CisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImNhbnZhcy5iZWNvbWVTdXBlck1vZGVyYXRvcjogIixjYW52YXMuYmVjb21lU3VwZXJNb2RlcmF0b3IpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGNhbnZhcy5jdXJyZW50dXNlcmNvbG9yID0gY2FudmFzLmdldENvbG9yRm9yVXNlcigpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHZhciBvcmdhbmlzYXRpb25faWQgPSAxOworICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoaGliLnVzZXJvYmplY3QpOyAKKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZShoaWIuY3VycmVudGRvbWFpbk9iaik7IAorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChoaWIuY3VycmVudGRvbWFpbk9iaiAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIG9yZ2FuaXNhdGlvbl9pZCA9IGhpYi5jdXJyZW50ZG9tYWluT2JqLm9yZ2FuaXNhdGlvbl9pZAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5zZXRSb29tVmFsdWVzLm9yZ2FuaXNhdGlvbl9pZCA9IG9yZ2FuaXNhdGlvbl9pZDsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2V0Um9vbVZhbHVlcyBDQUxMOiAiKTsKKyAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5zZXRSb29tVmFsdWVzLmRvQ2FsbCgpOworICAgICAgICAgICAgCisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPgorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4gICAgIAorCisgICAgPCEtLS0KKyAgICAgICAgUmV0dXJucyBhIGxpc3Qgb2YgYWxsIHVzZXJzIGN1cnJlbnRseSBpbiB0aGUgY29uZmVyZW5jZSByb29tCisgICAgIC0tPgorICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9InNldFJvb21WYWx1ZXMiIGZ1bmNuYW1lPSJzZXRSb29tVmFsdWVzIiByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAgIAorICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImFwcGx5RGVmYXVsdE1vZGVyYXRpb24iIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJvcmdhbmlzYXRpb25faWQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gaGliLmN1cnJlbnRyb29taWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQuYXBwbHlEZWZhdWx0TW9kZXJhdGlvbjs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGNhbnZhcy5iZWNvbWVTdXBlck1vZGVyYXRvcjs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5vcmdhbmlzYXRpb25faWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBjYW52YXMuY3VycmVudHVzZXJjb2xvcjs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InJvb21TdGF0dXMiPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIisrKysrKysrKysrKysrKysrIik7CisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiKysrKysrKysrKysrKysrKysgc2V0Um9vbVZhbHVlczE6ICIscm9vbVN0YXR1cyk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChyb29tU3RhdHVzLnJvb21GdWxsKSB7CisgICAgICAgICAgICAgICAgY2FudmFzLnRoaXNoaWIuc2hvd0Z1bGxNZXNzYWdlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBjYW52YXMudGhpc2hpYi5kaXNjb25uZWN0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChyb29tU3RhdHVzLmJyb3dzZXJTdGF0dXMuYnJvd3NlckluaXRlZCkgeworICAgICAgICAgICAgICAgIHZhciB0T2JqID0gbmV3IE9iamVjdCgpOworICAgICAgICAgICAgICAgIHRPYmpbMF0gPSAibmV3QnJvd3NlclVSTCI7CisgICAgICAgICAgICAgICAgdE9ialsxXSA9IHJvb21TdGF0dXMuYnJvd3NlclN0YXR1cy5jdXJyZW50VVJMOworICAgICAgICAgICAgICAgIGNhbnZhcy5zdGFydEJyb3dzZXIodE9iaik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciB2YWx1ZSA9IHJvb21TdGF0dXMuY2xpZW50TGlzdDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7ICsraSl7CisgICAgICAgICAgICAgICAgaWYgKCB2YWx1ZVtpXS5zdHJlYW1pZCA9PSBjYW52YXMuc3RyZWFtaWQgKSB7CisgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5pc0FsbG93ZWRUb0RyYXcgPSB2YWx1ZVtpXS5jYW5EcmF3OworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJnZXRDbGllbnRMaXN0U2NvcGUgdmFsdWU6ICIsdmFsdWVbaV0pOworICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LmFkZEl0ZW0odmFsdWVbaV0uY29ubmVjdGVkU2luY2UsdmFsdWVbaV0uaXNNb2QsdmFsdWVbaV0uc3RyZWFtaWQsdmFsdWVbaV0udXNlcm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJyx2YWx1ZVtpXS5mb3JtYXRlZERhdGUsdmFsdWVbaV0udXNlcnBvcyx2YWx1ZVtpXS51c2VyY29sb3IsdmFsdWVbaV0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAvL3RoaXMgY29udGVudCBtdXN0IGJlIGluaXRlZCBfYWZ0ZXJfIHNldHRpbmcgdGhlIGRlZmF1bHQgdmFsdWVzCisgICAgICAgICAgICBjYW52YXMudGhpc2hpYi5nZXRDdXJyZW50TW9kZXJhdG9yTGlzdC5kb0NhbGwoKTsgCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhbnZhcy50aGlzaGliLmNoZWNrTHpSZWNvcmRpbmcuZG9DYWxsKCk7CisgICAgICAgICAgICBpZiAoY2FudmFzLl9jdXJyZW50Q2hhdFBhbmVsLnZpc2libGUpIHsKKwkJCQljYW52YXMuX2N1cnJlbnRDaGF0UGFuZWwudG9nZ2xlb3BlbigpOworCQkJfQorCQldXT4KKyAgICAgICAgPC9oYW5kbGVyPiAgCisgICAgPC9uZXRSZW1vdGVDYWxsSGliPgorCisgICAgPCEtLS0KKyAgICAgICAgaW52b2tlZCBpZiBhbm90aGVyIGNsaWVudCBsb2dzIGludG8gdGhlIHJvb20gCisgICAgICAgIGFmdGVyIGNob29zaW5nIGRldmljZXMKKyAgICAgLS0+ICAgICAKKyAgICA8bWV0aG9kIG5hbWU9InNldEFWU2V0dGluZ3NUb0NsaWVudCIgYXJncz0icmNsIj4KKyAgICAgICAgdGhpcy5fdmlkZW92aWV3Y29udGVudC5zZXRBVlNldHRpbmdzVG9DbGllbnQocmNsKTsKKyAgICA8L21ldGhvZD4KKworICAgIDxtZXRob2QgbmFtZT0icmVjZWl2ZUV4Y2x1c2l2ZUF1ZGlvRmxhZyIgYXJncz0icHVibGljU0lEIj4KKyAgICA8IVtDREFUQVsKKyAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInJlY2VpdmVFeGNsdXNpdmVBdWRpb0ZsYWc6ICIscHVibGljU0lEKTsKKyAgICAgICAgdmFyIG9iaiA9IHRoaXMuX3BhcnRpY2lwYW50cy5nZXRVc2VyTGlzdEl0ZW1CeVB1YmxpY1NJRChwdWJsaWNTSUQpOworCisgICAgICAgIGZvciAodmFyIGk9MDsgaTxvYmoucGFyZW50LnN1YnZpZXdzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICB2YXIgaXRlbSA9IG9iai5wYXJlbnQuc3Vidmlld3NbaV07CisgICAgICAgICAgICB2YXIgcmNsID0gbmV3IE9iamVjdCgpOworCisgICAgICAgICAgICByY2wucHVibGljU0lEID0gaXRlbS5yZWZPYmoucHVibGljU0lEOworICAgICAgICAgICAgcmNsLm1pY011dGVkID0gIShwdWJsaWNTSUQgPT0gaXRlbS5yZWZPYmoucHVibGljU0lEKTsKKyAgICAgICAgICAgIGNhbnZhcy5zZXRNdXRlU3RhdHVzKHJjbCk7CisgICAgICAgIH0KKyAgICBdXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImFkZEl0ZW0iIGFyZ3M9ImNvbm5lY3RlZFNpbmNlLGlzTW9kLHN0cmVhbWlkLHVzZXJuYW1lLHVzZXJyb29tLGZvcm1hdGVkRGF0ZSxwb3NpdGlvbixjb2xvcixvYmplY3QiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJpbml0aWFsaXplU3RyZWFtcyBhZGRJdGVtOiAiLGNvbm5lY3RlZFNpbmNlLG9iamVjdCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vRG8gaW5pdCBvbmx5IGluIGNhc2UgdGhpcyBzdHJlYW0gaXMgTk9UIHRoZSBzYW1lIGFzIHdlIGFyZQorICAgICAgICAgICAgaWYgKHN0cmVhbWlkIT1jYW52YXMuc3RyZWFtaWQpeworICAgICAgICAgICAgCS8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIj8/Pz8/Pz8/IG9iamVjdC5pc0Jyb2FkY2FzdGluZyA6OiAiLG9iamVjdC5pc0Jyb2FkY2FzdGluZyk7CisgICAgICAgICAgICAgICAgdGhpcy5fdmlkZW92aWV3Y29udGVudC5jcmVhdGVWaWRlbyhvYmplY3QucHVibGljU0lELCBvYmplY3QuZmlyc3RuYW1lKycgJytvYmplY3QubGFzdG5hbWUsIG9iamVjdC5icm9hZENhc3RJRCwgb2JqZWN0LmF2c2V0dGluZ3MsIC0xLCBvYmplY3QpOworICAgICAgICAgICAgfQorICAgICAgICAgICAKKyAgICAgICAgICAgIC8vZG8gYWRkIHNlbGYgdG9vCisgICAgICAgICAgICB0aGlzLl9wYXJ0aWNpcGFudHMuYWRkSXRlbShvYmplY3QpOworICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKworICAgIDxtZXRob2QgbmFtZT0ic2V0U3BlYWtpbmdCeVBvcyIgYXJncz0icHVibGljU0lELGJvb2wiPgorICAgIAl2YXIgdE9iaiA9IHRoaXMuX3BhcnRpY2lwYW50cy5nZXRVc2VyTGlzdEl0ZW1CeVB1YmxpY1NJRChwdWJsaWNTSUQpOworICAgIAlpZiAodE9iaiAhPSBudWxsKSB7CisgICAgCQl0T2JqLl9taW5pSWNvbnMuX2xvdWRuZXNzLmxvdWRuZXNzLnNldEF0dHJpYnV0ZSgnb3BhY2l0eScsIGJvb2wgPyAxIDogMC4yKTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLl92aWRlb3ZpZXdjb250ZW50LnNldFNwZWFraW5nQnlQb3MocHVibGljU0lELCBib29sKTsKKyAgICA8L21ldGhvZD4KKworICAgIDxtZXRob2QgbmFtZT0iY2xvc2VTdHJlYW1DbGllbnQiIGFyZ3M9InB1YmxpY1NJRCI+CisgICAgICAgIHRoaXMuX3ZpZGVvdmlld2NvbnRlbnQuY2xvc2VTdHJlYW1DbGllbnQocHVibGljU0lEKTsKKyAgICA8L21ldGhvZD4KKworICAgIDxtZXRob2QgbmFtZT0idXBkYXRlTXV0ZVN0YXR1c1ZpZGVvVmlldyIgYXJncz0icm9vbUNsaWVudCI+CisgICAgICAgIHRoaXMuX3ZpZGVvdmlld2NvbnRlbnQudXBkYXRlTXV0ZVN0YXR1c1ZpZGVvVmlldyhyb29tQ2xpZW50KTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImRpc2Nvbm5lY3RjbGllbnQiIGFyZ3M9InB1YmxpY1NJRCI+CisgICAgICAgIHRoaXMuX3ZpZGVvdmlld2NvbnRlbnQuZGlzY29ubmVjdGNsaWVudChwdWJsaWNTSUQpOworICAgICAgICB0aGlzLl9wYXJ0aWNpcGFudHMuZGlzY29ubmVjdGNsaWVudChwdWJsaWNTSUQpOworICAgIDwvbWV0aG9kPgorCisgICAgPG1ldGhvZCBuYW1lPSJyZXNldEFsbFZhbHVlcyI+CisgICAgICAgIHRoaXMuX3ZpZGVvdmlld2NvbnRlbnQucmVzZXRBbGxWYWx1ZXMoKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8IS0tCisgICAgICAgIGludm9rZWQgd2hlbmV2ZXIgYSBVc2VyIHN0YXJ0cyB0byBTdHJlYW0gVmlkZW8gaW4gdGhpcyBSb29tLAorICAgICAgICBpbnRlcnZpZXdQb2RJZCBoYXMgb25seSBhIG1lYW5pbmcgaW4gdGhlIFJvb20gVHlwZSBJbnRlcnZpZXcKKyAgICAgLS0+CisgICAgPG1ldGhvZCBuYW1lPSJzdGFydFN0cmVhbSIgYXJncz0icHVibGljU0lELGJyb2FkY2FzdElkLGZpcnN0bmFtZSxsYXN0bmFtZSxpbnRlcnZpZXdQb2RJZCxWV2lkdGgsVkhlaWdodCI+CisgICAgICAgIHRoaXMuX3ZpZGVvdmlld2NvbnRlbnQuc3RhcnRTdHJlYW0ocHVibGljU0lELGJyb2FkY2FzdElkLGZpcnN0bmFtZSxsYXN0bmFtZSxpbnRlcnZpZXdQb2RJZCxWV2lkdGgsVkhlaWdodCk7CisgICAgPC9tZXRob2Q+CisgICAgCisJPG1ldGhvZCBuYW1lPSJhZGRDbGllbnRJdGVtIiBhcmdzPSJjb25uZWN0ZWRTaW5jZSxpc01vZCxzdHJlYW1pZCx1c2VybmFtZSxyb29tX2lkLGZvcm1hdGVkRGF0ZSxwb3NpdGlvbixjb2xvcixvYmplY3QiPgorCTwhW0NEQVRBWworCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiIyMjIGluaXRpYWxpemVTdHJlYW1zIGFkZENsaWVudEl0ZW06ICIsY29ubmVjdGVkU2luY2UsaXNNb2Qsc3RyZWFtaWQsdXNlcm5hbWUscm9vbV9pZCxmb3JtYXRlZERhdGUpOworCQkKKwkJaWYgKGNhbnZhcy5wdWJsaWNTSUQgIT0gb2JqZWN0LnB1YmxpY1NJRCl7CisJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCIjIyMgaW5pdGlhbGl6ZVN0cmVhbXMgY3JlYXRlVmlkZW9PYmplY3Q6ICIsIG9iamVjdCk7CisJCQl0aGlzLl92aWRlb3ZpZXdjb250ZW50LmNyZWF0ZVZpZGVvT2JqZWN0KG9iamVjdC5wdWJsaWNTSUQsIGZhbHNlLCAtMSwgb2JqZWN0KTsKKwkJfQorCQkKKwkJLy9EbyBBZGQgaXQgYW55d2F5CisJCXRoaXMuX3BhcnRpY2lwYW50cy5hZGRJdGVtKG9iamVjdCk7CisJXV0+CisJPC9tZXRob2Q+CisgICAgCisgICAgPG1vZGVyYXRpb25NaW5pSWNvbnNFdmVudFVzZXJMaXN0IG5hbWU9Il9hcHBseUFuZFN0YXR1c0ljb25zIiB4PSIyIiB5PSIyIiA+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uaXNtb2RlcmF0b3IiIHJlZmVyZW5jZT0iY2FudmFzIiBhcmdzPSJtIj4KKyAgICAgICAgICAgIHRoaXMudXBkYXRlSWNvbnMoKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRyYXdBbGxvd1N0YXR1cyIgcmVmZXJlbmNlPSJjYW52YXMiIGFyZ3M9ImRyYXdPYmplY3QiPgorICAgICAgICAgICAgdGhpcy51cGRhdGVJY29ucygpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZXhjbHVzaXZlQXVkaW9BbGxvd1N0YXR1cyIgcmVmZXJlbmNlPSJjYW52YXMiIGFyZ3M9InJjbE9iamVjdCI+CisgICAgICAgICAgICB0aGlzLnVwZGF0ZUljb25zKCk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25sYXN0QnJvYWRDYXN0aW5nVXNlciIgcmVmZXJlbmNlPSJjYW52YXMiIGFyZ3M9InVzZXJPYmplY3QiPgorICAgICAgICAgICAgdGhpcy51cGRhdGVJY29ucygpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9ubWljTXV0ZWRTdGF0dXNDaGFuZ2VkSXRlbSIgcmVmZXJlbmNlPSJjYW52YXMiIGFyZ3M9InVzZXJPYmplY3QiPgorICAgICAgICAgICAgdGhpcy51cGRhdGVJY29ucygpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9tb2RlcmF0aW9uTWluaUljb25zRXZlbnRVc2VyTGlzdD4KKyAgICAKKyAgICA8cGFydGljaXBhbnRMaXN0IG5hbWU9Il9wYXJ0aWNpcGFudHMiIC8+CisgICAgCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvcGFydGljaXBhbnRzL3Jlc291cmNlcy9hY2NlcHQucG5nIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3BhcnRpY2lwYW50cy9yZXNvdXJjZXMvYWNjZXB0LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OWM4MTI5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3BhcnRpY2lwYW50cy9yZXNvdXJjZXMvYWNjZXB0LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvcGFydGljaXBhbnRzL3Jlc291cmNlcy9kZWxldGUucG5nIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3BhcnRpY2lwYW50cy9yZXNvdXJjZXMvZGVsZXRlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOGYyNDkzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3BhcnRpY2lwYW50cy9yZXNvdXJjZXMvZGVsZXRlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvcGFydGljaXBhbnRzL3Jlc291cmNlcy9taWNyb19zbWFsbC5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvcGFydGljaXBhbnRzL3Jlc291cmNlcy9taWNyb19zbWFsbC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjE1YzgzMQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9wYXJ0aWNpcGFudHMvcmVzb3VyY2VzL21pY3JvX3NtYWxsLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvcGFydGljaXBhbnRzL3Jlc291cmNlcy9wZW5jaWxfYWRkLnBuZyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9wYXJ0aWNpcGFudHMvcmVzb3VyY2VzL3BlbmNpbF9hZGQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwMmJiZTYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvcGFydGljaXBhbnRzL3Jlc291cmNlcy9wZW5jaWxfYWRkLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvcGFydGljaXBhbnRzL3Jlc291cmNlcy9wZW5jaWxfZGVsZXRlLnBuZyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9wYXJ0aWNpcGFudHMvcmVzb3VyY2VzL3BlbmNpbF9kZWxldGUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4OTQ0ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvcGFydGljaXBhbnRzL3Jlc291cmNlcy9wZW5jaWxfZGVsZXRlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvcGFydGljaXBhbnRzL3Jlc291cmNlcy91c2VyX2FkZC5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvcGFydGljaXBhbnRzL3Jlc291cmNlcy91c2VyX2FkZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVhZTk5YgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9wYXJ0aWNpcGFudHMvcmVzb3VyY2VzL3VzZXJfYWRkLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvcG9sbHMvYW5zd2VyUG9sbC5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvcG9sbHMvYW5zd2VyUG9sbC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzgxZDJiMAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9wb2xscy9hbnN3ZXJQb2xsLmx6eApAQCAtMCwwICsxLDEwMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9ImFuc3dlclBvbGwiIGV4dGVuZHM9ImxhYmVsRXhwbG9yZXJCb3giIGxhYmVsaWQ9IjE4IgorICAgIGRvY2tpbmc9InRydWUiIHJlc2l6ZWFibGU9ImZhbHNlIiBjbG9zYWJsZT0idHJ1ZSIgd2lkdGg9IjUwMCIgeD0iMTAwIiBoZWlnaHQ9IjI0MCI+CisgICAgCisJPGF0dHJpYnV0ZSBuYW1lPSJjcmVhdGVkQnkiIHR5cGU9InN0cmluZyIgdmFsdWU9IiIgLz4KKwk8YXR0cmlidXRlIG5hbWU9InBvbGxEYXRlIiB0eXBlPSJzdHJpbmciIHZhbHVlPSIiIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJwb2xsUXVlc3Rpb24iIHR5cGU9InN0cmluZyIgdmFsdWU9IiIgLz4KKwk8YXR0cmlidXRlIG5hbWU9InBvbGxUeXBlSWQiIHR5cGU9InN0cmluZyIgdmFsdWU9IiIgLz4KKwk8YXR0cmlidXRlIG5hbWU9InJvb21Qb2xsQW5zd2VyTGlzdCIgdHlwZT0ic3RyaW5nIiB2YWx1ZT0iIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0icm9vbVBvbGxJZCIgdHlwZT0ic3RyaW5nIiB2YWx1ZT0iIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0icm9vbVNjb3BlTmFtZSIgdHlwZT0ic3RyaW5nIiB2YWx1ZT0iIiAvPgorCQorCTxsYWJlbFRleHQgeT0iMjIiIG5hbWU9ImhlYWQiIC8+CisJPGxhYmVsVGV4dCB0ZXh0PSIkb25jZXsgcGFyZW50LnBvbGxRdWVzdGlvbiB9IiB5PSI0MiIgeD0iMCIgaGVpZ2h0PSI2MCIgd2lkdGg9IjM4MCIgbXVsdGlsaW5lPSJ0cnVlIiByZXNpemU9ImZhbHNlIi8+CisJCisJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKwkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIlthbnN3ZXJQb2xsOm9uaW5pdF0gdGhpczogIix0aGlzKTsKKwkJaWYgKHRoaXMucG9sbFR5cGVJZD09MSl7CisJCQkvL0RlYnVnLndyaXRlKCJZZXMvTm8gUXVlc3Rpb24iKTsKKwkJCXRoaXMucG9sbGJvb2xlYW4uc2V0QXR0cmlidXRlKCd2aXNpYmxlJyx0cnVlKTsKKwkJfSBlbHNlICBpZih0aGlzLnBvbGxUeXBlSWQ9PTIpIHsKKwkJCS8vRGVidWcud3JpdGUoIk51bWVyaWMgUXVlc3Rpb24iKTsKKwkJCXRoaXMucG9sbG51bWVyaWMuc2V0QXR0cmlidXRlKCd2aXNpYmxlJyx0cnVlKTsKKwkJfQorCQl0aGlzLmhlYWQuc2V0QXR0cmlidXRlKCd0ZXh0Jyx0aGlzLmNyZWF0ZWRCeSsiICIrY2FudmFzLmdldExhYmVsTmFtZSgzNikpOworCTwvaGFuZGxlcj4KKwkKKwk8bGFiZWxUZXh0IHk9IjEwMiIgbGFiZWxpZD0iMzMiIC8+CisJCisJPHJhZGlvZ3JvdXAgbmFtZT0icG9sbGJvb2xlYW4iIHg9IjEwMCIgeT0iMTAyIiB2aXNpYmxlPSJmYWxzZSI+CisJICAJPGxhYmVsUmFkaW9CdXR0b24gdmFsdWU9IjEiIGxhYmVsaWQ9IjM0IiBzZWxlY3RlZD0idHJ1ZSIgLz4KKwkgIAk8bGFiZWxSYWRpb0J1dHRvbiB2YWx1ZT0iMiIgbGFiZWxpZD0iMzUiIC8+CisJPC9yYWRpb2dyb3VwPgorCisJPHJlc2V0Q29tYm9ib3ggbmFtZT0icG9sbG51bWVyaWMiIHZpc2libGU9ImZhbHNlIiB3aWR0aD0iMTYwIiB4PSIxMDAiIHk9IjEwMiIgZWRpdGFibGU9ImZhbHNlIiBpdGVtY2xhc3NuYW1lPSJiaWdUZXh0TGlzdEl0ZW0iID4KKwkJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKwkJCTwhW0NEQVRBWworCQkJZm9yICh2YXIgaT0xO2k8MTE7aSsrKXsKKwkJCQl0aGlzLmFkZEl0ZW0oaSxpKTsKKwkJCX0KKwkJCXRoaXMuc2VsZWN0SXRlbSgnMScpOworCQkJXV0+CisJCTwvaGFuZGxlcj4KKwk8L3Jlc2V0Q29tYm9ib3g+CisJCisgICAgPHNpbXBsZUxhYmVsQnV0dG9uIGxhYmVsaWQ9IjMyIiB3aWR0aD0iMjAwIiB4PSI4MCIgeT0iMjE4Ij4KKyAgICAJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgCQlpZiAocGFyZW50LnBvbGxUeXBlSWQ9PTEpeworICAgIAkJCXRoaXMucGFyZW50LnZvdGUucG9sbHZhbHVlID0gTnVtYmVyKHBhcmVudC5wb2xsYm9vbGVhbi5nZXRWYWx1ZSgpKTsKKyAgICAJCX0gZWxzZSBpZiAocGFyZW50LnBvbGxUeXBlSWQ9PTIpeworICAgIAkJCXRoaXMucGFyZW50LnZvdGUucG9sbHZhbHVlID0gTnVtYmVyKHBhcmVudC5wb2xsbnVtZXJpYy5nZXRWYWx1ZSgpKTsKKyAgICAJCX0KKyAgICAJCXRoaXMucGFyZW50LnZvdGUucG9sbFR5cGVzSWQgPSBwYXJlbnQucG9sbFR5cGVJZDsKKyAgICAJCXRoaXMucGFyZW50LnZvdGUuZG9DYWxsKCk7CisgICAgCQkKKyAgICAJPC9oYW5kbGVyPgorICAgIDwvc2ltcGxlTGFiZWxCdXR0b24+CisgICAgCisgICAgPHNpbXBsZUxhYmVsQnV0dG9uIGxhYmVsaWQ9IjI1IiB3aWR0aD0iMjAwIiB4PSIyOTAiIHk9IjIxOCIgCisgICAgICAgIG9uY2xpY2s9InRoaXMucGFyZW50LmNsb3NlKCk7IiAvPgorICAgIAorICAgICAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJ2b3RlIiBmdW5jbmFtZT0icG9sbHNlcnZpY2Uudm90ZSIgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4KKyAgICAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0icG9sbHZhbHVlIiB0eXBlPSJudW1iZXIiIHZhbHVlPSIwIiAvPgorICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJwb2xsVHlwZXNJZCIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0iMCIgLz4KKyAgICAgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBvbGx2YWx1ZTs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucG9sbFR5cGVzSWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorICAgICAgICAgICAgICAgICAgICAvL0RlYnVnLndyaXRlKCJ2b3RlIDogIix2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LmNsb3NlKCk7CisgICAgICAgICAgICAgICAgXV0+CisgICAgICAgICAgICA8L2hhbmRsZXI+ICAgCisgICAgICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4gICAgICAKKyAgICAKKyAgICAKKzwvY2xhc3M+CisKKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3BvbGxzL2NyZWF0ZVBvbGxXaW4ubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3BvbGxzL2NyZWF0ZVBvbGxXaW4ubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlMjgzYzMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvcG9sbHMvY3JlYXRlUG9sbFdpbi5sengKQEAgLTAsMCArMSw5OSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworCTxjbGFzcyBuYW1lPSJiaWdUZXh0TGlzdEl0ZW0iIGV4dGVuZHM9InRleHRsaXN0aXRlbSIgZm9udHNpemU9IjExIiAvPgorCisJPGNsYXNzIG5hbWU9ImNyZWF0ZVBvbGxXaW4iIGV4dGVuZHM9ImxhYmVsRXhwbG9yZXJCb3giIGxhYmVsaWQ9IjE4IgorCQlkb2NraW5nPSJ0cnVlIiByZXNpemVhYmxlPSJmYWxzZSIgY2xvc2FibGU9InRydWUiIHdpZHRoPSI1MDAiIHg9IjEwMCIKKwkJaGVpZ2h0PSIyNDAiPgorCisJCTxsYWJlbFRleHQgZm9udHN0eWxlPSJib2xkIiBsYWJlbGlkPSIxOSIgeT0iMjIiIC8+CisKKwkJPGxhYmVsVGV4dCBsYWJlbGlkPSIxNDEwIiB5PSI0MiIgLz4KKwkJPGN1c3RvbUVkaXR0ZXh0IG5hbWU9Il9uYW1lIiBtdWx0aWxpbmU9ImZhbHNlIiB3aWR0aD0iMzkwIgorCQkJeD0iMTAwIiB5PSI0MiIgLz4KKworCQk8bGFiZWxUZXh0IGxhYmVsaWQ9IjIwIiB5PSI2NyIgLz4KKwkJPGN1c3RvbUVkaXR0ZXh0IG5hbWU9Il9xdWVzdGlvbiIgbXVsdGlsaW5lPSJ0cnVlIgorCQkJd2lkdGg9IjM5MCIgeD0iMTAwIiB5PSI2NyIgaGVpZ2h0PSI2MCIgLz4KKworCQk8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJnZXRQb2xsVHlwZUxpc3QiIGZ1bmNuYW1lPSJwb2xsc2VydmljZS5nZXRQb2xsVHlwZUxpc3QiCisJCQlyZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSI+CisJCQk8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKwkJCTwhW0NEQVRBWworCQkJCS8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisJCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImdldFBvbGxUeXBlTGlzdCA6ICIsdmFsdWUpCisJCQkJZm9yICh2YXIgaSA9IDA7IGkgPCB2YWx1ZS5sZW5ndGg7ICsraSkgeworCQkJCQl0aGlzLnBhcmVudC5fcG9sbHR5cGVzLmFkZEl0ZW0oY2FudmFzLmdldExhYmVsTmFtZSh2YWx1ZVtpXS5sYWJlbC5maWVsZHZhbHVlc19pZCksIHZhbHVlW2ldLnBvbGxUeXBlc0lkKTsKKwkJCQl9CisJCQkJdGhpcy5wYXJlbnQuX3BvbGx0eXBlcy5zZWxlY3RJdGVtKHZhbHVlWzBdLnBvbGxUeXBlc0lkKTsKKwkJCV1dPgorCQkJPC9oYW5kbGVyPgorCQk8L25ldFJlbW90ZUNhbGxIaWI+CisKKwkJPGxhYmVsVGV4dCBsYWJlbGlkPSIyMSIgeT0iMTQyIiAvPgorCQk8cmVzZXRDb21ib2JveCBuYW1lPSJfcG9sbHR5cGVzIiB3aWR0aD0iMTYwIiB4PSIxMDAiIHk9IjE0MiIKKwkJCWVkaXRhYmxlPSJmYWxzZSIgaXRlbWNsYXNzbmFtZT0iYmlnVGV4dExpc3RJdGVtIj4KKwkJCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisJCQkJdGhpcy5wYXJlbnQuZ2V0UG9sbFR5cGVMaXN0LmRvQ2FsbCgpOworCQkJPC9oYW5kbGVyPgorCQk8L3Jlc2V0Q29tYm9ib3g+CisKKwkJPGxhYmVsVGV4dCBmZ2NvbG9yPSJyZWQiIGxhYmVsaWQ9IjIzIiB5PSIxNzUiIHdpZHRoPSI0ODAiCisJCQltdWx0aWxpbmU9InRydWUiIHJlc2l6ZT0iZmFsc2UiIC8+CisKKwkJPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iY3JlYXRlUG9sbCIgZnVuY25hbWU9InBvbGxzZXJ2aWNlLmNyZWF0ZVBvbGwiCisJCQlyZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSI+CisJCQk8YXR0cmlidXRlIG5hbWU9InBvbGxuYW1lIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisJCQk8YXR0cmlidXRlIG5hbWU9InBvbGxxdWVzdGlvbiIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorCQkJPGF0dHJpYnV0ZSBuYW1lPSJwb2xsdHlwZXNpZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBvbGxuYW1lOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wb2xscXVlc3Rpb247PC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBvbGx0eXBlc2lkOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCQk8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKwkJCQkvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJjcmVhdGVQb2xsIDogIix2YWx1ZSk7CisJCQkJdGhpcy5wYXJlbnQuY2xvc2UoKTsKKwkJCTwvaGFuZGxlcj4KKwkJPC9uZXRSZW1vdGVDYWxsSGliPgorCisJCTxzaW1wbGVMYWJlbEJ1dHRvbiBsYWJlbGlkPSIyMiIgd2lkdGg9IjEwMCIgeD0iMjgwIgorCQkJeT0iMjE4Ij4KKwkJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorCQkJCXRoaXMucGFyZW50LmNyZWF0ZVBvbGwucG9sbG5hbWUgPQorCQkJCXRoaXMucGFyZW50Ll9uYW1lLmdldFRleHQoKTsKKwkJCQl0aGlzLnBhcmVudC5jcmVhdGVQb2xsLnBvbGxxdWVzdGlvbiA9CisJCQkJdGhpcy5wYXJlbnQuX3F1ZXN0aW9uLmdldFRleHQoKTsKKwkJCQl0aGlzLnBhcmVudC5jcmVhdGVQb2xsLnBvbGx0eXBlc2lkID0KKwkJCQl0aGlzLnBhcmVudC5fcG9sbHR5cGVzLmdldFZhbHVlKCk7CisJCQkJLy9EZWJ1Zy53cml0ZSgidGhpcy5wYXJlbnQuY3JlYXRlUG9sbC5jcmVhdGVQb2xsOiIsdGhpcy5wYXJlbnQuY3JlYXRlUG9sbC5jcmVhdGVQb2xsKTsKKwkJCQl0aGlzLnBhcmVudC5jcmVhdGVQb2xsLmRvQ2FsbCgpOworCQkJPC9oYW5kbGVyPgorCQk8L3NpbXBsZUxhYmVsQnV0dG9uPgorCisJCTxzaW1wbGVMYWJlbEJ1dHRvbiBsYWJlbGlkPSIyNSIgd2lkdGg9IjEwMCIgeD0iMzkwIgorCQkJeT0iMjE4IiBvbmNsaWNrPSJ0aGlzLnBhcmVudC5jbG9zZSgpOyIgLz4KKworCTwvY2xhc3M+CisKKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3BvbGxzL2xpYnJhcnkubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3BvbGxzL2xpYnJhcnkubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiMzFhNWIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvcG9sbHMvbGlicmFyeS5sengKQEAgLTAsMCArMSwyNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKyAgICAKKyAgICA8aW5jbHVkZSBocmVmPSJjcmVhdGVQb2xsV2luLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJhbnN3ZXJQb2xsLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJyZXN1bHRQb2xsV2luLmx6eCIgLz4KKyAgICAKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9wb2xscy9yZXN1bHRQb2xsV2luLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9wb2xscy9yZXN1bHRQb2xsV2luLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iN2Q5NWJkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3BvbGxzL3Jlc3VsdFBvbGxXaW4ubHp4CkBAIC0wLDAgKzEsMzIzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCisJPGNsYXNzIG5hbWU9InJlc3VsdFBvbGxXaW4iIGV4dGVuZHM9ImxhYmVsRXhwbG9yZXJCb3giIGxhYmVsaWQ9IjM3IgorCQlkb2NraW5nPSJ0cnVlIiByZXNpemVhYmxlPSJmYWxzZSIgY2xvc2FibGU9InRydWUiIHdpZHRoPSI0NTQiIHg9IjEwMCIKKwkJaGVpZ2h0PSI0NTQiPgorCQkgCisJCTxhdHRyaWJ1dGUgbmFtZT0icm9vbVBvbGwiIHZhbHVlPSJudWxsIiAvPgorCQk8YXR0cmlidXRlIG5hbWU9ImFyY2hQb2xscyIgdmFsdWU9Im51bGwiIC8+CisJCTxhdHRyaWJ1dGUgbmFtZT0icmVzdWx0cG9sbHZvdGVzIiB2YWx1ZT0ibnVsbCIgLz4KKyAJCTxhdHRyaWJ1dGUgbmFtZT0iZGlzcGxheWVkUG9sbCIgdmFsdWU9Im51bGwiIC8+CisKKwkJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKwkJCWRpc3BsYXlSZXN1bHRzKHJvb21Qb2xsKTsKKwkJPC9oYW5kbGVyPgorCQkKKwkJPG1ldGhvZCBuYW1lPSJkaXNwbGF5UmVzdWx0cyIgYXJncz0icG9sbCI+CisJCTwhW0NEQVRBWworCQkJZGlzcGxheWVkUG9sbCA9IHBvbGw7CisJCQl0aGlzLmNvbnRlbnQuc2V0QXR0cmlidXRlKCJ2aXNpYmxlIiwgcG9sbCAhPSBudWxsKTsKKwkJCWlmIChwb2xsID09IG51bGwpIHsKKwkJCQl0aGlzLmhlYWQuc2V0QXR0cmlidXRlKCd0ZXh0JywgY2FudmFzLmdldExhYmVsTmFtZSg0MSkpOworCQkJCXVwZGF0ZUJ1dHRvbnMoKTsKKwkJCQlyZXR1cm47CisJCQl9CisJCQl1cGRhdGVCdXR0b25zKCk7CisJCQl0aGlzLmhlYWQuc2V0QXR0cmlidXRlKCd0ZXh0JywKKwkJCQkJKGNhbnZhcy51c2VyX2lkID09IHBvbGwuY3JlYXRlZEJ5LnVzZXJfaWQgPyBjYW52YXMKKwkJCQkJCQkuZ2V0TGFiZWxOYW1lKDE0MTEpIDogcG9sbC5jcmVhdGVkQnkubG9naW4pCisJCQkJCQkJKyAiICIgKyBjYW52YXMuZ2V0TGFiZWxOYW1lKDM2KSk7CisKKwkJCXZhciB0b3RhbFZvdGVzID0gcG9sbC5yb29tUG9sbEFuc3dlckxpc3QubGVuZ3RoOworCQkJdGhpcy5jb250ZW50LnF1ZXN0aW9uLnRleHQuc2V0QXR0cmlidXRlKCd0ZXh0JywgcG9sbC5wb2xsUXVlc3Rpb24pOworCQkJdGhpcy5jb250ZW50LnZvdGVSZXN1bHROdW0uc2V0QXR0cmlidXRlKCd0ZXh0JywgdG90YWxWb3Rlcyk7CisJCQlpZiAodGhpcy5yZXN1bHRwb2xsdm90ZXMgIT0gbnVsbCkgeworCQkJCXRoaXMucmVzdWx0cG9sbHZvdGVzLmRlc3Ryb3koKTsKKwkJCX0KKwkJCXRoaXMucmVzdWx0cG9sbHZvdGVzID0gbmV3IGx6LnZpZXcodGhpcy5jb250ZW50LCB7CisJCQkJCQl5IDogMTQ2LAorCQkJCQkJeCA6IDEwMAorCQkJCQl9KTsKKworCQkJdmFyIGlzTnVtZXJpYyA9IHBvbGwucG9sbFR5cGUuaXNOdW1lcmljQW5zd2VyOworCQkJdmFyIHJlc0FycmF5ID0gbmV3IEFycmF5KGlzTnVtZXJpYyA/IDEwIDogMik7CisJCQlmb3IgKHZhciBpID0gMDsgaSA8IHJlc0FycmF5Lmxlbmd0aDsgKytpKSB7CisJCQkJcmVzQXJyYXlbaV0gPSAwOworCQkJfQorCQkJZm9yICh2YXIgaSA9IDA7IGkgPCB0b3RhbFZvdGVzOyArK2kpIHsKKwkJCQl2YXIgaWR4ID0gaXNOdW1lcmljCisJCQkJCQk/IHBvbGwucm9vbVBvbGxBbnN3ZXJMaXN0W2ldLnBvaW50TGlzdCAtIDEKKwkJCQkJCTogKHBvbGwucm9vbVBvbGxBbnN3ZXJMaXN0W2ldLmFuc3dlciA/IDAgOiAxKTsKKwkJCQlyZXNBcnJheVtpZHhdKys7CisJCQl9CisJCQlpZiAoY29udGVudC5fY2hhcnRUeXBlLmdldFZhbHVlKCkgPT0gMCkgeworCQkJCW5ldyBsei5zaW1wbGVsYXlvdXQodGhpcy5yZXN1bHRwb2xsdm90ZXMsIHsKKwkJCQkJCQlheGlzIDogJ3knLAorCQkJCQkJCXNwYWNpbmcgOiAyCisJCQkJCQl9KTsKKwkJCQlmb3IgKHZhciBpID0gMDsgaSA8IHJlc0FycmF5Lmxlbmd0aDsgKytpKSB7CisJCQkJCXZhciBwb3MgPSAodG90YWxWb3RlcyA9PSAwKSA/IDAgOiBNYXRoLnJvdW5kKDEwMAorCQkJCQkJCSogcmVzQXJyYXlbaV0gLyB0b3RhbFZvdGVzKTsKKwkJCQkJbmV3IGx6LnBhcmVudFJlc3VsdFBvbGxCYWxrKHRoaXMucmVzdWx0cG9sbHZvdGVzLCB7CisJCQkJCQkJCW5ld1ggOiBwb3MgKiAyLAorCQkJCQkJCQluZXdQZXJjZW50IDogcG9zICsgJyUnLAorCQkJCQkJCQl0ZXh0QSA6IGlzTnVtZXJpYyA/IGkgKyAxIDogY2FudmFzCisJCQkJCQkJCQkJLmdldExhYmVsTmFtZShpID09IDAgPyAzNCA6IDM1KQorCQkJCQkJCX0pOworCQkJCX0KKwkJCX0gZWxzZSB7CisKKwkJCQlpZiAoIWlzTnVtZXJpYykgeworCQkJCQkvL3llcy9ubworCQkJCQluZXcgbHoucmVzdWx0UGllQ2hhclBvbGwodGhpcy5yZXN1bHRwb2xsdm90ZXMsIHsKKwkJCQkJCQkJeHNlcmllcyA6IFsieWVzIiwgIm5vIl0sCisJCQkJCQkJCXlzZXJpZXMgOiByZXNBcnJheSwKKwkJCQkJCQkJdG9vbHRpcHNlcmllcyA6IFsieWVzICgiK3Jlc0FycmF5WzBdKyIpIiwgIm5vICgiK3Jlc0FycmF5WzFdKyIpIl0KKwkJCQkJCQl9KTsKKwkJCQl9IGVsc2UgeworCisJCQkJCWlmICgkZGVidWcpCisJCQkJCQlEZWJ1Zy53cml0ZSgidE9iamVjdCAxICIsIFsiMSIsICIyIiwgIjMiLCAiNCIsICI1IiwKKwkJCQkJCQkJCQkiNiIsICI3IiwgIjgiLCAiOSIsICIxMCJdKTsKKwkJCQkJaWYgKCRkZWJ1ZykKKwkJCQkJCURlYnVnLndyaXRlKCJ0T2JqZWN0IDIgIiwgcmVzQXJyYXkpOworCisJCQkJCXZhciB0b29sdGlwc2VyaWVzID0gbmV3IEFycmF5KHJlc0FycmF5Lmxlbmd0aCk7CisJCQkJCWZvciAodmFyIGk9MDtpPHJlc0FycmF5Lmxlbmd0aDtpKyspIHsKKwkJCQkJCXRvb2x0aXBzZXJpZXNbaV0gPSAiTsKwICIraSsiICgiKyByZXNBcnJheVtpXSArIikiOworCQkJCQl9CisJCQkJCQkKKwkJCQkJLy9udW1lcmljIFsxLDIsMyw0LDUsNiw3LDgsOSwxMF0KKwkJCQkJbmV3IGx6LnJlc3VsdFBpZUNoYXJQb2xsKHRoaXMucmVzdWx0cG9sbHZvdGVzLCB7CisJCQkJCQl4c2VyaWVzIDogWyIxIiwgIjIiLCAiMyIsICI0IiwgIjUiLCAiNiIsICI3IiwgIjgiLCAiOSIsCisJCQkJCQkJCSIxMCJdLAorCQkJCQkJeXNlcmllcyA6IHJlc0FycmF5LAorCQkJCQkJdG9vbHRpcHNlcmllcyA6IHRvb2x0aXBzZXJpZXMKKwkJCQkJfSk7CisJCQkJfQorCisJCQl9CisJCV1dPgorCQk8L21ldGhvZD4KKworCQk8bGFiZWxUZXh0IHk9IjIyIiBuYW1lPSJhcmNoUG9sbExibCIgbGFiZWxpZD0iMTQxMiIgLz4KKwkJPHJlc2V0Q29tYm9ib3ggbmFtZT0iX2FyY2hQb2xscyIgd2lkdGg9IjM0MiIgeD0iMTAwIiB5PSIyMiIKKwkJCWVkaXRhYmxlPSJmYWxzZSIgaXRlbWNsYXNzbmFtZT0iYmlnVGV4dExpc3RJdGVtIj4KKwkJCQorCQkJPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iZ2V0QXJjaGl2ZWRQb2xsTGlzdCIKKwkJCQlmdW5jbmFtZT0icG9sbHNlcnZpY2UuZ2V0QXJjaGl2ZWRQb2xsTGlzdCIgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iPgorCQkJCTxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorCQkJCTwhW0NEQVRBWworCQkJCQlwYXJlbnQucmVtb3ZlQWxsKCk7CisJCQkJCWlmICgkZGVidWcpCisJCQkJCQlEZWJ1Zy53cml0ZSgiZ2V0QXJjaGl2ZWRQb2xsTGlzdCAiLCB2YWx1ZSk7CisKKwkJCQkJdGhpcy5wYXJlbnQucGFyZW50LmFyY2hQb2xscyA9IHZhbHVlOworCQkJCQl2YXIgbm9BcmNoID0gKHZhbHVlID09IG51bGwgfHwgKHZhbHVlICE9IG51bGwgJiYgdmFsdWUubGVuZ3RoID09IDApKTsKKwkJCQkJcGFyZW50LnNldEF0dHJpYnV0ZSgidmlzaWJsZSIsICFub0FyY2gpOworCQkJCQlwYXJlbnQucGFyZW50LmFyY2hQb2xsTGJsLnNldEF0dHJpYnV0ZSgidmlzaWJsZSIsICFub0FyY2gpOworCQkJCQlpZiAobm9BcmNoKSB7CisJCQkJCQlyZXR1cm47CisJCQkJCX0KKwkJCQkJaWYgKHRoaXMucGFyZW50LnBhcmVudC5yb29tUG9sbCAhPSBudWxsKSB7CisJCQkJCQl0aGlzLnBhcmVudC5hZGRJdGVtKAorCQkJCQkJCQl0aGlzLnBhcmVudC5wYXJlbnQucm9vbVBvbGwucG9sbE5hbWUgKyAiKCIKKwkJCQkJCQkJCQkrIGNhbnZhcy5nZXRMYWJlbE5hbWUoMTQxMykgKyAiKSIsIC0xKTsKKwkJCQkJfQorCQkJCQlmb3IgKHZhciBpID0gMDsgaSA8IHZhbHVlLmxlbmd0aDsgKytpKSB7CisJCQkJCQl0aGlzLnBhcmVudC5hZGRJdGVtKHZhbHVlW2ldLnBvbGxOYW1lLCBpKTsKKwkJCQkJfQorCQkJCQl0aGlzLnBhcmVudC5zZWxlY3RJdGVtKHRoaXMucGFyZW50LnBhcmVudC5yb29tUG9sbCA9PSBudWxsCisJCQkJCQkJPyAwCisJCQkJCQkJOiAtMSk7CisJCQkJXV0+CisJCQkJPC9oYW5kbGVyPgorCQkJPC9uZXRSZW1vdGVDYWxsSGliPgorCQkJCisJCQk8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorCQkJCXRoaXMuZ2V0QXJjaGl2ZWRQb2xsTGlzdC5kb0NhbGwoKTsKKwkJCTwvaGFuZGxlcj4KKwkJCQorCQkJPGhhbmRsZXIgbmFtZT0ib25zZWxlY3QiIGFyZ3M9InNlbCI+CisJCQkJaWYgKCRkZWJ1ZykKKwkJCQkJRGVidWcud3JpdGUoIm9uc2VsZWN0ICIsIHNlbCk7CisJCQkJdGhpcy5wYXJlbnQuZGlzcGxheVJlc3VsdHMoc2VsLnZhbHVlID4gLTEKKwkJCQkJCT8gdGhpcy5wYXJlbnQuYXJjaFBvbGxzW3NlbC52YWx1ZV0KKwkJCQkJCTogdGhpcy5wYXJlbnQucm9vbVBvbGwpOworCQkJPC9oYW5kbGVyPgorCQkJCisJCQk8bWV0aG9kIG5hbWU9InJlbW92ZUFsbCI+CisJCQk8IVtDREFUQVsKKwkJCQl2YXIgY3VycmVudENvdW50ID0gdGhpcy5jYmxpc3QuZ2V0TnVtSXRlbXMoKTsKKwkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiY3VycmVudENvdW50ID0gIiwgY3VycmVudENvdW50KTsKKwkJCQlmb3IgKHZhciBpID0gMDsgaSA8IGN1cnJlbnRDb3VudDsgKytpKSB7CisJCQkJCXRoaXMucmVtb3ZlSXRlbUF0KDApOworCQkJCX0KKwkJCV1dPgorICAgICAgICAgICAgPC9tZXRob2Q+CisJCTwvcmVzZXRDb21ib2JveD4KKwkJCisJCTxsYWJlbFRleHQgeD0iMiIgeT0iNDIiIG5hbWU9ImhlYWQiIGZvbnRzdHlsZT0iYm9sZCIgLz4KKworCQk8dmlldyBuYW1lPSJjb250ZW50Ij4KKwkJCQorCQkJPHZpZXcgbmFtZT0icXVlc3Rpb24iIHg9IjIiIHk9IjYyIiB3aWR0aD0iNDQwIiBoZWlnaHQ9IjYwIiBiZ2NvbG9yPSIweEZGRkZGRiI+CisJCQkJPGxhYmVsVGV4dCB4PSIwIiB5PSIwIiBuYW1lPSJ0ZXh0IiBtdWx0aWxpbmU9InRydWUiIAorCQkJCQkJICAgcmVzaXplPSJmYWxzZSIgd2lkdGg9IiRvbmNle3BhcmVudC53aWR0aC0xNH0iIC8+CisJCQkJPG9tX3ZzY3JvbGxiYXIvPgorCQkJPC92aWV3PgorICAgICAgICAgICAgCisJCQk8bGFiZWxUZXh0IHk9IjEyMiIgbGFiZWxpZD0iMzkiIC8+CisJCQk8bGFiZWxUZXh0IHk9IjEyMiIgeD0iMTAwIiBuYW1lPSJ2b3RlUmVzdWx0TnVtIiAvPgorCQkJPHJlc2V0Q29tYm9ib3ggbmFtZT0iX2NoYXJ0VHlwZSIgd2lkdGg9IjMwMiIgeD0iMTQwIiB5PSIxMjIiIGVkaXRhYmxlPSJmYWxzZSIgPgorCQkJCTxsYWJlbGRUZXh0TGlzdEl0ZW0gbGFiZWxpZD0iMTQxNCIgdmFsdWU9IjAiLz4KKwkJCQk8bGFiZWxkVGV4dExpc3RJdGVtIGxhYmVsaWQ9IjE0MTUiIHZhbHVlPSIxIiBzZWxlY3RlZD0idHJ1ZSIgLz4KKwkJCQk8aGFuZGxlciBuYW1lPSJvbnNlbGVjdCIgYXJncz0ic2VsIj4KKwkJCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9uc2VsZWN0ICIsIHNlbCk7CisJCQkJCXZhciB2YWwgPSBwYXJlbnQucGFyZW50Ll9hcmNoUG9sbHMuZ2V0VmFsdWUoKTsKKwkJCQkJcGFyZW50LnBhcmVudC5kaXNwbGF5UmVzdWx0cyh2YWwgPiAtMQorCQkJCQkJCT8gcGFyZW50LnBhcmVudC5hcmNoUG9sbHNbdmFsXQorCQkJCQkJCTogcGFyZW50LnBhcmVudC5yb29tUG9sbCk7CisJCQkJPC9oYW5kbGVyPgorCQkJPC9yZXNldENvbWJvYm94PgorCisJCQk8bGFiZWxUZXh0IHk9IjE0NiIgbGFiZWxpZD0iNDAiIHg9IjIiIC8+CisJCTwvdmlldz4KKwkJCisJCTxtZXRob2QgbmFtZT0idXBkYXRlQnV0dG9ucyI+CisJCTwhW0NEQVRBWworCQkJX2RlbGV0ZVBvbGwuc2V0QXR0cmlidXRlKCJ2aXNpYmxlIiwgY2FudmFzLmlzbW9kZXJhdG9yICYmIGRpc3BsYXllZFBvbGwgIT0gbnVsbCk7CisJCQl2YXIgaGFzQXJjaCA9IF9hcmNoUG9sbHMuY2JsaXN0LmdldE51bUl0ZW1zKCkgPiAwOworCQkJX2Nsb3NlUG9sbC5zZXRBdHRyaWJ1dGUoInZpc2libGUiLCBfZGVsZXRlUG9sbC52aXNpYmxlICYmICghaGFzQXJjaCB8fCAoaGFzQXJjaCAmJiBfYXJjaFBvbGxzLmdldFZhbHVlKCkgPT0gLTEpKSk7CisJCV1dPgorCQk8L21ldGhvZD4KKwkJCisJCTxzaW1wbGVMYWJlbEJ1dHRvbiBuYW1lPSJfZGVsZXRlUG9sbCIgbGFiZWxpZD0iMTQyMCIgd2lkdGg9IjEwMCIKKwkJCXg9IjIiIHk9IiRvbmNleyBwYXJlbnQuaGVpZ2h0LTIyIH0iCisgICAgICAgICAgICBvbmNsaWNrPSJuZXcgbHouY29uZmlybURlbGV0ZVdpbmRvdyhwYXJlbnQsIHtyZWZPYmo6IHRoaXMsIGxhYmVsaWQ6IDE0MjAsIG1lc3NhZ2VsYWJlbGlkOiAxNDIxfSk7IgorICAgICAgICAgICAgPgorCQkgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iZGVsZXRlUG9sbCIgZnVuY25hbWU9InBvbGxzZXJ2aWNlLmRlbGV0ZVBvbGwiIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiA+ICAgCisJCSAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiB2YXIgcG9sbCA9IHBhcmVudC5wYXJlbnQucGFyZW50LmRpc3BsYXllZFBvbGw7IHJldHVybiBwb2xsICE9IG51bGwgPyBwb2xsLnJvb21Qb2xsSWQgOiAtMTsgPC9tZXRob2Q+PC9uZXRwYXJhbT4gCisJCSAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisJCQkJPCFbQ0RBVEFbCisJCQkJCXZhciBwID0gcGFyZW50LnBhcmVudDsKKwkJCQkJdmFyIGFyY2hDb3VudCA9IHAuX2FyY2hQb2xscy5jYmxpc3QuZ2V0TnVtSXRlbXMoKTsKKwkJICAgICAgICAJdmFyIGhhc0FyY2ggPSBhcmNoQ291bnQgPiAwOworCQkgICAgICAgIAlpZiAoIWhhc0FyY2ggfHwgKGhhc0FyY2ggJiYgcC5fYXJjaFBvbGxzLmdldFZhbHVlKCkgPT0gLTEpKSB7CisJCQkgICAgICAgIAlwLnJvb21Qb2xsID0gbnVsbDsKKwkJICAgICAgICAJfQorCQkgICAgICAgIAlpZiAoYXJjaENvdW50KSB7CisJCSAgICAgICAgCQlwLmRpc3BsYXlSZXN1bHRzKG51bGwpOworCQkgICAgICAgIAl9CisJCSAgICAgICAgCXAuX2FyY2hQb2xscy5nZXRBcmNoaXZlZFBvbGxMaXN0LmRvQ2FsbCgpOworCQkJCV1dPgorCQkgICAgICAgIDwvaGFuZGxlcj4KKwkJICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4KKwkJCTxtZXRob2QgbmFtZT0iY29uZmlybURlbGV0ZSI+CisJCQkJZGVsZXRlUG9sbC5kb0NhbGwoKTsKKwkJCTwvbWV0aG9kPgorICAgICAgICA8L3NpbXBsZUxhYmVsQnV0dG9uPgorICAgICAgICAgICAgCisJCTxzaW1wbGVMYWJlbEJ1dHRvbiBuYW1lPSJfY2xvc2VQb2xsIiBsYWJlbGlkPSIxNDE4IiB3aWR0aD0iMTAwIgorCQkJeD0iMTA0IiB5PSIkb25jZXsgcGFyZW50LmhlaWdodC0yMiB9IgorICAgICAgICAgICAgb25jbGljaz0ibmV3IGx6LmNvbmZpcm1EZWxldGVXaW5kb3cocGFyZW50LCB7cmVmT2JqOiB0aGlzLCBsYWJlbGlkOiAxNDE4LCBjb25maXJtbGFiZWxpZDogODUsIG1lc3NhZ2VsYWJlbGlkOiAxNDE5fSk7IgorICAgICAgICAgICAgPgorCQkgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iY2xvc2VQb2xsIiBmdW5jbmFtZT0icG9sbHNlcnZpY2UuY2xvc2VQb2xsIiByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAgIAorCQkgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorCQkgICAgICAgIAlwYXJlbnQucGFyZW50LnJvb21Qb2xsID0gbnVsbDsKKwkJICAgICAgICAJcGFyZW50LnBhcmVudC5fYXJjaFBvbGxzLmdldEFyY2hpdmVkUG9sbExpc3QuZG9DYWxsKCk7CisJCSAgICAgICAgPC9oYW5kbGVyPgorCQkgICAgPC9uZXRSZW1vdGVDYWxsSGliPgorCQkJPG1ldGhvZCBuYW1lPSJjb25maXJtRGVsZXRlIj4KKwkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgicGFyZW50Ll9hcmNoUG9sbHMuZ2V0VmFsdWUoKTsgIiwgcGFyZW50Ll9hcmNoUG9sbHMuZ2V0VmFsdWUoKSk7CisJCQkJY2xvc2VQb2xsLmRvQ2FsbCgpOworCQkJPC9tZXRob2Q+CisgICAgICAgIDwvc2ltcGxlTGFiZWxCdXR0b24+CisgICAgICAgICAgICAKKwkJPHNpbXBsZUxhYmVsQnV0dG9uIGxhYmVsaWQ9IjI1IiB3aWR0aD0iMTAwIiB4PSIkb25jZXsgcGFyZW50LndpZHRoLTEwMiB9IgorICAgICAgICAgICAgeT0iJG9uY2V7IHBhcmVudC5oZWlnaHQtMjIgfSIgb25jbGljaz0idGhpcy5wYXJlbnQuY2xvc2UoKTsiIC8+CisJCQorCTwvY2xhc3M+CisKKwk8Y2xhc3MgbmFtZT0icGFyZW50UmVzdWx0UG9sbEJhbGsiIGV4dGVuZHM9InZpZXciPgorCQk8YXR0cmlidXRlIG5hbWU9Im5ld1giIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisJCTxhdHRyaWJ1dGUgbmFtZT0ibmV3UGVyY2VudCIgdmFsdWU9IjAlIiB0eXBlPSJzdHJpbmciIC8+CisJCTxhdHRyaWJ1dGUgbmFtZT0iYW5zd2VyIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorCQk8YXR0cmlidXRlIG5hbWU9InRleHRBIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisJCTx0ZXh0IHRleHQ9IiRvbmNleyBwYXJlbnQudGV4dEEgfSIgcmVzaXplPSJ0cnVlIiAvPgorCQk8cmVzdWx0UG9sbEJhbGsgeD0iNDAiIC8+CisJPC9jbGFzcz4KKworCTxjbGFzcyBuYW1lPSJyZXN1bHRQb2xsQmFsayIgZXh0ZW5kcz0idmlldyIgYmdjb2xvcj0iYmxhY2siCisJCWhlaWdodD0iMjAiIHdpZHRoPSIwIj4KKwkJPHZpZXcgYmdjb2xvcj0icmVkIiB3aWR0aD0iJHsgcGFyZW50LndpZHRoLTIgfSIgaGVpZ2h0PSIkeyBwYXJlbnQuaGVpZ2h0LTIgfSIKKwkJCXg9IjEiIHk9IjEiIC8+CisJCTx0ZXh0IHRleHQ9IiRvbmNleyBwYXJlbnQucGFyZW50Lm5ld1BlcmNlbnQgfSIgcmVzaXplPSJ0cnVlIiB5PSIyIiAvPgorCQk8YW5pbWF0b3IgYXR0cmlidXRlPSJ3aWR0aCIgdG89IiRvbmNleyBwYXJlbnQucGFyZW50Lm5ld1ggfSIKKwkJCWR1cmF0aW9uPSIxMDAwIiAvPgorCTwvY2xhc3M+CisJCisJPGNsYXNzIG5hbWU9InJlc3VsdFBpZUNoYXJQb2xsIiBleHRlbmRzPSJvbXBpZWNoYXJ0IiB4PSI0MCIgd2lkdGg9IjMwMCIgCisJCWhlaWdodD0iMjgwIiBzdHlsZT0ib21jaGFydHN0eWxlIj4KKyAgICAKKwkJPGF0dHJpYnV0ZSBuYW1lPSJ4c2VyaWVzIiB2YWx1ZT0ibnVsbCIvPgorCQk8YXR0cmlidXRlIG5hbWU9InlzZXJpZXMiIHZhbHVlPSJudWxsIi8+CisJCTxhdHRyaWJ1dGUgbmFtZT0idG9vbHRpcHNlcmllcyIgdmFsdWU9Im51bGwiLz4KKyAgICAKKwkJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKwkJCXRoaXMubGVnZW5kYm94LmJyaW5nVG9Gcm9udCgpOworCQk8L2hhbmRsZXI+CisgICAgCisJCTwhLS0tIGdldCB0aGUgZGF0YXNlcmllcyAtLT4KKwkJPG1ldGhvZCBuYW1lPSJnZXRPTURhdGFTZXJpZXMiPgorCQk8IVtDREFUQVsKKwkJCXZhciB0T2JqZWN0ID0gbmV3IE9iamVjdCgpOworCisJCQl0T2JqZWN0LnhzZXJpZXMgPSB0aGlzLnhzZXJpZXM7CisJCQl0T2JqZWN0LnlzZXJpZXMgPSB0aGlzLnlzZXJpZXM7CisJCQl0T2JqZWN0LnRvb2x0aXBzZXJpZXMgPSB0aGlzLnRvb2x0aXBzZXJpZXM7CisKKwkJCXJldHVybiB0T2JqZWN0OworCQldXT4KKwkJPC9tZXRob2Q+ICAKKyAgICAKKwkJPHN0cm9rZXN0eWxlIG5hbWU9InBpZXNsaWNlc3R5bGUiIHN0cm9rZUNvbG9yPSIweDAwMDAwMCIgc3Ryb2tlV2lkdGg9IjEiCisJCQlzdHJva2VUeXBlPSJzb2xpZCIgLz4KKyAgICAgICAgCisJCTxvbWxlZ2VuZCBuYW1lPSJsZWdlbmRib3giIGxlZ2VuZEZvbnRzaXplPSIxNCIgaW5pdHN0YWdlPSJsYXRlIgorCQkJbGVnZW5kYm9yZGVyPSJ0cnVlIiA+CisgICAgICAgIAorCQkJPGhhbmRsZXIgbmFtZT0ib25pdGVtbW91c2VvdmVyIiBhcmdzPSJpdGVtIj4KKwkJCQl2YXIgcGllcGllY2UgPSBwYXJlbnQucGxvdGFyZWEuYXJyUGllUGllY2VzW2l0ZW0uaWRlbnRpZmllcl07CisJCQkJcGllcGllY2UucmVuZGVySW5uZXJXZWRnZSgpOworCQkJPC9oYW5kbGVyPgorCisJCQk8aGFuZGxlciBuYW1lPSJvbml0ZW1tb3VzZW91dCIgYXJncz0iaXRlbSI+CisJCQkJdmFyIHBpZXBpZWNlID0gcGFyZW50LnBsb3RhcmVhLmFyclBpZVBpZWNlc1tpdGVtLmlkZW50aWZpZXJdOworCQkJCXBpZXBpZWNlLnJlbmRlcldlZGdlKCk7CisJCQk8L2hhbmRsZXI+CisJCTwvb21sZWdlbmQ+CisKKwk8L2NsYXNzPiAgICAKKyAgICAKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9wb3B1cHMvYXV0b0xvYWRlci5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvcG9wdXBzL2F1dG9Mb2FkZXIubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0YWYxODcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvcG9wdXBzL2F1dG9Mb2FkZXIubHp4CkBAIC0wLDAgKzEsNjUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisgICAgCis8Y2xhc3MgbmFtZT0iYXV0b0xvYWRlciIgZXh0ZW5kcz0idmlldyIgYWxpZ249ImNlbnRlciIgdmFsaWduPSJtaWRkbGUiIHBpeGVsbG9jaz0idHJ1ZSI+CisKKwk8YXR0cmlidXRlIG5hbWU9Im1heHdpZHRoIiB2YWx1ZT0iNDAwIiB0eXBlPSJudW1iZXIiIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJtYXhzdGVwcyIgdmFsdWU9IjIyIiB0eXBlPSJudW1iZXIiIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50c3RlcHMiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisJCisJPCEtLSAKKwk8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorCQl0aGlzLnNldEF0dHJpYnV0ZSgieSIsTWF0aC5yb3VuZCh0aGlzLnkpKTsKKwkJdGhpcy5zZXRBdHRyaWJ1dGUoInkiLE1hdGgucm91bmQodGhpcy55KSk7CisJPC9oYW5kbGVyPgorCSAtLT4KKwkKKwk8bWV0aG9kIG5hbWU9ImNsb3NlIj4KKwkJY2FudmFzLm1haW5fY29udGVudC5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCd2aXNpYmxlJyk7CisJCWNhbnZhcy5fbWFpbmJnY29udGVudE5hdmkuc2V0QXR0cmlidXRlKCd2aXNpYmlsaXR5JywndmlzaWJsZScpOworCQljYW52YXMudGhpc2hpYi5sb2FkZXJWYXIgPSBudWxsOworCQl0aGlzLmRlc3Ryb3koKTsKKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9InNldFByb2dyZXNzIj4KKwkJdGhpcy5jdXJyZW50c3RlcHMgKz0gMTsKKwkJaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiYXV0b0xvYWRlci9zZXRQcm9ncmVzcyA9PT09PSAiLHRoaXMuY3VycmVudHN0ZXBzKTsKKwkJdmFyIHcgPSBNYXRoLnJvdW5kKCgodGhpcy5tYXh3aWR0aCkvdGhpcy5tYXhzdGVwcykqdGhpcy5jdXJyZW50c3RlcHMpOworCQl0aGlzLmxvYWRpbmdiYXIuc2V0QXR0cmlidXRlKCd2aXNpYmlsaXR5JywndmlzaWJsZScpOworCQlpZigkZGVidWcpIERlYnVnLndyaXRlKCJhdXRvTG9hZGVyL3NldFJlc291cmNlTnVtYmVyID09ICIsdyk7CisJCXRoaXMubG9hZGluZ2Jhci5fbG9hZGluZy5zZXRBdHRyaWJ1dGUoJ3dpZHRoJyx3KTsKKwk8L21ldGhvZD4KKyAgICAKKyAgICA8dGV4dCBmb250c2l6ZT0iMTEiIG5hbWU9ImVycm9yIiB5PSIyMCIgZmdjb2xvcj0iMHg2NjY2NjYiLz4KKyAgICA8dGV4dCBmb250c2l6ZT0iMTEiIG5hbWU9Il9zcmMiIHk9IjUwIiBhbGlnbj0iY2VudGVyIiBmZ2NvbG9yPSIweDY2NjY2NiIgdmlzaWJpbGl0eT0iJG9uY2V7ICgkZGVidWcpID8gJ3Zpc2libGUnIDogJ2hpZGRlbicgfSIgLz4KKyAgICAKKyAgICA8dmlldyBuYW1lPSJsb2FkaW5nYmFyIiAgaGVpZ2h0PSIxIiBwaXhlbGxvY2s9InRydWUiCisgICAgICAgICAgeD0iLTUiIHk9IjQwIiB3aWR0aD0iJG9uY2V7IHBhcmVudC5tYXh3aWR0aCsyIH0iIHZpc2liaWxpdHk9ImhpZGRlbiI+CisgICAgICAgICAgPHZpZXcgeD0iMSIgeT0iMSIgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGgtMiB9IiBoZWlnaHQ9IjEiIG9wYWNpdHk9IjAuMyIKKyAgICAgICAgICAJCWJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignc3R5bGVNZW51QmFyQmFzZUNvbG9yJykgfSIgLz4KKyAgICAgICAgICA8dmlldyBuYW1lPSJfbG9hZGluZyIgeD0iMSIgeT0iMSIgd2lkdGg9IjAiIGhlaWdodD0iMSIgIHBpeGVsbG9jaz0idHJ1ZSIgCisgICAgICAgICAgCQliZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ3N0eWxlTWVudUJhckJhc2VDb2xvcicpIH0iLz4KKyAgICA8L3ZpZXc+CisgICAgCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvcG9wdXBzL2Nob29zZU5pY2tOYW1lLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9wb3B1cHMvY2hvb3NlTmlja05hbWUubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzY2NmYTcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvcG9wdXBzL2Nob29zZU5pY2tOYW1lLmx6eApAQCAtMCwwICsxLDk0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorIAorIDxjbGFzcyBuYW1lPSJjaG9vc2VOaWNrTmFtZSIgZXh0ZW5kcz0ibGFiZWxFeHBsb3JlckJveCIgbGFiZWxpZD0iMTI4NyIKKyAgICBkb2NraW5nPSJ0cnVlIiByZXNpemVhYmxlPSJmYWxzZSIgY2xvc2FibGU9ImZhbHNlIiAKKyAgICB3aWR0aD0iMzI0IiB4PSIkb25jZXsgcGFyZW50LndpZHRoLzIgLSB0aGlzLndpZHRoLzIgfSIgeT0iMTAwIiBoZWlnaHQ9IjIwMCI+CisKKyAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgIAk8IVtDREFUQVsKKyAgICAJCisgICAgCSAgIHZhciB0Rmlyc3RuYW1lID0gIkd1ZXN0IgorICAgIAkgICB2YXIgdExhc3RuYW1lID0gIlVzZXIgIitnZXRTdHJpbmdUaW1lV2l0aFNlY29uZHMoKTsKKyAgICAJCisgICAgCSAgIHRoaXMuZmlyc3ROYW1lLnNldEF0dHJpYnV0ZSgidGV4dCIsdEZpcnN0bmFtZSk7CisgICAgCSAgIHRoaXMubGFzdE5hbWUuc2V0QXR0cmlidXRlKCJ0ZXh0Iix0TGFzdG5hbWUpOworICAgIAkKKyAgICAJXV0+CisgICAgPC9oYW5kbGVyPgorCisgICAgPCEtLQorICAgIHB1YmxpYyBMb25nIHNldFVzZXJOaWNrTmFtZShTdHJpbmcgZmlyc3RuYW1lLCBTdHJpbmcgbGFzdG5hbWUsIFN0cmluZyBlbWFpbCkKKyAgICAgLS0+CisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0ic2V0VXNlck5pY2tOYW1lIiBhY3RpdmVFcnJvckhhbmRsZXI9InRydWUiIAorICAgICAgICAgICAgICAgICAgICAgICAgZnVuY25hbWU9InhtbGNybS5zZXRVc2VyTmlja05hbWUiIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9Ij4gICAgICAgICAgCisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC5maXJzdE5hbWUuZ2V0VGV4dCgpOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC5sYXN0TmFtZS5nZXRUZXh0KCk7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50Lm1haWwuZ2V0VGV4dCgpOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZSB0aGUgcnRtcGNvbm5lY3Rpb24KKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2V0VXNlck5pY2tOYW1lIC0xLTogIix2YWx1ZSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKHZhbHVlPDApeworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBjYW52YXMudGhpc2hpYi5nZXRDdXJyZW50Um9vbUNsaWVudC5kb0NhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50LmNsb3NlKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4gICAKKyAgICA8L25ldFJlbW90ZUNhbGxIaWI+IAorCisJPGxhYmVsVGV4dCB5PSIyNiIgeD0iNCIgbGFiZWxpZD0iMTI4OCIgLz4KKwkJPGN1c3RvbUVkaXR0ZXh0IG5hbWU9ImZpcnN0TmFtZSIgeT0iMjQiIHg9IjEyMCIgd2lkdGg9IjIwMCIgdGV4dD0iIiAvPgorCQkKKwk8bGFiZWxUZXh0IHk9IjU2IiB4PSI0IiBsYWJlbGlkPSIxMjg5IiAvPgorCQk8Y3VzdG9tRWRpdHRleHQgbmFtZT0ibGFzdE5hbWUiIHk9IjU0IiB4PSIxMjAiIHdpZHRoPSIyMDAiIHRleHQ9IiIgLz4KKwkJCisJPGxhYmVsVGV4dCB5PSI4NiIgeD0iNCIgbGFiZWxpZD0iMTI5MCIgLz4KKwkJPGN1c3RvbUVkaXR0ZXh0IG5hbWU9Im1haWwiIHk9Ijg0IiB4PSIxMjAiIHdpZHRoPSIyMDAiIAorCQkJCQkJcmVnZXhwVHlwZT0iZW1haWwiIHRleHQ9IiIgLz4KKworCTxzaW1wbGVMYWJlbEJ1dHRvbiBuYW1lPSJjb25uZWN0IiB4PSIkb25jZXsgcGFyZW50LndpZHRoLXRoaXMud2lkdGgtMTAgfSIgCisJCQkJCSAgIHk9IiRvbmNleyBwYXJlbnQuaGVpZ2h0LTMwIH0iIGxhYmVsaWQ9IjEyOTEiIHdpZHRoPSIxMjAiID4KKwkJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisJCQk8IVtDREFUQVsKKyAgICAJCQlpZiAocGFyZW50LmZpcnN0TmFtZS5nZXRUZXh0KCkubGVuZ3RoIDwgNCkgeworICAgIAkJCQluZXcgbHoubGFiZWxlcnJvclBvcHVwKGNhbnZhcyx7ZXJyb3JsYWJlbGlkOjEyOTJ9KTsKKyAgICAJCQkJcmV0dXJuOworICAgIAkJCX0gZWxzZSBpZiAocGFyZW50Lmxhc3ROYW1lLmdldFRleHQoKS5sZW5ndGggPCA0KSB7CisgICAgICAgICAgICAgICAgICAgIG5ldyBsei5sYWJlbGVycm9yUG9wdXAoY2FudmFzLHtlcnJvcmxhYmVsaWQ6MTI5Mn0pOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChwYXJlbnQubWFpbC5nZXRUZXh0KCkgPT0gIiIpIHsKKyAgICAgICAgICAgICAgICAgICAgbmV3IGx6LmxhYmVsZXJyb3JQb3B1cChjYW52YXMse2Vycm9ybGFiZWxpZDoxMjkzfSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5zZXRVc2VyTmlja05hbWUuZG9DYWxsKCk7CisgICAgICAgICAgICBdXT4gICAgCisJCTwvaGFuZGxlcj4KKwk8L3NpbXBsZUxhYmVsQnV0dG9uPgorCQkKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9wb3B1cHMvY29uZmlybWF0aW9uQm94Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9wb3B1cHMvY29uZmlybWF0aW9uQm94Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZDNkMjU2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3BvcHVwcy9jb25maXJtYXRpb25Cb3gubHp4CkBAIC0wLDAgKzEsNjQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisJCis8Y2xhc3MgbmFtZT0iY29uZmlybWF0aW9uQm94IiBleHRlbmRzPSJsYWJlbEV4cGxvcmVyQm94IiBsYWJlbGlkPSIxOCIKKyAgICBkb2NraW5nPSJ0cnVlIiByZXNpemVhYmxlPSJmYWxzZSIgY2xvc2FibGU9InRydWUiIHdpZHRoPSI0MDAiIHg9IjEwMCIgaGVpZ2h0PSIyNDAiPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0icmVmT2JqIiB2YWx1ZT0ibnVsbCIgLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9ImxhYmVsaWRlcnJvciIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9ImRvQXNrQWdhaW4iIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPgorCisJPHZpZXcgeD0iNCIgcmVzb3VyY2U9Indhcm5pbmdfaWNvbl9yc2MiIHk9IjI0IiAvPgorCisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIkb25jZXsgcGFyZW50LmxhYmVsaWRlcnJvciB9IiB5PSIyNCIgCisgICAgCQkgICB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCAtIDQwIH0iCisgICAgCW11bHRpbGluZT0idHJ1ZSIgcmVzaXplPSJmYWxzZSIgeD0iMzAiIC8+CisgICAgCisgICAgPGxhYmVsQ2hlY2tib3ggbmFtZT0iaG9sZGRhdGFpblNPIiAKKyAgICAJCQkgICB2aXNpYmlsaXR5PSIkb25jZXsgKHBhcmVudC5kb0Fza0FnYWluKSA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nIH0iIAorICAgIAkJCSAgIGxhYmVsaWQ9IjY0IiB4PSIxMCIgeT0iMjIwIiAvPgorICAgIAorICAgIDxzaW1wbGVMYWJlbEJ1dHRvbiBsYWJlbGlkPSI2MSIgd2lkdGg9IjEwMCIgeD0iNzAiIHk9IjE5NiI+CisgICAgCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgIAkJdGhpcy5wYXJlbnQuY2xvc2UoKTsKKyAgICAJPC9oYW5kbGVyPgorICAgIDwvc2ltcGxlTGFiZWxCdXR0b24+ICAgIAorICAgIDxzaW1wbGVMYWJlbEJ1dHRvbiBsYWJlbGlkPSI2NSIgd2lkdGg9IjEwMCIgeD0iMTgwIiB5PSIxOTYiPgorICAgIAk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4gICAgICAgICAKKyAgICAJCXZhciB0ID0gcGFyZW50LmhvbGRkYXRhaW5TTy5nZXRWYWx1ZSgpOworICAgICAgICAgICAgdGhpcy5wYXJlbnQucmVmT2JqLnNlbmRDb25maXJtYXRpb24oZmFsc2UsdCk7CisgICAgICAgICAgICB0aGlzLnBhcmVudC5jbG9zZSgpOworICAgIAk8L2hhbmRsZXI+CisgICAgPC9zaW1wbGVMYWJlbEJ1dHRvbj4KKyAgICA8c2ltcGxlTGFiZWxCdXR0b24gbGFiZWxpZD0iNjAiIHdpZHRoPSIxMDAiIHg9IjI5MCIgeT0iMTk2Ij4KKyAgICAJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgCQl2YXIgdCA9IHBhcmVudC5ob2xkZGF0YWluU08uZ2V0VmFsdWUoKTsKKyAgICAgICAgICAgIHRoaXMucGFyZW50LnJlZk9iai5zZW5kQ29uZmlybWF0aW9uKHRydWUsdCk7CisgICAgICAgICAgICB0aGlzLnBhcmVudC5jbG9zZSgpOworICAgIAk8L2hhbmRsZXI+CisgICAgPC9zaW1wbGVMYWJlbEJ1dHRvbj4gIAorICAgIAorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3BvcHVwcy9jb25maXJtYXRpb25TaW5nbGUubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3BvcHVwcy9jb25maXJtYXRpb25TaW5nbGUubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyNGVkNGYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvcG9wdXBzL2NvbmZpcm1hdGlvblNpbmdsZS5sengKQEAgLTAsMCArMSwxNDYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzxjbGFzcyBuYW1lPSJjb25maXJtYXRpb25TaW5nbGUiIGV4dGVuZHM9ImxhYmVsRXhwbG9yZXJCb3giIGxhYmVsaWQ9IjgzMiIKKyAgICBkb2NraW5nPSJ0cnVlIiByZXNpemVhYmxlPSJmYWxzZSIgY2xvc2FibGU9InRydWUiIGhlaWdodD0iMTQwIiB3aWR0aD0iMzAwIj4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9InJlZk9iaiIgdmFsdWU9Im51bGwiIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJyZWZSZXR1cm5NZXRob2QiIHZhbHVlPSJudWxsIiAvPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0ic2hvd0NoZWNrQm94IiB2YWx1ZT0idHJ1ZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9ImxhYmVsaWRlcnJvciIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9ImRvQ2FsY1Bvc2l0aW9uIiB2YWx1ZT0idHJ1ZSIgdHlwZT0ibnVtYmVyIiAvPgorICAgIAorCTxhdHRyaWJ1dGUgbmFtZT0iaWNvblJlc291cmNlIiB2YWx1ZT0id2FybmluZ19wb3B1cF9pY29uX3JzYyIgdHlwZT0ic3RyaW5nIiAvPgorCisJPGltYWdlIHg9IjQiIHNyYz0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUltYWdlKHBhcmVudC5pY29uUmVzb3VyY2UpIH0iIHk9IjI0IiAvPgorCisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIkb25jZXsgcGFyZW50LmxhYmVsaWRlcnJvciB9IiB5PSIyNCIgCisgICAgCQkgICB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCAtIDQwIH0iCisgICAgCW11bHRpbGluZT0idHJ1ZSIgcmVzaXplPSJmYWxzZSIgeD0iMzAiIC8+CisgICAgICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAKKyAgICAgICAgCWlmICghdGhpcy5kb0NhbGNQb3NpdGlvbikgeworICAgICAgICAJCXJldHVybjsKKyAgICAgICAgCX0KKyAgICAgICAgCisgICAgICAgICAgICAvL1NldCBQb3NpdGlvbiBvZiBDb25maXJtYXRpb24gQm94IGFzIENsb3NlIGFzIHBvc3NpYmxlIHRvIHRoZSBNb3VzZQorICAgICAgICAgICAgdmFyIHggPSBwYXJlbnQuZ2V0TW91c2UoIngiKTsKKyAgICAgICAgICAgIHZhciB5ID0gcGFyZW50LmdldE1vdXNlKCJ5Iik7CisgICAgICAgICAgICB2YXIgbmV3eCA9IHggLSAodGhpcy53aWR0aC8yKTsKKyAgICAgICAgICAgIHZhciBuZXd5ID0geSAtICh0aGlzLmhlaWdodC8yKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIjEiLHgseSxuZXd4LG5ld3kpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAobmV3eCA8IDApIHsKKyAgICAgICAgICAgICAgICBuZXd4ID0gMjA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAobmV3eSA8IDApIHsKKyAgICAgICAgICAgICAgICBuZXd5ID0gMjA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIjEuMSIsKHRoaXMud2lkdGggKyBuZXd4ICsgMjApLHBhcmVudC53aWR0aCx0aGlzLndpZHRoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIHJlbGF0aXZlV2lkdGggPSBwYXJlbnQud2lkdGg7CisgICAgICAgICAgICBpZiAocmVsYXRpdmVXaWR0aCA+IGNhbnZhcy53aWR0aCkgeworICAgICAgICAgICAgCXJlbGF0aXZlV2lkdGggPSBjYW52YXMud2lkdGg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICh0aGlzLndpZHRoICsgbmV3eCArIDIwID4gcmVsYXRpdmVXaWR0aCkgeworICAgICAgICAgICAgCW5ld3ggPSByZWxhdGl2ZVdpZHRoLXRoaXMud2lkdGgtMjA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICh0aGlzLmhlaWdodCArIG5ld3kgKyAyMCA+IHBhcmVudC5oZWlnaHQpIHsKKyAgICAgICAgICAgIAluZXd5ID0gcGFyZW50LmhlaWdodC10aGlzLmhlaWdodC0yMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIjIiLG5ld3gsbmV3eSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJ4IixuZXd4KTsKKyAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJ5IixuZXd5KTsKKyAgICAgICAgICAgIAorICAgICAgICBdXT4KKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPGxhYmVsQ2hlY2tib3ggbmFtZT0iaG9sZGRhdGFpblNPIiB2aXNpYmlsaXR5PSIkb25jZXsgKHBhcmVudC5zaG93Q2hlY2tCb3gpID8gJ3Zpc2libGUnIDogJ2hpZGRlbicgfSIgCisgICAgICAgICAgICAgICAgICAgbGFiZWxpZD0iNjQiIHg9IjEwIiB5PSIkb25jZXsgcGFyZW50LmhlaWdodCAtIDQ2IH0iIC8+CisgICAgCisgICAgPHNpbXBsZUxhYmVsQnV0dG9uIGxhYmVsaWQ9IjYxIiB3aWR0aD0iMTAwIiB4PSIkb25jZXsgcGFyZW50LndpZHRoIC0gMTA1IH0iIHk9IiRvbmNleyBwYXJlbnQuaGVpZ2h0IC0gMjYgfSI+CisgICAgCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgIAkJdmFyIHQgPSBwYXJlbnQuaG9sZGRhdGFpblNPLmdldFZhbHVlKCk7CisgICAgCQl0aGlzLnBhcmVudC5jbG9zZSgpOworICAgIAkJaWYgKHBhcmVudC5yZWZSZXR1cm5NZXRob2QgPT0gbnVsbCkgeworICAgIAkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJyZWZPYmogIix0aGlzLnBhcmVudC5yZWZPYmopOworICAgIAkJICAgIHRoaXMucGFyZW50LnJlZk9iai5zZW5kTm9Db25maXJtYXRpb24oKTsKKyAgICAJCX0gZWxzZSB7CisgICAgCQkJdGhpcy5wYXJlbnQucmVmT2JqW3BhcmVudC5yZWZSZXR1cm5NZXRob2RdKGZhbHNlLHQpOworICAgIAkJfQorICAgIAk8L2hhbmRsZXI+CisgICAgPC9zaW1wbGVMYWJlbEJ1dHRvbj4gICAgCisgICAgPHNpbXBsZUxhYmVsQnV0dG9uIGxhYmVsaWQ9IjYwIiB3aWR0aD0iMTAwIiB4PSIkb25jZXsgcGFyZW50LndpZHRoIC0gMjEwIH0iIHk9IiRvbmNleyBwYXJlbnQuaGVpZ2h0IC0gMjYgfSI+CisgICAgCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgIAkJdmFyIHQgPSBwYXJlbnQuaG9sZGRhdGFpblNPLmdldFZhbHVlKCk7CisgICAgCQl0aGlzLnBhcmVudC5jbG9zZSgpOworICAgIAkJaWYgKHBhcmVudC5yZWZSZXR1cm5NZXRob2QgPT0gbnVsbCkgeworICAgIAkJICAgIHRoaXMucGFyZW50LnJlZk9iai5zZW5kQ29uZmlybWF0aW9uKHRydWUsdCk7CisgICAgCQl9IGVsc2UgeworICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnJlZk9ialtwYXJlbnQucmVmUmV0dXJuTWV0aG9kXSh0cnVlLHQpOworICAgICAgICAgICAgfQorICAgIAk8L2hhbmRsZXI+CisgICAgPC9zaW1wbGVMYWJlbEJ1dHRvbj4gICAgCis8L2NsYXNzPgorCis8Y2xhc3MgbmFtZT0icmVtZW1iZXJNZXNzYWdlIiBleHRlbmRzPSJsYWJlbEV4cGxvcmVyQm94IiBsYWJlbGlkPSI4MzIiCisJICAgeD0iJG9uY2V7IGNhbnZhcy53aWR0aC8yIC0gdGhpcy53aWR0aC8yIH0iIHk9IjEwMCIKKwkgICBkb2NraW5nPSJ0cnVlIiByZXNpemVhYmxlPSJmYWxzZSIgY2xvc2FibGU9InRydWUiIGhlaWdodD0iMTQwIiB3aWR0aD0iMzAwIj4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9InJlZk9iaiIgdmFsdWU9Im51bGwiIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJzaG93Q2hlY2tCb3giIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZGVycm9yIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgIAorICAgIDx2aWV3IHg9IjQiIHJlc291cmNlPSJ3YXJuaW5nX2ljb25fcnNjIiB5PSIyNCIgLz4KKworICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iJG9uY2V7IHBhcmVudC5sYWJlbGlkZXJyb3IgfSIgeT0iMjQiIAorICAgICAgICAgICAgICAgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGggLSA0MCB9IgorICAgICAgICBtdWx0aWxpbmU9InRydWUiIHJlc2l6ZT0iZmFsc2UiIHg9IjMwIiAvPgorICAgICAgICAKKyAgICA8bGFiZWxDaGVja2JveCBuYW1lPSJob2xkZGF0YWluU08iIHZpc2liaWxpdHk9IiRvbmNleyAocGFyZW50LnNob3dDaGVja0JveCkgPyAndmlzaWJsZScgOiAnaGlkZGVuJyB9IiAKKyAgICAgICAgICAgICAgICAgICBsYWJlbGlkPSI2NCIgeD0iMTAiIHk9IiRvbmNleyBwYXJlbnQuaGVpZ2h0IC0gNDYgfSIgLz4KKyAgICAKKyAgICA8c2ltcGxlTGFiZWxCdXR0b24gbGFiZWxpZD0iNjQyIiB3aWR0aD0iMTAwIiB4PSIkb25jZXsgcGFyZW50LndpZHRoIC0gMTA1IH0iIHk9IiRvbmNleyBwYXJlbnQuaGVpZ2h0IC0gMjYgfSI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAJdmFyIHQgPSBwYXJlbnQuaG9sZGRhdGFpblNPLmdldFZhbHVlKCk7CisgICAgICAgICAgICB0aGlzLnBhcmVudC5jbG9zZSgpOworICAgICAgICAgICAgdGhpcy5wYXJlbnQucmVmT2JqLnNlbmRDb25maXJtYXRpb24odCk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICA8L3NpbXBsZUxhYmVsQnV0dG9uPiAgICAKKyAgICAgCis8L2NsYXNzPgorCQorPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3BvcHVwcy9jb252ZXJ0ZXJQb3B1cC5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvcG9wdXBzL2NvbnZlcnRlclBvcHVwLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjE3OGFkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3BvcHVwcy9jb252ZXJ0ZXJQb3B1cC5sengKQEAgLTAsMCArMSw0MSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9ImNvbnZlcnRlclBvcHVwIiBleHRlbmRzPSJsYWJlbEV4cGxvcmVyQm94IiBsYWJlbGlkPSIyMDQiCisJZG9ja2luZz0idHJ1ZSIgcmVzaXplYWJsZT0idHJ1ZSIgY2xvc2FibGU9InRydWUiIAorICAgIHdpZHRoPSIzMjQiIHg9IjIwMCIgaGVpZ2h0PSIyMzAiPgorCisJPGF0dHJpYnV0ZSBuYW1lPSJlcnJvciIgdmFsdWU9Im51bGwiIC8+CisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAgICAgdGhpcy5lcnJvclZpZXcuZXJyb3JWaWV3LnNldEF0dHJpYnV0ZSgndGV4dCcsdGhpcy5lcnJvcik7CisgICAgPC9oYW5kbGVyPgorCisJPHZpZXcgeT0iMjQiIHdpZHRoPSIkeyBwYXJlbnQud2lkdGggLSA0IH0iIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodCAtIDMwIH0iIHg9IjIiIGNsaXA9InRydWUiIG5hbWU9ImVycm9yVmlldyI+CisJCTx0ZXh0IHk9IjMwIiBmb250c2l6ZT0iMTAiIGZvbnRzdHlsZT0iYm9sZCIgbmFtZT0iZXJyb3JWaWV3IgorCQkJbXVsdGlsaW5lPSJ0cnVlIiB3aWR0aD0iJHsgcGFyZW50LndpZHRoIC0gMTQgfSIgc2VsZWN0YWJsZT0idHJ1ZSIgLz4KKwkJPG9tX3ZzY3JvbGxiYXIgLz4KKwk8L3ZpZXc+CisKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9wb3B1cHMvZWRpdFdoaXRlYm9hcmREZWZhdWx0Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9wb3B1cHMvZWRpdFdoaXRlYm9hcmREZWZhdWx0Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTk4MWVmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3BvcHVwcy9lZGl0V2hpdGVib2FyZERlZmF1bHQubHp4CkBAIC0wLDAgKzEsMTE3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8Y2xhc3MgbmFtZT0icXVlc3Rpb25DaGVja2JveCIgZXh0ZW5kcz0idmlldyIgd2lkdGg9IiRvbmNle3BhcmVudC53aWR0aC00fSIgPgorCTxhdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKwk8YXR0cmlidXRlIG5hbWU9InZhbEJvb2wiICB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisJPGxhYmVsQ2hlY2tib3ggbmFtZT0iaG9sZGRhdGFpblNPIiB4PSIyIiB5PSIwIiAKKwkJdmFsdWU9IiRvbmNle3BhcmVudC52YWxCb29sfSIgdGV4dD0iIiAvPgorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iJG9uY2V7IHBhcmVudC5sYWJlbGlkIH0iIHdpZHRoPSIkb25jZXtwYXJlbnQud2lkdGgtMjR9IgorICAgIAl4PSIxOCIgbXVsdGlsaW5lPSJ0cnVlIiByZXNpemU9ImZhbHNlIj4JCisgICAgCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgIAkJdGhpcy5wYXJlbnQuaG9sZGRhdGFpblNPLm9uY2xpY2suc2VuZEV2ZW50KCk7CisgICAgCTwvaGFuZGxlcj4KKyAgICA8L2xhYmVsVGV4dD4KKzwvY2xhc3M+CisKKzxjbGFzcyBuYW1lPSJlZGl0V2hpdGVib2FyZERlZmF1bHQiIGV4dGVuZHM9ImxhYmVsRXhwbG9yZXJCb3giIGxhYmVsaWQ9IjY2IgorICAgIGRvY2tpbmc9InRydWUiIHJlc2l6ZWFibGU9ImZhbHNlIiBjbG9zYWJsZT0idHJ1ZSIgd2lkdGg9IjQwMCIgeD0iMTAwIiBoZWlnaHQ9IjI0MCI+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJyZWZPYmoiIHZhbHVlPSJudWxsIiAvPgorICAgIAorICAgIDx2aWV3IG5hbWU9Il9zZXR0aW5ncyIgd2lkdGg9IiRvbmNle3BhcmVudC53aWR0aC00fSIgaGVpZ2h0PSIxODAiIHk9IjI0IiBjbGlwPSJ0cnVlIj4KKwkJPHZpZXcgbmFtZT0iaW5uZXIiIHdpZHRoPSIkb25jZXtwYXJlbnQud2lkdGh9IiA+CisJCQk8c2ltcGxlbGF5b3V0IGF4aXM9InkiIHNwYWNpbmc9IjIiIC8+CisJCTwvdmlldz4KKyAgICAJPG9tX3ZzY3JvbGxiYXIgLz4KKyAgICA8L3ZpZXc+CisgICAgPCEtLSAKKyAgICA2MworICAgICAtLT4KKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiID4KKwkJdmFyIGcgPSBjYW52YXMuZ2V0VXNlckRhdGEoKTsKKyAgICAgICAgIGlmIChnWyJpbWFnZSJdPT1udWxsKSB7CisgICAgICAgICAJZ1siaW1hZ2UiXT1uZXcgQXJyYXkoKTsKKyAgICAgICAgIAlnWyJpbWFnZSJdWyJjbGVhckZpZWxkIl09ZmFsc2U7CisgICAgICAgICAJZ1siaW1hZ2UiXVsiYXNrYWdhaW5jbGVhciJdPWZhbHNlOworICAgICAgICAgCWdbImltYWdlIl1bImRvbm90YXNrYWdhaW5yZGMiXT1mYWxzZTsKKyAgICAgICAgIH0KKyAgICAgICAgIHZhciB0ID0gbmV3IGx6LnF1ZXN0aW9uQ2hlY2tib3godGhpcy5fc2V0dGluZ3MuaW5uZXIse25hbWU6ImNsZWFyRmllbGQiLGxhYmVsaWQ6NjMsdmFsQm9vbDpnWyJpbWFnZSJdWyJjbGVhckZpZWxkIl19KTsKKyAgICAgICAgIC8vRGVidWcud3JpdGUoInQ6ICIsdCk7CisgICAgICAgICB0ID0gbmV3IGx6LnF1ZXN0aW9uQ2hlY2tib3godGhpcy5fc2V0dGluZ3MuaW5uZXIse25hbWU6ImFza2FnYWluY2xlYXIiLGxhYmVsaWQ6NjcsdmFsQm9vbDpnWyJpbWFnZSJdWyJhc2thZ2FpbmNsZWFyIl19KTsKKwkJIC8vRGVidWcud3JpdGUoInQ6ICIsdCk7CisJCQorICAgICAgICAgaWYgKGdbIndtbGZpbGUiXT09bnVsbCkgeworICAgICAgICAgCWdbIndtbGZpbGUiXT1uZXcgQXJyYXkoKTsKKyAgICAgICAgIAlnWyJ3bWxmaWxlIl1bImNsZWFyRmllbGQiXT1mYWxzZTsKKyAgICAgICAgIAlnWyJ3bWxmaWxlIl1bImFza2FnYWluY2xlYXIiXT1mYWxzZTsKKyAgICAgICAgIH0KKyAgICAgICAgIHQgPSBuZXcgbHoucXVlc3Rpb25DaGVja2JveCh0aGlzLl9zZXR0aW5ncy5pbm5lcix7bmFtZToiYXNrYWdhaW5jbGVhcndtbCIsbGFiZWxpZDoyMTIsdmFsQm9vbDpnWyJ3bWxmaWxlIl1bImFza2FnYWluY2xlYXIiXX0pOworICAgICAgICAgCisgICAgICAgICB0ID0gbmV3IGx6LnF1ZXN0aW9uQ2hlY2tib3godGhpcy5fc2V0dGluZ3MuaW5uZXIse25hbWU6ImRvbm90YXNrYWdhaW5yZGMiLGxhYmVsaWQ6MTEyNyx2YWxCb29sOmdbImltYWdlIl1bImRvbm90YXNrYWdhaW5yZGMiXX0pOworCQkgCisgICAgICAgICAKKwkJIGlmIChnWyJkb1Nob3dVcGRhdGVQcm9maWxlTWVzc2FnZSJdID09IG51bGwpIHsKKwkJIAluZXcgbHoucXVlc3Rpb25DaGVja2JveCh0aGlzLl9zZXR0aW5ncy5pbm5lcix7bmFtZToiZG9TaG93VXBkYXRlUHJvZmlsZU1lc3NhZ2UiLGxhYmVsaWQ6MTI5OSx2YWxCb29sOmZhbHNlfSk7CisJCSB9IGVsc2UgeworCQkgCW5ldyBsei5xdWVzdGlvbkNoZWNrYm94KHRoaXMuX3NldHRpbmdzLmlubmVyLHtuYW1lOiJkb1Nob3dVcGRhdGVQcm9maWxlTWVzc2FnZSIsbGFiZWxpZDoxMjk5LHZhbEJvb2w6Z1siZG9TaG93VXBkYXRlUHJvZmlsZU1lc3NhZ2UiXX0pOworCQkgfQorICAgICAgICAgCisJCSAKKwkJIC8vRGVidWcud3JpdGUoInQ6ICIsdCk7CisgICAgPC9oYW5kbGVyPiAgICAKKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InN0b3Jlc2V0dGluZ3MiID4KKwkJdmFyIGcgPSBjYW52YXMuZ2V0VXNlckRhdGEoKTsKKwkJCisgICAgICAgICBpZiAoZ1siaW1hZ2UiXT09bnVsbCkgZ1siaW1hZ2UiXT1uZXcgQXJyYXkoKTsKKyAgICAgICAgIGdbImltYWdlIl1bImNsZWFyRmllbGQiXT10aGlzLl9zZXR0aW5ncy5pbm5lci5jbGVhckZpZWxkLmhvbGRkYXRhaW5TTy5nZXRWYWx1ZSgpOworICAgICAgICAgZ1siaW1hZ2UiXVsiYXNrYWdhaW5jbGVhciJdPXRoaXMuX3NldHRpbmdzLmlubmVyLmFza2FnYWluY2xlYXIuaG9sZGRhdGFpblNPLmdldFZhbHVlKCk7CisgICAgICAgICBnWyJpbWFnZSJdWyJkb25vdGFza2FnYWlucmRjIl09dGhpcy5fc2V0dGluZ3MuaW5uZXIuZG9ub3Rhc2thZ2FpbnJkYy5ob2xkZGF0YWluU08uZ2V0VmFsdWUoKTsKKwkJCisgICAgICAgICBpZiAoZ1sid21sZmlsZSJdPT1udWxsKSBnWyJ3bWxmaWxlIl09bmV3IEFycmF5KCk7CisJCS8vYWx3YXlzIHRydWUKKyAgICAgICAgIGdbIndtbGZpbGUiXVsiY2xlYXJGaWVsZCJdPXRydWU7CisgICAgICAgICBnWyJ3bWxmaWxlIl1bImFza2FnYWluY2xlYXIiXT10aGlzLl9zZXR0aW5ncy5pbm5lci5hc2thZ2FpbmNsZWFyd21sLmhvbGRkYXRhaW5TTy5nZXRWYWx1ZSgpOworCQkKKyAgICAgICAgIGdbImRvU2hvd1VwZGF0ZVByb2ZpbGVNZXNzYWdlIl0gPSB0aGlzLl9zZXR0aW5ncy5pbm5lci5kb1Nob3dVcGRhdGVQcm9maWxlTWVzc2FnZS5ob2xkZGF0YWluU08uZ2V0VmFsdWUoKTsKKyAgICAgICAgIAorCSAgICAgY2FudmFzLnNldFVzZXJEYXRhKGcpOworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxzaW1wbGVMYWJlbEJ1dHRvbiBsYWJlbGlkPSI2MSIgd2lkdGg9IjEwMCIgeD0iMjkwIiB5PSIyMTYiPgorICAgIAk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAJCXRoaXMucGFyZW50LmNsb3NlKCk7CisgICAgCTwvaGFuZGxlcj4KKyAgICA8L3NpbXBsZUxhYmVsQnV0dG9uPiAKKyAgICAgICAKKyAgICA8c2ltcGxlTGFiZWxCdXR0b24gbGFiZWxpZD0iNjAiIHdpZHRoPSIxMDAiIHg9IjE4MCIgeT0iMjE2Ij4KKyAgICAJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgCQlwYXJlbnQuc3RvcmVzZXR0aW5ncygpOworICAgIAkJdGhpcy5wYXJlbnQuY2xvc2UoKTsKKyAgICAJPC9oYW5kbGVyPgorICAgIDwvc2ltcGxlTGFiZWxCdXR0b24+ICAgIAorICAgIAorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3BvcHVwcy9lcnJvck1vZGVyYXRvclBvcHVwLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9wb3B1cHMvZXJyb3JNb2RlcmF0b3JQb3B1cC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjYyYWQzMwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9wb3B1cHMvZXJyb3JNb2RlcmF0b3JQb3B1cC5sengKQEAgLTAsMCArMSw0NSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9ImVycm9yTW9kZXJhdG9yUG9wdXAiIGV4dGVuZHM9ImxhYmVsRXhwbG9yZXJCb3giIGxhYmVsaWQ9IjIwNCIKKwlkb2NraW5nPSJ0cnVlIiByZXNpemVhYmxlPSJmYWxzZSIgY2xvc2FibGU9InRydWUiIAorICAgIHdpZHRoPSIyMjQiIHg9IjMwMCIgaGVpZ2h0PSIyMzAiPgorCisJPGF0dHJpYnV0ZSBuYW1lPSJlcnJvciIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorCisJPHZpZXcgeT0iMjQiIHdpZHRoPSIyMTgiIGhlaWdodD0iMTcwIiB4PSIyIiBjbGlwPSJ0cnVlIj4KKwkJPHRleHQgeT0iMzAiIGZvbnRzaXplPSIxMCIgZm9udHN0eWxlPSJib2xkIiB0ZXh0PSIkeyBwYXJlbnQucGFyZW50LmVycm9yIH0iCisJCQltdWx0aWxpbmU9InRydWUiIHdpZHRoPSIxOTAiIC8+CisJCTxvbV92c2Nyb2xsYmFyIC8+CisJPC92aWV3PgorICAgIAorICAgIDxzaW1wbGVMYWJlbEJ1dHRvbiB4PSIyMCIgbGFiZWxpZD0iOTA2IiB5PSIyMDAiIHdpZHRoPSIyMDAiPgorCQk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKwkJCS8vbmV3IGx6LmFwcGx5Rm9yTW9kZXJhdGlvbihjYW52YXMubWFpbl9jb250ZW50Ll9jb250ZW50LmlubmVyKTsKKwkJCWNhbnZhcy50aGlzaGliLmFwcGx5Rm9yTW9kZXJhdGlvbi5kb0NhbGwoKTsKKyAgICAgICAgICAgIHRoaXMucGFyZW50LmNsb3NlKCk7CisJCTwvaGFuZGxlcj4KKyAgICA8L3NpbXBsZUxhYmVsQnV0dG9uPgorCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvcG9wdXBzL2Vycm9yUG9wdXAubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3BvcHVwcy9lcnJvclBvcHVwLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMGUzZmFmZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9wb3B1cHMvZXJyb3JQb3B1cC5sengKQEAgLTAsMCArMSw5OSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9ImVycm9yUG9wdXAiIGV4dGVuZHM9ImxhYmVsRXhwbG9yZXJCb3giIGxhYmVsaWQ9IjIwNCIKKwlkb2NraW5nPSJ0cnVlIiByZXNpemVhYmxlPSJmYWxzZSIgY2xvc2FibGU9InRydWUiIHk9IjEwMCIKKyAgICB4PSIkb25jZXsgcGFyZW50LndpZHRoLzIgLSB0aGlzLndpZHRoLzIgfSIgaGVpZ2h0PSIxNjAiIHdpZHRoPSIzMjQiPgorCisJPGF0dHJpYnV0ZSBuYW1lPSJlcnJvciIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0ibWFrZU1vZGFsIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisJCisJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKwkgICBpZiAodGhpcy5tYWtlTW9kYWwpIHsKKwkgICAgICAgbHouTW9kZU1hbmFnZXIubWFrZU1vZGFsKHRoaXMpOworCSAgIH0KKwk8L2hhbmRsZXI+CisJCisJPGhhbmRsZXIgbmFtZT0ib25jbG9zZSI+CisgICAgICAgaWYgKHRoaXMubWFrZU1vZGFsKSB7CisgICAgICAgICAgIGx6Lk1vZGVNYW5hZ2VyLnJlbGVhc2VBbGwoKTsKKyAgICAgICB9CisgICAgPC9oYW5kbGVyPgorCisJPHZpZXcgeD0iNCIgcmVzb3VyY2U9Indhcm5pbmdfaWNvbl9yc2MiIHk9IjI0IiAvPgorCisJPHZpZXcgeT0iMjQiIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoIC0gNDAgfSIgaGVpZ2h0PSIxMzAiIHg9IjMwIiBjbGlwPSJ0cnVlIj4KKwkJPHRleHQgZm9udHNpemU9IjEwIiBmb250c3R5bGU9ImJvbGQiIHRleHQ9IiR7IHBhcmVudC5wYXJlbnQuZXJyb3IgfSIKKwkJCW11bHRpbGluZT0idHJ1ZSIgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGggLSAxNiB9IiBzZWxlY3RhYmxlPSJ0cnVlIiAvPgorCTwvdmlldz4KKyAgICAKKyAgICA8c2ltcGxlTGFiZWxCdXR0b24gbGFiZWxpZD0iNjQyIiB3aWR0aD0iMTAwIiB4PSIkb25jZXsgcGFyZW50LndpZHRoLTEwNSB9IiAKKyAgICAgICAgICAgeT0iJG9uY2V7IHBhcmVudC5oZWlnaHQtMjQgfSIgCisgICAgICAgICAgIG9uY2xpY2s9InRoaXMucGFyZW50LmNsb3NlKCk7IiAvPgorCis8L2NsYXNzPgorCis8Y2xhc3MgbmFtZT0ibGFiZWxlcnJvclBvcHVwIiBleHRlbmRzPSJlcnJvclBvcHVwIj4KKworICAgIDxhdHRyaWJ1dGUgbmFtZT0iZXJyb3JsYWJlbGlkIiB0eXBlPSJudW1iZXIiIHNldHRlcj0ic2V0RXJyb3JMYWJlbElkKGVycm9ybGFiZWxpZCkiIC8+CisgICAgPG1ldGhvZCBuYW1lPSJzZXRFcnJvckxhYmVsSWQiIGFyZ3M9ImVycm9ybGFiZWxpZCIgPgorICAgICAgICB0aGlzLmVycm9ybGFiZWxpZCA9IGVycm9ybGFiZWxpZDsKKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoImVycm9yIixjYW52YXMuZ2V0TGFiZWxOYW1lKHRoaXMuZXJyb3JsYWJlbGlkKSk7CisgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJsYWJlbGVycm9yUG9wdXA6ICIsY2FudmFzLmdldExhYmVsTmFtZSh0aGlzLmVycm9ybGFiZWxpZCkpOworICAgIDwvbWV0aG9kPgorICAgIAorCis8L2NsYXNzPgorCis8Y2xhc3MgbmFtZT0ic2luZ2xldG9uRXJyb3JQb3B1cCIgZXh0ZW5kcz0iZXJyb3JQb3B1cCI+CisJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKwkJbHouc2luZ2xldG9uRXJyb3JQb3B1cEhvbGRlci5kaWFsb2dQcmVzZW50ID0gMTsKKwkJbHouc2luZ2xldG9uRXJyb3JQb3B1cEhvbGRlci5kaWFsb2dPYmplY3QgPSB0aGlzOworCTwvaGFuZGxlcj4KKwkKKwk8aGFuZGxlciBuYW1lPSJvbmRlc3Ryb3kiPgorCQlsei5zaW5nbGV0b25FcnJvclBvcHVwSG9sZGVyLmRpYWxvZ1ByZXNlbnQgPSAwOworCQlsei5zaW5nbGV0b25FcnJvclBvcHVwSG9sZGVyLmRpYWxvZ09iamVjdCA9IG51bGw7CisJPC9oYW5kbGVyPgorPC9jbGFzcz4KKworPGNsYXNzIG5hbWU9InNpbmdsZXRvbkVycm9yUG9wdXBIb2xkZXIiPgorCTxhdHRyaWJ1dGUgbmFtZT0iZXJyb3IiIHR5cGU9InN0cmluZyIgc2V0dGVyPSJzZXRFcnJvcihlcnJvcikiLz4KKwk8YXR0cmlidXRlIG5hbWU9ImRpYWxvZ1ByZXNlbnQiIGFsbG9jYXRpb249ImNsYXNzIiB2YWx1ZT0iMCIgLz4KKwk8YXR0cmlidXRlIG5hbWU9ImRpYWxvZ09iamVjdCIgYWxsb2NhdGlvbj0iY2xhc3MiIC8+CisJCisJPG1ldGhvZCBuYW1lPSJzZXRFcnJvciIgYXJncz0iZXJyb3IiPgorCQorCQlpZiAoIGx6LnNpbmdsZXRvbkVycm9yUG9wdXBIb2xkZXIuZGlhbG9nUHJlc2VudCA9PSAwICkKKwkJeworCQkJbHouc2luZ2xldG9uRXJyb3JQb3B1cEhvbGRlci5kaWFsb2dQcmVzZW50ID0gMTsKKwkJCWx6LnNpbmdsZXRvbkVycm9yUG9wdXBIb2xkZXIuZGlhbG9nT2JqZWN0ID0gbmV3IGx6LnNpbmdsZXRvbkVycm9yUG9wdXAoY2FudmFzLHtlcnJvcjplcnJvcn0pOworCQl9CisJCWVsc2UKKwkJeworCQkJbHouc2luZ2xldG9uRXJyb3JQb3B1cEhvbGRlci5kaWFsb2dPYmplY3QuZXJyb3IgPSBlcnJvcjsKKwkJfQorCTwvbWV0aG9kPgorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3BvcHVwcy9oZWFkZXJNZW51Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9wb3B1cHMvaGVhZGVyTWVudS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzNkNjkzMgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9wb3B1cHMvaGVhZGVyTWVudS5sengKQEAgLTAsMCArMSwzMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9ImhlYWRlck1lbnUiIGV4dGVuZHM9InZpZXciIGxheW91dD0iYXhpczp4O3NwYWNpbmc6NDtpbnNldDo0IiA+CisJPHRleHQgZm9udHNpemU9IjExIiBmb250c3R5bGU9ImJvbGQiIHRleHQ9IiR7IGNhbnZhcy5maXJzdE5hbWUrJyAnK2NhbnZhcy5sYXN0TmFtZSB9IiByZXNpemU9InRydWUiIC8+CisJCisJPGxhYmVsVGV4dCBsYWJlbGlkPSI1OCIgZm9udHNpemU9IjExIiBmb250c3R5bGU9ImJvbGQiIHJlc2l6ZT0idHJ1ZSIgLz4KKwk8dGV4dCBmb250c2l6ZT0iMTEiIGZvbnRzdHlsZT0iYm9sZCIgdGV4dD0iJHsgY2FudmFzLmN1cnJlbnRjb3Vyc2VOYW1lTG9uZyB9IiByZXNpemU9InRydWUiIC8+CisJCisJPGxhYmVsVGV4dCBsYWJlbGlkPSI1OSIgZm9udHNpemU9IjExIiBmb250c3R5bGU9ImJvbGQiIHJlc2l6ZT0idHJ1ZSIgLz4KKwk8dGV4dCBmb250c2l6ZT0iMTEiIGZvbnRzdHlsZT0iYm9sZCIgdGV4dD0iJHsgY2FudmFzLmN1cnJlbnRsYW5ndWFnZSB9IiByZXNpemU9InRydWUiIC8+Cis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvcG9wdXBzL2luY29taW5nU2NyZWVuU2hhcmluZy5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvcG9wdXBzL2luY29taW5nU2NyZWVuU2hhcmluZy5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGFlOTEwMQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9wb3B1cHMvaW5jb21pbmdTY3JlZW5TaGFyaW5nLmx6eApAQCAtMCwwICsxLDU2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8Y2xhc3MgbmFtZT0iaW5jb21pbmdTY3JlZW5TaGFyaW5nIiBleHRlbmRzPSJsYWJlbEV4cGxvcmVyQm94IiBsYWJlbGlkPSI2NDMiCisgICAgICAgIGRvY2tpbmc9InRydWUiIHJlc2l6ZWFibGU9ImZhbHNlIiBjbG9zYWJsZT0idHJ1ZSIgd2lkdGg9IjI2MCIKKyAgICAgICAgeD0iJG9uY2V7IGNhbnZhcy53aWR0aCAtIHRoaXMud2lkdGggLSAxMCB9IiB5PSIxMCIgaGVpZ2h0PSIxNjAiPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibWVzc2FnZU9iaiIgdmFsdWU9Im51bGwiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJyZWZPYmoiIHZhbHVlPSJudWxsIiAvPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgIHZhciB0U3RyaW5nID0gY2FudmFzLmdldExhYmVsTmFtZSg2NDQpICsgIiAiIAorICAgICAgICAgICAgICAgICsgbWVzc2FnZU9iai5yY2wuZmlyc3ROYW1lICsgIiAiICsgbWVzc2FnZU9iai5yY2wubGFzdE5hbWU7CisgICAgICAgIHRoaXMuX3RleHQuc2V0QXR0cmlidXRlKCJ0ZXh0Iix0U3RyaW5nKTsKKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPGxhYmVsVGV4dCBuYW1lPSJfdGV4dCIgdGV4dD0iIiB4PSIxMCIgeT0iMjIiCisgICAgICAgICAgICB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCAtIDIwIH0iIG11bHRpbGluZT0idHJ1ZSIgcmVzaXplPSJmYWxzZSIvPgorICAgIAorICAgIDxzaW1wbGVMYWJlbEJ1dHRvbiBsYWJlbGlkPSI2NDUiIHdpZHRoPSIxMDAiIAorICAgICAgICAgICAgICAgICAgICAgICB4PSIkb25jZXsgcGFyZW50LndpZHRoIC0gMTA1IH0iIHk9IiRvbmNleyBwYXJlbnQuaGVpZ2h0IC0gMjYgfSI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgbHouQnJvd3Nlci5sb2FkVVJMKHBhcmVudC5nZW5lcmF0ZUZpbGVMaW5rKCksJ19CTEFOSycpOyAgCisgICAgICAgIDwvaGFuZGxlcj4KKyAgICA8L3NpbXBsZUxhYmVsQnV0dG9uPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iZ2VuZXJhdGVGaWxlTGluayI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgcmV0dXJuIGNhbnZhcy5nZXRVcmwoKSArICdSdHBTaGFyZXJTZXJ2bGV0P3B1YmxpY1NJRD0nK3RoaXMubWVzc2FnZU9iai5wdWJsaWNTSUQgKworICAgICAgICAgICAgICAgICAgICAnJnJvb209Jyt0aGlzLm1lc3NhZ2VPYmoucm9vbSArCisgICAgICAgICAgICAgICAgICAgICcmcm9vbV9pZD0nK2hpYi5jdXJyZW50cm9vbWlkICsKKyAgICAgICAgICAgICAgICAgICAgJyZzaWQ9JytjYW52YXMuc2Vzc2lvbklkOyAgCisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3BvcHVwcy9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9wb3B1cHMvbGlicmFyeS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWRhM2E4YgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9wb3B1cHMvbGlicmFyeS5sengKQEAgLTAsMCArMSw0NSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKwkKKwk8IS0tIAorCUZhbUZhbSBJY29uIHNldAorCUNyZWF0aXZlIENvbW1vbnMgMy4wCisJIC0tPgorCTxyZXNvdXJjZSBuYW1lPSJ3YXJuaW5nX2ljb25fcnNjIiBzcmM9InJlc291cmNlcy9lcnJvci5wbmciIC8+CisgICAgCisgICAgPGluY2x1ZGUgaHJlZj0icnBjZXJyb3JEaWFsb2cubHp4IiAvPgorICAgIDxpbmNsdWRlIGhyZWY9ImVycm9yUG9wdXAubHp4IiAvPgorICAgIDxpbmNsdWRlIGhyZWY9Im1lc3NhZ2VXaW4ubHp4IiAvPgorICAgIDxpbmNsdWRlIGhyZWY9ImhlYWRlck1lbnUubHp4IiAvPgorICAgIDxpbmNsdWRlIGhyZWY9ImNvbmZpcm1hdGlvbkJveC5sengiIC8+CisgICAgPGluY2x1ZGUgaHJlZj0iZWRpdFdoaXRlYm9hcmREZWZhdWx0Lmx6eCIgLz4KKwk8aW5jbHVkZSBocmVmPSJjb25maXJtYXRpb25TaW5nbGUubHp4IiAvPgorICAgIDxpbmNsdWRlIGhyZWY9ImF1dG9Mb2FkZXIubHp4IiAvPgorICAgIDxpbmNsdWRlIGhyZWY9ImNvbnZlcnRlclBvcHVwLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJlcnJvck1vZGVyYXRvclBvcHVwLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJzeW5jV2luLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJtZWV0aW5nVGltZXIubHp4IiAvPgorICAgIDxpbmNsdWRlIGhyZWY9ImluY29taW5nU2NyZWVuU2hhcmluZy5sengiIC8+CisgICAgPGluY2x1ZGUgaHJlZj0icmVkaXJlY3RCb3gubHp4IiAvPgorICAgIDxpbmNsdWRlIGhyZWY9ImNob29zZU5pY2tOYW1lLmx6eCIgLz4KKyAgICAKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9wb3B1cHMvbWVldGluZ1RpbWVyLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9wb3B1cHMvbWVldGluZ1RpbWVyLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iY2ZkNGEyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3BvcHVwcy9tZWV0aW5nVGltZXIubHp4CkBAIC0wLDAgKzEsNzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzxjbGFzcyBuYW1lPSJtZWV0aW5nVGltZXIiIGV4dGVuZHM9ImxhYmVsRXhwbG9yZXJCb3giIGxhYmVsaWQ9IjYzOCIKKyAgICAgICAgZG9ja2luZz0idHJ1ZSIgcmVzaXplYWJsZT0iZmFsc2UiIGNsb3NhYmxlPSJmYWxzZSIgd2lkdGg9IjI2MCIKKyAgICAgICAgeD0iJG9uY2V7IGNhbnZhcy53aWR0aCAtIHRoaXMud2lkdGggLSAxMCB9IiB5PSIxMCIgaGVpZ2h0PSIxNjAiPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0icm9vbW9iaiIgdmFsdWU9Im51bGwiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJyZWZPYmoiIHZhbHVlPSJudWxsIiAvPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0iZGVtb1RpbWUiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAgICAgdGhpcy5kVGV4dCA9IGNhbnZhcy5nZXRMYWJlbE5hbWUoNjM5KTsKKyAgICAgICAgdGhpcy5kZW1vVGltZSA9IHRoaXMucm9vbW9iai5kZW1vVGltZTsKKyAgICAgICAgdGhpcy5mYWRlVGV4dChudWxsKTsKKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJmYWRlVGV4dCIgYXJncz0iaXRlbSI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgaWYgKHRoaXMuZGVtb1RpbWUgPiAwKSB7CisgICAgICAgICAgICAgICAgdmFyIG1pbiA9IE1hdGguZmxvb3IodGhpcy5kZW1vVGltZS82MCk7CisgICAgICAgICAgICAgICAgdmFyIHJlc3RTZWNvbmRzID0gdGhpcy5kZW1vVGltZSAtIChtaW4gKiA2MCk7CisgICAgICAgICAgICAgICAgaWYgKHJlc3RTZWNvbmRzIDwgMTApIHsKKyAgICAgICAgICAgICAgICAgICAgcmVzdFNlY29uZHMgPSAiMCIrcmVzdFNlY29uZHM7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHZhciB0U3RyaW5nID0gdGhpcy5kVGV4dCArIG1pbiArICJtaW4gIiArIHJlc3RTZWNvbmRzICsgInNlYyI7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgdGhpcy5fdGV4dC5fdGV4dC5zZXRBdHRyaWJ1dGUoInRleHQiLHRTdHJpbmcpOworICAgICAgICAgICAgICAgIHRoaXMuZGVtb1RpbWUtLTsKKyAgICAgICAgICAgICAgICBsei5UaW1lci5hZGRUaW1lciggbmV3IEx6RGVsZWdhdGUoIHRoaXMsICJmYWRlVGV4dCIgKSwgMTAwMCApOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiREVNTyBJUyBPVkVSICIpOworICAgICAgICAgICAgICAgIGNhbnZhcy5kb0FjdGlvbm1lbnUoJ3F1aXQnKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPCEtLQorICAgIHRoaXMucm9vbW9iai5kZW1vVGltZQorICAgICAtLT4KKyAgICAKKyAgICA8dmlldyBuYW1lPSJfdGV4dCIgeD0iMiIgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGggLTQgfSIgY2xpcD0idHJ1ZSIKKyAgICAgICAgeT0iMjQiIGhlaWdodD0iJG9uY2V7IHBhcmVudC5oZWlnaHQtMjUgfSI+CisgICAgICAgIDxsYWJlbFRleHQgbmFtZT0iX3RleHQiIHRleHQ9IiIgCisgICAgICAgICAgICB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCB9IiBtdWx0aWxpbmU9InRydWUiIHJlc2l6ZT0iZmFsc2UiLz4KKyAgICA8L3ZpZXc+CisKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9wb3B1cHMvbWVzc2FnZVdpbi5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvcG9wdXBzL21lc3NhZ2VXaW4ubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjZWRiMzcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvcG9wdXBzL21lc3NhZ2VXaW4ubHp4CkBAIC0wLDAgKzEsNDEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzxjbGFzcyBuYW1lPSJtZXNzYWdlV2luIiBleHRlbmRzPSJsYWJlbEV4cGxvcmVyQm94IiBsYWJlbGlkPSIxOCIKKyAgICBkb2NraW5nPSJ0cnVlIiByZXNpemVhYmxlPSJmYWxzZSIgY2xvc2FibGU9InRydWUiIAorICAgIHdpZHRoPSI0MDAiIHg9IjEwMCIgaGVpZ2h0PSIyNDAiPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZGVycm9yIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgIAorICAgIDx2aWV3IHg9IjIiIHdpZHRoPSIkeyBwYXJlbnQud2lkdGggLTQgfSIgY2xpcD0idHJ1ZSIKKyAgICAgICAgeT0iMjQiIGhlaWdodD0iJG9uY2V7IHBhcmVudC5oZWlnaHQtNDggfSI+CisgICAgICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iJG9uY2V7IHBhcmVudC5wYXJlbnQubGFiZWxpZGVycm9yIH0iIHdpZHRoPSI0MDAiCisgICAgICAgICAgICB5PSIyMiIgbXVsdGlsaW5lPSJ0cnVlIiByZXNpemU9ImZhbHNlIi8+CisgICAgICAgIDxvbV92c2Nyb2xsYmFyIC8+CisgICAgPC92aWV3PgorCQorICAgIDxzaW1wbGVMYWJlbEJ1dHRvbiBsYWJlbGlkPSIyNSIgd2lkdGg9IjEwMCIgeD0iMjkwIiB5PSIkb25jZXsgcGFyZW50LmhlaWdodC0yMiB9IiAKKyAgICAgICAgb25jbGljaz0idGhpcy5wYXJlbnQuY2xvc2UoKTsiIC8+CisKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9wb3B1cHMvcmVkaXJlY3RCb3gubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3BvcHVwcy9yZWRpcmVjdEJveC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmI3ZWFmNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9wb3B1cHMvcmVkaXJlY3RCb3gubHp4CkBAIC0wLDAgKzEsNzYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisJCis8Y2xhc3MgbmFtZT0icmVkaXJlY3RCb3giIGV4dGVuZHM9ImxhYmVsRXhwbG9yZXJCb3giIGxhYmVsaWQ9IjUwIgorCSAgIHZhbGlnbj0ibWlkZGxlIiBhbGlnbj0iY2VudGVyIgorCSAgIGRvY2tpbmc9InRydWUiIHJlc2l6ZWFibGU9ImZhbHNlIiBjbG9zYWJsZT0iZmFsc2UiIHdpZHRoPSIyNjAiIGhlaWdodD0iMTQwIj4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9InRpbWVyRGVsIiB2YWx1ZT0ibnVsbCIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9Im1heFRpbWUiIHZhbHVlPSI1MDAwIiB0eXBlPSJudW1iZXIiIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJyZWRpcmVjdFVSTCIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorICAgIAorCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisJCWx6Lk1vZGVNYW5hZ2VyLm1ha2VNb2RhbCh0aGlzKTsKKwkJdGhpcy50aW1lckRlbCA9IG5ldyBMekRlbGVnYXRlKCB0aGlzLCAidGltZUxpbmVBY3Rpb24iICk7CisJCXRoaXMudGltZUxpbmVBY3Rpb24oKTsKKwk8L2hhbmRsZXI+CisKKwk8aGFuZGxlciBuYW1lPSJvbmNsb3NlIj4KKwkJbHouTW9kZU1hbmFnZXIucmVsZWFzZSh0aGlzKTsKKwk8L2hhbmRsZXI+CQorCQkKKyAgICA8bWV0aG9kIG5hbWU9InRpbWVMaW5lQWN0aW9uIj4KKyAgICAJPCFbQ0RBVEFbCisgICAgCQorICAgIAkJdmFyIHRTdHJpbmcgPSBjYW52YXMuZ2V0TGFiZWxOYW1lKDEwOTgpOworICAgIAkJdFN0cmluZyArPSAiICIgKyBNYXRoLnJvdW5kKHRoaXMubWF4VGltZS8xMDAwKSArICIgc2VrIjsKKyAgICAJCQorICAgIAkKKwkgICAgCXRoaXMubWVzc2FnZVRleHQuc2V0QXR0cmlidXRlKCJ0ZXh0Iix0U3RyaW5nKTsKKwkgICAgCQorCSAgICAJdGhpcy5tYXhUaW1lIC09IDEwMDA7CisJICAgIAkKKwkgICAgCWlmICh0aGlzLm1heFRpbWUgPj0gMCkgeworCSAgICAJCQorCSAgICAJCWx6LlRpbWVyLmFkZFRpbWVyKCB0aGlzLnRpbWVyRGVsLCAxMDAwICk7CisJICAgIAkJCisJICAgIAl9IGVsc2UgeworCSAgICAJCQorCSAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ0aGlzLnJlZGlyZWN0VVJMICIsdGhpcy5yZWRpcmVjdFVSTCk7CisJICAgICAgICAgICAgcmVkaXJlY3RUb1VybCh0aGlzLnJlZGlyZWN0VVJMLCBudWxsKTsKKwkgICAgCX0KKyAgICAJXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJyZWZPYmoiIHZhbHVlPSJudWxsIiAvPgorICAgIAorCisJPHZpZXcgeD0iNCIgcmVzb3VyY2U9Indhcm5pbmdfaWNvbl9yc2MiIHk9IjI0IiAvPgorCisgICAgPGxhYmVsVGV4dCBuYW1lPSJtZXNzYWdlVGV4dCIgdGV4dD0iIiB5PSIyNCIgCisgICAgCQkgICB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCAtIDQwIH0iCisgICAgCW11bHRpbGluZT0idHJ1ZSIgcmVzaXplPSJmYWxzZSIgeD0iMzAiIC8+CisgICAgCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvcG9wdXBzL3Jlc291cmNlcy9lcnJvci5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvcG9wdXBzL3Jlc291cmNlcy9lcnJvci5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjI4Y2YyZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9wb3B1cHMvcmVzb3VyY2VzL2Vycm9yLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvcG9wdXBzL3JwY2Vycm9yRGlhbG9nLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9wb3B1cHMvcnBjZXJyb3JEaWFsb2cubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjNmMzMDQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvcG9wdXBzL3JwY2Vycm9yRGlhbG9nLmx6eApAQCAtMCwwICsxLDE3MiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKwkKKzxjbGFzcyBuYW1lPSJiYXNlRXJyb3JEaWFsb2ciIGV4dGVuZHM9ImxhYmVsRXhwbG9yZXJCb3giIGxhYmVsaWQ9IjIwNCIKKyAgICBkb2NraW5nPSJ0cnVlIiByZXNpemVhYmxlPSJmYWxzZSIgY2xvc2FibGU9InRydWUiIHdpZHRoPSIzMDAiIAorCXg9IiRvbmNleyBjYW52YXMud2lkdGgvMi10aGlzLndpZHRoLzIgfSIgaGVpZ2h0PSIxMzAiPgorCQorCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgIHRoaXMuYnJpbmdUb0Zyb250KCk7CisgICAgICAgIGx6LkZvY3VzLnNldEZvY3VzKHRoaXMpOworICAgICAgICBpZiAoZXJyb3JpZCAhPSAwKSB7CisJCQl0aGlzLmdldEVycm9yQnlDb2RlLmRvQ2FsbCgpOworCQl9CisgICAgPC9oYW5kbGVyPgorCQorICAgIDxhdHRyaWJ1dGUgbmFtZT0iZXJyb3J0ZXh0IiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJhZGRJbmZvIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJlcnJvcmlkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorCisJPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iZ2V0RXJyb3JCeUNvZGUiIGZ1bmNuYW1lPSJlcnJvcnNlcnZpY2UuZ2V0RXJyb3JCeUNvZGUiIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiA+ICAgICAgCisJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIHBhcmVudC5wYXJlbnQuZXJyb3JpZDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gY2FudmFzLnRoaXNoaWIudXNlcmxhbmc7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCTxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorCQkJPCFbQ0RBVEFbCisgICAgCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImdldEVycm9yQnlDb2RlICIsdmFsdWUpOworICAgIAkJCS8vdGhpcy5wYXJlbnQuZGVzdHJveSgpOworICAgIAkJCXRoaXMucGFyZW50LnNldEF0dHJpYnV0ZSgnZXJyb3J0ZXh0Jyx2YWx1ZS5lcnJtZXNzYWdlKyIgPGJyLz48YnIvPiIrcGFyZW50LmFkZEluZm8pOworICAgIAkJCXRoaXMucGFyZW50LnNldEF0dHJpYnV0ZSgndGl0bGUnLHZhbHVlLmVycm9ydHlwZSk7CisJCQldXT4KKwkJPC9oYW5kbGVyPgorCTwvbmV0UmVtb3RlQ2FsbEhpYj4JCQorCisJPHZpZXcgeD0iNCIgcmVzb3VyY2U9Indhcm5pbmdfaWNvbl9yc2MiIHk9IjI0IiAvPgorCisJPHZpZXcgeT0iMjQiIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoIC0gNDAgfSIgaGVpZ2h0PSIxMzAiIHg9IjMwIiBjbGlwPSJ0cnVlIj4KKwkJPHRleHQgZm9udHNpemU9IjEwIiBmb250c3R5bGU9ImJvbGQiIHRleHQ9IiR7IHBhcmVudC5wYXJlbnQuZXJyb3J0ZXh0IH0iCisJCQltdWx0aWxpbmU9InRydWUiIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoIC0gMTYgfSIgc2VsZWN0YWJsZT0idHJ1ZSIgLz4KKwk8L3ZpZXc+CisJCis8L2NsYXNzPgorCQorPGNsYXNzIG5hbWU9ImVycm9yRGlhbG9nIiBleHRlbmRzPSJiYXNlRXJyb3JEaWFsb2ciPgorCisJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKwkJbHouTW9kZU1hbmFnZXIubWFrZU1vZGFsKHRoaXMpOworCTwvaGFuZGxlcj4KKyAgICA8aGFuZGxlciBuYW1lPSJvbmNsb3NlIj4KKyAgICAgICAgbHouTW9kZU1hbmFnZXIucmVsZWFzZSh0aGlzKTsKKyAgICA8L2hhbmRsZXI+CisJCis8L2NsYXNzPgorCQorPGNsYXNzIG5hbWU9ImNvbnRlbnRTYXZlV2luZG93IiBleHRlbmRzPSJiYXNlRXJyb3JEaWFsb2ciIGxhYmVsaWQ9IjkzNiI+CisJCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJzYXZlT2JqIiB2YWx1ZT0ibnVsbCIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9InJlZk9iaiIgdmFsdWU9Im51bGwiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJwcm9jZXNzTmV4dEluZGV4IiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0iZXJyb3JpZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnZXJyb3JpZCcsMTU0NSk7CisgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdlcnJvcnRleHQnLGNhbnZhcy5nZXRMYWJlbE5hbWUoMTU0NSkpOworICAgICAgICBsei5Nb2RlTWFuYWdlci5tYWtlTW9kYWwodGhpcyk7CisgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJjb250ZW50c2F2ZXdpbmRvd19lcnJvcmlkOiAiLGVycm9yaWQpOworICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiY29udGVudHNhdmV3aW5kb3dfZXJyb3J0ZXh0OiAiLGVycm9ydGV4dCk7CisgICAgICAgIHRoaXMuc3RhcnRTYXZlKCk7CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xvc2UiPgorICAgICAgICBsei5Nb2RlTWFuYWdlci5yZWxlYXNlKHRoaXMpOworICAgIDwvaGFuZGxlcj4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InN0YXJ0U2F2ZSI+CisgICAgCTwhW0NEQVRBWworICAgIAlmb3IgKHZhciBpPTA7aTx0aGlzLnNhdmVPYmoubGVuZ3RoO2krKyl7CisgICAgCQl0aGlzLnNhdmVPYmpbaV0ucHJlcGFyZUNhbGwoKTsKKyAgICAJfQorICAgIAl0aGlzLnByb2Nlc3NOZXh0KCk7CisgICAgCV1dPgorICAgIDwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0iZXJyb3JCeUNvZGUiIGFyZ3M9ImVDb2RlIj4KKwkJdGhpcy5lcnJvcmlkID0gZUNvZGU7CisJCXRoaXMuZ2V0RXJyb3JCeUNvZGUuZG9DYWxsKCk7CisJPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJwcm9jZXNzTmV4dCI+CisgICAgCTwhW0NEQVRBWworICAgIAkvL0RlYnVnLndyaXRlKCJwcm9jZXNzTmV4dDogIix0aGlzLnNhdmVPYmoubGVuZ3RoLHRoaXMucHJvY2Vzc05leHRJbmRleCk7CisgICAgCWlmICh0aGlzLnNhdmVPYmoubGVuZ3RoPnRoaXMucHJvY2Vzc05leHRJbmRleCl7CisgICAgCQl0aGlzLnNhdmVPYmpbdGhpcy5wcm9jZXNzTmV4dEluZGV4XS5yZXR1cm5PYmo9dGhpczsKKyAgICAJCXRoaXMuc2F2ZU9ialt0aGlzLnByb2Nlc3NOZXh0SW5kZXhdLmRvQ2FsbCgpOworICAgIAkJdGhpcy5wcm9jZXNzTmV4dEluZGV4Kys7CisgICAgCX0gZWxzZSB7CisgICAgCQkvL0RlYnVnLndyaXRlKCJ1cGRhdGUgcHJvY2VzcyBjb21wbGV0ZSIpOworICAgIAkJdGhpcy5yZWZPYmoub25zYXZlY29tcGxldGVkLnNlbmRFdmVudCgpOworICAgIAkJdGhpcy5jbG9zZSgpOworICAgIAl9CisgICAgCV1dPgorICAgIDwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0iZG9DYWxsQmFjayI+CisJCXRoaXMuY2xvc2UoKTsKKwk8L21ldGhvZD4KKwkKKyAgICA8c2ltcGxlTGFiZWxCdXR0b24gbmFtZT0iX2J0biIgbGFiZWxpZD0iMzMzIiB3aWR0aD0iMTAwIiB4PSIkb25jZXsgcGFyZW50LndpZHRoLTEwNCB9IiAKKwkJeT0iJG9uY2V7IHBhcmVudC5oZWlnaHQtMjQgfSIgb25jbGljaz0icGFyZW50LmRvQ2FsbEJhY2soKTsiIC8+IAorCQorPC9jbGFzcz4KKwkKKzxjbGFzcyBuYW1lPSJycGNFcnJvckRpYWxvZyIgZXh0ZW5kcz0iZXJyb3JEaWFsb2ciIGhlaWdodD0iMjUwIj4KKwkKKwk8bWV0aG9kIG5hbWU9ImRvQ2FsbEJhY2siPgorCQl0aGlzLmNsb3NlKCk7CisJPC9tZXRob2Q+CisJCisJPGhhbmRsZXIgbmFtZT0ib25jbG9zZSI+CisJCWlmICggY2FudmFzLmZvY3VzT25JdGVtICE9IG51bGwgKQorCQl7CisJCQlsei5Gb2N1cy5zZXRGb2N1cyggY2FudmFzLmZvY3VzT25JdGVtLCB0cnVlICk7CisJCX0KKwk8L2hhbmRsZXI+CisJCisgICAgPHNpbXBsZUxhYmVsQnV0dG9uIG5hbWU9Il9idG4iIGxhYmVsaWQ9IjMzMyIgd2lkdGg9IjEyMCIgeD0iJG9uY2V7IHBhcmVudC53aWR0aC0xMjQgfSIgCisJCXk9IiRvbmNleyBwYXJlbnQuaGVpZ2h0LTI0IH0iIG9uY2xpY2s9InBhcmVudC5kb0NhbGxCYWNrKCk7IiAvPiAKKwkKKzwvY2xhc3M+CisJCis8Y2xhc3MgbmFtZT0iY2FsbGJhY2tScGNFcnJvckRpYWxvZyIgZXh0ZW5kcz0iZXJyb3JEaWFsb2ciCisJY2xvc2FibGU9ImZhbHNlIiAgaGVpZ2h0PSIyNTAiPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0iY2FsbEJhY2tPYmplY3QiIHZhbHVlPSJudWxsIiAvPgorCQorCTxtZXRob2QgbmFtZT0iZG9DYWxsQmFjayI+CisJCXRoaXMuY2FsbEJhY2tPYmplY3Quc2VuZENhbGxCYWNrLnNlbmRFdmVudCgpOworCQl0aGlzLmNsb3NlKCk7CisJPC9tZXRob2Q+CisJCisJPGhhbmRsZXIgbmFtZT0ib25jbG9zZSI+CisJCWlmICggY2FudmFzLmZvY3VzT25JdGVtICE9IG51bGwgKQorCQl7CisJCQlsei5Gb2N1cy5zZXRGb2N1cyggY2FudmFzLmZvY3VzT25JdGVtLCB0cnVlICk7CisJCX0KKwk8L2hhbmRsZXI+CisJCisgICAgPHNpbXBsZUxhYmVsQnV0dG9uIG5hbWU9Il9idG4iIGxhYmVsaWQ9IjMzMyIgd2lkdGg9IjEyMCIgeD0iJG9uY2V7IHBhcmVudC53aWR0aC0xMjQgfSIgCisJCXk9IiRvbmNleyBwYXJlbnQuaGVpZ2h0LTI0IH0iIG9uY2xpY2s9InBhcmVudC5kb0NhbGxCYWNrKCk7IiAvPiAKKwkKKzwvY2xhc3M+CisgICAKKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3BvcHVwcy9zeW5jV2luLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9wb3B1cHMvc3luY1dpbi5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQxYjM4NwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9wb3B1cHMvc3luY1dpbi5sengKQEAgLTAsMCArMSw3NCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKwkKKzxjbGFzcyBuYW1lPSJzeW5jV2luIiBleHRlbmRzPSJsYWJlbFRleHQiIG11bHRpbGluZT0idHJ1ZSIgcmVzaXplPSJmYWxzZSIgCisgICAgICAgd2lkdGg9IjI2MCIgYWxpZ249InJpZ2h0IiB5PSIkeyBwYXJlbnQuaGVpZ2h0IC0gdGhpcy5oZWlnaHQgLSAxMCB9IiAKKyAgICAgICBiZ2NvbG9yPSIweEZGRkZGRiIgZmdjb2xvcj0iMHhGRjMzMDAiPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0icmVmT2JqIiB2YWx1ZT0ibnVsbCIgLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9ImxhYmVsaWRlcnJvciIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgndGV4dCcsY2FudmFzLmdldExhYmVsTmFtZSh0aGlzLmxhYmVsaWRlcnJvcikpOworICAgIDwvaGFuZGxlcj4gICAgCisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJjbG9zZSI+CisgICAgCXRoaXMuZGVzdHJveSgpOworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICB0aGlzLmRlc3Ryb3koKTsKKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJzZXRNZXNzYWdlIiBhcmdzPSJtZXNzIj4KKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3RleHQnLG1lc3MpOworICAgIDwvbWV0aG9kPgorICAgIAorPC9jbGFzcz4KKwkKKzwhLS0KKzxjbGFzcyBuYW1lPSJzeW5jV2luIiBleHRlbmRzPSJsYWJlbEV4cGxvcmVyQm94IiBsYWJlbGlkPSI1NTgiCisgICAgICAgIGRvY2tpbmc9InRydWUiIHJlc2l6ZWFibGU9ImZhbHNlIiBjbG9zYWJsZT0idHJ1ZSIgd2lkdGg9IjI1MCIKKyAgICAgICAgeD0iJG9uY2V7IGNhbnZhcy53aWR0aC8yIC0gdGhpcy53aWR0aC8yIH0iIGhlaWdodD0iMTQwIj4KKyAgICAKKwk8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorCQlsei5Nb2RlTWFuYWdlci5tYWtlTW9kYWwodGhpcyk7CisJPC9oYW5kbGVyPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xvc2UiPgorICAgIAlsei5Nb2RlTWFuYWdlci5yZWxlYXNlKHRoaXMpOworICAgIAljYW52YXMuc3luY1dpbmRvdyA9IG51bGw7CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZGVycm9yIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgIAorICAgIDx2aWV3IHg9IjIiIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoIC00IH0iIGNsaXA9InRydWUiCisgICAgICAgIHk9IjI0IiBoZWlnaHQ9IiRvbmNleyBwYXJlbnQuaGVpZ2h0LTI1IH0iPgorICAgICAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IiRvbmNleyBwYXJlbnQucGFyZW50LmxhYmVsaWRlcnJvciB9IiAKKyAgICAgICAgICAgIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoIH0iIG11bHRpbGluZT0idHJ1ZSIgcmVzaXplPSJmYWxzZSIvPgorICAgIDwvdmlldz4KKworPC9jbGFzcz4KKyAtLT4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3Jlc291cmNlcy9hcnJvd19yZWZyZXNoX3NtYWxsLnBuZyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9yZXNvdXJjZXMvYXJyb3dfcmVmcmVzaF9zbWFsbC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDMwODdkZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9yZXNvdXJjZXMvYXJyb3dfcmVmcmVzaF9zbWFsbC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3Jlc291cmNlcy9zcGVha2luZy5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvcmVzb3VyY2VzL3NwZWFraW5nLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yY2EyMWE3Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3Jlc291cmNlcy9zcGVha2luZy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3Jlc291cmNlcy93ZWJzdGFydF9wbGF5LnBuZyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9yZXNvdXJjZXMvd2Vic3RhcnRfcGxheS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQxMzY4MwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9yZXNvdXJjZXMvd2Vic3RhcnRfcGxheS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3Jlc3RyaWN0ZWQvbGlicmFyeS5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvcmVzdHJpY3RlZC9saWJyYXJ5Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OThlOTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3Jlc3RyaWN0ZWQvbGlicmFyeS5sengKQEAgLTAsMCArMSwyOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKwkKKyAgICA8aW5jbHVkZSBocmVmPSJyZXN0cmljdGVkVXNlckxpc3QubHp4IiAvPgorICAgIDxpbmNsdWRlIGhyZWY9InJlc3RyaWN0ZWRVc2VyTGlzdEl0ZW0ubHp4IiAvPgorICAgIDxpbmNsdWRlIGhyZWY9InJlc3RyaWN0ZWRVc2VyTGlzdElubmVyLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJtb2RlcmF0aW9uTWluaUljb25SZXN0cmljdGVkLmx6eCIgLz4KKyAgICAKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9yZXN0cmljdGVkL21vZGVyYXRpb25NaW5pSWNvblJlc3RyaWN0ZWQubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3Jlc3RyaWN0ZWQvbW9kZXJhdGlvbk1pbmlJY29uUmVzdHJpY3RlZC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTYzYWM4OQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9yZXN0cmljdGVkL21vZGVyYXRpb25NaW5pSWNvblJlc3RyaWN0ZWQubHp4CkBAIC0wLDAgKzEsNDA0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8Y2xhc3MgbmFtZT0ibW9kZXJhdGlvbk1pbmlJY29uUmVzdHJpY3RlZCIgZXh0ZW5kcz0idmlldyIgeT0iMjAiIHg9IjIiIGhlaWdodD0iMTgiPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0iaXNNb2QiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iaXNTdXBlck1vZGVyYXRvciIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIi8+CisJCisJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKwk8IVtDREFUQVsKKwkJdGhpcy5pc01vZCA9IHBhcmVudC5wYXJlbnQuaXNNb2Q7CisJCXRoaXMuaXNTdXBlck1vZGVyYXRvciA9IHBhcmVudC5wYXJlbnQuaXNTdXBlck1vZGVyYXRvcjsKKwkJCisJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCIgOjogbW9kZXJhdGlvbk1pbmlJY29uUmVzdHJpY3RlZCA6LiAiLHRoaXMuaXNNb2QpOworCQkKKwkJaWYgKHRoaXMuaXNNb2QpIHsKKwkJCXRoaXMuX2lzTW9kLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKwkJCXRoaXMuX2lzTW9kQWRkYnV0dG9uLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworCQl9IGVsc2UgeworCQkJdGhpcy5faXNNb2Quc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgICAgICAgICB0aGlzLl9pc01vZEFkZGJ1dHRvbi5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisJCX0KKwkJCisJCWlmICh0aGlzLmlzTW9kKSB7CisJCQl0aGlzLl9jYW5EcmF3LnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKyAgICAgICAgICAgIHRoaXMuX2NhbkRyYXcuaXNBY3RpdmUgPSBmYWxzZTsKKyAgICAgICAgICAgIHRoaXMuX2NhbkRyYXcuc2V0QXR0cmlidXRlKCJzaG93aGFuZGN1cnNvciIsZmFsc2UpOworICAgICAgICAgICAgdGhpcy5fY2FuRHJhdy5fdGV4dC5zZXRBdHRyaWJ1dGUoInRleHQiLGNhbnZhcy5nZXRMYWJlbE5hbWUoNjgxKSk7CisgICAgICAgICAgICB0aGlzLl9jYW5EcmF3TW9kZXJhdG9yLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworCQl9IGVsc2UgeworCQkJaWYgKHBhcmVudC5wYXJlbnQucmVmT2JqLmNhbkRyYXcpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9jYW5EcmF3LnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9jYW5EcmF3LmlzQWN0aXZlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB0aGlzLl9jYW5EcmF3LnNldEF0dHJpYnV0ZSgic2hvd2hhbmRjdXJzb3IiLHRydWUpOworICAgICAgICAgICAgICAgIHRoaXMuX2NhbkRyYXcuX3RleHQuc2V0QXR0cmlidXRlKCJ0ZXh0IixjYW52YXMuZ2V0TGFiZWxOYW1lKDYxMikpOworICAgICAgICAgICAgICAgIHRoaXMuX2NhbkRyYXdNb2RlcmF0b3Iuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRoaXMuX2NhbkRyYXcuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgICAgICAgICAgICAgdGhpcy5fY2FuRHJhd01vZGVyYXRvci5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgICAgICB9CisJCX0KKwkJCisJCWlmICh0aGlzLmlzTW9kKSB7CisJCQl0aGlzLl9hbGxvd1NjcmVlbi5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgICAgICB0aGlzLl9hbGxvd1NjcmVlbi5pc0FjdGl2ZSA9IGZhbHNlOworICAgICAgICAgICAgdGhpcy5fYWxsb3dTY3JlZW4uc2V0QXR0cmlidXRlKCJzaG93aGFuZGN1cnNvciIsZmFsc2UpOworICAgICAgICAgICAgdGhpcy5fYWxsb3dTY3JlZW4uX3RleHQuc2V0QXR0cmlidXRlKCJ0ZXh0IixjYW52YXMuZ2V0TGFiZWxOYW1lKDEwNjkpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5fYWxsb3dSZW1vdGUuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgICAgICAgICAgdGhpcy5fYWxsb3dSZW1vdGUuaXNBY3RpdmUgPSBmYWxzZTsKKyAgICAgICAgICAgIHRoaXMuX2FsbG93UmVtb3RlLnNldEF0dHJpYnV0ZSgic2hvd2hhbmRjdXJzb3IiLGZhbHNlKTsKKyAgICAgICAgICAgIHRoaXMuX2FsbG93UmVtb3RlLl90ZXh0LnNldEF0dHJpYnV0ZSgidGV4dCIsY2FudmFzLmdldExhYmVsTmFtZSgxMDgzKSk7CisKKyAgICAgICAgICAgIHRoaXMuX2FsbG93RXhjbHVzaXZlQXVkaW8uc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgICAgICAgICAgdGhpcy5fYWxsb3dFeGNsdXNpdmVBdWRpby5pc0FjdGl2ZSA9IGZhbHNlOworICAgICAgICAgICAgdGhpcy5fYWxsb3dFeGNsdXNpdmVBdWRpby5zZXRBdHRyaWJ1dGUoInNob3doYW5kY3Vyc29yIixmYWxzZSk7CisgICAgICAgICAgICB0aGlzLl9hbGxvd0V4Y2x1c2l2ZUF1ZGlvLl90ZXh0LnNldEF0dHJpYnV0ZSgidGV4dCIsY2FudmFzLmdldExhYmVsTmFtZSgxMDgzKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuX2RlbnlTY3JlZW4uc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgICAgICAgICB0aGlzLl9kZW55UmVtb3RlLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgICAgICAgICAgdGhpcy5fZGVueUV4Y2x1c2l2ZUF1ZGlvLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworCQl9IGVsc2UgeworCQkJCisJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgicGFyZW50LnBhcmVudC5yZWZPYmouY2FuU2hhcmUgOjogIixwYXJlbnQucGFyZW50LnJlZk9iai5jYW5TaGFyZSk7CisJCQorCQkJaWYgKHBhcmVudC5wYXJlbnQucmVmT2JqLmNhblNoYXJlKSB7CisgICAgCQkJdGhpcy5fYWxsb3dTY3JlZW4uc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgICAgICAgICAgICAgIHRoaXMuX2FsbG93U2NyZWVuLmlzQWN0aXZlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB0aGlzLl9hbGxvd1NjcmVlbi5zZXRBdHRyaWJ1dGUoInNob3doYW5kY3Vyc29yIix0cnVlKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9hbGxvd1NjcmVlbi5fdGV4dC5zZXRBdHRyaWJ1dGUoInRleHQiLGNhbnZhcy5nZXRMYWJlbE5hbWUoMTA2OCkpOworICAgICAgICAgICAgICAgIHRoaXMuX2RlbnlTY3JlZW4uc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisJCQl9IGVsc2UgeworCQkJCXRoaXMuX2FsbG93U2NyZWVuLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworCQkJCXRoaXMuX2RlbnlTY3JlZW4uc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworCQkJfQorCQkJCisJCQlpZiAocGFyZW50LnBhcmVudC5yZWZPYmouY2FuUmVtb3RlKSB7CisgICAgCQkJdGhpcy5fYWxsb3dSZW1vdGUuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgICAgICAgICAgICAgIHRoaXMuX2FsbG93UmVtb3RlLmlzQWN0aXZlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB0aGlzLl9hbGxvd1JlbW90ZS5zZXRBdHRyaWJ1dGUoInNob3doYW5kY3Vyc29yIix0cnVlKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9hbGxvd1JlbW90ZS5fdGV4dC5zZXRBdHRyaWJ1dGUoInRleHQiLGNhbnZhcy5nZXRMYWJlbE5hbWUoMTA3OSkpOworICAgICAgICAgICAgICAgIHRoaXMuX2RlbnlSZW1vdGUuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisJCQl9IGVsc2UgeworCQkJCXRoaXMuX2FsbG93UmVtb3RlLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworCQkJCXRoaXMuX2RlbnlSZW1vdGUuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworCQkJfQorCisgICAgICAgICAgICBpZiAocGFyZW50LnBhcmVudC5yZWZPYmouY2FuR2l2ZUF1ZGlvKSB7CisgICAgCQkJdGhpcy5fYWxsb3dFeGNsdXNpdmVBdWRpby5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgICAgICAgICAgdGhpcy5fYWxsb3dFeGNsdXNpdmVBdWRpby5pc0FjdGl2ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgdGhpcy5fYWxsb3dFeGNsdXNpdmVBdWRpby5zZXRBdHRyaWJ1dGUoInNob3doYW5kY3Vyc29yIix0cnVlKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9hbGxvd0V4Y2x1c2l2ZUF1ZGlvLl90ZXh0LnNldEF0dHJpYnV0ZSgidGV4dCIsY2FudmFzLmdldExhYmVsTmFtZSgxNDI1KSk7CisgICAgICAgICAgICAgICAgdGhpcy5fZGVueUV4Y2x1c2l2ZUF1ZGlvLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgICAgICAgICAgfSBlbHNlIHsKKwkJCQl0aGlzLl9hbGxvd0V4Y2x1c2l2ZUF1ZGlvLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworCQkJCXRoaXMuX2RlbnlFeGNsdXNpdmVBdWRpby5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgICAgICB9CisJCX0KKwkJCisJCWlmIChwYXJlbnQucGFyZW50LnJlZk9iai5pc0Jyb2FkY2FzdGluZykgeworCQkJdGhpcy5fYWxsb3dEZXZpY2Uuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisJCQl0aGlzLl9kZW55RGV2aWNlLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKwkJfSBlbHNlIHsKKwkJCXRoaXMuX2FsbG93RGV2aWNlLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKyAgICAgICAgICAgIHRoaXMuX2RlbnlEZXZpY2Uuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisJCX0KKwkJCisJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJTZXQgbWljTXV0ZWQgIixwYXJlbnQucGFyZW50LnJlZk9iai5taWNNdXRlZCk7CisJCQorCQlpZiAocGFyZW50LnBhcmVudC5yZWZPYmoubWljTXV0ZWQpIHsKKwkJCXRoaXMuX211dGVEZXZpY2Uuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgICAgICAgICB0aGlzLl91bk11dGVEZXZpY2Uuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworCQl9IGVsc2UgeworCQkJdGhpcy5fbXV0ZURldmljZS5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgICAgICB0aGlzLl91bk11dGVEZXZpY2Uuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisJCX0KKwkJCisJCXRoaXMuX3N0YXJ0X3ByaXZhdGVfY2hhdF9yc2Muc2V0QXR0cmlidXRlKCd2aXNpYmxlJworCQkJLCAoY2FudmFzLmN1cnJlbnRSb29tT2JqLmhpZGVDaGF0ID09IG51bGwgfHwgIWNhbnZhcy5jdXJyZW50Um9vbU9iai5oaWRlQ2hhdCkKKwkJCQkmJiBwYXJlbnQucGFyZW50LnJlZk9iai5wdWJsaWNTSUQgIT0gY2FudmFzLnB1YmxpY1NJRCk7CisJXV0+CisJPC9oYW5kbGVyPgorICAgICAgICAKKyAgICA8bWluaUljb25zIG5hbWU9Il9pc01vZCIgeD0iMCIgd2lkdGg9IjE2IiBzaG93aGFuZGN1cnNvcj0idHJ1ZSIKKyAgICAJCSAgIHJlc291cmNlPSJwYXJ0aWNpcGFudHNfaXNNb2RfcnNjIiBoZWlnaHQ9IjE2Ij4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChwYXJlbnQuaXNTdXBlck1vZGVyYXRvcikgeworICAgICAgICAgICAgICAgICAgICBuZXcgbHoubGFiZWxlcnJvclBvcHVwKGNhbnZhcy5tYWluX2NvbnRlbnQuX2NvbnRlbnQuaW5uZXIse2Vycm9ybGFiZWxpZDo4Mzh9KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vaWYgdGhlIGxhYmVsIGlzIHNldCBhbmQgdGhpcyBpcyBhIE1vZGVyYXRvciB0aGVuIHRoaXMgdXNlciBzaG91bGQKKyAgICAgICAgICAgICAgICAvL2FsbG93IHRoZSBjbGljayBldmVudCA9PiB0aGUgY2xpY2sgZXZlbnQgd2lsbCB0cmlnZ2VyCisgICAgICAgICAgICAgICAgLy90aGlzIHVzZXIgYXdheSBmcm9tIGJlZWluZyBhYmxlIHRvIGRyYXcgb24gdGhlIHdoaXRlYm9hcmQKKyAgICAgICAgICAgICAgICBpZiAoY2FudmFzLmlzbW9kZXJhdG9yKSB7CisgICAgICAgICAgICAgICAgICAgIC8vRG8gaXQgCisgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJEbyBSZW1vdmUgSXQiKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudC5wYXJlbnQucGFyZW50LnJlZk9iai5wdWJsaWNTSUQgIT0gY2FudmFzLnB1YmxpY1NJRCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaGliLnJlbW92ZU1vZGVyYXRvci5wdWJsaWNTSURPZk5ld01vZGVyYXRvciA9IHBhcmVudC5wYXJlbnQucGFyZW50LnJlZk9iai5wdWJsaWNTSUQ7CisgICAgICAgICAgICAgICAgICAgICAgICBoaWIucmVtb3ZlTW9kZXJhdG9yLmRvQ2FsbCgpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAJbmV3IGx6LmxhYmVsZXJyb3JQb3B1cChjYW52YXMse2Vycm9ybGFiZWxpZDo2ODJ9KTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDxsYWJlbFRvb2x0aXAgbmFtZT0iX3RleHQiIGxhYmVsaWQ9IjY3NSIgLz4KKyAgICA8L21pbmlJY29ucz4KKyAgICAKKyAgICA8bWluaUljb25zIG5hbWU9Il9pc01vZEFkZGJ1dHRvbiIgb3BhY2l0eT0iMC41IiB4PSIwIiBzaG93aGFuZGN1cnNvcj0idHJ1ZSIKKyAgICAJCSAgIHdpZHRoPSIxNiIgcmVzb3VyY2U9InBhcnRpY2lwYW50c19pc01vZF9yc2MiIGhlaWdodD0iMTYiPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIC8vaWYgdGhlIGxhYmVsIGlzIHNldCBhbmQgdGhpcyBpcyBhIE1vZGVyYXRvciB0aGVuIHRoaXMgdXNlciBzaG91bGQKKyAgICAgICAgICAgICAgICAvL2FsbG93IHRoZSBjbGljayBldmVudCA9PiB0aGUgY2xpY2sgZXZlbnQgd2lsbCB0cmlnZ2VyCisgICAgICAgICAgICAgICAgLy90aGlzIHVzZXIgYXdheSBmcm9tIGJlZWluZyBhYmxlIHRvIGRyYXcgb24gdGhlIHdoaXRlYm9hcmQKKyAgICAgICAgICAgICAgICBpZiAoY2FudmFzLmlzbW9kZXJhdG9yKSB7CisgICAgICAgICAgICAgICAgICAgIC8vRG8gaXQgCisgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJEbyBBZGQgSXQiKTsKKyAgICAgICAgICAgICAgICAgICAgaGliLmFkZE1vZGVyYXRvci5wdWJsaWNTSURPZk5ld01vZGVyYXRvciA9IHBhcmVudC5wYXJlbnQucGFyZW50LnJlZk9iai5wdWJsaWNTSUQ7CisgICAgICAgICAgICAgICAgICAgIGhpYi5hZGRNb2RlcmF0b3IuZG9DYWxsKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGxhYmVsVG9vbHRpcCBuYW1lPSJfdGV4dCIgbGFiZWxpZD0iNjc2IiAvPgorICAgIDwvbWluaUljb25zPgorICAgICAgICAKKyAgICA8bWluaUljb25zIG5hbWU9Il9jYW5EcmF3IiB4PSIyMCIgd2lkdGg9IjE2IiByZXNvdXJjZT0icGFydGljaXBhbnRzX2FsbG93X2RyYXdpbmdfcnNjIgorICAgICAgICAgICAgICAgaGVpZ2h0PSIxNiIgc2hvd2hhbmRjdXJzb3I9ImZhbHNlIiA+CisgICAgCTxhdHRyaWJ1dGUgbmFtZT0iaXNBY3RpdmUiIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIC8vaWYgdGhlIGxhYmVsIGlzIHNldCBhbmQgdGhpcyBpcyBhIE1vZGVyYXRvciB0aGVuIHRoaXMgdXNlciBzaG91bGQKKyAgICAgICAgICAgICAgICAvL2FsbG93IHRoZSBjbGljayBldmVudCA9PiB0aGUgY2xpY2sgZXZlbnQgd2lsbCB0cmlnZ2VyCisgICAgICAgICAgICAgICAgLy90aGlzIHVzZXIgYXdheSBmcm9tIGJlZWluZyBhYmxlIHRvIGRyYXcgb24gdGhlIHdoaXRlYm9hcmQKKyAgICAgICAgICAgICAgICBpZiAoY2FudmFzLmlzbW9kZXJhdG9yICYmIHRoaXMuaXNBY3RpdmUpIHsKKyAgICAgICAgICAgICAgICAgICAgLy9EbyBpdCAKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIkRvIGFkZCBkcmF3IHRvIGl0Iik7CisgICAgICAgICAgICAgICAgICAgIGNhbnZhcy50aGlzaGliLnNldENhbkRyYXcucHVibGljU0lEID0gcGFyZW50LnBhcmVudC5wYXJlbnQucmVmT2JqLnB1YmxpY1NJRDsKKyAgICAgICAgICAgICAgICAgICAgY2FudmFzLnRoaXNoaWIuc2V0Q2FuRHJhdy5jYW5EcmF3ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGNhbnZhcy50aGlzaGliLnNldENhbkRyYXcuZG9DYWxsKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGxhYmVsVG9vbHRpcCBuYW1lPSJfdGV4dCIgbGFiZWxpZD0iNjEyIiAvPgorICAgIDwvbWluaUljb25zPgorICAgIAorICAgIDxtaW5pSWNvbnMgbmFtZT0iX2NhbkRyYXdNb2RlcmF0b3IiIHg9IjIwIiB3aWR0aD0iMTYiIG9wYWNpdHk9IjAuNSIKKyAgICAgICAgICAgICAgIHJlc291cmNlPSJwYXJ0aWNpcGFudHNfYWxsb3dfZHJhd2luZ19yc2MiIGhlaWdodD0iMTYiIHNob3doYW5kY3Vyc29yPSJ0cnVlIj4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICAvL0RvIGl0IAorICAgICAgICAgICAgaWYgKGNhbnZhcy5pc21vZGVyYXRvcikgeworICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJEbyBpdCIpOworICAgICAgICAgICAgICAgIGNhbnZhcy50aGlzaGliLnNldENhbkRyYXcucHVibGljU0lEID0gcGFyZW50LnBhcmVudC5wYXJlbnQucmVmT2JqLnB1YmxpY1NJRDsKKyAgICAgICAgICAgICAgICBjYW52YXMudGhpc2hpYi5zZXRDYW5EcmF3LmNhbkRyYXcgPSB0cnVlOworICAgICAgICAgICAgICAgIGNhbnZhcy50aGlzaGliLnNldENhbkRyYXcuZG9DYWxsKCk7CisgICAgICAgICAgICB9CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSI2MTEiIC8+CisgICAgPC9taW5pSWNvbnM+CisgICAgCisgICAgPG1pbmlJY29ucyBuYW1lPSJfYWxsb3dTY3JlZW4iIHg9IjQwIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIAorICAgICAgICAgICAgICAgcmVzb3VyY2U9InNjcmVlbl9hbGxvd19yc2MiIHNob3doYW5kY3Vyc29yPSJ0cnVlIj4KKyAgICAJPGF0dHJpYnV0ZSBuYW1lPSJpc0FjdGl2ZSIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAJPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIkRlbnkgU2NyZWVuOiAiLHBhcmVudC5wYXJlbnQucGFyZW50LnJlZk9iai5wdWJsaWNTSUQpOworICAgICAgICAgICAgICAgIGlmIChjYW52YXMuaXNtb2RlcmF0b3IgJiYgdGhpcy5pc0FjdGl2ZSkgeworICAgICAgICAgICAgICAgIAljYW52YXMudGhpc2hpYi5zZXRDYW5TaGFyZS5wdWJsaWNTSUQgPSBwYXJlbnQucGFyZW50LnBhcmVudC5yZWZPYmoucHVibGljU0lEOworICAgICAgICAgICAgICAgICAgICBjYW52YXMudGhpc2hpYi5zZXRDYW5TaGFyZS5jYW5TaGFyZSA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBjYW52YXMudGhpc2hpYi5zZXRDYW5TaGFyZS5kb0NhbGwoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8bGFiZWxUb29sdGlwIG5hbWU9Il90ZXh0IiBsYWJlbGlkPSIxMDY4IiAvPgorICAgIDwvbWluaUljb25zPgorICAgIAorICAgIDxtaW5pSWNvbnMgbmFtZT0iX2RlbnlTY3JlZW4iIHg9IjQwIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiICBvcGFjaXR5PSIwLjUiCisgICAgICAgICAgICAgICByZXNvdXJjZT0ic2NyZWVuX2FsbG93X3JzYyIgc2hvd2hhbmRjdXJzb3I9InRydWUiPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJBbGxvdyBTY3JlZW46ICIscGFyZW50LnBhcmVudC5wYXJlbnQucmVmT2JqLnB1YmxpY1NJRCk7CisgICAgICAgICAgICBpZiAoY2FudmFzLmlzbW9kZXJhdG9yKSB7CisgICAgICAgICAgICAgICAgY2FudmFzLnRoaXNoaWIuc2V0Q2FuU2hhcmUucHVibGljU0lEID0gcGFyZW50LnBhcmVudC5wYXJlbnQucmVmT2JqLnB1YmxpY1NJRDsKKyAgICAgICAgICAgICAgICBjYW52YXMudGhpc2hpYi5zZXRDYW5TaGFyZS5jYW5TaGFyZSA9IHRydWU7CisgICAgICAgICAgICAgICAgY2FudmFzLnRoaXNoaWIuc2V0Q2FuU2hhcmUuZG9DYWxsKCk7CisgICAgICAgICAgICB9CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSIxMDY3IiAvPgorICAgIDwvbWluaUljb25zPiAgCisgICAgCisgICAgIDxtaW5pSWNvbnMgbmFtZT0iX2FsbG93UmVtb3RlIiB4PSI2MCIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiAKKyAgICAgICAgICAgICAgIHJlc291cmNlPSJyZW1vdGVfYWxsb3dfcnNjIiBzaG93aGFuZGN1cnNvcj0idHJ1ZSI+CisgICAgCTxhdHRyaWJ1dGUgbmFtZT0iaXNBY3RpdmUiIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgCTwhW0NEQVRBWworICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJEZW55IFNjcmVlbjogIixwYXJlbnQucGFyZW50LnBhcmVudC5yZWZPYmoucHVibGljU0lEKTsKKyAgICAgICAgICAgICAgICBpZiAoY2FudmFzLmlzbW9kZXJhdG9yICYmIHRoaXMuaXNBY3RpdmUpIHsKKyAgICAgICAgICAgICAgICAJY2FudmFzLnRoaXNoaWIuc2V0Q2FuUmVtb3RlLnB1YmxpY1NJRCA9IHBhcmVudC5wYXJlbnQucGFyZW50LnJlZk9iai5wdWJsaWNTSUQ7CisgICAgICAgICAgICAgICAgICAgIGNhbnZhcy50aGlzaGliLnNldENhblJlbW90ZS5jYW5SZW1vdGUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgY2FudmFzLnRoaXNoaWIuc2V0Q2FuUmVtb3RlLmRvQ2FsbCgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDxsYWJlbFRvb2x0aXAgbmFtZT0iX3RleHQiIGxhYmVsaWQ9IjEwNzkiIC8+CisgICAgPC9taW5pSWNvbnM+CisgICAgCisgICAgPG1pbmlJY29ucyBuYW1lPSJfZGVueVJlbW90ZSIgeD0iNjAiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgIG9wYWNpdHk9IjAuNSIKKyAgICAgICAgICAgICAgIHJlc291cmNlPSJyZW1vdGVfYWxsb3dfcnNjIiBzaG93aGFuZGN1cnNvcj0idHJ1ZSI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIkFsbG93IFNjcmVlbjogIixwYXJlbnQucGFyZW50LnBhcmVudC5yZWZPYmoucHVibGljU0lEKTsKKyAgICAgICAgICAgIGlmIChjYW52YXMuaXNtb2RlcmF0b3IpIHsKKyAgICAgICAgICAgICAgICBjYW52YXMudGhpc2hpYi5zZXRDYW5SZW1vdGUucHVibGljU0lEID0gcGFyZW50LnBhcmVudC5wYXJlbnQucmVmT2JqLnB1YmxpY1NJRDsKKyAgICAgICAgICAgICAgICBjYW52YXMudGhpc2hpYi5zZXRDYW5SZW1vdGUuY2FuUmVtb3RlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBjYW52YXMudGhpc2hpYi5zZXRDYW5SZW1vdGUuZG9DYWxsKCk7CisgICAgICAgICAgICB9CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSIxMDc4IiAvPgorICAgIDwvbWluaUljb25zPiAgICAgICAgCisgICAgCisgICAgPG1pbmlJY29ucyBuYW1lPSJfYWxsb3dEZXZpY2UiIHg9IjgwIiB3aWR0aD0iNDAiIGhlaWdodD0iMTYiIAorICAgIAkJICAgcmVzb3VyY2U9ImF2X2FsbG93X3JzYyIgc2hvd2hhbmRjdXJzb3I9InRydWUiPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJBTExPVzogIixwYXJlbnQucGFyZW50LnBhcmVudC5yZWZPYmoucHVibGljU0lEKTsKKyAgICAgICAgICAgIGNhbnZhcy50aGlzaGliLnNldEJyb2FkQ2FzdGluZ0ZsYWcucHVibGljU0lET2ZOZXdNb2RlcmF0b3IgPSBwYXJlbnQucGFyZW50LnBhcmVudC5yZWZPYmoucHVibGljU0lEOworICAgICAgICAgICAgY2FudmFzLnRoaXNoaWIuc2V0QnJvYWRDYXN0aW5nRmxhZy5pc0FsbG93ZWRUb0Jyb2FkQ2FzdEFWID0gdHJ1ZTsKKyAgICAgICAgICAgIGNhbnZhcy50aGlzaGliLnNldEJyb2FkQ2FzdGluZ0ZsYWcuZG9DYWxsKCk7IAorICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iNjgzIiAvPgorICAgIDwvbWluaUljb25zPgorICAgIAorICAgIDxtaW5pSWNvbnMgbmFtZT0iX2RlbnlEZXZpY2UiIHg9IjgwIiB3aWR0aD0iNDAiIGhlaWdodD0iMTYiIHJlc291cmNlPSJhdl9kZW55X3JzYyIgCisgICAJCQkJb3BhY2l0eT0iMC41IiBzaG93aGFuZGN1cnNvcj0idHJ1ZSI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIkFMTE9XOiAiLHBhcmVudC5wYXJlbnQucGFyZW50LnJlZk9iai5wdWJsaWNTSUQpOworICAgICAgICAgICAgY2FudmFzLnRoaXNoaWIuc2V0QnJvYWRDYXN0aW5nRmxhZy5wdWJsaWNTSURPZk5ld01vZGVyYXRvciA9IHBhcmVudC5wYXJlbnQucGFyZW50LnJlZk9iai5wdWJsaWNTSUQ7CisgICAgICAgICAgICBjYW52YXMudGhpc2hpYi5zZXRCcm9hZENhc3RpbmdGbGFnLmlzQWxsb3dlZFRvQnJvYWRDYXN0QVYgPSBmYWxzZTsKKyAgICAgICAgICAgIGNhbnZhcy50aGlzaGliLnNldEJyb2FkQ2FzdGluZ0ZsYWcuZG9DYWxsKCk7IAorICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iNjg0IiAvPgorICAgIDwvbWluaUljb25zPgorICAgIAorICAgIDxtaW5pSWNvbnMgbmFtZT0iX211dGVEZXZpY2UiIHg9IjEyMCIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiByZXNvdXJjZT0ibXV0ZV9idG5fcnNjIiAKKyAgICAJCQkJb3BhY2l0eT0iMC41IiBzaG93aGFuZGN1cnNvcj0idHJ1ZSI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm11dGU6ICIscGFyZW50LnBhcmVudC5wYXJlbnQucmVmT2JqLnB1YmxpY1NJRCk7CisgICAgICAgICAgICBjYW52YXMuX3ZpZGVvY29udGFpbmVyLl92aWRlb3ZpZXdjb250ZW50Lm11dGVTb3VuZChwYXJlbnQucGFyZW50LnBhcmVudC5yZWZPYmoucHVibGljU0lELCB0cnVlKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IjEzODQiIC8+CisgICAgPC9taW5pSWNvbnM+CisgICAgCisgICAgPG1pbmlJY29ucyBuYW1lPSJfdW5NdXRlRGV2aWNlIiB4PSIxMjAiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgcmVzb3VyY2U9InVubXV0ZV9idG5fcnNjIiAKKyAgICAJCSAgIHNob3doYW5kY3Vyc29yPSJ0cnVlIiB2aXNpYmlsaXR5PSJoaWRkZW4iPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ1bm11dGU6ICIscGFyZW50LnBhcmVudC5wYXJlbnQucmVmT2JqLnB1YmxpY1NJRCk7CisgICAgICAgICAgICBjYW52YXMuX3ZpZGVvY29udGFpbmVyLl92aWRlb3ZpZXdjb250ZW50Lm11dGVTb3VuZChwYXJlbnQucGFyZW50LnBhcmVudC5yZWZPYmoucHVibGljU0lELCBmYWxzZSk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSIxMzg1IiAvPgorICAgIDwvbWluaUljb25zPgorCisgICAgPG1pbmlJY29ucyBuYW1lPSJfYWxsb3dFeGNsdXNpdmVBdWRpbyIgeD0iMTM2IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiCisgICAgICAgICAgICAgICByZXNvdXJjZT0icGFydGljaXBhbnRzX2V4Y2x1c2l2ZV9hdWRpb19yc2MiIHNob3doYW5kY3Vyc29yPSJ0cnVlIj4KKyAgICAJPGF0dHJpYnV0ZSBuYW1lPSJpc0FjdGl2ZSIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAJPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIkRlbnkgR2l2ZSBFeGNsdXNpdmUgQXVkaW86ICIscGFyZW50LnBhcmVudC5wYXJlbnQucmVmT2JqLnB1YmxpY1NJRCk7CisgICAgICAgICAgICAgICAgaWYgKGNhbnZhcy5pc21vZGVyYXRvciAmJiB0aGlzLmlzQWN0aXZlKSB7CisgICAgICAgICAgICAgICAgICAgIGNhbnZhcy50aGlzaGliLnNldENhbkdpdmVBdWRpby5zZW5kVmFsdWUocGFyZW50LnBhcmVudC5wYXJlbnQucmVmT2JqLnB1YmxpY1NJRCxmYWxzZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGxhYmVsVG9vbHRpcCBuYW1lPSJfdGV4dCIgbGFiZWxpZD0iMTQyNSIgLz4KKyAgICA8L21pbmlJY29ucz4KKworICAgIDxtaW5pSWNvbnMgbmFtZT0iX2RlbnlFeGNsdXNpdmVBdWRpbyIgeD0iMTM2IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIG9wYWNpdHk9IjAuNSIKKyAgICAgICAgICAgICAgIHJlc291cmNlPSJwYXJ0aWNpcGFudHNfZXhjbHVzaXZlX2F1ZGlvX3JzYyIgc2hvd2hhbmRjdXJzb3I9InRydWUiPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJBbGxvdyBHaXZlIEV4Y2x1c2l2ZSBBdWRpbzogIixwYXJlbnQucGFyZW50LnBhcmVudC5yZWZPYmoucHVibGljU0lEKTsKKyAgICAgICAgICAgIGlmIChjYW52YXMuaXNtb2RlcmF0b3IpIHsKKyAgICAgICAgICAgICAgICBjYW52YXMudGhpc2hpYi5zZXRDYW5HaXZlQXVkaW8uc2VuZFZhbHVlKHBhcmVudC5wYXJlbnQucGFyZW50LnJlZk9iai5wdWJsaWNTSUQsdHJ1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSIxNDI0IiAvPgorICAgIDwvbWluaUljb25zPgorICAgIAorCTxtaW5pSWNvbnMgbmFtZT0iX2tpY2tVc2VyIiB4PSIxNTQiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIKKyAgICAgICAgICAgICAgIHJlc291cmNlPSJraWNrX3VzZXJfcnNjIiBzaG93aGFuZGN1cnNvcj0idHJ1ZSI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAJCisgICAgICAgIAlpZiAocGFyZW50LnBhcmVudC5wYXJlbnQucmVmT2JqLnB1YmxpY1NJRCA9PSBjYW52YXMucHVibGljU0lEKSB7CisJCQkJbmV3IGx6LmxhYmVsZXJyb3JQb3B1cChjYW52YXMubWFpbl9jb250ZW50Ll9jb250ZW50LmlubmVyLHsKKyAgICAgICAgICAgICAJCQkJZXJyb3JsYWJlbGlkOjEyMTQKKyAgICAgICAgCQkJCX0pOworCQkJCXJldHVybjsKKwkJCX0KKyAgICAgICAgCQorICAgICAgICAJaWYgKHBhcmVudC5pc1N1cGVyTW9kZXJhdG9yKSB7CisgICAgICAgICAgICAgICAgbmV3IGx6LmxhYmVsZXJyb3JQb3B1cChjYW52YXMubWFpbl9jb250ZW50Ll9jb250ZW50LmlubmVyLHtlcnJvcmxhYmVsaWQ6MTIxN30pOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgCQorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIlVTRVIgS2ljazogIixwYXJlbnQucGFyZW50LnBhcmVudC5yZWZPYmoucHVibGljU0lEKTsKKyAgICAgICAgICAgIG5ldyBsei5jb25maXJtYXRpb25TaW5nbGUoY2FudmFzLm1haW5fY29udGVudC5fY29udGVudC5pbm5lcix7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxpZDoxMjE2LGxhYmVsaWRlcnJvcjoxMjE1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZk9iajp0aGlzLHNob3dDaGVja0JveDpmYWxzZX0pOworICAgICAgICAgICAgCisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgCisgICAgICAgIDxtZXRob2QgbmFtZT0ic2VuZENvbmZpcm1hdGlvbiIgYXJncz0ieWVzbm8iID4KKyAgICAgICAgICAgIHRoaXMua2lja1VzZXJCeVB1YmxpY1NJRC5wdWJsaWNTSUQgPSBwYXJlbnQucGFyZW50LnBhcmVudC5yZWZPYmoucHVibGljU0lEOworICAgICAgICAgICAgdGhpcy5raWNrVXNlckJ5UHVibGljU0lELmRvQ2FsbCgpOworICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgCisgICAgICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImtpY2tVc2VyQnlQdWJsaWNTSUQiIGZ1bmNuYW1lPSJ1c2Vyc2VydmljZS5raWNrVXNlckJ5UHVibGljU0lEIiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gICAgCisgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9InB1YmxpY1NJRCIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPiAgCisgICAgICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBjYW52YXMuc2Vzc2lvbklkOyA8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnB1YmxpY1NJRDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJraWNrVXNlckJ5UHVibGljU0lEOiAiLHZhbHVlKTsKKyAgICAgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAKKyAgICAgICAgCisgICAgICAgIDxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iMTIxMyIgLz4KKyAgICA8L21pbmlJY29ucz4gICAgICAgICAgICAgIAorICAgIAorCTxtaW5pSWNvbnMgbmFtZT0iX3N0YXJ0X3ByaXZhdGVfY2hhdF9yc2MiIHg9IjE3MiIgeSA9ICIyIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiCisJCXJlc291cmNlPSJzdGFydF9wcml2YXRlX2NoYXRfcnNjIiBzaG93aGFuZGN1cnNvcj0idHJ1ZSI+CisJCQorCQk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKwkJCXZhciByZWZPYmogPSBwYXJlbnQucGFyZW50LnBhcmVudC5yZWZPYmo7CisJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiU3RhcnQgUHJpdmF0ZSBDaGF0OiAiLCByZWZPYmopOworCQkJaWYgKHJlZk9iai5wdWJsaWNTSUQgPT0gY2FudmFzLnB1YmxpY1NJRCkgeworCQkJCW5ldyBsei5sYWJlbGVycm9yUG9wdXAoY2FudmFzLm1haW5fY29udGVudC5fY29udGVudC5pbm5lcgorCQkJCQkse2Vycm9ybGFiZWxpZDoxNDk1fSk7CisJCQkJcmV0dXJuOworCQkJfQorCQkJY2FudmFzLl9jdXJyZW50Q2hhdFBhbmVsLmFkZENoYXQocmVmT2JqKTsKKwkJPC9oYW5kbGVyPgorCQk8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IjE0OTMiIC8+CisJPC9taW5pSWNvbnM+Cis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvcmVzdHJpY3RlZC9yZXN0cmljdGVkVXNlckxpc3QubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3Jlc3RyaWN0ZWQvcmVzdHJpY3RlZFVzZXJMaXN0Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTEzMzk3Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3Jlc3RyaWN0ZWQvcmVzdHJpY3RlZFVzZXJMaXN0Lmx6eApAQCAtMCwwICsxLDMyMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAgICAgICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworIAorPGNsYXNzIG5hbWU9InJlc3RyaWN0ZWRVc2VyTGlzdCIgZXh0ZW5kcz0idmlldyIgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGggfSIgCisgICAgICAgaGVpZ2h0PSIkeyBwYXJlbnQuaGVpZ2h0LTM0IH0iPgorCisgICAgPCEtLS0gaG9sZHMgYSByZWZlcmVuY2VzIHRvIHRoZSB2aWRlb3ZpZXcgd2hpY2ggaXMgYnJvYWRjYXN0aW5nIC0tPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iYnJvYWRDYXN0Vmlld1JlZiIgdmFsdWU9Im51bGwiIC8+CisgICAgCisgICAgPCEtLS0gY29sb3JzIGZvciBlYWNoIHVzZXIgLS0+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJjb2xvckFycmF5IiB2YWx1ZT0ibnVsbCIgLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9ImFsbG93VXNlclF1ZXN0aW9ucyIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CisKKyAgICA8YXR0cmlidXRlIG5hbWU9InNob3dzVmlkZW9JblNlcGFyYXRlQ29tcG9uZW50IiB2YWx1ZT0idHJ1ZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbmFsbG93VXNlclF1ZXN0aW9ucyIgYXJncz0iYm9vbCI+CisgICAgICAgIGlmIChib29sICE9IG51bGwpIHsKKyAgICAgICAgICAgIGlmICghYm9vbCkgeworICAgICAgICAgICAgICAgIHRoaXMuX3BhcnRpY2lwYW50cy5fYXBwbHlBbmRTdGF0dXNJY29ucy5kZXN0cm95KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAgICAgLy9zZXQgbW9kdXMKKyAgICAgICAgY2FudmFzLnRoaXNoaWIubW9kdXMgPSAiYXVkaWVuY2UiOworICAgICAgICAKKyAgICAgICAgLy9zZXQgcmVmZXJlbmNlLCB0aGlzIHJlZmVyZW5jZSB3aWxsIGJlIGNsZWFyZWQgYXQgKm9udGFiY29udGVuY3RsZWF2ZSogZXZlbnQKKyAgICAgICAgY2FudmFzLl92aWRlb2NvbnRhaW5lcj10aGlzOworICAgICAgICAKKyAgICAgICAgLy8gUmVjb25uZWN0IFVzZXIgdG8gaXRzIFJvb20gSWQKKyAgICAgICAgY2FudmFzLnRoaXNoaWIudXNlclNjb3BlID0gY2FudmFzLnRoaXNoaWIuY3VycmVudHJvb21pZDsKKyAgICAgICAgdmFyIHNyYyA9IGhpYi5nZXRVcmwoKTsKKyAgICAgICAgCisgICAgICAgIGlmKCAkZGVidWcgKSBEZWJ1Zy53cml0ZSgidmlkZW9Db250YWluZXI6IGNhbnZhcy50aGlzaGliOiAiLGNhbnZhcy50aGlzaGliLnNyYyxjYW52YXMudGhpc2hpYik7CisgICAgICAgIAorICAgICAgICBpZiAoY2FudmFzLnRoaXNoaWIuc3JjICE9IHNyYykgeworICAgICAgICAgICAgY2FudmFzLnRoaXNoaWIuc2V0QXR0cmlidXRlKCdzcmMnLHNyYyk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhbnZhcy50aGlzaGliLnJlY29ubmVjdGlvbkFjdGlvbiA9IHRydWU7CisgICAgICAgICAgICBjYW52YXMudGhpc2hpYi5yZWNvbm5lY3RPYmpSZWYgPSB0aGlzOworICAgICAgICAgICAgY2FudmFzLnRoaXNoaWIuZGlzY29ubmVjdCgpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy9UaGUgdXNlciBpcyBhbHJlYWR5IGluIHRoZSBjb3JyZWN0IFNjb3BlCisgICAgICAgICAgICB0aGlzLnJlY29ubmVjdFN1Y2Nlc3MoKTsKKyAgICAgICAgfQorICAgIDwvaGFuZGxlcj4KKworICAgIDxjb21tb25WaWRlb0NvbXBvbmVudEFkYXB0ZXIgbmFtZT0iX3ZpZGVvdmlld2NvbnRlbnQiLz4KKworICAgIDxtZXRob2QgbmFtZT0icmVjb25uZWN0U3VjY2VzcyI+CisgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJVc2VyIFJlbG9nZWQgSW4iKTsKKyAgICAgICAgLy9TZW5kIHRvIFNXRjEwIHZpZGVvLWNvbnRhaW5lciB0byBjb25uZWN0IG9uIHRoZSBjb25mZXJlbmNlIHJvb20gdXJsCisgICAgICAgIC8vYW5kIHdhaXQgZm9yIHRoZSBhczNDb25uZWN0aW9uU3VjY2Vzcy1FdmVudAorICAgICAgICB0aGlzLl92aWRlb3ZpZXdjb250ZW50LnJlY29ubmVjdFN1Y2Nlc3MoZmFsc2UpOworICAgIDwvbWV0aG9kPgorCisgICAgPCEtLS0KKyAgICAgICAgV2UgbmVlZCB0byB3YWl0IHRpbGwgdGhlIHZpZGVvLWNvbnRhaW5lciAvIGFzMyBhcHAgaGFzIHRoZSBjb25uZWN0aW9uIGVzdGFibGlzaGVkCisgICAgICAgIG90aGVyd2lzZSBpdCBjYW4gaGFwcGVuIHRoYXQgdGhlIHZpZGVvIHRyaWVzIHRvIHN0YXJ0IHBsYXlpbmcgYmVmb3JlIHRoZSBydG1wLWNvbm5lY3Rpb24KKyAgICAgICAgd2FzIGVzdGFibGlzaGVkCisgICAgIC0tPgorICAgIDxtZXRob2QgbmFtZT0iYXMzQ29ubmVjdGlvblN1Y2Nlc3MiPgorICAgIAlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiYXMzQ29ubmVjdGlvblN1Y2Nlc3MgY29udGludWUgbG9hZGluZyIpOworICAgIAkvL3NldCBkZWZhdWx0IHZhbHVlcyBhbmQgZ2V0IGFscmVhZHkgYXZhaWxpYmxlIHN0cmVhbXMKKyAgICAJLy9pdCBjYW4gaGFwcGVuIHRoYXQgaWYgeW91IGNsaWNrIHRvIGV4aXQgdGhlIHJvb20gdGhlIHZpZXdzIGFyZSBub3QKKyAgICAJLy9ub3QgY2xlYW5lZCB1cCB5ZXQgYW5kIHlvdSByZWNlaXZlIHRoaXMgZXZlbnQgZnJvbSB0aGUgTG9jYWxDb25uZWN0aW9uCisgICAgCWlmICh0aGlzWyJnZXRSb29tTW9kZXJhdG9yc0J5Um9vbUlkIl0pIHsKKyAgICAgICAgICAgIHRoaXMuZ2V0Um9vbU1vZGVyYXRvcnNCeVJvb21JZC5kb0NhbGwoKTsKKyAgICAJfQorICAgIDwvbWV0aG9kPgorCisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iZ2V0Um9vbU1vZGVyYXRvcnNCeVJvb21JZCIgZnVuY25hbWU9ImNvbmZlcmVuY2VzZXJ2aWNlLmdldFJvb21Nb2RlcmF0b3JzQnlSb29tSWQiCisgICAgICAgICAgICAgICAgICAgICAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gIAorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4gICAgCisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gaGliLmN1cnJlbnRyb29taWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZ2V0Um9vbU1vZGVyYXRvcnNCeVJvb21JZDogIix2YWx1ZSk7CisgICAgICAgICAgICAgICAgY2FudmFzLmJlY29tZVN1cGVyTW9kZXJhdG9yID0gZmFsc2U7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgcGFyZW50LnNldFJvb21WYWx1ZXMuYXBwbHlEZWZhdWx0TW9kZXJhdGlvbiA9IGNhbnZhcy5iZWNvbWVtb2RlcmF0b3I7CisgICAgICAgICAgICAgICAgY2FudmFzLmJlY29tZVN1cGVyTW9kZXJhdG9yID0gY2FudmFzLmJlY29tZW1vZGVyYXRvcjsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoIWNhbnZhcy5iZWNvbWVTdXBlck1vZGVyYXRvcikgeworICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTx2YWx1ZS5sZW5ndGg7aSsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZVtpXS51c2VyLnVzZXJfaWQgPT0gY2FudmFzLnVzZXJfaWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuc2V0Um9vbVZhbHVlcy5hcHBseURlZmF1bHRNb2RlcmF0aW9uID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYW52YXMuYmVjb21lU3VwZXJNb2RlcmF0b3IgPSB2YWx1ZVtpXS5pc1N1cGVyTW9kZXJhdG9yOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLmluZm8oIk1ha2UgdGhpcyBVc2VyIHRvIGFuIE1vZGVyYXRvciIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImNhbnZhcy5iZWNvbWVtb2RlcmF0b3I6ICIsY2FudmFzLmJlY29tZW1vZGVyYXRvcik7CisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImNhbnZhcy5iZWNvbWVTdXBlck1vZGVyYXRvcjogIixjYW52YXMuYmVjb21lU3VwZXJNb2RlcmF0b3IpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGNhbnZhcy5jdXJyZW50dXNlcmNvbG9yID0gY2FudmFzLmdldENvbG9yRm9yVXNlcigpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHZhciBvcmdhbmlzYXRpb25faWQgPSAxOworICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoaGliLnVzZXJvYmplY3QpOyAKKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZShoaWIuY3VycmVudGRvbWFpbk9iaik7IAorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChoaWIuY3VycmVudGRvbWFpbk9iaiAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIG9yZ2FuaXNhdGlvbl9pZCA9IGhpYi5jdXJyZW50ZG9tYWluT2JqLm9yZ2FuaXNhdGlvbl9pZAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5zZXRSb29tVmFsdWVzLm9yZ2FuaXNhdGlvbl9pZCA9IG9yZ2FuaXNhdGlvbl9pZDsKKyAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5zZXRSb29tVmFsdWVzLmRvQ2FsbCgpOworICAgICAgICAgICAgCisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPgorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4gICAgIAorCisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0ic2V0Um9vbVZhbHVlcyIgZnVuY25hbWU9InNldFJvb21WYWx1ZXMiIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiA+ICAgCisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iYXBwbHlEZWZhdWx0TW9kZXJhdGlvbiIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorICAgICAgICA8YXR0cmlidXRlIG5hbWU9Im9yZ2FuaXNhdGlvbl9pZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBoaWIuY3VycmVudHJvb21pZDs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5hcHBseURlZmF1bHRNb2RlcmF0aW9uOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gY2FudmFzLmJlY29tZVN1cGVyTW9kZXJhdG9yOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50Lm9yZ2FuaXNhdGlvbl9pZDs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGNhbnZhcy5jdXJyZW50dXNlcmNvbG9yOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0icm9vbVN0YXR1cyI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIC8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJzZXRSb29tVmFsdWVzMTogIix2YWx1ZSk7CisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJzZXRSb29tVmFsdWVzMjogIixoaWIuY3VycmVudHJvb21pZCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIisrKysrKysrKysrKysrKysrIGdldENsaWVudExpc3RTY29wZSA6ICIsdmFsdWUpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAocm9vbVN0YXR1cy5yb29tRnVsbCkgeworICAgICAgICAgICAgICAgIGNhbnZhcy50aGlzaGliLnNob3dGdWxsTWVzc2FnZSA9IHRydWU7CisgICAgICAgICAgICAgICAgY2FudmFzLnRoaXNoaWIuZGlzY29ubmVjdCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAocm9vbVN0YXR1cy5icm93c2VyU3RhdHVzLmJyb3dzZXJJbml0ZWQpIHsKKyAgICAgICAgICAgICAgICB2YXIgdE9iaiA9IG5ldyBPYmplY3QoKTsKKyAgICAgICAgICAgICAgICB0T2JqWzBdID0gIm5ld0Jyb3dzZXJVUkwiOworICAgICAgICAgICAgICAgIHRPYmpbMV0gPSByb29tU3RhdHVzLmJyb3dzZXJTdGF0dXMuY3VycmVudFVSTDsKKyAgICAgICAgICAgICAgICBjYW52YXMuc3RhcnRCcm93c2VyKHRPYmopOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgdmFsdWUgPSByb29tU3RhdHVzLmNsaWVudExpc3Q7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdmFsdWUubGVuZ3RoOyArK2kpeworICAgICAgICAgICAgICAgIGlmICggdmFsdWVbaV0uc3RyZWFtaWQgPT0gY2FudmFzLnN0cmVhbWlkICkgeworICAgICAgICAgICAgICAgICAgICB2YWx1ZVtpXS5zZWxmSXRlbSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5pc0FsbG93ZWRUb0RyYXcgPSB2YWx1ZVtpXS5jYW5EcmF3OworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHZhbHVlW2ldLnNlbGZJdGVtID0gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgLy92YWx1ZVtpXS5sYXN0bmFtZSA9IHZhbHVlW2ldLmxhc3RuYW1lICsgIlQ6ICIgKyB0OworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImdldENsaWVudExpc3RTY29wZSB2YWx1ZTogIix2YWx1ZVtpXSk7CisgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQuYWRkSXRlbUluaXRpYWwodmFsdWVbaV0uY29ubmVjdGVkU2luY2UsdmFsdWVbaV0uaXNNb2QsdmFsdWVbaV0uc3RyZWFtaWQsdmFsdWVbaV0udXNlcm5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJyx2YWx1ZVtpXS5mb3JtYXRlZERhdGUsdmFsdWVbaV0udXNlcnBvcyx2YWx1ZVtpXS51c2VyY29sb3IsdmFsdWVbaV0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAvL3RoaXMgY29udGVudCBtdXN0IGJlIGluaXRlZCBfYWZ0ZXJfIHNldHRpbmcgdGhlIGRlZmF1bHQgdmFsdWVzCisgICAgICAgICAgICBjYW52YXMudGhpc2hpYi5nZXRDdXJyZW50TW9kZXJhdG9yTGlzdC5kb0NhbGwoKTsgCisgICAgICAgICAgICAvL0ZJWE1FIElzc3VlLTEwNzYKKyAgICAgICAgICAgIGNhbnZhcy50aGlzaGliLmNoZWNrTHpSZWNvcmRpbmcuZG9DYWxsKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vUmVuZGVyIGFuZCBTaG93IFVzZXItTGlzdAorICAgICAgICAgICAgcGFyZW50Ll9wYXJ0aWNpcGFudHMuc29ydEFuZFJlbmRlckxpc3QoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGNhbnZhcy5fY3VycmVudENoYXRQYW5lbC52aXNpYmxlKSB7CisJCQkJY2FudmFzLl9jdXJyZW50Q2hhdFBhbmVsLnRvZ2dsZW9wZW4oKTsKKwkJCX0KKwkJXV0+CisgICAgICAgIDwvaGFuZGxlcj4gIAorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4KKworICAgIDwhLS0gaW52b2tlZCBpZiBhbm90aGVyIGNsaWVudCBsb2dzIGludG8gdGhlIHJvb20gCisgICAgYWZ0ZXIgY2hvb3NpbmcgZGV2aWNlcyAtLT4gICAgIAorICAgIDxtZXRob2QgbmFtZT0ic2V0QVZTZXR0aW5nc1RvQ2xpZW50IiBhcmdzPSJyY2wiPgorICAgICAgICB0aGlzLl92aWRlb3ZpZXdjb250ZW50LnNldEFWU2V0dGluZ3NUb0NsaWVudChyY2wpOworICAgIDwvbWV0aG9kPiAKKworICAgIDxtZXRob2QgbmFtZT0iYWRkSXRlbUluaXRpYWwiIGFyZ3M9ImNvbm5lY3RlZFNpbmNlLGlzTW9kLHN0cmVhbWlkLHVzZXJuYW1lLHVzZXJyb29tLGZvcm1hdGVkRGF0ZSxwb3NpdGlvbixjb2xvcixvYmplY3QiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImluaXRpYWxpemVTdHJlYW1zIGFkZEl0ZW06ICIsY29ubmVjdGVkU2luY2UsaXNNb2Qsc3RyZWFtaWQsdXNlcm5hbWUsZm9ybWF0ZWREYXRlKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy9EbyBpbml0IG9ubHkgaW4gY2FzZSB0aGlzIHN0cmVhbSBpcyBOT1QgdGhlIHNhbWUgYXMgd2UgYXJlCisgICAgICAgICAgICBpZiAoc3RyZWFtaWQhPWNhbnZhcy5zdHJlYW1pZCl7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy9kbyBhZGQgb3RoZXJzCisgICAgICAgICAgICAgICAgdGhpcy5fcGFydGljaXBhbnRzLmluaXRpYWxBZGRJdGVtKG9iamVjdCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiPz8/Pz8/Pz8gb2JqZWN0LmlzQnJvYWRjYXN0aW5nIDo6ICIsb2JqZWN0LmlzQnJvYWRjYXN0aW5nKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAob2JqZWN0LmlzQnJvYWRjYXN0aW5nKSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX3ZpZGVvdmlld2NvbnRlbnQuY3JlYXRlVmlkZW8ob2JqZWN0LnB1YmxpY1NJRCwgb2JqZWN0LmZpcnN0bmFtZSsnICcrb2JqZWN0Lmxhc3RuYW1lLCBvYmplY3QuYnJvYWRDYXN0SUQsIG9iamVjdC5hdnNldHRpbmdzLCAtMSwgb2JqZWN0KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICB0aGlzLl92aWRlb3ZpZXdjb250ZW50LmNyZWF0ZVZpZGVvT2JqZWN0KG9iamVjdC5wdWJsaWNTSUQsIGZhbHNlLCAtMSwgb2JqZWN0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vZG8gYWRkIHNlbGYgdG9vCisgICAgICAgICAgICAgICAgdGhpcy5fcGFydGljaXBhbnRzLmluaXRpYWxBZGRJdGVtKG9iamVjdCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgIAorICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKworICAgIDxtZXRob2QgbmFtZT0icmVjZWl2ZUV4Y2x1c2l2ZUF1ZGlvRmxhZyIgYXJncz0icHVibGljU0lEIj4KKyAgICA8IVtDREFUQVsKKyAgICAgICAgdmFyIHZMaXN0ID0gdGhpcy5fcGFydGljaXBhbnRzLl90YWJsZS5yZW5kZXJMaXN0OworICAgICAgICBmb3IgKHZhciBpPTA7aTx2TGlzdC5sZW5ndGg7aSsrKSB7CisgICAgICAgICAgICB2YXIgaXRlbSA9IHZMaXN0W2ldOworICAgICAgICAgICAgdmFyIHJjbCA9IG5ldyBPYmplY3QoKTsKKworICAgICAgICAgICAgcmNsLnB1YmxpY1NJRCA9IGl0ZW0ucHVibGljU0lEOworICAgICAgICAgICAgcmNsLm1pY011dGVkID0gIShwdWJsaWNTSUQgPT0gaXRlbS5wdWJsaWNTSUQpOworICAgICAgICAgICAgY2FudmFzLnNldE11dGVTdGF0dXMocmNsKTsKKyAgICAgICAgfQorICAgIF1dPgorICAgIDwvbWV0aG9kPgorCisKKyAgICA8bWV0aG9kIG5hbWU9ImFkZEl0ZW0iIGFyZ3M9ImNvbm5lY3RlZFNpbmNlLGlzTW9kLHN0cmVhbWlkLHVzZXJuYW1lLHVzZXJyb29tLGZvcm1hdGVkRGF0ZSxwb3NpdGlvbixjb2xvcixvYmplY3QiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJpbml0aWFsaXplU3RyZWFtcyBhZGRJdGVtOiAiLGNvbm5lY3RlZFNpbmNlLGlzTW9kLHN0cmVhbWlkLHVzZXJuYW1lLGZvcm1hdGVkRGF0ZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vRG8gaW5pdCBvbmx5IGluIGNhc2UgdGhpcyBzdHJlYW0gaXMgTk9UIHRoZSBzYW1lIGFzIHdlIGFyZQorICAgICAgICAgICAgaWYgKHN0cmVhbWlkIT1jYW52YXMuc3RyZWFtaWQpeworICAgICAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIj8/Pz8/Pz8/IG9iamVjdC5pc0Jyb2FkY2FzdGluZyA6OiAiLG9iamVjdC5pc0Jyb2FkY2FzdGluZyk7CisKKyAgICAgICAgICAgICAgICB0aGlzLl92aWRlb3ZpZXdjb250ZW50LmNyZWF0ZVZpZGVvKG9iamVjdC5wdWJsaWNTSUQsIG9iamVjdC5maXJzdG5hbWUrJyAnK29iamVjdC5sYXN0bmFtZSwgb2JqZWN0LmJyb2FkQ2FzdElELCBvYmplY3QuYXZzZXR0aW5ncywgLTEsIG9iamVjdCk7CisKKyAgICAgICAgICAgICAgICAvL2RvIGFkZCBvdGhlcnMKKyAgICAgICAgICAgICAgICB0aGlzLl9wYXJ0aWNpcGFudHMuYWRkSXRlbShvYmplY3QpOworCisgICAgICAgICAgICAgICAgLy9yZXR1cm4gbXl2aWRlb2NvbnRhaW5lcjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy9kbyBhZGQgc2VsZiB0b28KKyAgICAgICAgICAgICAgICB0aGlzLl9wYXJ0aWNpcGFudHMuYWRkSXRlbShvYmplY3QpOworICAgICAgICAgICAgfQorICAgICAgICAgICAKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJhZGRDbGllbnRJdGVtIiBhcmdzPSJjb25uZWN0ZWRTaW5jZSxpc01vZCxzdHJlYW1pZCx1c2VybmFtZSxyb29tX2lkLGZvcm1hdGVkRGF0ZSxwb3NpdGlvbixjb2xvcixvYmplY3QiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIiMjIyBpbml0aWFsaXplU3RyZWFtcyBhZGRDbGllbnRJdGVtOiAiLGNvbm5lY3RlZFNpbmNlLGlzTW9kLHN0cmVhbWlkLHVzZXJuYW1lLHJvb21faWQsZm9ybWF0ZWREYXRlKTsKKworICAgICAgICBpZiAoY2FudmFzLnB1YmxpY1NJRCAhPSBvYmplY3QucHVibGljU0lEKXsKKyAgICAgICAgICAgIHRoaXMuX3ZpZGVvdmlld2NvbnRlbnQuY3JlYXRlVmlkZW9PYmplY3Qob2JqZWN0LnB1YmxpY1NJRCwgZmFsc2UsIC0xLCBvYmplY3QpOworICAgICAgICB9CisKKyAgICAgICAgLy9EbyBBZGQgaXQgYW55d2F5CisgICAgICAgIHRoaXMuX3BhcnRpY2lwYW50cy5hZGRJdGVtKG9iamVjdCk7CisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorICAgICAgICAKKyAgICA8IS0tCisgICAgICAgIGludm9rZWQgd2hlbmV2ZXIgYSBVc2VyIHN0YXJ0cyB0byBTdHJlYW0gVmlkZW8gaW4gdGhpcyBSb29tLCAKKyAgICAgICAgaW50ZXJ2aWV3UG9kSWQgaGFzIG9ubHkgYSBtZWFuaW5nIGluIHRoZSBSb29tIFR5cGUgSW50ZXJ2aWV3CisgICAgIC0tPiAgICAgICAgCisgICAgPG1ldGhvZCBuYW1lPSJzdGFydFN0cmVhbSIgYXJncz0icHVibGljU0lELGJyb2FkY2FzdElkLGZpcnN0bmFtZSxsYXN0bmFtZSxpbnRlcnZpZXdQb2RJZCxWV2lkdGgsVkhlaWdodCI+CisgICAgICAgIHRoaXMuX3ZpZGVvdmlld2NvbnRlbnQuc3RhcnRTdHJlYW0ocHVibGljU0lELGJyb2FkY2FzdElkLGZpcnN0bmFtZSxsYXN0bmFtZSxpbnRlcnZpZXdQb2RJZCxWV2lkdGgsVkhlaWdodCk7CisgICAgPC9tZXRob2Q+CisKKyAgICA8bWV0aG9kIG5hbWU9InNldFNwZWFraW5nQnlQb3MiIGFyZ3M9InB1YmxpY1NJRCxib29sIj4KKyAgICAgICAgdGhpcy5fdmlkZW92aWV3Y29udGVudC5zZXRTcGVha2luZ0J5UG9zKHB1YmxpY1NJRCwgYm9vbCk7CisgICAgPC9tZXRob2Q+CisKKyAgICA8bWV0aG9kIG5hbWU9ImNsb3NlU3RyZWFtQ2xpZW50IiBhcmdzPSJwdWJsaWNTSUQiPgorICAgICAgICB0aGlzLl92aWRlb3ZpZXdjb250ZW50LmNsb3NlU3RyZWFtQ2xpZW50KHB1YmxpY1NJRCk7CisgICAgPC9tZXRob2Q+CisKKyAgICA8bWV0aG9kIG5hbWU9InJlc2V0QWxsVmFsdWVzIj4KKyAgICAgICAgdGhpcy5fdmlkZW92aWV3Y29udGVudC5yZXNldEFsbFZhbHVlcygpOworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0icmVtb3ZlVmlkZW9CeVVzZXIiIGFyZ3M9InVzZXJPYmplY3QiPgorICAgICAgICB0aGlzLl92aWRlb3ZpZXdjb250ZW50LnJlbW92ZVZpZGVvQnlVc2VyKHVzZXJPYmplY3QucHVibGljU0lEKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8IS0tLSAKKyAgICAgICAgc3RvcHMgdGhlIHN0cmVhbWluZyBidXQgYW5kIGRlc3Ryb3lzIHRoZSB2aWV3CisgICAgICAgIEBwYXJhbSBpbnQgYnJvYWRjYXN0SWQgYnJvYWRjYXN0SWQKKyAgICAgLS0+CisgICAgPG1ldGhvZCBuYW1lPSJkaXNjb25uZWN0Y2xpZW50IiBhcmdzPSJwdWJsaWNTSUQiPgorICAgICAgICB0aGlzLl92aWRlb3ZpZXdjb250ZW50LmRpc2Nvbm5lY3RjbGllbnQocHVibGljU0lEKTsKKyAgICAgICAgdGhpcy5fcGFydGljaXBhbnRzLmRpc2Nvbm5lY3RjbGllbnQocHVibGljU0lEKTsKKyAgICA8L21ldGhvZD4KKworICAgIDxtZXRob2QgbmFtZT0idXBkYXRlTXV0ZVN0YXR1c1ZpZGVvVmlldyIgYXJncz0icm9vbUNsaWVudCI+CisgICAgICAgIHRoaXMuX3ZpZGVvdmlld2NvbnRlbnQudXBkYXRlTXV0ZVN0YXR1c1ZpZGVvVmlldyhyb29tQ2xpZW50KTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8cmVzdHJpY3RlZFVzZXJMaXN0SW5uZXIgbmFtZT0iX3BhcnRpY2lwYW50cyIgLz4KKyAgICAKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9yZXN0cmljdGVkL3Jlc3RyaWN0ZWRVc2VyTGlzdElubmVyLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9yZXN0cmljdGVkL3Jlc3RyaWN0ZWRVc2VyTGlzdElubmVyLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OTc2NTM0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3Jlc3RyaWN0ZWQvcmVzdHJpY3RlZFVzZXJMaXN0SW5uZXIubHp4CkBAIC0wLDAgKzEsNjMzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8Y2xhc3MgbmFtZT0icmVzdHJpY3RlZFVzZXJMaXN0SW5uZXIiIGV4dGVuZHM9ImJhc2VSb29tSW5uZXJMaXN0IiAgCisgICAgICAgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGggfSIgaGVpZ2h0PSIkeyBwYXJlbnQuaGVpZ2h0IH0iID4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9InNlbGVjdGVkSXRlbSIgdmFsdWU9Im51bGwiIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJsaXN0VHlwZSIgdmFsdWU9ImV2ZW50VXNlckxpc3RUYWJsZSIgdHlwZT0ic3RyaW5nIiAvPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0ic29ydFR5cGUiIHZhbHVlPSJhbHBoYWJldGljYWwiIHR5cGU9InN0cmluZyIgLz4KKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIHRoaXMuaW5pdExpc3QoKTsKKyAgICAgICAgXV0+CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iaW5pdGlhbEFkZEl0ZW0iIGFyZ3M9Im9iamVjdCI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInJlc3RyaWN0ZWRVc2VyTGlzdElubmVyOjppbml0aWFsQWRkSXRlbSA6ICIsb2JqZWN0LnB1YmxpY1NJRCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vQ2hlY2sgZm9yIGR1cGxpY2F0ZXMKKyAgICAgICAgICAgIGlmIChvYmplY3QuaXNTdXBlck1vZGVyYXRvcikgeworICAgICAgICAgICAgICAgIG9iamVjdC5sYXN0bmFtZSArPSAiICoiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAvL0FkZCBpdGVtIHRvIGxpc3QKKyAgICAgICAgICAgIGlmICh0aGlzLl90YWJsZS5yZW5kZXJMaXN0ID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl90YWJsZS5yZW5kZXJMaXN0ID0gbmV3IEFycmF5KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG9iamVjdC5pc1NlbGVjdGVkID0gZmFsc2U7CisgICAgICAgICAgICB0aGlzLl90YWJsZS5yZW5kZXJMaXN0LnB1c2gob2JqZWN0KTsKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgIDxtZXRob2QgbmFtZT0iYWRkSXRlbSIgYXJncz0ib2JqZWN0Ij4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgicmVzdHJpY3RlZFVzZXJMaXN0SW5uZXI6OmFkZEl0ZW06ICIsb2JqZWN0LnB1YmxpY1NJRCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vQ2hlY2sgZm9yIGR1cGxpY2F0ZXMKKyAgICAgICAgICAgIGlmIChvYmplY3QuaXNTdXBlck1vZGVyYXRvcikgeworICAgICAgICAgICAgICAgIG9iamVjdC5sYXN0bmFtZSArPSAiICoiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBvYmplY3Quc2VsZkl0ZW0gPSBmYWxzZTsKKyAgICAgICAgICAgIC8vQWRkIGl0ZW0gdG8gbGlzdAorICAgICAgICAgICAgaWYgKHRoaXMuX3RhYmxlLnJlbmRlckxpc3QgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIHRoaXMuX3RhYmxlLnJlbmRlckxpc3QgPSBuZXcgQXJyYXkoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgb2JqZWN0LmlzU2VsZWN0ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgIHRoaXMuX3RhYmxlLnJlbmRlckxpc3QucHVzaChvYmplY3QpOworICAgICAgICAgICAgdGhpcy5zb3J0VXNlckxpc3QoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5fdGFibGUuc2NoZWR1bGVSZW5kZXJDb250ZW50KCk7CisgICAgICAgICAgICB0aGlzLm1vZGVyYXRpb25QYW5lbC51cGRhdGVJY29ucygpOworICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InNvcnRBbmRSZW5kZXJMaXN0Ij4KKyAgICAgICAgdGhpcy5zb3J0VXNlckxpc3QoKTsKKyAgICAgICAgdGhpcy5fdGFibGUucmVuZGVyQ29udGVudCgpOworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0ic29ydFVzZXJMaXN0Ij4KKyAgICAgICAgPCFbQ0RBVEFbIAorICAgICAgICAgICAgaWYgKHRoaXMuc29ydFR5cGUgPT0gImFscGhhYmV0aWNhbCIpIHsKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiBzb3J0QnlOYW1lKGEsYikgeworICAgICAgICAgICAgICAgICAgICBpZihhLmZpcnN0bmFtZS50b0xvd2VyQ2FzZSgpIDwgYi5maXJzdG5hbWUudG9Mb3dlckNhc2UoKSkgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmKGEuZmlyc3RuYW1lLnRvTG93ZXJDYXNlKCkgPiBiLmZpcnN0bmFtZS50b0xvd2VyQ2FzZSgpKSByZXR1cm4gMTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdGhpcy5fdGFibGUucmVuZGVyTGlzdC5zb3J0KHNvcnRCeU5hbWUpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiBzb3J0QnlTdHJlYW1JZChhLGIpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYoTnVtYmVyKGEuc3RyZWFtaWQpID09IE51bWJlcihiLnN0cmVhbWlkKSkgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYoTnVtYmVyKGEuc3RyZWFtaWQpID4gTnVtYmVyKGIuc3RyZWFtaWQpKSByZXR1cm4gMTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZSByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRoaXMuX3RhYmxlLnJlbmRlckxpc3Quc29ydChzb3J0QnlTdHJlYW1JZCk7CisgICAgICAgICAgICB9CisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iaW5pdExpc3QiPgorICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiaW5pdExpc3QgOjogcmVzdHJpY3RlZFVzZXJMaXN0SW5uZXIiKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImNsZWFyTGlzdCI+CisgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJjbGVhckxpc3QgOjogcmVzdHJpY3RlZFVzZXJMaXN0SW5uZXIiKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImRpc2Nvbm5lY3RjbGllbnQiIGFyZ3M9InB1YmxpY1NJRCI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICBmb3IgKHZhciBpPTA7aTx0aGlzLl90YWJsZS5yZW5kZXJMaXN0Lmxlbmd0aDtpKyspIHsKKyAgICAgICAgICAgICAgIGlmICh0aGlzLl90YWJsZS5yZW5kZXJMaXN0W2ldLnB1YmxpY1NJRCA9PSBwdWJsaWNTSUQpIHsKKyAgICAgICAgICAgICAgICAgICB0aGlzLl90YWJsZS5yZW5kZXJMaXN0LnNwbGljZShpLDEpOworICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgfQorICAgICAgICAgICB9CisgICAgICAgICAgIHRoaXMuX3RhYmxlLnJlbmRlckNvbnRlbnQoKTsKKyAgICAgICAgICAgdGhpcy5tb2RlcmF0aW9uUGFuZWwudXBkYXRlSWNvbnMoKTsKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisJPG1ldGhvZCBuYW1lPSJnZXRVc2VyTGlzdEl0ZW1CeVB1YmxpY1NJRCIgYXJncz0icHVibGljU0lEIj4KKwk8IVtDREFUQVsKKwkJdmFyIHYgPSBudWxsOworCQl2YXIgdkxpc3QgPSB0aGlzLl90YWJsZS5faW5uZXJsaXN0Ll9pbm4uX2lubi5zdWJ2aWV3czsKKwkJZm9yICh2YXIgaSA9IDA7IGkgPCB2TGlzdC5sZW5ndGg7ICsraSkgeworCQkJaWYgKHZMaXN0W2ldLnJlZk9iai5wdWJsaWNTSUQgPT0gcHVibGljU0lEKSB7CisJCQkJdiA9IHZMaXN0W2ldOworCQkJCWJyZWFrOworCQkJfQorCQl9CisJCXJldHVybiB2OworCV1dPgorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDx2aWV3IG5hbWU9InVzZXJTdGF0dXMiIGxheW91dD0iYXhpczp5Ij4KKyAgICAgICAgPHZpZXc+CisgICAgICAgICAgICAgPHZpZXcgcmVzb3VyY2U9InVzZXJzdGF0dXNfbXVsdGlmcmFtZV9yc2MiIGZyYW1lPSIxIiAvPgorICAgICAgICAgICAgIDxsYWJlbFRleHQgeD0iMTYiIGxhYmVsaWQ9IjY3NyIgLz4KKyAgICAgICAgPC92aWV3PgorICAgICAgICA8dmlldz4KKyAgICAgICAgICAgICA8dmlldyByZXNvdXJjZT0idXNlcnN0YXR1c19tdWx0aWZyYW1lX3JzYyIgZnJhbWU9IjIiIC8+CisgICAgICAgICAgICAgPGxhYmVsVGV4dCB4PSIxNiIgbGFiZWxpZD0iNjc4IiAvPgorICAgICAgICA8L3ZpZXc+CisgICAgICAgIDx2aWV3PgorICAgICAgICAgICAgIDx2aWV3IHJlc291cmNlPSJ1c2Vyc3RhdHVzX211bHRpZnJhbWVfcnNjIiBmcmFtZT0iMyIgLz4KKyAgICAgICAgICAgICA8bGFiZWxUZXh0IHg9IjE2IiBsYWJlbGlkPSI2NzkiIC8+CisgICAgICAgIDwvdmlldz4KKyAgICA8L3ZpZXc+CisgICAgCisgICAgPG1vZGVyYXRpb25NaW5pSWNvbnNFdmVudFVzZXJMaXN0IG5hbWU9Il9hcHBseUFuZFN0YXR1c0ljb25zIiB4PSIkb25jZXsgcGFyZW50LndpZHRoLXRoaXMud2lkdGgtMjAgfSIgeT0iMiIgPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmlzbW9kZXJhdG9yIiByZWZlcmVuY2U9ImNhbnZhcyIgYXJncz0ibSI+CisgICAgICAgICAgICB0aGlzLnVwZGF0ZUljb25zKCk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kcmF3QWxsb3dTdGF0dXMiIHJlZmVyZW5jZT0iY2FudmFzIiBhcmdzPSJkcmF3T2JqZWN0Ij4KKyAgICAgICAgICAgIHRoaXMudXBkYXRlSWNvbnMoKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmV4Y2x1c2l2ZUF1ZGlvQWxsb3dTdGF0dXMiIHJlZmVyZW5jZT0iY2FudmFzIiBhcmdzPSJyY2xPYmplY3QiPgorICAgICAgICAgICAgdGhpcy51cGRhdGVJY29ucygpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9ubGFzdEJyb2FkQ2FzdGluZ1VzZXIiIHJlZmVyZW5jZT0iY2FudmFzIiBhcmdzPSJ1c2VyT2JqZWN0Ij4KKyAgICAgICAgICAgIHRoaXMudXBkYXRlSWNvbnMoKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbm1pY011dGVkU3RhdHVzQ2hhbmdlZEl0ZW0iIHJlZmVyZW5jZT0iY2FudmFzIiBhcmdzPSJ1c2VyT2JqZWN0Ij4KKyAgICAgICAgICAgIHRoaXMudXBkYXRlSWNvbnMoKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgIDwvbW9kZXJhdGlvbk1pbmlJY29uc0V2ZW50VXNlckxpc3Q+CisgICAgCisgICAgCisgICAgPHR1cm5PdmVyTGlzdE9yZGVyZWRQYWdlZCBuYW1lPSJfdGFibGUiIHNob3dUb3BCYXI9ImZhbHNlIiB4PSIxIgorICAgICAgICAgICAgIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodC0zMC1wYXJlbnQubW9kZXJhdGlvblBhbmVsLmhlaWdodCB9IiAKKyAgICAgICAgICAgICB5PSIzMCIgaXRlbUhlaWdodD0iNDAiIGxpc3RMYWJlbElkPSIxMDAxIiBoZWFkZXJIZWlnaHQ9IjAiCisgICAgICAgICAgICAgbGlzdEl0ZW1OYW1lPSJyZXN0cmljdGVkVXNlckxpc3RJdGVtIiBzaG93SFNjcm9sbGJhcj0iaGlkZGVuIgorICAgICAgICAgICAgIG11bHRpc2VsZWN0PSJmYWxzZSIgd2lkdGg9IjI2OCI+CisgICAgICAgIAorICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRTZWxlY3RlZEluZGV4IiB2YWx1ZT0ibnVsbCIgLz4KKyAgICAgICAgCisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0icmVzaXplRGVsZWdhdGUiIHZhbHVlPSJudWxsIi8+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0icmVzaXplRGVsZWdhdGVTdGFydGVkIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iLz4KKyAgICAgICAgCisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iaXNMb2FkZWQiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIvPgorICAgICAgICAKKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJyZW5kZXJEZWxlZ2F0ZSIgdmFsdWU9Im51bGwiLz4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJyZW5kZXJEZWxlZ2F0ZVN0YXJ0ZWQiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIvPgorICAgICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25oZWlnaHQiIGFyZ3M9ImgiPgorICAgICAgICAJaWYgKHRoaXMuaXNMb2FkZWQpIHsKKyAgICAgICAgCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiaXNMb2FkZWQgVHJ1ZSBvbmhlaWdodCAiLGgpOworICAgICAgICAgICAgCWlmICghdGhpcy5yZXNpemVEZWxlZ2F0ZVN0YXJ0ZWQpIHsKKyAgICAgICAgICAgIAkJdGhpcy5yZXNpemVEZWxlZ2F0ZVN0YXJ0ZWQgPSB0cnVlOworICAgICAgICAgICAgCQlsei5UaW1lci5hZGRUaW1lciggdGhpcy5yZXNpemVEZWxlZ2F0ZSwgMTAwMCApOworICAgICAgICAgICAgCX0gZWxzZSB7CisgICAgICAgICAgICAJCWx6LlRpbWVyLnJlc2V0VGltZXIoIHRoaXMucmVzaXplRGVsZWdhdGUsIDEwMDAgKTsKKyAgICAgICAgICAgIAl9CisgICAgICAgIAl9CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgIAl0aGlzLnJlc2l6ZURlbGVnYXRlID0gbmV3IEx6RGVsZWdhdGUoIHRoaXMsICJyZW5kZXJCeUhlaWdodENoYW5nZSIgKTsKKyAgICAgICAgCXRoaXMucmVuZGVyRGVsZWdhdGUgPSBuZXcgTHpEZWxlZ2F0ZSggdGhpcywgInJlbmRlckJ5TmV3VXNlciIgKTsKKyAgICAgICAgICAgIHRoaXMuYWRkSGVhZGVySXRlbSgxMDAxLDI2MCk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgCisgICAgICAgIDxtZXRob2QgbmFtZT0ic2NoZWR1bGVSZW5kZXJDb250ZW50Ij4KKyAgICAgICAgCWlmICgkZGVidWcpIERlYnVnLndhcm4oInNjaGVkdWxlUmVuZGVyQ29udGVudCAiKTsKKyAgICAgICAgCWlmICghdGhpcy5yZW5kZXJEZWxlZ2F0ZVN0YXJ0ZWQpIHsKKyAgICAgICAgICAgICAgICB0aGlzLnJlbmRlckRlbGVnYXRlU3RhcnRlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgbHouVGltZXIuYWRkVGltZXIoIHRoaXMucmVuZGVyRGVsZWdhdGUsIDEwMDAgKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAJaWYgKCRkZWJ1ZykgRGVidWcud2FybigiTW9yZSB0aGVuIG9uZSB1c2VyIHdhcyBhcnJpdmluZyB3aXRoaW4gMSBTZWNvbmQgLSBQb3N0cG9uZSB0aGUgUmVuZGVyaW5nIHRvIHByZXZlbnQgdG9vIG11Y2ggcmVsb2FkaW5nIik7CisgICAgICAgICAgICAgICAgbHouVGltZXIucmVzZXRUaW1lciggdGhpcy5yZW5kZXJEZWxlZ2F0ZSwgMTAwMCApOworICAgICAgICAgICAgfQorICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgCisgICAgICAgIDxtZXRob2QgbmFtZT0icmVuZGVyQnlOZXdVc2VyIiBhcmdzPSJyZWZPYmoiPgorICAgICAgICAJdGhpcy5yZW5kZXJEZWxlZ2F0ZVN0YXJ0ZWQgPSBmYWxzZTsKKyAgICAgICAgCXRoaXMucmVuZGVyQ29udGVudCgpOworICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgCisgICAgICAgIDxtZXRob2QgbmFtZT0icmVuZGVyQnlIZWlnaHRDaGFuZ2UiIGFyZ3M9InJlZk9iaiI+CisgICAgICAgIAkKKyAgICAgICAgCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCIuLjo6IHJlbmRlckJ5SGVpZ2h0Q2hhbmdlIDo6Li4iLHJlZk9iaik7CisgICAgICAgIAkKKyAgICAgICAgCWx6LlRpbWVyLnJlbW92ZVRpbWVyKCB0aGlzLnJlc2l6ZURlbGVnYXRlICk7CisgICAgICAgIAl0aGlzLnJlc2l6ZURlbGVnYXRlU3RhcnRlZCA9IGZhbHNlOworICAgICAgICAJCisgICAgICAgIAl0aGlzLmNsZWFyTGlzdCgpOworICAgICAgICAJdGhpcy5faW5uZXJsaXN0Ll9pbm4uaW5pdEl0ZW1zKHRoaXMubGlzdEl0ZW1OYW1lKTsKKyAgICAgICAgCQorICAgICAgICAJdGhpcy5yZW5kZXJDb250ZW50KCk7CisgICAgICAgIDwvbWV0aG9kPgorICAgICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGlja2VkSXRlbSIgYXJncz0icmVmT2JqIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbmNsaWNrZWRJdGVtICIscmVmT2JqKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50U2VsZWN0ZWRJbmRleCAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyTGlzdFt0aGlzLmN1cnJlbnRTZWxlY3RlZEluZGV4XVsiaXNzZWxlY3RlZCJdID0gZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFNlbGVjdGVkSW5kZXggPSByZWZPYmouaXRlbUlkOworICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyTGlzdFtyZWZPYmouaXRlbUlkXVsiaXNzZWxlY3RlZCJdID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB2YXIgbGlzdCA9IHRoaXMuX2lubmVybGlzdC5faW5uLl9pbm47CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8bGlzdC5zdWJ2aWV3cy5sZW5ndGg7aSsrKXsKKyAgICAgICAgICAgICAgICAgICAgbGlzdC5zdWJ2aWV3c1tpXS5kZXNlbGVjdCgpOworICAgICAgICAgICAgICAgICAgICBsaXN0LnN1YnZpZXdzW2ldLmhpZGVNb2RlcmF0b3JJY29ucygpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICByZWZPYmouc2VsZWN0KCk7CisgICAgICAgICAgICAgICAgcmVmT2JqLmluaXRNb2RlcmF0b3JJY29ucygpOworICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgCisgICAgICAgIDxtZXRob2QgbmFtZT0icmVuZGVyQ29udGVudCI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB2YXIgbGlzdCA9IHRoaXMuX2lubmVybGlzdC5faW5uLl9pbm47CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVuZGVyTGlzdCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgCXRoaXMucmVuZGVyTGlzdCA9IG5ldyBBcnJheSgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvL3RoaXMucmVuZGVyTGlzdCA9IHJlY29yZHM7CisgICAgICAgICAgICAgICAgdmFyIHJlY29yZHMgPSB0aGlzLnJlbmRlckxpc3Q7CisgICAgICAgICAgICAgICAgdGhpcy5faW5uZXJsaXN0Ll9pbm4uc2V0QXR0cmlidXRlKCJ5IiwwKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9pbm5lcmxpc3QuX2lubi5faW5uLnNldEF0dHJpYnV0ZSgiaGVpZ2h0IixyZWNvcmRzLmxlbmd0aCp0aGlzLml0ZW1IZWlnaHQpOworICAgICAgICAgICAgICAgIHRoaXMuX2lubmVybGlzdC5faW5uLnJlc2V0SXRlbXMoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiOjogcmVuZGVyQ29udGVudCA6OiIsdGhpcy5yZW5kZXJMaXN0Lmxlbmd0aCxsaXN0LnN1YnZpZXdzLmxlbmd0aCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgdGhpcy5fcmVjb3Jkcy5zZXRBdHRyaWJ1dGUoInRleHQiLHJlY29yZHMubGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTxsaXN0LnN1YnZpZXdzLmxlbmd0aDtpKyspeworICAgICAgICAgICAgICAgICAgICBpZiAocmVjb3Jkcy5sZW5ndGggPiBpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Quc3Vidmlld3NbaV0uc2V0QXR0cmlidXRlKCJjbGlja2FibGUiLHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5zdWJ2aWV3c1tpXS5yZWZPYmogPSByZWNvcmRzW2ldOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVjb3Jkc1tpXVsiaXNzZWxlY3RlZCJdICYmIHJlY29yZHNbaV0uaXNzZWxlY3RlZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Quc3Vidmlld3NbaV0uaXNzZWxlY3RlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5zdWJ2aWV3c1tpXS5vbm1vdXNlb3V0LnNlbmRFdmVudCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Quc3Vidmlld3NbaV0uaW5pdE1vZGVyYXRvckljb25zKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Quc3Vidmlld3NbaV0uaXNzZWxlY3RlZCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Quc3Vidmlld3NbaV0ub25tb3VzZW91dC5zZW5kRXZlbnQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnN1YnZpZXdzW2ldLmhpZGVNb2RlcmF0b3JJY29ucygpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnN1YnZpZXdzW2ldLnNldEF0dHJpYnV0ZSgidXNlcl9pZCIscmVjb3Jkc1tpXS51c2VyX2lkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Quc3Vidmlld3NbaV0uc2V0QXR0cmlidXRlKCJmaXJzdG5hbWUiLHJlY29yZHNbaV0uZmlyc3RuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Quc3Vidmlld3NbaV0uc2V0QXR0cmlidXRlKCJpc1N1cGVyTW9kZXJhdG9yIixyZWNvcmRzW2ldLmlzU3VwZXJNb2RlcmF0b3IpOworICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5zdWJ2aWV3c1tpXS5zZXRBdHRyaWJ1dGUoImxhc3RuYW1lIixyZWNvcmRzW2ldLmxhc3RuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Quc3Vidmlld3NbaV0uc2V0QXR0cmlidXRlKCJjb25uZWN0ZWRTaW5jZSIscmVjb3Jkc1tpXS5jb25uZWN0ZWRTaW5jZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnN1YnZpZXdzW2ldLnNldEF0dHJpYnV0ZSgiY2FuRHJhdyIscmVjb3Jkc1tpXS5jYW5EcmF3KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Quc3Vidmlld3NbaV0uc2V0QXR0cmlidXRlKCJjYW5TaGFyZSIscmVjb3Jkc1tpXS5jYW5TaGFyZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnN1YnZpZXdzW2ldLnNldEF0dHJpYnV0ZSgiY2FuUmVtb3RlIixyZWNvcmRzW2ldLmNhblJlbW90ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnN1YnZpZXdzW2ldLnNldEF0dHJpYnV0ZSgiY2FuR2l2ZUF1ZGlvIixyZWNvcmRzW2ldLmNhbkdpdmVBdWRpbyk7CisgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnN1YnZpZXdzW2ldLnNldEF0dHJpYnV0ZSgibWljTXV0ZWQiLHJlY29yZHNbaV0ubWljTXV0ZWQpOworICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5zdWJ2aWV3c1tpXS5zZXRBdHRyaWJ1dGUoImlzTW9kIixyZWNvcmRzW2ldLmlzTW9kKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Quc3Vidmlld3NbaV0uaXNCcm9hZGNhc3RpbmcgPSByZWNvcmRzW2ldLmlzQnJvYWRjYXN0aW5nOworICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5zdWJ2aWV3c1tpXS5zZXRBdHRyaWJ1dGUoInNlbGZJdGVtIixyZWNvcmRzW2ldLnNlbGZJdGVtKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Quc3Vidmlld3NbaV0uc3RyZWFtaWQgPSByZWNvcmRzW2ldLnN0cmVhbWlkOworICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5zdWJ2aWV3c1tpXS5zZXRBdHRyaWJ1dGUoInVzZXJuYW1lIixyZWNvcmRzW2ldLnVzZXJuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Quc3Vidmlld3NbaV0uc2V0QXR0cmlidXRlKCJmb3JtYXRlZERhdGUiLHJlY29yZHNbaV0uZm9ybWF0ZWREYXRlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5zdWJ2aWV3c1tpXS5zZXRBdHRyaWJ1dGUoIml0ZW1JZCIsaSk7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5zdWJ2aWV3c1tpXS5yZWZPYmogPSBudWxsOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnN1YnZpZXdzW2ldLmlzc2VsZWN0ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Quc3Vidmlld3NbaV0ub25tb3VzZW91dC5zZW5kRXZlbnQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Quc3Vidmlld3NbaV0uaGlkZU1vZGVyYXRvckljb25zKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Quc3Vidmlld3NbaV0uc2V0QXR0cmlidXRlKCJ1c2VyX2lkIiwiIik7CisgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnN1YnZpZXdzW2ldLnNldEF0dHJpYnV0ZSgiZmlyc3RuYW1lIiwiIik7CisgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnN1YnZpZXdzW2ldLnNldEF0dHJpYnV0ZSgiaXNTdXBlck1vZGVyYXRvciIsIiIpOworICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5zdWJ2aWV3c1tpXS5zZXRBdHRyaWJ1dGUoImxhc3RuYW1lIiwiIik7CisgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnN1YnZpZXdzW2ldLnNldEF0dHJpYnV0ZSgiY29ubmVjdGVkU2luY2UiLCIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Quc3Vidmlld3NbaV0uc2V0QXR0cmlidXRlKCJjYW5EcmF3IixmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnN1YnZpZXdzW2ldLnNldEF0dHJpYnV0ZSgiY2FuU2hhcmUiLGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Quc3Vidmlld3NbaV0uc2V0QXR0cmlidXRlKCJjYW5SZW1vdGUiLGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Quc3Vidmlld3NbaV0uc2V0QXR0cmlidXRlKCJjYW5HaXZlQXVkaW8iLGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Quc3Vidmlld3NbaV0uc2V0QXR0cmlidXRlKCJtaWNNdXRlZCIsZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5zdWJ2aWV3c1tpXS5zZXRBdHRyaWJ1dGUoImlzTW9kIixmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnN1YnZpZXdzW2ldLmlzQnJvYWRjYXN0aW5nID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnN1YnZpZXdzW2ldLnNldEF0dHJpYnV0ZSgic2VsZkl0ZW0iLGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Quc3Vidmlld3NbaV0uc3RyZWFtaWQgPSAiIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Quc3Vidmlld3NbaV0uc2V0QXR0cmlidXRlKCJ1c2VybmFtZSIsIiIpOworICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5zdWJ2aWV3c1tpXS5zZXRBdHRyaWJ1dGUoImZvcm1hdGVkRGF0ZSIsIiIpOworICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5zdWJ2aWV3c1tpXS5zZXRBdHRyaWJ1dGUoIml0ZW1JZCIsIiIpOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnN1YnZpZXdzW2ldLnNldEF0dHJpYnV0ZSgiY2xpY2thYmxlIixmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9tZXRob2Q+ICAgCisgICAgICAgIAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvblNjcm9sbEl0ZW0iIGFyZ3M9Iml0ZW0iPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVuZGVyTGlzdC5sZW5ndGggPiBpdGVtLml0ZW1JZCkgeworICAgICAgICAgICAgICAgICAgICBpdGVtLnNldEF0dHJpYnV0ZSgiY2xpY2thYmxlIix0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgaXRlbS5yZWZPYmogPSB0aGlzLnJlbmRlckxpc3RbaXRlbS5pdGVtSWRdOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVuZGVyTGlzdFtpdGVtLml0ZW1JZF1bImlzc2VsZWN0ZWQiXSAmJiB0aGlzLnJlbmRlckxpc3RbaXRlbS5pdGVtSWRdLmlzc2VsZWN0ZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uaXNzZWxlY3RlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm9ubW91c2VvdXQuc2VuZEV2ZW50KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmluaXRNb2RlcmF0b3JJY29ucygpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5pc3NlbGVjdGVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm9ubW91c2VvdXQuc2VuZEV2ZW50KCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmhpZGVNb2RlcmF0b3JJY29ucygpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZShpdGVtLml0ZW1JZCx0aGlzLnJlbmRlckxpc3RbaXRlbS5pdGVtSWRdLmlzTW9kLHRoaXMucmVuZGVyTGlzdFtpdGVtLml0ZW1JZF0ucHVibGljU0lEKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGl0ZW0uc2V0QXR0cmlidXRlKCJ1c2VyX2lkIix0aGlzLnJlbmRlckxpc3RbaXRlbS5pdGVtSWRdLnVzZXJfaWQpOworICAgICAgICAgICAgICAgICAgICBpdGVtLnNldEF0dHJpYnV0ZSgiZmlyc3RuYW1lIix0aGlzLnJlbmRlckxpc3RbaXRlbS5pdGVtSWRdLmZpcnN0bmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGl0ZW0uc2V0QXR0cmlidXRlKCJpc1N1cGVyTW9kZXJhdG9yIix0aGlzLnJlbmRlckxpc3RbaXRlbS5pdGVtSWRdLmlzU3VwZXJNb2RlcmF0b3IpOworICAgICAgICAgICAgICAgICAgICBpdGVtLnNldEF0dHJpYnV0ZSgibGFzdG5hbWUiLHRoaXMucmVuZGVyTGlzdFtpdGVtLml0ZW1JZF0ubGFzdG5hbWUpOworICAgICAgICAgICAgICAgICAgICBpdGVtLnNldEF0dHJpYnV0ZSgiY29ubmVjdGVkU2luY2UiLHRoaXMucmVuZGVyTGlzdFtpdGVtLml0ZW1JZF0uY29ubmVjdGVkU2luY2UpOworICAgICAgICAgICAgICAgICAgICBpdGVtLnNldEF0dHJpYnV0ZSgiY2FuRHJhdyIsdGhpcy5yZW5kZXJMaXN0W2l0ZW0uaXRlbUlkXS5jYW5EcmF3KTsKKyAgICAgICAgICAgICAgICAgICAgaXRlbS5zZXRBdHRyaWJ1dGUoImNhblNoYXJlIix0aGlzLnJlbmRlckxpc3RbaXRlbS5pdGVtSWRdLmNhblNoYXJlKTsKKyAgICAgICAgICAgICAgICAgICAgaXRlbS5zZXRBdHRyaWJ1dGUoImNhblJlbW90ZSIsdGhpcy5yZW5kZXJMaXN0W2l0ZW0uaXRlbUlkXS5jYW5SZW1vdGUpOworICAgICAgICAgICAgICAgICAgICBpdGVtLnNldEF0dHJpYnV0ZSgiY2FuR2l2ZUF1ZGlvIix0aGlzLnJlbmRlckxpc3RbaXRlbS5pdGVtSWRdLmNhbkdpdmVBdWRpbyk7CisgICAgICAgICAgICAgICAgICAgIGl0ZW0uc2V0QXR0cmlidXRlKCJtaWNNdXRlZCIsdGhpcy5yZW5kZXJMaXN0W2l0ZW0uaXRlbUlkXS5taWNNdXRlZCk7CisgICAgICAgICAgICAgICAgICAgIGl0ZW0uaXNCcm9hZGNhc3RpbmcgPSB0aGlzLnJlbmRlckxpc3RbaXRlbS5pdGVtSWRdLmlzQnJvYWRjYXN0aW5nOworICAgICAgICAgICAgICAgICAgICBpdGVtLnNldEF0dHJpYnV0ZSgiaXNNb2QiLHRoaXMucmVuZGVyTGlzdFtpdGVtLml0ZW1JZF0uaXNNb2QpOworICAgICAgICAgICAgICAgICAgICBpdGVtLnNldEF0dHJpYnV0ZSgic2VsZkl0ZW0iLHRoaXMucmVuZGVyTGlzdFtpdGVtLml0ZW1JZF0uc2VsZkl0ZW0pOworICAgICAgICAgICAgICAgICAgICBpdGVtLnN0cmVhbWlkID0gdGhpcy5yZW5kZXJMaXN0W2l0ZW0uaXRlbUlkXS5zdHJlYW1pZDsKKyAgICAgICAgICAgICAgICAgICAgaXRlbS5zZXRBdHRyaWJ1dGUoInVzZXJuYW1lIix0aGlzLnJlbmRlckxpc3RbaXRlbS5pdGVtSWRdLnVzZXJuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgaXRlbS5zZXRBdHRyaWJ1dGUoImZvcm1hdGVkRGF0ZSIsdGhpcy5yZW5kZXJMaXN0W2l0ZW0uaXRlbUlkXS5mb3JtYXRlZERhdGUpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaXRlbS5zZXRBdHRyaWJ1dGUoIml0ZW1JZCIsaXRlbS5pdGVtSWQpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaXRlbS51cGRhdGVJY29uQnlNb2RTY3JvbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIGl0ZW0uaXNzZWxlY3RlZCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICBpdGVtLm9ubW91c2VvdXQuc2VuZEV2ZW50KCk7CisgICAgICAgICAgICAgICAgICAgIGl0ZW0uaGlkZU1vZGVyYXRvckljb25zKCk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpdGVtLnJlZk9iaiA9IG51bGw7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpdGVtLnNldEF0dHJpYnV0ZSgidXNlcl9pZCIsIiIpOworICAgICAgICAgICAgICAgICAgICBpdGVtLnNldEF0dHJpYnV0ZSgiZmlyc3RuYW1lIiwiIik7CisgICAgICAgICAgICAgICAgICAgIGl0ZW0uc2V0QXR0cmlidXRlKCJpc1N1cGVyTW9kZXJhdG9yIiwiIik7CisgICAgICAgICAgICAgICAgICAgIGl0ZW0uc2V0QXR0cmlidXRlKCJsYXN0bmFtZSIsIiIpOworICAgICAgICAgICAgICAgICAgICBpdGVtLnNldEF0dHJpYnV0ZSgiY29ubmVjdGVkU2luY2UiLCIiKTsKKyAgICAgICAgICAgICAgICAgICAgaXRlbS5zZXRBdHRyaWJ1dGUoImNhbkRyYXciLGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgaXRlbS5zZXRBdHRyaWJ1dGUoImNhblNoYXJlIixmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIGl0ZW0uc2V0QXR0cmlidXRlKCJjYW5SZW1vdGUiLGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgaXRlbS5zZXRBdHRyaWJ1dGUoImNhbkdpdmVBdWRpbyIsZmFsc2UpOworICAgICAgICAgICAgICAgICAgICBpdGVtLnNldEF0dHJpYnV0ZSgibWljTXV0ZWQiLGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgaXRlbS5zZXRBdHRyaWJ1dGUoImlzTW9kIixmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIGl0ZW0uaXNCcm9hZGNhc3RpbmcgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgaXRlbS5zZXRBdHRyaWJ1dGUoInNlbGZJdGVtIixmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIGl0ZW0uc3RyZWFtaWQgPSAiIgorICAgICAgICAgICAgICAgICAgICBpdGVtLnNldEF0dHJpYnV0ZSgidXNlcm5hbWUiLCIiKTsKKyAgICAgICAgICAgICAgICAgICAgaXRlbS5zZXRBdHRyaWJ1dGUoImZvcm1hdGVkRGF0ZSIsIiIpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaXRlbS5zZXRBdHRyaWJ1dGUoIml0ZW1JZCIsIiIpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaXRlbS5zZXRBdHRyaWJ1dGUoImNsaWNrYWJsZSIsZmFsc2UpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIAorICAgIDwvdHVybk92ZXJMaXN0T3JkZXJlZFBhZ2VkPiAKKyAgICAgICAKKyAgICA8dmlldyBuYW1lPSJtb2RlcmF0aW9uUGFuZWwiIGNsaXA9InRydWUiIAorICAgICAgICAgIGhlaWdodD0iJHsgKGNhbnZhcy5pc21vZGVyYXRvcikgPyA0MCA6IDAgfSIKKyAgICAgICAgICB5PSIkeyBwYXJlbnQuaGVpZ2h0IC0gdGhpcy5oZWlnaHQgLSAyIH0iPgorICAgICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25pc21vZGVyYXRvciIgcmVmZXJlbmNlPSJjYW52YXMiIGFyZ3M9Im0iPgorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIiMjIyMjIyBpc21vZGVyYXRvciAiLG0pOworICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVJY29ucygpOworICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9ubWljTXV0ZWRTdGF0dXNDaGFuZ2VkSXRlbSIgcmVmZXJlbmNlPSJjYW52YXMiIGFyZ3M9InJvb21DbGllbnRPYmoiPgorICAgICAgICAJPCFbQ0RBVEFbCisgICAgICAgIAkKKyAgICAgICAgCSAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCIgOjogb25taWNNdXRlZFN0YXR1c0NoYW5nZWRJdGVtIDo6ICIscm9vbUNsaWVudE9iai5taWNNdXRlZCk7CisgICAgICAgIAkgICAKKyAgICAgICAgICAgICAgICB2YXIgdkxpc3QgPSBwYXJlbnQuX3RhYmxlLnJlbmRlckxpc3Q7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8dkxpc3QubGVuZ3RoO2krKykgeworICAgICAgICAgICAgICAgICAgICAvL3ZMaXN0W2ldLnVwZGF0ZUljb25CeU1vZCgpOworICAgICAgICAgICAgICAgICAgICBpZiAodkxpc3RbaV0ucHVibGljU0lEID09IHJvb21DbGllbnRPYmoucHVibGljU0lEKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuX3RhYmxlLnJlbmRlckxpc3RbaV0ubWljTXV0ZWQgPSByb29tQ2xpZW50T2JqLm1pY011dGVkOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgIAkgICAKKyAgICAgICAgCSAgIC8vc2VhcmNoIGZvciB0aGUgdXNlciBhbmQgdXBkYXRlIGl0cyBkcmF3U3RhdHVzSWNvbgorICAgICAgICAgICAgICAgIHZhciB2TGlzdCA9IHBhcmVudC5fdGFibGUuX2lubmVybGlzdC5faW5uLl9pbm4uc3Vidmlld3M7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8dkxpc3QubGVuZ3RoO2krKykgeworICAgICAgICAgICAgICAgICAgICAvL3ZMaXN0W2ldLnVwZGF0ZUljb25CeU1vZCgpOworICAgICAgICAgICAgICAgICAgICBpZiAodkxpc3RbaV0ucmVmT2JqLnB1YmxpY1NJRCA9PSByb29tQ2xpZW50T2JqLnB1YmxpY1NJRCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdkxpc3RbaV0ucmVmT2JqLm1pY011dGVkID0gcm9vbUNsaWVudE9iai5taWNNdXRlZDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZMaXN0W2ldLm1pY011dGVkID0gcm9vbUNsaWVudE9iai5taWNNdXRlZDsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZMaXN0W2ldLnVwZGF0ZU1vZGVyYXRvckljb25zKCk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgCSAgIAorCisgICAgICAgICAgICAgICAgcGFyZW50Ll9hcHBseUFuZFN0YXR1c0ljb25zLnVwZGF0ZUljb25zKCk7CisgICAgICAgIAkgICAKKyAgICAgICAgCV1dPgorICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRyYXdBbGxvd1N0YXR1cyIgcmVmZXJlbmNlPSJjYW52YXMiIGFyZ3M9ImRyYXdPYmplY3QiPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiIDo6IG9uZHJhd0FsbG93U3RhdHVzIDo6ICIsZHJhd09iamVjdC5jYW5EcmF3KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgCXZhciB2TGlzdCA9IHBhcmVudC5fdGFibGUucmVuZGVyTGlzdDsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTx2TGlzdC5sZW5ndGg7aSsrKSB7CisgICAgICAgICAgICAgICAgICAgIC8vdkxpc3RbaV0udXBkYXRlSWNvbkJ5TW9kKCk7CisgICAgICAgICAgICAgICAgICAgIGlmICh2TGlzdFtpXS5wdWJsaWNTSUQgPT0gZHJhd09iamVjdC5wdWJsaWNTSUQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5fdGFibGUucmVuZGVyTGlzdFtpXS5jYW5EcmF3ID0gZHJhd09iamVjdC5jYW5EcmF3OworICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Ll90YWJsZS5yZW5kZXJMaXN0W2ldLmNhblNoYXJlID0gZHJhd09iamVjdC5jYW5TaGFyZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5fdGFibGUucmVuZGVyTGlzdFtpXS5jYW5SZW1vdGUgPSBkcmF3T2JqZWN0LmNhblJlbW90ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy9zZWFyY2ggZm9yIHRoZSB1c2VyIGFuZCB1cGRhdGUgaXRzIGRyYXdTdGF0dXNJY29uCisgICAgICAgICAgICAgICAgdmFyIHZMaXN0ID0gcGFyZW50Ll90YWJsZS5faW5uZXJsaXN0Ll9pbm4uX2lubi5zdWJ2aWV3czsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTx2TGlzdC5sZW5ndGg7aSsrKSB7CisgICAgICAgICAgICAgICAgICAgIC8vdkxpc3RbaV0udXBkYXRlSWNvbkJ5TW9kKCk7CisgICAgICAgICAgICAgICAgICAgIGlmICh2TGlzdFtpXS5yZWZPYmoucHVibGljU0lEID09IGRyYXdPYmplY3QucHVibGljU0lEKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB2TGlzdFtpXS5yZWZPYmouY2FuRHJhdyA9IGRyYXdPYmplY3QuY2FuRHJhdzsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZMaXN0W2ldLmNhbkRyYXcgPSBkcmF3T2JqZWN0LmNhbkRyYXc7CisgICAgICAgICAgICAgICAgICAgICAgICB2TGlzdFtpXS5jYW5TaGFyZSA9IGRyYXdPYmplY3QuY2FuU2hhcmU7CisgICAgICAgICAgICAgICAgICAgICAgICB2TGlzdFtpXS5jYW5SZW1vdGUgPSBkcmF3T2JqZWN0LmNhblJlbW90ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZMaXN0W2ldLnVwZGF0ZUljb25CeU1vZFNjcm9sbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgdkxpc3RbaV0udXBkYXRlTW9kZXJhdG9ySWNvbnMoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcGFyZW50Ll9hcHBseUFuZFN0YXR1c0ljb25zLnVwZGF0ZUljb25zKCk7CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPgorCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZXhjbHVzaXZlQXVkaW9BbGxvd1N0YXR1cyIgcmVmZXJlbmNlPSJjYW52YXMiIGFyZ3M9InJjbE9iamVjdCI+CisgICAgICAgICAgICA8IVtDREFUQVsKKworICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCIgOjogZXhjbHVzaXZlQXVkaW9BbGxvd1N0YXR1cyA6OiAiLHJjbE9iamVjdC5jYW5HaXZlQXVkaW8pOworCQkJCQorICAgICAgICAgICAgICAgIHZhciB2TGlzdCA9IHBhcmVudC5fdGFibGUucmVuZGVyTGlzdDsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTx2TGlzdC5sZW5ndGg7aSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh2TGlzdFtpXS5wdWJsaWNTSUQgPT0gcmNsT2JqZWN0LnB1YmxpY1NJRCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Ll90YWJsZS5yZW5kZXJMaXN0W2ldLmNhbkdpdmVBdWRpbyA9IHJjbE9iamVjdC5jYW5HaXZlQXVkaW87CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKwkJCQkKKyAgICAgICAgICAgICAgICAvL3NlYXJjaCBmb3IgdGhlIHVzZXIgYW5kIHVwZGF0ZSBpdHMgZXhjbHVzaXZlQXVkaW9TdGF0dXNJY29uCisgICAgICAgICAgICAgICAgdmFyIHZMaXN0ID0gcGFyZW50Ll90YWJsZS5faW5uZXJsaXN0Ll9pbm4uX2lubi5zdWJ2aWV3czsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTx2TGlzdC5sZW5ndGg7aSsrKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh2TGlzdFtpXS5yZWZPYmoucHVibGljU0lEID09IHJjbE9iamVjdC5wdWJsaWNTSUQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZMaXN0W2ldLnJlZk9iai5jYW5HaXZlQXVkaW8gPSByY2xPYmplY3QuY2FuR2l2ZUF1ZGlvOworICAgICAgICAgICAgICAgICAgICAgICAgdkxpc3RbaV0uY2FuR2l2ZUF1ZGlvID0gcmNsT2JqZWN0LmNhbkdpdmVBdWRpbzsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZMaXN0W2ldLnVwZGF0ZUljb25CeU1vZFNjcm9sbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgdkxpc3RbaV0udXBkYXRlTW9kZXJhdG9ySWNvbnMoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgcGFyZW50Ll9hcHBseUFuZFN0YXR1c0ljb25zLnVwZGF0ZUljb25zKCk7CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25sYXN0QnJvYWRDYXN0aW5nVXNlciIgcmVmZXJlbmNlPSJjYW52YXMiIGFyZ3M9InVzZXJPYmplY3QiPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCIgOjogb25sYXN0QnJvYWRDYXN0aW5nVXNlciA6OiAiKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoIXVzZXJPYmplY3QuaXNCcm9hZGNhc3RpbmcpIHsKKyAgICAgICAgICAgICAgICAgICAgLy9TdG9wIEJyb2FkY2FzdGluZyBhbmQgY2xvc2UgRGlhbG9nCisgICAgICAgICAgICAgICAgICAgIC8vU2VhcmNoLCBzdG9wIGFuZCByZW1vdmUgdmlkZW8KKyAgICAgICAgICAgICAgICAgICAgcGFyZW50LnBhcmVudC5yZW1vdmVWaWRlb0J5VXNlcih1c2VyT2JqZWN0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgdmFyIHZMaXN0ID0gcGFyZW50Ll90YWJsZS5yZW5kZXJMaXN0OworICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPHZMaXN0Lmxlbmd0aDtpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHZMaXN0W2ldLnB1YmxpY1NJRCA9PSB1c2VyT2JqZWN0LnB1YmxpY1NJRCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Ll90YWJsZS5yZW5kZXJMaXN0W2ldLmlzQnJvYWRjYXN0aW5nID0gdXNlck9iamVjdC5pc0Jyb2FkY2FzdGluZzsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vc2VhcmNoIGZvciB0aGUgdXNlciBhbmQgdXBkYXRlIGl0cyBkcmF3U3RhdHVzSWNvbgorICAgICAgICAgICAgICAgIHZhciB2TGlzdCA9IHBhcmVudC5fdGFibGUuX2lubmVybGlzdC5faW5uLl9pbm4uc3Vidmlld3M7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8dkxpc3QubGVuZ3RoO2krKykgeworICAgICAgICAgICAgICAgICAgICBpZiAodkxpc3RbaV0ucmVmT2JqLnB1YmxpY1NJRCA9PSB1c2VyT2JqZWN0LnB1YmxpY1NJRCkgeworICAgICAgICAgICAgICAgICAgICAgICAgdkxpc3RbaV0uaXNCcm9hZGNhc3RpbmcgPSB1c2VyT2JqZWN0LmlzQnJvYWRjYXN0aW5nOworICAgICAgICAgICAgICAgICAgICAgICAgdkxpc3RbaV0udXBkYXRlTW9kZXJhdG9ySWNvbnMoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHBhcmVudC5fYXBwbHlBbmRTdGF0dXNJY29ucy51cGRhdGVJY29ucygpOworICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgCisgICAgICAgIDxtZXRob2QgbmFtZT0idXBkYXRlSWNvbnMiPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiIDo6IHVwZGF0ZUljb25zIDo6ICIpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPHBhcmVudC5fdGFibGUucmVuZGVyTGlzdC5sZW5ndGg7aSsrKSB7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGs9MDtrPGNhbnZhcy5uZXdNb2RlcmF0b3JMaXN0Lmxlbmd0aDtrKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGl0ZW0gPSBjYW52YXMubmV3TW9kZXJhdG9yTGlzdFtrXTsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHBhcmVudC5fdGFibGUucmVuZGVyTGlzdFtpXS5wdWJsaWNTSUQgPT0gaXRlbS5wdWJsaWNTSUQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50Ll90YWJsZS5yZW5kZXJMaXN0W2ldLmlzTW9kID09IGZhbHNlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLmluZm8oInVwZGF0ZUljb25zIEZvdW5kIFJSICIsaSxpdGVtLnB1YmxpY1NJRCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5fdGFibGUucmVuZGVyTGlzdFtpXS5pc01vZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbVZpZXcgPSB0aGlzLmdldEl0ZW1CeVB1YmxpY1NJRChpdGVtLnB1YmxpY1NJRCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtVmlldyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtVmlldy5zZXRBdHRyaWJ1dGUoImlzTW9kIix0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1WaWV3LnVwZGF0ZU1vZGVyYXRvckljb25zKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaz0wO2s8Y2FudmFzLnJlbW92ZU1vZGVyYXRvckxpc3QubGVuZ3RoO2srKykgeworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgaXRlbSA9IGNhbnZhcy5yZW1vdmVNb2RlcmF0b3JMaXN0W2tdOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50Ll90YWJsZS5yZW5kZXJMaXN0W2ldLnB1YmxpY1NJRCA9PSBpdGVtLnB1YmxpY1NJRCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChwYXJlbnQuX3RhYmxlLnJlbmRlckxpc3RbaV0uaXNNb2QgPT0gdHJ1ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLmluZm8oIlJFIHVwZGF0ZUljb25zIEZvdW5kIFJSICIsaSxpdGVtLnB1YmxpY1NJRCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Ll90YWJsZS5yZW5kZXJMaXN0W2ldLmlzTW9kID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGl0ZW1WaWV3ID0gdGhpcy5nZXRJdGVtQnlQdWJsaWNTSUQoaXRlbS5wdWJsaWNTSUQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpdGVtVmlldyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1WaWV3LnNldEF0dHJpYnV0ZSgiaXNNb2QiLGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVZpZXcudXBkYXRlTW9kZXJhdG9ySWNvbnMoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgcGFyZW50Ll9hcHBseUFuZFN0YXR1c0ljb25zLnVwZGF0ZUljb25zKCk7CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9tZXRob2Q+CisgICAgICAgIAorICAgICAgICA8bWV0aG9kIG5hbWU9ImdldEl0ZW1CeVB1YmxpY1NJRCIgYXJncz0icHVibGljU0lEIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIHZhciB2TGlzdCA9IHBhcmVudC5fdGFibGUuX2lubmVybGlzdC5faW5uLl9pbm4uc3Vidmlld3M7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8dkxpc3QubGVuZ3RoO2krKykgeworICAgICAgICAgICAgICAgICAgICBpZiAodkxpc3RbaV0ucmVmT2JqLnB1YmxpY1NJRCA9PSBwdWJsaWNTSUQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB2TGlzdFtpXTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgCisgICAgICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iNjgwIiB3aWR0aD0iMjcwIiB4PSIwIiBtdWx0aWxpbmU9InRydWUiIHk9IjAiIC8+CisgICAgPC92aWV3PgorCis8L2NsYXNzPgorCisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9yZXN0cmljdGVkL3Jlc3RyaWN0ZWRVc2VyTGlzdEl0ZW0ubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3Jlc3RyaWN0ZWQvcmVzdHJpY3RlZFVzZXJMaXN0SXRlbS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmM5MDY2MwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9yZXN0cmljdGVkL3Jlc3RyaWN0ZWRVc2VyTGlzdEl0ZW0ubHp4CkBAIC0wLDAgKzEsMTM4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8Y2xhc3MgbmFtZT0icmVzdHJpY3RlZFVzZXJMaXN0SXRlbSIgZXh0ZW5kcz0iYmFzZVBhZ2luZ0xpc3RJdGVtIiAKKwkgICBzaG93aGFuZGN1cnNvcj0iZmFsc2UiIHdpZHRoPSIyNTQiIGhlaWdodD0iNDIiPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0iY29ubmVjdGVkU2luY2UiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwkKKyAgICA8YXR0cmlidXRlIG5hbWU9ImlzTW9kIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJzdHJlYW1pZCIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0idXNlcm5hbWUiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9InVzZXJyb29tIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJmb3JtYXRlZERhdGUiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImZpcnN0bmFtZSIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibGFzdG5hbWUiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9InVzZXJfaWQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJyZWZPYmoiIHZhbHVlPSJudWxsIiAvPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0iaXNTdXBlck1vZGVyYXRvciIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIi8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJ1c2VycGljVVJMIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJ1c2VycGljVmlldyIgdmFsdWU9Im51bGwiIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJzZWxmSXRlbSIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIi8+CisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib25pc01vZCI+CisgICAgCTwhW0NEQVRBWworICAgICAgICAJaWYgKHRoaXMuaXNNb2QpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9jb250ZW50LnVzZXJTdGF0dXMuc2V0QXR0cmlidXRlKCJmcmFtZSIsMyk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucmVmT2JqICE9IG51bGwgJiYgdGhpcy5yZWZPYmouY2FuRHJhdykgeworICAgICAgICAgICAgICAgIHRoaXMuX2NvbnRlbnQudXNlclN0YXR1cy5zZXRBdHRyaWJ1dGUoImZyYW1lIiwyKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGhpcy5fY29udGVudC51c2VyU3RhdHVzLnNldEF0dHJpYnV0ZSgiZnJhbWUiLDEpOworICAgICAgICAgICAgfQorICAgICAgICBdXT4KKyAgICA8L2hhbmRsZXI+CisKKyAgICA8aGFuZGxlciBuYW1lPSJvbk11dGUiIHJlZmVyZW5jZT0iY2FudmFzLnRoaXNoaWIuc3dpdGNoTWljTXV0ZWQiIGFyZ3M9ImV2ZW50Ij4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib25NdXRlICIsIGV2ZW50LnB1YmxpY1NJRCwgZXZlbnQubXV0ZSk7CisgICAgICAgICAgICBpZih0aGlzLnJlZk9iai5wdWJsaWNTSUQgPT0gZXZlbnQucHVibGljU0lEKSB7CisgICAgICAgICAgICAgICAgdGhpcy5yZWZPYmoubWljTXV0ZWQgPSBldmVudC5tdXRlOworICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlTW9kZXJhdG9ySWNvbnMoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgXV0+CisgICAgPC9oYW5kbGVyPgorCisJPG1ldGhvZCBuYW1lPSJ1cGRhdGVJY29uQnlNb2QiPgorCQlpZiAodGhpcy5jbGlja2FibGUpIHsKKyAgICAgICAgCXRoaXMuaXNNb2QgPSBjYW52YXMuZ2V0SXNNb2RlcmF0b3JCeVB1YmxpY1NJRCh0aGlzLnJlZk9iai5wdWJsaWNTSUQpOworICAgICAgICAJLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiIDo6IHVwZGF0ZUljb25CeU1vZCA6OiAiLHRoaXMuaXNNb2QpCisgICAgICAgIAlpZiAodGhpcy5pc01vZCkgeworICAgICAgICAgICAgICAgIHRoaXMuX2NvbnRlbnQudXNlclN0YXR1cy5zZXRBdHRyaWJ1dGUoImZyYW1lIiwzKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5yZWZPYmouY2FuRHJhdykgeworICAgICAgICAgICAgCXRoaXMuX2NvbnRlbnQudXNlclN0YXR1cy5zZXRBdHRyaWJ1dGUoImZyYW1lIiwyKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAJdGhpcy5fY29udGVudC51c2VyU3RhdHVzLnNldEF0dHJpYnV0ZSgiZnJhbWUiLDEpOworICAgICAgICAgICAgfQorCQl9CisgICAgPC9tZXRob2Q+ICAKKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InVwZGF0ZUljb25CeU1vZFNjcm9sbCI+CisgICAgCWlmICh0aGlzLmNsaWNrYWJsZSkgeworICAgICAgICAJaWYgKHRoaXMuaXNNb2QpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9jb250ZW50LnVzZXJTdGF0dXMuc2V0QXR0cmlidXRlKCJmcmFtZSIsMyk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucmVmT2JqLmNhbkRyYXcpIHsKKyAgICAgICAgICAgIAl0aGlzLl9jb250ZW50LnVzZXJTdGF0dXMuc2V0QXR0cmlidXRlKCJmcmFtZSIsMik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgCXRoaXMuX2NvbnRlbnQudXNlclN0YXR1cy5zZXRBdHRyaWJ1dGUoImZyYW1lIiwxKTsKKyAgICAgICAgICAgIH0KKyAgICAJfQorICAgIDwvbWV0aG9kPiAgCisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJpbml0TW9kZXJhdG9ySWNvbnMiPgorICAgIAkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCIgOjE6IGluaXRNb2RlcmF0b3JJY29ucyA6OiAiKTsKKyAgICAJaWYgKGNhbnZhcy5pc21vZGVyYXRvcikgeworICAgIAkJLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiIDoyOiBpbml0TW9kZXJhdG9ySWNvbnMgOjogIik7CisJCQl0aGlzLl9jb250ZW50Ll9pY29uc01vZGVyYXRvci5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisJCQl0aGlzLl9jb250ZW50Ll9pY29uc01vZGVyYXRvci5vbmluaXQuc2VuZEV2ZW50KCk7CisgICAgCX0KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InVwZGF0ZU1vZGVyYXRvckljb25zIj4KKwkJaWYgKHRoaXMuX2NvbnRlbnQuX2ljb25zTW9kZXJhdG9yLnZpc2liaWxpdHkgPT0gInZpc2libGUiKSB7CisgICAgICAgICAgICB0aGlzLl9jb250ZW50Ll9pY29uc01vZGVyYXRvci5vbmluaXQuc2VuZEV2ZW50KCk7CisJCX0KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImhpZGVNb2RlcmF0b3JJY29ucyI+CisgICAgCWlmICh0aGlzLl9jb250ZW50Ll9pY29uc01vZGVyYXRvci52aXNpYmlsaXR5ID09ICJ2aXNpYmxlIikgeworICAgICAgICAgICAgdGhpcy5fY29udGVudC5faWNvbnNNb2RlcmF0b3Iuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgCX0KKyAgICA8L21ldGhvZD4KKworCTx2aWV3IG5hbWU9Il9jb250ZW50IiB3aWR0aD0iMjU0Ij4KKwkJCisJCTx2aWV3IG5hbWU9Il9jb250ZW50SXNDdXJyZW50IiB2aXNpYmxlPSIkeyBwYXJlbnQucGFyZW50LnNlbGZJdGVtIH0iCisgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMjU0IiBoZWlnaHQ9IjQwIiBiZ2NvbG9yPSIweDdDRkMwMCIvPgorICAgICAgICAgIAorCQk8IS0tCisJCSsgJyAnICsgcGFyZW50LnBhcmVudC5pdGVtSWQKKwkJIC0tPgorCQkgCisgICAgCTxsYWJlbFRleHQgbmFtZT0iX3VzZXJOYW1lIiB4PSIyIiB5PSIyIgorICAgIAkJICAgdGV4dD0iJHsgcGFyZW50LnBhcmVudC5maXJzdG5hbWUrJyAnK3BhcmVudC5wYXJlbnQubGFzdG5hbWUgIH0iIC8+CisgICAgCQkgICAKKwkgICAgPHZpZXcgbmFtZT0idXNlclN0YXR1cyIgdmlzaWJsZT0iJHsgcGFyZW50LnBhcmVudC5jbGlja2FibGUgfSIgCisJICAgIAkgIHg9IjIzOCIgZnJhbWU9IjEiIHJlc291cmNlPSJ1c2Vyc3RhdHVzX211bHRpZnJhbWVfcnNjIiAvPgorCSAgICAJCisJICAgIAkKKwkgICAgPG1vZGVyYXRpb25NaW5pSWNvblJlc3RyaWN0ZWQgbmFtZT0iX2ljb25zTW9kZXJhdG9yIiB2aXNpYmlsaXR5PSJoaWRkZW4iLz4KKwk8L3ZpZXc+CisJCisJCisJCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvc2NyZWVuU2hhcmluZ0FkYXB0ZXIubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3NjcmVlblNoYXJpbmdBZGFwdGVyLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDg5ZDE1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3NjcmVlblNoYXJpbmdBZGFwdGVyLmx6eApAQCAtMCwwICsxLDc3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPGxpYnJhcnk+DQorDQorPGNsYXNzIG5hbWU9InNjcmVlblNoYXJpbmdBZGFwdGVyIiBleHRlbmRzPSJub2RlIj4NCisNCisJPCEtLS0NCisJCVNlbmQgdmlhIExvY2FsQ29ubmVjdGlvbiB0byBTV0YxMCBjb250YWluZXINCisJCXRvIHNob3cgYSBuZXcgc2NyZWVuIHNoYXJpbmcgdmlkZW8NCisJCUBwYXJhbSByY2wgUm9vbUNsaWVudCBPYmplY3QNCisJIC0tPg0KKwk8bWV0aG9kIG5hbWU9Im5ld1NjcmVlblNoYXJpbmciIGFyZ3M9InJjbCI+DQorCQkvL1NlbmQgdmlhIExvY2FsQ29ubmVjdGlvbiB0byBTV0YxMCBjb250YWluZXINCisJCWNhbnZhcy5zZW5kVmlhTG9jYWxDb25uZWN0aW9uKGNhbnZhcy5ydG1wX2xjX25hbWUsICJuZXdTY3JlZW5TaGFyaW5nIiwgW3JjbF0pOw0KKwk8L21ldGhvZD4NCisJDQorCTwhLS0tDQorICAgICAgICBTZW5kIHZpYSBMb2NhbENvbm5lY3Rpb24gdG8gU1dGMTAgY29udGFpbmVyDQorICAgICAgICB0byBzaG93IG11bHRpcGxlIG5ldyBzY3JlZW4gc2hhcmluZyB2aWRlbw0KKyAgICAgICAgQHBhcmFtIHJjbCBSb29tQ2xpZW50IE9iamVjdCBNYXAvbGlzdA0KKyAgICAgLS0+DQorICAgIDxtZXRob2QgbmFtZT0ibmV3U2NyZWVuU2hhcmluZ3MiIGFyZ3M9InJjbHMiPg0KKyAgICAgICAgLy9TZW5kIHZpYSBMb2NhbENvbm5lY3Rpb24gdG8gU1dGMTAgY29udGFpbmVyDQorICAgICAgICBjYW52YXMuc2VuZFZpYUxvY2FsQ29ubmVjdGlvbihjYW52YXMucnRtcF9sY19uYW1lLCAibmV3U2NyZWVuU2hhcmluZ3MiLCBbcmNsc10pOw0KKyAgICA8L21ldGhvZD4NCisJDQorCTwhLS0tIA0KKwkJU2VuZCB2aWEgTG9jYWxDb25uZWN0aW9uIHRvIFNXRjEwIGNvbnRhaW5lciANCisJCXRvIGNsb3NlIGEgc2luZ2xlIHNjcmVlbiBzaGFyaW5nIHNlc3Npb24NCisJCUBwYXJhbSByY2wgUm9vbUNsaWVudCBPYmplY3QNCisJIC0tPg0KKwk8bWV0aG9kIG5hbWU9ImNsb3NlU2NyZWVuU2hhcmluZyIgYXJncz0icmNsIj4NCisJCS8vU2VuZCB2aWEgTG9jYWxDb25uZWN0aW9uIHRvIFNXRjEwIGNvbnRhaW5lcg0KKwkJY2FudmFzLnNlbmRWaWFMb2NhbENvbm5lY3Rpb24oY2FudmFzLnJ0bXBfbGNfbmFtZSwgImNsb3NlU2NyZWVuU2hhcmluZyIsIFtyY2xdKTsNCisJPC9tZXRob2Q+DQorCQ0KKwk8IS0tLSANCisJCVNlbmQgdmlhIExvY2FsQ29ubmVjdGlvbiB0byBTV0YxMCBjb250YWluZXIgDQorCQl0byBjbG9zZSBhbGwgc2NyZWVuIHNoYXJpbmcgdmlld2VyIHZpZGVvcw0KKwkgLS0+DQorCTxtZXRob2QgbmFtZT0iY2xvc2VBbGxTY3JlZW5TaGFyaW5ncyIgPg0KKwkJLy9TZW5kIHZpYSBMb2NhbENvbm5lY3Rpb24gdG8gU1dGMTAgY29udGFpbmVyDQorCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiY2xvc2VBbGxTY3JlZW5TaGFyaW5ncyBTRU5EIik7DQorCQljYW52YXMuc2VuZFZpYUxvY2FsQ29ubmVjdGlvbihjYW52YXMucnRtcF9sY19uYW1lLCAiY2xvc2VBbGxTY3JlZW5TaGFyaW5ncyIsIG51bGwpOw0KKwk8L21ldGhvZD4NCisJDQorCTwhLS0tIA0KKwkJU2VuZCB2aWEgTG9jYWxDb25uZWN0aW9uIHRvIFNXRjEwIGNvbnRhaW5lciANCisJCXRvIHVwZGF0ZSB0aGUgbW91c2UgcG9zaXRpb24gb2YgYSBjZXJ0YWluIHNjcmVlbiBzaGFyaW5nDQorCQlAcGFyYW0gY3Vyc29yTWFwIE1hcCBPYmplY3QNCisJIC0tPg0KKwk8bWV0aG9kIG5hbWU9InVwZGF0ZUN1cnNvclNjcmVlblNoYXJpbmciIGFyZ3M9ImN1cnNvck1hcCI+DQorCQkvL1NlbmQgdmlhIExvY2FsQ29ubmVjdGlvbiB0byBTV0YxMCBjb250YWluZXINCisJCWNhbnZhcy5zZW5kVmlhTG9jYWxDb25uZWN0aW9uKGNhbnZhcy5ydG1wX2xjX25hbWUsICJ1cGRhdGVDdXJzb3JTY3JlZW5TaGFyaW5nIiwgW2N1cnNvck1hcF0pOw0KKwk8L21ldGhvZD4NCisNCis8L2NsYXNzPg0KKw0KKzwvbGlicmFyeT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvc2lwL2xpYnJhcnkubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3NpcC9saWJyYXJ5Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzUwNzdmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3NpcC9saWJyYXJ5Lmx6eApAQCAtMCwwICsxLDI1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorDQorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKw0KKy0tPg0KKzxsaWJyYXJ5Pg0KKw0KKyAgICA8aW5jbHVkZSBocmVmPSJzaXBEaWFsZXIubHp4IiAvPg0KKw0KKzwvbGlicmFyeT4NCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvc2lwL3NpcERpYWxlci5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvc2lwL3NpcERpYWxlci5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQ1NzM0NwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS9zaXAvc2lwRGlhbGVyLmx6eApAQCAtMCwwICsxLDEwOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+DQorPCEtLQ0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKw0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKw0KKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICB1bmRlciB0aGUgTGljZW5zZS4NCisNCistLT4NCis8bGlicmFyeT4NCisNCis8Y2xhc3MgbmFtZT0ic2lwRGlhbGVyIiBleHRlbmRzPSJ3aW5kb3ciIGJnY29sb3I9ImdyYXkiIHdpZHRoPSIyMDAiPg0KKyAgICA8c2ltcGxlbGF5b3V0IGF4aXM9InkiIHNwYWNpbmc9IjUiLz4NCisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIxMDAzIi8+DQorICAgIDx2aWV3IG5hbWU9InBob25lTnVtYmVyIiB3aWR0aD0iMTAwJSI+DQorICAgICAgICA8aW5wdXR0ZXh0IG5hbWU9ImlucHV0IiB3aWR0aD0iJG9uY2V7cGFyZW50LndpZHRoLXBhcmVudC5kZWwud2lkdGh9IiBoZWlnaHQ9IjIwIiBiZ2NvbG9yPSJ3aGl0ZSIvPg0KKyAgICAgICAgPGJ1dHRvbiBuYW1lPSJkZWwiIHg9IiRvbmNle3BhcmVudC5pbnB1dC53aWR0aH0iIHdpZHRoPSIzMCIgaGVpZ2h0PSIyMCIgb25jbGljaz0idGhpcy5kZWwoKTsiPg0KKyAgICAgICAgICAgIOKGkA0KKyAgICAgICAgICAgIDxtZXRob2QgbmFtZT0iZGVsIj4NCisgICAgICAgICAgICAgICAgdmFyIHQgPSBwYXJlbnQuaW5wdXQudGV4dDsNCisgICAgICAgICAgICAgICAgaWYodC5sZW5ndGggIT0gMCkgew0KKyAgICAgICAgICAgICAgICAgICAgdCA9IHQuc3Vic3RyKDAsIHQubGVuZ3RoIC0gMSk7DQorICAgICAgICAgICAgICAgICAgICBwYXJlbnQuaW5wdXQuc2V0QXR0cmlidXRlKCd0ZXh0JywgdCk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICA8L21ldGhvZD4NCisgICAgICAgIDwvYnV0dG9uPg0KKyAgICA8L3ZpZXc+DQorDQorICAgIDx2aWV3IG5hbWU9ImRpYWxlckJ1dHRvbnMiIGFsaWduPSJjZW50ZXIiPg0KKyAgICAgICAgPHZib3ggc3BhY2luZz0iNSI+DQorICAgICAgICAgICAgPGhib3ggc3BhY2luZz0iNSI+DQorICAgICAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0icGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LmRpYWwoJzEnKSIgd2lkdGg9IjQwIj4xPC9idXR0b24+DQorICAgICAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0icGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LmRpYWwoJzInKSIgd2lkdGg9IjQwIj4yPC9idXR0b24+DQorICAgICAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0icGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LmRpYWwoJzMnKSIgd2lkdGg9IjQwIj4zPC9idXR0b24+DQorICAgICAgICAgICAgPC9oYm94Pg0KKyAgICAgICAgICAgIDxoYm94IHNwYWNpbmc9IjUiPg0KKyAgICAgICAgICAgICAgICA8YnV0dG9uIG9uY2xpY2s9InBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5kaWFsKCc0JykiIHdpZHRoPSI0MCI+NDwvYnV0dG9uPg0KKyAgICAgICAgICAgICAgICA8YnV0dG9uIG9uY2xpY2s9InBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5kaWFsKCc1JykiIHdpZHRoPSI0MCI+NTwvYnV0dG9uPg0KKyAgICAgICAgICAgICAgICA8YnV0dG9uIG9uY2xpY2s9InBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5kaWFsKCc2JykiIHdpZHRoPSI0MCI+NjwvYnV0dG9uPg0KKyAgICAgICAgICAgIDwvaGJveD4NCisgICAgICAgICAgICA8aGJveCBzcGFjaW5nPSI1Ij4NCisgICAgICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJwYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQuZGlhbCgnNycpIiB3aWR0aD0iNDAiPjc8L2J1dHRvbj4NCisgICAgICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJwYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQuZGlhbCgnOCcpIiB3aWR0aD0iNDAiPjg8L2J1dHRvbj4NCisgICAgICAgICAgICAgICAgPGJ1dHRvbiBvbmNsaWNrPSJwYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQuZGlhbCgnOScpIiB3aWR0aD0iNDAiPjk8L2J1dHRvbj4NCisgICAgICAgICAgICA8L2hib3g+DQorICAgICAgICAgICAgPGhib3ggc3BhY2luZz0iNSI+DQorICAgICAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0icGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LmRpYWwoJyonKSIgd2lkdGg9IjQwIj4qPC9idXR0b24+DQorICAgICAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0icGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LmRpYWwoJzAnKSIgd2lkdGg9IjQwIj4wPC9idXR0b24+DQorICAgICAgICAgICAgICAgIDxidXR0b24gb25jbGljaz0icGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LmRpYWwoJyMnKSIgd2lkdGg9IjQwIj4jPC9idXR0b24+DQorICAgICAgICAgICAgPC9oYm94Pg0KKyAgICAgICAgPC92Ym94Pg0KKyAgICA8L3ZpZXc+DQorICAgIDxoYm94IHNwYWNpbmc9IjEwIiBhbGlnbj0iY2VudGVyIj4NCisgICAgICAgIDxzaW1wbGVMYWJlbEJ1dHRvbiBsYWJlbGlkPSIxNDQ4IiBuYW1lPSJjYWxsQnV0dG9uIj4NCisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4NCisgICAgICAgICAgICAgICAgcGFyZW50LnBhcmVudC5qb2luVG9Db25mQ2FsbC5kb0NhbGwoKTsNCisgICAgICAgICAgICAgICAgdmFyIGcgPSBjYW52YXMuZ2V0VXNlckRhdGEoKTsNCisgICAgICAgICAgICAgICAgZ1sibGFzdHNpcG51bWJlciJdID0gcGFyZW50LnBhcmVudC5waG9uZU51bWJlci5pbnB1dC5nZXRUZXh0KCk7DQorICAgICAgICAgICAgICAgIGNhbnZhcy5zZXRVc2VyRGF0YShnKTsNCisgICAgICAgICAgICA8L2hhbmRsZXI+DQorICAgICAgICA8L3NpbXBsZUxhYmVsQnV0dG9uPg0KKyAgICAgICAgPHNpbXBsZUxhYmVsQnV0dG9uIGxhYmVsaWQ9Ijg1IiBuYW1lPSJjbG9zZUJ1dHRvbiI+DQorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+DQorICAgICAgICAgICAgICAgIGNhbnZhcy5zaXBEaWFsZXIgPSBudWxsOw0KKyAgICAgICAgICAgICAgICBwYXJlbnQucGFyZW50LmRlc3Ryb3koKTsNCisgICAgICAgICAgICA8L2hhbmRsZXI+DQorICAgICAgICA8L3NpbXBsZUxhYmVsQnV0dG9uPg0KKyAgICA8L2hib3g+DQorDQorCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+DQorCQlpZihjYW52YXMuc2lwRGlhbGVyICE9IG51bGwpIHsNCisJCQljYW52YXMuc2lwRGlhbGVyLmRlc3Ryb3koKTsNCisJCX0NCisJCWNhbnZhcy5zZXRBdHRyaWJ1dGUoJ3NpcERpYWxlcicsIHRoaXMpOw0KKwkJdmFyIGxhc3ROdW0gPSBjYW52YXMuZ2V0VXNlckRhdGEoKVsibGFzdHNpcG51bWJlciJdOw0KKwkJaWYobGFzdE51bSAhPSB1bmRlZmluZWQpIHsNCisJCQl0aGlzLnBob25lTnVtYmVyLmlucHV0LnNldEF0dHJpYnV0ZSgndGV4dCcsIGxhc3ROdW0pOw0KKwkJfQ0KKwkJdGhpcy5icmluZ1RvRnJvbnQoKTsNCisgICAgPC9oYW5kbGVyPg0KKw0KKyAgICA8bWV0aG9kIG5hbWU9ImRpYWwiIGFyZ3M9ImRpZ2l0Ij4NCisgICAgICAgIHRoaXMucGhvbmVOdW1iZXIuaW5wdXQuc2V0QXR0cmlidXRlKCd0ZXh0JywgdGhpcy5waG9uZU51bWJlci5pbnB1dC50ZXh0ICsgZGlnaXQpOw0KKyAgICA8L21ldGhvZD4NCisNCisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iam9pblRvQ29uZkNhbGwiIGZ1bmNuYW1lPSJqb2luVG9Db25mQ2FsbCIgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iPg0KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50LnBob25lTnVtYmVyLmlucHV0LnRleHQ8L21ldGhvZD48L25ldHBhcmFtPg0KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+DQorICAgICAgICAgICAgPCFbQ0RBVEFbDQorICAgICAgICAgICAgLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZSB0aGUgcnRtcGNvbm5lY3Rpb24NCisgICAgICAgICAgICBpZigkZGVidWcpIERlYnVnLndyaXRlKCJqb2luVG9Db25mQ2FsbCA6ICIsdmFsdWUpOw0KKyAgICAgICAgICAgIF1dPg0KKyAgICAgICAgPC9oYW5kbGVyPg0KKyAgICA8L25ldFJlbW90ZUNhbGxIaWI+DQorPC9jbGFzcz4NCisNCis8L2xpYnJhcnk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvY2hhdC9iYXNlVGFiQ2hhdFBhbmVsLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2NoYXQvYmFzZVRhYkNoYXRQYW5lbC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTI4MTc2YQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2NoYXQvYmFzZVRhYkNoYXRQYW5lbC5sengKQEAgLTAsMCArMSwyMzMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKwk8IS0tIAorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwlQcm92aWRlcyBmdW5jdGlvbnMgdG8gY2hhdCBhbmQgZXh0ZW5kcyB0aGUgY2hhdCB3aXRoIHRoZSBwYW5lbCBmb3IgYmxpbmtpbmcKKwl3aGVuIG5ldyBtZXNzYWdlcyBhcnJpdmUgd2hlbiB0aGUgdGFiIGlzIGNsb3NlZAorCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkgLS0+CisKKwk8Y2xhc3MgbmFtZT0iYmFzZVRhYkNoYXRQYW5lbCIgZXh0ZW5kcz0iYmFzZVByb3BlcnR5UGFuZWwiID4KKworCQk8YXR0cmlidXRlIG5hbWU9ImZhZGVEZWxlZ2F0ZSIgdmFsdWU9Im51bGwiIC8+CisJCTxhdHRyaWJ1dGUgbmFtZT0iZG9CbGluayIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorCisJCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisJCQljYW52YXMuX2N1cnJlbnRDaGF0UGFuZWwgPSB0aGlzOworCQkJdGhpcy5mYWRlRGVsZWdhdGUgPSBuZXcgTHpEZWxlZ2F0ZSggdGhpcywgInNob3dUZXh0IiApOworCQk8L2hhbmRsZXI+CisKKyAgICAgICAgPG1ldGhvZCBuYW1lPSJuZXdwcml2YXRlY2hhdCIgYXJncz0icmVmT2JqIj4KKyAgICAgICAgICAgIHRoaXMuYWRkQ2hhdFN5bmMocmVmT2JqWzFdLHRydWUpOworICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgCisgICAgICAgIDxtZXRob2QgbmFtZT0iY2xvc2Vwcml2YXRlY2hhdCIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImNsb3NlcHJpdmF0ZWNoYXQgXzFhXyAiLHZhbHVlKTsKKyAgICAgICAgICAgIHZhciBwdWJsaWNTSUQgPSB2YWx1ZVsxXTsKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJjbG9zZXByaXZhdGVjaGF0IF8xYl8gIixwdWJsaWNTSUQpOworICAgICAgICAgICAgCisJCQlmb3IgKHZhciBlZyBpbiB0aGlzLmNvbnRlbnQuY2hhdGJhci5zdWJ2aWV3cykgeworCQkJCWlmKHR5cGVvZiB0aGlzLmNvbnRlbnQuY2hhdGJhci5zdWJ2aWV3c1tlZ10ub2JqUmVmLnJlZk9iaiA9PSAndW5kZWZpbmVkJykgeworCQkJCQljb250aW51ZTsKKwkJCQl9CisJCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImNsb3NlcHJpdmF0ZWNoYXQgXzJBXyAiLHRoaXMuY29udGVudC5jaGF0YmFyLnN1YnZpZXdzW2VnXS5vYmpSZWYpOworCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJjbG9zZXByaXZhdGVjaGF0IF8yQl8gIix0aGlzLmNvbnRlbnQuY2hhdGJhci5zdWJ2aWV3c1tlZ10ub2JqUmVmLnJlZk9iaik7CisJCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImNsb3NlcHJpdmF0ZWNoYXQgXzJDXyAiLHRoaXMuY29udGVudC5jaGF0YmFyLnN1YnZpZXdzW2VnXS5vYmpSZWYucmVmT2JqLnB1YmxpY1NJRCk7CisJCQkJICAgIAorCQkJCWlmICh0aGlzLmNvbnRlbnQuY2hhdGJhci5zdWJ2aWV3c1tlZ10ub2JqUmVmLnJlZk9iai5wdWJsaWNTSUQgPT0gcHVibGljU0lEICkgeworCQkJCQl0aGlzLmNvbnRlbnQuY2hhdGJhci5yZW1vdmVPYmplY3RTeW5jZWQodGhpcy5jb250ZW50LmNoYXRiYXIuc3Vidmlld3NbZWddKTsKKwkJCQkJcmV0dXJuOworCQkJCX0KKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9tZXRob2Q+CisgICAgICAgIAorICAgICAgICA8bWV0aG9kIG5hbWU9InByaXZhdGVjaGF0IiBhcmdzPSJ2YWx1ZSxjbGllbnQiPgorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInByaXZhdGVjaGF0IEEgIixjbGllbnQucHVibGljU0lEKTsKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJwcml2YXRlY2hhdCBCICIsdmFsdWVbNl0pOworICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKHZhciBlZyBpbiB0aGlzLmNvbnRlbnQuc3Vidmlld3MpIHsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250ZW50LnN1YnZpZXdzW2VnXS5yZWZPYmogIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInByaXZhdGVjaGF0IF8xXyAiLHRoaXMuY29udGVudC5zdWJ2aWV3c1tlZ10ucmVmT2JqKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInByaXZhdGVjaGF0IF8yXyAiLHRoaXMuY29udGVudC5zdWJ2aWV3c1tlZ10ucmVmT2JqLnB1YmxpY1NJRCk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5jb250ZW50LnN1YnZpZXdzW2VnXS5yZWZPYmoucHVibGljU0lEID09IGNsaWVudC5wdWJsaWNTSUQgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfHwgdGhpcy5jb250ZW50LnN1YnZpZXdzW2VnXS5yZWZPYmoucHVibGljU0lEID09IHZhbHVlWzZdICkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50LnN1YnZpZXdzW2VnXS5fY2hhdG91dHB1dGJvcmRlci5fY2hhdG91dHB1dC5hZGRDaGF0SGlzdG9yeSh2YWx1ZSxjbGllbnQpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgCisgICAgICAgIDxtZXRob2QgbmFtZT0iYWRkQ2hhdCIgYXJncz0icmVmT2JqIj4KKyAgICAgICAgICAgIHRoaXMuYWRkQ2hhdFN5bmMocmVmT2JqLGZhbHNlKTsKKyAgICAgICAgPC9tZXRob2Q+CisgICAgICAgIAorICAgICAgICA8bWV0aG9kIG5hbWU9ImFkZENoYXRTeW5jIiBhcmdzPSJyZWZPYmoscmVtb3RlT3BlbiI+CisgICAgICAgICAgICBpZiAodGhpcy5jb250ZW50LnZpc2liaWxpdHkgPT0gImhpZGRlbiIpIHsKKyAgICAgICAgICAgICAgICB0aGlzLnRvZ2dsZW9wZW4oKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yICh2YXIgZWcgaW4gdGhpcy5jb250ZW50LnN1YnZpZXdzKSB7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udGVudC5zdWJ2aWV3c1tlZ10ucmVmT2JqICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udGVudC5zdWJ2aWV3c1tlZ10ucmVmT2JqLnB1YmxpY1NJRCA9PSByZWZPYmoucHVibGljU0lEKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgbHoubGFiZWxlcnJvclBvcHVwKGNhbnZhcy5tYWluX2NvbnRlbnQuX2NvbnRlbnQuaW5uZXIseworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JsYWJlbGlkOjE0OTYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJhZGRDaGF0IDo6ICIscmVmT2JqKTsKKyAgICAgICAgICAgIGZvciAodmFyIGVnIGluIHRoaXMuY29udGVudC5jaGF0YmFyLnN1YnZpZXdzKSB7CisgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50LmNoYXRiYXIuc3Vidmlld3NbZWddLmlzYWN0aXZlID0gZmFsc2U7CisgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50LmNoYXRiYXIuc3Vidmlld3NbZWddLm9ubW91c2VvdXQuc2VuZEV2ZW50KG51bGwpOworICAgICAgICAgICAgICAgIHRoaXMuY29udGVudC5jaGF0YmFyLnN1YnZpZXdzW2VnXS5vYmpSZWYuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciBjaGF0VGFiUHJpdmF0ZVJlZiA9IG5ldyBsei5jaGF0VGFiUHJpdmF0ZUNoYXQodGhpcy5jb250ZW50LHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZk9iajpyZWZPYmosCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdGVPcGVuOnJlbW90ZU9wZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIHZhciB0ZW1wV2lkdGggPSB0aGlzLmNvbnRlbnQuY2hhdGJhci5nZXRDdXJyZW50U2l6ZSgpOworICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgdFdoaXRlYm9hcmRCdG4gPSBuZXcgbHouY2hhdE1pbmlCdXR0b24odGhpcy5jb250ZW50LmNoYXRiYXIseworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqUmVmOmNoYXRUYWJQcml2YXRlUmVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6dGVtcFdpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNhY3RpdmU6dHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ0bk5hbWU6cmVmT2JqLmZpcnN0bmFtZSsiICIrcmVmT2JqLmxhc3RuYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5jb250ZW50LmNoYXRiYXIuY3VycmVudEJ0biA9IHRXaGl0ZWJvYXJkQnRuOyAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHRXaGl0ZWJvYXJkQnRuLm9ubW91c2VvdXQuc2VuZEV2ZW50KG51bGwpOworICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uaXNvcGVuIiBhcmdzPSJvIj4KKwkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbmlzb3BlbiIsbyk7CisJCQlpZiAobykgeworCQkJCWNhbnZhcy5fY2hhdGNvbnRlbnQuZG9Jbml0QnlPcGVuKCk7CisJCQkJaWYgKGNhbnZhcy5jdXJyZW50Um9vbU9iamVjdCAhPSBudWxsKQorCQkJCQljb250ZW50Ll9jb250ZW50MS5fY2hhdHRhYmJvdHRvbS51cGRhdGVmb250YnV0dG9udmlzaWJsZSgpOworCQkJCXRoaXMuZG9CbGluayA9IGZhbHNlOworCQkJCXRoaXMuX25ld01lc3NhZ2Uuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisJCQkJdGhpcy5fbmV3TWVzc2FnZS5zZXRBdHRyaWJ1dGUoICJvcGFjaXR5IiwgMCApOworCQkJCXRoaXMuY29udGVudC5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisJCQl9IGVsc2UgeworCQkJCXRoaXMuY29udGVudC5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKwkJCX0KKwkJPC9oYW5kbGVyPgorCisJCTxtZXRob2QgbmFtZT0ic3RhcnRCbGluayI+CisJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic3RhcnRCbGluayIsdGhpcy5vcGFjaXR5KTsKKwkJCWlmICh0aGlzLmlzb3BlbikgcmV0dXJuOworCQkJaWYgKHRoaXMuZG9CbGluaykgeworCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJkb0JsaW5rIGFscmVhZHkgc3RhcnRlZCAhISEiKTsKKwkJCX0gZWxzZSB7CisJCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImRvQmxpbmsiKTsKKwkJCQl0aGlzLmRvQmxpbmsgPSB0cnVlOworCQkJCXRoaXMuX25ld01lc3NhZ2Uuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworCQkJCWx6LlRpbWVyLmFkZFRpbWVyKCB0aGlzLmZhZGVEZWxlZ2F0ZSAsIDEwMDAgKTsKKwkJCX0KKwkJPC9tZXRob2Q+CisKKwkJPG1ldGhvZCBuYW1lPSJzaG93VGV4dCIgYXJncz0icmVmT2JqIj4KKwkJCWlmICh0aGlzLmRvQmxpbmspIHsKKwkJCQlsei5UaW1lci5hZGRUaW1lciggdGhpcy5mYWRlRGVsZWdhdGUgLCAxMDAwICk7CisJCQkJaWYgKHRoaXMuX25ld01lc3NhZ2Uub3BhY2l0eSA9PSAwKSB7CisJCQkJCXRoaXMuX25ld01lc3NhZ2UuYW5pbWF0ZSggIm9wYWNpdHkiLCAxLjAsIDQwMCApOworCQkJCX0gZWxzZSB7CisJCQkJCXRoaXMuX25ld01lc3NhZ2UuYW5pbWF0ZSggIm9wYWNpdHkiLCAwLCA0MDAgKTsKKwkJCQl9CisJCQl9IGVsc2UgeworCQkJCXRoaXMuX25ld01lc3NhZ2Uuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisJCQl9CisJCTwvbWV0aG9kPgorCisgICAgICAgIDx2aWV3IG5hbWU9ImNvbnRlbnQiIHZpc2liaWxpdHk9ImhpZGRlbiIgeT0iMjIiCisgICAgICAgICAgICAgIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodC0yMiB9IiB3aWR0aD0iJHsgcGFyZW50LndpZHRoIH0iPgorICAgICAgICAgICAgPGNoYXRCYXJNZW51IG5hbWU9ImNoYXRiYXIiPgorICAgICAgICAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0icmVmT2JqIiB2YWx1ZT0ibnVsbCIgLz4KKyAgICAgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9Im9iak1lc3NhZ2UiIHZhbHVlPSJudWxsIiAvPgorICAgICAgICAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0icHVibGljU0lEIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50QnRuID0gdGhpcy5fYnV0dG9uMTsKKyAgICAgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25SZW1vdmVXaW5kb3ciIGFyZ3M9InB1YmxpY1NJRCI+CisgICAgICAgICAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJvblJlbW92ZVdpbmRvdyA6OiAiLHB1YmxpY1NJRCk7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucHVibGljU0lEID0gcHVibGljU0lEOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub2JqTWVzc2FnZSA9IG5ldyBBcnJheSgpOworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vYmpNZXNzYWdlWzBdID0gJ2Nsb3NlcHJpdmF0ZWNoYXQnOworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vYmpNZXNzYWdlWzFdID0gY2FudmFzLnB1YmxpY1NJRDsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZVdpdGhDbGllbnRCeVB1YmxpY1NJRC5kb0NhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgXV0+CisgICAgICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9InNlbmRNZXNzYWdlV2l0aENsaWVudEJ5UHVibGljU0lEIiBmdW5jbmFtZT0ic2VuZE1lc3NhZ2VXaXRoQ2xpZW50QnlQdWJsaWNTSUQiIAorICAgICAgICAgICAgICAgICAgICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAKKyAgICAgICAgICAgICAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBhcmVudC5vYmpNZXNzYWdlOyA8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICAgICAgICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBwYXJlbnQucGFyZW50LnB1YmxpY1NJRDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICAgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzZW5kTWVzc2FnZVdpdGhDbGllbnRCeVB1YmxpY1NJRCBnZXRWYWx1ZSA6ICIsdmFsdWUpOworICAgICAgICAgICAgICAgICAgICAgICAgXV0+CisgICAgICAgICAgICAgICAgICAgIDwvaGFuZGxlcj4gICAKKyAgICAgICAgICAgICAgICA8L25ldFJlbW90ZUNhbGxIaWI+CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgPGNoYXRNaW5pQnV0dG9uIG5hbWU9Il9idXR0b24xIiBpc2FjdGl2ZT0idHJ1ZSIgaXNDbG9zYWJsZT0iZmFsc2UiID4KKyAgICAgICAgICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJidG5OYW1lIiwgY2FudmFzLmdldExhYmVsTmFtZSgxNDk0KSArICIgMSIpOworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5vYmpSZWYgPSBwYXJlbnQucGFyZW50Ll9jb250ZW50MTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25tb3VzZW91dC5zZW5kRXZlbnQodGhpcyk7CisgICAgICAgICAgICAgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgICAgICAgICA8L2NoYXRNaW5pQnV0dG9uPgorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgPC9jaGF0QmFyTWVudT4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPGNoYXRUYWIgbmFtZT0iX2NvbnRlbnQxIiAvPgorICAgICAgICAgICAgCisgICAgICAgIDwvdmlldz4KKwkJCQorCQk8bGFiZWxUZXh0IGxhYmVsaWQ9IjExOTkiIHg9IiR7IHBhcmVudC53aWR0aCAtIHRoaXMud2lkdGggfSIgYmdjb2xvcj0iMHhGRkZGRkYiCisgICAgICAgIAkJICAgeT0iMiIgZm9udHNpemU9IjEwIiBmb250c3R5bGU9ImJvbGQiIGZnY29sb3I9IjB4RkYzMzAwIiAvPgorCisJCTx2aWV3IG5hbWU9Il9uZXdNZXNzYWdlIiB5PSIwIiB4PSIkeyBwYXJlbnQud2lkdGgtdGhpcy53aWR0aCB9IgorCQkJdmlzaWJpbGl0eT0iaGlkZGVuIj4KKwkJCTx2aWV3IHg9IjEiIHk9IjIiIHJlc291cmNlPSJjaGF0X21lc3NhZ2VfaW5jb21pbmdfcnNjIiAvPgorCQkJPGxhYmVsVGV4dCB4PSIyMiIgeT0iMiIgZmdjb2xvcj0iMHgwMDgwMDAiIGZvbnRzdHlsZT0iYm9sZCIKKwkJCQlsYWJlbGlkPSIxNDE3IiAvPgorCQk8L3ZpZXc+CisKKwk8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9jaGF0L2NoYXRPdXRwdXQubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvY2hhdC9jaGF0T3V0cHV0Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNjRkY2NhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvY2hhdC9jaGF0T3V0cHV0Lmx6eApAQCAtMCwwICsxLDE1NyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworCis8IS0tLSBjaGF0IG91dHB1dCBzcGVjaWFsaXplZCBmb3IgdmlkZW8tY29uZmVyZW5jZSAtLT4KKzxjbGFzcyBuYW1lPSJjaGF0T3V0cHV0IiBleHRlbmRzPSJ2aWV3IiBoZWlnaHQ9IiR7IHBhcmVudC5oZWlnaHQtMSB9IiAKKyAgICAgICAgICAgIGNsaXA9InRydWUiIHdpZHRoPSIkeyBwYXJlbnQud2lkdGgtMSB9IiBiZ2NvbG9yPSIweEZGRkZGRiI+CisKKyAgICA8YXR0cmlidXRlIG5hbWU9ImlzQWxyZWFkeUxvYWRlZCIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIi8+Cis8IS0tLQorIEludm9rZWQgZnJvbSBWaWRlb0NvbnRhaW5lciBjYXVzZSBkb21haW4vcm9vbSBtdXN0IGJlIHNldCBmaXJzdAorIC0tPgorICAgIDxtZXRob2QgbmFtZT0iZG9Jbml0QnlPcGVuIj4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICBpZiAoIXRoaXMuaXNBbHJlYWR5TG9hZGVkKSB7CisgICAgICAgICAgICAJdGhpcy5pc0FscmVhZHlMb2FkZWQgPSB0cnVlOworICAgICAgICAgICAgCXRoaXMuX2NidGV4dC5jbGVhckNoYXRPdXRwdXQoKTsKKyAgICAgICAgICAgICAgICB0aGlzLmdldFJvb21DaGF0SGlzdG9yeS5kb0NhbGwoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJyZWxvYWQiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgCXRoaXMuX2NidGV4dC5jbGVhckNoYXRPdXRwdXQoKTsKKyAgICAgICAgICAgIHRoaXMuZ2V0Um9vbUNoYXRIaXN0b3J5LmRvQ2FsbCgpOworICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4gICAgCisgICAgCisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iZ2V0Um9vbUNoYXRIaXN0b3J5IiBmdW5jbmFtZT0iY2hhdHNlcnZpY2UuZ2V0Um9vbUNoYXRIaXN0b3J5IiAKKyAgICAgICAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZSB0aGUgcnRtcGNvbm5lY3Rpb24KKyAgICAgICAgICAgICAgICBpZigkZGVidWcpIERlYnVnLndyaXRlKCJjaGF0T3V0cHV0L2dldFJvb21DaGF0SGlzdG9yeTogIix2YWx1ZSk7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8dmFsdWUubGVuZ3RoO2krKyl7CisgICAgICAgICAgICAgICAgICAgIGlmKCRkZWJ1ZykgRGVidWcud3JpdGUodmFsdWVbaV0ubWVzc2FnZSx2YWx1ZVtpXS5jbGllbnQpOworICAgICAgICAgICAgICAgICAgICBwYXJlbnQuYWRkQ2hhdEhpc3RvcnkodmFsdWVbaV0ubWVzc2FnZSx2YWx1ZVtpXS5jbGllbnQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+ICAgCisgICAgPC9uZXRSZW1vdGVDYWxsSGliPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iZ2V0TG9nIj4KKyAgICAJPCFbQ0RBVEFbCisgICAgCQl2YXIgdFN0cmluZyA9ICIiOworICAgIAkJCisgICAgCQlmb3IgKHZhciBpPTA7aTx0aGlzLl9jYnRleHQuc3Vidmlld3MubGVuZ3RoO2krKykgeworICAgIAkJCQorICAgIAkJCWlmIChpIT0wKSB7CisgICAgCQkJCXRTdHJpbmcgKz0gIjxici8+IjsKKyAgICAJCQl9CisgICAgCQkJCisgICAgCQkJdFN0cmluZyArPSB0aGlzLl9jYnRleHQuc3Vidmlld3NbaV0udXNlcm5hbWUgKyAnOiAnCisgICAgCQkJCQkrIHRoaXMuX2NidGV4dC5zdWJ2aWV3c1tpXS5tZXNzYWdlOworICAgIAkJCQorICAgIAkJfQorICAgIAkJCisgICAgCQlyZXR1cm4gdFN0cmluZzsKKyAgICAJCisgICAgCV1dPgorICAgIDwvbWV0aG9kPiAgICAgCisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJhZGRDaGF0SGlzdG9yeSIgYXJncz0idmFsdWUsY2xpZW50Ij4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAvL2lmKCRkZWJ1ZykgRGVidWcud3JpdGUoImNoYXRPdXRwdXQvYWRkQ2hhdEhpc3Rvcnk6ICIsdmFsdWUsY2xpZW50KTsKKyAgICAgICAgICAgIGNhbnZhcy5jdXJyZW50QmFzZUNvbmZlcmVuY2VSb29tLl9jaGF0UGFuZWxTdHJpY3Quc3RhcnRCbGluaygpOworICAgICAgICAgICAgLy9pcyBSaWdodCBUbyBMZWZ0ID8gbm90IGNoZWNrZWQgZm9yIHRoZSBtb21lbnQKKyAgICAgICAgICAgIGlmICh2YWx1ZVs3XSl7CisgICAgICAgICAgICAgICAgdmFyIHVzZXJuYW1lID0gY2xpZW50LmZpcnN0bmFtZSsiICIrY2xpZW50Lmxhc3RuYW1lOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB2YXIgdXNlcm5hbWUgPSBjbGllbnQuZmlyc3RuYW1lKyIgIitjbGllbnQubGFzdG5hbWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2YXIgbWVzc2FnZU9iaiA9IHZhbHVlW3ZhbHVlLmxlbmd0aCAtIDFdOworICAgICAgICAgICAgLy92YXIgbmV3bWVzc2FnZSA9ICI8Rk9OVCBDT0xPUj0nIit2YWx1ZVs1XSsiJyBzaXplPScxMSc+IitjbGllbnQuZmlyc3RuYW1lKyIgIitjbGllbnQubGFzdG5hbWUrIjwvRk9OVD46PEZPTlQgQ09MT1I9JzB4MDAwMDAwJyBzaXplPScxMSc+Iit2YWx1ZVs0XSsiPC9GT05UPjxiciAvPiI7CisgICAgICAgICAgICAvL0RlYnVnLndyaXRlKCJuZXdtZXNzYWdlOiAiLG5ld21lc3NhZ2UpOworICAgICAgICAgICAgLy90aGlzLl9jYnRleHQuc2V0QXR0cmlidXRlKCd0ZXh0Jyx0aGlzLl9jYnRleHQudGV4dCtuZXdtZXNzYWdlKTsKKyAgICAgICAgICAgIHZhciB1c2VyY29sb3IgPSB2YWx1ZVs1XTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIGlzRGlyZWN0TGluayA9IG51bGw7CisgICAgICAgICAgICBpZiAodmFsdWVbOF0gPiAwKSB7CisgICAgICAgICAgICAJaXNEaXJlY3RMaW5rID0gZmFsc2U7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgCWlzRGlyZWN0TGluayA9IHRydWU7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChjYW52YXMuaXNpbml0Um9vbURpcmVjdCB8fCBjYW52YXMucmVtb3RlVXNlckxvZ2luIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCBjYW52YXMuZGlyZWN0VXNlckxvZ2luIHx8IGNhbnZhcy5zZWN1cmVSZW1vdGVVc2VyTG9naW4pIHsKKyAgICAgICAgICAgICAgICBpc0RpcmVjdExpbmsgPSB0cnVlOyAgICAgICAgICAgICAgIAkKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICggdXNlcmNvbG9yPT1udWxsIHx8IHVzZXJjb2xvcj09MCB8fCAodXNlcmNvbG9yICE9bnVsbCAmJiB1c2VyY29sb3IubGVuZ3RoPT0wKSApdXNlcmNvbG9yPTB4Q0NDQ0NDOworICAgICAgICAgICAgCisgICAgICAgICAgICAKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImFkZENoYXRIaXN0b3J5IHVzZXJJRDogIix2YWx1ZVs4XSxpc0RpcmVjdExpbmspOworICAgICAgICAgICAgCisgICAgICAgICAgICBuZXcgbHouY2hhdFRhYkl0ZW1FbW90aWNvbnModGhpcy5fY2J0ZXh0LHsKKyAgICAgICAgICAgIAkJCXJhd01lc3NhZ2U6IHZhbHVlLAorCQkgICAgICAgICAgICAgICAgbWVzc2FnZU9iajptZXNzYWdlT2JqLAorCSAgICAgICAgICAgICAgICAgICAgdXNlcl9pZDp2YWx1ZVs4XSwKKwkgICAgICAgICAgICAgICAgICAgIHB1YmxpY1NJRDp2YWx1ZVs2XSwKKwkgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6dmFsdWVbNF0sCisJICAgICAgICAgICAgICAgICAgICBwaWN0dXJlX3VyaTpjbGllbnQucGljdHVyZV91cmksCisJCSAgICAgICAgICAgICAgICB1c2VyY29sb3I6dXNlcmNvbG9yLAorCQkgICAgICAgICAgICAgICAgdXNlcm5hbWU6dXNlcm5hbWUsCisJCSAgICAgICAgICAgICAgICBpc0RpcmVjdExpbms6aXNEaXJlY3RMaW5rLAorCQkgICAgICAgICAgICAgICAgdXNlcnRpbWU6dmFsdWVbMV0KKwkgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuc2V0U2Nyb2xsVG9NYXgoKTsgICAgICAgICAgICAgIAorICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4gICAgICAgICAgIAorICAgIAorICAgIDxtZXRob2QgbmFtZT0ic2V0U2Nyb2xsVG9NYXgiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgaWYoX2NidGV4dC5oZWlnaHQ+dGhpcy5oZWlnaHQpeworICAgICAgICAgICAgbXlzY3JvbGxiYXIuc2Nyb2xsdGFyZ2V0LnNldEF0dHJpYnV0ZShteXNjcm9sbGJhci5zY3JvbGxhdHRyLCh0aGlzLmhlaWdodC1fY2J0ZXh0LmhlaWdodCkpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8dmlldyBuYW1lPSJfY2J0ZXh0IiB3aWR0aD0iJHsgcGFyZW50LndpZHRoIH0iIGxheW91dD0iYXhpczp5O3NwYWNpbmc6MCIgPgorICAgIAk8bWV0aG9kIG5hbWU9ImNsZWFyQ2hhdE91dHB1dCI+CisgICAgCQk8IVtDREFUQVsKKyAgICAJCQl3aGlsZSAodGhpcy5zdWJ2aWV3cy5sZW5ndGg+MCl7CisgICAgCQkJCXRoaXMuc3Vidmlld3NbMF0uZGVzdHJveSgpOworICAgIAkJCX0KKyAgICAJCV1dPgorICAgIAk8L21ldGhvZD4KKyAgICA8L3ZpZXc+CisgICAgCisgICAgPG9tX3ZzY3JvbGxiYXIgbmFtZT0ibXlzY3JvbGxiYXIiIC8+CisKKzwvY2xhc3M+CisgICAgCisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2NoYXQvY2hhdFRhYi5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9jaGF0L2NoYXRUYWIubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlYjkzZDMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9jaGF0L2NoYXRUYWIubHp4CkBAIC0wLDAgKzEsOTMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzwhLS0tCitDaGF0IHRhYnBhbmUgY2xhc3MuIEl0IGNvbnRhaW5zIGNoYXRPdXRwdXQtY2xhc3MgYW5kIGNhdFRhYkJvdHRvbS1jbGFzcy4KK1RoaXMgaXMgdXNlZCBpbiB0aGUgY29uZmVyZW5jZS4KKy0tPgorPGNsYXNzIG5hbWU9ImNoYXRUYWIiIGV4dGVuZHM9InNpbXBsZUJhc2VUYWJwYW5lIiBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ21haW5CYWNrZ3JvdW5kQ29sb3InKSB9IiB4PSIwIj4KKwk8dmlldyBuYW1lPSJfY2hhdG91dHB1dGJvcmRlciIgaGVpZ2h0PSIkeyBwYXJlbnQuaGVpZ2h0LTQ4IH0iIHdpZHRoPSIkeyBwYXJlbnQud2lkdGgtMiB9IiAKKwkJCQliZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ3NlY29uZEJvcmRlckNvbG9yJykgfSI+CisJCQorCQk8Y2hhdE91dHB1dCBuYW1lPSJfY2hhdG91dHB1dCIgeD0iMSIgeT0iMSIgPgorCQkJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKwkJCQljYW52YXMuX2NoYXRjb250ZW50ID0gdGhpczsKKwkJCTwvaGFuZGxlcj4KKwkJPC9jaGF0T3V0cHV0PgorCTwvdmlldz4KKwkKKwk8Y2hhdFRhYkJvdHRvbSBuYW1lPSJfY2hhdHRhYmJvdHRvbSIgCisJCQkJICAgeT0iJHsgcGFyZW50LmhlaWdodC00NiB9IiB4PSIwIiB3aWR0aD0iJHsgcGFyZW50LndpZHRoLTIgfSIgLz4KKwkJCQkgICAKKzwvY2xhc3M+CisKKzxjbGFzcyBuYW1lPSJjaGF0VGFiUHJpdmF0ZUNoYXQiIGV4dGVuZHM9InNpbXBsZUJhc2VUYWJwYW5lIiB5PSIyMiIgaGVpZ2h0PSIkeyBwYXJlbnQuaGVpZ2h0LTIyIH0iIAorICAgICAgICAgICAgICAgICB3aWR0aD0iJHsgcGFyZW50LndpZHRoIH0iPgorCisJPGF0dHJpYnV0ZSBuYW1lPSJyZWZPYmoiIHZhbHVlPSJudWxsIi8+CisJPGF0dHJpYnV0ZSBuYW1lPSJvYmpNZXNzYWdlIiB2YWx1ZT0ibnVsbCIvPgorCTxhdHRyaWJ1dGUgbmFtZT0icmVtb3RlT3BlbiIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIi8+CisJCisJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKwkJPCFbQ0RBVEFbCisJCQlpZiAodGhpcy5yZW1vdGVPcGVuKSB7CisJCQkJcmV0dXJuOworCQkJfQorCQkJdGhpcy5vYmpNZXNzYWdlID0gbmV3IEFycmF5KCk7CisJCQl0aGlzLm9iak1lc3NhZ2VbMF0gPSAnbmV3cHJpdmF0ZWNoYXQnOworCQkJdmFyIHUgPSBjYW52YXMudGhpc2hpYi51c2Vyb2JqZWN0OworCQkJdGhpcy5vYmpNZXNzYWdlWzFdID0geworCQkJCXB1YmxpY1NJRDogY2FudmFzLnB1YmxpY1NJRAorCQkJCSwgZmlyc3RuYW1lOiB1LmZpcnN0bmFtZQorCQkJCSwgbGFzdG5hbWU6IHUubGFzdG5hbWUKKwkJCQl9OworCQkJCisJCQl0aGlzLnNlbmRNZXNzYWdlV2l0aENsaWVudEJ5UHVibGljU0lELmRvQ2FsbCgpOworCQkJCisJCQlpZiAoY2FudmFzLmN1cnJlbnRSb29tT2JqZWN0ICE9IG51bGwpIHsKKwkJCQlfY2hhdHRhYmJvdHRvbS51cGRhdGVmb250YnV0dG9udmlzaWJsZSgpOworCQkJfQorCQldXT4KKwk8L2hhbmRsZXI+CisJCisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0ic2VuZE1lc3NhZ2VXaXRoQ2xpZW50QnlQdWJsaWNTSUQiIGZ1bmNuYW1lPSJzZW5kTWVzc2FnZVdpdGhDbGllbnRCeVB1YmxpY1NJRCIgCisgICAgICAgIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiA+IAorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBwYXJlbnQucGFyZW50Lm9iak1lc3NhZ2U7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIHBhcmVudC5wYXJlbnQucmVmT2JqLnB1YmxpY1NJRDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzZW5kTWVzc2FnZVdpdGhDbGllbnRCeVB1YmxpY1NJRCBnZXRWYWx1ZSA6ICIsdmFsdWUpOworICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4gICAKKyAgICA8L25ldFJlbW90ZUNhbGxIaWI+CisJCisJPHZpZXcgbmFtZT0iX2NoYXRvdXRwdXRib3JkZXIiIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodC00OCB9IgorICAgICAgIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignYmFzZWJnY29sb3JpemVyJykgfSIgIHdpZHRoPSIkeyBwYXJlbnQud2lkdGgtMiB9Ij4KKwkJCisJCTxjaGF0T3V0cHV0IG5hbWU9Il9jaGF0b3V0cHV0IiB4PSIxIiB5PSIxIiAvPgorCTwvdmlldz4KKwkKKwk8Y2hhdFRhYkJvdHRvbSBuYW1lPSJfY2hhdHRhYmJvdHRvbSIgaXNQcml2YXRlPSJ0cnVlIiAKKwkJCQkgICB5PSIkeyBwYXJlbnQuaGVpZ2h0LTQ2IH0iIHg9IjAiIHdpZHRoPSIkeyBwYXJlbnQud2lkdGgtMiB9IiAvPgorPC9jbGFzcz4KKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2NoYXQvY2hhdFRhYkJvdHRvbS5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9jaGF0L2NoYXRUYWJCb3R0b20ubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1MWVlMDUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9jaGF0L2NoYXRUYWJCb3R0b20ubHp4CkBAIC0wLDAgKzEsMjAzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCisJPCEtLS0gVmlldyBvZiB0aGUgYnV0dG9tIGFyZWEgb2YgY2hhdC4gSXQgY29udGFpbnMgYnV0dG9ucyBvZiBtZXNzYWdlLGVtb3RpY29ucyxjbGVhci4gLS0+CisJPGNsYXNzIG5hbWU9ImNoYXRUYWJCb3R0b20iIGV4dGVuZHM9InZpZXciIGhlaWdodD0iNDIiPgorCQk8YXR0cmlidXRlIG5hbWU9ImlzUHJpdmF0ZSIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorCQkKKwkJPHZpZXcgeD0iMCIgeT0iMCIgaGVpZ2h0PSIyMCIgd2lkdGg9IiR7IHBhcmVudC53aWR0aC0yIH0iIG5hbWU9Im1lc3NhZ2UiCisJCQliZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ2Jhc2ViZ2NvbG9yaXplcicpIH0iPgorCQkJPG1ldGhvZCBuYW1lPSJnZXRUZXh0Ij4KKwkJCQlyZXR1cm4gdGhpcy5fY3RleHQuZ2V0VGV4dCgpOworCQkJPC9tZXRob2Q+CisJCQk8bWV0aG9kIG5hbWU9InNldFRleHQiIGFyZ3M9InR4dCI+CisJCQkJdGhpcy5fY3RleHQuc2V0QXR0cmlidXRlKCd0ZXh0Jyx0eHQpOworCQkJPC9tZXRob2Q+CisJCQk8Y3VzdG9tSW5wdXR0ZXh0IG5hbWU9Il9jdGV4dCIgd2lkdGg9IiR7IHBhcmVudC53aWR0aC0yIH0iCisJCQkJaGVpZ2h0PSIkb25jZXsgcGFyZW50LmhlaWdodC0yIH0iIHg9IjEiIHk9IjEiIGJnY29sb3I9IndoaXRlIj4KKwkJCQk8aGFuZGxlciBuYW1lPSJvbmtleXVwIiBhcmdzPSJrZXkiPgorCSAgICAgICAgICAgICAgICA8IVtDREFUQVsKKwkgICAgICAgICAgICAgICAgdmFyIHJldmVyc2UgPSBjYW52YXMucmV2ZXJzZUFsbChwYXJlbnQuZ2V0VGV4dCgpKTsKKwkgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgIC8vIHBhcmVudC5zZXRUZXh0KHJldmVyc2UpOworCSAgICAgICAgICAgICAgICAvLyAxMyBpcyByZXR1cm4KKwkgICAgICAgICAgICAgICAgaWYgKChrZXk9PTI3KSB8fCAoa2V5PT0xMykpIHsKKwkgICAgICAgICAgICAgICAgCXRoaXMucGFyZW50Ll9idXR0b24ub25jbGljay5zZW5kRXZlbnQoKTsKKwkgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICBdXT4KKwkJCQk8L2hhbmRsZXI+CisJCQk8L2N1c3RvbUlucHV0dGV4dD4KKworCQkJPGF0dHJpYnV0ZSBuYW1lPSJvYmpNZXNzYWdlIiB2YWx1ZT0ibnVsbCIgLz4KKwkJCQorCQkJPHNpbXBsZUxhYmVsQnV0dG9uIG5hbWU9Il9idXR0b24iIGxhYmVsaWQ9IjIyMCIKKwkJCQloZWlnaHQ9IjIxIiB3aWR0aD0iODAiIHg9IiRvbmNleyBwYXJlbnQud2lkdGgtODAgfSI+CisJCQkJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisJCQkJPCFbQ0RBVEFbCisJCQkJCXZhciBtZXNzYWdlID0gdGhpcy5wYXJlbnQuZ2V0VGV4dCgpOworCQkJCQlpZiAobWVzc2FnZS5sZW5ndGggIT0gMCkgeworCQkJCQkJcGFyZW50Lm9iak1lc3NhZ2UgPSBuZXcgQXJyYXkoKTsKKwkJCQkJCXZhciBvbSA9IHBhcmVudC5vYmpNZXNzYWdlOworCQkJCQkJb21bMF0gPSBwYXJlbnQucGFyZW50LmlzUHJpdmF0ZSA/ICdwcml2YXRlY2hhdCcgOiAnY2hhdCc7CisJCQkJCQkvL1RoZSBzZXJ2ZXIgc2lkZSB3aWxsIHB1dCB0aW1lIGhlcmUKKwkJCQkJCW9tWzFdID0gIiI7CisJCQkJCQkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJTZXR0aW5nIE1lc3NhZ2UiKTsKKwkJCQkJCW9tWzJdID0gJ25ld3RleHRtZXNzYWdlJzsKKwkJCQkJCW9tWzNdID0gaGliLnVzZXJvYmplY3QubG9naW47CisJCQkJCQkvL2lmIChwYXJlbnQucGFyZW50Ll9pbnZlcnNlV29yZGluZy5nZXRWYWx1ZSgpKSBtZXNzYWdlID0gY2FudmFzLnJldmVyc2VBbGwobWVzc2FnZSkKKwkJCQkJCW9tWzRdID0gbWVzc2FnZTsKKwkJCQkJCW9tWzVdID0gY2FudmFzLmN1cnJlbnR1c2VyY29sb3I7CisJCQkJCQlvbVs2XSA9IHBhcmVudC5wYXJlbnQuaXNQcml2YXRlID8gcGFyZW50LnBhcmVudC5wYXJlbnQucmVmT2JqLnB1YmxpY1NJRCA6IGNhbnZhcy5wdWJsaWNTSUQ7CisJCQkJCQlvbVs3XSA9IGNhbnZhcy5pc3J0bDsKKwkJCQkJCW9tWzhdID0gaGliLnVzZXJvYmplY3QudXNlcl9pZDsKKwkJCQkJCW9tWzldID0gY2FudmFzLmN1cnJlbnRSb29tT2JqZWN0LmNoYXRNb2RlcmF0ZWQgJiYgIWNhbnZhcy5pc21vZGVyYXRvcjsKKwkJCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzZW5kOiAiLCBwYXJlbnQucGFyZW50LnBhcmVudCk7CisJCQkJCQlpZiAocGFyZW50LnBhcmVudC5pc1ByaXZhdGUpIHsKKwkJCQkJCQlwYXJlbnQuc2VuZE1lc3NhZ2VXaXRoQ2xpZW50QnlQdWJsaWNTSUQuZG9DYWxsKCk7CisJCQkJCQl9IGVsc2UgeworCQkJCQkJCWhpYi5zZW5kQ2hhdE1lc3NhZ2VXaXRoQ2xpZW50LnNlbmRNZXNzYWdlKG9tKTsKKwkJCQkJCX0KKwkJCQkJCXRoaXMucGFyZW50LnNldFRleHQoJycpOworCQkJCQl9CisJCQkJXV0+CisJCQkJPC9oYW5kbGVyPgorCQkJPC9zaW1wbGVMYWJlbEJ1dHRvbj4KKworCQkJPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0ic2VuZE1lc3NhZ2VXaXRoQ2xpZW50QnlQdWJsaWNTSUQiCisJCQkJZnVuY25hbWU9ImNoYXRzZXJ2aWNlLnNlbmRNZXNzYWdlV2l0aENsaWVudEJ5UHVibGljU0lEIiByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSI+CisJCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50Lm9iak1lc3NhZ2U7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5yZWZPYmoucHVibGljU0lEOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCQkJPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisJCQkJCS8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisJCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJjaGF0c2VydmljZS5zZW5kTWVzc2FnZVdpdGhDbGllbnRCeVB1YmxpY1NJRCBnZXRWYWx1ZSA6ICIsdmFsdWUpOworCQkJCTwvaGFuZGxlcj4KKwkJCTwvbmV0UmVtb3RlQ2FsbEhpYj4KKwkJPC92aWV3PgorCisJCTxsYWJlbENoZWNrYm94IG5hbWU9Il9pbnZlcnNlV29yZGluZyIgeD0iMiIgeT0iMjQiCisJCQlsYWJlbGlkPSI1ODAiPgorCQkJPGF0dHJpYnV0ZSBuYW1lPSJkb1VwZGF0ZSIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorCQkJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKwkJCQl2YXIgZyA9IGNhbnZhcy5nZXRVc2VyRGF0YSgpOworCQkJCXZhciBzYXZlID0gZ1sicnRsQ2hlY2tib3giXTsKKwkJCQkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbmluaXQgZG9VcGRhdGUiLHNhdmUsZyk7CisJCQkJaWYoc2F2ZSkgeworCQkJCQl0aGlzLmRvVXBkYXRlID0gZmFsc2U7CisJCQkJCXRoaXMuc2V0VmFsdWUodHJ1ZSk7CisJCQkJfQorCQkJCXRoaXMuZG9VcGRhdGUgPSB0cnVlOworCQkJPC9oYW5kbGVyPgorCQkJPGhhbmRsZXIgbmFtZT0ib252YWx1ZSIgYXJncz0idiI+CisJCQkJaWYgKHRoaXMuZG9VcGRhdGUpIHsKKwkJCQkJLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib252YWx1ZSBkb1VwZGF0ZSIsdGhpcy5nZXRWYWx1ZSgpKTsKKwkJCQkJdmFyIGcgPSBjYW52YXMuZ2V0VXNlckRhdGEoKTsKKwkJCQkJZ1sicnRsQ2hlY2tib3giXT10aGlzLmdldFZhbHVlKCk7CisJCQkJCS8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9udmFsdWUgZG9VcGRhdGUiLGdbInJ0bENoZWNrYm94Il0pOworCQkJCQljYW52YXMuc2V0VXNlckRhdGEoZyk7CisJCQkJfQorCQkJPC9oYW5kbGVyPgorCQkJPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSI1ODEiIC8+CisJCTwvbGFiZWxDaGVja2JveD4KKworCQk8bWV0aG9kIG5hbWU9InVwZGF0ZWZvbnRidXR0b252aXNpYmxlIj4KKwkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJjaGF0VGFiQm90dG9tIHVwZGF0ZWZvbnRidXR0b252aXNpYmxlIGFsbG93Rm9udFN0eWxlcyIsCisJCQkJCQljYW52YXMuY3VycmVudFJvb21PYmplY3QuYWxsb3dGb250U3R5bGVzKTsKKwkJCV9idXR0b24uZm9udGJ1dHRvbi5zZXRWaXNpYmxlKGNhbnZhcy5jdXJyZW50Um9vbU9iamVjdC5hbGxvd0ZvbnRTdHlsZXMgPT0gdHJ1ZSB8fAorCQkJICAgIAkJCSAgIGNhbnZhcy5jdXJyZW50Um9vbU9iamVjdC5hbGxvd0ZvbnRTdHlsZXMgPT0gbnVsbCk7CisJCTwvbWV0aG9kPgorCisJCTx2aWV3IG5hbWU9Il9idXR0b24iIHdpZHRoPSIxNDAiIHk9IjIyIiBhbGlnbj0icmlnaHQiPgorCisJCQk8bWluaUljb25zSW1hZ2UgbmFtZT0iZm9udGJ1dHRvbiIgeT0iMiIgeD0iNjIiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgCisJCQkJc2hvd2hhbmRjdXJzb3I9InRydWUiIHNyYz0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUltYWdlKCdmb250X3N0eWxlJykgfSIgPgorICAgICAgICAJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAJCQl2YXIgcGljayA9IG5ldyBsei5mb250T3B0aW9ucyhjYW52YXMseworCQkJCQkJYnRuUmVmOnRoaXMucGFyZW50LnBhcmVudCwKKwkJCQkJCXg6KHRoaXMuZ2V0QXR0cmlidXRlUmVsYXRpdmUoJ3gnLGNhbnZhcyktMTMwKSwKKwkJCQkJCXk6KHRoaXMuZ2V0QXR0cmlidXRlUmVsYXRpdmUoJ3knLGNhbnZhcyktNDIpCisJCQkJCX0pOworCQkJCQlsei5Nb2RlTWFuYWdlci5tYWtlTW9kYWwocGljayk7ICAgCisgICAgICAgIAkJPC9oYW5kbGVyPgorICAgICAgICAJCTxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdmVyIj4KKyAgICAgICAgCQkJPCEtLSBsb3N0IHNlbGVjdGlvbiB3b3JrYXJvdW5kIC0tPgorICAgICAgICAJCQlwYXJlbnQucGFyZW50Lm1lc3NhZ2UuX2N0ZXh0LnNhdmVzZWxlY3Rpb24oKTsKKyAgICAgICAgCQk8L2hhbmRsZXI+CisgICAgICAgIAkJPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSIxNTMwIiAvPgorICAgICAgICAJPC9taW5pSWNvbnNJbWFnZT4KKworCQkJPG1pbmlJY29ucyB5PSIyIiB4PSI4MiIgcmVzb3VyY2U9InNtaWxlX2NoYXRfbG9nX3JzYyIKKwkJCQl3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHNob3doYW5kY3Vyc29yPSJ0cnVlIj4KKwkJCQk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKwkJCQkJdmFyIHBpY2sgPSBuZXcgbHouZW1vdEljb25zU2VsZWN0b3IoY2FudmFzLHsKKwkJCQkJCWJ0blJlZjp0aGlzLnBhcmVudC5wYXJlbnQsCisJCQkJCQl4Oih0aGlzLmdldEF0dHJpYnV0ZVJlbGF0aXZlKCd4JyxjYW52YXMpLTE0MCksCisJCQkJCQl5Oih0aGlzLmdldEF0dHJpYnV0ZVJlbGF0aXZlKCd5JyxjYW52YXMpLTE0MCkKKwkJCQkJfSk7CisJCQkJCWx6Lk1vZGVNYW5hZ2VyLm1ha2VNb2RhbCggcGljayApOworCQkJCTwvaGFuZGxlcj4KKwkJCQk8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IjQ0NSIgLz4KKwkJCTwvbWluaUljb25zPgorCisJCQk8bWluaUljb25zIHk9IjIiIHg9IjEwMiIgcmVzb3VyY2U9ImNvcHlfY2hhdF9sb2dfcnNjIgorCQkJCXdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc2hvd2hhbmRjdXJzb3I9InRydWUiIHZpc2libGU9IiRvbmNleyAhcGFyZW50LnBhcmVudC5pc1ByaXZhdGUgfSI+CisJCQkJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgICAgIHZhciB0U3RyaW5nID0gY2FudmFzLl9jaGF0Y29udGVudC5nZXRMb2coKTsKKyAgICAgICAgICAgICAgICAgICAgbmV3IGx6LnNob3dDaGF0TG9nKGNhbnZhcyx7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcjp0U3RyaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIF1dPgorCQkJCTwvaGFuZGxlcj4KKwkJCQk8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IjEyMDAiIC8+CisJCQk8L21pbmlJY29ucz4KKworCQkJPG1pbmlJY29uc0ltYWdlIHNyYz0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUltYWdlKCdidXR0b25fY2FuY2VsX3JzYycpIH0iCisJCQkJeT0iMiIgeD0iMTIyIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHNob3doYW5kY3Vyc29yPSJ0cnVlIgorCQkJCXZpc2libGU9IiRvbmNleyAhcGFyZW50LnBhcmVudC5pc1ByaXZhdGUgfSI+CisJCQkJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisJCQkJCWlmICghY2FudmFzLmlzbW9kZXJhdG9yKSB7CisJCQkJCS8vRG8gbm90IGFsbG93CisJCQkJCQluZXcgbHoubGFiZWxlcnJvclBvcHVwKGNhbnZhcyx7ZXJyb3JsYWJlbGlkOjc4M30pOworCQkJCQkJcmV0dXJuOworCQkJCQl9CisJCQkJCXBhcmVudC5jbGVhckNoYXQuZG9DYWxsKCk7CisJCQkJPC9oYW5kbGVyPgorCQkJCTxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iNDQyIiAvPgorCQkJPC9taW5pSWNvbnNJbWFnZT4KKworCQkJPHZpZXcgd2lkdGg9IjEiIC8+CisKKwkJCTxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImNsZWFyQ2hhdCIgZnVuY25hbWU9ImNoYXRzZXJ2aWNlLmNsZWFyQ2hhdCIKKwkJCQlyZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSI+CisJCQkJPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgICAgIC8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJjbGVhckNoYXQgOiAiLHZhbHVlKTsKKyAgICAgICAgICAgICAgICBdXT4KKwkJCQk8L2hhbmRsZXI+CisJCQk8L25ldFJlbW90ZUNhbGxIaWI+CisKKwkJPC92aWV3PgorCisJPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvY2hhdC9jaGF0VGFiSXRlbS5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9jaGF0L2NoYXRUYWJJdGVtLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOWQ2MWFhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvY2hhdC9jaGF0VGFiSXRlbS5sengKQEAgLTAsMCArMSw3OCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworCis8Y2xhc3MgbmFtZT0iY2hhdFRhYkl0ZW0iIGV4dGVuZHM9InZpZXciIAorCSAgIHdpZHRoPSIyNDAiID4KKworCTxhdHRyaWJ1dGUgbmFtZT0idXNlcl9pZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKwk8YXR0cmlidXRlIG5hbWU9InVzZXJuYW1lIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJ1c2VydGltZSIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0idXNlcmNvbG9yIiB2YWx1ZT0iMCIgdHlwZT0ic3RyaW5nIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0iY2J0ZXh0IiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisJCisJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKwkJPCFbQ0RBVEFbCisJCQlpZigkZGVidWcpIERlYnVnLndyaXRlKCJjaGF0VGFiSXRlbS9XSURUSDogIit0aGlzLndpZHRoKTsKKwkJCWlmKCRkZWJ1ZykgRGVidWcud3JpdGUoImNoYXRUYWIgSXRlbSBvbiBpbml0Iik7CisJICAgICAgICB2YXIgZG93bmxvYWR1cmwgPSBjYW52YXMuZ2V0VXJsKCkgKyAnRG93bmxvYWRIYW5kbGVyP2ZpbGVOYW1lPUNIQVQnCisJICAgICAgICAJCSsnJm1vZHVsZU5hbWU9Y2hhdCZwYXJlbnRQYXRoPSZyb29tX2lkPScKKwkgICAgICAgIAkJKycmcmVtb3RlVXNlcmlkPScrdGhpcy51c2VyX2lkCisJICAgICAgICAJCSsnJnNpZD0nK2NhbnZhcy5zZXNzaW9uSWQ7CisJICAgICAgICAvL0RlYnVnLndyaXRlKCJkb3dubG9hZHVybCAiK2Rvd25sb2FkdXJsKTsKKwkgICAgICAgIHRoaXMuX3VzZXJwaWMuc2V0QXR0cmlidXRlKCdzcmMnLGRvd25sb2FkdXJsKTsJCisJICAgICAgICAKKwkgICAgICAgIGlmKGNhbnZhcy5pc3J0bCA9PSAndHJ1ZScpeworCSAgICAgICAgCXRoaXMuaGVhZGVyX3VzZXIuc3RBdHRyaWJ1dGUoJ3RleHRhbGlnbicsICdyaWdodCcpOworCSAgICAgICAgCXRoaXMuaGVhZGVyX3RpbWUuc2V0QXR0cmlidXRlKCdhbGlnbicsICdsZWZ0Jyk7CisJICAgICAgICAJdGhpcy5tdWx0aS5zZXRBdHRyaWJ1dGUoJ3RleHRhbGlnbicsICdyaWdodCcpOworCSAgICAgICAgfQorCSAgICAgICAgCisJICAgICAgICAKKwkgICAgICAgIAorCSAgICAgICAgCisJICAgICAgICAvL0RlYnVnLndyaXRlKCJUSU1FOiAiK3RoaXMudXNlcnRpbWUpOworICAgICAgICBdXT4KKwk8L2hhbmRsZXI+CisJCisJPGltYWdlIG5hbWU9Il91c2VycGljIiAvPgorCQorCQorCTx0ZXh0IHRleHQ9IiRvbmNleyBwYXJlbnQudXNlcm5hbWUgfSIgeD0iNDAiIHJlc2l6ZT0iZmFsc2UiIGZvbnRzaXplPSIxMCIKKwkJICB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCAtIDQwIH0iIGJnY29sb3I9IiRvbmNleyBwYXJlbnQudXNlcmNvbG9yIH0iCisJCSAgc2VsZWN0YWJsZT0idHJ1ZSIgbmFtZT0iaGVhZGVyX3VzZXIiPgorCQkgIAorCTwvdGV4dD4KKwk8dGV4dCB0ZXh0PSIkb25jZXsgcGFyZW50LnVzZXJ0aW1lIH0iIGFsaWduPSJyaWdodCIgZm9udHNpemU9IjEwIiBzZWxlY3RhYmxlPSJ0cnVlIiBuYW1lPSJoZWFkZXJfdGltZSIgPgorCQkKKwk8L3RleHQ+CisJCisJCisJCisJPHRleHQgbXVsdGlsaW5lPSJ0cnVlIiB4PSI0MCIgeT0iMjAiIGZvbnRzaXplPSIxMCIgdGV4dD0iJG9uY2V7IHBhcmVudC5jYnRleHQgfSIKKwkJICB3aWR0aD0iMjIwIiBzZWxlY3RhYmxlPSJ0cnVlIiBuYW1lPSJtdWx0aSI+CisJCSAKKwk8L3RleHQ+CisKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2NoYXQvY2hhdFRhYkl0ZW1FbW90aWNvbnMubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvY2hhdC9jaGF0VGFiSXRlbUVtb3RpY29ucy5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjI1ZmRkYgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2NoYXQvY2hhdFRhYkl0ZW1FbW90aWNvbnMubHp4CkBAIC0wLDAgKzEsMzAxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCisKKzxjbGFzcyBuYW1lPSJjaGF0VGFiSXRlbUVtb3RpY29ucyIgZXh0ZW5kcz0idmlldyIgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGggfSIgYmdjb2xvcj0iJG9uY2V7IHRoaXMudXNlcmNvbG9yIH0iPgorCisJPGF0dHJpYnV0ZSBuYW1lPSJ1c2VyX2lkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0idXNlcm5hbWUiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwk8YXR0cmlidXRlIG5hbWU9InVzZXJ0aW1lIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJ1c2VyY29sb3IiIHZhbHVlPSIwIiB0eXBlPSJzdHJpbmciIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJwdWJsaWNTSUQiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwk8YXR0cmlidXRlIG5hbWU9Im1lc3NhZ2VPYmoiIHZhbHVlPSJudWxsIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0iaXNEaXJlY3RMaW5rIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJtZXNzYWdlIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJwaWN0dXJlX3VyaSIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIi8+CisJPGF0dHJpYnV0ZSBuYW1lPSJyYXdNZXNzYWdlIiB2YWx1ZT0ibnVsbCIgLz4KKwkKKwk8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorCQk8IVtDREFUQVsKKwkJCisJCSAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidGhpcy5waWN0dXJlX3VyaSA6OiAiLHRoaXMucGljdHVyZV91cmkpOworCQkKKwkJICAgIGlmICh0aGlzLnBpY3R1cmVfdXJpICE9IG51bGwgJiYgKCB0aGlzLnBpY3R1cmVfdXJpLnN0YXJ0c1dpdGgoImh0dHAiKSB8fCB0aGlzLnBpY3R1cmVfdXJpLnN0YXJ0c1dpdGgoImh0dHBzIikgKSApIHsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB2YXIgZG93bmxvYWR1cmwgPSB0aGlzLnBpY3R1cmVfdXJpOyAgCisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgCWlmKCRkZWJ1ZykgRGVidWcud3JpdGUoImNoYXRUYWJJdGVtRW1vdGljb25zL1dJRFRIOiAiK3RoaXMud2lkdGgpOworICAgICAgICAgICAgICAgIHZhciBkb3dubG9hZHVybCA9IGNhbnZhcy5nZXRVcmwoKSArICdEb3dubG9hZEhhbmRsZXI/ZmlsZU5hbWU9Q0hBVCcKKyAgICAgICAgICAgICAgICAgICAgICAgICsnJm1vZHVsZU5hbWU9Y2hhdCZwYXJlbnRQYXRoPSZyb29tX2lkPScKKyAgICAgICAgICAgICAgICAgICAgICAgICsnJnJlbW90ZVVzZXJpZD0nK3RoaXMudXNlcl9pZAorICAgICAgICAgICAgICAgICAgICAgICAgKycmc2lkPScrY2FudmFzLnNlc3Npb25JZDsKKyAgICAgICAgICAgIH0KKwkJCQorCSAgICAgICAgLy9EZWJ1Zy53cml0ZSgiZG93bmxvYWR1cmwgIitkb3dubG9hZHVybCk7CisJICAgICAgICB0aGlzLl91c2VycGljLnNldEF0dHJpYnV0ZSgnc3JjJyxkb3dubG9hZHVybCk7CQorCSAgICAgICAgCisJICAgICAgICBpZihjYW52YXMuaXNydGwgPT0gJ3RydWUnKXsKKwkgICAgICAgICAJaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiY2hhdFRhYkl0ZW1FbW90aWNvbnMgUlRMIGlzIHNldCIpOworCSAgICAgICAKKwkgICAgICAgIAl0aGlzLmhlYWRlcl91c2VyLnNldEF0dHJpYnV0ZSgndGV4dGFsaWduJywgJ3JpZ2h0Jyk7CisJICAgICAgICAJdGhpcy5oZWFkZXJfdGltZS5zZXRBdHRyaWJ1dGUoJ2FsaWduJywgJ2xlZnQnKTsKKwkgICAgICAgIAl0aGlzLmhlYWRlcl90aW1lLnNldEF0dHJpYnV0ZSgneCcsICc0MCcpOworCSAgICAgICAgCXRoaXMubXVsdGkuc2V0QXR0cmlidXRlKCd0ZXh0YWxpZ24nLCAncmlnaHQnKTsKKwkgICAgICAgIAl0aGlzLm11bHRpLnNldEF0dHJpYnV0ZSgnYWxpZ24nLCAncmlnaHQnKTsKKwkgICAgICAgIH0KKwkgICAgICAgIAorCSAgICAgICAgLy9EZWJ1Zy53cml0ZSgiVElNRTogIit0aGlzLnVzZXJ0aW1lKTsKKyAgICAgICAgXV0+CisJPC9oYW5kbGVyPgorCQorCTx2aWV3IG5hbWU9ImJnIiB3aWR0aD0iMTc5IiBoZWlnaHQ9IiRvbmNleyBwYXJlbnQuaGVpZ2h0LTEgfSIgYmdjb2xvcj0iMHhGRkZGRkYiIAorCQlvcGFjaXR5PSIwLjEiPgorCTwvdmlldz4KKwkKKwk8aW1hZ2UgbmFtZT0iX3VzZXJwaWMiIHN0cmV0Y2hlcz0iYm90aCIgeD0iMSIgeT0iMSI+CisJCTxoYW5kbGVyIG5hbWU9Im9ubG9hZCI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5oZWlnaHQgPiAzOCkgeworICAgICAgICAgICAgICAgICAgICAvL0lmIGJpZ2dlciB0aGVuIGNvbnRhaW50ZXIgdGhlbiBzY2FsZSBpdAorICAgICAgICAgICAgICAgICAgICB2YXIgd2lkdGggPSB0aGlzLndpZHRoLyh0aGlzLmhlaWdodC8zOCk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdoZWlnaHQnLDM4KTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3dpZHRoJyx3aWR0aCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICh0aGlzLndpZHRoID4gMzgpIHsKKyAgICAgICAgICAgICAgICAJdmFyIGhlaWdodCA9IHRoaXMuaGVpZ2h0Lyh0aGlzLndpZHRoLzM4KTsKKyAgICAgICAgICAgICAgICAJdGhpcy5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsaGVpZ2h0KTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywzOCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4KKwk8L2ltYWdlPgorCQorCTx0ZXh0IHRleHQ9IiRvbmNleyBwYXJlbnQudXNlcm5hbWUgfSIgeD0iNDAiIHJlc2l6ZT0iZmFsc2UiIGZvbnRzaXplPSIxMSIgbXVsdGlsaW5lPSJ0cnVlIgorCQkgIHdpZHRoPSIxNDAiIGhlaWdodD0iJG9uY2V7IHBhcmVudC5oZWlnaHQgfSIKKwkJICBuYW1lPSJoZWFkZXJfdXNlciI+CisJPC90ZXh0PgorCQorCTxzdGF0ZSBhcHBsaWVkPSIkb25jZXsgcGFyZW50LnJhd01lc3NhZ2VbOV0gfSI+CisJCTxtaW5pSWNvbnMgcmVzb3VyY2U9ImFsbG93X29rX2ljb25fcnNjIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiCisJCQl5PSIyIiB4PSIkb25jZXsgcGFyZW50LndpZHRoIC0gMTQwIH0iIHNob3doYW5kY3Vyc29yPSJ0cnVlIiA+CisJCQk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKwkJCQl0aGlzLnNldEF0dHJpYnV0ZSgndmlzaWJsZScsIGZhbHNlKTsKKwkJCQlwYXJlbnQuc2V0QXR0cmlidXRlKCd2aXNpYmxlJywgZmFsc2UpOworCQkJCXBhcmVudC5yYXdNZXNzYWdlLmxlbmd0aCA9IHBhcmVudC5yYXdNZXNzYWdlLmxlbmd0aCAtIDE7CisJCQkJcGFyZW50LnJhd01lc3NhZ2VbcGFyZW50LnJhd01lc3NhZ2UubGVuZ3RoIC0gMV0gPSBmYWxzZTsKKwkJCQkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCIhISEhISEhISEhISEhIGFsbG93IG1lc3NhZ2UgIiwgcGFyZW50LCBwYXJlbnQucmF3TWVzc2FnZSk7CisJCQkJaGliLnNlbmRDaGF0TWVzc2FnZVdpdGhDbGllbnQuc2VuZE1lc3NhZ2UocGFyZW50LnJhd01lc3NhZ2UpOworCQkJPC9oYW5kbGVyPgorCQkJPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSIxNTE0IiAvPgorCQk8L21pbmlJY29ucz4gCisJPC9zdGF0ZT4KKwkKKwk8c3RhdGUgYXBwbGllZD0iJG9uY2V7ICFwYXJlbnQuaXNEaXJlY3RMaW5rIH0iPgorCQorCSAgICA8bWluaUljb25zSW1hZ2UgbmFtZT0iYWRkIiBzcmM9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVJbWFnZSgnZWRpdF9hZGRfcnNjJykgfSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiAKKwkgICAgICAgICAgICAgICAgICAgeT0iMiIgeD0iJG9uY2V7IHBhcmVudC53aWR0aCAtIDEyMiB9IiBzaG93aGFuZGN1cnNvcj0idHJ1ZSI+CisJICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKwkgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiU3RhcnQgQ29uZmVyZW5jZSIpOworCSAgICAgICAgICAgIGlmIChoaWIudXNlcm9iamVjdC51c2VyX2lkID09IHBhcmVudC51c2VyX2lkKSB7CisJICAgICAgICAgICAgICAgIG5ldyBsei5sYWJlbGVycm9yUG9wdXAoY2FudmFzLHtlcnJvcmxhYmVsaWQ6MTIyNX0pOworCSAgICAgICAgICAgICAgICByZXR1cm47CisJICAgICAgICAgICAgfQorCSAgICAgICAgICAgIHBhcmVudC5yZXF1ZXN0VXNlclRvQ29udGFjdExpc3QuZG9DYWxsKCk7CisJICAgICAgICA8L2hhbmRsZXI+CisJICAgICAgICA8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IjExODYiIC8+CisJICAgIDwvbWluaUljb25zSW1hZ2U+CisgICAgCisgICAgPC9zdGF0ZT4KKyAgICAKKyAgICA8IS0tCisgICAgcHVibGljIExvbmcgcmVxdWVzdFVzZXJUb0NvbnRhY3RMaXN0KFN0cmluZyBTSUQsIExvbmcgdXNlclRvQWRkX2lkLCAKKyAgICAgICAgICAgICAgICBTdHJpbmcgZG9tYWluLCBTdHJpbmcgcG9ydCwgU3RyaW5nIHdlYmFwcCkKKyAgICAgLS0+CisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0icmVxdWVzdFVzZXJUb0NvbnRhY3RMaXN0IiBmdW5jbmFtZT0idXNlcnNlcnZpY2UucmVxdWVzdFVzZXJUb0NvbnRhY3RMaXN0IiAKKyAgICAgICAgICAgICAgICAgIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiBhY3RpdmVFcnJvckhhbmRsZXI9InRydWUiID4gICAgICAKKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gY2FudmFzLnNlc3Npb25JZDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBhcmVudC51c2VyX2lkOyA8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBjYW52YXMuZ2V0SHR0cEhvc3QoKTsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gY2FudmFzLnJlZDVodHRwcG9ydDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gY2FudmFzLmh0dHBSb290S2V5OyA8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJyZXF1ZXN0VXNlclRvQ29udGFjdExpc3Q6ICIsdmFsdWUpOworICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA+IDApIHsKKyAgICAgICAgICAgICAgICAgICAgbmV3IGx6LmxhYmVsZXJyb3JQb3B1cChjYW52YXMse2xhYmVsaWQ6MTI2NyxlcnJvcmxhYmVsaWQ6MTI2Nn0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9uZXRSZW1vdGVDYWxsSGliPgorICAgIAorCQorCTwhLS0gc3BhY2UgYmV0d2VlbiBlYWNoIGxpbmUgb2YgdGV4dCAtLT4KKwk8YXR0cmlidXRlIG5hbWU9ImxlYWRpbmciIHZhbHVlPSI1IiB0eXBlPSJudW1iZXIiIC8+CisJCisJPHZpZXcgbmFtZT0iYmdfbWFpbiIgeD0iMTgwIiB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCAtIDE4MCB9IiBoZWlnaHQ9IiRvbmNleyBwYXJlbnQuaGVpZ2h0LTEgfSIgIAorCQlvcGFjaXR5PSIwLjMiIGJnY29sb3I9IjB4RkZGRkZGIj4KKwk8L3ZpZXc+CisJCisJPHRleHQgbXVsdGlsaW5lPSJ0cnVlIiB4PSIxODAiIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoIC0gMzA2IH0iIGZvbnRzaXplPSIxMSIgc2VsZWN0YWJsZT0idHJ1ZSIgbmFtZT0ibXVsdGkiID4KKwkJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKwkJCTwhW0NEQVRBWworCQkJCQorCQkJCWlmKGNhbnZhcy5pc3J0bCE9J3RydWUnKXsKKwkJCQkJdGhpcy5zcHJpdGUuX19MWnRleHRjbGlwLndvcmRXcmFwID0gZmFsc2U7CisJCQkJCWlmKCRkZWJ1ZykgRGVidWcud3JpdGUoIk5ldyBUZXh0Iik7CisJCQkJCS8vRGVidWcud3JpdGUodGhpcy5zcHJpdGUuZ2V0VGV4dEZvcm1hdCgpKTsKKwkJCQkJdEZvcm1hdCA9IHRoaXMuc3ByaXRlLl9fTFp0ZXh0Y2xpcC5nZXRUZXh0Rm9ybWF0KCk7CisJCQkJCS8vRGVidWcud3JpdGUodGhpcy5zcHJpdGUuX19MWnRleHRjbGlwLmdldFRleHRGb3JtYXQoKSk7CisJCQkJCXRGb3JtYXQubGVhZGluZyA9IDQ7CisJCQkJCXRoaXMuc3ByaXRlLl9fTFp0ZXh0Y2xpcC5zZXRUZXh0Rm9ybWF0KHRGb3JtYXQpOworCQkJCQl2YXIgaXRlbXMgPSBwYXJlbnQubWVzc2FnZU9iajsKKwkJCQkJdmFyIHQgPSAiIjsKKwkJCQkJLy9pdGVtc1swXSA9IFsidGV4dCIsImhlbGxvIHlvdXIgYXJlIHRoZSBoZXJvIGxldHMgY2hlY2sgYWNjb21vZGF0aW9uIHRvZGF5IGkgbmVlZCBzb21lIGlucHV0Il07CisJCQkJCWZvciAodmFyIGk9MDtpPGl0ZW1zLmxlbmd0aDtpKyspIHsKKwkJCQkJCQorCQkJCQkJLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiSXRlbSA6MDogIixpdGVtc1tpXVswXSk7CisJCQkJCQkKKwkJCQkJCWlmIChpdGVtc1tpXVswXT09InRleHQiKXsKKwkJCQkJCQkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJUZXh0IDoxOiAiLGl0ZW1zW2ldWzFdKTsKKwkJCQkJCQkKKwkJCQkJCQl0ICs9IGl0ZW1zW2ldWzFdOworCQkJCQkJfSBlbHNlIHsKKwkJCQkJCQlpZiAodC5sZW5ndGghPTApeworCQkJCQkJCQl2YXIgdGVtcFN0cmluZyA9IGNhbGNMaW5lV2lkdGhCeVRleHRGaWVsZCh0aGlzLndpZHRoLCB0LHRoaXMuZm9udHNpemUsdGhpcy5mb250KTsKKwkJCQkJCQkJdmFyIHggPSB0ZW1wU3RyaW5nW3RlbXBTdHJpbmcubGVuZ3RoLTFdWyJsaW5lV2lkdGgiXTsKKwkJCQkJCQkJdmFyIHkgPSAodGVtcFN0cmluZy5sZW5ndGgtMSkqKGdldExpbmVIZWlnaHQoKStwYXJlbnQubGVhZGluZy0xKTsKKwkJCQkJCQl9ZWxzZSB7CisJCQkJCQkJCXZhciB4ID0gMDsKKwkJCQkJCQkJdmFyIHkgPSAwOworCQkJCQkJCX0KKwkJCQkJCQl0ICs9IGl0ZW1zW2ldWzJdOworCQkJCQkJCQorCQkJCQkJCXZhciBzd2Z1cmwgPSBjYW52YXMuZ2V0VXJsKCkgKyAncHVibGljL2Vtb3RpY29ucy8nK2l0ZW1zW2ldWzFdOworCQkJCQkJCXZhciBtID0gbmV3IGx6LmNoYXRJbm5lclNtaWx5KHBhcmVudCx7eDp4K3RoaXMueCx5OnkrdGhpcy55LGljb25sYWJlbDppdGVtc1tpXVszXX0pOworCQkJCQkJCQorCQkJCQkJCS8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIlNtaWx5IDoyOiAiLHN3ZnVybCk7CisJCQkJCQkJCisJCQkJCQkJbS5zZXRTb3VyY2Uoc3dmdXJsKTsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCQkvL0RlYnVnLndyaXRlKCJUVFRUOiAiLHQpOyJWZXJkYW5hIgorCQkJCQl2YXIgdFN0cmluZyA9IGNhbGNMaW5lV2lkdGhCeVRleHRGaWVsZCh0aGlzLndpZHRoLCB0LHRoaXMuZm9udHNpemUsdGhpcy5mb250KTsKKwkJCQkJCisJCQkJCWZvciAodmFyIGsgPSAwO2s8dFN0cmluZy5sZW5ndGg7aysrKXsKKwkJCQkJCXRoaXMuc2V0QXR0cmlidXRlKCd0ZXh0Jyx0aGlzLmdldFRleHQoKSt0ZXh0T2JqZWN0W2tdWyJ0ZXh0Il0rIlxyIik7CisJCQkJCQkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJ0ZXh0OiAiLGssdGV4dE9iamVjdFtrXVsibGluZVdpZHRoIl0sdGV4dE9iamVjdFtrXVsidGV4dCJdKTsKKwkJCQkJfQkKKwkJCQkJCisJCQkJCS8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInRleHQ6ICIsdGhpcy5nZXRUZXh0KCkpOworCQkJCQkKKwkJCQkJLy9EZWJ1Zy53cml0ZSh0aGlzLnNwcml0ZS5fX0xadGV4dGNsaXAuZ2V0VGV4dEZvcm1hdCgpKTsKKwkJCQkJdEZvcm1hdC5sZWFkaW5nID0gcGFyZW50LmxlYWRpbmc7CisJCQkJCXRoaXMuc3ByaXRlLl9fTFp0ZXh0Y2xpcC5zZXRUZXh0Rm9ybWF0KHRGb3JtYXQpOworCQkJCQkvL0RlYnVnLndyaXRlKHRoaXMuc3ByaXRlLl9fTFp0ZXh0Y2xpcC50ZXh0SGVpZ2h0KTsKKwkJCQkJLy9EZWJ1Zy53cml0ZShnZXRMaW5lSGVpZ2h0KCkpOworCQkJCQkvL0RlYnVnLndyaXRlKHRoaXMuc3ByaXRlLl9fTFp0ZXh0Y2xpcC50ZXh0SGVpZ2h0KzEyKTsKKwkJCQkJdGhpcy5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsdGhpcy5zcHJpdGUuX19MWnRleHRjbGlwLnRleHRIZWlnaHQrMTIpOworCQkJCX0KKwkJCQllbHNleworCQkJCQl2YXIgdCA9ICIiOworCQkJCQl2YXIgaXRlbXMgPSBwYXJlbnQubWVzc2FnZU9iajsKKwkJCQkJCisJCQkJCWZvciAodmFyIGk9MDtpPGl0ZW1zLmxlbmd0aDtpKyspIHsKKwkJCQkJCWlmIChpdGVtc1tpXVswXT09InRleHQiKXsKKwkJCQkJCQl0ICs9IGl0ZW1zW2ldWzFdOworCQkJCQkJfSAKKwkJCQkJfQorCQkJCQkKKwkJCQkJdGhpcy5zZXRBdHRyaWJ1dGUoJ3RleHQnLHRoaXMuZ2V0VGV4dCgpKyB0KTsKKwkJCQl9CisJCQkJCisJCQkJcGFyZW50LnNldEF0dHJpYnV0ZSgnaGVpZ2h0Jyx0aGlzLmhlaWdodCk7CisJCQkJcGFyZW50LmhlYWRlcl91c2VyLnNldEF0dHJpYnV0ZSgnaGVpZ2h0Jyx0aGlzLmhlaWdodCk7CisJCQkJcGFyZW50LmJnLnNldEF0dHJpYnV0ZSgnaGVpZ2h0Jyx0aGlzLmhlaWdodC0xKTsKKwkJCQlwYXJlbnQuYmdfbWFpbi5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsdGhpcy5oZWlnaHQtMSk7CisJCQkJCisJCQldXT4KKwkJPC9oYW5kbGVyPgkKKwkJCisJPC90ZXh0PgorCQorCTxzdGF0ZSBhcHBsaWVkPSIkb25jZXsgIXBhcmVudC5pc0RpcmVjdExpbmsgfSI+CisJCisJICAgIDxtaW5pSWNvbnMgbmFtZT0icHJpdmF0ZV9tZXNzYWdlX2FkZCIgcmVzb3VyY2U9InByaXZhdGVfbWVzc2FnZV9hZGRfcnNjIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIAorCSAgICAgICAgICAgICAgICAgICB5PSIwIiB4PSIkb25jZXsgcGFyZW50LndpZHRoIC0gMTA0IH0iIHNob3doYW5kY3Vyc29yPSJ0cnVlIj4KKwkgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorCSAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJTdGFydCBDb25mZXJlbmNlIik7CisJICAgICAgICAgICAgbmV3IGx6Lm5ld1ByaXZhdGVNZXNzYWdlKGNhbnZhcyx7CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OjIwMCx5OjEyMCwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZk9iajpudWxsLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluaW1pemFibGU6dHJ1ZSwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGltaXphYmxlOnRydWUsCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyT2JqZWN0Om51bGwsCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc2RyYWdhYmxlOnRydWUsCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2lkOnBhcmVudC51c2VyX2lkLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6Y2FudmFzLndpZHRoLTMwMCwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDpjYW52YXMuaGVpZ2h0LTEzMAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKwkgICAgICAgIDwvaGFuZGxlcj4KKwkgICAgICAgIDxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iMTI1MyIgLz4KKwkgICAgPC9taW5pSWNvbnM+CisJICAgIAorCSAgICA8bWluaUljb25zIHJlc291cmNlPSJ1c2VyX3Byb2ZpbGVfcnNjIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIAorCSAgICAgICAgICAgICAgIHk9IjAiIHg9IiRvbmNleyBwYXJlbnQud2lkdGggLSA4NCB9IiBzaG93aGFuZGN1cnNvcj0idHJ1ZSI+CisJICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKwkgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiU3RhcnQgQ29uZmVyZW5jZSIpOworCSAgICAgICAgICAgIG5ldyBsei52aWV3VXNlclByb2ZpbGVXaW5kb3coY2FudmFzLHsKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJJZDpwYXJlbnQudXNlcl9pZAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKwkgICAgICAgIDwvaGFuZGxlcj4KKwkgICAgICAgIDxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iMTIzNiIgLz4KKwkgICAgPC9taW5pSWNvbnM+ICAgIAkJICAKKwkJCSAgCisJICAgIDxtaW5pSWNvbnMgeT0iMCIgeD0iJG9uY2V7IHBhcmVudC53aWR0aCAtIDY0IH0iCisJICAgIAkJICAgcmVzb3VyY2U9InN0YXJ0X2NvbmZlcmVuY2UyX3JzYyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiAKKwkgICAgICAgICAgICAgICBzaG93aGFuZGN1cnNvcj0idHJ1ZSI+CisJICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKwkgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiU3RhcnQgQ29uZmVyZW5jZSIpOworCSAgICAgICAgICAgIG5ldyBsei5jaGF0UGFydGljaXBhbnRzSW52aXRlQ29uZmVyZW5jZShjYW52YXMseworCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdWJsaWNTSUQ6cGFyZW50LnB1YmxpY1NJRCwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9pZDpwYXJlbnQudXNlcl9pZAorCSAgICAgICAgICAgICAgICAgICAgICAgIH0pOworCSAgICAgICAgPC9oYW5kbGVyPgorCSAgICAgICAgPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSIxMTMxIiAvPgorCSAgICA8L21pbmlJY29ucz4gIAorICAgIAorICAgIDwvc3RhdGU+CisgICAgCQkgIAorCTx0ZXh0IHRleHQ9IiRvbmNleyBwYXJlbnQudXNlcnRpbWUrJyAgICcgfSIgYWxpZ249InJpZ2h0IiBmZ2NvbG9yPSIweEFBQUFBQSIKKwkJICBmb250c2l6ZT0iMTAiIG5hbWU9ImhlYWRlcl90aW1lIiAvPgorCis8L2NsYXNzPgkJCQkJCQorCis8Y2xhc3MgbmFtZT0iY2hhdElubmVyVGV4dEJveCIgZXh0ZW5kcz0idGV4dCIgcmVzaXplPSJ0cnVlIiBiZ2NvbG9yPSJyZWQiIC8+CisKKzxjbGFzcyBuYW1lPSJjaGF0SW5uZXJTbWlseSIgZXh0ZW5kcz0idmlldyIgb25tb3VzZW92ZXI9IiIgb25tb3VzZW91dD0iIj4KKwk8YXR0cmlidXRlIG5hbWU9Imljb25sYWJlbCIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorCTxsYWJlbFRvb2x0aXAgdGV4dD0iJG9uY2V7IHBhcmVudC5pY29ubGFiZWwgfSIgLz4KKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2NoYXQvbGlicmFyeS5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9jaGF0L2xpYnJhcnkubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4YjkyZWQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9jaGF0L2xpYnJhcnkubHp4CkBAIC0wLDAgKzEsMzcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisJCisJPHJlc291cmNlIG5hbWU9ImRlbGV0ZV9jaGF0X2xvZ19yc2MiIHNyYz0icmVzb3VyY2VzL2NhbmNlbC5wbmciIC8+CisJPHJlc291cmNlIG5hbWU9ImNvcHlfY2hhdF9sb2dfcnNjIiBzcmM9InJlc291cmNlcy9lZGl0LWNvcHkucG5nIiAvPgorCTxyZXNvdXJjZSBuYW1lPSJzbWlsZV9jaGF0X2xvZ19yc2MiIHNyYz0icmVzb3VyY2VzL3NtaWxlLnN3ZiIgLz4KKwk8cmVzb3VyY2UgbmFtZT0ic3RhcnRfY29uZmVyZW5jZTJfcnNjIiBzcmM9InJlc291cmNlcy9jb25uZWN0LnBuZyIgLz4KKwkKKwk8aW5jbHVkZSBocmVmPSJzaW1wbGVCYXNlVGFicGFuZS5sengiIC8+CisJPGluY2x1ZGUgaHJlZj0ic2hvd0NoYXRMb2cubHp4IiAvPgorCTxpbmNsdWRlIGhyZWY9ImJhc2VUYWJDaGF0UGFuZWwubHp4IiAvPgorCTxpbmNsdWRlIGhyZWY9ImNoYXRUYWJJdGVtLmx6eCIgLz4KKwk8aW5jbHVkZSBocmVmPSJjaGF0VGFiSXRlbUVtb3RpY29ucy5sengiIC8+CisJPGluY2x1ZGUgaHJlZj0iY2hhdE91dHB1dC5sengiIC8+CisJPGluY2x1ZGUgaHJlZj0iY2hhdFRhYkJvdHRvbS5sengiIC8+CisJPGluY2x1ZGUgaHJlZj0iY2hhdFRhYi5sengiIC8+CisgICAgCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9jaGF0L3Jlc291cmNlcy9jYW5jZWwucG5nIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvY2hhdC9yZXNvdXJjZXMvY2FuY2VsLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDMyYjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvY2hhdC9yZXNvdXJjZXMvY2FuY2VsLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9jaGF0L3Jlc291cmNlcy9jb25uZWN0LnBuZyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2NoYXQvcmVzb3VyY2VzL2Nvbm5lY3QucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyNDEzOGUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9jaGF0L3Jlc291cmNlcy9jb25uZWN0LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9jaGF0L3Jlc291cmNlcy9lZGl0LWNvcHkucG5nIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvY2hhdC9yZXNvdXJjZXMvZWRpdC1jb3B5LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZGQ0OGM0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvY2hhdC9yZXNvdXJjZXMvZWRpdC1jb3B5LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9jaGF0L3Jlc291cmNlcy9mb250LnBuZyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2NoYXQvcmVzb3VyY2VzL2ZvbnQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkZGViNGQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9jaGF0L3Jlc291cmNlcy9mb250LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9jaGF0L3Jlc291cmNlcy9zbWlsZS5zd2YgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9jaGF0L3Jlc291cmNlcy9zbWlsZS5zd2YKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzU3OGUyZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2NoYXQvcmVzb3VyY2VzL3NtaWxlLnN3ZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9jaGF0L3Jlc291cmNlcy90ZXh0X2JvbGQucG5nIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvY2hhdC9yZXNvdXJjZXMvdGV4dF9ib2xkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODlhZTgwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvY2hhdC9yZXNvdXJjZXMvdGV4dF9ib2xkLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9jaGF0L3Jlc291cmNlcy90ZXh0X2NvbG9yLnBuZyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2NoYXQvcmVzb3VyY2VzL3RleHRfY29sb3IucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2ZmIxN2IKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9jaGF0L3Jlc291cmNlcy90ZXh0X2NvbG9yLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9jaGF0L3Jlc291cmNlcy90ZXh0X2h5cGVybGluay5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9jaGF0L3Jlc291cmNlcy90ZXh0X2h5cGVybGluay5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjhlZGMxMgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2NoYXQvcmVzb3VyY2VzL3RleHRfaHlwZXJsaW5rLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9jaGF0L3Jlc291cmNlcy90ZXh0X2l0YWxpYy5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9jaGF0L3Jlc291cmNlcy90ZXh0X2l0YWxpYy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQ4MmFjOAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2NoYXQvcmVzb3VyY2VzL3RleHRfaXRhbGljLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9jaGF0L3Jlc291cmNlcy90ZXh0X3VuZGVybGluZS5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9jaGF0L3Jlc291cmNlcy90ZXh0X3VuZGVybGluZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTk0NjhhMAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2NoYXQvcmVzb3VyY2VzL3RleHRfdW5kZXJsaW5lLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9jaGF0L3Nob3dDaGF0TG9nLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2NoYXQvc2hvd0NoYXRMb2cubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyOTRhNGQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9jaGF0L3Nob3dDaGF0TG9nLmx6eApAQCAtMCwwICsxLDQ0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8IS0tLQorQ2hhdCB0YWJwYW5lIGNsYXNzLiBJdCBjb250YWlucyBjaGF0T3V0cHV0LWNsYXNzIGFuZCBjYXRUYWJCb3R0b20tY2xhc3MuCitUaGlzIGlzIHVzZWQgaW4gdGhlIGNvbmZlcmVuY2UuCistLT4KKzxjbGFzcyBuYW1lPSJzaG93Q2hhdExvZyIgZXh0ZW5kcz0ibGFiZWxFeHBsb3JlckJveCIgbGFiZWxpZD0iMTIwMSIKKwkgICAgZG9ja2luZz0idHJ1ZSIgcmVzaXplYWJsZT0idHJ1ZSIgY2xvc2FibGU9InRydWUiIHdpZHRoPSI1MDAiIAorCSAgICB4PSIkb25jZXsgcGFyZW50LndpZHRoLzIgLSB0aGlzLndpZHRoLzIgfSIgaGVpZ2h0PSIyNDAiPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0iZXJyb3IiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKyAgICAKKyAgICA8dmlldyB4PSIyIiB3aWR0aD0iJHsgcGFyZW50LndpZHRoIC0gNCB9IiBjbGlwPSJ0cnVlIgorICAgICAgICAJCQkJeT0iMjQiIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodC01MCB9Ij4KKyAgICAgICAgPGxhYmVsVGV4dCB0ZXh0PSIkb25jZXsgcGFyZW50LnBhcmVudC5lcnJvciB9IiB3aWR0aD0iJHsgcGFyZW50LndpZHRoIC0gMTggfSIKKyAgICAgICAgCQkgICBtdWx0aWxpbmU9InRydWUiIHJlc2l6ZT0iZmFsc2UiIHNlbGVjdGFibGU9InRydWUiIC8+CisgICAgICAgIDxvbV92c2Nyb2xsYmFyIC8+CisgICAgPC92aWV3PgorCQorICAgIDxzaW1wbGVMYWJlbEJ1dHRvbiBsYWJlbGlkPSI4OTEiIHdpZHRoPSIxMDAiIG9uY2xpY2s9InRoaXMucGFyZW50LmNsb3NlKCk7IiAKKwkJICAgeD0iJHsgcGFyZW50LndpZHRoLTEwNCB9IiB5PSIkeyBwYXJlbnQuaGVpZ2h0LTI0IH0iIC8+Cis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9jaGF0L3NpbXBsZUJhc2VUYWJwYW5lLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2NoYXQvc2ltcGxlQmFzZVRhYnBhbmUubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlNTQ5MmEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9jaGF0L3NpbXBsZUJhc2VUYWJwYW5lLmx6eApAQCAtMCwwICsxLDI5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPGxpYnJhcnk+DQorDQorCTwhLS0tIFRhYnBhbmUuIGl0IHVzZWQgYnkgY2hhdC4gLS0+DQorCTxjbGFzcyBuYW1lPSJzaW1wbGVCYXNlVGFicGFuZSIgZXh0ZW5kcz0idmlldyIgaGVpZ2h0PSIkb25jZXsgcGFyZW50LmhlaWdodC0yMCB9IiANCisJCSAgIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoIH0iIHk9IjI0IiB4PSIyIiA+DQorCQkNCisJPC9jbGFzcz4gIA0KKw0KKzwvbGlicmFyeT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvZHJhZ0l0ZW1GaWxlRXhwbG9yZXIubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvZmlsZWV4cGxvcmVyL2RyYWdJdGVtRmlsZUV4cGxvcmVyLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OWQ3M2IxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvZmlsZWV4cGxvcmVyL2RyYWdJdGVtRmlsZUV4cGxvcmVyLmx6eApAQCAtMCwwICsxLDI1NyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9ImRyYWdJdGVtRmlsZUV4cGxvcmVyIiBleHRlbmRzPSJ2aWV3Ij4KKwkKKwk8YXR0cmlidXRlIG5hbWU9InJlZk9iaiIgdmFsdWU9Im51bGwiLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9ImRyYWdJdGVtUmVzb3VyY2UiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0ib3Zlckl0ZW0iIHZhbHVlPSJudWxsIi8+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJhbHJlYWR5U2VudCIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0iZmlsZUV4cGxvcmVySXRlbUlkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0ibmV3UGFyZW50RmlsZUV4cGxvcmVySXRlbUlkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iaXNPd25lciIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibW92ZVRvSG9tZSIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorCQorCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisJCWx6LlRyYWNrLmFjdGl2YXRlKGNhbnZhcy5jdXJyZW50SW1hZ2VzTGlzdGRyYXcuY3VycmVudFRyYWNrR3JvdXBOYW1lKTsKKwkJY2FudmFzLmN1cnJlbnRJbWFnZXNMaXN0ZHJhdy5jdXJyZW50RHJhZ0l0ZW0gPSB0aGlzOworCQlsei5DdXJzb3Iuc2hvd0hhbmRDdXJzb3IoZmFsc2UpOworCQlsei5Nb2RlTWFuYWdlci5nbG9iYWxMb2NrTW91c2VFdmVudHMoKTsKKwkJdGhpcy5kcmFnZ2VyLmFwcGx5KCk7CisJPC9oYW5kbGVyPgorCQorCTxtZXRob2QgbmFtZT0ic2VuZE92ZXJJdGVtIiBhcmdzPSJpdGVtUmVmIj4KKwkJPCFbQ0RBVEFbCisgICAgCQlpZiAodGhpcy5yZWZPYmogIT0gaXRlbVJlZikgeworICAgIAkJCQorICAgIAkJCWlmICh0aGlzLnJlZk9iai5pc0ZvbGRlcikgeworICAgIAkJCQlpZiAoIWl0ZW1SZWYuaXNUcmFzaENhbiAmJiAhaXRlbVJlZi5pc0ZvbGRlcikgeworICAgIAkJCQkJLy9ObyBGb2xkZXJzIHRvIHRoZSB3aGl0ZWJvYXJkIHBsZWFzZQorICAgIAkJCQkJcmV0dXJuOworICAgIAkJCQl9CisgICAgCQkJfQorICAgIAkJCQorICAgICAgICAJCXRoaXMub3Zlckl0ZW0gPSBpdGVtUmVmOworICAgICAgICAJCXRoaXMuX2RyYWdJY29uLnNldEF0dHJpYnV0ZSgiZnJhbWUiLDIpOworICAgIAkJfQorCQldXT4KKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9InNlbmRPdXRJdGVtIiBhcmdzPSJpdGVtUmVmIj4KKyAgICAgICAgdGhpcy5vdmVySXRlbSA9IG51bGw7CisgICAgICAgIHRoaXMuX2RyYWdJY29uLnNldEF0dHJpYnV0ZSgiZnJhbWUiLDEpOworICAgIDwvbWV0aG9kPgorCQorCTxoYW5kbGVyIG5hbWU9Im9ubW91c2V1cCIgcmVmZXJlbmNlPSJsei5HbG9iYWxNb3VzZSIgYXJncz0id2hvIj4KKyAgICAgICAgdGhpcy5jbG9zZSgpOworICAgIDwvaGFuZGxlcj4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImNsb3NlIj4KKyAgICA8IVtDREFUQVsKKyAgICAJLy9UaGlzIGNhbiBoYXBwZW4gd2hlbiB0aGUgY29uZmlybWF0aW9uIHBvcHMgdXAKKyAgICAJaWYgKHRoaXMuYWxyZWFkeVNlbnQpIHsKKyAgICAJCXJldHVybjsKKyAgICAJfQorICAgIAl0aGlzLmFscmVhZHlTZW50ID0gdHJ1ZTsKKyAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImNsb3NlIERyYWcgSXRlbSIpOworICAgIAlsei5DdXJzb3Iuc2hvd0hhbmRDdXJzb3IodHJ1ZSk7CisgICAgCWx6LlRyYWNrLmRlYWN0aXZhdGUoY2FudmFzLmN1cnJlbnRJbWFnZXNMaXN0ZHJhdy5jdXJyZW50VHJhY2tHcm91cE5hbWUpOworICAgIAlsei5Nb2RlTWFuYWdlci5nbG9iYWxVbmxvY2tNb3VzZUV2ZW50cygpOworICAgIAljYW52YXMuY3VycmVudEltYWdlc0xpc3RkcmF3LmN1cnJlbnREcmFnSXRlbSA9IG51bGw7CisgICAgCXRoaXMuZHJhZ2dlci5yZW1vdmUoKTsKKyAgICAJCisgICAgCWlmICh0aGlzLm92ZXJJdGVtICE9IG51bGwpIHsKKyAgICAJCQorICAgIAkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInRoaXMub3Zlckl0ZW0gIix0aGlzLm92ZXJJdGVtKTsKKyAgICAJCQorICAgIAkJaWYgKHRoaXMub3Zlckl0ZW1bImlzVHJhc2hDYW4iXSAmJiB0aGlzLm92ZXJJdGVtLmlzVHJhc2hDYW4pIHsKKyAgICAJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiU0VORCBUTyBHQVJCQUdFIik7CisgICAgCQkJdGhpcy5maWxlRXhwbG9yZXJJdGVtSWQgPSB0aGlzLnJlZk9iai5maWxlRXhwbG9yZXJJdGVtSWQ7CisgICAgCQkJbmV3IGx6LmNvbmZpcm1hdGlvblNpbmdsZShjYW52YXMseworICAgICAgICAgICAgCQkJICAgcmVmT2JqOnRoaXMsCisgICAgICAgICAgICAJCQkgICBsYWJlbGlkOjcxMCwKKyAgICAgICAgICAgIAkJCSAgIGxhYmVsaWRlcnJvcjo3MTMsCisgICAgICAgICAgICAJCQkgICBzaG93Q2hlY2tCb3g6ZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZSZXR1cm5NZXRob2Q6InNlbmRDb25maXJtYXRpb24iCisgICAgICAgICAgICAJCQl9KTsKKyAgICAJCX0gZWxzZSBpZiAodGhpcy5vdmVySXRlbVsiaXNGb2xkZXIiXSAmJiB0aGlzLm92ZXJJdGVtLmlzRm9sZGVyKXsKKyAgICAJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiTU9WRSBJVEVNIix0aGlzLnJlZk9iai5maWxlRXhwbG9yZXJJdGVtSWQpOworICAgIAkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJNT1ZFIFRPIFBBUkVOVCIsdGhpcy5vdmVySXRlbS5maWxlRXhwbG9yZXJJdGVtSWQpOworICAgIAkJCXRoaXMuZmlsZUV4cGxvcmVySXRlbUlkID0gdGhpcy5yZWZPYmouZmlsZUV4cGxvcmVySXRlbUlkOworICAgIAkJCXRoaXMubmV3UGFyZW50RmlsZUV4cGxvcmVySXRlbUlkID0gdGhpcy5vdmVySXRlbS5maWxlRXhwbG9yZXJJdGVtSWQ7CisgICAgCQkJaWYgKHRoaXMub3Zlckl0ZW0uZmlsZUV4cGxvcmVySXRlbUlkID09IDApIHsKKyAgICAJCQkgICAgdGhpcy5pc093bmVyID0gdGhpcy5vdmVySXRlbS5pc093bmVyOworICAgIAkJCX0KKyAgICAJCQkKKyAgICAJCQkvL2NoZWNrIGlmIHRoaXMgaXMgYSBob21lIGZvbGRlciBvciBub3QKKyAgICAJCQl2YXIgY2hlY2tGb3JPd2VyID0gdGhpcy5vdmVySXRlbS5jaGVja0ZvcklzT3duZXIoKTsKKyAgICAJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiY2hlY2tGb3JPd2VyIDo6IixjaGVja0Zvck93ZXIpOworICAgIAkJCXRoaXMubW92ZVRvSG9tZSA9IGNoZWNrRm9yT3dlcjsKKyAgICAJCQkKKyAgICAJCQkvL2NoZWNrIHRoYXQgdGhlIGZpbGUgaXMgbm90IG1vdmVkIGluc2lkZSBpdHNlbGYKKyAgICAJCQlpZiAodGhpcy5vdmVySXRlbS5jaGVja0ZvcklzQ2hpbGQodGhpcy5yZWZPYmouZmlsZUV4cGxvcmVySXRlbUlkKSkgeworICAgIAkJCQluZXcgbHoubGFiZWxlcnJvclBvcHVwKGNhbnZhcyx7ZXJyb3JsYWJlbGlkOjkyMn0pOworICAgIAkJCQl0aGlzLmRlc3Ryb3koKTsKKyAgICAJCQkJcmV0dXJuOworICAgIAkJCX0KKyAgICAJCQkKKyAgICAJCQl0aGlzLm1vdmVGaWxlKCk7CisgICAgCQl9IGVsc2UgeworICAgIAkJCWlmICgkZGVidWcpIERlYnVnLndhcm4oIkRyYWcgdG8gd2hpdGVib2FyZCAhISEgIik7CisgICAgCQkJaWYgKHRoaXMucmVmT2JqLmlzVmlkZW8pIHsKKyAgICAJCQkJdGhpcy5yZWZPYmoucGxheVZpZGVvKCk7CisgICAgCQkJfSBlbHNlIGlmICh0aGlzLnJlZk9iai5pc1ByZXNlbnRhdGlvbikgeworICAgIAkJCSAgICB0aGlzLnJlZk9iai5sb2FkRG9jdW1lbnRUb1doaXRlYm9hcmQoKTsKKyAgICAJCQl9IGVsc2UgaWYgKHRoaXMucmVmT2JqLmlzSW1hZ2UpIHsKKyAgICAJCQkJdGhpcy5yZWZPYmoubG9hZEltYWdlVG9XaGl0ZWJvYXJkKCk7CisgICAgCQkJfSBlbHNlIGlmICh0aGlzLnJlZk9iai5pc1dtbEZpbGUpIHsKKyAgICAJCQkJdGhpcy5yZWZPYmoubG9hZFdtbEZpbGUoKTsKKyAgICAJCQl9IGVsc2UgeworICAgIAkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53YXJuKCJTaG91bGQgbmV2ZXIgaGFwcGVuIGRyYWdJdGVtRmlsZUV4cGxvcmVyIHVuaGFuZGxlZCBjYXNlIik7CisgICAgCQkJfQorICAgIAkJCXRoaXMuZGVzdHJveSgpOworICAgIAkJfQorICAgIAl9IGVsc2UgeworICAgIAkJdGhpcy5kZXN0cm95KCk7CisgICAgCX0KKyAgICBdXT4JCisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJzZW5kQ29uZmlybWF0aW9uIiBhcmdzPSJib29sLGFza0FnYWluIj4KKyAgICAJaWYgKGJvb2wpIHsKKyAgICAJCXRoaXMuZGVsZXRlRmlsZU9yRm9sZGVyKCk7CisgICAgCX0gZWxzZSB7CisgICAgCQl0aGlzLmRlc3Ryb3koKTsKKyAgICAJfQorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iZGVsZXRlRmlsZU9yRm9sZGVyIj4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZGVsZXRlRmlsZU9yRm9sZGVyIEhUVFAgMjogIik7CisgICAgICAgICAgICAvL3RoaXMuZ2V0RmlsZUV4cGxvcmVyQnlSb29tLmRvQ2FsbCgpOworICAgICAgICAgICAgdmFyIGRvd25sb2FkdXJsID0gY2FudmFzLmdldFVybCgpKydzZXJ2aWNlcy9GaWxlU2VydmljZS9kZWxldGVGaWxlT3JGb2xkZXJTZWxmPycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArJ1NJRD0nK2NhbnZhcy5zZXNzaW9uSWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArJyZmaWxlRXhwbG9yZXJJdGVtSWQ9Jyt0aGlzLmZpbGVFeHBsb3Jlckl0ZW1JZDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5kZWxldGVGaWxlT3JGb2xkZXJTZWxmLnNldEF0dHJpYnV0ZSgic3JjIixkb3dubG9hZHVybCk7CisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZGVsZXRlRmlsZU9yRm9sZGVyU2VsZiBkb1JlcXVlc3QgIixkb3dubG9hZHVybCk7CisgICAgICAgICAgICB0aGlzLmRlbGV0ZUZpbGVPckZvbGRlclNlbGYuZG9SZXF1ZXN0KCk7CisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxkYXRhc2V0IG5hbWU9ImRlbGV0ZUZpbGVPckZvbGRlclNlbGYiIHR5cGU9Imh0dHAiID4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJkIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9uZGF0YSAiLGQpOworICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJkZWxldGVGaWxlT3JGb2xkZXI6ICIsZCk7CisgICAgICAgICAgICAgICAgcGFyZW50LnJlZk9iai5wYXJlbnQucGFyZW50LmRvT3BlbigpOworICAgICAgICAgICAgICAgIHBhcmVudC5kZXN0cm95KCk7CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPgorICAgIDwvZGF0YXNldD4KKyAgICAKKyAgICA8IS0tCisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iZGVsZXRlRmlsZU9yRm9sZGVyIiBmdW5jbmFtZT0iZmlsZXNlcnZpY2UuZGVsZXRlRmlsZU9yRm9sZGVyIiAKKyAgICAgICAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gCisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gY2FudmFzLnNlc3Npb25JZDs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5maWxlRXhwbG9yZXJJdGVtSWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+ICAgIAorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImRlbGV0ZUZpbGVPckZvbGRlcjogIix2YWx1ZSk7CisgICAgICAgICAgICBwYXJlbnQucmVmT2JqLnBhcmVudC5wYXJlbnQuZG9PcGVuKCk7CisgICAgICAgICAgICBwYXJlbnQuZGVzdHJveSgpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAKKyAgICAgLS0+CisgICAgCisgICAgPCEtLQorICAgIHB1YmxpYyBMb25nIG1vdmVGaWxlU2VsZihTdHJpbmcgU0lELCBMb25nIGZpbGVFeHBsb3Jlckl0ZW1JZCwKKyAgICAgICAgICAgIExvbmcgbmV3UGFyZW50RmlsZUV4cGxvcmVySXRlbUlkLCBMb25nIHJvb21faWQsIEJvb2xlYW4gaXNPd25lciwKKyAgICAgICAgICAgIEJvb2xlYW4gbW92ZVRvSG9tZSkKKyAgICAgLS0+CisgICAgIAorICAgIDxtZXRob2QgbmFtZT0ibW92ZUZpbGUiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJtb3ZlRmlsZSBIVFRQIDE6ICIpOworICAgICAgICAgICAgLy90aGlzLmdldEZpbGVFeHBsb3JlckJ5Um9vbS5kb0NhbGwoKTsKKyAgICAgICAgICAgIHZhciBkb3dubG9hZHVybCA9IGNhbnZhcy5nZXRVcmwoKSsnc2VydmljZXMvRmlsZVNlcnZpY2UvbW92ZUZpbGVTZWxmSW50ZXJuYWw/JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICsnU0lEPScrY2FudmFzLnNlc3Npb25JZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsnJmZpbGVFeHBsb3Jlckl0ZW1JZD0nK3RoaXMuZmlsZUV4cGxvcmVySXRlbUlkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKycmbmV3UGFyZW50RmlsZUV4cGxvcmVySXRlbUlkPScrdGhpcy5uZXdQYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArJyZyb29tSWQ9JytoaWIuY3VycmVudHJvb21pZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsnJmlzT3duZXI9Jyt0aGlzLmlzT3duZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArJyZtb3ZlVG9Ib21lPScrdGhpcy5tb3ZlVG9Ib21lOworICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLm1vdmVGaWxlU2VsZi5zZXRBdHRyaWJ1dGUoInNyYyIsZG93bmxvYWR1cmwpOworICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm1vdmVGaWxlU2VsZiBkb1JlcXVlc3QgIixkb3dubG9hZHVybCk7CisgICAgICAgICAgICB0aGlzLm1vdmVGaWxlU2VsZi5kb1JlcXVlc3QoKTsKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPGRhdGFzZXQgbmFtZT0ibW92ZUZpbGVTZWxmIiB0eXBlPSJodHRwIiA+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0iZCI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbmRhdGEgIixkKTsKKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgibW92ZUZpbGVTZWxmOiAiLGQpOworICAgICAgICAgICAgICAgIHBhcmVudC5vdmVySXRlbS5kb09wZW4oKTsKKyAgICAgICAgICAgICAgICBwYXJlbnQucmVmT2JqLnBhcmVudC5wYXJlbnQuZG9PcGVuKCk7CisgICAgICAgICAgICAgICAgcGFyZW50LmRlc3Ryb3koKTsKKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9kYXRhc2V0PgorICAgIAorICAgIDwhLS0KKyAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJtb3ZlRmlsZSIgZnVuY25hbWU9ImZpbGVzZXJ2aWNlLm1vdmVGaWxlIiAKKyAgICAgICAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gCisgICAgICAgIAorICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImZpbGVFeHBsb3Jlckl0ZW1JZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKyAgICAgICAgCisgICAgICAgIAorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQuZmlsZUV4cGxvcmVySXRlbUlkOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50Lm5ld1BhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZDs8L21ldGhvZD48L25ldHBhcmFtPiAgCisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gaGliLmN1cnJlbnRyb29taWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4gICAgICAgICAKKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQuaXNPd25lcjs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5tb3ZlVG9Ib21lOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgICAgCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPiAgICAKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJtb3ZlRmlsZTogIix2YWx1ZSk7CisgICAgICAgICAgICBwYXJlbnQub3Zlckl0ZW0uZG9PcGVuKCk7CisgICAgICAgICAgICBwYXJlbnQucmVmT2JqLnBhcmVudC5wYXJlbnQuZG9PcGVuKCk7CisgICAgICAgICAgICBwYXJlbnQuZGVzdHJveSgpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAgIAorICAgICAtLT4gIAorICAgCisJPHZpZXcgbmFtZT0iX2RyYWdGaWxlU3ltYm9sIiB4PSIxMCIgeT0iMTAiCisJCXJlc291cmNlPSIkb25jZXsgcGFyZW50LmRyYWdJdGVtUmVzb3VyY2UgfSIgLz4KKwkKKwk8dmlldyBuYW1lPSJfZHJhZ0ljb24iIHg9IjE4IiB5PSIxNCIgCisJCSAgcmVzb3VyY2U9ImRyYWdfbl9kcm9wX3JzYyIgZnJhbWU9IjEiIC8+CisJCisJPGRyYWdzdGF0ZSBuYW1lPSJkcmFnZ2VyIi8+Cis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvZHluYW1pY0ZpbGVOYW1lLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2ZpbGVleHBsb3Jlci9keW5hbWljRmlsZU5hbWUubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzM2YyMDUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvZHluYW1pY0ZpbGVOYW1lLmx6eApAQCAtMCwwICsxLDE1NyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9ImR5bmFtaWNGaWxlTmFtZSIgZXh0ZW5kcz0iY3VzdG9tSW5wdXR0ZXh0IiAKKwkgICBmb250c2l6ZT0iMTAiIGJnY29sb3I9IjB4RkZGRkZGIj4KKwkKKwk8YXR0cmlidXRlIG5hbWU9ImlzTmV3IiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisJCisJPCEtLSBPbmx5IHVzZWQgaW4gY2FzZSBpdHMgYW4gdXBkYXRlIC0tPgorCTxhdHRyaWJ1dGUgbmFtZT0iZmlsZUV4cGxvcmVySXRlbUlkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0icGFyZW50RmlsZUV4cGxvcmVySXRlbUlkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0iaXNPd25lciIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0icmVmT2JqIiB2YWx1ZT0ibnVsbCIgLz4KKwkKKwk8aGFuZGxlciBuYW1lPSJvbmJsdXIiPgorCQlsei5Nb2RlTWFuYWdlci5yZWxlYXNlKHRoaXMpOworCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiU3RvcmUgYW5kIERlc3Ryb3kgIix0aGlzLnBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCk7CisJCWlmICh0aGlzLmlzTmV3KSB7CisJCSAgICB0aGlzLmFkZEZvbGRlcigpOworCQl9IGVsc2UgeworCQkJdGhpcy51cGRhdGVGaWxlT3JGb2xkZXJOYW1lKCk7CisJCX0KKwk8L2hhbmRsZXI+CisJCisJPGhhbmRsZXIgbmFtZT0ib25rZXlkb3duIiBhcmdzPSJrIj4KKwkJPCFbQ0RBVEFbCisgICAgCQlpZiAoayA9PSAxMyB8fCBrID09IDI3KSB7CisgICAgCQkJdGhpcy5vbmJsdXIuc2VuZEV2ZW50KCk7CisgICAgCQl9CisJCV1dPgorCTwvaGFuZGxlcj4KKwkKKwk8IS0tCisJcHVibGljIExvbmcgYWRkRm9sZGVyU2VsZihTdHJpbmcgU0lELCBMb25nIHBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCwKKyAgICAgICAgICAgIFN0cmluZyBmaWxlTmFtZSwgTG9uZyByb29tX2lkLCBCb29sZWFuIGlzT3duZXIpCisgICAgIC0tPgorCQorCTxtZXRob2QgbmFtZT0iYWRkRm9sZGVyIj4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgibW92ZUZpbGUgSFRUUCAxOiAiKTsKKyAgICAgICAgICAgIC8vdGhpcy5nZXRGaWxlRXhwbG9yZXJCeVJvb20uZG9DYWxsKCk7CisgICAgICAgICAgICB2YXIgZG93bmxvYWR1cmwgPSBjYW52YXMuZ2V0VXJsKCkrJ3NlcnZpY2VzL0ZpbGVTZXJ2aWNlL2FkZEZvbGRlclNlbGZJbnRlcm5hbD8nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKydTSUQ9JytjYW52YXMuc2Vzc2lvbklkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKycmcGFyZW50RmlsZUV4cGxvcmVySXRlbUlkPScrdGhpcy5wYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArJyZmaWxlTmFtZT0nK3RoaXMudGV4dAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsnJnJvb21JZD0nK2hpYi5jdXJyZW50cm9vbWlkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKycmaXNPd25lcj0nK3RoaXMuaXNPd25lcjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5hZGRGb2xkZXJTZWxmLnNldEF0dHJpYnV0ZSgic3JjIixkb3dubG9hZHVybCk7CisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiYWRkRm9sZGVyU2VsZiBkb1JlcXVlc3QgIixkb3dubG9hZHVybCk7CisgICAgICAgICAgICB0aGlzLmFkZEZvbGRlclNlbGYuZG9SZXF1ZXN0KCk7CisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxkYXRhc2V0IG5hbWU9ImFkZEZvbGRlclNlbGYiIHR5cGU9Imh0dHAiID4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJkIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9uZGF0YSAiLGQpOworICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJhZGRGb2xkZXJTZWxmOiAiLGQpOworICAgICAgICAgICAgICAgIHBhcmVudC5jb21wbGV0ZWQoKTsKKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9kYXRhc2V0PgorCQorCTwhLS0KKwk8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJhZGRGb2xkZXIiIGZ1bmNuYW1lPSJmaWxlc2VydmljZS5hZGRGb2xkZXIiIAorICAgICAgICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAgIAorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50LnBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZDs8L21ldGhvZD48L25ldHBhcmFtPiAKKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50LnRleHQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4gICAKKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBoaWIuY3VycmVudHJvb21pZDs8L21ldGhvZD48L25ldHBhcmFtPiAgCisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC5pc093bmVyOzwvbWV0aG9kPjwvbmV0cGFyYW0+ICAgICAgICAgCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPiAgICAKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJhZGRGb2xkZXI6ICIsdmFsdWUpOworICAgICAgICAgICAgcGFyZW50LmNvbXBsZXRlZCh2YWx1ZSk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICA8L25ldFJlbW90ZUNhbGxIaWI+ICAKKyAgICAgLS0+CisJCisJPCEtLQorICAgIHB1YmxpYyBMb25nIHVwZGF0ZUZpbGVPckZvbGRlck5hbWVTZWxmKFN0cmluZyBTSUQsIExvbmcgZmlsZUV4cGxvcmVySXRlbUlkLAorICAgICAgICAgICAgU3RyaW5nIGZpbGVOYW1lKQorICAgICAtLT4KKyAgICA8bWV0aG9kIG5hbWU9InVwZGF0ZUZpbGVPckZvbGRlck5hbWUiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJtb3ZlRmlsZSBIVFRQIDE6ICIpOworICAgICAgICAgICAgLy90aGlzLmdldEZpbGVFeHBsb3JlckJ5Um9vbS5kb0NhbGwoKTsKKyAgICAgICAgICAgIHZhciBkb3dubG9hZHVybCA9IGNhbnZhcy5nZXRVcmwoKSsnc2VydmljZXMvRmlsZVNlcnZpY2UvdXBkYXRlRmlsZU9yRm9sZGVyTmFtZVNlbGY/JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICsnU0lEPScrY2FudmFzLnNlc3Npb25JZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsnJmZpbGVFeHBsb3Jlckl0ZW1JZD0nK3RoaXMuZmlsZUV4cGxvcmVySXRlbUlkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKycmZmlsZU5hbWU9Jyt0aGlzLnRleHQ7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMudXBkYXRlRmlsZU9yRm9sZGVyTmFtZVNlbGYuc2V0QXR0cmlidXRlKCJzcmMiLGRvd25sb2FkdXJsKTsKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ1cGRhdGVGaWxlT3JGb2xkZXJOYW1lU2VsZiBkb1JlcXVlc3QgIixkb3dubG9hZHVybCk7CisgICAgICAgICAgICB0aGlzLnVwZGF0ZUZpbGVPckZvbGRlck5hbWVTZWxmLmRvUmVxdWVzdCgpOworICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8ZGF0YXNldCBuYW1lPSJ1cGRhdGVGaWxlT3JGb2xkZXJOYW1lU2VsZiIgdHlwZT0iaHR0cCIgPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9ImQiPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib25kYXRhICIsZCk7CisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInVwZGF0ZUZpbGVPckZvbGRlck5hbWVTZWxmOiAiLGQpOworICAgICAgICAgICAgICAgIHBhcmVudC5jb21wbGV0ZWRSZW5hbWUoKTsKKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9kYXRhc2V0PgorICAgIAorCTwhLS0KKwk8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJ1cGRhdGVGaWxlT3JGb2xkZXJOYW1lIiBmdW5jbmFtZT0iZmlsZXNlcnZpY2UudXBkYXRlRmlsZU9yRm9sZGVyTmFtZSIgCisgICAgICAgIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiA+ICAgCisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gY2FudmFzLnNlc3Npb25JZDs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQuZmlsZUV4cGxvcmVySXRlbUlkOzwvbWV0aG9kPjwvbmV0cGFyYW0+IAorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQudGV4dDs8L21ldGhvZD48L25ldHBhcmFtPiAgIAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4gICAgCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidXBkYXRlRmlsZU9yRm9sZGVyTmFtZTogIixwYXJlbnQuZmlsZUV4cGxvcmVySXRlbUlkKTsKKyAgICAgICAgICAgIHBhcmVudC5jb21wbGV0ZWRSZW5hbWUoKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4KKyAgICAgLS0+CisgICAgCisJPG1ldGhvZCBuYW1lPSJjb21wbGV0ZWQiPgorCQkvL3RoaXMucmVmT2JqLmZpbGVFeHBsb3Jlckl0ZW1JZCA9IGZpbGVFeHBsb3Jlckl0ZW1JZDsKKwkJdGhpcy5yZWZPYmouc2V0QXR0cmlidXRlKCJmaWxlTmFtZSIsdGhpcy5nZXRUZXh0KCkpOworCQl0aGlzLnJlZk9iai5wYXJlbnQucGFyZW50LmRvT3BlbigpOworCQl0aGlzLmRlc3Ryb3koKTsKKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9ImNvbXBsZXRlZFJlbmFtZSI+CisJCXRoaXMucmVmT2JqLnNldEF0dHJpYnV0ZSgiZmlsZU5hbWUiLHRoaXMuZ2V0VGV4dCgpKTsKKwkJdGhpcy5kZXN0cm95KCk7CisJPC9tZXRob2Q+CisJCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvZmlsZUV4cGxvcmVyLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2ZpbGVleHBsb3Jlci9maWxlRXhwbG9yZXIubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3ZTA2NDAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvZmlsZUV4cGxvcmVyLmx6eApAQCAtMCwwICsxLDYyMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworCis8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMKKyAgICBDbGFzcyBmaWxlRXhwbG9yZXIKKyAtLT4KKzxjbGFzcyBuYW1lPSJmaWxlRXhwbG9yZXIiIGV4dGVuZHM9InZpZXciID4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9InBhcmVudEZvbGRlcklkIiB2YWx1ZT0iLTIiIHR5cGU9Im51bWJlciIgLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9Il9zZWxlY3RlZCIgdmFsdWU9Im51bGwiIC8+CisgICAgCisgICAgPGV2ZW50IG5hbWU9Im9uQ2xvc2UiLz4KKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgIAljYW52YXMuY3VycmVudEZpbGVFeHBsb3JlciA9IHRoaXM7CisgICAgICAgIGx6LlRyYWNrLnJlZ2lzdGVyKHRoaXMuX3RyYXNoQmFyLl90cmFzaEljb24sIGNhbnZhcy5jdXJyZW50SW1hZ2VzTGlzdGRyYXcuY3VycmVudFRyYWNrR3JvdXBOYW1lKTsKKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib252aXNpYmxlIj4KKyAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImZpbGVFeHBsb3Jlcjo6b252aXNpYmxlIHRoaXMuX3NlbGVjdGVkICIsdGhpcy5fc2VsZWN0ZWQpOworICAgICAgICAvL1RoaXMgaXMgdGhyb3duIHdoZW5ldmVyIGFuIHVwbG9hZGVkIERvY3VtZW50IGhhcyBjb21wbGV0ZWQKKyAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkID09IG51bGwpIHsKKyAgICAgICAgICAgIHRoaXMubG9hZEZpbGVzKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgIAlpZiAodGhpcy5fc2VsZWN0ZWQuaXNGb2xkZXIpIHsKKyAgICAgICAgICAgIAl0aGlzLl9zZWxlY3RlZC5yZWZyZXNoKCk7CisgICAgICAgIAl9IGVsc2UgeworICAgICAgICAJCXRoaXMubG9hZEZpbGVzKCk7CisgICAgICAgIAl9CisgICAgICAgIH0KKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJzZWxlY3RJdGVtIiBhcmdzPSJpdGVtUmVmIj4KKyAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkICE9IG51bGwpIHsKKyAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkLmRlc2VsZWN0SXRlbSgpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0aGlzLl9zZWxlY3RlZCA9IGl0ZW1SZWY7CisgICAgICAgIHRoaXMuX3NlbGVjdGVkLnNlbGVjdEl0ZW0oKTsKKyAgICAgICAgCisgICAgICAgIC8vU2V0IHBhcmVudCBmb2xkZXIgaWQgZm9yIG5leHQgRm9sZGVyIG9yIHVwbG9hZGVkIGZpbGUKKyAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkLmZpbGVFeHBsb3Jlckl0ZW1JZCA9PSAwKSB7CisgICAgICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWQuaXNPd25lcikgeworICAgICAgICAgICAgICAgIHRoaXMucGFyZW50Rm9sZGVySWQgPSAtMjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnRGb2xkZXJJZCA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aGlzLnBhcmVudEZvbGRlcklkID0gdGhpcy5fc2VsZWN0ZWQuZmlsZUV4cGxvcmVySXRlbUlkOworICAgICAgICB9CisgICAgICAgIAorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iYWRkRmlsZSI+CisgICAgCTwhW0NEQVRBWworCSAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImFkZEZpbGUgOjogIix0aGlzLl9zZWxlY3RlZCx0aGlzLnBhcmVudEZvbGRlcklkKTsKKwkgICAgCQorCSAgICAJaWYgKCFjYW52YXMuaXNBbGxvd2VkVG9EcmF3ICYmICFjYW52YXMuaXNtb2RlcmF0b3IpIHsKKwkgICAgCQluZXcgbHoubGFiZWxlcnJvclBvcHVwKGNhbnZhcyx7ZXJyb3JsYWJlbGlkOjE0NjJ9KTsKKwkgICAgCQlyZXR1cm47CisJICAgIAl9CisJICAgIAkKKwkgICAgCXZhciBpc093bmVyID0gMDsKKwkgICAgCWlmICh0aGlzLnBhcmVudEZvbGRlcklkID09IC0yKSB7CisJICAgIAkJaXNPd25lciA9IDE7CisJICAgIAl9IGVsc2UgeworCSAgICAJCS8vQ2hlY2sgaWYgaXRzIGEgc3ViZm9sZGVyIG9mIGEgT3duZXJzIERpcgorCSAgICAJCWlmICh0aGlzLl9zZWxlY3RlZCAhPSBudWxsKSB7CisJICAgIAkJCXZhciBjaGVja0Zvck93ZXIgPSB0aGlzLl9zZWxlY3RlZC5jaGVja0ZvcklzT3duZXIoKTsKKwkgICAgCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImNoZWNrRm9yT3dlciA6OiIsY2hlY2tGb3JPd2VyKTsKKwkgICAgCQkJaWYgKGNoZWNrRm9yT3dlcikgeworCSAgICAJCQkJaXNPd25lciA9IDE7CisJICAgIAkJCX0KKwkgICAgCQl9CisJICAgIAl9CisJICAgIAkKKwkgICAgCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJhZGRGaWxlIDo6ICIsaXNPd25lcik7CisJICAgIAkKKwkgICAgICAgIG5ldyBsei51cGxvYWRXaW5kb3dFeHBsb3JlcihjYW52YXMubWFpbl9jb250ZW50Ll9jb250ZW50LmlubmVyLHsKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDo2MCx1cGxvYWRtb2R1bGU6Y2FudmFzLnVwbG9hZG1vZHVsZWltZywKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50Rm9sZGVySWQ6dGhpcy5wYXJlbnRGb2xkZXJJZCwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNPd25lcjppc093bmVyLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlRXhwbG9yZXJSZWY6dGhpcywKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNPbmx5SW1hZ2U6dHJ1ZSwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmxldE5hbWU6J2ZpbGUudXBsb2FkJworCSAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImFkZEZvbGRlciI+CisgICAgCTwhW0NEQVRBWworICAgIAkJaWYgKCFjYW52YXMuaXNBbGxvd2VkVG9EcmF3ICYmICFjYW52YXMuaXNtb2RlcmF0b3IpIHsKKwkgICAgCQluZXcgbHoubGFiZWxlcnJvclBvcHVwKGNhbnZhcyx7ZXJyb3JsYWJlbGlkOjE0NjJ9KTsKKwkgICAgCQlyZXR1cm47CisJICAgIAl9CisgICAgCisJICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWQgPT0gbnVsbCkgeworCSAgICAgICAgCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJhZGRGb2xkZXIgOjoxICIsdGhpcy5fc2VsZWN0ZWQpOworCSAgICAgICAgICAgIHRoaXMuX2ZpbGVhcmVhLl9jb250ZW50YXJlYS5zdWJ2aWV3c1swXS5hZGRGb2xkZXIoKTsKKwkgICAgICAgIH0gZWxzZSB7CisJICAgICAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkLmlzRm9sZGVyKSB7CisJICAgICAgICAgICAgCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCItMSB0aGlzLl9zZWxlY3RlZC5pc0ZvbGRlciAiLHRoaXMuX3NlbGVjdGVkKTsKKwkgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWQuYWRkRm9sZGVyKCk7CisJICAgICAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIi0yICF0aGlzLl9zZWxlY3RlZC5pc0ZvbGRlciAiLHRoaXMuX3NlbGVjdGVkKTsKKwkgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWQucGFyZW50LnBhcmVudC5hZGRGb2xkZXIoKTsKKwkgICAgICAgICAgICB9CisJICAgICAgICB9CisJICAgIF1dPgorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0ibG9hZFdtbEZpbGUiIGFyZ3M9Iml0ZW1PYmoiPgorCQl0aGlzLnNlbGVjdEl0ZW0oaXRlbU9iaik7CisJCWNhbnZhcy5fZHJhd2FyZWEucHJlcGFyZUxvYWRXTUxGaWxlKGl0ZW1PYmopOyAKKwkJLy9jYW52YXMuX2RyYXdhcmVhLmxvYWRPYmplY3RMaXN0KGl0ZW1PYmopOyAKKwk8L21ldGhvZD4KKworICAgIAorICAgIDxtZXRob2QgbmFtZT0ibG9hZERvY3VtZW50IiBhcmdzPSJpdGVtT2JqIj4KKyAgICAgICAgdGhpcy5zZWxlY3RJdGVtKGl0ZW1PYmopOworICAgICAgICB0aGlzLl9kb2N1bWVudHNUYWJzLnNldEF0dHJpYnV0ZSgiaGVpZ2h0IiwyMCk7CisgICAgICAgIHRoaXMuX2RvY3VtZW50c1RhYnMuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgICAgICB0aGlzLl9kb2N1bWVudHNUYWJzLmhpZGVBbGwoKTsKKyAgICAgICAgdmFyIHQgPSBuZXcgbHoucHJlc2VudGF0aW9uUHJldmlldyh0aGlzLHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50T2JqOml0ZW1PYmosCisgICAgICAgICAgICAgICAgICAgICAgICByZWZPYmpMaXN0OnRoaXMKKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIC8vdC5zZW5kVG9CYWNrKCk7CisgICAgICAgIC8vdGhpcy5fYmcxLnNlbmRUb0JhY2soKTsKKyAgICAgICAgLy90aGlzLl9iZzIuc2VuZFRvQmFjaygpOworICAgICAgICB0aGlzLl9kb2N1bWVudHNUYWJzLmJyaW5nVG9Gcm9udCgpOworICAgICAgICByZXR1cm4gdDsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InBsYXlWaWRlbyIgYXJncz0iaXRlbU9iaiI+CisgICAgCXRoaXMuc2VsZWN0SXRlbShpdGVtT2JqKTsKKyAgICAJY2FudmFzLl9kcmF3YXJlYS5wbGF5VmlkZW9TeW5jZWQoaXRlbU9iai5maWxlRXhwbG9yZXJJdGVtSWQsaXRlbU9iai5maWxlTmFtZSxpdGVtT2JqLmZsdldpZHRoLGl0ZW1PYmouZmx2SGVpZ2h0KTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImxvYWRGaWxlcyI+CisgICAgCTwhW0NEQVRBWworICAgIAkgICAgaWYgKHRoaXNbImdldEZpbGVFeHBsb3JlckJ5Um9vbVNlbGYiXSkgeworICAgICAgICAgICAgICAgIC8vdGhpcy5nZXRGaWxlRXhwbG9yZXJCeVJvb20uZG9DYWxsKCk7CisgICAgICAgICAgICAgICAgdmFyIGRvd25sb2FkdXJsID0gY2FudmFzLmdldFVybCgpKydzZXJ2aWNlcy9GaWxlU2VydmljZS9nZXRGaWxlRXhwbG9yZXJCeVJvb21TZWxmSW50ZXJuYWw/JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArJ1NJRD0nK2NhbnZhcy5zZXNzaW9uSWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKycmcm9vbUlkPScraGliLmN1cnJlbnRyb29taWQ7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgdGhpcy5nZXRGaWxlRXhwbG9yZXJCeVJvb21TZWxmLnNldEF0dHJpYnV0ZSgic3JjIixkb3dubG9hZHVybCk7CisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImdldEZpbGVFeHBsb3JlckJ5Um9vbVNlbGYgZG9SZXF1ZXN0IDEgIixkb3dubG9hZHVybCk7CisgICAgICAgICAgICAgICAgdGhpcy5nZXRGaWxlRXhwbG9yZXJCeVJvb21TZWxmLmRvUmVxdWVzdCgpOworICAgIAkgICAgfQorICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8ZGF0YXNldCBuYW1lPSJnZXRGaWxlRXhwbG9yZXJCeVJvb21TZWxmIiB0eXBlPSJodHRwIiA+CisgICAgCTxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0iZCI+CisgICAgCQk8IVtDREFUQVsKKyAgICAJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib25kYXRhIDEgIix0aGlzLnNyYyk7CisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9uZGF0YSAyICIsZCk7CisgICAgICAgICAgICAgICAgcGFyZW50LnBhcnNlUm9vdEl0ZW1zKHBhcmVudC5wYXJzZVJvb3RUb1Jvb21PYmplY3QoZCkpOworICAgICAgICAgICAgXV0+CisgICAgCTwvaGFuZGxlcj4KKyAgICA8L2RhdGFzZXQ+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJwYXJzZVBhcmVudFRvUm9vbU9iamVjdCIgYXJncz0iZE9iaiI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgZmlsZXNPYmplY3QgPSBuZXcgQXJyYXkoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIHRGaWxlcyA9IGRPYmouY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgicGFyc2VQYXJlbnRUb1Jvb21PYmplY3QgdEZpbGVzICIsdEZpbGVzKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8dEZpbGVzLmxlbmd0aDtpKyspIHsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBmaWxlc09iamVjdC5wdXNoKHRoaXMucGFyc2VUb0ZpbGVPYmoodEZpbGVzW2ldLmNoaWxkTm9kZXMpKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICAgICByZXR1cm4gZmlsZXNPYmplY3Q7CisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0icGFyc2VSb290VG9Sb29tT2JqZWN0IiBhcmdzPSJkT2JqIj4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciByb29tT2JqZWN0ID0gbmV3IE9iamVjdCgpOworICAgICAgICAgICAgCisgICAgICAgICAgICByb29tT2JqZWN0LnVzZXJIb21lID0gbmV3IEFycmF5KCk7CisgICAgICAgICAgICByb29tT2JqZWN0LnJvb21Ib21lID0gbmV3IEFycmF5KCk7CisgICAgICAgICAgICByb29tT2JqZWN0LnVzZXJIb21lU2l6ZSA9IDA7CisgICAgICAgICAgICByb29tT2JqZWN0LnJvb21Ib21lU2l6ZSA9IDA7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciB0RmlsZXMgPSBkT2JqLmNoaWxkTm9kZXNbMF0uY2hpbGROb2Rlc1swXS5jaGlsZE5vZGVzOworICAgICAgICAgICAgCisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJ0RmlsZXMgIix0RmlsZXMpOworICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTx0RmlsZXMubGVuZ3RoO2krKykgeworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm5vZGVOYW1lIix0RmlsZXNbaV0ubm9kZU5hbWUpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmICh0RmlsZXNbaV0ubm9kZU5hbWUgPT0gInVzZXJIb21lU2l6ZSIpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInJvb21Ib21lU2l6ZSIsdEZpbGVzW2ldLmNoaWxkTm9kZXNbMF0uZGF0YSk7CisgICAgICAgICAgICAgICAgICAgIHJvb21PYmplY3QudXNlckhvbWVTaXplID0gTnVtYmVyKHRGaWxlc1tpXS5jaGlsZE5vZGVzWzBdLmRhdGEpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodEZpbGVzW2ldLm5vZGVOYW1lID09ICJyb29tSG9tZVNpemUiKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJyb29tSG9tZVNpemUiLHRGaWxlc1tpXS5jaGlsZE5vZGVzWzBdLmRhdGEpOworICAgICAgICAgICAgICAgICAgICByb29tT2JqZWN0LnJvb21Ib21lU2l6ZSA9IE51bWJlcih0RmlsZXNbaV0uY2hpbGROb2Rlc1swXS5kYXRhKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRGaWxlc1tpXS5ub2RlTmFtZSA9PSAicm9vbUhvbWUiKSB7CisgICAgICAgICAgICAgICAgICAgIHJvb21PYmplY3Qucm9vbUhvbWUucHVzaCh0aGlzLnBhcnNlVG9GaWxlT2JqKHRGaWxlc1tpXS5jaGlsZE5vZGVzKSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0RmlsZXNbaV0ubm9kZU5hbWUgPT0gInVzZXJIb21lIikgeworICAgICAgICAgICAgICAgICAgICByb29tT2JqZWN0LnVzZXJIb21lLnB1c2godGhpcy5wYXJzZVRvRmlsZU9iaih0RmlsZXNbaV0uY2hpbGROb2RlcykpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICAgICByZXR1cm4gcm9vbU9iamVjdDsKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJwYXJzZVRvRmlsZU9iaiIgYXJncz0iZE9iaiI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAKKyAgICAgICAgICAgIHZhciB0RmlsZU9iaiA9IG5ldyBPYmplY3QoKTsKKyAgICAgICAgCisgICAgICAgICAgICB2YXIgdHlwZSA9ICJzdHJpbmciOworICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTxkT2JqLmxlbmd0aDtpKyspIHsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB0eXBlID0gInN0cmluZyI7CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGRPYmpbaV0ubm9kZU5hbWUpeworICAgICAgICAgICAgICAgICAgICBjYXNlICJleHRlcm5hbEZpbGVJZCI6CisgICAgICAgICAgICAgICAgICAgICAgICB0eXBlID0gImludCI7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAiZmlsZUV4cGxvcmVySXRlbUlkIjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSAiaW50IjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlICJmaWxlU2l6ZSI6CisgICAgICAgICAgICAgICAgICAgICAgICB0eXBlID0gImludCI7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAiZmx2SGVpZ2h0IjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSAiaW50IjsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICBjYXNlICJmbHZXaWR0aCI6CisgICAgICAgICAgICAgICAgICAgICAgICB0eXBlID0gImludCI7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAiaW5zZXJ0ZWRCeSI6CisgICAgICAgICAgICAgICAgICAgICAgICB0eXBlID0gImludCI7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAiaXNDaGFydCI6CisgICAgICAgICAgICAgICAgICAgICAgICB0eXBlID0gImJvb2xlYW4iOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgImlzRm9sZGVyIjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSAiYm9vbGVhbiI7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAiaXNJbWFnZSI6CisgICAgICAgICAgICAgICAgICAgICAgICB0eXBlID0gImJvb2xlYW4iOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgImlzUHJlc2VudGF0aW9uIjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSAiYm9vbGVhbiI7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAiaXNTdG9yZWRXbWxGaWxlIjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUgPSAiYm9vbGVhbiI7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAiaXNWaWRlbyI6CisgICAgICAgICAgICAgICAgICAgICAgICB0eXBlID0gImJvb2xlYW4iOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgIm93bmVySWQiOgorICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSA9ICJpbnQiOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIGNhc2UgInBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCI6CisgICAgICAgICAgICAgICAgICAgICAgICB0eXBlID0gImludCI7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgY2FzZSAicm9vbV9pZCI6CisgICAgICAgICAgICAgICAgICAgICAgICB0eXBlID0gImludCI7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJPYmogYXR0ciAiLGRPYmpbaV0ubm9kZU5hbWUsdHlwZSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKGRPYmpbaV0uY2hpbGROb2Rlcy5sZW5ndGggPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAiaW50IjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0RmlsZU9ialtkT2JqW2ldLm5vZGVOYW1lXSA9IE51bWJlcihkT2JqW2ldLmNoaWxkTm9kZXNbMF0uZGF0YSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJib29sZWFuIjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0RmlsZU9ialtkT2JqW2ldLm5vZGVOYW1lXSA9IChkT2JqW2ldLmNoaWxkTm9kZXNbMF0uZGF0YSA9PSAidHJ1ZSIpID8gdHJ1ZSA6IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0RmlsZU9ialtkT2JqW2ldLm5vZGVOYW1lXSA9IGRPYmpbaV0uY2hpbGROb2Rlc1swXS5kYXRhOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdEZpbGVPYmpbZE9ialtpXS5ub2RlTmFtZV0gPSBudWxsOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJPYmogYXR0ciAiLGRPYmpbaV0ubm9kZU5hbWUsdEZpbGVPYmpbZE9ialtpXS5ub2RlTmFtZV0pOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgICAgIHJldHVybiB0RmlsZU9iajsKKyAgICAgICAgICAgIAorICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8IS0tCisgICAgICAgIFBhcnNlIEl0ZW1zIGFuZCBnZW5lcmF0ZSBPdXRwdXQKKyAgICAgLS0+IAorICAgIDxtZXRob2QgbmFtZT0icGFyc2VSb290SXRlbXMiIGFyZ3M9InJvb21PYmplY3QiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIHRoaXMuY2xlYXJDb250ZW50KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciBob21lU2l6ZUluTUJ5dGVzID0gTWF0aC5yb3VuZCggKHJvb21PYmplY3QudXNlckhvbWVTaXplIC8gMTAyNCAvIDEwMjQpICogMTAwKSAvIDEwMDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5fdXNlclNwYWNlLl91c2VySG9tZVNpemUuc2V0QXR0cmlidXRlKCJ0ZXh0IiwiIiArIGhvbWVTaXplSW5NQnl0ZXMgKyAiIE1CeXRlcyIpOworICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgcm9vbUhvbWVTaXplSW5NQnl0ZXMgPSBNYXRoLnJvdW5kKCAocm9vbU9iamVjdC5yb29tSG9tZVNpemUgLyAxMDI0IC8gMTAyNCkgKiAxMDApIC8gMTAwOworICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLl91c2VyU3BhY2UuX3Jvb21Ib21lU2l6ZS5zZXRBdHRyaWJ1dGUoInRleHQiLCIiICsgcm9vbUhvbWVTaXplSW5NQnl0ZXMgKyAiIE1CeXRlcyIpOworICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgaG9tZUljb24gPSBuZXcgbHoucm9vdEZpbGVFeHBsb3Jlckl0ZW0odGhpcy5fZmlsZWFyZWEuX2NvbnRlbnRhcmVhLHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuOnRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZU5hbWU6Y2FudmFzLmdldExhYmVsTmFtZSg3MDYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6J19ob21lJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1Jvb3Q6dHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlSWNvbjonZmlsZV9leHBsb3Jlcl9mb2xkZXJfaG9tZV9yc2MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzT3duZXI6dHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZPYmpMaXN0Um9vdDp0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgaG9tZUljb24uY29udGVudC5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgICAgICBob21lSWNvbi5pY29uX2ZvbGRlcl9wcmUuc2V0QXR0cmlidXRlKCJmcmFtZSIsMik7CisgICAgICAgICAgICBob21lSWNvbi5fZm9sZGVySWNvbi5zZXRBdHRyaWJ1dGUoImZyYW1lIiwyKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy9Ib21lIGFyZWEKKyAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTxyb29tT2JqZWN0LnVzZXJIb21lLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgdmFyIGZpbGVFeHBsb3Jlckl0ZW0gPSByb29tT2JqZWN0LnVzZXJIb21lW2ldOworICAgICAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImZpbGVFeHBsb3Jlckl0ZW0sICIsZmlsZUV4cGxvcmVySXRlbSk7CisgICAgICAgICAgICAgICAgaWYgKGZpbGVFeHBsb3Jlckl0ZW0uaXNGb2xkZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgbmV3IGx6LmZvbGRlckZpbGVFeHBsb3Jlckl0ZW0oaG9tZUljb24uY29udGVudCx7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVFeHBsb3Jlckl0ZW1JZDpmaWxlRXhwbG9yZXJJdGVtLmZpbGVFeHBsb3Jlckl0ZW1JZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZU5hbWU6ZmlsZUV4cGxvcmVySXRlbS5maWxlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUljb246J2ljb25fZm9sZGVyX3JzYycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZk9iakxpc3RSb290OnRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZpbGVFeHBsb3Jlckl0ZW0uaXNJbWFnZSkgeworICAgICAgICAgICAgICAgICAgICBuZXcgbHouaW1hZ2VGaWxlRXhwbG9yZXJJdGVtKGhvbWVJY29uLmNvbnRlbnQseworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0ZvbGRlcjpmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUV4cGxvcmVySXRlbUlkOmZpbGVFeHBsb3Jlckl0ZW0uZmlsZUV4cGxvcmVySXRlbUlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlTmFtZTpmaWxlRXhwbG9yZXJJdGVtLmZpbGVOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlSGFzaDpmaWxlRXhwbG9yZXJJdGVtLmZpbGVIYXNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0ZvbGRlcjpmYWxzZSxpc0ltYWdlOnRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVJY29uOidmaWxlX2V4cGxvcmVyX2ltYWdlX3JzYycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZk9iakxpc3RSb290OnRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZpbGVFeHBsb3Jlckl0ZW0uaXNQcmVzZW50YXRpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgbmV3IGx6LmRvY3VtZW50RmlsZUV4cGxvcmVySXRlbShob21lSWNvbi5jb250ZW50LHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNGb2xkZXI6ZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVFeHBsb3Jlckl0ZW1JZDpmaWxlRXhwbG9yZXJJdGVtLmZpbGVFeHBsb3Jlckl0ZW1JZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZU5hbWU6ZmlsZUV4cGxvcmVySXRlbS5maWxlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUhhc2g6ZmlsZUV4cGxvcmVySXRlbS5maWxlSGFzaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNGb2xkZXI6ZmFsc2UsaXNQcmVzZW50YXRpb246dHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUljb246J2ZpbGVfZXhwbG9yZXJfZG9jdW1lbnRfcnNjJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmT2JqTGlzdFJvb3Q6dGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZmlsZUV4cGxvcmVySXRlbS5pc1ZpZGVvKSB7CisgICAgICAgICAgICAgICAgICAgIG5ldyBsei52aWRlb0ZpbGVFeHBsb3Jlckl0ZW0oaG9tZUljb24uY29udGVudCx7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRm9sZGVyOmZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1ZpZGVvOnRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVFeHBsb3Jlckl0ZW1JZDpmaWxlRXhwbG9yZXJJdGVtLmZpbGVFeHBsb3Jlckl0ZW1JZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZU5hbWU6ZmlsZUV4cGxvcmVySXRlbS5maWxlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUhhc2g6ZmlsZUV4cGxvcmVySXRlbS5maWxlSGFzaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNGb2xkZXI6ZmFsc2UsaXNJbWFnZTp0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlSWNvbjonZmlsZV9leHBsb3Jlcl92aWRlb19yc2MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbHZIZWlnaHQ6ZmlsZUV4cGxvcmVySXRlbS5mbHZIZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsdldpZHRoOmZpbGVFeHBsb3Jlckl0ZW0uZmx2V2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZk9iakxpc3RSb290OnRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZpbGVFeHBsb3Jlckl0ZW0uaXNTdG9yZWRXbWxGaWxlKSB7IAorICAgICAgICAgICAgICAgIAluZXcgbHoud21sRmlsZUV4cGxvcmVySXRlbShob21lSWNvbi5jb250ZW50LHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNGb2xkZXI6ZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVFeHBsb3Jlckl0ZW1JZDpmaWxlRXhwbG9yZXJJdGVtLmZpbGVFeHBsb3Jlckl0ZW1JZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZU5hbWU6ZmlsZUV4cGxvcmVySXRlbS5maWxlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUljb246J2ZpbGVfZXhwbG9yZXJfd21sX3JzYycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzV21sRmlsZTogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmT2JqTGlzdFJvb3Q6dGhpcyAgICAgICAgICAgICAgICAJCisgICAgICAgICAgICAJCQkJCQkJfSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmaWxlRXhwbG9yZXJJdGVtLmlzQ2hhcnQpIHsgCisgICAgICAgICAgICAgICAgICBuZXcgbHoud21sRmlsZUV4cGxvcmVySXRlbShob21lSWNvbi5jb250ZW50LHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNGb2xkZXI6ZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVFeHBsb3Jlckl0ZW1JZDpmaWxlRXhwbG9yZXJJdGVtLmZpbGVFeHBsb3Jlckl0ZW1JZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZU5hbWU6ZmlsZUV4cGxvcmVySXRlbS5maWxlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUljb246J2ZpbGVfZXhwbG9yZXJfY2hhcnRfcnNjJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNDaGFydDp0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZPYmpMaXN0Um9vdDp0aGlzICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIAl9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvL1B1YmxpYyAtIFJvb20gQXJlYQorICAgICAgICAgICAgdmFyIHJvb21Ib21lID0gbmV3IGx6LnJvb3RGaWxlRXhwbG9yZXJJdGVtKHRoaXMuX2ZpbGVhcmVhLl9jb250ZW50YXJlYSx7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Blbjp0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVOYW1lOmNhbnZhcy5nZXRMYWJlbE5hbWUoNzA3KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOidfcm9vbUhvbWUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUm9vdDp0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVJY29uOidmaWxlX2V4cGxvcmVyX2ZvbGRlcl9uZXR3b3JrX3JzYycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmT2JqTGlzdFJvb3Q6dGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHJvb21Ib21lLmNvbnRlbnQuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgICAgICAgICAgcm9vbUhvbWUuaWNvbl9mb2xkZXJfcHJlLnNldEF0dHJpYnV0ZSgiZnJhbWUiLDIpOworICAgICAgICAgICAgcm9vbUhvbWUuX2ZvbGRlckljb24uc2V0QXR0cmlidXRlKCJmcmFtZSIsMik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vUHVibGljIGFyZWEKKyAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTxyb29tT2JqZWN0LnJvb21Ib21lLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgdmFyIGZpbGVFeHBsb3Jlckl0ZW0gPSByb29tT2JqZWN0LnJvb21Ib21lW2ldOworICAgICAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImZpbGVFeHBsb3Jlckl0ZW0uZmlsZUV4cGxvcmVySXRlbUlkLCAiLGZpbGVFeHBsb3Jlckl0ZW0uZmlsZUV4cGxvcmVySXRlbUlkKTsKKyAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJmaWxlRXhwbG9yZXJJdGVtLCAiLGZpbGVFeHBsb3Jlckl0ZW0pOworICAgICAgICAgICAgICAgIGlmIChmaWxlRXhwbG9yZXJJdGVtLmlzRm9sZGVyKSB7CisgICAgICAgICAgICAgICAgICAgIG5ldyBsei5mb2xkZXJGaWxlRXhwbG9yZXJJdGVtKHJvb21Ib21lLmNvbnRlbnQseworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlTmFtZTpmaWxlRXhwbG9yZXJJdGVtLmZpbGVOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlRXhwbG9yZXJJdGVtSWQ6ZmlsZUV4cGxvcmVySXRlbS5maWxlRXhwbG9yZXJJdGVtSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVJY29uOidpY29uX2ZvbGRlcl9yc2MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZPYmpMaXN0Um9vdDp0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmaWxlRXhwbG9yZXJJdGVtLmlzSW1hZ2UpIHsKKyAgICAgICAgICAgICAgICAgICAgbmV3IGx6LmltYWdlRmlsZUV4cGxvcmVySXRlbShyb29tSG9tZS5jb250ZW50LHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNGb2xkZXI6ZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVFeHBsb3Jlckl0ZW1JZDpmaWxlRXhwbG9yZXJJdGVtLmZpbGVFeHBsb3Jlckl0ZW1JZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZU5hbWU6ZmlsZUV4cGxvcmVySXRlbS5maWxlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUhhc2g6ZmlsZUV4cGxvcmVySXRlbS5maWxlSGFzaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNGb2xkZXI6ZmFsc2UsaXNJbWFnZTp0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlSWNvbjonZmlsZV9leHBsb3Jlcl9pbWFnZV9yc2MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZPYmpMaXN0Um9vdDp0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmaWxlRXhwbG9yZXJJdGVtLmlzUHJlc2VudGF0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIG5ldyBsei5kb2N1bWVudEZpbGVFeHBsb3Jlckl0ZW0ocm9vbUhvbWUuY29udGVudCx7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRm9sZGVyOmZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlRXhwbG9yZXJJdGVtSWQ6ZmlsZUV4cGxvcmVySXRlbS5maWxlRXhwbG9yZXJJdGVtSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVOYW1lOmZpbGVFeHBsb3Jlckl0ZW0uZmlsZU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVIYXNoOmZpbGVFeHBsb3Jlckl0ZW0uZmlsZUhhc2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRm9sZGVyOmZhbHNlLGlzUHJlc2VudGF0aW9uOnRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVJY29uOidmaWxlX2V4cGxvcmVyX2RvY3VtZW50X3JzYycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZk9iakxpc3RSb290OnRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGZpbGVFeHBsb3Jlckl0ZW0uaXNWaWRlbykgeworICAgICAgICAgICAgICAgICAgICBuZXcgbHoudmlkZW9GaWxlRXhwbG9yZXJJdGVtKHJvb21Ib21lLmNvbnRlbnQseworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0ZvbGRlcjpmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNWaWRlbzp0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlRXhwbG9yZXJJdGVtSWQ6ZmlsZUV4cGxvcmVySXRlbS5maWxlRXhwbG9yZXJJdGVtSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVOYW1lOmZpbGVFeHBsb3Jlckl0ZW0uZmlsZU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVIYXNoOmZpbGVFeHBsb3Jlckl0ZW0uZmlsZUhhc2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRm9sZGVyOmZhbHNlLGlzSW1hZ2U6dHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUljb246J2ZpbGVfZXhwbG9yZXJfdmlkZW9fcnNjJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmx2SGVpZ2h0OmZpbGVFeHBsb3Jlckl0ZW0uZmx2SGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbHZXaWR0aDpmaWxlRXhwbG9yZXJJdGVtLmZsdldpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZPYmpMaXN0Um9vdDp0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmaWxlRXhwbG9yZXJJdGVtLmlzU3RvcmVkV21sRmlsZSkgeyAKKyAgICAgICAgICAgICAgICAJbmV3IGx6LndtbEZpbGVFeHBsb3Jlckl0ZW0ocm9vbUhvbWUuY29udGVudCx7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRm9sZGVyOmZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlRXhwbG9yZXJJdGVtSWQ6ZmlsZUV4cGxvcmVySXRlbS5maWxlRXhwbG9yZXJJdGVtSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVOYW1lOmZpbGVFeHBsb3Jlckl0ZW0uZmlsZU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVJY29uOidmaWxlX2V4cGxvcmVyX3dtbF9yc2MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1dtbEZpbGU6IHRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZk9iakxpc3RSb290OnRoaXMgICAgICAgICAgICAgICAgCQorICAgICAgICAgICAgCQkJCQkJCX0pOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZmlsZUV4cGxvcmVySXRlbS5pc0NoYXJ0KSB7IAorICAgICAgICAgICAgICAgICAgbmV3IGx6LndtbEZpbGVFeHBsb3Jlckl0ZW0ocm9vbUhvbWUuY29udGVudCx7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRm9sZGVyOmZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlRXhwbG9yZXJJdGVtSWQ6ZmlsZUV4cGxvcmVySXRlbS5maWxlRXhwbG9yZXJJdGVtSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVOYW1lOmZpbGVFeHBsb3Jlckl0ZW0uZmlsZU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVJY29uOidmaWxlX2V4cGxvcmVyX2NoYXJ0X3JzYycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQ2hhcnQ6dHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmT2JqTGlzdFJvb3Q6dGhpcyAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAJCX0KKyAgICAgICAgICAgIH0KKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJjbGVhckNvbnRlbnQiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIGZvciAodmFyIGVnIGluIHRoaXMuX2ZpbGVhcmVhLl9jb250ZW50YXJlYS5zdWJ2aWV3cykgeworICAgICAgICAgICAgICAgIHRoaXMuX2ZpbGVhcmVhLl9jb250ZW50YXJlYS5zdWJ2aWV3c1tlZ10uZGVzdHJveSgpOworICAgICAgICAgICAgfQorICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8IS0tCisgICAgICAgIEJvcmRlcnMKKyAgICAgLS0+CisgICAgICAgICAgICAgICAKKyAgICA8dmlldyBuYW1lPSJfYm9yZGVyMiIgeD0iMCIgeT0iJHsgMzMgKyBwYXJlbnQuX2RvY3VtZW50c1RhYnMuaGVpZ2h0IH0iIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoIH0iIAorICAgICAgICAgIGhlaWdodD0iMSIgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdzZWNvbmRCb3JkZXJDb2xvcicpIH0iIC8+ICAgICAKKyAgICAKKyAgICA8IS0tCisgICAgICAgIERvY3VtZW50cyAtIFRhYmJhcgorICAgICAtLT4gCisgICAgPGRvY3VtZW50c1RhYkJhciBuYW1lPSJfZG9jdW1lbnRzVGFicyIgeT0iMTQiIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoIH0iCisgICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHk9ImhpZGRlbiIgLz4KKyAgICAJCisgICAgCisgICAgPCEtLQorICAgICAgICBGaWxlIFRyZWUgQ29udGVudCBUYWJiYXIKKyAgICAgLS0+IAorICAgICAKKyAgICA8dmlldyBuYW1lPSJfZmlsZUJhciIgbGF5b3V0PSJheGlzOngiIHg9IjAiIHk9IiR7IDE0ICsgcGFyZW50Ll9kb2N1bWVudHNUYWJzLmhlaWdodCB9Ij4KKyAgICAgICAgPGJhc2VDaG9vc2VJY29uVmlldyBsYWJlbGlkPSI3MDIiIGhlaWdodD0iMjAiIHdpZHRoPSIxOSIgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdzZWNvbmRCb3JkZXJDb2xvcicpIH0iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VOPSJmaWxlX2V4cGxvcmVyX2FkZF9maWxlX3JzYyI+CisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiVXBsb2FkIEZpbGUiKTsKKyAgICAgICAgICAgICAgICBwYXJlbnQucGFyZW50LmFkZEZpbGUoKTsKKyAgICAgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPC9iYXNlQ2hvb3NlSWNvblZpZXc+CisgICAgICAgIDxiYXNlQ2hvb3NlSWNvblZpZXcgbGFiZWxpZD0iNzAzIiBoZWlnaHQ9IjIwIiB3aWR0aD0iMTkiIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignc2Vjb25kQm9yZGVyQ29sb3InKSB9IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlTj0iZmlsZV9leHBsb3Jlcl9hZGRfZm9sZGVyX3JzYyIgPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIkFkZCBGb2xkZXIiKTsKKyAgICAgICAgICAgICAgICBwYXJlbnQucGFyZW50LmFkZEZvbGRlcigpOworICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8L2Jhc2VDaG9vc2VJY29uVmlldz4KKyAgICAgICAgPGJhc2VDaG9vc2VJY29uVmlldyBsYWJlbGlkPSI3MDQiIGhlaWdodD0iMjAiIHdpZHRoPSIxOSIgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdzZWNvbmRCb3JkZXJDb2xvcicpIH0iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VOPSJmaWxlX2V4cGxvcmVyX3JlbG9hZF9yc2MiID4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJSZWZyZXNoIEZvbGRlciIpOworICAgICAgICAgICAgICAgIHBhcmVudC5wYXJlbnQubG9hZEZpbGVzKCk7CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDwvYmFzZUNob29zZUljb25WaWV3PgorICAgICAgICA8dmlldyBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ3NlY29uZEJvcmRlckNvbG9yJykgfSIgaGVpZ2h0PSIyMCIgd2lkdGg9IjEiIC8+CisgICAgPC92aWV3PgorICAgIAorICAgIDwhLS0KKyAgICAgICAgRmlsZSBUcmVlIENvbnRlbnQgVHJhc2hiYXIKKyAgICAgLS0+IAorICAgICAKKyAgICA8dmlldyBuYW1lPSJfdHJhc2hCYXIiIGxheW91dD0iYXhpczp4IiB4PSIkb25jZXsgcGFyZW50LndpZHRoIC0gMjAgfSIgCisgICAgICAgICAgeT0iJHsgMTQgKyBwYXJlbnQuX2RvY3VtZW50c1RhYnMuaGVpZ2h0IH0iPgorICAgICAgICA8YmFzZUNob29zZUljb25WaWV3IG5hbWU9Il90cmFzaEljb24iIGxhYmVsaWQ9IjcwNSIgaGVpZ2h0PSIyMCIgd2lkdGg9IjE5IiAKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZU49ImZpbGVfZXhwbG9yZXJfdHJhc2hfcnNjIiBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ3NlY29uZEJvcmRlckNvbG9yJykgfSI+CisgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImlzVHJhc2hDYW4iIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIkRlbGV0ZSBGb2xkZXIgYW5kIEZpbGVzIik7CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNldHJhY2tvdmVyIj4KKyAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbm1vdXNldHJhY2tvdmVyIik7CisgICAgICAgICAgICAgICAgY2FudmFzLmN1cnJlbnRJbWFnZXNMaXN0ZHJhdy5jdXJyZW50RHJhZ0l0ZW0uc2VuZE92ZXJJdGVtKHRoaXMpOworICAgICAgICAgICAgICAgIHRoaXMub25tb3VzZW92ZXIuc2VuZEV2ZW50KCk7CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNldHJhY2tvdXQiPgorICAgICAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9ubW91c2V0cmFja291dCIpOworICAgICAgICAgICAgICAgIGNhbnZhcy5jdXJyZW50SW1hZ2VzTGlzdGRyYXcuY3VycmVudERyYWdJdGVtLnNlbmRPdXRJdGVtKHRoaXMpOworICAgICAgICAgICAgICAgIHRoaXMub25tb3VzZW91dC5zZW5kRXZlbnQoKTsKKyAgICAgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2V0cmFja3VwIj4KKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib25tb3VzZXRyYWNrdXAiKTsKKyAgICAgICAgICAgICAgICB0aGlzLm9ubW91c2VvdXQuc2VuZEV2ZW50KCk7CisgICAgICAgICAgICA8L2hhbmRsZXI+IAorICAgICAgICA8L2Jhc2VDaG9vc2VJY29uVmlldz4KKyAgICAgICAgPHZpZXcgYmdjb2xvcj0iMHhFMEUwRTAiIGhlaWdodD0iMjAiIHdpZHRoPSIxIiAvPgorICAgIDwvdmlldz4KKyAgICAKKyAgICA8IS0tCisgICAgICAgIEZpbGUgVHJlZSBDb250ZW50CisgICAgIC0tPiAKKyAgICAKKyAgICA8dmlldyBuYW1lPSJfZmlsZWFyZWEiIHg9IjEiIHk9IiR7IDM0ICsgcGFyZW50Ll9kb2N1bWVudHNUYWJzLmhlaWdodCB9IiBjbGlwPSJ0cnVlIgorICAgICAgICAgIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodCAtIDM1IC0gcGFyZW50Ll9kb2N1bWVudHNUYWJzLmhlaWdodCAtIHBhcmVudC5fdXNlclNwYWNlLmhlaWdodCB9IiAKKyAgICAgICAgICB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCB9Ij4KKyAgICAgICAgCisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudFRyYWNrR3JvdXBOYW1lIiB2YWx1ZT0iZmlsZUV4cGxvcmVyIiB0eXBlPSJzdHJpbmciIC8+CisgICAgICAgIAorICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnREcmFnSXRlbSIgdmFsdWU9Im51bGwiIC8+CisgICAgICAgIAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgICAgICAgICAgY2FudmFzLmN1cnJlbnRJbWFnZXNMaXN0ZHJhdyA9IHRoaXM7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgCisgICAgICAgIDx2aWV3IG5hbWU9Il9jb250ZW50YXJlYSIgbGF5b3V0PSJheGlzOnk7aW5zZXQ6MSIgLz4KKyAgICAgICAgCisgICAgICAgIDxvbV92c2Nyb2xsYmFyIG5hbWU9Il9zY3JvbGxiYXIiIC8+CisgICAgICAgIDxvbV9oc2Nyb2xsYmFyIG5hbWU9Il9oc2Nyb2xsYmFyIiAvPgorICAgIDwvdmlldz4KKyAgICAKKyAgICA8dmlldyBuYW1lPSJfdXNlclNwYWNlIiBoZWlnaHQ9IjQwIiB2YWxpZ249ImJvdHRvbSIgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGggfSI+CisgICAgCQorICAgIAk8bGFiZWxUZXh0IG5hbWU9Il91c2VySG9tZVNpemVMYWJlbCIgbGFiZWxpZD0iOTIzIiBmZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ21lbnVUZXh0Q29sb3InKSB9IiAvPgorICAgIAkKKyAgICAJPGxhYmVsVGV4dCBuYW1lPSJfdXNlckhvbWVTaXplIiBhbGlnbj0icmlnaHQiIGZnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignbWVudVRleHRDb2xvcicpIH0iIC8+CisgICAgCQorICAgIAk8bGFiZWxUZXh0IG5hbWU9Il9yb29tSG9tZVNpemVMYWJlbCIgbGFiZWxpZD0iOTI0IiB5PSIyMCIgZmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdtZW51VGV4dENvbG9yJykgfSIgLz4KKyAgICAJCisgICAgCTxsYWJlbFRleHQgbmFtZT0iX3Jvb21Ib21lU2l6ZSIgYWxpZ249InJpZ2h0IiB5PSIyMCIgZmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdtZW51VGV4dENvbG9yJykgfSIgLz4KKyAgICAJCisgICAgPC92aWV3PgorICAgIAorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvZmlsZWV4cGxvcmVyL2xpYnJhcnkubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvZmlsZWV4cGxvcmVyL2xpYnJhcnkubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3ZWM0ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvbGlicmFyeS5sengKQEAgLTAsMCArMSw4NSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKwkKKyAgICA8aW5jbHVkZSBocmVmPSJwcmVzZW50YXRpb25zLyIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJ0YWJiYXIvIiAvPgorICAgIAorICAgIDxpbmNsdWRlIGhyZWY9InRyZWVpdGVtcy8iIC8+CisgICAgPGluY2x1ZGUgaHJlZj0iZHluYW1pY0ZpbGVOYW1lLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJkcmFnSXRlbUZpbGVFeHBsb3Jlci5sengiIC8+CisgICAgPGluY2x1ZGUgaHJlZj0iZmlsZUV4cGxvcmVyLmx6eCIgLz4KKworICAgIDxyZXNvdXJjZSBuYW1lPSJkcmFnX25fZHJvcF9yc2MiPgorICAgIAk8IS0tIEFQTCBBdXRob3Igc2ViYXdhZ25lciAtLT4gCisgICAgICAgIDxmcmFtZSBzcmM9InJlc291cmNlcy9pY29uX2RyYWdfbm8ucG5nIiAvPgorICAgICAgICA8IS0tIEFQTCBBdXRob3Igc2ViYXdhZ25lciAtLT4gCisgICAgICAgIDxmcmFtZSBzcmM9InJlc291cmNlcy9pY29uX2RyYWdfYWRkLnBuZyIgLz4KKyAgICA8L3Jlc291cmNlPiAgICAKKworICAgIDxyZXNvdXJjZSBuYW1lPSJpY29uX2ZvbGRlcl9wcmVfcnNjIj4KKyAgICAJPCEtLSBBUEwgQXV0aG9yIHNlYmF3YWduZXIgLS0+IAorICAgICAgICA8ZnJhbWUgc3JjPSJyZXNvdXJjZXMvaWNvbl9mb2xkZXJfcHJlX2Nsb3NlZF9yc2MucG5nIiAvPgorICAgICAgICA8IS0tIEFQTCBBdXRob3Igc2ViYXdhZ25lciAtLT4gCisgICAgICAgIDxmcmFtZSBzcmM9InJlc291cmNlcy9pY29uX2ZvbGRlcl9wcmVfb3Blbl9yc2MucG5nIiAvPgorICAgIDwvcmVzb3VyY2U+CisgICAgCisgICAgPHJlc291cmNlIG5hbWU9Imljb25fZm9sZGVyX3JzYyI+CisgICAgCTwhLS0gRmFtRmFtIEljb24gU2V0IC0tPgorICAgICAgICA8ZnJhbWUgc3JjPSJyZXNvdXJjZXMvZm9sZGVyLnBuZyIgLz4KKyAgICAgICAgPGZyYW1lIHNyYz0icmVzb3VyY2VzL2ZvbGRlci5wbmciIC8+CisgICAgPC9yZXNvdXJjZT4KKyAgICAKKyAgICA8IS0tIEZhbUZhbSBJY29uIFNldCAtLT4gCisgICAgPHJlc291cmNlIG5hbWU9ImZpbGVfZXhwbG9yZXJfdmlkZW9fcnNjIiBzcmM9InJlc291cmNlcy9maWxtLnBuZyIgLz4JCisgICAgPCEtLSBGYW1GYW0gSWNvbiBTZXQgLS0+CisgICAgPHJlc291cmNlIG5hbWU9ImZpbGVfZXhwbG9yZXJfYWRkX2ZpbGVfcnNjIiBzcmM9InJlc291cmNlcy9hZGQucG5nIiAvPgorICAgIDwhLS0gRmFtRmFtIEljb24gU2V0IC0tPiAKKyAgICA8cmVzb3VyY2UgbmFtZT0iZmlsZV9leHBsb3Jlcl9hZGRfZm9sZGVyX3JzYyIgc3JjPSJyZXNvdXJjZXMvZm9sZGVyX2FkZC5wbmciIC8+CisgICAgPCEtLSBGYW1GYW0gSWNvbiBTZXQgLS0+IAorICAgIDxyZXNvdXJjZSBuYW1lPSJmaWxlX2V4cGxvcmVyX3JlbG9hZF9yc2MiIHNyYz0icmVzb3VyY2VzL2Fycm93X3JlZnJlc2hfc21hbGwucG5nIiAvPgorICAgIDwhLS0gCisgICAgV1BaT09NIENyZWF0aXZlIENvbW1vbnMgQXR0cmlidXRpb24tU2hhcmVBbGlrZSAzLjAgVW5wb3J0ZWQgTGljZW5zZS4KKyAgICBodHRwOi8vd3d3Lndwem9vbS5jb20vd3B6b29tL25ldy1mcmVlYmllLXdwem9vbS1kZXZlbG9wZXItaWNvbi1zZXQtMTU0LWZyZWUtaWNvbnMvCisgICAgIC0tPgorICAgIDxyZXNvdXJjZSBuYW1lPSJmaWxlX2V4cGxvcmVyX3RyYXNoX3JzYyIgc3JjPSJyZXNvdXJjZXMvdHJhc2gucG5nIiAvPgorICAgIDwhLS0gQVBMIEF1dGhvciBzZWJhd2FnbmVyIC0tPgorICAgIDxyZXNvdXJjZSBuYW1lPSJmaWxlX2V4cGxvcmVyX2Nsb3NlX3JzYyIgc3JjPSJyZXNvdXJjZXMvcmVtb3ZlX2l0ZW0ucG5nIiAvPgorICAgIDwhLS0gRmFtRmFtIEljb24gU2V0IC0tPiAKKyAgICA8cmVzb3VyY2UgbmFtZT0iZmlsZV9leHBsb3Jlcl92aWV3X3RyZWVfcnNjIiBzcmM9InJlc291cmNlcy9mb2xkZXJfZXhwbG9yZS5wbmciIC8+ICAgCisgICAgCisgICAgPCEtLSBGYW1GYW0gSWNvbiBTZXQgLS0+IAorICAgIDxyZXNvdXJjZSBuYW1lPSJmaWxlX2V4cGxvcmVyX2ltYWdlX3JzYyIgc3JjPSJyZXNvdXJjZXMvcGhvdG8ucG5nIiAvPgorICAgIDwhLS0gRmFtRmFtIEljb24gU2V0IC0tPiAKKyAgICA8cmVzb3VyY2UgbmFtZT0iZmlsZV9leHBsb3Jlcl9kb2N1bWVudF9yc2MiIHNyYz0icmVzb3VyY2VzL3JlcG9ydC5wbmciIC8+CisgICAgPCEtLSBGYW1GYW0gSWNvbiBTZXQgLS0+IAorICAgIDxyZXNvdXJjZSBuYW1lPSJmaWxlX2V4cGxvcmVyX3dtbF9yc2MiIHNyYz0icmVzb3VyY2VzL21hcC5wbmciIC8+CisgICAgPCEtLSBGYW1GYW0gSWNvbiBTZXQgLS0+CisgICAgPHJlc291cmNlIG5hbWU9ImZpbGVfZXhwbG9yZXJfY2hhcnRfcnNjIiBzcmM9InJlc291cmNlcy9jaGFydF9waWUucG5nIiAvPgorICAgIDwhLS0gRmFtRmFtIEljb24gU2V0IC0tPgorICAgIDxyZXNvdXJjZSBuYW1lPSJmaWxlX2V4cGxvcmVyX2ZvbGRlcl9yc2MiIHNyYz0icmVzb3VyY2VzL2ZvbGRlci5wbmciIC8+CisgICAgPCEtLSBGYW1GYW0gSWNvbiBTZXQgLS0+CisgICAgPHJlc291cmNlIG5hbWU9ImZpbGVfZXhwbG9yZXJfZm9sZGVyX25ldHdvcmtfcnNjIiBzcmM9InJlc291cmNlcy93b3JsZF9saW5rLnBuZyIgLz4KKyAgICA8IS0tIEZhbUZhbSBJY29uIFNldCAtLT4KKyAgICA8cmVzb3VyY2UgbmFtZT0iZmlsZV9leHBsb3Jlcl9mb2xkZXJfaG9tZV9yc2MiIHNyYz0icmVzb3VyY2VzL2hvdXNlX2xpbmsucG5nIiAvPgorICAgIAorICAgIAorPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvZmlsZWV4cGxvcmVyL3ByZXNlbnRhdGlvbnMvaXRlbXMvYmFzZUxpc3RQcmVzZW50YXRpb25JdGVtRXhwbG9yZXIubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvZmlsZWV4cGxvcmVyL3ByZXNlbnRhdGlvbnMvaXRlbXMvYmFzZUxpc3RQcmVzZW50YXRpb25JdGVtRXhwbG9yZXIubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmMjdlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcHJlc2VudGF0aW9ucy9pdGVtcy9iYXNlTGlzdFByZXNlbnRhdGlvbkl0ZW1FeHBsb3Jlci5sengKQEAgLTAsMCArMSw3OSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKwkKKzxjbGFzcyBuYW1lPSJiYXNlTGlzdFByZXNlbnRhdGlvbkl0ZW1FeHBsb3JlciIgZXh0ZW5kcz0idmlldyIgaGVpZ2h0PSIxMTAiIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoIH0iIAorICAgIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignbWFpbkJhY2tncm91bmRDb2xvcicpIH0iIGZvY3VzYWJsZT0idHJ1ZSI+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJ1cGxvYWRtb2R1bCIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIi8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJzZWxlY3RhYmxlIiB2YWx1ZT0idHJ1ZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9Imlzc2VsZWN0ZWQiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9Imlzb3JpZ2luYWwiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9InVwbG9hZG1vZHVsZWltZ2ZvbGRlciIgdmFsdWU9IiRvbmNleyBjYW52YXMudXBsb2FkbW9kdWxlaW1nZm9sZGVyIH0iIHR5cGU9InN0cmluZyIgLz4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImZvcm1hdFVSTCIgYXJncz0iZmlsZW5hbWUiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIHZhciBkb3dubG9hZHVybCA9IGNhbnZhcy5nZXRVcmwoKSsnRG93bmxvYWRIYW5kbGVyPycgKworICAgICAgICAgICAgICAgICdmaWxlTmFtZT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KGZpbGVuYW1lKSArCisgICAgICAgICAgICAgICAgJyZtb2R1bGVOYW1lPScgKyB0aGlzLnVwbG9hZG1vZHVsICsgCisgICAgICAgICAgICAgICAgJyZwYXJlbnRQYXRoPScgKyBlbmNvZGVVUklDb21wb25lbnQodGhpcy51cGxvYWRtb2R1bGVpbWdmb2xkZXIgKyAnLycgKSsKKyAgICAgICAgICAgICAgICAnJnJvb21faWQ9ZmlsZXMnKworICAgICAgICAgICAgICAgICcmc2lkPScrY2FudmFzLnNlc3Npb25JZDsKKyAgICAgICAgICAgIC8vLy9EZWJ1Zy53cml0ZSgiZG93bmxvYWR1cmw6ICIsZG93bmxvYWR1cmwpOworICAgICAgICAgICAgcmV0dXJuIGRvd25sb2FkdXJsOworICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4gICAgCisKKyAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3ZlciI+CisgICAgICAgIHNldEN1cnJlbnRNb3VzZVdoZWVsT2JqZWN0KHRoaXMucGFyZW50LnBhcmVudC5fc2Nyb2xsYmFyKTsKKyAgICAgICAgaWYgKCF0aGlzLmlzc2VsZWN0ZWQpeworICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2JnY29sb3InLGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdiYXNlTW91c2VPdmVyY29sb3JpemVyJykpOworICAgICAgICB9CisgICAgPC9oYW5kbGVyPiAKKyAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3V0Ij4KKyAgICAgICAgZGlzYWJsZUN1cnJlbnRNb3VzZVdoZWVsT2JqZWN0KCk7CisgICAgICAgIGlmICghdGhpcy5pc3NlbGVjdGVkKXsKKyAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdiZ2NvbG9yJyxjYW52YXMuZ2V0VGhlbWVDb2xvcignbWFpbkJhY2tncm91bmRDb2xvcicpKTsKKyAgICAgICAgfQorICAgIDwvaGFuZGxlcj4gIAorICAgICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9uZm9jdXMiPgorICAgICAgICB0aGlzLnNlbGVjdEl0ZW0oKTsKKyAgICA8L2hhbmRsZXI+CisgICAgPGhhbmRsZXIgbmFtZT0ib25ibHVyIj4KKyAgICAgICAgdGhpcy5kaXNzZWxlY3RJdGVtKCk7CisgICAgPC9oYW5kbGVyPgorCisgICAgPGhhbmRsZXIgbmFtZT0ib25rZXl1cCIgYXJncz0iayI+IAorICAgICAgICAvL0RlYnVnLndyaXRlKCJrZXkgIiArIGsgKyAiIHVwIik7CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0ic2VsZWN0SXRlbSI+CisgICAgICAgIC8vdGhpcy5wYXJlbnQuc2VsZWN0SXRlbSh0aGlzKTsKKyAgICA8L21ldGhvZD4KKyAgICA8bWV0aG9kIG5hbWU9ImRpc3NlbGVjdEl0ZW0iPgorICAgICAgICAvL3RoaXMucGFyZW50LnNlbGVjdEl0ZW0odGhpcyk7CisgICAgPC9tZXRob2Q+CisgICAgCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcHJlc2VudGF0aW9ucy9pdGVtcy9pbWFnZUxpc3RJbm5lclRhYmxlRXhwbG9yZXIubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvZmlsZWV4cGxvcmVyL3ByZXNlbnRhdGlvbnMvaXRlbXMvaW1hZ2VMaXN0SW5uZXJUYWJsZUV4cGxvcmVyLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40M2FkZWQxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvZmlsZWV4cGxvcmVyL3ByZXNlbnRhdGlvbnMvaXRlbXMvaW1hZ2VMaXN0SW5uZXJUYWJsZUV4cGxvcmVyLmx6eApAQCAtMCwwICsxLDE1NiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCQorPGNsYXNzIG5hbWU9ImltYWdlTGlzdElubmVyVGFibGVFeHBsb3JlciIgZXh0ZW5kcz0idmlldyIgd2lkdGg9IiR7IHBhcmVudC53aWR0aC0yIH0iIAorICAgIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodC0yIH0iIAorCWJnY29sb3I9IndoaXRlIiB4PSIxIiB5PSIxIiBjbGlwPSJ0cnVlIj4KKyAgICAKKyAgICA8dmlldyBuYW1lPSJfbGlzdGNvbnRlbnQiIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignYmFzZWJnY29sb3JpemVyJykgfSIgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGggfSIgPgorICAgICAgICA8c2ltcGxlbGF5b3V0IG5hbWU9Il9sYXlvdXQiIGF4aXM9InkiIHNwYWNpbmc9IjIiIGluc2V0PSIxIiAvPgorICAgICAgICAKKyAgICAgICAgPCEtLQorCSAgCTxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImRlbGV0ZUZpbGUiIGZ1bmNuYW1lPSJmaWxlc2VydmljZS5kZWxldGVGaWxlIiByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAgIAorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gY2FudmFzLnNlc3Npb25JZDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkgIAkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQuU3RyaW5nMTs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICAJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBjYW52YXMudXBsb2FkbW9kdWxlaW1nOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5TdHJpbmcyOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGhpYi5jdXJyZW50cm9vbWlkOzwvbWV0aG9kPjwvbmV0cGFyYW0+ICAgICAgICAJCisJICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4JCisJICAgICAgICAJLy9EZWJ1Zy53cml0ZSgiICBkZWxldGVGaWxlOiAiLHZhbHVlKTsgIAorCQkJCS8vRGVidWcud3JpdGUoIiAgZGVsZXRlRmlsZTogIix0aGlzLlN0cmluZzEpOyAgICAKKwkJCQkvL0RlYnVnLndyaXRlKCIgIGRlbGV0ZUZpbGU6ICIsdGhpcy5TdHJpbmcyKTsgICAKKwkJICAJCXZhciB0ZW1wU2VuZEFycmF5ID0gbmV3IEFycmF5ICgpOworCQkgIAkJdGVtcFNlbmRBcnJheVswXSA9ICdmaWxlc2xpc3QnOworCQkgIAkJdmFyIG5vd1RpbWUgPSBuZXcgRGF0ZSgpOworCQkgIAkJdmFyIGRhdHVtc1N0cmluZyA9IG5vd1RpbWUuZ2V0SG91cnMoKSsnOicrbm93VGltZS5nZXRNaW51dGVzKCk7CisJCSAgCQl0ZW1wU2VuZEFycmF5WzFdID0gZGF0dW1zU3RyaW5nOworCSAgCQkJLy9EZWJ1Zy53cml0ZSgiU2V0dGluZyBNZXNzYWdlIik7CisJICAJCQl0ZW1wU2VuZEFycmF5WzJdID0gJ25ld2ZpbGUnOworCSAgCQkJdGVtcFNlbmRBcnJheVszXSA9IGNhbnZhcy5jdXJyZW50dXNlbmFtZTsKKwkJICAJCS8vRGVidWcud3JpdGUoInNlbmQ6ICIsdGVtcFNlbmRBcnJheSk7CisJCSAgCQljYW52YXMub2JqTWVzc2FnZSA9IHRlbXBTZW5kQXJyYXk7CisJCSAgCQloaWIuc2VuZE1lc3NhZ2UuZG9DYWxsKCk7ICAgICAgICAgCSAgICAgICAgICAJCQkJCisJICAgICAgICA8L2hhbmRsZXI+CQorCSAgCTwvbmV0UmVtb3RlQ2FsbEhpYj4gCisJICAJIC0tPgkKKwkJCisJCTxtZXRob2QgbmFtZT0iZ2V0Y29uZmlybWF0aW9uc2NvZGUiPgorCQkJdmFyIGcgPSBjYW52YXMuZ2V0VXNlckRhdGEoKTsKKwkJCSBpZiAoZ1sid21sZmlsZSJdPT1udWxsKSB7CisJCQkJIGdbIndtbGZpbGUiXT1uZXcgQXJyYXkoKTsKKwkJCQkgZ1sid21sZmlsZSJdWyJjbGVhckZpZWxkIl09ZmFsc2U7CisJCQkJIGdbIndtbGZpbGUiXVsiYXNrYWdhaW5jbGVhciJdPXRydWU7CisJCQkJIGNhbnZhcy5zZXRVc2VyRGF0YShnKTsKKwkJCSB9CisJCQkgcmV0dXJuIGdbIndtbGZpbGUiXTsKKwkJPC9tZXRob2Q+CisJCQorCQk8bWV0aG9kIG5hbWU9InJlc2V0RGVmYXVsdENvbmZpcm1hdGlvbnMiPgorCQkJdmFyIGcgPSBjYW52YXMuZ2V0VXNlckRhdGEoKTsKKwkJCSBpZiAoZ1sid21sZmlsZSJdPT1udWxsKSBnWyJ3bWxmaWxlIl09bmV3IEFycmF5KCk7CisJCQkgZ1sid21sZmlsZSJdWyJjbGVhckZpZWxkIl09ZmFsc2U7CisJCQkgZ1sid21sZmlsZSJdWyJhc2thZ2FpbmNsZWFyIl09dHJ1ZTsKKwkJCSBjYW52YXMuc2V0VXNlckRhdGEoZyk7CisJCisJCTwvbWV0aG9kPgkKKwkJCisJCTxtZXRob2QgbmFtZT0ic2VuZENvbmZpcm1hdGlvbiIgYXJncz0ieWVzbm8sYXNrYWdhaW4iID4KKwkJCQorCQkJLy9EZWJ1Zy53cml0ZSgiY2xlYXIgeWVzbm8sYXNrYWdhaW46ICIseWVzbm8sYXNrYWdhaW4pOworCQkJLy9jYW4gb25seSBiZSB0cnVlIGluIHRoaXMgY2FzZQorCQkKKwkJCSB2YXIgZyA9IGNhbnZhcy5nZXRVc2VyRGF0YSgpOworCQkJIGlmIChnWyJ3bWxmaWxlIl09PW51bGwpIGdbIndtbGZpbGUiXT1uZXcgQXJyYXkoKTsKKwkJCSBnWyJ3bWxmaWxlIl1bImNsZWFyRmllbGQiXT15ZXNubzsKKwkJCSBnWyJ3bWxmaWxlIl1bImFza2FnYWluY2xlYXIiXT0hYXNrYWdhaW47CisJCQkgY2FudmFzLnNldFVzZXJEYXRhKGcpOworCQorCQkJIGlmICh5ZXNubyl7CisJCQkJIC8vRGVidWcud3JpdGUoImNsZWFyIGZpZWxkISEiKTsKKwkJCQljYW52YXMuX2RyYXdhcmVhLnNldE1vZHVzKCdwbGFpbicpOworCQkJCXRoaXMubG9hZFdtbE9iamVjdC5kb0NhbGwoKTsKKwkJCSB9CisJCTwvbWV0aG9kPgkJCQkKKwkJCisJCTxtZXRob2QgbmFtZT0ibG9hZFdtbE9iamVjdENvbmZpcm0iPgorCQkJPCFbQ0RBVEFbCisJCQl2YXIgc3RvcmVkSW1hZ2VEYXRlID0gdGhpcy5nZXRjb25maXJtYXRpb25zY29kZSgpOworCQkJLy9EZWJ1Zy53cml0ZSgiIGdbd21sZmlsZV0gIixzdG9yZWRJbWFnZURhdGUpOworCQkJaWYgKHN0b3JlZEltYWdlRGF0ZVsiY2xlYXJGaWVsZCJdICYmICFzdG9yZWRJbWFnZURhdGVbImFza2FnYWluY2xlYXIiXSl7CisJCQkJY2FudmFzLl9kcmF3YXJlYS5zZXRNb2R1cygncGxhaW4nKTsKKwkJCQl0aGlzLmxvYWRXbWxPYmplY3QuZG9DYWxsKCk7CisJCQl9IGVsc2UgaWYgKCFzdG9yZWRJbWFnZURhdGVbImFza2FnYWluY2xlYXIiXSAmJiAhc3RvcmVkSW1hZ2VEYXRlWyJjbGVhckZpZWxkIl0peworCQkJCS8vdGhpcyBjYXNlIHdpbGwgbmV2ZXIgaGFwcGVuCisJCQkJdGhpcy5sb2FkV21sT2JqZWN0LmRvQ2FsbCgpOworCQkJfSBlbHNlIGlmIChzdG9yZWRJbWFnZURhdGVbImFza2FnYWluY2xlYXIiXSl7CisJCQkJbmV3IGx6LmNvbmZpcm1hdGlvblNpbmdsZShjYW52YXMubWFpbl9jb250ZW50Ll9jb250ZW50LmlubmVyLHtsYWJlbGlkOjIxMCxsYWJlbGlkZXJyb3I6MjExLHJlZk9iajp0aGlzfSk7CisJCQl9IGVsc2UgeworCQkJCW5ldyBsei5jb25maXJtYXRpb25TaW5nbGUoY2FudmFzLm1haW5fY29udGVudC5fY29udGVudC5pbm5lcix7bGFiZWxpZDoyMTAsbGFiZWxpZGVycm9yOjIxMSxyZWZPYmo6dGhpc30pOworCQkJfQorCQkJXV0+CisJCTwvbWV0aG9kPgorCQkKKwkgIAk8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJsb2FkV21sT2JqZWN0IiBmdW5jbmFtZT0iZmlsZXNlcnZpY2UubG9hZFdtbE9iamVjdCIgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gICAKKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGhpYi5jdXJyZW50cm9vbWlkOzwvbWV0aG9kPjwvbmV0cGFyYW0+ICAgICAgICAJCisJCQkgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LlN0cmluZzE7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgkKKwkJCQk8IVtDREFUQVsKKwkJCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIiAgbG9hZHdtbE9iamVjdFRvU3RhZ2UgIix2YWx1ZSk7IAorCQkJCQljYW52YXMuX2RyYXdhcmVhLmxvYWR3bWxPYmplY3RUb1N0YWdlKHZhbHVlLHRoaXMuU3RyaW5nMSxoaWIuY3VycmVudHJvb21pZCxoaWIuY29uZmVyZW5jZWRvbWFpbix0cnVlLGZhbHNlKTsKKwkJCQldXT4gICAgICAgCSAgICAgCQkJCQorCSAgICAgICAgPC9oYW5kbGVyPgkKKwkgIAk8L25ldFJlbW90ZUNhbGxIaWI+CisgICAgICAgIAorICAgICAgICAKKyAgICAgICAgPG1ldGhvZCBuYW1lPSJsb2FkU1dGUHJlc2VudGF0aW9uIiBhcmdzPSJ1cmwsZmlsZU5hbWUsbW9kdWxlTmFtZSxwYXJlbnRQYXRoLHJvb20sZG9tYWluLHNsaWRlTnVtYmVyIj4KKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJsb2FkU1dGUHJlc2VudGF0aW9uIik7CisgICAgICAgICAgICBjYW52YXMuX2RyYXdhcmVhLmxvYWRTV0ZQcmVzZW50YXRpb25TeW5jZWQodXJsLGZpbGVOYW1lLG1vZHVsZU5hbWUscGFyZW50UGF0aCxyb29tLGRvbWFpbixzbGlkZU51bWJlciwiIik7CisgICAgICAgIDwvbWV0aG9kPgorICAgICAgICAKKyAgICAgICAgPG1ldGhvZCBuYW1lPSJjaGVja1NXRlByZXNlbnRhdGlvbiIgYXJncz0idXJsLGZpbGVOYW1lLG1vZHVsZU5hbWUscGFyZW50UGF0aCxyb29tLGRvbWFpbixzbGlkZU51bWJlciI+CisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiY2hlY2tTV0ZQcmVzZW50YXRpb24iKTsKKyAgICAgICAgICAgIHJldHVybiBjYW52YXMuX2RyYXdhcmVhLmNoZWNrU1dGUHJlc2VudGF0aW9uKHVybCxmaWxlTmFtZSxtb2R1bGVOYW1lLHBhcmVudFBhdGgscm9vbSxkb21haW4sc2xpZGVOdW1iZXIpOworICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgCisgICAgICAgIDxtZXRob2QgbmFtZT0iY2hlY2tGb3JPcmlnaW5hbCIgYXJncz0ic2xpZGVOdW1iZXIiPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgdmFyIHRXaGl0ZUJvYXJkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8dGhpcy5zdWJ2aWV3cy5sZW5ndGg7aSsrKXsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc3Vidmlld3NbaV0uaXNvcmlnaW5hbCl7CisgICAgICAgICAgICAgICAgICAgICAgICB0V2hpdGVCb2FyZCA9IHRoaXMuc3Vidmlld3NbaV0uY2hlY2tTV0ZQcmVzZW50YXRpb24oc2xpZGVOdW1iZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0V2hpdGVCb2FyZCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc3Vidmlld3NbaV0uYWRkU1dGUHJlc2VudGF0aW9uKHNsaWRlTnVtYmVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidFdoaXRlQm9hcmQ6ICIsdFdoaXRlQm9hcmQpOworICAgICAgICAgICAgXV0+CisgICAgICAgIDwvbWV0aG9kPgorCQkgCSAKKyAgICA8L3ZpZXc+CisKKyAgICA8b21fdnNjcm9sbGJhciBuYW1lPSJfc2Nyb2xsYmFyIiAvPgorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvZmlsZWV4cGxvcmVyL3ByZXNlbnRhdGlvbnMvaXRlbXMvbGlicmFyeS5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcHJlc2VudGF0aW9ucy9pdGVtcy9saWJyYXJ5Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzAyY2M5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvZmlsZWV4cGxvcmVyL3ByZXNlbnRhdGlvbnMvaXRlbXMvbGlicmFyeS5sengKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKyAKKwk8aW5jbHVkZSBocmVmPSJpbWFnZUxpc3RJbm5lclRhYmxlRXhwbG9yZXIubHp4IiAvPgorICAgIAorICAgIDxpbmNsdWRlIGhyZWY9ImJhc2VMaXN0UHJlc2VudGF0aW9uSXRlbUV4cGxvcmVyLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJsaXN0UHJlc2VudGF0aW9uVGh1bWJFeHBsb3Jlci5sengiIC8+CisgICAgPGluY2x1ZGUgaHJlZj0ibGlzdFByZXNlbnRhdGlvbkZpbGVQREZFeHBsb3Jlci5sengiIC8+CisgICAgPGluY2x1ZGUgaHJlZj0ibGlzdFByZXNlbnRhdGlvbkZpbGVPcmlnRXhwbG9yZXIubHp4IiAvPgorICAgIAorPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvZmlsZWV4cGxvcmVyL3ByZXNlbnRhdGlvbnMvaXRlbXMvbGlzdFByZXNlbnRhdGlvbkZpbGVPcmlnRXhwbG9yZXIubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvZmlsZWV4cGxvcmVyL3ByZXNlbnRhdGlvbnMvaXRlbXMvbGlzdFByZXNlbnRhdGlvbkZpbGVPcmlnRXhwbG9yZXIubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhOTBjYjQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcHJlc2VudGF0aW9ucy9pdGVtcy9saXN0UHJlc2VudGF0aW9uRmlsZU9yaWdFeHBsb3Jlci5sengKQEAgLTAsMCArMSwzNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKwkKKzxjbGFzcyBuYW1lPSJsaXN0UHJlc2VudGF0aW9uRmlsZU9yaWdFeHBsb3JlciIgZXh0ZW5kcz0ibGlzdFByZXNlbnRhdGlvbkZpbGVQREZFeHBsb3JlciI+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJvcmlnaW5hbE5hbWUiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIvPgorICAgIAorICAgIDx2aWV3IG5hbWU9Il9maWxlc2F2ZV9pY29uX29yaWdpbmFsIiB4PSIxMjAiIHk9IjYiIHJlc291cmNlPSJfZmlsZXNhdmVfaWNvbl9vcmlnaW5hbF9yc2MiCisgICAgICAgIG9ubW91c2VvdmVyPSIiIG9ubW91c2VvdXQ9IiI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgdGhpcy5wYXJlbnQubG9hZEZpbGVCeU5hbWUodGhpcy5wYXJlbnQub3JpZ2luYWxOYW1lLmZpbGVuYW1lKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IjI0NyIgLz4KKyAgICA8L3ZpZXc+CisgICAgCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcHJlc2VudGF0aW9ucy9pdGVtcy9saXN0UHJlc2VudGF0aW9uRmlsZVBERkV4cGxvcmVyLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2ZpbGVleHBsb3Jlci9wcmVzZW50YXRpb25zL2l0ZW1zL2xpc3RQcmVzZW50YXRpb25GaWxlUERGRXhwbG9yZXIubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1OGVjYjcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcHJlc2VudGF0aW9ucy9pdGVtcy9saXN0UHJlc2VudGF0aW9uRmlsZVBERkV4cGxvcmVyLmx6eApAQCAtMCwwICsxLDY0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8Y2xhc3MgbmFtZT0ibGlzdFByZXNlbnRhdGlvbkZpbGVQREZFeHBsb3JlciIgZXh0ZW5kcz0iYmFzZUxpc3RQcmVzZW50YXRpb25JdGVtRXhwbG9yZXIiIHNlbGVjdGFibGU9ImZhbHNlIj4KKyAgICAKKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9InBkZm5hbWUiIHZhbHVlPSJudWxsIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0ic3dmTmFtZSIgdmFsdWU9Im51bGwiIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJmaWxlRXhwbG9yZXJJdGVtSWQiIHZhbHVlPSItMSIgdHlwZT0ibnVtYmVyIiAvPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0ibG9hZEZpbGVCeU5hbWUiIGFyZ3M9ImZpbGVuYW1lIj4KKyAgICAJPCFbQ0RBVEFbCisgICAgCQl2YXIgbHpVUkxUb0xvYWQgPSB0aGlzLmZvcm1hdFVSTChmaWxlbmFtZSkrIiZmaWxlRXhwbG9yZXJJdGVtSWQ9Iit0aGlzLmZpbGVFeHBsb3Jlckl0ZW1JZDsKKyAgICAJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJselVSTFRvTG9hZCAiLGx6VVJMVG9Mb2FkKTsKKyAgICAgICAgCWx6LkJyb3dzZXIubG9hZFVSTChselVSTFRvTG9hZCwnX3BhcmVudCcpOworICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKworICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICB0aGlzLnBhcmVudC5sb2FkU1dGUHJlc2VudGF0aW9uKHRoaXMuZm9ybWF0VVJMKHRoaXMuc3dmTmFtZS5maWxlbmFtZSksdGhpcy5zd2ZOYW1lLmZpbGVuYW1lLHRoaXMudXBsb2FkbW9kdWwsdGhpcy51cGxvYWRtb2R1bGVpbWdmb2xkZXIsJ2ZpbGVzJyxoaWIuY29uZmVyZW5jZWRvbWFpbiwxKTsKKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJjaGVja1NXRlByZXNlbnRhdGlvbiIgYXJncz0ic2xpZGVOdW1iZXIiPgorICAgICAgICByZXR1cm4gdGhpcy5wYXJlbnQuY2hlY2tTV0ZQcmVzZW50YXRpb24odGhpcy5mb3JtYXRVUkwodGhpcy5zd2ZOYW1lLmZpbGVuYW1lKSx0aGlzLnN3Zk5hbWUuZmlsZW5hbWUsdGhpcy51cGxvYWRtb2R1bCx0aGlzLnVwbG9hZG1vZHVsZWltZ2ZvbGRlciwnZmlsZXMnLGhpYi5jb25mZXJlbmNlZG9tYWluLHNsaWRlTnVtYmVyKTsKKyAgICA8L21ldGhvZD4gICAgCisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJhZGRTV0ZQcmVzZW50YXRpb24iIGFyZ3M9InNsaWRlTnVtYmVyIj4KKyAgICAgICAgdGhpcy5wYXJlbnQubG9hZFNXRlByZXNlbnRhdGlvbih0aGlzLmZvcm1hdFVSTCh0aGlzLnN3Zk5hbWUuZmlsZW5hbWUpLHRoaXMuc3dmTmFtZS5maWxlbmFtZSx0aGlzLnVwbG9hZG1vZHVsLHRoaXMudXBsb2FkbW9kdWxlaW1nZm9sZGVyLCdmaWxlcycsaGliLmNvbmZlcmVuY2Vkb21haW4sc2xpZGVOdW1iZXIpOworICAgIDwvbWV0aG9kPiAgICAKKyAgICAKKyAgICA8dmlldyBuYW1lPSJfZmlsZXNhdmVfaWNvbl9wZGYiIHg9IjE1MCIgeT0iNiIgcmVzb3VyY2U9Il9maWxlc2F2ZV9pY29uX3BkZl9yc2MiPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgIC8vRGVidWcud3JpdGUoInRoaXMucGFyZW50LnBkZm5hbWU6ICIsdGhpcy5wYXJlbnQucGRmbmFtZS5maWxlbmFtZSk7CisgICAgICAgICAgICAvL0RlYnVnLndyaXRlKCJ0aGlzLnBhcmVudDogIix0aGlzLnBhcmVudCk7CisgICAgICAgICAgICB0aGlzLnBhcmVudC5sb2FkRmlsZUJ5TmFtZSh0aGlzLnBhcmVudC5wZGZuYW1lLmZpbGVuYW1lKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IjI0OCIgLz4KKyAgICA8L3ZpZXc+CisgICAgICAgIAorICAgIDxsYWJlbFRleHQgbmFtZT0iX1RleHQiIHk9IjQwIiBsYWJlbGlkPSIyNDkiIHdpZHRoPSIyNDAiIC8+CisgICAgCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcHJlc2VudGF0aW9ucy9pdGVtcy9saXN0UHJlc2VudGF0aW9uVGh1bWJFeHBsb3Jlci5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcHJlc2VudGF0aW9ucy9pdGVtcy9saXN0UHJlc2VudGF0aW9uVGh1bWJFeHBsb3Jlci5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY0MDgxNAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2ZpbGVleHBsb3Jlci9wcmVzZW50YXRpb25zL2l0ZW1zL2xpc3RQcmVzZW50YXRpb25UaHVtYkV4cGxvcmVyLmx6eApAQCAtMCwwICsxLDQyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCQorPGNsYXNzIG5hbWU9Imxpc3RQcmVzZW50YXRpb25UaHVtYkV4cGxvcmVyIiBleHRlbmRzPSJiYXNlTGlzdFByZXNlbnRhdGlvbkl0ZW1FeHBsb3JlciI+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJ0aHVtYm5hbWUiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibm8iIHZhbHVlPSIiIHR5cGU9InN0cmluZyIvPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgIHRoaXMuX3RodW1iLnNldEF0dHJpYnV0ZSgnc3JjJyx0aGlzLmZvcm1hdFVSTCh0aGlzLnRodW1ibmFtZSkpOworICAgIDwvaGFuZGxlcj4KKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgdGhpcy5wYXJlbnQuY2hlY2tGb3JPcmlnaW5hbChOdW1iZXIobm8pKTsKKyAgICA8L2hhbmRsZXI+ICAgIAorICAgIAorICAgIDxpbWFnZSBuYW1lPSJfdGh1bWIiIHg9IjEwIiB5PSIxIi8+CisgICAgPHRleHQgbmFtZT0iX3RodW1iVGV4dCIgeD0iMTIwIiB0ZXh0PSIkb25jZXsgdGhpcy5wYXJlbnQubm8gfSIgZm9udHNpemU9IjEwIgorICAgICAgICB3aWR0aD0iMjQwIiBtdWx0aWxpbmU9InRydWUiLz4KKyAgICAKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2ZpbGVleHBsb3Jlci9wcmVzZW50YXRpb25zL2xpYnJhcnkubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvZmlsZWV4cGxvcmVyL3ByZXNlbnRhdGlvbnMvbGlicmFyeS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWNmN2RkMQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2ZpbGVleHBsb3Jlci9wcmVzZW50YXRpb25zL2xpYnJhcnkubHp4CkBAIC0wLDAgKzEsMjcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisJCisJPGluY2x1ZGUgaHJlZj0iaXRlbXMvIiAvPgorCTxpbmNsdWRlIGhyZWY9InByZXNlbnRhdGlvbkZpbGVzTGlzdC5sengiIC8+CisgICAgPGluY2x1ZGUgaHJlZj0icHJlc2VudGF0aW9uUHJldmlldy5sengiIC8+CisgICAgCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcHJlc2VudGF0aW9ucy9wcmVzZW50YXRpb25GaWxlc0xpc3QubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvZmlsZWV4cGxvcmVyL3ByZXNlbnRhdGlvbnMvcHJlc2VudGF0aW9uRmlsZXNMaXN0Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGRhZjBlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvZmlsZWV4cGxvcmVyL3ByZXNlbnRhdGlvbnMvcHJlc2VudGF0aW9uRmlsZXNMaXN0Lmx6eApAQCAtMCwwICsxLDk4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorPCEtLSAgLS0+CisKKzxjbGFzcyBuYW1lPSJwcmVzZW50YXRpb25GaWxlc0xpc3QiIGV4dGVuZHM9InZpZXciIAorICAgICAgIHg9IjAiIHk9IjQwIiBoZWlnaHQ9IiR7IHBhcmVudC5oZWlnaHQtNDAgfSIgCisgICAgICAgIHdpZHRoPSIkeyBwYXJlbnQud2lkdGggfSIgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdiYXNlYmdjb2xvcml6ZXInKSB9Ij4KKyAgICAKKyAgICA8ZXZlbnQgbmFtZT0ib25jbG9zZSIgLz4KKyAgICAKKwk8dmlldyB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aC0yIH0iIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodC0yIH0iIAorCQkgIHg9IjEiIHk9IjEiIGJnY29sb3I9IndoaXRlIiAvPgorCisJPGF0dHJpYnV0ZSBuYW1lPSJ1cGxvYWRtb2R1bCIgdmFsdWU9IiRvbmNleyBjYW52YXMudXBsb2FkbW9kdWxlaW1nIH0iIHR5cGU9InN0cmluZyIgLz4KKworICAgIDxtZXRob2QgbmFtZT0iYWRkUHJlc2VudGF0aW9uVGh1bWIiIGFyZ3M9InRodW1iTmFtZSxubyI+CisgICAgICAgIG5ldyBsei5saXN0UHJlc2VudGF0aW9uVGh1bWJFeHBsb3Jlcih0aGlzLl90YWJsZS5fbGlzdGNvbnRlbnQse2lzRXhwbG9yZXI6dHJ1ZSwKKyAgICAgICAgCQkJCQl1cGxvYWRtb2R1bDp0aGlzLnVwbG9hZG1vZHVsLHRodW1ibmFtZTp0aHVtYk5hbWUsbm86bm99KTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImFkZExpc3RwcmVzZW50YXRpb25GaWxlT3JpZyIgYXJncz0ib3JpZ2luYWxOYW1lLHBkZm5hbWUsc3dmTmFtZSxmaWxlRXhwbG9yZXJJdGVtSWQiPgorICAgIAlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiYWRkTGlzdHByZXNlbnRhdGlvbkZpbGVPcmlnICIsb3JpZ2luYWxOYW1lLHBkZm5hbWUsc3dmTmFtZSxmaWxlRXhwbG9yZXJJdGVtSWQpOworICAgICAgICBuZXcgbHoubGlzdFByZXNlbnRhdGlvbkZpbGVPcmlnRXhwbG9yZXIodGhpcy5fdGFibGUuX2xpc3Rjb250ZW50LHsKKwkgICAgICAgIAkJCQlpc0V4cGxvcmVyOnRydWUsCisJICAgICAgICAJCQkJaXNvcmlnaW5hbDp0cnVlLAorCSAgICAgICAgCQkJCXVwbG9hZG1vZHVsOnRoaXMudXBsb2FkbW9kdWwsCisJICAgICAgICAJCQkJb3JpZ2luYWxOYW1lOm9yaWdpbmFsTmFtZSwKKwkgICAgICAgIAkJCQlwZGZuYW1lOnBkZm5hbWUsCisJICAgICAgICAJCQkJc3dmTmFtZTpzd2ZOYW1lLAorCSAgICAgICAgCQkJCWZpbGVFeHBsb3Jlckl0ZW1JZDpmaWxlRXhwbG9yZXJJdGVtSWQKKyAgICAgICAgCQkJCX0pOworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iYWRkTGlzdHByZXNlbnRhdGlvbkZpbGVQREYiIGFyZ3M9InBkZm5hbWUsc3dmTmFtZSxmaWxlRXhwbG9yZXJJdGVtSWQiPgorICAgIAlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiYWRkTGlzdHByZXNlbnRhdGlvbkZpbGVQREYgIixvcmlnaW5hbE5hbWUscGRmbmFtZSxzd2ZOYW1lLGZpbGVFeHBsb3Jlckl0ZW1JZCk7CisgICAgICAgIG5ldyBsei5saXN0UHJlc2VudGF0aW9uRmlsZVBERkV4cGxvcmVyKHRoaXMuX3RhYmxlLl9saXN0Y29udGVudCx7CisJICAgICAgICAJCQkJaXNFeHBsb3Jlcjp0cnVlLAorCSAgICAgICAgCQkJCWlzb3JpZ2luYWw6dHJ1ZSwKKwkgICAgICAgIAkJCQl1cGxvYWRtb2R1bDp0aGlzLnVwbG9hZG1vZHVsLAorCSAgICAgICAgCQkJCXBkZm5hbWU6cGRmbmFtZSwKKwkgICAgICAgIAkJCQlzd2ZOYW1lOnN3Zk5hbWUsCisJICAgICAgICAJCQkJZmlsZUV4cGxvcmVySXRlbUlkOmZpbGVFeHBsb3Jlckl0ZW1JZAorICAgICAgICAJCQkJfSk7CisgICAgPC9tZXRob2Q+CisJICAgIAorICAgIDxtZXRob2QgbmFtZT0icmVzZXRMaXN0Ij4KKyAgICAJdGhpcy5fdGFibGUuZGVzdHJveSgpOworICAgIAluZXcgbHouaW1hZ2VMaXN0SW5uZXJUYWJsZUV4cGxvcmVyKHRoaXMse25hbWU6J190YWJsZSd9KTsKKyAgICAJdGhpcy5faGlkZUZvck5vbk1vZHMuYnJpbmdUb0Zyb250KCk7CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJoaWdobGlnaHRJdGVtIiBhcmdzPSJvYmoiPgorICAgIAk8IVtDREFUQVsKKyAgICAJCWZvciAodmFyIGk9MDtpPHRoaXMuX3RhYmxlLl9saXN0Y29udGVudC5zdWJ2aWV3cy5sZW5ndGg7aSsrKXsKKyAgICAJCQlpZiAoIXRoaXMuX3RhYmxlLl9saXN0Y29udGVudC5zdWJ2aWV3c1tpXS5pc1BwdCl7CisgICAgICAgICAgICAgICAgICAgIC8vRGVidWcud3JpdGUoInRoaXMuX3RhYmxlLl9saXN0Y29udGVudC5zdWJ2aWV3c1tpXTogIix0aGlzLl90YWJsZS5fbGlzdGNvbnRlbnQuc3Vidmlld3NbaV0pOworICAgIAkJCQl0aGlzLl90YWJsZS5fbGlzdGNvbnRlbnQuc3Vidmlld3NbaV0uX3RodW1iVGV4dC5zZXRBdHRyaWJ1dGUoJ3RleHQnLCc8Zm9udD4nK3RoaXMuX3RhYmxlLl9saXN0Y29udGVudC5zdWJ2aWV3c1tpXS5maWxlbmFtZVB1cmUrJzwvZm9udD4nKTsKKyAgICAgICAgICAgICAgICB9CisgICAgCQl9CisgICAgCQlvYmouX3RodW1iVGV4dC5zZXRBdHRyaWJ1dGUoJ3RleHQnLCc8Zm9udD48Yj4nK29iai5maWxlbmFtZVB1cmUrJzwvYj48L2ZvbnQ+Jyk7CisgICAgCV1dPgorICAgIDwvbWV0aG9kPgorICAgIAorCTxpbWFnZUxpc3RJbm5lclRhYmxlRXhwbG9yZXIgbmFtZT0iX3RhYmxlIiB5PSIyMCIKKwkJCQkJCSBoZWlnaHQ9IiR7IHBhcmVudC5oZWlnaHQtMjIgfSIgLz4KKwkKKyAgICA8dmlldyBuYW1lPSJfdHJhc2hCYXIiIGxheW91dD0iYXhpczp4IiB4PSIkb25jZXsgcGFyZW50LndpZHRoIC0gMjAgfSIgeT0iMCI+CisgICAgICAgIDxiYXNlQ2hvb3NlSWNvblZpZXcgbmFtZT0iX3RyYXNoSWNvbiIgbGFiZWxpZD0iNzE4IiBoZWlnaHQ9IjIwIiB3aWR0aD0iMTkiIAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlTj0iZmlsZV9leHBsb3Jlcl9jbG9zZV9yc2MiPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICAgICAgcGFyZW50LnBhcmVudC5vbmNsb3NlLnNlbmRFdmVudCgpOworICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8L2Jhc2VDaG9vc2VJY29uVmlldz4KKyAgICAgICAgPHZpZXcgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdiYXNlYmdjb2xvcml6ZXInKSB9IiBoZWlnaHQ9IjIwIiB3aWR0aD0iMSIgLz4KKyAgICA8L3ZpZXc+CisgICAgCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcHJlc2VudGF0aW9ucy9wcmVzZW50YXRpb25QcmV2aWV3Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2ZpbGVleHBsb3Jlci9wcmVzZW50YXRpb25zL3ByZXNlbnRhdGlvblByZXZpZXcubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlZDIwMGYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcHJlc2VudGF0aW9ucy9wcmVzZW50YXRpb25QcmV2aWV3Lmx6eApAQCAtMCwwICsxLDkzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8Y2xhc3MgbmFtZT0icHJlc2VudGF0aW9uUHJldmlldyIgZXh0ZW5kcz0idmlldyIgeD0iMSIgeT0iMzMiIGNsaXA9InRydWUiCisgICAgICAgIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodCAtIDM0IH0iIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoIC0gMiB9Ij4KKwkKKwkKKwk8YXR0cmlidXRlIG5hbWU9ImRvY3VtZW50T2JqIiB2YWx1ZT0ibnVsbCIgLz4KKwk8YXR0cmlidXRlIG5hbWU9InJlZk9iakxpc3QiIHZhbHVlPSJudWxsIiAvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0ibWluaUJ1dHRvbiIgdmFsdWU9Im51bGwiIC8+CisJCisJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKwkJdGhpcy5hZGRGb2xkZXJTZXF1ZW5jZSgpOworCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgicHJlc2VudGF0aW9uUHJldmlldyAxICIsdGhpcy53aWR0aCk7CisJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJwcmVzZW50YXRpb25QcmV2aWV3IDIgIix0aGlzLmhlaWdodCk7CisJCXRoaXMubWluaUJ1dHRvbiA9IHRoaXMucmVmT2JqTGlzdC5fZG9jdW1lbnRzVGFicy5hZGRJdGVtKHRoaXMpOworCTwvaGFuZGxlcj4KKwkKKwk8bWV0aG9kIG5hbWU9ImFkZEZvbGRlclNlcXVlbmNlIj4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJmb2xkZXJuYW1lIDEgIix0aGlzLmRvY3VtZW50T2JqLmZpbGVIYXNoKTsKKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImZvbGRlcm5hbWUgMiAiLHRoaXMuZG9jdW1lbnRPYmouZmlsZUV4cGxvcmVySXRlbUlkKTsKKyAgICAgICAgY2FudmFzLnVwbG9hZG1vZHVsZWltZ2ZvbGRlciA9ICcvJyt0aGlzLmRvY3VtZW50T2JqLmZpbGVIYXNoOworICAgICAgICB0aGlzLmdldFByZXNlbnRhdGlvblByZXZpZXdGaWxlRXhwbG9yZXIuZG9DYWxsKCk7CisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImdldFByZXNlbnRhdGlvblByZXZpZXdGaWxlRXhwbG9yZXIiIGZ1bmNuYW1lPSJmaWxlc2VydmljZS5nZXRQcmVzZW50YXRpb25QcmV2aWV3RmlsZUV4cGxvcmVyIiAKKyAgICAgICAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gICAKKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBjYW52YXMuc2Vzc2lvbklkOyA8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQuZG9jdW1lbnRPYmouZmlsZUhhc2g7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+ICAgIAorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImdldFByZXNlbnRhdGlvblByZXZpZXdGaWxlRXhwbG9yZXIgLTEtOiAiLHZhbHVlKTsKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJnZXRQcmVzZW50YXRpb25QcmV2aWV3RmlsZUV4cGxvcmVyIC0zLTogIixwYXJlbnQuZG9jdW1lbnRPYmouZmlsZUhhc2gpOworICAgICAgICAgICAgcGFyZW50LnJlbmRlckl0ZW1zKHZhbHVlKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4gICAgIAorICAgIAorICAgIDxtZXRob2QgbmFtZT0icmVuZGVySXRlbXMiIGFyZ3M9InByZXNlbnRhdGlvbk9iamVjdCIgPgorICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidGhpczogIix0aGlzKTsKKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInByZXNlbnRhdGlvbk9iamVjdDogIixwcmVzZW50YXRpb25PYmplY3QpOworICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInByZXNlbnRhdGlvbk9iamVjdDogIixwcmVzZW50YXRpb25PYmplY3QpOworICAgICAgICAKKyAgICAgICAgICAgIGlmIChwcmVzZW50YXRpb25PYmplY3QucGRmRG9jdW1lbnQ9PW51bGwpeworICAgICAgICAgICAgICAgIC8vSXMgUERGIG9ubHkKKyAgICAgICAgICAgICAgICAvL0RlYnVnLndyaXRlKCJJcyBQREYgb25seSIpOworICAgICAgICAgICAgICAgIHRoaXMuX2ltYWdlc2xpc3RkcmF3LmFkZExpc3RwcmVzZW50YXRpb25GaWxlUERGKHByZXNlbnRhdGlvbk9iamVjdC5vcmlnaW5hbERvY3VtZW50LHByZXNlbnRhdGlvbk9iamVjdC5zd2ZEb2N1bWVudCx0aGlzLmRvY3VtZW50T2JqLmZpbGVFeHBsb3Jlckl0ZW1JZCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vSXMgb3JpZ2luYWwgRG9jdW1lbnQgKyBQREYtRG9jdW1lbnQKKyAgICAgICAgICAgICAgICAvL0RlYnVnLndyaXRlKCJJcyBvcmlnaW5hbCBEb2N1bWVudCArIFBERi1Eb2N1bWVudCIpOworICAgICAgICAgICAgICAgIHRoaXMuX2ltYWdlc2xpc3RkcmF3LmFkZExpc3RwcmVzZW50YXRpb25GaWxlT3JpZyhwcmVzZW50YXRpb25PYmplY3Qub3JpZ2luYWxEb2N1bWVudCxwcmVzZW50YXRpb25PYmplY3QucGRmRG9jdW1lbnQscHJlc2VudGF0aW9uT2JqZWN0LnN3ZkRvY3VtZW50LHRoaXMuZG9jdW1lbnRPYmouZmlsZUV4cGxvcmVySXRlbUlkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICAgICBmb3IgKHZhciBlZz0wO2VnPHByZXNlbnRhdGlvbk9iamVjdC50aHVtYnMudGh1bWJzLmxlbmd0aDtlZysrKXsKKyAgICAgICAgICAgICAgICAvLy8vRGVidWcud3JpdGUocHJlc2VudGF0aW9uT2JqZWN0LnRodW1icy50aHVtYnNbZWddLmZpbGVuYW1lKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9pbWFnZXNsaXN0ZHJhdy5hZGRQcmVzZW50YXRpb25UaHVtYihwcmVzZW50YXRpb25PYmplY3QudGh1bWJzLnRodW1ic1tlZ10uZmlsZW5hbWUsKGVnKzEpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIF1dPiAgIAorICAgIDwvbWV0aG9kPiAKKyAgICAKKyAgICA8cHJlc2VudGF0aW9uRmlsZXNMaXN0IG5hbWU9Il9pbWFnZXNsaXN0ZHJhdyIgeD0iMCIgeT0iMCIgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGggfSIKKyAgICAJCQkJaGVpZ2h0PSIkeyBwYXJlbnQuaGVpZ2h0IH0iID4KKyAgICAJPGhhbmRsZXIgbmFtZT0ib25jbG9zZSI+CisgICAgCQlwYXJlbnQubWluaUJ1dHRvbi5jbG9zZSgpOworICAgIAk8L2hhbmRsZXI+CisgICAgPC9wcmVzZW50YXRpb25GaWxlc0xpc3Q+CisJCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcmVzb3VyY2VzL2FkZC5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcmVzb3VyY2VzL2FkZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjMzMmZlZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2ZpbGVleHBsb3Jlci9yZXNvdXJjZXMvYWRkLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcmVzb3VyY2VzL2Fycm93X3JlZnJlc2hfc21hbGwucG5nIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvZmlsZWV4cGxvcmVyL3Jlc291cmNlcy9hcnJvd19yZWZyZXNoX3NtYWxsLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzA4N2RmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvZmlsZWV4cGxvcmVyL3Jlc291cmNlcy9hcnJvd19yZWZyZXNoX3NtYWxsLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcmVzb3VyY2VzL2NoYXJ0X3BpZS5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcmVzb3VyY2VzL2NoYXJ0X3BpZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmUwMGZhMAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2ZpbGVleHBsb3Jlci9yZXNvdXJjZXMvY2hhcnRfcGllLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcmVzb3VyY2VzL2ZpbG0ucG5nIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvZmlsZWV4cGxvcmVyL3Jlc291cmNlcy9maWxtLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMGNlN2JiCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvZmlsZWV4cGxvcmVyL3Jlc291cmNlcy9maWxtLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcmVzb3VyY2VzL2ZvbGRlci5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcmVzb3VyY2VzL2ZvbGRlci5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzg0ZThmYQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2ZpbGVleHBsb3Jlci9yZXNvdXJjZXMvZm9sZGVyLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcmVzb3VyY2VzL2ZvbGRlcl9hZGQucG5nIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvZmlsZWV4cGxvcmVyL3Jlc291cmNlcy9mb2xkZXJfYWRkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjlmZThmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvZmlsZWV4cGxvcmVyL3Jlc291cmNlcy9mb2xkZXJfYWRkLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcmVzb3VyY2VzL2ZvbGRlcl9ibHVlX29wZW4ucG5nIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvZmlsZWV4cGxvcmVyL3Jlc291cmNlcy9mb2xkZXJfYmx1ZV9vcGVuLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzU1YzU2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvZmlsZWV4cGxvcmVyL3Jlc291cmNlcy9mb2xkZXJfYmx1ZV9vcGVuLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcmVzb3VyY2VzL2ZvbGRlcl9leHBsb3JlLnBuZyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2ZpbGVleHBsb3Jlci9yZXNvdXJjZXMvZm9sZGVyX2V4cGxvcmUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiYTkzOTEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcmVzb3VyY2VzL2ZvbGRlcl9leHBsb3JlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcmVzb3VyY2VzL2hvdXNlX2xpbmsucG5nIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvZmlsZWV4cGxvcmVyL3Jlc291cmNlcy9ob3VzZV9saW5rLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTJjMjcxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvZmlsZWV4cGxvcmVyL3Jlc291cmNlcy9ob3VzZV9saW5rLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcmVzb3VyY2VzL2ljb25fZHJhZ19hZGQucG5nIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvZmlsZWV4cGxvcmVyL3Jlc291cmNlcy9pY29uX2RyYWdfYWRkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTJhZTQxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvZmlsZWV4cGxvcmVyL3Jlc291cmNlcy9pY29uX2RyYWdfYWRkLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcmVzb3VyY2VzL2ljb25fZHJhZ19uby5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcmVzb3VyY2VzL2ljb25fZHJhZ19uby5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzg0ZGYzMAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2ZpbGVleHBsb3Jlci9yZXNvdXJjZXMvaWNvbl9kcmFnX25vLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcmVzb3VyY2VzL2ljb25fZm9sZGVyX3ByZV9jbG9zZWRfcnNjLnBuZyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2ZpbGVleHBsb3Jlci9yZXNvdXJjZXMvaWNvbl9mb2xkZXJfcHJlX2Nsb3NlZF9yc2MucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3MjI3NWMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcmVzb3VyY2VzL2ljb25fZm9sZGVyX3ByZV9jbG9zZWRfcnNjLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcmVzb3VyY2VzL2ljb25fZm9sZGVyX3ByZV9vcGVuX3JzYy5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcmVzb3VyY2VzL2ljb25fZm9sZGVyX3ByZV9vcGVuX3JzYy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWUxYjA0MgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2ZpbGVleHBsb3Jlci9yZXNvdXJjZXMvaWNvbl9mb2xkZXJfcHJlX29wZW5fcnNjLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcmVzb3VyY2VzL21hcC5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcmVzb3VyY2VzL21hcC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjkwZWYyNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2ZpbGVleHBsb3Jlci9yZXNvdXJjZXMvbWFwLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcmVzb3VyY2VzL3Bob3RvLnBuZyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2ZpbGVleHBsb3Jlci9yZXNvdXJjZXMvcGhvdG8ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjMmFhYWEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcmVzb3VyY2VzL3Bob3RvLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcmVzb3VyY2VzL3JlbW92ZV9pdGVtLnBuZyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2ZpbGVleHBsb3Jlci9yZXNvdXJjZXMvcmVtb3ZlX2l0ZW0ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwMzFmZjQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcmVzb3VyY2VzL3JlbW92ZV9pdGVtLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcmVzb3VyY2VzL3JlcG9ydC5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcmVzb3VyY2VzL3JlcG9ydC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzc5YWQ1OAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2ZpbGVleHBsb3Jlci9yZXNvdXJjZXMvcmVwb3J0LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcmVzb3VyY2VzL3RyYXNoLnBuZyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2ZpbGVleHBsb3Jlci9yZXNvdXJjZXMvdHJhc2gucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5MjU5MmIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcmVzb3VyY2VzL3RyYXNoLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvcmVzb3VyY2VzL3dvcmxkX2xpbmsucG5nIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvZmlsZWV4cGxvcmVyL3Jlc291cmNlcy93b3JsZF9saW5rLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOGVkYzEyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvZmlsZWV4cGxvcmVyL3Jlc291cmNlcy93b3JsZF9saW5rLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvdGFiYmFyL2Jhc2VDaG9vc2VJY29uVmlldy5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvdGFiYmFyL2Jhc2VDaG9vc2VJY29uVmlldy5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWI0ZTgyOAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2ZpbGVleHBsb3Jlci90YWJiYXIvYmFzZUNob29zZUljb25WaWV3Lmx6eApAQCAtMCwwICsxLDUyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8Y2xhc3MgbmFtZT0iYmFzZUNob29zZUljb25WaWV3IiBleHRlbmRzPSJ2aWV3IiB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIAorICAgICAgIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignYmFzZWJnY29sb3JpemVyJykgfSIgID4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9InJlc291cmNlTiIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iaXNzZWxlY3RlZCIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgICAgICBpZiAodGhpcy5pc3NlbGVjdGVkKXsKKyAgICAgICAgICAgIHRoaXMub25jbGljay5zZW5kRXZlbnQoKTsKKyAgICAgICAgfQorICAgIDwvaGFuZGxlcj4gCisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZW92ZXIiPgorICAgICAgICB0aGlzLl9iZy5zZXRBdHRyaWJ1dGUoImJnY29sb3IiLGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdiYXNlTW91c2Vjb2xvcml6ZXInKSk7CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdXQiPgorICAgICAgICB0aGlzLl9iZy5zZXRBdHRyaWJ1dGUoImJnY29sb3IiLGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdtYWluQmFja2dyb3VuZENvbG9yJykpOworICAgIDwvaGFuZGxlcj4KKyAgICAKKyAgICA8dmlldyBuYW1lPSJfYmciIHg9IjEiIHk9IjEiIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoLTEgfSIgCisgICAgICAgICAgaGVpZ2h0PSIkb25jZXsgcGFyZW50LmhlaWdodC0yIH0iIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignbWFpbkJhY2tncm91bmRDb2xvcicpIH0iIC8+CisgICAgCisgICAgPHZpZXcgeD0iMiIgeT0iMiIgcmVzb3VyY2U9IiRvbmNleyBwYXJlbnQucmVzb3VyY2VOIH0iIC8+CisgICAgICAgICAgICAgCisgICAgPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSIkb25jZXsgcGFyZW50LmxhYmVsaWQgfSIgaW5pdHR3aWNlPSJ0cnVlIiAvPgorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvZmlsZWV4cGxvcmVyL3RhYmJhci9kb2N1bWVudHNMb2FkZXJJY29uLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2ZpbGVleHBsb3Jlci90YWJiYXIvZG9jdW1lbnRzTG9hZGVySWNvbi5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjBjODc4NwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2ZpbGVleHBsb3Jlci90YWJiYXIvZG9jdW1lbnRzTG9hZGVySWNvbi5sengKQEAgLTAsMCArMSw3MSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9ImRvY3VtZW50c0xvYWRlckljb24iIGV4dGVuZHM9InZpZXciIGhlaWdodD0iMjAiIHdpZHRoPSIxOSIgCisgICAgICAgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdiYXNlYmdjb2xvcml6ZXInKSB9IiAgPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0icmVzb3VyY2VOIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpc3NlbGVjdGVkIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJsYWJlbHRleHQiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9InJlZk9iaiIgdmFsdWU9Im51bGwiIC8+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJoaWRlIj4KKyAgICAgICAgdGhpcy5fYmcuc2V0QXR0cmlidXRlKCJoZWlnaHQiLHRoaXMuaGVpZ2h0LTIpOworICAgICAgICBwYXJlbnQucGFyZW50LmhpZGVTZWxlY3Rpb24odGhpcyk7CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJzZXRTZWxlY3Rpb24iPgorICAgIAl0aGlzLl9iZy5zZXRBdHRyaWJ1dGUoImhlaWdodCIsdGhpcy5oZWlnaHQpOworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICBwYXJlbnQucGFyZW50LnNlbmRTZWxlY3Rpb24odGhpcyk7CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgIGlmICh0aGlzLmlzc2VsZWN0ZWQpeworICAgICAgICAgICAgdGhpcy5vbmNsaWNrLnNlbmRFdmVudCgpOworICAgICAgICB9CisgICAgPC9oYW5kbGVyPiAKKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImNsb3NlIj4KKyAgICAJcGFyZW50LnBhcmVudC5jbG9zZSh0aGlzKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3ZlciI+CisgICAgICAgIHRoaXMuX2JnLnNldEF0dHJpYnV0ZSgiYmdjb2xvciIsY2FudmFzLmdldFRoZW1lQ29sb3IoJ2Jhc2VNb3VzZWNvbG9yaXplcicpKTsKKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZW91dCI+CisgICAgICAgIHRoaXMuX2JnLnNldEF0dHJpYnV0ZSgiYmdjb2xvciIsMHhGRkZGRkYpOworICAgIDwvaGFuZGxlcj4KKyAgICAKKyAgICA8dmlldyBuYW1lPSJfYmciIHg9IjEiIHk9IjEiIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoLTEgfSIgCisgICAgICAgICAgaGVpZ2h0PSIkb25jZXsgcGFyZW50LmhlaWdodC0yIH0iIGJnY29sb3I9IjB4RkZGRkZGIiAvPgorICAgIAorICAgIDx2aWV3IHg9IjIiIHk9IjIiIHJlc291cmNlPSIkb25jZXsgcGFyZW50LnJlc291cmNlTiB9IiAvPgorICAgICAgICAgICAgIAorICAgIDxsYWJlbFRvb2x0aXAgdGV4dD0iJG9uY2V7IHBhcmVudC5sYWJlbHRleHQgfSIgLz4KKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2ZpbGVleHBsb3Jlci90YWJiYXIvZG9jdW1lbnRzVGFiQmFyLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2ZpbGVleHBsb3Jlci90YWJiYXIvZG9jdW1lbnRzVGFiQmFyLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjRkNmZjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvZmlsZWV4cGxvcmVyL3RhYmJhci9kb2N1bWVudHNUYWJCYXIubHp4CkBAIC0wLDAgKzEsODkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzxjbGFzcyBuYW1lPSJkb2N1bWVudHNUYWJCYXIiIGV4dGVuZHM9InZpZXciIGhlaWdodD0iMCIgeT0iMTQiIGxheW91dD0iYXhpczp4IiA+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50SXRlbSIvPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0ic2VuZFNlbGVjdGlvbiIgYXJncz0iaXRlbVJlZiI+CisgICAgICAgIHRoaXMuaGlkZUFsbCgpOworICAgICAgICBpdGVtUmVmLnNldFNlbGVjdGlvbigpOworICAgICAgICBpZiAoaXRlbVJlZi5yZWZPYmogPT0gbnVsbCkgeworICAgICAgICAgICAgcGFyZW50Ll9maWxlYXJlYS5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgICAgICBwYXJlbnQuX3RyYXNoQmFyLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKyAgICAgICAgICAgIHBhcmVudC5fZmlsZUJhci5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgICAgICBwYXJlbnQuX2JvcmRlcjIuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAJLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZShpdGVtUmVmLnJlZk9iaik7CisgICAgICAgICAgICBpdGVtUmVmLnJlZk9iai5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgIH0KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImhpZGVTZWxlY3Rpb24iIGFyZ3M9Iml0ZW1SZWYiPgorICAgICAgICBpZiAoaXRlbVJlZi5yZWZPYmogPT0gbnVsbCkgeworICAgICAgICAgICAgcGFyZW50Ll9maWxlYXJlYS5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKyAgICAgICAgICAgIHBhcmVudC5fdHJhc2hCYXIuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgICAgICAgICBwYXJlbnQuX2ZpbGVCYXIuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgICAgICAgICBwYXJlbnQuX2JvcmRlcjIuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpdGVtUmVmLnJlZk9iai5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKyAgICAgICAgfQorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iY2xvc2UiIGFyZ3M9ImJ1dHRvblJlZiI+CisgICAgCWJ1dHRvblJlZi5yZWZPYmouZGVzdHJveSgpOworICAgIAlidXR0b25SZWYuZGVzdHJveSgpOworICAgIAl0aGlzLl9jb250ZW50LnN1YnZpZXdzW3RoaXMuX2NvbnRlbnQuc3Vidmlld3MubGVuZ3RoLTFdLm9uY2xpY2suc2VuZEV2ZW50KCk7CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJoaWRlQWxsIj4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICBmb3IgKHZhciBlZyBpbiB0aGlzLl9jb250ZW50LnN1YnZpZXdzKSB7CisgICAgICAgICAgICAgICAgdGhpcy5fY29udGVudC5zdWJ2aWV3c1tlZ10uaGlkZSgpOworICAgICAgICAgICAgfQorICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImFkZEl0ZW0iIGFyZ3M9InRhYiI+CisgICAgICAgIHZhciB0ID0gbmV3IGx6LmRvY3VtZW50c0xvYWRlckljb24odGhpcy5fY29udGVudCx7CisgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VOOnRhYi5kb2N1bWVudE9iai5maWxlSWNvbiwKKyAgICAgICAgICAgICAgICAgICByZWZPYmo6dGFiLAorICAgICAgICAgICAgICAgICAgIGxhYmVsdGV4dDp0YWIuZG9jdW1lbnRPYmouZmlsZU5hbWUKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgdC5vbmNsaWNrLnNlbmRFdmVudCgpOworICAgICAgICByZXR1cm4gdDsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8dmlldyBuYW1lPSJfYm9yZGVyMiIgeD0iMCIgeT0iMTkiIG9wdGlvbnM9Imlnbm9yZWxheW91dDogdHJ1ZSIKKyAgICAgICAgICB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCB9IiBoZWlnaHQ9IjIiIAorICAgICAgICAgIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignYmFzZWJnY29sb3JpemVyJykgfSIgLz4gCisgICAgICAgICAgIAorICAgIDx2aWV3IG5hbWU9Il9jb250ZW50IiBsYXlvdXQ9ImF4aXM6eCI+ICAKKyAgICAgICAgPGRvY3VtZW50c0xvYWRlckljb24gbmFtZT0iX2V4cGxvcmVyVHJlZVZpZXciIAorICAgICAgICAgICAgcmVzb3VyY2VOPSJmaWxlX2V4cGxvcmVyX3ZpZXdfdHJlZV9yc2MiIGhlaWdodD0iMjAiIHdpZHRoPSIxOSIgCisgICAgICAgICAgICBsYWJlbHRleHQ9IiRvbmNleyBjYW52YXMuZ2V0TGFiZWxOYW1lKDcxNykgfSIgLz4KKyAgICA8L3ZpZXc+ICAgIAorICAgIDx2aWV3IG5hbWU9Il9ib3JkZXIiIGhlaWdodD0iMjAiIHdpZHRoPSIxIiAKKyAgICAgICAgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdiYXNlYmdjb2xvcml6ZXInKSB9IiAvPgorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvZmlsZWV4cGxvcmVyL3RhYmJhci9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2ZpbGVleHBsb3Jlci90YWJiYXIvbGlicmFyeS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzgxMGM3NAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2ZpbGVleHBsb3Jlci90YWJiYXIvbGlicmFyeS5sengKQEAgLTAsMCArMSwyNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKwkKKyAgICA8aW5jbHVkZSBocmVmPSJiYXNlQ2hvb3NlSWNvblZpZXcubHp4IiAvPgorICAgIDxpbmNsdWRlIGhyZWY9ImRvY3VtZW50c0xvYWRlckljb24ubHp4IiAvPgorICAgIDxpbmNsdWRlIGhyZWY9ImRvY3VtZW50c1RhYkJhci5sengiIC8+CisgICAgCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvdHJlZWl0ZW1zL2Jhc2VGaWxlRXhwbG9yZXJJdGVtLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2ZpbGVleHBsb3Jlci90cmVlaXRlbXMvYmFzZUZpbGVFeHBsb3Jlckl0ZW0ubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2YmU5OTIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvdHJlZWl0ZW1zL2Jhc2VGaWxlRXhwbG9yZXJJdGVtLmx6eApAQCAtMCwwICsxLDUzMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9ImJhc2VGaWxlRXhwbG9yZXJJdGVtIiBleHRlbmRzPSJ2aWV3Ij4KKwkKKwk8YXR0cmlidXRlIG5hbWU9InJlZk9iakxpc3RSb290IiB2YWx1ZT0ibnVsbCIvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0iaXNSb290IiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJmaWxlSWNvbiIgdHlwZT0ic3RyaW5nIiB2YWx1ZT0ic3RyaW5nIiAvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0ib3BlbiIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0iZmlsZUV4cGxvcmVySXRlbUlkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0iaXNPd25lciIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0iaXNGb2xkZXIiIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0iaXNJbWFnZSIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0iaXNQcmVzZW50YXRpb24iIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKwk8YXR0cmlidXRlIG5hbWU9ImlzVmlkZW8iIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9ImZpbGVOYW1lIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJmaWxlSGFzaCIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0ic2VsZWN0ZWQiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0ic2luZ2xlQ2xpY2tEZWxlZ2F0ZSIgdmFsdWU9Im51bGwiIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJzaW5nbGVDbGlja1N0YXJ0ZWQiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9ImlzTW91c2VEb3duRHJhZ0FjdGlvbiIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIi8+CisJCisJPCEtLSBJZiB0aGlzIGlzIHRydWUsIHRoZW4gdGhpcyBpdGVtIGhhcyBiZWVuIGRyYWctbi1kcm9wZWQgYW5kIGl0IG1ha2VzIG5vIAorCSAgICAgICBzZW5zZSB0byBoYW5kbGUgYW55IHNpbmdsZSBvciBkb3VibGUgY2xpY2sgZXZlbnQgLS0+CisJPGF0dHJpYnV0ZSBuYW1lPSJtb3VzZURvd25DbGlja1VzZWQiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKwk8YXR0cmlidXRlIG5hbWU9Im1vdXNlRG93bkNsaWNrRGVsZWdhdGUiIHZhbHVlPSJudWxsIiAvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0iaXNUcmFzaENhbiIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorCQorCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisJCXRoaXMuc2luZ2xlQ2xpY2tEZWxlZ2F0ZSA9IG5ldyBMekRlbGVnYXRlKCB0aGlzLCAiZG9TaW5nbGVDbGljayIgKTsKKwkJdGhpcy5yZXNldENsaWNrRGVsZWdhdGUgPSBuZXcgTHpEZWxlZ2F0ZSggdGhpcywgImRvUmVzZXRTaW5nbGVDbGljayIgKTsKKwkJdGhpcy5tb3VzZURvd25DbGlja0RlbGVnYXRlID0gbmV3IEx6RGVsZWdhdGUoIHRoaXMsICJkb01vdXNlRG93bkNsaWNrIiApOworCQlpZiAodGhpcy5pc0ZvbGRlcikgeworCQkgICAgbHouVHJhY2sucmVnaXN0ZXIodGhpcy5fZmlsZU5hbWUsIGNhbnZhcy5jdXJyZW50SW1hZ2VzTGlzdGRyYXcuY3VycmVudFRyYWNrR3JvdXBOYW1lKTsKKwkJfQorCTwvaGFuZGxlcj4KKwkKKwk8bWV0aG9kIG5hbWU9ImRvT3BlbiI+CisJCXRoaXMub3BlbiA9IHRydWU7CisJCWlmICh0aGlzLmlzRm9sZGVyKSB7CisgICAgCQl0aGlzLmljb25fZm9sZGVyX3ByZS5zZXRBdHRyaWJ1dGUoImZyYW1lIiwyKTsKKyAgICAJCXRoaXMuY29udGVudC5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisJCQl0aGlzLl9mb2xkZXJJY29uLnNldEF0dHJpYnV0ZSgiZnJhbWUiLDIpOworCQkgICAgdGhpcy5sb2FkRmlsZXMoKTsKKwkJfQorCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0iZG9DbG9zZSI+CisJCXRoaXMub3BlbiA9IGZhbHNlOworCQlpZiAodGhpcy5pc0ZvbGRlcikgeworICAgICAgICAgICAgdGhpcy5pY29uX2ZvbGRlcl9wcmUuc2V0QXR0cmlidXRlKCJmcmFtZSIsMSk7CisgICAgICAgICAgICB0aGlzLmNvbnRlbnQuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgICAgICAgICB0aGlzLl9mb2xkZXJJY29uLnNldEF0dHJpYnV0ZSgiZnJhbWUiLDEpOworCQl9CisJPC9tZXRob2Q+CisJCisgICAgPG1ldGhvZCBuYW1lPSJkb01vdXNlRG93bkNsaWNrIiBhcmdzPSJpdGVtT2JqIj4KKyAgICAJPCFbQ0RBVEFbCisJCQlpZiAoIWNhbnZhcy5pc0FsbG93ZWRUb0RyYXcgJiYgIWNhbnZhcy5pc21vZGVyYXRvcikgeworCSAgICAJCW5ldyBsei5sYWJlbGVycm9yUG9wdXAoY2FudmFzLHtlcnJvcmxhYmVsaWQ6MTQ2Mn0pOworCSAgICAJCXJldHVybjsKKwkgICAgCX0KKwkgICAgCXRoaXMubW91c2VEb3duQ2xpY2tVc2VkID0gdHJ1ZTsKKwkgICAgCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJtb3VzZURvd24gQ0xJQ0sgU3RhcnQgRHJhZyBBbmQgRHJvcCIpOworCSAgICAJbmV3IGx6LmRyYWdJdGVtRmlsZUV4cGxvcmVyKGNhbnZhcyx7CisJICAgIAkJICAgICAgICBkcmFnSXRlbVJlc291cmNlOnRoaXMuZmlsZUljb24sCisJICAgICAgICAgICAgCSAgICByZWZPYmo6dGhpcywKKwkgICAgICAgICAgICAgICAgICAgIHg6Y2FudmFzLmdldE1vdXNlKCd4JyksCisJICAgICAgICAgICAgICAgICAgICB5OmNhbnZhcy5nZXRNb3VzZSgneScpCisJICAgICAgICAgICAgCX0pOworICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8IS0tCisgICAgCUNoZWNrIGlmIHRoaXMgaXMgdGhlIE93bmVyCisgICAgIC0tPgorICAgIDxtZXRob2QgbmFtZT0iY2hlY2tGb3JJc093bmVyIj4KKyAgICAJaWYgKHRoaXMuaXNSb290KSB7CisgICAgCQlyZXR1cm4gdGhpcy5pc093bmVyOworICAgIAl9IGVsc2UgeworICAgIAkJcmV0dXJuIHBhcmVudC5wYXJlbnQuY2hlY2tGb3JJc093bmVyKCk7CisgICAgCX0KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8IS0tCisgICAgCUNoZWNrIGlmIHRoZSB1c2VyIHRyaWVzIHRvIG1vdmUgYSBmaWxlIGluIGl0cyBvd24gdHJlZSwKKyAgICAJc2VlIG1vdmVGaWxlCisgICAgIC0tPgorICAgIDxtZXRob2QgbmFtZT0iY2hlY2tGb3JJc0NoaWxkIiBhcmdzPSJjb21wYXJlRmlsZUV4cGxvcmVySXRlbUlkIj4KKyAgICAJaWYgKHRoaXMuaXNSb290KSB7CisgICAgCQlyZXR1cm4gZmFsc2U7CisgICAgCX0gZWxzZSB7CisgICAgCQlpZiAodGhpcy5maWxlRXhwbG9yZXJJdGVtSWQgPT0gY29tcGFyZUZpbGVFeHBsb3Jlckl0ZW1JZCkgeworICAgIAkJCXJldHVybiB0cnVlOworICAgIAkJfSBlbHNlIHsKKyAgICAJCQlyZXR1cm4gcGFyZW50LnBhcmVudC5jaGVja0ZvcklzQ2hpbGQoY29tcGFyZUZpbGVFeHBsb3Jlckl0ZW1JZCk7CisgICAgCQl9CisgICAgCX0KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImRlbGV0ZUZpbGUiIGFyZ3M9ImxhYmVsaWQiPgorICAgIAk8IVtDREFUQVsKKwkJCWlmICghY2FudmFzLmlzQWxsb3dlZFRvRHJhdyAmJiAhY2FudmFzLmlzbW9kZXJhdG9yKSB7CisJICAgIAkJbmV3IGx6LmxhYmVsZXJyb3JQb3B1cChjYW52YXMse2Vycm9ybGFiZWxpZDoxNDYyfSk7CisJICAgIAkJcmV0dXJuOworCSAgICAJfQorCSAgICAJbmV3IGx6LmNvbmZpcm1hdGlvblNpbmdsZShjYW52YXMseworCSAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZk9iajp0aGlzLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsaWQ6bGFiZWxpZCwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbGlkZXJyb3I6NzEzLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDaGVja0JveDpmYWxzZQorCSAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgIAldXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InNlbmRDb25maXJtYXRpb24iIGFyZ3M9ImJvb2wsYXNrQWdhaW4iPgorICAgICAgICBpZiAoYm9vbCkgeworICAgICAgICAgICAgdGhpcy5kZWxldGVGaWxlT3JGb2xkZXIoKTsKKyAgICAgICAgfQorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iZGVsZXRlRmlsZU9yRm9sZGVyIj4KKyAgICAgICAgPCFbQ0RBVEFbCisJCQlpZiAoIWNhbnZhcy5pc0FsbG93ZWRUb0RyYXcgJiYgIWNhbnZhcy5pc21vZGVyYXRvcikgeworCSAgICAJCW5ldyBsei5sYWJlbGVycm9yUG9wdXAoY2FudmFzLHtlcnJvcmxhYmVsaWQ6MTQ2Mn0pOworCSAgICAJCXJldHVybjsKKwkgICAgCX0KKwkgICAgCQorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImRlbGV0ZUZpbGVPckZvbGRlciBIVFRQIDE6ICIpOworICAgICAgICAgICAgLy90aGlzLmdldEZpbGVFeHBsb3JlckJ5Um9vbS5kb0NhbGwoKTsKKyAgICAgICAgICAgIHZhciBkb3dubG9hZHVybCA9IGNhbnZhcy5nZXRVcmwoKSsnc2VydmljZXMvRmlsZVNlcnZpY2UvZGVsZXRlRmlsZU9yRm9sZGVyU2VsZj8nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKydTSUQ9JytjYW52YXMuc2Vzc2lvbklkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKycmZmlsZUV4cGxvcmVySXRlbUlkPScrdGhpcy5maWxlRXhwbG9yZXJJdGVtSWQ7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuZGVsZXRlRmlsZU9yRm9sZGVyU2VsZi5zZXRBdHRyaWJ1dGUoInNyYyIsZG93bmxvYWR1cmwpOworICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImRlbGV0ZUZpbGVPckZvbGRlclNlbGYgZG9SZXF1ZXN0ICIsZG93bmxvYWR1cmwpOworICAgICAgICAgICAgdGhpcy5kZWxldGVGaWxlT3JGb2xkZXJTZWxmLmRvUmVxdWVzdCgpOworICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8ZGF0YXNldCBuYW1lPSJkZWxldGVGaWxlT3JGb2xkZXJTZWxmIiB0eXBlPSJodHRwIiA+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0iZCI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbmRhdGEgIixkKTsKKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZGVsZXRlRmlsZU9yRm9sZGVyOiAiLGQpOworICAgICAgICAgICAgICAgIHBhcmVudC5wYXJlbnQucGFyZW50LmRvT3BlbigpOworICAgICAgICAgICAgICAgIHBhcmVudC5yZWZPYmpMaXN0Um9vdC5fc2VsZWN0ZWQgPSBudWxsOworICAgICAgICAgICAgICAgIHBhcmVudC5yZWZPYmpMaXN0Um9vdC5wYXJlbnRGb2xkZXJJZCA9IC0yOworICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICA8L2RhdGFzZXQ+CisgICAgCisgICAgPCEtLQorICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImRlbGV0ZUZpbGVPckZvbGRlciIgZnVuY25hbWU9ImZpbGVzZXJ2aWNlLmRlbGV0ZUZpbGVPckZvbGRlciIgCisgICAgICAgIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiA+IAorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50LmZpbGVFeHBsb3Jlckl0ZW1JZDs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4gICAgCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZGVsZXRlRmlsZU9yRm9sZGVyOiAiLHZhbHVlKTsKKyAgICAgICAgICAgIHBhcmVudC5wYXJlbnQucGFyZW50LmRvT3BlbigpOworICAgICAgICAgICAgcGFyZW50LnJlZk9iakxpc3RSb290Ll9zZWxlY3RlZCA9IG51bGw7CisgICAgICAgICAgICBwYXJlbnQucmVmT2JqTGlzdFJvb3QucGFyZW50Rm9sZGVySWQgPSAtMjsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4gCisgICAgIC0tPgorICAgIAorCTxtZXRob2QgbmFtZT0iZG9TaW5nbGVDbGljayIgYXJncz0iaXRlbU9iaiI+CisJCXRoaXMuc2luZ2xlQ2xpY2tTdGFydGVkID0gZmFsc2U7CisJCS8vQ2Fubm90IGNoYW5nZSBuYW1lIGZvciBSb290IEljb25zCisJCWlmICh0aGlzLmlzUm9vdCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisJCXRoaXMuYWRkT3JVcGRhdGVGb2xkZXJOYW1lKHRoaXMuZmlsZUV4cGxvcmVySXRlbUlkLGZhbHNlKTsKKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9ImRvUmVzZXRTaW5nbGVDbGljayIgYXJncz0iaXRtZU9iaiI+CisJCXRoaXMuc2luZ2xlQ2xpY2tTdGFydGVkID0gZmFsc2U7CisJPC9tZXRob2Q+CisJCisJPG1ldGhvZCBuYW1lPSJhZGRGaWxlIj4KKwkJdGhpcy5yZWZPYmpMaXN0Um9vdC5zZWxlY3RJdGVtKHRoaXMpOworCQl0aGlzLnJlZk9iakxpc3RSb290LmFkZEZpbGUoKTsKKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9ImFkZEZvbGRlciI+CisJCTwhW0NEQVRBWworCQkJaWYgKCFjYW52YXMuaXNBbGxvd2VkVG9EcmF3ICYmICFjYW52YXMuaXNtb2RlcmF0b3IpIHsKKwkgICAgCQluZXcgbHoubGFiZWxlcnJvclBvcHVwKGNhbnZhcyx7ZXJyb3JsYWJlbGlkOjE0NjJ9KTsKKwkgICAgCQlyZXR1cm47CisJICAgIAl9CisJCisJCQlpZiAodGhpcy5pc0ZvbGRlcikgeworCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJORVcgdGhpcy5maWxlRXhwbG9yZXJJdGVtSWQgSU5UTyAiLHRoaXMpOworCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJORVcgdGhpcy5maWxlRXhwbG9yZXJJdGVtSWQgIix0aGlzLmZpbGVFeHBsb3Jlckl0ZW1JZCk7CisJCQkJaWYgKHRoaXNbImljb25fZm9sZGVyX3ByZSJdKSB7CisJICAgIAkJCXRoaXMuaWNvbl9mb2xkZXJfcHJlLnNldEF0dHJpYnV0ZSgiZnJhbWUiLDIpOworCSAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnQuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworCSAgICAgICAgICAgICAgICB0aGlzLl9mb2xkZXJJY29uLnNldEF0dHJpYnV0ZSgiZnJhbWUiLDIpOworCSAgICAgICAgCQl2YXIgdCA9IG5ldyBsei5mb2xkZXJGaWxlRXhwbG9yZXJJdGVtKHRoaXMuY29udGVudCx7CisJICAgICAgICAJCQkgICAgICAgICAgICBpc093bmVyOnRoaXMuaXNPd25lciwKKwkgICAgICAgIAkJCSAgICAgICAgICAgIGlzRm9sZGVyOnRydWUsCisJICAgICAgICAgICAgICAgICAgICAJCSAgICBmaWxlSWNvbjonaWNvbl9mb2xkZXJfcnNjJywKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZk9iakxpc3RSb290OnRoaXMucmVmT2JqTGlzdFJvb3QsCisJICAgICAgICAgICAgICAgICAgICAJCSAgICBmaWxlTmFtZTpjYW52YXMuZ2V0TGFiZWxOYW1lKDcxMikKKwkgICAgICAgICAgICAgICAgICAgIAkJfSk7CisJICAgICAgICAgICAgICAgIHQuYWRkT3JVcGRhdGVGb2xkZXJOYW1lKHRoaXMuZmlsZUV4cGxvcmVySXRlbUlkLHRydWUpOworCQkJCX0KKwkJCX0KKwkJXV0+CisJPC9tZXRob2Q+CisJCisJPG1ldGhvZCBuYW1lPSJyZWZyZXNoIj4KKwkJdGhpcy5kb09wZW4oKTsKKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9InBsYXlWaWRlbyI+CisJCXRoaXMucmVmT2JqTGlzdFJvb3QucGxheVZpZGVvKHRoaXMpOworCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0iZWRpdEZvbGRlck5hbWUiPgorCQk8IVtDREFUQVsKKwkJCWlmICghY2FudmFzLmlzQWxsb3dlZFRvRHJhdyAmJiAhY2FudmFzLmlzbW9kZXJhdG9yKSB7CisJICAgIAkJbmV3IGx6LmxhYmVsZXJyb3JQb3B1cChjYW52YXMse2Vycm9ybGFiZWxpZDoxNDYyfSk7CisJICAgIAkJcmV0dXJuOworCSAgICAJfQorCQkJdGhpcy5hZGRPclVwZGF0ZUZvbGRlck5hbWUodGhpcy5maWxlRXhwbG9yZXJJdGVtSWQsZmFsc2UpOworCQldXT4KKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9ImxvYWREb2N1bWVudCI+CisJCXRoaXMucmVmT2JqTGlzdFJvb3QubG9hZERvY3VtZW50KHRoaXMpOworCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0ibG9hZFdtbEZpbGUiPgorCQl0aGlzLnJlZk9iakxpc3RSb290LmxvYWRXbWxGaWxlKHRoaXMpOworCTwvbWV0aG9kPgorCisJPG1ldGhvZCBuYW1lPSJsb2FkQ2hhcnQiPgorCQl0aGlzLnJlZk9iakxpc3RSb290LmxvYWRDaGFydCh0aGlzKTsKKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9ImFkZE9yVXBkYXRlRm9sZGVyTmFtZSIgYXJncz0iZmlsZUV4cGxvcmVySXRlbUlkLGlzTmV3Ij4KKwkJPCFbQ0RBVEFbCisJCQlpZiAoIWNhbnZhcy5pc0FsbG93ZWRUb0RyYXcgJiYgIWNhbnZhcy5pc21vZGVyYXRvcikgeworCSAgICAJCW5ldyBsei5sYWJlbGVycm9yUG9wdXAoY2FudmFzLHtlcnJvcmxhYmVsaWQ6MTQ2Mn0pOworCSAgICAJCXJldHVybjsKKwkgICAgCX0KKwkJCisgICAgCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiYWRkT3JVcGRhdGVGb2xkZXJOYW1lICIsZmlsZUV4cGxvcmVySXRlbUlkKTsKKyAgICAJCXZhciB0V2lkdGggPSB0aGlzLl9maWxlTmFtZS53aWR0aDsKKyAgICAJCWlmICh0V2lkdGggPCAxNjApIHsKKyAgICAJCQl0V2lkdGggPSAxNjA7CisgICAgCQl9CisgICAgCQkKKyAgICAJCXZhciB0ID0gbmV3IGx6LmR5bmFtaWNGaWxlTmFtZShjYW52YXMseworICAgIAkJCSAgICAgICAgcGFyZW50RmlsZUV4cGxvcmVySXRlbUlkOmZpbGVFeHBsb3Jlckl0ZW1JZCwKKyAgICAJCQkgICAgICAgIGZpbGVFeHBsb3Jlckl0ZW1JZDp0aGlzLmZpbGVFeHBsb3Jlckl0ZW1JZCwgLy9Pbmx5IHVzZWQgYXQgdXBkYXRlIE5hbWUKKyAgICAJCQkgICAgICAgIGlzT3duZXI6dGhpcy5pc093bmVyLAorICAgIAkJCSAgICAgICAgdGV4dDp0aGlzLmZpbGVOYW1lLAorICAgIAkJCSAgICAgICAgaXNOZXc6aXNOZXcsIC8vZmFsc2UgbWVhbnMgaXRzIGEgcmVuYW1pbmcKKyAgICAJCQkgICAgICAgIHJlZk9iajp0aGlzLHdpZHRoOnRXaWR0aCsxMCwKKyAgICAgICAgICAgIAkJICAgIHg6dGhpcy5fZmlsZU5hbWUuZ2V0QXR0cmlidXRlUmVsYXRpdmUoIngiLGNhbnZhcyksCisgICAgICAgICAgICAJCSAgICB5OnRoaXMuX2ZpbGVOYW1lLmdldEF0dHJpYnV0ZVJlbGF0aXZlKCJ5IixjYW52YXMpCisgICAgICAgICAgICAJCX0pOworICAgICAgICAgICAgCQkKKyAgICAgICAgICAgIGx6LkZvY3VzLnNldEZvY3VzKHQsdHJ1ZSk7CisgICAgICAgICAgICBsei5Nb2RlTWFuYWdlci5tYWtlTW9kYWwodCk7CisgICAgICAgICAgICAKKyAgICAgICAgXV0+CisJPC9tZXRob2Q+CisJCisJPG1ldGhvZCBuYW1lPSJ0b2dnbGVPcGVuIiBhcmdzPSJzZXRTZWxlY3Rpb24iPgorCQk8IVtDREFUQVsKKwkJCWlmICh0aGlzLm1vdXNlRG93bkNsaWNrVXNlZCkgeworCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJtb3VzZURvd25DbGlja1VzZWQgUkVTRVQgVE8gREVGQVVMVCBCVVQgRE8gTk8gQUNUSU9OIENhdXNlIGl0cyBhIERyYWcgYW5kIERyb3AgRXZlbnQiKTsKKwkJCQl0aGlzLm1vdXNlRG93bkNsaWNrVXNlZCA9IGZhbHNlOworCQkJCXJldHVybjsKKwkJCX0KKwkJCQorCQkJaWYgKHRoaXMuc2luZ2xlQ2xpY2tTdGFydGVkKSB7CisJICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIklzIHRoaXMgc2VsZWN0ZWQgPT4gRG91YmxlIENsaWNrICEhISIpOworCSAgICAgICAgICAgIHRoaXMuc2luZ2xlQ2xpY2tTdGFydGVkID0gZmFsc2U7CisJICAgICAgICAgICAgbHouVGltZXIucmVtb3ZlVGltZXIoIHRoaXMuc2luZ2xlQ2xpY2tEZWxlZ2F0ZSApOworCSAgICAgICAgICAgIAorCSAgICAgICAgICAgIGlmICghY2FudmFzLmlzQWxsb3dlZFRvRHJhdyAmJiAhY2FudmFzLmlzbW9kZXJhdG9yKSB7CisJCSAgICAJCW5ldyBsei5sYWJlbGVycm9yUG9wdXAoY2FudmFzLHtlcnJvcmxhYmVsaWQ6MTQ2Mn0pOworCQkgICAgCQlyZXR1cm47CisJCSAgICAJfQorCSAgICAgICAgICAgIAorCSAgICAgICAgICAgIGlmICh0aGlzLmlzVmlkZW8pIHsKKwkgICAgICAgICAgICAJdGhpcy5wbGF5VmlkZW8oKTsKKwkgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNXbWxGaWxlKXsKKwkJCQkJdGhpcy5sb2FkV21sRmlsZSgpOworCQkJCX0gZWxzZSBpZiAodGhpcy5pc0ZvbGRlcikgeworCSAgICAgICAgICAgICAgICB0aGlzLmRvU2luZ2xlQ2xpY2sobnVsbCk7CisJICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzUHJlc2VudGF0aW9uKSB7CisJICAgICAgICAgICAgICAgIHRoaXMubG9hZERvY3VtZW50KCk7CisJICAgICAgICAgICAgfQorCSAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgIAkKKwkgICAgICAgIAlpZiAodGhpcy5pc0ZvbGRlcil7CisJICAgICAgICAJCWlmICghdGhpcy5vcGVuKSB7CisJICAgICAgICAJCQl0aGlzLmRvT3BlbigpOworCSAgICAgICAgCQl9IGVsc2UgeworCSAgICAgICAgCQkJaWYgKHNldFNlbGVjdGlvbikgeworCSAgICAgICAgICAgIAkJCWlmICh0aGlzLnNlbGVjdGVkKSB7CisJICAgICAgICAgICAgCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJJcyB0aGlzIHNlbGVjdGVkID0+IERvIEVkaXQgISEhIik7CisJICAgICAgICAgICAgCQkJCXRoaXMuc2luZ2xlQ2xpY2tTdGFydGVkID0gdHJ1ZTsKKwkgICAgICAgICAgICAJCQkgICAgbHouVGltZXIuYWRkVGltZXIoIHRoaXMuc2luZ2xlQ2xpY2tEZWxlZ2F0ZSwgMzAwICk7CisJICAgICAgICAgICAgCQkJfSBlbHNlIHsKKwkgICAgICAgICAgICAJCQkJCisJICAgICAgICAgICAgCQkJCXRoaXMuc2luZ2xlQ2xpY2tTdGFydGVkID0gdHJ1ZTsKKwkgICAgICAgICAgICAJCQkJbHouVGltZXIuYWRkVGltZXIoIHRoaXMucmVzZXRDbGlja0RlbGVnYXRlLCAzMDAgKTsKKwkgICAgICAgICAgICAJCQl9CisJICAgICAgICAJCQl9IGVsc2UgeworCSAgICAgICAgCQkJCXRoaXMuZG9DbG9zZSgpOworCSAgICAgICAgCQkJfQorCSAgICAgICAgCQl9CisJICAgICAgICAJfSBlbHNlIHsKKwkgICAgICAgIAkJaWYgKHNldFNlbGVjdGlvbikgeworCSAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VsZWN0ZWQpIHsKKwkgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiSXMgdGhpcyBzZWxlY3RlZCA9PiBEbyBFZGl0ICEhISIpOworCSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2luZ2xlQ2xpY2tTdGFydGVkID0gdHJ1ZTsKKwkgICAgICAgICAgICAgICAgICAgICAgICBsei5UaW1lci5hZGRUaW1lciggdGhpcy5zaW5nbGVDbGlja0RlbGVnYXRlLCAzMDAgKTsKKwkgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisJICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaW5nbGVDbGlja1N0YXJ0ZWQgPSB0cnVlOworCSAgICAgICAgICAgICAgICAgICAgICAgIGx6LlRpbWVyLmFkZFRpbWVyKCB0aGlzLnJlc2V0Q2xpY2tEZWxlZ2F0ZSwgMzAwICk7CisJICAgICAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgICAgIH0KKwkgICAgICAgIAl9CisJCQl9CisJCQkKKwkJCWlmIChzZXRTZWxlY3Rpb24pIHRoaXMucmVmT2JqTGlzdFJvb3Quc2VsZWN0SXRlbSh0aGlzKTsKKwkJXV0+CisJPC9tZXRob2Q+CisJCisJPG1ldGhvZCBuYW1lPSJzZWxlY3RJdGVtIj4KKwkJdGhpcy5zZWxlY3RlZCA9IHRydWU7CisJCXRoaXMuX2ZpbGVOYW1lLnNldEF0dHJpYnV0ZSgiYmdjb2xvciIsY2FudmFzLmdldFRoZW1lQ29sb3IoJ2Jhc2VNb3VzZWNvbG9yaXplcicpKTsKKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9ImRlc2VsZWN0SXRlbSI+CisJCXRoaXMuc2VsZWN0ZWQgPSBmYWxzZTsKKwkJaWYgKHRoaXNbIl9maWxlTmFtZSJdKSB7CisgICAgICAgICAgICB0aGlzLl9maWxlTmFtZS5zZXRBdHRyaWJ1dGUoImJnY29sb3IiLGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdtYWluQmFja2dyb3VuZENvbG9yJykpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud2FybigiZGVzZWxlY3RJdGVtOjogX2ZpbGVOYW1lIGlzIE5VTEwgIix0aGlzKTsKKyAgICAgICAgfQorICAgIDwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0iY2xlYXJDb250ZW50Ij4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICBmb3IgKHZhciBlZyBpbiB0aGlzLmNvbnRlbnQuc3Vidmlld3MpIHsKKyAgICAgICAgICAgICAgICB0aGlzLmNvbnRlbnQuc3Vidmlld3NbZWddLmRlc3Ryb3koKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJsb2FkRmlsZXMiPgorICAgIAk8IVtDREFUQVsKKyAgICAgICAgICAgIC8vdGhpcy5nZXRGaWxlRXhwbG9yZXJCeVJvb20uZG9DYWxsKCk7CisgICAgICAgICAgICB2YXIgZG93bmxvYWR1cmwgPSBjYW52YXMuZ2V0VXJsKCkrJ3NlcnZpY2VzL0ZpbGVTZXJ2aWNlL2dldEZpbGVFeHBsb3JlckJ5UGFyZW50U2VsZkludGVybmFsPycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArJ1NJRD0nK2NhbnZhcy5zZXNzaW9uSWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArJyZwYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQ9Jyt0aGlzLmZpbGVFeHBsb3Jlckl0ZW1JZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsnJnJvb21JZD0nK2hpYi5jdXJyZW50cm9vbWlkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKycmaXNPd25lcj0nK3RoaXMuaXNPd25lcjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5nZXRGaWxlRXhwbG9yZXJCeVBhcmVudFNlbGYuc2V0QXR0cmlidXRlKCJzcmMiLGRvd25sb2FkdXJsKTsKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJnZXRGaWxlRXhwbG9yZXJCeVBhcmVudFNlbGYgZG9SZXF1ZXN0ICIsZG93bmxvYWR1cmwpOworICAgICAgICAgICAgdGhpcy5nZXRGaWxlRXhwbG9yZXJCeVBhcmVudFNlbGYuZG9SZXF1ZXN0KCk7CisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxkYXRhc2V0IG5hbWU9ImdldEZpbGVFeHBsb3JlckJ5UGFyZW50U2VsZiIgdHlwZT0iaHR0cCIgPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9ImQiPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib25kYXRhICIsZCk7CisgICAgICAgICAgICAgICAgcGFyZW50LnJlbmRlckZpbGVzQW5kRm9sZGVycyhjYW52YXMuY3VycmVudEZpbGVFeHBsb3Jlci5wYXJzZVBhcmVudFRvUm9vbU9iamVjdChkKSk7CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPgorICAgIDwvZGF0YXNldD4KKyAgICAKKyAgICA8IS0tCisgICAgICAgIHBhcmVudC5wYXJzZVJvb3RJdGVtcyhjYW52YXMuY3VycmVudEZpbGVFeHBsb3Jlci5wYXJzZVRvUm9vbU9iamVjdChkKSk7CisJIC0tPgorCTwhLS0KKwkgICBwdWJsaWMgTGlzdDxGaWxlRXhwbG9yZXJJdGVtPiBnZXRGaWxlRXhwbG9yZXJCeVBhcmVudChTdHJpbmcgU0lELCBMb25nIHBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCwgCisJICAgICAgICAgICAgICAgTG9uZyByb29tX2lkLCBCb29sZWFuIGlzT3duZXIpIHsKKwk8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJnZXRGaWxlRXhwbG9yZXJCeVBhcmVudCIgZnVuY25hbWU9ImZpbGVzZXJ2aWNlLmdldEZpbGVFeHBsb3JlckJ5UGFyZW50IiAKKyAgICAgICAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gICAKKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBjYW52YXMuc2Vzc2lvbklkOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC5maWxlRXhwbG9yZXJJdGVtSWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4gIAorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGhpYi5jdXJyZW50cm9vbWlkOzwvbWV0aG9kPjwvbmV0cGFyYW0+ICAKKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50LmlzT3duZXI7PC9tZXRob2Q+PC9uZXRwYXJhbT4gICAgICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+ICAgIAorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImdldEZpbGVFeHBsb3JlckJ5UGFyZW50OiAiLHZhbHVlKTsKKyAgICAgICAgICAgIHBhcmVudC5yZW5kZXJGaWxlc0FuZEZvbGRlcnModmFsdWUpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAKKyAgICAgLS0+IAorICAgIAorICAgIDxtZXRob2QgbmFtZT0icmVuZGVyRmlsZXNBbmRGb2xkZXJzIiBhcmdzPSJyb29tSG9tZSI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgdGhpcy5jbGVhckNvbnRlbnQoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gRm9sZGVyIGFyZWEKKyAgICAgICAgICAgIGZvciAodmFyIGk9MDsgaTxyb29tSG9tZS5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgICAgIHZhciBmaWxlRXhwbG9yZXJJdGVtID0gcm9vbUhvbWVbaV07CisgICAgICAgICAgICAgICAgaWYgKGZpbGVFeHBsb3Jlckl0ZW0uaXNGb2xkZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgbmV3IGx6LmZvbGRlckZpbGVFeHBsb3Jlckl0ZW0odGhpcy5jb250ZW50LHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZU5hbWU6ZmlsZUV4cGxvcmVySXRlbS5maWxlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUV4cGxvcmVySXRlbUlkOmZpbGVFeHBsb3Jlckl0ZW0uZmlsZUV4cGxvcmVySXRlbUlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlSWNvbjonaWNvbl9mb2xkZXJfcnNjJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmT2JqTGlzdFJvb3Q6dGhpcy5yZWZPYmpMaXN0Um9vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZmlsZUV4cGxvcmVySXRlbS5pc0ltYWdlKSB7CisgICAgICAgICAgICAgICAgICAgIG5ldyBsei5pbWFnZUZpbGVFeHBsb3Jlckl0ZW0odGhpcy5jb250ZW50LHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNGb2xkZXI6ZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVFeHBsb3Jlckl0ZW1JZDpmaWxlRXhwbG9yZXJJdGVtLmZpbGVFeHBsb3Jlckl0ZW1JZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZU5hbWU6ZmlsZUV4cGxvcmVySXRlbS5maWxlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUhhc2g6ZmlsZUV4cGxvcmVySXRlbS5maWxlSGFzaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNGb2xkZXI6ZmFsc2UsaXNJbWFnZTp0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlSWNvbjonZmlsZV9leHBsb3Jlcl9pbWFnZV9yc2MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZPYmpMaXN0Um9vdDp0aGlzLnJlZk9iakxpc3RSb290CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChmaWxlRXhwbG9yZXJJdGVtLmlzUHJlc2VudGF0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIG5ldyBsei5kb2N1bWVudEZpbGVFeHBsb3Jlckl0ZW0odGhpcy5jb250ZW50LHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNGb2xkZXI6ZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVFeHBsb3Jlckl0ZW1JZDpmaWxlRXhwbG9yZXJJdGVtLmZpbGVFeHBsb3Jlckl0ZW1JZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZU5hbWU6ZmlsZUV4cGxvcmVySXRlbS5maWxlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUhhc2g6ZmlsZUV4cGxvcmVySXRlbS5maWxlSGFzaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNGb2xkZXI6ZmFsc2UsaXNQcmVzZW50YXRpb246dHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUljb246J2ZpbGVfZXhwbG9yZXJfZG9jdW1lbnRfcnNjJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmT2JqTGlzdFJvb3Q6dGhpcy5yZWZPYmpMaXN0Um9vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZmlsZUV4cGxvcmVySXRlbS5pc1ZpZGVvKSB7CisgICAgICAgICAgICAgICAgICAgIG5ldyBsei52aWRlb0ZpbGVFeHBsb3Jlckl0ZW0odGhpcy5jb250ZW50LHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNGb2xkZXI6ZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzVmlkZW86dHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUV4cGxvcmVySXRlbUlkOmZpbGVFeHBsb3Jlckl0ZW0uZmlsZUV4cGxvcmVySXRlbUlkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlTmFtZTpmaWxlRXhwbG9yZXJJdGVtLmZpbGVOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlSGFzaDpmaWxlRXhwbG9yZXJJdGVtLmZpbGVIYXNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0ZvbGRlcjpmYWxzZSxpc0ltYWdlOnRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVJY29uOidmaWxlX2V4cGxvcmVyX3ZpZGVvX3JzYycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsdkhlaWdodDpmaWxlRXhwbG9yZXJJdGVtLmZsdkhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmx2V2lkdGg6ZmlsZUV4cGxvcmVySXRlbS5mbHZXaWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmT2JqTGlzdFJvb3Q6dGhpcy5yZWZPYmpMaXN0Um9vdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZmlsZUV4cGxvcmVySXRlbS5pc1N0b3JlZFdtbEZpbGUpIHsgCisgICAgICAgICAgICAgICAgCW5ldyBsei53bWxGaWxlRXhwbG9yZXJJdGVtKHRoaXMuY29udGVudCx7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRm9sZGVyOmZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlRXhwbG9yZXJJdGVtSWQ6ZmlsZUV4cGxvcmVySXRlbS5maWxlRXhwbG9yZXJJdGVtSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVOYW1lOmZpbGVFeHBsb3Jlckl0ZW0uZmlsZU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVJY29uOidmaWxlX2V4cGxvcmVyX3dtbF9yc2MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1dtbEZpbGU6IHRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZk9iakxpc3RSb290OnRoaXMucmVmT2JqTGlzdFJvb3QgICAgICAgICAgICAgICAgCQorICAgICAgICAgICAgCQkJCQkJCX0pOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZmlsZUV4cGxvcmVySXRlbS5pc0NoYXJ0KSB7IAorICAgICAgICAgICAgICAgIAluZXcgbHouY2hhcnRGaWxlRXhwbG9yZXJJdGVtKHRoaXMuY29udGVudCx7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRm9sZGVyOmZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlRXhwbG9yZXJJdGVtSWQ6ZmlsZUV4cGxvcmVySXRlbS5maWxlRXhwbG9yZXJJdGVtSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVOYW1lOmZpbGVFeHBsb3Jlckl0ZW0uZmlsZU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVJY29uOidmaWxlX2V4cGxvcmVyX2NoYXJ0X3JzYycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZk9iakxpc3RSb290OnRoaXMucmVmT2JqTGlzdFJvb3QgICAgICAgICAgICAgICAgCQorICAgICAgICAgICAgCQkJCQkJCX0pOworCisgICAgICAgICAgICAJfQorICAgICAgICAgICAgfQorICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKwkKKwk8dmlldyBuYW1lPSJpY29uX2ZvbGRlcl9wcmUiIAorCQkgIHZpc2liaWxpdHk9IiRvbmNleyAocGFyZW50LmlzRm9sZGVyKSA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nIH0iCisJCSAgcmVzb3VyY2U9Imljb25fZm9sZGVyX3ByZV9yc2MiIGZyYW1lPSIxIiA+CisJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorCQkJcGFyZW50LnRvZ2dsZU9wZW4oZmFsc2UpOworCQk8L2hhbmRsZXI+CisJPC92aWV3PgorCQorCTx2aWV3IG5hbWU9Il9mb2xkZXJJY29uIiByZXNvdXJjZT0iJG9uY2V7IHBhcmVudC5maWxlSWNvbiB9IiB4PSIxNiIgeT0iMiIgPgorCQk8aGFuZGxlciBuYW1lPSJvbm1vdXNlZG93biI+CisJCQlpZiAocGFyZW50LmlzUm9vdCkgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGx6LlRpbWVyLmFkZFRpbWVyKCBwYXJlbnQubW91c2VEb3duQ2xpY2tEZWxlZ2F0ZSwgMzAwICk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZXVwIj4KKyAgICAgICAgCWlmIChwYXJlbnQuaXNSb290KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbHouVGltZXIucmVtb3ZlVGltZXIoIHBhcmVudC5tb3VzZURvd25DbGlja0RlbGVnYXRlICk7CisgICAgICAgIDwvaGFuZGxlcj4KKwkJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisJCQlwYXJlbnQudG9nZ2xlT3BlbihmYWxzZSk7CisJCTwvaGFuZGxlcj4KKwk8L3ZpZXc+CisJCis8L2NsYXNzPgorCisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2ZpbGVleHBsb3Jlci90cmVlaXRlbXMvY2hhcnRGaWxlRXhwbG9yZXJJdGVtLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2ZpbGVleHBsb3Jlci90cmVlaXRlbXMvY2hhcnRGaWxlRXhwbG9yZXJJdGVtLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDdlNmYyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvZmlsZWV4cGxvcmVyL3RyZWVpdGVtcy9jaGFydEZpbGVFeHBsb3Jlckl0ZW0ubHp4CkBAIC0wLDAgKzEsOTIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKyAgPGNsYXNzIG5hbWU9ImNoYXJ0RmlsZUV4cGxvcmVySXRlbSIgZXh0ZW5kcz0iYmFzZUZpbGVFeHBsb3Jlckl0ZW0iCisgICAgaXNGb2xkZXI9InRydWUiPgorCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpc0NoYXJ0RmlsZSIgdHlwZT0iYm9vbGVhbiIgdmFsdWU9InRydWUiIC8+CisKKyAgICA8dGV4dCBuYW1lPSJfZmlsZU5hbWUiIHg9IjM2IiB0ZXh0PSIkeyBwYXJlbnQuZmlsZU5hbWUgfSIKKyAgICAgIGZvbnRzaXplPSIxMCIgcmVzaXplPSJ0cnVlIiB5PSIxIj4KKyAgICAgIDxjb250ZXh0bWVudT4KKworICAgICAgICA8Y29udGV4dG1lbnVpdGVtIGNhcHRpb249IiRvbmNleyBjYW52YXMuZ2V0TGFiZWxOYW1lKDcxMSkgfSIKKyAgICAgICAgICBvbnNlbGVjdD0icGFyZW50LnBhcmVudC5wYXJlbnQuZWRpdEZvbGRlck5hbWUoKSIgLz4KKworICAgICAgICA8IS0tIDxjb250ZXh0bWVudWl0ZW0gbmFtZT0iX29wZW5Eb2N1bWVudCIgY2FwdGlvbj0iJG9uY2V7IGNhbnZhcy5nZXRMYWJlbE5hbWUoNzE2KSAKKyAgICAgICAgICB9IiBzZXBhcmF0b3JiZWZvcmU9InRydWUiIG9uc2VsZWN0PSJwYXJlbnQucGFyZW50LnBhcmVudC5sb2FkRG9jdW1lbnQoKSIgCisgICAgICAgICAgLz4gLS0+CisKKyAgICAgICAgPGNvbnRleHRtZW51aXRlbSBjYXB0aW9uPSIkb25jZXsgY2FudmFzLmdldExhYmVsTmFtZSg3MDgpIH0iCisgICAgICAgICAgc2VwYXJhdG9yYmVmb3JlPSJ0cnVlIiBvbnNlbGVjdD0icGFyZW50LnBhcmVudC5wYXJlbnQuYWRkRmlsZSgpIiAvPgorCisgICAgICAgIDxjb250ZXh0bWVudWl0ZW0gY2FwdGlvbj0iJG9uY2V7IGNhbnZhcy5nZXRMYWJlbE5hbWUoNzA5KSB9IgorICAgICAgICAgIG9uc2VsZWN0PSJwYXJlbnQucGFyZW50LnBhcmVudC5hZGRGb2xkZXIoKSIgLz4KKworICAgICAgICA8Y29udGV4dG1lbnVpdGVtIGNhcHRpb249IiRvbmNleyBjYW52YXMuZ2V0TGFiZWxOYW1lKDcxMCkgfSIKKyAgICAgICAgICBvbnNlbGVjdD0icGFyZW50LnBhcmVudC5wYXJlbnQuZGVsZXRlRmlsZSg3MTkpIiAvPgorCisgICAgICAgIDxjb250ZXh0bWVudWl0ZW0gY2FwdGlvbj0iJG9uY2V7IGNhbnZhcy5nZXRMYWJlbE5hbWUoMTMxNCkgfSIKKyAgICAgICAgICBvbnNlbGVjdD0icGFyZW50LnBhcmVudC5wYXJlbnQubG9hZENoYXJ0KCkiIC8+CisKKyAgICAgIDwvY29udGV4dG1lbnU+CisKKyAgICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2V0cmFja292ZXIiPgorICAgICAgICBEZWJ1Zy53cml0ZSgib25tb3VzZXRyYWNrb3ZlciIpOworICAgICAgICBjYW52YXMuY3VycmVudEltYWdlc0xpc3RkcmF3LmN1cnJlbnREcmFnSXRlbS5zZW5kT3Zlckl0ZW0ocGFyZW50KTsKKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoImJnY29sb3IiLDB4OTNGRTkyKTsKKyAgICAgIDwvaGFuZGxlcj4KKworICAgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZXRyYWNrb3V0Ij4KKyAgICAgICAgRGVidWcud3JpdGUoIm9ubW91c2V0cmFja291dCIpOworICAgICAgICBjYW52YXMuY3VycmVudEltYWdlc0xpc3RkcmF3LmN1cnJlbnREcmFnSXRlbS5zZW5kT3V0SXRlbShwYXJlbnQpOworICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgiYmdjb2xvciIsY2FudmFzLmdldFRoZW1lQ29sb3IoJ21haW5CYWNrZ3JvdW5kQ29sb3InKSk7CisgICAgICA8L2hhbmRsZXI+CisKKyAgICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2V0cmFja3VwIj4KKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9ubW91c2V0cmFja3VwIik7CisgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJiZ2NvbG9yIixjYW52YXMuZ2V0VGhlbWVDb2xvcignbWFpbkJhY2tncm91bmRDb2xvcicpKTsKKyAgICAgIDwvaGFuZGxlcj4KKworICAgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZWRvd24iPgorICAgICAgICBpZiAocGFyZW50LmlzUm9vdCkgeworICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBsei5UaW1lci5hZGRUaW1lcihwYXJlbnQubW91c2VEb3duQ2xpY2tEZWxlZ2F0ZSwgMzAwKTsKKyAgICAgIDwvaGFuZGxlcj4KKyAgICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2V1cCI+CisgICAgICAgIGlmIChwYXJlbnQuaXNSb290KSB7CisgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGx6LlRpbWVyLnJlbW92ZVRpbWVyKCBwYXJlbnQubW91c2VEb3duQ2xpY2tEZWxlZ2F0ZSApOworICAgICAgPC9oYW5kbGVyPgorICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgIHBhcmVudC50b2dnbGVPcGVuKHRydWUpOworICAgICAgPC9oYW5kbGVyPgorICAgIDwvdGV4dD4KKworICAgIDx2aWV3IG5hbWU9ImNvbnRlbnQiIHg9IjEyIiB5PSIxOCIgbGF5b3V0PSJheGlzOnk7aW5zZXQ6MSIKKyAgICAgIHZpc2liaWxpdHk9ImhpZGRlbiI+CisgICAgPC92aWV3PgorICA8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvdHJlZWl0ZW1zL2RvY3VtZW50RmlsZUV4cGxvcmVySXRlbS5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvdHJlZWl0ZW1zL2RvY3VtZW50RmlsZUV4cGxvcmVySXRlbS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTk5YzI5NgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2ZpbGVleHBsb3Jlci90cmVlaXRlbXMvZG9jdW1lbnRGaWxlRXhwbG9yZXJJdGVtLmx6eApAQCAtMCwwICsxLDk0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCisgCis8Y2xhc3MgbmFtZT0iZG9jdW1lbnRGaWxlRXhwbG9yZXJJdGVtIiBleHRlbmRzPSJiYXNlRmlsZUV4cGxvcmVySXRlbSIgaXNGb2xkZXI9InRydWUiPgorCQorCTxtZXRob2QgbmFtZT0iZm9ybWF0VVJMIiBhcmdzPSJmaWxlbmFtZSI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgdmFyIHVwbG9hZG1vZHVsZWltZ2ZvbGRlclZhciA9ICcvJyArIHRoaXMuZmlsZUhhc2g7CisgICAgICAgICAgICB2YXIgZG93bmxvYWR1cmwgPSBjYW52YXMuZ2V0VXJsKCkrJ0Rvd25sb2FkSGFuZGxlcj8nICsKKyAgICAgICAgICAgICAgICAnZmlsZU5hbWU9JyArIGVuY29kZVVSSUNvbXBvbmVudCh0aGlzLmZpbGVIYXNoICsgIi5zd2YiKSArCisgICAgICAgICAgICAgICAgJyZtb2R1bGVOYW1lPScgKyAndmlkZW9jb25mMScgKyAKKyAgICAgICAgICAgICAgICAnJnBhcmVudFBhdGg9JyArIGVuY29kZVVSSUNvbXBvbmVudCh1cGxvYWRtb2R1bGVpbWdmb2xkZXJWYXIgKyAnLycgKSsKKyAgICAgICAgICAgICAgICAnJnJvb21faWQ9ZmlsZXMnKyAKKyAgICAgICAgICAgICAgICAnJnNpZD0nK2NhbnZhcy5zZXNzaW9uSWQ7CisgICAgICAgICAgICAvLy8vRGVidWcud3JpdGUoImRvd25sb2FkdXJsOiAiLGRvd25sb2FkdXJsKTsKKyAgICAgICAgICAgIHJldHVybiBkb3dubG9hZHVybDsKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+ICAgIAorICAgIAorCTxtZXRob2QgbmFtZT0ibG9hZERvY3VtZW50VG9XaGl0ZWJvYXJkIj4KKwkJaWYgKGNhbnZhcy5pc21vZGVyYXRvciB8fCBjYW52YXMuaXNBbGxvd2VkVG9EcmF3KSB7CisgICAgCQl2YXIgdXBsb2FkbW9kdWxlaW1nZm9sZGVyVmFyID0gJy8nICsgdGhpcy5maWxlSGFzaDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImxvYWREb2N1bWVudFRvV2hpdGVib2FyZCAiLHRoaXMuZmlsZU5hbWUpOworICAgICAgICAgICAgCisgICAgCQljYW52YXMuX2RyYXdhcmVhLmxvYWRTV0ZQcmVzZW50YXRpb25TeW5jZWQodGhpcy5mb3JtYXRVUkwodGhpcy5maWxlSGFzaCksdGhpcy5maWxlSGFzaCArICIuc3dmIiwKKyAgICAJCSAgICAgICAgICAgICAgInZpZGVvY29uZjEiLHVwbG9hZG1vZHVsZWltZ2ZvbGRlclZhciwiZmlsZXMiLGhpYi5jb25mZXJlbmNlZG9tYWluLDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZmlsZU5hbWUpOworCQl9IGVsc2UgeworCQkJbmV3IGx6LmVycm9yTW9kZXJhdG9yUG9wdXAoY2FudmFzLHtlcnJvcjpjYW52YXMuZ2V0TGFiZWxOYW1lKDcyMSl9KTsKKwkJfQorCTwvbWV0aG9kPgorCQorCTx0ZXh0IG5hbWU9Il9maWxlTmFtZSIgeD0iMzYiIHRleHQ9IiR7IHBhcmVudC5maWxlTmFtZSB9IiBmb250c2l6ZT0iMTAiIHJlc2l6ZT0idHJ1ZSIgeT0iMSI+CisJCTxjb250ZXh0bWVudT4KKwkJCQorCQkJPGNvbnRleHRtZW51aXRlbSBjYXB0aW9uPSIkb25jZXsgY2FudmFzLmdldExhYmVsTmFtZSg3MTEpIH0iIAorCQkJCQkJCSBvbnNlbGVjdD0icGFyZW50LnBhcmVudC5wYXJlbnQuZWRpdEZvbGRlck5hbWUoKSIgLz4KKwkJCQorICAgICAgICAgICAgPCEtLQkKKyAgICAgICAgICAgIC8vTG9hZCBGaWxlIFRvIFdoaXRlYm9hcmQgbWlzc2luZwkKKyAgICAgICAgICAgICAtLT4JIAorCQkJPGNvbnRleHRtZW51aXRlbSBuYW1lPSJfb3BlbkRvY3VtZW50IgorCQkJCSAgICAgICAgICAgICBjYXB0aW9uPSIkb25jZXsgY2FudmFzLmdldExhYmVsTmFtZSg3MTYpIH0iIAorCQkJCQkJCSBzZXBhcmF0b3JiZWZvcmU9InRydWUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uc2VsZWN0PSJwYXJlbnQucGFyZW50LnBhcmVudC5sb2FkRG9jdW1lbnQoKSIgLz4KKyAgICAgICAgICAgIAkJCQkgCisgICAgICAgICAgICA8Y29udGV4dG1lbnVpdGVtIGNhcHRpb249IiRvbmNleyBjYW52YXMuZ2V0TGFiZWxOYW1lKDcxOSkgfSIgCisgICAgICAgICAgICAJCQkJIG9uc2VsZWN0PSJwYXJlbnQucGFyZW50LnBhcmVudC5kZWxldGVGaWxlKDcxOSkiIC8+CisgICAgICAgICAgICAJCQkJIAorICAgICAgICA8L2NvbnRleHRtZW51PgorICAgICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZWRvd24iPgorICAgICAgICAJaWYgKHBhcmVudC5pc1Jvb3QpIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsei5UaW1lci5hZGRUaW1lciggcGFyZW50Lm1vdXNlRG93bkNsaWNrRGVsZWdhdGUsIDMwMCApOworICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2V1cCI+CisgICAgICAgIAlpZiAocGFyZW50LmlzUm9vdCkgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGx6LlRpbWVyLnJlbW92ZVRpbWVyKCBwYXJlbnQubW91c2VEb3duQ2xpY2tEZWxlZ2F0ZSApOworICAgICAgICA8L2hhbmRsZXI+CisJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgcGFyZW50LnRvZ2dsZU9wZW4odHJ1ZSk7CisgICAgICAgIDwvaGFuZGxlcj4KKwk8L3RleHQ+CisJCisKKzwvY2xhc3M+CisKKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvZmlsZWV4cGxvcmVyL3RyZWVpdGVtcy9mb2xkZXJGaWxlRXhwbG9yZXJJdGVtLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2ZpbGVleHBsb3Jlci90cmVlaXRlbXMvZm9sZGVyRmlsZUV4cGxvcmVySXRlbS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZjZTcxNwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2ZpbGVleHBsb3Jlci90cmVlaXRlbXMvZm9sZGVyRmlsZUV4cGxvcmVySXRlbS5sengKQEAgLTAsMCArMSw5MCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9ImZvbGRlckZpbGVFeHBsb3Jlckl0ZW0iIGV4dGVuZHM9ImJhc2VGaWxlRXhwbG9yZXJJdGVtIiBpc0ZvbGRlcj0idHJ1ZSI+CisJCisJPHRleHQgbmFtZT0iX2ZpbGVOYW1lIiB4PSIzNiIgdGV4dD0iJHsgcGFyZW50LmZpbGVOYW1lIH0iIGZvbnRzaXplPSIxMCIgcmVzaXplPSJ0cnVlIiB5PSIxIj4KKwkJPGNvbnRleHRtZW51PgorCQkJCisJCQk8Y29udGV4dG1lbnVpdGVtIGNhcHRpb249IiRvbmNleyBjYW52YXMuZ2V0TGFiZWxOYW1lKDcxMSkgfSIgCisJCQkJCQkJIG9uc2VsZWN0PSJwYXJlbnQucGFyZW50LnBhcmVudC5lZGl0Rm9sZGVyTmFtZSgpIiAvPgorCQkJCisJCQk8IS0tCQkJIAorCQkJPGNvbnRleHRtZW51aXRlbSBuYW1lPSJfb3BlbkRvY3VtZW50IgorCQkJCSAgICAgICAgICAgICBjYXB0aW9uPSIkb25jZXsgY2FudmFzLmdldExhYmVsTmFtZSg3MTYpIH0iIAorCQkJCQkJCSBzZXBhcmF0b3JiZWZvcmU9InRydWUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uc2VsZWN0PSJwYXJlbnQucGFyZW50LnBhcmVudC5sb2FkRG9jdW1lbnQoKSIgLz4KKyAgICAgICAgICAgICAtLT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkJCQkgCisgICAgICAgICAgICA8Y29udGV4dG1lbnVpdGVtIGNhcHRpb249IiRvbmNleyBjYW52YXMuZ2V0TGFiZWxOYW1lKDcwOCkgfSIgCisgICAgICAgICAgICAJCQkJIHNlcGFyYXRvcmJlZm9yZT0idHJ1ZSIKKyAgICAgICAgICAgIAkJCQkgb25zZWxlY3Q9InBhcmVudC5wYXJlbnQucGFyZW50LmFkZEZpbGUoKSIgLz4KKyAgICAgICAgICAgIAkJCQkgCisgICAgICAgICAgICA8Y29udGV4dG1lbnVpdGVtIGNhcHRpb249IiRvbmNleyBjYW52YXMuZ2V0TGFiZWxOYW1lKDcwOSkgfSIgCisgICAgICAgICAgICAJCQkJIG9uc2VsZWN0PSJwYXJlbnQucGFyZW50LnBhcmVudC5hZGRGb2xkZXIoKSIgLz4KKyAgICAgICAgICAgIAkJCQkgCisgICAgICAgICAgICA8Y29udGV4dG1lbnVpdGVtIGNhcHRpb249IiRvbmNleyBjYW52YXMuZ2V0TGFiZWxOYW1lKDcxMCkgfSIgCisgICAgICAgICAgICAJCQkJIG9uc2VsZWN0PSJwYXJlbnQucGFyZW50LnBhcmVudC5kZWxldGVGaWxlKDcxOSkiIC8+CisgICAgICAgICAgICAJCQkJIAorICAgICAgICA8L2NvbnRleHRtZW51PgorICAgICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZXRyYWNrb3ZlciI+CisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbm1vdXNldHJhY2tvdmVyIik7CisgICAgICAgICAgICBjYW52YXMuY3VycmVudEltYWdlc0xpc3RkcmF3LmN1cnJlbnREcmFnSXRlbS5zZW5kT3Zlckl0ZW0ocGFyZW50KTsKKyAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJiZ2NvbG9yIiwweDkzRkU5Mik7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2V0cmFja291dCI+CisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbm1vdXNldHJhY2tvdXQiKTsKKyAgICAgICAgICAgIGNhbnZhcy5jdXJyZW50SW1hZ2VzTGlzdGRyYXcuY3VycmVudERyYWdJdGVtLnNlbmRPdXRJdGVtKHBhcmVudCk7CisgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgiYmdjb2xvciIsY2FudmFzLmdldFRoZW1lQ29sb3IoJ21haW5CYWNrZ3JvdW5kQ29sb3InKSk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2V0cmFja3VwIj4KKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbm1vdXNldHJhY2t1cCIpOworICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoImJnY29sb3IiLGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdtYWluQmFja2dyb3VuZENvbG9yJykpOworICAgICAgICA8L2hhbmRsZXI+IAorICAgICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZWRvd24iPgorICAgICAgICAJaWYgKHBhcmVudC5pc1Jvb3QpIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsei5UaW1lci5hZGRUaW1lciggcGFyZW50Lm1vdXNlRG93bkNsaWNrRGVsZWdhdGUsIDMwMCApOworICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2V1cCI+CisgICAgICAgIAlpZiAocGFyZW50LmlzUm9vdCkgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGx6LlRpbWVyLnJlbW92ZVRpbWVyKCBwYXJlbnQubW91c2VEb3duQ2xpY2tEZWxlZ2F0ZSApOworICAgICAgICA8L2hhbmRsZXI+CisJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgcGFyZW50LnRvZ2dsZU9wZW4odHJ1ZSk7CisgICAgICAgIDwvaGFuZGxlcj4KKwk8L3RleHQ+CisJCisJPHZpZXcgbmFtZT0iY29udGVudCIgeD0iMTIiIHk9IjE4IiBsYXlvdXQ9ImF4aXM6eTtpbnNldDoxIiB2aXNpYmlsaXR5PSJoaWRkZW4iPgorCQkKKwk8L3ZpZXc+Cis8L2NsYXNzPgorCisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2ZpbGVleHBsb3Jlci90cmVlaXRlbXMvaW1hZ2VGaWxlRXhwbG9yZXJJdGVtLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2ZpbGVleHBsb3Jlci90cmVlaXRlbXMvaW1hZ2VGaWxlRXhwbG9yZXJJdGVtLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDhiYTYwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvZmlsZWV4cGxvcmVyL3RyZWVpdGVtcy9pbWFnZUZpbGVFeHBsb3Jlckl0ZW0ubHp4CkBAIC0wLDAgKzEsODggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzxjbGFzcyBuYW1lPSJpbWFnZUZpbGVFeHBsb3Jlckl0ZW0iIGV4dGVuZHM9ImJhc2VGaWxlRXhwbG9yZXJJdGVtIiBpc0ZvbGRlcj0idHJ1ZSI+CisJCisgICAgPG1ldGhvZCBuYW1lPSJnZW5lcmF0ZUZpbGVMaW5rIj4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICByZXR1cm4gY2FudmFzLmdldFVybCgpKydEb3dubG9hZEhhbmRsZXI/JyArCisgICAgICAgICAgICAJCSdmaWxlTmFtZT0nKyB0aGlzLmZpbGVIYXNoICsgCisgICAgICAgICAgICAgICAgICAgICcmbW9kdWxlTmFtZT0nKyAidmlkZW9jb25mMSIgKworICAgICAgICAgICAgICAgICAgICAnJnBhcmVudFBhdGg9JysgJy8nICsKKyAgICAgICAgICAgICAgICAgICAgJyZyb29tX2lkPWZpbGVzJyArCisgICAgICAgICAgICAgICAgICAgICcmc2lkPScrY2FudmFzLnNlc3Npb25JZDsKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisJPG1ldGhvZCBuYW1lPSJsb2FkSW1hZ2VUb1doaXRlYm9hcmQiPgorCQlpZiAoY2FudmFzLmlzbW9kZXJhdG9yIHx8IGNhbnZhcy5pc0FsbG93ZWRUb0RyYXcpIHsKKyAgICAJCXZhciBtb3VzZV94ID0gY2FudmFzLl9kcmF3YXJlYS5nZXRNb3VzZSgieCIpOworICAgIAkJdmFyIG1vdXNlX3kgPSBjYW52YXMuX2RyYXdhcmVhLmdldE1vdXNlKCJ5Iik7CisgICAgCQljYW52YXMuX2RyYXdhcmVhLnBhcmVudC5wYXJlbnQuY2xlYXJBcmVhQW5kQWRkSW1hZ2UodGhpcy5nZW5lcmF0ZUZpbGVMaW5rKCksbW91c2VfeCxtb3VzZV95LAorICAgIAkJICAgICAgICAgIGNhbnZhcy5nZXRVcmwoKSsnRG93bmxvYWRIYW5kbGVyJywKKyAgICAJCSAgICAgICAgICB0aGlzLmZpbGVIYXNoLCJ2aWRlb2NvbmYxIiwiLyIsImZpbGVzIixoaWIuY29uZmVyZW5jZWRvbWFpbik7CisJCX0gZWxzZSB7CisgICAgICAgICAgICBuZXcgbHouZXJyb3JNb2RlcmF0b3JQb3B1cChjYW52YXMse2Vycm9yOmNhbnZhcy5nZXRMYWJlbE5hbWUoNzIxKX0pOworICAgICAgICB9CisJPC9tZXRob2Q+CisJCisJPHRleHQgbmFtZT0iX2ZpbGVOYW1lIiB4PSIzNiIgdGV4dD0iJHsgcGFyZW50LmZpbGVOYW1lIH0iIGZvbnRzaXplPSIxMCIgcmVzaXplPSJ0cnVlIiB5PSIxIj4KKwkJPGNvbnRleHRtZW51PgorCQkJCisJCQk8Y29udGV4dG1lbnVpdGVtIGNhcHRpb249IiRvbmNleyBjYW52YXMuZ2V0TGFiZWxOYW1lKDcxMSkgfSIgCisJCQkJCQkJIG9uc2VsZWN0PSJwYXJlbnQucGFyZW50LnBhcmVudC5lZGl0Rm9sZGVyTmFtZSgpIiAvPgorCQkJCisJCQk8IS0tCQorCQkJLy9Mb2FkIEZpbGUgVG8gV2hpdGVib2FyZCBtaXNzaW5nCQkgCisJCQk8Y29udGV4dG1lbnVpdGVtIG5hbWU9Il9vcGVuRG9jdW1lbnQiCisJCQkJICAgICAgICAgICAgIGNhcHRpb249IiRvbmNleyBjYW52YXMuZ2V0TGFiZWxOYW1lKDcxNikgfSIgCisJCQkJCQkJIHNlcGFyYXRvcmJlZm9yZT0idHJ1ZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25zZWxlY3Q9InBhcmVudC5wYXJlbnQucGFyZW50LmxvYWREb2N1bWVudCgpIiAvPgorICAgICAgICAgICAgIC0tPgorICAgICAgICAgICAgCQkJCSAKKyAgICAgICAgICAgIDxjb250ZXh0bWVudWl0ZW0gY2FwdGlvbj0iJG9uY2V7IGNhbnZhcy5nZXRMYWJlbE5hbWUoNzE5KSB9IiAKKyAgICAgICAgICAgIAkJCQkgb25zZWxlY3Q9InBhcmVudC5wYXJlbnQucGFyZW50LmRlbGV0ZUZpbGUoNzE5KSIgLz4KKyAgICAgICAgICAgIAkJCQkgCisgICAgICAgIDwvY29udGV4dG1lbnU+CisgICAgICAgIAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNlZG93biI+CisgICAgICAgIAlpZiAocGFyZW50LmlzUm9vdCkgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGx6LlRpbWVyLmFkZFRpbWVyKCBwYXJlbnQubW91c2VEb3duQ2xpY2tEZWxlZ2F0ZSwgMzAwICk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZXVwIj4KKyAgICAgICAgCWlmIChwYXJlbnQuaXNSb290KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbHouVGltZXIucmVtb3ZlVGltZXIoIHBhcmVudC5tb3VzZURvd25DbGlja0RlbGVnYXRlICk7CisgICAgICAgIDwvaGFuZGxlcj4KKwkJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICBwYXJlbnQudG9nZ2xlT3Blbih0cnVlKTsKKyAgICAgICAgPC9oYW5kbGVyPgorCTwvdGV4dD4KKwkKKworPC9jbGFzcz4KKworCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvdHJlZWl0ZW1zL2xpYnJhcnkubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvZmlsZWV4cGxvcmVyL3RyZWVpdGVtcy9saWJyYXJ5Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDg1OGU5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvZmlsZWV4cGxvcmVyL3RyZWVpdGVtcy9saWJyYXJ5Lmx6eApAQCAtMCwwICsxLDMxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCQorICAgIDxpbmNsdWRlIGhyZWY9ImJhc2VGaWxlRXhwbG9yZXJJdGVtLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJmb2xkZXJGaWxlRXhwbG9yZXJJdGVtLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJpbWFnZUZpbGVFeHBsb3Jlckl0ZW0ubHp4IiAvPgorICAgIDxpbmNsdWRlIGhyZWY9InZpZGVvRmlsZUV4cGxvcmVySXRlbS5sengiIC8+CisgICAgPGluY2x1ZGUgaHJlZj0iZG9jdW1lbnRGaWxlRXhwbG9yZXJJdGVtLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJyb290RmlsZUV4cGxvcmVySXRlbS5sengiIC8+CisgICAgPGluY2x1ZGUgaHJlZj0id21sRmlsZUV4cGxvcmVySXRlbS5sengiIC8+CisgICAgCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvdHJlZWl0ZW1zL3Jvb3RGaWxlRXhwbG9yZXJJdGVtLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2ZpbGVleHBsb3Jlci90cmVlaXRlbXMvcm9vdEZpbGVFeHBsb3Jlckl0ZW0ubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlY2IwZWYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvdHJlZWl0ZW1zL3Jvb3RGaWxlRXhwbG9yZXJJdGVtLmx6eApAQCAtMCwwICsxLDY1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8Y2xhc3MgbmFtZT0icm9vdEZpbGVFeHBsb3Jlckl0ZW0iIGV4dGVuZHM9ImJhc2VGaWxlRXhwbG9yZXJJdGVtIiBpc0ZvbGRlcj0idHJ1ZSIgaXNSb290PSJ0cnVlIj4KKwkKKwk8dGV4dCBuYW1lPSJfZmlsZU5hbWUiIHg9IjM2IiB0ZXh0PSIkeyBwYXJlbnQuZmlsZU5hbWUgfSIgZm9udHNpemU9IjEwIiByZXNpemU9InRydWUiIHk9IjEiPgorCQk8Y29udGV4dG1lbnU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJCQkJIAorICAgICAgICAgICAgPGNvbnRleHRtZW51aXRlbSBjYXB0aW9uPSIkb25jZXsgY2FudmFzLmdldExhYmVsTmFtZSg3MDgpIH0iIAorICAgICAgICAgICAgCQkJCSBzZXBhcmF0b3JiZWZvcmU9InRydWUiCisgICAgICAgICAgICAJCQkJIG9uc2VsZWN0PSJwYXJlbnQucGFyZW50LnBhcmVudC5hZGRGaWxlKCkiIC8+CisgICAgICAgICAgICAJCQkJIAorICAgICAgICAgICAgPGNvbnRleHRtZW51aXRlbSBjYXB0aW9uPSIkb25jZXsgY2FudmFzLmdldExhYmVsTmFtZSg3MDkpIH0iIAorICAgICAgICAgICAgCQkJCSBvbnNlbGVjdD0icGFyZW50LnBhcmVudC5wYXJlbnQuYWRkRm9sZGVyKCkiIC8+CisgICAgICAgICAgICAJCQkJIAorICAgICAgICA8L2NvbnRleHRtZW51PgorICAgICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZXRyYWNrb3ZlciI+CisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbm1vdXNldHJhY2tvdmVyIik7CisgICAgICAgICAgICBjYW52YXMuY3VycmVudEltYWdlc0xpc3RkcmF3LmN1cnJlbnREcmFnSXRlbS5zZW5kT3Zlckl0ZW0ocGFyZW50KTsKKyAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJiZ2NvbG9yIiwweDkzRkU5Mik7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2V0cmFja291dCI+CisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbm1vdXNldHJhY2tvdXQiKTsKKyAgICAgICAgICAgIGNhbnZhcy5jdXJyZW50SW1hZ2VzTGlzdGRyYXcuY3VycmVudERyYWdJdGVtLnNlbmRPdXRJdGVtKHBhcmVudCk7CisgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgiYmdjb2xvciIsY2FudmFzLmdldFRoZW1lQ29sb3IoJ21haW5CYWNrZ3JvdW5kQ29sb3InKSk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2V0cmFja3VwIj4KKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbm1vdXNldHJhY2t1cCIpOworICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoImJnY29sb3IiLGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdtYWluQmFja2dyb3VuZENvbG9yJykpOworICAgICAgICA8L2hhbmRsZXI+IAorICAgICAgICAKKwkJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICBwYXJlbnQudG9nZ2xlT3Blbih0cnVlKTsKKyAgICAgICAgPC9oYW5kbGVyPgorCTwvdGV4dD4KKwkKKwk8dmlldyBuYW1lPSJjb250ZW50IiB4PSIxMiIgeT0iMTgiIGxheW91dD0iYXhpczp5O2luc2V0OjEiIHZpc2liaWxpdHk9ImhpZGRlbiI+CisJCQorCTwvdmlldz4KKzwvY2xhc3M+CisKKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvZmlsZWV4cGxvcmVyL3RyZWVpdGVtcy92aWRlb0ZpbGVFeHBsb3Jlckl0ZW0ubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvZmlsZWV4cGxvcmVyL3RyZWVpdGVtcy92aWRlb0ZpbGVFeHBsb3Jlckl0ZW0ubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlZmZlY2UKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9maWxlZXhwbG9yZXIvdHJlZWl0ZW1zL3ZpZGVvRmlsZUV4cGxvcmVySXRlbS5sengKQEAgLTAsMCArMSw5MSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9InZpZGVvRmlsZUV4cGxvcmVySXRlbSIgZXh0ZW5kcz0iYmFzZUZpbGVFeHBsb3Jlckl0ZW0iIGlzRm9sZGVyPSJ0cnVlIiBpc1ZpZGVvPSJ0cnVlIj4KKwkKKyAgICA8bWV0aG9kIG5hbWU9ImdlbmVyYXRlRmlsZUxpbmsiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIHJldHVybiBjYW52YXMuZ2V0VXJsKCkrJ0Rvd25sb2FkSGFuZGxlcj8nICsKKyAgICAgICAgICAgIAkJJ2ZpbGVOYW1lPScrIHRoaXMuZmlsZUhhc2ggKyAKKyAgICAgICAgICAgICAgICAgICAgJyZtb2R1bGVOYW1lPScrICJ2aWRlb2NvbmYxIiArCisgICAgICAgICAgICAgICAgICAgICcmcGFyZW50UGF0aD0nKyAnLycgKworICAgICAgICAgICAgICAgICAgICAnJnJvb21faWQ9ZmlsZXMnICsKKyAgICAgICAgICAgICAgICAgICAgJyZzaWQ9JytjYW52YXMuc2Vzc2lvbklkOworICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKwk8bWV0aG9kIG5hbWU9ImxvYWRJbWFnZVRvV2hpdGVib2FyZCI+CisJCWlmIChjYW52YXMuaXNtb2RlcmF0b3IgfHwgY2FudmFzLmlzQWxsb3dlZFRvRHJhdykgeworICAgIAkJdmFyIG1vdXNlX3ggPSBjYW52YXMuX2RyYXdhcmVhLmdldE1vdXNlKCJ4Iik7CisgICAgCQl2YXIgbW91c2VfeSA9IGNhbnZhcy5fZHJhd2FyZWEuZ2V0TW91c2UoInkiKTsKKyAgICAJCWNhbnZhcy5fZHJhd2FyZWEucGFyZW50LnBhcmVudC5jbGVhckFyZWFBbmRBZGRJbWFnZSh0aGlzLmdlbmVyYXRlRmlsZUxpbmsoKSxtb3VzZV94LG1vdXNlX3ksCisgICAgCQkgICAgICAgICAgY2FudmFzLmdldFVybCgpKydEb3dubG9hZEhhbmRsZXInLAorICAgIAkJICAgICAgICAgIHRoaXMuZmlsZUhhc2gsInZpZGVvY29uZjEiLCIvIiwiZmlsZXMiLGhpYi5jb25mZXJlbmNlZG9tYWluKTsKKwkJfSBlbHNlIHsKKyAgICAgICAgICAgIG5ldyBsei5lcnJvck1vZGVyYXRvclBvcHVwKGNhbnZhcyx7ZXJyb3I6Y2FudmFzLmdldExhYmVsTmFtZSg3MjEpfSk7CisgICAgICAgIH0KKwk8L21ldGhvZD4KKwkKKwk8dGV4dCBuYW1lPSJfZmlsZU5hbWUiIHg9IjM2IiB0ZXh0PSIkeyBwYXJlbnQuZmlsZU5hbWUgfSIgZm9udHNpemU9IjEwIiByZXNpemU9InRydWUiIHk9IjEiPgorCQk8Y29udGV4dG1lbnU+CisJCQkKKwkJCTxjb250ZXh0bWVudWl0ZW0gY2FwdGlvbj0iJG9uY2V7IGNhbnZhcy5nZXRMYWJlbE5hbWUoMTM1OCkgfSIgCisJCQkJCQkJIG9uc2VsZWN0PSJwYXJlbnQucGFyZW50LnBhcmVudC5wbGF5VmlkZW8oKSIgLz4KKwkJCQorCQkJPGNvbnRleHRtZW51aXRlbSBjYXB0aW9uPSIkb25jZXsgY2FudmFzLmdldExhYmVsTmFtZSg3MTEpIH0iIAorCQkJCQkJCSBvbnNlbGVjdD0icGFyZW50LnBhcmVudC5wYXJlbnQuZWRpdEZvbGRlck5hbWUoKSIgLz4KKwkJCQorCQkJPCEtLQkKKwkJCS8vTG9hZCBGaWxlIFRvIFdoaXRlYm9hcmQgbWlzc2luZwkJIAorCQkJPGNvbnRleHRtZW51aXRlbSBuYW1lPSJfb3BlbkRvY3VtZW50IgorCQkJCSAgICAgICAgICAgICBjYXB0aW9uPSIkb25jZXsgY2FudmFzLmdldExhYmVsTmFtZSg3MTYpIH0iIAorCQkJCQkJCSBzZXBhcmF0b3JiZWZvcmU9InRydWUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uc2VsZWN0PSJwYXJlbnQucGFyZW50LnBhcmVudC5sb2FkRG9jdW1lbnQoKSIgLz4KKyAgICAgICAgICAgICAtLT4KKyAgICAgICAgICAgIAkJCQkgCisgICAgICAgICAgICA8Y29udGV4dG1lbnVpdGVtIGNhcHRpb249IiRvbmNleyBjYW52YXMuZ2V0TGFiZWxOYW1lKDcxOSkgfSIgCisgICAgICAgICAgICAJCQkJIG9uc2VsZWN0PSJwYXJlbnQucGFyZW50LnBhcmVudC5kZWxldGVGaWxlKDcxOSkiIC8+CisgICAgICAgICAgICAJCQkJIAorICAgICAgICA8L2NvbnRleHRtZW51PgorICAgICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZWRvd24iPgorICAgICAgICAJaWYgKHBhcmVudC5pc1Jvb3QpIHsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsei5UaW1lci5hZGRUaW1lciggcGFyZW50Lm1vdXNlRG93bkNsaWNrRGVsZWdhdGUsIDMwMCApOworICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2V1cCI+CisgICAgICAgIAlpZiAocGFyZW50LmlzUm9vdCkgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGx6LlRpbWVyLnJlbW92ZVRpbWVyKCBwYXJlbnQubW91c2VEb3duQ2xpY2tEZWxlZ2F0ZSApOworICAgICAgICA8L2hhbmRsZXI+CisJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgcGFyZW50LnRvZ2dsZU9wZW4odHJ1ZSk7CisgICAgICAgIDwvaGFuZGxlcj4KKwk8L3RleHQ+CisJCisKKzwvY2xhc3M+CisKKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvZmlsZWV4cGxvcmVyL3RyZWVpdGVtcy93bWxGaWxlRXhwbG9yZXJJdGVtLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2ZpbGVleHBsb3Jlci90cmVlaXRlbXMvd21sRmlsZUV4cGxvcmVySXRlbS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNmNTkwNwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L2ZpbGVleHBsb3Jlci90cmVlaXRlbXMvd21sRmlsZUV4cGxvcmVySXRlbS5sengKQEAgLTAsMCArMSw4MiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9IndtbEZpbGVFeHBsb3Jlckl0ZW0iIGV4dGVuZHM9ImJhc2VGaWxlRXhwbG9yZXJJdGVtIiBpc0ZvbGRlcj0idHJ1ZSI+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJpc1dtbEZpbGUiIHR5cGU9ImJvb2xlYW4iIHZhbHVlPSJ0cnVlIi8+CisJCisJPHRleHQgbmFtZT0iX2ZpbGVOYW1lIiB4PSIzNiIgdGV4dD0iJHsgcGFyZW50LmZpbGVOYW1lIH0iIGZvbnRzaXplPSIxMCIgcmVzaXplPSJ0cnVlIiB5PSIxIj4KKwkJPGNvbnRleHRtZW51PgorCQkJCisJCQk8Y29udGV4dG1lbnVpdGVtIGNhcHRpb249IiRvbmNleyBjYW52YXMuZ2V0TGFiZWxOYW1lKDcxMSkgfSIgCisJCQkJCQkJIG9uc2VsZWN0PSJwYXJlbnQucGFyZW50LnBhcmVudC5lZGl0Rm9sZGVyTmFtZSgpIiAvPgorCQkJCisgICAgICAgICAgICA8Y29udGV4dG1lbnVpdGVtIGNhcHRpb249IiRvbmNleyBjYW52YXMuZ2V0TGFiZWxOYW1lKDcxOSkgfSIgCisgICAgICAgICAgICAJCQkJIG9uc2VsZWN0PSJwYXJlbnQucGFyZW50LnBhcmVudC5kZWxldGVGaWxlKDcxOSkiIC8+CisgICAgICAgICAgICAJCisgICAgICAgICAgICAJCQkgCisJCQk8Y29udGV4dG1lbnVpdGVtIGNhcHRpb249IiRvbmNleyBjYW52YXMuZ2V0TGFiZWxOYW1lKDEzMTQpIH0iIAorCQkJCQkJCSBvbnNlbGVjdD0icGFyZW50LnBhcmVudC5wYXJlbnQubG9hZFdtbEZpbGUoKSIgLz4KKyAgICAgICAgICAgIAkJCQkgCisgICAgICAgIDwvY29udGV4dG1lbnU+CisgICAgICAgIAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNldHJhY2tvdmVyIj4KKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9ubW91c2V0cmFja292ZXIiKTsKKyAgICAgICAgICAgIGNhbnZhcy5jdXJyZW50SW1hZ2VzTGlzdGRyYXcuY3VycmVudERyYWdJdGVtLnNlbmRPdmVySXRlbShwYXJlbnQpOworICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoImJnY29sb3IiLDB4OTNGRTkyKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZXRyYWNrb3V0Ij4KKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9ubW91c2V0cmFja291dCIpOworICAgICAgICAgICAgY2FudmFzLmN1cnJlbnRJbWFnZXNMaXN0ZHJhdy5jdXJyZW50RHJhZ0l0ZW0uc2VuZE91dEl0ZW0ocGFyZW50KTsKKyAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJiZ2NvbG9yIixjYW52YXMuZ2V0VGhlbWVDb2xvcignbWFpbkJhY2tncm91bmRDb2xvcicpKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZXRyYWNrdXAiPgorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9ubW91c2V0cmFja3VwIik7CisgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgiYmdjb2xvciIsY2FudmFzLmdldFRoZW1lQ29sb3IoJ21haW5CYWNrZ3JvdW5kQ29sb3InKSk7CisgICAgICAgIDwvaGFuZGxlcj4gCisgICAgICAgIAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNlZG93biI+CisgICAgICAgIAlpZiAocGFyZW50LmlzUm9vdCkgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGx6LlRpbWVyLmFkZFRpbWVyKCBwYXJlbnQubW91c2VEb3duQ2xpY2tEZWxlZ2F0ZSwgMzAwICk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZXVwIj4KKyAgICAgICAgCWlmIChwYXJlbnQuaXNSb290KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbHouVGltZXIucmVtb3ZlVGltZXIoIHBhcmVudC5tb3VzZURvd25DbGlja0RlbGVnYXRlICk7CisgICAgICAgIDwvaGFuZGxlcj4KKwkJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICBwYXJlbnQudG9nZ2xlT3Blbih0cnVlKTsKKyAgICAgICAgPC9oYW5kbGVyPgorCTwvdGV4dD4KKwkKKwk8dmlldyBuYW1lPSJjb250ZW50IiB4PSIxMiIgeT0iMTgiIGxheW91dD0iYXhpczp5O2luc2V0OjEiIHZpc2liaWxpdHk9ImhpZGRlbiI+CisJCQorCTwvdmlldz4KKzwvY2xhc3M+CisKKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvbGlicmFyeS5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9saWJyYXJ5Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZGVlMDk0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvbGlicmFyeS5sengKQEAgLTAsMCArMSwzMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworCTwhLS0gRmFtRmFtIEljb24gU2V0IC0tPgorCTxyZXNvdXJjZSBuYW1lPSJtZXNzYWdlYm94X2luZm9fcnNjIiBzcmM9InJlc291cmNlcy9pbmZvcm1hdGlvbi5wbmciIC8+CisJPCEtLSBGYW1GYW0gSWNvbiBTZXQgLS0+CisJPHJlc291cmNlIG5hbWU9Il9maWxlc2F2ZV9pY29uX3BkZl9yc2MiIHNyYz0icmVzb3VyY2VzL3BhZ2Vfd2hpdGVfYWNyb2JhdC5wbmciIC8+CisJPCEtLSBBUEwgQXV0aG9yIHNlYmF3YWduZXIgLS0+CisJPHJlc291cmNlIG5hbWU9Il9maWxlc2F2ZV9pY29uX29yaWdpbmFsX3JzYyIgc3JjPSJyZXNvdXJjZXMvZG93bmxvYWQucG5nIiAvPgorCisJPGluY2x1ZGUgaHJlZj0iZmlsZWV4cGxvcmVyLyIvPgorCTxpbmNsdWRlIGhyZWY9ImNoYXQvIiAvPgorICAgIAorPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvcmVzb3VyY2VzL2Rvd25sb2FkLnBuZyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L3Jlc291cmNlcy9kb3dubG9hZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGM5MDEzZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L3Jlc291cmNlcy9kb3dubG9hZC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvcmVzb3VyY2VzL2luZm9ybWF0aW9uLnBuZyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L3Jlc291cmNlcy9pbmZvcm1hdGlvbi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTJjZDFhZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90YWJjb250ZW50L3Jlc291cmNlcy9pbmZvcm1hdGlvbi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvcmVzb3VyY2VzL3BhZ2Vfd2hpdGVfYWNyb2JhdC5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGFiY29udGVudC9yZXNvdXJjZXMvcGFnZV93aGl0ZV9hY3JvYmF0LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjgwOTVlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3RhYmNvbnRlbnQvcmVzb3VyY2VzL3BhZ2Vfd2hpdGVfYWNyb2JhdC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3Rlc3RzZXR1cC9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90ZXN0c2V0dXAvbGlicmFyeS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTM0NjlkZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90ZXN0c2V0dXAvbGlicmFyeS5sengKQEAgLTAsMCArMSwyNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworICAgIDxpbmNsdWRlIGhyZWY9InRlc3RTZXR1cC5sengiIC8+CisgICAgCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGVzdHNldHVwL3Rlc3RTZXR1cC5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2UvdGVzdHNldHVwL3Rlc3RTZXR1cC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNjMjhjMQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS90ZXN0c2V0dXAvdGVzdFNldHVwLmx6eApAQCAtMCwwICsxLDEzMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPCEtLSAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK1Rlc3QgdGhlIHNldHVwIHZhbHVlcyBiZWZvcmUgeW91IGVudGVyIGEgcm9vbSA9PiBpcyBtb3ZlZCB0byB0aGUgU1dGMTAgYXBwCisKK1RoZSBvbmx5IHRoaW5nIHJlbWFpbmluZyBoZXJlIHRvIGRvLCBpcyB0byBsb2FkIHRoZSBjb3JyZWN0IHNlcnZlciAKK1JUTVAtaG9zdCwgUlRNUC9SVE1QVC1wb3J0IGZvciB0aGUgc2Vzc2lvbgorCisgLS0+CisgCis8Y2xhc3MgbmFtZT0idGVzdFNldHVwIiBleHRlbmRzPSJ2aWV3IiAKKyAgICB4PSIkb25jZXsgcGFyZW50LndpZHRoLzIgLSAzMDAgfSIgeT0iMTAwIiAKKyAgICB3aWR0aD0iNjAwIiBoZWlnaHQ9IjQwMCI+CisKKyAgICA8YXR0cmlidXRlIG5hbWU9InJvb21DbGFzc05hbWUiIHR5cGU9InN0cmluZyIgdmFsdWU9IiIgLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9InJvb21PYmoiIHZhbHVlPSJudWxsIi8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJmb3JjZVRlc3QiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9ImlzRGlyZWN0TGluayIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorICAgIAorICAgIDwhLS0tIEBrZXl3b3JkcyBwcml2YXRlIGlmIGRvSnVzdENsb3NlIGlzIHRydWUgdGhlIGNvbmZpcm1hdGlvbiB3aWxsIGJlIHdhaXQgYW5kIAorICAgIHRoZW4gdGhlIHdpbmRvdyBqdXN0IGNsb3NlZCAtLT4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImRvSnVzdENsb3NlIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAJPCFbQ0RBVEFbCisgICAgICAgICAgICB0aGlzLmdldFNlcnZlckZvclNlc3Npb24uZG9DYWxsKCk7CisgICAgCV1dPgorICAgIDwvaGFuZGxlcj4KKyAgICAKKyAgICA8IS0tIAorICAgIHB1YmxpYyBTZXJ2ZXIgZ2V0U2VydmVyRm9yU2Vzc2lvbihTdHJpbmcgU0lELCBsb25nIHJvb21JZCkKKyAgICAgLS0+CisgICAJPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iZ2V0U2VydmVyRm9yU2Vzc2lvbiIgZnVuY25hbWU9ImNvbmZlcmVuY2VzZXJ2aWNlLmdldFNlcnZlckZvclNlc3Npb24iIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiA+ICAgICAgCisJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIHBhcmVudC5wYXJlbnQucm9vbU9iai5yb29tc19pZDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZ2V0U2VydmVyRm9yU2Vzc2lvbiAiLHZhbHVlKTsKKwkJCS8vaWYgcmV0dXJuIHZhbHVlIGlzIG51bGwsIGV2ZXJ5dGhpbmcgc3RheXMgdGhlIHNhbWUsIHNlc3Npb24gaXMgb24gdGhlIGN1cnJlbnQgaG9zdAorCQkJaWYgKHZhbHVlICE9IG51bGwpeworCQkJCS8vaXMgbm90IGxvYWRlZCBmcm9tIGNvbmZpZy54bWwgZnJvbSBzbGF2ZSBhcyB0aGlzIGlzIHZhcmlhYmxlIGlzIGVtcHR5IGJ5IGRlZmF1bHQhCisJCQkJY2FudmFzLnNsYXZlUnRtcGhvc3Rsb2NhbCA9IHZhbHVlLmFkZHJlc3M7CisJCQkJCisJCQkJdmFyIHNsYXZlVXJsID0gdmFsdWUucHJvdG9jb2wgKyAiOi8vIiArIHZhbHVlLmFkZHJlc3MgKyAiOiIgKyB2YWx1ZS5wb3J0ICsgIi8iICsgdmFsdWUud2ViYXBwICsgIi8iOworCQkJCQorCQkJCXZhciBkID0gbmV3IERhdGUoKTsKKwkJICAgICAgICBwYXJlbnQubXlDb25maWdTZXQuc2V0QXR0cmlidXRlKCJzcmMiLCBzbGF2ZVVybCArICJjb25maWcueG1sP3JhbmRvbT0iK2QuZ2V0VGltZSgpKTsKKwkJICAgICAgICBwYXJlbnQubXlDb25maWdTZXQuZG9SZXF1ZXN0KCk7CisJCQkJCisJCQl9IGVsc2UgeworCQkJCS8vSG9zdGVkIG9uIG1hc3RlcgorCQkJCWNhbnZhcy5pc1NsYXZlSG9zdGVkID0gZmFsc2U7CisJCQkJdGhpcy5wYXJlbnQuc3RhcnRDb25mZXJlbmNlKCk7CisJCQl9CisJCTwvaGFuZGxlcj4KKwk8L25ldFJlbW90ZUNhbGxIaWI+CQorCQorCTwhLS0gZ2V0IHZhbHVlcyBmcm9tIGNvbmZpZy54bWwgZnJvbSBzbGF2ZSAtLT4KKwk8ZGF0YXNldCB0eXBlPSJodHRwIiBuYW1lPSJteUNvbmZpZ1NldCIgcmVxdWVzdD0iZmFsc2UiIG9uZGF0YT0icGFyZW50LnBhcnNlUmVzdWx0c1RvU2xhdmVDbHVzdGVyQ29uZmlnKCkiPgorCSAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiPgorCSAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9uZGF0YSIpOworCSAgICA8L2hhbmRsZXI+CisJICAgIDxoYW5kbGVyIG5hbWU9Im9uZXJyb3IiIGFyZ3M9ImUiPgorCSAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9uZXJyb3IiLGUpOworCSAgICA8L2hhbmRsZXI+CisJICAgIDxoYW5kbGVyIG5hbWU9Im9udGltZW91dCIgYXJncz0iZSI+CisJICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib250aW1lb3V0IixlKTsKKwkgICAgPC9oYW5kbGVyPgorCTwvZGF0YXNldD4KKwkKKwk8IS0tIAorCQlQYXJzZSB0aGUgcmVzdWx0cyBzbyB0aGF0IHRoZSBSVE1QIHRyYWZmaWMgcG9pbnRzIHRvIHRoZSBzbGF2ZQorCQlhbmQgdGhlIEhUVFAgdHJhZmZpYyBwb2ludHMgdG8gdGhlIG1hc3RlcgorCSAtLT4KKwk8bWV0aG9kIG5hbWU9InBhcnNlUmVzdWx0c1RvU2xhdmVDbHVzdGVyQ29uZmlnIj4KKwkJCisgICAgICAgIGNhbnZhcy5zbGF2ZVJ0bXBwb3J0ID0gTnVtYmVyKHRoaXMubXlDb25maWdTZXQuZ2V0UG9pbnRlcigpLnhwYXRoUXVlcnkoJ2NvbmZpZy9ydG1wcG9ydC90ZXh0KCknKSk7ICAKKyAgICAgICAgY2FudmFzLnNsYXZlUnRtcFR1bm5lbHBvcnQgPSBOdW1iZXIodGhpcy5teUNvbmZpZ1NldC5nZXRQb2ludGVyKCkueHBhdGhRdWVyeSgnY29uZmlnL3J0bXBUdW5uZWxwb3J0L3RleHQoKScpKTsgCisgICAgICAgIGNhbnZhcy5zbGF2ZVJ0bXBzc2xwb3J0ID0gTnVtYmVyKHRoaXMubXlDb25maWdTZXQuZ2V0UG9pbnRlcigpLnhwYXRoUXVlcnkoJ2NvbmZpZy9ydG1wc3NscG9ydC90ZXh0KCknKSk7IAorICAgICAgICBjYW52YXMuc2xhdmVXZWJBcHBSb290S2V5ID0gdGhpcy5teUNvbmZpZ1NldC5nZXRQb2ludGVyKCkueHBhdGhRdWVyeSgnY29uZmlnL3dlYkFwcFJvb3RLZXkvdGV4dCgpJyk7IAorCQkKKwkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInBhcnNlUmVzdWx0czogIixjYW52YXMuc2xhdmVSdG1waG9zdGxvY2FsLGNhbnZhcy5zbGF2ZVJ0bXBwb3J0LGNhbnZhcy5zbGF2ZVJ0bXBUdW5uZWxwb3J0LGNhbnZhcy5zbGF2ZVJ0bXBzc2xwb3J0LGNhbnZhcy5zbGF2ZVdlYkFwcFJvb3RLZXkpOworCQkKKwkJLy9Ib3N0ZWQgb24gc2xhdmUKKwkJY2FudmFzLmlzU2xhdmVIb3N0ZWQgPSB0cnVlOworCQl0aGlzLnN0YXJ0Q29uZmVyZW5jZSgpOworCTwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0ic3RhcnRDb25mZXJlbmNlIj4KKyAgICAJPCFbQ0RBVEFbCisgICAgICAgICAgICBjbGVhclN0YWdlQ29udGVudCgpOworICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud2Fybigicm9vbUNsYXNzbmFtZSA6ICIsIHRoaXMucm9vbUNsYXNzTmFtZSk7CisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53YXJuKCJjYW52YXMuY3VycmVudFJvb21PYmogd2lsbCBiZSA6ICIsIHRoaXMucm9vbU9iaik7CisgICAgICAgICAgICBjYW52YXMuY3VycmVudFJvb21PYmogPSB0aGlzLnJvb21PYmo7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG5ldyBselt0aGlzLnJvb21DbGFzc05hbWVdKGNhbnZhcy5tYWluX2NvbnRlbnQuX2NvbnRlbnQuaW5uZXIsIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJvb21vYmo6dGhpcy5yb29tT2JqCisgICAgICAgICAgICAgICAgICAgIH0pOworICAgIAkKKyAgICAgICAgICAgIHRoaXMuZGVzdHJveSgpOworICAgIAldXT4KKyAgICA8L21ldGhvZD4KKworPC9jbGFzcz4KKworCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9iYXNlL2Jhc2VEcmF3Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL2Jhc2UvYmFzZURyYXcubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxMmIwMTEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9iYXNlL2Jhc2VEcmF3Lmx6eApAQCAtMCwwICsxLDE1MTMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzxjbGFzcyBuYW1lPSJiYXNlRHJhdyIgZXh0ZW5kcz0idmlldyIgPgorCisJPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50bGF5ZXIiIHZhbHVlPSJudWxsIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0ibGF5ZXJzIiB2YWx1ZT0ibnVsbCIgLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9InJlZG9sYXllcnMiIHZhbHVlPSJudWxsIiAvPgorCisgIAk8YXR0cmlidXRlIG5hbWU9Im14IiB0eXBlPSJudW1iZXIiIHZhbHVlPSIwIi8+CisgIAk8YXR0cmlidXRlIG5hbWU9Im15IiB0eXBlPSJudW1iZXIiIHZhbHVlPSIwIi8+CisgIAk8YXR0cmlidXRlIG5hbWU9InByZXZ4IiB0eXBlPSJudW1iZXIiIHZhbHVlPSIwIi8+CisgIAk8YXR0cmlidXRlIG5hbWU9InByZXZ5IiB0eXBlPSJudW1iZXIiIHZhbHVlPSIwIi8+CisgIAkKKyAgCTwhLS0tIElmIHRydWUgaXQgd2lsbCB0cnkgdG8gbG9hZCB0aGUgT2JqZWN0SWRlbnRpZmllciBFeHRlbnNpb24gZnJvbSB0aGUgU2VydmVyIC0tPgorICAJPGF0dHJpYnV0ZSBuYW1lPSJpc1JlbW90ZU9JRCIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorICAJCisgIAk8YXR0cmlidXRlIG5hbWU9InN0YXJ0eCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKyAgCTxhdHRyaWJ1dGUgbmFtZT0ic3RhcnR5IiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorICAJPGF0dHJpYnV0ZSBuYW1lPSJlbmR4IiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorICAJPGF0dHJpYnV0ZSBuYW1lPSJlbmR5IiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorICAJCisgIAk8YXR0cmlidXRlIG5hbWU9InJlc3RyaWN0ZWQiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIvPgorICAJCisgIAk8IS0tIFRoaXMgQ291bnRlciBqdXN0IGFkZHMsIGl0IGRvc2VuJ3Qgc2hvd3MgdGhlIGFic29sdXRlIG51bWJlciBvZiBpdGVtcworICAJCShhc2sgdGhpcy5sYXllcnMubGVuZ3RoIHRvIGdldCB0aGUgbnVtYmVyIG9mIGRyYXdpbmdzKSAtLT4KKyAgCTxhdHRyaWJ1dGUgbmFtZT0iY291bnRlciIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKyAgCQorICAJPGV2ZW50IG5hbWU9Im9udXBkYXRlU2NhbGUiIC8+CisgIAkKKyAgCTxhdHRyaWJ1dGUgbmFtZT0ic2hvd0dyaWQiIHR5cGU9ImJvb2xlYW4iIHZhbHVlPSJmYWxzZSIvPgorICAJPGF0dHJpYnV0ZSBuYW1lPSJpc1NuYXBUb0dyaWQiIHR5cGU9ImJvb2xlYW4iIHZhbHVlPSJmYWxzZSIvPgorCTxhdHRyaWJ1dGUgbmFtZT0iZ3JpZFdpZHRoIiB2YWx1ZT0iMjQiIHR5cGU9Im51bWJlciIgLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9ImNvcHlPYmplY3QiIHZhbHVlPSJudWxsIi8+CisJPGF0dHJpYnV0ZSBuYW1lPSJzZWxlY3RlZE9iamVjdHMiIHZhbHVlPSJudWxsIi8+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJPYmplY3RCeU5hbWUiIHZhbHVlPSJudWxsIiAvPgorCisgIAk8bWV0aG9kIG5hbWU9ImdldENvdW50ZXIiPgorCQkvL0RlYnVnLndyaXRlKCIjIyMgZ2V0Q291bnRlciA6Iix0aGlzLmNvdW50ZXIpOworCQl2YXIgbm93ID0gbmV3IERhdGUoKTsKKwkJcmV0dXJuICJfIitub3cuZ2V0VGltZSgpOworICAJPC9tZXRob2Q+CisgIAkKKyAgCTwhLS0KKyAgCSBub3QgbmVlZGVkIGFueW1vcmUsIElzc3VlIDUwNworICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImdldE9JRCIgZnVuY25hbWU9ImdldE9JRCIgc2hvd0xvYWRpbmc9ImZhbHNlIgorICAgIAkJCQkgIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiA+IAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIC8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisgICAgICAgICAgICAgICAgaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZ2V0T0lEOiAiLHZhbHVlKTsKKyAgICAgICAgICAgICAgICBwYXJlbnQuY291bnRlciA9IHZhbHVlOworICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4gICAKKyAgICA8L25ldFJlbW90ZUNhbGxIaWI+ICAgICAKKyAgICAgLS0+CisJCisJPG1ldGhvZCBuYW1lPSJjb21wYXJlQW5kU2V0Q291bnRlciIgYXJncz0iYyI+CisJCTwhW0NEQVRBWworCQkJaWYgKGM+dGhpcy5jb3VudGVyKSB0aGlzLmNvdW50ZXIgPSBjOworCQldXT4KKwk8L21ldGhvZD4KKyAgCQorCTxhdHRyaWJ1dGUgbmFtZT0ibW91c2V0cmFja2VyX2RlbCIgdmFsdWU9IiRvbmNleyBuZXcgTHpEZWxlZ2F0ZSh0aGlzLCAndHJhY2ttb3VzZScgKX0iIC8+CisJCisJPCEtLSAKKwlUaGlzIGlzIHRoZSB2ZXJ5IGJhc2ljIGRlY2lzaW9uIHdoYXQgdG8gZG8KKwl0aGUgbW9kdXMgcG9pbnRlciBpcyBvbmx5ICBhIHRlbXAgbW9kdXMgd2hpY2ggaXMgaW5pdGVkIHdoaWxlIGRyYWdpbmcKKwlhIG5ldyBzZWxlY3RlZCBvYmplY3QKKwkgLS0+CisJPGF0dHJpYnV0ZSBuYW1lPSJkcmF3bW9kdXMiIHZhbHVlPSJoYW5kIiB0eXBlPSJzdHJpbmciIC8+CisJCisJPCEtLSBUaGlzIExpc3QgaG9sZHMgYWxsIEFjdGlvbk9iamVjdAorCQljdXJyZW50bHkgcGFpbnRpbmdzCisJCQkJICBsZXR0ZXJzIC0tPgorCTxhdHRyaWJ1dGUgbmFtZT0iYmFzZWFjdGlvbm9iamVjdExpc3QiIHZhbHVlPSJudWxsIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0iYmFzZXJlZG9hY3Rpb25vYmplY3RMaXN0IiB2YWx1ZT0ibnVsbCIgLz4KKwkKKwk8IS0tIFRoaXMgTGlzdCBob2xkIGEgcmVmZXJlbmNlIHRvIGFsbCAKKwkJQXJyYXkgb2YgRHJhd2luZyBBY3Rpb24sIGl0IGlzIG5lZWRlZCBmb3IgY29waW5nIHRoZSB2aWV3IGFuZCB1bmRvL3JlZG8gLS0+CisJPGF0dHJpYnV0ZSBuYW1lPSJiYXNldGVtcGFjdGlvbm9iamVjdExpc3QiIHZhbHVlPSJudWxsIiAvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0iYmFzZHJhd3JlZG9WaWV3IiB2YWx1ZT0ibnVsbCIgLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9Imhhc3ByZXZpb3VzIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJoYXNlbmV4dCIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0iZG9DbGVhckFsbCIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0iZG9DbGVhclNsaWRlIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisJCisJPCEtLSBGb3IgdGhlIGRyYWdnaW5nIHJlc2l6ZWluZyB0aGVyZSBpcyBhIGJvdW5kaW5nIGJveCAtLT4KKwk8YXR0cmlidXRlIG5hbWU9ImJvdW5kaW5nSXNBY3RpdmUiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKwk8YXR0cmlidXRlIG5hbWU9ImJvdW5kaW5ncmVmIiB2YWx1ZT0ibnVsbCIgLz4KKwkKKwk8IS0tIEZvciBzZW5kaW5nIG1lc3NhZ2VzIGluIHNoYXJlZCBtb2R1cyAtLT4KKwk8bWV0aG9kIG5hbWU9Im9uc2hhcmVkTWVzc2FnZSIgYXJncz0iYWN0aW9uLG9iaiIgLz4KKwkKKwk8IS0tIHRoaXMgZXZlbnQgbXVzdCBiZSB0cmlnZ2VyZWQgQUZURVIKKwkJdGhlIG5lc3NlY2Nhcnkgcm9vbSArIGRvbWFpbiBmb3IgdGhpcyBjb25mZXJlbmNlVmlldyBpcyBzZXQKKwkJLS0+CisJPGV2ZW50IG5hbWU9Im9ub3BlbldoaXRlQm9hcmQiIC8+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJpc0RyYWdnaW5nIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9Imxhc3RfeCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKwk8YXR0cmlidXRlIG5hbWU9Imxhc3RfeSIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKwkKKwk8IS0tICMjIyMjIyMjIyMjIworCQlpbml0CisJIC0tPgorCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisJCWlmICh0aGlzLmlzUmVtb3RlT0lEKXsKKyAgICAgICAgICAgIC8vd3JvbmcgcmVmZXJlbmNlLCBzd2FnbmVyIDIwLjA5LjIwMDgKKwkJCS8vdGhpcy5nZXRPSUQuZG9DYWxsKCk7CisJCX0KKyAgICAgICAgLy9EZWJ1Zy53cml0ZSgiKioqKioqKioqKiB0aGlzIG9uaW5pdDogIix0aGlzKTsKKwkJdGhpcy5iYXNkcmF3cmVkb1ZpZXcgPSBuZXcgTHpWaWV3KGNhbnZhcyx7dmlzaWJsZTpmYWxzZSx5OjQ0MH0pOworCQl0aGlzLmxheWVycyA9IG5ldyBBcnJheSgpOworCQl0aGlzLmxhc3RfeCA9IHRoaXMueDsKKwkJdGhpcy5sYXN0X3kgPSB0aGlzLnk7CisJCXRoaXMucmVkb2xheWVycyA9IG5ldyBBcnJheSgpOworCQl0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0ID0gbmV3IEFycmF5KCk7CisJCXRoaXMuYmFzZXJlZG9hY3Rpb25vYmplY3RMaXN0ID0gbmV3IEFycmF5KCk7CisJPC9oYW5kbGVyPgorICAgICAgCisgICAgPG1ldGhvZCBuYW1lPSJjbGVhclNsaWRlT25seSI+CisgICAgCTwhW0NEQVRBWworICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgaXRlbXNUb0RlbGV0ZSA9IHRoaXMuZ2V0Q3VycmVudFNsaWRlQW5ub3RhdGlvbnMoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5vbnNoYXJlZE1lc3NhZ2UoJ2NsZWFyU2xpZGUnLGl0ZW1zVG9EZWxldGUpOyAKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5jbGVhclNsaWRlUmVtb3RlKGl0ZW1zVG9EZWxldGUpOworICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4gIAorICAgICAgICAgICAgCisJPG1ldGhvZCBuYW1lPSJjbGVhckFsbCI+CisJCTwhW0NEQVRBWworCQkJdGhpcy5vbnNoYXJlZE1lc3NhZ2UoJ2NsZWFyJyxudWxsKTsJCisJCQl0aGlzLmNsZWFyUmVtb3RlKCk7CisJCV1dPgorCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0iZ2V0Q3VycmVudFNsaWRlQW5ub3RhdGlvbnMiPgorCQk8IVtDREFUQVsKKwkJCisJCSAgICB2YXIgY3VycmVudFNsaWRlTnVtYmVyID0gLTE7CisJCQorICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8dGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdC5sZW5ndGg7aSsrKSB7CisgICAgICAgICAgICAJCisgICAgICAgICAgICAJaWYgKHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbaV1bMF0gPT0gInN3ZiIpIHsKKyAgICAgICAgICAgIAkJY3VycmVudFNsaWRlTnVtYmVyID0gdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtpXVs4XTsKKyAgICAgICAgICAgIAkJYnJlYWs7CisgICAgICAgICAgICAJfQorICAgICAgICAgICAgCQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgaXRlbXNUb0RlbGV0ZSA9IG5ldyBBcnJheSgpOworICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTx0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0Lmxlbmd0aDtpKyspIHsKKyAgICAgICAgICAgIAkKKyAgICAgICAgICAgIAlpZiAodGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtpXVswXSA9PSAiZWxsaXBzZSIgCisgICAgICAgICAgICAgICAgICAgICAgICB8fCB0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2ldWzBdID09ICJkcmF3YXJyb3ciCisgICAgICAgICAgICAgICAgICAgICAgICB8fCB0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2ldWzBdID09ICJsaW5lIgorICAgICAgICAgICAgICAgICAgICAgICAgfHwgdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtpXVswXSA9PSAicGFpbnQiCisgICAgICAgICAgICAgICAgICAgICAgICB8fCB0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2ldWzBdID09ICJyZWN0YW5nbGUiCisgICAgICAgICAgICAgICAgICAgICAgICB8fCB0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2ldWzBdID09ICJ1bGluZSIKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbaV1bMF0gPT0gImltYWdlIgorICAgICAgICAgICAgICAgICAgICAgICAgfHwgdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtpXVswXSA9PSAiY2xpcGFydCIKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbaV1bMF0gPT0gImxldHRlciIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIAkKKyAgICAgICAgICAgICAgICAJdmFyIHN3Zk9iaiA9IHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbaV1bdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtpXS5sZW5ndGgtN107CisgICAgICAgICAgICAgICAgCQorICAgICAgICAgICAgICAgIAlpZiAoc3dmT2JqLnNsaWRlID09IGN1cnJlbnRTbGlkZU51bWJlcikgeworICAgICAgICAgICAgICAgIAkJaXRlbXNUb0RlbGV0ZS5wdXNoKHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbaV1bdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtpXS5sZW5ndGgtMV0pOworICAgICAgICAgICAgICAgIAl9CisgICAgICAgICAgICAgICAgCQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAkKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgcmV0dXJuIGl0ZW1zVG9EZWxldGU7CisJCV1dPgorCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0iY2xlYXJTbGlkZVJlbW90ZSIgYXJncz0iaXRlbXNUb0RlbGV0ZSI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAKKyAgICAgICAgICAgIHZhciBpbmRleE9mSXRlbXNUb0RlbGV0ZSA9IG5ldyBBcnJheSgpOworICAgICAgICAKKyAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3QubGVuZ3RoO2krKykgeworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgCQorICAgICAgICAgICAgCWZvciAodmFyIGs9MDtrPGl0ZW1zVG9EZWxldGUubGVuZ3RoO2srKykgeworICAgICAgICAgICAgCQorICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtpXVt0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2ldLmxlbmd0aC0xXSA9PSBpdGVtc1RvRGVsZXRlW2tdKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgaW5kZXhPZkl0ZW1zVG9EZWxldGUucHVzaChpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAJfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKHZhciBpPWluZGV4T2ZJdGVtc1RvRGVsZXRlLmxlbmd0aC0xO2k+PTA7aS0tKSB7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgdmFyIGl0ZW1Ub0RlbGV0ZSA9IHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbaW5kZXhPZkl0ZW1zVG9EZWxldGVbaV1dOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHZhciByZWZPYmogPSB0aGlzLmdldE9iamVjdEJ5TmFtZShpdGVtVG9EZWxldGVbaXRlbVRvRGVsZXRlLmxlbmd0aC0xXSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgcmVmT2JqLmRlc3Ryb3koKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0LnNwbGljZShpbmRleE9mSXRlbXNUb0RlbGV0ZVtpXSwxKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0gICAKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+ICAgICAgICAKKwkKKwk8bWV0aG9kIG5hbWU9ImNsZWFyUmVtb3RlIj4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgIAorICAgICAgICAgICAgaWYgKHRoaXMuYm91bmRpbmdyZWYhPW51bGwpIHRoaXMuYm91bmRpbmdyZWYucmVtb3ZlSXQoKTsKKyAgICAgICAgICAgIHdoaWxlICh0aGlzLnN1YnZpZXdzLmxlbmd0aCA+IDEpIHsKKyAgICAgICAgICAgICAgICB0aGlzLnN1YnZpZXdzWzFdLnByZXBhcmVGb3JEZWxldGUuc2VuZEV2ZW50KCk7CisgICAgICAgICAgICAgICAgdGhpcy5zdWJ2aWV3c1sxXS5kZXN0cm95KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB3aGlsZSAodGhpcy5iYXNkcmF3cmVkb1ZpZXcuc3Vidmlld3MubGVuZ3RoID4gMCkgeworICAgICAgICAgICAgICAgIHRoaXMuYmFzZHJhd3JlZG9WaWV3LnN1YnZpZXdzWzBdLmRlc3Ryb3koKTsKKyAgICAgICAgICAgIH0gICAKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoIngiLDApOworICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoInkiLDApOworICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLmdldERpc3BsYXlPYmplY3QoKS5feHNjYWxlID0gMTAwOworICAgICAgICAgICAgdGhpcy5nZXREaXNwbGF5T2JqZWN0KCkuX3lzY2FsZSA9IDEwMDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5vbnVwZGF0ZVNjYWxlLnNlbmRFdmVudChudWxsKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgcGFyZW50LnBhcmVudC56b29tYm94LnNldFdoaXRlYm9hcmRWYWx1ZXModHJ1ZSwxMDApOworICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLmxheWVycyA9IG5ldyBBcnJheSgpOworICAgICAgICAgICAgdGhpcy5yZWRvbGF5ZXJzID0gbmV3IEFycmF5KCk7CisgICAgICAgICAgICB0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0ID0gbmV3IEFycmF5KCk7CisgICAgICAgICAgICB0aGlzLmJhc2VyZWRvYWN0aW9ub2JqZWN0TGlzdCA9IG5ldyBBcnJheSgpOyAgICAKKyAgICAgICAgICAgIHRoaXMuY2hlY2tTdGVwTGF5ZXJzKCk7IAorICAgICAgICAgICAgdGhpcy5jbGVhckRvY3VtZW50c0JhcigpOworICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9ImRvQWN0aW9uIiBhcmdzPSJtb2RpIj4KKwkJaWYgKG1vZGk9PSdzYXZlb2JqJyl7CisJCQlpZiAodGhpcy5zZW5kT2JqZWN0KSB0aGlzLnNlbmRPYmplY3Quc2VuZEV2ZW50KCk7CisJCX0gZWxzZSBpZiAobW9kaT09J2xvYWRvYmonKXsKKwkJCisJCX0KKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9InNldE1vZHVzV2l0aFVwZGF0ZSIgYXJncz0ibW9kaSI+CisJCXZhciBwYWludFRvb2xCYXIgPSB0aGlzLmdldFBhaW50VG9vbEJhcigpOworCQlwYWludFRvb2xCYXIudXBkYXRlVG9vbFNlbGVjdGlvbihtb2RpKTsKKwkJdGhpcy5zZXRNb2R1cyhtb2RpKTsKKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9InNldE1vZHVzIiBhcmdzPSJtb2RpIj4KKwkJPCFbQ0RBVEFbCisJCSAgCisJCSAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2V0TW9kdXMgQUFBOiAiLHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3QpOworCQkKKyAgICAJCS8vY2hlY2sgaWYgcHJldmlvdXMgbW9kaSBoYXMgYmVlbiB0eHQsIHdoaWNoIG1pZ2h0IG5vdCBiZSBzYXZlZCB0byB0aGUgYm9hcmQgeWV0CisgICAgICAgICAgICB2YXIgcHJldmlvdXNNb2R1cyA9IHRoaXMuZHJhd21vZHVzOworICAgIAkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInNldE1vZHVzOiAiLG1vZGkpOworICAgIAkJaWYgKHRoaXMuZHJhd21vZHVzPT0nbGV0dGVyJyl7CisgICAgCQkJaWYgKHRoaXMubGV0dGVyT2JqZWN0SXNBY3RpdmUpeworICAgIAkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2V0TW9kdXM6ZHJhd3RvQXJyYXkiLG1vZGkpOworICAgIAkJCQl0aGlzLmN1cnJlbnRsZXR0ZXJPYmouZHJhd3RvQXJyYXkoKTsKKyAgICAJCQl9CisgICAgCQl9CisgICAgCQkKKyAgICAJCWlmIChtb2RpICE9ICdwcmludCcgJiYgbW9kaSAhPSAncGxhaW4nKSB7CisgICAgCQkgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2RyYXdtb2R1cycsbW9kaSk7CisgICAgCQl9IGVsc2UgaWYgKG1vZGkgPT0gJ3ByaW50JykgeworICAgIAkJCXZhciBteV9waiA9IG5ldyBQcmludEpvYigpOworICAgICAgICAgICAgICAgIHZhciBteVJlc3VsdCA9IG15X3BqLnN0YXJ0KCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm15UmVzdWx0ICIsbXlSZXN1bHQpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChteVJlc3VsdCkgeworICAgICAgICAgICAgICAgIAkKKyAgICAgICAgICAgICAgICAJdmFyIG1jID0gdGhpcy5nZXREaXNwbGF5T2JqZWN0KCk7CisgICAgICAgICAgICAgICAgCQorICAgICAgICAgICAgICAgIAkvLyBib29sZWFuIHRvIHRyYWNrIHdoZXRoZXIgYWRkUGFnZSBzdWNjZWVkZWQsIGNoYW5nZSB0aGlzIHRvIGEgY291bnRlcgorICAgICAgICAgICAgICAgICAgICAvLyBpZiBtb3JlIHRoYW4gb25lIGNhbGwgdG8gYWRkUGFnZSBpcyBwb3NzaWJsZQorICAgICAgICAgICAgICAgICAgICB2YXIgcGFnZUFkZGVkOkJvb2xlYW4gPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLy8gY2hlY2sgdGhlIHVzZXIncyBwcmludGVyIG9yaWVudGF0aW9uIHNldHRpbmcKKyAgICAgICAgICAgICAgICAgICAgLy8gYW5kIGFkZCBhcHByb3ByaWF0ZSBwcmludCBhcmVhIHRvIHByaW50IGpvYgorICAgICAgICAgICAgICAgICAgICBpZiAobXlfcGoub3JpZW50YXRpb24gPT0gInBvcnRyYWl0IikgeworICAgICAgICAgICAgICAgICAgICAgICAgLy8gSGVyZSwgdGhlIHByaW50QXJlYSBtZWFzdXJlbWVudHMgYXJlIGFwcHJvcHJpYXRlIGZvciBhbiA4LjUiIHggMTEiCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBwb3J0cmFpdCBwYWdlLgorICAgICAgICAgICAgICAgICAgICAgICAgcGFnZUFkZGVkID0gbXlfcGouYWRkUGFnZShtYy5fcGFyZW50LHt4TWluOjAseE1heDo2MDAseU1pbjowLHlNYXg6ODAwfSk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBteV9wai5vcmllbnRhdGlvbiBpcyAibGFuZHNjYXBlIi4KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIE5vdywgdGhlIHByaW50QXJlYSBtZWFzdXJlbWVudHMgYXJlIGFwcHJvcHJpYXRlIGZvciBhbiAxMSIgeCA4LjUiCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBsYW5kc2NhcGUgcGFnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2VBZGRlZCA9IG15X3BqLmFkZFBhZ2UobWMuX3BhcmVudCx7eE1pbjowLHhNYXg6NzUwLHlNaW46MCx5TWF4OjYwMH0pOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC8vIHNlbmQgcGFnZXMgZnJvbSB0aGUgc3Bvb2xlciB0byB0aGUgcHJpbnRlcgorICAgICAgICAgICAgICAgICAgICBpZiAocGFnZUFkZGVkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBteV9wai5zZW5kKCk7IAorICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAJCisgICAgICAgICAgICAgICAgCS8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm1jICIsbWMpOworICAgICAgICAgICAgICAgIAkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJtYy5uYW1lICIsbWMuX25hbWUpOworICAgICAgICAgICAgICAgIAkKKyAgICAgICAgICAgICAgICAgICAgLy9teVJlc3VsdCA9IG15X3BqLmFkZFBhZ2UobWMsIG51bGwsIHtwcmludEFzQml0bWFwOnRydWV9LCAxKTsKKyAgICAgICAgICAgICAgICAgICAgLy9teV9wai5zZW5kKCk7CisgICAgICAgICAgICAgICAgICAgIGRlbGV0ZSBteV9wajsKKyAgICAgICAgICAgICAgICB9CisgICAgCQl9CisgICAgCQkKKyAgICAJCWlmIChtb2RpPT0ncGxhaW5TbGlkZScpeworICAgIAkJCXRoaXMuZG9DbGVhclNsaWRlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB0aGlzLmRvQ2xlYXJBbGwgPSBmYWxzZTsKKyAgICAJCQluZXcgbHouY29uZmlybWF0aW9uU2luZ2xlKGNhbnZhcy5tYWluX2NvbnRlbnQuX2NvbnRlbnQuaW5uZXIseworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsaWQ6MTMzOSxsYWJlbGlkZXJyb3I6MTM1OSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZPYmo6dGhpcyxzaG93Q2hlY2tCb3g6ZmFsc2V9KTsKKyAgICAJCQkKKyAgICAJCQl0aGlzLnNldEF0dHJpYnV0ZSgnZHJhd21vZHVzJyxwcmV2aW91c01vZHVzKTsKKyAgICAJCX0gZWxzZSBpZiAobW9kaT09J3BsYWluQ29uZmlybScpeworICAgIAkJCXRoaXMuZG9DbGVhclNsaWRlID0gZmFsc2U7CisgICAgCQkJdGhpcy5kb0NsZWFyQWxsID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBuZXcgbHouY29uZmlybWF0aW9uU2luZ2xlKGNhbnZhcy5tYWluX2NvbnRlbnQuX2NvbnRlbnQuaW5uZXIseworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsaWQ6MTMzOSxsYWJlbGlkZXJyb3I6MTM0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZPYmo6dGhpcyxzaG93Q2hlY2tCb3g6ZmFsc2V9KTsKKyAgICAgICAgICAgICAgICAvL3RoaXMuY2xlYXJBbGwoKTsKKyAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJjbGVhckFsbCBhbmQgUkVTRVQgTW9kdXMgdG8iLHByZXZpb3VzTW9kdXMpOworICAgICAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdkcmF3bW9kdXMnLHByZXZpb3VzTW9kdXMpOworICAgICAgICAgICAgfSBlbHNlIGlmIChtb2RpPT0ncGxhaW4nKXsKKyAgICAgICAgICAgICAgICB0aGlzLmNsZWFyQWxsKCk7CisgICAgICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiY2xlYXJBbGwgYW5kIFJFU0VUIE1vZHVzIHRvIixwcmV2aW91c01vZHVzKTsKKyAgICAgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnZHJhd21vZHVzJyxwcmV2aW91c01vZHVzKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAobW9kaT09J2hhbmQnIHx8IG1vZGk9PSdsZXR0ZXInIHx8IG1vZGk9PSd0cmlhbmdsZScgCisgICAgCQkJfHwgbW9kaT09J3BhaW50JyB8fCBtb2RpPT0nbGluZScgfHwgbW9kaT09J3VsaW5lJyB8fCBtb2RpPT0nY2xpcGFydCcgCisgICAgCQkJfHwgbW9kaT09J3JlY3RhbmdsZScgfHwgbW9kaT09J2VsbGlwc2UnIHx8IG1vZGk9PSdkcmF3YXJyb3cnKXsKKyAgICAJCQlpZiAodGhpcy5ib3VuZGluZ3JlZiE9bnVsbCkgdGhpcy5ib3VuZGluZ3JlZi5yZW1vdmVJdCgpOworICAgIAkJfQorICAgIAkJaWYgKG1vZGk9PSdyZWN0YW5nbGUnKSB7CisgICAgCQkJLy9PcGVuIFVwIFJlY29yZGluZworICAgIAkJCQorICAgIAkJfQorCQldXT4KKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9InNlbmRDb25maXJtYXRpb24iIGFyZ3M9Inllc25vIiA+CisJCWlmICh0aGlzLmRvQ2xlYXJTbGlkZSkgeworCQkJdGhpcy5jbGVhclNsaWRlT25seSgpOworCQl9IGVsc2UgaWYgKHRoaXMuZG9DbGVhckFsbCkgeworICAgICAgICAgICAgdGhpcy5jbGVhckFsbCgpOworICAgICAgICB9CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJzZW5kTm9Db25maXJtYXRpb24iIGFyZ3M9InJlZiI+CisgICAgCS8vRG8gbm90aGluZworICAgIDwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0iZ2V0TW9kdXNJdGVtcyIgYXJncz0ibW9kaSI+CisJCTwhW0NEQVRBWworCQkvL0RlYnVnLndyaXRlKCJnZXRNb2R1c0l0ZW1zOiAiLG1vZGksdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdCk7CisJCWlmIChtb2RpPT0ncG9pbnRlcicpeworCQkJcmV0dXJuIHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3Q7CisJCX0gZWxzZSB7CisJCQl2YXIgdGVtcExpc3QgPSBuZXcgQXJyYXkoKTsKKwkJCS8vRGVidWcud3JpdGUoInRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3Q6ICIsbW9kaSk7CisJCQlmb3IgKHZhciBlZz0wO2VnPHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3QubGVuZ3RoO2VnKyspeworCQkJCS8vRGVidWcud3JpdGUoInRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddWzBdPT1tb2RpIix0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXVswXSxtb2RpKTsKKwkJCQlpZiAodGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ11bMF09PW1vZGkpIHsKKwkJCQkJdGVtcExpc3QucHVzaCh0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXSk7CisJCQkJfQorCQkJfQkJCisJCQlyZXR1cm4gdGVtcExpc3Q7CisJCX0KKwkJXV0+CisJPC9tZXRob2Q+CisJCisJPG1ldGhvZCBuYW1lPSJnZXRPYmplY3RCeU5hbWUiIGFyZ3M9Im9iak5hbWUiPgorCQlpZiAodGhpc1tvYmpOYW1lXSkgeworCQkJcmV0dXJuIHRoaXNbb2JqTmFtZV07CisJCX0KKwkJcmV0dXJuIG51bGw7CisJPC9tZXRob2Q+CisJCisJPG1ldGhvZCBuYW1lPSJnZXRCYXNlT2JqZWN0QnlOYW1lIiBhcmdzPSJiTmFtZSI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgLy9EZWJ1Zy53cml0ZSgiZ2V0TW9kdXNJdGVtczogIixtb2RpLHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3QpOworICAgICAgICAgICAgLy9EZWJ1Zy53cml0ZSgidGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdDogIixtb2RpKTsKKyAgICAgICAgICAgIGZvciAodmFyIGVnPTA7ZWc8dGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdC5sZW5ndGg7ZWcrKyl7CisgICAgICAgICAgICAgICAgLy9EZWJ1Zy53cml0ZSgidGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ11bMF09PW1vZGkiLHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddWzBdLG1vZGkpOworICAgICAgICAgICAgICAgIGlmICh0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXVt0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXS5sZW5ndGgtMV09PWJOYW1lKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9ICAgICAgIAorICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0iZGVsZXRlSXRlbUJ5TmFtZSIgYXJncz0ib2JqTmFtZSI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgdmFyIG5ld0EgPSB0aGlzLmRlbGV0ZUl0ZW1CeU5hbWVTeW5jKG9iak5hbWUpOworICAgICAgICAgICAgaWYgKG5ld0FbMF09PSdwYWludCcpIG5ld0FbMV0gPSBuZXcgQXJyYXkoKTsKKyAgICAgICAgICAgIHRoaXMub25zaGFyZWRNZXNzYWdlKCdkZWxldGUnLG5ld0EpOyAgICAKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisJPG1ldGhvZCBuYW1lPSJkZWxldGVJdGVtQnlOYW1lU3luYyIgYXJncz0ib2JqTmFtZSI+CisgICAgCTwhW0NEQVRBWworICAgIAkgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImRlbGV0ZUl0ZW1CeU5hbWVTeW5jIDo6ICIsb2JqTmFtZSk7CisgICAgCSAgICB0aGlzW29iak5hbWVdLnByZXBhcmVGb3JEZWxldGUuc2VuZEV2ZW50KCk7CisgICAgCSAgICB0aGlzW29iak5hbWVdLmRlc3Ryb3koKTsKKyAgICAgICAgICAgIGlmICh0aGlzLmJvdW5kaW5ncmVmIT1udWxsKSB0aGlzLmJvdW5kaW5ncmVmLnJlbW92ZUl0KCk7CisgICAgCQkKKyAgICAJCXZhciBwb3MgPSAtMTsKKyAgICAJCWZvciAodmFyIGVnPTA7ZWc8dGhpcy5sYXllcnMubGVuZ3RoO2VnKyspeworICAgIAkJCWlmICh0aGlzLmxheWVyc1tlZ11bJ25hbWUnXT09b2JqTmFtZSkgeworICAgIAkJCQlwb3MgPSBlZzsKKyAgICAJCQkJLy9EZWJ1Zy53cml0ZSgiRm91bmQgT2JqZWN0IGluIExheWVyOiAiLGVnKTsKKyAgICAJCQkJdGhpcy5sYXllcnNbZWddLnByZXBhcmVGb3JEZWxldGUuc2VuZEV2ZW50KCk7CisgICAgCQkJCXRoaXMubGF5ZXJzW2VnXS5kZXN0cm95KCk7CisgICAgCQkJfQorICAgIAkJfQkKKyAgICAJCWlmIChwb3MhPS0xKSB0aGlzLmxheWVycy5zcGxpY2UocG9zLCAxKTsKKyAgICAJCS8vZ2V0IEl0ZW0gUG9zaXRpb24KKyAgICAJCXBvcyA9IC0xOworICAgIAkJZm9yICh2YXIgZWc9MDtlZzx0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0Lmxlbmd0aDtlZysrKXsKKyAgICAJCQlpZiAodGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ11bdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ10ubGVuZ3RoLTFdPT1vYmpOYW1lKSB7CisgICAgCQkJCXBvcyA9IGVnOworICAgIAkJCQkvL0RlYnVnLndyaXRlKCJGb3VuZCBPYmplY3Q6ICIsZWcpOworICAgIAkJCQlicmVhazsKKyAgICAJCQl9CisgICAgCQl9CisgICAgCQkKKyAgICAJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJkZWxldGVJdGVtQnlOYW1lU3luYyBGb3VuZCBPYmplY3Q6ICIsZWcpOworICAgIAkJCisgICAgCQl2YXIgbmV3QSA9IHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbcG9zXTsKKyAgICAJCQorICAgIAkJZm9yICh2YXIgZWc9MDtlZzx0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0Lmxlbmd0aDtlZysrKXsKKyAgICAJCQlpZiAodGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ11bMF0hPSJwb2ludGVyV2hpdGVCb2FyZCIpIHsKKwkJICAgIAkJaWYgKHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddW3RoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddLmxlbmd0aC04XT5uZXdBW25ld0EubGVuZ3RoLThdKSB7CisJCSAgICAJCQkJdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ11bdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ10ubGVuZ3RoLThdLT0xOworCQkJCQl9CisgICAgCQkJfQorICAgIAkJfQorICAgIAkJCisgICAgCQlpZiAocG9zIT0tMSkgdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdC5zcGxpY2UocG9zLCAxKTsKKyAgICAJCQorICAgIAkJLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdC5sZW5ndGg6ICIsdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdC5sZW5ndGgpOworICAgIAkJLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidGhpcy5sYXllcnMubGVuZ3RoOiAiLHRoaXMubGF5ZXJzLmxlbmd0aCk7CisgICAgCQkKKyAgICAJCWlmICgkZGVidWcpIERlYnVnLndhcm4oImRlbGV0ZUl0ZW1CeU5hbWUgOjogIixvYmpOYW1lKTsKKyAgICAJCQorICAgIAkJdGhpcy5jaGVja1N0ZXBMYXllcnMoKTsKKyAgICAJCQorICAgIAkJaWYgKG5ld0FbMF0gPT0gInN3ZiIpIHsKKyAgICAgICAgICAgICAgICB0aGlzLmRvRGVsZXRlRnJvbURvY3VtZW50c0JhcihvYmpOYW1lKTsKKyAgICAJCX0KKyAgICAJCQorICAgIAkJcmV0dXJuIG5ld0E7CisgICAgCV1dPgorCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0iVXBkYXRlQnlPYmplY3QiIGFyZ3M9Im9ialJlZiI+CisJCTwhW0NEQVRBWworCQkvL0RlYnVnLndyaXRlKCJVcGRhdGVCeU9iamVjdCA6ICIsb2JqUmVmLG9ialJlZi5uYW1lKTsKKwkJdmFyIG9iak5hbWUgPSBvYmpSZWYubmFtZTsKKwkJLy9mb3IgKHZhciBlZz0wO2VnPHRoaXMubGF5ZXJzLmxlbmd0aDtlZysrKXsKKwkJLy8JaWYgKHRoaXMubGF5ZXJzW2VnXVsnbmFtZSddPT1vYmpOYW1lKSB7CisJCS8vCQkvL0RlYnVnLndyaXRlKCJGb3VuZCBPYmplY3QgaW4gTGF5ZXI6ICIsdGhpcy5sYXllcnNbZWddKTsKKwkJLy8JfQorCQkvL30KKwkJCisJCXZhciB0eCA9IG9ialJlZi54OworICAgICAgICB2YXIgdHkgPSBvYmpSZWYueTsKKyAgICAgICAgCisgICAgICAgIGlmKHRoaXMuaXNTbmFwVG9HcmlkKXsgICAKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdHggPSBNYXRoLnJvdW5kKHR4L3RoaXMuZ3JpZFdpZHRoKSp0aGlzLmdyaWRXaWR0aDsKKyAgICAgICAgICAgIHR5ID0gTWF0aC5yb3VuZCh0eS90aGlzLmdyaWRXaWR0aCkqdGhpcy5ncmlkV2lkdGg7CisgICAgICAgICAgICAKKyAgICAgICAgfQorCQkKKwkJZm9yICh2YXIgZWc9MDtlZzx0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0Lmxlbmd0aDtlZysrKXsKKwkJCWlmICh0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXVt0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXS5sZW5ndGgtMV09PW9iak5hbWUpIHsKKwkJCQkvL0RlYnVnLndyaXRlKCJGb3VuZCBPYmplY3Q6ICIsdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ10pOworCQkJCXRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddW3RoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddLmxlbmd0aC01XSA9IHR4OworCQkJCXRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddW3RoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddLmxlbmd0aC00XSA9IHR5OworCQkJCXRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddW3RoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddLmxlbmd0aC0zXSA9IG9ialJlZi53aWR0aDsKKwkJCQl0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXVt0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXS5sZW5ndGgtMl0gPSBvYmpSZWYuaGVpZ2h0OworCQkJCXZhciBuZXdBID0gdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ107CisJCQkJaWYgKG5ld0FbMF09PSdwYWludCcpIG5ld0FbMV0gPSBuZXcgQXJyYXkoKTsJCQkJCisJCQkJdGhpcy5vbnNoYXJlZE1lc3NhZ2UoJ3NpemUnLG5ld0EpOwkKKwkJCSAgICBicmVhazsKKwkJCX0KKwkJfQkKKwkJCQorCQldXT4KKwk8L21ldGhvZD4KKwkKKwk8IS0tICMjIyMjIyMjIyMjIyMjCisJCXVuZG8vcmVkbworCSAtLT4KKwkKKwk8bWV0aG9kIG5hbWU9InVuZG9yZWRvIj4KKwkJPCFbQ0RBVEFbCisJCWlmICh0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0Lmxlbmd0aD4wKXsKKwkJCWlmICh0aGlzLmJvdW5kaW5ncmVmIT1udWxsKSB0aGlzLmJvdW5kaW5ncmVmLnJlbW92ZUl0KCk7CisJCQl2YXIgbGFzdEFjdGlvbk9iamVjdCA9IHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3QucG9wKCk7CisJCQl0aGlzLmRlbGV0ZUl0ZW1CeU5hbWVTeW5jKGxhc3RBY3Rpb25PYmplY3RbbGFzdEFjdGlvbk9iamVjdC5sZW5ndGgtMV0pOworCQkJdGhpcy5vbnNoYXJlZE1lc3NhZ2UoJ3VuZG8nLGxhc3RBY3Rpb25PYmplY3QpOworCQl9CisJCV1dPgorCTwvbWV0aG9kPgorCisJCisJPG1ldGhvZCBuYW1lPSJjaGVja1N0ZXBMYXllcnMiPgorCQlpZiAodGhpcy5sYXllcnMubGVuZ3RoPT0wKXsKKwkJCXRoaXMuc2V0QXR0cmlidXRlKCdoYXNwcmV2aW91cycsZmFsc2UpOworCQl9IGVsc2UgeworCQkJdGhpcy5zZXRBdHRyaWJ1dGUoJ2hhc3ByZXZpb3VzJyx0cnVlKTsKKwkJfQorCQlpZiAodGhpcy5yZWRvbGF5ZXJzLmxlbmd0aD09MCl7CisJCQl0aGlzLnNldEF0dHJpYnV0ZSgnaGFzZW5leHQnLGZhbHNlKTsKKwkJfSBlbHNlIHsKKwkJCXRoaXMuc2V0QXR0cmlidXRlKCdoYXNlbmV4dCcsdHJ1ZSk7CisJCX0JCisJCS8vdGhpcy5zZXRBdHRyaWJ1dGUoJ2RyYXdtb2R1cycsdGhpcy5nZXRBdHRyaWJ1dGUoJ2RyYXdtb2R1cycpKTsJCQkJCisJPC9tZXRob2Q+CisJCisJPG1ldGhvZCBuYW1lPSJvbm1vdXNlb3Zlck1ldGhvZCI+CisJCQorCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0ib25tb3VzZW91dE1ldGhvZCI+CisgICAgICAgIAorICAgIDwvbWV0aG9kPgorICAgICAgICAgICAgIAorCTxtZXRob2QgbmFtZT0ib25tb3VzZWRvd25NZXRob2QiID4KKwkJPCFbQ0RBVEFbCisJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbm1vdXNlZG93bk1ldGhvZCB0aGlzLmRyYXdtb2R1czogIix0aGlzLmRyYXdtb2R1cyk7CisJCQorCQkKKwkJaWYodGhpcy5zZWxlY3RlZE9iamVjdHMgIT0gbnVsbCAmJiB0aGlzLnNlbGVjdGVkT2JqZWN0cy5sZW5ndGggPiAwKXsKKwkJCWZvciAodmFyIGVnPTA7ZWc8dGhpcy5zZWxlY3RlZE9iamVjdHMubGVuZ3RoO2VnKyspeworCQkJCXZhciAgb2JqZWN0VG9VcGRhdGUgPSB0aGlzLmdldE9iamVjdEJ5TmFtZSh0aGlzLnNlbGVjdGVkT2JqZWN0c1tlZ11bdGhpcy5zZWxlY3RlZE9iamVjdHNbZWddLmxlbmd0aC0xXSk7CisJICAgICAgICAgICAgb2JqZWN0VG9VcGRhdGUuc2V0QXR0cmlidXRlKCdvcGFjaXR5JywgMSk7CisJCQl9CisJCX0KKwkJCisJCWlmIChjYW52YXMuaXNtb2RlcmF0b3IgfHwgY2FudmFzLmlzQWxsb3dlZFRvRHJhdykgeworCQkJCisJCQlpZiAodGhpcy5sZXR0ZXJPYmplY3RJc0FjdGl2ZSl7CisJCQkJdGhpcy5jdXJyZW50bGV0dGVyT2JqLmRyYXd0b0FycmF5KCk7CisJCQkJdGhpcy5zZXRNb2R1c1dpdGhVcGRhdGUoImhhbmQiKTsKKwkJCQkvL2Jvb2wgPSB0cnVlOwkJCQkKKwkJCX0KKwkJCQorCQkJaWYodGhpcy5kcmF3bW9kdXM9PSJkcmFnIil7CisJCQkJdGhpcy5pc0RyYWdnaW5nID0gdHJ1ZTsKKwkJCQl0aGlzLmRyYWdnZXIuYXBwbHkoKTsKKwkJCX0gZWxzZSBpZih0aGlzLmRyYXdtb2R1cz09ImhhbmQiKXsKKwkJCQl0aGlzLmRvU2V0SGFuZEJvZHVzKCk7CQkJCQorCQkJfSBlbHNlIGlmKHRoaXMuZHJhd21vZHVzPT0icGFpbnQiKXsKKwkJCQl0aGlzLnN0YXJ0UGFpbnQoKTsKKwkJCQltb3VzZXRyYWNrZXJfZGVsLnJlZ2lzdGVyKGx6LklkbGUsJ29uaWRsZScpOworCQkJfSBlbHNlIGlmKHRoaXMuZHJhd21vZHVzPT0ibGluZSIpeworCQkJCXRoaXMuc3RhcnRMaW5lKG51bGwpOworCSAgCSAJCXRoaXMuc3RhcnR4ID0gY3VycmVudGxheWVyLmdldE1vdXNlKCd4Jyk7CisJCQkJdGhpcy5zdGFydHkgPSBjdXJyZW50bGF5ZXIuZ2V0TW91c2UoJ3knKTsgCQkJCisJCQkJbW91c2V0cmFja2VyX2RlbC5yZWdpc3Rlcihsei5JZGxlLCdvbmlkbGUnKTsKKwkJCX0gZWxzZSBpZih0aGlzLmRyYXdtb2R1cz09InVsaW5lIil7CisJCQkJdGhpcy5zdGFydFVsaW5lKG51bGwpOworCSAgCSAJCXRoaXMuc3RhcnR4ID0gY3VycmVudGxheWVyLmdldE1vdXNlKCd4Jyk7CisJCQkJdGhpcy5zdGFydHkgPSBjdXJyZW50bGF5ZXIuZ2V0TW91c2UoJ3knKTsgCQkJCisJCQkJbW91c2V0cmFja2VyX2RlbC5yZWdpc3Rlcihsei5JZGxlLCdvbmlkbGUnKTsKKwkJCX0gZWxzZSBpZih0aGlzLmRyYXdtb2R1cz09ImRyYXdhcnJvdyIpeworCQkJCXRoaXMuc3RhcnREcmF3YXJyb3dsaW5lKG51bGwpOworCSAgCSAJCXRoaXMuc3RhcnR4ID0gY3VycmVudGxheWVyLmdldE1vdXNlKCd4Jyk7CisJCQkJdGhpcy5zdGFydHkgPSBjdXJyZW50bGF5ZXIuZ2V0TW91c2UoJ3knKTsgCQkJCisJCQkJbW91c2V0cmFja2VyX2RlbC5yZWdpc3Rlcihsei5JZGxlLCdvbmlkbGUnKTsKKwkJCX0gZWxzZSBpZiAodGhpcy5kcmF3bW9kdXMgPT0gJ3JlY3RhbmdsZScpIHsKKwkJCQl0aGlzLnN0YXJ0UmVjdChudWxsKTsKKwkgIAkgCQl0aGlzLnN0YXJ0eCA9IGN1cnJlbnRsYXllci5nZXRNb3VzZSgneCcpOworCQkJCXRoaXMuc3RhcnR5ID0gY3VycmVudGxheWVyLmdldE1vdXNlKCd5Jyk7IAkJCQkKKwkgICAgICAgICAgICBtb3VzZXRyYWNrZXJfZGVsLnJlZ2lzdGVyKGx6LklkbGUsJ29uaWRsZScpOworCSAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRyYXdtb2R1cyA9PSAnZWxsaXBzZScpIHsKKwkJCQl0aGlzLnN0YXJ0RWxsaXBzZShudWxsKTsKKwkgIAkgCQl0aGlzLnN0YXJ0eCA9IGN1cnJlbnRsYXllci5nZXRNb3VzZSgneCcpOworCQkJCXRoaXMuc3RhcnR5ID0gY3VycmVudGxheWVyLmdldE1vdXNlKCd5Jyk7IAkJCQkKKwkgICAgICAgICAgICBtb3VzZXRyYWNrZXJfZGVsLnJlZ2lzdGVyKGx6LklkbGUsJ29uaWRsZScpOworCSAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRyYXdtb2R1cyA9PSAnbGV0dGVyJykgeworICAgICAgICAgICAgICAgIHRoaXMuc3RhcnRMZXR0ZXIoKTsKKyAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0eCA9IGN1cnJlbnRsYXllci5nZXRNb3VzZSgneCcpOworICAgICAgICAgICAgICAgIHRoaXMuc3RhcnR5ID0gY3VycmVudGxheWVyLmdldE1vdXNlKCd5Jyk7ICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgbW91c2V0cmFja2VyX2RlbC5yZWdpc3Rlcihsei5JZGxlLCdvbmlkbGUnKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kcmF3bW9kdXMgPT0gJ2NsaXBhcnQnKSB7CisgICAgICAgICAgICAJdGhpcy5zdGFydERyYXdDbGlwQXJ0KG51bGwpOworICAgICAgICAgICAgICAgIHRoaXMuc3RhcnR4ID0gY3VycmVudGxheWVyLmdldE1vdXNlKCd4Jyk7CisgICAgICAgICAgICAgICAgdGhpcy5zdGFydHkgPSBjdXJyZW50bGF5ZXIuZ2V0TW91c2UoJ3knKTsgIAorICAgICAgICAgICAgICAgIG1vdXNldHJhY2tlcl9kZWwucmVnaXN0ZXIobHouSWRsZSwnb25pZGxlJyk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZHJhd21vZHVzID09ICd0cmlhbmdsZScpIHsKKwkJCQl0aGlzLnN0YXJ0VHJpYW5nbGUobnVsbCk7CisJICAJIAkJdGhpcy5zdGFydHggPSBjdXJyZW50bGF5ZXIuZ2V0TW91c2UoJ3gnKTsKKwkJCQl0aGlzLnN0YXJ0eSA9IGN1cnJlbnRsYXllci5nZXRNb3VzZSgneScpOyAJCQkJCisJICAgICAgICAgICAgbW91c2V0cmFja2VyX2RlbC5yZWdpc3Rlcihsei5JZGxlLCdvbmlkbGUnKTsKKwkgICAgICAgIH1lbHNlIGlmICh0aGlzLmRyYXdtb2R1cyA9PSAncGFzdGUnKSB7CisJCQkJLy90aGlzLnN0YXJ0U2VsZWN0KG51bGwpOworCSAgCSAJCXZhciBwYXN0ZV94ID0gcGFyZW50LmdldE1vdXNlKCd4Jyk7CisJCQkJdmFyIHBhc3RlX3kgPSBwYXJlbnQuZ2V0TW91c2UoJ3knKTsgCQkJCQorCSAgICAgICAgICAgIC8vbW91c2V0cmFja2VyX2RlbC5yZWdpc3Rlcihsei5JZGxlLCdvbmlkbGUnKTsKKwkgICAgICAgICAgICB0aGlzLnBhc3RlKHBhc3RlX3gsIHBhc3RlX3kpOworCSAgICAgICAgICAgIAorCSAgICAgICAgICAgIC8vdGhpcy5zZXRNb2R1cygiaGFuZCIpOworCQkJCQorCSAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJwYXN0ZSBtb3VzZSBkb3duICIsdGhpcyk7CisJICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib25tb3VzZWRvd25NZXRob2QgVW5rb3duIE1vZHVzICIsdGhpcy5kcmF3bW9kdXMpOworCSAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgIAlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib25tb3VzZWRvd25NZXRob2QgVW5rb3duIE1vZHVzICIsdGhpcy5kcmF3bW9kdXMpOworCSAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAKKyAgICAgICAgfQorICAgICAgICBdXT4KKwk8L21ldGhvZD4KKworCTxtZXRob2QgbmFtZT0ib25tb3VzZXVwTWV0aG9kIiA+CisgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbm1vdXNldXBNZXRob2QgdGhpcy5kcmF3bW9kdXM6ICIsdGhpcy5kcmF3bW9kdXMpOworCQk8IVtDREFUQVsJCisJICAgICAgICBpZiAoY2FudmFzLmlzbW9kZXJhdG9yIHx8IGNhbnZhcy5pc0FsbG93ZWRUb0RyYXcpIHsKKwkJCQkvL3ZhciBib29sID0gZmFsc2U7CisJCQkJCisJICAgICAgICAJaWYodGhpcy5kcmF3bW9kdXM9PSJkcmFnIil7CisJICAgICAgICAJCXRoaXMuaXNEcmFnZ2luZyA9IGZhbHNlOworCSAgICAgICAgCQl0aGlzLmRyYWdnZXIucmVtb3ZlKCk7CisJICAgICAgICAJCQorCSAgICAgICAgCQl0aGlzLnNldEF0dHJpYnV0ZSgieCIsTWF0aC5yb3VuZCh0aGlzLngpKTsKKwkgICAgICAgIAkJdGhpcy5zZXRBdHRyaWJ1dGUoInkiLE1hdGgucm91bmQodGhpcy55KSk7CisJICAgICAgICAJCQorCSAgICAgICAgCQlpZiAodGhpcy5sYXN0X3ggPT0gdGhpcy54ICYmIHRoaXMubGFzdF94ID09IHRoaXMueCkgeworCSAgICAgICAgCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIk5vIENoYW5nZSIpOworCSAgICAgICAgCQkJcmV0dXJuOworCSAgICAgICAgCQl9CisJICAgICAgICAJCQorCSAgICAgICAgCQl0aGlzLmxhc3RfeCA9IHRoaXMueDsKKwkgICAgICAgIAkJdGhpcy5sYXN0X3kgPSB0aGlzLnk7CisJICAgICAgICAJCQorCSAgICAgICAgCQl2YXIgdEFycmF5ID0gbmV3IEFycmF5KCk7CisJCSAgICAJCXRBcnJheVswXSA9ICJtb3ZlTWFwIjsKKwkJICAgIAkJdEFycmF5WzFdID0gdGhpcy54OworCQkgICAgCQl0QXJyYXlbMl0gPSB0aGlzLnk7CisJCSAgICAJCQorCQkgICAgCQl0aGlzLm9uc2hhcmVkTWVzc2FnZSgnbW92ZU1hcCcsdEFycmF5KTsKKwkgICAgICAgIAkJCisJICAgICAgICAJfSBlbHNlIGlmKHRoaXMuZHJhd21vZHVzPT0icGFpbnQiKXsKKwkJCQkJdGhpcy5lbmRQYWludCgpOworCQkJCQltb3VzZXRyYWNrZXJfZGVsLnVucmVnaXN0ZXJBbGwoKTsKKwkJCQl9IGVsc2UgaWYodGhpcy5kcmF3bW9kdXM9PSJsaW5lIil7CisJCQkJCXRoaXMuZW5kTGluZSgpOworCQkJCQltb3VzZXRyYWNrZXJfZGVsLnVucmVnaXN0ZXJBbGwoKTsKKwkJCQl9IGVsc2UgaWYodGhpcy5kcmF3bW9kdXM9PSJkcmF3YXJyb3ciKXsKKwkJCQkJdGhpcy5lbmREcmF3YXJyb3dsaW5lKCk7CisJCQkJCW1vdXNldHJhY2tlcl9kZWwudW5yZWdpc3RlckFsbCgpOworCQkJCX0gZWxzZSBpZih0aGlzLmRyYXdtb2R1cz09InVsaW5lIil7CisJCQkJCXRoaXMuZW5kVWxpbmUoKTsKKwkJCQkJbW91c2V0cmFja2VyX2RlbC51bnJlZ2lzdGVyQWxsKCk7CisJCQkJfSBlbHNlIGlmKHRoaXMuZHJhd21vZHVzPT0ibGV0dGVyIil7CisJCQkJCS8vaWYgKCF0aGlzLmxldHRlck9iamVjdElzQWN0aXZlICYmICFib29sKXsKKwkJCQkJLy8JdGhpcy5jdXJyZW50bGV0dGVyT2JqID0gbmV3IGx6LmJhc2VEcmF3V29yZHMoY2FudmFzLHtyZWZPYmo6dGhpcyx4OmNhbnZhcy5nZXRNb3VzZSgneCcpLAorCQkJCQkvLwkJeTpjYW52YXMuZ2V0TW91c2UoJ3knKX0pOworCQkJCQkvL30KKwkJCQkJdGhpcy5lbmRMZXR0ZXIoKTsKKwkJCQkJbW91c2V0cmFja2VyX2RlbC51bnJlZ2lzdGVyQWxsKCk7CisJCQkJfSBlbHNlIGlmICh0aGlzLmRyYXdtb2R1cyA9PSAncmVjdGFuZ2xlJykgeworCQkJCQl0aGlzLmVuZFJlY3QoKTsKKwkJICAgICAgICAJbW91c2V0cmFja2VyX2RlbC51bnJlZ2lzdGVyQWxsKCk7CisJCSAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRyYXdtb2R1cyA9PSAnZWxsaXBzZScpIHsKKwkJCQkJdGhpcy5lbmRFbGxpcHNlKCk7CisJCSAgICAgICAgCW1vdXNldHJhY2tlcl9kZWwudW5yZWdpc3RlckFsbCgpOworCQkgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kcmF3bW9kdXMgPT0gJ3BvaW50ZXInKSB7CisJCSAgICAgICAgCXRoaXMuc2V0QXR0cmlidXRlKCdkcmF3bW9kdXMnLCdoYW5kJyk7CisJCQkJCWlmICh0aGlzLmJvdW5kaW5nSXNBY3RpdmUpeworCQkJCQkJdGhpcy5ib3VuZGluZ3JlZi5faW5uZXJEcmFnLm9ubW91c2V1cC5zZW5kRXZlbnQoKTsKKwkJCQkJfQorCQkgICAgICAgIH0gZWxzZSBpZiAodGhpcy5kcmF3bW9kdXMgPT0gJ3BvaW50ZXJXaGl0ZWJvYXJkJykgeworICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgicG9pbnRlcldoaXRlYm9hcmQgc2V0IE5ldyBQb2ludCAiKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5lbmRQb2ludGVyV2hpdGVCb2FyZCgpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZih0aGlzLmRyYXdtb2R1cz09ImNsaXBhcnQiKXsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5lbmREcmF3Q2xpcEFydCgpOworICAgICAgICAgICAgICAgICAgICBtb3VzZXRyYWNrZXJfZGVsLnVucmVnaXN0ZXJBbGwoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZHJhd21vZHVzID09ICd0cmlhbmdsZScpIHsKKwkJCQkJdGhpcy5lbmRUcmlhbmdsZSgpOworCQkgICAgICAgIAltb3VzZXRyYWNrZXJfZGVsLnVucmVnaXN0ZXJBbGwoKTsKKwkJICAgICAgICB9IGVsc2UgaWYgKHRoaXMuZHJhd21vZHVzID09ICdoYW5kJykgeworCQkJCQl0aGlzLmVuZFNlbGVjdCgpOworCQkgICAgICAgIAltb3VzZXRyYWNrZXJfZGVsLnVucmVnaXN0ZXJBbGwoKTsKKwkJICAgICAgICB9ZWxzZSBpZiAodGhpcy5kcmF3bW9kdXMgPT0gJ3Bhc3RlJykgeworCQkJCQkvL3RoaXMuc2V0TW9kdXMoImhhbmQiKTsKKwkJCQkJLy90aGlzLnNldEF0dHJpYnV0ZSgnZHJhd21vZHVzJywnaGFuZCcpOworCQkJCQkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbm1vdXNldXBNZXRob2QgcGFzdGUgIix0aGlzLmRyYXdtb2R1cyk7CisJCSAgICAgICAgfSBlbHNlIHsKKwkJICAgICAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9ubW91c2V1cE1ldGhvZCBVbmtvd24gTW9kdXMgIix0aGlzLmRyYXdtb2R1cyk7CisJCSAgICAgICAgfQorCSAgICAgICAgICAgICAgICAKKwkJICAgICAgICAvLy8vRGVidWcud3JpdGUoIm9ubW91c2V1cDogIix0aGlzLmxldHRlck9iamVjdElzQWN0aXZlLHRoaXMuY3VycmVudGxldHRlck9iaik7CSAgICAgICAgCisJCQkJdGhpcy5jaGVja1N0ZXBMYXllcnMoKTsKKwkgICAgICAgIH0gZWxzZSB7CisJICAgICAgICAJaWYgKCF0aGlzLnJlc3RyaWN0ZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5lbmRQb2ludGVyV2hpdGVCb2FyZCgpOworCSAgICAgICAgCX0KKyAgICAgICAgICAgIH0KKwkJXV0+CisJPC9tZXRob2Q+ICAKKyAgICAKKyAgICA8IS0tCisgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayIgYXJncz0ib2JqIj4KKyAgICAgICAgLy9EZWJ1Zy53cml0ZSgiY2xpY2sgb24gd2hpdGVCb2FyZCAiLG9iaik7CisgICAgPC9oYW5kbGVyPgorICAgICAtLT4KKworICAJPG1ldGhvZCBuYW1lPSJ0cmFja21vdXNlIiBhcmdzPSJpdGVtIj4KKyAgICAJPCFbQ0RBVEFbCisKKyAgICAJdGhpcy5teCA9IGN1cnJlbnRsYXllci5nZXRNb3VzZSgneCcpOworICAgIAl0aGlzLm15ID0gY3VycmVudGxheWVyLmdldE1vdXNlKCd5Jyk7ICAgCisJICAgIAkgICAgCQorICAgIAlpZiAodGhpcy5kcmF3bW9kdXM9PSJwYWludCIpewkgICAgCQorCQkgICAgaWYgKG14ICE9IHByZXZ4IHx8IG15ICE9IHByZXZ5KSB7CisJCSAgICAgICAgaWYgKHByZXZ4ID09IG51bGwpIHsKKwkJICAgICAgICAgICAgcHJldnggPSBteDsKKwkJICAgICAgICB9CisJCSAgICAgICAgaWYgKHByZXZ5ID09IG51bGwpIHsKKwkJICAgICAgICAgICAgcHJldnkgPSBteTsKKwkJICAgICAgICB9CisJICAgICAgICAgICAgdmFyIG1teCA9IHRoaXMubXg7CisJICAgICAgICAgICAgdmFyIG1teSA9IHRoaXMubXk7CisJICAgICAgICAgICAgdmFyIHB4ID0gdGhpcy5wcmV2eDsKKwkgICAgICAgICAgICB2YXIgcHkgPSB0aGlzLnByZXZ5OworCisJICAgICAgICAgICAgdGhpcy5kcmF3bGluZShweCwgcHksIG1teCwgbW15KTsKKwkgICAgICAgICAgICB0aGlzLmRyYXdsaW5lUmVnaXN0ZXJQYWludChweCwgcHksIG1teCwgbW15KTsKKwkgICAgICAgICAgICAKKwkgICAgICAgICAgICB0aGlzLnByZXZ4ICA9IHRoaXMubXg7CisJICAgICAgICAgICAgdGhpcy5wcmV2eSA9IHRoaXMubXk7ICAgICAgICAgICAgCisJICAgICAgICB9IAorCSAgICB9IGVsc2UgaWYgKHRoaXMuZHJhd21vZHVzPT0ibGluZSIpewkgCisJICAgIAl2YXIgb2lkX25hbWUgPSB0aGlzLmN1cnJlbnRsYXllci5uYW1lOworCSAgICAJdGhpcy5jdXJyZW50bGF5ZXIuZGVzdHJveSgpOworCSAgICAJdGhpcy5zdGFydExpbmUob2lkX25hbWUpOworCQkJdGhpcy5lbmR4ID0gdGhpcy5teDsKKwkJCXRoaXMuZW5keSA9IHRoaXMubXk7CisgICAgICAgICAgICB0aGlzLmRyYXdsaW5lKHRoaXMuc3RhcnR4LCB0aGlzLnN0YXJ0eSwgdGhpcy5lbmR4LCB0aGlzLmVuZHkpOworCSAgICB9IGVsc2UgaWYgKHRoaXMuZHJhd21vZHVzPT0idWxpbmUiKXsKKwkgICAgCXZhciBvaWRfbmFtZSA9IHRoaXMuY3VycmVudGxheWVyLm5hbWU7CisJICAgIAl0aGlzLmN1cnJlbnRsYXllci5kZXN0cm95KCk7CisJICAgIAl0aGlzLnN0YXJ0VWxpbmUob2lkX25hbWUpOworCQkJdGhpcy5lbmR4ID0gdGhpcy5teDsKKwkJCXRoaXMuZW5keSA9IHRoaXMubXk7CisgICAgICAgICAgICB0aGlzLmRyYXdsaW5lKHRoaXMuc3RhcnR4LCB0aGlzLnN0YXJ0eSwgdGhpcy5lbmR4LCB0aGlzLmVuZHkpOworCSAgICB9IGVsc2UgaWYgKHRoaXMuZHJhd21vZHVzPT0iZHJhd2Fycm93Iil7CQorCSAgICAJdmFyIG9pZF9uYW1lID0gdGhpcy5jdXJyZW50bGF5ZXIubmFtZTsKKwkgICAgCXRoaXMuY3VycmVudGxheWVyLmRlc3Ryb3koKTsKKwkgICAgCXRoaXMuc3RhcnREcmF3YXJyb3dsaW5lKG9pZF9uYW1lKTsKKwkJCXRoaXMuZW5keCA9IHRoaXMubXg7CisJCQl0aGlzLmVuZHkgPSB0aGlzLm15OworCSAgICB9IGVsc2UgaWYgKHRoaXMuZHJhd21vZHVzID09ICdyZWN0YW5nbGUnKSB7CisJICAgIAl2YXIgb2lkX25hbWUgPSB0aGlzLmN1cnJlbnRsYXllci5uYW1lOworCSAgICAJdGhpcy5jdXJyZW50bGF5ZXIuZGVzdHJveSgpOworCSAgICAJdGhpcy5zdGFydFJlY3Qob2lkX25hbWUpOworCQkJLy8gc3RyZXRjaHkgcmVjdCBtb2RlCisJCQl0aGlzLmVuZHggPSB0aGlzLm14OworCQkJdGhpcy5lbmR5ID0gdGhpcy5teTsKKwkJCXRoaXMuZHJhd3JlY3RhbmdsZSAodGhpcy5zdGFydHgsIHRoaXMuc3RhcnR5LCB0aGlzLm14LCB0aGlzLm15KTsKKwkJfSBlbHNlIGlmICh0aGlzLmRyYXdtb2R1cyA9PSAndHJpYW5nbGUnKSB7CisJICAgIAl2YXIgb2lkX25hbWUgPSB0aGlzLmN1cnJlbnRsYXllci5uYW1lOworCSAgICAJdGhpcy5jdXJyZW50bGF5ZXIuZGVzdHJveSgpOworCSAgICAJdGhpcy5zdGFydFRyaWFuZ2xlKG9pZF9uYW1lKTsKKwkJCS8vIHN0cmV0Y2h5IHJlY3QgbW9kZQorCQkJdGhpcy5lbmR4ID0gdGhpcy5teDsKKwkJCXRoaXMuZW5keSA9IHRoaXMubXk7CisJCQl0aGlzLmRyYXd0cmlhbmdsZSAodGhpcy5zdGFydHgsIHRoaXMuc3RhcnR5LCB0aGlzLm14LCB0aGlzLm15KTsKKwkJfSBlbHNlIGlmICh0aGlzLmRyYXdtb2R1cyA9PSAnZWxsaXBzZScpIHsKKwkJCXZhciBvaWRfbmFtZSA9IHRoaXMuY3VycmVudGxheWVyLm5hbWU7CisJICAgIAl0aGlzLmN1cnJlbnRsYXllci5kZXN0cm95KCk7CisJICAgIAl0aGlzLnN0YXJ0RWxsaXBzZShvaWRfbmFtZSk7CisJCQkvLyBzdHJldGNoeSByZWN0IG1vZGUKKwkJCXRoaXMuZW5keCA9IHRoaXMubXg7CisJCQl0aGlzLmVuZHkgPSB0aGlzLm15OworCQkJdGhpcy5kcmF3ZWxsaXBzZSAodGhpcy5zdGFydHgsIHRoaXMuc3RhcnR5LCB0aGlzLm14LCB0aGlzLm15KTsJCQkKKwkJfSBlbHNlIGlmICh0aGlzLmRyYXdtb2R1cyA9PSAnbGV0dGVyJykgeworCQkJdmFyIG9pZF9uYW1lID0gdGhpcy5jdXJyZW50bGF5ZXIubmFtZTsKKwkgICAgCXRoaXMuY3VycmVudGxheWVyLmRlc3Ryb3koKTsKKwkgICAgCXRoaXMuc3RhcnRMZXR0ZXIob2lkX25hbWUpOworCQkJLy8gc3RyZXRjaHkgcmVjdCBtb2RlCisJCQl0aGlzLmVuZHggPSB0aGlzLm14OworCQkJdGhpcy5lbmR5ID0gdGhpcy5teTsKKwkJCXRoaXMuZHJhd2xldHRlckJvdW5kaW5nQm94ICh0aGlzLnN0YXJ0eCwgdGhpcy5zdGFydHksIHRoaXMubXgsIHRoaXMubXkpOwkJCQorCQl9IGVsc2UgaWYgKHRoaXMuZHJhd21vZHVzPT0iY2xpcGFydCIpeyAKKyAgICAgICAgICAgIC8vdmFyIG9pZF9uYW1lID0gdGhpcy5jdXJyZW50bGF5ZXIubmFtZTsKKyAgICAgICAgICAgIC8vdGhpcy5jdXJyZW50bGF5ZXIuZGVzdHJveSgpOworICAgICAgICAgICAgdGhpcy50cmFja0RyYXdDbGlwQXJ0KCk7CisgICAgICAgICAgICB0aGlzLmVuZHggPSB0aGlzLm14OworICAgICAgICAgICAgdGhpcy5lbmR5ID0gdGhpcy5teTsKKyAgICAgICAgfSBlbHNlIGlmICh0aGlzLmRyYXdtb2R1cyA9PSAnY29weScpIHsKKwkgICAgCXZhciBvaWRfbmFtZSA9IHRoaXMuY3VycmVudGxheWVyLm5hbWU7CisJICAgIAl0aGlzLmN1cnJlbnRsYXllci5kZXN0cm95KCk7CisJICAgIAl0aGlzLnN0YXJ0U2VsZWN0KG9pZF9uYW1lKTsKKwkJCS8vIHN0cmV0Y2h5IHJlY3QgbW9kZQorCQkJdGhpcy5lbmR4ID0gdGhpcy5teDsKKwkJCXRoaXMuZW5keSA9IHRoaXMubXk7CisJCQl0aGlzLmRyYXdyZWN0YW5nbGUgKHRoaXMuc3RhcnR4LCB0aGlzLnN0YXJ0eSwgdGhpcy5teCwgdGhpcy5teSk7CisgICAgICAgIH1lbHNlIGlmICh0aGlzLmRyYXdtb2R1cyA9PSAnaGFuZCcpIHsKKwkgICAgCXZhciBvaWRfbmFtZSA9IHRoaXMuY3VycmVudGxheWVyLm5hbWU7CisJICAgIAl0aGlzLmN1cnJlbnRsYXllci5kZXN0cm95KCk7CisJICAgIAl0aGlzLnN0YXJ0U2VsZWN0KG9pZF9uYW1lKTsKKwkJCS8vIHN0cmV0Y2h5IHJlY3QgbW9kZQorCQkJdGhpcy5lbmR4ID0gdGhpcy5teDsKKwkJCXRoaXMuZW5keSA9IHRoaXMubXk7CisJCQl0aGlzLmRyYXdyZWN0YW5nbGUgKHRoaXMuc3RhcnR4LCB0aGlzLnN0YXJ0eSwgdGhpcy5teCwgdGhpcy5teSk7CisgICAgICAgIH0KKwkJCisgICAgCV1dPgorICAgIDwvbWV0aG9kPgorCQorCTwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkJSGFuZG1vZHVzCisJIC0tPgorCTxtZXRob2QgbmFtZT0iZG9TZXRIYW5kQm9kdXMiID4KKwkJPCFbQ0RBVEFbCisJCS8vLy9EZWJ1Zy53cml0ZSgiZG9TZXRIYW5kQm9kdXM6ICIpOworCQl2YXIgb2JqTGlzdCA9IHRoaXMuZ2V0T2JqZWN0SW5Cb3VuZHModGhpcy5nZXRNb3VzZSgneCcpLHRoaXMuZ2V0TW91c2UoJ3knKSk7CisJCWlmKG9iakxpc3QubGVuZ3RoPT0xKXsKKwkJCXRoaXMuc2V0QXR0cmlidXRlKCdkcmF3bW9kdXMnLCdwb2ludGVyJyk7CisJCQkvLy8vRGVidWcud3JpdGUob2JqTGlzdFswXVtvYmpMaXN0WzBdLmxlbmd0aC0xXSk7CisJCQl0aGlzLmRvU2hvd09iamVjdEJvdW5kcyhvYmpMaXN0WzBdW29iakxpc3RbMF0ubGVuZ3RoLTFdKTsKKwkJfSBlbHNlIGlmIChvYmpMaXN0Lmxlbmd0aD4xKXsKKwkJCXRoaXMuc2V0QXR0cmlidXRlKCdkcmF3bW9kdXMnLCdwb2ludGVyJyk7CisJCQkvLy8vRGVidWcud3JpdGUob2JqTGlzdFtvYmpMaXN0Lmxlbmd0aC0xXVtvYmpMaXN0W29iakxpc3QubGVuZ3RoLTFdLmxlbmd0aC0xXSk7CisJCQl0aGlzLmRvU2hvd09iamVjdEJvdW5kcyhvYmpMaXN0W29iakxpc3QubGVuZ3RoLTFdW29iakxpc3Rbb2JqTGlzdC5sZW5ndGgtMV0ubGVuZ3RoLTFdKTsKKwkJfSBlbHNlIHsKKwkJCXRoaXMuc3RhcnRTZWxlY3QobnVsbCk7CisgIAkgCQl0aGlzLnN0YXJ0eCA9IGN1cnJlbnRsYXllci5nZXRNb3VzZSgneCcpOworCQkJdGhpcy5zdGFydHkgPSBjdXJyZW50bGF5ZXIuZ2V0TW91c2UoJ3knKTsgCQkJCQorICAgICAgICAgICAgbW91c2V0cmFja2VyX2RlbC5yZWdpc3Rlcihsei5JZGxlLCdvbmlkbGUnKTsKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ0aGlzLnN0YXJ0U2VsZWN0ICIsdGhpcyk7CisJICAgICAgICAgICAgCisJCQl0aGlzLnNldE1vZHVzKCJoYW5kIik7CisJCX0KKwkJXV0+CisJPC9tZXRob2Q+CisJCisgICAgPG1ldGhvZCBuYW1lPSJkb1Nob3dPYmplY3RCb3VuZHMiIGFyZ3M9InZhbCI+CisgICAgPCFbQ0RBVEFbCisgICAgCWlmICh2YWwgIT1udWxsICYmIHZhbCE9JycpeworCSAgICAJdGhpcy5PYmplY3RCeU5hbWUgPSB0aGlzLmdldE9iamVjdEJ5TmFtZSh2YWwpOworCSAgICAJLy9GSVhNRTogU2V0IENvcnJlbnQgVmFsdWUgdG8gRG9jdW1lbnQgVG9vbGJhciBvciB1c2UgYW5vdGhlciB2YXIKKyAgICAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIGJvdW5kaW5nRG9VcGRhdGVPbkluaXQgPSB0cnVlOworICAgICAgICAgICAgaWYgKHRoaXMuT2JqZWN0QnlOYW1lIGluc3RhbmNlb2YgbHouc3dmUmVzb3VyY2VWaWV3KXsKKyAgICAgICAgICAgICAgICAvL0RlYnVnLndyaXRlKCJpcyBzd2YgUHJlc2VudGF0aW9uIik7CisgICAgICAgICAgICAgICAgYm91bmRpbmdEb1VwZGF0ZU9uSW5pdD1mYWxzZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidGhpcy5PYmplY3RCeU5hbWUgIix2YWwsdGhpcy5PYmplY3RCeU5hbWUpOworICAgICAgICAgICAgICAgIAorCSAgICAJdmFyIHggPSB0aGlzLk9iamVjdEJ5TmFtZS54OworCSAgICAJdmFyIHkgPSB0aGlzLk9iamVjdEJ5TmFtZS55OworICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZG9TaG93T2JqZWN0Qm91bmRzOiAiLHgseSk7CisJICAgIAl2YXIgd2lkdGggPSB0aGlzLk9iamVjdEJ5TmFtZS53aWR0aDsKKwkgICAgCXZhciBoZWlnaHQgPSB0aGlzLk9iamVjdEJ5TmFtZS5oZWlnaHQ7CisJICAgIAlpZiAodGhpcy5ib3VuZGluZ3JlZiE9bnVsbCl0aGlzLmJvdW5kaW5ncmVmLnJlbW92ZUl0KCk7CisJICAgIAl0aGlzLmJvdW5kaW5ncmVmID0gbmV3IGx6LmJvdW5kaW5nQm94QWxsKHRoaXMucGFyZW50LnBhcmVudC5fZHJhd2FyZWFNYXNrLl9kcmF3YXJlYSx7d2hpdGVib2FyZFJlZjp0aGlzLAorICAgICAgICAgICAgICAgICAgICBvYmpSZWY6dGhpcy5PYmplY3RCeU5hbWUseDp4LTIwMCx5OnktMjAwLHdpZHRoOndpZHRoKzQwMCxoZWlnaHQ6aGVpZ2h0KzQwMCwKKyAgICAgICAgICAgICAgICAgICAgY2FuQmVEcmFnZ2VkOmJvdW5kaW5nRG9VcGRhdGVPbkluaXQsY2FuQmVSZXNpemVkOmJvdW5kaW5nRG9VcGRhdGVPbkluaXQsCisgICAgICAgICAgICAgICAgICAgIGV4OngsZXk6eSxld2lkdGg6d2lkdGgsZWhlaWdodDpoZWlnaHQsYm91bmRpbmdEb1VwZGF0ZU9uSW5pdDpib3VuZGluZ0RvVXBkYXRlT25Jbml0fSk7CisJICAgIAl0aGlzLnNldEF0dHJpYnV0ZSgnYm91bmRpbmdJc0FjdGl2ZScsdHJ1ZSk7CisgICAgICAgIAorICAgICAgICAgICAgLy9pZiAoIWJvdW5kaW5nRG9VcGRhdGVPbkluaXQpIHsKKyAgICAgICAgICAgIC8vICAgIHRoaXMuYm91bmRpbmdyZWYuX2lubmVyLl9pbm5lci5zZXRBdHRyaWJ1dGUoJ3dpZHRoJyx0aGlzLk9iamVjdEJ5TmFtZS5fc3dmVmlldy53aWR0aCk7CisgICAgICAgICAgICAvLyAgICB0aGlzLmJvdW5kaW5ncmVmLl9pbm5lci5faW5uZXIuc2V0QXR0cmlidXRlKCdoZWlnaHQnLHRoaXMuT2JqZWN0QnlOYW1lLl9zd2ZWaWV3LmhlaWdodCk7CisgICAgICAgICAgICAvLyAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiTkVXIFdJRFRIIEFORCBIRUlHSFQgT0YgU1dGICIsdGhpcy5PYmplY3RCeU5hbWUuX3N3ZlZpZXcud2lkdGgsdGhpcy5PYmplY3RCeU5hbWUuX3N3ZlZpZXcuaGVpZ2h0KTsKKyAgICAgICAgICAgIC8vICAgIHRoaXMuYm91bmRpbmdyZWYuX2lubmVyLnNldEF0dHJpYnV0ZSgndmlzaWJsZScsdHJ1ZSk7CisgICAgICAgICAgICAvLyAgICBwYXJlbnQucGFyZW50LmNoYW5nZU1lbnUoMix0cnVlKTsKKyAgICAgICAgICAgIC8vICAgIHRoaXMuZG9VcGRhdGVEb2N1bWVudFRvb2xCYXIoKTsKKyAgICAgICAgICAgIC8vfSBlbHNlIHsKKyAgICAgICAgICAgIC8vICAgIHBhcmVudC5wYXJlbnQuY2hhbmdlTWVudSgxLHRydWUpOworICAgICAgICAgICAgLy99CisgICAgICAgICAgICAgCisgICAgCX0KKyAgICBdXT4KKyAgICA8L21ldGhvZD4gICAKKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InJlc2VsZWN0U2hvd09iamVjdEJvdW5kcyIgYXJncz0idmFsIj4KKyAgICA8IVtDREFUQVsKKyAgICAgICAgaWYgKHZhbCAhPW51bGwgJiYgdmFsIT0nJyl7CisgICAgICAgICAgICB0aGlzLk9iamVjdEJ5TmFtZSA9IHRoaXMuZ2V0T2JqZWN0QnlOYW1lKHZhbCk7CisgICAgICAgICAgICAvL0ZJWE1FOiBTZXQgQ29ycmVudCBWYWx1ZSB0byBEb2N1bWVudCBUb29sYmFyIG9yIHVzZSBhbm90aGVyIHZhcgorICAgICAgICAgICAgICAgCisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInRoaXMuT2JqZWN0QnlOYW1lICIsdmFsLHRoaXMuT2JqZWN0QnlOYW1lKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciB4ID0gdGhpcy5PYmplY3RCeU5hbWUueDsKKyAgICAgICAgICAgIHZhciB5ID0gdGhpcy5PYmplY3RCeU5hbWUueTsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImRvU2hvd09iamVjdEJvdW5kczogIix4LHkpOworICAgICAgICAgICAgdmFyIHdpZHRoID0gdGhpcy5PYmplY3RCeU5hbWUud2lkdGg7CisgICAgICAgICAgICB2YXIgaGVpZ2h0ID0gdGhpcy5PYmplY3RCeU5hbWUuaGVpZ2h0OworICAgICAgICAgICAgaWYgKHRoaXMuYm91bmRpbmdyZWYhPW51bGwpdGhpcy5ib3VuZGluZ3JlZi5yZW1vdmVJdCgpOworICAgICAgICAgICAgdGhpcy5ib3VuZGluZ3JlZiA9IG5ldyBsei5ib3VuZGluZ0JveEFsbCh0aGlzLnBhcmVudC5wYXJlbnQuX2RyYXdhcmVhTWFzay5fZHJhd2FyZWEseworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGl0ZWJvYXJkUmVmOnRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ialJlZjp0aGlzLk9iamVjdEJ5TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDp4LTIwMCx5OnktMjAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDp3aWR0aCs0MDAsaGVpZ2h0OmhlaWdodCs0MDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbkJlRHJhZ2dlZDp0cnVlLGNhbkJlUmVzaXplZDpmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXg6eCxleTp5LGV3aWR0aDp3aWR0aCxlaGVpZ2h0OmhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm91bmRpbmdEb1VwZGF0ZU9uSW5pdDpmYWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2JvdW5kaW5nSXNBY3RpdmUnLHRydWUpOworICAgICAgICAKKyAgICAgICAgICAgIC8vaWYgKCFib3VuZGluZ0RvVXBkYXRlT25Jbml0KSB7CisgICAgICAgICAgICAvLyAgICB0aGlzLmJvdW5kaW5ncmVmLl9pbm5lci5faW5uZXIuc2V0QXR0cmlidXRlKCd3aWR0aCcsdGhpcy5PYmplY3RCeU5hbWUuX3N3ZlZpZXcud2lkdGgpOworICAgICAgICAgICAgLy8gICAgdGhpcy5ib3VuZGluZ3JlZi5faW5uZXIuX2lubmVyLnNldEF0dHJpYnV0ZSgnaGVpZ2h0Jyx0aGlzLk9iamVjdEJ5TmFtZS5fc3dmVmlldy5oZWlnaHQpOworICAgICAgICAgICAgLy8gICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIk5FVyBXSURUSCBBTkQgSEVJR0hUIE9GIFNXRiAiLHRoaXMuT2JqZWN0QnlOYW1lLl9zd2ZWaWV3LndpZHRoLHRoaXMuT2JqZWN0QnlOYW1lLl9zd2ZWaWV3LmhlaWdodCk7CisgICAgICAgICAgICAvLyAgICB0aGlzLmJvdW5kaW5ncmVmLl9pbm5lci5zZXRBdHRyaWJ1dGUoJ3Zpc2libGUnLHRydWUpOworICAgICAgICAgICAgLy8gICAgcGFyZW50LnBhcmVudC5jaGFuZ2VNZW51KDIsdHJ1ZSk7CisgICAgICAgICAgICAvLyAgICB0aGlzLmRvVXBkYXRlRG9jdW1lbnRUb29sQmFyKCk7CisgICAgICAgICAgICAvL30gZWxzZSB7CisgICAgICAgICAgICAvLyAgICBwYXJlbnQucGFyZW50LmNoYW5nZU1lbnUoMSx0cnVlKTsKKyAgICAgICAgICAgIC8vfQorICAgICAgICAgICAgIAorICAgICAgICB9CisgICAgXV0+CisgICAgPC9tZXRob2Q+ICAgCisJCisJPG1ldGhvZCBuYW1lPSJ1cGRhdGVPYmplY3RCb3VuZHMiPgorCQlpZiAodGhpcy5ib3VuZGluZ3JlZiE9bnVsbCkgdGhpcy5ib3VuZGluZ3JlZi5yZXNldFZhbHVlcygpOworCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0icmVtb3ZlT2JqZWN0Qm91bmRzIj4KKwkJaWYgKHRoaXMuYm91bmRpbmdyZWYhPW51bGwpIHRoaXMuYm91bmRpbmdyZWYucmVtb3ZlSXQoKTsKKwk8L21ldGhvZD4KKyAgICAKKwk8bWV0aG9kIG5hbWU9ImdldE9iamVjdEluQm91bmRzIiBhcmdzPSJ4LHkiPgorCQk8IVtDREFUQVsKKwkJdmFyIHRlbXBMaXN0ID0gbmV3IEFycmF5KCk7CisJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJnZXRPYmplY3RJbkJvdW5kcyB0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0MTogIix4LHksdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdCk7CisJCQorCQlmb3IgKHZhciBlZz0wO2VnPHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3QubGVuZ3RoO2VnKyspeworCQkJCisJCQkKKwkJCS8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImMxICIsdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ11bdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ10ubGVuZ3RoLTVdLCI8Iix4KTsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImMyICIsKHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddW3RoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddLmxlbmd0aC01XSt0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXVt0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXS5sZW5ndGgtM10pLCI+Iix4KTsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImMzICIsdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ11bdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ10ubGVuZ3RoLTRdLCI8Iix5KTsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImM0ICIsKCB0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXVt0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXS5sZW5ndGgtNF0rdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ11bdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ10ubGVuZ3RoLTJdICksIj4iLHkpOworICAgICAgICAKKwkJCQorCQkJaWYgKCAoIHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddW3RoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddLmxlbmd0aC01XTx4IAorCQkJCSYmICggKHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddW3RoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddLmxlbmd0aC01XSt0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXVt0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXS5sZW5ndGgtM10pID49eCApICkgCisJCQkJJiYgKCB0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXVt0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXS5sZW5ndGgtNF08eSAKKwkJCQkmJiAoIHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddW3RoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddLmxlbmd0aC00XSt0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXVt0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXS5sZW5ndGgtMl0gKT55ICApICkgeworCQkJCQkKKwkJCQlpZiAodGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ11bMF0gIT0gIm1pbmRNYXBOb2RlIgorCQkJCSAgICAgICAgJiYgdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ11bMF0gIT0gIm1pbmRNYXBDZW50ZXIiKQl7CisgICAgCQkJCWlmICh0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXVt0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXS5sZW5ndGgtN10gPT0gbnVsbCkgeworICAgICAgICAJCQkJdGVtcExpc3QucHVzaCh0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXSk7CisgICAgCQkgICAgICAgIH0gZWxzZSB7CisgICAgCQkgICAgICAgIAl2YXIgc3dmT2JqZWN0ID0gdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ11bdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ10ubGVuZ3RoLTddOworICAgIAkJICAgICAgICAJCisgICAgCQkgICAgICAgIAlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZ2V0T2JqZWN0SW5Cb3VuZHMgOjogc3dmT2JqZWN0ICIsc3dmT2JqZWN0LmlzVmlzaWJsZSk7CisgICAgCQkgICAgICAgIAkKKyAgICAJCSAgICAgICAgCWlmKHN3Zk9iamVjdC5pc1Zpc2libGUpIHsKKyAgICAJICAgICAgICAJICAgICAgICB0ZW1wTGlzdC5wdXNoKHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddKTsKKyAgICAJCSAgICAgICAgCX0KKyAgICAJCSAgICAgICAgfQorCQkgICAgICAgIH0KKwkJCQkvLy8vRGVidWcud3JpdGUoImZvdW5kIG9iajogIix0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXSk7CisJCQl9CisJCX0JCQorCQlyZXR1cm4gdGVtcExpc3Q7CisJCV1dPgorCTwvbWV0aG9kPgorCQorCQorCTxtZXRob2QgbmFtZT0iZ2V0WkluZGV4Ij4KKwkJPCFbQ0RBVEFbCisJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZ2V0WkluZGV4ICIsdGhpcy5zdWJ2aWV3cy5sZW5ndGgtMSk7CisJCQlyZXR1cm4gdGhpcy5zdWJ2aWV3cy5sZW5ndGgtMTsKKwkJXV0+CisJPC9tZXRob2Q+CisJCisJCisJCisJPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMKKwkJU2hhcmVkTW9kdXMKKwkJYWN0aW9uID0+IHR5cGUgb2YgYWN0aW9uCisJCWFjdGlvbk9iamVjdCA9PiBuZWNlc3NhcnkgaW5mb3JtYXRpb24gdG8gcmVwcm9kdWNlIHRoZSBldmVudAorCQlpc1dtbExvYWRlciA9PiB0cnVlIG1lYW5zIHRoaXMgb2JqZWN0IGlzIGxvYWRlZCB0aHJvdWdoIGEgc3RvcmVkIHdtbC1maWxlCisJCXNvIGRvIG5vdCBzcHJlYWQgYW55IHVwZGF0ZS1ub3RpZmljYXRpb25zIHRvIGNvbm5lY3RlZCBjbGllbnRzIGZvciBlYWNoIAorCQlvYmplY3QgY2F1c2UgdGhlIGZpbGUgbG9hZGluZyB3aWxsIG1ha2UgYSBzZXBlcmF0ZSBub3RpZmljYXRpb24KKwkgLS0+CisJPG1ldGhvZCBuYW1lPSJzZW5kV2F0Y2hPYmplY3QiIGFyZ3M9ImFjdGlvbixhY3Rpb25PYmplY3QsaXNXbWxMb2FkZXIiPgorCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2VuZFdhdGNoT2JqZWN0OiAiLGFjdGlvbixhY3Rpb25PYmplY3QpOworCQk8IVtDREFUQVsKKwkJaWYgKGFjdGlvbj09J2RyYXcnIHx8IGFjdGlvbj09J3JlZG8nKXsKKwkJCXZhciBsYXN0YWN0aW9uT2JqZWN0ID0gYWN0aW9uT2JqZWN0OworCQkJCisJCQkvL1JlZHJhdyB0aGUgVmlldyBvbiB0aGUgcGFpbnRhcmVhCisJCQlpZiAoYWN0aW9uT2JqZWN0WzBdPT0ncGFpbnQnKXsKKwkJCQl0aGlzLnBhaW50YWN0aW9uSGlzdG9yeShsYXN0YWN0aW9uT2JqZWN0LHRoaXMpOworCQkJfSBlbHNlIGlmIChhY3Rpb25PYmplY3RbMF09PSdsaW5lJyl7CisJCQkJdGhpcy5saW5lYWN0aW9uSGlzdG9yeShsYXN0YWN0aW9uT2JqZWN0LHRoaXMpOworCQkJfSBlbHNlIGlmIChhY3Rpb25PYmplY3RbMF09PSd1bGluZScpeworCQkJCXRoaXMudWxpbmVhY3Rpb25IaXN0b3J5KGxhc3RhY3Rpb25PYmplY3QsdGhpcyk7CisJCQl9IGVsc2UgaWYgKGFjdGlvbk9iamVjdFswXT09J2RyYXdhcnJvdycpeworCQkJCXRoaXMuZHJhd2Fycm93bGluZWFjdGlvbkhpc3RvcnkobGFzdGFjdGlvbk9iamVjdCx0aGlzKTsKKwkJCX0gZWxzZSBpZihhY3Rpb24sYWN0aW9uT2JqZWN0WzBdPT0nbGV0dGVyJyl7CisJCQkJdGhpcy5kcmF3YWN0aW9uSGlzdG9yeShsYXN0YWN0aW9uT2JqZWN0LHRoaXMpOworCQkJfSBlbHNlIGlmKGFjdGlvbk9iamVjdFswXT09J2ltYWdlJyl7CisJCQkJLy9JbWFnZSB3aWxsIHNlbmQgdGhlIG9ud21sTG9hZGVyU2VuZCBsYXRlciBjYXVzZSBpdCBoYXMgdG8gYmUgc2VuZAorCQkJCS8vb25jZSB0aGUgaW1hZ2UgaGFzIGJlZW4gbG9hZGVkIGNvbXBsZXRlbHkKKwkJCQl0aGlzLmFkZEltYWdlVG9MYXllckhpc3RvcnlTeW5jZWQobGFzdGFjdGlvbk9iamVjdCx0aGlzKTsKKwkJCX0gZWxzZSBpZihhY3Rpb25PYmplY3RbMF09PSdzd2YnKXsKKwkJCQkvL0ltYWdlIHdpbGwgc2VuZCB0aGUgb253bWxMb2FkZXJTZW5kIGxhdGVyIGNhdXNlIGl0IGhhcyB0byBiZSBzZW5kCisJCQkJLy9vbmNlIHRoZSBpbWFnZSBoYXMgYmVlbiBsb2FkZWQgY29tcGxldGVseQorCQkJCXRoaXMuYWRkU1dGVG9MYXllckhpc3RvcnlTeW5jZWQobGFzdGFjdGlvbk9iamVjdCx0aGlzKTsKKwkJCX0gZWxzZSBpZihhY3Rpb25PYmplY3RbMF09PSdyZWN0YW5nbGUnKXsKKwkJCQl0aGlzLmRyYXdyZWN0YW5nbGVUb0hpc3RvcnkobGFzdGFjdGlvbk9iamVjdCx0aGlzKTsKKwkJCX0gZWxzZSBpZihhY3Rpb25PYmplY3RbMF09PSd0cmlhbmdsZScpeworCQkJCXRoaXMuZHJhd3RyaWFuZ2xlVG9IaXN0b3J5KGxhc3RhY3Rpb25PYmplY3QsdGhpcyk7CisJCQl9IGVsc2UgaWYoYWN0aW9uT2JqZWN0WzBdPT0nZWxsaXBzZScpeworCQkJCXRoaXMuZHJhd2VsbGlwc2VUb0hpc3RvcnkobGFzdGFjdGlvbk9iamVjdCx0aGlzKTsKKwkJCX0gZWxzZSBpZihhY3Rpb25PYmplY3RbMF09PSdwb2ludGVyV2hpdGVCb2FyZCcpeworICAgICAgICAgICAgICAgIHRoaXMuZHJhd1BvaW50ZXJUb0hpc3RvcnkobGFzdGFjdGlvbk9iamVjdCx0aGlzKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZihhY3Rpb25PYmplY3RbMF09PSdmbHYnKXsKKyAgICAgICAgICAgICAgICB0aGlzLmRyYXdGbHZUb0hpc3RvcnkobGFzdGFjdGlvbk9iamVjdCx0aGlzKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZihhY3Rpb25PYmplY3RbMF09PSdtaW5kTWFwQ2VudGVyJyl7CisgICAgICAgICAgICAgICAgdGhpcy5kcmF3TWluZE1hcENlbnRlclRvSGlzdG9yeShsYXN0YWN0aW9uT2JqZWN0LHRoaXMpOworICAgICAgICAgICAgfSBlbHNlIGlmKGFjdGlvbk9iamVjdFswXT09J21pbmRNYXBOb2RlJyl7CisgICAgICAgICAgICAgICAgdGhpcy5kcmF3TWluZE1hcE5vZGVUb0hpc3RvcnkobGFzdGFjdGlvbk9iamVjdCx0aGlzKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZihhY3Rpb25PYmplY3RbMF09PSdjbGlwYXJ0Jyl7CisgICAgICAgICAgICAgICAgdGhpcy5kcmF3Q2xpcEFydFRvSGlzdG9yeShsYXN0YWN0aW9uT2JqZWN0LHRoaXMpOworICAgICAgICAgICAgfQorCQkJLy9zZXQgY291bnRlciB0byBtYXhpbXVtIG90aGVyd2lzZSB0cm91YmxlIGluIG5hbWluZyBjb252ZW50aW9ucworCQkJLy90aGUgNnRoIGFycmF5IGluZGV4IGNvdW50IGZyb20gdGhlIGVuZCBvZiBlYWNoIG9iamVjdCBpcyBhbHdheXMgdGhlIGNvdW50ZXIgb2YgdGhlCisJCQkvL29iamVjdAorCQkJdGhpcy5jb21wYXJlQW5kU2V0Q291bnRlcihsYXN0YWN0aW9uT2JqZWN0W2xhc3RhY3Rpb25PYmplY3QubGVuZ3RoLTZdKTsKKwkJCXRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3QucHVzaChsYXN0YWN0aW9uT2JqZWN0KTsKKwkJCQorCQkJLy9TZW5kIGEgbm90aWZjYXRpb24gZm9yIHRoZSBsaWJyYXJ5IGxvYWRlciBzb3RoYXQgaXQgY2FuIHNob3cgcHJvZ3Jlc3MKKwkJCS8vYW5kIEJyb3dzZXIgZG9lcyBub3QgaGFuZ1VwIGFuZCBpbWFnZXMgY2FuIGJlIHByb2NlZWQKKwkJCS8vb25seSBzZW5kIGlmIHR5cGUgYWluI3QgaW1hZ2UgY2F1c2UgaW1hZ2Ugd2lsbCBzZW5kIGl0cyBvd24gb25lIGFmdGVyIAorCQkJLy8gaXQgaGFzIGJlZW4gbG9hZGVkIGNvbXBsZXRlbHkKKwkJCWlmIChpc1dtbExvYWRlciAmJiBhY3Rpb25PYmplY3RbMF0hPSdpbWFnZScgJiYgaXNXbWxMb2FkZXIgJiYgYWN0aW9uT2JqZWN0WzBdIT0nc3dmJykgeworCQkJCWlmICh0aGlzLm9ud21sTG9hZGVyU2VuZCkgdGhpcy5vbndtbExvYWRlclNlbmQuc2VuZEV2ZW50KGFjdGlvbk9iamVjdFswXSk7CisJCQl9CisgICAgICAgICAKKyAgICAgICAgfSBlbHNlIGlmKGFjdGlvbj09J2NsZWFyJyl7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuY2xlYXJSZW1vdGUoKTsKKyAgICAgICAgICAgIAorICAgICAgICB9IGVsc2UgaWYoYWN0aW9uPT0nY2xlYXJTbGlkZScpeworICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLmNsZWFyU2xpZGVSZW1vdGUoYWN0aW9uT2JqZWN0KTsKKyAgICAgICAgICAgIAorICAgICAgICB9IGVsc2UgaWYoYWN0aW9uPT0nbW92ZU1hcCcpeworCQkJCisJCQl0aGlzLnNldEF0dHJpYnV0ZSgieCIsYWN0aW9uT2JqZWN0WzFdKTsKKwkJCXRoaXMuc2V0QXR0cmlidXRlKCJ5IixhY3Rpb25PYmplY3RbMl0pOworCQkJCisJCX0gZWxzZSBpZihhY3Rpb249PSdmbHYnKXsKKwkJCQorCQkJdGhpcy5wbGF5RkxWUmVtb3RlKGFjdGlvbk9iamVjdCk7CisJCQkKKwkJfSBlbHNlIGlmKGFjdGlvbj09J2FkZEJyYWluU3Rvcm1pbmcnKXsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5icmFpblN0b3JtaW5nSWRlYXNHYXRoZXJpbmcoYWN0aW9uT2JqZWN0KTsKKyAgICAgICAgCisgICAgICAgIH0gZWxzZSBpZihhY3Rpb249PSdhZGRCcmFpblN0b3JtaW5nSWRlYVBoYXNlMicpeworICAgICAgICAgICAgCisgICAgICAgIAkvL0FkZGluZyBJZGVhIGluIFBoYXNlIDIKKyAgICAgICAgICAgIHRoaXMuYWRkSWRlYVRvUGhhc2UyKGFjdGlvbk9iamVjdCk7CisgICAgICAgIAorICAgICAgICB9IGVsc2UgaWYoYWN0aW9uPT0nZGVsZXRlQnJhaW5TdG9ybWluZycpeworCQkJCisJCQl0aGlzLmJyYWluU3Rvcm1pbmdDbG9zZShhY3Rpb25PYmplY3QpOworCQkJCisJCX0gZWxzZSBpZihhY3Rpb249PSd1cGRhdGVCcmFpblN0b3JtaW5nUGhhc2UnKXsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5icmFpblN0b3JtaW5nUGhhc2UyKGFjdGlvbk9iamVjdCk7CisgICAgICAgICAgICAKKyAgICAgICAgfSBlbHNlIGlmKGFjdGlvbj09J3VwZGF0ZUJyYWluU3Rvcm1pbmdQaGFzZScpeworICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLmJyYWluU3Rvcm1pbmdQaGFzZTIoYWN0aW9uT2JqZWN0KTsKKyAgICAgICAgICAgIAorICAgICAgICB9IGVsc2UgaWYoYWN0aW9uPT0ndXBkYXRlUHJpb0JyYWluU3Rvcm1pbmdJZGVhJyl7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMudXBkYXRlUHJpb0JyYWluU3Rvcm1pbmdJZGVhKGFjdGlvbk9iamVjdCk7CisgICAgICAgIAorICAgICAgICB9IGVsc2UgaWYoYWN0aW9uPT0ndXBkYXRlVGV4dEJyYWluU3Rvcm1pbmdJZGVhQ29sb3InKXsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy51cGRhdGVUZXh0QnJhaW5TdG9ybWluZ0lkZWFDb2xvcihhY3Rpb25PYmplY3QpOworICAgICAgICAKKyAgICAgICAgfSBlbHNlIGlmKGFjdGlvbj09J3VwZGF0ZUJyYWluU3Rvcm1pbmdHcm91cE5hbWUnKXsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy51cGRhdGVCcmFpblN0b3JtaW5nR3JvdXBOYW1lKGFjdGlvbk9iamVjdCk7CisgICAgICAgICAgICAKKyAgICAgICAgfSBlbHNlIGlmKGFjdGlvbj09J2RlbGV0ZUJyYWluU3Rvcm1pbmdHcm91cCcpeworICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLmRlbGV0ZUJyYWluU3Rvcm1pbmdHcm91cChhY3Rpb25PYmplY3QpOworCQkJCisJCX0gZWxzZSBpZihhY3Rpb249PSdkZWxldGVCcmFpblN0b3JtaW5nSWRlYScpeworICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLmRlbGV0ZUJyYWluU3Rvcm1pbmdJZGVhKGFjdGlvbk9iamVjdCk7CisJCQkKKwkJfSBlbHNlIGlmKGFjdGlvbj09J2FkZEJyYWluU3Rvcm1pbmdHcm91cCcpeworICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLmFkZE5ld0dyb3VwUmVtb3RlKGFjdGlvbk9iamVjdCxmYWxzZSk7CisgICAgICAgICAgICAKKwkJfSBlbHNlIGlmKGFjdGlvbj09J3VwZGF0ZUdyb3VwQnJhaW5TdG9ybWluZ0lkZWEnKXsKKyAgICAgICAgICAgIAorCQkJaWYgKGFjdGlvbk9iamVjdFszXSA9PSAiIikgeworICAgICAgICAgICAgICAgIHRoaXMubW92ZUlkZWFUb1Jlc3VsdExpc3RSZW1vdGUoYWN0aW9uT2JqZWN0KTsKKwkJCX0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGhpcy5tb3ZlSWRlYVRvR3JvdXBSZW1vdGUoYWN0aW9uT2JqZWN0KTsKKwkJCX0KKwkJCQorCQl9IGVsc2UgaWYoYWN0aW9uPT0nZGVsZXRlJyB8fCBhY3Rpb249PSd1bmRvJyl7CisJCQkKKwkJCXZhciBsYXN0YWN0aW9uT2JqZWN0ID0gYWN0aW9uT2JqZWN0OwkKKwkJCXRoaXMuZGVsZXRlSXRlbUJ5TmFtZVN5bmMobGFzdGFjdGlvbk9iamVjdFtsYXN0YWN0aW9uT2JqZWN0Lmxlbmd0aC0xXSk7CisJCQkKKwkJfSBlbHNlIGlmKGFjdGlvbj09J3NpemUnKXsKKwkJCQorCQkJdmFyIGxhc3RhY3Rpb25PYmplY3QgPSBhY3Rpb25PYmplY3Q7CQorCQkJCisJCQlpZiAobGFzdGFjdGlvbk9iamVjdFswXSA9PSAiY2xpcGFydCIpIHsKKwkJCQkKKwkJCQl2YXIgb2JqID0gdGhpcy5nZXRPYmplY3RCeU5hbWUobGFzdGFjdGlvbk9iamVjdFtsYXN0YWN0aW9uT2JqZWN0Lmxlbmd0aC0xXSk7CisgICAgICAgICAgICAgICAgb2JqLmRlc3Ryb3koKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB0aGlzLmRyYXdDbGlwQXJ0VG9IaXN0b3J5KGxhc3RhY3Rpb25PYmplY3QsdGhpcyk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgZm9yICh2YXIgZWc9MDtlZzx0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0Lmxlbmd0aDtlZysrKXsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddW3RoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddLmxlbmd0aC0xXT09bGFzdGFjdGlvbk9iamVjdFtsYXN0YWN0aW9uT2JqZWN0Lmxlbmd0aC0xXSkgeworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJGb3VuZCBPYmplY3QgMTogIix0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddID0gbGFzdGFjdGlvbk9iamVjdDsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9ICAgCisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKHRoaXMuYm91bmRpbmdJc0FjdGl2ZSkgeworICAgICAgICAgICAgICAgICAgICB0aGlzLnJlc2VsZWN0U2hvd09iamVjdEJvdW5kcyhsYXN0YWN0aW9uT2JqZWN0W2xhc3RhY3Rpb25PYmplY3QubGVuZ3RoLTFdKTsKKyAgICAgICAgICAgICAgICB9CisJCQkJCisJCQl9IGVsc2UgeworCQkJCisgICAgCQkJdmFyIG9iaiA9IHRoaXMuZ2V0T2JqZWN0QnlOYW1lKGxhc3RhY3Rpb25PYmplY3RbbGFzdGFjdGlvbk9iamVjdC5sZW5ndGgtMV0pOworICAgIAkJCQorICAgIAkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJTZXQgU2l6ZSBmb3IgT2JqZWN0ICIsb2JqKTsKKyAgICAJCQlvYmouc2V0QXR0cmlidXRlKCd4JyxsYXN0YWN0aW9uT2JqZWN0W2xhc3RhY3Rpb25PYmplY3QubGVuZ3RoLTVdKTsKKyAgICAJCQlvYmouc2V0QXR0cmlidXRlKCd5JyxsYXN0YWN0aW9uT2JqZWN0W2xhc3RhY3Rpb25PYmplY3QubGVuZ3RoLTRdKTsKKyAgICAJCQlvYmouc2V0QXR0cmlidXRlKCd3aWR0aCcsbGFzdGFjdGlvbk9iamVjdFtsYXN0YWN0aW9uT2JqZWN0Lmxlbmd0aC0zXSk7CisgICAgCQkJb2JqLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JyxsYXN0YWN0aW9uT2JqZWN0W2xhc3RhY3Rpb25PYmplY3QubGVuZ3RoLTJdKTsKKyAgICAJCQkKKyAgICAJCQl0aGlzLnVwZGF0ZUJhc2VPYmplY3RCeU5hbWUobGFzdGFjdGlvbk9iamVjdFtsYXN0YWN0aW9uT2JqZWN0Lmxlbmd0aC0xXSwKKyAgICAJCQkgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdGFjdGlvbk9iamVjdFtsYXN0YWN0aW9uT2JqZWN0Lmxlbmd0aC01XSwKKyAgICAJCQkgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdGFjdGlvbk9iamVjdFtsYXN0YWN0aW9uT2JqZWN0Lmxlbmd0aC00XSwKKyAgICAJCQkgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdGFjdGlvbk9iamVjdFtsYXN0YWN0aW9uT2JqZWN0Lmxlbmd0aC0zXSwKKyAgICAJCQkgICAgICAgICAgICAgICAgICAgICAgICAgbGFzdGFjdGlvbk9iamVjdFtsYXN0YWN0aW9uT2JqZWN0Lmxlbmd0aC0yXSk7CisgICAgCQkJICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIAkJCS8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIkJhc2VPYmplY3QgTGlzdCA/PyAiLHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3QpOworICAgIAkJCQorICAgICAgICAgICAgICAgIGlmICh0aGlzLmJvdW5kaW5nSXNBY3RpdmUpIHsKKyAgICAgICAgICAgICAgICAJdGhpcy5ib3VuZGluZ3JlZi5zZW5kUmVtb3RlVXBkYXRlKG9iaikKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAKKwkJCX0KKwkJCSAgICAgICAgICAgICAgICAgICAgICAgICAKKwkJfSBlbHNlIGlmIChhY3Rpb249PSJsb2Fkd21sIil7CisJCQkvL0RlYnVnLndyaXRlKGFjdGlvbk9iamVjdCxhY3Rpb25PYmplY3RbIndtbGZpbGVOYW1lIl0sYWN0aW9uT2JqZWN0WyJ3bWxyb29tIl0sYWN0aW9uT2JqZWN0WyJ3bWxkb21haW4iXSk7CisJCQl0aGlzLnJlbW90ZVdtbExvYWRlcihhY3Rpb25PYmplY3RbIndtbGZpbGVOYW1lIl0sYWN0aW9uT2JqZWN0WyJ3bWxyb29tIl0sYWN0aW9uT2JqZWN0WyJ3bWxkb21haW4iXSk7CisJCX0gZWxzZSBpZiAoYWN0aW9uPT0iZWRpdFRleHQiKXsKKyAgICAgICAgICAgIHRoaXMuZWRpdFRleHRCeUhpc3RvcnkoYWN0aW9uT2JqZWN0LHRoaXMpOworCQl9ZWxzZSBpZiAoYWN0aW9uPT0iZWRpdFRleHRNaW5kTWFwRm9udENvbG9yIikgeworICAgICAgICAgICAgdGhpcy5lZGl0VGV4dE1pbmRNYXBGb250Q29sb3IoYWN0aW9uT2JqZWN0LHRoaXMpOworICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbj09ImVkaXRUZXh0TWluZE1hcENvbG9yIil7CisgICAgICAgICAgICB0aGlzLmVkaXRUZXh0TWluZE1hcENvbG9yKGFjdGlvbk9iamVjdCx0aGlzKTsgICAKKyAgICAgICAgfSBlbHNlIGlmIChhY3Rpb249PSJlZGl0VGV4dE1pbmRNYXBOb2RlIil7CisgICAgICAgICAgICB0aGlzLmVkaXRUZXh0TWluZE1hcE5vZGUoYWN0aW9uT2JqZWN0LHRoaXMpOworICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbj09InNlbmRJdGVtVG9Gcm9udCIpeworICAgICAgICAgICAgdGhpcy5icmluZ0l0ZW1Ub0Zyb250QnlOYW1lKGFjdGlvbk9iamVjdFsxXSk7CisgICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uPT0iaW5pdGdldFZhcnMiKXsKKwkJCS8vRGVidWcud3JpdGUoImluaXRVc2VyIGlzTW9kICIsY2FudmFzLmlzbW9kZXJhdG9yLGFjdGlvbk9iamVjdCk7CisJCQlpZiAoY2FudmFzLmlzbW9kZXJhdG9yKXsKKwkJCQkvL0RlYnVnLndyaXRlKCJzZW5kIGFsbCB3aGl0ZUJvYXJkIG9iamVjdHMgdG8gbmV3IHVzZXIiKTsKKwkJCQl2YXIgb2JqID0gbmV3IEFycmF5KCk7CisJCQkgICAgb2JqWzBdID0gJ3doaXRlYm9hcmQnOworCQkJICAgIG9ialsxXSA9ICdpbml0dXNlcic7CisJCQkgICAgb2JqWzJdID0gdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdDsKKwkJCQl0aGlzLm9uaW5pdFVzZXIoYWN0aW9uT2JqZWN0LG9iaik7CisJCQl9CisJCX0gZWxzZSBpZiAoYWN0aW9uPT0ic3dmIil7CisJCQl0aGlzLnJlbW90ZU9iamVjdFVwZGF0ZShhY3Rpb25PYmplY3QpOwkKKwkJfQorCQldXT4KKwk8L21ldGhvZD4KKwkKKwkKKwk8bWV0aG9kIG5hbWU9InVwZGF0ZUJhc2VPYmplY3RCeU5hbWUiIGFyZ3M9InROYW1lLHgseSx3aWR0aCxoZWlnaHQiPgorCQk8IVtDREFUQVsKKwkJCisJCSAgICAKKwkJCisgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTx0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0Lmxlbmd0aDtpKyspIHsKKyAgICAgICAgICAgIAkKKyAgICAgICAgICAgIAlpZiAodGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtpXVt0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2ldLmxlbmd0aC0xXSA9PSB0TmFtZSkgeworICAgICAgICAgICAgCQl0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2ldW3RoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbaV0ubGVuZ3RoLTVdID0geDsKKyAgICAgICAgICAgIAkJdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtpXVt0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2ldLmxlbmd0aC00XSA9IHk7CisgICAgICAgICAgICAJCXRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbaV1bdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtpXS5sZW5ndGgtM10gPSB3aWR0aDsKKyAgICAgICAgICAgIAkJdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtpXVt0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2ldLmxlbmd0aC0yXSA9IGhlaWdodDsKKyAgICAgICAgICAgIAkJcmV0dXJuOworICAgICAgICAgICAgCX0KKyAgICAgICAgICAgIAkKKyAgICAgICAgICAgIH0KKwkJICAgIAorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53YXJuKCJDb3VsZCBOb3QgRmluZCBJdGVtIG9uIExpc3QgIix0TmFtZSk7CisJCV1dPgorCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0ic2VuZFJlY29yZGVkT2JqZWN0IiBhcmdzPSJhY3Rpb24sYWN0aW9uT2JqZWN0LGlzV21sTG9hZGVyIj4KKwkJLy9EZWJ1Zy53cml0ZSgic2VuZFdhdGNoT2JqZWN0OiAiLGFjdGlvbixhY3Rpb25PYmplY3QpOworCQk8IVtDREFUQVsKKwkJaWYgKGFjdGlvbj09J2RyYXcnIHx8IGFjdGlvbj09J3JlZG8nKXsKKwkJCXZhciBsYXN0YWN0aW9uT2JqZWN0ID0gYWN0aW9uT2JqZWN0OworCQkJCisJCQkvL1JlZHJhdyB0aGUgVmlldyBvbiB0aGUgcGFpbnRhcmVhCisJCQlpZiAoYWN0aW9uT2JqZWN0WzBdPT0ncGFpbnQnKXsKKwkJCQl0aGlzLnBhaW50YWN0aW9uSGlzdG9yeShsYXN0YWN0aW9uT2JqZWN0LHRoaXMpOworCQkJfSBlbHNlIGlmIChhY3Rpb25PYmplY3RbMF09PSdsaW5lJyl7CisJCQkJdGhpcy5saW5lYWN0aW9uSGlzdG9yeShsYXN0YWN0aW9uT2JqZWN0LHRoaXMpOworCQkJfSBlbHNlIGlmIChhY3Rpb25PYmplY3RbMF09PSd1bGluZScpeworCQkJCXRoaXMudWxpbmVhY3Rpb25IaXN0b3J5KGxhc3RhY3Rpb25PYmplY3QsdGhpcyk7CisJCQl9IGVsc2UgaWYgKGFjdGlvbk9iamVjdFswXT09J2RyYXdhcnJvdycpeworCQkJCXRoaXMuZHJhd2Fycm93bGluZWFjdGlvbkhpc3RvcnkobGFzdGFjdGlvbk9iamVjdCx0aGlzKTsKKwkJCX0gZWxzZSBpZihhY3Rpb24sYWN0aW9uT2JqZWN0WzBdPT0nbGV0dGVyJyl7CisJCQkJdGhpcy5kcmF3YWN0aW9uSGlzdG9yeShsYXN0YWN0aW9uT2JqZWN0LHRoaXMpOworCQkJfSBlbHNlIGlmKGFjdGlvbk9iamVjdFswXT09J2ltYWdlJyl7CisJCQkJLy9JbWFnZSB3aWxsIHNlbmQgdGhlIG9ud21sTG9hZGVyU2VuZCBsYXRlciBjYXVzZSBpdCBoYXMgdG8gYmUgc2VuZAorCQkJCS8vb25jZSB0aGUgaW1hZ2UgaGFzIGJlZW4gbG9hZGVkIGNvbXBsZXRlbHkKKwkJCQl0aGlzLmFkZEltYWdlVG9MYXllckhpc3RvcnlSZWNvcmRlZChsYXN0YWN0aW9uT2JqZWN0LHRoaXMsaXNXbWxMb2FkZXIpOworCQkJfSBlbHNlIGlmKGFjdGlvbk9iamVjdFswXT09J3N3ZicpeworCQkJCS8vSW1hZ2Ugd2lsbCBzZW5kIHRoZSBvbndtbExvYWRlclNlbmQgbGF0ZXIgY2F1c2UgaXQgaGFzIHRvIGJlIHNlbmQKKwkJCQkvL29uY2UgdGhlIGltYWdlIGhhcyBiZWVuIGxvYWRlZCBjb21wbGV0ZWx5CisJCQkJdGhpcy5hZGRTV0ZUb0xheWVySGlzdG9yeVJlY29yZGluZyhsYXN0YWN0aW9uT2JqZWN0LHRoaXMsaXNXbWxMb2FkZXIpOworCQkJfSBlbHNlIGlmKGFjdGlvbk9iamVjdFswXT09J3JlY3RhbmdsZScpeworCQkJCXRoaXMuZHJhd3JlY3RhbmdsZVRvSGlzdG9yeShsYXN0YWN0aW9uT2JqZWN0LHRoaXMpOworCQkJfSBlbHNlIGlmKGFjdGlvbk9iamVjdFswXT09J2VsbGlwc2UnKXsKKwkJCQl0aGlzLmRyYXdlbGxpcHNlVG9IaXN0b3J5KGxhc3RhY3Rpb25PYmplY3QsdGhpcyk7CisJCQl9CisJCQkvL3NldCBjb3VudGVyIHRvIG1heGltdW0gb3RoZXJ3aXNlIHRyb3VibGUgaW4gbmFtaW5nIGNvbnZlbnRpb25zCisJCQkvL3RoZSA2dGggYXJyYXkgaW5kZXggY291bnQgZnJvbSB0aGUgZW5kIG9mIGVhY2ggb2JqZWN0IGlzIGFsd2F5cyB0aGUgY291bnRlciBvZiB0aGUKKwkJCS8vb2JqZWN0CisJCQl0aGlzLmNvbXBhcmVBbmRTZXRDb3VudGVyKGxhc3RhY3Rpb25PYmplY3RbbGFzdGFjdGlvbk9iamVjdC5sZW5ndGgtNl0pOworCQkJdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdC5wdXNoKGxhc3RhY3Rpb25PYmplY3QpOworCQkJCisJCQkvL1NlbmQgYSBub3RpZmNhdGlvbiBmb3IgdGhlIGxpYnJhcnkgbG9hZGVyIHNvdGhhdCBpdCBjYW4gc2hvdyBwcm9ncmVzcworCQkJLy9hbmQgQnJvd3NlciBkb2VzIG5vdCBoYW5nVXAgYW5kIGltYWdlcyBjYW4gYmUgcHJvY2VlZAorCQkJLy9vbmx5IHNlbmQgaWYgdHlwZSBhaW4jdCBpbWFnZSBjYXVzZSBpbWFnZSB3aWxsIHNlbmQgaXRzIG93biBvbmUgYWZ0ZXIgCisJCQkvLyBpdCBoYXMgYmVlbiBsb2FkZWQgY29tcGxldGVseQorCQkJaWYgKGlzV21sTG9hZGVyICYmIGFjdGlvbk9iamVjdFswXSE9J2ltYWdlJyAmJiBpc1dtbExvYWRlciAmJiBhY3Rpb25PYmplY3RbMF0hPSdzd2YnKSB7CisJCQkJaWYgKHRoaXMub253bWxMb2FkZXJTZW5kKSB0aGlzLm9ud21sTG9hZGVyU2VuZC5zZW5kRXZlbnQoYWN0aW9uT2JqZWN0WzBdKTsKKwkJCX0KKyAgICAgICAgICAgIAorCQl9IGVsc2UgaWYoYWN0aW9uPT0nY2xlYXInKXsKKwkJCXRoaXMuY2xlYXJBbGwoKTsKKwkJfSBlbHNlIGlmKGFjdGlvbj09J2RlbGV0ZScgfHwgYWN0aW9uPT0ndW5kbycpeworCQkJdmFyIGxhc3RhY3Rpb25PYmplY3QgPSBhY3Rpb25PYmplY3Q7CQorCQkJdmFyIG9iaiA9IHRoaXMuZ2V0T2JqZWN0QnlOYW1lKGxhc3RhY3Rpb25PYmplY3RbbGFzdGFjdGlvbk9iamVjdC5sZW5ndGgtMV0pOworCQkJb2JqLmRlc3Ryb3koKTsKKwkJfSBlbHNlIGlmKGFjdGlvbj09J3NpemUnKXsKKwkJCXZhciBsYXN0YWN0aW9uT2JqZWN0ID0gYWN0aW9uT2JqZWN0OwkKKwkJCXZhciBvYmogPSB0aGlzLmdldE9iamVjdEJ5TmFtZShsYXN0YWN0aW9uT2JqZWN0W2xhc3RhY3Rpb25PYmplY3QubGVuZ3RoLTFdKTsKKwkJCW9iai5zZXRBdHRyaWJ1dGUoJ3gnLGxhc3RhY3Rpb25PYmplY3RbbGFzdGFjdGlvbk9iamVjdC5sZW5ndGgtNV0pOworCQkJb2JqLnNldEF0dHJpYnV0ZSgneScsbGFzdGFjdGlvbk9iamVjdFtsYXN0YWN0aW9uT2JqZWN0Lmxlbmd0aC00XSk7CisJCQlvYmouc2V0QXR0cmlidXRlKCd3aWR0aCcsbGFzdGFjdGlvbk9iamVjdFtsYXN0YWN0aW9uT2JqZWN0Lmxlbmd0aC0zXSk7CisJCQlvYmouc2V0QXR0cmlidXRlKCdoZWlnaHQnLGxhc3RhY3Rpb25PYmplY3RbbGFzdGFjdGlvbk9iamVjdC5sZW5ndGgtMl0pOworCQl9IGVsc2UgaWYgKGFjdGlvbj09ImxvYWR3bWwiKXsKKwkJCS8vRGVidWcud3JpdGUoYWN0aW9uT2JqZWN0LGFjdGlvbk9iamVjdFsid21sZmlsZU5hbWUiXSxhY3Rpb25PYmplY3RbIndtbHJvb20iXSxhY3Rpb25PYmplY3RbIndtbGRvbWFpbiJdKTsKKwkJCXRoaXMucmVtb3RlV21sTG9hZGVyUmVjb3JkaW5nKGFjdGlvbk9iamVjdFsid21sZmlsZU5hbWUiXSxhY3Rpb25PYmplY3RbIndtbHJvb20iXSxhY3Rpb25PYmplY3RbIndtbGRvbWFpbiJdKTsKKwkJfSBlbHNlIGlmIChhY3Rpb249PSJlZGl0VGV4dCIpeworCQkJdGhpcy5lZGl0VGV4dEJ5SGlzdG9yeShhY3Rpb25PYmplY3QsdGhpcyk7CisJCX0gZWxzZSBpZiAoYWN0aW9uPT0iaW5pdGdldFZhcnMiKXsKKwkJCS8vRGVidWcud3JpdGUoImluaXRVc2VyIGlzTW9kICIsY2FudmFzLmlzbW9kZXJhdG9yLGFjdGlvbk9iamVjdCk7CisJCQlpZiAoY2FudmFzLmlzbW9kZXJhdG9yKXsKKwkJCQkvL0RlYnVnLndyaXRlKCJzZW5kIGFsbCB3aGl0ZUJvYXJkIG9iamVjdHMgdG8gbmV3IHVzZXIiKTsKKwkJCQl2YXIgb2JqID0gbmV3IEFycmF5KCk7CisJCQkgICAgb2JqWzBdID0gJ3doaXRlYm9hcmQnOworCQkJICAgIG9ialsxXSA9ICdpbml0dXNlcic7CisJCQkgICAgb2JqWzJdID0gdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdDsKKwkJCQl0aGlzLm9uaW5pdFVzZXIoYWN0aW9uT2JqZWN0LG9iaik7CisJCQl9CisJCX0gZWxzZSBpZiAoYWN0aW9uPT0ic3dmIil7CisJCQl0aGlzLnJlbW90ZU9iamVjdFVwZGF0ZShhY3Rpb25PYmplY3QpOwkKKwkJfQorCQldXT4KKwk8L21ldGhvZD4KKwkKKyAgCTxtZXRob2QgbmFtZT0iZ2V0U1dGRG9jdW1lbnRTdGF0dXMiPgorICAJCTwhW0NEQVRBWworICAJCQorICAJCSAgICBmb3IgKHZhciBpPTA7aTx0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0Lmxlbmd0aDtpKyspIHsKKyAgCQkgICAgCQorICAJCSAgICAJaWYgKHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbaV1bMF0gPT0gInN3ZiIpIHsKKyAgCQkgICAgCQkKKyAgCQkgICAgCQl2YXIgdFNXRiA9IG5ldyBPYmplY3QoKTsKKyAgCQkgICAgCQkKKyAgCQkgICAgCQl0U1dGLm5hbWUgPSB0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2ldW3RoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbaV0ubGVuZ3RoLTFdOworICAJCSAgICAJCXRTV0Yuc2xpZGUgPSB0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2ldWzhdOworICAJCSAgICAJCXRTV0YuaXNWaXNpYmxlID0gdHJ1ZTsKKyAgCQkgICAgCQkKKyAgCQkgICAgCQlyZXR1cm4gdFNXRjsKKyAgCQkgICAgCX0KKyAgCQkgICAgCQorICAJCSAgICB9CisgIAkJICAgIAorICAJCSAgICByZXR1cm4gbnVsbDsKKyAgCQldXT4KKyAgCTwvbWV0aG9kPgorCisgICAgPG1ldGhvZCBuYW1lPSJjaGVja1NXRkRvY3VtZW50U3RhdHVzIiBhcmdzPSJzd2ZPYmoiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgCisgICAgICAgICAgICBpZiAoc3dmT2JqICE9IG51bGwpIHsKKyAgICAgICAgCisgICAgICAgICAgICAgICAgdmFyIHN3ZkJhc2VPYmogPSB0aGlzLmdldEJhc2VPYmplY3RCeU5hbWUoc3dmT2JqLm5hbWUpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChzd2ZCYXNlT2JqICE9IG51bGwpIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAoc3dmT2JqLnNsaWRlID09IHN3ZkJhc2VPYmpbOF0pIHsKKyAgICAgICAgICAgICAgICAgICAgCXJldHVybiB0cnVlOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAJcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisKKyAgICA8bWV0aG9kIG5hbWU9ImRvU1dGRG9jdW1lbnRTdGF0dXMiIGFyZ3M9InJlZk9iaixzd2ZPYmoiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgCisgICAgICAgICAgICBpZiAoc3dmT2JqICE9IG51bGwpIHsKKyAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKHN3Zk9iai5pc1Zpc2libGUpIHsKKyAgICAgICAgICAgICAgICAJCisgICAgICAgICAgICAgICAgCXJlZk9iai5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgICAgICAgICAgCQorICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgCQorICAgICAgICAgICAgICAgIAlyZWZPYmouc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgICAgICAgICAgICAgCQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIAkKKyAgICAgICAgICAgIAlyZWZPYmouc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgICAgICAgICAgCQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0idXBkYXRlT2JqZWN0c1RvU2xpZGVOdW1iZXIiIGFyZ3M9ImJhc2VPYmplY3QiPgorICAgIAk8IVtDREFUQVsKKyAgICAJCisgICAgICAgICAgICB2YXIgYmFzZU9iamVjdE5hbWUgPSBiYXNlT2JqZWN0W2Jhc2VPYmplY3QubGVuZ3RoLTFdOworICAgICAgICAgICAgdmFyIHNsaWRlc051bWJlciA9IGJhc2VPYmplY3RbOF07CisgICAgCSAgIAorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInVwZGF0ZU9iamVjdHNUb1NsaWRlTnVtYmVyIDo6ICIsYmFzZU9iamVjdE5hbWUsc2xpZGVzTnVtYmVyKQorICAgIAkKKyAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3QubGVuZ3RoO2krKykgeworICAgIAkgICAJCisgICAgICAgICAgICAgICAgaWYgKHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbaV1bMF0gPT0gImVsbGlwc2UiIAorICAgICAgICAgICAgICAgICAgICAgICAgfHwgdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtpXVswXSA9PSAiZHJhd2Fycm93IgorICAgICAgICAgICAgICAgICAgICAgICAgfHwgdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtpXVswXSA9PSAibGluZSIKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbaV1bMF0gPT0gInBhaW50IgorICAgICAgICAgICAgICAgICAgICAgICAgfHwgdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtpXVswXSA9PSAicmVjdGFuZ2xlIgorICAgICAgICAgICAgICAgICAgICAgICAgfHwgdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtpXVswXSA9PSAidWxpbmUiCisgICAgICAgICAgICAgICAgICAgICAgICB8fCB0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2ldWzBdID09ICJpbWFnZSIKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbaV1bMF0gPT0gImNsaXBhcnQiCisgICAgICAgICAgICAgICAgICAgICAgICB8fCB0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2ldWzBdID09ICJsZXR0ZXIiKSB7CisgICAgICAgICAgICAgICAgCQorICAgICAgICAgICAgICAgIAl2YXIgc3dmT2JqID0gdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtpXVt0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2ldLmxlbmd0aC03XTsKKyAgICAgICAgICAgICAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInN3Zk9iaiA6OiAiLHN3Zk9iaik7CisgICAgICAgICAgICAgICAgCQorICAgICAgICAgICAgICAgIAlpZiAoc3dmT2JqICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAJCQorICAgICAgICAgICAgICAgIAkJaWYgKHN3Zk9iai5uYW1lID09IGJhc2VPYmplY3ROYW1lKSB7CisgICAgICAgICAgICAgICAgCQkJCisgICAgICAgICAgICAgICAgCQkJaWYgKHN3Zk9iai5zbGlkZSA9PSBzbGlkZXNOdW1iZXIpIHsKKyAgICAgICAgICAgICAgICAJCQkJCisgICAgICAgICAgICAgICAgCQkJCXN3Zk9iai5pc1Zpc2libGUgPSB0cnVlOworICAgICAgICAgICAgICAgIAkJCQkKKyAgICAgICAgICAgICAgICAJCQkJdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtpXVt0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2ldLmxlbmd0aC03XSA9IHN3Zk9iajsgCisgICAgICAgICAgICAgICAgCQkJCQorICAgICAgICAgICAgICAgIAkJCQl0aGlzW3RoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbaV1bdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtpXS5sZW5ndGgtMV1dLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKyAgICAgICAgICAgICAgICAJCQkJCisgICAgICAgICAgICAgICAgCQkJfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAJCQkJCisgICAgICAgICAgICAgICAgCQkJCXN3Zk9iai5pc1Zpc2libGUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAJCQkJCisgICAgICAgICAgICAgICAgCQkJCXRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbaV1bdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtpXS5sZW5ndGgtN10gPSBzd2ZPYmo7IAorICAgICAgICAgICAgICAgIAkJCQkKKyAgICAgICAgICAgICAgICAJCQkJdGhpc1t0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2ldW3RoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbaV0ubGVuZ3RoLTFdXS5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKyAgICAgICAgICAgICAgICAJCQkJCisgICAgICAgICAgICAgICAgCQkJfQorICAgICAgICAgICAgICAgIAkJCQorICAgICAgICAgICAgICAgIAkJfQorICAgICAgICAgICAgICAgIAkJCisgICAgICAgICAgICAgICAgCX0KKyAgICAgICAgICAgICAgICAJCisgICAgICAgICAgICAgICAgfQorICAgIAkgICAJCisgICAgICAgICAgICB9CisgICAgCQorICAgIAldXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InVwZGF0ZUFsbE9iamVjdHNUb1NsaWRlTnVtYmVyIj4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgIAorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIiA6OiB1cGRhdGVBbGxPYmplY3RzVG9TbGlkZU51bWJlciA6OiAiKQorICAgICAgICAKKyAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3QubGVuZ3RoO2krKykgeworICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbaV1bMF0gPT0gImVsbGlwc2UiIAorICAgICAgICAgICAgICAgICAgICAgICAgfHwgdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtpXVswXSA9PSAiZHJhd2Fycm93IgorICAgICAgICAgICAgICAgICAgICAgICAgfHwgdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtpXVswXSA9PSAibGluZSIKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbaV1bMF0gPT0gInBhaW50IgorICAgICAgICAgICAgICAgICAgICAgICAgfHwgdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtpXVswXSA9PSAicmVjdGFuZ2xlIgorICAgICAgICAgICAgICAgICAgICAgICAgfHwgdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtpXVswXSA9PSAidWxpbmUiCisgICAgICAgICAgICAgICAgICAgICAgICB8fCB0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2ldWzBdID09ICJpbWFnZSIKKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbaV1bMF0gPT0gImxldHRlciIpIHsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIHZhciBzd2ZPYmogPSB0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2ldW3RoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbaV0ubGVuZ3RoLTddOworICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic3dmT2JqIDo6ICIsc3dmT2JqKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmIChzd2ZPYmogIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoc3dmT2JqLmlzVmlzaWJsZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXNbdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtpXVt0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2ldLmxlbmd0aC0xXV0uc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzW3RoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbaV1bdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtpXS5sZW5ndGgtMV1dLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICB9CisgICAgICAgIAorICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKworICAgIDxkcmFnc3RhdGUgbmFtZT0iZHJhZ2dlciIvPgorICAgIAorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvYmFzZS9iYXNlRHJhd0ltYWdlLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL2Jhc2UvYmFzZURyYXdJbWFnZS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjFkMWFmZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL2Jhc2UvYmFzZURyYXdJbWFnZS5sengKQEAgLTAsMCArMSwzNDggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzxjbGFzcyBuYW1lPSJiYXNlRHJhd0ltYWdlIiBleHRlbmRzPSJiYXNlRHJhd0xldHRlciI+CisJCisgIAk8IS0tIGF0dHJpYnV0ZSBzaG93cyBpZiB0aGlzIGltYWdlIGlzIGxvYWRlZCBhcyBwYXJ0IG9mIGEgd21sLWZpbGUtb2JqZWN0CisJCWlmIHRydWUgaXQgd2lsbCBzZW5kIGEgb253bWxMb2FkZXJTZW5kIG1lc3NhZ2UgYW5kIE5PIGV4dHJhIGxvYWRpbmcgYmFyCisJCWlmIGZhbHNlIGl0IHdpbGwgc2hvdyBhIGxvYWRpbmcgYWJyIGZvciB0aGF0IGltYWdlCisJLS0+CisJPGF0dHJpYnV0ZSBuYW1lPSJpc1dtbExvYWRlckltYWdlIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgCisgICAgPCEtLSBpbmRpY2F0ZXMgaWYgdGhpcyBjbGllbnQgaXMgc3RpbGwgbG9hZGluZyBhbiBvbGQgaW1hZ2UgZm9yIHRoZSBzY3JlZW5WaXdlciAtLT4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImlzU2NyZWVuSW1hZ2VMb2FkaW5nIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJzY3JlZW5JbWFnZVJlZk51bWJlciIgdmFsdWU9IjEiIHR5cGU9Im51bWJlciIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9InNjcmVlbkltYWdlUmVmMSIgdmFsdWU9Im51bGwiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJzY3JlZW5JbWFnZVJlZjIiIHZhbHVlPSJudWxsIiAvPgorCQorICAgIDxldmVudCBuYW1lPSJzZXROZXdTY3JlZW5Vc2VyTmFtZSIgLz4KKyAgCQorICAJPCEtLSBpbnZva2VkIGJ5IGNsaWNraW5nIG9uIHRoZSBjb25maXJtYXRpb24gZGlhbG9nIGFmdGVyIAorICAJCWNsaWNraW5nIG9uIGFuIGltYWdlIGluIHRoZSBMaWJyYXJ5IC0tPgorICAJPG1ldGhvZCBuYW1lPSJhZGROZXdTeW5jSW1hZ2UiIGFyZ3M9InVybG5hbWUscG9zeCxwb3N5LGJhc2V1cmwsZmlsZU5hbWUsbW9kdWxlTmFtZSxwYXJlbnRQYXRoLHJvb20sZG9tYWluIj4KKyAgCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidXJsbmFtZTogIix1cmxuYW1lKTsKKyAgCQl2YXIgbm93ID0gbmV3IERhdGUoKTsKKyAgCQkvL1RoaXMgaW52b2tlcyBhIE1ldGhvZCB3aGljaCBpcyBpbiB0aGUgcmVtb3RlV2hpdGVib2FyZC5sengKKyAgCQl0aGlzLnN0YXJ0TmV3T2JqZWN0U3luY1Byb2Nlc3MuaXNTdGFydGluZyA9IHRydWU7CisgIAkJdGhpcy5zdGFydE5ld09iamVjdFN5bmNQcm9jZXNzLnVuaXF1ZU9iamVjdFN5bmNOYW1lID0gZmlsZU5hbWUgKyBub3cuZ2V0VGltZSgpOworICAJCXRoaXMuc3RhcnROZXdPYmplY3RTeW5jUHJvY2Vzcy5kb0NhbGwoKTsKKyAgCQl0aGlzLmFkZE5ld0ltYWdlKHVybG5hbWUscG9zeCxwb3N5LGJhc2V1cmwsZmlsZU5hbWUsCisgIAkJCW1vZHVsZU5hbWUscGFyZW50UGF0aCxyb29tLGRvbWFpbiwKKyAgCQkJdGhpcy5zdGFydE5ld09iamVjdFN5bmNQcm9jZXNzLnVuaXF1ZU9iamVjdFN5bmNOYW1lLGZhbHNlKTsKKyAgCTwvbWV0aG9kPgorICAJCisgIAk8IS0tIHN0YW5kYXJkIGFkZCBGdW5jdGlvbiAtLT4KKyAgCTxtZXRob2QgbmFtZT0iYWRkTmV3SW1hZ2UiIGFyZ3M9InVybG5hbWUscG9zeCxwb3N5LGJhc2V1cmwsZmlsZU5hbWUsbW9kdWxlTmFtZSxwYXJlbnRQYXRoLHJvb20sZG9tYWluLHVuaXF1ZU9iamVjdFN5bmNOYW1lLGlzTG9jYWxTeW5jIj4KKyAgCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidXJsbmFtZSBwb3N4OiAiLHVybG5hbWUscG9zeCk7CisgIAkJdGhpcy5hZGRJbWFnZVRvTGF5ZXIodGhpcywnaW1hZ2UnK3RoaXMuZ2V0Q291bnRlcigpLHVybG5hbWUsCisgIAkJCXBvc3gscG9zeSwwLDAsCisgIAkJCXRydWUsCisgIAkJCWJhc2V1cmwsZmlsZU5hbWUsbW9kdWxlTmFtZSxwYXJlbnRQYXRoLHJvb20sZG9tYWluLHVuaXF1ZU9iamVjdFN5bmNOYW1lLGlzTG9jYWxTeW5jKTsKKyAgCTwvbWV0aG9kPgorICAJCisJPCEtLQorCQlhbHRlck1vZHVzID0+IHRoaXMgaXMgYWRkZWQgYnkgdGhlIG1vZCBub3QgcmVtb3RlbHkKKwkJCisJIC0tPgorICAJPG1ldGhvZCBuYW1lPSJhZGRJbWFnZVRvTGF5ZXIiIGFyZ3M9Im9iaixuYW1laW5nLHVybG5hbWUscG9zeCxwb3N5LHdpZHRoLGhlaWdodCxhbHRlck1vZHVzLGJhc2V1cmwsZmlsZU5hbWUsbW9kdWxlTmFtZSxwYXJlbnRQYXRoLHJvb20sZG9tYWluLHVuaXF1ZU9iamVjdFN5bmNOYW1lLGlzTG9jYWxTeW5jIj4KKyAgICAgICAgPCFbQ0RBVEFbCisJCQkvL29ubHkgc2hvdyBpZiBpdCBpcyBub3QgcGFydCBvZiB3bWwtZmlsZS1vYmplY3QKKwkJCS8vZG8gbm90IHNob3cgYXQgYWxsIGFzIHRoaXMgaXMgaGFuZGxlZCB2aWEgdGhlIHJlbW90ZSBPYmplY3QKKwkJCS8vaWYgKCF0aGlzLmlzV21sTG9hZGVySW1hZ2UpIHsKKwkJCS8vCXRoaXMubG9hZGltYWdlRGF0YVdpblJlZiA9IG5ldyBsei5sb2FkV2hpdGVib2FyZFdpbmRvdyhjYW52YXMubWFpbl9jb250ZW50Ll9jb250ZW50LmlubmVyLHtyZWZPYmo6dGhpc30pOworCQkJLy8JdGhpcy5sb2FkaW1hZ2VEYXRhV2luUmVmLnNldE1lc3NhZ2UoY2FudmFzLmdldExhYmVsTmFtZSh0aGlzLmltYWdlTG9hZE1lc3NhZ2VJZCkpOworCQkJLy99CisJCQkKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJhZGRJbWFnZVRvTGF5ZXIgIix1cmxuYW1lKTsKKyAgICAgICAgCS8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImFkZEltYWdlVG9MYXllciAiLG9iaixuYW1laW5nLHVybG5hbWUscG9zeCxwb3N5LHdpZHRoLGhlaWdodCxhbHRlck1vZHVzLGJhc2V1cmwsZmlsZU5hbWUsbW9kdWxlTmFtZSxwYXJlbnRQYXRoLHJvb20sZG9tYWluKTsKKwkJCS8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImFkZEltYWdlVG9MYXllciBwb3N4ICIscG9zeCk7CisgICAgICAgIAkKKwkJCXZhciBzcmMgPSBiYXNldXJsKyc/ZmlsZU5hbWU9JyArIGVuY29kZVVSSUNvbXBvbmVudChmaWxlTmFtZSkgKyAKKwkJCQknJm1vZHVsZU5hbWU9JyArIG1vZHVsZU5hbWUgKworCQkJCScmcGFyZW50UGF0aD0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHBhcmVudFBhdGgpICsKKwkJCQknJnJvb21faWQ9JyArIHJvb20gKyAKKwkJCQknJnNpZD0nICsgY2FudmFzLnNlc3Npb25JZDsKKwkKKwkgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJhZGRJbWFnZVRvTGF5ZXIgLXNyYy0gIixzcmMpOworCQkgICAgICAKKwkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJhbHRlck1vZHVzOiAiLGFsdGVyTW9kdXMpOworCQkJCisJICAJCXRoaXMuY3VycmVudGxheWVyID0gbmV3IGx6LmltYWdlRm9yRHJhd1ZpZXcob2JqLHsKKwkgIAkJCXNyYzpzcmMscmVmT2JqOnRoaXMsbmFtZTpuYW1laW5nLHg6cG9zeCx5OnBvc3ksCisJICAJCQlyZW1vdGV3aWR0aDp3aWR0aCxyZW1vdGVoZWlnaHQ6aGVpZ2h0LAorCSAgCQkJZG93bmxvYWR1cmw6dXJsbmFtZSxhbHRlck1vZHVzOmFsdGVyTW9kdXMsCisJICAJCQliYXNldXJsOmJhc2V1cmwsZmlsZU5hbWU6ZmlsZU5hbWUsbW9kdWxlTmFtZTptb2R1bGVOYW1lLAorCSAgCQkJcGFyZW50UGF0aDpwYXJlbnRQYXRoLHJvb206cm9vbSxkb21haW46ZG9tYWluLAorCSAgCQkJdW5pcXVlT2JqZWN0U3luY05hbWU6dW5pcXVlT2JqZWN0U3luY05hbWUsCisJICAJCQlpc0xvY2FsU3luYzppc0xvY2FsU3luY30pOwkKKwkJCQorCQkJLy90aGlzLnBhcmVudC5wYXJlbnQuaXNsb2FkaW5nSW1hZ2Uuc2VuZEV2ZW50KHRoaXMuY3VycmVudGxheWVyKTsKKwkJCS8vdGhpcy5wYXJlbnQuX2xvYWRpbmcuc2V0QXR0cmlidXRlKCd2aXNpYmxlJyx0cnVlKTsKKwkJCQorCQkJLy9BZGQgTGF5ZXIgdG8gZ2xvYmFsIExheWVyICAJCisJCSAgICByZXR1cm4gdGhpcy5jdXJyZW50bGF5ZXI7CisJCV1dPgorICAJPC9tZXRob2Q+CisgIAkKKyAgCTwhLS0KKyAgCSAgICBAZGVwcmVjYXRlZAorICAJIC0tPgorICAJPG1ldGhvZCBuYW1lPSJhZGRJbWFnZVRvTGF5ZXJSZWNvcmRlZCIgYXJncz0ib2JqLG5hbWVpbmcsdXJsbmFtZSxwb3N4LHBvc3ksd2lkdGgsaGVpZ2h0LGFsdGVyTW9kdXMsYmFzZXVybCxmaWxlTmFtZSxtb2R1bGVOYW1lLHBhcmVudFBhdGgscm9vbSxkb21haW4iPgorICAgICAgICA8IVtDREFUQVsKKwkJCS8vb25seSBzaG93IGlmIGl0IGlzIG5vdCBwYXJ0IG9mIHdtbC1maWxlLW9iamVjdAorCQkJaWYgKCF0aGlzLmlzV21sTG9hZGVySW1hZ2UpIHsKKwkJCQl0aGlzLmxvYWRpbWFnZURhdGFXaW5SZWYgPSBuZXcgbHoubG9hZFdoaXRlYm9hcmRXaW5kb3coY2FudmFzLm1haW5fY29udGVudC5fY29udGVudC5pbm5lcix7cmVmT2JqOnRoaXN9KTsKKwkJCQl0aGlzLmxvYWRpbWFnZURhdGFXaW5SZWYuc2V0TWVzc2FnZShjYW52YXMuZ2V0TGFiZWxOYW1lKHRoaXMuaW1hZ2VMb2FkTWVzc2FnZUlkKSk7CisJCQl9CisJCQl2YXIgc3JjID0gYmFzZXVybCsnP2ZpbGVOYW1lPScrZmlsZU5hbWUrJyZtb2R1bGVOYW1lPScrbW9kdWxlTmFtZSsnJnBhcmVudFBhdGg9JytwYXJlbnRQYXRoKycmcm9vbV9pZD0nK3Jvb20rJyZzaWQ9JytjYW52YXMuc2Vzc2lvbklkOworCQorCQkJdGhpcy5jdXJyZW50bGF5ZXIgPSBuZXcgbHouaW1hZ2VGb3JEcmF3VmlldyhvYmoseworCQkJCXNyYzpzcmMscmVmT2JqOnRoaXMsbmFtZTpuYW1laW5nLHg6cG9zeCx5OnBvc3ksCisJCQkJZG93bmxvYWR1cmw6dXJsbmFtZSxyZW1vdGV3aWR0aDp3aWR0aCxyZW1vdGVoZWlnaHQ6aGVpZ2h0LAorCQkJCWFsdGVyTW9kdXM6YWx0ZXJNb2R1cyxiYXNldXJsOmJhc2V1cmwsZmlsZU5hbWU6ZmlsZU5hbWUsCisJCQkJbW9kdWxlTmFtZTptb2R1bGVOYW1lLHBhcmVudFBhdGg6cGFyZW50UGF0aCwKKwkJCQlyb29tOnJvb20sZG9tYWluOmRvbWFpbixyZWNvcmRlck1vZHVzOnRydWV9KTsKKworCQkJdGhpcy5wYXJlbnQucGFyZW50LmlzbG9hZGluZ0ltYWdlLnNlbmRFdmVudCh0aGlzLmN1cnJlbnRsYXllcik7CisJCQkvL3RoaXMucGFyZW50Ll9sb2FkaW5nLnNldEF0dHJpYnV0ZSgndmlzaWJsZScsdHJ1ZSk7CisJCQkvL0FkZCBMYXllciB0byBnbG9iYWwgTGF5ZXIgIAkKKwkJICAgIHJldHVybiB0aGlzLmN1cnJlbnRsYXllcjsKKwkJXV0+CisgIAk8L21ldGhvZD4KKyAgCQorICAJPG1ldGhvZCBuYW1lPSJpbmNvbWluZ1NjcmVlblNoYXJpbmciIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgPCFbQ0RBVEFbCisJCS8vb25seSBkbyBpZiBsYXN0IGltYWdlIGhhcyBiZWVuIGxvYWRpbmcgc3VjY2Vzc2Z1bGx5CisgICAgICAgICAgICBpZiAoIXRoaXMuaXNTY3JlZW5JbWFnZUxvYWRpbmcpeworICAgICAgICAgICAgICAgIHRoaXMuaXNTY3JlZW5JbWFnZUxvYWRpbmcgPSB0cnVlOworICAgICAgICAgICAgICAgIHZhciBkb3dubG9hZHVybCA9IGNhbnZhcy5nZXRVcmwoKSArICdTY3JlZW5WaWV3SGFuZGxlcj8nCisgICAgICAgICAgICAgICAgICAgICsnZmlsZU5hbWU9JytlbmNvZGVVUklDb21wb25lbnQodmFsdWUuZmlsZU5hbWUpCisgICAgICAgICAgICAgICAgICAgICsnJnJvb209JytoaWIuY3VycmVudHJvb21pZAorICAgICAgICAgICAgICAgICAgICArJyZkb21haW49JytoaWIuY29uZmVyZW5jZWRvbWFpbgorICAgICAgICAgICAgICAgICAgICArJyZzaWQ9JytjYW52YXMuc2Vzc2lvbklkOworICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy9EZWJ1Zy53cml0ZSgiaW5jb21pbmdTY3JlZW5TaGFyaW5nIFVSTDogIixkb3dubG9hZHVybCk7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2NyZWVuSW1hZ2VSZWZOdW1iZXI9PTEpeworICAgICAgICAgICAgICAgICAgICB0aGlzLnNjcmVlbkltYWdlUmVmMSA9IG5ldyBsei5pbWFnZUZvclNjcmVlblZpZXdlcih0aGlzLHt2aXNpYmxlOmZhbHNlLHNyYzpkb3dubG9hZHVybCxyZWZPYmo6dGhpcyxuYW1lOidzY3JlZW4xJyx4OjAseTowLGRvd25sb2FkdXJsOmRvd25sb2FkdXJsfSk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuSW1hZ2VSZWZOdW1iZXIgPSAyOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5zY3JlZW5JbWFnZVJlZk51bWJlcj09Mil7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuc2NyZWVuSW1hZ2VSZWYyID0gbmV3IGx6LmltYWdlRm9yU2NyZWVuVmlld2VyKHRoaXMse3Zpc2libGU6ZmFsc2Usc3JjOmRvd25sb2FkdXJsLHJlZk9iajp0aGlzLG5hbWU6J3NjcmVlbjInLHg6MCx5OjAsZG93bmxvYWR1cmw6ZG93bmxvYWR1cmx9KTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5zY3JlZW5JbWFnZVJlZk51bWJlciA9IDE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRoaXMuc2V0TmV3U2NyZWVuVXNlck5hbWUuc2VuZEV2ZW50KCdTY3JlZW4gb2YgVXNlcjogJyt2YWx1ZS51c2VyLmZpcnN0bmFtZSsnLCcrdmFsdWUudXNlci5sYXN0bmFtZSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIC8vRGVidWcud3JpdGUoImZyYW1lIGRyb3BwZWQhIik7CisgICAgICAgICAgICAgICAgRGVidWcud2FybigiZnJhbWUgZHJvcHBlZCEiKTsKKyAgICAgICAgICAgICAgICAobmV3IGx6LnNpbmdsZXRvbkVycm9yUG9wdXBIb2xkZXIoKSkuc2V0RXJyb3IoY2FudmFzLmdldExhYmVsTmFtZSgyNDApKTsKKyAgICAgICAgICAgIH0KKwkJXV0+CisgIAk8L21ldGhvZD4gICAKKyAgICAKKyAgICA8IS0tCisgICAgVE9ETzogTWFrZSBuZXcgQmFzZSBDbGFzcyBpbmNsdWRpbmcgdGhlIFNjcmVlbiBzaGFyaW5nIEZ1bmN0aW9ucworICAgICAtLT4KKyAgICA8bWV0aG9kIG5hbWU9InRvZ2dsZVZpc2libGVTY3JlZW5TaGFyaW5nIj4KKyAgICAgICAgaWYgKHRoaXMuc2NyZWVuSW1hZ2VSZWZOdW1iZXI9PTEpeworICAgICAgICAgICAgaWYgKHRoaXMuc2NyZWVuSW1hZ2VSZWYxKSB0aGlzLnNjcmVlbkltYWdlUmVmMS5kZXN0cm95KCk7CisgICAgICAgICAgICB0aGlzLnNjcmVlbkltYWdlUmVmMi5zZXRBdHRyaWJ1dGUoJ3Zpc2libGUnLHRydWUpOworICAgICAgICB9IGVsc2UgaWYgKHRoaXMuc2NyZWVuSW1hZ2VSZWZOdW1iZXI9PTIpeworICAgICAgICAgICAgdGhpcy5zY3JlZW5JbWFnZVJlZjEuc2V0QXR0cmlidXRlKCd2aXNpYmxlJyx0cnVlKTsKKyAgICAgICAgICAgIGlmICh0aGlzLnNjcmVlbkltYWdlUmVmMikgdGhpcy5zY3JlZW5JbWFnZVJlZjIuZGVzdHJveSgpOworICAgICAgICB9CisgICAgICAgIHRoaXMuaXNTY3JlZW5JbWFnZUxvYWRpbmcgPSBmYWxzZTsKKyAgICA8L21ldGhvZD4gCisJCisJPCEtLQorCQlhY3Rpb25PYmplY3QgPT4gYXR0cmlidXRlcyBuZWNjZXNzYXJ5IGZvciBsb2FkaW5nIGltYWdlCisJCXJlZk9iaiA9IGRyYXdhcmVhCisJCWlzV21sTG9hZGVyID0+ICh0cnVlKWlzIGxvYWRlZCBhcyBwYXJ0IG9mIHdtbC1vYmplY3QKKwkJCisJCS0tPgorCQkKKwk8IS0tIG1ldGhvZCBhZGRzIGEgbmV3IEltYWdlIHRvIHRoZSBMYXllciwKKwlidXQgd2l0aG91dCBtYWtpbmcgYW4gVXBkYXRlLUV2ZW50LCAKKwlJbWFnZSBhZGRlZCBieSByZW1vdGUgaG9zdCAtLT4JCisgIAk8bWV0aG9kIG5hbWU9ImFkZEltYWdlVG9MYXllckhpc3RvcnlTeW5jZWQiIGFyZ3M9ImFjdGlvbk9iamVjdCxyZWZPYmoiPgorICAJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJhZGRJbWFnZVRvTGF5ZXJIaXN0b3J5OiAiLGFjdGlvbk9iamVjdCxyZWZPYmopOworICAJCS8vc3RhcnQgc3luYyBwcm9jZXNzIHVzaW5nIHRoZSByZW1vdGUgdW5pcXVlT2JqZWN0U3luY05hbWUgYXMgaWRlbnRpZmllcgorICAJCS8vVGhpcyBpbnZva2VzIGEgTWV0aG9kIHdoaWNoIGlzIGluIHRoZSByZW1vdGVXaGl0ZWJvYXJkLmx6eAorICAJCXRoaXMuc3RhcnROZXdPYmplY3RTeW5jUHJvY2Vzcy5pc1N0YXJ0aW5nID0gZmFsc2U7CisgIAkJdGhpcy5zdGFydE5ld09iamVjdFN5bmNQcm9jZXNzLnVuaXF1ZU9iamVjdFN5bmNOYW1lID0gYWN0aW9uT2JqZWN0WzhdOworICAJCXRoaXMuc3RhcnROZXdPYmplY3RTeW5jUHJvY2Vzcy5kb0NhbGwoKTsKKyAgCQl0aGlzLmFkZEltYWdlVG9MYXllcihyZWZPYmosYWN0aW9uT2JqZWN0W2FjdGlvbk9iamVjdC5sZW5ndGgtMV0sYWN0aW9uT2JqZWN0WzFdLAorCQkgIAkJYWN0aW9uT2JqZWN0W2FjdGlvbk9iamVjdC5sZW5ndGgtNV0sYWN0aW9uT2JqZWN0W2FjdGlvbk9iamVjdC5sZW5ndGgtNF0sCisJCSAgCQlhY3Rpb25PYmplY3RbYWN0aW9uT2JqZWN0Lmxlbmd0aC0zXSxhY3Rpb25PYmplY3RbYWN0aW9uT2JqZWN0Lmxlbmd0aC0yXSwKKwkJICAJCWZhbHNlLAorCQkgIAkJYWN0aW9uT2JqZWN0WzJdLGFjdGlvbk9iamVjdFszXSxhY3Rpb25PYmplY3RbNF0sYWN0aW9uT2JqZWN0WzVdLAorCQkgIAkJYWN0aW9uT2JqZWN0WzZdLGFjdGlvbk9iamVjdFs3XSxhY3Rpb25PYmplY3RbOF0sZmFsc2UpOworCQkgIAkJCisgIAkJdGhpcy5kb1NXRkRvY3VtZW50U3RhdHVzKHRoaXMuY3VycmVudGxheWVyLGFjdGlvbk9iamVjdFthY3Rpb25PYmplY3QubGVuZ3RoLTddKTsKKyAgCTwvbWV0aG9kPgorICAJCQkKKyAgCTwhLS0tIAorCQlpbnZva2UgYnkgdGhlIGluaXRpYWwgTG9hZGluZyBwcm9jZXNzIGluIHJlbW90ZVdoaXRlYm9hcmQubHp4LCAKKwkJZG9lcyBub3QgaW52b2tlIGFueSBVcGRhdGUgSGFuZGxlcgorCQlvbmNlIHRoaXMgb2JqZWN0IGlzIGxvYWRlZCwgaXQgd2lsbCB0aHJvdyBhbiBVcGRhdGUgZXZlbnQgb2Yga2luZAorCQlhZGRJbWFnZVRvTGF5ZXJIaXN0b3J5VG9Mb2NhbExvYWRlZAkJCisgIAkgLS0+CisgIAk8bWV0aG9kIG5hbWU9ImFkZEltYWdlVG9MYXllckhpc3RvcnlUb0xvY2FsIiBhcmdzPSJhY3Rpb25PYmplY3QscmVmT2JqIj4KKyAgCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiYWRkSW1hZ2VUb0xheWVySGlzdG9yeVRvTG9jYWw6ICIsYWN0aW9uT2JqZWN0LHJlZk9iaik7CisgIAkJdGhpcy5hZGRJbWFnZVRvTGF5ZXIocmVmT2JqLGFjdGlvbk9iamVjdFthY3Rpb25PYmplY3QubGVuZ3RoLTFdLGFjdGlvbk9iamVjdFsxXSwKKwkJICAJCWFjdGlvbk9iamVjdFthY3Rpb25PYmplY3QubGVuZ3RoLTVdLGFjdGlvbk9iamVjdFthY3Rpb25PYmplY3QubGVuZ3RoLTRdLAorCQkgIAkJYWN0aW9uT2JqZWN0W2FjdGlvbk9iamVjdC5sZW5ndGgtM10sYWN0aW9uT2JqZWN0W2FjdGlvbk9iamVjdC5sZW5ndGgtMl0sCisJCSAgCQlmYWxzZSwKKwkJICAJCWFjdGlvbk9iamVjdFsyXSxhY3Rpb25PYmplY3RbM10sYWN0aW9uT2JqZWN0WzRdLGFjdGlvbk9iamVjdFs1XSwKKwkJICAJCWFjdGlvbk9iamVjdFs2XSxhY3Rpb25PYmplY3RbN10sYWN0aW9uT2JqZWN0WzhdLHRydWUpOworICAJPC9tZXRob2Q+CisgIAkKKyAgCTwhLS0gCisgIAkJdGhpcyBoYW5kbGVyIGlzIGltcGxlbWVudGVkIGFsc28gaW4gcmVtb3RlV2hpdGVib2FyZC5senggdG8gc3luYyBhIExvY2FsIE9iamVjdCBsaXN0CisgIAkJYnV0IHRocm93cyBOTyBVcGRhdGUgRXZlbnQsIGNhdXNlIGl0cyBvbmx5IG5lZWRlZCBMb2NhbGx5LCB0aGUgd2hvbGUgU3luYyBQcm9jZXNzCisgIAkJaGFzIGEgZGlmZmVyZW50IFN5bmMtT2JqZWN0IGZvciBMb2FkaW5nIHRoZSBjb21wbGV0ZSBPYmplY3QgTGlzdCBmcm9tIHRoZSBTZXZlci4KKyAgCQlFYWNoIE9iamVjdCBpcyBsb2FkZWQgTG9jYWxseSwgb25jZSBhbGwgT2JqZWN0cyBhcmUgbG9hZGVkIHRoZSBDb21wbGV0ZS1FdmVudCBpcyBicm9hZGNhc3RlZAorICAJCXRvIHRoZSBzZXJ2ZXIsIGJ1dCBldmVyeSBJdGVtIG9uIHRoZSBMaXN0IGlzIG9ubHkgY29udHJvbGxlZCBsb2NhbGx5CisgIAktLT4KKyAgCTxoYW5kbGVyIG5hbWU9ImFkZEltYWdlVG9MYXllckhpc3RvcnlUb0xvY2FsTG9hZGVkIiBhcmdzPSJvYmpSZWYiPgorICAJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJhZGRJbWFnZVRvTGF5ZXJIaXN0b3J5VG9Mb2NhbDogIixvYmpSZWYpOworCQl0aGlzLnN5bmNJbWFnZVJlZk9iaiA9IG9ialJlZjsKKwkJCisJCXRoaXMucmVnaXN0ZXJOZXdJbWFnZSh0aGlzLnN5bmNJbWFnZVJlZk9iai5zcmMsCisJCQl0aGlzLnN5bmNJbWFnZVJlZk9iai54LHRoaXMuc3luY0ltYWdlUmVmT2JqLnksCisJCQl0aGlzLnN5bmNJbWFnZVJlZk9iai53aWR0aCx0aGlzLnN5bmNJbWFnZVJlZk9iai5oZWlnaHQsCisJCQl0aGlzLnN5bmNJbWFnZVJlZk9iai5iYXNldXJsLHRoaXMuc3luY0ltYWdlUmVmT2JqLmZpbGVOYW1lLAorCQkJdGhpcy5zeW5jSW1hZ2VSZWZPYmoubW9kdWxlTmFtZSx0aGlzLnN5bmNJbWFnZVJlZk9iai5wYXJlbnRQYXRoLAorCQkJdGhpcy5zeW5jSW1hZ2VSZWZPYmoucm9vbSx0aGlzLnN5bmNJbWFnZVJlZk9iai5kb21haW4sCisJCQlmYWxzZSx0aGlzLnN5bmNJbWFnZVJlZk9iai51bmlxdWVPYmplY3RTeW5jTmFtZSx0aGlzLmdldFNXRkRvY3VtZW50U3RhdHVzKCksCisgICAgICAgICAgICAgICAgdGhpcy5nZXRaSW5kZXgoKSk7CisgIAk8L2hhbmRsZXI+CisgIAkKKyAgCTwhLS0tIEBrZXl3b3JkcyBkZXByZWNhdGVkCisgIAlUT0RPOiB1bmlxdWVPYmplY3RTeW5jTmFtZSBtaXNzaW5nCisgIAkgLS0+CisgIAk8bWV0aG9kIG5hbWU9ImFkZEltYWdlVG9MYXllckhpc3RvcnlSZWNvcmRlZCIgYXJncz0iYWN0aW9uT2JqZWN0LHJlZk9iaixpc1dtbExvYWRlciI+CisJCXRoaXMuaXNXbWxMb2FkZXJJbWFnZSA9IGlzV21sTG9hZGVyOworICAJCXRoaXMuYWRkSW1hZ2VUb0xheWVyUmVjb3JkZWQocmVmT2JqLAorICAJCQlhY3Rpb25PYmplY3RbYWN0aW9uT2JqZWN0Lmxlbmd0aC0xXSxhY3Rpb25PYmplY3RbMV0sCisgIAkJCWFjdGlvbk9iamVjdFthY3Rpb25PYmplY3QubGVuZ3RoLTVdLGFjdGlvbk9iamVjdFthY3Rpb25PYmplY3QubGVuZ3RoLTRdLAorICAJCQlhY3Rpb25PYmplY3RbYWN0aW9uT2JqZWN0Lmxlbmd0aC0zXSxhY3Rpb25PYmplY3RbYWN0aW9uT2JqZWN0Lmxlbmd0aC0yXSwKKyAgCQkJZmFsc2UsCisgIAkJCWFjdGlvbk9iamVjdFsyXSxhY3Rpb25PYmplY3RbM10sYWN0aW9uT2JqZWN0WzRdLGFjdGlvbk9iamVjdFs1XSwKKyAgCQkJYWN0aW9uT2JqZWN0WzZdLGFjdGlvbk9iamVjdFs3XSk7CisgIAk8L21ldGhvZD4KKyAgCQorICAJPG1ldGhvZCBuYW1lPSJyZWdpc3Rlck5ld0ltYWdlIiBhcmdzPSJ1cmxuYW1lLHBvc3gscG9zeSx3aWR0aCxoZWlnaHQsYmFzZXVybCxmaWxlTmFtZSxtb2R1bGVOYW1lLHBhcmVudFBhdGgscm9vbSxkb21haW4sZG9DYWxsVXBkYXRlLHVuaXF1ZU9iamVjdFN5bmNOYW1lLHN3Zk9iaix6SW5kZXgiPgorCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgicmVnaXN0ZXJOZXdJbWFnZSBkb0NhbGxVcGRhdGU6ICIsZG9DYWxsVXBkYXRlKTsKKwkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInJlZ2lzdGVyTmV3SW1hZ2Ugc3dmT2JqOiAiLHN3Zk9iaik7CisJCXZhciBhY3Rpb25PYmplY3QgPSBuZXcgQXJyYXkoKTsKKwkgICAgYWN0aW9uT2JqZWN0LnB1c2goJ2ltYWdlJyk7CisJICAgIGFjdGlvbk9iamVjdC5wdXNoKHVybG5hbWUpOworCQlhY3Rpb25PYmplY3QucHVzaChiYXNldXJsKTsKKwkJYWN0aW9uT2JqZWN0LnB1c2goZmlsZU5hbWUpOworCQlhY3Rpb25PYmplY3QucHVzaChtb2R1bGVOYW1lKTsKKwkJYWN0aW9uT2JqZWN0LnB1c2gocGFyZW50UGF0aCk7CisJCWFjdGlvbk9iamVjdC5wdXNoKHJvb20pOworCQlhY3Rpb25PYmplY3QucHVzaChkb21haW4pOworCQlhY3Rpb25PYmplY3QucHVzaCh1bmlxdWVPYmplY3RTeW5jTmFtZSk7CisJCWFjdGlvbk9iamVjdC5wdXNoKHpJbmRleCk7Ly8tOAorCQlhY3Rpb25PYmplY3QucHVzaChzd2ZPYmopOy8vLTcKKwkJYWN0aW9uT2JqZWN0LnB1c2godGhpcy5jb3VudGVyKTsvLy02CisJICAgIGFjdGlvbk9iamVjdC5wdXNoKHBvc3gpOy8vLTUKKwkgICAgYWN0aW9uT2JqZWN0LnB1c2gocG9zeSk7Ly8tNAorCSAgICBhY3Rpb25PYmplY3QucHVzaCh3aWR0aCk7Ly8tMworCSAgICBhY3Rpb25PYmplY3QucHVzaChoZWlnaHQpOy8vLTIKKwkgICAgYWN0aW9uT2JqZWN0LnB1c2godGhpcy5jdXJyZW50bGF5ZXIubmFtZSk7Ly8tMQorCSAgICB0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0LnB1c2goYWN0aW9uT2JqZWN0KTsJCisJICAgIHRoaXMuY2hlY2tTdGVwTGF5ZXJzKCk7CisJICAgIGlmIChkb0NhbGxVcGRhdGUpIHRoaXMub25zaGFyZWRNZXNzYWdlKCdkcmF3JyxhY3Rpb25PYmplY3QpOwkKKyAgCTwvbWV0aG9kPgorCQorCTwhLS0gCisJCWFkZHMgdGhlIEltYWdlIHRvIHRoZSBMYXllcnMgYW5kIHRocm93cyBhIG9uc2hhcmVkTWVzc2FnZSwKKwkJdGhpcyBjYW4gb25seSBoYXBwZW4gX2FmdGVyXyBsb2FkaW5nIHRoZSBJbWFnZSBjYXVzZSB5b3UgZG8gbm90IGtub3cgaXRzIAorCQl3aWR0aCBhbmQgaGVpZ2h0IAorCS0tPgorCTxtZXRob2QgbmFtZT0ic3RvcmVUZW1wVmFsc0FuZExvYWRTeW5jTGlzdCIgYXJncz0ib2JqUmVmIj4KKwkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInN0b3JlVGVtcFZhbHNBbmRMb2FkU3luY0xpc3Q6ICIsb2JqUmVmKTsKKwkJdGhpcy5zeW5jSW1hZ2VSZWZPYmogPSBvYmpSZWY7CisJCQorCQkvL1RoaXMgaW52b2tlcyBhIE1ldGhvZCB3aGljaCBpcyBpbiB0aGUgcmVtb3RlV2hpdGVib2FyZC5sengKKwkJdGhpcy5zZW5kQ29tcGxldGVkT2JqZWN0U3luY0V2ZW50LnVuaXF1ZU9iamVjdFN5bmNOYW1lID0gdGhpcy5zeW5jSW1hZ2VSZWZPYmoudW5pcXVlT2JqZWN0U3luY05hbWU7CisJCXRoaXMuc2VuZENvbXBsZXRlZE9iamVjdFN5bmNFdmVudC5kb0NhbGwoKTsKKwkJCisJCXRoaXMucmVnaXN0ZXJOZXdJbWFnZSh0aGlzLnN5bmNJbWFnZVJlZk9iai5zcmMsCisJCQl0aGlzLnN5bmNJbWFnZVJlZk9iai54LHRoaXMuc3luY0ltYWdlUmVmT2JqLnksCisJCQl0aGlzLnN5bmNJbWFnZVJlZk9iai53aWR0aCx0aGlzLnN5bmNJbWFnZVJlZk9iai5oZWlnaHQsCisJCQl0aGlzLnN5bmNJbWFnZVJlZk9iai5iYXNldXJsLHRoaXMuc3luY0ltYWdlUmVmT2JqLmZpbGVOYW1lLAorCQkJdGhpcy5zeW5jSW1hZ2VSZWZPYmoubW9kdWxlTmFtZSx0aGlzLnN5bmNJbWFnZVJlZk9iai5wYXJlbnRQYXRoLAorCQkJdGhpcy5zeW5jSW1hZ2VSZWZPYmoucm9vbSx0aGlzLnN5bmNJbWFnZVJlZk9iai5kb21haW4sCisJCQl0cnVlLHRoaXMuc3luY0ltYWdlUmVmT2JqLnVuaXF1ZU9iamVjdFN5bmNOYW1lLHRoaXMuZ2V0U1dGRG9jdW1lbnRTdGF0dXMoKSwKKyAgICAgICAgICAgICAgICB0aGlzLmdldFpJbmRleCgpKTsJCQorCQorCTwvbWV0aG9kPgorCQorCTwhLS0tIEBrZXl3b3JkcyBkZXByZWNhdGVkCisgIAlUT0RPOiBjaGVjayBSZWNvcmRlciBNb2R1cworICAJIC0tPgorCTxtZXRob2QgbmFtZT0ic3RvcmVUZW1wVmFsc0FuZExvYWRTeW5jTGlzdFJlY29yZGluZyIgYXJncz0ib2JqUmVmIj4KKwkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIiMjIyMjIyMjIyMjIHN0b3JlVGVtcFZhbHNBbmRMb2FkU3luY0xpc3RSZWNvcmRpbmc6ICIsb2JqUmVmKTsKKwkJdGhpcy5zeW5jSW1hZ2VSZWZPYmogPSBvYmpSZWY7CisJCXRoaXMuZG9SZWdpc3RlckFmdGVyTG9hZGluZ09yUmVjb3JkaW5nKCk7CisJCXRoaXMuc2VuZENvbXBsZXRlSW1hZ2VTeW5jKCk7CisJPC9tZXRob2Q+CisJCisJPG1ldGhvZCBuYW1lPSJzZW5kTG9hZE5vdGlmaWNhdGlvbkltYWdlIiBhcmdzPSJvYmpSZWYiID4KKwkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInNlbmRMb2FkTm90aWZpY2F0aW9uSW1hZ2U6ICIsb2JqUmVmKTsKKwkJdGhpcy5zeW5jSW1hZ2VSZWZPYmogPSBvYmpSZWY7CisJCXRoaXMucmVnaXN0ZXJOZXdJbWFnZSh0aGlzLnN5bmNJbWFnZVJlZk9iai5zcmMsCisJCQl0aGlzLnN5bmNJbWFnZVJlZk9iai54LHRoaXMuc3luY0ltYWdlUmVmT2JqLnksCisJCQl0aGlzLnN5bmNJbWFnZVJlZk9iai53aWR0aCx0aGlzLnN5bmNJbWFnZVJlZk9iai5oZWlnaHQsCisJCQl0aGlzLnN5bmNJbWFnZVJlZk9iai5iYXNldXJsLHRoaXMuc3luY0ltYWdlUmVmT2JqLmZpbGVOYW1lLAorCQkJdGhpcy5zeW5jSW1hZ2VSZWZPYmoubW9kdWxlTmFtZSx0aGlzLnN5bmNJbWFnZVJlZk9iai5wYXJlbnRQYXRoLAorCQkJdGhpcy5zeW5jSW1hZ2VSZWZPYmoucm9vbSx0aGlzLnN5bmNJbWFnZVJlZk9iai5kb21haW4sCisJCQlmYWxzZSx0aGlzLnN5bmNJbWFnZVJlZk9iai51bmlxdWVPYmplY3RTeW5jTmFtZSx0aGlzLmdldFNXRkRvY3VtZW50U3RhdHVzKCksCisgICAgICAgICAgICAgICAgdGhpcy5nZXRaSW5kZXgoKSk7CQorCQkvL1RoaXMgaW52b2tlcyBhIE1ldGhvZCB3aGljaCBpcyBpbiB0aGUgcmVtb3RlV2hpdGVib2FyZC5sengKKwkJdGhpcy5zZW5kQ29tcGxldGVkT2JqZWN0U3luY0V2ZW50LnVuaXF1ZU9iamVjdFN5bmNOYW1lID0gdGhpcy5zeW5jSW1hZ2VSZWZPYmoudW5pcXVlT2JqZWN0U3luY05hbWU7CisJCXRoaXMuc2VuZENvbXBsZXRlZE9iamVjdFN5bmNFdmVudC5kb0NhbGwoKTsKKwk8L21ldGhvZD4KKyAgICAKKyAgICA8IS0tLSBAa2V5d29yZHMgZGVwcmVjYXRlZAorICAgIFRPRE86IENoZWNrIHJlY29yZGVyIE1vZHVzCisgICAgIC0tPgorICAgIDxtZXRob2QgbmFtZT0iZG9SZWdpc3RlckFmdGVyTG9hZGluZ09yUmVjb3JkaW5nIj4KKyAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIiMjIyMjIyMjIyMjIGRvUmVnaXN0ZXJBZnRlckxvYWRpbmdPclJlY29yZGluZyIpOworCQl0aGlzLmltYWdlU3luY01lc3NhZ2VUZXh0ID0gY2FudmFzLmdldExhYmVsTmFtZSh0aGlzLmltYWdlU3luY01lc3NhZ2VJZCk7CisJCS8vbm93IHNlbmQgbm90aWZpY2F0aW9ucyB0byBjb25uZWN0ZWQgY2xpZW50cworCQl0aGlzLnNldEF0dHJpYnV0ZSgnZHJhd21vZHVzJywnaW1hZ2UnKTsKKwkJdGhpcy5yZWdpc3Rlck5ld0ltYWdlKHRoaXMuc3luY0ltYWdlUmVmT2JqLnNyYywKKwkJICAgICAgICAgICAgICB0aGlzLnN5bmNJbWFnZVJlZk9iai54LHRoaXMuc3luY0ltYWdlUmVmT2JqLnksCisJCSAgICAgICAgICAgICAgdGhpcy5zeW5jSW1hZ2VSZWZPYmoud2lkdGgsdGhpcy5zeW5jSW1hZ2VSZWZPYmouaGVpZ2h0LAorCQkgICAgICAgICAgICAgIHRoaXMuc3luY0ltYWdlUmVmT2JqLmJhc2V1cmwsdGhpcy5zeW5jSW1hZ2VSZWZPYmouZmlsZU5hbWUsCisJCSAgICAgICAgICAgICAgdGhpcy5zeW5jSW1hZ2VSZWZPYmoubW9kdWxlTmFtZSx0aGlzLnN5bmNJbWFnZVJlZk9iai5wYXJlbnRQYXRoLAorCQkgICAgICAgICAgICAgIHRoaXMuc3luY0ltYWdlUmVmT2JqLnJvb20sdGhpcy5zeW5jSW1hZ2VSZWZPYmouZG9tYWluLAorCQkgICAgICAgICAgICAgIHRoaXMuZ2V0U1dGRG9jdW1lbnRTdGF0dXMoKSwKKyAgICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFpJbmRleCgpKTsJCQorICAgIDwvbWV0aG9kPgorCQorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvYmFzZS9iYXNlRHJhd0xldHRlci5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9iYXNlL2Jhc2VEcmF3TGV0dGVyLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ODlkOTllCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvYmFzZS9iYXNlRHJhd0xldHRlci5sengKQEAgLTAsMCArMSwzMjIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisJCis8Y2xhc3MgbmFtZT0id2hpdGVCb2FyZFRleHRGaWVsZCIgZXh0ZW5kcz0idGV4dCIgPgorCTxoYW5kbGVyIG5hbWU9InByZXBhcmVGb3JEZWxldGUiIGFyZ3M9InRSZWYiPgorCQkvL05vdGhpbmcKKwk8L2hhbmRsZXI+CisJPGF0dHJpYnV0ZSBuYW1lPSJ0eXBlT2ZPYmplY3QiIHZhbHVlPSJ0ZXh0IiB0eXBlPSJzdHJpbmciIC8+CisJPG1ldGhvZCBuYW1lPSJzZXRUZXh0RW5jb2RlZCIgYXJncz0idFN0cmluZyI+CisJCTwhW0NEQVRBWworCQkKKwkJICAgIHdoaWxlICh0U3RyaW5nLmluZGV4T2YoIjwiKSA+IDApIHsKKwkJICAgIAl0U3RyaW5nID0gdFN0cmluZy5yZXBsYWNlKCI8IiwiJiM2MDsiKTsKKwkJICAgIH0KKyAgICAJCQorCQkgICAgd2hpbGUgKHRTdHJpbmcuaW5kZXhPZigiPiIpID4gMCkgeworICAgICAgICAgICAgICAgIHRTdHJpbmcgPSB0U3RyaW5nLnJlcGxhY2UoIj4iLCImIzYyOyIpOworCQkgICAgfQorICAgIAkJCisgICAgCQl0aGlzLnNldEF0dHJpYnV0ZSgidGV4dCIsdFN0cmluZyk7CisJCV1dPgorCTwvbWV0aG9kPgorPC9jbGFzcz4KKworPGNsYXNzIG5hbWU9ImJhc2VEcmF3TGV0dGVyIiBleHRlbmRzPSJiYXNlRHJhd09iamVjdCI+CisKKwk8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRsZXR0ZXJPYmoiIHZhbHVlPSJudWxsIiAvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0ibGV0dGVyT2JqZWN0SXNBY3RpdmUiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9ImVkaXR0ZXh0TGV0dGVyT2JqZWN0IiB2YWx1ZT0ibnVsbCIgLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9ImVkaXR0ZXh0TGV0dGVyIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisJCisJPG1ldGhvZCBuYW1lPSJsZXR0ZXJPYmplY3RGcmVlIiBhcmdzPSJvYmoiPgorCQl0aGlzLnNldEF0dHJpYnV0ZSgnbGV0dGVyT2JqZWN0SXNBY3RpdmUnLGZhbHNlKTsKKwkJaWYgKHRoaXMuZWRpdHRleHRMZXR0ZXIpeworCQkJdGhpcy5lZGl0dGV4dExldHRlciA9IGZhbHNlOworCQkJdGhpcy5zZXRNb2R1cygnaGFuZCcpOworCQl9CisJPC9tZXRob2Q+CisJPG1ldGhvZCBuYW1lPSJsZXR0ZXJPYmplY3RDbG9zZSIgYXJncz0ib2JqIj4KKwkJdGhpcy5zZXRBdHRyaWJ1dGUoJ2xldHRlck9iamVjdElzQWN0aXZlJyx0cnVlKTsKKwk8L21ldGhvZD4KKwkKKyAgICA8IS0tIFRoZSBDb2xvciBvZiB0aGUgbGV0dGVyIE9iamVjdCAgLS0+CisgIAk8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRsYXllcmxldHRlciIgdmFsdWU9IjB4MDAwMDAwIiBzZXR0ZXI9InRoaXMuc2V0TmV3TGF5ZXJMZXR0ZXIoY3VycmVudGxheWVybGV0dGVyKSIgLz4KKyAgICAKKyAgICA8IS0tIFRoZSBTaXplIG9mIHRoZSBMZXR0ZXIgT2JqZWN0IC0tPgorICAJPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50bGF5ZXJzaXplIiB2YWx1ZT0iMTIiIHR5cGU9Im51bWJlciIgc2V0dGVyPSJ0aGlzLnNldE5ld0xheWVyU2l6ZShjdXJyZW50bGF5ZXJzaXplKSIgLz4KKyAgCQorICAJPCEtLSAicGxhaW4iLCAiYm9sZCIgLCAiaXRhbGljIiBvciAiYm9sZGl0YWxpYyIuIC0tPgorICAJPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50bGF5ZXJzdHlsZSIgdmFsdWU9InBsYWluIiB0eXBlPSJzdHJpbmciIHNldHRlcj0idGhpcy5zZXROZXdMYXllclN0eWxlKGN1cnJlbnRsYXllcnN0eWxlKSIgLz4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InNldE5ld0xheWVyTGV0dGVyIiBhcmdzPSJjbCI+CisgICAgICAgIHRoaXMuY3VycmVudGxheWVybGV0dGVyPWNsOworICAgICAgICB0aGlzLnNlbmROZXdTdHlsZS5zZW5kRXZlbnQoKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InNldE5ld0xheWVyU2l6ZSIgYXJncz0iY3MiPgorICAgICAgICB0aGlzLmN1cnJlbnRsYXllcnNpemU9Y3M7CisgICAgICAgIHRoaXMuc2VuZE5ld1N0eWxlLnNlbmRFdmVudCgpOworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0ic2V0TmV3TGF5ZXJTdHlsZSIgYXJncz0iY3MiPgorICAgICAgICB0aGlzLmN1cnJlbnRsYXllcnN0eWxlPWNzOworICAgICAgICB0aGlzLnNlbmROZXdTdHlsZS5zZW5kRXZlbnQoKTsKKyAgICA8L21ldGhvZD4KKyAgCQorICAgIDwhLS0gU2VuZCBVcGRhdGUgRXZlbnRzIHRvIGN1cnJlbnQgTGV0dGVyIE9iamVjdCAtLT4KKyAgICA8aGFuZGxlciBuYW1lPSJzZW5kTmV3U3R5bGUiPgorICAgICAgICBpZiAodGhpcy5sZXR0ZXJPYmplY3RJc0FjdGl2ZSl7CisgICAgICAgICAgICB0aGlzLmN1cnJlbnRsZXR0ZXJPYmoubmV3U3R5bGVFdmVudC5zZW5kRXZlbnQoKQorICAgICAgICB9CisgICAgPC9oYW5kbGVyPgorICAgIAorICAJPGF0dHJpYnV0ZSBuYW1lPSJpdGFsaWMiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgc2V0dGVyPSJ0aGlzLnNldGl0YWxpYyhpdGFsaWMpIiAvPgorICAJPGF0dHJpYnV0ZSBuYW1lPSJib2xkIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIHNldHRlcj0idGhpcy5zZXRib2xkKGJvbGQpIiAvPgorICAJPG1ldGhvZCBuYW1lPSJzZXRpdGFsaWMiIGFyZ3M9ImIiPgorICAJCXRoaXMuaXRhbGljID0gYjsKKyAgCQl0aGlzLmRvYWx0ZXJTdHlsZSgpOworICAJPC9tZXRob2Q+CisgIAk8bWV0aG9kIG5hbWU9InNldGJvbGQiIGFyZ3M9ImIiPgorICAJCXRoaXMuYm9sZCA9IGI7CisgIAkJdGhpcy5kb2FsdGVyU3R5bGUoKTsKKyAgCTwvbWV0aG9kPgorICAJPG1ldGhvZCBuYW1lPSJkb2FsdGVyU3R5bGUiPgorICAJCTwhW0NEQVRBWworICAJCWlmICh0aGlzLmlzaW5pdGVkKXsKKwkgIAkJaWYgKHRoaXMuYm9sZCAmJiB0aGlzLml0YWxpYyl7CisJICAJCQl0aGlzLnNldEF0dHJpYnV0ZSgnY3VycmVudGxheWVyc3R5bGUnLCdib2xkaXRhbGljJyk7CisJICAJCX0gZWxzZSBpZighdGhpcy5ib2xkICYmIHRoaXMuaXRhbGljKXsKKwkgIAkJCXRoaXMuc2V0QXR0cmlidXRlKCdjdXJyZW50bGF5ZXJzdHlsZScsJ2l0YWxpYycpOworCSAgCQl9IGVsc2UgaWYodGhpcy5ib2xkICYmICF0aGlzLml0YWxpYyl7CisJICAJCQl0aGlzLnNldEF0dHJpYnV0ZSgnY3VycmVudGxheWVyc3R5bGUnLCdib2xkJyk7CisJICAJCX0gZWxzZSBpZighdGhpcy5ib2xkICYmICF0aGlzLml0YWxpYyl7CisJICAJCQl0aGlzLnNldEF0dHJpYnV0ZSgnY3VycmVudGxheWVyc3R5bGUnLCdwbGFpbicpOworCSAgCQl9CisJICAJCS8vRGVidWcud3JpdGUoImQ6ICIsdGhpcy5nZXRBdHRyaWJ1dGUoJ2N1cnJlbnRsYXllcnN0eWxlJykpOworICAJCX0KKyAgCQldXT4KKyAgCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0iZWRpdFRleHRCeVZhbHVlcyIgYXJncz0ib2JqLHR4dE5hbWUsdHh0LHgseSx3aWR0aCxoZWlnaHQiPgorCQk8IVtDREFUQVsKKwkJCWlmICghdGhpcy5sZXR0ZXJPYmplY3RJc0FjdGl2ZSl7CisJCQkgICAgLy9EZWJ1Zy53cml0ZSgiZWRpdFRleHRCeVZhbHVlcyIsaGVpZ2h0KTsgCisJCQkgICAgdGhpcy5lZGl0dGV4dExldHRlck9iamVjdCA9IG9iajsKKwkJCQl0aGlzLmN1cnJlbnRsZXR0ZXJPYmogPSBuZXcgbHouYmFzZURyYXdXb3Jkcyh0aGlzLHtyZWZPYmo6dGhpcyx4OngseTp5LAorCQkJCQlpbml0VGV4dE5hbWU6dHh0TmFtZSxpbml0dGV4dDp0eHQsd2lkdGg6d2lkdGgsaGVpZ2h0OmhlaWdodH0pOworCQkJCXRoaXMuZWRpdHRleHRMZXR0ZXIgPSB0cnVlOworCQkJfQkKKwkJXV0+CisJPC9tZXRob2Q+CisgIAkKKwkJPG1ldGhvZCBuYW1lPSJkcmF3VGV4dEZpZWxkIiBhcmdzPSJ0ZXh0Zm9yZmllbGQsd2lkdGgsaGVpZ2h0LHgseSIgPgorCisJCQkvL0RlYnVnLndyaXRlKCJkcmF3VGV4dEZpZWxkOiAiLHRleHRmb3JmaWVsZCx3aWR0aCx4LHkpOworCQkJdmFyIHRlbXBPID0gdGhpcy5uZXdUZXh0RmllbGQodGhpcywgJ2xldHRlcicgKyB0aGlzLmdldENvdW50ZXIoKSwKKwkJCQkJdGV4dGZvcmZpZWxkLCB3aWR0aCwgaGVpZ2h0LCB4LCB5LCB0aGlzLmN1cnJlbnRsYXllcnNpemUsCisJCQkJCXRoaXMuY3VycmVudGxheWVybGV0dGVyLCB0aGlzLmN1cnJlbnRsYXllcnN0eWxlKTsKKwkJCXRoaXMubGF5ZXJzLnB1c2godGVtcE8pOworCQkJdGhpcy5kcmF3VGV4dEZpZWxkcmVnaXN0ZXIodGV4dGZvcmZpZWxkLCB3aWR0aCwgeCwgeSwKKwkJCQkJdGhpcy5jdXJyZW50bGF5ZXJzaXplLCB0aGlzLmN1cnJlbnRsYXllcmxldHRlciwKKwkJCQkJdGhpcy5jdXJyZW50bGF5ZXJzdHlsZSwgdGVtcE8uaGVpZ2h0LCB0aGlzCisJCQkJCQkJLmdldFNXRkRvY3VtZW50U3RhdHVzKCksIHRoaXMuZ2V0WkluZGV4KCkpOworCQk8L21ldGhvZD4KKwkKKwk8IS0tIGVkaXRNb2R1cyAtLT4KKwk8bWV0aG9kIG5hbWU9InNldFRleHRGaWVsZEJ5TmFtZSIgYXJncz0idHh0TmFtZSx0ZXh0Zm9yZmllbGQsd2lkdGgseCx5LGhlaWdodCIgPgorCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZHJhd1RleHRGaWVsZEJ5TmFtZSAiLHR4dE5hbWUsdGV4dGZvcmZpZWxkLHdpZHRoLHgseSk7CisJCS8vdGhpcy5jaGVja0ZvckNoYW5nZXModHh0TmFtZSx0ZXh0Zm9yZmllbGQsd2lkdGgseCx5LGhlaWdodCk7CisJCXRoaXMuZWRpdHRleHRMZXR0ZXJPYmplY3Quc2V0QXR0cmlidXRlKCd0ZXh0Jyx0ZXh0Zm9yZmllbGQpOworCQl0aGlzLmVkaXR0ZXh0TGV0dGVyT2JqZWN0LnNldFRleHRFbmNvZGVkKHRleHRmb3JmaWVsZCk7CisJCXRoaXMuZWRpdHRleHRMZXR0ZXJPYmplY3Quc2V0QXR0cmlidXRlKCd3aWR0aCcsd2lkdGgpOworCQl0aGlzLmVkaXR0ZXh0TGV0dGVyT2JqZWN0LnNldEF0dHJpYnV0ZSgnaGVpZ2h0JyxoZWlnaHQpOworCQl0aGlzLmVkaXR0ZXh0TGV0dGVyT2JqZWN0LnNldEF0dHJpYnV0ZSgndmlzaWJsZScsdHJ1ZSk7CisJCXRoaXMuZWRpdHRleHRMZXR0ZXJPYmplY3Quc2V0QXR0cmlidXRlKCdmb250c2l6ZScsdGhpcy5jdXJyZW50bGF5ZXJzaXplKTsKKwkJdGhpcy5lZGl0dGV4dExldHRlck9iamVjdC5zZXRBdHRyaWJ1dGUoJ2ZnY29sb3InLHRoaXMuY3VycmVudGxheWVybGV0dGVyKTsKKwkJdGhpcy5lZGl0dGV4dExldHRlck9iamVjdC5zZXRBdHRyaWJ1dGUoJ2ZvbnRzdHlsZScsdGhpcy5jdXJyZW50bGF5ZXJzdHlsZSk7CisJCXRoaXMudXBkYXRlT2JqZWN0Qm91bmRzKCk7CisJCXRoaXMudXBkYXRlQnlFZGl0TGV0dGVyT2JqZWN0KCk7CisJCS8vdGhpcy5zZXRNb2R1cygnaGFuZCcpOworCTwvbWV0aG9kPgkKKwkKKwk8bWV0aG9kIG5hbWU9InN0YXJ0TGV0dGVyIiBhcmdzPSJvaWRfbmFtZSI+CisJCWlmIChvaWRfbmFtZSA9PSBudWxsKSB7CisJCQlvaWRfbmFtZSA9ICdsZXR0ZXJUZW1wJyt0aGlzLmdldENvdW50ZXIoKTsKKwkJfQkJCisgICAgCXRoaXMuY3VycmVudGxheWVyID0gbmV3IGx6LmRyYXdWaWV3TmV3KHRoaXMse25hbWU6b2lkX25hbWUsd2lkdGg6dGhpcy53aWR0aCsyLGhlaWdodDp0aGlzLmhlaWdodCsyfSk7CisJPC9tZXRob2Q+CisJCisJPG1ldGhvZCBuYW1lPSJkcmF3bGV0dGVyQm91bmRpbmdCb3giIGFyZ3M9IngxLHkxLHgyLHkyIj4KKyAgIAkJPCFbQ0RBVEFbCisgICAgCQkKKyAgICAJCWN1cnJlbnRsYXllci5saW5lV2lkdGggPSAxOworICAgIAkJY3VycmVudGxheWVyLmJlZ2luUGF0aCgpOworICAgIAkJY3VycmVudGxheWVyLm1vdmVUbyh4MSx5MSk7CisgICAgCQljdXJyZW50bGF5ZXIubGluZVRvKHgxLHkyKTsKKyAgICAJCWN1cnJlbnRsYXllci5saW5lVG8oeDIseTIpOworICAgIAkJY3VycmVudGxheWVyLmxpbmVUbyh4Mix5MSk7CisgICAgCQljdXJyZW50bGF5ZXIubGluZVRvICh4MSx5MSk7CisgICAgCQljdXJyZW50bGF5ZXIuY2xvc2VQYXRoKCk7CisgICAgCQkKKyAgICAJCWN1cnJlbnRsYXllci5zdHJva2VTdHlsZSA9IDB4MDAwMDAwOworICAgIAkJY3VycmVudGxheWVyLnN0cm9rZSgpOworICAgIAkJCisgICAgCV1dPiAgIAorICAJPC9tZXRob2Q+ICAgIAorICAJCisJPG1ldGhvZCBuYW1lPSJlbmRMZXR0ZXIiPgorCQk8IVtDREFUQVsKKwkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJlbmRMZXR0ZXI6ICIsIHRoaXMuY3VycmVudGxheWVyKTsKKwkJCXRoaXMuY3VycmVudGxheWVyLmRlc3Ryb3koKTsKKwkJCXZhciB4UHJvcCA9IDA7CisJCQl2YXIgeVByb3AgPSAwOworCQkJaWYgKHRoaXMuc3RhcnR4IDw9IHRoaXMuZW5keCkgeworCQkJCXZhciBzdHggPSB0aGlzLnN0YXJ0eDsKKwkJCX0gZWxzZSB7CisJCQkJdmFyIHN0eCA9IHRoaXMuZW5keDsKKwkJCX0KKwkJCWlmICh0aGlzLnN0YXJ0eSA8PSB0aGlzLmVuZHkpIHsKKwkJCQl2YXIgc3R5ID0gdGhpcy5zdGFydHk7CisJCQl9IGVsc2UgeworCQkJCXZhciBzdHkgPSB0aGlzLmVuZHk7CisJCQl9CisJCQl2YXIgd2lkdGggPSBNYXRoLmFicyh0aGlzLnN0YXJ0eCAtIHRoaXMuZW5keCk7CisJCQl2YXIgaGVpZ2h0ID0gTWF0aC5hYnModGhpcy5zdGFydHkgLSB0aGlzLmVuZHkpOworCQkJaWYgKHdpZHRoIDwgMjAgJiYgaGVpZ2h0IDwgMjApIHsKKwkJCQl3aWR0aCA9IDE2MDsKKwkJCQloZWlnaHQgPSAzMDsKKwkJCX0KKworCQkJdGhpcy5jdXJyZW50bGV0dGVyT2JqID0gbmV3IGx6LmJhc2VEcmF3V29yZHModGhpcywgeworCQkJCQkJcmVmT2JqIDogdGhpcywKKwkJCQkJCXggOiB4UHJvcCArIHN0eCwKKwkJCQkJCXkgOiB5UHJvcCArIHN0eSwKKwkJCQkJCXdpZHRoIDogd2lkdGgsCisJCQkJCQloZWlnaHQgOiBoZWlnaHQKKwkJCQkJfSk7CisKKwkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJjdXJyZW50bGV0dGVyT2JqOiAiLCB0aGlzLmN1cnJlbnRsZXR0ZXJPYmoueCwgdGhpcy5jdXJyZW50bGV0dGVyT2JqLnkpOworCQldXT4KKwk8L21ldGhvZD4KKwkKKwkKKwk8bWV0aG9kIG5hbWU9InVwZGF0ZUJ5RWRpdExldHRlck9iamVjdCIgPgorCQk8IVtDREFUQVsKKwkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIlVwZGF0ZUJ5T2JqZWN0IDogIix0aGlzLmVkaXR0ZXh0TGV0dGVyT2JqZWN0LHRoaXMuZWRpdHRleHRMZXR0ZXJPYmplY3QubmFtZSk7CisJCXZhciBvYmpOYW1lID0gdGhpcy5lZGl0dGV4dExldHRlck9iamVjdC5uYW1lOworCisJCWZvciAodmFyIGVnPTA7ZWc8dGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdC5sZW5ndGg7ZWcrKyl7CisJCQlpZiAodGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ11bdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ10ubGVuZ3RoLTFdPT1vYmpOYW1lKSB7CisJCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIkZvdW5kIE9iamVjdDogIix0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXSk7CisJCQkgICAgdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ11bMV0gPSB0aGlzLmVkaXR0ZXh0TGV0dGVyT2JqZWN0LnRleHQ7CisJCQkgICAgdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ11bMl0gPSB0aGlzLmVkaXR0ZXh0TGV0dGVyT2JqZWN0LmZnY29sb3I7CisJCQkgICAgdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ11bM10gPSB0aGlzLmVkaXR0ZXh0TGV0dGVyT2JqZWN0LmZvbnRzaXplOworCQkJICAgIHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddWzRdID0gdGhpcy5lZGl0dGV4dExldHRlck9iamVjdC5mb250c3R5bGU7CQkJCisJCQkJdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ11bdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ10ubGVuZ3RoLTVdID0gdGhpcy5lZGl0dGV4dExldHRlck9iamVjdC54CisJCQkJdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ11bdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ10ubGVuZ3RoLTRdID0gdGhpcy5lZGl0dGV4dExldHRlck9iamVjdC55OworCQkJCXRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddW3RoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddLmxlbmd0aC0zXSA9IHRoaXMuZWRpdHRleHRMZXR0ZXJPYmplY3Qud2lkdGg7CisJCQkJdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ11bdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ10ubGVuZ3RoLTJdID0gdGhpcy5lZGl0dGV4dExldHRlck9iamVjdC5oZWlnaHQ7CisJCQkJdmFyIG5ld0EgPSB0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXTsKKwkJCQlpZiAobmV3QVswXT09J3BhaW50JykgbmV3QVsxXSA9IG5ldyBBcnJheSgpOwkJCQkKKwkJCQl0aGlzLm9uc2hhcmVkTWVzc2FnZSgnZWRpdFRleHQnLG5ld0EpOwkKKwkJCSAgICBicmVhazsKKwkJCX0KKwkJfQkKKwkJCQorCQldXT4KKwk8L21ldGhvZD4JCisJCisJPG1ldGhvZCBuYW1lPSJlZGl0VGV4dEJ5SGlzdG9yeSIgYXJncz0iYWN0aW9uT2JqZWN0LG9iaiI+CisJCXZhciBlZGl0T2JqID0gdGhpcy5nZXRPYmplY3RCeU5hbWUoYWN0aW9uT2JqZWN0W2FjdGlvbk9iamVjdC5sZW5ndGgtMV0pOworCQkvL0RlYnVnLndyaXRlKCJlZGl0VGV4dEJ5SGlzdG9yeTogIixlZGl0T2JqLGFjdGlvbk9iamVjdCxhY3Rpb25PYmplY3QubGVuZ3RoKTsKKwkJZWRpdE9iai5zZXRBdHRyaWJ1dGUoJ3RleHQnLGFjdGlvbk9iamVjdFsxXSk7CisJCWVkaXRPYmouc2V0VGV4dEVuY29kZWQoYWN0aW9uT2JqZWN0WzFdKTsKKwkJZWRpdE9iai5zZXRBdHRyaWJ1dGUoJ3dpZHRoJyxhY3Rpb25PYmplY3RbYWN0aW9uT2JqZWN0Lmxlbmd0aC0zXSk7CisJCWVkaXRPYmouc2V0QXR0cmlidXRlKCdoZWlnaHQnLGFjdGlvbk9iamVjdFthY3Rpb25PYmplY3QubGVuZ3RoLTJdKTsKKwkJZWRpdE9iai5zZXRBdHRyaWJ1dGUoJ2ZvbnRzaXplJyxhY3Rpb25PYmplY3RbM10pOworCQllZGl0T2JqLnNldEF0dHJpYnV0ZSgnZmdjb2xvcicsYWN0aW9uT2JqZWN0WzJdKTsKKwkJZWRpdE9iai5zZXRBdHRyaWJ1dGUoJ2ZvbnRzdHlsZScsYWN0aW9uT2JqZWN0WzRdKTsKKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9ImNoZWNrRm9yQ2hhbmdlcyIgYXJncz0idHh0TmFtZSx0ZXh0Zm9yZmllbGQsd2lkdGgseCx5LGhlaWdodCI+CisJCTwhW0NEQVRBWworCQkJLy9EZWJ1Zy53cml0ZSgiY2hlY2tGb3JDaGFuZ2VzOiAxICIsdHh0TmFtZSx0ZXh0Zm9yZmllbGQsd2lkdGgseCx5LGhlaWdodCk7CisJCQkvL0RlYnVnLndyaXRlKCJjaGVja0ZvckNoYW5nZXM6IDIgIix0aGlzLmVkaXR0ZXh0TGV0dGVyT2JqZWN0Lm5hbWUsdGhpcy5lZGl0dGV4dExldHRlck9iamVjdC50ZXh0LHRoaXMuZWRpdHRleHRMZXR0ZXJPYmplY3Qud2lkdGgsdGhpcy5lZGl0dGV4dExldHRlck9iamVjdC54LHRoaXMuZWRpdHRleHRMZXR0ZXJPYmplY3QueSx0aGlzLmVkaXR0ZXh0TGV0dGVyT2JqZWN0LmhlaWdodCk7CisJCQkvL3RoZXJlIGlzIGFsd2F5cyBhIGNoYW5nZQorCQkJCisJCV1dPgorCTwvbWV0aG9kPgkKKwkKKwk8bWV0aG9kIG5hbWU9ImRyYXdhY3Rpb25IaXN0b3J5IiBhcmdzPSJhY3Rpb25PYmplY3Qsb2JqIj4KKwkJdGhpcy5uZXdUZXh0RmllbGQob2JqLGFjdGlvbk9iamVjdFthY3Rpb25PYmplY3QubGVuZ3RoLTFdLGFjdGlvbk9iamVjdFsxXSwKKwkJICAgICAgICAgICAgICBhY3Rpb25PYmplY3RbYWN0aW9uT2JqZWN0Lmxlbmd0aC0zXSxhY3Rpb25PYmplY3RbYWN0aW9uT2JqZWN0Lmxlbmd0aC0yXSwKKwkJICAgICAgICAgICAgICBhY3Rpb25PYmplY3RbYWN0aW9uT2JqZWN0Lmxlbmd0aC01XSxhY3Rpb25PYmplY3RbYWN0aW9uT2JqZWN0Lmxlbmd0aC00XSwKKwkJICAgICAgICAgICAgICBhY3Rpb25PYmplY3RbM10sYWN0aW9uT2JqZWN0WzJdLGFjdGlvbk9iamVjdFs0XSk7CisJCSAgICAgICAgICAgICAgCisJCXRoaXMuZG9TV0ZEb2N1bWVudFN0YXR1cyh0aGlzLmN1cnJlbnRsYXllcixhY3Rpb25PYmplY3RbYWN0aW9uT2JqZWN0Lmxlbmd0aC03XSk7CisJPC9tZXRob2Q+CisJCisJCTxtZXRob2QgbmFtZT0ibmV3VGV4dEZpZWxkIiBhcmdzPSJvYmosbmFtaW5nLHRleHRmb3JmaWVsZCx3aWR0aCxoZWlnaHQseCx5LGZvbnRzaXplLGZnY29sb3IsZm9udHN0eWxlIj4KKwkJCXRoaXMuY3VycmVudGxheWVyID0gbmV3IGx6LndoaXRlQm9hcmRUZXh0RmllbGQob2JqLCB7CisJCQkJCQluYW1lIDogbmFtaW5nLAorCQkJCQkJeCA6IHgsCisJCQkJCQl5IDogeSwKKwkJCQkJCWhlaWdodCA6IGhlaWdodCwKKwkJCQkJCW11bHRpbGluZSA6IHRydWUsCisJCQkJCQl3aWR0aCA6IHdpZHRoLAorCQkJCQkJdGV4dCA6IHRleHRmb3JmaWVsZCwKKwkJCQkJCWZvbnRzaXplIDogZm9udHNpemUsCisJCQkJCQlmZ2NvbG9yIDogZmdjb2xvciwKKwkJCQkJCWZvbnRzdHlsZSA6IGZvbnRzdHlsZQorCQkJCQl9KTsKKwkJCXRoaXMuY3VycmVudGxheWVyLnNldFRleHRFbmNvZGVkKHRleHRmb3JmaWVsZCk7CisJCQkvL0FkZCBMYXllciB0byBnbG9iYWwgTGF5ZXIgIAkKKwkJCXJldHVybiB0aGlzLmN1cnJlbnRsYXllcjsKKwkJPC9tZXRob2Q+CisJCisJPG1ldGhvZCBuYW1lPSJkcmF3VGV4dEZpZWxkcmVnaXN0ZXIiIGFyZ3M9InRleHRmb3JmaWVsZCx3aWR0aCx4LHksZm9udHNpemUsZmdjb2xvcixmb250c3R5bGUsaGVpZ2h0LHN3Zk9iaix6SW5kZXgiPgorCQl2YXIgYWN0aW9uT2JqZWN0ID0gbmV3IEFycmF5KCk7CisJICAgIGFjdGlvbk9iamVjdFswXSA9ICJsZXR0ZXIiOworCSAgICBhY3Rpb25PYmplY3RbMV0gPSB0ZXh0Zm9yZmllbGQ7CisJICAgIGFjdGlvbk9iamVjdFsyXSA9IGZnY29sb3I7CisJICAgIGFjdGlvbk9iamVjdFszXSA9IGZvbnRzaXplOworCSAgICBhY3Rpb25PYmplY3RbNF0gPSBmb250c3R5bGU7CisJICAgIGFjdGlvbk9iamVjdFs1XSA9IHpJbmRleDsvLy04CisJICAgIGFjdGlvbk9iamVjdFs2XSA9IHN3Zk9iajsvLy03CisJCWFjdGlvbk9iamVjdFs3XSA9IHRoaXMuY291bnRlcjsvLy02CisJICAgIGFjdGlvbk9iamVjdFs4XSA9IHg7Ly8tNQorCSAgICBhY3Rpb25PYmplY3RbOV0gPSB5Oy8vLTQKKwkgICAgYWN0aW9uT2JqZWN0WzEwXSA9IHdpZHRoOy8vLTMKKwkgICAgYWN0aW9uT2JqZWN0WzExXSA9IGhlaWdodDsvLy0yCisJICAgIGFjdGlvbk9iamVjdFsxMl0gPSB0aGlzLmN1cnJlbnRsYXllci5uYW1lOy8vLTEJICAgIAkgICAgCisJICAgIHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3QucHVzaChhY3Rpb25PYmplY3QpOwkKKwkgICAgdGhpcy5jaGVja1N0ZXBMYXllcnMoKTsKKwkgICAgdGhpcy5vbnNoYXJlZE1lc3NhZ2UoJ2RyYXcnLGFjdGlvbk9iamVjdCk7CQorCTwvbWV0aG9kPgorCQorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvYmFzZS9iYXNlRHJhd09iamVjdC5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9iYXNlL2Jhc2VEcmF3T2JqZWN0Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTYwNjRlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvYmFzZS9iYXNlRHJhd09iamVjdC5sengKQEAgLTAsMCArMSw4NjAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzxjbGFzcyBuYW1lPSJiYXNlRHJhd09iamVjdCIgZXh0ZW5kcz0iYmFzZURyYXdQb2ludGVyIj4KKyAgICAKKyAgICA8IS0tIGl0IHVzZXMgc29tZSBvZiB0aGUgYXR0cmlidXRlJ3MgZGVmaW5lZCBpbiBiYXNlRHJhd0ltYWdlIC0tPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibmV3U2xpZGVOdW1iZXIiIHZhbHVlPSIxIiB0eXBlPSJudW1iZXIiIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJmdWxsRml0IiB2YWx1ZT0idHJ1ZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9Im1vZGVyblRvb2xiYXIiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKworICAgIDwhLS0gCisgICAgCUludm9rZWQgYnkgdGhlIExpYnJhcnkgZGlyZWN0bHkKKyAgICAJTG9hZHMgYSBTV0ZQcmVzZW5hdGlvbiB0byB0aGUgd2hpdGVCb2FyZAorICAgICAtLT4KKyAgICA8bWV0aG9kIG5hbWU9ImxvYWRTV0ZQcmVzZW50YXRpb25TeW5jZWQiIGFyZ3M9InVybCxmaWxlTmFtZSxtb2R1bGVOYW1lLHBhcmVudFBhdGgscm9vbSxkb21haW4sc2xpZGVOdW1iZXIsc3RhbmRhcmRGaWxlTmFtZSI+CisgIAkJdmFyIG5vdyA9IG5ldyBEYXRlKCk7CisgIAkJLy9UaGlzIGludm9rZXMgYSBNZXRob2Qgd2hpY2ggaXMgaW4gdGhlIHJlbW90ZVdoaXRlYm9hcmQubHp4CisgIAkJdGhpcy5zdGFydE5ld09iamVjdFN5bmNQcm9jZXNzLmlzU3RhcnRpbmcgPSB0cnVlOworICAJCXRoaXMuc3RhcnROZXdPYmplY3RTeW5jUHJvY2Vzcy51bmlxdWVPYmplY3RTeW5jTmFtZSA9IGZpbGVOYW1lICsgbm93LmdldFRpbWUoKTsKKyAgCQl0aGlzLnN0YXJ0TmV3T2JqZWN0U3luY1Byb2Nlc3MuZG9DYWxsKCk7CisgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImxvYWRTV0ZQcmVzZW50YXRpb25TeW5jZWQiLHVybCxmaWxlTmFtZSxtb2R1bGVOYW1lLHBhcmVudFBhdGgscm9vbSxkb21haW4sc2xpZGVOdW1iZXIsc3RhbmRhcmRGaWxlTmFtZSk7CisgICAgICAgIHRoaXMuYWRkUHJlc2VudGF0aW9uVG9MYXllcih0aGlzLHVybCwnc3dmcHJlc2VudGF0aW9ub2JqZWN0Jyt0aGlzLmdldENvdW50ZXIoKSwKKyAgICAgICAgCTAsMCwwLDAsCisgICAgICAgIAl0cnVlLAorICAgICAgICAJdXJsLGZpbGVOYW1lLG1vZHVsZU5hbWUscGFyZW50UGF0aCxyb29tLGRvbWFpbixzbGlkZU51bWJlciwKKyAgICAgICAgCTEwMCwwLDAsMCwwLAorICAgICAgICAJdGhpcy5zdGFydE5ld09iamVjdFN5bmNQcm9jZXNzLnVuaXF1ZU9iamVjdFN5bmNOYW1lLAorICAgICAgICAgICAgc3RhbmRhcmRGaWxlTmFtZSx0aGlzLmZ1bGxGaXQpOworICAgICAgICAgICAgCisgICAgICAgIAorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0ic2V0Q3VycmVudFNjYWxlQnlGdWxsRml0IiBhcmdzPSJzY2FsZUZhY3RvciI+CisgICAgCTwhW0NEQVRBWworICAgIAkKKyAgICAJCXZhciB0U2NhbGUgPSBNYXRoLnJvdW5kKHNjYWxlRmFjdG9yKjEwMCk7CisgICAgCQkKKyAgICAJCXRoaXMuZ2V0RGlzcGxheU9iamVjdCgpLl94c2NhbGUgPSB0U2NhbGU7CisgICAgCQl0aGlzLmdldERpc3BsYXlPYmplY3QoKS5feXNjYWxlID0gdFNjYWxlOworICAgIAkJCisgICAgCQl0aGlzLnNldEF0dHJpYnV0ZSgieCIsMCk7CisgICAgCQl0aGlzLnNldEF0dHJpYnV0ZSgieSIsMCk7CisgICAgCQkKKyAgICAJCS8vQWxyZWFkeSBzZW5kIGJ5IHgseSBjaGFuZ2UKKyAgICAJCS8vdGhpcy5vbnVwZGF0ZVNjYWxlLnNlbmRFdmVudChudWxsKTsKKyAgICAJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzZXRDdXJyZW50U2NhbGVCeUZ1bGxGaXQgLTEtICIsdFNjYWxlKTsKKyAgICAJCQorICAgIAkJcGFyZW50LnBhcmVudC56b29tYm94LnNldEN1cnJlbnRTY2FsZUJ5RnVsbEZpdCh0U2NhbGUpOworICAgIAkKKyAgICAJXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJkb1VwZGF0ZUZ1bGxGaXQiIGFyZ3M9ImZ1bGxGaXQsem9vbSI+CisgICAgCTwhW0NEQVRBWworICAgIAkKKyAgICAJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJkb1VwZGF0ZUZ1bGxGaXQgIixmdWxsRml0LHpvb20pOworICAgIAkKKyAgICAJCXZhciBhY3Rpb25PYmplY3QgPSBuZXcgQXJyYXkoKTsKKyAgICAJCWFjdGlvbk9iamVjdC5wdXNoKCJ3aGl0ZWJvYXJkT2JqIik7CisgICAgCQlhY3Rpb25PYmplY3QucHVzaChmdWxsRml0KTsKKyAgICAJCQorICAgIAkJdGhpcy5kb0Z1bGxGaXQoZnVsbEZpdCk7CisgICAgCQkKKyAgICAJCWFjdGlvbk9iamVjdC5wdXNoKHRoaXMuZ2V0RGlzcGxheU9iamVjdCgpLl94c2NhbGUpOworICAgIAkJCisgICAgCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZG9VcGRhdGVGdWxsRml0ICIsZnVsbEZpdCx0aGlzLmdldERpc3BsYXlPYmplY3QoKS5feHNjYWxlKTsKKyAgICAJCQorICAgIAkJdGhpcy5vbnNoYXJlZE1lc3NhZ2UoJ3doaXRlYm9hcmRPYmonLGFjdGlvbk9iamVjdCk7CQorICAgIAkKKyAgICAJXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJkb1VwZGF0ZVpvb20iIGFyZ3M9ImZ1bGxGaXQsem9vbSI+CisgICAgCTwhW0NEQVRBWworICAgIAkKKyAgICAJCXZhciBhY3Rpb25PYmplY3QgPSBuZXcgQXJyYXkoKTsKKyAgICAJCWFjdGlvbk9iamVjdC5wdXNoKCJ3aGl0ZWJvYXJkT2JqIik7CisgICAgCQlhY3Rpb25PYmplY3QucHVzaChmdWxsRml0KTsKKyAgICAJCWFjdGlvbk9iamVjdC5wdXNoKHpvb20pOworICAgIAkJCisgICAgCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZG9VcGRhdGVab29tICIsdGhpcy5mdWxsRml0LHpvb20pOworICAgIAkJCisgICAgCQkKKyAgICAJCXRoaXMuZ2V0RGlzcGxheU9iamVjdCgpLl94c2NhbGUgPSB6b29tOworICAgIAkJdGhpcy5nZXREaXNwbGF5T2JqZWN0KCkuX3lzY2FsZSA9IHpvb207CisgICAgCQkKKyAgICAJCXRoaXMub251cGRhdGVTY2FsZS5zZW5kRXZlbnQobnVsbCk7CisgICAgCQl0aGlzLm9uc2hhcmVkTWVzc2FnZSgnd2hpdGVib2FyZE9iaicsYWN0aW9uT2JqZWN0KTsJCisgICAgCQorICAgIAldXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImRvVXBkYXRlRnVsbEZpdEFuZFpvb21SZW1vdGUiIGFyZ3M9ImFjdGlvbk9iamVjdCxyZWZPYmoiPgorICAgIAk8IVtDREFUQVsKKyAgICAJCisgICAgCQlwYXJlbnQucGFyZW50Lnpvb21ib3guc2V0V2hpdGVib2FyZFZhbHVlcyhhY3Rpb25PYmplY3RbMV0sYWN0aW9uT2JqZWN0WzJdKTsKKyAgICAJCisgICAgCQl0aGlzLmRvRnVsbEZpdChhY3Rpb25PYmplY3RbMV0pOworICAgIAkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImRvVXBkYXRlRnVsbEZpdEFuZFpvb21SZW1vdGUgIixmdWxsRml0LGFjdGlvbk9iamVjdFsyXSk7CisgICAgCQkKKyAgICAJCWlmICghYWN0aW9uT2JqZWN0WzFdKSB7CisJICAgIAkJdGhpcy5nZXREaXNwbGF5T2JqZWN0KCkuX3hzY2FsZSA9IGFjdGlvbk9iamVjdFsyXTsKKwkgICAgCQl0aGlzLmdldERpc3BsYXlPYmplY3QoKS5feXNjYWxlID0gYWN0aW9uT2JqZWN0WzJdOworCSAgICAJCXRoaXMub251cGRhdGVTY2FsZS5zZW5kRXZlbnQobnVsbCk7CisgICAgCQl9CisgICAgCQorICAgIAldXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImRvRnVsbEZpdCIgYXJncz0idiI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIkRvIEZ1bGwgRml0ID8iKTsKKyAgICAgICAgCWlmICgkZGVidWcpIERlYnVnLndyaXRlKHRoaXMuT2JqZWN0QnlOYW1lKTsKKyAgICAgICAgCisgICAgICAgIAl0aGlzLmZ1bGxGaXQgPSB2OworICAgICAgICAJCisgICAgICAgICAgICBpZiAodGhpcy5PYmplY3RCeU5hbWUgJiYgdGhpcy5PYmplY3RCeU5hbWUudHlwZU9mT2JqZWN0PT0ic3dmIikgeyAgICAKKyAgICAgICAgICAgICAgICBpZiAodikgeworICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiRG8gRnVsbCBGaXQgISIpOworICAgICAgICAgICAgICAgICAgICB0aGlzLk9iamVjdEJ5TmFtZS5fc3dmVmlldy5pbml0aWFsTG9hZEZ1bGxGaXQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJjaGVja1NXRlByZXNlbnRhdGlvbiIgYXJncz0idXJsLGZpbGVOYW1lLG1vZHVsZU5hbWUscGFyZW50UGF0aCxyb29tLGRvbWFpbixzbGlkZU51bWJlciI+CisgICAgICAgIC8vdGhpcy5hZGRQcmVzZW50YXRpb25Ub0xheWVyKHRoaXMsdXJsLCdzd2ZwcmVzZW50YXRpb25vYmplY3QnK3RoaXMuZ2V0Q291bnRlcigpLDAsMCwwLDAsdHJ1ZSx1cmwsZmlsZU5hbWUsbW9kdWxlTmFtZSxwYXJlbnRQYXRoLHJvb20sZG9tYWluLHNsaWRlTnVtYmVyKTsKKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTx0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0Lmxlbmd0aDtpKyspeworICAgICAgICAgICAgICAgIGlmIChmaWxlTmFtZT09dGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtpXVszXSl7CisgICAgICAgICAgICAgICAgICAgIHZhciB3aGl0ZUJvYXJkTmFtZSA9IHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbaV1bdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtpXS5sZW5ndGgtMV07CisgICAgICAgICAgICAgICAgICAgIC8vRGVidWcud3JpdGUoIkZvdW5kIEZpbGU6ICIsd2hpdGVCb2FyZE5hbWUsdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtpXSk7CisgICAgICAgICAgICAgICAgICAgIC8vdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtpXS5icmluZ1RvRnJvbnQoKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5kb1Nob3dPYmplY3RCb3VuZHMod2hpdGVCb2FyZE5hbWUpOworICAgICAgICAgICAgICAgICAgICB0aGlzLm5ld1NsaWRlTnVtYmVyID0gc2xpZGVOdW1iZXI7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuZG9Eb2N1bWVudEFjdGlvbignc2V0U2xpZGVOdW1iZXInKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSAKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisJPCEtLQorCQlhbHRlck1vZHVzID0+IHRoaXMgaXMgYWRkZWQgYnkgdGhlIG1vZCBub3QgcmVtb3RlbHkKKwkJCisJCWFkZHMgdGhlIFNXRi1PYmplY3QgdG8gdGhlIExheWVyCisJIC0tPgorICAJPG1ldGhvZCBuYW1lPSJhZGRQcmVzZW50YXRpb25Ub0xheWVyIiBhcmdzPSJvYmosdXJsTmFtZSxuYW1laW5nLHBvc3gscG9zeSx3aWR0aCxoZWlnaHQsYWx0ZXJNb2R1cyxiYXNldXJsLGZpbGVOYW1lLG1vZHVsZU5hbWUscGFyZW50UGF0aCxyb29tLGRvbWFpbixzbGlkZU51bWJlcixjdXJyZW50em9vbSxpbm5lcndpZHRoLGlubmVyaGVpZ2h0LGlubmVyeCxpbm5lcnksdW5pcXVlT2JqZWN0U3luY05hbWUsc3RhbmRhcmRGaWxlTmFtZSxmdWxsRml0Ij4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiYWRkUHJlc2VudGF0aW9uVG9MYXllciIsc3RhbmRhcmRGaWxlTmFtZSk7CisgICAgICAgICAgICAvL29ubHkgc2hvdyBpZiBpdCBpcyBub3QgcGFydCBvZiB3bWwtZmlsZS1vYmplY3QKKyAgICAgICAgICAgIC8vaWYgKCF0aGlzLmlzV21sTG9hZGVySW1hZ2UpIHsKKyAgICAgICAgICAgIC8vICAgIHRoaXMubG9hZGltYWdlRGF0YVdpblJlZiA9IG5ldyBsei5sb2FkV2hpdGVib2FyZFdpbmRvdyhjYW52YXMubWFpbl9jb250ZW50Ll9jb250ZW50LmlubmVyLHtyZWZPYmo6dGhpc30pOworICAgICAgICAgICAgLy8gICAgdGhpcy5sb2FkaW1hZ2VEYXRhV2luUmVmLnNldE1lc3NhZ2UoY2FudmFzLmdldExhYmVsTmFtZSh0aGlzLmltYWdlTG9hZE1lc3NhZ2VJZCkpOworICAgICAgICAgICAgLy99CisgICAgICAgIAkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJhZGRQcmVzZW50YXRpb25Ub0xheWVyIHVuaXF1ZU9iamVjdFN5bmNOYW1lOiIsdW5pcXVlT2JqZWN0U3luY05hbWUsaW5uZXJ3aWR0aCxpbm5lcmhlaWdodCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciBkb3dubG9hZHVybCA9IGNhbnZhcy5nZXRVcmwoKSArICdEb3dubG9hZEhhbmRsZXI/JyArCisgICAgICAgICAgICAgICAgICAgICdmaWxlTmFtZT0nICsgZW5jb2RlVVJJQ29tcG9uZW50KGZpbGVOYW1lKSArCisgICAgICAgICAgICAgICAgICAgICcmbW9kdWxlTmFtZT0nICsgbW9kdWxlTmFtZSArIAorICAgICAgICAgICAgICAgICAgICAnJnBhcmVudFBhdGg9JyArIGVuY29kZVVSSUNvbXBvbmVudChwYXJlbnRQYXRoICsgJy8nKSArCisgICAgICAgICAgICAgICAgICAgICcmcm9vbV9pZD0nK3Jvb20gKyAKKyAgICAgICAgICAgICAgICAgICAgJyZzaWQ9JytjYW52YXMuc2Vzc2lvbklkOworICAgICAgICAgICAgCisgICAgICAgICAgICAvL3ZhciB3aWR0aD0gdGhpcy53aWR0aDsKKyAgICAgICAgICAgIC8vdmFyIGhlaWdodCA9IHRoaXMuaGVpZ2h0LTIwMDsKKyAgICAgICAgICAgIC8vLy9EZWJ1Zy53cml0ZSgid2lkdGg6aGVpZ2h0OiAiLHdpZHRoLGhlaWdodCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuY3VycmVudGxheWVyID0gbmV3IGx6LnN3ZlJlc291cmNlVmlldyhvYmose3JlZk9iajp0aGlzLG5hbWU6bmFtZWluZywKKyAgICAgICAgICAgIAl4OnBvc3gseTpwb3N5LGFsdGVyTW9kdXM6YWx0ZXJNb2R1cywKKyAgICAgICAgICAgIAliYXNldXJsOmJhc2V1cmwsZmlsZU5hbWU6ZmlsZU5hbWUsbW9kdWxlTmFtZTptb2R1bGVOYW1lLHBhcmVudFBhdGg6cGFyZW50UGF0aCwKKyAgICAgICAgICAgIAlyb29tOnJvb20sZG9tYWluOmRvbWFpbixzbGlkZU51bWJlcjpzbGlkZU51bWJlciwKKyAgICAgICAgICAgIAljdXJyZW50em9vbTpjdXJyZW50em9vbSxmdWxsRml0OmZ1bGxGaXQsCisgICAgICAgICAgICAgICAgc3RhbmRhcmRGaWxlTmFtZTpzdGFuZGFyZEZpbGVOYW1lLAorICAgICAgICAgICAgCWlubmVyd2lkdGg6aW5uZXJ3aWR0aCxpbm5lcmhlaWdodDppbm5lcmhlaWdodCwKKyAgICAgICAgICAgIAlpbm5lcng6aW5uZXJ4LGlubmVyeTppbm5lcnksCisgICAgICAgICAgICAJdW5pcXVlT2JqZWN0U3luY05hbWU6dW5pcXVlT2JqZWN0U3luY05hbWV9KTsKKworICAgICAgICAgICAgLy90aGlzLnBhcmVudC5wYXJlbnQuaXNsb2FkaW5nSW1hZ2Uuc2VuZEV2ZW50KHRoaXMuY3VycmVudGxheWVyKTsKKyAgICAgICAgICAgIC8vLy9EZWJ1Zy53cml0ZSgiZG93bmxvYWR1cmwuICIsZG93bmxvYWR1cmwpOworICAgICAgICAgICAgdGhpcy5jdXJyZW50bGF5ZXIuX3N3ZlZpZXcuc2V0U291cmNlKGRvd25sb2FkdXJsKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5hZGRJdGVtVG9Eb2N1bWVudFRvb2xCYXIoKTsKKyAgICAgICAgICAgIHRoaXMuZG9VcGRhdGVEb2N1bWVudFRvb2xCYXIoKTsKKwkJXV0+CisgIAk8L21ldGhvZD4KKyAgCQorICAJPCEtLQorICAJCVRPRE86IGNoZWNrIFJlY29yZGluZworICAJCisgIAk8bWV0aG9kIG5hbWU9ImFkZFByZXNlbnRhdGlvblRvTGF5ZXJSZWNvcmRpbmciIGFyZ3M9Im9iaix1cmxOYW1lLG5hbWVpbmcscG9zeCxwb3N5LHdpZHRoLGhlaWdodCxhbHRlck1vZHVzLGJhc2V1cmwsZmlsZU5hbWUsbW9kdWxlTmFtZSxwYXJlbnRQYXRoLHJvb20sZG9tYWluLHNsaWRlTnVtYmVyLGN1cnJlbnR6b29tLGlubmVyd2lkdGgsaW5uZXJoZWlnaHQsaW5uZXJ4LGlubmVyeSI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgLy9EZWJ1Zy53cml0ZSgiYWRkUHJlc2VudGF0aW9uVG9MYXllciIsb2JqLG5hbWVpbmcscG9zeCxwb3N5LHdpZHRoLGhlaWdodCxhbHRlck1vZHVzLGJhc2V1cmwsZmlsZU5hbWUsbW9kdWxlTmFtZSxwYXJlbnRQYXRoLHJvb20sZG9tYWluLHNsaWRlTnVtYmVyKTsKKyAgICAgICAgICAgIC8vb25seSBzaG93IGlmIGl0IGlzIG5vdCBwYXJ0IG9mIHdtbC1maWxlLW9iamVjdAorICAgICAgICAgICAgaWYgKCF0aGlzLmlzV21sTG9hZGVySW1hZ2UpIHsKKyAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbWFnZURhdGFXaW5SZWYgPSBuZXcgbHoubG9hZFdoaXRlYm9hcmRXaW5kb3coY2FudmFzLm1haW5fY29udGVudC5fY29udGVudC5pbm5lcix7cmVmT2JqOnRoaXN9KTsKKyAgICAgICAgICAgICAgICB0aGlzLmxvYWRpbWFnZURhdGFXaW5SZWYuc2V0TWVzc2FnZShjYW52YXMuZ2V0TGFiZWxOYW1lKHRoaXMuaW1hZ2VMb2FkTWVzc2FnZUlkKSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB2YXIgZG93bmxvYWR1cmwgPSBjYW52YXMuZ2V0VXJsKCkrJ0Rvd25sb2FkSGFuZGxlcj8nICsKKyAgICAgICAgICAgICAgICAgICAgJ2ZpbGVOYW1lPScgKyBlbmNvZGVVUklDb21wb25lbnQoZmlsZU5hbWUpICsKKyAgICAgICAgICAgICAgICAgICAgJyZtb2R1bGVOYW1lPScgKyBtb2R1bGVOYW1lICsgCisgICAgICAgICAgICAgICAgICAgICcmcGFyZW50UGF0aD0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHBhcmVudFBhdGgpICsKKyAgICAgICAgICAgICAgICAgICAgJyZyb29tX2lkPScrcm9vbSArIAorICAgICAgICAgICAgICAgICAgICAnJnNpZD0nK2NhbnZhcy5zZXNzaW9uSWQ7CisgICAgICAgICAgICB2YXIgd2lkdGg9IHRoaXMud2lkdGg7CisgICAgICAgICAgICB2YXIgaGVpZ2h0ID0gdGhpcy5oZWlnaHQ7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuY3VycmVudGxheWVyID0gbmV3IGx6LnN3ZlJlc291cmNlVmlldyhvYmose3JlZk9iajp0aGlzLG5hbWU6bmFtZWluZywKKyAgICAgICAgICAgIAl4OnBvc3gseTpwb3N5LAorICAgICAgICAgICAgCWFsdGVyTW9kdXM6YWx0ZXJNb2R1cywKKyAgICAgICAgICAgIAliYXNldXJsOmJhc2V1cmwsZmlsZU5hbWU6ZmlsZU5hbWUsbW9kdWxlTmFtZTptb2R1bGVOYW1lLAorICAgICAgICAgICAgCXBhcmVudFBhdGg6cGFyZW50UGF0aCxyb29tOnJvb20sZG9tYWluOmRvbWFpbiwKKyAgICAgICAgICAgIAlzbGlkZU51bWJlcjpzbGlkZU51bWJlcix3aWR0aDp3aWR0aCxoZWlnaHQ6aGVpZ2h0LAorICAgICAgICAgICAgCWN1cnJlbnR6b29tOmN1cnJlbnR6b29tLGlubmVyd2lkdGg6aW5uZXJ3aWR0aCxpbm5lcmhlaWdodDppbm5lcmhlaWdodCwKKyAgICAgICAgICAgIAlpbm5lcng6aW5uZXJ4LGlubmVyeTppbm5lcnkscmVjb3JkZXJNb2R1czp0cnVlfSk7CisKKyAgICAgICAgICAgIHRoaXMucGFyZW50LnBhcmVudC5pc2xvYWRpbmdJbWFnZS5zZW5kRXZlbnQodGhpcy5jdXJyZW50bGF5ZXIpOworICAgICAgICAgICAgdGhpcy5jdXJyZW50bGF5ZXIuX3N3ZlZpZXcuc2V0U291cmNlKGRvd25sb2FkdXJsKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy9BZGQgTGF5ZXIgdG8gZ2xvYmFsIExheWVyICAJCisgICAgICAgICAgICByZXR1cm4gdGhpcy5jdXJyZW50bGF5ZXI7CisJCV1dPgorICAJPC9tZXRob2Q+ICAJCisgICAgLS0+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJhZGRTV0ZUb0xheWVySGlzdG9yeSIgYXJncz0iYWN0aW9uT2JqZWN0LHJlZk9iaixpc1dtbExvYWRlciI+CisgICAgICAgIHRoaXMuaXNXbWxMb2FkZXJJbWFnZSA9IGlzV21sTG9hZGVyOworICAgICAgICB0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0LnB1c2goYWN0aW9uT2JqZWN0KTsgICAKKyAgICAgICAgdGhpcy5hZGRQcmVzZW50YXRpb25Ub0xheWVyKHJlZk9iaixhY3Rpb25PYmplY3RbMV0sYWN0aW9uT2JqZWN0W2FjdGlvbk9iamVjdC5sZW5ndGgtMV0sCisgICAgICAgICAgICBhY3Rpb25PYmplY3RbYWN0aW9uT2JqZWN0Lmxlbmd0aC01XSxhY3Rpb25PYmplY3RbYWN0aW9uT2JqZWN0Lmxlbmd0aC00XSxhY3Rpb25PYmplY3RbYWN0aW9uT2JqZWN0Lmxlbmd0aC0zXSwKKyAgICAgICAgICAgIGFjdGlvbk9iamVjdFthY3Rpb25PYmplY3QubGVuZ3RoLTJdLGZhbHNlLGFjdGlvbk9iamVjdFsyXSxhY3Rpb25PYmplY3RbM10sYWN0aW9uT2JqZWN0WzRdLGFjdGlvbk9iamVjdFs1XSwKKyAgICAgICAgICAgIGFjdGlvbk9iamVjdFs2XSxhY3Rpb25PYmplY3RbN10sCisgICAgICAgICAgICBhY3Rpb25PYmplY3RbOF0sYWN0aW9uT2JqZWN0WzE2XSxhY3Rpb25PYmplY3RbMTFdLGFjdGlvbk9iamVjdFsxMl0sYWN0aW9uT2JqZWN0WzldLGFjdGlvbk9iamVjdFsxMF0sCisgICAgICAgICAgICBhY3Rpb25PYmplY3RbMTddLGFjdGlvbk9iamVjdFsxOF0sYWN0aW9uT2JqZWN0WzE5XSk7CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPCEtLSAKKyAgICAJSW52b2tlZCBieSB0aGUgcmVtb3RlIEhvc3QsIHNlZSBzZW5kV2F0Y2hPYmplY3QgaW4gYmFzZURyYXcubHp4CisgICAgIC0tPgorICAgIDxtZXRob2QgbmFtZT0iYWRkU1dGVG9MYXllckhpc3RvcnlTeW5jZWQiIGFyZ3M9ImFjdGlvbk9iamVjdCxyZWZPYmoiPgorICAgICAgICB0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0LnB1c2goYWN0aW9uT2JqZWN0KTsJCisgIAkJdGhpcy5zdGFydE5ld09iamVjdFN5bmNQcm9jZXNzLmlzU3RhcnRpbmcgPSBmYWxzZTsKKyAgCQl0aGlzLnN0YXJ0TmV3T2JqZWN0U3luY1Byb2Nlc3MudW5pcXVlT2JqZWN0U3luY05hbWUgPSBhY3Rpb25PYmplY3RbMTddOworICAJCXRoaXMuc3RhcnROZXdPYmplY3RTeW5jUHJvY2Vzcy5kb0NhbGwoKTsgICAgICAgIAorICAgCQl0aGlzLmFkZFByZXNlbnRhdGlvblRvTGF5ZXIocmVmT2JqLGFjdGlvbk9iamVjdFsxXSxhY3Rpb25PYmplY3RbYWN0aW9uT2JqZWN0Lmxlbmd0aC0xXSwKKyAgCQkJYWN0aW9uT2JqZWN0W2FjdGlvbk9iamVjdC5sZW5ndGgtNV0sYWN0aW9uT2JqZWN0W2FjdGlvbk9iamVjdC5sZW5ndGgtNF0sCisgIAkJCWFjdGlvbk9iamVjdFthY3Rpb25PYmplY3QubGVuZ3RoLTNdLGFjdGlvbk9iamVjdFthY3Rpb25PYmplY3QubGVuZ3RoLTJdLAorICAJCQlmYWxzZSwKKyAgCQkJYWN0aW9uT2JqZWN0WzJdLGFjdGlvbk9iamVjdFszXSxhY3Rpb25PYmplY3RbNF0sYWN0aW9uT2JqZWN0WzVdLGFjdGlvbk9iamVjdFs2XSwKKyAgCQkJYWN0aW9uT2JqZWN0WzddLGFjdGlvbk9iamVjdFs4XSxhY3Rpb25PYmplY3RbMTZdLGFjdGlvbk9iamVjdFsxMV0sYWN0aW9uT2JqZWN0WzEyXSwKKyAgCQkJYWN0aW9uT2JqZWN0WzldLGFjdGlvbk9iamVjdFsxMF0sYWN0aW9uT2JqZWN0WzE3XSxhY3Rpb25PYmplY3RbMThdLGFjdGlvbk9iamVjdFsxOV0pOworICAJPC9tZXRob2Q+CisgIAkKKwk8IS0tLSAKKwkJaW52b2tlIGJ5IHRoZSBpbml0aWFsIExvYWRpbmcgcHJvY2VzcyBpbiByZW1vdGVXaGl0ZWJvYXJkLmx6eCwgCisJCWRvZXMgbm90IGludm9rZSBhbnkgVXBkYXRlIEhhbmRsZXIKKwkJb25jZSB0aGlzIG9iamVjdCBpcyBsb2FkZWQsIGl0IHdpbGwgdGhyb3cgYW4gVXBkYXRlIGV2ZW50IG9mIGtpbmQKKwkJYWRkU1dGVG9MYXllckhpc3RvcnlUb0xvY2FsTG9hZGVkCisgIAkgLS0+CisgIAk8bWV0aG9kIG5hbWU9ImFkZFNXRlRvTGF5ZXJIaXN0b3J5VG9Mb2NhbCIgYXJncz0iYWN0aW9uT2JqZWN0LHJlZk9iaiI+CisgICAgICAgIHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3QucHVzaChhY3Rpb25PYmplY3QpOwkKKyAgCQl0aGlzLmFkZFByZXNlbnRhdGlvblRvTGF5ZXIocmVmT2JqLGFjdGlvbk9iamVjdFsxXSxhY3Rpb25PYmplY3RbYWN0aW9uT2JqZWN0Lmxlbmd0aC0xXSwKKyAgCQkJYWN0aW9uT2JqZWN0W2FjdGlvbk9iamVjdC5sZW5ndGgtNV0sYWN0aW9uT2JqZWN0W2FjdGlvbk9iamVjdC5sZW5ndGgtNF0sCisgIAkJCWFjdGlvbk9iamVjdFthY3Rpb25PYmplY3QubGVuZ3RoLTNdLGFjdGlvbk9iamVjdFthY3Rpb25PYmplY3QubGVuZ3RoLTJdLAorICAJCQlmYWxzZSwKKyAgCQkJYWN0aW9uT2JqZWN0WzJdLGFjdGlvbk9iamVjdFszXSxhY3Rpb25PYmplY3RbNF0sYWN0aW9uT2JqZWN0WzVdLGFjdGlvbk9iamVjdFs2XSwKKyAgCQkJYWN0aW9uT2JqZWN0WzddLGFjdGlvbk9iamVjdFs4XSxhY3Rpb25PYmplY3RbMTZdLGFjdGlvbk9iamVjdFsxMV0sYWN0aW9uT2JqZWN0WzEyXSwKKyAgCQkJYWN0aW9uT2JqZWN0WzldLGFjdGlvbk9iamVjdFsxMF0sYWN0aW9uT2JqZWN0WzE3XSxhY3Rpb25PYmplY3RbMThdLGFjdGlvbk9iamVjdFsxOV0pOworICAJPC9tZXRob2Q+CisgIAkKKyAgCTwhLS0KKyAgCQlUT0RPOiBDaGVjayBSZWNvcmRpbmcgUHJvY2VzcworICAJIAorICAJPG1ldGhvZCBuYW1lPSJhZGRTV0ZUb0xheWVySGlzdG9yeVJlY29yZGluZyIgYXJncz0iYWN0aW9uT2JqZWN0LHJlZk9iaixpc1dtbExvYWRlciI+CisJCXRoaXMuaXNXbWxMb2FkZXJJbWFnZSA9IGlzV21sTG9hZGVyOworICAgICAgICB0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0LnB1c2goYWN0aW9uT2JqZWN0KTsJCisgIAkJdGhpcy5hZGRQcmVzZW50YXRpb25Ub0xheWVyUmVjb3JkaW5nKHJlZk9iaixhY3Rpb25PYmplY3RbMV0sYWN0aW9uT2JqZWN0W2FjdGlvbk9iamVjdC5sZW5ndGgtMV0sYWN0aW9uT2JqZWN0W2FjdGlvbk9iamVjdC5sZW5ndGgtNV0sYWN0aW9uT2JqZWN0W2FjdGlvbk9iamVjdC5sZW5ndGgtNF0sYWN0aW9uT2JqZWN0W2FjdGlvbk9iamVjdC5sZW5ndGgtM10sYWN0aW9uT2JqZWN0W2FjdGlvbk9iamVjdC5sZW5ndGgtMl0sZmFsc2UsYWN0aW9uT2JqZWN0WzJdLGFjdGlvbk9iamVjdFszXSxhY3Rpb25PYmplY3RbNF0sYWN0aW9uT2JqZWN0WzVdLGFjdGlvbk9iamVjdFs2XSxhY3Rpb25PYmplY3RbN10sYWN0aW9uT2JqZWN0WzhdLGFjdGlvbk9iamVjdFsxNl0sYWN0aW9uT2JqZWN0WzExXSxhY3Rpb25PYmplY3RbMTJdLGFjdGlvbk9iamVjdFs5XSxhY3Rpb25PYmplY3RbMTBdKTsKKyAgCTwvbWV0aG9kPgorICAgIC0tPgorICAJCisgIAk8bWV0aG9kIG5hbWU9InJlZ2lzdGVyTmV3U1dGIiBhcmdzPSJ1cmxuYW1lLHBvc3gscG9zeSx3aWR0aCxoZWlnaHQsYmFzZXVybCxmaWxlTmFtZSxtb2R1bGVOYW1lLHBhcmVudFBhdGgscm9vbSxkb21haW4sc2xpZGVOdW1iZXIsaW5uZXJ4LGlubmVyeSxpbm5lcndpZHRoLGlubmVyaGVpZ2h0LHpvb21sZXZlbCxjdXJyZW50em9vbSxpbml0d2lkdGgsaW5pdGhlaWdodCx1bmlxdU9iamVjdFN5bmNOYW1lLGRvVXBkYXRlTWVzc2FnZSxzdGFuZGFyZEZpbGVOYW1lLGZ1bGxGaXQsekluZGV4Ij4KKwkJdmFyIGFjdGlvbk9iamVjdCA9IG5ldyBBcnJheSgpOworCSAgICBhY3Rpb25PYmplY3QucHVzaCgnc3dmJyk7Ly8wCisJICAgIGFjdGlvbk9iamVjdC5wdXNoKHVybG5hbWUpOy8vMQorCQlhY3Rpb25PYmplY3QucHVzaChiYXNldXJsKTsvLzIKKwkJYWN0aW9uT2JqZWN0LnB1c2goZmlsZU5hbWUpOy8vMworCQlhY3Rpb25PYmplY3QucHVzaChtb2R1bGVOYW1lKTsvLzQKKwkJYWN0aW9uT2JqZWN0LnB1c2gocGFyZW50UGF0aCk7Ly81CisJCWFjdGlvbk9iamVjdC5wdXNoKHJvb20pOy8vNgorCQlhY3Rpb25PYmplY3QucHVzaChkb21haW4pOy8vNworICAgICAgICBhY3Rpb25PYmplY3QucHVzaChzbGlkZU51bWJlcik7Ly84CisgICAgICAgIGFjdGlvbk9iamVjdC5wdXNoKGlubmVyeCk7Ly85CisgICAgICAgIGFjdGlvbk9iamVjdC5wdXNoKGlubmVyeSk7Ly8xMAorICAgICAgICBhY3Rpb25PYmplY3QucHVzaChpbm5lcndpZHRoKTsvLzExCisgICAgICAgIGFjdGlvbk9iamVjdC5wdXNoKGlubmVyaGVpZ2h0KTsvLzEyCisgICAgICAgIGFjdGlvbk9iamVjdC5wdXNoKHpvb21sZXZlbCk7Ly8xMworICAgICAgICBhY3Rpb25PYmplY3QucHVzaChpbml0d2lkdGgpOy8vMTQKKyAgICAgICAgYWN0aW9uT2JqZWN0LnB1c2goaW5pdGhlaWdodCk7Ly8xNQorICAgICAgICBhY3Rpb25PYmplY3QucHVzaChjdXJyZW50em9vbSk7Ly8xNgorICAgICAgICBhY3Rpb25PYmplY3QucHVzaCh1bmlxdU9iamVjdFN5bmNOYW1lKTsvLzE3CisgICAgICAgIGFjdGlvbk9iamVjdC5wdXNoKHN0YW5kYXJkRmlsZU5hbWUpOy8vMTgKKyAgICAgICAgYWN0aW9uT2JqZWN0LnB1c2goZnVsbEZpdCk7Ly8xOQorICAgICAgICBhY3Rpb25PYmplY3QucHVzaCh6SW5kZXgpOy8vLTgKKyAgICAgICAgYWN0aW9uT2JqZWN0LnB1c2gobnVsbCk7Ly8tNworCQlhY3Rpb25PYmplY3QucHVzaCh0aGlzLmNvdW50ZXIpOy8vLTYKKwkgICAgYWN0aW9uT2JqZWN0LnB1c2gocG9zeCk7Ly8tNQorCSAgICBhY3Rpb25PYmplY3QucHVzaChwb3N5KTsvLy00CisJICAgIGFjdGlvbk9iamVjdC5wdXNoKHdpZHRoKTsvLy0zCisJICAgIGFjdGlvbk9iamVjdC5wdXNoKGhlaWdodCk7Ly8tMgorCSAgICBhY3Rpb25PYmplY3QucHVzaCh0aGlzLmN1cnJlbnRsYXllci5uYW1lKTsvLy0xCisJICAgIHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3QucHVzaChhY3Rpb25PYmplY3QpOworCSAgICB0aGlzLmNoZWNrU3RlcExheWVycygpOworCSAgICBpZiAoZG9VcGRhdGVNZXNzYWdlKSB0aGlzLm9uc2hhcmVkTWVzc2FnZSgnZHJhdycsYWN0aW9uT2JqZWN0KTsJCisgIAk8L21ldGhvZD4gICAgCisgICAgCisJPCEtLQorCQlJbnZva2VkIGJ5IHRoZSBzd2ZSZXNvdXJjZSwgaWYgdGhlIGFsdGVyTW9kdXMgPSB0cnVlLAorCQl0aHJvd3MgYW4gVXBkYXRlLUV2ZW50IHRvIGFsbCBjb25uZWN0ZWQgQ2xpZW50cworCSAtLT4KKwk8bWV0aG9kIG5hbWU9InN0b3JlVGVtcFZhbHNBbmRMb2FkU3luY0xpc3RTV0YiIGFyZ3M9Im9ialJlZiI+CisJCXRoaXMuc3luY0ltYWdlUmVmT2JqID0gb2JqUmVmOworCQl0aGlzLmRvUmVnaXN0ZXJOZXdTd2YodHJ1ZSk7CisJCXRoaXMuc2VuZENvbXBsZXRlZE9iamVjdFN5bmNFdmVudC51bmlxdWVPYmplY3RTeW5jTmFtZSA9IHRoaXMuc3luY0ltYWdlUmVmT2JqLnVuaXF1ZU9iamVjdFN5bmNOYW1lOworCQl0aGlzLnNlbmRDb21wbGV0ZWRPYmplY3RTeW5jRXZlbnQuZG9DYWxsKCk7CisJPC9tZXRob2Q+ICAgIAorCQorCTwhLS0KKwkJSW52b2tlZCBieSB0aGUgc3dmUmVzb3VyY2UsIGlmIHRoZSBhbHRlck1vZHVzID0gZmFsc2UsCisJCXRocm93cyBOTyBVcGRhdGUtRXZlbnQgdG8gYWxsIGNvbm5lY3RlZCBDbGllbnRzCisJIC0tPgorCTxtZXRob2QgbmFtZT0ic2VuZExvYWROb3RpZmljYXRpb25TV0YiIGFyZ3M9Im9ialJlZiIgPgorCQl0aGlzLnN5bmNJbWFnZVJlZk9iaiA9IG9ialJlZjsKKwkJdGhpcy5kb1JlZ2lzdGVyTmV3U3dmKGZhbHNlKTsKKwkJdGhpcy5zZW5kQ29tcGxldGVkT2JqZWN0U3luY0V2ZW50LnVuaXF1ZU9iamVjdFN5bmNOYW1lID0gdGhpcy5zeW5jSW1hZ2VSZWZPYmoudW5pcXVlT2JqZWN0U3luY05hbWU7CisJCXRoaXMuc2VuZENvbXBsZXRlZE9iamVjdFN5bmNFdmVudC5kb0NhbGwoKTsKKwk8L21ldGhvZD4KKwkKKwk8IS0tIAorCQlUT0RPOiBDaGVjayBSZWNvcmRpbmcKKwktLT4KKwk8bWV0aG9kIG5hbWU9InN0b3JlVGVtcFZhbHNBbmRMb2FkU3luY0xpc3RTV0ZSZWNvcmRpbmciIGFyZ3M9Im9ialJlZiI+CisJCXRoaXMuc3luY0ltYWdlUmVmT2JqID0gb2JqUmVmOworCQkvL3RoaXMuZG9SZWdpc3Rlck5ld1N3ZigpOworCQkvL3RoaXMuc2VuZENvbXBsZXRlU1dGU3luYygpOworCQkvL1RoaXMgaW52b2tlcyBhIE1ldGhvZCB3aGljaCBpcyBpbiB0aGUgcmVtb3RlV2hpdGVib2FyZC5sengKKwkJdGhpcy5zZW5kQ29tcGxldGVkT2JqZWN0U3luY0V2ZW50LnVuaXF1ZU9iamVjdFN5bmNOYW1lID0gdGhpcy5zeW5jSW1hZ2VSZWZPYmoudW5pcXVlT2JqZWN0U3luY05hbWU7CisJCXRoaXMuc2VuZENvbXBsZXRlZE9iamVjdFN5bmNFdmVudC5kb0NhbGwoKTsKKwk8L21ldGhvZD4gICAgCisgICAgCisJCisKKwk8IS0tIHNlbmRpbmcgbWVzc2FnZXMvbm90aWZpY2F0aW9ucyBvZiBzeW5jIHByb2Nlc3MKKwkJc3luY2luZyBpcyBub3cgb24gc2VydmVyIHNpZGUgaW1wbGVtZW50ZWQsIHN3YWduZXIgMTIuMDYuMjAwOAorCTxuZXRSZW1vdGVDYWxsSGliIG5hbWU9InNlbmRNZXNzYWdlV2l0aENsaWVudFNXRiIgZnVuY25hbWU9InNlbmRNZXNzYWdlV2l0aENsaWVudCIgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gICAKKwkJPG5ldHBhcmFtIG5hbWU9InZhcnMiPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50LmltYWdlTG9hZGluZ0NvbXBsZXRlTWVzc2FnZTs8L21ldGhvZD48L25ldHBhcmFtPgorCQk8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKwkJCTwhW0NEQVRBWworCQkJCS8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisJCQkJLy8vL0RlYnVnLndyaXRlKCJnZXRWYWx1ZSA6ICIsdmFsdWUpOworCQkJXV0+CisJCTwvaGFuZGxlcj4gICAKKwk8L25ldFJlbW90ZUNhbGxIaWI+ICAgICAKKyAgICAgLS0+CisgICAgIAorCTwhLS0gZ2V0IGxpc3Qgb2YgY2xpZW50cyBiZWZvcmUgbG9hZGluZyBpbWFnZSBjYXVzZQorCQl3ZSBoYXZlIHRvIHNob3cgdGhlIHN5bmMgcHJvY2VzcworCQkKKwkJc3luY2luZyBpcyBub3cgb24gc2VydmVyIHNpZGUgaW1wbGVtZW50ZWQsIHN3YWduZXIgMTIuMDYuMjAwOAorCQorICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImdldFNXRkNsaWVudExpc3RTY29wZSIgZnVuY25hbWU9ImdldENsaWVudExpc3RTY29wZSIgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gICAgICAgICAgCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAJPCFbQ0RBVEFbCisJCQkJLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBieSB0aGUgcnRtcGNvbm5lY3Rpb24KKwkJCQkvLy8vRGVidWcud3JpdGUoImdldFNXRkNsaWVudExpc3RTY29wZSBJbnN0YW5jZTogIix2YWx1ZSk7CisJCQkJcGFyZW50Ll9sb2FkaW5nVXNlcnNJbWFnZUxpc3QgPSBuZXcgQXJyYXkoKTsKKwkJCQlmb3IgKHZhciBlZyBpbiB2YWx1ZSl7CisJCQkJCWlmIChjYW52YXMuc3RyZWFtaWQgIT0gdmFsdWVbZWddLnN0cmVhbWlkKXsKKwkJCQkJCS8vRGVidWcud3JpdGUoInBhcmVudC5fbG9hZGluZ1VzZXJzSW1hZ2VMaXN0IHZhbHVlIGVnICIsZWcsdmFsdWVbZWddKTsKKwkJCQkJCXBhcmVudC5fbG9hZGluZ1VzZXJzSW1hZ2VMaXN0LnB1c2godmFsdWVbZWddKTsKKwkJCQkJfQorCQkJCX0KKwkJCQl0aGlzLnBhcmVudC5kb1JlZ2lzdGVyTmV3U3dmKCk7CQorCQkJCXRoaXMucGFyZW50LnN0YXJ0U1dGc3luY0NoZWNrKCk7CQkJCisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPiAgIAorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4KKyAgICAJLS0+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJkb1JlZ2lzdGVyTmV3U3dmIiBhcmdzPSJkb1VwZGF0ZU1lc3NhZ2UiPgorCQkvL25vdyBzZW5kIG5vdGlmaWNhdGlvbnMgdG8gY29ubmVjdGVkIGNsaWVudHMKKwkJdGhpcy5zZXRBdHRyaWJ1dGUoJ2RyYXdtb2R1cycsJ2hhbmQnKTsKKyAgICAgICAgCisJCXRoaXMucmVnaXN0ZXJOZXdTV0YodGhpcy5zeW5jSW1hZ2VSZWZPYmouYmFzZXVybCx0aGlzLnN5bmNJbWFnZVJlZk9iai54LAorICAgICAgICAgICAgICAgIHRoaXMuc3luY0ltYWdlUmVmT2JqLnksdGhpcy5zeW5jSW1hZ2VSZWZPYmouX3N3ZlZpZXcud2lkdGgsCisgICAgICAgICAgICAgICAgdGhpcy5zeW5jSW1hZ2VSZWZPYmouX3N3ZlZpZXcuaGVpZ2h0LHRoaXMuc3luY0ltYWdlUmVmT2JqLmJhc2V1cmwsCisgICAgICAgICAgICAgICAgdGhpcy5zeW5jSW1hZ2VSZWZPYmouZmlsZU5hbWUsdGhpcy5zeW5jSW1hZ2VSZWZPYmoubW9kdWxlTmFtZSwKKyAgICAgICAgICAgICAgICB0aGlzLnN5bmNJbWFnZVJlZk9iai5wYXJlbnRQYXRoLHRoaXMuc3luY0ltYWdlUmVmT2JqLnJvb20sCisgICAgICAgICAgICAgICAgdGhpcy5zeW5jSW1hZ2VSZWZPYmouZG9tYWluLHRoaXMuc3luY0ltYWdlUmVmT2JqLnNsaWRlTnVtYmVyLAorICAgICAgICAgICAgICAgIHRoaXMuc3luY0ltYWdlUmVmT2JqLl9zd2ZWaWV3LngsdGhpcy5zeW5jSW1hZ2VSZWZPYmouX3N3ZlZpZXcueSwKKyAgICAgICAgICAgICAgICB0aGlzLnN5bmNJbWFnZVJlZk9iai5fc3dmVmlldy53aWR0aCx0aGlzLnN5bmNJbWFnZVJlZk9iai5fc3dmVmlldy5oZWlnaHQsCisgICAgICAgICAgICAgICAgdGhpcy5zeW5jSW1hZ2VSZWZPYmouem9vbWxldmVsLHRoaXMuc3luY0ltYWdlUmVmT2JqLmN1cnJlbnR6b29tRmFjdG9yLAorICAgICAgICAgICAgICAgIHRoaXMuc3luY0ltYWdlUmVmT2JqLmluaXR3aWR0aCx0aGlzLnN5bmNJbWFnZVJlZk9iai5pbml0aGVpZ2h0LAorICAgICAgICAgICAgICAgIHRoaXMuc3luY0ltYWdlUmVmT2JqLnVuaXF1ZU9iamVjdFN5bmNOYW1lLGRvVXBkYXRlTWVzc2FnZSwKKyAgICAgICAgICAgICAgICB0aGlzLnN5bmNJbWFnZVJlZk9iai5zdGFuZGFyZEZpbGVOYW1lLAorICAgICAgICAgICAgICAgIHRoaXMuc3luY0ltYWdlUmVmT2JqLmZ1bGxGaXQsCisgICAgICAgICAgICAgICAgdGhpcy5nZXRaSW5kZXgoKSk7CisgICAgICAgIAorCQkvL3NldCBtb2R1cyB0byBoYW5kIHNvIHVzZXJzIGNhbiBkaXJlY3RseSBzZWxlY3QgdGhhdCBpbWFnZQorCQl0aGlzLnNldE1vZHVzKCdzd2YnKTsKKyAgICA8L21ldGhvZD4KKwkKKwk8IS0tIGFmdGVyIGxvYWRpbmcgdGhlIG9iamVjdHMgY2hlY2sgaWYgYWxsIGNvbm5lY3RlZCBjbGllbnRzIG9mIHRoYXQgY29uZmVyZW5jZQorCQloYXZlIGxvYWRlZCB0aGUgZmlsZSBjb21wbGV0ZWx5LCBjaGVjayBpdCBldmVyeSAxIHNlY29uZHMKKwkJc3luY2luZyBpcyBub3cgb24gc2VydmVyIHNpZGUgaW1wbGVtZW50ZWQsIHN3YWduZXIgMTIuMDYuMjAwOAorCTxtZXRob2QgbmFtZT0ic3RhcnRTV0ZzeW5jQ2hlY2siPgorCQk8IVtDREFUQVsKKwkJCWlmICh0aGlzLl9sb2FkaW5nVXNlcnNJbWFnZUxpc3QubGVuZ3RoPT0wKXsKKwkJCQl0aGlzLnNlbmRTeW5jTm90aWZpY2F0aW9uU1dGKCk7CisJCQl9IGVsc2UgeworCQkJCXZhciB0eHQgPSB0aGlzLmltYWdlU3luY01lc3NhZ2VUZXh0KycgJyt0aGlzLl9sb2FkaW5nVXNlcnNJbWFnZUxpc3QubGVuZ3RoOworCQkJCXRoaXMubG9hZGltYWdlRGF0YVdpblJlZi5zZXRNZXNzYWdlKHR4dCk7CisJCQkJdGhpcy5sb2FkSW1hZ2VPYmplY3RUaW1lciA9IG5ldyBMekRlbGVnYXRlKCB0aGlzLCAic3RhcnRJbWdhZXN5bmNDaGVjayIgKTsKKwkJCQlsei5UaW1lci5hZGRUaW1lciggdGhpcy5sb2FkSW1hZ2VPYmplY3RUaW1lciwgdGhpcy5zeW5jSW1hZ2VDaGVja1RpbWUgKTsKKwkJCX0KKwkJXV0+CisJPC9tZXRob2Q+CQorCSAtLT4KKworCTxtZXRob2QgbmFtZT0ic2VuZFN5bmNOb3RpZmljYXRpb25TV0YiPgorCQl0aGlzLmltYWdlTG9hZGluZ0NvbXBsZXRlTWVzc2FnZSA9IG5ldyBBcnJheSgpOworCQl0aGlzLmltYWdlTG9hZGluZ0NvbXBsZXRlTWVzc2FnZVswXSA9ICJ3aGl0ZWJvYXJkIjsKKwkJdGhpcy5pbWFnZUxvYWRpbmdDb21wbGV0ZU1lc3NhZ2VbMV0gPSAic3dmc3luY2NvbXBsZXRlIjsKKwkJdGhpcy5zZW5kTWVzc2FnZVdpdGhDbGllbnRTV0YuZG9DYWxsKCk7CisJPC9tZXRob2Q+CQorCisJPCEtLSBpbnZva2VkIGJ5IHJlbW90ZSBjbGllbnQgb25jZSBoZSBoYXMgY29tcGxldGVseSBsb2FkZWQgdGhlIHdtbC1maWxlIAorCQlyZW1vdGUgY2xpZW50IGlzIHdhaXRpbmcvc3RpbGwgc2hvd3MgbG9hZGluZyB3aW5kb3cgdW50aWxsIGFsbCBjbGllbnRzIGhhdmUgCisJCWNvbXBsZXRlbHkgbG9hZGVkIHRoZSBvYmplY3QvbW9kZXJhdG9yIHNlbmRzICJzeW5jY29tcGxldGUiIG1lc3NhZ2UKKwkJCisJCXN5bmNpbmcgaXMgbm93IG9uIHNlcnZlciBzaWRlIGltcGxlbWVudGVkLCBzd2FnbmVyIDEyLjA2LjIwMDgKKwkJCisJPG1ldGhvZCBuYW1lPSJzZW5kQ29tcGxldGVTV0ZMb2FkZWRSQ2xpZW50IiBhcmdzPSJjbGllbnQiPgorCQk8IVtDREFUQVsKKwkJCS8vZGV0ZWN0IHNlbGYgbWVzc2FnZWluZworCQkJaWYgKGNsaWVudC5zdHJlYW1pZCE9Y2FudmFzLnN0cmVhbWlkKXsKKwkJCQkvL3JlbW92ZSBjbGllbnQgZnJvbSBzeW5jIGxpc3QKKwkJCQlmb3IgKHZhciBpPTA7aTx0aGlzLl9sb2FkaW5nVXNlcnNJbWFnZUxpc3QubGVuZ3RoO2krKyl7CisJCQkJCWlmICh0aGlzLl9sb2FkaW5nVXNlcnNJbWFnZUxpc3RbaV0uc3RyZWFtaWQ9PWNsaWVudC5zdHJlYW1pZCl7CisJCQkJCQkvLy8vRGVidWcud3JpdGUoImRlbGV0ZWluZyBjbGllbnQgZnJvbSBsaXN0OiAiLHRoaXMuX2xvYWRpbmdVc2Vyc0ltYWdlTGlzdFtpXS5zdHJlYW1pZCk7CisJCQkJCQl0aGlzLl9sb2FkaW5nVXNlcnNJbWFnZUxpc3Quc3BsaWNlKGksMSk7CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCV1dPgorCTwvbWV0aG9kPgorCQorCSAtLT4KKwkKKwk8IS0tIGludm9rZWQgcmVtb3RlbHkgYnkgTW9kZXJhdG9yCisJCWFsbCBjbGllbnRzIGhhdmUgc3VjY2VlZCBpbiBsb2FkaW5nIHRoZSBpbWFnZQorCQlsb2FkaW5nIHdpbiBjYW4gYmUgY2xvc2VkCisJCUFsZXJ0OiBUaGlzIG5vdGlmaWNhdGlvbiB3aWxsIGJlIHNlbmQgZnJvbSBNb2RlcmF0b3IgYW5kIHJlY2VpdmVkIGJ5IEFMTCBjbGllbnRzIElOQ0xVRElORworCQl0aGUgbW9kZXJhdG9yLCBzbyB0aGUgbW9kZXJhdG9yIG5lZWRzIG5vIGV4dHJhIGNvbW1hbmQgKmNsb3NlKiBmb3IgbG9hZGluZyBiYXIgY2F1c2UgaGUKKwkJZ2V0cyBpdHMgb3duICpzeW5jKiBjb21wbGV0ZSBub2ZpZmljYXRpb24KKwkJCisJCXN5bmNpbmcgaXMgbm93IG9uIHNlcnZlciBzaWRlIGltcGxlbWVudGVkLCBzd2FnbmVyIDEyLjA2LjIwMDgKKwkJCQorCTxtZXRob2QgbmFtZT0ic2VuZENvbXBsZXRlU1dGU3luYyIgYXJncz0iY2xpZW50Ij4KKwkJLy8vL0RlYnVnLndyaXRlKCJzZW5kQ29tcGxldGVTV0ZTeW5jICIsY2xpZW50KTsKKwkJdGhpcy5sb2FkaW1hZ2VEYXRhV2luUmVmLmNsb3NlKCk7CisJPC9tZXRob2Q+ICAKKyAgICAgLS0+CisgICAgCisgICAgPCEtLSBEb2N1bWVudCBhY3Rpb25zCisgICAgICAgIHRoaXMuT2JqZWN0QnlOYW1lIGlzIHNldCBieSB0aGUgbWV0aG9kIGRvU2hvd09iamVjdEJvdW5kcyBvZiBiYXNlRHJhdyBhbmQgaG9sZHMgYSByZWZlcmVuY2UgdG8KKyAgICAgICAgdGhlIGN1cnJlbnRseSBzZWxlY3RlZCBvYmplY3Qgb24gdGhlIHdoaXRlYm9hcmQKKyAgICAgLS0+CisgICAgPG1ldGhvZCBuYW1lPSJkb0RvY3VtZW50QWN0aW9uIiBhcmdzPSJhY3Rpb24iPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLmluZm8oImRvRG9jdW1lbnRBY3Rpb24gOjE6IHNlbmRDdXJyZW50U1dGT2JqZWN0ICIsYWN0aW9uKTsKKyAgICAgICAgICAgIGlmICh0aGlzLk9iamVjdEJ5TmFtZS50eXBlT2ZPYmplY3Q9PSJzd2YiKSB7CisgICAgICAgICAgICAgICAgaWYgKGFjdGlvbj09ImRvY19maXJzdCIpeworICAgICAgICAgICAgICAgICAgICB0aGlzLk9iamVjdEJ5TmFtZS5fc3dmVmlldy5zZXRBdHRyaWJ1dGUoJ2ZyYW1lJywxKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbj09ImRvY19wcmUiKXsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuT2JqZWN0QnlOYW1lLl9zd2ZWaWV3LmZyYW1lPjEpeworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5PYmplY3RCeU5hbWUuX3N3ZlZpZXcuc2V0QXR0cmlidXRlKCdmcmFtZScsKHRoaXMuT2JqZWN0QnlOYW1lLl9zd2ZWaWV3LmZyYW1lLTEpKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uPT0iZG9jX25leHQiKXsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuT2JqZWN0QnlOYW1lLl9zd2ZWaWV3LmZyYW1lPHRoaXMuT2JqZWN0QnlOYW1lLl9zd2ZWaWV3LnRvdGFsZnJhbWVzKXsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuT2JqZWN0QnlOYW1lLl9zd2ZWaWV3LnNldEF0dHJpYnV0ZSgnZnJhbWUnLCh0aGlzLk9iamVjdEJ5TmFtZS5fc3dmVmlldy5mcmFtZSsxKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbj09ImRvY19sYXN0Iil7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuT2JqZWN0QnlOYW1lLl9zd2ZWaWV3LnNldEF0dHJpYnV0ZSgnZnJhbWUnLCh0aGlzLk9iamVjdEJ5TmFtZS5fc3dmVmlldy50b3RhbGZyYW1lcykpOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uPT0iZG9jX3pvb21fbWludXMiKXsKKyAgICAgICAgICAgICAgICAJCisgICAgICAgICAgICAgICAgCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJkb2Nfem9vbV9taW51cyAiKTsKKyAgICAgICAgICAgICAgICAJcmV0dXJuOworICAgICAgICAgICAgICAgIAkKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5PYmplY3RCeU5hbWUuY3VycmVudHpvb21GYWN0b3ItPXRoaXMuT2JqZWN0QnlOYW1lLnpvb21sZXZlbDsgICAgICAgCisgICAgICAgICAgICAgICAgICAgIHZhciBuZXd3aWR0aCA9ICh0aGlzLk9iamVjdEJ5TmFtZS5pbml0d2lkdGgvMTAwKSp0aGlzLk9iamVjdEJ5TmFtZS5jdXJyZW50em9vbUZhY3RvcjsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG5ld2hlaWdodCA9ICh0aGlzLk9iamVjdEJ5TmFtZS5pbml0aGVpZ2h0LzEwMCkqdGhpcy5PYmplY3RCeU5hbWUuY3VycmVudHpvb21GYWN0b3I7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuT2JqZWN0QnlOYW1lLl9zd2ZWaWV3LnNldEF0dHJpYnV0ZSgnd2lkdGgnLG5ld3dpZHRoKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5PYmplY3RCeU5hbWUuX3N3ZlZpZXcuc2V0QXR0cmlidXRlKCdoZWlnaHQnLG5ld2hlaWdodCk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuYm91bmRpbmdyZWYuZG9TZXRJbm5lck9iamVjdHNCb3VuZHMobmV3d2lkdGgsbmV3aGVpZ2h0KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbj09ImRvY196b29tX3BsdXMiKXsKKyAgICAgICAgICAgICAgICAJCisgICAgICAgICAgICAgICAgCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJkb2Nfem9vbV9wbHVzICIpOworICAgICAgICAgICAgICAgIAlyZXR1cm47CisgICAgICAgICAgICAgICAgCQorICAgICAgICAgICAgICAgICAgICB0aGlzLk9iamVjdEJ5TmFtZS5jdXJyZW50em9vbUZhY3Rvcis9dGhpcy5PYmplY3RCeU5hbWUuem9vbWxldmVsOyAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLy9EZWJ1Zy53cml0ZSgiZG9jX3pvb21fcGx1cyAxIix0aGlzLk9iamVjdEJ5TmFtZS5jdXJyZW50em9vbUZhY3Rvcix0aGlzLk9iamVjdEJ5TmFtZS56b29tbGV2ZWwpOworICAgICAgICAgICAgICAgICAgICB2YXIgbmV3d2lkdGggPSAodGhpcy5PYmplY3RCeU5hbWUuaW5pdHdpZHRoLzEwMCkqdGhpcy5PYmplY3RCeU5hbWUuY3VycmVudHpvb21GYWN0b3I7CisgICAgICAgICAgICAgICAgICAgIHZhciBuZXdoZWlnaHQgPSAodGhpcy5PYmplY3RCeU5hbWUuaW5pdGhlaWdodC8xMDApKnRoaXMuT2JqZWN0QnlOYW1lLmN1cnJlbnR6b29tRmFjdG9yOworICAgICAgICAgICAgICAgICAgICAvL0RlYnVnLndyaXRlKHRoaXMuT2JqZWN0QnlOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgLy9EZWJ1Zy53cml0ZSgiZG9jX3pvb21fcGx1cyAyIixuZXd3aWR0aCxuZXd3aWR0aCk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuT2JqZWN0QnlOYW1lLl9zd2ZWaWV3LnNldEF0dHJpYnV0ZSgnd2lkdGgnLG5ld3dpZHRoKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5PYmplY3RCeU5hbWUuX3N3ZlZpZXcuc2V0QXR0cmlidXRlKCdoZWlnaHQnLG5ld2hlaWdodCk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuYm91bmRpbmdyZWYuZG9TZXRJbm5lck9iamVjdHNCb3VuZHMobmV3d2lkdGgsbmV3aGVpZ2h0KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGFjdGlvbj09InNldFNsaWRlTnVtYmVyIil7CisgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm5ld1NsaWRlTnVtYmVyPjAgJiYgdGhpcy5uZXdTbGlkZU51bWJlcjw9dGhpcy5PYmplY3RCeU5hbWUuX3N3ZlZpZXcudG90YWxmcmFtZXMpeworICAgICAgICAgICAgICAgICAgICAJaWYgKCRkZWJ1ZykgRGVidWcud2FybigiU2xpZGUgTmV3IE51bWJlciAiLHRoaXMubmV3U2xpZGVOdW1iZXIpOworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5PYmplY3RCeU5hbWUuX3N3ZlZpZXcuc2V0QXR0cmlidXRlKCdmcmFtZScsdGhpcy5uZXdTbGlkZU51bWJlcik7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53YXJuKCJTbGlkZSBOdW1iZXIgb3V0IG9mIHJhbmdlIG9mIHRoYXQgZG9jdW1lbnQgVG90YWxGcmFtZXM6ICIsdGhpcy5PYmplY3RCeU5hbWUuX3N3ZlZpZXcudG90YWxmcmFtZXMpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRoaXMuT2JqZWN0QnlOYW1lLnNsaWRlTnVtYmVyID0gIHRoaXMuT2JqZWN0QnlOYW1lLl9zd2ZWaWV3LmZyYW1lOworICAgICAgICAgICAgICAgIHRoaXMuZG9VcGRhdGVEb2N1bWVudFRvb2xCYXIoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy5pbmZvKCJkb0RvY3VtZW50QWN0aW9uIDoyOiBzZW5kQ3VycmVudFNXRk9iamVjdCIpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHRoaXMuc2VuZEN1cnJlbnRTV0ZPYmplY3QodGhpcy5PYmplY3RCeU5hbWUpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImFkZEl0ZW1Ub0RvY3VtZW50VG9vbEJhciI+CisgICAgCXZhciBkb2NUb29sYmFyID0gdGhpcy5nZXREb2N1bWVudFRvb2xCYXIoKTsKKyAgICAJZG9jVG9vbGJhci5hZGRDdXJyZW50T2JqZWN0KHRoaXMuY3VycmVudGxheWVyKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InNldEN1cnJlbnREb2N1bWVudEJ5VG9vbEJhciIgYXJncz0iaXRlbVJlZk5hbWUiPgorICAgICAgICBpZiAodGhpcy5ib3VuZGluZ0lzQWN0aXZlKXsKKyAgICAgICAgCWlmICh0aGlzLmJvdW5kaW5ncmVmLm9ialJlZi5uYW1lICE9IGl0ZW1SZWZOYW1lKSB7CisgICAgICAgIAkJdGhpcy5ib3VuZGluZ3JlZi5faW5uZXJEcmFnLm9ubW91c2V1cC5zZW5kRXZlbnQoKTsKKyAgICAgICAgCX0KKyAgICAgICAgfQorICAgICAgICB0aGlzLnNldEN1cnJlbnREb2N1bWVudCgpOworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0ic2V0Q3VycmVudERvY3VtZW50IiBhcmdzPSJpdGVtUmVmTmFtZSI+CisgICAgCXZhciB0ID0gdGhpcy5nZXRPYmplY3RCeU5hbWUoaXRlbVJlZk5hbWUpOworICAgIAlpZiAodD09bnVsbCkgeworICAgIAkJcmV0dXJuOworICAgIAl9CisgICAgICAgIHRoaXMuT2JqZWN0QnlOYW1lID0gdDsKKyAgICAgICAgdGhpcy5kb1VwZGF0ZURvY3VtZW50VG9vbEJhcigpOworICAgICAgICAKKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInNldEN1cnJlbnREb2N1bWVudCAiLGl0ZW1SZWZOYW1lLHRoaXMuT2JqZWN0QnlOYW1lKTsKKyAgICAgICAgCisgICAgICAgIC8vbm90IG5lZWRlZCBhbnltb3JlCisgICAgICAgIC8vdGhpcy5zZW5kSXRlbVRvRnJvbnQoaXRlbVJlZk5hbWUpOworICAgICAgICAvL3RoaXMuYnJpbmdJdGVtVG9Gcm9udEJ5TmFtZShpdGVtUmVmTmFtZSk7CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJzZW5kSXRlbVRvRnJvbnQiIGFyZ3M9Iml0ZW1SZWZOYW1lIj4KKyAgICAgICAgdmFyIGFjdGlvbk9iamVjdCA9IG5ldyBBcnJheSgpOworICAgICAgICBhY3Rpb25PYmplY3RbMF0gPSAnaXRlbSc7CisgICAgICAgIGFjdGlvbk9iamVjdFsxXSA9IGl0ZW1SZWZOYW1lOworICAgICAgICB0aGlzLm9uc2hhcmVkTWVzc2FnZSgnc2VuZEl0ZW1Ub0Zyb250JyxhY3Rpb25PYmplY3QpOworICAgIDwvbWV0aG9kPiAgICAKKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImJyaW5nSXRlbVRvRnJvbnRCeU5hbWUiIGFyZ3M9Iml0ZW1SZWZOYW1lIj4KKyAgICAgICAgdGhpcy5PYmplY3RCeU5hbWUgPSB0aGlzLmdldE9iamVjdEJ5TmFtZShpdGVtUmVmTmFtZSk7CisgICAgICAgIHRoaXMuT2JqZWN0QnlOYW1lLmJyaW5nVG9Gcm9udCgpOworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iZG9VcGRhdGVEb2N1bWVudFRvb2xCYXJCeVBhcnRpY2lwYW50IiBhcmdzPSJpdGVtT2JqTmFtZSI+CisgICAgICAgIHRoaXMuT2JqZWN0QnlOYW1lID0gdGhpcy5nZXRPYmplY3RCeU5hbWUoaXRlbU9iak5hbWUpOworICAgICAgICB0aGlzLmRvVXBkYXRlRG9jdW1lbnRUb29sQmFyKCk7CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJkb1VwZGF0ZURvY3VtZW50VG9vbEJhciI+CisgICAgCTwhW0NEQVRBWworICAgICAgICAJaWYgKHRoaXMubW9kZXJuVG9vbGJhcikgeworICAgICAgICAgICAgICAgIC8vQGRlcHJlY2F0ZWQKKyAgICAgICAgICAgICAgICAvL3RoaXMgY29kZSBpcyBub3QgdmFsZGkgZm9yIHRoZSBsYXRlc3QgZGV2IGFueW1vcmUsIG9ubHkgaW5zaWRlIGZvciAKKyAgICAgICAgICAgICAgICAvL2JhY2t3YXJkIGNvbXBhdGliaWxpdHkKKyAgICAJICAgICAgICAvL3RoaXMucGFyZW50LnBhcmVudC5fZG9jdW1lbnRtZW51Ll9jdXJyZW50U2xpZGVOby5zZXRBdHRyaWJ1dGUoJ3RleHQnLHRoaXMuT2JqZWN0QnlOYW1lLl9zd2ZWaWV3LmZyYW1lKTsKKyAgICAJICAgICAgICAvL3RoaXMucGFyZW50LnBhcmVudC5fZG9jdW1lbnRtZW51Ll90b3RhbFNsaWRlTm8uc2V0QXR0cmlidXRlKCd0ZXh0Jyx0aGlzLk9iamVjdEJ5TmFtZS5fc3dmVmlldy50b3RhbGZyYW1lcyk7CisgICAgCSAgICAgICAgLy90aGlzLnBhcmVudC5wYXJlbnQuX2RvY3VtZW50bWVudS5fem9vbS5zZXRBdHRyaWJ1dGUoJ3RleHQnLHRoaXMuT2JqZWN0QnlOYW1lLmN1cnJlbnR6b29tRmFjdG9yKTsKKyAgICAgICAgCQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgCQl2YXIgZG9jVG9vbGJhciA9IHRoaXMuZ2V0RG9jdW1lbnRUb29sQmFyKCk7CisgICAgICAgIAkJCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImRvVXBkYXRlRG9jdW1lbnRUb29sQmFyICIsZG9jVG9vbGJhci5wYXJlbnQucGFyZW50Lmlnbm9yZVVwZGF0ZXMpOworICAgICAgICAgICAgICAgIGRvY1Rvb2xiYXIucGFyZW50LnBhcmVudC5pZ25vcmVVcGRhdGVzID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgCQlpZiAodGhpc1siT2JqZWN0QnlOYW1lIl0gJiYgdGhpcy5PYmplY3RCeU5hbWUgIT0gbnVsbCAmJiB0aGlzLk9iamVjdEJ5TmFtZS5fc3dmVmlldykgeworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud2FybigiZG9VcGRhdGVEb2N1bWVudFRvb2xCYXIgIix0aGlzLk9iamVjdEJ5TmFtZS5mdWxsRml0KTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIAkJCWRvY1Rvb2xiYXIuX2N1cnJlbnRTbGlkZU5vLnNldEF0dHJpYnV0ZSgndGV4dCcsdGhpcy5PYmplY3RCeU5hbWUuX3N3ZlZpZXcuZnJhbWUpOworICAgICAgICAgICAgICAgICAgICBkb2NUb29sYmFyLl90b3RhbFNsaWRlTm8uc2V0QXR0cmlidXRlKCd0ZXh0Jyx0aGlzLk9iamVjdEJ5TmFtZS5fc3dmVmlldy50b3RhbGZyYW1lcyk7CisgICAgICAgICAgICAgICAgICAgIC8vZG9jVG9vbGJhci5fem9vbS5zZXRBdHRyaWJ1dGUoJ3RleHQnLHRoaXMuT2JqZWN0QnlOYW1lLmN1cnJlbnR6b29tRmFjdG9yKTsKKyAgICAgICAgICAgICAgICAgICAgLy9kb2NUb29sYmFyLnBhcmVudC5fZnVsbEZpdC5zZXRWYWx1ZSh0aGlzLk9iamVjdEJ5TmFtZS5mdWxsRml0KTsKKyAgICAgICAgCQl9IGVsc2UgeworICAgICAgICAJCQlkb2NUb29sYmFyLl9jdXJyZW50U2xpZGVOby5zZXRBdHRyaWJ1dGUoJ3RleHQnLCIwIik7CisgICAgICAgICAgICAgICAgICAgIGRvY1Rvb2xiYXIuX3RvdGFsU2xpZGVOby5zZXRBdHRyaWJ1dGUoJ3RleHQnLCIwIik7CisgICAgICAgICAgICAgICAgICAgIC8vZG9jVG9vbGJhci5fem9vbS5zZXRBdHRyaWJ1dGUoJ3RleHQnLCIxMDAiKTsKKyAgICAgICAgICAgICAgICAgICAgLy9kb2NUb29sYmFyLnBhcmVudC5fZnVsbEZpdC5zZXRWYWx1ZShmYWxzZSk7CisgICAgICAgIAkJfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGRvY1Rvb2xiYXIucGFyZW50LnBhcmVudC5pZ25vcmVVcGRhdGVzID0gZmFsc2U7CisgICAgCSAgICAgICAgCisgICAgICAgIAl9CisgICAgCV1dPgorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iZG9EZWxldGVGcm9tRG9jdW1lbnRzQmFyIiBhcmdzPSJpdGVtUmVmTmFtZSI+CisgICAgCXZhciBkb2NUb29sYmFyID0gdGhpcy5nZXREb2N1bWVudFRvb2xCYXIoKTsKKyAgICAJZG9jVG9vbGJhci5yZW1vdmVEb2N1bWVudChpdGVtUmVmTmFtZSk7CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJjbGVhckRvY3VtZW50c0JhciI+CisgICAgCXZhciBkb2NUb29sYmFyID0gdGhpcy5nZXREb2N1bWVudFRvb2xCYXIoKTsKKyAgICAJZG9jVG9vbGJhci5jbGVhckRvY3VtZW50c0JhcigpOworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0ic2VuZEN1cnJlbnRTV0ZPYmplY3QiIGFyZ3M9Im9ialJlZiI+CisJCTwhW0NEQVRBWworICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInNlbmRDdXJyZW50U1dGT2JqZWN0IDo6ICIsb2JqUmVmLG9ialJlZi5uYW1lKTsKKyAgICAgICAgICAgIHZhciBvYmpOYW1lID0gb2JqUmVmLm5hbWU7CisgICAgICAgICAgICBmb3IgKHZhciBlZz0wO2VnPHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3QubGVuZ3RoO2VnKyspeworICAgICAgICAgICAgICAgIGlmICh0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXVt0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXS5sZW5ndGgtMV09PW9iak5hbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8vL0RlYnVnLndyaXRlKCJGb3VuZCBPYmplY3Q6ICIsdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ10pOworICAgICAgICAgICAgICAgICAgICB2YXIgc2VuZFNsaWRlT2JqZWN0VXBkYXRlID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXVs4XSAhPSBvYmpSZWYuc2xpZGVOdW1iZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgCXNlbmRTbGlkZU9iamVjdFVwZGF0ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ11bOF0gPSBvYmpSZWYuc2xpZGVOdW1iZXI7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddWzldID0gb2JqUmVmLl9zd2ZWaWV3Lng7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddWzEwXSA9IG9ialJlZi5fc3dmVmlldy55OworICAgICAgICAgICAgICAgICAgICB0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXVsxMV0gPSBvYmpSZWYuX3N3ZlZpZXcud2lkdGg7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddWzEyXSA9IG9ialJlZi5fc3dmVmlldy5oZWlnaHQ7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddWzEzXSA9IG9ialJlZi56b29tbGV2ZWw7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddWzE2XSA9IG9ialJlZi5jdXJyZW50em9vbUZhY3RvcjsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ11bMTldID0gb2JqUmVmLmZ1bGxGaXQ7CisgICAgICAgICAgICAgICAgICAgIHZhciBuZXdBID0gdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ107CisgICAgICAgICAgICAgICAgICAgIGlmIChuZXdBWzBdPT0ncGFpbnQnKSBuZXdBWzFdID0gbmV3IEFycmF5KCk7CQkJCQorICAgICAgICAgICAgICAgICAgICB0aGlzLm9uc2hhcmVkTWVzc2FnZSgnc3dmJyxuZXdBKTsJCisgICAgICAgICAgICAgICAgICAgIGlmIChzZW5kU2xpZGVPYmplY3RVcGRhdGUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlT2JqZWN0c1RvU2xpZGVOdW1iZXIodGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ10pOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0JCisJCV1dPgorCTwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0icmVtb3RlT2JqZWN0VXBkYXRlIiBhcmdzPSJsYXN0YWN0aW9uT2JqZWN0Ij4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgIAorICAgICAgICAgICAgdmFyIG9iaiA9IHRoaXMuZ2V0T2JqZWN0QnlOYW1lKGxhc3RhY3Rpb25PYmplY3RbbGFzdGFjdGlvbk9iamVjdC5sZW5ndGgtMV0pOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgicmVtb3RlT2JqZWN0VXBkYXRlIDo6ICIsb2JqLmZ1bGxGaXQpOworICAgICAgICAgICAgb2JqLl9zd2ZWaWV3LmRvU2VuZENoYW5nZVZhbHVlID0gZmFsc2U7CisgICAgICAgICAgICB2YXIgc2VuZFNsaWRlT2JqZWN0VXBkYXRlID0gZmFsc2U7CisgICAgICAgICAgICBpZiAob2JqLnNsaWRlTnVtYmVyICE9IGxhc3RhY3Rpb25PYmplY3RbOF0pIHsKKyAgICAgICAgICAgIAlzZW5kU2xpZGVPYmplY3RVcGRhdGUgPSB0cnVlOworICAgICAgICAgICAgfQorCQkJb2JqLnNsaWRlTnVtYmVyID0gbGFzdGFjdGlvbk9iamVjdFs4XTsKKwkJCW9iai5fc3dmVmlldy5zZXRBdHRyaWJ1dGUoJ3gnLGxhc3RhY3Rpb25PYmplY3RbOV0pOworCQkJb2JqLl9zd2ZWaWV3LnNldEF0dHJpYnV0ZSgneScsbGFzdGFjdGlvbk9iamVjdFsxMF0pOworCQkJb2JqLl9zd2ZWaWV3LnNldEF0dHJpYnV0ZSgnd2lkdGgnLGxhc3RhY3Rpb25PYmplY3RbMTFdKTsKKyAgICAgICAgICAgIG9iai5fc3dmVmlldy5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsbGFzdGFjdGlvbk9iamVjdFsxMl0pOworICAgICAgICAgICAgLy9vYmouem9vbWxldmVsID0gbGFzdGFjdGlvbk9iamVjdFsxM107CisgICAgICAgICAgICAvL29iai5jdXJyZW50em9vbUZhY3RvciA9IGxhc3RhY3Rpb25PYmplY3RbMTZdOworICAgICAgICAgICAgb2JqLmZ1bGxGaXQgPSBsYXN0YWN0aW9uT2JqZWN0WzE5XTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIkRPIGluaXRpYWxMb2FkRnVsbEZpdCA/PyAiLG9iai5mdWxsRml0KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKG9iai5mdWxsRml0KSB7CisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIkRPIGluaXRpYWxMb2FkRnVsbEZpdCAhISAiKTsKKyAgICAgICAgICAgICAgICBvYmouX3N3ZlZpZXcuaW5pdGlhbExvYWRGdWxsRml0KCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIG9iai5fc3dmVmlldy5zZXRBdHRyaWJ1dGUoJ2ZyYW1lJyxvYmouc2xpZGVOdW1iZXIpOworICAgICAgICAgICAgb2JqLl9zd2ZWaWV3LmRvU2VuZENoYW5nZVZhbHVlID0gdHJ1ZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5kb1VwZGF0ZURvY3VtZW50VG9vbEJhckJ5UGFydGljaXBhbnQob2JqLm5hbWUpOworICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLnJlbW90ZVVwZGF0ZUJhc2VPYmplY3RMaXN0KGxhc3RhY3Rpb25PYmplY3QpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoc2VuZFNsaWRlT2JqZWN0VXBkYXRlKSB7CisgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVPYmplY3RzVG9TbGlkZU51bWJlcihsYXN0YWN0aW9uT2JqZWN0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJyZW1vdGVVcGRhdGVCYXNlT2JqZWN0TGlzdCIgYXJncz0iYWN0aW9uT2JqZWN0Ij4KKwkJPCFbQ0RBVEFbCisgICAgICAgICAgICAvLy8vRGVidWcud3JpdGUoInJlbW90ZVVwZGF0ZUJhc2VPYmplY3RMaXN0IDogIixhY3Rpb25PYmplY3QpOworICAgICAgICAgICAgZm9yICh2YXIgZWc9MDtlZzx0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0Lmxlbmd0aDtlZysrKXsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ11bdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ10ubGVuZ3RoLTFdPT1hY3Rpb25PYmplY3RbYWN0aW9uT2JqZWN0Lmxlbmd0aC0xXSkgeworICAgICAgICAgICAgICAgICAgICB0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXSA9IGFjdGlvbk9iamVjdDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQkKKwkJXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgCisgICAgCisgICAgCisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJwbGF5VmlkZW9TeW5jZWQiIGFyZ3M9ImZpbGVFeHBsb3Jlckl0ZW1JZCxmaWxlTmFtZSxmbHZfd2lkdGgsZmx2X2hlaWdodCI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJwbGF5VmlkZW9TeW5jZWQgOiAiLGZpbGVFeHBsb3Jlckl0ZW1JZCxmaWxlTmFtZSxmbHZfd2lkdGgsZmx2X2hlaWdodCk7CisgICAgICAgIAorICAgICAgICAgICAgdmFyIHROYW1lID0gJ2ZsdicrdGhpcy5nZXRDb3VudGVyKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuY3VycmVudGxheWVyID0gbmV3IGx6LndoaXRlYm9hcmRWaWRlb1BsYXllcih0aGlzLHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTp0TmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUV4cGxvcmVySXRlbUlkOmZpbGVFeHBsb3Jlckl0ZW1JZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ZmlsZU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRJbml0OnRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsdl93aWR0aDpmbHZfd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsdl9oZWlnaHQ6Zmx2X2hlaWdodAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5sYXllcnMucHVzaCh0aGlzLmN1cnJlbnRsYXllcik7ICAKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJzZW5kTmV3VmlkZW9SZW1vdGUiIGFyZ3M9InJlZk9iaiI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzZW5kTmV3VmlkZW9SZW1vdGUgOiAiLHJlZk9iai5maWxlRXhwbG9yZXJJdGVtSWQscmVmT2JqLnRpdGxlKTsKKyAgICAgICAgCisgICAgICAgICAgICB0aGlzLmZsdnJlZ2lzdGVyRmluYWwocmVmT2JqLm5hbWUscmVmT2JqLngscmVmT2JqLnkscmVmT2JqLndpZHRoLHJlZk9iai5oZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZPYmouZmlsZUV4cGxvcmVySXRlbUlkLHJlZk9iai50aXRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhbHNlLCAvL2lzUGxheWluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmT2JqLmZsdl93aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZk9iai5mbHZfaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXRaSW5kZXgoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIAorICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImZsdnJlZ2lzdGVyRmluYWwiIGFyZ3M9Im5ld05hbWUseCx5LHdpZHRoLGhlaWdodCxmaWxlRXhwbG9yZXJJdGVtSWQsZmlsZU5hbWUsaXNQbGF5aW5nLGZsdl93aWR0aCxmbHZfaGVpZ2h0LHpJbmRleCI+CisgICAgICAgIHZhciBhY3Rpb25PYmplY3QgPSBuZXcgQXJyYXkoKTsKKyAgICAgICAgYWN0aW9uT2JqZWN0WzBdID0gJ2Zsdic7CisgICAgICAgIGFjdGlvbk9iamVjdFsxXSA9IGZpbGVFeHBsb3Jlckl0ZW1JZDsKKyAgICAgICAgYWN0aW9uT2JqZWN0WzJdID0gZmlsZU5hbWU7CisgICAgICAgIGFjdGlvbk9iamVjdFszXSA9IGlzUGxheWluZzsKKyAgICAgICAgYWN0aW9uT2JqZWN0WzRdID0gZmx2X3dpZHRoOyAKKyAgICAgICAgYWN0aW9uT2JqZWN0WzVdID0gZmx2X2hlaWdodDsgICAKKyAgICAgICAgYWN0aW9uT2JqZWN0WzZdID0gekluZGV4Oy8vLTgKKyAgICAgICAgYWN0aW9uT2JqZWN0WzddID0gbnVsbDsvLy03CisgICAgICAgIGFjdGlvbk9iamVjdFs4XSA9IHRoaXMuY291bnRlcjsvLy02CisgICAgICAgIGFjdGlvbk9iamVjdFs5XSA9IHg7Ly8tNQorICAgICAgICBhY3Rpb25PYmplY3RbMTBdID0geTsvLy00CisgICAgICAgIGFjdGlvbk9iamVjdFsxMV0gPSB3aWR0aDsvLy0zCisgICAgICAgIGFjdGlvbk9iamVjdFsxMl0gPSBoZWlnaHQ7Ly8tMgorICAgICAgICBhY3Rpb25PYmplY3RbMTNdID0gbmV3TmFtZTsvLy0xCisgICAgICAgIHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3QucHVzaChhY3Rpb25PYmplY3QpOyAgICAgICAKKyAgICAgICAgdGhpcy5vbnNoYXJlZE1lc3NhZ2UoJ2RyYXcnLGFjdGlvbk9iamVjdCk7CisgICAgPC9tZXRob2Q+ICAgICAKKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImRyYXdGbHZUb0hpc3RvcnkiIGFyZ3M9Imxhc3RBY3Rpb25PYmplY3QscGFyZW50VmlldyI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJkcmF3Rmx2VG9IaXN0b3J5IFBMQVkgOjogIixsYXN0QWN0aW9uT2JqZWN0WzNdKTsKKyAgICAgICAgCisgICAgICAgICAgICB0aGlzLmN1cnJlbnRsYXllciA9IG5ldyBsei53aGl0ZWJvYXJkVmlkZW9QbGF5ZXIodGhpcyx7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6bGFzdEFjdGlvbk9iamVjdFtsYXN0QWN0aW9uT2JqZWN0Lmxlbmd0aC0xXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUV4cGxvcmVySXRlbUlkOmxhc3RBY3Rpb25PYmplY3RbMV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOmxhc3RBY3Rpb25PYmplY3RbMl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsdl93aWR0aDpsYXN0QWN0aW9uT2JqZWN0WzRdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbHZfaGVpZ2h0Omxhc3RBY3Rpb25PYmplY3RbNV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGxhc3RBY3Rpb25PYmplY3RbM10pIHsKKyAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRsYXllci5wbGF5UmVtb3RlKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLmxheWVycy5wdXNoKHRoaXMuY3VycmVudGxheWVyKTsgIAorICAgICAgICAgICAgCisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorICAgIDwhLS0gCisgICAgIHg6bGFzdEFjdGlvbk9iamVjdFtsYXN0QWN0aW9uT2JqZWN0Lmxlbmd0aC01XSwKKyAgICAgeTpsYXN0QWN0aW9uT2JqZWN0W2xhc3RBY3Rpb25PYmplY3QubGVuZ3RoLTRdLAorICAgICB3aWR0aDpsYXN0QWN0aW9uT2JqZWN0W2xhc3RBY3Rpb25PYmplY3QubGVuZ3RoLTNdLAorICAgICBoZWlnaHQ6bGFzdEFjdGlvbk9iamVjdFtsYXN0QWN0aW9uT2JqZWN0Lmxlbmd0aC0yXQorICAgICAtLT4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InBsYXlGTFYiIGFyZ3M9InJlZk9iaixwbGF5Ij4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAodmFyIGVnPTA7ZWc8dGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdC5sZW5ndGg7ZWcrKyl7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddW3RoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddLmxlbmd0aC0xXT09cmVmT2JqLm5hbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8vL0RlYnVnLndyaXRlKCJGb3VuZCBPYmplY3Q6ICIsdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ10pOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ11bM10gPSBwbGF5OworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInBsYXlGTFYgOjogIix0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXSk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMub25zaGFyZWRNZXNzYWdlKCdmbHYnLHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InBsYXlGTFZSZW1vdGUiIGFyZ3M9ImFjdGlvbk9iamVjdCI+CisKKyAgICAgICAgdmFyIHRPYmogPSB0aGlzLmdldE9iamVjdEJ5TmFtZShhY3Rpb25PYmplY3RbYWN0aW9uT2JqZWN0Lmxlbmd0aC0xXSk7CisgICAgICAgIAorICAgICAgICBpZiAoYWN0aW9uT2JqZWN0WzNdKSB7CisgICAgICAgICAgICB0T2JqLnBsYXlSZW1vdGUoKTsKKyAgICAgICAgfQorICAgICAgICBpZiAoIWFjdGlvbk9iamVjdFszXSkgeworICAgICAgICAgICAgdE9iai5zdG9wUmVtb3RlKCk7CisgICAgICAgIH0KKworICAgIDwvbWV0aG9kPgorCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9iYXNlL2Jhc2VEcmF3U2F2ZS5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9iYXNlL2Jhc2VEcmF3U2F2ZS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzliODk0YwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL2Jhc2UvYmFzZURyYXdTYXZlLmx6eApAQCAtMCwwICsxLDIzMyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9ImJhc2VEcmF3U2F2ZSIgZXh0ZW5kcz0iYmFzZURyYXdJbWFnZSIgPgorCQorCTwhLS0gc2F2ZWluZyBhIGZpbGUgdG8gYSB3bWwgT2JqZWN0IC0tPgorCTxhdHRyaWJ1dGUgbmFtZT0ic2F2ZWZpbGVOYW1lIiB2YWx1ZT0ic2F2ZWZpbGVOYW1lMSIgdHlwZT0ic3RyaW5nIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0iZmlsZURhdGEiIHZhbHVlPSJudWxsIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0ic2F2ZWZpbGVEYXRhV2luUmVmIiB2YWx1ZT0ibnVsbCIgLz4KKwkKKwk8IS0tIGxvYWRpbmcgYSBmaWxlIGZyb20gYSB3bWwgT2JqZWN0CisJPGF0dHJpYnV0ZSBuYW1lPSJsb2FkZmlsZURhdGEiIHZhbHVlPSJudWxsIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0ibG9hZGZpbGVEYXRhSW5kZXgiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJsb2FkZmlsZURhdGFXaW5SZWYiIHZhbHVlPSJudWxsIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0ibG9hZE9iamVjdFRpbWVyIiB2YWx1ZT0ibnVsbCIgLz4KKwk8YXR0cmlidXRlIG5hbWU9ImxvYWRtZXNzYWdlSWQiIHZhbHVlPSIyMDYiIHR5cGU9Im51bWJlciIgLz4KKwk8YXR0cmlidXRlIG5hbWU9InN5bmNtZXNzYWdlSWQiIHZhbHVlPSIyMDciIHR5cGU9Im51bWJlciIgLz4KKwk8YXR0cmlidXRlIG5hbWU9Il9sb2FkbWVzc2FnZVR4dCIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0iX2xvYWRpbmdVc2VycyIgdmFsdWU9Im51bGwiIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJ3bWxmaWxlTmFtZSIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0id21scm9vbSIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0id21sZG9tYWluIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJ3bWxzcHJlYWROZXdzIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJ3bWxMb2FkaW5nQ29tcGxldGVNZXNzYWdlIiB2YWx1ZT0ibnVsbCIgLz4KKwk8YXR0cmlidXRlIG5hbWU9InN5bmNjaGVja1RpbWUiIHZhbHVlPSIxMDAwIiB0eXBlPSJudW1iZXIiIC8+CisJIC0tPgorCQorCTwhLS0gbG9hZGluZyBhbGwgc3RhZ2Ugb2JqZWN0cyBvbiBpbml0IC0tPgorCTxhdHRyaWJ1dGUgbmFtZT0iaXNJbml0TG9hZGVyIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgCisgICAgPCEtLSBFeHBvcnQgSW1hZ2UgVHlwZSAtLT4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImV4cG9ydFR5cGUiIHZhbHVlPSJzdmciIHR5cGU9InN0cmluZyIgLz4KKyAgICAKKwk8IS0tIFZhcnMgZm9yIHN0b3Jpbmcgc2NyZWVuc2hvdAorCQlyZW1vdmVkIGNhdXNlIG9mIHBlcmZvcm1hbmNlIGFuZCAKKwkJbm8gcGhwIGJhY2tlbmQgYXZhaWxpYmxlIGFueW1vcmUgLS0+CQkKKyAgICA8YXR0cmlidXRlIG5hbWU9Ik1DUmVmIiB2YWx1ZT0ibnVsbCIgLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9InBpeGVsQXJyYXkiIHZhbHVlPSJudWxsIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0ic25hcCIgdmFsdWU9Im51bGwiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJicERhdGEiIHZhbHVlPSJudWxsIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iTWF0cml4VmFsdWUiIHZhbHVlPSJudWxsIiAvPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0idyIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImgiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJhIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0icGl4ZWxfZGVsIiB2YWx1ZT0iJG9uY2V7IG5ldyBMekRlbGVnYXRlKHRoaXMsICdidWlsZFBpeGVsQXJyYXknICl9IiAvPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0ic2VuZHBpY3R1cmVOYW1lIiB2YWx1ZT0ic25hcGNob3QuanBnIiB0eXBlPSJzdHJpbmciIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpc1NlbmRQYXJ0QXJyYXkiIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0iaXNSZWNvcmRpbmdMb2FkIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpc2luaXRSZWNvcmRpbmdMb2FkIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisJCisJPCEtLSBTdGFydCBhbmQgU3RvcCBFdmVudCB3aWxsIGJlIHRocm93biBieSB0aGUgbG9hZGluZyBwcm9jZXNzIC0tPgorCTxldmVudCBuYW1lPSJvbndtbGxvYWRTdGFydCIgLz4KKwk8ZXZlbnQgbmFtZT0ib253bWxsb2FkU3RvcCIgLz4KKyAgICAKKyAgICA8IS0tIEltYWdlcyB3aWxsIGJlIHNlbmQgaW4gcGFja2FnZXMgCisgICAgCXNvIHRpbWVvdXQgaXMgd29ya2Fyb3VuZAorICAgICAtLT4KKyAgICA8YXR0cmlidXRlIG5hbWU9InNlbmRQYXJ0VVJMIiB2YWx1ZT0iaHR0cDovL2hvc3QvY3JlYXRlaW1hZ2Vmcm9tYml0bWFwLnBocCIgdHlwZT0ic3RyaW5nIiAvPgorICAgIAorICAgIDwhLS0gY3JlYXRlIEltYWdlIGZyb20gd2hvbGUgQXJyYXkKKyAgICAJTGFyZ2UgSW1hZ2VzIHdpbGwgbm90IGJlIHJlbmRlcmVkIGNvcnJlY3RseSBoZXJlIGNhdXNlCisgICAgCXRoZXJlIGNhbiBiZSBhIHRpbWVvdXQgLS0+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJzZW5kVVJMIiB2YWx1ZT0iaHR0cDovL2hvc3QvY3JlYXRlaW1hZ2Vmcm9tYml0bWFwLnBocCIgdHlwZT0ic3RyaW5nIiAvPgorICAgIAorICAgIDxldmVudCBuYW1lPSJvbnByb2dyZXNzIiAvPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iY2F0Y2hTbmFwc2hvdCI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICB0aGlzLk1DUmVmID0gdGhpcy5nZXREaXNwbGF5T2JqZWN0KCk7CisgICAgICAgIC8vRGVidWcud3JpdGUoInRoaXMuTUNSZWY6ICIsdGhpcy5NQ1JlZik7CisgICAgICAgIHRoaXMuc25hcCA9IG5ldyBmbGFzaC5kaXNwbGF5LkJpdG1hcERhdGEodGhpcy53aWR0aCwgdGhpcy5oZWlnaHQsIGZhbHNlLCAwICk7CisgICAgICAgIAorICAgICAgICAvL01hdHJpeCB0byBzY2FsZSB0aGUgbmV3IGltYWdlCisgICAgICAgIHRoaXMuTWF0cml4VmFsdWUgPSBuZXcgZmxhc2guZ2VvbS5NYXRyaXgoKTsKKyAgICAgICAgdGhpcy5NYXRyaXhWYWx1ZS5zY2FsZSgxLCAxKTsKKyAgICAgICAgLy9Db3B5IHZpZGVvIGltYWdlCisgICAgICAgIHRoaXMuc25hcC5kcmF3KHRoaXMuTUNSZWYsICB0aGlzLk1hdHJpeFZhbHVlKTsgCisgICAgICAgIAorICAgICAgICB0aGlzLmJwRGF0YSA9IHRoaXMuc25hcC5nZXRQaXhlbHModGhpcy5zbmFwLnJlY3RhbmdsZSk7CisgICAgICAgIAorICAgICAgICB0aGlzLncgPSB0aGlzLndpZHRoOworICAgICAgICB0aGlzLmggPSB0aGlzLmhlaWdodDsKKyAgICAgICAgdGhpcy5hID0gMDsKKyAgICAgICAgdGhpcy5waXhlbEFycmF5ID0gbmV3IEFycmF5KCk7CisgICAgICAgIAorICAgICAgICAvL3BpeGVsX2RlbC5yZWdpc3Rlcihsei5JZGxlLCdvbmlkbGUnKTsKKyAgICAgICAgdGhpcy5zYXZlQXNJbWFnZS5kb0NhbGwoKTsKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisJICAJPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0ic2F2ZUFzSW1hZ2UiIGZ1bmNuYW1lPSJmaWxlc2VydmljZS5zYXZlQXNJbWFnZSIgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gICAKKwkgIAkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50LmJwRGF0YTs8L21ldGhvZD48L25ldHBhcmFtPgorCSAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CQorCSAgICAgICAgCS8vRGVidWcud3JpdGUoIiAgc2F2ZUFzSW1hZ2U6ICIsdmFsdWUpOyAgICAgICAgICAgICAgCSAgICAgICAgICAJCQkJCisJICAgICAgICA8L2hhbmRsZXI+CQorCSAgCTwvbmV0UmVtb3RlQ2FsbEhpYj4gICAgIAorICAgIAorICAgIDxtZXRob2QgbmFtZT0iYnVpbGRQaXhlbEFycmF5IiBhcmdzPSJpdGVtIj4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgIAorICAgICAgICBmb3IodmFyIGI9MDsgYjw9dGhpcy5oOyBiKyspeworICAgICAgICAgICAgdmFyIHRtcCA9IHRoaXMuc25hcC5nZXRQaXhlbChhLCBiKTsKKyAgICAgICAgICAgIHRoaXMucGl4ZWxBcnJheS5wdXNoKHRtcC50b1N0cmluZygxNikpOworICAgICAgICB9CisgICAgICAgIHZhciBwZXJjID0gIE1hdGgucm91bmQoKHRoaXMuYSoxMDApL3RoaXMudyk7CisgICAgICAgIGlmICh0aGlzLm9ucHJvZ3Jlc3MpIHRoaXMub25wcm9ncmVzcy5zZW5kRXZlbnQocGVyYyk7ICAgICAgICAgICAgCisgICAgICAgIHRoaXMuYSsrCisgICAgICAgIGlmKHRoaXMuYT50aGlzLncpeyAKKyAgICAgICAgICAgIC8vRmluaXNoIGNhcHR1cmluZworICAgICAgICAgICAgaWYgKHRoaXMuaXNTZW5kUGFydEFycmF5KXsKKyAgICAgICAgICAgIAl0aGlzLnNlbmRQSFBEYXRhKHRoaXMucGl4ZWxBcnJheSwgdGhpcy5oLCB0aGlzLncpOworICAgICAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAgICB0aGlzLnNlbmRQSFBEYXRhKHRoaXMucGl4ZWxBcnJheSwgdGhpcy5oLCB0aGlzLncpOworCSAgICAgICAgfQorICAgICAgICAgICAgLy9mcmVlIG1lbW9yeQorICAgICAgICAgICAgdGhpcy5zbmFwLmRpc3Bvc2UoKTsKKyAgICAgICAgICAgIHBpeGVsX2RlbC51bnJlZ2lzdGVyQWxsKCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0ic2VuZFBIUERhdGEiIGFyZ3M9InBpeCxwaXhILHBpeFciPgorICAgICAgICAvL0RlYnVnLndyaXRlKCIjIyMgc2VuZFBIUERhdGE6ICIscGl4LHBpeEgscGl4Vyk7CisgICAgICAgIDwhW0NEQVRBWworCSAgICAgICAgLy9DcmVhdGUgdGhlIExvYWRWYXJzIG9iamVjdCBhbmQgcGFzcyBkYXRhIHRvIFBIUCBzY3JpcHQKKwkgICAgICAgIHZhciBvdXRwdXQgPSBuZXcgTG9hZFZhcnMoKTsKKwkgICAgICAgIG91dHB1dC5pbWcgPSBwaXgudG9TdHJpbmcoKTsKKwkgICAgICAgIG91dHB1dC5oZWlnaHQgPSBwaXhIOworCSAgICAgICAgb3V0cHV0LndpZHRoID0gcGl4VzsKKwkgICAgICAgIC8vVGhlIHBhZ2UgKGFuZCB0aGlzIG1vdmllIGl0c2VsZikgc2hvdWxkIGJlIGluIGEgc2VydmVyIHRvIHdvcmsKKwkgICAgICAgIG91dHB1dC5zZW5kKHRoaXMuc2VuZFVSTCwgIm91dHB1dCIsICJQT1NUIik7CisgICAgICAgIF1dPiAKKyAgICA8L21ldGhvZD4KKwkKKwk8IS0tIHNhdmluZyBhbGwgb2JqZWN0IG9uIHdoaXRlQm9hcmQgYXMgd21sLWZpbGUgLS0+CisJCisJPGhhbmRsZXIgbmFtZT0ic2VuZE9iamVjdCI+CisJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzZW5kT2JqZWN0IGRvU2F2ZTogIix0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0KTsKKwkJdGhpcy5maWxlRGF0YSA9IHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3Q7CisJCXRoaXMuc2F2ZWZpbGVEYXRhV2luUmVmID0gbmV3IGx6LnNhdmVBc1dtbFdpbmRvdyhjYW52YXMubWFpbl9jb250ZW50Ll9jb250ZW50LmlubmVyLHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZk9iajp0aGlzfSk7CisJPC9oYW5kbGVyPgorCQorCTxtZXRob2QgbmFtZT0iY29uZmlybVNhdmVBc09iamVjdCIgYXJncz0iZmlsZU5hbWUiID4KKwkJdGhpcy5zYXZlZmlsZU5hbWUgPSBmaWxlTmFtZTsKKwkJdGhpcy5zYXZlQXNPYmplY3QuZG9DYWxsKCk7CisJPC9tZXRob2Q+CisgICAgCisgIAk8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJzYXZlQXNPYmplY3QiIGZ1bmNuYW1lPSJmaWxlc2VydmljZS5zYXZlQXNPYmplY3QiIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiA+ICAgCisgIAkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gY2FudmFzLnNlc3Npb25JZDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBoaWIuY3VycmVudHJvb21pZDs8L21ldGhvZD48L25ldHBhcmFtPiAgICAgICAgCQkJCSAgCisJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIHBhcmVudC5wYXJlbnQuc2F2ZWZpbGVOYW1lOyA8L21ldGhvZD48L25ldHBhcmFtPgorCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBwYXJlbnQucGFyZW50LmZpbGVEYXRhOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgkKKwkJCTwhW0NEQVRBWworCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCIgIHNhdmVBc0ltYWdlOiAiLHZhbHVlKTsgICAKKwkJCSAgICBpZiAodmFsdWU+MCl7CisJCQkJCXBhcmVudC5zYXZlZmlsZURhdGFXaW5SZWYuY2xvc2UoKTsKKwkJCQkJY2FudmFzLmN1cnJlbnRGaWxlRXhwbG9yZXIubG9hZEZpbGVzKCk7CisJCQkJfSBlbHNlIHsKKwkJCQkJbmV3IGx6LnJwY0Vycm9yRGlhbG9nKGNhbnZhcy5tYWluX2NvbnRlbnQuX2NvbnRlbnQuaW5uZXIse2Vycm9yaWQ6dmFsdWV9KTsKKwkJCQl9CisJCQldXT4gIAkgICAgICAgICAgCQkJCQorICAgICAgICA8L2hhbmRsZXI+CQorICAJPC9uZXRSZW1vdGVDYWxsSGliPiAgCisgICAgICAgIAorICAgIDxtZXRob2QgbmFtZT0iY29uZmlybVNhdmVBc0ltYWdlVHlwZUV4cG9ydCIgYXJncz0iZmlsZU5hbWUsdHlwZSI+CisgICAgICAgIHRoaXMuc2F2ZWZpbGVOYW1lID0gZmlsZU5hbWU7CisgICAgICAgIHRoaXMuZXhwb3J0VHlwZSA9IHR5cGU7CisgICAgICAgIHRoaXMuZmlsZURhdGEgPSB0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0OworICAgICAgICB0aGlzLmFkZFByaW50TGlzdC5kb0NhbGwoKTsKKyAgICA8L21ldGhvZD4gCisgICAgIAorICAgIDxtZXRob2QgbmFtZT0iY29uZmlybVNhdmVBc0ltYWdlRXhwb3J0IiBhcmdzPSJmaWxlTmFtZSI+CisgICAgICAgIHRoaXMuc2F2ZWZpbGVOYW1lID0gZmlsZU5hbWU7CisgICAgICAgIHRoaXMuZXhwb3J0VHlwZSA9ICJzdmciOworICAgICAgICB0aGlzLmZpbGVEYXRhID0gdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdDsKKyAgICAgICAgdGhpcy5hZGRQcmludExpc3QuZG9DYWxsKCk7CisgICAgPC9tZXRob2Q+CQorICAgIAorICAgICAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJhZGRQcmludExpc3QiIGZ1bmNuYW1lPSJwcmludHNlcnZpY2UuYWRkUHJpbnRMaXN0IiByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAKKyAgICAgICAgICAKKyAgICAgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gY2FudmFzLnNlc3Npb25JZDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgICAgIDwhLS0gICAgICAgICAgICAgCisgICAgICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQuc2F2ZWZpbGVOYW1lOyA8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICAgICAgIC0tPgorICAgICAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50LmZpbGVEYXRhOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQud2lkdGg7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC5oZWlnaHQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPiAgICAKKyAgICAgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImFkZFByaW50TGlzdDogIix2YWx1ZSk7ICAgCisgICAgICAgICAgICAgICAgICAgIHZhciBkb3dubG9hZHVybCA9IGNhbnZhcy5nZXRVcmwoKSsnRXhwb3J0VG9JbWFnZT8nICsKKwkJCQkJICAgICAgICAgICAgICAgICAgICAnZmlsZU5hbWU9JyArIHBhcmVudC5zYXZlZmlsZU5hbWUgKworCQkJCQkgICAgICAgICAgICAgICAgICAgICcmaGFzaD0nK3ZhbHVlICsgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyZleHBvcnRUeXBlPScgKyBwYXJlbnQuZXhwb3J0VHlwZSArCisJCQkJCSAgICAgICAgICAgICAgICAgICAgJyZzaWQ9JytjYW52YXMuc2Vzc2lvbklkOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBsei5Ccm93c2VyLmxvYWRVUkwoZG93bmxvYWR1cmwsIl9CTEFOSyIpOworICAgICAgICAgICAgICAgIF1dPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICA8L2hhbmRsZXI+ICAKKyAgICAgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAgICAgCisgICAgCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9iYXNlL2Jhc2VEcmF3V29yZHMubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvYmFzZS9iYXNlRHJhd1dvcmRzLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZWEyN2MzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvYmFzZS9iYXNlRHJhd1dvcmRzLmx6eApAQCAtMCwwICsxLDE5NyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9InN0eWxlYWJsZUlucHV0IiBleHRlbmRzPSJjdXN0b21JbnB1dHRleHQiIHg9IjEiIHk9IjEiIGJnY29sb3I9IjB4RkZGRkZGIiBtdWx0aWxpbmU9InRydWUiCisJCXdpZHRoPSIkeyBwYXJlbnQud2lkdGgtMiB9IiBoZWlnaHQ9IiR7IHBhcmVudC5oZWlnaHQtMiB9IiA+CisKKwk8YXR0cmlidXRlIG5hbWU9InN0YXJ0QWRqdXN0SGlnaHQiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9InNldEZvY3VzT25Jbml0IiB2YWx1ZT0idHJ1ZSIgdHlwZT0iYm9vbGVhbiIgLz4KKwkKKwk8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorCQlpZiAodGhpcy5zZXRGb2N1c09uSW5pdCkgeworCQkgICAgbHouRm9jdXMuc2V0Rm9jdXModGhpcyk7CQorCQl9CisJPC9oYW5kbGVyPgorCTxoYW5kbGVyIG5hbWU9Im9udGV4dCI+CisJPCFbQ0RBVEFbCisJCXZhciBnaCA9IHRoaXMuZ2V0VGV4dEhlaWdodCgpOworCQlpZiAoZ2g+MjApIHsKKwkJCWlmIChnaCt0aGlzLmZvbnRzaXplID4gdGhpcy5oZWlnaHQpeworCQkJCXRoaXMuc2V0QXR0cmlidXRlKCJoZWlnaHQiLChnaCt0aGlzLmZvbnRzaXplKSk7CisJCQl9CisJCX0KKwldXT4KKwk8L2hhbmRsZXI+CQorCTxoYW5kbGVyIG5hbWU9Im9ua2V5dXAiIGFyZ3M9ImtleSI+CisgICAgICAgPCFbQ0RBVEFbCisgICAgICAgLy8gMTMgaXMgcmV0dXJuCisgICAgICAgaWYgKChrZXk9PTI3KSB8fCAoa2V5PT0xMykpIHsKKyAgICAgICAJCXRoaXMucGFyZW50LnBhcmVudC5hZGp1c3RIZWlnaHQoKTsKKyAgICAgICB9CisgICAgICAgXV0+CisgICAgPC9oYW5kbGVyPgkKKwk8aGFuZGxlciBuYW1lPSJvbmhlaWdodCI+CisJCWlmICh0aGlzLnN0YXJ0QWRqdXN0SGlnaHQpIHRoaXMucGFyZW50LnBhcmVudC5hZGp1c3RIZWlnaHQoKTsKKwk8L2hhbmRsZXI+CisJCisJPG1ldGhvZCBuYW1lPSJnZXRVUkxFbmNvZGVkVGV4dCI+CisJCTwhW0NEQVRBWworCQkKKwkJICAgIHZhciB0U3RyaW5nID0gdGhpcy5nZXRUZXh0KCk7CisJCSAgICAKKwkJICAgIC8vdFN0cmluZyA9IHRTdHJpbmcucmVwbGFjZSgiPCIsIiYjNjA7Iik7CisJCSAgICAvL3RTdHJpbmcgPSB0U3RyaW5nLnJlcGxhY2UoIj4iLCImIzYyOyIpOworCQkgICAgCisJCSAgICByZXR1cm4gdFN0cmluZzsKKwkJCisJCV1dPgorCTwvbWV0aG9kPgorCQorPC9jbGFzcz4KKworPGNsYXNzIG5hbWU9ImJhc2VEcmF3V29yZHMiIGV4dGVuZHM9InZpZXciIGJnY29sb3I9ImJsYWNrIiAKKwl3aWR0aD0iMTIwIiBoZWlnaHQ9IjQwIj4KKwkKKwk8YXR0cmlidXRlIG5hbWU9InJlZk9iaiIgdmFsdWU9Im51bGwiIC8+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJpbml0dGV4dCIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0iaW5pdFRleHROYW1lIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisKKwk8bWV0aG9kIG5hbWU9ImRyYXd0b0FycmF5Ij4KKwkJPCFbQ0RBVEFbCisJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJkcmF3dG9BcnJheSIpOworCQlpZiAodGhpcy5fdGV4dHZpZXcuX3RleHR2aWV3LmdldFVSTEVuY29kZWRUZXh0KCkubGVuZ3RoIT0wICYmIHRoaXMuaW5pdHRleHQubGVuZ3RoPT0wKXsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy92YXIgc2NhbGUgPSB0aGlzLnBhcmVudC5fZHJhd2FyZWEud2lkdGggLyB0aGlzLnBhcmVudC5fZHJhd2FyZWEuaW5pdFc7CisJCSAgICB2YXIgeSA9ICggdGhpcy5nZXRBdHRyaWJ1dGVSZWxhdGl2ZSgneScsdGhpcy5yZWZPYmopLXRoaXMucmVmT2JqLnkrMSApOworICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInRoaXMucmVmT2JqLnkgIix0aGlzLnJlZk9iai55KTsKKwkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ0aGlzLngtdGhpcy5yZWZPYmoueC10aGlzLnJlZk9iai5wYXJlbnQueCAiLHkpOworCQkJdmFyIHggPSAoIHRoaXMuZ2V0QXR0cmlidXRlUmVsYXRpdmUoJ3gnLHRoaXMucmVmT2JqKS10aGlzLnJlZk9iai54KzEgKTsKKwkJCQorCQkJaWYoY2FudmFzLl9kcmF3YXJlYS5pc1NuYXBUb0dyaWQpeyAgICAgICAgCQkKKwkgICAgCQkJICAgICAgICAJICAgCisJICAgICAgICAgICAgeCA9IE1hdGgucm91bmQoeC9jYW52YXMuX2RyYXdhcmVhLmdyaWRXaWR0aCkqY2FudmFzLl9kcmF3YXJlYS5ncmlkV2lkdGg7CisJCSAgICAJeSA9IE1hdGgucm91bmQoeS9jYW52YXMuX2RyYXdhcmVhLmdyaWRXaWR0aCkqY2FudmFzLl9kcmF3YXJlYS5ncmlkV2lkdGg7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIH0gCisJCQkKKyAgICAgICAgCXRoaXMucmVmT2JqLmRyYXdUZXh0RmllbGQodGhpcy5fdGV4dHZpZXcuX3RleHR2aWV3LmdldFVSTEVuY29kZWRUZXh0KCksCisgICAgICAgICAgICAgICAgICAgIHRoaXMuX3RleHR2aWV3Ll90ZXh0dmlldy53aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fdGV4dHZpZXcuX3RleHR2aWV3LmhlaWdodCx4LHkpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgfSBlbHNlIGlmICh0aGlzLl90ZXh0dmlldy5fdGV4dHZpZXcuZ2V0VVJMRW5jb2RlZFRleHQoKS5sZW5ndGghPTAgJiYgdGhpcy5pbml0dGV4dC5sZW5ndGghPTApeworICAgICAgICAgICAgCisgICAgICAgIAlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZWRpdCBtb2RpICIsdGhpcy5pbml0VGV4dE5hbWUpOworCQkgICAgdmFyIHkgPSAodGhpcy5nZXRBdHRyaWJ1dGVSZWxhdGl2ZSgneScsdGhpcy5yZWZPYmopLXRoaXMucmVmT2JqLnkrMSk7CisJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidGhpcy54LXRoaXMucmVmT2JqLngtdGhpcy5yZWZPYmoucGFyZW50LnggIix5KTsKKwkJCXZhciB4ID0gKHRoaXMuZ2V0QXR0cmlidXRlUmVsYXRpdmUoJ3gnLHRoaXMucmVmT2JqKS10aGlzLnJlZk9iai54KzEpOworICAgICAgICAgICAgCisJCQlpZihjYW52YXMuX2RyYXdhcmVhLmlzU25hcFRvR3JpZCl7ICAgICAgICAJCQorCSAgICAJCQkgICAgICAgIAkgICAKKwkgICAgICAgICAgICB4ID0gTWF0aC5yb3VuZCh4L2NhbnZhcy5fZHJhd2FyZWEuZ3JpZFdpZHRoKSpjYW52YXMuX2RyYXdhcmVhLmdyaWRXaWR0aDsKKwkJICAgIAl5ID0gTWF0aC5yb3VuZCh5L2NhbnZhcy5fZHJhd2FyZWEuZ3JpZFdpZHRoKSpjYW52YXMuX2RyYXdhcmVhLmdyaWRXaWR0aDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgfSAKKwkJCQorICAgICAgICAJdGhpcy5yZWZPYmouc2V0VGV4dEZpZWxkQnlOYW1lKHRoaXMuaW5pdFRleHROYW1lLAorICAgICAgICAgICAgICAgIHRoaXMuX3RleHR2aWV3Ll90ZXh0dmlldy5nZXRVUkxFbmNvZGVkVGV4dCgpLAorICAgICAgICAgICAgICAgIHRoaXMuX3RleHR2aWV3Ll90ZXh0dmlldy53aWR0aCwKKyAgICAgICAgICAgICAgICB4LHksdGhpcy5fdGV4dHZpZXcuX3RleHR2aWV3LmhlaWdodCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgIH0gZWxzZSB7CisJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidGV4dCBzbWFsbGVyIHRoZW4gMCIsdGhpcy5fdGV4dHZpZXcuX3RleHR2aWV3LmdldFVSTEVuY29kZWRUZXh0KCkpOworCQkJCisJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidGhpcy5ncmlkV2lkdGgiLGNhbnZhcy5fZHJhd2FyZWEuZ3JpZFdpZHRoKTsKKwkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ0aGlzLmlzU25hcFRvR3JpZCIsY2FudmFzLl9kcmF3YXJlYS5pc1NuYXBUb0dyaWQpOworCQl9CisgICAgICAgIHRoaXMuZ2l2ZXVwKCk7CisJCV1dPgorICAgIDwvbWV0aG9kPgorICAgIAorCTxtZXRob2QgbmFtZT0iZ2l2ZXVwIj4KKwkJdGhpcy5yZWZPYmoubGV0dGVyT2JqZWN0RnJlZSh0aGlzKTsKKwkJdGhpcy5kZXN0cm95KCk7CisJPC9tZXRob2Q+CisJICAgIAorCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisJCS8vc3RhcnRBZGp1c3RIaWdodCBpcyBzZXQgdG8gdHJ1ZSBsYXRlciwgY2F1c2Ugb3RoZXJ3aXNlIHVwZGF0ZSAKKwkJLy9FdmVudHMgd291bGQgc2V0IHRoZSBoZWlnaHQgdG8gCisJCS8vdGV4dCBmaWVsZCBkZWZhdWx0IGhlaWdodAorCQl0aGlzLnJlZk9iai5sZXR0ZXJPYmplY3RDbG9zZSh0aGlzKTsKKyAgICAgICAgdmFyIHQgPSBuZXcgbHouc3R5bGVhYmxlSW5wdXQodGhpcy5fdGV4dHZpZXcseworCSAgICAgICAgICAgICAgICBuYW1lOidfdGV4dHZpZXcnLHRleHQ6dGhpcy5pbml0dGV4dCwKKwkgICAgICAgICAgICAgICAgZm9udHN0eWxlOnRoaXMucmVmT2JqLmN1cnJlbnRsYXllcnN0eWxlLAorCSAgICAgICAgICAgICAgICBmb250c2l6ZTp0aGlzLnJlZk9iai5jdXJyZW50bGF5ZXJzaXplLAorCSAgICAgICAgICAgICAgICBmZ2NvbG9yOnRoaXMucmVmT2JqLmN1cnJlbnRsYXllcmxldHRlcgorICAgICAgICAgICAgICAgIH0pOworICAgICAgICAvL2lmICggdGhpcy5pbml0dGV4dC5sZW5ndGg9PTAgKSB0aGlzLnNldEF0dHJpYnV0ZSgnaGVpZ2h0Jyw0MCk7CisJCWlmICggdGhpcy5pbml0dGV4dC5sZW5ndGghPTAgKSB7CisJCSAgICB0aGlzLnJlZk9iai5lZGl0dGV4dExldHRlck9iamVjdC5zZXRBdHRyaWJ1dGUoJ3Zpc2libGUnLGZhbHNlKTsKKwkJICAgIHRoaXMucmVmT2JqLnNldE1vZHVzKCdsZXR0ZXInKTsKKwkgICAgfQorCQl0LnN0YXJ0QWRqdXN0SGlnaHQgPSB0cnVlOworCTwvaGFuZGxlcj4KKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJuZXdTdHlsZUV2ZW50Ij4KKyAgICAgICAgdGhpcy5jYWxsTmV3KHRoaXMuX3RleHR2aWV3Ll90ZXh0dmlldy5nZXRUZXh0KCkpOworICAgIDwvaGFuZGxlcj4KKyAgCisJPG1ldGhvZCBuYW1lPSJjYWxsTmV3IiBhcmdzPSJ0eHh0Ij4KKwkJLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiY2FsbE5ldyBoZWlnaHQtMiAiKTsKKwkJCisgICAgICAgIHZhciBoID0gdGhpcy5nZXRIZWlnaHQoKTsKKyAgICAgICAgCisgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImNhbGxOZXcgaGVpZ2h0LTMgIix0aGlzKTsKKyAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiY2FsbE5ldyBoZWlnaHQtNCAiLHRoaXMuZ2V0SGVpZ2h0KCkpOworICAgICAgICAKKwkJdGhpcy5fdGV4dHZpZXcuX3RleHR2aWV3LmRlc3Ryb3koKTsKKwkJdmFyIHQgPSBuZXcgbHouc3R5bGVhYmxlSW5wdXQodGhpcy5fdGV4dHZpZXcseworCQkJICAgICAgICBzZXRGb2N1c09uSW5pdDpmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgbmFtZTonX3RleHR2aWV3Jyx0ZXh0OnR4eHQsCisgICAgICAgICAgICAgICAgICAgIGZvbnRzdHlsZTp0aGlzLnJlZk9iai5jdXJyZW50bGF5ZXJzdHlsZSwKKyAgICAgICAgICAgICAgICAgICAgZm9udHNpemU6dGhpcy5yZWZPYmouY3VycmVudGxheWVyc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgZmdjb2xvcjp0aGlzLnJlZk9iai5jdXJyZW50bGF5ZXJsZXR0ZXIKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoImhlaWdodCIsaCk7CisJPC9tZXRob2Q+CisJPG1ldGhvZCBuYW1lPSJhZGp1c3RIZWlnaHQiPgorCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiKysrIGFkanVzdEhlaWdodCArKysiKTsKKwkJdGhpcy5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsdGhpcy5fdGV4dHZpZXcuX3RleHR2aWV3LmhlaWdodCsyKTsKKwk8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9Il9yZW1vdmVSZXNpemVzdGF0ZUZyb21UaGlzIj4KKyAgICAJdGhpcy5ycy5yZW1vdmUoKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8dmlldyBuYW1lPSJfdGV4dHZpZXciIHdpZHRoPSIkeyBwYXJlbnQud2lkdGggfSIgaGVpZ2h0PSIkeyBwYXJlbnQuaGVpZ2h0IH0iIC8+CisgICAgCisgICAgPHJlc2l6ZXN0YXRlIG5hbWU9InJzIiA+CisgICAgCTx0ZXh0IHg9IjIiIHk9IjIiIHRleHQ9IiR7ICd3OiAnK3BhcmVudC53aWR0aCsnIGg6ICcrcGFyZW50LmhlaWdodCB9IiBiZ2NvbG9yPSJ3aGl0ZSIvPgorICAgIDwvcmVzaXplc3RhdGU+CisJPHZpZXcgcmVzb3VyY2U9Il9ib3VuZGluZ0JveFBvaW50ZXJVUiIgeD0iJHsgcGFyZW50LndpZHRoLXRoaXMud2lkdGggfSIgeT0iJHsgcGFyZW50LmhlaWdodC10aGlzLmhlaWdodCB9IiAKKwkJb25tb3VzZWRvd249InBhcmVudC5ycy5hcHBseSgpIiBvbm1vdXNldXA9InBhcmVudC5fcmVtb3ZlUmVzaXplc3RhdGVGcm9tVGhpcygpIiA+CisJCTxsYWJlbFRvb2x0aXAgdGV4dD0iUmVzaXplIHRoaXMgT2JqZWN0IiAvPgorCTwvdmlldz4gICAgCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9iYXNlL2RyYXdWaWV3TmV3Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL2Jhc2UvZHJhd1ZpZXdOZXcubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjZmNmODgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9iYXNlL2RyYXdWaWV3TmV3Lmx6eApAQCAtMCwwICsxLDg3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8Y2xhc3MgbmFtZT0iZHJhd1ZpZXdJbm5lciIgZXh0ZW5kcz0iZHJhd3ZpZXciIHg9IjAiIHk9IjAiID4KKwkKKzwvY2xhc3M+CisKKzwhLS0KKyAgICB0aGlzIGlzIHRoZSBCYXNlIENvbnRhaW5lciBmb3IgYWxsIFdoaXRlYm9hcmQgT2JqZWN0cworIC0tPgorPGNsYXNzIG5hbWU9ImRyYXdWaWV3TmV3IiBleHRlbmRzPSJkcmF3dmlldyIgY2FjaGViaXRtYXA9ImZhbHNlIiB4PSIwIiB5PSIwIiA+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJ0eXBlT2ZPYmplY3QiIHZhbHVlPSJwYWludCIgdHlwZT0ic3RyaW5nIiAvPgorCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpbml0d2lkdGgiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpbml0aGVpZ2h0IiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgIAorICAgIDxldmVudCBuYW1lPSJwcmVwYXJlRm9yRGVsZXRlIiAvPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgIHRoaXMuaW5pdHdpZHRoPXRoaXMud2lkdGg7CisgICAgICAgIHRoaXMuaW5pdGhlaWdodD10aGlzLmhlaWdodDsKKyAgICA8L2hhbmRsZXI+CisgICAgCisJPGhhbmRsZXIgbmFtZT0ib253aWR0aCI+CisgICAgICAgIDwhW0NEQVRBWworCSAgICAgICAgaWYgKHRoaXMuaXNpbml0ZWQpIHsKKwkJICAgICAgICBpZih0aGlzLm5hbWUuaW5kZXhPZignbGluZScpPj0wIAorCQkgICAgICAgIAl8fCB0aGlzLm5hbWUuaW5kZXhPZigndWxpbmUnKT49MCAKKwkJICAgICAgICAJfHwgdGhpcy5uYW1lLmluZGV4T2YoJ2RyYXdhcnJvdycpPj0wCisJCSAgICAgICAgCXx8IHRoaXMubmFtZS5pbmRleE9mKCdwYWludCcpPj0wKSB7CisJCSAgICAgICAgCXRoaXMuZ2V0RGlzcGxheU9iamVjdCgpLl94c2NhbGUgPSAodGhpcy53aWR0aC90aGlzLmluaXR3aWR0aCkqMTAwOworCQkgICAgICAgIH0gZWxzZSBpZiAodGhpcy5uYW1lLmluZGV4T2YoJ3JlY3RhbmdsZScpPj0wKSB7CisJICAgICAgICAJCXBhcmVudC5yZWRyYXdSZWN0SXRlbUJ5U2NhbGluZyh0aGlzKTsKKwkgICAgICAgIAl9IGVsc2UgaWYgICh0aGlzLm5hbWUuaW5kZXhPZignZWxsaXBzZScpPj0wKSB7CisJICAgICAgICAJCXBhcmVudC5yZWRyYXdFbGxpcHNlSXRlbUJ5U2NhbGluZyh0aGlzKTsKKwkgICAgICAgIAl9CSAgICAgICAgCQorCSAgICAgICAgfQorICAgICAgICBdXT4KKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib25oZWlnaHQiPgorICAgIAk8IVtDREFUQVsKKwkgICAgICAgIGlmICh0aGlzLmlzaW5pdGVkKSB7CisJCSAgICAgICAgaWYodGhpcy5uYW1lLmluZGV4T2YoJ2xpbmUnKT49MCAKKwkJICAgICAgICAJfHwgdGhpcy5uYW1lLmluZGV4T2YoJ3VsaW5lJyk+PTAgCisJCSAgICAgICAgCXx8IHRoaXMubmFtZS5pbmRleE9mKCdkcmF3YXJyb3cnKT49MAorCQkgICAgICAgIAl8fCB0aGlzLm5hbWUuaW5kZXhPZigncGFpbnQnKT49MCkgeworCQkgICAgICAgIAl0aGlzLmdldERpc3BsYXlPYmplY3QoKS5feXNjYWxlID0gKHRoaXMuaGVpZ2h0L3RoaXMuaW5pdGhlaWdodCkqMTAwOyAgCisJCSAgICAgICAgfSBlbHNlIGlmICh0aGlzLm5hbWUuaW5kZXhPZigncmVjdGFuZ2xlJyk+PTApIHsKKwkgICAgICAgIAkJcGFyZW50LnJlZHJhd1JlY3RJdGVtQnlTY2FsaW5nKHRoaXMpOworCSAgICAgICAgCX0gZWxzZSBpZiAgKHRoaXMubmFtZS5pbmRleE9mKCdlbGxpcHNlJyk+PTApIHsKKwkgICAgICAgIAkJcGFyZW50LnJlZHJhd0VsbGlwc2VJdGVtQnlTY2FsaW5nKHRoaXMpOworCSAgICAgICAgCX0JCisJICAgICAgICB9ICAJCisgICAgICAgIF1dPiAgIAorICAgIDwvaGFuZGxlcj4KKyAgICA8IS0tIAorICAgIDxkcmFnc3RhdGUgbmFtZT0iZHJhZ2dlciIgZHJhZ19heGlzPSJib3RoIgorCSAgICBkcmFnX21pbl94PSIwIgorCSAgICBkcmFnX21heF94PSIkb25jZXtwYXJlbnQud2lkdGggLSB0aGlzLndpZHRofSIKKwkgICAgZHJhZ19taW5feT0iMCIKKwkgICAgZHJhZ19tYXhfeT0iJG9uY2V7cGFyZW50LmhlaWdodCAtIHRoaXMuaGVpZ2h0fSI+CisgICAgPC9kcmFnc3RhdGU+CisgICAgIC0tPgorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvYmFzZS9pbWFnZUZvckRyYXdWaWV3Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL2Jhc2UvaW1hZ2VGb3JEcmF3Vmlldy5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWI2ZDU0NAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL2Jhc2UvaW1hZ2VGb3JEcmF3Vmlldy5sengKQEAgLTAsMCArMSwxOTUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzxjbGFzcyBuYW1lPSJpbWFnZUZvckRyYXdWaWV3IiBleHRlbmRzPSJpbWFnZSIgc3RyZXRjaGVzPSJib3RoIj4KKwkKKwk8ZXZlbnQgbmFtZT0icHJlcGFyZUZvckRlbGV0ZSIgLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9ImRvd25sb2FkdXJsIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisJCQorCTxhdHRyaWJ1dGUgbmFtZT0iYWx0ZXJNb2R1cyIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJpc0xvY2FsU3luYyIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0icmVjb3JkZXJNb2R1cyIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0iYmFzZXVybCIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0iZmlsZU5hbWUiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwk8YXR0cmlidXRlIG5hbWU9Im1vZHVsZU5hbWUiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwk8YXR0cmlidXRlIG5hbWU9InBhcmVudFBhdGgiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwk8YXR0cmlidXRlIG5hbWU9InJvb20iIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwk8YXR0cmlidXRlIG5hbWU9ImRvbWFpbiIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0icmVtb3Rld2lkdGgiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJyZW1vdGVoZWlnaHQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJ0eXBlT2ZPYmplY3QiIHZhbHVlPSJpbWFnZSIgdHlwZT0ic3RyaW5nIiAvPgorCQorCTwhLS0gaG9sZHMgdGhlIHJlZmVyZW5jZV9pZCB0byB0aGUgU3luY1Byb2Nlc3MgLS0+CisJPGF0dHJpYnV0ZSBuYW1lPSJ1bmlxdWVPYmplY3RTeW5jTmFtZSIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorCQorCQk8IS0tCisJCQlpZiAodGhpcy53aWR0aD50aGlzLnJlZk9iai53aWR0aCl7CisJCQkJdmFyIGhlaWdodCA9IHRoaXMuaGVpZ2h0Lyh0aGlzLndpZHRoL3RoaXMucmVmT2JqLndpZHRoKQorCQkJCXRoaXMuc2V0QXR0cmlidXRlKCd3aWR0aCcsdGhpcy5yZWZPYmoud2lkdGgpOworCQkJCXRoaXMuc2V0QXR0cmlidXRlKCdoZWlnaHQnLGhlaWdodCk7CisJCQkJdGhpcy5zZXRBdHRyaWJ1dGUoJ3gnLDApOworCQkJfQorCQkJaWYgKHRoaXMuaGVpZ2h0PnRoaXMucmVmT2JqLmhlaWdodCl7CisJCQkJdmFyIHdpZHRoID0gdGhpcy53aWR0aC8odGhpcy5oZWlnaHQvdGhpcy5yZWZPYmouaGVpZ2h0KQorCQkJCXRoaXMuc2V0QXR0cmlidXRlKCdoZWlnaHQnLHRoaXMucmVmT2JqLmhlaWdodCk7CisJCQkJdGhpcy5zZXRBdHRyaWJ1dGUoJ3dpZHRoJyx3aWR0aCk7CisJCQkJdGhpcy5zZXRBdHRyaWJ1dGUoJ3knLDApOworCQkJfQorCQkJaWYodGhpcy55K3RoaXMuaGVpZ2h0PnRoaXMucmVmT2JqLmhlaWdodCl7CisJCQkJdGhpcy5zZXRBdHRyaWJ1dGUoJ3knLDApOworCQkJfQorCQkJaWYodGhpcy54K3RoaXMud2lkdGg+dGhpcy5yZWZPYmoud2lkdGgpeworCQkJCXRoaXMuc2V0QXR0cmlidXRlKCd4JywwKTsKKwkJCX0JICAgICAgICAgICAgCQorICAgICAgICAgLS0+ICAgICAgICAgICAgCisJPGF0dHJpYnV0ZSBuYW1lPSJyZWZPYmoiIHZhbHVlPSJudWxsIiAvPgorCTxoYW5kbGVyIG5hbWU9Im9ubG9hZCI+CisJCTwhW0NEQVRBWworCQkJLy9EZWJ1Zy53cml0ZSgiaW1hZ2UgbG9hZGVkIik7CisJCQkvL3RoaXMucmVmT2JqLnBhcmVudC5fbG9hZGluZy5zZXRBdHRyaWJ1dGUoJ3Zpc2libGUnLGZhbHNlKTsKKwkJCQorCQkJaWYgKHRoaXMucmVtb3Rld2lkdGggIT0gMCAmJiB0aGlzLnJlbW90ZWhlaWdodCAhPSAwKXsKKwkJCQl0aGlzLnNldEF0dHJpYnV0ZSgnd2lkdGgnLHRoaXMucmVtb3Rld2lkdGgpOworCQkJCXRoaXMuc2V0QXR0cmlidXRlKCdoZWlnaHQnLHRoaXMucmVtb3RlaGVpZ2h0KTsKKwkJCX0gZWxzZSB7CisJCQkJCisJCQkJaWYgKHRoaXMud2lkdGg+dGhpcy5yZWZPYmoud2lkdGgpeworCQkJCQl2YXIgaGVpZ2h0ID0gdGhpcy5oZWlnaHQvKHRoaXMud2lkdGgvdGhpcy5yZWZPYmoud2lkdGgpCisJCQkJCXRoaXMuc2V0QXR0cmlidXRlKCd3aWR0aCcsdGhpcy5yZWZPYmoud2lkdGgpOworCQkJCQl0aGlzLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JyxoZWlnaHQpOworCQkJCQl0aGlzLnNldEF0dHJpYnV0ZSgneCcsMCk7CisJCQkJfQorCQkJCQorCQkJCWlmICh0aGlzLmhlaWdodD50aGlzLnJlZk9iai5oZWlnaHQpeworCQkJCQl2YXIgd2lkdGggPSB0aGlzLndpZHRoLyh0aGlzLmhlaWdodC90aGlzLnJlZk9iai5oZWlnaHQpCisJCQkJCXRoaXMuc2V0QXR0cmlidXRlKCdoZWlnaHQnLHRoaXMucmVmT2JqLmhlaWdodCk7CisJCQkJCXRoaXMuc2V0QXR0cmlidXRlKCd3aWR0aCcsd2lkdGgpOworCQkJCQl0aGlzLnNldEF0dHJpYnV0ZSgneScsMCk7CisJCQkJfQorCQkJCQorCQkJCWlmKHRoaXMueSt0aGlzLmhlaWdodD50aGlzLnJlZk9iai5oZWlnaHQpeworCQkJCQl0aGlzLnNldEF0dHJpYnV0ZSgneScsMCk7CisJCQkJfQorCQkJCQorCQkJCWlmKHRoaXMueCt0aGlzLndpZHRoPnRoaXMucmVmT2JqLndpZHRoKXsKKwkJCQkJdGhpcy5zZXRBdHRyaWJ1dGUoJ3gnLDApOworCQkJCX0KKwkJCQkKKwkJCX0KKwkKKwkJCS8vb25seSBzZW5kIHN5bmNDb21tYW5kIGlmIGFsdGVyTW9kdXMgaXMgdHJ1ZSAobWVhbmluZyB0aGF0IHRoaXMgaXMgdGhlIE1vZGVyYXRvcikKKwkJCS8vb3RoZXJ3aXNlIGp1c3Qgc2VuZCBhIG5vdGlmaWNhdGlvbiB0byBtb2RlcmF0b3IgdGhhdCB0aGlzIGltYWdlIGhhcyBiZWVuIGxvYWRlZAorCQkJLy9pZiB0aGlzIGlzIGp1c3QgYSByZWNvcmRDb250ZW50LW1vZGkgKHJlY29yZGluZ3NWaWV3ZXIpIHRoZW4gdGhlcmUgc2hvdWxkIGJlIG5vIHN5bmNpbmcKKwkJCWlmICh0aGlzLnJlY29yZGVyTW9kdXMpIHsKKwkJCQl0aGlzLnJlZk9iai5zdG9yZVRlbXBWYWxzQW5kTG9hZFN5bmNMaXN0UmVjb3JkaW5nKHRoaXMpOworCQkJfSBlbHNlIGlmICh0aGlzLmFsdGVyTW9kdXMpeworCQkJCXRoaXMucmVmT2JqLnN0b3JlVGVtcFZhbHNBbmRMb2FkU3luY0xpc3QodGhpcyk7CisJCQl9IGVsc2UgaWYgKHRoaXMuaXNMb2NhbFN5bmMpeworCQkJCXRoaXMucmVmT2JqLmFkZEltYWdlVG9MYXllckhpc3RvcnlUb0xvY2FsTG9hZGVkLnNlbmRFdmVudCh0aGlzKTsKKwkJCX0gZWxzZSB7CisJCQkJdGhpcy5yZWZPYmouc2VuZExvYWROb3RpZmljYXRpb25JbWFnZSh0aGlzKTsKKwkJCX0KKwkJCXRoaXMucmVmT2JqLmxheWVycy5wdXNoKHRoaXMpOwkJCQorCQkJCisJCQl0aGlzLm9uaW5pdC5zZW5kRXZlbnQoKTsKKwkJCQorCQkJLy9UaGlzIGlzIG5vdCBuZWVkZWQgYW55bW9yZSBhcyBpdCBzeW5jJ3MgYWdhaW5zdCB0aGUgc2VydmVyIHNpZCwgc3dhZ25lciwgMTEuMDYuMjAwOAorCQkJLy90aGlzLnJlZk9iai5wYXJlbnQucGFyZW50LmlzbG9hZGVkSW1hZ2Uuc2VuZEV2ZW50KHRoaXMpOworCQkJCisJCQkvL3NlbmQgbm90aWZpY2F0aW9uIHRvIHdtbC1sb2FkZXIKKwkJCS8vdGhpcyBpcyBzZW5kIGxhdGVyIHRoZW4gaW4gbm9ybWFsIG9iamVjdHMgY2F1c2UgaXQgbmVlZHMgdG8gYmUgc2VuZCBhZnRlciB0aGUgaW1hZ2UKKwkJCS8vaGFzIGJlZW4gbG9hZGVkIGNvbXBsZXRlbHkKKwkJCS8vaWYgKHRoaXMucmVmT2JqLmlzV21sTG9hZGVySW1hZ2UpeworCQkJLy8JdGhpcy5yZWZPYmouaXNXbWxMb2FkZXJJbWFnZT1mYWxzZTsKKyAgICAgICAgICAgIC8vICAgIC8vRGVidWcud3JpdGUoIjEgb253bWxMb2FkZXJTZW5kLnNlbmRFdmVudCggaW1hZ2UgKSIpOworCQkJLy8JaWYgKHRoaXMucmVmT2JqLm9ud21sTG9hZGVyU2VuZCkgdGhpcy5yZWZPYmoub253bWxMb2FkZXJTZW5kLnNlbmRFdmVudCgnaW1hZ2UnKTsKKwkJCS8vfQorCQldXT4KKwk8L2hhbmRsZXI+CisJPGhhbmRsZXIgbmFtZT0ib25lcnJvciIgYXJncz0iZXJyb3IiPgorCQk8IVtDREFUQVsKKwkJLy9EZWJ1Zy53cml0ZSgib25lcnJvciAiK2Vycm9yKTsKKwkJCS8vb25seSBzZW5kIHN5bmNDb21tYW5kIGlmIGFsdGVyTW9kdXMgaXMgdHJ1ZSAobWVhbmluZyB0aGF0IHRoaXMgaXMgdGhlIE1vZGVyYXRvcikKKwkJCS8vb3RoZXJ3aXNlIGp1c3Qgc2VuZCBhIG5vdGlmaWNhdGlvbiB0byBtb2RlcmF0b3IgdGhhdCB0aGlzIGlhbWdlIGhhcyBiZWVuIGxvYWRlZAorCQkJaWYgKHRoaXMucmVjb3JkZXJNb2R1cykgeworCQkJCXRoaXMucmVmT2JqLnN0b3JlVGVtcFZhbHNBbmRMb2FkU3luY0xpc3RSZWNvcmRpbmcodGhpcyk7CisJCQl9IGVsc2UgaWYgKHRoaXMuYWx0ZXJNb2R1cyl7CisJCQkJdGhpcy5yZWZPYmouc3RvcmVUZW1wVmFsc0FuZExvYWRTeW5jTGlzdCh0aGlzKTsKKwkJCX0gZWxzZSBpZiAodGhpcy5pc0xvY2FsU3luYyl7CisJCQkJdGhpcy5yZWZPYmouYWRkSW1hZ2VUb0xheWVySGlzdG9yeVRvTG9jYWxMb2FkZWQuc2VuZEV2ZW50KHRoaXMpOworCQkJfSBlbHNlIHsKKwkJCQl0aGlzLnJlZk9iai5zZW5kTG9hZE5vdGlmaWNhdGlvbkltYWdlKHRoaXMpOworCQkJfQorCQkJdGhpcy5yZWZPYmoubGF5ZXJzLnB1c2godGhpcyk7CQkJCisJCQkKKwkJCXRoaXMub25pbml0LnNlbmRFdmVudCgpOworCQkJCisJCQkvL1RoaXMgaXMgbm90IG5lZWRlZCBhbnltb3JlIGFzIGl0IHN5bmMncyBhZ2FpbnN0IHRoZSBzZXJ2ZXIgc2lkLCBzd2FnbmVyLCAxMS4wNi4yMDA4CisJCQl0aGlzLnJlZk9iai5wYXJlbnQucGFyZW50LmlzbG9hZGVkSW1hZ2Uuc2VuZEV2ZW50KHRoaXMpOworCQkJCisJCQkvL3NlbmQgbm90aWZpY2F0aW9uIHRvIHdtbC1sb2FkZXIKKwkJCS8vdGhpcyBpcyBzZW5kIGxhdGVyIHRoZW4gaW4gbm9ybWFsIG9iamVjdHMgY2F1c2UgaXQgbmVlZHMgdG8gYmUgc2VuZCBhZnRlciB0aGUgaW1hZ2UKKwkJCS8vaGFzIGJlZW4gbG9hZGVkIGNvbXBsZXRlbHkKKwkJCS8vaWYgKHRoaXMucmVmT2JqLmlzV21sTG9hZGVySW1hZ2UpeworCQkJLy8JdGhpcy5yZWZPYmouaXNXbWxMb2FkZXJJbWFnZT1mYWxzZTsKKwkJCS8vCWlmICh0aGlzLnJlZk9iai5vbndtbExvYWRlclNlbmQpIHRoaXMucmVmT2JqLm9ud21sTG9hZGVyU2VuZC5zZW5kRXZlbnQoJ2ltYWdlJyk7CisJCQkvL30KKwkJXV0+CisJPC9oYW5kbGVyPgorCTxoYW5kbGVyIG5hbWU9Im9udGltZW91dCIgYXJncz0iZXJyb3IiPgorCQk8IVtDREFUQVsKKwkJLy9EZWJ1Zy53cml0ZSgib250aW1lb3V0ICIrZXJyb3IpOworCQkJLy9vbmx5IHNlbmQgc3luY0NvbW1hbmQgaWYgYWx0ZXJNb2R1cyBpcyB0cnVlIChtZWFuaW5nIHRoYXQgdGhpcyBpcyB0aGUgTW9kZXJhdG9yKQorCQkJLy9vdGhlcndpc2UganVzdCBzZW5kIGEgbm90aWZpY2F0aW9uIHRvIG1vZGVyYXRvciB0aGF0IHRoaXMgaWFtZ2UgaGFzIGJlZW4gbG9hZGVkCisJCQlpZiAodGhpcy5yZWNvcmRlck1vZHVzKSB7CisJCQkJdGhpcy5yZWZPYmouc3RvcmVUZW1wVmFsc0FuZExvYWRTeW5jTGlzdFJlY29yZGluZyh0aGlzKTsKKwkJCX0gZWxzZSBpZiAodGhpcy5hbHRlck1vZHVzKXsKKwkJCQl0aGlzLnJlZk9iai5zdG9yZVRlbXBWYWxzQW5kTG9hZFN5bmNMaXN0KHRoaXMpOworCQkJfSBlbHNlIGlmICh0aGlzLmlzTG9jYWxTeW5jKXsKKwkJCQl0aGlzLnJlZk9iai5hZGRJbWFnZVRvTGF5ZXJIaXN0b3J5VG9Mb2NhbExvYWRlZC5zZW5kRXZlbnQodGhpcyk7CisJCQl9IGVsc2UgeworCQkJCXRoaXMucmVmT2JqLnNlbmRMb2FkTm90aWZpY2F0aW9uSW1hZ2UodGhpcyk7CisJCQl9CisJCQl0aGlzLnJlZk9iai5sYXllcnMucHVzaCh0aGlzKTsJCQkKKwkJCQorCQkJdGhpcy5vbmluaXQuc2VuZEV2ZW50KCk7CisJCQkKKwkJCS8vVGhpcyBpcyBub3QgbmVlZGVkIGFueW1vcmUgYXMgaXQgc3luYydzIGFnYWluc3QgdGhlIHNlcnZlciBzaWQsIHN3YWduZXIsIDExLjA2LjIwMDgKKwkJCXRoaXMucmVmT2JqLnBhcmVudC5wYXJlbnQuaXNsb2FkZWRJbWFnZS5zZW5kRXZlbnQodGhpcyk7CisJCQkKKwkJCS8vc2VuZCBub3RpZmljYXRpb24gdG8gd21sLWxvYWRlcgorCQkJLy90aGlzIGlzIHNlbmQgbGF0ZXIgdGhlbiBpbiBub3JtYWwgb2JqZWN0cyBjYXVzZSBpdCBuZWVkcyB0byBiZSBzZW5kIGFmdGVyIHRoZSBpbWFnZQorCQkJLy9oYXMgYmVlbiBsb2FkZWQgY29tcGxldGVseQorCQkJLy9pZiAodGhpcy5yZWZPYmouaXNXbWxMb2FkZXJJbWFnZSl7CisJCQkvLwl0aGlzLnJlZk9iai5pc1dtbExvYWRlckltYWdlPWZhbHNlOworCQkJLy8JaWYgKHRoaXMucmVmT2JqLm9ud21sTG9hZGVyU2VuZCkgdGhpcy5yZWZPYmoub253bWxMb2FkZXJTZW5kLnNlbmRFdmVudCgnaW1hZ2UnKTsKKwkJCS8vfQorCQldXT4KKwk8L2hhbmRsZXI+CQorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvYmFzZS9pbWFnZUZvclNjcmVlblZpZXdlci5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9iYXNlL2ltYWdlRm9yU2NyZWVuVmlld2VyLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZTZkNmEzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvYmFzZS9pbWFnZUZvclNjcmVlblZpZXdlci5sengKQEAgLTAsMCArMSw2MCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKyAgICAKKzxjbGFzcyBuYW1lPSJpbWFnZUZvclNjcmVlblZpZXdlciIgZXh0ZW5kcz0iaW1hZ2UiIHN0cmV0Y2hlcz0iYm90aCIgeD0iMCIgeT0iMCI+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJkb3dubG9hZHVybCIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorCQkKKwk8YXR0cmlidXRlIG5hbWU9ImFsdGVyTW9kdXMiIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0iYmFzZXVybCIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0iZmlsZU5hbWUiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwk8YXR0cmlidXRlIG5hbWU9Im1vZHVsZU5hbWUiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwk8YXR0cmlidXRlIG5hbWU9InBhcmVudFBhdGgiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwk8YXR0cmlidXRlIG5hbWU9InJvb20iIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwk8YXR0cmlidXRlIG5hbWU9ImRvbWFpbiIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0idXNlcm5hbWUiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwkJCisJPGF0dHJpYnV0ZSBuYW1lPSJyZWZPYmoiIHZhbHVlPSJudWxsIiAvPgorCTxoYW5kbGVyIG5hbWU9Im9ubG9hZCI+CisgICAgICAgIHRoaXMucmVmT2JqLmxheWVycy5wdXNoKHRoaXMpOwkKKyAgICAgICAgdGhpcy5yZWZPYmouaXNTY3JlZW5JbWFnZUxvYWRpbmc9ZmFsc2U7CisJICAgIHRoaXMuc2VuZFRvQmFjaygpOworICAgICAgICAKKyAgICAgICAgdmFyIGhlaWdodCA9IHRoaXMuaGVpZ2h0Lyh0aGlzLndpZHRoL3RoaXMucGFyZW50LndpZHRoKQorICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnd2lkdGgnLHRoaXMucGFyZW50LndpZHRoKTsKKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsaGVpZ2h0KTsKKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3gnLDApOworICAgICAgICAgICAgCisgICAgICAgIHRoaXMucmVmT2JqLnRvZ2dsZVZpc2libGVTY3JlZW5TaGFyaW5nKCk7CisJPC9oYW5kbGVyPgorCTxoYW5kbGVyIG5hbWU9Im9uZXJyb3IiIGFyZ3M9ImVycm9yIj4KKyAgICAgICAgdGhpcy5yZWZPYmoudG9nZ2xlVmlzaWJsZVNjcmVlblNoYXJpbmcoKTsKKwk8L2hhbmRsZXI+CisJPGhhbmRsZXIgbmFtZT0ib250aW1lb3V0IiBhcmdzPSJlcnJvciI+CisgICAgICAgIHRoaXMucmVmT2JqLnRvZ2dsZVZpc2libGVTY3JlZW5TaGFyaW5nKCk7CisJPC9oYW5kbGVyPgkKKyAgICAKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL2Jhc2UvbGlicmFyeS5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9iYXNlL2xpYnJhcnkubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFiM2VlMTkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9iYXNlL2xpYnJhcnkubHp4CkBAIC0wLDAgKzEsNDEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKwk8aW5jbHVkZSBocmVmPSJkcmF3Vmlld05ldy5sengiIC8+CisJPGluY2x1ZGUgaHJlZj0iYmFzZURyYXcubHp4IiAvPgorICAgIAorICAgIDwhLS0gZXh0ZW5kcyBiYXNlZHJhdyB3aXRoIGRyYXdpbmcgVG9vbHMgLS0+CisgICAgPGluY2x1ZGUgaHJlZj0idG9vbHMvIiAvPiAKKyAgICAKKwk8aW5jbHVkZSBocmVmPSJzd2ZSZXNvdXJjZVZpZXcubHp4IiAvPgorCTxpbmNsdWRlIGhyZWY9ImJhc2VEcmF3T2JqZWN0Lmx6eCIgLz4KKwk8aW5jbHVkZSBocmVmPSJiYXNlRHJhd0xldHRlci5sengiIC8+CisJPGluY2x1ZGUgaHJlZj0iaW1hZ2VGb3JEcmF3Vmlldy5sengiIC8+CisJPGluY2x1ZGUgaHJlZj0iaW1hZ2VGb3JTY3JlZW5WaWV3ZXIubHp4IiAvPgorCTxpbmNsdWRlIGhyZWY9ImJhc2VEcmF3SW1hZ2UubHp4IiAvPgorCTxpbmNsdWRlIGhyZWY9ImJhc2VEcmF3U2F2ZS5sengiIC8+CisJPGluY2x1ZGUgaHJlZj0iYmFzZURyYXdXb3Jkcy5sengiIC8+CisJPGluY2x1ZGUgaHJlZj0id2hpdGVib2FyZFZpZGVvUGxheWVyLmx6eCIgLz4KKwk8aW5jbHVkZSBocmVmPSJyZW1vdGVXaGl0ZWJvYXJkLmx6eCIgLz4KKwk8aW5jbHVkZSBocmVmPSJ3aGl0ZUJvYXJkUG9pbnRlci5sengiIC8+CisgICAgCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9iYXNlL3JlbW90ZVdoaXRlYm9hcmQubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvYmFzZS9yZW1vdGVXaGl0ZWJvYXJkLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjQ3Y2ExCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvYmFzZS9yZW1vdGVXaGl0ZWJvYXJkLmx6eApAQCAtMCwwICsxLDMzNiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9InJlbW90ZVdoaXRlYm9hcmQiIGV4dGVuZHM9ImJhc2VEcmF3U2F2ZSI+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJsb2FkaW5nT2JqZWN0TGlzdElkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0ibG9hZGluZ09iamVjdExpc3QiIHZhbHVlPSJudWxsIiAvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0ibG9hZE9iamVjdERlbGVnYXRlIiB2YWx1ZT0ibnVsbCIgLz4KKwkKKwk8bWV0aG9kIG5hbWU9ImxvYWRPYmplY3RMaXN0IiBhcmdzPSJ3aGl0ZUJvYXJkT2JqZWN0Ij4KKwkJPCFbQ0RBVEFbCisJCQorCQkJaWYgKCRkZWJ1ZykgRGVidWcuaW5mbygibG9hZE9iamVjdExpc3QgOjE6ICIsd2hpdGVCb2FyZE9iamVjdCx3aGl0ZUJvYXJkT2JqZWN0LmZ1bGxGaXQsd2hpdGVCb2FyZE9iamVjdC56b29tKTsKKwkJCisJCQlpZiAocGFyZW50LnBhcmVudFsiem9vbWJveCJdKSB7CisJCQkgICAgcGFyZW50LnBhcmVudC56b29tYm94LnNldFdoaXRlYm9hcmRWYWx1ZXMod2hpdGVCb2FyZE9iamVjdC5mdWxsRml0LHdoaXRlQm9hcmRPYmplY3Quem9vbSk7CisJCQl9CisJCQkKKwkJCQorCQkJdGhpcy5zZXRBdHRyaWJ1dGUoIngiLHdoaXRlQm9hcmRPYmplY3QueCk7CisJCQl0aGlzLnNldEF0dHJpYnV0ZSgieSIsd2hpdGVCb2FyZE9iamVjdC55KTsJCisJCQl0aGlzLmxhc3RfeCA9IHRoaXMueDsKKwkJCXRoaXMubGFzdF95ID0gdGhpcy55OworCQkJCisJCQkvKgorCQkJaWYgKHdoaXRlQm9hcmRPYmplY3QuYnJhaW5TdG9ybWluZyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgdGhpcy5sb2FkQnJhaW5TdG9ybWluZ09iamVjdCh3aGl0ZUJvYXJkT2JqZWN0LmJyYWluU3Rvcm1pbmcpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKi8KKwkJCQorCQkJdGhpcy5mdWxsRml0ID0gd2hpdGVCb2FyZE9iamVjdC5mdWxsRml0OworCQkJCisJCQl0aGlzLmdldERpc3BsYXlPYmplY3QoKS5feHNjYWxlID0gd2hpdGVCb2FyZE9iamVjdC56b29tOworICAgIAkJdGhpcy5nZXREaXNwbGF5T2JqZWN0KCkuX3lzY2FsZSA9IHdoaXRlQm9hcmRPYmplY3Quem9vbTsKKyAgICAJCQorICAgIAkJdGhpcy5vbnVwZGF0ZVNjYWxlLnNlbmRFdmVudChudWxsKTsKKwkJCQorCQkJdGhpcy5sb2FkaW5nT2JqZWN0TGlzdCA9IG5ldyBBcnJheSgpOworCQkJCisJCQlmb3IgKHZhciBlZyBpbiB3aGl0ZUJvYXJkT2JqZWN0LnJvb21JdGVtcykgeworCQkJCXRoaXMubG9hZGluZ09iamVjdExpc3QucHVzaCh3aGl0ZUJvYXJkT2JqZWN0LnJvb21JdGVtc1tlZ10pOworCQkJfQorCQkJCisJCQkvL3JldHVybjsKKwkJCS8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImxvYWRPYmplY3RMaXN0IDoyOiAiLHRoaXMubG9hZGluZ09iamVjdExpc3QpOworCQkJCisJCQlmdW5jdGlvbiBzb3J0SXRlbUJ5SW5kZXgoYSxiKXsKKyAgICAgICAgICAgICAgICB2YXIgYTEgPSBhW2EubGVuZ3RoLThdOworICAgICAgICAgICAgICAgIHZhciBiMSA9IGJbYi5sZW5ndGgtOF07CisgICAgICAgICAgICAgICAgLy9fcm9vdC4vL0RlYnVnLndyaXRlKCJuYXRjb21wYXJlOiAiLGExLGIxLG5hdGNvbXBhcmUoYTEsYjEpKTsKKyAgICAgICAgICAgICAgICBpZihhMT09YjEpeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYoYTE+YjEpeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAvL2ZvciAodmFyIGk9MDtpPHRoaXMubG9hZGluZ09iamVjdExpc3QubGVuZ3RoO2krKykgeworICAgICAgICAgICAgLy8JaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIiAxICIsaSx0aGlzLmxvYWRpbmdPYmplY3RMaXN0W2ldWzBdLHRoaXMubG9hZGluZ09iamVjdExpc3RbaV1bdGhpcy5sb2FkaW5nT2JqZWN0TGlzdFtpXS5sZW5ndGgtOF0pOworICAgICAgICAgICAgLy99CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMubG9hZGluZ09iamVjdExpc3Quc29ydChzb3J0SXRlbUJ5SW5kZXgpOworCQkJCisgICAgICAgICAgICAvL2ZvciAodmFyIGk9MDtpPHRoaXMubG9hZGluZ09iamVjdExpc3QubGVuZ3RoO2krKykgeworICAgICAgICAgICAgLy8gICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIiAyICIsaSx0aGlzLmxvYWRpbmdPYmplY3RMaXN0W2ldWzBdLHRoaXMubG9hZGluZ09iamVjdExpc3RbaV1bdGhpcy5sb2FkaW5nT2JqZWN0TGlzdFtpXS5sZW5ndGgtOF0pOworICAgICAgICAgICAgLy99CisgICAgICAgICAgICAKKwkJCXRoaXMubG9hZGluZ09iamVjdExpc3RJZCA9IDA7CisJCQkvL3RoaXMubG9hZE9iamVjdERlbGVnYXRlID0gbmV3IEx6RGVsZWdhdGUoIHRoaXMsICJsb2FkUmVtb3RlT2JqZWN0IiApOworCQkJLy9pZiAodGhpcy5sb2FkaW5nT2JqZWN0TGlzdC5sZW5ndGggIT0gMCl7CisJCQkvLwlsei5UaW1lci5hZGRUaW1lciggdGhpcy5sb2FkT2JqZWN0RGVsZWdhdGUsIDI1MCApOworCQkJLy99CisJCQkvL2ZvciAodmFyIGk9MDtpPHRoaXMubG9hZGluZ09iamVjdExpc3QubGVuZ3RoO2krKyl7CisJCQkvLwlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiaSB0aGlzLmxvYWRpbmdPYmplY3RMaXN0W2ldICIsaSx0aGlzLmxvYWRpbmdPYmplY3RMaXN0W2ldKTsKKwkJCS8vfQorCQkJCisJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiTnVtYmVyIG9mIFdoaXRlYm9hcmQgT2JqZWN0cyAiLHRoaXMubG9hZGluZ09iamVjdExpc3QubGVuZ3RoKTsKKwkJCQorCQkJaWYgKHRoaXMubG9hZGluZ09iamVjdExpc3QgIT0gbnVsbCAmJiB0aGlzLmxvYWRpbmdPYmplY3RMaXN0Lmxlbmd0aCAhPSAwKXsKKwkJCQl0aGlzLnN0YXJ0TmV3U3luY3Byb2Nlc3MuZG9DYWxsKCk7CisJCQl9CisJCV1dPgorCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0ibG9hZFNhdmVkT2JqZWN0TGlzdCIgYXJncz0ib2JqTGlzdCI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgdGVtcEFycmF5ID0gbmV3IEFycmF5KCk7ICAgICAgICAgICAgCisgICAgICAgICAgICB0ZW1wQXJyYXlbMF0gPSAibG9hZFNhdmVkV2hpdGVib2FyZCI7CisgICAgICAgICAgICAvLy90ZW1wQXJyYXlbMV0gPSBpdGVtT2JqOworICAgICAgICAgICAgdGVtcEFycmF5WzFdID0gb2JqTGlzdDsKKyAgICAgICAgICAgIGhpYi5zZW5kTWVzc2FnZVdpdGhDbGllbnQuc2VuZE1lc3NhZ2UoIndoaXRlYm9hcmQiLCB0ZW1wQXJyYXkpOworICAgICAgICAKKyAgICAgICAgICAgIHRoaXMubG9hZGluZ09iamVjdExpc3QgPSBvYmpMaXN0OworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgibG9hZE9iamVjdExpc3QgOjogIix0aGlzLmxvYWRpbmdPYmplY3RMaXN0KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZnVuY3Rpb24gc29ydEl0ZW1CeUluZGV4KGEsYil7CisgICAgICAgICAgICAgICAgdmFyIGExID0gYVthLmxlbmd0aC04XTsKKyAgICAgICAgICAgICAgICB2YXIgYjEgPSBiW2IubGVuZ3RoLThdOworICAgICAgICAgICAgICAgIC8vX3Jvb3QuLy9EZWJ1Zy53cml0ZSgibmF0Y29tcGFyZTogIixhMSxiMSxuYXRjb21wYXJlKGExLGIxKSk7CisgICAgICAgICAgICAgICAgaWYoYTE9PWIxKXsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmKGExPmIxKXsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8dGhpcy5sb2FkaW5nT2JqZWN0TGlzdC5sZW5ndGg7aSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIiAxICIsaSx0aGlzLmxvYWRpbmdPYmplY3RMaXN0W2ldWzBdLHRoaXMubG9hZGluZ09iamVjdExpc3RbaV1bdGhpcy5sb2FkaW5nT2JqZWN0TGlzdFtpXS5sZW5ndGgtOF0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLmxvYWRpbmdPYmplY3RMaXN0LnNvcnQoc29ydEl0ZW1CeUluZGV4KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8dGhpcy5sb2FkaW5nT2JqZWN0TGlzdC5sZW5ndGg7aSsrKSB7CisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIiAyICIsaSx0aGlzLmxvYWRpbmdPYmplY3RMaXN0W2ldWzBdLHRoaXMubG9hZGluZ09iamVjdExpc3RbaV1bdGhpcy5sb2FkaW5nT2JqZWN0TGlzdFtpXS5sZW5ndGgtOF0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLmxvYWRpbmdPYmplY3RMaXN0SWQgPSAwOworICAgICAgICAgICAgLy90aGlzLmxvYWRPYmplY3REZWxlZ2F0ZSA9IG5ldyBMekRlbGVnYXRlKCB0aGlzLCAibG9hZFJlbW90ZU9iamVjdCIgKTsKKyAgICAgICAgICAgIC8vaWYgKHRoaXMubG9hZGluZ09iamVjdExpc3QubGVuZ3RoICE9IDApeworICAgICAgICAgICAgLy8gIGx6LlRpbWVyLmFkZFRpbWVyKCB0aGlzLmxvYWRPYmplY3REZWxlZ2F0ZSwgMjUwICk7CisgICAgICAgICAgICAvL30KKyAgICAgICAgICAgIC8vZm9yICh2YXIgaT0wO2k8dGhpcy5sb2FkaW5nT2JqZWN0TGlzdC5sZW5ndGg7aSsrKXsKKyAgICAgICAgICAgIC8vICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiaSB0aGlzLmxvYWRpbmdPYmplY3RMaXN0W2ldICIsaSx0aGlzLmxvYWRpbmdPYmplY3RMaXN0W2ldKTsKKyAgICAgICAgICAgIC8vfQorICAgICAgICAgICAgaWYgKHRoaXMubG9hZGluZ09iamVjdExpc3QgIT0gbnVsbCAmJiB0aGlzLmxvYWRpbmdPYmplY3RMaXN0Lmxlbmd0aCAhPSAwKXsKKyAgICAgICAgICAgICAgICB0aGlzLnN0YXJ0U2F2ZWRTeW5jcHJvY2Vzcy5kb0NhbGwoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InByZXBhcmVMb2FkV01MRmlsZSIgYXJncz0iaXRlbU9iaiI+CisgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJsb2FkV01MRmlsZTogIixpdGVtT2JqKTsKKyAgICAgICAgCisgICAgICAgIHRoaXMubG9hZFdNTEZpbGUuc2V0QXR0cmlidXRlKCdmaWxlRXhwbG9yZXJJdGVtSWQnLCBpdGVtT2JqLmZpbGVFeHBsb3Jlckl0ZW1JZCk7CisgICAgICAgICAgICAgICAgICAKKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInByZXBhcmVMb2FkV01MRmlsZSAxOiAiLHBhcmVudC5wYXJlbnQud2hpdGVib2FyZElkKTsKKyAgICAgICAgCisgICAgICAgIHRoaXMubG9hZFdNTEZpbGUuZG9DYWxsKCk7CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgCisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0ibG9hZFdNTEZpbGUiIGZ1bmNuYW1lPSJmaWxlc2VydmljZS5sb2FkV21sT2JqZWN0IgorICAgICAgICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPgorICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImZpbGVFeHBsb3Jlckl0ZW1JZCIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0iMCIvPgorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBoaWIuY3VycmVudHJvb21pZDs8L21ldGhvZD48L25ldHBhcmFtPiAKKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQuZmlsZUV4cGxvcmVySXRlbUlkOzwvbWV0aG9kPjwvbmV0cGFyYW0+IAorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC53aGl0ZWJvYXJkSWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJsb2FkV01MRmlsZTogIix2YWx1ZSk7CisgICAgICAgICAgICAgICAgLy9jYW52YXMuX2RyYXdhcmVhLmNsZWFyQWxsKCk7CisgICAgICAgICAgICAgICAgLy9wYXJlbnQubG9hZFNhdmVkT2JqZWN0TGlzdCh2YWx1ZSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPiAgIAorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4gCisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJsb2FkV21sVG9XaGl0ZWJvYXJkQnlJZCIgYXJncz0icm9vbUl0ZW1zIj4KKyAgICAJdGhpcy5jbGVhclJlbW90ZSgpOworICAgIAl0aGlzLmxvYWRTYXZlZE9iamVjdExpc3Qocm9vbUl0ZW1zKTsKKyAgICA8L21ldGhvZD4KKwkKKyAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJzdGFydE5ld1N5bmNwcm9jZXNzIiBmdW5jbmFtZT0id2hpdGVib2FyZHNlcnZpY2Uuc3RhcnROZXdTeW5jcHJvY2VzcyIKKyAgICAgICAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIAkvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorICAgICAgICAgICAgCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzdGFydE5ld1N5bmNwcm9jZXNzOiAiLHZhbHVlKTsKKyAgICAgICAgICAgIAlpZiAodmFsdWUucHVibGljU0lEID09IGNhbnZhcy5wdWJsaWNTSUQpeworICAgICAgICAgICAgCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiY3VycmVudExvYWRpbmdJdGVtIElTIG1pbmUiKTsKKyAgICAgICAgICAgICAgICAgICAgLy9UT0RPOiBDaGVjayB1c2FnZSBvZiBjdXJyZW50TG9hZGluZ0l0ZW0KKyAgICAgICAgICAgIAkJLy9pZiAodmFsdWUuY3VycmVudExvYWRpbmdJdGVtKXsKKyAgICAgICAgICAgIAkJCXBhcmVudC5zdGFydEluaXRpYWxMb2FkaW5Qcm9jZXNzKCk7CisgICAgICAgICAgICAJCS8vfQorICAgICAgICAgICAgCX0KKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+ICAgCisgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAKKyAgICAKKyAgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0ic3RhcnRTYXZlZFN5bmNwcm9jZXNzIiBmdW5jbmFtZT0id2hpdGVib2FyZHNlcnZpY2Uuc3RhcnROZXdTeW5jcHJvY2VzcyIKKyAgICAgICAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzdGFydE5ld1N5bmNwcm9jZXNzOiAiLHZhbHVlKTsKKyAgICAgICAgICAgICAgICAvL2lmICh2YWx1ZS5wdWJsaWNTSUQgPT0gY2FudmFzLnB1YmxpY1NJRCl7CisgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJjdXJyZW50TG9hZGluZ0l0ZW0gSVMgbWluZSIpOworICAgICAgICAgICAgICAgICAgICAvL1RPRE86IENoZWNrIHVzYWdlIG9mIGN1cnJlbnRMb2FkaW5nSXRlbQorICAgICAgICAgICAgICAgICAgICAvL2lmICh2YWx1ZS5jdXJyZW50TG9hZGluZ0l0ZW0peworICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LnN0YXJ0SW5pdGlhbExvYWRpblByb2Nlc3MoKTsKKyAgICAgICAgICAgICAgICAgICAgLy99CisgICAgICAgICAgICAgICAgLy99CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPiAgIAorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4gCisgICAgCisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0ic2VuZENvbXBsZXRlZFN5bmNFdmVudCIgZnVuY25hbWU9IndoaXRlYm9hcmRzZXJ2aWNlLnNlbmRDb21wbGV0ZWRTeW5jRXZlbnQiCisgICAgICAgIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiA+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAJLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZSB0aGUgcnRtcGNvbm5lY3Rpb24KKyAgICAgICAgICAgIAlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2VuZENvbXBsZXRlZFN5bmNFdmVudDogIix2YWx1ZSk7CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPiAgIAorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4gICAgIAkKKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InN0YXJ0SW5pdGlhbExvYWRpblByb2Nlc3MiPgorCQl0aGlzLmxvYWRPYmplY3REZWxlZ2F0ZSA9IG5ldyBMekRlbGVnYXRlKCB0aGlzLCAibG9hZFJlbW90ZU9iamVjdCIgKTsKKwkJaWYgKHRoaXMubG9hZGluZ09iamVjdExpc3QubGVuZ3RoICE9IDApeworCQkJbHouVGltZXIuYWRkVGltZXIoIHRoaXMubG9hZE9iamVjdERlbGVnYXRlLCAyNTAgKTsKKwkJfQorICAgIDwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0ibG9hZFJlbW90ZU9iamVjdCIgYXJncz0icmVmIj4KKwkJPCFbQ0RBVEFbCisJCQl0aGlzLnNlbmRSZW1vdGVXYXRjaE9iamVjdCh0aGlzLmxvYWRpbmdPYmplY3RMaXN0W3RoaXMubG9hZGluZ09iamVjdExpc3RJZF0pOworCQkJdGhpcy5sb2FkaW5nT2JqZWN0TGlzdElkKys7CisJCQlpZiAodGhpcy5sb2FkaW5nT2JqZWN0TGlzdElkIDwgdGhpcy5sb2FkaW5nT2JqZWN0TGlzdC5sZW5ndGgpeworCQkJCWx6LlRpbWVyLmFkZFRpbWVyKCB0aGlzLmxvYWRPYmplY3REZWxlZ2F0ZSwgMjUwICk7CisJCQl9IGVsc2UgeworCQkJCXRoaXMuc2VuZENvbXBsZXRlZFN5bmNFdmVudC5kb0NhbGwoKTsKKwkJCQl0aGlzLnVwZGF0ZUFsbE9iamVjdHNUb1NsaWRlTnVtYmVyKCk7CisJCQkJdGhpcy5zZXRNb2R1c1dpdGhVcGRhdGUoImhhbmQiKTsKKwkJCQl0aGlzLm9udXBkYXRlU2NhbGUuc2VuZEV2ZW50KG51bGwpOworCQkJfQorCQldXT4KKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9InNlbmRSZW1vdGVXYXRjaE9iamVjdCIgYXJncz0iYWN0aW9uT2JqZWN0Ij4KKwkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIltzZW5kUmVtb3RlV2F0Y2hPYmplY3RdOiAiLGFjdGlvbk9iamVjdCk7CisJCTwhW0NEQVRBWworCQkJCisJCQkvL1JlZHJhdyB0aGUgVmlldyBvbiB0aGUgcGFpbnRhcmVhCisJCQlpZiAoYWN0aW9uT2JqZWN0WzBdPT0ncGFpbnQnKXsKKwkJCQl0aGlzLnBhaW50YWN0aW9uSGlzdG9yeShhY3Rpb25PYmplY3QsdGhpcyk7CisJCQl9IGVsc2UgaWYgKGFjdGlvbk9iamVjdFswXT09J2xpbmUnKXsKKwkJCQl0aGlzLmxpbmVhY3Rpb25IaXN0b3J5KGFjdGlvbk9iamVjdCx0aGlzKTsKKwkJCX0gZWxzZSBpZiAoYWN0aW9uT2JqZWN0WzBdPT0ndWxpbmUnKXsKKwkJCQl0aGlzLnVsaW5lYWN0aW9uSGlzdG9yeShhY3Rpb25PYmplY3QsdGhpcyk7CisJCQl9IGVsc2UgaWYgKGFjdGlvbk9iamVjdFswXT09J2RyYXdhcnJvdycpeworCQkJCXRoaXMuZHJhd2Fycm93bGluZWFjdGlvbkhpc3RvcnkoYWN0aW9uT2JqZWN0LHRoaXMpOworCQkJfSBlbHNlIGlmKGFjdGlvbk9iamVjdFswXT09J2xldHRlcicpeworCQkJCXRoaXMuZHJhd2FjdGlvbkhpc3RvcnkoYWN0aW9uT2JqZWN0LHRoaXMpOworCQkJfSBlbHNlIGlmKGFjdGlvbk9iamVjdFswXT09J2ltYWdlJyl7CisJCQkJdGhpcy5hZGRJbWFnZVRvTGF5ZXJIaXN0b3J5VG9Mb2NhbChhY3Rpb25PYmplY3QsdGhpcyk7CisJCQl9IGVsc2UgaWYoYWN0aW9uT2JqZWN0WzBdPT0nc3dmJyl7CisJCQkJdGhpcy5hZGRTV0ZUb0xheWVySGlzdG9yeShhY3Rpb25PYmplY3QsdGhpcyx0cnVlKTsKKwkJCX0gZWxzZSBpZihhY3Rpb25PYmplY3RbMF09PSdyZWN0YW5nbGUnKXsKKwkJCQl0aGlzLmRyYXdyZWN0YW5nbGVUb0hpc3RvcnkoYWN0aW9uT2JqZWN0LHRoaXMpOworCQkJfSBlbHNlIGlmKGFjdGlvbk9iamVjdFswXT09J2VsbGlwc2UnKXsKKwkJCQl0aGlzLmRyYXdlbGxpcHNlVG9IaXN0b3J5KGFjdGlvbk9iamVjdCx0aGlzKTsKKwkJCX0gZWxzZSBpZihhY3Rpb25PYmplY3RbMF09PSdmbHYnKXsKKyAgICAgICAgICAgICAgICB0aGlzLmRyYXdGbHZUb0hpc3RvcnkoYWN0aW9uT2JqZWN0LHRoaXMpOworICAgICAgICAgICAgfSBlbHNlIGlmKGFjdGlvbk9iamVjdFswXT09J21pbmRNYXBDZW50ZXInKXsKKyAgICAgICAgICAgICAgICB0aGlzLmRyYXdNaW5kTWFwQ2VudGVyVG9IaXN0b3J5KGFjdGlvbk9iamVjdCx0aGlzKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZihhY3Rpb25PYmplY3RbMF09PSdtaW5kTWFwTm9kZScpeworICAgICAgICAgICAgICAgIHRoaXMuZHJhd01pbmRNYXBOb2RlVG9IaXN0b3J5KGFjdGlvbk9iamVjdCx0aGlzKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZihhY3Rpb25PYmplY3RbMF09PSdjbGlwYXJ0Jyl7CisgICAgICAgICAgICAgICAgdGhpcy5kcmF3Q2xpcEFydFRvSGlzdG9yeShhY3Rpb25PYmplY3QsdGhpcyk7CisgICAgICAgICAgICB9CisJCQkKKwkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJbc3RvcmUgYWN0aW9uT2JqZWN0XSAiLGFjdGlvbk9iamVjdCk7CisJCQkKKwkJCXRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3QucHVzaChhY3Rpb25PYmplY3QpOworCQkJCQorCQldXT4KKwk8L21ldGhvZD4JCisJCisJPCEtLSBtZXRob2RzIGZvciBzeW5jaW5nIGV2ZW50cyAtLT4KKyAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJzdGFydE5ld09iamVjdFN5bmNQcm9jZXNzIiBmdW5jbmFtZT0id2hpdGVib2FyZHNlcnZpY2Uuc3RhcnROZXdPYmplY3RTeW5jUHJvY2VzcyIKKyAgICAgICAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4KKyAgICAJPGF0dHJpYnV0ZSBuYW1lPSJpc1N0YXJ0aW5nIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgCTxhdHRyaWJ1dGUgbmFtZT0idW5pcXVlT2JqZWN0U3luY05hbWUiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKyAgICAJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQudW5pcXVlT2JqZWN0U3luY05hbWU7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQuaXNTdGFydGluZzs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgCS8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisgICAgICAgICAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInN0YXJ0TmV3SW1hZ2VzU3luY3Byb2Nlc3M6ICIsdmFsdWUpOworICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4gICAKKyAgICA8L25ldFJlbW90ZUNhbGxIaWI+IAorICAgIAorICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9InNlbmRDb21wbGV0ZWRPYmplY3RTeW5jRXZlbnQiIGZ1bmNuYW1lPSJ3aGl0ZWJvYXJkc2VydmljZS5zZW5kQ29tcGxldGVkT2JqZWN0U3luY0V2ZW50IgorICAgICAgICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPgorICAgIAk8YXR0cmlidXRlIG5hbWU9InVuaXF1ZU9iamVjdFN5bmNOYW1lIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgICAgCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnVuaXF1ZU9iamVjdFN5bmNOYW1lOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAJLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZSB0aGUgcnRtcGNvbm5lY3Rpb24KKyAgICAgICAgICAgIAlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2VuZENvbXBsZXRlZEltYWdlc1N5bmNFdmVudDogIix2YWx1ZSk7CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPiAgIAorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4gICAKKyAgICAKKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InN0YXJ0U3RyZWFtaW5nIiBhcmdzPSJtZXNzYWdlT2JqIj4KKyAgICAgICAgbmV3IGx6LmluY29taW5nU2NyZWVuU2hhcmluZyhjYW52YXMse21lc3NhZ2VPYmo6bWVzc2FnZU9ian0pOworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0ic3RvcFN0cmVhbWluZyIgYXJncz0ibWVzc2FnZU9iaiI+CisgICAgICAgIAorICAgIDwvbWV0aG9kPgorCQorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvYmFzZS9zd2ZSZXNvdXJjZVZpZXcubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvYmFzZS9zd2ZSZXNvdXJjZVZpZXcubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkNDhlMzMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9iYXNlL3N3ZlJlc291cmNlVmlldy5sengKQEAgLTAsMCArMSwzMDUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisgICAgCis8Y2xhc3MgbmFtZT0ic3dmUmVzb3VyY2VWaWV3IiBleHRlbmRzPSJ2aWV3IiA+CisJCisJPGV2ZW50IG5hbWU9InByZXBhcmVGb3JEZWxldGUiIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJyZWZPYmoiIHZhbHVlPSJudWxsIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0iYWx0ZXJNb2R1cyIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJzdGFuZGFyZEZpbGVOYW1lIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9InJlY29yZGVyTW9kdXMiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9ImZ1bGxGaXQiIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0iYmFzZXVybCIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0iZmlsZU5hbWUiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwk8YXR0cmlidXRlIG5hbWU9Im1vZHVsZU5hbWUiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwk8YXR0cmlidXRlIG5hbWU9InBhcmVudFBhdGgiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwk8YXR0cmlidXRlIG5hbWU9InJvb20iIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwk8YXR0cmlidXRlIG5hbWU9ImRvbWFpbiIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPiAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9InNsaWRlTnVtYmVyIiB2YWx1ZT0iMSIgdHlwZT0ibnVtYmVyIiAvPiAKKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnR6b29tRmFjdG9yIiB2YWx1ZT0iMTAwIiB0eXBlPSJudW1iZXIiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJ6b29tbGV2ZWwiIHZhbHVlPSIyMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iaW5pdHdpZHRoIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iaW5pdGhlaWdodCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKyAgICAKKyAgICA8IS0tIGZvciB3bWwtbG9hZGVkIFNXRidzCisgICAgICAgIGF0dHJpYnV0ZSBvbmx5IHNldCBvbiBpbml0CisgICAgIC0tPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iaW5uZXJ3aWR0aCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImlubmVyaGVpZ2h0IiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iaW5uZXJ4IiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iaW5uZXJ5IiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudHpvb20iIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJ0eXBlT2ZPYmplY3QiIHZhbHVlPSJzd2YiIHR5cGU9InN0cmluZyIgLz4KKyAgICAKKwk8IS0tIGhvbGRzIHRoZSByZWZlcmVuY2VfaWQgdG8gdGhlIFN5bmNQcm9jZXNzIC0tPgorCTxhdHRyaWJ1dGUgbmFtZT0idW5pcXVlT2JqZWN0U3luY05hbWUiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4gICAgCisgICAgCisgICAgPHZpZXcgbmFtZT0iX3N3ZlZpZXciIHBsYXk9ImZhbHNlIj4KKyAgICAJCisgICAgCTwhLS0KKyAgICAJPGF0dHJpYnV0ZSBuYW1lPSJ0aW1laXNJbml0ZWQiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJzZW5kT2JqZWN0RGVsIiB2YWx1ZT0ibnVsbCIgLz4KKyAgICAgICAgIC0tPgorICAgICAgICAKKyAgICAgICAgPCEtLSBEbyBub3Qgc2VuZCB1cGRhdGUgZXZlbnRzIGluIGNhc2UgCisgICAgICAgICAgICB0aGlzIGlzIHN5bmMgZXZlbnQgYnJvYWRjYXN0ZWQgYnkgYW5vdGhlciB1c2VyIC0tPgorICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImRvU2VuZENoYW5nZVZhbHVlIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgICAgIAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmZyYW1lIiBhcmdzPSJpIj4KKyAgICAgICAgICAgIC8vLy9EZWJ1Zy53cml0ZSgib25mcmFtZSIsaSk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9ucGxheSIgYXJncz0iaSI+CisgICAgICAgICAgICAvLy8vRGVidWcud3JpdGUoIm9ucGxheSIsaSk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uc3RvcCIgYXJncz0iaSI+CisgICAgICAgICAgICAvLy8vRGVidWcud3JpdGUoIm9uc3RvcCIsaSk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgCisgICAgICAgIDwhLS0KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAgICAgICAgIHRoaXMuc2VuZE9iamVjdERlbCA9IG5ldyBMekRlbGVnYXRlKCB0aGlzLCAic2VuZE9iamVjdCIgKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib254IiBhcmdzPSJ4Ij4KKyAgICAgICAgCWlmICghdGhpcy5kb1NlbmRDaGFuZ2VWYWx1ZSkgeworICAgICAgICAJCXJldHVybjsKKyAgICAgICAgCX0KKyAgICAgICAgCQorICAgICAgICAgICAgaWYgKCF0aGlzLnRpbWVpc0luaXRlZCl7CisgICAgICAgICAgICAgICAgdGhpcy50aW1laXNJbml0ZWQ9dHJ1ZTsKKyAgICAgICAgICAgICAgICBsei5UaW1lci5hZGRUaW1lciggdGhpcy5zZW5kT2JqZWN0RGVsLCAyNTAgKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgbHouVGltZXIucmVzZXRUaW1lciggdGhpcy5zZW5kT2JqZWN0RGVsLCAyNTAgKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbnkiIGFyZ3M9InkiPgorICAgICAgICAJaWYgKCF0aGlzLmRvU2VuZENoYW5nZVZhbHVlKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoIXRoaXMudGltZWlzSW5pdGVkKXsKKyAgICAgICAgICAgICAgICB0aGlzLnRpbWVpc0luaXRlZD10cnVlOworICAgICAgICAgICAgICAgIGx6LlRpbWVyLmFkZFRpbWVyKCB0aGlzLnNlbmRPYmplY3REZWwsIDI1MCApOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBsei5UaW1lci5yZXNldFRpbWVyKCB0aGlzLnNlbmRPYmplY3REZWwsIDI1MCApOworICAgICAgICAgICAgfQorICAgICAgICA8L2hhbmRsZXI+ICAgICAgICAKKyAgICAgICAgCisgICAgICAgIDxtZXRob2QgbmFtZT0ic2VuZE9iamVjdCIgYXJncz0iaXRlbVJlZiI+CisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy5pbmZvKCJzZW5kT2JqZWN0IDo6IHNlbmRDdXJyZW50U1dGT2JqZWN0Iik7CisgICAgICAgICAgICB0aGlzLnBhcmVudC5wYXJlbnQuc2VuZEN1cnJlbnRTV0ZPYmplY3QodGhpcy5wYXJlbnQpOworICAgICAgICAgICAgdGhpcy50aW1laXNJbml0ZWQ9ZmFsc2U7CisgICAgICAgIDwvbWV0aG9kPgorICAgICAgICAgLS0+CisgICAgICAgIAorICAgICAgICA8bWV0aG9kIG5hbWU9ImluaXRpYWxMb2FkRnVsbEZpdCI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCIgLS0gZnVsbEZpdCAtLSAiLHBhcmVudC5wYXJlbnQuZnVsbEZpdCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAocGFyZW50LnBhcmVudC5mdWxsRml0KSB7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiIC0tIGZ1bGxGaXQgLTItICIsdGhpcy53aWR0aCx0aGlzLmhlaWdodCk7CisgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCIgLS0gZnVsbEZpdCAtMy0gIixwYXJlbnQucGFyZW50LndpZHRoLHBhcmVudC5wYXJlbnQuaGVpZ2h0KTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC8vU2NhbGUgdG8gY29udGFpbmVyIHdpZHRoL2hlaWdodAorICAgICAgICAgICAgICAgICAgICB2YXIgeFNjYWxlID0gKHBhcmVudC5wYXJlbnQucGFyZW50LndpZHRoLTE2KS90aGlzLndpZHRoOworICAgICAgICAgICAgICAgICAgICB2YXIgeVNjYWxlID0gKHBhcmVudC5wYXJlbnQucGFyZW50LmhlaWdodC0xNikvdGhpcy5oZWlnaHQ7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiIC0tIGZ1bGxGaXQgLTQtICIseFNjYWxlLHlTY2FsZSk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAoeFNjYWxlIDwgeVNjYWxlKSB7CisgICAgICAgICAgICAgICAgICAgIAlwYXJlbnQucGFyZW50LnNldEN1cnJlbnRTY2FsZUJ5RnVsbEZpdCh4U2NhbGUpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAJcGFyZW50LnBhcmVudC5zZXRDdXJyZW50U2NhbGVCeUZ1bGxGaXQoeVNjYWxlKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9ubG9hZCI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy5pbmZvKCJvbmxvYWQ6ICIsdGhpcy53aWR0aCx0aGlzLGhlaWdodCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy8vL0RlYnVnLndyaXRlKCJvbmxvYWQ6ICIsdGhpcy5zdG9wKTsKKyAgICAgICAgICAgICAgICB0aGlzLnN0b3AoKTsKKyAgICAgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgncGxheScsZmFsc2UpOyAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5pbml0d2lkdGggPSB0aGlzLndpZHRoOworICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LmluaXRoZWlnaHQgPSB0aGlzLmhlaWdodDsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnZnJhbWUnLHBhcmVudC5zbGlkZU51bWJlcik7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy9vbmx5IHNlbmQgc3luY0NvbW1hbmQgaWYgYWx0ZXJNb2R1cyBpcyB0cnVlIChtZWFuaW5nIHRoYXQgdGhpcyBpcyB0aGUgTW9kZXJhdG9yKQorICAgICAgICAgICAgICAgIC8vb3RoZXJ3aXNlIGp1c3Qgc2VuZCBhIG5vdGlmaWNhdGlvbiB0byBtb2RlcmF0b3IgdGhhdCB0aGlzIGlhbWdlIGhhcyBiZWVuIGxvYWRlZAorICAgICAgICAgICAgICAgIGlmICh0aGlzLnBhcmVudC5yZWNvcmRlck1vZHVzKSB7CisJCQkJCXRoaXMucGFyZW50LnJlZk9iai5zdG9yZVRlbXBWYWxzQW5kTG9hZFN5bmNMaXN0U1dGUmVjb3JkaW5nKHRoaXMucGFyZW50KTsKKwkJCQl9IGVsc2UgaWYgKHRoaXMucGFyZW50LmFsdGVyTW9kdXMpeworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLy90aGlzIGNvZGUgaXMgaW52b2tlZCB3aGVuIHRoZSBNb2RlcmF0b3IgbG9hZHMgdGhlIERvY3VtZW50CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5yZWZPYmouc3RvcmVUZW1wVmFsc0FuZExvYWRTeW5jTGlzdFNXRih0aGlzLnBhcmVudCk7CisgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCI9PT4gZG9TaG93T2JqZWN0Qm91bmRzIE1PRCAiKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5pdGlhbExvYWRGdWxsRml0KCk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5yZWZPYmouZG9TaG93T2JqZWN0Qm91bmRzKHRoaXMucGFyZW50Lm5hbWUpOworICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5yZWZPYmouZG9VcGRhdGVEb2N1bWVudFRvb2xCYXIoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLy90aGlzIGNvZGUgaXMgaW52b2tlZCB3aGVuIGFueSBwYXJ0aWNpcGFudHMgc3luY3Jvbml6ZXMgYW5kIGxvYWRzIHRoZSBkb2N1bWVudAorICAgICAgICAgICAgICAgICAgICAvL2JlY2F1c2UgYSBNb2RlcmF0b3IgaGFzIGxvYWRlZCBpdAorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIj09PiBkb1Nob3dPYmplY3RCb3VuZHMgUGFydGljaXBhbnQgIik7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRpYWxMb2FkRnVsbEZpdCgpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQucmVmT2JqLnNlbmRMb2FkTm90aWZpY2F0aW9uU1dGKHRoaXMucGFyZW50KTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnJlZk9iai5kb1VwZGF0ZURvY3VtZW50VG9vbEJhckJ5UGFydGljaXBhbnQodGhpcy5wYXJlbnQubmFtZSk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic3dmIGxvYWRlZCAtMi0gIix0aGlzLnBhcmVudC5yZWZPYmouaXNXbWxMb2FkZXJJbWFnZSk7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMucGFyZW50LnJlZk9iai5pc1dtbExvYWRlckltYWdlKXsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInN3ZiBsb2FkZWQgIix0aGlzLnBhcmVudC5pbm5lcndpZHRoLHRoaXMucGFyZW50LmlubmVyaGVpZ2h0KTsKKyAgICAgICAgICAgICAgICAJaWYgKHRoaXMucGFyZW50LmlubmVyd2lkdGggIT0gMCAmJiB0aGlzLnBhcmVudC5pbm5lcmhlaWdodCAhPSAwKSB7CisJICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnd2lkdGgnLHRoaXMucGFyZW50LmlubmVyd2lkdGgpOworCSAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsdGhpcy5wYXJlbnQuaW5uZXJoZWlnaHQpOworCSAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3gnLHRoaXMucGFyZW50LmlubmVyeCk7CisJICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgneScsdGhpcy5wYXJlbnQuaW5uZXJ5KTsKKyAgICAgICAgICAgICAgICAJfQorICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5jdXJyZW50em9vbUZhY3RvciA9IHRoaXMucGFyZW50LmN1cnJlbnR6b29tOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnJlZk9iai5sYXllcnMucHVzaCh0aGlzLnBhcmVudCk7CQkJCisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgdGhpcy5kb1NlbmRDaGFuZ2VWYWx1ZSA9IHRydWU7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgdGhpcy5vbmluaXQuc2VuZEV2ZW50KCk7CisgICAgICAgICAgICAgICAgLy90aGlzLnBhcmVudC5yZWZPYmoucGFyZW50LnBhcmVudC5pc2xvYWRlZEltYWdlLnNlbmRFdmVudCh0aGlzKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvL3NlbmQgbm90aWZpY2F0aW9uIHRvIHdtbC1sb2FkZXIKKyAgICAgICAgICAgICAgICAvL3RoaXMgaXMgc2VuZCBsYXRlciB0aGVuIGluIG5vcm1hbCBvYmplY3RzIGNhdXNlIGl0IG5lZWRzIHRvIGJlIHNlbmQgYWZ0ZXIgdGhlIGltYWdlCisgICAgICAgICAgICAgICAgLy9oYXMgYmVlbiBsb2FkZWQgY29tcGxldGVseQorICAgICAgICAgICAgICAgIC8vaWYgKHRoaXMucGFyZW50LnJlZk9iai5pc1dtbExvYWRlckltYWdlKXsKKyAgICAgICAgICAgICAgICAvLyAgICB0aGlzLnBhcmVudC5yZWZPYmouaXNXbWxMb2FkZXJJbWFnZT1mYWxzZTsKKyAgICAgICAgICAgICAgICAvLyAgICBpZiAodGhpcy5wYXJlbnQucmVmT2JqLm9ud21sTG9hZGVyU2VuZCkgdGhpcy5wYXJlbnQucmVmT2JqLm9ud21sTG9hZGVyU2VuZC5zZW5kRXZlbnQoJ3N3ZicpOworICAgICAgICAgICAgICAgIC8vfQorICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25lcnJvciIgYXJncz0iZXJyb3IiPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAvLy8vRGVidWcud3JpdGUoIm9uZXJyb3IgIitlcnJvcik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG5ldyBsei5lcnJvclBvcHVwKGNhbnZhcyx7ZXJyb3I6Im9uZXJyb3IgU1dGISEgIitlcnJvcn0pOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LmluaXR3aWR0aCA9IHRoaXMud2lkdGg7CisgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQuaW5pdGhlaWdodCA9IHRoaXMuaGVpZ2h0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvL29ubHkgc2VuZCBzeW5jQ29tbWFuZCBpZiBhbHRlck1vZHVzIGlzIHRydWUgKG1lYW5pbmcgdGhhdCB0aGlzIGlzIHRoZSBNb2RlcmF0b3IpCisgICAgICAgICAgICAgICAgLy9vdGhlcndpc2UganVzdCBzZW5kIGEgbm90aWZpY2F0aW9uIHRvIG1vZGVyYXRvciB0aGF0IHRoaXMgaWFtZ2UgaGFzIGJlZW4gbG9hZGVkCisgICAgICAgICAgICAgICAgaWYgKHRoaXMucGFyZW50LnJlY29yZGVyTW9kdXMpIHsKKwkJCQkJdGhpcy5wYXJlbnQucmVmT2JqLnN0b3JlVGVtcFZhbHNBbmRMb2FkU3luY0xpc3RTV0ZSZWNvcmRpbmcodGhpcy5wYXJlbnQpOworCQkJCX0gZWxzZSBpZiAodGhpcy5wYXJlbnQuYWx0ZXJNb2R1cyl7CisgICAgICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnJlZk9iai5zdG9yZVRlbXBWYWxzQW5kTG9hZFN5bmNMaXN0U1dGKHRoaXMucGFyZW50KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5yZWZPYmouc2VuZExvYWROb3RpZmljYXRpb25TV0YodGhpcy5wYXJlbnQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5yZWZPYmoubGF5ZXJzLnB1c2godGhpcy5wYXJlbnQpOwkJCQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHRoaXMub25pbml0LnNlbmRFdmVudCgpOworICAgICAgICAgICAgICAgIC8vdGhpcy5wYXJlbnQucmVmT2JqLnBhcmVudC5wYXJlbnQuaXNsb2FkZWRJbWFnZS5zZW5kRXZlbnQodGhpcy5wYXJlbnQpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vc2VuZCBub3RpZmljYXRpb24gdG8gd21sLWxvYWRlcgorICAgICAgICAgICAgICAgIC8vdGhpcyBpcyBzZW5kIGxhdGVyIHRoZW4gaW4gbm9ybWFsIG9iamVjdHMgY2F1c2UgaXQgbmVlZHMgdG8gYmUgc2VuZCBhZnRlciB0aGUgaW1hZ2UKKyAgICAgICAgICAgICAgICAvL2hhcyBiZWVuIGxvYWRlZCBjb21wbGV0ZWx5CisgICAgICAgICAgICAgICAgLy9pZiAodGhpcy5wYXJlbnQucmVmT2JqLmlzV21sTG9hZGVySW1hZ2UpeworICAgICAgICAgICAgICAgIC8vICAgIHRoaXMucGFyZW50LnJlZk9iai5pc1dtbExvYWRlckltYWdlPWZhbHNlOworICAgICAgICAgICAgICAgIC8vICAgIGlmICh0aGlzLnBhcmVudC5yZWZPYmoub253bWxMb2FkZXJTZW5kKSB0aGlzLnBhcmVudC5yZWZPYmoub253bWxMb2FkZXJTZW5kLnNlbmRFdmVudCgnc3dmJyk7CisgICAgICAgICAgICAgICAgLy99CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbnRpbWVvdXQiIGFyZ3M9ImVycm9yIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgLy8vL0RlYnVnLndyaXRlKCJvbnRpbWVvdXQgIitlcnJvcik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBuZXcgbHouZXJyb3JQb3B1cChjYW52YXMse2Vycm9yOiJvbnRpbWVvdXQgU1dGISEgIitlcnJvcn0pOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LmluaXR3aWR0aCA9IHRoaXMud2lkdGg7CisgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQuaW5pdGhlaWdodCA9IHRoaXMuaGVpZ2h0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvL29ubHkgc2VuZCBzeW5jQ29tbWFuZCBpZiBhbHRlck1vZHVzIGlzIHRydWUgKG1lYW5pbmcgdGhhdCB0aGlzIGlzIHRoZSBNb2RlcmF0b3IpCisgICAgICAgICAgICAgICAgLy9vdGhlcndpc2UganVzdCBzZW5kIGEgbm90aWZpY2F0aW9uIHRvIG1vZGVyYXRvciB0aGF0IHRoaXMgaWFtZ2UgaGFzIGJlZW4gbG9hZGVkCisgICAgICAgICAgICAgICAgaWYgKHRoaXMucGFyZW50LnJlY29yZGVyTW9kdXMpIHsKKwkJCQkJdGhpcy5wYXJlbnQucmVmT2JqLnN0b3JlVGVtcFZhbHNBbmRMb2FkU3luY0xpc3RTV0ZSZWNvcmRpbmcodGhpcy5wYXJlbnQpOworCQkJCX0gZWxzZSBpZiAodGhpcy5wYXJlbnQuYWx0ZXJNb2R1cyl7CisgICAgICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnJlZk9iai5zdG9yZVRlbXBWYWxzQW5kTG9hZFN5bmNMaXN0U1dGKHRoaXMucGFyZW50KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5yZWZPYmouc2VuZExvYWROb3RpZmljYXRpb25TV0YodGhpcy5wYXJlbnQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5yZWZPYmoubGF5ZXJzLnB1c2godGhpcy5wYXJlbnQpOwkJCQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHRoaXMub25pbml0LnNlbmRFdmVudCgpOworICAgICAgICAgICAgICAgIC8vdGhpcy5wYXJlbnQucmVmT2JqLnBhcmVudC5wYXJlbnQuaXNsb2FkZWRJbWFnZS5zZW5kRXZlbnQodGhpcy5wYXJlbnQpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vc2VuZCBub3RpZmljYXRpb24gdG8gd21sLWxvYWRlcgorICAgICAgICAgICAgICAgIC8vdGhpcyBpcyBzZW5kIGxhdGVyIHRoZW4gaW4gbm9ybWFsIG9iamVjdHMgY2F1c2UgaXQgbmVlZHMgdG8gYmUgc2VuZCBhZnRlciB0aGUgaW1hZ2UKKyAgICAgICAgICAgICAgICAvL2hhcyBiZWVuIGxvYWRlZCBjb21wbGV0ZWx5CisgICAgICAgICAgICAgICAgLy9pZiAodGhpcy5wYXJlbnQucmVmT2JqLmlzV21sTG9hZGVySW1hZ2UpeworICAgICAgICAgICAgICAgIC8vICAgIHRoaXMucGFyZW50LnJlZk9iai5pc1dtbExvYWRlckltYWdlPWZhbHNlOworICAgICAgICAgICAgICAgIC8vICAgIGlmICh0aGlzLnBhcmVudC5yZWZPYmoub253bWxMb2FkZXJTZW5kKSB0aGlzLnBhcmVudC5yZWZPYmoub253bWxMb2FkZXJTZW5kLnNlbmRFdmVudCgnc3dmJyk7CisgICAgICAgICAgICAgICAgLy99CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPiAKKyAgICAgICAgCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9ud2lkdGgiIGFyZ3M9InciPgorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9ud2lkdGggIix3KTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25oZWlnaHQiIGFyZ3M9ImgiPgorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9uaGVpZ2h0ICIsaCk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgCisgICAgPC92aWV3PiAgICAKKyAgICAKKyAgICA8IS0tCisgICAgPG9tX3ZzY3JvbGxiYXIgbmFtZT0iX3Njcm9sbHN0diIKKyAgICAgICAgICAgICAgICB2aXNpYmxlPSIkeyAoKGNhbnZhcy5pc21vZGVyYXRvcikgPyB0cnVlIDogKChjYW52YXMuaXNBbGxvd2VkVG9EcmF3KSA/IHRydWUgOiBmYWxzZSApKSB9IiAvPiAKKyAgICA8b21faHNjcm9sbGJhciBuYW1lPSJfc2Nyb2xsc3RoIgorICAgICAgICAgICAgICAgIHZpc2libGU9IiR7ICgoY2FudmFzLmlzbW9kZXJhdG9yKSA/IHRydWUgOiAoKGNhbnZhcy5pc0FsbG93ZWRUb0RyYXcpID8gdHJ1ZSA6IGZhbHNlICkpIH0iIC8+CisgICAgIC0tPiAgIAorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvYmFzZS90b29scy9iYXNlRHJhd0Fycm93Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL2Jhc2UvdG9vbHMvYmFzZURyYXdBcnJvdy5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTkwNDg4NgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL2Jhc2UvdG9vbHMvYmFzZURyYXdBcnJvdy5sengKQEAgLTAsMCArMSwzNjcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisgICAgCis8Y2xhc3MgbmFtZT0iYmFzZURyYXdBcnJvdyIgZXh0ZW5kcz0iYmFzZURyYXdVTGluZSIgPgorICAgIAorICAgIDwhLS0gZm9yIGRyYXdpbmcgZHJhd2Fycm93IC0tPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudGRyYXdhcnJvd2xpbmVzdHJva2UiIHZhbHVlPSIweDAwMDAwMCIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRkcmF3YXJyb3dsaW5lc3Ryb2tlRGlzIiB2YWx1ZT0iMSIgdHlwZT0ibnVtYmVyIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudGRyYXdhcnJvd2xpbmVzdHJva2VGaWxsIiB2YWx1ZT0iMHhGRjY2MDAiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50ZHJhd2Fycm93bGluZXN0cm9rZUZpbGxEaXMiIHZhbHVlPSIxIiB0eXBlPSJudW1iZXIiIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50ZHJhd2Fycm93bGluZWxpbmVXaWR0aCIgdmFsdWU9IjQiIHR5cGU9Im51bWJlciIgLz4gICAKKyAgICA8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRkcmF3YXJyb3dPcGFjaXR5IiB2YWx1ZT0iMSIgdHlwZT0ibnVtYmVyIiAvPgorICAgICAgCisgICAgPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAgICBkcmF3YXJyb3cKKyAgICAgLS0+CisgICAgIAorICAgIAorICAgIDxtZXRob2QgbmFtZT0ic3RhcnREcmF3YXJyb3dsaW5lIiBhcmdzPSJvaWRfbmFtZSI+CisgICAgICAgIDwhW0NEQVRBWworCSAgICAgICAgaWYgKG9pZF9uYW1lID09IG51bGwpIHsKKwkgICAgICAgICAgICBvaWRfbmFtZSA9ICdkcmF3YXJyb3cnK3RoaXMuZ2V0Q291bnRlcigpOworCSAgICAgICAgfQorCSAgICAgICAgCisJICAgICAgICB0aGlzLmN1cnJlbnRsYXllciA9IG5ldyBsei5kcmF3Vmlld05ldyh0aGlzLHsKKwkJICAgICAgICAgICAgbmFtZTpvaWRfbmFtZSx3aWR0aDp0aGlzLndpZHRoLGhlaWdodDp0aGlzLmhlaWdodCwKKwkJICAgICAgICAgICAgb3BhY2l0eTp0aGlzLmN1cnJlbnRkcmF3YXJyb3dPcGFjaXR5fSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciBwQXJyb3dTdGFydCA9IG5ldyBmbGFzaC5nZW9tLlBvaW50KHRoaXMuc3RhcnR4LHRoaXMuc3RhcnR5KTsKKyAgICAgICAgICAgIHZhciBwQXJyb3dFbmQgPSBuZXcgZmxhc2guZ2VvbS5Qb2ludCh0aGlzLmVuZHgsdGhpcy5lbmR5KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic3RhcnQsZW5kLGxpbmUiLHBBcnJvd1N0YXJ0LHBBcnJvd0VuZCx0aGlzLmN1cnJlbnRkcmF3YXJyb3dsaW5lbGluZVdpZHRoKTsKKyAgICAgICAgICAgIHRoaXMuZHJhd0Fycm93KHRoaXMuY3VycmVudGxheWVyLHBBcnJvd1N0YXJ0LHBBcnJvd0VuZCx0aGlzLmN1cnJlbnRkcmF3YXJyb3dsaW5lbGluZVdpZHRoLAorICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRkcmF3YXJyb3dsaW5lc3Ryb2tlRGlzLHRoaXMuY3VycmVudGRyYXdhcnJvd2xpbmVzdHJva2UsCisgICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudGRyYXdhcnJvd2xpbmVzdHJva2VGaWxsLHRoaXMuY3VycmVudGRyYXdhcnJvd2xpbmVzdHJva2VGaWxsRGlzKTsKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+IAorICAgIAorICAgIDxtZXRob2QgbmFtZT0iZW5kRHJhd2Fycm93bGluZSI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZW5kRHJhd2Fycm93bGluZSIsdGhpcy5zdGFydHgsdGhpcy5zdGFydHksdGhpcy5lbmR4LHRoaXMuZW5keSk7CisJICAgICAgICB2YXIgdGVtcE5hbWUgPSB0aGlzLmN1cnJlbnRsYXllci5uYW1lOworCSAgICAgICAgLy9EZWJ1Zy53cml0ZSgidGVtcE5hbWU6ICIsdGVtcE5hbWUpOworCSAgICAgICAgdGhpcy5jdXJyZW50bGF5ZXIuZGVzdHJveSgpOworCSAgICAgICAgCisJICAgICAgICAvL0dldEJvdW5kcyBvZiB0aGF0IE9iamVjdAorCSAgICAgICAgdmFyIG1pbnggPSB0aGlzLndpZHRoKzIwMDA7CisJICAgICAgICB2YXIgbWlueSA9IHRoaXMuaGVpZ2h0KzIwMDA7CisJICAgICAgICB2YXIgbWF4eCA9IC0yOworCSAgICAgICAgdmFyIG1heHkgPSAtMjsKKwkKKwkgICAgICAgIGlmICh0aGlzLnN0YXJ0eDxtaW54KSBtaW54PXRoaXMuc3RhcnR4OworCSAgICAgICAgaWYgKHRoaXMuZW5keDxtaW54KSBtaW54PXRoaXMuZW5keDsKKwkgICAgICAgIAorCSAgICAgICAgaWYgKHRoaXMuc3RhcnR4Pm1heHgpIG1heHg9dGhpcy5zdGFydHg7CisJICAgICAgICBpZiAodGhpcy5lbmR4Pm1heHgpIG1heHg9dGhpcy5lbmR4OworCSAgICAgICAgCisJICAgICAgICBpZiAodGhpcy5zdGFydHk8bWlueSkgbWlueT10aGlzLnN0YXJ0eTsKKwkgICAgICAgIGlmICh0aGlzLmVuZHk8bWlueSkgbWlueT10aGlzLmVuZHk7CisJICAgICAgICAKKwkgICAgICAgIGlmICh0aGlzLnN0YXJ0eT5tYXh5KSBtYXh5PXRoaXMuc3RhcnR5OworCSAgICAgICAgaWYgKHRoaXMuZW5keT5tYXh5KSBtYXh5PXRoaXMuZW5keTsKKwkgICAgICAgIAorCSAgICAgICAgdmFyIHdpZHRoID0gbWF4eC1taW54OworCSAgICAgICAgdmFyIGhlaWdodCA9IG1heHktbWlueTsKKwkgICAgICAgIAorCSAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgibWlueCxtaW55LHdpZHRoLGhlaWdodDogIixtaW54LG1pbnksd2lkdGgsaGVpZ2h0KTsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImVuZERyYXdhcnJvd2xpbmUiLHRoaXMuc3RhcnR4LHRoaXMuc3RhcnR5LHRoaXMuZW5keCx0aGlzLmVuZHkpOworICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAKKwkgICAgICAgIAorICAgICAgICAgICAgaWYgKG1pbnggPT0gdGhpcy5zdGFydHgpIHsKKyAgICAgICAgICAgICAgICB2YXIgeDEgPSAwOworICAgICAgICAgICAgICAgIHZhciB4MiA9IHdpZHRoOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB2YXIgeDEgPSB3aWR0aDsKKyAgICAgICAgICAgICAgICB2YXIgeDIgPSAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG1pbnkgPT0gdGhpcy5zdGFydHkpIHsKKyAgICAgICAgICAgICAgICB2YXIgeTEgPSAwOworICAgICAgICAgICAgICAgIHZhciB5MiA9IGhlaWdodDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdmFyIHkxID0gaGVpZ2h0OworICAgICAgICAgICAgICAgIHZhciB5MiA9IDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmKHRoaXMuaXNTbmFwVG9HcmlkKXsgICAgICAgIAkKKwkgICAgICAgIAltaW54ID0gTWF0aC5yb3VuZChtaW54L3RoaXMuZ3JpZFdpZHRoKSp0aGlzLmdyaWRXaWR0aDsKKwkJCSAgICBtaW55ID0gTWF0aC5yb3VuZChtaW55L3RoaXMuZ3JpZFdpZHRoKSp0aGlzLmdyaWRXaWR0aDsKKwkJCSAgICAKKwkJCSAgICAvL3gxID0gTWF0aC5yb3VuZCh4MS90aGlzLmdyaWRXaWR0aCkqdGhpcy5ncmlkV2lkdGg7CisJCQkgICAgLy95MSA9IE1hdGgucm91bmQoeTEvdGhpcy5ncmlkV2lkdGgpKnRoaXMuZ3JpZFdpZHRoOworCQkJICAgIAorCQkJICAgIC8veDIgPSBNYXRoLnJvdW5kKHgyL3RoaXMuZ3JpZFdpZHRoKSp0aGlzLmdyaWRXaWR0aDsKKwkJCSAgICAvL3kyID0gTWF0aC5yb3VuZCh5Mi90aGlzLmdyaWRXaWR0aCkqdGhpcy5ncmlkV2lkdGg7CisJICAgICAgICAJCSAgICAgICAgCQorICAgICAgICAJfQorCQkJICAgICAgICAgICAgICAgICAgICAgICAgCisJICAgICAgICB0aGlzLmN1cnJlbnRsYXllciA9IG5ldyBsei5kcmF3Vmlld05ldyh0aGlzLHsKKwkgICAgICAgICAgICBuYW1lOnRlbXBOYW1lLHg6bWlueCx5Om1pbnksd2lkdGg6d2lkdGgsaGVpZ2h0OmhlaWdodCwKKwkgICAgICAgICAgICBvcGFjaXR5OnRoaXMuY3VycmVudGRyYXdhcnJvd09wYWNpdHl9KTsKKwkgICAgICAgICAgICAKKwkgICAgICAgIHZhciBwQXJyb3dTdGFydCA9IG5ldyBmbGFzaC5nZW9tLlBvaW50KHgxLHkxKTsKKyAgICAgICAgICAgIHZhciBwQXJyb3dFbmQgPSBuZXcgZmxhc2guZ2VvbS5Qb2ludCh4Mix5Mik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInN0YXJ0LGVuZCxsaW5lIixwQXJyb3dTdGFydCxwQXJyb3dFbmQsdGhpcy5jdXJyZW50ZHJhd2Fycm93bGluZWxpbmVXaWR0aCk7CisgICAgICAgICAgICB0aGlzLmRyYXdBcnJvdyh0aGlzLmN1cnJlbnRsYXllcixwQXJyb3dTdGFydCxwQXJyb3dFbmQsdGhpcy5jdXJyZW50ZHJhd2Fycm93bGluZWxpbmVXaWR0aCwKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50ZHJhd2Fycm93bGluZXN0cm9rZURpcyx0aGlzLmN1cnJlbnRkcmF3YXJyb3dsaW5lc3Ryb2tlLAorICAgICAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRkcmF3YXJyb3dsaW5lc3Ryb2tlRmlsbCx0aGlzLmN1cnJlbnRkcmF3YXJyb3dsaW5lc3Ryb2tlRmlsbERpcyk7CisJICAgICAgICAgICAgCisJICAgICAgICAvL0FkZCBMYXllciB0byBnbG9iYWwgTGF5ZXIgICAgIAorCSAgICAgICAgdGhpcy5sYXllcnMucHVzaCh0aGlzLmN1cnJlbnRsYXllcik7CisJICAgICAgICB0aGlzLmRyYXdhcnJvd2xpbmVyZWdpc3RlckZpbmFsKHRoaXMuY3VycmVudGxheWVyLm5hbWUsCisgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50ZHJhd2Fycm93bGluZXN0cm9rZSx0aGlzLmN1cnJlbnRkcmF3YXJyb3dsaW5lbGluZVdpZHRoLAorICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudGRyYXdhcnJvd2xpbmVzdHJva2VGaWxsLHRoaXMuY3VycmVudGRyYXdhcnJvd2xpbmVzdHJva2VEaXMsCisgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50ZHJhd2Fycm93bGluZXN0cm9rZUZpbGxEaXMsdGhpcy5jdXJyZW50ZHJhd2Fycm93T3BhY2l0eSwKKyAgICAgICAgICAgICAgICBtaW54LG1pbnksd2lkdGgsaGVpZ2h0LAorICAgICAgICAgICAgICAgIHgxLHkxLHgyLHkyLHRydWUsdGhpcy5nZXRTV0ZEb2N1bWVudFN0YXR1cygpLAorICAgICAgICAgICAgICAgIHRoaXMuZ2V0WkluZGV4KCkpOworCSAgICAgICAgLy9EZWJ1Zy53cml0ZSgidDogIix0KTsKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+IAorICAgICAgIAorICAgIDxtZXRob2QgbmFtZT0iZHJhd2Fycm93bGluZXJlZ2lzdGVyRmluYWwiIGFyZ3M9Im5ld05hbWUsc3Ryb2tlLGxpbmUsZmlsbCxzdHJva2VEaXMsZmlsbERpcyxvcGFjaXR5LHgseSx3aWR0aCxoZWlnaHQseDEseTEseDIseTIsZG9DYWxsLHN3Zk9iaix6SW5kZXgiPgorICAgICAgICB2YXIgYWN0aW9uT2JqZWN0ID0gbmV3IEFycmF5KCk7CisgICAgICAgIGFjdGlvbk9iamVjdFswXSA9ICdkcmF3YXJyb3cnOworICAgICAgICBhY3Rpb25PYmplY3RbMV0gPSBzdHJva2U7CisgICAgICAgIGFjdGlvbk9iamVjdFsyXSA9IGxpbmU7CisgICAgICAgIGFjdGlvbk9iamVjdFszXSA9IGZpbGw7CisgICAgICAgIGFjdGlvbk9iamVjdFs0XSA9IHN0cm9rZURpczsKKyAgICAgICAgYWN0aW9uT2JqZWN0WzVdID0gZmlsbERpczsKKyAgICAgICAgYWN0aW9uT2JqZWN0WzZdID0gb3BhY2l0eTsKKyAgICAgICAgYWN0aW9uT2JqZWN0WzddID0geDE7ICAKKyAgICAgICAgYWN0aW9uT2JqZWN0WzhdID0geTE7ICAKKyAgICAgICAgYWN0aW9uT2JqZWN0WzldID0geDI7ICAgIAorICAgICAgICBhY3Rpb25PYmplY3RbMTBdID0geTI7CisgICAgICAgIGFjdGlvbk9iamVjdFsxMV0gPSB6SW5kZXg7Ly8tOAorICAgICAgICBhY3Rpb25PYmplY3RbMTJdID0gc3dmT2JqOy8vLTcKKyAgICAgICAgYWN0aW9uT2JqZWN0WzEzXSA9IHRoaXMuY291bnRlcjsvLy02IAorICAgICAgICBhY3Rpb25PYmplY3RbMTRdID0geDsvLy01CisgICAgICAgIGFjdGlvbk9iamVjdFsxNV0gPSB5Oy8vLTQKKyAgICAgICAgYWN0aW9uT2JqZWN0WzE2XSA9IHdpZHRoOy8vLTMKKyAgICAgICAgYWN0aW9uT2JqZWN0WzE3XSA9IGhlaWdodDsvLy0yCisgICAgICAgIGFjdGlvbk9iamVjdFsxOF0gPSBuZXdOYW1lOy8vLTEKKyAgICAgICAgdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdC5wdXNoKGFjdGlvbk9iamVjdCk7ICAgICAgIAorICAgICAgICBpZiAoZG9DYWxsKSB0aGlzLm9uc2hhcmVkTWVzc2FnZSgnZHJhdycsYWN0aW9uT2JqZWN0KTsKKyAgICA8L21ldGhvZD4gIAorICAgIAorICAgIDxtZXRob2QgbmFtZT0iZHJhd2Fycm93bGluZWFjdGlvbkhpc3RvcnkiIGFyZ3M9Imxhc3RBY3Rpb25PYmplY3QscGFyZW50VmlldyI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgLy9EZWJ1Zy53cml0ZSgiIyMgbGluZWFjdGlvbkhpc3RvcnkiLHBhcmVudFZpZXcsIiAyICMjIE5FVyB4LHkgIixsYXN0QWN0aW9uT2JqZWN0W2xhc3RBY3Rpb25PYmplY3QubGVuZ3RoLTVdLGxhc3RBY3Rpb25PYmplY3RbbGFzdEFjdGlvbk9iamVjdC5sZW5ndGgtNF0sIiB3aWR0aCxoZWlnaHQ6ICIsbGFzdEFjdGlvbk9iamVjdFtsYXN0QWN0aW9uT2JqZWN0Lmxlbmd0aC0zXSxsYXN0QWN0aW9uT2JqZWN0W2xhc3RBY3Rpb25PYmplY3QubGVuZ3RoLTJdKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIHRtcEN1cnJlbnRsYXllciA9IG5ldyBsei5kcmF3Vmlld05ldyhwYXJlbnRWaWV3LHsKKyAgICAgICAgICAgICAgICBuYW1lOmxhc3RBY3Rpb25PYmplY3RbbGFzdEFjdGlvbk9iamVjdC5sZW5ndGgtMV0sCisgICAgICAgICAgICAgICAgeDpsYXN0QWN0aW9uT2JqZWN0W2xhc3RBY3Rpb25PYmplY3QubGVuZ3RoLTVdLAorICAgICAgICAgICAgICAgIHk6bGFzdEFjdGlvbk9iamVjdFtsYXN0QWN0aW9uT2JqZWN0Lmxlbmd0aC00XSwKKyAgICAgICAgICAgICAgICB3aWR0aDpsYXN0QWN0aW9uT2JqZWN0W2xhc3RBY3Rpb25PYmplY3QubGVuZ3RoLTNdLAorICAgICAgICAgICAgICAgIGhlaWdodDpsYXN0QWN0aW9uT2JqZWN0W2xhc3RBY3Rpb25PYmplY3QubGVuZ3RoLTJdLAorICAgICAgICAgICAgICAgIG9wYWNpdHk6bGFzdEFjdGlvbk9iamVjdFs2XX0pOworICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgcEFycm93U3RhcnQgPSBuZXcgZmxhc2guZ2VvbS5Qb2ludChsYXN0QWN0aW9uT2JqZWN0WzddLGxhc3RBY3Rpb25PYmplY3RbOF0pOworICAgICAgICAgICAgdmFyIHBBcnJvd0VuZCA9IG5ldyBmbGFzaC5nZW9tLlBvaW50KGxhc3RBY3Rpb25PYmplY3RbOV0sbGFzdEFjdGlvbk9iamVjdFsxMF0pOworICAgICAgICAgICAgCisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJzdGFydCxlbmQsbGluZSIscEFycm93U3RhcnQscEFycm93RW5kLHRoaXMuY3VycmVudGRyYXdhcnJvd2xpbmVsaW5lV2lkdGgpOworICAgICAgICAgICAgdGhpcy5kcmF3QXJyb3codG1wQ3VycmVudGxheWVyLHBBcnJvd1N0YXJ0LHBBcnJvd0VuZCxsYXN0QWN0aW9uT2JqZWN0WzJdLAorICAgICAgICAgICAgICAgICAgICBsYXN0QWN0aW9uT2JqZWN0WzRdLGxhc3RBY3Rpb25PYmplY3RbMV0sCisgICAgICAgICAgICAgICAgICAgIGxhc3RBY3Rpb25PYmplY3RbM10sbGFzdEFjdGlvbk9iamVjdFs1XSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAvL0FkZCBMYXllciB0byBnbG9iYWwgTGF5ZXIgICAgIAorICAgICAgICAgICAgdGhpcy5sYXllcnMucHVzaCh0bXBDdXJyZW50bGF5ZXIpOworCisgICAgICAgICAgICB0aGlzLmRvU1dGRG9jdW1lbnRTdGF0dXModG1wQ3VycmVudGxheWVyLGxhc3RBY3Rpb25PYmplY3RbbGFzdEFjdGlvbk9iamVjdC5sZW5ndGgtN10pOworICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImRyYXdBcnJvdyIgYXJncz0iZ3JhcGhpY3Msc3RhcnQsZW5kLHRoaWNrbmVzcyxzdHJva2VEaXMsc3Ryb2tlLGZpbGwsZmlsbERpcyI+CisgICAgICAgIDwhW0NEQVRBWworICAgIC8vKGdyYXBoaWNzOkdyYXBoaWNzLAorICAgIC8vICAgICAgICAgICAgc3RhcnQ6UG9pbnQsZW5kOlBvaW50LAorICAgIC8vICAgICAgICAgICAgc3R5bGU6T2JqZWN0PW51bGwpOnZvaWQgeworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoc3RhcnQuZXF1YWxzKGVuZCkpIHJldHVybjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgYXJyb3dTdHlsZSA9IHsnc2hhZnRDb250cm9sUG9zaXRpb24nOjAuNSwKKyAgICAgICAgICAgICAgICAgICAgJ3NoYWZ0Q29udHJvbFNpemUnOjAuNSwKKyAgICAgICAgICAgICAgICAgICAgJ2hlYWRMZW5ndGgnOnRoaWNrbmVzcyo1LCAvL1BpeGVsIExlbmd0aCBvZiBhcnJvdyBoZWFkCisgICAgICAgICAgICAgICAgICAgICdoZWFkV2lkdGgnOnRoaWNrbmVzcyo1LC8vUmVsYXRpdmUgd2lkdGggb2YgYXJyb3cgaGVhZAorICAgICAgICAgICAgICAgICAgICAnZWRnZUNvbnRyb2xQb3NpdGlvbic6MC41LAorICAgICAgICAgICAgICAgICAgICAnZWRnZUNvbnRyb2xTaXplJzowLjUsCisgICAgICAgICAgICAgICAgICAgICdzaGFmdFBvc2l0aW9uJzowLAorICAgICAgICAgICAgICAgICAgICAnc2hhZnRUaGlja25lc3MnOnRoaWNrbmVzcworICAgICAgICAgICAgICAgICAgICB9OworICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgZnVsbFZlY3Q6UG9pbnQgPSBlbmQuc3VidHJhY3Qoc3RhcnQpOworICAgICAgICAgICAgdmFyIGhhbGZXaWR0aDpOdW1iZXIgPSAoYXJyb3dTdHlsZS5oZWFkV2lkdGggIT0gLTEpID8gYXJyb3dTdHlsZS5oZWFkV2lkdGgvMiA6IGFycm93U3R5bGUuaGVhZExlbmd0aC8yOyAKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy9GaWd1cmUgb3V0IHRoZSBsaW5lIHN0YXJ0L2VuZCBwb2ludHMKKyAgICAgICAgICAgIHZhciBzdGFydE5vcm0gPSBuZXcgZmxhc2guZ2VvbS5Qb2ludChmdWxsVmVjdC55LC1mdWxsVmVjdC54KTsKKyAgICAgICAgICAgIHN0YXJ0Tm9ybS5ub3JtYWxpemUoYXJyb3dTdHlsZS5zaGFmdFRoaWNrbmVzcy8yKTsKKyAgICAgICAgICAgIHZhciBzdGFydDEgPSBzdGFydC5hZGQoc3RhcnROb3JtKTsKKyAgICAgICAgICAgIHZhciBzdGFydDIgPSBzdGFydC5zdWJ0cmFjdChzdGFydE5vcm0pOworICAgICAgICAgICAgdmFyIGVuZDEgPSBlbmQuYWRkKHN0YXJ0Tm9ybSk7CisgICAgICAgICAgICB2YXIgZW5kMiA9IGVuZC5zdWJ0cmFjdChzdGFydE5vcm0pOworICAgICAgICAgICAgCisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJzdGFydE5vcm06ICIsc3RhcnROb3JtLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic3RhcnQxOiAiLHN0YXJ0MS50b1N0cmluZygpKTsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInN0YXJ0MjogIixzdGFydDIudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJlbmQxOiAiLGVuZDEudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJlbmQyOiAiLGVuZDIudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vZmlndXJlIG91dCB3aGVyZSB0aGUgYXJyb3cgaGVhZCBzdGFydHMKKyAgICAgICAgICAgIHZhciBoZWFkUG50ID0gZnVsbFZlY3QuY2xvbmUoKTsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImhlYWRQbnQgMTogIixoZWFkUG50LnRvU3RyaW5nKCkpOworICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiaGVhZFBudC5sZW5ndGggMTogIixoZWFkUG50Lmxlbmd0aCk7CisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJhcnJvd1N0eWxlLmhlYWRMZW5ndGggMTogIixhcnJvd1N0eWxlLmhlYWRMZW5ndGgpOworICAgICAgICAgICAgaGVhZFBudC5ub3JtYWxpemUoaGVhZFBudC5sZW5ndGgtYXJyb3dTdHlsZS5oZWFkTGVuZ3RoKTsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImhlYWRQbnQgMjogIixoZWFkUG50LnRvU3RyaW5nKCkpOworICAgICAgICAgICAgaGVhZFBudCA9IGhlYWRQbnQuYWRkKHN0YXJ0KTsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImhlYWRQbnQgMzogIixoZWFkUG50LnRvU3RyaW5nKCkpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvL2NhbGN1bGF0ZSB0aGUgYXJyb3doZWFkIGNvcm5lcnMKKyAgICAgICAgICAgIHZhciBoZWFkUG50Tm9ybSA9IHN0YXJ0Tm9ybS5jbG9uZSgpOworICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiaGVhZFBudE5vcm0gXl46ICIsaGVhZFBudE5vcm0udG9TdHJpbmcoKSk7CisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJoYWxmV2lkdGggXl46ICIsaGFsZldpZHRoKTsKKyAgICAgICAgICAgIGhlYWRQbnROb3JtLm5vcm1hbGl6ZShoYWxmV2lkdGgpOworICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiaGVhZFBudE5vcm06ICIsaGVhZFBudE5vcm0udG9TdHJpbmcoKSk7CisgICAgICAgICAgICB2YXIgZWRnZTEgPSBoZWFkUG50LmFkZChoZWFkUG50Tm9ybSk7CisgICAgICAgICAgICB2YXIgZWRnZTIgPSBoZWFkUG50LnN1YnRyYWN0KGhlYWRQbnROb3JtKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZWRnZTE6ICIsZWRnZTEudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJlZGdlMjogIixlZGdlMi50b1N0cmluZygpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy9GaWd1cmUgb3V0IHdoZXJlIHRoZSBhcnJvdyBjb25uZWN0cyB0aGUgdGhlIHNoYWZ0LCB0aGVuIGNhbGMgdGhlIGludGVyc2VjdGlvbnMKKyAgICAgICAgICAgIHZhciBzaGFmdENlbnRlciA9IGZsYXNoLmdlb20uUG9pbnQuaW50ZXJwb2xhdGUoZW5kLGhlYWRQbnQsYXJyb3dTdHlsZS5zaGFmdFBvc2l0aW9uKTsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImVuZDogIixlbmQudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJoZWFkUG50IixoZWFkUG50LnRvU3RyaW5nKCkpOworICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiYXJyb3dTdHlsZS5zaGFmdFBvc2l0aW9uOiAiLGFycm93U3R5bGUuc2hhZnRQb3NpdGlvbik7CisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJzaGFmdENlbnRlciIsc2hhZnRDZW50ZXIudG9TdHJpbmcoKSk7CisgICAgICAgICAgICB2YXIgaW50ZXIxID0gdGhpcy5nZXRMaW5lSW50ZXJzZWN0aW9uKHN0YXJ0MSxlbmQxLHNoYWZ0Q2VudGVyLGVkZ2UxKTsKKyAgICAgICAgICAgIHZhciBpbnRlcjIgPSB0aGlzLmdldExpbmVJbnRlcnNlY3Rpb24oc3RhcnQyLGVuZDIsc2hhZnRDZW50ZXIsZWRnZTIpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJpbnRlcjE6ICIsaW50ZXIxLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiaW50ZXIyOiAiLGludGVyMi50b1N0cmluZygpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy9GaWd1cmUgb3V0IHRoZSBjb250cm9sIHBvaW50cworICAgICAgICAgICAgdmFyIGVkZ2VDZW50ZXIgPSBmbGFzaC5nZW9tLlBvaW50LmludGVycG9sYXRlKGVuZCxoZWFkUG50LGFycm93U3R5bGUuZWRnZUNvbnRyb2xQb3NpdGlvbik7CisgICAgICAgICAgICB2YXIgZWRnZU5vcm0gPSBzdGFydE5vcm0uY2xvbmUoKTsKKyAgICAgICAgICAgIGVkZ2VOb3JtLm5vcm1hbGl6ZShoYWxmV2lkdGgqYXJyb3dTdHlsZS5lZGdlQ29udHJvbFNpemUpOworICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiaGFsZldpZHRoKmFycm93U3R5bGUuZWRnZUNvbnRyb2xTaXplOiAiKyhoYWxmV2lkdGgqYXJyb3dTdHlsZS5lZGdlQ29udHJvbFNpemUpKTsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImVkZ2VOb3JtOiAiK2VkZ2VOb3JtLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgdmFyIGVkZ2VDbnRybDEgPSBlZGdlQ2VudGVyLmFkZChlZGdlTm9ybSk7CisgICAgICAgICAgICB2YXIgZWRnZUNudHJsMiA9IGVkZ2VDZW50ZXIuc3VidHJhY3QoZWRnZU5vcm0pOworCisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJlZGdlQ250cmwxOiAiLGVkZ2VDbnRybDEudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJlZGdlQ250cmwyOiAiLGVkZ2VDbnRybDIudG9TdHJpbmcoKSk7CisKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm1vdmVUbzogIixzdGFydDEueCxzdGFydDEueSk7CisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJsaW5lVG8iLGludGVyMS54LGludGVyMS55KTsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImxpbmVUbyIsZWRnZTEueCxlZGdlMS55KTsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInF1YWRyYXRpY0N1cnZlVG8iLGVkZ2VDbnRybDEueCxlZGdlQ250cmwxLnksZW5kLngsZW5kLnkpOworICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgicXVhZHJhdGljQ3VydmVUbyIsZWRnZUNudHJsMi54LGVkZ2VDbnRybDIueSxlZGdlMi54LGVkZ2UyLnkpOworICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgibGluZVRvIixpbnRlcjIueCxpbnRlcjIueSk7CisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJsaW5lVG8iLHN0YXJ0Mi54LHN0YXJ0Mi55KTsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImxpbmVUbyIsc3RhcnQxLngsc3RhcnQxLnkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBncmFwaGljcy5tb3ZlVG8oc3RhcnQxLngsc3RhcnQxLnkpOworICAgICAgICAgICAgZ3JhcGhpY3MubGluZVRvKGludGVyMS54LGludGVyMS55KTsKKyAgICAgICAgICAgIGdyYXBoaWNzLmxpbmVUbyhlZGdlMS54LGVkZ2UxLnkpOworICAgICAgICAgICAgZ3JhcGhpY3MucXVhZHJhdGljQ3VydmVUbyhlZGdlQ250cmwxLngsZWRnZUNudHJsMS55LGVuZC54LGVuZC55KTsKKyAgICAgICAgICAgIGdyYXBoaWNzLnF1YWRyYXRpY0N1cnZlVG8oZWRnZUNudHJsMi54LGVkZ2VDbnRybDIueSxlZGdlMi54LGVkZ2UyLnkpOworICAgICAgICAgICAgZ3JhcGhpY3MubGluZVRvKGludGVyMi54LGludGVyMi55KTsKKyAgICAgICAgICAgIGdyYXBoaWNzLmxpbmVUbyhzdGFydDIueCxzdGFydDIueSk7CisgICAgICAgICAgICBncmFwaGljcy5saW5lVG8oc3RhcnQxLngsc3RhcnQxLnkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoc3Ryb2tlRGlzIT0tMSl7CisgICAgICAgICAgICAgICAgZ3JhcGhpY3Muc3Ryb2tlU3R5bGUgPSBzdHJva2U7CisgICAgICAgICAgICAgICAgZ3JhcGhpY3Muc3Ryb2tlKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChmaWxsRGlzIT0tMSl7CisgICAgICAgICAgICAgICAgZ3JhcGhpY3MuZmlsbFN0eWxlID0gZmlsbDsKKyAgICAgICAgICAgICAgICBncmFwaGljcy5maWxsKCk7CisgICAgICAgICAgICB9CisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iZ2V0TGluZUludGVyc2VjdGlvbiIgYXJncz0iYTEsYTIsYjEsYjIiPgorICAgICAgICA8IVtDREFUQVsgCisgICAgICAgIAorICAgICAgICAgICAgLy9jYWxjdWxhdGUgZGlyZWN0aW9uYWwgY29uc3RhbnRzCisgICAgICAgICAgICB2YXIgazEgPSAoYTIueS1hMS55KSAvIChhMi54LWExLngpOworICAgICAgICAgICAgdmFyIGsyID0gKGIyLnktYjEueSkgLyAoYjIueC1iMS54KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gaWYgdGhlIGRpcmVjdGlvbmFsIGNvbnN0YW50cyBhcmUgZXF1YWwsIHRoZSBsaW5lcyBhcmUgcGFyYWxsZWwsCisgICAgICAgICAgICAvLyBtZWFuaW5nIHRoZXJlIGlzIG5vIGludGVyc2VjdGlvbiBwb2ludC4KKyAgICAgICAgICAgIGlmKCBrMSA9PSBrMiApIHJldHVybiBudWxsOworICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgeCA9IDA7CisgICAgICAgICAgICB2YXIgeSA9IDA7CisgICAgICAgICAgICB2YXIgbTEgPSAwOworICAgICAgICAgICAgdmFyIG0yID0gMDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiazEiLGsxKTsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImsyIixrMik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIGFuIGluZmluaXRlIGRpcmVjdGlvbmFsIGNvbnN0YW50IG1lYW5zIHRoZSBsaW5lIGlzIHZlcnRpY2FsCisgICAgICAgICAgICBpZiggIWlzRmluaXRlKGsxKSApIHsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJrMSBeXiAwIik7CisgICAgICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiazIiLGsyLChiMi55LWIxLnkpKTsKKyAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJiMS5nZXRZKCk6ICIrYjEueSk7CisgICAgICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiYjIuZ2V0WSgpOiAiK2IyLnkpOworICAgICAgICAgICAgICAgIC8vIHNvIHRoZSBpbnRlcnNlY3Rpb24gbXVzdCBiZSBhdCB0aGUgeCBjb29yZGluYXRlIG9mIHRoZSBsaW5lCisgICAgICAgICAgICAgICAgeCA9IGExLng7CisgICAgICAgICAgICAgICAgbTIgPSBiMS55IC0gazIgKiBiMS54OworICAgICAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm0yIixtMik7CisgICAgICAgICAgICAgICAgeSA9IGsyICogeCArIG0yOworICAgICAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInkiLHkpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBmb3IgbGluZSAyCisgICAgICAgICAgICB9IGVsc2UgaWYgKCAhaXNGaW5pdGUoazIpICkgeworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImsyIF4gMCIpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG0xID0gYTEueSAtIGsxICogYTEueDsKKyAgICAgICAgICAgICAgICB4ID0gYjEueDsKKyAgICAgICAgICAgICAgICB5ID0gazEgKiB4ICsgbTE7CisKKyAgICAgICAgICAgIC8vIGlmIG5laXRoZXIgb2YgdGhlIGxpbmVzIGFyZSB2ZXJ0aWNhbAorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJuZWl0aGVyIik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBtMSA9IGExLnkgLSBrMSAqIGExLng7CisgICAgICAgICAgICAgICAgbTIgPSBiMS55IC0gazIgKiBiMS54OyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgeCA9IChtMS1tMikgLyAoazItazEpOworICAgICAgICAgICAgICAgIHkgPSBrMSAqIHggKyBtMTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgcmV0dXJuIG5ldyBmbGFzaC5nZW9tLlBvaW50KHgseSk7CisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPiAgICAKKyAgICAKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL2Jhc2UvdG9vbHMvYmFzZURyYXdDbGlwQXJ0Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL2Jhc2UvdG9vbHMvYmFzZURyYXdDbGlwQXJ0Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OWI3MWI2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvYmFzZS90b29scy9iYXNlRHJhd0NsaXBBcnQubHp4CkBAIC0wLDAgKzEsNjUwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCQorCis8Y2xhc3MgbmFtZT0iZHJhd0NsaXBBcnRXaGl0ZUJvYXJkIiA+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJjbGlwQXJ0RW5keCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImNsaXBBcnRFbmR5IiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgIAorICAgIDwhLS0gTm90IG5lZWRlZCBhbnltb3JlLCB1c2UgTHpWaWV3LnNldENvbG9yIGluc3RlYWQKKyAgICA8bWV0aG9kIG5hbWU9InNldFRpbnQiIGFyZ3M9ImNvbG9yLCBicmlnaHRuZXNzIj4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgIGlmIChjb2xvciAhPSAiIiAmJiBjb2xvciAhPSBudWxsKXsKKyAgICAgICAgICAgIGlmIChicmlnaHRuZXNzID09IG51bGwpIHsgYnJpZ2h0bmVzcyA9IDA7IH0KKyAgICAgICAgICAgIHZhciByZ2IgPSBjb2xvcjsKKyAgICAgICAgICAgIHZhciByZWQ9KHJnYiA+PiAxNikgJiAweEZGOworICAgICAgICAgICAgdmFyIGdyZWVuPShyZ2IgPj4gOCkgJiAweEZGOworICAgICAgICAgICAgdmFyIGJsdWU9cmdiICYgMHhGRjsKKworICAgICAgICAgICAgdGhpcy5zZXRDb2xvclRyYW5zZm9ybSggeyByYSA6IHJlZCwgZ2EgOiBncmVlbiwgYmEgOiBibHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJiIDogMCwgZ2IgOiAwLCBiYiA6IDEwMCB9ICk7CisgICAgICAgIH0KKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgIC0tPgorICAgICAKKzwvY2xhc3M+CQorICAgIAorPGNsYXNzIG5hbWU9ImJhc2VEcmF3Q2xpcEFydCIgZXh0ZW5kcz0iYmFzZURyYXdBcnJvdyIgPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0ibWluQ2xpcEFydHgiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJtYXhDbGlwQXJ0eCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKwk8YXR0cmlidXRlIG5hbWU9Im1pbkNsaXBBcnR5IiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibWF4Q2xpcEFydHkiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJkZWx0YUNsaXBBcnR4IiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iZGVsdGFDbGlwQXJ0eSIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9ImNsaXBBcnRFbmR4IiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iY2xpcEFydEVuZHkiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50Q2xpcEFydFJlc3NvdXJjZU5hbWUiIHZhbHVlPSJpZGVhLnBuZyIgdHlwZT0ic3RyaW5nIi8+CisJICAgIAorICAgIDxtZXRob2QgbmFtZT0ic3RhcnREcmF3Q2xpcEFydCIgYXJncz0ib2lkX25hbWUiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgaWYgKG9pZF9uYW1lID09IG51bGwpIHsKKyAgICAgICAgICAgIG9pZF9uYW1lID0gJ2NsaXBhcnQnK3RoaXMuZ2V0Q291bnRlcigpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0aGlzLmN1cnJlbnRsYXllciA9IG5ldyBsei5kcmF3Vmlld05ldyh0aGlzLHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6b2lkX25hbWUsd2lkdGg6dGhpcy53aWR0aCxoZWlnaHQ6dGhpcy5oZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGFjaXR5OnRoaXMuY3VycmVudGRyYXdhcnJvd09wYWNpdHl9KTsKKyAgICAgICAgIAorICAgICAgICB0aGlzLnN0YXJ0eCA9IHRoaXMuY3VycmVudGxheWVyLmdldE1vdXNlKCd4Jyk7CisgICAgICAgIHRoaXMuc3RhcnR5ID0gdGhpcy5jdXJyZW50bGF5ZXIuZ2V0TW91c2UoJ3knKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICB2YXIgaW1hZ2V1cmwgPSBjYW52YXMuZ2V0VXJsKCkgKyAncHVibGljL2NsaXBhcnRzLycrdGhpcy5jdXJyZW50Q2xpcEFydFJlc3NvdXJjZU5hbWU7CisgICAgICAgIAorICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiaW1hZ2V1cmwgOjogIixpbWFnZXVybCk7CisgICAgICAgIAorICAgICAgICBuZXcgbHouZHJhd0NsaXBBcnRXaGl0ZUJvYXJkKHRoaXMuY3VycmVudGxheWVyLHsKKyAgICAgICAgCSAgICAgICAgICAgICAgICB3aWR0aDoxMDAsaGVpZ2h0OjEwMCxzdHJldGNoZXM6J2JvdGgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6dGhpcy5zdGFydHgseTp0aGlzLnN0YXJ0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2JnY29sb3I6MHhGRjMzMDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2U6aW1hZ2V1cmwsbmFtZTonY2xpcGFydCd9KTsKKworICAgICAgICB0aGlzLm1pbkNsaXBBcnR4ID0gdGhpcy5zdGFydHg7CisgICAgICAgIHRoaXMubWluQ2xpcEFydHkgPSB0aGlzLnN0YXJ0eTsKKyAgICAgICAgdGhpcy5tYXhDbGlwQXJ0eCA9IHRoaXMuc3RhcnR4KzEwMDsKKyAgICAgICAgdGhpcy5tYXhDbGlwQXJ0eSA9IHRoaXMuc3RhcnR5KzEwMDsKKyAgICAgICAgdGhpcy5jbGlwQXJ0RW5keCA9IHRoaXMubWF4Q2xpcEFydHg7CisgICAgICAgIHRoaXMuY2xpcEFydEVuZHkgPSB0aGlzLm1heENsaXBBcnR5OworICAgICAgICB0aGlzLmRlbHRhQ2xpcEFydHggPSAwOworICAgICAgICB0aGlzLmRlbHRhQ2xpcEFydHkgPSAwOworICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0ic2V0U3RhcnRQb2ludCIgYXJncz0ic3gsc3kiPgorICAgIAl0aGlzLnN0YXJ0eCA9IHN4OworICAgICAgICB0aGlzLnN0YXJ0eSA9IHN5OworICAgIDwvbWV0aG9kPgorICAgICAKKyAgICA8bWV0aG9kIG5hbWU9InRyYWNrRHJhd0NsaXBBcnQiPiAgIAorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgLy9BZGQgUmVzb3VyY2UKKyAgICAgICAgLy92YXIgdCA9IG5ldyBsei5kcmF3Q2xpcEFydFdoaXRlQm9hcmQodGhpcy5jdXJyZW50bGF5ZXIseworICAgICAgICAvLyAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2U6aW1hZ2V1cmwseDp0aGlzLnN0YXJ0eCx5OnRoaXMuc3RhcnR5fSk7CisgICAgICAgIAorICAgICAgICAvL0NvbG9yCisgICAgICAgIC8vdC5zZXRUaW50KHRoaXMuY3VycmVudGRyYXdhcnJvd2xpbmVzdHJva2UsNjApOworICAgICAgICAvL3Quc2V0Q29sb3IodGhpcy5jdXJyZW50ZHJhd2Fycm93bGluZXN0cm9rZSk7CisgICAgICAgIHZhciB0RW5kWCA9IHRoaXMuY3VycmVudGxheWVyLmdldE1vdXNlKCd4Jyk7CisgICAgICAgIHZhciB0RW5kWSA9IHRoaXMuY3VycmVudGxheWVyLmdldE1vdXNlKCd5Jyk7CisgICAgICAgIAorICAgICAgICB0aGlzLnRyYWNrRHJhd0NsaXBBcnREcmF3KHRFbmRYLHRFbmRZLHRoaXMuY3VycmVudGxheWVyLmNsaXBhcnQpOworICAgICAgICAKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+ICAgIAorICAgICAgICAKKyAgICA8bWV0aG9kIG5hbWU9InRyYWNrRHJhd0NsaXBBcnREcmF3IiBhcmdzPSJ0RW5kWCx0RW5kWSx0Ij4gICAKKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgIC8vQWRkIFJlc291cmNlCisgICAgICAgIC8vdmFyIHQgPSBuZXcgbHouZHJhd0NsaXBBcnRXaGl0ZUJvYXJkKHRoaXMuY3VycmVudGxheWVyLHsKKyAgICAgICAgLy8gICAgICAgICAgICAgICAgICAgIHJlc291cmNlOmltYWdldXJsLHg6dGhpcy5zdGFydHgseTp0aGlzLnN0YXJ0eX0pOworICAgICAgICAKKyAgICAgICAgLy9Db2xvcgorICAgICAgICAvL3Quc2V0VGludCh0aGlzLmN1cnJlbnRkcmF3YXJyb3dsaW5lc3Ryb2tlLDYwKTsKKyAgICAgICAgLy90LnNldENvbG9yKHRoaXMuY3VycmVudGRyYXdhcnJvd2xpbmVzdHJva2UpOworICAgICAgICAKKyAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidHJhY2tEcmF3Q2xpcEFydERyYXcgIix0RW5kWCx0RW5kWSx0KTsKKyAgICAgICAgCisgICAgICAgIHRoaXMuY2xpcEFydEVuZHggPSB0RW5kWDsKKyAgICAgICAgdGhpcy5jbGlwQXJ0RW5keSA9IHRFbmRZOworICAgICAgICAKKyAgICAgICAgdmFyIHR4ID0gdEVuZFgtdGhpcy5zdGFydHg7CisgICAgICAgIHZhciB0eSA9IHRFbmRZLXRoaXMuc3RhcnR5OworICAgICAgICAKKyAgICAgICAgdmFyIGdlZ2Vua2F0aGV0ZSA9IE1hdGguYWJzKHR5KTsKKyAgICAgICAgdmFyIGFua2F0aGV0ZSA9IE1hdGguYWJzKHR4KTsgCisgICAgICAgIHZhciBoeXBvdGhlbnVzZSA9IE1hdGguc3FydCgoYW5rYXRoZXRlKmFua2F0aGV0ZSkrKGdlZ2Vua2F0aGV0ZSpnZWdlbmthdGhldGUpKTsKKyAgICAgICAgdmFyIHNpbkFscGhhID0gKGdlZ2Vua2F0aGV0ZS9oeXBvdGhlbnVzZSk7CisgICAgICAgIHZhciBwYWxwaGEgPSBNYXRoLmFzaW4oc2luQWxwaGEpOworICAgICAgICB2YXIgYWxwaGEgPSBwYWxwaGEvKE1hdGguUEkvMTgwKTsKKyAgICAgICAgCisgICAgICAgIHZhciB0TGVuZ3RoID0gTWF0aC5zcXJ0KDIpLzIqaHlwb3RoZW51c2U7CisgICAgICAgIAorICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJ0eCx0eSxhbHBoYSxzaW5BbHBoYSx0TGVuZ3RoICIrdHgrIiAiK3R5KyIgIithbHBoYSsiICIrc2luQWxwaGErIiAiK3RMZW5ndGgpOworICAgICAgICAKKyAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiQ0FMQyB0eCx0eSIsdHgsdHkpOworICAgICAgICAKKyAgICAgICAgaWYgKE1hdGguYWJzKHR4KSA8IDIgJiYgTWF0aC5hYnModHkpIDwgMikgeworICAgICAgICAJCisgICAgICAgIAl0aGlzLm1pbkNsaXBBcnR4ID0gdGhpcy5zdGFydHg7CisgICAgICAgICAgICB0aGlzLm1pbkNsaXBBcnR5ID0gdGhpcy5zdGFydHk7CisgICAgICAgICAgICB0aGlzLm1heENsaXBBcnR4ID0gdGhpcy5zdGFydHgrMTAwOworICAgICAgICAgICAgdGhpcy5tYXhDbGlwQXJ0eSA9IHRoaXMuc3RhcnR5KzEwMDsKKyAgICAgICAgICAgIHRoaXMuY2xpcEFydEVuZHggPSB0aGlzLm1heENsaXBBcnR4OworICAgICAgICAgICAgdGhpcy5jbGlwQXJ0RW5keSA9IHRoaXMubWF4Q2xpcEFydHk7CisgICAgICAgICAgICB0LnNldEF0dHJpYnV0ZSgncm90YXRpb24nLDApOworICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLmRlbHRhQ2xpcEFydHggPSAwOworICAgICAgICAgICAgdGhpcy5kZWx0YUNsaXBBcnR5ID0gMDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiIElTIFpFUk8gIix0aGlzLnN0YXJ0eCx0aGlzLnN0YXJ0eSk7CisgICAgICAgIAkKKyAgICAgICAgfSBlbHNlIGlmICh0eD49MCAmJiB0eT49MCl7ICAgIAorICAgICAgICAgICAgdC5zZXRBdHRyaWJ1dGUoJ3JvdGF0aW9uJywoYWxwaGEtNDUpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIHRSb3RhdGUgPSAoYWxwaGEtNDUpOworICAgICAgICAgICAgdmFyIHBSb3RhdGUgPSB0Um90YXRlICogKE1hdGguUEkvMTgwKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8xLiBRdWFkcmFudCAgbGVmdC1kb3duCisgICAgICAgICAgICB2YXIgYW5rYXRoZXRlXzIgPSBNYXRoLmNvcyhwUm90YXRlKSp0TGVuZ3RoOworICAgICAgICAgICAgdmFyIGdlZ2Vua2F0aGV0ZV8yID0gTWF0aC5zaW4ocFJvdGF0ZSkqdExlbmd0aDsKKyAgICAgICAgICAgIHZhciB0eDIgPSB0aGlzLnN0YXJ0eCthbmthdGhldGVfMjsKKyAgICAgICAgICAgIHZhciB0eTIgPSB0aGlzLnN0YXJ0eStnZWdlbmthdGhldGVfMjsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIl8xICAiLHRoaXMuc3RhcnR4LHRoaXMuc3RhcnR5LHR4Mix0eTIpOworICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgdFJvdGF0ZTIgPSAxODAtKGFscGhhKzQ1KTsKKyAgICAgICAgICAgIHZhciBwUm90YXRlMiA9IHRSb3RhdGUyICogKE1hdGguUEkvMTgwKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIGFua2F0aGV0ZV80ID0gTWF0aC5zaW4ocFJvdGF0ZTIpKnRMZW5ndGg7CisgICAgICAgICAgICB2YXIgZ2VnZW5rYXRoZXRlXzQgPSBNYXRoLmNvcyhwUm90YXRlMikqdExlbmd0aDsKKyAgICAgICAgICAgIHZhciB0eDQgPSB0aGlzLnN0YXJ0eC1nZWdlbmthdGhldGVfNDsKKyAgICAgICAgICAgIHZhciB0eTQgPSB0aGlzLnN0YXJ0eSthbmthdGhldGVfNDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5taW5DbGlwQXJ0eCA9IHR4NDsKKyAgICAgICAgICAgIGlmICh0aGlzLnN0YXJ0eCA8IHR4NCkgeworICAgICAgICAgICAgCXRoaXMubWluQ2xpcEFydHggPSB0aGlzLnN0YXJ0eDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5taW5DbGlwQXJ0eSA9IHRoaXMuc3RhcnR5OworICAgICAgICAgICAgaWYgKHR5MiA8IHRoaXMuc3RhcnR5KSB7CisgICAgICAgICAgICAJdGhpcy5taW5DbGlwQXJ0eSA9IHR5MjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5tYXhDbGlwQXJ0eCA9IHR4MjsKKyAgICAgICAgICAgIGlmICh0RW5kWCA+IHR4MikgeworICAgICAgICAgICAgCXRoaXMubWF4Q2xpcEFydHggPSB0RW5kWDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5tYXhDbGlwQXJ0eSA9IHRFbmRZOworICAgICAgICAgICAgaWYgKHR5NCA+IHRFbmRZKSB7CisgICAgICAgICAgICAJdGhpcy5tYXhDbGlwQXJ0eSA9IHR5NDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGdlZ2Vua2F0aGV0ZV80ID4gMCkgeworICAgICAgICAgICAgICAgIHRoaXMuZGVsdGFDbGlwQXJ0eCA9IGdlZ2Vua2F0aGV0ZV80OworICAgICAgICAgICAgICAgIHRoaXMuZGVsdGFDbGlwQXJ0eSA9IDA7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgCXRoaXMuZGVsdGFDbGlwQXJ0eCA9IDA7CisgICAgICAgICAgICAJdGhpcy5kZWx0YUNsaXBBcnR5ID0gTWF0aC5hYnMoZ2VnZW5rYXRoZXRlXzIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIl8xICAiLGdlZ2Vua2F0aGV0ZV80LGdlZ2Vua2F0aGV0ZV8yKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiXzEgICIsdGhpcy5zdGFydHgsdGhpcy5zdGFydHksdHg0LHR5NCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIl8yICIscFJvdGF0ZTIsdFJvdGF0ZTIsTWF0aC5zaW4ocFJvdGF0ZTIpLGdlZ2Vua2F0aGV0ZV80KTsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIl8xICAiLHRoaXMuc3RhcnR5LHR5NCxhbmthdGhldGVfNCwidFJvdGF0ZTIsdExlbmd0aCIsdFJvdGF0ZTIsdExlbmd0aCk7CisgICAgICAgICAgICAKKyAgICAgICAgfSBlbHNlIGlmICh0eDwwICYmIHR5Pj0wKXsKKyAgICAgICAgICAgIHQuc2V0QXR0cmlidXRlKCdyb3RhdGlvbicsKDkwKzQ1KS0oYWxwaGEpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIHRSb3RhdGUgPSAoYWxwaGEtNDUpOworICAgICAgICAgICAgdmFyIHBSb3RhdGUgPSB0Um90YXRlICogKE1hdGguUEkvMTgwKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8xLiBRdWFkcmFudCAgbGVmdC1kb3duCisgICAgICAgICAgICB2YXIgYW5rYXRoZXRlXzIgPSBNYXRoLmNvcyhwUm90YXRlKSp0TGVuZ3RoOworICAgICAgICAgICAgdmFyIGdlZ2Vua2F0aGV0ZV8yID0gTWF0aC5zaW4ocFJvdGF0ZSkqdExlbmd0aDsKKyAgICAgICAgICAgIHZhciB0eDQgPSB0aGlzLnN0YXJ0eC1hbmthdGhldGVfMjsKKyAgICAgICAgICAgIHZhciB0eTQgPSB0aGlzLnN0YXJ0eStnZWdlbmthdGhldGVfMjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiXzEgICIsdGhpcy5zdGFydHgsdGhpcy5zdGFydHksdHg0LHR5NCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciB0Um90YXRlMiA9IDE4MC0oYWxwaGErNDUpOworICAgICAgICAgICAgdmFyIHBSb3RhdGUyID0gdFJvdGF0ZTIgKiAoTWF0aC5QSS8xODApOworICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgZ2VnZW5rYXRoZXRlXzQgPSBNYXRoLnNpbihwUm90YXRlMikqdExlbmd0aDsKKyAgICAgICAgICAgIHZhciBhbmthdGhldGVfNCA9IE1hdGguY29zKHBSb3RhdGUyKSp0TGVuZ3RoOworICAgICAgICAgICAgdmFyIHR4MiA9IHRoaXMuc3RhcnR4K2Fua2F0aGV0ZV80OworICAgICAgICAgICAgdmFyIHR5MiA9IHRoaXMuc3RhcnR5K2dlZ2Vua2F0aGV0ZV80OworICAgICAgICAgICAgCisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJfMSAgeCx5Iix0aGlzLnN0YXJ0eCx0aGlzLnN0YXJ0eSwidHgyLHR5MiIsdHgyLHR5MiwidHg0LHR5NCIsdHg0LHR5NCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMubWluQ2xpcEFydHggPSB0eDQ7CisgICAgICAgICAgICBpZiAodEVuZFggPCB0eDQpIHsKKyAgICAgICAgICAgICAgICB0aGlzLm1pbkNsaXBBcnR4ID0gdEVuZFg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMubWluQ2xpcEFydHkgPSB0aGlzLnN0YXJ0eTsKKyAgICAgICAgICAgIGlmICh0eTQgPCB0aGlzLnN0YXJ0eSkgeworICAgICAgICAgICAgICAgIHRoaXMubWluQ2xpcEFydHkgPSB0eTQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMubWF4Q2xpcEFydHggPSB0eDI7CisgICAgICAgICAgICBpZiAodGhpcy5zdGFydHggPiB0eDIpIHsKKyAgICAgICAgICAgICAgICB0aGlzLm1heENsaXBBcnR4ID0gdGhpcy5zdGFydHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMubWF4Q2xpcEFydHkgPSB0RW5kWTsKKyAgICAgICAgICAgIGlmICh0eTIgPiB0RW5kWSkgeworICAgICAgICAgICAgICAgIHRoaXMubWF4Q2xpcEFydHkgPSB0eTI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChnZWdlbmthdGhldGVfMiA+IDApIHsKKyAgICAgICAgICAgICAgICB0aGlzLmRlbHRhQ2xpcEFydHggPSBhbmthdGhldGVfMjsKKyAgICAgICAgICAgICAgICB0aGlzLmRlbHRhQ2xpcEFydHkgPSAwOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aGlzLmRlbHRhQ2xpcEFydHggPSB0aGlzLm1heENsaXBBcnR4LXRoaXMubWluQ2xpcEFydHg7CisgICAgICAgICAgICAgICAgdGhpcy5kZWx0YUNsaXBBcnR5ID0gTWF0aC5hYnMoZ2VnZW5rYXRoZXRlXzIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIH0gZWxzZSBpZiAodHg8MCAmJiB0eTwwKXsKKyAgICAgICAgICAgIHQuc2V0QXR0cmlidXRlKCdyb3RhdGlvbicsMTgwKyhhbHBoYS00NSkpOworICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgdFJvdGF0ZSA9IChhbHBoYS00NSk7CisgICAgICAgICAgICB2YXIgcFJvdGF0ZSA9IHRSb3RhdGUgKiAoTWF0aC5QSS8xODApOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLzEuIFF1YWRyYW50ICBsZWZ0LWRvd24KKyAgICAgICAgICAgIHZhciBhbmthdGhldGVfMiA9IE1hdGguY29zKHBSb3RhdGUpKnRMZW5ndGg7CisgICAgICAgICAgICB2YXIgZ2VnZW5rYXRoZXRlXzIgPSBNYXRoLnNpbihwUm90YXRlKSp0TGVuZ3RoOworICAgICAgICAgICAgdmFyIHR4NCA9IHRoaXMuc3RhcnR4LWFua2F0aGV0ZV8yOworICAgICAgICAgICAgdmFyIHR5NCA9IHRoaXMuc3RhcnR5LWdlZ2Vua2F0aGV0ZV8yOworICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgdFJvdGF0ZTIgPSAxODAtKGFscGhhKzQ1KTsKKyAgICAgICAgICAgIHZhciBwUm90YXRlMiA9IHRSb3RhdGUyICogKE1hdGguUEkvMTgwKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIGdlZ2Vua2F0aGV0ZV80ID0gTWF0aC5zaW4ocFJvdGF0ZTIpKnRMZW5ndGg7CisgICAgICAgICAgICB2YXIgYW5rYXRoZXRlXzQgPSBNYXRoLmNvcyhwUm90YXRlMikqdExlbmd0aDsKKyAgICAgICAgICAgIHZhciB0eDIgPSB0aGlzLnN0YXJ0eCthbmthdGhldGVfNDsKKyAgICAgICAgICAgIHZhciB0eTIgPSB0aGlzLnN0YXJ0eS1nZWdlbmthdGhldGVfNDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5taW5DbGlwQXJ0eCA9IHR4NDsKKyAgICAgICAgICAgIGlmICh0RW5kWCA8IHR4NCkgeworICAgICAgICAgICAgICAgIHRoaXMubWluQ2xpcEFydHggPSB0RW5kWDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5taW5DbGlwQXJ0eSA9IHRFbmRZOworICAgICAgICAgICAgaWYgKHR5MiA8IHRFbmRZKSB7CisgICAgICAgICAgICAgICAgdGhpcy5taW5DbGlwQXJ0eSA9IHR5MjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5tYXhDbGlwQXJ0eCA9IHR4MjsKKyAgICAgICAgICAgIGlmICh0aGlzLnN0YXJ0eCA+IHR4MikgeworICAgICAgICAgICAgICAgIHRoaXMubWF4Q2xpcEFydHggPSB0aGlzLnN0YXJ0eDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5tYXhDbGlwQXJ0eSA9IHR5NDsKKyAgICAgICAgICAgIGlmICh0aGlzLnN0YXJ0eSA+IHR5NCkgeworICAgICAgICAgICAgICAgIHRoaXMubWF4Q2xpcEFydHkgPSB0aGlzLnN0YXJ0eTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiXzEgICIsZ2VnZW5rYXRoZXRlXzIpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoZ2VnZW5rYXRoZXRlXzIgPCAwKSB7CisgICAgICAgICAgICAgICAgdGhpcy5kZWx0YUNsaXBBcnR4ID0gdGhpcy5tYXhDbGlwQXJ0eC10aGlzLm1pbkNsaXBBcnR4OworICAgICAgICAgICAgICAgIHRoaXMuZGVsdGFDbGlwQXJ0eSA9IGdlZ2Vua2F0aGV0ZV80OworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aGlzLmRlbHRhQ2xpcEFydHggPSBhbmthdGhldGVfMjsKKyAgICAgICAgICAgICAgICB0aGlzLmRlbHRhQ2xpcEFydHkgPSB0aGlzLm1heENsaXBBcnR5LXRoaXMubWluQ2xpcEFydHk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIAorICAgICAgICB9IGVsc2UgaWYgKHR4PjAgJiYgdHk8PTApeworICAgICAgICAgICAgdC5zZXRBdHRyaWJ1dGUoJ3JvdGF0aW9uJywoKDI3MCs0NSktYWxwaGEpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiYWxwaGEgOjogIixhbHBoYSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIl8xICAiLGdlZ2Vua2F0aGV0ZV8yKTsKKyAgICAgICAgICAgIHZhciB0Um90YXRlID0gKGFscGhhLTQ1KTsKKyAgICAgICAgICAgIHZhciBwUm90YXRlID0gdFJvdGF0ZSAqIChNYXRoLlBJLzE4MCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vMS4gUXVhZHJhbnQgIGxlZnQtZG93bgorICAgICAgICAgICAgdmFyIGFua2F0aGV0ZV8yID0gTWF0aC5jb3MocFJvdGF0ZSkqdExlbmd0aDsKKyAgICAgICAgICAgIHZhciBnZWdlbmthdGhldGVfMiA9IE1hdGguc2luKHBSb3RhdGUpKnRMZW5ndGg7CisgICAgICAgICAgICB2YXIgdHg0ID0gdGhpcy5zdGFydHgrYW5rYXRoZXRlXzI7CisgICAgICAgICAgICB2YXIgdHk0ID0gdGhpcy5zdGFydHktZ2VnZW5rYXRoZXRlXzI7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImdlZ2Vua2F0aGV0ZV8yIDo6ICIsZ2VnZW5rYXRoZXRlXzIpOworICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgdFJvdGF0ZTIgPSAxODAtKGFscGhhKzQ1KTsKKyAgICAgICAgICAgIHZhciBwUm90YXRlMiA9IHRSb3RhdGUyICogKE1hdGguUEkvMTgwKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIGdlZ2Vua2F0aGV0ZV80ID0gTWF0aC5zaW4ocFJvdGF0ZTIpKnRMZW5ndGg7CisgICAgICAgICAgICB2YXIgYW5rYXRoZXRlXzQgPSBNYXRoLmNvcyhwUm90YXRlMikqdExlbmd0aDsKKyAgICAgICAgICAgIHZhciB0eDIgPSB0aGlzLnN0YXJ0eC1hbmthdGhldGVfNDsKKyAgICAgICAgICAgIHZhciB0eTIgPSB0aGlzLnN0YXJ0eS1nZWdlbmthdGhldGVfNDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiYW5rYXRoZXRlXzQgOjogIixhbmthdGhldGVfNCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMubWluQ2xpcEFydHggPSB0eDI7CisgICAgICAgICAgICBpZiAodGhpcy5zdGFydHggPCB0eDIpIHsKKyAgICAgICAgICAgICAgICB0aGlzLm1pbkNsaXBBcnR4ID0gdGhpcy5zdGFydHg7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMubWluQ2xpcEFydHkgPSB0RW5kWTsKKyAgICAgICAgICAgIGlmICh0eTIgPCB0RW5kWSkgeworICAgICAgICAgICAgICAgIHRoaXMubWluQ2xpcEFydHkgPSB0eTI7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMubWF4Q2xpcEFydHggPSB0RW5kWDsKKyAgICAgICAgICAgIGlmICh0eDQgPiB0RW5kWCkgeworICAgICAgICAgICAgICAgIHRoaXMubWF4Q2xpcEFydHggPSB0eDQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMubWF4Q2xpcEFydHkgPSB0aGlzLnN0YXJ0eTsKKyAgICAgICAgICAgIGlmICh0eTQgPiB0aGlzLnN0YXJ0eSkgeworICAgICAgICAgICAgICAgIHRoaXMubWF4Q2xpcEFydHkgPSB0eTQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIl8xICAiLGFua2F0aGV0ZV80KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGFua2F0aGV0ZV80IDwgMCkgeworICAgICAgICAgICAgICAgIHRoaXMuZGVsdGFDbGlwQXJ0eCA9IDA7CisgICAgICAgICAgICAgICAgdGhpcy5kZWx0YUNsaXBBcnR5ID0gZ2VnZW5rYXRoZXRlXzQ7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRoaXMuZGVsdGFDbGlwQXJ0eCA9IGFua2F0aGV0ZV80OworICAgICAgICAgICAgICAgIHRoaXMuZGVsdGFDbGlwQXJ0eSA9IHRoaXMubWF4Q2xpcEFydHktdGhpcy5taW5DbGlwQXJ0eTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvL3RoaXMuZGVsdGFDbGlwQXJ0eCA9IDA7CisgICAgICAgICAgICAgICAgLy90aGlzLmRlbHRhQ2xpcEFydHkgPSAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vaWYgKHR4KQorICAgICAgICAKKyAgICAgICAgLy9TY2FsaW5nCisgICAgICAgIC8vdmFyIGJhc2ljTGVuZ3RoID0gTWF0aC5zcXJ0KCh0LndpZHRoKnQud2lkdGgpKyh0LndpZHRoKnQud2lkdGgpKTsKKyAgICAgICAgLy90LmdldERpc3BsYXlPYmplY3QoKS5feHNjYWxlID0gKGh5cG90aGVudXNlL2Jhc2ljTGVuZ3RoKSoxMDA7CisgICAgICAgIC8vdC5nZXREaXNwbGF5T2JqZWN0KCkuX3lzY2FsZSA9IChoeXBvdGhlbnVzZS9iYXNpY0xlbmd0aCkqMTAwOworICAgICAgICAKKyAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiaHlwb3RoZW51c2UgIitoeXBvdGhlbnVzZSk7CisgICAgICAgIAorICAgICAgICAKKyAgICAgICAgCisgICAgICAgIHQuc2V0QXR0cmlidXRlKCJ3aWR0aCIsdExlbmd0aCk7CisgICAgICAgIHQuc2V0QXR0cmlidXRlKCJoZWlnaHQiLHRMZW5ndGgpOworCisgICAgICAgIC8vU2V0IHByZXZpb3VzIHRvIG51bGwKKyAgICAgICAgdGhpcy5wcmV2eCA9IHRoaXMuY3VycmVudGxheWVyLmdldE1vdXNlKCd4Jyk7CisgICAgICAgIHRoaXMucHJldnkgPSB0aGlzLmN1cnJlbnRsYXllci5nZXRNb3VzZSgneScpOyAgCisgICAgICAgIAorICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4gCisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJkcmF3Q2xpcEFydFRvSGlzdG9yeSIgYXJncz0ibGFzdEFjdGlvbk9iamVjdCxwYXJlbnRWaWV3Ij4KKyAgICAJPCFbQ0RBVEFbCisgICAgCQorICAgIAkgICB2YXIgdG1wQ3VycmVudGxheWVyID0gbmV3IGx6LmRyYXdWaWV3TmV3KHBhcmVudFZpZXcseworICAgICAgICAgICAgICAgIG5hbWU6bGFzdEFjdGlvbk9iamVjdFtsYXN0QWN0aW9uT2JqZWN0Lmxlbmd0aC0xXSwKKyAgICAgICAgICAgICAgICB4Omxhc3RBY3Rpb25PYmplY3RbbGFzdEFjdGlvbk9iamVjdC5sZW5ndGgtNV0sCisgICAgICAgICAgICAgICAgeTpsYXN0QWN0aW9uT2JqZWN0W2xhc3RBY3Rpb25PYmplY3QubGVuZ3RoLTRdLAorICAgICAgICAgICAgICAgIHdpZHRoOmxhc3RBY3Rpb25PYmplY3RbbGFzdEFjdGlvbk9iamVjdC5sZW5ndGgtM10sCisgICAgICAgICAgICAgICAgaGVpZ2h0Omxhc3RBY3Rpb25PYmplY3RbbGFzdEFjdGlvbk9iamVjdC5sZW5ndGgtMl0sCisgICAgICAgICAgICAgICAgb3BhY2l0eTpsYXN0QWN0aW9uT2JqZWN0WzRdCisgICAgICAgICAgICAgICAgfSk7CisgICAgCQorICAgICAgICAgICBuZXcgbHouZHJhd0NsaXBBcnRXaGl0ZUJvYXJkKHRtcEN1cnJlbnRsYXllcix7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDpsYXN0QWN0aW9uT2JqZWN0WzddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0Omxhc3RBY3Rpb25PYmplY3RbOF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJldGNoZXM6J2JvdGgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDpsYXN0QWN0aW9uT2JqZWN0WzVdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTpsYXN0QWN0aW9uT2JqZWN0WzZdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm90YXRpb246bGFzdEFjdGlvbk9iamVjdFszXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlOmxhc3RBY3Rpb25PYmplY3RbMl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwQXJ0RW5keDpsYXN0QWN0aW9uT2JqZWN0WzldLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xpcEFydEVuZHk6bGFzdEFjdGlvbk9iamVjdFsxMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOidjbGlwYXJ0JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ4LHkgIix0bXBDdXJyZW50bGF5ZXIueCx0bXBDdXJyZW50bGF5ZXIueSx0bXBDdXJyZW50bGF5ZXIud2lkdGgsdG1wQ3VycmVudGxheWVyLmhlaWdodCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgLy9BZGQgTGF5ZXIgdG8gZ2xvYmFsIExheWVyICAgICAKKyAgICAgICAgICAgIHRoaXMubGF5ZXJzLnB1c2godG1wQ3VycmVudGxheWVyKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuZG9TV0ZEb2N1bWVudFN0YXR1cyh0bXBDdXJyZW50bGF5ZXIsbGFzdEFjdGlvbk9iamVjdFtsYXN0QWN0aW9uT2JqZWN0Lmxlbmd0aC03XSk7CisgICAgCV1dPgorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iZW5kRHJhd0NsaXBBcnREcmFnIiBhcmdzPSJjTGF5ZXIiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgCisgICAgICAgICAgICB2YXIgb2lkX25hbWUgPSBjTGF5ZXIubmFtZTsKKyAgICAgICAgICAgIHZhciB0U291cmNlID0gY0xheWVyLmNsaXBhcnQucmVzb3VyY2U7CisgICAgICAgICAgICB2YXIgdFJvdGF0aW9uID0gY0xheWVyLmNsaXBhcnQucm90YXRpb247CisgICAgICAgICAgICB2YXIgdFggPSBjTGF5ZXIuY2xpcGFydC54OworICAgICAgICAgICAgdmFyIHRZID0gY0xheWVyLmNsaXBhcnQueTsKKyAgICAgICAgICAgIHZhciB0V2lkdGggPSBjTGF5ZXIuY2xpcGFydC53aWR0aDsKKyAgICAgICAgICAgIHZhciB0SGVpZ2h0ID0gY0xheWVyLmNsaXBhcnQuaGVpZ2h0OworICAgICAgICAgICAgICAgCisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJFTkQgMCAiLHRZKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgY0xheWVyLmRlc3Ryb3koKTsKKyAgICAgICAgICAgCisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJFTkQgMSAiLHRoaXMubWluQ2xpcEFydHksdGhpcy5zdGFydHkpOworICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLmN1cnJlbnRsYXllciA9IG5ldyBsei5kcmF3Vmlld05ldyh0aGlzLHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OnRoaXMubWluQ2xpcEFydHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTp0aGlzLm1pbkNsaXBBcnR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWU6b2lkX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6dGhpcy5tYXhDbGlwQXJ0eC10aGlzLm1pbkNsaXBBcnR4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDp0aGlzLm1heENsaXBBcnR5LXRoaXMubWluQ2xpcEFydHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2JnY29sb3I6MHgwMDMzRkYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgCisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCIgSVMgWkVSTyBFTkQxICIsdGhpcy5jdXJyZW50bGF5ZXIueCx0aGlzLmN1cnJlbnRsYXllci55KTsgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgbmV3IGx6LmRyYXdDbGlwQXJ0V2hpdGVCb2FyZCh0aGlzLmN1cnJlbnRsYXllcix7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDp0V2lkdGgsaGVpZ2h0OnRIZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJldGNoZXM6J2JvdGgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDp0aGlzLmRlbHRhQ2xpcEFydHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OnRoaXMuZGVsdGFDbGlwQXJ0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0aW9uOnRSb3RhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlOnRTb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwQXJ0RW5keDp0aGlzLmNsaXBBcnRFbmR4LXRoaXMubWluQ2xpcEFydHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwQXJ0RW5keTp0aGlzLmNsaXBBcnRFbmR5LXRoaXMubWluQ2xpcEFydHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOidjbGlwYXJ0JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9iZ2NvbG9yOjB4RkYzMzAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAKKyAgICAgICAgICAgIGZvciAodmFyIGVnPTA7ZWc8dGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdC5sZW5ndGg7ZWcrKyl7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddW3RoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddLmxlbmd0aC0xXT09b2lkX25hbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIkZvdW5kIE9iamVjdCAxOiAiLHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgCS8vYWN0aW9uT2JqZWN0WzNdID0gdFJvdGF0aW9uOworICAgICAgICAvL2FjdGlvbk9iamVjdFs1XSA9IGRlbHRhQ2xpcEFydHg7CisgICAgICAgIC8vYWN0aW9uT2JqZWN0WzZdID0gZGVsdGFDbGlwQXJ0eTsKKyAgICAgICAgLy9hY3Rpb25PYmplY3RbN10gPSBkZWx0YUNsaXBXaWR0aDsKKyAgICAgICAgLy9hY3Rpb25PYmplY3RbOF0gPSBkZWx0YUNsaXBIZWlnaHQ7CisgICAgICAgIC8vYWN0aW9uT2JqZWN0WzldID0gZGVsdGFDbGlwRW5keDsKKyAgICAgICAgLy9hY3Rpb25PYmplY3RbMTBdID0gZGVsdGFDbGlwRW5keTsKKyAgICAgICAgLy9hY3Rpb25PYmplY3RbMTRdID0geDsvLy01CisgICAgICAgIC8vYWN0aW9uT2JqZWN0WzE1XSA9IHk7Ly8tNAorICAgICAgICAvL2FjdGlvbk9iamVjdFsxNl0gPSB3aWR0aDsvLy0zCisgICAgICAgIC8vYWN0aW9uT2JqZWN0WzE3XSA9IGhlaWdodDsvLy0yCisgICAgICAgIAorICAgICAgICAgICAgCSAgICB0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXVszXSA9IHRSb3RhdGlvbjsKKyAgICAgICAgICAgICAgICAJdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ11bNV0gPSB0aGlzLmRlbHRhQ2xpcEFydHg7CisgICAgICAgICAgICAgICAgCXRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddWzZdID0gdGhpcy5kZWx0YUNsaXBBcnR5OworICAgICAgICAgICAgICAgIAl0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXVs3XSA9IHRXaWR0aDsKKyAgICAgICAgICAgICAgICAJdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ11bOF0gPSB0SGVpZ2h0OworICAgICAgICAgICAgICAgIAl0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXVs5XSA9IHRoaXMuY2xpcEFydEVuZHgtdGhpcy5taW5DbGlwQXJ0eDsKKyAgICAgICAgICAgICAgICAJdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ11bMTBdID0gdGhpcy5jbGlwQXJ0RW5keS10aGlzLm1pbkNsaXBBcnR5OworICAgICAgICAgICAgICAgIAkKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ11bdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ10ubGVuZ3RoLTVdID0gdGhpcy5taW5DbGlwQXJ0eDsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ11bdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ10ubGVuZ3RoLTRdID0gdGhpcy5taW5DbGlwQXJ0eTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ11bdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ10ubGVuZ3RoLTNdID0gdGhpcy5tYXhDbGlwQXJ0eC10aGlzLm1pbkNsaXBBcnR4OworICAgICAgICAgICAgICAgICAgICB0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXVt0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXS5sZW5ndGgtMl0gPSB0aGlzLm1heENsaXBBcnR5LXRoaXMubWluQ2xpcEFydHk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICB2YXIgbmV3QSA9IHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5vbnNoYXJlZE1lc3NhZ2UoJ3NpemUnLG5ld0EpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAvL1NldCBwcmV2aW91cyB0byBudWxsCisgICAgICAgICAgICB0aGlzLnByZXZ4ID0gbnVsbDsKKyAgICAgICAgICAgIHRoaXMucHJldnkgPSBudWxsOyAgCisgICAgICAgIAorICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImVuZERyYXdDbGlwQXJ0Ij4KKyAgICAJPCFbQ0RBVEFbCisgICAgCQorICAgICAgICAgICAgdmFyIG9pZF9uYW1lID0gdGhpcy5jdXJyZW50bGF5ZXIubmFtZTsKKyAgICAJICAgIHZhciB0U291cmNlID0gdGhpcy5jdXJyZW50bGF5ZXIuY2xpcGFydC5yZXNvdXJjZTsKKyAgICAJICAgIHZhciB0Um90YXRpb24gPSB0aGlzLmN1cnJlbnRsYXllci5jbGlwYXJ0LnJvdGF0aW9uOworICAgIAkgICAgdmFyIHRYID0gdGhpcy5jdXJyZW50bGF5ZXIuY2xpcGFydC54OworICAgIAkgICAgdmFyIHRZID0gdGhpcy5jdXJyZW50bGF5ZXIuY2xpcGFydC55OworICAgIAkgICAgdmFyIHRXaWR0aCA9IHRoaXMuY3VycmVudGxheWVyLmNsaXBhcnQud2lkdGg7CisgICAgCSAgICB2YXIgdEhlaWdodCA9IHRoaXMuY3VycmVudGxheWVyLmNsaXBhcnQuaGVpZ2h0OworICAgIAkKKyAgICAJICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIkVORCAwICIsdFkpOworICAgIAkgICAgCisgICAgCSAgICB0aGlzLmN1cnJlbnRsYXllci5kZXN0cm95KCk7CisgICAgCSAgICAgICAJICAgICAgICAJICAgIAorICAgIAkgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiRU5EIDEgIix0aGlzLm1pbkNsaXBBcnR5LHRoaXMuc3RhcnR5KTsKKyAgICAJICAgIAorCSAgICAgCWlmKHRoaXMuaXNTbmFwVG9HcmlkKXsgICAgICAgIAkJCisJICAgIAkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIiMjIyMgIHRoaXMubWluQ2xpcEFydHggeSAiLHRoaXMubWluQ2xpcEFydHgsdGhpcy5taW5DbGlwQXJ0eSk7CisJICAgIAkKKwkJICAgIAkvL3RoaXMubWluQ2xpcEFydHggPSBNYXRoLnJvdW5kKHRoaXMubWluQ2xpcEFydHgvdGhpcy5ncmlkV2lkdGgpKnRoaXMuZ3JpZFdpZHRoOworCQkgICAgCS8vdGhpcy5taW5DbGlwQXJ0eSA9IE1hdGgucm91bmQodGhpcy5taW5DbGlwQXJ0eS90aGlzLmdyaWRXaWR0aCkqdGhpcy5ncmlkV2lkdGg7CisJCSAgICAJCisJCSAgICAJdFggPSBNYXRoLnJvdW5kKHRYL3RoaXMuZ3JpZFdpZHRoKSp0aGlzLmdyaWRXaWR0aDsKKwkJICAgIAl0WSA9IE1hdGgucm91bmQodFkvdGhpcy5ncmlkV2lkdGgpKnRoaXMuZ3JpZFdpZHRoOworCQkgICAgCQorCQkgICAgCXRoaXMuY3VycmVudGxheWVyID0gbmV3IGx6LmRyYXdWaWV3TmV3KHRoaXMseworICAgIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6dFgsCisgICAgCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTp0WSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOm9pZF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOnRoaXMubWF4Q2xpcEFydHgtdGhpcy5taW5DbGlwQXJ0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6dGhpcy5tYXhDbGlwQXJ0eS10aGlzLm1pbkNsaXBBcnR5CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9iZ2NvbG9yOjB4MDAzM0ZGCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKwkJICAgIAkKKyAgICAgICAgICAgIH1lbHNleworICAgIAkgICAgCisJICAgIAkgICAgdGhpcy5jdXJyZW50bGF5ZXIgPSBuZXcgbHouZHJhd1ZpZXdOZXcodGhpcyx7CisJICAgIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6dGhpcy5taW5DbGlwQXJ0eCwKKwkgICAgCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeTp0aGlzLm1pbkNsaXBBcnR5LAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOm9pZF9uYW1lLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDp0aGlzLm1heENsaXBBcnR4LXRoaXMubWluQ2xpcEFydHgsCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodDp0aGlzLm1heENsaXBBcnR5LXRoaXMubWluQ2xpcEFydHkKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9iZ2NvbG9yOjB4MDAzM0ZGCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIiBJUyBaRVJPIEVORDEgIix0aGlzLmN1cnJlbnRsYXllci54LHRoaXMuY3VycmVudGxheWVyLnkpOyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgbmV3IGx6LmRyYXdDbGlwQXJ0V2hpdGVCb2FyZCh0aGlzLmN1cnJlbnRsYXllcix7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDp0V2lkdGgsaGVpZ2h0OnRIZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJldGNoZXM6J2JvdGgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDp0aGlzLmRlbHRhQ2xpcEFydHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OnRoaXMuZGVsdGFDbGlwQXJ0eSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdGF0aW9uOnRSb3RhdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlOnRTb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwQXJ0RW5keDp0aGlzLmNsaXBBcnRFbmR4LXRoaXMubWluQ2xpcEFydHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGlwQXJ0RW5keTp0aGlzLmNsaXBBcnRFbmR5LXRoaXMubWluQ2xpcEFydHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOidjbGlwYXJ0JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9iZ2NvbG9yOjB4RkYzMzAwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgIAkKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIiBJUyBaRVJPIEVORDIgIix0aGlzLmRlbHRhQ2xpcEFydHgsdGhpcy5kZWx0YUNsaXBBcnR5KTsgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiRU5EIDIgIix0aGlzLmN1cnJlbnRsYXllci55LHRoaXMuY3VycmVudGxheWVyLmNsaXBhcnQueSk7CisgICAgICAgICAgICAKKyAgICAJICAgIHRoaXMuZHJhd0NsaXBBcnRSZWdpc3RlckZpbmFsKAorICAgIAkgICAgICAgICAgICAgICAgICAgb2lkX25hbWUsCisgICAgCSAgICAgICAgICAgICAgICAgICB0U291cmNlLAorICAgIAkgICAgICAgICAgICAgICAgICAgdFJvdGF0aW9uLAorICAgIAkgICAgICAgICAgICAgICAgICAgMSwKKyAgICAJICAgICAgICAgICAgICAgICAgIHRoaXMubWluQ2xpcEFydHgsCisgICAgCSAgICAgICAgICAgICAgICAgICB0aGlzLm1pbkNsaXBBcnR5LAorICAgIAkgICAgICAgICAgICAgICAgICAgdGhpcy5tYXhDbGlwQXJ0eC10aGlzLm1pbkNsaXBBcnR4LAorICAgIAkgICAgICAgICAgICAgICAgICAgdGhpcy5tYXhDbGlwQXJ0eS10aGlzLm1pbkNsaXBBcnR5LAorICAgIAkgICAgICAgICAgICAgICAgICAgdGhpcy5kZWx0YUNsaXBBcnR4LAorICAgIAkgICAgICAgICAgICAgICAgICAgdGhpcy5kZWx0YUNsaXBBcnR5LAorICAgIAkgICAgICAgICAgICAgICAgICAgdFdpZHRoLAorICAgIAkgICAgICAgICAgICAgICAgICAgdEhlaWdodCwKKyAgICAJICAgICAgICAgICAgICAgICAgIHRoaXMuY2xpcEFydEVuZHgtdGhpcy5taW5DbGlwQXJ0eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xpcEFydEVuZHktdGhpcy5taW5DbGlwQXJ0eSwKKyAgICAJICAgICAgICAgICAgICAgICAgIHRydWUsCisgICAgCSAgICAgICAgICAgICAgICAgICB0aGlzLmdldFNXRkRvY3VtZW50U3RhdHVzKCksCisgICAgCSAgICAgICAgICAgICAgICAgICB0aGlzLmdldFpJbmRleCgpKTsKKyAgICAJICAgICAKKyAgICAgICAgICAgIHRoaXMubGF5ZXJzLnB1c2godGhpcy5jdXJyZW50bGF5ZXIpOworICAgICAgICAgICAgdGhpcy5jaGVja1N0ZXBMYXllcnMoKTsgICAgCSAgICAgICAgICAgICAgICAgICAKKyAgICAJICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgLy9TZXQgcHJldmlvdXMgdG8gbnVsbAorICAgICAgICAgICAgdGhpcy5wcmV2eCA9IG51bGw7CisgICAgICAgICAgICB0aGlzLnByZXZ5ID0gbnVsbDsgIAorICAgIAkKKyAgICAJXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJkcmF3Q2xpcEFydFJlZ2lzdGVyRmluYWwiIGFyZ3M9Im5ld05hbWUsdFNvdXJjZSx0Um90YXRpb24sb3BhY2l0eSx4LHksd2lkdGgsaGVpZ2h0LGRlbHRhQ2xpcEFydHgsZGVsdGFDbGlwQXJ0eSxkZWx0YUNsaXBXaWR0aCxkZWx0YUNsaXBIZWlnaHQsZGVsdGFDbGlwRW5keCxkZWx0YUNsaXBFbmR5LGRvQ2FsbCxzd2ZPYmosekluZGV4Ij4KKyAgICAgICAgdmFyIGFjdGlvbk9iamVjdCA9IG5ldyBBcnJheSgpOworICAgICAgICBhY3Rpb25PYmplY3RbMF0gPSAnY2xpcGFydCc7CisgICAgICAgIGFjdGlvbk9iamVjdFsxXSA9IG5ld05hbWU7CisgICAgICAgIGFjdGlvbk9iamVjdFsyXSA9IHRTb3VyY2U7CisgICAgICAgIGFjdGlvbk9iamVjdFszXSA9IHRSb3RhdGlvbjsKKyAgICAgICAgYWN0aW9uT2JqZWN0WzRdID0gb3BhY2l0eTsKKyAgICAgICAgYWN0aW9uT2JqZWN0WzVdID0gZGVsdGFDbGlwQXJ0eDsKKyAgICAgICAgYWN0aW9uT2JqZWN0WzZdID0gZGVsdGFDbGlwQXJ0eTsKKyAgICAgICAgYWN0aW9uT2JqZWN0WzddID0gZGVsdGFDbGlwV2lkdGg7CisgICAgICAgIGFjdGlvbk9iamVjdFs4XSA9IGRlbHRhQ2xpcEhlaWdodDsKKyAgICAgICAgYWN0aW9uT2JqZWN0WzldID0gZGVsdGFDbGlwRW5keDsKKyAgICAgICAgYWN0aW9uT2JqZWN0WzEwXSA9IGRlbHRhQ2xpcEVuZHk7CisgICAgICAgIGFjdGlvbk9iamVjdFsxMV0gPSB6SW5kZXg7Ly8tOAorICAgICAgICBhY3Rpb25PYmplY3RbMTJdID0gc3dmT2JqOy8vLTcKKyAgICAgICAgYWN0aW9uT2JqZWN0WzEzXSA9IHRoaXMuY291bnRlcjsvLy02IAorICAgICAgICBhY3Rpb25PYmplY3RbMTRdID0geDsvLy01CisgICAgICAgIGFjdGlvbk9iamVjdFsxNV0gPSB5Oy8vLTQKKyAgICAgICAgYWN0aW9uT2JqZWN0WzE2XSA9IHdpZHRoOy8vLTMKKyAgICAgICAgYWN0aW9uT2JqZWN0WzE3XSA9IGhlaWdodDsvLy0yCisgICAgICAgIGFjdGlvbk9iamVjdFsxOF0gPSBuZXdOYW1lOy8vLTEKKyAgICAgICAgdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdC5wdXNoKGFjdGlvbk9iamVjdCk7ICAgICAgIAorICAgICAgICBpZiAoZG9DYWxsKSB0aGlzLm9uc2hhcmVkTWVzc2FnZSgnZHJhdycsYWN0aW9uT2JqZWN0KTsKKyAgICA8L21ldGhvZD4gICAgICAKKyAgICAKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL2Jhc2UvdG9vbHMvYmFzZURyYXdFbGxpcHNlLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL2Jhc2UvdG9vbHMvYmFzZURyYXdFbGxpcHNlLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MTA3OTU5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvYmFzZS90b29scy9iYXNlRHJhd0VsbGlwc2UubHp4CkBAIC0wLDAgKzEsMjE1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8Y2xhc3MgbmFtZT0iYmFzZURyYXdFbGxpcHNlIiBleHRlbmRzPSJiYXNlRHJhd1JlY3QiID4KKyAgICAKKyAgICA8IS0tIAorICAgICAgICBmb3IgZHJhd2luZyBlbGxpcHNlIHRoZSB2YXJpYWJsZSAKKyAgICAgICAgd2l0aCAqRGlzKiBpbmRpY2F0ZXMgaWYgdGhlIGxpbmUvZmlsLWNvbG9yIGlzIGFjdGl2ZSAoKzEvLTEpCisgICAgIC0tPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudGVsbGlwc2VzdHJva2UiIHZhbHVlPSIweEZGNjYwMCIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRlbGxpcHNlc3Ryb2tlRGlzIiB2YWx1ZT0iMSIgdHlwZT0ibnVtYmVyIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudGVsbGlwc2VzdHJva2VGaWxsIiB2YWx1ZT0iMHhGRkZGMzMiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50ZWxsaXBzZXN0cm9rZUZpbGxEaXMiIHZhbHVlPSIxIiB0eXBlPSJudW1iZXIiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50ZWxsaXBzZWxpbmVXaWR0aCIgdmFsdWU9IjQiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50ZWxsaXBzZU9wYWNpdHkiIHZhbHVlPSIxIiB0eXBlPSJudW1iZXIiIC8+CisgIAorICAgIDwhLS0gIyMjIyMjIyMjIyMjIyMjIworICAgIEVsbGlwc2UKKyAgICAgLS0+CisgICAgPG1ldGhvZCBuYW1lPSJzdGFydEVsbGlwc2UiIGFyZ3M9Im9pZF9uYW1lIj4KKyAgICAgICAgLy9EZWJ1Zy53cml0ZSgic3RhcnRFbGxpcHNlIik7CisgICAgICAgIGlmIChvaWRfbmFtZSA9PSBudWxsKSB7CisgICAgICAgICAgICBvaWRfbmFtZSA9ICdlbGxpcHNlJyt0aGlzLmdldENvdW50ZXIoKTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLmN1cnJlbnRsYXllciA9IG5ldyBsei5kcmF3Vmlld05ldyh0aGlzLHsKKyAgICAgICAgICAgIG5hbWU6b2lkX25hbWUsd2lkdGg6dGhpcy53aWR0aCsyLGhlaWdodDp0aGlzLmhlaWdodCsyLAorICAgICAgICAgICAgb3BhY2l0eTp0aGlzLmN1cnJlbnRlbGxpcHNlT3BhY2l0eX0pOworICAgICAgICB0aGlzLmRyYXdsaW5lT25PYmplY3QodGhpcy5jdXJyZW50bGF5ZXIsLTEsLTEsMCwwKTsKKyAgICAgICAgdGhpcy5kcmF3bGluZU9uT2JqZWN0KHRoaXMuY3VycmVudGxheWVyLHRoaXMud2lkdGgsdGhpcy5oZWlnaHQsdGhpcy53aWR0aCsxLHRoaXMuaGVpZ2h0KzEpOworICAgIDwvbWV0aG9kPiAgICAKKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImVuZEVsbGlwc2UiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIC8vLy9EZWJ1Zy53cml0ZSgiIHRoaXMuc3RhcnR4LCB0aGlzLnN0YXJ0eSAsIHRoaXMuZW5keCwgdGhpcy5lbmR5ICIsdGhpcy5zdGFydHgsIHRoaXMuc3RhcnR5ICwgdGhpcy5lbmR4LCB0aGlzLmVuZHkpOworICAgICAgICAgICAgdmFyIHRtcE5hbWUgPSB0aGlzLmN1cnJlbnRsYXllci5uYW1lOworICAgICAgICAgICAgdGhpcy5jdXJyZW50bGF5ZXIuZGVzdHJveSgpOworICAgICAgICAgICAgdmFyIHggPSB0aGlzLnN0YXJ0eDsKKyAgICAgICAgICAgIHZhciB3aWR0aCA9IHRoaXMuZW5keCAtIHRoaXMuc3RhcnR4OworICAgICAgICAgICAgaWYgKHRoaXMuZW5keDx0aGlzLnN0YXJ0eCl7CisgICAgICAgICAgICAgICAgeCA9IHRoaXMuZW5keDsKKyAgICAgICAgICAgICAgICB3aWR0aCA9IE1hdGguYWJzKHdpZHRoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhciB5ID0gdGhpcy5zdGFydHk7CisgICAgICAgICAgICB2YXIgaGVpZ2h0ID0gdGhpcy5lbmR5IC0gdGhpcy5zdGFydHk7CisgICAgICAgICAgICBpZiAodGhpcy5lbmR5PHRoaXMuc3RhcnR5KXsKKyAgICAgICAgICAgICAgICB5ID0gdGhpcy5lbmR5OworICAgICAgICAgICAgICAgIGhlaWdodCA9IE1hdGguYWJzKGhlaWdodCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmKHRoaXMuaXNTbmFwVG9HcmlkKXsgICAgICAgIAkJCisJICAgIAkJCSAgICAgICAgCSAgIAorCSAgICAgICAgICAgIHggPSBNYXRoLnJvdW5kKHgvdGhpcy5ncmlkV2lkdGgpKnRoaXMuZ3JpZFdpZHRoOworCQkgICAgCXkgPSBNYXRoLnJvdW5kKHkvdGhpcy5ncmlkV2lkdGgpKnRoaXMuZ3JpZFdpZHRoOworICAgICAgICAgICAgCisgICAgICAgICAgICB9IAorICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLmN1cnJlbnRsYXllciA9IG5ldyBsei5kcmF3Vmlld05ldyh0aGlzLHsKKyAgICAgICAgICAgICAgICBuYW1lOnRtcE5hbWUseDp4LHk6eSx3aWR0aDp3aWR0aCxoZWlnaHQ6aGVpZ2h0LAorICAgICAgICAgICAgICAgIG9wYWNpdHk6dGhpcy5jdXJyZW50ZWxsaXBzZU9wYWNpdHl9KTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIG5ldyBsei5kcmF3Vmlld0lubmVyKHRoaXMuY3VycmVudGxheWVyLHsKKyAgICAgICAgICAgICAgICBuYW1lOidfaW5uZXJFbGxpcHNlJyx4OjAseTowLHdpZHRoOndpZHRoLGhlaWdodDpoZWlnaHR9KTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vdGhpcy5kcmF3ZWxsaXBzZSgwLDAsd2lkdGgsaGVpZ2h0KTsKKyAgICAgICAgICAgIC8vRGVidWcud3JpdGUoInRoaXMuY3VycmVudGVsbGlwc2VzdHJva2UsdGhpcy5jdXJyZW50ZWxsaXBzZWxpbmVXaWR0aDogIix0aGlzLmN1cnJlbnRlbGxpcHNlc3Ryb2tlLHRoaXMuY3VycmVudGVsbGlwc2VsaW5lV2lkdGgpOworICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLmRyYXdlbGxpcHNlSGlzdG9yeSh0aGlzLmN1cnJlbnRsYXllciwKKyAgICAgICAgICAgICAgICAwLDAsd2lkdGgsaGVpZ2h0LAorICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudGVsbGlwc2VzdHJva2UsdGhpcy5jdXJyZW50ZWxsaXBzZWxpbmVXaWR0aCwKKyAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRlbGxpcHNlc3Ryb2tlRmlsbCx0aGlzLmN1cnJlbnRlbGxpcHNlc3Ryb2tlRGlzLAorICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudGVsbGlwc2VzdHJva2VGaWxsRGlzKQorICAgICAgICAgICAgCisgICAgICAgICAgICAvL0RyYXcgT24gT2JqZWN0ICAgIAorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5kcmF3ZWxsaXBzZXJlZ2lzdGVyRmluYWwodGhpcy5jdXJyZW50bGF5ZXIubmFtZSwKKyAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRlbGxpcHNlc3Ryb2tlLHRoaXMuY3VycmVudGVsbGlwc2VsaW5lV2lkdGgsCisgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50ZWxsaXBzZXN0cm9rZUZpbGwsdGhpcy5jdXJyZW50ZWxsaXBzZXN0cm9rZURpcywKKyAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRlbGxpcHNlc3Ryb2tlRmlsbERpcywKKyAgICAgICAgICAgICAgICB4LHksd2lkdGgsaGVpZ2h0LHRoaXMuZ2V0U1dGRG9jdW1lbnRTdGF0dXMoKSx0aGlzLmdldFpJbmRleCgpKTsKKyAgICAgICAgICAgIHRoaXMubGF5ZXJzLnB1c2godGhpcy5jdXJyZW50bGF5ZXIpOworICAgICAgICAgICAgdGhpcy5jaGVja1N0ZXBMYXllcnMoKTsKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJkcmF3ZWxsaXBzZVRvSGlzdG9yeSIgIGFyZ3M9Imxhc3RBY3Rpb25PYmplY3QscGFyZW50VmlldyI+CisKKyAgICAgICAgdmFyIHRtcEN1cnJlbnRsYXllciA9IG5ldyBsei5kcmF3Vmlld05ldyhwYXJlbnRWaWV3LHsKKyAgICAgICAgICAgIG5hbWU6bGFzdEFjdGlvbk9iamVjdFtsYXN0QWN0aW9uT2JqZWN0Lmxlbmd0aC0xXSwKKyAgICAgICAgICAgIHg6bGFzdEFjdGlvbk9iamVjdFtsYXN0QWN0aW9uT2JqZWN0Lmxlbmd0aC01XSwKKyAgICAgICAgICAgIHk6bGFzdEFjdGlvbk9iamVjdFtsYXN0QWN0aW9uT2JqZWN0Lmxlbmd0aC00XSwKKyAgICAgICAgICAgIHdpZHRoOmxhc3RBY3Rpb25PYmplY3RbbGFzdEFjdGlvbk9iamVjdC5sZW5ndGgtM10sCisgICAgICAgICAgICBoZWlnaHQ6bGFzdEFjdGlvbk9iamVjdFtsYXN0QWN0aW9uT2JqZWN0Lmxlbmd0aC0yXSwKKyAgICAgICAgICAgIG9wYWNpdHk6bGFzdEFjdGlvbk9iamVjdFs2XX0pOworICAgICAgICAgICAgCisgICAgICAgIG5ldyBsei5kcmF3Vmlld0lubmVyKHRtcEN1cnJlbnRsYXllcix7CisgICAgICAgICAgICAgICAgbmFtZTonX2lubmVyRWxsaXBzZScseDowLHk6MCwKKyAgICAgICAgICAgICAgICB3aWR0aDpsYXN0QWN0aW9uT2JqZWN0W2xhc3RBY3Rpb25PYmplY3QubGVuZ3RoLTNdLAorICAgICAgICAgICAgICAgIGhlaWdodDpsYXN0QWN0aW9uT2JqZWN0W2xhc3RBY3Rpb25PYmplY3QubGVuZ3RoLTJdfSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgIC8vRGVidWcud3JpdGUoImxhc3RBY3Rpb25PYmplY3RbMV0sbGFzdEFjdGlvbk9iamVjdFsyXTogIixsYXN0QWN0aW9uT2JqZWN0WzFdLGxhc3RBY3Rpb25PYmplY3RbMl0pOworICAgICAgICB0aGlzLmRyYXdlbGxpcHNlSGlzdG9yeSh0bXBDdXJyZW50bGF5ZXIsCisgICAgICAgICAgICAwLDAsbGFzdEFjdGlvbk9iamVjdFtsYXN0QWN0aW9uT2JqZWN0Lmxlbmd0aC0zXSxsYXN0QWN0aW9uT2JqZWN0W2xhc3RBY3Rpb25PYmplY3QubGVuZ3RoLTJdLAorICAgICAgICAgICAgbGFzdEFjdGlvbk9iamVjdFsxXSxsYXN0QWN0aW9uT2JqZWN0WzJdLAorICAgICAgICAgICAgbGFzdEFjdGlvbk9iamVjdFszXSxsYXN0QWN0aW9uT2JqZWN0WzRdLAorICAgICAgICAgICAgbGFzdEFjdGlvbk9iamVjdFs1XSk7CisKKyAgICAgICAgdGhpcy5kb1NXRkRvY3VtZW50U3RhdHVzKHRtcEN1cnJlbnRsYXllcixsYXN0QWN0aW9uT2JqZWN0W2xhc3RBY3Rpb25PYmplY3QubGVuZ3RoLTddKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InJlZHJhd0VsbGlwc2VJdGVtQnlTY2FsaW5nIiBhcmdzPSJvYmpSZWYiPgorICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJyZWRyYXdSZWN0SXRlbUJ5U2NhbGluZzogIitvYmpSZWYpOworICAgICAgICB0aGlzLmN1cnJlbnRsYXllciA9IG9ialJlZjsKKyAgICAgICAgdGhpcy5jdXJyZW50bGF5ZXIuX2lubmVyRWxsaXBzZS5kZXN0cm95KCk7CisgICAgICAgIG5ldyBsei5kcmF3Vmlld0lubmVyKHRoaXMuY3VycmVudGxheWVyLHsKKyAgICAgICAgICAgIG5hbWU6J19pbm5lckVsbGlwc2UnLHg6MCx5OjAsd2lkdGg6b2JqUmVmLndpZHRoLGhlaWdodDpvYmpSZWYuaGVpZ2h0fSk7CisgICAgICAgIHRoaXMuZHJhd2VsbGlwc2VIaXN0b3J5KHRoaXMuY3VycmVudGxheWVyLDAsMCwKKyAgICAgICAgICAgIG9ialJlZi53aWR0aCxvYmpSZWYuaGVpZ2h0LAorICAgICAgICAgICAgdGhpcy5jdXJyZW50ZWxsaXBzZXN0cm9rZSx0aGlzLmN1cnJlbnRlbGxpcHNlbGluZVdpZHRoLAorICAgICAgICAgICAgdGhpcy5jdXJyZW50ZWxsaXBzZXN0cm9rZUZpbGwsdGhpcy5jdXJyZW50ZWxsaXBzZXN0cm9rZURpcywKKyAgICAgICAgICAgIHRoaXMuY3VycmVudGVsbGlwc2VzdHJva2VGaWxsRGlzKTsKKyAgICA8L21ldGhvZD4gCisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJkcmF3ZWxsaXBzZUhpc3RvcnkiIGFyZ3M9InBhcmVudE9iaix4MSx5MSx4Mix5MixzdHJva2UsbGluZSxmaWxsLHN0cm9rZURpcyxmaWxsRGlzIj4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgIAorICAgICAgICAgICAgLy9EZWJ1Zy53cml0ZSgic3Ryb2tlLGxpbmU6ICIsc3Ryb2tlLGxpbmUpOworICAgICAgICAgICAgdmFyIHJ4ID0gKHgxK3gyKS8yOworICAgICAgICAgICAgdmFyIHJ5ID0gKHkxK3kyKS8yOworICAgICAgICAgICAgdmFyIHhyYWRpdXMgPSBNYXRoLmFicyhyeC14MSk7CisgICAgICAgICAgICB2YXIgeXJhZGl1cyA9IE1hdGguYWJzKHJ5LXkxKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgcGFyZW50T2JqLl9pbm5lckVsbGlwc2UubGluZVdpZHRoID0gbGluZTsKKyAgICAgICAgICAgIHBhcmVudE9iai5faW5uZXJFbGxpcHNlLm92YWwocngscnkseHJhZGl1cyx5cmFkaXVzKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHN0cm9rZURpcyE9LTEpeworICAgICAgICAgICAgICAgIHBhcmVudE9iai5faW5uZXJFbGxpcHNlLnN0cm9rZVN0eWxlID0gc3Ryb2tlOworICAgICAgICAgICAgICAgIHBhcmVudE9iai5faW5uZXJFbGxpcHNlLnN0cm9rZSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoZmlsbERpcyE9LTEpeworICAgICAgICAgICAgICAgIHBhcmVudE9iai5faW5uZXJFbGxpcHNlLmZpbGxTdHlsZSA9IGZpbGw7CisgICAgICAgICAgICAgICAgcGFyZW50T2JqLl9pbm5lckVsbGlwc2UuZmlsbCgpOworICAgICAgICAgICAgfQorCisgICAgICAgIF1dPiAgIAorICAgIDwvbWV0aG9kPiAgIAorICAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImRyYXdlbGxpcHNlIiBhcmdzPSJ4MSx5MSx4Mix5MiI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgLy9EZWJ1Zy53cml0ZSgic3Ryb2tlLGxpbmU6ICIsdGhpcy5jdXJyZW50ZWxsaXBzZXN0cm9rZSx0aGlzLmN1cnJlbnRlbGxpcHNlbGluZVdpZHRoKTsKKyAgICAgICAgICAgIHZhciByeCA9ICh4MSt4MikvMjsKKyAgICAgICAgICAgIHZhciByeSA9ICh5MSt5MikvMjsKKyAgICAgICAgICAgIHZhciB4cmFkaXVzID0gTWF0aC5hYnMocngteDEpOworICAgICAgICAgICAgdmFyIHlyYWRpdXMgPSBNYXRoLmFicyhyeS15MSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGN1cnJlbnRsYXllci5saW5lV2lkdGggPSB0aGlzLmN1cnJlbnRlbGxpcHNlbGluZVdpZHRoOworICAgICAgICAgICAgY3VycmVudGxheWVyLm92YWwocngscnkseHJhZGl1cyx5cmFkaXVzKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudGVsbGlwc2VzdHJva2VEaXMhPS0xKXsKKyAgICAgICAgICAgICAgICBjdXJyZW50bGF5ZXIuc3Ryb2tlU3R5bGUgPSB0aGlzLmN1cnJlbnRlbGxpcHNlc3Ryb2tlOworICAgICAgICAgICAgICAgIGN1cnJlbnRsYXllci5zdHJva2UoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudGVsbGlwc2VzdHJva2VGaWxsRGlzIT0tMSl7CisgICAgICAgICAgICAgICAgY3VycmVudGxheWVyLmZpbGxTdHlsZSA9IHRoaXMuY3VycmVudGVsbGlwc2VzdHJva2VGaWxsOworICAgICAgICAgICAgICAgIGN1cnJlbnRsYXllci5maWxsKCk7IAorICAgICAgICAgICAgfQorICAgIAorICAgICAgICBdXT4gICAKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImRyYXdlbGxpcHNlcmVnaXN0ZXJGaW5hbCIgYXJncz0ibmV3TmFtZSxzdHJva2UsbGluZSxmaWxsLHN0cm9rZURpcyxmaWxsRGlzLHgseSx3aWR0aCxoZWlnaHQsc3dmT2JqLHpJbmRleCIgPgorICAgICAgICB2YXIgYWN0aW9uT2JqZWN0ID0gbmV3IEFycmF5KCk7CisgICAgICAgIGFjdGlvbk9iamVjdFswXSA9ICdlbGxpcHNlJzsKKyAgICAgICAgYWN0aW9uT2JqZWN0WzFdID0gc3Ryb2tlOworICAgICAgICBhY3Rpb25PYmplY3RbMl0gPSBsaW5lOworICAgICAgICBhY3Rpb25PYmplY3RbM10gPSBmaWxsOworICAgICAgICBhY3Rpb25PYmplY3RbNF0gPSBzdHJva2VEaXM7CisgICAgICAgIGFjdGlvbk9iamVjdFs1XSA9IGZpbGxEaXM7CisgICAgICAgIGFjdGlvbk9iamVjdFs2XSA9IHRoaXMuY3VycmVudGVsbGlwc2VPcGFjaXR5OworICAgICAgICBhY3Rpb25PYmplY3RbN10gPSB6SW5kZXg7Ly8tOAorICAgICAgICBhY3Rpb25PYmplY3RbOF0gPSBzd2ZPYmo7Ly8tNworICAgICAgICBhY3Rpb25PYmplY3RbOV0gPSB0aGlzLmNvdW50ZXI7Ly8tNgorICAgICAgICBhY3Rpb25PYmplY3RbMTBdID0geDsvLy01CisgICAgICAgIGFjdGlvbk9iamVjdFsxMV0gPSB5Oy8vLTQKKyAgICAgICAgYWN0aW9uT2JqZWN0WzEyXSA9IHdpZHRoOy8vLTMKKyAgICAgICAgYWN0aW9uT2JqZWN0WzEzXSA9IGhlaWdodDsvLy0yIAorICAgICAgICBhY3Rpb25PYmplY3RbMTRdID0gbmV3TmFtZTsvLy0xCisgICAgICAgIHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3QucHVzaChhY3Rpb25PYmplY3QpOworICAgICAgICB0aGlzLm9uc2hhcmVkTWVzc2FnZSgnZHJhdycsYWN0aW9uT2JqZWN0KTsKKyAgICA8L21ldGhvZD4KKworICAgIAorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvYmFzZS90b29scy9iYXNlRHJhd0xpbmUubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvYmFzZS90b29scy9iYXNlRHJhd0xpbmUubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlOTFhNzQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9iYXNlL3Rvb2xzL2Jhc2VEcmF3TGluZS5sengKQEAgLTAsMCArMSwyMDYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKwk8Y2xhc3MgbmFtZT0iYmFzZURyYXdMaW5lIiBleHRlbmRzPSJiYXNlRHJhd1BhaW50IiA+CisgICAgICAKKwkJPCEtLSBmb3IgZHJhd2luZyBsaW5lIC0tPgorCQk8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRsaW5lc3Ryb2tlIiB2YWx1ZT0iMHhGRjY2MDAiIC8+CisJCTxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudGxpbmVsaW5lV2lkdGgiIHZhbHVlPSIyIiB0eXBlPSJudW1iZXIiIC8+ICAgCisJCTxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudGxpbmVPcGFjaXR5IiB2YWx1ZT0iMSIgdHlwZT0ibnVtYmVyIiAvPgorICAgICAgICAKKwkJPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKwkJCUxpbmUKKwkJCSAtLT4KKyAgICAKKwkJPG1ldGhvZCBuYW1lPSJzdGFydExpbmUiIGFyZ3M9Im9pZF9uYW1lIj4KKworCQkJLy9EZWJ1Zy53cml0ZSgic3RhcnRMaW5lICIsdGhpcy5zdGFydHgsdGhpcy5zdGFydHkpOworCQkJaWYgKG9pZF9uYW1lID09IG51bGwpIHsKKwkJCQlvaWRfbmFtZSA9ICdsaW5lJyArIHRoaXMuZ2V0Q291bnRlcigpCisJCQl9CisJCQl0aGlzLmN1cnJlbnRsYXllciA9IG5ldyBsei5kcmF3Vmlld05ldyh0aGlzLCB7CisJCQkJCQluYW1lIDogb2lkX25hbWUsCisJCQkJCQl3aWR0aCA6IHRoaXMud2lkdGggKyAyLAorCQkJCQkJaGVpZ2h0IDogdGhpcy5oZWlnaHQgKyAyLAorCQkJCQkJeCA6IC0xLAorCQkJCQkJeSA6IC0xLAorCQkJCQkJb3BhY2l0eSA6IHRoaXMuY3VycmVudGxpbmVPcGFjaXR5CisJCQkJCX0pOworCQkJdGhpcy5kcmF3bGluZU9uT2JqZWN0KHRoaXMuY3VycmVudGxheWVyLCAtMSwgLTEsIDAsIDApOworCQkJdGhpcy5kcmF3bGluZU9uT2JqZWN0KHRoaXMuY3VycmVudGxheWVyLCB0aGlzLndpZHRoLCB0aGlzLmhlaWdodCwKKwkJCQkJdGhpcy53aWR0aCArIDEsIHRoaXMuaGVpZ2h0ICsgMSk7CisKKwkJCS8vU2V0IHByZXZpb3VzIHRvIG51bGwKKwkJCXRoaXMucHJldnggPSBudWxsOworCQkJdGhpcy5wcmV2eSA9IG51bGw7CisKKwkJCWN1cnJlbnRsYXllci5zdHJva2VTdHlsZSA9IHRoaXMuY3VycmVudGxpbmVzdHJva2U7CisJCQljdXJyZW50bGF5ZXIubGluZVdpZHRoID0gdGhpcy5jdXJyZW50bGluZWxpbmVXaWR0aDsKKwkJCS8vY3VycmVudGxheWVyLmZpbGxzdHlsZSA9ICcweDAwMDAwMCc7CisKKwkJPC9tZXRob2Q+CisgICAgCisJCTxtZXRob2QgbmFtZT0iZW5kTGluZSI+CisgICAgICAgIC8vLy9EZWJ1Zy53cml0ZSgiZW5kTGluZSIsdGhpcy5zdGFydHgsdGhpcy5zdGFydHksdGhpcy5lbmR4LHRoaXMuZW5keSk7CisJCTwhW0NEQVRBWworCQkJdmFyIHRlbXBOYW1lID0gdGhpcy5jdXJyZW50bGF5ZXIubmFtZTsKKwkJCXRoaXMuY3VycmVudGxheWVyLmRlc3Ryb3koKTsKKworCQkJLy9HZXRCb3VuZHMgb2YgdGhhdCBPYmplY3QKKwkJCXZhciBtaW54ID0gdGhpcy53aWR0aCArIDI7CisJCQl2YXIgbWlueSA9IHRoaXMuaGVpZ2h0ICsgMjsKKwkJCXZhciBtYXh4ID0gLTI7CisJCQl2YXIgbWF4eSA9IC0yOworCisJCQlpZiAodGhpcy5zdGFydHggPCBtaW54KQorCQkJCW1pbnggPSB0aGlzLnN0YXJ0eDsKKwkJCWlmICh0aGlzLmVuZHggPCBtaW54KQorCQkJCW1pbnggPSB0aGlzLmVuZHg7CisKKwkJCWlmICh0aGlzLnN0YXJ0eCA+IG1heHgpCisJCQkJbWF4eCA9IHRoaXMuc3RhcnR4OworCQkJaWYgKHRoaXMuZW5keCA+IG1heHgpCisJCQkJbWF4eCA9IHRoaXMuZW5keDsKKworCQkJaWYgKHRoaXMuc3RhcnR5IDwgbWlueSkKKwkJCQltaW55ID0gdGhpcy5zdGFydHk7CisJCQlpZiAodGhpcy5lbmR5IDwgbWlueSkKKwkJCQltaW55ID0gdGhpcy5lbmR5OworCisJCQlpZiAodGhpcy5zdGFydHkgPiBtYXh5KQorCQkJCW1heHkgPSB0aGlzLnN0YXJ0eTsKKwkJCWlmICh0aGlzLmVuZHkgPiBtYXh5KQorCQkJCW1heHkgPSB0aGlzLmVuZHk7CisKKwkJCXZhciB3aWR0aCA9IG1heHggLSBtaW54OworCQkJdmFyIGhlaWdodCA9IG1heHkgLSBtaW55OworCisJCQl2YXIgeDEgPSB0aGlzLnN0YXJ0eCAtIG1pbnggKyAodGhpcy5jdXJyZW50bGluZWxpbmVXaWR0aCAvIDIpOworCQkJdmFyIHkxID0gdGhpcy5zdGFydHkgLSBtaW55ICsgKHRoaXMuY3VycmVudGxpbmVsaW5lV2lkdGggLyAyKTsKKwkJCXZhciB4MiA9IHRoaXMuZW5keCAtIG1pbnggKyAodGhpcy5jdXJyZW50bGluZWxpbmVXaWR0aCAvIDIpOworCQkJdmFyIHkyID0gdGhpcy5lbmR5IC0gbWlueSArICh0aGlzLmN1cnJlbnRsaW5lbGluZVdpZHRoIC8gMik7CisKKwkJCWlmICh0aGlzLmlzU25hcFRvR3JpZCkgeworCisJCQkJeGdyaWQgPSBNYXRoLnJvdW5kKChtaW54IC0gMSAtICh0aGlzLmN1cnJlbnRsaW5lbGluZVdpZHRoIC8gMikpCisJCQkJCQkvIHRoaXMuZ3JpZFdpZHRoKQorCQkJCQkJKiB0aGlzLmdyaWRXaWR0aDsKKwkJCQl5Z3JpZCA9IE1hdGgucm91bmQoKG1pbnkgLSAxIC0gKHRoaXMuY3VycmVudGxpbmVsaW5lV2lkdGggLyAyKSkKKwkJCQkJCS8gdGhpcy5ncmlkV2lkdGgpCisJCQkJCQkqIHRoaXMuZ3JpZFdpZHRoOworCisJCQkJdGhpcy5jdXJyZW50bGF5ZXIgPSBuZXcgbHouZHJhd1ZpZXdOZXcodGhpcywgeworCQkJCQkJCW5hbWUgOiB0ZW1wTmFtZSwKKwkJCQkJCQl4IDogeGdyaWQsCisJCQkJCQkJeSA6IHlncmlkLAorCQkJCQkJCXdpZHRoIDogKHdpZHRoICsgdGhpcy5jdXJyZW50bGluZWxpbmVXaWR0aCksCisJCQkJCQkJaGVpZ2h0IDogKGhlaWdodCArIHRoaXMuY3VycmVudGxpbmVsaW5lV2lkdGgpLAorCQkJCQkJCW9wYWNpdHkgOiB0aGlzLmN1cnJlbnRsaW5lT3BhY2l0eQorCQkJCQkJfSk7CisKKwkJCX0gZWxzZSB7CisKKwkJCQl0aGlzLmN1cnJlbnRsYXllciA9IG5ldyBsei5kcmF3Vmlld05ldyh0aGlzLCB7CisJCQkJCQkJbmFtZSA6IHRlbXBOYW1lLAorCQkJCQkJCXggOiAobWlueCAtIDEgLSAodGhpcy5jdXJyZW50bGluZWxpbmVXaWR0aCAvIDIpKSwKKwkJCQkJCQl5IDogKG1pbnkgLSAxIC0gKHRoaXMuY3VycmVudGxpbmVsaW5lV2lkdGggLyAyKSksCisJCQkJCQkJd2lkdGggOiAod2lkdGggKyB0aGlzLmN1cnJlbnRsaW5lbGluZVdpZHRoKSwKKwkJCQkJCQloZWlnaHQgOiAoaGVpZ2h0ICsgdGhpcy5jdXJyZW50bGluZWxpbmVXaWR0aCksCisJCQkJCQkJb3BhY2l0eSA6IHRoaXMuY3VycmVudGxpbmVPcGFjaXR5CisJCQkJCQl9KTsKKwkJCX0KKwkJCS8vdGhpcy5jdXJyZW50bGF5ZXIuZmlsbHN0eWxlID0gJzB4MDAwMDAwJzsKKwkJCXRoaXMuY3VycmVudGxheWVyLmxpbmVXaWR0aCA9IHRoaXMuY3VycmVudGxpbmVsaW5lV2lkdGg7CisJCQl0aGlzLmN1cnJlbnRsYXllci5zdHJva2VTdHlsZSA9IHRoaXMuY3VycmVudGxpbmVzdHJva2U7CisKKwkJCXRoaXMuZHJhd2xpbmUoKHgxKSwgKHkxKSwgKHgyKSwgKHkyKSk7CisKKwkJCS8vQWRkIExheWVyIHRvIGdsb2JhbCBMYXllciAgICAgCisJCQl0aGlzLmxheWVycy5wdXNoKHRoaXMuY3VycmVudGxheWVyKTsKKworCQkJdGhpcy5saW5lcmVnaXN0ZXJGaW5hbCh0aGlzLmN1cnJlbnRsYXllci5uYW1lLAorCQkJCQl0aGlzLmN1cnJlbnRsaW5lc3Ryb2tlLCB0aGlzLmN1cnJlbnRsaW5lbGluZVdpZHRoLAorCQkJCQl0aGlzLmN1cnJlbnRsaW5lT3BhY2l0eSwgdGhpcy5jdXJyZW50bGF5ZXIueCwKKwkJCQkJdGhpcy5jdXJyZW50bGF5ZXIueSwgdGhpcy5jdXJyZW50bGF5ZXIud2lkdGgsCisJCQkJCXRoaXMuY3VycmVudGxheWVyLmhlaWdodCwgeDEsIHkxLCB4MiwgeTIsIHRydWUsIHRoaXMKKwkJCQkJCQkuZ2V0U1dGRG9jdW1lbnRTdGF0dXMoKSwgdGhpcy5nZXRaSW5kZXgoKSk7CisJCV1dPgorCQk8L21ldGhvZD4gCisgICAgCisgICAgCisJCTxtZXRob2QgbmFtZT0ibGluZXJlZ2lzdGVyRmluYWwiIGFyZ3M9Im5ld05hbWUsc3Ryb2tlLGxpbmUsb3BhY2l0eSx4LHksd2lkdGgsaGVpZ2h0LHgxLHkxLHgyLHkyLGRvQ2FsbCxzd2ZPYmosekluZGV4Ij4KKwkJCXZhciBhY3Rpb25PYmplY3QgPSBuZXcgQXJyYXkoKTsKKwkJCWFjdGlvbk9iamVjdFswXSA9ICdsaW5lJzsKKwkJCWFjdGlvbk9iamVjdFsxXSA9IHN0cm9rZTsKKwkJCWFjdGlvbk9iamVjdFsyXSA9IGxpbmU7CisJCQlhY3Rpb25PYmplY3RbM10gPSBvcGFjaXR5OworCQkJYWN0aW9uT2JqZWN0WzRdID0geDEKKwkJCWFjdGlvbk9iamVjdFs1XSA9IHkxOworCQkJYWN0aW9uT2JqZWN0WzZdID0geDI7CisJCQlhY3Rpb25PYmplY3RbN10gPSB5MjsKKwkJCWFjdGlvbk9iamVjdFs4XSA9IHpJbmRleDsvLy04CisJCQlhY3Rpb25PYmplY3RbOV0gPSBzd2ZPYmo7Ly8tNworCQkJYWN0aW9uT2JqZWN0WzEwXSA9IHRoaXMuY291bnRlcjsvLy02CisJCQlhY3Rpb25PYmplY3RbMTFdID0geDsvLy01CisJCQlhY3Rpb25PYmplY3RbMTJdID0geTsvLy00CisJCQlhY3Rpb25PYmplY3RbMTNdID0gd2lkdGg7Ly8tMworCQkJYWN0aW9uT2JqZWN0WzE0XSA9IGhlaWdodDsvLy0yCisJCQlhY3Rpb25PYmplY3RbMTVdID0gbmV3TmFtZTsvLy0xCisJCQl0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0LnB1c2goYWN0aW9uT2JqZWN0KTsKKwkJCWlmIChkb0NhbGwpCisJCQkJdGhpcy5vbnNoYXJlZE1lc3NhZ2UoJ2RyYXcnLCBhY3Rpb25PYmplY3QpOworCQk8L21ldGhvZD4gICAgICAgCisgICAgCisgICAgCisJCTxtZXRob2QgbmFtZT0ibGluZWFjdGlvbkhpc3RvcnkiIGFyZ3M9Imxhc3RBY3Rpb25PYmplY3QscGFyZW50VmlldyI+CisJCTwhW0NEQVRBWworCisJCQkvL0RlYnVnLndyaXRlKCIjIyBsaW5lYWN0aW9uSGlzdG9yeSIscGFyZW50VmlldywiIDIgIyMgTkVXIHgseSAiLGxhc3RBY3Rpb25PYmplY3RbbGFzdEFjdGlvbk9iamVjdC5sZW5ndGgtNV0sbGFzdEFjdGlvbk9iamVjdFtsYXN0QWN0aW9uT2JqZWN0Lmxlbmd0aC00XSwiIHdpZHRoLGhlaWdodDogIixsYXN0QWN0aW9uT2JqZWN0W2xhc3RBY3Rpb25PYmplY3QubGVuZ3RoLTNdLGxhc3RBY3Rpb25PYmplY3RbbGFzdEFjdGlvbk9iamVjdC5sZW5ndGgtMl0pOworCisJCQl2YXIgdG1wQ3VycmVudGxheWVyID0gbmV3IGx6LmRyYXdWaWV3TmV3KHBhcmVudFZpZXcsIHsKKwkJCQkJCW5hbWUgOiBsYXN0QWN0aW9uT2JqZWN0W2xhc3RBY3Rpb25PYmplY3QubGVuZ3RoIC0gMV0sCisJCQkJCQl4IDogbGFzdEFjdGlvbk9iamVjdFtsYXN0QWN0aW9uT2JqZWN0Lmxlbmd0aCAtIDVdLAorCQkJCQkJeSA6IGxhc3RBY3Rpb25PYmplY3RbbGFzdEFjdGlvbk9iamVjdC5sZW5ndGggLSA0XSwKKwkJCQkJCXdpZHRoIDogbGFzdEFjdGlvbk9iamVjdFtsYXN0QWN0aW9uT2JqZWN0Lmxlbmd0aCAtIDNdLAorCQkJCQkJaGVpZ2h0IDogbGFzdEFjdGlvbk9iamVjdFtsYXN0QWN0aW9uT2JqZWN0Lmxlbmd0aCAtIDJdLAorCQkJCQkJb3BhY2l0eSA6IGxhc3RBY3Rpb25PYmplY3RbM10KKwkJCQkJfSk7CisKKwkJCS8vdGhpcy5jdXJyZW50bGF5ZXIuZmlsbHN0eWxlID0gbGFzdEFjdGlvbk9iamVjdFsxXTsKKwkJCXRtcEN1cnJlbnRsYXllci5saW5lV2lkdGggPSBsYXN0QWN0aW9uT2JqZWN0WzJdOworCQkJdG1wQ3VycmVudGxheWVyLnN0cm9rZVN0eWxlID0gbGFzdEFjdGlvbk9iamVjdFsxXTsKKworCQkJdGhpcy5kcmF3bGluZU9uT2JqZWN0KHRtcEN1cnJlbnRsYXllciwgbGFzdEFjdGlvbk9iamVjdFs0XSwKKwkJCQkJbGFzdEFjdGlvbk9iamVjdFs1XSwgbGFzdEFjdGlvbk9iamVjdFs2XSwKKwkJCQkJbGFzdEFjdGlvbk9iamVjdFs3XSk7CisKKwkJCS8vQWRkIExheWVyIHRvIGdsb2JhbCBMYXllciAgICAgCisJCQl0aGlzLmxheWVycy5wdXNoKHRtcEN1cnJlbnRsYXllcik7CisKKwkJCXRoaXMuZG9TV0ZEb2N1bWVudFN0YXR1cyh0bXBDdXJyZW50bGF5ZXIsCisJCQkJCWxhc3RBY3Rpb25PYmplY3RbbGFzdEFjdGlvbk9iamVjdC5sZW5ndGggLSA3XSk7CisJCV1dPgorCQk8L21ldGhvZD4KKyAgICAKKwk8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9iYXNlL3Rvb2xzL2Jhc2VEcmF3UGFpbnQubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvYmFzZS90b29scy9iYXNlRHJhd1BhaW50Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMGFmM2U5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvYmFzZS90b29scy9iYXNlRHJhd1BhaW50Lmx6eApAQCAtMCwwICsxLDI5MCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworCTxjbGFzcyBuYW1lPSJiYXNlRHJhd1BhaW50IiBleHRlbmRzPSJiYXNlRHJhdyIgPgorICAgIAorCQk8IS0tIHBhaW50IC0tPgorCQk8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRsYXllcnN0cm9rZSIgdmFsdWU9IjB4RkY2NjAwIiAvPgorCQk8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRsYXllcmxpbmVXaWR0aCIgdmFsdWU9IjIiIHR5cGU9Im51bWJlciIgLz4KKwkJPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50bGF5ZXJPcGFjaXR5IiB2YWx1ZT0iMSIgdHlwZT0ibnVtYmVyIiAvPgorICAgIAorCQk8IS0tIFRPRE86IENoZWNrIGlmIG5lZWRlZCwgc2VlbXMgdG8gaGF2ZSBubyByZWZlcmVuY2UgLS0+CisJCTxhdHRyaWJ1dGUgbmFtZT0icGFpbnR0cmFucyIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorICAgICAgICAgIAorCQk8IS0tICMjIyMjIyMjIyMjIyMjIyMjIyMjIworCQkJCVBhaW50CisJCQkgLS0+CisgICAgCisJCTxtZXRob2QgbmFtZT0iZHJhd2xpbmUiIGFyZ3M9IngxLHkxLHgyLHkyIj4KKwkJPCFbQ0RBVEFbCisJCQljdXJyZW50bGF5ZXIuYmVnaW5QYXRoKCk7CisJCQljdXJyZW50bGF5ZXIubW92ZVRvKHgxLCB5MSk7CisJCQljdXJyZW50bGF5ZXIubGluZVRvKHgyLCB5Mik7CisJCQljdXJyZW50bGF5ZXIuc3Ryb2tlKCk7CisJCV1dPgorCQk8L21ldGhvZD4KKyAgICAKKwkJPG1ldGhvZCBuYW1lPSJkcmF3bGluZU9uT2JqZWN0IiBhcmdzPSJvYmoseDEseTEseDIseTIiPgorCQk8IVtDREFUQVsKKwkJCW9iai5iZWdpblBhdGgoKTsKKwkJCW9iai5tb3ZlVG8oeDEsIHkxKTsKKwkJCW9iai5saW5lVG8oeDIsIHkyKTsKKwkJCW9iai5zdHJva2UoKTsKKwkJXV0+CisJCTwvbWV0aG9kPgorICAgICAgICAKKyAgICAKKwkJPG1ldGhvZCBuYW1lPSJkcmF3bGluZVJlZ2lzdGVyUGFpbnQiIGFyZ3M9IngxLHkxLHgyLHkyIj4KKwkJCXZhciBhY3Rpb25PYmplY3QgPSBuZXcgQXJyYXkoKTsKKwkJCWFjdGlvbk9iamVjdFswXSA9ICdwb2ludCc7CisJCQlhY3Rpb25PYmplY3RbMV0gPSB4MTsKKwkJCWFjdGlvbk9iamVjdFsyXSA9IHkxOworCQkJYWN0aW9uT2JqZWN0WzNdID0geDI7CisJCQlhY3Rpb25PYmplY3RbNF0gPSB5MjsKKwkJCXRoaXMuYmFzZXRlbXBhY3Rpb25vYmplY3RMaXN0LnB1c2goYWN0aW9uT2JqZWN0KTsKKwkJPC9tZXRob2Q+IAorICAgICAgICAgCisJCTxtZXRob2QgbmFtZT0ic3RhcnRQYWludCI+CisKKwkJCS8vRGVidWcud3JpdGUoInN0YXJ0UGFpbnQgIix0aGlzLnN0YXJ0eCx0aGlzLnN0YXJ0eSk7CisJCQl0aGlzLmN1cnJlbnRsYXllciA9IG5ldyBsei5kcmF3Vmlld05ldyh0aGlzLCB7CisJCQkJCQluYW1lIDogJ3BhaW50JyArIHRoaXMuZ2V0Q291bnRlcigpLAorCQkJCQkJd2lkdGggOiB0aGlzLndpZHRoICsgMiwKKwkJCQkJCWhlaWdodCA6IHRoaXMuaGVpZ2h0ICsgMiwKKwkJCQkJCXggOiAtMSwKKwkJCQkJCXkgOiAtMSwKKwkJCQkJCW9wYWNpdHkgOiB0aGlzLmN1cnJlbnRsYXllck9wYWNpdHkKKwkJCQkJfSk7CisJCQl0aGlzLmRyYXdsaW5lT25PYmplY3QodGhpcy5jdXJyZW50bGF5ZXIsIC0xLCAtMSwgMCwgMCk7CisJCQl0aGlzLmRyYXdsaW5lT25PYmplY3QodGhpcy5jdXJyZW50bGF5ZXIsIHRoaXMud2lkdGgsIHRoaXMuaGVpZ2h0LAorCQkJCQl0aGlzLndpZHRoICsgMSwgdGhpcy5oZWlnaHQgKyAxKTsKKworCQkJdGhpcy5zdGFydHggPSB0aGlzLmN1cnJlbnRsYXllci5nZXRNb3VzZSgneCcpOworCQkJdGhpcy5zdGFydHkgPSB0aGlzLmN1cnJlbnRsYXllci5nZXRNb3VzZSgneScpOworCisJCQkvL1NldCBwcmV2aW91cyB0byBudWxsCisJCQl0aGlzLnByZXZ4ID0gbnVsbDsKKwkJCXRoaXMucHJldnkgPSBudWxsOworCisJCQljdXJyZW50bGF5ZXIuc3Ryb2tlU3R5bGUgPSB0aGlzLmN1cnJlbnRsYXllcnN0cm9rZTsKKwkJCWN1cnJlbnRsYXllci5saW5lV2lkdGggPSB0aGlzLmN1cnJlbnRsYXllcmxpbmVXaWR0aDsKKwkJCWN1cnJlbnRsYXllci5maWxsc3R5bGUgPSAnMHgwMDAwMDAnOworCisJCQl0aGlzLmJhc2V0ZW1wYWN0aW9ub2JqZWN0TGlzdCA9IG5ldyBBcnJheSgpOworCisJCQkvL2JlZ2luRmlsbCggdGhlX2NvbG9ycGlja2VyLnNlbGVjdGVkQ29sb3IgKTsKKwkJPC9tZXRob2Q+CisKKwkJPG1ldGhvZCBuYW1lPSJlbmRQYWludCI+CisgICAgICAgIC8vLy9EZWJ1Zy53cml0ZSgiZW5kUGFpbnQiKTsKKwkJPCFbQ0RBVEFbCisJCQl2YXIgdGVtcE5hbWUgPSB0aGlzLmN1cnJlbnRsYXllci5uYW1lOworCQkJdGhpcy5jdXJyZW50bGF5ZXIuZGVzdHJveSgpOworCisJCQkvL0dldEJvdW5kcyBvZiB0aGF0IE9iamVjdAorCQkJdmFyIG1pbnggPSB0aGlzLndpZHRoICsgMjsKKwkJCXZhciBtaW55ID0gdGhpcy5oZWlnaHQgKyAyOworCQkJdmFyIG1heHggPSAtMjsKKwkJCXZhciBtYXh5ID0gLTI7CisKKwkJCWZvciAodmFyIGVnID0gMDsgZWcgPCB0aGlzLmJhc2V0ZW1wYWN0aW9ub2JqZWN0TGlzdC5sZW5ndGg7IGVnKyspIHsKKwkJCQkvLy8vRGVidWcud3JpdGUodGhpcy5iYXNldGVtcGFjdGlvbm9iamVjdExpc3RbZWddWzFdLHRoaXMuYmFzZXRlbXBhY3Rpb25vYmplY3RMaXN0W2VnXVszXSk7CisJCQkJaWYgKHRoaXMuYmFzZXRlbXBhY3Rpb25vYmplY3RMaXN0W2VnXVsxXSA8IG1pbngpCisJCQkJCW1pbnggPSB0aGlzLmJhc2V0ZW1wYWN0aW9ub2JqZWN0TGlzdFtlZ11bMV07CisJCQkJaWYgKHRoaXMuYmFzZXRlbXBhY3Rpb25vYmplY3RMaXN0W2VnXVszXSA8IG1pbngpCisJCQkJCW1pbnggPSB0aGlzLmJhc2V0ZW1wYWN0aW9ub2JqZWN0TGlzdFtlZ11bM107CisKKwkJCQlpZiAodGhpcy5iYXNldGVtcGFjdGlvbm9iamVjdExpc3RbZWddWzFdID4gbWF4eCkKKwkJCQkJbWF4eCA9IHRoaXMuYmFzZXRlbXBhY3Rpb25vYmplY3RMaXN0W2VnXVsxXTsKKwkJCQlpZiAodGhpcy5iYXNldGVtcGFjdGlvbm9iamVjdExpc3RbZWddWzNdID4gbWF4eCkKKwkJCQkJbWF4eCA9IHRoaXMuYmFzZXRlbXBhY3Rpb25vYmplY3RMaXN0W2VnXVszXTsKKworCQkJCWlmICh0aGlzLmJhc2V0ZW1wYWN0aW9ub2JqZWN0TGlzdFtlZ11bMl0gPCBtaW55KQorCQkJCQltaW55ID0gdGhpcy5iYXNldGVtcGFjdGlvbm9iamVjdExpc3RbZWddWzJdOworCQkJCWlmICh0aGlzLmJhc2V0ZW1wYWN0aW9ub2JqZWN0TGlzdFtlZ11bNF0gPCBtaW55KQorCQkJCQltaW55ID0gdGhpcy5iYXNldGVtcGFjdGlvbm9iamVjdExpc3RbZWddWzRdOworCisJCQkJaWYgKHRoaXMuYmFzZXRlbXBhY3Rpb25vYmplY3RMaXN0W2VnXVsyXSA+IG1heHkpCisJCQkJCW1heHkgPSB0aGlzLmJhc2V0ZW1wYWN0aW9ub2JqZWN0TGlzdFtlZ11bMl07CisJCQkJaWYgKHRoaXMuYmFzZXRlbXBhY3Rpb25vYmplY3RMaXN0W2VnXVs0XSA+IG1heHkpCisJCQkJCW1heHkgPSB0aGlzLmJhc2V0ZW1wYWN0aW9ub2JqZWN0TGlzdFtlZ11bNF07CisJCQl9CisKKwkJCWZvciAodmFyIGVnID0gMDsgZWcgPCB0aGlzLmJhc2V0ZW1wYWN0aW9ub2JqZWN0TGlzdC5sZW5ndGg7IGVnKyspIHsKKworCQkJCXRoaXMuYmFzZXRlbXBhY3Rpb25vYmplY3RMaXN0W2VnXVsxXSAtPSBtaW54OworCQkJCXRoaXMuYmFzZXRlbXBhY3Rpb25vYmplY3RMaXN0W2VnXVsyXSAtPSBtaW55OworCQkJCXRoaXMuYmFzZXRlbXBhY3Rpb25vYmplY3RMaXN0W2VnXVszXSAtPSBtaW54OworCQkJCXRoaXMuYmFzZXRlbXBhY3Rpb25vYmplY3RMaXN0W2VnXVs0XSAtPSBtaW55CisKKwkJCX0KKworCQkJdmFyIHdpZHRoID0gbWF4eCAtIG1pbng7CisJCQl2YXIgaGVpZ2h0ID0gbWF4eSAtIG1pbnk7CisJCQkvL2lmICgkZGVidWcpIERlYnVnLmluZm8oIiMjIDEgIyMgTkVXIHgseSAiLG1pbngsbWlueSwiIHdpZHRoLGhlaWdodDogIix3aWR0aCxoZWlnaHQpOworCisJCQlpZiAod2lkdGggPCAyICYmIGhlaWdodCA8IDIpIHsKKworCQkJCS8vaWYgKCRkZWJ1ZykgRGVidWcuaW5mbygiQWRkIG1pbmltdW0gc2l6ZSBvZiBQYWludGluZyBMaW5lIik7CisKKwkJCQlpZiAodGhpcy5iYXNldGVtcGFjdGlvbm9iamVjdExpc3QubGVuZ3RoID4gMCkgeworCisJCQkJCXZhciBsYXN0UG9pbnQgPSB0aGlzLmJhc2V0ZW1wYWN0aW9ub2JqZWN0TGlzdFt0aGlzLmJhc2V0ZW1wYWN0aW9ub2JqZWN0TGlzdC5sZW5ndGgKKwkJCQkJCQktIDFdOworCisJCQkJCXZhciBhY3Rpb25PYmplY3QgPSBuZXcgQXJyYXkoKTsKKwkJCQkJYWN0aW9uT2JqZWN0WzBdID0gJ3BvaW50JzsKKwkJCQkJYWN0aW9uT2JqZWN0WzFdID0gbGFzdFBvaW50WzNdOworCQkJCQlhY3Rpb25PYmplY3RbMl0gPSBsYXN0UG9pbnRbNF07CisJCQkJCWFjdGlvbk9iamVjdFszXSA9IGxhc3RQb2ludFszXSArIDI7CisJCQkJCWFjdGlvbk9iamVjdFs0XSA9IGxhc3RQb2ludFs0XSArIDI7CisJCQkJCXRoaXMuYmFzZXRlbXBhY3Rpb25vYmplY3RMaXN0LnB1c2goYWN0aW9uT2JqZWN0KTsKKworCQkJCX0gZWxzZSB7CisKKwkJCQkJLy9pZiAoJGRlYnVnKSBEZWJ1Zy5pbmZvKCIjIyAyICMjIENVUlJFTlQgd2lkdGgsaGVpZ2h0ICIsdGhpcy53aWR0aCx0aGlzLmhlaWdodCk7CisKKwkJCQkJbWlueCA9IHRoaXMuc3RhcnR4OworCQkJCQltaW55ID0gdGhpcy5zdGFydHk7CisKKwkJCQkJdmFyIGFjdGlvbk9iamVjdCA9IG5ldyBBcnJheSgpOworCQkJCQlhY3Rpb25PYmplY3RbMF0gPSAncG9pbnQnOworCQkJCQlhY3Rpb25PYmplY3RbMV0gPSAwOworCQkJCQlhY3Rpb25PYmplY3RbMl0gPSAwOworCQkJCQlhY3Rpb25PYmplY3RbM10gPSAyOworCQkJCQlhY3Rpb25PYmplY3RbNF0gPSAyOworCQkJCQl0aGlzLmJhc2V0ZW1wYWN0aW9ub2JqZWN0TGlzdC5wdXNoKGFjdGlvbk9iamVjdCk7CisKKwkJCQkJd2lkdGggPSAyOworCQkJCQloZWlnaHQgPSAyOworCisJCQkJfQorCisJCQl9CisKKwkJCWlmICh0aGlzLmlzU25hcFRvR3JpZCkgeworCisJCQkJeGdyaWQgPSBNYXRoLnJvdW5kKChtaW54IC0gMSkgLyB0aGlzLmdyaWRXaWR0aCkKKwkJCQkJCSogdGhpcy5ncmlkV2lkdGg7CisJCQkJeWdyaWQgPSBNYXRoLnJvdW5kKChtaW55IC0gMSkgLyB0aGlzLmdyaWRXaWR0aCkKKwkJCQkJCSogdGhpcy5ncmlkV2lkdGg7CisKKwkJCQl0aGlzLmN1cnJlbnRsYXllciA9IG5ldyBsei5kcmF3Vmlld05ldyh0aGlzLCB7CisJCQkJCQkJbmFtZSA6IHRlbXBOYW1lLAorCQkJCQkJCXggOiB4Z3JpZCwKKwkJCQkJCQl5IDogeWdyaWQsCisJCQkJCQkJd2lkdGggOiB3aWR0aCwKKwkJCQkJCQloZWlnaHQgOiBoZWlnaHQsCisJCQkJCQkJb3BhY2l0eSA6IHRoaXMuY3VycmVudGxheWVyT3BhY2l0eQorCQkJCQkJfSk7CisJCQl9IGVsc2UgeworCQkJCXRoaXMuY3VycmVudGxheWVyID0gbmV3IGx6LmRyYXdWaWV3TmV3KHRoaXMsIHsKKwkJCQkJCQluYW1lIDogdGVtcE5hbWUsCisJCQkJCQkJeCA6IG1pbnggLSAxLAorCQkJCQkJCXkgOiBtaW55IC0gMSwKKwkJCQkJCQl3aWR0aCA6IHdpZHRoLAorCQkJCQkJCWhlaWdodCA6IGhlaWdodCwKKwkJCQkJCQlvcGFjaXR5IDogdGhpcy5jdXJyZW50bGF5ZXJPcGFjaXR5CisJCQkJCQl9KTsKKwkJCX0KKworCQkJdGhpcy5jdXJyZW50bGF5ZXIuZmlsbHN0eWxlID0gJzB4MDAwMDAwJzsKKwkJCXRoaXMuY3VycmVudGxheWVyLmxpbmVXaWR0aCA9IHRoaXMuY3VycmVudGxheWVybGluZVdpZHRoOworCQkJdGhpcy5jdXJyZW50bGF5ZXIuc3Ryb2tlU3R5bGUgPSB0aGlzLmN1cnJlbnRsYXllcnN0cm9rZTsKKworCQkJZm9yICh2YXIgZWcgPSAwOyBlZyA8IHRoaXMuYmFzZXRlbXBhY3Rpb25vYmplY3RMaXN0Lmxlbmd0aDsgZWcrKykKKwkJCQl0aGlzLmRyYXdsaW5lKHRoaXMuYmFzZXRlbXBhY3Rpb25vYmplY3RMaXN0W2VnXVsxXSwKKwkJCQkJCXRoaXMuYmFzZXRlbXBhY3Rpb25vYmplY3RMaXN0W2VnXVsyXSwKKwkJCQkJCXRoaXMuYmFzZXRlbXBhY3Rpb25vYmplY3RMaXN0W2VnXVszXSwKKwkJCQkJCXRoaXMuYmFzZXRlbXBhY3Rpb25vYmplY3RMaXN0W2VnXVs0XSk7CisKKwkJCS8vdGhpcy5jdXJyZW50bGF5ZXIuc2V0QXR0cmlidXRlKCdzdHJldGNoZXMnLCdib3RoJyk7CisKKwkJCS8vQWRkIExheWVyIHRvIGdsb2JhbCBMYXllciAgICAgCisJCQl0aGlzLmxheWVycy5wdXNoKHRoaXMuY3VycmVudGxheWVyKTsKKworCQkJdGhpcy5yZWdpc3RlckZpbmFsKHRoaXMuZ2V0U1dGRG9jdW1lbnRTdGF0dXMoKSwgdGhpcy5nZXRaSW5kZXgoKSk7CisJCV1dPgorCQk8L21ldGhvZD4gICAgCisKKwkJPG1ldGhvZCBuYW1lPSJyZWdpc3RlckZpbmFsIiBhcmdzPSJzd2ZPYmosekluZGV4Ij4KKwkJCXZhciBhY3Rpb25PYmplY3QgPSBuZXcgQXJyYXkoKTsKKwkJCWFjdGlvbk9iamVjdFswXSA9ICdwYWludCc7CisJCQlhY3Rpb25PYmplY3RbMV0gPSB0aGlzLmJhc2V0ZW1wYWN0aW9ub2JqZWN0TGlzdDsKKwkJCWFjdGlvbk9iamVjdFsyXSA9IGN1cnJlbnRsYXllci5maWxsc3R5bGU7CisJCQlhY3Rpb25PYmplY3RbM10gPSBjdXJyZW50bGF5ZXIubGluZVdpZHRoOworCQkJYWN0aW9uT2JqZWN0WzRdID0gY3VycmVudGxheWVyLnN0cm9rZVN0eWxlOworCQkJYWN0aW9uT2JqZWN0WzVdID0gdGhpcy5jdXJyZW50bGF5ZXJPcGFjaXR5OworCQkJYWN0aW9uT2JqZWN0WzZdID0gekluZGV4Oy8vLTgKKwkJCWFjdGlvbk9iamVjdFs3XSA9IHN3Zk9iajsvLy03CisJCQlhY3Rpb25PYmplY3RbOF0gPSB0aGlzLmNvdW50ZXI7Ly8tNgorCQkJYWN0aW9uT2JqZWN0WzldID0gY3VycmVudGxheWVyLng7Ly8tNQorCQkJYWN0aW9uT2JqZWN0WzEwXSA9IGN1cnJlbnRsYXllci55Oy8vLTQKKwkJCWFjdGlvbk9iamVjdFsxMV0gPSBjdXJyZW50bGF5ZXIud2lkdGg7Ly8tMworCQkJYWN0aW9uT2JqZWN0WzEyXSA9IGN1cnJlbnRsYXllci5oZWlnaHQ7Ly8tMgorCQkJYWN0aW9uT2JqZWN0WzEzXSA9IHRoaXMuY3VycmVudGxheWVyLm5hbWU7Ly8tMQorCQkJaWYgKCRkZWJ1ZykKKwkJCQlEZWJ1Zy53cml0ZSgicmVnaXN0ZXJGaW5hbCA6OiAiLCBhY3Rpb25PYmplY3QpOworCQkJdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdC5wdXNoKGFjdGlvbk9iamVjdCk7CisJCQl0aGlzLm9uc2hhcmVkTWVzc2FnZSgnZHJhdycsIGFjdGlvbk9iamVjdCk7CisJCTwvbWV0aG9kPiAgICAgIAorICAgIAorICAgIAorCQk8bWV0aG9kIG5hbWU9InBhaW50YWN0aW9uSGlzdG9yeSIgYXJncz0ibGFzdEFjdGlvbk9iamVjdCxwYXJlbnRWaWV3Ij4KKwkJPCFbQ0RBVEFbCisJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiIyMgcGFpbnRhY3Rpb25IaXN0b3J5IiwgcGFyZW50VmlldywgIiBvcGFjaXR5OiIsCisJCQkJCQlsYXN0QWN0aW9uT2JqZWN0WzVdKTsKKworCQkJdmFyIHRtcEN1cnJlbnRsYXllciA9IG5ldyBsei5kcmF3Vmlld05ldyhwYXJlbnRWaWV3LCB7CisJCQkJCQluYW1lIDogbGFzdEFjdGlvbk9iamVjdFtsYXN0QWN0aW9uT2JqZWN0Lmxlbmd0aCAtIDFdLAorCQkJCQkJeCA6IGxhc3RBY3Rpb25PYmplY3RbbGFzdEFjdGlvbk9iamVjdC5sZW5ndGggLSA1XSwKKwkJCQkJCXkgOiBsYXN0QWN0aW9uT2JqZWN0W2xhc3RBY3Rpb25PYmplY3QubGVuZ3RoIC0gNF0sCisJCQkJCQl3aWR0aCA6IGxhc3RBY3Rpb25PYmplY3RbbGFzdEFjdGlvbk9iamVjdC5sZW5ndGggLSAzXSwKKwkJCQkJCWhlaWdodCA6IGxhc3RBY3Rpb25PYmplY3RbbGFzdEFjdGlvbk9iamVjdC5sZW5ndGggLSAyXSwKKwkJCQkJCW9wYWNpdHkgOiBsYXN0QWN0aW9uT2JqZWN0WzVdCisJCQkJCX0pOworCQkJCQkKKwkJCWlmICgkZGVidWcpICgicGFpbnRhY3Rpb25IaXN0b3J5IDEgIix0bXBDdXJyZW50bGF5ZXIueCx0bXBDdXJyZW50bGF5ZXIueSx0bXBDdXJyZW50bGF5ZXIub3BhY2l0eSk7CisKKwkJCXRtcEN1cnJlbnRsYXllci5maWxsc3R5bGUgPSBsYXN0QWN0aW9uT2JqZWN0WzJdOworCQkJdG1wQ3VycmVudGxheWVyLmxpbmVXaWR0aCA9IGxhc3RBY3Rpb25PYmplY3RbM107CisJCQl0bXBDdXJyZW50bGF5ZXIuc3Ryb2tlU3R5bGUgPSBsYXN0QWN0aW9uT2JqZWN0WzRdOworCQkJCisJCQlpZiAoJGRlYnVnKSAoInBhaW50YWN0aW9uSGlzdG9yeSAyICIsdG1wQ3VycmVudGxheWVyLmZpbGxzdHlsZSx0bXBDdXJyZW50bGF5ZXIubGluZVdpZHRoLHRtcEN1cnJlbnRsYXllci5zdHJva2VTdHlsZSk7CisKKwkJCWZvciAodmFyIGVnID0gMDsgZWcgPCBsYXN0QWN0aW9uT2JqZWN0WzFdLmxlbmd0aDsgZWcrKykgeworCQkJCWlmICgkZGVidWcpICgicGFpbnRhY3Rpb25IaXN0b3J5IDMgIixsYXN0QWN0aW9uT2JqZWN0WzFdW2VnXVsxXSwgbGFzdEFjdGlvbk9iamVjdFsxXVtlZ11bMl0sCisJCQkJCQkJCQkJbGFzdEFjdGlvbk9iamVjdFsxXVtlZ11bM10sIGxhc3RBY3Rpb25PYmplY3RbMV1bZWddWzRdKTsKKwkJCQl0aGlzLmRyYXdsaW5lT25PYmplY3QodG1wQ3VycmVudGxheWVyLAorCQkJCQkJbGFzdEFjdGlvbk9iamVjdFsxXVtlZ11bMV0sIGxhc3RBY3Rpb25PYmplY3RbMV1bZWddWzJdLAorCQkJCQkJbGFzdEFjdGlvbk9iamVjdFsxXVtlZ11bM10sIGxhc3RBY3Rpb25PYmplY3RbMV1bZWddWzRdKTsKKwkJCX0KKworCQkJLy90bXBDdXJyZW50bGF5ZXIuc2V0QXR0cmlidXRlKCdzdHJldGNoZXMnLCdib3RoJyk7CisJCQl0aGlzLmRvU1dGRG9jdW1lbnRTdGF0dXModG1wQ3VycmVudGxheWVyLAorCQkJCQlsYXN0QWN0aW9uT2JqZWN0W2xhc3RBY3Rpb25PYmplY3QubGVuZ3RoIC0gN10pOworCQldXT4KKwkJPC9tZXRob2Q+CisgICAgCisJPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvYmFzZS90b29scy9iYXNlRHJhd1BvaW50ZXIubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvYmFzZS90b29scy9iYXNlRHJhd1BvaW50ZXIubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiNDFkNmIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9iYXNlL3Rvb2xzL2Jhc2VEcmF3UG9pbnRlci5sengKQEAgLTAsMCArMSw3MiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9ImJhc2VEcmF3UG9pbnRlciIgZXh0ZW5kcz0iYmFzZURyYXdFbGxpcHNlIiA+CisgICAgICAKKyAgICA8IS0tIFBvaW50ZXJzIC0tPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iZW5kUG9pbnRlcldoaXRlQm9hcmQiPgorICAgICAgICB0aGlzLmRyYXdQb2ludGVyV2hpdGVCb2FyZEZpbmFsKAorICAgICAgICAgICAgICAgICJwb2ludGVyIit0aGlzLmdldENvdW50ZXIoKSwKKyAgICAgICAgICAgICAgICB0aGlzLmdldE1vdXNlKCd4JyksdGhpcy5nZXRNb3VzZSgneScpLAorICAgICAgICAgICAgICAgIDAsMAorICAgICAgICAgICAgKQorICAgIDwvbWV0aG9kPgorCisgICAgPG1ldGhvZCBuYW1lPSJkcmF3UG9pbnRlclRvSGlzdG9yeSIgYXJncz0iYWN0aW9uT2JqZWN0LHBhcmVudE9iaiI+CisgICAgICAgIG5ldyBsei53aGl0ZUJvYXJkUG9pbnRlcihwYXJlbnRPYmoseworICAgICAgICAgICAgeDphY3Rpb25PYmplY3RbYWN0aW9uT2JqZWN0Lmxlbmd0aC01XSwKKyAgICAgICAgICAgIHk6YWN0aW9uT2JqZWN0W2FjdGlvbk9iamVjdC5sZW5ndGgtNF0sCisgICAgICAgICAgICB1c2VyTmFtZTphY3Rpb25PYmplY3RbMV0KKyAgICAgICAgfSkKKyAgICA8L21ldGhvZD4KKworICAgIDxtZXRob2QgbmFtZT0iZHJhd1BvaW50ZXJXaGl0ZUJvYXJkRmluYWwiIGFyZ3M9Im5ld05hbWUseCx5LHdpZHRoLGhlaWdodCIgPgorICAgIAl2YXIgZGlzcGxheWVkTmFtZSA9IGNhbnZhcy5jdXJyZW50dXNlcjsKKyAgICAJaWYgKGNhbnZhcy5maXJzdE5hbWUubGVuZ3RoKCkgPiAwKSB7CisgICAgCQlkaXNwbGF5ZWROYW1lID0gY2FudmFzLmZpcnN0TmFtZTsKKyAgICAJfQorICAgIAlpZiAoY2FudmFzLmxhc3ROYW1lLmxlbmd0aCA+IDApIHsKKyAgICAJCWlmIChjYW52YXMuZmlyc3ROYW1lLmxlbmd0aCA+IDApIHsKKyAgICAJCQlkaXNwbGF5ZWROYW1lICs9ICIgIiArIGNhbnZhcy5sYXN0TmFtZTsKKyAgICAJCX0gZWxzZSB7CisgICAgCQkJZGlzcGxheWVkTmFtZSA9IGNhbnZhcy5sYXN0TmFtZTsKKyAgICAJCX0KKyAgICAJfQorICAgIAkKKyAgICAgICAgdmFyIGFjdGlvbk9iamVjdCA9IG5ldyBBcnJheSgpOworICAgICAgICBhY3Rpb25PYmplY3RbMF0gPSAncG9pbnRlcldoaXRlQm9hcmQnOworICAgICAgICBhY3Rpb25PYmplY3RbMV0gPSBkaXNwbGF5ZWROYW1lOworICAgICAgICBhY3Rpb25PYmplY3RbMl0gPSB0aGlzLmNvdW50ZXI7Ly8tNgorICAgICAgICBhY3Rpb25PYmplY3RbM10gPSB4Oy8vLTUKKyAgICAgICAgYWN0aW9uT2JqZWN0WzRdID0geTsvLy00CisgICAgICAgIGFjdGlvbk9iamVjdFs1XSA9IHdpZHRoOy8vLTMKKyAgICAgICAgYWN0aW9uT2JqZWN0WzZdID0gaGVpZ2h0Oy8vLTIKKyAgICAgICAgYWN0aW9uT2JqZWN0WzddID0gbmV3TmFtZTsvLy0xCisgICAgICAgIHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3QucHVzaChhY3Rpb25PYmplY3QpOworICAgICAgICB0aGlzLm9uc2hhcmVkTWVzc2FnZSgnZHJhdycsYWN0aW9uT2JqZWN0KTsKKyAgICAgICAgdGhpcy5kcmF3UG9pbnRlclRvSGlzdG9yeShhY3Rpb25PYmplY3QsdGhpcyk7CisgICAgPC9tZXRob2Q+CisgICAgCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9iYXNlL3Rvb2xzL2Jhc2VEcmF3UmVjdC5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9iYXNlL3Rvb2xzL2Jhc2VEcmF3UmVjdC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzNmY2Q0ZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL2Jhc2UvdG9vbHMvYmFzZURyYXdSZWN0Lmx6eApAQCAtMCwwICsxLDIwOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9ImJhc2VEcmF3UmVjdCIgZXh0ZW5kcz0iYmFzZURyYXdTZWxlY3QiID4KKyAgICAKKyAgICA8IS0tICAKKyAgICAgICAgZm9yIGRyYXdpbmcgcmVjdGFuZ2xlcyB0aGUgdmFyaWFibGUgCisgICAgICAgIHdpdGggKkRpcyogaW5kaWNhdGVzIGlmIHRoZSBsaW5lL2ZpbC1jb2xvciBpcyBhY3RpdmUgKCsxLy0xKQorICAgICAtLT4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRyZWN0YW5nbGVzdHJva2UiIHZhbHVlPSIweEZGNjYwMCIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRyZWN0YW5nbGVzdHJva2VEaXMiIHZhbHVlPSIxIiB0eXBlPSJudW1iZXIiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50cmVjdGFuZ2xlc3Ryb2tlRmlsbCIgdmFsdWU9IjB4RkZGRjMzIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudHJlY3RhbmdsZXN0cm9rZUZpbGxEaXMiIHZhbHVlPSIxIiB0eXBlPSJudW1iZXIiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50cmVjdGFuZ2xlaW5lV2lkdGgiIHZhbHVlPSI0IiB0eXBlPSJudW1iZXIiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50cmVjdGFuZ2xlT3BhY2l0eSIgdmFsdWU9IjEiIHR5cGU9Im51bWJlciIgLz4KKyAgICAgIAorICAgIDwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgICAgIFJlY3RhbmdsZQorICAgICAtLT4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InN0YXJ0UmVjdCIgYXJncz0ib2lkX25hbWUiPgorICAgICAgICBpZiAob2lkX25hbWUgPT0gbnVsbCl7CisgICAgICAgICAgICBvaWRfbmFtZSA9ICdyZWN0YW5nbGUnK3RoaXMuZ2V0Q291bnRlcigpOworICAgICAgICB9CisgICAgICAgIC8vRGVidWcud3JpdGUoInN0YXJ0UmVjdCIpOworICAgICAgICB0aGlzLmN1cnJlbnRsYXllciA9IG5ldyBsei5kcmF3Vmlld05ldyh0aGlzLHsKKyAgICAgICAgICAgIG5hbWU6b2lkX25hbWUsd2lkdGg6dGhpcy53aWR0aCxoZWlnaHQ6dGhpcy5oZWlnaHQsCisgICAgICAgICAgICBvcGFjaXR5OnRoaXMuY3VycmVudHJlY3RhbmdsZU9wYWNpdHl9KTsKKworICAgICAgICB0aGlzLmRyYXdsaW5lT25PYmplY3QodGhpcy5jdXJyZW50bGF5ZXIsLTEsLTEsMCwwKTsKKyAgICAgICAgdGhpcy5kcmF3bGluZU9uT2JqZWN0KHRoaXMuY3VycmVudGxheWVyLHRoaXMud2lkdGgsdGhpcy5oZWlnaHQsdGhpcy53aWR0aCsxLHRoaXMuaGVpZ2h0KzEpOworICAgIDwvbWV0aG9kPiAgCisKKyAgICA8bWV0aG9kIG5hbWU9ImVuZFJlY3QiPgorICAgICAgICA8IVtDREFUQVsgICAgICAgIAorICAgICAgICAKKyAgICAgICAgICAgIC8vLy9EZWJ1Zy53cml0ZSgiIHRoaXMuc3RhcnR4LCB0aGlzLnN0YXJ0eSAsIHRoaXMuZW5keCwgdGhpcy5lbmR5ICIsdGhpcy5zdGFydHgsIHRoaXMuc3RhcnR5ICwgdGhpcy5lbmR4LCB0aGlzLmVuZHkpOworICAgICAgICAgICAgdmFyIHRtcE5hbWUgPSB0aGlzLmN1cnJlbnRsYXllci5uYW1lOworICAgICAgICAgICAgdGhpcy5jdXJyZW50bGF5ZXIuZGVzdHJveSgpOworICAgICAgICAgICAgdmFyIHggPSB0aGlzLnN0YXJ0eDsKKyAgICAgICAgICAgIHZhciB3aWR0aCA9IHRoaXMuZW5keCAtIHRoaXMuc3RhcnR4OworICAgICAgICAgICAgaWYgKHRoaXMuZW5keDx0aGlzLnN0YXJ0eCl7CisgICAgICAgICAgICAgICAgeCA9IHRoaXMuZW5keDsKKyAgICAgICAgICAgICAgICB3aWR0aCA9IE1hdGguYWJzKHdpZHRoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHZhciB5ID0gdGhpcy5zdGFydHk7CisgICAgICAgICAgICB2YXIgaGVpZ2h0ID0gdGhpcy5lbmR5IC0gdGhpcy5zdGFydHk7CisgICAgICAgICAgICBpZiAodGhpcy5lbmR5PHRoaXMuc3RhcnR5KXsKKyAgICAgICAgICAgICAgICB5ID0gdGhpcy5lbmR5OworICAgICAgICAgICAgICAgIGhlaWdodCA9IE1hdGguYWJzKGhlaWdodCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmKHRoaXMuaXNTbmFwVG9HcmlkKXsgICAgICAgIAkJCisJICAgIAkJCSAgICAgICAgCSAgIAorCSAgICAgICAgICAgIHggPSBNYXRoLnJvdW5kKHgvdGhpcy5ncmlkV2lkdGgpKnRoaXMuZ3JpZFdpZHRoOworCQkgICAgCXkgPSBNYXRoLnJvdW5kKHkvdGhpcy5ncmlkV2lkdGgpKnRoaXMuZ3JpZFdpZHRoOworICAgICAgICAgICAgCisgICAgICAgICAgICB9IAorICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLmN1cnJlbnRsYXllciA9IG5ldyBsei5kcmF3Vmlld05ldyh0aGlzLHsKKyAgICAgICAgICAgICAgICBuYW1lOnRtcE5hbWUseDp4LHk6eSx3aWR0aDp3aWR0aCxoZWlnaHQ6aGVpZ2h0LAorICAgICAgICAgICAgICAgIG9wYWNpdHk6dGhpcy5jdXJyZW50cmVjdGFuZ2xlT3BhY2l0eX0pOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgbmV3IGx6LmRyYXdWaWV3SW5uZXIodGhpcy5jdXJyZW50bGF5ZXIseworICAgICAgICAgICAgICAgIG5hbWU6J19pbm5lclJlY3QnLHg6MCx5OjAsd2lkdGg6d2lkdGgsaGVpZ2h0OmhlaWdodH0pOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5kcmF3cmVjdGFuZ2xlSGlzdG9yeSh0aGlzLmN1cnJlbnRsYXllciwwLDAsd2lkdGgsaGVpZ2h0LAorICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudHJlY3RhbmdsZXN0cm9rZSx0aGlzLmN1cnJlbnRyZWN0YW5nbGVpbmVXaWR0aCwKKyAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRyZWN0YW5nbGVzdHJva2VGaWxsLHRoaXMuY3VycmVudHJlY3RhbmdsZXN0cm9rZURpcywKKyAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRyZWN0YW5nbGVzdHJva2VGaWxsRGlzKTsKKyAgICAgICAgICAgIC8vdGhpcy5jdXJyZW50bGF5ZXIuc2V0QXR0cmlidXRlKCdzdHJldGNoZXMnLCdib3RoJyk7CisgICAgICAgICAgICB0aGlzLmRyYXdyZWN0cmVnaXN0ZXJGaW5hbCh0aGlzLmN1cnJlbnRsYXllci5uYW1lLHRoaXMuY3VycmVudHJlY3RhbmdsZXN0cm9rZSwKKyAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRyZWN0YW5nbGVpbmVXaWR0aCx0aGlzLmN1cnJlbnRyZWN0YW5nbGVzdHJva2VGaWxsLAorICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudHJlY3RhbmdsZXN0cm9rZURpcyx0aGlzLmN1cnJlbnRyZWN0YW5nbGVzdHJva2VGaWxsRGlzLAorICAgICAgICAgICAgICAgIHgseSx3aWR0aCxoZWlnaHQsdGhpcy5nZXRTV0ZEb2N1bWVudFN0YXR1cygpLAorICAgICAgICAgICAgICAgIHRoaXMuZ2V0WkluZGV4KCkpOworICAgICAgICAgICAgdGhpcy5sYXllcnMucHVzaCh0aGlzLmN1cnJlbnRsYXllcik7CisgICAgICAgICAgICB0aGlzLmNoZWNrU3RlcExheWVycygpOworICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4gCisgICAgCisgICAgPCEtLQorICAgICAgICBUZXJtaW5hdGUgdGhlIHVzYWdlIG9mIHRoaXMgZnVuY3Rpb24KKyAgICAgLS0+IAorICAgIDxtZXRob2QgbmFtZT0iZHJhd3JlY3RhbmdsZSIgYXJncz0ieDEseTEseDIseTIiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgY3VycmVudGxheWVyLmxpbmVXaWR0aCA9IHRoaXMuY3VycmVudHJlY3RhbmdsZWluZVdpZHRoOworICAgICAgICAgICAgY3VycmVudGxheWVyLmJlZ2luUGF0aCgpOworICAgICAgICAgICAgY3VycmVudGxheWVyLm1vdmVUbyh4MSx5MSk7CisgICAgICAgICAgICBjdXJyZW50bGF5ZXIubGluZVRvKHgxLHkyKTsKKyAgICAgICAgICAgIGN1cnJlbnRsYXllci5saW5lVG8oeDIseTIpOworICAgICAgICAgICAgY3VycmVudGxheWVyLmxpbmVUbyh4Mix5MSk7CisgICAgICAgICAgICBjdXJyZW50bGF5ZXIubGluZVRvICh4MSx5MSk7CisgICAgICAgICAgICBjdXJyZW50bGF5ZXIuY2xvc2VQYXRoKCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRyZWN0YW5nbGVzdHJva2VEaXMhPS0xKXsKKyAgICAgICAgICAgICAgICBjdXJyZW50bGF5ZXIuc3Ryb2tlU3R5bGUgPSB0aGlzLmN1cnJlbnRyZWN0YW5nbGVzdHJva2U7CisgICAgICAgICAgICAgICAgY3VycmVudGxheWVyLnN0cm9rZSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50cmVjdGFuZ2xlc3Ryb2tlRmlsbERpcyE9LTEpeworICAgICAgICAgICAgICAgIGN1cnJlbnRsYXllci5maWxsU3R5bGUgPSB0aGlzLmN1cnJlbnRyZWN0YW5nbGVzdHJva2VGaWxsOworICAgICAgICAgICAgICAgIGN1cnJlbnRsYXllci5maWxsKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgXV0+ICAgCisgICAgPC9tZXRob2Q+ICAgCisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJyZWRyYXdSZWN0SXRlbUJ5U2NhbGluZyIgYXJncz0ib2JqUmVmIj4KKyAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgicmVkcmF3UmVjdEl0ZW1CeVNjYWxpbmc6ICIrb2JqUmVmKTsKKyAgICAgICAgdGhpcy5jdXJyZW50bGF5ZXIgPSBvYmpSZWY7CisgICAgICAgIHRoaXMuY3VycmVudGxheWVyLl9pbm5lclJlY3QuZGVzdHJveSgpOworICAgICAgICBuZXcgbHouZHJhd1ZpZXdJbm5lcih0aGlzLmN1cnJlbnRsYXllcix7CisgICAgICAgICAgICBuYW1lOidfaW5uZXJSZWN0Jyx4OjAseTowLHdpZHRoOm9ialJlZi53aWR0aCxoZWlnaHQ6b2JqUmVmLmhlaWdodH0pOworICAgICAgICB0aGlzLmRyYXdyZWN0YW5nbGVIaXN0b3J5KHRoaXMuY3VycmVudGxheWVyLDAsMCwKKyAgICAgICAgICAgIG9ialJlZi53aWR0aCxvYmpSZWYuaGVpZ2h0LAorICAgICAgICAgICAgdGhpcy5jdXJyZW50cmVjdGFuZ2xlc3Ryb2tlLHRoaXMuY3VycmVudHJlY3RhbmdsZWluZVdpZHRoLAorICAgICAgICAgICAgdGhpcy5jdXJyZW50cmVjdGFuZ2xlc3Ryb2tlRmlsbCx0aGlzLmN1cnJlbnRyZWN0YW5nbGVzdHJva2VEaXMsCisgICAgICAgICAgICB0aGlzLmN1cnJlbnRyZWN0YW5nbGVzdHJva2VGaWxsRGlzKTsKKyAgICA8L21ldGhvZD4gCisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJkcmF3cmVjdGFuZ2xlVG9IaXN0b3J5IiBhcmdzPSJsYXN0QWN0aW9uT2JqZWN0LHBhcmVudFZpZXciPgorICAgICAgICB2YXIgdG1wQ3VycmVudGxheWVyID0gbmV3IGx6LmRyYXdWaWV3TmV3KHBhcmVudFZpZXcseworICAgICAgICAgICAgbmFtZTpsYXN0QWN0aW9uT2JqZWN0W2xhc3RBY3Rpb25PYmplY3QubGVuZ3RoLTFdLAorICAgICAgICAgICAgeDpsYXN0QWN0aW9uT2JqZWN0W2xhc3RBY3Rpb25PYmplY3QubGVuZ3RoLTVdLAorICAgICAgICAgICAgeTpsYXN0QWN0aW9uT2JqZWN0W2xhc3RBY3Rpb25PYmplY3QubGVuZ3RoLTRdLAorICAgICAgICAgICAgd2lkdGg6bGFzdEFjdGlvbk9iamVjdFtsYXN0QWN0aW9uT2JqZWN0Lmxlbmd0aC0zXSwKKyAgICAgICAgICAgIGhlaWdodDpsYXN0QWN0aW9uT2JqZWN0W2xhc3RBY3Rpb25PYmplY3QubGVuZ3RoLTJdLAorICAgICAgICAgICAgb3BhY2l0eTpsYXN0QWN0aW9uT2JqZWN0WzZdfSk7CisgICAgICAgIG5ldyBsei5kcmF3Vmlld0lubmVyKHRtcEN1cnJlbnRsYXllcix7CisgICAgICAgICAgICAgICAgbmFtZTonX2lubmVyUmVjdCcseDowLHk6MCwKKyAgICAgICAgICAgICAgICB3aWR0aDpsYXN0QWN0aW9uT2JqZWN0W2xhc3RBY3Rpb25PYmplY3QubGVuZ3RoLTNdLAorICAgICAgICAgICAgICAgIGhlaWdodDpsYXN0QWN0aW9uT2JqZWN0W2xhc3RBY3Rpb25PYmplY3QubGVuZ3RoLTJdfSk7CisgICAgICAgIHRoaXMuZHJhd3JlY3RhbmdsZUhpc3RvcnkodG1wQ3VycmVudGxheWVyLDAsMCwKKyAgICAgICAgICAgIGxhc3RBY3Rpb25PYmplY3RbbGFzdEFjdGlvbk9iamVjdC5sZW5ndGgtM10sbGFzdEFjdGlvbk9iamVjdFtsYXN0QWN0aW9uT2JqZWN0Lmxlbmd0aC0yXSwKKyAgICAgICAgICAgIGxhc3RBY3Rpb25PYmplY3RbMV0sbGFzdEFjdGlvbk9iamVjdFsyXSxsYXN0QWN0aW9uT2JqZWN0WzNdLGxhc3RBY3Rpb25PYmplY3RbNF0sbGFzdEFjdGlvbk9iamVjdFs1XSk7CisgICAgICAgICAgICAKKyAgICAgICAgdGhpcy5kb1NXRkRvY3VtZW50U3RhdHVzKHRtcEN1cnJlbnRsYXllcixsYXN0QWN0aW9uT2JqZWN0W2xhc3RBY3Rpb25PYmplY3QubGVuZ3RoLTddKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImRyYXdyZWN0YW5nbGVIaXN0b3J5IiBhcmdzPSJwYXJlbnRPYmoseDEseTEseDIseTIsc3Ryb2tlLGxpbmUsZmlsbCxzdHJva2VEaXMsZmlsbERpcyI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgLy9EZWJ1Zy53cml0ZSgiZHJhd3JlY3RhbmdsZUhpc3RvcnkiLHBhcmVudE9iaix4MSx5MSx4Mix5MixzdHJva2UsbGluZSxmaWxsLHN0cm9rZURpcyxmaWxsRGlzKTsKKyAgICAgICAgICAgIHBhcmVudE9iai5faW5uZXJSZWN0LmxpbmVXaWR0aCA9IGxpbmU7CisgICAgICAgICAgICBwYXJlbnRPYmouX2lubmVyUmVjdC5iZWdpblBhdGgoKTsKKyAgICAgICAgICAgIHBhcmVudE9iai5faW5uZXJSZWN0Lm1vdmVUbyh4MSx5MSk7CisgICAgICAgICAgICBwYXJlbnRPYmouX2lubmVyUmVjdC5saW5lVG8oeDEseTIpOworICAgICAgICAgICAgcGFyZW50T2JqLl9pbm5lclJlY3QubGluZVRvKHgyLHkyKTsKKyAgICAgICAgICAgIHBhcmVudE9iai5faW5uZXJSZWN0LmxpbmVUbyh4Mix5MSk7CisgICAgICAgICAgICBwYXJlbnRPYmouX2lubmVyUmVjdC5saW5lVG8gKHgxLHkxKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHN0cm9rZURpcyE9LTEpeworICAgICAgICAgICAgICAgIHBhcmVudE9iai5faW5uZXJSZWN0LnN0cm9rZVN0eWxlID0gc3Ryb2tlOworICAgICAgICAgICAgICAgIHBhcmVudE9iai5faW5uZXJSZWN0LnN0cm9rZSgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoZmlsbERpcyE9LTEpeworICAgICAgICAgICAgICAgIHBhcmVudE9iai5faW5uZXJSZWN0LmZpbGxTdHlsZSA9IGZpbGw7CisgICAgICAgICAgICAgICAgcGFyZW50T2JqLl9pbm5lclJlY3QuZmlsbCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIF1dPiAgIAorICAgIDwvbWV0aG9kPiAgCisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJkcmF3cmVjdHJlZ2lzdGVyRmluYWwiIGFyZ3M9Im5ld05hbWUsc3Ryb2tlLGxpbmUsZmlsbCxzdHJva2VEaXMsZmlsbERpcyx4LHksd2lkdGgsaGVpZ2h0LHN3Zk9iaix6SW5kZXgiID4KKyAgICAgICAgRGVidWcud3JpdGUoImRyYXdyZWN0cmVnaXN0ZXJGaW5hbCIsbmV3TmFtZSxzdHJva2UsbGluZSxmaWxsLHN0cm9rZURpcyxmaWxsRGlzLHgseSx3aWR0aCxoZWlnaHQpOworICAgICAgICB2YXIgYWN0aW9uT2JqZWN0ID0gbmV3IEFycmF5KCk7CisgICAgICAgIGFjdGlvbk9iamVjdFswXSA9ICdyZWN0YW5nbGUnOworICAgICAgICBhY3Rpb25PYmplY3RbMV0gPSBzdHJva2U7CisgICAgICAgIGFjdGlvbk9iamVjdFsyXSA9IGxpbmU7CisgICAgICAgIGFjdGlvbk9iamVjdFszXSA9IGZpbGw7CisgICAgICAgIGFjdGlvbk9iamVjdFs0XSA9IHN0cm9rZURpczsKKyAgICAgICAgYWN0aW9uT2JqZWN0WzVdID0gZmlsbERpczsKKyAgICAgICAgYWN0aW9uT2JqZWN0WzZdID0gdGhpcy5jdXJyZW50cmVjdGFuZ2xlT3BhY2l0eTsKKyAgICAgICAgYWN0aW9uT2JqZWN0WzddID0gekluZGV4Oy8vLTgKKyAgICAgICAgYWN0aW9uT2JqZWN0WzhdID0gc3dmT2JqOy8vLTcKKyAgICAgICAgYWN0aW9uT2JqZWN0WzldID0gdGhpcy5jb3VudGVyOy8vLTYKKyAgICAgICAgYWN0aW9uT2JqZWN0WzEwXSA9IHg7Ly8tNQorICAgICAgICBhY3Rpb25PYmplY3RbMTFdID0geTsvLy00CisgICAgICAgIGFjdGlvbk9iamVjdFsxMl0gPSB3aWR0aDsvLy0zCisgICAgICAgIGFjdGlvbk9iamVjdFsxM10gPSBoZWlnaHQ7Ly8tMiAgCisgICAgICAgIGFjdGlvbk9iamVjdFsxNF0gPSBuZXdOYW1lOy8vLTEKKyAgICAgICAgdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdC5wdXNoKGFjdGlvbk9iamVjdCk7CisgICAgICAgIHRoaXMub25zaGFyZWRNZXNzYWdlKCdkcmF3JyxhY3Rpb25PYmplY3QpOworICAgIDwvbWV0aG9kPgorICAgIAorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvYmFzZS90b29scy9iYXNlRHJhd1NlbGVjdC5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9iYXNlL3Rvb2xzL2Jhc2VEcmF3U2VsZWN0Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTcxMGJiCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvYmFzZS90b29scy9iYXNlRHJhd1NlbGVjdC5sengKQEAgLTAsMCArMSw0NjUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzxjbGFzcyBuYW1lPSJiYXNlRHJhd1NlbGVjdCIgZXh0ZW5kcz0iYmFzZURyYXdUcmlhbmdsZSIgPgorICAgIAorICAgIDwhLS0gIAorICAgICAgICBmb3IgZHJhd2luZyByZWN0YW5nbGVzIHRoZSB2YXJpYWJsZSAKKyAgICAgICAgd2l0aCAqRGlzKiBpbmRpY2F0ZXMgaWYgdGhlIGxpbmUvZmlsLWNvbG9yIGlzIGFjdGl2ZSAoKzEvLTEpCisgICAgIC0tPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudFNlbGVjdGFuZ2xlc3Ryb2tlIiB2YWx1ZT0iMHg4ZTg5ODYiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50U2VsZWN0YW5nbGVzdHJva2VEaXMiIHZhbHVlPSIxIiB0eXBlPSJudW1iZXIiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50U2VsZWN0YW5nbGVzdHJva2VGaWxsIiB2YWx1ZT0iMHg4ZTg5ODYiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50U2VsZWN0YW5nbGVzdHJva2VGaWxsRGlzIiB2YWx1ZT0iMSIgdHlwZT0ibnVtYmVyIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudFNlbGVjdGFuZ2xlaW5lV2lkdGgiIHZhbHVlPSI0IiB0eXBlPSJudW1iZXIiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50U2VsZWN0YW5nbGVPcGFjaXR5IiB2YWx1ZT0iMC4yIiB0eXBlPSJudW1iZXIiIC8+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJjb3B5V2hpdGVib2FyZE9iamVjdHMiPgorICAgICAgICB0aGlzLmRvQ29weVdoaXRlYm9hcmRPYmplY3RzKCk7CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJjdXRXaGl0ZWJvYXJkT2JqZWN0cyI+CisgICAgCTwhW0NEQVRBWworICAgICAgICAJdGhpcy5kb0NvcHlXaGl0ZWJvYXJkT2JqZWN0cygpOworICAgICAgICAJZm9yICh2YXIgZWc9MDtlZzx0aGlzLmNvcHlPYmplY3QubGVuZ3RoO2VnKyspeyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB2YXIgaXRlbVRvRGVsZXRlID0gdGhpcy5jb3B5T2JqZWN0W2VnXVt0aGlzLmNvcHlPYmplY3RbZWddLmxlbmd0aC0xXTsKKyAgICAgICAgICAgICAgICB0aGlzLmRlbGV0ZUl0ZW1CeU5hbWUoaXRlbVRvRGVsZXRlKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiY3V0IG5hbWUgIiwgdGhpcy5jb3B5T2JqZWN0W2VnXVt0aGlzLmNvcHlPYmplY3RbZWddLmxlbmd0aC0xXSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vaWYgKHRoaXMuYm91bmRpbmdJc0FjdGl2ZSl7CisgICAgICAgICAgICAvLyAgICB0aGlzLmJvdW5kaW5ncmVmLl9pbm5lckRyYWcub25tb3VzZXVwLnNlbmRFdmVudCgpOworICAgICAgICAgICAgLy99CisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iZG9Db3B5V2hpdGVib2FyZE9iamVjdHMiPgorICAgICAgICA8IVtDREFUQVsgIAorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInRDb3B5T2JqZWN0IDowOiAiLHRoaXMuYm91bmRpbmdJc0FjdGl2ZSk7CisgICAgICAgIAorICAgICAgICAgICAgaWYgKHRoaXMuYm91bmRpbmdJc0FjdGl2ZSkgeworICAgICAgICAgICAgCQorICAgICAgICAgICAgCXRoaXMuY29weU9iamVjdCA9IG5ldyBBcnJheSgpOworICAgICAgICAgICAgCQorICAgICAgICAgICAgCXZhciB0T2JqZWN0ID0gbmV3IEFycmF5KCk7CisgICAgICAgICAgICAgICAgdmFyIHRDb3B5T2JqZWN0ID0gdGhpcy5nZXRCYXNlT2JqZWN0QnlOYW1lKHRoaXMuYm91bmRpbmdyZWYub2JqUmVmLm5hbWUpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ0Q29weU9iamVjdCA6MTogIix0aGlzLmJvdW5kaW5ncmVmLm9ialJlZi5uYW1lKTsKKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidENvcHlPYmplY3QgOjI6ICIsdENvcHlPYmplY3QpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPHRDb3B5T2JqZWN0Lmxlbmd0aDtpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHRJdGVtT2JqZWN0ID0gdENvcHlPYmplY3RbaV07CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAodEl0ZW1PYmplY3QgaW5zdGFuY2VvZiBBcnJheSkgeworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3RvcmluZ0l0ZW1PYmplY3QgPSBuZXcgQXJyYXkoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaz0wO2s8dEl0ZW1PYmplY3QubGVuZ3RoO2srKykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBrSXRlbU9iamVjdCA9IHRJdGVtT2JqZWN0W2tdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrSXRlbU9iamVjdCBpbnN0YW5jZW9mIEFycmF5KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3ViU3RvcmluZ0l0ZW1PYmplY3QgPSBuZXcgQXJyYXkoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGw9MDtsPGtJdGVtT2JqZWN0Lmxlbmd0aDtsKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBsSXRlbU9iamVjdCA9IGtJdGVtT2JqZWN0W2xdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViU3RvcmluZ0l0ZW1PYmplY3QucHVzaChsSXRlbU9iamVjdCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JpbmdJdGVtT2JqZWN0LnB1c2goc3ViU3RvcmluZ0l0ZW1PYmplY3QpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0b3JpbmdJdGVtT2JqZWN0LnB1c2goa0l0ZW1PYmplY3QpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFtpXSA9IHN0b3JpbmdJdGVtT2JqZWN0OworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0W2ldID0gdEl0ZW1PYmplY3Q7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHRoaXMuY29weU9iamVjdC5wdXNoKHRPYmplY3QpOworICAgICAgICAgICAgCQorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgCisgICAgICAgICAgICAJdGhpcy5jb3B5T2JqZWN0ID0gdGhpcy5zZWxlY3RlZE9iamVjdHM7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInRvIHRoaXMuY29weU9iamVjdCAiLCB0aGlzLmNvcHlPYmplY3QpOworICAgICAgICAgICAgCisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorICAgIAorICAgIAorICAgIAorICAgIDxtZXRob2QgbmFtZT0icGFzdGUiIGFyZ3M9InBhc3RlX3gsIHBhc3RlX3kiPgorICAgICAgICA8IVtDREFUQVsgICAgICAgCisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJwYXN0ZSBuYW1lICIsIHRoaXMuY29weU9iamVjdFtlZ11bdGhpcy5jb3B5T2JqZWN0W2VnXS5sZW5ndGgtMV0pOworICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInBhc3RlIGNvcHlPYmplY3QiLCB0aGlzLmNvcHlPYmplY3QpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZih0aGlzLmlzU25hcFRvR3JpZCl7IAorICAgICAgICAgICAgICAgIHBhc3RlX3ggPSBNYXRoLnJvdW5kKHBhc3RlX3gvdGhpcy5ncmlkV2lkdGgpKnRoaXMuZ3JpZFdpZHRoOworICAgICAgICAgICAgICAgIHBhc3RlX3kgPSBNYXRoLnJvdW5kKHBhc3RlX3kvdGhpcy5ncmlkV2lkdGgpKnRoaXMuZ3JpZFdpZHRoOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgc2hpZnRfeCA9IHRoaXMud2lkdGgrMTsKKyAgICAgICAgICAgIHZhciBzaGlmdF95ID0gdGhpcy5oZWlnaHQrMTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZm9yICh2YXIgZWc9MDtlZzx0aGlzLmNvcHlPYmplY3QubGVuZ3RoO2VnKyspeworICAgICAgICAgICAgCQorICAgICAgICAgICAgCXZhciB0eCA9IHRoaXMuY29weU9iamVjdFtlZ11bdGhpcy5jb3B5T2JqZWN0W2VnXS5sZW5ndGgtNV07CisgICAgICAgICAgICAJdmFyIHR5ID0gdGhpcy5jb3B5T2JqZWN0W2VnXVt0aGlzLmNvcHlPYmplY3RbZWddLmxlbmd0aC00XTsgIAorICAgICAgICAgICAgCQorICAgICAgICAgICAgCWlmICh0eCA8IHNoaWZ0X3gpIHsKKyAgICAgICAgICAgIAkJc2hpZnRfeCA9IHR4OworICAgICAgICAgICAgCX0KKyAgICAgICAgICAgIAkKKyAgICAgICAgICAgIAlpZiAodHkgPCBzaGlmdF95KSB7CisgICAgICAgICAgICAgICAgICAgIHNoaWZ0X3kgPSB0eTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAJCisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJwYXN0ZV94LHBhc3RlX3ksc2hpZnRfeCxzaGlmdF95IiwgcGFzdGVfeCxwYXN0ZV95LHNoaWZ0X3gsc2hpZnRfeSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAodmFyIGVnPTA7ZWc8dGhpcy5jb3B5T2JqZWN0Lmxlbmd0aDtlZysrKXsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvL3ZhciBpdGVtVG9EZWxldGUgPSB0aGlzLmNvcHlPYmplY3RbZWddW3RoaXMuY29weU9iamVjdFtlZ10ubGVuZ3RoLTFdOworICAgICAgICAgICAgICAgIC8vdGhpcy5kZWxldGVJdGVtQnlOYW1lKGl0ZW1Ub0RlbGV0ZSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy90aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXVsxMF0gPSB0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXVsxMF0gKyBwYXN0ZV94OworICAgICAgICAgICAgICAgIC8vdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ11bMTFdID0gdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ11bMTFdICsgcGFzdGVfeTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvL3RoaXMuY29weU9iamVjdFtlZ11bMTBdID0gdGhpcy5jb3B5T2JqZWN0W2VnXVsxMF0gKyBwYXN0ZV94IC01MDsKKyAgICAgICAgICAgICAgICAvL3RoaXMuY29weU9iamVjdFtlZ11bMTFdID0gdGhpcy5jb3B5T2JqZWN0W2VnXVsxMV0gKyBwYXN0ZV95LTUwOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHZhciB0ZW1wQXJyID0gdGhpcy5jb3B5T2JqZWN0W2VnXS5zbGljZSgwKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB0ZW1wQXJyW3RlbXBBcnIubGVuZ3RoLTFdICs9IHRlbXBBcnJbMF0rdGhpcy5nZXRDb3VudGVyKCk7IC8vTWF0aC5yb3VuZChNYXRoLnJhbmRvbSgpKjEwMDAwKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB0ZW1wQXJyW3RlbXBBcnIubGVuZ3RoLTVdID0gIHBhc3RlX3ggLSBzaGlmdF94ICsgdGVtcEFyclt0ZW1wQXJyLmxlbmd0aC01XTsKKyAgICAgICAgICAgICAgICB0ZW1wQXJyW3RlbXBBcnIubGVuZ3RoLTRdID0gcGFzdGVfeSAtIHNoaWZ0X3kgKyB0ZW1wQXJyW3RlbXBBcnIubGVuZ3RoLTRdOyAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vdGhpcy5zZW5kV2F0Y2hPYmplY3QoImRyYXciLCB0aGlzLmNvcHlPYmplY3RbZWddLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInBhc3RlIHRlbXBBcnIgOngseTogIiwgdGVtcEFyclt0ZW1wQXJyLmxlbmd0aC01XSx0ZW1wQXJyW3RlbXBBcnIubGVuZ3RoLTRdKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB0aGlzLnNlbmRXYXRjaE9iamVjdCgiZHJhdyIsIHRlbXBBcnIsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAvL3RoaXMuc2VuZFJlbW90ZVdhdGNoT2JqZWN0KHRlbXBBcnIpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHRoaXMub25zaGFyZWRNZXNzYWdlKCdkcmF3Jyx0ZW1wQXJyKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgicGFzdGUgbmFtZSAiLCB0aGlzLmNvcHlPYmplY3RbZWddKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJwYXN0ZSB0aGlzLmNvcHlPYmplY3RbZWddWzEwXSIsIHRoaXMuY29weU9iamVjdFtlZ11bMTBdKTsKKyAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJwYXN0ZSB0aGlzLmNvcHlPYmplY3RbZWddWzExXSAiLCB0aGlzLmNvcHlPYmplY3RbZWddWzExXSk7CisgICAgICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgicGFzdGUgcGFzdGVfeCAiLCBwYXN0ZV94KTsKKyAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJwYXN0ZSBwYXN0ZV95ICIsIHBhc3RlX3kpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICAgIAorICAgIDwhLS0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgICAgIFNlbGVjdCB0b29sCisgICAgIC0tPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0ic3RhcnRTZWxlY3QiIGFyZ3M9Im9pZF9uYW1lIj4KKyAgICAgICAgaWYgKG9pZF9uYW1lID09IG51bGwpeworICAgICAgICAgICAgb2lkX25hbWUgPSAnc2VsZWN0Jyt0aGlzLmdldENvdW50ZXIoKTsKKyAgICAgICAgfQorICAgICAgICAvL0RlYnVnLndyaXRlKCJzdGFydHNlbGVjdCIpOworICAgICAgICB0aGlzLmN1cnJlbnRsYXllciA9IG5ldyBsei5kcmF3Vmlld05ldyh0aGlzLHsKKyAgICAgICAgICAgIG5hbWU6b2lkX25hbWUsd2lkdGg6dGhpcy53aWR0aCxoZWlnaHQ6dGhpcy5oZWlnaHQsCisgICAgICAgICAgICBvcGFjaXR5OnRoaXMuY3VycmVudFNlbGVjdGFuZ2xlT3BhY2l0eX0pOworICAgICAgICB0aGlzLmN1cnJlbnRsYXllcgorICAgICAgICB0aGlzLmRyYXdsaW5lT25PYmplY3QodGhpcy5jdXJyZW50bGF5ZXIsLTEsLTEsMCwwKTsKKyAgICAgICAgdGhpcy5kcmF3bGluZU9uT2JqZWN0KHRoaXMuY3VycmVudGxheWVyLHRoaXMud2lkdGgsdGhpcy5oZWlnaHQsdGhpcy53aWR0aCsxLHRoaXMuaGVpZ2h0KzEpOworICAgIDwvbWV0aG9kPiAgCisKKyAgICA8bWV0aG9kIG5hbWU9ImVuZFNlbGVjdCI+CisgICAgICAgIDwhW0NEQVRBWyAgICAgICAgCisgICAgICAgIAorICAgICAgICAgICAgLy8vL0RlYnVnLndyaXRlKCIgdGhpcy5zdGFydHgsIHRoaXMuc3RhcnR5ICwgdGhpcy5lbmR4LCB0aGlzLmVuZHkgIix0aGlzLnN0YXJ0eCwgdGhpcy5zdGFydHkgLCB0aGlzLmVuZHgsIHRoaXMuZW5keSk7CisgICAgICAgICAgICB2YXIgdG1wTmFtZSA9IHRoaXMuY3VycmVudGxheWVyLm5hbWU7CisgICAgICAgICAgICB0aGlzLmN1cnJlbnRsYXllci5kZXN0cm95KCk7CisgICAgICAgICAgICB2YXIgeCA9IHRoaXMuc3RhcnR4OworICAgICAgICAgICAgdmFyIHdpZHRoID0gdGhpcy5lbmR4IC0gdGhpcy5zdGFydHg7CisgICAgICAgICAgICBpZiAodGhpcy5lbmR4PHRoaXMuc3RhcnR4KXsKKyAgICAgICAgICAgICAgICB4ID0gdGhpcy5lbmR4OworICAgICAgICAgICAgICAgIHdpZHRoID0gTWF0aC5hYnMod2lkdGgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFyIHkgPSB0aGlzLnN0YXJ0eTsKKyAgICAgICAgICAgIHZhciBoZWlnaHQgPSB0aGlzLmVuZHkgLSB0aGlzLnN0YXJ0eTsKKyAgICAgICAgICAgIGlmICh0aGlzLmVuZHk8dGhpcy5zdGFydHkpeworICAgICAgICAgICAgICAgIHkgPSB0aGlzLmVuZHk7CisgICAgICAgICAgICAgICAgaGVpZ2h0ID0gTWF0aC5hYnMoaGVpZ2h0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHdpZHRoIDwgMiAmJiBoZWlnaHQgPCAyKSB7CisgICAgICAgICAgICAJcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAvL2lmKHRoaXMuaXNTbmFwVG9HcmlkKXsgICAgICAgIAkJCisJICAgIAkJCSAgICAgICAgCSAgIAorCSAgICAgICAgICAvLyAgeCA9IE1hdGgucm91bmQoeC90aGlzLmdyaWRXaWR0aCkqdGhpcy5ncmlkV2lkdGg7CisJCSAgICAJLy95ID0gTWF0aC5yb3VuZCh5L3RoaXMuZ3JpZFdpZHRoKSp0aGlzLmdyaWRXaWR0aDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy99IAorICAgICAgICAgICAgCisgICAgICAgICAgICBpZih0aGlzLnNlbGVjdGVkT2JqZWN0cyAhPSBudWxsICYmIHRoaXMuc2VsZWN0ZWRPYmplY3RzLmxlbmd0aCA+IDApeworICAgICAgICAgICAgICAgIGZvciAodmFyIGVnPTA7ZWc8dGhpcy5zZWxlY3RlZE9iamVjdHMubGVuZ3RoO2VnKyspeworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIHZhciAgb2JqZWN0VG9VcGRhdGUgPSB0aGlzLmdldE9iamVjdEJ5TmFtZSh0aGlzLnNlbGVjdGVkT2JqZWN0c1tlZ11bdGhpcy5zZWxlY3RlZE9iamVjdHNbZWddLmxlbmd0aC0xXSk7CisgICAgICAgICAgICAgICAgICAgIG9iamVjdFRvVXBkYXRlLnNldEF0dHJpYnV0ZSgnb3BhY2l0eScsIDEpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPYmplY3RzID0gbmV3IEFycmF5KCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAodmFyIGVnPTA7ZWc8dGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdC5sZW5ndGg7ZWcrKyl7CisgICAgICAgICAgICAgICAgLy9EZWJ1Zy53cml0ZSgidGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ11bMF09PW1vZGkiLHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddWzBdLG1vZGkpOworICAgICAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIiMjIyMjIyMjIyMjIyMjIGJhc2VhY3Rpb25vYmplY3RMaXN0IHNlbGVjdCA6ICIsIHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddKTsKKyAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCIjIyMjIyMjIyMjIyMjIyBiYXNlYWN0aW9ub2JqZWN0TGlzdCBzZWxlY3QgeDogIiwgdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ11bMTBdKTsKKyAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCIjIyMjIyMjIyMjIyMjIyBiYXNlYWN0aW9ub2JqZWN0TGlzdCBzZWxlY3QgeTogIiwgdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ11bMTFdKTsKKyAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCIjIyMjIyMjIyMjIyMjIyBiYXNlYWN0aW9ub2JqZWN0TGlzdCBzZWxlY3Qgb3BhY2l0eTogIiwgdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ11bNl0pOworICAgICAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIiMjIyMjIyMjIyMjIyMjIGJhc2VhY3Rpb25vYmplY3RMaXN0IHNlbGVjdCBuYW1lOiAiLCB0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXVsxNF0pOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIiMjIyMjIyMjIyMjIyMjIGJhc2VhY3Rpb25vYmplY3RMaXN0IHNlbGVjdCB0aGlzIHg6ICIsIHgpOworICAgICAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIiMjIyMjIyMjIyMjIyMjIGJhc2VhY3Rpb25vYmplY3RMaXN0IHNlbGVjdCB0aGlzIHk6ICIsIHkpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIiMjIyMjIyMjIyMjIyMjIGJhc2VhY3Rpb25vYmplY3RMaXN0IHNlbGVjdCB0aGlzIHgrd2lkdGg6ICIsIHgrd2lkdGgpOworICAgICAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIiMjIyMjIyMjIyMjIyMjIGJhc2VhY3Rpb25vYmplY3RMaXN0IHNlbGVjdCB0aGlzIHkraGVpZ2h0OiAiLCB5K2hlaWdodCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy9pZiAodGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ11bdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdFtlZ10ubGVuZ3RoLTFdPT1iTmFtZSkgeworICAgICAgICAgICAgICAgICAgICAvL3JldHVybiB0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXTsKKyAgICAgICAgICAgICAgICAvL30KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoCisgICAgICAgICAgICAgICAgICAgICh0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXVt0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXS5sZW5ndGgtNV0gPiB4ICYmIHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddW3RoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddLmxlbmd0aC00XSA+IHkpICYmCisgICAgICAgICAgICAgICAgICAgICh0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXVt0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXS5sZW5ndGgtNV0gPCB4K3dpZHRoICYmIHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddW3RoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddLmxlbmd0aC00XSA8IHkraGVpZ2h0KQorICAgICAgICAgICAgICAgICAgICkgeworICAgICAgICAgICAgICAgICAgICAvL3JldHVybiB0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXTsKKyAgICAgICAgICAgICAgICAgICAgLy90aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXVs2XSA9IDAuMjsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgCXZhciB0T2JqZWN0ID0gbmV3IEFycmF5KCk7CisgICAgICAgICAgICAgICAgICAgCXZhciB0Q29weU9iamVjdCA9IHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddOworICAgICAgICAgICAgICAgICAgIAkKKyAgICAgICAgICAgICAgICAgICAJZm9yICh2YXIgaT0wO2k8dENvcHlPYmplY3QubGVuZ3RoO2krKykgeworICAgICAgICAgICAgICAgICAgIAkJdmFyIHRJdGVtT2JqZWN0ID0gdENvcHlPYmplY3RbaV07CisgICAgICAgICAgICAgICAgICAgCQkKKyAgICAgICAgICAgICAgICAgICAJCWlmICh0SXRlbU9iamVjdCBpbnN0YW5jZW9mIEFycmF5KSB7CisgICAgICAgICAgICAgICAgICAgCQkJCisgICAgICAgICAgICAgICAJCQkgICAgdmFyIHN0b3JpbmdJdGVtT2JqZWN0ID0gbmV3IEFycmF5KCk7CisgICAgICAgICAgICAgICAgICAgCQkJCisgICAgICAgICAgICAgICAJCQkgICAgZm9yICh2YXIgaz0wO2s8dEl0ZW1PYmplY3QubGVuZ3RoO2srKykgeworICAgICAgICAgICAJCQkJICAgICAgICB2YXIga0l0ZW1PYmplY3QgPSB0SXRlbU9iamVjdFtrXTsKKyAgICAgICAgICAgCQkJCSAgICAgICAgCisgICAgICAgICAgIAkJCQkgICAgICAgIGlmIChrSXRlbU9iamVjdCBpbnN0YW5jZW9mIEFycmF5KSB7CisgICAgICAgICAgIAkJCQkgICAgICAgIAkKKyAgICAgICAgICAgCQkJCSAgICAgICAgCXZhciBzdWJTdG9yaW5nSXRlbU9iamVjdCA9IG5ldyBBcnJheSgpOworICAgICAgICAgICAJCQkJICAgICAgICAJCisgICAgICAgICAgIAkJCQkgICAgICAgIAlmb3IgKHZhciBsPTA7bDxrSXRlbU9iamVjdC5sZW5ndGg7bCsrKSB7CisgICAgICAgICAgIAkJCQkgICAgICAgIAkJdmFyIGxJdGVtT2JqZWN0ID0ga0l0ZW1PYmplY3RbbF07CisgICAgICAgICAgIAkJCQkgICAgICAgIAkJc3ViU3RvcmluZ0l0ZW1PYmplY3QucHVzaChsSXRlbU9iamVjdCk7CisgICAgICAgICAgIAkJCQkgICAgICAgIAl9CisgICAgICAgICAgIAkJCQkgICAgICAgIAkKKyAgICAgICAgICAgCQkJCSAgICAgICAgCXN0b3JpbmdJdGVtT2JqZWN0LnB1c2goc3ViU3RvcmluZ0l0ZW1PYmplY3QpOworICAgICAgICAgICAJCQkJICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAJCQkJICAgICAgICAJc3RvcmluZ0l0ZW1PYmplY3QucHVzaChrSXRlbU9iamVjdCk7CisgICAgICAgICAgIAkJCQkgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAJCQkJCisgICAgICAgICAgICAgICAgICAgCQkJCQorICAgICAgICAgICAgICAgICAgIAkJCX0KKyAgICAgICAgICAgICAgICAgICAJCQkKKyAgICAgICAgICAgICAgICAgICAJCQl0T2JqZWN0W2ldID0gc3RvcmluZ0l0ZW1PYmplY3Q7CisgICAgICAgICAgICAgICAgICAgCQkJCisgICAgICAgICAgICAgICAgICAgCQl9IGVsc2UgeworICAgICAgICAgICAgICAgICAgIAkJCXRPYmplY3RbaV0gPSB0SXRlbU9iamVjdDsKKyAgICAgICAgICAgICAgICAgICAJCX0KKyAgICAgICAgICAgICAgICAgICAJCQorICAgICAgICAgICAgICAgICAgIAl9CisgICAgICAgICAgICAgICAgICAgCQorICAgICAgICAgICAgICAgICAgIAkKKyAgICAgICAgICAgICAgICAgICAJCisgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRPYmplY3RzLnB1c2godE9iamVjdCk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBvYmplY3RUb1VwZGF0ZSA9IHRoaXMuZ2V0T2JqZWN0QnlOYW1lKHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddW3RoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddLmxlbmd0aC0xXSk7CisgICAgICAgICAgICAgICAgICAgIG9iamVjdFRvVXBkYXRlLnNldEF0dHJpYnV0ZSgnb3BhY2l0eScsIDAuNyk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAvL3RoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddWzE0XSArPSAnX2NvcHknOworICAgICAgICAgICAgICAgICAgICAvL3RoaXMuc2VuZFJlbW90ZVdhdGNoT2JqZWN0KHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbZWddKTsKKyAgICAgICAgICAgICAgICAgICAgLy90aGlzLnNlbmRSZW1vdGVXYXRjaE9iamVjdCh0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXSk7ICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiIyMjIyMjIyMjIyMjIyMgb2JqZWN0VG9VcGRhdGU6ICIsIG9iamVjdFRvVXBkYXRlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIiMjIyMjIyMjIyMjIyMjIGJhc2VhY3Rpb25vYmplY3RMaXN0IHNlbGVjdCBvcGFjaXR5IGlmOiAiLCB0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2VnXVs2XSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSAgCisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8qCisgICAgICAgICAgICBpZih3aGl0ZWJvYXJkT2JqZWN0cy5sZW5ndGggPiAwKXsKKyAgICAgICAgICAgIAkgPSB3aGl0ZWJvYXJkT2JqZWN0czsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgICovCisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCIjIyMjIyMjIyMjIyMjIyBlbmRTZWxlY3QgdGhpcy5zZWxlY3RlZE9iamVjdHM6ICIsICB0aGlzLnNlbGVjdGVkT2JqZWN0cyk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuY3VycmVudGxheWVyID0gbmV3IGx6LmRyYXdWaWV3TmV3KHRoaXMseworICAgICAgICAgICAgICAgIG5hbWU6dG1wTmFtZSx4OngseTp5LHdpZHRoOndpZHRoLGhlaWdodDpoZWlnaHQsCisgICAgICAgICAgICAgICAgb3BhY2l0eTp0aGlzLmN1cnJlbnRTZWxlY3RhbmdsZU9wYWNpdHl9KTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIG5ldyBsei5kcmF3Vmlld0lubmVyKHRoaXMuY3VycmVudGxheWVyLHsKKyAgICAgICAgICAgICAgICBuYW1lOidfaW5uZXJTZWxlY3QnLHg6MCx5OjAsd2lkdGg6d2lkdGgsaGVpZ2h0OmhlaWdodH0pOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgLy90aGlzLmRyYXdTZWxlY3RhbmdsZUhpc3RvcnkodGhpcy5jdXJyZW50bGF5ZXIsMCwwLHdpZHRoLGhlaWdodCwKKyAgICAgICAgICAgICAgLy8gIHRoaXMuY3VycmVudFNlbGVjdGFuZ2xlc3Ryb2tlLHRoaXMuY3VycmVudFNlbGVjdGFuZ2xlaW5lV2lkdGgsCisgICAgICAgICAgICAgICAgLy90aGlzLmN1cnJlbnRTZWxlY3RhbmdsZXN0cm9rZUZpbGwsdGhpcy5jdXJyZW50U2VsZWN0YW5nbGVzdHJva2VEaXMsCisgICAgICAgICAgICAgICAgLy90aGlzLmN1cnJlbnRTZWxlY3RhbmdsZXN0cm9rZUZpbGxEaXMpOworICAgICAgICAgICAKKyAgICAgICAgICAgIC8vdGhpcy5kcmF3U2VsZWN0cmVnaXN0ZXJGaW5hbCh0aGlzLmN1cnJlbnRsYXllci5uYW1lLHRoaXMuY3VycmVudFNlbGVjdGFuZ2xlc3Ryb2tlLAorICAgICAgICAgICAgICAvLyAgdGhpcy5jdXJyZW50U2VsZWN0YW5nbGVpbmVXaWR0aCx0aGlzLmN1cnJlbnRTZWxlY3RhbmdsZXN0cm9rZUZpbGwsCisgICAgICAgICAgICAgICAgLy90aGlzLmN1cnJlbnRTZWxlY3RhbmdsZXN0cm9rZURpcyx0aGlzLmN1cnJlbnRTZWxlY3RhbmdsZXN0cm9rZUZpbGxEaXMsCisgICAgICAgICAgICAgICAgLy94LHksd2lkdGgsaGVpZ2h0LHRoaXMuZ2V0U1dGRG9jdW1lbnRTdGF0dXMoKSwKKyAgICAgICAgICAgICAgICAvL3RoaXMuZ2V0WkluZGV4KCkpOworICAgICAgICAgICAgLy90aGlzLmxheWVycy5wdXNoKHRoaXMuY3VycmVudGxheWVyKTsKKyAgICAgICAgICAgIC8vdGhpcy5jaGVja1N0ZXBMYXllcnMoKTsKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+IAorICAgIAorICAgIDwhLS0KKyAgICAgICAgVGVybWluYXRlIHRoZSB1c2FnZSBvZiB0aGlzIGZ1bmN0aW9uCisgICAgIC0tPiAKKyAgICAgPCEtLQorICAgIDxtZXRob2QgbmFtZT0iZHJhd1NlbGVjdGFuZ2xlIiBhcmdzPSJ4MSx5MSx4Mix5MiI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgCisgICAgICAgICAgICBjdXJyZW50bGF5ZXIubGluZVdpZHRoID0gdGhpcy5jdXJyZW50U2VsZWN0YW5nbGVpbmVXaWR0aDsKKyAgICAgICAgICAgIGN1cnJlbnRsYXllci5iZWdpblBhdGgoKTsKKyAgICAgICAgICAgIGN1cnJlbnRsYXllci5tb3ZlVG8oeDEseTEpOworICAgICAgICAgICAgY3VycmVudGxheWVyLmxpbmVUbyh4MSx5Mik7CisgICAgICAgICAgICBjdXJyZW50bGF5ZXIubGluZVRvKHgyLHkyKTsKKyAgICAgICAgICAgIGN1cnJlbnRsYXllci5saW5lVG8oeDIseTEpOworICAgICAgICAgICAgY3VycmVudGxheWVyLmxpbmVUbyAoeDEseTEpOworICAgICAgICAgICAgdGhpcy5jbG9zZVBhdGgoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudFNlbGVjdGFuZ2xlc3Ryb2tlRGlzIT0tMSl7CisgICAgICAgICAgICAgICAgY3VycmVudGxheWVyLnN0cm9rZVN0eWxlID0gdGhpcy5jdXJyZW50U2VsZWN0YW5nbGVzdHJva2U7CisgICAgICAgICAgICAgICAgY3VycmVudGxheWVyLnN0cm9rZSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50U2VsZWN0YW5nbGVzdHJva2VGaWxsRGlzIT0tMSl7CisgICAgICAgICAgICAgICAgY3VycmVudGxheWVyLmZpbGxTdHlsZSA9IHRoaXMuY3VycmVudFNlbGVjdGFuZ2xlc3Ryb2tlRmlsbDsKKyAgICAgICAgICAgICAgICBjdXJyZW50bGF5ZXIuZmlsbCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIF1dPiAgIAorICAgIDwvbWV0aG9kPiAgIAorICAgIC0tPgorICAgIDxtZXRob2QgbmFtZT0icmVkcmF3U2VsZWN0SXRlbUJ5U2NhbGluZyIgYXJncz0ib2JqUmVmIj4KKyAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgicmVkcmF3U2VsZWN0SXRlbUJ5U2NhbGluZzogIitvYmpSZWYpOworICAgICAgICB0aGlzLmN1cnJlbnRsYXllciA9IG9ialJlZjsKKyAgICAgICAgdGhpcy5jdXJyZW50bGF5ZXIuX2lubmVyU2VsZWN0LmRlc3Ryb3koKTsKKyAgICAgICAgbmV3IGx6LmRyYXdWaWV3SW5uZXIodGhpcy5jdXJyZW50bGF5ZXIseworICAgICAgICAgICAgbmFtZTonX2lubmVyU2VsZWN0Jyx4OjAseTowLHdpZHRoOm9ialJlZi53aWR0aCxoZWlnaHQ6b2JqUmVmLmhlaWdodH0pOworICAgICAgICB0aGlzLmRyYXdTZWxlY3RhbmdsZUhpc3RvcnkodGhpcy5jdXJyZW50bGF5ZXIsMCwwLAorICAgICAgICAgICAgb2JqUmVmLndpZHRoLG9ialJlZi5oZWlnaHQsCisgICAgICAgICAgICB0aGlzLmN1cnJlbnRTZWxlY3RhbmdsZXN0cm9rZSx0aGlzLmN1cnJlbnRTZWxlY3RhbmdsZWluZVdpZHRoLAorICAgICAgICAgICAgdGhpcy5jdXJyZW50U2VsZWN0YW5nbGVzdHJva2VGaWxsLHRoaXMuY3VycmVudFNlbGVjdGFuZ2xlc3Ryb2tlRGlzLAorICAgICAgICAgICAgdGhpcy5jdXJyZW50U2VsZWN0YW5nbGVzdHJva2VGaWxsRGlzKTsKKyAgICA8L21ldGhvZD4gCisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJkcmF3U2VsZWN0YW5nbGVUb0hpc3RvcnkiIGFyZ3M9Imxhc3RBY3Rpb25PYmplY3QscGFyZW50VmlldyI+CisgICAgICAgIHZhciB0bXBDdXJyZW50bGF5ZXIgPSBuZXcgbHouZHJhd1ZpZXdOZXcocGFyZW50Vmlldyx7CisgICAgICAgICAgICBuYW1lOmxhc3RBY3Rpb25PYmplY3RbbGFzdEFjdGlvbk9iamVjdC5sZW5ndGgtMV0sCisgICAgICAgICAgICB4Omxhc3RBY3Rpb25PYmplY3RbbGFzdEFjdGlvbk9iamVjdC5sZW5ndGgtNV0sCisgICAgICAgICAgICB5Omxhc3RBY3Rpb25PYmplY3RbbGFzdEFjdGlvbk9iamVjdC5sZW5ndGgtNF0sCisgICAgICAgICAgICB3aWR0aDpsYXN0QWN0aW9uT2JqZWN0W2xhc3RBY3Rpb25PYmplY3QubGVuZ3RoLTNdLAorICAgICAgICAgICAgaGVpZ2h0Omxhc3RBY3Rpb25PYmplY3RbbGFzdEFjdGlvbk9iamVjdC5sZW5ndGgtMl0sCisgICAgICAgICAgICBvcGFjaXR5Omxhc3RBY3Rpb25PYmplY3RbNl19KTsKKyAgICAgICAgbmV3IGx6LmRyYXdWaWV3SW5uZXIodG1wQ3VycmVudGxheWVyLHsKKyAgICAgICAgICAgICAgICBuYW1lOidfaW5uZXJTZWxlY3QnLHg6MCx5OjAsCisgICAgICAgICAgICAgICAgd2lkdGg6bGFzdEFjdGlvbk9iamVjdFtsYXN0QWN0aW9uT2JqZWN0Lmxlbmd0aC0zXSwKKyAgICAgICAgICAgICAgICBoZWlnaHQ6bGFzdEFjdGlvbk9iamVjdFtsYXN0QWN0aW9uT2JqZWN0Lmxlbmd0aC0yXX0pOworICAgICAgICB0aGlzLmRyYXdTZWxlY3RhbmdsZUhpc3RvcnkodG1wQ3VycmVudGxheWVyLDAsMCwKKyAgICAgICAgICAgIGxhc3RBY3Rpb25PYmplY3RbbGFzdEFjdGlvbk9iamVjdC5sZW5ndGgtM10sbGFzdEFjdGlvbk9iamVjdFtsYXN0QWN0aW9uT2JqZWN0Lmxlbmd0aC0yXSwKKyAgICAgICAgICAgIGxhc3RBY3Rpb25PYmplY3RbMV0sbGFzdEFjdGlvbk9iamVjdFsyXSxsYXN0QWN0aW9uT2JqZWN0WzNdLGxhc3RBY3Rpb25PYmplY3RbNF0sbGFzdEFjdGlvbk9iamVjdFs1XSk7CisgICAgICAgICAgICAKKyAgICAgICAgdGhpcy5kb1NXRkRvY3VtZW50U3RhdHVzKHRtcEN1cnJlbnRsYXllcixsYXN0QWN0aW9uT2JqZWN0W2xhc3RBY3Rpb25PYmplY3QubGVuZ3RoLTddKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImRyYXdTZWxlY3RhbmdsZUhpc3RvcnkiIGFyZ3M9InBhcmVudE9iaix4MSx5MSx4Mix5MixzdHJva2UsbGluZSxmaWxsLHN0cm9rZURpcyxmaWxsRGlzIj4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAvL0RlYnVnLndyaXRlKCJkcmF3U2VsZWN0YW5nbGVIaXN0b3J5IixwYXJlbnRPYmoseDEseTEseDIseTIsc3Ryb2tlLGxpbmUsZmlsbCxzdHJva2VEaXMsZmlsbERpcyk7CisgICAgICAgICAgICBwYXJlbnRPYmouX2lubmVyU2VsZWN0LmxpbmVXaWR0aCA9IGxpbmU7CisgICAgICAgICAgICBwYXJlbnRPYmouX2lubmVyU2VsZWN0LmJlZ2luUGF0aCgpOworICAgICAgICAgICAgcGFyZW50T2JqLl9pbm5lclNlbGVjdC5tb3ZlVG8oeDEseTEpOworICAgICAgICAgICAgcGFyZW50T2JqLl9pbm5lclNlbGVjdC5saW5lVG8oeDEseTIpOworICAgICAgICAgICAgcGFyZW50T2JqLl9pbm5lclNlbGVjdC5saW5lVG8oeDIseTIpOworICAgICAgICAgICAgcGFyZW50T2JqLl9pbm5lclNlbGVjdC5saW5lVG8oeDIseTEpOworICAgICAgICAgICAgcGFyZW50T2JqLl9pbm5lclNlbGVjdC5saW5lVG8gKHgxLHkxKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHN0cm9rZURpcyE9LTEpeworICAgICAgICAgICAgICAgIHBhcmVudE9iai5faW5uZXJTZWxlY3Quc3Ryb2tlU3R5bGUgPSBzdHJva2U7CisgICAgICAgICAgICAgICAgcGFyZW50T2JqLl9pbm5lclNlbGVjdC5zdHJva2UoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGZpbGxEaXMhPS0xKXsKKyAgICAgICAgICAgICAgICBwYXJlbnRPYmouX2lubmVyU2VsZWN0LmZpbGxTdHlsZSA9IGZpbGw7CisgICAgICAgICAgICAgICAgcGFyZW50T2JqLl9pbm5lclNlbGVjdC5maWxsKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgXV0+ICAgCisgICAgPC9tZXRob2Q+ICAKKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImRyYXdTZWxlY3RyZWdpc3RlckZpbmFsIiBhcmdzPSJuZXdOYW1lLHN0cm9rZSxsaW5lLGZpbGwsc3Ryb2tlRGlzLGZpbGxEaXMseCx5LHdpZHRoLGhlaWdodCxzd2ZPYmosekluZGV4IiA+CisgICAgICAgIERlYnVnLndyaXRlKCJkcmF3U2VsZWN0cmVnaXN0ZXJGaW5hbCIsbmV3TmFtZSxzdHJva2UsbGluZSxmaWxsLHN0cm9rZURpcyxmaWxsRGlzLHgseSx3aWR0aCxoZWlnaHQpOworICAgICAgICB2YXIgYWN0aW9uT2JqZWN0ID0gbmV3IEFycmF5KCk7CisgICAgICAgIGFjdGlvbk9iamVjdFswXSA9ICdTZWxlY3RhbmdsZSc7CisgICAgICAgIGFjdGlvbk9iamVjdFsxXSA9IHN0cm9rZTsKKyAgICAgICAgYWN0aW9uT2JqZWN0WzJdID0gbGluZTsKKyAgICAgICAgYWN0aW9uT2JqZWN0WzNdID0gZmlsbDsKKyAgICAgICAgYWN0aW9uT2JqZWN0WzRdID0gc3Ryb2tlRGlzOworICAgICAgICBhY3Rpb25PYmplY3RbNV0gPSBmaWxsRGlzOworICAgICAgICBhY3Rpb25PYmplY3RbNl0gPSB0aGlzLmN1cnJlbnRTZWxlY3RhbmdsZU9wYWNpdHk7CisgICAgICAgIGFjdGlvbk9iamVjdFs3XSA9IHpJbmRleDsvLy04CisgICAgICAgIGFjdGlvbk9iamVjdFs4XSA9IHN3Zk9iajsvLy03CisgICAgICAgIGFjdGlvbk9iamVjdFs5XSA9IHRoaXMuY291bnRlcjsvLy02CisgICAgICAgIGFjdGlvbk9iamVjdFsxMF0gPSB4Oy8vLTUKKyAgICAgICAgYWN0aW9uT2JqZWN0WzExXSA9IHk7Ly8tNAorICAgICAgICBhY3Rpb25PYmplY3RbMTJdID0gd2lkdGg7Ly8tMworICAgICAgICBhY3Rpb25PYmplY3RbMTNdID0gaGVpZ2h0Oy8vLTIgIAorICAgICAgICBhY3Rpb25PYmplY3RbMTRdID0gbmV3TmFtZTsvLy0xCisgICAgICAgIHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3QucHVzaChhY3Rpb25PYmplY3QpOworICAgICAgICB0aGlzLm9uc2hhcmVkTWVzc2FnZSgnZHJhdycsYWN0aW9uT2JqZWN0KTsKKyAgICA8L21ldGhvZD4KKyAgICAKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL2Jhc2UvdG9vbHMvYmFzZURyYXdUcmlhbmdsZS5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9iYXNlL3Rvb2xzL2Jhc2VEcmF3VHJpYW5nbGUubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2YmFhYjAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9iYXNlL3Rvb2xzL2Jhc2VEcmF3VHJpYW5nbGUubHp4CkBAIC0wLDAgKzEsMjc3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8Y2xhc3MgbmFtZT0iYmFzZURyYXdUcmlhbmdsZSIgZXh0ZW5kcz0iYmFzZURyYXdDbGlwQXJ0IiA+CisgICAgCisgICAgPCEtLSAgCisgICAgICAgIGZvciBkcmF3aW5nIHJlY3RhbmdsZXMgdGhlIHZhcmlhYmxlIAorICAgICAgICB3aXRoICpEaXMqIGluZGljYXRlcyBpZiB0aGUgbGluZS9maWwtY29sb3IgaXMgYWN0aXZlICgrMS8tMSkKKyAgICAgLS0+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50dHJpYW5nbGVzdHJva2UiIHZhbHVlPSIweEZGNjYwMCIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnR0cmlhbmdsZXN0cm9rZURpcyIgdmFsdWU9IjEiIHR5cGU9Im51bWJlciIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnR0cmlhbmdsZXN0cm9rZUZpbGwiIHZhbHVlPSIweEZGRkYzMyIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnR0cmlhbmdsZXN0cm9rZUZpbGxEaXMiIHZhbHVlPSIxIiB0eXBlPSJudW1iZXIiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50dHJpYW5nbGVpbmVXaWR0aCIgdmFsdWU9IjQiIHR5cGU9Im51bWJlciIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnR0cmlhbmdsZU9wYWNpdHkiIHZhbHVlPSIxIiB0eXBlPSJudW1iZXIiIC8+CisgICAgIAorICAgICAgCisgICAgPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAgICAgICAgdHJpYW5nbGUKKyAgICAgLS0+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJzdGFydFRyaWFuZ2xlIiBhcmdzPSJvaWRfbmFtZSI+CisgICAgICAgIGlmIChvaWRfbmFtZSA9PSBudWxsKXsKKyAgICAgICAgICAgIG9pZF9uYW1lID0gJ3RyaWFuZ2xlJyt0aGlzLmdldENvdW50ZXIoKTsKKyAgICAgICAgfQorICAgICAgICAvL0RlYnVnLndyaXRlKCJzdGFydFRyaWFuZ2xlIik7CisgICAgICAgIHRoaXMuY3VycmVudGxheWVyID0gbmV3IGx6LmRyYXdWaWV3TmV3KHRoaXMseworICAgICAgICAgICAgbmFtZTpvaWRfbmFtZSx3aWR0aDp0aGlzLndpZHRoLGhlaWdodDp0aGlzLmhlaWdodCwKKyAgICAgICAgICAgIG9wYWNpdHk6dGhpcy5jdXJyZW50dHJpYW5nbGVPcGFjaXR5fSk7CisgICAgICAgIHRoaXMuY3VycmVudGxheWVyCisgICAgICAgIHRoaXMuZHJhd2xpbmVPbk9iamVjdCh0aGlzLmN1cnJlbnRsYXllciwtMSwtMSwwLDApOworICAgICAgICB0aGlzLmRyYXdsaW5lT25PYmplY3QodGhpcy5jdXJyZW50bGF5ZXIsdGhpcy53aWR0aCx0aGlzLmhlaWdodCx0aGlzLndpZHRoKzEsdGhpcy5oZWlnaHQrMSk7CisgICAgPC9tZXRob2Q+ICAKKworICAgIDxtZXRob2QgbmFtZT0iZW5kVHJpYW5nbGUiPgorICAgICAgICA8IVtDREFUQVsgICAgICAgIAkKKyAgICAgICAgCisgICAgICAgICAgICAvLy8vRGVidWcud3JpdGUoIiB0aGlzLnN0YXJ0eCwgdGhpcy5zdGFydHkgLCB0aGlzLmVuZHgsIHRoaXMuZW5keSAiLHRoaXMuc3RhcnR4LCB0aGlzLnN0YXJ0eSAsIHRoaXMuZW5keCwgdGhpcy5lbmR5KTsKKyAgICAgICAgICAgIHZhciB0bXBOYW1lID0gdGhpcy5jdXJyZW50bGF5ZXIubmFtZTsKKyAgICAgICAgICAgIHRoaXMuY3VycmVudGxheWVyLmRlc3Ryb3koKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIHRUcmlhbmdsZSA9IHRoaXMuZ2V0VHJpYW5nbGVQb2ludEJ5UmVjdCh0aGlzLnN0YXJ0eCx0aGlzLnN0YXJ0eSx0aGlzLmVuZHgsdGhpcy5lbmR5KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIG1heF94ID0gTWF0aC5tYXgodGhpcy5zdGFydHgsdGhpcy5lbmR4LHRUcmlhbmdsZS54KTsKKyAgICAgICAgICAgIHZhciBtaW5feCA9IE1hdGgubWluKHRoaXMuc3RhcnR4LHRoaXMuZW5keCx0VHJpYW5nbGUueCk7CisgICAgICAgICAgICB2YXIgbWF4X3kgPSBNYXRoLm1heCh0aGlzLnN0YXJ0eSx0aGlzLmVuZHksdFRyaWFuZ2xlLnkpOworICAgICAgICAgICAgdmFyIG1pbl95ID0gTWF0aC5taW4odGhpcy5zdGFydHksdGhpcy5lbmR5LHRUcmlhbmdsZS55KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgeCA9IG1pbl94OworICAgICAgICAgICAgdmFyIHdpZHRoID0gbWF4X3ggLSBtaW5feDsKKyAgICAgICAgICAgIHZhciB5ID0gbWluX3k7CisgICAgICAgICAgICB2YXIgaGVpZ2h0ID0gbWF4X3kgLSBtaW5feTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIHR4MSA9IHRoaXMuc3RhcnR4LXg7CisgICAgICAgICAgICB2YXIgdHkxID0gdGhpcy5zdGFydHkteTsKKyAgICAgICAgICAgIHZhciB0eDIgPSB0aGlzLmVuZHgteDsKKyAgICAgICAgICAgIHZhciB0eTIgPSB0aGlzLmVuZHkteTsKKyAgICAgICAgICAgIHZhciB0eDMgPSB0VHJpYW5nbGUueC14OworICAgICAgICAgICAgdmFyIHR5MyA9IHRUcmlhbmdsZS55LXk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmKHRoaXMuaXNTbmFwVG9HcmlkKXsgICAgICAgIAkJCisJICAgIAkJCSAgICAgICAgCSAgIAorCSAgICAgICAgICAgIHggPSBNYXRoLnJvdW5kKHgvdGhpcy5ncmlkV2lkdGgpKnRoaXMuZ3JpZFdpZHRoOworCQkgICAgCXkgPSBNYXRoLnJvdW5kKHkvdGhpcy5ncmlkV2lkdGgpKnRoaXMuZ3JpZFdpZHRoOworICAgICAgICAgICAgCisgICAgICAgICAgICB9IAorICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLmN1cnJlbnRsYXllciA9IG5ldyBsei5kcmF3Vmlld05ldyh0aGlzLHsKKyAgICAgICAgICAgICAgICBuYW1lOnRtcE5hbWUseDp4LHk6eSx3aWR0aDp3aWR0aCxoZWlnaHQ6aGVpZ2h0LAorICAgICAgICAgICAgICAgIG9wYWNpdHk6dGhpcy5jdXJyZW50dHJpYW5nbGVPcGFjaXR5fSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBuZXcgbHouZHJhd1ZpZXdJbm5lcih0aGlzLmN1cnJlbnRsYXllcix7CisgICAgICAgICAgICAgICAgbmFtZTonX2lubmVyVHJpYW5nbGUnLHg6MCx5OjAsd2lkdGg6d2lkdGgsaGVpZ2h0OmhlaWdodH0pOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5kcmF3dHJpYW5nbGVIaXN0b3J5KHRoaXMuY3VycmVudGxheWVyLDAsMCx3aWR0aCxoZWlnaHQsCisgICAgICAgICAgICAJdHgxLHR5MSx0eDIsdHkyLHR4Myx0eTMsCisgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50dHJpYW5nbGVzdHJva2UsdGhpcy5jdXJyZW50dHJpYW5nbGVpbmVXaWR0aCwKKyAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnR0cmlhbmdsZXN0cm9rZUZpbGwsdGhpcy5jdXJyZW50dHJpYW5nbGVzdHJva2VEaXMsCisgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50dHJpYW5nbGVzdHJva2VGaWxsRGlzKTsKKyAgICAgICAgICAgIC8vdGhpcy5jdXJyZW50bGF5ZXIuc2V0QXR0cmlidXRlKCdzdHJldGNoZXMnLCdib3RoJyk7CisgICAgICAgICAgICB0aGlzLmRyYXdUcmlhbmdsZXJlZ2lzdGVyRmluYWwodGhpcy5jdXJyZW50bGF5ZXIubmFtZSx0aGlzLmN1cnJlbnR0cmlhbmdsZXN0cm9rZSwKKyAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnR0cmlhbmdsZWluZVdpZHRoLHRoaXMuY3VycmVudHRyaWFuZ2xlc3Ryb2tlRmlsbCwKKyAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnR0cmlhbmdsZXN0cm9rZURpcyx0aGlzLmN1cnJlbnR0cmlhbmdsZXN0cm9rZUZpbGxEaXMsCisgICAgICAgICAgICAgICAgeCx5LHdpZHRoLGhlaWdodCwKKyAgICAgICAgICAgICAgICB0eDEsdHkxLHR4Mix0eTIsdHgzLHR5MywKKyAgICAgICAgICAgICAgICB0aGlzLmdldFNXRkRvY3VtZW50U3RhdHVzKCksCisgICAgICAgICAgICAgICAgdGhpcy5nZXRaSW5kZXgoKSk7CisgICAgICAgICAgICB0aGlzLmxheWVycy5wdXNoKHRoaXMuY3VycmVudGxheWVyKTsKKyAgICAgICAgICAgIHRoaXMuY2hlY2tTdGVwTGF5ZXJzKCk7CisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiIyMjIyMjIyMjIyMjIyMgdGhpcy5lbmR4IDogIiwgdGhpcy5lbmR4KTsKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+IAorICAgIAorICAgIDxtZXRob2QgbmFtZT0iZ2V0VHJpYW5nbGVQb2ludEJ5UmVjdCIgYXJncz0ieDEseTEseDIseTIiPgorICAgIAk8IVtDREFUQVsKKyAgICAJCWlmICh4MiA+PSB4MSAmJiB5MSA+PSB5MikgeworCisgICAgICAgICAgICAgICB2YXIgYSA9IHkxIC0geTI7CisgICAgICAgICAgICAgICB2YXIgYiA9IHgyIC0geDE7CisgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgIHJldHVybiB7J3gnOngyICsgYSwneSc6eTIgKyBifTsKKworICAgICAgICAgICB9IGVsc2UgaWYgKHgyID49IHgxICYmIHkxIDw9IHkyKSB7CisKKyAgICAgICAgICAgICAgIHZhciBhID0geTIgLSB5MTsKKyAgICAgICAgICAgICAgIHZhciBiID0geDIgLSB4MTsKKworICAgICAgICAgICAgICAgcmV0dXJuIHsneCc6eDIgLSBhLCd5Jzp5MiArIGJ9OworCisgICAgICAgICAgIH0gZWxzZSBpZiAoeDIgPD0geDEgJiYgeTEgPD0geTIpIHsKKworICAgICAgICAgICAgICAgdmFyIGEgPSB5MiAtIHkxOworICAgICAgICAgICAgICAgdmFyIGIgPSB4MSAtIHgyOworCisgICAgICAgICAgICAgICByZXR1cm4geyd4Jzp4MiAtIGEsJ3knOnkyIC0gYn07CisgICAgICAgICAgICAgICAKKyAgICAgICAgICAgfSBlbHNlIGlmICh4MiA8PSB4MSAmJiB5MSA+PSB5MikgeworCisgICAgICAgICAgICAgICB2YXIgYSA9IHkxIC0geTI7CisgICAgICAgICAgICAgICB2YXIgYiA9IHgxIC0geDI7CisKKyAgICAgICAgICAgICAgIHJldHVybiB7J3gnOngyICsgYSwneSc6eTIgLSBifTsKKyAgICAgICAgICAgICAgIAorICAgICAgICAgICB9IGVsc2UgeworCisgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53YXJuKCJERUZBVUxUIGRyYXd0cmlhbmdsZSAiLHgxLHkxLHgyLHkyKTsKKworICAgICAgICAgICB9CisgICAgICAgICAgIAorICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDwhLS0KKyAgICAgICAgVGVybWluYXRlIHRoZSB1c2FnZSBvZiB0aGlzIGZ1bmN0aW9uCisgICAgIC0tPiAKKyAgICA8bWV0aG9kIG5hbWU9ImRyYXd0cmlhbmdsZSIgYXJncz0ieDEseTEseDIseTIiPgorICAgICAgIDwhW0NEQVRBWworCisgICAgICAgICAgIHZhciB0VHJpYW5nbGUgPSB0aGlzLmdldFRyaWFuZ2xlUG9pbnRCeVJlY3QoeDEseTEseDIseTIpOworCisJCSAgIHRoaXMuZHJhd3RyaWFuZ2xlQnlDb3JkKHgxLHkxLHgyLHkyLHRUcmlhbmdsZS54LHRUcmlhbmdsZS55KQorICAgICAgIF1dPiAgIAorICAgPC9tZXRob2Q+IAorICAgCisgICAgPG1ldGhvZCBuYW1lPSJkcmF3dHJpYW5nbGVCeUNvcmQiIGFyZ3M9InR4MSx0eTEsdHgyLHR5Mix0eDMsdHkzIj4KKyAgICAgICA8IVtDREFUQVsKKworCQkgICBjdXJyZW50bGF5ZXIubGluZVdpZHRoID0gdGhpcy5jdXJyZW50dHJpYW5nbGVpbmVXaWR0aDsKKyAgICAgICAgICAgY3VycmVudGxheWVyLmJlZ2luUGF0aCgpOworICAgICAgICAgICBjdXJyZW50bGF5ZXIubW92ZVRvKHR4MSwgdHkxKTsKKyAgICAgICAgICAgY3VycmVudGxheWVyLmxpbmVUbyh0eDIsIHR5Mik7CisgICAgICAgICAgIGN1cnJlbnRsYXllci5saW5lVG8odHgzLCB0eTMpOworICAgICAgICAgICBjdXJyZW50bGF5ZXIubGluZVRvKHR4MSwgdHkxKTsKKyAgICAgICAgICAgY3VycmVudGxheWVyLmNsb3NlUGF0aCgpOworCisgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnR0cmlhbmdsZXN0cm9rZURpcyAhPSAtMSkgeworICAgICAgICAgICAgICAgY3VycmVudGxheWVyLnN0cm9rZVN0eWxlID0gdGhpcy5jdXJyZW50dHJpYW5nbGVzdHJva2U7CisgICAgICAgICAgICAgICBjdXJyZW50bGF5ZXIuc3Ryb2tlKCk7CisgICAgICAgICAgIH0KKworICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50dHJpYW5nbGVzdHJva2VGaWxsRGlzICE9IC0xKSB7CisgICAgICAgICAgICAgICBjdXJyZW50bGF5ZXIuZmlsbFN0eWxlID0gdGhpcy5jdXJyZW50dHJpYW5nbGVzdHJva2VGaWxsOworICAgICAgICAgICAgICAgY3VycmVudGxheWVyLmZpbGwoKTsKKyAgICAgICAgICAgfQorICAgICAgIF1dPiAgIAorICAgPC9tZXRob2Q+IAorICAgIAorICAgIDxtZXRob2QgbmFtZT0icmVkcmF3VHJpYW5nbGVJdGVtQnlTY2FsaW5nIiBhcmdzPSJvYmpSZWYiPgorICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJyZWRyYXdUcmlhbmdsZUl0ZW1CeVNjYWxpbmc6ICIrb2JqUmVmKTsKKyAgICAgICAgdGhpcy5jdXJyZW50bGF5ZXIgPSBvYmpSZWY7CisgICAgICAgIHRoaXMuY3VycmVudGxheWVyLl9pbm5lclRyaWFuZ2xlLmRlc3Ryb3koKTsKKyAgICAgICAgbmV3IGx6LmRyYXdWaWV3SW5uZXIodGhpcy5jdXJyZW50bGF5ZXIseworICAgICAgICAgICAgbmFtZTonX2lubmVyVHJpYW5nbGUnLHg6MCx5OjAsd2lkdGg6b2JqUmVmLndpZHRoLGhlaWdodDpvYmpSZWYuaGVpZ2h0fSk7CisgICAgICAgIHRoaXMuZHJhd3RyaWFuZ2xlSGlzdG9yeSh0aGlzLmN1cnJlbnRsYXllciwwLDAsCisgICAgICAgICAgICBvYmpSZWYud2lkdGgsb2JqUmVmLmhlaWdodCwKKyAgICAgICAgICAgIHRoaXMuY3VycmVudHRyaWFuZ2xlc3Ryb2tlLHRoaXMuY3VycmVudHRyaWFuZ2xlaW5lV2lkdGgsCisgICAgICAgICAgICB0aGlzLmN1cnJlbnR0cmlhbmdsZXN0cm9rZUZpbGwsdGhpcy5jdXJyZW50dHJpYW5nbGVzdHJva2VEaXMsCisgICAgICAgICAgICB0aGlzLmN1cnJlbnR0cmlhbmdsZXN0cm9rZUZpbGxEaXMpOworICAgIDwvbWV0aG9kPiAKKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImRyYXd0cmlhbmdsZVRvSGlzdG9yeSIgYXJncz0ibGFzdEFjdGlvbk9iamVjdCxwYXJlbnRWaWV3Ij4KKyAgICAgICAgdmFyIHRtcEN1cnJlbnRsYXllciA9IG5ldyBsei5kcmF3Vmlld05ldyhwYXJlbnRWaWV3LHsKKyAgICAgICAgICAgIG5hbWU6bGFzdEFjdGlvbk9iamVjdFtsYXN0QWN0aW9uT2JqZWN0Lmxlbmd0aC0xXSwKKyAgICAgICAgICAgIHg6bGFzdEFjdGlvbk9iamVjdFtsYXN0QWN0aW9uT2JqZWN0Lmxlbmd0aC01XSwKKyAgICAgICAgICAgIHk6bGFzdEFjdGlvbk9iamVjdFtsYXN0QWN0aW9uT2JqZWN0Lmxlbmd0aC00XSwKKyAgICAgICAgICAgIHdpZHRoOmxhc3RBY3Rpb25PYmplY3RbbGFzdEFjdGlvbk9iamVjdC5sZW5ndGgtM10sCisgICAgICAgICAgICBoZWlnaHQ6bGFzdEFjdGlvbk9iamVjdFtsYXN0QWN0aW9uT2JqZWN0Lmxlbmd0aC0yXSwKKyAgICAgICAgICAgIG9wYWNpdHk6bGFzdEFjdGlvbk9iamVjdFs2XX0pOworICAgICAgICBuZXcgbHouZHJhd1ZpZXdJbm5lcih0bXBDdXJyZW50bGF5ZXIseworICAgICAgICAgICAgICAgIG5hbWU6J19pbm5lclRyaWFuZ2xlJyx4OjAseTowLAorICAgICAgICAgICAgICAgIHdpZHRoOmxhc3RBY3Rpb25PYmplY3RbbGFzdEFjdGlvbk9iamVjdC5sZW5ndGgtM10sCisgICAgICAgICAgICAgICAgaGVpZ2h0Omxhc3RBY3Rpb25PYmplY3RbbGFzdEFjdGlvbk9iamVjdC5sZW5ndGgtMl19KTsKKyAgICAgICAgdGhpcy5kcmF3dHJpYW5nbGVIaXN0b3J5KHRtcEN1cnJlbnRsYXllciwwLDAsCisgICAgICAgICAgICBsYXN0QWN0aW9uT2JqZWN0W2xhc3RBY3Rpb25PYmplY3QubGVuZ3RoLTNdLGxhc3RBY3Rpb25PYmplY3RbbGFzdEFjdGlvbk9iamVjdC5sZW5ndGgtMl0sCisgICAgICAgICAgICBsYXN0QWN0aW9uT2JqZWN0WzddLGxhc3RBY3Rpb25PYmplY3RbOF0sIC8vdHgxLHR5MQorICAgICAgICAgICAgbGFzdEFjdGlvbk9iamVjdFs5XSxsYXN0QWN0aW9uT2JqZWN0WzEwXSwgLy90eDIsdHkyCisgICAgICAgICAgICBsYXN0QWN0aW9uT2JqZWN0WzExXSxsYXN0QWN0aW9uT2JqZWN0WzEyXSwgLy90eDMsdHkzCisgICAgICAgICAgICBsYXN0QWN0aW9uT2JqZWN0WzFdLGxhc3RBY3Rpb25PYmplY3RbMl0sbGFzdEFjdGlvbk9iamVjdFszXSxsYXN0QWN0aW9uT2JqZWN0WzRdLGxhc3RBY3Rpb25PYmplY3RbNV0pOworICAgICAgICAgICAgCisgICAgICAgIHRoaXMuZG9TV0ZEb2N1bWVudFN0YXR1cyh0bXBDdXJyZW50bGF5ZXIsbGFzdEFjdGlvbk9iamVjdFtsYXN0QWN0aW9uT2JqZWN0Lmxlbmd0aC03XSk7CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJkcmF3dHJpYW5nbGVIaXN0b3J5IiBhcmdzPSJwYXJlbnRPYmoseDEseTEseDIseTIsdHgxLHR5MSx0eDIsdHkyLHR4Myx0eTMsc3Ryb2tlLGxpbmUsZmlsbCxzdHJva2VEaXMsZmlsbERpcyI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgLy9EZWJ1Zy53cml0ZSgiZHJhd3RyaWFuZ2xlSGlzdG9yeSIscGFyZW50T2JqLHgxLHkxLHgyLHkyLHN0cm9rZSxsaW5lLGZpbGwsc3Ryb2tlRGlzLGZpbGxEaXMpOworICAgICAgICAgICAgcGFyZW50T2JqLl9pbm5lclRyaWFuZ2xlLmxpbmVXaWR0aCA9IGxpbmU7CisgICAgICAgICAgICBwYXJlbnRPYmouX2lubmVyVHJpYW5nbGUuYmVnaW5QYXRoKCk7CisgICAgICAgICAgICBwYXJlbnRPYmouX2lubmVyVHJpYW5nbGUubW92ZVRvKHR4MSx0eTEpOworICAgICAgICAgICAgcGFyZW50T2JqLl9pbm5lclRyaWFuZ2xlLmxpbmVUbyh0eDIsdHkyKTsKKyAgICAgICAgICAgIHBhcmVudE9iai5faW5uZXJUcmlhbmdsZS5saW5lVG8odHgzLHR5Myk7CisgICAgICAgICAgICBwYXJlbnRPYmouX2lubmVyVHJpYW5nbGUubGluZVRvICh0eDEsdHkxKTsKKyAgICAgICAgICAgIHBhcmVudE9iai5faW5uZXJUcmlhbmdsZS5jbG9zZVBhdGgoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHN0cm9rZURpcyE9LTEpeworICAgICAgICAgICAgICAgIHBhcmVudE9iai5faW5uZXJUcmlhbmdsZS5zdHJva2VTdHlsZSA9IHN0cm9rZTsKKyAgICAgICAgICAgICAgICBwYXJlbnRPYmouX2lubmVyVHJpYW5nbGUuc3Ryb2tlKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChmaWxsRGlzIT0tMSl7CisgICAgICAgICAgICAgICAgcGFyZW50T2JqLl9pbm5lclRyaWFuZ2xlLmZpbGxTdHlsZSA9IGZpbGw7CisgICAgICAgICAgICAgICAgcGFyZW50T2JqLl9pbm5lclRyaWFuZ2xlLmZpbGwoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBdXT4gICAKKyAgICA8L21ldGhvZD4gIAorICAgIAorICAgIDxtZXRob2QgbmFtZT0iZHJhd1RyaWFuZ2xlcmVnaXN0ZXJGaW5hbCIgYXJncz0ibmV3TmFtZSxzdHJva2UsbGluZSxmaWxsLHN0cm9rZURpcyxmaWxsRGlzLHgseSx3aWR0aCxoZWlnaHQsdHgxLHR5MSx0eDIsdHkyLHR4Myx0eTMsc3dmT2JqLHpJbmRleCIgPgorICAgICAgICBEZWJ1Zy53cml0ZSgiZHJhd1RyaWFuZ2xlcmVnaXN0ZXJGaW5hbCIsbmV3TmFtZSxzdHJva2UsbGluZSxmaWxsLHN0cm9rZURpcyxmaWxsRGlzLHgseSx3aWR0aCxoZWlnaHQpOworICAgICAgICB2YXIgYWN0aW9uT2JqZWN0ID0gbmV3IEFycmF5KCk7CisgICAgICAgIGFjdGlvbk9iamVjdFswXSA9ICd0cmlhbmdsZSc7CisgICAgICAgIGFjdGlvbk9iamVjdFsxXSA9IHN0cm9rZTsKKyAgICAgICAgYWN0aW9uT2JqZWN0WzJdID0gbGluZTsKKyAgICAgICAgYWN0aW9uT2JqZWN0WzNdID0gZmlsbDsKKyAgICAgICAgYWN0aW9uT2JqZWN0WzRdID0gc3Ryb2tlRGlzOworICAgICAgICBhY3Rpb25PYmplY3RbNV0gPSBmaWxsRGlzOworICAgICAgICBhY3Rpb25PYmplY3RbNl0gPSB0aGlzLmN1cnJlbnR0cmlhbmdsZU9wYWNpdHk7CisgICAgICAgIGFjdGlvbk9iamVjdFs3XSA9IHR4MTsKKyAgICAgICAgYWN0aW9uT2JqZWN0WzhdID0gdHkxOworICAgICAgICBhY3Rpb25PYmplY3RbOV0gPSB0eDI7CisgICAgICAgIGFjdGlvbk9iamVjdFsxMF0gPSB0eTI7CisgICAgICAgIGFjdGlvbk9iamVjdFsxMV0gPSB0eDM7CisgICAgICAgIGFjdGlvbk9iamVjdFsxMl0gPSB0eTM7CisgICAgICAgIGFjdGlvbk9iamVjdFsxM10gPSB6SW5kZXg7Ly8tOAorICAgICAgICBhY3Rpb25PYmplY3RbMTRdID0gc3dmT2JqOy8vLTcKKyAgICAgICAgYWN0aW9uT2JqZWN0WzE1XSA9IHRoaXMuY291bnRlcjsvLy02CisgICAgICAgIGFjdGlvbk9iamVjdFsxNl0gPSB4Oy8vLTUKKyAgICAgICAgYWN0aW9uT2JqZWN0WzE3XSA9IHk7Ly8tNAorICAgICAgICBhY3Rpb25PYmplY3RbMThdID0gd2lkdGg7Ly8tMworICAgICAgICBhY3Rpb25PYmplY3RbMTldID0gaGVpZ2h0Oy8vLTIgIAorICAgICAgICBhY3Rpb25PYmplY3RbMjBdID0gbmV3TmFtZTsvLy0xCisgICAgICAgIHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3QucHVzaChhY3Rpb25PYmplY3QpOworICAgICAgICB0aGlzLm9uc2hhcmVkTWVzc2FnZSgnZHJhdycsYWN0aW9uT2JqZWN0KTsKKyAgICA8L21ldGhvZD4KKyAgICAKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL2Jhc2UvdG9vbHMvYmFzZURyYXdVTGluZS5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9iYXNlL3Rvb2xzL2Jhc2VEcmF3VUxpbmUubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmYTdlNWIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9iYXNlL3Rvb2xzL2Jhc2VEcmF3VUxpbmUubHp4CkBAIC0wLDAgKzEsMTY2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8Y2xhc3MgbmFtZT0iYmFzZURyYXdVTGluZSIgZXh0ZW5kcz0iYmFzZURyYXdMaW5lIiA+CisgICAgCisgICAgPCEtLSBmb3IgZHJhd2luZyB1bGluZSAtLT4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnR1bGluZXN0cm9rZSIgdmFsdWU9IjB4RkY2NjAwIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudHVsaW5lbGluZVdpZHRoIiB2YWx1ZT0iMjAiIHR5cGU9Im51bWJlciIgLz4gIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudHVsaW5lT3BhY2l0eSIgdmFsdWU9IjAuNSIgdHlwZT0ibnVtYmVyIiAvPgorICAgICAgCisgICAgCisgICAgPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAgICBVbmRlcmxpbmUKKyAgICAgLS0+CisgICAgPG1ldGhvZCBuYW1lPSJzdGFydFVsaW5lIiBhcmdzPSJvaWRfbmFtZSI+CisgICAgICAgIGlmIChvaWRfbmFtZSA9PSBudWxsKXsKKyAgICAgICAgICAgIG9pZF9uYW1lID0gJ3VsaW5lJyt0aGlzLmdldENvdW50ZXIoKTsKKyAgICAgICAgfQorICAgICAgICAvL0RlYnVnLndyaXRlKCJzdGFydFVsaW5lICIsdGhpcy5zdGFydHgsdGhpcy5zdGFydHkpOworICAgICAgICB0aGlzLmN1cnJlbnRsYXllciA9IG5ldyBsei5kcmF3Vmlld05ldyh0aGlzLHsKKyAgICAgICAgICAgIG5hbWU6b2lkX25hbWUsd2lkdGg6dGhpcy53aWR0aCsyLGhlaWdodDp0aGlzLmhlaWdodCsyLAorICAgICAgICAgICAgeDotMSx5Oi0xLAorICAgICAgICAgICAgb3BhY2l0eTp0aGlzLmN1cnJlbnR1bGluZU9wYWNpdHl9KTsKKyAgICAgICAgdGhpcy5kcmF3bGluZU9uT2JqZWN0KHRoaXMuY3VycmVudGxheWVyLC0xLC0xLDAsMCk7CisgICAgICAgIHRoaXMuZHJhd2xpbmVPbk9iamVjdCh0aGlzLmN1cnJlbnRsYXllcix0aGlzLndpZHRoLHRoaXMuaGVpZ2h0LHRoaXMud2lkdGgrMSx0aGlzLmhlaWdodCsxKTsKKyAgICAKKyAgICAgICAgLy9TZXQgcHJldmlvdXMgdG8gbnVsbAorICAgICAgICB0aGlzLnByZXZ4ID0gbnVsbDsKKyAgICAgICAgdGhpcy5wcmV2eSA9IG51bGw7ICAKKyAgICAgICAgCisgICAgICAgIGN1cnJlbnRsYXllci5zdHJva2VTdHlsZSA9IHRoaXMuY3VycmVudHVsaW5lc3Ryb2tlOworICAgICAgICBjdXJyZW50bGF5ZXIubGluZVdpZHRoID0gdGhpcy5jdXJyZW50dWxpbmVsaW5lV2lkdGg7CisgICAgICAgIGN1cnJlbnRsYXllci5maWxsc3R5bGUgPSAnMHgwMDAwMDAnOworICAgIDwvbWV0aG9kPiAgCisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJlbmRVbGluZSI+CisgICAgICAgIC8vRGVidWcud3JpdGUoImVuZFVsaW5lIix0aGlzLnN0YXJ0eCx0aGlzLnN0YXJ0eSx0aGlzLmVuZHgsdGhpcy5lbmR5KTsKKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICB2YXIgdGVtcE5hbWUgPSB0aGlzLmN1cnJlbnRsYXllci5uYW1lOworICAgICAgICAgICAgLy9EZWJ1Zy53cml0ZSgidGVtcE5hbWU6ICIsdGVtcE5hbWUpOworICAgICAgICAgICAgdGhpcy5jdXJyZW50bGF5ZXIuZGVzdHJveSgpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvL0dldEJvdW5kcyBvZiB0aGF0IE9iamVjdAorICAgICAgICAgICAgdmFyIG1pbnggPSB0aGlzLndpZHRoKzI7CisgICAgICAgICAgICB2YXIgbWlueSA9IHRoaXMuaGVpZ2h0KzI7CisgICAgICAgICAgICB2YXIgbWF4eCA9IC0yOworICAgICAgICAgICAgdmFyIG1heHkgPSAtMjsKKyAgICAKKyAgICAgICAgICAgIGlmICh0aGlzLnN0YXJ0eDxtaW54KSBtaW54PXRoaXMuc3RhcnR4OworICAgICAgICAgICAgaWYgKHRoaXMuZW5keDxtaW54KSBtaW54PXRoaXMuZW5keDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHRoaXMuc3RhcnR4Pm1heHgpIG1heHg9dGhpcy5zdGFydHg7CisgICAgICAgICAgICBpZiAodGhpcy5lbmR4Pm1heHgpIG1heHg9dGhpcy5lbmR4OworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAodGhpcy5zdGFydHk8bWlueSkgbWlueT10aGlzLnN0YXJ0eTsKKyAgICAgICAgICAgIGlmICh0aGlzLmVuZHk8bWlueSkgbWlueT10aGlzLmVuZHk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICh0aGlzLnN0YXJ0eT5tYXh5KSBtYXh5PXRoaXMuc3RhcnR5OworICAgICAgICAgICAgaWYgKHRoaXMuZW5keT5tYXh5KSBtYXh5PXRoaXMuZW5keTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIHdpZHRoID0gbWF4eC1taW54OworICAgICAgICAgICAgdmFyIGhlaWdodCA9IG1heHktbWlueTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIHgxID0gdGhpcy5zdGFydHgtbWlueCsodGhpcy5jdXJyZW50dWxpbmVsaW5lV2lkdGgvMik7CisgICAgICAgICAgICB2YXIgeTEgPSB0aGlzLnN0YXJ0eS1taW55Kyh0aGlzLmN1cnJlbnR1bGluZWxpbmVXaWR0aC8yKTsKKyAgICAgICAgICAgIHZhciB4MiA9IHRoaXMuZW5keC1taW54Kyh0aGlzLmN1cnJlbnR1bGluZWxpbmVXaWR0aC8yKTsKKyAgICAgICAgICAgIHZhciB5MiA9IHRoaXMuZW5keS1taW55Kyh0aGlzLmN1cnJlbnR1bGluZWxpbmVXaWR0aC8yKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy9EZWJ1Zy53cml0ZSgibWlueCxtaW55LHdpZHRoLGhlaWdodDogIixtaW54LG1pbnksd2lkdGgsaGVpZ2h0KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5jdXJyZW50bGF5ZXIgPSBuZXcgbHouZHJhd1ZpZXdOZXcodGhpcyx7CisgICAgICAgICAgICAgICAgbmFtZTp0ZW1wTmFtZSx4OihtaW54LTEtKHRoaXMuY3VycmVudHVsaW5lbGluZVdpZHRoLzIpKSwKKyAgICAgICAgICAgICAgICB5OihtaW55LTEtKHRoaXMuY3VycmVudHVsaW5lbGluZVdpZHRoLzIpKSwKKyAgICAgICAgICAgICAgICB3aWR0aDood2lkdGgrdGhpcy5jdXJyZW50dWxpbmVsaW5lV2lkdGgpLAorICAgICAgICAgICAgICAgIGhlaWdodDooaGVpZ2h0K3RoaXMuY3VycmVudHVsaW5lbGluZVdpZHRoKSwKKyAgICAgICAgICAgICAgICBvcGFjaXR5OnRoaXMuY3VycmVudHVsaW5lT3BhY2l0eX0pOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgLy90aGlzLmN1cnJlbnRsYXllci5maWxsc3R5bGUgPSAnMHgwMDAwMDAnOworICAgICAgICAgICAgdGhpcy5jdXJyZW50bGF5ZXIubGluZVdpZHRoID0gdGhpcy5jdXJyZW50dWxpbmVsaW5lV2lkdGg7CisgICAgICAgICAgICB0aGlzLmN1cnJlbnRsYXllci5zdHJva2VTdHlsZSA9IHRoaXMuY3VycmVudHVsaW5lc3Ryb2tlOworICAgIAorICAgICAgICAgICAgdGhpcy5kcmF3bGluZSgoeDEpLCh5MSksKHgyKSwoeTIpKTsKKyAgICAKKyAgICAgICAgICAgIC8vQWRkIExheWVyIHRvIGdsb2JhbCBMYXllciAgICAgCisgICAgICAgICAgICB0aGlzLmxheWVycy5wdXNoKHRoaXMuY3VycmVudGxheWVyKTsgIAorICAgICAgICAgICAgdGhpcy51bGluZXJlZ2lzdGVyRmluYWwodGhpcy5jdXJyZW50bGF5ZXIubmFtZSx0aGlzLmN1cnJlbnR1bGluZXN0cm9rZSwKKyAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnR1bGluZWxpbmVXaWR0aCx0aGlzLmN1cnJlbnR1bGluZU9wYWNpdHksCisgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50bGF5ZXIueCx0aGlzLmN1cnJlbnRsYXllci55LAorICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudGxheWVyLndpZHRoLHRoaXMuY3VycmVudGxheWVyLmhlaWdodCwKKyAgICAgICAgICAgICAgICB4MSx5MSx4Mix5Mix0cnVlLHRoaXMuZ2V0U1dGRG9jdW1lbnRTdGF0dXMoKSwKKyAgICAgICAgICAgICAgICB0aGlzLmdldFpJbmRleCgpKTsKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+IAorICAgIAorICAgIAorICAgIDxtZXRob2QgbmFtZT0idWxpbmVyZWdpc3RlckZpbmFsIiBhcmdzPSJuZXdOYW1lLHN0cm9rZSxsaW5lLG9wYWNpdHkseCx5LHdpZHRoLGhlaWdodCx4MSx5MSx4Mix5Mixkb0NhbGwsc3dmT2JqLHpJbmRleCI+CisgICAgICAgIHZhciBhY3Rpb25PYmplY3QgPSBuZXcgQXJyYXkoKTsKKyAgICAgICAgYWN0aW9uT2JqZWN0WzBdID0gJ3VsaW5lJzsKKyAgICAgICAgYWN0aW9uT2JqZWN0WzFdID0gc3Ryb2tlOworICAgICAgICBhY3Rpb25PYmplY3RbMl0gPSBsaW5lOworICAgICAgICBhY3Rpb25PYmplY3RbM10gPSBvcGFjaXR5OworICAgICAgICBhY3Rpb25PYmplY3RbNF0gPSB4MSAgCisgICAgICAgIGFjdGlvbk9iamVjdFs1XSA9IHkxOyAgCisgICAgICAgIGFjdGlvbk9iamVjdFs2XSA9IHgyOyAgICAKKyAgICAgICAgYWN0aW9uT2JqZWN0WzddID0geTI7ICAKKyAgICAgICAgYWN0aW9uT2JqZWN0WzhdID0gekluZGV4Oy8vLTgKKyAgICAgICAgYWN0aW9uT2JqZWN0WzldID0gc3dmT2JqOy8vLTcKKyAgICAgICAgYWN0aW9uT2JqZWN0WzEwXSA9IHRoaXMuY291bnRlcjsvLy02IAorICAgICAgICBhY3Rpb25PYmplY3RbMTFdID0geDsvLy01CisgICAgICAgIGFjdGlvbk9iamVjdFsxMl0gPSB5Oy8vLTQKKyAgICAgICAgYWN0aW9uT2JqZWN0WzEzXSA9IHdpZHRoOy8vLTMKKyAgICAgICAgYWN0aW9uT2JqZWN0WzE0XSA9IGhlaWdodDsvLy0yCisgICAgICAgIGFjdGlvbk9iamVjdFsxNV0gPSBuZXdOYW1lOy8vLTEKKyAgICAgICAgdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdC5wdXNoKGFjdGlvbk9iamVjdCk7ICAgICAgIAorICAgICAgICBpZiAoZG9DYWxsKSB0aGlzLm9uc2hhcmVkTWVzc2FnZSgnZHJhdycsYWN0aW9uT2JqZWN0KTsKKyAgICA8L21ldGhvZD4gICAgICAgCisgICAgCisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJ1bGluZWFjdGlvbkhpc3RvcnkiIGFyZ3M9Imxhc3RBY3Rpb25PYmplY3QscGFyZW50VmlldyI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAvL0RlYnVnLndyaXRlKCIjIyBsaW5lYWN0aW9uSGlzdG9yeSIscGFyZW50VmlldywiIDIgIyMgTkVXIHgseSAiLGxhc3RBY3Rpb25PYmplY3RbbGFzdEFjdGlvbk9iamVjdC5sZW5ndGgtNV0sbGFzdEFjdGlvbk9iamVjdFtsYXN0QWN0aW9uT2JqZWN0Lmxlbmd0aC00XSwiIHdpZHRoLGhlaWdodDogIixsYXN0QWN0aW9uT2JqZWN0W2xhc3RBY3Rpb25PYmplY3QubGVuZ3RoLTNdLGxhc3RBY3Rpb25PYmplY3RbbGFzdEFjdGlvbk9iamVjdC5sZW5ndGgtMl0pOworICAgICAgICAKKyAgICAgICAgdmFyIHRtcEN1cnJlbnRsYXllciA9IG5ldyBsei5kcmF3Vmlld05ldyhwYXJlbnRWaWV3LHsKKyAgICAgICAgICAgICAgICBuYW1lOmxhc3RBY3Rpb25PYmplY3RbbGFzdEFjdGlvbk9iamVjdC5sZW5ndGgtMV0sCisgICAgICAgICAgICAgICAgeDpsYXN0QWN0aW9uT2JqZWN0W2xhc3RBY3Rpb25PYmplY3QubGVuZ3RoLTVdLAorICAgICAgICAgICAgICAgIHk6bGFzdEFjdGlvbk9iamVjdFtsYXN0QWN0aW9uT2JqZWN0Lmxlbmd0aC00XSwKKyAgICAgICAgICAgICAgICB3aWR0aDpsYXN0QWN0aW9uT2JqZWN0W2xhc3RBY3Rpb25PYmplY3QubGVuZ3RoLTNdLAorICAgICAgICAgICAgICAgIGhlaWdodDpsYXN0QWN0aW9uT2JqZWN0W2xhc3RBY3Rpb25PYmplY3QubGVuZ3RoLTJdLAorICAgICAgICAgICAgICAgIG9wYWNpdHk6bGFzdEFjdGlvbk9iamVjdFszXX0pOworICAgICAgICAgICAgCisgICAgICAgICAgICAvL3RoaXMuY3VycmVudGxheWVyLmZpbGxzdHlsZSA9IGxhc3RBY3Rpb25PYmplY3RbMV07CisgICAgICAgICAgICB0bXBDdXJyZW50bGF5ZXIubGluZVdpZHRoID0gbGFzdEFjdGlvbk9iamVjdFsyXTsKKyAgICAgICAgICAgIHRtcEN1cnJlbnRsYXllci5zdHJva2VTdHlsZSA9IGxhc3RBY3Rpb25PYmplY3RbMV07CisgICAgCisgICAgICAgICAgICB0aGlzLmRyYXdsaW5lT25PYmplY3QodG1wQ3VycmVudGxheWVyLCBsYXN0QWN0aW9uT2JqZWN0WzRdLGxhc3RBY3Rpb25PYmplY3RbNV0sbGFzdEFjdGlvbk9iamVjdFs2XSxsYXN0QWN0aW9uT2JqZWN0WzddKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy9BZGQgTGF5ZXIgdG8gZ2xvYmFsIExheWVyICAgICAKKyAgICAgICAgICAgIHRoaXMubGF5ZXJzLnB1c2godG1wQ3VycmVudGxheWVyKTsgIAorICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLmRvU1dGRG9jdW1lbnRTdGF0dXModG1wQ3VycmVudGxheWVyLGxhc3RBY3Rpb25PYmplY3RbbGFzdEFjdGlvbk9iamVjdC5sZW5ndGgtN10pOworCisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorICAgIAorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvYmFzZS90b29scy9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL2Jhc2UvdG9vbHMvbGlicmFyeS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzg0NzgyYgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL2Jhc2UvdG9vbHMvbGlicmFyeS5sengKQEAgLTAsMCArMSwzNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworCTxpbmNsdWRlIGhyZWY9ImJhc2VEcmF3UGFpbnQubHp4IiAvPgorICAgIDxpbmNsdWRlIGhyZWY9ImJhc2VEcmF3TGluZS5sengiIC8+CisgICAgPGluY2x1ZGUgaHJlZj0iYmFzZURyYXdVTGluZS5sengiIC8+CisgICAgPGluY2x1ZGUgaHJlZj0iYmFzZURyYXdDbGlwQXJ0Lmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJiYXNlRHJhd0Fycm93Lmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJiYXNlRHJhd1JlY3QubHp4IiAvPgorICAgIDxpbmNsdWRlIGhyZWY9ImJhc2VEcmF3RWxsaXBzZS5sengiIC8+CisgICAgPGluY2x1ZGUgaHJlZj0iYmFzZURyYXdQb2ludGVyLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJiYXNlRHJhd1RyaWFuZ2xlLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJiYXNlRHJhd1NlbGVjdC5sengiIC8+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL2Jhc2Uvd2hpdGVCb2FyZFBvaW50ZXIubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvYmFzZS93aGl0ZUJvYXJkUG9pbnRlci5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzk1YmVhYgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL2Jhc2Uvd2hpdGVCb2FyZFBvaW50ZXIubHp4CkBAIC0wLDAgKzEsMzggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/Pg0KKzwhLS0NCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgIA0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAgICAJICANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAgdW5kZXIgdGhlIExpY2Vuc2UuDQorICANCistLT4NCis8bGlicmFyeT4NCisNCisgICAgPGNsYXNzIG5hbWU9IndoaXRlQm9hcmRQb2ludGVyIiBleHRlbmRzPSJ2aWV3Ig0KKyAgICAgICAgICAgcmVzb3VyY2U9InBvaW50ZXJfd2hpdGVib2FyZF9yc2MiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgPg0KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJ1c2VyTmFtZSIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPg0KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJmYWRlRGVsZWdhdGUiIHZhbHVlPSJudWxsIiAvPg0KKyAgICAgICAgPGxhYmVsVGV4dCB4PSIyMCIgdGV4dD0iJG9uY2V7IHBhcmVudC51c2VyTmFtZSB9IiAvPg0KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4NCisgICAgICAgICAgICB0aGlzLnBsYXkoKTsNCisgICAgICAgICAgICB0aGlzLmZhZGVEZWxlZ2F0ZSA9IG5ldyBMekRlbGVnYXRlKCB0aGlzLCAiZmFkZVRleHQiICk7DQorICAgICAgICAgICAgbHouVGltZXIuYWRkVGltZXIoIHRoaXMuZmFkZURlbGVnYXRlLCA1MDAwICk7DQorICAgICAgICA8L2hhbmRsZXI+DQorICAgICAgICA8bWV0aG9kIG5hbWU9ImZhZGVUZXh0IiBhcmdzPSJpdGVtT2JqIj4NCisgICAgICAgICAgICB0aGlzLmRlc3Ryb3koKTsNCisgICAgICAgIDwvbWV0aG9kPg0KKyAgICA8L2NsYXNzPg0KKw0KKzwvbGlicmFyeT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9iYXNlL3doaXRlYm9hcmRWaWRlb1BsYXllci5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9iYXNlL3doaXRlYm9hcmRWaWRlb1BsYXllci5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjA1NzEyZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL2Jhc2Uvd2hpdGVib2FyZFZpZGVvUGxheWVyLmx6eApAQCAtMCwwICsxLDM0NiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9IndoaXRlYm9hcmRWaWRlb1BsYXllciIgZXh0ZW5kcz0ibGFiZWxFeHBsb3JlckJveCIgYWxsb3dEcmFnZ2luZz0iZmFsc2UiCisgICAgZG9ja2luZz0iZmFsc2UiIHJlc2l6ZWFibGU9ImZhbHNlIiBjbG9zYWJsZT0iZmFsc2UiIAorICAgIHg9IjAiIHk9IjAiIHdpZHRoPSIkeyBwYXJlbnQud2lkdGggfSIgaGVpZ2h0PSIkeyBwYXJlbnQuaGVpZ2h0IH0iPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0iZmlsZUV4cGxvcmVySXRlbUlkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorCQorICAgIDxhdHRyaWJ1dGUgbmFtZT0idGltZXJEZWxlZ2F0ZVN0YXJ0ZWQiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9ImRlbHRhSW5TZWNvbmRzIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudFRpbWUiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+IAkKKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9InJlY29yZGluZ05hbWUiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9ImlzTG9hZGVkIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJzZW5kSW5pdCIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0iZmx2X3dpZHRoIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPiAKKwkKKyAgICA8YXR0cmlidXRlIG5hbWU9ImZsdl9oZWlnaHQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+IAorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0iaXNQYXVzZWQiIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPgorICAgIAorCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ3aGl0ZWJvYXJkVmlkZW9QbGF5ZXIgOjogIix0aGlzLmZpbGVFeHBsb3Jlckl0ZW1JZCk7CisJCQorCQl0aGlzLnJlY29yZGluZ05hbWUgPSAiVVBMT0FERkxWXyIgKyB0aGlzLmZpbGVFeHBsb3Jlckl0ZW1JZCArICIuZmx2IjsKKwkJY2FsY1ZpZGVvV2lkdGhIZWlnaHQoKTsKKwkJdGhpcy5jb3B5RmlsZVRvQ3VycmVudFJvb20uZG9DYWxsKCk7CisJCQorCQl2YXIgdCA9IHRoaXM7CisJCWNhbnZhcy52aWRlb0NvbXBfbGMuc3RvcFJlY29yZGluZ1N0cmVhbSA9IGZ1bmN0aW9uKHROYW1lKSB7CisgICAgICAgICAgICBpZiAodC5uYW1lID09IHROYW1lKSB7CisgICAgICAgICAgICAJdC5zdG9wU3RyZWFtKCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgY2FudmFzLnZpZGVvQ29tcF9sYy5tZXRhV2hpdGVib2FyZFBsYXliYWNrU3RyZWFtID0gZnVuY3Rpb24odE5hbWUsZHVyYXRpb24pIHsKKyAgICAgICAgICAgIGlmICh0Lm5hbWUgPT0gdE5hbWUpIHsKKyAgICAgICAgICAgICAgICB0LmRlbHRhSW5TZWNvbmRzID0gZHVyYXRpb247CisgICAgICAgICAgICAgICAgdC5zZXREdXJhdGlvbigpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGNhbnZhcy52aWRlb0NvbXBfbGMudXBkYXRlV2hpdGVib2FyZFN0cmVhbVRpbWUgPSBmdW5jdGlvbih0TmFtZSx0aW1lKSB7CisgICAgICAgICAgICBpZiAodC5uYW1lID09IHROYW1lKSB7CisgICAgICAgICAgICAgICAgdC5jdXJyZW50VGltZSA9IHRpbWU7CisgICAgICAgICAgICAgICAgdC5jYWxjUHJvZ3Jlc3NCYXIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCQkKKwk8L2hhbmRsZXI+CisJCisJPGhhbmRsZXIgbmFtZT0icHJlcGFyZUZvckRlbGV0ZSIgYXJncz0idFJlZiI+CisJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCItLS0gcHJlcGFyZUZvckRlbGV0ZSAiKTsKKwkJdGhpcy5zdG9wU3RyZWFtKCk7CisJPC9oYW5kbGVyPgorCQorCTxoYW5kbGVyIG5hbWU9Im9uY2xvc2UiPgorCQl0aGlzLnN0b3BTdHJlYW1QbGF5KCk7CisJPC9oYW5kbGVyPgorCQorCTxoYW5kbGVyIG5hbWU9Im9ud2lkdGgiIGFyZ3M9InciPgorCQljYWxjVmlkZW9XaWR0aEhlaWdodCgpOworCTwvaGFuZGxlcj4KKwkKKwk8aGFuZGxlciBuYW1lPSJvbmhlaWdodCIgYXJncz0iaCI+CisJCWNhbGNWaWRlb1dpZHRoSGVpZ2h0KCk7CisJPC9oYW5kbGVyPgorCQorCTwhLS0KKwlwdWJsaWMgTG9uZyBjb3B5RmlsZVRvQ3VycmVudFJvb20oU3RyaW5nIFNJRCwgTG9uZyBmbHZGaWxlRXhwbG9yZXJJZCkKKwkgLS0+CisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iY29weUZpbGVUb0N1cnJlbnRSb29tIiBmdW5jbmFtZT0iZmlsZXNlcnZpY2UuY29weUZpbGVUb0N1cnJlbnRSb29tIiAKKyAgICAgICAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gCisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gY2FudmFzLnNlc3Npb25JZDs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQuZmlsZUV4cGxvcmVySXRlbUlkOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAJPCFbQ0RBVEFbICAgIAorCSAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJkZWxldGVGaWxlT3JGb2xkZXI6ICIsdmFsdWUpOworCSAgICAgICAgICAgIHBhcmVudC5pc0xvYWRlZCA9IHRydWU7CisJICAgICAgICAgICAgCisJICAgICAgICAgICAgdmFyIGRvd25sb2FkdXJsID0gY2FudmFzLmdldFVybCgpKydEb3dubG9hZEhhbmRsZXI/ZmlsZU5hbWU9VVBMT0FERkxWXycrcGFyZW50LmZpbGVFeHBsb3Jlckl0ZW1JZCsnLmpwZycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKycmbW9kdWxlTmFtZT1selJlY29yZGVyQXBwJnBhcmVudFBhdGg9JnJvb21faWQ9JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArJyZzaWQ9JytjYW52YXMuc2Vzc2lvbklkOworCSAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHBhcmVudC5fY29udGVudC5fcHJldmlldy5pbWFnZVByZXZpZXcuc2V0QXR0cmlidXRlKCJzcmMiLGRvd25sb2FkdXJsKQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBwYXJlbnQuX2NvbnRlbnQuX3ByZXZpZXcuYnJpbmdUb0Zyb250KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgIGlmIChwYXJlbnQuc2VuZEluaXQpIHsKKwkgICAgICAgICAgICAgICAgcGFyZW50LnBhcmVudC5zZW5kTmV3VmlkZW9SZW1vdGUocGFyZW50KTsKKwkgICAgICAgICAgICB9CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPgorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InN0YXJ0U3RyZWFtUGxheSI+CisgICAgCXBhcmVudC5wbGF5RkxWKHRoaXMsdHJ1ZSk7CisgICAgCXRoaXMuc3RhcnRTdHJlYW0oKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InN0b3BTdHJlYW1QbGF5Ij4KKyAgICAJcGFyZW50LnBsYXlGTFYodGhpcyxmYWxzZSk7CisgICAgCXRoaXMuc3RvcFN0cmVhbSgpOworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0icGxheVJlbW90ZSI+CisgICAgCXRoaXMuc3RhcnRTdHJlYW0oKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InN0b3BSZW1vdGUiPgorICAgICAgICB0aGlzLnN0b3BTdHJlYW0oKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InN0YXJ0U3RyZWFtIj4KKyAgICAJPCFbQ0RBVEFbCisJICAgIAlpZiAoIXRoaXMuaXNMb2FkZWQpIHsKKwkgICAgCQlyZXR1cm47CisJICAgIAl9CisJICAgIAkKKwkgICAgCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzdGFydFN0cmVhbSAiLHRoaXMucmVjb3JkaW5nTmFtZSk7CisJICAgIAkKKwkgICAgCWlmICh0aGlzLnJlY29yZGluZ05hbWUgIT0gIiIpIHsKKwkgICAgCQkKKwkgICAgCQl0aGlzLmlzUGF1c2VkID0gZmFsc2U7CisJICAgIAkJCisJICAgIAkJaWYgKCF0aGlzLnRpbWVyRGVsZWdhdGVTdGFydGVkKSB7CisJICAgIAkJCXRoaXMudGltZXJEZWxlZ2F0ZVN0YXJ0ZWQgPSB0cnVlOworCSAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAKKwkgICAgICAgIAlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiUExBWSBTVFJFQU0gIix0aGlzLnJlY29yZGluZ05hbWUpOworCSAgICAgICAgCQorCSAgICAgICAgCXZhciB0T2JqZWN0RGltZW5zaW9uID0gY2FsY1ZpZGVvV2lkdGhIZWlnaHQoKTsKKwkgICAgICAgIAkKKwkgICAgICAgIAlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiU0VORCAiLHRoaXMucmVjb3JkaW5nTmFtZSwwLHRPYmplY3REaW1lbnNpb24ueCx0T2JqZWN0RGltZW5zaW9uLnksdE9iamVjdERpbWVuc2lvbi53aWR0aCx0T2JqZWN0RGltZW5zaW9uLmhlaWdodCk7CisJICAgICAgICAJCisJICAgICAgICAgICAgLy8gdGhpcy5fY29udGVudC5fdmlkZW9zdHJlYW0ucGxheVN0cmVhbSh0aGlzLnJlY29yZGluZ05hbWUsMCx0T2JqZWN0RGltZW5zaW9uLngsdE9iamVjdERpbWVuc2lvbi55LHRPYmplY3REaW1lbnNpb24ud2lkdGgsdE9iamVjdERpbWVuc2lvbi5oZWlnaHQpOworCSAgICAgICAgICAgIAorCSAgICAgICAgCXZhciB0eCA9IHRoaXMuZ2V0QXR0cmlidXRlUmVsYXRpdmUoIngiLGNhbnZhcykrdE9iamVjdERpbWVuc2lvbi54K3RoaXMuX2NvbnRlbnQueDsKKwkgICAgICAgIAl2YXIgdHkgPSB0aGlzLmdldEF0dHJpYnV0ZVJlbGF0aXZlKCJ5IixjYW52YXMpK3RPYmplY3REaW1lbnNpb24ueSt0aGlzLl9jb250ZW50Lnk7CisJICAgICAgICAJCisJICAgICAgICAgICAgY2FudmFzLnNlbmRWaWFMb2NhbENvbm5lY3Rpb24oY2FudmFzLnJ0bXBfbGNfbmFtZSwgInBsYXliYWNrV2hpdGVib2FyZFZpZGVvIiwgW3RoaXMubmFtZSx0aGlzLnJlY29yZGluZ05hbWUsMCx0eCx0eSx0T2JqZWN0RGltZW5zaW9uLndpZHRoLHRPYmplY3REaW1lbnNpb24uaGVpZ2h0XSk7CisJICAgIAl9CisgICAgCV1dPgorICAgIDwvbWV0aG9kPiAgIAorICAgIAorICAgIDwhLS0tCisgICAgICAgIGNhbGN1bGF0ZXMgdGhlIG5ldyB4LCB5LCB3aWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSB2aWRlbyBzbyB0aGF0IGl0IGlzIDEwMCUgCisgICAgICAgIHZpc2libGUgaW4gdGhlIGNvbnRhaW5lcgorICAgICAtLT4KKyAgICA8bWV0aG9kIG5hbWU9ImNhbGNWaWRlb1dpZHRoSGVpZ2h0Ij4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgIAorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImNhbGNWaWRlb1dpZHRoSGVpZ2h0ICIsdGhpcy5mbHZfd2lkdGgsdGhpcy5mbHZfaGVpZ2h0KTsKKyAgICAgICAgCisgICAgICAgICAgICB2YXIgcmF0aW8gPSB0aGlzLmZsdl93aWR0aCAvIHRoaXMuZmx2X2hlaWdodDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy9tYXggaGVpZ2h0IG9mIGNvbnRhaW5lciBpcyBuZXcgaGVpZ2h0IG9mIHZpZGVvOworICAgICAgICAgICAgLy9jYWxjIG5ldyB3aWR0aCBhbmQgeC1wb3NpdGlvbiBvZiB2aWRlbworICAgICAgICAgICAgdmFyIG5ld0hlaWdodCA9IHRoaXMuX2NvbnRlbnQuaGVpZ2h0OworICAgICAgICAgICAgdmFyIG5ld1dpZHRoID0gcmF0aW8gKiBuZXdIZWlnaHQ7IAorICAgICAgICAgICAgdmFyIG5ld3ggPSAodGhpcy5fY29udGVudC53aWR0aCAtIG5ld1dpZHRoKSAvIDI7CisgICAgICAgICAgICB2YXIgbmV3eSA9IDA7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJjYWxjVmlkZW9XaWR0aEhlaWdodCIscmF0aW8sdGhpcy5fY29udGVudC53aWR0aCx0aGlzLl9jb250ZW50LmhlaWdodCxuZXdXaWR0aCxuZXdIZWlnaHQsbmV3eCxuZXd5KTsKKyAgICAgICAgIAorICAgICAgICAgICAgaWYgKG5ld1dpZHRoID4gdGhpcy5fY29udGVudC53aWR0aCkgeworICAgICAgICAgICAgICAgIG5ld1dpZHRoID0gdGhpcy5fY29udGVudC53aWR0aDsKKyAgICAgICAgICAgICAgICBuZXdIZWlnaHQgPSBuZXdXaWR0aCAvIHJhdGlvOworICAgICAgICAgICAgICAgIG5ld3ggPSAwOworICAgICAgICAgICAgICAgIG5ld3kgPSAodGhpcy5fY29udGVudC5oZWlnaHQgLSBuZXdIZWlnaHQpIC8gMjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIHQgPSB7J3gnOm5ld3gsJ3knOm5ld3ksJ3dpZHRoJzpuZXdXaWR0aCwnaGVpZ2h0JzpuZXdIZWlnaHR9OworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidCIsdCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuX2NvbnRlbnQuX3ByZXZpZXcuc2V0QXR0cmlidXRlKCJ4IixuZXd4KTsKKyAgICAgICAgICAgIHRoaXMuX2NvbnRlbnQuX3ByZXZpZXcuc2V0QXR0cmlidXRlKCJ5IixuZXd5KTsKKyAgICAgICAgICAgIHRoaXMuX2NvbnRlbnQuX3ByZXZpZXcuc2V0QXR0cmlidXRlKCJ3aWR0aCIsbmV3V2lkdGgpOworICAgICAgICAgICAgdGhpcy5fY29udGVudC5fcHJldmlldy5zZXRBdHRyaWJ1dGUoImhlaWdodCIsbmV3SGVpZ2h0KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgcmV0dXJuIHsneCc6bmV3eCwneSc6bmV3eSwnd2lkdGgnOm5ld1dpZHRoLCdoZWlnaHQnOm5ld0hlaWdodH07CisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0ic2V0RHVyYXRpb24iPgorICAgIAk8IVtDREFUQVsKKyAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInNldER1cmF0aW9uICIsdGhpcy5kZWx0YUluU2Vjb25kcyk7CisgICAgICAgICAgIHZhciB0U3RyaW5nID0gIiI7CisgICAgICAgICAgIGlmICh0aGlzLmRlbHRhSW5TZWNvbmRzID4gNjApIHsKKyAgICAgICAgICAgICAgIHZhciBtaW51dGVzID0gTWF0aC5mbG9vcih0aGlzLmRlbHRhSW5TZWNvbmRzLzYwKTsKKyAgICAgICAgICAgICAgIHZhciByZXN0U2Vjb25kcyA9IE1hdGgucm91bmQodGhpcy5kZWx0YUluU2Vjb25kcykgLSAoIG1pbnV0ZXMgKiA2MCApOworICAgICAgICAgICAgICAgdFN0cmluZyA9IG1pbnV0ZXMgKyAiIG1pbiAiICsgcmVzdFNlY29uZHMgKyAiIHNlYyI7CisgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICB0U3RyaW5nID0gTWF0aC5yb3VuZCh0aGlzLmRlbHRhSW5TZWNvbmRzKSArICIgc2VjIjsKKyAgICAgICAgICAgfQorICAgICAgICAgICB0aGlzLl9wcm9ncmVzcy5fcHJvZ3Jlc3NiYXIuX2R1cmF0aW9uLnNldEF0dHJpYnV0ZSgidGV4dCIsdFN0cmluZyk7CisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iY2FsY1Byb2dyZXNzQmFyIj4KKyAgICAJPCFbQ0RBVEFbCisgICAgCSAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJjYWxjUHJvZ3Jlc3NCYXIgIix0aGlzLmN1cnJlbnRUaW1lKTsKKyAgICAJICAgdGhpcy5fcHJvZ3Jlc3MuX3Byb2dyZXNzYmFyLl9wb2ludGVyLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKyAgICAJICAgdmFyIHRTdHJpbmcgPSAiIjsKKyAgICAJICAgaWYgKHRoaXMuY3VycmVudFRpbWUgPiA2MCkgeworICAgIAkgICAJICAgdmFyIG1pbnV0ZXMgPSBNYXRoLmZsb29yKHRoaXMuY3VycmVudFRpbWUvNjApOworICAgIAkgICAJICAgdmFyIHJlc3RTZWNvbmRzID0gTWF0aC5yb3VuZCh0aGlzLmN1cnJlbnRUaW1lKSAtICggbWludXRlcyAqIDYwICk7CisgICAgCSAgIAkgICB0U3RyaW5nID0gbWludXRlcyArICIgbWluICIgKyByZXN0U2Vjb25kcyArICIgc2VjIjsKKyAgICAJICAgfSBlbHNlIHsKKyAgICAJICAgCSAgIHRTdHJpbmcgPSBNYXRoLnJvdW5kKHRoaXMuY3VycmVudFRpbWUpICsgIiBzZWMiOworICAgIAkgICB9CisgICAgCSAgIHZhciB0TmV3WCA9IE1hdGgucm91bmQoKHRoaXMuX3Byb2dyZXNzLl9wcm9ncmVzc2Jhci53aWR0aCAvIHRoaXMuZGVsdGFJblNlY29uZHMpICogdGhpcy5jdXJyZW50VGltZSk7CisgICAgCSAgIHRoaXMuX3Byb2dyZXNzLl9wcm9ncmVzc2Jhci5fdGltZS5zZXRBdHRyaWJ1dGUoInRleHQiLHRTdHJpbmcpOworICAgIAkgICB0aGlzLl9wcm9ncmVzcy5fcHJvZ3Jlc3NiYXIuX3BvaW50ZXIuc2V0QXR0cmlidXRlKCJ4Iix0TmV3WCk7CisgICAgCV1dPgorICAgIDwvbWV0aG9kPiAKKwkKKwk8bWV0aG9kIG5hbWU9InN0b3BTdHJlYW0iPgorICAgIAlpZiAodGhpcy50aW1lckRlbGVnYXRlU3RhcnRlZCkgeworICAgIAkJdGhpcy50aW1lckRlbGVnYXRlU3RhcnRlZCA9IGZhbHNlOworICAgICAgICB9CisgICAgICAgIHRoaXMuX3Byb2dyZXNzLl9wcm9ncmVzc2Jhci5fdGltZS5zZXRBdHRyaWJ1dGUoInRleHQiLCIiKTsKKyAgICAgICAgdGhpcy5fcHJvZ3Jlc3MuX3Byb2dyZXNzYmFyLl9wb2ludGVyLnNldEF0dHJpYnV0ZSgieCIsMCk7CisgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJTRU5EIHN0b3BXaGl0ZWJvYXJkVmlkZW8gIix0aGlzLm5hbWUpOworICAgICAgICBjYW52YXMuc2VuZFZpYUxvY2FsQ29ubmVjdGlvbihjYW52YXMucnRtcF9sY19uYW1lLCAic3RvcFdoaXRlYm9hcmRWaWRlbyIsW3RoaXMubmFtZV0pOworICAgICAgICB0aGlzLmlzUGF1c2VkID0gdHJ1ZTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InRvZ2dsZVN0cmVhbSI+CisgICAgCWlmIChjYW52YXMuaXNtb2RlcmF0b3IpIHsKKyAgICAJCWlmICh0aGlzLmlzUGF1c2VkKSB7CisgICAgCQkJdGhpcy5zdGFydFN0cmVhbVBsYXkoKTsKKyAgICAJCX0KKyAgICAJfQorICAgIDwvbWV0aG9kPgorCQorCTx2aWV3IG5hbWU9Il9jb250ZW50IiBoZWlnaHQ9IiR7IHBhcmVudC5oZWlnaHQtNjIgfSIgYmdjb2xvcj0iMHgwMDAwMDAiCisJCSAgeT0iMjIiIHg9IjEiIHdpZHRoPSIkeyBwYXJlbnQud2lkdGgtMSB9Ij4KKwkJCisJCTx2aWV3IG5hbWU9Il9wcmV2aWV3IiB3aWR0aD0iMCIgaGVpZ2h0PSIwIiA+CisgICAgICAgIAk8aW1hZ2UgbmFtZT0iaW1hZ2VQcmV2aWV3IiBzdHJldGNoZXM9ImJvdGgiCisgICAgICAgIAkJICAgd2lkdGg9IiR7cGFyZW50LndpZHRofSIgaGVpZ2h0PSIke3BhcmVudC5oZWlnaHR9IiAvPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9uY2xpY2sgLS0gdG9nZ2xlU3RyZWFtIik7CisgICAgICAgICAgICAgICAgcGFyZW50LnBhcmVudC50b2dnbGVTdHJlYW0oKTsKKyAgICAgICAgICAgIDwvaGFuZGxlcj4JCSAgIAorICAgICAgICAgICAgPHZpZXcgd2lkdGg9IjYwIiBoZWlnaHQ9IjQwIiB2YWxpZ249Im1pZGRsZSIgb3BhY2l0eT0iMC43IgorICAgICAgICAgICAgCSAgYWxpZ249ImNlbnRlciIgYmdjb2xvcj0iMHhGRkZGRkYiPgorICAgICAgICAgICAgCTx2aWV3IHJlc291cmNlPSJsel9yZWNvcmRlcl9wbGF5IiB2YWxpZ249Im1pZGRsZSIgYWxpZ249ImNlbnRlciIgLz4KKyAgICAgICAgICAgIDwvdmlldz4KKyAgICAgICAgPC92aWV3PgorCQorCTwvdmlldz4KKworICAgIDx2aWV3IG5hbWU9Il9wcm9ncmVzcyIgaGVpZ2h0PSIxOCIgeT0iJHsgcGFyZW50LmhlaWdodCAtIDQwIH0iIHdpZHRoPSIkeyBwYXJlbnQud2lkdGgtMiB9IgorICAgIAkgICAgICAgICAgICAgICAgICB4PSIxIiBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ2Jhc2ViZ2NvbG9yaXplcicpIH0iPgorICAgIAkKKyAgICAJPHZpZXcgcmVzb3VyY2U9ImZsdl9yZWNvcmRlcl9wbGF5X3NtYWxsX3JzYyIgeT0iMSIgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IgorICAgIAkJICAgICAgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdiYXNlTW91c2VPdmVyY29sb3JpemVyJykgfSI+CisgICAgCQk8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3ZlciI+CisgICAgICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoImJnY29sb3IiLDB4RkZGRkZGKTsKKyAgICAgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdXQiPgorICAgICAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJiZ2NvbG9yIixjYW52YXMuZ2V0VGhlbWVDb2xvcignYmFzZU1vdXNlT3ZlcmNvbG9yaXplcicpKTsKKyAgICAgICAgICAgIDwvaGFuZGxlcj4KKyAgICAJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgIAkJCWlmIChjYW52YXMuaXNtb2RlcmF0b3IpIHsKKyAgICAJCQkgICAgIHBhcmVudC5wYXJlbnQuc3RhcnRTdHJlYW1QbGF5KCk7CisgICAgCQkJfQorICAgIAkJPC9oYW5kbGVyPgorICAgIAkJPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSI4NzUiIC8+CisgICAgCTwvdmlldz4KKyAgICAJCisgICAgCTx2aWV3IG5hbWU9Il9wcm9ncmVzc2JhciIgeD0iMTYiIHdpZHRoPSIkeyBwYXJlbnQud2lkdGggLSAzMiB9IiB5PSIxIiAKKyAgICAJCSAgaGVpZ2h0PSIxNiIgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdiYXNlTW91c2VPdmVyY29sb3JpemVyJykgfSI+CisgICAgCQkKKyAgICAJCTx2aWV3IHg9IjAiIHdpZHRoPSIkeyBwYXJlbnQud2lkdGggfSIgeT0iMCIgaGVpZ2h0PSIxNiIgYmdjb2xvcj0iMHhGRkZGRkYiIG9wYWNpdHk9IjAuNSIgLz4gCisgICAgCQkKKyAgICAJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgIAkJCS8vcGFyZW50LnBhcmVudC5zZWVrU3RyZWFtKHRoaXMuZ2V0TW91c2UoIngiKSk7CisgICAgCQk8L2hhbmRsZXI+CisgICAgCQkKKyAgICAJCTx2aWV3IG5hbWU9Il9wb2ludGVyIiByZXNvdXJjZT0iZmx2X3Byb2dyZXNzX3BvaW50ZXJfcnNjIiB2aXNpYmlsaXR5PSJoaWRkZW4iIC8+CisgICAgCQkKKyAgICAJCTx0ZXh0IG5hbWU9Il90aW1lIiByZXNpemU9InRydWUiIGZvbnRzaXplPSIxMCIgLz4KKyAgICAJCQorICAgIAkJPHRleHQgbmFtZT0iX2R1cmF0aW9uIiBhbGlnbj0icmlnaHQiIHJlc2l6ZT0idHJ1ZSIgZm9udHNpemU9IjEwIiAvPgorICAgIAkJCisgICAgCTwvdmlldz4KKyAgICAJCisgICAgCTx2aWV3IHJlc291cmNlPSJmbHZfcmVjb3JkZXJfc3RvcF9zbWFsbF9yc2MiIGFsaWduPSJyaWdodCIgeT0iMSIgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IgorICAgIAkJICBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ2Jhc2VNb3VzZU92ZXJjb2xvcml6ZXInKSB9Ij4KKyAgICAJCTxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdmVyIj4KKyAgICAJCQl0aGlzLnNldEF0dHJpYnV0ZSgiYmdjb2xvciIsMHhGRkZGRkYpOworICAgIAkJPC9oYW5kbGVyPgorICAgIAkJPGhhbmRsZXIgbmFtZT0ib25tb3VzZW91dCI+CisgICAgICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoImJnY29sb3IiLGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdiYXNlTW91c2VPdmVyY29sb3JpemVyJykpOworICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICAJaWYgKGNhbnZhcy5pc21vZGVyYXRvcikgeworICAgICAgICAgICAgICAgICAgICBwYXJlbnQucGFyZW50LnN0b3BTdHJlYW1QbGF5KCk7CisgICAgICAgICAgICAJfQorICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAgICAgPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSI4NzYiIC8+CisgICAgICAgIDwvdmlldz4KKyAgICAJCisgICAgPC92aWV3PgkKKyAgICAKKyAgICA8c2ltcGxlTGFiZWxCdXR0b24gbGFiZWxpZD0iODUiIHdpZHRoPSIxMDAiIHg9IiR7IHBhcmVudC53aWR0aC0xMTggfSIgCisgICAgCQkJCSAgIHk9IiR7IHBhcmVudC5oZWlnaHQtMjAgfSIgPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgIGlmIChjYW52YXMuaXNtb2RlcmF0b3IpIHsKKyAgICAgICAgICAgIAl0aGlzLnBhcmVudC5zdG9wUmVtb3RlKCk7CisgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQucGFyZW50LmRlbGV0ZUl0ZW1CeU5hbWUodGhpcy5wYXJlbnQubmFtZSk7CisgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQucGFyZW50LmRlbGV0ZUl0ZW1CeU5hbWVTeW5jKHRoaXMucGFyZW50Lm5hbWUpOworICAgICAgICAgICAgfQorICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9zaW1wbGVMYWJlbEJ1dHRvbj4KKyAgICAKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL2Jhc2VQcm9wZXJ0eVBhbmVsV2hpdGVib2FyZC5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9iYXNlUHJvcGVydHlQYW5lbFdoaXRlYm9hcmQubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljMTBkM2YKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9iYXNlUHJvcGVydHlQYW5lbFdoaXRlYm9hcmQubHp4CkBAIC0wLDAgKzEsODAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzxjbGFzcyBuYW1lPSJiYXNlUHJvcGVydHlQYW5lbFdoaXRlYm9hcmQiIGV4dGVuZHM9InZpZXciID4KKwkKKwk8IS0tLSBAa2V5d29yZHMgcHJpdmF0ZSBpcyB0aGUgQm94IG1pbmltaXplZCAgLS0+CisJPGF0dHJpYnV0ZSBuYW1lPSJpc29wZW4iIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPgorCQorCTwhLS0tIEBrZXl3b3JkcyBwcml2YXRlIGlzIHRoZSBCb3ggbWluaW1pemVkICAtLT4KKwk8YXR0cmlidXRlIG5hbWU9Im9wZW4iIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPgkJCisJCisJPCEtLS0gVGl0bGUgb2YgdGhpcyB3aW5kb3cgLS0+CisJPGF0dHJpYnV0ZSBuYW1lPSJ0aXRsZSIgdHlwZT0ic3RyaW5nIiB2YWx1ZT0iYmFzZVBhbmVsIiAvPgorCQorCTwhLS0tIEBrZXl3b3JkcyBwcml2YXRlICAtLT4KKwk8YXR0cmlidXRlIG5hbWU9ImluaXRoZWlnaHQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJsYWJlbGlkIiB0eXBlPSJudW1iZXIiIHNldHRlcj0ic2V0TGFiZWxJZChsYWJlbGlkKSIgLz4KKwkKKwk8IS0tLSBpZiB0aGUgYm94IGlzIGFsbG93ZWQgdG8gYmUgbWluaW1pemVkICAtLT4KKwk8YXR0cmlidXRlIG5hbWU9ImFsbG93VG9nZ2xlIiB2YWx1ZT0idHJ1ZSIgdHlwZT0iYm9vbGVhbiIgLz4JCisJCQorCTxtZXRob2QgbmFtZT0ic2V0TGFiZWxJZCIgYXJncz0iX2xhYmVsaWQiID4KKwkJdGhpcy5sYWJlbGlkID0gX2xhYmVsaWQ7CisJCXRoaXMuc2V0QXR0cmlidXRlKCJ0aXRsZSIsY2FudmFzLmdldExhYmVsTmFtZSh0aGlzLmxhYmVsaWQpKTsKKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9InRvZ2dsZW9wZW4iPgorCQlpZiAoIXRoaXMuYWxsb3dUb2dnbGUpIHsKKwkJCXJldHVybjsKKwkJfQorCQkvLy8vRGVidWcud3JpdGUoInRoaXMuaXNvcGVuIix0aGlzLmlzb3Blbik7CisJCXRoaXMuc2V0QXR0cmlidXRlKCdpc29wZW4nLCF0aGlzLmlzb3Blbik7CisJCWlmICh0aGlzLmlzb3Blbil7CQkKKwkJCXRoaXMuc2V0QXR0cmlidXRlKCdoZWlnaHQnLHRoaXMuaW5pdGhlaWdodCk7CisJCQl0aGlzLnNldEF0dHJpYnV0ZSgnaGVpZ2h0Jyx0aGlzLmluaXRoZWlnaHQpOworCQl9IGVsc2UgewkKKwkJCXRoaXMuc2V0QXR0cmlidXRlKCdoZWlnaHQnLDIyKTsJCQorCQl9CisJPC9tZXRob2Q+CisJCisgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAJdGhpcy5pbml0aGVpZ2h0PXRoaXMuaGVpZ2h0OworICAgIDwvaGFuZGxlcj4KKwkKKyAgICA8dmlldyB4PSIwIiB5PSIxIiB3aWR0aD0iJHsgdGhpcy5wYXJlbnQud2lkdGggfSIgaGVpZ2h0PSIyMCIgYmdjb2xvcj0iMHhFMEUxRUIiIC8+CisgICAgCisgICAgPHZpZXcgeD0iMCIgeT0iMCIgd2lkdGg9IiR7IHRoaXMucGFyZW50LndpZHRoIH0iIGhlaWdodD0iMSIgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdtYWluQm9yZGVyQ29sb3InKSB9IiAvPgorICAgIAorICAgIDx2aWV3IHg9IjAiIHk9IjE5IiB3aWR0aD0iJHsgdGhpcy5wYXJlbnQud2lkdGggfSIgaGVpZ2h0PSIxIiBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ21haW5Cb3JkZXJDb2xvcicpIH0iIC8+CisJCisJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgIHRoaXMudG9nZ2xlb3BlbigpOworICAgIDwvaGFuZGxlcj4KKyAgICAKKyAgICA8dGV4dCBmb250c2l6ZT0iMTEiIGhlaWdodD0iMTciIHg9IjIiIHk9IjEiIHRleHQ9IiR7IHRoaXMucGFyZW50LnRpdGxlIH0iIAorCQkJCQkJZmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdtZW51VGV4dENvbG9yJykgfSIgcmVzaXplPSJ0cnVlIiBmb250c3R5bGU9ImJvbGQiIC8+CisJCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9maXhlZEZpbGVFeHBsb3JlcldoaXRlQm9hcmQubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvZml4ZWRGaWxlRXhwbG9yZXJXaGl0ZUJvYXJkLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjg4NmY0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvZml4ZWRGaWxlRXhwbG9yZXJXaGl0ZUJvYXJkLmx6eApAQCAtMCwwICsxLDU3OSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPCEtLSAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworICAgIENsYXNzIG5ld1doaXRlQm9hcmQKKyAgICAKKyAgICAKKyAgICBAa2V5d29yZHMgZGVwcmVjYXRlZAorICAgIAorIC0tPgorCisKKzxjbGFzcyBuYW1lPSJmaXhlZEZpbGVFeHBsb3JlcldoaXRlQm9hcmQiIGV4dGVuZHM9InZpZXciIHNob3doYW5kY3Vyc29yPSJmYWxzZSI+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJiYXNldXJsIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJmaWxlTmFtZSIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibW9kdWxlTmFtZSIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0icGFyZW50UGF0aCIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0icm9vbSIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iZG9tYWluIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJkb3dubG9hZHVybCIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iaWFtZ2V4IiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpbWFnZXkiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9InJlc3RyaWN0ZWQiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICAKKyAgICA8ZXZlbnQgbmFtZT0ib25zaGFyZWRNZXNzYWdlIiAvPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0ic2VuZE9iamVjdCIgdmFsdWU9Im51bGwiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJzZW5kT2JqZWN0VG9DbGllbnRJRCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJjb25maXJtZGlhbG9nIiB2YWx1ZT0ibnVsbCIgLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9ImRvY3VtZW50bWVudUlzSW5pdGVkIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcuaW5mbygiSW5pdCBXaGl0ZWJvYXJkICIsdGhpcy5yZXN0cmljdGVkKTsKKyAgICA8L2hhbmRsZXI+CisKKyAgICA8aGFuZGxlciBuYW1lPSJvbmRlc3Ryb3kiPgorCQkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCIjIyMjIyMjIyMjIyMjIyBmaXhlZEZpbGVFeHBsb3JlcldoaXRlQm9hcmQ6Om9uZGVzdHJveSA6ICIsIHRoaXMpOworCQl0aGlzLl9kcmF3YXJlYU1hc2suX2RyYXdhcmVhLmNsZWFyUmVtb3RlKCk7CisgICAgPC9oYW5kbGVyPgorCisgICAgPG1ldGhvZCBuYW1lPSJzZW5kQ29uZmlybWF0aW9uIiBhcmdzPSJ5ZXNubyxhc2thZ2FpbiIgPgorICAgICAgICAKKyAgICAgICAgLy8vL0RlYnVnLndyaXRlKCJjbGVhciB5ZXNubyxhc2thZ2FpbjogIix5ZXNubyxhc2thZ2Fpbik7CisgICAgCisgICAgICAgICB2YXIgZyA9IGNhbnZhcy5nZXRVc2VyRGF0YSgpOworICAgICAgICAgaWYgKGdbImltYWdlIl09PW51bGwpIGdbImltYWdlIl09bmV3IEFycmF5KCk7CisgICAgICAgICBnWyJpbWFnZSJdWyJjbGVhckZpZWxkIl09eWVzbm87CisgICAgICAgICBnWyJpbWFnZSJdWyJhc2thZ2FpbmNsZWFyIl09IWFza2FnYWluOworICAgICAgICAgY2FudmFzLnNldFVzZXJEYXRhKGcpOworCisgICAgICAgICBpZiAoeWVzbm8peworICAgICAgICAgICAgLy8vL0RlYnVnLndyaXRlKCJjbGVhciBmaWVsZCEhIik7CisgICAgICAgICAgICBjYW52YXMuX2RyYXdhcmVhLnNldE1vZHVzKCdwbGFpbicpOworICAgICAgICAgICAgY2FudmFzLl9kcmF3YXJlYS5hZGROZXdTeW5jSW1hZ2UodGhpcy5kb3dubG9hZHVybCx0aGlzLmlhbWdleCx0aGlzLmltYWdleSx0aGlzLmJhc2V1cmwsdGhpcy5maWxlTmFtZSx0aGlzLm1vZHVsZU5hbWUsdGhpcy5wYXJlbnRQYXRoLHRoaXMucm9vbSx0aGlzLmRvbWFpbik7CisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8vL0RlYnVnLndyaXRlKCJkb24ndCBjbGVhciBmaWVsZCEhIik7CisgICAgICAgICAgICBjYW52YXMuX2RyYXdhcmVhLmFkZE5ld1N5bmNJbWFnZSh0aGlzLmRvd25sb2FkdXJsLHRoaXMuaWFtZ2V4LHRoaXMuaW1hZ2V5LHRoaXMuYmFzZXVybCx0aGlzLmZpbGVOYW1lLHRoaXMubW9kdWxlTmFtZSx0aGlzLnBhcmVudFBhdGgsdGhpcy5yb29tLHRoaXMuZG9tYWluKTsKKyAgICAgICAgIH0KKyAgICAgICAgIHRoaXMuY29uZmlybWRpYWxvZy5jbG9zZSgpOworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iZ2V0Y29uZmlybWF0aW9uc2NvZGUiPgorICAgICAgICB2YXIgZyA9IGNhbnZhcy5nZXRVc2VyRGF0YSgpOworICAgICAgICBpZiAoZ1siaW1hZ2UiXT09bnVsbCkgeworICAgICAgICAgICAgZ1siaW1hZ2UiXT1uZXcgQXJyYXkoKTsKKyAgICAgICAgICAgIGdbImltYWdlIl1bImNsZWFyRmllbGQiXT1mYWxzZTsKKyAgICAgICAgICAgIGdbImltYWdlIl1bImFza2FnYWluY2xlYXIiXT10cnVlOworICAgICAgICAgICAgY2FudmFzLnNldFVzZXJEYXRhKGcpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBnWyJpbWFnZSJdOworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0icmVzZXREZWZhdWx0Q29uZmlybWF0aW9ucyI+CisgICAgICAgIHZhciBnID0gY2FudmFzLmdldFVzZXJEYXRhKCk7CisgICAgICAgIGlmIChnWyJpbWFnZSJdPT1udWxsKSBnWyJpbWFnZSJdPW5ldyBBcnJheSgpOworICAgICAgICBnWyJpbWFnZSJdWyJjbGVhckZpZWxkIl09ZmFsc2U7CisgICAgICAgIGdbImltYWdlIl1bImFza2FnYWluY2xlYXIiXT10cnVlOworICAgICAgICBjYW52YXMuc2V0VXNlckRhdGEoZyk7CisgICAgPC9tZXRob2Q+ICAgCisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJjbGVhckFyZWFBbmRBZGRJbWFnZSIgYXJncz0iZG93bmxvYWR1cmxWYWwseFZhbCx5VmFsLGJhc2V1cmwsZmlsZU5hbWUsbW9kdWxlTmFtZSxwYXJlbnRQYXRoLHJvb20sZG9tYWluIj4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgIC8vLy9EZWJ1Zy53cml0ZSgiY2xlYXJBcmVhQW5kQWRkSW1hZ2U6ICIsZG93bmxvYWR1cmxWYWwseFZhbCx5VmFsLGJhc2V1cmwsZmlsZU5hbWUsbW9kdWxlTmFtZSxwYXJlbnRQYXRoLHJvb20sZG9tYWluKTsKKyAgICAgICAgdGhpcy5kb3dubG9hZHVybD1kb3dubG9hZHVybFZhbDsKKyAgICAgICAgdGhpcy5pYW1nZXg9eFZhbDsKKyAgICAgICAgdGhpcy5pbWFnZXk9eVZhbDsgICAKKyAgICAgICAgdGhpcy5iYXNldXJsPWJhc2V1cmw7CisgICAgICAgIHRoaXMuZmlsZU5hbWU9ZmlsZU5hbWU7CisgICAgICAgIHRoaXMubW9kdWxlTmFtZT1tb2R1bGVOYW1lOworICAgICAgICB0aGlzLnBhcmVudFBhdGg9cGFyZW50UGF0aDsKKyAgICAgICAgdGhpcy5yb29tPXJvb207CisgICAgICAgIHRoaXMuZG9tYWluPWRvbWFpbjsKKyAgICAgICAgdmFyIHN0b3JlZEltYWdlRGF0ZSA9IHRoaXMuZ2V0Y29uZmlybWF0aW9uc2NvZGUoKTsKKyAgICAgICAgLy8vL0RlYnVnLndyaXRlKCIgZ1tpbWFnZV0gIixzdG9yZWRJbWFnZURhdGUpOworICAgICAgICBpZiAoc3RvcmVkSW1hZ2VEYXRlWyJjbGVhckZpZWxkIl0gJiYgIXN0b3JlZEltYWdlRGF0ZVsiYXNrYWdhaW5jbGVhciJdKXsKKyAgICAgICAgICAgIGNhbnZhcy5fZHJhd2FyZWEuc2V0TW9kdXMoJ3BsYWluJyk7CisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiIGNhbnZhcy5fZHJhd2FyZWEuYWRkTmV3SW1hZ2UgMSAiLHRoaXMuZG93bmxvYWR1cmwsdGhpcy54LHRoaXMueSk7CisgICAgICAgICAgICBjYW52YXMuX2RyYXdhcmVhLmFkZE5ld0ltYWdlKHRoaXMuZG93bmxvYWR1cmwsdGhpcy54LHRoaXMueSx0aGlzLmJhc2V1cmwsdGhpcy5maWxlTmFtZSx0aGlzLm1vZHVsZU5hbWUsdGhpcy5wYXJlbnRQYXRoLHRoaXMucm9vbSx0aGlzLmRvbWFpbik7CisgICAgICAgIH0gZWxzZSBpZiAoIXN0b3JlZEltYWdlRGF0ZVsiYXNrYWdhaW5jbGVhciJdICYmICFzdG9yZWRJbWFnZURhdGVbImNsZWFyRmllbGQiXSl7CisgICAgICAgICAgICBjYW52YXMuX2RyYXdhcmVhLmFkZE5ld0ltYWdlKHRoaXMuZG93bmxvYWR1cmwsdGhpcy54LHRoaXMueSx0aGlzLmJhc2V1cmwsdGhpcy5maWxlTmFtZSx0aGlzLm1vZHVsZU5hbWUsdGhpcy5wYXJlbnRQYXRoLHRoaXMucm9vbSx0aGlzLmRvbWFpbik7CisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiIGNhbnZhcy5fZHJhd2FyZWEuYWRkTmV3SW1hZ2UgMiAiLHRoaXMuZG93bmxvYWR1cmwsdGhpcy54LHRoaXMueSk7CisgICAgICAgIH0gZWxzZSBpZiAoc3RvcmVkSW1hZ2VEYXRlWyJhc2thZ2FpbmNsZWFyIl0peworICAgICAgICAgICAgdGhpcy5jb25maXJtZGlhbG9nID0gbmV3IGx6LmNvbmZpcm1hdGlvbkJveChjYW52YXMubWFpbl9jb250ZW50Ll9jb250ZW50LmlubmVyLHtsYWJlbGlkOjYyLGxhYmVsaWRlcnJvcjo2MyxyZWZPYmo6dGhpc30pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5jb25maXJtZGlhbG9nID0gbmV3IGx6LmNvbmZpcm1hdGlvbkJveChjYW52YXMubWFpbl9jb250ZW50Ll9jb250ZW50LmlubmVyLHtsYWJlbGlkOjYyLGxhYmVsaWRlcnJvcjo2MyxyZWZPYmo6dGhpc30pOworICAgICAgICB9CisgICAgICAgIF1dPiAKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8ZXZlbnQgbmFtZT0iaXNsb2FkaW5nSW1hZ2UiIC8+CisgICAgPGV2ZW50IG5hbWU9ImlzbG9hZGVkSW1hZ2UiIC8+CisgICAgCisgICAgCisgICAgPHRleHQgZm9udHNpemU9IjExIiB4PSIxMCIgeT0iMiIgCisgICAgICAgIG5hbWU9Il9zaGFyaW5nQ2xpZW50TmFtZSIgZm9udHN0eWxlPSJib2xkIiAvPiAgICAKKyAgICAKKyAgICAKKwk8bWV0aG9kIG5hbWU9ImNoZWNrRm9yQXBwbHlTY3JlZW4iPgorCQlsei5Ccm93c2VyLmxvYWRVUkwoY2FudmFzLmdldFNjcmVlblNoYXJpbmdVcmwoKSwgJ19ibGFuaycpOworCTwvbWV0aG9kPiAKKwkKKyAgICA8IS0tIAorICAgICAgICBUaGUgQ29udGVudCBBcmVhICAgIAorICAgICAtLT4KKyAgICA8dmlldyB3aWR0aD0iJHsgcGFyZW50LnBhcmVudC53aWR0aC0yIH0iIAorICAgICAgICAgIGhlaWdodD0iJHsgKGNhbnZhcy5pc21vZGVyYXRvcikgPyAocGFyZW50LnBhcmVudC5oZWlnaHQtNDItcGFyZW50Ll9wcm9wZXJ0eVBhbmVsLmhlaWdodCkgOiAoKGNhbnZhcy5pc0FsbG93ZWRUb0RyYXcpID8gKHBhcmVudC5wYXJlbnQuaGVpZ2h0LTQyLXBhcmVudC5fcHJvcGVydHlQYW5lbC5oZWlnaHQpIDogKHBhcmVudC5wYXJlbnQuaGVpZ2h0LTQyKSkgfSIgCisgICAgICAgICAgeT0iMCIgbmFtZT0iX2RyYXdhcmVhTWFzayIgY2xpcD0idHJ1ZSIgYmdjb2xvcj0iMHhGRkZGRkYiID4KKyAgICAJCisgICAgCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy5pbmZvKCJsei5UcmFjay5yZWdpc3RlciAiLGNhbnZhcy5jdXJyZW50SW1hZ2VzTGlzdGRyYXcuY3VycmVudFRyYWNrR3JvdXBOYW1lKTsKKyAgICAgICAgICAgIGx6LlRyYWNrLnJlZ2lzdGVyKHRoaXMsIGNhbnZhcy5jdXJyZW50SW1hZ2VzTGlzdGRyYXcuY3VycmVudFRyYWNrR3JvdXBOYW1lKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgIAkKKyAgICAJPGhhbmRsZXIgbmFtZT0ib25tb3VzZWRvd24iPgorICAgICAgICAgICAgdGhpcy5fZHJhd2FyZWEub25tb3VzZWRvd25NZXRob2QoKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZXVwIj4KKyAgICAgICAgICAgIHRoaXMuX2RyYXdhcmVhLm9ubW91c2V1cE1ldGhvZCgpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3ZlciI+CisgICAgICAgIAlsei5DdXJzb3IucmVzdG9yZUN1cnNvcigpOworICAgICAgICAJbHouQ3Vyc29yLnNob3dIYW5kQ3Vyc29yKGZhbHNlKTsKKyAgICAgICAgICAgIHRoaXMuX2RyYXdhcmVhLm9ubW91c2VvdmVyTWV0aG9kKCk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdXQiPgorICAgICAgICAJbHouQ3Vyc29yLnNob3dIYW5kQ3Vyc29yKHRydWUpOworICAgICAgICAJbHouQ3Vyc29yLnVubG9jaygpOworICAgICAgICAgICAgdGhpcy5fZHJhd2FyZWEub25tb3VzZW91dE1ldGhvZCgpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNldHJhY2tvdmVyIj4KKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbm1vdXNldHJhY2tvdmVyIik7CisgICAgICAgICAgICBjYW52YXMuY3VycmVudEltYWdlc0xpc3RkcmF3LmN1cnJlbnREcmFnSXRlbS5zZW5kT3Zlckl0ZW0odGhpcyk7CisgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgiYmdjb2xvciIsMHg5M0ZFOTIpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNldHJhY2tvdXQiPgorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9ubW91c2V0cmFja291dCIpOworICAgICAgICAgICAgY2FudmFzLmN1cnJlbnRJbWFnZXNMaXN0ZHJhdy5jdXJyZW50RHJhZ0l0ZW0uc2VuZE91dEl0ZW0odGhpcyk7CisgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgiYmdjb2xvciIsMHhGRkZGRkYpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNldHJhY2t1cCI+CisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib25tb3VzZXRyYWNrdXAiKTsKKyAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJiZ2NvbG9yIiwweEZGRkZGRik7CisgICAgICAgIDwvaGFuZGxlcj4gICAKKyAgICAJCisgICAgCTxyZW1vdGVXaGl0ZWJvYXJkIHk9IjAiIG5hbWU9Il9kcmF3YXJlYSIgaXNSZW1vdGVPSUQ9InRydWUiIGhlaWdodD0iJHtwYXJlbnQuaGVpZ2h0fSIgd2lkdGg9IiR7cGFyZW50LmhlaWdodH0iCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3RyaWN0ZWQ9IiRvbmNleyBwYXJlbnQucGFyZW50LnJlc3RyaWN0ZWQgfSIgPgorICAgIAkJCisgICAgCQk8YXR0cmlidXRlIG5hbWU9InNlbmRVcGRhdGUiIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIi8+CisgICAgCQkKKyAgICAJCTxoYW5kbGVyIG5hbWU9Im9ueCIgYXJncz0ieCI+CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VuZFVwZGF0ZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiIyB4Iix4KTsKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50LnBhcmVudC5zY3JvbGxDb250YWluZXIuY2FsY1Njcm9sbENvbnRlbnQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9ueSIgYXJncz0ieSI+CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuc2VuZFVwZGF0ZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiIyB5Iix5KTsKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50LnBhcmVudC5zY3JvbGxDb250YWluZXIuY2FsY1Njcm9sbENvbnRlbnQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uaGVpZ2h0IiBhcmdzPSJoIj4KKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiIyBoZWlnaHQiLGgpOworICAgICAgICAgICAgICAgIC8vdGhpcy5kcmFnZ2VyLmRyYWdfbWluX3ggPSBwYXJlbnQud2lkdGggLSB3OworICAgICAgICAgICAgICAgIHBhcmVudC5wYXJlbnQuc2Nyb2xsQ29udGFpbmVyLmNhbGNTY3JvbGxDb250ZW50KCk7CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9ud2lkdGgiIGFyZ3M9InciPgorICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCIjIHdpZHRoIix3KTsKKyAgICAgICAgICAgICAgICAvL3RoaXMuZHJhZ2dlci5kcmFnX21pbl95ID0gcGFyZW50LmhlaWdodCAtIGg7CisgICAgICAgICAgICAgICAgcGFyZW50LnBhcmVudC5zY3JvbGxDb250YWluZXIuY2FsY1Njcm9sbENvbnRlbnQoKTsKKyAgICAgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib251cGRhdGVTY2FsZSIgYXJncz0idFJlZiI+CisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIiMgdXBkYXRlU2NhbGUiLHRoaXMuZ2V0RGlzcGxheU9iamVjdCgpLl94c2NhbGUpOworICAgICAgICAgICAgICAgIHBhcmVudC5wYXJlbnQuc2Nyb2xsQ29udGFpbmVyLmNhbGNTY3JvbGxDb250ZW50KCk7CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgCQkKKyAgICAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iaW5pdEgiLz4KKyAgICAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iaW5pdFciLz4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgICAgICAgICAgY2FudmFzLl9kcmF3YXJlYSA9IHRoaXM7IAorICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAgICAgCisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbnByb2dyZXNzIiBhcmdzPSJwZXJjIj4KKyAgICAgICAgICAgICAgICAvL0RlYnVnLndyaXRlKCJvbnByb2dyZXNzOiAiLHBlcmMpOworICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnBhcmVudC5fcHJvZ3Jlc3Muc2V0UHJvZ3Jlc3MocGVyYyk7CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgICAgICA8IS0tCisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNlZG93biIgPgorICAgICAgICAgICAgICAgIC8vRGVidWcud3JpdGUoIm9ucHJvZ3Jlc3M6ICIscGVyYyk7CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgICAgICAgLS0+CisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRyYXdtb2R1cyIgYXJncz0iZCI+CisgICAgICAgICAgICAgICAgdGhpcy5kcmF3bW9kdXMgPSBkOworICAgICAgICAgICAgICAgIC8vY2hhbmdlIEVuYWJsZWQgU3RhdHVzIG9mIFRvb2xiYXIgTWVudSBCdXR0b24KKyAgICAgICAgICAgICAgICBwYXJlbnQucGFyZW50Ll9wcm9wZXJ0eVBhbmVsLmxvYWRQYW5lbEJ5TW9kdXModGhpcyk7CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJzZXROZXdTY3JlZW5Vc2VyTmFtZSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnBhcmVudC5fc2hhcmluZ0NsaWVudE5hbWUuc2V0QXR0cmlidXRlKCd0ZXh0Jyx2YWx1ZSk7CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgICAgICA8IS0tIEBvdmVyd3JpdGUgLS0+CisgICAgICAgICAgICA8bWV0aG9kIG5hbWU9Im9uc2hhcmVkTWVzc2FnZSIgYXJncz0iYWN0aW9uLG9iaiI+CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIiMjIyMjIyBvbnNoYXJlZE1lc3NhZ2UiLGFjdGlvbixvYmopOworICAgIAorICAgICAgICAgICAgICAgIHZhciB0ZW1wU2VuZEFycmF5ID0gbmV3IEFycmF5ICgpOworICAgICAgICAgICAgICAgIHRlbXBTZW5kQXJyYXlbMF0gPSAnd2hpdGVib2FyZCc7CisgICAgICAgICAgICAgICAgdGVtcFNlbmRBcnJheVsxXSA9IG5ldyBEYXRlKCk7CisgICAgICAgICAgICAgICAgdGVtcFNlbmRBcnJheVsyXSA9IGFjdGlvbjsKKyAgICAgICAgICAgICAgICB0ZW1wU2VuZEFycmF5WzNdID0gb2JqOworICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgcGFyZW50LnBhcmVudC5vbnNoYXJlZE1lc3NhZ2Uuc2VuZEV2ZW50KHRlbXBTZW5kQXJyYXkpOworICAgICAgICAgICAgPC9tZXRob2Q+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9ub3BlbldoaXRlQm9hcmQiID4KKyAgICAgICAgICAgICAgICAvL3BhcmVudC5wYXJlbnQuZ2V0Um9vbUl0ZW1zLmRvQ2FsbCgpOworICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAgICAgCisgICAgICAgICAgICA8IS0tIGNsaWVudGlkICA9IHN0cmVhbWlkIG9mIHRoZSB1c2VyIC0tPgorICAgICAgICAgICAgPG1ldGhvZCBuYW1lPSJvbmluaXRVc2VyIiBhcmdzPSJjbGllbnRpZCxvYmplY3RMaXN0Ij4KKyAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5wYXJlbnQuc2VuZE9iamVjdFRvQ2xpZW50SUQgPSBjbGllbnRpZDsKKyAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5wYXJlbnQuc2VuZE9iamVjdCA9IG9iamVjdExpc3Q7CisgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQucGFyZW50LnNlbmRNZXNzYWdlV2l0aENsaWVudEJ5SWQuZG9DYWxsKCk7CisgICAgICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25ib3VuZGluZ0lzQWN0aXZlIiBhcmdzPSJiIj4KKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiYm91bmRpbmdJc0FjdGl2ZTogIixiKTsKKyAgICAgICAgICAgICAgICBpZiAoYil7CisgICAgICAgICAgICAgICAgICAgIHZhciBib3VuZGluZ0RvVXBkYXRlT25Jbml0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuT2JqZWN0QnlOYW1lIGluc3RhbmNlb2YgbHouc3dmUmVzb3VyY2VWaWV3KXsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vRGVidWcud3JpdGUoImlzIHN3ZiBQcmVzZW50YXRpb24iKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJvdW5kaW5nRG9VcGRhdGVPbkluaXQ9ZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKCFib3VuZGluZ0RvVXBkYXRlT25Jbml0KSB7CisgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQucGFyZW50Ll9wcm9wZXJ0eVBhbmVsLnNldE9iamVjdEJvdW5kcygKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLk9iamVjdEJ5TmFtZS54LHRoaXMuT2JqZWN0QnlOYW1lLnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5PYmplY3RCeU5hbWUuX3N3ZlZpZXcud2lkdGgsdGhpcy5PYmplY3RCeU5hbWUuX3N3ZlZpZXcuaGVpZ2h0KTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5wYXJlbnQuX3Byb3BlcnR5UGFuZWwuc2V0T2JqZWN0Qm91bmRzKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuT2JqZWN0QnlOYW1lLngsdGhpcy5PYmplY3RCeU5hbWUueSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLk9iamVjdEJ5TmFtZS53aWR0aCx0aGlzLk9iamVjdEJ5TmFtZS5oZWlnaHQpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAgICAgCisgICAgICAgICAgICA8IS0tICBib3VuZGluZyBCb3ggKHNlbGVjdGlvbiBCb3gpIC0tPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25Cb3VuZGluZ0JveCIgYXJncz0iYm91bmRpbmdCb3hSZWYiPgorICAgICAgICAgICAgICAgIHZhciBib3VuZGluZ0RvVXBkYXRlT25Jbml0ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBpZiAoYm91bmRpbmdCb3hSZWYub2JqUmVmIGluc3RhbmNlb2YgbHouc3dmUmVzb3VyY2VWaWV3KXsKKyAgICAgICAgICAgICAgICAvL0RlYnVnLndyaXRlKCJpcyBzd2YgUHJlc2VudGF0aW9uIik7CisgICAgICAgICAgICAgICAgICAgIGJvdW5kaW5nRG9VcGRhdGVPbkluaXQ9ZmFsc2U7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICghYm91bmRpbmdEb1VwZGF0ZU9uSW5pdCkgeworICAgICAgICAgICAgICAgICAgICBwYXJlbnQucGFyZW50Ll9wcm9wZXJ0eVBhbmVsLnNldE9iamVjdEJvdW5kcygKKyAgICAgICAgICAgICAgICAgICAgYm91bmRpbmdCb3hSZWYub2JqUmVmLngsYm91bmRpbmdCb3hSZWYub2JqUmVmLnksCisgICAgICAgICAgICAgICAgICAgIGJvdW5kaW5nQm94UmVmLm9ialJlZi5fc3dmVmlldy53aWR0aCxib3VuZGluZ0JveFJlZi5vYmpSZWYuX3N3ZlZpZXcuaGVpZ2h0KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBwYXJlbnQucGFyZW50Ll9wcm9wZXJ0eVBhbmVsLnNldE9iamVjdEJvdW5kcygKKyAgICAgICAgICAgICAgICAgICAgYm91bmRpbmdCb3hSZWYub2JqUmVmLngsYm91bmRpbmdCb3hSZWYub2JqUmVmLnksCisgICAgICAgICAgICAgICAgICAgIGJvdW5kaW5nQm94UmVmLm9ialJlZi53aWR0aCxib3VuZGluZ0JveFJlZi5vYmpSZWYuaGVpZ2h0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxtZXRob2QgbmFtZT0iZ2V0RG9jdW1lbnRUb29sQmFyIj4KKyAgICAgICAgICAgICAgICByZXR1cm4gcGFyZW50LnBhcmVudC5wYW5lbEFyZWEuZ2V0RG9jdW1lbnRzVG9vbGJhcigpOworICAgICAgICAgICAgPC9tZXRob2Q+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxtZXRob2QgbmFtZT0iZ2V0UGFpbnRUb29sQmFyIj4KKyAgICAgICAgICAgICAgICByZXR1cm4gcGFyZW50LnBhcmVudC5wYW5lbEFyZWEuX21haW5Ub29sc1BhbmVsOworICAgICAgICAgICAgPC9tZXRob2Q+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDx2aWV3IG5hbWU9Il9ncmlkIiB4PSItMiIgeT0iLTIiIGhlaWdodD0iJHtwYXJlbnQuaGVpZ2h0fSIgd2lkdGg9IiR7cGFyZW50LmhlaWdodH0iIAorICAgICAgICAgICAgICAgICAgdmlzaWJpbGl0eT0iJHsgKHBhcmVudC5zaG93R3JpZCkgPyAndmlzaWJsZScgOiAnaGlkZGVuJ30iLz4KKyAgICAgICAgPC9yZW1vdGVXaGl0ZWJvYXJkPiAgIAorICAgIAkKKyAgICA8L3ZpZXc+CisgICAgCisgICAgCisgICAgPHZpZXcgbmFtZT0ic2Nyb2xsQ29udGFpbmVyIiB3aWR0aD0iJHsgcGFyZW50LnBhcmVudC53aWR0aC0yIH0iIAorICAgICAgICAgIHZpc2libGU9IiR7ICgoY2FudmFzLmlzbW9kZXJhdG9yKSA/IHRydWUgOiAoKGNhbnZhcy5pc0FsbG93ZWRUb0RyYXcpID8gdHJ1ZSA6IGZhbHNlICkpIH0iCisgICAgICAgICAgaGVpZ2h0PSIkeyAoY2FudmFzLmlzbW9kZXJhdG9yKSA/IChwYXJlbnQucGFyZW50LmhlaWdodC00Mi1wYXJlbnQuX3Byb3BlcnR5UGFuZWwuaGVpZ2h0KSA6ICgoY2FudmFzLmlzQWxsb3dlZFRvRHJhdykgPyAocGFyZW50LnBhcmVudC5oZWlnaHQtMzMtcGFyZW50Ll9wcm9wZXJ0eVBhbmVsLmhlaWdodCkgOiAocGFyZW50LnBhcmVudC5oZWlnaHQtMzMpKSB9IiA+CisgICAgICAgIAorICAgICAgICA8YXR0cmlidXRlIG5hbWU9InNlbmRVcGRhdGUiIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIi8+CisgICAgICAgIAorICAgICAgICA8bWV0aG9kIG5hbWU9ImNhbGNTY3JvbGxDb250ZW50Ij4KKyAgICAgICAgICAgIHZhciBySGVpZ2h0ID0gTWF0aC5yb3VuZChwYXJlbnQuX2RyYXdhcmVhTWFzay5fZHJhd2FyZWEuaGVpZ2h0ICogKHBhcmVudC5fZHJhd2FyZWFNYXNrLl9kcmF3YXJlYS5nZXREaXNwbGF5T2JqZWN0KCkuX3hzY2FsZSAvIDEwMCkpOworICAgICAgICAgICAgdmFyIHJXaWR0aCA9IE1hdGgucm91bmQocGFyZW50Ll9kcmF3YXJlYU1hc2suX2RyYXdhcmVhLndpZHRoICogKHBhcmVudC5fZHJhd2FyZWFNYXNrLl9kcmF3YXJlYS5nZXREaXNwbGF5T2JqZWN0KCkuX3lzY2FsZSAvIDEwMCkpOworICAgICAgICAgICAgdGhpcy5zZW5kVXBkYXRlID0gZmFsc2U7CisgICAgICAgICAgICB0aGlzLnNjcm9sbHZpZXcuc2V0QXR0cmlidXRlKCJ4IixwYXJlbnQuX2RyYXdhcmVhTWFzay5fZHJhd2FyZWEueCk7CisgICAgICAgICAgICB0aGlzLnNjcm9sbHZpZXcuc2V0QXR0cmlidXRlKCJ5IixwYXJlbnQuX2RyYXdhcmVhTWFzay5fZHJhd2FyZWEueSk7CisgICAgICAgICAgICB0aGlzLnNjcm9sbHZpZXcuc2V0QXR0cmlidXRlKCJoZWlnaHQiLCBNYXRoLm1heChySGVpZ2h0LCBwYXJlbnQuX2RyYXdhcmVhTWFzay5fZHJhd2FyZWEuZ2V0RGlzcGxheU9iamVjdCgpLl9oZWlnaHQpKTsKKyAgICAgICAgICAgIHRoaXMuc2Nyb2xsdmlldy5zZXRBdHRyaWJ1dGUoIndpZHRoIiwgTWF0aC5tYXgocldpZHRoLCBwYXJlbnQuX2RyYXdhcmVhTWFzay5fZHJhd2FyZWEuZ2V0RGlzcGxheU9iamVjdCgpLl93aWR0aCkpOworICAgICAgICAgICAgdGhpcy5zZW5kVXBkYXRlID0gdHJ1ZTsKKyAgICAgICAgPC9tZXRob2Q+CisgICAgICAgIAorICAgICAgICA8dmlldyBuYW1lPSJzY3JvbGx2aWV3Ij4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJ0aW1laXNJbml0ZWQiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ic2VuZE9iamVjdERlbCIgdmFsdWU9Im51bGwiIC8+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgICAgICAgICAgdGhpcy5zZW5kT2JqZWN0RGVsID0gbmV3IEx6RGVsZWdhdGUoIHRoaXMsICJzZW5kT2JqZWN0IiApOworICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAgICAgCisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbngiIGFyZ3M9IngiPgorICAgICAgICAgICAgICAgIGlmIChwYXJlbnQuc2VuZFVwZGF0ZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiIyBzY3JvbGx2aWV3IHgiLHgpOworICAgICAgICAgICAgICAgICAgICBwYXJlbnQucGFyZW50Ll9kcmF3YXJlYU1hc2suX2RyYXdhcmVhLnNldEF0dHJpYnV0ZSgieCIseCk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMudGltZWlzSW5pdGVkKXsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGltZWlzSW5pdGVkPXRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBsei5UaW1lci5hZGRUaW1lciggdGhpcy5zZW5kT2JqZWN0RGVsLCAyNTAgKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGx6LlRpbWVyLnJlc2V0VGltZXIoIHRoaXMuc2VuZE9iamVjdERlbCwgMjUwICk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbnkiIGFyZ3M9InkiPgorICAgICAgICAgICAgICAgIGlmIChwYXJlbnQuc2VuZFVwZGF0ZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiIyBzY3JvbGx2aWV3IHkiLHkpOworICAgICAgICAgICAgICAgICAgICBwYXJlbnQucGFyZW50Ll9kcmF3YXJlYU1hc2suX2RyYXdhcmVhLnNldEF0dHJpYnV0ZSgieSIseSk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMudGltZWlzSW5pdGVkKXsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGltZWlzSW5pdGVkPXRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBsei5UaW1lci5hZGRUaW1lciggdGhpcy5zZW5kT2JqZWN0RGVsLCAyNTAgKTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGx6LlRpbWVyLnJlc2V0VGltZXIoIHRoaXMuc2VuZE9iamVjdERlbCwgMjUwICk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxtZXRob2QgbmFtZT0ic2VuZE9iamVjdCIgYXJncz0iaXRlbVJlZiI+CisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcuaW5mbygic2VuZE9iamVjdCA6OiBzY3JvbGx2aWV3Iik7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgdmFyIHRBcnJheSA9IG5ldyBBcnJheSgpOworICAgICAgICAgICAgICAgIHRBcnJheVswXSA9ICJtb3ZlTWFwIjsKKyAgICAgICAgICAgICAgICB0QXJyYXlbMV0gPSBNYXRoLnJvdW5kKHRoaXMueCk7CisgICAgICAgICAgICAgICAgdEFycmF5WzJdID0gTWF0aC5yb3VuZCh0aGlzLnkpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnBhcmVudC5fZHJhd2FyZWFNYXNrLl9kcmF3YXJlYS5vbnNoYXJlZE1lc3NhZ2UoJ21vdmVNYXAnLHRBcnJheSk7CisgICAgICAgICAgICAgICAgdGhpcy50aW1laXNJbml0ZWQ9ZmFsc2U7CisgICAgICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgPC92aWV3PgorICAgIAorICAgICAgICA8b21fdnNjcm9sbGJhciBuYW1lPSJfc2Nyb2xsc3R2Ii8+IAorICAgICAgICA8b21faHNjcm9sbGJhciBuYW1lPSJfc2Nyb2xsc3RoIiAvPiAKKyAgICAKKyAgICA8L3ZpZXc+ICAgIAorICAgIAorICAgIAorICAgICAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJzZW5kTWVzc2FnZVdpdGhDbGllbnRCeUlkIiBmdW5jbmFtZT0ic2VuZE1lc3NhZ2VXaXRoQ2xpZW50QnlJZCIKKyAgICAgICAgICAgIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiA+CisgICAgICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQuc2VuZE9iamVjdDs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50LnNlbmRPYmplY3RUb0NsaWVudElEOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICAgICAgLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZSB0aGUgcnRtcGNvbm5lY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgLy9EZWJ1Zy53cml0ZSgic2VuZE1lc3NhZ2VXaXRoQ2xpZW50QnlJZCA6ICIsdmFsdWUpOworICAgICAgICAgICAgICAgIF1dPgorICAgICAgICAgICAgPC9oYW5kbGVyPiAgIAorICAgICAgICA8L25ldFJlbW90ZUNhbGxIaWI+ICAgICAKKyAgICAKKyAgICA8dmlldyBuYW1lPSJwYW5lbEFyZWEiIHdpZHRoPSIkeyBwYXJlbnQucGFyZW50LndpZHRoIH0iIAorICAgICAgICAgIGhlaWdodD0iJHsgcGFyZW50LnBhcmVudC5oZWlnaHQtNDItcGFyZW50Ll9wcm9wZXJ0eVBhbmVsLmhlaWdodCB9Ij4KKyAgICAgICAgCisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ib2JqZWN0UmVmIiB2YWx1ZT0ibnVsbCIgLz4KKyAgICAgICAgCisgICAgICAgIDwhLS0tIEBkZXByZWNhdGVkIC0tPgorICAgICAgICA8bWV0aG9kIG5hbWU9Il9zZXRTZWxlY3Rpb24iIGFyZ3M9Im9iaiI+CisgICAgICAgICAgICBwYXJlbnQuX2RyYXdhcmVhTWFzay5fZHJhd2FyZWEucmVtb3ZlT2JqZWN0Qm91bmRzKCk7CisgICAgICAgICAgICBpZiAob2JqLnNldFNlbGVjdGlvblRvSXRlbSl7ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKHRoaXMub2JqZWN0UmVmIT1udWxsKXsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5vYmplY3RSZWYuX2lzc2VsZWN0ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5vYmplY3RSZWYuX2FyZWEuc2V0QXR0cmlidXRlKCdiZ2NvbG9yJywweEZGRkZGRik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHRoaXMub2JqZWN0UmVmID0gb2JqOworICAgICAgICAgICAgICAgIHRoaXMub2JqZWN0UmVmLl9pc3NlbGVjdGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB0aGlzLm9iamVjdFJlZi5fYXJlYS5zZXRBdHRyaWJ1dGUoJ2JnY29sb3InLGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdiYXNlYmdjb2xvcml6ZXInKSk7CisgICAgICAgICAgICAgICAgcGFyZW50Ll9kcmF3YXJlYU1hc2suX2RyYXdhcmVhLnNldE1vZHVzKHRoaXMub2JqZWN0UmVmLm1vZGkpOworICAgICAgICAgICAgfQorICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgCisgICAgICAgIDxtZXRob2QgbmFtZT0ic2V0U2VsZWN0aW9uIiBhcmdzPSJvYmoiPgorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInNldFNlbGVjdGlvbiAiLG9iaik7CisgICAgICAgICAgICBwYXJlbnQuX2RyYXdhcmVhTWFzay5fZHJhd2FyZWEucmVtb3ZlT2JqZWN0Qm91bmRzKCk7CisgICAgICAgICAgICBpZiAob2JqLnNldFNlbGVjdGlvblRvSXRlbSl7ICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKHRoaXMub2JqZWN0UmVmIT1udWxsKXsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5vYmplY3RSZWYuX2lzc2VsZWN0ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5vYmplY3RSZWYuc2V0QXR0cmlidXRlKCdlbmFibGVkJyx0cnVlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdGhpcy5vYmplY3RSZWYgPSBvYmo7CisgICAgICAgICAgICAgICAgdGhpcy5vYmplY3RSZWYuX2lzc2VsZWN0ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIHRoaXMub2JqZWN0UmVmLnNldEF0dHJpYnV0ZSgnZW5hYmxlZCcsZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG9iai5tb2RpPT0ic2F2ZW9iaiIpeworICAgICAgICAgICAgICAgIHBhcmVudC5fZHJhd2FyZWFNYXNrLl9kcmF3YXJlYS5kb0FjdGlvbihvYmoubW9kaSk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHBhcmVudC5fZHJhd2FyZWFNYXNrLl9kcmF3YXJlYS5zZXRNb2R1cyhvYmoubW9kaSk7CisgICAgICAgICAgICB9CisgICAgICAgIDwvbWV0aG9kPgorICAgICAgICAKKyAgICAgICAgPG1ldGhvZCBuYW1lPSJzZXRTZWxlY3Rpb25XaXRob3V0RXZlbnQiIGFyZ3M9Im9iaiI+CisgICAgICAgICAgICBpZiAob2JqLnNldFNlbGVjdGlvblRvSXRlbSl7ICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKHRoaXMub2JqZWN0UmVmIT1udWxsKXsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5vYmplY3RSZWYuX2lzc2VsZWN0ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5vYmplY3RSZWYuc2V0QXR0cmlidXRlKCdlbmFibGVkJyx0cnVlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdGhpcy5vYmplY3RSZWYgPSBvYmo7CisgICAgICAgICAgICAgICAgdGhpcy5vYmplY3RSZWYuX2lzc2VsZWN0ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIHRoaXMub2JqZWN0UmVmLnNldEF0dHJpYnV0ZSgnZW5hYmxlZCcsZmFsc2UpOworICAgICAgICAgICAgfQorICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgCisgICAgICAgIDwhLS0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAtLT4KKyAgICAgICAgIAorICAgICAgICA8bWV0aG9kIG5hbWU9InNlbmROZXdQcm9wZXJ0eUhlaWdodCIgYXJncz0ib2JqUmVmIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPHRoaXMuc3Vidmlld3MubGVuZ3RoO2krKykgeworICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zdWJ2aWV3c1tpXS55ICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN1YnZpZXdzW2ldIGluc3RhbmNlb2YgbHoubWFpblRvb2xzVG9wUGFuZWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8fCB0aGlzLnN1YnZpZXdzW2ldIGluc3RhbmNlb2YgbHouZG9jdW1lbnRJY29uVG9wUGFuZWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAob2JqUmVmLmhlaWdodDw9MjIpeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zdWJ2aWV3c1tpXS55K3RoaXMuc3Vidmlld3NbaV0uaGVpZ2h0KzU+PXBhcmVudC5wYXJlbnQuaGVpZ2h0LW9ialJlZi5pbml0aGVpZ2h0LTIxKXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJtYWluVG9vbHNUb3BQYW5lbCIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJ2aWV3c1tpXS5zZXRBdHRyaWJ1dGUoJ3knLG9ialJlZi55LXRoaXMuc3Vidmlld3NbaV0uaGVpZ2h0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnN1YnZpZXdzW2ldLnkrdGhpcy5zdWJ2aWV3c1tpXS5oZWlnaHQrNT49b2JqUmVmLnkpeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm1haW5Ub29sc1RvcFBhbmVsIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN1YnZpZXdzW2ldLnNldEF0dHJpYnV0ZSgneScsb2JqUmVmLnktdGhpcy5zdWJ2aWV3c1tpXS5oZWlnaHQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfSAgIAorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXV0+CisgICAgICAgIDwvbWV0aG9kPgorICAgICAgICAKKyAgICAgICAgPG1ldGhvZCBuYW1lPSJnZXREb2N1bWVudHNUb29sYmFyIj4KKyAgICAgICAgICAgIHJldHVybiBwYXJlbnQuX3Byb3BlcnR5UGFuZWwuX2NvbnRlbnQuX2RvY3VtZW50c1BhbmVsOworICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgCisgICAgICAgIDxtYWluVG9vbHNUb3BQYW5lbCB4PSIxMDAiIHk9IjAiIG5hbWU9Il9tYWluVG9vbHNQYW5lbCIgCisgICAgICAgICAgICAgdmlzaWJsZT0iJHsgKChjYW52YXMuaXNtb2RlcmF0b3IpID8gdHJ1ZSA6ICgoY2FudmFzLmlzQWxsb3dlZFRvRHJhdykgPyB0cnVlIDogZmFsc2UgKSkgfSIvPgorICAgICAgICAKKyAgICAgICAgPG1haW5Ub29sc0xlZnRQYW5lbFBvaW50ZXIgeT0iMjAiIG5hbWU9Il9tYWluVG9vbHNMZWZ0UGFuZWxQb2ludGVyIiAKKyAgICAgICAgICAgICB2aXNpYmxlPSIkeyAocGFyZW50LnBhcmVudC5yZXN0cmljdGVkKSA/IGZhbHNlIDogKCgoY2FudmFzLmlzbW9kZXJhdG9yKSA/IGZhbHNlIDogKChjYW52YXMuaXNBbGxvd2VkVG9EcmF3KSA/IGZhbHNlIDogdHJ1ZSApKSkgfSIvPgorICAgIDwvdmlldz4gCisgICAgCisgICAgPHZpZXcgbmFtZT0iem9vbWJveCIgeT0iMCIgeD0iJHsgcGFyZW50LnBhcmVudC53aWR0aC10aGlzLndpZHRoLTE0IH0iIGxheW91dD0iYXhpczp4O3NwYWNpbmc6MiIKKyAgICAgICAgICB2aXNpYmxlPSIkeyAoKGNhbnZhcy5pc21vZGVyYXRvcikgPyB0cnVlIDogKChjYW52YXMuaXNBbGxvd2VkVG9EcmF3KSA/IHRydWUgOiBmYWxzZSApKSB9Ij4KKyAgICAgICAgCisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iaWdub3JlVXBkYXRlcyIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorICAgICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib254IiBhcmdzPSJ4Ij4KKyAgICAgICAgCWlmICh0aGlzLl9mdWxsRml0LmdldFZhbHVlKCkpIHsKKyAgICAgICAgCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib24geCAiLHgpOworICAgICAgICAJCWx6LlRpbWVyLmFkZFRpbWVyKCBuZXcgTHpEZWxlZ2F0ZSggdGhpcywgInNlbmRVcGRhdGUiICksIDEwMCApOworICAgICAgICAJfQorICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIAorICAgICAgICA8bWV0aG9kIG5hbWU9InNlbmRVcGRhdGUiIGFyZ3M9InJlZk9iaiI+CisgICAgICAgIAlwYXJlbnQuX2RyYXdhcmVhTWFzay5fZHJhd2FyZWEuZG9GdWxsRml0KHRydWUpOworICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgCisgICAgICAgIDxtZXRob2QgbmFtZT0ic2V0V2hpdGVib2FyZFZhbHVlcyIgYXJncz0iZnVsbEZpdCx6b29tIj4KKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzZXRXaGl0ZWJvYXJkVmFsdWVzIC0xLSAiLGZ1bGxGaXQsem9vbSk7CisgICAgICAgICAgICB0aGlzLmlnbm9yZVVwZGF0ZXMgPSB0cnVlOworICAgICAgICAgICAgdGhpcy5fem9vbS5zZXRTbGlkZXJWYWx1ZSh6b29tKTsKKyAgICAgICAgICAgIHRoaXMuX2Z1bGxGaXQuc2V0VmFsdWUoZnVsbEZpdCk7CisgICAgICAgICAgICB0aGlzLmlnbm9yZVVwZGF0ZXMgPSBmYWxzZTsKKyAgICAgICAgPC9tZXRob2Q+CisgICAgICAgIAorICAgICAgICA8bWV0aG9kIG5hbWU9InNldEN1cnJlbnRTY2FsZUJ5RnVsbEZpdCIgYXJncz0idFNjYWxlIj4KKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzZXRDdXJyZW50U2NhbGVCeUZ1bGxGaXQgLTItICIsdFNjYWxlKTsKKyAgICAgICAgICAgIHRoaXMuaWdub3JlVXBkYXRlcyA9IHRydWU7CisgICAgICAgICAgICB0aGlzLl96b29tLnNldFNsaWRlclZhbHVlKHRTY2FsZSk7CisgICAgICAgICAgICB0aGlzLmlnbm9yZVVwZGF0ZXMgPSBmYWxzZTsKKyAgICAgICAgPC9tZXRob2Q+CisgICAgICAgIAorICAgICAgICA8bGFiZWxDaGVja2JveCB4PSIzNDQiIG5hbWU9Il9mdWxsRml0IiBsYWJlbGlkPSI4NDciIHk9IjQiIGZvbnRzdHlsZT0iYm9sZCIgYmdjb2xvcj0iMHhGRkZGRkYiID4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9udmFsdWUiIGFyZ3M9InYiPgorICAgICAgICAgICAgICAgIGlmIChwYXJlbnQuaWdub3JlVXBkYXRlcykgeworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndhcm4oIm9udmFsdWUgRnVsbCBGaXQgIix2KTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBwYXJlbnQucGFyZW50Ll9kcmF3YXJlYU1hc2suX2RyYXdhcmVhLmRvVXBkYXRlRnVsbEZpdCh2LHBhcmVudC5fem9vbS5pbml0aWFsTnVtYmVyKTsKKyAgICAgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgICAgIDxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iMTIxMiIgbXVsdGlsaW5lPSJ0cnVlIiAvPgorICAgICAgICA8L2xhYmVsQ2hlY2tib3g+CisgICAgICAgIAorICAgICAgICA8Y2hhbmdlV2lkdGhTbGlkZXIgbmFtZT0iX3pvb20iIGluaXRpYWxOdW1iZXJJbml0PSI1MCIgCisgICAgICAgICAgICAgIGJveFBvc2l0aW9uPSJkb3duIiBpbml0aWFsTnVtYmVyPSI1MCIgbWF4aW11bT0iMjAwIj4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdGlhbE51bWJlciIgYXJncz0iaSI+CisgICAgICAgICAgICAgICAgaWYgKHBhcmVudC5pZ25vcmVVcGRhdGVzKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud2Fybigib252YWx1ZSBab29tIEZpdCAiLHRoaXMuaW5pdGlhbE51bWJlcik7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgcGFyZW50Ll9mdWxsRml0LnNldFZhbHVlKGZhbHNlKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBwYXJlbnQucGFyZW50Ll9kcmF3YXJlYU1hc2suX2RyYXdhcmVhLmRvVXBkYXRlWm9vbShwYXJlbnQuX2Z1bGxGaXQuZ2V0VmFsdWUoKSx0aGlzLmluaXRpYWxOdW1iZXIpOworICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8L2NoYW5nZVdpZHRoU2xpZGVyPgorICAgICAgICAKKyAgICAgICAgPHZpZXcgd2lkdGg9IjIiIC8+CisgICAgICAgIAorICAgIDwvdmlldz4gICAgCisgICAgCisgICAgPHByb3BlcnR5UGFuZWwgbmFtZT0iX3Byb3BlcnR5UGFuZWwiIHg9IjAiIHk9IiR7IHBhcmVudC5wYXJlbnQuaGVpZ2h0LXRoaXMuaGVpZ2h0LTQyIH0iIAorICAgICAgICAgICAgICAgICAgICB2aXNpYmxlPSIkeyAoKGNhbnZhcy5pc21vZGVyYXRvcikgPyB0cnVlIDogKChjYW52YXMuaXNBbGxvd2VkVG9EcmF3KSA/IHRydWUgOiBmYWxzZSApKSB9Ij4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25oZWlnaHQiIGFyZ3M9ImgiPgorICAgICAgICAgICAgdGhpcy5oZWlnaHQgPSBoOworICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9uaGVpZ2h0OiAiLGgpOworICAgICAgICAgICAgcGFyZW50LnBhbmVsQXJlYS5zZW5kTmV3UHJvcGVydHlIZWlnaHQodGhpcyk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICA8L3Byb3BlcnR5UGFuZWw+Cis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9maXhlZEZpbGVFeHBsb3JlcldoaXRlYm9hcmRQYW5lbC5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9maXhlZEZpbGVFeHBsb3JlcldoaXRlYm9hcmRQYW5lbC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTkzNDFlZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL2ZpeGVkRmlsZUV4cGxvcmVyV2hpdGVib2FyZFBhbmVsLmx6eApAQCAtMCwwICsxLDM0OCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9Im11bHRpV2hpdGVib2FyZFBhbmVsIiBleHRlbmRzPSJmaXhlZEZpbGVFeHBsb3JlcldoaXRlQm9hcmQiIHk9IjQyIiB4PSIxIj4KKwkKKwk8YXR0cmlidXRlIG5hbWU9IndoaXRlYm9hcmRJZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKwk8YXR0cmlidXRlIG5hbWU9Im9ialdoaXRlYm9hcmQiIHZhbHVlPSJudWxsIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0ib2JqTWVzc2FnZSIgdmFsdWU9Im51bGwiIC8+CisJCisgICAgPGhhbmRsZXIgbmFtZT0ib25zaGFyZWRNZXNzYWdlIiBhcmdzPSJvYmoiPgorICAgICAgICAvL0RlYnVnLndyaXRlKCJzZW5kOiAiLG9iaik7CisgICAgICAgIHRoaXMub2JqV2hpdGVib2FyZCA9IG9iajsKKyAgICAgICAgdGhpcy5zZW5kVmFyc0J5V2hpdGVib2FyZElkLmRvQ2FsbCgpOworICAgIDwvaGFuZGxlcj4KKyAgICAKKyAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJzZW5kVmFyc0J5V2hpdGVib2FyZElkIiBmdW5jbmFtZT0ic2VuZFZhcnNCeVdoaXRlYm9hcmRJZCIgCisgICAgCQkJCSAgCXNob3dMb2FkaW5nPSJmYWxzZSIgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50Lm9ialdoaXRlYm9hcmQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50LndoaXRlYm9hcmRJZDs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIC8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisgICAgICAgICAgICAJLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2VuZFZhcnNCeVdoaXRlYm9hcmRJZCA6ICIsdmFsdWUpOworICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4gICAKKyAgICA8L25ldFJlbW90ZUNhbGxIaWI+ICAgICAKKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbnZpc2libGUiIGFyZ3M9InYiPgorICAgIAk8IVtDREFUQVsKKwkgICAgCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbnZpc2libGUgOjogIix2KTsKKyAgICAJXV0+CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0ic2VuZEFjdGl2ZVdpbmRvdyI+CisgICAgCWlmICgkZGVidWcpIERlYnVnLndhcm4oInNlbmRBY3RpdmVXaW5kb3cgOjogIik7CisgICAgCWlmIChjYW52YXMuaXNtb2RlcmF0b3IgfHwgY2FudmFzLmlzQWxsb3dlZFRvRHJhdykgeworICAgIAkJaWYgKCRkZWJ1ZykgRGVidWcud2FybigiRE8gc2VuZEFjdGl2ZVdpbmRvdyA6OiAiKTsKKyAgICAJCWNhbnZhcy5fZHJhd2FyZWEgPSB0aGlzLl9kcmF3YXJlYU1hc2suX2RyYXdhcmVhOworICAgIAkJdGhpcy5vYmpNZXNzYWdlID0gbmV3IEFycmF5KCk7CisgICAgCQl0aGlzLm9iak1lc3NhZ2VbMF0gPSAiYWN0aXZhdGVXaGl0ZWJvYXJkIjsKKyAgICAJCXRoaXMub2JqTWVzc2FnZVsxXSA9IHRoaXMud2hpdGVib2FyZElkOworICAgIAkJdGhpcy5zZW5kTWVzc2FnZVRvTWVtYmVycy5kb0NhbGwoKTsKKyAgICAJfQorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9InNlbmRNZXNzYWdlVG9NZW1iZXJzIiBmdW5jbmFtZT0ic2VuZE1lc3NhZ2VUb01lbWJlcnMiIAorICAgIAkJCQkgIAlzaG93TG9hZGluZz0iZmFsc2UiIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiA+CisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC5vYmpNZXNzYWdlOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorICAgICAgICAgICAgCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzZW5kTWVzc2FnZVRvTWVtYmVycyA6OiAiLHZhbHVlKTsKKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+ICAgCisgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAKKyAgICAKKzwvY2xhc3M+CisgICAgCis8Y2xhc3MgbmFtZT0iZml4ZWRGaWxlRXhwbG9yZXJXaGl0ZWJvYXJkUGFuZWwiIGV4dGVuZHM9ImJhc2VQcm9wZXJ0eVBhbmVsV2hpdGVib2FyZCIgYWxsb3dUb2dnbGU9ImZhbHNlIgorCSAgIGxhYmVsaWQ9IjYxNSIgdmlzaWJsZT0iJHsoKGNhbnZhcy5jdXJyZW50Um9vbU9iai5oaWRlV2hpdGVib2FyZCkgPyBmYWxzZTp0cnVlKX0iPgorCTxhdHRyaWJ1dGUgbmFtZT0id2hpdGVib2FyZENvdW50IiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgkKKwk8IS0tCisJCisJIC0tPgorCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisJCWNhbnZhcy5fZHJhd2FyZWEgPSB0aGlzOworCTwvaGFuZGxlcj4KKwkKKwk8aGFuZGxlciBuYW1lPSJvbm9wZW5XaGl0ZUJvYXJkIiA+CisgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCIuLiBvbm9wZW5XaGl0ZUJvYXJkIC4uIik7CisgICAgICAgIHRoaXMubG9hZEluaXRPYmplY3QoKQorICAgIDwvaGFuZGxlcj4KKyAgICAgICAgICAgIAorICAgIDwhLS0KKyAgICAJIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgICAgCUFkZCwgcmVtb3ZlIGFuZCBjaGFuZ2UgRm9jdXMgb2YgV2hpdGVib2FyZAorICAgIAkjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAgICAgLS0+CisgICAgIAorICAgIDxtZXRob2QgbmFtZT0iYWRkTmV3SXRlbSI+CisgICAgCXRoaXMuZ2V0TmV3V2hpdGVib2FyZElkLmRvQ2FsbCgpOworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDwhLS0KKyAgICBwdWJsaWMgTG9uZyBnZXROZXdXaGl0ZWJvYXJkSWQoKSB7CisgICAgIC0tPgorICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImdldE5ld1doaXRlYm9hcmRJZCIgZnVuY25hbWU9IndoaXRlYm9hcmRzZXJ2aWNlLmdldE5ld1doaXRlYm9hcmRJZCIKKyAgICAgICAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCIjIyMjIyMjIyMjIyMjIyBnZXROZXdXaGl0ZWJvYXJkSWQgOiAiLHZhbHVlKTsKKyAgICAgICAgICAgICAgICBwYXJlbnQuYWRkTmV3SXRlbVN5bmNlZCh2YWx1ZSk7CisgICAgICAgICAgICAgICAgcGFyZW50LnNlbmROZXdXaW5kb3codmFsdWUpOworICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4gICAKKyAgICA8L25ldFJlbW90ZUNhbGxIaWI+ICAgICAgIAorICAgIAorICAgIDxtZXRob2QgbmFtZT0iYWRkTmV3SXRlbVN5bmNlZCIgYXJncz0id2hpdGVib2FyZElkIj4KKyAgICAJZm9yICh2YXIgZWcgaW4gdGhpcy5fYmFyLnN1YnZpZXdzKSB7CisgICAgCQl0aGlzLl9iYXIuc3Vidmlld3NbZWddLmlzYWN0aXZlID0gZmFsc2U7CisgICAgCQl0aGlzLl9iYXIuc3Vidmlld3NbZWddLm9ubW91c2VvdXQuc2VuZEV2ZW50KG51bGwpOworICAgIAkJdGhpcy5fYmFyLnN1YnZpZXdzW2VnXS5vYmpSZWYuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgCX0KKyAgICAJCisgICAgCXZhciB3aGl0ZWJvYXJkID0gbmV3IGx6Lm11bHRpV2hpdGVib2FyZFBhbmVsKHRoaXMseworCQkJCQkJCQkgICAgCQl3aGl0ZWJvYXJkSWQ6d2hpdGVib2FyZElkCisJCQkJCQkJCSAgICAJfSk7CisgICAgCXZhciB0ZW1wV2lkdGggPSB0aGlzLl9iYXIuZ2V0Q3VycmVudFNpemUoKTsKKyAgICAJCisgICAgCXZhciB3aGl0ZWJvYXJkTmFtZSA9IGNhbnZhcy5nZXRMYWJlbE5hbWUoNjE1KSArICh3aGl0ZWJvYXJkQ291bnQgPiAwID8gIiAiICsgd2hpdGVib2FyZENvdW50IDogIiIpOworICAgIAl3aGl0ZWJvYXJkQ291bnQrKzsKKyAgICAJdmFyIHRXaGl0ZWJvYXJkQnRuID0gbmV3IGx6LndoaXRlYm9hcmRNaW5pQnV0dG9uKHRoaXMuX2Jhcix7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCSAgIG9ialJlZjp3aGl0ZWJvYXJkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkgICB3aWR0aDp0ZW1wV2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCSAgIGlzYWN0aXZlOnRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCSAgIGJ0bk5hbWU6IHdoaXRlYm9hcmROYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCX0pOworICAgICAgICAKKyAgICAgICAgdGhpcy5fYmFyLmN1cnJlbnRCdG4gPSB0V2hpdGVib2FyZEJ0bjsgICAgICAgICAgICAgICAgICAgIAkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAJCisgICAgCXRXaGl0ZWJvYXJkQnRuLm9ubW91c2VvdXQuc2VuZEV2ZW50KG51bGwpOworICAgICAgICB0aGlzLmFkZE5ld0l0ZW1CdXR0b24udXBkYXRlUG9zaXRpb24oKTsKKyAgICAgICAgY2FudmFzLndoaXRlYm9hcmRDb3VudCsrOworICAgICAgICByZXR1cm4gd2hpdGVib2FyZDsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InNlbmROZXdXaW5kb3ciIGFyZ3M9IndoaXRlYm9hcmRJZCI+CisgICAgCWlmICgkZGVidWcpIERlYnVnLndhcm4oInNlbmROZXdXaW5kb3cgOjogIik7CisgICAgCWlmIChjYW52YXMuaXNtb2RlcmF0b3IgfHwgY2FudmFzLmlzQWxsb3dlZFRvRHJhdykgeworICAgIAkJaWYgKCRkZWJ1ZykgRGVidWcud2FybigiRE8gc2VuZEFjdGl2ZVdpbmRvdyA6OiAiKTsKKyAgICAJCXRoaXMub2JqTWVzc2FnZSA9IG5ldyBBcnJheSgpOworICAgIAkJdGhpcy5vYmpNZXNzYWdlWzBdID0gIm5ld1doaXRlYm9hcmQiOworICAgIAkJdGhpcy5vYmpNZXNzYWdlWzFdID0gd2hpdGVib2FyZElkOworICAgIAkJdGhpcy5zZW5kTWVzc2FnZVRvTWVtYmVycy5kb0NhbGwoKTsKKyAgICAJfQorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0ibmV3V2hpdGVib2FyZCIgYXJncz0ib2JqIj4KKyAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm5ld1doaXRlYm9hcmQgOjogIixvYmopOworICAgIAl0aGlzLmFkZE5ld0l0ZW1TeW5jZWQob2JqWzFdKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICAKKyAgICA8IS0tCisgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICAgICAgICBSZW1vdmFsIG9mIFdoaXRlYm9hcmRzCisgICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICAgICAtLT4KKyAgICA8bWV0aG9kIG5hbWU9InNlbmRSZW1vdmVXaW5kb3ciIGFyZ3M9IndoaXRlYm9hcmRJZCI+CisgICAgCWlmICgkZGVidWcpIERlYnVnLndhcm4oInNlbmRSZW1vdmVXaW5kb3cgOjogIik7CisgICAgCWlmIChjYW52YXMuaXNtb2RlcmF0b3IgfHwgY2FudmFzLmlzQWxsb3dlZFRvRHJhdykgeworICAgIAkJdGhpcy5kZWxldGVXaGl0ZWJvYXJkLndoaXRlYm9hcmRJZCA9IHdoaXRlYm9hcmRJZDsKKyAgICAJCXRoaXMuZGVsZXRlV2hpdGVib2FyZC5kb0NhbGwoKTsKKyAgICAJCWlmICgkZGVidWcpIERlYnVnLndhcm4oIkRPIHNlbmRSZW1vdmVXaW5kb3cgOjogIik7CisgICAgCQl0aGlzLm9iak1lc3NhZ2UgPSBuZXcgQXJyYXkoKTsKKyAgICAJCXRoaXMub2JqTWVzc2FnZVswXSA9ICJyZW1vdmVXaW5kb3ciOworICAgIAkJdGhpcy5vYmpNZXNzYWdlWzFdID0gd2hpdGVib2FyZElkOworICAgIAkJdGhpcy5zZW5kTWVzc2FnZVRvTWVtYmVycy5kb0NhbGwoKTsKKyAgICAJCWNhbnZhcy53aGl0ZWJvYXJkQ291bnQtLTsKKyAgICAJfQorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDwhLS0KKyAgICBwdWJsaWMgQm9vbGVhbiBkZWxldGVXaGl0ZWJvYXJkKExvbmcgd2hpdGVCb2FyZElkKQorICAgICAtLT4KKyAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJkZWxldGVXaGl0ZWJvYXJkIiBmdW5jbmFtZT0id2hpdGVib2FyZHNlcnZpY2UuZGVsZXRlV2hpdGVib2FyZCIKKyAgICAgICAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4KKyAgICAJPGF0dHJpYnV0ZSBuYW1lPSJ3aGl0ZWJvYXJkSWQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LndoaXRlYm9hcmRJZDs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIC8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIiMjIyMjIyMjIyMjIyMjIGRlbGV0ZVdoaXRlYm9hcmQgOiAiLCB2YWx1ZSk7CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPiAgIAorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4gICAgICAgCisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJyZW1vdmVXaW5kb3ciIGFyZ3M9Im9iaiI+CisgICAgCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJyZW1vdmVXaW5kb3cgOjogIixvYmopOworICAgIAlmb3IgKHZhciBlZyBpbiB0aGlzLl9iYXIuc3Vidmlld3MpIHsKKyAgICAJCQorICAgIAkJaWYgKHRoaXMuX2Jhci5zdWJ2aWV3c1tlZ10ub2JqUmVmLndoaXRlYm9hcmRJZCA9PSBvYmpbMV0pIHsKKyAgICAJCQkKKyAgICAJCQl0aGlzLl9iYXIucmVtb3ZlT2JqZWN0U3luY2VkKHRoaXMuX2Jhci5zdWJ2aWV3c1tlZ10pOworICAgIAkJCXJldHVybjsKKyAgICAJCQkKKyAgICAJCX0KKyAgICAJCQorICAgIAl9CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0ic2VuZE1lc3NhZ2VUb01lbWJlcnMiIGZ1bmNuYW1lPSJzZW5kTWVzc2FnZVRvTWVtYmVycyIgCisgICAgCQkJCSAgCXNob3dMb2FkaW5nPSJmYWxzZSIgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50Lm9iak1lc3NhZ2U7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIC8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisgICAgICAgICAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInNlbmRNZXNzYWdlVG9NZW1iZXJzIDo6ICIsdmFsdWUpOworICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4gICAKKyAgICA8L25ldFJlbW90ZUNhbGxIaWI+ICAgICAKKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InNlbmRXYXRjaE9iamVjdEJ5V2hpdGVib2FyZCIgYXJncz0ib2JqIj4KKyAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInNlbmRXYXRjaE9iamVjdEJ5V2hpdGVib2FyZCA6OiAiLG9iaik7CisgICAgCWZvciAodmFyIGVnIGluIHRoaXMuc3Vidmlld3MpIHsKKyAgICAJCWlmIChvYmouaWQgPT0gdGhpcy5zdWJ2aWV3c1tlZ10ud2hpdGVib2FyZElkKSB7CisgICAgCQkJdGhpcy5zdWJ2aWV3c1tlZ10uX2RyYXdhcmVhTWFzay5fZHJhd2FyZWEuc2VuZFdhdGNoT2JqZWN0KG9iai5wYXJhbVsyXSxvYmoucGFyYW1bM10sZmFsc2UpOworICAgIAkJCXJldHVybjsKKyAgICAJCX0KKyAgICAJfQorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0ibG9hZFdtbFRvV2hpdGVib2FyZEJ5SWQiIGFyZ3M9Im9iaiI+CisgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJsb2FkV21sVG9XaGl0ZWJvYXJkQnlJZCA6OiAiLG9iaik7CisgICAgICAgIGZvciAodmFyIGVnIGluIHRoaXMuc3Vidmlld3MpIHsKKyAgICAgICAgICAgIGlmIChvYmouaWQgPT0gdGhpcy5zdWJ2aWV3c1tlZ10ud2hpdGVib2FyZElkKSB7CisgICAgICAgICAgICAgICAgdGhpcy5zdWJ2aWV3c1tlZ10uX2RyYXdhcmVhTWFzay5fZHJhd2FyZWEubG9hZFdtbFRvV2hpdGVib2FyZEJ5SWQob2JqLnJvb21pdGVtcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJhY3RpdmF0ZVdoaXRlYm9hcmQiIGFyZ3M9Im9iaiI+CisgICAgCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJhY3RpdmF0ZVdoaXRlYm9hcmQgOjogIixvYmopOworICAgIAlmb3IgKHZhciBlZyBpbiB0aGlzLl9iYXIuc3Vidmlld3MpIHsKKyAgICAJCQorICAgIAkJaWYgKHRoaXMuX2Jhci5zdWJ2aWV3c1tlZ10ub2JqUmVmLndoaXRlYm9hcmRJZCA9PSBvYmpbMV0pIHsKKyAgICAJCQkKKyAgICAJCQl0aGlzLl9iYXIuc3Vidmlld3NbZWddLmFjdGl2YXRlU3luY2VkKCk7CisgICAgCQkJcmV0dXJuOworICAgIAkJCQorICAgIAkJfQorICAgIAkJCisgICAgCX0KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8IS0tCisgICAgCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICAgIAlTdGFyVXAgTG9hZGluZyBPZiBPYmplY3RzCisgICAgCSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworICAgICAtLT4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImxvYWRJbml0T2JqZWN0Ij4KKyAgICAJdGhpcy5nZXRSb29tSXRlbXNCeS5kb0NhbGwoKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKwk8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJnZXRSb29tSXRlbXNCeSIgZnVuY25hbWU9IndoaXRlYm9hcmRzZXJ2aWNlLmdldFJvb21JdGVtc0J5IgorICAgICAgICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgCS8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisgICAgICAgICAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIiMjIyMjIyMjIyMjIyMjIGdldFJvb21JdGVtc0J5IDogIix2YWx1ZSk7CisgICAgICAgICAgICAJcGFyZW50LmxvYWRXaGl0ZWJvYXJkcyh2YWx1ZS53aGl0ZWJvYXJkT2JqZWN0cyk7CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPiAgIAorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4gICAKKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImxvYWRXaGl0ZWJvYXJkcyIgYXJncz0id2hpdGVib2FyZE9iamVjdHMiPgorICAgIAk8IVtDREFUQVsKKyAgICAJICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIndoaXRlYm9hcmRPYmplY3RzIDo6ICIsd2hpdGVib2FyZE9iamVjdHMubGVuZ3RoKTsKKyAgICAJICAgdmFyIG1haW5BcnJheSA9IG5ldyBBcnJheSgpOworICAgIAkgICBmb3IgKHZhciBlZyBpbiB3aGl0ZWJvYXJkT2JqZWN0cykgeworICAgIAkgICAJICAgbWFpbkFycmF5LnB1c2god2hpdGVib2FyZE9iamVjdHNbZWddKTsKKyAgICAJICAgfQorICAgIAkgICBtYWluQXJyYXkucmV2ZXJzZSgpOworICAgIAkgICAKKyAgICAJICAgZm9yICh2YXIgZWc9MDtlZzxtYWluQXJyYXkubGVuZ3RoO2VnKyspIHsKKyAgICAJICAgCSAgdmFyIHdoaXRlQm9hcmQgPSB0aGlzLmFkZE5ld0l0ZW1TeW5jZWQobWFpbkFycmF5W2VnXS53aGl0ZUJvYXJkSWQpOworICAgIAkgICAJICAKKyAgICAJICAgCSAgd2hpdGVCb2FyZC5fZHJhd2FyZWFNYXNrLl9kcmF3YXJlYS5sb2FkT2JqZWN0TGlzdChtYWluQXJyYXlbZWddKTsKKyAgICAJICAgfQorICAgIAldXT4KKyAgICA8L21ldGhvZD4KKyAgICAgIAorICAgIAorICAgIDx3aGl0ZWJvYXJkQmFyTWVudSBuYW1lPSJfYmFyIiBoZWlnaHQ9IjIwIiB5PSIyMSI+CisgICAgCTxhdHRyaWJ1dGUgbmFtZT0id2hpdGVib2FyZElkIiB2YWx1ZT0iLTEiIHR5cGU9Im51bWJlciIgLz4KKyAgICAJCisgICAgCTxoYW5kbGVyIG5hbWU9Im9uc3VidmlldyIgYXJncz0ibmV3U3ViIj4KKyAgICAJCXBhcmVudC5hZGROZXdJdGVtQnV0dG9uLnVwZGF0ZVBvc2l0aW9uKCk7CisgICAgCTwvaGFuZGxlcj4KKyAgICAJPGhhbmRsZXIgbmFtZT0ib253aWR0aCIgYXJncz0ibmV3U3ViIj4KKyAgICAgICAgICAgIHBhcmVudC5hZGROZXdJdGVtQnV0dG9uLnVwZGF0ZVBvc2l0aW9uKCk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICA8L3doaXRlYm9hcmRCYXJNZW51PgorICAgIAorICAgIDx2aWV3IG5hbWU9ImFkZE5ld0l0ZW1CdXR0b24iIHk9IjI0IiAKKyAgICAJICB2aXNpYmxlPSIkeyAoKGNhbnZhcy5pc21vZGVyYXRvcikgPyB0cnVlIDogKChjYW52YXMuaXNBbGxvd2VkVG9EcmF3KSA/IHRydWUgOiBmYWxzZSApKSB9IgorICAgIAkgID4KKyAgICAJCisgICAgCTxhdHRyaWJ1dGUgbmFtZT0id2hpdGVib2FyZElkIiB2YWx1ZT0iLTEiIHR5cGU9Im51bWJlciIgLz4KKyAgICAJCisgICAgCTxtZXRob2QgbmFtZT0idXBkYXRlUG9zaXRpb24iPgorICAgIAkJaWYgKHBhcmVudC5fYmFyLnN1YnZpZXdzLmxlbmd0aCAhPSAwKSB7CisgICAgICAgIAkJdmFyIGJvcmRlckl0ZW0gPSBwYXJlbnQuX2Jhci5zdWJ2aWV3c1twYXJlbnQuX2Jhci5zdWJ2aWV3cy5sZW5ndGgtMV07CisgICAgICAgIAkJdGhpcy5zZXRBdHRyaWJ1dGUoIngiLGJvcmRlckl0ZW0ueCArIGJvcmRlckl0ZW0ud2lkdGggKyAyKTsKKyAgICAJCX0gZWxzZSB7CisgICAgCQkJdGhpcy5zZXRBdHRyaWJ1dGUoIngiLDIpOworICAgIAkJfQorICAgIAk8L21ldGhvZD4KKyAgICAJCisgICAgCTxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdmVyIiBhcmdzPSJyZWZPYiI+CisgICAgCQl0aGlzLmJnLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKyAgICAJPC9oYW5kbGVyPgorICAgIAkKKyAgICAJPGhhbmRsZXIgbmFtZT0ib25tb3VzZW91dCIgYXJncz0icmVmT2IiPgorICAgICAgICAgICAgdGhpcy5iZy5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayIgYXJncz0icmVmT2IiPgorICAgICAgICAgICAgcGFyZW50LmFkZE5ld0l0ZW0oKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAKKyAgICAgICAgPHZpZXcgbmFtZT0iYmciIGJnY29sb3I9IjB4RUVFRUVFIiBvcGFjaXR5PSIwLjUiIAorICAgICAgICAJICB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIHZpc2liaWxpdHk9ImhpZGRlbiIgLz4KKyAgICAJCisgICAgCTx2aWV3IHJlc291cmNlPSJhZGRfd2hpdGVib2FyZF9yc2MiIHk9IjAiIHg9IjAiIC8+CisgICAgCQorICAgIAk8bGFiZWxUb29sdGlwIHRleHQ9IkFkZCBXaGl0ZWJvYXJkIiAvPgorICAgIDwvdmlldz4KKyAgICAKKyAgICA8dmlldyB3aWR0aD0iJHsgcGFyZW50LndpZHRoIH0iIGhlaWdodD0iMSIgeT0iNDEiCisgICAgCSAgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdiYXNlYmdjb2xvcml6ZXInKSB9Ij4KKyAgICAJPGF0dHJpYnV0ZSBuYW1lPSJ3aGl0ZWJvYXJkSWQiIHZhbHVlPSItMSIgdHlwZT0ibnVtYmVyIiAvPgorICAgIDwvdmlldz4KKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL2hlbHBlci9ib3VuZGluZ0JveEFsbC5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9oZWxwZXIvYm91bmRpbmdCb3hBbGwubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2ZDkxYTAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9oZWxwZXIvYm91bmRpbmdCb3hBbGwubHp4CkBAIC0wLDAgKzEsNTE5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorICAgIAorPGluY2x1ZGUgaHJlZj0idXRpbHMvc3RhdGVzL3Jlc2l6ZXN0YXRlbWluLmx6eCIvPgorCis8IS0tCisgICAgVGhlIG9yZGVyIG9mIHZpZXdzIGlzIGltcG9ydGFudCBpbiB0aGlzIGNsYXNzCisgICAgb3RoZXJ3aXNlIHRoZSBzY3JvbGxiYXIgb2YgdGhlIHN3ZlByZXNlbnRhdGlvbiB3b3VsZCBiZSBub3QgdmlzaWJsZSBvciBwYXJ0bHkgb3ZlcmxheWVkCisgICAgCisgICAgCisgICAgdGhpcyBpcyB0aGUgc2VsZWN0aW9uIEJveCBmb3IgYWxsIFdoaXRlYm9hcmQgT2JqZWN0cworIC0tPgorIAorPGNsYXNzIG5hbWU9ImJvdW5kaW5nQm94QWxsUm90YXRpb25NYXJnZXIiIGV4dGVuZHM9InZpZXciIAorCSAgIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgcmVzb3VyY2U9ImJvdW5kaW5nX2l0ZW1fcnNjIj4KKwkKKwk8YXR0cmlidXRlIG5hbWU9ImRyYWdTdGFydGVkIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iLz4KKwkKKwk8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3ZlciI+CisgICAgICAgIGx6LkN1cnNvci5zZXRDdXJzb3JHbG9iYWwoImFycm93X3JvdGF0ZV9wYW5lbF9jdXJzb3IiKTsKKyAgICA8L2hhbmRsZXI+CisgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZW91dCI+CisgICAgICAgIGx6LkN1cnNvci51bmxvY2soKTsKKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib254IiBhcmdzPSJ4Ij4KKyAgICAJdGhpcy5kb01vdmVEcmFnUG9pbnQoKTsKKyAgICA8L2hhbmRsZXI+CisgICAgPGhhbmRsZXIgbmFtZT0ib255IiBhcmdzPSJ5Ij4KKyAgICAgICAgdGhpcy5kb01vdmVEcmFnUG9pbnQoKTsKKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJkb01vdmVEcmFnUG9pbnQiPgorICAgIAlpZiAoIXRoaXMuZHJhZ1N0YXJ0ZWQpIHsKKyAgICAJCXJldHVybjsKKyAgICAJfQorICAgIAlwYXJlbnQuZG9Nb3ZlRHJhZ1BvaW50KHRoaXMueCsxMix0aGlzLnkrMTIpOworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2Vkb3duIj4KKyAgICAJdGhpcy5kcmFnU3RhcnRlZCA9IHRydWU7CisgICAgCXBhcmVudC5kb1N0YXJ0RHJhZ1BvaW50KCk7CisgICAgICAgIHRoaXMuZHJhZ2dlci5hcHBseSgpOworICAgIDwvaGFuZGxlcj4KKyAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNldXAiPgorICAgIAl0aGlzLmRyYWdTdGFydGVkID0gZmFsc2U7CisgICAgICAgIHRoaXMuZHJhZ2dlci5yZW1vdmUoKTsKKyAgICAgICAgcGFyZW50LmVuZERyYXdDbGlwQXJ0RHJhZygpOworICAgICAgICBsei5DdXJzb3IudW5sb2NrKCk7CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgIDxkcmFnc3RhdGUgbmFtZT0iZHJhZ2dlciIgLz4gIAorICAgIAorPC9jbGFzcz4gCisgICAgCis8Y2xhc3MgbmFtZT0iYm91bmRpbmdCb3hBbGwiIGV4dGVuZHM9InZpZXciIGZvY3VzYWJsZT0idHJ1ZSI+CisgICAgCis8IS0tIAorCTxtZXRob2QgbmFtZT0icmVtb3ZlSXQiPgorCQljYW52YXMuX2RyYXdhcmVhLnNldEF0dHJpYnV0ZSgnYm91bmRpbmdJc0FjdGl2ZScsdHJ1ZSk7CisJPC9tZXRob2Q+CisgLS0+CQorCTxtZXRob2QgbmFtZT0icmVtb3ZlSXQiPgorCQkvL0RlYnVnLndyaXRlKCJyZW1vdmVJdCArKioqKioqKioqKiIsdGhpcy5pc2luaXRlZCk7CisJCXRoaXMud2hpdGVib2FyZFJlZi5zZXRBdHRyaWJ1dGUoJ2JvdW5kaW5nSXNBY3RpdmUnLGZhbHNlKTsKKwkJaWYgKHRoaXMucnMpIHRoaXMucnMucmVtb3ZlKCk7CisJCWlmICh0aGlzLmRyYWdnZXIpIHRoaXMuZHJhZ2dlci5yZW1vdmUoKTsKKwkJdGhpcy5kZXN0cm95KCk7CisJPC9tZXRob2Q+CisKKwk8YXR0cmlidXRlIG5hbWU9ImV4IiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0iZXkiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJld2lkdGgiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJlaGVpZ2h0IiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0iaW5uZXJJbnNldFNjcm9sbGJhcnMiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9InN0YXJ0ZHJhZ1giIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJzdGFydGRyYWdZIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0ic3RhcnRkcmFnV2lkdGgiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJzdGFydGRyYWdIZWlnaHQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJvYmpSZWYiIHZhbHVlPSJudWxsIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0id2hpdGVib2FyZFJlZiIgdmFsdWU9Im51bGwiIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJkb0hhbmRsZXJVcGRhdGVzIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CQorICAgIDxhdHRyaWJ1dGUgbmFtZT0iYm91bmRpbmdEb1VwZGF0ZU9uSW5pdCIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CSAKKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9ImNhbkJlRHJhZ2dlZCIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJjYW5CZVJlc2l6ZWQiIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPgorICAgIAorICAgIDwhLS0tIE1pbmltdW0gd2lkdGggZm9yIHRoZSB3aW5kb3d5LCBkZWZhdWx0OiA2MC4KKyAgICAgICAgICBAa2V5d29yZHMgZmluYWwgLS0+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJtaW53aWR0aCIgdmFsdWU9IjIiLz4KKworICAgIDwhLS0tIE1pbmltdW0gaGVpZ2h0IGZvciB0aGUgd2luZG93LCBkZWZhdWx0OiA1MC4KKyAgICAgICAgICBAa2V5d29yZHMgZmluYWwgLS0+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJtaW5oZWlnaHQiIHZhbHVlPSIyIi8+ICAgIAorCQorCTxtZXRob2QgbmFtZT0iX19MWlJlbW92ZUl0ZW0iIGFyZ3M9Iml0ZW1SZWYiPgorCQl0aGlzLndoaXRlYm9hcmRSZWYuZGVsZXRlSXRlbUJ5TmFtZSh0aGlzLm9ialJlZi5uYW1lKTsKKwkJLy9EZWJ1Zy53cml0ZSgiX19MWlJlbW92ZUl0ZW0iKTsKKwk8L21ldGhvZD4KKwkKKwk8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorCQk8IVtDREFUQVsKKwkJICAgIGlmICghdGhpcy5ib3VuZGluZ0RvVXBkYXRlT25Jbml0KSB7CisJCSAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIkRFU1RST1kgdGhlIGNsaWNrYWJsZSB2aWV3Iik7CisJCSAgICAJLy90aGlzLl9pbm5lckRyYWcuZGVzdHJveSgpOworCQkgICAgfQorCQkgICAgCisJCSAgICBpZiAoIXRoaXMuY2FuQmVSZXNpemVkKSB7CisJCSAgICAJdGhpcy5fZ3JpcHBlck5vUmVzaXplLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKwkJICAgIAl0aGlzLl9ncmlwcGVyUmVzaXplLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworCQkgICAgfQorCQkKKwkJCXRoaXMuc2V0QXR0cmlidXRlKCd4Jyx0aGlzLmV4KTsKKwkJCXRoaXMuc2V0QXR0cmlidXRlKCd5Jyx0aGlzLmV5KTsKKwkJCXRoaXMuc2V0QXR0cmlidXRlKCd3aWR0aCcsdGhpcy5ld2lkdGgpOworCQkJdGhpcy5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsdGhpcy5laGVpZ2h0KTsJCisJCQl0aGlzLnNldFN0YXJ0VmFsdWVzKCk7CQkKKwkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJVcGRhdGUgUHJvcGVydHkgUGFuZWwgU2V0dGluZ3MgdG8gT2JqZWN0IFByb3BlcnRpZXMgIix0aGlzLm9ialJlZi5uYW1lKTsKKwkJCQorCQkJbHouRm9jdXMuc2V0Rm9jdXModGhpcywgZmFsc2UpOyAKKwkJCQorCQkJaWYgKHRoaXMub2JqUmVmLnR5cGVPZk9iamVjdCA9PSAidGV4dCIpIHsKKwkJCQl0aGlzLl9lZGl0VGV4dC5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisJCQl9CisJCQkKKyAgICAgICAgICAgIC8vRklYTUUgLSBBZGQgRWxsaXBzZSwgTGluZSBhbmQgRnJlZSBEcmF3IFRvb2wgdG8gaXQKKyAgICAgICAgICAgIGlmICh0aGlzLm9ialJlZi5uYW1lLmluZGV4T2YoJ3JlY3RhbmdsZScpID49IDApeworCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ0aGlzLm9ialJlZi5faW5uZXJSZWN0ICIsdGhpcy5vYmpSZWYuX2lubmVyUmVjdCk7CisJCQkJCisJCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInN0cm9rZVN0eWxlOiAiLHRoaXMub2JqUmVmLl9pbm5lclJlY3Quc3Ryb2tlU3R5bGUpOworCQkJCWlmICh0aGlzLm9ialJlZi5faW5uZXJSZWN0LnN0cm9rZVN0eWxlID09ICcjMDAwMDAwJykgeworCQkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic3Ryb2tlU3R5bGUgRU1QVFkgIik7CisJCQkJCXRoaXMud2hpdGVib2FyZFJlZi5jdXJyZW50cmVjdGFuZ2xlc3Ryb2tlRGlzID0gLTE7CisJCQkJfSBlbHNlIHsKKwkJCQkJdGhpcy53aGl0ZWJvYXJkUmVmLmN1cnJlbnRyZWN0YW5nbGVzdHJva2UgPSB0aGlzLm9ialJlZi5faW5uZXJSZWN0LnN0cm9rZVN0eWxlOworCQkJCQl0aGlzLndoaXRlYm9hcmRSZWYuY3VycmVudHJlY3RhbmdsZXN0cm9rZURpcyA9IDE7CisJCQkJfQorCQkJCQorCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJmaWxsU3R5bGU6ICIsdGhpcy5vYmpSZWYuX2lubmVyUmVjdC5maWxsU3R5bGUpOworCQkJCWlmICh0aGlzLm9ialJlZi5faW5uZXJSZWN0LmZpbGxTdHlsZSA9PSAnIzAwMDAwMCcpIHsKKwkJCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImZpbGxTdHlsZSBFTVBUWSAiKTsKKwkJCQkJdGhpcy53aGl0ZWJvYXJkUmVmLmN1cnJlbnRyZWN0YW5nbGVzdHJva2VGaWxsRGlzID0gLTE7CisJCQkJfSBlbHNlIHsKKwkJCQkJdGhpcy53aGl0ZWJvYXJkUmVmLmN1cnJlbnRyZWN0YW5nbGVzdHJva2VGaWxsID0gdGhpcy5vYmpSZWYuX2lubmVyUmVjdC5maWxsU3R5bGU7CisJCQkJCXRoaXMud2hpdGVib2FyZFJlZi5jdXJyZW50cmVjdGFuZ2xlc3Ryb2tlRmlsbERpcyA9IDE7CisJCQkJfQorCQkJCQorCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJsaW5lV2lkdGg6ICIsdGhpcy5vYmpSZWYuX2lubmVyUmVjdC5saW5lV2lkdGgpOworCQkJCXRoaXMud2hpdGVib2FyZFJlZi5jdXJyZW50cmVjdGFuZ2xlaW5lV2lkdGggPSB0aGlzLm9ialJlZi5faW5uZXJSZWN0LmxpbmVXaWR0aDsKKwkJCQkKKwkJCX0gZWxzZSBpZiAodGhpcy5vYmpSZWYubmFtZS5pbmRleE9mKCdzd2YnKSA+PSAwKSB7CisgICAgICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoImlubmVySW5zZXRTY3JvbGxiYXJzIiwxNik7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMub2JqUmVmLm5hbWUuaW5kZXhPZignY2xpcGFydCcpID49IDApIHsKKyAgICAgICAgICAgIAl0aGlzLmNhbkJlUmVzaXplZCA9IGZhbHNlOworICAgICAgICAgICAgCXRoaXMuX2dyaXBwZXJOb1Jlc2l6ZS5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisJCSAgICAJdGhpcy5fZ3JpcHBlclJlc2l6ZS5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKyAgICAgICAgICAgIAkKKyAgICAgICAgICAgIAluZXcgbHouYm91bmRpbmdCb3hBbGxSb3RhdGlvbk1hcmdlcih0aGlzLHsKKyAgICAgICAgICAgICAgICAgICAgCSAgICAgICB4OnRoaXMub2JqUmVmLmNsaXBhcnQuY2xpcEFydEVuZHgtMTIsCisgICAgICAgICAgICAgICAgICAgIAkgICAgICAgeTp0aGlzLm9ialJlZi5jbGlwYXJ0LmNsaXBBcnRFbmR5LTEyCisgICAgICAgICAgICAgICAgICAgICAgICAJfSk7CisgICAgICAgICAgICAJCisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy53aGl0ZWJvYXJkUmVmLnBhcmVudC5wYXJlbnQuX3Byb3BlcnR5UGFuZWwubG9hZFBhbmVsQnlCb3VuZGluZ0JveCh0aGlzLndoaXRlYm9hcmRSZWYsdGhpcy5vYmpSZWYpOworICAgICAgICAgICAgCisJCQl0aGlzLmRvVXBkYXRlQWN0aW9uKCk7CisJCV1dPgorCTwvaGFuZGxlcj4KKwkKKwk8bWV0aG9kIG5hbWU9ImRvU3RhcnREcmFnUG9pbnQiPgorCQl0aGlzLndoaXRlYm9hcmRSZWYuc2V0U3RhcnRQb2ludCh0aGlzLm9ialJlZi5jbGlwYXJ0LngrdGhpcy54LHRoaXMub2JqUmVmLmNsaXBhcnQueSt0aGlzLnkpOworCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0iZG9Nb3ZlRHJhZ1BvaW50IiBhcmdzPSJ4LHkiPgorCQl0aGlzLndoaXRlYm9hcmRSZWYudHJhY2tEcmF3Q2xpcEFydERyYXcodGhpcy54K3gsdGhpcy55K3ksdGhpcy5vYmpSZWYuY2xpcGFydCk7CisJPC9tZXRob2Q+CisJCisJPG1ldGhvZCBuYW1lPSJlbmREcmF3Q2xpcEFydERyYWciPgorICAgICAgICB0aGlzLndoaXRlYm9hcmRSZWYuZW5kRHJhd0NsaXBBcnREcmFnKHRoaXMub2JqUmVmKTsKKyAgICAgICAgdGhpcy53aGl0ZWJvYXJkUmVmLnJlc2VsZWN0U2hvd09iamVjdEJvdW5kcyh0aGlzLm9ialJlZi5uYW1lKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKwk8IS0tCisJICAgRG8gdXBkYXRlIHRoZSBTZWxlY3Rpb24tQm94LCBpbiBjYXNlIGFub3RoZXIgTW9kZXJhdG9yIG9yIFVzZXIgaGFzIG1vdmVkIHRoZSBPYmplY3QKKwkgICB3aGlsZSB5b3UgaGF2ZSBpdCBpbiBmb2N1cworCSAtLT4KKyAgICA8bWV0aG9kIG5hbWU9InNlbmRSZW1vdGVVcGRhdGUiIGFyZ3M9Im9iaiI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAKKyAgICAgICAgICAgaWYgKHRoaXMub2JqUmVmLm5hbWUgPT0gb2JqLm5hbWUpIHsKKyAgICAgICAgICAgCSAgIAorICAgICAgICAgICAJICAgIHRoaXMucmVzZXRWYWx1ZXMoKTsKKyAgICAgICAgICAgCQorICAgICAgICAgICB9CisgICAgICAgIAorICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKwkKKwk8bWV0aG9kIG5hbWU9InJlc2V0VmFsdWVzIj4KKwkJdGhpcy5leCA9IHRoaXMub2JqUmVmLng7CisJCXRoaXMuZXkgPSB0aGlzLm9ialJlZi55OworCQl0aGlzLmV3aWR0aCA9IHRoaXMub2JqUmVmLndpZHRoOworCQl0aGlzLmVoZWlnaHQgPSB0aGlzLm9ialJlZi5oZWlnaHQ7CQkJCisJCXRoaXMuc2V0QXR0cmlidXRlKCd4Jyx0aGlzLm9ialJlZi54KTsKKwkJdGhpcy5zZXRBdHRyaWJ1dGUoJ3knLHRoaXMub2JqUmVmLnkpOworCQl0aGlzLnNldEF0dHJpYnV0ZSgnd2lkdGgnLHRoaXMub2JqUmVmLndpZHRoKTsKKwkJdGhpcy5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsdGhpcy5vYmpSZWYuaGVpZ2h0KTsJCisJCXRoaXMuc2V0U3RhcnRWYWx1ZXMoKTsJCisJPC9tZXRob2Q+CisKKyAgICA8bWV0aG9kIG5hbWU9ImRvVXBkYXRlQWN0aW9uIiA+CisgICAgCXRoaXMuc2V0QXR0cmlidXRlKCdkb0hhbmRsZXJVcGRhdGVzJyx0cnVlKTsKKyAgICAJaWYgKHRoaXMuYm91bmRpbmdEb1VwZGF0ZU9uSW5pdCkgeworICAgIAkgICAgdGhpcy5faW5uZXJEcmFnLm9ubW91c2Vkb3duLnNlbmRFdmVudCgpOworICAgIAl9CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib25oZWlnaHQiPgorICAgIAlpZih0aGlzLmRvSGFuZGxlclVwZGF0ZXMpeworICAgIAkJdGhpcy5vYmpSZWYuc2V0QXR0cmlidXRlKCdoZWlnaHQnLHRoaXMuaGVpZ2h0KTsKKyAgICAJfQorICAgIDwvaGFuZGxlcj4KKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbndpZHRoIj4KKyAgICAJaWYodGhpcy5kb0hhbmRsZXJVcGRhdGVzKXsKKyAgICAJCXRoaXMub2JqUmVmLnNldEF0dHJpYnV0ZSgnd2lkdGgnLHRoaXMud2lkdGgpOworICAgIAl9CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9ueCI+CisgICAgICAgIGlmKHRoaXMuZG9IYW5kbGVyVXBkYXRlcyl7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciB0eCA9IHRoaXMuZ2V0QXR0cmlidXRlUmVsYXRpdmUoJ3gnLG9ialJlZik7CisgICAgICAgIAorICAgICAgICAgICAgaWYodGhpcy5vYmpSZWYucGFyZW50LmlzU25hcFRvR3JpZCl7ICAgCisgICAgICAgICAgICAgICAgdHggPSBNYXRoLnJvdW5kKHR4L3RoaXMub2JqUmVmLnBhcmVudC5ncmlkV2lkdGgpKnRoaXMub2JqUmVmLnBhcmVudC5ncmlkV2lkdGg7CisgICAgICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoIngiLE1hdGgucm91bmQodGhpcy54L3RoaXMub2JqUmVmLnBhcmVudC5ncmlkV2lkdGgpKnRoaXMub2JqUmVmLnBhcmVudC5ncmlkV2lkdGgpCisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMub2JqUmVmLnNldEF0dHJpYnV0ZSgneCcsdHgpOworICAgICAgICB9CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9ueSI+CisgICAgICAgIGlmKHRoaXMuZG9IYW5kbGVyVXBkYXRlcyl7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciB0eSA9IHRoaXMuZ2V0QXR0cmlidXRlUmVsYXRpdmUoJ3knLG9ialJlZik7CisgICAgICAgIAorICAgICAgICAgICAgaWYodGhpcy5vYmpSZWYucGFyZW50LmlzU25hcFRvR3JpZCl7ICAgCisgICAgICAgICAgICAgICAgdHkgPSBNYXRoLnJvdW5kKHR5L3RoaXMub2JqUmVmLnBhcmVudC5ncmlkV2lkdGgpKnRoaXMub2JqUmVmLnBhcmVudC5ncmlkV2lkdGg7CisgICAgICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoInkiLE1hdGgucm91bmQodGhpcy55L3RoaXMub2JqUmVmLnBhcmVudC5ncmlkV2lkdGgpKnRoaXMub2JqUmVmLnBhcmVudC5ncmlkV2lkdGgpCisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMub2JqUmVmLnNldEF0dHJpYnV0ZSgneScsdHkpOworICAgICAgICB9CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9ua2V5ZG93biIgYXJncz0ia2V5Ij4KKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9ua2V5ZG93biAiLGtleSk7CisKKyAgICAgICAgLy90aGlzLm9ialJlZi5wYXJlbnQuVXBkYXRlQnlPYmplY3QodGhpcy5vYmpSZWYpOworCisgICAgICAgIGlmIChrZXkgPT0gNDYpIHsKKyAgICAgICAgCXRoaXMuX19MWlJlbW92ZUl0ZW0odGhpcy5vYmpSZWYpOworICAgICAgICB9IGVsc2UgaWYgKGtleSA9PSA0MCkgeworICAgICAgICAJdmFyIHNoaWZ0UHJlc3NlZCA9IGx6LktleXMuaXNLZXlEb3duKCJzaGlmdCIpOyAKKyAgICAgICAgCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzaGlmdFByZXNzZWQgIixzaGlmdFByZXNzZWQpOworICAgICAgICAJdGhpcy5kb0hhbmRsZXJVcGRhdGVzID0gdHJ1ZTsKKyAgICAgICAgCXRoaXMuc2V0QXR0cmlidXRlKCJ5Iix0aGlzLnkrKHNoaWZ0UHJlc3NlZCA/IDIwIDogMikpOworICAgICAgICAJdGhpcy5kb0hhbmRsZXJVcGRhdGVzID0gZmFsc2U7CisgICAgICAgIAl0aGlzLm9ialJlZi5wYXJlbnQuVXBkYXRlQnlPYmplY3QodGhpcy5vYmpSZWYpOworCQkJdGhpcy5zZXRTdGFydFZhbHVlcygpOworICAgICAgICB9IGVsc2UgaWYgKGtleSA9PSAzOCkgeworICAgICAgICAJdmFyIHNoaWZ0UHJlc3NlZCA9IGx6LktleXMuaXNLZXlEb3duKCJzaGlmdCIpOyAKKyAgICAgICAgCXRoaXMuZG9IYW5kbGVyVXBkYXRlcyA9IHRydWU7CisgICAgICAgIAl0aGlzLnNldEF0dHJpYnV0ZSgieSIsdGhpcy55LShzaGlmdFByZXNzZWQgPyAyMCA6IDIpKTsKKyAgICAgICAgCXRoaXMuZG9IYW5kbGVyVXBkYXRlcyA9IGZhbHNlOworICAgICAgICAJdGhpcy5vYmpSZWYucGFyZW50LlVwZGF0ZUJ5T2JqZWN0KHRoaXMub2JqUmVmKTsKKwkJCXRoaXMuc2V0U3RhcnRWYWx1ZXMoKTsKKyAgICAgICAgfSBlbHNlIGlmIChrZXkgPT0gMzkpIHsKKyAgICAgICAgCXZhciBzaGlmdFByZXNzZWQgPSBsei5LZXlzLmlzS2V5RG93bigic2hpZnQiKTsgCisgICAgICAgIAl0aGlzLmRvSGFuZGxlclVwZGF0ZXMgPSB0cnVlOworICAgICAgICAJdGhpcy5zZXRBdHRyaWJ1dGUoIngiLHRoaXMueCsoc2hpZnRQcmVzc2VkID8gMjAgOiAyKSk7CisgICAgICAgIAl0aGlzLmRvSGFuZGxlclVwZGF0ZXMgPSBmYWxzZTsKKyAgICAgICAgCXRoaXMub2JqUmVmLnBhcmVudC5VcGRhdGVCeU9iamVjdCh0aGlzLm9ialJlZik7CisJCQl0aGlzLnNldFN0YXJ0VmFsdWVzKCk7CisgICAgICAgIH0gZWxzZSBpZiAoa2V5ID09IDM3KSB7CisgICAgICAgIAl2YXIgc2hpZnRQcmVzc2VkID0gbHouS2V5cy5pc0tleURvd24oInNoaWZ0Iik7IAorICAgICAgICAJdGhpcy5kb0hhbmRsZXJVcGRhdGVzID0gdHJ1ZTsKKyAgICAgICAgCXRoaXMuc2V0QXR0cmlidXRlKCJ4Iix0aGlzLngtKHNoaWZ0UHJlc3NlZCA/IDIwIDogMikpOworICAgICAgICAJdGhpcy5kb0hhbmRsZXJVcGRhdGVzID0gZmFsc2U7CisgICAgICAgIAl0aGlzLm9ialJlZi5wYXJlbnQuVXBkYXRlQnlPYmplY3QodGhpcy5vYmpSZWYpOworCQkJdGhpcy5zZXRTdGFydFZhbHVlcygpOworICAgICAgICB9CisgICAgPC9oYW5kbGVyPgorCQorCTxtZXRob2QgbmFtZT0ic2V0U3RhcnRWYWx1ZXMiPgorCQl0aGlzLnN0YXJ0ZHJhZ1ggPSB0aGlzLng7CisJCXRoaXMuc3RhcnRkcmFnWSA9IHRoaXMueTsKKwkJdGhpcy5zdGFydGRyYWdXaWR0aCA9IHRoaXMud2lkdGg7CisJCXRoaXMuc3RhcnRkcmFnSGVpZ2h0ID0gdGhpcy5oZWlnaHQ7CQkJCisJPC9tZXRob2Q+CisKKyAgICA8bWV0aG9kIG5hbWU9Il9hcHBseVJlc2l6ZXN0YXRlRnJvbVRoaXMiPgorICAgIAlsei5Gb2N1cy5zZXRGb2N1cyh0aGlzLCB0cnVlKTsgCisgICAgCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJBcHBseSByZXNpemUgU3RhdGUiKTsKKyAgICAJaWYgKCF0aGlzLmNhbkJlUmVzaXplZCkgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisJCXRoaXMuc2V0U3RhcnRWYWx1ZXMoKTsJCQorCQl0aGlzLnJzLmFwcGx5KCkKKwk8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9Il9yZW1vdmVSZXNpemVzdGF0ZUZyb21UaGlzIj4KKwkJPCFbQ0RBVEFbCisJCWlmICghdGhpcy5jYW5CZVJlc2l6ZWQpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIAl0aGlzLnJzLnJlbW92ZSgpOworCQkKKwkJaWYgKHRoaXMuc3RhcnRkcmFnWCAhPSB0aGlzLnggfHwgdGhpcy5zdGFydGRyYWdZICE9IHRoaXMueSB8fCB0aGlzLnN0YXJ0ZHJhZ1dpZHRoICE9IHRoaXMud2lkdGggfHwgdGhpcy5zdGFydGRyYWdIZWlnaHQgIT0gdGhpcy5oZWlnaHQpeworCQkJLy9EZWJ1Zy53cml0ZSgidmFsdWUgY2hhbmdlZCAxIik7CisJCQl0aGlzLm9ialJlZi5wYXJlbnQuVXBkYXRlQnlPYmplY3QodGhpcy5vYmpSZWYpOworCQkJdGhpcy5zZXRTdGFydFZhbHVlcygpOworCQl9CisJCWlmIChwYXJlbnQub25Cb3VuZGluZ0JveCkgcGFyZW50Lm9uQm91bmRpbmdCb3guc2VuZEV2ZW50KHRoaXMpOworCQkJCisJCV1dPgorICAgIDwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0iX2FwcGx5RHJhZ3N0YXRlRnJvbVRoaXMiPgorCQlsei5Gb2N1cy5zZXRGb2N1cyh0aGlzLCB0cnVlKTsgCisJCWlmICghdGhpcy5jYW5CZURyYWdnZWQpIHsKKwkJCXJldHVybjsKKwkJfQorCQl0aGlzLnNldFN0YXJ0VmFsdWVzKCk7CisJCXRoaXMuZHJhZ2dlci5hcHBseSgpCisJPC9tZXRob2Q+CQorICAgIAorICAgIDxtZXRob2QgbmFtZT0iX3JlbW92ZURyYWdzdGF0ZUZyb21UaGlzIj4KKwkJPCFbQ0RBVEFbCisJCWlmICghdGhpcy5jYW5CZURyYWdnZWQpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIAl0aGlzLmRyYWdnZXIucmVtb3ZlKCk7CisJCQorICAgIAlpZiAodGhpcy5zdGFydGRyYWdYICE9IHRoaXMueCB8fCB0aGlzLnN0YXJ0ZHJhZ1kgIT0gdGhpcy55IHx8IHRoaXMuc3RhcnRkcmFnV2lkdGggIT0gdGhpcy53aWR0aCB8fCB0aGlzLnN0YXJ0ZHJhZ0hlaWdodCAhPSB0aGlzLmhlaWdodCl7CisJCQkvL0RlYnVnLndyaXRlKCJ2YWx1ZSBjaGFuZ2VkIDIiKTsKKwkJCXRoaXMub2JqUmVmLnBhcmVudC5VcGRhdGVCeU9iamVjdCh0aGlzLm9ialJlZik7CisJCQl0aGlzLnNldFN0YXJ0VmFsdWVzKCk7CisJCX0KKwkJaWYgKHBhcmVudC5vbkJvdW5kaW5nQm94KSBwYXJlbnQub25Cb3VuZGluZ0JveC5zZW5kRXZlbnQodGhpcyk7CisJCQorCQldXT4JCQkKKyAgICA8L21ldGhvZD4KKworICAgIDxtZXRob2QgbmFtZT0iZG9TZXRJbm5lck9iamVjdHNCb3VuZHMiIGFyZ3M9IncsaCI+CisgICAgICAgIHRoaXMuX2lubmVyLl9pbm5lci5zZXRBdHRyaWJ1dGUoJ3dpZHRoJyx3KTsKKyAgICAgICAgdGhpcy5faW5uZXIuX2lubmVyLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JyxoKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImFwcGx5U2Nyb2xsYmFyVG9PYmplY3QiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIi0tIGFwcGx5U2Nyb2xsYmFyVG9PYmplY3QgLS0iLHRoaXMub2JqUmVmLnR5cGVPZk9iamVjdCk7CisJICAgICAgICBpZiAodGhpcy5vYmpSZWYudHlwZU9mT2JqZWN0ID09ICdzd2YnKXsKKwkgICAgICAgICAgICBpZiAoY2FudmFzLmlzbW9kZXJhdG9yIHx8IGNhbnZhcy5pc0FsbG93ZWRUb0RyYXcpIHsKKyAgICAgICAgICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiLS0gc2V0Q3VycmVudE1vdXNlV2hlZWxPYmplY3QgLS0iLHRoaXMub2JqUmVmLl9zY3JvbGxzdHYpOworICAgICAgICAgICAgICAgICAgICAvL3NldEN1cnJlbnRNb3VzZVdoZWVsT2JqZWN0KHRoaXMub2JqUmVmLl9zY3JvbGxzdHYpOworICAgICAgICAgICAgICAgIH0KKwkgICAgICAgIH0KKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJyZW1vdmVTY3JvbGxiYXJUb09iamVjdCI+CisgICAgICAgIGlmICh0aGlzLm9ialJlZi50eXBlT2ZPYmplY3QgPT0gJ3N3ZicpeworICAgICAgICAgICAgLy9XZWxsIGRpc2FibGUsIHlvdSBjYW4gYWx3YXlzIGRpc2FibGUgd2l0aG91dCBhbnkgcHJvYmxlbQorICAgICAgICAgICAgLy9hbmQgaW4gY2FzZSB5b3UgZG8gZXhhY3RseSBzd2l0Y2ggdGhlIG1vZGVyYXRpb24gbm93CisgICAgICAgICAgICAvL2l0IHdpbGwgcmVtb3ZlIGl0IGluIGFueSBjYXNlCisgICAgICAgICAgICBkaXNhYmxlQ3VycmVudE1vdXNlV2hlZWxPYmplY3QoKTsKKyAgICAgICAgfQorICAgIDwvbWV0aG9kPgorICAgICAgICAKKyAgICA8cmVzaXplc3RhdGVtaW4gbmFtZT0icnMiPiAJCisgICAgCTx0ZXh0IHg9IjIiIHk9IjIiIHRleHQ9IiR7ICd3OiAnK3BhcmVudC53aWR0aCsnIGg6ICcrcGFyZW50LmhlaWdodCB9IiBiZ2NvbG9yPSJ3aGl0ZSIvPgorICAgIDwvcmVzaXplc3RhdGVtaW4+CisgICAgCisgICAJPGRyYWdzdGF0ZSBuYW1lPSJkcmFnZ2VyIj4gICAgCisJCTx0ZXh0IHg9IjIiIHk9IjIiIHRleHQ9IiR7ICd4OiAnK3BhcmVudC5nZXRBdHRyaWJ1dGVSZWxhdGl2ZSgneCcscGFyZW50Lm9ialJlZikrJyB5OiAnK3BhcmVudC5nZXRBdHRyaWJ1dGVSZWxhdGl2ZSgneScscGFyZW50Lm9ialJlZikgfSIgYmdjb2xvcj0id2hpdGUiLz4gICAJCisgICAJPC9kcmFnc3RhdGU+CisJCisJPHZpZXcgbmFtZT0iX2lubmVyRHJhZyIgd2lkdGg9IiR7IHBhcmVudC53aWR0aC1wYXJlbnQuaW5uZXJJbnNldFNjcm9sbGJhcnMgfSIgCisJCSAgaGVpZ2h0PSIkeyBwYXJlbnQuaGVpZ2h0LXBhcmVudC5pbm5lckluc2V0U2Nyb2xsYmFycyB9IiAKKwkJICBvbm1vdXNlb3Zlcj0icGFyZW50LmFwcGx5U2Nyb2xsYmFyVG9PYmplY3QoKSIgCisgICAgICAgICAgb25tb3VzZW91dD0icGFyZW50LnJlbW92ZVNjcm9sbGJhclRvT2JqZWN0KCkiCisJCSAgb25tb3VzZWRvd249InBhcmVudC5fYXBwbHlEcmFnc3RhdGVGcm9tVGhpcygpIiAKKyAgICAJICBvbm1vdXNldXA9InBhcmVudC5fcmVtb3ZlRHJhZ3N0YXRlRnJvbVRoaXMoKSI+CisgICAgCQorICAgIAk8Y29udGV4dG1lbnU+CisJCQk8Y29udGV4dG1lbnVpdGVtIGNhcHRpb249IiRvbmNleyBjYW52YXMuZ2V0TGFiZWxOYW1lKDgwKSB9IiAKKwkJCQkJCQkgb25zZWxlY3Q9InBhcmVudC5wYXJlbnQucGFyZW50Ll9fTFpSZW1vdmVJdGVtKCkiIC8+CisgICAgICAgIDwvY29udGV4dG1lbnU+CisJCSAKKwkJPGhhbmRsZXIgbmFtZT0ib25kYmxjbGljayI+CisKKwkJCS8vRGVidWcud3JpdGUoIm9uZGJsY2xpY2s6ICIsdGhpcy5wYXJlbnQub2JqUmVmLnR5cGVPZk9iamVjdCk7CisJCQlpZiAodGhpcy5wYXJlbnQub2JqUmVmLnR5cGVPZk9iamVjdCA9PSAidGV4dCIpIHsKKwkJCQl2YXIgeCA9IHRoaXMucGFyZW50Lm9ialJlZi54OyAvL3RoaXMucGFyZW50Lm9ialJlZi5nZXRBdHRyaWJ1dGVSZWxhdGl2ZSgneCcsIGNhbnZhcyk7CisJCQkJdmFyIHkgPSB0aGlzLnBhcmVudC5vYmpSZWYueTsgLy90aGlzLnBhcmVudC5vYmpSZWYuZ2V0QXR0cmlidXRlUmVsYXRpdmUoJ3knLCBjYW52YXMpOworCQkJCS8vRGVidWcud3JpdGUoIngseSAiLHgseSk7CisJCQkJdGhpcy5wYXJlbnQud2hpdGVib2FyZFJlZgorCQkJCQkJLmVkaXRUZXh0QnlWYWx1ZXModGhpcy5wYXJlbnQub2JqUmVmLAorCQkJCQkJCQl0aGlzLnBhcmVudC5vYmpSZWYubmFtZSwKKwkJCQkJCQkJdGhpcy5wYXJlbnQub2JqUmVmLnRleHQsIHgsIHksCisJCQkJCQkJCXRoaXMucGFyZW50Lm9ialJlZi53aWR0aCwKKwkJCQkJCQkJdGhpcy5wYXJlbnQub2JqUmVmLmhlaWdodCk7CisJCQl9CisJCTwvaGFuZGxlcj4JCisJCQorCQk8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3ZlciI+CisJCQlpZiAodGhpcy5wYXJlbnQub2JqUmVmLnR5cGVPZk9iamVjdCAhPSAic3dmIikgeworCSAgICAgICAgICAgbHouQ3Vyc29yLnNldEN1cnNvckdsb2JhbCgiYXJyb3dfZHJhd19wYW5lbF9jdXJzb3IiKTsKKwkJCX0KKwkJPC9oYW5kbGVyPgorCQkKKwkJPGhhbmRsZXIgbmFtZT0ib25tb3VzZW91dCI+CisJCQlsei5DdXJzb3IudW5sb2NrKCk7CisJCTwvaGFuZGxlcj4KKwkJCisJCQorCTwvdmlldz4KKwkKKwk8aW1hZ2Ugc3JjPSIkb25jZXsgY2FudmFzLmdldFRoZW1lSW1hZ2UoJ2JvdW5kaW5nX2JveF90ZXh0ZWRpdF9pdGVtX3JzYycpIH0iIHk9IjIiICB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHN0cmV0Y2hlcz0iYm90aCIKKwkJCQluYW1lPSJfZWRpdFRleHQiIHZpc2liaWxpdHk9ImhpZGRlbiIgeD0iJHsgcGFyZW50LndpZHRoLXRoaXMud2lkdGgtcGFyZW50LmlubmVySW5zZXRTY3JvbGxiYXJzLTE4IH0iID4KKwkJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisJCQl0aGlzLnBhcmVudC53aGl0ZWJvYXJkUmVmCisJCQkJCQkuZWRpdFRleHRCeVZhbHVlcyh0aGlzLnBhcmVudC5vYmpSZWYsCisJCQkJCQkJCXRoaXMucGFyZW50Lm9ialJlZi5uYW1lLAorCQkJCQkJCQl0aGlzLnBhcmVudC5vYmpSZWYudGV4dCwgCisJCQkJCQkJCXRoaXMucGFyZW50LngsIAorCQkJCQkJCQl0aGlzLnBhcmVudC55LAorCQkJCQkJCQl0aGlzLnBhcmVudC5vYmpSZWYud2lkdGgsCisJCQkJCQkJCXRoaXMucGFyZW50Lm9ialJlZi5oZWlnaHQpOworCQk8L2hhbmRsZXI+CisJCTxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdmVyIj4KKwkgICAgICAgIGx6LkN1cnNvci5yZXN0b3JlQ3Vyc29yKCk7CisJICAgICAgICBsei5DdXJzb3Iuc2hvd0hhbmRDdXJzb3IodHJ1ZSk7CisJICAgIDwvaGFuZGxlcj4KKwkgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZW91dCI+CisJICAgIAlsei5DdXJzb3Iuc2hvd0hhbmRDdXJzb3IoZmFsc2UpOworCSAgICAgICAgbHouQ3Vyc29yLnVubG9jaygpOworCSAgICA8L2hhbmRsZXI+CisgICAgCisJCTxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iMTQ2MyIgLz4KKwk8L2ltYWdlPgkKKwkKKwk8aW1hZ2Ugc3JjPSIkb25jZXsgY2FudmFzLmdldFRoZW1lSW1hZ2UoJ2JvdW5kaW5nX2JveF9kZWxldGVfaXRlbV9yc2MnKSB9IiB5PSIyIiAgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IgorCQkJCQl4PSIkeyBwYXJlbnQud2lkdGgtdGhpcy53aWR0aC1wYXJlbnQuaW5uZXJJbnNldFNjcm9sbGJhcnMtMiB9IiBzdHJldGNoZXM9ImJvdGgiPgorCQk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKwkJCS8vRGVidWcud3JpdGUoInRoaXMucGFyZW50Lm9ialJlZi5uYW1lOiAiLHRoaXMucGFyZW50Lm9ialJlZi5uYW1lKTsKKwkJCS8vdGhpcy5wYXJlbnQud2hpdGVib2FyZFJlZi5kZWxldGVJdGVtQnlOYW1lKHRoaXMucGFyZW50Lm9ialJlZi5uYW1lKTsKKwkJCXBhcmVudC5fX0xaUmVtb3ZlSXRlbSh0aGlzLnBhcmVudC5vYmpSZWYpOworCQk8L2hhbmRsZXI+CisJCTxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdmVyIj4KKwkgICAgICAgIGx6LkN1cnNvci5yZXN0b3JlQ3Vyc29yKCk7CisJICAgICAgICBsei5DdXJzb3Iuc2hvd0hhbmRDdXJzb3IodHJ1ZSk7CisJICAgIDwvaGFuZGxlcj4KKwkgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZW91dCI+CisJICAgIAlsei5DdXJzb3Iuc2hvd0hhbmRDdXJzb3IoZmFsc2UpOworCSAgICAgICAgbHouQ3Vyc29yLnVubG9jaygpOworCSAgICA8L2hhbmRsZXI+CisgICAgCisJCTxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iODAiIC8+CisJPC9pbWFnZT4JICAgIAorICAgIAorICAgIDx2aWV3IHJlc291cmNlPSJfYm91bmRpbmdCb3hQb2ludGVyVEwiIHg9IjAiIHk9IjAiIC8+CisgICAgPHZpZXcgcmVzb3VyY2U9Il9ib3VuZGluZ0JveFBvaW50ZXJUUiIgeD0iJHsgcGFyZW50LndpZHRoLXRoaXMud2lkdGggfSIgeT0iMCIgLz4KKyAgICA8dmlldyBuYW1lPSJfZ3JpcHBlclJlc2l6ZSIgdmlzaWJpbGl0eT0idmlzaWJsZSIKKyAgICAgICAgcmVzb3VyY2U9Il9ib3VuZGluZ0JveFBvaW50ZXJVUiIgeD0iJHsgcGFyZW50LndpZHRoLXRoaXMud2lkdGggfSIgeT0iJHsgcGFyZW50LmhlaWdodC10aGlzLmhlaWdodCB9IiAKKyAgICAgICAgb25tb3VzZWRvd249InBhcmVudC5fYXBwbHlSZXNpemVzdGF0ZUZyb21UaGlzKCkiIG9ubW91c2V1cD0icGFyZW50Ll9yZW1vdmVSZXNpemVzdGF0ZUZyb21UaGlzKCkiID4KKyAgICAJPGhhbmRsZXIgbmFtZT0ib25tb3VzZW92ZXIiPgorCSAgICAgICAgbHouQ3Vyc29yLnNldEN1cnNvckdsb2JhbCgiYXJyb3dfcmVzaXplX3BhbmVsX2N1cnNvciIpOworCSAgICA8L2hhbmRsZXI+CisJICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdXQiPgorCSAgICAgICAgbHouQ3Vyc29yLnVubG9jaygpOworCSAgICA8L2hhbmRsZXI+CisgICAgICAgIDxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iMjUyIiAvPgorICAgIDwvdmlldz4KKyAgICA8dmlldyBuYW1lPSJfZ3JpcHBlck5vUmVzaXplIiB2aXNpYmlsaXR5PSJoaWRkZW4iIAorICAgICAgICByZXNvdXJjZT0iX2JvdW5kaW5nQm94UG9pbnRlclVSTm9HcmlwcGVyIiB4PSIkeyBwYXJlbnQud2lkdGgtdGhpcy53aWR0aCB9IiB5PSIkeyBwYXJlbnQuaGVpZ2h0LXRoaXMuaGVpZ2h0IH0iIC8+CisgICAgPHZpZXcgcmVzb3VyY2U9Il9ib3VuZGluZ0JveFBvaW50ZXJVTCIgeD0iMCIgeT0iJHsgcGFyZW50LmhlaWdodC10aGlzLmhlaWdodCB9IiAvPgorCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9oZWxwZXIvbGlicmFyeS5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9oZWxwZXIvbGlicmFyeS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDRiNjIxNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL2hlbHBlci9saWJyYXJ5Lmx6eApAQCAtMCwwICsxLDI4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCQorCTwhLS0gQVBMIGF1dGhvciBzZWJhd2FnbmVyIC0tPgorCTxyZXNvdXJjZSBuYW1lPSJib3VuZGluZ19pdGVtX3JzYyIgc3JjPSJyZXNvdXJjZXMvYm91bmRpbmdfaXRlbS5wbmciIC8+CisKKyAgICA8aW5jbHVkZSBocmVmPSJib3VuZGluZ0JveEFsbC5sengiIC8+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL2hlbHBlci9yZXNvdXJjZXMvYm91bmRpbmdfaXRlbS5mbGEgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9oZWxwZXIvcmVzb3VyY2VzL2JvdW5kaW5nX2l0ZW0uZmxhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzZWNhYjMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9oZWxwZXIvcmVzb3VyY2VzL2JvdW5kaW5nX2l0ZW0uZmxhCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL2hlbHBlci9yZXNvdXJjZXMvYm91bmRpbmdfaXRlbS5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9oZWxwZXIvcmVzb3VyY2VzL2JvdW5kaW5nX2l0ZW0ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzOGY5ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9oZWxwZXIvcmVzb3VyY2VzL2JvdW5kaW5nX2l0ZW0ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL2xpYnJhcnkubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvbGlicmFyeS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTViZWIyNwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL2xpYnJhcnkubHp4CkBAIC0wLDAgKzEsNTYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisJCisJPCEtLSBBUEwgYXV0aG9yIHNlYmF3YWduZXIgLS0+CisJPHJlc291cmNlIG5hbWU9Il9ib3VuZGluZ0JveFBvaW50ZXJUUiIgc3JjPSJyZXNvdXJjZXMvYm91bmRpbmdCb3hUUi5wbmciIC8+CisJPCEtLSBBUEwgYXV0aG9yIHNlYmF3YWduZXIgLS0+CisJPHJlc291cmNlIG5hbWU9Il9ib3VuZGluZ0JveFBvaW50ZXJUTCIgc3JjPSJyZXNvdXJjZXMvYm91bmRpbmdCb3hUTC5wbmciIC8+CisJPCEtLSBBUEwgYXV0aG9yIHNlYmF3YWduZXIgLS0+CisJPHJlc291cmNlIG5hbWU9Il9ib3VuZGluZ0JveFBvaW50ZXJVUiIgc3JjPSJyZXNvdXJjZXMvYm91bmRpbmdCb3hVUi5wbmciIC8+CisJPCEtLSBBUEwgYXV0aG9yIHNlYmF3YWduZXIgLS0+CisJPHJlc291cmNlIG5hbWU9Il9ib3VuZGluZ0JveFBvaW50ZXJVUk5vR3JpcHBlciIgc3JjPSJyZXNvdXJjZXMvYm91bmRpbmdCb3hVTE5vR3JpcHBlci5wbmciIC8+CisJPCEtLSBBUEwgYXV0aG9yIHNlYmF3YWduZXIgLS0+CisJPHJlc291cmNlIG5hbWU9Il9ib3VuZGluZ0JveFBvaW50ZXJVTCIgc3JjPSJyZXNvdXJjZXMvYm91bmRpbmdCb3hVTC5wbmciIC8+CisJPCEtLSBBUEwgYXV0aG9yIHNlYmF3YWduZXIgLS0+CisJPHJlc291cmNlIG5hbWU9InBvaW50ZXJfd2hpdGVib2FyZF9yc2MiIHNyYz0icmVzb3VyY2VzL3BvaW50ZXIuc3dmIiAvPgorCTwhLS0gRmFtRmFtIEljb24gU2V0IC0tPgorCTxyZXNvdXJjZSBuYW1lPSJib2xkIiBzcmM9InJlc291cmNlcy90ZXh0X2JvbGQucG5nIiAvPgorCTwhLS0gRmFtRmFtIEljb24gU2V0IC0tPgorCTxyZXNvdXJjZSBuYW1lPSJpdGFsaWMiIHNyYz0icmVzb3VyY2VzL3RleHRfaXRhbGljLnBuZyIgLz4KKwk8IS0tIEZhbUZhbSBJY29uIFNldCAtLT4KKwk8cmVzb3VyY2UgbmFtZT0iYWRkX3doaXRlYm9hcmRfcnNjIiBzcmM9InJlc291cmNlcy9hZGQucG5nIiAvPgorCQorCTxpbmNsdWRlIGhyZWY9ImluY3ViYXRvci9semNvbWJvYm94Lmx6eCIvPiAKKwk8aW5jbHVkZSBocmVmPSJiYXNlLyIgLz4KKwk8aW5jbHVkZSBocmVmPSJ3aW5kb3dzLyIgLz4KKwk8aW5jbHVkZSBocmVmPSJoZWxwZXIvIiAvPgorCQorCTxpbmNsdWRlIGhyZWY9InBhbmVscy8iIC8+CisJCisJPGluY2x1ZGUgaHJlZj0iYmFzZVByb3BlcnR5UGFuZWxXaGl0ZWJvYXJkLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJmaXhlZEZpbGVFeHBsb3JlcldoaXRlQm9hcmQubHp4IiAvPgorICAgIDxpbmNsdWRlIGhyZWY9ImZpeGVkRmlsZUV4cGxvcmVyV2hpdGVib2FyZFBhbmVsLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJ3aGl0ZWJvYXJkTWluaUJ1dHRvbi5sengiIC8+CisgICAgPGluY2x1ZGUgaHJlZj0id2hpdGVib2FyZEJhck1lbnUubHp4IiAvPgorCisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL3BhbmVscy9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL3BhbmVscy9saWJyYXJ5Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzMwMzc5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvcGFuZWxzL2xpYnJhcnkubHp4CkBAIC0wLDAgKzEsMjYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKwk8aW5jbHVkZSBocmVmPSJtYWludG9vbHNwYW5lbC8iIC8+CisJPGluY2x1ZGUgaHJlZj0icHJvcGVydHlwYW5lbCIgLz4KKwkKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL3BhbmVscy9tYWludG9vbHNwYW5lbC9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL3BhbmVscy9tYWludG9vbHNwYW5lbC9saWJyYXJ5Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMThiOGZhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvcGFuZWxzL21haW50b29sc3BhbmVsL2xpYnJhcnkubHp4CkBAIC0wLDAgKzEsMzcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisJCisJPCEtLSAgQVBMIGF1dGhvciBzZWJhd2FnbmVyIC0tPgorICAgIDxyZXNvdXJjZSBuYW1lPSJzdWJfbWVudV90b29sc19wYW5lbF9yc2MiIHNyYz0icmVzb3VyY2VzL3N1Yl9tZW51LnBuZyIgLz4KKyAgICA8IS0tICBBUEwgYXV0aG9yIHNlYmF3YWduZXIgLS0+CisgICAgPHJlc291cmNlIG5hbWU9InN1Yl9tZW51X3RvcF9ncmlwX2NvbG9yZWRfcnNjIiBzcmM9InJlc291cmNlcy9zdWJfbWVudV90b3BfZ3JpcC5zd2YiIC8+CQorICAgIAorICAgIDwhLS0KKyAgICAgICAgSG93IHRvIGNyZWF0ZSBpbWFnZSBtYXA6CisgICAgICAgICRpbWFnZU1hZ2ljay9tb250YWdlICoucG5nIC10aWxlIDIweCAtZ2VvbWV0cnkgMjJ4MjIrMisyIGFsbF9pbWFnZXMuanBnCisgICAgIC0tPgorCisJPGluY2x1ZGUgaHJlZj0ibWFpblRvb2xzUGFuZWxJdGVtLmx6eCIgLz4gIAorCTxpbmNsdWRlIGhyZWY9Im1haW5Ub29sc1BhbmVsLmx6eCIgLz4gIAorCTxpbmNsdWRlIGhyZWY9InN1Yk1lbnVJY29uVG9vbHNUb1VwbG9hZC5sengiIC8+CisJCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9wYW5lbHMvbWFpbnRvb2xzcGFuZWwvbWFpblRvb2xzUGFuZWwubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvcGFuZWxzL21haW50b29sc3BhbmVsL21haW5Ub29sc1BhbmVsLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTg4MDc2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvcGFuZWxzL21haW50b29sc3BhbmVsL21haW5Ub29sc1BhbmVsLmx6eApAQCAtMCwwICsxLDI1MyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKwkKKzxjbGFzcyBuYW1lPSJ2ZXJ0aWNhbE1lbnVJY29uQmFyIiBleHRlbmRzPSJ2aWV3IiB5PSIyMiIgeD0iNCIgY2xpY2thYmxlPSJ0cnVlIj4KKwk8c2ltcGxlbGF5b3V0IGF4aXM9InkiIHNwYWNpbmc9IjIiIC8+CisJPG1haW5Ub29sc1BhbmVsSXRlbSBuYW1lPSJwbGFpbiIgbW9kaT0icGxhaW5Db25maXJtIiBsYWJlbGlkPSI2OSIgcmVzb3VyY2VJdGVtPSJwbGFpbiIgc2V0U2VsZWN0aW9uVG9JdGVtPSJmYWxzZSIgLz4KKwk8bWFpblRvb2xzUGFuZWxJdGVtIG5hbWU9InBsYWluU2xpZGUiIG1vZGk9InBsYWluU2xpZGUiIGxhYmVsaWQ9IjEwMDUiIHJlc291cmNlSXRlbT0icGxhaW5TbGlkZXMiIHNldFNlbGVjdGlvblRvSXRlbT0iZmFsc2UiIC8+CisJCisJPCEtLQorCTxtYWluVG9vbHNQYW5lbEl0ZW0gbmFtZT0iZHJhZyIgbW9kaT0iZHJhZyIgbGFiZWxpZD0iMTExMyIgcmVzb3VyY2VJdGVtPSJhcnJvd19kcmF3X3BhbmVsX3Rvb2xfY3Vyc29yIiAvPgorCSAtLT4KKworCTxtYWluVG9vbHNQYW5lbEl0ZW0gbmFtZT0ic2F2ZW9iaiIgbW9kaT0ic2F2ZW9iaiIgbGFiZWxpZD0iMTk3IiByZXNvdXJjZUl0ZW09InNhdmVvYmoiIHNldFNlbGVjdGlvblRvSXRlbT0iZmFsc2UiIC8+CisJCisJPG1haW5Ub29sc0hQYW5lbFNlcGVyYXRvcj4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJtb2RpIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciLz4KKyAgICA8L21haW5Ub29sc0hQYW5lbFNlcGVyYXRvcj4KKwk8cmVkb1VuZG9Ub29sc1BhbmVsSXRlbSBuYW1lPSJyZXZlcnQiIGRvcmVkbz0iZmFsc2UiIGxhYmVsaWQ9IjcwIiByZXNvdXJjZUl0ZW09InJldmVydCIgLz4KKwk8bWFpblRvb2xzSFBhbmVsU2VwZXJhdG9yPgorCQk8YXR0cmlidXRlIG5hbWU9Im1vZGkiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIvPgorCTwvbWFpblRvb2xzSFBhbmVsU2VwZXJhdG9yPgorCTxtYWluVG9vbHNQYW5lbEl0ZW0gbmFtZT0iaGFuZCIgbW9kaT0iaGFuZCIgbGFiZWxpZD0iNzIiIF9pc3NlbGVjdGVkPSJ0cnVlIiAKKwkJCQkJCXJlc291cmNlSXRlbT0ibWVudXBvaW50ZXJfcnNjIiAvPgorICAgIDxtYWluVG9vbHNQYW5lbEl0ZW0gbmFtZT0icG9pbnRlcldoaXRlYm9hcmQiIG1vZGk9InBvaW50ZXJXaGl0ZWJvYXJkIiAKKyAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsaWQ9IjU1NyIgeF9pbnNldFJlc291cmNlPSIxIiB5X2luc2V0UmVzb3VyY2U9IjEiCisgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZUl0ZW09InBvaW50ZXJfd2hpdGVib2FyZF9tZW51X3JzYyIgLz4KKwk8bWFpblRvb2xzUGFuZWxJdGVtIG5hbWU9ImxldHRlciIgbW9kaT0ibGV0dGVyIiBsYWJlbGlkPSI3MyIgcmVzb3VyY2VJdGVtPSJsZXR0ZXIiIC8+CisJPG1haW5Ub29sc1BhbmVsSXRlbSBuYW1lPSJwYWludCIgbW9kaT0icGFpbnQiIGxhYmVsaWQ9Ijc0IiByZXNvdXJjZUl0ZW09InBhaW50IiAvPgorCTxtYWluVG9vbHNQYW5lbEl0ZW0gbmFtZT0ibGluZSIgbW9kaT0ibGluZSIgbGFiZWxpZD0iNzUiIHJlc291cmNlSXRlbT0ibGluZV9yc2MiIC8+CisJPG1haW5Ub29sc1BhbmVsSXRlbSBuYW1lPSJ1bGluZSIgbW9kaT0idWxpbmUiIGxhYmVsaWQ9Ijc2IiByZXNvdXJjZUl0ZW09InVsaW5lX3JzYyIgLz4KKwk8bWFpblRvb2xzUGFuZWxJdGVtIG5hbWU9InJlY3RhbmdsZSIgbW9kaT0icmVjdGFuZ2xlIiBsYWJlbGlkPSI3NyIgcmVzb3VyY2VJdGVtPSJyZWN0YW5nbGUiIC8+CisJPG1haW5Ub29sc1BhbmVsSXRlbSBuYW1lPSJlbGxpcHNlIiBtb2RpPSJlbGxpcHNlIiBsYWJlbGlkPSI3OCIgcmVzb3VyY2VJdGVtPSJlbGxpcHNlIiAvPgorCTxtYWluVG9vbHNQYW5lbEl0ZW0gbmFtZT0iZHJhd2Fycm93IiBtb2RpPSJkcmF3YXJyb3ciIGxhYmVsaWQ9Ijc5IiByZXNvdXJjZUl0ZW09ImRyYXdhcnJvd2ljb25fcnNjIiAvPgorCisgICAgPG1haW5Ub29sc1BhbmVsSXRlbSBuYW1lPSJjbGlwYXJ0IiBtb2RpPSJjbGlwYXJ0IiBsYWJlbGlkPSIxMzIzIiA+CisgICAgICAgIAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgICAgICAgICAgdGhpcy5fYmdJY29uLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgICAgICAgICAgdmFyIGltYWdldXJsID0gY2FudmFzLmdldFVybCgpICsgJ3B1YmxpYy9jbGlwYXJ0cy90aHVtYi8nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBjYW52YXMuX2RyYXdhcmVhLmN1cnJlbnRDbGlwQXJ0UmVzc291cmNlTmFtZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5fcnNjSWNvbi5zZXRTb3VyY2UoaW1hZ2V1cmwpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIAorICAgICAgICA8IS0tCisgICAgICAgIDx2aWV3IHg9IiRvbmNleyBwYXJlbnQueF9pbnNldFJlc291cmNlIH0iIHk9IiRvbmNleyBwYXJlbnQueF9pbnNldFJlc291cmNlIH0iIAorICAgICAgICAgICAgICBoZWlnaHQ9IjE4IiB3aWR0aD0iMTgiIHN0cmV0Y2hlcz0iYm90aCIgbmFtZT0iX2JnSWNvbkljb24iIC8+ICAgICAgCisgICAgICAgICAtLT4KKyAgICAgICAgICAgICAgCisgICAgICAgIDx2aWV3IHJlc291cmNlPSJzdWJfbWVudV90b29sc19wYW5lbF9yc2MiCisgICAgICAgICAgICAgIHg9IiRvbmNleyBwYXJlbnQud2lkdGggLSAxMCB9IiB5PSIkb25jZXsgcGFyZW50LmhlaWdodCAtIDEwIH0iPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICAJPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIlNob3cgU3ViIE1lbnUiKTsKKyAgICAgICAgICAgICAgICBuZXcgbHouc3ViTWVudUljb25Ub29sc1RvVXBsb2FkKGNhbnZhcyx7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6NTAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OjgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZUb29sYmFyOnBhcmVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIF1dPgorICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAgICAgPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSIxMzM1IiAvPgorICAgICAgICA8L3ZpZXc+CisgICAgICAgIAorICAgIDwvbWFpblRvb2xzUGFuZWxJdGVtPgorCis8L2NsYXNzPgorCis8Y2xhc3MgbmFtZT0iaG9yaXpvbnRhbE1lbnVJY29uQmFyIiBleHRlbmRzPSJ2aWV3IiB5PSIyMiIgeD0iNCIgY2xpY2thYmxlPSJ0cnVlIj4KKwk8c2ltcGxlbGF5b3V0IGF4aXM9IngiIHNwYWNpbmc9IjIiIC8+CisJPG1haW5Ub29sc1BhbmVsSXRlbSBuYW1lPSJwbGFpbiIgbW9kaT0icGxhaW5Db25maXJtIiBsYWJlbGlkPSI2OSIgcmVzb3VyY2VJdGVtPSJwbGFpbiIgc2V0U2VsZWN0aW9uVG9JdGVtPSJmYWxzZSIgLz4KKwk8bWFpblRvb2xzUGFuZWxJdGVtIG5hbWU9InBsYWluU2xpZGUiIG1vZGk9InBsYWluU2xpZGUiIGxhYmVsaWQ9IjEwMDUiIHJlc291cmNlSXRlbT0icGxhaW5TbGlkZXMiIHNldFNlbGVjdGlvblRvSXRlbT0iZmFsc2UiIC8+CisJPCEtLQorCTxtYWluVG9vbHNQYW5lbEl0ZW0gbmFtZT0iZHJhZyIgbW9kaT0iZHJhZyIgbGFiZWxpZD0iMTExMyIgcmVzb3VyY2VJdGVtPSJhcnJvd19kcmF3X3BhbmVsX3Rvb2xfY3Vyc29yIiAvPgorICAgICAtLT4KKwk8bWFpblRvb2xzUGFuZWxJdGVtIG5hbWU9InNhdmVvYmoiIG1vZGk9InNhdmVvYmoiIGxhYmVsaWQ9IjE5NyIgcmVzb3VyY2VJdGVtPSJzYXZlb2JqIiBzZXRTZWxlY3Rpb25Ub0l0ZW09ImZhbHNlIiAvPgorCQorCTxtYWluVG9vbHNWUGFuZWxTZXBlcmF0b3I+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ibW9kaSIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIi8+CisgICAgPC9tYWluVG9vbHNWUGFuZWxTZXBlcmF0b3I+CisJPHJlZG9VbmRvVG9vbHNQYW5lbEl0ZW0gbmFtZT0icmV2ZXJ0IiBkb3JlZG89ImZhbHNlIiBsYWJlbGlkPSI3MCIgcmVzb3VyY2VJdGVtPSJyZXZlcnQiIC8+CisJPG1haW5Ub29sc1ZQYW5lbFNlcGVyYXRvcj4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJtb2RpIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciLz4KKyAgICA8L21haW5Ub29sc1ZQYW5lbFNlcGVyYXRvcj4JCisJPG1haW5Ub29sc1BhbmVsSXRlbSBuYW1lPSJoYW5kIiBtb2RpPSJoYW5kIiBsYWJlbGlkPSI3MiIgX2lzc2VsZWN0ZWQ9InRydWUiIAorCQkJCQkJcmVzb3VyY2VJdGVtPSJtZW51cG9pbnRlcl9yc2MiIC8+CisgICAgPG1haW5Ub29sc1BhbmVsSXRlbSBuYW1lPSJwb2ludGVyV2hpdGVib2FyZCIgbW9kaT0icG9pbnRlcldoaXRlYm9hcmQiIAorICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxpZD0iNTU3IiByZXNvdXJjZUl0ZW09InBvaW50ZXJfd2hpdGVib2FyZF9tZW51X3JzYyIgLz4KKwk8bWFpblRvb2xzUGFuZWxJdGVtIG5hbWU9ImxldHRlciIgbW9kaT0ibGV0dGVyIiBsYWJlbGlkPSI3MyIgcmVzb3VyY2VJdGVtPSJsZXR0ZXIiIC8+CisJPG1haW5Ub29sc1BhbmVsSXRlbSBuYW1lPSJwYWludCIgbW9kaT0icGFpbnQiIGxhYmVsaWQ9Ijc0IiByZXNvdXJjZUl0ZW09InBhaW50IiAvPgorCTxtYWluVG9vbHNQYW5lbEl0ZW0gbmFtZT0ibGluZSIgbW9kaT0ibGluZSIgbGFiZWxpZD0iNzUiIHJlc291cmNlSXRlbT0ibGluZV9yc2MiIC8+CisJPG1haW5Ub29sc1BhbmVsSXRlbSBuYW1lPSJ1bGluZSIgbW9kaT0idWxpbmUiIGxhYmVsaWQ9Ijc2IiByZXNvdXJjZUl0ZW09InVsaW5lX3JzYyIgLz4KKwk8bWFpblRvb2xzUGFuZWxJdGVtIG5hbWU9InJlY3RhbmdsZSIgbW9kaT0icmVjdGFuZ2xlIiBsYWJlbGlkPSI3NyIgcmVzb3VyY2VJdGVtPSJyZWN0YW5nbGUiIC8+CisJPG1haW5Ub29sc1BhbmVsSXRlbSBuYW1lPSJlbGxpcHNlIiBtb2RpPSJlbGxpcHNlIiBsYWJlbGlkPSI3OCIgcmVzb3VyY2VJdGVtPSJlbGxpcHNlIiAvPgorCTxtYWluVG9vbHNQYW5lbEl0ZW0gbmFtZT0iZHJhd2Fycm93IiBtb2RpPSJkcmF3YXJyb3ciIGxhYmVsaWQ9Ijc5IiByZXNvdXJjZUl0ZW09ImRyYXdhcnJvd2ljb25fcnNjIiAvPgorCTxtYWluVG9vbHNQYW5lbEl0ZW0gbmFtZT0iY2xpcGFydCIgbW9kaT0iY2xpcGFydCIgbGFiZWxpZD0iMTMyMyIgPgorICAgICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAgICAgICAgIGlmICh0aGlzWyJfYmdJY29uIl0pIHsKKyAgICAgICAgCSAgIHRoaXMuX2JnSWNvbi5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKyAgICAgICAgCX0KKyAgICAgICAgICAgIHZhciBpbWFnZXVybCA9IGNhbnZhcy5nZXRVcmwoKSArICdwdWJsaWMvY2xpcGFydHMvdGh1bWIvJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgY2FudmFzLl9kcmF3YXJlYS5jdXJyZW50Q2xpcEFydFJlc3NvdXJjZU5hbWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuX3JzY0ljb24uc2V0U291cmNlKGltYWdldXJsKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAKKyAgICAgICAgPHZpZXcgeD0iJG9uY2V7IHBhcmVudC54X2luc2V0UmVzb3VyY2UgfSIgeT0iJG9uY2V7IHBhcmVudC54X2luc2V0UmVzb3VyY2UgfSIgCisgICAgICAgICAgICAgIGhlaWdodD0iMTgiIHdpZHRoPSIxOCIgc3RyZXRjaGVzPSJib3RoIiBuYW1lPSJfYmdJY29uSWNvbiIgLz4gICAgICAKKyAgICAgICAgCisgICAgICAgIDx2aWV3IHJlc291cmNlPSJzdWJfbWVudV90b29sc19wYW5lbF9yc2MiCisgICAgICAgICAgICAgIHg9IiRvbmNleyBwYXJlbnQud2lkdGggLSAxMCB9IiB5PSIkb25jZXsgcGFyZW50LmhlaWdodCAtIDEwIH0iPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIlNob3cgU3ViIE1lbnUiKTsKKyAgICAgICAgICAgICAgICBuZXcgbHouc3ViTWVudUljb25Ub29sc1RvVXBsb2FkKGNhbnZhcyx7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHg6NTAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB5OjgyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZUb29sYmFyOnBhcmVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAgICAgPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSIxMzM1IiAvPgorICAgICAgICA8L3ZpZXc+CisgICAgICAgIAorICAgIDwvbWFpblRvb2xzUGFuZWxJdGVtPgorPC9jbGFzcz4KKworCis8Y2xhc3MgbmFtZT0ibWFpblRvb2xzVG9wUGFuZWwiIGV4dGVuZHM9ImJhc2VUb3BQYW5lbCIgCisJICAgd2lkdGg9IjQyMCIgaGVpZ2h0PSIzMyIgdGl0bGU9IiIgZG9ja2luZz0idHJ1ZSIKKwkgICBhY3RpdmF0aW9uQ2xhc3NCb3VuZGluZz0ibWFpblRvb2xzTGVmdFBhbmVsIgorCSAgIGFjdGl2YXRpb25WQ2xhc3NCb3VuZGluZz0ibWFpblRvb2xzVG9wUGFuZWwiCisJICAgbGVmdENsYXNzUGFuZWw9Im1haW5Ub29sc0xlZnRQYW5lbCIKKwkgICB0b3BDbGFzc1BhbmVsPSJtYWluVG9vbHNUb3BQYW5lbCIKKwkgICBib3R0b21DbGFzc1BhbmVsPSJtYWluVG9vbHNUb3BQYW5lbCIKKwkgICByaWdodENsYXNzUGFuZWw9Im1haW5Ub29sc0xlZnRQYW5lbCIKKwkgICB2ZXJ0aWNhbENsYXNzQWN0aXZlPSJ0cnVlIgorCSAgIGhXaWR0aD0iMzMiIGhIZWlnaHQ9IjQyMCI+CisJCisgICAgPG1ldGhvZCBuYW1lPSJ1cGRhdGVUb29sU2VsZWN0aW9uIiBhcmdzPSJtb2RpIj4KKyAgICAJPCFbQ0RBVEFbCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiLXVwZGF0ZVRvb2xTZWxlY3Rpb24tICAiLG1vZGkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTx0aGlzLl90b29scy5zdWJ2aWV3cy5sZW5ndGg7aSsrKXsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIAlpZiAodGhpcy5fdG9vbHMuc3Vidmlld3NbaV0ubW9kaSA9PSBtb2RpKSB7CisgICAgICAgICAgICAJCQorICAgICAgICAgICAgCQl0aGlzLl90b29scy5zdWJ2aWV3c1tpXS5zZXRTZWxlY3Rpb25XaXRob3V0RXZlbnQoKTsKKyAgICAgICAgICAgIAkJcmV0dXJuOworICAgICAgICAgICAgCX0KKyAgICAgICAgICAgIAkKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKwk8aG9yaXpvbnRhbE1lbnVJY29uQmFyIG5hbWU9Il90b29scyIgeD0iMjAiIHk9IjQiIC8+Cis8L2NsYXNzPgkKKwkKKzxjbGFzcyBuYW1lPSJtYWluVG9vbHNMZWZ0UGFuZWwiIGV4dGVuZHM9ImJhc2VMZWZ0UGFuZWwiIAorCSAgIHdpZHRoPSIzMyIgaGVpZ2h0PSI0MjAiIHRpdGxlPSIiIGRvY2tpbmc9InRydWUiCisJICAgYWN0aXZhdGlvbkNsYXNzQm91bmRpbmc9Im1haW5Ub29sc0xlZnRQYW5lbCIKKwkgICBhY3RpdmF0aW9uVkNsYXNzQm91bmRpbmc9Im1haW5Ub29sc1RvcFBhbmVsIgorCSAgIHRvcENsYXNzUGFuZWw9Im1haW5Ub29sc1RvcFBhbmVsIgorCSAgIGJvdHRvbUNsYXNzUGFuZWw9Im1haW5Ub29sc1RvcFBhbmVsIgorCSAgIGxlZnRDbGFzc1BhbmVsPSJtYWluVG9vbHNMZWZ0UGFuZWwiCisJICAgcmlnaHRDbGFzc1BhbmVsPSJtYWluVG9vbHNMZWZ0UGFuZWwiCisJICAgdmVydGljYWxDbGFzc0FjdGl2ZT0iZmFsc2UiCisJICAgdldpZHRoPSI0MjAiIHZIZWlnaHQ9IjMzIj4KKwkKKyAgICA8bWV0aG9kIG5hbWU9InVwZGF0ZVRvb2xTZWxlY3Rpb24iIGFyZ3M9Im1vZGkiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCItdXBkYXRlVG9vbFNlbGVjdGlvbi0gICIsbW9kaSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPHRoaXMuX3Rvb2xzLnN1YnZpZXdzLmxlbmd0aDtpKyspeworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmICh0aGlzLl90b29scy5zdWJ2aWV3c1tpXS5tb2RpID09IG1vZGkpIHsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Rvb2xzLnN1YnZpZXdzW2ldLnNldFNlbGVjdGlvbldpdGhvdXRFdmVudCgpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgkKKwkKKwk8dmVydGljYWxNZW51SWNvbkJhciBuYW1lPSJfdG9vbHMiIHg9IjMiIHk9IjIwIiAvPgorPC9jbGFzcz4KKworPCEtLSAjIyMjIyMjIyMjIyMjIyMjCisgICAgTm9uIE1vZGVyYXRvciBUb29scworLS0+CisKKzxjbGFzcyBuYW1lPSJ2ZXJ0aWNhbE1lbnVJY29uQmFyUG9pbnRlciIgZXh0ZW5kcz0idmlldyIgeT0iMjIiIHg9IjQiIGNsaWNrYWJsZT0idHJ1ZSI+CisgICAgPHNpbXBsZWxheW91dCBheGlzPSJ5IiBzcGFjaW5nPSIyIiAvPgorICAgIDxtYWluVG9vbHNQYW5lbEl0ZW0gbmFtZT0icG9pbnRlcldoaXRlYm9hcmQiIG1vZGk9InBvaW50ZXJXaGl0ZWJvYXJkIiBsYWJlbGlkPSI1NTciIAorICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VJdGVtPSJwb2ludGVyX3doaXRlYm9hcmRfbWVudV9yc2MiIC8+Cis8L2NsYXNzPgorCis8Y2xhc3MgbmFtZT0iaG9yaXpvbnRhbE1lbnVJY29uQmFyUG9pbnRlciIgZXh0ZW5kcz0idmlldyIgeT0iMjIiIHg9IjQiIGNsaWNrYWJsZT0idHJ1ZSI+CisgICAgPHNpbXBsZWxheW91dCBheGlzPSJ4IiBzcGFjaW5nPSIyIiAvPgorICAgIDxtYWluVG9vbHNQYW5lbEl0ZW0gbmFtZT0icG9pbnRlcldoaXRlYm9hcmQiIG1vZGk9InBvaW50ZXJXaGl0ZWJvYXJkIiBsYWJlbGlkPSI1NTciIAorICAgICAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VJdGVtPSJwb2ludGVyX3doaXRlYm9hcmRfbWVudV9yc2MiIC8+Cis8L2NsYXNzPgorCis8Y2xhc3MgbmFtZT0ibWFpblRvb2xzVG9wUGFuZWxQb2ludGVyIiBleHRlbmRzPSJiYXNlVG9wUGFuZWwiIAorICAgICAgIHdpZHRoPSI1MiIgaGVpZ2h0PSIzMiIgdGl0bGU9IiIgZG9ja2luZz0idHJ1ZSIKKyAgICAgICBhY3RpdmF0aW9uQ2xhc3NCb3VuZGluZz0ibWFpblRvb2xzTGVmdFBhbmVsUG9pbnRlciIKKyAgICAgICBhY3RpdmF0aW9uVkNsYXNzQm91bmRpbmc9Im1haW5Ub29sc1RvcFBhbmVsUG9pbnRlciIKKyAgICAgICBsZWZ0Q2xhc3NQYW5lbD0ibWFpblRvb2xzTGVmdFBhbmVsUG9pbnRlciIKKyAgICAgICB0b3BDbGFzc1BhbmVsPSJtYWluVG9vbHNUb3BQYW5lbFBvaW50ZXIiCisgICAgICAgYm90dG9tQ2xhc3NQYW5lbD0ibWFpblRvb2xzVG9wUGFuZWxQb2ludGVyIgorICAgICAgIHJpZ2h0Q2xhc3NQYW5lbD0ibWFpblRvb2xzTGVmdFBhbmVsUG9pbnRlciIKKyAgICAgICB2ZXJ0aWNhbENsYXNzQWN0aXZlPSJ0cnVlIgorICAgICAgIGhXaWR0aD0iMzIiIGhIZWlnaHQ9IjUyIj4KKyAgICAKKyAgICA8aG9yaXpvbnRhbE1lbnVJY29uQmFyUG9pbnRlciB4PSIyMCIgeT0iNCIgLz4KKzwvY2xhc3M+ICAgIAorCis8Y2xhc3MgbmFtZT0ibWFpblRvb2xzTGVmdFBhbmVsUG9pbnRlciIgZXh0ZW5kcz0iYmFzZUxlZnRQYW5lbCIgCisgICAgICAgd2lkdGg9IjMyIiBoZWlnaHQ9IjUyIiB0aXRsZT0iIiBkb2NraW5nPSJ0cnVlIgorICAgICAgIGFjdGl2YXRpb25DbGFzc0JvdW5kaW5nPSJtYWluVG9vbHNMZWZ0UGFuZWxQb2ludGVyIgorICAgICAgIGFjdGl2YXRpb25WQ2xhc3NCb3VuZGluZz0ibWFpblRvb2xzVG9wUGFuZWxQb2ludGVyIgorICAgICAgIHRvcENsYXNzUGFuZWw9Im1haW5Ub29sc1RvcFBhbmVsUG9pbnRlciIKKyAgICAgICBib3R0b21DbGFzc1BhbmVsPSJtYWluVG9vbHNUb3BQYW5lbFBvaW50ZXIiCisgICAgICAgbGVmdENsYXNzUGFuZWw9Im1haW5Ub29sc0xlZnRQYW5lbFBvaW50ZXIiCisgICAgICAgcmlnaHRDbGFzc1BhbmVsPSJtYWluVG9vbHNMZWZ0UGFuZWxQb2ludGVyIgorICAgICAgIHZlcnRpY2FsQ2xhc3NBY3RpdmU9ImZhbHNlIgorICAgICAgIHZXaWR0aD0iNTIiIHZIZWlnaHQ9IjMyIj4KKyAgICAKKyAgICA8dmVydGljYWxNZW51SWNvbkJhclBvaW50ZXIgeD0iMiIgeT0iMjAiIC8+Cis8L2NsYXNzPgkKKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvcGFuZWxzL21haW50b29sc3BhbmVsL21haW5Ub29sc1BhbmVsSXRlbS5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9wYW5lbHMvbWFpbnRvb2xzcGFuZWwvbWFpblRvb2xzUGFuZWxJdGVtLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NjVjNzEwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvcGFuZWxzL21haW50b29sc3BhbmVsL21haW5Ub29sc1BhbmVsSXRlbS5sengKQEAgLTAsMCArMSw2NSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKyAKKzxjbGFzcyBuYW1lPSJtYWluVG9vbHNQYW5lbEl0ZW0iIGV4dGVuZHM9ImJsdWVCdXR0b24iIAorCSAgIHdpZHRoPSIyNiIgaGVpZ2h0PSIyNiI+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJtb2RpIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJsYWJlbGlkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0ic2V0U2VsZWN0aW9uVG9JdGVtIiB2YWx1ZT0idHJ1ZSIgdHlwZT0iYm9vbGVhbiIgLz4KKwk8YXR0cmlidXRlIG5hbWU9Il9pc3NlbGVjdGVkIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisJCisJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKwkJaWYgKHRoaXMuX2lzc2VsZWN0ZWQpIHBhcmVudC5wYXJlbnQucGFyZW50LnNldFNlbGVjdGlvbih0aGlzKTsKKwk8L2hhbmRsZXI+CisJCisJPG1ldGhvZCBuYW1lPSJzZXRTZWxlY3Rpb25XaXRob3V0RXZlbnQiPgorICAgICAgICBwYXJlbnQucGFyZW50LnBhcmVudC5zZXRTZWxlY3Rpb25XaXRob3V0RXZlbnQodGhpcyk7CisgICAgPC9tZXRob2Q+CisJCisJPGhhbmRsZXIgbmFtZT0ib25tb3VzZXVwIj4KKwkJLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgicGFyZW50LnBhcmVudC5wYXJlbnQiLHBhcmVudC5wYXJlbnQucGFyZW50KTsKKwkJcGFyZW50LnBhcmVudC5wYXJlbnQuc2V0U2VsZWN0aW9uKHRoaXMpOworCTwvaGFuZGxlcj4KKwk8bGFiZWxUb29sdGlwIG5hbWU9Il9fbGFiZWx0b29sdGlwIiBsYWJlbGlkPSIkb25jZXsgcGFyZW50LmxhYmVsaWQgfSIgLz4KKzwvY2xhc3M+CisKKzxjbGFzcyBuYW1lPSJyZWRvVW5kb1Rvb2xzUGFuZWxJdGVtIiBleHRlbmRzPSJtYWluVG9vbHNQYW5lbEl0ZW0iIHNldFNlbGVjdGlvblRvSXRlbT0iZmFsc2UiPgorCTxhdHRyaWJ1dGUgbmFtZT0iZG9yZWRvIiB2YWx1ZT0idHJ1ZSIgdHlwZT0iYm9vbGVhbiIgLz4KKwk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4JICAKKyAgICAgICAgICBpZih0aGlzLmRvcmVkbyl7CisgICAgICAgICAgICB0aGlzLnBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5fZHJhd2FyZWFNYXNrLl9kcmF3YXJlYS5kb3JlZG8oKTsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5wYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQuX2RyYXdhcmVhTWFzay5fZHJhd2FyZWEudW5kb3JlZG8oKTsKKyAgICAgICAgICB9CisgICAgICAgIDwvaGFuZGxlcj4KKzwvY2xhc3M+CisKKzxjbGFzcyBuYW1lPSJtYWluVG9vbHNIUGFuZWxTZXBlcmF0b3IiIGV4dGVuZHM9InZpZXciIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignbWFpbkJvcmRlckNvbG9yJykgfSIKKwkgICB3aWR0aD0iMjYiIGhlaWdodD0iMSIgPjwvY2xhc3M+CisJICAgCis8Y2xhc3MgbmFtZT0ibWFpblRvb2xzVlBhbmVsU2VwZXJhdG9yIiBleHRlbmRzPSJ2aWV3IiBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ21haW5Cb3JkZXJDb2xvcicpIH0iCisJICAgd2lkdGg9IjEiIGhlaWdodD0iMjYiID48L2NsYXNzPgorCisgICAgCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9wYW5lbHMvbWFpbnRvb2xzcGFuZWwvcmVzb3VyY2VzL3N1Yl9tZW51LmZsYSBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL3BhbmVscy9tYWludG9vbHNwYW5lbC9yZXNvdXJjZXMvc3ViX21lbnUuZmxhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiNmY0ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9wYW5lbHMvbWFpbnRvb2xzcGFuZWwvcmVzb3VyY2VzL3N1Yl9tZW51LmZsYQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9wYW5lbHMvbWFpbnRvb2xzcGFuZWwvcmVzb3VyY2VzL3N1Yl9tZW51LnBuZyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL3BhbmVscy9tYWludG9vbHNwYW5lbC9yZXNvdXJjZXMvc3ViX21lbnUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxODliYzkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9wYW5lbHMvbWFpbnRvb2xzcGFuZWwvcmVzb3VyY2VzL3N1Yl9tZW51LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9wYW5lbHMvbWFpbnRvb2xzcGFuZWwvcmVzb3VyY2VzL3N1Yl9tZW51X3RvcF9ncmlwLmZsYSBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL3BhbmVscy9tYWludG9vbHNwYW5lbC9yZXNvdXJjZXMvc3ViX21lbnVfdG9wX2dyaXAuZmxhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0MzQ0YjIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9wYW5lbHMvbWFpbnRvb2xzcGFuZWwvcmVzb3VyY2VzL3N1Yl9tZW51X3RvcF9ncmlwLmZsYQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9wYW5lbHMvbWFpbnRvb2xzcGFuZWwvcmVzb3VyY2VzL3N1Yl9tZW51X3RvcF9ncmlwLnN3ZiBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL3BhbmVscy9tYWludG9vbHNwYW5lbC9yZXNvdXJjZXMvc3ViX21lbnVfdG9wX2dyaXAuc3dmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxZGU1NjYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9wYW5lbHMvbWFpbnRvb2xzcGFuZWwvcmVzb3VyY2VzL3N1Yl9tZW51X3RvcF9ncmlwLnN3ZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9wYW5lbHMvbWFpbnRvb2xzcGFuZWwvc3ViTWVudUljb25Ub29sc1RvVXBsb2FkLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL3BhbmVscy9tYWludG9vbHNwYW5lbC9zdWJNZW51SWNvblRvb2xzVG9VcGxvYWQubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxNTRmNTEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9wYW5lbHMvbWFpbnRvb2xzcGFuZWwvc3ViTWVudUljb25Ub29sc1RvVXBsb2FkLmx6eApAQCAtMCwwICsxLDM1NCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKwkKKzxjbGFzcyBuYW1lPSJtaW5pSWNvblNteWJvbEV4dHJhSWNvbnMiIGV4dGVuZHM9InZpZXciIHdpZHRoPSIyMiIgaGVpZ2h0PSIyMiI+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJtb2RpIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciLz4KKwkKKwk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKwkJcGFyZW50LnNlbmROZXdJY29uKHRoaXMsIiIpOworCTwvaGFuZGxlcj4KKwkKKwk8aGFuZGxlciBuYW1lPSJvbmRibGNsaWNrIj4KKwkJcGFyZW50LnNlbmROZXdJY29uKHRoaXMsIiIpOworCQlwYXJlbnQuY2hvb3NlU2VsZWN0KCk7CisJPC9oYW5kbGVyPgorCQorCTxsYWJlbFRvb2x0aXAgdGV4dD0iJG9uY2V7IHBhcmVudC5tb2RpIH0iIC8+CisJCis8L2NsYXNzPgorCis8Y2xhc3MgbmFtZT0ibWluaUljb25TbXlib2xFeHRyYUljb25zSW1hZ2VNYXAiIGV4dGVuZHM9InZpZXciID4KKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgcGFyZW50LnBhcmVudC5zZW5kSW1hZ2VNYXBOZXdJY29uKHRoaXMpOworICAgIDwvaGFuZGxlcj4KKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbmRibGNsaWNrIj4KKyAgICAgICAgcGFyZW50LnBhcmVudC5zZW5kSW1hZ2VNYXBOZXdJY29uKHRoaXMpOworICAgICAgICBwYXJlbnQuY2hvb3NlU2VsZWN0KCk7CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdmVyIiBhcmdzPSJ0T2JqIj4KKyAgICAJcGFyZW50Lm9ubW91c2VvdmVyLnNlbmRFdmVudCh0T2JqKTsKKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZW91dCIgYXJncz0idE9iaiI+CisgICAgCXBhcmVudC5vbm1vdXNlb3V0LnNlbmRFdmVudCh0T2JqKTsKKwk8L2hhbmRsZXI+CisgICAgCis8L2NsYXNzPgorCis8Y2xhc3MgbmFtZT0ibWluaUljb25TbXlib2xFeHRyYUljb25zU2VwYXJhdG9yIiBleHRlbmRzPSJ2aWV3IiB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCB9IiAKKwkgICBoZWlnaHQ9IjIyIj4KKwkKKwk8YXR0cmlidXRlIG5hbWU9InRpdGxlIiB0eXBlPSJzdHJpbmciIHZhbHVlPSJ0aXRsZSIgLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9Imlzb3BlbiIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CisJCisJPG1ldGhvZCBuYW1lPSJ0b2dnbGVvcGVuIj4KKwkJdGhpcy5zZXRBdHRyaWJ1dGUoImlzb3BlbiIsIXRoaXMuaXNvcGVuKTsKKwk8L21ldGhvZD4KKwkKKwk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKwkJdGhpcy50b2dnbGVvcGVuKCk7CisJPC9oYW5kbGVyPgorCQorCTx2aWV3IHdpZHRoPSIkeyB0aGlzLnBhcmVudC5wYXJlbnQud2lkdGggfSIgeT0iMCIgc3RyZXRjaGVzPSJ3aWR0aCIKKyAgICAgICAgICAgICAgICByZXNvdXJjZT0icHJlc2VudGVyX3RodW1iX3JzYyIgPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgdGhpcy5zZXRUaW50UkdCKGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdiYXNlYmdjb2xvcml6ZXInKSw5MCk7CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8bWV0aG9kIG5hbWU9InNldFRpbnRSR0IiIGFyZ3M9ImNvbG9yLCBicmlnaHRuZXNzIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgaWYgKGNvbG9yICE9ICIiICYmIGNvbG9yICE9IG51bGwpeworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChicmlnaHRuZXNzID09IG51bGwpIHsgYnJpZ2h0bmVzcyA9IDA7IH0KKyAgICAgICAgICAgICAgICB2YXIgcmdiID0gY29sb3I7CisgICAgICAgICAgICAgICAgdmFyIHJlZD0ocmdiID4+IDE2KSAmIDB4RkY7CisgICAgICAgICAgICAgICAgdmFyIGdyZWVuPShyZ2IgPj4gOCkgJiAweEZGOworICAgICAgICAgICAgICAgIHZhciBibHVlPXJnYiAmIDB4RkY7CisgICAgCisgICAgICAgICAgICAgICAgdGhpcy5zZXRDb2xvclRyYW5zZm9ybSggeyByYSA6IHJlZCwgZ2EgOiBncmVlbiwgYmEgOiBibHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYiA6IDAsIGdiIDogMCwgYmIgOiAwIH0gKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZXhwbG9yZXJCb3gvc2V0VGludFJHQiIsdGhpcyk7CisgICAgICAgICAgICAgICAgaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZXhwbG9yZXJCb3gvc2V0VGludFJHQiIsIHsgcmEgOiByZWQsIGdhIDogZ3JlZW4sIGJhIDogYmx1ZSwgcmIgOiAwLCBnYiA6IDAsIGJiIDogMCB9ICk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9tZXRob2Q+ICAgICAgICAgICAgCisgICAgPC92aWV3PgkKKyAgICAKKyAgICA8dmlldyB2aXNpYmxlPSIkeyAhdGhpcy5wYXJlbnQuaXNvcGVuIH0iIHg9IjIiIHk9IjIiIHJlc291cmNlPSJjb25mZXJlbmNlQm94X2J1dHRvbl9taW5fc21hbGxfcnNjIiAvPgorICAgIDx2aWV3IHZpc2libGU9IiR7IHRoaXMucGFyZW50Lmlzb3BlbiB9IiB4PSIyIiB5PSIyIiByZXNvdXJjZT0iY29uZmVyZW5jZUJveF9idXR0b25fbWF4X3NtYWxsX3JzYyIgLz4KKworICAgIDx0ZXh0IGZvbnRzaXplPSIxMSIgaGVpZ2h0PSIxNyIgeD0iMTYiIHk9IjEiIHRleHQ9IiR7IHRoaXMucGFyZW50LnRpdGxlIH0iIAorICAgICAgICAgICAgZmdjb2xvcj0iMHhGRkZGRkYiIHJlc2l6ZT0idHJ1ZSIgLz4KKyAgICAgICAgICAgIAorPC9jbGFzcz4KKworPGNsYXNzIG5hbWU9Im1pbmlJY29uU215Ym9sRXh0cmFJY29uc0NvbnRhaW5lciIgZXh0ZW5kcz0idGV4dCIgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGggfSI+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJmTmFtZSIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIi8+CisJPGF0dHJpYnV0ZSBuYW1lPSJmb2xkZXJOYW1lIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciLz4KKwk8YXR0cmlidXRlIG5hbWU9Imljb25MaXN0IiB2YWx1ZT0ibnVsbCIvPgorCTxhdHRyaWJ1dGUgbmFtZT0iaXNvcGVuIiB2YWx1ZT0idHJ1ZSIgdHlwZT0iYm9vbGVhbiIgLz4KKwkKKwk8bWV0aG9kIG5hbWU9InNlbmROZXdJY29uIiBhcmdzPSJ0T2JqIj4KKyAgICAgICAgcGFyZW50LnNlbmROZXdJY29uKHRPYmosdGhpcy5mb2xkZXJOYW1lKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImNhbGNJbWFnZU1hcE5ld0ljb24iPgorICAgIAl2YXIgdFggPSBNYXRoLmZsb29yKHRoaXMuX2NvbnRlbnQuZ2V0TW91c2UoJ3gnKS8yNik7CisgICAgCXZhciB0WSA9IE1hdGguZmxvb3IodGhpcy5fY29udGVudC5nZXRNb3VzZSgneScpLzI2KTsKKyAgICAJCisgICAgCXZhciB0TnVtYmVyID0gdFggKyAodFkgKiAyMCk7CisgICAgCQorICAgIAlpZiAodE51bWJlciA+IHRoaXMuaWNvbkxpc3QubGVuZ3RoKSB7CisgICAgCQlyZXR1cm4gIiI7CisgICAgCX0KKyAgICAJCisgICAgCXJldHVybiB0aGlzLmljb25MaXN0W3ROdW1iZXJdOworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0ic2VuZEltYWdlTWFwTmV3SWNvbiI+CisgICAgICAgIHZhciB0T2JqID0gbmV3IE9iamVjdCgpOworICAgICAgICB0T2JqWyJtb2RpIl0gPSB0aGlzLmNhbGNJbWFnZU1hcE5ld0ljb24oKTsKKyAgICAgICAgaWYgKHRPYmpbIm1vZGkiXSA9PSAiIikgeworICAgICAgICAJcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHRoaXMuX2NvbnRlbnQuY2xlYXJUb29sVGlwUmVmZXJlbmNlKCk7CisgICAgICAgIHBhcmVudC5zZW5kTmV3SWNvbih0T2JqLHRoaXMuZm9sZGVyTmFtZSk7CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJjaG9vc2VTZWxlY3QiPgorICAgIAl0aGlzLl9jb250ZW50LmNsZWFyVG9vbFRpcFJlZmVyZW5jZSgpOworICAgICAgICBwYXJlbnQuY2hvb3NlU2VsZWN0KCk7CisgICAgPC9tZXRob2Q+CisKKwkKKwk8bWluaUljb25TbXlib2xFeHRyYUljb25zU2VwYXJhdG9yIHRpdGxlPSIkb25jZXsgcGFyZW50LmZOYW1lIH0iIGlzb3Blbj0iJG9uY2V7IHBhcmVudC5pc29wZW4gfSI+CisJCTxoYW5kbGVyIG5hbWU9Im9uaXNvcGVuIiBhcmdzPSJvIj4KKwkJCWlmIChvKSB7CisJCQkJcGFyZW50Ll9jb250ZW50LnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKwkJCX0gZWxzZSB7CisJCQkJcGFyZW50Ll9jb250ZW50LnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworCQkJfQorCQk8L2hhbmRsZXI+CisJPC9taW5pSWNvblNteWJvbEV4dHJhSWNvbnNTZXBhcmF0b3I+CisJCisJPHZpZXcgbmFtZT0iX2NvbnRlbnQiIHk9IjIyIiB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCB9Ij4KKwkJCisJCTxhdHRyaWJ1dGUgbmFtZT0iY2FsY0l0ZW0iIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKwkJCisJCTxhdHRyaWJ1dGUgbmFtZT0idG9vbFRpcFJlZmVyZW5jZSIgdmFsdWU9Im51bGwiIC8+CisJCQorCQk8bWV0aG9kIG5hbWU9ImNsZWFyVG9vbFRpcFJlZmVyZW5jZSI+CisJCQlpZiAodGhpcy50b29sVGlwUmVmZXJlbmNlICE9IG51bGwpIHsKKwkJCQl0aGlzLnRvb2xUaXBSZWZlcmVuY2UuZGVzdHJveSgpOworCQkJCXRoaXMudG9vbFRpcFJlZmVyZW5jZSA9IG51bGw7CisJCQl9CisJCTwvbWV0aG9kPgorCQkKKwkJPGhhbmRsZXIgbmFtZT0ib25tb3VzZW92ZXIiPgorCQkJdGhpcy5zdGlsbERvd25EZWxlZ2F0ZSA9IG5ldyBMekRlbGVnYXRlKCB0aGlzLCAic3RpbGxEb3duRXZlbnRHZW5lcmF0b3IiICk7CisJCQl0aGlzLmNhbGNJdGVtID0gdHJ1ZTsKKwkJCXRoaXMudG9vbFRpcFJlZmVyZW5jZSA9IG5ldyBsei50b29sVGlwQ3VzdG9tUGljKGNhbnZhcyk7CisJCQlsei5UaW1lci5hZGRUaW1lciggdGhpcy5zdGlsbERvd25EZWxlZ2F0ZSwgMTAwICk7CisJCTwvaGFuZGxlcj4KKwkJCisJCTxtZXRob2QgbmFtZT0ic3RpbGxEb3duRXZlbnRHZW5lcmF0b3IiIGFyZ3M9Imlnbm9yZSIgPgorCQkJaWYgKCF0aGlzLmNhbGNJdGVtKSB7CisJCQkJcmV0dXJuOworCQkJfQorCQkJdmFyIHRTdHJpbmcgPSBwYXJlbnQuY2FsY0ltYWdlTWFwTmV3SWNvbigpOworCQkJdGhpcy50b29sVGlwUmVmZXJlbmNlLnNldEF0dHJpYnV0ZSgieCIsIHRoaXMuZ2V0QXR0cmlidXRlUmVsYXRpdmUoIngiLGNhbnZhcykrdGhpcy5nZXRNb3VzZSgieCIpKzIwKTsKKwkJCXRoaXMudG9vbFRpcFJlZmVyZW5jZS5zZXRBdHRyaWJ1dGUoInkiLCB0aGlzLmdldEF0dHJpYnV0ZVJlbGF0aXZlKCJ5IixjYW52YXMpK3RoaXMuZ2V0TW91c2UoInkiKSsyMCk7CisJCQl0aGlzLnRvb2xUaXBSZWZlcmVuY2Uuc2V0QXR0cmlidXRlKCJ0ZXh0IiwgdFN0cmluZyk7CisJCQlsei5UaW1lci5yZW1vdmVUaW1lciggdGhpcy5zdGlsbERvd25EZWxlZ2F0ZSApOworCQkJbHouVGltZXIuYWRkVGltZXIoIHRoaXMuc3RpbGxEb3duRGVsZWdhdGUsIDEwMCApOworCQk8L21ldGhvZD4KKwkJCisJCTxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdXQiPgorCQkJdGhpcy5jbGVhclRvb2xUaXBSZWZlcmVuY2UoKTsKKwkJCWx6LlRpbWVyLnJlbW92ZVRpbWVyKCB0aGlzLnN0aWxsRG93bkRlbGVnYXRlICk7CisgICAgICAgICAgICB0aGlzLmNhbGNJdGVtID0gZmFsc2U7CisgICAgICAgIDwvaGFuZGxlcj4KKwkJCisJCTxtZXRob2QgbmFtZT0ic2VuZE5ld0ljb24iIGFyZ3M9InRPYmoiPgorICAgICAgICAgICAgcGFyZW50LnNlbmROZXdJY29uKHRPYmopOworICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgCisgICAgICAgIDxtZXRob2QgbmFtZT0iY2hvb3NlU2VsZWN0Ij4KKyAgICAgICAgICAgIHBhcmVudC5jaG9vc2VTZWxlY3QoKTsKKyAgICAgICAgPC9tZXRob2Q+CisKKwk8L3ZpZXc+CisJCis8L2NsYXNzPgorCis8Y2xhc3MgbmFtZT0idG9vbFRpcEN1c3RvbVBpYyIgZXh0ZW5kcz0idGV4dCIgYmdjb2xvcj0iMHhGRkZGRkYiPgorCQorPC9jbGFzcz4KKwkKKwkKKzxjbGFzcyBuYW1lPSJzdWJNZW51SWNvblRvb2xzVG9VcGxvYWQiIGV4dGVuZHM9Imd1aVByZXNlbnRlciIgbGFiZWxpZD0iMTMzNSIgCisgICAgbWluaW1pemFibGU9ImZhbHNlIiBtYXhpbWl6YWJsZT0iZmFsc2UiIGZ1bGxUb29sQmFyPSJ0cnVlIiAKKyAgICByZXNpemVhYmxlPSJmYWxzZSIgd2lkdGg9IjM0MCIgaGVpZ2h0PSIyODAiID4KKwkKKwk8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRTZWxlY3RlZCIgdmFsdWU9Im51bGwiIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJyZWZUb29sYmFyIiB2YWx1ZT0ibnVsbCIgLz4KKwkKKwk8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorCQlsei5Nb2RlTWFuYWdlci5tYWtlTW9kYWwodGhpcyk7CisJPC9oYW5kbGVyPgorCQorICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xvc2UiPgorICAgIAlsei5Nb2RlTWFuYWdlci5yZWxlYXNlKHRoaXMpOworICAgIDwvaGFuZGxlcj4KKyAgICAKKyAgICA8IS0tLSBAa2V5d29yZHMgcHJpdmF0ZSAtLT4KKyAgICA8bWV0aG9kIG5hbWU9InBhc3NNb2RlRXZlbnQiIGFyZ3M9ImV2ZW50U3RyLHZpZXciID4gCisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICBpZiAoIGV2ZW50U3RyID09ICJvbm1vdXNlZG93biIgICl7CisgICAgICAgICAgICAgICBpZiAoIHZpZXcgIT0gbnVsbCApIHsKKyAgICAgICAgICAgICAgICAgIGlmICggIXZpZXcuY2hpbGRPZih0aGlzKSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpOworICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7CisgICAgICAgICAgICAgICB9CisgICAgICAgICAgIH0KKyAgICAgICAgICAgaWYgKHZpZXcgJiYgdmlldy5jaGlsZE9mKHRoaXMpKSB7CisgICAgICAgICAgICAgICBpZiAodmlld1sgZXZlbnRTdHIgXSkgeworICAgICAgICAgICAgICAgICAgIHZpZXdbIGV2ZW50U3RyIF0uc2VuZEV2ZW50KCB2aWV3ICk7CisgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgIH0KKyAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICBdXT4gCisgICAgPC9tZXRob2Q+ICAKKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InNlbmROZXdJY29uIiBhcmdzPSJyZWZPYmosZm9sZGVyTmFtZSI+CisgICAgCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzZW5kTmV3SWNvbiA6OiAiLHJlZk9iai5tb2RpKTsKKyAgICAJdGhpcy5jdXJyZW50U2VsZWN0ZWQgPSByZWZPYmo7CisgICAgCQorICAgIAlpZiAoZm9sZGVyTmFtZSAhPSAiIikgeworICAgIAkJZm9sZGVyTmFtZSArPSAiLyI7CisgICAgCX0KKyAgICAJCisgICAgCXZhciBpbWFnZXVybCA9IGNhbnZhcy5nZXRVcmwoKSArICdwdWJsaWMvY2xpcGFydHMvdGh1bWIvJytyZWZPYmoubW9kaTsKKyAgICAJCisgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ0aGlzLnJlZlRvb2xiYXIgOjogIix0aGlzLnJlZlRvb2xiYXIpOyAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgCXRoaXMucmVmVG9vbGJhci5fcnNjSWNvbi5zZXRTb3VyY2UoaW1hZ2V1cmwpOworICAgIAkKKyAgICAJdGhpcy5yZWZUb29sYmFyLnBhcmVudC5wYXJlbnQucGFyZW50LnNldFNlbGVjdGlvbih0aGlzLnJlZlRvb2xiYXIpOworICAgIAkKKyAgICAJY2FudmFzLl9kcmF3YXJlYS5jdXJyZW50Q2xpcEFydFJlc3NvdXJjZU5hbWUgPSBmb2xkZXJOYW1lICsgcmVmT2JqLm1vZGk7CisgICAgCQorICAgIAl0aGlzLmNsb3NlKCk7CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJjaG9vc2VTZWxlY3QiPgorICAgIAlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiY2hvb3NlU2VsZWN0IDo6ICIsdGhpcy5jdXJyZW50U2VsZWN0ZWQpOworICAgIAl0aGlzLmNsb3NlKCk7CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPCEtLQorICAgIDx2aWV3IHJlc291cmNlPSJzdWJfbWVudV90b3BfZ3JpcF9jb2xvcmVkX3JzYyIgeT0iLTE0Ij4KKyAgICA8L3ZpZXc+CisgICAgIC0tPgorICAgIAorICAgIDx2aWV3IHg9IjEiIHk9IjIyIiB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aC00IH0iIGNsaXA9InRydWUiIHNob3doYW5kY3Vyc29yPSJmYWxzZSIKKyAgICAJICBoZWlnaHQ9IiRvbmNleyBwYXJlbnQuaGVpZ2h0IC0gMjMgfSIgY2xpY2thYmxlPSJ0cnVlIj4KKyAgICAJCisgICAgCTx2aWV3IHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoLTE1IH0iIHg9IjEiPgorICAgIAkJCisgICAgCQk8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgIAkJCXRoaXMuZ2V0Q2xpcEFydEljb25zLmRvQ2FsbCgpOworICAgIAkJPC9oYW5kbGVyPgorICAgIAkJCisJCSAgICA8bWV0aG9kIG5hbWU9InNlbmROZXdJY29uIiBhcmdzPSJ0T2JqLGZvbGRlck5hbWUiPgorICAgICAgICAgICAgICAgIHBhcmVudC5wYXJlbnQuc2VuZE5ld0ljb24odE9iaixmb2xkZXJOYW1lKTsKKyAgICAgICAgICAgIDwvbWV0aG9kPgorICAgICAgICAgICAgCisgICAgICAgICAgICA8bWV0aG9kIG5hbWU9ImNob29zZVNlbGVjdCI+CisgICAgICAgICAgICAgICAgcGFyZW50LnBhcmVudC5jaG9vc2VTZWxlY3QoKTsKKyAgICAgICAgICAgIDwvbWV0aG9kPgorCisgICAgCQkKKyAgICAJCTxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudENvbnRhaW5lciIgdmFsdWU9Im51bGwiIC8+CisgICAgCQkKKyAgICAJCTwhLS0KKyAgICAJCWdldENsaXBBcnRJY29ucygpCisgICAgCQkgLS0+CisgICAgICAgICAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJnZXRDbGlwQXJ0SWNvbnMiIGZ1bmNuYW1lPSJ3aGl0ZWJvYXJkc2VydmljZS5nZXRDbGlwQXJ0SWNvbnMiCisgICAgICAgICAgICAgICAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4KKyAgICAgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiIyMjIyMjIyMjIyMjIyMgZ2V0Q2xpcEFydEljb25zIDogIix2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQubG9hZEljb25UaHVtYnModmFsdWUuZ2VuZXJhbExpc3QsIiIpOworICAgICAgICAgICAgICAgICAgICBdXT4KKyAgICAgICAgICAgICAgICA8L2hhbmRsZXI+ICAgCisgICAgICAgICAgICA8L25ldFJlbW90ZUNhbGxIaWI+IAorICAgICAgICAgICAgCisgICAgICAgICAgICA8bWV0aG9kIG5hbWU9ImxvYWRJY29uVGh1bWJzIiBhcmdzPSJsaXN0LGZvbGRlck5hbWUiPgorICAgICAgICAgICAgCTwhW0NEQVRBWworICAgICAgICAgICAgCQorICAgICAgICAgICAgICAgICAgICB2YXIgaW1hZ2V1cmwgPSBjYW52YXMuZ2V0VXJsKCkgKyAncHVibGljL2NsaXBhcnRzL3RodW1iLyc7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJpbWFnZXVybCA6OiAiLGltYWdldXJsKTsgICAgICAgICAgICAJCisgICAgICAgICAgICAgICAgICAgICAgICAJCisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPGxpc3QubGVuZ3RoO2krKykgeworICAgICAgICAgICAgICAgICAgICAJCisgICAgICAgICAgICAgICAgICAgIAkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJsaXN0W2ldLmluZGV4T2YoKSAiLGxpc3RbaV0sbGlzdFtpXS5pbmRleE9mKCIuIikpOworICAgICAgICAgICAgICAgICAgICAJCisgICAgICAgICAgICAgICAgICAgIAlpZiAobGlzdFtpXS5pbmRleE9mKCIuIikgPiAxICkgeworICAgICAgICAgICAgICAgICAgICAJCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGljb25yZXNvdXJjZU5hbWUgPSBpbWFnZXVybCArIGxpc3RbaV07CisgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBsei5taW5pSWNvblNteWJvbEV4dHJhSWNvbnModGhpcyx7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2RpOmxpc3RbaV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZTppY29ucmVzb3VyY2VOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZXRjaGVzOidib3RoJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgCX0KKyAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIF1dPgorICAgICAgICAgICAgPC9tZXRob2Q+ICAgIAkJIAorICAgIAkJCisgICAgCQk8d3JhcHBpbmdsYXlvdXQgYXhpcz0ieCIgc3BhY2luZz0iMiIgeGluc2V0PSIyIiAvPgorICAgIAk8L3ZpZXc+IAorICAgIAkKKyAgICAJPG9tX3ZzY3JvbGxiYXIgLz4KKyAgICA8L3ZpZXc+CisgICAgCis8L2NsYXNzPgorCQorPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvcGFuZWxzL3Byb3BlcnR5cGFuZWwvZHJhd0RvY3VtZW50UGFuZWxJdGVtLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL3BhbmVscy9wcm9wZXJ0eXBhbmVsL2RyYXdEb2N1bWVudFBhbmVsSXRlbS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWZhMTQyNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL3BhbmVscy9wcm9wZXJ0eXBhbmVsL2RyYXdEb2N1bWVudFBhbmVsSXRlbS5sengKQEAgLTAsMCArMSw0NCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+DQorPCEtLQ0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAgDQorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICAgIAkgIA0KKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICB1bmRlciB0aGUgTGljZW5zZS4NCisgIA0KKy0tPg0KKzxsaWJyYXJ5Pg0KKyAgICANCisJPGNsYXNzIG5hbWU9ImRyYXdEb2N1bWVudFBhbmVsSXRlbSIgZXh0ZW5kcz0iYmx1ZUJ1dHRvbiIgDQorCQkgICB3aWR0aD0iMjYiIGhlaWdodD0iMjYiIA0KKwkJICAgeF9pbnNldFJlc291cmNlPSIyIiB5X2luc2V0UmVzb3VyY2U9IjIiDQorCQkgICB3aWR0aF9pbnNldFJlc291cmNlPSIyMiIgaGVpZ2h0X2luc2V0UmVzb3VyY2U9IjIyIj4NCisJCQ0KKwkJPGF0dHJpYnV0ZSBuYW1lPSJtb2RpIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+DQorCQk8YXR0cmlidXRlIG5hbWU9ImxhYmVsaWQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+DQorCQkNCisJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPg0KKwkJCS8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudDogIixwYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQpOw0KKwkJCWlmIChwYXJlbnQucGFyZW50LnBhcmVudC5pZ25vcmVVcGRhdGVzKSB7DQorCSAgICAgICAgICAgIHJldHVybjsNCisJICAgICAgICB9DQorCSAgICAgICAgcGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50Ll9kcmF3YXJlYU1hc2suX2RyYXdhcmVhLnNldEN1cnJlbnREb2N1bWVudEJ5VG9vbEJhcihwYXJlbnQucGFyZW50LmN1cnJlbnREb2N1bWVudC5nZXRWYWx1ZSgpKTsNCisJICAgICAgICBwYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQuX2RyYXdhcmVhTWFzay5fZHJhd2FyZWEuZG9Eb2N1bWVudEFjdGlvbih0aGlzLm1vZGkpOw0KKwkJPC9oYW5kbGVyPg0KKwkJDQorCQk8bGFiZWxUb29sdGlwIG5hbWU9Il9fbGFiZWx0b29sdGlwIiBsYWJlbGlkPSIkb25jZXsgcGFyZW50LmxhYmVsaWQgfSIgLz4NCisJICAgIA0KKwk8L2NsYXNzPiAgICANCisNCis8L2xpYnJhcnk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvcGFuZWxzL3Byb3BlcnR5cGFuZWwvbGlicmFyeS5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9wYW5lbHMvcHJvcGVydHlwYW5lbC9saWJyYXJ5Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmI2ODVhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvcGFuZWxzL3Byb3BlcnR5cGFuZWwvbGlicmFyeS5sengKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKwkKKwk8IS0tIEFQTCBBdXRob3Igc2ViYXdhZ25lciAtLT4KKwk8cmVzb3VyY2UgbmFtZT0iX2J1dHRvbl9yc2NfbGV0dGVyX3JzYyIgc3JjPSJyZXNvdXJjZXMvYnV0dG9uX3JzYy5zd2YiIC8+CisJCisJPGluY2x1ZGUgaHJlZj0icHJvcGVydHlQYW5lbExldHRlckJ1dHRvbi5sengiIC8+ICAKKwk8aW5jbHVkZSBocmVmPSJkcmF3RG9jdW1lbnRQYW5lbEl0ZW0ubHp4IiAvPiAgCisJPGluY2x1ZGUgaHJlZj0icHJvcGVydHlQYW5lbC5sengiIC8+ICAKKwkKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL3BhbmVscy9wcm9wZXJ0eXBhbmVsL3Byb3BlcnR5UGFuZWwubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvcGFuZWxzL3Byb3BlcnR5cGFuZWwvcHJvcGVydHlQYW5lbC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTYyZGZiZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL3BhbmVscy9wcm9wZXJ0eXBhbmVsL3Byb3BlcnR5UGFuZWwubHp4CkBAIC0wLDAgKzEsMzU1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorICAgIAorPGNsYXNzIG5hbWU9InByb3BlcnR5UGFuZWwiIGV4dGVuZHM9ImJhc2VQcm9wZXJ0eVBhbmVsIiAKKwkgICB3aWR0aD0iJHsgcGFyZW50LnBhcmVudC53aWR0aC0xIH0iIGhlaWdodD0iODAiIGxhYmVsaWQ9Ijg0MyIgPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0iaWdub3JlVXBkYXRlcyIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorICAgIAorCTxtZXRob2QgbmFtZT0ic2V0T2JqZWN0Qm91bmRzIiBhcmdzPSJ4LHksd2lkdGgsaGVpZ2h0Ij4KKwkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInNldE9iamVjdEJvdW5kczogIix4LHksd2lkdGgsaGVpZ2h0KTsKKwkJdGhpcy5fY29udGVudC5feHZhbHVlLnNldEF0dHJpYnV0ZSgndGV4dCcseCk7CisJCXRoaXMuX2NvbnRlbnQuX3l2YWx1ZS5zZXRBdHRyaWJ1dGUoJ3RleHQnLHkpOworCQl0aGlzLl9jb250ZW50Ll93aWR0aHZhbHVlLnNldEF0dHJpYnV0ZSgndGV4dCcsd2lkdGgpOworCQl0aGlzLl9jb250ZW50Ll9oZWlnaHR2YWx1ZS5zZXRBdHRyaWJ1dGUoJ3RleHQnLGhlaWdodCk7CisJPC9tZXRob2Q+CisJCisJPG1ldGhvZCBuYW1lPSJvblVwZGF0ZUJvdW5kQnlUZXh0Ij4KKwkJaWYgKGNhbnZhcy5fZHJhd2FyZWEuYm91bmRpbmdyZWYhPW51bGwpeworCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9uVXBkYXRlQm91bmRCeVRleHQgYm91bmRpbmdyZWY6ICIsY2FudmFzLl9kcmF3YXJlYS5ib3VuZGluZ3JlZik7CisJCQljYW52YXMuX2RyYXdhcmVhLmJvdW5kaW5ncmVmLnNldEF0dHJpYnV0ZSgneCcsTnVtYmVyKHRoaXMuX2NvbnRlbnQuX3h2YWx1ZS5nZXRUZXh0KCkpKTsKKwkJCWNhbnZhcy5fZHJhd2FyZWEuYm91bmRpbmdyZWYuc2V0QXR0cmlidXRlKCd5JyxOdW1iZXIodGhpcy5fY29udGVudC5feXZhbHVlLmdldFRleHQoKSkpOworCQkJY2FudmFzLl9kcmF3YXJlYS5ib3VuZGluZ3JlZi5zZXRBdHRyaWJ1dGUoJ3dpZHRoJyxOdW1iZXIodGhpcy5fY29udGVudC5fd2lkdGh2YWx1ZS5nZXRUZXh0KCkpKTsKKwkJCWNhbnZhcy5fZHJhd2FyZWEuYm91bmRpbmdyZWYuc2V0QXR0cmlidXRlKCdoZWlnaHQnLE51bWJlcih0aGlzLl9jb250ZW50Ll9oZWlnaHR2YWx1ZS5nZXRUZXh0KCkpKTsKKwkJfQorCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0ibG9hZFBhbmVsQnlNb2R1cyIgYXJncz0iZHJhd0FyZWEiPgorCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgibG9hZFBhbmVsQnlNb2R1cyBkcmF3bW9kdXM6ICIsZHJhd0FyZWEuZHJhd21vZHVzKTsKKwkJdGhpcy5pZ25vcmVVcGRhdGVzID0gdHJ1ZTsKKwkJaWYgKGRyYXdBcmVhLmRyYXdtb2R1cyA9PSAncGFpbnQnKSB7CisJCQl0aGlzLl9jb250ZW50LmxpbmVDb2xvckNob29zZS5zZXRTZWxlY3RlZENvbG9yKGRyYXdBcmVhLmN1cnJlbnRsYXllcnN0cm9rZSk7CisJCQl0aGlzLl9jb250ZW50LmNoYW5nZVdpZHRoU2xpZGVyLnNldFNsaWRlclZhbHVlKGRyYXdBcmVhLmN1cnJlbnRsYXllcmxpbmVXaWR0aCk7CisJCQl0aGlzLl9jb250ZW50LmZpbGxDb2xvckNob29zZS5zZXRFbmFibGVkKGZhbHNlKTsKKwkJCXRoaXMuX2NvbnRlbnQuY2hhbmdlT3BhY2l0eVNsaWRlci5zZXRTbGlkZXJWYWx1ZShkcmF3QXJlYS5jdXJyZW50bGF5ZXJPcGFjaXR5KjEwMCk7CisJCX0gZWxzZSBpZiAoZHJhd0FyZWEuZHJhd21vZHVzID09ICdsaW5lJykgeworCQkJdGhpcy5fY29udGVudC5saW5lQ29sb3JDaG9vc2Uuc2V0U2VsZWN0ZWRDb2xvcihkcmF3QXJlYS5jdXJyZW50bGluZXN0cm9rZSk7CisJCQl0aGlzLl9jb250ZW50LmNoYW5nZVdpZHRoU2xpZGVyLnNldFNsaWRlclZhbHVlKGRyYXdBcmVhLmN1cnJlbnRsaW5lbGluZVdpZHRoKTsKKwkJCXRoaXMuX2NvbnRlbnQuZmlsbENvbG9yQ2hvb3NlLnNldEVuYWJsZWQoZmFsc2UpOworCQkJdGhpcy5fY29udGVudC5jaGFuZ2VPcGFjaXR5U2xpZGVyLnNldEVuYWJsZWQoZmFsc2UpOworCQkJdGhpcy5fY29udGVudC5jaGFuZ2VPcGFjaXR5U2xpZGVyLnNldFNsaWRlclZhbHVlKGRyYXdBcmVhLmN1cnJlbnRsaW5lT3BhY2l0eSoxMDApOworCQl9IGVsc2UgaWYgKGRyYXdBcmVhLmRyYXdtb2R1cyA9PSAndWxpbmUnKSB7CisJCQl0aGlzLl9jb250ZW50LmxpbmVDb2xvckNob29zZS5zZXRTZWxlY3RlZENvbG9yKGRyYXdBcmVhLmN1cnJlbnR1bGluZXN0cm9rZSk7CisJCQl0aGlzLl9jb250ZW50LmNoYW5nZVdpZHRoU2xpZGVyLnNldFNsaWRlclZhbHVlKGRyYXdBcmVhLmN1cnJlbnR1bGluZWxpbmVXaWR0aCk7CisJCQl0aGlzLl9jb250ZW50LmZpbGxDb2xvckNob29zZS5zZXRFbmFibGVkKGZhbHNlKTsKKwkJCXRoaXMuX2NvbnRlbnQuY2hhbmdlT3BhY2l0eVNsaWRlci5zZXRTbGlkZXJWYWx1ZShkcmF3QXJlYS5jdXJyZW50dWxpbmVPcGFjaXR5KjEwMCk7CisJCX0gZWxzZSBpZiAoZHJhd0FyZWEuZHJhd21vZHVzID09ICdkcmF3YXJyb3cnKSB7CisJCQl0aGlzLl9jb250ZW50LmxpbmVDb2xvckNob29zZS5zZXRTZWxlY3RlZENvbG9yV2l0aERpcyhkcmF3QXJlYS5jdXJyZW50ZHJhd2Fycm93bGluZXN0cm9rZSwKKyAgICAgICAgICAgICAgICBkcmF3QXJlYS5jdXJyZW50ZHJhd2Fycm93bGluZXN0cm9rZURpcyk7CisJCQl0aGlzLl9jb250ZW50LmNoYW5nZVdpZHRoU2xpZGVyLnNldFNsaWRlclZhbHVlKGRyYXdBcmVhLmN1cnJlbnRkcmF3YXJyb3dsaW5lbGluZVdpZHRoKTsKKwkJCXRoaXMuX2NvbnRlbnQuZmlsbENvbG9yQ2hvb3NlLnNldFNlbGVjdGVkQ29sb3JXaXRoRGlzKGRyYXdBcmVhLmN1cnJlbnRkcmF3YXJyb3dsaW5lc3Ryb2tlRmlsbCwKKyAgICAgICAgICAgICAgICBkcmF3QXJlYS5jdXJyZW50ZHJhd2Fycm93bGluZXN0cm9rZUZpbGxEaXMpOworCQkJdGhpcy5fY29udGVudC5jaGFuZ2VPcGFjaXR5U2xpZGVyLnNldFNsaWRlclZhbHVlKGRyYXdBcmVhLmN1cnJlbnRkcmF3YXJyb3dPcGFjaXR5KjEwMCk7CisJCX0gZWxzZSBpZiAoZHJhd0FyZWEuZHJhd21vZHVzID09ICdyZWN0YW5nbGUnKSB7CisJCQl0aGlzLl9jb250ZW50LmxpbmVDb2xvckNob29zZS5zZXRTZWxlY3RlZENvbG9yV2l0aERpcyhkcmF3QXJlYS5jdXJyZW50cmVjdGFuZ2xlc3Ryb2tlLAorCQkJCWRyYXdBcmVhLmN1cnJlbnRyZWN0YW5nbGVzdHJva2VEaXMpOworCQkJdGhpcy5fY29udGVudC5maWxsQ29sb3JDaG9vc2Uuc2V0U2VsZWN0ZWRDb2xvcldpdGhEaXMoZHJhd0FyZWEuY3VycmVudHJlY3RhbmdsZXN0cm9rZUZpbGwsCisJCQkJZHJhd0FyZWEuY3VycmVudHJlY3RhbmdsZXN0cm9rZUZpbGxEaXMpOworCQkJdGhpcy5fY29udGVudC5jaGFuZ2VXaWR0aFNsaWRlci5zZXRTbGlkZXJWYWx1ZShkcmF3QXJlYS5jdXJyZW50cmVjdGFuZ2xlaW5lV2lkdGgpOworCQkJdGhpcy5fY29udGVudC5jaGFuZ2VPcGFjaXR5U2xpZGVyLnNldFNsaWRlclZhbHVlKGRyYXdBcmVhLmN1cnJlbnRyZWN0YW5nbGVPcGFjaXR5KjEwMCk7CisJCX0gZWxzZSBpZiAoZHJhd0FyZWEuZHJhd21vZHVzID09ICdlbGxpcHNlJykgeworCQkJdGhpcy5fY29udGVudC5saW5lQ29sb3JDaG9vc2Uuc2V0U2VsZWN0ZWRDb2xvcldpdGhEaXMoZHJhd0FyZWEuY3VycmVudGVsbGlwc2VzdHJva2UsCisJCQkJZHJhd0FyZWEuY3VycmVudGVsbGlwc2VzdHJva2VEaXMpOworCQkJdGhpcy5fY29udGVudC5maWxsQ29sb3JDaG9vc2Uuc2V0U2VsZWN0ZWRDb2xvcldpdGhEaXMoZHJhd0FyZWEuY3VycmVudGVsbGlwc2VzdHJva2VGaWxsLAorCQkJCWRyYXdBcmVhLmN1cnJlbnRlbGxpcHNlc3Ryb2tlRmlsbERpcyk7CisJCQl0aGlzLl9jb250ZW50LmNoYW5nZVdpZHRoU2xpZGVyLnNldFNsaWRlclZhbHVlKGRyYXdBcmVhLmN1cnJlbnRlbGxpcHNlbGluZVdpZHRoKTsKKwkJCXRoaXMuX2NvbnRlbnQuY2hhbmdlT3BhY2l0eVNsaWRlci5zZXRTbGlkZXJWYWx1ZShkcmF3QXJlYS5jdXJyZW50ZWxsaXBzZU9wYWNpdHkqMTAwKTsKKwkJfSBlbHNlIGlmIChkcmF3QXJlYS5kcmF3bW9kdXMgPT0gJ2xldHRlcicpIHsKKwkJCXRoaXMuX2NvbnRlbnQubGluZUNvbG9yQ2hvb3NlLnNldFNlbGVjdGVkQ29sb3IoZHJhd0FyZWEuY3VycmVudGxheWVybGV0dGVyKTsKKwkJCXRoaXMuX2NvbnRlbnQuZmlsbENvbG9yQ2hvb3NlLnNldEVuYWJsZWQoZmFsc2UpOworCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImRyYXdBcmVhLmN1cnJlbnRsYXllcnNpemUgIixkcmF3QXJlYS5jdXJyZW50bGF5ZXJzaXplKTsKKwkJCXRoaXMuX2NvbnRlbnQuY2hhbmdlV2lkdGhTbGlkZXIuc2V0U2xpZGVyVmFsdWUoZHJhd0FyZWEuY3VycmVudGxheWVyc2l6ZSk7CisJCQl0aGlzLl9jb250ZW50LmNoYW5nZU9wYWNpdHlTbGlkZXIuc2V0RW5hYmxlZChmYWxzZSk7CisJCQl0aGlzLl9jb250ZW50Ll9pdGFsaWMuc2V0VmFsdWUoY2FudmFzLl9kcmF3YXJlYS5pdGFsaWMpOworCQkJdGhpcy5fY29udGVudC5fYm9sZC5zZXRWYWx1ZShjYW52YXMuX2RyYXdhcmVhLmJvbGQpOworCQl9IGVsc2UgeworCQkJaWYgKCRkZWJ1ZykgRGVidWcud2FybigiTm90IGtub3duIGRyYXdtb2R1cyIsZHJhd0FyZWEuZHJhd21vZHVzKTsKKwkJCXRoaXMuX2NvbnRlbnQubGluZUNvbG9yQ2hvb3NlLnNldEVuYWJsZWQoZmFsc2UpOworCQkJdGhpcy5fY29udGVudC5jaGFuZ2VXaWR0aFNsaWRlci5zZXRFbmFibGVkKGZhbHNlKTsKKwkJCXRoaXMuX2NvbnRlbnQuZmlsbENvbG9yQ2hvb3NlLnNldEVuYWJsZWQoZmFsc2UpOworCQkJdGhpcy5fY29udGVudC5jaGFuZ2VPcGFjaXR5U2xpZGVyLnNldEVuYWJsZWQoZmFsc2UpOworCQl9CisJCQorCQlpZiAoZHJhd0FyZWEuZHJhd21vZHVzID09ICdsZXR0ZXInKXsKKyAgICAgICAgICAgIHRoaXMuX2NvbnRlbnQuX2l0YWxpYy5zZXRBdHRyaWJ1dGUoJ2VuYWJsZWQnLHRydWUpOworICAgICAgICAgICAgdGhpcy5fY29udGVudC5fYm9sZC5zZXRBdHRyaWJ1dGUoJ2VuYWJsZWQnLHRydWUpOyAgICAgICAgICAgCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB0aGlzLl9jb250ZW50Ll9pdGFsaWMuc2V0QXR0cmlidXRlKCdlbmFibGVkJyxmYWxzZSk7CisgICAgICAgICAgICB0aGlzLl9jb250ZW50Ll9ib2xkLnNldEF0dHJpYnV0ZSgnZW5hYmxlZCcsZmFsc2UpOworICAgICAgICB9CisJCQorCQl0aGlzLmlnbm9yZVVwZGF0ZXMgPSBmYWxzZTsKKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9ImxvYWRQYW5lbEJ5Qm91bmRpbmdCb3giIGFyZ3M9ImRyYXdBcmVhLG9ialJlZiI+CisJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJsb2FkUGFuZWxCeUJvdW5kaW5nQm94IG9ialJlZjogIixvYmpSZWYpOworCQkKKyAgICAgICAgdGhpcy5sb2FkUGFuZWxCeU1vZHVzKGRyYXdBcmVhKTsKKyAgICAgICAgCisgICAgICAgIHRoaXMuaWdub3JlVXBkYXRlcyA9IHRydWU7CisgICAgICAgIAorICAgICAgICBpZiAob2JqUmVmLm5hbWUuaW5kZXhPZignc3dmJykgPj0gMCkgeworICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLl9jb250ZW50Ll9kb2N1bWVudHNQYW5lbC5fY3VycmVudFNsaWRlTm8uc2V0QXR0cmlidXRlKCJ0ZXh0IixvYmpSZWYuc2xpZGVOdW1iZXIpOworICAgICAgICAgICAgLy90aGlzLl9jb250ZW50Ll9kb2N1bWVudHNQYW5lbC5fem9vbS5zZXRBdHRyaWJ1dGUoInRleHQiLG9ialJlZi5jdXJyZW50em9vbUZhY3Rvcik7CisgICAgICAgICAgICAvL3RoaXMuX2NvbnRlbnQuX2Z1bGxGaXQuc2V0VmFsdWUob2JqUmVmLmZ1bGxGaXQpOworICAgICAgICAgICAgCisgICAgICAgIH0KKwkJCisJCXRoaXMuaWdub3JlVXBkYXRlcyA9IGZhbHNlOworCTwvbWV0aG9kPgorCQkKKwk8bWV0aG9kIG5hbWU9InVwZGF0ZVByb3BlcnRpZXMiPgorCQlpZiAoIXRoaXMuaWdub3JlVXBkYXRlcyl7CisJCQlpZiAoY2FudmFzLl9kcmF3YXJlYS5kcmF3bW9kdXMgPT0gJ3BhaW50Jyl7CisJCQkJY2FudmFzLl9kcmF3YXJlYS5jdXJyZW50bGF5ZXJzdHJva2UgPSB0aGlzLl9jb250ZW50LmxpbmVDb2xvckNob29zZS5zZWxlY3RlZENvbG9yOworCQkJCWNhbnZhcy5fZHJhd2FyZWEuY3VycmVudGxheWVybGluZVdpZHRoID0gdGhpcy5fY29udGVudC5jaGFuZ2VXaWR0aFNsaWRlci5pbml0aWFsTnVtYmVyOworCQkJCWNhbnZhcy5fZHJhd2FyZWEuY3VycmVudGxheWVyT3BhY2l0eSA9IHRoaXMuX2NvbnRlbnQuY2hhbmdlT3BhY2l0eVNsaWRlci5pbml0aWFsTnVtYmVyLzEwMDsKKwkJCX0gZWxzZSBpZiAoY2FudmFzLl9kcmF3YXJlYS5kcmF3bW9kdXMgPT0gJ2xpbmUnKXsKKwkJCQljYW52YXMuX2RyYXdhcmVhLmN1cnJlbnRsaW5lc3Ryb2tlID0gdGhpcy5fY29udGVudC5saW5lQ29sb3JDaG9vc2Uuc2VsZWN0ZWRDb2xvcjsKKwkJCQljYW52YXMuX2RyYXdhcmVhLmN1cnJlbnRsaW5lbGluZVdpZHRoID0gdGhpcy5fY29udGVudC5jaGFuZ2VXaWR0aFNsaWRlci5pbml0aWFsTnVtYmVyOworCQkJCWNhbnZhcy5fZHJhd2FyZWEuY3VycmVudGxpbmVPcGFjaXR5ID0gdGhpcy5fY29udGVudC5jaGFuZ2VPcGFjaXR5U2xpZGVyLmluaXRpYWxOdW1iZXIvMTAwOworCQkJfSBlbHNlIGlmIChjYW52YXMuX2RyYXdhcmVhLmRyYXdtb2R1cyA9PSAndWxpbmUnKXsKKwkJCQljYW52YXMuX2RyYXdhcmVhLmN1cnJlbnR1bGluZXN0cm9rZSA9IHRoaXMuX2NvbnRlbnQubGluZUNvbG9yQ2hvb3NlLnNlbGVjdGVkQ29sb3I7CisJCQkJY2FudmFzLl9kcmF3YXJlYS5jdXJyZW50dWxpbmVsaW5lV2lkdGggPSB0aGlzLl9jb250ZW50LmNoYW5nZVdpZHRoU2xpZGVyLmluaXRpYWxOdW1iZXI7CisJCQkJY2FudmFzLl9kcmF3YXJlYS5jdXJyZW50dWxpbmVPcGFjaXR5ID0gdGhpcy5fY29udGVudC5jaGFuZ2VPcGFjaXR5U2xpZGVyLmluaXRpYWxOdW1iZXIvMTAwOworCQkJfSBlbHNlIGlmIChjYW52YXMuX2RyYXdhcmVhLmRyYXdtb2R1cyA9PSAnZHJhd2Fycm93Jyl7CisJCQkJY2FudmFzLl9kcmF3YXJlYS5jdXJyZW50ZHJhd2Fycm93bGluZXN0cm9rZSA9IHRoaXMuX2NvbnRlbnQubGluZUNvbG9yQ2hvb3NlLnNlbGVjdGVkQ29sb3I7CisgICAgICAgICAgICAgICAgY2FudmFzLl9kcmF3YXJlYS5jdXJyZW50ZHJhd2Fycm93bGluZXN0cm9rZURpcyA9IHRoaXMuX2NvbnRlbnQubGluZUNvbG9yQ2hvb3NlLnNlbGVjdGVkQ29sb3JEaXM7CisgICAgICAgICAgICAgICAgY2FudmFzLl9kcmF3YXJlYS5jdXJyZW50ZHJhd2Fycm93bGluZXN0cm9rZUZpbGwgPSB0aGlzLl9jb250ZW50LmZpbGxDb2xvckNob29zZS5zZWxlY3RlZENvbG9yOworICAgICAgICAgICAgICAgIGNhbnZhcy5fZHJhd2FyZWEuY3VycmVudGRyYXdhcnJvd2xpbmVzdHJva2VGaWxsRGlzID0gdGhpcy5fY29udGVudC5maWxsQ29sb3JDaG9vc2Uuc2VsZWN0ZWRDb2xvckRpczsKKyAgICAgICAgICAgICAgICBjYW52YXMuX2RyYXdhcmVhLmN1cnJlbnRkcmF3YXJyb3dsaW5lbGluZVdpZHRoID0gdGhpcy5fY29udGVudC5jaGFuZ2VXaWR0aFNsaWRlci5pbml0aWFsTnVtYmVyOworCQkJCWNhbnZhcy5fZHJhd2FyZWEuY3VycmVudGRyYXdhcnJvd09wYWNpdHkgPSB0aGlzLl9jb250ZW50LmNoYW5nZU9wYWNpdHlTbGlkZXIuaW5pdGlhbE51bWJlci8xMDA7CisJCQl9IGVsc2UgaWYgKGNhbnZhcy5fZHJhd2FyZWEuZHJhd21vZHVzID09ICdyZWN0YW5nbGUnKXsKKwkJCQljYW52YXMuX2RyYXdhcmVhLmN1cnJlbnRyZWN0YW5nbGVzdHJva2UgPSB0aGlzLl9jb250ZW50LmxpbmVDb2xvckNob29zZS5zZWxlY3RlZENvbG9yOworCQkJCWNhbnZhcy5fZHJhd2FyZWEuY3VycmVudHJlY3RhbmdsZXN0cm9rZURpcyA9IHRoaXMuX2NvbnRlbnQubGluZUNvbG9yQ2hvb3NlLnNlbGVjdGVkQ29sb3JEaXM7CisJCQkJY2FudmFzLl9kcmF3YXJlYS5jdXJyZW50cmVjdGFuZ2xlc3Ryb2tlRmlsbCA9IHRoaXMuX2NvbnRlbnQuZmlsbENvbG9yQ2hvb3NlLnNlbGVjdGVkQ29sb3I7CisJCQkJY2FudmFzLl9kcmF3YXJlYS5jdXJyZW50cmVjdGFuZ2xlc3Ryb2tlRmlsbERpcyA9IHRoaXMuX2NvbnRlbnQuZmlsbENvbG9yQ2hvb3NlLnNlbGVjdGVkQ29sb3JEaXM7CisJCQkJY2FudmFzLl9kcmF3YXJlYS5jdXJyZW50cmVjdGFuZ2xlaW5lV2lkdGggPSB0aGlzLl9jb250ZW50LmNoYW5nZVdpZHRoU2xpZGVyLmluaXRpYWxOdW1iZXI7CisJCQkJY2FudmFzLl9kcmF3YXJlYS5jdXJyZW50cmVjdGFuZ2xlT3BhY2l0eSA9IHRoaXMuX2NvbnRlbnQuY2hhbmdlT3BhY2l0eVNsaWRlci5pbml0aWFsTnVtYmVyLzEwMDsKKwkJCX0gZWxzZSBpZiAoY2FudmFzLl9kcmF3YXJlYS5kcmF3bW9kdXMgPT0gJ2VsbGlwc2UnKXsKKwkJCQljYW52YXMuX2RyYXdhcmVhLmN1cnJlbnRlbGxpcHNlc3Ryb2tlID0gdGhpcy5fY29udGVudC5saW5lQ29sb3JDaG9vc2Uuc2VsZWN0ZWRDb2xvcjsKKwkJCQljYW52YXMuX2RyYXdhcmVhLmN1cnJlbnRlbGxpcHNlc3Ryb2tlRGlzID0gdGhpcy5fY29udGVudC5saW5lQ29sb3JDaG9vc2Uuc2VsZWN0ZWRDb2xvckRpczsKKwkJCQljYW52YXMuX2RyYXdhcmVhLmN1cnJlbnRlbGxpcHNlc3Ryb2tlRmlsbCA9IHRoaXMuX2NvbnRlbnQuZmlsbENvbG9yQ2hvb3NlLnNlbGVjdGVkQ29sb3I7CisJCQkJY2FudmFzLl9kcmF3YXJlYS5jdXJyZW50ZWxsaXBzZXN0cm9rZUZpbGxEaXMgPSB0aGlzLl9jb250ZW50LmZpbGxDb2xvckNob29zZS5zZWxlY3RlZENvbG9yRGlzOworCQkJCWNhbnZhcy5fZHJhd2FyZWEuY3VycmVudGVsbGlwc2VsaW5lV2lkdGggPSB0aGlzLl9jb250ZW50LmNoYW5nZVdpZHRoU2xpZGVyLmluaXRpYWxOdW1iZXI7CisJCQkJY2FudmFzLl9kcmF3YXJlYS5jdXJyZW50ZWxsaXBzZU9wYWNpdHkgPSB0aGlzLl9jb250ZW50LmNoYW5nZU9wYWNpdHlTbGlkZXIuaW5pdGlhbE51bWJlci8xMDA7CisJCQl9IGVsc2UgaWYgKGNhbnZhcy5fZHJhd2FyZWEuZHJhd21vZHVzID09ICdsZXR0ZXInKXsKKwkJCQljYW52YXMuX2RyYXdhcmVhLnNldEF0dHJpYnV0ZSgnY3VycmVudGxheWVybGV0dGVyJyx0aGlzLl9jb250ZW50LmxpbmVDb2xvckNob29zZS5zZWxlY3RlZENvbG9yKTsKKwkJCQljYW52YXMuX2RyYXdhcmVhLnNldEF0dHJpYnV0ZSgnY3VycmVudGxheWVyc2l6ZScsdGhpcy5fY29udGVudC5jaGFuZ2VXaWR0aFNsaWRlci5pbml0aWFsTnVtYmVyKTsKKwkJCQljYW52YXMuX2RyYXdhcmVhLml0YWxpYyA9IHRoaXMuX2NvbnRlbnQuX2l0YWxpYy5nZXRWYWx1ZSgpOworCQkJCWNhbnZhcy5fZHJhd2FyZWEuYm9sZCA9IHRoaXMuX2NvbnRlbnQuX2JvbGQuZ2V0VmFsdWUoKTsKKwkJCQljYW52YXMuX2RyYXdhcmVhLmRvYWx0ZXJTdHlsZSgpOworCQkJfSBlbHNlIHsKKwkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53YXJuKCJOb3Qga25vd24gZHJhd21vZHVzIixjYW52YXMuX2RyYXdhcmVhLmRyYXdtb2R1cyk7CisJCQl9CisJCX0KKwk8L21ldGhvZD4KKworCTx2aWV3IG5hbWU9Il9jb250ZW50IiB2aXNpYmxlPSIke3RoaXMucGFyZW50Lmlzb3Blbn0iID4KKwkJCisJCTxsYWJlbFRleHRXaWR0aFRvb2x0aXAgbmFtZT0iX3h2YWx1ZUxhYmVsIiB4PSI0IiB5PSIyNCIKKwkJCWxhYmVsaWQ9IjU0NSIgbGFiZWxMYWJlbGlkPSI1NDYiICAvPiAKKwkJPGN1c3RvbUVkaXR0ZXh0IG5hbWU9Il94dmFsdWUiIHg9IjI0IiB5PSIyNCIgcmVnZXhwVHlwZT0ibnVtYmVyIiAKKwkJCXdpZHRoPSI0MCIgdGV4dD0iMCIgaGVpZ2h0PSIyNCIKKwkJCW9uYWZ0ZXJDaGVjaz0icGFyZW50LnBhcmVudC5vblVwZGF0ZUJvdW5kQnlUZXh0KCkiIC8+CisJCQorCQk8bGFiZWxUZXh0V2lkdGhUb29sdGlwIG5hbWU9Il95dmFsdWVMYWJlbCIgeD0iNCIgeT0iNTIiCisJCQlsYWJlbGlkPSI1NDciIGxhYmVsTGFiZWxpZD0iNTQ4IiAgLz4gCisJCTxjdXN0b21FZGl0dGV4dCBuYW1lPSJfeXZhbHVlIiB4PSIyNCIgeT0iNTIiIHJlZ2V4cFR5cGU9Im51bWJlciIKKwkJCXdpZHRoPSI0MCIgdGV4dD0iMCIgaGVpZ2h0PSIyNCIKKwkJCW9uYWZ0ZXJDaGVjaz0icGFyZW50LnBhcmVudC5vblVwZGF0ZUJvdW5kQnlUZXh0KCkiIC8+CisJCQorCQk8bGFiZWxUZXh0V2lkdGhUb29sdGlwIG5hbWU9Il93aWR0aHZhbHVlTGFiZWwiIHg9IjY4IiB5PSIyNCIKKwkJCWxhYmVsaWQ9IjU0OSIgbGFiZWxMYWJlbGlkPSI1NTAiIC8+IAorCQk8Y3VzdG9tRWRpdHRleHQgbmFtZT0iX3dpZHRodmFsdWUiIHg9Ijg4IiB5PSIyNCIgcmVnZXhwVHlwZT0ibnVtYmVyIiAKKwkJCXdpZHRoPSI0MCIgdGV4dD0iMCIgaGVpZ2h0PSIyNCIKKwkJCW9uYWZ0ZXJDaGVjaz0icGFyZW50LnBhcmVudC5vblVwZGF0ZUJvdW5kQnlUZXh0KCkiIC8+CisJCQorCQk8bGFiZWxUZXh0V2lkdGhUb29sdGlwIG5hbWU9Il9oZWlnaHR2YWx1ZUxhYmVsIiB4PSI2OCIgeT0iNTIiCisJCQlsYWJlbGlkPSI1NTEiIGxhYmVsTGFiZWxpZD0iNTUyIiAvPiAKKwkJPGN1c3RvbUVkaXR0ZXh0IG5hbWU9Il9oZWlnaHR2YWx1ZSIgeD0iODgiIHk9IjUyIiByZWdleHBUeXBlPSJudW1iZXIiCisJCQl3aWR0aD0iNDAiIHRleHQ9IjAiIGhlaWdodD0iMjQiCisJCQlvbmFmdGVyQ2hlY2s9InBhcmVudC5wYXJlbnQub25VcGRhdGVCb3VuZEJ5VGV4dCgpIiAvPgorCQkJCisJCQkKKwkJPGxpbmVDb2xvckNob29zZSB4PSIxMzIiIHk9IjI0IiBuYW1lPSJsaW5lQ29sb3JDaG9vc2UiIGJveFBvc2l0aW9uPSJ1cCIgPgorCQkJPGhhbmRsZXIgbmFtZT0ib25zZWxlY3RlZENvbG9yIiBhcmdzPSJzZWwiPgorCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJsaW5lQ29sb3JDaG9vc2Ugc2VsOiAiLHNlbCk7CisJCQkJcGFyZW50LnBhcmVudC51cGRhdGVQcm9wZXJ0aWVzKCk7CQkJCisJCQk8L2hhbmRsZXI+CisJCTwvbGluZUNvbG9yQ2hvb3NlPgorCQkKKwkJPGZpbGxDb2xvckNob29zZSB4PSIxMzIiIHk9IjUyIiBuYW1lPSJmaWxsQ29sb3JDaG9vc2UiIGJveFBvc2l0aW9uPSJ1cCIgPgorCQkJPGhhbmRsZXIgbmFtZT0ib25zZWxlY3RlZENvbG9yIiBhcmdzPSJzZWwiPgorCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJmaWxsQ29sb3JDaG9vc2Ugc2VsOiAiLHNlbCk7CisJCQkJcGFyZW50LnBhcmVudC51cGRhdGVQcm9wZXJ0aWVzKCk7CQorCQkJPC9oYW5kbGVyPgorCQk8L2ZpbGxDb2xvckNob29zZT4KKwkJCisJCTxjaGFuZ2VXaWR0aFNsaWRlciB4PSIyMjIiIHk9IjI0IiBuYW1lPSJjaGFuZ2VXaWR0aFNsaWRlciIgYm94UG9zaXRpb249InVwIiAKKwkJCWluaXRpYWxOdW1iZXI9IjIiID4KKwkJCTxoYW5kbGVyIG5hbWU9Im9uaW5pdGlhbE51bWJlciIgYXJncz0iaSI+CisJCQkJLy90aGlzLnBhcmVudC5wYXJlbnQucGFyZW50Ll9kcmF3YXJlYU1hc2suX2RyYXdhcmVhLnNldEF0dHJpYnV0ZSgnY3VycmVudGxheWVyc2l6ZScsaSk7CisJCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImNoYW5nZVdpZHRoU2xpZGVyIG9uaW5pdGlhbE51bWJlciBzZWw6ICIsaSk7CisJCQkJcGFyZW50LnBhcmVudC51cGRhdGVQcm9wZXJ0aWVzKCk7CQorCQkJPC9oYW5kbGVyPgorCQk8L2NoYW5nZVdpZHRoU2xpZGVyPiAKKwkJCisJCTxjaGFuZ2VXaWR0aFNsaWRlciB4PSIyMjIiIHk9IjUyIiBuYW1lPSJjaGFuZ2VPcGFjaXR5U2xpZGVyIiBsYWJlbGlkPSI1NTMiIGJveFBvc2l0aW9uPSJ1cCIKKwkJCWluaXRpYWxOdW1iZXI9IjEwMCIgPgorCQkJPGhhbmRsZXIgbmFtZT0ib25pbml0aWFsTnVtYmVyIiBhcmdzPSJpIj4KKwkJCQkvL3RoaXMucGFyZW50LnBhcmVudC5wYXJlbnQuX2RyYXdhcmVhTWFzay5fZHJhd2FyZWEuc2V0QXR0cmlidXRlKCdjdXJyZW50bGF5ZXJzaXplJyxpKTsKKwkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiY2hhbmdlT3BhY2l0eVNsaWRlciBvbmluaXRpYWxOdW1iZXIgc2VsOiAiLGkpOworCQkJCXBhcmVudC5wYXJlbnQudXBkYXRlUHJvcGVydGllcygpOwkKKwkJCTwvaGFuZGxlcj4KKwkJPC9jaGFuZ2VXaWR0aFNsaWRlcj4gCisKKwkgICAgPHByb3BlcnR5UGFuZWxMZXR0ZXJCdXR0b24gbmFtZT0iX2l0YWxpYyIgeD0iMjg2IiB5PSIyNCIgbGFiZWxpZD0iODYiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1SZXNvdXJjZU5hbWU9Iml0YWxpYyIgLz4KKwkgICAgCisJICAgIDxwcm9wZXJ0eVBhbmVsTGV0dGVyQnV0dG9uIG5hbWU9Il9ib2xkIiB4PSIzMTIiIHk9IjI0IiBsYWJlbGlkPSI4NyIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbVJlc291cmNlTmFtZT0iYm9sZCIgLz4KKwkJCisJCTx2aWV3IG5hbWU9Il9kZWxlbWl0ZXIiIHdpZHRoPSIyIiBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ2Jhc2VNb3VzZWNvbG9yaXplcicpIH0iIAorCQkJICBoZWlnaHQ9IiRvbmNleyBwYXJlbnQuaGVpZ2h0IC0gdGhpcy55IC0gNCB9IiB5PSIyMCIgeD0iMzM4Ii8+CisJCQorCQk8bGFiZWxUZXh0IGxhYmVsaWQ9IjcyMSIgeT0iMjYiIHg9IjM0NCIgLz4KKwkJCisJCTxyZXNldENvbWJvYm94IG5hbWU9ImN1cnJlbnREb2N1bWVudCIgd2lkdGg9IjMwMCIgaGVpZ2h0PSIyNCIgZm9udHNpemU9IjExIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgZWRpdGFibGU9ImZhbHNlIiBzaG93bml0ZW1zPSI3IiB4PSI0ODAiIHk9IjI0Ij4KKyAgICAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ic2VuZFNlbGVjdGlvbiIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iLz4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uc2VsZWN0IiBhcmdzPSJzZWwiPgorICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbmRTZWxlY3Rpb24pIHsKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50LnBhcmVudC5wYXJlbnQuX2RyYXdhcmVhTWFzay5fZHJhd2FyZWEuc2V0Q3VycmVudERvY3VtZW50KHNlbC52YWx1ZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8L3Jlc2V0Q29tYm9ib3g+CisgICAgICAgIDwhLS0KKwkgICAgPGxhYmVsQ2hlY2tib3ggeD0iMzQ0IiB5PSI1NCIgbmFtZT0iX2Z1bGxGaXQiIGxhYmVsaWQ9Ijg0NyIgPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib252YWx1ZSIgYXJncz0idiI+CisgICAgICAgICAgICAgICAgaWYgKHBhcmVudC5wYXJlbnQuaWdub3JlVXBkYXRlcykgeworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbnZhbHVlIEZ1bGwgRml0ICIsdik7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgcGFyZW50LnBhcmVudC5wYXJlbnQuX2RyYXdhcmVhTWFzay5fZHJhd2FyZWEuZG9GdWxsRml0KHYpOworICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAgICAgPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSIxMjEyIiBtdWx0aWxpbmU9InRydWUiIC8+CisJICAgIDwvbGFiZWxDaGVja2JveD4gCisJICAgICAtLT4gICAgICAgCisJCQorCQk8dmlldyBuYW1lPSJfZG9jdW1lbnRzUGFuZWwiIHg9IjQ4MCIgeT0iNTIiIGxheW91dD0iYXhpczp4O3NwYWNpbmc6MiI+CisJCQkKKwkJCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib25pbml0OiAiLHRoaXMpOworICAgICAgICAgICAgICAgIHRoaXMuX2N1cnJlbnRTbGlkZU5vLnNldEF0dHJpYnV0ZSgndGV4dCcsY2FudmFzLmN1cnJlbnRTbGlkZU5vKTsKKyAgICAgICAgICAgICAgICB0aGlzLl90b3RhbFNsaWRlTm8uc2V0QXR0cmlidXRlKCd0ZXh0JyxjYW52YXMuY3VycmVudFNsaWRlVG90YWwpOworICAgICAgICAgICAgICAgIC8vdGhpcy5fem9vbS5zZXRBdHRyaWJ1dGUoJ3RleHQnLGNhbnZhcy5jdXJyZW50U2xpZGVab29tKTsKKyAgICAgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9InByZWNsb3NlIj4KKyAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbmNsb3NlOiAiLHRoaXMpOworICAgICAgICAgICAgICAgIGNhbnZhcy5jdXJyZW50U2xpZGVObyA9IE51bWJlcih0aGlzLl9jdXJyZW50U2xpZGVOby5nZXRUZXh0KCkpOworICAgICAgICAgICAgICAgIGNhbnZhcy5jdXJyZW50U2xpZGVUb3RhbCA9IE51bWJlcih0aGlzLl90b3RhbFNsaWRlTm8uZ2V0VGV4dCgpKTsKKyAgICAgICAgICAgICAgICAvL2NhbnZhcy5jdXJyZW50U2xpZGVab29tID0gTnVtYmVyKHRoaXMuX3pvb20uZ2V0VGV4dCgpKTsKKyAgICAgICAgICAgIDwvaGFuZGxlcj4KKwkJCQorCQkJPG1ldGhvZCBuYW1lPSJhZGRDdXJyZW50T2JqZWN0IiBhcmdzPSJpdGVtT2JqIj4KKyAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJhZGRDdXJyZW50T2JqZWN0ICIsaXRlbU9iai5maWxlTmFtZSxpdGVtT2JqLm5hbWUpOworICAgICAgICAgICAgICAgIHZhciBkb2NOYW1lID0gaXRlbU9iai5zdGFuZGFyZEZpbGVOYW1lOworCQkgICAgICAgIGlmIChkb2NOYW1lLmxlbmd0aCA9PSAwKSB7CisJCSAgICAgICAgICAgIGRvY05hbWUgPSBpdGVtT2JqLmZpbGVOYW1lOworCQkgICAgICAgIH0KKwkJICAgICAgICAKKwkJICAgICAgICBwYXJlbnQuY3VycmVudERvY3VtZW50LmFkZEl0ZW0oZG9jTmFtZSxpdGVtT2JqLm5hbWUpOworICAgICAgICAgICAgICAgIHBhcmVudC5jdXJyZW50RG9jdW1lbnQuc2VuZFNlbGVjdGlvbiA9IGZhbHNlOworICAgICAgICAgICAgICAgIHBhcmVudC5jdXJyZW50RG9jdW1lbnQuc2VsZWN0SXRlbShpdGVtT2JqLm5hbWUpOworICAgICAgICAgICAgICAgIHBhcmVudC5jdXJyZW50RG9jdW1lbnQuc2VuZFNlbGVjdGlvbiA9IHRydWU7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgcGFyZW50Ll9jbGlja0xheWVyLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgICAgICAgICAgPC9tZXRob2Q+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxtZXRob2QgbmFtZT0icmVtb3ZlRG9jdW1lbnQiIGFyZ3M9InJlZkl0ZW1OYW1lIj4KKyAgICAgICAgICAgIAkKKyAgICAgICAgICAgIAlpZiAoJGRlYnVnKSBEZWJ1Zy53YXJuKCJyZW1vdmVEb2N1bWVudCAiLHJlZkl0ZW1OYW1lKTsKKyAgICAgICAgICAgIAkKKyAgICAgICAgICAgICAgICBwYXJlbnQuY3VycmVudERvY3VtZW50LnJlbW92ZUl0ZW0ocmVmSXRlbU5hbWUpOworICAgICAgICAgICAgICAgIGlmIChwYXJlbnQuY3VycmVudERvY3VtZW50LmdldE51bUl0ZW1zKCkgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICBwYXJlbnQuY3VycmVudERvY3VtZW50LnNlbGVjdEl0ZW1BdCgwKTsKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50Ll9jbGlja0xheWVyLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgCXBhcmVudC5jdXJyZW50RG9jdW1lbnQuY2xlYXJTZWxlY3Rpb24oKTsgCisgICAgICAgICAgICAgICAgCXBhcmVudC5fY2xpY2tMYXllci5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgPC9tZXRob2Q+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxtZXRob2QgbmFtZT0iY2xlYXJEb2N1bWVudHNCYXIiPgorICAgICAgICAgICAgICAgIHBhcmVudC5jdXJyZW50RG9jdW1lbnQucmVzZXQoKTsKKyAgICAgICAgICAgICAgICBwYXJlbnQuX2NsaWNrTGF5ZXIuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgICAgICAgICAgPC9tZXRob2Q+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxkcmF3RG9jdW1lbnRQYW5lbEl0ZW0gbmFtZT0iYjMiIG1vZGk9ImRvY19maXJzdCIgcmVzb3VyY2VJdGVtPSJkb2NfZmlyc3QiIAorICAgICAgICAgICAgICAgIGxhYmVsaWQ9IjI1NSIgLz4gICAgICAgIAorICAgICAgICAgICAgPGRyYXdEb2N1bWVudFBhbmVsSXRlbSBuYW1lPSJiNCIgbW9kaT0iZG9jX3ByZSIgcmVzb3VyY2VJdGVtPSJkb2NfcHJlIiAKKyAgICAgICAgICAgICAgICBsYWJlbGlkPSIyNTYiIC8+ICAgICAgICAgICAgCisgICAgICAgICAgICA8ZHJhd0RvY3VtZW50UGFuZWxJdGVtIG5hbWU9ImI1IiBtb2RpPSJkb2NfbmV4dCIgcmVzb3VyY2VJdGVtPSJkb2NfbmV4dCIgCisgICAgICAgICAgICAgICAgbGFiZWxpZD0iMjU3IiAvPiAgICAgICAgCisgICAgICAgICAgICA8ZHJhd0RvY3VtZW50UGFuZWxJdGVtIG5hbWU9ImI2IiBtb2RpPSJkb2NfbGFzdCIgcmVzb3VyY2VJdGVtPSJkb2NfbGFzdCIgCisgICAgICAgICAgICAgICAgbGFiZWxpZD0iMjU4IiAvPiAgICAgICAgCisgICAgICAgIAorICAgICAgICAgICAgPGN1c3RvbUVkaXR0ZXh0IG5hbWU9Il9jdXJyZW50U2xpZGVObyIgd2lkdGg9IjQwIiBoZWlnaHQ9IjI0IiByZWdleHBUeXBlPSJudW1iZXIiID4KKyAgICAgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmJsdXIiPgorICAgICAgICAgICAgICAgICAgICBpZiAocGFyZW50LnBhcmVudC5wYXJlbnQuaWdub3JlVXBkYXRlcykgeworICAgICAgICAgICAgICAgICAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImlnbm9yZVVwZGF0ZXMgLS0gIik7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgcGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50Ll9kcmF3YXJlYU1hc2suX2RyYXdhcmVhLnNldEN1cnJlbnREb2N1bWVudEJ5VG9vbEJhcihwYXJlbnQucGFyZW50LmN1cnJlbnREb2N1bWVudC5nZXRWYWx1ZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50Ll9kcmF3YXJlYU1hc2suX2RyYXdhcmVhLm5ld1NsaWRlTnVtYmVyID0gTnVtYmVyKHRoaXMuZ2V0VGV4dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50Ll9kcmF3YXJlYU1hc2suX2RyYXdhcmVhLmRvRG9jdW1lbnRBY3Rpb24oInNldFNsaWRlTnVtYmVyIik7ICAgICAgICAgCisgICAgICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAgICAgPC9jdXN0b21FZGl0dGV4dD4gICAgCisgICAgICAgICAgICA8bGFiZWxUZXh0IHk9IjYiIGxhYmVsaWQ9IjI1NCIgLz4gICAgIAorICAgICAgICAgICAgPGxhYmVsVGV4dCBuYW1lPSJfdG90YWxTbGlkZU5vIiB5PSI2IiB3aWR0aD0iNDAiIC8+ICAKKyAgICAgICAgICAgIAorCQk8L3ZpZXc+CisJCQorCQk8IS0tIDM0MCAtLT4KKwkJPHZpZXcgbmFtZT0iX2NsaWNrTGF5ZXIiIGNsaWNrYWJsZT0idHJ1ZSIgb3BhY2l0eT0iMC43NSIgeD0iMzQwIgorCQkJICB3aWR0aD0iNDYwIiBoZWlnaHQ9IiRvbmNleyBwYXJlbnQuaGVpZ2h0IC0gdGhpcy55IH0iIAorCQkJICB5PSIyMCIgc2hvd2hhbmRjdXJzb3I9ImZhbHNlIiBiZ2NvbG9yPSIweEZGRkZGRiIgLz4KKwkJCisJPC92aWV3PgorCis8L2NsYXNzPgorICAgICAKKyAgICAKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL3BhbmVscy9wcm9wZXJ0eXBhbmVsL3Byb3BlcnR5UGFuZWxMZXR0ZXJCdXR0b24ubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvcGFuZWxzL3Byb3BlcnR5cGFuZWwvcHJvcGVydHlQYW5lbExldHRlckJ1dHRvbi5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGNkZjM4YgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL3BhbmVscy9wcm9wZXJ0eXBhbmVsL3Byb3BlcnR5UGFuZWxMZXR0ZXJCdXR0b24ubHp4CkBAIC0wLDAgKzEsNjggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisgICAgCis8Y2xhc3MgbmFtZT0icHJvcGVydHlQYW5lbExldHRlckJ1dHRvbiIgZXh0ZW5kcz0idmlldyIgcmVzb3VyY2U9Il9idXR0b25fcnNjX2xldHRlcl9yc2MiICAKKwkgICB4PSIzMTIiIHk9IjI0IiBoZWlnaHQ9IjIzIiB3aWR0aD0iMjQiIAorCWJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignYmFzZU1vdXNlY29sb3JpemVyJykgfSIgPgorCTxhdHRyaWJ1dGUgbmFtZT0iaXRlbVJlc291cmNlTmFtZSIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudFZhbCIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorCQorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZCIgdmFsdWU9Ijg3IiB0eXBlPSJudW1iZXIiLz4KKyAgICAKKwk8YXR0cmlidXRlIG5hbWU9ImVuYWJsZWQiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIvPgorCQorCTxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdmVyIj4KKwkJdGhpcy5zZXRBdHRyaWJ1dGUoJ2JnY29sb3InLDB4RkZGRkZGKTsKKwk8L2hhbmRsZXI+CisJPGhhbmRsZXIgbmFtZT0ib25tb3VzZW91dCI+CisJCXRoaXMudXBkYXRlQnlWYWwoKTsKKwk8L2hhbmRsZXI+CisgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgCXRoaXMuY3VycmVudFZhbCA9ICF0aGlzLmN1cnJlbnRWYWw7CisgICAgCXRoaXMudXBkYXRlQnlWYWwoKTsKKyAgICAgICAgcGFyZW50LnBhcmVudC51cGRhdGVQcm9wZXJ0aWVzKCk7CQorICAgIDwvaGFuZGxlcj4KKyAgICA8bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4KKyAgICAJcmV0dXJuIHRoaXMuY3VycmVudFZhbDsKKyAgICA8L21ldGhvZD4KKyAgICA8bWV0aG9kIG5hbWU9InNldFZhbHVlIiBhcmdzPSJib29sIj4KKyAgICAJdGhpcy5jdXJyZW50VmFsID0gYm9vbDsKKyAgICAJdGhpcy51cGRhdGVCeVZhbCgpOworICAgIDwvbWV0aG9kPgorICAgIDxtZXRob2QgbmFtZT0idXBkYXRlQnlWYWwiPgorCQlpZiAodGhpcy5jdXJyZW50VmFsKXsKKyAgICAJCXRoaXMuc2V0QXR0cmlidXRlKCdiZ2NvbG9yJyxjYW52YXMuZ2V0VGhlbWVDb2xvcignYmFzZWJnY29sb3JpemVyJykpOworICAgIAl9IGVsc2UgeworICAgIAkJdGhpcy5zZXRBdHRyaWJ1dGUoJ2JnY29sb3InLGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdiYXNlTW91c2Vjb2xvcml6ZXInKSk7CisgICAgCX0gICAgCQorICAgIDwvbWV0aG9kPgorICAgIDx2aWV3IHg9IjIiIHk9IjIiIHJlc291cmNlPSIkb25jZXsgcGFyZW50Lml0ZW1SZXNvdXJjZU5hbWUgfSIgLz4KKyAgICAKKyAgICA8dmlldyBuYW1lPSJfY2xpY2tFbmFibGVkIiB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCB9IiBoZWlnaHQ9IiRvbmNleyBwYXJlbnQuaGVpZ2h0IH0iIAorICAgIAkgIHZpc2liaWxpdHk9IiR7IChwYXJlbnQuZW5hYmxlZCkgPyAnaGlkZGVuJyA6ICd2aXNpYmxlJyB9IgorICAgIAkgIG9wYWNpdHk9IjAuNSIgYmdjb2xvcj0iMHhGRkZGRkYiIGNsaWNrYWJsZT0idHJ1ZSIgc2hvd2hhbmRjdXJzb3I9ImZhbHNlIiAvPgorICAgIAorICAgIDxsYWJlbFRvb2x0aXAgeD0iMiIgeT0iMiIgbGFiZWxpZD0iJG9uY2V7IHBhcmVudC5sYWJlbGlkIH0iIC8+CisgICAgCis8L2NsYXNzPgorICAgIAorPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvcGFuZWxzL3Byb3BlcnR5cGFuZWwvcmVzb3VyY2VzL2J1dHRvbl9yc2Muc3dmIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvcGFuZWxzL3Byb3BlcnR5cGFuZWwvcmVzb3VyY2VzL2J1dHRvbl9yc2Muc3dmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyN2U2ZDAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9wYW5lbHMvcHJvcGVydHlwYW5lbC9yZXNvdXJjZXMvYnV0dG9uX3JzYy5zd2YKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvcmVzb3VyY2VzL2FkZC5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9yZXNvdXJjZXMvYWRkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzMyZmVmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvcmVzb3VyY2VzL2FkZC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvcmVzb3VyY2VzL2JvdW5kaW5nQm94LnBuZyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL3Jlc291cmNlcy9ib3VuZGluZ0JveC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWM0YjgxMgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL3Jlc291cmNlcy9ib3VuZGluZ0JveC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvcmVzb3VyY2VzL2JvdW5kaW5nQm94VEwucG5nIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvcmVzb3VyY2VzL2JvdW5kaW5nQm94VEwucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjNGI4MTIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9yZXNvdXJjZXMvYm91bmRpbmdCb3hUTC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvcmVzb3VyY2VzL2JvdW5kaW5nQm94VFIucG5nIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvcmVzb3VyY2VzL2JvdW5kaW5nQm94VFIucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhZTcyMzAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9yZXNvdXJjZXMvYm91bmRpbmdCb3hUUi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvcmVzb3VyY2VzL2JvdW5kaW5nQm94VUwucG5nIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvcmVzb3VyY2VzL2JvdW5kaW5nQm94VUwucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4Zjk1YWQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9yZXNvdXJjZXMvYm91bmRpbmdCb3hVTC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvcmVzb3VyY2VzL2JvdW5kaW5nQm94VUxOb0dyaXBwZXIucG5nIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvcmVzb3VyY2VzL2JvdW5kaW5nQm94VUxOb0dyaXBwZXIucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkNDI4YzkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9yZXNvdXJjZXMvYm91bmRpbmdCb3hVTE5vR3JpcHBlci5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvcmVzb3VyY2VzL2JvdW5kaW5nQm94VVIuZmxhIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvcmVzb3VyY2VzL2JvdW5kaW5nQm94VVIuZmxhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxNjA2MmIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9yZXNvdXJjZXMvYm91bmRpbmdCb3hVUi5mbGEKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvcmVzb3VyY2VzL2JvdW5kaW5nQm94VVIucG5nIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvcmVzb3VyY2VzL2JvdW5kaW5nQm94VVIucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxYTI0ODIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9yZXNvdXJjZXMvYm91bmRpbmdCb3hVUi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvcmVzb3VyY2VzL3BvaW50ZXIuZmxhIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvcmVzb3VyY2VzL3BvaW50ZXIuZmxhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2MDY4ZTkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9yZXNvdXJjZXMvcG9pbnRlci5mbGEKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvcmVzb3VyY2VzL3BvaW50ZXIuc3dmIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvcmVzb3VyY2VzL3BvaW50ZXIuc3dmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3NzQyYmIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9yZXNvdXJjZXMvcG9pbnRlci5zd2YKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvcmVzb3VyY2VzL3RleHRfYm9sZC5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC9yZXNvdXJjZXMvdGV4dF9ib2xkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODlhZTgwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvcmVzb3VyY2VzL3RleHRfYm9sZC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvcmVzb3VyY2VzL3RleHRfaXRhbGljLnBuZyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL3Jlc291cmNlcy90ZXh0X2l0YWxpYy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQ4MmFjOAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL3Jlc291cmNlcy90ZXh0X2l0YWxpYy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvd2hpdGVib2FyZEJhck1lbnUubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvd2hpdGVib2FyZEJhck1lbnUubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3NjBhNjkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC93aGl0ZWJvYXJkQmFyTWVudS5sengKQEAgLTAsMCArMSwxMDUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzxjbGFzcyBuYW1lPSJ3aGl0ZWJvYXJkQmFyTWVudSIgZXh0ZW5kcz0idmlldyIgd2lkdGg9IiR7IHBhcmVudC53aWR0aCB9IiB4PSIwIiB5PSIyMSIgCisgICAgaGVpZ2h0PSIyMCIgbGF5b3V0PSJheGlzOng7c3BhY2luZzoxO2luc2V0OjIiIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignYmFzZU1vdXNlY29sb3JpemVyJykgfSI+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJzdGF0aWN3aWR0aCIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0iMTIwIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudEJ0biIgdmFsdWU9Im51bGwiIC8+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJnZXRDdXJyZW50U2l6ZSI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgaWYgKCAoKHRoaXMuc3Vidmlld3MubGVuZ3RoKzEpKih0aGlzLnN0YXRpY3dpZHRoKzEpKSA8PSB0aGlzLndpZHRoKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3RhdGljd2lkdGg7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHZhciBuZXd3aWR0aCA9IE1hdGgucm91bmQoKHRoaXMud2lkdGgtdGhpcy5zdWJ2aWV3cy5sZW5ndGgpLyh0aGlzLnN1YnZpZXdzLmxlbmd0aCsxKSk7CisgICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8dGhpcy5zdWJ2aWV3cy5sZW5ndGg7aSsrKSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuc3Vidmlld3NbaV0uc2V0QXR0cmlidXRlKCd3aWR0aCcsbmV3d2lkdGgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3d2lkdGg7CisgICAgICAgICAgICB9ICAgCisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9ud2lkdGgiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIGlmICggKCh0aGlzLnN1YnZpZXdzLmxlbmd0aCkqKHRoaXMuc3RhdGljd2lkdGgrMSkpIDw9IHRoaXMud2lkdGgpIHsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTx0aGlzLnN1YnZpZXdzLmxlbmd0aDtpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJ2aWV3c1tpXS5zZXRBdHRyaWJ1dGUoJ3dpZHRoJyx0aGlzLnN0YXRpY3dpZHRoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHZhciBuZXd3aWR0aCA9IE1hdGgucm91bmQoKHRoaXMud2lkdGgtdGhpcy5zdWJ2aWV3cy5sZW5ndGgpLyh0aGlzLnN1YnZpZXdzLmxlbmd0aCkpOworICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPHRoaXMuc3Vidmlld3MubGVuZ3RoO2krKykgeworICAgICAgICAgICAgICAgICAgICB0aGlzLnN1YnZpZXdzW2ldLnNldEF0dHJpYnV0ZSgnd2lkdGgnLG5ld3dpZHRoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IAorICAgICAgICBdXT4KKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJyZW1vdmVPYmplY3QiIGFyZ3M9ImJ0biI+CisgICAgCXZhciB3aGl0ZWJvYXJkSWQgPSBidG4ub2JqUmVmLndoaXRlYm9hcmRJZDsKKyAgICAJdGhpcy5yZW1vdmVPYmplY3RTeW5jZWQoYnRuKTsKKyAgICAJcGFyZW50LnNlbmRSZW1vdmVXaW5kb3cod2hpdGVib2FyZElkKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InJlbW92ZU9iamVjdFN5bmNlZCIgYXJncz0iYnRuIj4KKyAgICA8IVtDREFUQVsKKyAgICAJdmFyIHJlbW92ZUN1cnJlbnQgPSBmYWxzZTsKKyAgICAJaWYgKHRoaXMuY3VycmVudEJ0biA9PSBidG4peworICAgIAkJcmVtb3ZlQ3VycmVudCA9IHRydWU7CisgICAgCX0KKyAgICAJYnRuLm9ialJlZi5kZXN0cm95KCk7CisgICAgICAgIGJ0bi5kZXN0cm95KCk7CisgICAgICAgIGlmICh0aGlzLnN1YnZpZXdzLmxlbmd0aCAhPSAwICYmIHJlbW92ZUN1cnJlbnQpIHsKKyAgICAgICAgCXRoaXMuc2VuZEFjdGl2ZVdpbmRvd1N5bmNlZCh0aGlzLnN1YnZpZXdzW3RoaXMuc3Vidmlld3MubGVuZ3RoLTFdKTsKKyAgICAgICAgfQorICAgICAgICBwYXJlbnQuYWRkTmV3SXRlbUJ1dHRvbi51cGRhdGVQb3NpdGlvbigpOworICAgIF1dPgorICAgIDwvbWV0aG9kPgorCisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJzZW5kQWN0aXZlV2luZG93IiBhcmdzPSJidG4sd2luIj4KKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInNlbmRBY3RpdmVXaW5kb3c6ICIsYnRuLHdpbik7CisgICAgICAgIHRoaXMuc2VuZEFjdGl2ZVdpbmRvd1N5bmNlZChidG4pOworICAgICAgICB0aGlzLmN1cnJlbnRCdG4ub2JqUmVmLnNlbmRBY3RpdmVXaW5kb3coKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InNlbmRBY3RpdmVXaW5kb3dTeW5jZWQiIGFyZ3M9ImJ0biI+CisgICAgCTwhW0NEQVRBWworICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudEJ0biAhPSBudWxsKXsKKyAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRCdG4uaXNhY3RpdmU9ZmFsc2U7CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudEJ0bi5fbWluaW1pemVidG5fbW8gIT0gbnVsbCkgdGhpcy5jdXJyZW50QnRuLl9taW5pbWl6ZWJ0bl9tby5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCdoaWRkZW4nKTsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50QnRuLl9taW5pbWl6ZWJ0bl9kbiAhPSBudWxsKSB0aGlzLmN1cnJlbnRCdG4uX21pbmltaXplYnRuX2RuLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ2hpZGRlbicpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGhpcy5jdXJyZW50QnRuID0gYnRuOworICAgICAgICAgICAgdGhpcy5jdXJyZW50QnRuLm9ialJlZi5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgIAl0aGlzLmN1cnJlbnRCdG4ub2JqUmVmLmJyaW5nVG9Gcm9udCgpOworICAgICAgICAgICAgLy8vL2lmICgkZGVidWcpICAvL0RlYnVnLndyaXRlKCJzZW5kQWN0aXZlV2luZG93MjogIix0aGlzLmN1cnJlbnRCdG4pOworICAgICAgICAgICAgdGhpcy5jdXJyZW50QnRuLl9taW5pbWl6ZWJ0bl9tby5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCdoaWRkZW4nKTsKKyAgICAgICAgICAgIHRoaXMuY3VycmVudEJ0bi5fbWluaW1pemVidG5fZG4uc2V0QXR0cmlidXRlKCd2aXNpYmlsaXR5JywndmlzaWJsZScpOworICAgICAgICAgICAgdGhpcy5jdXJyZW50QnRuLmlzYWN0aXZlPXRydWU7CisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorICAgIAorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvd2hpdGVib2FyZE1pbmlCdXR0b24ubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvd2hpdGVib2FyZE1pbmlCdXR0b24ubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkZWU1ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC93aGl0ZWJvYXJkTWluaUJ1dHRvbi5sengKQEAgLTAsMCArMSwxNjYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzxjbGFzcyBuYW1lPSJ3aGl0ZWJvYXJkTWluaUJ1dHRvbiIgZXh0ZW5kcz0idmlldyIgd2lkdGg9IjI1MCIgaGVpZ2h0PSIxOCIgeT0iMiIKKyAgICBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ2Jhc2ViZ2NvbG9yaXplcicpIH0iPgorICAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9ImJ0bk5hbWUiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9Im9ialJlZiIgdmFsdWU9Im51bGwiIC8+CisKKyAgICA8YXR0cmlidXRlIG5hbWU9InppZWx4IiB2YWx1ZT0iMjAwIiB0eXBlPSJudW1iZXIiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJ6aWVsd2lkdGgiIHZhbHVlPSIxMDAiIHR5cGU9Im51bWJlciIgLz4gICAgCisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpc2FjdGl2ZSIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpc0hpZGRlbiIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgIHRoaXMuY2FsY1RleHRXaWR0aCgpOworICAgICAgICBwYXJlbnQub253aWR0aC5zZW5kRXZlbnQoKTsKKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib253aWR0aCI+CisgICAgICAgIGlmICh0aGlzLmlzaW5pdGVkKXsKKyAgICAgICAgICAgIHRoaXMuY2FsY1RleHRXaWR0aCgpOworICAgICAgICB9CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iZGlzYWJsZUl0ZW0iPgorICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJkaXNhYmxlSXRlbSA6OiBzZXQgdmlzaWJpbGl0eSB0byBoaWRkZW4iKTsKKyAgICAgICAgdGhpcy5pc0hpZGRlbiA9IHRydWU7CisgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgICAgIC8vdGhpcy5kZXN0cm95KCk7CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJlbmFibGVJdGVtIj4KKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgIHRoaXMuaXNIaWRkZW4gPSBmYWxzZTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImNhbGNUZXh0V2lkdGgiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIGlmICh0aGlzLmlzSGlkZGVuKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8vLy8vLy9pZiAoJGRlYnVnKSAgLy9EZWJ1Zy53cml0ZSh0aGlzLHRoaXMuX3RleHQsdGhpcy5fdGV4dC5nZXRUZXh0V2lkdGgoKSk7CisgICAgICAgICAgICBpZiAodGhpcy5fdGV4dC5nZXRUZXh0V2lkdGgoKT4odGhpcy53aWR0aC0yNCkpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9sb25nLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ3Zpc2libGUnKTsKKyAgICAgICAgICAgICAgICB0aGlzLl90ZXh0LnNldEF0dHJpYnV0ZSgnd2lkdGgnLHRoaXMud2lkdGgtMjYpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9sb25nLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ2hpZGRlbicpOworICAgICAgICAgICAgICAgIHRoaXMuX3RleHQuc2V0QXR0cmlidXRlKCd3aWR0aCcsdGhpcy53aWR0aC0xOCk7CisgICAgICAgICAgICB9CisgICAgICAgIF1dPiAgICAgICAgCisgICAgPC9tZXRob2Q+CisgICAgICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICBpZiAodGhpcy5pc0hpZGRlbikgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHRoaXMuX21pbmltaXplYnRuX21vLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ3Zpc2libGUnKTsKKyAgICAgICAgdGhpcy5fbWluaW1pemVidG5fZG4uc2V0QXR0cmlidXRlKCd2aXNpYmlsaXR5JywnaGlkZGVuJyk7CisgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCIgOjogb25jbGljayA6OiAiKTsKKyAgICAgICAgdGhpcy5zZW5kQWN0aXZlV2luZG93KHRoaXMub2JqUmVmKTsKKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZW92ZXIiPgorICAgICAgICBpZiAodGhpcy5pc0hpZGRlbikgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIHRoaXMuX21pbmltaXplYnRuX21vLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ3Zpc2libGUnKTsKKyAgICAgICAgdGhpcy5fbWluaW1pemVidG5fZG4uc2V0QXR0cmlidXRlKCd2aXNpYmlsaXR5JywnaGlkZGVuJyk7CisgICAgPC9oYW5kbGVyPgorICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdXQiPgorICAgICAgICBpZiAodGhpcy5pc0hpZGRlbikgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmICh0aGlzLmlzYWN0aXZlKSB7CisgICAgICAgICAgICB0aGlzLl9taW5pbWl6ZWJ0bl9tby5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCdoaWRkZW4nKTsKKyAgICAgICAgICAgIHRoaXMuX21pbmltaXplYnRuX2RuLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ3Zpc2libGUnKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuX21pbmltaXplYnRuX21vLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ2hpZGRlbicpOworICAgICAgICAgICAgdGhpcy5fbWluaW1pemVidG5fZG4uc2V0QXR0cmlidXRlKCd2aXNpYmlsaXR5JywnaGlkZGVuJyk7CisgICAgICAgIH0gICAgICAgIAorICAgIDwvaGFuZGxlcj4KKyAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNlZG93biI+CisgICAgICAgIGlmICh0aGlzLmlzSGlkZGVuKSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0gICAgICAgIAorICAgICAgICB0aGlzLl9taW5pbWl6ZWJ0bl9tby5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCdoaWRkZW4nKTsKKyAgICAgICAgdGhpcy5fbWluaW1pemVidG5fZG4uc2V0QXR0cmlidXRlKCd2aXNpYmlsaXR5JywndmlzaWJsZScpOworICAgIDwvaGFuZGxlcj4KKyAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNldXAiPgorICAgICAgICBpZiAodGhpcy5pc0hpZGRlbikgeworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9ICAgICAgICAKKyAgICAgICAgdGhpcy5fbWluaW1pemVidG5fbW8uc2V0QXR0cmlidXRlKCd2aXNpYmlsaXR5JywndmlzaWJsZScpOworICAgICAgICB0aGlzLl9taW5pbWl6ZWJ0bl9kbi5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCdoaWRkZW4nKTsKKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJzZW5kQWN0aXZlV2luZG93IiBhcmdzPSJ3aW4iPgorICAgICAgICB0aGlzLnBhcmVudC5zZW5kQWN0aXZlV2luZG93KHRoaXMsd2luKTsKKyAgICA8L21ldGhvZD4gICAgCisKKwk8bWV0aG9kIG5hbWU9ImFjdGl2YXRlU3luY2VkIj4KKwkJdGhpcy5wYXJlbnQuc2VuZEFjdGl2ZVdpbmRvd1N5bmNlZCh0aGlzKTsKKwk8L21ldGhvZD4KKyAgICAKKyAgICA8dmlldyBuYW1lPSJfbWluaW1pemVidG5fbW8iIHdpZHRoPSIkeyBwYXJlbnQud2lkdGgtMiB9IiBoZWlnaHQ9IjE2IgorICAgICAgICBiZ2NvbG9yPSJ3aGl0ZSIgb3BhY2l0eT0iMC4zIiB2aXNpYmlsaXR5PSJoaWRkZW4iIHg9IjEiIHk9IjEiIC8+CisKKyAgICA8dmlldyBuYW1lPSJfbWluaW1pemVidG5fZG4iIHdpZHRoPSIkeyBwYXJlbnQud2lkdGgtMiB9IiBoZWlnaHQ9IjE2IgorICAgICAgICBiZ2NvbG9yPSJibGFjayIgb3BhY2l0eT0iMC4zIiB2aXNpYmlsaXR5PSJoaWRkZW4iIHg9IjEiIHk9IjEiIC8+CisgICAgCisKKyAgICA8dGV4dCB0ZXh0PSIkeyBwYXJlbnQuYnRuTmFtZSB9IiBmZ2NvbG9yPSIweEZGRkZGRiIgcmVzaXplPSJmYWxzZSIgCisgICAgICAgIHg9IjEiIGZvbnRzaXplPSIxMCIgbmFtZT0iX3RleHQiIC8+CisgICAgCisgICAgICAgIDx2aWV3IHk9IjEiIHg9IiR7IHBhcmVudC53aWR0aC0xOCB9IiBuYW1lPSJfY2xvc2UiCisgICAgICAgICAgICByZXNvdXJjZT0iYnRuX3ByZXNlbnRlcl9jbG9zZSIKKyAgICAgICAgICAgIG9wYWNpdHk9IiR7ICgoY2FudmFzLmlzbW9kZXJhdG9yKSA/IDEgOiAoKGNhbnZhcy5pc0FsbG93ZWRUb0RyYXcpID8gMSA6IDAuNSApKSB9IiAKKyAgICAgICAgICAgIG9ubW91c2VvdmVyPSJ0aGlzLnNldEF0dHJpYnV0ZSgnZnJhbWUnLDIpIgorICAgICAgICAgICAgb25tb3VzZW91dD0idGhpcy5zZXRBdHRyaWJ1dGUoJ2ZyYW1lJywxKSIKKyAgICAgICAgICAgIG9ubW91c2Vkb3duPSJ0aGlzLnNldEF0dHJpYnV0ZSgnZnJhbWUnLDMpIgorICAgICAgICAgICAgb25tb3VzZXVwPSJ0aGlzLnNldEF0dHJpYnV0ZSgnZnJhbWUnLDEpIiA+CisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKwkgICAgICAgICAgICA8IVtDREFUQVsKKwkgICAgICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2ZyYW1lJywyKTsKKwkgICAgICAgICAgICAgICAgY2FudmFzLl92aWRlb2NvbnRhaW5lci5fdmlkZW92aWV3Y29udGVudC5jbG9zZVdoaXRlYm9hcmQoKTsKKwkgICAgICAgICAgICAgICAgdmFyIHQgPSB0aGlzOworICAgICAgICAgICAgICAgICAgICBjYW52YXMudmlkZW9Db21wX2xjLmNsb3NlV2hpdGVib2FyZCA9IGZ1bmN0aW9uKGNvbmZpcm0pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJjb25maXJtIGNsb3NlV2hpdGVib2FyZDoiLCBjb25maXJtKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjb25maXJtKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdC5wYXJlbnQucGFyZW50LnJlbW92ZU9iamVjdCh0LnBhcmVudCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBdXT4KKyAgICAgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgICAgIDxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iMTM2NCIgLz4KKyAgICAgICAgPC92aWV3PiAgCisgICAgICAgIAorICAgIDx0ZXh0IHk9IjEiIG5hbWU9Il9sb25nIiB0ZXh0PSIuLi4iIGZnY29sb3I9IjB4RkZGRkZGIgorICAgICAgICB4PSIkeyBwYXJlbnQud2lkdGgtMjggfSIgZm9udHNpemU9IjEwIiAvPgorCisgICAgPGxhYmVsVG9vbHRpcCB0ZXh0PSIkeyBwYXJlbnQuYnRuTmFtZSB9IiAvPgorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9jb25mZXJlbmNlL3doaXRlYm9hcmQvd2luZG93cy9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL3dpbmRvd3MvbGlicmFyeS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTAwMjEwOAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL3dpbmRvd3MvbGlicmFyeS5sengKQEAgLTAsMCArMSwyNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworCTxpbmNsdWRlIGhyZWY9InNhdmVBc1dtbFdpbmRvdy5sengiIC8+CisJPGluY2x1ZGUgaHJlZj0ibG9hZFdoaXRlYm9hcmRXaW5kb3cubHp4IiAvPgorCQorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC93aW5kb3dzL2xvYWRXaGl0ZWJvYXJkV2luZG93Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL3dpbmRvd3MvbG9hZFdoaXRlYm9hcmRXaW5kb3cubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyZGEyMDIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC93aW5kb3dzL2xvYWRXaGl0ZWJvYXJkV2luZG93Lmx6eApAQCAtMCwwICsxLDQzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8Y2xhc3MgbmFtZT0ibG9hZFdoaXRlYm9hcmRXaW5kb3ciIGV4dGVuZHM9ImxhYmVsVGV4dCIgbXVsdGlsaW5lPSJ0cnVlIiByZXNpemU9ImZhbHNlIiAKKwkgICB3aWR0aD0iMjYwIiBhbGlnbj0icmlnaHQiIHk9IiR7IHBhcmVudC5oZWlnaHQgLSB0aGlzLmhlaWdodCAtIDEwIH0iIAorCSAgIGJnY29sb3I9IjB4RkZGRkZGIiBmZ2NvbG9yPSIweEZGMzMwMCI+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJyZWZPYmoiIHZhbHVlPSJudWxsIiAvPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgIAl0aGlzLmRlc3Ryb3koKTsKKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJjbG9zZSI+CisgICAgICAgIHRoaXMuZGVzdHJveSgpOworICAgIDwvbWV0aG9kPiAgICAKKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InNldE1lc3NhZ2UiIGFyZ3M9Im1lc3MiPgorICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgndGV4dCcsbWVzcyk7CisgICAgPC9tZXRob2Q+CisgICAgCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC93aW5kb3dzL3NhdmVBc1dtbFdpbmRvdy5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2NvbmZlcmVuY2Uvd2hpdGVib2FyZC93aW5kb3dzL3NhdmVBc1dtbFdpbmRvdy5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODIzYzljZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvY29uZmVyZW5jZS93aGl0ZWJvYXJkL3dpbmRvd3Mvc2F2ZUFzV21sV2luZG93Lmx6eApAQCAtMCwwICsxLDkyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8Y2xhc3MgbmFtZT0ic2F2ZUFzV21sV2luZG93IiBleHRlbmRzPSJsYWJlbEV4cGxvcmVyQm94IiBsYWJlbGlkPSIxOTkiCisgICAgZG9ja2luZz0idHJ1ZSIgY2xvc2FibGU9InRydWUiIHdpZHRoPSIyNjAiIHg9IjIwMCIgeT0iMCIgaGVpZ2h0PSIyMjAiPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0icmVmT2JqIiB2YWx1ZT0ibnVsbCIgLz4KKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgIAlsei5Nb2RlTWFuYWdlci5tYWtlTW9kYWwodGhpcyk7CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xvc2UiPgorICAgIAlsei5Nb2RlTWFuYWdlci5yZWxlYXNlKHRoaXMpOworICAgIDwvaGFuZGxlcj4KKyAgICAKKyAgICA8bGFiZWxUZXh0IHk9IjIyIiBsYWJlbGlkPSIyMDEiIHdpZHRoPSIyMDAiIC8+CisgICAgPGN1c3RvbUVkaXR0ZXh0IG5hbWU9Il9zYXZlZmlsZU5hbWUxIiB5PSI0MiIgeD0iNCIgd2lkdGg9IjI0MCIgdGV4dD0iZmlsZW5hbWUiIC8+CisgICAgCisgICAgPCEtLQorICAgIDxsYWJlbFRleHQgeD0iNCIgeT0iNzIiIGxhYmVsaWQ9IjU2MSIgd2lkdGg9IjIwMCIgZmdjb2xvcj0iMHgwMDAwRkYiPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgIHRoaXMucGFyZW50LnJlZk9iai5jb25maXJtU2F2ZUFzSW1hZ2VUeXBlRXhwb3J0KHRoaXMucGFyZW50Ll9zYXZlZmlsZU5hbWUxLmdldFRleHQoKSwicG5nIik7CisgICAgICAgICAgICB0aGlzLnBhcmVudC5jbG9zZSgpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9sYWJlbFRleHQ+CisgICAgCisgICAgPGxhYmVsVGV4dCB4PSI0IiB5PSI5MiIgbGFiZWxpZD0iNTYyIiB3aWR0aD0iMjAwIiBmZ2NvbG9yPSIweDAwMDBGRiI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgdGhpcy5wYXJlbnQucmVmT2JqLmNvbmZpcm1TYXZlQXNJbWFnZVR5cGVFeHBvcnQodGhpcy5wYXJlbnQuX3NhdmVmaWxlTmFtZTEuZ2V0VGV4dCgpLCJqcGciKTsKKyAgICAgICAgICAgIHRoaXMucGFyZW50LmNsb3NlKCk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICA8L2xhYmVsVGV4dD4KKyAgICAKKyAgICA8bGFiZWxUZXh0IHg9IjQiIHk9IjExMiIgbGFiZWxpZD0iNTYzIiB3aWR0aD0iMjAwIiBmZ2NvbG9yPSIweDAwMDBGRiI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgdGhpcy5wYXJlbnQucmVmT2JqLmNvbmZpcm1TYXZlQXNJbWFnZVR5cGVFeHBvcnQodGhpcy5wYXJlbnQuX3NhdmVmaWxlTmFtZTEuZ2V0VGV4dCgpLCJwZGYiKTsKKyAgICAgICAgICAgIHRoaXMucGFyZW50LmNsb3NlKCk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICA8L2xhYmVsVGV4dD4KKyAgICAKKyAgICA8bGFiZWxUZXh0IHg9IjQiIHk9IjEzMiIgbGFiZWxpZD0iNTYwIiB3aWR0aD0iMjAwIiBmZ2NvbG9yPSIweDAwMDBGRiI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgdGhpcy5wYXJlbnQucmVmT2JqLmNvbmZpcm1TYXZlQXNJbWFnZUV4cG9ydCh0aGlzLnBhcmVudC5fc2F2ZWZpbGVOYW1lMS5nZXRUZXh0KCkpOworICAgICAgICAgICAgdGhpcy5wYXJlbnQuY2xvc2UoKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgIDwvbGFiZWxUZXh0PgorICAgIAorICAgIDxsYWJlbFRleHQgeD0iNCIgeT0iMTUyIiBsYWJlbGlkPSI1NjQiIHdpZHRoPSIyMDAiIGZnY29sb3I9IjB4MDAwMEZGIj4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICB0aGlzLnBhcmVudC5yZWZPYmouY29uZmlybVNhdmVBc0ltYWdlVHlwZUV4cG9ydCh0aGlzLnBhcmVudC5fc2F2ZWZpbGVOYW1lMS5nZXRUZXh0KCksInRpZiIpOworICAgICAgICAgICAgdGhpcy5wYXJlbnQuY2xvc2UoKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgIDwvbGFiZWxUZXh0PgorICAgICAtLT4KKyAgICAKKwk8c2ltcGxlTGFiZWxCdXR0b24gbmFtZT0iX2NvbmZpcm0iIHg9IjQwIiB5PSIxOTAiIAorCQkJbGFiZWxpZD0iMjAzIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjIwIj4KKwkJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisJCQl0aGlzLnBhcmVudC5yZWZPYmouY29uZmlybVNhdmVBc09iamVjdCh0aGlzLnBhcmVudC5fc2F2ZWZpbGVOYW1lMS5nZXRUZXh0KCkpOworCQk8L2hhbmRsZXI+CisJPC9zaW1wbGVMYWJlbEJ1dHRvbj4JCisgICAgCisJPHNpbXBsZUxhYmVsQnV0dG9uIG5hbWU9Il9jYW5jZWwiIHg9IjE1MCIgeT0iMTkwIiAKKwkJCWxhYmVsaWQ9IjIwMiIgd2lkdGg9IjEwMCIgaGVpZ2h0PSIyMCI+CisJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorCQkJdGhpcy5wYXJlbnQuY2xvc2UoKTsKKwkJPC9oYW5kbGVyPgorCTwvc2ltcGxlTGFiZWxCdXR0b24+CisJCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2Rhc2hib2FyZC9pbmZvc1BhbmVsLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvZGFzaGJvYXJkL2luZm9zUGFuZWwubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0ZWNhZTIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2Rhc2hib2FyZC9pbmZvc1BhbmVsLmx6eApAQCAtMCwwICsxLDk2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisJCis8Y2xhc3MgbmFtZT0iaWNvblN0ZXBCdXR0b25XaXp6YXJkIiBleHRlbmRzPSJ2aWV3Ij4KKwkKKwk8YXR0cmlidXRlIG5hbWU9InJlc291cmNlVmlld05hbWUiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9ImxhYmVsaWQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisgICAgCisJPGltYWdlIHNyYz0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUltYWdlKCBwYXJlbnQucmVzb3VyY2VWaWV3TmFtZSApIH0iIAorCQlzdHJldGNoZXM9ImJvdGgiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgLz4KKwkKKwk8bGFiZWxUZXh0IG5hbWU9Il90eHQiIGxhYmVsaWQ9IiRvbmNleyBwYXJlbnQubGFiZWxpZCB9IiB4PSIzMCIgCisJCQkgICB5PSIyIiBmb250c3R5bGU9ImJvbGQiIGZnY29sb3I9IjB4MTQ1MzdDIiAvPgorCQorPC9jbGFzcz4KKworPCEtLS0gIlN5c3RlbSIgcGFuZWwgb24gdGhlIGRhc2hib2FyZCAtLT4KKzxjbGFzcyBuYW1lPSJpbmZvc1BhbmVsIiBleHRlbmRzPSJ2aWV3IiAKKyAgICB3aWR0aD0iJHsgY2FudmFzLndpZHRoIC0gdGhpcy54IC0gMTB9IiBoZWlnaHQ9IjIyNCIgeT0iMTAiPgorICAgIAorCTx2aWV3IHdpZHRoPSIkeyBwYXJlbnQud2lkdGgtMiB9IiBoZWlnaHQ9IiRvbmNleyBwYXJlbnQuaGVpZ2h0IH0iID4KKyAgICAgICAgCisgICAgICAgIDxsYWJlbFRleHQgbmFtZT0iX3R4dCIgZm9udHN0eWxlPSJib2xkIiBsYWJlbGlkPSI3NzQiIHk9IjAiIHg9IjIiIC8+CisgICAgICAgIAorICAgICAgICA8aWNvblN0ZXBCdXR0b25XaXp6YXJkIHJlc291cmNlVmlld05hbWU9Imljb25fYnRuX2Rhc2hib2FyZF8xIiB4PSIxMTAiIHk9IjMwIiBsYWJlbGlkPSI3NjgiPgorICAgICAgICAJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICAgICAgcXVpY2tsaW5rQWN0KCdjb25mZXJlbmNlTW9kdWxlUm9vbUxpc3QnKTsKKyAgICAgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPC9pY29uU3RlcEJ1dHRvbldpenphcmQ+CisgICAgICAgIAorICAgICAgCisgICAgICAgIDxpY29uU3RlcEJ1dHRvbldpenphcmQgcmVzb3VyY2VWaWV3TmFtZT0iaWNvbl9idG5fZGFzaGJvYXJkXzIiIHg9IjE0MCIgeT0iNjAiIGxhYmVsaWQ9Ijc3MSI+CisgICAgICAgIAk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgICAgICBxdWlja2xpbmtBY3QoJ2NvbmZlcmVuY2VNb2R1bGVSb29tTGlzdCcpOworICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8L2ljb25TdGVwQnV0dG9uV2l6emFyZD4KKyAgICAgICAgCisKKyAgICAgICAgPGljb25TdGVwQnV0dG9uV2l6emFyZCByZXNvdXJjZVZpZXdOYW1lPSJpY29uX2J0bl9kYXNoYm9hcmRfMyIgeD0iMTcwIiB5PSI5MCIgbGFiZWxpZD0iNzcyIiA+CisgICAgICAgIAk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgICAgICBxdWlja2xpbmtBY3QoJ2NvbmZlcmVuY2VNb2R1bGVSb29tTGlzdCcpOworICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8L2ljb25TdGVwQnV0dG9uV2l6emFyZD4KKyAgICAgICAgCisgICAgICAgIAorICAgICAgICA8aWNvblN0ZXBCdXR0b25XaXp6YXJkIHJlc291cmNlVmlld05hbWU9Imljb25fYnRuX2Rhc2hib2FyZF80IiB4PSIyMDAiIHk9IjEyMCIgbGFiZWxpZD0iNzczIj4KKyAgICAgICAgCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgICAgIHF1aWNrbGlua0FjdCgnY29uZmVyZW5jZU1vZHVsZVJvb21MaXN0Jyk7CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDwvaWNvblN0ZXBCdXR0b25XaXp6YXJkPgorICAgICAgICAKKyAgICAgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSI4MDQiIHg9IjEwIiB5PSIkb25jZXsgcGFyZW50LmhlaWdodC03MCB9IiBtdWx0aWxpbmU9InRydWUiCisgICAgICAgIAkJICAgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGgtMjEwIH0iIC8+CisgICAgICAgIAorICAgICAgICA8c2ltcGxlTGFiZWxCdXR0b24gbGFiZWxpZD0iNzg4IiB3aWR0aD0iMTk2IiB4PSIkb25jZXsgcGFyZW50LndpZHRoLTIwMCB9IiAKKyAgICAgICAgICAgICAgIHk9IiRvbmNleyBwYXJlbnQuaGVpZ2h0LTcwIH0iIGhlaWdodD0iMjQiIAorICAgICAgICAgICAgICAgb25jbGljaz0idGhpcy5wYXJlbnQuc3RvcmVTZXR0aW5ncygpOyI+CisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgICAgICBxdWlja2xpbmtBY3QoJ2NvbmZlcmVuY2VNb2R1bGVSb29tTGlzdCcpOworICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAgICAgPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSI3NjkiIC8+CisgICAgICAgIDwvc2ltcGxlTGFiZWxCdXR0b24+CisgICAgICAgIAorICAgICAgICA8c2ltcGxlTGFiZWxCdXR0b24gbGFiZWxpZD0iMjkxIiB3aWR0aD0iMTk2IiB4PSIkb25jZXsgcGFyZW50LndpZHRoLTIwMCB9IiAKKyAgICAgICAgICAgICAgIHk9IiRvbmNleyBwYXJlbnQuaGVpZ2h0LTQ0IH0iIGhlaWdodD0iMjQiIAorICAgICAgICAgICAgICAgb25jbGljaz0idGhpcy5wYXJlbnQuc3RvcmVTZXR0aW5ncygpOyI+CisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgICAgICBxdWlja2xpbmtBY3QoJ2Rhc2hib2FyZE1vZHVsZUNhbGVuZGFyJyk7CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgICAgICA8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IjgwNSIgLz4KKyAgICAgICAgPC9zaW1wbGVMYWJlbEJ1dHRvbj4KKyAgICAgICAgICAgCisJPC92aWV3PgorPC9jbGFzcz4gCisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvZGFzaGJvYXJkL2xpYnJhcnkubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9kYXNoYm9hcmQvbGlicmFyeS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTI2NmJmZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvZGFzaGJvYXJkL2xpYnJhcnkubHp4CkBAIC0wLDAgKzEsMjkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisJCisJPGluY2x1ZGUgaHJlZj0idGFiQnV0dG9uTWFpbi5sengiIC8+CisJPGluY2x1ZGUgaHJlZj0iaW5mb3NQYW5lbC5sengiIC8+CisJPGluY2x1ZGUgaHJlZj0icHJvZmlsZXNQYW5lbC5sengiIC8+CisJPGluY2x1ZGUgaHJlZj0icnNzUGFuZWwubHp4IiAvPgorCTxpbmNsdWRlIGhyZWY9Im1haW5EYXNoYm9hcmQubHp4IiAvPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2Rhc2hib2FyZC9tYWluRGFzaGJvYXJkLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvZGFzaGJvYXJkL21haW5EYXNoYm9hcmQubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxYmFmNTcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2Rhc2hib2FyZC9tYWluRGFzaGJvYXJkLmx6eApAQCAtMCwwICsxLDI4NyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKwkKKzxjbGFzcyBuYW1lPSJsYWJlbGVkVGFicGFuZSIgZXh0ZW5kcz0idGFicGFuZSI+CisJPGF0dHJpYnV0ZSBuYW1lPSJsYWJlbGlkIiB0eXBlPSJudW1iZXIiIHNldHRlcj0ic2V0TGFiZWxJZChsYWJlbGlkKSIgLz4KKyAgICA8bWV0aG9kIG5hbWU9InNldExhYmVsSWQiIGFyZ3M9Il9sYWJlbGlkIiA+CisgICAgICAgIHRoaXMubGFiZWxpZCA9IF9sYWJlbGlkOworICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgndGV4dCcsY2FudmFzLmdldExhYmVsTmFtZSh0aGlzLmxhYmVsaWQpKTsKKyAgICA8L21ldGhvZD4KKzwvY2xhc3M+CisKKzwhLS0tICBtb2R1bGVzOmRhc2hib2FyZCAtLT4KKzxjbGFzcyBuYW1lPSJtYWluRGFzaGJvYXJkIiBleHRlbmRzPSJiYXNlQ29udGVudFZpZXciPgkKKwk8YXR0cmlidXRlIG5hbWU9InBhcmFtcyIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorCQorICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgIC8vdGhpcy5nZXRSc3NGZWVkcy5kb0NhbGwoKTsKKyAgICAgICAgcGFyc2VDb25maWd1cmF0aW9uKGNhbnZhcy50aGlzaGliLmRhc2hib2FyZENvbmZpZyk7CisgICAgICAgIF9tYWluU2Nyb2xsQmFyLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgIDwvaGFuZGxlcj4KKyAgICAKKwk8bWV0aG9kIG5hbWU9InBhcnNlQ29uZmlndXJhdGlvbiIgYXJncz0iY2ZNYW5hZ2VtZW50TGlzdCI+CisJPCFbQ0RBVEFbCisJCXZhciB0Q291bnRWaXNpYmxlVGFicyA9IDA7CisJCXZhciB0Rm91bmRWaXNpYmxlRGVmYXVsdFRhYiA9IGZhbHNlOworCQlmb3IgKHZhciBpID0gMDsgaSA8IGNmTWFuYWdlbWVudExpc3QubGVuZ3RoOyArK2kpIHsKKwkJCXZhciB0Q29uZmlndXJhdGlvbk9iaiA9IGNmTWFuYWdlbWVudExpc3RbaV07CisJCQkKKwkJCXN3aXRjaCAodENvbmZpZ3VyYXRpb25PYmouY29uZl9rZXkpIHsKKwkJCQljYXNlICJkYXNoYm9hcmQuc2hvdy5teXJvb21zIjoKKwkJCQkJaWYgKE51bWJlcih0Q29uZmlndXJhdGlvbk9iai5jb25mX3ZhbHVlKSA9PSAxKSB7CisJCQkJCQl0Q291bnRWaXNpYmxlVGFicysrOworCQkJCQl9IGVsc2UgeworCQkJCQkJdGhpcy5fYm90dG9tQXJlYS5fdGFiYmFyLm15Um9vbXNUYWJCdXR0b24uc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisJCQkJCX0KKwkJCQkJYnJlYWs7CisJCQkJY2FzZSAiZGFzaGJvYXJkLnNob3cucnNzZmVlZCI6CisJCQkJCWlmIChOdW1iZXIodENvbmZpZ3VyYXRpb25PYmouY29uZl92YWx1ZSkgPT0gMSkgeworCQkJCQkJdENvdW50VmlzaWJsZVRhYnMrKzsKKwkJCQkJCXRoaXMuZ2V0UnNzRmVlZHMuZG9DYWxsKCk7CisJCQkJCX0gZWxzZSB7CisJCQkJCQl0aGlzLl9ib3R0b21BcmVhLl90YWJiYXIucnNzRmVlZDFUYWJCdXR0b24uc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisJCQkJCX0KKwkJCQkJYnJlYWs7CisJCQkJY2FzZSAiZGFzaGJvYXJkLnNob3cuY2hhdCI6CisJCQkJCWlmIChOdW1iZXIodENvbmZpZ3VyYXRpb25PYmouY29uZl92YWx1ZSkgPT0gMSkgeworCQkJCQkJdENvdW50VmlzaWJsZVRhYnMrKzsKKwkJCQkJfSBlbHNlIHsKKwkJCQkJCXRoaXMuX2JvdHRvbUFyZWEuX3RhYmJhci5jaGF0VGFiQnV0dG9uLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworCQkJCQl9CisJCQkJCWJyZWFrOworCQkJCWNhc2UgImRlZmF1bHQuZGFzaGJvYXJkLnRhYiI6CisJCQkJCWlmICh0aGlzLnBhcmFtcyA9ICIiKSB7CisJCQkJCQl2YXIgdEluZGV4TnVtYmVyID0gTnVtYmVyKHRDb25maWd1cmF0aW9uT2JqLmNvbmZfdmFsdWUpOworCQkJCQkJdmFyIHRPYmogPSB0aGlzLl9ib3R0b21BcmVhLl90YWJiYXIuc3Vidmlld3NbdEluZGV4TnVtYmVyXTsKKwkJCQkJCQorCQkJCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInRJbmRleE51bWJlcnx0T2JqIix0SW5kZXhOdW1iZXIsdE9iaik7CisJCQkJCQlpZiAodE9iaiAmJiB0T2JqLnZpc2libGUpIHsKKwkJCQkJCQl0Rm91bmRWaXNpYmxlRGVmYXVsdFRhYiA9IHRydWU7CisJCQkJCQkJdE9iai5vbmNsaWNrLnNlbmRFdmVudChudWxsKTsKKwkJCQkJCX0KKwkJCQkJfSBlbHNlIHsKKwkJCQkJCXN3aXRjaCAodGhpcy5wYXJhbXMpIHsKKwkJCQkJCQljYXNlICJteVJvb21zVGFiQnV0dG9uIjoKKwkJCQkJCQkJX2JvdHRvbUFyZWEuZG9TZWxlY3Rpb24oX2JvdHRvbUFyZWEuX3RhYmJhci5teVJvb21zVGFiQnV0dG9uKTsKKwkJCQkJCQkJYnJlYWs7CisJCQkJCQkJY2FzZSAiY2hhdFRhYkJ1dHRvbiI6CisJCQkJCQkJCV9ib3R0b21BcmVhLmRvU2VsZWN0aW9uKF9ib3R0b21BcmVhLl90YWJiYXIuY2hhdFRhYkJ1dHRvbik7CisJCQkJCQkJCWJyZWFrOworCQkJCQkJfQorCQkJCQl9CisJCQkJCWJyZWFrOworCQkJCWNhc2UgImRlZmF1bHQubGFuZGluZy56b25lIjoKKwkJCQkJYnJlYWs7CisJCQkJZGVmYXVsdDoKKwkJCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIlVua293biBUYWIgS2V5ICIsdENvbmZpZ3VyYXRpb25PYmouY29uZl9rZXkpOworCQkJCQlicmVhazsKKwkJCX0KKwkJfQorCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidEZvdW5kVmlzaWJsZURlZmF1bHRUYWJ8dENvdW50VmlzaWJsZVRhYnMiLHRGb3VuZFZpc2libGVEZWZhdWx0VGFiLHRDb3VudFZpc2libGVUYWJzKTsKKwkJCisJCWlmICghdEZvdW5kVmlzaWJsZURlZmF1bHRUYWIgJiYgdENvdW50VmlzaWJsZVRhYnM+MCkgeworCQkJZm9yICh2YXIgaT0wO2k8dGhpcy5fYm90dG9tQXJlYS5fdGFiYmFyLnN1YnZpZXdzLmxlbmd0aDtpKyspIHsKKwkJCQl2YXIgdE9iaiA9IHRoaXMuX2JvdHRvbUFyZWEuX3RhYmJhci5zdWJ2aWV3c1tpXTsKKwkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidE9iaiAmJiB0T2JqLnZpc2libGUiLHRPYmosdE9iai52aXNpYmxlKTsKKwkJCQlpZiAodE9iaiAmJiB0T2JqLnZpc2libGUpIHsKKwkJCQkJdE9iai5vbmNsaWNrLnNlbmRFdmVudChudWxsKTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCQkJfQorCQl9CisJCXRoaXMuX2JvdHRvbUFyZWEuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworCV1dPgorCTwvbWV0aG9kPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9udGFiY29udGVudGxlYXZlIj4KKyAgICAJY2FudmFzLl9vdmVyYWxsY2hhdGNvbnRlbnQgPSBudWxsOworICAgIAlfbWFpblNjcm9sbEJhci5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImdldFJzc0ZlZWRzIiBmdW5jbmFtZT0ieG1sY3JtLmdldFJzc0ZlZWRzIiAKKwkJcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gCisgICAgCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAJPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImdldFJzc0ZlZWRzOiAiLHZhbHVlKTsKKyAgICAgICAgICAgICAgICBwYXJlbnQuX2JvdHRvbUFyZWEuX2JveGVzLmZlZWQxLm91dHB1dFJTUyh2YWx1ZS5mZWVkMik7CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPiAgIAorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4gICAgICAKKyAgICAKKwk8cHJvZmlsZXNQYW5lbCB4PSIxMCIgLz4KKwkKKwk8dmlldyBoZWlnaHQ9IjI0MCIgeD0iNTE2IiB3aWR0aD0iMSIgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdzZWNvbmRCb3JkZXJDb2xvcicpIH0iIC8+CisJCisJPGluZm9zUGFuZWwgeD0iNTIwIiAvPgorCisgICAgPHZpZXcgbmFtZT0iX2JvdHRvbUFyZWEiIHk9IjI0MCIgeD0iMCIKKyAgICAgICAgICAgIHdpZHRoPSIkeyBjYW52YXMud2lkdGggfSIgaGVpZ2h0PSIkeyBjYW52YXMuaGVpZ2h0LTI0MC04NCB9IiB2aXNpYmlsaXR5PSJoaWRkZW4iPgorICAgIAkKKyAgICAJPGF0dHJpYnV0ZSBuYW1lPSJyZWZPYmpJdGVtIiB2YWx1ZT0ibnVsbCIgLz4KKyAgICAJCisgICAgCTxtZXRob2QgbmFtZT0iZG9TZWxlY3Rpb24iIGFyZ3M9Im9ialJlZiI+CisgICAgICAgICAgICBpZiAodGhpcy5yZWZPYmpJdGVtICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICB0aGlzLnJlZk9iakl0ZW0uZGVzZWxlY3QoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRoaXMucmVmT2JqSXRlbSA9IG9ialJlZjsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHRoaXMucmVmT2JqSXRlbS5uYW1lID09ICJteVJvb21zVGFiQnV0dG9uIil7CisgICAgICAgICAgICAgICAgdGhpcy5fYm94ZXMubXlNZWV0aW5ncy5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgICAgICAgICAgdGhpcy5fYm94ZXMuX292ZXJhbGxjaGF0LnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgICAgICAgICAgICAgIHRoaXMuX2JveGVzLmZlZWQxLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnJlZk9iakl0ZW0ubmFtZSA9PSAiY2hhdFRhYkJ1dHRvbiIpeworICAgICAgICAgICAgICAgIHRoaXMuX2JveGVzLm15TWVldGluZ3Muc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgICAgICAgICAgICAgdGhpcy5fYm94ZXMuX292ZXJhbGxjaGF0LnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9ib3hlcy5mZWVkMS5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5yZWZPYmpJdGVtLm5hbWUgPT0gInJzc0ZlZWQxVGFiQnV0dG9uIil7CisgICAgICAgICAgICAgICAgdGhpcy5fYm94ZXMubXlNZWV0aW5ncy5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9ib3hlcy5fb3ZlcmFsbGNoYXQuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgICAgICAgICAgICAgdGhpcy5fYm94ZXMuZmVlZDEuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLnJlZk9iakl0ZW0uc2VsZWN0KCk7CisgICAgICAgIDwvbWV0aG9kPgorICAgICAgICAKKyAgICAgICAgPHZpZXcgbmFtZT0iYm9yZGVyQmFyVG9wIiB5PSIwIgorICAgIAkJCXdpZHRoPSIkeyBwYXJlbnQud2lkdGggfSIgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdtYWluQm9yZGVyQ29sb3InKSB9IiBoZWlnaHQ9IjEiIC8+CisgICAgCTx2aWV3IG5hbWU9Il90YWJiYXJCZyIgd2lkdGg9IiR7IHBhcmVudC53aWR0aCB9IiBoZWlnaHQ9IjMyIiB5PSIxIiBiZ2NvbG9yPSIweEZBRkFGQSIgLz4KKwkJPHZpZXcgbmFtZT0iYm9yZGVyQmFyQm90dG9tIiB5PSIzNCIKKyAgICAJCQl3aWR0aD0iJHsgcGFyZW50LndpZHRoIH0iIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignbWFpbkJvcmRlckNvbG9yJykgfSIgaGVpZ2h0PSIxIiAvPiAgCisgICAgICAgIAorICAgIAk8dmlldyBuYW1lPSJfdGFiYmFyIiB4PSIwIiB5PSIxIiB3aWR0aD0iJHsgcGFyZW50LndpZHRoIH0iIGhlaWdodD0iMzIiCisgICAgCQkgIGxheW91dD0iYXhpczp4O3NwYWNpbmc6MjtpbnNldDoyIiA+CisgICAgCQkgIAorICAgCQkgCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisJICAgIAkJZm9yICh2YXIgZWcgaW4gdGhpcy5zdWJ2aWV3cykgeworCSAgICAgICAgICAgIAl0aGlzLnN1YnZpZXdzW2VnXS5kZXNlbGVjdCgpOworCSAgICAgICAgICAgIH0KKwkgICAgCTwvaGFuZGxlcj4KKyAgICAJCSAgCisgICAgCQk8dGFiQnV0dG9uTWFpbiBuYW1lPSJteVJvb21zVGFiQnV0dG9uIiBoZWlnaHQ9IiRvbmNleyBwYXJlbnQuaGVpZ2h0IH0iIAorICAgICAgICAgICAgICAgICAgICBjdXJyZW50SWNvblJzYz0iaWNvbl9idG5fcm9vbXNfY29uZmVyZW5jZSIgbGFiZWxpZD0iMTMwNSIgd2lkdGg9IiR7IChwYXJlbnQud2lkdGgtOCkvMyB9IiAvPgorICAgIAkJCisgICAgICAgICAgICA8dGFiQnV0dG9uTWFpbiBuYW1lPSJjaGF0VGFiQnV0dG9uIiB3aWR0aD0iJHsgKHBhcmVudC53aWR0aC04KS8zIH0iIGhlaWdodD0iJG9uY2V7IHBhcmVudC5oZWlnaHQgfSIKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudEljb25Sc2M9Imljb25fYnRuX2NoYXRfZGFzaGJvYXJkIiBsYWJlbGlkPSI0NDMiIC8+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDx0YWJCdXR0b25NYWluIG5hbWU9InJzc0ZlZWQxVGFiQnV0dG9uIiB3aWR0aD0iJHsgKHBhcmVudC53aWR0aC04KS8zIH0iIGhlaWdodD0iJG9uY2V7IHBhcmVudC5oZWlnaHQgfSIKKyAgICAgICAgICAgICAgICAgICAgY3VycmVudEljb25Sc2M9Imljb25fYnRuX3Jzc19jb25mZXJlbmNlIiBsYWJlbGlkPSIyNzciIC8+CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICA8L3ZpZXc+ICAgIAorICAgICAgICAKKyAgICAgICAgICAKKyAgICAJCQorICAgIAk8dmlldyBuYW1lPSJfYm94ZXMiIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodC00MCB9IiB3aWR0aD0iJHsgcGFyZW50LndpZHRoIH0iIHk9IjQwIj4JCisgICAgCQorICAgICAgICAgICAgPHZpZXcgbmFtZT0ibXlNZWV0aW5ncyIgaGVpZ2h0PSIkeyBwYXJlbnQuaGVpZ2h0IH0iIHdpZHRoPSIkeyBwYXJlbnQud2lkdGggfSIgdmlzaWJpbGl0eT0iaGlkZGVuIiA+CisgICAgICAgIAorICAgICAgICAgICAgICAgIDwhLS0gRGVjbGFyZWQgY29uZmVyZW5jZSByb29tcyBsaXN0IC0tPgorICAgICAgICAgICAgICAgIDx2aWV3IHk9IjIiIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodC00IH0iPgorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IGx6LnJvb21MaXN0SXRlbSh0aGlzLmlubi5pbm4uaW5uLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb21UeXBlOjEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNwdWJsaWM6dHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb29tbmFtZSA6IGNhbnZhcy5nZXRMYWJlbE5hbWUoMTMwNikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgbHoucm9vbUxpc3RJdGVtKHRoaXMuaW5uLmlubi5pbm4sIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vbVR5cGU6MywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc3B1YmxpYzp0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb21uYW1lIDogY2FudmFzLmdldExhYmVsTmFtZSgxMzA3KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0QXBwb2ludGVkTWVldGluZ1Jvb21zV2l0aG91dFR5cGUuZG9DYWxsKCk7CisgICAgICAgICAgICAgICAgICAgIDwvaGFuZGxlcj4gICAgCisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImdldEFwcG9pbnRlZE1lZXRpbmdSb29tc1dpdGhvdXRUeXBlIiBmdW5jbmFtZT0iY29uZmVyZW5jZXNlcnZpY2UuZ2V0QXBwb2ludGVkTWVldGluZ1Jvb21zV2l0aG91dFR5cGUiIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiA+ICAgCisgICAgICAgICAgICAgICAgICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4gIAorICAgICAgICAgICAgICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+ICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZ2V0Um9vbXNQdWJsaWM6ICIsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHZhbHVlICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGVnID0gMDsgZWcgPCB2YWx1ZS5sZW5ndGg7IGVnKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdGltZSA9IHZhbHVlW2VnXS5zdGFydHRpbWUuZ2V0SG91cnMoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAnOicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgdmFsdWVbZWddLnN0YXJ0dGltZS5nZXRNaW51dGVzKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgJyAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHZhbHVlW2VnXS5zdGFydHRpbWUuZ2V0RGF0ZSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICcuJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAodmFsdWVbZWddLnN0YXJ0dGltZS5nZXRNb250aCgpICsgMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgJy4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIHZhbHVlW2VnXS5zdGFydHRpbWUuZ2V0RnVsbFllYXIoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcgbHoucm9vbUxpc3RJdGVtKHBhcmVudC5pbm4uaW5uLmlubiwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb29tVHlwZTp2YWx1ZVtlZ10ucm9vbXR5cGUucm9vbXR5cGVzX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnR1c2VycyA6IHZhbHVlW2VnXS5jdXJyZW50dXNlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqIDogdmFsdWVbZWddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzcHVibGljIDogdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb29taWQgOiB2YWx1ZVtlZ10ucm9vbXNfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnR0aW1lIDogdmFsdWVbZWddLnN0YXJ0dGltZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb29tbmFtZSA6IHZhbHVlW2VnXS5uYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdXT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgPC9oYW5kbGVyPiAgCisgICAgICAgICAgICAgICAgICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4gCisgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgPCEtLSBpbm4uaW5uLmlubiB2aWV3IHdvdWxkIGJlIHNldHRlZCBvYmplY3QgYnkgYWJvdmUgb25kYXRhIGhhbmRlci4gLS0+CisgICAgICAgICAgICAgICAgICAgIDx2aWV3IG5hbWU9ImlubiIgeD0iMiIgd2lkdGg9IjQ4MCIgaGVpZ2h0PSIkeyBwYXJlbnQuaGVpZ2h0IH0iIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignc2Vjb25kQm9yZGVyQ29sb3InKSB9IiA+CisgICAgICAgICAgICAgICAgICAgICAgICA8dmlldyBuYW1lPSJpbm4iIHg9IjEiIHk9IjEiIHdpZHRoPSIkeyBwYXJlbnQud2lkdGgtMSB9IiBoZWlnaHQ9IiR7IHBhcmVudC5oZWlnaHQtMSB9IiBiZ2NvbG9yPSIweEZGRkZGRiIgY2xpcD0idHJ1ZSIgPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx2aWV3IG5hbWU9ImlubiIgbGF5b3V0PSJheGlzOnk7c3BhY2luZzoxIi8+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9tX3ZzY3JvbGxiYXIgLz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvdmlldz4KKyAgICAgICAgICAgICAgICAgICAgPC92aWV3PgorICAgICAgICAgICAgICAgIDwvdmlldz4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICA8aW1hZ2UgeD0iNTEwIiBzcmM9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVJbWFnZSgnaW5mb190ZXh0X2ljb25fcnNjJykgfSIgeT0iNiIgLz4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9Ijc4MiIgeD0iNTMwIiB3aWR0aD0iJHsgcGFyZW50LndpZHRoLTU0MCB9IiB5PSI0IiBtdWx0aWxpbmU9InRydWUiIC8+CisgICAgICAgIAorICAgICAgICAgICAgICAgIDwhLS0gZGVzY3JpcHRpb24gcGFuZWwgZm9yIGVhY2hlIHJvb20uIHJpZ2h0IGhhbmQgb24gdGhpcyBjbGFzcyB2aWV3LgorICAgICAgICAgICAgICAgICAgICAgICAgcm9vbUxpc3REZXRhaWxzIGNsYXNzIGFyZSBkZWNsYXJlZCBpbiBtb2R1bGVzL2NvbmZlcmVuY2UvY29uZmVyZW5jZS9yb29tTGlzdERldGFpbHMubHp4LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1hciAyNCAyMDA4IGNvbW1lbnRlZCBieSBvbm9rZWlqaUBnbWFsLmNvbQorICAgICAgICAgICAgICAgICAgICAgLS0+CisgICAgICAgICAgICAgICAgPHJvb21MaXN0RGV0YWlscyB4PSI1MTAiIHk9IjUwIiBuYW1lPSJfcm9vbWxpc3RkZXRhaWxzIiAKKyAgICAgICAgICAgICAgICAJCQkJIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodC01NCB9IiAvPgorICAgICAgICAgICAgICAgIAkJCQkgCisgICAgICAgICAgICA8L3ZpZXc+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxvdmVyQWxsQ2hhdCBuYW1lPSJfb3ZlcmFsbGNoYXQiIHZpc2liaWxpdHk9ImhpZGRlbiIgLz4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPHJzc0JveCBuYW1lPSJmZWVkMSIgdmlzaWJpbGl0eT0iaGlkZGVuIiB3aWR0aD0iJHsgcGFyZW50LndpZHRoLTQgfSIgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIkeyBwYXJlbnQuaGVpZ2h0IH0iIHk9IjAiIHg9IjIiIC8+CisKKyAgICAJPC92aWV3PiAgICAgICAgCisgICAgCQorICAgIDwvdmlldz4KKwkJCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2Rhc2hib2FyZC9wcm9maWxlc1BhbmVsLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvZGFzaGJvYXJkL3Byb2ZpbGVzUGFuZWwubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxMTlhMDYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2Rhc2hib2FyZC9wcm9maWxlc1BhbmVsLmx6eApAQCAtMCwwICsxLDIxMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8IS0tLSBMb2dnZWQtaW4gVXNlciBQcm9maWxlIFBhbmVsIG9uIHRoZSBkYXNoYm9hcmQgLS0+Cis8Y2xhc3MgbmFtZT0icHJvZmlsZXNQYW5lbCIgZXh0ZW5kcz0idmlldyIgd2lkdGg9IjUwMCIgaGVpZ2h0PSIyMjQiIHk9IjAiID4KKwkKKwk8dmlldyB5PSIxMCIgeD0iMCIgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGgtMiB9IiAKKwkJICBoZWlnaHQ9IiRvbmNleyBwYXJlbnQuaGVpZ2h0LTEwIH0iIGNsaXA9InRydWUiPgorCQorCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgdGhpcy5ob21lcGFnZS5zZXRBdHRyaWJ1dGUoJ3RleHQnLCB0aGlzLmZvcm1hdExpbmtUZXh0KGNhbnZhcy5nZXRMYWJlbE5hbWUoMjg2KSkpOworICAgICAgICAgICAgdGhpcy5ob21lcGFnZS5zZXRBdHRyaWJ1dGUoJ2xpbmsnLGNhbnZhcy5nZXRMYWJlbE5hbWUoMjgyKSk7CisgICAgICAgICAgICB0aGlzLm1haWxpbmcuc2V0QXR0cmlidXRlKCd0ZXh0Jyx0aGlzLmZvcm1hdExpbmtUZXh0KGNhbnZhcy5nZXRMYWJlbE5hbWUoMjg3KSkpOworICAgICAgICAgICAgdGhpcy5tYWlsaW5nLnNldEF0dHJpYnV0ZSgnbGluaycsY2FudmFzLmdldExhYmVsTmFtZSgyODMpKTsKKyAgICAgICAgICAgIHRoaXMudGVzdGluZy5zZXRBdHRyaWJ1dGUoJ3RleHQnLHRoaXMuZm9ybWF0TGlua1RleHQoY2FudmFzLmdldExhYmVsTmFtZSgxNTI3KSkpOworICAgICAgICAgICAgdGhpcy50ZXN0aW5nLnNldEF0dHJpYnV0ZSgnbGluaycsY2FudmFzLmdldFRlc3RpbmdVcmwoKSk7CisgICAgICAgIF1dPgorICAgIDwvaGFuZGxlcj4KKyAgICAgICAgCQorICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAJdGhpcy5nZXROdW1iZXJVbnJlYWRNZXNzYWdlcy5kb0NhbGwoKTsKKwkJCXRoaXMuZ2V0VXNlclNlbGYuZG9DYWxsKCk7CisgICAgICAgIF1dPgorICAgIDwvaGFuZGxlcj4KKworICAgIDxtZXRob2QgbmFtZT0iZm9ybWF0TGlua1RleHQiIGFyZ3M9InRleHQiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIHJldHVybiAiPHU+PEZPTlQgY29sb3I9JyMwMDAwQ0MnPiIrdGV4dCsiPC9GT05UPjwvdT4iOworICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKworICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImdldE51bWJlclVucmVhZE1lc3NhZ2VzIiBmdW5jbmFtZT0idXNlcnNlcnZpY2UuZ2V0TnVtYmVyVW5yZWFkTWVzc2FnZXMiIAorICAJCXJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiA+IAorICAJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgCTxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgIAkJPCFbQ0RBVEFbCisJCQkJaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZGFzaGJvYXJkL2dldE51bWJlclVucmVhZE1lc3NhZ2VzOiAiLHZhbHVlKTsKKwkJCQlwYXJlbnQuX25ld21lc3NhZ2VzLl90ZXh0LnNldEF0dHJpYnV0ZSgidGV4dCIsIjx1PiIrdmFsdWUrIjwvdT4iKTsKKwkgICAgICAgIF1dPgorICAgIAk8L2hhbmRsZXI+CisgIAk8L25ldFJlbW90ZUNhbGxIaWI+CSAgICAKKyAgIAorICAgCisgIAk8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJnZXRVc2VyU2VsZiIgZnVuY25hbWU9InVzZXJzZXJ2aWNlLmdldFVzZXJTZWxmIiAKKyAgCQlyZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAKKyAgCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBjYW52YXMuc2Vzc2lvbklkOyA8L21ldGhvZD48L25ldHBhcmFtPgorICAgIAk8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAJCTwhW0NEQVRBWworCQkJCWlmKCRkZWJ1ZykgRGVidWcud3JpdGUoImRhc2hib2FyZC9nZXRVc2VyU2VsZjogIix2YWx1ZSk7CisJCQkJcGFyZW50Ll91c2VybmFtZS5zZXRBdHRyaWJ1dGUoJ3RleHQnLGNhbnZhcy5nZXRMYWJlbE5hbWUoMzc2KSsiICIrdmFsdWUuZmlyc3RuYW1lKycgJyt2YWx1ZS5sYXN0bmFtZSk7CisJCQkJCisJCQkJaWYgKHZhbHVlLmFkcmVzc2VzICE9IG51bGwgJiYgdmFsdWUuYWRyZXNzZXMudG93biAhPSBudWxsKSB7CisJCQkJCXBhcmVudC5fbGFuZ0FuZENvdW50cnkuX3Rvd24uc2V0QXR0cmlidXRlKCJ0ZXh0IiwiPHU+IiArIHZhbHVlLmFkcmVzc2VzLnRvd24gKyAiPC91PiIpOworCQkJCX0KKwkJCQlpZiAodmFsdWUub21UaW1lWm9uZSAhPSBudWxsKSB7CisJCQkJCXBhcmVudC5fbGFuZ0FuZENvdW50cnkuX3RpbWVab25lLnNldEF0dHJpYnV0ZSgidGV4dCIsIjx1PiIgKyB2YWx1ZS5vbVRpbWVab25lLmpuYW1lICsgIjwvdT4iKTsKKwkJCQkJY2FudmFzLnRpbWVab25lSWQgPSB2YWx1ZS5vbVRpbWVab25lLm9tdGltZXpvbmVJZDsKKwkJCQl9CisJCSAgICAgICAgcGFyZW50Ll91c2VycGljLnNldEF0dHJpYnV0ZSgnc3JjJywgY2FudmFzLmdldFBpY3R1cmVVcmwodmFsdWUucGljdHVyZXVyaSwgJyZtb2R1bGVOYW1lPXVzZXJwcm9maWxlJykpOworCSAgICAgICAgXV0+CisgICAgCTwvaGFuZGxlcj4KKyAgCTwvbmV0UmVtb3RlQ2FsbEhpYj4JICAgIAorICAgIAorICAgIDx2aWV3IHk9IjIiIHg9IjQiIG5hbWU9Il9pbWFnZVByb2ZpbGVCRzEiIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4IiAKKyAgICAJCQkJYmdjb2xvcj0iMHhGRkZGRkYiIG9wYWNpdHk9IjAuNSIgPgorICAgIDwvdmlldz4KKyAgICAKKyAgIAk8aW1hZ2UgbmFtZT0iX3VzZXJwaWMiIHk9IjIiIHg9IjQiID4KKyAgIAorICAgIAk8aGFuZGxlciBuYW1lPSJvbmxvYWQiIGFyZ3M9ImQiPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgaWYgKHRoaXMuaGVpZ2h0ID4gMTE2KSB7CisgICAgICAgICAgICAgICAgICAgIC8vSWYgYmlnZ2VyIHRoZW4gY29udGFpbnRlciB0aGVuIHNjYWxlIGl0CisgICAgICAgICAgICAgICAgICAgIHZhciB3aWR0aCA9IHRoaXMud2lkdGgvKHRoaXMuaGVpZ2h0LzExNik7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdoZWlnaHQnLDExNik7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCd3aWR0aCcsd2lkdGgpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAodGhpcy53aWR0aCA+IDExNikgeworICAgICAgICAgICAgICAgIAkvL0lmIGJpZ2dlciB0aGVuIGNvbnRhaW50ZXIgdGhlbiBzY2FsZSBpdAorICAgICAgICAgICAgICAgICAgICB2YXIgaGVpZ2h0ID0gdGhpcy5oZWlnaHQvKHRoaXMud2lkdGgvMTE2KTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsaGVpZ2h0KTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywxMTYpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZigkZGVidWcpIERlYnVnLndyaXRlKCJvbmxvYWQgIix0aGlzLmhlaWdodCx0aGlzLndpZHRoLGQuaGVpZ2h0LGQud2lkdGgpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vbWFrZXMgc3VyZSBib3R0b20gYXJlYSBpcyB1cGRhdGVkCisgICAgICAgICAgICAgICAgLy90aGlzLl9jaGFuZ2VTaXplLnNldEF0dHJpYnV0ZSgneScsdGhpcy5oZWlnaHQtMjApOworICAgICAgICAgICAgICAgIC8vdGhpcy5fY2hhbmdlU2l6ZS5zZXRBdHRyaWJ1dGUoJ3dpZHRoJyx0aGlzLndpZHRoKTsKKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+CisgICAgCQorICAgIDwvaW1hZ2U+CisgICAgCisgICAgPHZpZXcgeT0iMiIgeD0iNCIgbmFtZT0iX2ltYWdlUHJvZmlsZUJHMiIgd2lkdGg9IjEyOCIgaGVpZ2h0PSIxMjgiID4KKwkgICAgCisJICAgIDx2aWV3IG5hbWU9Il9jaGFuZ2VTaXplIiBoZWlnaHQ9IjQ4IiB3aWR0aD0iMTI4IiB5PSI4MCIgYmdjb2xvcj0iMHhGRkZGRkYiIG9wYWNpdHk9IjAuNiI+CisgICAJCQk8bGFiZWxUZXh0IGxhYmVsaWQ9IjM3OSIgYWxpZ249ImNlbnRlciIgLz4KKyAgICAJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAJCTwhW0NEQVRBWworCQkgICAgICAgIAluZXcgbHoudXBsb2FkV2luZG93RXhwbG9yZXIoY2FudmFzLm1haW5fY29udGVudC5fY29udGVudC5pbm5lcix7CisJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OjMwMCx1cGxvYWRtb2R1bGU6J3VzZXJwcm9maWxlJywKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzT25seVByb2ZpbGU6dHJ1ZSwKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybk9iajp0aGlzLAorCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmxldE5hbWU6J3VwbG9hZC51cGxvYWQnCisJCSAgICAgICAgICAgICAgICAgICAgICAgIH0pOworCSAgICAgICAgCV1dPgorCSAgICAgICAgPC9oYW5kbGVyPgorCSAgICAgICAgPG1ldGhvZCBuYW1lPSJzZW5kUmVmcmVzaCI+CisJICAgICAgICAJcGFyZW50LnBhcmVudC5nZXRVc2VyU2VsZi5kb0NhbGwoKTsKKwkgICAgICAgIDwvbWV0aG9kPgorCSAgICAJPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSIzNzkiIC8+CisgICAgCTwvdmlldz4KKyAgICAKKyAgICA8L3ZpZXc+CisKKyAgICAKKyAgICA8bGFiZWxUZXh0IG5hbWU9Il91c2VybmFtZSIgZm9udHN0eWxlPSJib2xkIiB5PSIyIiBsYWJlbGlkPSIzNzYiIHg9IjE0MCIgLz4KKyAgICAKKyAgICA8dmlldyBuYW1lPSJfbGFuZ0FuZENvdW50cnkiIGxheW91dD0iYXhpczp4O3NwYWNpbmc6MiIgeT0iMjAiIHg9IjE0MCI+CisgICAgCTxsYWJlbFRleHQgbmFtZT0iX3Rvd24iIGZnY29sb3I9IjB4MDAwMENDIj4KKwkgICAgCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorCSAgICAgICAgCWNhbnZhcy51c2VyU2V0dGluZ3NNb2R1bGVPcHQgPSAidXNlclByb2ZpbGUiOworCSAgICAgICAgICAgIHF1aWNrbGlua0FjdCgidXNlclNldHRpbmdzTW9kdWxlIik7CisJICAgICAgICA8L2hhbmRsZXI+CisJICAgIDwvbGFiZWxUZXh0PgorCSAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjExNDMiIC8+CisJICAgIDxsYWJlbFRleHQgbmFtZT0iX3RpbWVab25lIiBmZ2NvbG9yPSIweDAwMDBDQyI+CisJICAgIAk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKwkgICAgICAgIAljYW52YXMudXNlclNldHRpbmdzTW9kdWxlT3B0ID0gInVzZXJQcm9maWxlIjsKKwkgICAgICAgICAgICBxdWlja2xpbmtBY3QoInVzZXJTZXR0aW5nc01vZHVsZSIpOworCSAgICAgICAgPC9oYW5kbGVyPgorCSAgICA8L2xhYmVsVGV4dD4KKyAgICA8L3ZpZXc+CisgICAgCisgICAgPHZpZXcgbmFtZT0iX25ld21lc3NhZ2VzIiBsYXlvdXQ9ImF4aXM6eDtzcGFjaW5nOjIiIHk9IjQwIiB4PSIxNDAiPgorCSAgICA8bGFiZWxUZXh0IG5hbWU9Il9sYWJlbCIgbGFiZWxpZD0iMzc4IiAvPgorCSAgICA8bGFiZWxUZXh0IG5hbWU9Il90ZXh0IiBmZ2NvbG9yPSIweDAwMDBDQyI+CisJICAgIAk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKwkgICAgICAgIAljYW52YXMudXNlclNldHRpbmdzTW9kdWxlT3B0ID0gImNvbnRhY3RNZXNzYWdlcyI7CisJICAgICAgICAgICAgcXVpY2tsaW5rQWN0KCJ1c2VyU2V0dGluZ3NNb2R1bGUiKTsKKwkgICAgICAgIDwvaGFuZGxlcj4KKwkgICAgPC9sYWJlbFRleHQ+CisgICAgPC92aWV3PgorICAgIAorICAgIDxsYWJlbFRleHQgeT0iNjAiIGxhYmVsaWQ9IjM3NyIgeD0iMTQwIiB3aWR0aD0iMTgwIiBmZ2NvbG9yPSIweDAwMDBDQyI+CisgICAgCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgCQk8IVtDREFUQVsKKwkJCQl0aGlzLnNldEF0dHJpYnV0ZSgidGV4dCIsIjx1Pi4uLiIrY2FudmFzLmdldExhYmVsTmFtZSgzNzcpKyI8L3U+Iik7CisJICAgICAgICBdXT4KKyAgICAJPC9oYW5kbGVyPgorICAgIAk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgCWNhbnZhcy51c2VyU2V0dGluZ3NNb2R1bGVPcHQgPSAidXNlclByb2ZpbGUiOworICAgICAgICAgICAgcXVpY2tsaW5rQWN0KCJ1c2VyU2V0dGluZ3NNb2R1bGUiKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgIDwvbGFiZWxUZXh0PgorICAgICAgICAgICAgIAorICAgIDxsYWJlbFRleHQgbmFtZT0iaGVscCIgZm9udHN0eWxlPSJib2xkIiB4PSIyIgorICAgICAgICAgICAgICAgeT0iJG9uY2V7cGFyZW50Ll9pbWFnZVByb2ZpbGVCRzIueSArIHBhcmVudC5faW1hZ2VQcm9maWxlQkcyLmhlaWdodH0iCisgICAgICAgICAgICAgICBsYWJlbGlkPSIyODEiIHdpZHRoPSIyMDAiLz4KKyAgICAKKyAgICA8bGFiZWxUZXh0IG5hbWU9ImhvbWVwYWdlIiB4PSIyIiB5PSIkb25jZXtwYXJlbnQuaGVscC55ICsgcGFyZW50LmhlbHAuaGVpZ2h0ICsgMX0iCisgICAgICAgICAgICAgICB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCB9IiBtdWx0aWxpbmU9InRydWUiID4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJsaW5rIiB0eXBlPSJzdHJpbmciIHZhbHVlPSIiIC8+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgbHouQnJvd3Nlci5sb2FkVVJMKHRoaXMubGluaywiX2JsYW5rIik7CisgICAgICAgIDwvaGFuZGxlcj4gICAgICAgICAgICAKKyAgICA8L2xhYmVsVGV4dD4gICAgCisgICAgCisgICAgPGxhYmVsVGV4dCBuYW1lPSJtYWlsaW5nIiB4PSIyIiB5PSIke3BhcmVudC5ob21lcGFnZS55ICsgcGFyZW50LmhvbWVwYWdlLmhlaWdodCArIDF9IgorICAgICAgICAgICAgICAgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGggfSIgbXVsdGlsaW5lPSJ0cnVlIiA+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ibGluayIgdHlwZT0ic3RyaW5nIiB2YWx1ZT0iIiAvPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgIGx6LkJyb3dzZXIubG9hZFVSTCh0aGlzLmxpbmssIl9ibGFuayIpOworICAgICAgICA8L2hhbmRsZXI+ICAgICAgICAgICAgCisgICAgPC9sYWJlbFRleHQ+CisKKyAgICA8bGFiZWxUZXh0IG5hbWU9InRlc3RpbmciIHg9IjIiIHk9IiR7cGFyZW50Lm1haWxpbmcueSArIHBhcmVudC5tYWlsaW5nLmhlaWdodCArIDF9IgorICAgICAgICAgICAgICAgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGggfSIgbXVsdGlsaW5lPSJ0cnVlIiA+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ibGluayIgdHlwZT0ic3RyaW5nIiB2YWx1ZT0iIiAvPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgIGx6LkJyb3dzZXIubG9hZFVSTCh0aGlzLmxpbmssIl9ibGFuayIpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9sYWJlbFRleHQ+CisgICAgICAgICAgICAgIAorCTwvdmlldz4KKwkKKzwvY2xhc3M+IAorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2Rhc2hib2FyZC9yc3NQYW5lbC5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2Rhc2hib2FyZC9yc3NQYW5lbC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWFmMWUxZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvZGFzaGJvYXJkL3Jzc1BhbmVsLmx6eApAQCAtMCwwICsxLDg2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorICAgIAorPGNsYXNzIG5hbWU9InJzc0ZlZWRMaXN0SXRlbSIgZXh0ZW5kcz0idmlldyIgbGF5b3V0PSJheGlzOnkiIGJnY29sb3I9IjB4RkZGRkZGIiB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCB9IiA+CisgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZW92ZXIiPgorICAgICAgICBzZXRDdXJyZW50TW91c2VXaGVlbE9iamVjdCh0aGlzLnBhcmVudC5wYXJlbnQuX3Njcm9sbGJhcik7CisgICAgPC9oYW5kbGVyPgorICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdXQiPgorICAgICAgICBkaXNhYmxlQ3VycmVudE1vdXNlV2hlZWxPYmplY3QoKTsKKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJ0aXRlbCIgdHlwZT0ic3RyaW5nIiB2YWx1ZT0iIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0ic3VtbWFyeSIgdHlwZT0ic3RyaW5nIiB2YWx1ZT0iIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibGluayIgdHlwZT0ic3RyaW5nIiB2YWx1ZT0iIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0idXBkYXRlZCIgdHlwZT0ic3RyaW5nIiB2YWx1ZT0iIiAvPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgdGhpcy51cmx2LnNldEF0dHJpYnV0ZSgndGV4dCcsIjx1PjxGT05UIGNvbG9yPScjMDAwMENDJz4iK2NhbnZhcy5nZXRMYWJlbE5hbWUoMjg1KSsiPC9GT05UPjwvdT4iKTsKKyAgICAgICAgXV0+CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgIDxsYWJlbFRleHQgZm9udHNpemU9IjEwIiB0ZXh0PSIkb25jZXsgcGFyZW50LnRpdGVsIH0iIGZvbnRzdHlsZT0iYm9sZCIgbXVsdGlsaW5lPSJ0cnVlIiB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCB9IiAvPgorICAgIDxsYWJlbFRleHQgZm9udHNpemU9IjEwIiB0ZXh0PSIkb25jZXsgcGFyZW50LnVwZGF0ZWQgfSIgZm9udHN0eWxlPSJpdGFsaWMiIC8+CisgICAgPGxhYmVsVGV4dCBmb250c2l6ZT0iMTAiIG5hbWU9InN1bW1hcnl2IiB0ZXh0PSIkb25jZXsgcGFyZW50LnN1bW1hcnkgfSIgIG11bHRpbGluZT0idHJ1ZSIgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGggfSIgLz4KKyAgICA8bGFiZWxUZXh0IGZvbnRzaXplPSIxMCIgbmFtZT0idXJsdiI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgbHouQnJvd3Nlci5sb2FkVVJMKHBhcmVudC5saW5rLCJfYmxhbmsiKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgIDwvbGFiZWxUZXh0PgorICAgIDx2aWV3IGhlaWdodD0iMSIgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGggfSIgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdzZWNvbmRCb3JkZXJDb2xvcicpIH0iIC8+Cis8L2NsYXNzPiAgICAKKyAgICAKKzxjbGFzcyBuYW1lPSJyc3NCb3giIGV4dGVuZHM9InZpZXciIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoLTQgfSIgCisJICAgaGVpZ2h0PSIkb25jZXsgcGFyZW50LmhlaWdodC0yMiB9IiB5PSIyMiIgeD0iNCIKKyAgICAJYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdzZWNvbmRCb3JkZXJDb2xvcicpIH0iID4gCQorICAgIDxtZXRob2QgbmFtZT0ib3V0cHV0UlNTIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgIHRoaXMuaW5uZXIub3V0cHV0UlNTKHZhbHVlKTsKKyAgICA8L21ldGhvZD4KKyAgICA8dmlldyBuYW1lPSJpbm5lciIgY2xpcD0idHJ1ZSIgYmdjb2xvcj0iMHhGRkZGRkYiIAorICAgICAgICB4PSIxIiB5PSIxIiB3aWR0aD0iJHsgcGFyZW50LndpZHRoLTIgfSIgaGVpZ2h0PSIkeyBwYXJlbnQuaGVpZ2h0LTIgfSI+CisgICAgICAgIDxtZXRob2QgbmFtZT0ib3V0cHV0UlNTIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICB2YXIgdCA9IG5ldyBBcnJheSgpOworICAgICAgICAgICAgICAgIGZvcih2YXIgZWcgaW4gdmFsdWUpeworICAgICAgICAgICAgICAgICAgICAvL0RlYnVnLndyaXRlKCJlZzogIixlZywidmFsIix2YWx1ZVtlZ10pOworICAgICAgICAgICAgICAgICAgICB0LnB1c2godmFsdWVbZWddKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgZm9yICh2YXIgaT10Lmxlbmd0aC0xO2k+LTE7aS0tKXsKKyAgICAgICAgICAgICAgICAgICAgLy9EZWJ1Zy53cml0ZSgiaSAiLGksInZhbCIsdFtpXSx0W2ldLnRpdGxlLnRleHQsdFtpXS5saW5rLmF0dHJpYnV0ZXMuaHJlZix0W2ldLnN1bW1hcnkudGV4dCk7CisgICAgICAgICAgICAgICAgICAgIG5ldyBsei5yc3NGZWVkTGlzdEl0ZW0odGhpcy5jb250ZW50LHt1cGRhdGVkOnRbaV0udXBkYXRlZC50ZXh0LHRpdGVsOnRbaV0udGl0bGUudGV4dCxsaW5rOnRbaV0ubGluay5hdHRyaWJ1dGVzLmhyZWYsc3VtbWFyeTp0W2ldLnN1bW1hcnkudGV4dH0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgPHZpZXcgbmFtZT0iY29udGVudCIgbGF5b3V0PSJheGlzOnkiIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignc2Vjb25kQm9yZGVyQ29sb3InKSB9IiB3aWR0aD0iJHsgcGFyZW50LndpZHRoLTEwIH0iIC8+ICAgICAgICAKKyAgICAgICAgPG9tX3ZzY3JvbGxiYXIgbmFtZT0iX3Njcm9sbGJhciIgLz4KKyAgICA8L3ZpZXc+Cis8L2NsYXNzPiAgIAorCis8Y2xhc3MgbmFtZT0icnNzUGFuZWwiIGV4dGVuZHM9Imd1aVByZXNlbnRlciIKKyAgICB3aWR0aD0iNDAwIiBoZWlnaHQ9IjM4MCIgY2xvc2FibGU9InRydWUiIGxhYmVsaWQ9IjI3NyIKKyAgICByZXNpemVhYmxlPSJmYWxzZSI+CisgICAgPHJzc0JveCBuYW1lPSJmZWVkIiAvPgorPC9jbGFzcz4gCisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvZGFzaGJvYXJkL3RhYkJ1dHRvbk1haW4ubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9kYXNoYm9hcmQvdGFiQnV0dG9uTWFpbi5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDhhZTU3ZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvZGFzaGJvYXJkL3RhYkJ1dHRvbk1haW4ubHp4CkBAIC0wLDAgKzEsMTE3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPGxpYnJhcnk+DQorDQorPGNsYXNzIG5hbWU9InRhYkJ1dHRvbk1haW4iIGV4dGVuZHM9InZpZXciIGZvY3VzYWJsZT0idHJ1ZSINCisJICAgd2lkdGg9IiRvbmNleyAocGFyZW50LndpZHRoLTIpLzIgfSIgaGVpZ2h0PSIzNiIgeT0iMiI+DQorCQ0KKwk8YXR0cmlidXRlIG5hbWU9ImxhYmVsaWQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+DQorCQ0KKwk8YXR0cmlidXRlIG5hbWU9InNlbGVjdGVkIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+DQorCQ0KKwk8YXR0cmlidXRlIG5hbWU9InRleHRGb250U2l6ZSIgdmFsdWU9IjE0IiB0eXBlPSJudW1iZXIiIC8+DQorCQ0KKwk8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRJY29uUnNjIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciLz4NCisJDQorCTxhdHRyaWJ1dGUgbmFtZT0ic2hvd0ljb24iIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPg0KKwkNCisJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4NCisJCWlmICh0aGlzLnNlbGVjdGVkKSB7DQorCQkJdGhpcy5kb1NlbGVjdGlvbigpOw0KKwkJfQ0KKwk8L2hhbmRsZXI+DQorCQ0KKwk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4NCisJCXRoaXMuZG9TZWxlY3Rpb24oKTsNCisJPC9oYW5kbGVyPg0KKwkNCisJPG1ldGhvZCBuYW1lPSJkb1NlbGVjdGlvbiI+DQorCQlwYXJlbnQucGFyZW50LmRvU2VsZWN0aW9uKHRoaXMpOw0KKwk8L21ldGhvZD4NCisJDQorCTxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdmVyIj4NCisJCWlmICghdGhpcy5zZWxlY3RlZCkgew0KKwkJCXRoaXMuX2JnMi5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7DQorCQl9DQorCTwvaGFuZGxlcj4NCisJDQorCTxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdXQiPg0KKwkJaWYgKCF0aGlzLnNlbGVjdGVkKSB7DQorICAgICAgICAJdGhpcy5fYmcyLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOw0KKyAgICAgICAgfQ0KKyAgICA8L2hhbmRsZXI+DQorCQ0KKwk8bWV0aG9kIG5hbWU9InNlbGVjdCI+DQorCQl0aGlzLnNlbGVjdGVkID0gdHJ1ZTsNCisJCWlmICh0aGlzLnNob3dJY29uKSB0aGlzLl9pY29uLnNldEF0dHJpYnV0ZSgib3BhY2l0eSIsMSk7DQorICAgICAgICB0aGlzLl9zZWxlY3RlZFZpZXcuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOw0KKyAgICAgICAgdGhpcy5fZGVzZWxlY3RlZFZpZXcuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7DQorCQl0aGlzLl9iZzIuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7DQorCQl0aGlzLl90ZXh0LnNldEF0dHJpYnV0ZSgiZm9udHN0eWxlIiwiYm9sZCIpOw0KKwkJdGhpcy5fdGV4dC5zZXRBdHRyaWJ1dGUoInkiLDYpOw0KKwkJaWYgKHRoaXMuc2hvd0ljb24pIHRoaXMuX2ljb24uc2V0QXR0cmlidXRlKCJ5Iiw2KTsNCisJCXRoaXMuX3RleHQuc2V0QXR0cmlidXRlKCJmZ2NvbG9yIixjYW52YXMuZ2V0VGhlbWVDb2xvcignbWVudVRleHRDb2xvcicpKTsNCisJPC9tZXRob2Q+DQorICAgICANCisgICAgPG1ldGhvZCBuYW1lPSJkZXNlbGVjdCI+DQorICAgICAgICB0aGlzLnNlbGVjdGVkID0gZmFsc2U7DQorICAgICAgICBpZiAodGhpcy5zaG93SWNvbikgdGhpcy5faWNvbi5zZXRBdHRyaWJ1dGUoIm9wYWNpdHkiLDAuNSk7DQorICAgICAgICB0aGlzLl9zZWxlY3RlZFZpZXcuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7DQorICAgICAgICB0aGlzLl9kZXNlbGVjdGVkVmlldy5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7DQorICAgICAgICB0aGlzLl90ZXh0LnNldEF0dHJpYnV0ZSgieSIsOCk7DQorICAgICAgICBpZiAodGhpcy5zaG93SWNvbikgdGhpcy5faWNvbi5zZXRBdHRyaWJ1dGUoInkiLDgpOw0KKyAgICAgICAgdGhpcy5fdGV4dC5zZXRBdHRyaWJ1dGUoImZvbnRzdHlsZSIsInBsYWluIik7DQorICAgICAgICB0aGlzLl90ZXh0LnNldEF0dHJpYnV0ZSgiZmdjb2xvciIsY2FudmFzLmdldFRoZW1lQ29sb3IoJ21lbnVUZXh0RGlzYWJsZWRDb2xvcicpKTsNCisgICAgPC9tZXRob2Q+ICAgICAgIA0KKyAgICANCisgICAgPHZpZXcgbmFtZT0iX3NlbGVjdGVkVmlldyIgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdtZW51QmFja2dyb3VuZENvbG9yJykgfSIgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGggfSIgDQorICAgICAgICAgICAgaGVpZ2h0PSIkb25jZXsgcGFyZW50LmhlaWdodCB9IiB2aXNpYmlsaXR5PSJ2aXNpYmxlIj4NCisgICAgICAgIDx2aWV3IG5hbWU9ImJvcmRlclJpZ2h0IiB3aWR0aD0iMSIgeD0iMCINCisgICAgICAgIAkJCWJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignbWFpbkJvcmRlckNvbG9yJykgfSIgaGVpZ2h0PSIkb25jZXsgcGFyZW50LmhlaWdodCB9IiAvPiAgDQorICAgICAgICA8dmlldyBuYW1lPSJib3JkZXJUb3AiIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoIH0iIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignbWFpbkJvcmRlckNvbG9yJykgfSIgaGVpZ2h0PSIxIiAvPg0KKyAgICAgICAgPHZpZXcgbmFtZT0iYm9yZGVyTGVmdCIgd2lkdGg9IjEiIHg9IiRvbmNleyBwYXJlbnQud2lkdGgtMSB9Ig0KKyAgICAgICAgCQkJYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdtYWluQm9yZGVyQ29sb3InKSB9IiBoZWlnaHQ9IiRvbmNleyBwYXJlbnQuaGVpZ2h0IH0iIC8+ICANCisgICAgPC92aWV3Pg0KKyAgICANCisgICAgPHZpZXcgbmFtZT0iX2Rlc2VsZWN0ZWRWaWV3IiBiZ2NvbG9yPSIweEZBRkFGQSIgDQorICAgIAkJd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGggfSIgeT0iMiINCisgICAgICAgICAgICBoZWlnaHQ9IiRvbmNleyBwYXJlbnQuaGVpZ2h0LTMgfSIgdmlzaWJpbGl0eT0idmlzaWJsZSI+DQorICAgICAgICA8dmlldyBuYW1lPSJib3JkZXJSaWdodCIgd2lkdGg9IjEiIHg9IjAiDQorICAgICAgICAJCQliZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ21haW5Cb3JkZXJDb2xvcicpIH0iIGhlaWdodD0iJG9uY2V7IHBhcmVudC5oZWlnaHQgfSIgLz4gIA0KKyAgICAgICAgPHZpZXcgbmFtZT0iYm9yZGVyVG9wIiB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCB9IiBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ21haW5Cb3JkZXJDb2xvcicpIH0iIGhlaWdodD0iMSIgLz4NCisgICAgICAgIDx2aWV3IG5hbWU9ImJvcmRlckxlZnQiIHdpZHRoPSIxIiB4PSIkb25jZXsgcGFyZW50LndpZHRoLTEgfSINCisgICAgICAgIAkJCWJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignbWFpbkJvcmRlckNvbG9yJykgfSIgaGVpZ2h0PSIkb25jZXsgcGFyZW50LmhlaWdodCB9IiAvPiAgDQorICAgIDwvdmlldz4gICAgICAgDQorICAgICAgICAgIA0KKyAgICA8dmlldyBuYW1lPSJfYmcyIiBiZ2NvbG9yPSIweEZGRkZGRiIgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGgtMiB9IiB5PSIzIiB4PSIxIg0KKyAgICAgICAgICBoZWlnaHQ9IiRvbmNleyBwYXJlbnQuaGVpZ2h0LTQgfSIgb3BhY2l0eT0iMSIgdmlzaWJpbGl0eT0iaGlkZGVuIi8+DQorICAgIA0KKyAgICA8c3RhdGUgYXBwbGllZD0iJG9uY2V7IHBhcmVudC5zaG93SWNvbiB9IiA+DQorCSAgICA8aW1hZ2UgeD0iNiIgeT0iNiIgbmFtZT0iX2ljb24iIHNyYz0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUltYWdlKCBwYXJlbnQuY3VycmVudEljb25Sc2MgKSB9IiANCisgICAgCQkJCXdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgc3RyZXRjaGVzPSJib3RoIiAvPg0KKyAgICA8L3N0YXRlPg0KKyAgICAgICAgICAgICAgICANCisgICAgPGxhYmVsVGV4dCBuYW1lPSJfdGV4dCIgeD0iJG9uY2V7IChwYXJlbnQuc2hvd0ljb24pID8gMjggOiA2IH0iIGZvbnRzaXplPSIkb25jZXsgcGFyZW50LnRleHRGb250U2l6ZSB9IiANCisgICAgCQl2YWxpZ249Im1pZGRsZSIgZmdjb2xvcj0iMHhGRkZGRkYiIGxhYmVsaWQ9IiRvbmNleyBwYXJlbnQubGFiZWxpZCB9IiAvPg0KKwkNCis8L2NsYXNzPg0KKw0KKzwvbGlicmFyeT4NCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2ludml0YXRpb24vYXV0b2xvYWRlckJhck9ubHkubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9pbnZpdGF0aW9uL2F1dG9sb2FkZXJCYXJPbmx5Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YzY0N2Q1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9pbnZpdGF0aW9uL2F1dG9sb2FkZXJCYXJPbmx5Lmx6eApAQCAtMCwwICsxLDE2MSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9ImF1dG9sb2FkZXJCYXJPbmx5IiBleHRlbmRzPSJ2aWV3IiB4PSI0MDAiIHZhbGlnbj0ibWlkZGxlIiBwaXhlbGxvY2s9InRydWUiPgorCisJPGF0dHJpYnV0ZSBuYW1lPSJtYXh3aWR0aCIgdmFsdWU9IjQwMCIgdHlwZT0ibnVtYmVyIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0ibWF4c3RlcHMiIHZhbHVlPSIyMiIgdHlwZT0ibnVtYmVyIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudHN0ZXBzIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorCQorCTxtZXRob2QgbmFtZT0iY2xvc2UiPgorCQljYW52YXMudGhpc2hpYi5sb2FkZXJWYXIgPSBudWxsOworCQl0aGlzLmRlc3Ryb3koKTsKKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9InNldFByb2dyZXNzIj4KKwkJdGhpcy5jdXJyZW50c3RlcHMgKz0gMTsKKwkJaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiYXV0b0xvYWRlci9zZXRQcm9ncmVzcyA9PT09PSAiLHRoaXMuY3VycmVudHN0ZXBzKTsKKwkJdmFyIHcgPSBNYXRoLnJvdW5kKCgodGhpcy5tYXh3aWR0aCkvdGhpcy5tYXhzdGVwcykqdGhpcy5jdXJyZW50c3RlcHMpOworCQl0aGlzLmxvYWRpbmdiYXIuc2V0QXR0cmlidXRlKCd2aXNpYmlsaXR5JywndmlzaWJsZScpOworCQlpZigkZGVidWcpIERlYnVnLndyaXRlKCJhdXRvTG9hZGVyL3NldFJlc291cmNlTnVtYmVyID09ICIsdyk7CisJCXRoaXMubG9hZGluZ2Jhci5fbG9hZGluZy5zZXRBdHRyaWJ1dGUoJ3dpZHRoJyx3KTsKKwk8L21ldGhvZD4KKyAgICAgIAorICAgIDx2aWV3IG5hbWU9ImxvYWRpbmdiYXIiICBoZWlnaHQ9IjEiIHBpeGVsbG9jaz0idHJ1ZSIKKyAgICAgICAgICB4PSItNSIgeT0iNDAiIHdpZHRoPSIkb25jZXsgcGFyZW50Lm1heHdpZHRoKzIgfSIgdmlzaWJpbGl0eT0iaGlkZGVuIj4KKyAgICAgICAgICA8dmlldyB4PSIxIiB5PSIxIiB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aC0yIH0iIGhlaWdodD0iMSIgb3BhY2l0eT0iMC4zIgorICAgICAgICAgIAkJYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdzdHlsZU1lbnVCYXJCYXNlQ29sb3InKSB9IiAvPgorICAgICAgICAgIDx2aWV3IG5hbWU9Il9sb2FkaW5nIiB4PSIxIiB5PSIxIiB3aWR0aD0iMCIgaGVpZ2h0PSIxIiAgcGl4ZWxsb2NrPSJ0cnVlIiAKKyAgICAgICAgICAJCWJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignc3R5bGVNZW51QmFyQmFzZUNvbG9yJykgfSIvPgorICAgIDwvdmlldz4gIAorICAgICAgICAgIAorICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImdldExhbmd1YWdlQnlJZEFuZE1heCIgZnVuY25hbWU9Imxhbmd1YWdlc2VydmljZS5nZXRMYW5ndWFnZUJ5SWRBbmRNYXgiIAorCQlyZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPgorICAgIAk8YXR0cmlidXRlIG5hbWU9InN0YXJ0IiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgIAk8YXR0cmlidXRlIG5hbWU9InN0ZXAiIHZhbHVlPSIxMDAiIHR5cGU9Im51bWJlciIgLz4gCisgICAgCTxhdHRyaWJ1dGUgbmFtZT0ibWF4IiB2YWx1ZT0iMTMwMCIgdHlwZT0ibnVtYmVyIiAvPiAgICAKKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBjYW52YXMudGhpc2hpYi51c2VybGFuZzs8L21ldGhvZD48L25ldHBhcmFtPiAKKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQuc3RhcnQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4gCisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnN0ZXA7PC9tZXRob2Q+PC9uZXRwYXJhbT4gCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAJPCFbQ0RBVEFbCisgICAgICAgIAkJLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZ2V0TGFuZ3VhZ2VCeUlkQW5kTWF4OiAiLHZhbHVlKTsKKyAgICAgICAgCQlzZXRMYWJlbE9iamVjdEJ5SHVuZHJlZCh0aGlzLnN0YXJ0LHZhbHVlKTsKKwkgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorCSAgICAgICAgICAgIGlmICh0aGlzLnN0YXJ0IDw9IG1heCl7CisJICAgICAgICAgICAgCXRoaXMuc3RhcnQgKz0gdGhpcy5zdGVwOworCQkJCQljYW52YXMudGhpc2hpYi5sb2FkZXJWYXIuc2V0UHJvZ3Jlc3MoKTsKKwkJCQkJdGhpcy5kb0NhbGwoKTsKKwkgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgCQlwYXJlbnQuc2V0UHJvZ3Jlc3MoKTsKKyAgICAgICAgICAgIAkJcGFyZW50LmdldFN0YXRlcy5kb0NhbGwoKTsKKwkJCQl9CisJCQldXT4KKyAgICAgICAgPC9oYW5kbGVyPiAgCisgICAgPC9uZXRSZW1vdGVDYWxsSGliPgkgCisgICAgCisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iZ2V0U3RhdGVzIiBmdW5jbmFtZT0ieG1sY3JtLmdldFN0YXRlcyIgCisJCXJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiBkYXRhb2JqZWN0PSJjb3VudHJ5U2V0Ij4gCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZSB0aGUgcnRtcGNvbm5lY3Rpb24KKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJnZXRTdGF0ZXM6ICIsdmFsdWUpOworICAgICAgICAgICAgY2FudmFzLnN0YXRlc0luaXRWYWx1ZXMgPSB2YWx1ZTsKKyAgICAgICAgICAgIHBhcmVudC5zZXRQcm9ncmVzcygpOworICAgICAgICAgICAgcGFyZW50LmdldFRpbWVab25lcy5kb0NhbGwoKTsKKyAgICAgICAgPC9oYW5kbGVyPiAgCisgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAgIAorICAgIAorICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImdldFRpbWVab25lcyIgZnVuY25hbWU9InhtbGNybS5nZXRUaW1lWm9uZXMiIAorCQkgIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiBkYXRhb2JqZWN0PSJ0aW1lWm9uZVNldCI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZSB0aGUgcnRtcGNvbm5lY3Rpb24KKyAgICAgICAgICAgIC8vRGVidWcud3JpdGUoImdldFN0YXRlczogIix2YWx1ZSk7CisgICAgICAgICAgICBwYXJlbnQuc2V0UHJvZ3Jlc3MoKTsKKyAgICAgICAgICAgIHBhcmVudC5nZXRVc2VyU2FsdXRhdGlvbnMuZG9DYWxsKCk7CisgICAgICAgIDwvaGFuZGxlcj4gIAorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4gCisgICAgCisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iZ2V0VXNlclNhbHV0YXRpb25zIiBmdW5jbmFtZT0idXNlcnNlcnZpY2UuZ2V0VXNlclNhbHV0YXRpb25zIiAKKwkJcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gIAorCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gaGliLnVzZXJsYW5nOyA8L21ldGhvZD48L25ldHBhcmFtPiAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICAvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImdldFVzZXJTYWx1dGF0aW9ucyAiLHZhbHVlKTsKKyAgICAgICAgICAgIGNhbnZhcy5zYWx1dGF0aW9uc0luaXRWYWx1ZXMgPSB2YWx1ZTsKKyAgICAgICAgICAgIHBhcmVudC5zZXRQcm9ncmVzcygpOworICAgICAgICAgICAgcGFyZW50LmdldFJvb21UeXBlcy5kb0NhbGwoKTsKKyAgICAgICAgPC9oYW5kbGVyPiAgCisgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAgIAorICAgIAorICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImdldFJvb21UeXBlcyIgZnVuY25hbWU9ImNvbmZlcmVuY2VzZXJ2aWNlLmdldFJvb21UeXBlcyIgCisJCXJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiA+ICAKKwkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBjYW52YXMuc2Vzc2lvbklkOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZSB0aGUgcnRtcGNvbm5lY3Rpb24KKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJnZXRSb29tVHlwZXMgIix2YWx1ZSk7CisgICAgICAgICAgICBjYW52YXMucm9vbVR5cGVzSW5pdFZhbHVlcyA9IHZhbHVlOworICAgICAgICAgICAgcGFyZW50LnNldFByb2dyZXNzKCk7CisgICAgICAgICAgICBwYXJlbnQuc2V0VXNlcm5hbWVBbmRTZXNzaW9uLmRvQ2FsbCgpOworICAgICAgICA8L2hhbmRsZXI+ICAKKyAgICA8L25ldFJlbW90ZUNhbGxIaWI+ICAgIAkgCisJIAorICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9InNldFVzZXJuYW1lQW5kU2Vzc2lvbiIgZnVuY25hbWU9InNldFVzZXJuYW1lQW5kU2Vzc2lvbiIgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gICAKKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBjYW52YXMuc2Vzc2lvbklkOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gY2FudmFzLnVzZXJfaWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBjYW52YXMuY3VycmVudHVzZXI7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBjYW52YXMuZmlyc3ROYW1lOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gY2FudmFzLmxhc3ROYW1lOzwvbWV0aG9kPjwvbmV0cGFyYW0+ICAgICAgCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZSB0aGUgcnRtcGNvbm5lY3Rpb24KKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzZXRVc2VybmFtZTogdmFsdWUsICIsY2FudmFzLnRoaXNoaWIuY3VycmVudEludml0YXRpb24ucm9vbS5yb29tdHlwZS5yb29tdHlwZXNfaWQpOworICAgICAgICAgICAgY2xlYXJTdGFnZUNvbnRlbnQoKTsJCQorICAgICAgICAgICAgcGFyZW50LmNsb3NlKCk7CisgICAgICAgICAgICAKKwkJCWlmIChjYW52YXMudGhpc2hpYi5jdXJyZW50SW52aXRhdGlvbi5yb29tLnJvb210eXBlLnJvb210eXBlc19pZD09MSl7CisJCQkJCisJCQkJbmV3IGx6LnRlc3RTZXR1cChjYW52YXMse2lzRGlyZWN0TGluazp0cnVlLHJvb21DbGFzc05hbWU6Y2FudmFzLmNvbmZlcmVuY2VSb29tTW9kdWxlLHJvb21PYmo6Y2FudmFzLnRoaXNoaWIuY3VycmVudEludml0YXRpb24ucm9vbX0pOworCQkJCQorCQkJfSBlbHNlIGlmIChjYW52YXMudGhpc2hpYi5jdXJyZW50SW52aXRhdGlvbi5yb29tLnJvb210eXBlLnJvb210eXBlc19pZD09Mil7CisJCQkJCisJCQkJbmV3IGx6LnRlc3RTZXR1cChjYW52YXMse2lzRGlyZWN0TGluazp0cnVlLHJvb21DbGFzc05hbWU6Y2FudmFzLnJlc3RyaWN0ZWRSb29tTW9kdWxlLHJvb21PYmo6Y2FudmFzLnRoaXNoaWIuY3VycmVudEludml0YXRpb24ucm9vbX0pOworCQkJCW5ldyBsei5sYWJlbGVycm9yUG9wdXAoY2FudmFzLHtlcnJvcjonTm8gUm9vbVR5cGUgY3VycmVudGx5IGF2YWlsYWJsZSBmb3Igcm9vbVR5cGVJZCAyJ30pOworCQkJCQorCQkJfSBlbHNlIGlmIChjYW52YXMudGhpc2hpYi5jdXJyZW50SW52aXRhdGlvbi5yb29tLnJvb210eXBlLnJvb210eXBlc19pZD09Myl7CisJCQkJCisJCQkJbmV3IGx6LnRlc3RTZXR1cChjYW52YXMse2lzRGlyZWN0TGluazp0cnVlLHJvb21DbGFzc05hbWU6Y2FudmFzLnJlc3RyaWN0ZWRSb29tTW9kdWxlLHJvb21PYmo6Y2FudmFzLnRoaXNoaWIuY3VycmVudEludml0YXRpb24ucm9vbX0pOworCQkJCQorCQkJfSBlbHNlIGlmIChjYW52YXMudGhpc2hpYi5jdXJyZW50SW52aXRhdGlvbi5yb29tLnJvb210eXBlLnJvb210eXBlc19pZD09NCl7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgbmV3IGx6LnRlc3RTZXR1cChjYW52YXMse2lzRGlyZWN0TGluazp0cnVlLHJvb21DbGFzc05hbWU6Y2FudmFzLmludGVydmlld1Jvb21Nb2R1bGUscm9vbU9iajpjYW52YXMudGhpc2hpYi5jdXJyZW50SW52aXRhdGlvbi5yb29tfSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICB9IGVsc2UgaWYgKGNhbnZhcy50aGlzaGliLmN1cnJlbnRJbnZpdGF0aW9uLnJvb20ucm9vbXR5cGUucm9vbXR5cGVzX2lkPT01KXsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBuZXcgbHoudGVzdFNldHVwKGNhbnZhcyx7aXNEaXJlY3RMaW5rOnRydWUscm9vbUNsYXNzTmFtZTpjYW52YXMuY3VzdG9tUm9vbU1vZHVsZSxyb29tT2JqOmNhbnZhcy50aGlzaGliLmN1cnJlbnRJbnZpdGF0aW9uLnJvb219KTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgIAorICAgICAgICA8L2hhbmRsZXI+ICAKKyAgICA8L25ldFJlbW90ZUNhbGxIaWI+ICAgICAKKyAgICAgICAgICAKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvaW52aXRhdGlvbi9pbnZpdGF0aW9uUXVpY2tMb2FkZXIubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9pbnZpdGF0aW9uL2ludml0YXRpb25RdWlja0xvYWRlci5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzFkOWY1OQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvaW52aXRhdGlvbi9pbnZpdGF0aW9uUXVpY2tMb2FkZXIubHp4CkBAIC0wLDAgKzEsMTg4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCTwhLS0tCisJLS0+CisJPCEtLSBsYWJlbDogZGF0YSBsb2FkaW5nLCBwbGVhc2Ugd2FpdCAtLT4KKwk8Y2xhc3MgbmFtZT0iaW52aXRhdGlvblF1aWNrTG9hZGVyIiBleHRlbmRzPSJsYWJlbEV4cGxvcmVyQm94IiBsYWJlbGlkPSIyMzAiCisJCQlkb2NraW5nPSJ0cnVlIiByZXNpemVhYmxlPSJmYWxzZSIgY2xvc2FibGU9ImZhbHNlIiB3aWR0aD0iMzI0IiAKKwkJCXg9IiRvbmNleyBjYW52YXMud2lkdGgvMiAtIHRoaXMud2lkdGgvMiB9IiB5PSIwIiBoZWlnaHQ9IjEyMCI+CisJCSAKKwkJPGF0dHJpYnV0ZSBuYW1lPSJ1c2VybGFuZyIgdmFsdWU9IjEiIHR5cGU9Im51bWJlciIgLz4KKwkJCisJCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisJCQl0aGlzLnNldFJvb21WYWx1ZXMoKTsKKwkJCWlmIChjYW52YXMudGhpc2hpYi5jdXJyZW50SW52aXRhdGlvbi5pc1Bhc3N3b3JkUHJvdGVjdGVkKXsKKwkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiSXMgUGFzc3dvcmQgUHJvdGVjdGVkIik7CisJCQkJdGhpcy5wYXNzX2xhYmVsLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ3Zpc2libGUnKTsKKwkJCQl0aGlzLl9wYXNzd29yZC5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCd2aXNpYmxlJyk7CisJCQkJdGhpcy5pbnZpdGF0aW9uX3Bhc3Muc2V0QXR0cmlidXRlKCd2aXNpYmlsaXR5JywndmlzaWJsZScpOworCQkJfSBlbHNlIHsKKwkJCQl0aGlzLnNob3dMb2dpblN0ZXAoKTsKKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiaW52aXRhdGlvblF1aWNrTG9hZGVyOm9uaW5pdCB1c2VybGFuZyA9IFsiLHVzZXJsYW5nLCJdOyBjYW52YXMubGFuZyA9IFsiLGNhbnZhcy5sYW5ndWFnZV9pZCwiXSIpOworICAgICAgICAgICAgICAgIGlmIChjYW52YXMubGFuZ3VhZ2VfaWQgPiAwKSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNSb29tRnVsbC5kb0NhbGwoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICB0aGlzLnNob3dMb2dpblN0ZXAoKTsKKyAgICAgICAgICAgICAgICB9CisJCQl9CisJCTwvaGFuZGxlcj4KKwkJCisJCTxtZXRob2QgbmFtZT0ic2hvd0xvZ2luU3RlcCI+CisJCQl0aGlzLnBhc3NfbGFiZWwuc2V0QXR0cmlidXRlKCd2aXNpYmlsaXR5JywnaGlkZGVuJyk7CisJCQl0aGlzLl9wYXNzd29yZC5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCdoaWRkZW4nKTsKKwkJCXRoaXMuaW52aXRhdGlvbl9wYXNzLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ2hpZGRlbicpOwkJCisJCQl0aGlzLmxhYmVsbGFuZ3VhZ2VzLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ3Zpc2libGUnKTsKKwkJCXRoaXMubGFuZ3VhZ2VzLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ3Zpc2libGUnKTsKKwkJCXRoaXMuY29ubmVjdC5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCd2aXNpYmxlJyk7CisJCTwvbWV0aG9kPgorCQkKKwkJPG1ldGhvZCBuYW1lPSJjaGVja1BXRCI+CisJCQl0aGlzLmNoZWNrSW52aXRhdGlvblBhc3MuZG9DYWxsKCk7CisJCTwvbWV0aG9kPgorCQkKKwkJPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iaXNSb29tRnVsbCIgZnVuY25hbWU9ImNvbmZlcmVuY2VzZXJ2aWNlLmlzUm9vbUZ1bGwiIAorCQkJCQkJCXJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiBhY3RpdmVFcnJvckhhbmRsZXI9InRydWUiID4gIAkKKyAgICAgICAgCTxuZXRwYXJhbSBuYW1lPSJwYXNzIj48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gY2FudmFzLnRoaXNoaWIuY3VycmVudEludml0YXRpb24ucm9vbS5yb29tc19pZDs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICAJPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgIAkJPCFbQ0RBVEFbCisgICAgICAgICAgICAJCS8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisgICAgICAgICAgICAJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKGNhbnZhcy50aGlzaGliLmN1cnJlbnRJbnZpdGF0aW9uLnJvb20ucm9vbXNfaWQpOworCQkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiaXNSb29tRnVsbDogIix2YWx1ZSk7CisJCQkJCQorCQkJCQlpZiAodmFsdWUpIHsKKwkJCQkJCW5ldyBsei5sYWJlbGVycm9yUG9wdXAoY2FudmFzLHtlcnJvcmxhYmVsaWQ6NjE4fSk7CisJCQkJCQlwYXJlbnQuY2xvc2UoKTsKKwkJCQkJfSBlbHNlIHsKKwkJCQkJCXBhcmVudC5sb2dpbigpOworCQkJCQl9CisgICAgICAgICAgICAJXV0+CisgICAgICAgIAk8L2hhbmRsZXI+ICAgCisgICAgCTwvbmV0UmVtb3RlQ2FsbEhpYj4gCisJCQorCQk8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJjaGVja0ludml0YXRpb25QYXNzIiBmdW5jbmFtZT0iaW52aXRhdGlvbnNlcnZpY2UuY2hlY2tJbnZpdGF0aW9uUGFzcyIgCisJCQkJCQkJcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iIGFjdGl2ZUVycm9ySGFuZGxlcj0idHJ1ZSIgPiAgCQorCSAgICAgIAk8bmV0cGFyYW0gbmFtZT0iaW52aXRhdGlvbkhhc2giPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBjYW52YXMuaW52aXRhdGlvbkhhc2g7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgCTxuZXRwYXJhbSBuYW1lPSJwYXNzIj48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC5fcGFzc3dvcmQuZ2V0VGV4dCgpOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisJICAgICAgICAJCisgICAgICAgIAk8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgCQk8IVtDREFUQVsKKyAgICAgICAgICAgIAkJLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZSB0aGUgcnRtcGNvbm5lY3Rpb24KKwkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiY2hlY2tJbnZpdGF0aW9uUGFzcyA6ICIsdmFsdWUpOworCQkJCWlmICh2YWx1ZTwwKXsKKwkJCQl9IGVsc2UgeworCQkJCQlwYXJlbnQuc2hvd0xvZ2luU3RlcCgpOworCQkJCX0KKyAgICAgICAgICAgIF1dPgorICAgICAgICAJPC9oYW5kbGVyPiAgIAorICAgIAk8L25ldFJlbW90ZUNhbGxIaWI+ICAJCisJICAgIAorCQk8bWV0aG9kIG5hbWU9InNldFJvb21WYWx1ZXMiPgorCQkJaWYgKGNhbnZhcy50aGlzaGliLmN1cnJlbnRJbnZpdGF0aW9uLnJvb20ucm9vbXR5cGUucm9vbXR5cGVzX2lkPT0xKXsKKwkgICAgCQljYW52YXMuaXNDb25mZXJlbmNlID0gdHJ1ZTsKKwkgICAgCX0gZWxzZSB7CisJICAgIAkJY2FudmFzLmlzQ29uZmVyZW5jZSA9IGZhbHNlOworCQkgICAgfQorCSAgICAJdmFyIHJvb21PYmogPSBjYW52YXMudGhpc2hpYi5jdXJyZW50SW52aXRhdGlvbi5yb29tOworICAgICAgICAJaGliLmN1cnJlbnRyb29taWQgPSByb29tT2JqLnJvb21zX2lkOworICAgICAgICAJCisJCTwvbWV0aG9kPgorCQkKKyAgICAJPG1ldGhvZCBuYW1lPSJsb2dpbiI+CisJCQl0aGlzLnVzZXJsYW5nID0gTnVtYmVyKHRoaXMubGFuZ3VhZ2VzLmdldFZhbHVlKCkpOworCQkJdGhpcy5sYWJlbGxhbmd1YWdlcy5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCdoaWRkZW4nKTsKKwkJCXRoaXMubGFuZ3VhZ2VzLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ2hpZGRlbicpOworCQkJdGhpcy5jb25uZWN0LnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsJ2hpZGRlbicpOworCQkJdGhpcy5sYWJlbGxvYWRpbmcuc2V0QXR0cmlidXRlKCd2aXNpYmlsaXR5JywndmlzaWJsZScpOworICAgICAgICAgICAKKyAgICAgICAgCXBhcmVudC51c2VybGFuZyA9IE51bWJlcih0aGlzLnVzZXJsYW5nKTsKKyAgICAgICAgICAgCisgICAgICAgIAl2YXIgdXNlck9iamVjdCA9IG5ldyBBcnJheSgpOworICAgICAgICAgICAKKyAgICAgICAgCWNhbnZhcy5zZXRBdHRyaWJ1dGUoJ2N1cnJlbnR1c2VyJyxjYW52YXMudGhpc2hpYi5jdXJyZW50SW52aXRhdGlvbi5pbnZpdGVkRU1haWwpOworICAgICAgICAJY2FudmFzLnNldEF0dHJpYnV0ZSgndXNlcl9pZCcsLTEpOworICAgICAgICAJY2FudmFzLnNldEF0dHJpYnV0ZSgnZmlyc3ROYW1lJywiIik7CisgICAgICAgIAljYW52YXMuc2V0QXR0cmlidXRlKCdsYXN0TmFtZScsY2FudmFzLnRoaXNoaWIuY3VycmVudEludml0YXRpb24uaW52aXRlZEVNYWlsKTsJCisgICAgICAgIAljYW52YXMuc2V0QXR0cmlidXRlKCdtYWlsJyxjYW52YXMubWFpbCk7CisgICAgICAgIAljYW52YXMuc2V0QXR0cmlidXRlKCdsYXN0TG9naW4nLCcnKTsKKyAgICAgICAgCWNhbnZhcy5zZXRBdHRyaWJ1dGUoJ29mZmljaWFsX2NvZGUnLCcnKTsKKyAgICAgICAgCWNhbnZhcy5zZXRBdHRyaWJ1dGUoJ3BpY3R1cmVfdXJpJywnJyk7CisgICAgICAgIAljYW52YXMuc2V0QXR0cmlidXRlKCdsYW5ndWFnZScsJycpOwkJCQkJCisgICAgICAgCisgICAgICAgIAl1c2VyT2JqZWN0WyJsb2dpbiJdID0gY2FudmFzLnRoaXNoaWIuY3VycmVudEludml0YXRpb24uaW52aXRlZEVNYWlsOworICAgICAgICAJdXNlck9iamVjdFsiZmlyc3RuYW1lIl0gPSAiIjsKKyAgICAgICAgCXVzZXJPYmplY3RbImxhc3RuYW1lIl0gPSBjYW52YXMudGhpc2hpYi5jdXJyZW50SW52aXRhdGlvbi5pbnZpdGVkRU1haWw7CisgICAgICAgIAl1c2VyT2JqZWN0WyJhZHJlc3NlcyJdID0gbmV3IEFycmF5KCk7CisgICAgICAgIAkvL3VzZXJPYmplY3RbImFkcmVzc2VzIl1bImVtYWlscyJdID0gbmV3IEFycmF5KCk7CisgICAgICAgIAl1c2VyT2JqZWN0WyJhZHJlc3NlcyJdWyJlbWFpbCJdID0gY2FudmFzLnRoaXNoaWIuY3VycmVudEludml0YXRpb24uaW52aXRlZEVNYWlsOworICAgICAgICAJLy91c2VyT2JqZWN0WyJhZHJlc3NlcyJdWyJlbWFpbHMiXVswXVsibWFpbCJdID0gbmV3IEFycmF5KCk7CisgICAgICAgIAkvL3VzZXJPYmplY3RbImFkcmVzc2VzIl1bImVtYWlscyJdWzBdWyJtYWlsIl1bImVtYWlsIl0gPSBjYW52YXMudGhpc2hpYi5jdXJyZW50SW52aXRhdGlvbi5pbnZpdGVkRU1haWw7CisgICAgICAgICAgIAorICAgICAgICAJaGliLnVzZXJvYmplY3QgPSB1c2VyT2JqZWN0OworICAgICAgICAgICAKKyAgICAgICAgCWhpYi51c2VybGFuZyA9IE51bWJlcih0aGlzLnVzZXJsYW5nKTsKKyAgICAgICAgCWNhbnZhcy50aGlzaGliLmxvYWRlclZhciA9IG5ldyBsei5hdXRvbG9hZGVyQmFyT25seShjYW52YXMpOworCQkJY2FudmFzLnRoaXNoaWIubG9hZGVyVmFyLnNldFByb2dyZXNzKCk7CisJCQl0aGlzLmNsb3NlKCk7CisgICAgICAgIAljYW52YXMudGhpc2hpYi5sb2FkZXJWYXIuZ2V0TGFuZ3VhZ2VCeUlkQW5kTWF4LmRvQ2FsbCgpOyAgICAgICAgIAorCQk8L21ldGhvZD4KKwkJIAorCQk8IS0tIGxhYmVsOiBwYXNzd29yZCAtLT4KKwkgICAgCTxsYWJlbFRleHQgbmFtZT0icGFzc19sYWJlbCIgbGFiZWxpZD0iNTM2IiB2aXNpYmlsaXR5PSJoaWRkZW4iIHdpZHRoPSIyMDAiIHk9IjMwIiByZXNpemU9ImZhbHNlIiB4PSIxMCIgLz4gIAorCQk8Y3VzdG9tRWRpdHRleHQgbmFtZT0iX3Bhc3N3b3JkIiBwYXNzd29yZD0idHJ1ZSIgdmlzaWJpbGl0eT0iaGlkZGVuIiB3aWR0aD0iMTcwIiB5PSIzMCIgeD0iMTIwIiAvPgorCQkKKwkJPCEtLSBsYWJlbDogQ2hlY2sgcGFzc3dvcmQgLS0+CisJIAk8c2ltcGxlTGFiZWxCdXR0b24gbmFtZT0iaW52aXRhdGlvbl9wYXNzIiB5PSI4MCIgeD0iMTIwIiB0ZXh0PSJzdGFydCIgdmlzaWJpbGl0eT0iaGlkZGVuIiBsYWJlbGlkPSI1MzciCisJIAkJCQkJICAgCXdpZHRoPSIxNzAiIGhlaWdodD0iMjAiIG9uY2xpY2s9InBhcmVudC5jaGVja1BXRCgpOyIgLz4KKwkJCisJCTwhLS0gbGFiZWw6IGxhbmd1YWdlIC0tPgorCQk8bGFiZWxUZXh0IG5hbWU9ImxhYmVsbGFuZ3VhZ2VzIiBsYWJlbGlkPSIyMjciIHZpc2liaWxpdHk9ImhpZGRlbiIgd2lkdGg9IjIwMCIgeT0iMzAiIHJlc2l6ZT0iZmFsc2UiIHg9IjEwIiAvPiAgICAgCisJCTxyZXNldENvbWJvYm94IG5hbWU9Imxhbmd1YWdlcyIgd2lkdGg9IjE3MCIgeT0iMzAiIHg9IjEyMCIgdmlzaWJpbGl0eT0iaGlkZGVuIiBlZGl0YWJsZT0iZmFsc2UiPgorCSAgICAgIAk8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJnZXRMYW5ndWFnZXMiIGZ1bmNuYW1lPSJsYW5ndWFnZXNlcnZpY2UuZ2V0TGFuZ3VhZ2VzIiByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAgICAgIAorCSAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgICAgICAgICAgIAl0aGlzLmRvQ2FsbCgpOworCSAgICAgICAgICAgIDwvaGFuZGxlcj4KKwkgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKwkgICAgICAgICAgICAJLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZSB0aGUgcnRtcGNvbm5lY3Rpb24KKyAgICAgICAgICAgICAgICAgIAk8IVtDREFUQVsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzZWxWYWwgPSBjYW52YXMubGFuZ3VhZ2VfaWQ7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZm91bmQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgIAkJZm9yICh2YXIgaT0wO2k8dmFsdWUubGVuZ3RoO2krKyl7CisJICAgICAgICAgICAgICAgICAgCQl0aGlzLnBhcmVudC5hZGRJdGVtKHZhbHVlW2ldLm5hbWUsdmFsdWVbaV0ubGFuZ3VhZ2VfaWQpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWx1ZVtpXS5sYW5ndWFnZV9pZCA9PSBzZWxWYWwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKwkJICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAJCXRoaXMucGFyZW50LnNlbGVjdEl0ZW0oKGZvdW5kKSA/IHNlbFZhbCA6IHZhbHVlWzBdLmxhbmd1YWdlX2lkKTsKKwkJICAgICAgICAgICAgXV0+CisJCQkJPC9oYW5kbGVyPiAgCisJCQk8L25ldFJlbW90ZUNhbGxIaWI+CisJCTwvcmVzZXRDb21ib2JveD4JCSAKKworCQk8IS0tIGxhYmVsOiBsb2FkaW5nIC0tPgkKKwkJPGxhYmVsVGV4dCBuYW1lPSJsYWJlbGxvYWRpbmciIHk9IjMwIiB4PSIxMCIgZm9udHN0eWxlPSJib2xkIiBsYWJlbGlkPSIyMjkiIHZpc2liaWxpdHk9ImhpZGRlbiIgLz4KKwkJCisJCTwhLS0gbGFiZWw6IGVudGVyIC0tPgorCQk8c2ltcGxlTGFiZWxCdXR0b24gbmFtZT0iY29ubmVjdCIgeT0iODAiIHg9IjEyMCIgdGV4dD0ic3RhcnQiIAorCQkJCQkJICAgdmlzaWJpbGl0eT0iaGlkZGVuIiBsYWJlbGlkPSIyMjgiIHdpZHRoPSIxNzAiIGhlaWdodD0iMjAiIAorCQkJCQkJICAgb25jbGljaz0icGFyZW50LmlzUm9vbUZ1bGwuZG9DYWxsKCk7IiAvPgorCTwvY2xhc3M+Cis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2ludml0YXRpb24vaW52aXRlTWFpbldpbmRvdy5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2ludml0YXRpb24vaW52aXRlTWFpbldpbmRvdy5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWY0NWJkZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvaW52aXRhdGlvbi9pbnZpdGVNYWluV2luZG93Lmx6eApAQCAtMCwwICsxLDI1OSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKwk8IS0tLQorCQlUaGlzIGNsYXNzIHNob3dzIGEgaW52aXRhdGlvbiB3aW5kb3cgd2l0aCBjbGlja2luZyBidXR0b24gd2hpY2ggaXMgbG9jYXRlZCBpbiB2aWRlbyBhbmQgYXVkaW8gcGFuZWwuCisJLS0+CisJPCEtLSBwbGFjZWhvbGRlcgorCQlsYWJlbDogc2VuZCBpbnZpdGF0aW9uCisJLS0+CisJPGNsYXNzIG5hbWU9Imludml0ZU1haW5XaW5kb3ciIGV4dGVuZHM9ImxhYmVsRXhwbG9yZXJCb3giIGxhYmVsaWQ9IjIxNCIgCisJCQlkb2NraW5nPSJ0cnVlIiBjbG9zYWJsZT0idHJ1ZSIgd2lkdGg9IjQ2NCIgeD0iMjAwIiB5PSIxMDAiIGhlaWdodD0iNDY1Ij4KKwkJCisJCTxhdHRyaWJ1dGUgbmFtZT0icm9vbVR5cGUiIHZhbHVlPSJjb25mZXJlbmNlIiB0eXBlPSJzdHJpbmciIC8+CisJCTxhdHRyaWJ1dGUgbmFtZT0iYmFzZVVybCIgdmFsdWU9Imh0dHA6Ly93d3cuZGVuaWMuZGUiIHR5cGU9InN0cmluZyIgLz4KKwkJPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50SGFzaCIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorCQk8YXR0cmlidXRlIG5hbWU9ImRpc3BsYXkiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICAJCisJCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisJCTwhW0NEQVRBWworCQkJbHouTW9kZU1hbmFnZXIubWFrZU1vZGFsKHRoaXMpOworCQkJdmFyIHByZXNzRW50ZXIgPSBuZXcgTHpEZWxlZ2F0ZSh0aGlzLCAicmVnaXN0ZXIiKTsKKwkJCWx6LktleXMuY2FsbE9uS2V5Q29tYm8ocHJlc3NFbnRlciwgWyJlbnRlciJdKTsKKwkJCQorCQkJZ2V0VGltZVpvbmVPZmZzZXQodGhpcyk7CisJCQkKKwkJCXRoaXMuYmFzZVVybCA9IGNhbnZhcy5nZXRBcHBCYXNlVXJsKCk7CisJCQlpZiggJGRlYnVnICkgRGVidWcud3JpdGUoInRoaXMuYmFzZVVybDogIiwgdGhpcy5iYXNlVXJsKTsKKwkJCWlmICghY2FudmFzLmlzQ29uZmVyZW5jZSl7CisJCQkJdGhpcy5yb29tVHlwZSA9ICJyZXN0cmljdGVkIjsgLy9GSVhNRQorCQkJfQorCQldXT4KKwkJPC9oYW5kbGVyPgorICAgICAgICAKKyAgICAgICAgPG1ldGhvZCBuYW1lPSJjYWxsYmFjayIgYXJncz0icmV0dXJuVmFsdWUiPgorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImdldFRpbWVab25lT2Zmc2V0IGNhbGxiYWNrICIscmV0dXJuVmFsdWUpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciBzdGRfdGltZV9vZmZzZXQgPSBOdW1iZXIocmV0dXJuVmFsdWUpOworICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLnNldE9mZnNldChzdGRfdGltZV9vZmZzZXQpOworICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgCisgICAgICAgIDxtZXRob2QgbmFtZT0ic2V0T2Zmc2V0IiBhcmdzPSJzdGRfdGltZV9vZmZzZXQiPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICBzdGRfdGltZV9vZmZzZXQgPSBNYXRoLnJvdW5kKHN0ZF90aW1lX29mZnNldCk7CisgICAgICAgICAgICB2YXIgdGltZVpvbmVKYXZhRm9ybWF0ID0gIkV0Yy9HTVQiOworICAgICAgICAgICAgaWYgKHN0ZF90aW1lX29mZnNldCA+IDApIHsKKyAgICAgICAgICAgICAgICB0aW1lWm9uZUphdmFGb3JtYXQgKz0gIisiK3N0ZF90aW1lX29mZnNldDsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgdGltZVpvbmVKYXZhRm9ybWF0ICs9ICItIitzdGRfdGltZV9vZmZzZXQ7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ0aW1lWm9uZUphdmFGb3JtYXQgOjogIix0aW1lWm9uZUphdmFGb3JtYXQpOworICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgdEl0ZW0gPSAgdGhpcy5fdGltZVpvbmUuZ2V0SXRlbSh0aW1lWm9uZUphdmFGb3JtYXQpOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAodEl0ZW0gIT0gbnVsbCkgeworICAgICAgICAgICAgCXRoaXMuX3RpbWVab25lLnNlbGVjdEl0ZW0odGltZVpvbmVKYXZhRm9ybWF0KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAJdGhpcy5fdGltZVpvbmUuc2VsZWN0SXRlbUF0KDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9tZXRob2Q+IAorICAgICAgICAKKyAgICAJPGhhbmRsZXIgbmFtZT0ib25jbG9zZSI+CisgICAgCQlsei5Nb2RlTWFuYWdlci5yZWxlYXNlKHRoaXMpOworICAgIAk8L2hhbmRsZXI+CQorCQkKKwkJPCEtLSBsYWJlbDogcmVjaXBpZW50IC0tPgorCQk8bGFiZWxUZXh0IGxhYmVsaWQ9IjIxNiIgeT0iMjQiIHdpZHRoPSIxMjAiIC8+CisJCTxjdXN0b21FZGl0dGV4dCBuYW1lPSJfcmVjaXBpZW50IiB3aWR0aD0iMzQwIiByZWdleHBUeXBlPSJlbWFpbCIgeD0iMTIwIiB5PSIyMiIgLz4KKwkJCisJCTwhLS0gbGFiZWw6IHN1YmplY3QgLS0+CisJCTxsYWJlbFRleHQgbGFiZWxpZD0iMjE1IiB5PSI1MiIgd2lkdGg9IjEyMCIgLz4KKwkJPGN1c3RvbUVkaXR0ZXh0IG5hbWU9Il9zdWJqZWN0IiBsYWJlbGlkPSI1MzIiIHdpZHRoPSIzNDAiIGVuYWJsZWQ9ImZhbHNlIiB4PSIxMjAiIHk9IjUyIiAvPgkKKwkJCisJCTwhLS0gbGFiZWw6IG1lc3NhZ2UgLS0+CisJCTxsYWJlbFRleHQgbGFiZWxpZD0iMjE3IiB5PSI4MiIgd2lkdGg9IjEyMCIgLz4KKwkJPCEtLQorCQk8Y3VzdG9tRWRpdHRleHQgbmFtZT0iX21lc3NhZ2UiIHdpZHRoPSIzNDAiIHg9IjEyMCIgeT0iODIiIGhlaWdodD0iMTAwIiAKKwkJCQkJCW11bHRpbGluZT0idHJ1ZSIgLz4KKwkJIC0tPgorCQk8Y3VzdG9tU2Nyb2xsRWRpdHRleHQgbmFtZT0iX21lc3NhZ2UiIHdpZHRoPSIzNDAiIHg9IjEyMCIgeT0iODIiIGhlaWdodD0iMTAwIiAvPgkKKwkJCisJCQkJCQkJICAKKwkJPCEtLSBsYWJlbDogcGFzc3dvcmQgcHJvdGVjdGVkIC0tPgorCQk8bGFiZWxDaGVja2JveCBuYW1lPSJfaXNwYXNzd29yZFByb3RlY3RlZCIgeT0iMTkyIiBmb250c2l6ZT0iMTEiIHg9IjQiIGxhYmVsaWQ9IjUyNCIgIC8+CisJCQkKKwkJPCEtLSBsYWJlbDogcGFzc3dvcmQgLS0+CisJCTxsYWJlbFRleHQgbGFiZWxpZD0iNTI1IiB5PSIyMjAiIHg9IjQiIGZnY29sb3I9IiR7ICgoIXBhcmVudC5faXNwYXNzd29yZFByb3RlY3RlZC52YWx1ZSkgPyAweENDQ0NDQyA6IDB4MDAwMDAwICkgfSIgLz4KKwkJPGN1c3RvbUVkaXR0ZXh0IG5hbWU9Il9wYXNzd29yZCIgZW5hYmxlZD0iJHsgcGFyZW50Ll9pc3Bhc3N3b3JkUHJvdGVjdGVkLnZhbHVlIH0iIHBhc3N3b3JkPSJ0cnVlIgorCQkJCQkJd2lkdGg9IjM0MCIgeD0iMTIwIiB5PSIyMTgiIC8+CisJCQorCQk8IS0tIGxhYmVsOiB2YWxpZGl0eSBwZXJpb2QgLS0+CisJCTxsYWJlbFRleHQgbGFiZWxpZD0iNTI2IiB5PSIyNTIiIHdpZHRoPSIxMjAiIC8+CisJCisJCTxyYWRpb2dyb3VwIG5hbWU9Il92YWxpZCIgeD0iMTIwIiB5PSIyNTYiIGxheW91dD0iY2xhc3M6c2ltcGxlbGF5b3V0OyBheGlzOngiPgorCQkJPCEtLSBsYWJlbDogZW5kbGVzcyAtLT4KKwkgICAgICAgICAgICA8bGFiZWxSYWRpb0J1dHRvbiB2YWx1ZT0iMSIgbGFiZWxpZD0iNTI3IiBmb250c2l6ZT0iMTEiIC8+CisJCQk8IS0tIGxhYmVsOiBwZXJpb2QgLS0+CisJICAgICAgICAgICAgPGxhYmVsUmFkaW9CdXR0b24gdmFsdWU9IjIiIGxhYmVsaWQ9IjUyOCIgZm9udHNpemU9IjExIiAvPgorCQkJPCEtLSBsYWJlbDogb25lLXRpbWUgLS0+CisJICAgICAgICAJPGxhYmVsUmFkaW9CdXR0b24gdmFsdWU9IjMiIGxhYmVsaWQ9IjUyOSIgZm9udHNpemU9IjExIiAvPgorCQk8L3JhZGlvZ3JvdXA+CisKKwkJPCEtLSBsYWJlbDogdmFsaWQgZnJvbSAtLT4JCQorCQk8bGFiZWxUZXh0IHg9IjQiIGxhYmVsaWQ9IjUzMCIgeT0iMjg0IiBmZ2NvbG9yPSIkeyAoKHBhcmVudC5fdmFsaWQudmFsdWU9PTIpID8gMHgwMDAwMDAgOiAweENDQ0NDQyApIH0iIC8+CisJCTxkYXRlRmllbGQgeD0iMTIwIiB5PSIyODIiIG5hbWU9Il92YWxpZF9mcm9tIiBzZXREZWZhdWx0VG9kYXk9InRydWUiIGVuYWJsZWQ9IiR7ICgocGFyZW50Ll92YWxpZC52YWx1ZT09MikgPyB0cnVlIDogZmFsc2UgKSB9IiAvPgorCQk8Y3VzdG9tRWRpdHRleHQgbmFtZT0iX3RpbWVGcm9tIiBlbmFibGVkPSIkeyAoKHBhcmVudC5fdmFsaWQudmFsdWU9PTIpID8gdHJ1ZSA6IGZhbHNlICkgfSIKKwkJCQkJd2lkdGg9IjUwIiB4PSIyMzIiIHk9IjI4MiIgdGV4dD0iJG9uY2V7IGdldFN0cmluZ1RpbWUoKSB9IiByZWdleHBUeXBlPSJ0aW1lIiAvPgkgICAKKwkJCisJCTwhLS0gbGFiZWw6IHZhbGlkIHRvIC0tPgkJCQorCQk8bGFiZWxUZXh0IHg9IjQiIGxhYmVsaWQ9IjUzMSIgeT0iMzE0IiBmZ2NvbG9yPSIkeyAoKHBhcmVudC5fdmFsaWQudmFsdWU9PTIpID8gMHgwMDAwMDAgOiAweENDQ0NDQyApIH0iIC8+CisJCTxkYXRlRmllbGQgeD0iMTIwIiB5PSIzMTQiIG5hbWU9Il92YWxpZF90byIgc2V0RGVmYXVsdFRvZGF5PSJ0cnVlIiBhZGRpdGlvbmFsRGF5PSIxIiBlbmFibGVkPSIkeyAoKHBhcmVudC5fdmFsaWQudmFsdWU9PTIpID8gdHJ1ZSA6IGZhbHNlICkgfSIgLz4JCQorCQk8Y3VzdG9tRWRpdHRleHQgbmFtZT0iX3RpbWVUbyIgZW5hYmxlZD0iJHsgKChwYXJlbnQuX3ZhbGlkLnZhbHVlPT0yKSA/IHRydWUgOiBmYWxzZSApIH0iCisJCQkJCQl3aWR0aD0iNTAiIHg9IjIzMiIgeT0iMzE0IiB0ZXh0PSIkb25jZXsgZ2V0U3RyaW5nVGltZSgpIH0iIHJlZ2V4cFR5cGU9InRpbWUiIC8+CQkJCSAgIAorCisgICAgICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMTE0MyIgd2lkdGg9IjIwMCIgeT0iMzQ0IiBmZ2NvbG9yPSIkeyAoKHBhcmVudC5fdmFsaWQudmFsdWU9PTIpID8gMHgwMDAwMDAgOiAweENDQ0NDQyApIH0iICB4PSI0IiAvPgorICAgICAgICA8cmVzZXRDb21ib2JveCBuYW1lPSJfdGltZVpvbmUiIGVkaXRhYmxlPSJmYWxzZSIgeT0iMzQ0IiB3aWR0aD0iMjcwIiB4PSIxMjAiCisgICAgICAgICAJCQkgICBlbmFibGVkPSIkeyAoKHBhcmVudC5fdmFsaWQudmFsdWU9PTIpID8gdHJ1ZSA6IGZhbHNlICkgfSIKKyAgICAgICAgIAkJCSAgIGZvbnRzaXplPSIxMSIgc3R5bGU9ImNvbXBvbmVudFN0eWxlIj4KKyAgICAgICAgICAgIDxsYWJlbGRUZXh0TGlzdEl0ZW0gZGF0YXBhdGg9InRpbWVab25lU2V0Oi9pdGVtIiB0ZXh0PSIkcGF0aHsgJ2Zyb250RW5kTGFiZWwvdGV4dCgpJyB9IiAKKyAgICAgICAgICAgICAgICB2YWx1ZT0iJHBhdGh7ICdqbmFtZS90ZXh0KCknIH0iIC8+CisgICAgICAgIDwvcmVzZXRDb21ib2JveD4KKyAgICAgICAgIAorCQk8bGFiZWxUZXh0IGxhYmVsaWQ9IjU5IiB3aWR0aD0iMjAwIiB5PSIzNzQiIHg9IjQiIC8+CisgICAgICAgIDxyZXNldENvbWJvYm94IG5hbWU9Il9sYW5ndWFnZXMiIGVkaXRhYmxlPSJmYWxzZSIgeT0iMzc0IiB3aWR0aD0iMjcwIiB4PSIxMjAiCisgICAgICAgICAJCQkgICBmb250c2l6ZT0iMTEiIHN0eWxlPSJjb21wb25lbnRTdHlsZSI+CisgICAgICAgICAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJnZXRMYW5ndWFnZXMiIGZ1bmNuYW1lPSJsYW5ndWFnZXNlcnZpY2UuZ2V0TGFuZ3VhZ2VzIiByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPgorICAgICAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgICAgICAgICAgICAgIHRoaXMuZG9DYWxsKCk7CisgICAgICAgICAgICAgICAgPC9oYW5kbGVyPgorCisgICAgICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgICAgICAgICAgICAgIC8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisgICAgICAgICAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wOyBpPHZhbHVlLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LmFkZEl0ZW0odmFsdWVbaV0ubmFtZSx2YWx1ZVtpXS5sYW5ndWFnZV9pZCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQuc2VsZWN0SXRlbShjYW52YXMubGFuZ3VhZ2VfaWQpOworICAgICAgICAgICAgICAgICAgICBdXT4KKyAgICAgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgICAgICA8L25ldFJlbW90ZUNhbGxIaWI+CisgICAgICAgIDwvcmVzZXRDb21ib2JveD4KKworCQk8Y3VzdG9tRWRpdHRleHQgbmFtZT0iX3VybCIgZW5hYmxlZD0iZmFsc2UiIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoIC0gMTAgfSIgeD0iNSIgeT0iNDA1IiB0ZXh0PSIiLz4KKwkJCisJCTxzaW1wbGVMYWJlbEJ1dHRvbiBuYW1lPSJnZW5lcmF0ZSIgbGFiZWxpZD0iMTUyNiIgeD0iJG9uY2V7IHBhcmVudC53aWR0aC00NDAgfSIgd2lkdGg9IjE3MCIgeT0iJG9uY2V7IHBhcmVudC5oZWlnaHQtMjYgfSI+CisJCQk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKwkJCTwhW0NEQVRBWworICAgICAgICAJCXBhcmVudC5kaXNwbGF5ID0gdHJ1ZTsKKwkJCQlwYXJlbnQuc2VuZEludml0YXRpb25IYXNoLmRvQ2FsbCgpOworCQkJXV0+CisJCQk8L2hhbmRsZXI+CisJCTwvc2ltcGxlTGFiZWxCdXR0b24+CisJCQorICAgICAgICA8IS0tIGxhYmVsOiBzZW5kIC0tPgorCQk8c2ltcGxlTGFiZWxCdXR0b24gbmFtZT0ic2VuZCIgbGFiZWxpZD0iMjE4IiB4PSIkb25jZXsgcGFyZW50LndpZHRoLTI2MCB9IiB3aWR0aD0iMTIwIiB5PSIkb25jZXsgcGFyZW50LmhlaWdodC0yNiB9Ij4KKwkJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorCQkJPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgZm9yICh2YXIgZWcgaW4gdGhpcy5wYXJlbnQuc3Vidmlld3MpeworICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10uc2V0QXR0cmlidXRlKCdlbmFibGVkJywgZmFsc2UpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAocGFyZW50LmRpc3BsYXkpIHsKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50LnNlbmRJbnZpdGF0aW9uQnlIYXNoLmRvQ2FsbCgpOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHBhcmVudC5zZW5kSW52aXRhdGlvbkhhc2guZG9DYWxsKCk7CisgICAgICAgICAgICAgICAgfQorCQkJCV1dPgorCQkJPC9oYW5kbGVyPgorCQk8L3NpbXBsZUxhYmVsQnV0dG9uPgorCQorCQk8IS0tIGxhYmVsOiBjYW5jZWwgLS0+CisJCTxzaW1wbGVMYWJlbEJ1dHRvbiBsYWJlbGlkPSIyMTkiIHg9IiRvbmNleyBwYXJlbnQud2lkdGgtMTMwIH0iIHdpZHRoPSIxMjAiIHk9IiRvbmNleyBwYXJlbnQuaGVpZ2h0LTI2IH0iPgorCQkJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisJCQkJcGFyZW50LmNsb3NlKCk7CisJCQk8L2hhbmRsZXI+CisJCTwvc2ltcGxlTGFiZWxCdXR0b24+CisJICAgCisJCTxuZXRSZW1vdGVDYWxsSGliIG5hbWU9InNlbmRJbnZpdGF0aW9uQnlIYXNoIiBmdW5jbmFtZT0iaW52aXRhdGlvbnNlcnZpY2Uuc2VuZEludml0YXRpb25CeUhhc2giIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiA+CisJCQk8bmV0cGFyYW0gbmFtZT0iU0lEIj48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gY2FudmFzLnNlc3Npb25JZDs8L21ldGhvZD48L25ldHBhcmFtPgorCQkJPG5ldHBhcmFtIG5hbWU9Imludml0YXRpb25IYXNoIj48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gdGhpcy5wYXJlbnQucGFyZW50LmN1cnJlbnRIYXNoOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCQk8bmV0cGFyYW0gbmFtZT0ibWVzc2FnZSI+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHRoaXMucGFyZW50LnBhcmVudC5fbWVzc2FnZS5nZXRUZXh0KCk7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJCTxuZXRwYXJhbSBuYW1lPSJiYXNldXJsIj48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC5iYXNlVXJsOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCQk8bmV0cGFyYW0gbmFtZT0ic3ViamVjdCI+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHRoaXMucGFyZW50LnBhcmVudC5fc3ViamVjdC5nZXRUZXh0KCk7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJCTxuZXRwYXJhbSBuYW1lPSJsYW5ndWFnZV9pZCI+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQuX2xhbmd1YWdlcy5nZXRWYWx1ZSgpOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCQk8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKwkJCTwhW0NEQVRBWworCQkJCWlmICh2YWx1ZSAhPSBudWxsKXsKKwkJCQkJcGFyZW50LmNsb3NlKCk7CisJCQkJfSBlbHNlIHsKKwkJCQkJbmV3IGx6LmVycm9yUG9wdXAoY2FudmFzLm1haW5fY29udGVudC5fY29udGVudC5pbm5lcix7ZXJyb3I6dmFsdWV9KTsKKwkJCQl9CisJCQldXT4KKwkJCTwvaGFuZGxlcj4gICAKKwkJPC9uZXRSZW1vdGVDYWxsSGliPgorCQkJCisJCTxuZXRSZW1vdGVDYWxsSGliIG5hbWU9InNlbmRJbnZpdGF0aW9uSGFzaCIgZnVuY25hbWU9Imludml0YXRpb25zZXJ2aWNlLnNlbmRJbnZpdGF0aW9uSGFzaCIgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4KKwkJCTxuZXRwYXJhbSBuYW1lPSJzaWQiPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBjYW52YXMuc2Vzc2lvbklkOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCQk8bmV0cGFyYW0gbmFtZT0idXNlcm5hbWUiPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBoaWIudXNlcm9iamVjdC5maXJzdG5hbWUrJyAnK2hpYi51c2Vyb2JqZWN0Lmxhc3RuYW1lPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJCTxuZXRwYXJhbSBuYW1lPSJtZXNzYWdlIj48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gdGhpcy5wYXJlbnQucGFyZW50Ll9tZXNzYWdlLmdldFRleHQoKTs8L21ldGhvZD48L25ldHBhcmFtPgorCQkJPG5ldHBhcmFtIG5hbWU9ImJhc2V1cmwiPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50LmJhc2VVcmw7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJCTxuZXRwYXJhbSBuYW1lPSJlbWFpbCI+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHRoaXMucGFyZW50LnBhcmVudC5fcmVjaXBpZW50LmdldFRleHQoKTs8L21ldGhvZD48L25ldHBhcmFtPgorCQkJPG5ldHBhcmFtIG5hbWU9InN1YmplY3QiPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiB0aGlzLnBhcmVudC5wYXJlbnQuX3N1YmplY3QuZ2V0VGV4dCgpOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCQk8bmV0cGFyYW0gbmFtZT0icm9vbWlkIj48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gaGliLmN1cnJlbnRyb29taWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJCTxuZXRwYXJhbSBuYW1lPSJjb25mZXJlbmNlZG9tYWluIj48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gaGliLmNvbmZlcmVuY2Vkb21haW47PC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJCTxuZXRwYXJhbSBuYW1lPSJpc3Bhc3N3b3JkUHJvdGVjdGVkIj48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC5faXNwYXNzd29yZFByb3RlY3RlZC52YWx1ZTs8L21ldGhvZD48L25ldHBhcmFtPgorCQkJPG5ldHBhcmFtIG5hbWU9InBhc3N3b3JkIj48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC5fcGFzc3dvcmQuZ2V0VGV4dCgpOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCQk8bmV0cGFyYW0gbmFtZT0idmFsaWQiPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50Ll92YWxpZC52YWx1ZTs8L21ldGhvZD48L25ldHBhcmFtPgorCQkJPG5ldHBhcmFtIG5hbWU9InZhbGlkRnJvbURhdGUiPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50Ll92YWxpZF9mcm9tLmdldERhdGUoKTs8L21ldGhvZD48L25ldHBhcmFtPgorCQkJPG5ldHBhcmFtIG5hbWU9InZhbGlkRnJvbVRpbWUiPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50Ll90aW1lRnJvbS5nZXRUZXh0KCk7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJCTxuZXRwYXJhbSBuYW1lPSJ2YWxpZFRvRGF0ZSI+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQuX3ZhbGlkX3RvLmdldERhdGUoKTs8L21ldGhvZD48L25ldHBhcmFtPgorCQkJPG5ldHBhcmFtIG5hbWU9InZhbGlkVG9UaW1lIj48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC5fdGltZVRvLmdldFRleHQoKTs8L21ldGhvZD48L25ldHBhcmFtPgorCQkJPG5ldHBhcmFtIG5hbWU9Imxhbmd1YWdlX2lkIj48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC5fbGFuZ3VhZ2VzLmdldFZhbHVlKCk7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJCTxuZXRwYXJhbSBuYW1lPSJqTmFtZVRpbWVab25lIj48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC5fdGltZVpvbmUuZ2V0VmFsdWUoKTs8L21ldGhvZD48L25ldHBhcmFtPgorCQkJPG5ldHBhcmFtIG5hbWU9InNlbmRNYWlsIj48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gIXBhcmVudC5wYXJlbnQuZGlzcGxheTs8L21ldGhvZD48L25ldHBhcmFtPgorCQkJCisJCQk8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKwkJCTwhW0NEQVRBWworCQkJCS8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisJCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInNlbmRJbnZpdGF0aW9uSGFzaCA6ICIsdmFsdWUpOworCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzZW5kSW52aXRhdGlvbkhhc2ggOiAiLCAodHlwZW9mIHZhbHVlKSk7CisJCQkJaWYgKHR5cGVvZiB2YWx1ZSA9PSAib2JqZWN0Iil7CisJCQkJCWlmIChwYXJlbnQuZGlzcGxheSkgeworCQkJCQkJcGFyZW50LnNlbmQuc2V0QXR0cmlidXRlKCdlbmFibGVkJywgdHJ1ZSk7CisJCQkJCQlwYXJlbnQuX21lc3NhZ2Uuc2V0QXR0cmlidXRlKCdlbmFibGVkJywgdHJ1ZSk7CisJCQkJCQlwYXJlbnQuX3N1YmplY3Quc2V0QXR0cmlidXRlKCdlbmFibGVkJywgdHJ1ZSk7CisJCQkJCQlwYXJlbnQuX2xhbmd1YWdlcy5zZXRBdHRyaWJ1dGUoJ2VuYWJsZWQnLCB0cnVlKTsKKwkJCQkJCXBhcmVudC5jdXJyZW50SGFzaCA9IHZhbHVlLmhhc2g7CisJCQkJCQlwYXJlbnQuX3VybC5zZXRBdHRyaWJ1dGUoJ3RleHQnLCBwYXJlbnQuYmFzZVVybCArICI/aW52aXRhdGlvbkhhc2g9IiArIHBhcmVudC5jdXJyZW50SGFzaCArICImbGFuZ3VhZ2U9IiArIHBhcmVudC5fbGFuZ3VhZ2VzLmdldFZhbHVlKCkpOworCQkJCQl9IGVsc2UgeworCQkJCQkJcGFyZW50LmNsb3NlKCk7CisJCQkJCX0KKwkJCQl9IGVsc2UgeworCQkJCQluZXcgbHouZXJyb3JQb3B1cChjYW52YXMubWFpbl9jb250ZW50Ll9jb250ZW50LmlubmVyLHtlcnJvcjp2YWx1ZX0pOworCQkJCX0KKwkJCV1dPgorCQkJPC9oYW5kbGVyPgorCQk8L25ldFJlbW90ZUNhbGxIaWI+CisJPC9jbGFzcz4KKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvaW52aXRhdGlvbi9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvaW52aXRhdGlvbi9saWJyYXJ5Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjVjNGVlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9pbnZpdGF0aW9uL2xpYnJhcnkubHp4CkBAIC0wLDAgKzEsMjcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKyAgICA8aW5jbHVkZSBocmVmPSJhdXRvbG9hZGVyQmFyT25seS5sengiIC8+CisJPGluY2x1ZGUgaHJlZj0iaW52aXRhdGlvblF1aWNrTG9hZGVyLmx6eCIgLz4KKwk8aW5jbHVkZSBocmVmPSJpbnZpdGVNYWluV2luZG93Lmx6eCIgLz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbGlicmFyeS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDE5YTI3MAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbGlicmFyeS5sengKQEAgLTAsMCArMSwzNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKwkKKwk8aW5jbHVkZSBocmVmPSJjb25mZXJlbmNlLyIgLz4KKwk8aW5jbHVkZSBocmVmPSJjaGF0LyIgLz4KKwk8aW5jbHVkZSBocmVmPSJzZXR0aW5ncy8iIC8+CisJPGluY2x1ZGUgaHJlZj0iaW52aXRhdGlvbi8iIC8+CisgICAgPGluY2x1ZGUgaHJlZj0ibHpyZWNvcmRjb250ZW50LyIgLz4KKwk8aW5jbHVkZSBocmVmPSJkYXNoYm9hcmQvIiAvPgorCTxpbmNsdWRlIGhyZWY9Im1lZXRpbmdzLyIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJhZG1pbi8iIC8+CisgICAgPGluY2x1ZGUgaHJlZj0ic2lwaW50ZWdyYXRpb24vIiAvPgorICAgIDxpbmNsdWRlIGhyZWY9Imx6Y2FsZW5kYXIvIiAvPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6Y2FsZW5kYXIvY29tcG9udGVudHMvYWRkQXR0ZW5kZWUubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9semNhbGVuZGFyL2NvbXBvbnRlbnRzL2FkZEF0dGVuZGVlLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZTE5MmYxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9semNhbGVuZGFyL2NvbXBvbnRlbnRzL2FkZEF0dGVuZGVlLmx6eApAQCAtMCwwICsxLDIyNSBAQAorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisJCis8Y2xhc3MgbmFtZT0iYWRkQXR0ZW5kZWUiIGV4dGVuZHM9ImxhYmVsRXhwbG9yZXJCb3giIGxhYmVsaWQ9IjU3NCIKKwkgY2xvc2FibGU9InRydWUiIHdpZHRoPSI1MDAiIHg9IiRvbmNleyBwYXJlbnQud2lkdGgvMi10aGlzLndpZHRoLzIgKyAxMCB9IiAKKwkgeT0iMTEwIiBoZWlnaHQ9IjMxMCIgPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0iaXNTdXBlck1vZGVyYXRvciIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIi8+CisgICAgCisJPCEtLSByZXNpemVhYmxlPSJmYWxzZSIgLS0+CisJPGF0dHJpYnV0ZSBuYW1lPSJyZWZPYmoiIHZhbHVlPSJudWxsIi8+CisJCisJPG1ldGhvZCBuYW1lPSJjaG9vc2VBbmRDbG9zZSI+CisJCTwhW0NEQVRBWworCQkKKwkJCWlmICh0aGlzLl90dXJub3Zlcmxpc3QuX3NlbGVjdGVkID09IG51bGwpIHsKKwkJCQluZXcgbHoubGFiZWxlcnJvclBvcHVwKGNhbnZhcyx7ZXJyb3JsYWJlbGlkOjgxMX0pOworCQkJCXJldHVybjsKKwkJCX0KKwkJCQorCQkJdmFyIGpOYW1lVGltZVpvbmUgPSBjYW52YXMuak5hbWVUaW1lWm9uZTsKKwkJCQorCQkJaWYgKHRoaXMuX3R1cm5vdmVybGlzdC5fc2VsZWN0ZWQub21UaW1lWm9uZSAhPSBudWxsKSB7CisJCQkJak5hbWVUaW1lWm9uZSA9IHRoaXMuX3R1cm5vdmVybGlzdC5fc2VsZWN0ZWQub21UaW1lWm9uZS5qbmFtZTsKKwkJCX0KKwkJCQorICAgICAgICAgICAgdGhpcy5yZWZPYmouYWRkTGlzdEl0ZW0oCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl90dXJub3Zlcmxpc3QuX3NlbGVjdGVkLnVzZXJJZCwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl90dXJub3Zlcmxpc3QuX3NlbGVjdGVkLmZpcnN0bmFtZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLl90dXJub3Zlcmxpc3QuX3NlbGVjdGVkLmxhc3RuYW1lLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3R1cm5vdmVybGlzdC5fc2VsZWN0ZWQuZW1haWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgak5hbWVUaW1lWm9uZQorICAgICAgICAgICAgICAgICAgICAgICAgICApOworCisJCQkJCQkgICAgICAKKwkJCXRoaXMuY2xvc2UoKTsKKwkJXV0+CisJPC9tZXRob2Q+CisJCisJPHZpZXcgbmFtZT0iX3NlYXJjaCIgbGF5b3V0PSJheGlzOng7c3BhY2luZzoyO2luc2V0OjQiIHk9IjI0IiB4PSIwIj4KKwkJCisJCTxsYWJlbFRleHQgd2lkdGg9IjcwIiByZXNpemU9ImZhbHNlIiBsYWJlbGlkPSI4MDkiIC8+CisJCQorCQk8Y3VzdG9tRWRpdHRleHQgbmFtZT0iX2NyaXRlcmlhIiB3aWR0aD0iMjIwIiBoZWlnaHQ9IjIwIj4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9ua2V5dXAiIGFyZ3M9ImtleSI+CisgICAgICAgICAgICAgICAgPCFbQ0RBVEFbCisJICAgICAgICAgICAgICAgIC8vIDEzIGlzIHJldHVybgorCSAgICAgICAgICAgICAgICBpZiAoa2V5PT0xMykgeworCSAgICAgICAgICAgICAgICAJcGFyZW50LnBhcmVudC5fdHVybm92ZXJsaXN0LmdldEFsbFVzZXJCeVNlYXJjaFJhbmdlLmRvQ2FsbCgpOworCSAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgXV0+CisgICAgICAgICAgICA8L2hhbmRsZXI+CisJCTwvY3VzdG9tRWRpdHRleHQ+CisJCQorCQk8c2ltcGxlTGFiZWxCdXR0b24gbGFiZWxpZD0iNjI4IiB3aWR0aD0iMjAwIiA+CisJCQk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4JCQkKKyAgICAJCQkvL3BhcmVudC5wYXJlbnQuZ2V0VXNlckNvbnRhY3RzQnlTZWFyY2hCeUxpc3QuZG9DYWxsKCk7CisgICAgCQkJcGFyZW50LnBhcmVudC5fdHVybm92ZXJsaXN0LmdldEFsbFVzZXJCeVNlYXJjaFJhbmdlLmRvQ2FsbCgpOworCQkJPC9oYW5kbGVyPgorCQk8L3NpbXBsZUxhYmVsQnV0dG9uID4KKwkJCisJCQorCTwvdmlldz4KKwkKKwkKKwk8dHVybk92ZXJMaXN0IG5hbWU9Il90dXJub3Zlcmxpc3QiIHdpZHRoPSIkeyBwYXJlbnQud2lkdGggLSA0IH0iIAorICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIkb25jZXsgKHBhcmVudC5pc1N1cGVyTW9kZXJhdG9yKSA/IHBhcmVudC5oZWlnaHQtMTQ0IDogcGFyZW50LmhlaWdodC05NCB9IiB4PSIyIiB5PSI0NiIgCisJCW9yZGVyYnk9Imxhc3RuYW1lIiBzdGVwPSI1MCIgYXNjPSJmYWxzZSIgYmdjb2xvcj0iMHhGRkZGRkYiPgorCisJCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisJCQl0aGlzLmFkZEhlYWRlckl0ZW1PcmRlcmVkKDE0Niw3MCwidXNlcl9pZCIsZmFsc2UsZmFsc2UpOyAvL2xhYmVsaWQsd2lkdGgsb3JkZXJCeSxhc2MsaXNTZWxlY3RlZAorCQkJdGhpcy5hZGRIZWFkZXJJdGVtT3JkZXJlZCgxNDgsMTM2LCJmaXJzdG5hbWUiLGZhbHNlLGZhbHNlKTsKKwkJCXRoaXMuYWRkSGVhZGVySXRlbU9yZGVyZWQoMTQ5LDEzNiwibGFzdG5hbWUiLGZhbHNlLHRydWUpOworCQkJdGhpcy5hZGRIZWFkZXJJdGVtT3JkZXJlZCgxMzcsMTM4LCJhZHJlc3Nlcy5lbWFpbCIsZmFsc2UsZmFsc2UpOworCQkJdGhpcy5nZXRBbGxVc2VyQnlTZWFyY2hSYW5nZS5kb0NhbGwoKTsKKwkJPC9oYW5kbGVyPgorCQkKKwkJPGhhbmRsZXIgbmFtZT0ib25VcGRhdGVPcmRlciIgYXJncz0icmVmT2JqIj4KKwkJCXRoaXMuZ2V0QWxsVXNlckJ5U2VhcmNoUmFuZ2UuZG9DYWxsKCk7CisJCTwvaGFuZGxlcj4KKwkJCisJCTxoYW5kbGVyIG5hbWU9Im9uY2FsbG5leHQiID4KKwkJCXRoaXMuZ2V0QWxsVXNlckJ5U2VhcmNoUmFuZ2UuZG9DYWxsKCk7CisJCTwvaGFuZGxlcj4KKwkJCisJCTxoYW5kbGVyIG5hbWU9Im9uY2FsbHByZSIgPgkJCisJCQl0aGlzLmdldEFsbFVzZXJCeVNlYXJjaFJhbmdlLmRvQ2FsbCgpOworCQk8L2hhbmRsZXI+CisJCQorCQk8aGFuZGxlciBuYW1lPSJvbmNsaWNrZWRJdGVtIiBhcmdzPSJvYmoiPgorCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9uY2xpY2tlZEl0ZW0iLG9iaixvYmoub2JqKTsKKwkJPC9oYW5kbGVyPgorCQkKKwkJPGhhbmRsZXIgbmFtZT0ib25kYmxjbGlja2VkSXRlbSIgYXJncz0ib2JqIj4KKwkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbmRibGNsaWNrZWRJdGVtIixvYmosb2JqLm9iaik7CisJCQlwYXJlbnQuY2hvb3NlQW5kQ2xvc2UoKTsKKwkJPC9oYW5kbGVyPgorCQkKKwkJPCEtLQorCQkgICBHZXQgYWxsIHVzZXJzIGJ5IHJhbmdlIGFuZCBwYXJzZSByZXN1bHQgTGlzdCBpbnRvIFZpZXcKKwkJIC0tPgorCSAJPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iZ2V0QWxsVXNlckJ5U2VhcmNoUmFuZ2UiIGZ1bmNuYW1lPSJ1c2Vyc2VydmljZS5nZXRBbGxVc2VyQnlTZWFyY2hSYW5nZSIgCisJICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiBzaG93TG9hZGluZz0iZmFsc2UiPgorCSAgICAgICAgCisJICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC5wYXJlbnQuX3NlYXJjaC5fY3JpdGVyaWEuZ2V0VGV4dCgpOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisJICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQuc3RhcnQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC5zdGVwOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisJICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQub3JkZXJieTs8L21ldGhvZD48L25ldHBhcmFtPgorCSAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50LmFzYzs8L21ldGhvZD48L25ldHBhcmFtPgorCSAgICAgICAgCisJICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlTGlzdCI+CisJICAgICAgICAgICAgPCFbQ0RBVEFbCisJCSAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJnZXRBbGxVc2VyQnlTZWFyY2hSYW5nZSAiLHZhbHVlTGlzdCk7CisJCSAgICAgICAgICAgIHRoaXMucGFyZW50LmluaXRWYWx1ZXModmFsdWVMaXN0LnJlY29yZHMpOworCQkgICAgCQl0aGlzLnBhcmVudC5yZW5kZXJDb250ZW50KHZhbHVlTGlzdC5yZXN1bHQpOworCSAgICAgICAgICAgIF1dPgorCSAgICAgICAgPC9oYW5kbGVyPgorCSAgICA8L25ldFJlbW90ZUNhbGxIaWI+CQkJCisJICAgIAorCSAgICA8bWV0aG9kIG5hbWU9InJlbmRlckNvbnRlbnQiIGFyZ3M9InJlY29yZHMiPgorCSAgICAJPCFbQ0RBVEFbCisJCSAgICAJdGhpcy5jbGVhckxpc3QoKTsKKwkJICAgIAlmb3IgKHZhciBpPTA7aTxyZWNvcmRzLmxlbmd0aDtpKyspeworCQkgICAgCQluZXcgbHouYXR0ZW5kZUl0ZW1MaXN0SXRlbSh0aGlzLl9pbm5lcmxpc3QuX2lubi5faW5uLHsKKwkJCSAgICAJCQkJCW9iajpyZWNvcmRzW2ldLAorCQkJICAgIAkJCQkJdXNlcklkOnJlY29yZHNbaV0udXNlcl9pZCwKKwkJCSAgICAJCQkJCWxvZ2luOnJlY29yZHNbaV0ubG9naW4sCisJCQkgICAgCQkJCQllbWFpbDpyZWNvcmRzW2ldLmFkcmVzc2VzLmVtYWlsLAorCQkJICAgIAkJCQkJZmlyc3RuYW1lOnJlY29yZHNbaV0uZmlyc3RuYW1lLAorCQkJICAgIAkJCQkJbGFzdG5hbWU6cmVjb3Jkc1tpXS5sYXN0bmFtZSwKKwkJCSAgICAJCQkJCW9tVGltZVpvbmU6cmVjb3Jkc1tpXS5vbVRpbWVab25lCisJCSAgICAJCQkJCX0pOworCQkgICAgCX0KKwkJICAgIAl0aGlzLnNlbmRJbml0aWFsV2lkdGhVcGRhdGUoKTsKKwkgICAgCV1dPgorCSAgICA8L21ldGhvZD4KKworCTwvdHVybk92ZXJMaXN0PgorICAgIAorICAgIDx2aWV3IHJlc291cmNlPSJtZXNzYWdlYm94X2luZm9fcnNjIiB4PSIxMCIgCisgICAgICAgICAgeT0iJG9uY2V7IHBhcmVudC5oZWlnaHQtOTYgfSIKKyAgICAgICAgICB2aXNpYmlsaXR5PSIkb25jZXsgKCFwYXJlbnQuaXNTdXBlck1vZGVyYXRvcikgPyAnaGlkZGVuJyA6ICd2aXNpYmxlJyB9IiAvPgorICAgIAorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iODI0IiB4PSIzNCIgeT0iJG9uY2V7IHBhcmVudC5oZWlnaHQtOTQgfSIgbXVsdGlsaW5lPSJ0cnVlIiAKKyAgICAgICAgICAgICAgIHZpc2liaWxpdHk9IiRvbmNleyAoIXBhcmVudC5pc1N1cGVyTW9kZXJhdG9yKSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnIH0iIAorICAgICAgICAgICAgICAgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGgtNjAgfSIgLz4KKyAgICAKKyAgICA8bGFiZWxDaGVja2JveCB4PSI0IiB5PSIkb25jZXsgcGFyZW50LmhlaWdodC02MyB9IiAKKyAgICAgICAgICAgdmlzaWJpbGl0eT0iJG9uY2V7ICghcGFyZW50LmlzU3VwZXJNb2RlcmF0b3IpID8gJ2hpZGRlbicgOiAndmlzaWJsZScgfSIKKyAgICAgICAgICAgZm9udHNpemU9IjExIiBuYW1lPSJfc2F2ZWxvZ2luZGF0YSIgbGFiZWxpZD0iODI1IiAvPgorCQorCTxzaW1wbGVMYWJlbEJ1dHRvbiBsYWJlbGlkPSI2MjkiIHZpc2liaWxpdHk9IiRvbmNleyAocGFyZW50LmlzU3VwZXJNb2RlcmF0b3IpID8gJ2hpZGRlbicgOiAndmlzaWJsZScgfSIKKyAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjI0MCIgeD0iNCIgeT0iJG9uY2V7IHBhcmVudC5oZWlnaHQgLSAyNCB9Ij4KKwkJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisJCQk8IVtDREFUQVsJCQkKKyAgICAJCQkvL3BhcmVudC5wYXJlbnQuZ2V0VXNlckNvbnRhY3RzQnlTZWFyY2hCeUxpc3QuZG9DYWxsKCk7CisgICAgCQkJLy9wYXJlbnQucGFyZW50LmdldEFsbFVzZXJCeVNlYXJjaFJhbmdlLmRvQ2FsbCgpOworICAgIAkJCW5ldyBsei5hZGRFeHRlcm5hbEF0dGVuZGVlKHBhcmVudC5wYXJlbnQsIHsKKyAgICAgICAgCQkJICAgICAgICAgcmVmT2JqOnBhcmVudC5yZWZPYmosCisgICAgICAgIAkJCSAgICAgICAgIHBhcmVudFNlYXJjaDogcGFyZW50LCAKKyAgICAgICAgCQkJICAgICAgICAgeDpwYXJlbnQueCtwYXJlbnQud2lkdGgvMiwgCisgICAgICAgIAkJCSAgICAgICAgIHk6cGFyZW50LnkrNDAKKyAgICAJCQkgICAgICAgICB9KTsKKyAgICAgICAgICAgIF1dPgorCQk8L2hhbmRsZXI+CisJPC9zaW1wbGVMYWJlbEJ1dHRvbiA+CisJCisJPHNpbXBsZUxhYmVsQnV0dG9uIGxhYmVsaWQ9IjgxMCIgeD0iJG9uY2V7IHBhcmVudC53aWR0aCAtIDI1MCB9IgorICAgICAgICAgICAgICAgICAgICAgICB5PSIkb25jZXsgcGFyZW50LmhlaWdodCAtIDI0IH0iIHdpZHRoPSIxMjAiPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgIC8vcGFyZW50LnBhcmVudC5wYXJlbnQuZGVsVGVybWluLmRvQ2FsbCgpOworICAgICAgICAgICAgcGFyZW50LmNob29zZUFuZENsb3NlKCk7CisgICAgICAgIDwvaGFuZGxlcj4gICAgIAorICAgIDwvc2ltcGxlTGFiZWxCdXR0b24+ICAgIAkKKwkgICAgIAorCSAgICAgCisgICAgPHNpbXBsZUxhYmVsQnV0dG9uIGxhYmVsaWQ9IjY5NyIgeD0iJG9uY2V7IHBhcmVudC53aWR0aCAtIDEyNSB9IgorICAgICAgICAgICAgICAgICAgICAgICB5PSIkb25jZXsgcGFyZW50LmhlaWdodCAtIDI0IH0iIHdpZHRoPSIxMjAiPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgIC8vcGFyZW50LnBhcmVudC5wYXJlbnQuZGVsVGVybWluLmRvQ2FsbCgpOworICAgICAgICAgICAgcGFyZW50LmNsb3NlKCk7CisgICAgICAgIDwvaGFuZGxlcj4gICAgIAorICAgIDwvc2ltcGxlTGFiZWxCdXR0b24+ICAgIAkKKwkgICAgIAorCisKKzwvY2xhc3M+CisKKzxjbGFzcyBuYW1lPSJhdHRlbmRlSXRlbUxpc3RJdGVtIiBleHRlbmRzPSJiYXNlQ29udGVudExpc3RJdGVtIj4gCisgICAgCisJPGF0dHJpYnV0ZSBuYW1lPSJ1c2VySWQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+IAorCTxhdHRyaWJ1dGUgbmFtZT0ibG9naW4iIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwk8YXR0cmlidXRlIG5hbWU9ImZpcnN0bmFtZSIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0ibGFzdG5hbWUiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwk8YXR0cmlidXRlIG5hbWU9ImVtYWlsIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJvbVRpbWVab25lIiB2YWx1ZT0ibnVsbCIgLz4KKwkKKwk8dHVybk92ZXJUZXh0SXRlbSB0ZXh0PSIkb25jZXsgcGFyZW50LnVzZXJJZCB9IiB3aWR0aD0iNjAiIC8+CisJPHR1cm5PdmVyVGV4dEl0ZW0gdGV4dD0iJG9uY2V7IHBhcmVudC5maXJzdG5hbWUgfSIgd2lkdGg9IjEwMCIgLz4KKwk8dHVybk92ZXJUZXh0SXRlbSB0ZXh0PSIkb25jZXsgcGFyZW50Lmxhc3RuYW1lIH0iIHdpZHRoPSIxMzIiIC8+CisJPHR1cm5PdmVyVGV4dEl0ZW0gdGV4dD0iJG9uY2V7IHBhcmVudC5lbWFpbCB9IiB3aWR0aD0iMTMyIiAvPgorCQorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9semNhbGVuZGFyL2NvbXBvbnRlbnRzL2FkZEV4dGVybmFsQXR0ZW5kZWUubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9semNhbGVuZGFyL2NvbXBvbnRlbnRzL2FkZEV4dGVybmFsQXR0ZW5kZWUubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0MDA4YjAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6Y2FsZW5kYXIvY29tcG9udGVudHMvYWRkRXh0ZXJuYWxBdHRlbmRlZS5sengKQEAgLTAsMCArMSwxNDMgQEAKKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCQorPGNsYXNzIG5hbWU9ImFkZEV4dGVybmFsQXR0ZW5kZWUiIGV4dGVuZHM9ImxhYmVsRXhwbG9yZXJCb3giIHdpZHRoPSI0MjAiIGhlaWdodD0iMjQwIgorCSAgIGNsb3NhYmxlPSJ0cnVlIiBsYWJlbGlkPSI2MjkiIHg9IiRvbmNleyBwYXJlbnQud2lkdGgvMi10aGlzLndpZHRoLzIgKyAxMCB9Ij4KKwkKKwk8YXR0cmlidXRlIG5hbWU9InJlZk9iaiIgdmFsdWU9Im51bGwiLz4KKwk8YXR0cmlidXRlIG5hbWU9InBhcmVudFNlYXJjaCIgdmFsdWU9Im51bGwiLz4KKwkKKwk8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorCQl0aGlzLl90aW1lWm9uZS5zZWxlY3RJdGVtKGNhbnZhcy5qTmFtZVRpbWVab25lKTsKKwk8L2hhbmRsZXI+CisJCQorCTxsYWJlbFRleHQgbGFiZWxpZD0iNjMwIiB5PSIyNCIgeD0iMiIgLz4KKwk8Y3VzdG9tRWRpdHRleHQgbmFtZT0iZmlyc3RuYW1lIiB4PSIxMjAiIHdpZHRoPSIyNzAiIHk9IjI0IiAvPgorCQorCTxsYWJlbFRleHQgbGFiZWxpZD0iNjMxIiB5PSI1NCIgeD0iMiIgLz4KKwk8Y3VzdG9tRWRpdHRleHQgbmFtZT0ibGFzdG5hbWUiIHg9IjEyMCIgd2lkdGg9IjI3MCIgeT0iNTQiIC8+CisJCisJPGxhYmVsVGV4dCBsYWJlbGlkPSI2MzIiIHk9Ijg0IiB4PSIyIiAvPgorCTxjdXN0b21FZGl0dGV4dCBuYW1lPSJlbWFpbCIgeD0iMTIwIiB3aWR0aD0iMjcwIiB5PSI4NCI+CisJCTxoYW5kbGVyIG5hbWU9Im9udGV4dCIgYXJncz0idCI+CisJCTwhW0NEQVRBWworCQkJdmFyIHNpbmdsZUFkZHJlc3MgPSB0LmluZGV4T2YoIiwiKSA8IDA7CisJCQkKKwkJCWlmIChwYXJlbnQuZmlyc3RuYW1lLmVuYWJsZWQgIT0gc2luZ2xlQWRkcmVzcykgeworCQkJCXBhcmVudC5maXJzdG5hbWUuc2V0QXR0cmlidXRlKCdlbmFibGVkJywgc2luZ2xlQWRkcmVzcyk7CisJCQkJcGFyZW50Lmxhc3RuYW1lLnNldEF0dHJpYnV0ZSgnZW5hYmxlZCcsIHNpbmdsZUFkZHJlc3MpOworCQkJfQorCQldXT4KKwkJPC9oYW5kbGVyPgorCTwvY3VzdG9tRWRpdHRleHQ+CisJCisJPHZpZXcgcmVzb3VyY2U9Im1lc3NhZ2Vib3hfaW5mb19yc2MiIHg9IjYiIHk9IjExNCIgCisJCXdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgc3RyZXRjaGVzPSJib3RoIiAvPgorCTxsYWJlbFRleHQgbGFiZWxpZD0iMTUxMCIgeD0iMjQiIHk9IjExMCIgbXVsdGlsaW5lPSJ0cnVlIiB3aWR0aD0iMzUwIiAvPgorCQorCTxsYWJlbFRleHQgbGFiZWxpZD0iMTE0MyIgd2lkdGg9IjIwMCIgeT0iMTcwIiB4PSIyIiAvPgorICAgICA8cmVzZXRDb21ib2JveCBuYW1lPSJfdGltZVpvbmUiIGVkaXRhYmxlPSJmYWxzZSIgeT0iMTcwIiB3aWR0aD0iMjcwIiB4PSIxMjAiCisgICAgIAkJCSAgIGZvbnRzaXplPSIxMSIgc3R5bGU9ImNvbXBvbmVudFN0eWxlIj4KKyAgICAgCTxhdHRyaWJ1dGUgbmFtZT0ic2VsZWN0aW9uQWN0aXZlIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iLz4KKyAgICAgCTxsYWJlbGRUZXh0TGlzdEl0ZW0gZGF0YXBhdGg9InRpbWVab25lU2V0Oi9pdGVtIiB0ZXh0PSIkcGF0aHsgJ2Zyb250RW5kTGFiZWwvdGV4dCgpJyB9IiAKKyAgICAgICAgICAgIHZhbHVlPSIkcGF0aHsgJ2puYW1lL3RleHQoKScgfSIgLz4KKyAgICAgPC9yZXNldENvbWJvYm94PiAgCQorCQorCTxzaW1wbGVMYWJlbEJ1dHRvbiBuYW1lPSJfb2siIGxhYmVsaWQ9IjMzMyIgeD0iJG9uY2V7IHBhcmVudC53aWR0aC0yMjAgfSIKKwkJCQkJICAgd2lkdGg9IjEwMCIgeT0iJG9uY2V7IHBhcmVudC5oZWlnaHQgLSAzMCB9IiA+CisJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorCQk8IVtDREFUQVsKKwkJCXZhciBlbWwgPSBwYXJlbnQuZW1haWxbInRleHQiXTsKKwkJCS8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImVtbDogIiwgZW1sKTsKKwkJCWlmIChlbWwuaW5kZXhPZigiLCIpID4gLTEpIHsKKwkJCQl2YXIgYWRkcmVzc2VzID0gZW1sLnNwbGl0KCIsIik7CisJCQkJZm9yICh2YXIgaSA9IDA7IGkgPCBhZGRyZXNzZXMubGVuZ3RoOyArK2kpIHsKKwkJCQkJdmFyIGZpcnN0ID0gIiIsIGVtYWlsID0gIiIsIGxhc3QgPSAiIiwgYWRkciA9IHBhcmVudC5yZXBsYWNlQWxsKHBhcmVudC5yZXBsYWNlQWxsKGFkZHJlc3Nlc1tpXSwgIiciLCAiIiksICJcIiIsICIiKTsKKwkJCQkJLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiYWRkcjogIiwgYWRkcik7CisJCQkJCXZhciBpZHgxID0gYWRkci5pbmRleE9mKCI8IiksIGlkeDIgPSBhZGRyLmluZGV4T2YoIj4iKTsKKwkJCQkJaWYgKGlkeDEgPiAtMSAmJiBpZHgyID4gLTEgJiYgaWR4MiA+IGlkeDEpIHsKKwkJCQkJCWVtYWlsID0gcGFyZW50LnRyaW0oYWRkci5zdWJzdHJpbmcoaWR4MSArIDEsIGlkeDIpKTsKKwkJCQkJCXZhciBzID0gcGFyZW50LnRyaW0oYWRkci5zdWJzdHJpbmcoMCwgaWR4MSkpOworCQkJCQkJdmFyIGlkeCA9IHMuaW5kZXhPZigiICIpOworCQkJCQkJaWYgKGlkeCA+IC0xKSB7CisJCQkJCQkJZmlyc3QgPSBzLnN1YnN0cmluZygwLCBpZHgpOyAKKwkJCQkJCQlsYXN0ID0gcy5zdWJzdHJpbmcoaWR4ICsgMSk7CisJCQkJCQl9IGVsc2UgeworCQkJCQkJCWZpcnN0ID0gczsKKwkJCQkJCX0KKwkJCQkJCS8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInMsIGlkeDogIiwgcywgaWR4KTsKKwkJCQkJfSBlbHNlIHsKKwkJCQkJCWVtYWlsID0gYWRkcjsKKwkJCQkJfQorCQkJCQlwYXJlbnQucmVmT2JqLmFkZExpc3RJdGVtKDAsIGZpcnN0LCBsYXN0LCBlbWFpbCwgMCwgcGFyZW50Ll90aW1lWm9uZS5nZXRWYWx1ZSgpKTsKKwkJCQkJLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiW2ZpcnN0LCBsYXN0LCBlbWFpbF06ICIsIGFkZHJlc3Nlc1tpXSwgaWR4MSwgaWR4MiwgZmlyc3QsIGxhc3QsIGVtYWlsKTsKKwkJCQl9CisJCQl9IGVsc2UgeworCQkJCXBhcmVudC5yZWZPYmouYWRkTGlzdEl0ZW0oCisJCQkJCTAsIAorCQkJCQlwYXJlbnQuZmlyc3RuYW1lWyJ0ZXh0Il0sIAorCQkJCQlwYXJlbnQubGFzdG5hbWVbInRleHQiXSwgCisJCQkJCWVtbCwKKwkJCQkJMCwKKwkJCQkJcGFyZW50Ll90aW1lWm9uZS5nZXRWYWx1ZSgpCisJCQkJKTsKKwkJCQkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJfaW5uZXJsaXN0OiAiLCBwYXJlbnQucGFyZW50LnBhcmVudC5yZWZPYmoudGVybWluT2JqUmVmLl9saXN0ZS5faW5uZXJsaXN0KTsKKwkJCX0KKwkJCXBhcmVudC5maXJzdG5hbWU9IiI7CisJCQlwYXJlbnQubGFzdG5hbWU9IiI7CisJCQlwYXJlbnQuZW1haWw9IiI7CisJCQlwYXJlbnQuY2xvc2UoKTsKKwkJCWlmIChwYXJlbnQucGFyZW50U2VhcmNoICE9IG51bGwpIHsKKwkJCQlwYXJlbnQucGFyZW50U2VhcmNoLmNsb3NlKCk7CisJCQl9CisJCQkvL3BhcmVudC5wYXJlbnQucGFyZW50LnJlZk9iai5jbG9zZSgpOworCQkJLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidXNlcklkICBzZWFyY2g6ICIscGFyZW50LnBhcmVudC5wYXJlbnQudXNlcklkKTsKKwkJXV0+CisJCTwvaGFuZGxlcj4KKwk8L3NpbXBsZUxhYmVsQnV0dG9uPgorCQorCTxzaW1wbGVMYWJlbEJ1dHRvbiAgbmFtZT0iX2NhbmNlbCIgbGFiZWxpZD0iMjUiIHg9IiRvbmNleyBwYXJlbnQud2lkdGgtMTEwIH0iCisJCQkJCSAgIHdpZHRoPSIxMDAiIHk9IiRvbmNleyBwYXJlbnQuaGVpZ2h0IC0gMzAgfSI+CisJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorCQkJcGFyZW50LmNsb3NlKCk7CisJCTwvaGFuZGxlcj4KKwk8L3NpbXBsZUxhYmVsQnV0dG9uPgorCQorCTxtZXRob2QgbmFtZT0idHJpbSIgYXJncz0icyI+CisJPCFbQ0RBVEFbCisJCXZhciBzdHIgPSAiIiArIHMsIGJlZ2luID0gMCwgZW5kID0gc3RyLmxlbmd0aCAtIDE7CisJCXdoaWxlIChiZWdpbiA8PSBlbmQgJiYgc3RyLmNoYXJDb2RlQXQoYmVnaW4pID09IDMyKSB7ICsrYmVnaW47IH0KKwkJd2hpbGUgKGVuZCA+IGJlZ2luICYmIHN0ci5jaGFyQ29kZUF0KGVuZCkgPT0gMzIpIHsgLS1lbmQ7IH0KKwkJcmV0dXJuIHN0ci5zdWJzdHIoYmVnaW4sIGVuZCAtIGJlZ2luICsgMSk7CisJXV0+CisJPC9tZXRob2Q+CisJCisJPG1ldGhvZCBuYW1lPSJyZXBsYWNlQWxsIiBhcmdzPSJzLGYsciI+CisJPCFbQ0RBVEFbCisJCXZhciBzdHIgPSBzOworCQl3aGlsZSAoc3RyLmluZGV4T2YoZikgPiAtMSkgeyBzdHIgPSBzdHIucmVwbGFjZShmLCByKTsgfQorCQlyZXR1cm4gc3RyOworCV1dPgorCTwvbWV0aG9kPgorCQorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9semNhbGVuZGFyL2NvbXBvbnRlbnRzL2F0dGVuZGVlTGlzdEl0ZW0ubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9semNhbGVuZGFyL2NvbXBvbnRlbnRzL2F0dGVuZGVlTGlzdEl0ZW0ubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExMTZmOTEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6Y2FsZW5kYXIvY29tcG9udGVudHMvYXR0ZW5kZWVMaXN0SXRlbS5sengKQEAgLTAsMCArMSw1NSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+DQorPCEtLQ0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAgDQorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICAgIAkgIA0KKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICB1bmRlciB0aGUgTGljZW5zZS4NCisgIA0KKy0tPg0KKzxsaWJyYXJ5Pg0KKw0KKwk8Y2xhc3MgbmFtZT0iYXR0ZW5kZWVMaXN0SXRlbSIgZXh0ZW5kcz0idmlldyIgY2xpY2thYmxlPSJ0cnVlIiBoZWlnaHQ9IjE5Ij4NCisJCQ0KKwkJPGF0dHJpYnV0ZSBuYW1lPSJ1c2VySWQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+DQorCQk8YXR0cmlidXRlIG5hbWU9ImZpcnN0TmFtZSIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPg0KKwkJPGF0dHJpYnV0ZSBuYW1lPSJtZW1iZXJJZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4NCisJCTxhdHRyaWJ1dGUgbmFtZT0ibGFzdE5hbWUiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4NCisJCTxhdHRyaWJ1dGUgbmFtZT0iZW1haWwiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4NCisJCTxhdHRyaWJ1dGUgbmFtZT0iak5hbWVUaW1lWm9uZSIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPg0KKwkJDQorCQk8dGV4dCBuYW1lPSJtZW1iZXJUZXh0IiB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCAtIDE4IH0iIC8+DQorCQkNCisJCTxtaW5pSWNvbnMgeD0iJG9uY2V7IHBhcmVudC53aWR0aCAtIDE2IH0iIHk9IjIiIHJlc291cmNlPSJjYWxlbmRhcl9kZWxldGVfYnV0dG9uIiBzaG93aGFuZGN1cnNvcj0idHJ1ZSINCisJCQkJICAgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ij4NCisJCQk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4NCisJCQkJbmV3IGx6LmNvbmZpcm1hdGlvblNpbmdsZShjYW52YXMsew0KKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgIGxhYmVsaWRlcnJvcjo4MzIsDQorCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgcmVmT2JqOnRoaXMsDQorCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgc2hvd0NoZWNrQm94OmZhbHNlDQorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICB9KTsNCisJCQk8L2hhbmRsZXI+DQorCQkJPG1ldGhvZCBuYW1lPSJzZW5kQ29uZmlybWF0aW9uIiBhcmdzPSJ5ZXNubyIgPg0KKwkgICAgICAgICAgICBwYXJlbnQuZGVzdHJveSgpOw0KKwkgICAgICAgIDwvbWV0aG9kPg0KKwkJCTxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iODE0IiAvPg0KKwkJPC9taW5pSWNvbnM+DQorCQkNCisJCTx2aWV3IHk9IjE4IiBoZWlnaHQ9IjEiIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoIH0iIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignc2Vjb25kQm9yZGVyQ29sb3InKSB9IiAvPg0KKwkJDQorCQk8bGFiZWxUb29sdGlwIHRleHQ9IiRvbmNleyBjYW52YXMuZ2V0TGFiZWxOYW1lKDExNDMpICsgJyAnICsgcGFyZW50LmpOYW1lVGltZVpvbmUgfSIgLz4NCisJCQ0KKwk8L2NsYXNzPg0KKw0KKzwvbGlicmFyeT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6Y2FsZW5kYXIvY29tcG9udGVudHMvbGF5b3V0cy9kcmFnRXZlbnQubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9semNhbGVuZGFyL2NvbXBvbnRlbnRzL2xheW91dHMvZHJhZ0V2ZW50Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDYxMzc1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9semNhbGVuZGFyL2NvbXBvbnRlbnRzL2xheW91dHMvZHJhZ0V2ZW50Lmx6eApAQCAtMCwwICsxLDMxNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+DQorPCEtLQ0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAgDQorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICAgIAkgIA0KKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICB1bmRlciB0aGUgTGljZW5zZS4NCisgIA0KKy0tPg0KKzxsaWJyYXJ5Pg0KKw0KKwk8Y2xhc3MgbmFtZT0iZHJhZ0V2ZW50IiBleHRlbmRzPSJ2aWV3IiBvcGFjaXR5PSIwLjYiPg0KKwkNCisJCTwhLS0tDQorCQkJUmVmcmVuY2UgdG8gdGhlIGN1cnJlbnQgbW92aW5nIGV2ZW50IGluIHRoZSBjYWxlbmRhcg0KKwkJIC0tPg0KKwkJPGF0dHJpYnV0ZSBuYW1lPSJldmVudFJlZiIgdmFsdWU9Im51bGwiIC8+DQorCQkNCisJCTwhLS0tDQorCQkJQGtleXdvcmRzIHByaXZhdGUNCisJCSAtLT4NCisJCTxhdHRyaWJ1dGUgbmFtZT0idGltZVRleHQiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4NCisJCQ0KKwkJPCEtLS0NCisJCQlAa2V5d29yZHMgcHJpdmF0ZQ0KKwkJIC0tPg0KKwkJPGF0dHJpYnV0ZSBuYW1lPSJ0aXRsZVRleHQiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4NCisJCQ0KKwkJPCEtLS0NCisJCQlJZiBmYWxzZSB0aGUgdGltZSBwYXJ0IGlzIGhpZGRlbg0KKwkJIC0tPg0KKwkJPGF0dHJpYnV0ZSBuYW1lPSJzaG93VGltZSIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+DQorCQkNCisJCTwhLS0tDQorCQkJTW92ZSB4LHkgdG8gcmlnaHQgcG9zaXRpb24gaW4gZGF5dmlldw0KKwkJIC0tPg0KKwkJPGF0dHJpYnV0ZSBuYW1lPSJmaXhUb1Bvc2l0aW9uSW5DYWxlbmRhciIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+DQorCQkNCisJCTwhLS0tDQorCQkJUmVmZXJlbmNlIHRvIGN1cnJlbnQgZ3JpZCB2aWV3IGNsYXNzcm9vdA0KKwkJIC0tPg0KKwkJPGF0dHJpYnV0ZSBuYW1lPSJjYWxlbmRhclZpZXdSZWYiIHZhbHVlPSJudWxsIiAvPg0KKwkJDQorCQk8IS0tLQ0KKwkJCWlmIHRydWUgb25seSB0aGUgZGF0ZSBwYXJ0IGlzIHVwZGF0ZWQgbm90IHRoZSB0aW1lIHBhcnQgb2YgdGhlIGNhbGVuZGFyIGV2ZW50DQorCQkJd2hlbiBtb3ZpbmcgdG8gYW5vdGhlciBkYXRlDQorCQkgLS0+DQorCQk8YXR0cmlidXRlIG5hbWU9ImlzTW9udGhNb3ZlIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+DQorCQkNCisJCTwhLS0tDQorCQkJaWYgdHJ1ZSBpdCBjYW5ub3QgYmUgZHJhZ2dlZCB0byBhbm90aGVyIGRhdGUsIA0KKwkJCW9ubHkgdGhlIGVuZCBwb3NpdGlvbiBhbmQgaXRzIGhlaWdodCB3aWxsIGNoYW5nZQ0KKwkJIC0tPg0KKwkJPGF0dHJpYnV0ZSBuYW1lPSJkcmFnRW5kT25seSIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPg0KKwkJDQorCQk8IS0tLQ0KKwkJCUBrZXl3b3JkcyBwcml2YXRlDQorCQkgLS0+DQorCQk8YXR0cmlidXRlIG5hbWU9InVwZGF0ZU9iaiIgdmFsdWU9Im51bGwiIC8+DQorCQkNCisJCTwhLS0tDQorCQkJQGtleXdvcmRzIHByaXZhdGUNCisJCSAtLT4NCisJCTxhdHRyaWJ1dGUgbmFtZT0iYmFzZVVybCIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPg0KKwkJDQorCQk8IS0tLQ0KKwkJCUBrZXl3b3JkcyBwcml2YXRlDQorCQkgLS0+DQorCQk8YXR0cmlidXRlIG5hbWU9InN0YXJ0aGVpZ2h0IiB2YWx1ZT0iLTEiIHR5cGU9Im51bWJlciIgLz4NCisJCQ0KKwkJPGhhbmRsZXIgbmFtZT0ib254IiBhcmdzPSJ4Ij4NCisJCQlpZiAodGhpcy5maXhUb1Bvc2l0aW9uSW5DYWxlbmRhcikgew0KKwkJCQl0aGlzLmZpeFRvUG9zaXRpb24oKTsNCisJCQl9DQorCQk8L2hhbmRsZXI+DQorCQkNCisJCTxoYW5kbGVyIG5hbWU9Im9ueSIgYXJncz0ieSI+DQorCQkJaWYgKHRoaXMuZml4VG9Qb3NpdGlvbkluQ2FsZW5kYXIpIHsNCisJCQkJdGhpcy5maXhUb1Bvc2l0aW9uKCk7DQorCQkJfQ0KKwkJPC9oYW5kbGVyPg0KKwkJDQorCQk8IS0tIA0KKwkJCVNjcm9sbCBjYWxlbmRhciBkYXkgdmlldyB0byBwb3NpdGlvbiBpZiBuZWNlc3NhcnkgKGJhc2VkIG9uIG1vdXNlIHBvc2l0aW9uLCBub3QgY2FsZW5kYXIgZXZlbnQgcG9zaXRpb24hKS4NCisJCQlUaGlzIG1ha2VzIG9ubHkgc2Vuc2UgaWYgZml4VG9Qb3NpdGlvbkluQ2FsZW5kYXIgaXMgdHJ1ZSAoZml4VG9Qb3NpdGlvbkluQ2FsZW5kYXIgb25seSB0cnVlIGlmIHdlIGFyZSBpbiANCisJCQlhIGRheSBvciB3ZWVrIHZpZXcgd2hlcmUgdGhlcmUgaXMgYWN0dWFsbHkgc29tZXRoaW5nIHRvIHNjcm9sbCkuDQorCQkgLS0+DQorCQk8aGFuZGxlciBuYW1lPSJvbmlkbGUiIHJlZmVyZW5jZT0iTHpJZGxlU2VydmljZS5MeklkbGUiPg0KKwkJCTwhW0NEQVRBWw0KKwkJCQlpZiAoIXRoaXMuZml4VG9Qb3NpdGlvbkluQ2FsZW5kYXIpIHsNCisJCQkJCXJldHVybjsNCisJCQkJfQ0KKwkJCQl2YXIgcmVmZXJlbmNlVG9TY3JvbGxWaWV3ID0gcGFyZW50LnBhcmVudC5wYXJlbnQuX2dyaWQuX2JnQXJlYTsNCisJCQkJLy9TY3JvbGwgY2FsZW5kYXIgZGF5IHZpZXcgdG8gcG9zaXRpb24gaWYgbmVjZXNzYXJ5DQorCQkJCXZhciB0UGFyZW50U2Nyb2xseSA9IHJlZmVyZW5jZVRvU2Nyb2xsVmlldy5nZXRNb3VzZSgieSIpOw0KKwkJCQlpZiAodFBhcmVudFNjcm9sbHkgPCAwKSB7DQorCQkJCQlpZiAocmVmZXJlbmNlVG9TY3JvbGxWaWV3Ll9zY3JvbGxBcmVhLnkgPCAwKSB7DQorCQkJCQkJaWYgKHJlZmVyZW5jZVRvU2Nyb2xsVmlldy5fc2Nyb2xsQXJlYS55KzIwIDwgMCkgew0KKwkJCQkJCQlyZWZlcmVuY2VUb1Njcm9sbFZpZXcuX3Njcm9sbEFyZWEuc2V0QXR0cmlidXRlKCJ5IixyZWZlcmVuY2VUb1Njcm9sbFZpZXcuX3Njcm9sbEFyZWEueSsyMCk7DQorCQkJCQkJfSBlbHNlIHsNCisJCQkJCQkJcmVmZXJlbmNlVG9TY3JvbGxWaWV3Ll9zY3JvbGxBcmVhLnNldEF0dHJpYnV0ZSgieSIsMCk7DQorCQkJCQkJfQ0KKwkJCQkJfQ0KKwkJCQl9IGVsc2UgaWYgKHJlZmVyZW5jZVRvU2Nyb2xsVmlldy5oZWlnaHQgPCB0UGFyZW50U2Nyb2xseSkgew0KKwkJCQkJdmFyIG1heFNjcm9sbCA9IHJlZmVyZW5jZVRvU2Nyb2xsVmlldy5oZWlnaHQgLSByZWZlcmVuY2VUb1Njcm9sbFZpZXcuX3Njcm9sbEFyZWEuaGVpZ2h0Ow0KKwkJCQkJaWYgKHJlZmVyZW5jZVRvU2Nyb2xsVmlldy5fc2Nyb2xsQXJlYS55ID4gbWF4U2Nyb2xsKSB7DQorCQkJCQkJaWYgKHJlZmVyZW5jZVRvU2Nyb2xsVmlldy5fc2Nyb2xsQXJlYS55LTIwID4gbWF4U2Nyb2xsKSB7DQorCQkJCQkJCXJlZmVyZW5jZVRvU2Nyb2xsVmlldy5fc2Nyb2xsQXJlYS5zZXRBdHRyaWJ1dGUoInkiLHJlZmVyZW5jZVRvU2Nyb2xsVmlldy5fc2Nyb2xsQXJlYS55LTIwKTsNCisJCQkJCQl9IGVsc2Ugew0KKwkJCQkJCQlyZWZlcmVuY2VUb1Njcm9sbFZpZXcuX3Njcm9sbEFyZWEuc2V0QXR0cmlidXRlKCJ5IixtYXhTY3JvbGwpOw0KKwkJCQkJCX0NCisJCQkJCX0gZWxzZSB7DQorCQkJCQkJcmVmZXJlbmNlVG9TY3JvbGxWaWV3Ll9zY3JvbGxBcmVhLnNldEF0dHJpYnV0ZSgieSIsbWF4U2Nyb2xsKTsNCisJCQkJCX0NCisJCQkJfQ0KKwkJCQkNCisJCQkJaWYgKHRoaXMuZHJhZ0VuZE9ubHkpIHsNCisJCQkJCXZhciBoZWlnaHRJbk1pbnV0ZXMgPSBwYXJlbnQuaGVpZ2h0LzE0NDA7DQorCQkJCQl2YXIgdFBpeGVsczMwTWludXRlcyA9IGhlaWdodEluTWludXRlcyozMDsNCisJCQkJCQ0KKwkJCQkJdmFyIHROZXdZID0gTWF0aC5yb3VuZChwYXJlbnQuZ2V0TW91c2UoInkiKS90UGl4ZWxzMzBNaW51dGVzKSp0UGl4ZWxzMzBNaW51dGVzOw0KKwkJCQkJDQorCQkJCQl2YXIgbmV3SGVpZ2h0ID0gKHROZXdZIC0gdGhpcy55KTsNCisJCQkJCWlmIChuZXdIZWlnaHQgPj0gdFBpeGVsczMwTWludXRlcyAmJiBuZXdIZWlnaHQrdGhpcy55IDw9IHBhcmVudC5oZWlnaHQpIHsNCisJCQkJCQl0aGlzLnNldEF0dHJpYnV0ZSgiaGVpZ2h0IixuZXdIZWlnaHQpOw0KKwkJCQkJfQ0KKwkJCQkJDQorCQkJCX0NCisJCQldXT4NCisJCTwvaGFuZGxlcj4NCisJCQ0KKwkJPG1ldGhvZCBuYW1lPSJmaXhUb1Bvc2l0aW9uIj4NCisJCQk8IVtDREFUQVsNCisJCQkJaWYgKCF0aGlzLmRyYWdFbmRPbmx5KSB7DQorCQkJCQkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJmaXhUb1Bvc2l0aW9uIDEgIiwgdGhpcy5jYWxlbmRhclZpZXdSZWYpOw0KKwkJCQkJLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZml4VG9Qb3NpdGlvbiAyICIsIHRoaXMuY2FsZW5kYXJWaWV3UmVmLmN1cnJlbnRPdmVyVHJhY2tWaWV3KTsNCisJCQkJCXZhciBjdXJyZW50T3ZlclRyYWNrVmlldyA9IHRoaXMuY2FsZW5kYXJWaWV3UmVmLmN1cnJlbnRPdmVyVHJhY2tWaWV3Ow0KKwkJCQkJaWYgKGN1cnJlbnRPdmVyVHJhY2tWaWV3ID09IG51bGwpIHsNCisJCQkJCQlyZXR1cm47DQorCQkJCQl9DQorCQkJCQkNCisJCQkJCXZhciBoZWlnaHRJbk1pbnV0ZXMgPSBwYXJlbnQuaGVpZ2h0LzE0NDA7DQorCQkJCQl2YXIgdFBpeGVsczMwTWludXRlcyA9IGhlaWdodEluTWludXRlcyozMDsNCisJCQkJCXZhciB0TmV3WSA9IE1hdGgucm91bmQodGhpcy55L3RQaXhlbHMzME1pbnV0ZXMpKnRQaXhlbHMzME1pbnV0ZXM7DQorCQkJCQlpZiAodE5ld1kgPCAwKSB7DQorCQkJCQkJdGhpcy5zZXRBdHRyaWJ1dGUoInkiLDApOw0KKwkJCQkJfSBlbHNlIGlmICh0TmV3WSArIHRoaXMuaGVpZ2h0ID4gcGFyZW50LmhlaWdodCkgew0KKwkJCQkJCXRoaXMuc2V0QXR0cmlidXRlKCJ5IixwYXJlbnQuaGVpZ2h0LXRoaXMuaGVpZ2h0KTsNCisJCQkJCX0gZWxzZSB7DQorCQkJCQkJdGhpcy5zZXRBdHRyaWJ1dGUoInkiLHROZXdZKTsNCisJCQkJCX0NCisJCQkJCXRoaXMuc2V0QXR0cmlidXRlKCJ4IixjdXJyZW50T3ZlclRyYWNrVmlldy54KTsNCisJCQkJfQ0KKwkJCV1dPg0KKwkJPC9tZXRob2Q+DQorCQkNCisJCTxoYW5kbGVyIG5hbWU9Im9ubW91c2V1cCIgcmVmZXJlbmNlPSJsei5HbG9iYWxNb3VzZSIgYXJncz0id2hvIj4NCisJICAgICAgICB0aGlzLmNsb3NlKCk7DQorCSAgICA8L2hhbmRsZXI+DQorCQkNCisJCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+DQorCQkJbHouQ3Vyc29yLnNob3dIYW5kQ3Vyc29yKGZhbHNlKTsNCisJCQlsei5Nb2RlTWFuYWdlci5nbG9iYWxMb2NrTW91c2VFdmVudHMoKTsNCisJCQlpZiAoIXRoaXMuZHJhZ0VuZE9ubHkpIHsNCisJCQkJdGhpcy5kcmFnZ2VyLmFwcGx5KCk7DQorCQkJfQ0KKwkJCXRoaXMuc2V0U2hhZG93KCk7DQorCQk8L2hhbmRsZXI+DQorCQkNCisJCTxtZXRob2QgbmFtZT0ic2V0U2hhZG93Ij4NCisJICAgICAgICA8IVtDREFUQVsNCisJICAgICAgICAgICAgdmFyIG5vcm1hbE1DID0gdGhpcy5nZXREaXNwbGF5T2JqZWN0KCk7DQorCSAgICAgICAgICAgIHZhciBkaXNwbGFjZW1lbnRNYXAgPSBuZXcgZmxhc2guZmlsdGVycy5Ecm9wU2hhZG93RmlsdGVyKCk7DQorCSAgICAgICAgICAgIG5vcm1hbE1DLmZpbHRlcnMgPSBbZGlzcGxhY2VtZW50TWFwXTsNCisJICAgICAgICBdXT4gICAgICAgICAgICAgIA0KKwkgICAgPC9tZXRob2Q+DQorCSAgICANCisJICAgIDxtZXRob2QgbmFtZT0ianVzdEZpbmlzaCI+DQorCSAgICAJbHouQ3Vyc29yLnJlc3RvcmVDdXJzb3IoKTsgDQorCSAgICAJLy9sei5DdXJzb3Iuc2hvd0hhbmRDdXJzb3IodHJ1ZSk7DQorCQkJbHouTW9kZU1hbmFnZXIuZ2xvYmFsVW5sb2NrTW91c2VFdmVudHMoKTsNCisJCQl0aGlzLmRlc3Ryb3koKTsNCisJICAgIDwvbWV0aG9kPg0KKwkJDQorCQk8bWV0aG9kIG5hbWU9ImNsb3NlIj4NCisJCQk8IVtDREFUQVsNCisJCQkJdmFyIGFwcG9pbnRtZW50SWQgPSB0aGlzLmV2ZW50UmVmLmNsb3NlRHJhZ0l0ZW0oKTsNCisJCQkJdGhpcy5kcmFnZ2VyLnJlbW92ZSgpOw0KKwkJCQkNCisJCQkJaWYgKHRoaXMuY2FsZW5kYXJWaWV3UmVmLnBhcmVudC5wYXJlbnQucmVxdWVzdFVzZXJJZCAhPSBjYW52YXMudXNlcl9pZCkgew0KKwkJCQkJbmV3IGx6LmxhYmVsZXJyb3JQb3B1cChjYW52YXMse2Vycm9ybGFiZWxpZDoxMjc4fSk7DQorCQkJCQlsei5DdXJzb3Iuc2hvd0hhbmRDdXJzb3IodHJ1ZSk7DQorCQkJCQlsei5Nb2RlTWFuYWdlci5nbG9iYWxVbmxvY2tNb3VzZUV2ZW50cygpOw0KKwkJCQkJdGhpcy5ldmVudFJlZi5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7DQorCQkJCQl0aGlzLmRlc3Ryb3koKTsNCisJCQkJCXJldHVybjsNCisJCQkJfQ0KKwkJCQkNCisJCQkJaWYgKHRoaXMuaGVpZ2h0ID09IHRoaXMuc3RhcnRoZWlnaHQgJiYgdGhpcy5kcmFnRW5kT25seSkgew0KKwkJCQkJdGhpcy5qdXN0RmluaXNoKCk7DQorCQkJCQlyZXR1cm47DQorCQkJCX0NCisJCQkJDQorCQkJCWlmIChhcHBvaW50bWVudElkIDw9IDApIHsNCisJCQkJCXRoaXMuanVzdEZpbmlzaCgpOw0KKwkJCQkJcmV0dXJuOw0KKwkJCQl9DQorCQkJDQorCQkJCXRoaXMudXBkYXRlT2JqID0gbmV3IE9iamVjdCgpOw0KKwkJCQkNCisJCQkJLy9Qb2ludCBVUkwgdG8gYWN0dWFsIEZpbGUNCisgICAgICAgICAgICAgICAgdGhpcy5iYXNlVXJsID0gY2FudmFzLmdldEFwcEJhc2VVcmwoKTsNCisJCQkJDQorCQkJCXZhciBjdXJyZW50T3ZlclRyYWNrVmlldyA9IHRoaXMuY2FsZW5kYXJWaWV3UmVmLmN1cnJlbnRPdmVyVHJhY2tWaWV3Ow0KKwkJCQlpZiAoY3VycmVudE92ZXJUcmFja1ZpZXcgPT0gbnVsbCkgew0KKwkJCQkJaWYgKCRkZWJ1ZykgRGVidWcud2FybigiY3VycmVudE92ZXJUcmFja1ZpZXcgaXMgTlVMTCwgZXJyb3IgaW4gdmlldyByZWZlcmVuY2UhIik7DQorCQkJCQlyZXR1cm47DQorCQkJCX0NCisJCQkJDQorCQkJCXVwZGF0ZU9iai5hcHBvaW50bWVudElkID0gYXBwb2ludG1lbnRJZDsNCisJCQkJdXBkYXRlT2JqLmFwcG9pbnRtZW50c3RhcnQgPSBuZXcgRGF0ZSh0aGlzLmNhbGVuZGFyVmlld1JlZi5jdXJyZW50T3ZlclRyYWNrVmlldy5kYXlEYXRlLmdldFRpbWUoKSk7DQorCQkJCQ0KKwkJCQkvL0lmIGl0IGlzIG9ubHkgZHJhZyBhbmQgZHJvcHBlZCBpbiBtb250aCBncmlkIHdlIG9ubHkgY2hhbmdlIGRhdGVzIG5vIHRpbWVzDQorCQkJCWlmICh0aGlzLmlzTW9udGhNb3ZlKSB7DQorCQkJCQl2YXIgdERhdGVTdGFydCA9IHBhcnNlRGF0ZVRpbWVGcm9tWG1sU3RyaW5nKHRoaXMuZXZlbnRSZWYuZGF0YXBhdGgueHBhdGhRdWVyeSgnc3RhcnQvdGV4dCgpJykpOw0KKwkJCQkJdXBkYXRlT2JqLmFwcG9pbnRtZW50c3RhcnQuc2V0SG91cnModERhdGVTdGFydC5nZXRIb3VycygpKTsNCisJCQkJCXVwZGF0ZU9iai5hcHBvaW50bWVudHN0YXJ0LnNldE1pbnV0ZXModERhdGVTdGFydC5nZXRNaW51dGVzKCkpOw0KKwkJCQl9IGVsc2Ugew0KKwkJCQkJDQorCQkJCQl2YXIgaGVpZ2h0SW5NaW51dGVzID0gcGFyZW50LmhlaWdodC8xNDQwOw0KKwkJCQkJdmFyIHRQaXhlbHMzME1pbnV0ZXMgPSBoZWlnaHRJbk1pbnV0ZXMqMzA7DQorCQkJCQl2YXIgc3RhcnRSb3VuZEJ5MzBNaW51dGVzID0gTWF0aC5yb3VuZCh0aGlzLnkvdFBpeGVsczMwTWludXRlcykqdFBpeGVsczMwTWludXRlczsNCisJCQkJCQ0KKwkJCQkJdXBkYXRlT2JqLmFwcG9pbnRtZW50c3RhcnQuc2V0SG91cnMoTWF0aC5mbG9vcigoc3RhcnRSb3VuZEJ5MzBNaW51dGVzL2hlaWdodEluTWludXRlcykvNjApKTsNCisJCQkJCXVwZGF0ZU9iai5hcHBvaW50bWVudHN0YXJ0LnNldE1pbnV0ZXMoKHN0YXJ0Um91bmRCeTMwTWludXRlcy9oZWlnaHRJbk1pbnV0ZXMpLSh1cGRhdGVPYmouYXBwb2ludG1lbnRzdGFydC5nZXRIb3VycygpKjYwKSk7DQorCQkJCX0NCisJCQkJDQorCQkJCXVwZGF0ZU9iai5hcHBvaW50bWVudGVuZCA9IG5ldyBEYXRlKHRoaXMuY2FsZW5kYXJWaWV3UmVmLmN1cnJlbnRPdmVyVHJhY2tWaWV3LmRheURhdGUuZ2V0VGltZSgpKTsNCisJCQkJDQorCQkJCS8vSWYgaXQgaXMgb25seSBkcmFnIGFuZCBkcm9wcGVkIGluIG1vbnRoIGdyaWQgd2Ugb25seSBjaGFuZ2UgZGF0ZXMgbm8gdGltZXMNCisJCQkJaWYgKHRoaXMuaXNNb250aE1vdmUpIHsNCisJCQkJCXZhciB0RGF0ZUVuZCA9IHBhcnNlRGF0ZVRpbWVGcm9tWG1sU3RyaW5nKHRoaXMuZXZlbnRSZWYuZGF0YXBhdGgueHBhdGhRdWVyeSgnZW5kL3RleHQoKScpKTsNCisJCQkJCXVwZGF0ZU9iai5hcHBvaW50bWVudGVuZC5zZXRIb3Vycyh0RGF0ZUVuZC5nZXRIb3VycygpKTsNCisJCQkJCXVwZGF0ZU9iai5hcHBvaW50bWVudGVuZC5zZXRNaW51dGVzKHREYXRlRW5kLmdldE1pbnV0ZXMoKSk7DQorCQkJCX0gZWxzZSB7DQorCQkJCQ0KKwkJCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIkVuZCBIb3VycyIsTWF0aC5mbG9vcigoKHN0YXJ0Um91bmRCeTMwTWludXRlcyt0aGlzLmhlaWdodCkvaGVpZ2h0SW5NaW51dGVzKS82MCkpOw0KKwkJCQkJdmFyIGVuZEhvdXJzID0gTWF0aC5mbG9vcigoKHN0YXJ0Um91bmRCeTMwTWludXRlcyt0aGlzLmhlaWdodCkvaGVpZ2h0SW5NaW51dGVzKS82MCk7DQorCQkJCQkNCisJCQkJCWlmIChlbmRIb3VycyA+PSAyNCkgew0KKwkJCQkJCSANCisJCQkJCQl1cGRhdGVPYmouYXBwb2ludG1lbnRlbmQuc2V0SG91cnMoMCk7DQorCQkJCQkJdXBkYXRlT2JqLmFwcG9pbnRtZW50ZW5kLnNldE1pbnV0ZXMoMCk7DQorCQkJCQkJdXBkYXRlT2JqLmFwcG9pbnRtZW50ZW5kLnNldFRpbWUodXBkYXRlT2JqLmFwcG9pbnRtZW50ZW5kLmdldFRpbWUoKSs4NjQwMDAwMCk7DQorCQkJCQkJDQorCQkJCQl9IGVsc2Ugew0KKwkJCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJFbmQgTWludXRlcyIsKChzdGFydFJvdW5kQnkzME1pbnV0ZXMrdGhpcy5oZWlnaHQpL2hlaWdodEluTWludXRlcyktKHVwZGF0ZU9iai5hcHBvaW50bWVudGVuZC5nZXRIb3VycygpKjYwKSk7DQorCQkJCQkJdXBkYXRlT2JqLmFwcG9pbnRtZW50ZW5kLnNldE1pbnV0ZXMoKChzdGFydFJvdW5kQnkzME1pbnV0ZXMrdGhpcy5oZWlnaHQpL2hlaWdodEluTWludXRlcyktKHVwZGF0ZU9iai5hcHBvaW50bWVudGVuZC5nZXRIb3VycygpKjYwKSk7DQorCQkJCQkJdXBkYXRlT2JqLmFwcG9pbnRtZW50ZW5kLnNldEhvdXJzKGVuZEhvdXJzKTsNCisJCQkJCX0NCisJCQkJCQ0KKwkJCQl9DQorCQkJCQ0KKwkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiTmV3IGFwcG9pbnRtZW50c3RhcnQgIix1cGRhdGVPYmouYXBwb2ludG1lbnRzdGFydCk7DQorCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJOZXcgYXBwb2ludG1lbnRlbmQgIix1cGRhdGVPYmouYXBwb2ludG1lbnRlbmQpOw0KKwkJCQkNCisJCQkJdGhpcy51cGRhdGVBcHBvaW50bWVudFRpbWVPbmx5LmRvQ2FsbCgpOw0KKwkJCV1dPg0KKwkJPC9tZXRob2Q+DQorCQkNCisJCTxuZXRSZW1vdGVDYWxsSGliIG5hbWU9InVwZGF0ZUFwcG9pbnRtZW50VGltZU9ubHkiIGZ1bmNuYW1lPSJjYWxlbmRhcnNlcnZpY2UudXBkYXRlQXBwb2ludG1lbnRUaW1lT25seSIgDQorCQkJCQkJCSAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gICAgIA0KKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gY2FudmFzLnNlc3Npb25JZDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4NCisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQudXBkYXRlT2JqLmFwcG9pbnRtZW50SWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4NCisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcnNlRGF0ZVRvU3RyaW5nVGltZVNlY29uZHMocGFyZW50LnBhcmVudC51cGRhdGVPYmouYXBwb2ludG1lbnRzdGFydCk7PC9tZXRob2Q+PC9uZXRwYXJhbT4NCisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcnNlRGF0ZVRvU3RyaW5nVGltZVNlY29uZHMocGFyZW50LnBhcmVudC51cGRhdGVPYmouYXBwb2ludG1lbnRlbmQpOzwvbWV0aG9kPjwvbmV0cGFyYW0+DQorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50LmJhc2VVcmw7PC9tZXRob2Q+PC9uZXRwYXJhbT4NCisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGhpYi51c2VybGFuZzs8L21ldGhvZD48L25ldHBhcmFtPg0KKwkgICAgCTxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPg0KKwkgICAgCQk8IVtDREFUQVsNCisJCSAgICAJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ1cGRhdGVBcHBvaW50bWVudFRpbWVPbmx5ICIsdmFsdWUpOw0KKwkJICAgIAkJbHouQ3Vyc29yLnJlc3RvcmVDdXJzb3IoKTsgDQorCQkgICAgCQkvL2x6LkN1cnNvci5zaG93SGFuZEN1cnNvcih0cnVlKTsNCisJCQkJCWx6Lk1vZGVNYW5hZ2VyLmdsb2JhbFVubG9ja01vdXNlRXZlbnRzKCk7DQorCQkgICAgCQlwYXJlbnQuY2FsZW5kYXJWaWV3UmVmLnBhcmVudC5wYXJlbnQucmVsb2FkKCk7DQorCQkJCQlwYXJlbnQuZGVzdHJveSgpOw0KKwkgICAgCQkgXV0+DQorCSAgICAJPC9oYW5kbGVyPg0KKwkgICAgPC9uZXRSZW1vdGVDYWxsSGliPiANCisJCQ0KKwkJPGRyYWdzdGF0ZSBuYW1lPSJkcmFnZ2VyIi8+DQorCQkNCisJCTx2aWV3IHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoIH0iIGhlaWdodD0iJG9uY2V7IHBhcmVudC5oZWlnaHQgfSIgDQorCQkJCQkJYmdjb2xvcj0iJG9uY2V7IHBhcmVudC5iZ2NvbG9yIH0iPg0KKwkJCTx0ZXh0IG5hbWU9Il90aW1lIiB0ZXh0PSIkb25jZXsgcGFyZW50LnBhcmVudC50aW1lVGV4dCB9IiANCisJCQkJCXZpc2liaWxpdHk9IiRvbmNleyAocGFyZW50LnBhcmVudC5zaG93VGltZSkgPyAndmlzaWJsZScgOiAnaGlkZGVuJyB9IiAvPg0KKwkJCTx0ZXh0IG5hbWU9Il90aXRsZSIgeD0iJG9uY2V7IChwYXJlbnQucGFyZW50LnNob3dUaW1lKSA/IDM2IDogMCB9IiByZXNpemU9ImZhbHNlIiB0ZXh0PSIkb25jZXsgcGFyZW50LnBhcmVudC50aXRsZVRleHQgfSINCisJCQkJd2lkdGg9IiRvbmNleyAocGFyZW50LnBhcmVudC5zaG93VGltZSkgPyBwYXJlbnQucGFyZW50LndpZHRoLTM2IDogcGFyZW50LnBhcmVudC53aWR0aCB9IiAvPg0KKwkJPC92aWV3Pg0KKwkJDQorCTwvY2xhc3M+DQorDQorPC9saWJyYXJ5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpjYWxlbmRhci9jb21wb250ZW50cy9sYXlvdXRzL2xpYnJhcnkubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9semNhbGVuZGFyL2NvbXBvbnRlbnRzL2xheW91dHMvbGlicmFyeS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzhkMTUzOAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpjYWxlbmRhci9jb21wb250ZW50cy9sYXlvdXRzL2xpYnJhcnkubHp4CkBAIC0wLDAgKzEsMjcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/Pg0KKzwhLS0NCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgIA0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAgICAJICANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAgdW5kZXIgdGhlIExpY2Vuc2UuDQorICANCistLT4NCis8bGlicmFyeT4NCisNCisJPGluY2x1ZGUgaHJlZj0iZHJhZ0V2ZW50Lmx6eCIgLz4NCisJPGluY2x1ZGUgaHJlZj0ibHpEYXlWaWV3Lmx6eCIgLz4NCisJPGluY2x1ZGUgaHJlZj0ibHpNb250aFZpZXcubHp4IiAvPg0KKw0KKzwvbGlicmFyeT4NCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6Y2FsZW5kYXIvY29tcG9udGVudHMvbGF5b3V0cy9sekRheVZpZXcubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9semNhbGVuZGFyL2NvbXBvbnRlbnRzL2xheW91dHMvbHpEYXlWaWV3Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODE3NDAyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9semNhbGVuZGFyL2NvbXBvbnRlbnRzL2xheW91dHMvbHpEYXlWaWV3Lmx6eApAQCAtMCwwICsxLDQ0MSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+DQorPCEtLQ0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAgDQorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICAgIAkgIA0KKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICB1bmRlciB0aGUgTGljZW5zZS4NCisgIA0KKy0tPg0KKzxsaWJyYXJ5Pg0KKw0KKw0KKwk8Y2xhc3MgbmFtZT0ibHpEYXlWaWV3IiBleHRlbmRzPSJ2aWV3IiB3aWR0aD0iJHsgcGFyZW50LndpZHRoIH0iIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodCB9Ij4NCisJDQorCQk8IS0tLQ0KKwkJCVNob3cgb25seSBhIHNpbmdsZSBkYXkgb3ZlciB0aGUgd2hvbGUgd2lkdGgNCisJCSAtLT4NCisJCTxhdHRyaWJ1dGUgbmFtZT0ic2luZ2xlRGF5VmlldyIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+DQorCQ0KKwkJPCEtLS0NCisJCQl0aGUgcm93IGluZGV4IG9mIHRoZSBkYXkgdG8gc2hvdyAobWFrZXMgb25seSBzZW5zZSBpZiBzaW5nbGVEYXlWaWV3IGlzIHRydWUpDQorCQkgLS0+DQorCQk8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnREYXkiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+DQorCQkNCisJCTwhLS0tDQorCQkJdGhlIG51bWJlciBvZiBkYXlzIHRoYXQgYXJlIHNob3duIG5leHQgdG8gZWFjaCBvdGhlcg0KKwkJIC0tPg0KKwkJPGF0dHJpYnV0ZSBuYW1lPSJkYXlzUGVyV2VlayIgdmFsdWU9IjEiIHR5cGU9Im51bWJlciIgLz4NCisJCQ0KKwkJPCEtLQ0KKwkJCU5hbWUgb2YgdGhlIHRyYWNrZ3JvdXANCisJCSAtLT4NCisJCTxhdHRyaWJ1dGUgbmFtZT0iZGF5Vmlld1RyYWNrR3JvdXAiIHZhbHVlPSJkYXlWaWV3VHJhY2tHcm91cCIgdHlwZT0ic3RyaW5nIiAvPg0KKwkJDQorCQk8IS0tIA0KKwkJCUN1cnJlbnQgRHJhZ2dpbmcgb2JqZWN0DQorCQkgLS0+DQorCQk8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnREcmFnRXZlbnQiIHZhbHVlPSJudWxsIiAvPg0KKwkJDQorCQk8IS0tIA0KKwkJCUN1cnJlbnQgZGF5RGF0ZSB0aGF0IHJlY2VpdmVzIHRoZSB0cmFjayBzY3JvbGwgb3Zlcg0KKwkJIC0tPg0KKwkJPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50T3ZlclRyYWNrVmlldyIgdmFsdWU9Im51bGwiIC8+DQorCQkNCisJCTwhLS0tDQorCQkJUHJldmVudCBmcm9tIHJlLXJlbmRlcmluZyB3aGVuIHN3aXRjaGluZyB0aGUgdmlld1N0YXRlIA0KKwkJIC0tPg0KKwkJPGF0dHJpYnV0ZSBuYW1lPSJyZVJlbmRlckxvY2siIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4NCisJCQ0KKwkJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4NCisJCQkvL2ZpeCB6LUxheWVyDQorCQkJdGhpcy5faGVhZGVyLnNlbmRJbkZyb250T2YodGhpcy5fZ3JpZCk7DQorCQkJdGhpcy5fZ3JpZC5zZW5kVG9CYWNrKCk7DQorCQk8L2hhbmRsZXI+DQorCQkJDQorCQk8dmlldyBuYW1lPSJfaGVhZGVyIiB4PSI0MSIgd2lkdGg9IiR7IHBhcmVudC53aWR0aC0xMCB9IiBoZWlnaHQ9IjIwIiBiZ2NvbG9yPSIweERERERERCI+DQorCQkJPHZpZXcgbmFtZT0iZGF5cyIgZGF0YXBhdGg9ImRheXMiIHdpZHRoPSIkeyAocGFyZW50LndpZHRoLTQxKS9jbGFzc3Jvb3QuZGF5c1BlcldlZWsgfSIgY2xpcD0idHJ1ZSINCisJCQkJCQkJCWJnY29sb3I9IjB4REREREREIiBoZWlnaHQ9IjE5Ij4NCisJCQkJDQorCQkJCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+DQorCQkJCQlpZiAoY2xhc3Nyb290LnNpbmdsZURheVZpZXcpIHsNCisJCQkJCQl0aGlzLnNldEF0dHJpYnV0ZSgiZGF0YXBhdGgiLCJkYXlzWyIrY2xhc3Nyb290LmN1cnJlbnREYXkrIl0iKTsNCisJCQkJCX0NCisJCQkJPC9oYW5kbGVyPg0KKwkJCQkJCQkJDQorCQkJCTx0ZXh0IG5hbWU9Il90aXRsZSIgd2lkdGg9IiR7IHBhcmVudC53aWR0aCAtMSB9IiBmZ2NvbG9yPSIweDY2NjY2NiINCisJCQkJCQkJCWRhdGFwYXRoPSJ0RGF0ZSIgYmdjb2xvcj0iMHhGRkZGRkYiIGhlaWdodD0iMTkiID4NCisJCQkJCTxhdHRyaWJ1dGUgbmFtZT0idERhdGUiIHZhbHVlPSJudWxsIiAvPg0KKwkJCQkJPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJkIj4NCisJCQkJCQl0aGlzLnREYXRlID0gcGFyc2VEYXRlT25seUZyb21YbWxTdHJpbmcoZC5jaGlsZE5vZGVzWzBdLmRhdGEpOw0KKwkJCQkJCXZhciB0U3RyaW5nV2Vla0RheSA9IGNhbnZhcy5kYXlTaG9ydE5hbWVzW3REYXRlLmdldERheSgpXTsNCisJCQkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiQ2FsYyBXZWVrIGRheSAiLHRTdHJpbmdXZWVrRGF5LHRoaXMudERhdGUuZ2V0RGF5KCksdGhpcy50RGF0ZSk7DQorCQkJCQkJdGhpcy5zZXRBdHRyaWJ1dGUoInRleHQiLGNhbnZhcy5kYXlTaG9ydE5hbWVzW3RoaXMudERhdGUuZ2V0RGF5KCldKyIgIit0aGlzLnREYXRlLmdldERhdGUoKSsiLiIrKHRoaXMudERhdGUuZ2V0TW9udGgoKSsxKSsiLiIpOw0KKwkJCQkJPC9oYW5kbGVyPg0KKwkJCQkJPGhhbmRsZXIgbmFtZT0ib25tb3VzZW92ZXIiPg0KKwkJCQkJCWlmICghY2xhc3Nyb290LnNpbmdsZURheVZpZXcpIHsNCisJCQkJCQkJdGhpcy5zZXRBdHRyaWJ1dGUoImZvbnRzdHlsZSIsImJvbGQiKTsNCisJCQkJCQl9DQorCQkJCQk8L2hhbmRsZXI+DQorCQkJCQk8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3V0Ij4NCisJCQkJCQlpZiAoIWNsYXNzcm9vdC5zaW5nbGVEYXlWaWV3KSB7DQorCQkJCQkJCXRoaXMuc2V0QXR0cmlidXRlKCJmb250c3R5bGUiLCJwbGFpbiIpOw0KKwkJCQkJCX0NCisJCQkJCTwvaGFuZGxlcj4NCisJCQkJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPg0KKwkJCQkJCWlmICghY2xhc3Nyb290LnNpbmdsZURheVZpZXcpIHsNCisJCQkJCQkJcGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50Lm9uU2VsZWN0RGF0ZS5zZW5kRXZlbnQodGhpcy50RGF0ZSk7DQorCQkJCQkJfQ0KKwkJCQkJPC9oYW5kbGVyPg0KKwkJCQk8L3RleHQ+DQorCQkJCQ0KKwkJCTwvdmlldz4NCisJCQk8c2ltcGxlbGF5b3V0IGF4aXM9IngiIHNwYWNpbmc9IjAiIC8+DQorCQk8L3ZpZXc+DQorCQkNCisJCTx2aWV3IG5hbWU9ImRyYWdBbmREcm9wQXJlYSIgeT0iMjAiIHdpZHRoPSIkeyBwYXJlbnQud2lkdGggfSIgaGVpZ2h0PSIkeyBwYXJlbnQuaGVpZ2h0LTIwIH0iIGNsaXA9InRydWUiPg0KKwkJCQ0KKwkJCTx2aWV3IG5hbWU9Il9jb250ZW50IiB3aWR0aD0iJHsgcGFyZW50LndpZHRoLTEwIH0iIGhlaWdodD0iNzIwIiB5PSIkeyBwYXJlbnQucGFyZW50Ll9ncmlkLl9iZ0FyZWEuX3Njcm9sbEFyZWEueSB9Ij4NCisJCQkJDQorCQkJDQorCQkJPC92aWV3Pg0KKwkJCQ0KKwkJPC92aWV3Pg0KKwkJDQorCQk8dmlldyBuYW1lPSJfZ3JpZCIgeT0iMjAiIHdpZHRoPSIkeyBwYXJlbnQud2lkdGggfSIgaGVpZ2h0PSIkeyBwYXJlbnQuaGVpZ2h0LTIwIH0iPg0KKwkNCisJCQk8dmlldyBuYW1lPSJfYmdBcmVhIiB3aWR0aD0iJHsgcGFyZW50LndpZHRoIH0iIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodCB9IiBjbGlwPSJ0cnVlIiBiZ2NvbG9yPSIweERERERERCI+DQorCQkNCisJCQkJPHZpZXcgbmFtZT0iX3Njcm9sbEFyZWEiIHdpZHRoPSIkeyBwYXJlbnQud2lkdGgtMTAgfSIgaGVpZ2h0PSI3MjEiID4NCisJCQkJDQorCQkJCQk8aGFuZGxlciBuYW1lPSJvbmluaXQiPg0KKwkJCQkJCXRoaXMuc2V0QXR0cmlidXRlKCJ5IixwYXJlbnQuaGVpZ2h0LTcyMSk7DQorCQkJCQk8L2hhbmRsZXI+DQorCQkJCQkNCisJCQkJCTxoYW5kbGVyIG5hbWU9Im9ueSIgYXJncz0ieSI+DQorCQkJCQkJcGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50Lm9uU2NvbGxDb250ZW50LnNlbmRFdmVudChudWxsKTsNCisJCQkJCTwvaGFuZGxlcj4NCisJCQkJDQorCQkJCQk8dmlldyBuYW1lPSJob3VycyIgd2lkdGg9IjQwIiBoZWlnaHQ9IjcyMCIgPg0KKwkJCQkJCQkNCisJCQkJCQk8dmlldyBuYW1lPSJkYXlCZzIiIHJlc291cmNlPSJjYWxlbmRhcl9kYXlfaG91cnNfaW5kZXhfYmdfcnNjIiAvPg0KKwkJCQkJCQ0KKwkJCQkJCTx2aWV3Pg0KKwkJCQkJCQk8aGFuZGxlciBuYW1lPSJvbmluaXQiPg0KKwkJCQkJCQkJPCFbQ0RBVEFbDQorCQkJCQkJCQkJZm9yICh2YXIgaT0wO2k8MjQ7aSsrKSB7DQorCQkJCQkJCQkJCWlmIChpPDEwKSB7DQorCQkJCQkJCQkJCQluZXcgbHoudGV4dEhvdXJIZWxwZXIodGhpcyx7dGV4dDoiMCIraSsiOjAwIn0pOw0KKwkJCQkJCQkJCQl9IGVsc2Ugew0KKwkJCQkJCQkJCQkJbmV3IGx6LnRleHRIb3VySGVscGVyKHRoaXMse3RleHQ6aSsiOjAwIn0pOw0KKwkJCQkJCQkJCQl9DQorCQkJCQkJCQkJfQ0KKwkJCQkJCQkJXV0+DQorCQkJCQkJCTwvaGFuZGxlcj4NCisJCQkJCQkJPHNpbXBsZWxheW91dCBheGlzPSJ5IiAvPg0KKwkJCQkJCTwvdmlldz4NCisJCQkJCQkJDQorCQkJCQk8L3ZpZXc+DQorCQkJCQkNCisJCQkJCTx2aWV3IHdpZHRoPSIxIiAvPg0KKwkJCQkJDQorCQkJCQk8IS0tIFRoZSBkYXlzIC0tPg0KKwkJCQkJPHZpZXcgbmFtZT0iZGF5cyIgZGF0YXBhdGg9ImRheXMiIHdpZHRoPSIkeyAocGFyZW50LndpZHRoLTQxKS9jbGFzc3Jvb3QuZGF5c1BlcldlZWsgfSIgDQorCQkJCQkJCQloZWlnaHQ9IjcyMCIgYmdjb2xvcj0iMHhEREREREQiID4NCisJCQkJCQkJCQ0KKwkJCQkJCTxhdHRyaWJ1dGUgbmFtZT0iZGF5RGF0ZSIgdmFsdWU9Im51bGwiIC8+DQorCQkJCQkJCQkNCisJCQkJCQk8aGFuZGxlciBuYW1lPSJvbmluaXQiPg0KKwkJCQkJCQlpZiAoY2xhc3Nyb290LnNpbmdsZURheVZpZXcpIHsNCisJCQkJCQkJCXRoaXMuc2V0QXR0cmlidXRlKCJkYXRhcGF0aCIsImRheXNbIitjbGFzc3Jvb3QuY3VycmVudERheSsiXSIpOw0KKwkJCQkJCQl9DQorCQkJCQkJCWx6LlRyYWNrLnJlZ2lzdGVyKHRoaXMsIGNsYXNzcm9vdC5kYXlWaWV3VHJhY2tHcm91cCk7DQorCQkJCQkJPC9oYW5kbGVyPg0KKwkJCQkJCQ0KKwkJCQkJCTxoYW5kbGVyIG5hbWU9Im9ubW91c2V0cmFja292ZXIiPg0KKwkJCQkJCQlpZiAoIWNsYXNzcm9vdC5jdXJyZW50RHJhZ0V2ZW50LmRyYWdFbmRPbmx5KSB7DQorCQkJCQkgICAgICAgIAljbGFzc3Jvb3QuY3VycmVudE92ZXJUcmFja1ZpZXcgPSB0aGlzOw0KKwkJCQkJICAgICAgICB9DQorCQkJCQkgICAgPC9oYW5kbGVyPg0KKwkJCQkJDQorCQkJCQkgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZXRyYWNrb3V0Ij4NCisJCQkJCSAgICAJLy9XZSBkbyBub3QgdHJhY2sgb3V0IGNhdXNlIG90aGVyd2lzZSB0aGUgZHJhZ2dpbmcgdmlldyB3b3VsZCBiZSBhdCB1bmRlZmluZWQgcG9zaXRpb24NCisJCQkJCSAgICA8L2hhbmRsZXI+DQorCQkJCQkgICAgDQorCQkJCQkgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZXRyYWNrdXAiPg0KKwkJCQkJICAgICAgICB0aGlzLl9jb250ZW50LnNldEF0dHJpYnV0ZSgnYmdjb2xvcicsIDB4RkZGRkZGKTsNCisJCQkJCSAgICA8L2hhbmRsZXI+DQorCQkJCQkJDQorCQkJCQkJPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJkIj4NCisJCQkJCQkJaWYoZCBpcyBsei5EYXRhTm9kZU1peGluKXsNCisJCQkJCQkJCXZhciBsekRhdGFQb2ludGVyID0gbmV3IGx6LmRhdGFwb2ludGVyKCk7DQorCQkJCQkJCQlsekRhdGFQb2ludGVyLnNldFBvaW50ZXIoZCk7DQorCQkJCQkJCQl2YXIgeG1sRGF0ZSA9IGx6RGF0YVBvaW50ZXIueHBhdGhRdWVyeSgndERhdGUvdGV4dCgpJyk7DQorCQkJCQkJCQl2YXIgc3BsaXREYXRlID0geG1sRGF0ZS5zcGxpdCgiLSIpOw0KKwkJCQkJCQkJdGhpcy5kYXlEYXRlID0gbmV3IERhdGUoc3BsaXREYXRlWzBdLCBOdW1iZXIoc3BsaXREYXRlWzFdKS0xLCBzcGxpdERhdGVbMl0pOw0KKwkJCQkJCQl9DQorCQkJCQkJPC9oYW5kbGVyPg0KKwkJCQkJCQ0KKwkJCQkJCTx2aWV3IG5hbWU9Il9jb250ZW50IiB3aWR0aD0iJHsgcGFyZW50LndpZHRoIC0xIH0iIGJnY29sb3I9IjB4RkZGRkZGIg0KKwkJCQkJCQkJCQloZWlnaHQ9IjcyMCIgY2xpY2thYmxlPSJ0cnVlIiBzaG93aGFuZGN1cnNvcj0iZmFsc2UiPg0KKwkJCQkJCQkJCQkNCisJCQkJCQkJPGF0dHJpYnV0ZSBuYW1lPSJsekNhbEdyaWRUZW1wRHJhd1ZpZXciIHZhbHVlPSJudWxsIiAvPg0KKwkJCQkJCQkNCisJCQkJCQkJPGhhbmRsZXIgbmFtZT0ib25tb3VzZWRvd24iPg0KKwkJCQkJCQkJPCFbQ0RBVEFbDQorCQkJCQkJCQkJdmFyIGhlaWdodEluTWludXRlcyA9IHRoaXMuaGVpZ2h0LzE0NDA7DQorCQkJCQkJCQkJLy9yb3VuZCBieSAzMCBtaW51dGVzDQorCQkJCQkJCQkJdmFyIHRQaXhlbHMzME1pbnV0ZXMgPSBoZWlnaHRJbk1pbnV0ZXMqMzA7DQorCQkJCQkJCQkJdmFyIHRTdGFydHkgPSB0aGlzLmdldE1vdXNlKCJ5Iik7DQorCQkJCQkJCQkJdFN0YXJ0eSA9IE1hdGgucm91bmQodFN0YXJ0eS90UGl4ZWxzMzBNaW51dGVzKSp0UGl4ZWxzMzBNaW51dGVzOw0KKwkJCQkJCQkJCXRoaXMubHpDYWxHcmlkVGVtcERyYXdWaWV3ID0gbmV3IGx6Lmx6Q2FsR3JpZFRlbXBEcmF3Vmlldyh0aGlzLHsNCisJCQkJCQkJCQkJCQkJCQkJCQkJeTp0U3RhcnR5LA0KKwkJCQkJCQkJCQkJCQkJCQkJCQlzdGFydHk6dFN0YXJ0eSwNCisJCQkJCQkJCQkJCQkJCQkJCQkJaGVpZ2h0OnRQaXhlbHMzME1pbnV0ZXMsDQorCQkJCQkJCQkJCQkJCQkJCQkJCWhlaWdodEluTWludXRlczpoZWlnaHRJbk1pbnV0ZXMsDQorCQkJCQkJCQkJCQkJCQkJCQkJCXRQaXhlbHMzME1pbnV0ZXM6dFBpeGVsczMwTWludXRlcw0KKwkJCQkJCQkJCQkJCQkJCQkJCX0pOw0KKwkJCQkJCQkJXV0+CQkJCQkJCQkNCisJCQkJCQkJPC9oYW5kbGVyPg0KKwkJCQkJCQkNCisJCQkJCQkJPGhhbmRsZXIgbmFtZT0ib25tb3VzZXVwIj4NCisJCQkJCQkJCWlmICh0aGlzLmx6Q2FsR3JpZFRlbXBEcmF3VmlldyAhPSBudWxsKSB7DQorCQkJCQkJCQkJdmFyIHRTdGFydERhdGUgPSBuZXcgRGF0ZSgpOw0KKwkJCQkJCQkJCS8vY2xvbmUgRGF0ZSB0byBoYXZlIGRheSBhbmQgbW9udGgNCisJCQkJCQkJCQl0U3RhcnREYXRlLnNldFRpbWUocGFyZW50LmRheURhdGUuZ2V0VGltZSgpKTsNCisJCQkJCQkJCQl2YXIgc3RhcnRNaW51dGVzVG90YWwgPSB0aGlzLmx6Q2FsR3JpZFRlbXBEcmF3Vmlldy5nZXRTdGFydE1pbnV0ZXNUb3RhbCgpOw0KKwkJCQkJCQkJCXRTdGFydERhdGUuc2V0SG91cnMoTWF0aC5mbG9vcihzdGFydE1pbnV0ZXNUb3RhbC82MCkpOw0KKwkJCQkJCQkJCXRTdGFydERhdGUuc2V0TWludXRlcyhzdGFydE1pbnV0ZXNUb3RhbC0odFN0YXJ0RGF0ZS5nZXRIb3VycygpKjYwKSk7DQorCQkJCQkJCQkJDQorCQkJCQkJCQkJdmFyIHRFbmREYXRlID0gbmV3IERhdGUoKTsNCisJCQkJCQkJCQkvL2Nsb25lIERhdGUgdG8gaGF2ZSBkYXkgYW5kIG1vbnRoDQorCQkJCQkJCQkJdEVuZERhdGUuc2V0VGltZShwYXJlbnQuZGF5RGF0ZS5nZXRUaW1lKCkpOw0KKwkJCQkJCQkJCXZhciBlbmRNaW51dGVzVG90YWwgPSB0aGlzLmx6Q2FsR3JpZFRlbXBEcmF3Vmlldy5nZXRFbmRNaW51dGVzVG90YWwoKTsNCisJCQkJCQkJCQl0RW5kRGF0ZS5zZXRIb3VycyhNYXRoLmZsb29yKGVuZE1pbnV0ZXNUb3RhbC82MCkpOw0KKwkJCQkJCQkJCXRFbmREYXRlLnNldE1pbnV0ZXMoZW5kTWludXRlc1RvdGFsLSh0RW5kRGF0ZS5nZXRIb3VycygpKjYwKSk7DQorCQkJCQkJCQkNCisJCQkJCQkJCQl0aGlzLmx6Q2FsR3JpZFRlbXBEcmF3Vmlldy5kZXN0cm95KCk7DQorCQkJCQkJCQkJdGhpcy5sekNhbEdyaWRUZW1wRHJhd1ZpZXcgPSBudWxsOw0KKwkJCQkJCQkJCQ0KKwkJCQkJCQkJCWNsYXNzcm9vdC5wYXJlbnQuc2VsZWN0U3RhcnRFbmREYXRlVGltZSh0U3RhcnREYXRlLHRFbmREYXRlKTsNCisJCQkJCQkJCX0NCisJCQkJCQkJPC9oYW5kbGVyPg0KKwkJCQkJCQkNCisJCQkJCQkJPCEtLQ0KKwkJCQkJCQkJRGV0ZWN0IGV2ZW50cyB0aGF0IGFyZSBwYXJhbGxlbA0KKwkJCQkJCQkgLS0+DQorCQkJCQkJCTxtZXRob2QgbmFtZT0iY2FsY1dpZHRoRmFjdG9ycyIgYXJncz0idEl0ZW0iPg0KKwkJCQkJCQkJPCFbQ0RBVEFbDQorCQkJCQkJCQkJZm9yICh2YXIgZWcgaW4gdGhpcy5zdWJ2aWV3cykgew0KKwkJCQkJCQkJCQlpZiAodGhpcy5zdWJ2aWV3c1tlZ10gPT0gdEl0ZW0pIHsNCisJCQkJCQkJCQkJCWNvbnRpbnVlOw0KKwkJCQkJCQkJCQl9DQorCQkJCQkJCQkJCWlmICghdGhpcy5zdWJ2aWV3c1tlZ10uZXZlbnQpIHsNCisJCQkJCQkJCQkJCWNvbnRpbnVlOw0KKwkJCQkJCQkJCQl9DQorCQkJCQkJCQkJCQ0KKwkJCQkJCQkJCQkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJDb25kMSAiLCh0aGlzLnN1YnZpZXdzW2VnXS55ICsgdGhpcy5zdWJ2aWV3c1tlZ10uaGVpZ2h0ID49IHRJdGVtLnkpKTsNCisJCQkJCQkJCQkJLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiQ29uZDIgIiwodGhpcy5zdWJ2aWV3c1tlZ10ueSA8PSB0SXRlbS55ICsgdEl0ZW0uaGVpZ2h0KSk7DQorCQkJCQkJCQkJCQ0KKwkJCQkJCQkJCQlpZiAodGhpcy5zdWJ2aWV3c1tlZ10ueSArIHRoaXMuc3Vidmlld3NbZWddLmhlaWdodCA+PSB0SXRlbS55IA0KKwkJCQkJCQkJCQkJCSYmIHRoaXMuc3Vidmlld3NbZWddLnkgPD0gdEl0ZW0ueSArIHRJdGVtLmhlaWdodCkgew0KKwkJCQkJCQkJCQkJDQorCQkJCQkJCQkJCQl2YXIgbmV3V2lkdGhGYWN0b3IgPSB0aGlzLnN1YnZpZXdzW2VnXS53aWR0aEZhY3RvcisxOw0KKwkJCQkJCQkJCQkJdmFyIG5ld0luc2V0RmFjdG9yID0gdGhpcy5zdWJ2aWV3c1tlZ10uaW5zZXRGYWN0b3IrMTsNCisJCQkJCQkJCQkJCQ0KKwkJCQkJCQkJCQkJLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiRm91bmQgbmV3SW5zZXRGYWN0b3IsbmV3V2lkdGhGYWN0b3I6ICIsbmV3SW5zZXRGYWN0b3IsbmV3V2lkdGhGYWN0b3IpOw0KKwkJCQkJCQkJCQkJDQorCQkJCQkJCQkJCQkvL2ZpeCB3aWR0aAkNCisJCQkJCQkJCQkJCXRoaXMuc3Vidmlld3NbZWddLnNldEF0dHJpYnV0ZSgid2lkdGhGYWN0b3IiLG5ld1dpZHRoRmFjdG9yKTsNCisJCQkJCQkJCQkJCXRJdGVtLnNldEF0dHJpYnV0ZSgid2lkdGhGYWN0b3IiLG5ld1dpZHRoRmFjdG9yKTsNCisJCQkJCQkJCQkJCQ0KKwkJCQkJCQkJCQkJLy9maXggeC1wb3NpdGlvbg0KKwkJCQkJCQkJCQkJaWYgKHRJdGVtLnkgPj0gdGhpcy5zdWJ2aWV3c1tlZ10ueSkgew0KKwkJCQkJCQkJCQkJCS8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIkFGVEVSIik7DQorCQkJCQkJCQkJCQkJdEl0ZW0uc2V0QXR0cmlidXRlKCJpbnNldEZhY3RvciIsbmV3SW5zZXRGYWN0b3IpOw0KKwkJCQkJCQkJCQkJCXRoaXMuc3Vidmlld3NbZWddLnNlbmRJbkZyb250T2YodGhpcy5kYXlCZzIpOw0KKwkJCQkJCQkJCQkJfSBlbHNlIHsNCisJCQkJCQkJCQkJCQkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJCRUZPUkUiKTsNCisJCQkJCQkJCQkJCQl0aGlzLnN1YnZpZXdzW2VnXS5zZXRBdHRyaWJ1dGUoImluc2V0RmFjdG9yIixuZXdJbnNldEZhY3Rvcik7DQorCQkJCQkJCQkJCQkJdEl0ZW0uc2VuZEluRnJvbnRPZih0aGlzLmRheUJnMik7DQorCQkJCQkJCQkJCQl9DQorCQkJCQkJCQkJCQkNCisJCQkJCQkJCQkJfQ0KKwkJCQkJCQkJCX0NCisJCQkJCQkJCV1dPg0KKwkJCQkJCQk8L21ldGhvZD4NCisJCQkJCQkJDQorCQkJCQkJCTx2aWV3IG5hbWU9ImRheUJnMiIgcmVzb3VyY2U9ImNhbGVuZGFyX29uZV9kYXlfaG91cnNfaW5kZXhfYmdfcnNjIiBzdHJldGNoZXM9IndpZHRoIiANCisJCQkJCQkJCXdpZHRoPSIkeyBwYXJlbnQud2lkdGggfSIgID4NCisJCQkJCQkJCTxhdHRyaWJ1dGUgbmFtZT0iZXZlbnQiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4gDQorCQkJCQkJCTwvdmlldz4NCisJCQkJCQkJCQkJDQorCQkJCQkJCTx2aWV3IGRhdGFwYXRoPSJhcHBvaW50bWVudHMiIGJnY29sb3I9IjB4QTU5Q0ZDIiANCisJCQkJCQkJCQkJeD0iJHsgKHBhcmVudC53aWR0aC90aGlzLndpZHRoRmFjdG9yKSAqIGluc2V0RmFjdG9yIH0iDQorCQkJCQkJCQkJCXdpZHRoPSIkeyBwYXJlbnQud2lkdGgvdGhpcy53aWR0aEZhY3RvciB9IiBoZWlnaHQ9IjYwIj4NCisJCQkJCQkJCQ0KKwkJCQkJCQkJPGF0dHJpYnV0ZSBuYW1lPSJldmVudCIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+IA0KKwkJCQkJCQkJDQorCQkJCQkJCQk8YXR0cmlidXRlIG5hbWU9InJlbWVtYmVyWCIgdmFsdWU9Ii0xIiAvPg0KKwkJCQkJCQkJPGF0dHJpYnV0ZSBuYW1lPSJyZW1lbWJlclkiIHZhbHVlPSItMSIgLz4NCisJCQkJCQkJCTxhdHRyaWJ1dGUgbmFtZT0ibW91c2VVcERldGVjdCIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIi8+DQorCQkJCQkJCQk8YXR0cmlidXRlIG5hbWU9InN0YXJ0ZWRUb0RyYWciIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIvPg0KKwkJCQkJCQkJDQorCQkJCQkJCQk8YXR0cmlidXRlIG5hbWU9IndpZHRoRmFjdG9yIiB2YWx1ZT0iMSIgdHlwZT0ibnVtYmVyIi8+DQorCQkJCQkJCQk8YXR0cmlidXRlIG5hbWU9Imluc2V0RmFjdG9yIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIi8+DQorCQkJCQkJCQ0KKwkJCQkJCQkJPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJkIj4NCisJCQkJCQkJCQk8IVtDREFUQVsNCisJCQkJCQkJCQkJaWYgKGNsYXNzcm9vdC5yZVJlbmRlckxvY2spIHsNCisJCQkJCQkJCQkJCWlmICgkZGVidWcpIERlYnVnLmluZm8oIlByZXZlbnQgdW4tbmVjY2Vzc2FyeSBSZW5kZXJpbmchIik7DQorCQkJCQkJCQkJCQlyZXR1cm47DQorCQkJCQkJCQkJCX0NCisJCQkJCQkJCQkJdGhpcy5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7DQorCQkJCQkJCQkJCXZhciBkYXRhUG9pbnRlciA9IG5ldyBsei5kYXRhcG9pbnRlcigpOw0KKwkJCQkJCQkJCQlkYXRhUG9pbnRlci5zZXRQb2ludGVyKGQpOw0KKwkJCQkJCQkJCQl2YXIgc3RhcnREYXRlID0gcGFyc2VEYXRlVGltZUZyb21YbWxTdHJpbmcoZGF0YVBvaW50ZXIueHBhdGhRdWVyeSgnc3RhcnQvdGV4dCgpJykpOw0KKwkJCQkJCQkJCQl2YXIgZW5kRGF0ZSA9IHBhcnNlRGF0ZVRpbWVGcm9tWG1sU3RyaW5nKGRhdGFQb2ludGVyLnhwYXRoUXVlcnkoJ2VuZC90ZXh0KCknKSk7DQorCQkJCQkJCQkJCQ0KKwkJCQkJCQkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiQ09NUEFSRSAtLSAiLHN0YXJ0RGF0ZSxlbmREYXRlKTsNCisJCQkJCQkJCQkJDQorCQkJCQkJCQkJCXZhciBoZWlnaHRJbk1pbnV0ZXMgPSBwYXJlbnQuaGVpZ2h0LzE0NDA7DQorCQkJCQkJCQkJCXZhciBzdGFydE1pbiA9IChzdGFydERhdGUuZ2V0SG91cnMoKSAqIDYwICkgKyBzdGFydERhdGUuZ2V0TWludXRlcygpOw0KKwkJCQkJCQkJCQl0aGlzLnNldEF0dHJpYnV0ZSgieSIsTWF0aC5yb3VuZChoZWlnaHRJbk1pbnV0ZXMqc3RhcnRNaW4pKTsNCisJCQkJCQkJCQkJDQorCQkJCQkJCQkJCWlmIChlbmREYXRlLmdldEZ1bGxZZWFyKCkgPiBzdGFydERhdGUuZ2V0RnVsbFllYXIoKSANCisJCQkJCQkJCQkJCQl8fCBlbmREYXRlLmdldE1vbnRoKCkgPiBzdGFydERhdGUuZ2V0TW9udGgoKQ0KKwkJCQkJCQkJCQkJCQl8fCBlbmREYXRlLmdldERhdGUoKSA+IHN0YXJ0RGF0ZS5nZXREYXRlKCkpIHsNCisJCQkJCQkJCQkJCS8vSWYgdGhlIGVuZCBkYXRlIGlzIG5leHQgeWVhciBvciBtb250aCBvciBkYXkgd2UgbmVlZA0KKwkJCQkJCQkJCQkJLy90byBtYXJrIHRoZSByZXN0IG9mIHRoZSBkYXkgd2l0aCB0aGUgZXZlbnQNCisJCQkJCQkJCQkJCXRoaXMuc2V0QXR0cmlidXRlKCJoZWlnaHQiLHBhcmVudC5oZWlnaHQtdGhpcy55KTsNCisJCQkJCQkJCQkJfSBlbHNlIHsNCisJCQkJCQkJCQkJCXZhciBlbmRNaW4gPSAoZW5kRGF0ZS5nZXRIb3VycygpICogNjAgKSArIGVuZERhdGUuZ2V0TWludXRlcygpOw0KKwkJCQkJCQkJCQkJdGhpcy5zZXRBdHRyaWJ1dGUoImhlaWdodCIsTWF0aC5yb3VuZCgoZW5kTWluIC0gc3RhcnRNaW4pKmhlaWdodEluTWludXRlcykpOw0KKwkJCQkJCQkJCQl9DQorCQkJCQkJCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ5LGhlaWdodCAtLSAiLHRoaXMueSx0aGlzLmhlaWdodCk7DQorCQkJCQkJCQkJCXBhcmVudC5jYWxjV2lkdGhGYWN0b3JzKHRoaXMpOw0KKwkJCQkJCQkJCV1dPg0KKwkJCQkJCQkJPC9oYW5kbGVyPg0KKwkJCQkJCQkJDQorCQkJCQkJCQk8aGFuZGxlciBuYW1lPSJvbm1vdXNlZG93biI+DQorCQkJCQkJCQkJdGhpcy5tb3VzZVVwRGV0ZWN0ID0gZmFsc2U7DQorCQkJCQkJCQkJdGhpcy5zdGFydGVkVG9EcmFnID0gZmFsc2U7DQorCQkJCQkJCQkJdGhpcy5yZW1lbWJlclggPSB0aGlzLmdldE1vdXNlKCJ4Iik7DQorCQkJCQkJCQkJdGhpcy5yZW1lbWJlclkgPSB0aGlzLmdldE1vdXNlKCJ5Iik7DQorCQkJCQkJCQkJbHouVGltZXIuYWRkVGltZXIoIG5ldyBMekRlbGVnYXRlKCB0aGlzLCAiY2hlY2tJZkRyYWdnaW5nIiApLCAyNTAgKTsNCisJCQkJCQkJCTwvaGFuZGxlcj4NCisJCQkJCQkJCQ0KKwkJCQkJCQkJPGhhbmRsZXIgbmFtZT0ib25tb3VzZXVwIiA+DQorCQkJCQkJCQkJPCFbQ0RBVEFbDQorCQkJCQkJCQkJCWlmICh0aGlzLnJlbWVtYmVyWCA9PSB0aGlzLmdldE1vdXNlKCJ4IikNCisJCQkJCQkJCQkJCQkmJiB0aGlzLnJlbWVtYmVyWSA9PSB0aGlzLmdldE1vdXNlKCJ5IikpIHsNCisJCQkJCQkJCQkJCXRoaXMubW91c2VVcERldGVjdCA9IHRydWU7DQorCQkJCQkJCQkJCQl2YXIgYXBwb2ludG1lbnRJZCA9IHRoaXMuZGF0YXBhdGgueHBhdGhRdWVyeSgnYXBwb2ludG1lbnRJZC90ZXh0KCknKTsNCisJCQkJCQkJCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJjbGljayAiLGFwcG9pbnRtZW50SWQpOw0KKwkJCQkJCQkJCQkJY2xhc3Nyb290LnBhcmVudC5zZWxlY3RDYWxlbmRhckV2ZW50KHRoaXMpOw0KKwkJCQkJCQkJCQl9DQorCQkJCQkJCQkJXV0+DQorCQkJCQkJCQk8L2hhbmRsZXI+DQorCQkJCQkJCQkNCisJCQkJCQkJCTxtZXRob2QgbmFtZT0iY2xvc2VEcmFnSXRlbSI+DQorCQkJCQkJCQkJPCFbQ0RBVEFbDQorCQkJCQkJCQkJCXZhciBhcHBvaW50bWVudElkID0gLTE7DQorCQkJCQkJCQkJCWx6LlRyYWNrLmRlYWN0aXZhdGUoY2xhc3Nyb290LmRheVZpZXdUcmFja0dyb3VwKTsNCisJCQkJCQkJCQkJDQorCQkJCQkJCQkJCS8vRml4bWU6IFByZXZlbnQgc2F2aW5nIHRoZSBvYmplY3QgaWYgaXQgaXMgZHJhZ2dlZCANCisJCQkJCQkJCQkJLy9hdCB0aGUgZXhhY3Qgc2FtZSBwb3NpdGlvbiBhcyBpdCB3YXMgYmVmb3JlDQorCQkJCQkJCQkJCWFwcG9pbnRtZW50SWQgPSBOdW1iZXIodGhpcy5kYXRhcGF0aC54cGF0aFF1ZXJ5KCdhcHBvaW50bWVudElkL3RleHQoKScpKTsNCisJCQkJCQkJCQkJDQorCQkJCQkJCQkJCWNsYXNzcm9vdC5jdXJyZW50RHJhZ0V2ZW50ID0gbnVsbDsNCisJCQkJCQkJCQkJcmV0dXJuIGFwcG9pbnRtZW50SWQ7DQorCQkJCQkJCQkJXV0+DQorCQkJCQkJCQk8L21ldGhvZD4NCisJCQkJCQkJCQ0KKwkJCQkJCQkJPG1ldGhvZCBuYW1lPSJjaGVja0lmRHJhZ2dpbmciIGFyZ3M9InRSZWYiPg0KKwkJCQkJCQkJCTwhW0NEQVRBWw0KKwkJCQkJCQkJCQlpZiAodGhpcy5tb3VzZVVwRGV0ZWN0KSB7DQorCQkJCQkJCQkJCQlyZXR1cm47DQorCQkJCQkJCQkJCX0NCisJCQkJCQkJCQkJaWYgKHRoaXMucmVtZW1iZXJYID09IHRoaXMuZ2V0TW91c2UoIngiKQ0KKwkJCQkJCQkJCQkJCQkmJiB0aGlzLnJlbWVtYmVyWSA9PSB0aGlzLmdldE1vdXNlKCJ5IikpIHsNCisJCQkJCQkJCQkJCWx6LlRpbWVyLmFkZFRpbWVyKCBuZXcgTHpEZWxlZ2F0ZSggdGhpcywgImNoZWNrSWZEcmFnZ2luZyIgKSwgMjUwICk7CQkJDQorCQkJCQkJCQkJCX0gZWxzZSB7DQorCQkJCQkJCQkJCQl0aGlzLnN0YXJ0RHJhZ0l0ZW0oZmFsc2UpOw0KKwkJCQkJCQkJCQl9DQorCQkJCQkJCQkJXV0+DQorCQkJCQkJCQk8L21ldGhvZD4NCisJCQkJCQkJCQ0KKwkJCQkJCQkJPG1ldGhvZCBuYW1lPSJzdGFydERyYWdJdGVtIiBhcmdzPSJkcmFnRW5kT25seSI+DQorCQkJCQkJCQkJPCFbQ0RBVEFbDQorCQkJCQkJCQkJCS8vd2UgbmVlZCB0byBtb3ZlIHRoZSBvYmplY3QgYnkgdGhlIHkgcG9zaXRpb24gdGhhdCB0aGUgbW91c2UNCisJCQkJCQkJCQkJLy93YXMgbW92ZWQgc2luY2UgbW91c2Vkb3duDQorCQkJCQkJCQkJCXZhciB0TmV3WSA9IHRoaXMueSArICh0aGlzLmdldE1vdXNlKCJ5IikgLSAgdGhpcy5yZW1lbWJlclkpOw0KKwkJCQkJCQkJCQ0KKwkJCQkJCQkJCQl0aGlzLnN0YXJ0ZWRUb0RyYWcgPSB0cnVlOw0KKwkJCQkJCQkJCQljbGFzc3Jvb3QuY3VycmVudE92ZXJUcmFja1ZpZXcgPSBwYXJlbnQucGFyZW50Ow0KKwkJCQkJCQkJCQljbGFzc3Jvb3QuY3VycmVudERyYWdFdmVudCA9IG5ldyBsei5kcmFnRXZlbnQoY2xhc3Nyb290LmRyYWdBbmREcm9wQXJlYS5fY29udGVudCx7DQorCQkJCQkJCQkJCQkJCXg6KGRyYWdFbmRPbmx5KSA/IHRoaXMuZ2V0QXR0cmlidXRlUmVsYXRpdmUoJ3gnLHBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudCkgOiBwYXJlbnQucGFyZW50LnBhcmVudC54LA0KKwkJCQkJCQkJCQkJCQlzdGFydHg6KGRyYWdFbmRPbmx5KSA/IHRoaXMuZ2V0QXR0cmlidXRlUmVsYXRpdmUoJ3gnLHBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudCkgOiBwYXJlbnQucGFyZW50LnBhcmVudC54LA0KKwkJCQkJCQkJCQkJCQl5OihkcmFnRW5kT25seSkgPyB0aGlzLnkgOiB0TmV3WSwNCisJCQkJCQkJCQkJCQkJc3RhcnR5OnRoaXMueSwNCisJCQkJCQkJCQkJCQkJYmdjb2xvcjp0aGlzLmJnY29sb3IsDQorCQkJCQkJCQkJCQkJCWhlaWdodDp0aGlzLmhlaWdodCwNCisJCQkJCQkJCQkJCQkJc3RhcnRoZWlnaHQ6dGhpcy5oZWlnaHQsDQorCQkJCQkJCQkJCQkJCXdpZHRoOihkcmFnRW5kT25seSkgPyB0aGlzLndpZHRoIDogcGFyZW50LndpZHRoLA0KKwkJCQkJCQkJCQkJCQlldmVudFJlZjp0aGlzLA0KKwkJCQkJCQkJCQkJCQlzaG93VGltZTpmYWxzZSwNCisJCQkJCQkJCQkJCQkJdGl0bGVUZXh0OnRoaXMuX3RpdGxlLnRleHQsDQorCQkJCQkJCQkJCQkJCWNhbGVuZGFyVmlld1JlZjpjbGFzc3Jvb3QsDQorCQkJCQkJCQkJCQkJCWRyYWdFbmRPbmx5OmRyYWdFbmRPbmx5DQorCQkJCQkJCQkJCQkJfSk7DQorCQkJCQkJCQkJCQkJDQorCQkJCQkJCQkJCWx6LlRyYWNrLmFjdGl2YXRlKGNsYXNzcm9vdC5kYXlWaWV3VHJhY2tHcm91cCk7DQorCQkJCQkJCQkJCXRoaXMuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7DQorCQkJCQkJCQkJXV0+DQorCQkJCQkJCQk8L21ldGhvZD4NCisJCQkJCQkJCQ0KKwkJCQkJCQkJPHRleHQgbmFtZT0iX3RpdGxlIiB4PSIyIiBkYXRhcGF0aD0idGl0bGUiIHRleHQ9IiRwYXRoeyAndGV4dCgpJyB9IiBjbGlwPSJ0cnVlIiANCisJCQkJCQkJCQkJd2lkdGg9IiR7IHBhcmVudC53aWR0aC0yIH0iIG11bHRpbGluZT0idHJ1ZSIgaGVpZ2h0PSIkeyBwYXJlbnQuaGVpZ2h0IH0iLz4NCisJCQkJCQkJCQ0KKwkJCQkJCQkJDQorCQkJCQkJCQk8dmlldyB3aWR0aD0iMjAiIGhlaWdodD0iNCIgdmFsaWduPSJib3R0b20iIGFsaWduPSJjZW50ZXIiIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignbWFpbkJvcmRlckNvbG9yJykgfSI+DQorCQkJCQkJCQkJPGhhbmRsZXIgbmFtZT0ib25tb3VzZW92ZXIiPg0KKwkJCQkJCQkJCQlsei5DdXJzb3Iuc2V0Q3Vyc29yR2xvYmFsKCdjYWxlbmRhcl9jaGFuZ2VfZXZlbnRfaGVpZ2h0X3JzYycpOw0KKwkJCQkJCQkJCTwvaGFuZGxlcj4NCisJCQkJCQkJCQk8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3V0Ij4NCisJCQkJCQkJCQkJbHouQ3Vyc29yLnJlc3RvcmVDdXJzb3IoKTsgDQorCQkJCQkJCQkJPC9oYW5kbGVyPg0KKwkJCQkJCQkJCTxoYW5kbGVyIG5hbWU9Im9ubW91c2Vkb3duIj4NCisJCQkJCQkJCQkJcGFyZW50LnN0YXJ0RHJhZ0l0ZW0odHJ1ZSk7DQorCQkJCQkJCQkJPC9oYW5kbGVyPg0KKwkJCQkJCQkJPC92aWV3Pg0KKwkJCQkJCQkJDQorCQkJCQkJCTwvdmlldz4NCisJCQkJCQk8L3ZpZXc+DQorCQkJCQkJDQorCQkJCQk8L3ZpZXc+DQorCQkJCQkNCisJCQkJCTxzaW1wbGVsYXlvdXQgYXhpcz0ieCIgc3BhY2luZz0iMCIgLz4NCisJCQkJCQ0KKwkJCQk8L3ZpZXc+DQorCQkJCQ0KKwkJCQk8b21fdnNjcm9sbGJhciAvPg0KKwkJCQkNCisJCQk8L3ZpZXc+DQorCQkJDQorCQk8L3ZpZXc+DQorCQkNCisJPC9jbGFzcz4NCisJDQorPC9saWJyYXJ5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpjYWxlbmRhci9jb21wb250ZW50cy9sYXlvdXRzL2x6TW9udGhWaWV3Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpjYWxlbmRhci9jb21wb250ZW50cy9sYXlvdXRzL2x6TW9udGhWaWV3Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTQ0ZmU1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9semNhbGVuZGFyL2NvbXBvbnRlbnRzL2xheW91dHMvbHpNb250aFZpZXcubHp4CkBAIC0wLDAgKzEsMjIyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPGxpYnJhcnk+DQorDQorCTxjbGFzcyBuYW1lPSJsek1vbnRoVmlldyIgZXh0ZW5kcz0idmlldyIgd2lkdGg9IiR7IHBhcmVudC53aWR0aCB9IiBoZWlnaHQ9IiR7IHBhcmVudC5oZWlnaHQgfSI+DQorCQkNCisJCTwhLS0NCisJCQlOYW1lIG9mIHRoZSB0cmFja2dyb3VwDQorCQkgLS0+DQorCQk8YXR0cmlidXRlIG5hbWU9Im1vbnRoVmlld1RyYWNrR3JvdXAiIHZhbHVlPSJtb250aFZpZXdUcmFja0dyb3VwIiB0eXBlPSJzdHJpbmciIC8+DQorCQkNCisJCTwhLS0gDQorCQkJQ3VycmVudCBEcmFnZ2luZyBvYmplY3QNCisJCSAtLT4NCisJCTxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudERyYWdFdmVudCIgdmFsdWU9Im51bGwiIC8+DQorCQkNCisJCTwhLS0gDQorCQkJQ3VycmVudCBkYXlEYXRlIHRoYXQgcmVjZWl2ZXMgdGhlIHRyYWNrIHNjcm9sbCBvdmVyDQorCQkgLS0+DQorCQk8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRPdmVyVHJhY2tWaWV3IiB2YWx1ZT0ibnVsbCIgLz4NCisJCQkNCisJCTx2aWV3IGRhdGFwYXRoPSJnZXRBcHBvaW50bWVudHNCeVdlZWtDYWxlbmRhclJlc3BvbnNlL3JldHVybiIgDQorCQkJCXdpZHRoPSIkeyBwYXJlbnQud2lkdGggfSIgaGVpZ2h0PSIkeyBNYXRoLnJvdW5kKCBwYXJlbnQuaGVpZ2h0LzYgKSB9IiA+DQorCQkNCisJCQk8IS0tIFRoZSBtb250aHMgLS0+DQorCQ0KKwkJCTwhLS0gVGhlIGRheXMgLS0+DQorCQkJPHZpZXcgbmFtZT0iZGF5cyIgZGF0YXBhdGg9ImRheXMiIHdpZHRoPSIkeyBNYXRoLnJvdW5kKCBwYXJlbnQud2lkdGgvNyApIH0iIGNsaXA9InRydWUiDQorCQkJCQkJaGVpZ2h0PSIkeyBwYXJlbnQuaGVpZ2h0IH0iIGJnY29sb3I9IjB4REREREREIiA+DQorCQkJDQorCQkJCTxhdHRyaWJ1dGUgbmFtZT0iZGF5RGF0ZSIgdmFsdWU9Im51bGwiIC8+DQorCQkJCQ0KKwkJCQk8aGFuZGxlciBuYW1lPSJvbmluaXQiPg0KKwkJCQkJbHouVHJhY2sucmVnaXN0ZXIodGhpcywgcGFyZW50LnBhcmVudC5tb250aFZpZXdUcmFja0dyb3VwKTsNCisJCQkJPC9oYW5kbGVyPg0KKwkJCQkNCisJCQkJPGhhbmRsZXIgbmFtZT0ib25tb3VzZXRyYWNrb3ZlciI+DQorCQkJICAgICAgICB0aGlzLl9jb250ZW50LnNldEF0dHJpYnV0ZSgnYmdjb2xvcicsIDB4RkYzMzAwKTsNCisJCQkgICAgICAgIHBhcmVudC5wYXJlbnQuY3VycmVudE92ZXJUcmFja1ZpZXcgPSB0aGlzOw0KKwkJCSAgICA8L2hhbmRsZXI+DQorCQkJDQorCQkJICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2V0cmFja291dCI+DQorCQkJICAgICAgICB0aGlzLl9jb250ZW50LnNldEF0dHJpYnV0ZSgnYmdjb2xvcicsIDB4RkZGRkZGKTsNCisJCQkgICAgICAgIHBhcmVudC5wYXJlbnQuY3VycmVudE92ZXJUcmFja1ZpZXcgPSBudWxsOw0KKwkJCSAgICA8L2hhbmRsZXI+DQorCQkJICAgIA0KKwkJCSAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNldHJhY2t1cCI+DQorCQkJICAgICAgICB0aGlzLl9jb250ZW50LnNldEF0dHJpYnV0ZSgnYmdjb2xvcicsIDB4RkZGRkZGKTsNCisJCQkgICAgPC9oYW5kbGVyPg0KKwkJCQkNCisJCQkJPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJkIj4NCisJCQkJCWlmKGQgaXMgbHouRGF0YU5vZGVNaXhpbil7DQorCQkJCQkJdmFyIGx6RGF0YVBvaW50ZXIgPSBuZXcgbHouZGF0YXBvaW50ZXIoKTsNCisJCQkJCQlsekRhdGFQb2ludGVyLnNldFBvaW50ZXIoZCk7DQorCQkJCQkJdmFyIHhtbERhdGUgPSBsekRhdGFQb2ludGVyLnhwYXRoUXVlcnkoJ3REYXRlL3RleHQoKScpOw0KKwkJCQkJCXZhciBzcGxpdERhdGUgPSB4bWxEYXRlLnNwbGl0KCItIik7DQorCQkJCQkJdGhpcy5kYXlEYXRlID0gbmV3IERhdGUoc3BsaXREYXRlWzBdLCBOdW1iZXIoc3BsaXREYXRlWzFdKS0xLCBzcGxpdERhdGVbMl0pOw0KKwkJCQkJCXRoaXMucmVuZGVyVmlldygpOw0KKwkJCQkJfQ0KKwkJCQk8L2hhbmRsZXI+DQorCQkJCQ0KKwkJCQk8bWV0aG9kIG5hbWU9InJlbmRlclZpZXciPg0KKwkJCQkJdmFyIHREYXkgPSB0aGlzLmRheURhdGUuZ2V0RGF0ZSgpOw0KKwkJCQkJdmFyIHRNb250aCA9IHRoaXMuZGF5RGF0ZS5nZXRNb250aCgpOw0KKwkJCQkJaWYgKHBhcmVudC5wYXJlbnQucGFyZW50LmlzQ3VycmVudE1vbnRoKHRNb250aCkpIHsNCisJCQkJCQl0aGlzLl9jb250ZW50Ll90aXRsZS5zZXRBdHRyaWJ1dGUoImZnY29sb3IiLDB4MDAwMDAwKTsNCisJCQkJCQlpZiAodERheSA9PSAxKSB7DQorCQkJCQkJCXREYXkgPSB0RGF5ICsgIi4iICsgY2FudmFzLm1vbnRobmFtZXNbdGhpcy5kYXlEYXRlLmdldE1vbnRoKCldOw0KKwkJCQkJCX0NCisJCQkJCX0gZWxzZSB7DQorCQkJCQkJdGhpcy5fY29udGVudC5fdGl0bGUuc2V0QXR0cmlidXRlKCJmZ2NvbG9yIiwweEJCQkJCQik7DQorCQkJCQl9DQorCQkJCQl0aGlzLl9jb250ZW50Ll90aXRsZS5zZXRBdHRyaWJ1dGUoInRleHQiLHREYXkpOw0KKwkJCQk8L21ldGhvZD4NCisJCQkJDQorCQkJCTx2aWV3IG5hbWU9Il9jb250ZW50IiB3aWR0aD0iJHsgcGFyZW50LndpZHRoIC0xIH0iIGJnY29sb3I9IjB4RkZGRkZGIg0KKwkJCQkJCQkJaGVpZ2h0PSIkeyBwYXJlbnQuaGVpZ2h0IC0xIH0iIGNsaWNrYWJsZT0idHJ1ZSIgc2hvd2hhbmRjdXJzb3I9ImZhbHNlIj4NCisJCQkJCQ0KKwkJCQkJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+DQorCQkJCQkJcGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50Lm9uTmV3RXZlbnREYXRlLnNlbmRFdmVudChwYXJlbnQuZGF5RGF0ZSk7DQorCQkJCQk8L2hhbmRsZXI+DQorCQkJCQkNCisJCQkJCTxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdmVyIj4NCisJCQkJCQl0aGlzLnNldEF0dHJpYnV0ZSgiYmdjb2xvciIsY2FudmFzLmdldFRoZW1lQ29sb3IoJ3NlY29uZEJvcmRlckNvbG9yJykpOw0KKwkJCQkJPC9oYW5kbGVyPg0KKwkJCQkJDQorCQkJCQk8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3V0Ij4NCisJCQkJCQl0aGlzLnNldEF0dHJpYnV0ZSgiYmdjb2xvciIsMHhGRkZGRkYpOw0KKwkJCQkJPC9oYW5kbGVyPg0KKwkJCQkJCQkNCisJCQkJCTx0ZXh0IG5hbWU9Il90aXRsZSI+DQorCQkJCQkJPGhhbmRsZXIgbmFtZT0ib25tb3VzZW92ZXIiPg0KKwkJCQkJCQl0aGlzLnNldEF0dHJpYnV0ZSgiZm9udHN0eWxlIiwiYm9sZCIpOw0KKwkJCQkJCTwvaGFuZGxlcj4NCisJCQkJCQk8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3V0Ij4NCisJCQkJCQkJdGhpcy5zZXRBdHRyaWJ1dGUoImZvbnRzdHlsZSIsInBsYWluIik7DQorCQkJCQkJPC9oYW5kbGVyPg0KKwkJCQkJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPg0KKwkJCQkJCQlwYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50Lm9uU2VsZWN0RGF0ZS5zZW5kRXZlbnQocGFyZW50LnBhcmVudC5kYXlEYXRlKTsNCisJCQkJCQk8L2hhbmRsZXI+DQorCQkJCQk8L3RleHQ+DQorCQkJCQ0KKwkJCQkJPHZpZXcgd2lkdGg9IiR7IHBhcmVudC53aWR0aCB9IiB5PSIxOCI+DQorCQkJCQkJPHZpZXcgZGF0YXBhdGg9ImFwcG9pbnRtZW50cyIgYmdjb2xvcj0iMHhBNTlDRkMiIHdpZHRoPSIkeyBwYXJlbnQud2lkdGggfSI+DQorCQkJCQkJDQorCQkJCQkJCTxhdHRyaWJ1dGUgbmFtZT0icmVtZW1iZXJYIiB2YWx1ZT0iLTEiIC8+DQorCQkJCQkJCTxhdHRyaWJ1dGUgbmFtZT0icmVtZW1iZXJZIiB2YWx1ZT0iLTEiIC8+DQorCQkJCQkJCTxhdHRyaWJ1dGUgbmFtZT0ibW91c2VVcERldGVjdCIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIi8+DQorCQkJCQkJCTxhdHRyaWJ1dGUgbmFtZT0ic3RhcnRlZFRvRHJhZyIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIi8+DQorCQkJCQkJCTxoYW5kbGVyIG5hbWU9Im9ubW91c2Vkb3duIj4NCisJCQkJCQkJCXRoaXMubW91c2VVcERldGVjdCA9IGZhbHNlOw0KKwkJCQkJCQkJdGhpcy5zdGFydGVkVG9EcmFnID0gZmFsc2U7DQorCQkJCQkJCQl0aGlzLnJlbWVtYmVyWCA9IHRoaXMuZ2V0TW91c2UoIngiKTsNCisJCQkJCQkJCXRoaXMucmVtZW1iZXJZID0gdGhpcy5nZXRNb3VzZSgieSIpOw0KKwkJCQkJCQkJbHouVGltZXIuYWRkVGltZXIoIG5ldyBMekRlbGVnYXRlKCB0aGlzLCAiY2hlY2tJZkRyYWdnaW5nIiApLCAyNTAgKTsNCisJCQkJCQkJPC9oYW5kbGVyPg0KKwkJCQkJCQk8aGFuZGxlciBuYW1lPSJvbm1vdXNldXAiID4NCisJCQkJCQkJCTwhW0NEQVRBWw0KKwkJCQkJCQkJCWlmICh0aGlzLnJlbWVtYmVyWCA9PSB0aGlzLmdldE1vdXNlKCJ4IikNCisJCQkJCQkJCQkJCSYmIHRoaXMucmVtZW1iZXJZID09IHRoaXMuZ2V0TW91c2UoInkiKSkgew0KKwkJCQkJCQkJCQl0aGlzLm1vdXNlVXBEZXRlY3QgPSB0cnVlOw0KKwkJCQkJCQkJCQl2YXIgYXBwb2ludG1lbnRJZCA9IHRoaXMuZGF0YXBhdGgueHBhdGhRdWVyeSgnYXBwb2ludG1lbnRJZC90ZXh0KCknKTsNCisJCQkJCQkJCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImNsaWNrICIsYXBwb2ludG1lbnRJZCk7DQorCQkJCQkJCQkJCWNsYXNzcm9vdC5wYXJlbnQuc2VsZWN0Q2FsZW5kYXJFdmVudCh0aGlzKTsNCisJCQkJCQkJCQl9DQorCQkJCQkJCQldXT4NCisJCQkJCQkJPC9oYW5kbGVyPg0KKwkJCQkJCQkNCisJCQkJCQkJPG1ldGhvZCBuYW1lPSJjbG9zZURyYWdJdGVtIj4NCisJCQkJCQkJCXZhciBhcHBvaW50bWVudElkID0gLTE7DQorCQkJCQkJCQlsei5UcmFjay5kZWFjdGl2YXRlKGNsYXNzcm9vdC5tb250aFZpZXdUcmFja0dyb3VwKTsNCisJCQkJCQkJCQ0KKwkJCQkJCQkJaWYgKGNsYXNzcm9vdC5jdXJyZW50T3ZlclRyYWNrVmlldyA9PSBudWxsIA0KKwkJCQkJCQkJCQkJCQl8fCBjbGFzc3Jvb3QuY3VycmVudE92ZXJUcmFja1ZpZXcgPT0gcGFyZW50LnBhcmVudC5wYXJlbnQpIHsNCisJCQkJCQkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiTW92ZSB0byBzYW1lIERhdGUgb3Igb3V0c2lkZSBjYWxlbmRhciIpOw0KKwkJCQkJCQkJCXRoaXMuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOwkNCisJCQkJCQkJCX0gZWxzZSB7DQorCQkJCQkJCQkJYXBwb2ludG1lbnRJZCA9IE51bWJlcih0aGlzLmRhdGFwYXRoLnhwYXRoUXVlcnkoJ2FwcG9pbnRtZW50SWQvdGV4dCgpJykpOw0KKwkJCQkJCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJNb3ZlIHRvIG5ldyBEYXRlIGFwcG9pbnRtZW50SWQgIixhcHBvaW50bWVudElkKTsNCisJCQkJCQkJCX0NCisJCQkJCQkJCQ0KKwkJCQkJCQkJY2xhc3Nyb290LmN1cnJlbnREcmFnRXZlbnQgPSBudWxsOw0KKwkJCQkJCQkJcmV0dXJuIGFwcG9pbnRtZW50SWQ7DQorCQkJCQkJCTwvbWV0aG9kPg0KKwkJCQkJCQkNCisJCQkJCQkJPG1ldGhvZCBuYW1lPSJjaGVja0lmRHJhZ2dpbmciIGFyZ3M9InRSZWYiPg0KKwkJCQkJCQkJPCFbQ0RBVEFbDQorCQkJCQkJCQkJaWYgKHRoaXMubW91c2VVcERldGVjdCkgew0KKwkJCQkJCQkJCQlyZXR1cm47DQorCQkJCQkJCQkJfQ0KKwkJCQkJCQkJCWlmICh0aGlzLnJlbWVtYmVyWCA9PSB0aGlzLmdldE1vdXNlKCJ4IikNCisJCQkJCQkJCQkJCQkmJiB0aGlzLnJlbWVtYmVyWSA9PSB0aGlzLmdldE1vdXNlKCJ5IikpIHsNCisJCQkJCQkJCQkJbHouVGltZXIuYWRkVGltZXIoIG5ldyBMekRlbGVnYXRlKCB0aGlzLCAiY2hlY2tJZkRyYWdnaW5nIiApLCAyNTAgKTsJCQkNCisJCQkJCQkJCQl9IGVsc2Ugew0KKwkJCQkJCQkJCQl0aGlzLnN0YXJ0ZWRUb0RyYWcgPSB0cnVlOw0KKwkJCQkJCQkJCQl2YXIgc3RhcnR4ID0gY2FudmFzLmdldE1vdXNlKCJ4IiktKHRoaXMud2lkdGgvMik7DQorCQkJCQkJCQkJCXZhciBzdGFydHkgPSBjYW52YXMuZ2V0TW91c2UoInkiKS0odGhpcy5oZWlnaHQvMik7DQorCQkJCQkJCQkJCWNsYXNzcm9vdC5jdXJyZW50RHJhZ0V2ZW50ID0gbmV3IGx6LmRyYWdFdmVudChjYW52YXMsew0KKwkJCQkJCQkJCQkJCQl4OnN0YXJ0eCwNCisJCQkJCQkJCQkJCQkJc3RhcnR4OnN0YXJ0eCwNCisJCQkJCQkJCQkJCQkJeTpzdGFydHksDQorCQkJCQkJCQkJCQkJCXN0YXJ0eTpzdGFydHksDQorCQkJCQkJCQkJCQkJCWJnY29sb3I6dGhpcy5iZ2NvbG9yLA0KKwkJCQkJCQkJCQkJCQloZWlnaHQ6MTgsDQorCQkJCQkJCQkJCQkJCXdpZHRoOnRoaXMud2lkdGgsDQorCQkJCQkJCQkJCQkJCWV2ZW50UmVmOnRoaXMsDQorCQkJCQkJCQkJCQkJCXRpbWVUZXh0OnRoaXMuX3RpbWUudGV4dCwNCisJCQkJCQkJCQkJCQkJdGl0bGVUZXh0OnRoaXMuX3RpdGxlLnRleHQsDQorCQkJCQkJCQkJCQkJCWNhbGVuZGFyVmlld1JlZjpjbGFzc3Jvb3QsDQorCQkJCQkJCQkJCQkJCWZpeFRvUG9zaXRpb25JbkNhbGVuZGFyOmZhbHNlLA0KKwkJCQkJCQkJCQkJCQlpc01vbnRoTW92ZTp0cnVlCQkJCQkJCQkJCQ0KKwkJCQkJCQkJCQkJCX0pOw0KKwkJCQkJCQkJCQkJCQ0KKwkJCQkJCQkJCQlsei5UcmFjay5hY3RpdmF0ZShjbGFzc3Jvb3QubW9udGhWaWV3VHJhY2tHcm91cCk7DQorCQkJCQkJCQkJCXRoaXMuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CQ0KKwkJCQkJCQkJCX0NCisJCQkJCQkJCV1dPg0KKwkJCQkJCQk8L21ldGhvZD4NCisJCQkJCQkJDQorCQkJCQkJCTx0ZXh0IG5hbWU9Il90aW1lIiBkYXRhcGF0aD0ic3RhcnQiID4NCisJCQkJCQkJCTxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0iZCI+DQorCQkJCQkJCQkJdGhpcy5zZXRBdHRyaWJ1dGUoInRleHQiLHBhcnNlVGltZVN0cmluZ0Zyb21YbWxTdHJpbmcoZC5jaGlsZE5vZGVzWzBdLmRhdGEpKTsNCisJCQkJCQkJCTwvaGFuZGxlcj4NCisJCQkJCQkJPC90ZXh0Pg0KKwkJCQkJCQk8dGV4dCBuYW1lPSJfdGl0bGUiIHg9IjM2IiBkYXRhcGF0aD0idGl0bGUiIHRleHQ9IiRwYXRoeyAndGV4dCgpJyB9IiBjbGlwPSJ0cnVlIg0KKwkJCQkJCQkJCQkJd2lkdGg9IiR7IHBhcmVudC53aWR0aC0zNiB9IiBoZWlnaHQ9IiR7IHBhcmVudC5oZWlnaHQgfSIvPg0KKwkJCQkJCQkNCisJCQkJCQk8L3ZpZXc+DQorCQkJCQkJPHNpbXBsZWxheW91dCBheGlzPSJ5IiBzcGFjaW5nPSIxIiAvPg0KKyAJCQkJCTwvdmlldz4NCisgCQkJCQkNCisJCQkJPC92aWV3Pg0KKwkJCQ0KKwkJCTwvdmlldz4NCisJCQkNCisJCTxzaW1wbGVsYXlvdXQgYXhpcz0ieCIgc3BhY2luZz0iMCIgLz4NCisJCTwvdmlldz4NCisJCQ0KKwkJPHNpbXBsZWxheW91dCBheGlzPSJ5IiBzcGFjaW5nPSIwIiAvPg0KKwkNCisJPC9jbGFzcz4NCisJDQorPC9saWJyYXJ5Pg0KKwkKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6Y2FsZW5kYXIvY29tcG9udGVudHMvbGlicmFyeS5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6Y2FsZW5kYXIvY29tcG9udGVudHMvbGlicmFyeS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDNjMTYyMgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpjYWxlbmRhci9jb21wb250ZW50cy9saWJyYXJ5Lmx6eApAQCAtMCwwICsxLDU4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPGxpYnJhcnk+DQorDQorCTwhLS0gQVBMIEF1dGhvciBzZWJhd2FnbmVyIC0tPg0KKwk8cmVzb3VyY2UgbmFtZT0iY2FsZW5kYXJfb25lX2RheV9ob3Vyc19pbmRleF9iZ19yc2MiIHNyYz0icmVzb3VyY2VzL29uZV9kYXlfaG91cnMucG5nIiAvPg0KKwk8IS0tIEFQTCBBdXRob3Igc2ViYXdhZ25lciAtLT4NCisJPHJlc291cmNlIG5hbWU9ImNhbGVuZGFyX2RheV9ob3Vyc19pbmRleF9iZ19yc2MiIHNyYz0icmVzb3VyY2VzL2RheV9ob3Vyc19pbmRleF9vbmx5LnBuZyIgLz4NCisJPCEtLSBBUEwgQXV0aG9yIHNlYmF3YWduZXIgLS0+DQorCTxyZXNvdXJjZSBuYW1lPSJjYWxlbmRhcl9kYXlfYmdfcnNjIiBzcmM9InJlc291cmNlcy9kYXlfaG91cnMucG5nIiAvPg0KKwk8IS0tIEZhbUZhbSBJY29uIFNldCAtLT4NCisJPHJlc291cmNlIG5hbWU9ImNhbGVuZGFyX2FkZF91c2VyX3JzYyIgc3JjPSJyZXNvdXJjZXMvdXNlcl9hZGQucG5nIiAvPg0KKwk8IS0tIEZhbUZhbSBJY29uIFNldCAtLT4NCisJPHJlc291cmNlIG5hbWU9ImNhbGVuZGFyX2FkZF91c2VyX2V4dGVybmFsX3JzYyIgc3JjPSJyZXNvdXJjZXMvdXNlcl9nby5wbmciIC8+DQorCTwhLS0gRmFtRmFtIEljb24gU2V0IC0tPg0KKwk8cmVzb3VyY2UgbmFtZT0iY2FsZW5kYXJfZGVsZXRlX2J1dHRvbiIgc3JjPSJyZXNvdXJjZXMvZGVsZXRlLnBuZyIgLz4NCisJPCEtLSBBUEwgQXV0aG9yIHNlYmF3YWduZXIgLS0+DQorCTxyZXNvdXJjZSBuYW1lPSJzaW5nbGVfZXZlbnRfcG9wdXBfYmFja2dyb3VuZF9yc2MiIHNyYz0icmVzb3VyY2VzL3NpbmdsZV9ldmVudF9wb3B1cF9iYWNrZ3JvdW5kLnN3ZiIgLz4NCisJPCEtLSBBUEwgQXV0aG9yIHNlYmF3YWduZXIgLS0+DQorCTxyZXNvdXJjZSBuYW1lPSJjYWxlbmRhcl9yZXN1bHRzZXRfbmV4dF9yc2MiIHNyYz0icmVzb3VyY2VzL3Jlc3VsdHNldF9uZXh0LnBuZyIgLz4NCisJPCEtLSBBUEwgQXV0aG9yIHNlYmF3YWduZXIgLS0+DQorCTxyZXNvdXJjZSBuYW1lPSJjYWxlbmRhcl9yZXN1bHRzZXRfcHJldmlvdXNfcnNjIiBzcmM9InJlc291cmNlcy9yZXN1bHRzZXRfcHJldmlvdXMucG5nIiAvPg0KKwk8IS0tIEFQTCBBdXRob3Igc2ViYXdhZ25lciAtLT4NCisJPHJlc291cmNlIG5hbWU9ImNhbGVuZGFyX2NvbnRhY3RfY2FsZW5kYXJfcnNjIiBzcmM9InJlc291cmNlcy9jYWxlbmRhci5wbmciIC8+DQorCTwhLS0gQVBMIEF1dGhvciBzZWJhd2FnbmVyIC0tPg0KKwk8cmVzb3VyY2UgbmFtZT0iY2FsZW5kYXJfcmV2ZXJ0X3RvX293bl91bmRvX3JzYyIgc3JjPSJyZXNvdXJjZXMvYXJyb3dfdW5kby5wbmciIC8+DQorCTwhLS0gQVBMIEF1dGhvciBzZWJhd2FnbmVyIC0tPg0KKwk8cmVzb3VyY2UgbmFtZT0iY2FsZW5kYXJfY2hhbmdlX2V2ZW50X2hlaWdodF9yc2MiIHNyYz0icmVzb3VyY2VzL2hlaWdodF9jaGFuZ2VfY3Vyc29yLnN3ZiIgLz4NCisNCisJPGluY2x1ZGUgaHJlZj0ibGF5b3V0cy8iIC8+DQorCTxpbmNsdWRlIGhyZWY9ImFkZEF0dGVuZGVlLmx6eCIgLz4NCisJPGluY2x1ZGUgaHJlZj0ibHpDYWxHcmlkVGVtcERyYXdWaWV3Lmx6eCIgLz4NCisJPGluY2x1ZGUgaHJlZj0iYWRkRXh0ZXJuYWxBdHRlbmRlZS5sengiIC8+DQorCTxpbmNsdWRlIGhyZWY9ImF0dGVuZGVlTGlzdEl0ZW0ubHp4IiAvPg0KKwk8aW5jbHVkZSBocmVmPSJsekNhbGVuZGFyR3JpZC5sengiIC8+DQorCTxpbmNsdWRlIGhyZWY9InVzZXJDb250YWN0c0NhbGVuZGFyLmx6eCIgLz4NCisJPGluY2x1ZGUgaHJlZj0ibHpWaWV3Q2FsZW5kYXJFdmVudC5sengiIC8+DQorCTxpbmNsdWRlIGhyZWY9Imx6RWRpdENhbGVuZGFyRXZlbnQubHp4IiAvPg0KKw0KKzwvbGlicmFyeT4NCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6Y2FsZW5kYXIvY29tcG9udGVudHMvbHpDYWxHcmlkVGVtcERyYXdWaWV3Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpjYWxlbmRhci9jb21wb250ZW50cy9sekNhbEdyaWRUZW1wRHJhd1ZpZXcubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0NGUzM2IKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6Y2FsZW5kYXIvY29tcG9udGVudHMvbHpDYWxHcmlkVGVtcERyYXdWaWV3Lmx6eApAQCAtMCwwICsxLDEyMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+DQorPCEtLQ0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAgDQorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICAgIAkgIA0KKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICB1bmRlciB0aGUgTGljZW5zZS4NCisgIA0KKy0tPg0KKzxsaWJyYXJ5Pg0KKw0KKwk8Y2xhc3MgbmFtZT0ibHpDYWxHcmlkVGVtcERyYXdWaWV3IiBleHRlbmRzPSJ2aWV3IiBvcGFjaXR5PSIwLjYiDQorCQkJCWJnY29sb3I9IjB4QTU5Q0ZDIiB3aWR0aD0iJHsgcGFyZW50LndpZHRoIH0iIGhlaWdodD0iNjAiPg0KKwkNCisJCTxhdHRyaWJ1dGUgbmFtZT0ic3RhcnR5IiB2YWx1ZT0iLTEiIHR5cGU9Im51bWJlciIgLz4NCisJCQ0KKwkJPGF0dHJpYnV0ZSBuYW1lPSJoZWlnaHRJbk1pbnV0ZXMiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+DQorCQkNCisJCTxhdHRyaWJ1dGUgbmFtZT0idFBpeGVsczMwTWludXRlcyIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4NCisJCQ0KKwkJPGhhbmRsZXIgbmFtZT0ib25pZGxlIiByZWZlcmVuY2U9Ikx6SWRsZVNlcnZpY2UuTHpJZGxlIj4NCisJCQk8IVtDREFUQVsNCisJCQkJLy9TY3JvbGwgY2FsZW5kYXIgZGF5IHZpZXcgdG8gcG9zaXRpb24gaWYgbmVjY2Vzc2FyeQ0KKwkJCQl2YXIgdFBhcmVudFNjcm9sbHkgPSBwYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQuZ2V0TW91c2UoInkiKTsNCisJCQkJaWYgKHRQYXJlbnRTY3JvbGx5IDwgMCkgew0KKwkJCQkJaWYgKHBhcmVudC5wYXJlbnQucGFyZW50LnkgPCAwKSB7DQorCQkJCQkJaWYgKHBhcmVudC5wYXJlbnQucGFyZW50LnkrMjAgPCAwKSB7DQorCQkJCQkJCXBhcmVudC5wYXJlbnQucGFyZW50LnNldEF0dHJpYnV0ZSgieSIscGFyZW50LnBhcmVudC5wYXJlbnQueSsyMCk7DQorCQkJCQkJfSBlbHNlIHsNCisJCQkJCQkJcGFyZW50LnBhcmVudC5wYXJlbnQuc2V0QXR0cmlidXRlKCJ5IiwwKTsNCisJCQkJCQl9DQorCQkJCQl9DQorCQkJCX0gZWxzZSBpZiAocGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LmhlaWdodCA8IHRQYXJlbnRTY3JvbGx5KSB7DQorCQkJCQl2YXIgbWF4U2Nyb2xsID0gcGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LmhlaWdodCAtIHBhcmVudC5wYXJlbnQucGFyZW50LmhlaWdodDsNCisJCQkJCWlmIChwYXJlbnQucGFyZW50LnBhcmVudC55ID4gbWF4U2Nyb2xsKSB7DQorCQkJCQkJaWYgKHBhcmVudC5wYXJlbnQucGFyZW50LnktMjAgPiBtYXhTY3JvbGwpIHsNCisJCQkJCQkJcGFyZW50LnBhcmVudC5wYXJlbnQuc2V0QXR0cmlidXRlKCJ5IixwYXJlbnQucGFyZW50LnBhcmVudC55LTIwKTsNCisJCQkJCQl9IGVsc2Ugew0KKwkJCQkJCQlwYXJlbnQucGFyZW50LnBhcmVudC5zZXRBdHRyaWJ1dGUoInkiLG1heFNjcm9sbCk7DQorCQkJCQkJfQ0KKwkJCQkJfSBlbHNlIHsNCisJCQkJCQlwYXJlbnQucGFyZW50LnBhcmVudC5zZXRBdHRyaWJ1dGUoInkiLG1heFNjcm9sbCk7DQorCQkJCQl9DQorCQkJCX0NCisJCQkJDQorCQkJCS8vZml4IGhlaWdodCBhbmQgcG9zaXRpb24gZGVwZW5kaW5nIGlmIGFyZWEgaXMgc2VsZWN0ZWQgaW4gdG9wIG9yIGJvdHRvbSBvZiBzdGFydGluZyANCisJCQkJLy9wb3NpdGlvbiBpbiBkYXkgdmlldw0KKwkJCQl2YXIgdE5ld01vdXNlWSA9IHBhcmVudC5nZXRNb3VzZSgieSIpOw0KKwkJCQl0TmV3TW91c2VZID0gTWF0aC5yb3VuZCh0TmV3TW91c2VZL3RQaXhlbHMzME1pbnV0ZXMpKnRQaXhlbHMzME1pbnV0ZXM7DQorCQkJCWlmICh0TmV3TW91c2VZID4gdGhpcy5zdGFydHkpIHsNCisJCQkJCXZhciBuZXdIZWlnaHQgPSB0TmV3TW91c2VZIC0gc3RhcnR5Ow0KKwkJCQkJaWYgKG5ld0hlaWdodCA+IChwYXJlbnQuaGVpZ2h0LXN0YXJ0eSkpIHsNCisJCQkJCQluZXdIZWlnaHQgPSBwYXJlbnQuaGVpZ2h0LXN0YXJ0eTsNCisJCQkJCX0NCisJCQkJCXRoaXMuc2V0QXR0cmlidXRlKCJ5Iix0aGlzLnN0YXJ0eSk7DQorCQkJCQl0aGlzLnNldEF0dHJpYnV0ZSgiaGVpZ2h0IixuZXdIZWlnaHQpOw0KKwkJCQl9IGVsc2Ugew0KKwkJCQkJaWYgKHROZXdNb3VzZVkgPCAwKSB7DQorCQkJCQkJdE5ld01vdXNlWSA9IDA7DQorCQkJCQl9DQorCQkJCQl2YXIgbmV3SGVpZ2h0ID0gdGhpcy5zdGFydHkgLSB0TmV3TW91c2VZOw0KKwkJCQkJdGhpcy5zZXRBdHRyaWJ1dGUoInkiLHROZXdNb3VzZVkpOw0KKwkJCQkJdGhpcy5zZXRBdHRyaWJ1dGUoImhlaWdodCIsbmV3SGVpZ2h0KTsNCisJCQkJfQ0KKwkJCQlpZiAodGhpcy5oZWlnaHQgPT0gMCkgew0KKwkJCQkJdGhpcy5zZXRBdHRyaWJ1dGUoImhlaWdodCIsdFBpeGVsczMwTWludXRlcyk7DQorCQkJCX0NCisJCQkJaWYgKHRoaXMuaGVpZ2h0ID09IHRQaXhlbHMzME1pbnV0ZXMgDQorCQkJCQkJCSYmIHRoaXMuaGVpZ2h0K3RoaXMueSA+PSBwYXJlbnQucGFyZW50LnBhcmVudC5oZWlnaHQpIHsNCisJCQkJCXRoaXMuc2V0QXR0cmlidXRlKCJ5IiwgcGFyZW50LnBhcmVudC5wYXJlbnQuaGVpZ2h0LXRQaXhlbHMzME1pbnV0ZXMpOw0KKwkJCQl9DQorCQkJCQ0KKwkJCQkvL3Nob3cgc3RhcnQgdGltZSBvZiBuZXcgZXZlbnQNCisJCQkJdmFyIHN0YXJ0TWludXRlc1RvdGFsID0gdGhpcy5nZXRTdGFydE1pbnV0ZXNUb3RhbCgpOw0KKwkJCQl2YXIgc3RhcnRIb3VycyA9IE1hdGguZmxvb3Ioc3RhcnRNaW51dGVzVG90YWwvNjApOw0KKwkJCQl2YXIgc3RhcnRNaW51dGVzID0gc3RhcnRNaW51dGVzVG90YWwtKHN0YXJ0SG91cnMqNjApOw0KKwkJCQlpZiAoc3RhcnRIb3VycyA8IDEwKSB7DQorCQkJCQlzdGFydEhvdXJzID0gIjAiK3N0YXJ0SG91cnM7DQorCQkJCX0NCisJCQkJaWYgKHN0YXJ0TWludXRlcyA8IDEwKSB7DQorCQkJCQlzdGFydE1pbnV0ZXMgPSAiMCIrc3RhcnRNaW51dGVzOw0KKwkJCQl9DQorCQkJCQ0KKwkJCQl2YXIgZW5kTWludXRlc1RvdGFsID0gdGhpcy5nZXRFbmRNaW51dGVzVG90YWwoKTsNCisJCQkJdmFyIGVuZEhvdXJzID0gTWF0aC5mbG9vcihlbmRNaW51dGVzVG90YWwvNjApOw0KKwkJCQl2YXIgZW5kTWludXRlcyA9IGVuZE1pbnV0ZXNUb3RhbC0oZW5kSG91cnMqNjApOw0KKwkJCQlpZiAoZW5kSG91cnMgPCAxMCkgew0KKwkJCQkJZW5kSG91cnMgPSAiMCIrZW5kSG91cnM7DQorCQkJCX0NCisJCQkJaWYgKGVuZE1pbnV0ZXMgPCAxMCkgew0KKwkJCQkJZW5kTWludXRlcyA9ICIwIitlbmRNaW51dGVzOw0KKwkJCQl9DQorCQkJCQ0KKwkJCQl0aGlzLmZyb21Ub1RpbWUuc2V0QXR0cmlidXRlKCJ0ZXh0IiwiIitzdGFydEhvdXJzKyI6IitzdGFydE1pbnV0ZXMrIiAtICIrZW5kSG91cnMrIjoiK2VuZE1pbnV0ZXMpOw0KKwkJCQkNCisJCQldXT4NCisJCTwvaGFuZGxlcj4NCisJCQ0KKwkJPG1ldGhvZCBuYW1lPSJnZXRTdGFydE1pbnV0ZXNUb3RhbCI+DQorCQkJcmV0dXJuIE1hdGgucm91bmQodGhpcy55L2hlaWdodEluTWludXRlcyk7DQorCQk8L21ldGhvZD4NCisJCQ0KKwkJPG1ldGhvZCBuYW1lPSJnZXRFbmRNaW51dGVzVG90YWwiPg0KKwkJCXJldHVybiBNYXRoLnJvdW5kKCh0aGlzLnkrdGhpcy5oZWlnaHQpL2hlaWdodEluTWludXRlcyk7DQorCQk8L21ldGhvZD4NCisJCQ0KKwkJPHRleHQgbmFtZT0iZnJvbVRvVGltZSIgcmVzaXplPSJ0cnVlIiBmb250c2l6ZT0iMTAiIGZnY29sb3I9IjB4NjY2NjY2IiAvPg0KKwkNCisJPC9jbGFzcz4NCisNCis8L2xpYnJhcnk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9semNhbGVuZGFyL2NvbXBvbnRlbnRzL2x6Q2FsZW5kYXJHcmlkLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpjYWxlbmRhci9jb21wb250ZW50cy9sekNhbGVuZGFyR3JpZC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWZkOTljMgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpjYWxlbmRhci9jb21wb250ZW50cy9sekNhbGVuZGFyR3JpZC5sengKQEAgLTAsMCArMSwxNzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/Pg0KKzwhLS0NCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgIA0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAgICAJICANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAgdW5kZXIgdGhlIExpY2Vuc2UuDQorICANCistLT4NCis8bGlicmFyeT4NCisNCisJPCEtLS0NCisJCUNyZWF0ZSB0aGUgdmlzdWFsIG91dHB1dCBmb3IgdGhlIHZpZXdzdGF0ZXM6IGRheXMsIG1vbnRocywgd2Vla3MgDQorCQlhbmQgbmF2aWdhdGlvbiBiZXR3ZWVuIHRoZSB2aWV3c3RhdGVzDQorCSAtLT4NCisJPGNsYXNzIG5hbWU9Imx6Q2FsZW5kYXJHcmlkIiBleHRlbmRzPSJ2aWV3IiB4PSIyMDQiIHk9IjI2IiBiZ2NvbG9yPSIweEZGRkZGRiINCisJCQkJCXdpZHRoPSIkeyBwYXJlbnQud2lkdGggLSAyMDQgfSIgaGVpZ2h0PSIkeyBwYXJlbnQuaGVpZ2h0LTI2IH0iID4NCisJCQ0KKwkJPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50RGF0ZSIgdmFsdWU9Im51bGwiIC8+DQorCQk8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRXZWVrIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPg0KKwkJPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50RGF5IiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPg0KKwkJPGF0dHJpYnV0ZSBuYW1lPSJ2aWV3VHlwZSIgdmFsdWU9Im1vbnRoIiB0eXBlPSJzdHJpbmciIC8+DQorCQkNCisJCTwhLS0tDQorCQkJUHJldmVudCBmcm9tIHJlLXJlbmRlcmluZyB3aGVuIHN3aXRjaGluZyB0aGUgdmlld1N0YXRlIA0KKwkJIC0tPg0KKwkJPGF0dHJpYnV0ZSBuYW1lPSJyZVJlbmRlckxvY2siIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4NCisJCQ0KKwkJPCEtLS0NCisJCQlBIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBzZWxlY3RlZCBjYWxlbmRhciBldmVudCB2aWV3DQorCQkgLS0+DQorCQk8YXR0cmlidXRlIG5hbWU9ImNhbGVuZGFyRXZlbnQiIHZhbHVlPSJudWxsIiAvPg0KKwkJDQorCQk8IS0tLQ0KKwkJCVRocm93biB3aGVuZXZlciB0aGUgdXNlciBzY3JvbGxzIHRoZSBkYXkgb3Igd2VlayB2aWV3DQorCQkgLS0+DQorCQk8ZXZlbnQgbmFtZT0ib25TY29sbENvbnRlbnQiIC8+DQorCQkNCisJCTwhLS0tDQorCQkJVGhyb3duIHdoZW4gdGhlIHVzZXIgY2xpY2tzIG9uIHRoZSBkYXRlIGhlYWRlciBpbiB3ZWVrIG9yIG9uIHRoZSANCisJCQlkYXRlIHRleHQgaW4gdGhlIHdlZWsgdmlldw0KKwkJIC0tPg0KKwkJPGV2ZW50IG5hbWU9Im9uU2VsZWN0RGF0ZSIgLz4NCisJCQ0KKwkJPCEtLS0NCisJCQlUaHJvd24gd2hlbiB0aGUgdXNlciBjbGlja3MgaW4gdGhlIGVtcHR5IHNwYWNlIGluIGEgZGF0ZSBpbiB0aGUgbW9udGggdmlldw0KKwkJIC0tPg0KKwkJPGV2ZW50IG5hbWU9Im9uTmV3RXZlbnREYXRlIiAvPg0KKwkJDQorCQk8IS0tLQ0KKwkJCVRocm93biB3aGVuIHRoZSB1c2VyIHNlbGVjdHMgYSBkYXRlIGluIHRoZSBkYXkgb3Igd2VlayB2aWV3DQorCQkJaW4gdGhpcyBldmVudCB0aGUgdXNlciBjaG9vc2VzIHR3byBkYXRlcyBhcyBoZSANCisJCQljYW4gZHJhZyBhbiBhcmVhIGluIHRoZSBjYWxlbmRhcg0KKwkJCXN0YXJ0IGFuZCBlbmQgY2FuIGJlIGZvdW5kIGluOiB0U3RhcnREYXRlLHRFbmREYXRlDQorCQkgLS0+DQorCQk8ZXZlbnQgbmFtZT0ib25TdGFydEVuZERhdGUiIC8+DQorCQkNCisJCTxhdHRyaWJ1dGUgbmFtZT0idFN0YXJ0RGF0ZSIgdmFsdWU9Im51bGwiIC8+DQorCQk8YXR0cmlidXRlIG5hbWU9InRFbmREYXRlIiB2YWx1ZT0ibnVsbCIgLz4NCisJCQ0KKwkJPG1ldGhvZCBuYW1lPSJzZXRDdXJyZW50RGF0ZSIgYXJncz0idERhdGUiPg0KKwkJCWlmICh0aGlzLmN1cnJlbnREYXRlICE9IHREYXRlKSB7DQorCQkJCXRoaXMuY3VycmVudERhdGUgPSB0RGF0ZTsNCisJCQl9DQorCQk8L21ldGhvZD4NCisJCQ0KKwkJPG1ldGhvZCBuYW1lPSJzZWxlY3RTdGFydEVuZERhdGVUaW1lIiBhcmdzPSJ0U3RhcnREYXRlLHRFbmREYXRlIj4NCisJCQl0aGlzLnRTdGFydERhdGUgPSB0U3RhcnREYXRlOw0KKwkJCXRoaXMudEVuZERhdGUgPSB0RW5kRGF0ZTsNCisJCQl0aGlzLm9uU3RhcnRFbmREYXRlLnNlbmRFdmVudChudWxsKTsNCisJCTwvbWV0aG9kPg0KKwkJDQorCQk8bWV0aG9kIG5hbWU9ImNoZWNrQW5kU2hvdyIgYXJncz0idERhdGUsZGF5SW5kZXgsd2Vla0luZGV4Ij4NCisJCQl0aGlzLnNldEN1cnJlbnREYXRlKHREYXRlKTsNCisJCQl0aGlzLmN1cnJlbnRXZWVrID0gd2Vla0luZGV4ICsgMTsgLy90aGUgaW5kZXggaW4gdGhlIHhtbCBkYXRhc2V0IGxpc3QgY29uc3RydWN0IHN0YXJ0cyBjb3VudGluZyB3aXRoIDENCisJCQl0aGlzLmN1cnJlbnREYXkgPSBkYXlJbmRleCArIDE7IC8vdGhlIGluZGV4IGluIHRoZSB4bWwgZGF0YXNldCBsaXN0IGNvbnN0cnVjdCBzdGFydHMgY291bnRpbmcgd2l0aCAxDQorCQkJaWYgKHRoaXMudmlld1R5cGUgPT0gImRheSIpIHsNCisJCQkJdGhpcy5zZXRBdHRyaWJ1dGUoInZpZXdUeXBlIiwibm9uZSIpOw0KKwkJCQl0aGlzLnNob3dEYXkoKTsNCisJCQl9IGVsc2UgaWYgKHRoaXMudmlld1R5cGUgPT0gIndlZWsiKSB7DQorCQkJCXRoaXMuc2V0QXR0cmlidXRlKCJ2aWV3VHlwZSIsIm5vbmUiKTsNCisJCQkJdGhpcy5zaG93V2VlaygpOw0KKwkJCX0NCisJCTwvbWV0aG9kPg0KKwkJDQorCQk8bWV0aG9kIG5hbWU9ImlzQ3VycmVudE1vbnRoIiBhcmdzPSJ0TW9udGgiPg0KKwkJCWlmICh0aGlzLmN1cnJlbnREYXRlID09IG51bGwpIHsNCisJCQkJaWYgKCRkZWJ1ZykgRGVidWcud2FybigiY3VycmVudERhdGUgaXMgTlVMTCAiKTsNCisJCQkJcmV0dXJuIGZhbHNlOw0KKwkJCX0NCisJCQlyZXR1cm4gKHRNb250aCA9PSB0aGlzLmN1cnJlbnREYXRlLmdldE1vbnRoKCkpOw0KKwkJPC9tZXRob2Q+DQorCQkNCisJCTxtZXRob2QgbmFtZT0ic2hvd0RheSI+DQorCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIlNob3cgRGF5ICIsdGhpcy5jdXJyZW50RGF5LHRoaXMuY3VycmVudFdlZWspOw0KKwkJCXRoaXMuc2V0QXR0cmlidXRlKCJyZVJlbmRlckxvY2siLGZhbHNlKTsNCisJCQl0aGlzLnNldEF0dHJpYnV0ZSgidmlld1R5cGUiLCJkYXkiKTsNCisJCTwvbWV0aG9kPg0KKwkJDQorCQk8bWV0aG9kIG5hbWU9InNob3dXZWVrIj4NCisJCQl0aGlzLnNldEF0dHJpYnV0ZSgicmVSZW5kZXJMb2NrIix0cnVlKTsNCisJCQl0aGlzLnNldEF0dHJpYnV0ZSgidmlld1R5cGUiLCJ3ZWVrIik7DQorCQkJdGhpcy5zZXRBdHRyaWJ1dGUoInJlUmVuZGVyTG9jayIsZmFsc2UpOw0KKwkJPC9tZXRob2Q+DQorCQkNCisJCTxtZXRob2QgbmFtZT0ic2hvd01vbnRoIj4NCisJCQl0aGlzLnNldEF0dHJpYnV0ZSgicmVSZW5kZXJMb2NrIix0cnVlKTsNCisJCQl0aGlzLnNldEF0dHJpYnV0ZSgidmlld1R5cGUiLCJtb250aCIpOw0KKwkJCXRoaXMuc2V0QXR0cmlidXRlKCJyZVJlbmRlckxvY2siLGZhbHNlKTsNCisJCTwvbWV0aG9kPg0KKwkJDQorCQk8bWV0aG9kIG5hbWU9InNlbGVjdENhbGVuZGFyRXZlbnQiIGFyZ3M9InRSZWYiPg0KKwkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzZWxlY3RDYWxlbmRhckV2ZW50ICIsdFJlZik7DQorCQkJdGhpcy5zZXRBdHRyaWJ1dGUoImNhbGVuZGFyRXZlbnQiLHRSZWYpOw0KKwkJPC9tZXRob2Q+DQorCQkNCisJCTwhLS0gDQorCQkJVGhlIGRheSBncmlkDQorCQkgLS0+DQorCQk8c3RhdGUgbmFtZT0iZGF5IiBhcHBsaWVkPSIkeyBjbGFzc3Jvb3Qudmlld1R5cGUgPT0gJ2RheScgfSI+DQorCQkNCisJCQk8bHpEYXlWaWV3IGN1cnJlbnREYXk9IiR7IGNsYXNzcm9vdC5jdXJyZW50RGF5IH0iPg0KKwkJCQk8aGFuZGxlciBuYW1lPSJvbmluaXQiPg0KKwkJCQkJdGhpcy5zZXRBdHRyaWJ1dGUoImRhdGFwYXRoIiwiZ2V0QXBwb2ludG1lbnRzQnlXZWVrQ2FsZW5kYXJSZXNwb25zZS9yZXR1cm5bIitjbGFzc3Jvb3QuY3VycmVudFdlZWsrIl0iKTsNCisJCQkJPC9oYW5kbGVyPg0KKwkJCTwvbHpEYXlWaWV3Pg0KKwkJCQ0KKwkJPC9zdGF0ZT4NCisJCQ0KKwkJPCEtLSANCisJCQlUaGUgd2VlayBncmlkDQorCQkgLS0+DQorCQk8c3RhdGUgbmFtZT0id2VlayIgYXBwbGllZD0iJHsgY2xhc3Nyb290LnZpZXdUeXBlID09ICd3ZWVrJyB9Ij4NCisJCQ0KKwkJCTwhLS0gQSB3ZWVrIHZpZXcgaXMgbm90aGluZyBlbHNlIHRoZW4gNyBkYXlzIG5leHQgdG8gZWFjaCBvdGhlciAtLT4NCisJCQk8bHpEYXlWaWV3IGN1cnJlbnREYXk9IiR7IGNsYXNzcm9vdC5jdXJyZW50RGF5IH0iIHNpbmdsZURheVZpZXc9ImZhbHNlIiBkYXlzUGVyV2Vlaz0iNyINCisJCQkJCQlyZVJlbmRlckxvY2s9IiR7IGNsYXNzcm9vdC5yZVJlbmRlckxvY2sgfSI+DQorCQkJCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+DQorCQkJCQl0aGlzLnNldEF0dHJpYnV0ZSgiZGF0YXBhdGgiLCJnZXRBcHBvaW50bWVudHNCeVdlZWtDYWxlbmRhclJlc3BvbnNlL3JldHVyblsiK2NsYXNzcm9vdC5jdXJyZW50V2VlaysiXSIpOw0KKwkJCQk8L2hhbmRsZXI+DQorCQkJPC9sekRheVZpZXc+DQorCQkJDQorCQk8L3N0YXRlPg0KKwkJDQorCQk8IS0tIA0KKwkJCVRoZSBtb250aCBncmlkDQorCQkgLS0+DQorCQk8c3RhdGUgbmFtZT0ibW9udGgiIGFwcGxpZWQ9IiR7IGNsYXNzcm9vdC52aWV3VHlwZSA9PSAnbW9udGgnIH0iPg0KKwkJDQorCQkJPGx6TW9udGhWaWV3IC8+DQorCQkJDQorCQk8L3N0YXRlPg0KKwkJDQorCTwvY2xhc3M+DQorCQ0KKwk8Y2xhc3MgbmFtZT0idGV4dEhvdXJIZWxwZXIiIGV4dGVuZHM9InRleHQiIGhlaWdodD0iMzAiIA0KKwkJd2lkdGg9IjQwIiBmZ2NvbG9yPSIweDY2NjY2NiIgLz4NCisNCis8L2xpYnJhcnk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9semNhbGVuZGFyL2NvbXBvbnRlbnRzL2x6RWRpdENhbGVuZGFyRXZlbnQubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9semNhbGVuZGFyL2NvbXBvbnRlbnRzL2x6RWRpdENhbGVuZGFyRXZlbnQubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjMmQ0ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6Y2FsZW5kYXIvY29tcG9udGVudHMvbHpFZGl0Q2FsZW5kYXJFdmVudC5sengKQEAgLTAsMCArMSw1NjEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/Pg0KKzwhLS0NCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgIA0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAgICAJICANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAgdW5kZXIgdGhlIExpY2Vuc2UuDQorICANCistLT4NCis8bGlicmFyeT4NCisNCisJPGNsYXNzIG5hbWU9Imx6RWRpdENhbGVuZGFyRXZlbnQiIGV4dGVuZHM9ImxhYmVsRXhwbG9yZXJCb3giIGxhYmVsaWQ9IjgxNSIgYWxsb3dEcmFnZ2luZz0idHJ1ZSIgDQorCQkgICAgeD0iJG9uY2V7IHBhcmVudC53aWR0aC8yIC0gMzAwIH0iIHk9IjEwMCIgZG9ja2luZz0iZmFsc2UiIHJlc2l6ZWFibGU9ImZhbHNlIiANCisJCSAgICBjbG9zYWJsZT0idHJ1ZSIgd2lkdGg9IjYwMCIgaGVpZ2h0PSI2MDIiIA0KKwkJICAgIHNob3dXaW5kb3dFZmZlY3Q9InRydWUiIGFubmltYXRpb25TdGFydFN0eWxlPSJtb3VzZSI+DQorCQkgICAgDQorCQk8YXR0cmlidXRlIG5hbWU9InJlbWluZGVyVHlwZUlkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPg0KKwkJDQorCQk8YXR0cmlidXRlIG5hbWU9ImRhdGFFbGVtZW50IiB2YWx1ZT0ibnVsbCIgLz4NCisJCTxhdHRyaWJ1dGUgbmFtZT0icmVtaW5kZXJ0eXBlcyIgdmFsdWU9Im51bGwiIC8+DQorCQkNCisJCTxhdHRyaWJ1dGUgbmFtZT0iYmFzZVVybCIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPg0KKwkJDQorCQk8YXR0cmlidXRlIG5hbWU9Imx6Q2FsZW5kYXJSZWYiIHZhbHVlPSJudWxsIiAvPg0KKwkJDQorCQk8ZGF0YXNldCBuYW1lPSJldmVudERTIiAvPg0KKwkJDQorCQk8YXR0cmlidXRlIG5hbWU9InVwZGF0ZU9iaiIgdmFsdWU9Im51bGwiIC8+DQorCQkNCisJCTxhdHRyaWJ1dGUgbmFtZT0iYXBwb2ludG1lbnRJZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4NCisJCTxhdHRyaWJ1dGUgbmFtZT0icm9vbUlkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPg0KKwkJDQorCQk8YXR0cmlidXRlIG5hbWU9ImlzQ29ubmVjdGVkRXZlbnQiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4NCisJCQ0KKwkJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4NCisJCQlpZiAodGhpcy5sekNhbGVuZGFyUmVmLnJlcXVlc3RVc2VySWQgIT0gY2FudmFzLnVzZXJfaWQpIHsNCisJCQkJdGhpcy5fc2F2ZUV2ZW50LnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOw0KKwkJCQl0aGlzLl9kZWxldGVFdmVudC5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsNCisJCQl9DQorCQkJdGhpcy5nZXRBcHBvaW50bWVudFJlbWluZGVyVHlwTGlzdC5zZXREYXRhKHRoaXMucmVtaW5kZXJ0eXBlcy5kYXRhKTsNCisJCTwvaGFuZGxlcj4NCisJCSAgICANCisJCTxoYW5kbGVyIG5hbWU9ImFuaW1hdGlvbkluaXRlZCI+DQorCQkJPCFbQ0RBVEFbDQorCQkJCWNhbnZhcy5fbG9hZGluZ0FsbC5oaWRlQ29udGVudE9ubHkoKTsNCisJCQkJDQorCQkJCS8vUG9pbnQgVVJMIHRvIGFjdHVhbCBGaWxlDQorICAgICAgICAgICAgICAgIHRoaXMuYmFzZVVybCA9IGNhbnZhcy5nZXRBcHBCYXNlVXJsKCk7DQorCQkJCQkJDQorCSAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ0aGlzLmJhc2VVcmwgIix0aGlzLmJhc2VVcmwpOw0KKwkJCQ0KKwkgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidGhpcy5kYXRhRWxlbWVudCAiLHRoaXMuZGF0YUVsZW1lbnQpOw0KKwkgICAgICAgICAgICANCisgICAgICAgICAgICAJdGhpcy5ldmVudERTLnNldEF0dHJpYnV0ZSgiZGF0YSIsIHRoaXMuZGF0YUVsZW1lbnQuY2hpbGROb2Rlcyk7DQorICAgICAgICAgICAgCQ0KKyAgICAgICAgICAgIAl0aGlzLmFwcG9pbnRtZW50SWQgPSB0aGlzLmV2ZW50RFMuZ2V0UG9pbnRlcigpLnhwYXRoUXVlcnkoJ2FwcG9pbnRtZW50SWQvdGV4dCgpJyk7DQorICAgICAgICAgICAgCXRoaXMucm9vbUlkID0gdGhpcy5ldmVudERTLmdldFBvaW50ZXIoKS54cGF0aFF1ZXJ5KCdyb29tSWQvdGV4dCgpJyk7DQorCSAgICAgICAgICAgIHRoaXMuX3Jvb20uZ2V0Um9vbXNQdWJsaWNXaXRob3V0VHlwZS5kb0NhbGwoKTsNCisJICAgICAgICAgICAgDQorCSAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ0aGlzLmV2ZW50RFMgIix0aGlzLmV2ZW50RFMpOw0KKwkgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidGhpcy5hcHBvaW50bWVudElkICIsdGhpcy5hcHBvaW50bWVudElkKTsNCisJICAgICAgICAgICAgDQorCSAgICAgICAgICAgIGlmICh0aGlzLmFwcG9pbnRtZW50SWQgPT0gMCkgew0KKwkgICAgICAgICAgICAJdGhpcy5fc2F2ZUV2ZW50LnNldEF0dHJpYnV0ZSgieCIsdGhpcy5fZGVsZXRlRXZlbnQueCk7DQorCSAgICAgICAgICAgIAl0aGlzLl9kZWxldGVFdmVudC5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsNCisJICAgICAgICAgICAgfQ0KKwkgICAgICAgICAgICANCisJICAgICAgICAgICAgbHouRm9jdXMuc2V0Rm9jdXModGhpcy5fdGl0bGUsIGZhbHNlKTsNCisgICAgICAgICAgICBdXT4NCisJCTwvaGFuZGxlcj4NCisJCQ0KKwkJPGhhbmRsZXIgbmFtZT0ib25jbG9zZSI+DQorCQkJY2FudmFzLl9sb2FkaW5nQWxsLmhpZGVMb2FkaW5nKCk7DQorCQk8L2hhbmRsZXI+DQorCQkNCisJCTxtZXRob2QgbmFtZT0ic2F2ZUFuZENsb3NlIj4NCisJCQk8IVtDREFUQVsNCisJCQkJdGhpcy51cGRhdGVPYmogPSBuZXcgT2JqZWN0KCk7DQorCQkJDQorCQkJCXVwZGF0ZU9iai50TWVtYmVyQXJncyA9IHRoaXMuX3BhcnRpY2lwZW50TGlzdC5nZXRNZW1iZXJBcnJheVZhbHVlKCk7DQorCQkJCQ0KKwkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidE1lbWJlckFyZ3M6ICIsdXBkYXRlT2JqLnRNZW1iZXJBcmdzLmxlbmd0aCx1cGRhdGVPYmoudE1lbWJlckFyZ3MpOw0KKwkJCQkNCisJCQkJdXBkYXRlT2JqLmFwcG9pbnRtZW50SWQgPSBOdW1iZXIodGhpcy5ldmVudERTLmdldFBvaW50ZXIoKS54cGF0aFF1ZXJ5KCdhcHBvaW50bWVudElkL3RleHQoKScpKTsNCisJCQkJdXBkYXRlT2JqLmFwcG9pbnRtZW50c3RhcnQgPSB0aGlzLl9kYXRlU3RhcnQuZ2V0RGF0ZSgpOw0KKwkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiYXBwb2ludG1lbnRzdGFydCAiLHVwZGF0ZU9iai5hcHBvaW50bWVudHN0YXJ0KTsNCisJCQkJdmFyIHRUaW1lU3RhcnQgPSB0aGlzLl90aW1lU3RhcnQuZ2V0VGV4dCgpOw0KKwkJCQl2YXIgaG91cnMgPSBOdW1iZXIodFRpbWVTdGFydC5zdWJzdHIoMCwyKSk7DQorCQkJCXZhciBtaW5zID0gTnVtYmVyKHRUaW1lU3RhcnQuc3Vic3RyKDMsMikpOw0KKwkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiaG91cnM6bWlucyIsaG91cnMsbWlucyx0VGltZVN0YXJ0LnN1YnN0cig0KSx0VGltZVN0YXJ0KTsNCisJCQkJdXBkYXRlT2JqLmFwcG9pbnRtZW50c3RhcnQuc2V0SG91cnMoaG91cnMpOw0KKwkJCQl1cGRhdGVPYmouYXBwb2ludG1lbnRzdGFydC5zZXRNaW51dGVzKG1pbnMpOw0KKwkJCQkNCisJCQkJdmFyIHRFbmQgPSBuZXcgRGF0ZSgpOw0KKwkJCQl0RW5kLnNldFRpbWUodGhpcy5fZGF0ZVN0YXJ0LmdldERhdGUoKS5nZXRUaW1lKCkpOw0KKwkJCQl1cGRhdGVPYmouYXBwb2ludG1lbnRlbmQgPSB0RW5kOyAvL3RoaXMuX2RhdGVFbmQuZ2V0RGF0ZSgpOyB3ZSBjdXJyZW50bHkgZG8gbm90IHN1cHBvcnQgbXVsdGkgZGF0ZSBldmVudHMNCisJCQkJdmFyIHRUaW1lRW5kID0gdGhpcy5fdGltZUVuZC5nZXRUZXh0KCk7DQorCQkJCXZhciBob3VycyA9IE51bWJlcih0VGltZUVuZC5zdWJzdHIoMCwyKSk7DQorCQkJCXZhciBtaW5zID0gTnVtYmVyKHRUaW1lRW5kLnN1YnN0cigzLDIpKTsNCisJCQkJdXBkYXRlT2JqLmFwcG9pbnRtZW50ZW5kLnNldEhvdXJzKGhvdXJzKTsNCisJCQkJdXBkYXRlT2JqLmFwcG9pbnRtZW50ZW5kLnNldE1pbnV0ZXMobWlucyk7DQorCQkJCQ0KKwkJCQkvL2lmIHdlIGNob29zZSAwMDowMCB3ZSBhY3R1YWxseSBtZWFuIHRoZSBuZXh0IGRheSBhdCBub29uDQorCQkJCWlmIChob3VycyA9PSAwKSB7DQorCQkJCQl0RW5kLnNldFRpbWUodEVuZC5nZXRUaW1lKCkrODY0MDAwMDApOw0KKwkJCQl9DQorCQkJCQ0KKyAgICAgICAgICAgICAgICB1cGRhdGVPYmouYXBwb2ludG1lbnROYW1lID0gdGhpcy5fdGl0bGUuZ2V0VGV4dCgpOw0KKyAgICAgICAgICAgICAgICB1cGRhdGVPYmouYXBwb2ludG1lbnRMb2NhdGlvbiA9IHRoaXMuX2xvY2F0aW9uLmdldFRleHQoKTsNCisgICAgICAgICAgICAgICAgdXBkYXRlT2JqLmFwcG9pbnRtZW50RGVzY3JpcHRpb24gPSB0aGlzLl9kZXNjci5nZXRUZXh0KCk7DQorICAgICAgICAgICAgICAgIHVwZGF0ZU9iai5pc0RhaWx5ID0gZmFsc2U7DQorICAgICAgICAgICAgICAgIHVwZGF0ZU9iai5pc1dlZWtseSA9IGZhbHNlOw0KKyAgICAgICAgICAgICAgICB1cGRhdGVPYmouaXNNb250aGx5ID0gZmFsc2U7DQorICAgICAgICAgICAgICAgIHVwZGF0ZU9iai5pc1llYXJseSA9IGZhbHNlOw0KKyAgICAgICAgICAgICAgICB1cGRhdGVPYmouY2F0ZWdvcnlJZCA9IDE7DQorICAgICAgICAgICAgICAgIHVwZGF0ZU9iai5yZW1pbmQgPSB0aGlzLl9yZW1pbmRlclR5cGUuZ2V0VmFsdWUoKTsNCisgICAgICAgICAgICAgICAgdXBkYXRlT2JqLnJvb21UeXBlID0gdGhpcy5fcm9vbVR5cGUuZ2V0VmFsdWUoKTsNCisgICAgICAgICAgICAgICAgdXBkYXRlT2JqLmlzUGFzc3dvcmRQcm90ZWN0ZWQgPSB0aGlzLl9pc3Bhc3N3b3JkUHJvdGVjdGVkLmdldFZhbHVlKCk7DQorICAgICAgICAgICAgICAgIHVwZGF0ZU9iai5wYXNzd29yZCA9IHRoaXMuX3Bhc3N3b3JkLmdldFRleHQoKTsNCisgICAgICAgICAgICAgICAgdXBkYXRlT2JqLnJvb21JZCA9ICghdGhpcy5fY3JlYXRlTmV3Um9vbS5nZXRWYWx1ZSgpID8gdGhpcy5fcm9vbS5nZXRWYWx1ZSgpIDogLTEpOw0KKyAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInVwZGF0ZU9iajogIiwgdXBkYXRlT2JqKTsNCisgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJhcHBvaW50bWVudHN0YXJ0OiAiLHBhcnNlRGF0ZVRvU3RyaW5nVGltZVNlY29uZHModXBkYXRlT2JqLmFwcG9pbnRtZW50c3RhcnQpKTsNCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImFwcG9pbnRtZW50c3RhcnQ6ICIscGFyc2VEYXRlVG9TdHJpbmdUaW1lU2Vjb25kcyh1cGRhdGVPYmouYXBwb2ludG1lbnRlbmQpKTsNCisgICAgICAgICAgICAgICAgDQorCQkJCWlmICh1cGRhdGVPYmouYXBwb2ludG1lbnRJZCA+IDApIHsNCisJCQkJCXRoaXMudXBkYXRlQXBwb2ludG1lbnQuZG9DYWxsKCk7DQorCQkJCX0gZWxzZSB7DQorCQkJCQl0aGlzLnNhdmVBcHBvaW50bWVudC5kb0NhbGwoKTsNCisJCQkJfSANCisJCQldXT4NCisJCTwvbWV0aG9kPg0KKwkJDQorCQk8ZGF0YXNldCBuYW1lPSJnZXRBcHBvaW50bWVudFJlbWluZGVyVHlwTGlzdCIgLz4NCisJCQ0KKwkJPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0ic2F2ZUFwcG9pbnRtZW50IiBmdW5jbmFtZT0iY2FsZW5kYXJzZXJ2aWNlLnNhdmVBcHBvaW50bWVudCIgDQorCQkJCQkJCSAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gICAgIA0KKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gY2FudmFzLnNlc3Npb25JZDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4NCisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQudXBkYXRlT2JqLmFwcG9pbnRtZW50TmFtZTs8L21ldGhvZD48L25ldHBhcmFtPgkNCisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQudXBkYXRlT2JqLmFwcG9pbnRtZW50TG9jYXRpb247PC9tZXRob2Q+PC9uZXRwYXJhbT4NCisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQudXBkYXRlT2JqLmFwcG9pbnRtZW50RGVzY3JpcHRpb247PC9tZXRob2Q+PC9uZXRwYXJhbT4NCisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcnNlRGF0ZVRvU3RyaW5nVGltZVNlY29uZHMocGFyZW50LnBhcmVudC51cGRhdGVPYmouYXBwb2ludG1lbnRzdGFydCk7PC9tZXRob2Q+PC9uZXRwYXJhbT4NCisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcnNlRGF0ZVRvU3RyaW5nVGltZVNlY29uZHMocGFyZW50LnBhcmVudC51cGRhdGVPYmouYXBwb2ludG1lbnRlbmQpOzwvbWV0aG9kPjwvbmV0cGFyYW0+DQorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50LnVwZGF0ZU9iai5pc0RhaWx5OzwvbWV0aG9kPjwvbmV0cGFyYW0+DQorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50LnVwZGF0ZU9iai5pc1dlZWtseTs8L21ldGhvZD48L25ldHBhcmFtPg0KKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC51cGRhdGVPYmouaXNNb250aGx5OzwvbWV0aG9kPjwvbmV0cGFyYW0+DQorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50LnVwZGF0ZU9iai5pc1llYXJseTs8L21ldGhvZD48L25ldHBhcmFtPg0KKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC51cGRhdGVPYmouY2F0ZWdvcnlJZDs8L21ldGhvZD48L25ldHBhcmFtPg0KKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC51cGRhdGVPYmoucmVtaW5kOzwvbWV0aG9kPjwvbmV0cGFyYW0+DQorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50LnVwZGF0ZU9iai50TWVtYmVyQXJnczs8L21ldGhvZD48L25ldHBhcmFtPg0KKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC51cGRhdGVPYmoucm9vbVR5cGU7PC9tZXRob2Q+PC9uZXRwYXJhbT4NCisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQuYmFzZVVybDs8L21ldGhvZD48L25ldHBhcmFtPg0KKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gaGliLnVzZXJsYW5nOzwvbWV0aG9kPjwvbmV0cGFyYW0+DQorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50LnVwZGF0ZU9iai5pc1Bhc3N3b3JkUHJvdGVjdGVkOzwvbWV0aG9kPjwvbmV0cGFyYW0+DQorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50LnVwZGF0ZU9iai5wYXNzd29yZDs8L21ldGhvZD48L25ldHBhcmFtPg0KKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC51cGRhdGVPYmoucm9vbUlkOzwvbWV0aG9kPjwvbmV0cGFyYW0+DQorCSAgICAJPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+DQorCSAgICAJCTwhW0NEQVRBWw0KKwkJICAgIAkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInNhdmVBcHBvaW50bWVudCAiLHZhbHVlKTsNCisJCSAgICAJCXBhcmVudC5sekNhbGVuZGFyUmVmLnJlbG9hZCgpOw0KKwkJCQkJcGFyZW50LmNsb3NlKCk7DQorCSAgICAJCSBdXT4NCisJICAgIAk8L2hhbmRsZXI+DQorCSAgICA8L25ldFJlbW90ZUNhbGxIaWI+IA0KKwkgICAgDQorICAgIAk8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJ1cGRhdGVBcHBvaW50bWVudCIgZnVuY25hbWU9ImNhbGVuZGFyc2VydmljZS51cGRhdGVBcHBvaW50bWVudCIgDQorCQkJCQkJICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAgDQorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBjYW52YXMuc2Vzc2lvbklkOyA8L21ldGhvZD48L25ldHBhcmFtPg0KKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC51cGRhdGVPYmouYXBwb2ludG1lbnRJZDs8L21ldGhvZD48L25ldHBhcmFtPg0KKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC51cGRhdGVPYmouYXBwb2ludG1lbnROYW1lOzwvbWV0aG9kPjwvbmV0cGFyYW0+CQ0KKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC51cGRhdGVPYmouYXBwb2ludG1lbnRMb2NhdGlvbjs8L21ldGhvZD48L25ldHBhcmFtPg0KKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC51cGRhdGVPYmouYXBwb2ludG1lbnREZXNjcmlwdGlvbjs8L21ldGhvZD48L25ldHBhcmFtPg0KKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyc2VEYXRlVG9TdHJpbmdUaW1lU2Vjb25kcyhwYXJlbnQucGFyZW50LnVwZGF0ZU9iai5hcHBvaW50bWVudHN0YXJ0KTs8L21ldGhvZD48L25ldHBhcmFtPg0KKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyc2VEYXRlVG9TdHJpbmdUaW1lU2Vjb25kcyhwYXJlbnQucGFyZW50LnVwZGF0ZU9iai5hcHBvaW50bWVudGVuZCk7PC9tZXRob2Q+PC9uZXRwYXJhbT4NCisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQudXBkYXRlT2JqLmlzRGFpbHk7PC9tZXRob2Q+PC9uZXRwYXJhbT4NCisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQudXBkYXRlT2JqLmlzV2Vla2x5OzwvbWV0aG9kPjwvbmV0cGFyYW0+DQorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50LnVwZGF0ZU9iai5pc01vbnRobHk7PC9tZXRob2Q+PC9uZXRwYXJhbT4NCisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQudXBkYXRlT2JqLmlzWWVhcmx5OzwvbWV0aG9kPjwvbmV0cGFyYW0+DQorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50LnVwZGF0ZU9iai5jYXRlZ29yeUlkOzwvbWV0aG9kPjwvbmV0cGFyYW0+DQorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50LnVwZGF0ZU9iai5yZW1pbmQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4NCisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQudXBkYXRlT2JqLnRNZW1iZXJBcmdzOzwvbWV0aG9kPjwvbmV0cGFyYW0+DQorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50LnVwZGF0ZU9iai5yb29tVHlwZTs8L21ldGhvZD48L25ldHBhcmFtPg0KKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC5iYXNlVXJsOzwvbWV0aG9kPjwvbmV0cGFyYW0+DQorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBoaWIudXNlcmxhbmc7PC9tZXRob2Q+PC9uZXRwYXJhbT4NCisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQudXBkYXRlT2JqLmlzUGFzc3dvcmRQcm90ZWN0ZWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4NCisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQudXBkYXRlT2JqLnBhc3N3b3JkOzwvbWV0aG9kPjwvbmV0cGFyYW0+DQorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50LnVwZGF0ZU9iai5yb29tSWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4NCisJICAgIAk8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4NCisJICAgIAkJPCFbQ0RBVEFbDQorCSAgICAJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidXBkYXRlQXBwb2ludG1lbnQgIix2YWx1ZSk7DQorCSAgICAJCQlwYXJlbnQubHpDYWxlbmRhclJlZi5yZWxvYWQoKTsNCisJCQkJCXBhcmVudC5jbG9zZSgpOw0KKwkgICAgCQkgXV0+DQorCSAgICAJPC9oYW5kbGVyPg0KKwkgICAgPC9uZXRSZW1vdGVDYWxsSGliPiANCisJICAgIA0KKwkgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iZGVsZXRlQXBwb2ludG1lbnQiIGZ1bmNuYW1lPSJjYWxlbmRhcnNlcnZpY2UuZGVsZXRlQXBwb2ludG1lbnQiIA0KKwkJCQkJCQkgIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiA+ICAgICANCisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+DQorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50LmFwcG9pbnRtZW50SWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4JDQorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBoaWIudXNlcmxhbmc7PC9tZXRob2Q+PC9uZXRwYXJhbT4NCisJICAgIAk8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4NCisJICAgIAkJPCFbQ0RBVEFbDQorCQkgICAgCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZGVsZXRlQXBwb2ludG1lbnQgIix2YWx1ZSk7DQorCQkgICAgCQlwYXJlbnQubHpDYWxlbmRhclJlZi5yZWxvYWQoKTsNCisJCQkJCXBhcmVudC5jbG9zZSgpOw0KKwkgICAgCQkgXV0+DQorCSAgICAJPC9oYW5kbGVyPg0KKwkgICAgPC9uZXRSZW1vdGVDYWxsSGliPiANCisJCQ0KKwkJPGxhYmVsVGV4dCBuYW1lPSJfdGl0bGVMYWJlbCIgeD0iNCIgeT0iMjQiIGxhYmVsaWQ9IjU3MiIgZm9udHN0eWxlPSJib2xkIiAvPiANCisJCQkNCisJCTxjdXN0b21FZGl0dGV4dCBuYW1lPSJfdGl0bGUiIHg9IjEyMCIgeT0iMjQiIGRhdGFwYXRoPSJsb2NhbDpjbGFzc3Jvb3QuZXZlbnREUzovdGl0bGUiDQorCQkJCXRleHQ9IiRwYXRoeyd0ZXh0KCknfSIgDQorCQkJd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGgtMTMwIH0iIGhlaWdodD0iMjQiIC8+DQorCQkJDQorCQkJDQorCQk8IS0tIFN0YXJ0IERhdGUgLyBUaW1lIC0tPg0KKwkJPGRhdGVGaWVsZCBuYW1lPSJfZGF0ZVN0YXJ0IiB5PSI1MCIgeD0iMTIwIiB3aWR0aD0iMTA0IiBkYXRhcGF0aD0ibG9jYWw6Y2xhc3Nyb290LmV2ZW50RFM6L3N0YXJ0Ij4NCisJCQk8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9ImQiPg0KKwkJCQl0aGlzLnNldEF0dHJpYnV0ZSgidGV4dCIscGFyc2VEYXRlU3RyaW5nRnJvbVhtbFN0cmluZyhkLmNoaWxkTm9kZXNbMF0uZGF0YSkpOw0KKwkJCTwvaGFuZGxlcj4NCisJCTwvZGF0ZUZpZWxkPg0KKwkJDQorCQk8bGFiZWxUZXh0IG5hbWU9Il9kYXRlVGltZVN0YXJ0TGFiZWwiIHg9IjI0MCIgeT0iNTAiIGxhYmVsaWQ9IjU3MCIgZm9udHN0eWxlPSJib2xkIiAvPiANCisJCQkNCisJCTxjdXN0b21FZGl0dGV4dCBuYW1lPSJfdGltZVN0YXJ0IiB4PSIyOTAiIA0KKyAgICAgIAkJCQkJeT0iNTAiIHdpZHRoPSI1MCIgcmVnZXhwVHlwZT0idGltZSIgdGV4dD0iMDg6MDAiIGRhdGFwYXRoPSJsb2NhbDpjbGFzc3Jvb3QuZXZlbnREUzovc3RhcnQiPg0KKyAgICAgIAkJPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJkIj4NCisJCQkJdGhpcy5zZXRBdHRyaWJ1dGUoInRleHQiLHBhcnNlVGltZVN0cmluZ0Zyb21YbWxTdHJpbmcoZC5jaGlsZE5vZGVzWzBdLmRhdGEpKTsNCisJCQk8L2hhbmRsZXI+DQorICAgICAgCTwvY3VzdG9tRWRpdHRleHQ+DQorICAgICAgCQkJCQkNCisgICAgICAJPCEtLSBFbmQgRGF0ZSAvIFRpbWUgLS0+CQkJDQorCQk8bGFiZWxUZXh0IG5hbWU9Il9kYXRlVGltZUVuZExhYmVsIiB4PSIzNDYiIHk9IjUwIiBsYWJlbGlkPSI1NzEiIGZvbnRzdHlsZT0iYm9sZCIgLz4gIA0KKwkJCQ0KKwkJPCEtLSANCisJCSB3ZSBjdXJyZW50bHkgZG8gbm90IHN1cHBvcnQgbXVsdGkgZGF0ZSBldmVudHMNCisJCTxkYXRlRmllbGQgbmFtZT0iX2RhdGVFbmQiIHk9IjUwIiB4PSIzNzIiIHdpZHRoPSIxMDQiIGRhdGFwYXRoPSJsb2NhbDpjbGFzc3Jvb3QuZXZlbnREUzovZW5kIj4NCisJCQk8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9ImQiPg0KKwkJCQl0aGlzLnNldEF0dHJpYnV0ZSgidGV4dCIscGFyc2VEYXRlU3RyaW5nRnJvbVhtbFN0cmluZyhkLmNoaWxkTm9kZXNbMF0uZGF0YSkpOw0KKwkJCTwvaGFuZGxlcj4NCisJCTwvZGF0ZUZpZWxkPg0KKwkJIC0tPg0KKwkJCQ0KKwkJPGN1c3RvbUVkaXR0ZXh0IG5hbWU9Il90aW1lRW5kIiB4PSIzOTYiIA0KKyAgICAgIAkJCQkJeT0iNTAiIHdpZHRoPSI1MCIgcmVnZXhwVHlwZT0idGltZSIgdGV4dD0iMTA6MDAiIGRhdGFwYXRoPSJsb2NhbDpjbGFzc3Jvb3QuZXZlbnREUzovZW5kIj4NCisgICAgICAJCTxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0iZCI+DQorCQkJCXRoaXMuc2V0QXR0cmlidXRlKCJ0ZXh0IixwYXJzZVRpbWVTdHJpbmdGcm9tWG1sU3RyaW5nKGQuY2hpbGROb2Rlc1swXS5kYXRhKSk7DQorCQkJPC9oYW5kbGVyPg0KKyAgICAgIAk8L2N1c3RvbUVkaXR0ZXh0Pg0KKyAgICAgIAkJCQkJDQorICAgICAgICA8IS0tIFJlbWluZGVydHlwZSAtLT4NCisJCTxsYWJlbFRleHQgbmFtZT0iX3JlbWluZGVyVHlwZUxhYmVsIiB4PSI0IiB5PSI3NiIgbGFiZWxpZD0iNTY1IiBmb250c3R5bGU9ImJvbGQiIC8+IA0KKwkJDQorCQk8cmVzZXRDb21ib2JveCBuYW1lPSJfcmVtaW5kZXJUeXBlIiB4PSIxMjAiIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoLTEzMCB9Ig0KKwkJCSAJCQkgIGVkaXRhYmxlPSJmYWxzZSIgc2hvd25pdGVtcz0iNSIgeT0iNzYiIGRhdGFwYXRoPSJsb2NhbDpjbGFzc3Jvb3QuZXZlbnREUzovcmVtaW5kZXJJZCI+DQorCQkJPGhhbmRsZXIgbmFtZT0ib252YWx1ZSIgYXJncz0idiI+CQkJCQkJDQorCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJyZW1pbmRlclR5cGVJZDogIixwYXJlbnQucmVtaW5kZXJUeXBlSWQpOw0KKwkJCQlpZih0aGlzLmdldFZhbHVlID09IDAgKSB7DQorCQkJCQlwYXJlbnQucmVtaW5kZXJUeXBlSWQgPSBudWxsOw0KKwkJCQl9IGVsc2V7DQorICAJCQkJCXBhcmVudC5yZW1pbmRlclR5cGVJZCA9IHRoaXMuZ2V0VmFsdWUoKTsJCQkJCQkJCQkJCQkNCisgIAkJCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInJlbWluZGVyVHlwZUlkOiAiLHBhcmVudC5yZW1pbmRlclR5cGVJZCk7DQorCQkJCX0NCisJCQk8L2hhbmRsZXI+IA0KKwkJCTxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0icmVtaW5kdHlwZU5vZGUiPg0KKwkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgicmVtaW5kdHlwZSBvbmRhdGEgMTogIiwgcmVtaW5kdHlwZU5vZGUuY2hpbGROb2Rlc1swXS5kYXRhKTsNCisJCQkJdmFyIHJlbVR5cGVJZCA9IE51bWJlcihyZW1pbmR0eXBlTm9kZS5jaGlsZE5vZGVzWzBdLmRhdGEpOw0KKwkJCQlpZiAocmVtVHlwZUlkID4gMCkgew0KKwkJCQkJcGFyZW50LnJlbWluZGVyVHlwZUlkID0gcmVtVHlwZUlkOw0KKwkJCQkgICAgdGhpcy5zZWxlY3RJdGVtKHJlbVR5cGVJZCk7DQorCQkJICAgIH0NCisJCQk8L2hhbmRsZXI+DQorCQkJPHRleHRsaXN0aXRlbSBkYXRhcGF0aD0ibG9jYWw6Y2xhc3Nyb290LmdldEFwcG9pbnRtZW50UmVtaW5kZXJUeXBMaXN0Oi9nZXRBcHBvaW50bWVudFJlbWluZGVyVHlwTGlzdFJlc3BvbnNlL3JldHVybiINCisJCQkJdGV4dD0iJHBhdGh7J25hbWUvdGV4dCgpJ30iIHZhbHVlPSIkcGF0aHsndHlwSWQvdGV4dCgpJ30iIC8+DQorCSAJPC9yZXNldENvbWJvYm94Pg0KKwkgCQ0KKwkgCTwhLS0gTmV3L0V4aXN0ZW50IHJvb20gc2VsZWN0b3IgLS0+DQorCQk8bGFiZWxDaGVja2JveCBuYW1lPSJfY3JlYXRlTmV3Um9vbSIgeT0iMTAyIiBmb250c2l6ZT0iMTEiIHg9IjEwIiBsYWJlbGlkPSIxNTA5Ig0KKwkJCQlkYXRhcGF0aD0ibG9jYWw6Y2xhc3Nyb290LmV2ZW50RFM6L3Jvb21JZCI+DQorCQkJPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJkIj4NCisJCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9uZGF0YSBfY3JlYXRlTmV3Um9vbSAiLCBkLmNoaWxkTm9kZXNbMF0uZGF0YSwgKGQuY2hpbGROb2Rlc1swXS5kYXRhID09ICIwIikpOw0KKwkJCQl2YXIgdmFsID0gKGQuY2hpbGROb2Rlc1swXS5kYXRhID09ICIwIik7DQorCQkJCXRoaXMuc2V0VmFsdWUodmFsKTsNCisJCQkJaWYgKCF2YWwpIHsNCisJCQkJCXRoaXMuc2V0QXR0cmlidXRlKCJlbmFibGVkIiwgZmFsc2UpOw0KKwkJCQl9DQorCQkJPC9oYW5kbGVyPg0KKwkJPC9sYWJlbENoZWNrYm94Pg0KKwkgCQ0KKwkgCTwhLS0gUm9vbXR5cGUgLS0+DQorCQk8bGFiZWxUZXh0IG5hbWU9Il9yb29tVHlwZUxhYmVsIiB4PSI0IiB5PSIxMjgiIGxhYmVsaWQ9IjYxOSIgZm9udHN0eWxlPSJib2xkIiAvPiANCisJCQ0KKwkJPHJlc2V0Q29tYm9ib3ggbmFtZT0iX3Jvb21UeXBlIiB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aC0xMzAgfSIgeT0iMTI4IiB4PSIxMjAiIGVkaXRhYmxlPSJmYWxzZSIgDQorCQkJCQlkYXRhcGF0aD0ibG9jYWw6Y2xhc3Nyb290LmV2ZW50RFM6L3Jvb21UeXBlSWQiIGVuYWJsZWQ9IiR7IHBhcmVudC5fY3JlYXRlTmV3Um9vbS52YWx1ZSB9Ij4NCisJCQk8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InJvb21UeXBlSWROb2RlIj4NCisJCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIl9yb29tVHlwZSBvbmRhdGEgMTogIiwgcm9vbVR5cGVJZE5vZGUuY2hpbGROb2Rlc1swXS5kYXRhKTsNCisJCQkJdmFyIHJlbVR5cGVJZCA9IE51bWJlcihyb29tVHlwZUlkTm9kZS5jaGlsZE5vZGVzWzBdLmRhdGEpOw0KKwkJCQlpZiAocmVtVHlwZUlkID4gMCkgew0KKwkJCQkgICAgdGhpcy5zZWxlY3RJdGVtKHJlbVR5cGVJZCk7DQorCQkJICAgIH0NCisJCQk8L2hhbmRsZXI+DQorCSAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0IiA+DQorCSAgICAgICAgICAgIDwhW0NEQVRBWw0KKwkgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTxjYW52YXMucm9vbVR5cGVzSW5pdFZhbHVlcy5sZW5ndGg7aSsrKXsNCisJICAgICAgICAgICAgICAgIHRoaXMuYWRkSXRlbShjYW52YXMucm9vbVR5cGVzSW5pdFZhbHVlc1tpXS5uYW1lLGNhbnZhcy5yb29tVHlwZXNJbml0VmFsdWVzW2ldLnJvb210eXBlc19pZCk7DQorCSAgICAgICAgICAgIH0NCisJICAgICAgICAgICAgLy90aGlzLnNlbGVjdEl0ZW0oU3RyaW5nKGNhbnZhcy5yb29tVHlwZXNJbml0VmFsdWVzWzBdLnJvb210eXBlc19pZCkpOw0KKwkgICAgICAgICAgICBdXT4NCisJICAgICAgICA8L2hhbmRsZXI+IA0KKyAgICAgICAgPC9yZXNldENvbWJvYm94PiANCisJIAkNCisJIAk8IS0tIFJvb20gbGlzdCAtLT4NCisJCTxsYWJlbFRleHQgbmFtZT0iX3Jvb21MYWJlbCIgeD0iNCIgeT0iMTU0IiBsYWJlbGlkPSI0MDYiIGZvbnRzdHlsZT0iYm9sZCIgLz4gDQorCQkNCisJCTxyZXNldENvbWJvYm94IG5hbWU9Il9yb29tIiB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aC0xMzAgfSIgeT0iMTU0IiB4PSIxMjAiIGVkaXRhYmxlPSJmYWxzZSIgDQorCQkJCWVuYWJsZWQ9IiR7ICFwYXJlbnQuX2NyZWF0ZU5ld1Jvb20udmFsdWUgfSI+DQorCQkJPGF0dHJpYnV0ZSBuYW1lPSJhcHBvaW50bWVudFJvb21Jbkxpc3QiIHR5cGU9ImJvb2xlYW4iIHZhbHVlPSJmYWxzZSIgLz4NCisJCQkNCisJCQk8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJnZXRSb29tc1B1YmxpY1dpdGhvdXRUeXBlIiBmdW5jbmFtZT0iY29uZmVyZW5jZXNlcnZpY2UuZ2V0Um9vbXNQdWJsaWNXaXRob3V0VHlwZSIgDQorCQkJCXJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiA+DQorCQkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gY2FudmFzLnNlc3Npb25JZDs8L21ldGhvZD48L25ldHBhcmFtPiAgDQorCQkJCQ0KKwkJCQk8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4JDQorCQkJCTwhW0NEQVRBWw0KKwkJCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImdldFJvb21zUHVibGljV2l0aG91dFR5cGU6ICIsIHZhbHVlKTsNCisJCQkJCWZvciAodmFyIGkgPSAwOyB2YWx1ZSAhPSBudWxsICYmIGkgPCB2YWx1ZS5sZW5ndGg7ICsraSkgew0KKwkJICAgICAgICAgICAgICAgIHBhcmVudC5hZGRJdGVtKHZhbHVlW2ldLm5hbWUsIHZhbHVlW2ldLnJvb21zX2lkKTsNCisJCSAgICAgICAgICAgICAgICBpZiAocGFyZW50LnBhcmVudC5yb29tSWQgPT0gdmFsdWVbaV0ucm9vbXNfaWQpIHsNCisJCSAgICAgICAgICAgICAgICAJcGFyZW50LmFwcG9pbnRtZW50Um9vbUluTGlzdCA9IHRydWU7DQorCQkgICAgICAgICAgICAgICAgfQ0KKwkJCQkJfQ0KKwkJCQkJcGFyZW50LmdldFJvb21zQnlPcmdhbmlzYXRpb25XaXRob3V0VHlwZS5kb0NhbGwoKTsNCisJCQkJXV0+DQorCQkJCTwvaGFuZGxlcj4NCisJCQk8L25ldFJlbW90ZUNhbGxIaWI+DQorCQkJDQorCQkJPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iZ2V0Um9vbXNCeU9yZ2FuaXNhdGlvbldpdGhvdXRUeXBlIiBmdW5jbmFtZT0iY29uZmVyZW5jZXNlcnZpY2UuZ2V0Um9vbXNCeU9yZ2FuaXNhdGlvbldpdGhvdXRUeXBlIiByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPg0KKwkJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4NCisJCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBoaWIuY3VycmVudGRvbWFpbk9iai5vcmdhbmlzYXRpb25faWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4gIA0KKwkJCQkNCisJCQkJPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CQ0KKwkJCQk8IVtDREFUQVsNCisJCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJnZXRSb29tc0J5T3JnYW5pc2F0aW9uV2l0aG91dFR5cGUgIix2YWx1ZSk7DQorCQkJCQlmb3IgKHZhciBpID0gMDsgdmFsdWUgIT0gbnVsbCAmJiBpIDwgdmFsdWUubGVuZ3RoOyArK2kpIHsNCisJCSAgICAgICAgICAgICAgICBwYXJlbnQuYWRkSXRlbSh2YWx1ZVtpXS5yb29tLm5hbWUsIHZhbHVlW2ldLnJvb20ucm9vbXNfaWQpOw0KKwkJICAgICAgICAgICAgICAgIGlmIChwYXJlbnQucGFyZW50LnJvb21JZCA9PSB2YWx1ZVtpXS5yb29tLnJvb21zX2lkKSB7DQorCQkgICAgICAgICAgICAgICAgCXBhcmVudC5hcHBvaW50bWVudFJvb21Jbkxpc3QgPSB0cnVlOw0KKwkJICAgICAgICAgICAgICAgIH0NCisJCQkJCX0NCisJCQkJCXBhcmVudC5zZWxlY3RSb29tKCk7DQorCQkJCV1dPg0KKwkJCQk8L2hhbmRsZXI+DQorCQkJPC9uZXRSZW1vdGVDYWxsSGliPg0KKwkJCQ0KKwkJCTxtZXRob2QgbmFtZT0ic2VsZWN0Um9vbSI+DQorCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJwYXJlbnQucm9vbUlkICE9IDAgPyAiLCBwYXJlbnQucm9vbUlkICE9IDApOw0KKwkJCQlpZiAocGFyZW50LnJvb21JZCAhPSAwKSB7DQorCQkJCQlpZighdGhpcy5hcHBvaW50bWVudFJvb21Jbkxpc3QpIHsNCisJCQkJCQl0aGlzLmFkZEl0ZW0ocGFyZW50Ll90aXRsZS5nZXRUZXh0KCksIHBhcmVudC5yb29tSWQpOw0KKwkJCQkJCXBhcmVudC5fY3JlYXRlTmV3Um9vbS5zZXRBdHRyaWJ1dGUoImVuYWJsZWQiLCB0cnVlKTsNCisJCQkJCQlwYXJlbnQuX2NyZWF0ZU5ld1Jvb20uc2V0VmFsdWUodHJ1ZSk7DQorCQkJCQl9DQorCQkJCQl0aGlzLnNlbGVjdEl0ZW0ocGFyZW50LnJvb21JZCk7DQorCQkJCX0NCisJCQk8L21ldGhvZD4NCisJCQkNCisJCQk8aGFuZGxlciBuYW1lPSJvbnZhbHVlIiBhcmdzPSJ2Ij4NCisJCQk8IVtDREFUQVsNCisJCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIl9yb29tOjogb252YWx1ZSAiLCBwYXJlbnQucm9vbUlkLCB2LCB0aGlzLmdldFZhbHVlKCksICghdGhpcy5hcHBvaW50bWVudFJvb21Jbkxpc3QgJiYgcGFyZW50LnJvb21JZCA9PSB2KSk7DQorCQkJCWlmIChwYXJlbnQucm9vbUlkICE9IDAgJiYgdikgew0KKwkJCQkJcGFyZW50Ll9jcmVhdGVOZXdSb29tLnNldEF0dHJpYnV0ZSgiZW5hYmxlZCIsICF0aGlzLmFwcG9pbnRtZW50Um9vbUluTGlzdCAmJiBwYXJlbnQucm9vbUlkID09IHYpOw0KKwkJCQl9DQorCQkJXV0+DQorCQkJPC9oYW5kbGVyPg0KKyAgICAgICAgPC9yZXNldENvbWJvYm94PiANCisJIAkNCisJIAk8IS0tIHBhc3N3b3JkIHByb3RlY3RlZCAtLT4NCisJCTxsYWJlbENoZWNrYm94IG5hbWU9Il9pc3Bhc3N3b3JkUHJvdGVjdGVkIiB5PSIxODAiIGZvbnRzaXplPSIxMSIgeD0iMTAiIGxhYmVsaWQ9IjUyNCINCisJCQkJZGF0YXBhdGg9ImxvY2FsOmNsYXNzcm9vdC5ldmVudERTOi9pc1Bhc3N3b3JkUHJvdGVjdGVkIj4NCisJCQk8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9ImQiPg0KKwkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib25kYXRhIF9pc3Bhc3N3b3JkUHJvdGVjdGVkICIsIGQuY2hpbGROb2Rlc1swXS5kYXRhKTsNCisJCQkJdGhpcy5zZXRWYWx1ZShkLmNoaWxkTm9kZXNbMF0uZGF0YSA9PSAidHJ1ZSIpOw0KKwkJCTwvaGFuZGxlcj4NCisJCTwvbGFiZWxDaGVja2JveD4NCisJCQkNCisJCTwhLS0gcGFzc3dvcmQgLS0+DQorCQk8bGFiZWxUZXh0IGxhYmVsaWQ9IjUyNSIgeT0iMjA2IiB4PSI0IiBmb250c3R5bGU9ImJvbGQiIA0KKwkJCQlmZ2NvbG9yPSIkeyAoKCFwYXJlbnQuX2lzcGFzc3dvcmRQcm90ZWN0ZWQudmFsdWUpID8gMHhDQ0NDQ0MgOiAweDAwMDAwMCApIH0iIC8+DQorCQk8Y3VzdG9tRWRpdHRleHQgbmFtZT0iX3Bhc3N3b3JkIiBlbmFibGVkPSIkeyBwYXJlbnQuX2lzcGFzc3dvcmRQcm90ZWN0ZWQudmFsdWUgfSIgcGFzc3dvcmQ9InRydWUiDQorCQkJCQkJd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGgtMTMwIH0iIHg9IjEyMCIgeT0iMjA2IiAvPg0KKwkJCQkJCQ0KKwkJPHZpZXcgcmVzb3VyY2U9Im1lc3NhZ2Vib3hfaW5mb19yc2MiIHg9IjQiIHk9IjIyNiIgLz4NCisJDQorCQk8bGFiZWxUZXh0IG5hbWU9InBhc3N3b3JkX2luZm8iIGxhYmVsaWQ9IjE0NDUiIHg9IjI0IiB5PSIyMjYiIA0KKwkJCQkJCQltdWx0aWxpbmU9InRydWUiIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoLTM0IH0iIC8+DQorCSAJDQorCSAJPCEtLSBwYXJ0aWNpcGVudHMgLS0+DQorCSAJPHZpZXcgbmFtZT0iX3BhcnRpY2lwZW50c0ljb25CYXIiIGxheW91dD0iYXhpczp4IiB4PSIkb25jZXsgcGFyZW50LndpZHRoLTUwIH0iIHk9IjI4MiI+DQorCSAgICAgICAgPGJhc2VDaG9vc2VJY29uVmlldyBsYWJlbGlkPSI4MTIiIGhlaWdodD0iMjAiIHdpZHRoPSIxOSIgDQorCSAgICAgICAgCQliZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ3NlY29uZEJvcmRlckNvbG9yJykgfSINCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlTj0iY2FsZW5kYXJfYWRkX3VzZXJfcnNjIj4NCisJICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+DQorCSAgICAgICAgICAgICAgICBuZXcgbHouYWRkQXR0ZW5kZWUoY2FudmFzLHtyZWZPYmo6cGFyZW50LnBhcmVudC5fcGFydGljaXBlbnRMaXN0fSk7DQorCSAgICAgICAgICAgIDwvaGFuZGxlcj4NCisJICAgICAgICA8L2Jhc2VDaG9vc2VJY29uVmlldz4NCisJICAgICAgICA8YmFzZUNob29zZUljb25WaWV3IGxhYmVsaWQ9IjYyOSIgaGVpZ2h0PSIyMCIgd2lkdGg9IjE5IiANCisJICAgICAgICAJCQliZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ3NlY29uZEJvcmRlckNvbG9yJykgfSINCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlTj0iY2FsZW5kYXJfYWRkX3VzZXJfZXh0ZXJuYWxfcnNjIiA+DQorCSAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPg0KKwkgICAgICAgICAgICAgICAgbmV3IGx6LmFkZEV4dGVybmFsQXR0ZW5kZWUoY2FudmFzLHtyZWZPYmo6cGFyZW50LnBhcmVudC5fcGFydGljaXBlbnRMaXN0fSk7DQorCSAgICAgICAgICAgIDwvaGFuZGxlcj4NCisJICAgICAgICA8L2Jhc2VDaG9vc2VJY29uVmlldz4NCisJICAgICAgICA8dmlldyBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ3NlY29uZEJvcmRlckNvbG9yJykgfSIgaGVpZ2h0PSIyMCIgd2lkdGg9IjEiIC8+DQorCSAgICA8L3ZpZXc+DQorCSAJDQorCSAJPGxhYmVsVGV4dCBuYW1lPSJfcGFydGljaXBlbnRMYWJlbCIgeD0iNCIgeT0iMzAyIiBsYWJlbGlkPSI4MDMiIGZvbnRzdHlsZT0iYm9sZCIgLz4gDQorCSAJDQorCSAJPHZpZXcgbmFtZT0iX3BhcnRpY2lwZW50TGlzdCIgeD0iMTIwIiB5PSIzMDIiIGhlaWdodD0iMTAwIiANCisgICAgICAgICAgICAJCSAgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdzZWNvbmRCb3JkZXJDb2xvcicpIH0iIA0KKyAgICAgICAgICAgIAkJICB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aC0xMzAgfSI+DQorICAgICAgICAgICANCisgICAgICAgICAgICA8bWV0aG9kIG5hbWU9ImFkZExpc3RJdGVtIiBhcmdzPSJ1c2VySWQsZmlyc3ROYW1lLGxhc3ROYW1lLGVtYWlsLG1lbWJlcklkLGpOYW1lVGltZVpvbmUiPg0KKyAgICAgICAgICAgIAk8IVtDREFUQVsNCisgICAgICAgICAgICAJCXZhciB0T2JqZWN0ID0gbmV3IE9iamVjdCgpOw0KKyAgICAgICAgICAgIAkJdE9iamVjdC5tZWV0aW5nTWVtYmVyID0gbmV3IE9iamVjdCgpOw0KKyAgICAgICAgICAgIAkJdE9iamVjdC5tZWV0aW5nTWVtYmVyLnVzZXJpZCA9IHVzZXJJZDsNCisgICAgICAgICAgIAkJCXRPYmplY3QubWVldGluZ01lbWJlci5maXJzdG5hbWUgPSBmaXJzdE5hbWU7DQorICAgICAgICAgICAJCQl0T2JqZWN0Lm1lZXRpbmdNZW1iZXIubGFzdG5hbWUgPSBsYXN0TmFtZTsNCisgICAgICAgICAgIAkJCXRPYmplY3QubWVldGluZ01lbWJlci5lbWFpbCA9IGVtYWlsOw0KKyAgICAgICAgICAgCQkJdE9iamVjdC5tZWV0aW5nTWVtYmVyLm1lZXRpbmdNZW1iZXJJZCA9IG1lbWJlcklkOw0KKyAgICAgICAgICAgCQkJdE9iamVjdC5tZWV0aW5nTWVtYmVyLmpOYW1lVGltZVpvbmUgPSBqTmFtZVRpbWVab25lOw0KKyAgICAgICAgICAgCQkJdmFyIHREYXRhRWxlbWVudCA9IEx6RGF0YUVsZW1lbnQudmFsdWVUb0VsZW1lbnQodE9iamVjdCk7DQorICAgICAgICAgICAJCQl2YXIgdFBvaW50ZXIgPSBuZXcgbHouZGF0YXBvaW50ZXIoKTsNCisgICAgICAgICAgIAkJCXRQb2ludGVyLnNldFBvaW50ZXIodERhdGFFbGVtZW50LmNoaWxkTm9kZXNbMF0pOw0KKyAgICAgICAgICAgCQkJcGFyZW50LmV2ZW50RFMuZ2V0UG9pbnRlcigpLmFkZE5vZGVGcm9tUG9pbnRlcih0UG9pbnRlcik7DQorICAgICAgICAgICAJCQkvL3BhcmVudC5ldmVudERTLmdldFBvaW50ZXIoKS51cGRhdGVEYXRhKCk7DQorICAgICAgICAgICAgCV1dPg0KKyAgICAgICAgICAgIDwvbWV0aG9kPiAJDQorICAgICAgICAgICAgDQorICAgICAgICAgICAgPG1ldGhvZCBuYW1lPSJnZXRNZW1iZXJBcnJheVZhbHVlIj4NCisgICAgICAgICAgICAJPCFbQ0RBVEFbDQorICAgICAgICAgICAgCQl2YXIgdEFycmF5ID0gbmV3IEFycmF5KCk7DQorICAgICAgICAgICAgCQkNCisgICAgICAgICAgICAJCWZvciAodmFyIGk9MDtpPHRoaXMuX2NvbnRlbnQuX2lubmVyLnN1YnZpZXdzLmxlbmd0aDtpKyspIHsNCisgICAgICAgICAgICAJCQ0KKyAgICAgICAgICAgIAkJCXZhciB0Vmlld09iaiA9IHRoaXMuX2NvbnRlbnQuX2lubmVyLnN1YnZpZXdzW2ldOw0KKyAgICAgICAgICAgIAkJCQ0KKyAgICAgICAgICAgIAkJCWlmICghdFZpZXdPYmouaXNMb2FkZWQpIHsNCisgICAgICAgICAgICAJCQkJY29udGludWU7DQorICAgICAgICAgICAgCQkJfQ0KKyAgICAgICAgICAgIAkJCQ0KKyAgICAgICAgICAgIAkJCXZhciB0T2JqZWN0ID0gbmV3IE9iamVjdCgpOw0KKyAgICAgICAgICAgIAkJCXRPYmplY3QubWVldGluZ01lbWJlcklkID0gdFZpZXdPYmoubWVtYmVySWQ7DQorCQkgICAgICAgIAkJdE9iamVjdC5maXJzdG5hbWUgPSB0Vmlld09iai5maXJzdE5hbWU7DQorCQkgICAgICAgIAkJdE9iamVjdC5sYXN0bmFtZSA9IHRWaWV3T2JqLmxhc3ROYW1lOw0KKwkJICAgICAgICAJCXRPYmplY3QuZW1haWwgPSB0Vmlld09iai5lbWFpbDsNCisJCSAgICAgICAgCQl0T2JqZWN0LnVzZXJJZCA9IHRWaWV3T2JqLnVzZXJJZDsNCisJCSAgICAgICAgCQl0T2JqZWN0LmpOYW1lVGltZVpvbmUgPSB0Vmlld09iai5qTmFtZVRpbWVab25lOw0KKwkJICAgICAgICAJCQ0KKwkJICAgICAgICAJCXRBcnJheS5wdXNoKHRPYmplY3QpOw0KKyAgICAgICAgICAgIAkJfQ0KKyAgICAgICAgICAgIAkJDQorICAgICAgICAgICAgCQlyZXR1cm4gdEFycmF5Ow0KKyAgICAgICAgICAgIAldXT4NCisgICAgICAgICAgICA8L21ldGhvZD4NCisgICAgICAgICAgICAgIA0KKyAgICAgICAgICAJPHZpZXcgbmFtZT0iX2NvbnRlbnQiIGJnY29sb3I9IjB4RkZGRkZGIiB4PSIxIiB5PSIxIiBjbGlwPSJ0cnVlIg0KKyAgICAgICAgICAJCQl3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aC0xIH0iIGhlaWdodD0iJG9uY2V7IHBhcmVudC5oZWlnaHQtMSB9Ij4NCisgICAgICAgICAgCQk8dmlldyBuYW1lPSJfaW5uZXIiPg0KKyAgICAgICAgICAJCQk8YXR0ZW5kZWVMaXN0SXRlbSBkYXRhcGF0aD0ibG9jYWw6Y2xhc3Nyb290LmV2ZW50RFM6L21lZXRpbmdNZW1iZXIiDQorICAgICAgICAgICAJCQkJCQl3aWR0aD0iJG9uY2V7IHBhcmVudC5wYXJlbnQud2lkdGgtMTAgfSI+DQorICAgICAgICAgICAJCQkJCQkNCisgICAgICAgICAgIAkJCQk8YXR0cmlidXRlIG5hbWU9ImlzTG9hZGVkIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+DQorICAgICAgICAgICAJCQkJDQorICAgICAgICAgICAJCQkJPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJkIj4NCisgICAgICAgICAgIAkJCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm1lZXRpbmdNZW1iZXIgLS0gb25kYXRhICIsZCk7DQorICAgICAgICAgICAJCQkJCXRoaXMuaXNMb2FkZWQgPSB0cnVlOw0KKyAgICAgICAgICAgCQkJCQl2YXIgdERhdGFQb2ludGVyID0gbmV3IGx6LmRhdGFwb2ludGVyKCk7DQorICAgICAgICAgICAJCQkJCXREYXRhUG9pbnRlci5zZXRQb2ludGVyKGQpOw0KKyAgICAgICAgICAgCQkJCQl0aGlzLnVzZXJJZCA9IHREYXRhUG9pbnRlci54cGF0aFF1ZXJ5KCAndXNlcmlkL3RleHQoKScgKTsNCisgICAgICAgICAgIAkJCQkJdGhpcy5maXJzdE5hbWUgPSB0RGF0YVBvaW50ZXIueHBhdGhRdWVyeSggJ2ZpcnN0bmFtZS90ZXh0KCknICk7DQorICAgICAgICAgICAJCQkJCXRoaXMubGFzdE5hbWUgPSB0RGF0YVBvaW50ZXIueHBhdGhRdWVyeSggJ2xhc3RuYW1lL3RleHQoKScgKTsNCisgICAgICAgICAgIAkJCQkJdGhpcy5lbWFpbCA9IHREYXRhUG9pbnRlci54cGF0aFF1ZXJ5KCAnZW1haWwvdGV4dCgpJyApOw0KKyAgICAgICAgICAgCQkJCQl0aGlzLm1lbWJlcklkID0gdERhdGFQb2ludGVyLnhwYXRoUXVlcnkoICdtZWV0aW5nTWVtYmVySWQvdGV4dCgpJyApOw0KKyAgICAgICAgICAgCQkJCQl0aGlzLmpOYW1lVGltZVpvbmUgPSB0RGF0YVBvaW50ZXIueHBhdGhRdWVyeSggJ2pOYW1lVGltZVpvbmUvdGV4dCgpJyApOw0KKyAgICAgICAgICAgCQkJCQl0aGlzLm1lbWJlclRleHQuc2V0QXR0cmlidXRlKCJ0ZXh0Iix0aGlzLmZpcnN0TmFtZSsnICcrdGhpcy5sYXN0TmFtZSsnIFsnK3RoaXMuZW1haWwrJ10nKTsNCisgICAgICAgICAgIAkJCQk8L2hhbmRsZXI+DQorICAgICAJCQkJPC9hdHRlbmRlZUxpc3RJdGVtPg0KKyAgICAgICAgICAJCQk8c2ltcGxlbGF5b3V0IGF4aXM9InkiIHNwYWNpbmc9IjEiIC8+DQorICAgICAgICAgIAkJPC92aWV3Pg0KKyAgICAgICAgICAgCQk8b21fdnNjcm9sbGJhciAvPg0KKyAgICAgICAgICAgCTwvdmlldz4NCisgICAgICAgIDwvdmlldz4NCisgICAgICAgIA0KKyAgICAgICAgPCEtLSBMb2NhdGlvbiAtLT4NCisgICAgICAgIDxsYWJlbFRleHQgbmFtZT0iX2xvY2F0aW9uTGFiZWwiIHg9IjQiIHk9IjQwNiIgbGFiZWxpZD0iNTY5IiBmb250c3R5bGU9ImJvbGQiIC8+IA0KKyAgICAgICAgDQorICAgICAgICA8Y3VzdG9tRWRpdHRleHQgbmFtZT0iX2xvY2F0aW9uIiANCisgICAgICAgIAkJZGF0YXBhdGg9ImxvY2FsOmNsYXNzcm9vdC5ldmVudERTOi9sb2NhdGlvbiIgdGV4dD0iJHBhdGh7J3RleHQoKSd9IiANCisgICAgICAgIAkJd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGgtMTMwIH0iIHg9IjEyMCIgeT0iNDA2IiAvPg0KKwkJDQorCQk8IS0tIENvbW1lbnQgLS0+DQorCQk8bGFiZWxUZXh0IG5hbWU9Il9kZXNjckxhYmVsIiB4PSI0IiB5PSI0MzIiIGxhYmVsaWQ9IjU3MyIgZm9udHN0eWxlPSJib2xkIiAvPiANCisJDQorCQk8Y3VzdG9tU2Nyb2xsRWRpdHRleHQgbmFtZT0iX2Rlc2NyIiB5PSI0MzIiIHg9IjEyMCIgDQorCQkJCWRhdGFwYXRoPSJsb2NhbDpjbGFzc3Jvb3QuZXZlbnREUzovY29tbWVudCIgdGV4dD0iJHBhdGh7J3RleHQoKSd9IiANCisJCQkJd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGgtMTMwIH0iIGhlaWdodD0iMTI0IiAvPiANCisJCQkNCisJCTxzaW1wbGVMYWJlbEJ1dHRvbiBuYW1lPSJfc2F2ZUV2ZW50IiBsYWJlbGlkPSI4MTMiIHdpZHRoPSIxMDAiIA0KKwkJCQl4PSIkb25jZXsgcGFyZW50LndpZHRoLTMxNSB9IiB5PSIkb25jZXsgcGFyZW50LmhlaWdodC0yNCB9IiA+DQorCSAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+DQorCQkJCXRoaXMuc2V0QXR0cmlidXRlKCdlbmFibGVkJywgZmFsc2UpOw0KKyAgICAgICAgICAgICAgICBwYXJlbnQuc2F2ZUFuZENsb3NlKCk7DQorCSAgICAgICAgPC9oYW5kbGVyPg0KKyAgICAgICAgPC9zaW1wbGVMYWJlbEJ1dHRvbj4NCisJCQ0KKwkJPHNpbXBsZUxhYmVsQnV0dG9uIG5hbWU9Il9kZWxldGVFdmVudCIgbGFiZWxpZD0iODE0IiB3aWR0aD0iMTAwIiANCisJICAgICAgICAgICB4PSIkb25jZXsgcGFyZW50LndpZHRoLTIxMCB9IiB5PSIkb25jZXsgcGFyZW50LmhlaWdodC0yNCB9IiA+DQorCSAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPg0KKyAgICAgICAgIAkJaWYgKGNhbnZhcy5jb250YWN0VXNlciAhPSAwKSB7DQorICAgICAgICAgICAJCQluZXcgbHoubGFiZWxlcnJvclBvcHVwKGNhbnZhcyx7ZXJyb3JsYWJlbGlkOjEyNzh9KTsNCisgICAgICAgICAgIAkJCXJldHVybjsNCisgICAgICAgICAgIAkJfQ0KKyAgICAgICAgICAgCQkNCisgICAgICAgICAgIAkJaWYgKHBhcmVudC5pc0Nvbm5lY3RlZEV2ZW50KSB7DQorICAgICAgICAgICAJCQluZXcgbHouY29uZmlybWF0aW9uU2luZ2xlKGNhbnZhcyx7cmVmT2JqOnRoaXMsbGFiZWxpZDoxMjgxLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxpZGVycm9yOjEyODAsc2hvd0NoZWNrQm94OmZhbHNlfSk7DQorICAgICAgICAgICAJCX0gZWxzZSB7DQorICAgICAgICAgICAJCQluZXcgbHouY29uZmlybWF0aW9uU2luZ2xlKHBhcmVudC5wYXJlbnQsew0KKwkJCSAgICAgICAgCQkJCXJlZk9iajp0aGlzLGxhYmVsaWQ6Nzk3LA0KKwkgICAgICAgICAgIAkJCQkJCXNob3dDaGVja0JveDpmYWxzZSwNCisJICAgICAgICAgICAJCQkJCQlsYWJlbGlkZXJyb3I6Nzk2DQorICAgICAgICAgICAJCQkJCQl9KTsNCisgICAgICAgICAgIAkJfSANCisgICAgICAgICAgIAk8L2hhbmRsZXI+DQorICAgICAgICAgICAJPG1ldGhvZCBuYW1lPSJzZW5kQ29uZmlybWF0aW9uIiBhcmdzPSJyZWZPYmosdCI+DQorICAgICAgICAgICAJCXBhcmVudC5kZWxldGVBcHBvaW50bWVudC5kb0NhbGwoKTsNCisgICAgICAgICAgIAk8L21ldGhvZD4NCisgICAgICAgIDwvc2ltcGxlTGFiZWxCdXR0b24+DQorCQ0KKwkgICAgPHNpbXBsZUxhYmVsQnV0dG9uIGxhYmVsaWQ9IjExMzAiIHdpZHRoPSIxMDAiIHg9IiRvbmNleyBwYXJlbnQud2lkdGgtMTA1IH0iIA0KKwkgICAgICAgICAgIHk9IiRvbmNleyBwYXJlbnQuaGVpZ2h0LTI0IH0iIA0KKwkgICAgICAgICAgIG9uY2xpY2s9InRoaXMucGFyZW50LmNsb3NlKCk7IiAvPgkJCQ0KKwkJDQorCTwvY2xhc3M+DQorDQorPC9saWJyYXJ5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpjYWxlbmRhci9jb21wb250ZW50cy9selZpZXdDYWxlbmRhckV2ZW50Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpjYWxlbmRhci9jb21wb250ZW50cy9selZpZXdDYWxlbmRhckV2ZW50Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOGVhYWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9semNhbGVuZGFyL2NvbXBvbnRlbnRzL2x6Vmlld0NhbGVuZGFyRXZlbnQubHp4CkBAIC0wLDAgKzEsMjExIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPGxpYnJhcnk+DQorDQorCTxjbGFzcyBuYW1lPSJselZpZXdDYWxlbmRhckV2ZW50IiBleHRlbmRzPSJ2aWV3IiBiZ2NvbG9yPSIweEJCQkJCQiIgY2xpY2thYmxlPSJ0cnVlIiANCisJCQkJCQkJc2hvd2hhbmRjdXJzb3I9ImZhbHNlIiB3aWR0aD0iMzAwIiBoZWlnaHQ9IjEyMCIgIGZvY3VzYWJsZT0idHJ1ZSI+DQorCQ0KKwkJPGF0dHJpYnV0ZSBuYW1lPSJkYXRhRWxlbWVudCIgdmFsdWU9Im51bGwiIC8+DQorCQkNCisJCTxhdHRyaWJ1dGUgbmFtZT0ibHpDYWxlbmRhclJlZiIgdmFsdWU9Im51bGwiIC8+DQorCQkNCisJCTxkYXRhc2V0IG5hbWU9ImV2ZW50RFMiIC8+DQorCQkNCisJCTxhdHRyaWJ1dGUgbmFtZT0icmVmQ2FsZW5kYXJFdmVudFZpZXciIHZhbHVlPSJudWxsIiAvPg0KKwkJDQorCQk8YXR0cmlidXRlIG5hbWU9ImFwcG9pbnRtZW50SWQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+DQorCQkNCisJCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+DQorCQkJPCFbQ0RBVEFbDQorCQkJCS8vdGhpcy5fY29udGVudC5fdGl0bGUuc2V0QXR0cmlidXRlKCJmZ2NvbG9yIix0aGlzLnJlZkNhbGVuZGFyRXZlbnRWaWV3LmJnY29sb3IpOw0KKwkJCQ0KKwkJCQl2YXIgeF9jYW52YXMgPSBjYW52YXMuZ2V0TW91c2UoIngiKSAtICh0aGlzLndpZHRoLzIpICsgNjA7DQorCQkJCQ0KKwkJCQlpZiAoeF9jYW52YXMgKyB0aGlzLndpZHRoICsgNCA+IGNhbnZhcy53aWR0aCkgew0KKwkJCQkJeF9jYW52YXMgPSBjYW52YXMud2lkdGggLSAzMTA7DQorCQkJCQl2YXIgdFggPSBjYW52YXMuZ2V0TW91c2UoIngiKS14X2NhbnZhcy04Ow0KKwkJCQkJaWYgKHRYICsgMjQgPiB0aGlzLndpZHRoKSB7DQorCQkJCQkJdFggPSB0aGlzLndpZHRoIC0gMjQ7DQorCQkJCQl9DQorCQkJCQl0aGlzLnBvaW50ZXJUb0V2ZW50LnNldEF0dHJpYnV0ZSgieCIsdFgpOw0KKwkJCQl9DQorCQkJCXRoaXMuc2V0QXR0cmlidXRlKCJ4Iix4X2NhbnZhcyk7DQorCQkJCXZhciB5X2NhbnZhcyA9IGNhbnZhcy5nZXRNb3VzZSgieSIpOw0KKwkJCQl0aGlzLnNldEF0dHJpYnV0ZSgieSIseV9jYW52YXMtdGhpcy5oZWlnaHQtMTIpOw0KKwkJCQkNCisgICAgICAgICAgICAJdGhpcy5ldmVudERTLnNldEF0dHJpYnV0ZSgiZGF0YSIsIHRoaXMuZGF0YUVsZW1lbnQuY2hpbGROb2Rlcyk7DQorICAgICAgICAgICAgCQ0KKyAgICAgICAgICAgIAl0aGlzLmFwcG9pbnRtZW50SWQgPSB0aGlzLmV2ZW50RFMuZ2V0UG9pbnRlcigpLnhwYXRoUXVlcnkoJ2FwcG9pbnRtZW50SWQvdGV4dCgpJyk7DQorICAgICAgICAgICAgCQ0KKwkgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib3JnYW5pemVySWQgIiwgdGhpcy5ldmVudERTLmdldFBvaW50ZXIoKS54cGF0aFF1ZXJ5KCdvcmdhbml6ZXJJZC90ZXh0KCknKSk7DQorCSAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJjdXJyZW50VXNlcjogIiwgY2FudmFzLnVzZXJfaWQpOw0KKyAgICAgICAgICAgIAlpZiAoY2FudmFzLnVzZXJfaWQgIT0gTnVtYmVyKHRoaXMuZXZlbnREUy5nZXRQb2ludGVyKCkueHBhdGhRdWVyeSgnb3JnYW5pemVySWQvdGV4dCgpJykpKSB7DQorICAgICAgICAgICAgCQl0aGlzLl9jb250ZW50LmRlbGV0ZUJ0bi5zZXRBdHRyaWJ1dGUoJ3Zpc2libGUnLCBmYWxzZSk7IA0KKyAgICAgICAgICAgIAkJdGhpcy5fY29udGVudC5lZGl0QnRuLnNldEF0dHJpYnV0ZSgndmlzaWJsZScsIGZhbHNlKTsgDQorICAgICAgICAgICAgCX0NCisJICAgICAgICAgICAgDQorCSAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ0aGlzLmV2ZW50RFMgIix0aGlzLmV2ZW50RFMpOw0KKwkgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidGhpcy5hcHBvaW50bWVudElkICIsdGhpcy5hcHBvaW50bWVudElkKTsNCisJICAgICAgICAgICAgDQorCSAgICAgICAgICAgIGx6LkZvY3VzLnNldEZvY3VzKHRoaXMpOw0KKwkgICAgICAgICAgICB0aGlzLnNldFNoYWRvdygpOw0KKwkgICAgICAgICAgICBsei5Nb2RlTWFuYWdlci5tYWtlTW9kYWwodGhpcyk7DQorICAgICAgICAgICAgXV0+DQorCQk8L2hhbmRsZXI+DQorCQkNCisJCTxtZXRob2QgbmFtZT0ic2V0U2hhZG93Ij4NCisJICAgICAgICA8IVtDREFUQVsNCisJICAgICAgICAgICAgdmFyIG5vcm1hbE1DID0gdGhpcy5nZXREaXNwbGF5T2JqZWN0KCk7DQorCSAgICAgICAgICAgIHZhciBkaXNwbGFjZW1lbnRNYXAgPSBuZXcgZmxhc2guZmlsdGVycy5Ecm9wU2hhZG93RmlsdGVyKCk7DQorCSAgICAgICAgICAgIG5vcm1hbE1DLmZpbHRlcnMgPSBbZGlzcGxhY2VtZW50TWFwXTsNCisJICAgICAgICBdXT4gICAgICAgICAgICAgIA0KKwkgICAgPC9tZXRob2Q+DQorCSAgICANCisJICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImRlbGV0ZUFwcG9pbnRtZW50IiBmdW5jbmFtZT0iY2FsZW5kYXJzZXJ2aWNlLmRlbGV0ZUFwcG9pbnRtZW50IiANCisJCQkJCQkJICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAgICAgDQorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBjYW52YXMuc2Vzc2lvbklkOyA8L21ldGhvZD48L25ldHBhcmFtPg0KKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC5hcHBvaW50bWVudElkOzwvbWV0aG9kPjwvbmV0cGFyYW0+CQ0KKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gaGliLnVzZXJsYW5nOzwvbWV0aG9kPjwvbmV0cGFyYW0+DQorCSAgICAJPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+DQorCSAgICAJCTwhW0NEQVRBWw0KKwkJICAgIAkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImRlbGV0ZUFwcG9pbnRtZW50ICIsdmFsdWUpOw0KKwkJICAgIAkJcGFyZW50Lmx6Q2FsZW5kYXJSZWYucmVsb2FkKCk7DQorCQkJCQlwYXJlbnQuY2xvc2UoKTsNCisJICAgIAkJIF1dPg0KKwkgICAgCTwvaGFuZGxlcj4NCisJICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4gDQorCQ0KKwkJPG1ldGhvZCBuYW1lPSJjbG9zZSI+DQorCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIkNMT1NFIGx6Vmlld0NhbGVuZGFyRXZlbnQiKTsNCisJCQl0aGlzLmx6Q2FsZW5kYXJSZWYubHpWaWV3Q2FsZW5kYXJFdmVudCA9IG51bGw7DQorCQkJbHouTW9kZU1hbmFnZXIucmVsZWFzZSh0aGlzKTsNCisJCQl0aGlzLmRlc3Ryb3koKTsNCisJCTwvbWV0aG9kPg0KKwkJDQorCQk8IS0tLSBAa2V5d29yZHMgcHJpdmF0ZSAtLT4NCisJICAgIDxtZXRob2QgbmFtZT0icGFzc01vZGVFdmVudCIgYXJncz0iZXZlbnRTdHIsdmlldyIgPiANCisJICAgICAgICA8IVtDREFUQVsNCisJICAgICAgICAgICAgaWYgKCBldmVudFN0ciA9PSAib25tb3VzZWRvd24iICApew0KKwkgICAgICAgICAgICAgICAgaWYgKCB2aWV3ICE9IG51bGwgKSB7DQorCSAgICAgICAgICAgICAgICAgICBpZiAoICF2aWV3LmNoaWxkT2YodGhpcykgKSB7DQorCSAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTsNCisJICAgICAgICAgICAgICAgICAgIH0NCisJICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorCSAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpOw0KKwkgICAgICAgICAgICAgICAgfQ0KKwkgICAgICAgICAgICB9DQorCSAgICAgICAgICAgIGlmICh2aWV3ICYmIHZpZXcuY2hpbGRPZih0aGlzKSkgew0KKwkgICAgICAgICAgICAgICAgaWYgKHZpZXdbIGV2ZW50U3RyIF0pIHsNCisJICAgICAgICAgICAgICAgICAgICB2aWV3WyBldmVudFN0ciBdLnNlbmRFdmVudCggdmlldyApOw0KKwkgICAgICAgICAgICAgICAgfQ0KKwkgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KKwkgICAgICAgICAgICB9DQorCSAgICAgICAgICAgIHJldHVybiB0cnVlOw0KKwkgICAgICAgIF1dPiANCisJICAgIDwvbWV0aG9kPiAJDQorCQ0KKwkJPHZpZXcgbmFtZT0iX2NvbnRlbnQiIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoLTMgfSIgaGVpZ2h0PSIkb25jZXsgcGFyZW50LmhlaWdodC0zIH0iIA0KKwkJCQkJCQkJCXg9IjEuNSIgeT0iMS41IiBiZ2NvbG9yPSIweEZGRkZGRiI+DQorCQkNCisJCQk8bGFiZWxUZXh0IG5hbWU9Il90aXRsZSIgeD0iNSIgeT0iNCIgZGF0YXBhdGg9ImxvY2FsOmNsYXNzcm9vdC5ldmVudERTOi90aXRsZSIgDQorCQkJCQkJZm9udHNpemU9IjEyIiBmb250c3R5bGU9ImJvbGQiIGZnY29sb3I9IjB4MzIwREM4IiBtdWx0aWxpbmU9InRydWUiIA0KKwkJCQkJCXRleHQ9IiRwYXRoeyd0ZXh0KCknfSIgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGgtNDAgfSIgaGVpZ2h0PSI2MCIvPg0KKwkJCQ0KKwkJCTwhLS0gU3RhcnQgIC0tPg0KKwkJCTxsYWJlbFRleHQgbmFtZT0iX3N0YXJ0IiB4PSI1IiB5PSIyNiIgZGF0YXBhdGg9ImxvY2FsOmNsYXNzcm9vdC5ldmVudERTOi9zdGFydCI+DQorCQkJCTxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0iZCI+DQorCQkJCQl0aGlzLnNldEF0dHJpYnV0ZSgidGV4dCIsY2FudmFzLmdldExhYmVsTmFtZSg1NzApKyAiICIgK3BhcnNlRGF0ZVRpbWVTdHJpbmdGcm9tWG1sU3RyaW5nKGQuY2hpbGROb2Rlc1swXS5kYXRhKSk7DQorCQkJCTwvaGFuZGxlcj4NCisJCQk8L2xhYmVsVGV4dD4NCisJCQkNCisJCQk8bGFiZWxUZXh0IG5hbWU9Il9lbmQiIHg9IjUiIHk9IjQ0IiBkYXRhcGF0aD0ibG9jYWw6Y2xhc3Nyb290LmV2ZW50RFM6L2VuZCI+DQorCQkJCTxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0iZCI+DQorCQkJCQl0aGlzLnNldEF0dHJpYnV0ZSgidGV4dCIsY2FudmFzLmdldExhYmVsTmFtZSg1NzEpKyAiICIgK3BhcnNlRGF0ZVRpbWVTdHJpbmdGcm9tWG1sU3RyaW5nKGQuY2hpbGROb2Rlc1swXS5kYXRhKSk7DQorCQkJCTwvaGFuZGxlcj4NCisJCQk8L2xhYmVsVGV4dD4NCisJCQ0KKwkJCTx2aWV3IG5hbWU9Il9jbG9zZUJ1dHRvbiIgeD0iJHsgdGhpcy5wYXJlbnQucGFyZW50LndpZHRoLTIwIH0iDQorCQkJCQl5PSIyIiByZXNvdXJjZT0iYnRuX3ByZXNlbnRlcl9jbG9zZSINCisJICAgICAgICAgICAgICAgIG9ubW91c2VvdmVyPSJ0aGlzLnNldEF0dHJpYnV0ZSgnZnJhbWUnLDIpIg0KKwkgICAgICAgICAgICAgICAgb25tb3VzZW91dD0idGhpcy5zZXRBdHRyaWJ1dGUoJ2ZyYW1lJywxKSINCisJICAgICAgICAgICAgICAgIG9ubW91c2V1cD0idGhpcy5zZXRBdHRyaWJ1dGUoJ2ZyYW1lJywxKSIgPg0KKwkJCQk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4NCisJCQkJCXRoaXMucGFyZW50LnBhcmVudC5jbG9zZSgpOw0KKwkJCQk8L2hhbmRsZXI+CQkJCQkJCQkJDQorCQkJPC92aWV3Pg0KKwkJCQ0KKwkJCTxzaW1wbGVMYWJlbEJ1dHRvbiBsYWJlbGlkPSIxMjgyIiB3aWR0aD0iMTEwIiB4PSIkb25jZXsgcGFyZW50LndpZHRoLTExNSB9IiB5PSIkb25jZXsgcGFyZW50LmhlaWdodC01MCB9IiANCisJCQkJCQlkYXRhcGF0aD0ibG9jYWw6Y2xhc3Nyb290LmV2ZW50RFM6L3Jvb21JZCIgPg0KKwkJCQkJCQ0KKwkJCQk8YXR0cmlidXRlIG5hbWU9InJvb21JZCIgdmFsdWU9IiRwYXRoeyAndGV4dCgpJyB9IiB0eXBlPSJudW1iZXIiIC8+DQorCQkJCQkJDQorCQkgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPg0KKwkJICAgICAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInJvb21JZCAiLHJvb21JZCk7DQorCQkgICAgICAgIAlpZiAocm9vbUlkID4gMCkgew0KKwkJICAgICAgICAJCXBhcmVudC5wYXJlbnQuY2xvc2UoKTsNCisgICAgICAgICAgICAgICAgICAgCQljYW52YXMuaW5pdHJvb21pZCA9IHJvb21JZDsNCisgICAgICAgICAgICAgICAgICAgCQljYW52YXMudGhpc2hpYi5nZXRSb29tQnlJZC5kb0NhbGwoKTsNCisgICAgICAgICAgICAgICAgICAgCX0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgIAkJbmV3IGx6LmxhYmVsZXJyb3JQb3B1cChjYW52YXMse2Vycm9ybGFiZWxpZDoxMjg1fSk7DQorICAgICAgICAgICAgICAgICAgIAl9DQorCSAgICAgICAgICAgCTwvaGFuZGxlcj4NCisJICAgICAgICA8L3NpbXBsZUxhYmVsQnV0dG9uPg0KKwkJCQ0KKwkJCTxzaW1wbGVMYWJlbEJ1dHRvbiBuYW1lPSJkZWxldGVCdG4iIGxhYmVsaWQ9IjgxNCIgd2lkdGg9IjEwMCIgeD0iNSIgeT0iJG9uY2V7IHBhcmVudC5oZWlnaHQtMjQgfSIgPg0KKwkJICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4NCisJCSAgICAgICAgCS8vY2hlY2sgaWYgZXZlbnQgaXMgZnJvbSBvdGhlciB1c2VyDQorCQkgICAgICAgIAluZXcgbHouY29uZmlybWF0aW9uU2luZ2xlKHBhcmVudC5wYXJlbnQsew0KKwkJCSAgICAgICAgCQkJCXg6MCx5OjAsDQorCQkgICAgICAgIAkJCQkJd2lkdGg6cGFyZW50LnBhcmVudC53aWR0aCwNCisJCSAgICAgICAgCQkJCQloZWlnaHQ6cGFyZW50LnBhcmVudC5oZWlnaHQrMTYsDQorCQkJICAgICAgICAJCQkJcmVmT2JqOnRoaXMsbGFiZWxpZDo3OTcsDQorCSAgICAgICAgICAgCQkJCQkJc2hvd0NoZWNrQm94OmZhbHNlLA0KKwkgICAgICAgICAgIAkJCQkJCWxhYmVsaWRlcnJvcjo3OTYsDQorCSAgICAgICAgICAgCQkJCQkJZG9DYWxjUG9zaXRpb246ZmFsc2UsDQorCSAgICAgICAgICAgCQkJCQkJZG9ja2luZzpmYWxzZSwNCisJICAgICAgICAgICAJCQkJCQlhbGxvd0RyYWdnaW5nOmZhbHNlDQorICAgICAgICAgICAJCQkJCQl9KTsNCisJICAgICAgICAgICAJPC9oYW5kbGVyPg0KKwkgICAgICAgICAgIAk8bWV0aG9kIG5hbWU9InNlbmRDb25maXJtYXRpb24iIGFyZ3M9InJlZk9iaix0Ij4NCisJICAgICAgICAgICAJCXBhcmVudC5wYXJlbnQuZGVsZXRlQXBwb2ludG1lbnQuZG9DYWxsKCk7DQorCSAgICAgICAgICAgCTwvbWV0aG9kPg0KKwkgICAgICAgIDwvc2ltcGxlTGFiZWxCdXR0b24+DQorCQkNCisJCSAgICA8c2ltcGxlTGFiZWxCdXR0b24gbmFtZT0iZWRpdEJ0biIgbGFiZWxpZD0iMTQ0NiIgd2lkdGg9IjExMCIgeD0iJG9uY2V7IHBhcmVudC53aWR0aC0xMTUgfSIgDQorCQkgICAgICAgICAgIHk9IiRvbmNleyBwYXJlbnQuaGVpZ2h0LTI0IH0iIA0KKwkJICAgICAgICAgICBvbmNsaWNrPSJ0aGlzLnBhcmVudC5jbG9zZSgpOyI+DQorCQkgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPg0KKwkJICAgICAgICAJdmFyIHRFbGVtZW50ID0gcGFyZW50LnBhcmVudC5ldmVudERTLmNsb25lTm9kZSh0cnVlKTsNCisJCSAgICAgICAgCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ0RWxlbWVudCAiLHRFbGVtZW50KTsNCisJICAgICAgICAgCQlwYXJlbnQucGFyZW50Lmx6Q2FsZW5kYXJSZWYuZWRpdENhbGVuZGFyRXZlbnQodEVsZW1lbnQpOw0KKwkgICAgICAgICAJCXBhcmVudC5wYXJlbnQuY2xvc2UoKTsNCisJICAgICAgICAgICAJPC9oYW5kbGVyPg0KKyAgICAgICAgICAgIDwvc2ltcGxlTGFiZWxCdXR0b24+DQorCQkJDQorCQkNCisJCTwvdmlldz4NCisJCQ0KKwkJPHZpZXcgbmFtZT0icG9pbnRlclRvRXZlbnQiIHk9IjExOCIgeD0iJG9uY2V7ICgocGFyZW50LndpZHRoLzIpIC0gOCkgLSA2MCB9Ig0KKwkJCXJlc291cmNlPSJzaW5nbGVfZXZlbnRfcG9wdXBfYmFja2dyb3VuZF9yc2MiIC8+Pg0KKwkNCisJPC9jbGFzcz4NCisJDQorPC9saWJyYXJ5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpjYWxlbmRhci9jb21wb250ZW50cy9yZXNvdXJjZXMvYXJyb3dfdW5kby5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6Y2FsZW5kYXIvY29tcG9udGVudHMvcmVzb3VyY2VzL2Fycm93X3VuZG8ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5NzJjNWUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6Y2FsZW5kYXIvY29tcG9udGVudHMvcmVzb3VyY2VzL2Fycm93X3VuZG8ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpjYWxlbmRhci9jb21wb250ZW50cy9yZXNvdXJjZXMvY2FsZW5kYXIucG5nIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9semNhbGVuZGFyL2NvbXBvbnRlbnRzL3Jlc291cmNlcy9jYWxlbmRhci5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjU4OTEzOAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpjYWxlbmRhci9jb21wb250ZW50cy9yZXNvdXJjZXMvY2FsZW5kYXIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpjYWxlbmRhci9jb21wb250ZW50cy9yZXNvdXJjZXMvZGF5X2hvdXJzLnBuZyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpjYWxlbmRhci9jb21wb250ZW50cy9yZXNvdXJjZXMvZGF5X2hvdXJzLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjliOGU0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9semNhbGVuZGFyL2NvbXBvbnRlbnRzL3Jlc291cmNlcy9kYXlfaG91cnMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpjYWxlbmRhci9jb21wb250ZW50cy9yZXNvdXJjZXMvZGF5X2hvdXJzX2luZGV4X29ubHkucG5nIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9semNhbGVuZGFyL2NvbXBvbnRlbnRzL3Jlc291cmNlcy9kYXlfaG91cnNfaW5kZXhfb25seS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTY0OWI3OQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpjYWxlbmRhci9jb21wb250ZW50cy9yZXNvdXJjZXMvZGF5X2hvdXJzX2luZGV4X29ubHkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpjYWxlbmRhci9jb21wb250ZW50cy9yZXNvdXJjZXMvZGVsZXRlLnBuZyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpjYWxlbmRhci9jb21wb250ZW50cy9yZXNvdXJjZXMvZGVsZXRlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOGYyNDkzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9semNhbGVuZGFyL2NvbXBvbnRlbnRzL3Jlc291cmNlcy9kZWxldGUucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpjYWxlbmRhci9jb21wb250ZW50cy9yZXNvdXJjZXMvaGVpZ2h0X2NoYW5nZV9jdXJzb3IuZmxhIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9semNhbGVuZGFyL2NvbXBvbnRlbnRzL3Jlc291cmNlcy9oZWlnaHRfY2hhbmdlX2N1cnNvci5mbGEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk1MDZkMgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpjYWxlbmRhci9jb21wb250ZW50cy9yZXNvdXJjZXMvaGVpZ2h0X2NoYW5nZV9jdXJzb3IuZmxhCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpjYWxlbmRhci9jb21wb250ZW50cy9yZXNvdXJjZXMvaGVpZ2h0X2NoYW5nZV9jdXJzb3Iuc3dmIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9semNhbGVuZGFyL2NvbXBvbnRlbnRzL3Jlc291cmNlcy9oZWlnaHRfY2hhbmdlX2N1cnNvci5zd2YKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTkzZTAwZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpjYWxlbmRhci9jb21wb250ZW50cy9yZXNvdXJjZXMvaGVpZ2h0X2NoYW5nZV9jdXJzb3Iuc3dmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpjYWxlbmRhci9jb21wb250ZW50cy9yZXNvdXJjZXMvb25lX2RheV9ob3Vycy5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6Y2FsZW5kYXIvY29tcG9udGVudHMvcmVzb3VyY2VzL29uZV9kYXlfaG91cnMucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiYjgwMTYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6Y2FsZW5kYXIvY29tcG9udGVudHMvcmVzb3VyY2VzL29uZV9kYXlfaG91cnMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpjYWxlbmRhci9jb21wb250ZW50cy9yZXNvdXJjZXMvcmVzdWx0c2V0X25leHQucG5nIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9semNhbGVuZGFyL2NvbXBvbnRlbnRzL3Jlc291cmNlcy9yZXN1bHRzZXRfbmV4dC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTI1MjYwNgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpjYWxlbmRhci9jb21wb250ZW50cy9yZXNvdXJjZXMvcmVzdWx0c2V0X25leHQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpjYWxlbmRhci9jb21wb250ZW50cy9yZXNvdXJjZXMvcmVzdWx0c2V0X3ByZXZpb3VzLnBuZyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpjYWxlbmRhci9jb21wb250ZW50cy9yZXNvdXJjZXMvcmVzdWx0c2V0X3ByZXZpb3VzLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOGY5Y2MxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9semNhbGVuZGFyL2NvbXBvbnRlbnRzL3Jlc291cmNlcy9yZXN1bHRzZXRfcHJldmlvdXMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpjYWxlbmRhci9jb21wb250ZW50cy9yZXNvdXJjZXMvc2luZ2xlX2V2ZW50X3BvcHVwX2JhY2tncm91bmQuc3dmIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9semNhbGVuZGFyL2NvbXBvbnRlbnRzL3Jlc291cmNlcy9zaW5nbGVfZXZlbnRfcG9wdXBfYmFja2dyb3VuZC5zd2YKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzAwMjgyMgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpjYWxlbmRhci9jb21wb250ZW50cy9yZXNvdXJjZXMvc2luZ2xlX2V2ZW50X3BvcHVwX2JhY2tncm91bmQuc3dmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpjYWxlbmRhci9jb21wb250ZW50cy9yZXNvdXJjZXMvdXNlcl9hZGQucG5nIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9semNhbGVuZGFyL2NvbXBvbnRlbnRzL3Jlc291cmNlcy91c2VyX2FkZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVhZTk5YgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpjYWxlbmRhci9jb21wb250ZW50cy9yZXNvdXJjZXMvdXNlcl9hZGQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpjYWxlbmRhci9jb21wb250ZW50cy9yZXNvdXJjZXMvdXNlcl9nby5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6Y2FsZW5kYXIvY29tcG9udGVudHMvcmVzb3VyY2VzL3VzZXJfZ28ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0NjhjZjAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6Y2FsZW5kYXIvY29tcG9udGVudHMvcmVzb3VyY2VzL3VzZXJfZ28ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpjYWxlbmRhci9jb21wb250ZW50cy91c2VyQ29udGFjdHNDYWxlbmRhci5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6Y2FsZW5kYXIvY29tcG9udGVudHMvdXNlckNvbnRhY3RzQ2FsZW5kYXIubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5YWE2M2MKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6Y2FsZW5kYXIvY29tcG9udGVudHMvdXNlckNvbnRhY3RzQ2FsZW5kYXIubHp4CkBAIC0wLDAgKzEsMTIwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPGxpYnJhcnk+DQorDQorCTxjbGFzcyBuYW1lPSJ1c2VyQ29udGFjdHNDYWxlbmRhckl0ZW0iIGV4dGVuZHM9InZpZXciIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoIH0iIGhlaWdodD0iNDAiIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignbWFpbkJvcmRlckNvbG9yJykgfSI+DQorCQkNCisJCTxhdHRyaWJ1dGUgbmFtZT0idFVzZXJOYW1lIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+DQorCQkNCisJCTxhdHRyaWJ1dGUgbmFtZT0idFVzZXJJZCIgdmFsdWU9Ii0xIiB0eXBlPSJudW1iZXIiIC8+DQorCQkNCisJCTx0ZXh0IHRleHQ9IiRvbmNleyBwYXJlbnQudFVzZXJOYW1lIH0iIA0KKwkJCXdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoIC0gNjAgfSIgbXVsdGlsaW5lPSJ0cnVlIiBoZWlnaHQ9IjQwIiAvPg0KKwkJDQorCQ0KKwkJPG1pbmlJY29ucyBuYW1lPSJwcml2YXRlX21lc3NhZ2VfYWRkIiByZXNvdXJjZT0icHJpdmF0ZV9tZXNzYWdlX2FkZF9yc2MiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgDQorICAgICAgICAgICAgICAgICAgIHk9IjIwIiB4PSIkb25jZXsgcGFyZW50LndpZHRoIC0gNjAgfSIgc2hvd2hhbmRjdXJzb3I9InRydWUiPg0KKwkgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPg0KKwkgICAgICAgICAgICBuZXcgbHoubmV3UHJpdmF0ZU1lc3NhZ2UoY2FudmFzLHsNCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OjIwMCx5OjEyMCwNCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZPYmo6bnVsbCwNCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5pbWl6YWJsZTp0cnVlLA0KKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGltaXphYmxlOnRydWUsDQorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlck9iamVjdDpudWxsLA0KKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzZHJhZ2FibGU6dHJ1ZSwNCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2lkOnBhcmVudC50VXNlcklkLA0KKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoOmNhbnZhcy53aWR0aC0zMDAsDQorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OmNhbnZhcy5oZWlnaHQtMTMwLA0KKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNhdmVSZWZPYmo6dGhpcw0KKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7DQorCSAgICAgICAgPC9oYW5kbGVyPg0KKwkgICAgICAgIDxtZXRob2QgbmFtZT0ic2F2ZU5vdGlmaWNhdGlvbiIgYXJncz0icm9vbUJvb2tlZCI+DQorCSAgICAgICAgCXBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5vblNhdmVOZXdNZXNzYWdlLnNlbmRFdmVudChyb29tQm9va2VkKTsNCisJICAgICAgICA8L21ldGhvZD4NCisJICAgICAgICA8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IjEyNTMiIC8+DQorCSAgICA8L21pbmlJY29ucz4NCisJCQ0KKwkJPG1pbmlJY29ucyByZXNvdXJjZT0idXNlcl9wcm9maWxlX3JzYyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiANCisJICAgICAgICAgICAgICAgeT0iMjAiIHg9IiRvbmNleyBwYXJlbnQud2lkdGggLSA0MCB9IiBzaG93aGFuZGN1cnNvcj0idHJ1ZSI+DQorCSAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+DQorCSAgICAgICAgICAgIG5ldyBsei52aWV3VXNlclByb2ZpbGVXaW5kb3coY2FudmFzLHsNCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VySWQ6cGFyZW50LnRVc2VySWQNCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOw0KKwkgICAgICAgIDwvaGFuZGxlcj4NCisJICAgICAgICA8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IjEyMzYiIC8+DQorCSAgICA8L21pbmlJY29ucz4NCisJICAgIA0KKwkgICAgPG1pbmlJY29ucyByZXNvdXJjZT0iY2FsZW5kYXJfY29udGFjdF9jYWxlbmRhcl9yc2MiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgDQorCSAgICAgICAgICAgICAgIHk9IjIwIiB4PSIkb25jZXsgcGFyZW50LndpZHRoIC0gMjAgfSIgc2hvd2hhbmRjdXJzb3I9InRydWUiPg0KKwkgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPg0KKwkgICAgICAgICAgICBwYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQuc2VsZWN0Q29udGFjdChwYXJlbnQpOw0KKwkgICAgICAgIDwvaGFuZGxlcj4NCisJICAgICAgICA8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IjE0NDkiIC8+DQorCSAgICA8L21pbmlJY29ucz4NCisJICAgIA0KKwk8L2NsYXNzPg0KKw0KKwk8Y2xhc3MgbmFtZT0idXNlckNvbnRhY3RzQ2FsZW5kYXIiIGV4dGVuZHM9InZpZXciIA0KKwkJCQkJCWJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignc2Vjb25kQm9yZGVyQ29sb3InKSB9Ij4NCisJCQ0KKwkJPGV2ZW50IG5hbWU9Im9uU2F2ZU5ld01lc3NhZ2UiIC8+DQorCQkNCisJCTxhdHRyaWJ1dGUgbmFtZT0ic2VsZWN0ZWRJdGVtIiB2YWx1ZT0ibnVsbCIgLz4NCisJCQ0KKwkJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4NCisJCQl0aGlzLmdldFVzZXJDb250YWN0c1dpdGhTaGFyZUNhbGVuZGFyLmRvQ2FsbCgpOw0KKwkJPC9oYW5kbGVyPg0KKwkJDQorCQk8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJnZXRVc2VyQ29udGFjdHNXaXRoU2hhcmVDYWxlbmRhciIgZnVuY25hbWU9InVzZXJzZXJ2aWNlLmdldFVzZXJDb250YWN0c1dpdGhTaGFyZUNhbGVuZGFyIiANCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiA+DQorICAgICAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBjYW52YXMuc2Vzc2lvbklkOzwvbWV0aG9kPjwvbmV0cGFyYW0+DQorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZUxpc3QiPg0KKyAgICAgICAgICAgICAgICA8IVtDREFUQVsNCisgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJnZXRVc2VyQ29udGFjdHNXaXRoU2hhcmVDYWxlbmRhciAiLHZhbHVlTGlzdCk7DQorICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTx2YWx1ZUxpc3QubGVuZ3RoO2krKykgew0KKyAgICAgICAgICAgICAgICAgICAgCXBhcmVudC5hZGRJdGVtKHZhbHVlTGlzdFtpXS5vd25lci5maXJzdG5hbWUgKyAnICcgKyB2YWx1ZUxpc3RbaV0ub3duZXIubGFzdG5hbWUsdmFsdWVMaXN0W2ldLm93bmVyLnVzZXJfaWQpOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBdXT4NCisgICAgICAgICAgICA8L2hhbmRsZXI+DQorICAgICAgICA8L25ldFJlbW90ZUNhbGxIaWI+DQorICAgICAgICANCisgICAgICAgIDxtZXRob2QgbmFtZT0iYWRkSXRlbSIgYXJncz0idFVzZXJOYW1lLHRVc2VySWQiPg0KKyAgICAgICAgCW5ldyBsei51c2VyQ29udGFjdHNDYWxlbmRhckl0ZW0odGhpcy5fbGlzdC5zY3JvbGxDb250ZW50LHsNCisgICAgICAgIAkJCQkJCXRVc2VyTmFtZTp0VXNlck5hbWUsDQorICAgICAgICAJCQkJCQl0VXNlcklkOnRVc2VySWQNCisgICAgICAgIAkJCQkJfSk7DQorICAgICAgICA8L21ldGhvZD4NCisJCQ0KKwkJPG1ldGhvZCBuYW1lPSJzZWxlY3RDb250YWN0IiBhcmdzPSJ0U2VsIj4NCisJCQl0aGlzLnNldEF0dHJpYnV0ZSgic2VsZWN0ZWRJdGVtIix0U2VsKTsNCisJCTwvbWV0aG9kPg0KKwkJDQorCQk8dmlldyBuYW1lPSJfbGlzdCIgeD0iMSIgeT0iMSIgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGgtMSB9IiBoZWlnaHQ9IiR7IHBhcmVudC5oZWlnaHQtMSB9IiBiZ2NvbG9yPSIweEZGRkZGRiI+DQorCQkNCisJCQk8dmlldyBuYW1lPSJzY3JvbGxDb250ZW50IiBsYXlvdXQ9ImF4aXM6eTtzcGFjaW5nOjEiICB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aC0xMCB9Ii8+DQorCQkJDQorCQkJPG9tX3ZzY3JvbGxiYXIgLz4NCisJCQ0KKwkJPC92aWV3Pg0KKwkJDQorCTwvY2xhc3M+DQorDQorPC9saWJyYXJ5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpjYWxlbmRhci9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpjYWxlbmRhci9saWJyYXJ5Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMWM4NjljCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9semNhbGVuZGFyL2xpYnJhcnkubHp4CkBAIC0wLDAgKzEsMjYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKwk8aW5jbHVkZSBocmVmPSJjb21wb250ZW50cy8iIC8+CisJPGluY2x1ZGUgaHJlZj0ibHpDYWxlbmRhci5sengiIC8+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpjYWxlbmRhci9sekNhbGVuZGFyLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpjYWxlbmRhci9sekNhbGVuZGFyLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjcyNzIxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9semNhbGVuZGFyL2x6Q2FsZW5kYXIubHp4CkBAIC0wLDAgKzEsNDIzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8c3R5bGUgbmFtZT0iY2FsZW5kYXJCdXR0b25TdHlsZSIgYmFzZWNvbG9yPSIweEZGMzMwMCIgdGV4dGNvbG9yPSIweEZGRkZGRiIgLz4KKworPGNsYXNzIG5hbWU9Imx6Q2FsZW5kYXIiIGV4dGVuZHM9ImJhc2VDb250ZW50VmlldyIgCisJCQkJaGVpZ2h0PSIkeyBjYW52YXMuaGVpZ2h0LWNhbnZhcy5uYXZpSGVpZ2h0IH0iIHdpZHRoPSIkeyBjYW52YXMud2lkdGggfSI+CisJCQkJCisJPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50RGF0ZSIgdmFsdWU9Im51bGwiIC8+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJselZpZXdDYWxlbmRhckV2ZW50IiB2YWx1ZT0ibnVsbCIgLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9InRTdGFydERhdGUiIHZhbHVlPSJudWxsIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0idEVuZERhdGUiIHZhbHVlPSJudWxsIiAvPgorCQorCTwhLS0tCisJCVRoZSB1c2VyIGlkIHRoZSBjYWxlbmRhciB3aWxsIGxvYWQgdGhlIGV2ZW50cyBmb3IKKwkgLS0+CisJPGF0dHJpYnV0ZSBuYW1lPSJyZXF1ZXN0VXNlcklkIiB2YWx1ZT0iJG9uY2V7IGNhbnZhcy51c2VyX2lkIH0iIHR5cGU9Im51bWJlciIgLz4KKwkKKwk8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorCQk8IVtDREFUQVsKKwkJCV9tYWluU2Nyb2xsQmFyLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworCQkJCisJCQl2YXIgZG93bmxvYWR1cmwgPSBjYW52YXMuZ2V0VXJsKCkgKyAnc2VydmljZXMvQ2FsZW5kYXJTZXJ2aWNlL2dldEFwcG9pbnRtZW50UmVtaW5kZXJUeXBMaXN0PycKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKydTSUQ9JytjYW52YXMuc2Vzc2lvbklkOworCSAgICAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5nZXRBcHBvaW50bWVudFJlbWluZGVyVHlwTGlzdC5zZXRBdHRyaWJ1dGUoInNyYyIsZG93bmxvYWR1cmwpOworICAgICAgICAgICAgdGhpcy5nZXRBcHBvaW50bWVudFJlbWluZGVyVHlwTGlzdC5kb1JlcXVlc3QoKTsKKwkJCQorCQkJY2FudmFzLm1vbnRobmFtZXMgPSBbY2FudmFzLmdldExhYmVsTmFtZSg0NjkpLGNhbnZhcy5nZXRMYWJlbE5hbWUoNDcwKSwKKwkJCQkJCQkJY2FudmFzLmdldExhYmVsTmFtZSg0NzEpLGNhbnZhcy5nZXRMYWJlbE5hbWUoNDcyKSwKKwkJCQkJCQkJY2FudmFzLmdldExhYmVsTmFtZSg0NzMpLGNhbnZhcy5nZXRMYWJlbE5hbWUoNDc0KSwKKwkJCQkJCQkJY2FudmFzLmdldExhYmVsTmFtZSg0NzUpLGNhbnZhcy5nZXRMYWJlbE5hbWUoNDc2KSwKKwkJCQkJCQkJY2FudmFzLmdldExhYmVsTmFtZSg0NzcpLGNhbnZhcy5nZXRMYWJlbE5hbWUoNDc4KSwKKwkJCQkJCQkJY2FudmFzLmdldExhYmVsTmFtZSg0NzkpLGNhbnZhcy5nZXRMYWJlbE5hbWUoNDgwKV07CisJCQkJCQkJCQorCQkJY2FudmFzLmRheVNob3J0TmFtZXMgPSBbY2FudmFzLmdldExhYmVsTmFtZSg0NTkpLAorCQkJCQkJCQljYW52YXMuZ2V0TGFiZWxOYW1lKDQ1MyksCisJCQkJCQkJCWNhbnZhcy5nZXRMYWJlbE5hbWUoNDU0KSwKKwkJCQkJCQkJY2FudmFzLmdldExhYmVsTmFtZSg0NTUpLAorCQkJCQkJCQljYW52YXMuZ2V0TGFiZWxOYW1lKDQ1NiksCisJCQkJCQkJCWNhbnZhcy5nZXRMYWJlbE5hbWUoNDU3KSwKKwkJCQkJCQkJY2FudmFzLmdldExhYmVsTmFtZSg0NTgpXTsKKwkJXV0+CisJPC9oYW5kbGVyPgorCQorCTxoYW5kbGVyIG5hbWU9Im9udGFiY29udGVudGxlYXZlIiBhcmdzPSJ0UmVmIj4KKwkJLy9NYWtlIHN1cmUgYW55IGN1cnNvciBzdGF0dXMgaXMgcmVzZXQKKwkJbHouQ3Vyc29yLnJlc3RvcmVDdXJzb3IoKTsKKwkJbHouQ3Vyc29yLnNob3dIYW5kQ3Vyc29yKHRydWUpOworICAgICAgICBfbWFpblNjcm9sbEJhci5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iY2xlYXJXaW5kb3dzIj4KKyAgICAJaWYgKHRoaXMubHpWaWV3Q2FsZW5kYXJFdmVudCAhPSBudWxsKSB7CisgICAgCQl0aGlzLmx6Vmlld0NhbGVuZGFyRXZlbnQuY2xvc2UoKTsKKyAgICAJfQorICAgIDwvbWV0aG9kPgorCisJPG1ldGhvZCBuYW1lPSJsb2FkQXBwb2ludG1lbnRzIiBhcmdzPSJ0RGF0ZSwgZGF5SW5kZXgsIHdlZWtJbmRleCI+CisJCTwhW0NEQVRBWworCQkJdmFyIHRSZWxhb2REYXRhU2V0ID0gZmFsc2U7CisJCQl2YXIgdERhdGVOb3cgPSBuZXcgRGF0ZSgpOworCQkJdERhdGUuc2V0SG91cnModERhdGVOb3cuZ2V0SG91cnMoKSk7CisJCQl0RGF0ZS5zZXRNaW51dGVzKHREYXRlTm93LmdldE1pbnV0ZXMoKSk7CisJCQkKKwkJCWlmICh0aGlzLmN1cnJlbnREYXRlID09IG51bGwpIHsKKwkJCQl0UmVsYW9kRGF0YVNldCA9IHRydWU7CisJCQl9CisJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgibG9hZEFwcG9pbnRtZW50cyAiLGRheUluZGV4LCB3ZWVrSW5kZXgsIHREYXRlKTsKKwkJCXRoaXMuY3VycmVudERhdGUgPSB0RGF0ZTsKKwkJCXRoaXMuc3RhdHVzSW5mby5jdXJyZW50RGF0ZS5zZXRBdHRyaWJ1dGUoInRleHQiLHBhcnNlRGF0ZVRvU3RyaW5nVGltZSh0aGlzLmN1cnJlbnREYXRlKSk7CisJCQl0aGlzLl9sekNhbGVuZGFyR3JpZC5jaGVja0FuZFNob3codERhdGUsZGF5SW5kZXgsd2Vla0luZGV4KTsKKwkJCQorCQkJaWYgKHRSZWxhb2REYXRhU2V0KSB7CisJCQkJdGhpcy5sb2FkQ2FsZW5kYXJEYXRhKCk7CisJICAgICAgICB9CisJCV1dPgorCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0ibG9hZENhbGVuZGFyRGF0YSI+CisJCTwhW0NEQVRBWworCQkJdmFyIHREYXkgPSB0aGlzLmN1cnJlbnREYXRlLmdldERhdGUoKTsKKwkJCWlmICh0RGF5IDwgMTApIHREYXkgPSAiMCIrdERheTsKKwkJCQorCQkJdmFyIHRNb250aCA9IHRoaXMuY3VycmVudERhdGUuZ2V0TW9udGgoKSArIDE7CisJCQlpZiAodE1vbnRoIDwgMTApIHRNb250aCA9ICIwIit0TW9udGg7CisJCQorCQkJdmFyIGRvd25sb2FkdXJsID0gY2FudmFzLmdldFNlcnZpY2VzVXJsKCkgKyAnQ2FsZW5kYXJTZXJ2aWNlL2dldEFwcG9pbnRtZW50c0J5V2Vla0NhbGVuZGFyPycKKwkgICAgICAgICAgICAgICAgICAgICAgICsnU0lEPScrY2FudmFzLnNlc3Npb25JZAorCSAgICAgICAgICAgICAgICAgICAgICAgKycmZmlyc3REYXlJbldlZWs9JytjYW52YXMuZmlyc3RkYXlpbndlZWsKKwkgICAgICAgICAgICAgICAgICAgICAgICsnJnN0YXJ0RGF0ZT0nK3RoaXMuY3VycmVudERhdGUuZ2V0RnVsbFllYXIoKSsiLSIrdE1vbnRoKyItIit0RGF5CisJICAgICAgICAgICAgICAgICAgICAgICArJyZyZXF1ZXN0VXNlcklkPScgKyB0aGlzLnJlcXVlc3RVc2VySWQKKwkgICAgICAgICAgICAgICAgICAgICAgICsnJm9tVGltZVpvbmVJZD0nICsgY2FudmFzLnRpbWVab25lSWQKKwkgICAgICAgICAgICAgICAgICAgICAgICsnJmphdmFUaW1lWm9uZU5hbWU9JzsKKwkgICAgICAgCisJICAgICAgICB0aGlzLmdldEFwcG9pbnRtZW50c0J5V2Vla0NhbGVuZGFyLnNldEF0dHJpYnV0ZSgic3JjIixkb3dubG9hZHVybCk7CisJICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZ2V0QXBwb2ludG1lbnRzQnlXZWVrQ2FsZW5kYXIgZG9SZXF1ZXN0IDEgIixkb3dubG9hZHVybCk7CisJICAgICAgICB0aGlzLmdldEFwcG9pbnRtZW50c0J5V2Vla0NhbGVuZGFyLmRvUmVxdWVzdCgpOworICAgICAgICBdXT4KKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9ImVkaXRDYWxlbmRhckV2ZW50IiBhcmdzPSJhcHBvaW50bWVudCI+CisJCTwhW0NEQVRBWworCQkJdmFyIGRhdGFFbGVtZW50ID0gbnVsbDsKKwkJCWlmIChhcHBvaW50bWVudCA9PSBudWxsKSB7CisJCQkJaWYgKHRoaXMucmVxdWVzdFVzZXJJZCAhPSBjYW52YXMudXNlcl9pZCkgeworCQkJCQluZXcgbHoubGFiZWxlcnJvclBvcHVwKGNhbnZhcyx7ZXJyb3JsYWJlbGlkOjEyNzh9KTsKKwkJCQkJcmV0dXJuOworCQkJCX0KKwkJCQlhcHBvaW50bWVudCA9IHRoaXMuZ2VuZXJhdGVCbGFua0V2ZW50KCk7CisJCQkJZGF0YUVsZW1lbnQgPSBMekRhdGFFbGVtZW50LnZhbHVlVG9FbGVtZW50KGFwcG9pbnRtZW50KTsKKwkJCX0gZWxzZSB7CisJCQkJZGF0YUVsZW1lbnQgPSBhcHBvaW50bWVudDsKKwkJCX0KKwkJCQorCQkJbmV3IGx6Lmx6RWRpdENhbGVuZGFyRXZlbnQoY2FudmFzLHsKKwkJCQkJCQkJZGF0YUVsZW1lbnQ6ZGF0YUVsZW1lbnQsCisJCQkJCQkJCXJlbWluZGVydHlwZXM6Z2V0QXBwb2ludG1lbnRSZW1pbmRlclR5cExpc3QsCisJCQkJCQkJCWx6Q2FsZW5kYXJSZWY6dGhpcworCQkJCQkJCX0pOworCQldXT4KKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9InZpZXdDYWxlbmRhckV2ZW50IiBhcmdzPSJhcHBvaW50bWVudCxyZWZDYWxlbmRhckV2ZW50VmlldyI+CisJCXRoaXMubHpWaWV3Q2FsZW5kYXJFdmVudCA9IG5ldyBsei5selZpZXdDYWxlbmRhckV2ZW50KGNhbnZhcyx7CisJCQkJCWRhdGFFbGVtZW50OmFwcG9pbnRtZW50LAorCQkJCQlsekNhbGVuZGFyUmVmOnRoaXMsCisJCQkJCXJlZkNhbGVuZGFyRXZlbnRWaWV3OnJlZkNhbGVuZGFyRXZlbnRWaWV3CisJCQkJfSk7CisJPC9tZXRob2Q+CisJCisJPG1ldGhvZCBuYW1lPSJnZW5lcmF0ZUJsYW5rRXZlbnQiPgorCQk8IVtDREFUQVsKKwkJCisJCQl2YXIgbmV3QXBwb2ludG1lbnQgPSBuZXcgT2JqZWN0KCk7CisJCQluZXdBcHBvaW50bWVudC5hcHBvaW50bWVudElkID0gMDsKKwkJCW5ld0FwcG9pbnRtZW50LmNhdGVnb3J5SWQgPSAxOworCQkJbmV3QXBwb2ludG1lbnQudGl0bGUgPSBjYW52YXMuZ2V0TGFiZWxOYW1lKDE0NDQpOworCQkJCisJCQl2YXIgdERhdGUgPSBuZXcgRGF0ZSgpOworCQkJCisJCQkvL1RoZXJlIHNlZW1zIHRvIGJlIGEgZGlmZmVyZW5jZSBpbiB0aGUgd2F5IE9wZW5MYXN6bG8gbWFrZXMgYSBEYXRlIHRvIGEgWE1MIHN0cmluZzoKKwkJCS8vT3Blbkxhc3psbyBnZW5lcmF0ZXMgYSB0aW1lIGluIFVUQyBpbnN0ZWFkIG9mIHRoZSBsb2NhbCB0aW1lIHdoZW4gY29udmVydGVkIHRvIGFuIFhNTCBTdHJpbmcKKwkJCXZhciB0aW1lWm9uZU9mZlNldEluTWlsbGlTZWNvbmRzID0gdERhdGUuZ2V0VGltZXpvbmVPZmZzZXQoKSo2MCoxMDAwOworCQkJCisJCQlpZiAodGhpcy50U3RhcnREYXRlID09IG51bGwpIHsKKwkJCQl0RGF0ZS5zZXRUaW1lKHRoaXMuY3VycmVudERhdGUuZ2V0VGltZSgpLXRpbWVab25lT2ZmU2V0SW5NaWxsaVNlY29uZHMpOworCQkJCXREYXRlLnNldE1pbnV0ZXMoMCk7CisJCQkJdERhdGUuc2V0U2Vjb25kcygwKTsKKwkJCQlpZiAodERhdGUuZ2V0SG91cnMoKSA9PSAyMykgeworCQkJCQl0RGF0ZS5zZXRIb3VycygyMik7CisJCQkJfQorCQkJfSBlbHNlIHsKKwkJCQl0RGF0ZS5zZXRUaW1lKHRoaXMudFN0YXJ0RGF0ZS5nZXRUaW1lKCktdGltZVpvbmVPZmZTZXRJbk1pbGxpU2Vjb25kcyk7CisJCQkJdERhdGUuc2V0U2Vjb25kcygwKTsKKwkJCQl0aGlzLnRTdGFydERhdGUgPSBudWxsOworCQkJfQorCQkJbmV3QXBwb2ludG1lbnQuc3RhcnQgPSB0RGF0ZTsKKwkJCQorCQkJdmFyIHREYXRlMiA9IG5ldyBEYXRlKCk7CisJCQlpZiAodGhpcy50RW5kRGF0ZSA9PSBudWxsKSB7CisJCQkJdERhdGUyLnNldFRpbWUodERhdGUuZ2V0VGltZSgpKTsKKwkJCQl0RGF0ZTIuc2V0SG91cnModERhdGUuZ2V0SG91cnMoKSsxKTsKKwkJCX0gZWxzZSB7CisJCQkJdERhdGUyLnNldFRpbWUodGhpcy50RW5kRGF0ZS5nZXRUaW1lKCktdGltZVpvbmVPZmZTZXRJbk1pbGxpU2Vjb25kcyk7CisJCQkJdERhdGUyLnNldFNlY29uZHMoMCk7CisJCQkJdGhpcy50RW5kRGF0ZSA9IG51bGw7CisJCQl9CisJCQluZXdBcHBvaW50bWVudC5lbmQgPSB0RGF0ZTI7CisJCQkKKwkJCW5ld0FwcG9pbnRtZW50LmNvbW1lbnQgPSAiIjsKKwkJCW5ld0FwcG9pbnRtZW50LnJlbWluZGVySWQgPSAzOworCQkJbmV3QXBwb2ludG1lbnQucm9vbUlkID0gMDsKKwkJCW5ld0FwcG9pbnRtZW50LmxvY2F0aW9uID0gIiI7CisJCQluZXdBcHBvaW50bWVudC5pc1Bhc3N3b3JkUHJvdGVjdGVkID0gZmFsc2U7CisJCQluZXdBcHBvaW50bWVudC5yb29tVHlwZUlkID0gMTsKKwkJCQorCQkJcmV0dXJuIG5ld0FwcG9pbnRtZW50OworCQldXT4KKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9InJlbG9hZCI+CisJCXRoaXMuZ2V0QXBwb2ludG1lbnRzQnlXZWVrQ2FsZW5kYXIuZG9SZXF1ZXN0KCk7CisJPC9tZXRob2Q+CisJCisJPGRhdGFzZXQgbmFtZT0iZ2V0QXBwb2ludG1lbnRzQnlXZWVrQ2FsZW5kYXIiIHR5cGU9Imh0dHAiPgorCQk8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9ImQiPgorCQkJLy9NYWtlIHN1cmUgYW55IGN1cnNvciBzdGF0dXMgaXMgcmVzZXQKKwkJCWx6LkN1cnNvci5yZXN0b3JlQ3Vyc29yKCk7CisJCQlsei5DdXJzb3Iuc2hvd0hhbmRDdXJzb3IodHJ1ZSk7CisJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib25kYXRhIixkKTsKKwkJPC9oYW5kbGVyPgorCTwvZGF0YXNldD4KKwkKKwk8ZGF0YXNldCBuYW1lPSJnZXRBcHBvaW50bWVudFJlbWluZGVyVHlwTGlzdCIgdHlwZT0iaHR0cCIgLz4KKwkKKwk8dmlldyBuYW1lPSJzdGF0dXNJbmZvIiB3aWR0aD0iMjA0IiB5PSI0Ij4KKwkJPGxhYmVsVGV4dCBuYW1lPSJjdXJyZW50RGF0ZSIgYWxpZ249ImNlbnRlciIKKwkJCWZvbnRzaXplPSIxMiIgcmVzaXplPSJ0cnVlIiBmb250c3R5bGU9ImJvbGQiIC8+CisJPC92aWV3PgorCQorCTwhLS0gMTc2IHBpeGVscyBpcyB0aGUgd2lkdGggb2YgdGhlIG1pbmkgY2FsZW5kYXIgLS0+CisJPHNpbXBsZUxhYmVsQnV0dG9uIGxhYmVsaWQ9IjE0NDQiIGhlaWdodD0iMjQiIAorCQkJd2lkdGg9IjE3NiIgeD0iMTIiIHk9IjI2IiBzdHlsZT0iY2FsZW5kYXJCdXR0b25TdHlsZSI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgcGFyZW50LmVkaXRDYWxlbmRhckV2ZW50KG51bGwpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9zaW1wbGVMYWJlbEJ1dHRvbj4KKwkKKwk8ZGF0ZVNlbGVjdG9yIG5hbWU9Il9jYWxlbmRhciIgeT0iNTQiIHg9IjEyIj4KKwkJPGhhbmRsZXIgbmFtZT0ib25tb250aFNlbCIgYXJncz0idE1vbnRoIj4KKwkJCXBhcmVudC5jdXJyZW50RGF0ZSA9IG51bGw7CisJCTwvaGFuZGxlcj4KKwkJPGhhbmRsZXIgbmFtZT0ib255ZWFyU2VsIiBhcmdzPSJ0WWVhciI+CisJCQlwYXJlbnQuY3VycmVudERhdGUgPSBudWxsOworCQk8L2hhbmRsZXI+CisJCTxoYW5kbGVyIG5hbWU9Im9uc2VsZWN0IiBhcmdzPSJzZWwiPgorCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9uc2VsZWN0ICIsc2VsKTsKKwkJCS8vIGNoZWNrIGZvciBzYXZpbmcKKwkJCWlmICh0cnVlKSB7CisgCQkJCXBhcmVudC5sb2FkQXBwb2ludG1lbnRzKHNlbCwgdGhpcy5kYXlJbmRleE51bWJlciwgdGhpcy53ZWVrSW5kZXhOdW1iZXIpOworCQkJfSBlbHNlIHsKKwkJCQkvL0NoZWNrIFdhcm5pbmcKKyAgICAJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53YXJuKCJVbnNhdmVkIEl0ZW0gLSBTaG93IHdhcm5pbmciKTsKKyAgICAJCQluZXcgbHoubGFiZWxlcnJvclBvcHVwKGNhbnZhcyx7ZXJyb3JsYWJlbGlkOjc5NCxtYWtlTW9kYWw6dHJ1ZX0pOworCQkJfQorCQk8L2hhbmRsZXI+IAorCTwvZGF0ZVNlbGVjdG9yPiAKKwkKKwk8dmlldyByZXNvdXJjZT0ibWVzc2FnZWJveF9pbmZvX3JzYyIgeD0iNCIgeT0iMTk4IiAvPgorCQorCTxsYWJlbFRleHQgbGFiZWxpZD0iODA3IiB4PSIyNCIgeT0iMTk2IiBmb250c3R5bGU9ImJvbGQiIC8+CisJCisJPGxhYmVsVGV4dCBsYWJlbGlkPSI4MDYiIHg9IjQiIHk9IjIxOCIgbXVsdGlsaW5lPSJ0cnVlIiB3aWR0aD0iMTkwIiAvPgorCQorCTxsYWJlbFRleHQgbGFiZWxpZD0iMTI3NiIgeD0iNCIgeT0iMjgwIiBmb250c3R5bGU9ImJvbGQiIC8+CisJCisJPHZpZXcgcmVzb3VyY2U9Im1lc3NhZ2Vib3hfaW5mb19yc2MiIHg9IjYiIHk9IjMwMCIgCisJCSAgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBzdHJldGNoZXM9ImJvdGgiIC8+CisJCisJPGxhYmVsVGV4dCBsYWJlbGlkPSIxMjc3IiB4PSIyNCIgeT0iMjk2IiBtdWx0aWxpbmU9InRydWUiIHdpZHRoPSIxNjYiIC8+CisJCisgICAgPG1pbmlJY29ucyB4PSIxNzIiIHk9IjMzNiIgcmVzb3VyY2U9ImNhbGVuZGFyX3JldmVydF90b19vd25fdW5kb19yc2MiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgCisgICAgICAgICAgICAgICBzaG93aGFuZGN1cnNvcj0idHJ1ZSI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgcGFyZW50LnJlcXVlc3RVc2VySWQgPSBjYW52YXMudXNlcl9pZDsKKyAgICAgICAgICAgIHBhcmVudC5sb2FkQ2FsZW5kYXJEYXRhKCk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSIxMjc5IiAvPgorICAgIDwvbWluaUljb25zPgorCQorCTx1c2VyQ29udGFjdHNDYWxlbmRhciBuYW1lPSJfdXNlckNvbnRhY3RzIiB5PSIzNTQiIHg9IjQiIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodCAtIDM1OCB9IiB3aWR0aD0iMTg2Ij4KKwkJPGhhbmRsZXIgbmFtZT0ib25zZWxlY3RlZEl0ZW0iIGFyZ3M9InNlbCI+CisJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib25zZWxlY3RlZEl0ZW0gIixzZWwudFVzZXJJZCxzZWwpOworICAgICAgICAgICAgcGFyZW50LnJlcXVlc3RVc2VySWQgPSBzZWwudFVzZXJJZDsKKyAgICAgICAgICAgIHBhcmVudC5sb2FkQ2FsZW5kYXJEYXRhKCk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25TYXZlTmV3TWVzc2FnZSIgYXJncz0icm9vbUJvb2tlZCI+CisgICAgICAgIAlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib25TYXZlTmV3TWVzc2FnZSAiLHJvb21Cb29rZWQpOworICAgICAgICAJcGFyZW50LnJlbG9hZCgpOworICAgICAgICA8L2hhbmRsZXI+CisJPC91c2VyQ29udGFjdHNDYWxlbmRhcj4KKwkKKwk8dmlldyBuYW1lPSJfbHpDYWxlbmRhclRvYkJhciIgd2lkdGg9IiR7IHBhcmVudC53aWR0aCAtIDIwNCB9IiB4PSIyMDQiIGhlaWdodD0iNDAiPgorCQorCQk8dmlldyBuYW1lPSJidXR0b25zIiBhbGlnbj0ibGVmdCIgeT0iMiI+CisJCQorCQkJPG1ldGhvZCBuYW1lPSJnZXRDdXJyZW50Vmlld1N0YXRlIj4KKwkJCQlpZiAoIXRoaXMuX3Nob3dEYXkuZW5hYmxlZCkgeworCQkJCQlyZXR1cm4gImRheSI7CisJCQkJfSBlbHNlIGlmICghdGhpcy5fc2hvd1dlZWsuZW5hYmxlZCkgeworCQkJCQlyZXR1cm4gIndlZWsiOworCQkJCX0gZWxzZSBpZiAoIXRoaXMuX3Nob3dNb250aC5lbmFibGVkKSB7CisJCQkJCXJldHVybiAibW9udGgiOworCQkJCX0KKwkJCTwvbWV0aG9kPgorCQkKKwkJCTxzaW1wbGVMYWJlbEJ1dHRvbiBuYW1lPSJfc2hvd0RheSIgbGFiZWxpZD0iNzk5IiBoZWlnaHQ9IjIyIiA+CisJCSAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisJCSAgICAgICAgCXBhcmVudC5fc2hvd1dlZWsuc2V0QXR0cmlidXRlKCJlbmFibGVkIix0cnVlKTsKKwkJICAgICAgICAJcGFyZW50Ll9zaG93TW9udGguc2V0QXR0cmlidXRlKCJlbmFibGVkIix0cnVlKTsKKwkJICAgICAgICAJdGhpcy5zZXRBdHRyaWJ1dGUoImVuYWJsZWQiLGZhbHNlKTsKKwkJICAgICAgICAgICAgcGFyZW50LnBhcmVudC5wYXJlbnQuX2x6Q2FsZW5kYXJHcmlkLnNob3dEYXkoKTsKKwkJICAgICAgICA8L2hhbmRsZXI+CisJCSAgICA8L3NpbXBsZUxhYmVsQnV0dG9uPgorCQkgICAgCisJCSAgICA8c2ltcGxlTGFiZWxCdXR0b24gbmFtZT0iX3Nob3dXZWVrIiBsYWJlbGlkPSI4MDAiIGhlaWdodD0iMjIiID4KKwkJICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKwkJICAgICAgICAJcGFyZW50Ll9zaG93RGF5LnNldEF0dHJpYnV0ZSgiZW5hYmxlZCIsdHJ1ZSk7CisJCSAgICAgICAgCXBhcmVudC5fc2hvd01vbnRoLnNldEF0dHJpYnV0ZSgiZW5hYmxlZCIsdHJ1ZSk7CisJCSAgICAgICAgCXRoaXMuc2V0QXR0cmlidXRlKCJlbmFibGVkIixmYWxzZSk7CisJCSAgICAgICAgICAgIHBhcmVudC5wYXJlbnQucGFyZW50Ll9sekNhbGVuZGFyR3JpZC5zaG93V2VlaygpOworCQkgICAgICAgIDwvaGFuZGxlcj4KKwkJICAgIDwvc2ltcGxlTGFiZWxCdXR0b24+CisJCSAgICAKKwkJICAgIDxzaW1wbGVMYWJlbEJ1dHRvbiBuYW1lPSJfc2hvd01vbnRoIiBsYWJlbGlkPSI4MDEiIGhlaWdodD0iMjIiIGVuYWJsZWQ9ImZhbHNlIj4KKwkJICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKwkJICAgICAgICAJcGFyZW50Ll9zaG93RGF5LnNldEF0dHJpYnV0ZSgiZW5hYmxlZCIsdHJ1ZSk7CisJCSAgICAgICAgCXBhcmVudC5fc2hvd1dlZWsuc2V0QXR0cmlidXRlKCJlbmFibGVkIix0cnVlKTsKKwkJICAgICAgICAJdGhpcy5zZXRBdHRyaWJ1dGUoImVuYWJsZWQiLGZhbHNlKTsKKwkJICAgICAgICAgICAgcGFyZW50LnBhcmVudC5wYXJlbnQuX2x6Q2FsZW5kYXJHcmlkLnNob3dNb250aCgpOworCQkgICAgICAgIDwvaGFuZGxlcj4KKwkJICAgIDwvc2ltcGxlTGFiZWxCdXR0b24+CisJCSAgICAKKwkJICAgIDxsYWJlbFRleHQgZmdjb2xvcj0iMHgwMDAwRkYiIHk9IjIiPgorCQkgICAgCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisJCSAgICAJCTwhW0NEQVRBWworCQkgICAgCQkJdGhpcy5zZXRBdHRyaWJ1dGUoInRleHQiLCI8dT4iK2NhbnZhcy5qTmFtZVRpbWVab25lKyI8L3U+Iik7CisJCSAgICAJCV1dPgorCQkgICAgCTwvaGFuZGxlcj4KKwkJICAgIAk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKwkJICAgIAkJY2FudmFzLnVzZXJTZXR0aW5nc01vZHVsZU9wdCA9ICJlZGl0VXNlclByb2ZpbGUiOworICAgICAgICAgICAgCQlxdWlja2xpbmtBY3QoInVzZXJTZXR0aW5nc01vZHVsZSIpOworCQkgICAgCTwvaGFuZGxlcj4KKwkJICAgIDwvbGFiZWxUZXh0PgorCQkgICAgCisJCSAgICAKKwkJCisJCQk8c2ltcGxlbGF5b3V0IGF4aXM9IngiIHNwYWNpbmc9IjAiIC8+CisJCTwvdmlldz4KKwkJCisJCTx2aWV3IGFsaWduPSJyaWdodCIgeT0iMiI+CisJCQorCQkJPHNpbXBsZUxhYmVsQnV0dG9uIG5hbWU9Il9uZXh0QnRuIiBoZWlnaHQ9IjIyIiB3aWR0aD0iMjAiPgorCQkJCTx2aWV3IHJlc291cmNlPSJjYWxlbmRhcl9yZXN1bHRzZXRfcHJldmlvdXNfcnNjIiB4PSIyIiB5PSIzIiAvPgorCQkgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorCQkgICAgICAgIAl2YXIgdERhdGUgPSBwYXJlbnQucGFyZW50LnBhcmVudC5jdXJyZW50RGF0ZTsKKwkJICAgICAgICAJaWYgKHBhcmVudC5wYXJlbnQuYnV0dG9ucy5nZXRDdXJyZW50Vmlld1N0YXRlKCkgPT0gImRheSIpIHsKKwkJICAgICAgICAJCXREYXRlLnNldFRpbWUodERhdGUuZ2V0VGltZSgpIC0gODY0MDAwMDApOworCQkgICAgICAgIAl9IGVsc2UgaWYgKHBhcmVudC5wYXJlbnQuYnV0dG9ucy5nZXRDdXJyZW50Vmlld1N0YXRlKCkgPT0gIm1vbnRoIikgeworCQkgICAgICAgIAkJaWYgKHREYXRlLmdldE1vbnRoKCkgPT0gMCkgeworCQkgICAgICAgIAkJCXREYXRlLnNldE1vbnRoKDExKTsKKwkJICAgICAgICAJCQl0RGF0ZS5zZXRGdWxsWWVhcih0RGF0ZS5nZXRGdWxsWWVhcigpLTEpOworCQkgICAgICAgIAkJfSBlbHNlIHsKKwkJICAgICAgICAJCQl0RGF0ZS5zZXRNb250aCh0RGF0ZS5nZXRNb250aCgpLTEpOworCQkgICAgICAgIAkJfQorCQkgICAgICAgIAl9IGVsc2UgaWYgKHBhcmVudC5wYXJlbnQuYnV0dG9ucy5nZXRDdXJyZW50Vmlld1N0YXRlKCkgPT0gIndlZWsiKSB7CisJCSAgICAgICAgCQl0RGF0ZS5zZXRUaW1lKHREYXRlLmdldFRpbWUoKSAtICg4NjQwMDAwMCo3KSk7CisJCSAgICAgICAgCX0KKwkJICAgICAgICAJcGFyZW50LnBhcmVudC5wYXJlbnQuY3VycmVudERhdGUgPSBudWxsOworCQkgICAgICAgIAlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgibG9hZERhdGUgOjogIix0RGF0ZSk7CisJCSAgICAgICAgCXBhcmVudC5wYXJlbnQucGFyZW50Ll9jYWxlbmRhci5sb2FkRGF0ZSh0RGF0ZSk7CisJCSAgICAgICAgPC9oYW5kbGVyPgorCQkgICAgPC9zaW1wbGVMYWJlbEJ1dHRvbj4KKwkJICAgIAorCQkgICAgPHNpbXBsZUxhYmVsQnV0dG9uIG5hbWU9Il9wcmVCdG4iIGhlaWdodD0iMjIiIHdpZHRoPSIyMCI+CisJCQkJPHZpZXcgcmVzb3VyY2U9ImNhbGVuZGFyX3Jlc3VsdHNldF9uZXh0X3JzYyIgeD0iMiIgeT0iMyIgLz4KKwkJICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKwkJICAgICAgICAgICAgdmFyIHREYXRlID0gcGFyZW50LnBhcmVudC5wYXJlbnQuY3VycmVudERhdGU7CisJCSAgICAgICAgCWlmIChwYXJlbnQucGFyZW50LmJ1dHRvbnMuZ2V0Q3VycmVudFZpZXdTdGF0ZSgpID09ICJkYXkiKSB7CisJCSAgICAgICAgCQl0RGF0ZS5zZXRUaW1lKHREYXRlLmdldFRpbWUoKSArIDg2NDAwMDAwKTsKKwkJICAgICAgICAJfSBlbHNlIGlmIChwYXJlbnQucGFyZW50LmJ1dHRvbnMuZ2V0Q3VycmVudFZpZXdTdGF0ZSgpID09ICJtb250aCIpIHsKKwkJICAgICAgICAJCWlmICh0RGF0ZS5nZXRNb250aCgpID09IDExKSB7CisJCSAgICAgICAgCQkJdERhdGUuc2V0TW9udGgoMCk7CisJCSAgICAgICAgCQkJdERhdGUuc2V0RnVsbFllYXIodERhdGUuZ2V0RnVsbFllYXIoKSsxKTsKKwkJICAgICAgICAJCX0gZWxzZSB7CisJCSAgICAgICAgCQkJdERhdGUuc2V0TW9udGgodERhdGUuZ2V0TW9udGgoKSsxKTsKKwkJICAgICAgICAJCX0KKwkJICAgICAgICAJfSBlbHNlIGlmIChwYXJlbnQucGFyZW50LmJ1dHRvbnMuZ2V0Q3VycmVudFZpZXdTdGF0ZSgpID09ICJ3ZWVrIikgeworCQkgICAgICAgIAkJdERhdGUuc2V0VGltZSh0RGF0ZS5nZXRUaW1lKCkgKyAoODY0MDAwMDAqNykpOworCQkgICAgICAgIAl9CisJCSAgICAgICAgCXBhcmVudC5wYXJlbnQucGFyZW50LmN1cnJlbnREYXRlID0gbnVsbDsKKwkJICAgICAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImxvYWREYXRlIDo6ICIsdERhdGUpOworCQkgICAgICAgIAlwYXJlbnQucGFyZW50LnBhcmVudC5fY2FsZW5kYXIubG9hZERhdGUodERhdGUpOworCQkgICAgICAgIDwvaGFuZGxlcj4KKwkJICAgIDwvc2ltcGxlTGFiZWxCdXR0b24+CisJCQkKKwkJCTxzaW1wbGVsYXlvdXQgYXhpcz0ieCIgc3BhY2luZz0iMCIgLz4KKwkJPC92aWV3PgorCQkKKwk8L3ZpZXc+CisJCisJPGx6Q2FsZW5kYXJHcmlkIG5hbWU9Il9sekNhbGVuZGFyR3JpZCIgCisJCWRhdGFwYXRoPSJsb2NhbDpjbGFzc3Jvb3QuZ2V0QXBwb2ludG1lbnRzQnlXZWVrQ2FsZW5kYXI6LyI+CisJCTxoYW5kbGVyIG5hbWU9Im9uY2FsZW5kYXJFdmVudCIgYXJncz0ic2VsIj4KKwkJCXBhcmVudC52aWV3Q2FsZW5kYXJFdmVudChzZWwuZGF0YXBhdGguZGF0YS5jbG9uZU5vZGUodHJ1ZSksc2VsKTsKKwkJPC9oYW5kbGVyPgkKKwkJPGhhbmRsZXIgbmFtZT0ib25TY29sbENvbnRlbnQiIGFyZ3M9InRSZWYiPgorCQkJcGFyZW50LmNsZWFyV2luZG93cygpOworCQk8L2hhbmRsZXI+CisJCTxoYW5kbGVyIG5hbWU9Im9uU2VsZWN0RGF0ZSIgYXJncz0idERhdGUiPgorCQkJcGFyZW50Ll9jYWxlbmRhci5zaG93RGF0ZSh0RGF0ZSk7CisJCQlwYXJlbnQuX2x6Q2FsZW5kYXJUb2JCYXIuYnV0dG9ucy5fc2hvd0RheS5vbmNsaWNrLnNlbmRFdmVudChudWxsKTsKKwkJPC9oYW5kbGVyPgorCQk8aGFuZGxlciBuYW1lPSJvbk5ld0V2ZW50RGF0ZSIgYXJncz0idERhdGUiPgorCQkJcGFyZW50LnRTdGFydERhdGUgPSB0RGF0ZTsKKwkJCS8vb25seSB1c2UgdGhlIGRhdGUgcGFydCBoZXJlCisJCQlwYXJlbnQudFN0YXJ0RGF0ZS5zZXRIb3Vycyh0aGlzLmN1cnJlbnREYXRlLmdldEhvdXJzKCkpOworCQkJcGFyZW50LnRTdGFydERhdGUuc2V0TWludXRlcygwKTsKKwkJCXBhcmVudC50RW5kRGF0ZSA9IG51bGw7CisJCQlwYXJlbnQuZWRpdENhbGVuZGFyRXZlbnQoKTsKKwkJPC9oYW5kbGVyPgorCQk8aGFuZGxlciBuYW1lPSJvblN0YXJ0RW5kRGF0ZSIgYXJncz0idEVtcHR5UmVmIj4KKwkJCXBhcmVudC50U3RhcnREYXRlID0gdGhpcy50U3RhcnREYXRlOworCQkJcGFyZW50LnRFbmREYXRlID0gdGhpcy50RW5kRGF0ZTsKKwkJCXBhcmVudC5lZGl0Q2FsZW5kYXJFdmVudCgpOworCQk8L2hhbmRsZXI+CisJPC9sekNhbGVuZGFyR3JpZD4KKwkKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L2Jhc2VDaG9vc2VJY29uRkxWVmlldy5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6cmVjb3JkY29udGVudC9iYXNlQ2hvb3NlSWNvbkZMVlZpZXcubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwNzZmNDMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6cmVjb3JkY29udGVudC9iYXNlQ2hvb3NlSWNvbkZMVlZpZXcubHp4CkBAIC0wLDAgKzEsNTIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzxjbGFzcyBuYW1lPSJiYXNlQ2hvb3NlSWNvbkZMVlZpZXciIGV4dGVuZHM9InZpZXciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgCisgICAgICAgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdzZWNvbmRCb3JkZXJDb2xvcicpIH0iICA+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJyZXNvdXJjZU4iIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9Imlzc2VsZWN0ZWQiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImxhYmVsaWQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAgICAgaWYgKHRoaXMuaXNzZWxlY3RlZCl7CisgICAgICAgICAgICB0aGlzLm9uY2xpY2suc2VuZEV2ZW50KCk7CisgICAgICAgIH0KKyAgICA8L2hhbmRsZXI+IAorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdmVyIj4KKyAgICAgICAgdGhpcy5fYmcuc2V0QXR0cmlidXRlKCJiZ2NvbG9yIixjYW52YXMuZ2V0VGhlbWVDb2xvcignc2Vjb25kQm9yZGVyQ29sb3InKSk7CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdXQiPgorICAgICAgICB0aGlzLl9iZy5zZXRBdHRyaWJ1dGUoImJnY29sb3IiLDB4RkZGRkZGKTsKKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPHZpZXcgbmFtZT0iX2JnIiB4PSIxIiB5PSIxIiB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aC0xIH0iIAorICAgICAgICAgIGhlaWdodD0iJG9uY2V7IHBhcmVudC5oZWlnaHQtMiB9IiBiZ2NvbG9yPSIweEZGRkZGRiIgLz4KKyAgICAKKyAgICA8dmlldyB4PSIyIiB5PSIyIiByZXNvdXJjZT0iJG9uY2V7IHBhcmVudC5yZXNvdXJjZU4gfSIgLz4KKyAgICAgICAgICAgICAKKyAgICA8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IiRvbmNleyBwYXJlbnQubGFiZWxpZCB9IiBpbml0dHdpY2U9InRydWUiIC8+Cis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6cmVjb3JkY29udGVudC9jb250ZW50dmlld3MvbGlicmFyeS5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6cmVjb3JkY29udGVudC9jb250ZW50dmlld3MvbGlicmFyeS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWNiMjc1MwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L2NvbnRlbnR2aWV3cy9saWJyYXJ5Lmx6eApAQCAtMCwwICsxLDI5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCQorCisgICAgPGluY2x1ZGUgaHJlZj0ibHpSZWNvcmRpbmdzVmlld01haW4ubHp4IiAvPgorICAgIDxpbmNsdWRlIGhyZWY9Imx6UmVjb3JkaW5nc1ZpZXdCb3R0b20ubHp4IiAvPgorICAgIDxpbmNsdWRlIGhyZWY9Imx6UmVjb3JkaW5nc1ZpZXdBZGFwdGVyLmx6eCIgLz4KKworCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6cmVjb3JkY29udGVudC9jb250ZW50dmlld3MvbHpSZWNvcmRpbmdzVmlld0FkYXB0ZXIubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9senJlY29yZGNvbnRlbnQvY29udGVudHZpZXdzL2x6UmVjb3JkaW5nc1ZpZXdBZGFwdGVyLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MGFhZTNhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9senJlY29yZGNvbnRlbnQvY29udGVudHZpZXdzL2x6UmVjb3JkaW5nc1ZpZXdBZGFwdGVyLmx6eApAQCAtMCwwICsxLDEwNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+DQorPCEtLQ0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAgDQorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICAgICAgICAgIA0KKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICB1bmRlciB0aGUgTGljZW5zZS4NCisgIA0KKy0tPg0KKzxsaWJyYXJ5Pg0KKyAgICANCisgICAgDQorPCEtLS0NCisgICAgVmlldyBmb3IgcmVjb3JkZWQgY29udGVudHMgbGlzdC4NCisgICAgV2hlbiB5b3Ugc2VsZWN0ICdSZWNvcmRpbmdzJyBvbiB0aGUgdG9wIG1lbnUsIHRoaXMgY2xhc3Mgc2hvd3MgdGhlIGxpc3QuDQorLS0+DQorPGNsYXNzIG5hbWU9Imx6UmVjb3JkaW5nc1ZpZXdBZGFwdGVyIiBleHRlbmRzPSJ2aWV3Ij4NCisJDQorCTxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudFRpbWUiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+DQorCQ0KKwk8ZXZlbnQgbmFtZT0ib25VcGRhdGVSZWNvcmRpbmdTdHJlYW1UaW1lIiAvPg0KKwk8ZXZlbnQgbmFtZT0ib25Ub2dnbGVQbGF5UmVjb3JkaW5nU3RyZWFtIiAvPg0KKwk8ZXZlbnQgbmFtZT0ib25SZWNvcmRpbmdTdG9wcGVkQW5kRGlzY29ubmVjdGVkIiAvPg0KKwk8ZXZlbnQgbmFtZT0ib25QbGF5Q29tcGxldGUiIC8+DQorICAgIA0KKyAgICA8bWV0aG9kIG5hbWU9ImdldFRpbWUiPg0KKyAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFRpbWU7DQorICAgIDwvbWV0aG9kPg0KKwkNCisJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4NCisJCXZhciB0ID0gdGhpczsNCisgICAgICAgIGNhbnZhcy52aWRlb0NvbXBfbGMuc3RvcFJlY29yZGluZ1N0cmVhbSA9IGZ1bmN0aW9uKCkgew0KKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJMQyBzdG9wUmVjb3JkaW5nU3RyZWFtIik7DQorICAgICAgICAgICAgdC5wYXJlbnQucGFyZW50LnN0b3BTdHJlYW0oKTsNCisgICAgICAgIH0NCisgICAgICAgIGNhbnZhcy52aWRlb0NvbXBfbGMudXBkYXRlUmVjb3JkaW5nU3RyZWFtVGltZSA9IGZ1bmN0aW9uKG5ld1RpbWUpIHsNCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiTEMgdXBkYXRlUmVjb3JkaW5nU3RyZWFtVGltZSA6OiIsbmV3VGltZSk7DQorICAgICAgICAgICAgdC5jdXJyZW50VGltZSA9IG5ld1RpbWU7DQorICAgICAgICAgICAgdC5vblVwZGF0ZVJlY29yZGluZ1N0cmVhbVRpbWUuc2VuZEV2ZW50KCk7DQorICAgICAgICB9DQorICAgICAgICBjYW52YXMudmlkZW9Db21wX2xjLnRvZ2dsZVBsYXlSZWNvcmRpbmdTdHJlYW0gPSBmdW5jdGlvbigpIHsNCisgICAgICAgIAlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiTEMgdG9nZ2xlUGxheVJlY29yZGluZ1N0cmVhbSA6OiIpOw0KKyAgICAgICAgCXQub25Ub2dnbGVQbGF5UmVjb3JkaW5nU3RyZWFtLnNlbmRFdmVudCgpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgY2FudmFzLnZpZGVvQ29tcF9sYy5yZWNvcmRpbmdTdG9wcGVkQW5kRGlzY29ubmVjdGVkID0gZnVuY3Rpb24oKSB7DQorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIkxDIHRvZ2dsZVBsYXlSZWNvcmRpbmdTdHJlYW0gOjoiKTsNCisgICAgICAgICAgICB0Lm9uUmVjb3JkaW5nU3RvcHBlZEFuZERpc2Nvbm5lY3RlZC5zZW5kRXZlbnQoKTsNCisgICAgICAgIH0NCisJPC9oYW5kbGVyPg0KKwkNCisJPG1ldGhvZCBuYW1lPSJjb25uZWN0Ij4NCisJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJjb25uZWN0Iik7DQorCQl2YXIgdHggPSB0aGlzLmdldEF0dHJpYnV0ZVJlbGF0aXZlKCJ4IixjYW52YXMpOw0KKwkJdmFyIHR5ID0gdGhpcy5nZXRBdHRyaWJ1dGVSZWxhdGl2ZSgieSIsY2FudmFzKTsNCisJCWNhbnZhcy5zZW5kVmlhTG9jYWxDb25uZWN0aW9uKGNhbnZhcy5ydG1wX2xjX25hbWUsICJjb25uZWN0UmVjb3JkaW5nUGxheWVyIiwgW2NhbnZhcy50aGlzaGliLnNyYywgdHgsIHR5LCB0aGlzLndpZHRoLCB0aGlzLmhlaWdodF0pOw0KKwk8L21ldGhvZD4NCisJDQorCTxtZXRob2QgbmFtZT0iZGlzY29ubmVjdCI+DQorCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZGlzY29ubmVjdCIpOw0KKwk8L21ldGhvZD4NCisJDQorCTxtZXRob2QgbmFtZT0icGxheVN0cmVhbSIgYXJncz0ic3RyZWFtLGRlbGF5Ij4NCisJCXZhciB0eCA9IHRoaXMuZ2V0QXR0cmlidXRlUmVsYXRpdmUoIngiLGNhbnZhcyk7DQorICAgICAgICB2YXIgdHkgPSB0aGlzLmdldEF0dHJpYnV0ZVJlbGF0aXZlKCJ5IixjYW52YXMpOw0KKyAgICAgICAgdGhpcy5jdXJyZW50VGltZSA9IDA7DQorCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgicGxheVJlY29yZGluZ1N0cmVhbSAiLHN0cmVhbSwgZGVsYXksIHR4LCB0eSwgdGhpcy53aWR0aCwgdGhpcy5oZWlnaHQpOw0KKwkJY2FudmFzLnNlbmRWaWFMb2NhbENvbm5lY3Rpb24oY2FudmFzLnJ0bXBfbGNfbmFtZSwgInBsYXlSZWNvcmRpbmdTdHJlYW0iLCBbc3RyZWFtLCBkZWxheSwgdHgsIHR5LCB0aGlzLndpZHRoLCB0aGlzLmhlaWdodF0pOw0KKwk8L21ldGhvZD4NCisJDQorCTxtZXRob2QgbmFtZT0idXBkYXRlUmVjb3JkaW5nVmlkZW9Qb3NpdGlvbiI+DQorICAgICAgICBjYW52YXMuc2VuZFZpYUxvY2FsQ29ubmVjdGlvbihjYW52YXMucnRtcF9sY19uYW1lLCAidXBkYXRlUmVjb3JkaW5nVmlkZW9Qb3NpdGlvbiIsIFt0aGlzLndpZHRoLCB0aGlzLmhlaWdodF0pOw0KKyAgICA8L21ldGhvZD4NCisJDQorCTxtZXRob2QgbmFtZT0ic2VlayIgYXJncz0iZmx2VGltZSI+DQorCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2VlayAiLGZsdlRpbWUpOw0KKwkJY2FudmFzLnNlbmRWaWFMb2NhbENvbm5lY3Rpb24oY2FudmFzLnJ0bXBfbGNfbmFtZSwgInNlZWtSZWNvcmRpbmdQbGF5YmFjayIsIFtmbHZUaW1lXSk7DQorCTwvbWV0aG9kPg0KKwkNCisJPG1ldGhvZCBuYW1lPSJwYXVzZSIgYXJncz0icGF1c2VCb29sIj4NCisJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJselJlY29yZGluZ3NWaWV3QWRhcHRlcjo6cGF1c2UgdmFsdWU6ICIscGF1c2VCb29sKTsNCisJCWNhbnZhcy5zZW5kVmlhTG9jYWxDb25uZWN0aW9uKGNhbnZhcy5ydG1wX2xjX25hbWUsICJwYXVzZVJlY29yZGluZ1BsYXliYWNrIiwgW3BhdXNlQm9vbF0pOw0KKwk8L21ldGhvZD4NCisJDQorCTxtZXRob2QgbmFtZT0ic3RvcCI+DQorCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiU0VORCBzdG9wICIpOw0KKwkJY2FudmFzLnNlbmRWaWFMb2NhbENvbm5lY3Rpb24oY2FudmFzLnJ0bXBfbGNfbmFtZSwgInN0b3BSZWNvcmRpbmdTdHJlYW0iLCBudWxsKTsNCisJPC9tZXRob2Q+DQorCQ0KKwk8bWV0aG9kIG5hbWU9InN0b3BBbmRDbG9zZUNvbm5lY3Rpb24iPg0KKwkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIlNFTkQgc3RvcEFuZENsb3NlQ29ubmVjdGlvbiAiKTsNCisgICAgICAgIGNhbnZhcy5zZW5kVmlhTG9jYWxDb25uZWN0aW9uKGNhbnZhcy5ydG1wX2xjX25hbWUsICJzdG9wQW5kQ2xvc2VSZWNvcmRpbmdDb25uZWN0aW9uIiwgbnVsbCk7DQorCTwvbWV0aG9kPg0KKwkNCis8L2NsYXNzPg0KKw0KKzwvbGlicmFyeT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6cmVjb3JkY29udGVudC9jb250ZW50dmlld3MvbHpSZWNvcmRpbmdzVmlld0JvdHRvbS5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6cmVjb3JkY29udGVudC9jb250ZW50dmlld3MvbHpSZWNvcmRpbmdzVmlld0JvdHRvbS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQ3NzZjNAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L2NvbnRlbnR2aWV3cy9selJlY29yZGluZ3NWaWV3Qm90dG9tLmx6eApAQCAtMCwwICsxLDIzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKyAKKzxjbGFzcyBuYW1lPSJmbHZNZXRhSW5mb0NvbnRlbnRBcmVhIiBleHRlbmRzPSJ2aWV3IiAKKyAgICAgICB3aWR0aD0iJHsgcGFyZW50LndpZHRoIH0iIGhlaWdodD0iMTY4IiBjbGlwPSJ0cnVlIj4KKwkKKwk8YXR0cmlidXRlIG5hbWU9ImJhc2VXaWR0aEZvclBvaW50ZXIiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiLz4KKwkKKwk8bWV0aG9kIG5hbWU9InNob3dQcm9ncmVzcyIgYXJncz0iZmx2VGltZSxkZWx0YUluU2Vjb25kcyI+CisJCTwhW0NEQVRBWworCQkKKyAgICAgICAgICAgIHZhciB0TmV3WCA9IE1hdGgucm91bmQoKHRoaXMuYmFzZVdpZHRoRm9yUG9pbnRlciAvIGRlbHRhSW5TZWNvbmRzKSAqIGZsdlRpbWUpOworCQkKKyAgICAgICAgICAgIHRoaXMuY29udGVudERldmlkZXIuX3BvaW50ZXIuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgICAgICAgICAgdGhpcy5jb250ZW50RGV2aWRlci5fcG9pbnRlci5zZXRBdHRyaWJ1dGUoIngiLHROZXdYKTsKKyAgICAgICAgICAgIAorCQldXT4KKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9InN0b3BQcm9ncmVzcyI+CisJCXRoaXMuY29udGVudERldmlkZXIuX3BvaW50ZXIuc2V0QXR0cmlidXRlKCJ4IiwwKTsKKwk8L21ldGhvZD4KKyAgICAKKyAgICA8dmlldyBuYW1lPSJjb250ZW50IiB3aWR0aD0iJHsgcGFyZW50LndpZHRoIH0iIGhlaWdodD0iMTY4Ij4KKyAgICAgICAgCisgICAgICAgIDx2aWV3IG5hbWU9ImNvbnRlbnQiIGxheW91dD0iYXhpczp5O3NwYWNpbmc6MiIgLz4KKyAgICAgICAgCisgICAgICAgIDxvbV92c2Nyb2xsYmFyIC8+CisgICAgICAgIDxvbV9oc2Nyb2xsYmFyIC8+CisgICAgICAgIAorICAgIDwvdmlldz4KKyAgICAKKyAgICA8dmlldyBuYW1lPSJjb250ZW50RGV2aWRlciIgeD0iJHsgcGFyZW50LmNvbnRlbnQuY29udGVudC54IH0iCisgICAgICAgICAgd2lkdGg9IiR7IHBhcmVudC53aWR0aCB9IiBoZWlnaHQ9IjE2OCIgPgorICAgIAkKKyAgICAJPHZpZXcgbmFtZT0iX3BvaW50ZXIiIHJlc291cmNlPSJmbHZfcHJvZ3Jlc3NfcG9pbnRlcl9iaWdfcnNjIiB2aXNpYmlsaXR5PSJoaWRkZW4iIC8+CisgICAgCQorICAgIDwvdmlldz4KKyAgICAKKzwvY2xhc3M+CisKKworPGNsYXNzIG5hbWU9InVzZXJBY3Rpdml0eUl0ZW0iIGV4dGVuZHM9InZpZXciPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0idXNlclRleHQiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3ZlciI+CisgICAgCXRoaXMuc2V0QXR0cmlidXRlKCJvcGFjaXR5IiwwLjUpOworICAgIDwvaGFuZGxlcj4KKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3V0Ij4KKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoIm9wYWNpdHkiLDEpOworICAgIDwvaGFuZGxlcj4KKyAgICAKKyAgICA8dmlldyBuYW1lPSJfbWlkZGxlSWNvbiIgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGggLSAyMCB9IiAKKyAgICAgICAgICB5PSI0IiB4PSIxMCIgaGVpZ2h0PSI4IiBiZ2NvbG9yPSIweDAwQ0MwMCIgLz4KKyAgICAgICAgICAKKyAgICA8dmlldyBuYW1lPSJfc3RhcnRJY29uIiByZXNvdXJjZT0iaWNvbl9mbHZfcmVjb3JkaW5nX3ZpZGVvX3N0YXJ0X3JzYyIgLz4KKyAgICAKKyAgICA8dmlldyBuYW1lPSJfZW5kSWNvbiIgYWxpZ249InJpZ2h0IgorICAgICAgICAgIHJlc291cmNlPSJpY29uX2Zsdl9yZWNvcmRpbmdfdmlkZW9fc3RhcnRfcnNjIiAvPgorICAgIAorICAgIDxsYWJlbFRleHQgeD0iMTQiIHRleHQ9IiRvbmNleyBwYXJlbnQudXNlclRleHQgfSIgeT0iLTIiIC8+CisgICAgCisgICAgPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSI4NzciIC8+CisgICAgCis8L2NsYXNzPgorCisKKzxjbGFzcyBuYW1lPSJ1c2VyQWN0aXZpdHlEZXZpZGVyIiBleHRlbmRzPSJ2aWV3IiA+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJkZXZpZGVyVGV4dCIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIi8+CisgICAgCisgICAgPHZpZXcgaGVpZ2h0PSIxNTQiIGJnY29sb3I9IjB4MDAwMDAwIiB3aWR0aD0iMSIgLz4KKyAgICAKKyAgICA8bGFiZWxUZXh0IHRleHQ9IiRvbmNleyBwYXJlbnQuZGV2aWRlclRleHQgfSIgeT0iMTM0IiAvPgorICAgIAorPC9jbGFzcz4gICAgCisgICAgCis8IS0tLQorCVZpZXcgZm9yIHJlY29yZGVkIGNvbnRlbnRzIGxpc3QuCisJV2hlbiB5b3Ugc2VsZWN0ICdSZWNvcmRpbmdzJyBvbiB0aGUgdG9wIG1lbnUsIHRoaXMgY2xhc3Mgc2hvd3MgdGhlIGxpc3QuCistLT4KKzxjbGFzcyBuYW1lPSJselJlY29yZGluZ3NWaWV3Qm90dG9tIiBleHRlbmRzPSJiYXNlUHJvcGVydHlQYW5lbCIgbGFiZWxpZD0iODU5IiBoZWlnaHQ9IjE5MCIgCisgICAgICAgICAgICAgICAgICAgeT0iJHsgY2FudmFzLmhlaWdodCAtIGNhbnZhcy5uYXZpSGVpZ2h0RGVsdGEgLSB0aGlzLmhlaWdodCB9IiAKKyAgICAgICAgICAgICAgICAgICB4PSIkeyBwYXJlbnQuX25hdmlnYXRpb25BcmVhLndpZHRoICsgcGFyZW50Ll9uYXZpZ2F0aW9uQXJlYS54IH0iCisgICAgICAgICAgICAgICAgICAgd2lkdGg9IiR7IGNhbnZhcy53aWR0aCAtIHBhcmVudC5fbmF2aWdhdGlvbkFyZWEud2lkdGggLSBwYXJlbnQuX25hdmlnYXRpb25BcmVhLnggfSI+CisgICAgICAgIAorICAgICAgICA8YXR0cmlidXRlIG5hbWU9InBpeGVsRmFjdG9yIiB2YWx1ZT0iNSIgdHlwZT0ibnVtYmVyIi8+CisgICAgICAgIAorICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImRlbHRhSW5TZWNvbmRzIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIi8+CisgICAgICAgIAorICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRSZWNvcmRpbmciIHZhbHVlPSJudWxsIi8+CisgICAgICAgIAorICAgICAgICA8bWV0aG9kIG5hbWU9InNob3dQcm9ncmVzcyIgYXJncz0iZmx2VGltZSI+CisgICAgICAgIAl0aGlzLmNvbnRlbnQuX2NvbnRlbnQuc2hvd1Byb2dyZXNzKGZsdlRpbWUsdGhpcy5kZWx0YUluU2Vjb25kcyk7CisgICAgICAgIDwvbWV0aG9kPgorICAgICAgICAKKyAgICAgICAgPG1ldGhvZCBuYW1lPSJzdG9wUHJvZ3Jlc3MiPgorICAgICAgICAgICAgdGhpcy5jb250ZW50Ll9jb250ZW50LnN0b3BQcm9ncmVzcygpOworICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgCisgICAgICAgIDxtZXRob2QgbmFtZT0ic2hvd01ldGFEYXRhIiBhcmdzPSJyZWMiPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB0aGlzLmN1cnJlbnRSZWNvcmRpbmcgPSByZWM7CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2hvd01ldGFEYXRhICIpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHRoaXMuY29udGVudC5jbGVhckNvbnRlbnQoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBwYXJlbnQuX3JlY29yZGluZ3NWaWV3TWFpbi5zZXROZXdTdHJlYW0ocmVjKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHRoaXMuZGVsdGFJblNlY29uZHMgPSBNYXRoLnJvdW5kKChyZWMucmVjb3JkRW5kLmdldFRpbWUoKSAtIHJlYy5yZWNvcmRTdGFydC5nZXRUaW1lKCkpLzEwMDApOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJkZWx0YUluU2Vjb25kcyAiLGRlbHRhSW5TZWNvbmRzKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB0aGlzLnBpeGVsRmFjdG9yID0gZGVsdGFJblNlY29uZHMvKHRoaXMud2lkdGgtMTYpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJwaXhlbEZhY3RvciAiLHRoaXMucGl4ZWxGYWN0b3IpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHZhciB3aWR0aEl0ZW0gPSBNYXRoLnJvdW5kKGRlbHRhSW5TZWNvbmRzL3RoaXMucGl4ZWxGYWN0b3IpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ3aWR0aEl0ZW0gIix3aWR0aEl0ZW0pOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmIChyZWMuZmx2UmVjb3JkaW5nTWV0YURhdGEgIT0gbnVsbCkgeworCSAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTxyZWMuZmx2UmVjb3JkaW5nTWV0YURhdGEubGVuZ3RoO2krKykgeworCSAgICAgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiaXNTY3JlZW5EYXRhIDo6ICIscmVjLmZsdlJlY29yZGluZ01ldGFEYXRhW2ldLmlzU2NyZWVuRGF0YSk7CisJICAgICAgICAgICAgICAgICAgICAKKwkgICAgICAgICAgICAgICAgICAgIGlmICghcmVjLmZsdlJlY29yZGluZ01ldGFEYXRhW2ldLmlzU2NyZWVuRGF0YSAmJiAKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAoIHJlYy5mbHZSZWNvcmRpbmdNZXRhRGF0YVtpXS5pc0F1ZGlvT25seSB8fAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICggIXJlYy5mbHZSZWNvcmRpbmdNZXRhRGF0YVtpXS5pc0F1ZGlvT25seSAmJiAhcmVjLmZsdlJlY29yZGluZ01ldGFEYXRhW2ldLmlzVmlkZW9Pbmx5ICkKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICApCisJICAgICAgICAgICAgICAgICAgICAgICAgKSB7CisJCSAgICAgICAgICAgICAgICAgICAgdmFyIHN0YXJ0VGltZUluU2Vjb25kcyA9IE1hdGgucm91bmQoKHJlYy5mbHZSZWNvcmRpbmdNZXRhRGF0YVtpXS5yZWNvcmRTdGFydC5nZXRUaW1lKCkgLSByZWMucmVjb3JkU3RhcnQuZ2V0VGltZSgpKS8xMDAwKTsKKwkJICAgICAgICAgICAgICAgICAgICB2YXIgZGVsdGFJblNlY29uZHNOZXcgPSBNYXRoLnJvdW5kKChyZWMuZmx2UmVjb3JkaW5nTWV0YURhdGFbaV0ucmVjb3JkRW5kLmdldFRpbWUoKSAtIHJlYy5mbHZSZWNvcmRpbmdNZXRhRGF0YVtpXS5yZWNvcmRTdGFydC5nZXRUaW1lKCkpLzEwMDApOworCQkgICAgICAgICAgICAgICAgICAgIAorCQkgICAgICAgICAgICAgICAgICAgIHZhciB3aWR0aEl0ZW0gPSBNYXRoLnJvdW5kKGRlbHRhSW5TZWNvbmRzTmV3L3RoaXMucGl4ZWxGYWN0b3IpOworCQkgICAgICAgICAgICAgICAgICAgIHZhciB4SXRlbSA9IE1hdGgucm91bmQoc3RhcnRUaW1lSW5TZWNvbmRzL3RoaXMucGl4ZWxGYWN0b3IpOworCQkgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ3aWR0aEl0ZW0gIixpLHdpZHRoSXRlbSx4SXRlbSk7CisJCSAgICAgICAgICAgICAgICAgICAgCisJCQkgICAgICAgICAgICAgICAgbmV3IGx6LnVzZXJBY3Rpdml0eUl0ZW0odGhpcy5jb250ZW50Ll9jb250ZW50LmNvbnRlbnQuY29udGVudCx7CisJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDp4SXRlbSx3aWR0aDp3aWR0aEl0ZW0sCisJCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlclRleHQ6cmVjLmZsdlJlY29yZGluZ01ldGFEYXRhW2ldLmZyZWVUZXh0VXNlck5hbWUKKwkJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKwkgICAgICAgICAgICAgICAgICAgIH0gICAgCisJICAgICAgICAgICAgICAgICAgICAKKwkgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZGVsdGFJblNlY29uZHMgOjogIixkZWx0YUluU2Vjb25kcywoZGVsdGFJblNlY29uZHMvNjApKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB2YXIgbWludXRlcyA9IE1hdGguZmxvb3IoZGVsdGFJblNlY29uZHMvNjApOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJtaW51dGVzICIsbWludXRlcyk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKG1pbnV0ZXMgPCA2MCkgeworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8PW1pbnV0ZXM7aSsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4SXRlbSA9IE1hdGgucm91bmQoKGkqNjApL3RoaXMucGl4ZWxGYWN0b3IpOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJkZXZpc2lvciAiLGkseEl0ZW0pOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBuZXcgbHoudXNlckFjdGl2aXR5RGV2aWRlcih0aGlzLmNvbnRlbnQuX2NvbnRlbnQuY29udGVudERldmlkZXIseworCQkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgICB4OnhJdGVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXZpZGVyVGV4dDppKyIgbWluIgorCQkJCQkJICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgdmFyIGl0ZW1zID0gTWF0aC5mbG9vcihtaW51dGVzLzEwKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPD1pdGVtcztpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHhJdGVtID0gTWF0aC5yb3VuZCgoKGkqMTApKjYwKS90aGlzLnBpeGVsRmFjdG9yKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgbmV3IGx6LnVzZXJBY3Rpdml0eURldmlkZXIodGhpcy5jb250ZW50Ll9jb250ZW50LmNvbnRlbnREZXZpZGVyLHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDp4SXRlbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGV2aWRlclRleHQ6aSsiIG1pbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHRoaXMuY29udGVudC5fY29udGVudC5iYXNlV2lkdGhGb3JQb2ludGVyID0gdGhpcy5jb250ZW50Ll9jb250ZW50LndpZHRoOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgXV0+CisgICAgICAgIDwvbWV0aG9kPgorICAgICAgICAKKyAgICAgICAgPHZpZXcgbmFtZT0iY29udGVudCIgdmlzaWJpbGl0eT0idmlzaWJsZSIgeT0iMjIiIGJnY29sb3I9IjB4RkZGRkZGIgorICAgICAgICAgICAgICB3aWR0aD0iJHsgcGFyZW50LndpZHRoIH0iIGhlaWdodD0iMTY4Ij4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPG1ldGhvZCBuYW1lPSJjbGVhckNvbnRlbnQiPgorICAgICAgICAgICAgICAgIHRoaXMuX2NvbnRlbnQuZGVzdHJveSgpOworICAgICAgICAgICAgICAgIG5ldyBsei5mbHZNZXRhSW5mb0NvbnRlbnRBcmVhKHRoaXMse25hbWU6J19jb250ZW50J30pOworICAgICAgICAgICAgPC9tZXRob2Q+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxmbHZNZXRhSW5mb0NvbnRlbnRBcmVhIG5hbWU9Il9jb250ZW50IiAvPgorICAgICAgICAgICAgCisgICAgICAgIDwvdmlldz4KKyAgICAgICAgCis8L2NsYXNzPgorCisKKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9senJlY29yZGNvbnRlbnQvY29udGVudHZpZXdzL2x6UmVjb3JkaW5nc1ZpZXdNYWluLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L2NvbnRlbnR2aWV3cy9selJlY29yZGluZ3NWaWV3TWFpbi5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDBkNDVlNgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L2NvbnRlbnR2aWV3cy9selJlY29yZGluZ3NWaWV3TWFpbi5sengKQEAgLTAsMCArMSw0NTcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisgICAgCisgICAgCis8IS0tLQorCVZpZXcgZm9yIHJlY29yZGVkIGNvbnRlbnRzIGxpc3QuCisJV2hlbiB5b3Ugc2VsZWN0ICdSZWNvcmRpbmdzJyBvbiB0aGUgdG9wIG1lbnUsIHRoaXMgY2xhc3Mgc2hvd3MgdGhlIGxpc3QuCistLT4KKzxjbGFzcyBuYW1lPSJselJlY29yZGluZ3NWaWV3TWFpbiIgZXh0ZW5kcz0iYmFzZVByb3BlcnR5UGFuZWxXaGl0ZWJvYXJkIiBsYWJlbGlkPSI4NTgiIGFsbG93VG9nZ2xlPSJmYWxzZSIKKyAgICAgICAgICAgeD0iJHsgcGFyZW50Ll9uYXZpZ2F0aW9uQXJlYS53aWR0aCArIHBhcmVudC5fbmF2aWdhdGlvbkFyZWEueCB9IgorICAgICAgICAgICBoZWlnaHQ9IiR7IGNhbnZhcy5oZWlnaHQgLSBjYW52YXMubmF2aUhlaWdodERlbHRhIC0gcGFyZW50Ll9yZWNvcmRpbmdzVmlld0JvdHRvbS5oZWlnaHQgfSIKKyAgICAgICAgICB3aWR0aD0iJHsgY2FudmFzLndpZHRoIC0gcGFyZW50Ll9uYXZpZ2F0aW9uQXJlYS53aWR0aCAtIHBhcmVudC5fbmF2aWdhdGlvbkFyZWEueCB9Ij4KKyAgICAgICAgCisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0icmVjb3JkaW5nTmFtZSIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIi8+CisgICAgICAgIAorICAgICAgICA8IS0tLQorICAgICAgICBpc1BhdXNlZCBpcyB0cnVlIGlmIGEgdmlkZW8gaXMgcnVubmluZyBidXQgcGF1c2VkCisgICAgICAgICAtLT4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJpc1BhdXNlZCIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIi8+CisgICAgICAgIAorICAgICAgICA8IS0tLSAKKyAgICAgICAgICAgIFNob3dzIGlmIHRoZXJlIGlzIGN1cnJlbnRseSBhIHZpZGVvIHJ1bm5pbmcKKyAgICAgICAgIC0tPgorICAgICAgICA8YXR0cmlidXRlIG5hbWU9InRpbWVyRGVsZWdhdGVTdGFydGVkIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iLz4KKyAgICAgICAgCisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0icmVjb3JkaW5nTG9nIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciLz4KKyAgICAgICAgCisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iZGVsdGFJblNlY29uZHMiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiLz4KKyAgICAgICAgCisgICAgICAgIDwhLS0gaW52b2tlZCBhZnRlciB0aGUgY29ubmVjdGlvbiBpbiB0aGUgYXVkaW8vdmlkZW8gY29udGFpbmVyIHdhcyBjbG9zZWQgLS0+CisgICAgICAgIDxldmVudCBuYW1lPSJvblJlY29yZGluZ1N0b3BwZWRBbmREaXNjb25uZWN0ZWQiIC8+CisgICAgICAgIAorICAgICAgICA8bWV0aG9kIG5hbWU9ImNvbm5lY3QiPgorICAgICAgICAJdGhpcy5fY29udGVudC5fdmlkZW9zdHJlYW0uY29ubmVjdCgpOworICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgCisgICAgICAgIDxtZXRob2QgbmFtZT0ic2hvd0xvZyI+CisgICAgICAgIAlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZ2V0Rmx2UmVjb3JkaW5nTG9nIGZsdlJlY29yZGluZ0lkICIsdGhpcy5nZXRGbHZSZWNvcmRpbmdMb2cuZmx2UmVjb3JkaW5nSWQpOworICAgICAgICAJdGhpcy5nZXRGbHZSZWNvcmRpbmdMb2cuZG9DYWxsKCk7CisgICAgICAgIDwvbWV0aG9kPgorICAgICAgICAKKyAgICAgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iZ2V0Rmx2UmVjb3JkaW5nTG9nIiBmdW5jbmFtZT0iZmx2cmVjb3JkZXJzZXJ2aWNlLmdldEZsdlJlY29yZGluZ0xvZyIgCisgICAgICAgICAgICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgc2hvd0xvYWRpbmc9ImZhbHNlIj4gCisgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImZsdlJlY29yZGluZ0lkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIi8+ICAKKyAgICAgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gY2FudmFzLnNlc3Npb25JZDs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQuZmx2UmVjb3JkaW5nSWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPiAgICAKKyAgICAgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICAgICAgdmFyIHRMb2dTdHJpbmcgPSAiIjsKKyAgICAgICAgICAgICAgICAgICAgdmFyIGhlYWRlck1lc3NhZ2UgPSAiPGJyLz4iK2NhbnZhcy5nZXRMYWJlbE5hbWUoODg5KTsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7aTx2YWx1ZS5sZW5ndGg7aSsrKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIHRMb2dTdHJpbmcgKz0gaGVhZGVyTWVzc2FnZSAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgcGFyc2VEYXRlVG9TdHJpbmdUaW1lU2Vjb25kcyh2YWx1ZVtpXS5pbnNlcnRlZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgJzxici8+JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyB2YWx1ZVtpXS5tc2dUeXBlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArICc8YnIvPicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgdmFsdWVbaV0uZnVsbE1lc3NhZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgJzxici8+JworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyB2YWx1ZVtpXS5leGl0VmFsdWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgJzxici8+JzsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZ2V0Rmx2UmVjb3JkaW5nTG9nOiAiKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIG5ldyBsei5tZXNzYWdlUmVjb3JkaW5nV2luKGNhbnZhcyx7ZXJyb3I6dExvZ1N0cmluZyxsYWJlbFRpdGxlSWQ6OTAzfSk7CisgICAgICAgICAgICAgICAgXV0+CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4gCisgICAgICAgIAorICAgICAgICA8bWV0aG9kIG5hbWU9InJlc3RhcnRDb252ZXJzaW9uIiBhcmdzPSJsZWZ0LHJpZ2h0LGxlZnRUaW1lLHJpZ2h0VGltZSI+CisgICAgICAgIAk8IVtDREFUQVsKKwkgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgicmVzdGFydENvbnZlcnNpb24gIix0aGlzLmdldEZsdlJlY29yZGluZ0xvZy5mbHZSZWNvcmRpbmdJZCk7CisJICAgICAgICAgICAgCisJICAgICAgICAgICAgaWYgKGxlZnQgPT0gIiIgfHwgcmlnaHQgPT0gIiIgfHwgbGVmdFRpbWUgPT0gIiIgfHwgcmlnaHRUaW1lID09ICIiKSB7CisJICAgICAgICAgICAgCW5ldyBsei5sYWJlbGVycm9yUG9wdXAoY2FudmFzLHsKKwkJCSAgICAgICAgICAgIAkJZXJyb3I6J1lvdSBoYXZlIHRvIHNldCBhdCBsZWFzdCAwIGFzIHZhbHVlIGZvciBMZWZ0LCBSaWdodCwgVGltZScKKwkJCSAgICAgICAgICAgIAl9KTsKKwkgICAgICAgICAgICAJcmV0dXJuOworCSAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAKKwkgICAgICAgICAgICB0aGlzLnJlc3RhcnRJbnRlcnZpZXdDb252ZXJzaW9uLmxlZnQgPSBOdW1iZXIobGVmdCk7CisJICAgICAgICAgICAgdGhpcy5yZXN0YXJ0SW50ZXJ2aWV3Q29udmVyc2lvbi5yaWdodCA9IE51bWJlcihyaWdodCk7CisJICAgICAgICAgICAgCisJICAgICAgICAgICAgdGhpcy5yZXN0YXJ0SW50ZXJ2aWV3Q29udmVyc2lvbi5sZWZ0VGltZSA9IE1hdGgucm91bmQoTnVtYmVyKGxlZnRUaW1lKSk7CisJICAgICAgICAgICAgdGhpcy5yZXN0YXJ0SW50ZXJ2aWV3Q29udmVyc2lvbi5yaWdodFRpbWUgPSBNYXRoLnJvdW5kKE51bWJlcihyaWdodFRpbWUpKTsKKwkgICAgICAgICAgICAKKwkgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidGhpcy5yZXN0YXJ0SW50ZXJ2aWV3Q29udmVyc2lvbi5sZWZ0IDo6ICIsdGhpcy5yZXN0YXJ0SW50ZXJ2aWV3Q29udmVyc2lvbi5sZWZ0KTsKKwkgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidGhpcy5yZXN0YXJ0SW50ZXJ2aWV3Q29udmVyc2lvbi5yaWdodCA6OiAiLHRoaXMucmVzdGFydEludGVydmlld0NvbnZlcnNpb24ucmlnaHQpOworCSAgICAgICAgICAgIAorCSAgICAgICAgICAgIHRoaXMucmVzdGFydEludGVydmlld0NvbnZlcnNpb24uZG9DYWxsKCk7CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9tZXRob2Q+CisgICAgICAgIAorICAgICAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJyZXN0YXJ0SW50ZXJ2aWV3Q29udmVyc2lvbiIgZnVuY25hbWU9ImZsdnJlY29yZGVyc2VydmljZS5yZXN0YXJ0SW50ZXJ2aWV3Q29udmVyc2lvbiIgCisgICAgICAgICAgICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgc2hvd0xvYWRpbmc9ImZhbHNlIj4gCisgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImZsdlJlY29yZGluZ0lkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIi8+CisgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImxlZnQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiLz4gIAorICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJyaWdodCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIvPgorICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJsZWZ0VGltZSIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIvPgorICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJyaWdodFRpbWUiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiLz4gICAgICAgICAKKyAgICAgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gY2FudmFzLnNlc3Npb25JZDs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQuZmx2UmVjb3JkaW5nSWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LmxlZnQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnJpZ2h0OzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5sZWZ0VGltZTs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucmlnaHRUaW1lOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4gICAgCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInJlc3RhcnRJbnRlcnZpZXdDb252ZXJzaW9uOiAiLHZhbHVlKTsKKyAgICAgICAgICAgICAgICBuZXcgbHouZXJyb3JQb3B1cChjYW52YXMse2Vycm9yOiJSZS1TYW1wbGluZyBTdGFydGVkLCB0aGF0IGNhbiB0YWtlIHNvbWUgdGltZSwgY2xpY2sgb24gdGhlIEludGVydmlldyB0byBnZXQgdGhlIHN0YXR1cyAifSk7CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4gCisgICAgICAgIAorICAgICAgICA8bWV0aG9kIG5hbWU9InNldE5ld1N0cmVhbSIgYXJncz0icmVjb3JkaW5nIj4KKyAgICAgICAgCTwhW0NEQVRBWworICAgICAgICAJCisgICAgICAgIAkJdGhpcy5zdG9wU3RyZWFtKCk7CisgICAgICAgIAkgICAgdGhpcy5pc1BhdXNlZCA9IGZhbHNlOworICAgICAgICAJICAgIAorICAgICAgICAJICAgIHZhciBoYXNGYWlsZWQgPSBmYWxzZTsKKyAgICAgICAgCQkJCisgICAgCQkJdmFyIHRMb2dTdHJpbmcgPSAiIjsKKyAgICAJCQl2YXIgaGVhZGVyTWVzc2FnZSA9ICI8YnIvPiIrY2FudmFzLmdldExhYmVsTmFtZSg4ODkpOworICAgIAkJCQorICAgIAkJCXRoaXMucmVjb3JkaW5nTG9nID0gIiI7CisgICAgCQkJCisgICAgCQkJdGhpcy5yZWNvcmRpbmdOYW1lID0gcmVjb3JkaW5nLmZpbGVIYXNoOworICAgIAkJCQorICAgIAkJCXRoaXMuZ2V0Rmx2UmVjb3JkaW5nTG9nLmZsdlJlY29yZGluZ0lkID0gcmVjb3JkaW5nLmZsdlJlY29yZGluZ0lkOworICAgIAkJCXRoaXMucmVzdGFydEludGVydmlld0NvbnZlcnNpb24uZmx2UmVjb3JkaW5nSWQgPSByZWNvcmRpbmcuZmx2UmVjb3JkaW5nSWQ7CisgICAgCQkJCisgICAgCQkJLy9DaGVjayBpZiByZWNvcmRpbmcgaXMgbm90IHlldCBjb21wbGV0ZWQgb3IgaWYgaXQgaGFzIGZhaWxlZAorICAgIAkJCS8vICoqKiBUaGlzIGlzIGRpc2FibGVkIGZvciBub3cgYXMgdGhlIExvZyBjYW4gZ3JvdyB0b28gYmlnICoqKgorICAgIAkJCWZvciAodmFyIGkgPSAwO2k8cmVjb3JkaW5nLmZsdlJlY29yZGluZ0xvZy5sZW5ndGg7aSsrKSB7CisgICAgCQkJCQorICAgIAkJCQlpZiAocmVjb3JkaW5nLmZsdlJlY29yZGluZ0xvZ1tpXS5leGl0VmFsdWUgIT0gIjAiKSB7CisgICAgCQkJCQkKKyAgICAJCQkJCWhhc0ZhaWxlZCA9IHRydWU7CisgICAgCQkJCQl0TG9nU3RyaW5nICs9IGhlYWRlck1lc3NhZ2UgCisgICAgCQkJCQkJCQkrIHBhcnNlRGF0ZVRvU3RyaW5nVGltZVNlY29uZHMocmVjb3JkaW5nLmZsdlJlY29yZGluZ0xvZ1tpXS5pbnNlcnRlZCkKKyAgICAJCQkJCQkJCSsgJzxici8+JworICAgIAkJCQkJCQkJKyByZWNvcmRpbmcuZmx2UmVjb3JkaW5nTG9nW2ldLm1zZ1R5cGUKKyAgICAJCQkJCQkJCSsgJzxici8+JworICAgIAkJCQkJCQkJKyByZWNvcmRpbmcuZmx2UmVjb3JkaW5nTG9nW2ldLmZ1bGxNZXNzYWdlCisgICAgCQkJCQkJCQkrICc8YnIvPic7CisgICAgCQkJCQkKKyAgICAJCQkJfQorICAgIAkJCQkKKyAgICAJCQkJdGhpcy5yZWNvcmRpbmdMb2cgKz0gaGVhZGVyTWVzc2FnZSAKKyAgICAJCQkJCQkJCSsgcGFyc2VEYXRlVG9TdHJpbmdUaW1lU2Vjb25kcyhyZWNvcmRpbmcuZmx2UmVjb3JkaW5nTG9nW2ldLmluc2VydGVkKQorICAgIAkJCQkJCQkJKyAnPGJyLz4nCisgICAgCQkJCQkJCQkrIHJlY29yZGluZy5mbHZSZWNvcmRpbmdMb2dbaV0ubXNnVHlwZQorICAgIAkJCQkJCQkJKyAnPGJyLz4nCisgICAgCQkJCQkJCQkrIHJlY29yZGluZy5mbHZSZWNvcmRpbmdMb2dbaV0uZnVsbE1lc3NhZ2UKKyAgICAJCQkJCQkJCSsgJzxici8+JzsKKyAgICAJCQkJCisgICAgCQkJfQorICAgIAkJCQorICAgIAkJCWlmIChoYXNGYWlsZWQpIHsKKyAgICAJCQkJCisgICAgCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ0TG9nU3RyaW5nICIrdExvZ1N0cmluZyk7CisJCQkJCS8vdmFyIHRTdHJpbmcgPSBjYW52YXMuZ2V0TGFiZWxOYW1lKDg4NykgKyB0TG9nU3RyaW5nOworCQkJCQkKKwkJCQkJbmV3IGx6Lm1lc3NhZ2VSZWNvcmRpbmdXaW4oY2FudmFzLHtlcnJvcjp0TG9nU3RyaW5nLGxhYmVsVGl0bGVJZDo4ODd9KTsKKwkJCQkJCisJCQkJfSAKKwkJCQkKKwkJCQlpZiAocmVjb3JkaW5nLnByZXZpZXdJbWFnZSAhPSBudWxsICYmIHJlY29yZGluZy5wcmV2aWV3SW1hZ2UgIT0gIiIpIHsKKwkJCQkJCisJICAgICAgICAgICAgCXRoaXMucmVjb3JkaW5nTmFtZSA9IHJlY29yZGluZy5maWxlSGFzaDsKKwkgICAgICAgICAgICAJCisJICAgICAgICAgICAgCXRoaXMuX2NvbnRlbnQuaW5pdFcgPSByZWNvcmRpbmcuZmx2V2lkdGg7CisJICAgICAgICAgICAgCXRoaXMuX2NvbnRlbnQuaW5pdEggPSByZWNvcmRpbmcuZmx2SGVpZ2h0OworCSAgICAgICAgICAgIAkKKwkgICAgICAgICAgICAJdmFyIGRvd25sb2FkdXJsID0gY2FudmFzLmdldFVybCgpICsgJ0Rvd25sb2FkSGFuZGxlcj9maWxlTmFtZT0nK3JlY29yZGluZy5wcmV2aWV3SW1hZ2UKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgKycmbW9kdWxlTmFtZT1selJlY29yZGVyQXBwJnBhcmVudFBhdGg9JnJvb21faWQ9JworCSAgICAgICAgICAgICAgICAgICAgICAgICAgICArJyZzaWQ9JytjYW52YXMuc2Vzc2lvbklkOworCSAgICAgICAgICAgICAgICAKKwkgICAgICAgICAgICAgICAgaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgibHpSZWNvcmRlci9kb3dubG9hZHVybCAiK2Rvd25sb2FkdXJsKTsKKwkgICAgICAgICAgICAJCisJICAgICAgICAgICAgCXRoaXMuX2NvbnRlbnQuX3ByZXZpZXcuaW1hZ2VQcmV2aWV3LnNldEF0dHJpYnV0ZSgic3JjIixkb3dubG9hZHVybCkKKwkgICAgICAgICAgICAJCisJICAgICAgICAgICAgCXRoaXMuX2NvbnRlbnQuX3ByZXZpZXcuYnJpbmdUb0Zyb250KCk7CisJICAgICAgICAgICAgCQorCSAgICAgICAgICAgIAl0aGlzLl9jb250ZW50LnNldEl0ZW1Db250cmFpbnRzKDApOworCSAgICAgICAgICAgIAkKKwkgICAgICAgICAgICAJdGhpcy5kZWx0YUluU2Vjb25kcyA9IE1hdGgucm91bmQoKHJlY29yZGluZy5yZWNvcmRFbmQuZ2V0VGltZSgpIC0gcmVjb3JkaW5nLnJlY29yZFN0YXJ0LmdldFRpbWUoKSkvMTAwMCk7CisJICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZGVsdGFJblNlY29uZHMgIix0aGlzLmRlbHRhSW5TZWNvbmRzKTsKKwkgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgIHZhciBtaW51dGVzID0gTWF0aC5mbG9vcih0aGlzLmRlbHRhSW5TZWNvbmRzLzYwKTsKKwkgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJtaW51dGVzICIsbWludXRlcyk7CisJICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICB2YXIgcmVzdFNlY29uZHMgPSB0aGlzLmRlbHRhSW5TZWNvbmRzIC0gKCBtaW51dGVzICogNjAgKTsKKwkgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgIHRoaXMuX3Byb2dyZXNzLl9wcm9ncmVzc2Jhci5fZHVyYXRpb24uc2V0QXR0cmlidXRlKCJ0ZXh0IixtaW51dGVzKyIgbWluICIrcmVzdFNlY29uZHMrIiBzZWMiKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgCQl9IGVsc2UgeworICAgICAgICAJCQkKKyAgICAgICAgCQkJdmFyIGVycm9yID0gY2FudmFzLmdldExhYmVsTmFtZSg4ODgpOworICAgICAgICAJCQkKKyAgICAgICAgCQkJaWYgKHJlY29yZGluZy5pc0ludGVydmlldykgeworICAgICAgICAJCQkJZXJyb3IgKz0gIjxici8+IiArIGNhbnZhcy5nZXRMYWJlbE5hbWUoOTE5KSArICIgIiArIHJlY29yZGluZy5wcm9ncmVzc1Bvc3RQcm9jZXNzaW5nICsgIiUiOworICAgICAgICAJCQl9CisgICAgICAgIAkJCQorICAgIAkJCQluZXcgbHoubGFiZWxlcnJvclBvcHVwKGNhbnZhcyx7ZXJyb3I6ZXJyb3J9KTsKKyAgICAgICAgCQkJCisgICAgICAgIAkJfQorICAgICAgICAgICAgCQorICAgICAgICAJXV0+CisgICAgICAgIDwvbWV0aG9kPgorICAgICAgICAKKyAgICAgICAgPG1ldGhvZCBuYW1lPSJjYWxjUHJvZ3Jlc3NCYXIiPgorICAgICAgICAJPCFbQ0RBVEFbCisgICAgICAgIAkKKyAgICAgICAgCSAgIHZhciBmbHZUaW1lID0gdGhpcy5fY29udGVudC5fdmlkZW9zdHJlYW0uZ2V0VGltZSgpOworICAgICAgICAJICAgCisgICAgICAgIAkgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZmx2VGltZSA6Y2FsY1Byb2dyZXNzQmFyOiAiLGZsdlRpbWUpOworICAgICAgICAJICAgcGFyZW50Ll9yZWNvcmRpbmdzVmlld0JvdHRvbS5zaG93UHJvZ3Jlc3MoZmx2VGltZSk7CisgICAgICAgIAkgICAKKyAgICAgICAgCSAgIHRoaXMuX3Byb2dyZXNzLl9wcm9ncmVzc2Jhci5fcG9pbnRlci5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgIAkgICAKKyAgICAgICAgCSAgIHZhciB0U3RyaW5nID0gIiI7CisgICAgICAgIAkgICAKKyAgICAgICAgCSAgIGlmIChmbHZUaW1lID4gNjApIHsKKyAgICAgICAgCSAgIAkKKyAgICAgICAgCSAgIAkgICB2YXIgbWludXRlcyA9IE1hdGguZmxvb3IoZmx2VGltZS82MCk7CisgICAgICAgIAkgICAJICAgCisgICAgICAgIAkgICAJICAgdmFyIHJlc3RTZWNvbmRzID0gTWF0aC5yb3VuZChmbHZUaW1lKSAtICggbWludXRlcyAqIDYwICk7CisgICAgICAgIAkgICAJICAgCisgICAgICAgIAkgICAJICAgdFN0cmluZyA9IG1pbnV0ZXMgKyAiIG1pbiAiICsgcmVzdFNlY29uZHMgKyAiIHNlYyI7CisgICAgICAgIAkgICAJCisgICAgICAgIAkgICB9IGVsc2UgeworICAgICAgICAJICAgCQorICAgICAgICAJICAgCSAgIHRTdHJpbmcgPSBNYXRoLnJvdW5kKGZsdlRpbWUpICsgIiBzZWMiOworICAgICAgICAJICAgCisgICAgICAgIAkgICB9CisgICAgICAgIAkgICAKKyAgICAgICAgCSAgIHRoaXMuX3Byb2dyZXNzLl9wcm9ncmVzc2Jhci5fdGltZS5zZXRBdHRyaWJ1dGUoInRleHQiLHRTdHJpbmcpOworICAgICAgICAJICAgCisgICAgICAgIAkgICB2YXIgdE5ld1ggPSBNYXRoLnJvdW5kKCh0aGlzLl9wcm9ncmVzcy5fcHJvZ3Jlc3NiYXIud2lkdGggLyB0aGlzLmRlbHRhSW5TZWNvbmRzKSAqIGZsdlRpbWUpOworICAgICAgICAJCisgICAgICAgIAkgICB0aGlzLl9wcm9ncmVzcy5fcHJvZ3Jlc3NiYXIuX3BvaW50ZXIuc2V0QXR0cmlidXRlKCJ4Iix0TmV3WCk7CisgICAgICAgIAkgICAKKyAgICAgICAgCV1dPgorICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgCisgICAgICAgIDxtZXRob2QgbmFtZT0ic3RhcnRTdHJlYW0iPgorICAgICAgICAJCisgICAgICAgIAlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic3RhcnRTdHJlYW0gIix0aGlzLnJlY29yZGluZ05hbWUpOworICAgICAgICAJCisgICAgICAgIAlpZiAodGhpcy5yZWNvcmRpbmdOYW1lICE9ICIiKSB7CisgICAgICAgIAkJCisgICAgICAgIAkJdGhpcy5pc1BhdXNlZCA9IGZhbHNlOworICAgICAgICAJCQorICAgICAgICAJCWlmICghdGhpcy50aW1lckRlbGVnYXRlU3RhcnRlZCkgeworICAgICAgICAJCQl0aGlzLnRpbWVyRGVsZWdhdGVTdGFydGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAJdGhpcy5fY29udGVudC5fdmlkZW9zdHJlYW0uYnJpbmdUb0Zyb250KCk7CisgICAgICAgICAgICAgICAgdGhpcy5fY29udGVudC5fdmlkZW9zdHJlYW0ucGxheVN0cmVhbSh0aGlzLnJlY29yZGluZ05hbWUsMCk7CisgICAgICAgIAl9CisgICAgICAgIDwvbWV0aG9kPgorICAgICAgICAKKyAgICAgICAgPG1ldGhvZCBuYW1lPSJ0b2dnbGVTdHJlYW0iPgorICAgICAgICAJaWYgKHRoaXMudGltZXJEZWxlZ2F0ZVN0YXJ0ZWQpIHsKKyAgICAgICAgCQl0aGlzLnBhdXNlU3RyZWFtKCk7CisgICAgICAgIAl9IGVsc2UgeworICAgICAgICAJCXRoaXMuc3RhcnRTdHJlYW0oKTsKKyAgICAgICAgCX0KKyAgICAgICAgPC9tZXRob2Q+CisgICAgICAgIAorICAgICAgICA8bWV0aG9kIG5hbWU9InBhdXNlU3RyZWFtIj4KKyAgICAgICAgCXRoaXMuaXNQYXVzZWQgPSAhdGhpcy5pc1BhdXNlZDsKKyAgICAgICAgCXRoaXMuX2NvbnRlbnQuX3ZpZGVvc3RyZWFtLnBhdXNlKHRoaXMuaXNQYXVzZWQpOworICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgCisgICAgICAgIDxtZXRob2QgbmFtZT0ic2Vla1N0cmVhbSIgYXJncz0ibmV3WCI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgCQorICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzZWVrU3RyZWFtICIsbmV3WCk7CisgICAgICAgIAkKKyAgICAgICAgICAgICAgICBpZiAodGhpcy50aW1lckRlbGVnYXRlU3RhcnRlZCkgeworICAgICAgICAJICAgCQorICAgICAgICAgICAgICAgICAgICB2YXIgZmx2VGltZSA9IE1hdGgucm91bmQoIG5ld1ggLyAodGhpcy5fcHJvZ3Jlc3MuX3Byb2dyZXNzYmFyLndpZHRoIC8gdGhpcy5kZWx0YUluU2Vjb25kcykgKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzZWVrU3RyZWFtIDo6IHRoaXMuZGVsdGFJblNlY29uZHMgIix0aGlzLmRlbHRhSW5TZWNvbmRzKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzZWVrU3RyZWFtIDo6IGZsdlRpbWUgIixmbHZUaW1lKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIHRoaXMuX2NvbnRlbnQuX3ZpZGVvc3RyZWFtLnNlZWsoZmx2VGltZSk7CisgICAgICAgIAkgICAJCisgICAgICAgICAgICAgICAgfQorICAgICAgICAJCisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9tZXRob2Q+CisgICAgICAgIAorICAgICAgICA8bWV0aG9kIG5hbWU9InN0b3BTdHJlYW1BbmRDbG9zZVJlY29yZGVyIj4KKyAgICAgICAgCXRoaXMuX3N0b3BTdHJlYW0oKTsKKyAgICAgICAgICAgIHRoaXMuX2NvbnRlbnQuX3ZpZGVvc3RyZWFtLnN0b3BBbmRDbG9zZUNvbm5lY3Rpb24oKTsKKyAgICAgICAgPC9tZXRob2Q+CisgICAgICAgIAorICAgICAgICA8bWV0aG9kIG5hbWU9InN0b3BTdHJlYW0iPgorICAgICAgICAgICAgdGhpcy5fc3RvcFN0cmVhbSgpOworICAgICAgICAgICAgdGhpcy5fY29udGVudC5fdmlkZW9zdHJlYW0uc3RvcCgpOworICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgCisgICAgICAgIDwhLS0tCisgICAgICAgICAgICBAa2V5d29yZHMgcHJpdmF0ZQorICAgICAgICAgLS0+CisgICAgICAgIDxtZXRob2QgbmFtZT0iX3N0b3BTdHJlYW0iPgorICAgICAgICAJaWYgKHRoaXMudGltZXJEZWxlZ2F0ZVN0YXJ0ZWQpIHsKKyAgICAgICAgICAgICAgICB0aGlzLnRpbWVyRGVsZWdhdGVTdGFydGVkID0gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgIAlwYXJlbnQuX3JlY29yZGluZ3NWaWV3Qm90dG9tLnN0b3BQcm9ncmVzcygpOworICAgICAgICAgICAgdGhpcy5fcHJvZ3Jlc3MuX3Byb2dyZXNzYmFyLl90aW1lLnNldEF0dHJpYnV0ZSgidGV4dCIsIiIpOworICAgICAgICAgICAgdGhpcy5fcHJvZ3Jlc3MuX3Byb2dyZXNzYmFyLl9wb2ludGVyLnNldEF0dHJpYnV0ZSgieCIsMCk7CisgICAgICAgIDwvbWV0aG9kPgorICAgICAgICAKKyAgICAgICAgPHZpZXcgbmFtZT0iX2NvbnRlbnQiIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodC0yMi0xOCB9IiB5PSIyMiI+CisgICAgICAgIAkKKyAgICAJICAgIDxhdHRyaWJ1dGUgbmFtZT0iaW5pdEgiIHZhbHVlPSI0ODAiIHR5cGU9Im51bWJlciIgLz4KKyAgICAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iaW5pdFciIHZhbHVlPSI2NDAiIHR5cGU9Im51bWJlciIgLz4KKyAgICAKKyAgICAJICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgICAgIHZhciBwcm9wMiA9IFt0aGlzLCAiaGVpZ2h0Il07CisgICAgICAgICAgICAgICAgICAgIHRoaXMuYXBwbHlDb25zdHJhaW50TWV0aG9kKCJzZXRJdGVtQ29udHJhaW50cyIsIHByb3AyKTsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRJdGVtQ29udHJhaW50cygwKTsKKyAgICAgICAgICAgICAgICBdXT4KKyAgICAgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPG1ldGhvZCBuYW1lPSJzZXRJdGVtQ29udHJhaW50cyIgYXJncz0idyI+CisgICAgICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgICAgIHZhciB3ID0gdGhpcy5oZWlnaHQgKiB0aGlzLmluaXRXL3RoaXMuaW5pdEg7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJ3aWR0aCIsdyk7CisgICAgICAgICAgICAgICAgXV0+CisgICAgICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPHZpZXcgbmFtZT0iX3ByZXZpZXciIHdpZHRoPSIke3BhcmVudC53aWR0aH0iIGhlaWdodD0iJHtwYXJlbnQuaGVpZ2h0fSIgYmdjb2xvcj0iMHgwMDAwMDAiPgorICAgICAgICAgICAgCTxpbWFnZSBuYW1lPSJpbWFnZVByZXZpZXciIHN0cmV0Y2hlcz0iYm90aCIKKyAgICAgICAgICAgIAkJICAgd2lkdGg9IiR7cGFyZW50LndpZHRofSIgaGVpZ2h0PSIke3BhcmVudC5oZWlnaHR9IiAvPgorICAgICAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgICAgIAlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib25jbGljayAtLSB0b2dnbGVTdHJlYW0iKTsKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50LnBhcmVudC50b2dnbGVTdHJlYW0oKTsKKyAgICAgICAgICAgICAgICA8L2hhbmRsZXI+CQkgICAKKyAgICAgICAgICAgICAgICA8dmlldyB3aWR0aD0iNjAiIGhlaWdodD0iNDAiIHZhbGlnbj0ibWlkZGxlIiBvcGFjaXR5PSIwLjciCisgICAgICAgICAgICAgICAgCSAgYWxpZ249ImNlbnRlciIgYmdjb2xvcj0iMHhGRkZGRkYiPgorICAgICAgICAgICAgICAgIAk8dmlldyByZXNvdXJjZT0ibHpfcmVjb3JkZXJfcGxheSIgdmFsaWduPSJtaWRkbGUiIGFsaWduPSJjZW50ZXIiIC8+CisgICAgICAgICAgICAgICAgPC92aWV3PgorICAgICAgICAgICAgPC92aWV3PgorICAgICAgICAgICAgCisgICAgICAgICAgICA8bHpSZWNvcmRpbmdzVmlld0FkYXB0ZXIgbmFtZT0iX3ZpZGVvc3RyZWFtIiB3aWR0aD0iJHtwYXJlbnQud2lkdGh9IiBoZWlnaHQ9IiR7cGFyZW50LmhlaWdodH0iPgorICAgICAgICAgICAgCQorICAgICAgICAgICAgCTxoYW5kbGVyIG5hbWU9Im9ud2lkdGgiIGFyZ3M9InciPgorICAgICAgICAgICAgCQl0aGlzLnVwZGF0ZVJlY29yZGluZ1ZpZGVvUG9zaXRpb24oKTsKKyAgICAgICAgICAgIAk8L2hhbmRsZXI+CisgICAgICAgICAgICAJCisgICAgICAgICAgICAJPGhhbmRsZXIgbmFtZT0ib25oZWlnaHQiIGFyZ3M9ImgiPgorICAgICAgICAgICAgCQl0aGlzLnVwZGF0ZVJlY29yZGluZ1ZpZGVvUG9zaXRpb24oKTsKKyAgICAgICAgICAgIAk8L2hhbmRsZXI+CisgICAgICAgICAgICAJCisgICAgICAgICAgICAJPGhhbmRsZXIgbmFtZT0ib25VcGRhdGVSZWNvcmRpbmdTdHJlYW1UaW1lIj4KKyAgICAgICAgICAgIAkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9uVXBkYXRlUmVjb3JkaW5nU3RyZWFtVGltZSAiKTsKKyAgICAgICAgICAgIAkJcGFyZW50LnBhcmVudC5jYWxjUHJvZ3Jlc3NCYXIoKTsKKyAgICAgICAgICAgIAk8L2hhbmRsZXI+CisgICAgICAgICAgICAJCisgICAgICAgICAgICAJPGhhbmRsZXIgbmFtZT0ib25Ub2dnbGVQbGF5UmVjb3JkaW5nU3RyZWFtIj4KKyAgICAgICAgICAgIAkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9uVG9nZ2xlUGxheVJlY29yZGluZ1N0cmVhbSAiKTsKKyAgICAgICAgICAgIAkJcGFyZW50LnBhcmVudC50b2dnbGVTdHJlYW0oKTsKKyAgICAgICAgICAgIAk8L2hhbmRsZXI+CisgICAgICAgICAgICAJCisgICAgICAgICAgICAJPGhhbmRsZXIgbmFtZT0ib25SZWNvcmRpbmdTdG9wcGVkQW5kRGlzY29ubmVjdGVkIj4KKyAgICAgICAgICAgIAkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9uUmVjb3JkaW5nU3RvcHBlZEFuZERpc2Nvbm5lY3RlZCAiKTsKKyAgICAgICAgICAgIAkJcGFyZW50LnBhcmVudC5vblJlY29yZGluZ1N0b3BwZWRBbmREaXNjb25uZWN0ZWQuc2VuZEV2ZW50KCk7CisgICAgICAgICAgICAJPC9oYW5kbGVyPgorICAgICAgICAgICAgCQorICAgICAgICAgICAgPC9selJlY29yZGluZ3NWaWV3QWRhcHRlcj4KKyAgICAgICAgICAgIAorICAgICAgICA8L3ZpZXc+CisgICAgICAgIAorICAgICAgICA8dmlldyBuYW1lPSJfcHJvZ3Jlc3MiIGhlaWdodD0iMTgiIHZhbGlnbj0iYm90dG9tIiB3aWR0aD0iJHsgcGFyZW50LndpZHRoIH0iCisgICAgICAgIAkgICAgICAgICAgICAgICAgICAgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdiYXNlYmdjb2xvcml6ZXInKSB9Ij4KKyAgICAgICAgCQorICAgICAgICAJPHZpZXcgcmVzb3VyY2U9ImZsdl9yZWNvcmRlcl9wbGF5X3NtYWxsX3JzYyIgeT0iMSIgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IgorICAgICAgICAJCSAgICAgIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignYmFzZU1vdXNlT3ZlcmNvbG9yaXplcicpIH0iPgorICAgICAgICAJCTxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdmVyIj4KKyAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoImJnY29sb3IiLDB4RkZGRkZGKTsKKyAgICAgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZW91dCI+CisgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJiZ2NvbG9yIixjYW52YXMuZ2V0VGhlbWVDb2xvcignYmFzZU1vdXNlT3ZlcmNvbG9yaXplcicpKTsKKyAgICAgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIAkJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgIAkJCXBhcmVudC5wYXJlbnQuc3RhcnRTdHJlYW0oKTsKKyAgICAgICAgCQk8L2hhbmRsZXI+CisgICAgICAgIAkJPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSI4NzUiIC8+CisgICAgICAgIAk8L3ZpZXc+CisgICAgICAgIAkKKyAgICAgICAgCTx2aWV3IG5hbWU9Il9wcm9ncmVzc2JhciIgeD0iMTYiIHdpZHRoPSIkeyBwYXJlbnQud2lkdGggLSAzMiB9IiB5PSIxIiAKKyAgICAgICAgCQkgIGhlaWdodD0iMTYiIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignYmFzZU1vdXNlT3ZlcmNvbG9yaXplcicpIH0iPgorICAgICAgICAJCQorICAgICAgICAJCTx2aWV3IHg9IjAiIHdpZHRoPSIkeyBwYXJlbnQud2lkdGggfSIgeT0iMCIgaGVpZ2h0PSIxNiIgYmdjb2xvcj0iMHhGRkZGRkYiIG9wYWNpdHk9IjAuNSIgLz4gCisgICAgICAgIAkJCisgICAgICAgIAkJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgIAkJCXBhcmVudC5wYXJlbnQuc2Vla1N0cmVhbSh0aGlzLmdldE1vdXNlKCJ4IikpOworICAgICAgICAJCTwvaGFuZGxlcj4KKyAgICAgICAgCQkKKyAgICAgICAgCQk8dmlldyBuYW1lPSJfcG9pbnRlciIgcmVzb3VyY2U9ImZsdl9wcm9ncmVzc19wb2ludGVyX3JzYyIgdmlzaWJpbGl0eT0iaGlkZGVuIiAvPgorICAgICAgICAJCQorICAgICAgICAJCTx0ZXh0IG5hbWU9Il90aW1lIiByZXNpemU9InRydWUiIGZvbnRzaXplPSIxMCIgLz4KKyAgICAgICAgCQkKKyAgICAgICAgCQk8dGV4dCBuYW1lPSJfZHVyYXRpb24iIGFsaWduPSJyaWdodCIgcmVzaXplPSJ0cnVlIiBmb250c2l6ZT0iMTAiIC8+CisgICAgICAgIAkJCisgICAgICAgIAk8L3ZpZXc+CisgICAgICAgIAkKKyAgICAgICAgCTx2aWV3IHJlc291cmNlPSJmbHZfcmVjb3JkZXJfc3RvcF9zbWFsbF9yc2MiIGFsaWduPSJyaWdodCIgeT0iMSIgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IgorICAgICAgICAJCSAgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdiYXNlTW91c2VPdmVyY29sb3JpemVyJykgfSI+CisgICAgICAgIAkJPGhhbmRsZXIgbmFtZT0ib25tb3VzZW92ZXIiPgorICAgICAgICAJCQl0aGlzLnNldEF0dHJpYnV0ZSgiYmdjb2xvciIsMHhGRkZGRkYpOworICAgICAgICAJCTwvaGFuZGxlcj4KKyAgICAgICAgCQk8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3V0Ij4KKyAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoImJnY29sb3IiLGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdiYXNlTW91c2VPdmVyY29sb3JpemVyJykpOworICAgICAgICAgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgICAgICAgICAgcGFyZW50LnBhcmVudC5zdG9wU3RyZWFtKCk7CisgICAgICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAgICAgICAgIDxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iODc2IiAvPgorICAgICAgICAgICAgPC92aWV3PgorICAgICAgICAJCisgICAgICAgIDwvdmlldz4KKyAgICAgICAgCis8L2NsYXNzPgorCisKKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9senJlY29yZGNvbnRlbnQvZHJhZ0l0ZW1GTFZFeHBsb3Jlci5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6cmVjb3JkY29udGVudC9kcmFnSXRlbUZMVkV4cGxvcmVyLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOWNlOTFiCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9senJlY29yZGNvbnRlbnQvZHJhZ0l0ZW1GTFZFeHBsb3Jlci5sengKQEAgLTAsMCArMSwxODUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzxjbGFzcyBuYW1lPSJkcmFnSXRlbUZMVkV4cGxvcmVyIiBleHRlbmRzPSJ2aWV3Ij4KKwkKKwk8YXR0cmlidXRlIG5hbWU9InJlZk9iaiIgdmFsdWU9Im51bGwiLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9ImRyYWdJdGVtUmVzb3VyY2UiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0ib3Zlckl0ZW0iIHZhbHVlPSJudWxsIi8+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJhbHJlYWR5U2VudCIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorCQorCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisJCWx6LlRyYWNrLmFjdGl2YXRlKGNhbnZhcy5jdXJyZW50SW1hZ2VzTGlzdGRyYXcuY3VycmVudFRyYWNrR3JvdXBOYW1lKTsKKwkJY2FudmFzLmN1cnJlbnRJbWFnZXNMaXN0ZHJhdy5jdXJyZW50RHJhZ0l0ZW0gPSB0aGlzOworCQlsei5DdXJzb3Iuc2hvd0hhbmRDdXJzb3IoZmFsc2UpOworCQlsei5Nb2RlTWFuYWdlci5nbG9iYWxMb2NrTW91c2VFdmVudHMoKTsKKwkJdGhpcy5kcmFnZ2VyLmFwcGx5KCk7CisJPC9oYW5kbGVyPgorCQorCTxtZXRob2QgbmFtZT0ic2VuZE92ZXJJdGVtIiBhcmdzPSJpdGVtUmVmIj4KKwkJPCFbQ0RBVEFbCisgICAgCQlpZiAodGhpcy5yZWZPYmogIT0gaXRlbVJlZikgeworICAgIAkJCQorICAgIAkJCWlmICh0aGlzLnJlZk9iai5pc0ZvbGRlcikgeworICAgIAkJCQlpZiAoIWl0ZW1SZWYuaXNUcmFzaENhbiAmJiAhaXRlbVJlZi5pc0ZvbGRlcikgeworICAgIAkJCQkJLy9ObyBGb2xkZXJzIHRvIHRoZSB3aGl0ZWJvYXJkIHBsZWFzZQorICAgIAkJCQkJcmV0dXJuOworICAgIAkJCQl9CisgICAgCQkJfQorICAgIAkJCQorICAgICAgICAJCXRoaXMub3Zlckl0ZW0gPSBpdGVtUmVmOworICAgICAgICAJCXRoaXMuX2RyYWdJY29uLnNldEF0dHJpYnV0ZSgiZnJhbWUiLDIpOworICAgIAkJfQorCQldXT4KKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9InNlbmRPdXRJdGVtIiBhcmdzPSJpdGVtUmVmIj4KKyAgICAgICAgdGhpcy5vdmVySXRlbSA9IG51bGw7CisgICAgICAgIHRoaXMuX2RyYWdJY29uLnNldEF0dHJpYnV0ZSgiZnJhbWUiLDEpOworICAgIDwvbWV0aG9kPgorCQorCTxoYW5kbGVyIG5hbWU9Im9ubW91c2V1cCIgcmVmZXJlbmNlPSJsei5HbG9iYWxNb3VzZSIgYXJncz0id2hvIj4KKyAgICAgICAgdGhpcy5jbG9zZSgpOworICAgIDwvaGFuZGxlcj4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImNsb3NlIj4KKyAgICAJLy9UaGlzIGNhbiBoYXBwZW4gd2hlbiB0aGUgY29uZmlybWF0aW9uIHBvcHMgdXAKKyAgICAJaWYgKHRoaXMuYWxyZWFkeVNlbnQpIHsKKyAgICAJCXJldHVybjsKKyAgICAJfQorICAgIAl0aGlzLmFscmVhZHlTZW50ID0gdHJ1ZTsKKyAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImNsb3NlIERyYWcgSXRlbSIpOworICAgIAlsei5DdXJzb3Iuc2hvd0hhbmRDdXJzb3IodHJ1ZSk7CisgICAgCWx6LlRyYWNrLmRlYWN0aXZhdGUoY2FudmFzLmN1cnJlbnRJbWFnZXNMaXN0ZHJhdy5jdXJyZW50VHJhY2tHcm91cE5hbWUpOworICAgIAlsei5Nb2RlTWFuYWdlci5nbG9iYWxVbmxvY2tNb3VzZUV2ZW50cygpOworICAgIAljYW52YXMuY3VycmVudEltYWdlc0xpc3RkcmF3LmN1cnJlbnREcmFnSXRlbSA9IG51bGw7CisgICAgCXRoaXMuZHJhZ2dlci5yZW1vdmUoKTsKKyAgICAJCisgICAgCWlmICh0aGlzLm92ZXJJdGVtICE9IG51bGwpIHsKKyAgICAJCQorICAgIAkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInRoaXMub3Zlckl0ZW0gIix0aGlzLm92ZXJJdGVtKTsKKyAgICAJCQorICAgIAkJaWYgKHRoaXMub3Zlckl0ZW0uaXNUcmFzaENhbikgeworICAgIAkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJTRU5EIFRPIEdBUkJBR0UiKTsKKyAgICAJCQl0aGlzLmRlbGV0ZUZMVk9yRm9sZGVyLmZpbGVFeHBsb3Jlckl0ZW1JZCA9IHRoaXMucmVmT2JqLmZpbGVFeHBsb3Jlckl0ZW1JZDsKKyAgICAJCQluZXcgbHouY29uZmlybWF0aW9uU2luZ2xlKGNhbnZhcyx7CisgICAgICAgICAgICAJCQkgICByZWZPYmo6dGhpcywKKyAgICAgICAgICAgIAkJCSAgIGxhYmVsaWQ6NzEwLAorICAgICAgICAgICAgCQkJICAgbGFiZWxpZGVycm9yOjcxMywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dDaGVja0JveDpmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZlJldHVybk1ldGhvZDoic2VuZENvbmZpcm1hdGlvbiIKKyAgICAgICAgICAgIAkJCX0pOworICAgIAkJfSBlbHNlIGlmICh0aGlzLm92ZXJJdGVtLmlzRm9sZGVyKXsKKyAgICAJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiTU9WRSBJVEVNIix0aGlzLnJlZk9iai5maWxlRXhwbG9yZXJJdGVtSWQpOworICAgIAkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJNT1ZFIFRPIFBBUkVOVCIsdGhpcy5vdmVySXRlbS5maWxlRXhwbG9yZXJJdGVtSWQpOworICAgIAkJCXRoaXMubW92ZUZpbGUuZmlsZUV4cGxvcmVySXRlbUlkID0gdGhpcy5yZWZPYmouZmlsZUV4cGxvcmVySXRlbUlkOworICAgIAkJCXRoaXMubW92ZUZpbGUubmV3UGFyZW50RmlsZUV4cGxvcmVySXRlbUlkID0gdGhpcy5vdmVySXRlbS5maWxlRXhwbG9yZXJJdGVtSWQ7CisgICAgCQkJaWYgKHRoaXMub3Zlckl0ZW0uZmlsZUV4cGxvcmVySXRlbUlkID09IDApIHsKKyAgICAJCQkgICAgdGhpcy5tb3ZlRmlsZS5pc093bmVyID0gdGhpcy5vdmVySXRlbS5pc093bmVyOworICAgIAkJCX0KKyAgICAJCQkKKyAgICAJCQkvL2NoZWNrIGlmIHRoaXMgaXMgYSBob21lIGZvbGRlciBvciBub3QKKyAgICAgICAgICAgICAgICB2YXIgY2hlY2tGb3JPd2VyID0gdGhpcy5vdmVySXRlbS5jaGVja0ZvcklzT3duZXIoKTsKKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiY2hlY2tGb3JPd2VyIDo6IixjaGVja0Zvck93ZXIpOworICAgICAgICAgICAgICAgIHRoaXMubW92ZUZpbGUubW92ZVRvSG9tZSA9IGNoZWNrRm9yT3dlcjsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvL2NoZWNrIHRoYXQgdGhlIGZpbGUgaXMgbm90IG1vdmVkIGluc2lkZSBpdHNlbGYKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5vdmVySXRlbS5jaGVja0ZvcklzQ2hpbGQodGhpcy5yZWZPYmouZmlsZUV4cGxvcmVySXRlbUlkKSkgeworICAgICAgICAgICAgICAgICAgICBuZXcgbHoubGFiZWxlcnJvclBvcHVwKGNhbnZhcyx7ZXJyb3JsYWJlbGlkOjkyMn0pOworICAgICAgICAgICAgICAgICAgICB0aGlzLmRlc3Ryb3koKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAKKyAgICAJCQl0aGlzLm1vdmVGaWxlLmRvQ2FsbCgpOworICAgIAkJfSBlbHNlIHsKKyAgICAJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53YXJuKCJEcmFnIHRvIHdoaXRlYm9hcmQgISEhICIpOworICAgIAkJCWlmICh0aGlzLnJlZk9iai5pc1ByZXNlbnRhdGlvbikgeworICAgIAkJCSAgICB0aGlzLnJlZk9iai5sb2FkRG9jdW1lbnRUb1doaXRlYm9hcmQoKTsKKyAgICAJCQl9IGVsc2UgaWYgKHRoaXMucmVmT2JqLmlzSW1hZ2UpIHsKKyAgICAJCQkJdGhpcy5yZWZPYmoubG9hZEltYWdlVG9XaGl0ZWJvYXJkKCk7CisgICAgCQkJfSBlbHNlIHsKKyAgICAJCQkJaWYgKCRkZWJ1ZykgRGVidWcud2FybigiU2hvdWxkIG5ldmVyIGhhcHBlbiBkcmFnSXRlbUZpbGVFeHBsb3JlciB1bmhhbmRsZWQgY2FzZSIpOworICAgIAkJCX0KKyAgICAJCQl0aGlzLmRlc3Ryb3koKTsKKyAgICAJCX0KKyAgICAJfSBlbHNlIHsKKyAgICAJCXRoaXMuZGVzdHJveSgpOworICAgIAl9CisgICAgCQorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0ic2VuZENvbmZpcm1hdGlvbiIgYXJncz0iYm9vbCxhc2tBZ2FpbiI+CisgICAgCWlmIChib29sKSB7CisgICAgCQl0aGlzLmRlbGV0ZUZMVk9yRm9sZGVyLmRvQ2FsbCgpOworICAgIAl9IGVsc2UgeworICAgIAkJdGhpcy5kZXN0cm95KCk7CisgICAgCX0KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJkZWxldGVGTFZPckZvbGRlciIgZnVuY25hbWU9ImZsdnJlY29yZGVyc2VydmljZS5kZWxldGVGTFZPckZvbGRlciIgCisgICAgICAgIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiA+IAorICAgICAgICAKKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJmaWxlRXhwbG9yZXJJdGVtSWQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisgICAgICAgIAorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQuZmlsZUV4cGxvcmVySXRlbUlkOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPiAgICAKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJkZWxldGVGaWxlT3JGb2xkZXI6ICIsdmFsdWUpOworICAgICAgICAgICAgcGFyZW50LnJlZk9iai5wYXJlbnQucGFyZW50LmRvT3BlbigpOworICAgICAgICAgICAgcGFyZW50LmRlc3Ryb3koKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4gCisgICAgCisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0ibW92ZUZpbGUiIGZ1bmNuYW1lPSJmbHZyZWNvcmRlcnNlcnZpY2UubW92ZUZpbGUiIAorICAgICAgICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAKKyAgICAgICAgCisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iZmlsZUV4cGxvcmVySXRlbUlkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgICAgICA8YXR0cmlidXRlIG5hbWU9Im5ld1BhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJpc093bmVyIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgICAgIAorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQuZmlsZUV4cGxvcmVySXRlbUlkOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50Lm5ld1BhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZDs8L21ldGhvZD48L25ldHBhcmFtPiAgCisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LmlzT3duZXI7PC9tZXRob2Q+PC9uZXRwYXJhbT4gIAorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5tb3ZlVG9Ib21lOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4gICAgCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgibW92ZUZpbGU6ICIsdmFsdWUpOworICAgICAgICAgICAgcGFyZW50Lm92ZXJJdGVtLmRvT3BlbigpOworICAgICAgICAgICAgcGFyZW50LnJlZk9iai5wYXJlbnQucGFyZW50LmRvT3BlbigpOworICAgICAgICAgICAgcGFyZW50LmRlc3Ryb3koKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4gICAgIAorICAgCisJPHZpZXcgbmFtZT0iX2RyYWdGaWxlU3ltYm9sIiB4PSIxMCIgeT0iMTAiCisJCXJlc291cmNlPSIkb25jZXsgcGFyZW50LmRyYWdJdGVtUmVzb3VyY2UgfSIgLz4KKwkKKwk8dmlldyBuYW1lPSJfZHJhZ0ljb24iIHg9IjE4IiB5PSIxNCIgCisJCSAgcmVzb3VyY2U9ImRyYWdfbl9kcm9wX3JzYyIgZnJhbWU9IjEiIC8+CisJCisJPGRyYWdzdGF0ZSBuYW1lPSJkcmFnZ2VyIi8+Cis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6cmVjb3JkY29udGVudC9keW5hbWljRkxWTmFtZS5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6cmVjb3JkY29udGVudC9keW5hbWljRkxWTmFtZS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDk0YjQ3ZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L2R5bmFtaWNGTFZOYW1lLmx6eApAQCAtMCwwICsxLDkyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8Y2xhc3MgbmFtZT0iZHluYW1pY0ZMVk5hbWUiIGV4dGVuZHM9ImN1c3RvbUlucHV0dGV4dCIgCisJICAgZm9udHNpemU9IjEwIiBiZ2NvbG9yPSIweEZGRkZGRiI+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJpc05ldyIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorCQorCTwhLS0gT25seSB1c2VkIGluIGNhc2UgaXRzIGFuIHVwZGF0ZSAtLT4KKwk8YXR0cmlidXRlIG5hbWU9ImZpbGVFeHBsb3Jlckl0ZW1JZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9InBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKwk8YXR0cmlidXRlIG5hbWU9ImlzT3duZXIiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9InJlZk9iaiIgdmFsdWU9Im51bGwiIC8+CisJCisJPGhhbmRsZXIgbmFtZT0ib25ibHVyIj4KKwkJbHouTW9kZU1hbmFnZXIucmVsZWFzZSh0aGlzKTsKKwkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIlN0b3JlIGFuZCBEZXN0cm95ICIsdGhpcy5wYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQpOworCQlpZiAodGhpcy5pc05ldykgeworCQkgICAgdGhpcy5hZGRGb2xkZXIuZG9DYWxsKCk7CisJCX0gZWxzZSB7CisJCQl0aGlzLnVwZGF0ZUZpbGVPckZvbGRlck5hbWUuZG9DYWxsKCk7CisJCX0KKwk8L2hhbmRsZXI+CisJCisJPGhhbmRsZXIgbmFtZT0ib25rZXlkb3duIiBhcmdzPSJrIj4KKwkJPCFbQ0RBVEFbCisgICAgCQlpZiAoayA9PSAxMyB8fCBrID09IDI3KSB7CisgICAgCQkJdGhpcy5vbmJsdXIuc2VuZEV2ZW50KCk7CisgICAgCQl9CisJCV1dPgorCTwvaGFuZGxlcj4KKwkKKwk8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJhZGRGb2xkZXIiIGZ1bmNuYW1lPSJmbHZyZWNvcmRlcnNlcnZpY2UuYWRkRm9sZGVyIiAKKyAgICAgICAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gICAKKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBjYW52YXMuc2Vzc2lvbklkOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC5wYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4gCisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC50ZXh0OzwvbWV0aG9kPjwvbmV0cGFyYW0+ICAgCisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC5pc093bmVyOzwvbWV0aG9kPjwvbmV0cGFyYW0+ICAgIAorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGhpYi5jdXJyZW50ZG9tYWluT2JqLm9yZ2FuaXNhdGlvbl9pZDs8L21ldGhvZD48L25ldHBhcmFtPiAgICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+ICAgIAorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImFkZEZvbGRlcjogIix2YWx1ZSk7CisgICAgICAgICAgICBwYXJlbnQuY29tcGxldGVkKHZhbHVlKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4gIAorCQorCTxuZXRSZW1vdGVDYWxsSGliIG5hbWU9InVwZGF0ZUZpbGVPckZvbGRlck5hbWUiIGZ1bmNuYW1lPSJmbHZyZWNvcmRlcnNlcnZpY2UudXBkYXRlRmlsZU9yRm9sZGVyTmFtZSIgCisgICAgICAgIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiA+ICAgCisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gY2FudmFzLnNlc3Npb25JZDs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQuZmlsZUV4cGxvcmVySXRlbUlkOzwvbWV0aG9kPjwvbmV0cGFyYW0+IAorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQudGV4dDs8L21ldGhvZD48L25ldHBhcmFtPiAgIAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4gICAgCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidXBkYXRlRmlsZU9yRm9sZGVyTmFtZTogIixwYXJlbnQuZmlsZUV4cGxvcmVySXRlbUlkKTsKKyAgICAgICAgICAgIHBhcmVudC5jb21wbGV0ZWRSZW5hbWUoKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4KKyAgICAKKwk8bWV0aG9kIG5hbWU9ImNvbXBsZXRlZCIgYXJncz0iZmlsZUV4cGxvcmVySXRlbUlkIj4KKwkJdGhpcy5yZWZPYmouZmlsZUV4cGxvcmVySXRlbUlkID0gZmlsZUV4cGxvcmVySXRlbUlkOworCQl0aGlzLnJlZk9iai5zZXRBdHRyaWJ1dGUoImZpbGVOYW1lIix0aGlzLmdldFRleHQoKSk7CisJCXRoaXMucmVmT2JqLnBhcmVudC5wYXJlbnQuZG9PcGVuKCk7CisJCXRoaXMuZGVzdHJveSgpOworCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0iY29tcGxldGVkUmVuYW1lIj4KKwkJdGhpcy5yZWZPYmouc2V0QXR0cmlidXRlKCJmaWxlTmFtZSIsdGhpcy5nZXRUZXh0KCkpOworCQl0aGlzLmRlc3Ryb3koKTsKKwk8L21ldGhvZD4KKwkKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L2xpYnJhcnkubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9senJlY29yZGNvbnRlbnQvbGlicmFyeS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQ1OGZjMgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L2xpYnJhcnkubHp4CkBAIC0wLDAgKzEsNTQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisJCisJPCEtLSBBUEwgYXV0aG9yIHNlYmF3YWduZXIgLS0+CisgICAgPHJlc291cmNlIG5hbWU9ImZsdl9yZWNvcmRlcl9wbGF5X3JzYyIgc3JjPSJyZXNvdXJjZXMvd2Vic3RhcnRfcGxheS5wbmciIC8+CisgICAgPCEtLSBBUEwgYXV0aG9yIHNlYmF3YWduZXIgLS0+CisgICAgPHJlc291cmNlIG5hbWU9ImZsdl9yZWNvcmRlcl9wbGF5X3NtYWxsX3JzYyIgc3JjPSJyZXNvdXJjZXMvd2Vic3RhcnRfcGxheV9zbWFsbC5wbmciIC8+CisgICAgPCEtLSBBUEwgYXV0aG9yIHNlYmF3YWduZXIgLS0+CisgICAgPHJlc291cmNlIG5hbWU9ImZsdl9yZWNvcmRlcl9zdG9wX3NtYWxsX3JzYyIgc3JjPSJyZXNvdXJjZXMvd2Vic3RhcnRfc3RvcF9zbWFsbC5wbmciIC8+CisgICAgPHJlc291cmNlIG5hbWU9ImZsdl9wcm9ncmVzc19wb2ludGVyX3JzYyIgc3JjPSJyZXNvdXJjZXMvcHJvZ3Jlc3NfcG9pbnRlci5zd2YiIC8+CisgICAgPCEtLSBBUEwgYXV0aG9yIHNlYmF3YWduZXIgLS0+CisgICAgPHJlc291cmNlIG5hbWU9ImZsdl9wcm9ncmVzc19wb2ludGVyX2JpZ19yc2MiIHNyYz0icmVzb3VyY2VzL3Byb2dyZXNzX3BvaW50ZXJfYmlnLnN3ZiIgLz4KKyAgICAKKyAgICA8IS0tIEFQTCBhdXRob3Igc2ViYXdhZ25lciAtLT4KKyAgICA8cmVzb3VyY2UgbmFtZT0iZmx2X2Rvd25sb2FkX3JzYyIgc3JjPSJyZXNvdXJjZXMvZG93bmxvYWQucG5nIiAvPgorICAgIAorICAgIDwhLS0gQVBMIGF1dGhvciBzZWJhd2FnbmVyIC0tPgorICAgIDxyZXNvdXJjZSBuYW1lPSJpY29uX2Zsdl9yZWNvcmRpbmdfdmlkZW9fZW5kX3JzYyIgc3JjPSJyZXNvdXJjZXMvaWNvbl9mbHZfcmVjb3JkaW5nX3ZpZGVvX2VuZC5wbmciIC8+CisgICAgPCEtLSBBUEwgYXV0aG9yIHNlYmF3YWduZXIgLS0+CisgICAgPHJlc291cmNlIG5hbWU9Imljb25fZmx2X3JlY29yZGluZ192aWRlb19zdGFydF9yc2MiIHNyYz0icmVzb3VyY2VzL2ljb25fZmx2X3JlY29yZGluZ192aWRlb19zdGFydC5wbmciIC8+CisgICAgPCEtLSBGYW1GYW0gSWNvbiBTZXQgLS0+CisgICAgPHJlc291cmNlIG5hbWU9InJlY29yZGVyX3Nob3dfbG9nX3JzYyIgc3JjPSJyZXNvdXJjZXMvaW5mb3JtYXRpb24ucG5nIiAvPgorICAgIDwhLS0gRmFtRmFtIEljb24gU2V0IC0tPgorICAgIDxyZXNvdXJjZSBuYW1lPSJmbHZfcmVsb2FkX3JzYyIgc3JjPSJyZXNvdXJjZXMvYXJyb3dfcmVmcmVzaF9zbWFsbC5wbmciIC8+CisgICAgCisgICAgPGluY2x1ZGUgaHJlZj0iYmFzZUNob29zZUljb25GTFZWaWV3Lmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJtZXNzYWdlUmVjb3JkaW5nV2luLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJkeW5hbWljRkxWTmFtZS5sengiIC8+CisgICAgPGluY2x1ZGUgaHJlZj0iZHJhZ0l0ZW1GTFZFeHBsb3Jlci5sengiIC8+CisgICAgPGluY2x1ZGUgaHJlZj0ibHpSZWNvcmRDb250ZW50Lmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJselJlY29yZE5hdmlnYXRpb24ubHp4IiAvPgorICAgIDxpbmNsdWRlIGhyZWY9ImNvbnRlbnR2aWV3cy8iIC8+CisgICAgPGluY2x1ZGUgaHJlZj0idHJlZWl0ZW1zLyIgLz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9senJlY29yZGNvbnRlbnQvbHpSZWNvcmRDb250ZW50Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L2x6UmVjb3JkQ29udGVudC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWUwNDY0OQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L2x6UmVjb3JkQ29udGVudC5sengKQEAgLTAsMCArMSw1NiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKyAgICAKKyAgICAKKzwhLS0tCisJVmlldyBmb3IgcmVjb3JkZWQgY29udGVudHMgbGlzdC4KKwlXaGVuIHlvdSBzZWxlY3QgJ1JlY29yZGluZ3MnIG9uIHRoZSB0b3AgbWVudSwgdGhpcyBjbGFzcyBzaG93cyB0aGUgbGlzdC4KKy0tPgorPGNsYXNzIG5hbWU9Imx6UmVjb3JkQ29udGVudCIgZXh0ZW5kcz0iYmFzZUNvbnRlbnRWaWV3IiBkZXN0cm95QnlNZXRob2Q9ImZhbHNlIj4JCisKKyAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgICAgICBfbWFpblNjcm9sbEJhci5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKyAgICAgICAgdGhpcy5fcmVjb3JkaW5nc1ZpZXdNYWluLmNvbm5lY3QoKTsKKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib250YWJjb250ZW50bGVhdmUiPgorICAgICAgICBfbWFpblNjcm9sbEJhci5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgIHRoaXMuX3JlY29yZGluZ3NWaWV3TWFpbi5zdG9wU3RyZWFtQW5kQ2xvc2VSZWNvcmRlcigpOworICAgIDwvaGFuZGxlcj4gICAgCisgICAgICAgIAorICAgIDxselJlY29yZE5hdmlnYXRpb24gbmFtZT0iX25hdmlnYXRpb25BcmVhIiAvPgorICAgIAorICAgIDxselJlY29yZGluZ3NWaWV3TWFpbiBuYW1lPSJfcmVjb3JkaW5nc1ZpZXdNYWluIj4KKyAgICAJCisgICAgCTxoYW5kbGVyIG5hbWU9Im9uUmVjb3JkaW5nU3RvcHBlZEFuZERpc2Nvbm5lY3RlZCIgYXJncz0idFJlZiI+CisgICAgCQlwYXJlbnQuZGVzdHJveSgpOworICAgIAkJbG9hZENvbnRlbnRCeVRlbXBBY3Rpb25Gb3JOYXZpKCk7CisgICAgCTwvaGFuZGxlcj4KKyAgICAJCisgICAgPC9selJlY29yZGluZ3NWaWV3TWFpbj4KKyAgICAKKyAgICA8bHpSZWNvcmRpbmdzVmlld0JvdHRvbSBuYW1lPSJfcmVjb3JkaW5nc1ZpZXdCb3R0b20iIC8+CisKKzwvY2xhc3M+CisKKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9senJlY29yZGNvbnRlbnQvbHpSZWNvcmROYXZpZ2F0aW9uLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L2x6UmVjb3JkTmF2aWdhdGlvbi5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWI0YjI5ZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L2x6UmVjb3JkTmF2aWdhdGlvbi5sengKQEAgLTAsMCArMSw1NDggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisgICAgCis8IS0tLQorCVZpZXcgZm9yIHJlY29yZGVkIGNvbnRlbnRzIGxpc3QuCisJV2hlbiB5b3Ugc2VsZWN0ICdSZWNvcmRpbmdzJyBvbiB0aGUgdG9wIG1lbnUsIHRoaXMgY2xhc3Mgc2hvd3MgdGhlIGxpc3QuCistLT4KKzxjbGFzcyBuYW1lPSJselJlY29yZE5hdmlnYXRpb24iIGV4dGVuZHM9InZpZXciIHdpZHRoPSIyODAiIGhlaWdodD0iJHsgY2FudmFzLmhlaWdodC1jYW52YXMubmF2aUhlaWdodCB9Ij4JCisKKyAgICA8YXR0cmlidXRlIG5hbWU9ImlzT3BlbiIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9InBsYXlTZWxlY3RlZCIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIi8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJwYXJlbnRGb2xkZXJJZCIgdmFsdWU9Ii0yIiB0eXBlPSJudW1iZXIiIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJfc2VsZWN0ZWQiIHZhbHVlPSJudWxsIiAvPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudFJlY29yZGluZyIgdmFsdWU9Im51bGwiIC8+CisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAgICAgbHouVHJhY2sucmVnaXN0ZXIodGhpcy5fdHJhc2hCYXIuX3RyYXNoSWNvbiwgY2FudmFzLmN1cnJlbnRJbWFnZXNMaXN0ZHJhdy5jdXJyZW50VHJhY2tHcm91cE5hbWUpOworICAgICAgICBpZiAoY2FudmFzLnJvb21SZWNvcmRpbmdJZCA+IDApIHsKKyAgICAgICAgCV9tYWluU2Nyb2xsQmFyLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgICAgICAgICAgY2FudmFzLl9tYWluYmdjb250ZW50TmF2aS5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsMCk7CisgICAgICAgICAgICBjYW52YXMuc2V0QXR0cmlidXRlKCduYXZpSGVpZ2h0RGVsdGEnLDApOworICAgICAgICAgICAgdGhpcy5wYXJlbnRGb2xkZXJJZCA9IGNhbnZhcy5yb29tUmVjb3JkaW5nSWQ7CisgICAgICAgICAgICB0aGlzLmdldEZsdlJlY29yZGluZ1dpdGhNZXRhRGF0YS5kb0NhbGwoKTsKKyAgICAgICAgICAgIHRoaXMuX2RvQ2xvc2Uuc2V0QXR0cmlidXRlKCdzdGFydGVkJywgdHJ1ZSk7CisgICAgICAgICAgICB0aGlzLmlzT3BlbiA9IGZhbHNlOworICAgICAgICAgICAgdGhpcy5fbWluaW1pemVTaWRlYmFyLl9pY29uLnNldEF0dHJpYnV0ZSgiZnJhbWUiLDIpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAJdGhpcy5nZXRGTFZFeHBsb3JlckJ5Um9vbS5kb0NhbGwoKTsKKyAgICAgICAgfQorICAgIDwvaGFuZGxlcj4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InRvZ2dsZVN0YXR1cyI+CisgICAgCWlmIChjYW52YXMucm9vbVJlY29yZGluZ0lkICE9IDApIHsKKyAgICAJCW5ldyBsei5sYWJlbGVycm9yUG9wdXAoY2FudmFzLHtlcnJvcmxhYmVsaWQ6OTA5fSk7CisgICAgCQlyZXR1cm47CisgICAgCX0KKyAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7CisgICAgICAgICAgICB0aGlzLl9kb0Nsb3NlLnNldEF0dHJpYnV0ZSgnc3RhcnRlZCcsIHRydWUpOworICAgICAgICAgICAgdGhpcy5pc09wZW4gPSBmYWxzZTsKKyAgICAgICAgICAgIHRoaXMuX21pbmltaXplU2lkZWJhci5faWNvbi5zZXRBdHRyaWJ1dGUoImZyYW1lIiwyKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuX2RvT3Blbi5zZXRBdHRyaWJ1dGUoJ3N0YXJ0ZWQnLCB0cnVlKTsKKyAgICAgICAgICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTsKKyAgICAgICAgICAgIHRoaXMuX21pbmltaXplU2lkZWJhci5faWNvbi5zZXRBdHRyaWJ1dGUoImZyYW1lIiwxKTsKKyAgICAgICAgfQorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDwhLS0KKyAgICAgICAgcHVibGljIEZMVlJlY29yZGVyT2JqZWN0IGdldEZMVkV4cGxvcmVyQnlSb29tKFN0cmluZyBTSUQpCisgICAgIC0tPgorICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImdldEZMVkV4cGxvcmVyQnlSb29tIiBmdW5jbmFtZT0iZmx2cmVjb3JkZXJzZXJ2aWNlLmdldEZMVkV4cGxvcmVyQnlSb29tIiAKKyAgICAgICAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gICAKKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBjYW52YXMuc2Vzc2lvbklkOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gaGliLmN1cnJlbnRkb21haW5PYmoub3JnYW5pc2F0aW9uX2lkOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPiAgICAKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJnZXRGTFZFeHBsb3JlckJ5Um9vbTogIix2YWx1ZSk7CisgICAgICAgICAgICBwYXJlbnQucGFyc2VSb290SXRlbXModmFsdWUpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAgCisgICAgCisgICAgIDwhLS0KKyAgICAgICAgUGFyc2UgSXRlbXMgYW5kIGdlbmVyYXRlIE91dHB1dAorICAgICAtLT4gCisgICAgPG1ldGhvZCBuYW1lPSJwYXJzZVJvb3RJdGVtcyIgYXJncz0icm9vbU9iamVjdCI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgdGhpcy5jbGVhckNvbnRlbnQoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIGhvbWVTaXplSW5NQnl0ZXMgPSBNYXRoLnJvdW5kKCAocm9vbU9iamVjdC51c2VySG9tZVNpemUgLyAxMDI0IC8gMTAyNCkgKiAxMDApIC8gMTAwOworICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLl9zdGF0dXNBcmVhLl91c2VySG9tZVNpemUuc2V0QXR0cmlidXRlKCJ0ZXh0IiwiIiArIGhvbWVTaXplSW5NQnl0ZXMgKyAiIE1CeXRlcyIpOworICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgcm9vbUhvbWVTaXplSW5NQnl0ZXMgPSBNYXRoLnJvdW5kKCAocm9vbU9iamVjdC5yb29tSG9tZVNpemUgLyAxMDI0IC8gMTAyNCkgKiAxMDApIC8gMTAwOworICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLl9zdGF0dXNBcmVhLl9yb29tSG9tZVNpemUuc2V0QXR0cmlidXRlKCJ0ZXh0IiwiIiArIHJvb21Ib21lU2l6ZUluTUJ5dGVzICsgIiBNQnl0ZXMiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgaG9tZUljb24gPSBuZXcgbHoucm9vdEZMVkV4cGxvcmVySXRlbSh0aGlzLl9maWxlYXJlYS5fY29udGVudGFyZWEseworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW46dHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlTmFtZTpjYW52YXMuZ2V0TGFiZWxOYW1lKDg2MCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTonX2hvbWUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzUm9vdDp0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVJY29uOidmaWxlX2V4cGxvcmVyX2ZvbGRlcl9ob21lX3JzYycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNPd25lcjp0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZk9iakxpc3RSb290OnRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBob21lSWNvbi5jb250ZW50LnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKyAgICAgICAgICAgIGhvbWVJY29uLmljb25fZm9sZGVyX3ByZS5zZXRBdHRyaWJ1dGUoImZyYW1lIiwyKTsKKyAgICAgICAgICAgIGhvbWVJY29uLl9mb2xkZXJJY29uLnNldEF0dHJpYnV0ZSgiZnJhbWUiLDIpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvL0hvbWUgYXJlYQorICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8cm9vbU9iamVjdC51c2VySG9tZS5sZW5ndGg7aSsrKSB7CisgICAgICAgICAgICAgICAgdmFyIGZpbGVFeHBsb3Jlckl0ZW0gPSByb29tT2JqZWN0LnVzZXJIb21lW2ldOworICAgICAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImZpbGVFeHBsb3Jlckl0ZW0gLTEtICIsZmlsZUV4cGxvcmVySXRlbSk7CisgICAgICAgICAgICAgICAgaWYgKGZpbGVFeHBsb3Jlckl0ZW0uaXNGb2xkZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgbmV3IGx6LmZvbGRlckZMVkV4cGxvcmVySXRlbShob21lSWNvbi5jb250ZW50LHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZU5hbWU6ZmlsZUV4cGxvcmVySXRlbS5maWxlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUV4cGxvcmVySXRlbUlkOmZpbGVFeHBsb3Jlckl0ZW0uZmx2UmVjb3JkaW5nSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVJY29uOidpY29uX2ZvbGRlcl9yc2MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZPYmpMaXN0Um9vdDp0aGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgbmV3IGx6LmZsdkV4cGxvcmVySXRlbShob21lSWNvbi5jb250ZW50LHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNGb2xkZXI6ZmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVFeHBsb3Jlckl0ZW1JZDpmaWxlRXhwbG9yZXJJdGVtLmZsdlJlY29yZGluZ0lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlTmFtZTpmaWxlRXhwbG9yZXJJdGVtLmZpbGVOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlSGFzaDpmaWxlRXhwbG9yZXJJdGVtLmZpbGVIYXNoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0ZvbGRlcjpmYWxzZSxpc0ltYWdlOnRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVJY29uOidmaWxlX2V4cGxvcmVyX3ZpZGVvX3JzYycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZk9iakxpc3RSb290OnRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vUHVibGljIC0gUm9vbSBBcmVhCisgICAgICAgICAgICB2YXIgcm9vbUhvbWUgPSBuZXcgbHoucm9vdEZMVkV4cGxvcmVySXRlbSh0aGlzLl9maWxlYXJlYS5fY29udGVudGFyZWEseworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wZW46dHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlTmFtZTpjYW52YXMuZ2V0TGFiZWxOYW1lKDg2MSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZTonX3Jvb21Ib21lJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc1Jvb3Q6dHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlSWNvbjonZmlsZV9leHBsb3Jlcl9mb2xkZXJfbmV0d29ya19yc2MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZk9iakxpc3RSb290OnRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICByb29tSG9tZS5jb250ZW50LnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKyAgICAgICAgICAgIHJvb21Ib21lLmljb25fZm9sZGVyX3ByZS5zZXRBdHRyaWJ1dGUoImZyYW1lIiwyKTsKKyAgICAgICAgICAgIHJvb21Ib21lLl9mb2xkZXJJY29uLnNldEF0dHJpYnV0ZSgiZnJhbWUiLDIpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvL1B1YmxpYyBhcmVhCisgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTxyb29tT2JqZWN0LnJvb21Ib21lLmxlbmd0aDtpKyspIHsKKyAgICAgICAgICAgICAgICB2YXIgZmlsZUV4cGxvcmVySXRlbSA9IHJvb21PYmplY3Qucm9vbUhvbWVbaV07CisgICAgICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZmlsZUV4cGxvcmVySXRlbSAtMi0gIixmaWxlRXhwbG9yZXJJdGVtKTsKKyAgICAgICAgICAgICAgICBpZiAoZmlsZUV4cGxvcmVySXRlbS5pc0ZvbGRlcikgeworICAgICAgICAgICAgICAgICAgICBuZXcgbHouZm9sZGVyRkxWRXhwbG9yZXJJdGVtKHJvb21Ib21lLmNvbnRlbnQseworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlTmFtZTpmaWxlRXhwbG9yZXJJdGVtLmZpbGVOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlRXhwbG9yZXJJdGVtSWQ6ZmlsZUV4cGxvcmVySXRlbS5mbHZSZWNvcmRpbmdJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUljb246J2ljb25fZm9sZGVyX3JzYycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZk9iakxpc3RSb290OnRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBuZXcgbHouZmx2RXhwbG9yZXJJdGVtKHJvb21Ib21lLmNvbnRlbnQseworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0ZvbGRlcjpmYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUV4cGxvcmVySXRlbUlkOmZpbGVFeHBsb3Jlckl0ZW0uZmx2UmVjb3JkaW5nSWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVOYW1lOmZpbGVFeHBsb3Jlckl0ZW0uZmlsZU5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVIYXNoOmZpbGVFeHBsb3Jlckl0ZW0uZmlsZUhhc2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRm9sZGVyOmZhbHNlLGlzSW1hZ2U6dHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUljb246J2ZpbGVfZXhwbG9yZXJfdmlkZW9fcnNjJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmT2JqTGlzdFJvb3Q6dGhpcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImNsZWFyQ29udGVudCI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgZm9yICh2YXIgZWcgaW4gdGhpcy5fZmlsZWFyZWEuX2NvbnRlbnRhcmVhLnN1YnZpZXdzKSB7CisgICAgICAgICAgICAgICAgdGhpcy5fZmlsZWFyZWEuX2NvbnRlbnRhcmVhLnN1YnZpZXdzW2VnXS5kZXN0cm95KCk7CisgICAgICAgICAgICB9CisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iYWRkRm9sZGVyIj4KKyAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkID09IG51bGwpIHsKKyAgICAgICAgICAgIHRoaXMuX2ZpbGVhcmVhLl9jb250ZW50YXJlYS5zdWJ2aWV3c1swXS5hZGRGb2xkZXIoKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZC5pc0ZvbGRlcikgeworICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkLmFkZEZvbGRlcigpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidGhpcy5fc2VsZWN0ZWQgIix0aGlzLl9zZWxlY3RlZCk7CisgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWQucGFyZW50LnBhcmVudC5hZGRGb2xkZXIoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0ic2VsZWN0SXRlbSIgYXJncz0iaXRlbVJlZiI+CisgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZCAhPSBudWxsKSB7CisgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZC5kZXNlbGVjdEl0ZW0oKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdGhpcy5fc2VsZWN0ZWQgPSBpdGVtUmVmOworICAgICAgICB0aGlzLl9zZWxlY3RlZC5zZWxlY3RJdGVtKCk7CisgICAgICAgIAorICAgICAgICAvL1NldCBwYXJlbnQgZm9sZGVyIGlkIGZvciBuZXh0IEZvbGRlciBvciB1cGxvYWRlZCBmaWxlCisgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZC5maWxlRXhwbG9yZXJJdGVtSWQgPT0gMCkgeworICAgICAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkLmlzT3duZXIpIHsKKyAgICAgICAgICAgICAgICB0aGlzLnBhcmVudEZvbGRlcklkID0gLTI7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRoaXMucGFyZW50Rm9sZGVySWQgPSAwOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5wYXJlbnRGb2xkZXJJZCA9IHRoaXMuX3NlbGVjdGVkLmZpbGVFeHBsb3Jlckl0ZW1JZDsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGl0ZW1SZWYuaXNGb2xkZXIpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2VsZWN0SXRlbSIsaXRlbVJlZik7CisgICAgICAgIAorICAgICAgICB0aGlzLmdldEZsdlJlY29yZGluZ1dpdGhNZXRhRGF0YS5kb0NhbGwoKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKworICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImdldEZsdlJlY29yZGluZ1dpdGhNZXRhRGF0YSIgZnVuY25hbWU9ImZsdnJlY29yZGVyc2VydmljZS5nZXRGbHZSZWNvcmRpbmdXaXRoTWV0YURhdGEiIAorICAgICAgICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgc2hvd0xvYWRpbmc9ImZhbHNlIj4gICAKKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBjYW52YXMuc2Vzc2lvbklkOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC5wYXJlbnRGb2xkZXJJZDs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4gICAgCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZ2V0Rmx2UmVjb3JkaW5nV2l0aE1ldGFEYXRhOiAiKTsKKyAgICAgICAgICAgIHBhcmVudC5zZXRSZWNvcmRpbmcodmFsdWUpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAgIAorICAgIAorICAgIDxtZXRob2QgbmFtZT0ic2V0UmVjb3JkaW5nIiBhcmdzPSJyZWMiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgCisgICAgICAgICAgICBpZiAocmVjLmlzRm9sZGVyKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuY3VycmVudFJlY29yZGluZyA9IHJlYzsKKyAgICAgICAgCisgICAgICAgICAgICB0aGlzLl9yZWNvcmRpbmdzSW5mby5jb250ZW50Ll9mbHZOYW1lLnNldEF0dHJpYnV0ZSgidGV4dCIscmVjLmZpbGVOYW1lKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIGRlbHRhSW5TZWNvbmRzID0gTWF0aC5yb3VuZCgocmVjLnJlY29yZEVuZC5nZXRUaW1lKCkgLSByZWMucmVjb3JkU3RhcnQuZ2V0VGltZSgpKS8xMDAwKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImRlbHRhSW5TZWNvbmRzICIsZGVsdGFJblNlY29uZHMpOworICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgbWludXRlcyA9IE1hdGguZmxvb3IoZGVsdGFJblNlY29uZHMvNjApOworICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgcmVzdFNlY29uZHMgPSBkZWx0YUluU2Vjb25kcyAtIChtaW51dGVzKjYwKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIHRpbWVJbk1pbnV0ZXMgPSBtaW51dGVzKyIgbWluICIrcmVzdFNlY29uZHMrIiBzZWMiOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAobWludXRlcyA+IDYwKSB7CisgICAgICAgICAgICAgICAgdmFyIGhvdXJzID0gTWF0aC5mbG9vcihtaW51dGVzLzYwKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB2YXIgcmVzdE1pbnV0ZXMgPSBtaW51dGVzIC0gKGhvdXJzKjYwKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB2YXIgdGltZUluTWludXRlcyA9IGhvdXJzKyIgaCAiK3Jlc3RNaW51dGVzKyIgbWluICIrcmVzdFNlY29uZHMrIiBzZWMiOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLl9yZWNvcmRpbmdzSW5mby5jb250ZW50LnJlY29yZGluZ05hbWUgPSByZWMuZmlsZUhhc2g7CisgICAgICAgICAgICB0aGlzLl9yZWNvcmRpbmdzSW5mby5jb250ZW50LmFsdGVybmF0ZU5hbWUgPSByZWMuYWx0ZXJuYXRlRG93bmxvYWQ7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuX3JlY29yZGluZ3NJbmZvLmNvbnRlbnQuX2Zsdkxlbmd0aC5zZXRBdHRyaWJ1dGUoInRleHQiLHRpbWVJbk1pbnV0ZXMpOworICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLl9yZWNvcmRpbmdzSW5mby5jb250ZW50Ll9mbHZEYXRlLnNldEF0dHJpYnV0ZSgidGV4dCIscGFyc2VEYXRlVG9TdHJpbmdUaW1lKHJlYy5pbnNlcnRlZCkpOworICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLl9yZWNvcmRpbmdzSW5mby5jb250ZW50Ll9mbHZSb29tLnNldEF0dHJpYnV0ZSgidGV4dCIscmVjLnJvb20ubmFtZSk7CisgICAgICAgIAorICAgICAgICAgICAgdGhpcy5wbGF5UmVjb3JkaW5nKCk7CisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0icGxheVJlY29yZGluZyI+CisgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJwbGF5UmVjb3JkaW5nIDpzaG93TWV0YURhdGE6ICIpOworICAgICAgICBwYXJlbnQuX3JlY29yZGluZ3NWaWV3Qm90dG9tLnNob3dNZXRhRGF0YSh0aGlzLmN1cnJlbnRSZWNvcmRpbmcpOworICAgIDwvbWV0aG9kPiAgIAorICAgIAorICAgIDxtZXRob2QgbmFtZT0ibG9hZEZMViIgYXJncz0icmVmT2JqIj4KKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImxvYWRGTFYgIixyZWZPYmopOworICAgICAgICB0aGlzLnBsYXlTZWxlY3RlZCA9IHRydWU7CisgICAgICAgIHRoaXMuc2VsZWN0SXRlbShyZWZPYmopOworICAgIDwvbWV0aG9kPgorICAgICAgICAKKyAgICA8IS0tCisgICAgICAgIEJvcmRlcnMKKyAgICAKKyAgICAKKyAgICA8dmlldyBuYW1lPSJfYmcxIiBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ2Jhc2ViZ2NvbG9yaXplcicpIH0iIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoLTEwIH0iIAorICAgICAgICAgIHg9IjAiIHk9IjAiIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodCB9IiAvPgorICAgICAgICAgIAorICAgICAgICAgICAKKyAgICAgICAgICAKKyAgICA8dmlldyBuYW1lPSJfYmcyIiBiZ2NvbG9yPSIweEZGRkZGRiIgeD0iMSIgeT0iMCIgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGggLSAxMiB9IiAKKyAgICAgICAgICBoZWlnaHQ9IiR7IHBhcmVudC5oZWlnaHQgLSAxIC0gcGFyZW50Ll9yZWNvcmRpbmdzSW5mby5oZWlnaHQgfSIgLz4KKyAgICAtLT4gCisgICAgICAgICAgICAgICAKKyAgICA8dmlldyBuYW1lPSJfYm9yZGVyMiIgeD0iMCIgeT0iMTkiIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoLTEwIH0iIAorICAgICAgICAgIGhlaWdodD0iMSIgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdzZWNvbmRCb3JkZXJDb2xvcicpIH0iIC8+ICAgICAKKyAgICAKKyAgICA8dmlldyBuYW1lPSJfZmlsZUJhciIgbGF5b3V0PSJheGlzOngiIHg9IjAiIHk9IjAiPgorICAgICAgICA8YmFzZUNob29zZUljb25GTFZWaWV3IGxhYmVsaWQ9IjcwMyIgaGVpZ2h0PSIyMCIgd2lkdGg9IjE5IiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXNvdXJjZU49ImZpbGVfZXhwbG9yZXJfYWRkX2ZvbGRlcl9yc2MiID4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJBZGQgRm9sZGVyIik7CisgICAgICAgICAgICAgICAgcGFyZW50LnBhcmVudC5hZGRGb2xkZXIoKTsKKyAgICAgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPC9iYXNlQ2hvb3NlSWNvbkZMVlZpZXc+CisgICAgICAgIDxiYXNlQ2hvb3NlSWNvbkZMVlZpZXcgbGFiZWxpZD0iNzA0IiBoZWlnaHQ9IjIwIiB3aWR0aD0iMTkiIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlTj0iZmlsZV9leHBsb3Jlcl9yZWxvYWRfcnNjIiA+CisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiUmVmcmVzaCBGb2xkZXIiKTsKKyAgICAgICAgICAgICAgICBwYXJlbnQucGFyZW50LmdldEZMVkV4cGxvcmVyQnlSb29tLmRvQ2FsbCgpOworICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8L2Jhc2VDaG9vc2VJY29uRkxWVmlldz4KKyAgICAgICAgPHZpZXcgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdzZWNvbmRCb3JkZXJDb2xvcicpIH0iIAorICAgICAgICAJCQkJaGVpZ2h0PSIyMCIgd2lkdGg9IjEiIC8+CisgICAgPC92aWV3PgorICAgIAorICAgIDwhLS0KKyAgICAgICAgRmlsZSBUcmVlIENvbnRlbnQgVHJhc2hiYXIKKyAgICAgLS0+IAorICAgICAKKyAgICA8dmlldyBuYW1lPSJfdHJhc2hCYXIiIGxheW91dD0iYXhpczp4IiB4PSIkb25jZXsgcGFyZW50LndpZHRoIC0gMzAgfSIgeT0iMCI+CisgICAgICAgIDxiYXNlQ2hvb3NlSWNvbkZMVlZpZXcgbmFtZT0iX3RyYXNoSWNvbiIgbGFiZWxpZD0iNzA1IiBoZWlnaHQ9IjIwIiB3aWR0aD0iMTkiIAorICAgICAgICAgICAgICAgICAgICAgICAgIHJlc291cmNlTj0iZmlsZV9leHBsb3Jlcl90cmFzaF9yc2MiPgorICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJpc1RyYXNoQ2FuIiB2YWx1ZT0idHJ1ZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJEZWxldGUgRm9sZGVyIGFuZCBGaWxlcyIpOworICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZXRyYWNrb3ZlciI+CisgICAgICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib25tb3VzZXRyYWNrb3ZlciIpOworICAgICAgICAgICAgICAgIGNhbnZhcy5jdXJyZW50SW1hZ2VzTGlzdGRyYXcuY3VycmVudERyYWdJdGVtLnNlbmRPdmVySXRlbSh0aGlzKTsKKyAgICAgICAgICAgICAgICB0aGlzLm9ubW91c2VvdmVyLnNlbmRFdmVudCgpOworICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZXRyYWNrb3V0Ij4KKyAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbm1vdXNldHJhY2tvdXQiKTsKKyAgICAgICAgICAgICAgICBjYW52YXMuY3VycmVudEltYWdlc0xpc3RkcmF3LmN1cnJlbnREcmFnSXRlbS5zZW5kT3V0SXRlbSh0aGlzKTsKKyAgICAgICAgICAgICAgICB0aGlzLm9ubW91c2VvdXQuc2VuZEV2ZW50KCk7CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNldHJhY2t1cCI+CisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9ubW91c2V0cmFja3VwIik7CisgICAgICAgICAgICAgICAgdGhpcy5vbm1vdXNlb3V0LnNlbmRFdmVudCgpOworICAgICAgICAgICAgPC9oYW5kbGVyPiAKKyAgICAgICAgPC9iYXNlQ2hvb3NlSWNvbkZMVlZpZXc+CisgICAgICAgIDx2aWV3IGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignc2Vjb25kQm9yZGVyQ29sb3InKSB9IiBoZWlnaHQ9IjIwIiB3aWR0aD0iMSIgLz4KKyAgICA8L3ZpZXc+CisgICAgCisgICAgPCEtLQorICAgICAgICBGaWxlIFRyZWUgQ29udGVudAorICAgICAtLT4gCisgICAgCisgICAgPHZpZXcgbmFtZT0iX2ZpbGVhcmVhIiB4PSIxIiB5PSIyMCIgY2xpcD0idHJ1ZSIgYmdjb2xvcj0iMHhGRkZGRkYiIAorICAgICAgICAgIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodCAtIDIxIC0gcGFyZW50Ll9yZWNvcmRpbmdzSW5mby5oZWlnaHQgLSA0MCB9IiAKKyAgICAgICAgICB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCAtIDEyIH0iPgorICAgICAgICAKKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50VHJhY2tHcm91cE5hbWUiIHZhbHVlPSJmaWxlRXhwbG9yZXIiIHR5cGU9InN0cmluZyIgLz4KKyAgICAgICAgCisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudERyYWdJdGVtIiB2YWx1ZT0ibnVsbCIgLz4KKyAgICAgICAgCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgICAgICBjYW52YXMuY3VycmVudEltYWdlc0xpc3RkcmF3ID0gdGhpczsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAKKyAgICAgICAgPHZpZXcgbmFtZT0iX2NvbnRlbnRhcmVhIiBsYXlvdXQ9ImF4aXM6eTtpbnNldDoxIiAvPgorICAgICAgICAKKyAgICAgICAgPG9tX3ZzY3JvbGxiYXIgbmFtZT0iX3Njcm9sbGJhciIgLz4KKyAgICAgICAgPG9tX2hzY3JvbGxiYXIgbmFtZT0iX2hzY3JvbGxiYXIiIC8+CisgICAgPC92aWV3PiAgCisgICAgCisgICAgPHZpZXcgbmFtZT0iX3N0YXR1c0FyZWEiIHg9IjEiIHk9IiR7IHBhcmVudC5fcmVjb3JkaW5nc0luZm8ueSAtIDQwIH0iIAorICAgIAkgICB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCAtIDEyIH0iPgorICAgIAkKKyAgICAgICAgPGxhYmVsVGV4dCBuYW1lPSJfdXNlckhvbWVTaXplTGFiZWwiIGxhYmVsaWQ9IjkyMyIgLz4KKyAgICAgICAgCisgICAgICAgIDxsYWJlbFRleHQgbmFtZT0iX3VzZXJIb21lU2l6ZSIgYWxpZ249InJpZ2h0IiAvPgorICAgICAgICAKKyAgICAgICAgPGxhYmVsVGV4dCBuYW1lPSJfcm9vbUhvbWVTaXplTGFiZWwiIGxhYmVsaWQ9IjkyNCIgeT0iMjAiIC8+CisgICAgICAgIAorICAgICAgICA8bGFiZWxUZXh0IG5hbWU9Il9yb29tSG9tZVNpemUiIGFsaWduPSJyaWdodCIgeT0iMjAiIC8+CisgICAgCQorICAgIDwvdmlldz4gIAorICAgIAorICAgIDxiYXNlUHJvcGVydHlQYW5lbCBuYW1lPSJfcmVjb3JkaW5nc0luZm8iIGxhYmVsaWQ9Ijg2MiIgdmFsaWduPSJib3R0b20iCisgICAgICAgICAgICAgICAgICAgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGggLSAxMiB9IiBoZWlnaHQ9IjE4MCI+CisgICAgICAgIAorICAgICAgICA8dmlldyBuYW1lPSJjb250ZW50IiB5PSIyNCIgCisgICAgICAgICAgICAgIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoIH0iIGhlaWdodD0iJG9uY2V7IHBhcmVudC5oZWlnaHQgLSAyNCB9Ij4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJyZWNvcmRpbmdOYW1lIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImFsdGVybmF0ZU5hbWUiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPCEtLQorICAgICAgICAgICAgPGxhYmVsVGV4dCB0ZXh0PSJDdXQiIHJlc2l6ZT0idHJ1ZSIgeD0iJG9uY2V7IHBhcmVudC53aWR0aCAtIDExOCB9IiB5PSIwIi8+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxjdXN0b21FZGl0dGV4dCBuYW1lPSJsZWZ0IiB4PSIkb25jZXsgcGFyZW50LndpZHRoIC0gMTA4IH0iIHdpZHRoPSIyNiIgdGV4dD0iMCIgeT0iMCIvPgorICAgICAgICAgICAgIC0tPgorICAgICAgICAgICAgCisgICAgICAgICAgICA8bGFiZWxUZXh0IHRleHQ9IlNoaWZ0IChpbiBtcykiIHJlc2l6ZT0idHJ1ZSIgeD0iMCIgeT0iMCIvPgorICAgICAgICAgICAgCisgICAgICAgICAgICA8bGFiZWxUZXh0IHRleHQ9IkxlZnQiIHJlc2l6ZT0idHJ1ZSIgeD0iJG9uY2V7IHBhcmVudC53aWR0aCAtIDIwMCB9IiB5PSIwIi8+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxjdXN0b21FZGl0dGV4dCBuYW1lPSJsZWZ0VGltZSIgeD0iJG9uY2V7IHBhcmVudC53aWR0aCAtIDE1OCB9IiB3aWR0aD0iMjYiIHRleHQ9IjAiIHk9IjAiLz4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPGxhYmVsVGV4dCB0ZXh0PSJSaWdodCIgcmVzaXplPSJ0cnVlIiB4PSIkb25jZXsgcGFyZW50LndpZHRoIC0gMTE4IH0iIHk9IjAiLz4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPGN1c3RvbUVkaXR0ZXh0IG5hbWU9InJpZ2h0VGltZSIgeD0iJG9uY2V7IHBhcmVudC53aWR0aCAtIDY4IH0iIHdpZHRoPSIyNiIgdGV4dD0iMCIgeT0iMCIvPgorICAgICAgICAgICAgCisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxsYWJlbFRleHQgdGV4dD0iTG91ZG5lc3MiIHJlc2l6ZT0idHJ1ZSIgeD0iMCIgeT0iMjAiLz4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPGxhYmVsVGV4dCB0ZXh0PSJMZWZ0IiByZXNpemU9InRydWUiIHg9IiRvbmNleyBwYXJlbnQud2lkdGggLSAyMDAgfSIgeT0iMjAiLz4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPGN1c3RvbUVkaXR0ZXh0IG5hbWU9ImxlZnQiIHg9IiRvbmNleyBwYXJlbnQud2lkdGggLSAxNTggfSIgd2lkdGg9IjI2IiB0ZXh0PSIwIiB5PSIyMCIvPgorICAgICAgICAgICAgCisgICAgICAgICAgICA8bGFiZWxUZXh0IHRleHQ9IlJpZ2h0IiByZXNpemU9InRydWUiIHg9IiRvbmNleyBwYXJlbnQud2lkdGggLSAxMTggfSIgeT0iMjAiLz4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPGN1c3RvbUVkaXR0ZXh0IG5hbWU9InJpZ2h0IiB4PSIkb25jZXsgcGFyZW50LndpZHRoIC0gNjggfSIgd2lkdGg9IjI2IiB0ZXh0PSIwIiB5PSIyMCIvPgorICAgICAgICAgICAgCisgICAgICAgICAgICA8dmlldyBuYW1lPSJfc2hvd19sb2cxIiByZXNvdXJjZT0iZmx2X3JlbG9hZF9yc2MiIHk9IjE4IiB4PSIkb25jZXsgcGFyZW50LndpZHRoIC0gMzYgfSI+CisgICAgICAgICAgICAJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAgICAgICAgIAkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIl9zaG93X2xvZzE6Om9uaW5pdCAiLCB0aGlzKTsKKyAgICAgICAgICAgIAk8L2hhbmRsZXI+IAorICAgICAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siIGFyZ3M9ImNsaWNrT2JqIj4KKyAgICAgICAgICAgICAgICAgICAgcGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50Ll9yZWNvcmRpbmdzVmlld01haW4ucmVzdGFydENvbnZlcnNpb24ocGFyZW50LmxlZnQuZ2V0VGV4dCgpLHBhcmVudC5yaWdodC5nZXRUZXh0KCkscGFyZW50LmxlZnRUaW1lLmdldFRleHQoKSxwYXJlbnQucmlnaHRUaW1lLmdldFRleHQoKSk7CisgICAgICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAgICAgICAgIDxsYWJlbFRvb2x0aXAgdGV4dD0iUmUtU2FtcGxlIEZpbGUiIC8+CisgICAgICAgICAgICA8L3ZpZXc+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDx2aWV3IG5hbWU9Il9zaG93X2xvZzIiIHJlc291cmNlPSJyZWNvcmRlcl9zaG93X2xvZ19yc2MiIHk9IjE4IiB4PSIkb25jZXsgcGFyZW50LndpZHRoIC0gMTggfSI+CisgICAgICAgICAgICAJPGhhbmRsZXIgbmFtZT0ib25jbGljayIgYXJncz0iY2xpY2tPYmoiPgorICAgICAgICAgICAgCQlwYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQuX3JlY29yZGluZ3NWaWV3TWFpbi5zaG93TG9nKCk7CisgICAgICAgICAgICAJPC9oYW5kbGVyPgorICAgICAgICAgICAgCTxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iOTAyIiAvPgorICAgICAgICAgICAgPC92aWV3PgorICAgICAgICAgICAgCisgICAgICAgICAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9Ijg2MyIgeT0iMzgiIC8+CisgICAgICAgICAgICA8bGFiZWxUZXh0IG5hbWU9Il9mbHZOYW1lIiB5PSIzOCIgeD0iODAiIG11bHRpbGluZT0idHJ1ZSIgaGVpZ2h0PSIzMiIgCisgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPSIkeyBwYXJlbnQud2lkdGgtODAgfSIvPgorICAgICAgICAgICAgCisgICAgICAgICAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9Ijg2NCIgeT0iNTgiIC8+CisgICAgICAgICAgICA8bGFiZWxUZXh0IG5hbWU9Il9mbHZMZW5ndGgiIHk9IjU4IiB4PSI4MCIgLz4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSI4NjUiIHk9Ijc4IiAvPgorICAgICAgICAgICAgPGxhYmVsVGV4dCBuYW1lPSJfZmx2RGF0ZSIgeT0iNzgiIHg9IjgwIiAvPgorICAgICAgICAgICAgCisgICAgICAgICAgICA8IS0tCisgICAgICAgICAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9Ijg2NiIgeT0iNjAiIC8+CisgICAgICAgICAgICA8bGFiZWxUZXh0IG5hbWU9Il9mbHZCeSIgeT0iNjAiIC8+CisgICAgICAgICAgICAgLS0+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iODc0IiB5PSI5OCIgLz4KKyAgICAgICAgICAgIDxsYWJlbFRleHQgbmFtZT0iX2ZsdlJvb20iIHk9Ijk4IiB4PSI4MCIgLz4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPHNpbXBsZUxhYmVsQnV0dG9uIHk9IjEzMCIgYWxpZ249InJpZ2h0IiB0ZXh0X3BhZGRpbmdfeD0iNDAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ9IjI2IiB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCAvIDIgfSIgbGFiZWxpZD0iODgzIj4KKyAgICAgICAgICAgICAgICA8dmlldyByZXNvdXJjZT0iZmx2X2Rvd25sb2FkX3JzYyIgeD0iNCIgeT0iNCIgLz4KKyAgICAgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgICAgICAJPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgCQorICAgICAgICAgICAgICAgIAkgICBpZiAocGFyZW50LnJlY29yZGluZ05hbWUgPT0gIiIpIHsKKyAgICAgICAgICAgICAgICAJICAgCSAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAJICAgfQorICAgICAgICAgICAgICAgIAkKKwkgICAgICAgICAgICAgICAgICAgdmFyIGRvd25sb2FkdXJsID0gY2FudmFzLmdldFVybCgpICsgJ0Rvd25sb2FkSGFuZGxlcj9maWxlTmFtZT0nK3BhcmVudC5yZWNvcmRpbmdOYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArJyZtb2R1bGVOYW1lPWx6UmVjb3JkZXJBcHAmcGFyZW50UGF0aD0mcm9vbV9pZD0nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArJyZzaWQ9JytjYW52YXMuc2Vzc2lvbklkOworICAgICAgICAgICAgICAgIAkKKyAgICAgICAgICAgICAgICAgICAgICAgIGx6LkJyb3dzZXIubG9hZFVSTChkb3dubG9hZHVybCwiX3BhcmVudCIpOworICAgICAgICAgICAgICAgIAkKKyAgICAgICAgICAgICAgICAJXV0+CisgICAgICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIDxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iODczIiAvPgorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgPC9zaW1wbGVMYWJlbEJ1dHRvbj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgCisgICAgICAgICAgICA8c2ltcGxlTGFiZWxCdXR0b24geT0iMTMwIiBhbGlnbj0ibGVmdCIgdGV4dF9wYWRkaW5nX3g9IjQwIiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD0iMjYiIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoIC8gMiB9IiBsYWJlbGlkPSI4ODQiPgorICAgICAgICAgICAgICAgIDx2aWV3IHJlc291cmNlPSJmbHZfZG93bmxvYWRfcnNjIiB4PSI0IiB5PSI0IiAvPgorICAgICAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgICAgIAk8IVtDREFUQVsKKyAgICAgICAgICAgICAgICAJCisgICAgICAgICAgICAgICAgCSAgIGlmIChwYXJlbnQucmVjb3JkaW5nTmFtZSA9PSAiIikgeworICAgICAgICAgICAgICAgIAkgICAJICAgcmV0dXJuOworICAgICAgICAgICAgICAgIAkgICB9CisgICAgICAgICAgICAgICAgCQorCSAgICAgICAgICAgICAgICAgICB2YXIgZG93bmxvYWR1cmwgPSBjYW52YXMuZ2V0VXJsKCkgKyAnRG93bmxvYWRIYW5kbGVyP2ZpbGVOYW1lPScrcGFyZW50LmFsdGVybmF0ZU5hbWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsnJm1vZHVsZU5hbWU9bHpSZWNvcmRlckFwcCZwYXJlbnRQYXRoPSZyb29tX2lkPScKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsnJnNpZD0nK2NhbnZhcy5zZXNzaW9uSWQ7CisgICAgICAgICAgICAgICAgCQorICAgICAgICAgICAgICAgICAgICAgICAgbHouQnJvd3Nlci5sb2FkVVJMKGRvd25sb2FkdXJsLCJfcGFyZW50Iik7CisgICAgICAgICAgICAgICAgCQorICAgICAgICAgICAgICAgIAldXT4KKyAgICAgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSI4ODIiIC8+CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICA8L3NpbXBsZUxhYmVsQnV0dG9uPiAgICAgICAgICAgIAorICAgICAgICAgICAgCisgICAgICAgIDwvdmlldz4KKyAgICAgICAgCisgICAgICAgIAorICAgICAgICAKKyAgICA8L2Jhc2VQcm9wZXJ0eVBhbmVsPgorCisgICAgPCEtLQorICAgICAgICBTaWRlYmFyIHRvIG1pbmltaXplCisgICAgIC0tPgorICAgICAKKyAgICA8dmlldyBuYW1lPSJfbWluaW1pemVTaWRlYmFyIiB4PSIkeyBwYXJlbnQud2lkdGggLSAxMCB9IiB3aWR0aD0iMTAiIHk9IjEiCisgICAgICAgICAgCQkJCWJnY29sb3I9IjB4RTBFMUVCIiBoZWlnaHQ9IiR7IHBhcmVudC5oZWlnaHQtMSB9Ij4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICBwYXJlbnQudG9nZ2xlU3RhdHVzKCk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgCisgICAgICAgIDx2aWV3IHdpZHRoPSIkeyBwYXJlbnQud2lkdGggfSIgaGVpZ2h0PSIkb25jZXsgcGFyZW50LmhlaWdodCB9IiAKKyAgICAgICAgICAgICAgIGJnY29sb3I9IjB4RTBFMUVCIiA+CisgICAgICAgIDwvdmlldz4KKyAgICAgICAgICAgIAorICAgICAgICA8dmlldyBuYW1lPSJfaWNvbiIgcmVzb3VyY2U9InNpZGViYXJfdGFiX2J0biIgeT0iMCI+CisgICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisJICAgICAgICAgICAgcGFyZW50LnBhcmVudC50b2dnbGVTdGF0dXMoKTsKKwkgICAgICAgICA8L2hhbmRsZXI+CisJICAgICAgICAgPGxhYmVsVG9vbHRpcCBuYW1lPSJfbGFiZWxUb29sdGlwIiBsYWJlbGlkPSI4NTYiIC8+CisgICAgICAgIDwvdmlldz4KKyAgICAgICAgCisgICAgPC92aWV3PgorICAgICAgICAKKyAgICA8YW5pbWF0b3IgbmFtZT0iX2RvT3BlbiIgYXR0cmlidXRlPSJ4IiB0bz0iMCIgCisgICAgICAgICAgICAgIGR1cmF0aW9uPSI3NTAiIHN0YXJ0ZWQ9ImZhbHNlIiAvPgorICAgICAgICAgICAgICAKKyAgICA8YW5pbWF0b3IgbmFtZT0iX2RvQ2xvc2UiIGF0dHJpYnV0ZT0ieCIgdG89Ii0yNzAiIAorICAgICAgICAgICAgICBkdXJhdGlvbj0iNzUwIiBzdGFydGVkPSJmYWxzZSI+CisgICAgPC9hbmltYXRvcj4KKyAgICAKKzwvY2xhc3M+CisKKworCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6cmVjb3JkY29udGVudC9tZXNzYWdlUmVjb3JkaW5nV2luLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L21lc3NhZ2VSZWNvcmRpbmdXaW4ubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIyNjE0OTUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6cmVjb3JkY29udGVudC9tZXNzYWdlUmVjb3JkaW5nV2luLmx6eApAQCAtMCwwICsxLDQ2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8Y2xhc3MgbmFtZT0ibWVzc2FnZVJlY29yZGluZ1dpbiIgZXh0ZW5kcz0iZ3VpUHJlc2VudGVyIiBsYWJlbGlkPSI4OTAiIHk9IjEwMCIKKyAgICBkb2NraW5nPSJ0cnVlIiByZXNpemVhYmxlPSJ0cnVlIiBjbG9zYWJsZT0idHJ1ZSIgd2lkdGg9IjQwMCIgCisgICAgeD0iJG9uY2V7IHBhcmVudC53aWR0aC8yIC0gdGhpcy53aWR0aC8yIH0iIGhlaWdodD0iMjQwIj4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9ImVycm9yIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJsYWJlbFRpdGxlSWQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisgICAgCisJPHZpZXcgeD0iNCIgcmVzb3VyY2U9Indhcm5pbmdfaWNvbl9yc2MiIHk9IjI0IiAvPiAgICAKKwkKKwk8bGFiZWxUZXh0IGxhYmVsaWQ9IiRvbmNleyBwYXJlbnQubGFiZWxUaXRsZUlkIH0iIHk9IjI0IiB4PSIzMCIgLz4KKyAgICAKKyAgICA8dmlldyB4PSIyIiB3aWR0aD0iJHsgcGFyZW50LndpZHRoIC0gNCB9IiBjbGlwPSJ0cnVlIgorICAgICAgICAJCQkJeT0iNDgiIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodC03NCB9Ij4KKyAgICAgICAgPGxhYmVsVGV4dCB0ZXh0PSIkb25jZXsgcGFyZW50LnBhcmVudC5lcnJvciB9IiB3aWR0aD0iJHsgcGFyZW50LndpZHRoIC0gMTggfSIKKyAgICAgICAgCQkgICBtdWx0aWxpbmU9InRydWUiIHJlc2l6ZT0iZmFsc2UiIHNlbGVjdGFibGU9InRydWUiIC8+CisgICAgICAgIDxvbV92c2Nyb2xsYmFyIC8+CisgICAgPC92aWV3PgorCQorICAgIDxzaW1wbGVMYWJlbEJ1dHRvbiBsYWJlbGlkPSI4OTEiIHdpZHRoPSIxMDAiIG9uY2xpY2s9InRoaXMucGFyZW50LmNsb3NlKCk7IiAKKwkJICAgeD0iJHsgcGFyZW50LndpZHRoLTEwNCB9IiB5PSIkeyBwYXJlbnQuaGVpZ2h0LTI0IH0iIC8+CisKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L3Jlc291cmNlcy9hcnJvd19yZWZyZXNoX3NtYWxsLnBuZyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L3Jlc291cmNlcy9hcnJvd19yZWZyZXNoX3NtYWxsLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzA4N2RmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9senJlY29yZGNvbnRlbnQvcmVzb3VyY2VzL2Fycm93X3JlZnJlc2hfc21hbGwucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L3Jlc291cmNlcy9kb3dubG9hZC5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6cmVjb3JkY29udGVudC9yZXNvdXJjZXMvZG93bmxvYWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjOTAxM2UKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6cmVjb3JkY29udGVudC9yZXNvdXJjZXMvZG93bmxvYWQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L3Jlc291cmNlcy9pY29uX2Zsdl9yZWNvcmRpbmdfdmlkZW9fZW5kLnBuZyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L3Jlc291cmNlcy9pY29uX2Zsdl9yZWNvcmRpbmdfdmlkZW9fZW5kLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOGQ1ZDMyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9senJlY29yZGNvbnRlbnQvcmVzb3VyY2VzL2ljb25fZmx2X3JlY29yZGluZ192aWRlb19lbmQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L3Jlc291cmNlcy9pY29uX2Zsdl9yZWNvcmRpbmdfdmlkZW9fc3RhcnQucG5nIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9senJlY29yZGNvbnRlbnQvcmVzb3VyY2VzL2ljb25fZmx2X3JlY29yZGluZ192aWRlb19zdGFydC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDAxNGM4YQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L3Jlc291cmNlcy9pY29uX2Zsdl9yZWNvcmRpbmdfdmlkZW9fc3RhcnQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L3Jlc291cmNlcy9pbmZvcm1hdGlvbi5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6cmVjb3JkY29udGVudC9yZXNvdXJjZXMvaW5mb3JtYXRpb24ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyY2QxYWUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6cmVjb3JkY29udGVudC9yZXNvdXJjZXMvaW5mb3JtYXRpb24ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L3Jlc291cmNlcy9sZWRncmVlbi5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6cmVjb3JkY29udGVudC9yZXNvdXJjZXMvbGVkZ3JlZW4ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjZjEzOTIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6cmVjb3JkY29udGVudC9yZXNvdXJjZXMvbGVkZ3JlZW4ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L3Jlc291cmNlcy9sZWRyZWQucG5nIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9senJlY29yZGNvbnRlbnQvcmVzb3VyY2VzL2xlZHJlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTg1NTU0YwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L3Jlc291cmNlcy9sZWRyZWQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L3Jlc291cmNlcy9wcm9ncmVzc19wb2ludGVyLmZsYSBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L3Jlc291cmNlcy9wcm9ncmVzc19wb2ludGVyLmZsYQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTBmZTBiCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9senJlY29yZGNvbnRlbnQvcmVzb3VyY2VzL3Byb2dyZXNzX3BvaW50ZXIuZmxhCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L3Jlc291cmNlcy9wcm9ncmVzc19wb2ludGVyLnN3ZiBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L3Jlc291cmNlcy9wcm9ncmVzc19wb2ludGVyLnN3ZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNmVlYjEzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9senJlY29yZGNvbnRlbnQvcmVzb3VyY2VzL3Byb2dyZXNzX3BvaW50ZXIuc3dmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L3Jlc291cmNlcy9wcm9ncmVzc19wb2ludGVyX2JpZy5mbGEgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6cmVjb3JkY29udGVudC9yZXNvdXJjZXMvcHJvZ3Jlc3NfcG9pbnRlcl9iaWcuZmxhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzZTU3OWEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6cmVjb3JkY29udGVudC9yZXNvdXJjZXMvcHJvZ3Jlc3NfcG9pbnRlcl9iaWcuZmxhCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L3Jlc291cmNlcy9wcm9ncmVzc19wb2ludGVyX2JpZy5zd2YgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6cmVjb3JkY29udGVudC9yZXNvdXJjZXMvcHJvZ3Jlc3NfcG9pbnRlcl9iaWcuc3dmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxMjRiYzIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6cmVjb3JkY29udGVudC9yZXNvdXJjZXMvcHJvZ3Jlc3NfcG9pbnRlcl9iaWcuc3dmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L3Jlc291cmNlcy93ZWJzdGFydF9wbGF5LnBuZyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L3Jlc291cmNlcy93ZWJzdGFydF9wbGF5LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDEzNjgzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9senJlY29yZGNvbnRlbnQvcmVzb3VyY2VzL3dlYnN0YXJ0X3BsYXkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L3Jlc291cmNlcy93ZWJzdGFydF9wbGF5X3NtYWxsLnBuZyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L3Jlc291cmNlcy93ZWJzdGFydF9wbGF5X3NtYWxsLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOWEzM2VkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9senJlY29yZGNvbnRlbnQvcmVzb3VyY2VzL3dlYnN0YXJ0X3BsYXlfc21hbGwucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L3Jlc291cmNlcy93ZWJzdGFydF9zdG9wX3NtYWxsLnBuZyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L3Jlc291cmNlcy93ZWJzdGFydF9zdG9wX3NtYWxsLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Mzg4YmQ4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9senJlY29yZGNvbnRlbnQvcmVzb3VyY2VzL3dlYnN0YXJ0X3N0b3Bfc21hbGwucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L3RyZWVpdGVtcy9iYXNlRkxWRXhwbG9yZXJJdGVtLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L3RyZWVpdGVtcy9iYXNlRkxWRXhwbG9yZXJJdGVtLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNWZlMzNiCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9senJlY29yZGNvbnRlbnQvdHJlZWl0ZW1zL2Jhc2VGTFZFeHBsb3Jlckl0ZW0ubHp4CkBAIC0wLDAgKzEsMzczIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8Y2xhc3MgbmFtZT0iYmFzZUZMVkV4cGxvcmVySXRlbSIgZXh0ZW5kcz0idmlldyI+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJyZWZPYmpMaXN0Um9vdCIgdmFsdWU9Im51bGwiLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9ImlzUm9vdCIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0iZmlsZUljb24iIHR5cGU9InN0cmluZyIgdmFsdWU9InN0cmluZyIgLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9Im9wZW4iIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9ImZpbGVFeHBsb3Jlckl0ZW1JZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKwk8YXR0cmlidXRlIG5hbWU9ImlzT3duZXIiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9ImlzRm9sZGVyIiB2YWx1ZT0idHJ1ZSIgdHlwZT0iYm9vbGVhbiIgLz4KKwk8YXR0cmlidXRlIG5hbWU9ImlzSW1hZ2UiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKwk8YXR0cmlidXRlIG5hbWU9ImlzUHJlc2VudGF0aW9uIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJmaWxlTmFtZSIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0iZmlsZUhhc2giIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9InNlbGVjdGVkIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9InNpbmdsZUNsaWNrRGVsZWdhdGUiIHZhbHVlPSJudWxsIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0ic2luZ2xlQ2xpY2tTdGFydGVkIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJpc01vdXNlRG93bkRyYWdBY3Rpb24iIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIvPgorCQorCTwhLS0gSWYgdGhpcyBpcyB0cnVlLCB0aGVuIHRoaXMgaXRlbSBoYXMgYmVlbiBkcmFnLW4tZHJvcGVkIGFuZCBpdCBtYWtlcyBubyAKKwkgICAgICAgc2Vuc2UgdG8gaGFuZGxlIGFueSBzaW5nbGUgb3IgZG91YmxlIGNsaWNrIGV2ZW50IC0tPgorCTxhdHRyaWJ1dGUgbmFtZT0ibW91c2VEb3duQ2xpY2tVc2VkIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJtb3VzZURvd25DbGlja0RlbGVnYXRlIiB2YWx1ZT0ibnVsbCIgLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9ImlzVHJhc2hDYW4iIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKwkKKwk8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorCQl0aGlzLnNpbmdsZUNsaWNrRGVsZWdhdGUgPSBuZXcgTHpEZWxlZ2F0ZSggdGhpcywgImRvU2luZ2xlQ2xpY2siICk7CisJCXRoaXMucmVzZXRDbGlja0RlbGVnYXRlID0gbmV3IEx6RGVsZWdhdGUoIHRoaXMsICJkb1Jlc2V0U2luZ2xlQ2xpY2siICk7CisJCXRoaXMubW91c2VEb3duQ2xpY2tEZWxlZ2F0ZSA9IG5ldyBMekRlbGVnYXRlKCB0aGlzLCAiZG9Nb3VzZURvd25DbGljayIgKTsKKwkJaWYgKHRoaXMuaXNGb2xkZXIpIHsKKwkJICAgIGx6LlRyYWNrLnJlZ2lzdGVyKHRoaXMuX2ZpbGVOYW1lLCBjYW52YXMuY3VycmVudEltYWdlc0xpc3RkcmF3LmN1cnJlbnRUcmFja0dyb3VwTmFtZSk7CisJCX0KKwk8L2hhbmRsZXI+CisJCisJPG1ldGhvZCBuYW1lPSJkb09wZW4iPgorCQl0aGlzLm9wZW4gPSB0cnVlOworCQlpZiAodGhpcy5pc0ZvbGRlcikgeworICAgIAkJdGhpcy5pY29uX2ZvbGRlcl9wcmUuc2V0QXR0cmlidXRlKCJmcmFtZSIsMik7CisgICAgCQl0aGlzLmNvbnRlbnQuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworCQkJdGhpcy5fZm9sZGVySWNvbi5zZXRBdHRyaWJ1dGUoImZyYW1lIiwyKTsKKwkJICAgIHRoaXMuZ2V0RkxWRXhwbG9yZXJCeVBhcmVudC5kb0NhbGwoKTsKKwkJfQorCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0iZG9DbG9zZSI+CisJCXRoaXMub3BlbiA9IGZhbHNlOworCQlpZiAodGhpcy5pc0ZvbGRlcikgeworICAgICAgICAgICAgdGhpcy5pY29uX2ZvbGRlcl9wcmUuc2V0QXR0cmlidXRlKCJmcmFtZSIsMSk7CisgICAgICAgICAgICB0aGlzLmNvbnRlbnQuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgICAgICAgICB0aGlzLl9mb2xkZXJJY29uLnNldEF0dHJpYnV0ZSgiZnJhbWUiLDEpOworCQl9CisJPC9tZXRob2Q+CisJCisgICAgPG1ldGhvZCBuYW1lPSJkb01vdXNlRG93bkNsaWNrIiBhcmdzPSJpdGVtT2JqIj4KKyAgICAJdGhpcy5tb3VzZURvd25DbGlja1VzZWQgPSB0cnVlOworICAgIAlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgibW91c2VEb3duIENMSUNLIFN0YXJ0IERyYWcgQW5kIERyb3AiKTsKKyAgICAJbmV3IGx6LmRyYWdJdGVtRkxWRXhwbG9yZXIoY2FudmFzLHsKKyAgICAJCSAgICAgICAgZHJhZ0l0ZW1SZXNvdXJjZTp0aGlzLmZpbGVJY29uLAorICAgICAgICAgICAgCSAgICByZWZPYmo6dGhpcywKKyAgICAgICAgICAgICAgICAgICAgeDpjYW52YXMuZ2V0TW91c2UoJ3gnKSwKKyAgICAgICAgICAgICAgICAgICAgeTpjYW52YXMuZ2V0TW91c2UoJ3knKQorICAgICAgICAgICAgCX0pCisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJkZWxldGVGaWxlIiBhcmdzPSJsYWJlbGlkIj4KKyAgICAJbmV3IGx6LmNvbmZpcm1hdGlvblNpbmdsZShjYW52YXMseworICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmT2JqOnRoaXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbGlkOmxhYmVsaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbGlkZXJyb3I6NzEzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvd0NoZWNrQm94OmZhbHNlCisgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAJLy90aGlzLmRlbGV0ZUZpbGVPckZvbGRlcigpOworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0ic2VuZENvbmZpcm1hdGlvbiIgYXJncz0iYm9vbCxhc2tBZ2FpbiI+CisgICAgICAgIGlmIChib29sKSB7CisgICAgICAgICAgICB0aGlzLmRlbGV0ZUZMVk9yRm9sZGVyLmRvQ2FsbCgpOworICAgICAgICB9CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iZGVsZXRlRkxWT3JGb2xkZXIiIGZ1bmNuYW1lPSJmbHZyZWNvcmRlcnNlcnZpY2UuZGVsZXRlRkxWT3JGb2xkZXIiIAorICAgICAgICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAKKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBjYW52YXMuc2Vzc2lvbklkOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC5maWxlRXhwbG9yZXJJdGVtSWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+ICAgIAorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImRlbGV0ZUZMVk9yRm9sZGVyOiAiLHZhbHVlKTsKKyAgICAgICAgICAgIHBhcmVudC5wYXJlbnQucGFyZW50LmRvT3BlbigpOworICAgICAgICAgICAgcGFyZW50LnJlZk9iakxpc3RSb290Ll9zZWxlY3RlZCA9IG51bGw7CisgICAgICAgICAgICBwYXJlbnQucmVmT2JqTGlzdFJvb3QucGFyZW50Rm9sZGVySWQgPSAtMjsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4gCisgICAgCisJPG1ldGhvZCBuYW1lPSJkb1NpbmdsZUNsaWNrIiBhcmdzPSJpdGVtT2JqIj4KKwkJdGhpcy5zaW5nbGVDbGlja1N0YXJ0ZWQgPSBmYWxzZTsKKwkJLy9DYW5ub3QgY2hhbmdlIG5hbWUgZm9yIFJvb3QgSWNvbnMKKwkJaWYgKHRoaXMuaXNSb290KSB7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKwkJdGhpcy5hZGRPclVwZGF0ZUZvbGRlck5hbWUodGhpcy5maWxlRXhwbG9yZXJJdGVtSWQsZmFsc2UpOworCTwvbWV0aG9kPgorCQorCTwhLS0KKyAgICAgICAgQ2hlY2sgaWYgdGhpcyBpcyB0aGUgT3duZXIKKyAgICAgLS0+CisgICAgPG1ldGhvZCBuYW1lPSJjaGVja0ZvcklzT3duZXIiPgorICAgICAgICBpZiAodGhpcy5pc1Jvb3QpIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLmlzT3duZXI7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICByZXR1cm4gcGFyZW50LnBhcmVudC5jaGVja0ZvcklzT3duZXIoKTsKKyAgICAgICAgfQorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDwhLS0KKyAgICAgICAgQ2hlY2sgaWYgdGhlIHVzZXIgdHJpZXMgdG8gbW92ZSBhIGZpbGUgaW4gaXRzIG93biB0cmVlLAorICAgICAgICBzZWUgbW92ZUZpbGUKKyAgICAgLS0+CisgICAgPG1ldGhvZCBuYW1lPSJjaGVja0ZvcklzQ2hpbGQiIGFyZ3M9ImNvbXBhcmVGaWxlRXhwbG9yZXJJdGVtSWQiPgorICAgICAgICBpZiAodGhpcy5pc1Jvb3QpIHsKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGlmICh0aGlzLmZpbGVFeHBsb3Jlckl0ZW1JZCA9PSBjb21wYXJlRmlsZUV4cGxvcmVySXRlbUlkKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHJldHVybiBwYXJlbnQucGFyZW50LmNoZWNrRm9ySXNDaGlsZChjb21wYXJlRmlsZUV4cGxvcmVySXRlbUlkKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIDwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0iZG9SZXNldFNpbmdsZUNsaWNrIiBhcmdzPSJpdG1lT2JqIj4KKwkJdGhpcy5zaW5nbGVDbGlja1N0YXJ0ZWQgPSBmYWxzZTsKKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9ImFkZEZpbGUiPgorCQl0aGlzLnJlZk9iakxpc3RSb290LnNlbGVjdEl0ZW0odGhpcyk7CisJCXRoaXMucmVmT2JqTGlzdFJvb3QuYWRkRmlsZSgpOworCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0iYWRkRm9sZGVyIj4KKwkJaWYgKHRoaXMuaXNGb2xkZXIpIHsKKwkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJORVcgdGhpcy5maWxlRXhwbG9yZXJJdGVtSWQgSU5UTyAiLHRoaXMpOworCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIk5FVyB0aGlzLmZpbGVFeHBsb3Jlckl0ZW1JZCAiLHRoaXMuZmlsZUV4cGxvcmVySXRlbUlkKTsKKwkJCXRoaXMuaWNvbl9mb2xkZXJfcHJlLnNldEF0dHJpYnV0ZSgiZnJhbWUiLDIpOworICAgICAgICAgICAgdGhpcy5jb250ZW50LnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKyAgICAgICAgICAgIHRoaXMuX2ZvbGRlckljb24uc2V0QXR0cmlidXRlKCJmcmFtZSIsMik7CisgICAgCQl2YXIgdCA9IG5ldyBsei5mb2xkZXJGTFZFeHBsb3Jlckl0ZW0odGhpcy5jb250ZW50LHsKKyAgICAJCQkgICAgICAgICAgICBpc093bmVyOnRoaXMuaXNPd25lciwKKyAgICAJCQkgICAgICAgICAgICBpc0ZvbGRlcjp0cnVlLAorICAgICAgICAgICAgICAgIAkJICAgIGZpbGVJY29uOidpY29uX2ZvbGRlcl9yc2MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZk9iakxpc3RSb290OnRoaXMucmVmT2JqTGlzdFJvb3QsCisgICAgICAgICAgICAgICAgCQkgICAgZmlsZU5hbWU6Y2FudmFzLmdldExhYmVsTmFtZSg3MTIpCisgICAgICAgICAgICAgICAgCQl9KTsKKyAgICAgICAgICAgIHQuYWRkT3JVcGRhdGVGb2xkZXJOYW1lKHRoaXMuZmlsZUV4cGxvcmVySXRlbUlkLHRydWUpOworCQl9CisJPC9tZXRob2Q+CisJCisJPG1ldGhvZCBuYW1lPSJyZWZyZXNoIj4KKwkJdGhpcy5kb09wZW4oKTsKKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9ImVkaXRGb2xkZXJOYW1lIj4KKwkJdGhpcy5hZGRPclVwZGF0ZUZvbGRlck5hbWUodGhpcy5maWxlRXhwbG9yZXJJdGVtSWQsZmFsc2UpOworCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0ibG9hZEZMViI+CisJCXRoaXMucmVmT2JqTGlzdFJvb3QubG9hZEZMVih0aGlzKTsKKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9ImFkZE9yVXBkYXRlRm9sZGVyTmFtZSIgYXJncz0iZmlsZUV4cGxvcmVySXRlbUlkLGlzTmV3Ij4KKwkJPCFbQ0RBVEFbCisgICAgCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiYWRkT3JVcGRhdGVGb2xkZXJOYW1lICIsZmlsZUV4cGxvcmVySXRlbUlkKTsKKyAgICAJCXZhciB0V2lkdGggPSB0aGlzLl9maWxlTmFtZS53aWR0aDsKKyAgICAJCWlmICh0V2lkdGggPCAxNjApIHsKKyAgICAJCQl0V2lkdGggPSAxNjA7CisgICAgCQl9CisgICAgCQkKKyAgICAJCXZhciB0ID0gbmV3IGx6LmR5bmFtaWNGTFZOYW1lKGNhbnZhcyx7CisgICAgCQkJICAgICAgICBwYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQ6ZmlsZUV4cGxvcmVySXRlbUlkLAorICAgIAkJCSAgICAgICAgZmlsZUV4cGxvcmVySXRlbUlkOnRoaXMuZmlsZUV4cGxvcmVySXRlbUlkLCAvL09ubHkgdXNlZCBhdCB1cGRhdGUgTmFtZQorICAgIAkJCSAgICAgICAgaXNPd25lcjp0aGlzLmlzT3duZXIsCisgICAgCQkJICAgICAgICB0ZXh0OnRoaXMuZmlsZU5hbWUsCisgICAgCQkJICAgICAgICBpc05ldzppc05ldywgLy9mYWxzZSBtZWFucyBpdHMgYSByZW5hbWluZworICAgIAkJCSAgICAgICAgcmVmT2JqOnRoaXMsd2lkdGg6dFdpZHRoKzEwLAorICAgICAgICAgICAgCQkgICAgeDp0aGlzLl9maWxlTmFtZS5nZXRBdHRyaWJ1dGVSZWxhdGl2ZSgieCIsY2FudmFzKSwKKyAgICAgICAgICAgIAkJICAgIHk6dGhpcy5fZmlsZU5hbWUuZ2V0QXR0cmlidXRlUmVsYXRpdmUoInkiLGNhbnZhcykKKyAgICAgICAgICAgIAkJfSk7CisgICAgICAgICAgICAJCQorICAgICAgICAgICAgbHouRm9jdXMuc2V0Rm9jdXModCx0cnVlKTsKKyAgICAgICAgICAgIGx6Lk1vZGVNYW5hZ2VyLm1ha2VNb2RhbCh0KTsKKyAgICAgICAgICAgIAorICAgICAgICBdXT4KKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9InRvZ2dsZU9wZW4iIGFyZ3M9InNldFNlbGVjdGlvbiI+CisJCWlmICh0aGlzLm1vdXNlRG93bkNsaWNrVXNlZCkgeworCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm1vdXNlRG93bkNsaWNrVXNlZCBSRVNFVCBUTyBERUZBVUxUIEJVVCBETyBOTyBBQ1RJT04gQ2F1c2UgaXRzIGEgRHJhZyBhbmQgRHJvcCBFdmVudCIpOworCQkJdGhpcy5tb3VzZURvd25DbGlja1VzZWQgPSBmYWxzZTsKKwkJCXJldHVybjsKKwkJfQorCQkKKwkJaWYgKHRoaXMuc2luZ2xlQ2xpY2tTdGFydGVkKSB7CisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiSXMgdGhpcyBzZWxlY3RlZCA9PiBEb3VibGUgQ2xpY2sgISEhIik7CisgICAgICAgICAgICB0aGlzLnNpbmdsZUNsaWNrU3RhcnRlZCA9IGZhbHNlOworICAgICAgICAgICAgbHouVGltZXIucmVtb3ZlVGltZXIoIHRoaXMuc2luZ2xlQ2xpY2tEZWxlZ2F0ZSApOworICAgICAgICAgICAgaWYgKHRoaXMuaXNGb2xkZXIpIHsKKyAgICAgICAgICAgICAgICB0aGlzLmRvU2luZ2xlQ2xpY2sobnVsbCk7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHRoaXMubG9hZEZMVigpOworICAgICAgICAgICAgfQorICAgICAgICB9IGVsc2UgeworICAgICAgICAJCisgICAgICAgIAlpZiAodGhpcy5pc0ZvbGRlcil7CisgICAgICAgIAkJaWYgKCF0aGlzLm9wZW4pIHsKKyAgICAgICAgCQkJdGhpcy5kb09wZW4oKTsKKyAgICAgICAgCQl9IGVsc2UgeworICAgICAgICAJCQlpZiAoc2V0U2VsZWN0aW9uKSB7CisgICAgICAgICAgICAJCQlpZiAodGhpcy5zZWxlY3RlZCkgeworICAgICAgICAgICAgCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJJcyB0aGlzIHNlbGVjdGVkID0+IERvIEVkaXQgISEhIik7CisgICAgICAgICAgICAJCQkJdGhpcy5zaW5nbGVDbGlja1N0YXJ0ZWQgPSB0cnVlOworICAgICAgICAgICAgCQkJICAgIGx6LlRpbWVyLmFkZFRpbWVyKCB0aGlzLnNpbmdsZUNsaWNrRGVsZWdhdGUsIDMwMCApOworICAgICAgICAgICAgCQkJfSBlbHNlIHsKKyAgICAgICAgICAgIAkJCQkKKyAgICAgICAgICAgIAkJCQl0aGlzLnNpbmdsZUNsaWNrU3RhcnRlZCA9IHRydWU7CisgICAgICAgICAgICAJCQkJbHouVGltZXIuYWRkVGltZXIoIHRoaXMucmVzZXRDbGlja0RlbGVnYXRlLCAzMDAgKTsKKyAgICAgICAgICAgIAkJCX0KKyAgICAgICAgCQkJfSBlbHNlIHsKKyAgICAgICAgCQkJCXRoaXMuZG9DbG9zZSgpOworICAgICAgICAJCQl9CisgICAgICAgIAkJfQorICAgICAgICAJfSBlbHNlIHsKKyAgICAgICAgCQlpZiAoc2V0U2VsZWN0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGVkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiSXMgdGhpcyBzZWxlY3RlZCA9PiBEbyBFZGl0ICEhISIpOworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaW5nbGVDbGlja1N0YXJ0ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgbHouVGltZXIuYWRkVGltZXIoIHRoaXMuc2luZ2xlQ2xpY2tEZWxlZ2F0ZSwgMzAwICk7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNpbmdsZUNsaWNrU3RhcnRlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBsei5UaW1lci5hZGRUaW1lciggdGhpcy5yZXNldENsaWNrRGVsZWdhdGUsIDMwMCApOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAJfQorCQl9CisJCQorCQlpZiAoc2V0U2VsZWN0aW9uKSB0aGlzLnJlZk9iakxpc3RSb290LnNlbGVjdEl0ZW0odGhpcyk7CisJPC9tZXRob2Q+CisJCisJPG1ldGhvZCBuYW1lPSJzZWxlY3RJdGVtIj4KKwkJdGhpcy5zZWxlY3RlZCA9IHRydWU7CisJCXRoaXMuX2ZpbGVOYW1lLnNldEF0dHJpYnV0ZSgiYmdjb2xvciIsY2FudmFzLmdldFRoZW1lQ29sb3IoJ2Jhc2VNb3VzZWNvbG9yaXplcicpKTsKKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9ImRlc2VsZWN0SXRlbSI+CisJCXRoaXMuc2VsZWN0ZWQgPSBmYWxzZTsKKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUodGhpcy5fZmlsZU5hbWUpOworICAgICAgICB0aGlzLl9maWxlTmFtZS5zZXRBdHRyaWJ1dGUoImJnY29sb3IiLDB4RkZGRkZGKTsKKyAgICA8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9ImNsZWFyQ29udGVudCI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgZm9yICh2YXIgZWcgaW4gdGhpcy5jb250ZW50LnN1YnZpZXdzKSB7CisgICAgICAgICAgICAgICAgdGhpcy5jb250ZW50LnN1YnZpZXdzW2VnXS5kZXN0cm95KCk7CisgICAgICAgICAgICB9CisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorCQorCTwhLS0KKwkgICBwdWJsaWMgTGlzdDxGaWxlRXhwbG9yZXJJdGVtPiBnZXRGaWxlRXhwbG9yZXJCeVBhcmVudChTdHJpbmcgU0lELCBMb25nIHBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCwgCisJICAgICAgICAgICAgICAgTG9uZyByb29tX2lkLCBCb29sZWFuIGlzT3duZXIpIHsKKyAgICAgLS0+CisJPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iZ2V0RkxWRXhwbG9yZXJCeVBhcmVudCIgZnVuY25hbWU9ImZsdnJlY29yZGVyc2VydmljZS5nZXRGTFZFeHBsb3JlckJ5UGFyZW50IiAKKyAgICAgICAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gICAKKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBjYW52YXMuc2Vzc2lvbklkOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC5maWxlRXhwbG9yZXJJdGVtSWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4gIAorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQuaXNPd25lcjs8L21ldGhvZD48L25ldHBhcmFtPiAgICAgICAgIAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4gICAgCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZ2V0RkxWRXhwbG9yZXJCeVBhcmVudDogIix2YWx1ZSk7CisgICAgICAgICAgICBwYXJlbnQucmVuZGVyRmlsZXNBbmRGb2xkZXJzKHZhbHVlKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4gIAorICAgIAorICAgIDxtZXRob2QgbmFtZT0icmVuZGVyRmlsZXNBbmRGb2xkZXJzIiBhcmdzPSJyb29tSG9tZSI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgdGhpcy5jbGVhckNvbnRlbnQoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy9Gb2xkZXIgYXJlYQorICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8cm9vbUhvbWUubGVuZ3RoO2krKykgeworICAgICAgICAgICAgICAgIHZhciBmaWxlRXhwbG9yZXJJdGVtID0gcm9vbUhvbWVbaV07CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKGZpbGVFeHBsb3Jlckl0ZW0uaXNGb2xkZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgbmV3IGx6LmZvbGRlckZMVkV4cGxvcmVySXRlbSh0aGlzLmNvbnRlbnQseworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlTmFtZTpmaWxlRXhwbG9yZXJJdGVtLmZpbGVOYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlRXhwbG9yZXJJdGVtSWQ6ZmlsZUV4cGxvcmVySXRlbS5mbHZSZWNvcmRpbmdJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUljb246J2ljb25fZm9sZGVyX3JzYycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZk9iakxpc3RSb290OnRoaXMucmVmT2JqTGlzdFJvb3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBuZXcgbHouZmx2RXhwbG9yZXJJdGVtKHRoaXMuY29udGVudCx7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzRm9sZGVyOmZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlRXhwbG9yZXJJdGVtSWQ6ZmlsZUV4cGxvcmVySXRlbS5mbHZSZWNvcmRpbmdJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZU5hbWU6ZmlsZUV4cGxvcmVySXRlbS5maWxlTmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZUhhc2g6ZmlsZUV4cGxvcmVySXRlbS5maWxlSGFzaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNGb2xkZXI6ZmFsc2UsaXNJbWFnZTp0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlSWNvbjonZmlsZV9leHBsb3Jlcl92aWRlb19yc2MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZPYmpMaXN0Um9vdDp0aGlzLnJlZk9iakxpc3RSb290CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKwkKKwk8dmlldyBuYW1lPSJpY29uX2ZvbGRlcl9wcmUiIAorCQkgIHZpc2liaWxpdHk9IiRvbmNleyAocGFyZW50LmlzRm9sZGVyKSA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nIH0iCisJCSAgcmVzb3VyY2U9Imljb25fZm9sZGVyX3ByZV9yc2MiIGZyYW1lPSIxIiA+CisJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorCQkJcGFyZW50LnRvZ2dsZU9wZW4oZmFsc2UpOworCQk8L2hhbmRsZXI+CisJPC92aWV3PgorCQorCTx2aWV3IG5hbWU9Il9mb2xkZXJJY29uIiByZXNvdXJjZT0iJG9uY2V7IHBhcmVudC5maWxlSWNvbiB9IiB4PSIxNiIgeT0iMiIgPgorCQk8aGFuZGxlciBuYW1lPSJvbm1vdXNlZG93biI+CisJCQlpZiAocGFyZW50LmlzUm9vdCkgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGx6LlRpbWVyLmFkZFRpbWVyKCBwYXJlbnQubW91c2VEb3duQ2xpY2tEZWxlZ2F0ZSwgMzAwICk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZXVwIj4KKyAgICAgICAgCWlmIChwYXJlbnQuaXNSb290KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbHouVGltZXIucmVtb3ZlVGltZXIoIHBhcmVudC5tb3VzZURvd25DbGlja0RlbGVnYXRlICk7CisgICAgICAgIDwvaGFuZGxlcj4KKwkJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisJCQlwYXJlbnQudG9nZ2xlT3BlbihmYWxzZSk7CisJCTwvaGFuZGxlcj4KKwk8L3ZpZXc+CisJCis8L2NsYXNzPgorCisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L3RyZWVpdGVtcy9mbHZFeHBsb3Jlckl0ZW0ubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9senJlY29yZGNvbnRlbnQvdHJlZWl0ZW1zL2ZsdkV4cGxvcmVySXRlbS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzBkNGMyYwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L3RyZWVpdGVtcy9mbHZFeHBsb3Jlckl0ZW0ubHp4CkBAIC0wLDAgKzEsNTkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKyAKKzxjbGFzcyBuYW1lPSJmbHZFeHBsb3Jlckl0ZW0iIGV4dGVuZHM9ImJhc2VGTFZFeHBsb3Jlckl0ZW0iIGlzRm9sZGVyPSJ0cnVlIj4KKwkKKyAgICAKKwk8dGV4dCBuYW1lPSJfZmlsZU5hbWUiIHg9IjM2IiB0ZXh0PSIkeyBwYXJlbnQuZmlsZU5hbWUgfSIgZm9udHNpemU9IjEwIiByZXNpemU9InRydWUiIHk9IjEiPgorCQk8Y29udGV4dG1lbnU+CisJCQkKKwkJCTxjb250ZXh0bWVudWl0ZW0gY2FwdGlvbj0iJG9uY2V7IGNhbnZhcy5nZXRMYWJlbE5hbWUoNzExKSB9IiAKKwkJCQkJCQkgb25zZWxlY3Q9InBhcmVudC5wYXJlbnQucGFyZW50LmVkaXRGb2xkZXJOYW1lKCkiIC8+CisJCQkKKyAgICAgICAgICAgIDxjb250ZXh0bWVudWl0ZW0gY2FwdGlvbj0iJG9uY2V7IGNhbnZhcy5nZXRMYWJlbE5hbWUoNzE5KSB9IiAKKyAgICAgICAgICAgIAkJCQkgb25zZWxlY3Q9InBhcmVudC5wYXJlbnQucGFyZW50LmRlbGV0ZUZpbGUoNzE5KSIgLz4KKyAgICAgICAgICAgIAkJCQkgCisgICAgICAgIDwvY29udGV4dG1lbnU+CisgICAgICAgIAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNlZG93biI+CisgICAgICAgIAlpZiAocGFyZW50LmlzUm9vdCkgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGx6LlRpbWVyLmFkZFRpbWVyKCBwYXJlbnQubW91c2VEb3duQ2xpY2tEZWxlZ2F0ZSwgMzAwICk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZXVwIj4KKyAgICAgICAgCWlmIChwYXJlbnQuaXNSb290KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbHouVGltZXIucmVtb3ZlVGltZXIoIHBhcmVudC5tb3VzZURvd25DbGlja0RlbGVnYXRlICk7CisgICAgICAgIDwvaGFuZGxlcj4KKwkJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICBwYXJlbnQudG9nZ2xlT3Blbih0cnVlKTsKKyAgICAgICAgPC9oYW5kbGVyPgorCTwvdGV4dD4KKwkKKworPC9jbGFzcz4KKworCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6cmVjb3JkY29udGVudC90cmVlaXRlbXMvZm9sZGVyRkxWRXhwbG9yZXJJdGVtLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L3RyZWVpdGVtcy9mb2xkZXJGTFZFeHBsb3Jlckl0ZW0ubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4YWI0MTYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6cmVjb3JkY29udGVudC90cmVlaXRlbXMvZm9sZGVyRkxWRXhwbG9yZXJJdGVtLmx6eApAQCAtMCwwICsxLDc5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8Y2xhc3MgbmFtZT0iZm9sZGVyRkxWRXhwbG9yZXJJdGVtIiBleHRlbmRzPSJiYXNlRkxWRXhwbG9yZXJJdGVtIiBpc0ZvbGRlcj0idHJ1ZSI+CisJCisJPHRleHQgbmFtZT0iX2ZpbGVOYW1lIiB4PSIzNiIgdGV4dD0iJHsgcGFyZW50LmZpbGVOYW1lIH0iIGZvbnRzaXplPSIxMCIgcmVzaXplPSJ0cnVlIiB5PSIxIj4KKwkJPGNvbnRleHRtZW51PgorCQkJCisJCQk8Y29udGV4dG1lbnVpdGVtIGNhcHRpb249IiRvbmNleyBjYW52YXMuZ2V0TGFiZWxOYW1lKDcxMSkgfSIgCisJCQkJCQkJIG9uc2VsZWN0PSJwYXJlbnQucGFyZW50LnBhcmVudC5lZGl0Rm9sZGVyTmFtZSgpIiAvPgorCQkJCisgICAgICAgICAgICA8Y29udGV4dG1lbnVpdGVtIGNhcHRpb249IiRvbmNleyBjYW52YXMuZ2V0TGFiZWxOYW1lKDcwOSkgfSIgCisgICAgICAgICAgICAJCQkJIG9uc2VsZWN0PSJwYXJlbnQucGFyZW50LnBhcmVudC5hZGRGb2xkZXIoKSIgLz4KKyAgICAgICAgICAgIAkJCQkgCisgICAgICAgICAgICA8Y29udGV4dG1lbnVpdGVtIGNhcHRpb249IiRvbmNleyBjYW52YXMuZ2V0TGFiZWxOYW1lKDcxMCkgfSIgCisgICAgICAgICAgICAJCQkJIG9uc2VsZWN0PSJwYXJlbnQucGFyZW50LnBhcmVudC5kZWxldGVGaWxlKDcxOSkiIC8+CisgICAgICAgICAgICAJCQkJIAorICAgICAgICA8L2NvbnRleHRtZW51PgorICAgICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZXRyYWNrb3ZlciI+CisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbm1vdXNldHJhY2tvdmVyIik7CisgICAgICAgICAgICBjYW52YXMuY3VycmVudEltYWdlc0xpc3RkcmF3LmN1cnJlbnREcmFnSXRlbS5zZW5kT3Zlckl0ZW0ocGFyZW50KTsKKyAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJiZ2NvbG9yIiwweDkzRkU5Mik7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2V0cmFja291dCI+CisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbm1vdXNldHJhY2tvdXQiKTsKKyAgICAgICAgICAgIGNhbnZhcy5jdXJyZW50SW1hZ2VzTGlzdGRyYXcuY3VycmVudERyYWdJdGVtLnNlbmRPdXRJdGVtKHBhcmVudCk7CisgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgiYmdjb2xvciIsMHhGRkZGRkYpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNldHJhY2t1cCI+CisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib25tb3VzZXRyYWNrdXAiKTsKKyAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJiZ2NvbG9yIiwweEZGRkZGRik7CisgICAgICAgIDwvaGFuZGxlcj4gCisgICAgICAgIAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNlZG93biI+CisgICAgICAgIAlpZiAocGFyZW50LmlzUm9vdCkgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGx6LlRpbWVyLmFkZFRpbWVyKCBwYXJlbnQubW91c2VEb3duQ2xpY2tEZWxlZ2F0ZSwgMzAwICk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZXVwIj4KKyAgICAgICAgCWlmIChwYXJlbnQuaXNSb290KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbHouVGltZXIucmVtb3ZlVGltZXIoIHBhcmVudC5tb3VzZURvd25DbGlja0RlbGVnYXRlICk7CisgICAgICAgIDwvaGFuZGxlcj4KKwkJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICBwYXJlbnQudG9nZ2xlT3Blbih0cnVlKTsKKyAgICAgICAgPC9oYW5kbGVyPgorCTwvdGV4dD4KKwkKKwk8dmlldyBuYW1lPSJjb250ZW50IiB4PSIxMiIgeT0iMTgiIGxheW91dD0iYXhpczp5O2luc2V0OjEiIHZpc2liaWxpdHk9ImhpZGRlbiI+CisJCQorCTwvdmlldz4KKzwvY2xhc3M+CisKKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9senJlY29yZGNvbnRlbnQvdHJlZWl0ZW1zL2xpYnJhcnkubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9senJlY29yZGNvbnRlbnQvdHJlZWl0ZW1zL2xpYnJhcnkubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhYWQ1MmIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6cmVjb3JkY29udGVudC90cmVlaXRlbXMvbGlicmFyeS5sengKQEAgLTAsMCArMSwyOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKwkKKyAgICA8aW5jbHVkZSBocmVmPSJiYXNlRkxWRXhwbG9yZXJJdGVtLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJmb2xkZXJGTFZFeHBsb3Jlckl0ZW0ubHp4IiAvPgorICAgIDxpbmNsdWRlIGhyZWY9ImZsdkV4cGxvcmVySXRlbS5sengiIC8+CisgICAgPGluY2x1ZGUgaHJlZj0icm9vdEZMVkV4cGxvcmVySXRlbS5sengiIC8+CisgICAgCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6cmVjb3JkY29udGVudC90cmVlaXRlbXMvcm9vdEZMVkV4cGxvcmVySXRlbS5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL2x6cmVjb3JkY29udGVudC90cmVlaXRlbXMvcm9vdEZMVkV4cGxvcmVySXRlbS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGE3ZTE4NwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbHpyZWNvcmRjb250ZW50L3RyZWVpdGVtcy9yb290RkxWRXhwbG9yZXJJdGVtLmx6eApAQCAtMCwwICsxLDYxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8Y2xhc3MgbmFtZT0icm9vdEZMVkV4cGxvcmVySXRlbSIgZXh0ZW5kcz0iYmFzZUZMVkV4cGxvcmVySXRlbSIgaXNGb2xkZXI9InRydWUiIGlzUm9vdD0idHJ1ZSI+CisJCisJPHRleHQgbmFtZT0iX2ZpbGVOYW1lIiB4PSIzNiIgdGV4dD0iJHsgcGFyZW50LmZpbGVOYW1lIH0iIGZvbnRzaXplPSIxMCIgcmVzaXplPSJ0cnVlIiB5PSIxIj4KKwkJPGNvbnRleHRtZW51PgorICAgICAgICAgICAgCQkJCSAKKyAgICAgICAgICAgIDxjb250ZXh0bWVudWl0ZW0gY2FwdGlvbj0iJG9uY2V7IGNhbnZhcy5nZXRMYWJlbE5hbWUoNzA5KSB9IiAKKyAgICAgICAgICAgIAkJCQkgb25zZWxlY3Q9InBhcmVudC5wYXJlbnQucGFyZW50LmFkZEZvbGRlcigpIiAvPgorICAgICAgICAgICAgCQkJCSAKKyAgICAgICAgPC9jb250ZXh0bWVudT4KKyAgICAgICAgCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2V0cmFja292ZXIiPgorICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib25tb3VzZXRyYWNrb3ZlciIpOworICAgICAgICAgICAgY2FudmFzLmN1cnJlbnRJbWFnZXNMaXN0ZHJhdy5jdXJyZW50RHJhZ0l0ZW0uc2VuZE92ZXJJdGVtKHBhcmVudCk7CisgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgiYmdjb2xvciIsMHg5M0ZFOTIpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNldHJhY2tvdXQiPgorICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib25tb3VzZXRyYWNrb3V0Iik7CisgICAgICAgICAgICBjYW52YXMuY3VycmVudEltYWdlc0xpc3RkcmF3LmN1cnJlbnREcmFnSXRlbS5zZW5kT3V0SXRlbShwYXJlbnQpOworICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoImJnY29sb3IiLDB4RkZGRkZGKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZXRyYWNrdXAiPgorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9ubW91c2V0cmFja3VwIik7CisgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgiYmdjb2xvciIsMHhGRkZGRkYpOworICAgICAgICA8L2hhbmRsZXI+IAorICAgICAgICAKKwkJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICBwYXJlbnQudG9nZ2xlT3Blbih0cnVlKTsKKyAgICAgICAgPC9oYW5kbGVyPgorCTwvdGV4dD4KKwkKKwk8dmlldyBuYW1lPSJjb250ZW50IiB4PSIxMiIgeT0iMTgiIGxheW91dD0iYXhpczp5O2luc2V0OjEiIHZpc2liaWxpdHk9ImhpZGRlbiI+CisJCQorCTwvdmlldz4KKzwvY2xhc3M+CisKKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9tZWV0aW5ncy9hbGxtZWV0aW5ncy5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL21lZXRpbmdzL2FsbG1lZXRpbmdzLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NWIzMTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9tZWV0aW5ncy9hbGxtZWV0aW5ncy5sengKQEAgLTAsMCArMSwzNDAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzxjbGFzcyBuYW1lPSJhbGxtZWV0aW5ncyIgZXh0ZW5kcz0iYmFzZUNvbnRlbnRWaWV3IiBoZWlnaHQ9IiR7IGNhbnZhcy5oZWlnaHQtY2FudmFzLm5hdmlIZWlnaHQgfSI+CisJPGF0dHJpYnV0ZSBuYW1lPSJmaW5pc2hlZFRhYnNRdWFudGl0eSIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0iMCIvPgkKKwk8YXR0cmlidXRlIG5hbWU9ImNsaWNrZWRCdXR0b24iIHZhbHVlPSJudWxsIi8+CisJPGF0dHJpYnV0ZSBuYW1lPSJwYXJhbXMiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKyAgICAKKwk8bWV0aG9kIG5hbWU9InVwZGF0ZUZpbmlzaGVkVGFic1F1YW50aXR5Ij4KKwkJdGhpcy5maW5pc2hlZFRhYnNRdWFudGl0eSA9IHRoaXMuZmluaXNoZWRUYWJzUXVhbnRpdHkgKyAxOworCisJCWlmICh0aGlzLmZpbmlzaGVkVGFic1F1YW50aXR5ID09IDMpIHsKKwkJCWlmIChjbGlja2VkQnV0dG9uICE9IG51bGwpIHsKKwkJCQlsei5DdXJzb3IudW5sb2NrKCk7CisKKwkJCQljbGlja2VkQnV0dG9uLm9uY2xpY2suc2VuZEV2ZW50KCk7CisJCQl9CisJCX0KKwk8L21ldGhvZD4KKwkKKwk8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorCQlfbWFpblNjcm9sbEJhci5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKwkJc3dpdGNoICh0aGlzLnBhcmFtcykgeworCQkJY2FzZSAicHVibGljVGFiQnV0dG9uIjoKKwkJCQlkb1NlbGVjdGlvbih0aGlzLl90YWJiYXIucHVibGljVGFiQnV0dG9uKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgInByaXZhdGVUYWJCdXR0b24iOgorCQkJCWRvU2VsZWN0aW9uKHRoaXMuX3RhYmJhci5wcml2YXRlVGFiQnV0dG9uKTsKKwkJCQlicmVhazsKKwkJCWNhc2UgIm15VGFiQnV0dG9uIjoKKwkJCQlkb1NlbGVjdGlvbih0aGlzLl90YWJiYXIubXlUYWJCdXR0b24pOworCQkJCWJyZWFrOworCQl9CisJPC9oYW5kbGVyPgorCQorCTxoYW5kbGVyIG5hbWU9Im9udGFiY29udGVudGxlYXZlIj4KKwkJX21haW5TY3JvbGxCYXIuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworCTwvaGFuZGxlcj4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9InJlZk9iakl0ZW0iIHZhbHVlPSJudWxsIiAvPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iZG9TZWxlY3Rpb24iIGFyZ3M9Im9ialJlZiI+CisgICAgCWlmICh0aGlzLnJlZk9iakl0ZW0gIT0gbnVsbCkgeworICAgIAkJdGhpcy5yZWZPYmpJdGVtLmRlc2VsZWN0KCk7CisgICAgCX0KKyAgICAJdGhpcy5yZWZPYmpJdGVtID0gb2JqUmVmOworICAgIAkKKyAgICAJc3dpdGNoICh0aGlzLnJlZk9iakl0ZW0ubmFtZSkgeworICAgIAkJY2FzZSAicHVibGljVGFiQnV0dG9uIjoKKwkgICAgCQl0aGlzLl9jb25mZXJlbmNlcy5QdWJsaWNNZWV0aW5ncy5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisJICAgIAkJdGhpcy5fY29uZmVyZW5jZXMuUHJpdmF0ZU1lZXRpbmdzLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworCSAgICAJCXRoaXMuX2NvbmZlcmVuY2VzLk15TWVldGluZ3Muc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisJICAgIAkJYnJlYWs7CisJICAgIAljYXNlICJwcml2YXRlVGFiQnV0dG9uIjoKKwkgICAgCQl0aGlzLl9jb25mZXJlbmNlcy5QdWJsaWNNZWV0aW5ncy5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKwkgICAgCQl0aGlzLl9jb25mZXJlbmNlcy5Qcml2YXRlTWVldGluZ3Muc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworCSAgICAJCXRoaXMuX2NvbmZlcmVuY2VzLk15TWVldGluZ3Muc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisJICAgIAkJYnJlYWs7CisJICAgIAljYXNlICJteVRhYkJ1dHRvbiI6CisJICAgIAkJdGhpcy5fY29uZmVyZW5jZXMuUHVibGljTWVldGluZ3Muc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisJICAgIAkJdGhpcy5fY29uZmVyZW5jZXMuUHJpdmF0ZU1lZXRpbmdzLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworCSAgICAJCXRoaXMuX2NvbmZlcmVuY2VzLk15TWVldGluZ3Muc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworCSAgICAJCWJyZWFrOworICAgIAl9CisgICAgCQorICAgIAl0aGlzLnJlZk9iakl0ZW0uc2VsZWN0KCk7CisgICAgPC9tZXRob2Q+CisgICAgCisgICAJPHZpZXcgbmFtZT0iX3RhYmJhckJnIiB3aWR0aD0iJHsgcGFyZW50LndpZHRoIH0iIGhlaWdodD0iMzIiIHk9IjEiIGJnY29sb3I9IjB4RkFGQUZBIiAvPgorICAgCQorCTx2aWV3IG5hbWU9ImJvcmRlckJhckJvdHRvbSIgeT0iMzQiCisgICAJCQl3aWR0aD0iJHsgcGFyZW50LndpZHRoIH0iIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignbWFpbkJvcmRlckNvbG9yJykgfSIgaGVpZ2h0PSIxIiAvPiAgCisgICAgICAKKwk8dmlldyBuYW1lPSJfdGFiYmFyIiB3aWR0aD0iJHsgY2FudmFzLndpZHRoIH0iIHk9IjEiIGhlaWdodD0iMzIiCisgIAkJICBsYXlvdXQ9ImF4aXM6eDtzcGFjaW5nOjI7aW5zZXQ6MiIgPgorICAJCSAgCQorCSAJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKwkgICAJCWZvciAodmFyIGVnIGluIHRoaXMuc3Vidmlld3MpIHsKKyAgICAgICAgICAgCQl0aGlzLnN1YnZpZXdzW2VnXS5kZXNlbGVjdCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdGhpcy5wdWJsaWNUYWJCdXR0b24uc2VsZWN0KCk7CisJICAgCTwvaGFuZGxlcj4KKwkJCisJCTx0YWJCdXR0b25NYWluIG5hbWU9InB1YmxpY1RhYkJ1dHRvbiIgc2VsZWN0ZWQ9InRydWUiIGhlaWdodD0iJG9uY2V7IHBhcmVudC5oZWlnaHQgfSIgCisgICAgICAgIAkJY3VycmVudEljb25Sc2M9Imljb25fYnRuX3Jvb21zX2NvbmZlcmVuY2UiIHg9IjAiIGxhYmVsaWQ9Ijc3NyIgd2lkdGg9IiR7IChwYXJlbnQud2lkdGgtNikvMyB9Ii8+CisJCQorCQk8dGFiQnV0dG9uTWFpbiBuYW1lPSJwcml2YXRlVGFiQnV0dG9uIiB3aWR0aD0iJHsgKHBhcmVudC53aWR0aC02KS8zIH0iIGhlaWdodD0iJG9uY2V7IHBhcmVudC5oZWlnaHQgfSIgCisgICAgICAgIAkJIGN1cnJlbnRJY29uUnNjPSJpY29uX2J0bl9yb29tc19jb25mZXJlbmNlIiBsYWJlbGlkPSI3NzkiIC8+CisgICAgICAgIAkJCisgICAgICAgIDx0YWJCdXR0b25NYWluIG5hbWU9Im15VGFiQnV0dG9uIiB3aWR0aD0iJHsgKHBhcmVudC53aWR0aC02KS8zIH0iIGhlaWdodD0iJG9uY2V7IHBhcmVudC5oZWlnaHQgfSIgCisgICAgICAgIAkJY3VycmVudEljb25Sc2M9Imljb25fYnRuX3Jvb21zX2NvbmZlcmVuY2UiIGxhYmVsaWQ9Ijc4MSIgLz4KKwkJCisJPC92aWV3PgorCQorCTwhLS0gcHVibGljIHJvb21zIC0tPgorCTx2aWV3IG5hbWU9Il9jb25mZXJlbmNlcyIgaGVpZ2h0PSIkeyBwYXJlbnQuaGVpZ2h0LTQwIH0iIHk9IjQwIj4KKwkJPHZpZXcgbmFtZT0iUHVibGljTWVldGluZ3MiIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodCB9Ij4KKwkJCQorCQkJPGltYWdlIHg9IjEwIiBzcmM9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVJbWFnZSgnaW5mb190ZXh0X2ljb25fcnNjJykgfSIgLz4KKwkJCQorCQkJPGxhYmVsVGV4dCBsYWJlbGlkPSI3NzgiIHg9IjMwIiB3aWR0aD0iNDAwIiBtdWx0aWxpbmU9InRydWUiIC8+CisJCQkKKwkJCTx2aWV3IHk9IjQwIiBoZWlnaHQ9IiR7IHBhcmVudC5oZWlnaHQtNDAgfSI+CisJCSAgICAKKwkJCQk8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJyZW1vdmVDbGllbnRGcm9tQ2hhdE5vdGlmaWNhdGlvbiIgZnVuY25hbWU9ImNoYXRzZXJ2aWNlLnJlbW92ZUNsaWVudEZyb21DaGF0Tm90aWZpY2F0aW9uIgkKKwkJCQkJcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gICAgICAKKwkJCQkJPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisJCQkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgicmVtb3ZlQ2xpZW50RnJvbUNoYXROb3RpZmljYXRpb246ICIsdmFsdWUpOworCQkJCQkJdGhpcy5wYXJlbnQuZGVzdHJveSgpOworCQkJCQk8L2hhbmRsZXI+CisJCQkJPC9uZXRSZW1vdGVDYWxsSGliPgorICAgIAorCSAgCisJCQkJPHZpZXcgeT0iNCIgeD0iNCIgaGVpZ2h0PSIkeyBwYXJlbnQuaGVpZ2h0LTQgfSI+CisJCQkJCQorCQkJCQk8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorCQkJCQkJY2FudmFzLnRoaXNoaWIucm9vbXR5cGUgPSAicHVibGljIjsKKwkJCQkJCXRoaXMuZ2V0Um9vbXNQdWJsaWNXaXRob3V0VHlwZS5kb0NhbGwoKTsKKwkJCQkJPC9oYW5kbGVyPgorCSAgICAgICAgCisJCQkJCTxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImdldFJvb21zUHVibGljV2l0aG91dFR5cGUiIGZ1bmNuYW1lPSJjb25mZXJlbmNlc2VydmljZS5nZXRSb29tc1B1YmxpY1dpdGhvdXRUeXBlIiAKKwkJCQkJCXJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiA+ICAgCisJCQkJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4gIAorCQkJCQkJPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CQorCQkJCQkJCTwhW0NEQVRBWworCQkJCQkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZ2V0Um9vbXNQdWJsaWNXaXRob3V0VHlwZTogIiwgdmFsdWUpOworCQkJCQkJCQlpZiAodmFsdWUgIT0gbnVsbCkgeworCQkJCQkJCQkJZm9yICh2YXIgZWcgPSAwOyBlZyA8IHZhbHVlLmxlbmd0aDsgZWcrKykgeworCQkJCQkJCQkJCXZhciB0aW1lID0gdmFsdWVbZWddLnN0YXJ0dGltZS5nZXRIb3VycygpCisJCQkJCQkJCQkJCQkrICc6JyArIHZhbHVlW2VnXS5zdGFydHRpbWUuZ2V0TWludXRlcygpCisJCQkJCQkJCQkJCQkrICcgJyArIHZhbHVlW2VnXS5zdGFydHRpbWUuZ2V0RGF0ZSgpCisJCQkJCQkJCQkJCQkrICcuJyArICh2YWx1ZVtlZ10uc3RhcnR0aW1lLmdldE1vbnRoKCkgKyAxKQorCQkJCQkJCQkJCQkJKyAnLicgKyB2YWx1ZVtlZ10uc3RhcnR0aW1lLmdldEZ1bGxZZWFyKCk7CisJCQkJCQkJCQkJCQkKKwkJCQkJCQkJCQluZXcgbHoucm9vbUxpc3RJdGVtKHBhcmVudC5pbm4uaW5uLmlubiwKKwkJCQkJCQkJCQkJCXsKKwkJCQkJCQkJCQkJCQlyb29tVHlwZTp2YWx1ZVtlZ10ucm9vbXR5cGUucm9vbXR5cGVzX2lkLAorCQkJCQkJCQkJCQkJCWN1cnJlbnR1c2VycyA6IHZhbHVlW2VnXS5jdXJyZW50dXNlcnMsCisJCQkJCQkJCQkJCQkJb2JqIDogdmFsdWVbZWddLAorCQkJCQkJCQkJCQkJCWlzcHVibGljIDogdHJ1ZSwKKwkJCQkJCQkJCQkJCQlyb29taWQgOiB2YWx1ZVtlZ10ucm9vbXNfaWQsCisJCQkJCQkJCQkJCQkJc3RhcnR0aW1lIDogdGltZSwKKwkJCQkJCQkJCQkJCQlyb29tbmFtZSA6IHZhbHVlW2VnXS5uYW1lLAorCQkJCQkJCQkJCQkJCXJvb21jb21tZW50IDogdmFsdWVbZWddLmNvbW1lbnQKKwkJCQkJCQkJCQkJCX0pOworCQkJCQkJCQkJfQorCQkJCQkJCQl9CisJCQkJCQkJCXBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQudXBkYXRlRmluaXNoZWRUYWJzUXVhbnRpdHkoKTsKKwkJCQkJCQldXT4JICAgICAgICAJICAgICAgICAgIAkJCQkKKwkJCQkJCTwvaGFuZGxlcj4JCisJCQkJCTwvbmV0UmVtb3RlQ2FsbEhpYj4KKworCQkJCQk8IS0tIGlubi5pbm4uaW5uIHZpZXcgd291bGQgYmUgc2V0dGVkIG9iamVjdCBieSBhYm92ZSBvbmRhdGEgaGFuZGVyLiAtLT4KKwkJCQkJPHZpZXcgbmFtZT0iaW5uIiB3aWR0aD0iNDgwIiBoZWlnaHQ9IiR7IHBhcmVudC5oZWlnaHQgfSIgCisJCQkJCQkJCQliZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ3NlY29uZEJvcmRlckNvbG9yJykgfSI+CisJCQkJCQk8dmlldyBuYW1lPSJpbm4iIHg9IjEiIHk9IjEiIHdpZHRoPSI0NzkiIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodC0xIH0iIAorCQkJCQkJCSAgCQliZ2NvbG9yPSIweEZGRkZGRiIgY2xpcD0idHJ1ZSIgPgorCQkJCQkJCTx2aWV3IG5hbWU9ImlubiIgbGF5b3V0PSJheGlzOnk7c3BhY2luZzoxIi8+CisJCQkJCQkJPG9tX3ZzY3JvbGxiYXIgLz4KKwkJCQkJCTwvdmlldz4KKwkJCQkJPC92aWV3PgorCQkJCTwvdmlldz4KKwkJCQk8IS0tIGRlc2NyaXB0aW9uIHBhbmVsIGZvciBlYWNoZSByb29tLiByaWdodCBoYW5kIG9uIHRoaXMgY2xhc3Mgdmlldy4KKwkJCQkJCXJvb21MaXN0RGV0YWlscyBjbGFzcyBhcmUgZGVjbGFyZWQgaW4gbW9kdWxlcy9jb25mZXJlbmNlL2NvbmZlcmVuY2Uvcm9vbUxpc3REZXRhaWxzLmx6eC4KKwkJCQkJCQlNYXIgMjQgMjAwOCBjb21tZW50ZWQgYnkgb25va2VpamlAZ21hbC5jb20KKwkJCQkJIC0tPgorCQkJCTxyb29tTGlzdERldGFpbHMgeD0iNTEwIiB5PSI0IiBuYW1lPSJfcm9vbWxpc3RkZXRhaWxzIiBoZWlnaHQ9IiR7IHBhcmVudC5oZWlnaHQtNCB9IiAvPgorCQkJPC92aWV3PgorCQk8L3ZpZXc+CisJCisJCisJCTwhLS0gcHJpdmF0ZSBNZWV0aW5ncyAtLT4JCisJCTx2aWV3IG5hbWU9IlByaXZhdGVNZWV0aW5ncyIgdmlzaWJpbGl0eT0iaGlkZGVuIiBoZWlnaHQ9IiR7IHBhcmVudC5oZWlnaHQgfSI+CisJCQkKKwkJCTxpbWFnZSB4PSIxMCIgc3JjPSIkb25jZXsgY2FudmFzLmdldFRoZW1lSW1hZ2UoJ2luZm9fdGV4dF9pY29uX3JzYycpIH0iIC8+CisJCQkKKwkJCTxsYWJlbFRleHQgbGFiZWxpZD0iNzgwIiB4PSIzMCIgd2lkdGg9IjQwMCIgbXVsdGlsaW5lPSJ0cnVlIiAvPgorCQkJCQorCQkJPHZpZXcgeT0iNDAiIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodC00MCB9Ij4KKwkJCQorCQkJCTwhLS0gRGVjbGFyZWQgY29uZmVyZW5jZSByb29tcyBsaXN0IC0tPgorCQkJCTx2aWV3IHk9IjQiIHg9IjQiIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodC00IH0iPgorCQkJCQk8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorCQkJCQkJY2FudmFzLnRoaXNoaWIucm9vbXR5cGUgPSAicHJpdmF0ZSI7CisJCQkJCQl0aGlzLmdldFJvb21zQnlPcmdhbmlzYXRpb25XaXRob3V0VHlwZS5kb0NhbGwoKTsKKwkJCQkJPC9oYW5kbGVyPiAgICAKKwkgICAgICAgIAorCQkJCQk8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJnZXRSb29tc0J5T3JnYW5pc2F0aW9uV2l0aG91dFR5cGUiIGZ1bmNuYW1lPSJjb25mZXJlbmNlc2VydmljZS5nZXRSb29tc0J5T3JnYW5pc2F0aW9uV2l0aG91dFR5cGUiIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiA+ICAgCisJCQkJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4gIAorCQkJCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBoaWIuY3VycmVudGRvbWFpbk9iai5vcmdhbmlzYXRpb25faWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4gIAorCQkJCQkJPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CQorCQkJCQkJPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImdldFJvb21zQnlPcmdhbmlzYXRpb25XaXRob3V0VHlwZSAiLHZhbHVlKTsKKwkJCQkJCQlpZiAodmFsdWUgIT0gbnVsbCkgeworCQkJCQkJCQlmb3IgKHZhciBlZyA9IDA7IGVnIDwgdmFsdWUubGVuZ3RoOyBlZysrKSB7CisJCQkJCQkJCQluZXcgbHoucm9vbUxpc3RJdGVtKHBhcmVudC5pbm4uaW5uLmlubix7CisJCQkJCQkJCQkJCQlyb29tVHlwZTp2YWx1ZVtlZ10ucm9vbS5yb29tdHlwZS5yb29tdHlwZXNfaWQsCisJCQkJCQkJCQkJCQljdXJyZW50dXNlcnMgOiB2YWx1ZVtlZ10ucm9vbS5jdXJyZW50dXNlcnMsCisJCQkJCQkJCQkJCQlvYmogOiB2YWx1ZVtlZ10sCisJCQkJCQkJCQkJCQlpc3B1YmxpYyA6IGZhbHNlLAorCQkJCQkJCQkJCQkJcm9vbWlkIDogdmFsdWVbZWddLnJvb20ucm9vbXNfaWQsCisJCQkJCQkJCQkJCQlzdGFydHRpbWUgOiBwYXJzZURhdGVUb1N0cmluZ1RpbWUodmFsdWVbZWddLnJvb20uc3RhcnR0aW1lKSwKKwkJCQkJCQkJCQkJCXJvb21uYW1lIDogdmFsdWVbZWddLnJvb20ubmFtZSwKKwkJCQkJCQkJCQkJCXJvb21jb21tZW50IDogdmFsdWVbZWddLnJvb20uY29tbWVudAorCQkJCQkJCQkJCQl9KTsKKwkJCQkJCQkJfQorCQkJCQkJCX0KKworCQkJCQkJCXBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQKKwkJCQkJCQkJCS51cGRhdGVGaW5pc2hlZFRhYnNRdWFudGl0eSgpOworCQkJCQkJXV0+CSAgICAgICAgCSAgICAgICAgICAJCQkJCisJCQkJCQk8L2hhbmRsZXI+CQorCQkJCQk8L25ldFJlbW90ZUNhbGxIaWI+IAorCSAKKwkJCQkJPCEtLSBpbm4uaW5uLmlubiB2aWV3IHdvdWxkIGJlIHNldHRlZCBvYmplY3QgYnkgYWJvdmUgb25kYXRhIGhhbmRlci4gLS0+CisJCQkJCTx2aWV3IG5hbWU9ImlubiIgd2lkdGg9IjQ4MCIgaGVpZ2h0PSIkeyBwYXJlbnQuaGVpZ2h0IH0iIAorCQkJCQkJCQkJYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdzZWNvbmRCb3JkZXJDb2xvcicpIH0iPgorCQkJCQkJPHZpZXcgbmFtZT0iaW5uIiB4PSIxIiB5PSIxIiB3aWR0aD0iNDc5IiBoZWlnaHQ9IiR7IHBhcmVudC5oZWlnaHQtMSB9IiBiZ2NvbG9yPSIweEZGRkZGRiIgY2xpcD0idHJ1ZSIgPgorCQkJCQkJCTx2aWV3IG5hbWU9ImlubiIgbGF5b3V0PSJheGlzOnk7c3BhY2luZzoxIi8+CisJCQkJCQkJPG9tX3ZzY3JvbGxiYXIgLz4KKwkJCQkJCTwvdmlldz4KKwkJCQkJPC92aWV3PgorCQkJCTwvdmlldz4KKwkKKwkJCQk8IS0tIGRlc2NyaXB0aW9uIHBhbmVsIGZvciBlYWNoZSByb29tLiByaWdodCBoYW5kIG9uIHRoaXMgY2xhc3Mgdmlldy4KKwkJCQkJCXJvb21MaXN0RGV0YWlscyBjbGFzcyBhcmUgZGVjbGFyZWQgaW4gbW9kdWxlcy9jb25mZXJlbmNlL2NvbmZlcmVuY2Uvcm9vbUxpc3REZXRhaWxzLmx6eC4KKwkJCQkJCQlNYXIgMjQgMjAwOCBjb21tZW50ZWQgYnkgb25va2VpamlAZ21hbC5jb20KKwkJCQkJIC0tPgorCQkJCTxyb29tTGlzdERldGFpbHMgeD0iNTEwIiB5PSI0IiBuYW1lPSJfcm9vbWxpc3RkZXRhaWxzIiBoZWlnaHQ9IiR7IHBhcmVudC5oZWlnaHQtNCB9IiAvPgorCQkJPC92aWV3PgorICAJCQkKKwkJPC92aWV3PgorCQkKKwkJPCEtLSBBcHBvaW50ZWQgTWVldGluZ3MgLS0+CisJCTx2aWV3IG5hbWU9Ik15TWVldGluZ3MiIHZpc2liaWxpdHk9ImhpZGRlbiIgaGVpZ2h0PSIkeyBwYXJlbnQuaGVpZ2h0IH0iPgorCQkJCisJCQk8aW1hZ2UgeD0iMTAiIHNyYz0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUltYWdlKCdpbmZvX3RleHRfaWNvbl9yc2MnKSB9IiAvPgorCQkJCisJCQk8bGFiZWxUZXh0IGxhYmVsaWQ9Ijc4MiIgeD0iMzAiIHdpZHRoPSI0MDAiIG11bHRpbGluZT0idHJ1ZSIgLz4KKwkJCQorCQkJPCEtLSBEZWNsYXJlZCBjb25mZXJlbmNlIHJvb21zIGxpc3QgLS0+CisJCQk8dmlldyB5PSI2MCIgaGVpZ2h0PSIkeyBwYXJlbnQuaGVpZ2h0LTYwIH0iPgorCQkJCQorCQkJCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisJCQkJCWNhbnZhcy50aGlzaGliLnJvb210eXBlID0gInB1YmxpYyI7CisJCQkJCQorICAgICAgICAgICAgICAgICAgICBuZXcgbHoucm9vbUxpc3RJdGVtKHRoaXMuaW5uLmlubi5pbm4seworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vbVR5cGU6MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzcHVibGljOnRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb29tbmFtZSA6IGNhbnZhcy5nZXRMYWJlbE5hbWUoMTMwNikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgICAgICAgICAgbmV3IGx6LnJvb21MaXN0SXRlbSh0aGlzLmlubi5pbm4uaW5uLHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb21UeXBlOjMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc3B1YmxpYzp0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vbW5hbWUgOiBjYW52YXMuZ2V0TGFiZWxOYW1lKDEzMDcpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgICAgICAgICAgCisJCQkJCXRoaXMuZ2V0QXBwb2ludGVkTWVldGluZ1Jvb21zV2l0aG91dFR5cGUuZG9DYWxsKCk7CisJCQkJPC9oYW5kbGVyPiAgICAKKwkgICAgICAgIAorCQkJCTxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImdldEFwcG9pbnRlZE1lZXRpbmdSb29tc1dpdGhvdXRUeXBlIiBmdW5jbmFtZT0iY29uZmVyZW5jZXNlcnZpY2UuZ2V0QXBwb2ludGVkTWVldGluZ1Jvb21zV2l0aG91dFR5cGUiIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiA+ICAgCisJCQkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gY2FudmFzLnNlc3Npb25JZDs8L21ldGhvZD48L25ldHBhcmFtPiAgCisJCQkJCTxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgkKKwkJCQkJCTwhW0NEQVRBWworCQkJCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJnZXRSb29tc1B1YmxpYzogIiwgdmFsdWUpOworCQkJCQkJCWlmICh2YWx1ZSAhPSBudWxsKSB7CisJCQkJCQkJCWZvciAodmFyIGVnID0gMDsgZWcgPCB2YWx1ZS5sZW5ndGg7IGVnKyspIHsKKwkJCQkJCQkJCXZhciB0aW1lID0gdmFsdWVbZWddLnN0YXJ0dGltZS5nZXRIb3VycygpCisJCQkJCQkJCQkJCSsgJzonCisJCQkJCQkJCQkJCSsgdmFsdWVbZWddLnN0YXJ0dGltZS5nZXRNaW51dGVzKCkKKwkJCQkJCQkJCQkJKyAnICcKKwkJCQkJCQkJCQkJKyB2YWx1ZVtlZ10uc3RhcnR0aW1lLmdldERhdGUoKQorCQkJCQkJCQkJCQkrICcuJworCQkJCQkJCQkJCQkrICh2YWx1ZVtlZ10uc3RhcnR0aW1lLmdldE1vbnRoKCkgKyAxKQorCQkJCQkJCQkJCQkrICcuJworCQkJCQkJCQkJCQkrIHZhbHVlW2VnXS5zdGFydHRpbWUuZ2V0RnVsbFllYXIoKTsKKwkJCQkJCQkJCW5ldyBsei5yb29tTGlzdEl0ZW0ocGFyZW50Lmlubi5pbm4uaW5uLCAKKwkJCQkJCQkJCQkgICB7CisJCQkJCQkJCQkJICAgICAgICByb29tVHlwZTp2YWx1ZVtlZ10ucm9vbXR5cGUucm9vbXR5cGVzX2lkLAorCQkJCQkJCQkJCQkJY3VycmVudHVzZXJzIDogdmFsdWVbZWddLmN1cnJlbnR1c2VycywKKwkJCQkJCQkJCQkJCW9iaiA6IHZhbHVlW2VnXSwKKwkJCQkJCQkJCQkJCWlzcHVibGljIDogdHJ1ZSwKKwkJCQkJCQkJCQkJCXJvb21pZCA6IHZhbHVlW2VnXS5yb29tc19pZCwKKwkJCQkJCQkJCQkJCXN0YXJ0dGltZSA6IHRpbWUsCisJCQkJCQkJCQkJCQlyb29tbmFtZSA6IHZhbHVlW2VnXS5uYW1lCisJCQkJCQkJCQkJCX0pOworCQkJCQkJCQl9CisJCisJCQkJCQkJCQorCQkJCQkJCX0KKwkJCQkJCQkKKwkJCQkJCQlwYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQudXBkYXRlRmluaXNoZWRUYWJzUXVhbnRpdHkoKTsKKwkJCQkJCV1dPgkJICAgICAgICAJICAgICAgICAgIAkJCQkKKwkJCQkJPC9oYW5kbGVyPgkKKwkJCQk8L25ldFJlbW90ZUNhbGxIaWI+IAorCSAKKwkJCQk8IS0tIGlubi5pbm4uaW5uIHZpZXcgd291bGQgYmUgc2V0dGVkIG9iamVjdCBieSBhYm92ZSBvbmRhdGEgaGFuZGVyLiAtLT4KKwkJCQk8dmlldyBuYW1lPSJpbm4iIHdpZHRoPSI0ODAiIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodCB9IiAKKwkJCQkJCQkJYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdzZWNvbmRCb3JkZXJDb2xvcicpIH0iPgorCQkJCQk8dmlldyBuYW1lPSJpbm4iIHg9IjEiIHk9IjEiIHdpZHRoPSI0NzkiIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodC0xIH0iIGJnY29sb3I9IjB4RkZGRkZGIiBjbGlwPSJ0cnVlIiA+CisJCQkJCQk8dmlldyBuYW1lPSJpbm4iIGxheW91dD0iYXhpczp5O3NwYWNpbmc6MSIvPgorCQkJCQkJPG9tX3ZzY3JvbGxiYXIgLz4KKwkJCQkJPC92aWV3PgorCQkJCTwvdmlldz4KKwkJCTwvdmlldz4KKwkKKwkJCTwhLS0gZGVzY3JpcHRpb24gcGFuZWwgZm9yIGVhY2hlIHJvb20uIHJpZ2h0IGhhbmQgb24gdGhpcyBjbGFzcyB2aWV3LgorCQkJCQlyb29tTGlzdERldGFpbHMgY2xhc3MgYXJlIGRlY2xhcmVkIGluIG1vZHVsZXMvY29uZmVyZW5jZS9jb25mZXJlbmNlL3Jvb21MaXN0RGV0YWlscy5senguCisJCQkJCQlNYXIgMjQgMjAwOCBjb21tZW50ZWQgYnkgb25va2VpamlAZ21hbC5jb20KKwkJCQkgLS0+CisJCQk8cm9vbUxpc3REZXRhaWxzIHg9IjUxMCIgeT0iNCIgbmFtZT0iX3Jvb21saXN0ZGV0YWlscyIgaGVpZ2h0PSIkeyBwYXJlbnQuaGVpZ2h0LTQgfSIgLz4KKwkJCQorCQk8L3ZpZXc+CisJCQorCTwvdmlldz4KKwkKKzwvY2xhc3M+CisKKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9tZWV0aW5ncy9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbWVldGluZ3MvbGlicmFyeS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjIxMDNlNwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvbWVldGluZ3MvbGlicmFyeS5sengKQEAgLTAsMCArMSwyNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworICAgIDxpbmNsdWRlIGhyZWY9ImFsbG1lZXRpbmdzLmx6eCIgLz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy9lZGl0VXNlclByb2ZpbGUubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy9lZGl0VXNlclByb2ZpbGUubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkMWZlYTIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL3NldHRpbmdzL2VkaXRVc2VyUHJvZmlsZS5sengKQEAgLTAsMCArMSwzNzUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisJCis8Y2xhc3MgbmFtZT0iZWRpdFVzZXJQcm9maWxlIiBleHRlbmRzPSJiYXNlQ29udGVudFNhdmVWaWV3IiB3aWR0aD0iJHsgY2FudmFzLndpZHRoIC0gNCB9IgorCWFkZElzVmlzaWJsZT0iZmFsc2UiIGRlbGV0ZUlzVmlzaWJsZT0iZmFsc2UiPgorCQkKKwk8IS0tIHJlY29yZENvbnRlbnQtaWQgLS0+CisJPGF0dHJpYnV0ZSBuYW1lPSJ1c2VyX2lkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0idXNlck9iaiIgdmFsdWU9Im51bGwiIC8+CisJCisJPCEtLWhhbmRsZXJzIC0tPgorCisJPGhhbmRsZXIgbmFtZT0ib25zYXZlY29tcGxldGVkIiA+CisJCXRoaXMuZ2V0VXNlclNlbGYuZG9DYWxsKCk7CisJPC9oYW5kbGVyPgorCQorCTxoYW5kbGVyIG5hbWU9Im9ucmVsb2FkIiA+CisJCXRoaXMuZ2V0VXNlclNlbGYuZG9DYWxsKCk7CisJPC9oYW5kbGVyPgkKKwkKKwk8aGFuZGxlciBuYW1lPSJvbmNvbnN0cnVjdCI+CisJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCI6OmVkaXRVc2VyUHJvZmlsZTo6Iik7CisJPC9oYW5kbGVyPgorCisgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKwkJdGhpcy5nZXRVc2VyU2VsZi5kb0NhbGwoKTsKKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPCEtLSBtZXRob2RzIC0tPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0ic2VuZFJlZnJlc2giPgorICAgIAl0aGlzLmdldFVzZXJTZWxmLmRvQ2FsbCgpOworICAgIDwvbWV0aG9kPiAgICAKKworICAgIDxtZXRob2QgbmFtZT0iaW5pdEZpZWxkcyIgYXJncz0ib2JqIj4KKyAgICAJPCFbQ0RBVEFbCisgICAgICAgICAgICB0aGlzLnVzZXJPYmogPSBvYmo7CisJCQl0aGlzLnVzZXJfaWQgPSBvYmoudXNlcl9pZDsKKwkJCQorCQkJaGliLnVzZXJvYmplY3QgPSBvYmo7CisJCQkKKwkJCWlmIChvYmoub21UaW1lWm9uZSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgY2FudmFzLnNldEF0dHJpYnV0ZSgnak5hbWVUaW1lWm9uZScsb2JqLm9tVGltZVpvbmUuam5hbWUpOworICAgICAgICAgICAgICAgIGNhbnZhcy50aW1lWm9uZUlkID0gb2JqLm9tVGltZVpvbmUub210aW1lem9uZUlkOworICAgICAgICAgICAgfQorCQkJCisJCQkvL3RoaXMudXNlcm5hbWUuc2V0QXR0cmlidXRlKCd0ZXh0JyxvYmoubG9naW4pOworCQkJdGhpcy5maXJzdG5hbWUuc2V0QXR0cmlidXRlKCd0ZXh0JywgY2FudmFzLmdldE5vdE51bGxTdHJpbmcob2JqLmZpcnN0bmFtZSkpOworCQkJdGhpcy5sYXN0bmFtZS5zZXRBdHRyaWJ1dGUoJ3RleHQnLCBjYW52YXMuZ2V0Tm90TnVsbFN0cmluZyhvYmoubGFzdG5hbWUpKTsKKwkJCXRoaXMuZW1haWwuc2V0QXR0cmlidXRlKCd0ZXh0JywgY2FudmFzLmdldE5vdE51bGxTdHJpbmcob2JqLmFkcmVzc2VzLmVtYWlsKSk7CisJCQl0aGlzLnBob25lLnNldEF0dHJpYnV0ZSgndGV4dCcsIGNhbnZhcy5nZXROb3ROdWxsU3RyaW5nKG9iai5hZHJlc3Nlcy5waG9uZSkpOworCQkJdGhpcy5hZ2Uuc2V0QXR0cmlidXRlKCd0ZXh0JyxwYXJzZURhdGVUb1N0cmluZyhvYmouYWdlKSk7CisJCQl0aGlzLnN0cmVldC5zZXRBdHRyaWJ1dGUoJ3RleHQnLCBjYW52YXMuZ2V0Tm90TnVsbFN0cmluZyhvYmouYWRyZXNzZXMuc3RyZWV0KSk7CisJCQl0aGlzLmhvdXNlLnNldEF0dHJpYnV0ZSgndGV4dCcsIGNhbnZhcy5nZXROb3ROdWxsU3RyaW5nKG9iai5hZHJlc3Nlcy5hZGRpdGlvbmFsbmFtZSkpOworCQkJdGhpcy56aXAuc2V0QXR0cmlidXRlKCd0ZXh0JywgY2FudmFzLmdldE5vdE51bGxTdHJpbmcob2JqLmFkcmVzc2VzLnppcCkpOworCQkJdGhpcy50b3duLnNldEF0dHJpYnV0ZSgndGV4dCcsIGNhbnZhcy5nZXROb3ROdWxsU3RyaW5nKG9iai5hZHJlc3Nlcy50b3duKSk7CisJCQl0aGlzLnN0YXRlLmFkZEFuZFNlbGVjdEl0ZW0ob2JqLmFkcmVzc2VzLnN0YXRlcy5uYW1lLCBTdHJpbmcob2JqLmFkcmVzc2VzLnN0YXRlcy5zdGF0ZV9pZCkpOworCQkJdGhpcy5hZHJlc3NfY29tbWVudC5zZXRBdHRyaWJ1dGUoJ3RleHQnLCBjYW52YXMuZ2V0Tm90TnVsbFN0cmluZyhvYmouYWRyZXNzZXMuY29tbWVudCkpOworCQkJdGhpcy5zYWx1dGF0aW9uLnNlbGVjdEl0ZW0oU3RyaW5nKG9iai5zYWx1dGF0aW9uc19pZCkpOworCQkJdGhpcy5fdGltZVpvbmUuc2VsZWN0SXRlbShTdHJpbmcob2JqLm9tVGltZVpvbmUuam5hbWUpKTsKKwkJCXRoaXMubGFuZ3VhZ2VzLnNlbGVjdEl0ZW0oU3RyaW5nKG9iai5sYW5ndWFnZV9pZCkpOworCQkJdGhpcy5fb3JnYW5pc2F0aW9uc2xpc3QuY2xlYXJMaXN0KCk7CisJCQlmb3IgKHZhciBpPTA7aTxvYmoub3JnYW5pc2F0aW9uX3VzZXJzLmxlbmd0aDtpKyspeworCQkJCXRoaXMuX29yZ2FuaXNhdGlvbnNsaXN0LmFkZEl0ZW0ob2JqLm9yZ2FuaXNhdGlvbl91c2Vyc1tpXS5vcmdhbmlzYXRpb24ubmFtZSxvYmoub3JnYW5pc2F0aW9uX3VzZXJzW2ldLm9yZ2FuaXNhdGlvbi5vcmdhbmlzYXRpb25faWQpOworCQkJfQorCQkJCisJCQlpZiAob2JqLnVzZXJPZmZlcnMgIT0gbnVsbCkgeworCQkJCXRoaXMudXNlck9mZmVycy5zZXRBdHRyaWJ1dGUoJ3RleHQnLG9iai51c2VyT2ZmZXJzKTsKKwkJCX0KKwkJCWlmIChvYmoudXNlclNlYXJjaHMgIT0gbnVsbCkgeworCQkJCXRoaXMudXNlclNlYXJjaHMuc2V0QXR0cmlidXRlKCd0ZXh0JyxvYmoudXNlclNlYXJjaHMpOworCQkJfQorCQkJaWYgKG9iai5zaG93Q29udGFjdERhdGEgIT0gbnVsbCAmJiBvYmouc2hvd0NvbnRhY3REYXRhVG9Db250YWN0cyAhPSBudWxsKSB7CisJCQkJCisJCQkJaWYgKG9iai5zaG93Q29udGFjdERhdGEpIHsKKwkJCQkJdGhpcy5zaG93Q29udGFjdERhdGEuc2VsZWN0SXRlbSgiMSIpOworCQkJCX0gZWxzZSBpZiAob2JqLnNob3dDb250YWN0RGF0YVRvQ29udGFjdHMpIHsKKwkJCQkJdGhpcy5zaG93Q29udGFjdERhdGEuc2VsZWN0SXRlbSgiMiIpOworCQkJCX0gZWxzZSB7CisJCQkJCXRoaXMuc2hvd0NvbnRhY3REYXRhLnNlbGVjdEl0ZW0oIjMiKTsKKwkJCQl9CisJCQkJCisJCQl9CisJCQkKKwkJCXBhcmVudC5fdXNlclByb2ZpbGUuaW5pdEZpZWxkcyhvYmopOworCQkJCisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorCQorCTwhLS0gcmVtb3RlY2FsbHMgLS0+CisJCisgIAk8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJnZXRVc2VyU2VsZiIgZnVuY25hbWU9InVzZXJzZXJ2aWNlLmdldFVzZXJTZWxmIiAKKyAgCQlyZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAKKyAgCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBjYW52YXMuc2Vzc2lvbklkOyA8L21ldGhvZD48L25ldHBhcmFtPgorICAgIAk8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAJCTwhW0NEQVRBWworCQkJCXBhcmVudC5fdXNlcnBpYy5zZXRBdHRyaWJ1dGUoJ3NyYycsIGNhbnZhcy5nZXRQaWN0dXJlVXJsKHZhbHVlLnBpY3R1cmV1cmksICcmbW9kdWxlTmFtZT11c2VycHJvZmlsZScpKTsKKwkgICAgCQlwYXJlbnQuaW5pdEZpZWxkcyh2YWx1ZSk7CisgICAgCQldXT4KKyAgICAJPC9oYW5kbGVyPgorICAJPC9uZXRSZW1vdGVDYWxsSGliPgkKKwkKKworICAJPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0idXBkYXRlVXNlclNlbGZTbWFsbCIgZnVuY25hbWU9InVzZXJzZXJ2aWNlLnVwZGF0ZVVzZXJTZWxmU21hbGwiIAorICAJCXJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiByZWdpc3Rlck9iamVjdD0idHJ1ZSIgPiAgIAorCQk8YXR0cmlidXRlIG5hbWU9InNlbmRPYmplY3QiIHZhbHVlPSJudWxsIiAvPgorCQk8IS0tIGdldHMgY2FsbGVkIGJ5IE9ic2VydmVyIC0tPgorICAJCTxtZXRob2QgbmFtZT0icHJlcGFyZUNhbGwiPgorICAgICAgICAgICAgaWYgKHRoaXMucGFyZW50LnVzZXJwYXNzMS5nZXRUZXh0KCk9PXRoaXMucGFyZW50LnVzZXJwYXNzMi5nZXRUZXh0KCkpeworICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnVzZXJPYmoucGFzc3dvcmQgPSB0aGlzLnBhcmVudC51c2VycGFzczEuZ2V0VGV4dCgpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC51c2VyT2JqLnBhc3N3b3JkID0gJyc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAKKyAgCQkJdGhpcy5wYXJlbnQudXNlck9iai5maXJzdG5hbWUgPSB0aGlzLnBhcmVudC5maXJzdG5hbWUuZ2V0VGV4dCgpOworICAJCQl0aGlzLnBhcmVudC51c2VyT2JqLmxhc3RuYW1lID0gdGhpcy5wYXJlbnQubGFzdG5hbWUuZ2V0VGV4dCgpOworICAJCQl0aGlzLnBhcmVudC51c2VyT2JqLmVtYWlsID0gdGhpcy5wYXJlbnQuZW1haWwuZ2V0VGV4dCgpOworICAJCQl0aGlzLnBhcmVudC51c2VyT2JqLnBob25lID0gdGhpcy5wYXJlbnQucGhvbmUuZ2V0VGV4dCgpOworICAJCQl0aGlzLnBhcmVudC51c2VyT2JqLnN0cmVldCA9IHRoaXMucGFyZW50LnN0cmVldC5nZXRUZXh0KCk7CisgIAkJCXRoaXMucGFyZW50LnVzZXJPYmouYWRkaXRpb25hbG5hbWUgPSB0aGlzLnBhcmVudC5ob3VzZS5nZXRUZXh0KCk7CisgIAkJCXRoaXMucGFyZW50LnVzZXJPYmouemlwID0gdGhpcy5wYXJlbnQuemlwLmdldFRleHQoKTsKKyAgCQkJdGhpcy5wYXJlbnQudXNlck9iai50b3duID0gdGhpcy5wYXJlbnQudG93bi5nZXRUZXh0KCk7CisgIAkJCXRoaXMucGFyZW50LnVzZXJPYmouc3RhdGVfaWQgPSB0aGlzLnBhcmVudC5zdGF0ZS5nZXRWYWx1ZSgpOworICAJCQl0aGlzLnBhcmVudC51c2VyT2JqLmNvbW1lbnQgPSB0aGlzLnBhcmVudC5hZHJlc3NfY29tbWVudC5nZXRUZXh0KCk7CisgICAgICAgICAgICB0aGlzLnBhcmVudC51c2VyT2JqLmFnZSA9IHRoaXMucGFyZW50LmFnZS5nZXREYXRlKCk7CisJCQl0aGlzLnBhcmVudC51c2VyT2JqLnNhbHV0YXRpb25zX2lkID0gTnVtYmVyKHRoaXMucGFyZW50LnNhbHV0YXRpb24uZ2V0VmFsdWUoKSk7CisJCQl0aGlzLnBhcmVudC51c2VyT2JqLmpuYW1lVGltZVpvbmUgPSBwYXJlbnQuX3RpbWVab25lLmdldFZhbHVlKCk7CisJCQl0aGlzLnBhcmVudC51c2VyT2JqLmxhbmd1YWdlc19pZCA9IHBhcmVudC5sYW5ndWFnZXMuZ2V0VmFsdWUoKTsKKwkJCQorCQkJdGhpcy5wYXJlbnQudXNlck9iai51c2VyT2ZmZXJzID0gcGFyZW50LnVzZXJPZmZlcnMuZ2V0VGV4dCgpOworCQkJdGhpcy5wYXJlbnQudXNlck9iai51c2VyU2VhcmNocyA9IHBhcmVudC51c2VyU2VhcmNocy5nZXRUZXh0KCk7CisJCQkKKwkJCXZhciBzaG93Q29udGFjdERhdGEgPSBOdW1iZXIocGFyZW50LnNob3dDb250YWN0RGF0YS5nZXRWYWx1ZSgpKTsKKwkJCQorCQkJaWYgKHNob3dDb250YWN0RGF0YSA9PSAxKSB7CisJCQkJdGhpcy5wYXJlbnQudXNlck9iai5zaG93Q29udGFjdERhdGEgPSB0cnVlOworCQkJCXRoaXMucGFyZW50LnVzZXJPYmouc2hvd0NvbnRhY3REYXRhVG9Db250YWN0cyA9IHRydWU7CisJCQl9IGVsc2UgaWYgKHNob3dDb250YWN0RGF0YSA9PSAyKSB7CisJCQkJdGhpcy5wYXJlbnQudXNlck9iai5zaG93Q29udGFjdERhdGEgPSBmYWxzZTsKKwkJCQl0aGlzLnBhcmVudC51c2VyT2JqLnNob3dDb250YWN0RGF0YVRvQ29udGFjdHMgPSB0cnVlOworCQkJfSBlbHNlIGlmIChzaG93Q29udGFjdERhdGEgPT0gMykgeworCQkJCXRoaXMucGFyZW50LnVzZXJPYmouc2hvd0NvbnRhY3REYXRhID0gZmFsc2U7CisJCQkJdGhpcy5wYXJlbnQudXNlck9iai5zaG93Q29udGFjdERhdGFUb0NvbnRhY3RzID0gZmFsc2U7CisJCQl9CisgICAgICAgICAgICAKKwkJCXZhciBnID0gY2FudmFzLmdldFVzZXJEYXRhKCk7CisgICAgICAgICAgICBnWyJzaG93QXVkaW9WaWRlb1Rlc3QiXSA9IHBhcmVudC5kb1Nob3dUZXN0V2l6emFyZC5nZXRWYWx1ZSgpOworICAgICAgICAgICAgY2FudmFzLnNldFVzZXJEYXRhKGcpOworICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLnBhcmVudC51c2VyT2JqLm9tVGltZVpvbmUgPSBudWxsOworICAgICAgICAgICAgdGhpcy5wYXJlbnQudXNlck9iai5vcmdhbmlzYXRpb25fdXNlcnMgPSBudWxsOworCQkJCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidGhpcy5wYXJlbnQudXNlck9iajogIix0aGlzLnBhcmVudC51c2VyT2JqKTsKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ0aGlzLnBhcmVudC51c2VyT2JqLmFkcmVzc2VzLnN0YXRlcyAiLHRoaXMucGFyZW50LnVzZXJPYmouYWRyZXNzZXMuc3RhdGVzKTsKKyAgCQk8L21ldGhvZD4KKyAgCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBjYW52YXMuc2Vzc2lvbklkOyA8L21ldGhvZD48L25ldHBhcmFtPgorICAgIAk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHRoaXMucGFyZW50LnBhcmVudC51c2VyT2JqOzwvbWV0aG9kPjwvbmV0cGFyYW0+CSAgCQkKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+IAorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInVwZGF0ZVVzZXJTZWxmU21hbGw6ICIsdmFsdWUpOworICAgICAgICA8L2hhbmRsZXI+CisgIAk8L25ldFJlbW90ZUNhbGxIaWI+CisJCisJPCEtLSBjb250ZW50IC0tPgkKKyAgICAKKyAgICA8IS0tIDE0Mzp1c2VyZGF0YSAtLT4KKyAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjE0MyIgd2lkdGg9IjIwMCIgeT0iNDAiIHJlc2l6ZT0iZmFsc2UiIGZvbnRzdHlsZT0iYm9sZCIgLz4KKworICAgIDwhLS0gMTMzOlBhc3N3b3JkIC0tPgorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMTMzIiB3aWR0aD0iMjAwIiB5PSI3MCIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPgorICAgICAgICA8Y3VzdG9tRWRpdHRleHQgbmFtZT0idXNlcnBhc3MxIiB5PSI3MCIgcGFzc3dvcmQ9InRydWUiIHg9IjEyMCIgd2lkdGg9IjI3MCIgdGV4dD0iIiAvPgorICAgICAgICAKKyAgICA8IS0tIDEzNDpSZXR5cGUgLS0+CisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIxMzQiIHdpZHRoPSIyMDAiIHk9IjEwMCIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPgorICAgICAgICA8Y3VzdG9tRWRpdHRleHQgbmFtZT0idXNlcnBhc3MyIiB5PSIxMDAiIHBhc3N3b3JkPSJ0cnVlIiB4PSIxMjAiIHdpZHRoPSIyNzAiIHRleHQ9IiIgLz4gICAKKyAgICAKKyAgICA8IS0tIDEzNTpGaXJzdG5hbWUgLS0+CisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIxMzUiIHdpZHRoPSIyMDAiIHk9IjEzMCIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPgorICAgICAgICA8cmVzZXRDb21ib2JveCBuYW1lPSJzYWx1dGF0aW9uIiB3aWR0aD0iMTAwIiB5PSIxMzAiIHg9IjEyMCIgZWRpdGFibGU9ImZhbHNlIiBmb250c2l6ZT0iMTEiPgorCSAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0IiA+CisJICAgICAgICAgICAgPCFbQ0RBVEFbCisJICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8Y2FudmFzLnNhbHV0YXRpb25zSW5pdFZhbHVlcy5sZW5ndGg7aSsrKXsKKwkgICAgICAgICAgICAgICAgdGhpcy5hZGRJdGVtKGNhbnZhcy5zYWx1dGF0aW9uc0luaXRWYWx1ZXNbaV0ubGFiZWwudmFsdWUsY2FudmFzLnNhbHV0YXRpb25zSW5pdFZhbHVlc1tpXS5zYWx1dGF0aW9uc19pZCk7CisJICAgICAgICAgICAgfQorCSAgICAgICAgICAgIHRoaXMuc2VsZWN0SXRlbShTdHJpbmcoY2FudmFzLnNhbHV0YXRpb25zSW5pdFZhbHVlc1swXS5zYWx1dGF0aW9uc19pZCkpOworCSAgICAgICAgICAgIF1dPgorCSAgICAgICAgPC9oYW5kbGVyPiAKKyAgICAgICAgPC9yZXNldENvbWJvYm94PiAJCisgICAgICAgIDxjdXN0b21FZGl0dGV4dCBuYW1lPSJmaXJzdG5hbWUiIHk9IjEzMCIgeD0iMjMwIiB3aWR0aD0iMTYwIiB0ZXh0PSIiIC8+CisgICAgICAgIAorICAgIDwhLS0gMTM2Okxhc3RuYW1lIC0tPgorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMTM2IiB3aWR0aD0iMjAwIiB5PSIxNjAiIHJlc2l6ZT0iZmFsc2UiIHg9IjIiLz4KKyAgICAgICAgPGN1c3RvbUVkaXR0ZXh0IG5hbWU9Imxhc3RuYW1lIiB5PSIxNjAiIHg9IjEyMCIgd2lkdGg9IjI3MCIgdGV4dD0iIiAvPiAgCisgICAgICAgIAorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMTE0MyIgd2lkdGg9IjIwMCIgeT0iMTkwIiByZXNpemU9ImZhbHNlIiB4PSIyIi8+CisgICAgICAgICA8cmVzZXRDb21ib2JveCBuYW1lPSJfdGltZVpvbmUiIGVkaXRhYmxlPSJmYWxzZSIgeT0iMTkwIiB3aWR0aD0iMjcwIiB4PSIxMjAiCisgICAgICAgICAJCQkgICBmb250c2l6ZT0iMTEiIHN0eWxlPSJjb21wb25lbnRTdHlsZSI+CisgICAgICAgICAJPGxhYmVsZFRleHRMaXN0SXRlbSBkYXRhcGF0aD0idGltZVpvbmVTZXQ6L2l0ZW0iIHRleHQ9IiRwYXRoeyAnZnJvbnRFbmRMYWJlbC90ZXh0KCknIH0iIAorICAgICAgICAgICAgICAgIHZhbHVlPSIkcGF0aHsgJ2puYW1lL3RleHQoKScgfSIgLz4KKyAgICAgICAgIDwvcmVzZXRDb21ib2JveD4gICAgICAgCisKKyAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjExMSIgd2lkdGg9IjIwMCIgeT0iMjIwIiByZXNpemU9ImZhbHNlIiB4PSIyIi8+CisgICAgICAgIDxyZXNldENvbWJvYm94IG5hbWU9Imxhbmd1YWdlcyIgd2lkdGg9IjI3MCIgeT0iMjIwIiB4PSIxMjAiIGVkaXRhYmxlPSJmYWxzZSI+CisgICAgICAgICAgICA8bGFiZWxkVGV4dExpc3RJdGVtIGRhdGFwYXRoPSJsYW5ndWFnZXNTZXQ6L2l0ZW0iIHRleHQ9IiRwYXRoeyAnbmFtZS90ZXh0KCknIH0iCisgICAgICAgICAgICAgICAgdmFsdWU9IiRwYXRoeyAnbGFuZ3VhZ2VfaWQvdGV4dCgpJyB9IiAvPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAgICAgICAgICAgICB2YXIgZyA9IGNhbnZhcy5nZXRVc2VyRGF0YSgpOworICAgICAgICAgICAgICAgIGlmKCRkZWJ1ZykgRGVidWcud3JpdGUoImNoZWNrTG9naW5EYXRhL2c6ICIsZyk7CisgICAgICAgICAgICAgICAgaWYgKGdbInVzZXJsYW5nIl0hPW51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJdGVtKGdbInVzZXJsYW5nIl0pOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0SXRlbShTdHJpbmcoY2FudmFzLnRoaXNoaWIudXNlcmxhbmcpKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDwvcmVzZXRDb21ib2JveD4KKworICAgIDwhLS0gMTM3Ok1haWwgLS0+CisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIxMzciIHdpZHRoPSIyMDAiIHk9IjI1MCIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPgorICAgICAgICA8Y3VzdG9tRWRpdHRleHQgbmFtZT0iZW1haWwiIHk9IjI1MCIgeD0iMTIwIiB3aWR0aD0iMjcwIiB0ZXh0PSIiIHJlZ2V4cFR5cGU9ImVtYWlsIi8+CisgICAgCisgICAgPCEtLSA2MDc6UGhvbmUgLS0+CisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSI2MDciIHdpZHRoPSIyMDAiIHk9IjI4MCIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPgorICAgICAgICA8Y3VzdG9tRWRpdHRleHQgbmFtZT0icGhvbmUiIHk9IjI4MCIgeD0iMTIwIiB3aWR0aD0iMjcwIiB0ZXh0PSIiIC8+CisgICAgICAgIAorICAgIDwhLS0gMTM4OkJpcnRoZGF5IC0tPgorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMTM4IiB3aWR0aD0iMjAwIiB5PSIzMTAiIHJlc2l6ZT0iZmFsc2UiIHg9IjIiLz4KKyAgICAgICAgPGRhdGVGaWVsZCBuYW1lPSJhZ2UiIHk9IjMxMCIgeD0iMTIwIiB3aWR0aD0iMjcwIiB0ZXh0PSIiIC8+CisgICAgICAgIAorICAgIDwhLS0gMTM5OlN0cmVldC9ObyAtLT4KKyAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjEzOSIgd2lkdGg9IjIwMCIgeT0iMzQwIiByZXNpemU9ImZhbHNlIiB4PSIyIi8+CisgICAgICAgIDxjdXN0b21FZGl0dGV4dCBuYW1lPSJzdHJlZXQiIHk9IjM0MCIgeD0iMTIwIiB3aWR0aD0iMjIwIiB0ZXh0PSIiIC8+CisgICAgICAgIDxjdXN0b21FZGl0dGV4dCBuYW1lPSJob3VzZSIgeT0iMzQwIiB4PSIzNTAiIHdpZHRoPSI0MCIgdGV4dD0iIiAvPgorICAgICAgICAKKyAgICA8IS0tIDE0MDpaSVAvVG93biAtLT4KKyAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjE0MCIgd2lkdGg9IjI4MCIgeT0iMzcwIiByZXNpemU9ImZhbHNlIiB4PSIyIi8+CisgICAgICAgIDxjdXN0b21FZGl0dGV4dCBuYW1lPSJ6aXAiIHk9IjM3MCIgeD0iMTIwIiB3aWR0aD0iNzAiIHRleHQ9IiIgLz4gICAKKyAgICAgICAgPGN1c3RvbUVkaXR0ZXh0IG5hbWU9InRvd24iIHk9IjM3MCIgeD0iMjAwIiB3aWR0aD0iMTkwIiB0ZXh0PSIiIC8+ICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAKKyAgICA8IS0tIDE0MTpDb3VudHJ5IC0tPgorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iMTQxIiB3aWR0aD0iMjAwIiB5PSI0MDAiIHJlc2l6ZT0iZmFsc2UiIHg9IjIiLz4gIAorICAgICAgICA8ZHluYW1pY0NvbWJvYm94IG5hbWU9InN0YXRlIiB3aWR0aD0iMjcwIiB5PSI0MDAiIHg9IjEyMCIKKyAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0PSJTd2l0emVybGFuZCIgdmFsdWU9IjIwNCIgLz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICA8IS0tCisJCTx2YWxpZFRleHQgbmFtZT0ic3RhdGUiIHdpZHRoPSIyNzAiIHk9IjM0MCIgeD0iMTIwIiBmb250c2l6ZT0iMTEiIAorICAgICAgICAgICAgc2hvd25pdGVtcz0iNyIgdmFsaWRhdGVfbWV0aG9kPSIkb25jZXsgY2FudmFzLnZhbGlkYXRlQ291bnRyeSB9IiAKKyAgICAgICAgICAgIHJlc3VsdElkPSJzdGF0ZV9pZCIgcmVzdWx0TmFtZT0ibmFtZSIgLz4gLS0+CisJCQkKKwkgCisgICAgPCEtLSAxNDI6QWRyZXNzLUluZm8gLS0+CisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIxNDIiIHdpZHRoPSIyMDAiIHk9IjQzMCIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPgorICAgICAgICA8Y3VzdG9tRWRpdHRleHQgbmFtZT0iYWRyZXNzX2NvbW1lbnQiIHk9IjQzMCIgeD0iMTIwIiB3aWR0aD0iMjcwIiAKKyAgICAgICAgICAgIGhlaWdodD0iMTAwIiB0ZXh0PSIiIG11bHRpbGluZT0idHJ1ZSIvPgorICAgICAgIAorICAgIDwhLS0gMTYxOk9yZ2FuaXNhdGlvbnMgLS0+CisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIxNjEiIHdpZHRoPSIyMDAiIHk9IjU0MCIgcmVzaXplPSJmYWxzZSIgeD0iMiIvPiAgICAgCisgICAgPHNpbXBsZVZhbHVlTGlzdCBuYW1lPSJfb3JnYW5pc2F0aW9uc2xpc3QiIHk9IjU0MCIgeD0iMTIwIiB3aWR0aD0iMjcwIiBoZWlnaHQ9IjEwMCIgCisJCW11bHRpc2VsZWN0PSJ0cnVlIiAvPgorCQkKKwkKKwk8dmlldyB5PSI0MiIgeD0iNDE0IiBuYW1lPSJfaW1hZ2VQcm9maWxlQkcxIiB3aWR0aD0iMTI4IiBoZWlnaHQ9IjEyOCIgCisgICAgCQkJCWJnY29sb3I9IjB4RkZGRkZGIiBvcGFjaXR5PSIwLjUiID4KKyAgICA8L3ZpZXc+CisgICAgCisgICAJPGltYWdlIG5hbWU9Il91c2VycGljIiB5PSI0MiIgeD0iNDE0IiA+CisgICAKKyAgICAJPGhhbmRsZXIgbmFtZT0ib25sb2FkIiBhcmdzPSJkIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIGlmICh0aGlzLmhlaWdodCA+IDExNikgeworICAgICAgICAgICAgICAgICAgICAvL0lmIGJpZ2dlciB0aGVuIGNvbnRhaW50ZXIgdGhlbiBzY2FsZSBpdAorICAgICAgICAgICAgICAgICAgICB2YXIgd2lkdGggPSB0aGlzLndpZHRoLyh0aGlzLmhlaWdodC8xMTYpOworICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywxMTYpOworICAgICAgICAgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnd2lkdGgnLHdpZHRoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHRoaXMud2lkdGggPiAxMTYpIHsKKyAgICAgICAgICAgICAgICAJLy9JZiBiaWdnZXIgdGhlbiBjb250YWludGVyIHRoZW4gc2NhbGUgaXQKKyAgICAgICAgICAgICAgICAgICAgdmFyIGhlaWdodCA9IHRoaXMuaGVpZ2h0Lyh0aGlzLndpZHRoLzExNik7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdoZWlnaHQnLGhlaWdodCk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCd3aWR0aCcsMTE2KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib25sb2FkICIsdGhpcy5oZWlnaHQsdGhpcy53aWR0aCxkLmhlaWdodCxkLndpZHRoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvL21ha2VzIHN1cmUgYm90dG9tIGFyZWEgaXMgdXBkYXRlZAorICAgICAgICAgICAgICAgIC8vdGhpcy5fY2hhbmdlU2l6ZS5zZXRBdHRyaWJ1dGUoJ3knLHRoaXMuaGVpZ2h0LTIwKTsKKyAgICAgICAgICAgICAgICAvL3RoaXMuX2NoYW5nZVNpemUuc2V0QXR0cmlidXRlKCd3aWR0aCcsdGhpcy53aWR0aCk7CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPgorICAgIAkKKyAgICA8L2ltYWdlPgorICAgIAorICAgIDx2aWV3IHk9IjQyIiB4PSI0MTQiIG5hbWU9Il9pbWFnZVByb2ZpbGVCRzIiIHdpZHRoPSIxMjgiIGhlaWdodD0iMTI4IiA+CisJICAgIAorCSAgICA8dmlldyBuYW1lPSJfY2hhbmdlU2l6ZSIgaGVpZ2h0PSI0OCIgd2lkdGg9IjEyOCIgeT0iODAiIGJnY29sb3I9IjB4RkZGRkZGIiBvcGFjaXR5PSIwLjYiPgorICAgCQkJPGxhYmVsVGV4dCBsYWJlbGlkPSIzNzkiIGFsaWduPSJjZW50ZXIiIC8+CisgICAgCQk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgCQk8IVtDREFUQVsKKwkJICAgICAgICAJbmV3IGx6LnVwbG9hZFdpbmRvd0V4cGxvcmVyKGNhbnZhcy5tYWluX2NvbnRlbnQuX2NvbnRlbnQuaW5uZXIseworCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDozMDAsdXBsb2FkbW9kdWxlOid1c2VycHJvZmlsZScsCisJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc09ubHlQcm9maWxlOnRydWUsCisJCSAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm5PYmo6dGhpcywKKwkJICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZsZXROYW1lOid1cGxvYWQudXBsb2FkJworCQkgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKwkgICAgICAgIAldXT4KKwkgICAgICAgIDwvaGFuZGxlcj4KKwkgICAgICAgIDxtZXRob2QgbmFtZT0ic2VuZFJlZnJlc2giPgorCSAgICAgICAgCXBhcmVudC5wYXJlbnQuZ2V0VXNlclNlbGYuZG9DYWxsKCk7CisJICAgICAgICA8L21ldGhvZD4KKwkgICAgCTxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iMzc5IiAvPgorICAgIAk8L3ZpZXc+CisgICAgCisgICAgPC92aWV3PgorCQorICAgIDwhLS0gUmVtZW1iZXIgTWUgLS0+ICAgIAorICAgIDxsYWJlbENoZWNrYm94IG5hbWU9ImRvU2hvd1Rlc3RXaXp6YXJkIiBsYWJlbGlkPSI3NzYiIHg9IjQzMCIgeT0iMTg2IiA+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgICAgICB2YXIgZyA9IGNhbnZhcy5nZXRVc2VyRGF0YSgpOworICAgICAgICAgICAgdmFyIHNhdmUgPSBnWyJzaG93QXVkaW9WaWRlb1Rlc3QiXTsKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzYXZlY2FtZGF0YSBzYXZlOiAiLHNhdmUpOworICAgICAgICAgICAgaWYoc2F2ZSkgdGhpcy5zZXRWYWx1ZSh0cnVlKTsKKyAgICAgICAgPC9oYW5kbGVyPiAgICAgICAgIAorICAgIDwvbGFiZWxDaGVja2JveD4KKyAgICAgICAKKyAgICA8IS0tIDM3OTpVcGxvYWQgbmV3IEltYWdlIC0tPgorICAgIDxzaW1wbGVMYWJlbEJ1dHRvbiB5PSIyMDQiIGxhYmVsaWQ9IjEzMDAiIHg9IjU1MCI+CisgICAgCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgIAkJbmV3IGx6LmVkaXRXaGl0ZWJvYXJkRGVmYXVsdChwYXJlbnQse3g6NDAwLHk6MTQwfSk7CisgICAgCTwvaGFuZGxlcj4KKyAgICA8L3NpbXBsZUxhYmVsQnV0dG9uPiAgICAgICAKKyAgICAgIAorICAgICAgICAKKyAgICA8IS0tIENvbW11bml0eSBzZXR0aW5ncyAtLT4KKyAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjExNTkiIHdpZHRoPSIyMDAiIHk9IjIzMCIgcmVzaXplPSJmYWxzZSIgCisgICAgICAgICAgICAgICB4PSI0MTAiIGZvbnRzdHlsZT0iYm9sZCIgdmlzaWJpbGl0eT0idmlzaWJsZSIvPiAgIAorICAgIAorICAgPHJhZGlvZ3JvdXAgbmFtZT0ic2hvd0NvbnRhY3REYXRhIiB2aXNpYmlsaXR5PSJ2aXNpYmxlIgorICAgCQkJbGF5b3V0PSJjbGFzczpzaW1wbGVsYXlvdXQ7YXhpczp5O3NwYWNpbmc6MiIgeT0iMjYwIiB4PSI0MjAiPgorICAgICAgICA8bGFiZWxSYWRpb0J1dHRvbiBsYWJlbGlkPSIxMTYwIiB2YWx1ZT0iMSIgLz4KKyAgICAgICAgPGxhYmVsUmFkaW9CdXR0b24gbGFiZWxpZD0iMTE2OCIgdmFsdWU9IjIiIC8+CisgICAgICAgIDxsYWJlbFJhZGlvQnV0dG9uIGxhYmVsaWQ9IjExNjkiIHZhbHVlPSIzIiAvPgorICAgIDwvcmFkaW9ncm91cD4gCisgCisgICAgPHZpZXcgcmVzb3VyY2U9Im1lc3NhZ2Vib3hfaW5mb19yc2MiIHg9IjQxMCIgeT0iMzIwIiB2aXNpYmlsaXR5PSJ2aXNpYmxlIi8+CisgICAgCisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIxMTYxIiB4PSI0MzQiIHk9IjMyMCIgIGZvbnRzdHlsZT0iaXRhbGljIgorICAgICAgICAgICAgICAgbXVsdGlsaW5lPSJ0cnVlIiB3aWR0aD0iMzY2IiB2aXNpYmlsaXR5PSJ2aXNpYmxlIi8+ICAKKyAgICAgICAgICAgICAgICAgCisJPGxhYmVsVGV4dCBsYWJlbGlkPSIxMTYyIiB3aWR0aD0iMjAwIiB5PSIzOTAiIHJlc2l6ZT0iZmFsc2UiIHg9IjQxMCIgdmlzaWJpbGl0eT0idmlzaWJsZSIvPgorICAgICAgICA8Y3VzdG9tU2Nyb2xsRWRpdHRleHQgbmFtZT0idXNlck9mZmVycyIgeT0iMzkwIiB4PSI1MzAiIHdpZHRoPSIyNzAiIAorICAgICAgICAgICAJCQkgaGVpZ2h0PSIxMDAiIHRleHQ9IiIgdmlzaWJpbGl0eT0idmlzaWJsZSIvPgkKKworCTxsYWJlbFRleHQgbGFiZWxpZD0iMTE2MyIgd2lkdGg9IjIwMCIgeT0iNTAwIiByZXNpemU9ImZhbHNlIiB4PSI0MTAiIHZpc2liaWxpdHk9InZpc2libGUiLz4KKyAgICAgICAgPGN1c3RvbVNjcm9sbEVkaXR0ZXh0IG5hbWU9InVzZXJTZWFyY2hzIiB5PSI1MDAiIHg9IjUzMCIgd2lkdGg9IjI3MCIgCisgICAgICAgICAgIAkJCSBoZWlnaHQ9IjEwMCIgdGV4dD0iIiB2aXNpYmlsaXR5PSJ2aXNpYmxlIi8+CQorICAgICAgICAgICAJCQkgCis8L2NsYXNzPgorCQorPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvc2V0dGluZ3MvbGlicmFyeS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDJjNDc4ZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvc2V0dGluZ3MvbGlicmFyeS5sengKQEAgLTAsMCArMSw3NSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKwkKKwk8IS0tIEFQTCBBdXRob3Igc2ViYXdhZ25lciAtLT4KKwk8cmVzb3VyY2UgbmFtZT0iaW1hZ2VfbG9hZGluZ19wbGFjZWhvbGRlcl9yc2MiIAorCQkJICBzcmM9InJlc291cmNlcy9sb2FkaW5nX3N5bWJvbC5zd2YiIC8+CisJCisJPCEtLSBBUEwgQXV0aG9yIHNlYmF3YWduZXIgLS0+CisJPHJlc291cmNlIG5hbWU9InByaXZhdGVfbWVzc2FnZV9zZWxlY3RfcGFydF9yc2MiIAorCQkJICBzcmM9InJlc291cmNlcy9zZWxlY3RfcGFydC5wbmciIC8+CQorCQkKKwk8IS0tIEZhbUZhbSBJY29uIFNldCAtLT4KKwk8cmVzb3VyY2UgbmFtZT0icHJpdmF0ZV9tZXNzYWdlX3NlbmRfcnNjIiAKKwkJCSAgc3JjPSJyZXNvdXJjZXMvZW1haWxfZ28ucG5nIiAvPgkgCisJCQorCTwhLS0gRmFtRmFtIEljb24gU2V0IC0tPgorCTxyZXNvdXJjZSBuYW1lPSJwcml2YXRlX21lc3NhZ2VfYWRkX3JzYyIgCisJCQkgIHNyYz0icmVzb3VyY2VzL2VtYWlsX2FkZC5wbmciIC8+CQorCQkKKwk8IS0tIEZhbUZhbSBJY29uIFNldCAtLT4JICAKKwk8cmVzb3VyY2UgbmFtZT0icHJpdmF0ZV9tZXNzYWdlX3RyYXNoX3JzYyIgCisJCQkgIHNyYz0icmVzb3VyY2VzL2VtYWlsX2RlbGV0ZS5wbmciIC8+CQorCQorCTwhLS0gRmFtRmFtIEljb24gU2V0IC0tPgorCTxyZXNvdXJjZSBuYW1lPSJwcml2YXRlX21lc3NhZ2VfZm9sZGVyX2FkZF9yc2MiIAorCQkJICBzcmM9InJlc291cmNlcy9mb2xkZXJfYWRkLnBuZyIgLz4JCQorCQorCTwhLS0gRmFtRmFtIEljb24gU2V0IC0tPgkgIAorCTxyZXNvdXJjZSBuYW1lPSJwcml2YXRlX21lc3NhZ2VfZm9sZGVyX3JzYyIgCisJCQkgIHNyYz0icmVzb3VyY2VzL2ZvbGRlci5wbmciIC8+CQorCQkKKwk8IS0tIEZhbUZhbSBJY29uIFNldCAtLT4JICAKKwk8cmVzb3VyY2UgbmFtZT0icHJpdmF0ZV9tZXNzYWdlX2luYm94X3JzYyIgCisJCQkgIHNyYz0icmVzb3VyY2VzL2Jhc2tldF9wdXQucG5nIiAvPgkKKwkJCisJPCEtLSBGYW1GYW0gSWNvbiBTZXQgLS0+CSAgCisJPHJlc291cmNlIG5hbWU9InVzZXJfY29udGFjdF9jYWxlbmRhcl9hZGRfcnNjIiAKKyAgICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMvY2FsZW5kYXJfYWRkLnBuZyIgLz4gIAorCQorCTwhLS0gRmFtRmFtIEljb24gU2V0IC0tPgkJICAKKwk8cmVzb3VyY2UgbmFtZT0idXNlcl9jb250YWN0X2NhbGVuZGFyX2RlbGV0ZV9yc2MiIAorICAgICAgICAgICAgICBzcmM9InJlc291cmNlcy9jYWxlbmRhcl9kZWxldGUucG5nIiAvPiAKKyAgICAgIAorICAgIDwhLS0gRmFtRmFtIEljb24gU2V0IC0tPgkgICAgICAgIAorICAgIDxyZXNvdXJjZSBuYW1lPSJ1c2VyX2NvbnRhY3RfY2FsZW5kYXJfc3lzdGVtX3VuZG9fcnNjIiAKKyAgICAgICAgICAgICAgc3JjPSJyZXNvdXJjZXMvYXJyb3dfdW5kby5wbmciIC8+ICAgCisgICAKKyAgICA8aW5jbHVkZSBocmVmPSJwcml2YXRlbWVzc2FnZXMvIiAvPgorICAgIDxpbmNsdWRlIGhyZWY9InVzZXJjb250YWN0cy8iIC8+CisgICAgPGluY2x1ZGUgaHJlZj0ic2VhcmNodXNlcnByb2ZpbGUvIiAvPgorICAgIAorICAgIDxpbmNsdWRlIGhyZWY9InZpZXdVc2VyUHJvZmlsZS5sengiIC8+CisgICAgPGluY2x1ZGUgaHJlZj0idXNlclNldHRpbmdzLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJlZGl0VXNlclByb2ZpbGUubHp4IiAvPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL3NldHRpbmdzL3ByaXZhdGVtZXNzYWdlcy9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvc2V0dGluZ3MvcHJpdmF0ZW1lc3NhZ2VzL2xpYnJhcnkubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3MzJiODYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL3NldHRpbmdzL3ByaXZhdGVtZXNzYWdlcy9saWJyYXJ5Lmx6eApAQCAtMCwwICsxLDMzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCQorCQorICAgIDxpbmNsdWRlIGhyZWY9Im5ld1ByaXZhdGVNZXNzYWdlLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJuZXdQcml2YXRlTWVzc2FnZUZvbGRlci5sengiIC8+CisgICAgPGluY2x1ZGUgaHJlZj0icHJpdmF0ZU1lc3NhZ2VGb2xkZXIubHp4IiAvPgorICAgIDxpbmNsdWRlIGhyZWY9InByaXZhdGVNZXNzYWdJdGVtLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJwcml2YXRlTWVzc2FnZXMubHp4IiAvPgorICAgIDxpbmNsdWRlIGhyZWY9InJvb21BY2Nlc3NNZXNzYWdlLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJwZW5kaW5nVXNlclN0YXR1cy5sengiIC8+CisKKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy9wcml2YXRlbWVzc2FnZXMvbmV3UHJpdmF0ZU1lc3NhZ2UubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy9wcml2YXRlbWVzc2FnZXMvbmV3UHJpdmF0ZU1lc3NhZ2UubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzYTI5YWMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL3NldHRpbmdzL3ByaXZhdGVtZXNzYWdlcy9uZXdQcml2YXRlTWVzc2FnZS5sengKQEAgLTAsMCArMSw0NjcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisJCis8Y2xhc3MgbmFtZT0ibmV3UHJpdmF0ZU1lc3NhZ2UiIGV4dGVuZHM9Imd1aVByZXNlbnRlciIgbGFiZWxpZD0iMTIwOSIgaXNkcmFnYWJsZT0iZmFsc2UiIAorICAgIG1pbmltaXphYmxlPSJmYWxzZSIgbWF4aW1pemFibGU9ImZhbHNlIiBmdWxsVG9vbEJhcj0idHJ1ZSIgCisgICAgcmVzaXplYWJsZT0iZmFsc2UiIHdpZHRoPSIyNTAiIGhlaWdodD0iMTU0IiA+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJyZWZPYmoiIHZhbHVlPSJudWxsIi8+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJ1c2VyT2JqZWN0IiB2YWx1ZT0ibnVsbCIgLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9InVzZXJfaWQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9InBhcmVudE1lc3NhZ2VJZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9InJlY2VpcGVudHMiIHZhbHVlPSJudWxsIiAvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0ic2F2ZVJlZk9iaiIgdmFsdWU9Im51bGwiIC8+CisJCisJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKwkJPCFbQ0RBVEFbCisJCQlpZiAodGhpcy51c2VyT2JqZWN0ICE9IG51bGwpIHsKKwkJCQkKKwkJCQl2YXIgdFN0cmluZyA9IHRoaXMudXNlck9iamVjdC5maXJzdG5hbWUgKyAnICcgKyB0aGlzLnVzZXJPYmplY3QubGFzdG5hbWUgICsgJyAnIAorCQkJCQkJCSsgJzwnICsgdGhpcy51c2VyT2JqZWN0LmFkcmVzc2VzLmVtYWlsICsgJz4nOworCQkJCQorCQkJCXRoaXMuX3RvLnNlbmRVcGRhdGVUZXh0ID0gZmFsc2U7CisJCQkJdGhpcy5fdG8uc2V0QXR0cmlidXRlKCJ0ZXh0Iix0U3RyaW5nKTsKKwkJCQl0aGlzLl90by5zZW5kVXBkYXRlVGV4dCA9IHRydWU7CisJCQl9IGVsc2UgaWYgKHRoaXMudXNlcl9pZCAhPSAwKSB7CisJCQkJdGhpcy5nZXRVc2VyQnlJZC5kb0NhbGwoKTsKKwkJCX0KKwkJXV0+CisJPC9oYW5kbGVyPgorCQorCTxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImdldFVzZXJCeUlkIiBmdW5jbmFtZT0idXNlcnNlcnZpY2UuZ2V0VXNlckJ5SWQiIAorICAgICAgICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAKKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gY2FudmFzLnNlc3Npb25JZDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50LnVzZXJfaWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgICAgIAk8IVtDREFUQVsKKyAgICAgICAgICAgIGlmKCRkZWJ1ZykgRGVidWcud3JpdGUoIlthZG1pbl11c2VyVmFsdWVGb3JtL2dldFVzZXJCeUlkOiAiLHZhbHVlLmxhc3RuYW1lKTsKKyAgICAgICAgICAgIHBhcmVudC51c2VyT2JqZWN0ID0gdmFsdWU7CisgICAgICAgICAgICB2YXIgdFN0cmluZyA9IHZhbHVlLmZpcnN0bmFtZSArICcgJyArIHZhbHVlLmxhc3RuYW1lICArICcgJyAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICArICc8JyArIHZhbHVlLmFkcmVzc2VzLmVtYWlsICsgJz4nOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgcGFyZW50Ll90by5zZW5kVXBkYXRlVGV4dCA9IGZhbHNlOworICAgICAgICAgICAgcGFyZW50Ll90by5zZXRBdHRyaWJ1dGUoInRleHQiLHRTdHJpbmcpOworICAgICAgICAgICAgcGFyZW50Ll90by5zZW5kVXBkYXRlVGV4dCA9IHRydWU7CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPgorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4KKwkKKwk8aGFuZGxlciBuYW1lPSJvbmNsb3NlIj4KKwkJaWYgKHRoaXMucmVmT2JqICE9IG51bGwpIHsKKwkJICAgIHRoaXMucmVmT2JqLm5ld01lc3NhZ2VBY3RpdmUgPSBmYWxzZTsKKwkJfQorCTwvaGFuZGxlcj4KKwkKKwk8bWV0aG9kIG5hbWU9InNlbmQiPgorCQk8IVtDREFUQVsKKwkJCisJCQl2YXIgdEFTdHJpbmcgPSB0aGlzLl90by5nZXRUZXh0KCkuc3BsaXQoIiwiKTsKKwkJCQorCQkJdGhpcy5yZWNlaXBlbnRzID0gbmV3IEFycmF5KCk7CisJCQkKKwkJCWZvciAodmFyIGk9MDtpPHRBU3RyaW5nLmxlbmd0aDtpKyspIHsKKwkJCQkKKwkJCQl2YXIgc1N0cmluZyA9IHRBU3RyaW5nW2ldOworCQkJCQorCQkJCXZhciB0MSA9IHNTdHJpbmcuaW5kZXhPZigiPCIpOworCQkJCXZhciB0MiA9IHNTdHJpbmcuaW5kZXhPZigiPiIpOworCQkJCQorCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCIrKyAiLGksc1N0cmluZyx0MSx0Mik7CisJCQkJCisJCQkJdmFyIGVtYWlsID0gc1N0cmluZzsKKwkJCQlpZiAodDEgPiAtMSAmJiB0MiA+IC0xKSB7CisJCQkJCWVtYWlsID0gc1N0cmluZy5zdWJzdHJpbmcodDEgKyAxLCB0Mik7CisJCQkJfQorCQkJCQorCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCIrKyAiLGVtYWlsKTsKKwkJCQkKKwkJCQl0aGlzLnJlY2VpcGVudHMucHVzaChlbWFpbCk7CisJCQkJCisJCQl9CisJCQkKKwkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJyZWNlaXBlbnRzIDo6ICIsdGhpcy5yZWNlaXBlbnRzKTsKKwkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJyZWNlaXBlbnRzIDo6ICIsdGhpcy5fcmljaFRleHQuZ2V0VGV4dCgpKTsKKwkJCisJCQl0aGlzLmNvbXBvc2VNYWlsLmRvQ2FsbCgpOworCQldXT4KKwk8L21ldGhvZD4KKwkKKwk8IS0tCisJcHVibGljIExvbmcgY29tcG9zZU1haWwoU3RyaW5nIFNJRCwgTWFwIHJlY2VpcGVudHMsIFN0cmluZyBzdWJqZWN0LCBTdHJpbmcgbWVzc2FnZSwgQm9vbGVhbiBib29rZWRSb29tLCAKKyAgICAJCURhdGUgdmFsaWRGcm9tRGF0ZSwgU3RyaW5nIHZhbGlkRnJvbVRpbWUsIERhdGUgdmFsaWRUb0RhdGUsIFN0cmluZyB2YWxpZFRvVGltZSwKKyAgICAJCUxvbmcgcGFyZW50TWVzc2FnZUlkLCBMb25nIHJvb210eXBlX2lkKQorCSAtLT4KKwk8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJjb21wb3NlTWFpbCIgZnVuY25hbWU9InVzZXJzZXJ2aWNlLmNvbXBvc2VNYWlsIiByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAgICAKKyAgICAJCQorICAgIAkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBjYW52YXMuc2Vzc2lvbklkOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCSAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQucmVjZWlwZW50czwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHRoaXMucGFyZW50LnBhcmVudC5fc3ViamVjdC5nZXRUZXh0KCk7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC5fcmljaFRleHQuZ2V0VGV4dCgpOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHRoaXMucGFyZW50LnBhcmVudC5fYm9va1Jvb20uZ2V0VmFsdWUoKTs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJzZURhdGVUb1N0cmluZ1RpbWVTZWNvbmRzKHBhcmVudC5wYXJlbnQuX3ZhbGlkX2Zyb20uZ2V0RGF0ZSgpKTs8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50Ll90aW1lRnJvbS5nZXRUZXh0KCk7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyc2VEYXRlVG9TdHJpbmdUaW1lU2Vjb25kcyhwYXJlbnQucGFyZW50Ll92YWxpZF90by5nZXREYXRlKCkpOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQuX3RpbWVUby5nZXRUZXh0KCk7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC5wYXJlbnRNZXNzYWdlSWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gTnVtYmVyKHBhcmVudC5wYXJlbnQuX3Jvb210eXBlLmdldFZhbHVlKCkpOzwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgICAgICA8IS0tU3RyaW5nIGRvbWFpbiwgU3RyaW5nIHBvcnQsIFN0cmluZyB3ZWJhcHAtLT4KKyAgICAgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIGNhbnZhcy5nZXRIdHRwSG9zdCgpOyA8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gY2FudmFzLnJlZDVodHRwcG9ydDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIGNhbnZhcy5odHRwUm9vdEtleTsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgCTwhW0NEQVRBWworICAgICAgICAgICAgICAgIAkvL1RoZSBvblJlc3VsdC1IYW5kbGVyIHdpbGwgYmUgY2FsbGVkIGJlIHRoZSBydG1wY29ubmVjdGlvbgorCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImNvbXBvc2VNYWlsIDogIix2YWx1ZSk7CisJCQlpZiAocGFyZW50LnNhdmVSZWZPYmogIT0gbnVsbCkgeworCQkJCXBhcmVudC5zYXZlUmVmT2JqLnNhdmVOb3RpZmljYXRpb24ocGFyZW50Ll9ib29rUm9vbS5nZXRWYWx1ZSgpKTsKKwkJCX0KKwkJCXBhcmVudC5jbG9zZSgpOworICAgICAgICAgICBdXT4KKwkJPC9oYW5kbGVyPiAgIAorCTwvbmV0UmVtb3RlQ2FsbEhpYj4JCisJCisJPGxhYmVsVGV4dCBuYW1lPSJfbGFiZWxUbyIgeD0iMiIgbGFiZWxpZD0iMTIxMCIgeT0iMjQiLz4KKwkKKwk8Y3VzdG9tU2Nyb2xsRWRpdHRleHQgbmFtZT0iX3RvIiB5PSIyMiIgeD0iODAiIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoLTgyIH0iIAorCQkJCQkJICB0ZXh0PSIiIGhlaWdodD0iNjAiPgorCQkKKwkJPGF0dHJpYnV0ZSBuYW1lPSJzZW5kVXBkYXRlVGV4dCIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iLz4KKwkJPGF0dHJpYnV0ZSBuYW1lPSJzZW5kU2luZ2xlVXBkYXRlVGV4dCIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iLz4KKwkJCisJCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisJCQl0aGlzLmNsb3NlRGVsZWdhdGUgPSBuZXcgTHpEZWxlZ2F0ZSggdGhpcywgIm9uYmx1ckZ1bmN0aW9uIiApOworCQkJdGhpcy5fbGlzdC5yZWZPYmogPSB0aGlzOworCQkJdGhpcy5fbGlzdC5zZXRBdHRyaWJ1dGUoIndpZHRoIix0aGlzLndpZHRoKTsKKwkJPC9oYW5kbGVyPgorCQkKKwkJPGhhbmRsZXIgbmFtZT0ib250ZXh0Q2hhbmdlIiBhcmdzPSJ0Ij4KKwkJCTwhW0NEQVRBWworCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCItLSBvbnRleHRDaGFuZ2UgIix0aGlzLnNlbmRVcGRhdGVUZXh0LHQpOworCQkJCQorCQkJCWlmICghdGhpcy5zZW5kVXBkYXRlVGV4dCkgeworCQkJCQlyZXR1cm47CisJCQkJfQorCQkJCQorCQkJCXZhciB0QVN0cmluZyA9IHQuc3BsaXQoIiwiKTsKKwkJCQkKKwkJCQl2YXIgdFN0cmluZyA9IHRBU3RyaW5nW3RBU3RyaW5nLmxlbmd0aC0xXTsKKwkJCQkKKwkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiLTEtIHRTdHJpbmcgIix0U3RyaW5nKTsKKwkJCQkKKwkJCQl0U3RyaW5nID0gdFN0cmluZy5zcGxpdCgnICcpLmpvaW4oJycpOworCQkJCQorCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCItMi0gdFN0cmluZyAiLHRTdHJpbmcpOworCQkJCQorCQkJCWlmICh0U3RyaW5nICE9ICIiKSB7CisJCQkJCQorCQkJCQl0aGlzLnN0YXJ0U2VhcmNoKHRTdHJpbmcpOworCQkJCQkKKwkJCQl9CisJCQkJCisJCQldXT4KKwkJPC9oYW5kbGVyPgorCQkKKwkJPG1ldGhvZCBuYW1lPSJhZGRUZXh0IiBhcmdzPSJ0eHQiPgorCQkJPCFbQ0RBVEFbCisJCQkKKwkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiLS0gYWRkVGV4dCAiLHR4dCk7CisJCQkJCisJCQkJdmFyIHQgPSB0aGlzLmdldFRleHQoKTsKKwkJCQl2YXIgdEFTdHJpbmcgPSB0LnNwbGl0KCIsIik7CisJCQkJCisJCQkJdmFyIG5TdHJpbmcgPSAiIjsKKwkJCQkKKwkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiLS0gdEFTdHJpbmcubGVuZ3RoICIsdEFTdHJpbmcubGVuZ3RoKTsKKwkJCQkKKwkJCQlmb3IgKHZhciBpPTA7IGk8dEFTdHJpbmcubGVuZ3RoLTE7IGkrKykgeworCQkJCQlpZiAoaSE9MCkgeworCQkJCQkJblN0cmluZyArPSAiLCAiOworCQkJCQl9CisJCQkJCW5TdHJpbmcgKz0gdEFTdHJpbmdbaV07CisJCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCItLSBuU3RyaW5nIDEgIixuU3RyaW5nKTsKKwkJCQl9CisJCQkJCisJCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIi0tIG5TdHJpbmcgMiAiLG5TdHJpbmcpOworCQkJCQorCQkJCWlmIChuU3RyaW5nICE9ICIiKSB7CisJCQkJCW5TdHJpbmcgKz0gIiwgIgorCQkJCX0KKwkJCQkKKwkJCQluU3RyaW5nICs9IHR4dDsKKwkJCQkKKwkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiLS0gblN0cmluZyAzICIsblN0cmluZyk7CisJCQkJCisJCQkJdGhpcy5zZW5kVXBkYXRlVGV4dCA9IGZhbHNlOworCQkJCXRoaXMuc2V0QXR0cmlidXRlKCJ0ZXh0IixuU3RyaW5nKTsKKwkJCQl0aGlzLnNlbmRVcGRhdGVUZXh0ID0gdHJ1ZTsKKwkJCQorCQkJXV0+CisJCTwvbWV0aG9kPgorCQkKKwkJPGhhbmRsZXIgbmFtZT0ib25ibHVyIj4KKwkJCTwhW0NEQVRBWworCQkJCisJCQkJaWYgKCF0aGlzLnNlbmRVcGRhdGVUZXh0KSB7CisJCQkJCXJldHVybjsKKwkJCQl9CisJCQkJCisJCQkJbHouVGltZXIuYWRkVGltZXIoIHRoaXMuY2xvc2VEZWxlZ2F0ZSwgMTAgKTsKKwkJCQkKKwkJCV1dPgorCQk8L2hhbmRsZXI+CQkJCQorCQkJCQorCQk8bWV0aG9kIG5hbWU9Im9uYmx1ckZ1bmN0aW9uIiBhcmdzPSJyZWZPYmoiID4KKwkJCTwhW0NEQVRBWworCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCItLSBvbmJsdXIiKTsKKwkJCQkKKwkJCQlpZiAoIXRoaXMuc2VuZFNpbmdsZVVwZGF0ZVRleHQpIHsKKwkJCQkJdGhpcy5zZW5kU2luZ2xlVXBkYXRlVGV4dCA9IHRydWU7CisJCQkJCXJldHVybjsKKwkJCQl9CisJCQkJCisJCQkJaWYgKHRoaXMuX2xpc3QudmlzaWJpbGl0eSA9PSAidmlzaWJsZSIpIHsKKwkJCQkJdGhpcy5fbGlzdC5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKwkJCQl9CisJCQkJCisJCQkJdmFyIHQgPSB0aGlzLmdldFRleHQoKTsKKwkJCQl2YXIgdEFTdHJpbmcgPSB0LnNwbGl0KCIsICIpOworCQkJCQorCQkJCXZhciBsYXN0U3RyaW5nID0gdEFTdHJpbmdbdEFTdHJpbmcubGVuZ3RoLTFdOworCQkJCQorCQkJCXZhciBsYXN0Q2hhciA9IGxhc3RTdHJpbmcuY2hhckF0KGxhc3RTdHJpbmcubGVuZ3RoLTEpOworCisJCQkJaWYgKGxhc3RDaGFyICE9ICI+IikgeworCQkJCQl2YXIgblN0cmluZyA9ICIiOworCQkJCQkKKwkJCQkJZm9yICh2YXIgaT0wO2k8dEFTdHJpbmcubGVuZ3RoLTE7aSsrKSB7CisJCQkJCQlpZiAoaSE9MCkgeworCQkJCQkJCW5TdHJpbmcgKz0gIiwiOworCQkJCQkJfQorCQkJCQkJblN0cmluZyArPSB0QVN0cmluZ1tpXTsKKwkJCQkJfQorCQkJCQkKKwkJCQkJdGhpcy5zZW5kVXBkYXRlVGV4dCA9IGZhbHNlOworCQkJCQl0aGlzLnNldEF0dHJpYnV0ZSgidGV4dCIsblN0cmluZyk7CisJCQkJCXRoaXMuc2VuZFVwZGF0ZVRleHQgPSB0cnVlOworCQkJCQkKKwkJCQl9CisJCQkJCisJCQldXT4KKwkJPC9tZXRob2Q+CisJCQorCQk8bWV0aG9kIG5hbWU9InN0YXJ0U2VhcmNoIiBhcmdzPSJ0U3RyaW5nIj4KKwkJCTwhW0NEQVRBWworCQkJCisJCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInN0YXJ0U2VhcmNoIDo6ICIsdFN0cmluZyk7CisJCQkJdmFyIHRSZXN1bHRBID0gbmV3IEFycmF5KCk7CisJCQkJCisJCQkJZm9yICh2YXIgaT0wOyBpPGNhbnZhcy51c2VyQ29udGFjdHMubGVuZ3RoOyBpKyspIHsKKwkJCQkJCisJCQkJCWlmIChjYW52YXMudXNlckNvbnRhY3RzW2ldLmNvbnRhY3QuZmlyc3RuYW1lLnN0YXJ0c1dpdGgodFN0cmluZykgCisJCQkJCQl8fCBjYW52YXMudXNlckNvbnRhY3RzW2ldLmNvbnRhY3QubGFzdG5hbWUuc3RhcnRzV2l0aCh0U3RyaW5nKSAKKwkJCQkJCXx8IGNhbnZhcy51c2VyQ29udGFjdHNbaV0uY29udGFjdC5hZHJlc3Nlcy5lbWFpbC5zdGFydHNXaXRoKHRTdHJpbmcpICkgeworCQkJCQkKKwkJCQkJCXRSZXN1bHRBLnB1c2goY2FudmFzLnVzZXJDb250YWN0c1tpXSk7CisJCQkJCQkJCisJCQkJCX0KKwkJCQkJCisJCQkJfQorCQkJCQorCQkJCWlmICh0UmVzdWx0QS5sZW5ndGggPiAwKSB7CisJCQkJCXRoaXMuX2xpc3QucmVtb3ZlQWxsSXRlbXMoKTsKKwkJCQkJCisJCQkJCWZvciAodmFyIGs9MDtrPHRSZXN1bHRBLmxlbmd0aDtrKyspIHsKKwkJCQkJCQorCQkJCQkJdGhpcy5fbGlzdC5hZGRJdGVtKHRSZXN1bHRBW2tdLmNvbnRhY3QuZmlyc3RuYW1lICsnICcrIHRSZXN1bHRBW2tdLmNvbnRhY3QubGFzdG5hbWUgKyAnICYjNjA7JyArIHRSZXN1bHRBW2tdLmNvbnRhY3QuYWRyZXNzZXMuZW1haWwgKyAnJiM2MjsnLCB0UmVzdWx0QVtrXS5jb250YWN0LmZpcnN0bmFtZSArJyAnKyB0UmVzdWx0QVtrXS5jb250YWN0Lmxhc3RuYW1lICsgJyA8JyArIHRSZXN1bHRBW2tdLmNvbnRhY3QuYWRyZXNzZXMuZW1haWwgKyAnPicpOyAKKwkJCQkJCQorCQkJCQl9CisJCQkJCQorCQkJCQkKKwkJCQl9IGVsc2UgeworCQkJCQkKKwkJCQkJdGhpcy5fbGlzdC5yZW1vdmVBbGxJdGVtcygpOworCQkJCQkKKwkJCQkJdGhpcy5fbGlzdC5hZGRJdGVtKCJObyBDb250YWN0IEZvdW5kIiwiMCIpOworCQkJCQkKKwkJCQl9CisJCQkJCisJCQkJdGhpcy5zZW5kVXBkYXRlVGV4dCA9IGZhbHNlOworCQkJCXRoaXMuX2xpc3Quc2VuZFVwZGF0ZUF0dHIgPSBmYWxzZTsKKwkJCQl0aGlzLl9saXN0LnNlbGVjdEl0ZW1BdCgwKTsKKwkJCQl0aGlzLl9saXN0LnNlbmRVcGRhdGVBdHRyID0gdHJ1ZTsKKwkJCQkKKwkJCQkvL2x6LkZvY3VzLnNldEZvY3VzKHRoaXMuX2xpc3QsIHRydWUpOworCQkJCXRoaXMuc2VuZFVwZGF0ZVRleHQgPSB0cnVlOworCQkJCQorCQkJCS8vdGhpcy5fbGlzdC5zZXRIaWxpdGUodGhpcy5fbGlzdC5nZXRJdGVtQXQoMCkpOworCQkJCXRoaXMuX2xpc3Quc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworCQkJCQorCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJMSVNUIDoxOiAiLHRoaXMuX2xpc3Quc2VuZFVwZGF0ZUF0dHIpOworCQkJCisJCQldXT4KKwkJPC9tZXRob2Q+CisJCTxmbG9hdGluZ2xpc3QgbmFtZT0iX2xpc3QiIHdpZHRoPSIxMDAiIAorCQkJCQkgIGF0dGFjaD0iYm90dG9tIiB2aXNpYmlsaXR5PSJoaWRkZW4iPgorCQkJPGF0dHJpYnV0ZSBuYW1lPSJzZW5kVXBkYXRlQXR0ciIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iLz4KKwkJCTxhdHRyaWJ1dGUgbmFtZT0icmVmT2JqIiB2YWx1ZT0ibnVsbCIvPgorCQkJPGhhbmRsZXIgbmFtZT0ib25mb2N1cyI+CisJCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9uZm9jdXMiKTsKKwkJCQl0aGlzLnJlZk9iai5zZW5kU2luZ2xlVXBkYXRlVGV4dCA9IGZhbHNlOworCQkJPC9oYW5kbGVyPgorCQkJPGhhbmRsZXIgbmFtZT0ib25zZWxlY3QiIGFyZ3M9InNlbCI+CisJCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9uc2VsZWN0IDoxOiAiLHRoaXMuc2VuZFVwZGF0ZUF0dHIpOworCQkJCWlmICh0aGlzLnNlbmRVcGRhdGVBdHRyKSB7CisJCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbnNlbGVjdCA6MjogIixzZWwudmFsdWUpOworCQkJCQlpZiAoc2VsLnZhbHVlICE9ICIwIikgeworCQkJCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInRoaXMucGFyZW50IDo6ICIsdGhpcy5wYXJlbnQpOworCQkJCQkJdGhpcy5yZWZPYmouYWRkVGV4dChzZWwudmFsdWUpOworCQkJCQkJdGhpcy5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKwkJCQkJfQorCQkJCX0KKwkJCTwvaGFuZGxlcj4KKyAgICAgICAgICAgIDx0ZXh0bGlzdGl0ZW0gdGV4dD0ib25lIi8+CisgICAgICAgICAgICA8dGV4dGxpc3RpdGVtIHRleHQ9InR3byIvPgorICAgICAgICA8L2Zsb2F0aW5nbGlzdD4KKwk8L2N1c3RvbVNjcm9sbEVkaXR0ZXh0PgorCQorCTxsYWJlbFRleHQgbmFtZT0iX2xhYmVsU3ViamVjdCIgeD0iMiIgbGFiZWxpZD0iMTIxMSIgeT0iODYiLz4KKwkKKwk8Y3VzdG9tRWRpdHRleHQgbmFtZT0iX3N1YmplY3QiIHk9Ijg0IiB4PSI4MCIgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGgtODIgfSIgLz4KKworCTxjdXN0b21TY3JvbGxFZGl0dGV4dCBuYW1lPSJfcmljaFRleHQiIHk9IjEwOCIgY2xpcD0idHJ1ZSIgeD0iMSIKKwkJd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGgtMiB9IiBoZWlnaHQ9IiRvbmNleyBwYXJlbnQuaGVpZ2h0LTIyNSB9Ij4KKwkJCisJPC9jdXN0b21TY3JvbGxFZGl0dGV4dD4gCQorCQorCTxsYWJlbENoZWNrYm94IG5hbWU9Il9ib29rUm9vbSIgbGFiZWxpZD0iMTIxOCIKKwkJCQkgICB3aWR0aD0iMjcwIiB5PSIkb25jZXsgcGFyZW50LmhlaWdodC0xMjAgfSIgeD0iNCI+CisJCTxoYW5kbGVyIG5hbWU9Im9udmFsdWUiIGFyZ3M9InYiPgorCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9udmFsdWUgIix2KTsKKwkJCWlmIChwYXJlbnQuX2hpZGVSb29tQ29uZmlnICE9IG51bGwpIHsKKwkJCQlwYXJlbnQuX2hpZGVSb29tQ29uZmlnLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsIHYgPyAiaGlkZGVuIiA6ICJ2aXNpYmxlIik7CisJCQl9CisJCTwvaGFuZGxlcj4KKwk8L2xhYmVsQ2hlY2tib3g+CisJCisJPHZpZXcgbmFtZT0iX3Jvb21Db25maWdCRyIgd2lkdGg9IjI5MCIgaGVpZ2h0PSI3NiIgYmdjb2xvcj0iMHhEREREREQiIAorCQkgICBvcGFjaXR5PSIwLjEiIHk9IiRvbmNleyBwYXJlbnQuaGVpZ2h0LTEwNCB9IiB4PSIyIj4KKwk8L3ZpZXc+CisJCisJPGxhYmVsVGV4dCBsYWJlbGlkPSIxOTQiIHdpZHRoPSIyMDAiIHk9IiRvbmNleyBwYXJlbnQuaGVpZ2h0LTEwMCB9IiByZXNpemU9ImZhbHNlIiB4PSI0Ii8+ICAKKyAgICAgICAgPHJlc2V0Q29tYm9ib3ggbmFtZT0iX3Jvb210eXBlIiB3aWR0aD0iMTY0IiB5PSIkb25jZXsgcGFyZW50LmhlaWdodC0xMDAgfSIgCisgICAgICAgIAkJCSAgIHg9IjEyMCIgZWRpdGFibGU9ImZhbHNlIiBmb250c2l6ZT0iMTEiPgorCSAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0IiA+CisJICAgICAgICAgICAgPCFbQ0RBVEFbCisJCSAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPGNhbnZhcy5yb29tVHlwZXNJbml0VmFsdWVzLmxlbmd0aDtpKyspeworCQkgICAgICAgICAgICAgICAgdGhpcy5hZGRJdGVtKGNhbnZhcy5yb29tVHlwZXNJbml0VmFsdWVzW2ldLm5hbWUsY2FudmFzLnJvb21UeXBlc0luaXRWYWx1ZXNbaV0ucm9vbXR5cGVzX2lkKTsKKwkJICAgICAgICAgICAgfQorCQkgICAgICAgICAgICB0aGlzLnNlbGVjdEl0ZW1BdCgwKTsKKwkgICAgICAgICAgICBdXT4KKwkgICAgICAgIDwvaGFuZGxlcj4gCisgICAgICAgIDwvcmVzZXRDb21ib2JveD4gCisgICAgICAgIAorCTxsYWJlbFRleHQgbGFiZWxpZD0iMTIxOSIgd2lkdGg9IjIwMCIgeT0iJG9uY2V7IHBhcmVudC5oZWlnaHQtNzYgfSIgcmVzaXplPSJmYWxzZSIgeD0iNCIvPiAgCisJPGRhdGVGaWVsZCB4PSIxMjAiIHk9IiRvbmNleyBwYXJlbnQuaGVpZ2h0LTc2IH0iIG5hbWU9Il92YWxpZF9mcm9tIiAKKwkJCSAgIHNldERlZmF1bHRUb2RheT0idHJ1ZSIgYWRkaXRpb25hbERheT0iMSIgLz4JCQorCTxjdXN0b21FZGl0dGV4dCBuYW1lPSJfdGltZUZyb20iIAorCQkJCQl3aWR0aD0iNTAiIHg9IjIzMiIgeT0iJG9uY2V7IHBhcmVudC5oZWlnaHQtNzYgfSIgCisJCQkJCXJlZ2V4cFR5cGU9InRpbWUiPgorCQk8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorCQkJPCFbQ0RBVEFbCisJCQkJdmFyIHREYXRlID0gbmV3IERhdGUoKTsKKwkJCQl2YXIgaG91ciA9IHREYXRlLmdldEhvdXJzKCk7CisJCQkJaWYgKGhvdXIgPCAxMCkgeworCQkJCQlob3VyID0gIjAiK2hvdXI7CisJCQkJfQorCQkJCQorCQkJCXZhciBtaW51dGVzID0gdERhdGUuZ2V0TWludXRlcygpOworCQkJCWlmIChtaW51dGVzIDwgMTUpIHsKKwkJCQkJbWludXRlcyA9ICIwMCI7CisJCQkJfSBlbHNlIGlmIChtaW51dGVzIDwgMzApIHsKKwkJCQkJbWludXRlcyA9ICIxNSI7CisJCQkJfSBlbHNlIGlmIChtaW51dGVzIDwgNDUpIHsKKwkJCQkJbWludXRlcyA9ICIzMCI7CisJCQkJfSBlbHNlIHsKKwkJCQkJbWludXRlcyA9ICI0NSI7CisJCQkJfQorCQkJCQorCQkJCXZhciBob3VyMiA9IHREYXRlLmdldEhvdXJzKCkrMTsKKwkJCQlpZiAoaG91cjIgPCAxMCkgeworCQkJCQlob3VyMiA9ICIwIitob3VyMjsKKwkJCQl9IGVsc2UgaWYgKGhvdXIyID4gMjUpIHsKKwkJCQkJaG91cjIgPSAyNDsKKwkJCQl9CisJCQkJCisJCQkJdGhpcy5zZXRBdHRyaWJ1dGUoInRleHQiLGhvdXIrIjoiK21pbnV0ZXMpOworCQkJCXBhcmVudC5fdGltZVRvLnNldEF0dHJpYnV0ZSgidGV4dCIsaG91cjIrIjoiK21pbnV0ZXMpOworCQkJXV0+CisJCTwvaGFuZGxlcj4KKwk8L2N1c3RvbUVkaXR0ZXh0PgorICAgICAgICAKKyAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjEyMjAiIHdpZHRoPSIyMDAiIHk9IiRvbmNleyBwYXJlbnQuaGVpZ2h0LTUyIH0iIHJlc2l6ZT0iZmFsc2UiIHg9IjQiLz4gIAorCTxkYXRlRmllbGQgeD0iMTIwIiB5PSIkb25jZXsgcGFyZW50LmhlaWdodC01MiB9IiBuYW1lPSJfdmFsaWRfdG8iIAorCQkJICAgc2V0RGVmYXVsdFRvZGF5PSJ0cnVlIiBhZGRpdGlvbmFsRGF5PSIxIiAvPgkJCisJPGN1c3RvbUVkaXR0ZXh0IG5hbWU9Il90aW1lVG8iIAorCQkJCQl3aWR0aD0iNTAiIHg9IjIzMiIgeT0iJG9uY2V7IHBhcmVudC5oZWlnaHQtNTIgfSIgCisJCQkJCXJlZ2V4cFR5cGU9InRpbWUiPgorCTwvY3VzdG9tRWRpdHRleHQ+CisJCisJPCEtLSBhbGxvd1VzZXJRdWVzdGlvbnMgRGVzY3JpcHRpb24gLS0+ICAgICAgICAgIAorICAgIDx2aWV3IHJlc291cmNlPSJtZXNzYWdlYm94X2luZm9fcnNjIiB4PSIzMDIiIHk9IiRvbmNleyBwYXJlbnQuaGVpZ2h0LTk2IH0iIC8+CisgICAgCisgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIxMjIxIiB4PSIzMjQiIHk9IiRvbmNleyBwYXJlbnQuaGVpZ2h0LTk2IH0iIGZvbnRzdHlsZT0iaXRhbGljIgorICAgICAgICAgICAgICAgbXVsdGlsaW5lPSJ0cnVlIiB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aC0zMzIgfSIgLz4gCisJCisJPHZpZXcgbmFtZT0iX2hpZGVSb29tQ29uZmlnIiB3aWR0aD0iMjkwIiBoZWlnaHQ9Ijc2IiBiZ2NvbG9yPSIweEZGRkZGRiIgCisJCSAgIG9wYWNpdHk9IjAuNiIgeT0iJG9uY2V7IHBhcmVudC5oZWlnaHQtMTA0IH0iIHg9IjIiPgorCQk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKwkJCXBhcmVudC5fYm9va1Jvb20uc2V0VmFsdWUodHJ1ZSk7CisJCTwvaGFuZGxlcj4KKwk8L3ZpZXc+CisJCSAgIAorCTwhLS0gbGFiZWw6IHNlbmQgLS0+CisJPHNpbXBsZUxhYmVsQnV0dG9uIGxhYmVsaWQ9IjIxOCIgeD0iJG9uY2V7IHBhcmVudC53aWR0aC0yNjAgfSIgd2lkdGg9IjEyMCIgeT0iJG9uY2V7IHBhcmVudC5oZWlnaHQtMjYgfSI+CisJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorCQkJPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgcGFyZW50LmJhc2VVcmwgPSBjYW52YXMuZ2V0QXBwQmFzZVVybCgpOworCQkJCQorCQkJCXBhcmVudC5zZW5kKCk7CisJCQldXT4KKwkJPC9oYW5kbGVyPgorCTwvc2ltcGxlTGFiZWxCdXR0b24+CisKKwk8IS0tIGxhYmVsOiBjYW5jZWwgLS0+CisJPHNpbXBsZUxhYmVsQnV0dG9uIGxhYmVsaWQ9IjIxOSIgeD0iJG9uY2V7IHBhcmVudC53aWR0aC0xMzAgfSIgd2lkdGg9IjEyMCIgeT0iJG9uY2V7IHBhcmVudC5oZWlnaHQtMjYgfSI+CisJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorCQkJcGFyZW50LmNsb3NlKCk7CisJCTwvaGFuZGxlcj4KKwk8L3NpbXBsZUxhYmVsQnV0dG9uPgorCSAgIAkJICAgCisJCQkJCQkgIAorPC9jbGFzcz4JCisJCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL3NldHRpbmdzL3ByaXZhdGVtZXNzYWdlcy9uZXdQcml2YXRlTWVzc2FnZUZvbGRlci5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL3NldHRpbmdzL3ByaXZhdGVtZXNzYWdlcy9uZXdQcml2YXRlTWVzc2FnZUZvbGRlci5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTA0NTRhMwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvc2V0dGluZ3MvcHJpdmF0ZW1lc3NhZ2VzL25ld1ByaXZhdGVNZXNzYWdlRm9sZGVyLmx6eApAQCAtMCwwICsxLDg0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCQorPGNsYXNzIG5hbWU9Im5ld1ByaXZhdGVNZXNzYWdlRm9sZGVyIiBleHRlbmRzPSJndWlQcmVzZW50ZXIiIGxhYmVsaWQ9IjEyNjAiIGlzZHJhZ2FibGU9InRydWUiIAorICAgIG1pbmltaXphYmxlPSJmYWxzZSIgbWF4aW1pemFibGU9ImZhbHNlIiBmdWxsVG9vbEJhcj0idHJ1ZSIgeD0iMTAwIiB5PSIyMDAiIAorICAgIHJlc2l6ZWFibGU9ImZhbHNlIiB3aWR0aD0iMzUwIiBoZWlnaHQ9IjEwMCIgPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0icmVmT2JqIiB2YWx1ZT0ibnVsbCIvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0iZm9sZGVyTmFtZSIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorCQorCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisJCTwhW0NEQVRBWworCQkJbHouRm9jdXMuc2V0Rm9jdXModGhpcy5fc3ViamVjdCwgdHJ1ZSk7CisJCV1dPgorCTwvaGFuZGxlcj4KKwkKKwk8bWV0aG9kIG5hbWU9InNlbmQiPgorCQk8IVtDREFUQVsKKwkJCXRoaXMuZm9sZGVyTmFtZSA9IHRoaXMuX3N1YmplY3QuZ2V0VGV4dCgpOworCQkJdGhpcy5hZGRQcml2YXRlTWVzc2FnZUZvbGRlci5kb0NhbGwoKTsKKwkJXV0+CisJPC9tZXRob2Q+CisJCisJPCEtLQorCXB1YmxpYyBMb25nIGFkZFByaXZhdGVNZXNzYWdlRm9sZGVyKFN0cmluZyBTSUQsIFN0cmluZyBmb2xkZXJOYW1lKQorCSAtLT4KKwk8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJhZGRQcml2YXRlTWVzc2FnZUZvbGRlciIgZnVuY25hbWU9InVzZXJzZXJ2aWNlLmFkZFByaXZhdGVNZXNzYWdlRm9sZGVyIiByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAgICAKKwkJCisJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gY2FudmFzLnNlc3Npb25JZDs8L21ldGhvZD48L25ldHBhcmFtPgorCSAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQuZm9sZGVyTmFtZTwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgCTwhW0NEQVRBWworCQkJCS8vVGhlIG9uUmVzdWx0LUhhbmRsZXIgd2lsbCBiZSBjYWxsZWQgYmUgdGhlIHJ0bXBjb25uZWN0aW9uCisJCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImFkZFByaXZhdGVNZXNzYWdlRm9sZGVyIDogIix2YWx1ZSk7CisJCQkJcGFyZW50LnJlZk9iai5zZW5kUmVsb2FkKCk7CisJCQkJcGFyZW50LmNsb3NlKCk7CisJCQldXT4KKwkJPC9oYW5kbGVyPiAgIAorCTwvbmV0UmVtb3RlQ2FsbEhpYj4JCisJCisJCisJPGxhYmVsVGV4dCBuYW1lPSJfbGFiZWxTdWJqZWN0IiB4PSIyIiBsYWJlbGlkPSIxMjExIiB5PSIyNCIvPgorCQorCTxjdXN0b21FZGl0dGV4dCBuYW1lPSJfc3ViamVjdCIgeT0iMjQiIHg9IjgwIiB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aC04MiB9IiAvPgorCQkgICAKKwk8IS0tIGxhYmVsOiBzZW5kIC0tPgorCTxzaW1wbGVMYWJlbEJ1dHRvbiBsYWJlbGlkPSIxMjYxIiB4PSIkb25jZXsgcGFyZW50LndpZHRoLTI2MCB9IiB3aWR0aD0iMTIwIiB5PSIkb25jZXsgcGFyZW50LmhlaWdodC0yNiB9Ij4KKwkJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisJCQlwYXJlbnQuc2VuZCgpOworCQk8L2hhbmRsZXI+CisJPC9zaW1wbGVMYWJlbEJ1dHRvbj4KKworCTwhLS0gbGFiZWw6IGNhbmNlbCAtLT4KKwk8c2ltcGxlTGFiZWxCdXR0b24gbGFiZWxpZD0iMjE5IiB4PSIkb25jZXsgcGFyZW50LndpZHRoLTEzMCB9IiB3aWR0aD0iMTIwIiB5PSIkb25jZXsgcGFyZW50LmhlaWdodC0yNiB9Ij4KKwkJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisJCQlwYXJlbnQuY2xvc2UoKTsKKwkJPC9oYW5kbGVyPgorCTwvc2ltcGxlTGFiZWxCdXR0b24+CisJICAgCQkgICAKKwkJCQkJCSAgCis8L2NsYXNzPgkKKwkKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvc2V0dGluZ3MvcHJpdmF0ZW1lc3NhZ2VzL3BlbmRpbmdVc2VyU3RhdHVzLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvc2V0dGluZ3MvcHJpdmF0ZW1lc3NhZ2VzL3BlbmRpbmdVc2VyU3RhdHVzLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzMyMmM5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy9wcml2YXRlbWVzc2FnZXMvcGVuZGluZ1VzZXJTdGF0dXMubHp4CkBAIC0wLDAgKzEsOTYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKwkKKzxjbGFzcyBuYW1lPSJwZW5kaW5nVXNlclN0YXR1cyIgZXh0ZW5kcz0idmlldyIgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdiYXNlYmdjb2xvcml6ZXInKSB9IiAKKwkgICB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aC0xNiB9IiBoZWlnaHQ9IjQwIiB5PSIkb25jZXsgcGFyZW50LmhlaWdodC02MiB9Ij4KKwkKKwk8YXR0cmlidXRlIG5hbWU9Im1lc3NhZ2UiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwk8YXR0cmlidXRlIG5hbWU9InVzZXJDb250YWN0SWQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisKKwk8bWV0aG9kIG5hbWU9InNldFBlbmRpbmdTdGF0dXMiIGFyZ3M9InBlbmRpbmciPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2V0UGVuZGluZ1N0YXR1cyAiLHRoaXMudXNlckNvbnRhY3RJZCxwZW5kaW5nKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5jaGFuZ2VQZW5kaW5nU3RhdHVzVXNlckNvbnRhY3RzLnBlbmRpbmcgPSBwZW5kaW5nOworICAgICAgICAgICAgdGhpcy5jaGFuZ2VQZW5kaW5nU3RhdHVzVXNlckNvbnRhY3RzLmRvQ2FsbCgpOworICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImNsb3NlIj4KKyAgICAJdGhpcy5kZXN0cm95KCk7CisgICAgCXBhcmVudC5wZW5kaW5nVXNlclN0YXR1c1JlZiA9IG51bGw7CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPCEtLQorCXB1YmxpYyBMb25nIGNoYW5nZVBlbmRpbmdTdGF0dXNVc2VyQ29udGFjdHMoU3RyaW5nIFNJRCwgTG9uZyB1c2VyQ29udGFjdElkLCBCb29sZWFuIHBlbmRpbmcpCisJIC0tPgorICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImNoYW5nZVBlbmRpbmdTdGF0dXNVc2VyQ29udGFjdHMiIGZ1bmNuYW1lPSJ1c2Vyc2VydmljZS5jaGFuZ2VQZW5kaW5nU3RhdHVzVXNlckNvbnRhY3RzIiAKKwkJCQkgIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiBhY3RpdmVFcnJvckhhbmRsZXI9InRydWUiID4gICAgICAKKwkJPGF0dHJpYnV0ZSBuYW1lPSJwZW5kaW5nIiB2YWx1ZT0idHJ1ZSIgdHlwZT0iYm9vbGVhbiIgLz4KKwkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gY2FudmFzLnNlc3Npb25JZDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBhcmVudC51c2VyQ29udGFjdElkOyA8L21ldGhvZD48L25ldHBhcmFtPgorICAgIAk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBwYXJlbnQucGVuZGluZzsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAJPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAgCQk8IVtDREFUQVsKKwkgICAgCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiY2hhbmdlUGVuZGluZ1N0YXR1c1VzZXJDb250YWN0czogIix2YWx1ZSk7CisJICAgIAkJcGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50Ll91c2VyQ29udGFjdHMucmVsb2FkKCk7CisgICAgCQldXT4KKyAgICAJPC9oYW5kbGVyPgorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4KKyAgICAKKyAgICA8dmlldyBuYW1lPSJfYmciIHg9IjEiIHk9IjEiIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoLTIgfSIgaGVpZ2h0PSIkb25jZXsgcGFyZW50LmhlaWdodC0yIH0iCisgICAgCSAgYmdjb2xvcj0iMHhGRkZGRkYiIC8+CisgICAgCSAgCisJPG1pbmlJY29uc1ByZXNlbnRlciBuYW1lPSJfY2xvc2UiIHg9IiRvbmNleyBwYXJlbnQud2lkdGgtMjAgfSIgeT0iMiIKKyAgICAgICAgaWNvblJlc3NvdXJjZU5hbWU9ImJ0bl9wcmVzZW50ZXJfY2xvc2UyIj4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICB0aGlzLnBhcmVudC5jbG9zZSgpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iNDMwIiAvPgorICAgIDwvbWluaUljb25zUHJlc2VudGVyPiAgCisgICAgCisJPG1pbmlJY29ucyBuYW1lPSJhZGQiIHg9IjEwIiB5PSIxMCIgcmVzb3VyY2U9InVzZXJfbW9kZXJhdG9yX2xpc3RfYXBwbHlfcnNjIiB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIAorICAgICAgICAgICBzaG93aGFuZGN1cnNvcj0idHJ1ZSI+CisJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICBwYXJlbnQuc2V0UGVuZGluZ1N0YXR1cyh0cnVlKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IjExOTAiIC8+CisgICAgPC9taW5pSWNvbnM+CisKKwk8bWluaUljb25zSW1hZ2Ugc3JjPSIkb25jZXsgY2FudmFzLmdldFRoZW1lSW1hZ2UoJ2J1dHRvbl9jYW5jZWxfcnNjJykgfSIgCisJCQkJbmFtZT0iZGVueSIgeD0iMzAiIHk9IjEwIiB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIAorICAgICAgICAgICBzaG93aGFuZGN1cnNvcj0idHJ1ZSI+CisJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgcGFyZW50LnNldFBlbmRpbmdTdGF0dXMoZmFsc2UpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iMTE5MSIgLz4KKyAgICA8L21pbmlJY29uc0ltYWdlPgorICAgIAorICAgIDxsYWJlbFRleHQgdGV4dD0iJG9uY2V7IHBhcmVudC5tZXNzYWdlIH0iIHk9IjEwIiB4PSI2MCIKKyAgICAJCSAgIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoLXRoaXMueC0yMCB9IiByZXNpemU9ImZhbHNlIiBtdWx0aWxpbmU9InRydWUiIC8+CisgICAgCis8L2NsYXNzPiAKKwkKKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy9wcml2YXRlbWVzc2FnZXMvcHJpdmF0ZU1lc3NhZ0l0ZW0ubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy9wcml2YXRlbWVzc2FnZXMvcHJpdmF0ZU1lc3NhZ0l0ZW0ubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkYzU0ZjAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL3NldHRpbmdzL3ByaXZhdGVtZXNzYWdlcy9wcml2YXRlTWVzc2FnSXRlbS5sengKQEAgLTAsMCArMSw2MSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworCQorPGNsYXNzIG5hbWU9InByaXZhdGVNZXNzYWdJdGVtIiBleHRlbmRzPSJiYXNlUGFnaW5nTGlzdEl0ZW0iIHNob3doYW5kY3Vyc29yPSJmYWxzZSIgaGVpZ2h0PSIyMCI+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJmcm9tIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciLz4KKwk8YXR0cmlidXRlIG5hbWU9InN1YmplY3QiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIvPgorCTxhdHRyaWJ1dGUgbmFtZT0ic3RyVGltZSIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIi8+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJpc1JlYWQiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0iaXRlbVNlbGVjdGVkIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iLz4KKwkKKwk8dmlldyB3aWR0aD0iMjAwIj4KKwkJCisJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorCQkJaWYgKHBhcmVudC5jbGlja2FibGUpIHsKKwkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiU0VORCBDTElDSyBUTyBQQVJFTlQiKTsKKwkJCQlwYXJlbnQub25jbGljay5zZW5kRXZlbnQoKTsKKwkJCQkvL3BhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQuaXRlbVNlbGVjdGVkKHBhcmVudCwhcGFyZW50Lml0ZW1TZWxlY3RlZCk7CisJCQl9CisJCTwvaGFuZGxlcj4KKwkJCisJCTxjaGVja2JveCBuYW1lPSJfc2VsZWN0ZWQiIHk9IjIiIHg9IjIiIGNsaWNrYWJsZT0iZmFsc2UiCisJCQkJICB2aXNpYmlsaXR5PSIkeyAocGFyZW50LnBhcmVudC5jbGlja2FibGUpID8gJ3Zpc2libGUnIDogJ2hpZGRlbicgfSIgCisJCQkJICB2YWx1ZT0iJHsgcGFyZW50LnBhcmVudC5pdGVtU2VsZWN0ZWQgfSIgLz4KKwkJCisJCTx2aWV3IGhlaWdodD0iJG9uY2V7IHBhcmVudC5wYXJlbnQuaGVpZ2h0IH0iIHdpZHRoPSIxIiAKKyAgICAgICAgCQkJCWFsaWduPSJyaWdodCIgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdzZWNvbmRCb3JkZXJDb2xvcicpIH0iIC8+CisJPC92aWV3PgorCQorCTx0dXJuT3ZlclRleHRJdGVtIG5hbWU9Il90aW1lem9uZSIgd2lkdGg9IjgwIiAKKwkJCQkJICB0ZXh0PSIkeyBwYXJlbnQuZnJvbSB9IiBmb250c3R5bGU9IiR7IChwYXJlbnQuaXNSZWFkKSA/ICdwbGFpbicgOiAnYm9sZCcgfSIgLz4KKwk8dHVybk92ZXJUZXh0SXRlbSBuYW1lPSJfc2VhcmNoT2ZmZXJzIiB3aWR0aD0iMzAwIgorCQkJCQkgIHRleHQ9IiR7IHBhcmVudC5zdWJqZWN0IH0iIGZvbnRzdHlsZT0iJHsgKHBhcmVudC5pc1JlYWQpID8gJ3BsYWluJyA6ICdib2xkJyB9IiAvPgorCTx0dXJuT3ZlclRleHRJdGVtIG5hbWU9Il9zZWFyY2hTZWFyY2hzIiB3aWR0aD0iMzAwIgorCQkJCQkgIHRleHQ9IiR7IHBhcmVudC5zdHJUaW1lIH0iIGZvbnRzdHlsZT0iJHsgKHBhcmVudC5pc1JlYWQpID8gJ3BsYWluJyA6ICdib2xkJyB9IiAvPgorCQorPC9jbGFzcz4JCisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvc2V0dGluZ3MvcHJpdmF0ZW1lc3NhZ2VzL3ByaXZhdGVNZXNzYWdlRm9sZGVyLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvc2V0dGluZ3MvcHJpdmF0ZW1lc3NhZ2VzL3ByaXZhdGVNZXNzYWdlRm9sZGVyLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzIzNjljCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy9wcml2YXRlbWVzc2FnZXMvcHJpdmF0ZU1lc3NhZ2VGb2xkZXIubHp4CkBAIC0wLDAgKzEsMTYwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCQorPGNsYXNzIG5hbWU9ImVkaXRQcml2YXRlTWVzc2FnZUZvbGRlciIgZXh0ZW5kcz0iY3VzdG9tSW5wdXR0ZXh0IiAKKwkgICBmb250c2l6ZT0iMTAiIGJnY29sb3I9IjB4RkZGRkZGIj4KKwkKKwk8YXR0cmlidXRlIG5hbWU9InByaXZhdGVNZXNzYWdlRm9sZGVySWQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJmb2xkZXJOYW1lIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJyZWZPYmoiIHZhbHVlPSJudWxsIiAvPgorCQorCTxoYW5kbGVyIG5hbWU9Im9uYmx1ciI+CisJCWx6Lk1vZGVNYW5hZ2VyLnJlbGVhc2UodGhpcyk7CisJCWlmICh0aGlzLmZvbGRlck5hbWUgIT0gdGhpcy5nZXRUZXh0KCkpIHsKKwkJCXRoaXMudXBkYXRlUHJpdmF0ZU1lc3NhZ2VGb2xkZXIuZG9DYWxsKCk7CisJCX0gZWxzZSB7CisJCQl0aGlzLmRlc3Ryb3koKTsKKwkJfQorCTwvaGFuZGxlcj4KKwkKKwk8aGFuZGxlciBuYW1lPSJvbmtleWRvd24iIGFyZ3M9ImsiPgorCQk8IVtDREFUQVsKKyAgICAJCWlmIChrID09IDEzIHx8IGsgPT0gMjcpIHsKKyAgICAJCQl0aGlzLm9uYmx1ci5zZW5kRXZlbnQoKTsKKyAgICAJCX0KKwkJXV0+CisJPC9oYW5kbGVyPgorCQorCTwhLS0KKwlwdWJsaWMgTG9uZyB1cGRhdGVQcml2YXRlTWVzc2FnZUZvbGRlcihTdHJpbmcgU0lELCBMb25nIHByaXZhdGVNZXNzYWdlRm9sZGVySWQsIFN0cmluZyBmb2xkZXJOYW1lKQorCSAtLT4KKwk8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJ1cGRhdGVQcml2YXRlTWVzc2FnZUZvbGRlciIgZnVuY25hbWU9InVzZXJzZXJ2aWNlLnVwZGF0ZVByaXZhdGVNZXNzYWdlRm9sZGVyIiAKKwkJCSAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gIAorCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBjYW52YXMuc2Vzc2lvbklkOyA8L21ldGhvZD48L25ldHBhcmFtPgorCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBwYXJlbnQucGFyZW50LnByaXZhdGVNZXNzYWdlRm9sZGVySWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIHBhcmVudC5wYXJlbnQuZ2V0VGV4dCgpOyA8L21ldGhvZD48L25ldHBhcmFtPgorICAgIAk8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAJCTwhW0NEQVRBWworCSAgICAJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ1cGRhdGVQcml2YXRlTWVzc2FnZUZvbGRlcjogIix2YWx1ZSk7CisJICAgIAkJcGFyZW50LmNvbXBsZXRlZCgpOworICAgIAkJXV0+CisgICAgCTwvaGFuZGxlcj4KKyAgICAJPG1ldGhvZCBuYW1lPSJzZW5kQ29uZmlybWF0aW9uIiBhcmdzPSJ5ZXNubyIgPgorICAgICAgICAgICAgcGFyZW50LnBhcmVudC5kZWxldGVGb2xkZXIocGFyZW50LnByaXZhdGVNZXNzYWdlRm9sZGVySWQsdGhpcyk7CisgICAgICAgIDwvbWV0aG9kPgorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4JCisgICAgCisJPG1ldGhvZCBuYW1lPSJjb21wbGV0ZWQiPgorCQl0aGlzLnJlZk9iai5mb2xkZXJOYW1lID0gdGhpcy5nZXRUZXh0KCk7CisJCXRoaXMucmVmT2JqLnVwZGF0ZUNvbm5lY3RlZEZvbGRlckJveCgpOworCQl0aGlzLnJlZk9iai5fdGV4dC5zZXRBdHRyaWJ1dGUoInRleHQiLHRoaXMuZ2V0VGV4dCgpKTsKKwkJdGhpcy5kZXN0cm95KCk7CisJPC9tZXRob2Q+CisJCis8L2NsYXNzPgkKKwkKKzxjbGFzcyBuYW1lPSJwcml2YXRlTWVzc2FnZUZvbGRlciIgZXh0ZW5kcz0idmlldyIgeD0iMTYiIHdpZHRoPSIxMzYiPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0iZm9sZGVyTmFtZSIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0icHJpdmF0ZU1lc3NhZ2VGb2xkZXJJZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKwk8YXR0cmlidXRlIG5hbWU9InNlbGVjdGVkIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisJCisJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisJCWlmICh0aGlzLnNlbGVjdGVkKSB7CisJCQl0aGlzLmVkaXRGb2xkZXJOYW1lKCk7CisJCX0KKwkJLy90aGlzLnNldEF0dHJpYnV0ZSgiZW5hYmxlZCIsZmFsc2UpOworCQlwYXJlbnQubG9hZFByaXZhdGVNZXNzYWdlKHRoaXMucHJpdmF0ZU1lc3NhZ2VGb2xkZXJJZCx0aGlzKTsKKwk8L2hhbmRsZXI+CisJCisJPG1ldGhvZCBuYW1lPSJlZGl0Rm9sZGVyTmFtZSI+CisJCXZhciB0ID0gbmV3IGx6LmVkaXRQcml2YXRlTWVzc2FnZUZvbGRlcihjYW52YXMseworICAgIAkJCSAgICAgICAgcHJpdmF0ZU1lc3NhZ2VGb2xkZXJJZDp0aGlzLnByaXZhdGVNZXNzYWdlRm9sZGVySWQsCisgICAgCQkJICAgICAgICBmb2xkZXJOYW1lOnRoaXMuZm9sZGVyTmFtZSwKKyAgICAJCQkgICAgICAgIHRleHQ6dGhpcy5mb2xkZXJOYW1lLAorICAgIAkJCSAgICAgICAgcmVmT2JqOnRoaXMsCisgICAgCQkJICAgICAgICB3aWR0aDo4NCwKKyAgICAJCQkgICAgICAgIGZvbnRzdHlsZTonYm9sZCcsCisgICAgCQkJICAgICAgICBoZWlnaHQ6dGhpcy5oZWlnaHQsCisgICAgICAgICAgICAJCSAgICB4OnRoaXMuX3RleHQuZ2V0QXR0cmlidXRlUmVsYXRpdmUoJ3gnLGNhbnZhcyksCisgICAgICAgICAgICAJCSAgICB5OnRoaXMuX3RleHQuZ2V0QXR0cmlidXRlUmVsYXRpdmUoJ3knLGNhbnZhcykKKyAgICAgICAgICAgIAkJfSk7CisgICAgICAgICAgICAJCQorICAgICAgICBsei5Gb2N1cy5zZXRGb2N1cyh0LHRydWUpOworICAgICAgICBsei5Nb2RlTWFuYWdlci5tYWtlTW9kYWwodCk7CisJPC9tZXRob2Q+CisJCisJPCEtLQorCQlTZW5kIHVwZGF0ZSB0byBkcm9wIGRvd24gbGlzdCBvZiBmb2xkZXIgbmFtZXMgCisJIC0tPgorCTxtZXRob2QgbmFtZT0idXBkYXRlQ29ubmVjdGVkRm9sZGVyQm94Ij4KKwkJcGFyZW50LnVwZGF0ZUNvbm5lY3RlZEZvbGRlckJveCgpOworCTwvbWV0aG9kPgorCQorCTx2aWV3IHJlc291cmNlPSJwcml2YXRlX21lc3NhZ2VfZm9sZGVyX3JzYyIgeD0iMCIgeT0iMCIgLz4KKwkKKwk8bGFiZWxUZXh0IG5hbWU9Il90ZXh0IiBmb250c3R5bGU9ImJvbGQiIHg9IjIwIiB0ZXh0PSIkb25jZXsgcGFyZW50LmZvbGRlck5hbWUgfSIgLz4KKwkKKwk8bWluaUljb25zIG5hbWU9ImVkaXQiIHk9IjEiIHg9IjEwNCIgcmVzb3VyY2U9InBhaW50IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIAorCSAgICAgICAgICAgICAgIHNob3doYW5kY3Vyc29yPSJ0cnVlIj4KKwkJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisJCQlwYXJlbnQuZWRpdEZvbGRlck5hbWUoKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IjEyNjQiIC8+CisgICAgPC9taW5pSWNvbnM+CisJCisJPG1pbmlJY29uc0ltYWdlIHNyYz0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUltYWdlKCdidXR0b25fY2FuY2VsX3JzYycpIH0iIAorCQkJbmFtZT0iZGVueSIgeT0iMSIgeD0iMTIwIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIAorCSAgICAgICAgICAgICAgIHNob3doYW5kY3Vyc29yPSJ0cnVlIj4KKwkJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisJCQlwYXJlbnQuZ2V0Rm9sZGVyQ291bnQuZG9DYWxsKCk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSIxMjYyIiAvPgorICAgIDwvbWluaUljb25zSW1hZ2U+CisgICAgCisgICAgPCEtLQorICAgIHB1YmxpYyBMb25nIGdldEZvbGRlckNvdW50KFN0cmluZyBTSUQsIExvbmcgcHJpdmF0ZU1lc3NhZ2VGb2xkZXJJZCkKKyAgICAgLS0+CisJPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iZ2V0Rm9sZGVyQ291bnQiIGZ1bmNuYW1lPSJ1c2Vyc2VydmljZS5nZXRGb2xkZXJDb3VudCIgCisJCQkgIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiA+ICAKKwkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gY2FudmFzLnNlc3Npb25JZDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBhcmVudC5wcml2YXRlTWVzc2FnZUZvbGRlcklkOyA8L21ldGhvZD48L25ldHBhcmFtPgorICAgIAk8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAJCTwhW0NEQVRBWworCSAgICAJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJnZXRGb2xkZXJDb3VudDogIix2YWx1ZSk7CisJICAgIAkJaWYgKHZhbHVlID09IDApIHsKKwkgICAgCQkJbmV3IGx6LmNvbmZpcm1hdGlvblNpbmdsZShjYW52YXMubWFpbl9jb250ZW50Ll9jb250ZW50LmlubmVyLHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxpZDoxMjYyLGxhYmVsaWRlcnJvcjoxMjY1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZPYmo6dGhpcyxzaG93Q2hlY2tCb3g6ZmFsc2V9KTsKKwkgICAgCQl9IGVsc2UgeworCSAgICAJCQluZXcgbHoubGFiZWxlcnJvclBvcHVwKGNhbnZhcyx7ZXJyb3JsYWJlbGlkOjEyNjN9KTsKKwkgICAgCQl9CisgICAgCQldXT4KKyAgICAJPC9oYW5kbGVyPgorICAgIAk8bWV0aG9kIG5hbWU9InNlbmRDb25maXJtYXRpb24iIGFyZ3M9Inllc25vIiA+CisgICAgICAgICAgICBwYXJlbnQucGFyZW50LmRlbGV0ZUZvbGRlcihwYXJlbnQucHJpdmF0ZU1lc3NhZ2VGb2xkZXJJZCx0aGlzKTsKKyAgICAgICAgPC9tZXRob2Q+CisgICAgPC9uZXRSZW1vdGVDYWxsSGliPgkKKwkJCQkJCSAgCis8L2NsYXNzPgkKKwkKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvc2V0dGluZ3MvcHJpdmF0ZW1lc3NhZ2VzL3ByaXZhdGVNZXNzYWdlcy5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL3NldHRpbmdzL3ByaXZhdGVtZXNzYWdlcy9wcml2YXRlTWVzc2FnZXMubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0YzM3YjkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL3NldHRpbmdzL3ByaXZhdGVtZXNzYWdlcy9wcml2YXRlTWVzc2FnZXMubHp4CkBAIC0wLDAgKzEsMTE3MyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKwkKKzxjbGFzcyBuYW1lPSJwcml2YXRlTWVzc2FnZXMiIGV4dGVuZHM9InZpZXciIGhlaWdodD0iJG9uY2V7IHBhcmVudC5oZWlnaHQgfSIgCisJICAgd2lkdGg9IiRvbmNleyBjYW52YXMud2lkdGggLSAyNzYgfSI+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJuZXdNZXNzYWdlQWN0aXZlIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisJCisJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKwkJdGhpcy5fQnV0dG9ucy5faW5ib3gub25jbGljay5zZW5kRXZlbnQobnVsbCk7CisJPC9oYW5kbGVyPgorCQorCTxtZXRob2QgbmFtZT0ibmV3TWVzc2FnZSIgYXJncz0idXNlck9iamVjdCI+CisJCWlmICh0aGlzLm5ld01lc3NhZ2VBY3RpdmUpIHsKKwkJCXRoaXMuX25ld1ByaXZhdGVNZXNzYWdlLmRlc3Ryb3koKTsKKwkJfQorCQkKKwkJbmV3IGx6Lm5ld1ByaXZhdGVNZXNzYWdlKHRoaXMseworCQkJCQkJeDoxNTQsCisJCQkJCQlyZWZPYmo6dGhpcywKKwkJCQkJCXVzZXJPYmplY3Q6dXNlck9iamVjdCwKKwkJCQkJCXdpZHRoOnRoaXMuX3RhYmxlLndpZHRoKzgsCisJCQkJCQloZWlnaHQ6dGhpcy5oZWlnaHQtMgorCQkJCQl9KTsKKwkJCQkKKwkJdGhpcy5uZXdNZXNzYWdlQWN0aXZlID0gdHJ1ZTsKKwk8L21ldGhvZD4KKwkKKwk8dmlldyBuYW1lPSJfc3RhdHVzIiB3aWR0aD0iMTUyIj4KKwkJCisJCTxzaW1wbGVMYWJlbFJvdW5kQnV0dG9uIGxhYmVsaWQ9IjEyMDciIHk9IjUiIHdpZHRoPSIxNDIiIHg9IjUiIGhlaWdodD0iMjIiPgorCQkJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisJCQkJcGFyZW50LnBhcmVudC5uZXdNZXNzYWdlKG51bGwpOworCQkJPC9oYW5kbGVyPgorCQkJPHZpZXcgcmVzb3VyY2U9InByaXZhdGVfbWVzc2FnZV9hZGRfcnNjIiB4PSIxMCIgeT0iMiI+PC92aWV3PgorCQkJPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSIxMjA4Ij48L2xhYmVsVG9vbHRpcD4KKwkJPC9zaW1wbGVMYWJlbFJvdW5kQnV0dG9uPgorCQkKKwk8L3ZpZXc+CisJCisJPHZpZXcgbmFtZT0iX0J1dHRvbnMiIHdpZHRoPSIxNTIiIHk9IjM1IiBsYXlvdXQ9ImF4aXM6eTtzcGFjaW5nOjIiPgorCQkKKwkJPGF0dHJpYnV0ZSBuYW1lPSJzZWxlY3RNZW51SXRlbU9iaiIgdmFsdWU9Im51bGwiIC8+CisJCQorCQk8bWV0aG9kIG5hbWU9InNlbGVjdE1lbnVJdGVtIiBhcmdzPSJyZWZPYmoiPgorCQkJaWYgKHRoaXMuc2VsZWN0TWVudUl0ZW1PYmogIT0gbnVsbCkgeworCQkJCXRoaXMuc2VsZWN0TWVudUl0ZW1PYmouc2VsZWN0ZWQgPSBmYWxzZTsKKwkJCQl0aGlzLnNlbGVjdE1lbnVJdGVtT2JqLl90ZXh0LnNldEF0dHJpYnV0ZSgiYmdjb2xvciIsMHhFRUYwRUIpOworCQkJfQorCQkJdGhpcy5zZWxlY3RNZW51SXRlbU9iaiA9IHJlZk9iajsKKwkJCXRoaXMuc2VsZWN0TWVudUl0ZW1PYmouc2VsZWN0ZWQgPSB0cnVlOworCQkJdGhpcy5zZWxlY3RNZW51SXRlbU9iai5fdGV4dC5zZXRBdHRyaWJ1dGUoImJnY29sb3IiLDB4RDNEM0QzKTsKKwkJPC9tZXRob2Q+CisJCQorCQk8bWV0aG9kIG5hbWU9InJlc2V0TWVudUl0ZW0iPgorCQkJdGhpcy5zZWxlY3RNZW51SXRlbU9iaiA9IG51bGw7CisJCQl0aGlzLl9pbmJveC5vbmNsaWNrLnNlbmRFdmVudChudWxsKTsKKwkJPC9tZXRob2Q+CisJCQorCQk8dmlldyBuYW1lPSJfaW5ib3giIHg9IjE2IiB3aWR0aD0iMTMwIj4KKwkJCTxhdHRyaWJ1dGUgbmFtZT0ic2VsZWN0ZWQiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKwkJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorCQkJCXBhcmVudC5wYXJlbnQuX3RhYmxlLmdldEluYm94LmRvQ2FsbCgpOworCQkJCXBhcmVudC5zZWxlY3RNZW51SXRlbSh0aGlzKTsKKwkJCTwvaGFuZGxlcj4KKwkJCTx2aWV3IHJlc291cmNlPSJwcml2YXRlX21lc3NhZ2VfaW5ib3hfcnNjIiB4PSIwIiA+PC92aWV3PgorCQkJPGxhYmVsVGV4dCB4PSIyMCIgbmFtZT0iX3RleHQiIGZvbnRzdHlsZT0iYm9sZCIgbGFiZWxpZD0iMTIyMiIgLz4KKwkJPC92aWV3PgorCQkKKwkJPHZpZXcgbmFtZT0iX3NlbmQiIHg9IjE2IiB3aWR0aD0iMTMwIj4KKwkJCTxhdHRyaWJ1dGUgbmFtZT0ic2VsZWN0ZWQiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKwkJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorCQkJCXBhcmVudC5wYXJlbnQuX3RhYmxlLmdldFNlbmQuZG9DYWxsKCk7CisJCQkJcGFyZW50LnNlbGVjdE1lbnVJdGVtKHRoaXMpOworCQkJPC9oYW5kbGVyPgorCQkJPHZpZXcgcmVzb3VyY2U9InByaXZhdGVfbWVzc2FnZV9zZW5kX3JzYyIgeD0iMCIgPjwvdmlldz4KKwkJCTxsYWJlbFRleHQgeD0iMjAiIG5hbWU9Il90ZXh0IiBmb250c3R5bGU9ImJvbGQiIGxhYmVsaWQ9IjEyMjMiIC8+CisJCTwvdmlldz4KKwkJCisJCTx2aWV3IG5hbWU9Il90cmFzaCIgeD0iMTYiIHdpZHRoPSIxMzAiPgorCQkJPGF0dHJpYnV0ZSBuYW1lPSJzZWxlY3RlZCIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorCQkJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisJCQkJcGFyZW50LnBhcmVudC5fdGFibGUuZ2V0VHJhc2guZG9DYWxsKCk7CisJCQkJcGFyZW50LnNlbGVjdE1lbnVJdGVtKHRoaXMpOworCQkJPC9oYW5kbGVyPgorCQkJPHZpZXcgcmVzb3VyY2U9InByaXZhdGVfbWVzc2FnZV90cmFzaF9yc2MiIHg9IjAiID48L3ZpZXc+CisJCQk8bGFiZWxUZXh0IHg9IjIwIiBuYW1lPSJfdGV4dCIgZm9udHN0eWxlPSJib2xkIiBsYWJlbGlkPSIxMjI0IiAvPgorCQk8L3ZpZXc+CisJCQorCQk8dmlldyBoZWlnaHQ9IjEiPjwvdmlldz4KKwkJIAorCQk8c2ltcGxlTGFiZWxCdXR0b24gbmFtZT0iX2FkZEZvbGRlciIgbGFiZWxpZD0iMTI1OCIgd2lkdGg9IjE0MiIgeD0iNSIgaGVpZ2h0PSIyMiI+CisJCQk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKwkJCQkvL3RoaXMuc2V0QXR0cmlidXRlKCJlbmFibGVkIixmYWxzZSk7CisJCQkJbmV3IGx6Lm5ld1ByaXZhdGVNZXNzYWdlRm9sZGVyKGNhbnZhcyx7cmVmT2JqOnRoaXN9KTsKKwkJCTwvaGFuZGxlcj4KKwkJCTxtZXRob2QgbmFtZT0ic2VuZFJlbG9hZCI+CisJCQkJcGFyZW50Ll9wcml2YXRlRm9sZGVycy5nZXRQcml2YXRlTWVzc2FnZUZvbGRlcnNCeVVzZXIuZG9DYWxsKCk7CisJCQk8L21ldGhvZD4KKwkJCTx2aWV3IHJlc291cmNlPSJwcml2YXRlX21lc3NhZ2VfZm9sZGVyX2FkZF9yc2MiIHg9IjEwIiB5PSIyIj48L3ZpZXc+CisJCQk8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IjEyNTkiIC8+CisJCTwvc2ltcGxlTGFiZWxCdXR0b24+CisJCQorCQk8dmlldyBoZWlnaHQ9IjEiPjwvdmlldz4KKwkJCisJCTx2aWV3IG5hbWU9Il9wcml2YXRlRm9sZGVycyIgbGF5b3V0PSJheGlzOnk7c3BhY2luZzoxIj4KKwkJCQorCQkJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKwkJCQl0aGlzLnJlbG9hZCgpOworCQkJPC9oYW5kbGVyPgorCQkJCisJCQk8bWV0aG9kIG5hbWU9InJlbG9hZCI+CisJCQkJdGhpcy5nZXRQcml2YXRlTWVzc2FnZUZvbGRlcnNCeVVzZXIuZG9DYWxsKCk7CisJCQk8L21ldGhvZD4KKwkJCQorCQkJPG1ldGhvZCBuYW1lPSJyZW1vdmVBbGwiPgorCQkJCTwhW0NEQVRBWworCQkJCQlmb3IgKHZhciBlZyBpbiB0aGlzLnN1YnZpZXdzKSB7CisJCQkJCQl0aGlzLnN1YnZpZXdzW2VnXS5kZXN0cm95KCk7CisJCQkJCX0KKwkJCQldXT4KKwkJCTwvbWV0aG9kPgorCQkJPCEtLQorCQkJcHVibGljIExpc3Q8UHJpdmF0ZU1lc3NhZ2VGb2xkZXI+IGdldFByaXZhdGVNZXNzYWdlRm9sZGVyc0J5VXNlcihTdHJpbmcgU0lEKQorCQkJIC0tPgorCQkJPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iZ2V0UHJpdmF0ZU1lc3NhZ2VGb2xkZXJzQnlVc2VyIiBmdW5jbmFtZT0idXNlcnNlcnZpY2UuZ2V0UHJpdmF0ZU1lc3NhZ2VGb2xkZXJzQnlVc2VyIiAKKwkJCQkJICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAgCisJCQkJPGF0dHJpYnV0ZSBuYW1lPSJvbmx5VXBkYXRlRHJvcERvd24iIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIvPiAgICAKKwkJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBjYW52YXMuc2Vzc2lvbklkOyA8L21ldGhvZD48L25ldHBhcmFtPgorCQkgICAgCTxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorCQkgICAgCQk8IVtDREFUQVsKKwkJCSAgICAJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJnZXRQcml2YXRlTWVzc2FnZUZvbGRlcnNCeVVzZXI6ICIsdmFsdWUpOworCQkJICAgIAkJaWYgKHRoaXMub25seVVwZGF0ZURyb3BEb3duKSB7CisJCQkgICAgCQkJdGhpcy5vbmx5VXBkYXRlRHJvcERvd24gPSBmYWxzZTsKKwkJCSAgICAJCQlwYXJlbnQucGFyZW50LnBhcmVudC5fYWN0aW9uQnV0dG9ucy5fbW92ZS5pbml0SXRlbXModmFsdWUpOworCQkJICAgIAkJfSBlbHNlIHsKKwkJCSAgICAJCQlwYXJlbnQubG9hZFJlc3VsdCh2YWx1ZSk7CisJCQkgICAgCQl9CisJCSAgICAJCV1dPgorCQkgICAgCTwvaGFuZGxlcj4KKwkJICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4JCisJCSAgICAKKwkJICAgIDxtZXRob2QgbmFtZT0ibG9hZFByaXZhdGVNZXNzYWdlIiBhcmdzPSJwcml2YXRlTWVzc2FnZUZvbGRlcklkLHJlZk9iaiI+CisJCSAgICAJcGFyZW50LnNlbGVjdE1lbnVJdGVtKHJlZk9iaik7CisJCSAgICAJcGFyZW50LnBhcmVudC5fdGFibGUucHJpdmF0ZU1lc3NhZ2VGb2xkZXJJZCA9IHByaXZhdGVNZXNzYWdlRm9sZGVySWQ7CisJCSAgICAJcGFyZW50LnBhcmVudC5fdGFibGUuZ2V0Rm9sZGVyLmRvQ2FsbCgpOworCQkgICAgPC9tZXRob2Q+CisJCSAgICAKKwkJICAgIDxtZXRob2QgbmFtZT0iZGVsZXRlRm9sZGVyIiBhcmdzPSJwcml2YXRlTWVzc2FnZUZvbGRlcklkLHJlZk9iaiI+CisJCSAgICAJaWYgKHBhcmVudC5zZWxlY3RNZW51SXRlbU9iaiA9PSByZWZPYmopIHsKKwkJICAgIAkJcGFyZW50LnBhcmVudC5yZXNldE1lbnVJdGVtKCk7CisJCSAgICAJfQorCQkgICAgCXRoaXMuZGVsZXRlUHJpdmF0ZU1lc3NhZ2VGb2xkZXIucHJpdmF0ZU1lc3NhZ2VGb2xkZXJJZCA9IHByaXZhdGVNZXNzYWdlRm9sZGVySWQ7CisJCSAgICAJdGhpcy5kZWxldGVQcml2YXRlTWVzc2FnZUZvbGRlci5kb0NhbGwoKTsKKwkJICAgIDwvbWV0aG9kPgorCQkgICAgCisJCSAgICA8IS0tCisJCQkJU2VuZCB1cGRhdGUgdG8gZHJvcCBkb3duIGxpc3Qgb2YgZm9sZGVyIG5hbWVzIAorCQkJIC0tPgorCQkJPG1ldGhvZCBuYW1lPSJ1cGRhdGVDb25uZWN0ZWRGb2xkZXJCb3giPgorCQkJCXRoaXMuZ2V0UHJpdmF0ZU1lc3NhZ2VGb2xkZXJzQnlVc2VyLm9ubHlVcGRhdGVEcm9wRG93biA9IHRydWU7CisJCQkJdGhpcy5nZXRQcml2YXRlTWVzc2FnZUZvbGRlcnNCeVVzZXIuZG9DYWxsKCk7CisJCQk8L21ldGhvZD4KKwkJICAgIAorCQkgICAgPCEtLQorCQkgICAgcHVibGljIExvbmcgZGVsZXRlUHJpdmF0ZU1lc3NhZ2VGb2xkZXIoU3RyaW5nIFNJRCwgTG9uZyBwcml2YXRlTWVzc2FnZUZvbGRlcklkLCBTdHJpbmcgZm9sZGVyTmFtZSkKKwkJICAgICAtLT4KKwkJICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImRlbGV0ZVByaXZhdGVNZXNzYWdlRm9sZGVyIiBmdW5jbmFtZT0idXNlcnNlcnZpY2UuZGVsZXRlUHJpdmF0ZU1lc3NhZ2VGb2xkZXIiIAorCQkJCQkgIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiA+ICAKKwkJCQk8YXR0cmlidXRlIG5hbWU9InByaXZhdGVNZXNzYWdlRm9sZGVySWQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiLz4gICAgICAgIAorCQkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnByaXZhdGVNZXNzYWdlRm9sZGVySWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCSAgICAJPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisJCSAgICAJCTwhW0NEQVRBWworCQkJICAgIAkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImRlbGV0ZVByaXZhdGVNZXNzYWdlRm9sZGVyOiAiLHZhbHVlKTsKKwkJCSAgICAJCXBhcmVudC5yZWxvYWQoKTsKKwkJICAgIAkJXV0+CisJCSAgICAJPC9oYW5kbGVyPgorCQkgICAgPC9uZXRSZW1vdGVDYWxsSGliPgorCQkgICAgCisJCSAgICA8bWV0aG9kIG5hbWU9ImxvYWRSZXN1bHQiIGFyZ3M9InRMaXN0Ij4KKwkJICAgIAk8IVtDREFUQVsKKwkJICAgIAkKKwkJICAgIAkJdGhpcy5yZW1vdmVBbGwoKTsKKwkJICAgIAkJCisJCSAgICAJCWZvciAodmFyIGk9MDtpPHRMaXN0Lmxlbmd0aDtpKyspIHsKKwkJICAgIAkJCW5ldyBsei5wcml2YXRlTWVzc2FnZUZvbGRlcih0aGlzLHsKKwkJCQkgICAgCQkJCXByaXZhdGVNZXNzYWdlRm9sZGVySWQ6dExpc3RbaV0ucHJpdmF0ZU1lc3NhZ2VGb2xkZXJJZCwKKwkJCQkgICAgCQkJCWZvbGRlck5hbWU6dExpc3RbaV0uZm9sZGVyTmFtZQorCQkJCSAgICAJCQl9KTsKKwkJICAgIAkJfQorCQkgICAgCQkKKwkJICAgIAkJcGFyZW50LnBhcmVudC5fYWN0aW9uQnV0dG9ucy5fbW92ZS5pbml0SXRlbXModExpc3QpOworCQkgICAgCQorCQkgICAgCV1dPgorCQkgICAgPC9tZXRob2Q+CisJCSAgICAKKwkgICAgCQorCQkJCisJCTwvdmlldz4KKwkJCisJPC92aWV3PgorCQorCQorCTx2aWV3IGhlaWdodD0iJG9uY2V7IHBhcmVudC5oZWlnaHQgfSIgd2lkdGg9IjEiIHg9IjE1NCIgCisJCSAgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdtYWluQm9yZGVyQ29sb3InKSB9Ij48L3ZpZXc+CisJCisJPGxhYmVsVGV4dCBuYW1lPSJfbGFiZWxQcml2YXRlTWVzc2FnZXMiIHg9IjE2MCIgbGFiZWxpZD0iMTIwNiIgZm9udHN0eWxlPSJib2xkIiAvPgorCQorCTx0dXJuT3Zlckxpc3RPcmRlcmVkUGFnZWQgbmFtZT0iX3RhYmxlIiBzaG93VG9wQmFyPSJ0cnVlIiB4PSIxNTgiIAorCQkJCQkgaGVpZ2h0PSIyNTAiIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoLTE2MCB9IgorCQkgICAgICAgICAgICAgeT0iMjQiIGl0ZW1IZWlnaHQ9IjIwIiBsaXN0TGFiZWxJZD0iMTIzNyIgaGVhZGVySGVpZ2h0PSIyMiIgCisJCSAgICAgICAgICAgICBsaXN0SXRlbU5hbWU9InByaXZhdGVNZXNzYWdJdGVtIiBtZW51QmFyWEluZGVudD0iODAiCisJCSAgICAgICAgICAgICBtdWx0aXNlbGVjdD0idHJ1ZSIgb3JkZXJieT0iYy5pbnNlcnRlZCI+CisJCQorCQkKKwkJPGF0dHJpYnV0ZSBuYW1lPSJjb3VudFVuUmVhZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKwkJPGF0dHJpYnV0ZSBuYW1lPSJpc0luYm94IiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisJCTxhdHRyaWJ1dGUgbmFtZT0iaXNTZW5kIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisJCTxhdHRyaWJ1dGUgbmFtZT0iaXNUcmFzaCIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorCQk8YXR0cmlidXRlIG5hbWU9ImlzRm9sZGVyIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisJCTxhdHRyaWJ1dGUgbmFtZT0icHJpdmF0ZU1lc3NhZ2VGb2xkZXJJZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKwkJCisJCTxhdHRyaWJ1dGUgbmFtZT0ic2VsZWN0ZWRSZWZPYmpJZHMiIHZhbHVlPSJudWxsIi8+CisJCQorCQk8bWV0aG9kIG5hbWU9InVwZGF0ZVByaXZhdGVNZXNzYWdlTGFiZWxUZXh0IiBhcmdzPSJjb3VudFVuUmVhZCI+CisJCQk8IVtDREFUQVsKKwkJICAgIAl0aGlzLmNvdW50VW5SZWFkID0gY291bnRVblJlYWQ7CisJCSAgICAJcGFyZW50Ll9sYWJlbFByaXZhdGVNZXNzYWdlcy5zZXRBdHRyaWJ1dGUoInRleHQiLGNhbnZhcy5nZXRMYWJlbE5hbWUocGFyZW50Ll9sYWJlbFByaXZhdGVNZXNzYWdlcy5sYWJlbGlkKSsnIDxpPiggJyt0aGlzLmNvdW50VW5SZWFkKycgPC9pPiknKTsKKwkgICAgCV1dPgorCSAgICA8L21ldGhvZD4KKwkJCQorCQk8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorCQkJdGhpcy5hZGRIZWFkZXJJdGVtKDEyMDUsMjApOworCQkJCisJCQl0aGlzLmFkZEhlYWRlckl0ZW1PcmRlcmVkKDEyMDIsMTYwLCJjLmZyb20ubGFzdG5hbWUiLGZhbHNlLGZhbHNlKTsKKwkJCXRoaXMuYWRkSGVhZGVySXRlbU9yZGVyZWQoMTIwMyx0aGlzLndpZHRoLTMxNiwiYy5zdWJqZWN0IixmYWxzZSxmYWxzZSk7CisJCQl0aGlzLmFkZEhlYWRlckl0ZW1PcmRlcmVkKDEyMDQsMTIwLCJjLmluc2VydGVkIix0cnVlLHRydWUpOworCQkJCisJCQkvL3RoaXMuZ2V0SW5ib3guZG9DYWxsKCk7CisJCTwvaGFuZGxlcj4KKwkJCisJCTxoYW5kbGVyIG5hbWU9Im9ubG9hZCI+CisJCQlpZiAodGhpcy5pc0luYm94KSB7CisJCQkJdGhpcy5nZXRJbmJveC5kb0NhbGwoKTsKKwkJCX0gZWxzZSBpZiAodGhpcy5pc1NlbmQpIHsKKwkJCQl0aGlzLmdldFNlbmQuZG9DYWxsKCk7CisJCQl9IGVsc2UgaWYgKHRoaXMuaXNUcmFzaCkgeworCQkJCXRoaXMuZ2V0VHJhc2guZG9DYWxsKCk7CisJCQl9CisJCTwvaGFuZGxlcj4KKwkJCisJCTxtZXRob2QgbmFtZT0iaXRlbVNlbGVjdGVkIiBhcmdzPSJsaXN0T2JqLGJvb2wiPgorCQkJPCFbQ0RBVEFbCisJCQkKKwkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiaXRlbVNlbGVjdGVkIDo6ICIsbGlzdE9iaik7CisJCQkJCisJCQkJbGlzdE9iai5zZXRBdHRyaWJ1dGUoIml0ZW1TZWxlY3RlZCIsYm9vbCk7CisJCQkJdGhpcy5yZW5kZXJMaXN0W2xpc3RPYmouaXRlbUlkXS5pdGVtU2VsZWN0ZWQgPSBib29sOworCQkJCQorCQkJCisJCQldXT4KKwkJPC9tZXRob2Q+CisJCQorCQk8bWV0aG9kIG5hbWU9InNlbGVjdFVucmVhZCI+CisJCQk8IVtDREFUQVsKKwkJCQorCQkJCWlmICghdGhpcy5pc0luYm94KSB7CisJCQkJCXJldHVybjsKKwkJCQl9CisgICAgICAgICAgICAJCisgICAgICAgICAgICAJLy9saXN0LnN1YnZpZXdzW2ldLnNldEF0dHJpYnV0ZSgiaXNSZWFkIixyZWNvcmRzW2ldLmlzUmVhZCk7CisJCQkKKwkgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFJlZk9iaiA9IG5ldyBBcnJheSgpOworCSAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkID0gbmV3IEFycmF5KCk7CisJICAgICAgICAgICAgCisJICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8dGhpcy5yZW5kZXJMaXN0Lmxlbmd0aDtpKyspIHsKKwkgICAgICAgICAgICAJaWYgKCF0aGlzLnJlbmRlckxpc3RbaV0uaXNSZWFkKSB7CisJCSAgICAgICAgICAgIAl0aGlzLnJlbmRlckxpc3RbaV0uaXRlbVNlbGVjdGVkID0gdHJ1ZTsKKwkJICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyTGlzdFtpXS5pc3NlbGVjdGVkID0gdHJ1ZTsKKwkJICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkUmVmT2JqLnB1c2goaSk7CisJICAgICAgICAgICAgCX0gZWxzZSB7CisJICAgICAgICAgICAgCQl0aGlzLnJlbmRlckxpc3RbaV0uaXRlbVNlbGVjdGVkID0gZmFsc2U7CisJCSAgICAgICAgICAgICAgICB0aGlzLnJlbmRlckxpc3RbaV0uaXNzZWxlY3RlZCA9IGZhbHNlOworCSAgICAgICAgICAgIAl9CisJICAgICAgICAgICAgfQorCSAgICAgICAgICAgIAorCSAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ0aGlzLl9zZWxlY3RlZFJlZk9iaiBMRU5HVEggIix0aGlzLl9zZWxlY3RlZFJlZk9iai5sZW5ndGgpOworCSAgICAgICAgCisJICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8dGhpcy5faW5uZXJsaXN0Ll9pbm4uX2lubi5zdWJ2aWV3cy5sZW5ndGg7aSsrKXsKKwkgICAgICAgICAgICAJaWYgKCF0aGlzLl9pbm5lcmxpc3QuX2lubi5faW5uLnN1YnZpZXdzW2ldLmlzUmVhZCkgeworCQkgICAgICAgICAgICAJdGhpcy5faW5uZXJsaXN0Ll9pbm4uX2lubi5zdWJ2aWV3c1tpXS5zZXRBdHRyaWJ1dGUoIml0ZW1TZWxlY3RlZCIsdHJ1ZSk7CisJCQkgICAgICAgICAgICB0aGlzLl9pbm5lcmxpc3QuX2lubi5faW5uLnN1YnZpZXdzW2ldLmlzc2VsZWN0ZWQgPSB0cnVlOworCQkgICAgICAgICAgICAgICAgdGhpcy5faW5uZXJsaXN0Ll9pbm4uX2lubi5zdWJ2aWV3c1tpXS5vbm1vdXNlb3V0LnNlbmRFdmVudCgpOworCQkgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWQucHVzaCh0aGlzLl9pbm5lcmxpc3QuX2lubi5faW5uLnN1YnZpZXdzW2ldKTsKKwkgICAgICAgICAgICAJfSBlbHNlIHsKKwkgICAgICAgICAgICAJCXRoaXMuX2lubmVybGlzdC5faW5uLl9pbm4uc3Vidmlld3NbaV0uc2V0QXR0cmlidXRlKCJpdGVtU2VsZWN0ZWQiLGZhbHNlKTsKKwkJCSAgICAgICAgICAgIHRoaXMuX2lubmVybGlzdC5faW5uLl9pbm4uc3Vidmlld3NbaV0uaXNzZWxlY3RlZCA9IGZhbHNlOworCQkgICAgICAgICAgICAgICAgdGhpcy5faW5uZXJsaXN0Ll9pbm4uX2lubi5zdWJ2aWV3c1tpXS5vbm1vdXNlb3V0LnNlbmRFdmVudCgpOworCSAgICAgICAgICAgIAl9CisJCSAgICAgICAgfQorCQkJXV0+CisJCTwvbWV0aG9kPgorCQkKKwkJPG1ldGhvZCBuYW1lPSJzZWxlY3RSZWFkIj4KKwkJCTwhW0NEQVRBWworCQkJCWlmICghdGhpcy5pc0luYm94KSB7CisJCQkJCXJldHVybjsKKwkJCQl9CisgICAgICAgICAgICAJCisgICAgICAgICAgICAJLy9saXN0LnN1YnZpZXdzW2ldLnNldEF0dHJpYnV0ZSgiaXNSZWFkIixyZWNvcmRzW2ldLmlzUmVhZCk7CisJCQkKKwkgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFJlZk9iaiA9IG5ldyBBcnJheSgpOworCSAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkID0gbmV3IEFycmF5KCk7CisJICAgICAgICAgICAgCisJICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8dGhpcy5yZW5kZXJMaXN0Lmxlbmd0aDtpKyspIHsKKwkgICAgICAgICAgICAJaWYgKHRoaXMucmVuZGVyTGlzdFtpXS5pc1JlYWQpIHsKKwkJICAgICAgICAgICAgCXRoaXMucmVuZGVyTGlzdFtpXS5pdGVtU2VsZWN0ZWQgPSB0cnVlOworCQkgICAgICAgICAgICAgICAgdGhpcy5yZW5kZXJMaXN0W2ldLmlzc2VsZWN0ZWQgPSB0cnVlOworCQkgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0ZWRSZWZPYmoucHVzaChpKTsKKwkgICAgICAgICAgICAJfSBlbHNlIHsKKwkgICAgICAgICAgICAJCXRoaXMucmVuZGVyTGlzdFtpXS5pdGVtU2VsZWN0ZWQgPSBmYWxzZTsKKwkJICAgICAgICAgICAgICAgIHRoaXMucmVuZGVyTGlzdFtpXS5pc3NlbGVjdGVkID0gZmFsc2U7CisJICAgICAgICAgICAgCX0KKwkgICAgICAgICAgICB9CisJICAgICAgICAgICAgCisJICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInRoaXMuX3NlbGVjdGVkUmVmT2JqIExFTkdUSCAiLHRoaXMuX3NlbGVjdGVkUmVmT2JqLmxlbmd0aCk7CisJICAgICAgICAKKwkgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTx0aGlzLl9pbm5lcmxpc3QuX2lubi5faW5uLnN1YnZpZXdzLmxlbmd0aDtpKyspeworCSAgICAgICAgICAgIAlpZiAodGhpcy5faW5uZXJsaXN0Ll9pbm4uX2lubi5zdWJ2aWV3c1tpXS5pc1JlYWQpIHsKKwkJICAgICAgICAgICAgCXRoaXMuX2lubmVybGlzdC5faW5uLl9pbm4uc3Vidmlld3NbaV0uc2V0QXR0cmlidXRlKCJpdGVtU2VsZWN0ZWQiLHRydWUpOworCQkJICAgICAgICAgICAgdGhpcy5faW5uZXJsaXN0Ll9pbm4uX2lubi5zdWJ2aWV3c1tpXS5pc3NlbGVjdGVkID0gdHJ1ZTsKKwkJICAgICAgICAgICAgICAgIHRoaXMuX2lubmVybGlzdC5faW5uLl9pbm4uc3Vidmlld3NbaV0ub25tb3VzZW91dC5zZW5kRXZlbnQoKTsKKwkJICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkLnB1c2godGhpcy5faW5uZXJsaXN0Ll9pbm4uX2lubi5zdWJ2aWV3c1tpXSk7CisJICAgICAgICAgICAgCX0gZWxzZSB7CisJICAgICAgICAgICAgCQl0aGlzLl9pbm5lcmxpc3QuX2lubi5faW5uLnN1YnZpZXdzW2ldLnNldEF0dHJpYnV0ZSgiaXRlbVNlbGVjdGVkIixmYWxzZSk7CisJCQkgICAgICAgICAgICB0aGlzLl9pbm5lcmxpc3QuX2lubi5faW5uLnN1YnZpZXdzW2ldLmlzc2VsZWN0ZWQgPSBmYWxzZTsKKwkJICAgICAgICAgICAgICAgIHRoaXMuX2lubmVybGlzdC5faW5uLl9pbm4uc3Vidmlld3NbaV0ub25tb3VzZW91dC5zZW5kRXZlbnQoKTsKKwkgICAgICAgICAgICAJfQorCQkgICAgICAgIH0KKwkJCV1dPgorCQk8L21ldGhvZD4KKwkJCisJCTxtZXRob2QgbmFtZT0ibW92ZVRvVHJhc2giIGFyZ3M9ImlzVHJhc2giPgorCQkJPCFbQ0RBVEFbCisJCQkJaWYgKHRoaXMuX3NlbGVjdGVkUmVmT2JqID09IG51bGwgfHwgdGhpcy5fc2VsZWN0ZWRSZWZPYmoubGVuZ3RoID09IDApIHsKKwkJCQkJbmV3IGx6LmxhYmVsZXJyb3JQb3B1cChjYW52YXMse2Vycm9ybGFiZWxpZDoxMjU0fSk7CisJCQkJfQorCQkJCQorCQkJCXRoaXMuc2VsZWN0ZWRSZWZPYmpJZHMgPSBuZXcgQXJyYXkoKTsKKwkJCQkKKwkJCQlmb3IgKHZhciBpPTA7aTx0aGlzLl9zZWxlY3RlZFJlZk9iai5sZW5ndGg7aSsrKSB7CisJCQkJCXRoaXMuc2VsZWN0ZWRSZWZPYmpJZHMucHVzaCh0aGlzLnJlbmRlckxpc3RbdGhpcy5fc2VsZWN0ZWRSZWZPYmpbaV1dLnByaXZhdGVNZXNzYWdlSWQpOworCQkJCX0KKwkJCQkKKwkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidGhpcy5fc2VsZWN0ZWRSZWZPYmogIix0aGlzLl9zZWxlY3RlZFJlZk9iaik7CisJCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInRoaXMuX3NlbGVjdGVkUmVmT2JqIExFTkdUSCAiLHRoaXMuX3NlbGVjdGVkUmVmT2JqLmxlbmd0aCk7CisJCQkKKwkJCQl0aGlzLm1vdmVNYWlsc1RvVHJhc2guaXNUcmFzaCA9IGlzVHJhc2g7CisJCQkJdGhpcy5tb3ZlTWFpbHNUb1RyYXNoLmRvQ2FsbCgpOworCQkJCQorCQkJXV0+CisJCTwvbWV0aG9kPgorCQkKKwkJPCEtLQorCQlwdWJsaWMgTG9uZyBtb3ZlTWFpbHNUb1RyYXNoKFN0cmluZyBTSUQsIExpc3QgcHJpdmF0ZU1lc3NhZ2VJZHMsIEJvb2xlYW4gaXNUcmFzaCkKKwkJIC0tPgorCQk8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJtb3ZlTWFpbHNUb1RyYXNoIiBmdW5jbmFtZT0idXNlcnNlcnZpY2UubW92ZU1haWxzVG9UcmFzaCIgCisJCQkJCSAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gIAorCQkJPGF0dHJpYnV0ZSBuYW1lPSJpc1RyYXNoIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iLz4gICAgICAgIAorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gY2FudmFzLnNlc3Npb25JZDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIHBhcmVudC5wYXJlbnQuc2VsZWN0ZWRSZWZPYmpJZHM7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBwYXJlbnQuaXNUcmFzaDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkgICAgCTxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorCSAgICAJCTwhW0NEQVRBWworCQkgICAgCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgibW92ZU1haWxzVG9UcmFzaDogIix2YWx1ZSk7CisJCSAgICAJCS8vdGhpcy5wYXJlbnQuZGVzdHJveSgpOworCQkgICAgCQlpZiAocGFyZW50LmlzSW5ib3gpIHsKKwkJICAgIAkJCXBhcmVudC5nZXRJbmJveC5kb0NhbGwoKTsKKwkJICAgIAkJfSBlbHNlIGlmIChwYXJlbnQuaXNTZW5kKSB7CisJCSAgICAJCQlwYXJlbnQuZ2V0U2VuZC5kb0NhbGwoKTsKKwkJICAgIAkJfSBlbHNlIGlmIChwYXJlbnQuaXNGb2xkZXIpIHsKKwkJICAgIAkJCXBhcmVudC5nZXRGb2xkZXIuZG9DYWxsKCk7CisJCSAgICAJCX0gZWxzZSBpZiAocGFyZW50LmlzVHJhc2gpIHsKKwkJICAgIAkJCXBhcmVudC5nZXRUcmFzaC5kb0NhbGwoKTsKKwkJICAgIAkJfQorCSAgICAJCV1dPgorCSAgICAJPC9oYW5kbGVyPgorCSAgICA8L25ldFJlbW90ZUNhbGxIaWI+CQorCSAgICAKKwkgICAgPG1ldGhvZCBuYW1lPSJtb3ZlVG9Gb2xkZXJCeUlkIiBhcmdzPSJuZXdGb2xkZXJJZCI+CisJCQk8IVtDREFUQVsKKwkJCQlpZiAodGhpcy5fc2VsZWN0ZWRSZWZPYmogPT0gbnVsbCB8fCB0aGlzLl9zZWxlY3RlZFJlZk9iai5sZW5ndGggPT0gMCkgeworCQkJCQluZXcgbHoubGFiZWxlcnJvclBvcHVwKGNhbnZhcyx7ZXJyb3JsYWJlbGlkOjEyNTR9KTsKKwkJCQl9CisJCQkJCisJCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm1vdmVUb0ZvbGRlckJ5SWQgIixuZXdGb2xkZXJJZCk7CisJCQkJCisJCQkJdGhpcy5zZWxlY3RlZFJlZk9iaklkcyA9IG5ldyBBcnJheSgpOworCQkJCQorCQkJCWZvciAodmFyIGk9MDtpPHRoaXMuX3NlbGVjdGVkUmVmT2JqLmxlbmd0aDtpKyspIHsKKwkJCQkJdGhpcy5zZWxlY3RlZFJlZk9iaklkcy5wdXNoKHRoaXMucmVuZGVyTGlzdFt0aGlzLl9zZWxlY3RlZFJlZk9ialtpXV0ucHJpdmF0ZU1lc3NhZ2VJZCk7CisJCQkJfQorCQkJCQorCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ0aGlzLl9zZWxlY3RlZFJlZk9iaiAiLHRoaXMuX3NlbGVjdGVkUmVmT2JqKTsKKwkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidGhpcy5fc2VsZWN0ZWRSZWZPYmogTEVOR1RIICIsdGhpcy5fc2VsZWN0ZWRSZWZPYmoubGVuZ3RoKTsKKwkJCQorCQkJCXRoaXMubW92ZU1haWxzVG9Gb2xkZXIubmV3Rm9sZGVySWQgPSBuZXdGb2xkZXJJZDsKKwkJCQl0aGlzLm1vdmVNYWlsc1RvRm9sZGVyLmRvQ2FsbCgpOworCQkJCQorCQkJXV0+CisJCTwvbWV0aG9kPgorCSAgICA8IS0tCisJICAgIHB1YmxpYyBJbnRlZ2VyIG1vdmVNYWlsc1RvRm9sZGVyKFN0cmluZyBTSUQsIExpc3QgcHJpdmF0ZU1lc3NhZ2VJbnRzSWRzLAorCQkJTG9uZyBuZXdGb2xkZXJJZCkKKwkJIC0tPgorCSAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJtb3ZlTWFpbHNUb0ZvbGRlciIgZnVuY25hbWU9InVzZXJzZXJ2aWNlLm1vdmVNYWlsc1RvRm9sZGVyIiAKKwkJCQkJICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAgCisJCQk8YXR0cmlidXRlIG5hbWU9Im5ld0ZvbGRlcklkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gY2FudmFzLnNlc3Npb25JZDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIHBhcmVudC5wYXJlbnQuc2VsZWN0ZWRSZWZPYmpJZHM7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBwYXJlbnQubmV3Rm9sZGVySWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJICAgIAk8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKwkgICAgCQk8IVtDREFUQVsKKwkJICAgIAkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm1vdmVNYWlsc1RvRm9sZGVyOiAiLHZhbHVlKTsKKwkJICAgIAkJLy90aGlzLnBhcmVudC5kZXN0cm95KCk7CisJCSAgICAJCWlmIChwYXJlbnQuaXNJbmJveCkgeworCQkgICAgCQkJcGFyZW50LmdldEluYm94LmRvQ2FsbCgpOworCQkgICAgCQl9IGVsc2UgaWYgKHBhcmVudC5pc1NlbmQpIHsKKwkJICAgIAkJCXBhcmVudC5nZXRTZW5kLmRvQ2FsbCgpOworCQkgICAgCQl9IGVsc2UgaWYgKHBhcmVudC5pc0ZvbGRlcikgeworCQkgICAgCQkJcGFyZW50LmdldEZvbGRlci5kb0NhbGwoKTsKKwkJICAgIAkJfSBlbHNlIGlmIChwYXJlbnQuaXNUcmFzaCkgeworCQkgICAgCQkJcGFyZW50LmdldFRyYXNoLmRvQ2FsbCgpOworCQkgICAgCQl9CisJICAgIAkJXV0+CisJICAgIAk8L2hhbmRsZXI+CisJICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4JCQkgCisJICAgIAorCSAgICA8bWV0aG9kIG5hbWU9ImZpbmFsRGVsZXRlIj4KKwkgICAgCTwhW0NEQVRBWworCQkJCWlmICh0aGlzLl9zZWxlY3RlZFJlZk9iaiA9PSBudWxsIHx8IHRoaXMuX3NlbGVjdGVkUmVmT2JqLmxlbmd0aCA9PSAwKSB7CisJCQkJCW5ldyBsei5sYWJlbGVycm9yUG9wdXAoY2FudmFzLHtlcnJvcmxhYmVsaWQ6MTI1NH0pOworCQkJCX0KKwkJCQkKKwkJCQl0aGlzLnNlbGVjdGVkUmVmT2JqSWRzID0gbmV3IEFycmF5KCk7CisJCQkKKwkJCQlmb3IgKHZhciBpPTA7aTx0aGlzLl9zZWxlY3RlZFJlZk9iai5sZW5ndGg7aSsrKSB7CisJCQkJCXRoaXMuc2VsZWN0ZWRSZWZPYmpJZHMucHVzaCh0aGlzLnJlbmRlckxpc3RbdGhpcy5fc2VsZWN0ZWRSZWZPYmpbaV1dLnByaXZhdGVNZXNzYWdlSWQpOworCQkJCX0KKwkJCQkKKwkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidGhpcy5fc2VsZWN0ZWRSZWZPYmogIix0aGlzLl9zZWxlY3RlZFJlZk9iaik7CisJCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInRoaXMuX3NlbGVjdGVkUmVmT2JqIExFTkdUSCAiLHRoaXMuX3NlbGVjdGVkUmVmT2JqLmxlbmd0aCk7CisJCQkKKwkJCQl0aGlzLmRlbGV0ZVByaXZhdGVNZXNzYWdlcy5kb0NhbGwoKTsKKwkJCQkKKwkJCV1dPgorCSAgICA8L21ldGhvZD4KKwkgICAgCisJICAgIDwhLS0KKwkgICAgcHVibGljIEludGVnZXIgZGVsZXRlUHJpdmF0ZU1lc3NhZ2VzKFN0cmluZyBTSUQsIExpc3QgcHJpdmF0ZU1lc3NhZ2VJbnRzSWRzKQorCSAgICAgLS0+CisJICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImRlbGV0ZVByaXZhdGVNZXNzYWdlcyIgZnVuY25hbWU9InVzZXJzZXJ2aWNlLmRlbGV0ZVByaXZhdGVNZXNzYWdlcyIgCisJCQkJCSAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gIAorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gY2FudmFzLnNlc3Npb25JZDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIHBhcmVudC5wYXJlbnQuc2VsZWN0ZWRSZWZPYmpJZHM7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJICAgIAk8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKwkgICAgCQk8IVtDREFUQVsKKwkJICAgIAkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImRlbGV0ZVByaXZhdGVNZXNzYWdlczogIix2YWx1ZSk7CisJCSAgICAJCS8vdGhpcy5wYXJlbnQuZGVzdHJveSgpOworCQkgICAgCQlpZiAocGFyZW50LmlzSW5ib3gpIHsKKwkJICAgIAkJCXBhcmVudC5nZXRJbmJveC5kb0NhbGwoKTsKKwkJICAgIAkJfSBlbHNlIGlmIChwYXJlbnQuaXNTZW5kKSB7CisJCSAgICAJCQlwYXJlbnQuZ2V0U2VuZC5kb0NhbGwoKTsKKwkJICAgIAkJfSBlbHNlIGlmIChwYXJlbnQuaXNGb2xkZXIpIHsKKwkJICAgIAkJCXBhcmVudC5nZXRGb2xkZXIuZG9DYWxsKCk7CisJCSAgICAJCX0gZWxzZSBpZiAocGFyZW50LmlzVHJhc2gpIHsKKwkJICAgIAkJCXBhcmVudC5nZXRUcmFzaC5kb0NhbGwoKTsKKwkJICAgIAkJfQorCSAgICAJCV1dPgorCSAgICAJPC9oYW5kbGVyPgorCSAgICA8L25ldFJlbW90ZUNhbGxIaWI+CQorCSAgICAKKwkgICAgPG1ldGhvZCBuYW1lPSJtYXJrVG9SZWFkIiBhcmdzPSJpc1JlYWQiPgorCQkJPCFbQ0RBVEFbCisJCQkJaWYgKHRoaXMuX3NlbGVjdGVkUmVmT2JqID09IG51bGwgfHwgdGhpcy5fc2VsZWN0ZWRSZWZPYmoubGVuZ3RoID09IDApIHsKKwkJCQkJbmV3IGx6LmxhYmVsZXJyb3JQb3B1cChjYW52YXMse2Vycm9ybGFiZWxpZDoxMjU0fSk7CisJCQkJfQorCQkJCQorCQkJCXRoaXMuc2VsZWN0ZWRSZWZPYmpJZHMgPSBuZXcgQXJyYXkoKTsKKwkJCQorCQkJCWZvciAodmFyIGk9MDtpPHRoaXMuX3NlbGVjdGVkUmVmT2JqLmxlbmd0aDtpKyspIHsKKwkJCQkJdGhpcy5zZWxlY3RlZFJlZk9iaklkcy5wdXNoKHRoaXMucmVuZGVyTGlzdFt0aGlzLl9zZWxlY3RlZFJlZk9ialtpXV0ucHJpdmF0ZU1lc3NhZ2VJZCk7CisJCQkJfQorCQkJCQorCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ0aGlzLl9zZWxlY3RlZFJlZk9iaiAiLHRoaXMuX3NlbGVjdGVkUmVmT2JqKTsKKwkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidGhpcy5fc2VsZWN0ZWRSZWZPYmogTEVOR1RIICIsdGhpcy5fc2VsZWN0ZWRSZWZPYmoubGVuZ3RoKTsKKwkJCQorCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ0aGlzLm1hcmtSZWFkU3RhdHVzTWFpbHMgIixpc1JlYWQpOworCQkJCQorCQkJCXRoaXMubWFya1JlYWRTdGF0dXNNYWlscy5pc1JlYWQgPSBpc1JlYWQ7CisJCQkJdGhpcy5tYXJrUmVhZFN0YXR1c01haWxzLmRvQ2FsbCgpOworCQkJCQorCQkJXV0+CisJCTwvbWV0aG9kPgorCSAgICAKKwkgICAgPCEtLQorCSAgICBwdWJsaWMgTG9uZyBtYXJrUmVhZFN0YXR1c01haWxzKFN0cmluZyBTSUQsIExpc3QgcHJpdmF0ZU1lc3NhZ2VJbnRzSWRzLCBCb29sZWFuIGlzUmVhZCkKKwkgICAgIC0tPgorCSAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJtYXJrUmVhZFN0YXR1c01haWxzIiBmdW5jbmFtZT0idXNlcnNlcnZpY2UubWFya1JlYWRTdGF0dXNNYWlscyIgCisJCQkJCSAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gIAorCQkJPGF0dHJpYnV0ZSBuYW1lPSJpc1JlYWQiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIvPiAgICAgICAgCisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBjYW52YXMuc2Vzc2lvbklkOyA8L21ldGhvZD48L25ldHBhcmFtPgorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBhcmVudC5zZWxlY3RlZFJlZk9iaklkczsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIHBhcmVudC5pc1JlYWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJICAgIAk8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKwkgICAgCQk8IVtDREFUQVsKKwkJICAgIAkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm1hcmtSZWFkU3RhdHVzTWFpbHM6ICIsdmFsdWUpOworCQkgICAgCQkvL3RoaXMucGFyZW50LmRlc3Ryb3koKTsKKwkJICAgIAkJaWYgKHBhcmVudC5pc0luYm94KSB7CisJCSAgICAJCQlwYXJlbnQuZ2V0SW5ib3guZG9DYWxsKCk7CisJCSAgICAJCX0gZWxzZSBpZiAocGFyZW50LmlzU2VuZCkgeworCQkgICAgCQkJcGFyZW50LmdldFNlbmQuZG9DYWxsKCk7CisJCSAgICAJCX0gZWxzZSBpZiAocGFyZW50LmlzRm9sZGVyKSB7CisJCSAgICAJCQlwYXJlbnQuZ2V0Rm9sZGVyLmRvQ2FsbCgpOworCQkgICAgCQl9IGVsc2UgaWYgKHBhcmVudC5pc1RyYXNoKSB7CisJCSAgICAJCQlwYXJlbnQuZ2V0VHJhc2guZG9DYWxsKCk7CisJCSAgICAJCX0KKwkgICAgCQldXT4KKwkgICAgCTwvaGFuZGxlcj4KKwkgICAgPC9uZXRSZW1vdGVDYWxsSGliPgkKKwkJCisJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2tlZEl0ZW0iIGFyZ3M9Imxpc3RPYmoiPgorCQkJPCFbQ0RBVEFbCisJCQkKKwkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib25jbGlja2VkSXRlbSA6OiAiLGxpc3RPYmoucmVmT2JqKTsKKwkJCQkKKwkJCQl2YXIgYm9vbCA9ICFsaXN0T2JqLml0ZW1TZWxlY3RlZDsKKwkJCQkKKwkJCQl0aGlzLml0ZW1TZWxlY3RlZChsaXN0T2JqLGJvb2wpOworCQkJCQorCQkJCWlmICh0aGlzLmlzSW5ib3gpIHsKKwkJCQkJCisJCQkJCWlmICghbGlzdE9iai5pc1JlYWQpIHsKKwkJCQkJCQorCQkJCQkJdGhpcy5yZW5kZXJMaXN0W2xpc3RPYmouaXRlbUlkXS5pc1JlYWQgPSB0cnVlOworCQkJCQkJCisJCQkJCQlsaXN0T2JqLnNldEF0dHJpYnV0ZSgiaXNSZWFkIix0cnVlKTsKKwkJCQkJCQorCQkJCQkJLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib25jbGlja2VkSXRlbSA6OiAiLGxpc3RPYmoucmVmT2JqLnByaXZhdGVNZXNzYWdlSWQpOworCQkJCQkJCisJCQkJCQl0aGlzLm1hcmtSZWFkU3RhdHVzTWFpbC5wcml2YXRlTWVzc2FnZUlkID0gbGlzdE9iai5yZWZPYmoucHJpdmF0ZU1lc3NhZ2VJZDsKKwkJCQkJCXRoaXMubWFya1JlYWRTdGF0dXNNYWlsLmlzUmVhZCA9IHRydWU7CisJCQkJCQkKKwkJCQkJCXRoaXMudXBkYXRlUHJpdmF0ZU1lc3NhZ2VMYWJlbFRleHQodGhpcy5jb3VudFVuUmVhZC0xKTsKKwkJCQkJCQorCQkJCQkJdGhpcy5tYXJrUmVhZFN0YXR1c01haWwuZG9DYWxsKCk7CisJCQkJCX0KKwkJCQkJCisJCQkJfQorCQkJCQorCQkJCXBhcmVudC5fcHJpdmF0ZU1lc3NhZ2VEZXRhaWxzLmxvYWRNZXNzYWdlRGV0YWlscyhsaXN0T2JqLnJlZk9iaik7CisJCQkKKwkJCV1dPgorCQk8L2hhbmRsZXI+CisJCQorCQk8aGFuZGxlciBuYW1lPSJvblVwZGF0ZU9yZGVyIiBhcmdzPSJpdGVtUmVmIj4KKwkJCWlmICh0aGlzLmlzSW5ib3gpIHsKKyAgICAJCQl0aGlzLmdldEluYm94LmRvQ2FsbCgpOworICAgIAkJfSBlbHNlIGlmICh0aGlzLmlzU2VuZCkgeworICAgIAkJCXRoaXMuZ2V0U2VuZC5kb0NhbGwoKTsKKyAgICAJCX0gZWxzZSBpZiAodGhpcy5pc0ZvbGRlcikgeworICAgIAkJCXRoaXMuZ2V0Rm9sZGVyLmRvQ2FsbCgpOworICAgIAkJfSBlbHNlIGlmIChwYXJlbnQuaXNUcmFzaCkgeworICAgIAkJCXRoaXMuZ2V0VHJhc2guZG9DYWxsKCk7CisgICAgCQl9CisJCTwvaGFuZGxlcj4KKwkJCisJCTwhLS0KKwkJcHVibGljIExvbmcgbWFya1JlYWRTdGF0dXNNYWlsKFN0cmluZyBTSUQsIExvbmcgcHJpdmF0ZU1lc3NhZ2VJZCwKKwkJCUJvb2xlYW4gaXNSZWFkKQorCSAgICAgLS0+CisJICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9Im1hcmtSZWFkU3RhdHVzTWFpbCIgZnVuY25hbWU9InVzZXJzZXJ2aWNlLm1hcmtSZWFkU3RhdHVzTWFpbCIgCisJCQkJCSAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gIAorCQkJPGF0dHJpYnV0ZSBuYW1lPSJwcml2YXRlTWVzc2FnZUlkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIi8+CisJCQk8YXR0cmlidXRlIG5hbWU9ImlzUmVhZCIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIi8+ICAgICAgICAKKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBwYXJlbnQucHJpdmF0ZU1lc3NhZ2VJZDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIHBhcmVudC5pc1JlYWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJICAgIAk8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKwkgICAgCQk8IVtDREFUQVsKKwkJICAgIAkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm1hcmtSZWFkU3RhdHVzTWFpbDogIix2YWx1ZSk7CisJCSAgICAJCS8vdGhpcy5wYXJlbnQuZGVzdHJveSgpOworCSAgICAJCV1dPgorCSAgICAJPC9oYW5kbGVyPgorCSAgICA8L25ldFJlbW90ZUNhbGxIaWI+CQorCSAgICAKKwkJPCEtLQorCQlwdWJsaWMgU2VhcmNoUmVzdWx0IGdldEluYm94KFN0cmluZyBTSUQsIFN0cmluZyBzZWFyY2gsIFN0cmluZyBvcmRlckJ5LCBpbnQgc3RhcnQsIEJvb2xlYW4gYXNjLCBJbnRlZ2VyIG1heCkKKwkJIC0tPgorCSAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJnZXRJbmJveCIgZnVuY25hbWU9InVzZXJzZXJ2aWNlLmdldEluYm94IiAKKwkJCQkJICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAgICAgIAorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gY2FudmFzLnNlc3Npb25JZDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuICIiOyA8L21ldGhvZD48L25ldHBhcmFtPgorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBhcmVudC5vcmRlcmJ5OyA8L21ldGhvZD48L25ldHBhcmFtPgorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBhcmVudC5zdGFydDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIHBhcmVudC5wYXJlbnQuYXNjOyA8L21ldGhvZD48L25ldHBhcmFtPgorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBhcmVudC5zdGVwOyA8L21ldGhvZD48L25ldHBhcmFtPgorCSAgICAJPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisJICAgIAkJPCFbQ0RBVEFbCisJCSAgICAJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJnZXRJbmJveDogIix2YWx1ZSk7CisJCSAgICAJCS8vdGhpcy5wYXJlbnQuZGVzdHJveSgpOworCQkgICAgCQl0aGlzLnBhcmVudC5pbml0VmFsdWVzKHZhbHVlLnJlY29yZHMpOworCQkgICAgCQkKKwkJICAgIAkJcGFyZW50LmlzSW5ib3ggPSB0cnVlOworCQkgICAgCQlwYXJlbnQuaXNTZW5kID0gZmFsc2U7CisJCSAgICAJCXBhcmVudC5pc1RyYXNoID0gZmFsc2U7CisJCSAgICAJCXBhcmVudC5pc0ZvbGRlciA9IGZhbHNlOworCQkgICAgCQkKKwkJICAgIAkJcGFyZW50LmNvdW50VW5SZWFkID0gMDsKKwkJICAgIAkJCisJCSAgICAJCWZvciAodmFyIGs9MDtrPHZhbHVlLnJlc3VsdC5sZW5ndGg7aysrKSB7CisJCSAgICAJCQl2YWx1ZS5yZXN1bHRba10uc3RyVGltZSA9IHBhcnNlRGF0ZVRvU3RyaW5nVGltZSh2YWx1ZS5yZXN1bHRba10uaW5zZXJ0ZWQpOworCQkgICAgCQkJdmFsdWUucmVzdWx0W2tdLnVzZXJOYW1lID0gdmFsdWUucmVzdWx0W2tdLmZyb20uZmlyc3RuYW1lKycgJyt2YWx1ZS5yZXN1bHRba10uZnJvbS5sYXN0bmFtZSsnICYjNjA7Jyt2YWx1ZS5yZXN1bHRba10uZnJvbS5hZHJlc3Nlcy5lbWFpbCsnJiM2MjsnOworCQkgICAgCQkJdmFsdWUucmVzdWx0W2tdLml0ZW1TZWxlY3RlZCA9IGZhbHNlOworCQkgICAgCQkJaWYgKCF2YWx1ZS5yZXN1bHRba10uaXNSZWFkKSB7CisJCSAgICAJCQkJcGFyZW50LmNvdW50VW5SZWFkKys7CisJCSAgICAJCQl9CisJCSAgICAJCX0KKwkJICAgIAkJCisJCSAgICAJCXBhcmVudC51cGRhdGVQcml2YXRlTWVzc2FnZUxhYmVsVGV4dChwYXJlbnQuY291bnRVblJlYWQpOworCQkgICAgCQkKKwkJICAgIAkJdGhpcy5wYXJlbnQucmVuZGVyQ29udGVudCh2YWx1ZS5yZXN1bHQpOworCSAgICAJCV1dPgorCSAgICAJPC9oYW5kbGVyPgorCSAgICA8L25ldFJlbW90ZUNhbGxIaWI+CQorCSAgICAKKwkgICAgPCEtLQorCSAgICBwdWJsaWMgU2VhcmNoUmVzdWx0IGdldFNlbmQoU3RyaW5nIFNJRCwgU3RyaW5nIG9yZGVyQnksIEludGVnZXIgc3RhcnQsIEJvb2xlYW4gYXNjLCBJbnRlZ2VyIG1heCkgeworCQkgLS0+CisJICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImdldFNlbmQiIGZ1bmNuYW1lPSJ1c2Vyc2VydmljZS5nZXRTZW5kIiAKKwkJCQkJICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAgICAgIAorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gY2FudmFzLnNlc3Npb25JZDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuICIiOyA8L21ldGhvZD48L25ldHBhcmFtPgorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBhcmVudC5vcmRlcmJ5OyA8L21ldGhvZD48L25ldHBhcmFtPgorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBhcmVudC5zdGFydDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIHBhcmVudC5wYXJlbnQuYXNjOyA8L21ldGhvZD48L25ldHBhcmFtPgorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBhcmVudC5zdGVwOyA8L21ldGhvZD48L25ldHBhcmFtPgorCSAgICAJPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisJICAgIAkJPCFbQ0RBVEFbCisJCSAgICAJCS8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInNlYXJjaFVzZXJQcm9maWxlOiAiLHZhbHVlKTsKKwkJICAgIAkJLy90aGlzLnBhcmVudC5kZXN0cm95KCk7CisJCSAgICAJCXRoaXMucGFyZW50LmluaXRWYWx1ZXModmFsdWUucmVjb3Jkcyk7CisJCSAgICAJCQorCQkgICAgCQlwYXJlbnQuaXNJbmJveCA9IGZhbHNlOworCQkgICAgCQlwYXJlbnQuaXNTZW5kID0gdHJ1ZTsKKwkJICAgIAkJcGFyZW50LmlzVHJhc2ggPSBmYWxzZTsKKwkJICAgIAkJcGFyZW50LmlzRm9sZGVyID0gZmFsc2U7CisJCSAgICAJCQorCQkgICAgCQlmb3IgKHZhciBrPTA7azx2YWx1ZS5yZXN1bHQubGVuZ3RoO2srKykgeworCQkgICAgCQkJdmFsdWUucmVzdWx0W2tdLnN0clRpbWUgPSBwYXJzZURhdGVUb1N0cmluZ1RpbWUodmFsdWUucmVzdWx0W2tdLmluc2VydGVkKTsKKwkJICAgIAkJCXZhbHVlLnJlc3VsdFtrXS51c2VyTmFtZSA9IHZhbHVlLnJlc3VsdFtrXS50by5maXJzdG5hbWUrJyAnK3ZhbHVlLnJlc3VsdFtrXS50by5sYXN0bmFtZSsnICYjNjA7Jyt2YWx1ZS5yZXN1bHRba10udG8uYWRyZXNzZXMuZW1haWwrJyYjNjI7JzsKKwkJICAgIAkJCXZhbHVlLnJlc3VsdFtrXS5pdGVtU2VsZWN0ZWQgPSBmYWxzZTsKKwkJICAgIAkJfQorCQkgICAgCQkKKwkJICAgIAkJcGFyZW50LnBhcmVudC5fbGFiZWxQcml2YXRlTWVzc2FnZXMuc2V0QXR0cmlidXRlKCJ0ZXh0IixjYW52YXMuZ2V0TGFiZWxOYW1lKHRoaXMucGFyZW50LnBhcmVudC5fbGFiZWxQcml2YXRlTWVzc2FnZXMubGFiZWxpZCkpOworCQkgICAgCQkKKwkJICAgIAkJdGhpcy5wYXJlbnQucmVuZGVyQ29udGVudCh2YWx1ZS5yZXN1bHQpOworCSAgICAJCV1dPgorCSAgICAJPC9oYW5kbGVyPgorCSAgICA8L25ldFJlbW90ZUNhbGxIaWI+CQorCSAgICAKKwkgICAgPCEtLQorCSAgICBwdWJsaWMgU2VhcmNoUmVzdWx0IGdldFRyYXNoKFN0cmluZyBTSUQsIFN0cmluZyBzZWFyY2gsIFN0cmluZyBvcmRlckJ5LCBJbnRlZ2VyIHN0YXJ0LCBCb29sZWFuIGFzYywgSW50ZWdlciBtYXgpCisJICAgICAtLT4KKwkgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iZ2V0VHJhc2giIGZ1bmNuYW1lPSJ1c2Vyc2VydmljZS5nZXRUcmFzaCIgCisJCQkJCSAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gICAgICAKKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiAiIjsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIHBhcmVudC5wYXJlbnQub3JkZXJieTsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIHBhcmVudC5wYXJlbnQuc3RhcnQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBwYXJlbnQucGFyZW50LmFzYzsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIHBhcmVudC5wYXJlbnQuc3RlcDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkgICAgCTxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorCSAgICAJCTwhW0NEQVRBWworCQkgICAgCQkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJzZWFyY2hVc2VyUHJvZmlsZTogIix2YWx1ZSk7CisJCSAgICAJCS8vdGhpcy5wYXJlbnQuZGVzdHJveSgpOworCQkgICAgCQl0aGlzLnBhcmVudC5pbml0VmFsdWVzKHZhbHVlLnJlY29yZHMpOworCQkgICAgCQkKKwkJICAgIAkJcGFyZW50LmlzSW5ib3ggPSBmYWxzZTsKKwkJICAgIAkJcGFyZW50LmlzU2VuZCA9IGZhbHNlOworCQkgICAgCQlwYXJlbnQuaXNUcmFzaCA9IHRydWU7CisJCSAgICAJCXBhcmVudC5pc0ZvbGRlciA9IGZhbHNlOworCQkgICAgCQkKKwkJICAgIAkJZm9yICh2YXIgaz0wO2s8dmFsdWUucmVzdWx0Lmxlbmd0aDtrKyspIHsKKwkJICAgIAkJCXZhbHVlLnJlc3VsdFtrXS5zdHJUaW1lID0gcGFyc2VEYXRlVG9TdHJpbmdUaW1lKHZhbHVlLnJlc3VsdFtrXS5pbnNlcnRlZCk7CisJCSAgICAJCQl2YWx1ZS5yZXN1bHRba10udXNlck5hbWUgPSB2YWx1ZS5yZXN1bHRba10udG8uZmlyc3RuYW1lKycgJyt2YWx1ZS5yZXN1bHRba10udG8ubGFzdG5hbWUrJyAmIzYwOycrdmFsdWUucmVzdWx0W2tdLnRvLmFkcmVzc2VzLmVtYWlsKycmIzYyOyc7CisJCSAgICAJCQl2YWx1ZS5yZXN1bHRba10uaXRlbVNlbGVjdGVkID0gZmFsc2U7CisJCSAgICAJCX0KKwkJICAgIAkJCisJCSAgICAJCXBhcmVudC5wYXJlbnQuX2xhYmVsUHJpdmF0ZU1lc3NhZ2VzLnNldEF0dHJpYnV0ZSgidGV4dCIsY2FudmFzLmdldExhYmVsTmFtZSh0aGlzLnBhcmVudC5wYXJlbnQuX2xhYmVsUHJpdmF0ZU1lc3NhZ2VzLmxhYmVsaWQpKTsKKwkJICAgIAkJCisJCSAgICAJCXRoaXMucGFyZW50LnJlbmRlckNvbnRlbnQodmFsdWUucmVzdWx0KTsKKwkgICAgCQldXT4KKwkgICAgCTwvaGFuZGxlcj4KKwkgICAgPC9uZXRSZW1vdGVDYWxsSGliPgkKKwkgICAgCisJICAgIAorCSAgICA8IS0tCisJICAgIHB1YmxpYyBTZWFyY2hSZXN1bHQgZ2V0Rm9sZGVyKFN0cmluZyBTSUQsIExvbmcgcHJpdmF0ZU1lc3NhZ2VGb2xkZXJJZCwgU3RyaW5nIHNlYXJjaCwgU3RyaW5nIG9yZGVyQnksIAorCQkJSW50ZWdlciBzdGFydCwgQm9vbGVhbiBhc2MsIEludGVnZXIgbWF4KQorCSAgICAgLS0+CisJICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImdldEZvbGRlciIgZnVuY25hbWU9InVzZXJzZXJ2aWNlLmdldEZvbGRlciIgCisJCQkJCSAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gICAgICAKKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBwYXJlbnQucGFyZW50LnByaXZhdGVNZXNzYWdlRm9sZGVySWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiAiIjsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIHBhcmVudC5wYXJlbnQub3JkZXJieTsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIHBhcmVudC5wYXJlbnQuc3RhcnQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBwYXJlbnQucGFyZW50LmFzYzsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIHBhcmVudC5wYXJlbnQuc3RlcDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkgICAgCTxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorCSAgICAJCTwhW0NEQVRBWworCQkgICAgCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZ2V0Rm9sZGVyOiAiLHZhbHVlKTsKKwkJICAgIAkJLy90aGlzLnBhcmVudC5kZXN0cm95KCk7CisJCSAgICAJCXRoaXMucGFyZW50LmluaXRWYWx1ZXModmFsdWUucmVjb3Jkcyk7CisJCSAgICAJCQorCQkgICAgCQlwYXJlbnQuaXNJbmJveCA9IGZhbHNlOworCQkgICAgCQlwYXJlbnQuaXNTZW5kID0gZmFsc2U7CisJCSAgICAJCXBhcmVudC5pc1RyYXNoID0gZmFsc2U7CisJCSAgICAJCXBhcmVudC5pc0ZvbGRlciA9IHRydWU7CisJCSAgICAJCQorCQkgICAgCQlmb3IgKHZhciBrPTA7azx2YWx1ZS5yZXN1bHQubGVuZ3RoO2srKykgeworCQkgICAgCQkJdmFsdWUucmVzdWx0W2tdLnN0clRpbWUgPSBwYXJzZURhdGVUb1N0cmluZ1RpbWUodmFsdWUucmVzdWx0W2tdLmluc2VydGVkKTsKKwkJICAgIAkJCXZhbHVlLnJlc3VsdFtrXS51c2VyTmFtZSA9IHZhbHVlLnJlc3VsdFtrXS50by5maXJzdG5hbWUrJyAnK3ZhbHVlLnJlc3VsdFtrXS50by5sYXN0bmFtZSsnICYjNjA7Jyt2YWx1ZS5yZXN1bHRba10udG8uYWRyZXNzZXMuZW1haWwrJyYjNjI7JzsKKwkJICAgIAkJCXZhbHVlLnJlc3VsdFtrXS5pdGVtU2VsZWN0ZWQgPSBmYWxzZTsKKwkJICAgIAkJfQorCQkgICAgCQkKKwkJICAgIAkJcGFyZW50LnBhcmVudC5fbGFiZWxQcml2YXRlTWVzc2FnZXMuc2V0QXR0cmlidXRlKCJ0ZXh0IixjYW52YXMuZ2V0TGFiZWxOYW1lKHRoaXMucGFyZW50LnBhcmVudC5fbGFiZWxQcml2YXRlTWVzc2FnZXMubGFiZWxpZCkpOworCQkgICAgCQkKKwkJICAgIAkJdGhpcy5wYXJlbnQucmVuZGVyQ29udGVudCh2YWx1ZS5yZXN1bHQpOworCSAgICAJCV1dPgorCSAgICAJPC9oYW5kbGVyPgorCSAgICA8L25ldFJlbW90ZUNhbGxIaWI+CQorCSAgICAKKwkgICAgPCEtLQorCQkgICAgZnJvbSIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIi8+CisJCQk8YXR0cmlidXRlIG5hbWU9InN1YmplY3QiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIvPgorCQkJPGF0dHJpYnV0ZSBuYW1lPSJzdHJUaW1lCisJICAgICAtLT4JCisJICAgIAorCSAgICA8bWV0aG9kIG5hbWU9InJlbmRlckNvbnRlbnQiIGFyZ3M9InJMaXN0Ij4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgCisgICAgICAgICAgICAJdGhpcy5fc2VsZWN0ZWRSZWZPYmogPSBuZXcgQXJyYXkoKTsKKwkgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZCA9IG5ldyBBcnJheSgpOworCSAgICAgICAgICAgIAorICAgICAgICAgICAgCWlmICh0aGlzLmlzVHJhc2gpIHsKKyAgICAgICAgICAgIAkJcGFyZW50Ll9hY3Rpb25CdXR0b25zLl9tb3ZlVG9UcmFzaC5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKyAgICAgICAgICAgIAkJcGFyZW50Ll9hY3Rpb25CdXR0b25zLl9tb3ZlVG9JbmJveC5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgICAgICAJCXBhcmVudC5fYWN0aW9uQnV0dG9ucy5fcmVhZC5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKyAgICAgICAgICAgIAkJcGFyZW50Ll9hY3Rpb25CdXR0b25zLl91bnJlYWQuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgICAgICAgICAJCXBhcmVudC5fYWN0aW9uQnV0dG9ucy5fZmluYWxEZWxldGUuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgICAgICAgICAgCX0gZWxzZSBpZiAodGhpcy5pc0ZvbGRlcikgeworICAgICAgICAgICAgICAgICAgICBwYXJlbnQuX2FjdGlvbkJ1dHRvbnMuX21vdmVUb1RyYXNoLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50Ll9hY3Rpb25CdXR0b25zLl9tb3ZlVG9JbmJveC5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgICAgICAgICAgICAgIHBhcmVudC5fYWN0aW9uQnV0dG9ucy5fcmVhZC5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgICAgICAgICAgICAgIHBhcmVudC5fYWN0aW9uQnV0dG9ucy5fdW5yZWFkLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50Ll9hY3Rpb25CdXR0b25zLl9maW5hbERlbGV0ZS5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBwYXJlbnQuX2FjdGlvbkJ1dHRvbnMuX21vdmVUb1RyYXNoLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50Ll9hY3Rpb25CdXR0b25zLl9tb3ZlVG9JbmJveC5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50Ll9hY3Rpb25CdXR0b25zLl9yZWFkLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50Ll9hY3Rpb25CdXR0b25zLl91bnJlYWQuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgICAgICAgICAgICAgICAgICBwYXJlbnQuX2FjdGlvbkJ1dHRvbnMuX2ZpbmFsRGVsZXRlLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgCXRoaXMucmVuZGVyTGlzdCA9IHJMaXN0OworICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgdGhpcy5pc0xvYWRlZCA9IHRydWU7CisgICAgICAgICAgICAgICAgdmFyIGxpc3QgPSB0aGlzLl9pbm5lcmxpc3QuX2lubi5faW5uOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlbmRlckxpc3QgPT0gbnVsbCkgeworICAgICAgICAgICAgICAgIAl0aGlzLnJlbmRlckxpc3QgPSBuZXcgQXJyYXkoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLy90aGlzLnJlbmRlckxpc3QgPSByZWNvcmRzOworICAgICAgICAgICAgICAgIHZhciByZWNvcmRzID0gdGhpcy5yZW5kZXJMaXN0OworICAgICAgICAgICAgICAgIHRoaXMuX2lubmVybGlzdC5faW5uLnNldEF0dHJpYnV0ZSgieSIsMCk7CisgICAgICAgICAgICAgICAgdGhpcy5faW5uZXJsaXN0Ll9pbm4uX2lubi5zZXRBdHRyaWJ1dGUoImhlaWdodCIscmVjb3Jkcy5sZW5ndGgqdGhpcy5pdGVtSGVpZ2h0KTsKKyAgICAgICAgICAgICAgICB0aGlzLl9pbm5lcmxpc3QuX2lubi5yZXNldEl0ZW1zKCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIjo6IHJlbmRlckNvbnRlbnQgOjoiLHRoaXMucmVuZGVyTGlzdC5sZW5ndGgsbGlzdC5zdWJ2aWV3cy5sZW5ndGgpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vdGhpcy5fcmVjb3Jkcy5zZXRBdHRyaWJ1dGUoInRleHQiLHJlY29yZHMubGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTxsaXN0LnN1YnZpZXdzLmxlbmd0aDtpKyspeworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLy9pZiAoaSAlIDIgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAvLyAgICBsaXN0LnN1YnZpZXdzW2ldLnNldElzU2Vjb25kKHRydWUpOworICAgICAgICAgICAgICAgICAgICAvL30gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vICAgIGxpc3Quc3Vidmlld3NbaV0uc2V0SXNTZWNvbmQoZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAvL30KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmIChyZWNvcmRzLmxlbmd0aCA+IGkpIHsKKyAgICAgICAgICAgICAgICAgICAgCQorICAgICAgICAgICAgICAgICAgICAJLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiUmVuZGVyIEl0ZW0gIixyZWNvcmRzW2ldKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5zdWJ2aWV3c1tpXS5zZXRBdHRyaWJ1dGUoImNsaWNrYWJsZSIsdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnN1YnZpZXdzW2ldLnJlZk9iaiA9IHJlY29yZHNbaV07CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWNvcmRzW2ldWyJpc3NlbGVjdGVkIl0gJiYgcmVjb3Jkc1tpXS5pc3NlbGVjdGVkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5zdWJ2aWV3c1tpXS5pc3NlbGVjdGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5zdWJ2aWV3c1tpXS5pc3NlbGVjdGVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Quc3Vidmlld3NbaV0uc2V0QXR0cmlidXRlKCJmcm9tIixyZWNvcmRzW2ldLnVzZXJOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Quc3Vidmlld3NbaV0uc2V0QXR0cmlidXRlKCJzdWJqZWN0IixyZWNvcmRzW2ldLnN1YmplY3QpOworICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5zdWJ2aWV3c1tpXS5zZXRBdHRyaWJ1dGUoInN0clRpbWUiLHJlY29yZHNbaV0uc3RyVGltZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnN1YnZpZXdzW2ldLnNldEF0dHJpYnV0ZSgiaXRlbVNlbGVjdGVkIixyZWNvcmRzW2ldLml0ZW1TZWxlY3RlZCk7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzSW5ib3gpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIAlsaXN0LnN1YnZpZXdzW2ldLnNldEF0dHJpYnV0ZSgiaXNSZWFkIixyZWNvcmRzW2ldLmlzUmVhZCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgCWxpc3Quc3Vidmlld3NbaV0uc2V0QXR0cmlidXRlKCJpc1JlYWQiLHRydWUpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnN1YnZpZXdzW2ldLnNldEF0dHJpYnV0ZSgiaXRlbUlkIixpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnN1YnZpZXdzW2ldLnJlZk9iaiA9IG51bGw7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Quc3Vidmlld3NbaV0uaXNzZWxlY3RlZCA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5zdWJ2aWV3c1tpXS5vbm1vdXNlb3V0LnNlbmRFdmVudCgpOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnN1YnZpZXdzW2ldLnNldEF0dHJpYnV0ZSgiZnJvbSIsJycpOworICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5zdWJ2aWV3c1tpXS5zZXRBdHRyaWJ1dGUoInN1YmplY3QiLCcnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Quc3Vidmlld3NbaV0uc2V0QXR0cmlidXRlKCJzdHJUaW1lIiwnJyk7CisgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnN1YnZpZXdzW2ldLnNldEF0dHJpYnV0ZSgiaXRlbVNlbGVjdGVkIixmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Quc3Vidmlld3NbaV0uc2V0QXR0cmlidXRlKCJpdGVtSWQiLCIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5zdWJ2aWV3c1tpXS5zZXRBdHRyaWJ1dGUoImNsaWNrYWJsZSIsZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGxpc3Quc3Vidmlld3NbaV0ub25tb3VzZW91dC5zZW5kRXZlbnQoKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHRoaXMuc2VuZEluaXRpYWxXaWR0aFVwZGF0ZSgpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgXV0+CisgICAgICAgIDwvbWV0aG9kPiAgIAorCSAgICAgICAgCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uU2Nyb2xsSXRlbSIgYXJncz0iaXRlbSI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5yZW5kZXJMaXN0Lmxlbmd0aCA+IGl0ZW0uaXRlbUlkKSB7CisgICAgICAgICAgICAgICAgICAgIGl0ZW0uc2V0QXR0cmlidXRlKCJjbGlja2FibGUiLHRydWUpOworICAgICAgICAgICAgICAgICAgICBpdGVtLnJlZk9iaiA9IHRoaXMucmVuZGVyTGlzdFtpdGVtLml0ZW1JZF07CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAvL2lmIChpdGVtLml0ZW1JZCAlIDIgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAvLyAgICBpdGVtLnNldElzU2Vjb25kKHRydWUpOworICAgICAgICAgICAgICAgICAgICAvL30gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIC8vICAgIGl0ZW0uc2V0SXNTZWNvbmQoZmFsc2UpOworICAgICAgICAgICAgICAgICAgICAvL30KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlbmRlckxpc3RbaXRlbS5pdGVtSWRdWyJpc3NlbGVjdGVkIl0gJiYgdGhpcy5yZW5kZXJMaXN0W2l0ZW0uaXRlbUlkXS5pc3NlbGVjdGVkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJpdGVtLmlzc2VsZWN0ZWQgIixpdGVtLml0ZW1JZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmlzc2VsZWN0ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5vbm1vdXNlb3V0LnNlbmRFdmVudCgpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAJLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiaXRlbSBOT1QgLmlzc2VsZWN0ZWQgIixpdGVtLml0ZW1JZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmlzc2VsZWN0ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ub25tb3VzZW91dC5zZW5kRXZlbnQoKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZShpdGVtLml0ZW1JZCk7CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpdGVtLnNldEF0dHJpYnV0ZSgiZnJvbSIsdGhpcy5yZW5kZXJMaXN0W2l0ZW0uaXRlbUlkXS51c2VyTmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGl0ZW0uc2V0QXR0cmlidXRlKCJzdWJqZWN0Iix0aGlzLnJlbmRlckxpc3RbaXRlbS5pdGVtSWRdLnN1YmplY3QpOworICAgICAgICAgICAgICAgICAgICBpdGVtLnNldEF0dHJpYnV0ZSgic3RyVGltZSIsdGhpcy5yZW5kZXJMaXN0W2l0ZW0uaXRlbUlkXS5zdHJUaW1lKTsKKyAgICAgICAgICAgICAgICAgICAgaXRlbS5zZXRBdHRyaWJ1dGUoIml0ZW1TZWxlY3RlZCIsdGhpcy5yZW5kZXJMaXN0W2l0ZW0uaXRlbUlkXS5pdGVtU2VsZWN0ZWQpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNJbmJveCkgeworICAgICAgICAgICAgICAgICAgICAJaXRlbS5zZXRBdHRyaWJ1dGUoImlzUmVhZCIsdGhpcy5yZW5kZXJMaXN0W2l0ZW0uaXRlbUlkXS5pc1JlYWQpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAJaXRlbS5zdWJ2aWV3c1tpXS5zZXRBdHRyaWJ1dGUoImlzUmVhZCIsdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGl0ZW0uc2V0QXR0cmlidXRlKCJpdGVtSWQiLGl0ZW0uaXRlbUlkKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIC8vaWYgKGl0ZW0uaXRlbUlkICUgMiA9PSAwKSB7CisgICAgICAgICAgICAgICAgICAgIC8vICAgIGl0ZW0uc2V0SXNTZWNvbmQodHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIC8vfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gICAgaXRlbS5zZXRJc1NlY29uZChmYWxzZSk7CisgICAgICAgICAgICAgICAgICAgIC8vfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaXRlbS5pc3NlbGVjdGVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIGl0ZW0ub25tb3VzZW91dC5zZW5kRXZlbnQoKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGl0ZW0ucmVmT2JqID0gbnVsbDsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGl0ZW0uc2V0QXR0cmlidXRlKCJmcm9tIiwiIik7CisgICAgICAgICAgICAgICAgICAgIGl0ZW0uc2V0QXR0cmlidXRlKCJzdWJqZWN0IiwiIik7CisgICAgICAgICAgICAgICAgICAgIGl0ZW0uc2V0QXR0cmlidXRlKCJzdHJUaW1lIiwiIik7CisgICAgICAgICAgICAgICAgICAgIGl0ZW0uc2V0QXR0cmlidXRlKCJpdGVtU2VsZWN0ZWQiLGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGl0ZW0uc2V0QXR0cmlidXRlKCJpdGVtSWQiLCIiKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIGl0ZW0uc2V0QXR0cmlidXRlKCJjbGlja2FibGUiLGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAKKwkJCQorCTwvdHVybk92ZXJMaXN0T3JkZXJlZFBhZ2VkPgorCQorCTx2aWV3IG5hbWU9Il9hY3Rpb25CdXR0b25zIiB5PSIyNzQiIHg9IjE1OCIgbGF5b3V0PSJheGlzOng7c3BhY2luZzoyIj4KKwkJPHZpZXcgcmVzb3VyY2U9InByaXZhdGVfbWVzc2FnZV9zZWxlY3RfcGFydF9yc2MiPjwvdmlldz4KKwkJCisJCTxyZXNldENvbWJvYm94IG5hbWU9Il9hY3Rpb24iIHdpZHRoPSI5MCIgCisJCQkJCSAgIGVkaXRhYmxlPSJmYWxzZSIgZm9udHNpemU9IjEwIiBoZWlnaHQ9IjIwIiA+CisgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9InNlbmRFdmVudFRvUmVsb2FkIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgICAgICAgICAgICAgIHRoaXMuYWRkSXRlbShjYW52YXMuZ2V0TGFiZWxOYW1lKDEyNTIpLCIwIik7Ly9BY3Rpb25zIC4uLgorICAgICAgICAgICAgICAgIHRoaXMuYWRkSXRlbShjYW52YXMuZ2V0TGFiZWxOYW1lKDEyMzkpLCIxIik7Ly9TZWxlY3QgQWxsIAorICAgICAgICAgICAgICAgIHRoaXMuYWRkSXRlbShjYW52YXMuZ2V0TGFiZWxOYW1lKDEyNDApLCIyIik7Ly9TZWxlY3QgTm9uZQorICAgICAgICAgICAgICAgIHRoaXMuYWRkSXRlbShjYW52YXMuZ2V0TGFiZWxOYW1lKDEyNDEpLCIzIik7Ly9TZWxlY3QgVW5yZWFkCisgICAgICAgICAgICAgICAgdGhpcy5hZGRJdGVtKGNhbnZhcy5nZXRMYWJlbE5hbWUoMTI0MiksIjQiKTsvL1NlbGVjdCBSZWFkCisgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJdGVtQXQoMCk7CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbnNlbGVjdCIgYXJncz0ic2VsIj4KKyAgICAgICAgICAgICAgICBpZiAoc2VsLnZhbHVlID09ICIxIikgeworICAgICAgICAgICAgICAgIAlwYXJlbnQucGFyZW50Ll90YWJsZS5zZWxlY3RBbGwoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHNlbC52YWx1ZSA9PSAiMiIpIHsKKyAgICAgICAgICAgICAgICAJcGFyZW50LnBhcmVudC5fdGFibGUuZGVzZWxlY3RBbGwoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHNlbC52YWx1ZSA9PSAiMyIpIHsKKyAgICAgICAgICAgICAgICAJcGFyZW50LnBhcmVudC5fdGFibGUuc2VsZWN0VW5yZWFkKCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChzZWwudmFsdWUgPT0gIjQiKSB7CisgICAgICAgICAgICAgICAgCXBhcmVudC5wYXJlbnQuX3RhYmxlLnNlbGVjdFJlYWQoKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDwvcmVzZXRDb21ib2JveD4KKyAgICAgICAgCisgICAgICAgIDxzaW1wbGVMYWJlbEJ1dHRvbiBuYW1lPSJfbW92ZVRvVHJhc2giIGxhYmVsaWQ9IjEyNDUiIGZvbnRzdHlsZT0icGxhaW4iIHdpZHRoPSI4MCIgaGVpZ2h0PSIyMSI+CisgICAgICAgIAk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgCQlwYXJlbnQucGFyZW50Ll90YWJsZS5tb3ZlVG9UcmFzaCh0cnVlKTsKKyAgICAgICAgCTwvaGFuZGxlcj4KKyAgICAgICAgCTxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iMTI0NiIgLz4KKyAgICAgICAgPC9zaW1wbGVMYWJlbEJ1dHRvbj4KKyAgICAgICAgCisgICAgICAgIDxzaW1wbGVMYWJlbEJ1dHRvbiBuYW1lPSJfcmVhZCIgbGFiZWxpZD0iMTI0OCIgZm9udHN0eWxlPSJwbGFpbiIgd2lkdGg9IjgwIiBoZWlnaHQ9IjIxIj4KKyAgICAgICAgCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAJCXBhcmVudC5wYXJlbnQuX3RhYmxlLm1hcmtUb1JlYWQodHJ1ZSk7CisgICAgICAgIAk8L2hhbmRsZXI+CisgICAgICAgIDwvc2ltcGxlTGFiZWxCdXR0b24+CisgICAgICAgIAorICAgICAgICA8c2ltcGxlTGFiZWxCdXR0b24gbmFtZT0iX3VucmVhZCIgbGFiZWxpZD0iMTI0NyIgZm9udHN0eWxlPSJwbGFpbiIgd2lkdGg9IjgwIiBoZWlnaHQ9IjIxIj4KKyAgICAgICAgCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAJCXBhcmVudC5wYXJlbnQuX3RhYmxlLm1hcmtUb1JlYWQoZmFsc2UpOworICAgICAgICAJPC9oYW5kbGVyPgorICAgICAgICA8L3NpbXBsZUxhYmVsQnV0dG9uPgorICAgICAgICAKKyAgICAgICAgPHNpbXBsZUxhYmVsQnV0dG9uIG5hbWU9Il9tb3ZlVG9JbmJveCIgbGFiZWxpZD0iMTI1NSIgdmlzaWJpbGl0eT0iaGlkZGVuIgorICAgICAgICAJCQkJICAgZm9udHN0eWxlPSJwbGFpbiIgd2lkdGg9IjEyMCIgaGVpZ2h0PSIyMSI+CisgICAgICAgIAk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgCQlwYXJlbnQucGFyZW50Ll90YWJsZS5tb3ZlVG9UcmFzaChmYWxzZSk7CisgICAgICAgIAk8L2hhbmRsZXI+CisgICAgICAgIDwvc2ltcGxlTGFiZWxCdXR0b24+CisgICAgICAgIAorICAgICAgICA8c2ltcGxlTGFiZWxCdXR0b24gbmFtZT0iX2ZpbmFsRGVsZXRlIiBsYWJlbGlkPSIxMjU2IiB2aXNpYmlsaXR5PSJoaWRkZW4iCisgICAgICAgIAkJCQkgICBmb250c3R5bGU9InBsYWluIiB3aWR0aD0iMTIwIiBoZWlnaHQ9IjIxIj4KKyAgICAgICAgCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAJCXBhcmVudC5wYXJlbnQuX3RhYmxlLmZpbmFsRGVsZXRlKCk7CisgICAgICAgIAk8L2hhbmRsZXI+CisgICAgICAgIAk8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IjEyNTciIC8+CisgICAgICAgIDwvc2ltcGxlTGFiZWxCdXR0b24+CisgICAgICAgIAorICAgICAgICA8cmVzZXRDb21ib2JveCBuYW1lPSJfbW92ZSIgd2lkdGg9IjEyMCIgeD0iNDIiCisJCQkJCSAgIGVkaXRhYmxlPSJmYWxzZSIgZm9udHNpemU9IjEwIiBoZWlnaHQ9IjIwIiA+CisgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9InNlbmRFdmVudFRvUmVsb2FkIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgICAgICAgICA8bWV0aG9kIG5hbWU9ImluaXRJdGVtcyIgYXJncz0idExpc3QiPgorICAgICAgICAgICAgCTwhW0NEQVRBWworCSAgICAgICAgICAgIAl0aGlzLnJlc2V0KCk7CisJICAgICAgICAgICAgCQorCSAgICAgICAgICAgIAl0aGlzLmFkZEl0ZW0oY2FudmFzLmdldExhYmVsTmFtZSgxMjQzKSwiMCIpOy8vTW92ZSB0byBmb2xkZXIgLi4uCisJICAgICAgICAgICAgCQorCSAgICAgICAgICAgIAlmb3IgKHZhciBpPTA7aTx0TGlzdC5sZW5ndGg7aSsrKSB7CisJICAgICAgICAgICAgCQkKKwkgICAgICAgICAgICAJCXRoaXMuYWRkSXRlbSh0TGlzdFtpXS5mb2xkZXJOYW1lLHRMaXN0W2ldLnByaXZhdGVNZXNzYWdlRm9sZGVySWQpOworCSAgICAgICAgICAgIAkJCisJICAgICAgICAgICAgCX0KKwkgICAgICAgICAgICAJCisJICAgICAgICAgICAgCXRoaXMuYWRkSXRlbShjYW52YXMuZ2V0TGFiZWxOYW1lKDEyNDQpLCItMSIpOy8vQ3JlYXRlIEZvbGRlciAuLi4KKwkgICAgICAgICAgICAJdGhpcy5zZWxlY3RJdGVtQXQoMCk7CisgICAgICAgICAgICAJXV0+CisgICAgICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgICAgICAgICAgLy90aGlzLmFkZEl0ZW0oY2FudmFzLmdldExhYmVsTmFtZSgxMjQzKSwiMCIpOy8vTW92ZSB0byBmb2xkZXIgLi4uCisgICAgICAgICAgICAgICAgLy90aGlzLmFkZEl0ZW0oY2FudmFzLmdldExhYmVsTmFtZSgxMjQ0KSwiLTEiKTsvL0NyZWF0ZSBGb2xkZXIgLi4uCisgICAgICAgICAgICAgICAgLy90aGlzLnNlbGVjdEl0ZW1BdCgwKTsKKyAgICAgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uc2VsZWN0IiBhcmdzPSJzZWwiPgorICAgICAgICAgICAgCTwhW0NEQVRBWworICAgICAgICAgICAgCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib25zZWxlY3QgOjogIixzZWwudmFsdWUpOworCSAgICAgICAgICAgICAgICBpZiAoc2VsLnZhbHVlID09ICItMSIpIHsKKwkgICAgICAgICAgICAgICAgCS8vSW5pdCBBZGQgRm9sZGVyIERpYWxvZworCSAgICAgICAgICAgICAgICAJcGFyZW50LnBhcmVudC5fQnV0dG9ucy5fYWRkRm9sZGVyLm9uY2xpY2suc2VuZEV2ZW50KG51bGwpOworCSAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKE51bWJlcihzZWwudmFsdWUpID4gMCkgeworCSAgICAgICAgICAgICAgICAJcGFyZW50LnBhcmVudC5fdGFibGUubW92ZVRvRm9sZGVyQnlJZChOdW1iZXIoc2VsLnZhbHVlKSk7CisJICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBdXT4KKyAgICAgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPC9yZXNldENvbWJvYm94PgorCTwvdmlldz4KKwkKKwk8dmlldyBuYW1lPSJfcHJpdmF0ZU1lc3NhZ2VEZXRhaWxzIiB4PSIxNTUiIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoLTE1NSB9IiB5PSIyOTYiIAorCQkgIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodCAtIDI5OCB9IiBjbGlwPSJ0cnVlIj4KKwkJCisJCTxhdHRyaWJ1dGUgbmFtZT0icGVuZGluZ1VzZXJTdGF0dXNSZWYiIHZhbHVlPSJudWxsIi8+CisJCTxhdHRyaWJ1dGUgbmFtZT0icm9vbU9iamVjdFJlZiIgdmFsdWU9Im51bGwiLz4KKwkJCisJCTxhdHRyaWJ1dGUgbmFtZT0ic2VuZGVydXNlcklkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorCQkKKwkJPG1ldGhvZCBuYW1lPSJsb2FkTWVzc2FnZURldGFpbHMiIGFyZ3M9InJlZk9iaiI+CisJCQk8IVtDREFUQVsKKwkJCQorCQkJICAgIHRoaXMuc2VuZGVydXNlcklkID0gcmVmT2JqLmZyb20udXNlcl9pZDsKKwkJCSAgICAKKwkJCSAgICB0aGlzLl9hbnN3ZXJfYXJlYS5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisJCQkKKwkJCQl0aGlzLmZyb20uc2V0QXR0cmlidXRlKCJ0ZXh0IixyZWZPYmouZnJvbS5maXJzdG5hbWUrJyAnK3JlZk9iai5mcm9tLmxhc3RuYW1lKycgJiM2MDsnK3JlZk9iai5mcm9tLmFkcmVzc2VzLmVtYWlsKycmIzYyOycpOworCQkJCWlmIChyZWZPYmoudG8gIT0gbnVsbCkgeworCQkJCQl0aGlzLnRvLnNldEF0dHJpYnV0ZSgidGV4dCIscmVmT2JqLnRvLmZpcnN0bmFtZSsnICcrcmVmT2JqLnRvLmxhc3RuYW1lKycgJiM2MDsnK3JlZk9iai50by5hZHJlc3Nlcy5lbWFpbCsnJiM2MjsnKTsKKwkJCQl9IGVsc2UgeworCQkJCQl0aGlzLnRvLnNldEF0dHJpYnV0ZSgidGV4dCIsIiIpOworCQkJCX0KKwkJCQkKKwkJCQl0aGlzLnN1YmplY3Quc2V0QXR0cmlidXRlKCJ0ZXh0IixyZWZPYmouc3ViamVjdCk7CisJCQkJCisJCQkJdGhpcy5tZXNzYWdlLm1lc3NhZ2Uuc2V0QXR0cmlidXRlKCJ0ZXh0IixyZWZPYmoubWVzc2FnZSk7CisJCQkJCisJCQkJaWYgKHRoaXMucGVuZGluZ1VzZXJTdGF0dXNSZWYgIT0gbnVsbCkgeworCQkJCQl0aGlzLnBlbmRpbmdVc2VyU3RhdHVzUmVmLmRlc3Ryb3koKTsKKwkJCQl9CisJCQkJCisJCQkJaWYgKHJlZk9iai5pc0NvbnRhY3RSZXF1ZXN0KSB7CisJCQkJCXRoaXMuY2hlY2tQZW5kaW5nU3RhdHVzLnVzZXJDb250YWN0SWQgPSByZWZPYmoudXNlckNvbnRhY3RJZDsKKwkJCQkJdGhpcy5jaGVja1BlbmRpbmdTdGF0dXMuZG9DYWxsKCk7CisJCQkJfQorCQkJCQorCQkJCWlmICh0aGlzLnJvb21PYmplY3RSZWYgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICB0aGlzLnJvb21PYmplY3RSZWYuZGVzdHJveSgpOworICAgICAgICAgICAgICAgIH0KKwkJCQkKKwkJCQlpZiAocmVmT2JqLnJvb20gIT0gbnVsbCkgeworCQkJCSAgICAKKwkJCQkgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImxvYWRNZXNzYWdlRGV0YWlscyA6OiAiLHJlZk9iai5yb29tKTsKKwkJCQkgICAgCisJCQkJICAgIHRoaXMucm9vbU9iamVjdFJlZiA9IG5ldyBsei5yb29tQWNjZXNzTWVzc2FnZSh0aGlzLHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAJCQkJICAgICAgICByb29tc19pZDpyZWZPYmoucm9vbS5yb29tc19pZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIAkJCQkgICAgfSk7CisJCQkJICAgIAorCQkJCX0KKwkJCQorCQkJXV0+CisJCTwvbWV0aG9kPgorCQkKKwkJPCEtLQorCQkgcHVibGljIExvbmcgY2hlY2tQZW5kaW5nU3RhdHVzKFN0cmluZyBTSUQsIExvbmcgdXNlckNvbnRhY3RJZCkKKwkJIC0tPgorCQk8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJjaGVja1BlbmRpbmdTdGF0dXMiIGZ1bmNuYW1lPSJ1c2Vyc2VydmljZS5jaGVja1BlbmRpbmdTdGF0dXMiIAorCQkJCQkgIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiA+ICAgICAgCisJCQk8YXR0cmlidXRlIG5hbWU9InVzZXJDb250YWN0SWQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBjYW52YXMuc2Vzc2lvbklkOyA8L21ldGhvZD48L25ldHBhcmFtPgorCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnVzZXJDb250YWN0SWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJICAgIAk8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKwkgICAgCQk8IVtDREFUQVsKKwkJICAgIAkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImNoZWNrUGVuZGluZ1N0YXR1czogIix2YWx1ZSk7CisJCSAgICAJCWlmICh2YWx1ZSA+IDApIHsKKwkJICAgIAkJCXBhcmVudC5wZW5kaW5nVXNlclN0YXR1c1JlZiA9IG5ldyBsei5wZW5kaW5nVXNlclN0YXR1cyhwYXJlbnQseworCQkJCQkJCQl1c2VyQ29udGFjdElkOnRoaXMudXNlckNvbnRhY3RJZCwKKwkJCQkJCQkJbWVzc2FnZTpwYXJlbnQuc3ViamVjdC5nZXRUZXh0KCkKKwkJCQkJCQl9KTsKKwkJICAgIAkJfQorCSAgICAJCV1dPgorCSAgICAJPC9oYW5kbGVyPgorCSAgICA8L25ldFJlbW90ZUNhbGxIaWI+CQkgCisJICAgIAorCSAgICA8dmlldyBuYW1lPSJfcHJpdmF0ZU1lc3NhZ2VEZXRhaWxzQm9yZGVyMiIgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGggfSIgeT0iMCIKKwkJICBoZWlnaHQ9IjEiIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignc2Vjb25kQm9yZGVyQ29sb3InKSB9IiAvPgorCQkKKwkJPHZpZXcgbmFtZT0iX3ByaXZhdGVNZXNzYWdlRGV0YWlsc0JvcmRlcjMiIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoIH0iIHk9IjEiCisJCSAgCWhlaWdodD0iNjEiIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignc2Vjb25kQm9yZGVyQ29sb3InKSB9IiBvcGFjaXR5PSIwLjEiIC8+CisJCSAgCQorCQk8bGFiZWxUZXh0IG5hbWU9Il9sYWJlbEZyb20iIHg9IjIiIGxhYmVsaWQ9IjEyMDIiIHk9IjIiIC8+CisJCTxsYWJlbFRleHQgbmFtZT0iZnJvbSIgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGgtMTAwIH0iIGZvbnRzdHlsZT0iaXRhbGljIgorCQkJCSAgIHg9IjEwMCIgeT0iMiIgcmVzaXplPSJmYWxzZSIgLz4KKwkJCisJCTxsYWJlbFRleHQgbmFtZT0iX2xhYmVsVG8iIHg9IjIiIGxhYmVsaWQ9IjEyMTAiIHk9IjIyIi8+CisJCTxsYWJlbFRleHQgbmFtZT0idG8iIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoLTEwMCB9IiBmb250c3R5bGU9Iml0YWxpYyIKKwkJCQkgICB4PSIxMDAiIHk9IjIyIiByZXNpemU9ImZhbHNlIiAvPgorCQkKKwkJPGxhYmVsVGV4dCBuYW1lPSJfbGFiZWxTdWJqZWN0IiB4PSIyIiBsYWJlbGlkPSIxMjExIiB5PSI0MiIvPgorCQk8bGFiZWxUZXh0IG5hbWU9InN1YmplY3QiIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoLTEwMCB9IiBmb250c3R5bGU9ImJvbGQiCisJCQkJICAgeD0iMTAwIiB5PSI0MiIgcmVzaXplPSJmYWxzZSIgLz4KKwkJCisJCTx2aWV3IG5hbWU9Il9wcml2YXRlTWVzc2FnZURldGFpbHNCb3JkZXIxIiB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCB9IiB5PSI2MiIKKwkJICAJaGVpZ2h0PSIxIiBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ3NlY29uZEJvcmRlckNvbG9yJykgfSIgLz4KKwkJICAKKwkJPHZpZXcgbmFtZT0ibWVzc2FnZSIgeT0iNjQiIGJnY29sb3I9IjB4RkZGRkZGIiB4PSIyIgorCQkJICB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aC00IH0iIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodC04NiB9Ij4KKwkJCTxsYWJlbFRleHQgbmFtZT0ibWVzc2FnZSIgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGgtMTYgfSIgCisJCQkJCSAgIG11bHRpbGluZT0idHJ1ZSIgcmVzaXplPSJmYWxzZSIgLz4KKwkJCTxvbV92c2Nyb2xsYmFyIC8+CisJCTwvdmlldz4KKwkJCisJCTx2aWV3IG5hbWU9Il9hbnN3ZXJfYXJlYSIgaGVpZ2h0PSIyMiIgdmlzaWJpbGl0eT0iaGlkZGVuIgorCQkJICB5PSIkeyBwYXJlbnQuaGVpZ2h0LTIyIH0iIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoIH0iPgorCQkJCisJCQk8dmlldyBuYW1lPSJfcHJpdmF0ZU1lc3NhZ2VEZXRhaWxzQm9yZGVyMiIgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGggfSIgeT0iMCIKKyAgICAgICAgICAgICAgICAgICAgaGVpZ2h0PSIxIiBiZ2NvbG9yPSIweDY2NjY2NiIgLz4KKwkJCQorICAgICAgICAgICAgPCEtLSBsYWJlbDogY2FuY2VsIC0tPgorICAgICAgICAgICAgPHNpbXBsZUxhYmVsQnV0dG9uIGxhYmVsaWQ9IjEzMDMiIHg9IiRvbmNleyBwYXJlbnQud2lkdGgtMTMwIH0iIHdpZHRoPSIxMjAiIHk9IjIiPgorICAgICAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgICAgICAgICBuZXcgbHoubmV3UHJpdmF0ZU1lc3NhZ2UoY2FudmFzLHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDoyMDAseToxMjAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZk9iajpudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5pbWl6YWJsZTp0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhpbWl6YWJsZTp0cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyT2JqZWN0Om51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzZHJhZ2FibGU6dHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlcl9pZDpwYXJlbnQucGFyZW50LnNlbmRlcnVzZXJJZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6Y2FudmFzLndpZHRoLTMwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OmNhbnZhcy5oZWlnaHQtMTMwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAgICAgPC9zaW1wbGVMYWJlbEJ1dHRvbj4KKwkJPC92aWV3PgorCQkKKwkJCisJPC92aWV3PgorCQorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy9wcml2YXRlbWVzc2FnZXMvcm9vbUFjY2Vzc01lc3NhZ2UubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy9wcml2YXRlbWVzc2FnZXMvcm9vbUFjY2Vzc01lc3NhZ2UubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyNjExMTgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL3NldHRpbmdzL3ByaXZhdGVtZXNzYWdlcy9yb29tQWNjZXNzTWVzc2FnZS5sengKQEAgLTAsMCArMSw5NyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworCQorPGNsYXNzIG5hbWU9InJvb21BY2Nlc3NNZXNzYWdlIiBleHRlbmRzPSJ2aWV3IiBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ2Jhc2ViZ2NvbG9yaXplcicpIH0iIAorCSAgIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoLTE2IH0iIGhlaWdodD0iNDAiIHk9IiRvbmNleyBwYXJlbnQuaGVpZ2h0LTYyIH0iCisJICAgdmlzaWJpbGl0eT0iaGlkZGVuIj4KKwkKKwk8YXR0cmlidXRlIG5hbWU9InJvb21zX2lkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorCQorCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisJCXRoaXMuZ2V0QXBwb2ludG1lbnRCeVJvb21JZC5kb0NhbGwoKTsKKwk8L2hhbmRsZXI+CisJCisJPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iZ2V0QXBwb2ludG1lbnRCeVJvb21JZCIgZnVuY25hbWU9ImNhbGVuZGFyc2VydmljZS5nZXRBcHBvaW50bWVudEJ5Um9vbUlkIiAKKyAgICAgICAgICAgICAgICAgICAgICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAgICAgIAorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBjYW52YXMuc2Vzc2lvbklkOyA8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBwYXJlbnQucGFyZW50LnJvb21zX2lkOyA8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJjaGVja1BlbmRpbmdTdGF0dXM6ICIsdmFsdWUpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgCXBhcmVudC5kZXN0cm95KCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAJcGFyZW50LnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgLy9wcml2YXRlIERhdGUgYXBwb2ludG1lbnRTdGFydHRpbWU7CisgICAgICAgICAgICAgICAgLy9wcml2YXRlIERhdGUgYXBwb2ludG1lbnRFbmR0aW1lOworICAgICAgICAgICAgICAgIHBhcmVudC5fY29udGVudC5fbGFiZWxzLl9zdGFydC5fdGV4dC5zZXRBdHRyaWJ1dGUoInRleHQiLHBhcnNlRGF0ZVRvU3RyaW5nVGltZVNlY29uZHModmFsdWUuYXBwb2ludG1lbnRTdGFydHRpbWUpKTsKKyAgICAgICAgICAgICAgICBwYXJlbnQuX2NvbnRlbnQuX2xhYmVscy5fZW5kLl90ZXh0LnNldEF0dHJpYnV0ZSgidGV4dCIscGFyc2VEYXRlVG9TdHJpbmdUaW1lU2Vjb25kcyh2YWx1ZS5hcHBvaW50bWVudEVuZHRpbWUpKTsKKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAKKworICAgIDx2aWV3IG5hbWU9Il9iZyIgeD0iMSIgeT0iMSIgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGgtMiB9IiBoZWlnaHQ9IiRvbmNleyBwYXJlbnQuaGVpZ2h0LTIgfSIKKyAgICAJICBiZ2NvbG9yPSIweEZGRkZGRiIgLz4KKyAgICAJICAKKwk8bWluaUljb25zUHJlc2VudGVyIG5hbWU9Il9jbG9zZSIgeD0iJG9uY2V7IHBhcmVudC53aWR0aC0yMCB9IiB5PSIyIgorICAgICAgICBpY29uUmVzc291cmNlTmFtZT0iYnRuX3ByZXNlbnRlcl9jbG9zZTIiPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgIHRoaXMucGFyZW50LmNsb3NlKCk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSI0MzAiIC8+CisgICAgPC9taW5pSWNvbnNQcmVzZW50ZXI+ICAKKyAgICAKKyAgICA8dmlldyBuYW1lPSJfY29udGVudCIgeD0iMTAiIGxheW91dD0iYXhpczp4O3NwYWNpbmc6MiI+CisgICAgCQorICAgIAk8c2ltcGxlTGFiZWxCdXR0b24gbGFiZWxpZD0iMTI4MyIgeT0iMTAiPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICAgICAgY2FudmFzLmluaXRyb29taWQgPSBwYXJlbnQucGFyZW50LnJvb21zX2lkOworICAgICAgICAgICAgICAgIGNhbnZhcy50aGlzaGliLmdldFJvb21CeUlkLmRvQ2FsbCgpOworICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAgICAgPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSIxMjg0IiAvPgorICAgICAgICA8L3NpbXBsZUxhYmVsQnV0dG9uPgorICAgIAorICAgICAgICA8dmlldyBuYW1lPSJfbGFiZWxzIiBsYXlvdXQ9ImF4aXM6eTtzcGFjaW5nOjAiPgorICAgICAgICAJCisgICAgICAgIAk8dmlldyBuYW1lPSJfc3RhcnQiPgorICAgICAgICAJCTxsYWJlbFRleHQgbGFiZWxpZD0iMTIxOSIgLz4KKyAgICAgICAgCQk8bGFiZWxUZXh0IG5hbWU9Il90ZXh0IiB4PSI4MCIgLz4KKyAgICAgICAgCTwvdmlldz4KKyAgICAgICAgCQorICAgICAgICAJPHZpZXcgbmFtZT0iX2VuZCI+CisgICAgICAgICAgICAgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSIxMjIwIiAvPgorICAgICAgICAgICAgICAgIDxsYWJlbFRleHQgbmFtZT0iX3RleHQiIHg9IjgwIiAvPgorICAgICAgICAgICAgPC92aWV3PgorICAgICAgICAJCisgICAgICAgIDwvdmlldz4KKyAgICAKKyAgICA8L3ZpZXc+CisgICAgCisgICAgCisgICAgCis8L2NsYXNzPiAKKwkKKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy9yZXNvdXJjZXMvYXJyb3dfdW5kby5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL3NldHRpbmdzL3Jlc291cmNlcy9hcnJvd191bmRvLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTcyYzVlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy9yZXNvdXJjZXMvYXJyb3dfdW5kby5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy9yZXNvdXJjZXMvYmFza2V0X2RlbGV0ZS5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL3NldHRpbmdzL3Jlc291cmNlcy9iYXNrZXRfZGVsZXRlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzQ5OTc0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy9yZXNvdXJjZXMvYmFza2V0X2RlbGV0ZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy9yZXNvdXJjZXMvYmFza2V0X3B1dC5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL3NldHRpbmdzL3Jlc291cmNlcy9iYXNrZXRfcHV0LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTYyZmFhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy9yZXNvdXJjZXMvYmFza2V0X3B1dC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy9yZXNvdXJjZXMvY2FsZW5kYXJfYWRkLnBuZyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvc2V0dGluZ3MvcmVzb3VyY2VzL2NhbGVuZGFyX2FkZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTc2NzlkYgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvc2V0dGluZ3MvcmVzb3VyY2VzL2NhbGVuZGFyX2FkZC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy9yZXNvdXJjZXMvY2FsZW5kYXJfZGVsZXRlLnBuZyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvc2V0dGluZ3MvcmVzb3VyY2VzL2NhbGVuZGFyX2RlbGV0ZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjlhM2IxMAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvc2V0dGluZ3MvcmVzb3VyY2VzL2NhbGVuZGFyX2RlbGV0ZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy9yZXNvdXJjZXMvZW1haWxfYWRkLnBuZyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvc2V0dGluZ3MvcmVzb3VyY2VzL2VtYWlsX2FkZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmM5MzM2OAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvc2V0dGluZ3MvcmVzb3VyY2VzL2VtYWlsX2FkZC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy9yZXNvdXJjZXMvZW1haWxfZGVsZXRlLnBuZyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvc2V0dGluZ3MvcmVzb3VyY2VzL2VtYWlsX2RlbGV0ZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTk5MzJiMQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvc2V0dGluZ3MvcmVzb3VyY2VzL2VtYWlsX2RlbGV0ZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy9yZXNvdXJjZXMvZW1haWxfZ28ucG5nIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy9yZXNvdXJjZXMvZW1haWxfZ28ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhNmM1ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL3NldHRpbmdzL3Jlc291cmNlcy9lbWFpbF9nby5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy9yZXNvdXJjZXMvZm9sZGVyLnBuZyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvc2V0dGluZ3MvcmVzb3VyY2VzL2ZvbGRlci5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzg0ZThmYQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvc2V0dGluZ3MvcmVzb3VyY2VzL2ZvbGRlci5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy9yZXNvdXJjZXMvZm9sZGVyX2FkZC5wbmcgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL3NldHRpbmdzL3Jlc291cmNlcy9mb2xkZXJfYWRkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjlmZThmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy9yZXNvdXJjZXMvZm9sZGVyX2FkZC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy9yZXNvdXJjZXMvbG9hZGluZ19zeW1ib2wuZmxhIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy9yZXNvdXJjZXMvbG9hZGluZ19zeW1ib2wuZmxhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5ZWZjMDUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL3NldHRpbmdzL3Jlc291cmNlcy9sb2FkaW5nX3N5bWJvbC5mbGEKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy9yZXNvdXJjZXMvbG9hZGluZ19zeW1ib2wuc3dmIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy9yZXNvdXJjZXMvbG9hZGluZ19zeW1ib2wuc3dmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwM2ZhZTcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL3NldHRpbmdzL3Jlc291cmNlcy9sb2FkaW5nX3N5bWJvbC5zd2YKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy9yZXNvdXJjZXMvc2VsZWN0X3BhcnQuZmxhIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy9yZXNvdXJjZXMvc2VsZWN0X3BhcnQuZmxhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3Yjk3ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL3NldHRpbmdzL3Jlc291cmNlcy9zZWxlY3RfcGFydC5mbGEKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy9yZXNvdXJjZXMvc2VsZWN0X3BhcnQucG5nIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy9yZXNvdXJjZXMvc2VsZWN0X3BhcnQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiZDY0ODgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL3NldHRpbmdzL3Jlc291cmNlcy9zZWxlY3RfcGFydC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy9zZWFyY2h1c2VycHJvZmlsZS9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvc2V0dGluZ3Mvc2VhcmNodXNlcnByb2ZpbGUvbGlicmFyeS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2MwMTE3NQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvc2V0dGluZ3Mvc2VhcmNodXNlcnByb2ZpbGUvbGlicmFyeS5sengKQEAgLTAsMCArMSwyNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKwkKKwk8aW5jbHVkZSBocmVmPSJzZWFyY2hVc2VyUHJvZmlsZUltYWdlLmx6eCIgLz4KKwk8aW5jbHVkZSBocmVmPSJzZWFyY2hVc2VyUHJvZmlsZUxpc3RJdGVtLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJzZWFyY2hVc2VyUHJvZmlsZS5sengiIC8+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvc2V0dGluZ3Mvc2VhcmNodXNlcnByb2ZpbGUvc2VhcmNoVXNlclByb2ZpbGUubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy9zZWFyY2h1c2VycHJvZmlsZS9zZWFyY2hVc2VyUHJvZmlsZS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTc5NmJlYQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvc2V0dGluZ3Mvc2VhcmNodXNlcnByb2ZpbGUvc2VhcmNoVXNlclByb2ZpbGUubHp4CkBAIC0wLDAgKzEsMzkzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCQorPHNjcmlwdD4KKyAgICA8IVtDREFUQVsKKyAgICAKKyAgICAgICAgZnVuY3Rpb24gc2VhcmNoT2ZmZXJzKHN0cikgeworICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInNlYXJjaE9mZmVycyAiLHN0cik7CisgICAgICAgICAgICAKKyAgICAgICAgCWNhbnZhcy51c2VyU2V0dGluZ3NTZWFyY2hUeXBlID0gInNlYXJjaE9mZmVycyI7CisgICAgICAgIAljYW52YXMudXNlclNldHRpbmdzU2VhcmNoUGhyYXNlID0gc3RyOworICAgICAgICAgICAgCQorICAgICAgICAgICAgaWYgKGNhbnZhcy51c2VyU2V0dGluZ3NTZWFyY2hSZWYgPT0gbnVsbCkgeworICAgICAgICAgICAgCWNhbnZhcy51c2VyU2V0dGluZ3NNb2R1bGVPcHQgPSAidXNlclNlYXJjaCI7CisgICAgICAgICAgICAJcXVpY2tsaW5rQWN0KCJ1c2VyU2V0dGluZ3NNb2R1bGUiKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAJY2FudmFzLnVzZXJTZXR0aW5nc1NlYXJjaFJlZi5zZWFyY2hCeVVwZGF0ZSgpOworICAgICAgICAgICAgCWNhbnZhcy51c2VyU2V0dGluZ3NTZWFyY2hSZWYucGFyZW50LnBhcmVudC5fbWVudS5fc2VhcmNoVXNlclByb2ZpbGUub25jbGljay5zZW5kRXZlbnQoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgZnVuY3Rpb24gc2VhcmNoVXNlcnMoc3RyKSB7CisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2VhcmNoVXNlcnMgIixzdHIpOworICAgICAgICAgICAgCisgICAgICAgICAgICBjYW52YXMudXNlclNldHRpbmdzU2VhcmNoVHlwZSA9ICJzZWFyY2hVc2VycyI7CisgICAgICAgICAgICBjYW52YXMudXNlclNldHRpbmdzU2VhcmNoUGhyYXNlID0gc3RyOworICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoY2FudmFzLnVzZXJTZXR0aW5nc1NlYXJjaFJlZiA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgY2FudmFzLnVzZXJTZXR0aW5nc01vZHVsZU9wdCA9ICJ1c2VyU2VhcmNoIjsKKyAgICAgICAgICAgICAgICBxdWlja2xpbmtBY3QoInVzZXJTZXR0aW5nc01vZHVsZSIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBjYW52YXMudXNlclNldHRpbmdzU2VhcmNoUmVmLnNlYXJjaEJ5VXBkYXRlKCk7CisgICAgICAgICAgICAgICAgY2FudmFzLnVzZXJTZXR0aW5nc1NlYXJjaFJlZi5wYXJlbnQucGFyZW50Ll9tZW51Ll9zZWFyY2hVc2VyUHJvZmlsZS5vbmNsaWNrLnNlbmRFdmVudCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBmdW5jdGlvbiBzZWFyY2hJbnRlcmVzdChzdHIpIHsKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzZWFyY2hJbnRlcmVzdCAiLHN0cik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGNhbnZhcy51c2VyU2V0dGluZ3NTZWFyY2hUeXBlID0gInNlYXJjaEludGVyZXN0IjsKKyAgICAgICAgICAgIGNhbnZhcy51c2VyU2V0dGluZ3NTZWFyY2hQaHJhc2UgPSBzdHI7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoY2FudmFzLnVzZXJTZXR0aW5nc1NlYXJjaFJlZiA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgY2FudmFzLnVzZXJTZXR0aW5nc01vZHVsZU9wdCA9ICJ1c2VyU2VhcmNoIjsKKyAgICAgICAgICAgICAgICBxdWlja2xpbmtBY3QoInVzZXJTZXR0aW5nc01vZHVsZSIpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBjYW52YXMudXNlclNldHRpbmdzU2VhcmNoUmVmLnNlYXJjaEJ5VXBkYXRlKCk7CisgICAgICAgICAgICAgICAgY2FudmFzLnVzZXJTZXR0aW5nc1NlYXJjaFJlZi5wYXJlbnQucGFyZW50Ll9tZW51Ll9zZWFyY2hVc2VyUHJvZmlsZS5vbmNsaWNrLnNlbmRFdmVudCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgCisgICAgXV0+Cis8L3NjcmlwdD4KKworPCEtLS0gIG1vZHVsZXM6ZGFzaGJvYXJkIC0tPgorPGNsYXNzIG5hbWU9InNlYXJjaFVzZXJQcm9maWxlIiBleHRlbmRzPSJ2aWV3IiA+CQorCisJPG1ldGhvZCBuYW1lPSJzZWFyY2giPgorCQk8IVtDREFUQVsKKwkJCXRoaXMuX3NlYXJjaFVzZXJSZXN1bHQuX3RhYmxlLnNlYXJjaFVzZXJQcm9maWxlLmRvQ2FsbCgpOworCQldXT4KKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9InNlYXJjaEJ5VXBkYXRlIj4KKwkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInNlYXJjaEJ5VXBkYXRlIC0yLSAiLGNhbnZhcy51c2VyU2V0dGluZ3NTZWFyY2hUeXBlKTsKKwkJY2FudmFzLnVzZXJTZXR0aW5nc01vZHVsZU9wdCA9ICIiOworCQlpZiAoY2FudmFzLnVzZXJTZXR0aW5nc1NlYXJjaFR5cGUgPT0gInNlYXJjaE9mZmVycyIpIHsKKwkJCXRoaXMuc2VhcmNoSW50ZXJlc3Quc2V0QXR0cmlidXRlKCJ0ZXh0IiwiIik7CisJCQl0aGlzLnNlYXJjaFR4dC5zZXRBdHRyaWJ1dGUoInRleHQiLCIiKTsKKyAgICAgICAgICAgIHRoaXMuc2VhcmNoT2ZmZXJzLnNldEF0dHJpYnV0ZSgidGV4dCIsY2FudmFzLnVzZXJTZXR0aW5nc1NlYXJjaFBocmFzZSk7CisgICAgICAgICAgICB0aGlzLnNlYXJjaCgpOworICAgICAgICB9IGVsc2UgaWYgKGNhbnZhcy51c2VyU2V0dGluZ3NTZWFyY2hUeXBlID09ICJzZWFyY2hJbnRlcmVzdCIpIHsKKyAgICAgICAgICAgIHRoaXMuc2VhcmNoSW50ZXJlc3Quc2V0QXR0cmlidXRlKCJ0ZXh0IixjYW52YXMudXNlclNldHRpbmdzU2VhcmNoUGhyYXNlKTsKKyAgICAgICAgICAgIHRoaXMuc2VhcmNoVHh0LnNldEF0dHJpYnV0ZSgidGV4dCIsIiIpOworICAgICAgICAgICAgdGhpcy5zZWFyY2hPZmZlcnMuc2V0QXR0cmlidXRlKCJ0ZXh0IiwiIik7CisgICAgICAgICAgICB0aGlzLnNlYXJjaCgpOworICAgICAgICB9IGVsc2UgaWYgKGNhbnZhcy51c2VyU2V0dGluZ3NTZWFyY2hUeXBlID09ICJzZWFyY2hVc2VycyIpIHsKKyAgICAgICAgCXRoaXMuc2VhcmNoSW50ZXJlc3Quc2V0QXR0cmlidXRlKCJ0ZXh0IiwiIik7CisgICAgICAgICAgICB0aGlzLnNlYXJjaFR4dC5zZXRBdHRyaWJ1dGUoInRleHQiLGNhbnZhcy51c2VyU2V0dGluZ3NTZWFyY2hQaHJhc2UpOworICAgICAgICAgICAgdGhpcy5zZWFyY2hPZmZlcnMuc2V0QXR0cmlidXRlKCJ0ZXh0IiwiIik7CisgICAgICAgICAgICB0aGlzLnNlYXJjaCgpOworICAgICAgICB9CisJPC9tZXRob2Q+CisJCisJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKwkJY2FudmFzLnVzZXJTZXR0aW5nc1NlYXJjaFJlZiA9IHRoaXM7CisJPC9oYW5kbGVyPgorCQorCTxsYWJlbFRleHQgbGFiZWxpZD0iMTE3OSIgeT0iNCIgeD0iNCIvPgorCQorCTxjdXN0b21FZGl0dGV4dCBuYW1lPSJzZWFyY2hUeHQiIHk9IjI0IiB4PSI0IiB3aWR0aD0iMTIwIiB0ZXh0PSIiPgorCQk8aGFuZGxlciBuYW1lPSJvbmtleWRvd24iIGFyZ3M9ImsiPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgaWYgKGsgPT0gMTMgfHwgayA9PSAyNykgeworICAgICAgICAgICAgICAgICAgICBwYXJlbnQuc2VhcmNoKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4KKwk8L2N1c3RvbUVkaXR0ZXh0PgorCQorCQorCTxsYWJlbFRleHQgbGFiZWxpZD0iMTE3NyIgeT0iNTAiIHg9IjQiLz4KKwkKKwk8Y3VzdG9tRWRpdHRleHQgbmFtZT0ic2VhcmNoT2ZmZXJzIiB5PSI3MCIgeD0iNCIgd2lkdGg9IjEyMCIgdGV4dD0iIiA+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9ua2V5ZG93biIgYXJncz0iayI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICBpZiAoayA9PSAxMyB8fCBrID09IDI3KSB7CisgICAgICAgICAgICAgICAgICAgIHBhcmVudC5zZWFyY2goKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPgorICAgIDwvY3VzdG9tRWRpdHRleHQ+CisJCisJCisJPGxhYmVsVGV4dCBsYWJlbGlkPSIxMTc4IiB5PSI5NiIgeD0iNCIgLz4KKwkKKwk8Y3VzdG9tRWRpdHRleHQgbmFtZT0ic2VhcmNoSW50ZXJlc3QiIHk9IjExNiIgeD0iNCIgd2lkdGg9IjEyMCIgdGV4dD0iIiA+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9ua2V5ZG93biIgYXJncz0iayI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICBpZiAoayA9PSAxMyB8fCBrID09IDI3KSB7CisgICAgICAgICAgICAgICAgICAgIHBhcmVudC5zZWFyY2goKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPgorICAgIDwvY3VzdG9tRWRpdHRleHQ+CisJCisJCisgICAgPHNpbXBsZUxhYmVsQnV0dG9uIGxhYmVsaWQ9IjExNzYiIHdpZHRoPSI4MCIgeD0iNDQiIAorICAgICAgICAgICB5PSIxNTIiIG9uY2xpY2s9InRoaXMucGFyZW50LnNlYXJjaCgpOyIgLz4KKyAgICAgICAgICAgCisgICAgICAgICAgIAorICAgIDx2aWV3IG5hbWU9Il9ib3JkZXJMaW5lIiB3aWR0aD0iMSIgeD0iMTI5IiAKKyAgICAJICBoZWlnaHQ9IiRvbmNleyBwYXJlbnQuaGVpZ2h0IH0iIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignYmFzZWJnY29sb3JpemVyJykgfSIgLz4KKyAgICAJICAKKyAgICAJICAKKwk8dmlldyBuYW1lPSJfc2VhcmNoVXNlclJlc3VsdCIgeD0iMTMwIiBoZWlnaHQ9IiRvbmNleyBwYXJlbnQuaGVpZ2h0IH0iPgorCQkKKwkJPHR1cm5PdmVyTGlzdE9yZGVyZWRQYWdlZCBuYW1lPSJfdGFibGUiIHNob3dUb3BCYXI9InRydWUiIHg9IjAiIGhlaWdodD0iJG9uY2V7IHBhcmVudC5oZWlnaHQgfSIgCisgICAgICAgICAgICAgeT0iMCIgaXRlbUhlaWdodD0iNDAiIGxpc3RMYWJlbElkPSIxMTg0IiBoZWFkZXJIZWlnaHQ9IjIyIiBzdGVwPSIxMDAwIiBvcmRlcmJ5PSJjLmxhc3RuYW1lIgorICAgICAgICAgICAgIGxpc3RJdGVtTmFtZT0ic2VhcmNoVXNlclByb2ZpbGVMaXN0SXRlbSIgbWVudUJhclhJbmRlbnQ9IjEwMCIKKyAgICAgICAgICAgICBtdWx0aXNlbGVjdD0iZmFsc2UiIHdpZHRoPSIkb25jZXsgY2FudmFzLndpZHRoIC0gMTMwIH0iPgorCQkJCisJCQk8YXR0cmlidXRlIG5hbWU9Il9uZXdQcml2YXRlTWVzc2FnZSIgdmFsdWU9Im51bGwiIC8+CisJCQk8YXR0cmlidXRlIG5hbWU9Im5ld01lc3NhZ2VBY3RpdmUiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIvPgorCQkJCisJCQk8IS0tCisJCQkJcHVibGljIFNlYXJjaFJlc3VsdCBzZWFyY2hVc2VyUHJvZmlsZShTdHJpbmcgU0lELCBTdHJpbmcgc2VhcmNoVHh0LCBTdHJpbmcgdXNlck9mZmVycywgCisJCSAgIAkJCVN0cmluZyB1c2VyU2VhcmNocywgU3RyaW5nIG9yZGVyQnksIGludCBzdGFydCwgaW50IG1heCwgYm9vbGVhbiBhc2MpCisJCSAgICAtLT4KKwkJICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9InNlYXJjaFVzZXJQcm9maWxlIiBmdW5jbmFtZT0idXNlcnNlcnZpY2Uuc2VhcmNoVXNlclByb2ZpbGUiIAorCQkJCQkJICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAgICAgIAorCQkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LnNlYXJjaFR4dC5nZXRUZXh0KCk7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LnNlYXJjaE9mZmVycy5nZXRUZXh0KCk7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LnNlYXJjaEludGVyZXN0LmdldFRleHQoKTsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBwYXJlbnQucGFyZW50Lm9yZGVyYnk7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBhcmVudC5zdGFydDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKwkJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBwYXJlbnQucGFyZW50LnN0ZXA7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBhcmVudC5hc2M7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCSAgICAJPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisJCSAgICAJCTwhW0NEQVRBWworCQkJICAgIAkJLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2VhcmNoVXNlclByb2ZpbGU6ICIsdmFsdWUpOworCQkJICAgIAkJLy90aGlzLnBhcmVudC5kZXN0cm95KCk7CisJCQkgICAgCQl0aGlzLnBhcmVudC5pbml0VmFsdWVzKHZhbHVlLnJlY29yZHMpOworCQkJICAgIAkJCisJCQkgICAgCQlmb3IgKHZhciB0PTA7dDx2YWx1ZS5yZXN1bHQubGVuZ3RoO3QrKykgeworCQkJICAgIAkJCXZhbHVlLnJlc3VsdFt0XVsicGVuZGluZyJdID0gZmFsc2U7CisJCQkgICAgCQkJZm9yICh2YXIgaT0wO2k8Y2FudmFzLnNhbHV0YXRpb25zSW5pdFZhbHVlcy5sZW5ndGg7aSsrKXsKKwkJCSAgICAJCQkJaWYgKGNhbnZhcy5zYWx1dGF0aW9uc0luaXRWYWx1ZXNbaV0uc2FsdXRhdGlvbnNfaWQgPT0gdmFsdWUucmVzdWx0W3RdLnNhbHV0YXRpb25zX2lkKSB7CisJCQkJCSAgICAgICAgICAgICAgICB2YWx1ZS5yZXN1bHRbdF1bInRpdGxlIl0gPSBjYW52YXMuc2FsdXRhdGlvbnNJbml0VmFsdWVzW2ldLmxhYmVsLnZhbHVlOworCQkJCQkgICAgICAgICAgICAgICAgYnJlYWs7CisJCQkgICAgCQkJCX0KKwkJCQkJCQkJCisJCQkJICAgICAgICAgICAgfQorCQkJICAgIAkJCQorCQkJICAgIAkJfQorCQkJICAgIAkJCisJCQkgICAgCQl0aGlzLnBhcmVudC5yZW5kZXJDb250ZW50KHZhbHVlLnJlc3VsdCk7CisJCSAgICAJCV1dPgorCQkgICAgCTwvaGFuZGxlcj4KKwkJICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4KKwkJCQorCQkJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKwkgICAgICAgIAkvL2FkZEhlYWRlckl0ZW1PcmRlcmVkIiBhcmdzPSJsYWJlbGlkLHdpZHRoLG9yZGVyQnksYXNjLGlzU2VsZWN0ZWQKKwkgICAgICAgICAgICB0aGlzLmFkZEhlYWRlckl0ZW1PcmRlcmVkKDExODAsMjAwLCJjLmxhc3RuYW1lIixmYWxzZSx0cnVlKTsKKwkgICAgICAgICAgICB0aGlzLmFkZEhlYWRlckl0ZW1PcmRlcmVkKDExODEsMTAwLCJjLm9tVGltZVpvbmUub21UaW1lWm9uZUlkIixmYWxzZSxmYWxzZSk7CisJICAgICAgICAgICAgdGhpcy5hZGRIZWFkZXJJdGVtKDExODIsMjUwKTsKKwkgICAgICAgICAgICB0aGlzLmFkZEhlYWRlckl0ZW0oMTE4Myx0aGlzLndpZHRoLTI1MC02MC0xMDAtMjAwLTE2KTsKKwkgICAgICAgICAgICB0aGlzLmFkZEhlYWRlckl0ZW0oMTE4NSw2MCk7CisJICAgICAgICA8L2hhbmRsZXI+CisJICAgICAgICAKKwkgICAgICAgIDxtZXRob2QgbmFtZT0ibmV3TWVzc2FnZSIgYXJncz0idXNlck9iamVjdCI+CisgICAgICAgICAgICAgICAgaWYgKHRoaXMubmV3TWVzc2FnZUFjdGl2ZSkgeworICAgICAgICAgICAgICAgICAgICB0aGlzLl9uZXdQcml2YXRlTWVzc2FnZS5kZXN0cm95KCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG5ldyBsei5uZXdQcml2YXRlTWVzc2FnZSh0aGlzLHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeDowLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWZPYmo6dGhpcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlck9iamVjdDp1c2VyT2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDp0aGlzLndpZHRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6dGhpcy5oZWlnaHQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHRoaXMubmV3TWVzc2FnZUFjdGl2ZSA9IHRydWU7CisgICAgICAgICAgICA8L21ldGhvZD4KKwkgICAgICAgIAorCSAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGlja2VkSXRlbSIgYXJncz0icmVmT2JqIj4KKwkgICAgICAgICAgICA8IVtDREFUQVsKKwkgICAgICAgICAgICAKKwkgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9uY2xpY2tlZEl0ZW0gIixyZWZPYmopOworCSAgICAgICAgICAgICAgICAKKwkgICAgICAgICAgICBdXT4KKwkgICAgICAgIDwvaGFuZGxlcj4KKwkgICAgICAgIAorCSAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25VcGRhdGVPcmRlciI+CisJICAgICAgICAJdGhpcy5zZWFyY2hVc2VyUHJvZmlsZS5kb0NhbGwoKTsKKwkgICAgICAgIDwvaGFuZGxlcj4KKwkgICAgICAgIAorCSAgICAgICAgPG1ldGhvZCBuYW1lPSJ1cGRhdGVQZW5kaW5nU3RhdHVzIiBhcmdzPSJpdGVtSWQiPgorCSAgICAgICAgCXRoaXMucmVuZGVyTGlzdFtpdGVtSWRdWyJwZW5kaW5nIl0gPSB0cnVlOworCSAgICAgICAgPC9tZXRob2Q+CisJICAgICAgICAKKwkgICAgICAgIDwhLS0KKwkgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0idXNlcm5hbWUiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwkJCTxhdHRyaWJ1dGUgbmFtZT0idGltZXpvbmUiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwkJCTxhdHRyaWJ1dGUgbmFtZT0ic2VhcmNoT2ZmZXJzIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisJCQk8YXR0cmlidXRlIG5hbWU9InNlYXJjaFNlYXJjaHMiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwkJCSAtLT4KKworCSAgICAgICAgPG1ldGhvZCBuYW1lPSJyZW5kZXJDb250ZW50IiBhcmdzPSJyTGlzdCI+CisJICAgICAgICAgICAgPCFbQ0RBVEFbCisJICAgICAgICAgICAgCisJICAgICAgICAgICAgCXRoaXMucmVuZGVyTGlzdCA9IHJMaXN0OworCSAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGVkID0gdHJ1ZTsKKwkgICAgICAgICAgICAgICAgdmFyIGxpc3QgPSB0aGlzLl9pbm5lcmxpc3QuX2lubi5faW5uOworCSAgICAgICAgICAgICAgICAKKwkgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVuZGVyTGlzdCA9PSBudWxsKSB7CisJICAgICAgICAgICAgICAgIAl0aGlzLnJlbmRlckxpc3QgPSBuZXcgQXJyYXkoKTsKKwkgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICAvL3RoaXMucmVuZGVyTGlzdCA9IHJlY29yZHM7CisJICAgICAgICAgICAgICAgIHZhciByZWNvcmRzID0gdGhpcy5yZW5kZXJMaXN0OworCSAgICAgICAgICAgICAgICB0aGlzLl9pbm5lcmxpc3QuX2lubi5zZXRBdHRyaWJ1dGUoInkiLDApOworCSAgICAgICAgICAgICAgICB0aGlzLl9pbm5lcmxpc3QuX2lubi5faW5uLnNldEF0dHJpYnV0ZSgiaGVpZ2h0IixyZWNvcmRzLmxlbmd0aCp0aGlzLml0ZW1IZWlnaHQpOworCSAgICAgICAgICAgICAgICB0aGlzLl9pbm5lcmxpc3QuX2lubi5yZXNldEl0ZW1zKCk7CisJICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiOjogcmVuZGVyQ29udGVudCA6OiIsdGhpcy5yZW5kZXJMaXN0Lmxlbmd0aCxsaXN0LnN1YnZpZXdzLmxlbmd0aCk7CisJICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICAvL3RoaXMuX3JlY29yZHMuc2V0QXR0cmlidXRlKCJ0ZXh0IixyZWNvcmRzLmxlbmd0aCk7CisJICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTxsaXN0LnN1YnZpZXdzLmxlbmd0aDtpKyspeworCSAgICAgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgICAgICAvL2lmIChpICUgMiA9PSAwKSB7CisJICAgICAgICAgICAgICAgICAgICAvLyAgICBsaXN0LnN1YnZpZXdzW2ldLnNldElzU2Vjb25kKHRydWUpOworCSAgICAgICAgICAgICAgICAgICAgLy99IGVsc2UgeworCSAgICAgICAgICAgICAgICAgICAgLy8gICAgbGlzdC5zdWJ2aWV3c1tpXS5zZXRJc1NlY29uZChmYWxzZSk7CisJICAgICAgICAgICAgICAgICAgICAvL30KKwkgICAgICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICAgICAgaWYgKHJlY29yZHMubGVuZ3RoID4gaSkgeworCSAgICAgICAgICAgICAgICAgICAgCQorCSAgICAgICAgICAgICAgICAgICAgCS8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIlJlbmRlciBJdGVtICIscmVjb3Jkc1tpXSk7CisJICAgICAgICAgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5zdWJ2aWV3c1tpXS5zZXRBdHRyaWJ1dGUoImNsaWNrYWJsZSIsdHJ1ZSk7CisJICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5zdWJ2aWV3c1tpXS5yZWZPYmogPSByZWNvcmRzW2ldOworCSAgICAgICAgICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWNvcmRzW2ldWyJpc3NlbGVjdGVkIl0gJiYgcmVjb3Jkc1tpXS5pc3NlbGVjdGVkKSB7CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Quc3Vidmlld3NbaV0uaXNzZWxlY3RlZCA9IHRydWU7CisJICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5zdWJ2aWV3c1tpXS5pc3NlbGVjdGVkID0gZmFsc2U7CisJICAgICAgICAgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICAgICAgICAgIAorCQkJCQkJCWxpc3Quc3Vidmlld3NbaV0uc2V0QXR0cmlidXRlKCJ1c2VybmFtZSIscmVjb3Jkc1tpXS50aXRsZSArICcgJyArIGNhbnZhcy5nZXROb3ROdWxsU3RyaW5nKHJlY29yZHNbaV0uZmlyc3RuYW1lKSArICcgJyArIGNhbnZhcy5nZXROb3ROdWxsU3RyaW5nKHJlY29yZHNbaV0ubGFzdG5hbWUpICsgJyBbJyArIHJlY29yZHNbaV0ubG9naW4gKyAnXScpOworCQkJCQkJCWxpc3Quc3Vidmlld3NbaV0uc2V0QXR0cmlidXRlKCJ0aW1lem9uZSIscmVjb3Jkc1tpXS5vbVRpbWVab25lLmpuYW1lICsgJzxici8+KCcrcmVjb3Jkc1tpXS5vbVRpbWVab25lLmljYWwrJyknKTsKKwkJCQkJCQlsaXN0LnN1YnZpZXdzW2ldLnNldEF0dHJpYnV0ZSgic2VhcmNoT2ZmZXJzIiwgY2FudmFzLmdldE5vdE51bGxTdHJpbmcocmVjb3Jkc1tpXS51c2VyT2ZmZXJzKSk7CisJCQkJCQkJbGlzdC5zdWJ2aWV3c1tpXS5zZXRBdHRyaWJ1dGUoInNlYXJjaFNlYXJjaHMiLCBjYW52YXMuZ2V0Tm90TnVsbFN0cmluZyhyZWNvcmRzW2ldLnVzZXJTZWFyY2hzKSk7CisJCQkJCQkJbGlzdC5zdWJ2aWV3c1tpXS5zZXRBdHRyaWJ1dGUoInBlbmRpbmciLHJlY29yZHNbaV0ucGVuZGluZyk7CisJICAgICAgICAgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5zdWJ2aWV3c1tpXS5zZXRBdHRyaWJ1dGUoIml0ZW1JZCIsaSk7CisJICAgICAgICAgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworCSAgICAgICAgICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Quc3Vidmlld3NbaV0ucmVmT2JqID0gbnVsbDsKKwkgICAgICAgICAgICAgICAgICAgICAgICAKKwkgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnN1YnZpZXdzW2ldLmlzc2VsZWN0ZWQgPSBmYWxzZTsKKwkgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnN1YnZpZXdzW2ldLm9ubW91c2VvdXQuc2VuZEV2ZW50KCk7CisJICAgICAgICAgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5zdWJ2aWV3c1tpXS5zZXRBdHRyaWJ1dGUoInVzZXJuYW1lIiwnJyk7CisJICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5zdWJ2aWV3c1tpXS5zZXRBdHRyaWJ1dGUoInRpbWV6b25lIiwnJyk7CisJICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5zdWJ2aWV3c1tpXS5zZXRBdHRyaWJ1dGUoInNlYXJjaE9mZmVycyIsJycpOworCSAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Quc3Vidmlld3NbaV0uc2V0QXR0cmlidXRlKCJzZWFyY2hTZWFyY2hzIiwnJyk7CisJICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5zdWJ2aWV3c1tpXS5zZXRBdHRyaWJ1dGUoInBlbmRpbmciLGZhbHNlKTsKKwkgICAgICAgICAgICAgICAgICAgICAgICAKKwkgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnN1YnZpZXdzW2ldLnNldEF0dHJpYnV0ZSgiaXRlbUlkIiwiIik7CisJICAgICAgICAgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5zdWJ2aWV3c1tpXS5zZXRBdHRyaWJ1dGUoImNsaWNrYWJsZSIsZmFsc2UpOworCSAgICAgICAgICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICB0aGlzLnNlbmRJbml0aWFsV2lkdGhVcGRhdGUoKTsKKwkgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgXV0+CisJICAgICAgICA8L21ldGhvZD4gICAKKwkJICAgICAgICAKKwkgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uU2Nyb2xsSXRlbSIgYXJncz0iaXRlbSI+CisJICAgICAgICAgICAgPCFbQ0RBVEFbCisJICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlbmRlckxpc3QubGVuZ3RoID4gaXRlbS5pdGVtSWQpIHsKKwkgICAgICAgICAgICAgICAgICAgIGl0ZW0uc2V0QXR0cmlidXRlKCJjbGlja2FibGUiLHRydWUpOworCSAgICAgICAgICAgICAgICAgICAgaXRlbS5yZWZPYmogPSB0aGlzLnJlbmRlckxpc3RbaXRlbS5pdGVtSWRdOworCSAgICAgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgICAgICAvL2lmIChpdGVtLml0ZW1JZCAlIDIgPT0gMCkgeworCSAgICAgICAgICAgICAgICAgICAgLy8gICAgaXRlbS5zZXRJc1NlY29uZCh0cnVlKTsKKwkgICAgICAgICAgICAgICAgICAgIC8vfSBlbHNlIHsKKwkgICAgICAgICAgICAgICAgICAgIC8vICAgIGl0ZW0uc2V0SXNTZWNvbmQoZmFsc2UpOworCSAgICAgICAgICAgICAgICAgICAgLy99CisJICAgICAgICAgICAgICAgICAgICAKKwkgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlbmRlckxpc3RbaXRlbS5pdGVtSWRdWyJpc3NlbGVjdGVkIl0gJiYgdGhpcy5yZW5kZXJMaXN0W2l0ZW0uaXRlbUlkXS5pc3NlbGVjdGVkKSB7CisJICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5pc3NlbGVjdGVkID0gdHJ1ZTsKKwkgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm9ubW91c2VvdXQuc2VuZEV2ZW50KCk7CisJICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworCSAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uaXNzZWxlY3RlZCA9IGZhbHNlOworCSAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ub25tb3VzZW91dC5zZW5kRXZlbnQoKTsKKwkgICAgICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZShpdGVtLml0ZW1JZCk7CisJICAgICAgICAgICAgICAgICAgICAKKwkgICAgICAgICAgICAgICAgICAgIGl0ZW0uc2V0QXR0cmlidXRlKCJ1c2VybmFtZSIsdGhpcy5yZW5kZXJMaXN0W2l0ZW0uaXRlbUlkXS50aXRsZSArICcgJyArIHRoaXMucmVuZGVyTGlzdFtpdGVtLml0ZW1JZF0uZmlyc3RuYW1lKycgJyt0aGlzLnJlbmRlckxpc3RbaXRlbS5pdGVtSWRdLmxhc3RuYW1lICsgJyBbJyt0aGlzLnJlbmRlckxpc3RbaXRlbS5pdGVtSWRdLmxvZ2luKyddJyk7CisJICAgICAgICAgICAgICAgICAgICBpdGVtLnNldEF0dHJpYnV0ZSgidGltZXpvbmUiLHRoaXMucmVuZGVyTGlzdFtpdGVtLml0ZW1JZF0ub21UaW1lWm9uZS5qbmFtZSArICc8YnIvPignK3RoaXMucmVuZGVyTGlzdFtpdGVtLml0ZW1JZF0ub21UaW1lWm9uZS5pY2FsKycpJyk7CisgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnNldEF0dHJpYnV0ZSgic2VhcmNoT2ZmZXJzIix0aGlzLnJlbmRlckxpc3RbaXRlbS5pdGVtSWRdLnVzZXJPZmZlcnMpOworICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5zZXRBdHRyaWJ1dGUoInNlYXJjaFNlYXJjaHMiLHRoaXMucmVuZGVyTGlzdFtpdGVtLml0ZW1JZF0udXNlclNlYXJjaHMpOworCSAgICAgICAgICAgICAgICAgICAgaXRlbS5zZXRBdHRyaWJ1dGUoInBlbmRpbmciLHRoaXMucmVuZGVyTGlzdFtpdGVtLml0ZW1JZF0ucGVuZGluZyk7CisJICAgICAgICAgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgICAgICBpdGVtLnNldEF0dHJpYnV0ZSgiaXRlbUlkIixpdGVtLml0ZW1JZCk7CisJICAgICAgICAgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgIH0gZWxzZSB7CisJICAgICAgICAgICAgICAgICAgICAKKwkgICAgICAgICAgICAgICAgICAgIC8vaWYgKGl0ZW0uaXRlbUlkICUgMiA9PSAwKSB7CisJICAgICAgICAgICAgICAgICAgICAvLyAgICBpdGVtLnNldElzU2Vjb25kKHRydWUpOworCSAgICAgICAgICAgICAgICAgICAgLy99IGVsc2UgeworCSAgICAgICAgICAgICAgICAgICAgLy8gICAgaXRlbS5zZXRJc1NlY29uZChmYWxzZSk7CisJICAgICAgICAgICAgICAgICAgICAvL30KKwkgICAgICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICAgICAgaXRlbS5pc3NlbGVjdGVkID0gZmFsc2U7CisJICAgICAgICAgICAgICAgICAgICBpdGVtLm9ubW91c2VvdXQuc2VuZEV2ZW50KCk7CisJICAgICAgICAgICAgICAgICAgICAKKwkgICAgICAgICAgICAgICAgICAgIGl0ZW0ucmVmT2JqID0gbnVsbDsKKwkgICAgICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICAgICAgaXRlbS5zZXRBdHRyaWJ1dGUoInVzZXJuYW1lIiwiIik7CisJICAgICAgICAgICAgICAgICAgICBpdGVtLnNldEF0dHJpYnV0ZSgidGltZXpvbmUiLCIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uc2V0QXR0cmlidXRlKCJzZWFyY2hPZmZlcnMiLCIiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uc2V0QXR0cmlidXRlKCJzZWFyY2hTZWFyY2hzIiwiIik7CisgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnNldEF0dHJpYnV0ZSgicGVuZGluZyIsZmFsc2UpOworCSAgICAgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgICAgICBpdGVtLnNldEF0dHJpYnV0ZSgiaXRlbUlkIiwiIik7CisJICAgICAgICAgICAgICAgICAgICAKKwkgICAgICAgICAgICAgICAgICAgIGl0ZW0uc2V0QXR0cmlidXRlKCJjbGlja2FibGUiLGZhbHNlKTsKKwkgICAgICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgIF1dPgorCSAgICAgICAgPC9oYW5kbGVyPgorCSAgICAgICAgCisJCQkKKwkJPC90dXJuT3Zlckxpc3RPcmRlcmVkUGFnZWQ+CisJCQorCTwvdmlldz4KKwkKKworPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy9zZWFyY2h1c2VycHJvZmlsZS9zZWFyY2hVc2VyUHJvZmlsZUltYWdlLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvc2V0dGluZ3Mvc2VhcmNodXNlcnByb2ZpbGUvc2VhcmNoVXNlclByb2ZpbGVJbWFnZS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjJkNTE4YgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvc2V0dGluZ3Mvc2VhcmNodXNlcnByb2ZpbGUvc2VhcmNoVXNlclByb2ZpbGVJbWFnZS5sengKQEAgLTAsMCArMSw0MiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKwkKKzxjbGFzcyBuYW1lPSJzZWFyY2hVc2VyUHJvZmlsZUltYWdlIiBleHRlbmRzPSJ2aWV3IiB3aWR0aD0iMTIwIiBoZWlnaHQ9IjEwMCIKKwkgICBiZ2NvbG9yPSIweDMzMzMzMyI+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJwcm9maWxlVXJsIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisJCisJPHZpZXcgbmFtZT0iX3BsYWNlaG9sZGVyQkciIHdpZHRoPSIxMTgiIHg9IjEiIHk9IjEiCisJCSAgaGVpZ2h0PSI5OCIgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdtZW51QmFja2dyb3VuZENvbG9yJykgfSI+PC92aWV3PgorCTx2aWV3IHg9IjU4IiB5PSI0OCIKKwkJcmVzb3VyY2U9ImltYWdlX2xvYWRpbmdfcGxhY2Vob2xkZXJfcnNjIiA+PC92aWV3PgorCQorCTxpbWFnZSBuYW1lPSJfcHJvZmlsZUltYWdlIiBzcmM9IiRvbmNleyBwYXJlbnQucHJvZmlsZVVybCB9IiB4PSIxIiB5PSIxIj4KKwkJPGhhbmRsZXIgbmFtZT0ib25sb2FkIj4KKwkJCXBhcmVudC5fcGxhY2Vob2xkZXJCRy5kZXN0cm95KCk7CisJCQlwYXJlbnQuc2V0QXR0cmlidXRlKCJ3aWR0aCIsdGhpcy53aWR0aCsyKTsKKwkJCXBhcmVudC5zZXRBdHRyaWJ1dGUoImhlaWdodCIsdGhpcy5oZWlnaHQrMik7CisJCTwvaGFuZGxlcj4KKwk8L2ltYWdlPgorPC9jbGFzcz4KKwkKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvc2V0dGluZ3Mvc2VhcmNodXNlcnByb2ZpbGUvc2VhcmNoVXNlclByb2ZpbGVMaXN0SXRlbS5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL3NldHRpbmdzL3NlYXJjaHVzZXJwcm9maWxlL3NlYXJjaFVzZXJQcm9maWxlTGlzdEl0ZW0ubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiYzY2MWMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL3NldHRpbmdzL3NlYXJjaHVzZXJwcm9maWxlL3NlYXJjaFVzZXJQcm9maWxlTGlzdEl0ZW0ubHp4CkBAIC0wLDAgKzEsMTQ4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCQorPGNsYXNzIG5hbWU9InNlYXJjaFVzZXJQcm9maWxlTGlzdEl0ZW0iIGV4dGVuZHM9ImJhc2VQYWdpbmdMaXN0SXRlbSIgc2hvd2hhbmRjdXJzb3I9ImZhbHNlIiBoZWlnaHQ9IjQwIj4KKwkKKwk8YXR0cmlidXRlIG5hbWU9InVzZXJuYW1lIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJ0aW1lem9uZSIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0ic2VhcmNoT2ZmZXJzIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJzZWFyY2hTZWFyY2hzIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJwZW5kaW5nIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9InNlYXJjaFVzZXJQcm9maWxlSW1hZ2UiIHZhbHVlPSJudWxsIiAvPgorCQorCTxoYW5kbGVyIG5hbWU9Im9ucGVuZGluZyIgYXJncz0icCI+CisJCXRoaXMucGVuZGluZyA9IHA7CisJCWlmIChwKSB7CisJCQl0aGlzLnNldEF0dHJpYnV0ZSgib3BhY2l0eSIsMC41KTsKKwkJCXRoaXMuX2ljb25zLmFkZC5zZXRBdHRyaWJ1dGUoImNsaWNrYWJsZSIsZmFsc2UpOworCQl9IGVsc2UgeworCQkJdGhpcy5zZXRBdHRyaWJ1dGUoIm9wYWNpdHkiLDEpOworCQkJdGhpcy5faWNvbnMuYWRkLnNldEF0dHJpYnV0ZSgiY2xpY2thYmxlIix0cnVlKTsKKwkJfQorCTwvaGFuZGxlcj4KKwkKKwk8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3ZlciI+CisJCTwhW0NEQVRBWworCQkJaWYgKHRoaXMuc2VhcmNoVXNlclByb2ZpbGVJbWFnZSAhPSBudWxsKSB7CisJCQkJdGhpcy5zZWFyY2hVc2VyUHJvZmlsZUltYWdlLmRlc3Ryb3koKTsKKwkJCQl0aGlzLnNlYXJjaFVzZXJQcm9maWxlSW1hZ2UgPSBudWxsOworCQkJfQorCQkJCisJCQlpZiAodGhpcy5yZWZPYmogIT0gbnVsbCkgeworCQkJCXRoaXMuc2VhcmNoVXNlclByb2ZpbGVJbWFnZSA9IG5ldyBsei5zZWFyY2hVc2VyUHJvZmlsZUltYWdlKGNhbnZhcyx7CisJCQkJCQl4OnRoaXMuZ2V0QXR0cmlidXRlUmVsYXRpdmUoIngiLGNhbnZhcykgLSAxMjAsCisJCQkJCQl5OnRoaXMuZ2V0QXR0cmlidXRlUmVsYXRpdmUoInkiLGNhbnZhcykgLSAzMCwKKwkJCQkJCXByb2ZpbGVVcmw6IGNhbnZhcy5nZXRQaWN0dXJlVXJsKHRoaXMucmVmT2JqLnBpY3R1cmV1cmkKKwkJCQkJCQksICcmbW9kdWxlTmFtZT1yZW1vdGV1c2VycHJvZmlsZSZyZW1vdGVVc2VyaWQ9Jyt0aGlzLnJlZk9iai51c2VyX2lkKQorCQkJCQl9KTsKKwkJCX0KKwkJXV0+CisJPC9oYW5kbGVyPgorCQorCTxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdXQiPgorCQlpZiAodGhpcy5zZWFyY2hVc2VyUHJvZmlsZUltYWdlICE9IG51bGwpIHsKKwkJCXRoaXMuc2VhcmNoVXNlclByb2ZpbGVJbWFnZS5kZXN0cm95KCk7CisJCQl0aGlzLnNlYXJjaFVzZXJQcm9maWxlSW1hZ2UgPSBudWxsOworCQl9CisJPC9oYW5kbGVyPgorCQorCTx0dXJuT3ZlclRleHRJdGVtIG5hbWU9Il91c2VybmFtZSIgd2lkdGg9IjIwMCIgbXVsdGlsaW5lPSJ0cnVlIgorCQkJCQkgIHRleHQ9IiR7IHBhcmVudC51c2VybmFtZSB9IiAvPgorCTx0dXJuT3ZlclRleHRJdGVtIG5hbWU9Il90aW1lem9uZSIgd2lkdGg9IjgwIiBtdWx0aWxpbmU9InRydWUiCisJCQkJCSAgdGV4dD0iJHsgcGFyZW50LnRpbWV6b25lIH0iIC8+CisJPHR1cm5PdmVyVGV4dEl0ZW0gbmFtZT0iX3NlYXJjaE9mZmVycyIgd2lkdGg9IjMwMCIgbXVsdGlsaW5lPSJ0cnVlIgorCQkJCQkgIHRleHQ9IiR7IHBhcmVudC5zZWFyY2hPZmZlcnMgfSIgLz4KKwk8dHVybk92ZXJUZXh0SXRlbSBuYW1lPSJfc2VhcmNoU2VhcmNocyIgd2lkdGg9IjMwMCIgbXVsdGlsaW5lPSJ0cnVlIgorCQkJCQkgIHRleHQ9IiR7IHBhcmVudC5zZWFyY2hTZWFyY2hzIH0iIC8+CisJCisJPHZpZXcgbmFtZT0iX2ljb25zIiA+CisJCQorCQk8dmlldyB2aXNpYmxlPSIkeyBwYXJlbnQucGFyZW50LmNsaWNrYWJsZSB9Ij4KKwkJCQorCQkgICAgPG1pbmlJY29uc0ltYWdlIG5hbWU9ImFkZCIgeT0iMSIgeD0iMSIgc3JjPSIkb25jZXsgY2FudmFzLmdldFRoZW1lSW1hZ2UoJ2VkaXRfYWRkX3JzYycpIH0iIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCIgCisJICAgICAgICAgICAgICAgc2hvd2hhbmRjdXJzb3I9InRydWUiPgorCQkgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorCQkgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiU3RhcnQgQ29uZmVyZW5jZSIpOworCQkgICAgICAgICAgICBpZiAoaGliLnVzZXJvYmplY3QudXNlcl9pZCA9PSBwYXJlbnQucGFyZW50LnBhcmVudC5yZWZPYmoudXNlcl9pZCkgeworCQkgICAgICAgICAgICAJbmV3IGx6LmxhYmVsZXJyb3JQb3B1cChjYW52YXMse2Vycm9ybGFiZWxpZDoxMjI1fSk7CisJCSAgICAgICAgICAgIAlyZXR1cm47CisJCSAgICAgICAgICAgIH0KKwkJICAgICAgICAgICAgcGFyZW50LnBhcmVudC5wYXJlbnQucmVxdWVzdFVzZXJUb0NvbnRhY3RMaXN0LmRvQ2FsbCgpOworCQkgICAgICAgIDwvaGFuZGxlcj4KKwkJICAgICAgICA8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IjExODYiIC8+CisJCSAgICA8L21pbmlJY29uc0ltYWdlPiAKKwkJICAgIAorCQkgICAgPG1pbmlJY29ucyBuYW1lPSJtZXNzYWdlIiB5PSIxIiB4PSIyMCIgcmVzb3VyY2U9InByaXZhdGVfbWVzc2FnZV9hZGRfcnNjIiB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIAorICAgICAgICAgICAgICAgICAgIHNob3doYW5kY3Vyc29yPSJ0cnVlIj4KKyAgICAgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIlN0YXJ0IENvbmZlcmVuY2UgMSAiLHBhcmVudC5wYXJlbnQucGFyZW50LnJlZk9iai51c2VyX2lkKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIlN0YXJ0IENvbmZlcmVuY2UgMiAiLHBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudCk7CisgICAgICAgICAgICAgICAgICAgIHBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5uZXdNZXNzYWdlKHBhcmVudC5wYXJlbnQucGFyZW50LnJlZk9iaik7CisgICAgICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAgICAgICAgIDxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iMTI1MyIgLz4KKyAgICAgICAgICAgIDwvbWluaUljb25zPiAKKwkJICAgIAorCQkgICAgPG1pbmlJY29ucyBuYW1lPSJwcm9maWxlIiB5PSIxIiB4PSI0MCIgcmVzb3VyY2U9InVzZXJfcHJvZmlsZV9yc2MiIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCIgCisJICAgICAgICAgICAgICAgc2hvd2hhbmRjdXJzb3I9InRydWUiPgorCQkgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorCQkgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiU3RhcnQgQ29uZmVyZW5jZSIpOworCQkgICAgICAgICAgICBuZXcgbHoudmlld1VzZXJQcm9maWxlV2luZG93KGNhbnZhcyx7CisJCQkJICAgICAgICAgICAgCXVzZXJJZDpwYXJlbnQucGFyZW50LnBhcmVudC5yZWZPYmoudXNlcl9pZAorCQkJCSAgICAgICAgICAgIH0pOworCQkgICAgICAgIDwvaGFuZGxlcj4KKwkJICAgICAgICA8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IjEyMzYiIC8+CisJCSAgICA8L21pbmlJY29ucz4gCisJCSAgICAKKwkgICAgCisJICAgIDwvdmlldz4KKwkJCisJCTx2aWV3IGhlaWdodD0iJG9uY2V7IHBhcmVudC5wYXJlbnQuaGVpZ2h0IH0iIHdpZHRoPSIxIiAKKyAgICAgICAgCWFsaWduPSJyaWdodCIgYmdjb2xvcj0iYmxhY2siIC8+CisJPC92aWV3PgorCQorCTwhLS0KKwlwdWJsaWMgTG9uZyByZXF1ZXN0VXNlclRvQ29udGFjdExpc3QoU3RyaW5nIFNJRCwgTG9uZyB1c2VyVG9BZGRfaWQsIAorCQkgICAJCVN0cmluZyBkb21haW4sIFN0cmluZyBwb3J0LCBTdHJpbmcgd2ViYXBwKQorCSAtLT4KKyAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJyZXF1ZXN0VXNlclRvQ29udGFjdExpc3QiIGZ1bmNuYW1lPSJ1c2Vyc2VydmljZS5yZXF1ZXN0VXNlclRvQ29udGFjdExpc3QiIAorCQkJCSAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iIGFjdGl2ZUVycm9ySGFuZGxlcj0idHJ1ZSIgPiAgICAgIAorCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBjYW52YXMuc2Vzc2lvbklkOyA8L21ldGhvZD48L25ldHBhcmFtPgorCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBwYXJlbnQucGFyZW50LnJlZk9iai51c2VyX2lkOyA8L21ldGhvZD48L25ldHBhcmFtPgorICAgIAk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBjYW52YXMuZ2V0SHR0cEhvc3QoKTsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gY2FudmFzLnJlZDVodHRwcG9ydDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gY2FudmFzLmh0dHBSb290S2V5OyA8L21ldGhvZD48L25ldHBhcmFtPgorICAgIAk8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAJCTwhW0NEQVRBWworCSAgICAJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJyZXF1ZXN0VXNlclRvQ29udGFjdExpc3Q6ICIsdmFsdWUpOworCSAgICAJCWlmICh2YWx1ZSA+IDApIHsKKwkgICAgCQkJcGFyZW50LnNldEF0dHJpYnV0ZSgicGVuZGluZyIsdHJ1ZSk7CisJICAgIAkJCXBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQudXBkYXRlUGVuZGluZ1N0YXR1cyhwYXJlbnQuaXRlbUlkKTsKKwkgICAgCQl9CisJICAgIAkJcGFyZW50Lm9ubW91c2VvdXQuc2VuZEV2ZW50KG51bGwpOworICAgIAkJXV0+CisgICAgCTwvaGFuZGxlcj4KKyAgICA8L25ldFJlbW90ZUNhbGxIaWI+CQorCQkJCQkgIAorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy91c2VyU2V0dGluZ3MubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy91c2VyU2V0dGluZ3MubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyZWNkY2QKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL3NldHRpbmdzL3VzZXJTZXR0aW5ncy5sengKQEAgLTAsMCArMSwxNjYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisJCisJCis8Y2xhc3MgbmFtZT0ibWVudUxpc3RJdGVtVXNlclByb2ZpbGUiIGV4dGVuZHM9InZpZXciIGhlaWdodD0iMjQiCisgICAgd2lkdGg9IiR7IHRoaXMuX2N0ZXh0LndpZHRoKzIwIH0iID4KKworICAgIDxhdHRyaWJ1dGUgbmFtZT0iYWN0aW9uIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisKKyAgICA8YXR0cmlidXRlIG5hbWU9Imlzb3BlbiIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iaXNsZWFmIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJsaXN0IiB2YWx1ZT0ibnVsbCIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9InRleHR2YWx1ZSIgdmFsdWU9Im51bGwiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJzZWxlY3RlZCIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0idGV4dExhYmVsIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJsYWJlbExhYmVsaWQiIHR5cGU9Im51bWJlciIgdmFsdWU9Ii0xIiAvPgorCisJPGF0dHJpYnV0ZSBuYW1lPSJsYWJlbGlkIiB0eXBlPSJudW1iZXIiIHNldHRlcj0ic2V0TGFiZWxJZChsYWJlbGlkKSIgLz4KKwk8bWV0aG9kIG5hbWU9InNldExhYmVsSWQiIGFyZ3M9Il9sYWJlbGlkIiA+CisJCXRoaXMubGFiZWxpZCA9IF9sYWJlbGlkOworCQl0aGlzLnNldEF0dHJpYnV0ZSgndGV4dExhYmVsJyxjYW52YXMuZ2V0TGFiZWxOYW1lKHRoaXMubGFiZWxpZCkpOworCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidGhpcy50ZXh0TGFiZWwgOjogIix0aGlzLnRleHRMYWJlbCx0aGlzLmxhYmVsaWQpOworCTwvbWV0aG9kPgorCQorCTxsYWJlbFRvb2x0aXAgbmFtZT0iX2xhYmVsVG9vbHRpcCIgbGFiZWxpZD0iJG9uY2V7IHBhcmVudC5sYWJlbExhYmVsaWQgfSIgLz4KKworICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdmVyIj4KKyAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkKXsKKyAgICAgICAgICAgIHRoaXMuX2JnLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKyAgICAgICAgfQorICAgIDwvaGFuZGxlcj4KKyAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3V0Ij4KKyAgICAgICAgaWYgKCF0aGlzLnNlbGVjdGVkKXsKKyAgICAgICAgICAgIHRoaXMuX2JnLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgICAgICB9CisgICAgPC9oYW5kbGVyPgorCisgICAgPG1ldGhvZCBuYW1lPSJyZXNldEl0ZW0iPgorICAgICAgICB0aGlzLnNlbGVjdGVkID0gZmFsc2U7CisgICAgICAgIHRoaXMuX2JnLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgICAgICB0aGlzLl9jdGV4dC5zZXRBdHRyaWJ1dGUoImZnY29sb3IiLDB4MDAwMDAwKTsKKyAgICA8L21ldGhvZD4KKworICAgIDx2aWV3IG5hbWU9Il9iZyIgdmlzaWJpbGl0eT0iaGlkZGVuIiB3aWR0aD0iJHsgcGFyZW50LndpZHRoLTEgfSIgeT0iMSIKKyAgICAgICAgICBiZ2NvbG9yPSIweEZGRkZGRiIgb3BhY2l0eT0iMC40IiBoZWlnaHQ9IjIzIiAvPgorICAgIDx2aWV3IHdpZHRoPSIxIiBoZWlnaHQ9IjgiIHk9IjgiIGJnY29sb3I9IjB4MDAwMDAwIiB4PSIkeyBwYXJlbnQud2lkdGgtMSB9IiAvPgorICAgIDx0ZXh0Qm94U3ViQmxhbmsgbmFtZT0iX2N0ZXh0IiBmb250c2l6ZT0iMTEiIHRleHQ9IiR7IHBhcmVudC50ZXh0TGFiZWwgfSIgeT0iMiIgLz4KKworICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICB0aGlzLl9iZy5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgIHRoaXMuX2N0ZXh0LnNldEF0dHJpYnV0ZSgiZmdjb2xvciIsMHhGRkZGRkYpOworICAgICAgICB0aGlzLnNlbGVjdGVkPXRydWU7CisgICAgICAgIHBhcmVudC5wYXJlbnQuc2V0U3ViSXRlbSh0aGlzKTsKKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgCis8L2NsYXNzPgorCis8IS0tLSBVc2VyIFByb2ZpbGUgU2V0dGluZyBQYW5lbCAtLT4KKzxjbGFzcyBuYW1lPSJ1c2VyU2V0dGluZ3MiIGV4dGVuZHM9ImJhc2VDb250ZW50VmlldyI+CisJCisgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAgICAgX21haW5TY3JvbGxCYXIuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgIDxoYW5kbGVyIG5hbWU9Im9udGFiY29udGVudGxlYXZlIj4KKyAgICAJLy9DbGVhciByZWZlcmVuY2UgdG8gc2VhcmNoIHRvIG1ha2Ugc3VyZSBpdCB3aWxsIHJlLWluaXRpYWxpemUKKyAgICAJY2FudmFzLnVzZXJTZXR0aW5nc1NlYXJjaFJlZiA9IG51bGw7CisgICAgCV9tYWluU2Nyb2xsQmFyLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKyAgICA8L2hhbmRsZXI+CisJCisJPHZpZXcgbmFtZT0iX3RhYmJhckJnIiB3aWR0aD0iJHsgcGFyZW50LndpZHRoIH0iIGhlaWdodD0iMzIiIHk9IjEiIGJnY29sb3I9IjB4RkFGQUZBIiAvPgorICAgCQorCTx2aWV3IG5hbWU9ImJvcmRlckJhckJvdHRvbSIgeT0iMzQiCisgICAJCQl3aWR0aD0iJHsgcGFyZW50LndpZHRoIH0iIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignbWFpbkJvcmRlckNvbG9yJykgfSIgaGVpZ2h0PSIxIiAvPiAgCisgICAJCQkKKyAgICA8YXR0cmlidXRlIG5hbWU9InJlZk9iakl0ZW0iIHZhbHVlPSJudWxsIiAvPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iZG9TZWxlY3Rpb24iIGFyZ3M9Im9ialJlZiI+CisgICAgCWlmICh0aGlzLnJlZk9iakl0ZW0gIT0gbnVsbCkgeworICAgIAkJdGhpcy5yZWZPYmpJdGVtLmRlc2VsZWN0KCk7CisgICAgCX0KKyAgICAJdGhpcy5yZWZPYmpJdGVtID0gb2JqUmVmOworCQl0aGlzLl9jb250ZW50LmhpZGVBbGwoKTsKKwkJdGhpcy5fY29udGVudFtvYmpSZWYubmFtZV0uc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgIAl0aGlzLnJlZk9iakl0ZW0uc2VsZWN0KCk7CisgICAgPC9tZXRob2Q+CisgICAgICAKKwk8dmlldyBuYW1lPSJfdGFiYmFyIiB3aWR0aD0iJHsgY2FudmFzLndpZHRoIH0iIHk9IjEiIGhlaWdodD0iMzIiCisgIAkJICBsYXlvdXQ9ImF4aXM6eDtzcGFjaW5nOjI7aW5zZXQ6MiIgPgorICAJCSAgCisgICAgCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisJICAgCQlmb3IgKHZhciBlZyBpbiB0aGlzLnN1YnZpZXdzKSB7CisgICAgICAgICAgIAkJdGhpcy5zdWJ2aWV3c1tlZ10uZGVzZWxlY3QoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGNhbnZhcy51c2VyU2V0dGluZ3NNb2R1bGVPcHQgPT0gImVkaXRVc2VyUHJvZmlsZSIpIHsKKwkgICAgICAgIAl0aGlzLl9lZGl0VXNlclByb2ZpbGUub25jbGljay5zZW5kRXZlbnQobnVsbCk7CisJICAgICAgICB9IGVsc2UgaWYgKGNhbnZhcy51c2VyU2V0dGluZ3NNb2R1bGVPcHQgPT0gInVzZXJQcm9maWxlIikgeworCSAgICAgICAgCXRoaXMuX3VzZXJQcm9maWxlLm9uY2xpY2suc2VuZEV2ZW50KG51bGwpOworCSAgICAgICAgfSBlbHNlIGlmIChjYW52YXMudXNlclNldHRpbmdzTW9kdWxlT3B0ID09ICJ1c2VyU2VhcmNoIikgeworCSAgICAgICAgICAgIHRoaXMuX3NlYXJjaFVzZXJQcm9maWxlLm9uY2xpY2suc2VuZEV2ZW50KG51bGwpOworCSAgICAgICAgICAgIHBhcmVudC5fY29udGVudC5fc2VhcmNoVXNlclByb2ZpbGUuc2VhcmNoQnlVcGRhdGUoKTsKKwkgICAgICAgIH0gZWxzZSB7CisJICAgICAgICAJdGhpcy5fZWRpdFVzZXJDb250YWN0cy5vbmNsaWNrLnNlbmRFdmVudChudWxsKTsKKwkgICAgICAgIH0KKwkgICAJPC9oYW5kbGVyPgorCQkKKwkJPHRhYkJ1dHRvbk1haW4gbmFtZT0iX3VzZXJQcm9maWxlIiBzZWxlY3RlZD0idHJ1ZSIgaGVpZ2h0PSIkb25jZXsgcGFyZW50LmhlaWdodCB9IiAKKyAgICAgICAgCQkgeD0iMCIgbGFiZWxpZD0iMTE3MCIgd2lkdGg9IiR7IChwYXJlbnQud2lkdGgtMTApLzQgfSIgc2hvd0ljb249ImZhbHNlIiAvPgorICAgICAgICAKKyAgICAgICAgPHRhYkJ1dHRvbk1haW4gbmFtZT0iX2VkaXRVc2VyQ29udGFjdHMiIHNlbGVjdGVkPSJ0cnVlIiBoZWlnaHQ9IiRvbmNleyBwYXJlbnQuaGVpZ2h0IH0iIAorICAgICAgICAJCSB4PSIwIiBsYWJlbGlkPSIxMTg4IiB3aWR0aD0iJHsgKHBhcmVudC53aWR0aC0xMCkvNCB9IiBzaG93SWNvbj0iZmFsc2UiIC8+CisJCQorCQk8dGFiQnV0dG9uTWFpbiBuYW1lPSJfZWRpdFVzZXJQcm9maWxlIiB3aWR0aD0iJHsgKHBhcmVudC53aWR0aC0xMCkvNCB9IiBoZWlnaHQ9IiRvbmNleyBwYXJlbnQuaGVpZ2h0IH0iIAorICAgICAgICAJCSBsYWJlbGlkPSIxMTcxIiBzaG93SWNvbj0iZmFsc2UiIC8+CisgICAgICAgIAkJCisgICAgICAgIDx0YWJCdXR0b25NYWluIG5hbWU9Il9zZWFyY2hVc2VyUHJvZmlsZSIgd2lkdGg9IiR7IChwYXJlbnQud2lkdGgtMTApLzQgfSIgaGVpZ2h0PSIkb25jZXsgcGFyZW50LmhlaWdodCB9IiAKKyAgICAgICAgCQkgbGFiZWxpZD0iMTE3MiIgc2hvd0ljb249ImZhbHNlIiAvPgorCQkKKwk8L3ZpZXc+CisJCisJPHZpZXcgbmFtZT0iX2NvbnRlbnQiPgorCQkKKwkJPG1ldGhvZCBuYW1lPSJoaWRlQWxsIj4KKwkJCWZvciAodmFyIGVnIGluIHRoaXMuc3Vidmlld3MpIHsKKwkJCQl0aGlzLnN1YnZpZXdzW2VnXS5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKwkJCX0KKwkJPC9tZXRob2Q+CisJCQorCQk8dmlld1VzZXJQcm9maWxlIG5hbWU9Il91c2VyUHJvZmlsZSIgeT0iNDAiIC8+CisJCQkKKwkgICAgPGVkaXRVc2VyQ29udGFjdHMgbmFtZT0iX2VkaXRVc2VyQ29udGFjdHMiIHZpc2liaWxpdHk9ImhpZGRlbiIgIAorCSAgICAJCQl5PSI0MCIgaGVpZ2h0PSIkb25jZXsgY2FudmFzLmhlaWdodCAtIDg0IC0gNDAgfSIgLz4KKwkgICAgIAorCSAgICA8ZWRpdFVzZXJQcm9maWxlIG5hbWU9Il9lZGl0VXNlclByb2ZpbGUiIHZpc2liaWxpdHk9ImhpZGRlbiIgIHk9IjQwIiAvPgorCSAgICAKKwkgICAgPHNlYXJjaFVzZXJQcm9maWxlIG5hbWU9Il9zZWFyY2hVc2VyUHJvZmlsZSIgdmlzaWJpbGl0eT0iaGlkZGVuIiAKKwkgICAgCQkJeT0iNDAiIGhlaWdodD0iJG9uY2V7IGNhbnZhcy5oZWlnaHQgLSBjYW52YXMubmF2aUhlaWdodCAtIDQwIH0iIC8+CisJICAgIAkJCQorICAgIDwvdmlldz4KKyAgICAgICAgICAgCQkJICAgICAgCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL3NldHRpbmdzL3VzZXJjb250YWN0cy9jb250YWN0c0xpc3RJdGVtLmx6eCBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvc2V0dGluZ3MvdXNlcmNvbnRhY3RzL2NvbnRhY3RzTGlzdEl0ZW0ubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3N2RlMGIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL3NldHRpbmdzL3VzZXJjb250YWN0cy9jb250YWN0c0xpc3RJdGVtLmx6eApAQCAtMCwwICsxLDEzNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9ImNvbnRhY3RzTGlzdEl0ZW0iIGV4dGVuZHM9ImJhc2VQYWdpbmdMaXN0SXRlbSIgc2hvd2hhbmRjdXJzb3I9ImZhbHNlIiBoZWlnaHQ9IjQwIj4KKwkKKwk8YXR0cmlidXRlIG5hbWU9InVzZXJuYW1lIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJzaGFyZUNhbGVuZGFyIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJzZWFyY2hVc2VyUHJvZmlsZUltYWdlIiB2YWx1ZT0ibnVsbCIgLz4KKwkKKwk8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3ZlciI+CisJCTwhW0NEQVRBWworCQkJaWYgKHRoaXMuc2VhcmNoVXNlclByb2ZpbGVJbWFnZSAhPSBudWxsKSB7CisJCQkJdGhpcy5zZWFyY2hVc2VyUHJvZmlsZUltYWdlLmRlc3Ryb3koKTsKKwkJCQl0aGlzLnNlYXJjaFVzZXJQcm9maWxlSW1hZ2UgPSBudWxsOworCQkJfQorCQkJCisJCQlpZiAodGhpcy5yZWZPYmogIT0gbnVsbCkgeworCQkJCXRoaXMuc2VhcmNoVXNlclByb2ZpbGVJbWFnZSA9IG5ldyBsei5zZWFyY2hVc2VyUHJvZmlsZUltYWdlKGNhbnZhcyx7CisJCQkJCQl4OnRoaXMuZ2V0QXR0cmlidXRlUmVsYXRpdmUoIngiLGNhbnZhcykgLSAxMjAsCisJCQkJCQl5OnRoaXMuZ2V0QXR0cmlidXRlUmVsYXRpdmUoInkiLGNhbnZhcykgLSAzMCwKKwkJCQkJCXByb2ZpbGVVcmw6IGNhbnZhcy5nZXRQaWN0dXJlVXJsKHRoaXMucmVmT2JqLnBpY3R1cmV1cmkKKwkJCQkJCQksICcmbW9kdWxlTmFtZT1yZW1vdGV1c2VycHJvZmlsZSZyZW1vdGVVc2VyaWQ9Jyt0aGlzLnJlZk9iai51c2VyX2lkKQorCQkJCQl9KTsKKwkJCX0KKwkJXV0+CisJPC9oYW5kbGVyPgorCQorCTxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdXQiPgorCQlpZiAodGhpcy5zZWFyY2hVc2VyUHJvZmlsZUltYWdlICE9IG51bGwpIHsKKwkJCXRoaXMuc2VhcmNoVXNlclByb2ZpbGVJbWFnZS5kZXN0cm95KCk7CisJCQl0aGlzLnNlYXJjaFVzZXJQcm9maWxlSW1hZ2UgPSBudWxsOworCQl9CisJPC9oYW5kbGVyPgorCQorCTx0dXJuT3ZlclRleHRJdGVtIG5hbWU9Il91c2VybmFtZSIgd2lkdGg9IjIwMCIgbXVsdGlsaW5lPSJ0cnVlIgorCQkJCQkgIHRleHQ9IiR7IHBhcmVudC51c2VybmFtZSB9IiAvPgorCQkJCQkgIAorCQkJCQkgIDwhLS0KKwk8dHVybk92ZXJUZXh0SXRlbSBuYW1lPSJfdGltZXpvbmUiIHdpZHRoPSI4MCIgbXVsdGlsaW5lPSJ0cnVlIgorCQkJCQkgIHRleHQ9IiR7IHBhcmVudC50aW1lem9uZSB9IiAvPgorCTx0dXJuT3ZlclRleHRJdGVtIG5hbWU9Il9zZWFyY2hPZmZlcnMiIHdpZHRoPSIzMDAiIG11bHRpbGluZT0idHJ1ZSIKKwkJCQkJICB0ZXh0PSIkeyBwYXJlbnQuc2VhcmNoT2ZmZXJzIH0iIC8+CisJPHR1cm5PdmVyVGV4dEl0ZW0gbmFtZT0iX3NlYXJjaFNlYXJjaHMiIHdpZHRoPSIzMDAiIG11bHRpbGluZT0idHJ1ZSIKKwkJCQkJICB0ZXh0PSIkeyBwYXJlbnQuc2VhcmNoU2VhcmNocyB9IiAvPgorCQkJCQkgICAtLT4KKwkKKwk8dmlldyBuYW1lPSJfaWNvbnMiID4KKwkJCisJCTx2aWV3IHZpc2libGU9IiR7IHBhcmVudC5wYXJlbnQuY2xpY2thYmxlIH0iPgorCQkJCisJCQk8bWluaUljb25zIG5hbWU9Im1lc3NhZ2UiIHk9IjEiIHg9IjEiIHJlc291cmNlPSJwcml2YXRlX21lc3NhZ2VfYWRkX3JzYyIgd2lkdGg9IjE4IiBoZWlnaHQ9IjE4IiAKKwkgICAgICAgICAgICAgICBzaG93aGFuZGN1cnNvcj0idHJ1ZSI+CisJCSAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisJCSAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJTdGFydCBDb25mZXJlbmNlICIscGFyZW50LnBhcmVudC5wYXJlbnQucmVmT2JqLnVzZXJfaWQpOworCQkgICAgICAgICAgICBwYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQuYWRkTWVzc2FnZShwYXJlbnQucGFyZW50LnBhcmVudC5yZWZPYmopOworCQkgICAgICAgIDwvaGFuZGxlcj4KKwkJICAgICAgICA8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IjEyNTMiIC8+CisJCSAgICA8L21pbmlJY29ucz4gCisJCQkKKwkJICAgIDxtaW5pSWNvbnMgbmFtZT0icHJvZmlsZSIgeT0iMSIgeD0iMjAiIHJlc291cmNlPSJ1c2VyX3Byb2ZpbGVfcnNjIiB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIAorCSAgICAgICAgICAgICAgIHNob3doYW5kY3Vyc29yPSJ0cnVlIj4KKwkJICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKwkJICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIlN0YXJ0IENvbmZlcmVuY2UgIixwYXJlbnQucGFyZW50LnBhcmVudC5yZWZPYmoudXNlcl9pZCk7CisJCSAgICAgICAgICAgIG5ldyBsei52aWV3VXNlclByb2ZpbGVXaW5kb3coY2FudmFzLHsKKwkJCQkgICAgICAgICAgICAJdXNlcklkOnBhcmVudC5wYXJlbnQucGFyZW50LnJlZk9iai51c2VyX2lkCisJCQkJICAgICAgICAgICAgfSk7CisJCSAgICAgICAgPC9oYW5kbGVyPgorCQkgICAgICAgIDxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iMTIzNiIgLz4KKwkJICAgIDwvbWluaUljb25zPiAKKwkJICAgIAorCQkgICAgPCEtLQorCQkgICAgIHNldENhbGVuZGFyU2hhcmluZworCQkgICAgIC0tPgorCQkgICAgPG1pbmlJY29ucyBuYW1lPSJzaGFyZUNhbGVuZGFyIiB5PSIxIiB4PSI0MCIgcmVzb3VyY2U9InVzZXJfY29udGFjdF9jYWxlbmRhcl9hZGRfcnNjIiB3aWR0aD0iMTgiIGhlaWdodD0iMTgiIAorICAgICAgICAgICAgICAgICAgIHZpc2liaWxpdHk9IiR7IChwYXJlbnQucGFyZW50LnBhcmVudC5zaGFyZUNhbGVuZGFyKSA/ICdoaWRkZW4nIDogJ3Zpc2libGUnIH0iIHNob3doYW5kY3Vyc29yPSJ0cnVlIj4KKyAgICAgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIkRvIFNoYXJlICIpOworICAgICAgICAgICAgICAgICAgICBwYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQuc2V0Q2FsZW5kYXJTaGFyaW5nKHBhcmVudC5wYXJlbnQucGFyZW50LnJlZk9iai51c2VyQ29udGFjdElkLCB0cnVlKTsKKyAgICAgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgICAgICAgICAgPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSIxMjc0IiAvPgorICAgICAgICAgICAgPC9taW5pSWNvbnM+IAorICAgICAgICAgICAgCisgICAgICAgICAgICA8bWluaUljb25zIG5hbWU9InVuU2hhcmVDYWxlbmRhciIgeT0iMSIgeD0iNDAiIHJlc291cmNlPSJ1c2VyX2NvbnRhY3RfY2FsZW5kYXJfZGVsZXRlX3JzYyIgd2lkdGg9IjE4IiBoZWlnaHQ9IjE4IiAKKyAgICAgICAgICAgICAgICAgICB2aXNpYmlsaXR5PSIkeyAocGFyZW50LnBhcmVudC5wYXJlbnQuc2hhcmVDYWxlbmRhcikgPyAndmlzaWJsZScgOiAnaGlkZGVuJyB9IiBzaG93aGFuZGN1cnNvcj0idHJ1ZSI+CisgICAgICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJEbyBOb3QgU2hhcmUgIik7CisgICAgICAgICAgICAgICAgICAgIHBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5zZXRDYWxlbmRhclNoYXJpbmcocGFyZW50LnBhcmVudC5wYXJlbnQucmVmT2JqLnVzZXJDb250YWN0SWQsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgICAgICAgICAgPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSIxMjc1IiAvPgorICAgICAgICAgICAgPC9taW5pSWNvbnM+IAorCQkgICAgCisJCSAgICA8bWluaUljb25zSW1hZ2Ugc3JjPSIkb25jZXsgY2FudmFzLmdldFRoZW1lSW1hZ2UoJ2J1dHRvbl9jYW5jZWxfcnNjJykgfSIgCisJCSAgICAJCQluYW1lPSJkZW55IiB5PSIxIiB4PSI2MCIgd2lkdGg9IjE4IiBoZWlnaHQ9IjE4IiBzaG93aGFuZGN1cnNvcj0idHJ1ZSI+CisJCQkJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisJCQkJCW5ldyBsei5jb25maXJtYXRpb25TaW5nbGUoY2FudmFzLm1haW5fY29udGVudC5fY29udGVudC5pbm5lcix7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxpZDoxMjMzLGxhYmVsaWRlcnJvcjoxMjMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZk9iajp0aGlzLHNob3dDaGVja0JveDpmYWxzZX0pOworICAgICAgICAgICAgCisJCSAgICAgICAgPC9oYW5kbGVyPgorCQkgICAgICAgIAorCQkgICAgICAgIDxtZXRob2QgbmFtZT0ic2VuZENvbmZpcm1hdGlvbiIgYXJncz0ieWVzbm8iID4KKwkJICAgICAgICAgICAgcGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LnJlbW92ZUNvbnRhY3RVc2VyTWV0aG9kKHBhcmVudC5wYXJlbnQucGFyZW50LnJlZk9iai51c2VyQ29udGFjdElkKTsKKwkJICAgICAgICA8L21ldGhvZD4KKwkJICAgICAgICAgICAgCisJCSAgICAgICAgPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSIxMjM0IiAvPgorCQkgICAgPC9taW5pSWNvbnNJbWFnZT4KKwkJICAgIAorCSAgICA8L3ZpZXc+CisJCQorCQk8dmlldyBoZWlnaHQ9IiRvbmNleyBwYXJlbnQucGFyZW50LmhlaWdodCB9IiB3aWR0aD0iMSIgCisgICAgICAgIAlhbGlnbj0icmlnaHQiIGJnY29sb3I9ImJsYWNrIiAvPgorCTwvdmlldz4KKwkKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvc2V0dGluZ3MvdXNlcmNvbnRhY3RzL2VkaXRVc2VyQ29udGFjdHMubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy91c2VyY29udGFjdHMvZWRpdFVzZXJDb250YWN0cy5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmI2N2EyOAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvc2V0dGluZ3MvdXNlcmNvbnRhY3RzL2VkaXRVc2VyQ29udGFjdHMubHp4CkBAIC0wLDAgKzEsNzIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisJPGluY2x1ZGUgaHJlZj0idXNlckNvbnRhY3RzLmx6eCIgLz4KKwkKKzxjbGFzcyBuYW1lPSJlZGl0VXNlckNvbnRhY3RzIiBleHRlbmRzPSJ2aWV3Ij4KKwkKKwk8YXR0cmlidXRlIG5hbWU9ImNvbnRhY3RDb250ZW50IiB2YWx1ZT0ibnVsbCIvPgorCQorCTxoYW5kbGVyIG5hbWU9Im9udmlzaWJsZSIgYXJncz0idiI+CisJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJlZGl0VXNlckNvbnRhY3RzIG9udmlzaWJsZSIsdik7CisJCWlmICh2KSB7CisJCQlpZiAodGhpcy5jb250YWN0Q29udGVudCA9PSBudWxsKSB7CisJCQkJLy9XZSBkbyBzb21lIHRyaWNrcyB0byByZW5kZXIgLyB0byBzaG93IHNvbWUgb2YgdGhlIHZpc2libGUgYXJlYSAKKwkJCQkvL2V2ZW4gaWYgdGhlIFVJIGlzIG5vdCB5ZXQgY29tcGxldGVseSByZW5kZXJlZAorCQkJCWx6LlRpbWVyLmFkZFRpbWVyKCBuZXcgTHpEZWxlZ2F0ZSggdGhpcywgImluaXRDb250ZW50IiApLCAyNTAgKTsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCWlmICh0aGlzLmNvbnRhY3RDb250ZW50ICE9IG51bGwpIHsKKwkJCQl0aGlzLmNvbnRhY3RDb250ZW50LmRlc3Ryb3koKTsKKwkJCQl0aGlzLmNvbnRhY3RDb250ZW50ID0gbnVsbDsKKwkJCX0KKwkJfQorCTwvaGFuZGxlcj4KKwkKKwk8bWV0aG9kIG5hbWU9ImluaXRDb250ZW50IiBhcmdzPSJ0UmVmIj4KKwkJaWYgKHRoaXMuY29udGFjdENvbnRlbnQgIT0gbnVsbCkgeworCQkJcmV0dXJuOworCQl9CisJCXRoaXMuY29udGFjdENvbnRlbnQgPSBuZXcgbHouZWRpdFVzZXJDb250YWN0c0NvbnRlbnQodGhpcyk7CisJPC9tZXRob2Q+CisJCis8L2NsYXNzPgorCis8Y2xhc3MgbmFtZT0iZWRpdFVzZXJDb250YWN0c0NvbnRlbnQiIGV4dGVuZHM9InZpZXciIGhlaWdodD0iJG9uY2V7IHBhcmVudC5oZWlnaHQgfSI+CisJCisJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKwkJLy9XZSBkbyBzb21lIHRyaWNrcyB0byByZW5kZXIgLyB0byBzaG93IHNvbWUgb2YgdGhlIHZpc2libGUgYXJlYSAKKwkJLy9ldmVuIGlmIHRoZSBVSSBpcyBub3QgeWV0IGNvbXBsZXRlbHkgcmVuZGVyZWQKKwkJbHouVGltZXIuYWRkVGltZXIoIG5ldyBMekRlbGVnYXRlKCB0aGlzLCAiaW5pdENvbnRlbnQiICksIDI1MCApOworCTwvaGFuZGxlcj4KKwkKKwk8bWV0aG9kIG5hbWU9ImluaXRDb250ZW50IiBhcmdzPSJ0UmVmIj4KKwkJbmV3IGx6LnVzZXJDb250YWN0cyh0aGlzLHtuYW1lOidfdXNlckNvbnRhY3RzJ30pOworCTwvbWV0aG9kPgorCQorCTxwcml2YXRlTWVzc2FnZXMgbmFtZT0iX3ByaXZhdGVNZXNzYWdlcyIgeD0iMCIgeT0iMCIgLz4KKwkKKwk8dmlldyBoZWlnaHQ9IiRvbmNleyBwYXJlbnQuaGVpZ2h0IH0iIHdpZHRoPSIxIiB4PSIkb25jZXsgY2FudmFzLndpZHRoLTI3NiB9IiAKKwkJICBiZ2NvbG9yPSIkb25jZXsgY2FudmFzLmdldFRoZW1lQ29sb3IoJ21haW5Cb3JkZXJDb2xvcicpIH0iPjwvdmlldz4KKwkKKzwvY2xhc3M+CQorCQorPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy91c2VyY29udGFjdHMvbGlicmFyeS5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL3NldHRpbmdzL3VzZXJjb250YWN0cy9saWJyYXJ5Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOGQyOWJlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy91c2VyY29udGFjdHMvbGlicmFyeS5sengKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKwkKKwkKKyAgICA8aW5jbHVkZSBocmVmPSJjb250YWN0c0xpc3RJdGVtLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJwZW5kaW5nQ29udGFjdHNMaXN0SXRlbS5sengiIC8+CisgICAgPGluY2x1ZGUgaHJlZj0idXNlckNvbnRhY3RzLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJlZGl0VXNlckNvbnRhY3RzLmx6eCIgLz4KKyAgICAKKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy91c2VyY29udGFjdHMvcGVuZGluZ0NvbnRhY3RzTGlzdEl0ZW0ubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy91c2VyY29udGFjdHMvcGVuZGluZ0NvbnRhY3RzTGlzdEl0ZW0ubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4YjFmNWEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL3NldHRpbmdzL3VzZXJjb250YWN0cy9wZW5kaW5nQ29udGFjdHNMaXN0SXRlbS5sengKQEAgLTAsMCArMSwxMDUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKzxjbGFzcyBuYW1lPSJwZW5kaW5nQ29udGFjdHNMaXN0SXRlbSIgZXh0ZW5kcz0iYmFzZVBhZ2luZ0xpc3RJdGVtIiBzaG93aGFuZGN1cnNvcj0iZmFsc2UiIGhlaWdodD0iNDAiPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0idXNlcm5hbWUiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9InNlYXJjaFVzZXJQcm9maWxlSW1hZ2UiIHZhbHVlPSJudWxsIiAvPgorCQorCTxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdmVyIj4KKwkJPCFbQ0RBVEFbCisJCQlpZiAodGhpcy5zZWFyY2hVc2VyUHJvZmlsZUltYWdlICE9IG51bGwpIHsKKwkJCQl0aGlzLnNlYXJjaFVzZXJQcm9maWxlSW1hZ2UuZGVzdHJveSgpOworCQkJCXRoaXMuc2VhcmNoVXNlclByb2ZpbGVJbWFnZSA9IG51bGw7CisJCQl9CisJCQkKKwkJCWlmICh0aGlzLnJlZk9iaiAhPSBudWxsKSB7CisJCQkJdGhpcy5zZWFyY2hVc2VyUHJvZmlsZUltYWdlID0gbmV3IGx6LnNlYXJjaFVzZXJQcm9maWxlSW1hZ2UoY2FudmFzLHsKKwkJCQkJCXg6dGhpcy5nZXRBdHRyaWJ1dGVSZWxhdGl2ZSgieCIsY2FudmFzKSAtIDEyMCwKKwkJCQkJCXk6dGhpcy5nZXRBdHRyaWJ1dGVSZWxhdGl2ZSgieSIsY2FudmFzKSAtIDMwLAorCQkJCQkJcHJvZmlsZVVybDogY2FudmFzLmdldFBpY3R1cmVVcmwodGhpcy5yZWZPYmoucGljdHVyZXVyaQorCQkJCQkJCSwgJyZtb2R1bGVOYW1lPXJlbW90ZXVzZXJwcm9maWxlJnJlbW90ZVVzZXJpZD0nK3RoaXMucmVmT2JqLnVzZXJfaWQpCisJCQkJCX0pOworCQkJfQorCQldXT4KKwk8L2hhbmRsZXI+CisJCisJPGhhbmRsZXIgbmFtZT0ib25tb3VzZW91dCI+CisJCWlmICh0aGlzLnNlYXJjaFVzZXJQcm9maWxlSW1hZ2UgIT0gbnVsbCkgeworCQkJdGhpcy5zZWFyY2hVc2VyUHJvZmlsZUltYWdlLmRlc3Ryb3koKTsKKwkJCXRoaXMuc2VhcmNoVXNlclByb2ZpbGVJbWFnZSA9IG51bGw7CisJCX0KKwk8L2hhbmRsZXI+CisJCisJPHR1cm5PdmVyVGV4dEl0ZW0gbmFtZT0iX3VzZXJuYW1lIiB3aWR0aD0iMjAwIiBtdWx0aWxpbmU9InRydWUiCisJCQkJCSAgdGV4dD0iJHsgcGFyZW50LnVzZXJuYW1lIH0iIC8+CisJCQkJCSAgCisJCQkJCSAgPCEtLQorCTx0dXJuT3ZlclRleHRJdGVtIG5hbWU9Il90aW1lem9uZSIgd2lkdGg9IjgwIiBtdWx0aWxpbmU9InRydWUiCisJCQkJCSAgdGV4dD0iJHsgcGFyZW50LnRpbWV6b25lIH0iIC8+CisJPHR1cm5PdmVyVGV4dEl0ZW0gbmFtZT0iX3NlYXJjaE9mZmVycyIgd2lkdGg9IjMwMCIgbXVsdGlsaW5lPSJ0cnVlIgorCQkJCQkgIHRleHQ9IiR7IHBhcmVudC5zZWFyY2hPZmZlcnMgfSIgLz4KKwk8dHVybk92ZXJUZXh0SXRlbSBuYW1lPSJfc2VhcmNoU2VhcmNocyIgd2lkdGg9IjMwMCIgbXVsdGlsaW5lPSJ0cnVlIgorCQkJCQkgIHRleHQ9IiR7IHBhcmVudC5zZWFyY2hTZWFyY2hzIH0iIC8+CisJCQkJCSAgIC0tPgorCQorCTx2aWV3IG5hbWU9Il9pY29ucyIgPgorCQkKKwkJPHZpZXcgdmlzaWJsZT0iJHsgcGFyZW50LnBhcmVudC5jbGlja2FibGUgfSI+CisJCQkKKwkJCTxtaW5pSWNvbnMgbmFtZT0iYWRkIiB5PSIxIiB4PSIxIiByZXNvdXJjZT0idXNlcl9tb2RlcmF0b3JfbGlzdF9hcHBseV9yc2MiIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCIgCisJICAgICAgICAgICAgICAgc2hvd2hhbmRjdXJzb3I9InRydWUiPgorCQkJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorCQkgICAgICAgICAgICBwYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQuc2V0UGVuZGluZ1N0YXR1cyhwYXJlbnQucGFyZW50LnBhcmVudC5yZWZPYmoudXNlckNvbnRhY3RJZCx0cnVlKTsKKwkJICAgICAgICA8L2hhbmRsZXI+CisJCSAgICAgICAgPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSIxMTkwIiAvPgorCQkgICAgPC9taW5pSWNvbnM+CisJICAgIAorCSAgICAJPG1pbmlJY29uc0ltYWdlIHNyYz0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUltYWdlKCdidXR0b25fY2FuY2VsX3JzYycpIH0iIAorICAgIAkJCQluYW1lPSJkZW55IiB5PSIxIiB4PSIyMCIgd2lkdGg9IjE4IiBoZWlnaHQ9IjE4IiBzaG93aGFuZGN1cnNvcj0idHJ1ZSI+CisJCQkJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisJCSAgICAgICAgICAgIHBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LnBhcmVudC5zZXRQZW5kaW5nU3RhdHVzKHBhcmVudC5wYXJlbnQucGFyZW50LnJlZk9iai51c2VyQ29udGFjdElkLGZhbHNlKTsKKwkJICAgICAgICA8L2hhbmRsZXI+CisJCSAgICAgICAgPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSIxMTkxIiAvPgorCQkgICAgPC9taW5pSWNvbnNJbWFnZT4KKwkJICAgIAorCQkgICAgPG1pbmlJY29ucyBuYW1lPSJwcm9maWxlIiB5PSIxIiB4PSI0MCIgcmVzb3VyY2U9InVzZXJfcHJvZmlsZV9yc2MiIHdpZHRoPSIxOCIgaGVpZ2h0PSIxOCIgCisJICAgICAgICAgICAgICAgc2hvd2hhbmRjdXJzb3I9InRydWUiPgorCQkgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorCQkgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiU3RhcnQgQ29uZmVyZW5jZSIscGFyZW50LnBhcmVudC5wYXJlbnQucmVmT2JqLm93bmVyLnVzZXJfaWQpOworCQkgICAgICAgICAgICBuZXcgbHoudmlld1VzZXJQcm9maWxlV2luZG93KGNhbnZhcyx7CisJCQkJICAgICAgICAgICAgCXVzZXJJZDpwYXJlbnQucGFyZW50LnBhcmVudC5yZWZPYmoub3duZXIudXNlcl9pZAorCQkJCSAgICAgICAgICAgIH0pOworCQkgICAgICAgIDwvaGFuZGxlcj4KKwkJICAgICAgICA8bGFiZWxUb29sdGlwIGxhYmVsaWQ9IjEyMzYiIC8+CisJCSAgICA8L21pbmlJY29ucz4gCisJCSAgICAKKwkgICAgPC92aWV3PgorCQkKKwkJPHZpZXcgaGVpZ2h0PSIkb25jZXsgcGFyZW50LnBhcmVudC5oZWlnaHQgfSIgd2lkdGg9IjEiIAorICAgICAgICAJYWxpZ249InJpZ2h0IiBiZ2NvbG9yPSJibGFjayIgLz4KKwk8L3ZpZXc+CisJCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL3NldHRpbmdzL3VzZXJjb250YWN0cy91c2VyQ29udGFjdHMubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy91c2VyY29udGFjdHMvdXNlckNvbnRhY3RzLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTI1ODY4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy91c2VyY29udGFjdHMvdXNlckNvbnRhY3RzLmx6eApAQCAtMCwwICsxLDUzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKwkKKzxjbGFzcyBuYW1lPSJ1c2VyQ29udGFjdHMiIGV4dGVuZHM9InZpZXciIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodCB9IgorCSAgIHdpZHRoPSIyNzYiIHg9IiRvbmNleyBjYW52YXMud2lkdGgtdGhpcy53aWR0aCArIDIgfSI+CisJCisJPG1ldGhvZCBuYW1lPSJyZWxvYWQiPgorCQl0aGlzLl9wZW5kaW5nQ29udGFjdHMuX3RhYmxlLmdldFBlbmRpbmdVc2VyQ29udGFjdHMuZG9DYWxsKCk7CisJCXRoaXMuX2F2YWlsYWJsZUNvbnRhY3RzLl90YWJsZS5nZXRVc2VyQ29udGFjdHMuZG9DYWxsKCk7CisJPC9tZXRob2Q+CisJCisJPCEtLQorCXB1YmxpYyBMb25nIGNoYW5nZVBlbmRpbmdTdGF0dXNVc2VyQ29udGFjdHMoCisJCVN0cmluZyBTSUQsIExvbmcgdXNlckNvbnRhY3RJZCwgQm9vbGVhbiBwZW5kaW5nKSB7CisJIC0tPgorCTx2aWV3IG5hbWU9Il9wZW5kaW5nQ29udGFjdHMiIGhlaWdodD0iJG9uY2V7IHBhcmVudC5oZWlnaHQvMiB9IiA+CisJCQorCQk8IS0tCisJCXB1YmxpYyBMaXN0PFVzZXJDb250YWN0cz4gZ2V0UGVuZGluZ1VzZXJDb250YWN0cyhTdHJpbmcgU0lEKQorCQkgLS0+CisJCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisJCQl0aGlzLl90YWJsZS5nZXRQZW5kaW5nVXNlckNvbnRhY3RzLmRvQ2FsbCgpOworCQk8L2hhbmRsZXI+IAorCSAgICAJCSAKKwkJCisJCTxsYWJlbFRleHQgbmFtZT0iX2xhYmVsUGVuZGluZ1VzZXJzIiB4PSIyIiBsYWJlbGlkPSIxMTg5IiBmb250c3R5bGU9ImJvbGQiIC8+CisJCQorCQk8dHVybk92ZXJMaXN0T3JkZXJlZFBhZ2VkIG5hbWU9Il90YWJsZSIgc2hvd1RvcEJhcj0iZmFsc2UiIHg9IjIiIAorCQkJCQkgIGhlaWdodD0iJG9uY2V7IHBhcmVudC5oZWlnaHQgfSIgCisJCSAgICAgICAgICAgICB5PSIwIiBpdGVtSGVpZ2h0PSI0MCIgbGlzdExhYmVsSWQ9IjExODQiIGhlYWRlckhlaWdodD0iMjIiIAorCQkgICAgICAgICAgICAgbGlzdEl0ZW1OYW1lPSJwZW5kaW5nQ29udGFjdHNMaXN0SXRlbSIgbWVudUJhclhJbmRlbnQ9IjEwMCIKKwkJICAgICAgICAgICAgIG11bHRpc2VsZWN0PSJmYWxzZSIgd2lkdGg9IjI3MCI+CisJCQkKKwkJCTxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImdldFBlbmRpbmdVc2VyQ29udGFjdHMiIGZ1bmNuYW1lPSJ1c2Vyc2VydmljZS5nZXRQZW5kaW5nVXNlckNvbnRhY3RzIiAKKwkJCQkJICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAgICAgIAorCQkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCSAgICAJPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisJCSAgICAJCTwhW0NEQVRBWworCQkJICAgIAkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImdldFBlbmRpbmdVc2VyQ29udGFjdHM6ICIsdmFsdWUpOworCQkJICAgIAkJCisJCQkgICAgCQl0aGlzLnBhcmVudC5pbml0VmFsdWVzKHZhbHVlLmxlbmd0aCk7CisJCQkgICAgCQkKKwkJCSAgICAJCWlmICh2YWx1ZS5sZW5ndGggPT0gMCkgeworCQkJICAgIAkJCXBhcmVudC5wYXJlbnQuc2V0QXR0cmlidXRlKCJoZWlnaHQiLDIwKTsKKwkJCSAgICAJCQlwYXJlbnQuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisJCQkgICAgCQl9CisJCQkgICAgCQkKKwkJCSAgICAJCXRoaXMucGFyZW50LnBhcmVudC5fbGFiZWxQZW5kaW5nVXNlcnMuc2V0QXR0cmlidXRlKCJ0ZXh0IixjYW52YXMuZ2V0TGFiZWxOYW1lKHRoaXMucGFyZW50LnBhcmVudC5fbGFiZWxQZW5kaW5nVXNlcnMubGFiZWxpZCkrJyA8aT4oICcrdmFsdWUubGVuZ3RoKycgPC9pPiknKTsgIAorCQkJICAgIAkJCisJCQkgICAgCQl2YXIgdFJlc3VsdCA9IG5ldyBBcnJheSgpOworCQkJICAgIAkJZm9yICh2YXIgdD0wO3Q8dmFsdWUubGVuZ3RoO3QrKykgeworCQkJICAgIAkJCWZvciAodmFyIGk9MDtpPGNhbnZhcy5zYWx1dGF0aW9uc0luaXRWYWx1ZXMubGVuZ3RoO2krKyl7CisJCQkgICAgCQkJCWlmIChjYW52YXMuc2FsdXRhdGlvbnNJbml0VmFsdWVzW2ldLnNhbHV0YXRpb25zX2lkID09IHZhbHVlW3RdLm93bmVyLnNhbHV0YXRpb25zX2lkKSB7CisJCQkJCSAgICAgICAgICAgICAgICB2YWx1ZVt0XS5vd25lclsidGl0bGUiXSA9IGNhbnZhcy5zYWx1dGF0aW9uc0luaXRWYWx1ZXNbaV0ubGFiZWwudmFsdWU7CisJCQkJCSAgICAgICAgICAgICAgICBicmVhazsKKwkJCSAgICAJCQkJfQorCQkJCSAgICAgICAgICAgIH0KKwkJCSAgICAJCQl0UmVzdWx0LnB1c2godmFsdWVbdF0pOworCQkJICAgIAkJfQorCQkJICAgIAkJCisJCQkgICAgCQl0aGlzLnBhcmVudC5yZW5kZXJDb250ZW50KHRSZXN1bHQpOworCQkJICAgIAkJCisJCSAgICAJCV1dPgorCQkgICAgCTwvaGFuZGxlcj4KKwkJICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4JCisJCQorCQkJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKwkgICAgICAgICAgICB0aGlzLmFkZEhlYWRlckl0ZW0oMTE4MCwxOTApOworCSAgICAgICAgICAgIHRoaXMuYWRkSGVhZGVySXRlbSgxMTg1LDYwKTsKKwkgICAgICAgIDwvaGFuZGxlcj4KKwkgICAgICAgIAorCSAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGlja2VkSXRlbSIgYXJncz0icmVmT2JqIj4KKwkgICAgICAgICAgICA8IVtDREFUQVsKKwkgICAgICAgICAgICAKKwkgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9uY2xpY2tlZEl0ZW0gIixyZWZPYmoucmVmT2JqLnVzZXJDb250YWN0SWQpOworCSAgICAgICAgICAgICAgICAKKwkgICAgICAgICAgICBdXT4KKwkgICAgICAgIDwvaGFuZGxlcj4KKwkgICAgICAgIAorCSAgICAgICAgPG1ldGhvZCBuYW1lPSJzZXRQZW5kaW5nU3RhdHVzIiBhcmdzPSJ1c2VyQ29udGFjdElkLHBlbmRpbmciPgorCSAgICAgICAgICAgIDwhW0NEQVRBWworCSAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2V0UGVuZGluZ1N0YXR1cyAiLHVzZXJDb250YWN0SWQscGVuZGluZyk7CisJICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZVBlbmRpbmdTdGF0dXNVc2VyQ29udGFjdHMucGVuZGluZyA9IHBlbmRpbmc7CisJICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlUGVuZGluZ1N0YXR1c1VzZXJDb250YWN0cy51c2VyQ29udGFjdElkID0gdXNlckNvbnRhY3RJZDsKKwkgICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VQZW5kaW5nU3RhdHVzVXNlckNvbnRhY3RzLmRvQ2FsbCgpOworCSAgICAgICAgICAgIF1dPgorCSAgICAgICAgPC9tZXRob2Q+CisJICAgICAgICAKKwkgICAgICAgIDwhLS0KKwkJCXB1YmxpYyBMb25nIGNoYW5nZVBlbmRpbmdTdGF0dXNVc2VyQ29udGFjdHMoU3RyaW5nIFNJRCwgTG9uZyB1c2VyQ29udGFjdElkLCBCb29sZWFuIHBlbmRpbmcpCisJCQkgLS0+CisJCSAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJjaGFuZ2VQZW5kaW5nU3RhdHVzVXNlckNvbnRhY3RzIiBmdW5jbmFtZT0idXNlcnNlcnZpY2UuY2hhbmdlUGVuZGluZ1N0YXR1c1VzZXJDb250YWN0cyIgCisJCQkJCQkgIHJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiBhY3RpdmVFcnJvckhhbmRsZXI9InRydWUiID4gICAgICAKKwkJCQk8YXR0cmlidXRlIG5hbWU9InVzZXJDb250YWN0SWQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisJCQkJPGF0dHJpYnV0ZSBuYW1lPSJwZW5kaW5nIiB2YWx1ZT0idHJ1ZSIgdHlwZT0iYm9vbGVhbiIgLz4KKwkJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBjYW52YXMuc2Vzc2lvbklkOyA8L21ldGhvZD48L25ldHBhcmFtPgorCQkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIHBhcmVudC51c2VyQ29udGFjdElkOyA8L21ldGhvZD48L25ldHBhcmFtPgorCQkgICAgCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIHBhcmVudC5wZW5kaW5nOyA8L21ldGhvZD48L25ldHBhcmFtPgorCQkgICAgCTxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorCQkgICAgCQk8IVtDREFUQVsKKwkJCSAgICAJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJjaGFuZ2VQZW5kaW5nU3RhdHVzVXNlckNvbnRhY3RzOiAiLHZhbHVlKTsKKwkJCSAgICAJCXBhcmVudC5wYXJlbnQucGFyZW50LnJlbG9hZCgpOworCQkgICAgCQldXT4KKwkJICAgIAk8L2hhbmRsZXI+CisJCSAgICA8L25ldFJlbW90ZUNhbGxIaWI+CQorCSAgICAgICAgCisJICAgICAgICA8bWV0aG9kIG5hbWU9InVwZGF0ZVBlbmRpbmdTdGF0dXMiIGFyZ3M9Iml0ZW1JZCI+CisJICAgICAgICAJdGhpcy5yZW5kZXJMaXN0W2l0ZW1JZF1bInBlbmRpbmciXSA9IHRydWU7CisJICAgICAgICA8L21ldGhvZD4KKwkgICAgICAgIAorCSAgICAgICAgPG1ldGhvZCBuYW1lPSJyZW5kZXJDb250ZW50IiBhcmdzPSJyTGlzdCI+CisJICAgICAgICAgICAgPCFbQ0RBVEFbCisJICAgICAgICAgICAgCisJICAgICAgICAgICAgCXRoaXMucmVuZGVyTGlzdCA9IHJMaXN0OworCSAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICB0aGlzLmlzTG9hZGVkID0gdHJ1ZTsKKwkgICAgICAgICAgICAgICAgdmFyIGxpc3QgPSB0aGlzLl9pbm5lcmxpc3QuX2lubi5faW5uOworCSAgICAgICAgICAgICAgICAKKwkgICAgICAgICAgICAgICAgaWYgKHRoaXMucmVuZGVyTGlzdCA9PSBudWxsKSB7CisJICAgICAgICAgICAgICAgIAl0aGlzLnJlbmRlckxpc3QgPSBuZXcgQXJyYXkoKTsKKwkgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICAvL3RoaXMucmVuZGVyTGlzdCA9IHJlY29yZHM7CisJICAgICAgICAgICAgICAgIHZhciByZWNvcmRzID0gdGhpcy5yZW5kZXJMaXN0OworCSAgICAgICAgICAgICAgICB0aGlzLl9pbm5lcmxpc3QuX2lubi5zZXRBdHRyaWJ1dGUoInkiLDApOworCSAgICAgICAgICAgICAgICB0aGlzLl9pbm5lcmxpc3QuX2lubi5faW5uLnNldEF0dHJpYnV0ZSgiaGVpZ2h0IixyZWNvcmRzLmxlbmd0aCp0aGlzLml0ZW1IZWlnaHQpOworCSAgICAgICAgICAgICAgICB0aGlzLl9pbm5lcmxpc3QuX2lubi5yZXNldEl0ZW1zKCk7CisJICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiOjogcmVuZGVyQ29udGVudCA6OiIsdGhpcy5yZW5kZXJMaXN0Lmxlbmd0aCxsaXN0LnN1YnZpZXdzLmxlbmd0aCk7CisJICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICB0aGlzLl9yZWNvcmRzLnNldEF0dHJpYnV0ZSgidGV4dCIscmVjb3Jkcy5sZW5ndGgpOworCSAgICAgICAgICAgICAgICAKKwkgICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8bGlzdC5zdWJ2aWV3cy5sZW5ndGg7aSsrKXsKKwkgICAgICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICAgICAgLy9pZiAoaSAlIDIgPT0gMCkgeworCSAgICAgICAgICAgICAgICAgICAgLy8gICAgbGlzdC5zdWJ2aWV3c1tpXS5zZXRJc1NlY29uZCh0cnVlKTsKKwkgICAgICAgICAgICAgICAgICAgIC8vfSBlbHNlIHsKKwkgICAgICAgICAgICAgICAgICAgIC8vICAgIGxpc3Quc3Vidmlld3NbaV0uc2V0SXNTZWNvbmQoZmFsc2UpOworCSAgICAgICAgICAgICAgICAgICAgLy99CisJICAgICAgICAgICAgICAgICAgICAKKwkgICAgICAgICAgICAgICAgICAgIGlmIChyZWNvcmRzLmxlbmd0aCA+IGkpIHsKKwkgICAgICAgICAgICAgICAgICAgIAkKKwkgICAgICAgICAgICAgICAgICAgIAkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJSZW5kZXIgSXRlbSAiLHJlY29yZHNbaV0pOworCSAgICAgICAgICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Quc3Vidmlld3NbaV0uc2V0QXR0cmlidXRlKCJjbGlja2FibGUiLHRydWUpOworCSAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Quc3Vidmlld3NbaV0ucmVmT2JqID0gcmVjb3Jkc1tpXTsKKwkgICAgICAgICAgICAgICAgICAgICAgICAKKwkgICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVjb3Jkc1tpXVsiaXNzZWxlY3RlZCJdICYmIHJlY29yZHNbaV0uaXNzZWxlY3RlZCkgeworCSAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnN1YnZpZXdzW2ldLmlzc2VsZWN0ZWQgPSB0cnVlOworCSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Quc3Vidmlld3NbaV0uaXNzZWxlY3RlZCA9IGZhbHNlOworCSAgICAgICAgICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAgICAgICAgICAgICAKKwkgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnN1YnZpZXdzW2ldLnNldEF0dHJpYnV0ZSgidXNlcm5hbWUiLHJlY29yZHNbaV0ub3duZXIudGl0bGUgKyAnICcgKyByZWNvcmRzW2ldLm93bmVyLmZpcnN0bmFtZSsnICcrcmVjb3Jkc1tpXS5vd25lci5sYXN0bmFtZSk7CisJICAgICAgICAgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5zdWJ2aWV3c1tpXS5zZXRBdHRyaWJ1dGUoIml0ZW1JZCIsaSk7CisJICAgICAgICAgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworCSAgICAgICAgICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Quc3Vidmlld3NbaV0ucmVmT2JqID0gbnVsbDsKKwkgICAgICAgICAgICAgICAgICAgICAgICAKKwkgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnN1YnZpZXdzW2ldLmlzc2VsZWN0ZWQgPSBmYWxzZTsKKwkgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnN1YnZpZXdzW2ldLm9ubW91c2VvdXQuc2VuZEV2ZW50KCk7CisJICAgICAgICAgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5zdWJ2aWV3c1tpXS5zZXRBdHRyaWJ1dGUoInVzZXJuYW1lIiwnJyk7CisJICAgICAgICAgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5zdWJ2aWV3c1tpXS5zZXRBdHRyaWJ1dGUoIml0ZW1JZCIsIiIpOworCSAgICAgICAgICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Quc3Vidmlld3NbaV0uc2V0QXR0cmlidXRlKCJjbGlja2FibGUiLGZhbHNlKTsKKwkgICAgICAgICAgICAgICAgICAgICAgICAKKwkgICAgICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICAKKwkgICAgICAgICAgICAgICAgdGhpcy5zZW5kSW5pdGlhbFdpZHRoVXBkYXRlKCk7CisJICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgIF1dPgorCSAgICAgICAgPC9tZXRob2Q+ICAgCisJCSAgICAgICAgCisJICAgICAgICA8aGFuZGxlciBuYW1lPSJvblNjcm9sbEl0ZW0iIGFyZ3M9Iml0ZW0iPgorCSAgICAgICAgICAgIDwhW0NEQVRBWworCSAgICAgICAgICAgICAgICBpZiAodGhpcy5yZW5kZXJMaXN0Lmxlbmd0aCA+IGl0ZW0uaXRlbUlkKSB7CisJICAgICAgICAgICAgICAgICAgICBpdGVtLnNldEF0dHJpYnV0ZSgiY2xpY2thYmxlIix0cnVlKTsKKwkgICAgICAgICAgICAgICAgICAgIGl0ZW0ucmVmT2JqID0gdGhpcy5yZW5kZXJMaXN0W2l0ZW0uaXRlbUlkXTsKKwkgICAgICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICAgICAgLy9pZiAoaXRlbS5pdGVtSWQgJSAyID09IDApIHsKKwkgICAgICAgICAgICAgICAgICAgIC8vICAgIGl0ZW0uc2V0SXNTZWNvbmQodHJ1ZSk7CisJICAgICAgICAgICAgICAgICAgICAvL30gZWxzZSB7CisJICAgICAgICAgICAgICAgICAgICAvLyAgICBpdGVtLnNldElzU2Vjb25kKGZhbHNlKTsKKwkgICAgICAgICAgICAgICAgICAgIC8vfQorCSAgICAgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5yZW5kZXJMaXN0W2l0ZW0uaXRlbUlkXVsiaXNzZWxlY3RlZCJdICYmIHRoaXMucmVuZGVyTGlzdFtpdGVtLml0ZW1JZF0uaXNzZWxlY3RlZCkgeworCSAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uaXNzZWxlY3RlZCA9IHRydWU7CisJICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5vbm1vdXNlb3V0LnNlbmRFdmVudCgpOworCSAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLmlzc2VsZWN0ZWQgPSBmYWxzZTsKKwkgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm9ubW91c2VvdXQuc2VuZEV2ZW50KCk7CisJICAgICAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgICAgICAgICAKKwkgICAgICAgICAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoaXRlbS5pdGVtSWQpOworCSAgICAgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgICAgICBpdGVtLnNldEF0dHJpYnV0ZSgidXNlcm5hbWUiLHRoaXMucmVuZGVyTGlzdFtpdGVtLml0ZW1JZF0ub3duZXIudGl0bGUgKyAnICcgKyB0aGlzLnJlbmRlckxpc3RbaXRlbS5pdGVtSWRdLm93bmVyLmZpcnN0bmFtZSsnICcrdGhpcy5yZW5kZXJMaXN0W2l0ZW0uaXRlbUlkXS5vd25lci5sYXN0bmFtZSk7CisJICAgICAgICAgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgICAgICBpdGVtLnNldEF0dHJpYnV0ZSgiaXRlbUlkIixpdGVtLml0ZW1JZCk7CisJICAgICAgICAgICAgICAgICAgICAKKwkgICAgICAgICAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICAgICAgLy9pZiAoaXRlbS5pdGVtSWQgJSAyID09IDApIHsKKwkgICAgICAgICAgICAgICAgICAgIC8vICAgIGl0ZW0uc2V0SXNTZWNvbmQodHJ1ZSk7CisJICAgICAgICAgICAgICAgICAgICAvL30gZWxzZSB7CisJICAgICAgICAgICAgICAgICAgICAvLyAgICBpdGVtLnNldElzU2Vjb25kKGZhbHNlKTsKKwkgICAgICAgICAgICAgICAgICAgIC8vfQorCSAgICAgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgICAgICBpdGVtLmlzc2VsZWN0ZWQgPSBmYWxzZTsKKwkgICAgICAgICAgICAgICAgICAgIGl0ZW0ub25tb3VzZW91dC5zZW5kRXZlbnQoKTsKKwkgICAgICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICAgICAgaXRlbS5yZWZPYmogPSBudWxsOworCSAgICAgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgICAgICBpdGVtLnNldEF0dHJpYnV0ZSgidXNlcm5hbWUiLCIiKTsKKwkgICAgICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICAgICAgaXRlbS5zZXRBdHRyaWJ1dGUoIml0ZW1JZCIsIiIpOworCSAgICAgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgICAgICBpdGVtLnNldEF0dHJpYnV0ZSgiY2xpY2thYmxlIixmYWxzZSk7CisJICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgXV0+CisJICAgICAgICA8L2hhbmRsZXI+CisJICAgICAgICAKKwkJCQorCQk8L3R1cm5PdmVyTGlzdE9yZGVyZWRQYWdlZD4KKwkJCisJPC92aWV3PiAKKwkKKwk8dmlldyBuYW1lPSJfYXZhaWxhYmxlQ29udGFjdHMiIHk9IiR7IHBhcmVudC5fcGVuZGluZ0NvbnRhY3RzLmhlaWdodCArIDIgfSIKKwkJICBoZWlnaHQ9IiR7IHBhcmVudC5oZWlnaHQgLSBwYXJlbnQuX3BlbmRpbmdDb250YWN0cy5oZWlnaHQgLSA0IH0iPgorCQkKKwkJCisJCTwhLS0KKwkJcHVibGljIExpc3Q8VXNlckNvbnRhY3RzPiBnZXRQZW5kaW5nVXNlckNvbnRhY3RzKFN0cmluZyBTSUQpCisJCSAtLT4KKwkJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKwkJCXRoaXMuX3RhYmxlLmdldFVzZXJDb250YWN0cy5kb0NhbGwoKTsKKwkJPC9oYW5kbGVyPiAKKwkJCisJCTxoYW5kbGVyIG5hbWU9Im9uaGVpZ2h0IiBhcmdzPSJoIj4KKwkJCXRoaXMuX3RhYmxlLnJlbmRlckJ5SGVpZ2h0Q2hhbmdlKCk7CisJCTwvaGFuZGxlcj4KKwkgICAgCQkgCisJCQorCQk8bGFiZWxUZXh0IG5hbWU9Il9sYWJlbFBlbmRpbmdVc2VycyIgeD0iMiIgbGFiZWxpZD0iMTE4OCIgZm9udHN0eWxlPSJib2xkIiAvPgorCQkKKwkJPHR1cm5PdmVyTGlzdE9yZGVyZWRQYWdlZCBuYW1lPSJfdGFibGUiIHNob3dUb3BCYXI9ImZhbHNlIiB4PSIyIiBoZWlnaHQ9IiR7IHBhcmVudC5oZWlnaHQgfSIgCisJCSAgICAgICAgICAgICB5PSIwIiBpdGVtSGVpZ2h0PSI0MCIgbGlzdExhYmVsSWQ9IjExODQiIGhlYWRlckhlaWdodD0iMjIiIAorCQkgICAgICAgICAgICAgbGlzdEl0ZW1OYW1lPSJjb250YWN0c0xpc3RJdGVtIiBtZW51QmFyWEluZGVudD0iMTAwIgorCQkgICAgICAgICAgICAgbXVsdGlzZWxlY3Q9ImZhbHNlIiB3aWR0aD0iMjcwIj4KKwkJCQorCSAgICAgICAgPG1ldGhvZCBuYW1lPSJyZW5kZXJCeUhlaWdodENoYW5nZSIgPgorICAgICAgICAJCisJICAgICAgICAJdGhpcy5jbGVhckxpc3QoKTsKKwkgICAgICAgIAl0aGlzLl9pbm5lcmxpc3QuX2lubi5pbml0SXRlbXModGhpcy5saXN0SXRlbU5hbWUpOworCSAgICAgICAgCQorCSAgICAgICAgCXRoaXMucmVuZGVyQ29udGVudCh0aGlzLnJlbmRlckxpc3QpOworCSAgICAgICAgPC9tZXRob2Q+CisJCQkKKwkJCTxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImdldFVzZXJDb250YWN0cyIgZnVuY25hbWU9InVzZXJzZXJ2aWNlLmdldFVzZXJDb250YWN0cyIgCisJCQkJCSAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gICAgICAKKwkJCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBjYW52YXMuc2Vzc2lvbklkOyA8L21ldGhvZD48L25ldHBhcmFtPgorCQkgICAgCTxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorCQkgICAgCQk8IVtDREFUQVsKKwkJCSAgICAJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJnZXRVc2VyQ29udGFjdHM6ICIsdmFsdWUpOworCQkJICAgIAkJCisJCQkgICAgCQljYW52YXMudXNlckNvbnRhY3RzID0gdmFsdWU7CisJCQkgICAgCQkKKwkJCSAgICAJCXRoaXMucGFyZW50LmluaXRWYWx1ZXModmFsdWUubGVuZ3RoKTsKKwkJCSAgICAJCQorCQkJICAgIAkJdGhpcy5wYXJlbnQucGFyZW50Ll9sYWJlbFBlbmRpbmdVc2Vycy5zZXRBdHRyaWJ1dGUoInRleHQiLGNhbnZhcy5nZXRMYWJlbE5hbWUodGhpcy5wYXJlbnQucGFyZW50Ll9sYWJlbFBlbmRpbmdVc2Vycy5sYWJlbGlkKSsnIDxpPiggJyt2YWx1ZS5sZW5ndGgrJyA8L2k+KScpCisJCQkgICAgCQkKKwkJCSAgICAJCXZhciB0UmVzdWx0ID0gbmV3IEFycmF5KCk7CisJCQkgICAgCQlmb3IgKHZhciB0PTA7dDx2YWx1ZS5sZW5ndGg7dCsrKSB7CisJCQkgICAgCQkJdmFsdWVbdF0uY29udGFjdFsic2hhcmVDYWxlbmRhciJdID0gdmFsdWVbdF0uc2hhcmVDYWxlbmRhcjsKKwkJCSAgICAJCQl2YWx1ZVt0XS5jb250YWN0WyJwZW5kaW5nIl0gPSB2YWx1ZVt0XS5wZW5kaW5nOworCQkJICAgIAkJCXZhbHVlW3RdLmNvbnRhY3RbInVzZXJDb250YWN0SWQiXSA9IHZhbHVlW3RdLnVzZXJDb250YWN0SWQ7CisJCQkgICAgCQkJZm9yICh2YXIgaT0wO2k8Y2FudmFzLnNhbHV0YXRpb25zSW5pdFZhbHVlcy5sZW5ndGg7aSsrKXsKKwkJCSAgICAJCQkJaWYgKGNhbnZhcy5zYWx1dGF0aW9uc0luaXRWYWx1ZXNbaV0uc2FsdXRhdGlvbnNfaWQgPT0gdmFsdWVbdF0uY29udGFjdC5zYWx1dGF0aW9uc19pZCkgeworCQkJCQkgICAgICAgICAgICAgICAgdmFsdWVbdF0uY29udGFjdFsidGl0bGUiXSA9IGNhbnZhcy5zYWx1dGF0aW9uc0luaXRWYWx1ZXNbaV0ubGFiZWwudmFsdWU7CisJCQkJCSAgICAgICAgICAgICAgICBicmVhazsKKwkJCSAgICAJCQkJfQorCQkJCSAgICAgICAgICAgIH0KKwkJCSAgICAJCQl0UmVzdWx0LnB1c2godmFsdWVbdF0uY29udGFjdCk7CisJCQkgICAgCQl9CisJCQkgICAgCQkKKwkJCSAgICAJCXRoaXMucGFyZW50LnJlbmRlckNvbnRlbnQodFJlc3VsdCk7CisJCQkgICAgCQkKKwkJICAgIAkJXV0+CisJCSAgICAJPC9oYW5kbGVyPgorCQkgICAgPC9uZXRSZW1vdGVDYWxsSGliPgkKKwkJCisJCQk8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorCSAgICAgICAgICAgIHRoaXMuYWRkSGVhZGVySXRlbSgxMTgwLDE3MCk7CisJICAgICAgICAgICAgdGhpcy5hZGRIZWFkZXJJdGVtKDExODUsODApOworCSAgICAgICAgPC9oYW5kbGVyPgorCSAgICAgICAgCisJICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrZWRJdGVtIiBhcmdzPSJyZWZPYmoiPgorCSAgICAgICAgICAgIDwhW0NEQVRBWworCSAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib25jbGlja2VkSXRlbSAiLHJlZk9iai5yZWZPYmoudXNlckNvbnRhY3RJZCk7CisJICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgIF1dPgorCSAgICAgICAgPC9oYW5kbGVyPgorCSAgICAgICAgCisJICAgICAgICA8bWV0aG9kIG5hbWU9ImFkZE1lc3NhZ2UiIGFyZ3M9InVzZXJPYmplY3QiPgorCSAgICAgICAgCXBhcmVudC5wYXJlbnQucGFyZW50Ll9wcml2YXRlTWVzc2FnZXMubmV3TWVzc2FnZSh1c2VyT2JqZWN0KTsKKwkgICAgICAgIDwvbWV0aG9kPgorCSAgICAgICAgCisJICAgICAgICA8bWV0aG9kIG5hbWU9InJlbW92ZUNvbnRhY3RVc2VyTWV0aG9kIiBhcmdzPSJ1c2VyQ29udGFjdElkIj4KKwkgICAgICAgICAgICA8IVtDREFUQVsKKwkgICAgICAgICAgICAKKwkgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInJlbW92ZVVzZXIgIix1c2VyQ29udGFjdElkLHBlbmRpbmcpOworCSAgICAgICAgICAgICAgICAKKwkgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVDb250YWN0VXNlci51c2VyQ29udGFjdElkID0gdXNlckNvbnRhY3RJZDsKKwkgICAgICAgICAgICAgICAgdGhpcy5yZW1vdmVDb250YWN0VXNlci5kb0NhbGwoKTsKKwkgICAgICAgICAgICBdXT4KKwkgICAgICAgIDwvbWV0aG9kPgorCSAgICAgICAgCisJICAgICAgICA8IS0tCisJCQlwdWJsaWMgSW50ZWdlciByZW1vdmVDb250YWN0VXNlcihTdHJpbmcgU0lELCBMb25nIHVzZXJDb250YWN0SWQpCisJCQkgLS0+CisJCSAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJyZW1vdmVDb250YWN0VXNlciIgZnVuY25hbWU9InVzZXJzZXJ2aWNlLnJlbW92ZUNvbnRhY3RVc2VyIiAKKwkJCQkJCSAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iIGFjdGl2ZUVycm9ySGFuZGxlcj0idHJ1ZSIgPiAgICAgIAorCQkJCTxhdHRyaWJ1dGUgbmFtZT0idXNlckNvbnRhY3RJZCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKwkJCQk8YXR0cmlidXRlIG5hbWU9InBlbmRpbmciIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPgorCQkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCQkJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnVzZXJDb250YWN0SWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisJCSAgICAJPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisJCSAgICAJCTwhW0NEQVRBWworCQkJICAgIAkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInJlbW92ZUNvbnRhY3RVc2VyOiAiLHZhbHVlKTsKKwkJCSAgICAJCXBhcmVudC5wYXJlbnQucGFyZW50LnJlbG9hZCgpOworCQkgICAgCQldXT4KKwkJICAgIAk8L2hhbmRsZXI+CisJCSAgICA8L25ldFJlbW90ZUNhbGxIaWI+CQorCQkgICAgCisJCSAgICA8bWV0aG9kIG5hbWU9InNldENhbGVuZGFyU2hhcmluZyIgYXJncz0idXNlckNvbnRhY3RJZCxkb1NoYXJlIj4KKyAgICAgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInNldFBlbmRpbmdTdGF0dXMgIix1c2VyQ29udGFjdElkLGRvU2hhcmUpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5zaGFyZUNhbGVuZGFyVXNlckNvbnRhY3QuZG9TaGFyZSA9IGRvU2hhcmU7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuc2hhcmVDYWxlbmRhclVzZXJDb250YWN0LnVzZXJDb250YWN0SWQgPSB1c2VyQ29udGFjdElkOworICAgICAgICAgICAgICAgICAgICB0aGlzLnNoYXJlQ2FsZW5kYXJVc2VyQ29udGFjdC5kb0NhbGwoKTsKKyAgICAgICAgICAgICAgICBdXT4KKyAgICAgICAgICAgIDwvbWV0aG9kPgorICAgICAgICAgICAgCisgICAgICAgICAgICA8IS0tCisgICAgICAgICAgICBwdWJsaWMgdm9pZCBzaGFyZUNhbGVuZGFyVXNlckNvbnRhY3QoU3RyaW5nIFNJRCwgTG9uZyB1c2VyQ29udGFjdElkLCBCb29sZWFuIHNoYXJlQ2FsZW5kYXIpCisgICAgICAgICAgICAgLS0+CisgICAgICAgICAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJzaGFyZUNhbGVuZGFyVXNlckNvbnRhY3QiIGZ1bmNuYW1lPSJ1c2Vyc2VydmljZS5zaGFyZUNhbGVuZGFyVXNlckNvbnRhY3QiIAorICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgID4gICAgICAKKyAgICAgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9InVzZXJDb250YWN0SWQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisgICAgICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJkb1NoYXJlIiB2YWx1ZT0idHJ1ZSIgdHlwZT0iYm9vbGVhbiIgLz4KKyAgICAgICAgICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBjYW52YXMuc2Vzc2lvbklkOyA8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICAgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIHBhcmVudC51c2VyQ29udGFjdElkOyA8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICAgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIHBhcmVudC5kb1NoYXJlOyA8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJjaGFuZ2VQZW5kaW5nU3RhdHVzVXNlckNvbnRhY3RzOiAiLHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5wYXJlbnQucGFyZW50LnJlbG9hZCgpOworICAgICAgICAgICAgICAgICAgICBdXT4KKyAgICAgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgICAgICA8L25ldFJlbW90ZUNhbGxIaWI+IAorCSAgICAgICAgCisJICAgICAgICA8bWV0aG9kIG5hbWU9InJlbmRlckNvbnRlbnQiIGFyZ3M9InJMaXN0Ij4KKwkgICAgICAgICAgICA8IVtDREFUQVsKKwkgICAgICAgICAgICAKKwkgICAgICAgICAgICAJdGhpcy5yZW5kZXJMaXN0ID0gckxpc3Q7CisJICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgIHRoaXMuaXNMb2FkZWQgPSB0cnVlOworCSAgICAgICAgICAgICAgICB2YXIgbGlzdCA9IHRoaXMuX2lubmVybGlzdC5faW5uLl9pbm47CisJICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICBpZiAodGhpcy5yZW5kZXJMaXN0ID09IG51bGwpIHsKKwkgICAgICAgICAgICAgICAgCXRoaXMucmVuZGVyTGlzdCA9IG5ldyBBcnJheSgpOworCSAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgICAgIC8vdGhpcy5yZW5kZXJMaXN0ID0gcmVjb3JkczsKKwkgICAgICAgICAgICAgICAgdmFyIHJlY29yZHMgPSB0aGlzLnJlbmRlckxpc3Q7CisJICAgICAgICAgICAgICAgIHRoaXMuX2lubmVybGlzdC5faW5uLnNldEF0dHJpYnV0ZSgieSIsMCk7CisJICAgICAgICAgICAgICAgIHRoaXMuX2lubmVybGlzdC5faW5uLl9pbm4uc2V0QXR0cmlidXRlKCJoZWlnaHQiLHJlY29yZHMubGVuZ3RoKnRoaXMuaXRlbUhlaWdodCk7CisJICAgICAgICAgICAgICAgIHRoaXMuX2lubmVybGlzdC5faW5uLnJlc2V0SXRlbXMoKTsKKwkgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCI6OiByZW5kZXJDb250ZW50IDo6Iix0aGlzLnJlbmRlckxpc3QubGVuZ3RoLGxpc3Quc3Vidmlld3MubGVuZ3RoKTsKKwkgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgIHRoaXMuX3JlY29yZHMuc2V0QXR0cmlidXRlKCJ0ZXh0IixyZWNvcmRzLmxlbmd0aCk7CisJICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTxsaXN0LnN1YnZpZXdzLmxlbmd0aDtpKyspeworCSAgICAgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgICAgICAvL2lmIChpICUgMiA9PSAwKSB7CisJICAgICAgICAgICAgICAgICAgICAvLyAgICBsaXN0LnN1YnZpZXdzW2ldLnNldElzU2Vjb25kKHRydWUpOworCSAgICAgICAgICAgICAgICAgICAgLy99IGVsc2UgeworCSAgICAgICAgICAgICAgICAgICAgLy8gICAgbGlzdC5zdWJ2aWV3c1tpXS5zZXRJc1NlY29uZChmYWxzZSk7CisJICAgICAgICAgICAgICAgICAgICAvL30KKwkgICAgICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICAgICAgaWYgKHJlY29yZHMubGVuZ3RoID4gaSkgeworCSAgICAgICAgICAgICAgICAgICAgCQorCSAgICAgICAgICAgICAgICAgICAgCS8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIlJlbmRlciBJdGVtICIscmVjb3Jkc1tpXSk7CisJICAgICAgICAgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5zdWJ2aWV3c1tpXS5zZXRBdHRyaWJ1dGUoImNsaWNrYWJsZSIsdHJ1ZSk7CisJICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5zdWJ2aWV3c1tpXS5yZWZPYmogPSByZWNvcmRzW2ldOworCSAgICAgICAgICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyZWNvcmRzW2ldWyJpc3NlbGVjdGVkIl0gJiYgcmVjb3Jkc1tpXS5pc3NlbGVjdGVkKSB7CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Quc3Vidmlld3NbaV0uaXNzZWxlY3RlZCA9IHRydWU7CisJICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5zdWJ2aWV3c1tpXS5pc3NlbGVjdGVkID0gZmFsc2U7CisJICAgICAgICAgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBzaGFyZUNhbGVuZGFyID0gcmVjb3Jkc1tpXS5zaGFyZUNhbGVuZGFyOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzaGFyZUNhbGVuZGFyID09IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVDYWxlbmRhciA9IGZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Quc3Vidmlld3NbaV0uc2V0QXR0cmlidXRlKCJzaGFyZUNhbGVuZGFyIixzaGFyZUNhbGVuZGFyKTsKKwkgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnN1YnZpZXdzW2ldLnNldEF0dHJpYnV0ZSgidXNlcm5hbWUiLHJlY29yZHNbaV0udGl0bGUgKyAnICcgKyByZWNvcmRzW2ldLmZpcnN0bmFtZSsnICcrcmVjb3Jkc1tpXS5sYXN0bmFtZSk7CisJICAgICAgICAgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5zdWJ2aWV3c1tpXS5zZXRBdHRyaWJ1dGUoIml0ZW1JZCIsaSk7CisJICAgICAgICAgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworCSAgICAgICAgICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICAgICAgICAgIGxpc3Quc3Vidmlld3NbaV0ucmVmT2JqID0gbnVsbDsKKwkgICAgICAgICAgICAgICAgICAgICAgICAKKwkgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnN1YnZpZXdzW2ldLmlzc2VsZWN0ZWQgPSBmYWxzZTsKKwkgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnN1YnZpZXdzW2ldLm9ubW91c2VvdXQuc2VuZEV2ZW50KCk7CisJICAgICAgICAgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5zdWJ2aWV3c1tpXS5zZXRBdHRyaWJ1dGUoInNoYXJlQ2FsZW5kYXIiLGZhbHNlKTsKKwkgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnN1YnZpZXdzW2ldLnNldEF0dHJpYnV0ZSgidXNlcm5hbWUiLCcnKTsKKwkgICAgICAgICAgICAgICAgICAgICAgICAKKwkgICAgICAgICAgICAgICAgICAgICAgICBsaXN0LnN1YnZpZXdzW2ldLnNldEF0dHJpYnV0ZSgiaXRlbUlkIiwiIik7CisJICAgICAgICAgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgICAgICAgICAgbGlzdC5zdWJ2aWV3c1tpXS5zZXRBdHRyaWJ1dGUoImNsaWNrYWJsZSIsZmFsc2UpOworCSAgICAgICAgICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICB0aGlzLnNlbmRJbml0aWFsV2lkdGhVcGRhdGUoKTsKKwkgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgXV0+CisJICAgICAgICA8L21ldGhvZD4gICAKKwkJICAgICAgICAKKwkgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uU2Nyb2xsSXRlbSIgYXJncz0iaXRlbSI+CisJICAgICAgICAgICAgPCFbQ0RBVEFbCisJICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlbmRlckxpc3QubGVuZ3RoID4gaXRlbS5pdGVtSWQpIHsKKwkgICAgICAgICAgICAgICAgICAgIGl0ZW0uc2V0QXR0cmlidXRlKCJjbGlja2FibGUiLHRydWUpOworCSAgICAgICAgICAgICAgICAgICAgaXRlbS5yZWZPYmogPSB0aGlzLnJlbmRlckxpc3RbaXRlbS5pdGVtSWRdOworCSAgICAgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgICAgICAvL2lmIChpdGVtLml0ZW1JZCAlIDIgPT0gMCkgeworCSAgICAgICAgICAgICAgICAgICAgLy8gICAgaXRlbS5zZXRJc1NlY29uZCh0cnVlKTsKKwkgICAgICAgICAgICAgICAgICAgIC8vfSBlbHNlIHsKKwkgICAgICAgICAgICAgICAgICAgIC8vICAgIGl0ZW0uc2V0SXNTZWNvbmQoZmFsc2UpOworCSAgICAgICAgICAgICAgICAgICAgLy99CisJICAgICAgICAgICAgICAgICAgICAKKwkgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLnJlbmRlckxpc3RbaXRlbS5pdGVtSWRdWyJpc3NlbGVjdGVkIl0gJiYgdGhpcy5yZW5kZXJMaXN0W2l0ZW0uaXRlbUlkXS5pc3NlbGVjdGVkKSB7CisJICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5pc3NlbGVjdGVkID0gdHJ1ZTsKKwkgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLm9ubW91c2VvdXQuc2VuZEV2ZW50KCk7CisJICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworCSAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uaXNzZWxlY3RlZCA9IGZhbHNlOworCSAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0ub25tb3VzZW91dC5zZW5kRXZlbnQoKTsKKwkgICAgICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZShpdGVtLml0ZW1JZCk7CisJICAgICAgICAgICAgICAgICAgICB2YXIgc2hhcmVDYWxlbmRhciA9IHRoaXMucmVuZGVyTGlzdFtpdGVtLml0ZW1JZF0uc2hhcmVDYWxlbmRhcjsKKwkgICAgICAgICAgICAgICAgICAgIGlmIChzaGFyZUNhbGVuZGFyID09IG51bGwpIHsKKwkgICAgICAgICAgICAgICAgICAgIAlzaGFyZUNhbGVuZGFyID0gZmFsc2U7CisJICAgICAgICAgICAgICAgICAgICB9CisJICAgICAgICAgICAgICAgICAgICAKKwkgICAgICAgICAgICAgICAgICAgIGl0ZW0uc2V0QXR0cmlidXRlKCJzaGFyZUNhbGVuZGFyIixzaGFyZUNhbGVuZGFyKTsKKwkgICAgICAgICAgICAgICAgICAgIGl0ZW0uc2V0QXR0cmlidXRlKCJ1c2VybmFtZSIsdGhpcy5yZW5kZXJMaXN0W2l0ZW0uaXRlbUlkXS50aXRsZSArICcgJyArIHRoaXMucmVuZGVyTGlzdFtpdGVtLml0ZW1JZF0uZmlyc3RuYW1lKycgJyt0aGlzLnJlbmRlckxpc3RbaXRlbS5pdGVtSWRdLmxhc3RuYW1lKTsKKwkgICAgICAgICAgICAgICAgICAgICAgICAKKwkgICAgICAgICAgICAgICAgICAgIGl0ZW0uc2V0QXR0cmlidXRlKCJpdGVtSWQiLGl0ZW0uaXRlbUlkKTsKKwkgICAgICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICB9IGVsc2UgeworCSAgICAgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgICAgICAvL2lmIChpdGVtLml0ZW1JZCAlIDIgPT0gMCkgeworCSAgICAgICAgICAgICAgICAgICAgLy8gICAgaXRlbS5zZXRJc1NlY29uZCh0cnVlKTsKKwkgICAgICAgICAgICAgICAgICAgIC8vfSBlbHNlIHsKKwkgICAgICAgICAgICAgICAgICAgIC8vICAgIGl0ZW0uc2V0SXNTZWNvbmQoZmFsc2UpOworCSAgICAgICAgICAgICAgICAgICAgLy99CisJICAgICAgICAgICAgICAgICAgICAKKwkgICAgICAgICAgICAgICAgICAgIGl0ZW0uaXNzZWxlY3RlZCA9IGZhbHNlOworCSAgICAgICAgICAgICAgICAgICAgaXRlbS5vbm1vdXNlb3V0LnNlbmRFdmVudCgpOworCSAgICAgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgICAgICBpdGVtLnJlZk9iaiA9IG51bGw7CisJICAgICAgICAgICAgICAgICAgICAKKwkgICAgICAgICAgICAgICAgICAgIGl0ZW0uc2V0QXR0cmlidXRlKCJzaGFyZUNhbGVuZGFyIixmYWxzZSk7CisJICAgICAgICAgICAgICAgICAgICBpdGVtLnNldEF0dHJpYnV0ZSgidXNlcm5hbWUiLCIiKTsKKwkgICAgICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICAgICAgaXRlbS5zZXRBdHRyaWJ1dGUoIml0ZW1JZCIsIiIpOworCSAgICAgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgICAgICBpdGVtLnNldEF0dHJpYnV0ZSgiY2xpY2thYmxlIixmYWxzZSk7CisJICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgXV0+CisJICAgICAgICA8L2hhbmRsZXI+CisJICAgICAgICAKKwkJCQorCQk8L3R1cm5PdmVyTGlzdE9yZGVyZWRQYWdlZD4KKwkJCisJPC92aWV3PgorCQorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy92aWV3VXNlclByb2ZpbGUubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zZXR0aW5ncy92aWV3VXNlclByb2ZpbGUubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlYmE5NTAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL3NldHRpbmdzL3ZpZXdVc2VyUHJvZmlsZS5sengKQEAgLTAsMCArMSwyOTEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisJCis8Y2xhc3MgbmFtZT0idmlld1VzZXJQcm9maWxlV2luZG93IiBleHRlbmRzPSJndWlQcmVzZW50ZXIiIGxhYmVsaWQ9IjEyMzUiIGlzZHJhZ2FibGU9InRydWUiIAorICAgIG1pbmltaXphYmxlPSJ0cnVlIiBtYXhpbWl6YWJsZT0iZmFsc2UiIGZ1bGxUb29sQmFyPSJ0cnVlIiB5PSIxMDAiIHg9IiRvbmNleyAocGFyZW50LndpZHRoLXRoaXMud2lkdGgpLzIgfSIKKyAgICByZXNpemVhYmxlPSJmYWxzZSIgd2lkdGg9IjQ3MCIgaGVpZ2h0PSIkb25jZXsgcGFyZW50LmhlaWdodC10aGlzLnktMTAgfSIgPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0idXNlcklkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIi8+CisJCisJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKwkJdGhpcy5nZXRVc2VyQnlJZC5kb0NhbGwoKTsKKwk8L2hhbmRsZXI+CisJCisJPCEtLQorCXB1YmxpYyBVc2VycyBnZXRVc2VyQnlJZChTdHJpbmcgU0lELCBsb25nIHVzZXJfaWQpCisJIC0tPgorCTxuZXRSZW1vdGVDYWxsSGliIG5hbWU9ImdldFVzZXJCeUlkIiBmdW5jbmFtZT0idXNlcnNlcnZpY2UuZ2V0VXNlckJ5SWQiIAorCQkJICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAgICAgIAorCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBjYW52YXMuc2Vzc2lvbklkOyA8L21ldGhvZD48L25ldHBhcmFtPgorCQk8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBwYXJlbnQucGFyZW50LnVzZXJJZDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAJPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+CisgICAJCTwhW0NEQVRBWworICAgIAkJcGFyZW50LnNldEF0dHJpYnV0ZSgidGl0bGUiLHBhcmVudC50aXRsZSsiICIrdmFsdWUuZmlyc3RuYW1lKyIgIit2YWx1ZS5sYXN0bmFtZSk7CisgICAgCQl0aGlzLnBhcmVudC52aWV3VXNlclByb2ZpbGUudmlld1VzZXJQcm9maWxlLmluaXRGaWVsZHModmFsdWUpOworICAgCQldXT4KKyAgICAJPC9oYW5kbGVyPgorICAgIDwvbmV0UmVtb3RlQ2FsbEhpYj4JCisJCisgICAgPCEtLQorICAgIHB1YmxpYyBMb25nIHJlcXVlc3RVc2VyVG9Db250YWN0TGlzdChTdHJpbmcgU0lELCBMb25nIHVzZXJUb0FkZF9pZCwgCisgICAgICAgICAgICAgICAgU3RyaW5nIGRvbWFpbiwgU3RyaW5nIHBvcnQsIFN0cmluZyB3ZWJhcHApCisgICAgIC0tPgorICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9InJlcXVlc3RVc2VyVG9Db250YWN0TGlzdCIgZnVuY25hbWU9InVzZXJzZXJ2aWNlLnJlcXVlc3RVc2VyVG9Db250YWN0TGlzdCIgCisgICAgICAgICAgICAgICAgICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgYWN0aXZlRXJyb3JIYW5kbGVyPSJ0cnVlIiA+ICAgICAgCisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIGNhbnZhcy5zZXNzaW9uSWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIHBhcmVudC5wYXJlbnQudmlld1VzZXJQcm9maWxlLnZpZXdVc2VyUHJvZmlsZS51c2VyT2JqZWN0LnVzZXJfaWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIGNhbnZhcy5nZXRIdHRwSG9zdCgpOyA8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBjYW52YXMucmVkNWh0dHBwb3J0OyA8L21ldGhvZD48L25ldHBhcmFtPgorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiBjYW52YXMuaHR0cFJvb3RLZXk7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInJlcXVlc3RVc2VyVG9Db250YWN0TGlzdDogIix2YWx1ZSk7CisgICAgICAgICAgICAgICAgaWYgKHZhbHVlID4gMCkgeworICAgICAgICAgICAgICAgICAgICBuZXcgbHoubGFiZWxlcnJvclBvcHVwKGNhbnZhcyx7bGFiZWxpZDoxMjY3LGVycm9ybGFiZWxpZDoxMjY2fSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICA8L25ldFJlbW90ZUNhbGxIaWI+IAorCQorCTx2aWV3IG5hbWU9InZpZXdVc2VyUHJvZmlsZSIgeT0iMjQiIGhlaWdodD0iJG9uY2V7IHBhcmVudC5oZWlnaHQtNjAgfSIgCisJCSAgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGgtMiB9IiBjbGlwPSJ0cnVlIj4KKwkJCisJCTx2aWV3VXNlclByb2ZpbGUgbmFtZT0idmlld1VzZXJQcm9maWxlIiAvPgorCQkKKwkJPG9tX3ZzY3JvbGxiYXIgLz4KKwkJCisJPC92aWV3PgorCQorCTxzaW1wbGVMYWJlbEJ1dHRvbiBsYWJlbGlkPSIxMjUzIiB3aWR0aD0iMTkwIiB4PSI1IiB5PSIkb25jZXsgcGFyZW50LmhlaWdodCAtIDI2IH0iPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgIG5ldyBsei5uZXdQcml2YXRlTWVzc2FnZShjYW52YXMseworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4OjIwMCx5OjEyMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmT2JqOm51bGwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbmltaXphYmxlOnRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGltaXphYmxlOnRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzZHJhZ2FibGU6dHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlck9iamVjdDpudWxsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2lkOnBhcmVudC52aWV3VXNlclByb2ZpbGUudmlld1VzZXJQcm9maWxlLnVzZXJPYmplY3QudXNlcl9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg6Y2FudmFzLndpZHRoLTMwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVpZ2h0OmNhbnZhcy5oZWlnaHQtMTMwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICA8L3NpbXBsZUxhYmVsQnV0dG9uPiAgCisJCisJPHNpbXBsZUxhYmVsQnV0dG9uIGxhYmVsaWQ9IjExODYiIHdpZHRoPSIxNjAiIHg9IiRvbmNleyBwYXJlbnQud2lkdGggLSAyNzAgfSIgeT0iJG9uY2V7IHBhcmVudC5oZWlnaHQgLSAyNiB9Ij4KKyAgICAJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgCQlpZiAoaGliLnVzZXJvYmplY3QudXNlcl9pZCA9PSBwYXJlbnQudmlld1VzZXJQcm9maWxlLnZpZXdVc2VyUHJvZmlsZS51c2VyT2JqZWN0LnVzZXJfaWQpIHsKKyAgICAgICAgICAgICAgICBuZXcgbHoubGFiZWxlcnJvclBvcHVwKGNhbnZhcyx7ZXJyb3JsYWJlbGlkOjEyMjV9KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwYXJlbnQucmVxdWVzdFVzZXJUb0NvbnRhY3RMaXN0LmRvQ2FsbCgpOworICAgIAk8L2hhbmRsZXI+CisgICAgPC9zaW1wbGVMYWJlbEJ1dHRvbj4gICAKKwkKKyAgICA8c2ltcGxlTGFiZWxCdXR0b24gbGFiZWxpZD0iNjEiIHdpZHRoPSIxMDAiIHg9IiRvbmNleyBwYXJlbnQud2lkdGggLSAxMDUgfSIgeT0iJG9uY2V7IHBhcmVudC5oZWlnaHQgLSAyNiB9Ij4KKyAgICAJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgCQl0aGlzLnBhcmVudC5jbG9zZSgpOworICAgIAk8L2hhbmRsZXI+CisgICAgPC9zaW1wbGVMYWJlbEJ1dHRvbj4KKwkKKzwvY2xhc3M+CQorCQorPCEtLS0gVXNlciBQcm9maWxlIFNldHRpbmcgUGFuZWwgLS0+Cis8Y2xhc3MgbmFtZT0idmlld1VzZXJQcm9maWxlIiBleHRlbmRzPSJ2aWV3IiA+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJ1c2VyT2JqZWN0IiB2YWx1ZT0ibnVsbCIgLz4KKwkJCQorCTxtZXRob2QgbmFtZT0iaW5pdEZpZWxkcyIgYXJncz0ib2JqIj4KKyAgICAJPCFbQ0RBVEFbCisgICAgCSAgICB0aGlzLnVzZXJPYmplY3QgPSBvYmo7CisJICAgICAgICB0aGlzLl91c2VycGljLnNldEF0dHJpYnV0ZSgnc3JjJywgY2FudmFzLmdldFBpY3R1cmVVcmwob2JqLnBpY3R1cmV1cmkKKwkJCQksICcmbW9kdWxlTmFtZT1yZW1vdGV1c2VycHJvZmlsZSZyZW1vdGVVc2VyaWQ9JytvYmoudXNlcl9pZCkpOworCSAgICAgICAgCisJICAgICAgICB2YXIgdFVzZXJOYW1lID0gIjx1PjxGT05UIGNvbG9yPScjMDAwMENDJz48YSBocmVmPSdhc2Z1bmN0aW9uOl9yb290LnNlYXJjaFVzZXJzLCIrIHRoaXMucmVtb3ZlV2hpdGVzcGFjZShvYmouZmlyc3RuYW1lKSArIic+IiArIHRoaXMucmVtb3ZlV2hpdGVzcGFjZShvYmouZmlyc3RuYW1lKSArICI8L2E+PC9GT05UPjwvdT4iOworICAgIAkJCQorCSAgICAgICAgdFVzZXJOYW1lICs9ICIgPHU+PEZPTlQgY29sb3I9JyMwMDAwQ0MnPjxhIGhyZWY9J2FzZnVuY3Rpb246X3Jvb3Quc2VhcmNoVXNlcnMsIisgdGhpcy5yZW1vdmVXaGl0ZXNwYWNlKG9iai5sYXN0bmFtZSkgKyInPiIgKyB0aGlzLnJlbW92ZVdoaXRlc3BhY2Uob2JqLmxhc3RuYW1lKSArICI8L2E+PC9GT05UPjwvdT4iOworICAgIAkKKyAgICAJCXRoaXMudXNlcm5hbWUuc2V0QXR0cmlidXRlKCJ0ZXh0Iix0VXNlck5hbWUpOworICAgIAkJCisgICAgCQl0aGlzLnRpbWV6b25lLnNldEF0dHJpYnV0ZSgidGV4dCIsdGhpcy51c2VyT2JqZWN0Lm9tVGltZVpvbmUuam5hbWUgKyAnICgnICsgdGhpcy51c2VyT2JqZWN0Lm9tVGltZVpvbmUuaWNhbCArICcpJyk7CisgICAgCQkKKyAgICAJCXRoaXMubWVtYmVyU2luY2Uuc2V0QXR0cmlidXRlKCJ0ZXh0IixwYXJzZURhdGVUb1N0cmluZyh0aGlzLnVzZXJPYmplY3Quc3RhcnR0aW1lKSk7CisgICAgCQkKKyAgICAJCXZhciBhT2ZmZXJpbmdzID0gb2JqLnVzZXJPZmZlcnMuc3BsaXQoIiwiKTsKKyAgICAJCQorICAgIAkJdmFyIHRPZmZlcmluZ3MgPSAiIjsKKyAgICAJCQorICAgIAkJZm9yICh2YXIgdD0wO3Q8YU9mZmVyaW5ncy5sZW5ndGg7dCsrKSB7CisgICAgCQkJCisgICAgCQkJdE9mZmVyaW5ncyArPSAiPHU+PEZPTlQgY29sb3I9JyMwMDAwQ0MnPjxhIGhyZWY9J2FzZnVuY3Rpb246X3Jvb3Quc2VhcmNoT2ZmZXJzLCIrIHRoaXMucmVtb3ZlV2hpdGVzcGFjZShhT2ZmZXJpbmdzW3RdKSArIic+IiArIHRoaXMucmVtb3ZlV2hpdGVzcGFjZShhT2ZmZXJpbmdzW3RdKSArICI8L2E+PC9GT05UPjwvdT4iOworICAgIAkJCQorICAgIAkJCWlmICh0KzEgPCBhT2ZmZXJpbmdzLmxlbmd0aCkgeworICAgIAkJCQl0T2ZmZXJpbmdzICs9ICIsICI7CisgICAgCQkJfQorICAgIAkJfQorICAgIAkJCisgICAgCQl0aGlzLnVzZXJPZmZlcnMuX3RleHQuc2V0QXR0cmlidXRlKCJ0ZXh0Iix0T2ZmZXJpbmdzKTsKKyAgICAJCQorICAgIAkJCisgICAgCQl2YXIgYVNlYXJjaHMgPSBvYmoudXNlclNlYXJjaHMuc3BsaXQoIiwiKTsKKyAgICAJCQorICAgIAkJdmFyIHRTZWFyY2hzID0gIiI7CisgICAgCQkKKyAgICAJCWZvciAodmFyIHQ9MDt0PGFTZWFyY2hzLmxlbmd0aDt0KyspIHsKKyAgICAJCQkKKyAgICAJCQl0U2VhcmNocyArPSAiPHU+PEZPTlQgY29sb3I9JyMwMDAwQ0MnPjxhIGhyZWY9J2FzZnVuY3Rpb246X3Jvb3Quc2VhcmNoSW50ZXJlc3QsIisgdGhpcy5yZW1vdmVXaGl0ZXNwYWNlKGFTZWFyY2hzW3RdKSArIic+IiArIHRoaXMucmVtb3ZlV2hpdGVzcGFjZShhU2VhcmNoc1t0XSkgKyAiPC9hPjwvRk9OVD48L3U+IjsKKyAgICAJCQkKKyAgICAJCQlpZiAodCsxIDwgYVNlYXJjaHMubGVuZ3RoKSB7CisgICAgCQkJCXRTZWFyY2hzICs9ICIsICI7CisgICAgCQkJfQorICAgIAkJfQorICAgIAkJCisgICAgCQl0aGlzLnVzZXJTZWFyY2hzLl90ZXh0LnNldEF0dHJpYnV0ZSgidGV4dCIsdFNlYXJjaHMpOworICAgIAkJCisgICAgCQlpZiAoaGliLnVzZXJvYmplY3QudXNlcl9pZCA9PSB0aGlzLnVzZXJPYmplY3QudXNlcl9pZCkgeworICAgIAkJCS8vU2VsZiBhbHdheXMgc2hvdworICAgIAkJCXRoaXMuc2hvd1VzZXJDb250YWN0RGF0YSgpOworICAgIAkJfSBlbHNlIGlmIChvYmouc2hvd0NvbnRhY3REYXRhKSB7CisgICAgCQkJdGhpcy5zaG93VXNlckNvbnRhY3REYXRhKCk7CisgICAgCQl9ICBlbHNlIGlmIChvYmouc2hvd0NvbnRhY3REYXRhVG9Db250YWN0cykgeworICAgICAgICAgICAgICAgIHRoaXMuY2hlY2tVc2VySXNJbkNvbnRhY3RMaXN0LmRvQ2FsbCgpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAJCQl0aGlzLnVzZXJDb250YWN0RGF0YS5zZXRBdHRyaWJ1dGUoInRleHQiLGNhbnZhcy5nZXRMYWJlbE5hbWUoMTI2OCkpOworICAgIAkJfQorICAgIAkJCisgICAgCQorICAgIAldXT4KKwk8L21ldGhvZD4KKwkKKwk8IS0tCisJcHVibGljIEJvb2xlYW4gY2hlY2tVc2VySXNJbkNvbnRhY3RMaXN0KFN0cmluZyBTSUQsIExvbmcgdXNlcl9pZCkKKwkgLS0+CisJPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iY2hlY2tVc2VySXNJbkNvbnRhY3RMaXN0IiBmdW5jbmFtZT0idXNlcnNlcnZpY2UuY2hlY2tVc2VySXNJbkNvbnRhY3RMaXN0IiAKKyAgICAgICAgICAgICAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4gICAgICAKKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gY2FudmFzLnNlc3Npb25JZDsgPC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gcGFyZW50LnBhcmVudC51c2VyT2JqZWN0LnVzZXJfaWQ7IDwvbWV0aG9kPjwvbmV0cGFyYW0+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImNoZWNrVXNlcklzSW5Db250YWN0TGlzdDogIix2YWx1ZSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKHZhbHVlKXsKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50LnNob3dVc2VyQ29udGFjdERhdGEoKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBwYXJlbnQudXNlckNvbnRhY3REYXRhLnNldEF0dHJpYnV0ZSgidGV4dCIsY2FudmFzLmdldExhYmVsTmFtZSgxMjY5KSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgXV0+CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICA8L25ldFJlbW90ZUNhbGxIaWI+IAorCisJPG1ldGhvZCBuYW1lPSJzaG93VXNlckNvbnRhY3REYXRhIj4KKwkJPCFbQ0RBVEFbCisJCQorCQkJdmFyIHRTdHJpbmcgPSBjYW52YXMuZ2V0Tm90TnVsbFN0cmluZyh0aGlzLnVzZXJPYmplY3QuYWRyZXNzZXMuc3RyZWV0KSArICIgIiArIGNhbnZhcy5nZXROb3ROdWxsU3RyaW5nKHRoaXMudXNlck9iamVjdC5hZHJlc3Nlcy5hZGRpdGlvbmFsbmFtZSkgKyAiPGJyLz4iOworCQkJdFN0cmluZyArPSBjYW52YXMuZ2V0Tm90TnVsbFN0cmluZyh0aGlzLnVzZXJPYmplY3QuYWRyZXNzZXMuemlwKSArICIgIiArIGNhbnZhcy5nZXROb3ROdWxsU3RyaW5nKHRoaXMudXNlck9iamVjdC5hZHJlc3Nlcy50b3duKSArICI8YnIvPiI7CisJCQl0U3RyaW5nICs9IGNhbnZhcy5nZXROb3ROdWxsU3RyaW5nKHRoaXMudXNlck9iamVjdC5hZHJlc3Nlcy5zdGF0ZXMubmFtZSkgKyAiPGJyLz48YnIvPiI7CisJCQl0U3RyaW5nICs9IGNhbnZhcy5nZXROb3ROdWxsU3RyaW5nKHRoaXMudXNlck9iamVjdC5hZHJlc3Nlcy5lbWFpbCkgKyAiPGJyLz4iOworCQkJdFN0cmluZyArPSBjYW52YXMuZ2V0Tm90TnVsbFN0cmluZyh0aGlzLnVzZXJPYmplY3QuYWRyZXNzZXMucGhvbmUpICsgIjxici8+PGJyLz4iOworCQkJdFN0cmluZyArPSBjYW52YXMuZ2V0Tm90TnVsbFN0cmluZyh0aGlzLnVzZXJPYmplY3QuYWRyZXNzZXMuY29tbWVudCkgKyAiPGJyLz4iOworCisJCQl0aGlzLnVzZXJDb250YWN0RGF0YS5zZXRBdHRyaWJ1dGUoInRleHQiLHRTdHJpbmcpOworCisJCV1dPgorCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0icmVtb3ZlV2hpdGVzcGFjZSIgYXJncz0ic3RyIj4KKwkJPCFbQ0RBVEFbCisJCQorCQkJLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgicmVtb3ZlV2hpdGVzcGFjZSAxICIsc3RyKTsKKwkJCS8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInJlbW92ZVdoaXRlc3BhY2UgMiAiLHN0ci5sZW5ndGgpOworCQkKKwkJCXZhciB0UmVzdWx0aW5nU3RyaW5nID0gIiI7CisJCQkKKwkJCWZvciAodmFyIGk9MDtpPHN0ci5sZW5ndGg7aSsrKSB7CisJCQkJCisJCQkJdmFyIHRDaGFyID0gc3RyLnN1YnN0cmluZyhpLGkrMSk7CisJCQkJCisJCQkJaWYgKHRDaGFyICE9ICIgIikgeworCQkJCQl0UmVzdWx0aW5nU3RyaW5nID0gc3RyLnN1YnN0cmluZyhpLHN0ci5sZW5ndGgpOworCQkJCQlicmVhazsKKwkJCQl9CisJCQkJCisJCQl9CisJCQkKKwkJCWZvciAodmFyIGk9dFJlc3VsdGluZ1N0cmluZy5sZW5ndGg7aT4wO2ktLSkgeworCQkJCQorCQkJCXZhciB0Q2hhciA9IHRSZXN1bHRpbmdTdHJpbmcuc3Vic3RyaW5nKGktMSxpKTsKKwkJCQkKKwkJCQlpZiAodENoYXIgIT0gIiAiKSB7CisJCQkJCXRSZXN1bHRpbmdTdHJpbmcgPSB0UmVzdWx0aW5nU3RyaW5nLnN1YnN0cmluZygwLGkpOworCQkJCQlicmVhazsKKwkJCQl9CisJCQkJCisJCQl9CisJCQkKKwkJCQorCQkJcmV0dXJuIHRSZXN1bHRpbmdTdHJpbmc7CisJCQkKKwkJCisJCV1dPgorCTwvbWV0aG9kPgorCQorCTxpbWFnZSB5PSIxMCIgeD0iMTAiIG5hbWU9Il91c2VycGljIiAvPgorCQorCTx2aWV3IHg9IjE4MCIgd2lkdGg9IjI2MCIgeT0iMTAiIGhlaWdodD0iMTIwIiBiZ2NvbG9yPSIweEZGRkZGRiIgLz4KKwkKKwk8bGFiZWxUZXh0IG5hbWU9InVzZXJuYW1lTGFiZWwiIHg9IjE4MCIgeT0iMTAiIGxhYmVsaWQ9IjExNjQiIC8+CisJPGxhYmVsVGV4dCBuYW1lPSJ1c2VybmFtZSIgeD0iMjYwIiB5PSIxMCIgLz4KKwkKKwk8bGFiZWxUZXh0IG5hbWU9InRpbWV6b25lTGFiZWwiIHg9IjE4MCIgeT0iMzAiIGxhYmVsaWQ9IjExNjUiIC8+CisJPGxhYmVsVGV4dCBuYW1lPSJ0aW1lem9uZSIgeD0iMjYwIiB5PSIzMCIgLz4KKwkKKwk8bGFiZWxUZXh0IG5hbWU9Im1lbWJlclNpbmNlTGFiZWwiIHg9IjE4MCIgeT0iNTAiIGxhYmVsaWQ9IjEyOTYiIC8+CisgICAgPGxhYmVsVGV4dCBuYW1lPSJtZW1iZXJTaW5jZSIgeD0iMjYwIiB5PSI1MCIgLz4KKwkKKwk8bGFiZWxUZXh0IG5hbWU9InVzZXJGaWVsZHMiIHg9IjEwIiB5PSIxNDAiIGxhYmVsaWQ9IjExNjYiIGZvbnRzdHlsZT0iYm9sZCIgLz4KKwkKKwk8bGFiZWxUZXh0IG5hbWU9InVzZXJPZmZlcnNMYWJlbCIgeD0iMTAiIHk9IjE2MCIgbGFiZWxpZD0iMTE2MiIgLz4KKwkKKwk8dmlldyBuYW1lPSJ1c2VyT2ZmZXJzIiB4PSIxMjAiIHk9IjE2MCIgaGVpZ2h0PSIxMDAiIHdpZHRoPSIzMjAiIGNsaXA9InRydWUiIGJnY29sb3I9IjB4RkZGRkZGIj4KKwkJPGxhYmVsVGV4dCBuYW1lPSJfdGV4dCIgbXVsdGlsaW5lPSJ0cnVlIiB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aC0gMTYgfSIgLz4KKwkJPG9tX3ZzY3JvbGxiYXIgLz4KKwk8L3ZpZXc+CisJCisJPGxhYmVsVGV4dCBuYW1lPSJ1c2VyU2VhcmNoc0xhYmVsIiB4PSIxMCIgeT0iMjcwIiBsYWJlbGlkPSIxMTYzIiAvPgorCQorCTx2aWV3IG5hbWU9InVzZXJTZWFyY2hzIiB4PSIxMjAiIHk9IjI3MCIgaGVpZ2h0PSIxMDAiIHdpZHRoPSIzMjAiIGNsaXA9InRydWUiIGJnY29sb3I9IjB4RkZGRkZGIj4KKwkJPGxhYmVsVGV4dCBuYW1lPSJfdGV4dCIgbXVsdGlsaW5lPSJ0cnVlIiB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aC0gMTYgfSIgLz4KKwkJPG9tX3ZzY3JvbGxiYXIgLz4KKwk8L3ZpZXc+CisJCisJPGxhYmVsVGV4dCBuYW1lPSJ1c2VyQ29udGFjdCIgeD0iMTAiIHk9IjM4MCIgbGFiZWxpZD0iMTE2NyIgZm9udHN0eWxlPSJib2xkIiAvPgorCQorCTxsYWJlbFRleHQgeD0iMTAiIHk9IjQwMCIgbGFiZWxpZD0iMTI3MCIgLz4KKwkKKwk8bGFiZWxUZXh0IG5hbWU9InVzZXJDb250YWN0RGF0YSIgeD0iMTIwIiB5PSI0MDAiIG11bHRpbGluZT0idHJ1ZSIgd2lkdGg9IjMyMCIgCisJCQkgICBzZWxlY3RhYmxlPSJ0cnVlIiBiZ2NvbG9yPSIweEZGRkZGRiIgcmVzaXplPSJmYWxzZSIgLz4KKwkgICAgCQorPC9jbGFzcz4KKworCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL3NpcGludGVncmF0aW9uL2xpYnJhcnkubHp4IGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zaXBpbnRlZ3JhdGlvbi9saWJyYXJ5Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMGMxZTAxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvbW9kdWxlcy9zaXBpbnRlZ3JhdGlvbi9saWJyYXJ5Lmx6eApAQCAtMCwwICsxLDI1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCQorICAgIDxpbmNsdWRlIGhyZWY9InNpcExvYWRlci5sengiIC8+CisgICAgCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9tb2R1bGVzL3NpcGludGVncmF0aW9uL3NpcExvYWRlci5senggYi9XZWJDb250ZW50L3NyYy9tb2R1bGVzL3NpcGludGVncmF0aW9uL3NpcExvYWRlci5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTk0ODAyOQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL21vZHVsZXMvc2lwaW50ZWdyYXRpb24vc2lwTG9hZGVyLmx6eApAQCAtMCwwICsxLDM0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorICAgIAorPGNsYXNzIG5hbWU9InNpcExvYWRlciIgZXh0ZW5kcz0idmlldyIgYmdjb2xvcj0iMHhGRkZGRkYiCisJICAgYWxpZ249ImNlbnRlciIgdmFsaWduPSJtaWRkbGUiIAorCSAgIHdpZHRoPSIkeyB0aGlzLl9sYWJlbC53aWR0aCArIDUwIH0iIGhlaWdodD0iNDAiPgorCisgICAgPHZpZXcgcmVzb3VyY2U9Indhcm5pbmdfaWNvbl9yc2MiIHg9IjEwIiB5PSIxMCIgLz4KKworICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iOTAwIiBuYW1lPSJfbGFiZWwiCisgICAgCQkgICBmb250c2l6ZT0iMTEiIHk9IjEwIiB4PSI0MCIgLz4KKyAgICAKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL3BsdWdpbnMvbGlicmFyeS5senggYi9XZWJDb250ZW50L3NyYy9wbHVnaW5zL2xpYnJhcnkubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxN2QyYzYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9wbHVnaW5zL2xpYnJhcnkubHp4CkBAIC0wLDAgKzEsMjkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKyAgICA8IS0tIEFkZCB0aGUgRm9sZGVyIGFuZCBFbnRyeSBmb3IgeW91ciBQbHVnaW4gaGVyZSAtLT4KKworICAgIDwhLS0KKyAgICA8aW5jbHVkZSBocmVmPSJsaXZld2FsbC8iLz4KKyAgICAgLS0+CisJCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9yZXNvdXJjZXMvbGlicmFyeS5senggYi9XZWJDb250ZW50L3NyYy9yZXNvdXJjZXMvbGlicmFyeS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzdjZDljNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL3Jlc291cmNlcy9saWJyYXJ5Lmx6eApAQCAtMCwwICsxLDMwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCis8IS0tIEZhbUZhbSBJY29uIFNldCAtLT4KKzxyZXNvdXJjZSBuYW1lPSJ1c2VyX21vZGVyYXRvcl9saXN0X2FwcGx5X3JzYyIgc3JjPSJ0aWNrLnBuZyIgLz4KKworPCEtLSBhZGQgZm9yIGNhbGVuZGFyIC0tPgorPCEtLSBGYW1GYW0gSWNvbiBTZXQgLS0+Cis8cmVzb3VyY2UgbmFtZT0idXNlcl9wcm9maWxlX3JzYyIgc3JjPSJ1c2VyLnBuZyIgLz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvcmVzb3VyY2VzL3RpY2sucG5nIGIvV2ViQ29udGVudC9zcmMvcmVzb3VyY2VzL3RpY2sucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5OTI1YTAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9yZXNvdXJjZXMvdGljay5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvcmVzb3VyY2VzL3VzZXIucG5nIGIvV2ViQ29udGVudC9zcmMvcmVzb3VyY2VzL3VzZXIucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5ZjM1Y2MKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9yZXNvdXJjZXMvdXNlci5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvcmVzdC9yZXN0LXRlc3RjbGllbnQubHp4IGIvV2ViQ29udGVudC9zcmMvcmVzdC9yZXN0LXRlc3RjbGllbnQubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3MDI0MjUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy9yZXN0L3Jlc3QtdGVzdGNsaWVudC5sengKQEAgLTAsMCArMSw2OSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8Y2FudmFzIGRlYnVnPSJ0cnVlIiBoZWlnaHQ9IjEwMCUiIHRpdGxlPSJSRVNUIFRlc3QtQXBwbGljYXRpb24iPgorCQorPGRlYnVnIHdpZHRoPSI0NTAiIHg9IjQ2MCIgeT0iNjAwIiBoZWlnaHQ9IjEwMCIgLz4KKyAgCis8aW5jbHVkZSBocmVmPSJpbmN1YmF0b3IvbHpjb21ib2JveC5sengiIC8+CisKKzxhdHRyaWJ1dGUgbmFtZT0iX2Jhc2VVcmxSZXN0VGVzdEdhdGUiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4KKworPG1ldGhvZCBuYW1lPSJzZXRCYXNlVXJsR2F0ZXdheSIgYXJncz0idHh0Ij4KKwlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2V0QmFzZVVybEdhdGV3YXk6ICIsdHh0KTsKKwl0aGlzLnNldEF0dHJpYnV0ZSgiX2Jhc2VVcmxSZXN0VGVzdEdhdGUiLHR4dCk7CisJdmFyIHRTdHJpbmcxID0gdHh0KyIvQWRkcmVzc0Jvb2tTZXJ2aWNlL2ZpbmRFbnRyeSI7CisJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInRTdHJpbmcxOiAiLHRTdHJpbmcxKTsKKwl0aGlzLmRzZXQuc2V0U3JjKHRTdHJpbmcxKTsKKwl0aGlzLmRzZXQuc2V0UXVlcnlUeXBlKCJQT1NUIik7CisJdGhpcy5kc2V0LnNldFF1ZXJ5UGFyYW0oInBhcmFtMSIsImF3ZSIpOworCXRoaXMuZHNldC5kb1JlcXVlc3QoKTsKKwlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZHNldDogIix0aGlzLmRzZXQpOworPC9tZXRob2Q+CisKKzxkYXRhc2V0IG5hbWU9ImRzZXQiIHJlcXVlc3Q9ImZhbHNlIiB0eXBlPSJwb3N0IiBvbmRhdGE9IkRlYnVnLndyaXRlKCdvbmRhdGE6ICcsdmFsLHRoaXMuZGF0YSx0aGlzKSIgPgorPC9kYXRhc2V0PgorCis8ZGF0YXBvaW50ZXIgeHBhdGg9ImRzZXQ6LyI+CisJPGhhbmRsZXIgbmFtZT0ib25kYXRhIj4KKwkJRGVidWcud3JpdGUoJ29uZGF0YTogJyx0aGlzKTsKKwk8L2hhbmRsZXI+Cis8L2RhdGFwb2ludGVyPgorCis8dmlldyBsYXlvdXQ9ImF4aXM6eTtzcGFjaW5nOjQiIHdpZHRoPSI0NTAiIHg9IjAiPgorCTx0ZXh0IGZvbnRzdHlsZT0iYm9sZCIgdGV4dD0iQ29ubmVjdGlvbiAtIFNldHRpbmdzICh1c2VyIGZvciBib3RoIEJyb2FkQ2FzdGluZyBhbmQgU3Vic2NyaWJpbmcpIiAvPgorCTx2aWV3IHdpZHRoPSI0NTAiPgorCQk8dGV4dCB0ZXh0PSJCYXNlVVJMOiIgLz4KKwkJPGVkaXR0ZXh0IGFsaWduPSJyaWdodCIgd2lkdGg9IjM1MCIgaWQ9InVybCIgdGV4dD0iaHR0cDovLzEyNy4wLjAuMTo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcyIgLz4KKwk8L3ZpZXc+CisJPGJ1dHRvbiBhbGlnbj0icmlnaHQiIHdpZHRoPSIyMDAiIHRleHQ9ImNvbm5lY3RSdG1wQ29ubmVjdGlvbiIgCisJCQlvbmNsaWNrPSJjYW52YXMuc2V0QmFzZVVybEdhdGV3YXkodXJsLnRleHQpIiAvPgorPC92aWV3PgorCisKKzwhLS0gc29tZSBkZXNjcmlwdGlvbiAtLT4KKzx0ZXh0IGZvbnRzdHlsZT0iaXRhbGljIiB5PSIwIiB3aWR0aD0iNDUwIiBtdWx0aWxpbmU9InRydWUiIHg9IjQ1MCI+CisJVGVzdC1DbGllbnQgZm9yIFRlc3RpbmcgdGhlIFdlYlNlcnZpY2UtR2F0ZXdheSAoQXhpczIpPGJyLz4KKwlUaGlzIHVzZXMgdGhlIFJFU1QtR2F0ZXdheSwgbm90IHRoZSBTT0FQIEdhdGV3YXkgYXMgT3Blbkxhc3psbyBkb2VzIG5vdDxici8+CisJVW5kZXJzdGFuZC9zcGVhayBTT0FQIDEuMjxici8+Cis8L3RleHQ+CisKKworPC9jYW52YXM+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9yZXN0L3Jlc3QtdGVzdGNsaWVudC5sengubHpyPXN3Zjguc3dmIGIvV2ViQ29udGVudC9zcmMvcmVzdC9yZXN0LXRlc3RjbGllbnQubHp4Lmx6cj1zd2Y4LnN3ZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjE3Y2U5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvcmVzdC9yZXN0LXRlc3RjbGllbnQubHp4Lmx6cj1zd2Y4LnN3ZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy9zaXBpbmRleF9kZWJ1Zy5odG1sIGIvV2ViQ29udGVudC9zcmMvc2lwaW5kZXhfZGVidWcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTkzMWM4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvc2lwaW5kZXhfZGVidWcuaHRtbApAQCAtMCwwICsxLDEzNiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+DQorPCEtLQ0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAgDQorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICAgIAkgIA0KKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICB1bmRlciB0aGUgTGljZW5zZS4NCisgIA0KKy0tPg0KKzxodG1sPg0KKzxoZWFkPg0KKw0KKzxtZXRhIGh0dHAtZXF1aXY9ImNhY2hlLWNvbnRyb2wiIGNvbnRlbnQ9Im5vLWNhY2hlIiAvPg0KKzxtZXRhIGh0dHAtZXF1aXY9InByYWdtYSIgY29udGVudD0ibm8tY2FjaGUiIC8+DQorDQorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPg0KKzxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0iSUU9RW11bGF0ZUlFNyI+DQorPGxpbmsgcmVsPSJzaG9ydGN1dCBpY29uIiB0eXBlPSJpbWFnZS94LWljb24iIGhyZWY9ImZhdmljb24uaWNvIj4NCis8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoOyBpbml0aWFsLXNjYWxlPTEuMDsiPg0KKw0KKzx0aXRsZT5PcGVuTWVldGluZ3M8L3RpdGxlPg0KKw0KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9zaXAtYXBwbGV0L2pxdWVyeS0xLjIuNi5taW4uanMiPjwvc2NyaXB0Pg0KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9zaXAtYXBwbGV0L3VpaWUuanMiPjwvc2NyaXB0Pg0KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9zaXAtYXBwbGV0L2JsaWUuanMiPjwvc2NyaXB0Pg0KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Ii9zaXAtYXBwbGV0L2N1c3RvbS5qcyI+PC9zY3JpcHQ+DQorDQorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KKyAgICAgICAgICAvLyBJZiBsb2FkZWQgYmFyZSBpbnRvIGEgYnJvd3Nlciwgc2V0IHRoZSBicm93c2VyIHNpemUgdG8gdGhlIGNhbnZhcyBzaXplDQorICAgICAgICAgIGlmICh3aW5kb3cgPT09IHRvcCkgew0KKyAgICAgICAgICAgIChmdW5jdGlvbiAod2lkdGgsIGhlaWdodCkgew0KKyAgICAgICAgICAgICAgLy8gQ2YuIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvdmlld3BvcnQvY29tcGF0aWJpbGl0eS5odG1sDQorICAgICAgICAgICAgICBpZiAod2luZG93LmlubmVySGVpZ2h0KSB7DQorICAgICAgICAgICAgICAgIC8vIFNhZGx5LCBpbm5lckhlaWdodC9XaWR0aCBpcyBub3Qgci93IG9uIHNvbWUgYnJvd3NlcnMsIGFuZCByZXNpemVUbyBpcyBmb3Igb3V0ZXJIZWlnaHQvV2lkdGgNCisgICAgICAgICAgICAgICAgd2luZG93LnJlc2l6ZVRvKHdpZHRoID8gKHdpZHRoICsgd2luZG93Lm91dGVyV2lkdGggLSB3aW5kb3cuaW5uZXJXaWR0aCkgOiB3aW5kb3cub3V0ZXJXaWR0aCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCA/IChoZWlnaHQgKyB3aW5kb3cub3V0ZXJIZWlnaHQgLSB3aW5kb3cuaW5uZXJIZWlnaHQpIDogd2luZG93Lm91dGVySGVpZ2h0KTsNCisgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpIHsNCisgICAgICAgICAgICAgICAgaWYgKHdpZHRoKSB7DQorICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoID0gd2lkdGg7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKGhlaWdodCkgew0KKyAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgPSBoZWlnaHQ7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIGlmICh3aWR0aCkgew0KKyAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggPSB3aWR0aDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICBpZiAoaGVpZ2h0KSB7DQorICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQgPSBoZWlnaHQ7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9KShudWxsLCBudWxsKTsNCisgICAgICAgICAgfQ0KKyAgICAgICAgPC9zY3JpcHQ+DQorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiDQorCXNyYz0iZW1iZWQtY29tcHJlc3NlZC5qcyI+PC9zY3JpcHQ+DQorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KKw0KK2Z1bmN0aW9uIGdldEJyb3dzZXJJbmZvKCkgew0KKwkvL2FsZXJ0KG5hdmlnYXRvci51c2VyQWdlbnQpOw0KKwlyZXR1cm4gbmF2aWdhdG9yLnVzZXJBZ2VudDsNCit9DQorDQorPC9zY3JpcHQ+DQorCQ0KKzxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+DQoraHRtbCxib2R5IHsgLyogaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9jc3MvMTAwcGVyY2hlaWdodC5odG1sICovDQorCWhlaWdodDogMTAwJTsNCisJLyogcHJldmVudCBzY3JvbGxiYXJzICovDQorCW1hcmdpbjogMDsNCisJcGFkZGluZzogMDsNCisJYm9yZGVyOiAwIG5vbmU7DQorCW92ZXJmbG93OiBoaWRkZW47DQorfQ0KKw0KK2JvZHkgew0KKwliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOw0KK30NCisNCitpbWcgew0KKwlib3JkZXI6IDAgbm9uZTsNCit9DQorPC9zdHlsZT4NCis8L2hlYWQ+DQorPGJvZHkgb25sb2FkPSJpbml0aWFsaXplKCk7IiBvbnVubG9hZD0ibG9nT2ZmKCk7Ij4NCisNCis8YXBwbGV0IGlkPSJQSERpYWwiIGFyY2hpdmU9ImlkaWFsLmphciIgDQorICAJCWNvZGU9ImNvbS5zZXNjYS52b2lwLnVhLkFwcGxldFVBTkcuY2xhc3MiIHdpZHRoPSIwIiBoZWlnaHQ9IjAiPg0KKwk8cGFyYW0gbmFtZT0ibWF5c2NyaXB0IiB2YWx1ZT0idHJ1ZSIgLz4NCisgICAgPHBhcmFtIG5hbWU9InNjcmlwdGFibGUiIHZhbHVlPSJ0cnVlIiAvPg0KKyAgICA8cGFyYW0gbmFtZT0iY2FsbFRvIiB2YWx1ZT0iIiAvPg0KKyAgICA8cGFyYW0gbmFtZT0idXNlcm5hbWUiIHZhbHVlPSIiIC8+DQorICAgIDxwYXJhbSBuYW1lPSJwYXNzd29yZCIgdmFsdWU9IiIgLz4NCisgICAgPHBhcmFtIG5hbWU9InJlYWxtIiB2YWx1ZT0ic2lwLmlkaWFsLmZpIiAvPg0KKyAgICA8cGFyYW0gbmFtZT0icG9ydCIgdmFsdWU9IjUwNjAiIC8+DQorICAgIDxwYXJhbSBuYW1lPSJwcm94eW5hbWUiIHZhbHVlPSJ0ZXN0LmlkaWFsc2VydmVyLmNvbSIgLz4NCisgICAgPHBhcmFtIG5hbWU9InR1bm5lbCIgdmFsdWU9IjE5NC43OS4xNy4xNDA6NDQzIiAvPg0KKwk8cGFyYW0gbmFtZT0iY29kZWJhc2VVcmwiIHZhbHVlPSIuL2hhc253dXJzdCIgLz4NCisJPHBhcmFtIG5hbWU9ImZvcmNlVHVubmVsIiB2YWx1ZT0idHJ1ZSIgLz4NCis8L2FwcGxldD4NCisNCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQorICAgIGx6LmVtYmVkLnN3Zih7dXJsOiAnbWFpbi5senguc3dmOC5zd2YnLCBhbGxvd2Z1bGxzY3JlZW46ICd0cnVlJywgYmdjb2xvcjogJyNmZmZmZmYnLCB3aWR0aDogJzEwMCUnLCBoZWlnaHQ6ICcxMDAlJywgaWQ6ICdsemFwcCcsIGFjY2Vzc2libGU6ICdmYWxzZSd9KTsNCisNCisgICAgbHouZW1iZWQubHphcHAub25sb2Fkc3RhdHVzID0gZnVuY3Rpb24gbG9hZHN0YXR1cyhwKSB7DQorICAgICAgLy8gY2FsbGVkIHdpdGggYSBwZXJjZW50YWdlICgwLTEwMCkgaW5kaWNhdGluZyBsb2FkIHByb2dyZXNzDQorICAgIH0NCisNCisgICAgbHouZW1iZWQubHphcHAub25sb2FkID0gZnVuY3Rpb24gbG9hZGVkKCkgew0KKyAgICAgIC8vIGNhbGxlZCB3aGVuIHRoaXMgYXBwbGljYXRpb24gaXMgZG9uZSBsb2FkaW5nDQorICAgIH0NCis8L3NjcmlwdD4NCis8ZGl2IHN0eWxlPSJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyIgaWQ9Imx6YXBwQ29udGFpbmVyIj48ZW1iZWQNCisJc3JjPSJtYWluZGVidWcubHp4LURhdGVpZW4vbWFpbmRlYnVnLmx6eCIgcXVhbGl0eT0iaGlnaCINCisJYmdjb2xvcj0iI2ZmZmZmZiIgd21vZGU9IndpbmRvdyIgYWxsb3dmdWxsc2NyZWVuPSJmYWxzZSIgaWQ9Imx6YXBwIg0KKwluYW1lPSJsemFwcCINCisJZmxhc2h2YXJzPSJsenQ9c3dmJmFtcDtsenByb3hpZWQ9c29sbyZhbXA7bHpyPXN3ZjgmYW1wO2JnY29sb3I9JTIzZmZmZmZmJmFtcDt3aWR0aD0xMDAlMjUmYW1wO2hlaWdodD0xMDAlMjUmYW1wO19fbHp1cmw9bWFpbmRlYnVnLmx6eCUzRmx6dCUzRHN3ZiUyNmx6cHJveGllZCUzRHNvbG8lMjZsenIlM0Rzd2Y4JmFtcDtfX2x6bWluaW11bXZlcnNpb249OCZhbXA7aWQ9bHphcHAiDQorCXN3bGl2ZWNvbm5lY3Q9InRydWUiIGFsbG93c2NyaXB0YWNjZXNzPSJzYW1lRG9tYWluIg0KKwl0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCINCisJcGx1Z2luc3BhZ2U9Imh0dHA6Ly93d3cubWFjcm9tZWRpYS5jb20vZ28vZ2V0Zmxhc2hwbGF5ZXIiDQorCWFsaWduPSJtaWRkbGUiIGhlaWdodD0iMTAwJSIgd2lkdGg9IjEwMCUiPjwvZGl2Pg0KKzxub3NjcmlwdD5QbGVhc2UgZW5hYmxlIEphdmFTY3JpcHQgaW4gb3JkZXIgdG8gdXNlIHRoaXMNCithcHBsaWNhdGlvbi48L25vc2NyaXB0Pg0KKzwvYm9keT4NCis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvc3Vic2NyaWJlLmx6eC5senI9c3dmOC5zd2YgYi9XZWJDb250ZW50L3NyYy9zdWJzY3JpYmUubHp4Lmx6cj1zd2Y4LnN3ZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xM2UxMWUxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvc3Vic2NyaWJlLmx6eC5senI9c3dmOC5zd2YKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvdGVzdC1zZXR1cC5sengubHpyPXN3Zjguc3dmIGIvV2ViQ29udGVudC9zcmMvdGVzdC1zZXR1cC5sengubHpyPXN3Zjguc3dmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5OThlYTEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy90ZXN0LXNldHVwLmx6eC5senI9c3dmOC5zd2YKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvdGVzdC9UdXRvcmF0LnN3ZiBiL1dlYkNvbnRlbnQvc3JjL3Rlc3QvVHV0b3JhdC5zd2YKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzE3ZTE2MwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL3Rlc3QvVHV0b3JhdC5zd2YKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvdGVzdC9iYWNrdXAvaW5kZXguanNwIGIvV2ViQ29udGVudC9zcmMvdGVzdC9iYWNrdXAvaW5kZXguanNwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2ZDYzNDUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy90ZXN0L2JhY2t1cC9pbmRleC5qc3AKQEAgLTAsMCArMSw4NCBAQAorPCVAIHBhZ2UgbGFuZ3VhZ2U9ImphdmEiIGNvbnRlbnRUeXBlPSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiCisgICAgcGFnZUVuY29kaW5nPSJVVEYtOCIlPgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Cis8aHRtbD4KKzxoZWFkPgorCTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiAvPgorCTx0aXRsZT5PcGVuTWVldGluZ3M8L3RpdGxlPgorCTxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgdHlwZT0iaW1hZ2UveC1pY29uIiBocmVmPSJmYXZpY29uLmljbyI+CisJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic3dmb2JqZWN0LmpzIj48L3NjcmlwdD4KKwk8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorCQkKKwkJLyogaGlkZSBmcm9tIGllIG9uIG1hYyBcKi8KKwkJaHRtbCB7CisJCQloZWlnaHQ6IDEwMCU7CisJCQlvdmVyZmxvdzogaGlkZGVuOworCQl9CisJCQorCQkjZmxhc2hjb250ZW50IHsKKwkJCWhlaWdodDogMTAwJTsKKwkJfQorCQkvKiBlbmQgaGlkZSAqLworCQorCQlib2R5IHsKKwkJCWhlaWdodDogMTAwJTsKKwkJCW1hcmdpbjogMDsKKwkJCXBhZGRpbmc6IDA7CisJCQliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOworCQl9CisJCisJPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5IGFsaWduPSJjZW50ZXIiIHZhbGlnbj0ibWlkZGxlIiBhbGlnbj0iY2VudGVyIiBvbkxvYWQ9ImZvY3VzU1dGKCkiPgorCisKKwk8ZGl2IGlkPSJmbGFzaGNvbnRlbnQiPgorCQk8c3Ryb25nPllvdSBuZWVkIHRvIHVwZ3JhZGUgeW91ciBGbGFzaCBQbGF5ZXI8L3N0cm9uZz4KKwkJPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5tYWNyb21lZGlhLmNvbS9nby9nZXRmbGFzaHBsYXllci8iPkdldCB0aGUgbGF0ZXN0IEZsYXNoIFBsYXllcjwvYT48L3A+CisJPC9kaXY+CisJCisJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCQkvLyA8IVtDREFUQVsKKwkJCisJCXZhciBkID0gbmV3IERhdGUoKTsKKwkJCisJCXZhciBzbyA9IG5ldyBTV0ZPYmplY3QoIm1haW4ubHp4LnN3Zjguc3dmP3I9IitkLmdldFRpbWUoKSwgImx6YXBwIiwgIjEwMCUiLCAiMTAwJSIsICI4IiwgIiNmZmZmZmYiKTsKKwkJc28uYWRkUGFyYW0oInF1YWxpdHkiLCAiaGlnaCIpOworCQlzby5hZGRQYXJhbSgiaWQiLCAibHphcHAiKTsKKwkJc28uYWRkUGFyYW0oImFsbG93U2NyaXB0QWNjZXNzIiwgImFsd2F5cyIpOworCQlzby5hZGRQYXJhbSgic2NhbGUiLCAibm9zY2FsZSIpOworCQlzby53cml0ZSgiZmxhc2hjb250ZW50Iik7CisJCQorCQlmdW5jdGlvbiBmb2N1c1NXRigpeworCQkKKwkJICAgIGlmKG5hdmlnYXRvci5wbHVnaW5zJiZuYXZpZ2F0b3IubWltZVR5cGVzJiZuYXZpZ2F0b3IubWltZVR5cGVzLmxlbmd0aCl7CisJCSAgICB9ZWxzZSB7CisJCSAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2x6YXBwJykuZm9jdXMoKTsKKwkJICAgIH0KKwkJfSAgIAkJCisJCQorCQkvLyBdXT4KKwk8L3NjcmlwdD4JCisKKworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvdGVzdC9iYWNrdXBfd2hpdGVib2FyZC9iYXNlRHJhd0Fycm93Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL3Rlc3QvYmFja3VwX3doaXRlYm9hcmQvYmFzZURyYXdBcnJvdy5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFhZmQwMQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL3Rlc3QvYmFja3VwX3doaXRlYm9hcmQvYmFzZURyYXdBcnJvdy5sengKQEAgLTAsMCArMSw2MTEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisgICAgCis8Y2xhc3MgbmFtZT0iYmFzZURyYXdBcnJvdyIgZXh0ZW5kcz0iYmFzZURyYXdVTGluZSIgPgorICAgIAorICAgIDwhLS0gZm9yIGRyYXdpbmcgZHJhd2Fycm93IC0tPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudGRyYXdhcnJvd2xpbmVzdHJva2UiIHZhbHVlPSIweDAwMDAwMCIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRkcmF3YXJyb3dsaW5lc3Ryb2tlRGlzIiB2YWx1ZT0iMSIgdHlwZT0ibnVtYmVyIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudGRyYXdhcnJvd2xpbmVzdHJva2VGaWxsIiB2YWx1ZT0iMHhGRjY2MDAiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50ZHJhd2Fycm93bGluZXN0cm9rZUZpbGxEaXMiIHZhbHVlPSIxIiB0eXBlPSJudW1iZXIiIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50ZHJhd2Fycm93bGluZWxpbmVXaWR0aCIgdmFsdWU9IjQiIHR5cGU9Im51bWJlciIgLz4gICAKKyAgICA8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRkcmF3YXJyb3dPcGFjaXR5IiB2YWx1ZT0iMSIgdHlwZT0ibnVtYmVyIiAvPgorICAgICAgCisgICAgPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAgICBkcmF3YXJyb3cKKyAgICAgLS0+CisgICAgIAorICAgIAorICAgIDxtZXRob2QgbmFtZT0ic3RhcnREcmF3YXJyb3dsaW5lIiBhcmdzPSJvaWRfbmFtZSI+CisgICAgICAgIDwhW0NEQVRBWworCSAgICAgICAgaWYgKG9pZF9uYW1lID09IG51bGwpIHsKKwkgICAgICAgICAgICBvaWRfbmFtZSA9ICdkcmF3YXJyb3cnK3RoaXMuZ2V0Q291bnRlcigpOworCSAgICAgICAgfQorCSAgICAgICAgCisJICAgICAgICB0aGlzLmN1cnJlbnRsYXllciA9IG5ldyBsei5kcmF3Vmlld05ldyh0aGlzLHsKKwkJICAgICAgICAgICAgbmFtZTpvaWRfbmFtZSx3aWR0aDp0aGlzLndpZHRoLGhlaWdodDp0aGlzLmhlaWdodCwKKwkJICAgICAgICAgICAgb3BhY2l0eTp0aGlzLmN1cnJlbnRkcmF3YXJyb3dPcGFjaXR5fSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciBwQXJyb3dTdGFydCA9IG5ldyBmbGFzaC5nZW9tLlBvaW50KHRoaXMuc3RhcnR4LHRoaXMuc3RhcnR5KTsKKyAgICAgICAgICAgIHZhciBwQXJyb3dFbmQgPSBuZXcgZmxhc2guZ2VvbS5Qb2ludCh0aGlzLmVuZHgsdGhpcy5lbmR5KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInN0YXJ0LGVuZCxsaW5lIixwQXJyb3dTdGFydCxwQXJyb3dFbmQsdGhpcy5jdXJyZW50ZHJhd2Fycm93bGluZWxpbmVXaWR0aCk7CisgICAgICAgICAgICB0aGlzLmRyYXdBcnJvdyh0aGlzLmN1cnJlbnRsYXllcixwQXJyb3dTdGFydCxwQXJyb3dFbmQsdGhpcy5jdXJyZW50ZHJhd2Fycm93bGluZWxpbmVXaWR0aCk7CisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPiAKKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImVuZERyYXdhcnJvd2xpbmUiPgorICAgICAgICAvL0RlYnVnLndyaXRlKCJlbmREcmF3YXJyb3dsaW5lIix0aGlzLnN0YXJ0eCx0aGlzLnN0YXJ0eSx0aGlzLmVuZHgsdGhpcy5lbmR5KTsKKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgIHZhciB0ZW1wTmFtZSA9IHRoaXMuY3VycmVudGxheWVyLm5hbWU7CisgICAgICAgIC8vRGVidWcud3JpdGUoInRlbXBOYW1lOiAiLHRlbXBOYW1lKTsKKyAgICAgICAgdGhpcy5jdXJyZW50bGF5ZXIuZGVzdHJveSgpOworICAgICAgICAKKyAgICAgICAgLy9HZXRCb3VuZHMgb2YgdGhhdCBPYmplY3QKKyAgICAgICAgdmFyIG1pbnggPSB0aGlzLndpZHRoKzI7CisgICAgICAgIHZhciBtaW55ID0gdGhpcy5oZWlnaHQrMjsKKyAgICAgICAgdmFyIG1heHggPSAtMjsKKyAgICAgICAgdmFyIG1heHkgPSAtMjsKKworICAgICAgICBpZiAodGhpcy5zdGFydHg8bWlueCkgbWlueD10aGlzLnN0YXJ0eDsKKyAgICAgICAgaWYgKHRoaXMuZW5keDxtaW54KSBtaW54PXRoaXMuZW5keDsKKyAgICAgICAgCisgICAgICAgIGlmICh0aGlzLnN0YXJ0eD5tYXh4KSBtYXh4PXRoaXMuc3RhcnR4OworICAgICAgICBpZiAodGhpcy5lbmR4Pm1heHgpIG1heHg9dGhpcy5lbmR4OworICAgICAgICAKKyAgICAgICAgaWYgKHRoaXMuc3RhcnR5PG1pbnkpIG1pbnk9dGhpcy5zdGFydHk7CisgICAgICAgIGlmICh0aGlzLmVuZHk8bWlueSkgbWlueT10aGlzLmVuZHk7CisgICAgICAgIAorICAgICAgICBpZiAodGhpcy5zdGFydHk+bWF4eSkgbWF4eT10aGlzLnN0YXJ0eTsKKyAgICAgICAgaWYgKHRoaXMuZW5keT5tYXh5KSBtYXh5PXRoaXMuZW5keTsKKyAgICAgICAgCisgICAgICAgIHZhciB3aWR0aCA9IG1heHgtbWlueDsKKyAgICAgICAgdmFyIGhlaWdodCA9IG1heHktbWlueTsKKyAgICAgICAgCisgICAgICAgIC8vRGVidWcud3JpdGUoIm1pbngsbWlueSx3aWR0aCxoZWlnaHQ6ICIsbWlueCxtaW55LHdpZHRoLGhlaWdodCk7CisKKyAgICAgICAgdGhpcy5jdXJyZW50bGF5ZXIgPSBuZXcgbHouZHJhd1ZpZXdOZXcodGhpcyx7CisgICAgICAgICAgICBuYW1lOnRlbXBOYW1lLHg6bWlueCx5Om1pbnksd2lkdGg6d2lkdGgsaGVpZ2h0OmhlaWdodCwKKyAgICAgICAgICAgIG9wYWNpdHk6dGhpcy5jdXJyZW50ZHJhd2Fycm93T3BhY2l0eX0pOworICAgICAgICAgICAgCisgICAgICAgIHRoaXMuY3VycmVudGxheWVyLmZpbGxzdHlsZSA9ICcweDAwMDAwMCc7CisgICAgICAgIHRoaXMuY3VycmVudGxheWVyLmxpbmVXaWR0aCA9IHRoaXMuY3VycmVudGRyYXdhcnJvd2xpbmVsaW5lV2lkdGg7CisgICAgICAgIHRoaXMuY3VycmVudGxheWVyLnN0cm9rZVN0eWxlID0gdGhpcy5jdXJyZW50ZHJhd2Fycm93bGluZXN0cm9rZTsKKyAgICAgICAgCisgICAgICAgIC8vRGVidWcud3JpdGUoInRoaXMuY3VycmVudGxheWVyOiAiLHRoaXMuY3VycmVudGxheWVyKTsKKworICAgICAgICB2YXIgdCA9IG5ldyBsei5kcmF3QXJyb3dXaGl0ZUJvYXJkKHRoaXMuY3VycmVudGxheWVyLHt4OjAseTowfSk7CisKKyAgICAgICAgLy9Db2xvcgorICAgICAgICAvL3Quc2V0VGludCh0aGlzLmN1cnJlbnRkcmF3YXJyb3dsaW5lc3Ryb2tlLDYwKTsKKyAgICAgICAgdC5zZXRDb2xvcih0aGlzLmN1cnJlbnRkcmF3YXJyb3dsaW5lc3Ryb2tlKTsKKyAgICAgICAgCisgICAgICAgIHZhciB0eCA9IHRoaXMuZW5keC10aGlzLnN0YXJ0eDsKKyAgICAgICAgdmFyIHR5ID0gdGhpcy5lbmR5LXRoaXMuc3RhcnR5OworCisgICAgICAgIHZhciBnZWdlbmthdGhldGUgPSBNYXRoLmFicyh0eSk7CisgICAgICAgIHZhciBhbmthdGhldGUgPSBNYXRoLmFicyh0eCk7IAorICAgICAgICB2YXIgaHlwb3RoZW51c2UgPSBNYXRoLnNxcnQoKGFua2F0aGV0ZSphbmthdGhldGUpKyhnZWdlbmthdGhldGUqZ2VnZW5rYXRoZXRlKSk7CisgICAgICAgIHZhciBzaW5BbHBoYSA9IChnZWdlbmthdGhldGUvaHlwb3RoZW51c2UpOworICAgICAgICB2YXIgYWxwaGEgPSBNYXRoLmFzaW4oc2luQWxwaGEpOworICAgICAgICBhbHBoYSA9IGFscGhhLyhNYXRoLlBJLzE4MCk7CisgICAgICAgICAgICAKKyAgICAgICAgdmFyIG5ld3ggPSAwOworICAgICAgICB2YXIgbmV3eSA9IDA7CisgICAgICAgIGlmICh0eD49MCAmJiB0eT49MCl7ICAgIAorICAgICAgICAgICAgdC5zZXRBdHRyaWJ1dGUoJ3JvdGF0aW9uJywoYWxwaGEtNDUpKTsKKyAgICAgICAgfSBlbHNlIGlmICh0eDwwICYmIHR5Pj0wKXsKKyAgICAgICAgICAgIG5ld3ggPSB3aWR0aDsKKyAgICAgICAgICAgIHQuc2V0QXR0cmlidXRlKCdyb3RhdGlvbicsKDQ1KzkwLWFscGhhKSk7CisgICAgICAgIH0gZWxzZSBpZiAodHg8MCAmJiB0eTwwKXsKKyAgICAgICAgICAgIG5ld3kgPSBoZWlnaHQ7CisgICAgICAgICAgICBuZXd4ID0gd2lkdGg7CisgICAgICAgICAgICB0LnNldEF0dHJpYnV0ZSgncm90YXRpb24nLChhbHBoYSs0NSs5MCkpOworICAgICAgICB9IGVsc2UgaWYgKHR4PjAgJiYgdHk8PTApeworICAgICAgICAgICAgbmV3eSA9IGhlaWdodDsKKyAgICAgICAgICAgIHQuc2V0QXR0cmlidXRlKCdyb3RhdGlvbicsKDQ1LWFscGhhLTkwKSk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHQuc2V0QXR0cmlidXRlKCd4JyxuZXd4KTsKKyAgICAgICAgdC5zZXRBdHRyaWJ1dGUoJ3knLG5ld3kpOworICAgICAgICAKKyAgICAgICAgLy9TY2FsaW5nCisgICAgICAgIHZhciBiYXNpY0xlbmd0aCA9IE1hdGguc3FydCgodC53aWR0aCp0LndpZHRoKSsodC53aWR0aCp0LndpZHRoKSk7CisgICAgICAgIHQuZ2V0RGlzcGxheU9iamVjdCgpLl94c2NhbGUgPSAoaHlwb3RoZW51c2UvYmFzaWNMZW5ndGgpKjEwMDsKKyAgICAgICAgdC5nZXREaXNwbGF5T2JqZWN0KCkuX3lzY2FsZSA9IChoeXBvdGhlbnVzZS9iYXNpY0xlbmd0aCkqMTAwOworICAgICAgICAKKworICAgICAgICAvL1NldCBwcmV2aW91cyB0byBudWxsCisgICAgICAgIHRoaXMucHJldnggPSBudWxsOworICAgICAgICB0aGlzLnByZXZ5ID0gbnVsbDsgIAorICAgICAgICAKKyAgICAgICAgLy9BZGQgTGF5ZXIgdG8gZ2xvYmFsIExheWVyICAgICAKKyAgICAgICAgdGhpcy5sYXllcnMucHVzaCh0aGlzLmN1cnJlbnRsYXllcik7ICAKKyAgICAgICAgXV0+CisgICAgICAgIHRoaXMuZHJhd2Fycm93bGluZXJlZ2lzdGVyRmluYWwoKTsKKyAgICAgICAgdGhpcy5jdXJyZW50bGF5ZXIgPSBuZXcgTHpWaWV3KCk7CisgICAgICAgIC8vRGVidWcud3JpdGUoInQ6ICIsdCk7CisgICAgPC9tZXRob2Q+IAorICAgICAgIAorICAgIAorICAgIAorICAgIDxtZXRob2QgbmFtZT0iZHJhd0Fycm93IiBhcmdzPSJncmFwaGljcyxzdGFydCxlbmQsdGhpY2tuZXNzIj4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgLy8oZ3JhcGhpY3M6R3JhcGhpY3MsCisgICAgLy8gICAgICAgICAgICBzdGFydDpQb2ludCxlbmQ6UG9pbnQsCisgICAgLy8gICAgICAgICAgICBzdHlsZTpPYmplY3Q9bnVsbCk6dm9pZCB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmIChzdGFydC5lcXVhbHMoZW5kKSkgcmV0dXJuOworICAgICAgICAgICAgCisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciBhcnJvd1N0eWxlID0geydzaGFmdENvbnRyb2xQb3NpdGlvbic6MC41LAorICAgICAgICAgICAgICAgICAgICAnc2hhZnRDb250cm9sU2l6ZSc6MC41LAorICAgICAgICAgICAgICAgICAgICAnaGVhZExlbmd0aCc6dGhpY2tuZXNzKjUsIC8vUGl4ZWwgTGVuZ3RoIG9mIGFycm93IGhlYWQKKyAgICAgICAgICAgICAgICAgICAgJ2hlYWRXaWR0aCc6dGhpY2tuZXNzKjUsLy9SZWxhdGl2ZSB3aWR0aCBvZiBhcnJvdyBoZWFkCisgICAgICAgICAgICAgICAgICAgICdlZGdlQ29udHJvbFBvc2l0aW9uJzowLjUsCisgICAgICAgICAgICAgICAgICAgICdlZGdlQ29udHJvbFNpemUnOjAuNSwKKyAgICAgICAgICAgICAgICAgICAgJ3NoYWZ0UG9zaXRpb24nOjAsCisgICAgICAgICAgICAgICAgICAgICdzaGFmdFRoaWNrbmVzcyc6dGhpY2tuZXNzCisgICAgICAgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciBmdWxsVmVjdDpQb2ludCA9IGVuZC5zdWJ0cmFjdChzdGFydCk7CisgICAgICAgICAgICB2YXIgaGFsZldpZHRoOk51bWJlciA9IChhcnJvd1N0eWxlLmhlYWRXaWR0aCAhPSAtMSkgPyBhcnJvd1N0eWxlLmhlYWRXaWR0aC8yIDogYXJyb3dTdHlsZS5oZWFkTGVuZ3RoLzI7IAorICAgICAgICAgICAgCisgICAgICAgICAgICAvL0ZpZ3VyZSBvdXQgdGhlIGxpbmUgc3RhcnQvZW5kIHBvaW50cworICAgICAgICAgICAgdmFyIHN0YXJ0Tm9ybSA9IG5ldyBmbGFzaC5nZW9tLlBvaW50KGZ1bGxWZWN0LnksLWZ1bGxWZWN0LngpOworICAgICAgICAgICAgc3RhcnROb3JtLm5vcm1hbGl6ZShhcnJvd1N0eWxlLnNoYWZ0VGhpY2tuZXNzLzIpOworICAgICAgICAgICAgdmFyIHN0YXJ0MSA9IHN0YXJ0LmFkZChzdGFydE5vcm0pOworICAgICAgICAgICAgdmFyIHN0YXJ0MiA9IHN0YXJ0LnN1YnRyYWN0KHN0YXJ0Tm9ybSk7CisgICAgICAgICAgICB2YXIgZW5kMSA9IGVuZC5hZGQoc3RhcnROb3JtKTsKKyAgICAgICAgICAgIHZhciBlbmQyID0gZW5kLnN1YnRyYWN0KHN0YXJ0Tm9ybSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInN0YXJ0Tm9ybTogIixzdGFydE5vcm0udG9TdHJpbmcoKSk7CisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJzdGFydDE6ICIsc3RhcnQxLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic3RhcnQyOiAiLHN0YXJ0Mi50b1N0cmluZygpKTsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImVuZDE6ICIsZW5kMS50b1N0cmluZygpKTsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImVuZDI6ICIsZW5kMi50b1N0cmluZygpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy9maWd1cmUgb3V0IHdoZXJlIHRoZSBhcnJvdyBoZWFkIHN0YXJ0cworICAgICAgICAgICAgdmFyIGhlYWRQbnQgPSBmdWxsVmVjdC5jbG9uZSgpOworICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiaGVhZFBudCAxOiAiLGhlYWRQbnQudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJoZWFkUG50Lmxlbmd0aCAxOiAiLGhlYWRQbnQubGVuZ3RoKTsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImFycm93U3R5bGUuaGVhZExlbmd0aCAxOiAiLGFycm93U3R5bGUuaGVhZExlbmd0aCk7CisgICAgICAgICAgICBoZWFkUG50Lm5vcm1hbGl6ZShoZWFkUG50Lmxlbmd0aC1hcnJvd1N0eWxlLmhlYWRMZW5ndGgpOworICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiaGVhZFBudCAyOiAiLGhlYWRQbnQudG9TdHJpbmcoKSk7CisgICAgICAgICAgICBoZWFkUG50ID0gaGVhZFBudC5hZGQoc3RhcnQpOworICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiaGVhZFBudCAzOiAiLGhlYWRQbnQudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vY2FsY3VsYXRlIHRoZSBhcnJvd2hlYWQgY29ybmVycworICAgICAgICAgICAgdmFyIGhlYWRQbnROb3JtID0gc3RhcnROb3JtLmNsb25lKCk7CisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJoZWFkUG50Tm9ybSBeXjogIixoZWFkUG50Tm9ybS50b1N0cmluZygpKTsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImhhbGZXaWR0aCBeXjogIixoYWxmV2lkdGgpOworICAgICAgICAgICAgaGVhZFBudE5vcm0ubm9ybWFsaXplKGhhbGZXaWR0aCk7CisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJoZWFkUG50Tm9ybTogIixoZWFkUG50Tm9ybS50b1N0cmluZygpKTsKKyAgICAgICAgICAgIHZhciBlZGdlMSA9IGhlYWRQbnQuYWRkKGhlYWRQbnROb3JtKTsKKyAgICAgICAgICAgIHZhciBlZGdlMiA9IGhlYWRQbnQuc3VidHJhY3QoaGVhZFBudE5vcm0pOworICAgICAgICAgICAgCisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJlZGdlMTogIixlZGdlMS50b1N0cmluZygpKTsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImVkZ2UyOiAiLGVkZ2UyLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvL0ZpZ3VyZSBvdXQgd2hlcmUgdGhlIGFycm93IGNvbm5lY3RzIHRoZSB0aGUgc2hhZnQsIHRoZW4gY2FsYyB0aGUgaW50ZXJzZWN0aW9ucworICAgICAgICAgICAgdmFyIHNoYWZ0Q2VudGVyID0gZmxhc2guZ2VvbS5Qb2ludC5pbnRlcnBvbGF0ZShlbmQsaGVhZFBudCxhcnJvd1N0eWxlLnNoYWZ0UG9zaXRpb24pOworICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZW5kOiAiLGVuZC50b1N0cmluZygpKTsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImhlYWRQbnQiLGhlYWRQbnQudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJhcnJvd1N0eWxlLnNoYWZ0UG9zaXRpb246ICIsYXJyb3dTdHlsZS5zaGFmdFBvc2l0aW9uKTsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInNoYWZ0Q2VudGVyIixzaGFmdENlbnRlci50b1N0cmluZygpKTsKKyAgICAgICAgICAgIHZhciBpbnRlcjEgPSB0aGlzLmdldExpbmVJbnRlcnNlY3Rpb24oc3RhcnQxLGVuZDEsc2hhZnRDZW50ZXIsZWRnZTEpOworICAgICAgICAgICAgdmFyIGludGVyMiA9IHRoaXMuZ2V0TGluZUludGVyc2VjdGlvbihzdGFydDIsZW5kMixzaGFmdENlbnRlcixlZGdlMik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImludGVyMTogIixpbnRlcjEudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJpbnRlcjI6ICIsaW50ZXIyLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvL0ZpZ3VyZSBvdXQgdGhlIGNvbnRyb2wgcG9pbnRzCisgICAgICAgICAgICB2YXIgZWRnZUNlbnRlciA9IGZsYXNoLmdlb20uUG9pbnQuaW50ZXJwb2xhdGUoZW5kLGhlYWRQbnQsYXJyb3dTdHlsZS5lZGdlQ29udHJvbFBvc2l0aW9uKTsKKyAgICAgICAgICAgIHZhciBlZGdlTm9ybSA9IHN0YXJ0Tm9ybS5jbG9uZSgpOworICAgICAgICAgICAgZWRnZU5vcm0ubm9ybWFsaXplKGhhbGZXaWR0aCphcnJvd1N0eWxlLmVkZ2VDb250cm9sU2l6ZSk7CisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJoYWxmV2lkdGgqYXJyb3dTdHlsZS5lZGdlQ29udHJvbFNpemU6ICIrKGhhbGZXaWR0aCphcnJvd1N0eWxlLmVkZ2VDb250cm9sU2l6ZSkpOworICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZWRnZU5vcm06ICIrZWRnZU5vcm0udG9TdHJpbmcoKSk7CisgICAgICAgICAgICB2YXIgZWRnZUNudHJsMSA9IGVkZ2VDZW50ZXIuYWRkKGVkZ2VOb3JtKTsKKyAgICAgICAgICAgIHZhciBlZGdlQ250cmwyID0gZWRnZUNlbnRlci5zdWJ0cmFjdChlZGdlTm9ybSk7CisKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImVkZ2VDbnRybDE6ICIsZWRnZUNudHJsMS50b1N0cmluZygpKTsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImVkZ2VDbnRybDI6ICIsZWRnZUNudHJsMi50b1N0cmluZygpKTsKKworICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgibW92ZVRvOiAiLHN0YXJ0MS54LHN0YXJ0MS55KTsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImxpbmVUbyIsaW50ZXIxLngsaW50ZXIxLnkpOworICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgibGluZVRvIixlZGdlMS54LGVkZ2UxLnkpOworICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgicXVhZHJhdGljQ3VydmVUbyIsZWRnZUNudHJsMS54LGVkZ2VDbnRybDEueSxlbmQueCxlbmQueSk7CisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJxdWFkcmF0aWNDdXJ2ZVRvIixlZGdlQ250cmwyLngsZWRnZUNudHJsMi55LGVkZ2UyLngsZWRnZTIueSk7CisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJsaW5lVG8iLGludGVyMi54LGludGVyMi55KTsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImxpbmVUbyIsc3RhcnQyLngsc3RhcnQyLnkpOworICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgibGluZVRvIixzdGFydDEueCxzdGFydDEueSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGdyYXBoaWNzLm1vdmVUbyhzdGFydDEueCxzdGFydDEueSk7CisgICAgICAgICAgICBncmFwaGljcy5saW5lVG8oaW50ZXIxLngsaW50ZXIxLnkpOworICAgICAgICAgICAgZ3JhcGhpY3MubGluZVRvKGVkZ2UxLngsZWRnZTEueSk7CisgICAgICAgICAgICBncmFwaGljcy5xdWFkcmF0aWNDdXJ2ZVRvKGVkZ2VDbnRybDEueCxlZGdlQ250cmwxLnksZW5kLngsZW5kLnkpOworICAgICAgICAgICAgZ3JhcGhpY3MucXVhZHJhdGljQ3VydmVUbyhlZGdlQ250cmwyLngsZWRnZUNudHJsMi55LGVkZ2UyLngsZWRnZTIueSk7CisgICAgICAgICAgICBncmFwaGljcy5saW5lVG8oaW50ZXIyLngsaW50ZXIyLnkpOworICAgICAgICAgICAgZ3JhcGhpY3MubGluZVRvKHN0YXJ0Mi54LHN0YXJ0Mi55KTsKKyAgICAgICAgICAgIGdyYXBoaWNzLmxpbmVUbyhzdGFydDEueCxzdGFydDEueSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRkcmF3YXJyb3dsaW5lc3Ryb2tlRGlzIT0tMSl7CisgICAgICAgICAgICAgICAgZ3JhcGhpY3Muc3Ryb2tlU3R5bGUgPSB0aGlzLmN1cnJlbnRkcmF3YXJyb3dsaW5lc3Ryb2tlOworICAgICAgICAgICAgICAgIGdyYXBoaWNzLnN0cm9rZSgpOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAodGhpcy5jdXJyZW50ZHJhd2Fycm93bGluZXN0cm9rZUZpbGxEaXMhPS0xKXsKKyAgICAgICAgICAgICAgICBncmFwaGljcy5maWxsU3R5bGUgPSB0aGlzLmN1cnJlbnRkcmF3YXJyb3dsaW5lc3Ryb2tlRmlsbDsKKyAgICAgICAgICAgICAgICBncmFwaGljcy5maWxsKCk7CisgICAgICAgICAgICB9CisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iZ2V0TGluZUludGVyc2VjdGlvbiIgYXJncz0iYTEsYTIsYjEsYjIiPgorICAgICAgICA8IVtDREFUQVsgCisgICAgICAgIAorICAgICAgICAgICAgLy9jYWxjdWxhdGUgZGlyZWN0aW9uYWwgY29uc3RhbnRzCisgICAgICAgICAgICB2YXIgazEgPSAoYTIueS1hMS55KSAvIChhMi54LWExLngpOworICAgICAgICAgICAgdmFyIGsyID0gKGIyLnktYjEueSkgLyAoYjIueC1iMS54KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gaWYgdGhlIGRpcmVjdGlvbmFsIGNvbnN0YW50cyBhcmUgZXF1YWwsIHRoZSBsaW5lcyBhcmUgcGFyYWxsZWwsCisgICAgICAgICAgICAvLyBtZWFuaW5nIHRoZXJlIGlzIG5vIGludGVyc2VjdGlvbiBwb2ludC4KKyAgICAgICAgICAgIGlmKCBrMSA9PSBrMiApIHJldHVybiBudWxsOworICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgeCA9IDA7CisgICAgICAgICAgICB2YXIgeSA9IDA7CisgICAgICAgICAgICB2YXIgbTEgPSAwOworICAgICAgICAgICAgdmFyIG0yID0gMDsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiazEiLGsxKTsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImsyIixrMik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vIGFuIGluZmluaXRlIGRpcmVjdGlvbmFsIGNvbnN0YW50IG1lYW5zIHRoZSBsaW5lIGlzIHZlcnRpY2FsCisgICAgICAgICAgICBpZiggIWlzRmluaXRlKGsxKSApIHsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJrMSBeXiAwIik7CisgICAgICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiazIiLGsyLChiMi55LWIxLnkpKTsKKyAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJiMS5nZXRZKCk6ICIrYjEueSk7CisgICAgICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiYjIuZ2V0WSgpOiAiK2IyLnkpOworICAgICAgICAgICAgICAgIC8vIHNvIHRoZSBpbnRlcnNlY3Rpb24gbXVzdCBiZSBhdCB0aGUgeCBjb29yZGluYXRlIG9mIHRoZSBsaW5lCisgICAgICAgICAgICAgICAgeCA9IGExLng7CisgICAgICAgICAgICAgICAgbTIgPSBiMS55IC0gazIgKiBiMS54OworICAgICAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm0yIixtMik7CisgICAgICAgICAgICAgICAgeSA9IGsyICogeCArIG0yOworICAgICAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInkiLHkpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gc2FtZSBhcyBhYm92ZSBmb3IgbGluZSAyCisgICAgICAgICAgICB9IGVsc2UgaWYgKCAhaXNGaW5pdGUoazIpICkgeworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImsyIF4gMCIpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG0xID0gYTEueSAtIGsxICogYTEueDsKKyAgICAgICAgICAgICAgICB4ID0gYjEueDsKKyAgICAgICAgICAgICAgICB5ID0gazEgKiB4ICsgbTE7CisKKyAgICAgICAgICAgIC8vIGlmIG5laXRoZXIgb2YgdGhlIGxpbmVzIGFyZSB2ZXJ0aWNhbAorICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJuZWl0aGVyIik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBtMSA9IGExLnkgLSBrMSAqIGExLng7CisgICAgICAgICAgICAgICAgbTIgPSBiMS55IC0gazIgKiBiMS54OyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgeCA9IChtMS1tMikgLyAoazItazEpOworICAgICAgICAgICAgICAgIHkgPSBrMSAqIHggKyBtMTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgcmV0dXJuIG5ldyBmbGFzaC5nZW9tLlBvaW50KHgseSk7CisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPiAgICAKKyAgICAKKyAgICAgCisgICAgCisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJkcmF3YXJyb3dsaW5lcmVnaXN0ZXJGaW5hbCI+CisgICAgICAgIHZhciBhY3Rpb25PYmplY3QgPSBuZXcgQXJyYXkoKTsKKyAgICAgICAgYWN0aW9uT2JqZWN0WzBdID0gJ2RyYXdhcnJvdyc7CisgICAgICAgIGFjdGlvbk9iamVjdFsxXSA9IGN1cnJlbnRsYXllci5maWxsc3R5bGU7CisgICAgICAgIGFjdGlvbk9iamVjdFsyXSA9IGN1cnJlbnRsYXllci5saW5lV2lkdGg7CisgICAgICAgIGFjdGlvbk9iamVjdFszXSA9IGN1cnJlbnRsYXllci5zdHJva2VTdHlsZTsKKyAgICAgICAgYWN0aW9uT2JqZWN0WzRdID0gdGhpcy5zdGFydHg7ICAKKyAgICAgICAgYWN0aW9uT2JqZWN0WzVdID0gdGhpcy5zdGFydHk7ICAKKyAgICAgICAgYWN0aW9uT2JqZWN0WzZdID0gdGhpcy5lbmR4OyAgICAKKyAgICAgICAgYWN0aW9uT2JqZWN0WzddID0gdGhpcy5lbmR5OworICAgICAgICBhY3Rpb25PYmplY3RbOF0gPSB0aGlzLmN1cnJlbnRkcmF3YXJyb3dPcGFjaXR5OworICAgICAgICBhY3Rpb25PYmplY3RbOV0gPSB0aGlzLmNvdW50ZXI7ICAgCisgICAgICAgIGFjdGlvbk9iamVjdFsxMF0gPSBjdXJyZW50bGF5ZXIueDsKKyAgICAgICAgYWN0aW9uT2JqZWN0WzExXSA9IGN1cnJlbnRsYXllci55OworICAgICAgICBhY3Rpb25PYmplY3RbMTJdID0gY3VycmVudGxheWVyLndpZHRoOworICAgICAgICBhY3Rpb25PYmplY3RbMTNdID0gY3VycmVudGxheWVyLmhlaWdodDsgIAorICAgICAgICBhY3Rpb25PYmplY3RbMTRdID0gdGhpcy5jdXJyZW50bGF5ZXIubmFtZTsKKyAgICAgICAgdGhpcy5iYXNlYWN0aW9ub2JqZWN0TGlzdC5wdXNoKGFjdGlvbk9iamVjdCk7ICAgICAgIAorICAgICAgICB0aGlzLm9uc2hhcmVkTWVzc2FnZSgnZHJhdycsYWN0aW9uT2JqZWN0KTsKKyAgICA8L21ldGhvZD4gICAgICAgCisgICAgCisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJkcmF3YXJyb3dsaW5lYWN0aW9uSGlzdG9yeSIgYXJncz0ibGFzdEFjdGlvbk9iamVjdCxwYXJlbnRWaWV3Ij4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAvL0RlYnVnLndyaXRlKCIjIyBsaW5lYWN0aW9uSGlzdG9yeSIscGFyZW50VmlldywiIDIgIyMgTkVXIHgseSAiLGxhc3RBY3Rpb25PYmplY3RbbGFzdEFjdGlvbk9iamVjdC5sZW5ndGgtNV0sbGFzdEFjdGlvbk9iamVjdFtsYXN0QWN0aW9uT2JqZWN0Lmxlbmd0aC00XSwiIHdpZHRoLGhlaWdodDogIixsYXN0QWN0aW9uT2JqZWN0W2xhc3RBY3Rpb25PYmplY3QubGVuZ3RoLTNdLGxhc3RBY3Rpb25PYmplY3RbbGFzdEFjdGlvbk9iamVjdC5sZW5ndGgtMl0pOworICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLmN1cnJlbnRsYXllciA9IG5ldyBsei5kcmF3Vmlld05ldyhwYXJlbnRWaWV3LHsKKyAgICAgICAgICAgICAgICBuYW1lOmxhc3RBY3Rpb25PYmplY3RbbGFzdEFjdGlvbk9iamVjdC5sZW5ndGgtMV0sCisgICAgICAgICAgICAgICAgeDpsYXN0QWN0aW9uT2JqZWN0W2xhc3RBY3Rpb25PYmplY3QubGVuZ3RoLTVdLAorICAgICAgICAgICAgICAgIHk6bGFzdEFjdGlvbk9iamVjdFtsYXN0QWN0aW9uT2JqZWN0Lmxlbmd0aC00XSwKKyAgICAgICAgICAgICAgICB3aWR0aDpsYXN0QWN0aW9uT2JqZWN0W2xhc3RBY3Rpb25PYmplY3QubGVuZ3RoLTNdLAorICAgICAgICAgICAgICAgIGhlaWdodDpsYXN0QWN0aW9uT2JqZWN0W2xhc3RBY3Rpb25PYmplY3QubGVuZ3RoLTJdLAorICAgICAgICAgICAgICAgIG9wYWNpdHk6bGFzdEFjdGlvbk9iamVjdFs4XX0pOworICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgdCA9IG5ldyBsei5kcmF3QXJyb3dXaGl0ZUJvYXJkKHRoaXMuY3VycmVudGxheWVyLHt4OjAseTowfSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vdC5zZXRUaW50KGxhc3RBY3Rpb25PYmplY3RbM10sNjApOworICAgICAgICAgICAgdC5zZXRDb2xvcihsYXN0QWN0aW9uT2JqZWN0WzNdKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIHR4ID0gbGFzdEFjdGlvbk9iamVjdFs2XS1sYXN0QWN0aW9uT2JqZWN0WzRdOworICAgICAgICAgICAgdmFyIHR5ID0gbGFzdEFjdGlvbk9iamVjdFs3XS1sYXN0QWN0aW9uT2JqZWN0WzVdOworICAgIAorICAgICAgICAgICAgdmFyIGdlZ2Vua2F0aGV0ZSA9IE1hdGguYWJzKHR5KTsKKyAgICAgICAgICAgIHZhciBhbmthdGhldGUgPSBNYXRoLmFicyh0eCk7IAorICAgICAgICAgICAgdmFyIGh5cG90aGVudXNlID0gTWF0aC5zcXJ0KChhbmthdGhldGUqYW5rYXRoZXRlKSsoZ2VnZW5rYXRoZXRlKmdlZ2Vua2F0aGV0ZSkpOworICAgICAgICAgICAgdmFyIHNpbkFscGhhID0gKGdlZ2Vua2F0aGV0ZS9oeXBvdGhlbnVzZSk7CisgICAgICAgICAgICB2YXIgYWxwaGEgPSBNYXRoLmFzaW4oc2luQWxwaGEpOworICAgICAgICAgICAgdmFyIGFscGhhID0gYWxwaGEvKE1hdGguUEkvMTgwKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciBuZXd4ID0gMDsKKyAgICAgICAgICAgIHZhciBuZXd5ID0gMDsKKyAgICAgICAgICAgIGlmICh0eD49MCAmJiB0eT49MCl7ICAgIAorICAgICAgICAgICAgICAgIHQuc2V0QXR0cmlidXRlKCdyb3RhdGlvbicsKGFscGhhLTQ1KSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHR4PDAgJiYgdHk+PTApeworICAgICAgICAgICAgICAgIG5ld3ggPSBsYXN0QWN0aW9uT2JqZWN0W2xhc3RBY3Rpb25PYmplY3QubGVuZ3RoLTNdOworICAgICAgICAgICAgICAgIHQuc2V0QXR0cmlidXRlKCdyb3RhdGlvbicsKDQ1KzkwLWFscGhhKSk7CisgICAgICAgICAgICB9IGVsc2UgaWYgKHR4PDAgJiYgdHk8MCl7CisgICAgICAgICAgICAgICAgbmV3eSA9IGxhc3RBY3Rpb25PYmplY3RbbGFzdEFjdGlvbk9iamVjdC5sZW5ndGgtMl07CisgICAgICAgICAgICAgICAgbmV3eCA9IGxhc3RBY3Rpb25PYmplY3RbbGFzdEFjdGlvbk9iamVjdC5sZW5ndGgtM107CisgICAgICAgICAgICAgICAgdC5zZXRBdHRyaWJ1dGUoJ3JvdGF0aW9uJywoYWxwaGErNDUrOTApKTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAodHg+MCAmJiB0eTw9MCl7CisgICAgICAgICAgICAgICAgbmV3eSA9IGxhc3RBY3Rpb25PYmplY3RbbGFzdEFjdGlvbk9iamVjdC5sZW5ndGgtMl07CisgICAgICAgICAgICAgICAgdC5zZXRBdHRyaWJ1dGUoJ3JvdGF0aW9uJywoNDUtYWxwaGEtOTApKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgdC5zZXRBdHRyaWJ1dGUoJ3gnLG5ld3gpOworICAgICAgICAgICAgdC5zZXRBdHRyaWJ1dGUoJ3knLG5ld3kpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvL1NjYWxpbmcKKyAgICAgICAgICAgIHZhciBiYXNpY0xlbmd0aCA9IE1hdGguc3FydCgodC53aWR0aCp0LndpZHRoKSsodC53aWR0aCp0LndpZHRoKSk7CisgICAgICAgICAgICB0LmdldERpc3BsYXlPYmplY3QoKS5feHNjYWxlID0gKGh5cG90aGVudXNlL2Jhc2ljTGVuZ3RoKSoxMDA7CisgICAgICAgICAgICB0LmdldERpc3BsYXlPYmplY3QoKS5feXNjYWxlID0gKGh5cG90aGVudXNlL2Jhc2ljTGVuZ3RoKSoxMDA7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuY3VycmVudGxheWVyLmZpbGxzdHlsZSA9IGxhc3RBY3Rpb25PYmplY3RbMV07CisgICAgICAgICAgICB0aGlzLmN1cnJlbnRsYXllci5saW5lV2lkdGggPSBsYXN0QWN0aW9uT2JqZWN0WzJdOworICAgICAgICAgICAgdGhpcy5jdXJyZW50bGF5ZXIuc3Ryb2tlU3R5bGUgPSBsYXN0QWN0aW9uT2JqZWN0WzNdOworCisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorICAgIAorICAgIAorICAgIAorICAgIAorICAgIAorICAgIAorICAgIDwhLS0KKyAgICAgICAgQGtleXdvcmRzIGRlcHJlY2F0ZWQKKyAgICAgLS0+CisgICAgPG1ldGhvZCBuYW1lPSJfc3RhcnREcmF3YXJyb3dsaW5lIiBhcmdzPSJvaWRfbmFtZSI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICBpZiAob2lkX25hbWUgPT0gbnVsbCkgeworICAgICAgICAgICAgb2lkX25hbWUgPSAnZHJhd2Fycm93Jyt0aGlzLmdldENvdW50ZXIoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdGhpcy5jdXJyZW50bGF5ZXIgPSBuZXcgbHouZHJhd1ZpZXdOZXcodGhpcyx7CisgICAgICAgICAgICBuYW1lOm9pZF9uYW1lLHdpZHRoOnRoaXMud2lkdGgsaGVpZ2h0OnRoaXMuaGVpZ2h0LAorICAgICAgICAgICAgb3BhY2l0eTp0aGlzLmN1cnJlbnRkcmF3YXJyb3dPcGFjaXR5fSk7CisgICAgICAgICAgICAKKyAgICAgICAgdGhpcy5kcmF3bGluZU9uT2JqZWN0KHRoaXMuY3VycmVudGxheWVyLC0xLC0xLDAsMCk7CisgICAgICAgIHRoaXMuZHJhd2xpbmVPbk9iamVjdCh0aGlzLmN1cnJlbnRsYXllcix0aGlzLndpZHRoLHRoaXMuaGVpZ2h0LHRoaXMud2lkdGgrMSx0aGlzLmhlaWdodCsxKTsKKyAgICAgICAgCisgICAgICAgIC8vQWRkIFJlc291cmNlCisgICAgICAgIHZhciB0ID0gbmV3IGx6LmRyYXdBcnJvd1doaXRlQm9hcmQodGhpcy5jdXJyZW50bGF5ZXIse3g6dGhpcy5zdGFydHgseTp0aGlzLnN0YXJ0eX0pOworICAgICAgICAKKyAgICAgICAgLy9Db2xvcgorICAgICAgICAvL3Quc2V0VGludCh0aGlzLmN1cnJlbnRkcmF3YXJyb3dsaW5lc3Ryb2tlLDYwKTsKKyAgICAgICAgdC5zZXRDb2xvcih0aGlzLmN1cnJlbnRkcmF3YXJyb3dsaW5lc3Ryb2tlKTsKKyAgICAgICAgCisgICAgICAgIHZhciB0eCA9IHRoaXMuY3VycmVudGxheWVyLmdldE1vdXNlKCd4JyktdGhpcy5zdGFydHg7CisgICAgICAgIHZhciB0eSA9IHRoaXMuY3VycmVudGxheWVyLmdldE1vdXNlKCd5JyktdGhpcy5zdGFydHk7CisKKyAgICAgICAgdmFyIGdlZ2Vua2F0aGV0ZSA9IE1hdGguYWJzKHR5KTsKKyAgICAgICAgdmFyIGFua2F0aGV0ZSA9IE1hdGguYWJzKHR4KTsgCisgICAgICAgIHZhciBoeXBvdGhlbnVzZSA9IE1hdGguc3FydCgoYW5rYXRoZXRlKmFua2F0aGV0ZSkrKGdlZ2Vua2F0aGV0ZSpnZWdlbmthdGhldGUpKTsKKyAgICAgICAgdmFyIHNpbkFscGhhID0gKGdlZ2Vua2F0aGV0ZS9oeXBvdGhlbnVzZSk7CisgICAgICAgIHZhciBhbHBoYSA9IE1hdGguYXNpbihzaW5BbHBoYSk7CisgICAgICAgIGFscGhhID0gYWxwaGEvKE1hdGguUEkvMTgwKTsKKyAgICAgICAgICAgIAorICAgICAgICBpZiAodHg+PTAgJiYgdHk+PTApeyAgICAKKyAgICAgICAgICAgIHQuc2V0QXR0cmlidXRlKCdyb3RhdGlvbicsKGFscGhhLTQ1KSk7CisgICAgICAgIH0gZWxzZSBpZiAodHg8MCAmJiB0eT49MCl7CisgICAgICAgICAgICB0LnNldEF0dHJpYnV0ZSgncm90YXRpb24nLCg0NSs5MC1hbHBoYSkpOworICAgICAgICB9IGVsc2UgaWYgKHR4PDAgJiYgdHk8MCl7CisgICAgICAgICAgICB0LnNldEF0dHJpYnV0ZSgncm90YXRpb24nLChhbHBoYSs0NSs5MCkpOworICAgICAgICB9IGVsc2UgaWYgKHR4PjAgJiYgdHk8PTApeworICAgICAgICAgICAgdC5zZXRBdHRyaWJ1dGUoJ3JvdGF0aW9uJywoNDUtYWxwaGEtOTApKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgLy9TY2FsaW5nCisgICAgICAgIHZhciBiYXNpY0xlbmd0aCA9IE1hdGguc3FydCgodC53aWR0aCp0LndpZHRoKSsodC53aWR0aCp0LndpZHRoKSk7CisgICAgICAgIHQuZ2V0RGlzcGxheU9iamVjdCgpLl94c2NhbGUgPSAoaHlwb3RoZW51c2UvYmFzaWNMZW5ndGgpKjEwMDsKKyAgICAgICAgdC5nZXREaXNwbGF5T2JqZWN0KCkuX3lzY2FsZSA9IChoeXBvdGhlbnVzZS9iYXNpY0xlbmd0aCkqMTAwOworICAgICAgICAKKworICAgICAgICAvL1NldCBwcmV2aW91cyB0byBudWxsCisgICAgICAgIHRoaXMucHJldnggPSBudWxsOworICAgICAgICB0aGlzLnByZXZ5ID0gbnVsbDsgIAorICAgICAgICAKKyAgICAgICAgY3VycmVudGxheWVyLnN0cm9rZVN0eWxlID0gdGhpcy5jdXJyZW50ZHJhd2Fycm93bGluZXN0cm9rZTsKKyAgICAgICAgY3VycmVudGxheWVyLmxpbmVXaWR0aCA9IHRoaXMuY3VycmVudGRyYXdhcnJvd2xpbmVsaW5lV2lkdGg7CisgICAgICAgIGN1cnJlbnRsYXllci5maWxsc3R5bGUgPSAnMHgwMDAwMDAnOworICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4gCisgICAgCisgICAgPCEtLQorICAgICAgICBAa2V5d29yZHMgZGVwcmVjYXRlZAorICAgICAtLT4KKyAgICA8bWV0aG9kIG5hbWU9Il9fc3RhcnREcmF3YXJyb3dsaW5lIiBhcmdzPSJvaWRfbmFtZSI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICBpZiAob2lkX25hbWUgPT0gbnVsbCkgeworICAgICAgICAgICAgb2lkX25hbWUgPSAnZHJhd2Fycm93Jyt0aGlzLmdldENvdW50ZXIoKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgdGhpcy5jdXJyZW50bGF5ZXIgPSBuZXcgbHouZHJhd1ZpZXdOZXcodGhpcyx7CisgICAgICAgICAgICBuYW1lOm9pZF9uYW1lLHdpZHRoOnRoaXMud2lkdGgrMixoZWlnaHQ6dGhpcy5oZWlnaHQrMiwKKyAgICAgICAgICAgIG9wYWNpdHk6dGhpcy5jdXJyZW50ZHJhd2Fycm93T3BhY2l0eX0pOworICAgICAgICAgICAgCisgICAgICAgIHZhciBkaXN0YW5jZV94ID0gTWF0aC5hYnModGhpcy5zdGFydHggLSB0aGlzLmVuZHgpOworICAgICAgICB2YXIgZGlzdGFuY2VfeSA9IE1hdGguYWJzKHRoaXMuc3RhcnR5IC0gdGhpcy5lbmR5KTsKKyAgICAgICAgCisgICAgICAgIHZhciBwb2ludF9kaXN0YW5jZV94ID0gTWF0aC5yb3VuZCggZGlzdGFuY2VfeC8xMCApOworICAgICAgICB2YXIgcG9pbnRfZGlzdGFuY2VfeSA9IE1hdGgucm91bmQoIGRpc3RhbmNlX3kvMTAgKTsKKyAgICAgICAgCisgICAgICAgIGlmICh0aGlzLnN0YXJ0eCA8PSB0aGlzLmVuZHggJiYgdGhpcy5zdGFydHkgPj0gdGhpcy5lbmR5KSB7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGN1cnJlbnRsYXllci5saW5lV2lkdGggPSB0aGlzLmN1cnJlbnRyZWN0YW5nbGVpbmVXaWR0aDsKKyAgICAgICAgICAgIGN1cnJlbnRsYXllci5iZWdpblBhdGgoKTsKKyAgICAgICAgICAgIGN1cnJlbnRsYXllci5tb3ZlVG8odGhpcy5zdGFydHgsdGhpcy5zdGFydHkpOyAvLzEKKyAgICAgICAgICAgIGN1cnJlbnRsYXllci5saW5lVG8odGhpcy5zdGFydHgtcG9pbnRfZGlzdGFuY2VfeCx0aGlzLnN0YXJ0eS1wb2ludF9kaXN0YW5jZV95KTsgLy8yCisgICAgICAgICAgICBjdXJyZW50bGF5ZXIubGluZVRvKHRoaXMuZW5keC1wb2ludF9kaXN0YW5jZV94KjMsdGhpcy5lbmR5K3BvaW50X2Rpc3RhbmNlX3kpOyAvLzMKKyAgICAgICAgICAgIGN1cnJlbnRsYXllci5saW5lVG8odGhpcy5lbmR4LXBvaW50X2Rpc3RhbmNlX3gqNCx0aGlzLmVuZHkpOyAvLzQKKyAgICAgICAgICAgIGN1cnJlbnRsYXllci5saW5lVG8odGhpcy5lbmR4LHRoaXMuZW5keSk7IC8vNQorICAgICAgICAgICAgY3VycmVudGxheWVyLmxpbmVUbyh0aGlzLmVuZHgsdGhpcy5lbmR5K3BvaW50X2Rpc3RhbmNlX3kqNCk7IC8vNgorICAgICAgICAgICAgY3VycmVudGxheWVyLmxpbmVUbyh0aGlzLmVuZHgtcG9pbnRfZGlzdGFuY2VfeCx0aGlzLmVuZHkrcG9pbnRfZGlzdGFuY2VfeSozKTsgLy83CisgICAgICAgICAgICBjdXJyZW50bGF5ZXIubGluZVRvKHRoaXMuc3RhcnR4K3BvaW50X2Rpc3RhbmNlX3gsdGhpcy5zdGFydHkrcG9pbnRfZGlzdGFuY2VfeSk7IC8vOAorICAgICAgICAgICAgY3VycmVudGxheWVyLmxpbmVUbyh0aGlzLnN0YXJ0eCx0aGlzLnN0YXJ0eSk7IC8vOQorICAgICAgICAgICAgdGhpcy5jbG9zZVBhdGgoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgY3VycmVudGxheWVyLnN0cm9rZVN0eWxlID0gMHgwMDAwMDA7CisgICAgICAgICAgICBjdXJyZW50bGF5ZXIuc3Ryb2tlKCk7CisKKyAgICAgICAgICAgIGN1cnJlbnRsYXllci5maWxsU3R5bGUgPSB0aGlzLmN1cnJlbnRkcmF3YXJyb3dsaW5lbGluZVdpZHRoOworICAgICAgICAgICAgY3VycmVudGxheWVyLmZpbGwoKTsKKyAgICAgICAgICAgIAorICAgICAgICB9CisgICAgICAgIAorICAgICAgICBdXT4KKyAgICA8L21ldGhvZD4KKyAgICA8IS0tCisgICAgICAgIEBrZXl3b3JkcyBkZXByZWNhdGVkCisgICAgIC0tPgorICAgIDxtZXRob2QgbmFtZT0iX2VuZERyYXdhcnJvd2xpbmUiPgorICAgICAgICAvL0RlYnVnLndyaXRlKCJlbmREcmF3YXJyb3dsaW5lIix0aGlzLnN0YXJ0eCx0aGlzLnN0YXJ0eSx0aGlzLmVuZHgsdGhpcy5lbmR5KTsKKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgIHZhciB0ZW1wTmFtZSA9IHRoaXMuY3VycmVudGxheWVyLm5hbWU7CisgICAgICAgIC8vRGVidWcud3JpdGUoInRlbXBOYW1lOiAiLHRlbXBOYW1lKTsKKyAgICAgICAgdGhpcy5jdXJyZW50bGF5ZXIuZGVzdHJveSgpOworICAgICAgICAKKyAgICAgICAgLy9HZXRCb3VuZHMgb2YgdGhhdCBPYmplY3QKKyAgICAgICAgdmFyIG1pbnggPSB0aGlzLndpZHRoKzI7CisgICAgICAgIHZhciBtaW55ID0gdGhpcy5oZWlnaHQrMjsKKyAgICAgICAgdmFyIG1heHggPSAtMjsKKyAgICAgICAgdmFyIG1heHkgPSAtMjsKKworICAgICAgICBpZiAodGhpcy5zdGFydHg8bWlueCkgbWlueD10aGlzLnN0YXJ0eDsKKyAgICAgICAgaWYgKHRoaXMuZW5keDxtaW54KSBtaW54PXRoaXMuZW5keDsKKyAgICAgICAgCisgICAgICAgIGlmICh0aGlzLnN0YXJ0eD5tYXh4KSBtYXh4PXRoaXMuc3RhcnR4OworICAgICAgICBpZiAodGhpcy5lbmR4Pm1heHgpIG1heHg9dGhpcy5lbmR4OworICAgICAgICAKKyAgICAgICAgaWYgKHRoaXMuc3RhcnR5PG1pbnkpIG1pbnk9dGhpcy5zdGFydHk7CisgICAgICAgIGlmICh0aGlzLmVuZHk8bWlueSkgbWlueT10aGlzLmVuZHk7CisgICAgICAgIAorICAgICAgICBpZiAodGhpcy5zdGFydHk+bWF4eSkgbWF4eT10aGlzLnN0YXJ0eTsKKyAgICAgICAgaWYgKHRoaXMuZW5keT5tYXh5KSBtYXh5PXRoaXMuZW5keTsKKyAgICAgICAgCisgICAgICAgIHZhciB3aWR0aCA9IG1heHgtbWlueDsKKyAgICAgICAgdmFyIGhlaWdodCA9IG1heHktbWlueTsKKyAgICAgICAgCisgICAgICAgIC8vRGVidWcud3JpdGUoIm1pbngsbWlueSx3aWR0aCxoZWlnaHQ6ICIsbWlueCxtaW55LHdpZHRoLGhlaWdodCk7CisKKyAgICAgICAgdGhpcy5jdXJyZW50bGF5ZXIgPSBuZXcgbHouZHJhd1ZpZXdOZXcodGhpcyx7CisgICAgICAgICAgICBuYW1lOnRlbXBOYW1lLHg6bWlueC0xLHk6bWlueS0xLHdpZHRoOndpZHRoLGhlaWdodDpoZWlnaHQsCisgICAgICAgICAgICBvcGFjaXR5OnRoaXMuY3VycmVudGRyYXdhcnJvd09wYWNpdHl9KTsKKyAgICAgICAgICAgIAorICAgICAgICB0aGlzLmN1cnJlbnRsYXllci5maWxsc3R5bGUgPSAnMHgwMDAwMDAnOworICAgICAgICB0aGlzLmN1cnJlbnRsYXllci5saW5lV2lkdGggPSB0aGlzLmN1cnJlbnRkcmF3YXJyb3dsaW5lbGluZVdpZHRoOworICAgICAgICB0aGlzLmN1cnJlbnRsYXllci5zdHJva2VTdHlsZSA9IHRoaXMuY3VycmVudGRyYXdhcnJvd2xpbmVzdHJva2U7CisgICAgICAgIAorICAgICAgICAvL0RlYnVnLndyaXRlKCJ0aGlzLmN1cnJlbnRsYXllcjogIix0aGlzLmN1cnJlbnRsYXllcik7CisKKyAgICAgICAgdmFyIHQgPSBuZXcgbHouZHJhd0Fycm93V2hpdGVCb2FyZCh0aGlzLmN1cnJlbnRsYXllcix7eDowLHk6MH0pOworCisgICAgICAgIC8vQ29sb3IKKyAgICAgICAgLy90LnNldFRpbnQodGhpcy5jdXJyZW50ZHJhd2Fycm93bGluZXN0cm9rZSw2MCk7CisgICAgICAgIHQuc2V0Q29sb3IodGhpcy5jdXJyZW50ZHJhd2Fycm93bGluZXN0cm9rZSk7CisgICAgICAgIAorICAgICAgICB2YXIgdHggPSB0aGlzLmVuZHgtdGhpcy5zdGFydHg7CisgICAgICAgIHZhciB0eSA9IHRoaXMuZW5keS10aGlzLnN0YXJ0eTsKKworICAgICAgICB2YXIgZ2VnZW5rYXRoZXRlID0gTWF0aC5hYnModHkpOworICAgICAgICB2YXIgYW5rYXRoZXRlID0gTWF0aC5hYnModHgpOyAKKyAgICAgICAgdmFyIGh5cG90aGVudXNlID0gTWF0aC5zcXJ0KChhbmthdGhldGUqYW5rYXRoZXRlKSsoZ2VnZW5rYXRoZXRlKmdlZ2Vua2F0aGV0ZSkpOworICAgICAgICB2YXIgc2luQWxwaGEgPSAoZ2VnZW5rYXRoZXRlL2h5cG90aGVudXNlKTsKKyAgICAgICAgdmFyIGFscGhhID0gTWF0aC5hc2luKHNpbkFscGhhKTsKKyAgICAgICAgYWxwaGEgPSBhbHBoYS8oTWF0aC5QSS8xODApOworICAgICAgICAgICAgCisgICAgICAgIHZhciBuZXd4ID0gMDsKKyAgICAgICAgdmFyIG5ld3kgPSAwOworICAgICAgICBpZiAodHg+PTAgJiYgdHk+PTApeyAgICAKKyAgICAgICAgICAgIHQuc2V0QXR0cmlidXRlKCdyb3RhdGlvbicsKGFscGhhLTQ1KSk7CisgICAgICAgIH0gZWxzZSBpZiAodHg8MCAmJiB0eT49MCl7CisgICAgICAgICAgICBuZXd4ID0gd2lkdGg7CisgICAgICAgICAgICB0LnNldEF0dHJpYnV0ZSgncm90YXRpb24nLCg0NSs5MC1hbHBoYSkpOworICAgICAgICB9IGVsc2UgaWYgKHR4PDAgJiYgdHk8MCl7CisgICAgICAgICAgICBuZXd5ID0gaGVpZ2h0OworICAgICAgICAgICAgbmV3eCA9IHdpZHRoOworICAgICAgICAgICAgdC5zZXRBdHRyaWJ1dGUoJ3JvdGF0aW9uJywoYWxwaGErNDUrOTApKTsKKyAgICAgICAgfSBlbHNlIGlmICh0eD4wICYmIHR5PD0wKXsKKyAgICAgICAgICAgIG5ld3kgPSBoZWlnaHQ7CisgICAgICAgICAgICB0LnNldEF0dHJpYnV0ZSgncm90YXRpb24nLCg0NS1hbHBoYS05MCkpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICB0LnNldEF0dHJpYnV0ZSgneCcsbmV3eCk7CisgICAgICAgIHQuc2V0QXR0cmlidXRlKCd5JyxuZXd5KTsKKyAgICAgICAgCisgICAgICAgIC8vU2NhbGluZworICAgICAgICB2YXIgYmFzaWNMZW5ndGggPSBNYXRoLnNxcnQoKHQud2lkdGgqdC53aWR0aCkrKHQud2lkdGgqdC53aWR0aCkpOworICAgICAgICB0LmdldERpc3BsYXlPYmplY3QoKS5feHNjYWxlID0gKGh5cG90aGVudXNlL2Jhc2ljTGVuZ3RoKSoxMDA7CisgICAgICAgIHQuZ2V0RGlzcGxheU9iamVjdCgpLl95c2NhbGUgPSAoaHlwb3RoZW51c2UvYmFzaWNMZW5ndGgpKjEwMDsKKyAgICAgICAgCisKKyAgICAgICAgLy9TZXQgcHJldmlvdXMgdG8gbnVsbAorICAgICAgICB0aGlzLnByZXZ4ID0gbnVsbDsKKyAgICAgICAgdGhpcy5wcmV2eSA9IG51bGw7ICAKKyAgICAgICAgCisgICAgICAgIC8vQWRkIExheWVyIHRvIGdsb2JhbCBMYXllciAgICAgCisgICAgICAgIHRoaXMubGF5ZXJzLnB1c2godGhpcy5jdXJyZW50bGF5ZXIpOyAgCisgICAgICAgIF1dPgorICAgICAgICB0aGlzLmRyYXdhcnJvd2xpbmVyZWdpc3RlckZpbmFsKCk7CisgICAgICAgIHRoaXMuY3VycmVudGxheWVyID0gbmV3IEx6VmlldygpOworICAgICAgICAvL0RlYnVnLndyaXRlKCJ0OiAiLHQpOworICAgIDwvbWV0aG9kPiAKKyAgICAKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL3Rlc3QvY29udGVudC9hdWRpb1Rlc3QubHp4IGIvV2ViQ29udGVudC9zcmMvdGVzdC9jb250ZW50L2F1ZGlvVGVzdC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTExNTgyYwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL3Rlc3QvY29udGVudC9hdWRpb1Rlc3QubHp4CkBAIC0wLDAgKzEsMTQwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorPCEtLQorCWV4bXBsZSBjbGFzcyBkZWZpbml0aW9uCisJCisJYXMgc29vbiBhcyB5b3Ugc2VlIHBvc3NpYmlsaXR5IHRyeSB0byBtYWtlIHVzYWdlIG9mIGNsYXNzZXMKKwkKKwlpbiBnZW5lcmFsOiAKKwl1c2FnZSBvZiBsYXlvdXQgaXMgbmljZSBidXQgaXQgbmVlZHMgbW9yZSB2aWV3cyBqdXN0IGZvciBsYXlvdXRpbmcuCisJaW4gYSBzaW1wbGUgc2NlbmFyaW8gdGhhdHMgb2theSwKKwlidXQgaW4gdGhlIG9wZW5tZWV0aW5ncyBhcHAgaXRzZWxmIG1vc3Qgb2YgdGhlIHZpZXdzIGFyZSBzZXQgKmFic29sdXRlKiBieSB4IGFuZCB5CisJY2F1c2UgdGhpcyByZWR1Y2VzIHRoZSB0b3RhbCBhbW91bnQgb2Ygdmlld3MKKwlpbnN0YW5jaW5nICg9bWFraW5nIHZpZXdzIGR5bmFtaWNhbGx5IGxpa2Ugd2UgZG8pIGlzIHRpbWUgY3JpdGljYWwgLi4gaWYgeW91IGNyZWF0ZSBvciBkZXN0cm95IHRvbyBtYW55CisJdmlld3MgYXQgb25lIHRpbWUgdGhlIGJyb3dzZXIgaGFuZ3MgYW5kIGNwdSB3aWxsIGJlIGF0IDEwMCUKKwlzbyBpbiB0aGUgb3Blbm1lZXRpbmdzIGFwcCB0cnkgdG8gdXNlIGFzIGxlc3Mgdmlld3MgYXMgcG9zc2libGUKKwl1c2UgYXQgbGVzcyBjb25zdHJhaW50cyBhcyBwb3NzaWJsZQorCXVzZSAkb25jZXsgLi4gfSBpbnN0ZWFkIG9mICR7IC4uIH0gb3IgdXNlIHNldHRlcnMgYW5kIGdldHRlcnMKKwlkb24ndCB1c2UgY2FudmFzLnNldEF0dHJpYnV0ZSgnbXl2YXInLCdmb28nKSBqdXN0IHVzZSBjYW52YXMubXl2YXI9J2ZvbycgCisJd2hlbmV2ZXIgaXQgaXMgbm90IG5lY2Vzc2FyeSAoaXQgd2lsbCB0aHJvdyBzb21lIAorCWV2ZW50cyB3aGljaCBhcmUgdXNlbGVzcyBpZiB5b3UgZG9uJ3QgaGF2ZSBhbnkgY29uc3RyYWludHMgcG9pbnRpbmcgdG8gJ215dmFyJyBhbmQgd2hpY2ggd2lsbCBjb3N0IAorCXBlcmZvcm1hbmNlKQorCQorCSAKKwkKKyAtLT4KKworCTwhLS0gZGVmaW5lIHJlc291cmNlcyBvbmNlIGF0IG9uZSBwbGFjZSBpbnN0ZWFkIG9mCisJCWxpbmtpbmcgd2l0aCB0aGUgcGF0aCBldmVyeSB0aW1lIHlvdSB3YW50IGl0CisJCS0tPgorPHJlc291cmNlIG5hbWU9Il9idG5fcGxheV9yc2MiIHNyYz0iLi4vcmVzb3VyY2VzL3BsYXkucG5nIiAvPgorPHJlc291cmNlIG5hbWU9Il9idG5fc3RvcF9yc2MiIHNyYz0iLi4vcmVzb3VyY2VzL3N0b3AucG5nIiAvPgorPHJlc291cmNlIG5hbWU9Il9idG5fdm9sdW1lX3JzYyIgc3JjPSIuLi9yZXNvdXJjZXMvbWl4X3ZvbHVtZS5wbmciIC8+Cis8cmVzb3VyY2UgbmFtZT0iX2J0bl9hdWRpb19zY3J1YnRyYWNrX3JzYyIgc3JjPSIuLi9yZXNvdXJjZXMvYXVkaW9fc2NydWJ0cmFjay5wbmciIC8+Cis8cmVzb3VyY2UgbmFtZT0iX2J0bl9hdWRpb19zY3J1YmJlcl9yc2MiIHNyYz0iLi4vcmVzb3VyY2VzL2F1ZGlvX3NjcnViYmVyLnBuZyIgLz4KKwkKKzxjbGFzcyBuYW1lPSJhdWRpb1Rlc3QiIGV4dGVuZHM9InZpZXciIHBsYXk9ImZhbHNlIiB5PSI0MCI+CisJCisJPCEtLSBwbGVhc2Ugd3JpdGUgbGF5b3V0IGRlZmluaXRpb24gYWx3YXlzIG9uIAorCQl0b3Agb3Igb24gYm90dG9tIG9mIHRoZSB2aWV3IGNvbnRlbnQKKwkJb3Igd3JpdGUgaXQgZGlyZWN0bHkgaW50byB0aGUgdmlldyBkZWZpbml0aW9uIC0tPgorCTxzaW1wbGVsYXlvdXQgYXhpcz0ieSIgc3BhY2luZz0iNSIvPgorCQorCSAgIDx2aWV3IGlkPSJhdWRpb3BsYXllciIgcGxheT0iZmFsc2UiIHk9IjQwIiByZXNvdXJjZT0iaHR0cDpyZXNvdXJjZXMvU3Rhcl9pbl90aGVfZWFzdF9zb2xmZWdlLm1wMyIgCisJCSAgIG9uaW5pdD0idGhpcy5zdG9wKCk7Ij4KKwkJICAgCisJCSAgIDwhLS0gZm9sbG93IGEgc3RydWN0dXJlIGJ5IGRlZmluaW5nIHZpZXcgY29udGVudHM6CisJCQkgICAxLikgZGVmaW5lIGF0dHJpYnV0ZXMKKwkJCSAgIDIuKSBkZWZpbmUgaGFuZGxlcnMgKGV2ZW50IGhhbmRsZXJzIG9uaW5pdCBmb3IgZXhhbXBsZSBpZiBub3QgYWxyZWFkeSBpbiB2aWV3IGRlZmluaXRpb24pCisJCQkgICAzLikgZGVmaW5lIG1ldGhvZHMKKwkJCSAgIDQuKSBkZWZpbmUgbGF5b3V0IChpZiBub3QgYWxyZWFkeSBpbiB2aWV3IGRlZmluaXRpb24pCisJCQkgICA1LikgZGVmaW5lIGNvbnRlbnQgCisJCQkgICAtLT4KKwkJICAgCisJCSAgIDwhLS0gY29tbWVudCBhYm91dCB0aGlzIGF0dHJpYnV0ZSBhbmQgZG9uJ3QgZm9yZ2V0IHR5cGUgZGVmaW5pdGlvbiBpbiBhdHRyaWJ1dGUnczoKKwkJCSAgIHRoaXMgYXR0cmlidXRlIGlzIHZvbHVtZS1sZXZlbCAtLT4KKwkJCTxhdHRyaWJ1dGUgbmFtZT0idm9sIiB2YWx1ZT0iMTAwIiB0eXBlPSJudW1iZXIiIC8+CisJCSAgIAorCQkgICAgPHNpbXBsZWxheW91dCBheGlzPSJ4IiBzcGFjaW5nPSIxMCIvPgorCQkgICAKKwkJCTx2aWV3PgorCQkJCTxzaW1wbGVsYXlvdXQgYXhpcz0ieCIgc3BhY2luZz0iLTEiLz4KKwkJCQk8YnV0dG9uIHdpZHRoPSI0MCIgb25jbGljaz0iYXVkaW9wbGF5ZXIuc3RvcCgpIj4KKwkJCQkJPHZpZXcgcmVzb3VyY2U9Il9idG5fc3RvcF9yc2MiIHk9IjYiIGFsaWduPSJjZW50ZXIiLz4KKwkJCQk8L2J1dHRvbj4KKwkJCQk8YnV0dG9uIHdpZHRoPSI0MCIgb25jbGljaz0iYXVkaW9wbGF5ZXIucGxheSgpIj4KKwkJCQkJPHZpZXcgcmVzb3VyY2U9Il9idG5fcGxheV9yc2MiIHk9IjUiIGFsaWduPSJjZW50ZXIiLz4KKwkJCQk8L2J1dHRvbj4KKwkJCTwvdmlldz4JIAorCQkgICAgICAgICAgCisJCQk8dmlldz4KKwkJCQk8c2ltcGxlbGF5b3V0IGF4aXM9IngiIHNwYWNpbmc9Ii0xIi8+CisJCQkJPGJ1dHRvbiB3aWR0aD0iNDAiIHRleHQ9Ii0iCisJCQkJCW9uY2xpY2s9ImF1ZGlvcGxheWVyLnNldFZvbHVtZSggYXVkaW9wbGF5ZXIuZ2V0Vm9sdW1lKCkgLTEwKSI+CisJCQkJCTx2aWV3IHJlc291cmNlPSJfYnRuX3ZvbHVtZV9yc2MiIHk9IjUiIGFsaWduPSJyaWdodCIvPgorCQkJCTwvYnV0dG9uPgorCQkJCTxidXR0b24gd2lkdGg9IjQwIiB0ZXh0PSIrIiAKKwkJCQkJb25jbGljaz0iYXVkaW9wbGF5ZXIuc2V0Vm9sdW1lKCBhdWRpb3BsYXllci5nZXRWb2x1bWUoKSArMTApIj4KKwkJCQkJPHZpZXcgcmVzb3VyY2U9Il9idG5fdm9sdW1lX3JzYyIgeT0iNSIgYWxpZ249InJpZ2h0Ii8+CisJCQkJPC9idXR0b24+CisJCQk8L3ZpZXc+CisJCQkJCSAgICAgICAgCisJCQkKKwkJCTx2aWV3IG5hbWU9ImJhY2tncm91bmQiIGJnY29sb3I9ImJsYWNrIiB3aWR0aD0iMjAyIiBoZWlnaHQ9IjE1IiAKKwkJCQkJeT0iNTAiIG9wdGlvbnM9Imlnbm9yZWxheW91dDsiPgorCQkJCTx2aWV3IG5hbWU9ImxvYWRiYXIiIHJlc291cmNlPSJfYnRuX2F1ZGlvX3NjcnVidHJhY2tfcnNjIiAKKwkJCQkJCXdpZHRoPSIke2F1ZGlvcGxheWVyLmxvYWRwZXJjICogMjAwfSI+CisJCQkJCTx2aWV3IG5hbWU9InBsYXliYXIiIHJlc291cmNlPSJfYnRuX2F1ZGlvX3NjcnViYmVyX3JzYyIgCisJCQkJCQkJeT0iMSIgeD0iJHtNYXRoLnJvdW5kKDE4MCAqIGF1ZGlvcGxheWVyLmZyYW1lL2F1ZGlvcGxheWVyLnRvdGFsZnJhbWVzKX0iLz4KKwkJCQk8L3ZpZXc+CisJCQk8L3ZpZXc+CisJCSAgIAorCQk8L3ZpZXc+CisJCQorCQk8IS0tCisJCQl0aGluayBhYm91dCBjb250cmFpbnRzIC4uLiBpZiB0aGV5IHJlYWxseSBuZWVkIHRvIGJlIHVwZGF0ZWQgYWx3YXlzCisJCQkkeyBjYW52YXMubXl2YXIgfSA9PiB2YWx1ZSB3aWxsIGJlIHVwZGF0ZWQgZXZlcnkgdGltZSAKKwkJCQkJCQkJbXl2YXIgY2hhbmdlcyBieSBjYW52YXMuc2V0QXR0cmlidXRlKCdteXZhcicsJ2ZvbycpCisJCQkJCQkJCW5vcm1hbGx5IHRoaXMgaXMgbm90IG5lZWRlZAorCQkJCQkJCQloaWdoIHBlcmZvcm1hbmNlL2NwdSB1c2FnZQorCQkJJG9uY2V7IGNhbnZhcy5teXZhciB9ID0+IHZhbHVlIHdpbGwgYmUgb25seSBzZXQgb25jZSAuLiBvbmluaXQgb2YgdGhpcyBhdHRyaWJ1dGUvdmlldworCQkJCQkJCQkJbG93ZXIgcGVyZm9tYW5jZS9jcHUgdXNhZ2UgCisJCQl0cnkgdG8gdXNlICRvbmNlIHdoZW5ldmVyIHBvc3NpYmxlCisJCQktLT4KKwkJPHRleHQgdGV4dD0iJG9uY2V7bWVzcy5saXN0ZW5fc291bmR9IiBtdWx0aWxpbmU9InRydWUiIHdpZHRoPSIke3RoaXMucGFyZW50LndpZHRoIC0gMjB9IiAvPgorCisJCTx2aWV3PgorCQkJCisJCQk8c2ltcGxlbGF5b3V0IGF4aXM9IngiIHNwYWNpbmc9IjEwIi8+CisJCQkKKwkJCTxidXR0b24gdGV4dD0iJG9uY2V7IG1lc3Mubm8gfSI+CQkJCQkgICAgICAgICAgICAgICAgCisJCQk8L2J1dHRvbj4KKwkJCTxidXR0b24gdGV4dD0iJG9uY2V7IG1lc3MueWVzIH0iPgkJCQkJICAgICAgICAgICAgICAgIAorCQkJPC9idXR0b24+CisJCQkKKwkJPC92aWV3PgorCQorCTxuZXh0QnV0dG9uIG5leHRUYWJwYW5lPSIkb25jZXsgdGhpcy5wYXJlbnQucGFyZW50LnBhcmVudC5taWNyb1RhYiB9IiB0ZXh0PSIkb25jZXttZXNzLm5leHR9IiAvPgorCQorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvdGVzdC9jb250ZW50L2xpYnJhcnkubHp4IGIvV2ViQ29udGVudC9zcmMvdGVzdC9jb250ZW50L2xpYnJhcnkubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ2ZjA4NDcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy90ZXN0L2NvbnRlbnQvbGlicmFyeS5sengKQEAgLTAsMCArMSwyNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKyAgICAKKyAgICA8aW5jbHVkZSBocmVmPSJhdWRpb1Rlc3QubHp4IiAvPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy90ZXN0L2h0bWwubHp4IGIvV2ViQ29udGVudC9zcmMvdGVzdC9odG1sLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNDE4ZmVmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvdGVzdC9odG1sLmx6eApAQCAtMCwwICsxLDYyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorCis8Y2FudmFzIGRlYnVnPSJ0cnVlIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmb250c2l6ZT0iMTQiIHRpdGxlPSJPcGVuTWVldGluZ3MgLSBDb21wdXRlciB0ZXN0aW5nIj4KKwkKKwk8ZGVidWcgZm9udHNpemU9IjE0IiBvbmluaXQ9IkRlYnVnLnNob3dJbnRlcm5hbFByb3BlcnRpZXMgPSB0cnVlIi8+CisKKyAgICAgICAgICAgICAgICA8ZWRpdHRleHQgbmFtZT0idXJsIiB3aWR0aD0iNDAwIj4gCisgICAgICAgICAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9ua2V5dXAiIGFyZ3M9ImtleSI+CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGtleSA9PSAyNykgfHwgKGtleSA9PSAxMykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5yZWFkU3RhcnQub25jbGljay5zZW5kRXZlbnQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAgICAgICAgIDwvZWRpdHRleHQ+CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgPGJ1dHRvbiBuYW1lPSJyZWFkU3RhcnQiIHdpZHRoPSIyMDAiIHg9IjQwMCIgdGV4dD0iTE9BRCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeT0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHVybCA9IHBhcmVudC51cmwuZ2V0VGV4dCgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgodXJsLmluZGV4T2YoImh0dHA6Ly8iKSA8IDApCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAodXJsLmluZGV4T2YoImh0dHBzOi8vIikgPCAwKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmwgPSAiaHR0cDovLyIgKyB1cmw7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5odG1sdmlld2VyLnNldEF0dHJpYnV0ZSgic3JjIix1cmwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5odG1sdmlld2VyLnNldEF0dHJpYnV0ZSgidmlzaWJsZSIsdHJ1ZSk7CisgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBdXT4KKyAgICAgICAgICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAgICAgICAgIDwvYnV0dG9uPgorICAgICAgICAgICAgICAgIAorICAgICAgICA8aHRtbCBuYW1lPSJodG1sdmlld2VyIiB4PSI0IiB5PSI2MCIgd2lkdGg9IjYwMCIgaGVpZ2h0PSI1MDAiIGJnY29sb3I9IjB4Q0NDQ0NDIiA+CisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmxvYWRpbmciIGFyZ3M9ImxvYWRpbmciPgorICAgICAgICAgICAgICAgIHRoaXMubG9hZGluZyA9IGxvYWRpbmc7CisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIkxPQURJTkcgIixsb2FkaW5nKTsKKyAgICAgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uc3JjIiBhcmdzPSJzcmMiPgorICAgICAgICAgICAgICAgIHRoaXMuc3JjID0gc3JjOworICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJTUkMgIixsb2FkaW5nKTsKKyAgICAgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPC9odG1sPgorCQorPC9jYW52YXM+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy90ZXN0L2h0bWwubHp4LnN3Zjguc3dmIGIvV2ViQ29udGVudC9zcmMvdGVzdC9odG1sLmx6eC5zd2Y4LnN3ZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjYzOTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvdGVzdC9odG1sLmx6eC5zd2Y4LnN3ZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy90ZXN0L2h0bWwubHp4LnN3Zjkuc3dmIGIvV2ViQ29udGVudC9zcmMvdGVzdC9odG1sLmx6eC5zd2Y5LnN3ZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMmQ4Y2Q3Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvdGVzdC9odG1sLmx6eC5zd2Y5LnN3ZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy90ZXN0L2lGcmFtZS5senggYi9XZWJDb250ZW50L3NyYy90ZXN0L2lGcmFtZS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2RhYmI5YgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL3Rlc3QvaUZyYW1lLmx6eApAQCAtMCwwICsxLDI0NSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+CisKKzwhLS0gCisKK1JlcXVpcmVtZW50cyA6Cit0aGUgaHRtbCBtdXN0IGNvbnRhaW4gdGhlIGZvbGxvd2luZyBpbiB0aGUgSEVBRCA6CisKKwkJCWZ1bmN0aW9uIGNyZWF0ZUlGcmFtZShuLGlkLHNyYyx4LHksdyxoKXsKKwkJCQl2YXIgbmV3Q2hpbGQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpZnJhbWUnKTsKKwkJCQluZXdDaGlsZC5zdHlsZS52aXNpYmlsaXR5PSdoaWRkZW4nOworCQkJCW5ld0NoaWxkLnN0eWxlLnBvc2l0aW9uPSdhYnNvbHV0ZSc7CisJCQkJbmV3Q2hpbGQuc3R5bGUudG9wPScwcHgnOworCQkJCW5ld0NoaWxkLmlkPWlkOworCQkJCW5ld0NoaWxkLm5hbWU9bjsKKwkJCQluZXdDaGlsZC5zcmM9c3JjOworCQkJCW5ld0NoaWxkLnN0eWxlLmJvcmRlcj0nMHB4JzsKKwkJCQluZXdDaGlsZC5zdHlsZS5sZWZ0PXgrInB4IjsKKwkJCQluZXdDaGlsZC5zdHlsZS50b3A9eSsicHgiOworCQkJCW5ld0NoaWxkLndpZHRoPXcrInB4IjsKKwkJCQluZXdDaGlsZC5oZWlnaHQ9aCsicHgiOworCQkJCWRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQobmV3Q2hpbGQpOworCQkJfQorCQkJZnVuY3Rpb24gY2VudGVySWZyYW1lKGlpZCx4LHksdyxoKSB7CisJCQkJdmFyIGZyYW1lUmVmPWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlpZCk7CisJCQkJZnJhbWVSZWYuc3R5bGUubGVmdD14KyJweCI7CisJCQkJZnJhbWVSZWYuc3R5bGUudG9wPXkrInB4IjsKKwkJCQlmcmFtZVJlZi53aWR0aD13KyJweCI7CisJCQkJZnJhbWVSZWYuaGVpZ2h0PWgrInB4IjsKKwkJCX0KKwkJCWZ1bmN0aW9uIGhpZGVJRnJhbWUoKXsKKwkJCSAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiaWZybTFfaWQiKS5zdHlsZS52aXNpYmlsaXR5PSJoaWRkZW4iOworCQkJfQorCQkJZnVuY3Rpb24gc2hvd0lGcmFtZSgpeworCQkJICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJpZnJtMV9pZCIpLnN0eWxlLnZpc2liaWxpdHk9InZpc2libGUiOworCQkJfQorCitBdHRyaWJ1dGVzIDoKKyAtIGlzcmMgICAgICAgICA6IHVybCBmb3IgdGhlIGlmcmFtZVZpZXcKKyAtIGluYW1lICAgICAgICA6IG5hbWUgZm9yIHRoZSBpZnJhbWVWaWV3CisgLSBpaWQgICAgICAgICAgOiBpZCBmb3IgdGhlIGlmcmFtZVZpZXcKKyAtIGNhbGxiYWNrVGltZXJEZWxheSAgICAgICAgICAgOiBvcHRpb25hbAorIC0gY3JlYXRlSUZyYW1lX2NhbGxiYWNrQ291bnRlciA6IG9wdGlvbmFsCisgLSBjcmVhdGVJRnJhbWVfY2FsbGJhY2tNYXggICAgIDogb3B0aW9uYWwKKworRXhlbXBsZSA6CisKKyAgICAgIDxjYW52YXMgZGVidWc9InRydWUiID4KKyAgICAgICAgCisgICAgICAgIDxpbmNsdWRlIGhyZWY9ImxpYnJhcnkvaUZyYW1lLmx6eCIgLz4KKyAgICAgICAgCisgICAgICAgIAorICAgICAgICA8d2luZG93IGlkPSJ3IiB4PSIxMDAiIHk9IjUwIiB3aWR0aD0iMzUwIiBoZWlnaHQ9IjI1MCIgcmVzaXphYmxlPSJ0cnVlIiA+CisgICAgICAgIAorICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgICAgICBuZXcgTHpEZWxlZ2F0ZShpZnJtLCJjZW50ZXJJZnJhbWUiLHRoaXMsIm9ueCIpOworICAgICAgICAgICAgbmV3IEx6RGVsZWdhdGUoaWZybSwiY2VudGVySWZyYW1lIix0aGlzLCJvbnkiKTsKKyAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgICAgCisgICAgICAgICAgPGlmcmFtZVZpZXcgbmFtZT0iaWZybSIKKyAgICAgICAgICAgIHdpZHRoID0gIiR7aW1tZWRpYXRlcGFyZW50LndpZHRoICB9IgorICAgICAgICAgICAgaGVpZ2h0PSAiJHtpbW1lZGlhdGVwYXJlbnQuaGVpZ2h0IH0iCisgICAgICAgICAgICBpc3JjICA9ICJodHRwOi8vd3d3Lmdvb2dsZS5mci8iCisgICAgICAgICAgICBpaWQgICA9ICJteUlmcmFtZUlkIgorICAgICAgICAgICAgaW5hbWUgPSAibXlJZnJOYW1lIgorICAgICAgICAgIC8+CisgICAgICAgICAgCisgICAgICAgIDwvd2luZG93PgorICAgICAgICAgIAorICAgICAgICAKKyAgICAgIDwvY2FudmFzPgorCistLT4KKworPGxpYnJhcnk+CisKKyAgPGNsYXNzIG5hbWU9ImlmcmFtZVZpZXciIGV4dGVuZHM9InZpZXciID4KKyAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpc3JjIiB0eXBlPSJzdHJpbmciIHNldHRlcj0ic2V0SXNyYyhpc3JjKSIvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iaW5hbWUiIHR5cGU9InN0cmluZyIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImlpZCIgdHlwZT0ic3RyaW5nIiAvPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iZGlzcGxheSI+CisgICAgICB2YXIgcyA9ICJqYXZhc2NyaXB0OmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCciCisgICAgICAgICAgICAgICAgICAgICAgICArIGlpZCAKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIicpLnN0eWxlLnZpc2liaWxpdHk9J3Zpc2libGUnIjsKKyAgICAgIGx6LkJyb3dzZXIubG9hZEpTKHMpOworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iaGlkZSI+CisgICAgICB2YXIgcyA9ICJqYXZhc2NyaXB0OmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCciCisgICAgICAgICAgICAgICAgICAgICAgICArIGlpZCAKKyAgICAgICAgICAgICAgICAgICAgICAgICsgIicpLnN0eWxlLnZpc2liaWxpdHk9J2hpZGRlbiciOworICAgICAgLy9EZWJ1Zy53cml0ZSgib24gaGlkZSBsJ2lmcmFtZSIsaWlkLCIgOiIscyk7CisgICAgICBsei5Ccm93c2VyLmxvYWRKUyhzKTsKKyAgICA8L21ldGhvZD4gICAgCisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJzZXRJc3JjIiBhcmdzPSJzIj4KKyAgICAgIGlmICghdGhpcy5pc2luaXRlZCB8fCB0aGlzLmlzcmM9PSBudWxsKSB7ICAgICAgICAgICAgICAgICAgICAgIC8vY2F0Y2ggdGhlIGNhc2Ugd2hlcmUgdGhpcy50aW1lIGlzIGJlaW5nIAorICAgICAgICB0aGlzLmlzcmMgPSBzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9pbml0aWFsaXplZCBkdXJpbmcgb2JqZWN0IGluc3RhbnRpYXRpb24KKyAgICAgICAgcmV0dXJuOworICAgICAgfSAgICAgIAorICAgICAgdmFyIHMgPSAiamF2YXNjcmlwdDpkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnIgorICAgICAgICAgICAgICAgICAgICAgICAgKyBpaWQgCisgICAgICAgICAgICAgICAgICAgICAgICArICInKS5zcmM9JyIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgcworICAgICAgICAgICAgICAgICAgICAgICAgKyAiJyI7CisgICAgICBsei5Ccm93c2VyLmxvYWRKUyhzKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiID4KKyAgICAgIC8vIEZpcnN0IGluaXRpYWxpemUgdGhlIGlGcmFtZSBsb2FkaW5nIGRldGVjdGlvbiBtZWNoYW5pc20gOgorICAgICAgLy9pbml0Q3JlYXRlSUZyYW1lRG9uZSgpOworICAgICAgLy8gTm93IGNyZWF0aW5nIHRoZSBpZnJhbWVWaWV3IDoKKyAgICAgIC8vY3JlYXRlSUZyYW1lKCk7CisgICAgPC9oYW5kbGVyPgorCisgICAgPG1ldGhvZCBuYW1lPSJjcmVhdGVJRnJhbWUiID4KKyAgICAJLy9EZWJ1Zy53cml0ZSgiY3JlYXRlIElGUkFNRSAhISEhISEhISEhISEhISIpOworICAgICAgdmFyIHMgPSAiamF2YXNjcmlwdDpjcmVhdGVJRnJhbWUoJyIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgaW5hbWUgICsgIicsJyIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgaWlkICsgIicsJyIKKyAgICAgICAgICAgICAgICAgICAgICAgICsgaXNyYyArICInLCciCisgICAgICAgICAgICAgICAgICAgICAgICArIHRoaXMuZ2V0QXR0cmlidXRlUmVsYXRpdmUoIngiLGNhbnZhcykgICAgICArICInLCciCisgICAgICAgICAgICAgICAgICAgICAgICArIHRoaXMuZ2V0QXR0cmlidXRlUmVsYXRpdmUoInkiLGNhbnZhcykgICAgICArICInLCciCisgICAgICAgICAgICAgICAgICAgICAgICArICh3aWR0aCArMSkgKyAiJywnIgorICAgICAgICAgICAgICAgICAgICAgICAgKyAoaGVpZ2h0KzEpCisgICAgICAgICAgICAgICAgICAgICAgICArICInKSI7CisgICAgICAvLyB0aGUgYnJvd3NlciBtdXN0IGFsc28gdGVsbCBvdXIgbGFzemxvIHdoZW4gdGhlIGlmcmFtZVZpZXcgaGFzIGJlZW4gbG9hZGVkIDoKKyAgICAgIHMgPSBzICsgIjtkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnIgorICAgICAgICAgICAgICAgICAgICAgICAgKyBpaWQgCisgICAgICAgICAgICAgICAgICAgICAgICArICInKS5zdHlsZS52aXNpYmlsaXR5PSd2aXNpYmxlJyI7CisgICAgICBzID0gcyArICI7bHpTZXRDYW52YXNBdHRyaWJ1dGUoJyIgKyBjcmVhdGVJRnJhbWVEb25lX2F0dHIgKyAiJywgdHJ1ZSkiOworICAgICAgLy8vL0RlYnVnLndyaXRlKCJDYWxsaW5nIGNyZWF0ZUlGcmFtZSA7IGxvYWRKUyA6ICIgKyBzKTsvLworICAgICAgbHouQnJvd3Nlci5sb2FkSlMocyk7CisgICAgICAvLyBpbml0aWFsaXppbmcgdGhlIHNjaGVkdWxlZCBjaGVjayBvZiB0aGlzIGlGcmFtZSdzIGxvYWQgc3RhdGUKKyAgICAgIGlmKHR5cGVvZiB0aGlzLmNyZWF0ZUlGcmFtZV9jYWxsYmFja0RlbGVnYXRlID09ICd1bmRlZmluZWQnKSB7CisgICAgICAgICB0aGlzLmNyZWF0ZUlGcmFtZV9jYWxsYmFja0RlbGVnYXRlID0gbmV3IEx6RGVsZWdhdGUoIHRoaXMsICJjcmVhdGVJRnJhbWVfY2FsbGJhY2siICk7CisgICAgICB9CisgICAgICBsei5UaW1lci5yZXNldFRpbWVyKCB0aGlzLmNyZWF0ZUlGcmFtZV9jYWxsYmFja0RlbGVnYXRlLCBjYWxsYmFja1RpbWVyRGVsYXkgKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8IS0tIElmcmFtZSBsb2FkIHN0YXRlIGRldGVjdGlvbiBzdGF0ZSBhbmQgaW5pdGlhbGl6YXRpb24gLS0+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJjcmVhdGVJRnJhbWVEb25lX2F0dHIiIHR5cGU9InN0cmluZyIvPjwhLS0gaXMgaW5pdGlhbGl6ZWQgaW4gb25pbml0KCkgLS0+CisgICAgPG1ldGhvZCBuYW1lPSJpbml0Q3JlYXRlSUZyYW1lRG9uZSI+CisgICAgICAvLyBJbml0aWFsaXplcyB0aGUgaUZyYW1lIGxvYWRpbmcgZGV0ZWN0aW9uIG1lY2hhbmlzbS4KKyAgICAgIC8vIGNvbXB1dGluZyBhbmQgc2V0dGluZyB0aGUgbmFtZSBvZiB0aGlzIGlmcmFtZVZpZXcncyBvd24KKyAgICAgIC8vIGxvYWQgc3RhdGUgYXR0cmlidXRlIG9uIHRoZSBjYW52YXMgOgorICAgICAgdGhpcy5jcmVhdGVJRnJhbWVEb25lX2F0dHIgPSAnaUZyYW1lLmNyZWF0ZUlGcmFtZURvbmVfJyArIHRoaXMuaWlkOworICAgICAgLy8gaW5pdGlhbGl6aW5nIHRoaXMgaWZyYW1lVmlldydzIG93biBsb2FkIHN0YXRlIG9uIHRoZSBjYW52YXMgOgorICAgICAgY2FudmFzLnNldEF0dHJpYnV0ZShjcmVhdGVJRnJhbWVEb25lX2F0dHIsIGZhbHNlKTsKKyAgICAgIC8vLy9EZWJ1Zy53cml0ZSgnY3JlYXRlSUZyYW1lRG9uZV9hdHRyPScrdGhpcy5jcmVhdGVJRnJhbWVEb25lX2F0dHIpOy8vCisgICAgICAvLy8vRGVidWcud3JpdGUoJ2NyZWF0ZUlGcmFtZURvbmU9Jyt0aGlzLmNyZWF0ZUlGcmFtZURvbmUrY2FudmFzLmdldEF0dHJpYnV0ZShjcmVhdGVJRnJhbWVEb25lX2F0dHIpKTsvLworCTwvbWV0aG9kPgorCQorICAgIDwhLS0gSUZyYW1lIGxvYWQgc3RhdGUgc2NoZWR1bGVkIGNoZWNrIC0tPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iY2FsbGJhY2tUaW1lckRlbGF5IiB0eXBlPSJudW1iZXIiIHZhbHVlPSIxMDAiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJjcmVhdGVJRnJhbWVfY2FsbGJhY2tDb3VudGVyIiB0eXBlPSJudW1iZXIiIHZhbHVlPSIwIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iY3JlYXRlSUZyYW1lX2NhbGxiYWNrTWF4IiB0eXBlPSJudW1iZXIiIHZhbHVlPSIxMDAwIiAvPgorICAgIDxtZXRob2QgbmFtZT0iY3JlYXRlSUZyYW1lX2NhbGxiYWNrIj4KKyAgICAgIC8vLy9EZWJ1Zy53cml0ZSgiY3JlYXRlSUZyYW1lX2NhbGxiYWNrIDogY3JlYXRlSUZyYW1lX2RvbmU9IiArIGNhbnZhcy5nZXRBdHRyaWJ1dGUoY3JlYXRlSUZyYW1lRG9uZV9hdHRyKSk7Ly8KKyAgICAgIGlmKCFjYW52YXMuZ2V0QXR0cmlidXRlKGNyZWF0ZUlGcmFtZURvbmVfYXR0cikpIHsKKyAgICAgICAgIGlmICh0aGlzLmNyZWF0ZUlGcmFtZV9jYWxsYmFja0NvdW50ZXIgKiBjYWxsYmFja1RpbWVyRGVsYXkgJmx0OyBjcmVhdGVJRnJhbWVfY2FsbGJhY2tNYXgpIHsKKyAgICAgICAgICAgIHRoaXMuY3JlYXRlSUZyYW1lX2NhbGxiYWNrQ291bnRlciA9IHRoaXMuY3JlYXRlSUZyYW1lX2NhbGxiYWNrQ291bnRlciArIDE7CisgICAgICAgICAgICBsei5UaW1lci5yZXNldFRpbWVyKCB0aGlzLmNyZWF0ZUlGcmFtZV9jYWxsYmFja0RlbGVnYXRlLCBjYWxsYmFja1RpbWVyRGVsYXkgKTsKKyAgICAgICAgIH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgICAvLyBjcmVhdGluZyBpZnJhbWVWaWV3IG1vdmVzIGxpc3RlbmVycyA6CisgICAgICAgICAvL0RlYnVnLndyaXRlKCdjcmVhdGVMaXN0ZW5lcnMnKTsvLworICAgICAgICAgY3JlYXRlTGlzdGVuZXJzKCk7CisgICAgICAgICAvLyBub3cgbGV0J3MgbWFrZSBzdXJlIHRoZSBpZnJhbWVWaWV3IGhhcyBiZWVuIHRvZ2dsZWQgYnkgbW92aW5nIGl0CisgICAgICAgICBpZiAodGhpcy5pRnJhbWVKc1N0YWNrID09ICdqYXZhc2NyaXB0OicpIHsKKyAgICAgICAgICAgIC8vLy9EZWJ1Zy53cml0ZSgnY3JlYXRlTGlzdGVuZXJzLm1vdmUnKTsvLworICAgICAgICAgICAgLy8gdGhlcmUncyBubyBqYXZhc2NyaXB0IHN0YWNrIHlldCwgc28gbGV0J3Mgc2ltcGx5IG1vdmUgdGhlIGlmcmFtZVZpZXcgOgorICAgICAgICAgICAgY2VudGVySWZyYW1lKCk7CisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8vL0RlYnVnLndyaXRlKCdjcmVhdGVMaXN0ZW5lcnMuc3RhY2tlZCAnK3RoaXMuaUZyYW1lSnNTdGFjayk7Ly8KKyAgICAgICAgICAgIC8vIHNvbWUgamF2YXNjcmlwdCBoYXMgYmVlbiBzY2hlZHVsZWQgdG8gYmUgbG9hZGVkLCBzbyBsZXQncyBkbyBpdCA6CisgICAgICAgICAgICBsei5Ccm93c2VyLmxvYWRKUyh0aGlzLmlGcmFtZUpzU3RhY2spOworICAgICAgICAgfQorICAgICAgfQorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDwhLS0gU3RhY2thYmxlIGphdmFzY3JpcHQgZXhlY3V0aW9uIG1lY2hhbmlzbWUgLS0+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpRnJhbWVKc1N0YWNrIiB0eXBlPSJzdHJpbmciIHZhbHVlPSJqYXZhc2NyaXB0OiIgLz4KKyAgICA8bWV0aG9kIG5hbWU9ImV4ZWN1dGVKcyIgYXJncz0icyI+CisgICAgICAvLy8vRGVidWcud3JpdGUoImV4ZWN1dGVKcyIsIHMpOy8vCisgICAgICBpZiAoY2FudmFzLmdldEF0dHJpYnV0ZShjcmVhdGVJRnJhbWVEb25lX2F0dHIpKSB7CisgICAgICAgICAvLy8vRGVidWcud3JpdGUoImV4ZWN1dGVKcy5kaXJlY3QiLCBzKTsvLworICAgICAgICAgbHouQnJvd3Nlci5sb2FkSlMocyk7IC8vIGlmcmFtZVZpZXcgaXMgbG9hZGVkLCBzbyBkaXJlY3QgZXhlY3V0aW9uCisgICAgICB9IGVsc2UgeworICAgICAgICAgLy8vL0RlYnVnLndyaXRlKCJleGVjdXRlSnMuc3RhY2tlZCIsIHMpOy8vCisgICAgICAgICAvLyBlbHNlIHRoZSBpZnJhbWVWaWV3IGhhcyBub3QgeWV0IGJlZW4gbG9hZGVkLCBzbyBsZXQncyBzdGFjayBpdCA6CisgICAgICAgICB0aGlzLmlGcmFtZUpzU3RhY2sgPSB0aGlzLmlGcmFtZUpzU3RhY2sgKyAnOycgKyBzIDsKKyAgICAgIH0KKyAgICA8L21ldGhvZD4KKwkKKyAgICA8bWV0aG9kIG5hbWU9ImNyZWF0ZUxpc3RlbmVycyIgPgorICAgICAgdGhpcy5teURlbHggPSBuZXcgTHpEZWxlZ2F0ZSh0aGlzLCAiY2VudGVySWZyYW1lIiwgdGhpcywgIm9ueCIpOworICAgICAgdGhpcy5teURlbHkgPSBuZXcgTHpEZWxlZ2F0ZSh0aGlzLCAiY2VudGVySWZyYW1lIiwgdGhpcywgIm9ueSIpOworICAgICAgdGhpcy5teURlbHcgPSBuZXcgTHpEZWxlZ2F0ZSh0aGlzLCAiY2VudGVySWZyYW1lIiwgdGhpcywgIm9ud2lkdGgiKTsKKyAgICAgIHRoaXMubXlEZWxoID0gbmV3IEx6RGVsZWdhdGUodGhpcywgImNlbnRlcklmcmFtZSIsIHRoaXMsICJvbmhlaWdodCIpOworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgIG5hbWU9ImNlbnRlcklmcmFtZSI+CisgICAgICAvLyB3ZSB1c2UgYSB0aW1lciBpbiBvcmRlciB0byBhdm9pZCB0b28gbWFueSBqcyBjYWxsIChzbG93KQorICAgICAgLy9EZWJ1Zy53cml0ZSgiY2VudGVySWZyYW1lIHJlcXVlc3QiKTsKKyAgICAgIGlmKHR5cGVvZiB0aGlzLmNlbnRlcklmcmFtZV9EZWxlZ2F0ZSA9PSAndW5kZWZpbmVkJykgeworICAgICAgICAgdGhpcy5jZW50ZXJJZnJhbWVfRGVsZWdhdGUgPSBuZXcgTHpEZWxlZ2F0ZSggdGhpcywgImNlbnRlcklmcmFtZV9qc0NhbGwiICk7CisgICAgICB9CisgICAgICBsei5UaW1lci5yZXNldFRpbWVyKCB0aGlzLmNlbnRlcklmcmFtZV9EZWxlZ2F0ZSwgMjAgKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kICBuYW1lPSJjZW50ZXJJZnJhbWVfanNDYWxsIj4KKyAgICAgIHZhciBzID0gImphdmFzY3JpcHQ6Y2VudGVySWZyYW1lKCciCisgICAgICAgICAgICArIHRoaXMuaWlkICAgKyAiJywnIgorICAgICAgICAgICAgKyB0aGlzLmdldEF0dHJpYnV0ZVJlbGF0aXZlKCJ4IixjYW52YXMpICAgICAgKyAiJywnIgorICAgICAgICAgICAgKyB0aGlzLmdldEF0dHJpYnV0ZVJlbGF0aXZlKCJ5IixjYW52YXMpICAgICAgKyAiJywnIgorICAgICAgICAgICAgKyAod2lkdGggKzEpICsgIicsJyIKKyAgICAgICAgICAgICsgKGhlaWdodCsxKSArICInKSI7CisgICAgICB0aGlzLmV4ZWN1dGVKcyhzKTsgLy8gdXNpbmcgdGhlIHN0YWNrYWJsZSBqcyBleGVjIG1lY2hhbmlzbQorICAgIDwvbWV0aG9kPgorICAgIAorICA8L2NsYXNzPgorCis8L2xpYnJhcnk+CisgCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy90ZXN0L2ltYWdlcy9tYWluZGVidWcubHp4IGIvV2ViQ29udGVudC9zcmMvdGVzdC9pbWFnZXMvbWFpbmRlYnVnLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MmI0ZjBkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvdGVzdC9pbWFnZXMvbWFpbmRlYnVnLmx6eApAQCAtMCwwICsxLDg1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxjYW52YXMgZGVidWc9InRydWUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIHRpdGxlPSJHZW8gTWFwIFBvcnRhbCI+CisgICAgCisgICAgPGRlYnVnIGZvbnRzaXplPSIxMSIgb25pbml0PSJEZWJ1Zy5zaG93SW50ZXJuYWxQcm9wZXJ0aWVzID0gdHJ1ZSIgLz4KKworPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICA8IVtDREFUQVsKKyAgICAKKyAgICAgICAgTHpMb2FkUXVldWUubWF4T3BlbiA9IDEwMDsKKworICAgIAorCSAgICAvLworICAgICAgICB2YXIgdXJsID0gbmV3IEFycmF5KCk7CisJICAgIAorCSAgICAKKyAgICAgICAgCisgICAgICAgIHVybFs1XSA9ICJodHRwOi8vb3Blbm1lZXRpbmdzLmdvb2dsZWNvZGUuY29tL3N2bi9kb2NzL3VtbC9pbWFnZXMvb3Blbm1lZXRpbmdzL2RpYWdyYW0vTW9kZXJhdGlvbkNoYW5nZUNsaWVudFNpZGUuanBnIjsKKwkJdXJsWzRdID0gImh0dHA6Ly9vcGVubWVldGluZ3MuZ29vZ2xlY29kZS5jb20vc3ZuL2RvY3MvdW1sL2ltYWdlcy9vcGVubWVldGluZ3MvZGlhZ3JhbS9Nb2RlcmF0aW9uQ2hhbmdlQ2xpZW50U2lkZUJpZy5qcGciOworCQl1cmxbM10gPSAiaHR0cDovL29wZW5tZWV0aW5ncy5nb29nbGVjb2RlLmNvbS9zdm4vZG9jcy91bWwvaW1hZ2VzL29wZW5tZWV0aW5ncy9kaWFncmFtL1ZpZGVvQ2xhc3MucG5nIjsKKwkJdXJsWzJdID0gImh0dHA6Ly9vcGVubWVldGluZ3MuZ29vZ2xlY29kZS5jb20vc3ZuL2RvY3MvTGFuZ3VhZ2VOYXZpZ2F0aW9uRXJyb3JzLnBuZyI7CisJCXVybFsxXSA9ICJodHRwOi8vb3Blbm1lZXRpbmdzLmdvb2dsZWNvZGUuY29tL3N2bi9kb2NzL09wZW5NZWV0aW5nc1NPQVBHYXRld2F5LnBuZyI7CisJCXVybFswXSA9ICJodHRwOi8vb3Blbm1lZXRpbmdzLmdvb2dsZWNvZGUuY29tL3N2bi9kb2NzL09wZW5tZWV0aW5nc0FsbFRhYmxlcy5wbmciOworICAgICAgICB1cmxbNl0gPSAiaHR0cDovL29wZW5tZWV0aW5ncy5nb29nbGVjb2RlLmNvbS9zdm4vZG9jcy9TT0FQRmxvd0RpcmVjdExvZ2luLnBuZyI7CisgICAgICAgIHVybFs3XSA9ICJodHRwOi8vb3Blbm1lZXRpbmdzLmdvb2dsZWNvZGUuY29tL3N2bi9kb2NzL1VzZXJEaWFncmFtLnBuZyI7CisgICAgICAgIHVybFs4XSA9ICJodHRwOi8vb3Blbm1lZXRpbmdzLmdvb2dsZWNvZGUuY29tL3N2bi9kb2NzL1VzZXJHcm91cHNPcmdhbml6YXRpb25zQW5kUm9vbXMucG5nIjsKKyAgICAgICAgdXJsWzldID0gImh0dHA6Ly9vcGVubWVldGluZ3MuZ29vZ2xlY29kZS5jb20vc3ZuL2RvY3MvYXJjaGl0ZWN0dXJlLmpwZyI7CisgICAgICAgIHVybFsxMF0gPSAiaHR0cDovL29wZW5tZWV0aW5ncy5nb29nbGVjb2RlLmNvbS9zdm4vZG9jcy9tb29kbGVfcGx1Z2luX2F1ZGllbmNlLnBuZyI7CisgICAgICAgIHVybFsxMV0gPSAiaHR0cDovL29wZW5tZWV0aW5ncy5nb29nbGVjb2RlLmNvbS9zdm4vZG9jcy9tb29kbGVfcGx1Z2luX2NvbmZlcmVuY2UucG5nIjsKKyAgICAgICAgdXJsWzEyXSA9ICJodHRwOi8vb3Blbm1lZXRpbmdzLmdvb2dsZWNvZGUuY29tL3N2bi9kb2NzL25ld1doaXRlQm9hcmQuUE5HIjsKKyAgICAgICAgdXJsWzEzXSA9ICJodHRwOi8vb3Blbm1lZXRpbmdzLmdvb2dsZWNvZGUuY29tL3N2bi9kb2NzL25ld1doaXRlQm9hcmQyLlBORyI7CisgICAgICAgIHVybFsxNF0gPSAiaHR0cDovL29wZW5tZWV0aW5ncy5nb29nbGVjb2RlLmNvbS9zdm4vZG9jcy9uZXdXaGl0ZUJvYXJkMy5QTkciOworICAgICAgICB1cmxbMTVdID0gImh0dHA6Ly9vcGVubWVldGluZ3MuZ29vZ2xlY29kZS5jb20vc3ZuL2RvY3MvdGVzdF9hcHBsaWNhdGlvbl9hdWRpb192aWRlby5wbmciOworICAgICAgICAKKyAgICAgICAgCisgICAgICAgIAorICAgICAgICAKKyAgICAgICAgZm9yICh2YXIgaT0wO2k8MTY7aSsrKSB7CisgICAgICAgICAgICB2YXIgZCA9IG5ldyBEYXRlKCk7CisgICAgICAgICAgICBuZXcgbGF5ZXJJbWFnZShjYW52YXMubXlWaWV3LHtzcmNJbWFnZTp1cmxbaV0rIj90aW1lPSIraStkLmdldFRpbWUoKX0pOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICAKKyAgICAgICAgZm9yICh2YXIgaT0wO2k8NDA7aSsrKSB7CisgICAgICAgICAgICB2YXIgZCA9IG5ldyBEYXRlKCk7CisgICAgICAgICAgICBuZXcgbGF5ZXJJbWFnZShjYW52YXMubXlWaWV3LHtzcmNJbWFnZToiaHR0cDovL29wZW5tZWV0aW5ncy5nb29nbGVjb2RlLmNvbS9zdm4vZG9jcy91bWwvaW1hZ2VzL29wZW5tZWV0aW5ncy9kaWFncmFtL01vZGVyYXRpb25DaGFuZ2VDbGllbnRTaWRlQmlnLmpwZz90aW1lPSIraStkLmdldFRpbWUoKX0pOworICAgICAgICB9CisKKyAgICBdXT4KKzwvaGFuZGxlcj4KKworPGNsYXNzIG5hbWU9ImxheWVySW1hZ2UiIGV4dGVuZHM9ImltYWdlIj4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImxheWVyaWQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJ0eXBlIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpc0xheWVySW1hZ2UiIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0ic3JjSW1hZ2UiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgc2V0dGVyPSJ0aGlzLnNldEltYWdlU291cmNlKHNyY0ltYWdlKSIgLz4KKyAgICA8bWV0aG9kIG5hbWU9InNldEltYWdlU291cmNlIiBhcmdzPSJzcmNJbWFnZSI+CisgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzZXRJbWFnZVNvdXJjZSIsc3JjSW1hZ2UpOworICAgICAgICAvL3ZhciBtY1JlZiA9IHRoaXMuZ2V0RGlzcGxheU9iamVjdCgpOworICAgICAgICAvL21jUmVmLmxvYWRNb3ZpZShzcmNJbWFnZSk7CisgICAgICAgIHRoaXMuc2V0U291cmNlKHNyY0ltYWdlKTsKKyAgICA8L21ldGhvZD4KKzwvY2xhc3M+ICAKKworPHZpZXcgbmFtZT0ibXlWaWV3IiAvPgorICAKKzwvY2FudmFzPgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvdGVzdC9pbWFnZXMvbWFpbmRlYnVnVGltZXIubHp4IGIvV2ViQ29udGVudC9zcmMvdGVzdC9pbWFnZXMvbWFpbmRlYnVnVGltZXIubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1YWJjZWUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy90ZXN0L2ltYWdlcy9tYWluZGVidWdUaW1lci5sengKQEAgLTAsMCArMSw5NCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8Y2FudmFzIGRlYnVnPSJ0cnVlIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiB0aXRsZT0iR2VvIE1hcCBQb3J0YWwiPgorICAgIAorICAgIDxkZWJ1ZyBmb250c2l6ZT0iMTEiIG9uaW5pdD0iRGVidWcuc2hvd0ludGVybmFsUHJvcGVydGllcyA9IHRydWUiIC8+CisKKzxhdHRyaWJ1dGUgbmFtZT0idXJsIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+Cis8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnRJbmRleCIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKworPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICA8IVtDREFUQVsKKyAgICAKKwkgICAgTHpMb2FkUXVldWUubWF4T3BlbiA9IDEwMDsKKwkgICAgCisJICAgIHRoaXMudXJsID0gbmV3IEFycmF5KCk7CisJICAgIAorCSAgICB0aGlzLnVybFs1XSA9ICJodHRwOi8vb3Blbm1lZXRpbmdzLmdvb2dsZWNvZGUuY29tL3N2bi9kb2NzL3VtbC9pbWFnZXMvb3Blbm1lZXRpbmdzL2RpYWdyYW0vTW9kZXJhdGlvbkNoYW5nZUNsaWVudFNpZGUuanBnIjsKKwkgICAgdGhpcy51cmxbNF0gPSAiaHR0cDovL29wZW5tZWV0aW5ncy5nb29nbGVjb2RlLmNvbS9zdm4vZG9jcy91bWwvaW1hZ2VzL29wZW5tZWV0aW5ncy9kaWFncmFtL01vZGVyYXRpb25DaGFuZ2VDbGllbnRTaWRlQmlnLmpwZyI7CisJICAgIHRoaXMudXJsWzNdID0gImh0dHA6Ly9vcGVubWVldGluZ3MuZ29vZ2xlY29kZS5jb20vc3ZuL2RvY3MvdW1sL2ltYWdlcy9vcGVubWVldGluZ3MvZGlhZ3JhbS9WaWRlb0NsYXNzLnBuZyI7CisJICAgIHRoaXMudXJsWzJdID0gImh0dHA6Ly9vcGVubWVldGluZ3MuZ29vZ2xlY29kZS5jb20vc3ZuL2RvY3MvTGFuZ3VhZ2VOYXZpZ2F0aW9uRXJyb3JzLnBuZyI7CisJICAgIHRoaXMudXJsWzFdID0gImh0dHA6Ly9vcGVubWVldGluZ3MuZ29vZ2xlY29kZS5jb20vc3ZuL2RvY3MvT3Blbk1lZXRpbmdzU09BUEdhdGV3YXkucG5nIjsKKwkgICAgdGhpcy51cmxbMF0gPSAiaHR0cDovL29wZW5tZWV0aW5ncy5nb29nbGVjb2RlLmNvbS9zdm4vZG9jcy9PcGVubWVldGluZ3NBbGxUYWJsZXMucG5nIjsKKwkgICAgdGhpcy51cmxbNl0gPSAiaHR0cDovL29wZW5tZWV0aW5ncy5nb29nbGVjb2RlLmNvbS9zdm4vZG9jcy9TT0FQRmxvd0RpcmVjdExvZ2luLnBuZyI7CisJICAgIHRoaXMudXJsWzddID0gImh0dHA6Ly9vcGVubWVldGluZ3MuZ29vZ2xlY29kZS5jb20vc3ZuL2RvY3MvVXNlckRpYWdyYW0ucG5nIjsKKwkgICAgdGhpcy51cmxbOF0gPSAiaHR0cDovL29wZW5tZWV0aW5ncy5nb29nbGVjb2RlLmNvbS9zdm4vZG9jcy9Vc2VyR3JvdXBzT3JnYW5pemF0aW9uc0FuZFJvb21zLnBuZyI7CisJICAgIHRoaXMudXJsWzldID0gImh0dHA6Ly9vcGVubWVldGluZ3MuZ29vZ2xlY29kZS5jb20vc3ZuL2RvY3MvYXJjaGl0ZWN0dXJlLmpwZyI7CisJICAgIHRoaXMudXJsWzEwXSA9ICJodHRwOi8vb3Blbm1lZXRpbmdzLmdvb2dsZWNvZGUuY29tL3N2bi9kb2NzL21vb2RsZV9wbHVnaW5fYXVkaWVuY2UucG5nIjsKKwkgICAgdGhpcy51cmxbMTFdID0gImh0dHA6Ly9vcGVubWVldGluZ3MuZ29vZ2xlY29kZS5jb20vc3ZuL2RvY3MvbW9vZGxlX3BsdWdpbl9jb25mZXJlbmNlLnBuZyI7CisJICAgIHRoaXMudXJsWzEyXSA9ICJodHRwOi8vb3Blbm1lZXRpbmdzLmdvb2dsZWNvZGUuY29tL3N2bi9kb2NzL25ld1doaXRlQm9hcmQuUE5HIjsKKwkgICAgdGhpcy51cmxbMTNdID0gImh0dHA6Ly9vcGVubWVldGluZ3MuZ29vZ2xlY29kZS5jb20vc3ZuL2RvY3MvbmV3V2hpdGVCb2FyZDIuUE5HIjsKKwkgICAgdGhpcy51cmxbMTRdID0gImh0dHA6Ly9vcGVubWVldGluZ3MuZ29vZ2xlY29kZS5jb20vc3ZuL2RvY3MvbmV3V2hpdGVCb2FyZDMuUE5HIjsKKwkgICAgdGhpcy51cmxbMTVdID0gImh0dHA6Ly9vcGVubWVldGluZ3MuZ29vZ2xlY29kZS5jb20vc3ZuL2RvY3MvdGVzdF9hcHBsaWNhdGlvbl9hdWRpb192aWRlby5wbmciOworCSAgICB0aGlzLnVybFsxNl0gPSAiaHR0cDovL29wZW5tZWV0aW5ncy5nb29nbGVjb2RlLmNvbS9zdm4vZG9jcy91bWwvaW1hZ2VzL29wZW5tZWV0aW5ncy9kaWFncmFtL01vZGVyYXRpb25DaGFuZ2VDbGllbnRTaWRlQmlnLmpwZyI7CisJICAgIAorCSAgICBmb3IgKHZhciBrID0gMTY7azw0MDtrKyspIHsKKyAgICAgICAgICAgIHRoaXMudXJsW2tdID0gImh0dHA6Ly9vcGVubWVldGluZ3MuZ29vZ2xlY29kZS5jb20vc3ZuL2RvY3MvdW1sL2ltYWdlcy9vcGVubWVldGluZ3MvZGlhZ3JhbS9Nb2RlcmF0aW9uQ2hhbmdlQ2xpZW50U2lkZUJpZy5qcGciOworICAgICAgICB9CisJICAgIAorCSAgICB0aGlzLmZhZGVEZWxlZ2F0ZSA9IG5ldyBMekRlbGVnYXRlKCB0aGlzLCAic2VuZEltYWdlIiApOworCSAgICBMelRpbWVyLmFkZFRpbWVyKCB0aGlzLmZhZGVEZWxlZ2F0ZSwgNTAgKTsKKyAgICAgICAgCisgICAgXV0+Cis8L2hhbmRsZXI+CisKKzxtZXRob2QgbmFtZT0ic2VuZEltYWdlIj4KKyAgICA8IVtDREFUQVsKKyAgICAKKyAgICAgICAgdmFyIGQgPSBuZXcgRGF0ZSgpOworICAgICAgICAKKyAgICAgICAgbmV3IGxheWVySW1hZ2UoY2FudmFzLm15Vmlldyx7c3JjSW1hZ2U6dGhpcy51cmxbdGhpcy5jdXJyZW50SW5kZXhdKyI/dGltZT0iK2QuZ2V0VGltZSgpfSk7CisgICAgICAgIAorICAgICAgICB0aGlzLmN1cnJlbnRJbmRleCArKzsKKyAgICAgICAgCisgICAgICAgIGlmICh0aGlzLmN1cnJlbnRJbmRleCA8IDQwKSB7CisgICAgICAgICAgICBMelRpbWVyLmFkZFRpbWVyKCB0aGlzLmZhZGVEZWxlZ2F0ZSwgNTAgKTsKKyAgICAgICAgfQorCisgICAgXV0+Cis8L21ldGhvZD4KKworPGNsYXNzIG5hbWU9ImxheWVySW1hZ2UiIGV4dGVuZHM9ImltYWdlIj4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImxheWVyaWQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJ0eXBlIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpc0xheWVySW1hZ2UiIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0ic3JjSW1hZ2UiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgc2V0dGVyPSJ0aGlzLnNldEltYWdlU291cmNlKHNyY0ltYWdlKSIgLz4KKyAgICA8bWV0aG9kIG5hbWU9InNldEltYWdlU291cmNlIiBhcmdzPSJzcmNJbWFnZSI+CisgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzZXRJbWFnZVNvdXJjZSIsc3JjSW1hZ2UpOworICAgICAgICAvL3ZhciBtY1JlZiA9IHRoaXMuZ2V0RGlzcGxheU9iamVjdCgpOworICAgICAgICAvL21jUmVmLmxvYWRNb3ZpZShzcmNJbWFnZSk7CisgICAgICAgIHRoaXMuc2V0U291cmNlKHNyY0ltYWdlKTsKKyAgICA8L21ldGhvZD4KKzwvY2xhc3M+ICAKKworPHZpZXcgbmFtZT0ibXlWaWV3IiAvPgorICAKKzwvY2FudmFzPgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvdGVzdC9sYW5nL2VuLmx6eCBiL1dlYkNvbnRlbnQvc3JjL3Rlc3QvbGFuZy9lbi5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjhkNzE0NgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL3Rlc3QvbGFuZy9lbi5sengKQEAgLTAsMCArMSw0NiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorPHNjcmlwdD4KKzwhW0NEQVRBWworCit2YXIgbWVzcyA9IHt9OworCittZXNzLmhvbWUgPSAiSG9tZSI7CittZXNzLndlbGNvbWUgPSAiV2VsY29tZSAhPGJyIC8+V2Ugbm93IGRldGVybWluZSBpZiB5b3VyIGNvbmZpZ3VyYXRpb24gaXMgZ29vZCB0byBoYXZlIHRoZSBiZXN0IGV4cGVyaWVuY2Ugd2l0aCBPcGVuTWVldGluZ3MuIjsKK21lc3Muc291bmQgPSAiU291bmQiOworbWVzcy5taWNybyA9ICJNaWNybyI7CittZXNzLndlYmNhbSA9ICJXZWJjYW0iOworbWVzcy5iYW5kd2lkdGggPSAiQmFuZHdpZHRoIjsKK21lc3MubGF0ZW5jeSA9ICJMYXRlbmN5IjsKK21lc3Muc3ludGhlc2lzID0gIlN5bnRoZXNpcyI7CittZXNzLm5leHQgPSAiTmV4dCA+IjsKK21lc3MubGlzdGVuX3NvdW5kID0gIkRvIHlvdSBoZWFyIHRoZSB2b2ljZSA/IjsKK21lc3MueWVzID0gIlllcyI7CittZXNzLm5vID0gIk5vIjsKK21lc3MubWljcm9SZWNvcmQgPSAiUmVjb3JkIHlvdXIgdm9pY2UgYW5kIGNsaWNrIG9uIFwiUGxheVwiIGJ1dHRvbiB0byBoZWFyIGlmIHlvdXIgbWljcm8gd29ya3MuIjsKK21lc3Mud2ViY2FtVGV4dCA9ICJZb3VyIHdlYmNhbSA6IjsKK21lc3MuYmFuZHdpZHRoVGV4dCA9ICJXZSBhcmUgdGVzdGluZyB0aGUgY2FwYWNpdHkgb2YgeW91ciBJbnRlcm5ldCBjb25uZXhpb24uIjsKK21lc3MubGF0ZW5jeVRleHQgPSAiV2UgYXJlIHRlc3RpbmcgdGhlIGRlbGF5IGJldHdlZW4geW91ciBjb21wdXRlciBhbmQgb3VyIHNlcnZlci4iOworbWVzcy5zeW50aGVzaXNUZXh0ID0gIllvdXIgcmVzdWx0cyA6IjsKK11dPgorPC9zY3JpcHQ+Cis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy90ZXN0L2xhenNsby1ydGx0ZXh0L2ZvbnRzL2hlYnJldy9hcmlhbC50dGYgYi9XZWJDb250ZW50L3NyYy90ZXN0L2xhenNsby1ydGx0ZXh0L2ZvbnRzL2hlYnJldy9hcmlhbC50dGYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmYwODE1YwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL3Rlc3QvbGF6c2xvLXJ0bHRleHQvZm9udHMvaGVicmV3L2FyaWFsLnR0ZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy90ZXN0L2xhenNsby1ydGx0ZXh0L2ZvbnRzL2hlYnJldy9hcmlhbGJkLnR0ZiBiL1dlYkNvbnRlbnQvc3JjL3Rlc3QvbGF6c2xvLXJ0bHRleHQvZm9udHMvaGVicmV3L2FyaWFsYmQudHRmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwZDg1N2UKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy90ZXN0L2xhenNsby1ydGx0ZXh0L2ZvbnRzL2hlYnJldy9hcmlhbGJkLnR0ZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy90ZXN0L2xhenNsby1ydGx0ZXh0L3Jlc291cmNlcy5senggYi9XZWJDb250ZW50L3NyYy90ZXN0L2xhenNsby1ydGx0ZXh0L3Jlc291cmNlcy5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzM5ZjhlZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL3Rlc3QvbGF6c2xvLXJ0bHRleHQvcmVzb3VyY2VzLmx6eApAQCAtMCwwICsxLDM1IEBACis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKyAgICAKKyAgICA8IS0tIEZvbnRzIC0tPgorICAgIDxmb250IG5hbWU9ImRlZmF1bHQiPgorICAgICAgPGZhY2Ugc3JjPSJmb250cy9oZWJyZXcvYXJpYWwudHRmIi8+CisgICAgICA8ZmFjZSBzcmM9ImZvbnRzL2hlYnJldy9hcmlhbGJkLnR0ZiIgc3R5bGU9ImJvbGQiLz4KKwk8L2ZvbnQ+CisKKzwvbGlicmFyeT4KKzwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPgorPCEtLSBDb3B5cmlnaHQgMjAwMS0yMDA0IExhc3psbyBTeXN0ZW1zLCBJbmMuICBBbGwgUmlnaHRzIFJlc2VydmVkLiAgICAgICAgLS0+Cis8IS0tIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLT4KKzwhLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tPgorPCEtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0+Cis8IS0tIExhc3psbyBQcmVzZW50YXRpb24gU2VydmVyIHZlcnNpb24gMy4wYjEgMDAxMjI3ICAgICAgICAgICAgICAgICAgICAgLS0+Cis8IS0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL3Rlc3QvbGF6c2xvLXJ0bHRleHQvcnRsVGV4dC5senggYi9XZWJDb250ZW50L3NyYy90ZXN0L2xhenNsby1ydGx0ZXh0L3J0bFRleHQubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhZjFlNzMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy90ZXN0L2xhenNsby1ydGx0ZXh0L3J0bFRleHQubHp4CkBAIC0wLDAgKzEsODIgQEAKKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorCisJPCEtLSBDTEFTUzogcnRsVGV4dCA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4gCisJPCEtLSB1c2UgdGhpcyBvbiBkeW5hbWljIGRhdGEgdGV4dCB0YWdzLiAtLT4KKwk8Y2xhc3MgbmFtZT0icnRsVGV4dCIgZXh0ZW5kcz0idGV4dCI+CisJCQorCQk8IS0tIEFUVFJJQlVURVMgLS0+CisJCTwhLS0gdGV4dCBhbGlnbm1lbnQ6IGRlZmF1bHQgaXMgcmlnaHQgLS0+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJ0ZXh0QWxpZ24iIHZhbHVlPSJyaWdodCIgdHlwZT0ic3RyaW5nIiAvPiAKKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImdldFRleHRBbGlnbiI+ICAgIAorICAgIAlyZXR1cm4gdGhpcy50ZXh0QWxpZ247CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJzZXRUZXh0QWxpZ24iPgorICAgIAlzd2l0Y2ggKCB0aGlzLmdldFRleHRBbGlnbigpICkgeworCQkJCWNhc2UgImxlZnQiIDoKKwkJCQkJdGhpcy5zZXRYKCAwICk7CisJCQkJYnJlYWs7CisJCQkJY2FzZSAiY2VudGVyIiA6CisJCQkJCXRoaXMuc2V0WCggdGhpcy5wYXJlbnQud2lkdGggLyAyIC0gdGhpcy5nZXRUZXh0V2lkdGgoKSAvIDIgKTsKKwkJCQlicmVhazsKKwkJCQljYXNlICJyaWdodCIgOgorCQkJCQl0aGlzLnNldFgoIHRoaXMucGFyZW50LndpZHRoIC0gdGhpcy5nZXRUZXh0V2lkdGgoKSApOworCQkJCWJyZWFrOworCQkJfQorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iaXNMVFIiIGFyZ3M9ImMiPgorCQk8IVtDREFUQVsKKwkJCXJldHVybiAoIGMgPj0gNDggJiYgYyA8PSA1NyB8fCBjID49IDY1ICYmIGMgPD0gOTAgfHwgYyA+PSA5NyAmJiBjIDw9IDEyMiApOworCQldXT4KKwk8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImlzSEVCIiBhcmdzPSJjIj4KKwkJPCFbQ0RBVEFbCisJCQlyZXR1cm4gKCBjID49IDIyNCAmJiBjIDw9IDI1MCApOworCQldXT4KKwk8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InJldmVyc2VXb3JkcyIgYXJncz0ic3RyIj4KKwkJPCFbQ0RBVEFbCisJCQlpZiAoIHN0ciA9PSAiIiB8fCBzdHIgPT0gbnVsbCApIHJldHVybiAiIjsgLy8gdW5kZWZpbmVkCisJCQkvLyBmaXJzdCBjaGFyIGluZGljYXRlcyB0aGUgbWFpbiBkaXJlY3RpdmUgb2Ygc3RyIChydGwvbHRyKQorCQkJaWYgKCBpc0xUUiggc3RyLmNoYXJDb2RlQXQoIDAgKSApICkgcmV0dXJuIHN0cjsgLy8gZW5nbGlzaCBvciBudW1iZXIKKwkJCXZhciB3b3Jkc19hcnIgPSBzdHIuc3BsaXQoICIiICk7IC8vIGFuIGFycmF5IG9mIGNoYXJzCisJCQlmb3IgKCB2YXIgaSA9IDAsIHN0ciA9ICIiOyBpIDwgd29yZHNfYXJyLmxlbmd0aDsgaSsrICkgLy8gcmV2ZXJzZSB0aGVpciBvcmRlcgorCQkJCXN0ciArPSB3b3Jkc19hcnJbIHdvcmRzX2Fyci5sZW5ndGggLSBpIC0gMSBdOworCQkJcmV0dXJuIHN0cjsKKwkJXV0+CisJPC9tZXRob2Q+CisJCQorCTxtZXRob2QgbmFtZT0iYXBwbHlEYXRhIiBhcmdzPSJydGxfc3RyIj4KKwkJdGhpcy5zZXRBdHRyaWJ1dGUoJ3RleHQnLCByZXZlcnNlV29yZHMoIHJ0bF9zdHIgKSApOworCTwvbWV0aG9kPgorCQorCTxoYW5kbGVyIG5hbWU9Im9udGV4dCI+CisJCXNldFRleHRBbGlnbigpOworCTwvaGFuZGxlcj4KKwkJCisJPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvdGVzdC9sYXpzbG8tcnRsdGV4dC9ydGxkYXRhLnhtbCBiL1dlYkNvbnRlbnQvc3JjL3Rlc3QvbGF6c2xvLXJ0bHRleHQvcnRsZGF0YS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQyZjdkNAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL3Rlc3QvbGF6c2xvLXJ0bHRleHQvcnRsZGF0YS54bWwKQEAgLTAsMCArMSw1NiBAQAorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPCEtLSBQZXJzb25zIERhdGEgLS0+Cis8ZGF0YXNldCBuYW1lPSJwZXJzb25zRGF0YSI+CisJPG15WE1MPgorICAgIDxwZXJzb24+CisgICAgICAgIDxuYW1lPteQ16jXmdeQ15wg16nXqNeV1588L25hbWU+CisgICAgICAgIDx0aXRsZT7XqNeQ16kg15TXntee16nXnNeUPC90aXRsZT4KKyAgICA8L3BlcnNvbj4KKyAgICA8cGVyc29uPgorICAgICAgICA8bmFtZT7XktecINek16jXmdeT157XnzwvbmFtZT4KKyAgICAgICAgPHRpdGxlPtee15PXnNeZ16HXmCDXkNeV15zXmdee16TXmTwvdGl0bGU+CisgICAgPC9wZXJzb24+CisgICAgIDxwZXJzb24+CisgICAgICAgIDxuYW1lPtek15nXoNeZINeS16jXqdeV1588L25hbWU+CisgICAgICAgIDx0aXRsZT7XnteQ157XnyDXnteb15HXmSDXqtecLdeQ15HXmdeRPC90aXRsZT4KKyAgICA8L3BlcnNvbj4KKyAgICA8cGVyc29uPgorICAgICAgICA8bmFtZT7Xqdeo15kg15DXqNeZ16HXldefPC9uYW1lPgorICAgICAgICA8dGl0bGU+157Xmdec15nXkNeo15PXqNeZ16o8L3RpdGxlPgorICAgIDwvcGVyc29uPgorICAgIDxwZXJzb24+CisgICAgICAgIDxuYW1lPtep15zXnteUINeQ16jXpteZPC9uYW1lPgorICAgICAgICA8dGl0bGU+15bXnteoPC90aXRsZT4KKyAgICA8L3BlcnNvbj4KKyAgICA8cGVyc29uPgorICAgICAgICA8bmFtZT7XnteZ16fXmSDXkdeo16fXldeR15nXpTwvbmFtZT4KKyAgICAgICAgPHRpdGxlPteb15PXldeo16HXnNefINei15HXqDwvdGl0bGU+CisgICAgPC9wZXJzb24+CisgICAgPHBlcnNvbj4KKyAgICAgICAgPG5hbWU+15nXldeh15kg15HXoNeZ15XXnzwvbmFtZT4KKyAgICAgICAgPHRpdGxlPtep15fXp9efINeb15PXldeo15LXnDwvdGl0bGU+CisgICAgPC9wZXJzb24+CisgICA8cGVyc29uPgorICAgICAgICA8bmFtZT7XkdeZ15wg15LXmdeZ15jXoTwvbmFtZT4KKyAgICAgICAgPHRpdGxlPteR16LXnCDXl9eR16jXqiDXnteZ16fXqNeV16HXldek15g8L3RpdGxlPgorICAgIDwvcGVyc29uPgorCTwvbXlYTUw+Cis8L2RhdGFzZXQ+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy90ZXN0L2xhenNsby1ydGx0ZXh0L3Rlc3QubHp4IGIvV2ViQ29udGVudC9zcmMvdGVzdC9sYXpzbG8tcnRsdGV4dC90ZXN0Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzI5MzJkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvdGVzdC9sYXpzbG8tcnRsdGV4dC90ZXN0Lmx6eApAQCAtMCwwICsxLDQyIEBACis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8Y2FudmFzIGRlYnVnPSJmYWxzZSI+ICAgICAKKworCTwhLS0gREFUQVNFVFMgLS0+CisJPGluY2x1ZGUgaHJlZj0icnRsZGF0YS54bWwiLz4KKworCTwhLS0gUkVTT1VSQ0VTIFtGT05UU10gLS0+CisgIDxpbmNsdWRlIGhyZWY9InJlc291cmNlcy5sengiLz4gCisKKwk8IS0tIFJUTFRFWFQgQ0xBU1MgREVGSU5JVElPTiAtLT4KKyAgPGluY2x1ZGUgaHJlZj0icnRsVGV4dC5sengiLz4gCisKKwkKKwk8dmlldyB4PSIyMDAiIHk9IjIwIj4KKyAgICA8c2ltcGxlbGF5b3V0IGF4aXM9InkiIC8+CisgICAgPHZpZXcgZGF0YXBhdGg9InBlcnNvbnNEYXRhOi9teVhNTFsxXS9wZXJzb24iIHdpZHRoPSIzMDAiIGJnY29sb3I9IiNjY2NjY2MiPgorICAgICAgPHNpbXBsZWxheW91dCBheGlzPSJ5IiAvPgorICAgIAk8cnRsVGV4dCBuYW1lPSJ0eHROYW1lIiB0ZXh0QWxpZ249ImNlbnRlciIgZm9udHNpemU9IjEwIiBmb250PSJkZWZhdWx0IiBmb250c3R5bGU9ImJvbGQiIGRhdGFwYXRoPSJuYW1lL3RleHQoKSIvPgorICAgIAk8cnRsVGV4dCBuYW1lPSJ0eHRUaXRsZSIgZm9udHNpemU9IjEwIiBmb250PSJkZWZhdWx0IiBkYXRhcGF0aD0idGl0bGUvdGV4dCgpIi8+IAorICAgIAk8dGV4dD48L3RleHQ+CisgICAgPC92aWV3PgorICA8L3ZpZXc+CisKKzwvY2FudmFzPgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvdGVzdC9saWIvbGlicmFyeS5senggYi9XZWJDb250ZW50L3NyYy90ZXN0L2xpYi9saWJyYXJ5Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjRhZDAyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvdGVzdC9saWIvbGlicmFyeS5sengKQEAgLTAsMCArMSwyNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKyAgICAKKyAgICA8aW5jbHVkZSBocmVmPSJuZXh0QnV0dG9uLmx6eCIgLz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvdGVzdC9saWIvbmV4dEJ1dHRvbi5senggYi9XZWJDb250ZW50L3NyYy90ZXN0L2xpYi9uZXh0QnV0dG9uLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODg1MjMwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvdGVzdC9saWIvbmV4dEJ1dHRvbi5sengKQEAgLTAsMCArMSwzNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9Im5leHRCdXR0b24iIGV4dGVuZHM9ImJ1dHRvbiIgb25jbGljaz0iY2hhbmdlTmV4dFRhYnBhbmUoKSI+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJhbGlnbiIgdmFsdWU9InJpZ2h0IiAvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0iaXNkZWZhdWx0IiB2YWx1ZT0idHJ1ZSIgLz4KKworCTxhdHRyaWJ1dGUgbmFtZT0ibmV4dFRhYnBhbmUiIHJlcXVpcmVkPSJ0cnVlIiAvPgorCisgICAgPG1ldGhvZCBuYW1lPSJjaGFuZ2VOZXh0VGFicGFuZSI+CisgICAgICB2YXIgb2JqZWN0ID0gdGhpcy5nZXRBdHRyaWJ1dGUoJ25leHRUYWJwYW5lJyk7CisgICAgICBvYmplY3Quc2V0QXR0cmlidXRlKCJzZWxlY3RlZCIsInRydWUiKTsKKyAgICA8L21ldGhvZD4KKworPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvdGVzdC9tYWluLmx6eCBiL1dlYkNvbnRlbnQvc3JjL3Rlc3QvbWFpbi5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI3ODRkYQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL3Rlc3QvbWFpbi5sengKQEAgLTAsMCArMSwxMjggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+CisKKzxjYW52YXMgZGVidWc9InRydWUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZvbnRzaXplPSIxNCIgdGl0bGU9Ik9wZW5NZWV0aW5ncyAtIENvbXB1dGVyIHRlc3RpbmciPgorCQorCTxkZWJ1ZyBmb250c2l6ZT0iMTQiIG9uaW5pdD0iRGVidWcuc2hvd0ludGVybmFsUHJvcGVydGllcyA9IHRydWUiLz4KKworPGluY2x1ZGUgaHJlZj0ibGFuZy9lbi5sengiLz4KKworPGluY2x1ZGUgaHJlZj0ibGliLyIvPgorPGluY2x1ZGUgaHJlZj0iY29udGVudC8iLz4KKworICAgICAgICAgICAgPHRhYnMgbmFtZT0ibWFpblRhYnMiPgorICAgICAgICAgICAgICAgPHRhYnBhbmUgc2VsZWN0ZWQ9InRydWUiIHRleHQ9IiR7bWVzcy5ob21lfSI+CisJCQkJCTxzaW1wbGVsYXlvdXQgYXhpcz0ieSIgc3BhY2luZz0iNSIvPgorICAgICAgICAgICAgICAgICAgICA8dGV4dCB0ZXh0PSIke21lc3Mud2VsY29tZX0iIG11bHRpbGluZT0idHJ1ZSIgd2lkdGg9IiR7dGhpcy5wYXJlbnQud2lkdGggLSAyMH0iIC8+CisgICAgICAgICAgICAgICAgICAgIDxuZXh0QnV0dG9uIG5leHRUYWJwYW5lPSIke3RoaXMucGFyZW50LnBhcmVudC5zb3VuZFRhYn0iIHRleHQ9IiR7bWVzcy5uZXh0fSIgLz4KKyAgICAgICAgICAgICAgICA8L3RhYnBhbmU+CisKKyAgICAgICAgICAgICAgICA8dGFicGFuZSB0ZXh0PSIke21lc3Muc291bmR9IiBuYW1lPSJzb3VuZFRhYiIgb25zZWxlY3Q9Ii8vRGVidWcud3JpdGUoJ2ZvY3VzJyk7IGF1ZGlvcGxheWVyLnBsYXkoKTsiPgorCQkJCQkKKwkJCQkJPCEtLSBkZWZpbmUgY29udGVudCBhcmVhcyB3aGljaCBhcmUgCisJCQkJCQlraW5kIG9mIGNvbXBvbmVudCBpbiBjbGFzc2VzIC0tPgorCQkJCQkgPGF1ZGlvVGVzdCBuYW1lPSJfYXVkaW90ZXN0IiAvPgorCQkJCQkKKyAgICAgICAgICAgICAgICA8L3RhYnBhbmU+ICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIDx0YWJwYW5lIHRleHQ9IiR7bWVzcy5taWNyb30iIG5hbWU9Im1pY3JvVGFiIj4KKwkJCQkJPHNpbXBsZWxheW91dCBheGlzPSJ5IiBzcGFjaW5nPSI1Ii8+CisgICAgICAgICAgICAgICAgICAgIDx0ZXh0IHRleHQ9IiR7bWVzcy5taWNyb1JlY29yZH0iIG11bHRpbGluZT0idHJ1ZSIgd2lkdGg9IiR7dGhpcy5wYXJlbnQud2lkdGggLSAyMH0iIC8+CisJCQkJCSAgICAgICAgPHZpZXc+CisJCQkJCSAgICAgICAgICAgIDxzaW1wbGVsYXlvdXQgYXhpcz0ieCIgc3BhY2luZz0iLTEiLz4KKwkJCQkJICAgICAgICAgICA8YnV0dG9uIHdpZHRoPSI0MCIgb25jbGljaz0iYXVkaW9wbGF5ZXIuc3RvcCgpIj4KKwkJCQkJICAgICAgICAgICAgICAgIDx2aWV3IHJlc291cmNlPSJyZXNvdXJjZXMvcGxheS5wbmciIHk9IjYiIGFsaWduPSJjZW50ZXIiLz4KKwkJCQkJICAgICAgICAgICAgPC9idXR0b24+CisJCQkJCSAgICAgICAgICAgIDxidXR0b24gd2lkdGg9IjQwIiBvbmNsaWNrPSJhdWRpb3BsYXllci5wbGF5KCkiPgorCQkJCQkgICAgICAgICAgICAgICAgPHZpZXcgcmVzb3VyY2U9InJlc291cmNlcy9yZWNvcmQucG5nIiB5PSI1IiBhbGlnbj0iY2VudGVyIi8+CisJCQkJCSAgICAgICAgICAgIDwvYnV0dG9uPgorCQkJCQkgICAgICAgIDwvdmlldz4KKwkJCQkJICAgICAgICAKKwkJCQkJICAgICAgICA8dmlldz4KKwkJCQkJICAgICAgICAgICAgPHNpbXBsZWxheW91dCBheGlzPSJ4IiBzcGFjaW5nPSItMSIvPgorCQkJCQkgICAgICAgICAgICA8YnV0dG9uIHdpZHRoPSI0MCIgb25jbGljaz0iYXVkaW9wbGF5ZXIuc2V0Vm9sdW1lKCBhdWRpb3BsYXllci5nZXRWb2x1bWUoKSAtMTApIj4KKwkJCQkJICAgICAgICAgICAgICAgICAgICAtPHZpZXcgcmVzb3VyY2U9InJlc291cmNlcy9taXhfdm9sdW1lLnBuZyIgeT0iNSIgYWxpZ249InJpZ2h0Ii8+CisJCQkJCSAgICAgICAgICAgICAgICA8L2J1dHRvbj4KKwkJCQkJICAgICAgICAgICAgPGJ1dHRvbiB3aWR0aD0iNDAiIG9uY2xpY2s9ImF1ZGlvcGxheWVyLnNldFZvbHVtZSggYXVkaW9wbGF5ZXIuZ2V0Vm9sdW1lKCkgKzEwKSI+CisJCQkJCSAgICAgICAgICAgICAgICAgICAgKzx2aWV3IHJlc291cmNlPSJyZXNvdXJjZXMvbWl4X3ZvbHVtZS5wbmciIHk9IjUiIGFsaWduPSJyaWdodCIvPgorCQkJCQkgICAgICAgICAgICAgICAgPC9idXR0b24+CisJCQkJCSAgICAgICAgPC92aWV3PgorICAgICAgICAgICAgICAgICAgICA8bmV4dEJ1dHRvbiBuZXh0VGFicGFuZT0iJHt0aGlzLnBhcmVudC5wYXJlbnQud2ViY2FtVGFifSIgdGV4dD0iJHttZXNzLm5leHR9IiAvPgorICAgICAgICAgICAgICAgIDwvdGFicGFuZT4gICAgICAgICAgICAgICAgCisKKyAgICAgICAgICAgICAgICA8dGFicGFuZSB0ZXh0PSIke21lc3Mud2ViY2FtfSIgbmFtZT0id2ViY2FtVGFiIj4KKwkJCQkJPHNpbXBsZWxheW91dCBheGlzPSJ5IiBzcGFjaW5nPSI1Ii8+CisgICAgICAgICAgICAgICAgICAgIDx0ZXh0IHRleHQ9IiR7bWVzcy53ZWJjYW1UZXh0fSIgbXVsdGlsaW5lPSJ0cnVlIiB3aWR0aD0iJHt0aGlzLnBhcmVudC53aWR0aCAtIDIwfSIgLz4KKwkJPHZpZXcgaWQ9InYxIiBsYXlvdXQ9ImF4aXM6eTsgc3BhY2luZzo0Ij4KKwkJCTx2aWRlb3ZpZXcgaWQ9ImxpdmUiIHR5cGU9InJ0bXAiIHN0cmVhbT0iJG9uY2V7Y2FudmFzLnMxfSIgd2lkdGg9IjI0MCIgaGVpZ2h0PSIxNjAiPgorCQkJCTxjYW1lcmEgaWQ9ImNhbSIgc2hvdz0idHJ1ZSIgZnBzPSIyMCIgd2lkdGg9IjI0MCIgaGVpZ2h0PSIxNjAiIAorCQkJCQkJCQkJCQkJCQkJCXBpY3R1cmVxdWFsaXR5PSIwIi8+CisJCQkJPG1pY3JvcGhvbmUgaWQ9Im1pYyIgY2FwdHVyaW5nPSJmYWxzZSIvPgorCQkJCQorCQkJPC92aWRlb3ZpZXc+CisJCTwvdmlldz4gICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICA8bmV4dEJ1dHRvbiBuZXh0VGFicGFuZT0iJHt0aGlzLnBhcmVudC5wYXJlbnQubWVzc1RhYn0iIHRleHQ9IiR7bWVzcy5uZXh0fSIgLz4KKyAgICAgICAgICAgICAgICA8L3RhYnBhbmU+ICAgICAgICAgICAgICAgIAorCisgICAgICAgICAgICAgICAgPHRhYnBhbmUgdGV4dD0iJHttZXNzLmJhbmR3aWR0aH0iIG5hbWU9Im1lc3NUYWIiPgorCQkJCQk8c2ltcGxlbGF5b3V0IGF4aXM9InkiIHNwYWNpbmc9IjUiLz4KKyAgICAgICAgICAgICAgICAgICAgPHRleHQgdGV4dD0iJHttZXNzLmJhbmR3aWR0aFRleHR9IiBtdWx0aWxpbmU9InRydWUiIHdpZHRoPSIke3RoaXMucGFyZW50LndpZHRoIC0gMjB9IiAvPgorICAgICAgICAgICAgICAgICAgICA8bmV4dEJ1dHRvbiBuZXh0VGFicGFuZT0iJHt0aGlzLnBhcmVudC5wYXJlbnQubGF0ZW5jeVRhYn0iIHRleHQ9IiR7bWVzcy5uZXh0fSIgLz4KKyAgICAgICAgICAgICAgICA8L3RhYnBhbmU+ICAgICAgICAgICAgICAgIAorCisgICAgICAgICAgICAgICAgPHRhYnBhbmUgdGV4dD0iJHttZXNzLmxhdGVuY3l9IiBuYW1lPSJsYXRlbmN5VGFiIj4KKwkJCQkJPHNpbXBsZWxheW91dCBheGlzPSJ5IiBzcGFjaW5nPSI1Ii8+CisgICAgICAgICAgICAgICAgICAgIDx0ZXh0IHRleHQ9IiR7bWVzcy5sYXRlbmN5VGV4dH0iIG11bHRpbGluZT0idHJ1ZSIgd2lkdGg9IiR7dGhpcy5wYXJlbnQud2lkdGggLSAyMH0iIC8+CisgICAgICAgICAgICAgICAgICAgIDxuZXh0QnV0dG9uIG5leHRUYWJwYW5lPSIke3RoaXMucGFyZW50LnBhcmVudC5zeW50aGVzaXNUYWJ9IiB0ZXh0PSIke21lc3MubmV4dH0iIC8+CisgICAgICAgICAgICAgICAgPC90YWJwYW5lPiAgICAgICAgICAgICAgICAKKworICAgICAgICAgICAgICAgIDx0YWJwYW5lIHRleHQ9IiR7bWVzcy5zeW50aGVzaXN9IiBuYW1lPSJzeW50aGVzaXNUYWIiPgorCQkJCQk8c2ltcGxlbGF5b3V0IGF4aXM9InkiIHNwYWNpbmc9IjUiLz4KKyAgICAgICAgICAgICAgICAgICAgPHRleHQgdGV4dD0iJHttZXNzLnN5bnRoZXNpc1RleHR9IiBtdWx0aWxpbmU9InRydWUiIHdpZHRoPSIke3RoaXMucGFyZW50LndpZHRoIC0gMjB9IiAvPgorICAgICAgICAgICAgICAgIDwvdGFicGFuZT4gICAgICAgICAgICAgICAgCisgICAgICAgICAgICA8L3RhYnM+CisKKwkKKwk8cnRtcGNvbm5lY3Rpb24gc3JjPSJydG1wOi8vMTkyLjE2OC4wLjEvJytjYW52YXMud2ViQXBwUm9vdEtleSsnL3Rlc3QiIGF1dG9jb25uZWN0PSJ0cnVlIi8+CisJPG1lZGlhc3RyZWFtIG5hbWU9InMxIiB0eXBlPSJydG1wIi8+CisJPG1lZGlhc3RyZWFtIG5hbWU9InMyIiB0eXBlPSJydG1wIi8+CisJPHNpbXBsZWxheW91dC8+CisKKzwhLS0JCisJPHRleHQgbXVsdGlsaW5lPSJ0cnVlIiB3aWR0aD0iMTAwJSI+IEluc3RydWN0aW9uczoKKwkJPGJyLz4gMS4gRWl0aGVyIHJ1biBhIGZsYXNoIG1lZGlhIHNlcnZlciBvbiBsb2NhbGhvc3QgKDEyNy4wLjAuMSksIG9yIHNzaCB0dW5uZWwgdG8gYQorCQltZWRpYSBzZXJ2ZXIgYXQgYSBrbm93biBob3N0CisJCTxici8+IDIuIFByZXNzIHRoZSBicm9hZGNhc3QgYnV0dG9uLiAoR3JhbnQgY2FtZXJhIGFjY2VzcyBwZXJtaXNzaW9uIGlmIG5lZWRlZC4pIFRoZQorCQlidXR0b24gc2hvdWxkIGNoYW5nZSB0byBzYXkgInN0b3AgYnJvYWRjYXN0aW5nIgorCQk8YnIvPiAzLiBQcmVzcyB0aGUgcmVjZWl2ZSBidXR0b24uIFlvdSBzaG91bGQgYmUgcmVjZWl2aW5nIGF1ZGlvIGFuZCB2aWRlbyBmcm9tCisJCXlvdXJzZWxmIGFuZCB0aGUgYnV0dG9uIHNob3VsZCBzYXkgInN0b3AgcmVjZWl2aW5nLiIKKwkJPGJyLz4gNC4gVHJ5IG91dCB0aGUgYXVkaW8gYW5kIHZpZGVvIG11dGUgYnV0dG9ucy4gVGhlIHZpZGVvIG11dGUgc2hvdWxkIGZyZWV6ZSB0aGUKKwkJcmVjZWl2ZWQgcGljdHVyZS4gVGhlIGF1ZGlvIG11dGUgc2hvdWxkIHNpbGVuY2UgdGhlIHJlY2VpdmVkIHNvdW5kLgorCQk8YnIvPiA1LiBQcmVzcyB0aGUgcmVjZWl2ZSBidXR0b24uIFRoZSByZWNlaXZlZCB2aWRlbyBzaG91bGQgZnJlZXplIGFuZCB0aGUgYnV0dG9uCisJCXNob3VsZCBzYXkgInN0b3AgcmVjZWl2aW5nIi4KKwkJPGJyLz4gNi4gUHJlc3MgdGhlIHJlY2VpdmUgYnV0dG9uIGFnYWluLiBUaGUgdmlkZW8gc2hvdWxkIHJlc3VtZSBhbmQgdGhlIGJ1dHRvbiBzaG91bGQKKwkJc2F5ICJyZWNlaXZpbmciLgorCQk8YnIvPiA3LiBQcmVzcyB0aGUgYnJvYWRjYXN0IGJ1dHRvbi4gVGhlIHJlY2VpdmVkIHZpZGVvIHNob3VsZCBmcmVlemUgYW5kIHRoZSBidXR0b24KKwkJc2hvdWxkIHNheSAiYnJvYWRjYXN0Ii48YnIvPiA8YnIvPiBUaGUgaW5kaWNhdG9yIGJlbG93IHNob3dzIHRoZSBzdGF0dXMgb2YgdGhlIHZpZGVvCisJCWNvbm5lY3Rpb24uCisJCTwvdGV4dD4KKy0tPgkKKzwvY2FudmFzPgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvdGVzdC9wYWdlL21haW4ubHp4IGIvV2ViQ29udGVudC9zcmMvdGVzdC9wYWdlL21haW4ubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwNTA4OGYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy90ZXN0L3BhZ2UvbWFpbi5sengKQEAgLTAsMCArMSwzNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxjYW52YXMgZGVidWc9InRydWUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIAorCQlmb250c2l6ZT0iMTQiIHRpdGxlPSJPcGVuTWVldGluZ3MgLSBDb21wdXRlciB0ZXN0aW5nIj4KKworICAgIDxpbWFnZSBuYW1lPSJfaW1hZ2UiIHNyYz0i0JTQvtCx0YDRi9C4zIbQtNC10L3RjC5qcGciIC8+CisgICAgCisgICAgPGJ1dHRvbiB0ZXh0PSJsb2FkSW1hZ2UyIj4KKyAgICAJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgCQk8IVtDREFUQVsKKyAgICAJCSAgIAorICAgIAkgICAgXV0+CisgICAgCTwvaGFuZGxlcj4KKyAgICA8L2J1dHRvbj4KKyAgICAKKworPC9jYW52YXM+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy90ZXN0L3BhZ2UvbWFpbi5senguc3dmOC5zd2YgYi9XZWJDb250ZW50L3NyYy90ZXN0L3BhZ2UvbWFpbi5senguc3dmOC5zd2YKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2ZkN2IwMQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL3Rlc3QvcGFnZS9tYWluLmx6eC5zd2Y4LnN3ZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy90ZXN0L3BhZ2UvdGVzdC5qcGcgYi9XZWJDb250ZW50L3NyYy90ZXN0L3BhZ2UvdGVzdC5qcGcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTFkNWU4MAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL3Rlc3QvcGFnZS90ZXN0LmpwZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy90ZXN0L3JlZ2V4cC5qc3AgYi9XZWJDb250ZW50L3NyYy90ZXN0L3JlZ2V4cC5qc3AKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2RhNTY4ZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL3Rlc3QvcmVnZXhwLmpzcApAQCAtMCwwICsxLDkyIEBACis8JUAgcGFnZSBsYW5ndWFnZT0iamF2YSIgY29udGVudFR5cGU9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIKKyAgICBwYWdlRW5jb2Rpbmc9IlVURi04IiU+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KKzxodG1sPgorPGhlYWQ+CisJPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgiIC8+CisJPHRpdGxlPk9wZW5NZWV0aW5nczwvdGl0bGU+DQorCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InN3Zm9iamVjdC5qcyI+PC9zY3JpcHQ+DQorCTxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+DQorCQkNCisJCS8qIGhpZGUgZnJvbSBpZSBvbiBtYWMgXCovDQorCQlodG1sIHsNCisJCQloZWlnaHQ6IDEwMCU7DQorCQkJb3ZlcmZsb3c6IGhpZGRlbjsNCisJCX0NCisJCQ0KKwkJI2ZsYXNoY29udGVudCB7DQorCQkJaGVpZ2h0OiAxMDAlOw0KKwkJfQ0KKwkJLyogZW5kIGhpZGUgKi8NCisJDQorCQlib2R5IHsNCisJCQloZWlnaHQ6IDEwMCU7DQorCQkJbWFyZ2luOiAwOw0KKwkJCXBhZGRpbmc6IDA7DQorCQkJYmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjsNCisJCX0NCisJDQorCTwvc3R5bGU+DQorCTxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iZmF2aWNvbi5pY28iPiANCisJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KKwkJZnVuY3Rpb24gcmVNYXRjaChzdHIsIHJlZyl7DQorCQkJdmFyIHMgPSB1bmVzY2FwZShzdHIpOw0KKwkJCXZhciByZSA9IG5ldyBSZWdFeHAoZXZhbCh1bmVzY2FwZShyZWcpKSk7DQorCQkJcmV0dXJuIHMucmVwbGFjZShyZSx1bmVzY2FwZShyZXApKTsNCisJCX0NCisJPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBhbGlnbj0iY2VudGVyIiB2YWxpZ249Im1pZGRsZSIgYWxpZ249ImNlbnRlciIgb25Mb2FkPSJmb2N1c1NXRigpIj4NCisNCisNCisJPGRpdiBpZD0iZmxhc2hjb250ZW50Ij4NCisJCTxzdHJvbmc+WW91IG5lZWQgdG8gdXBncmFkZSB5b3VyIEZsYXNoIFBsYXllcjwvc3Ryb25nPg0KKwkJVGhpcyBpcyByZXBsYWNlZCBieSB0aGUgRmxhc2ggY29udGVudC4gDQorCQlQbGFjZSB5b3VyIGFsdGVybmF0ZSBjb250ZW50IGhlcmUgYW5kIHVzZXJzIHdpdGhvdXQgdGhlIEZsYXNoIHBsdWdpbiBvciB3aXRoIA0KKwkJSmF2YXNjcmlwdCB0dXJuZWQgb2ZmIHdpbGwgc2VlIHRoaXMuIENvbnRlbnQgaGVyZSBhbGxvd3MgeW91IHRvIGxlYXZlIG91dCA8Y29kZT5ub3NjcmlwdDwvY29kZT4gDQorCQl0YWdzLg0KKwk8L2Rpdj4NCisJDQorCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCisJCS8vIDwhW0NEQVRBWw0KKwkJDQorCQl2YXIgc28gPSBuZXcgU1dGT2JqZWN0KCJ0ZXN0LXJlZ0V4cDIubHp4P2x6dD1zd2YmbHpyPXN3ZjgiLCAibHphcHAiLCAiMTAwJSIsICIxMDAlIiwgIjgiLCAiI2ZmZmZmZiIpOw0KKwkJc28uYWRkUGFyYW0oInF1YWxpdHkiLCAiaGlnaCIpOw0KKwkJc28uYWRkUGFyYW0oImlkIiwgImx6YXBwIik7DQorCQlzby5hZGRQYXJhbSgiYWxsb3dTY3JpcHRBY2Nlc3MiLCAiYWx3YXlzIik7DQorCQlzby5hZGRQYXJhbSgic2NhbGUiLCAibm9zY2FsZSIpOw0KKwkJc28ud3JpdGUoImZsYXNoY29udGVudCIpOw0KKwkJDQorCQlmdW5jdGlvbiBmb2N1c1NXRigpew0KKwkJDQorCQkgICAgaWYobmF2aWdhdG9yLnBsdWdpbnMmJm5hdmlnYXRvci5taW1lVHlwZXMmJm5hdmlnYXRvci5taW1lVHlwZXMubGVuZ3RoKXsNCisJCSAgICB9ZWxzZSB7DQorCQkgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsemFwcCcpLmZvY3VzKCk7DQorCQkgICAgfQ0KKwkJfSAgIAkJDQorCQkNCisJCS8vIF1dPg0KKwk8L3NjcmlwdD4JDQorDQorDQorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL3Rlc3QvcmVzb3VyY2VzL2F1ZGlvX3NjcnViYmVyLnBuZyBiL1dlYkNvbnRlbnQvc3JjL3Rlc3QvcmVzb3VyY2VzL2F1ZGlvX3NjcnViYmVyLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTFkYTAxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvdGVzdC9yZXNvdXJjZXMvYXVkaW9fc2NydWJiZXIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL3Rlc3QvcmVzb3VyY2VzL2F1ZGlvX3NjcnVidHJhY2sucG5nIGIvV2ViQ29udGVudC9zcmMvdGVzdC9yZXNvdXJjZXMvYXVkaW9fc2NydWJ0cmFjay5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWU3MDI5YgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL3Rlc3QvcmVzb3VyY2VzL2F1ZGlvX3NjcnVidHJhY2sucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL3Rlc3QvcmVzb3VyY2VzL21peF92b2x1bWUucG5nIGIvV2ViQ29udGVudC9zcmMvdGVzdC9yZXNvdXJjZXMvbWl4X3ZvbHVtZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTAxMDEyNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL3Rlc3QvcmVzb3VyY2VzL21peF92b2x1bWUucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL3Rlc3QvcmVzb3VyY2VzL25leHQucG5nIGIvV2ViQ29udGVudC9zcmMvdGVzdC9yZXNvdXJjZXMvbmV4dC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTVmYzU2OAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL3Rlc3QvcmVzb3VyY2VzL25leHQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL3Rlc3QvcmVzb3VyY2VzL3BsYXkucG5nIGIvV2ViQ29udGVudC9zcmMvdGVzdC9yZXNvdXJjZXMvcGxheS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQxZmEyYgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL3Rlc3QvcmVzb3VyY2VzL3BsYXkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL3Rlc3QvcmVzb3VyY2VzL3JlY29yZC5wbmcgYi9XZWJDb250ZW50L3NyYy90ZXN0L3Jlc291cmNlcy9yZWNvcmQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxZWIxNTAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy90ZXN0L3Jlc291cmNlcy9yZWNvcmQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL3Rlc3QvcmVzb3VyY2VzL3N0b3AucG5nIGIvV2ViQ29udGVudC9zcmMvdGVzdC9yZXNvdXJjZXMvc3RvcC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjgyYzMyMgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL3Rlc3QvcmVzb3VyY2VzL3N0b3AucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL3Rlc3Qvc2Nyb2xsZWRpdHRleHQubHp4IGIvV2ViQ29udGVudC9zcmMvdGVzdC9zY3JvbGxlZGl0dGV4dC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmM2NGFjNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL3Rlc3Qvc2Nyb2xsZWRpdHRleHQubHp4CkBAIC0wLDAgKzEsMTcwIEBACis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworICAgIDxpbmNsdWRlIGhyZWY9ImluY3ViYXRvci9iYXNlZWRpdHRleHQubHp4IiAvPgorICAgIDxpbmNsdWRlIGhyZWY9Imx6L3ZzY3JvbGxiYXIubHp4Ii8+CisKKyAgICA8IS0tLSBJbXBsZW1lbnRzIHZpc3VhbCBiYXNlZWRpdHRleHQgd2l0aCBzY3JvbGxiYXIuIC0tPgorICAgIDxjbGFzcyBuYW1lPSJzY3JvbGxlZGl0dGV4dCIgZXh0ZW5kcz0iYmFzZWVkaXR0ZXh0IiAKKyAgICAgICAgICAgbXVsdGlsaW5lPSJ0cnVlIiBjbGlwPSJ0cnVlIiBoZWlnaHQ9IjEwMCI+CisKKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJib3JkZXIiIHZhbHVlPSIwIiAvPgorICAgICAgICAKKyAgICAgICAgPHZpZXcgbmFtZT0iX2ZhY2UiIGJnY29sb3I9IjB4ZmZmZmZmIiAKKyAgICAgICAgICAgICAgd2lkdGg9IiR7cGFyZW50LndpZHRoLXBhcmVudC5ib3JkZXIqMn0iIAorICAgICAgICAgICAgICBoZWlnaHQ9IiR7cGFyZW50LmhlaWdodC1wYXJlbnQuYm9yZGVyKjJ9IiAKKyAgICAgICAgICAgICAgeD0iJHtwYXJlbnQuYm9yZGVyfSIgeT0iJHtwYXJlbnQuYm9yZGVyfSIvPgorCisgICAgICAgIDxfbmV3aW50ZXJuYWxpbnB1dHRleHQgbmFtZT0iaW5wIiAKKyAgICAgICAgICAgIHg9IiR7cGFyZW50LmJvcmRlcn0iIAorICAgICAgICAgICAgeT0iJHtwYXJlbnQuYm9yZGVyfSIgCisgICAgICAgICAgICBoZWlnaHQ9IiR7cGFyZW50LmhlaWdodCAtIHBhcmVudC5ib3JkZXIgKiAyfSIgCisgICAgICAgICAgICB3aWR0aD0iJHtwYXJlbnQud2lkdGggLSBwYXJlbnQudnNjcm9sbHdpZHRoIC0gcGFyZW50LmJvcmRlcioyfSIKKyAgICAgICAgICAgIHNjcm9sbGV2ZW50cz0idHJ1ZSI+CisgICAgICAgICAgICA8IS0tIFN1cHBsaWVkIGJ5IGx6dGV4dCBub3cKKyAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgbmFtZT0ibGluZWhlaWdodCIKKyAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9IiR7dGhpcy5nZXRUZXh0SGVpZ2h0KCkvdGhpcy5nZXRNYXhTY3JvbGwoKX0iLy0tPgorICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJtYXh0ZXh0aGVpZ2h0IgorICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT0iJHt0aGlzLmxpbmVoZWlnaHQgKiB0aGlzLm1heHNjcm9sbH0iLz4KKyAgICAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ibWF4aGVpZ2h0IiAKKyAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9IiR7dGhpcy5oZWlnaHQgKyB0aGlzLm1heHRleHRoZWlnaHR9Ii8+CisgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9InBvcyIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIvPgorICAgICAgICAgICAgCisgICAgICAgICAgICA8c2V0dGVyIG5hbWU9InBvcyIgYXJncz0icCI+CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuaW5pdGVkKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBzY3JvbGwgPSAxIC0gTWF0aC5mbG9vcihwIC8gdGhpcy5saW5laGVpZ2h0KTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHNjcm9sbCAhPT0gdGhpcy5zY3JvbGwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdzY3JvbGwnLCBzY3JvbGwpOworICAgICAgICAgICAgICAgICAgICAgICAgLy9EZWJ1Zy5pbmZvKCdwb3MnLCBwLCB0aGlzLnNjcm9sbCkKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB0aGlzLnBvcyA9IHA7CisgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLm9ucG9zKSB0aGlzLm9ucG9zLnNlbmRFdmVudChwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICA8L3NldHRlcj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25zY3JvbGwiIGFyZ3M9IklHTk9SRV9USElTX0FSRyI+CisgICAgICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3BvcycsIC10aGlzLmxpbmVoZWlnaHQgKiAodGhpcy5zY3JvbGwgLSAxKSk7CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDwvX25ld2ludGVybmFsaW5wdXR0ZXh0PgorCisgICAgICAgIDwhLS0tIFdpZHRoIHRvIGdpdmUgZm9yIHNjcm9sbGJhcgorICAgICAgICAgICAgICBAa2V5d29yZHMgcHJpdmF0ZSAtLT4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJ2c2Nyb2xsd2lkdGgiIHZhbHVlPSIwIi8+CisgICAgICAgIAorICAgICAgICA8bWV0aG9kIG5hbWU9InNldHZzY3JvbGx3aWR0aGZyb212aXNpYmlsaXR5IiBhcmdzPSJ2Ij4KKyAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJ2c2Nyb2xsd2lkdGgiLCAodiA/IHRoaXMuX3ZzLndpZHRoIDogMCkpOworICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgCis8IS0tCisgICAgICAgIDxvbV92c2Nyb2xsYmFyIG5hbWU9Il92cyIgYXhpcz0ieSIgc2Nyb2xsYXR0cj0icG9zIgorICAgICAgICAgICAgc2Nyb2xsdGFyZ2V0PSJwYXJlbnQuaW5wIgorICAgICAgICAgICAgeD0iJHtwYXJlbnQud2lkdGggLSB0aGlzLndpZHRoIC0gcGFyZW50LmJvcmRlciArIDF9IiAKKyAgICAgICAgICAgIHN0ZXBzaXplPSIke3BhcmVudC5pbnAubGluZWhlaWdodH0iIAorICAgICAgICAgICAgc2Nyb2xsbWF4PSIke3BhcmVudC5pbnAuc2Nyb2xsaGVpZ2h0fSI+CisgICAgICAgIDwvb21fdnNjcm9sbGJhcj4KKy0tPgorCisgICAgICAgIDwhLS0tIE5hbWUgb2YgY2xhc3MgdG8gaW5zdGFudGlhdGUgZm9yIHZlcnRpY2FsIHNjcm9sbCBiYXIuCisgICAgICAgICAgICAgIEBrZXl3b3JkcyBwdWJsaWMgLS0+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0idnNjcm9sbGJhcmNsYXNzbmFtZSIgdHlwZT0ic3RyaW5nIiB2YWx1ZT0idnNjcm9sbGJhciIvPgorICAgICAgICAKKyAgICAgICAgPCEtLS0gT3VyIHZlcnRpY2FsIHNjcm9sbGJhcgorICAgICAgICAgICAgICBAa2V5d29yZHMgcHJpdmF0ZSAtLT4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJfdnMiIHZhbHVlPSJudWxsIi8+CisgICAgICAgIAorICAgICAgICA8IS0tLSBAa2V5d29yZHMgcHJpdmF0ZSAtLT4KKyAgICAgICAgPG1ldGhvZCBuYW1lPSJlbnN1cmV2c2Nyb2xsYmFyIj4KKyAgICAgICAgICAgIGlmICh0aGlzWydfdnMnXSA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgdmFyIGNsYXNzbmFtZSA9IHRoaXMudnNjcm9sbGJhcmNsYXNzbmFtZTsKKyAgICAgICAgICAgICAgICBpZiAoY2xhc3NuYW1lID09ICIiKSB7CisgICAgICAgICAgICAgICAgICAgIGNsYXNzbmFtZSA9ICJ2c2Nyb2xsYmFyIjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgeworICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mKGx6W2NsYXNzbmFtZV0pID09ICJ1bmRlZmluZWQiKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBEZWJ1Zy53YXJuKCJzY3JvbGxiYXJjbGFzc25hbWUgdW5kZWZpbmVkIiwgdGhpcyk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYodHlwZW9mKGx6W2NsYXNzbmFtZV0pICE9ICJ1bmRlZmluZWQiKXsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fdnMgPSBuZXcgbHpbY2xhc3NuYW1lXSh0aGlzLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7IGF4aXM6ICJ5IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjcm9sbGF0dHI6ICJwb3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Nyb2xsbWF4OiAiMCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY3JvbGx0YXJnZXQ6IHRoaXMuaW5wfSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgdmFyIHhEZWwgPSBuZXcgbHouRGVsZWdhdGUodGhpcywgJ3VwZGF0ZVgnKTsKKyAgICAgICAgICAgICAgICAgICAgeERlbC5yZWdpc3Rlcih0aGlzWydfdnMnXSwgJ29ud2lkdGgnKTsKKyAgICAgICAgICAgICAgICAgICAgeERlbC5yZWdpc3Rlcih0aGlzLCAnb253aWR0aCcpOworICAgICAgICAgICAgICAgICAgICB4RGVsLnJlZ2lzdGVyKHRoaXMsICdvbmJvcmRlcicpOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgbmV3IGx6LkRlbGVnYXRlKHRoaXMsICd1cGRhdGVTY3JvbGxNYXgnLCB0aGlzLmlucCwgJ29uc2Nyb2xsaGVpZ2h0Jyk7CisgICAgICAgICAgICAgICAgICAgIG5ldyBsei5EZWxlZ2F0ZSh0aGlzLCAndXBkYXRlU3RlcFNpemUnLCB0aGlzLmlucCwgJ29ubGluZWhlaWdodCcpOworICAgICAgICAgICAgICAgICAgICAvLyBjYWxsIG9uY2UgbWFudWFsbHkKKyAgICAgICAgICAgICAgICAgICAgdGhpcy51cGRhdGVYKCk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMudXBkYXRlU3RlcFNpemUoKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9tZXRob2Q+CisgICAgICAgIAorICAgICAgICA8bWV0aG9kIG5hbWU9InVwZGF0ZVgiIGFyZ3M9IklHTk9SRV9USElTX0FSRyA9IG51bGwiPgorICAgICAgICAgICAgaWYodGhpc1snX3ZzJ10peworICAgICAgICAgICAgICAgIHRoaXMuX3ZzLnNldEF0dHJpYnV0ZSgieCIsIHRoaXMud2lkdGggLSB0aGlzLl92cy53aWR0aCApOworICAgICAgICAgICAgfQorICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgCisgICAgICAgIDxtZXRob2QgbmFtZT0idXBkYXRlU3RlcFNpemUiIGFyZ3M9IklHTk9SRV9USElTX0FSRyA9IG51bGwiPgorICAgICAgICAgICAgaWYodGhpc1snX3ZzJ10peworICAgICAgICAgICAgICAgIHRoaXMuX3ZzLnNldEF0dHJpYnV0ZSgic3RlcHNpemUiLCB0aGlzLmlucC5saW5laGVpZ2h0KTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9tZXRob2Q+CisgICAgICAgIAorICAgICAgICA8bWV0aG9kIG5hbWU9InVwZGF0ZVNjcm9sbE1heCIgYXJncz0iSUdOT1JFX1RISVNfQVJHID0gbnVsbCI+CisgICAgICAgICAgICBpZih0aGlzWydfdnMnXSl7CisgICAgICAgICAgICAgICAgdGhpcy5fdnMuc2V0QXR0cmlidXRlKCJzY3JvbGxtYXgiLCB0aGlzLmlucC5zY3JvbGxoZWlnaHQpOworICAgICAgICAgICAgfQorICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgCisgICAgICAgIDxtZXRob2QgbmFtZT0iaW5pdCI+CisgICAgICAgICAgICBzdXBlci5pbml0KCk7CisgICAgICAgICAgICB0aGlzLmVuc3VyZXZzY3JvbGxiYXIoKTsKKyAgICAgICAgICAgIHNldHZzY3JvbGx3aWR0aGZyb212aXNpYmlsaXR5KHRoaXNbJ192cyddID8gdGhpcy5fdnMudmlzaWJsZSA6IGZhbHNlKTsKKyAgICAgICAgICAgIHRoaXMubXlEZWwgPSBuZXcgbHouRGVsZWdhdGUodGhpcywgInNldHZzY3JvbGx3aWR0aGZyb212aXNpYmlsaXR5IiwgdGhpc1snX3ZzJ10sICJvbnZpc2libGUiKTsKKyAgICAgICAgPC9tZXRob2Q+CisKKyA8IS0tLSBPdmVycmlkZXMgYSBwYXJlbnQgbWV0aG9kIHdoaWNoIGNhbGN1bGF0ZXMgeSBwb3NpdGlvbiBmb3IgdGV4dAorICAgICAgICAgICAgaW4gYSB3YXkgdGhhdCBkb2Vzbid0IG1ha2Ugc2Vuc2UgZm9yIHRoaXMgY2xhc3MuIFdlIGp1c3QgdHJhcCB0aGUgCisgICAgICAgICAgICBjYWxsIGFuZCBkbyBub3RoaW5nLiBUaGlzIGZpZWxkIGlzIHBvc2l0aW9uZWQgaW4geSBieSB0aGUgY29uc3RyYWludAorICAgICAgICAgICAgeT0ke3BhcmVudC5ib3JkZXJ9CisgICAgICAgICAgICBOb3RlOiBhbHRob3VnaCB0aGlzIG1ldGhvZCBpcyBhIG5vLW9wLCBpdCBzdGlsbCBoYXMgdG8gYmUgZGVjbGFyZWQsCisgICAgICAgICAgICBzbyB0aGUgcGFyZW50IGNsYXNzJ3MgbWV0aG9kIGRvZXMgbm90IGdldCBjYWxsZWQgb24gaW5zdGFuY2VzIG9mIAorICAgICAgICAgICAgdGhpcyBjbGFzcy4gCisgICAgICAgIC0tPgorICAgICAgICA8bWV0aG9kIG5hbWU9Il9wbGFjZVRleHRZIj4KKyAgICAgICAgPC9tZXRob2Q+CisKKyAgICA8L2NsYXNzPgorCis8L2xpYnJhcnk+Cis8IS0tICogWF9MWl9DT1BZUklHSFRfQkVHSU4gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisqIENvcHlyaWdodCAyMDA2LTIwMDkgTGFzemxvIFN5c3RlbXMsIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4gICAgICAgICAgICAgICAqCisqIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisqIFhfTFpfQ09QWVJJR0hUX0VORCAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+Cis8IS0tIEBMWlhfVkVSU0lPTkAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL3Rlc3Qvc2ltcGxlYnJvYWRjYXN0Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL3Rlc3Qvc2ltcGxlYnJvYWRjYXN0Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYWRjZjJlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvdGVzdC9zaW1wbGVicm9hZGNhc3QubHp4CkBAIC0wLDAgKzEsOTYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8Y2FudmFzIGRlYnVnPSJ0cnVlIiB3aWR0aD0iMTAwMCIgaGVpZ2h0PSI3MDAiPgorCQorCTxkZWJ1ZyBmb250c2l6ZT0iMTQiIG9uaW5pdD0iRGVidWcuc2hvd0ludGVybmFsUHJvcGVydGllcyA9IHRydWUiLz4KKwkKKwk8cnRtcGNvbm5lY3Rpb24gc3JjPSJydG1wOi8vbWFjYm9vay8nK2NhbnZhcy53ZWJBcHBSb290S2V5KycvaGliZXJuYXRlIiBhdXRvY29ubmVjdD0idHJ1ZSIvPgorCTxtZWRpYXN0cmVhbSBuYW1lPSJzMSIgdHlwZT0icnRtcCIvPgorCTxtZWRpYXN0cmVhbSBuYW1lPSJzMiIgdHlwZT0icnRtcCIvPgorCTxzaW1wbGVsYXlvdXQvPgorCQorCTx0ZXh0IG11bHRpbGluZT0idHJ1ZSIgd2lkdGg9IjEwMCUiPiBJbnN0cnVjdGlvbnM6CisJCTxici8+IDEuIEVpdGhlciBydW4gYSBmbGFzaCBtZWRpYSBzZXJ2ZXIgb24gbG9jYWxob3N0ICgxMjcuMC4wLjEpLCBvciBzc2ggdHVubmVsIHRvIGEKKwkJbWVkaWEgc2VydmVyIGF0IGEga25vd24gaG9zdAorCQk8YnIvPiAyLiBQcmVzcyB0aGUgYnJvYWRjYXN0IGJ1dHRvbi4gKEdyYW50IGNhbWVyYSBhY2Nlc3MgcGVybWlzc2lvbiBpZiBuZWVkZWQuKSBUaGUKKwkJYnV0dG9uIHNob3VsZCBjaGFuZ2UgdG8gc2F5ICJzdG9wIGJyb2FkY2FzdGluZyIKKwkJPGJyLz4gMy4gUHJlc3MgdGhlIHJlY2VpdmUgYnV0dG9uLiBZb3Ugc2hvdWxkIGJlIHJlY2VpdmluZyBhdWRpbyBhbmQgdmlkZW8gZnJvbQorCQl5b3Vyc2VsZiBhbmQgdGhlIGJ1dHRvbiBzaG91bGQgc2F5ICJzdG9wIHJlY2VpdmluZy4iCisJCTxici8+IDQuIFRyeSBvdXQgdGhlIGF1ZGlvIGFuZCB2aWRlbyBtdXRlIGJ1dHRvbnMuIFRoZSB2aWRlbyBtdXRlIHNob3VsZCBmcmVlemUgdGhlCisJCXJlY2VpdmVkIHBpY3R1cmUuIFRoZSBhdWRpbyBtdXRlIHNob3VsZCBzaWxlbmNlIHRoZSByZWNlaXZlZCBzb3VuZC4KKwkJPGJyLz4gNS4gUHJlc3MgdGhlIHJlY2VpdmUgYnV0dG9uLiBUaGUgcmVjZWl2ZWQgdmlkZW8gc2hvdWxkIGZyZWV6ZSBhbmQgdGhlIGJ1dHRvbgorCQlzaG91bGQgc2F5ICJzdG9wIHJlY2VpdmluZyIuCisJCTxici8+IDYuIFByZXNzIHRoZSByZWNlaXZlIGJ1dHRvbiBhZ2Fpbi4gVGhlIHZpZGVvIHNob3VsZCByZXN1bWUgYW5kIHRoZSBidXR0b24gc2hvdWxkCisJCXNheSAicmVjZWl2aW5nIi4KKwkJPGJyLz4gNy4gUHJlc3MgdGhlIGJyb2FkY2FzdCBidXR0b24uIFRoZSByZWNlaXZlZCB2aWRlbyBzaG91bGQgZnJlZXplIGFuZCB0aGUgYnV0dG9uCisJCXNob3VsZCBzYXkgImJyb2FkY2FzdCIuPGJyLz4gPGJyLz4gVGhlIGluZGljYXRvciBiZWxvdyBzaG93cyB0aGUgc3RhdHVzIG9mIHRoZSB2aWRlbworCQljb25uZWN0aW9uLgorCQk8L3RleHQ+CisJPHJ0bXBzdGF0dXMvPgorCTx2aWV3IGxheW91dD0iYXhpczp4OyBpbnNldDoxMDsgc3BhY2luZzoxMCI+CisJCTx2aWV3IGlkPSJ2MSIgbGF5b3V0PSJheGlzOnk7IHNwYWNpbmc6NCI+CisJCQk8dmlkZW92aWV3IGlkPSJsaXZlIiB0eXBlPSJydG1wIiBzdHJlYW09IiRvbmNle2NhbnZhcy5zMX0iIHdpZHRoPSIyNDAiIGhlaWdodD0iMTYwIj4KKwkJCQk8Y2FtZXJhIGlkPSJjYW0iIHNob3c9ImZhbHNlIiBmcHM9IjIwIiB3aWR0aD0iMjQwIiBoZWlnaHQ9IjE2MCIgCisJCQkJCQkJCQkJCQkJCQkJcGljdHVyZXF1YWxpdHk9IjAiLz4KKwkJCQk8bWljcm9waG9uZSBpZD0ibWljIiBjYXB0dXJpbmc9ImZhbHNlIi8+CisJCQkJCisJCQk8L3ZpZGVvdmlldz4KKwkJCTxlZGl0dGV4dCBuYW1lPSJ1c2VybmFtZSI+WW91ck5hbWU8L2VkaXR0ZXh0PgorCQkJPGJ1dHRvbiB0ZXh0PSJicm9hZGNhc3QiPgorCQkJCTxhdHRyaWJ1dGUgbmFtZT0idGV4dCIKKwkJCQkJdmFsdWU9IiR7KHMxLmJyb2FkY2FzdGluZyA9PSBmYWxzZSkgPyAnYnJvYWRjYXN0JyA6ICdzdG9wIGJyb2FkY2FzdGluZyd9Ii8+CisJCQkJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisJCQkJCTwhW0NEQVRBWworICAgICAgICAgICAgICAgICAgICBpZiAoY2FtLnNob3cgPT0gZmFsc2UpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpdmUuc3RyZWFtLnNldEF0dHJpYnV0ZSgndXJsJywgcGFyZW50LnVzZXJuYW1lLnRleHQpOworICAgICAgICAgICAgICAgICAgICAgICAgbGl2ZS5zdHJlYW0uYnJvYWRjYXN0KCk7CisJCQkJCQkJY2FtLnNldEF0dHJpYnV0ZSgnc2hvdycsIHRydWUpOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgbGl2ZS5zdHJlYW0uc3RvcCgpOworICAgICAgICAgICAgICAgICAgICAgICAgY2FtLnNldEF0dHJpYnV0ZSgnc2hvdycsIGZhbHNlKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgXV0+CisJCQkJPC9oYW5kbGVyPgorCQkJPC9idXR0b24+CisJCQkKKwkJCTxjaGVja2JveCBvbnZhbHVlPSJzMS5zZXRBdHRyaWJ1dGUoJ211dGVhdWRpbycsIHZhbHVlKSI+TXV0ZQorCQkJCUF1ZGlvPC9jaGVja2JveD4KKwkJCTxjaGVja2JveCBvbnZhbHVlPSJzMS5zZXRBdHRyaWJ1dGUoJ211dGV2aWRlbycsIHZhbHVlKSI+TXV0ZQorCQkJCVZpZGVvPC9jaGVja2JveD4KKwkJCTxidXR0b24gdGV4dD0iY2hlY2tWYWx1ZXMiPgorCQkJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorCQkJCQkvL0RlYnVnLndyaXRlKCJ0aGlzOiAiLGxpdmUpOworCQkJCQkvL0RlYnVnLndyaXRlKCJ0aGlzOiAiLGNhbSk7CisJCQkJCS8vRGVidWcud3JpdGUoInRoaXM6ICIsY2FtLl9kZXYpOworCQkJCQkvL0RlYnVnLndyaXRlKCJ0aGlzOiAiLG1pYy5fZGV2KTsKKwkJCQk8L2hhbmRsZXI+CisJCQk8L2J1dHRvbj4KKwkJPC92aWV3PgorCQk8dmlldyBpZD0idjIiIGxheW91dD0iYXhpczp5OyBzcGFjaW5nOjQiPgorCQkJPHZpZGVvdmlldyBuYW1lPSJ2aWQiIHR5cGU9InJ0bXAiIHN0cmVhbT0iJG9uY2V7Y2FudmFzLnMyfSIvPgorCQkJPGVkaXR0ZXh0IG5hbWU9InVzZXJuYW1lIj5Zb3VyTmFtZTwvZWRpdHRleHQ+CisJCQk8YnV0dG9uIHRleHQ9IiR7czIucGxheWluZyA/ICdzdG9wIHJlY2VpdmluZycgOiAncmVjZWl2ZSd9IgorCQkJCW9uY2xpY2s9InMyLnNldEF0dHJpYnV0ZSgndXJsJywgcGFyZW50LnVzZXJuYW1lLnRleHQpOworICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzMi5wbGF5aW5nKSBzMi5zdG9wKCk7IGVsc2UgczIucGxheSgpOyIvPgorCQk8L3ZpZXc+CisJPC92aWV3PgorCQorPC9jYW52YXM+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy90ZXN0L3NpbXBsZXRlc3RlZGl0dGV4dC5senggYi9XZWJDb250ZW50L3NyYy90ZXN0L3NpbXBsZXRlc3RlZGl0dGV4dC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWU4MGY5NQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL3Rlc3Qvc2ltcGxldGVzdGVkaXR0ZXh0Lmx6eApAQCAtMCwwICsxLDQwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGNhbnZhcyBoZWlnaHQ9IjQwMCIgZGVidWc9InRydWUiPgorIAorICAgICA8YnV0dG9uIHRleHQ9IlNob3cgdGhlbiBGYWRlIiBvbmNsaWNrPSJjYW52YXMuc2hvd1RleHQoKSIgLz4KKyAgICAgPHRleHQgbmFtZT0ibXlUZXh0IiBvcGFjaXR5PSIwLjAiIGJnY29sb3I9IiNDQ0NDQ0MiPlRoZSBJbnZpc2libGUgTWFuPC90ZXh0PgorICAgICA8c2ltcGxlbGF5b3V0IGF4aXM9InkiIHNwYWNpbmc9IjEwIiAvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0iZmFkZURlbGVnYXRlIiB2YWx1ZT0ibnVsbCIgLz4KKyAKKyAgICAgPG1ldGhvZCBuYW1lPSJzaG93VGV4dCI+CisgICAgICAgICB0aGlzLm15VGV4dC5zZXRBdHRyaWJ1dGUoICJvcGFjaXR5IiwgMS4wICk7CisgICAgICAgICB0aGlzLmZhZGVEZWxlZ2F0ZSA9IG5ldyBMekRlbGVnYXRlKCB0aGlzLCAiZmFkZVRleHQiICk7CisgICAgICAgICBsei5UaW1lci5hZGRUaW1lciggdGhpcy5mYWRlRGVsZWdhdGUsIDMwMDAgKTsKKyAgICAgPC9tZXRob2Q+CisgCisgICAgIDxtZXRob2QgbmFtZT0iZmFkZVRleHQiPgorCQkgLy9EZWJ1Zy53cml0ZSgiZmFkZVRleHQ6ICIsbHouVGltZXIuY291bnRUaW1lcnModGhpcy5mYWRlRGVsZWdhdGUpKTsKKyAgICAgICAgIHRoaXMubXlUZXh0LmFuaW1hdGUoICJvcGFjaXR5IiwgMC4wLCAxMDAwICk7CisgICAgIDwvbWV0aG9kPgorIAorIDwvY2FudmFzPgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvdGVzdC9zaW1wbGV0ZXN0dmFsaWRCb3gubHp4IGIvV2ViQ29udGVudC9zcmMvdGVzdC9zaW1wbGV0ZXN0dmFsaWRCb3gubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyM2RkZmIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy90ZXN0L3NpbXBsZXRlc3R2YWxpZEJveC5sengKQEAgLTAsMCArMSw4MTAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8Y2FudmFzIGhlaWdodD0iNDAwIiBkZWJ1Zz0idHJ1ZSI+CisJCis8aW5jbHVkZSBocmVmPSJsei90ZXh0bGlzdGl0ZW0ubHp4IiAvPgorCQorPHNjcmlwdD4KKzwhW0NEQVRBWworCQorU3RyaW5nLnByb3RvdHlwZS5zdGFydHNXaXRoID0gZnVuY3Rpb24ocHJlZml4KSB7CisgICAgcmV0dXJuICh0aGlzLmluZGV4T2YocHJlZml4KSA9PT0gMCk7Cit9OwkKKwkKK11dPgorPC9zY3JpcHQ+CisJCis8YXR0cmlidXRlIG5hbWU9InN0YXRlc0luaXRWYWx1ZXMiIHZhbHVlPSJudWxsIiAvPgorCQorPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKwk8IVtDREFUQVsKKwkJdmFyIHRDaGFycyA9ICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiI7CisJCXZhciB0Q2hhcnNTbWFsbCA9ICJhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5emFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiI7CisJCQorCQl0aGlzLnN0YXRlc0luaXRWYWx1ZXMgPSBuZXcgQXJyYXkoKTsKKwkJdmFyIG0gPSAwOworCQl3aGlsZSAobTwyMCl7CisJCQlmb3IgKHZhciBpID0gMDtpPDI2O2krKyl7CisJCQkJZm9yICh2YXIgcj0wO3I8MztyKyspeworCQkJCQl2YXIgdCA9IG5ldyBBcnJheSgpOworCQkJCQl0WyJzdGF0ZV9pZCJdID0gaSpyOworCQkJCQl0WyJuYW1lIl0gPSB0Q2hhcnMuY2hhckF0KGkpK3RDaGFyc1NtYWxsLmNoYXJBdCgoIE1hdGgucmFuZG9tKCkqMTAwKSkrdENoYXJzU21hbGwuY2hhckF0KCggTWF0aC5yYW5kb20oKSoxMDApKSt0Q2hhcnNTbWFsbC5jaGFyQXQoKCBNYXRoLnJhbmRvbSgpKjEwMCkpK3RDaGFyc1NtYWxsLmNoYXJBdCgoIE1hdGgucmFuZG9tKCkqMTAwKSkrdENoYXJzU21hbGwuY2hhckF0KCggTWF0aC5yYW5kb20oKSoxMDApKTsKKwkJCQkJdGhpcy5zdGF0ZXNJbml0VmFsdWVzLnB1c2godCk7CisJCQkJfQorCQkJfQorCQkJbSsrOworCQl9CisJCS8vRGVidWcud3JpdGUodGhpcy5zdGF0ZXNJbml0VmFsdWVzKTsKKwkJCisJCXRoaXMuX3ZhbGlkYm94LmFkZEl0ZW0oIkRhIiwiMSIpOworCQl0aGlzLl92YWxpZGJveC5zZWxlY3RJdGVtKCIxIix0cnVlKTsKKwldXT4KKzwvaGFuZGxlcj4KKwkKKzxtZXRob2QgbmFtZT0idmFsaWRhdGVDb3VudHJ5IiBhcmdzPSJzdHIiPgorCS8vRGVidWcud3JpdGUoInZhbGlkYXRlQ291bnRyeTogIixzdHIpOworCTwhW0NEQVRBWworCQlpZiAoc3RyLmxlbmd0aCE9MCl7CisJCQl2YXIgYSA9IG5ldyBBcnJheSgpOworCQkJZm9yICh2YXIgaT0wO2k8Y2FudmFzLnN0YXRlc0luaXRWYWx1ZXMubGVuZ3RoO2krKyl7CisJCQkJaWYgKGNhbnZhcy5zdGF0ZXNJbml0VmFsdWVzW2ldLm5hbWUuc3RhcnRzV2l0aChzdHIpKWEucHVzaChjYW52YXMuc3RhdGVzSW5pdFZhbHVlc1tpXSk7CisJCQkJLy90aGlzLmFkZEl0ZW0oY2FudmFzLnN0YXRlc0luaXRWYWx1ZXNbaV0ubmFtZSxjYW52YXMuc3RhdGVzSW5pdFZhbHVlc1tpXS5zdGF0ZV9pZCk7CisJCQl9CisJCQlyZXR1cm4gYTsKKwkJfQorCV1dPgkKKzwvbWV0aG9kPgkKKwkKKworICAgIDxpbmNsdWRlIGhyZWY9ImJhc2UvYmFzZWZvcm1pdGVtLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJsei9saXN0Lmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJsei9mbG9hdGluZ2xpc3QubHp4IiAvPgorCQorCTxpbmNsdWRlIGhyZWY9Imx6L2NvbWJvYm94Lmx6eCIgLz4KKworICAgIDwhLS0tIEEgZHJvcGRvd24gbGlzdCBvZiBzZWxlY3RhYmxlIGl0ZW1zLiAtLT4KKyAgICA8Y2xhc3MgbmFtZT0iYmFzZVZhbGlkQ29tYm9ib3giIGV4dGVuZHM9ImJhc2Vmb3JtaXRlbSIgZm9jdXNhYmxlPSJmYWxzZSIgd2lkdGg9IjEwMCI+CisgICAgICAgIDwhLS0tIEBrZXl3b3JkcyBwcml2YXRlIC0tPgorICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImRlZmF1bHRwbGFjZW1lbnQiICB2YWx1ZT0iY2JsaXN0IiB0eXBlPSJzdHJpbmciLz4KKworICAgICAgICA8IS0tIGF0dHJpYnV0ZXMgLS0+CisgICAgICAgIDwhLS0tIFRoZSB2YWx1ZSBvZiB0aGUgY29tYm9ib3guIC0tPgorICAgICAgICA8YXR0cmlidXRlIG5hbWU9InZhbHVlIiB2YWx1ZT0iJHtjYmxpc3QudmFsdWV9Ii8+CisKKyAgICAgICAgPCEtLS0gSW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IHRoZSBwb3B1cCBsaXN0IGlzIHNob3dpbmcuICAtLT4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJpc29wZW4iICAgICAgIHZhbHVlPSJmYWxzZSIgIHNldHRlcj0idGhpcy5zZXRPcGVuKGlzb3BlbikiIC8+CisKKyAgICAgICAgPCEtLS0gVGhlIGJvcmRlciBzaXplICggaW4gcGl4ZWxzICkgb2YgdGhlIHBvcHVwIGxpc3QuICAtLT4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJib3JkZXJzaXplIiAgIHZhbHVlPSIxIiAvPgorCisgICAgICAgIDwhLS0tIFRoZSBzcGFjaW5nIHNpemUgKCBpbiBwaXhlbHMgKSBiZXR3ZWVuIGl0ZW1zIGluIHRoZSBwb3AtdXAgbGlzdC4gIC0tPgorICAgICAgICA8YXR0cmlidXRlIG5hbWU9InNwYWNpbmciICAgdmFsdWU9IjAiIC8+CisKKyAgICAgICAgPCEtLS0gVGhlIHRleHQgdGhhdCBhcHBlYXJzIGluIHRoZSB0ZXh0IGZpZWxkIHdoZW4gbm8gaXRlbSBpcyBzZWxlY3RlZC4gLS0+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iZGVmYXVsdHRleHQiICB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisKKyAgICAgICAgPCEtLS0gVGhlIG51bWJlciBvZiB0aGUgaXRlbSB0aGF0IGlzIGluaXRpYWxseSBzZWxlY3RlZC4gVGhpcyBvdmVycmlkZXMKKyAgICAgICAgICAgICAgdGhlIHZhbHVlIGRlZmluZWQgaW4gdGhlIGRlZmF1bHR0ZXh0IGF0dHJpYnV0ZSAtLT4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJkZWZhdWx0c2VsZWN0aW9uIiAgdmFsdWU9Im51bGwiIHR5cGU9Im51bWJlciIgIHNldHRlcj0idGhpcy5zZXREZWZhdWx0U2VsZWN0aW9uKCBkZWZhdWx0c2VsZWN0aW9uICkiLz4KKworICAgICAgICA8IS0tLSBUaGlzIGV2ZW50IGlzIHNlbnQgd2hlbiB0aGUgZGVmYXVsdCBzZWxlY3Rpb24gaXMgc2V0LiAgLS0+CisgICAgICAgIDxldmVudCBuYW1lPSJvbmRlZmF1bHRzZWxlY3Rpb24iIC8+CisKKyAgICAgICAgPCEtLS0gVGhlIGNsYXNzIHRoYXQgaXMgdXNlZCB0byBjcmVhdGUgYW4gaXRlbSBpbiB0aGUgbGlzdCB3aGVuCisgICAgICAgICAgICAgIGl0ZW1kYXRhcGF0aCBpcyBhc3NpZ25lZC4gLS0+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iaXRlbWNsYXNzbmFtZSIgc2V0dGVyPSJ0aGlzLnNldEl0ZW1jbGFzc25hbWUoaXRlbWNsYXNzbmFtZSkiICB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisKKyAgICAgICAgPCEtLS0gU2V0cyB0aGUgaGVpZ2h0IG9mIHRoZSBjb21ib2JveCB0byBzaG93ICduJyBpdGVtcy4gLS0+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ic2hvd25pdGVtcyIgICB2YWx1ZT0iLTEiIC8+CisKKyAgICAgICAgPCEtLS0gQGtleXdvcmRzIHByaXZhdGUgIC0tPgorICAgICAgICA8YXR0cmlidXRlIG5hbWU9Im1vdXNlZG93bmludGV4dCIgdmFsdWU9ImZhbHNlIi8+CisKKyAgICAgICAgPCEtLS0gQGtleXdvcmRzIHByaXZhdGUgIC0tPgorICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImluaXRjb21wbGV0ZSIgdmFsdWU9IjAiIC8+CisKKyAgICAgICAgPCEtLS0gV2hldGhlciBhIHNjcm9sbGJhciBzaG91bGQgYXV0b21hdGljYWxseSBzaG93IHVwIHdoZW4gdGhlcmUgYXJlIG1vcmUKKyAgICAgICAgICAgICAgaXRlbXMgdGhhbiBzaG93bml0ZW1zLiAtLT4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJhdXRvc2Nyb2xsYmFyIiB2YWx1ZT0idHJ1ZSIvPgorCisgICAgICAgIDwhLS0tIFRoZSBpbml0aWFsIHNlbGVjdGVkIGl0ZW0uIC0tPgorICAgICAgICA8YXR0cmlidXRlIG5hbWU9InNlbGVjdGVkIiB2YWx1ZT0ibnVsbCIvPgorCisgICAgICAgIDwhLS0tIFRoaXMgZXZlbnQgaXMgdHJpZ2dlcmVkIHdoZW5ldmVyIHRoZSB1c2VyIG1ha2VzIGEgc2VsZWN0aW9uLiBJdAorICAgICAgICAgICAgICBtYXkgYmUgdXNlZCBhcyBhIHNjcmlwdCBpbiB0aGUgY29tYm9ib3ggdGFnIG9yIGFzIGFuIGV2ZW50IG1ldGhvZC4KKyAgICAgICAgICAgICAgLS0+CisgICAgICAgIDxldmVudCBuYW1lPSJvbnNlbGVjdCIvPgorCisgICAgICAgIDwhLS0tIE9uZSBvZiAibGF6eSIsICJyZXNpemUiLCAicG9vbGluZyIsICJub25lIi4gLS0+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iZGF0YW9wdGlvbiIgdmFsdWU9Im5vbmUiIHR5cGU9InN0cmluZyIvPgorCisgICAgICAgIDwhLS0tIFRoZSB2ZXJ0aWNhbCBvZmZzZXQgb2YgdGhlIGZsb2F0aW5nbGlzdCBhdHRhY2hlZCB0byB0aGlzCisgICAgICAgICAgICAgIGNvbWJvYm94LiAtLT4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJhdHRhY2hvZmZzZXQiIHZhbHVlPSItMSIgdHlwZT0ibnVtYmVyIi8+CisKKyAgICAgICAgPCEtLS0gdGhlIHggcG9zaXRpb24gb2YgdGhlIHRleHQuIGRlZmF1bHQ6IDIgLS0+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0idGV4dF94IiB2YWx1ZT0iMiIgdHlwZT0ibnVtYmVyIi8+CisKKyAgICAgICAgPCEtLS0gdGhlIHkgcG9zaXRpb24gb2YgdGhlIHRleHQuIGRlZmF1bHQ6IDIgLS0+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0idGV4dF95IiB2YWx1ZT0iMiIgdHlwZT0ibnVtYmVyIi8+CisKKyAgICAgICAgPCEtLS0gdGhlIHdpZHRoIHRoZSB0ZXh0LiBkZWZhdWx0OiBjb21ib3dpZHRoIC0gMTkgLS0+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0idGV4dF93aWR0aCIgdmFsdWU9IiR7dGhpcy53aWR0aCAtIDE5fSIgdHlwZT0ibnVtYmVyIi8+CisKKyAgICAgICAgPCEtLS0gVGhlIG1pbmltdW0gd2lkdGggdGhpcyBjb21wb25lbnQgaXMgYWxsb3dlZCB0byBiZS4KKyAgICAgICAgICAgICAgRGVmYXVsdHMgdG8gNTAgcGl4ZWxzLgorICAgICAgICAgICAgICBAa2V5d29yZHMgZGVmYXVsdHNldHRlciAtLT4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJtaW5fd2lkdGgiIHZhbHVlPSI1MCIgdHlwZT0ibnVtYmVyIiAvPgorICAgICAgICAKKyAgICAgICAgPCEtLS0gVGhlIG1ldGhvZCB0byBiZSBjYWxsZWQgZm9yIHZhbGlkYXRpbmcgLS0+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0idmFsaWRhdGVfbWV0aG9kIiB2YWx1ZT0ibnVsbCIgLz4KKworICAgICAgICA8IS0tLSBTaW5jZSB3ZSBhcmUgbm90IGZvY3VzYWJsZSwgZGVmZXIgdG8gdGhlIGlucHV0dGV4dCdzIG5leHQgc2VsZWN0aW9uLAorICAgICAgICAgICAgICBzbyB0aGF0IHdoZW4gZmxvYXRpbmdsaXN0IGlzIHRhYmJlZCBvdXQgb2YsIHdlIGNhbiBwcm92aWRlIGEgbmV4dAorICAgICAgICAgICAgICBzZWxlY3Rpb24gc2luY2Ugd2UgYXJlIGl0J3Mgb3duZXIKKyAgICAgICAgICAgICAgQGtleXdvcmRzIHByaXZhdGUgLS0+CisgICAgICAgIDxtZXRob2QgbmFtZT0iZ2V0TmV4dFNlbGVjdGlvbiI+CisgICAgICAgICAgICAvLyBtdXN0IGVuc3VyZSB0aGUgZmxvYXRpbmdsaXN0IGlzIGNsb3NlZCBzbyB0aGF0IGlmIGl0IGlzIGJlaW5nIHRhYmJlZCBmcm9tLAorICAgICAgICAgICAgLy8gd2UgY2FuIGNoYW5nZSB0aGUgZm9jdXMuIChmb2N1cyBpcyBub3JtYWxseSBub3QgYWxsb3dlZCB0byBlc2NhcGUgZnJvbQorICAgICAgICAgICAgLy8gYSBtb2RhbCB2aWV3KS4KKyAgICAgICAgICAgIHRoaXMuc2V0T3BlbihmYWxzZSk7CisgICAgICAgICAgICByZXR1cm4gbHouRm9jdXMuZ2V0TmV4dChpbnRlcmlvci5jYnRleHQpOworICAgICAgICA8L21ldGhvZD4KKworICAgICAgICA8IS0tLSBzaW5jZSB3ZSBhcmUgbm90IGZvY3VzYWJsZSwgdGhpcyBwcm92aWRlcyBhbiBhcGkgZm9yIGFza2luZyB3aGF0IGNoaWxkIHRvIHNlbmQgZm9jdXMKKyAgICAgICAgICAgICAgdG8sIGFzIGlzIHRoZSBjYXNlIHdoZW4gZmxvYXRpbmdsaXN0IGlzIHNoaWZ0LXRhYmJlZCBiYWNrIHRvIHVzLgorICAgICAgICAgICAgICBAa2V5d29yZHMgcHJpdmF0ZSAtLT4KKyAgICAgICAgPG1ldGhvZCBuYW1lPSJyZXNvbHZlU2VsZWN0aW9uIj4KKyAgICAgICAgICAgIC8vIG11c3QgZW5zdXJlIHRoZSBmbG9hdGluZ2xpc3QgaXMgY2xvc2VkIHNvIHRoYXQgaWYgaXQgaXMgYmVpbmcgdGFiYmVkIGZyb20sCisgICAgICAgICAgICAvLyB3ZSBjYW4gY2hhbmdlIHRoZSBmb2N1cy4gKGZvY3VzIGlzIG5vcm1hbGx5IG5vdCBhbGxvd2VkIHRvIGVzY2FwZSBmcm9tCisgICAgICAgICAgICAvLyBhIG1vZGFsIHZpZXcpLgorICAgICAgICAgICAgdGhpcy5zZXRPcGVuKGZhbHNlKTsKKyAgICAgICAgICAgIHJldHVybiBpbnRlcmlvci5jYnRleHQ7CisgICAgICAgIDwvbWV0aG9kPgorCisgICAgICAgIDx2aWV3IG5hbWU9ImJrZ25kIiB3aWR0aD0iMTAwJSIgZm9jdXNhYmxlPSJmYWxzZSI+CisgICAgICAgIDwhLS0tIHN1YmNsYXNzZXMgZGVmaW5lZCB0aGUgJ2xvb2snIGJ5IHBsYWNpbmcgdmlld3MgaGVyZSAtLT4KKyAgICAgICAgPC92aWV3PgorCisgICAgICAgIDx2aWV3IG5hbWU9ImludGVyaW9yIgorICAgICAgICAgICAgeD0iJG9uY2V7Y2xhc3Nyb290LnRleHRfeH0iCisgICAgICAgICAgICB5PSIkb25jZXtjbGFzc3Jvb3QudGV4dF95fSIKKyAgICAgICAgICAgIHdpZHRoPSIke2NsYXNzcm9vdC50ZXh0X3dpZHRofSIKKyAgICAgICAgICAgICBoZWlnaHQ9IiR7Y2xhc3Nyb290LmhlaWdodCAtIDIqY2xhc3Nyb290LmJvcmRlcnNpemUgLSAyfSIKKyAgICAgICAgICAgICBmb2N1c2FibGU9ImZhbHNlIj4KKyAgICAgICAgICAgIDwhLS0tIEBrZXl3b3JkcyBwcml2YXRlIC0tPgorICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJfZHNibGZpZWxkIiB2YWx1ZT0ibnVsbCIvPgorCisgICAgICAgICAgICA8bWV0aG9kIG5hbWU9InNldHVwVGV4dCIgPgorICAgICAgICAgICAgICAgIHZhciB0eHQgPSBjbGFzc3Jvb3QuY2JsaXN0LmdldFRleHQoKTsKKyAgICAgICAgICAgICAgICBpZiAoICF0eHQgKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICggY2xhc3Nyb290LmRlZmF1bHRzZWxlY3Rpb24gKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGNsYXNzcm9vdC5jYmxpc3QuX2NvbnRlbnR2aWV3ICE9IG51bGwgKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3Nyb290LmNibGlzdC5zZWxlY3RJdGVtQXQoIGNsYXNzcm9vdC5kZWZhdWx0c2VsZWN0aW9uICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHh0ID0gY2xhc3Nyb290LmNibGlzdC5nZXRUZXh0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0eHQgPSBjbGFzc3Jvb3QuZGVmYXVsdHRleHQ7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuY2J0ZXh0KSB0aGlzLmNidGV4dC5zZXRBdHRyaWJ1dGUoJ3RleHQnLCB0eHQgKTsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5fZHNibGZpZWxkKSB0aGlzLl9kc2JsZmllbGQuc2V0QXR0cmlidXRlKCd0ZXh0JywgdHh0ICk7CisgICAgICAgICAgICAgICAgcGFyZW50Ll9hcHBseXN0eWxlKCBwYXJlbnQuc3R5bGUgKTsKKyAgICAgICAgICAgIDwvbWV0aG9kPgorCisgICAgICAgICAgICAgICAgPHZpZXcgbmFtZT0iZWRpdGJrZ25kIiBiZ2NvbG9yPSJ3aGl0ZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgLz4KKyAgICAgICAgICAgICAgICA8aW5wdXR0ZXh0IHg9IjIiIHk9IjEiIG5hbWU9ImNidGV4dCIgd2lkdGg9IiRvbmNle3BhcmVudC53aWR0aCAtIDR9Ij4KKyAgICAgICAgICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJ0ZXh0IiB0eXBlPSJzdHJpbmciIC8+CisJCQkJCQorCQkJCQk8YXR0cmlidXRlIG5hbWU9ImluaXRTZWxlY3QiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKwkJCQkJCisgICAgICAgICAgICAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0idGltZXJEZWxlZ2F0ZSIgdmFsdWU9Im51bGwiLz4KKyAgICAgICAgICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJ0eXBldGltZSIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0iNDAwMCIvPgorCQkJCQk8YXR0cmlidXRlIG5hbWU9InRpbWVySXNJbml0ZWQiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIvPgorCisgICAgICAgICAgICAgICAgICAgIDwhLS0gYXJyb3cgZG93biBhbmQgdXAgYm90aCBwb3B1cCBmbG9hdGluZ2xpc3QsIGFuZCBwYXNzIHRoZSBrZXkgZXZlbnQgdG8gaXQgLS0+CisgICAgICAgICAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9ua2V5ZG93biIgYXJncz0ia2V5Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwhW0NEQVRBWworCQkJCQkJLy9EZWJ1Zy53cml0ZSgib25rZXlkb3duOiAiLGtleSk7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyAzOCBpcyB1cC1hcnJvdworICAgICAgICAgICAgICAgICAgICAgICAgLy8gNDAgaXMgZG93bi1hcnJvdworICAgICAgICAgICAgICAgICAgICAgICAgLy8gMzIgaXMgc3BhY2UKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIDEzIGlzIHJldHVybgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoa2V5PT0zOCkgfHwgKGtleT09NDApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghY2xhc3Nyb290Lmlzb3BlbikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3Nyb290LnNldE9wZW4odHJ1ZSwgdHJ1ZSk7IC8vIG9wZW4sIHdpdGhLZXkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBwYXNzIHRoZSBrZXkgZXZlbnQgb24gdG8gdGhlIGZsb2F0aW5nbGlzdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc3Jvb3QuY2JsaXN0Lm9ua2V5ZG93bi5zZW5kRXZlbnQoa2V5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0RlYnVnLndyaXRlKCJvbmtleWRvd24gdHh0OiAiLHRoaXMuZ2V0VGV4dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmluaXRTZWxlY3QpeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vL0RlYnVnLndyaXRlKCJvbnZhbHVlOiAiLHR4dCx0aGlzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy50aW1lcklzSW5pdGVkKXsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRpbWVySXNJbml0ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMudGltZXJEZWxlZ2F0ZSA9IG5ldyBMekRlbGVnYXRlKCB0aGlzLCAidmFsaWRhdGVkVGV4dCIgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0RlYnVnLndyaXRlKCIrKysrKysrKysrKysrKysrKyBhZGRUaW1lciIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vRGVidWcud3JpdGUoIisrKysrKysrKysrKysrKysrIHJlbW92ZVRpbWVyICIsbHouVGltZXIuY291bnRUaW1lcnMoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHouVGltZXIuYWRkVGltZXIoIHRoaXMudGltZXJEZWxlZ2F0ZSwgdGhpcy50eXBldGltZSApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0RlYnVnLndyaXRlKCIjIyMjIyMjIyMjIyMjIyMgcmVzZXRUaW1lciBOTyBBRERJTkcgIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9EZWJ1Zy53cml0ZSgiIyMjIyMjIyMjIyMjIyMjIHJlbW92ZVRpbWVyICIsbHouVGltZXIuY291bnRUaW1lcnMoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9sei5UaW1lci5yZW1vdmVUaW1lciggdGhpcy50aW1lckRlbGVnYXRlICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRTZWxlY3QgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIF1dPgorICAgICAgICAgICAgICAgICAgICA8L2hhbmRsZXI+CisKKyAgICAgICAgICAgICAgICAgICAgPCEtLSBwYXNzIHVwIHRvIGNvbXBvbmVudCBsZXZlbCBzbyBmb2N1cyByZWN0IHdpbGwgYmUgdmlzaWJsZSwgYW5kIHN1YmNsYXNzZXJzIGNhbiBjYXRjaCAtLT4KKyAgICAgICAgICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25mb2N1cyIgYXJncz0idiI+CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGNsYXNzcm9vdFsnb25mb2N1cyddICkgY2xhc3Nyb290Lm9uZm9jdXMuc2VuZEV2ZW50KHYpOworICAgICAgICAgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgICAgICAgICAgICAgIDwhLS0gcGFzcyB1cCB0byBjb21wb25lbnQgbGV2ZWwgc28gc3ViY2xhc3NlcnMgY2FuIGNhdGNoIC0tPgorICAgICAgICAgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmJsdXIiIGFyZ3M9InYiPgorICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0U2VsZWN0PXRydWU7CisgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc3Jvb3Quc2V0QXR0cmlidXRlKCd0ZXh0JywgdGhpcy5nZXRUZXh0KCkgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICggY2xhc3Nyb290WydvbmJsdXInXSApIGNsYXNzcm9vdC5vbmJsdXIuc2VuZEV2ZW50KHYpOworICAgICAgICAgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgICAgICAgICAgICAgIDwhLS0gcGFzcyB1cCB0byBjb21wb25lbnQgbGV2ZWwgc28gc3ViY2xhc3NlcnMgY2FuIGNhdGNoIC0tPgorICAgICAgICAgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmtleXVwIiBhcmdzPSJrYyI+CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGNsYXNzcm9vdFsnb25rZXl1cCddICkgY2xhc3Nyb290Lm9ua2V5dXAuc2VuZEV2ZW50KGtjKTsKKyAgICAgICAgICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAgICAgICAgICAgICA8IS0tIHBhc3MgdXAgdG8gY29tcG9uZW50IGxldmVsIHNvIHN1YmNsYXNzZXJzIGNhbiBjYXRjaCAtLT4KKyAgICAgICAgICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25rZXlkb3duIiBhcmdzPSJrYyI+CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIGNsYXNzcm9vdFsnb25rZXlkb3duJ10gKSBjbGFzc3Jvb3Qub25rZXlkb3duLnNlbmRFdmVudChrYyk7CisgICAgICAgICAgICAgICAgICAgIDwvaGFuZGxlcj4KKworICAgICAgICAgICAgICAgICAgICA8bWV0aG9kIG5hbWU9ImdldEZvY3VzUmVjdCIgID4KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBjbGFzc3Jvb3QuZ2V0Rm9jdXNSZWN0KCk7CisgICAgICAgICAgICAgICAgICAgIDwvbWV0aG9kPgorCisJCQkJCTxtZXRob2QgbmFtZT0idmFsaWRhdGVkVGV4dCI+CisJCQkJCQk8IVtDREFUQVsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0RlYnVnLndyaXRlKCJ2YWxpZGF0ZWRUZXh0OiAiLHRoaXMuZ2V0VGV4dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3RoaXMucmVzZXQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaW5pdFNlbGVjdCl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gY2xhc3Nyb290LnZhbGlkYXRlX21ldGhvZCh0aGlzLmdldFRleHQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vRGVidWcud3JpdGUoJ3Q6ICcsdC5sZW5ndGgpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL3RoaXMucGFyZW50Ll9jYmxpc3Quc2V0QXR0cmlidXRlKCd2aXNpYmxlJyx0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3Nyb290LmNibGlzdC5yZW1vdmVBbGxJdGVtcygpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTx0Lmxlbmd0aDtpKyspeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3Nyb290LmNibGlzdC5hZGRJdGVtKHRbaV0ubmFtZSx0W2ldLnN0YXRlX2lkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0RlYnVnLndyaXRlKCIjIyMjIyMjIyMjIyMjIyMgcmVtb3ZlVGltZXIgIixsei5UaW1lci5jb3VudFRpbWVycygpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgZWcgaW4gbHouVGltZXIpeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9EZWJ1Zy53cml0ZSgiIyMjIyMjIyMjIyMjIyMjIGx6LlRpbWVyICIsZWcsbHouVGltZXJbZWddKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBlZyBpbiBsei5UaW1lci50aW1lckxpc3QpeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9EZWJ1Zy53cml0ZSgiIyMjIyMjIyMjIyMjIyMjIGx6LlRpbWVyLnRpbWVyTGlzdCAiLGVnLGx6LlRpbWVyLnRpbWVyTGlzdFtlZ10pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vL0RlYnVnLndyaXRlKCJ2YWxpZGF0ZVRleHQ6ICIsdGhpcy5nZXRUZXh0KCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL2lmICghY2xhc3Nyb290Lmlzb3BlbikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICBjbGFzc3Jvb3Quc2V0T3Blbih0cnVlLCB0cnVlKTsgLy8gb3Blbiwgd2l0aEtleQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL30KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50aW1lcklzSW5pdGVkID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0U2VsZWN0PWZhbHNlOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRpbWVySXNJbml0ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisJCQkJCQldXT4KKwkJCQkJPC9tZXRob2Q+CQkJCQkKKworICAgICAgICAgICAgICAgIDwvaW5wdXR0ZXh0PgorCisgICAgICAgIDwvdmlldz4KKworICAgICAgICA8ZmxvYXRpbmdsaXN0IG5hbWU9ImNibGlzdCIKKyAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iJHtvd25lci53aWR0aCAtIDF9IgorICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcnNpemU9IiR7dGhpcy5vd25lci5ib3JkZXJzaXplfSIKKyAgICAgICAgICAgICAgICAgICAgICBzcGFjaW5nPSIke3RoaXMub3duZXIuc3BhY2luZ30iCisgICAgICAgICAgICAgICAgICAgICAgdmlzaWJsZT0iZmFsc2UiCisgICAgICAgICAgICAgICAgICAgICAgc2hvd25pdGVtcz0iJHt0aGlzLm93bmVyLnNob3duaXRlbXN9IgorICAgICAgICAgICAgICAgICAgICAgIGF0dGFjaD0iYm90dG9tIgorICAgICAgICAgICAgICAgICAgICAgIGF0dGFjaG9mZnNldD0iJHt0aGlzLm93bmVyLmF0dGFjaG9mZnNldH0iCisgICAgICAgICAgICAgICAgICAgICAgbXVsdGlzZWxlY3Q9ImZhbHNlIgorICAgICAgICAgICAgICAgICAgICAgIGF1dG9zY3JvbGxiYXI9IiR7b3duZXIuYXV0b3Njcm9sbGJhcn0iCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdHNlbGVjdGlvbj0iJHtvd25lci5kZWZhdWx0c2VsZWN0aW9uID8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG93bmVyLmRlZmF1bHRzZWxlY3Rpb24gOiAob3duZXIuZGVmYXVsdHRleHQgPT0gJycgPworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwIDogbnVsbCkgfSI+CisgICAgICAgICAgICA8IS0tIGNyZWF0ZSBhIGJsYW5rIGRhdGFwYXRoIHNvIHRoYXQgaXQgY2FuIGJlIGFzc2lnbmVkIGEgZGF0YXBvaW50ZXIgd2hlbiBjb21ib2JveCBpcyBhc3NpZ25lZCBkYXRhIC0tPgorICAgICAgICAgICAgICAgPGRhdGFwYXRoPgorICAgICAgICAgICAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iZGF0YWNvbnRyb2xzdmlzaWJpbGl0eSIgdmFsdWU9ImZhbHNlIiAvPgorICAgICAgICAgICAgICAgPC9kYXRhcGF0aD4KKworICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jb25zdHJ1Y3QiPgorICAgICAgICAgICAgICAgIHRoaXMuZGF0YW9wdGlvbiA9IG93bmVyLmRhdGFvcHRpb247CisgICAgICAgICAgICA8L2hhbmRsZXI+CisKKyAgICAgICAgICAgIDxtZXRob2QgbmFtZT0iX2Rva2V5dXAiIGFyZ3M9ImtjIgorICAgICAgICAgICAgICAgICAgICBldmVudD0ib25rZXl1cCI+CisgICAgICAgICAgICAgICAgaWYgKGtjID09IDI3KSB7ICAvLyBlc2NhcGUgbmVlZHMgdG8gY2xvc2UgZmxvYXRpbmcgbGlzdAorICAgICAgICAgICAgICAgICAgICB0aGlzLm93bmVyLnNldE9wZW4oZmFsc2UpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIDwvbWV0aG9kPgorICAgICAgICAgICAgPG1ldGhvZCBuYW1lPSJyZW1vdmVBbGxJdGVtcyIgYXJncz0iaW5kZXgiPiAKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBlZyBpbiBfY29udGVudHZpZXcuc3Vidmlld3MpeworICAgICAgICAgICAgICAgICAgICBfcmVtb3ZlaXRlbShfY29udGVudHZpZXcuc3Vidmlld3NbZWddKTsgCisgICAgICAgICAgICAgICAgfSAKKyAgICAgICAgICAgIDwvbWV0aG9kPgkJCQorICAgICAgICA8L2Zsb2F0aW5nbGlzdD4KKworCisgICAgICAgIDwhLS0tIFNldHMgdGhlIG51bWJlciBvZiB0aGUgaXRlbSB0aGF0IGlzIGluaXRpYWxseSBzZWxlY3RlZC4gVGhpcyBvdmVycmlkZXMKKyAgICAgICAgICAgICAgdGhlIHZhbHVlIGRlZmluZWQgaW4gdGhlIGRlZmF1bHR0ZXh0IGF0dHJpYnV0ZS4KKyAgICAgICAgICAgICAgQHBhcmFtIE51bWJlciBkczogdGhlIG51bWJlciBvZiBpdGVtcyB0byBpbml0YWxseSBzZWxlY3QuIC0tPgorICAgICAgICA8bWV0aG9kIG5hbWU9InNldERlZmF1bHRTZWxlY3Rpb24iIGFyZ3M9ImRzIiA+CisgICAgICAgICAgICB0aGlzLmRlZmF1bHRzZWxlY3Rpb24gPSBkczsKKyAgICAgICAgICAgIGlmICggZHMgPT0gbnVsbCApIHJldHVybjsKKyAgICAgICAgICAgIGlmICggZGVmYXVsdHRleHQgIT0gIiIgKSB7CisgICAgICAgICAgICAgICAgdGhpcy5kZWZhdWx0dGV4dCA9ICIiOworICAgICAgICAgICAgICAgIC8vRGVidWcud3JpdGUoImRlZmF1bHRzZWxlY3Rpb24gb3ZlcnJpZGVzIGRlZmF1bHR0ZXh0Iix0aGlzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICggdGhpcy5vbmRlZmF1bHRzZWxlY3Rpb24gKSB0aGlzLm9uZGVmYXVsdHNlbGVjdGlvbi5zZW5kRXZlbnQoKTsKKyAgICAgICAgPC9tZXRob2Q+CisKKyAgICAgICAgPCEtLS0gQGtleXdvcmRzIHByaXZhdGUgLS0+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0iZCI+CisgICAgICAgICAgICB0aGlzLmNibGlzdC5kYXRhcGF0aC5zZXRQb2ludGVyKCBkICk7CisgICAgICAgIDwvaGFuZGxlcj4KKworICAgICAgICA8IS0tLSBAa2V5d29yZHMgcHJpdmF0ZSAtLT4KKyAgICAgICAgPGV2ZW50IG5hbWU9Im9uaXRlbWNsYXNzbmFtZSIvPgorCisgICAgICAgIDwhLS0tIFNldHMgdGhlIHR5cGUgb2YgbGlzdCBpdGVtcyB3aGljaCB3aWxsIGJlIGNyZWF0ZWQgaW4gZmxvYXRpbmdsaXN0CisgICAgICAgICAgICAgIHdoZW4gbmVjZXNzYXJ5LgorICAgICAgICAgICAgICBAcGFyYW0gU3RyaW5nIGljbjogdGhlIGNsYXNzIG5hbWUgdG8gdXNlIHRvIGNyZWF0ZSBpdGVtcyB3aXRoLiAtLT4KKyAgICAgICAgPG1ldGhvZCBuYW1lPSJzZXRJdGVtY2xhc3NuYW1lIiBhcmdzPSJpY24iID4KKyAgICAgICAgICAgIHRoaXMuaXRlbWNsYXNzbmFtZSA9IGljbjsgLy8gYmVmb3JlIGFueXRoaW5nIGlzIGluaXRlZCBjYXB0dXJlIHZhbHVlCisgICAgICAgICAgICBpZiAoIHRoaXMuaXNpbml0ZWQgKSB7IC8vIHZpZXcgaXMgbm93IGluaXRlZCBzbyBjaGVjayBjbGFzc25hbWUgd2l0aCBjYmxpc3QKKworICAgICAgICAgICAgICAgaWYgKGljbiAhPSAiIikgeworICAgICAgICAgICAgICAgICAgLy8gdGhlbiBmb3JjZSB0aGlzIGNsYXNzbmFtZSBhcyB0aGUgY2xhc3NuYW1lIGZvciBjYmxpc3QKKyAgICAgICAgICAgICAgICAgIGNibGlzdC5zZXRBdHRyaWJ1dGUoJ2l0ZW1jbGFzc25hbWUnLHRoaXMuaXRlbWNsYXNzbmFtZSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgIC8vdXNlIHRoZSBkZWZhdWx0IHN1YnZpZXcgYXMgdGhlIGNsYXNzbmFtZQorICAgICAgICAgICAgICAgICAgdGhpcy5pdGVtY2xhc3NuYW1lID0gY2JsaXN0Lml0ZW1jbGFzc25hbWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHRoaXMub25pdGVtY2xhc3NuYW1lKSB0aGlzLm9uaXRlbWNsYXNzbmFtZS5zZW5kRXZlbnQoKTsKKyAgICAgICAgPC9tZXRob2Q+CisKKyAgICAgICAgPCEtLS0gQGtleXdvcmRzIHByaXZhdGUgLS0+CisgICAgICAgIDxldmVudCBuYW1lPSJvbnRleHQiLz4KKworICAgICAgICA8IS0tLSBAa2V5d29yZHMgcHJpdmF0ZSAtLT4KKyAgICAgICAgPG1ldGhvZCBuYW1lPSJkZXRlcm1pbmVQbGFjZW1lbnQiIGFyZ3M9Im5ld3N1YiwgcGxhY2VtZW50LCBpYXJncyIgPgorICAgICAgICAgICAgaWYgKHBsYWNlbWVudCA9PSAnY2JsaXN0JykgCisgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2JsaXN0LmRldGVybWluZVBsYWNlbWVudChuZXdzdWIsIHBsYWNlbWVudCwgaWFyZ3MpOworICAgICAgICAgICAgZWxzZSAKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIuZGV0ZXJtaW5lUGxhY2VtZW50KG5ld3N1YiwgcGxhY2VtZW50LCBpYXJncyk7CisgICAgICAgIDwvbWV0aG9kPgorCisgICAgICAgIDwhLS0tIEBrZXl3b3JkcyBwcml2YXRlIC0tPgorICAgICAgICA8bWV0aG9kIG5hbWU9ImluaXQiID4KKyAgICAgICAgICAgIHRoaXMuX2luaXRjb21wbGV0ZSA9IHRydWU7CisJCQkKKyAgICAgICAgICAgIHN1cGVyLmluaXQoKTsKKworICAgICAgICAgICAgLy8gcmVhc3NpZ24gY2xhc3NuYW1lIG5vdyB0aGF0IHRoZSBpbnN0YW5jZSBpcyBpbml0ZWQKKyAgICAgICAgICAgIHRoaXMuc2V0SXRlbWNsYXNzbmFtZSh0aGlzLml0ZW1jbGFzc25hbWUpOworICAgICAgICAgICAgY2JsaXN0LnNldFZpc2libGUoZmFsc2UpOworICAgICAgICAgPC9tZXRob2Q+CisKKyAgICAgICAgPCEtLS0gQGtleXdvcmRzIHByaXZhdGUgLS0+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uYmx1ciIgPgorICAgICAgICAgICBpZiAoIGx6LkZvY3VzLmdldEZvY3VzKCkgIT0gdGhpcy5pbnRlcmlvci5jYnRleHQgKQorICAgICAgICAgICAgICAgIHRoaXMuc2V0T3BlbihmYWxzZSk7CisgICAgICAgIDwvaGFuZGxlcj4KKworICAgICAgICA8IS0tLSBAa2V5d29yZHMgcHJpdmF0ZSAtLT4KKyAgICAgICAgPG1ldGhvZCBuYW1lPSJnZXRGb2N1c1JlY3QiICA+CisgICAgICAgICAgIHZhciBmeCA9IHRoaXMuZ2V0QXR0cmlidXRlUmVsYXRpdmUoJ3gnLGNhbnZhcyk7CisgICAgICAgICAgIHZhciBmeSA9IHRoaXMuZ2V0QXR0cmlidXRlUmVsYXRpdmUoJ3knLGNhbnZhcyk7CisgICAgICAgICAgIHZhciBmdyA9IHRoaXMuZ2V0QXR0cmlidXRlUmVsYXRpdmUoJ3dpZHRoJyxjYW52YXMpOworICAgICAgICAgICB2YXIgZmggPSB0aGlzLmdldEF0dHJpYnV0ZVJlbGF0aXZlKCdoZWlnaHQnLGNhbnZhcyk7CisgICAgICAgICAgIHJldHVybiBbZngsZnksZncsZmhdOworICAgICAgICA8L21ldGhvZD4KKworICAgICAgICA8IS0tLSBTZWxlY3RzIGEgc3BlY2lmaWMgaXRlbSBpbiB0aGUgbGlzdC4KKyAgICAgICAgICAgICAgQHBhcmFtIE9iamVjdCBpdGVtOiB0aGUgaXRlbSB0byBzZWxlY3QuIC0tPgorICAgICAgICA8bWV0aG9kIG5hbWU9InNlbGVjdCIgYXJncz0iaXRlbSIgPgorICAgICAgICAgICB0aGlzLmNibGlzdC5zZWxlY3QoaXRlbSk7CisgICAgICAgIDwvbWV0aG9kPgorCisgICAgICAgIDwhLS0tIEBrZXl3b3JkcyBwcml2YXRlIC0tPgorICAgICAgICA8YXR0cmlidXRlIG5hbWU9Il9maXhzZWxkZWwiIHZhbHVlPSIkb25jZXtuZXcgTHpEZWxlZ2F0ZSh0aGlzLCAnZml4U2VsZWN0aW9uJyl9Ii8+CisgICAgICAgIDwhLS0tIEBrZXl3b3JkcyBwcml2YXRlIC0tPgorICAgICAgICA8bWV0aG9kIG5hbWU9ImZpeFNlbGVjdGlvbiI+CisgICAgICAgICAgICB0aGlzLmludGVyaW9yLmNidGV4dC5zZXRTZWxlY3Rpb24oX2ZpeHNlbGRlbC5zdGFydCwgX2ZpeHNlbGRlbC5lbmQpOworICAgICAgICA8L21ldGhvZD4KKworICAgICAgICA8IS0tLSB0aGlzIG1ldGhvZCBsaXN0ZW5zIGZvciB0aGUgb25zZWxlY3QgZXZlbnQgZnJvbSB0aGUgZmxvYXRpbmcgbGlzdAorICAgICAgICAgICAgICBhbmQgdGhlbiByZXNlbmRzIHRoZSBvbnNlbGVjdCBldmVudCB0byBpdHNlbGYgc28gdGhhdCBkZXZlbG9wZXJzIGNhbiBlYXNpbHkKKyAgICAgICAgICAgICAgcmVmZXJlbmNlIHRoYXQgd2l0aG91dCBrbm93aW5nIHRoZSBpbnRlcm5hbHMgb2YgY29tYm9ib3gKKyAgICAgICAgICAgICAgQGtleXdvcmRzIHByaXZhdGUgLS0+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uc2VsZWN0IiByZWZlcmVuY2U9InRoaXMuY2JsaXN0IiAgYXJncz0idiIgPiAKKwkJCTwhW0NEQVRBWworCQkJCXRoaXMuaW50ZXJpb3IuY2J0ZXh0LmluaXRTZWxlY3Q9dHJ1ZTsKKwkJCQl0aGlzLnNldE9wZW4oZmFsc2UpOworCQorCQkJCS8vIGFuSXRlbSBoYXMgYmVlbiBzZWxlY3RlZCBzbyB1cGRhdGUgdGhlIGlucHV0IHRleHQgZmllbGQKKwkJCQl0aGlzLnNlbGVjdGVkID0gdjsKKwkJCQlpZiAodikgdGhpcy5zZXRBdHRyaWJ1dGUoJ3RleHQnLHYudGV4dCk7CisJCQkJaWYgKGx6LkZvY3VzLmdldEZvY3VzKCkgPT0gdGhpcy5pbnRlcmlvci5jYnRleHQpIHsKKwkJCQkJX2ZpeHNlbGRlbC5zdGFydCA9IDA7CisJCQkJCV9maXhzZWxkZWwuZW5kID0gdi50ZXh0Lmxlbmd0aDsKKwkJCQkJbHouSWRsZS5jYWxsT25JZGxlKCBfZml4c2VsZGVsICk7CisJCisJCQkJfQorCQorCQkJCS8vIHJlc2VuZCB0aGUgZXZlbnQgc28gdGhhdCBkZXZlbG9wZXJzIGNhbiB3cml0ZSB0aGllciBvd24KKwkJCQkvLyBvbnNlbGVjdCBtZXRob2RzIHdpdGhvdXQgaGF2aW5nIHRvIGtub3cgdGhlIGludGVybmFscyBvZgorCQkJCS8vIHRoaXMgY2xhc3MuCisJCQkJaWYgKCB0aGlzLm9uc2VsZWN0ICkgdGhpcy5vbnNlbGVjdC5zZW5kRXZlbnQodik7CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPgorCisgICAgICAgIDwhLS0tIEBrZXl3b3JkcyBwcml2YXRlIC0tPgorICAgICAgICA8bWV0aG9kIG5hbWU9InBhc3NNb2RlRXZlbnQiIGFyZ3M9ImV2ZW50U3RyLHZpZXciID4gPCFbQ0RBVEFbCisgICAgICAgICAgICAvLyBPbmNlIGEgdmlldyBoYXMgYmVlbiBtYWRlIG1vZGFsLCB0aGlzIG1ldGhvZAorICAgICAgICAgICAgLy8gZ2V0cyBjYWxsZWQgT05MWSB3aGVuIGEgdXNlciBjbGlja3Mgb24gYSB2aWV3ICdvdXRzaWRlJworICAgICAgICAgICAgLy8gdGhlIGNvbnRlbnRzIG9mIHRoaXMgdmlldywgb3IgY2xpY2tzIG9uIGEgaW5wdXR0ZXh0IHZpZXcgYW55d2hlcmUKKyAgICAgICAgICAgIC8vIG9uIHRoZSBzY3JlZW4gZXZlbiBmb3IgYSBzdWJ2aWV3IHdpdGhpbiB0aGlzIHZpZXcuCisgICAgICAgICAgICBpZiAoIGV2ZW50U3RyID09ICJvbm1vdXNlZG93biIgICl7CisgICAgICAgICAgICAgICAgLy8gZmlyc3QsIHdlIG9ubHkgY2FyZSBhYm91dCB0aGUgbW91c2Vkb3duIGV2ZW50LgorICAgICAgICAgICAgICAgIC8vIGlmIHRoZSB1c2VyIGhhcyBwcmVzc2VkIHRoZSBtb3VzZSBkb3duIG9uIGEgdGV4dGZpZWxkCisgICAgICAgICAgICAgICAgLy8gd2l0aGluIHRoZSBjb21wb25lbnQsIHRoZW4gd2Ugd2lsbCBub3Qga25vdyB0aGlzIHVubGVzcworICAgICAgICAgICAgICAgIC8vIHdlIHRlc3QgaXQgdG8gc2VlIGlmIGl0IGlzIGEgc3VidmlldyBvZiB0aGlzIGNvbXBvbmVudC4KKworICAgICAgICAgICAgICAgIGlmICggdmlldyAhPSBudWxsICkgeyAvLyB2aWV3IGlzIGEgY2xpY2thYmxlIHZpZXcKKyAgICAgICAgICAgICAgICAgICAgLy8gdmlldyBpcyBub3QgTElURVJBTExZIHBhcnQgb2YgdGhlIGNsYXNzIGhlaXJhcmNoeSBidXQKKyAgICAgICAgICAgICAgICAgICAgLy8gaXQgbWF5YmUgcGFydCBvZiB0aGUgZmxvYXRpbmd2aWV3IG9mIHRoaXMgY29tcG9uZW50LCBhbmQgaWYgc28KKyAgICAgICAgICAgICAgICAgICAgLy8gdGhlbiB0cmVhdCBpdCBhcyBpZiBpdCB3ZXJlIGEgY2hpbGQgb2YgdGhlIGNsYXNzLgorCisgICAgICAgICAgICAgICAgICAgaWYgKCAhdmlldy5jaGlsZE9mKHRoaXMuY2JsaXN0KSApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZpZXcgaXMgb3V0c2lkZSBvZiBjb21ib2JveCBzbyBjbG9zZSB0aGUgY29tYmJvYm94CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldE9wZW4oZmFsc2UpOworCisgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIHZpZXcgaXMgYSBjaGlsZCBvZiBjYmxpc3QsIHNvIGRvbid0IGRvIGFueXRoaW5nLgorICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0T3BlbihmYWxzZSk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgLy8gaWYgd2UncmUgaW5zaWRlIGEgbW9kYWwgZGlhbG9nLCBuZWVkIHRvIHByb3BhZ2F0ZSBldmVudCBtYW51YWxseQorICAgICAgICAgICAgLy8gc2luY2UgZmxvYXRpbmcgbGlzdCBpcyBhIGNoaWxkIG9mIHRoZSBjYW52YXMKKyAgICAgICAgICAgIGlmICh2aWV3ICYmIHZpZXcuY2hpbGRPZih0aGlzLmNibGlzdCkpIHsKKyAgICAgICAgICAgICAgICBpZiAodmlld1sgZXZlbnRTdHIgXSkgeworICAgICAgICAgICAgICAgICAgICB2aWV3WyBldmVudFN0ciBdLnNlbmRFdmVudCggdmlldyApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICB9CisgICAgICAgICAgIC8vIHNpbmNlIGEgY29tYm94IGlzIG5vdCBzdHJpY3RseSBtb2RhbCwgYWx3YXlzIHJldHVybgorICAgICAgICAgICAvLyB0cnVlIHRvIHBhc3MgdGhlIGV2ZW50IHRvIHRoZSBvYmplY3QgKG91c3RpZGUgY29tYm9ib3gpCisgICAgICAgICAgIC8vIHRoYXQgd2FzIGNsaWNrZWQgb24KKyAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIF1dPiA8L21ldGhvZD4KKworICAgICAgICA8IS0tLSBUb2dnbGVzIHRoZSBvcGVuL2Nsb3NlIHN0YXRlIG9mIHRoZSBwb3B1cCBsaXN0LgorICAgICAgICAgICAgQHBhcmFtIEJvb2xlYW4gd2l0aGtleTogKG9wdGlvbmFsKSBpZiB0cnVlIHRoaXMgaXMgdHJpZ2dlcmVkIGJ5CisgICAgICAgICAgICAgICAgICBrZXlib2FyZCBhbmQgZm9jdXMgaW5kaWNhdG9ycyB3aWxsIGJlIHR1cm5lZCBvbjsKKyAgICAgICAgICAgICAgICAgIGlmIGZhbHNlLCB0aGlzIGlzIHRyaWdnZXJlZCBieSBtb3VzZSBhY3Rpb24gYW5kIGZvY3VzCisgICAgICAgICAgICAgICAgICBpbmRpY2F0b3JzIHdpbGwgYmUgdHVybmVkIG9mZjsKKyAgICAgICAgICAgICAgICAgIGlmIHBhcmFtZXRlciBpcyBvbW1pdHRlZCBubyBjaGFuZ2UgaW4gZm9jdXMgaW5kaWNhdG9yCisgICAgICAgIC0tPgorICAgICAgICA8bWV0aG9kIG5hbWU9InRvZ2dsZSIgYXJncz0id2l0aGtleSI+CisgICAgICAgICAgICB0aGlzLnNldE9wZW4oIXRoaXMuaXNvcGVuLCB3aXRoa2V5KQorICAgICAgICA8L21ldGhvZD4KKworICAgICAgICA8IS0tLSBTZXRzIHRoZSBvcGVuL2Nsb3NlIHN0YXRlIG9mIHRoZSBwb3B1cCBsaXN0LgorICAgICAgICAgICAgICBAcGFyYW0gQm9vbGVhbiBvcGVuOiB0cnVlIHRvIG9wZW4gdGhlIGxpc3QsIGVsc2UgZmFsc2UgdG8KKyAgICAgICAgICAgICAgY2xvc2UuCisgICAgICAgICAgICAgIEBwYXJhbSBCb29sZWFuIHdpdGhrZXk6IChvcHRpb25hbCkgaWYgdHJ1ZSB0aGlzIGlzIHRyaWdnZXJlZCBieQorICAgICAgICAgICAgICAgICAgICBrZXlib2FyZCBhbmQgZm9jdXMgaW5kaWNhdG9ycyB3aWxsIGJlIHR1cm5lZCBvbjsKKyAgICAgICAgICAgICAgICAgICAgaWYgZmFsc2UsIHRoaXMgaXMgdHJpZ2dlcmVkIGJ5IG1vdXNlIGFjdGlvbiBhbmQgZm9jdXMKKyAgICAgICAgICAgICAgICAgICAgaW5kaWNhdG9ycyB3aWxsIGJlIHR1cm5lZCBvZmY7CisgICAgICAgICAgICAgICAgICAgIGlmIHBhcmFtZXRlciBpcyBvbW1pdHRlZCBubyBjaGFuZ2UgaW4gZm9jdXMgaW5kaWNhdG9yCisgICAgICAgICAgLS0+CisgICAgICAgIDxtZXRob2QgbmFtZT0ic2V0T3BlbiIgYXJncz0ib3Blbiwgd2l0aGtleSIgPgorICAgICAgICAgICAgaWYgKCF0aGlzLmlzaW5pdGVkKSB7CisgICAgICAgICAgICAgICAgdGhpcy5pc29wZW4gPSBvcGVuOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChvcGVuKSB7IC8vIG9wZW4gY29tYm94CisgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNvcGVuKSByZXR1cm47IC8vIHRlbmRzIHRvIGdldCBjYWxsZWQgbW9yZSB0aGFuIG9uY2UsIGVzcCB3aGVuCisgICAgICAgICAgICAgICAgbHouTW9kZU1hbmFnZXIubWFrZU1vZGFsKCB0aGlzICk7CisKKyAgICAgICAgICAgICAgICB0aGlzLmNibGlzdC5icmluZ1RvRnJvbnQoKTsKKyAgICAgICAgICAgICAgICB0aGlzLmNibGlzdC5zZXRWaXNpYmxlKHRydWUpOworICAgICAgICAgICAgICAgIGx6LkZvY3VzLnNldEZvY3VzKHRoaXMuY2JsaXN0LCB3aXRoa2V5KTsKKworICAgICAgICAgICAgICAgIHRoaXMuaXNvcGVuID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBpZiAodGhpc1snb25pc29wZW4nXSkgdGhpcy5vbmlzb3Blbi5zZW5kRXZlbnQodHJ1ZSk7CisgICAgICAgICAgICB9IGVsc2UgeyAvLyBjbG9zZSBjb21ib3gKKyAgICAgICAgICAgICAgICBpZiAoIXRoaXNbJ2lzb3BlbiddKSByZXR1cm47CisgICAgICAgICAgICAgICAgdGhpcy5pc29wZW4gPSBmYWxzZTsKKworICAgICAgICAgICAgICAgIGx6Lk1vZGVNYW5hZ2VyLnJlbGVhc2UoIHRoaXMgKTsKKyAgICAgICAgICAgICAgICB0aGlzLmNibGlzdC5zZXRWaXNpYmxlKGZhbHNlKTsKKyAgICAgICAgICAgICAgICBpZiAodGhpc1snb25pc29wZW4nXSkgdGhpcy5vbmlzb3Blbi5zZW5kRXZlbnQoZmFsc2UpOworICAgICAgICAgICAgICAgIGlmICggbHouRm9jdXMuZ2V0Rm9jdXMoKSA9PSB0aGlzLmNibGlzdCApIHsKKyAgICAgICAgICAgICAgICAgICAgbHouRm9jdXMuc2V0Rm9jdXMoaW50ZXJpb3IuY2J0ZXh0LCB3aXRoa2V5KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIDwvbWV0aG9kPgorCisgICAgICAgIDwhLS0tIEBrZXl3b3JkcyBwcml2YXRlIC0tPgorICAgICAgICA8bWV0aG9kIG5hbWU9ImFwcGx5RGF0YSIgYXJncz0iZCI+CisgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgndGV4dCcsIGQgKTsKKyAgICAgICAgPC9tZXRob2Q+CisKKworICAgICAgICA8IS0tLSBHZXQgdGhlIHZhbHVlIGZvciB0aGUgY29tYm9ib3guCisgICAgICAgICAgICAgIEByZXR1cm4gT2JqZWN0OiB0aGUgdmFsdWUgc2VsZWN0ZWQgb3IgdGhlIHZhbHVlIGluIHRoZSB0ZXh0CisgICAgICAgICAgICAgIGZpZWxkLCBpZiBubyB2YWx1ZSB3YXMgZm91bmQuIC0tPgorICAgICAgICA8bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4KKyAgICAgICAgICAgdmFyIHJ2OworICAgICAgICAgICB2YXIgcmEgPSB0aGlzLmNibGlzdC5nZXRWYWx1ZSgpOyAvLyBhbiBhcnJheSBvZiB2YWx1ZXMKKyAgICAgICAgICAgaWYgKHJhPT1udWxsKSB7CisgICAgICAgICAgICAgICBydiAgPSB0aGlzLmludGVyaW9yLmNidGV4dC5nZXRUZXh0KCk7CisgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICBydiA9IHJhOworICAgICAgICAgICB9CisgICAgICAgICAgIHJldHVybiBydjsKKyAgICAgICAgPC9tZXRob2Q+CisKKyAgICAgICAgPCEtLS0gU2V0cyB0aGUgZGlzcGxheWVkIHRleHQuCisgICAgICAgICAgICAgIEBwYXJhbSBTdHJpbmcgdDogdGhlIHRleHQgdG8gZGlzcGxheS4gLS0+CisgICAgICAgIDxtZXRob2QgbmFtZT0ic2V0VGV4dCIgYXJncz0idCI+CisgICAgICAgICAgICB0aGlzLnRleHQgPSB0OworICAgICAgICAgICAgdGhpcy5pbnRlcmlvci5jYnRleHQuc2V0QXR0cmlidXRlKCd0ZXh0JywgdCApOworICAgICAgICAgICAgaWYgKCF0aGlzLl9lbmFibGVkKSBpbnRlcmlvci5fZHNibGZpZWxkLnNldEF0dHJpYnV0ZSgndGV4dCcsIHQgKTsKKyAgICAgICAgICAgIGlmICggdGhpcy5vbnRleHQgKSB0aGlzLm9udGV4dC5zZW5kRXZlbnQoIHQgKTsKKyAgICAgICAgPC9tZXRob2Q+CisKKyAgICAgICAgPCEtLS0gR2V0IHRoZSBkaXNwbGF5ZWQgdGV4dC4KKyAgICAgICAgICAgICAgQHJldHVybiBTdHJpbmc6IHRoZSBkaXNwbGF5ZWQgdGV4dC4gLS0+CisgICAgICAgIDxtZXRob2QgbmFtZT0iZ2V0VGV4dCI+CisgICAgICAgICAgIHJldHVybiB0aGlzLmludGVyaW9yLmNidGV4dC5nZXRUZXh0KCk7CisgICAgICAgIDwvbWV0aG9kPgorCisgICAgICAgIDwhLS0tIFJldHVybnMgY3VycmVudCBzZWxlY3Rpb24uCisgICAgICAgICAgICAgIEByZXR1cm4gT2JqZWN0OiBudWxsIGlmIG5vIHNlbGVjdGlvbiwgYW4gaXRlbSBpZiBzaW5nbGUgc2VsZWN0CisgICAgICAgICAgICAgIChkZWZhdWx0KSwgb3IgYW4gYXJyYXkgb2YgaXRlbXMgaWYgbXVsdGlzZWxlY3QuIC0tPgorICAgICAgICA8bWV0aG9kIG5hbWU9ImdldFNlbGVjdGlvbiI+CisgICAgICAgICAgICByZXR1cm4gdGhpcy5jYmxpc3QuZ2V0U2VsZWN0aW9uKCk7CisgICAgICAgIDwvbWV0aG9kPgorCisgICAgICAgIDwhLS0tIEFkZCB0aGUgc3BlY2lmaWVkIGl0ZW0gdG8gbGlzdCB0byB0aGUgZW5kIG9mIHRoZSBsaXN0LgorICAgICAgICAgICAgICBAcGFyYW0gU3RyaW5nIHR4dDogdGhlIHRleHQgZm9yIHRoZSBpdGVtLgorICAgICAgICAgICAgICBAcGFyYW0gT2JqZWN0IHZhbDogdGhlIHZhbHVlIGZvciB0aGUgaXRlbS4gLS0+CisgICAgICAgIDxtZXRob2QgbmFtZT0iYWRkSXRlbSIgYXJncz0idHh0LCB2YWwiID4KKyAgICAgICAgICAgIHRoaXMuY2JsaXN0LmFkZEl0ZW0odHh0LHZhbCk7CisgICAgICAgIDwvbWV0aG9kPgorCisgICAgICAgIDwhLS0tIEZpbmQgYSBwYXJ0aWN1bGFyIGl0ZW0gYnkgdmFsdWUuIFRoaXMgbWV0aG9kIGlzIG5vdCBhdmFpbGFibGUgd2l0aAorICAgICAgICAgICAgICBkYXRhb3B0aW9uPSJsYXp5IiBvciBkYXRhb3B0aW9uPSJyZXNpemUiICh1c2UgZGF0YSBBUElzIGluc3RlYWQpLgorICAgICAgICAgICAgICBAcGFyYW0gT2JqZWN0IHZhbHVlOiB0aGUgdmFsdWUgZm9yIHRoZSBpdGVtIHRvIGdldC4KKyAgICAgICAgICAgICAgQHJldHVybiBPYmplY3Q6IHRoZSBpdGVtIGZvdW5kLCBvciBudWxsLCBpZiBub3QuCisgICAgICAgICAgICAgIC0tPgorICAgICAgICA8bWV0aG9kIG5hbWU9ImdldEl0ZW0iIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgIHJldHVybiB0aGlzLmNibGlzdC5nZXRJdGVtKHZhbHVlKTsKKyAgICAgICAgPC9tZXRob2Q+CisKKyAgICAgICAgPCEtLS0gRmluZCBhIHBhcnRpY3VsYXIgaXRlbSBieSBpdHMgaW5kZXguIFRoaXMgbWV0aG9kIG5vdCBhdmFpbGFibGUKKyAgICAgICAgICAgICAgd2l0aCBkYXRhb3B0aW9uPSJsYXp5IiBvciBkYXRhb3B0aW9uPSJyZXNpemUiCisgICAgICAgICAgICAgICh1c2UgZGF0YSBBUElzIGluc3RlYWQpLgorICAgICAgICAgICAgICBAcGFyYW0gTnVtYmVyIGluZGV4OiB0aGUgaW5kZXggZm9yIHRoZSBpdGVtIHRvIGdldC4KKyAgICAgICAgICAgICAgQHJldHVybiBPYmplY3Q6IHRoZSBpdGVtIGZvdW5kLCBvciBudWxsLCBpZiBub3QuIC0tPgorICAgICAgICA8bWV0aG9kIG5hbWU9ImdldEl0ZW1BdCIgYXJncz0iaW5kZXgiPgorICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2JsaXN0LmdldEl0ZW1BdChpbmRleCk7CisgICAgICAgIDwvbWV0aG9kPgorCisgICAgICAgIDwhLS0tIEZpbmQgdGhlIGZpcnN0IGl0ZW0gd2l0aCB0aGUgc3BlY2lmaWVkIHZhbHVlIGFuZCByZW1vdmUgaXQgZnJvbQorICAgICAgICAgICAgICB0aGUgbGlzdC4KKyAgICAgICAgICAgICAgQHBhcmFtIE9iamVjdCB2YWx1ZTogdGhlIHZhbHVlIG9mIHRoZSBpdGVtIHRvIHJlbW92ZS4gLS0+CisgICAgICAgIDxtZXRob2QgbmFtZT0icmVtb3ZlSXRlbSIgYXJncz0idmFsdWUiID4KKyAgICAgICAgICAgIHRoaXMuY2JsaXN0LnJlbW92ZUl0ZW0odmFsdWUpOworICAgICAgICA8L21ldGhvZD4KKworICAgICAgICA8IS0tLSBSZW1vdmUgYW4gaXRlbSBieSBpbmRleCAoMCBiYXNlZCBjb3VudCkuIFRoaXMgbWV0aG9kIGlzIG5vdAorICAgICAgICAgICAgYXZhaWxhYmxlIHdpdGggZGF0YW9wdGlvbj0ibGF6eSIgb3IgZGF0YW9wdGlvbj0icmVzaXplIgorICAgICAgICAgICAgKHVzZSBkYXRhIEFQSXMgaW5zdGVhZCkuCisgICAgICAgICAgICAgIEBwYXJhbSBOdW1iZXIgaW5kZXg6IHRoZSBpbmRleCBvZiB0aGUgaXRlbSB0byByZW1vdmUuIC0tPgorICAgICAgICA8bWV0aG9kIG5hbWU9InJlbW92ZUl0ZW1BdCIgYXJncz0iaW5kZXgiID4KKyAgICAgICAgICAgIHRoaXMuY2JsaXN0LnJlbW92ZUl0ZW1BdChpbmRleCk7CisgICAgICAgIDwvbWV0aG9kPgorCisgICAgICAgIDwhLS0tIFNlbGVjdCBhbiBpdGVtIGJ5IHZhbHVlLiBUaGlzIG1ldGhvZCBpcyBub3QgYXZhaWxhYmxlIHdpdGgKKyAgICAgICAgICAgICAgZGF0YW9wdGlvbj0ibGF6eSIgb3IgZGF0YW9wdGlvbj0icmVzaXplIi4KKyAgICAgICAgICAgICAgQHBhcmFtIE9iamVjdCB2YWx1ZTogdGhlIHZhbHVlIG9mIHRoZSBpdGVtIHRvIHNlbGVjdC4KKwkJCSAgaW5pdFNlbGVjdCA9IHRydWUgd2lsbCBOT1QgdGhyb3cgYSB2YWxpZGF0aW5nIGV2ZW50IC0tPgorICAgICAgICA8bWV0aG9kIG5hbWU9InNlbGVjdEl0ZW0iIGFyZ3M9InZhbHVlLGluaXRTZWxlY3QiPgorCQkJaWYgKGluaXRTZWxlY3QpIHRoaXMuaW50ZXJpb3IuY2J0ZXh0LmluaXRTZWxlY3Q9dHJ1ZTsKKyAgICAgICAgICAgIHRoaXMuY2JsaXN0LnNlbGVjdEl0ZW0odmFsdWUpOworICAgICAgICA8L21ldGhvZD4KKworICAgICAgICA8IS0tLSBTZWxlY3QgYW4gaXRlbSBieSBpbmRleCAoMCBiYXNlZCBjb3VudCkuCisgICAgICAgICAgICAgIEBwYXJhbSBOdW1iZXIgaW5kZXg6IHRoZSBpbmRleCBvZiB0aGUgaXRlbSB0byBzZWxlY3QuIC0tPgorICAgICAgICA8bWV0aG9kIG5hbWU9InNlbGVjdEl0ZW1BdCIgYXJncz0iaW5kZXgiPgorICAgICAgICAgICAgdGhpcy5jYmxpc3Quc2VsZWN0SXRlbUF0KGluZGV4KTsKKyAgICAgICAgPC9tZXRob2Q+CisKKyAgICAgICAgPCEtLS0gQ2xlYXIgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIGluIHRoZSBsaXN0IGFuZCBzZXRzIHRoZSBkaXNwbGF5ZWQKKyAgICAgICAgICAgIHRleHQgdG8gYW4gZW1wdHkgc3RyaW5nIC0tPgorICAgICAgICA8bWV0aG9kIG5hbWU9ImNsZWFyU2VsZWN0aW9uIiA+CisgICAgICAgICAgICB0aGlzLmNibGlzdC5jbGVhclNlbGVjdGlvbigpOworICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3RleHQnLCIiKTsKKyAgICAgICAgPC9tZXRob2Q+CisKKyAgICAgICAgPCEtLS0gQGtleXdvcmRzIHByaXZhdGUgLS0+CisgICAgICAgIDxtZXRob2QgbmFtZT0iX2FwcGx5c3R5bGUiIGFyZ3M9InMiPgorICAgICAgICAgICAgaWYgKHRoaXMuc3R5bGUgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGludGVyaW9yLmVkaXRia2duZC5zZXRBdHRyaWJ1dGUoImJnY29sb3IiLCBzLnRleHRmaWVsZGNvbG9yKTsKKyAgICAgICAgICAgICAgICBpbnRlcmlvci5jYnRleHQuc2V0QXR0cmlidXRlKCdiZ2NvbG9yJyxzLnRleHRmaWVsZGNvbG9yKTsKKyAgICAgICAgICAgICAgICBzZXRUaW50KGJrZ25kLCBzLmJhc2Vjb2xvcik7CisgICAgICAgICAgIH0KKyAgICAgICAgPC9tZXRob2Q+CisKKyAgICAgICAgPCEtLS0gQGtleXdvcmRzIHByaXZhdGUgLS0+CisgICAgICAgIDxtZXRob2QgbmFtZT0iX3Nob3dFbmFibGVkIj4KKyAgICAgICAgICAgaW50ZXJpb3IuY2J0ZXh0LnNldFZpc2libGUodGhpcy5fZW5hYmxlZCk7CisgICAgICAgICAgICBpZiAoIXRoaXMuX2VuYWJsZWQpIHsKKyAgICAgICAgICAgICAgICBpZiAoaW50ZXJpb3IuX2RzYmxmaWVsZCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciB0ID0gbmV3IEx6VGV4dChpbnRlcmlvciwKKyAgICAgICAgICAgICAgICAgICAgICAgIHsgbmFtZTogJ19kc2JsZmllbGQnLCB4OiAyLCB5OiAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aDppbnRlcmlvci53aWR0aCwgaGVpZ2h0OmludGVyaW9yLmhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZ2NvbG9yOnRoaXNbJ3N0eWxlJ10gPyB0aGlzLnN0eWxlLnRleHRkaXNhYmxlZGNvbG9yIDogbnVsbH0pOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgaW50ZXJpb3IuX2RzYmxmaWVsZC5zZXRWaXNpYmxlKHRydWUpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpbnRlcmlvci5fZHNibGZpZWxkLnNldEF0dHJpYnV0ZSgndGV4dCcsdGhpcy5nZXRUZXh0KCkpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBpZiAoaW50ZXJpb3IuX2RzYmxmaWVsZCkgaW50ZXJpb3IuX2RzYmxmaWVsZC5zZXRWaXNpYmxlKGZhbHNlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9tZXRob2Q+CisKKyAgICAgICAgPG1ldGhvZCBuYW1lPSJzZXRXaWR0aCIgYXJncz0idyI+CisgICAgICAgICAgICBzdXBlci5zZXRXaWR0aChNYXRoLm1heCh3LHRoaXMubWluX3dpZHRoKSk7CisgICAgICAgIDwvbWV0aG9kPgorICAgIDwvY2xhc3M+CisKKworICAgIDwhLS0tIEEgZHJvcGRvd24gbGlzdCBvZiBzZWxlY3RhYmxlIGl0ZW1zLiBDYW4gZWl0aGVyIGJlIGVkaXRhYmxlIG9yCisgICAgICAgICAgbm90LiAtLT4KKyAgICA8Y2xhc3MgbmFtZT0idmFsaWRCb3giIGV4dGVuZHM9ImJhc2VWYWxpZENvbWJvYm94Ij4KKwkJCisgICAgICAgIDx2aWV3IG5hbWU9ImxmdCIgcmVzb3VyY2U9Imx6Y29tYm9ib3hfbGZ0X3JzYyIgcGxhY2VtZW50PSJia2duZCIvPgorICAgICAgICA8dmlldyBuYW1lPSJtaWQiIHJlc291cmNlPSJsemNvbWJvYm94X21pZF9yc2MiIHN0cmV0Y2hlcz0id2lkdGgiIHBsYWNlbWVudD0iYmtnbmQiLz4KKyAgICAgICAgPGJhc2VidXR0b24gbmFtZT0icmd0IiByZXNvdXJjZT0ibHpjb21ib2JveF9yZ3RfcnNjIiBzdHlsZWFibGU9InRydWUiCisgICAgICAgICAgICAgICAgcGxhY2VtZW50PSJia2duZCIgb25jbGljaz0iY2xhc3Nyb290LnRvZ2dsZShmYWxzZSkiIC8+CisJCQorICAgICAgICA8c3RhYmxlYm9yZGVybGF5b3V0IGF4aXM9IngiIHBsYWNlbWVudD0iYmtnbmQiLz4KKwkJCisgICAgICAgICAgICAgICA8IS0tLSBAa2V5d29yZHMgcHJpdmF0ZSAtLT4KKyAgICAgICAgPG1ldGhvZCBuYW1lPSJfc2hvd0VuYWJsZWQiPgorICAgICAgICAgICBzdXBlci5fc2hvd0VuYWJsZWQoKTsKKyAgICAgICAgICAgaWYgKF9lbmFibGVkKSB7CisJCQkJdGhpcy5ia2duZC5sZnQuc2V0QXR0cmlidXRlKCdmcmFtZScsIDEgKTsKKwkJCQl0aGlzLmJrZ25kLm1pZC5zZXRBdHRyaWJ1dGUoJ2ZyYW1lJywgMSApOworICAgICAgICAgICAgfSBlbHNlIHsKKwkJCQl0aGlzLmJrZ25kLmxmdC5zZXRBdHRyaWJ1dGUoJ2ZyYW1lJywgMyApOworCQkJCXRoaXMuYmtnbmQubWlkLnNldEF0dHJpYnV0ZSgnZnJhbWUnLCAzICk7CisgICAgICAgICAgICB9CisgICAgICAgIDwvbWV0aG9kPgorCisgICAgPC9jbGFzcz4JCQorIDwhLS0KKwkJPGVkaXR0ZXh0IG5hbWU9InN0YXRlIiB3aWR0aD0iMjcwIiB5PSIyMCIgeD0iMTIwIiBmb250c2l6ZT0iMTEiPgorCQkJCisJCQk8YXR0cmlidXRlIG5hbWU9InRpbWVyRGVsZWdhdGUiIHZhbHVlPSJudWxsIi8+CisJCQk8YXR0cmlidXRlIG5hbWU9InR5cGV0aW1lIiB0eXBlPSJudW1iZXIiIHZhbHVlPSI1MDAiLz4KKwkJCTxhdHRyaWJ1dGUgbmFtZT0idGltZXJJc0luaXRlZCIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIi8+CisJCQkKKwkJCTxhdHRyaWJ1dGUgbmFtZT0iZm9ybWVydmFsdWUiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIvPgorCQkJPGF0dHJpYnV0ZSBuYW1lPSJzdGFydFZhbGlkYXRlIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iLz4KKwkJCQorCQkJPG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+IHJldHVybiB0aGlzLmlkOyA8L21ldGhvZD4KKwkJCTxtZXRob2QgbmFtZT0ic2V0VmFsdWVkIiBhcmdzPSJ0eHQsaWQiPiAKKwkJCQkvL0RlYnVnLndyaXRlKCJzZXRWYWx1ZToiLHR4dCxpZCk7IAorCQkJCXRoaXMuaWQgPSBpZDsgdGhpcy5zZXRBdHRyaWJ1dGUoJ3RleHQnLHR4dCk7IAorCQkJPC9tZXRob2Q+CisJCQkKKwkJCTxoYW5kbGVyIG5hbWU9Im9uZm9jdXMiPiAvL0RlYnVnLndyaXRlKCJvbmZvY3VzICIsdGhpcy5nZXRUZXh0KCkpOworCQkJCXRoaXMuc3RhcnRWYWxpZGF0ZSA9IHRydWU7IHRoaXMuZm9ybWVydmFsdWUgPSB0aGlzLmdldFRleHQoKTsKKwkJCQk8L2hhbmRsZXI+CisJCQk8aGFuZGxlciBuYW1lPSJvbnZhbHVlIiBhcmdzPSJ0eHQiPgorCQkJCTwhW0NEQVRBWworCQkJCS8vRGVidWcud3JpdGUoIm9udmFsdWU6ICIsdHh0LHRoaXMuc3RhcnRWYWxpZGF0ZSk7CisJCQkJaWYgKCF0aGlzLnRpbWVySXNJbml0ZWQgJiYgdGhpcy5zdGFydFZhbGlkYXRlKXsKKwkJCQkJdGhpcy50aW1lcklzSW5pdGVkID0gdHJ1ZTsKKwkJCQkJdGhpcy50aW1lckRlbGVnYXRlID0gbmV3IEx6RGVsZWdhdGUoIHRoaXMsICJ2YWxpZGF0ZWRUZXh0IiApOworCQkJCQkvL0RlYnVnLndyaXRlKCIjIyMjIyMjIyMjIyMjIyMgYWRkVGltZXIiKTsKKwkJCQkJbHouVGltZXIuYWRkVGltZXIoIHRoaXMudGltZXJEZWxlZ2F0ZSwgdGhpcy50eXBldGltZSApOworCQkJCX0gZWxzZSB7CisJCQkJCWx6LlRpbWVyLnJlc2V0VGltZXIoIHRoaXMudGltZXJEZWxlZ2F0ZSwgdGhpcy50eXBldGltZSApOworCQkJCX0KKwkJCQldXT4KKwkJCTwvaGFuZGxlcj4KKwkJCTxtZXRob2QgbmFtZT0idmFsaWRhdGVkVGV4dCI+CisJCQkJPCFbQ0RBVEFbCisJCQkJCS8vRGVidWcud3JpdGUoInZhbGlkYXRlZFRleHQ6ICIsdGhpcy5nZXRUZXh0KCkpOworCQkJCQkvL3RoaXMucmVzZXQoKTsKKwkJCQkJdmFyIHQgPSBjYW52YXMudmFsaWRhdGVDb3VudHJ5KHRoaXMuZ2V0VGV4dCgpKTsKKwkJCQkJLy9EZWJ1Zy53cml0ZSgndDogJyx0Lmxlbmd0aCk7CisJCQkJCXRoaXMuX2NibGlzdC5zZXRBdHRyaWJ1dGUoJ3Zpc2libGUnLHRydWUpOworCQkJCQl0aGlzLl9jYmxpc3QucmVtb3ZlQWxsSXRlbXMoKTsKKwkJCQkJZm9yICh2YXIgaT0wO2k8dC5sZW5ndGg7aSsrKXsKKwkJCQkJCXRoaXMuX2NibGlzdC5hZGRJdGVtKHRbaV0ubmFtZSx0W2ldLnN0YXRlX2lkKTsKKwkJCQkJfQorCQkJCQlsei5UaW1lci5yZW1vdmVUaW1lcih0aGlzLnRpbWVyRGVsZWdhdGUpOworCQkJCQl0aGlzLnRpbWVySXNJbml0ZWQgPSBmYWxzZTsKKwkJCQkJLy9EZWJ1Zy53cml0ZSgidmFsaWRhdGVUZXh0OiAiLHRoaXMuZ2V0VGV4dCgpKTsKKworCQkJCV1dPgorCQkJPC9tZXRob2Q+CisJCQk8aGFuZGxlciBuYW1lPSJvbmJsdXIiIGFyZ3M9ImIiPiAvL0RlYnVnLndyaXRlKCJvbmJsdXI6ICIsYik7CisJCQkJPCFbQ0RBVEFbCisJCQkJCWlmIChiIT10aGlzLl9jYmxpc3QpeworCQkJCQkJdmFyIHQgPSBjYW52YXMudmFsaWRhdGVDb3VudHJ5KHRoaXMuZ2V0VGV4dCgpKTsKKwkJCQkJCS8vRGVidWcud3JpdGUoJ3Q6ICcsdC5sZW5ndGgpOworCQkJCQkJdGhpcy5fY2JsaXN0LnJlbW92ZUFsbEl0ZW1zKCk7CisJCQkJCQlmb3IgKHZhciBpPTA7aTx0Lmxlbmd0aDtpKyspeworCQkJCQkJCXRoaXMuX2NibGlzdC5hZGRJdGVtKHRbaV0ubmFtZSx0W2ldLnN0YXRlX2lkKTsKKwkJCQkJCX0KKwkJCQkJCXRoaXMuc3RhcnRWYWxpZGF0ZSA9IGZhbHNlOworCQkJCQkJLy90aGlzLl9jYmxpc3Quc2V0QXR0cmlidXRlKCd2aXNpYmxlJyxmYWxzZSk7CisJCQkJCX0gZWxzZSB7CisJCQkJCQkvL0RlYnVnLndyaXRlKCJpcyB0aGlzLl9jYmxpc3QiKTsKKwkJCQkJfQorCQkJCV1dPgorCQkJCTwvaGFuZGxlcj4KKwkJCQorCQkJPGZsb2F0aW5nbGlzdCB3aWR0aD0iJHsgdGhpcy5vd25lci53aWR0aCB9IiBhdHRhY2g9ImJvdHRvbSIKKwkJCQluYW1lPSJfY2JsaXN0IiB2aXNpYmxlPSJmYWxzZSIgYXV0b3Njcm9sbGJhcj0idHJ1ZSIgc2hvd25pdGVtcz0iNyIKKwkJCQlzY3JvbGxiYXJjbGFzc25hbWU9InNjcm9sbGJhclZhbGlkQm94IiA+CisJCQkJPG1ldGhvZCBuYW1lPSJyZW1vdmVBbGxJdGVtcyIgYXJncz0iaW5kZXgiPiAKKwkJCQkJZm9yICh2YXIgZWcgaW4gX2NvbnRlbnR2aWV3LnN1YnZpZXdzKXsKKwkJCQkJCV9yZW1vdmVpdGVtKF9jb250ZW50dmlldy5zdWJ2aWV3c1tlZ10pOyAKKwkJCQkJfSAKKwkJCQk8L21ldGhvZD4KKwkJCQk8aGFuZGxlciBuYW1lPSJvbnNlbGVjdCIgYXJncz0iaXRlbSI+IAorCQkJCQkvL0RlYnVnLndyaXRlKCJvbnNlbGVjdDoiLGl0ZW0pOyAKKwkJCQkJLy90aGlzLm93bmVyLiAKKwkJCQkJdGhpcy5zZXRBdHRyaWJ1dGUoJ3Zpc2libGUnLGZhbHNlKTsKKwkJCQkJbHouRm9jdXMuc2V0Rm9jdXModGhpcy5vd25lcik7IAorCQkJCTwvaGFuZGxlcj4KKwkJCTwvZmxvYXRpbmdsaXN0PgorCQkJCisJCTwvZWRpdHRleHQ+CisgIC0tPgorCQorCTx2YWxpZEJveCB5PSIyMCIgd2lkdGg9IjI3MCIgbmFtZT0iX3ZhbGlkYm94IiAKKyAgICAgICAgc2hvd25pdGVtcz0iNyIgdmFsaWRhdGVfbWV0aG9kPSIkb25jZXsgY2FudmFzLnZhbGlkYXRlQ291bnRyeSB9IiAvPgorICAgIAorIDwvY2FudmFzPgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvdGVzdC9zaW1wbGV0ZXN0dmFsaWRUZXh0Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL3Rlc3Qvc2ltcGxldGVzdHZhbGlkVGV4dC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTcxZjcxNgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL3Rlc3Qvc2ltcGxldGVzdHZhbGlkVGV4dC5sengKQEAgLTAsMCArMSwyOTAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8Y2FudmFzIGhlaWdodD0iNDAwIiBkZWJ1Zz0idHJ1ZSI+CisJCis8aW5jbHVkZSBocmVmPSJsei90ZXh0bGlzdGl0ZW0ubHp4IiAvPgorPGluY2x1ZGUgaHJlZj0ibHovZWRpdHRleHQubHp4IiAvPgorPGluY2x1ZGUgaHJlZj0ibHovYnV0dG9uLmx6eCIgLz4KKwkKKzxzY3JpcHQ+Cis8IVtDREFUQVsKKwkKK1N0cmluZy5wcm90b3R5cGUuc3RhcnRzV2l0aCA9IGZ1bmN0aW9uKHByZWZpeCkgeworICAgIHJldHVybiAodGhpcy5pbmRleE9mKHByZWZpeCkgPT09IDApOworfTsJCisJCitdXT4KKzwvc2NyaXB0PgorCQorPGF0dHJpYnV0ZSBuYW1lPSJzdGF0ZXNJbml0VmFsdWVzIiB2YWx1ZT0ibnVsbCIgLz4KKwkKKzxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisJPCFbQ0RBVEFbCisJCXZhciB0Q2hhcnMgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiOworCQl2YXIgdENoYXJzU21hbGwgPSAiYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5emFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXoiOworCQkKKwkJdGhpcy5zdGF0ZXNJbml0VmFsdWVzID0gbmV3IEFycmF5KCk7CisJCXZhciBtID0gMDsKKwkJd2hpbGUgKG08MjApeworCQkJZm9yICh2YXIgaSA9IDA7aTwyNjtpKyspeworCQkJCWZvciAodmFyIHI9MDtyPDM7cisrKXsKKwkJCQkJdmFyIHQgPSBuZXcgQXJyYXkoKTsKKwkJCQkJdFsic3RhdGVfaWQiXSA9IGkqcjsKKwkJCQkJdFsibmFtZSJdID0gdENoYXJzLmNoYXJBdChpKSt0Q2hhcnNTbWFsbC5jaGFyQXQoKCBNYXRoLnJhbmRvbSgpKjEwMCkpK3RDaGFyc1NtYWxsLmNoYXJBdCgoIE1hdGgucmFuZG9tKCkqMTAwKSkrdENoYXJzU21hbGwuY2hhckF0KCggTWF0aC5yYW5kb20oKSoxMDApKSt0Q2hhcnNTbWFsbC5jaGFyQXQoKCBNYXRoLnJhbmRvbSgpKjEwMCkpK3RDaGFyc1NtYWxsLmNoYXJBdCgoIE1hdGgucmFuZG9tKCkqMTAwKSk7CisJCQkJCXRoaXMuc3RhdGVzSW5pdFZhbHVlcy5wdXNoKHQpOworCQkJCX0KKwkJCX0KKwkJCW0rKzsKKwkJfQorCQkvL0RlYnVnLndyaXRlKHRoaXMuc3RhdGVzSW5pdFZhbHVlcyk7CisJCQorCQl0aGlzLl92YWxpZGJveC5hZGRBbmRTZWxlY3RJdGVtKCJEYSIsIjEiKTsKKwldXT4KKzwvaGFuZGxlcj4KKwkKKzxtZXRob2QgbmFtZT0idmFsaWRhdGVDb3VudHJ5IiBhcmdzPSJzdHIiPgorCS8vRGVidWcud3JpdGUoInZhbGlkYXRlQ291bnRyeTogIixzdHIpOworCTwhW0NEQVRBWworCQlpZiAoc3RyLmxlbmd0aCE9MCl7CisJCQl2YXIgYSA9IG5ldyBBcnJheSgpOworCQkJZm9yICh2YXIgaT0wO2k8Y2FudmFzLnN0YXRlc0luaXRWYWx1ZXMubGVuZ3RoO2krKyl7CisJCQkJaWYgKGNhbnZhcy5zdGF0ZXNJbml0VmFsdWVzW2ldLm5hbWUuc3RhcnRzV2l0aChzdHIpKWEucHVzaChjYW52YXMuc3RhdGVzSW5pdFZhbHVlc1tpXSk7CisJCQkJLy90aGlzLmFkZEl0ZW0oY2FudmFzLnN0YXRlc0luaXRWYWx1ZXNbaV0ubmFtZSxjYW52YXMuc3RhdGVzSW5pdFZhbHVlc1tpXS5zdGF0ZV9pZCk7CisJCQl9CisJCQlyZXR1cm4gYTsKKwkJfQorCV1dPgkKKzwvbWV0aG9kPgkKKwkKKworICAgIDxjbGFzcyBuYW1lPSJ2YWxpZFRleHQiIGV4dGVuZHM9ImVkaXR0ZXh0Ij4KKyAgICAgICAgCisgICAgICAgIDwhLS0tIFRoZSBtZXRob2QgdG8gYmUgY2FsbGVkIGZvciB2YWxpZGF0aW5nIC0tPgorICAgICAgICA8YXR0cmlidXRlIG5hbWU9InZhbGlkYXRlX21ldGhvZCIgdmFsdWU9Im51bGwiIC8+CisgICAgICAgIAorICAgICAgICA8IS0tLSB0aGUgaWQtYXR0cmlidXRlIG9mIHRoZSByZXN1bHRzZXQgLS0+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0icmVzdWx0SWQiIHZhbHVlPSJpZCIgdHlwZT0ic3RyaW5nIiAvPgorICAgICAgICA8IS0tLSB0aGUgbmFtZS1hdHRyaWJ1dGUgb2YgdGhlIHJlc3VsdHNldCAtLT4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJyZXN1bHROYW1lIiB2YWx1ZT0ibmFtZSIgdHlwZT0ic3RyaW5nIiAvPiAgICAgICAgCisJCQkJCQorICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImluaXRTZWxlY3QiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKwkJCQkJCisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0idGltZXJEZWxlZ2F0ZSIgdmFsdWU9Im51bGwiLz4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJ0eXBldGltZSIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0iNTAwIi8+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0idGltZXJJc0luaXRlZCIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIi8+CisgICAgICAgIAorICAgICAgICA8IS0tLSBpdGVtcyB0byBiZSBzaG93biBpbiB0aGUgZmxvYXRpbmdsaXN0IC0tPgorICAgICAgICA8YXR0cmlidXRlIG5hbWU9InNob3duaXRlbXMiIHZhbHVlPSI3IiB0eXBlPSJudW1iZXIiIC8+ICAgICAgICAgIAorICAgICAgICA8YXR0cmlidXRlIG5hbWU9InNwYWNpbmciIHZhbHVlPSIxIiB0eXBlPSJudW1iZXIiIC8+ICAKKyAgICAgICAgPCEtLS0gVGhlIHZlcnRpY2FsIG9mZnNldCBvZiB0aGUgZmxvYXRpbmdsaXN0IGF0dGFjaGVkIHRvIHRoaXMKKyAgICAgICAgICAgICAgY29tYm9ib3guIC0tPgorICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImF0dGFjaG9mZnNldCIgdmFsdWU9Ii0xIiB0eXBlPSJudW1iZXIiLz4KKyAgICAgICAgPCEtLS0gV2hldGhlciBhIHNjcm9sbGJhciBzaG91bGQgYXV0b21hdGljYWxseSBzaG93IHVwIHdoZW4gdGhlcmUgYXJlIG1vcmUKKyAgICAgICAgICAgICAgaXRlbXMgdGhhbiBzaG93bml0ZW1zLiAtLT4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJhdXRvc2Nyb2xsYmFyIiB2YWx1ZT0idHJ1ZSIvPiAgIAorCisgICAgICAgIDwhLS0tIFRoZSBib3JkZXIgc2l6ZSAoIGluIHBpeGVscyApIG9mIHRoZSBwb3B1cCBsaXN0LiAgLS0+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iYm9yZGVyc2l6ZSIgICB2YWx1ZT0iMSIgLz4gICAgICAKKyAgICAgICAgCisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudFZhbHVlIiB0eXBlPSJzdHJpbmciIHZhbHVlPSIiIC8+CisgICAgICAgIAorICAgICAgICA8IS0tLSByZWZlcm5jZSB0byB0aGUgY3VycmVudCBzZWxlY3RlZCBpdGVtIC0tPgorICAgICAgICA8YXR0cmlidXRlIG5hbWU9Il9zZWxlY3RlZCIgdmFsdWU9Im51bGwiIC8+ICAgIAorICAgICAgICAKKyAgICAgICAgPG1ldGhvZCBuYW1lPSJhZGRBbmRTZWxlY3RJdGVtIiBhcmdzPSJ0eHQsaWQiPgorICAgICAgICAgICAgdGhpcy5jYmxpc3QuYWRkSXRlbSh0eHQsaWQpOworICAgICAgICAgICAgdGhpcy5jdXJyZW50VmFsdWUgPSBpZDsKKyAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCd0ZXh0Jyx0eHQpOworICAgICAgICA8L21ldGhvZD4gICAgCisgICAgICAgIAorICAgICAgICA8bWV0aG9kIG5hbWU9InNldFNlbGVjdGlvbiIgYXJncz0ib2JqIj4KKyAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkID0gb2JqOworICAgICAgICAgICAgdGhpcy5jdXJyZW50VmFsdWUgPSBvYmoudmFsdWU7CisgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgndGV4dCcsb2JqLnRleHQpOworICAgICAgICAgICAgdGhpcy5zZXRPcGVuKGZhbHNlLHRydWUpOworICAgICAgICAgICAgdGhpcy5vbnNlbGVjdC5zZW5kRXZlbnQoKTsKKyAgICAgICAgPC9tZXRob2Q+ICAgIAorICAgICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25zZWxlY3QiIGFyZ3M9Im9iaiIgLz4KKyAgICAgICAgCisgICAgICAgIDxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPgorICAgICAgICAgICAgcmV0dXJuIHRoaXMuY3VycmVudFZhbHVlOworICAgICAgICA8L21ldGhvZD4KKworICAgICAgICAgICAgICAgICAgICA8IS0tIGFycm93IGRvd24gYW5kIHVwIGJvdGggcG9wdXAgZmxvYXRpbmdsaXN0LCBhbmQgcGFzcyB0aGUga2V5IGV2ZW50IHRvIGl0IC0tPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmtleWRvd24iIGFyZ3M9ImtleSI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICAvL0RlYnVnLndyaXRlKCJvbmtleWRvd246ICIsa2V5KTsKKyAgICAgICAgICAgICAgICAvLyAzOCBpcyB1cC1hcnJvdworICAgICAgICAgICAgICAgIC8vIDQwIGlzIGRvd24tYXJyb3cKKyAgICAgICAgICAgICAgICAvLyAzMiBpcyBzcGFjZQorICAgICAgICAgICAgICAgIC8vIDEzIGlzIHJldHVybgorICAgICAgICAgICAgICAgIGlmICgoa2V5PT0zOCkgfHwgKGtleT09NDApKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5pc29wZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0T3Blbih0cnVlLCB0cnVlKTsgLy8gb3Blbiwgd2l0aEtleQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgbHouRm9jdXMuc2V0Rm9jdXModGhpcy5jYmxpc3QsIHRydWUpOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIC8vIHBhc3MgdGhlIGtleSBldmVudCBvbiB0byB0aGUgZmxvYXRpbmdsaXN0CisgICAgICAgICAgICAgICAgICAgIHRoaXMuY2JsaXN0Lm9ua2V5ZG93bi5zZW5kRXZlbnQoa2V5KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGtleT09MjcpeworICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNvcGVuKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldE9wZW4odHJ1ZSwgdHJ1ZSk7IC8vIG9wZW4sIHdpdGhLZXkKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGx6LkZvY3VzLnNldEZvY3VzKHRoaXMuY2JsaXN0LCB0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB0aGlzLmNibGlzdC5vbmtleWRvd24uc2VuZEV2ZW50KGtleSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrZXkhPTEzICYmIGtleSE9OSl7CisgICAgICAgICAgICAgICAgICAgIC8vRG9uJ3QgaGFuZGxlIEVudGVyIGFuZCBUYWIgRXZlbnRzIGNhdXNlIGl0IHdpbGwgb3BlbiB0aGUgbGlzdEl0ZW1zCisgICAgICAgICAgICAgICAgICAgIC8vLy9EZWJ1Zy53cml0ZSgib25rZXlkb3duIHR4dDogIix0aGlzLmdldFRleHQoKSk7CisgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5pbml0U2VsZWN0KXsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vLy9EZWJ1Zy53cml0ZSgib252YWx1ZTogIix0eHQsdGhpcyk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMudGltZXJJc0luaXRlZCl7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy50aW1lcklzSW5pdGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnRpbWVyRGVsZWdhdGUgPSBuZXcgTHpEZWxlZ2F0ZSggdGhpcywgInZhbGlkYXRlZFRleHQiICk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8vL0RlYnVnLndyaXRlKCIrKysrKysrKysrKysrKysrKyBhZGRUaW1lciIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vRGVidWcud3JpdGUoIisrKysrKysrKysrKysrKysrIHJlbW92ZVRpbWVyICIsbHouVGltZXIuY291bnRUaW1lcnMoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHouVGltZXIuYWRkVGltZXIoIHRoaXMudGltZXJEZWxlZ2F0ZSwgdGhpcy50eXBldGltZSApOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vRGVidWcud3JpdGUoIiMjIyMjIyMjIyMjIyMjIyByZXNldFRpbWVyIE5PIEFERElORyAiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvL0RlYnVnLndyaXRlKCIjIyMjIyMjIyMjIyMjIyMgcmVzZXRUaW1lciAiLGx6LlRpbWVyLmNvdW50VGltZXJzKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGx6LlRpbWVyLnJlc2V0VGltZXIoIHRoaXMudGltZXJEZWxlZ2F0ZSwgdGhpcy50eXBldGltZSApOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pbml0U2VsZWN0ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAKKyAgICAgICAgPG1ldGhvZCBuYW1lPSJ2YWxpZGF0ZWRUZXh0Ij4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIC8vLy9EZWJ1Zy53cml0ZSgidmFsaWRhdGVkVGV4dDogIix0aGlzLmdldFRleHQoKSk7CisgICAgICAgICAgICAgICAgLy90aGlzLnJlc2V0KCk7CisgICAgICAgICAgICAgICAgaWYgKCF0aGlzLmluaXRTZWxlY3QpeworICAgICAgICAgICAgICAgICAgICB2YXIgdCA9IHRoaXMudmFsaWRhdGVfbWV0aG9kKHRoaXMuZ2V0VGV4dCgpKTsKKyAgICAgICAgICAgICAgICAgICAgLy8vL0RlYnVnLndyaXRlKCd0OiAnLHQubGVuZ3RoKTsKKyAgICAgICAgICAgICAgICAgICAgLy90aGlzLnBhcmVudC5fY2JsaXN0LnNldEF0dHJpYnV0ZSgndmlzaWJsZScsdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuY2JsaXN0LnJlbW92ZUFsbEl0ZW1zKCk7CisgICAgICAgICAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPHQubGVuZ3RoO2krKyl7CisgICAgICAgICAgICAgICAgICAgICAgICAvLy8vRGVidWcud3JpdGUodFtpXVt0aGlzLnJlc3VsdE5hbWVdLHRbaV1bdGhpcy5yZXN1bHRJZF0pOworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jYmxpc3QuYWRkSXRlbSh0W2ldW3RoaXMucmVzdWx0TmFtZV0sdFtpXVt0aGlzLnJlc3VsdElkXSk7CisgICAgICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgCisKKyAgICAgICAgICAgICAgICAgICAgLy8vL0RlYnVnLndyaXRlKCJ2YWxpZGF0ZVRleHQ6ICIsdGhpcy5nZXRUZXh0KCkpOworICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuaXNvcGVuKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNldE9wZW4odHJ1ZSwgdHJ1ZSk7IC8vIG9wZW4sIHdpdGhLZXkKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB0aGlzLnRpbWVySXNJbml0ZWQgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICB0aGlzLmluaXRTZWxlY3Q9ZmFsc2U7CisgICAgICAgICAgICAgICAgICAgIHRoaXMudGltZXJJc0luaXRlZCA9IGZhbHNlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L21ldGhvZD4JCisgICAgICAgIAorICAgICAgICA8YXR0cmlidXRlIG5hbWU9Imlzb3BlbiIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiBzZXR0ZXI9InRoaXMuc2V0T3Blbihpc29wZW4pIiAvPgorICAgICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25pc29wZW4iIGFyZ3M9ImJvb2wiIC8+CisgICAgICAgIAorICAgICAgICA8bWV0aG9kIG5hbWU9InNldE9wZW4iIGFyZ3M9Im9wZW4sIHdpdGhrZXkiID4KKyAgICAgICAgICAgIGlmICghdGhpcy5pc2luaXRlZCkgeworICAgICAgICAgICAgICAgIHRoaXMuaXNvcGVuID0gb3BlbjsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAob3BlbikgeyAvLyBvcGVuIGNvbWJveAorICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzb3BlbikgcmV0dXJuOyAvLyB0ZW5kcyB0byBnZXQgY2FsbGVkIG1vcmUgdGhhbiBvbmNlLCBlc3Agd2hlbgorCisgICAgICAgICAgICAgICAgdGhpcy5jYmxpc3QuYnJpbmdUb0Zyb250KCk7CisgICAgICAgICAgICAgICAgdGhpcy5jYmxpc3Quc2V0VmlzaWJsZSh0cnVlKTsKKworICAgICAgICAgICAgICAgIHRoaXMuaXNvcGVuID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBpZiAodGhpc1snb25pc29wZW4nXSkgdGhpcy5vbmlzb3Blbi5zZW5kRXZlbnQodHJ1ZSk7CisgICAgICAgICAgICB9IGVsc2UgeyAvLyBjbG9zZSBjb21ib3gKKyAgICAgICAgICAgICAgICBpZiAoIXRoaXNbJ2lzb3BlbiddKSByZXR1cm47CisgICAgICAgICAgICAgICAgdGhpcy5pc29wZW4gPSBmYWxzZTsKKworICAgICAgICAgICAgICAgIHRoaXMuY2JsaXN0LnNldFZpc2libGUoZmFsc2UpOworICAgICAgICAgICAgICAgIGlmICh0aGlzWydvbmlzb3BlbiddKSB0aGlzLm9uaXNvcGVuLnNlbmRFdmVudChmYWxzZSk7CisgICAgICAgICAgICAgICAgaWYgKCBsei5Gb2N1cy5nZXRGb2N1cygpID09IHRoaXMuY2JsaXN0ICkgeworICAgICAgICAgICAgICAgICAgICBsei5Gb2N1cy5zZXRGb2N1cyh0aGlzLCB3aXRoa2V5KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIDwvbWV0aG9kPiAgICAgICAgICAgCisKKyAgICAgICAgPGZsb2F0aW5nbGlzdCBuYW1lPSJjYmxpc3QiCisgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IiR7b3duZXIud2lkdGggLSAxfSIKKyAgICAgICAgICAgICAgICAgICAgICBib3JkZXJzaXplPSIke3RoaXMub3duZXIuYm9yZGVyc2l6ZX0iCisgICAgICAgICAgICAgICAgICAgICAgc3BhY2luZz0iJHt0aGlzLm93bmVyLnNwYWNpbmd9IgorICAgICAgICAgICAgICAgICAgICAgIHZpc2libGU9ImZhbHNlIgorICAgICAgICAgICAgICAgICAgICAgIHNob3duaXRlbXM9IiR7dGhpcy5vd25lci5zaG93bml0ZW1zfSIKKyAgICAgICAgICAgICAgICAgICAgICBhdHRhY2g9ImJvdHRvbSIKKyAgICAgICAgICAgICAgICAgICAgICBhdHRhY2hvZmZzZXQ9IiR7dGhpcy5vd25lci5hdHRhY2hvZmZzZXR9IgorICAgICAgICAgICAgICAgICAgICAgIG11bHRpc2VsZWN0PSJmYWxzZSIKKyAgICAgICAgICAgICAgICAgICAgICBhdXRvc2Nyb2xsYmFyPSIke293bmVyLmF1dG9zY3JvbGxiYXJ9IiA+CisKKyAgICAgICAgICAgIDxtZXRob2QgbmFtZT0iX2Rva2V5dXAiIGFyZ3M9ImtjIgorICAgICAgICAgICAgICAgICAgICBldmVudD0ib25rZXl1cCI+CisgICAgICAgICAgICAgICAgaWYgKGtjID09IDI3KSB7ICAvLyBlc2NhcGUgbmVlZHMgdG8gY2xvc2UgZmxvYXRpbmcgbGlzdAorICAgICAgICAgICAgICAgICAgICB0aGlzLm93bmVyLnNldE9wZW4oZmFsc2UpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIDwvbWV0aG9kPgorICAgICAgICAgICAgPG1ldGhvZCBuYW1lPSJyZW1vdmVBbGxJdGVtcyIgYXJncz0iaW5kZXgiPiAKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBlZyBpbiBfY29udGVudHZpZXcuc3Vidmlld3MpeworICAgICAgICAgICAgICAgICAgICBfcmVtb3ZlaXRlbShfY29udGVudHZpZXcuc3Vidmlld3NbZWddKTsgCisgICAgICAgICAgICAgICAgfSAKKyAgICAgICAgICAgIDwvbWV0aG9kPgkKKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uc2VsZWN0IiBhcmdzPSJvYmoiPgorICAgICAgICAgICAgICAgIC8vLy9EZWJ1Zy53cml0ZSgib2JqOiAiLG9iaik7CisgICAgICAgICAgICAgICAgdGhpcy5vd25lci5zZXRTZWxlY3Rpb24ob2JqKTsKKyAgICAgICAgICAgIDwvaGFuZGxlcj4JICAgICAgICAgICAgCQorICAgICAgICA8L2Zsb2F0aW5nbGlzdD4gICAgICAgIAorICAgICAgICAKKyAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siIHJlZmVyZW5jZT0ibHouR2xvYmFsTW91c2UiIGFyZ3M9IndobyI+CisgICAgICAgICAgIDwhW0NEQVRBWyAKKyAgICAgICAgICAgICAgIC8vbmVlZCB0byB1c2UgbHouR2xvYmFsTW91c2UsIHNpbmNlIHdlIGRvbid0IGdldCBjbGlja3MgaWYgd2UncmUKKyAgICAgICAgICAgICAgIC8vY2hlY2tlZC4gTkIgdGhhdCBsei5HbG9iYWxNb3VzZSBzZW5kcyBpdHMgZXZlbnRzIGJlZm9yZSB0aGUgdmlldworICAgICAgICAgICAgICAgLy9yZWNlaXZlcyB0aGUgZXZlbnRzLCBzbyB3ZSBjYW4ganVzdCB1bmxvY2sgaXQgaGVyZSwgYW5kIHRoZQorICAgICAgICAgICAgICAgLy9jaGVja2JveCBjYW4gZG8gaXRzIG5vcm1hbCBvbmNsaWNrIGhhbmRsaW5nLgorICAgICAgICAgICAgICAgLy9EZWJ1Zy53cml0ZSgib25jbGljayBsei5HbG9iYWxNb3VzZSIsbHouR2xvYmFsTW91c2Usd2hvKTsKKyAgICAgICAgICAgICAgIC8vaWYgKHdobyAhPSB0aGlzLmNibGlzdCAmJiB3aG8uY2hpbGRPZih0aGlzLmNibGlzdCkpeworICAgICAgICAgICAgICAgLy8gICAgdGhpcy5zZXRPcGVuKGZhbHNlLGZhbHNlKTsKKyAgICAgICAgICAgICAgIC8vfSAKKyAgICAgICAgICAgICAgIC8vIExQUC0zMTY1CisgICAgICAgICAgIF1dPgorICAgICAgICAgPC9oYW5kbGVyPiAgICAgICAgCisKKyAgICA8L2NsYXNzPgorCQorCisJPHZhbGlkVGV4dCB5PSIyMCIgd2lkdGg9IjI3MCIgbmFtZT0iX3ZhbGlkYm94IiAKKyAgICAgICAgc2hvd25pdGVtcz0iNyIgdmFsaWRhdGVfbWV0aG9kPSIkb25jZXsgY2FudmFzLnZhbGlkYXRlQ291bnRyeSB9IiAKKyAgICAgICAgcmVzdWx0SWQ9InN0YXRlX2lkIiByZXN1bHROYW1lPSJuYW1lIiAvPgorICAgIAorICAgIDxidXR0b24geD0iMzAwIiB5PSIyMCIgdGV4dD0iZ2V0VmFsdWVzIj4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICAvL0RlYnVnLndyaXRlKHBhcmVudC5fdmFsaWRib3guZ2V0VmFsdWUoKSk7CisgICAgICAgICAgICAvL0RlYnVnLndyaXRlKHBhcmVudC5fdmFsaWRib3guZ2V0VGV4dCgpKTsKKyAgICAgICAgICAgIC8vRGVidWcud3JpdGUocGFyZW50Ll92YWxpZGJveC5fc2VsZWN0ZWQpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9idXR0b24+CisgICAgCisgPC9jYW52YXM+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy90ZXN0L3NpbXBsZXRpbWVydGVzdC5senggYi9XZWJDb250ZW50L3NyYy90ZXN0L3NpbXBsZXRpbWVydGVzdC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTIxYmFiYQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL3Rlc3Qvc2ltcGxldGltZXJ0ZXN0Lmx6eApAQCAtMCwwICsxLDU4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGNhbnZhcyBoZWlnaHQ9IjQwMCIgZGVidWc9InRydWUiPgorICAgIAorICAgIDxpbmNsdWRlIGhyZWY9Imx6L2J1dHRvbi5sengiIC8+CisgCisgICAgPHNpbXBsZWxheW91dCBheGlzPSJ5IiBzcGFjaW5nPSIxMCIgLz4KKworICAgIDx0ZXh0IG5hbWU9Im15VGV4dCIgb3BhY2l0eT0iMC4wIiBiZ2NvbG9yPSIjQ0NDQ0NDIj5UaGUgSW52aXNpYmxlIE1hbjwvdGV4dD4KKyAgICAgCisgICAgIAorICAgIDxlZGl0dGV4dCA+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0idGltZXJEZWxlZ2F0ZSIgdmFsdWU9Im51bGwiLz4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJ0eXBldGltZSIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0iMjAwMCIvPgorICAgICAgICA8YXR0cmlidXRlIG5hbWU9InRpbWVySXNJbml0ZWQiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIvPgorICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib252YWx1ZSI+CisgICAgICAgICAgICAvL0RlYnVnLndyaXRlKCJvbnZhbHVlIik7CisgICAgICAgICAgICBpZiAoIXRoaXMudGltZXJJc0luaXRlZCl7CisgICAgICAgICAgICAgICAgdGhpcy50aW1lcklzSW5pdGVkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBjYW52YXMubXlUZXh0LnNldEF0dHJpYnV0ZSggIm9wYWNpdHkiLCAxLjAgKTsKKyAgICAgICAgICAgICAgICB0aGlzLnRpbWVyRGVsZWdhdGUgPSBuZXcgTHpEZWxlZ2F0ZSggdGhpcywgImZhZGVUZXh0IiApOworICAgICAgICAgICAgICAgIC8vRGVidWcud3JpdGUoIisrKysrKysrKysrKysrKysrIGFkZFRpbWVyIik7CisgICAgICAgICAgICAgICAgbHouVGltZXIuYWRkVGltZXIoIHRoaXMudGltZXJEZWxlZ2F0ZSwgdGhpcy50eXBldGltZSApOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvL0RlYnVnLndyaXRlKCIjIyMjIyMjIyMjIyMjIyMgcmVzZXRUaW1lciBOTyBBRERJTkcgIik7CisgICAgICAgICAgICAgICAgbHouVGltZXIucmVzZXRUaW1lciggdGhpcy50aW1lckRlbGVnYXRlLCB0aGlzLnR5cGV0aW1lICk7CisgICAgICAgICAgICB9CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgCisgICAgICAgIDxtZXRob2QgbmFtZT0iZmFkZVRleHQiPgorICAgICAgICAgICAgdGhpcy50aW1lcklzSW5pdGVkID0gZmFsc2U7CisgICAgICAgICAgICAvL0RlYnVnLndyaXRlKCJmYWRlVGV4dCAiKTsKKyAgICAgICAgICAgIGNhbnZhcy5teVRleHQuYW5pbWF0ZSggIm9wYWNpdHkiLCAwLjAsIDEwMDAgKTsKKyAgICAgICAgPC9tZXRob2Q+CisgICAgPC9lZGl0dGV4dD4KKyAgICAKKyAgICAKKyAKKyA8L2NhbnZhcz4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL3Rlc3Qvc3dmL0dvb2dsZS5zd2YgYi9XZWJDb250ZW50L3NyYy90ZXN0L3N3Zi9Hb29nbGUuc3dmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2MWUxZDMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy90ZXN0L3N3Zi9Hb29nbGUuc3dmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL3Rlc3Qvc3dmL21haW4ubHp4IGIvV2ViQ29udGVudC9zcmMvdGVzdC9zd2YvbWFpbi5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmVlNTU3YQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL3Rlc3Qvc3dmL21haW4ubHp4CkBAIC0wLDAgKzEsNzIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+CisKKzxjYW52YXMgZGVidWc9InRydWUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZvbnRzaXplPSIxNCIgdGl0bGU9Ik9wZW5NZWV0aW5ncyAtIENvbXB1dGVyIHRlc3RpbmciPgorCQorCTxkZWJ1ZyBmb250c2l6ZT0iMTQiIG9uaW5pdD0iRGVidWcuc2hvd0ludGVybmFsUHJvcGVydGllcyA9IHRydWUiLz4KKworPGJ1dHRvbiB0ZXh0PSJsb2FkIFNXRiI+CisgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgIDwhW0NEQVRBWworCSAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImxvYWQgU1dGIik7CisJICAgICAgICAvL3BhcmVudC5teVZpZXcuX3N3ZlZpZXcuc2V0QXR0cmlidXRlKCJzcmMiLCJHb29nbGUuc3dmIik7CisJICAgICAgICBwYXJlbnQubXlWaWV3Ll9zd2ZWaWV3LnNldFNvdXJjZSgiaHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9Eb3dubG9hZEhhbmRsZXI/ZmlsZU5hbWU9R29vZ2xlLnN3ZiZtb2R1bGVOYW1lPXZpZGVvY29uZjEmcGFyZW50UGF0aD0vR29vZ2xlJnJvb21faWQ9MSZzaWQ9YTQ5ODcyNjg1MmI2NDlkYTNjY2U0YTVlZTljYjNhOWIiKTsKKwkgICAgICAgIC8vcGFyZW50Lm15Vmlldy5fc3dmVmlldy5zZXRTb3VyY2UoImh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3MvR29vZ2xlLnN3ZiIpOworICAgICAgICBdXT4KKyAgICA8L2hhbmRsZXI+Cis8L2J1dHRvbj4KKworPHZpZXcgbmFtZT0ibXlWaWV3IiB5PSIyMCI+CisgICAgPCEtLQorICAgIHBsYXk9ImZhbHNlIiBzdHJldGNoZXM9ImJvdGgiCisgICAgIC0tPgorICAgIDx2aWV3IG5hbWU9Il9zd2ZWaWV3IiA+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZnJhbWUiIGFyZ3M9ImkiPgorICAgICAgICAgICAgLy8vL0RlYnVnLndyaXRlKCJvbmZyYW1lIixpKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25wbGF5IiBhcmdzPSJpIj4KKyAgICAgICAgICAgIC8vLy9EZWJ1Zy53cml0ZSgib25wbGF5IixpKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25zdG9wIiBhcmdzPSJpIj4KKyAgICAgICAgICAgIC8vLy9EZWJ1Zy53cml0ZSgib25zdG9wIixpKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25sb2FkIj4KKyAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgIERlYnVnLndyaXRlKCJvbmxvYWQ6ICIsdGhpcyk7CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmVycm9yIiBhcmdzPSJlcnJvciI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICBEZWJ1Zy53cml0ZSgib25lcnJvciAiK2Vycm9yKTsKKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9udGltZW91dCIgYXJncz0iZXJyb3IiPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgRGVidWcud3JpdGUoIm9udGltZW91dCAiK2Vycm9yKTsKKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+IAorICAgIDwvdmlldz4KKzwvdmlldz4KKworPC9jYW52YXM+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy90ZXN0L3N3Zi9tYWluLmx6eC5senI9c3dmOC5zd2YgYi9XZWJDb250ZW50L3NyYy90ZXN0L3N3Zi9tYWluLmx6eC5senI9c3dmOC5zd2YKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc2NjYzMAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL3Rlc3Qvc3dmL21haW4ubHp4Lmx6cj1zd2Y4LnN3ZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy90ZXN0L3Rlc3QtYXJyb3cubHp4IGIvV2ViQ29udGVudC9zcmMvdGVzdC90ZXN0LWFycm93Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YmNkMjliCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvdGVzdC90ZXN0LWFycm93Lmx6eApAQCAtMCwwICsxLDI4NSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKworPGNhbnZhcyBkZWJ1Zz0idHJ1ZSIgd2lkdGg9IjUwMCIgaGVpZ2h0PSIxMDAlIiA+CisJCisJPGRlYnVnIG9uaW5pdD0iRGVidWcuc2hvd0ludGVybmFsUHJvcGVydGllcyA9IHRydWUiLz4KKwkKKzxjbGFzcyBuYW1lPSJkcmF3Vmlld05ldyIgZXh0ZW5kcz0iZHJhd3ZpZXciIGNhY2hlYml0bWFwPSJmYWxzZSIgeD0iLTEiIHk9Ii0xIiA+CisgICAgCis8L2NsYXNzPgorCis8ZHJhd3ZpZXc+CisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib25jb25zdHJ1Y3QiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIC8vdmFyIHBTdGFydCA9IHsneCc6MTAwLCd5JzoxMDB9OworICAgICAgICAgICAgLy92YXIgcEVuZCA9IHsneCc6MjAwLCd5JzoyMDB9OworICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgcCA9IG5ldyBmbGFzaC5nZW9tLlBvaW50KDEwMCwxMDApOworICAgICAgICAgICAgdmFyIHBFbmQgPSBuZXcgZmxhc2guZ2VvbS5Qb2ludCgxMDAsMjAwKTsKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJwIixwKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIG5vcm1hbGl6ZWRQb2ludCA9IG5ldyBmbGFzaC5nZW9tLlBvaW50KC0yLCA0KTsKKwkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKG5vcm1hbGl6ZWRQb2ludC5sZW5ndGgpOyAvLyA1CisJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZShub3JtYWxpemVkUG9pbnQudG9TdHJpbmcoKSk7IC8vICh4PTMsIHk9NCkKKwkJCW5vcm1hbGl6ZWRQb2ludC5ub3JtYWxpemUoMTApOworCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUobm9ybWFsaXplZFBvaW50Lmxlbmd0aCk7IC8vIDEwCisJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZShub3JtYWxpemVkUG9pbnQudG9TdHJpbmcoKSk7IC8vICh4PTYsIHk9OCkKKyAgICAgICAgICAgIAorICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgbm9ybWFsaXplZFBvaW50ID0gbmV3IGZsYXNoLmdlb20uUG9pbnQoMiwgLTQpOworICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUobm9ybWFsaXplZFBvaW50Lmxlbmd0aCk7IC8vIDUKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKG5vcm1hbGl6ZWRQb2ludC50b1N0cmluZygpKTsgLy8gKHg9MywgeT00KQorICAgICAgICAgICAgbm9ybWFsaXplZFBvaW50Lm5vcm1hbGl6ZSgxMCk7CisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZShub3JtYWxpemVkUG9pbnQubGVuZ3RoKTsgLy8gMTAKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKG5vcm1hbGl6ZWRQb2ludC50b1N0cmluZygpKTsgLy8gKHg9NiwgeT04KQorICAgICAgICAgICAgCisgICAgICAgICAgICAvL25vcm1hbGl6ZWRQb2ludC5ub3JtYWxpemUoNSk7CisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKG5vcm1hbGl6ZWRQb2ludC5sZW5ndGgpOyAvLyAxMAorICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZShub3JtYWxpemVkUG9pbnQudG9TdHJpbmcoKSk7IC8vICh4PTMsIHk9NCkKKworICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIiMjIyMjIyMjIyMjIyMjIyMjIyIpOworICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgcEFycm93U3RhcnQgPSBuZXcgZmxhc2guZ2VvbS5Qb2ludCgxMDAsMTAwKTsKKwkgICAgICAgIHZhciBwQXJyb3dFbmQgPSBuZXcgZmxhc2guZ2VvbS5Qb2ludCgyMDAsMTAwKTsKKwkgICAgICAgIAorCSAgICAgICAgdmFyIG9iaiA9IG5ldyBsei5kcmF3Vmlld05ldyhjYW52YXMpOworCSAgICAgICAgCisJICAgICAgICB0aGlzLmRyYXdBcnJvdyhvYmoscEFycm93U3RhcnQscEFycm93RW5kLDQpOworICAgICAgICBdXT4KKyAgICA8L2hhbmRsZXI+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJ0ZXN0Ij4KKyAgICAgICAgdmFyIHAxID0gcC5ub3JtYWxpemUoMSk7CisgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJwMSIscDEpOworICAgICAgICAKKyAgICAgICAgdmFyIHAxMSA9IGZsYXNoLmdlb20uUG9pbnQuaW50ZXJwb2xhdGUocCxwRW5kLDAuNSk7CisgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJwMTEiLHAxMSk7CisgICAgICAgIAorICAgICAgICAKKyAgICAgICAgdmFyIHAxMiA9IHBFbmQuc3VidHJhY3QocCk7CisgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJwMTIiLHAxMik7CisgICAgICAgIAorICAgICAgICAKKyAgICAgICAgdmFyIHBBcnJvd1N0YXJ0ID0gbmV3IGZsYXNoLmdlb20uUG9pbnQoMTAwLDEwMCk7CisgICAgICAgIHZhciBwQXJyb3dFbmQgPSBuZXcgZmxhc2guZ2VvbS5Qb2ludCgyMDAsMjAwKTsKKyAgICAgICAgCisgICAgICAgIHZhciBvYmogPSBuZXcgbHouZHJhd1ZpZXdOZXcoY2FudmFzKTsKKyAgICAgICAgCisgICAgICAgIHRoaXMuZHJhd0Fycm93KG9iaixwQXJyb3dTdGFydCxwQXJyb3dFbmQsNCk7CisgICAgICAgIAorICAgICAgICBwQXJyb3dTdGFydCA9IG5ldyBmbGFzaC5nZW9tLlBvaW50KDMwMCwzMDApOworICAgICAgICBwQXJyb3dFbmQgPSBuZXcgZmxhc2guZ2VvbS5Qb2ludCgyMDAsMjAwKTsKKyAgICAgICAgb2JqID0gbmV3IGx6LmRyYXdWaWV3TmV3KGNhbnZhcyk7CisgICAgICAgIHRoaXMuZHJhd0Fycm93KG9iaixwQXJyb3dTdGFydCxwQXJyb3dFbmQsMjApOworICAgICAgICAKKyAgICAgICAgcEFycm93U3RhcnQgPSBuZXcgZmxhc2guZ2VvbS5Qb2ludCg2MDAsMzAwKTsKKyAgICAgICAgcEFycm93RW5kID0gbmV3IGZsYXNoLmdlb20uUG9pbnQoMjAwLDEwMCk7CisgICAgICAgIG9iaiA9IG5ldyBsei5kcmF3Vmlld05ldyhjYW52YXMpOworICAgICAgICB0aGlzLmRyYXdBcnJvdyhvYmoscEFycm93U3RhcnQscEFycm93RW5kLDIwKTsKKyAgICAgICAgCisgICAgICAgIHZhciBwMSA9IG5ldyBmbGFzaC5nZW9tLlBvaW50KC02MCwgLTEwMCk7CisgICAgICAgIHZhciBwMiA9IG5ldyBmbGFzaC5nZW9tLlBvaW50KDIwLCA1MCk7CisgICAgICAgIHZhciBmID0gMC41OworICAgICAgICAKKyAgICAgICAgdmFyIHAzID0gZmxhc2guZ2VvbS5Qb2ludC5pbnRlcnBvbGF0ZShwMSxwMixmKTsKKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInAzIixwMyk7CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJkcmF3QXJyb3ciIGFyZ3M9ImdyYXBoaWNzLHN0YXJ0LGVuZCx0aGlja25lc3MiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAvLyhncmFwaGljczpHcmFwaGljcywKKyAgICAvLyAgICAgICAgICAgIHN0YXJ0OlBvaW50LGVuZDpQb2ludCwKKyAgICAvLyAgICAgICAgICAgIHN0eWxlOk9iamVjdD1udWxsKTp2b2lkIHsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKHN0YXJ0LmVxdWFscyhlbmQpKSByZXR1cm47CisgICAgICAgICAgICAKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIGFycm93U3R5bGUgPSB7J3NoYWZ0Q29udHJvbFBvc2l0aW9uJzowLjUsCisgICAgICAgICAgICAgICAgICAgICdzaGFmdENvbnRyb2xTaXplJzowLjUsCisgICAgICAgICAgICAgICAgICAgICdoZWFkTGVuZ3RoJzp0aGlja25lc3MqNSwgLy9QaXhlbCBMZW5ndGggb2YgYXJyb3cgaGVhZAorICAgICAgICAgICAgICAgICAgICAnaGVhZFdpZHRoJzp0aGlja25lc3MqNSwvL1JlbGF0aXZlIHdpZHRoIG9mIGFycm93IGhlYWQKKyAgICAgICAgICAgICAgICAgICAgJ2VkZ2VDb250cm9sUG9zaXRpb24nOjAuNSwKKyAgICAgICAgICAgICAgICAgICAgJ2VkZ2VDb250cm9sU2l6ZSc6MC41LAorICAgICAgICAgICAgICAgICAgICAnc2hhZnRQb3NpdGlvbic6MCwKKyAgICAgICAgICAgICAgICAgICAgJ3NoYWZ0VGhpY2tuZXNzJzp0aGlja25lc3MKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIGZ1bGxWZWN0OlBvaW50ID0gZW5kLnN1YnRyYWN0KHN0YXJ0KTsKKyAgICAgICAgICAgIHZhciBoYWxmV2lkdGg6TnVtYmVyID0gKGFycm93U3R5bGUuaGVhZFdpZHRoICE9IC0xKSA/IGFycm93U3R5bGUuaGVhZFdpZHRoLzIgOiBhcnJvd1N0eWxlLmhlYWRMZW5ndGgvMjsgCisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vRmlndXJlIG91dCB0aGUgbGluZSBzdGFydC9lbmQgcG9pbnRzCisgICAgICAgICAgICB2YXIgc3RhcnROb3JtID0gbmV3IGZsYXNoLmdlb20uUG9pbnQoZnVsbFZlY3QueSwtZnVsbFZlY3QueCk7CisgICAgICAgICAgICBzdGFydE5vcm0ubm9ybWFsaXplKGFycm93U3R5bGUuc2hhZnRUaGlja25lc3MvMik7CisgICAgICAgICAgICB2YXIgc3RhcnQxID0gc3RhcnQuYWRkKHN0YXJ0Tm9ybSk7CisgICAgICAgICAgICB2YXIgc3RhcnQyID0gc3RhcnQuc3VidHJhY3Qoc3RhcnROb3JtKTsKKyAgICAgICAgICAgIHZhciBlbmQxID0gZW5kLmFkZChzdGFydE5vcm0pOworICAgICAgICAgICAgdmFyIGVuZDIgPSBlbmQuc3VidHJhY3Qoc3RhcnROb3JtKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic3RhcnROb3JtOiAiLHN0YXJ0Tm9ybS50b1N0cmluZygpKTsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInN0YXJ0MTogIixzdGFydDEudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJzdGFydDI6ICIsc3RhcnQyLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZW5kMTogIixlbmQxLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZW5kMjogIixlbmQyLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvL2ZpZ3VyZSBvdXQgd2hlcmUgdGhlIGFycm93IGhlYWQgc3RhcnRzCisgICAgICAgICAgICB2YXIgaGVhZFBudCA9IGZ1bGxWZWN0LmNsb25lKCk7CisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJoZWFkUG50IDE6ICIsaGVhZFBudC50b1N0cmluZygpKTsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImhlYWRQbnQubGVuZ3RoIDE6ICIsaGVhZFBudC5sZW5ndGgpOworICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiYXJyb3dTdHlsZS5oZWFkTGVuZ3RoIDE6ICIsYXJyb3dTdHlsZS5oZWFkTGVuZ3RoKTsKKyAgICAgICAgICAgIGhlYWRQbnQubm9ybWFsaXplKGhlYWRQbnQubGVuZ3RoLWFycm93U3R5bGUuaGVhZExlbmd0aCk7CisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJoZWFkUG50IDI6ICIsaGVhZFBudC50b1N0cmluZygpKTsKKyAgICAgICAgICAgIGhlYWRQbnQgPSBoZWFkUG50LmFkZChzdGFydCk7CisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJoZWFkUG50IDM6ICIsaGVhZFBudC50b1N0cmluZygpKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy9jYWxjdWxhdGUgdGhlIGFycm93aGVhZCBjb3JuZXJzCisgICAgICAgICAgICB2YXIgaGVhZFBudE5vcm0gPSBzdGFydE5vcm0uY2xvbmUoKTsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImhlYWRQbnROb3JtIF5eOiAiLGhlYWRQbnROb3JtLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiaGFsZldpZHRoIF5eOiAiLGhhbGZXaWR0aCk7CisgICAgICAgICAgICBoZWFkUG50Tm9ybS5ub3JtYWxpemUoaGFsZldpZHRoKTsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImhlYWRQbnROb3JtOiAiLGhlYWRQbnROb3JtLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgdmFyIGVkZ2UxID0gaGVhZFBudC5hZGQoaGVhZFBudE5vcm0pOworICAgICAgICAgICAgdmFyIGVkZ2UyID0gaGVhZFBudC5zdWJ0cmFjdChoZWFkUG50Tm9ybSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImVkZ2UxOiAiLGVkZ2UxLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZWRnZTI6ICIsZWRnZTIudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vRmlndXJlIG91dCB3aGVyZSB0aGUgYXJyb3cgY29ubmVjdHMgdGhlIHRoZSBzaGFmdCwgdGhlbiBjYWxjIHRoZSBpbnRlcnNlY3Rpb25zCisgICAgICAgICAgICB2YXIgc2hhZnRDZW50ZXIgPSBmbGFzaC5nZW9tLlBvaW50LmludGVycG9sYXRlKGVuZCxoZWFkUG50LGFycm93U3R5bGUuc2hhZnRQb3NpdGlvbik7CisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJlbmQ6ICIsZW5kLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiaGVhZFBudCIsaGVhZFBudC50b1N0cmluZygpKTsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImFycm93U3R5bGUuc2hhZnRQb3NpdGlvbjogIixhcnJvd1N0eWxlLnNoYWZ0UG9zaXRpb24pOworICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2hhZnRDZW50ZXIiLHNoYWZ0Q2VudGVyLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgdmFyIGludGVyMSA9IHRoaXMuZ2V0TGluZUludGVyc2VjdGlvbihzdGFydDEsZW5kMSxzaGFmdENlbnRlcixlZGdlMSk7CisgICAgICAgICAgICB2YXIgaW50ZXIyID0gdGhpcy5nZXRMaW5lSW50ZXJzZWN0aW9uKHN0YXJ0MixlbmQyLHNoYWZ0Q2VudGVyLGVkZ2UyKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiaW50ZXIxOiAiLGludGVyMS50b1N0cmluZygpKTsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImludGVyMjogIixpbnRlcjIudG9TdHJpbmcoKSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIC8vRmlndXJlIG91dCB0aGUgY29udHJvbCBwb2ludHMKKyAgICAgICAgICAgIHZhciBlZGdlQ2VudGVyID0gZmxhc2guZ2VvbS5Qb2ludC5pbnRlcnBvbGF0ZShlbmQsaGVhZFBudCxhcnJvd1N0eWxlLmVkZ2VDb250cm9sUG9zaXRpb24pOworICAgICAgICAgICAgdmFyIGVkZ2VOb3JtID0gc3RhcnROb3JtLmNsb25lKCk7CisgICAgICAgICAgICBlZGdlTm9ybS5ub3JtYWxpemUoaGFsZldpZHRoKmFycm93U3R5bGUuZWRnZUNvbnRyb2xTaXplKTsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImhhbGZXaWR0aCphcnJvd1N0eWxlLmVkZ2VDb250cm9sU2l6ZTogIisoaGFsZldpZHRoKmFycm93U3R5bGUuZWRnZUNvbnRyb2xTaXplKSk7CisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJlZGdlTm9ybTogIitlZGdlTm9ybS50b1N0cmluZygpKTsKKyAgICAgICAgICAgIHZhciBlZGdlQ250cmwxID0gZWRnZUNlbnRlci5hZGQoZWRnZU5vcm0pOworICAgICAgICAgICAgdmFyIGVkZ2VDbnRybDIgPSBlZGdlQ2VudGVyLnN1YnRyYWN0KGVkZ2VOb3JtKTsKKworICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZWRnZUNudHJsMTogIixlZGdlQ250cmwxLnRvU3RyaW5nKCkpOworICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZWRnZUNudHJsMjogIixlZGdlQ250cmwyLnRvU3RyaW5nKCkpOworCisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJtb3ZlVG86ICIsc3RhcnQxLngsc3RhcnQxLnkpOworICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgibGluZVRvIixpbnRlcjEueCxpbnRlcjEueSk7CisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJsaW5lVG8iLGVkZ2UxLngsZWRnZTEueSk7CisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJxdWFkcmF0aWNDdXJ2ZVRvIixlZGdlQ250cmwxLngsZWRnZUNudHJsMS55LGVuZC54LGVuZC55KTsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInF1YWRyYXRpY0N1cnZlVG8iLGVkZ2VDbnRybDIueCxlZGdlQ250cmwyLnksZWRnZTIueCxlZGdlMi55KTsKKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImxpbmVUbyIsaW50ZXIyLngsaW50ZXIyLnkpOworICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgibGluZVRvIixzdGFydDIueCxzdGFydDIueSk7CisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJsaW5lVG8iLHN0YXJ0MS54LHN0YXJ0MS55KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZ3JhcGhpY3MubW92ZVRvKHN0YXJ0MS54LHN0YXJ0MS55KTsKKyAgICAgICAgICAgIGdyYXBoaWNzLmxpbmVUbyhpbnRlcjEueCxpbnRlcjEueSk7CisgICAgICAgICAgICBncmFwaGljcy5saW5lVG8oZWRnZTEueCxlZGdlMS55KTsKKyAgICAgICAgICAgIGdyYXBoaWNzLnF1YWRyYXRpY0N1cnZlVG8oZWRnZUNudHJsMS54LGVkZ2VDbnRybDEueSxlbmQueCxlbmQueSk7CisgICAgICAgICAgICBncmFwaGljcy5xdWFkcmF0aWNDdXJ2ZVRvKGVkZ2VDbnRybDIueCxlZGdlQ250cmwyLnksZWRnZTIueCxlZGdlMi55KTsKKyAgICAgICAgICAgIGdyYXBoaWNzLmxpbmVUbyhpbnRlcjIueCxpbnRlcjIueSk7CisgICAgICAgICAgICBncmFwaGljcy5saW5lVG8oc3RhcnQyLngsc3RhcnQyLnkpOworICAgICAgICAgICAgZ3JhcGhpY3MubGluZVRvKHN0YXJ0MS54LHN0YXJ0MS55KTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgZ3JhcGhpY3Muc3Ryb2tlU3R5bGUgPSAweDAwMDAwMDsKKyAgICAgICAgICAgIGdyYXBoaWNzLnN0cm9rZSgpOworCisgICAgICAgICAgICBncmFwaGljcy5maWxsU3R5bGUgPSAweDAwMDAwMDsKKyAgICAgICAgICAgIGdyYXBoaWNzLmZpbGwoKTsKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJnZXRMaW5lSW50ZXJzZWN0aW9uIiBhcmdzPSJhMSxhMixiMSxiMiI+CisgICAgICAgIDwhW0NEQVRBWyAKKyAgICAgICAgCisgICAgICAgICAgICAvL2NhbGN1bGF0ZSBkaXJlY3Rpb25hbCBjb25zdGFudHMKKyAgICAgICAgICAgIHZhciBrMSA9IChhMi55LWExLnkpIC8gKGEyLngtYTEueCk7CisgICAgICAgICAgICB2YXIgazIgPSAoYjIueS1iMS55KSAvIChiMi54LWIxLngpOworICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBpZiB0aGUgZGlyZWN0aW9uYWwgY29uc3RhbnRzIGFyZSBlcXVhbCwgdGhlIGxpbmVzIGFyZSBwYXJhbGxlbCwKKyAgICAgICAgICAgIC8vIG1lYW5pbmcgdGhlcmUgaXMgbm8gaW50ZXJzZWN0aW9uIHBvaW50LgorICAgICAgICAgICAgaWYoIGsxID09IGsyICkgcmV0dXJuIG51bGw7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciB4ID0gMDsKKyAgICAgICAgICAgIHZhciB5ID0gMDsKKyAgICAgICAgICAgIHZhciBtMSA9IDA7CisgICAgICAgICAgICB2YXIgbTIgPSAwOworICAgICAgICAgICAgCisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJrMSIsazEpOworICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiazIiLGsyKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgLy8gYW4gaW5maW5pdGUgZGlyZWN0aW9uYWwgY29uc3RhbnQgbWVhbnMgdGhlIGxpbmUgaXMgdmVydGljYWwKKyAgICAgICAgICAgIGlmKCAhaXNGaW5pdGUoazEpICkgeworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImsxIF5eIDAiKTsKKyAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJrMiIsazIsKGIyLnktYjEueSkpOworICAgICAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImIxLmdldFkoKTogIitiMS55KTsKKyAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJiMi5nZXRZKCk6ICIrYjIueSk7CisgICAgICAgICAgICAgICAgLy8gc28gdGhlIGludGVyc2VjdGlvbiBtdXN0IGJlIGF0IHRoZSB4IGNvb3JkaW5hdGUgb2YgdGhlIGxpbmUKKyAgICAgICAgICAgICAgICB4ID0gYTEueDsKKyAgICAgICAgICAgICAgICBtMiA9IGIxLnkgLSBrMiAqIGIxLng7CisgICAgICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgibTIiLG0yKTsKKyAgICAgICAgICAgICAgICB5ID0gazIgKiB4ICsgbTI7CisgICAgICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgieSIseSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGZvciBsaW5lIDIKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoICFpc0Zpbml0ZShrMikgKSB7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiazIgXiAwIik7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgbTEgPSBhMS55IC0gazEgKiBhMS54OworICAgICAgICAgICAgICAgIHggPSBiMS54OworICAgICAgICAgICAgICAgIHkgPSBrMSAqIHggKyBtMTsKKworICAgICAgICAgICAgLy8gaWYgbmVpdGhlciBvZiB0aGUgbGluZXMgYXJlIHZlcnRpY2FsCisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm5laXRoZXIiKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIG0xID0gYTEueSAtIGsxICogYTEueDsKKyAgICAgICAgICAgICAgICBtMiA9IGIxLnkgLSBrMiAqIGIxLng7ICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB4ID0gKG0xLW0yKSAvIChrMi1rMSk7CisgICAgICAgICAgICAgICAgeSA9IGsxICogeCArIG0xOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICByZXR1cm4gbmV3IGZsYXNoLmdlb20uUG9pbnQoeCx5KTsKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJpbnRlcm1lZGlhdGVQb2ludCIgYXJncz0icDEscDIsZiI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgCisgICAgICAgICAgICB2YXIgZCA9IE1hdGguc3FydCggTWF0aC5hYnMocDEueCAtIHAyLngpXjIgKyBNYXRoLmFicyhwMi55IC0gcDIueSleMiApOworICAgICAgICAKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgCis8L2RyYXd2aWV3PgorICAKKyAgICAKKzwvY2FudmFzPgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvdGVzdC90ZXN0LWJhc2VEcmF3Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL3Rlc3QvdGVzdC1iYXNlRHJhdy5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTYyY2FlNgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL3Rlc3QvdGVzdC1iYXNlRHJhdy5sengKQEAgLTAsMCArMSwzOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKworPGNhbnZhcyBkZWJ1Zz0idHJ1ZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgPgorCQorCTxkZWJ1ZyBmb250c2l6ZT0iMTQiIG9uaW5pdD0iRGVidWcuc2hvd0ludGVybmFsUHJvcGVydGllcyA9IHRydWUiLz4KKwkKKzxkcmF3dmlldyB4PSIwIiB5PSIwIiB3aWR0aD0iMTAwIiBoZWlnaHQ9IjEwMCI+CisJCisJPGhhbmRsZXIgbmFtZT0ib253aWR0aCI+CisJCURlYnVnLndyaXRlKHRoaXMuaXNpbml0ZWQpOworCTwvaGFuZGxlcj4KKwkKKwk8aGFuZGxlciBuYW1lPSJvbmhlaWdodCI+CisJCURlYnVnLndyaXRlKHRoaXMuaXNpbml0ZWQpOworCTwvaGFuZGxlcj4KKwkKKzwvZHJhd3ZpZXc+CisgIAorICAgIAorPC9jYW52YXM+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy90ZXN0L3Rlc3QtZHJhd3ZpZXcubHp4IGIvV2ViQ29udGVudC9zcmMvdGVzdC90ZXN0LWRyYXd2aWV3Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDQ3YjQ5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvdGVzdC90ZXN0LWRyYXd2aWV3Lmx6eApAQCAtMCwwICsxLDU2IEBACis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8Y2FudmFzIGRlYnVnPSJ0cnVlIiB3aWR0aD0iMTAwMCIgaGVpZ2h0PSI4MDAiPgorCisgICAgPGRlYnVnIHg9IjI1MCIgaGVpZ2h0PSI1MDAiIC8+IAorCisgICAgPGRyYXd2aWV3IHdpZHRoPSIyMDAiIGhlaWdodD0iMTAwIj4KKyAgICAgICAgCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgICAgICB0aGlzLmRyYXdCb2R5KHRoaXMsMCwwLHRoaXMud2lkdGgsdGhpcy5oZWlnaHQsMHhmZjMzMDAsMik7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgdGhpcy5kcmF3Qm9keSh0aGlzLDAsMCx0aGlzLndpZHRoLHRoaXMuaGVpZ2h0LDB4ZmYzMzAwLDIpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIAorICAgICAgICA8bWV0aG9kIG5hbWU9ImRyYXdCb2R5IiBhcmdzPSJ0YXJnZXRPYmoseDEseTEseDIseTIsZmlsbCxsaW5lV2lkdGgiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImRyYXdCb2R5OiAiLHRhcmdldE9iaixsaW5lV2lkdGgpOworICAgICAgICAKKyAgICAgICAgICAgIHRhcmdldE9iai5saW5lV2lkdGggPSBsaW5lV2lkdGg7CisgICAgICAgICAgICB0YXJnZXRPYmouYmVnaW5QYXRoKCk7CisgICAgICAgICAgICB0YXJnZXRPYmoubW92ZVRvKHgxLHkxKTsKKyAgICAgICAgICAgIHRhcmdldE9iai5saW5lVG8oeDEseTIpOworICAgICAgICAgICAgdGFyZ2V0T2JqLmxpbmVUbyh4Mix5Mik7CisgICAgICAgICAgICB0YXJnZXRPYmoubGluZVRvKHgyLHkxKTsKKyAgICAgICAgICAgIHRhcmdldE9iai5saW5lVG8gKHgxLHkxKTsKKyAgICAgICAgICAgIHRhcmdldE9iai5jbG9zZVBhdGgoKTsKKworICAgICAgICAgICAgdGFyZ2V0T2JqLmZpbGxTdHlsZSA9IGZpbGw7CisgICAgICAgICAgICB0YXJnZXRPYmouZmlsbCgpOworICAgICAgICAgICAgCisgICAgICAgIF1dPiAgIAorICAgIDwvbWV0aG9kPiAgIAorICAgICAgICAKKyAgICA8L2RyYXd2aWV3PgorCis8L2NhbnZhcz4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL3Rlc3QvdGVzdC1tZW51YmFyLmx6eCBiL1dlYkNvbnRlbnQvc3JjL3Rlc3QvdGVzdC1tZW51YmFyLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODNlY2RmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvdGVzdC90ZXN0LW1lbnViYXIubHp4CkBAIC0wLDAgKzEsNzUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+CisKKzxjYW52YXMgZGVidWc9InRydWUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZvbnRzaXplPSIxNCIgdGl0bGU9Ik9wZW5NZWV0aW5ncyAtIENvbXB1dGVyIHRlc3RpbmciPgorCQorCTxkZWJ1ZyBmb250c2l6ZT0iMTQiIG9uaW5pdD0iRGVidWcuc2hvd0ludGVybmFsUHJvcGVydGllcyA9IHRydWUiLz4KKyAgICAKKyAgICA8IS0tIHByaXZhdGUgY2xhc3MgZm9yIGNvbmZlcmVuY2VNZW51YmFyIGNsYXNzIC0tPgorICAgIDxjbGFzcyBuYW1lPSJfbGFiZWxNZW51SXRlbSIgZXh0ZW5kcz0ibWVudWl0ZW0iIHRleHQ9ImxhYmVsbWVudWxhYmVsbWVudWxhYmVsbWVudSI+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZCIgdHlwZT0ibnVtYmVyIiBzZXR0ZXI9InNldExhYmVsSWQobGFiZWxpZCkiIC8+CisgICAgICAgIDxtZXRob2QgbmFtZT0ic2V0TGFiZWxJZCIgYXJncz0iX2xhYmVsaWQiID4KKyAgICAgICAgICAgIHRoaXMubGFiZWxpZCA9IF9sYWJlbGlkOworICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3RleHQnLCJ0ZXh0ICIrdGhpcy5sYWJlbGlkKTsKKyAgICAgICAgPC9tZXRob2Q+CisgICAgPC9jbGFzcz4gICAgCisgICAgICAgIAorICAgIDwhLS0gcHJpdmF0ZSBjbGFzcyBmb3IgY29uZmVyZW5jZU1lbnViYXIgY2xhc3MgLS0+CisgICAgPGNsYXNzIG5hbWU9Il9sYWJlbE1lbnUiIGV4dGVuZHM9Im1lbnUiIHRleHQ9ImxhYmVsbWVudWxhYmVsbWVudWxhYmVsbWVudSI+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZCIgdHlwZT0ibnVtYmVyIiBzZXR0ZXI9InNldExhYmVsSWQobGFiZWxpZCkiIC8+CisgICAgICAgIDxtZXRob2QgbmFtZT0ic2V0TGFiZWxJZCIgYXJncz0iX2xhYmVsaWQiID4KKyAgICAgICAgICAgIHRoaXMubGFiZWxpZCA9IF9sYWJlbGlkOworICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3RleHQnLCJ0ZXh0ICIrdGhpcy5sYWJlbGlkKTsKKyAgICAgICAgPC9tZXRob2Q+CisgICAgPC9jbGFzcz4gIAorICAgIAorICAgIDxjbGFzcyBuYW1lPSJjb25mZXJlbmNlTWVudWJhciIgZXh0ZW5kcz0ibWVudWJhciIgaGVpZ2h0PSIyOCIgPgorICAgICAgIDwhLS0gZXhpdCByb29tIC0tPgorICAgICAgICA8X2xhYmVsTWVudSBsYWJlbGlkPSIzMDgiIHdpZHRoPSIyNTAiPgorICAgICAgICAgICAgPF9sYWJlbE1lbnVJdGVtIGxhYmVsaWQ9IjMwOSIgLz4KKyAgICAgICAgPC9fbGFiZWxNZW51PgorICAgICAgICA8IS0tIG1vZGVyYXRvciBtZW51IC0tPgorICAgICAgICA8X2xhYmVsTWVudSBsYWJlbGlkPSIzMDEiIHdpZHRoPSIyNTAiPgorICAgICAgICAgICAgPF9sYWJlbE1lbnVJdGVtIGxhYmVsaWQ9IjMwMiIgLz4KKyAgICAgICAgPC9fbGFiZWxNZW51PgorICAgICAgICA8IS0tIGZpbGUgbWVudSAtLT4KKyAgICAgICAgPF9sYWJlbE1lbnUgbGFiZWxpZD0iMjQ1IiB3aWR0aD0iMjUwIj4KKyAgICAgICAgICAgIDxfbGFiZWxNZW51SXRlbSBsYWJlbGlkPSIxNSIgLz4KKyAgICAgICAgPC9fbGFiZWxNZW51PiAgICAKKyAgICAgICA8IS0tIHNldHRlaW5ncyBtZW51IC0tPiAKKyAgICAgICAgPF9sYWJlbE1lbnUgbGFiZWxpZD0iMzA1IiB3aWR0aD0iMjUwIj4KKyAgICAgICAgICAgIDxfbGFiZWxNZW51SXRlbSBsYWJlbGlkPSIzMDYiIC8+CisgICAgICAgICAgICA8X2xhYmVsTWVudUl0ZW0gbGFiZWxpZD0iMzA3IiAvPgorICAgICAgICA8L19sYWJlbE1lbnU+ICAgCisgICAgICAgIDwhLS0gcG9sbCBtZW11IC0tPiAgICAgCisgICAgICAgIDxfbGFiZWxNZW51IGxhYmVsaWQ9IjMwMyIgd2lkdGg9IjI1MCI+CisgICAgICAgICAgICA8X2xhYmVsTWVudUl0ZW0gd2lkdGg9IjI1MCIgbGFiZWxpZD0iMjQiIC8+CisgICAgICAgICAgICA8X2xhYmVsTWVudUl0ZW0gd2lkdGg9IjI1MCIgbGFiZWxpZD0iMzciIC8+CisgICAgICAgICAgICA8X2xhYmVsTWVudUl0ZW0gd2lkdGg9IjI1MCIgbGFiZWxpZD0iNDIiIC8+CisgICAgICAgIDwvX2xhYmVsTWVudT4gICAgCisgICAgPC9jbGFzcz4gICAgCisgICAgCisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAgICAgbmV3IGx6LmNvbmZlcmVuY2VNZW51YmFyKGNhbnZhcyk7CisgICAgPC9oYW5kbGVyPgorICAgIAorPC9jYW52YXM+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy90ZXN0L3Rlc3QtcmVnRXhwLmx6eCBiL1dlYkNvbnRlbnQvc3JjL3Rlc3QvdGVzdC1yZWdFeHAubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4ODcyOGUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy90ZXN0L3Rlc3QtcmVnRXhwLmx6eApAQCAtMCwwICsxLDkwIEBACis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8Y2FudmFzIGRlYnVnPSJ0cnVlIiA+CisgIAorCisgICAgICA8c2NyaXB0IHdoZW49ImltbWVkaWF0ZSIgPiAgICAgICAgCisgICAgICAgIGNsYXNzIEx6UmVnRXhwIGV4dGVuZHMgSW5zdGFuY2V7CisgICAgICAgICAgc3RhdGljIHZhciByZWdleHBfY250ID0gMDsKKyAgICAgICAgICAKKyAgICAgICAgICBzdGF0aWMgZnVuY3Rpb24gaW5pdGlhbGl6ZSgpeworCisgICAgICAgICAgICAgIC8qIGlmIHRoaXMgd2FzIGluIHRoZSBodG1sLXdyYXBwZXIsIHdvdWxkIGVhcmx5IGluc3RhbnRpYXRpb25zIGJlIHN1Y2Nlc3NmdWw/ICovCisgICAgICAgICAgICAgIGx6LkJyb3dzZXIubG9hZEpTKCAid2luZG93Ll9fbHpyZWdleHA9e307IiArIAorICAgICAgICAgICAgICAgICJ3aW5kb3cuX19jcmVhdGVSZWdFeHA9ZnVuY3Rpb24oaWQscmUsbW9kKXt3aW5kb3cuX19senJlZ2V4cFtpZF09bmV3IFJlZ0V4cChyZSxtb2QpO3JldHVybiB0cnVlfTsiICsKKyAgICAgICAgICAgICAgICAid2luZG93Ll9fdGVzdFJlZ0V4cD1mdW5jdGlvbihpZCxzKXtyZXR1cm4gd2luZG93Ll9fbHpyZWdleHBbaWRdLnRlc3Qocyl9OyIgKworICAgICAgICAgICAgICAgICJ3aW5kb3cuX19leGVjUmVnRXhwPWZ1bmN0aW9uKGlkLHMpe3JldHVybiB3aW5kb3cuX19senJlZ2V4cFtpZF0uZXhlYyhzKX07IiArCisgICAgICAgICAgICAgICAgIndpbmRvdy5fX2RlbGV0ZVJlZ0V4cD1mdW5jdGlvbihpZCl7ZGVsZXRlIHdpbmRvdy5fX2x6cmVnZXhwW2lkXX07IiAKKyAgICAgICAgICAgICAgKTsKKworICAgICAgICAgIH0KKyAgICAgICAgICAKKyAgICAgICAgICBmdW5jdGlvbiBpbml0aWFsaXplKCByZWdleHAsIG1vZCApeworICAgICAgICAgICAgc3VwZXIuaW5pdGlhbGl6ZSggdGhpcywgYXJndW1lbnRzICk7CisKKyAgICAgICAgICAgICAgdGhpcy5yZWdleHBfaWQgPSBMelJlZ0V4cC5yZWdleHBfY250Kys7CisgICAgICAgICAgICAgIHRoaXMuX19pc3JlYWR5ID0gdHJ1ZTsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIHZhciBtZSA9IHRoaXM7CisgICAgICAgICAgICAgIGx6LkJyb3dzZXIuY2FsbEpTKCAid2luZG93Ll9fY3JlYXRlUmVnRXhwIiwgZnVuY3Rpb24ocmVzKXttZS5fX2lzcmVhZHkgPSByZXMgPT0gdHJ1ZX0sIHRoaXMucmVnZXhwX2lkLCByZWdleHAsIG1vZCApOworCisgICAgICAgICAgfQorICAgICAgICAgIAorICAgICAgICAgIGZ1bmN0aW9uIHRlc3QoIHMgKXsKKyAgICAgICAgICAgICAgaWYoIHRoaXMuX19pc3JlYWR5ICl7CisgICAgICAgICAgICAgICAgcmV0dXJuIGZsYXNoLmV4dGVybmFsLkV4dGVybmFsSW50ZXJmYWNlLmNhbGwuYXBwbHkoIGZsYXNoLmV4dGVybmFsLkV4dGVybmFsSW50ZXJmYWNlLCBbIndpbmRvdy5fX3Rlc3RSZWdFeHAiLCB0aGlzLnJlZ2V4cF9pZCwgc10gKTsKKyAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBEZWJ1Zy5mb3JtYXQoICJjYWxsZWQgJXcgdG9vIGVhcmx5IiwgYXJndW1lbnRzLmNhbGxlZS5uYW1lICk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICB9CisgICAgICAgICAgCisgICAgICAgICAgZnVuY3Rpb24gZXhlYyggcyApeworICAgICAgICAgICAgICBpZiggdGhpcy5fX2lzcmVhZHkgKXsKKyAgICAgICAgICAgICAgICByZXR1cm4gZmxhc2guZXh0ZXJuYWwuRXh0ZXJuYWxJbnRlcmZhY2UuY2FsbC5hcHBseSggZmxhc2guZXh0ZXJuYWwuRXh0ZXJuYWxJbnRlcmZhY2UsIFsid2luZG93Ll9fZXhlY1JlZ0V4cCIsIHRoaXMucmVnZXhwX2lkLCBzXSApOworICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIERlYnVnLmZvcm1hdCggImNhbGxlZCAldyB0b28gZWFybHkiLCBhcmd1bWVudHMuY2FsbGVlLm5hbWUgKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgIH0KKyAgICAgICAgICAKKyAgICAgICAgICBmdW5jdGlvbiBkZXN0cm95KCl7CisgICAgICAgICAgICBsei5Ccm93c2VyLmNhbGxKUyggIndpbmRvdy5fX2RlbGV0ZVJlZ0V4cCIsIG51bGwsIHRoaXMucmVnZXhwX2lkICk7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICA8L3NjcmlwdD4KKworICA8YnV0dG9uIG5hbWU9ImJ0biIgdGV4dD0idGVzdCIgLz4KKyAgCisgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCIgcmVmZXJlbmNlPSJjYW52YXMiIG1ldGhvZD0idGVzdFJlZ0V4cCIgLz4KKyAgPGhhbmRsZXIgbmFtZT0ib25jbGljayIgcmVmZXJlbmNlPSJidG4iIG1ldGhvZD0idGVzdFJlZ0V4cCIgLz4KKyAgCisgIDxtZXRob2QgbmFtZT0idGVzdFJlZ0V4cCIgPgorICAgIHZhciByZWdleHAgPSBuZXcgTHpSZWdFeHAoICIuZWxsbyIgKTsKKyAgICBEZWJ1Zy53cml0ZSggcmVnZXhwLnRlc3QoICJIZWxsbyIgKSApOworICAgIERlYnVnLndyaXRlKCByZWdleHAudGVzdCggIkhhbGxvIiApICk7CisgICAgcmVnZXhwLmRlc3Ryb3koKTsKKworICAgIGdsb2JhbC5yZWdleHBmbGFnID0gZ2xvYmFsWyJyZWdleHBmbGFnIl0gPT0gdHJ1ZTsKKyAgICBpZiggIWdsb2JhbC5yZWdleHBmbGFnICl7CisgICAgICBnbG9iYWwucmVnZXhwZmxhZyA9IHRydWU7CisgICAgICBsei5UaW1lci5hZGRUaW1lciggbmV3IEx6RGVsZWdhdGUoIGNhbnZhcywgInRlc3RSZWdFeHAiICksIDUwMCApOworICAgIH0KKyAgPC9tZXRob2Q+CisgIAorPC9jYW52YXM+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy90ZXN0L3Rlc3QtcmVnRXhwLmx6eC5senI9c3dmOC5zd2YgYi9XZWJDb250ZW50L3NyYy90ZXN0L3Rlc3QtcmVnRXhwLmx6eC5senI9c3dmOC5zd2YKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGY0YTMxMAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL3Rlc3QvdGVzdC1yZWdFeHAubHp4Lmx6cj1zd2Y4LnN3ZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy90ZXN0L3Rlc3QtcmVnRXhwMi5senggYi9XZWJDb250ZW50L3NyYy90ZXN0L3Rlc3QtcmVnRXhwMi5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWZlZGFmMAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL3Rlc3QvdGVzdC1yZWdFeHAyLmx6eApAQCAtMCwwICsxLDc3IEBACis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8Y2FudmFzIGRlYnVnPSJ0cnVlIiA+CisgIDxzY3JpcHQ+CisgICAgX2Jyb3dzZXJqYXZhc2NyaXB0Y2FsbGJhY2sgPSAiIjsKKyAgPC9zY3JpcHQ+CisgIAorICAgICA8YXR0cmlidXRlIG5hbWU9Imx6YXBwSWQiIHR5cGU9InN0cmluZyIgdmFsdWU9Imx6YXBwIiAvPgorICAgICA8YXR0cmlidXRlIG5hbWU9InRpbWVyIiB0eXBlPSJudW1iZXIiIHZhbHVlPSIxMCIgLz4KKyAgICAgPGF0dHJpYnV0ZSBuYW1lPSJwcmV2YWx1ZSIgdHlwZT0ic3RyaW5nIiB2YWx1ZT0iX2Jyb3dzZXJqYXZhc2NyaXB0Y2FsbGJhY2twcmV2YWx1ZSIgLz4KKyAgICAgPGF0dHJpYnV0ZSBuYW1lPSJ2YWx1ZSIgLz4KKyAgICAgCisgICAgIDxoYW5kbGVyIG5hbWU9Im9udmFsdWUiIGFyZ3M9InYiPgorICAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9udmFsdWU6ICIsdik7CisgICAgIAkKKyAgICAgPC9oYW5kbGVyPgorICAgICAKKwk8ZWRpdHRleHQgbmFtZT0iX2hhbmQiIC8+CisgIAorICA8YnV0dG9uIG5hbWU9ImJ0biIgeT0iMjAiIHRleHQ9InRlc3QiIG9uY2xpY2s9ImNhbnZhcy50ZXN0UmVnRXhwKCkiIC8+CisKKyAgPG1ldGhvZCBuYW1lPSJ0ZXN0UmVnRXhwMiI+CisgIAk8IVtDREFUQVsKKyAgCQl2YXIgcmVnRXhwID0gIlswLTldKiI7CisgIAkJCisgICAgCXZhciBmaWVsZFZhbHVlID0gdGhpcy5faGFuZC5nZXRUZXh0KCk7CisgIAkgICAgCisgICAgCXZhciByZXR1cm5WYWx1ZSA9IGZsYXNoLmV4dGVybmFsLkV4dGVybmFsSW50ZXJmYWNlLmNhbGwoInJlcGxhY2UiLGZpZWxkVmFsdWUsZXNjYXBlKHJlZ0V4cCksZXNjYXBlKTsKKyAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInJldHVyblZhbHVlOiAiLHJldHVyblZhbHVlKTsKKwldXT4KKyA8L21ldGhvZD4KKyAKKyA8bWV0aG9kIG5hbWU9InRlc3RSZWdFeHAiID4KKyAJPCFbQ0RBVEFbCisJdmFyIGZpZWxkVmFsdWUgPSAiOSI7CisJdmFyIHJlZ0V4cCA9ICJbMC05XSoiOworICAgIHZhciByZWdleCA9ICIvXiIrcmVnRXhwKyIkLyI7CisgICAgdmFyIHNjcmlwdCA9ICIoICEoIChcIiIrIGZpZWxkVmFsdWUgKyJcIi5yZXBsYWNlKCIrIHJlZ2V4ICsiICxcIlwiKS5sZW5ndGggPT0gMCkgJiYgKCAiKyByZWdleCArIi50ZXN0KFwiIisgZmllbGRWYWx1ZSArIlwiKSkgKSApICI7CisgIAorCXZhciB0ID0gc2NyaXB0LnNwbGl0KCInIikuam9pbigiXFwnIik7CisJdmFyIHMgPSAiZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJyIrIGx6YXBwSWQgKyAiJykuU2V0VmFyaWFibGUoJ19icm93c2VyamF2YXNjcmlwdGNhbGxiYWNrJywgZXNjYXBlKCgiICsgdCArICIpKSk7IgorCisJCisJCWx6LkJyb3dzZXIubG9hZEpTKHMpOworCQkKKwkJaWYodHlwZW9mIHRoaXMuY2FsbERlbGVnYXRlID09ICd1bmRlZmluZWQnKQorCQl0aGlzLmNhbGxEZWxlZ2F0ZSA9IG5ldyBMekRlbGVnYXRlKCB0aGlzLCAiY2FsbGJhY2siICk7CisJCWx6LlRpbWVyLnJlc2V0VGltZXIoIHRoaXMuY2FsbERlbGVnYXRlLCB0aW1lciApOworCQldXT4KKyAgIDwvbWV0aG9kPgorCisgPG1ldGhvZCBuYW1lPSJjYWxsYmFjayI+CisJaWYodW5lc2NhcGUoX2Jyb3dzZXJqYXZhc2NyaXB0Y2FsbGJhY2spID09IHRoaXMucHJldmFsdWUpCisJbHouVGltZXIucmVzZXRUaW1lciggdGhpcy5jYWxsRGVsZWdhdGUsIHRpbWVyICk7CisJZWxzZQorCXNldEF0dHJpYnV0ZSgidmFsdWUiLCB1bmVzY2FwZShfYnJvd3NlcmphdmFzY3JpcHRjYWxsYmFjaykpOworIDwvbWV0aG9kPgorCisKKzwvY2FudmFzPgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvdGVzdC90ZXN0LXJlZ0V4cDIubHp4Lmx6cj1zd2Y4LnN3ZiBiL1dlYkNvbnRlbnQvc3JjL3Rlc3QvdGVzdC1yZWdFeHAyLmx6eC5senI9c3dmOC5zd2YKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ5N2Q5NQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL3Rlc3QvdGVzdC1yZWdFeHAyLmx6eC5senI9c3dmOC5zd2YKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvdGVzdC90ZXN0LXJlZ2V4cC5odG1sIGIvV2ViQ29udGVudC9zcmMvdGVzdC90ZXN0LXJlZ2V4cC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlYzJlOWUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy90ZXN0L3Rlc3QtcmVnZXhwLmh0bWwKQEAgLTAsMCArMSw4MyBAQAorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8aHRtbD4KKzxoZWFkPg0KKwk8bGluayByZWw9InNob3J0Y3V0IGljb24iIGhyZWY9ImZhdmljb24uaWNvIiA+IAorCTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04IiAvPgorCTx0aXRsZT52TWFwUG9ydGFsPC90aXRsZT4NCisJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic3dmb2JqZWN0LmpzIj48L3NjcmlwdD4NCisJPHN0eWxlIHR5cGU9InRleHQvY3NzIj4NCisJCQ0KKwkJLyogaGlkZSBmcm9tIGllIG9uIG1hYyBcKi8NCisJCWh0bWwgew0KKwkJCWhlaWdodDogMTAwJTsNCisJCQlvdmVyZmxvdzogaGlkZGVuOw0KKwkJfQ0KKwkJDQorCQkjZmxhc2hjb250ZW50IHsNCisJCQloZWlnaHQ6IDEwMCU7DQorCQl9DQorCQkvKiBlbmQgaGlkZSAqLw0KKwkNCisJCWJvZHkgew0KKwkJCWhlaWdodDogMTAwJTsNCisJCQltYXJnaW46IDA7DQorCQkJcGFkZGluZzogMDsNCisJCQliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOw0KKwkJfQ0KKwkNCisJPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5IGFsaWduPSJjZW50ZXIiIHZhbGlnbj0ibWlkZGxlIiBhbGlnbj0iY2VudGVyIiBvbkxvYWQ9ImZvY3VzU1dGKCkiPg0KKw0KKw0KKwk8ZGl2IGlkPSJmbGFzaGNvbnRlbnQiPg0KKwkJPHN0cm9uZz5Zb3UgbmVlZCB0byB1cGdyYWRlIHlvdXIgRmxhc2ggUGxheWVyPC9zdHJvbmc+DQorCQlUaGlzIGlzIHJlcGxhY2VkIGJ5IHRoZSBGbGFzaCBjb250ZW50LiANCisJCVBsYWNlIHlvdXIgYWx0ZXJuYXRlIGNvbnRlbnQgaGVyZSBhbmQgdXNlcnMgd2l0aG91dCB0aGUgRmxhc2ggcGx1Z2luIG9yIHdpdGggDQorCQlKYXZhc2NyaXB0IHR1cm5lZCBvZmYgd2lsbCBzZWUgdGhpcy4gQ29udGVudCBoZXJlIGFsbG93cyB5b3UgdG8gbGVhdmUgb3V0IDxjb2RlPm5vc2NyaXB0PC9jb2RlPiANCisJCXRhZ3MuDQorCTwvZGl2Pg0KKwkNCisJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KKwkJLy8gPCFbQ0RBVEFbDQorCQkNCisJCXZhciBzbyA9IG5ldyBTV0ZPYmplY3QoInBvcnRhbC5zd2YiLCAibHphcHAiLCAiMTAwJSIsICIxMDAlIiwgIjgiLCAiI2ZmZmZmZiIpOw0KKwkJc28uYWRkUGFyYW0oInF1YWxpdHkiLCAiaGlnaCIpOw0KKwkJc28uYWRkUGFyYW0oImlkIiwgImx6YXBwIik7DQorCQlzby5hZGRQYXJhbSgiYWxsb3dTY3JpcHRBY2Nlc3MiLCAiYWx3YXlzIik7DQorCQlzby5hZGRQYXJhbSgic2NhbGUiLCAibm9zY2FsZSIpOw0KKwkJc28ud3JpdGUoImZsYXNoY29udGVudCIpOw0KKwkJDQorCQlmdW5jdGlvbiBmb2N1c1NXRigpew0KKwkJDQorCQkgICAgaWYobmF2aWdhdG9yLnBsdWdpbnMmJm5hdmlnYXRvci5taW1lVHlwZXMmJm5hdmlnYXRvci5taW1lVHlwZXMubGVuZ3RoKXsNCisJCSAgICB9ZWxzZSB7DQorCQkgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsemFwcCcpLmZvY3VzKCk7DQorCQkgICAgfQ0KKwkJfSAgIAkJDQorCQkNCisJCS8vIF1dPg0KKwk8L3NjcmlwdD4JDQorDQorDQorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL3Rlc3QvdGVzdC1zY3JvbGxFZGl0dGV4dC5senggYi9XZWJDb250ZW50L3NyYy90ZXN0L3Rlc3Qtc2Nyb2xsRWRpdHRleHQubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmODIwZjEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy90ZXN0L3Rlc3Qtc2Nyb2xsRWRpdHRleHQubHp4CkBAIC0wLDAgKzEsMzcgQEAKKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxjYW52YXMgZGVidWc9InRydWUiIHdpZHRoPSIxMDAwIiBoZWlnaHQ9IjgwMCI+CisKKyAgICA8ZGVidWcgeD0iMjUwIiBoZWlnaHQ9IjUwMCIgLz4gCisKKyAgICA8aW5jbHVkZSBocmVmPSJzY3JvbGxlZGl0dGV4dC5sengiLz4KKworICAgIDxzY3JvbGxlZGl0dGV4dCBuYW1lPSJfc2Nyb2xsZWRpdHRleHQiIHk9IjEzMCIgeD0iMTIwIiB3aWR0aD0iMjcwIiBoZWlnaHQ9IjEyMCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0PSIiIC8+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgPHZpZXcgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMDAiIHk9IjMwMCIgeD0iMTAwIiBiZ2NvbG9yPSIweEZGRkZGRiI+CisgICAgICAgIDxpbnB1dHRleHQgbXVsdGlsaW5lPSJ0cnVlIiB3aWR0aD0iJHsgcGFyZW50LndpZHRoIC0gMTQgfSI+CisgICAgICAgICAgICAKKyAgICAgICAgPC9pbnB1dHRleHQ+CisgICAgICAgIDxvbV92c2Nyb2xsYmFyIC8+CisgICAgPC92aWV3PgorCis8L2NhbnZhcz4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL3Rlc3QvdGVzdC1zZXR1cC5senggYi9XZWJDb250ZW50L3NyYy90ZXN0L3Rlc3Qtc2V0dXAubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwZWNmYWIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy90ZXN0L3Rlc3Qtc2V0dXAubHp4CkBAIC0wLDAgKzEsNTY0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0gTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZSBvciBtb3JlIGNvbnRyaWJ1dG9yIAorCWxpY2Vuc2UgYWdyZWVtZW50cy4gU2VlIHRoZSBOT1RJQ0UgZmlsZSBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCAKKwlpbmZvcm1hdGlvbiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUgdG8gCisJeW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgCisJdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiAKKwl0aGUgTGljZW5zZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAgVW5sZXNzIHJlcXVpcmVkIAorCWJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgCisJTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyAKKwlPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgCisJbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4gLS0+Cis8Y2FudmFzIGRlYnVnPSJ0cnVlIiBoZWlnaHQ9IjEwMCUiIHRpdGxlPSJBdWRpby1WaWRlbyBUZXN0LUFwcGxpY2F0aW9uIj4KKworCTxkZWJ1ZyB3aWR0aD0iNDUwIiB4PSI0NjAiIHk9IjYwMCIgaGVpZ2h0PSIxMDAiIC8+CisKKwk8c3dpdGNoPgorCQk8d2hlbiBwcm9wZXJ0eT0iJGFzMyI+CisJCQk8cGFzc3Rocm91Z2g+CisJCQkgICAgaW1wb3J0IGZsYXNoLmV2ZW50cy4qOworCSAgICAgICAgICAgIGltcG9ydCBmbGFzaC5uZXQuKjsKKwkgICAgICAgICAgICBpbXBvcnQgZmxhc2gubWVkaWEuKgorCQkJPC9wYXNzdGhyb3VnaD4KKwkJPC93aGVuPgorCTwvc3dpdGNoPgorCQorCTxjbGFzcyBuYW1lPSJteUxpc3RJdGVtIiBleHRlbmRzPSJ0ZXh0bGlzdGl0ZW0iPgorCTwvY2xhc3M+CisKKwk8IS0tLSBOZXRDb25uZWN0aW9uIC0tPgorCTxhdHRyaWJ1dGUgbmFtZT0iX25jIiB2YWx1ZT0ibnVsbCIgLz4KKworCTwhLS0tIE5ldFN0cmVhbSAtLT4KKwk8YXR0cmlidXRlIG5hbWU9Il9uc0Jyb2FkQ2FzdCIgdmFsdWU9Im51bGwiIC8+CisJPGF0dHJpYnV0ZSBuYW1lPSJfbnNQbGF5IiB2YWx1ZT0ibnVsbCIgLz4KKworCTwhLS0tIGRldmljZXMgLSBSZWZlcmVuY2UgLS0+CisJPGF0dHJpYnV0ZSBuYW1lPSJfY2FtZXJhIiB2YWx1ZT0ibnVsbCIgLz4KKwk8YXR0cmlidXRlIG5hbWU9Il9taWNybyIgdmFsdWU9Im51bGwiIC8+CisKKwk8bWV0aG9kIG5hbWU9ImNvbm5lY3RSdG1wQ29ubmVjdGlvbiI+CisJCXRoaXMuX25jID0gbmV3IE5ldENvbm5lY3Rpb24oKTsKKwkJdGhpcy5fbmMucHJveHlUeXBlID0gImJlc3QiOworCQlEZWJ1Zy53cml0ZSgiY29ubmVjdFJ0bXBDb25uZWN0aW9uIFVSTDoiLHVybC5nZXRUZXh0KCkpOworCQl0aGlzLl9uYy5jb25uZWN0KHVybC5nZXRUZXh0KCkpOworCQkKKwkJdGhpcy5fbmMuYWRkRXZlbnRMaXN0ZW5lcihOZXRTdGF0dXNFdmVudC5ORVRfU1RBVFVTLCBfb25TdGF0dXMpOworCQl2YXIgY2xpZW50T2JqID0ge307CisgICAJCWNsaWVudE9iai5zZXRJZCA9IHRoaXMuc2V0SWQ7CisgICAJCQorICAgCQl0aGlzLl9uYy5jbGllbnQgPSBjbGllbnRPYmo7CisgICAgCQkKKwkJLy90aGlzLl9uYy5vblN0YXR1cyA9IGZ1bmN0aW9uKGluZm8peworCQkvL0RlYnVnLndyaXRlKGluZm8uY29kZSxpbmZvKTsKKwkJLy99CisJPC9tZXRob2Q+CisJCisJPG1ldGhvZCBuYW1lPSJzZXRJZCIgYXJncz0idElkIj4KKwkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInNldElkICIsIHRJZCk7CisJPC9tZXRob2Q+CisJCisgICAgPG1ldGhvZCBuYW1lPSJfb25TdGF0dXMiIGFyZ3M9InN0YXRzIj48IVtDREFUQVsKKyAgICAgICAgaWYgKCRkZWJ1ZykgeworICAgICAgICAgICAgRGVidWcud3JpdGUoImRldnJ0bXBjb25uZWN0aW9uIiwgdGhpcywgIl9vblN0YXR1cyIsIHN0YXRzLmluZm8uY29kZSk7CisgICAgICAgIH0KKyAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorCisJPG1ldGhvZCBuYW1lPSJzdGFydEJyb2FkQ2FzdCI+CisJPCFbQ0RBVEFbCisJICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzdGFydEJyb2FkQ2FzdCAxIik7CisJICAgIGlmICh0aGlzLl9jYW1lcmEgIT0gbnVsbCkgeworCQkgIHRoaXMuX2NhbWVyYSA9IENhbWVyYS5nZXRDYW1lcmEoY2FtRGV2aWNlcy5nZXRWYWx1ZSgpKTsKKwkJfQorCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic3RhcnRCcm9hZENhc3QgMiIpOworCQkvL3NldHMgdGhlIE1vZGUKKwkJLy9zZWU6IGh0dHA6Ly9oZWxwLmFkb2JlLmNvbS9lbl9VUy9GbGFzaFBsYXRmb3JtL3JlZmVyZW5jZS9hY3Rpb25zY3JpcHQvMy9mbGFzaC9tZWRpYS9DYW1lcmEuaHRtbCNzZXRNb2RlJTI4JTI5CisJCWlmICh0aGlzLl9jYW1lcmEgIT0gbnVsbCkgdGhpcy5fY2FtZXJhLnNldE1vZGUoTnVtYmVyKHN0cmVhbXdpZHRoLmdldFRleHQoKSksTnVtYmVyKHN0cmVhbWhlaWdodC5nZXRUZXh0KCkpLE51bWJlcihzdHJlYW1mcHMuZ2V0VGV4dCgpKSxzdHJlYW1mYXZvcmFyZWEuZ2V0VmFsdWUoKSk7CQorCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic3RhcnRCcm9hZENhc3QgMyIpOworCQkvL3NldHMgdGhlIFF1YWxpdHkKKwkJLy9zZWU6IGh0dHA6Ly9oZWxwLmFkb2JlLmNvbS9lbl9VUy9GbGFzaFBsYXRmb3JtL3JlZmVyZW5jZS9hY3Rpb25zY3JpcHQvMy9mbGFzaC9tZWRpYS9DYW1lcmEuaHRtbCNzZXRRdWFsaXR5JTI4JTI5CisJCWlmICh0aGlzLl9jYW1lcmEgIT0gbnVsbCkgdGhpcy5fY2FtZXJhLnNldFF1YWxpdHkoTnVtYmVyKHN0cmVhbWJhbmR3aWR0aC5nZXRUZXh0KCkpLE51bWJlcihzdHJlYW1xdWFsaXR5LmdldFRleHQoKSkpOwkKKwkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInN0YXJ0QnJvYWRDYXN0IDQiKTsKKwkJaWYgKHVzZUVuaGFuY2VkTWljcm9waG9uZS5nZXRWYWx1ZSgpKSB7CisJCQl0aGlzLl9taWNybyA9IE1pY3JvcGhvbmUuZ2V0RW5oYW5jZWRNaWNyb3Bob25lKG1pY0RldmljZXMuZ2V0VmFsdWUoKSk7CisJCQkKKwkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKHRoaXMuX21pY3JvLmVuaGFuY2VkT3B0aW9ucyk7CisJCQkKKwkJfSBlbHNlIHsKKwkJCXRoaXMuX21pY3JvID0gTWljcm9waG9uZS5nZXRNaWNyb3Bob25lKG1pY0RldmljZXMuZ2V0VmFsdWUoKSk7CisJCX0KKwkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInN0YXJ0QnJvYWRDYXN0IDUiKTsKKwkJdGhpcy5fbWljcm8uY29kZWMgPSBTb3VuZENvZGVjLk5FTExZTU9TRVI7CisJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzdGFydEJyb2FkQ2FzdCA2Iik7CisJCS8vc2V0cyB0aGUgTWljcm9waG9uZSBSYXRlIGluIEtoegorCQkvL3NlZTpodHRwOi8vaGVscC5hZG9iZS5jb20vZW5fVVMvRmxhc2hQbGF0Zm9ybS9yZWZlcmVuY2UvYWN0aW9uc2NyaXB0LzMvZmxhc2gvbWVkaWEvTWljcm9waG9uZS5odG1sI3JhdGUKKwkJdGhpcy5fbWljcm8ucmF0ZSA9IE51bWJlcihzdHJlYW1yYXRlLmdldFRleHQoKSk7CisJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzdGFydEJyb2FkQ2FzdCA3Iik7CisJCXRoaXMuX21pY3JvLmdhaW4gPSA1MDsKKwkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInN0YXJ0QnJvYWRDYXN0IDgiKTsKKwkJLy9zZXRzIHdldGhlciB1c2VFY2hvU3VwcmVzc2lvbiBzaG91bGQgYmUgdXNlZCBvciBub3QKKwkJLy9odHRwOi8vaGVscC5hZG9iZS5jb20vZW5fVVMvRmxhc2hQbGF0Zm9ybS9yZWZlcmVuY2UvYWN0aW9uc2NyaXB0LzMvZmxhc2gvbWVkaWEvTWljcm9waG9uZS5odG1sI3VzZUVjaG9TdXBwcmVzc2lvbgorCQl0aGlzLl9taWNyby5zZXRVc2VFY2hvU3VwcHJlc3Npb24oc3RyZWFtdXNlRWNob1N1cHByZXNzaW9uLmdldFZhbHVlKCkpOworCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic3RhcnRCcm9hZENhc3QgOSIpOworCQkvL2F0dGFjaGVzIHRoZSBDYW1lcmEgdG8gdGhlIFZpZXcKKwkJaWYgKHRoaXMuX2NhbWVyYSAhPSBudWxsKSBicm9hZENhc3RWaWRlby5hdHRhY2hWaWRlbyh0aGlzLl9jYW1lcmEpOworCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic3RhcnRCcm9hZENhc3QgMTAiKTsKKwkJdGhpcy5fbnNCcm9hZENhc3QgPSAgbmV3IE5ldFN0cmVhbSh0aGlzLl9uYyk7CisJCS8vc2VlOiBodHRwOi8vbGl2ZWRvY3MuYWRvYmUuY29tL2ZsYXNoLzkuMF9kZS9BY3Rpb25TY3JpcHRMYW5nUmVmVjMvZmxhc2gvbmV0L05ldFN0cmVhbS5odG1sCisgICAgICAgIC8vYWNjb3JkaW5nIHRvIHRoZSBkb2NzIHRoZSBjb25zdHJ1Y3QgdG8gY2F0Y2ggZXZlbnQgaGFzIHRvIGJlIGltcGxlbWVudGVkIGxpa2UgdGhpcy4KKyAgICAgICAgdmFyIHQgPSB0aGlzOworCQl2YXIgY2xpZW50T2JqZWN0ID0gbmV3IE9iamVjdCgpOworCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic3RhcnRCcm9hZENhc3QgMTEiKTsKKwkJY2xpZW50T2JqZWN0Lm9uTWV0YURhdGEgPSBmdW5jdGlvbihtZXRhZGF0YTpPYmplY3QpOnZvaWQgeworCQkJdC5vbk1ldGFEYXRhKG1ldGFkYXRhKTsKKwkJfTsKKwkJY2xpZW50T2JqZWN0Lm9uUGxheVN0YXR1cyA9IGZ1bmN0aW9uKG1ldGFkYXRhOk9iamVjdCk6dm9pZCB7CisJCQl0Lm9uUGxheVN0YXR1cyhtZXRhZGF0YSk7CisJCX07CisJCWNsaWVudE9iamVjdC5vbkN1ZVBvaW50ID0gZnVuY3Rpb24obWV0YWRhdGE6T2JqZWN0KTp2b2lkIHsKKwkJCXQub25DdWVQb2ludChtZXRhZGF0YSk7CisJCX07CisJCWNsaWVudE9iamVjdC5pb0Vycm9yID0gZnVuY3Rpb24oZXJyb3I6T2JqZWN0KTp2b2lkIHsKKwkJCXQuaW9FcnJvcihlcnJvcik7CisJCX07CisJCWNsaWVudE9iamVjdC5uZXRTdGF0dXMgPSBmdW5jdGlvbihzdGF0dXM6T2JqZWN0KTp2b2lkIHsKKwkJCXQubmV0U3RhdHVzKHN0YXR1cyk7CisJCX07CisJCWNsaWVudE9iamVjdC5hc3luY0Vycm9yID0gZnVuY3Rpb24oZXJyb3I6T2JqZWN0KTp2b2lkIHsKKwkJCXQuYXN5bmNFcnJvcihlcnJvcik7CisJCX07CisJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzdGFydEJyb2FkQ2FzdCAxMiIpOworCQl0aGlzLl9uc0Jyb2FkQ2FzdC5jbGllbnQgPSBjbGllbnRPYmplY3Q7CisJCS8vdGhpcyBpcyBhIHdvcmthcm91bmQsIGF0dGFjaGluZyB0aGUgZXZlbnQgdG8gdGhlIGNsaWVudCBvYmplY3QgZG9lcyBub3Qgd29yaworCQl0aGlzLl9uc0Jyb2FkQ2FzdC5hZGRFdmVudExpc3RlbmVyKE5ldFN0YXR1c0V2ZW50Lk5FVF9TVEFUVVMsIG9uTmV0U3RhdHVzMik7CisJICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzdGFydEJyb2FkQ2FzdCAxMyIpOworCQlpZiAodGhpcy5fY2FtZXJhICE9IG51bGwpIHRoaXMuX25zQnJvYWRDYXN0LmF0dGFjaENhbWVyYSh0aGlzLl9jYW1lcmEpOworCSAgICB0aGlzLl9uc0Jyb2FkQ2FzdC5hdHRhY2hBdWRpbyh0aGlzLl9taWNybyk7CisJICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzdGFydEJyb2FkQ2FzdCAxNCIpOworCSAgICB0aGlzLl9uc0Jyb2FkQ2FzdC5wdWJsaXNoKHN0cmVhbW5hbWUuZ2V0VGV4dCgpLCJsaXZlIik7CisJICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzdGFydEJyb2FkQ2FzdCAxNSIpOworICAgIF1dPgorCTwvbWV0aG9kPgorCQorCTxtZXRob2QgbmFtZT0ib25OZXRTdGF0dXMyIiBhcmdzPSJldnQiPgorCQlpZigkZGVidWcpIERlYnVnLndyaXRlKCJuZXRTdHJlYW1fb25OZXRTdGF0dXM6ICIgLCBldnQuaW5mby5jb2RlLCBldnQudGFyZ2V0KTsKKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9ImFzeW5jRXJyb3IiIGFyZ3M9ImVycm9yIj4KKwkJaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2ltcGxlTmV0U3RyZWFtIGFzeW5jRXJyb3IiLGVycm9yKTsKKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9Im5ldFN0YXR1cyIgYXJncz0ic3RhdHVzIj4KKwkJaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2ltcGxlTmV0U3RyZWFtIG5ldFN0YXR1cyIsc3RhdHVzKTsKKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9ImlvRXJyb3IiIGFyZ3M9ImVycm9yIj4KKwkJaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2ltcGxlTmV0U3RyZWFtIGlvRXJyb3IiLGVycm9yKTsKKwk8L21ldGhvZD4KKworICAgIDxtZXRob2QgbmFtZT0ib25DdWVQb2ludCIgYXJncz0iaW5mbyI+PCFbQ0RBVEFbCisgICAgICAgIGlmKCRkZWJ1ZykgRGVidWcud3JpdGUoInNpbXBsZU5ldFN0cmVhbSBvbkN1ZVBvaW50IixpbmZvKTsKKyAgICBdXT48L21ldGhvZD4KKworICAgIDxtZXRob2QgbmFtZT0ib25QbGF5U3RhdHVzIiBhcmdzPSJpbmZvIj48IVtDREFUQVsKKyAgICAgICAgaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2ltcGxlTmV0U3RyZWFtIG9uUGxheVN0YXR1cyIsaW5mbyk7CisgICAgXV0+PC9tZXRob2Q+CisKKyAgICA8bWV0aG9kIG5hbWU9Im9uTWV0YURhdGEiIGFyZ3M9ImluZm8iPjwhW0NEQVRBWworICAgICAgICBpZigkZGVidWcpIERlYnVnLndyaXRlKCJzaW1wbGVOZXRTdHJlYW0gb25NZXRhRGF0YSIsaW5mbyk7CisgICAgXV0+PC9tZXRob2Q+CisKKwk8bWV0aG9kIG5hbWU9InN0b3BCcm9hZENhc3QiPgorCQl0aGlzLl9uc0Jyb2FkQ2FzdC5wdWJsaXNoKGZhbHNlKTsKKwkJYnJvYWRDYXN0VmlkZW8uYXR0YWNoVmlkZW8obnVsbCk7CisJCWJyb2FkQ2FzdFZpZGVvLnN0b3BJdCgpOworCQl0aGlzLl9uc0Jyb2FkQ2FzdC5jbG9zZSgpOworCTwvbWV0aG9kPgorCisKKwk8bWV0aG9kIG5hbWU9InBsYXlCcm9hZENhc3QiPgorCTwhW0NEQVRBWworCQkvL2F0dGFjaGVzIHRoZSBDYW1lcmEgdG8gdGhlIFZpZXcKKwkKKwkJdGhpcy5fbnNQbGF5ID0gIG5ldyBOZXRTdHJlYW0odGhpcy5fbmMpOworCQkvL3NlZTogaHR0cDovL2xpdmVkb2NzLmFkb2JlLmNvbS9mbGFzaC85LjBfZGUvQWN0aW9uU2NyaXB0TGFuZ1JlZlYzL2ZsYXNoL25ldC9OZXRTdHJlYW0uaHRtbAorICAgICAgICAvL2FjY29yZGluZyB0byB0aGUgZG9jcyB0aGUgY29uc3RydWN0IHRvIGNhdGNoIGV2ZW50IGhhcyB0byBiZSBpbXBsZW1lbnRlZCBsaWtlIHRoaXMuCisgICAgICAgIHZhciB0ID0gdGhpczsKKwkJdmFyIGNsaWVudE9iamVjdCA9IG5ldyBPYmplY3QoKTsKKwkJY2xpZW50T2JqZWN0Lm9uTWV0YURhdGEgPSBmdW5jdGlvbihtZXRhZGF0YTpPYmplY3QpOnZvaWQgeworCQkJdC5vbk1ldGFEYXRhKG1ldGFkYXRhKTsKKwkJfTsKKwkJY2xpZW50T2JqZWN0Lm9uUGxheVN0YXR1cyA9IGZ1bmN0aW9uKG1ldGFkYXRhOk9iamVjdCk6dm9pZCB7CisJCQl0Lm9uUGxheVN0YXR1cyhtZXRhZGF0YSk7CisJCX07CisJCWNsaWVudE9iamVjdC5vbkN1ZVBvaW50ID0gZnVuY3Rpb24obWV0YWRhdGE6T2JqZWN0KTp2b2lkIHsKKwkJCXQub25DdWVQb2ludChtZXRhZGF0YSk7CisJCX07CisJCWNsaWVudE9iamVjdC5pb0Vycm9yID0gZnVuY3Rpb24oZXJyb3I6T2JqZWN0KTp2b2lkIHsKKwkJCXQuaW9FcnJvcihlcnJvcik7CisJCX07CisJCWNsaWVudE9iamVjdC5uZXRTdGF0dXMgPSBmdW5jdGlvbihzdGF0dXM6T2JqZWN0KTp2b2lkIHsKKwkJCXQubmV0U3RhdHVzKHN0YXR1cyk7CisJCX07CisJCWNsaWVudE9iamVjdC5hc3luY0Vycm9yID0gZnVuY3Rpb24oZXJyb3I6T2JqZWN0KTp2b2lkIHsKKwkJCXQuYXN5bmNFcnJvcihlcnJvcik7CisJCX07CisJCXRoaXMuX25zUGxheS5jbGllbnQgPSBjbGllbnRPYmplY3Q7CisJCS8vdGhpcyBpcyBhIHdvcmthcm91bmQsIGF0dGFjaGluZyB0aGUgZXZlbnQgdG8gdGhlIGNsaWVudCBvYmplY3QgZG9lcyBub3Qgd29yaworCQl0aGlzLl9uc1BsYXkuYWRkRXZlbnRMaXN0ZW5lcihOZXRTdGF0dXNFdmVudC5ORVRfU1RBVFVTLCBvbk5ldFN0YXR1czIpOworCQorCSAgICAvL3NldHMgdGhlIEJ1ZmZlciBmb3IgdGhlIFBsYXlpbmcKKwkgICAgLy9zZWU6IGh0dHA6Ly9saXZlZG9jcy5hZG9iZS5jb20vZmxhc2gvOC9tYWluL3d3aGVscC93d2hpbXBsL2NvbW1vbi9odG1sL3d3aGVscC5odG0/Y29udGV4dD1MaXZlRG9jc19QYXJ0cyZmaWxlPTAwMDAyNTY3Lmh0bWwjd3AzOTMwMzgKKwkgICAgLy90aGlzLl9uc1BsYXkuc2V0QnVmZmVyVGltZShOdW1iZXIodGhpcy5zdHJlYW1idWZmZXIuZ2V0VGV4dCgpKSk7IAorCSAgICAvLz0+IGRpc2FibGVkLCBjYXVzZSB0aGlzIGxlYWRzIHRvIEJ1ZmZlci1GdWxsLUJ1ZmZlci1FbXB0eS1FdmVudHMgYWZ0ZXIgcmUtc3luY2luZworCQlwbGF5VmlkZW8uYXR0YWNoVmlkZW8odGhpcy5fbnNQbGF5KTsKKwkgICAgCisJICAgIHRoaXMuX25zUGxheS5wbGF5KHN0cmVhbW5hbWUuZ2V0VGV4dCgpLC0xKTsKKyAgICBdXT4KKwk8L21ldGhvZD4KKworCTxtZXRob2QgbmFtZT0ic3RvcFBsYXlCcm9hZENhc3QiPgorCQl0aGlzLl9uc1BsYXkucGF1c2UoKTsKKwkJdGhpcy5fbnNQbGF5LmNsb3NlKCk7CisJCXBsYXlWaWRlby5hdHRhY2hWaWRlbyhudWxsKTsKKwkJcGxheVZpZGVvLnN0b3BJdCgpOworCTwvbWV0aG9kPgorCisJPHZpZXcgbGF5b3V0PSJheGlzOnk7c3BhY2luZzo0IiB3aWR0aD0iNDUwIiB4PSIwIj4KKwkJPHRleHQgZm9udHN0eWxlPSJib2xkIgorCQkJdGV4dD0iQ29ubmVjdGlvbiAtIFNldHRpbmdzICh1c2VyIGZvciBib3RoIEJyb2FkQ2FzdGluZyBhbmQgU3Vic2NyaWJpbmcpIiAvPgorCQk8dmlldyB3aWR0aD0iNDUwIj4KKwkJCTx0ZXh0IHRleHQ9IlVSTDoiIC8+CisJCQk8ZWRpdHRleHQgYWxpZ249InJpZ2h0IiB3aWR0aD0iMzUwIiBpZD0idXJsIgorCQkJCXRleHQ9InJ0bXA6Ly8xMjcuMC4wLjE6MTkzNS9vcGVubWVldGluZ3MvdGVzdHNjb3BlIiAvPgorCQk8L3ZpZXc+CisJCTxidXR0b24gYWxpZ249InJpZ2h0IiB3aWR0aD0iMjAwIiB0ZXh0PSJjb25uZWN0UnRtcENvbm5lY3Rpb24iCisJCQlvbmNsaWNrPSJjYW52YXMuY29ubmVjdFJ0bXBDb25uZWN0aW9uKCkiIC8+CisJPC92aWV3PgorCTwhLS0gc29tZSBkZXNjcmlwdGlvbiAtLT4KKwk8dGV4dCBmb250c3R5bGU9Iml0YWxpYyIgeT0iMCIgd2lkdGg9IjQ1MCIgbXVsdGlsaW5lPSJ0cnVlIiB4PSI0NTAiPgorCQlZb3UgY2FuIHRlc3QgYWxsIFNldHRpbmdzIG9mIEF1ZGlvIGFuZCBWaWRlbyBTdHJlYW1pbmdzIHdoaWNoIGFyZSBjdXJyZW50bHkgdXNlZCBpbiBPcGVuTWVldGluZ3MgaGVyZS4gPGJyIC8+IAorCQlDaGFuZ2UgdGhlIFVSTCBzbyB0aGF0IDEyNy4wLjAuMSBwb2ludHMgdG8geW91ciBSZWQ1LUluc3RhbGxhdGlvbiEgPGJyIC8+CisJCVlvdSBmaXJzdCBuZWVkIHRvIDxiPmNvbm5lY3Q8L2I+IHRvIGEgc3RyZWFtIGJlZm9yZSB5b3Ugc3RhcnQgdG8gPGI+YnJvYWRjYXN0PC9iPiE8YnIgLz4KKwkJWW91IGZpcnN0IG5lZWQgPGI+YnJvYWRjYXN0PC9iPiBhIHN0cmVhbSB3aXRoIGEgbmFtZSBiZWZvcmUgeW91IHRyeSB0byA8Yj5zdWJzY3JpYmU8L2I+IHRvIGl0ITxiciAvPgorCQlJZiBzb21lYm9keSBhbHJlYWR5IHVzZXMgdGhhdCBzdHJlYW1uYW1lIHlvdSBnZXQgYW4gTmV0U3RyZWFtICpCYWQuU3RyZWFtTmFtZSosIHlvdSBjYW4gdGFrZSBhbiBTdHJlYW1OYW1lIHlvdSBsaWtlLCBidXQgb2YgY291cnNlIHlvdSBoYXZlIHRvIHRlbGwgdGhlICpwbGF5ZXIqIHRoYXQgaXQgd2lsbCBuZWVkIHRvIHVzZSB0aGF0IFN0cmVhbU5hbWUhCisJCTxiciAvPgorCTwvdGV4dD4KKworCTxjaGVja2JveCBuYW1lPSJtb2R1cyIgeT0iMTIwIgorCQl0ZXh0PSJFdmVudCBNb2R1cyAoMzIweDI0MCkgb3IgQ29uZmVyZW5jZSBNb2R1cyAoMTI4eDk2KSIgdmFsdWU9InRydWUiPgorCQk8aGFuZGxlciBuYW1lPSJvbnZhbHVlIiBhcmdzPSJ2Ij4KKwkJCWlmIChjYW52YXMuaXNpbml0ZWQpIHsKKwkJCQlpZiAodil7CisJCQkJCWJyb2FkQ2FzdFZpZGVvLnNldEF0dHJpYnV0ZSgnd2lkdGgnLDMyMCk7CisJCQkJCWJyb2FkQ2FzdFZpZGVvLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywyNDApOworCQkJCQlicm9hZENhc3RWaWRlby5hcHBseVNpemVUb1ZpZCgpOworCQkJCQlwbGF5VmlkZW8uc2V0QXR0cmlidXRlKCd3aWR0aCcsMzIwKTsKKwkJCQkJcGxheVZpZGVvLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywyNDApOworCQkJCQlwbGF5VmlkZW8uYXBwbHlTaXplVG9WaWQoKTsKKwkJCQl9IGVsc2UgeworCQkJCQlicm9hZENhc3RWaWRlby5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywxMjgpOworCQkJCQlicm9hZENhc3RWaWRlby5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsOTYpOworCQkJCQlicm9hZENhc3RWaWRlby5hcHBseVNpemVUb1ZpZCgpOworCQkJCQlwbGF5VmlkZW8uc2V0QXR0cmlidXRlKCd3aWR0aCcsMTI4KTsKKwkJCQkJcGxheVZpZGVvLnNldEF0dHJpYnV0ZSgnaGVpZ2h0Jyw5Nik7CisJCQkJCXBsYXlWaWRlby5hcHBseVNpemVUb1ZpZCgpOworCQkJCX0KKwkJCX0KKwkJPC9oYW5kbGVyPgorCTwvY2hlY2tib3g+CisKKwk8dmlldyBiZ2NvbG9yPSJibGFjayIgd2lkdGg9IiR7IGNhbnZhcy53aWR0aCB9IiBoZWlnaHQ9IjIiIHk9IjE0MCIgLz4KKworCTwhLS0gdHdvIGNvbHVtbnMgbGVmdCBCcm9hZENhc3QsIHJpZ2h0IFN1YnNjcmliZSBhIFN0cmVhbSAtLT4KKwk8dmlldyB5PSIxNDQiIGhlaWdodD0iJG9uY2V7IGNhbnZhcy5oZWlnaHQtdGhpcy55IH0iIGNsaXA9InRydWUiPgorCQk8IS0tLSBTY3JvbGxBcmVhIC0tPgorCQk8dmlldyBsYXlvdXQ9ImF4aXM6eDtzcGFjaW5nOjEwIj4KKwkJCTwhLS0tIEJyb2FkQ2FzdGluZyBBcmVhIC0tPgorCQkJPHZpZXcgbGF5b3V0PSJheGlzOnk7c3BhY2luZzo0IiB3aWR0aD0iNDUwIj4KKworCQkJCTwhLS0tIFZpZGVvIEFyZWEgLS0+CisJCQkJPHZpZXcgaWQ9ImJyb2FkQ2FzdFZpZGVvIiBiZ2NvbG9yPSJibGFjayIgd2lkdGg9IjMyMCIgaGVpZ2h0PSIyNDAiPgorCQkJCQorCQkJCQk8cGFzc3Rocm91Z2ggd2hlbj0iJGFzMyI+CisJCQkJICAgICAgICBpbXBvcnQgZmxhc2gubWVkaWEuKjsKKwkJCQkgICAgICAgIGltcG9ydCBmbGFzaC5uZXQuTmV0Q29ubmVjdGlvbjsKKwkJCQkgICAgICAgIGltcG9ydCBmbGFzaC5uZXQuTmV0U3RyZWFtOworCQkJCSAgICA8L3Bhc3N0aHJvdWdoPgorCQkJCSAgICAKKwkJCQkgICAgPGF0dHJpYnV0ZSBuYW1lPSJfX0xadmlkZW8iIHZhbHVlPSJudWxsIiAvPgorCQkJCQkJCQkKKwkJCQkJPG1ldGhvZCBuYW1lPSJpbml0Ij48IVtDREFUQVsKKwkJCQkgICAgICAgIHN1cGVyLmluaXQoKTsKKwkJCQkgICAgICAgIHZhciBtYyA9IG5ldyBWaWRlbyh0aGlzLndpZHRoLCB0aGlzLmhlaWdodCk7CisJCQkJICAgICAgICB0aGlzLnNwcml0ZS5hZGRDaGlsZChtYyk7CisJCQkJICAgICAgICB0aGlzLl9fTFp2aWRlbyA9IG1jOworCQkJCSAgICAgICAgdGhpcy5hcHBseVNpemVUb1ZpZCgpOworCQkJCSAgICBdXT48L21ldGhvZD4KKwkJCQkJPG1ldGhvZCBuYW1lPSJhcHBseVNpemVUb1ZpZCI+CisJCQkJCQlpZiAodGhpcy5fX0xadmlkZW8gPT0gbnVsbCkgeworCQkJCQkJCXJldHVybjsKKwkJCQkJCX0KKwkJCQkJCXZhciB2aWQgPSB0aGlzLl9nZXRmbGFzaHZpZGVvKCk7CisJCQkJCQl2aWQud2lkdGggPSB0aGlzLndpZHRoOworCQkJCQkJdmlkLmhlaWdodCA9IHRoaXMuaGVpZ2h0OworCQkJCQk8L21ldGhvZD4KKwkJCQkJPG1ldGhvZCBuYW1lPSJfZ2V0Zmxhc2h2aWRlbyI+CisJCQkJCQk8IVtDREFUQVsKKwkJCQkgICAgICAgICAgICAvL0RlYnVnLndyaXRlKCJfZ2V0Zmxhc2h2aWRlbygpIik7CisJCQkJICAgICAgICAgICAgcmV0dXJuIHRoaXMuX19MWnZpZGVvOworCQkJCSAgICAgICAgXV0+CisJCQkJICAgIDwvbWV0aG9kPgorCQkJCQk8bWV0aG9kIG5hbWU9InN0b3BJdCI+CisJCQkJCQlpZiAodGhpcy5fX0xadmlkZW8gPT0gbnVsbCkgeworCQkJCQkJCXJldHVybjsKKwkJCQkJCX0KKwkJCQkJCXZhciB2aWQgPSB0aGlzLl9nZXRmbGFzaHZpZGVvKCk7CisJCQkJICAgIAl2aWQuYXR0YWNoTmV0U3RyZWFtKG51bGwpOworCQkJCQkJdGhpcy5fX0xadmlkZW8uY2xlYXIoKTsKKwkJCQkJPC9tZXRob2Q+CisJCQkJCTwhLS0tIHNob3dzIHRoZSBWaWRlbyAoY2FuIGJlIGEgQ2FtLUluc3RhbmNlIG9yIGEgTmV0U3RyZWFtKSBpbiB0aGUgCisJCQkJCQlWaWV3IC0tPgorCQkJCQk8bWV0aG9kIG5hbWU9ImF0dGFjaFZpZGVvIiBhcmdzPSJ2aWRlbyI+CisJCQkJCQlpZiAodGhpcy5fX0xadmlkZW8gPT0gbnVsbCkgeworCQkJCQkJCXJldHVybjsKKwkJCQkJCX0KKwkJCQkJCXZhciB2aWQgPSB0aGlzLl9nZXRmbGFzaHZpZGVvKCk7CisJCQkJCQl2aWQuYXR0YWNoQ2FtZXJhKHZpZGVvKTsKKwkJCQkJPC9tZXRob2Q+CisJCQkJPC92aWV3PgorCisJCQkJPHRleHQgZm9udHN0eWxlPSJib2xkIiB0ZXh0PSJCcm9hZENhc3QgLSBTZXR0aW5ncyIgLz4KKwkJCQk8dmlldyB3aWR0aD0iNDUwIj4KKwkJCQkJPHRleHQgdGV4dD0iU3RyZWFtTmFtZSAoQnJvYWRDYXN0KToiIC8+CisJCQkJCTxlZGl0dGV4dCBhbGlnbj0icmlnaHQiIHdpZHRoPSIxNTAiIGlkPSJzdHJlYW1uYW1lIiB0ZXh0PSJzdHJlYW0xIiAvPgorCQkJCTwvdmlldz4KKworCQkJCTxidXR0b24gYWxpZ249InJpZ2h0IiB3aWR0aD0iMjAwIiB0ZXh0PSJzdGFydEJyb2FkQ2FzdCIKKwkJCQkJb25jbGljaz0iY2FudmFzLnN0YXJ0QnJvYWRDYXN0KCkiIC8+CisJCQkJPGJ1dHRvbiBhbGlnbj0icmlnaHQiIHdpZHRoPSIyMDAiIHRleHQ9InN0b3BCcm9hZENhc3QiCisJCQkJCW9uY2xpY2s9ImNhbnZhcy5zdG9wQnJvYWRDYXN0KCkiIC8+CisKKwkJCQk8dGV4dCBmb250c3R5bGU9ImJvbGQiIHRleHQ9IlZpZGVvIGFuZCBBdWRpbyAtIFNldHRpbmdzIGZvciBCcm9hZC1DYXN0aW5nIiAvPgorCisJCQkJPCEtLS0gU2V0dGluZ3MgLS0+CisJCQkJPHZpZXcgd2lkdGg9IjQ1MCI+CisJCQkJCTx0ZXh0IHRleHQ9IkNhbWVyYToiIC8+CisJCQkJCTxjb21ib2JveCBhbGlnbj0icmlnaHQiIHdpZHRoPSIzNTAiIGlkPSJjYW1EZXZpY2VzIgorCQkJCQkJZWRpdGFibGU9ImZhbHNlIiBpdGVtY2xhc3NuYW1lPSJteUxpc3RJdGVtIj4KKwkJCQkJCTxzd2l0Y2g+CisJCQkJICAgICAgICAgICAgPHdoZW4gcHJvcGVydHk9IiRhczMiPgorCQkJCSAgICAgICAgICAgICAgICA8cGFzc3Rocm91Z2g+CisJCQkJICAgICAgICAgICAgICAgICAgICBpbXBvcnQgZmxhc2gubWVkaWEuQ2FtZXJhOworCQkJCSAgICAgICAgICAgICAgICA8L3Bhc3N0aHJvdWdoPgorCQkJCSAgICAgICAgICAgIDwvd2hlbj4KKwkJCQkgICAgICAgIDwvc3dpdGNoPgorCQkJCQkJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKwkJCQkJCTwhW0NEQVRBWworCQkJCQkJCS8vR2V0IGFsbCBhdmFpbGlibGUgQ2FtJ3MKKwkJCQkJCQl2YXIgdHcgPSBDYW1lcmEubmFtZXM7CisJCQkJCQkJdmFyIHIgPSAiIjsKKwkJCQkJCQlmb3IgKHZhciBlZz0wO2VnPHR3Lmxlbmd0aDtlZysrKXsKKwkJCQkJCQkJdGhpcy5hZGRJdGVtKHR3W2VnXSxlZyk7CisJCQkJCQkJCXI9ZWc7CisJCQkJCQkJfQorCQkJCQkJCXRoaXMuc2VsZWN0SXRlbShTdHJpbmcocikpOyAgCisJCQkJCQldXT4KKwkJCQkJCTwvaGFuZGxlcj4KKwkJCQkJPC9jb21ib2JveD4KKwkJCQk8L3ZpZXc+CisJCQkJPCEtLS0gV2lkdGggLS0+CisJCQkJPHZpZXcgd2lkdGg9IjQ1MCI+CisJCQkJCTx0ZXh0IHRleHQ9IldpZHRoOiIgLz4KKwkJCQkJPGVkaXR0ZXh0IGFsaWduPSJyaWdodCIgd2lkdGg9IjE1MCIgaWQ9InN0cmVhbXdpZHRoIgorCQkJCQkJdGV4dD0iJCB7IGJyb2FkQ2FzdFZpZGVvLndpZHRoIH0iIC8+CisJCQkJCTx0ZXh0IGZvbnRzdHlsZT0iaXRhbGljIiB5PSIyNiIgd2lkdGg9IjQ1MCIgbXVsdGlsaW5lPSJ0cnVlIj4KKwkJCQkJCXdpZHRoOk51bWJlciBbb3B0aW9uYWxdIC0gVGhlIHJlcXVlc3RlZCBjYXB0dXJlIHdpZHRoLCBpbiBwaXhlbHMuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIDE2MC4KKwkJCQkJPC90ZXh0PgorCQkJCTwvdmlldz4KKwkJCQk8IS0tLSBIZWlnaHQgLS0+CisJCQkJPHZpZXcgd2lkdGg9IjQ1MCI+CisJCQkJCTx0ZXh0IHRleHQ9IkhlaWdodDoiIC8+CisJCQkJCTxlZGl0dGV4dCBhbGlnbj0icmlnaHQiIHdpZHRoPSIxNTAiIGlkPSJzdHJlYW1oZWlnaHQiCisJCQkJCQl0ZXh0PSIkIHsgYnJvYWRDYXN0VmlkZW8uaGVpZ2h0IH0iIC8+CisJCQkJCTx0ZXh0IGZvbnRzdHlsZT0iaXRhbGljIiB5PSIyNiIgd2lkdGg9IjQ1MCIgbXVsdGlsaW5lPSJ0cnVlIj4KKwkJCQkJCWhlaWdodDpOdW1iZXIgW29wdGlvbmFsXSAtIFRoZSByZXF1ZXN0ZWQgY2FwdHVyZSBoZWlnaHQsIGluIHBpeGVscy4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgMTIwLgorCQkJCQk8L3RleHQ+CisJCQkJPC92aWV3PgorCQkJCTwhLS0gRnJhbWVzIFBlciBTZWNvbmQgLS0+CisJCQkJPHZpZXcgd2lkdGg9IjQ1MCI+CisJCQkJCTx0ZXh0IHRleHQ9IkZQUzoiIC8+CisJCQkJCTxlZGl0dGV4dCBhbGlnbj0icmlnaHQiIHdpZHRoPSIxNTAiIGlkPSJzdHJlYW1mcHMiIHRleHQ9IjMwIiAvPgorCQkJCQk8dGV4dCBmb250c3R5bGU9Iml0YWxpYyIgeT0iMjYiIHdpZHRoPSI0NTAiIG11bHRpbGluZT0idHJ1ZSI+CisJCQkJCQlmcHM6TnVtYmVyIFtvcHRpb25hbF0gLSBUaGUgcmVxdWVzdGVkIHJhdGUgYXQgd2hpY2ggdGhlIGNhbWVyYSBzaG91bGQgY2FwdHVyZSBkYXRhLCBpbiBmcmFtZXMgcGVyIHNlY29uZC4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgMTUuCisJCQkJCTwvdGV4dD4KKwkJCQk8L3ZpZXc+CisJCQkJPCEtLS0gRmF2b3JBcmVhIC0tPgorCQkJCTx2aWV3IHdpZHRoPSI0NTAiPgorCQkJCQk8Y2hlY2tib3ggaWQ9InN0cmVhbWZhdm9yYXJlYSIgdGV4dD0iRmF2b3JhcmVhIiB2YWx1ZT0idHJ1ZSIgLz4KKwkJCQkJPHRleHQgZm9udHN0eWxlPSJpdGFsaWMiIHk9IjI2IiB3aWR0aD0iNDUwIiBtdWx0aWxpbmU9InRydWUiPgorCQkJCQkJZmF2b3JBcmVhOkJvb2xlYW4gW29wdGlvbmFsXSAtIEEgQm9vbGVhbiB2YWx1ZSB0aGF0IHNwZWNpZmllcyBob3cgdG8gbWFuaXB1bGF0ZSB0aGUgd2lkdGgsIGhlaWdodCwgYW5kIGZyYW1lIHJhdGUgaWYgdGhlIGNhbWVyYSBkb2VzCisJCQkJCQlub3QgaGF2ZSBhIG5hdGl2ZSBtb2RlIHRoYXQgbWVldHMgdGhlIHNwZWNpZmllZCByZXF1aXJlbWVudHMuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHRydWUsIHdoaWNoIG1lYW5zIHRoYXQgbWFpbnRhaW5pbmcgY2FwdHVyZSBzaXplCisJCQkJCQlpcyBmYXZvcmVkOyB1c2luZyB0aGlzIHBhcmFtZXRlciBzZWxlY3RzIHRoZSBtb2RlIHRoYXQgbW9zdCBjbG9zZWx5IG1hdGNoZXMgd2lkdGggYW5kIGhlaWdodCB2YWx1ZXMsIGV2ZW4gaWYgZG9pbmcgc28KKwkJCQkJCWFkdmVyc2VseSBhZmZlY3RzIHBlcmZvcm1hbmNlIGJ5IHJlZHVjaW5nIHRoZSBmcmFtZSByYXRlLiBUbyBtYXhpbWl6ZSBmcmFtZSByYXRlIGF0IHRoZSBleHBlbnNlIG9mIGNhbWVyYSBoZWlnaHQgYW5kIHdpZHRoLAorCQkJCQkJcGFzcyBmYWxzZSBmb3IgdGhlIGZhdm9yQXJlYSBwYXJhbWV0ZXIuCisJCQkJCTwvdGV4dD4KKwkJCQk8L3ZpZXc+CisJCQkJPCEtLS0gQmFuZHdpZHRoIC0tPgorCQkJCTx2aWV3IHdpZHRoPSI0NTAiPgorCQkJCQk8dGV4dCB0ZXh0PSJCYW5kd2lkdGg6IiAvPgorCQkJCQk8ZWRpdHRleHQgYWxpZ249InJpZ2h0IiB3aWR0aD0iMTUwIiBpZD0ic3RyZWFtYmFuZHdpZHRoIgorCQkJCQkJdGV4dD0iMCIgLz4KKwkJCQkJPHRleHQgZm9udHN0eWxlPSJpdGFsaWMiIHk9IjI2IiB3aWR0aD0iNDUwIiBtdWx0aWxpbmU9InRydWUiPgorCQkJCQkJYmFuZHdpZHRoOk51bWJlciBbb3B0aW9uYWxdIC0gQW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyB0aGUgbWF4aW11bSBhbW91bnQgb2YgYmFuZHdpZHRoIHRoYXQgdGhlIGN1cnJlbnQgb3V0Z29pbmcgdmlkZW8gZmVlZAorCQkJCQkJY2FuIHVzZSwgaW4gYnl0ZXMgcGVyIHNlY29uZC4gVG8gc3BlY2lmeSB0aGF0IEZsYXNoIHZpZGVvIGNhbiB1c2UgYXMgbXVjaCBiYW5kd2lkdGggYXMgbmVlZGVkIHRvIG1haW50YWluIHRoZSB2YWx1ZSBvZiBmcmFtZVF1YWxpdHksIHBhc3MgMCBmb3IgYmFuZHdpZHRoLgorCQkJCQk8L3RleHQ+CisJCQkJPC92aWV3PgorCQkJCTwhLS0tIFF1YWxpdHkgLS0+CisJCQkJPHZpZXcgd2lkdGg9IjQ1MCI+CisJCQkJCTx0ZXh0IHRleHQ9IlF1YWxpdHk6IiAvPgorCQkJCQk8ZWRpdHRleHQgYWxpZ249InJpZ2h0IiB3aWR0aD0iMTUwIiBpZD0ic3RyZWFtcXVhbGl0eSIKKwkJCQkJCXRleHQ9IjkwIiAvPgorCQkJCQk8dGV4dCBmb250c3R5bGU9Iml0YWxpYyIgeT0iMjYiIHdpZHRoPSI0NTAiIG11bHRpbGluZT0idHJ1ZSI+CisJCQkJCQlxdWFsaXR5Ok51bWJlciBbb3B0aW9uYWxdIC0gQW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyB0aGUgcmVxdWlyZWQgbGV2ZWwgb2YgcGljdHVyZSBxdWFsaXR5LCBhcyBkZXRlcm1pbmVkIGJ5IHRoZSBhbW91bnQgb2YKKwkJCQkJCWNvbXByZXNzaW9uIGJlaW5nIGFwcGxpZWQgdG8gZWFjaCB2aWRlbyBmcmFtZS4gQWNjZXB0YWJsZSB2YWx1ZXMgcmFuZ2UgZnJvbSAxIChsb3dlc3QgcXVhbGl0eSwgbWF4aW11bSBjb21wcmVzc2lvbikgdG8gMTAwIChoaWdoZXN0CisJCQkJCQlxdWFsaXR5LCBubyBjb21wcmVzc2lvbikuIFRvIHNwZWNpZnkgdGhhdCBwaWN0dXJlIHF1YWxpdHkgY2FuIHZhcnkgYXMgbmVlZGVkIHRvIGF2b2lkIGV4Y2VlZGluZyBiYW5kd2lkdGgsIHBhc3MgMCBmb3IgcXVhbGl0eS4gVGhlCisJCQkJCQlkZWZhdWx0IHZhbHVlIGlzIDAuCisJCQkJCTwvdGV4dD4KKwkJCQk8L3ZpZXc+CisJCQkJPCEtLS0gQ2hvb3NlIE1pY3JvcGhvbmUgLS0+CisJCQkJPHZpZXcgd2lkdGg9IjQ1MCI+CisJCQkJCTx0ZXh0IHRleHQ9Ik1pY3JvcGhvbmU6IiAvPgorCQkJCQk8Y29tYm9ib3ggYWxpZ249InJpZ2h0IiB3aWR0aD0iMzUwIiBpZD0ibWljRGV2aWNlcyIKKwkJCQkJCWVkaXRhYmxlPSJmYWxzZSIgaXRlbWNsYXNzbmFtZT0ibXlMaXN0SXRlbSI+CisJCQkJCQk8c3dpdGNoPgorCQkJCSAgICAgICAgICAgIDx3aGVuIHByb3BlcnR5PSIkYXMzIj4KKwkJCQkgICAgICAgICAgICAgICAgPHBhc3N0aHJvdWdoPgorCQkJCSAgICAgICAgICAgICAgICAgICAgaW1wb3J0IGZsYXNoLm1lZGlhLk1pY3JvcGhvbmU7CisJCQkJICAgICAgICAgICAgICAgIDwvcGFzc3Rocm91Z2g+CisJCQkJICAgICAgICAgICAgPC93aGVuPgorCQkJCSAgICAgICAgPC9zd2l0Y2g+CisJCQkJCQk8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorCQkJCQkJPCFbQ0RBVEFbCisJCQkJCQkJLy9HZXQgYWxsIGF2YWlsaWJsZSBDYW0ncworCQkJCQkJCXZhciB0dyA9IE1pY3JvcGhvbmUubmFtZXM7CisJCQkJCQkJdmFyIHIgPSAiIjsKKwkJCQkJCQlmb3IgKHZhciBlZz0wO2VnPHR3Lmxlbmd0aDtlZysrKXsKKwkJCQkJCQkJdGhpcy5hZGRJdGVtKHR3W2VnXSxlZyk7CisJCQkJCQkJCXI9ZWc7CisJCQkJCQkJfQorCQkJCQkJCXRoaXMuc2VsZWN0SXRlbShTdHJpbmcocikpOyAgCisJCQkJCQldXT4KKwkJCQkJCTwvaGFuZGxlcj4KKwkJCQkJPC9jb21ib2JveD4KKwkJCQk8L3ZpZXc+CisJCQkJPCEtLS0gQXVkaW8tUmF0ZSAtLT4KKwkJCQk8dmlldyB3aWR0aD0iNDUwIj4KKwkJCQkJPHRleHQgdGV4dD0iUmF0ZToiIC8+CisJCQkJCTxlZGl0dGV4dCBhbGlnbj0icmlnaHQiIHdpZHRoPSIxNTAiIGlkPSJzdHJlYW1yYXRlIiB0ZXh0PSIyMiIgLz4KKwkJCQkJPHRleHQgZm9udHN0eWxlPSJpdGFsaWMiIHk9IjI2IiB3aWR0aD0iNDUwIiBtdWx0aWxpbmU9InRydWUiPgorCQkJCQkJcmF0ZTpOdW1iZXIgLSBUaGUgcmF0ZSBhdCB3aGljaCB0aGUgbWljcm9waG9uZSBzaG91bGQgY2FwdHVyZSBzb3VuZCwgaW4ga0h6LiBBY2NlcHRhYmxlIHZhbHVlcyBhcmUgNSwgOCwgMTEsIDIyLCBhbmQgNDQuIFRoZQorCQkJCQkJZGVmYXVsdCB2YWx1ZSBpcyA4IGtIeiBpZiB5b3VyIHNvdW5kIGNhcHR1cmUgZGV2aWNlIHN1cHBvcnRzIHRoaXMgdmFsdWUuIE90aGVyd2lzZSwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgdGhlIG5leHQgYXZhaWxhYmxlIGNhcHR1cmUKKwkJCQkJCWxldmVsIGFib3ZlIDgga0h6IHRoYXQgeW91ciBzb3VuZCBjYXB0dXJlIGRldmljZSBzdXBwb3J0cywgdXN1YWxseSAxMSBrSHouCisJCQkJCTwvdGV4dD4KKwkJCQk8L3ZpZXc+CisJCQkJPCEtLS0gdXNlRWNob1N1cHJlc3Npb24gLS0+CisJCQkJPHZpZXcgd2lkdGg9IjQ1MCI+CisJCQkJCTxjaGVja2JveCBpZD0ic3RyZWFtdXNlRWNob1N1cHByZXNzaW9uIiB0ZXh0PSJ1c2VFY2hvU3VwcHJlc3Npb24iCisJCQkJCQl2YWx1ZT0idHJ1ZSIgLz4KKwkJCQkJPHRleHQgZm9udHN0eWxlPSJpdGFsaWMiIHk9IjI2IiB3aWR0aD0iNDUwIiBtdWx0aWxpbmU9InRydWUiPgorCQkJCQkJcHVibGljIHVzZUVjaG9TdXBwcmVzc2lvbiA6IEJvb2xlYW4gW3JlYWQtb25seV0gUHJvcGVydHkgKHJlYWQtb25seSk7IGEgQm9vbGVhbiB2YWx1ZSBvZiB0cnVlIGlmIGVjaG8gc3VwcHJlc3Npb24gaXMgZW5hYmxlZCwgZmFsc2UKKwkJCQkJCW90aGVyd2lzZS4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgZmFsc2UgdW5sZXNzIHRoZSB1c2VyIGhhcyBzZWxlY3RlZCBSZWR1Y2UgRWNobyBpbiB0aGUgRmxhc2ggUGxheWVyIE1pY3JvcGhvbmUgU2V0dGluZ3MgcGFuZWwuCisJCQkJCQk8YnIvPjxici8+CisJCQkJCQlFY2hvIHN1cHByZXNzaW9uIGlzIGFuIGVmZm9ydCB0byByZWR1Y2UgdGhlIGVmZmVjdHMgb2YgYXVkaW8gZmVlZGJhY2ssIHdoaWNoIGlzIGNhdXNlZCB3aGVuIHNvdW5kIGdvaW5nIG91dCB0aGUgc3BlYWtlciBpcyBwaWNrZWQgdXAgYnkgdGhlIG1pY3JvcGhvbmUgb24gdGhlIHNhbWUgc3lzdGVtLiAoVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSBhY291c3RpYyBlY2hvIGNhbmNlbGxhdGlvbiwgd2hpY2ggY29tcGxldGVseSByZW1vdmVzIHRoZSBmZWVkYmFjay4gVGhlIHNldFVzZUVjaG9TdXBwcmVzc2lvbigpIG1ldGhvZCBpcyBpZ25vcmVkIHdoZW4geW91IGNhbGwgdGhlIGdldEVuaGFuY2VkTWljcm9waG9uZSgpIG1ldGhvZCB0byB1c2UgYWNvdXN0aWMgZWNobyBjYW5jZWxsYXRpb24uKQorCQkJCQk8L3RleHQ+CisJCQkJPC92aWV3PgorCQkJCQorCQkJCTwhLS0tIGVuaGFuY2VkIE1pY3JvcGhvbmUgLS0+CisJCQkJPHZpZXcgd2lkdGg9IjQ1MCI+CisJCQkJCTxjaGVja2JveCBpZD0idXNlRW5oYW5jZWRNaWNyb3Bob25lIiB0ZXh0PSJVc2UgRW5oYW5jZWQgTWljcm9waG9uZSIKKwkJCQkJCXZhbHVlPSJ0cnVlIiAvPgorCQkJCQk8dGV4dCBmb250c3R5bGU9Iml0YWxpYyIgeT0iMjYiIHdpZHRoPSI0NTAiIG11bHRpbGluZT0idHJ1ZSI+CisJCQkJCVRvIHVzZSBhY291c3RpYyBlY2hvIGNhbmNlbGxhdGlvbiwgc2V0IHRoaXMgdmFsdWUgdG8gdHJ1ZS4KKwkJCQkJPC90ZXh0PgorCQkJCTwvdmlldz4KKwkJCTwvdmlldz4KKworCQkJPCEtLS0gUGxheSBBcmVhIC0tPgorCQkJPHZpZXcgbGF5b3V0PSJheGlzOnk7c3BhY2luZzo0IiB3aWR0aD0iNDUwIj4KKworCQkJCTwhLS0tIFZpZGVvIE91dHB1dCAtLT4KKwkJCQk8dmlldyBpZD0icGxheVZpZGVvIiBiZ2NvbG9yPSJibGFjayIgd2lkdGg9IjMyMCIgaGVpZ2h0PSIyNDAiPgorCQkJCQorCQkJCQk8cGFzc3Rocm91Z2ggd2hlbj0iJGFzMyI+CisJCQkJICAgICAgICBpbXBvcnQgZmxhc2gubWVkaWEuKjsKKwkJCQkgICAgICAgIGltcG9ydCBmbGFzaC5uZXQuTmV0Q29ubmVjdGlvbjsKKwkJCQkgICAgICAgIGltcG9ydCBmbGFzaC5uZXQuTmV0U3RyZWFtOworCQkJCSAgICA8L3Bhc3N0aHJvdWdoPgorCQkJCQorCQkJCQk8bWV0aG9kIG5hbWU9ImluaXQiPjwhW0NEQVRBWworCQkJCSAgICAgICAgc3VwZXIuaW5pdCgpOworCQkJCSAgICAgICAgdmFyIG1jID0gbmV3IFZpZGVvKHRoaXMud2lkdGgsIHRoaXMuaGVpZ2h0KTsKKwkJCQkgICAgICAgIHRoaXMuc3ByaXRlLmFkZENoaWxkKG1jKTsKKwkJCQkgICAgICAgIHRoaXMuX19MWnZpZGVvID0gbWM7CisJCQkJICAgICAgICB0aGlzLmFwcGx5U2l6ZVRvVmlkKCk7CisJCQkJICAgIF1dPjwvbWV0aG9kPgorCQkJCQk8bWV0aG9kIG5hbWU9ImFwcGx5U2l6ZVRvVmlkIj4KKwkJCQkJCWlmICh0aGlzLl9fTFp2aWRlbyA9PSBudWxsKSB7CisJCQkJCQkJcmV0dXJuOworCQkJCQkJfQorCQkJCQkJdmFyIHZpZCA9IHRoaXMuX2dldGZsYXNodmlkZW8oKTsKKwkJCQkJCXZpZC53aWR0aCA9IHRoaXMud2lkdGg7CisJCQkJCQl2aWQuaGVpZ2h0ID0gdGhpcy5oZWlnaHQ7CisJCQkJCTwvbWV0aG9kPgorCQkJCQk8bWV0aG9kIG5hbWU9Il9nZXRmbGFzaHZpZGVvIj4KKwkJCQkJCTwhW0NEQVRBWworCQkJCSAgICAgICAgICAgIC8vRGVidWcud3JpdGUoIl9nZXRmbGFzaHZpZGVvKCkiKTsKKwkJCQkgICAgICAgICAgICByZXR1cm4gdGhpcy5fX0xadmlkZW87CisJCQkJICAgICAgICBdXT4KKwkJCQkgICAgPC9tZXRob2Q+CisJCQkJCTxtZXRob2QgbmFtZT0ic3RvcEl0Ij4KKwkJCQkJCWlmICh0aGlzLl9fTFp2aWRlbyA9PSBudWxsKSB7CisJCQkJCQkJcmV0dXJuOworCQkJCQkJfQorCQkJCQkJdmFyIHZpZCA9IHRoaXMuX2dldGZsYXNodmlkZW8oKTsKKwkJCQkgICAgCXZpZC5hdHRhY2hOZXRTdHJlYW0obnVsbCk7CisJCQkJCQl0aGlzLl9fTFp2aWRlby5jbGVhcigpOworCQkJCQk8L21ldGhvZD4KKwkJCQkJPCEtLS0gc2hvd3MgdGhlIFZpZGVvIChjYW4gYmUgYSBDYW0tSW5zdGFuY2Ugb3IgYSBOZXRTdHJlYW0pIGluIHRoZSAKKwkJCQkJCVZpZXcgLS0+CisJCQkJCTxtZXRob2QgbmFtZT0iYXR0YWNoVmlkZW8iIGFyZ3M9InZpZGVvIj4KKwkJCQkJCXZhciB2aWQgPSB0aGlzLl9nZXRmbGFzaHZpZGVvKCk7CisJCQkJCQl2aWQuYXR0YWNoTmV0U3RyZWFtKHZpZGVvKTsKKwkJCQkJPC9tZXRob2Q+CisJCQkJPC92aWV3PgorCisJCQkJPHZpZXcgaGVpZ2h0PSIyMCIgLz4KKwkJCQk8dGV4dCBmb250c3R5bGU9ImJvbGQiCisJCQkJCXRleHQ9IlBsYXktQnJvYWRjYXN0KFN1YnNjcmliZSB0byBhIExpdmUgU3RyZWFtKSAtIFNldHRpbmdzIiAvPgorCQkJCTx2aWV3IHdpZHRoPSI0NTAiPgorCQkJCQk8dGV4dCB0ZXh0PSJTdHJlYW1OYW1lIChQbGF5KToiIC8+CisJCQkJCTxlZGl0dGV4dCBhbGlnbj0icmlnaHQiIHdpZHRoPSIxNTAiIGlkPSJzdHJlYW1uYW1lMiIgdGV4dD0ic3RyZWFtMSIgLz4KKwkJCQk8L3ZpZXc+CisJCQkJPCEtLS0gQnVmZmVyIFRpbWUgLS0+CisJCQkJPHZpZXcgd2lkdGg9IjQ1MCI+CisJCQkJCTx0ZXh0IHRleHQ9IkJ1ZmZlclRpbWU6IiAvPgorCQkJCQk8ZWRpdHRleHQgYWxpZ249InJpZ2h0IiB3aWR0aD0iMTUwIiBpZD0ic3RyZWFtYnVmZmVyIgorCQkJCQkJdGV4dD0iMC4zIiAvPgorCQkJCQk8dGV4dCBmb250c3R5bGU9Iml0YWxpYyIgeT0iMjYiIHdpZHRoPSI0NTAiIG11bHRpbGluZT0idHJ1ZSI+CisJCQkJCQlwdWJsaWMgYnVmZmVyVGltZSA6IE51bWJlciBbcmVhZC1vbmx5XSBUaGUgbnVtYmVyIG9mIHNlY29uZHMgYXNzaWduZWQgdG8gdGhlIGJ1ZmZlciBieQorCQkJCQkJTmV0U3RyZWFtLnNldEJ1ZmZlclRpbWUoKS4gVGhlIGRlZmF1bHQgdmFsdWUgaXMgLjEob25lLXRlbnRoIG9mIGEgc2Vjb25kKS4gVG8gZGV0ZXJtaW5lIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBjdXJyZW50bHkgaW4gdGhlCisJCQkJCQlidWZmZXIsIHVzZSBOZXRTdHJlYW0uYnVmZmVyTGVuZ3RoLgorCQkJCQk8L3RleHQ+CisJCQkJPC92aWV3PgorCQkJCTxidXR0b24gYWxpZ249InJpZ2h0IiB3aWR0aD0iMjAwIiB0ZXh0PSJwbGF5QnJvYWRDYXN0IgorCQkJCQlvbmNsaWNrPSJjYW52YXMucGxheUJyb2FkQ2FzdCgpIiAvPgorCQkJCTxidXR0b24gYWxpZ249InJpZ2h0IiB3aWR0aD0iMjAwIiB0ZXh0PSJzdG9wUGxheUJyb2FkQ2FzdCIKKwkJCQkJb25jbGljaz0iY2FudmFzLnN0b3BQbGF5QnJvYWRDYXN0KCkiIC8+CisJCQk8L3ZpZXc+CisJCTwvdmlldz4KKwkJPHZzY3JvbGxiYXIgLz4KKwk8L3ZpZXc+CisKKzwvY2FudmFzPgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvdGVzdC90ZXN0LXNldHVwLmx6eC5zd2YxMS5zd2YgYi9XZWJDb250ZW50L3NyYy90ZXN0L3Rlc3Qtc2V0dXAubHp4LnN3ZjExLnN3ZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjhhNzU4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvdGVzdC90ZXN0LXNldHVwLmx6eC5zd2YxMS5zd2YKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvdGVzdC90ZXN0LXNvYXAubHp4IGIvV2ViQ29udGVudC9zcmMvdGVzdC90ZXN0LXNvYXAubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3Nzc4ZTMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy90ZXN0L3Rlc3Qtc29hcC5sengKQEAgLTAsMCArMSw1MSBAQAorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGNhbnZhcyBkZWJ1Zz0idHJ1ZSIgaGVpZ2h0PSI0MDAiIHdpZHRoPSI1MzAiPgorCisgICAgPGRlYnVnIHg9IjEwIiB5PSIxOTAiIHdpZHRoPSI1MTAiIGhlaWdodD0iMjAwIi8+CisKKyAgICA8c29hcCBuYW1lPSJmaWxlU2VydmljZSIgd3NkbD0iaHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9GaWxlU2VydmljZT93c2RsIj4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25sb2FkIj4KKyAgICAgICAgICAgIERlYnVnLndyaXRlKCdmaWxlU2VydmljZSBzb2FwIHNlcnZpY2UgbG9hZGVkJyk7CisgICAgICAgIDwvaGFuZGxlcj4KKworICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmVycm9yIiBhcmdzPSJlcnJvciI+CisgICAgICAgICAgICBEZWJ1Zy53cml0ZSgnZXJyb3I6JywgZXJyb3IpOworICAgICAgICA8L2hhbmRsZXI+CisKKyAgICAgICAgPCEtLSBTZWUgUlBDIGNoYXB0ZXIgZm9yIGRldGFpbHMgb24gcmVtb3RlY2FsbCBhbmQgaG93IGRhdGFvYmplY3QgaXMKKyAgICAgICAgICAgICB1c2VkIHRvIGRhdGEgYmluZCB0byBSUEMgb3BlcmF0aW9uIHJlc3VsdHMuIC0tPiAKKyAgICAgICAgPHJlbW90ZWNhbGwgbmFtZT0icGluZyIgZnVuY25hbWU9InBpbmciPgorICAgICAgICAJPHBhcmFtIHZhbHVlPSIxIi8+CisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4KKyAgICAgICAgICAgICAgICBEZWJ1Zy53cml0ZSgncmVzdWx0OlxuJywgdmFsdWUpOworICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8L3JlbW90ZWNhbGw+CisgICAgPC9zb2FwPgorCisgICAgPHZpZXcgeD0iMTAiIHk9IjEwIiBsYXlvdXQ9InNwYWNpbmc6IDUiPgorICAgICAgICA8dmlldyBsYXlvdXQ9ImF4aXM6IHg7IHNwYWNpbmc6IDUiPgorICAgICAgICAgICAgPGVkaXR0ZXh0IGlkPSJzIiB0ZXh0PSJTT0FQIi8+CisgICAgICAgICAgICA8YnV0dG9uIHRleHQ9InNlYXJjaCIgb25jbGljaz0iRGVidWcud3JpdGUoJ0ludm9raW5nIHNlYXJjaC4uLicpOyBmaWxlU2VydmljZS5waW5nLmludm9rZSgpIi8+CisgICAgICAgIDwvdmlldz4KKworICAgIDwvdmlldz4KKworPC9jYW52YXM+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy90ZXN0L3Rlc3RMUFA0MTU0Lmx6eCBiL1dlYkNvbnRlbnQvc3JjL3Rlc3QvdGVzdExQUDQxNTQubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjYTczZjMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy90ZXN0L3Rlc3RMUFA0MTU0Lmx6eApAQCAtMCwwICsxLDYyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorCis8Y2FudmFzIGRlYnVnPSJ0cnVlIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiBmb250c2l6ZT0iMTQiIHRpdGxlPSJPcGVuTWVldGluZ3MgLSBDb21wdXRlciB0ZXN0aW5nIj4KKwkKKwk8ZGVidWcgZm9udHNpemU9IjE0IiBvbmluaXQ9IkRlYnVnLnNob3dJbnRlcm5hbFByb3BlcnRpZXMgPSB0cnVlIi8+CisgICAgCis8Y2xhc3MgbmFtZT0ic3dmUmVzb3VyY2VWaWV3IiBleHRlbmRzPSJ2aWV3IiBwbGF5PSJmYWxzZSIgeT0iNDAiPgorICAgICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25sb2FkIj4KKyAgICAgICAgICAgIC8vRGVidWcud3JpdGUoIlJlc291cmNlIGxvYWRlZDogIix0aGlzKTsKKyAgICAgICAgICAgIHRoaXMuc3RvcCgpOworICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3BsYXknLGZhbHNlKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICAvL0RlYnVnLndyaXRlKCJvbmNsaWNrOiAiLHRoaXMuc3ByaXRlKTsKKyAgICAgICAgICAgIC8vRGVidWcud3JpdGUoIm9uY2xpY2s6ICIsdGhpcy5zcHJpdGUuZ2V0RGlzcGxheU9iamVjdCgpKTsKKyAgICAgICAgPC9oYW5kbGVyPiAgICAgICAgCisgICAgICAgIAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmZyYW1lIiBhcmdzPSJpIj4KKyAgICAgICAgICAgIC8vLy9EZWJ1Zy53cml0ZSgib25mcmFtZSIsaSk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9ucGxheSIgYXJncz0iaSI+CisgICAgICAgICAgICAvL0RlYnVnLndyaXRlKCJvbnBsYXkiLGkpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIAorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbnN0b3AiIGFyZ3M9ImkiPgorICAgICAgICAgICAgLy9EZWJ1Zy53cml0ZSgib25zdG9wIixpKTsKKyAgICAgICAgPC9oYW5kbGVyPiAgICAgICAgCisgICAgICAgIAorPC9jbGFzcz4gICAgCisgICAgCis8YnV0dG9uIHRleHQ9InNldFNvdXJjZSIgb25jbGljaz0ieHl6LnNldFNvdXJjZSgnVHV0b3JhdC5zd2YnKSIgPgorICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICB2YXIgdGVtcFZpZXcgPSBuZXcgbHouc3dmUmVzb3VyY2VWaWV3KGNhbnZhcyx7aWQ6J3h5eid9KTsKKyAgICAgICAgdGVtcFZpZXcuc2V0U291cmNlKCdUdXRvcmF0LnN3ZicpOworICAgIDwvaGFuZGxlcj4KKzwvYnV0dG9uPgorCisgIAorICAgIAorPC9jYW52YXM+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3NyYy90ZXN0L3Rlc3RMaW5lV2lkdGgubHp4IGIvV2ViQ29udGVudC9zcmMvdGVzdC90ZXN0TGluZVdpZHRoLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMTQyNjIyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvdGVzdC90ZXN0TGluZVdpZHRoLmx6eApAQCAtMCwwICsxLDEyOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKworPGNhbnZhcyBkZWJ1Zz0idHJ1ZSIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMTAwJSIgZm9udHNpemU9IjE0IiB0aXRsZT0iT3Blbk1lZXRpbmdzIC0gQ29tcHV0ZXIgdGVzdGluZyI+CisJCisJPGRlYnVnIGZvbnRzaXplPSIxNCIgb25pbml0PSJEZWJ1Zy5zaG93SW50ZXJuYWxQcm9wZXJ0aWVzID0gdHJ1ZSIvPgorCQorPCEtLQorCVRlc3RzIGZvciBjYWxjdWxhdGluZyB0aGUgbGluZXdpZHRoIGluIGEgbXVsdGlubGluZSBUZXh0Ym94IGZvciBlYWNoIGxpbmUKKwl0aGUgbWVhbmluZyBvZiBzZXZlcmFsIHZhcnMgY2FuIGJlIHNlZW4gaGVyZToKKwlodHRwOi8vbGl2ZWRvY3MuYWRvYmUuY29tL2ZsYXNoLzkuMC9tYWluL3d3aGVscC93d2hpbXBsL2pzL2h0bWwvd3doZWxwLmh0bQorIC0tPgkKKyAgICAKKzxzY3JpcHQ+Cis8IVtDREFUQVsKKworCXZhciBtYXhzaXplID0gMjIwOworCXZhciB0ZXh0RmllbGR0ZXh0ID0gIiI7CisJdmFyIHN0YXJ0SW5kZXggPSAwOworCXZhciBjdXJyZW50TGluZSA9IDA7CisJdmFyIHRleHRPYmplY3QgPSBudWxsOworCXZhciBteVRleHRGb3JtYXQgPSBudWxsOworCXZhciBsaW5lSGVpZ2h0ID0gMDsKKwkKKwlmdW5jdGlvbiBjYWxjTGluZVdpZHRoQnlUZXh0RmllbGQobWF4c2l6ZVRleHQsdGV4dEZvckNhbGNpbmcsZm9udHNpemUsIGZvbnRuYW1lKXsKKwkJCisJCW1heHNpemUgPSBtYXhzaXplVGV4dDsKKwkJc3RhcnRJbmRleCA9IDA7CisJCXRleHRPYmplY3QgPSBuZXcgQXJyYXkoKTsKKwkJCisJCXRleHRGaWVsZHRleHQgPSB0ZXh0Rm9yQ2FsY2luZzsKKwkJbXlUZXh0Rm9ybWF0ID0gbmV3IFRleHRGb3JtYXQoKTsKKwkJbXlUZXh0Rm9ybWF0LnNpemUgPSBmb250c2l6ZTsKKwkJbXlUZXh0Rm9ybWF0LmZvbnQgPSBmb250bmFtZTsKKwkJCisJCXZhciBtZXRyaWNzID0gbXlUZXh0Rm9ybWF0LmdldFRleHRFeHRlbnQodGV4dEZpZWxkdGV4dCwgMTAwMDAwKTsKKwkJRGVidWcud3JpdGUobWV0cmljcyk7CisJCWxpbmVIZWlnaHQgPSBtZXRyaWNzLmFzY2VudCttZXRyaWNzLmRlc2NlbnQ7CisJCURlYnVnLndyaXRlKGxpbmVIZWlnaHQpOwkJCisJCQorCQltZWFzdXJlTGluZSgpOworCQkKKwkJZm9yICh2YXIgayA9IDA7azx0ZXh0T2JqZWN0Lmxlbmd0aDtrKyspeworCQkJdmFyIG1ldHJpY3MgPSBteVRleHRGb3JtYXQuZ2V0VGV4dEV4dGVudCh0ZXh0T2JqZWN0W2tdWyJ0ZXh0Il0sIDEwMDAwMCk7CisJCQl0ZXh0T2JqZWN0W2tdWyJsaW5lV2lkdGgiXSA9IG1ldHJpY3Mud2lkdGg7CisJCQkvL0RlYnVnLndyaXRlKCJ0ZXh0OiAiLG1ldHJpY3Msayx0ZXh0T2JqZWN0W2tdWyJsaW5lV2lkdGgiXSx0ZXh0T2JqZWN0W2tdWyJ0ZXh0Il0pOworCQl9CisJCQorCQlyZXR1cm4gdGV4dE9iamVjdDsKKwl9CisJCisJZnVuY3Rpb24gbWVhc3VyZUxpbmUoKXsJCQorCQkvL0RlYnVnLndyaXRlKCJyZXN0U3RyaW5nOiAiLHRleHRGaWVsZHRleHQpOworCQlmb3IgKHZhciBpPXRleHRGaWVsZHRleHQubGVuZ3RoO2k+MDtpLS0peworCQkJdmFyIHRlc3RUeHQgPSB0ZXh0RmllbGR0ZXh0LnNsaWNlKHN0YXJ0SW5kZXgsIGkpOworCQkJdmFyIG1ldHJpY3MgPSBteVRleHRGb3JtYXQuZ2V0VGV4dEV4dGVudCh0ZXN0VHh0LCAxMDAwMDApOworCQkJLy9EZWJ1Zy53cml0ZSgibWV0cmljczogIix0ZXN0VHh0LHN0YXJ0SW5kZXgsbWV0cmljcy53aWR0aCk7CisJCQlpZiAobWV0cmljcy53aWR0aDw9bWF4c2l6ZSl7CisKKwkJCQl0ZXN0VHh0ID0gdGV4dEZpZWxkdGV4dC5zbGljZShzdGFydEluZGV4LCBpLTEpOworCQkJCXRleHRPYmplY3RbY3VycmVudExpbmVdID0gbmV3IEFycmF5KCk7CisJCQkJdGV4dE9iamVjdFtjdXJyZW50TGluZV1bInRleHQiXSA9IHRlc3RUeHQ7CisJCQkJdGV4dEZpZWxkdGV4dCA9IHRleHRGaWVsZHRleHQuc2xpY2UoaS0xLCB0ZXh0RmllbGR0ZXh0Lmxlbmd0aCk7CisJCQkJCisJCQkJaWYgKHRleHRGaWVsZHRleHQubGVuZ3RoPT0xKXsKKwkJCQkJdGV4dE9iamVjdFtjdXJyZW50TGluZV1bInRleHQiXSs9dGV4dEZpZWxkdGV4dDsKKwkJCQkJcmV0dXJuOworCQkJCX0gZWxzZSB7CisJCQkJCWN1cnJlbnRMaW5lKz0xOworCQkJCQlyZXR1cm4gbWVhc3VyZUxpbmUoKTsKKwkJCQl9CisJCQl9CisJCX0JCQorCX0KKwkKKwkKKwkKKwkvL2Z1bmN0aW9uIGdldExpbmVXaWR0aCgpCitdXT4KKzwvc2NyaXB0PgorCis8dGV4dCBtdWx0aWxpbmU9InRydWUiIHg9IjQwIiB5PSIyMCIgd2lkdGg9IjIyMCIgc2VsZWN0YWJsZT0idHJ1ZSIgPgorCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisJCTwhW0NEQVRBWworCQkJdGhpcy5zcHJpdGUuX19MWnRleHRjbGlwLndvcmRXcmFwID0gZmFsc2U7CisJCQlEZWJ1Zy53cml0ZSh0aGlzLnNwcml0ZS5fX0xadGV4dGNsaXApOworCQkJdmFyIGl0ZW1zID0gbmV3IEFycmF5KCk7CisJCQl2YXIgdCA9ICIiOworCQkJLy9pdGVtc1swXSA9IFsidGV4dCIsImhlbGxvIHlvdXIgYXJlIHRoZSBoZXJvIGxldHMgY2hlY2sgYWNjb21vZGF0aW9uIHRvZGF5IGkgbmVlZCBzb21lIGlucHV0Il07CisJCQlpdGVtc1swXSA9IFsidGV4dCIsImhlbGxvICJdOworCQkJaXRlbXNbMF0gPSBbInRleHQiLCJkZXIgaGF0IGRyZWkgZWNrZW4gICAgICB1bmQgd2FydW0gaXN0IG1lbmkgaHV0IGRlciBrbnV0ICAgICAgPz8gd2FydW1TVCJdOyAKKwkJCWZvciAodmFyIGk9MDtpPGl0ZW1zLmxlbmd0aDtpKyspIHsKKwkJCQlpZiAoaXRlbXNbaV1bMF09PSJ0ZXh0Iil7CisJCQkJCXQgKz0gaXRlbXNbaV1bMV07CisJCQkJfSBlbHNlIHsKKwkJCQkJdmFyIHRlbXBTdHJpbmcgPSBjYWxjTGluZVdpZHRoQnlUZXh0RmllbGQodGhpcy53aWR0aCwgdCx0aGlzLmZvbnRzaXplLCJWZXJkYW5hIik7CisJCQkJCXRlbXBTdHJpbmdbdGVtcFN0cmluZy5sZW5ndGgtMV1bImxpbmVXaWR0aCJdOworCQkJCX0KKwkJCX0KKwkJCXZhciB0U3RyaW5nID0gY2FsY0xpbmVXaWR0aEJ5VGV4dEZpZWxkKHRoaXMud2lkdGgsIHQsdGhpcy5mb250c2l6ZSwiVmVyZGFuYSIpOworCQkJZm9yICh2YXIgayA9IDA7azx0U3RyaW5nLmxlbmd0aDtrKyspeworCQkJCXRoaXMuc2V0QXR0cmlidXRlKCd0ZXh0Jyx0aGlzLmdldFRleHQoKSt0ZXh0T2JqZWN0W2tdWyJ0ZXh0Il0rIlxyIik7CisJCQkJRGVidWcud3JpdGUoImxpbmUsd2lkdGgsdGV4dDogIixrLHRleHRPYmplY3Rba11bImxpbmVXaWR0aCJdLHRleHRPYmplY3Rba11bInRleHQiXSk7CisJCQl9CQkJCisJCQkKKwkJXV0+CisJPC9oYW5kbGVyPgorPC90ZXh0PgorICAKKyAgICAKKzwvY2FudmFzPgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvdGVzdC90ZXN0TGluZVdpZHRoLmx6eC5senI9c3dmOC5zd2YgYi9XZWJDb250ZW50L3NyYy90ZXN0L3Rlc3RMaW5lV2lkdGgubHp4Lmx6cj1zd2Y4LnN3ZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jY2I1MjI0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvdGVzdC90ZXN0TGluZVdpZHRoLmx6eC5senI9c3dmOC5zd2YKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvdGVzdC90ZXN0TG9hZFNXRi5sengubHpyPXN3Zjguc3dmIGIvV2ViQ29udGVudC9zcmMvdGVzdC90ZXN0TG9hZFNXRi5sengubHpyPXN3Zjguc3dmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3MDBjYzgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy90ZXN0L3Rlc3RMb2FkU1dGLmx6eC5senI9c3dmOC5zd2YKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvdGVzdC90ZXN0X21haW4ubHp4IGIvV2ViQ29udGVudC9zcmMvdGVzdC90ZXN0X21haW4ubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1ZTlmZjgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy90ZXN0L3Rlc3RfbWFpbi5sengKQEAgLTAsMCArMSwyNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8Y2FudmFzPgorCis8dGV4dD5IZWxsbyBXb3JsZDwvdGV4dD4KKworPC9jYW52YXM+CisKKwpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvdGVzdC90ZXN0X29uY2xpY2subHp4IGIvV2ViQ29udGVudC9zcmMvdGVzdC90ZXN0X29uY2xpY2subHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjOTNlYmQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy90ZXN0L3Rlc3Rfb25jbGljay5sengKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8Y2FudmFzIGRlYnVnPSJ0cnVlIiB3aWR0aD0iMTAwMCIgaGVpZ2h0PSI3MDAiPgorCisgICAgPGNsYXNzIG5hbWU9Im15VmlldyIgZXh0ZW5kcz0iZHJhd3ZpZXciIGJnY29sb3I9InJlZCIgY2xpcD0idHJ1ZSIgCisgICAgICAgIHdpZHRoPSIyMDAiIGhlaWdodD0iMjAwIiAKKyAgICAgICAgb25jbGljaz0iLy9EZWJ1Zy53cml0ZSgnb25jbGljaycsdGhpcykiIAorICAgICAgICBvbm1vdXNldXA9Ii8vRGVidWcud3JpdGUoJ29ubW91c2V1cCcsdGhpcykiIC8+CisgICAgCis8bXlWaWV3IC8+CisgICAgCis8L2NhbnZhcz4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL3Rlc3QvdGVzdF91cGxvYWQubHp4IGIvV2ViQ29udGVudC9zcmMvdGVzdC90ZXN0X3VwbG9hZC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGE2MmUyYQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3JjL3Rlc3QvdGVzdF91cGxvYWQubHp4CkBAIC0wLDAgKzEsMjkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGNhbnZhcyBkZWJ1Zz0idHJ1ZSIgd2lkdGg9IjEwMDAiIGhlaWdodD0iNzAwIj4KKworPGluY2x1ZGUgaHJlZj0ib3NsbW9uLyIgLz4KKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgICAgICBuZXcgbHoudXBsb2FkV2luZG93KGNhbnZhcyk7CisgICAgPC9oYW5kbGVyPgorCis8L2NhbnZhcz4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL3Rlc3QvdGVzdHN3Zi90ZXN0LnBkZiBiL1dlYkNvbnRlbnQvc3JjL3Rlc3QvdGVzdHN3Zi90ZXN0LnBkZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzRiN2JiCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvdGVzdC90ZXN0c3dmL3Rlc3QucGRmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL3Rlc3QvdGVzdHN3Zi90ZXN0LnN3ZiBiL1dlYkNvbnRlbnQvc3JjL3Rlc3QvdGVzdHN3Zi90ZXN0LnN3ZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGUxODk0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvdGVzdC90ZXN0c3dmL3Rlc3Quc3dmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3JjL3Rlc3QvdGVzdHN3Zi90ZXN0TG9hZFNXRi5senggYi9XZWJDb250ZW50L3NyYy90ZXN0L3Rlc3Rzd2YvdGVzdExvYWRTV0YubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkYWIyOWYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy90ZXN0L3Rlc3Rzd2YvdGVzdExvYWRTV0YubHp4CkBAIC0wLDAgKzEsNDggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+CisKKzxjYW52YXMgZGVidWc9InRydWUiIHdpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZvbnRzaXplPSIxNCIgdGl0bGU9Ik9wZW5NZWV0aW5ncyAtIFNXRiB0ZXN0aW5nIj4KKwkKKwk8ZGVidWcgZm9udHNpemU9IjE0IiBvbmluaXQ9IkRlYnVnLnNob3dJbnRlcm5hbFByb3BlcnRpZXMgPSB0cnVlIi8+CisJCis8dmlldyBsYXlvdXQ9ImF4aXM6eDtzcGFjaW5nOjIiPgorCTxidXR0b24gbmFtZT0iX2J0biI+CisJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorCQkJY2FudmFzLl9zd2Z2aWV3LnNldEF0dHJpYnV0ZSgnZnJhbWUnLGNhbnZhcy5fc3dmdmlldy5mcmFtZSsxKTsKKwkJCS8vdmFyIG1jID0gY2FudmFzLl9zd2Z2aWV3LmdldERpc3BsYXlPYmplY3QoKTsKKwkJCS8vRGVidWcud3JpdGUoY2FudmFzLl9zd2Z2aWV3KTsKKwkJCS8vRGVidWcud3JpdGUobWMpOworCQkJLy9tYy5fZnJhbWUgPSA0OworCQkJLy9tYy5wbGF5KCk7CisJCTwvaGFuZGxlcj4KKwk8L2J1dHRvbj4KKzwvdmlldz4KKwkKKzx2aWV3IG5hbWU9Il9zd2Z2aWV3IiB5PSIyMCI+CisJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKwkJPCFbQ0RBVEFbCisJCQl0aGlzLnNldFNvdXJjZSgidGVzdC5zd2YiKTsKKwkJXV0+CisJPC9oYW5kbGVyPgorPC92aWV3PgorICAKKyAgICAKKzwvY2FudmFzPgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvdGVzdC90ZXN0c3dmL3Rlc3RMb2FkU1dGLmx6eC5senI9c3dmOC5zd2YgYi9XZWJDb250ZW50L3NyYy90ZXN0L3Rlc3Rzd2YvdGVzdExvYWRTV0YubHp4Lmx6cj1zd2Y4LnN3ZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTAzYjU5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvdGVzdC90ZXN0c3dmL3Rlc3RMb2FkU1dGLmx6eC5senI9c3dmOC5zd2YKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvdGVzdF9pbmRleC5odG1sIGIvV2ViQ29udGVudC9zcmMvdGVzdF9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmM2EwMjAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3NyYy90ZXN0X2luZGV4Lmh0bWwKQEAgLTAsMCArMSwxNDAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGh0bWw+Cis8aGVhZD4KKworPG1ldGEgaHR0cC1lcXVpdj0iY2FjaGUtY29udHJvbCIgY29udGVudD0ibm8tY2FjaGUiPgorCis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Cis8bWV0YSBodHRwLWVxdWl2PSJYLVVBLUNvbXBhdGlibGUiIGNvbnRlbnQ9IklFPUVtdWxhdGVJRTciPgorPGxpbmsgcmVsPSJzaG9ydGN1dCBpY29uIiB0eXBlPSJpbWFnZS94LWljb24iIGhyZWY9ImZhdmljb24uaWNvIj4KKzxtZXRhIG5hbWU9InZpZXdwb3J0IiBjb250ZW50PSJ3aWR0aD1kZXZpY2Utd2lkdGg7IGluaXRpYWwtc2NhbGU9MS4wOyI+Cis8dGl0bGU+T3Blbkxhc3psbyBBcHBsaWNhdGlvbjwvdGl0bGU+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICAgICAgLy8gSWYgbG9hZGVkIGJhcmUgaW50byBhIGJyb3dzZXIsIHNldCB0aGUgYnJvd3NlciBzaXplIHRvIHRoZSBjYW52YXMgc2l6ZQorICAgICAgICAgIGlmICh3aW5kb3cgPT09IHRvcCkgeworICAgICAgICAgICAgKGZ1bmN0aW9uICh3aWR0aCwgaGVpZ2h0KSB7CisgICAgICAgICAgICAgIC8vIENmLiBodHRwOi8vd3d3LnF1aXJrc21vZGUub3JnL3ZpZXdwb3J0L2NvbXBhdGliaWxpdHkuaHRtbAorICAgICAgICAgICAgICBpZiAod2luZG93LmlubmVySGVpZ2h0KSB7CisgICAgICAgICAgICAgICAgLy8gU2FkbHksIGlubmVySGVpZ2h0L1dpZHRoIGlzIG5vdCByL3cgb24gc29tZSBicm93c2VycywgYW5kIHJlc2l6ZVRvIGlzIGZvciBvdXRlckhlaWdodC9XaWR0aAorICAgICAgICAgICAgICAgIHdpbmRvdy5yZXNpemVUbyh3aWR0aCA/ICh3aWR0aCArIHdpbmRvdy5vdXRlcldpZHRoIC0gd2luZG93LmlubmVyV2lkdGgpIDogd2luZG93Lm91dGVyV2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCA/IChoZWlnaHQgKyB3aW5kb3cub3V0ZXJIZWlnaHQgLSB3aW5kb3cuaW5uZXJIZWlnaHQpIDogd2luZG93Lm91dGVySGVpZ2h0KTsKKyAgICAgICAgICAgICAgfSBlbHNlIGlmIChkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQgJiYgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudEhlaWdodCkgeworICAgICAgICAgICAgICAgIGlmICh3aWR0aCkgeworICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoID0gd2lkdGg7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChoZWlnaHQpIHsKKyAgICAgICAgICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgPSBoZWlnaHQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICh3aWR0aCkgeworICAgICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5jbGllbnRXaWR0aCA9IHdpZHRoOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoaGVpZ2h0KSB7CisgICAgICAgICAgICAgICAgICBkb2N1bWVudC5ib2R5LmNsaWVudEhlaWdodCA9IGhlaWdodDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0pKG51bGwsIG51bGwpOworICAgICAgICAgIH0KKyAgICAgICAgPC9zY3JpcHQ+CisgICAgICAgIAorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic2lwLWFwcGxldC9qcXVlcnktMS4yLjYubWluLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InNpcC1hcHBsZXQvdWlpZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJzaXAtYXBwbGV0L2JsaWUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic2lwLWFwcGxldC9jdXN0b20uanMiPjwvc2NyaXB0PiAgICAgICAgCisgICAgICAgIAorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiCisJc3JjPSJlbWJlZC1jb21wcmVzc2VkLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKworZnVuY3Rpb24gZ2V0QnJvd3NlckluZm8oKSB7CisJLy9hbGVydChuYXZpZ2F0b3IudXNlckFnZW50KTsKKwlyZXR1cm4gbmF2aWdhdG9yLnVzZXJBZ2VudDsKK30KKworPC9zY3JpcHQ+CisJCis8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoraHRtbCxib2R5IHsgLyogaHR0cDovL3d3dy5xdWlya3Ntb2RlLm9yZy9jc3MvMTAwcGVyY2hlaWdodC5odG1sICovCisJaGVpZ2h0OiAxMDAlOworCS8qIHByZXZlbnQgc2Nyb2xsYmFycyAqLworCW1hcmdpbjogMDsKKwlwYWRkaW5nOiAwOworCWJvcmRlcjogMCBub25lOworCW92ZXJmbG93OiBoaWRkZW47Cit9CisKK2JvZHkgeworCWJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7Cit9CisKK2ltZyB7CisJYm9yZGVyOiAwIG5vbmU7Cit9Cis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+IAorCis8YXBwbGV0IGlkPSJQSERpYWwiIGFyY2hpdmU9InNpcC1hcHBsZXQvaWRpYWwuamFyIgorCWNvZGU9ImNvbS5zZXNjYS52b2lwLnVhLkFwcGxldFVBTkcuY2xhc3MiIHdpZHRoPSIwIiBoZWlnaHQ9IjAiPgorCTxwYXJhbSBuYW1lPSJtYXlzY3JpcHQiIHZhbHVlPSJ0cnVlIiAvPgorCTxwYXJhbSBuYW1lPSJzY3JpcHRhYmxlIiB2YWx1ZT0idHJ1ZSIgLz4KKwk8cGFyYW0gbmFtZT0iY2FsbFRvIiB2YWx1ZT0iIiAvPgorCTxwYXJhbSBuYW1lPSJ1c2VybmFtZSIgdmFsdWU9IiIgLz4KKwk8cGFyYW0gbmFtZT0icGFzc3dvcmQiIHZhbHVlPSIiIC8+CisJPHBhcmFtIG5hbWU9InJlYWxtIiB2YWx1ZT0ic2lwLmlkaWFsLmZpIiAvPgorCTxwYXJhbSBuYW1lPSJwb3J0IiB2YWx1ZT0iNTA2MCIgLz4KKwk8cGFyYW0gbmFtZT0icHJveHluYW1lIiB2YWx1ZT0idGVzdC5pZGlhbHNlcnZlci5jb20iIC8+CisJPHBhcmFtIG5hbWU9InR1bm5lbCIgdmFsdWU9IjE5NC43OS4xNy4xNDA6NDQzIiAvPgorCTxwYXJhbSBuYW1lPSJjb2RlYmFzZVVybCIgdmFsdWU9ImZpbGU6Ly8vQzovU0lQIEFwcGxldC8iIC8+CisJPHBhcmFtIG5hbWU9ImZvcmNlVHVubmVsIiB2YWx1ZT0idHJ1ZSIgLz4KKwk8cGFyYW0gbmFtZT0icHJpdmFjeSIgdmFsdWU9ImZhbHNlIiAvPgorCTxwYXJhbSBuYW1lPSJhbGxvd091dHNpZGVQcm94eUNvbm5lY3Rpb25zIiB2YWx1ZT0idHJ1ZSIgLz4KKzwvYXBwbGV0PgorCis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgbHouZW1iZWQuc3dmKHt1cmw6ICdtYWluZGVidWcubHp4P2x6cj1zd2Y4Jmx6cHJveGllZD1zb2xvJmx6dD1zd2YnLCBhbGxvd2Z1bGxzY3JlZW46ICd0cnVlJywgYmdjb2xvcjogJyNmZmZmZmYnLCB3aWR0aDogJzEwMCUnLCBoZWlnaHQ6ICcxMDAlJywgaWQ6ICdsemFwcCcsIGFjY2Vzc2libGU6ICdmYWxzZSd9KTsKKworICAgIGx6LmVtYmVkLmx6YXBwLm9ubG9hZHN0YXR1cyA9IGZ1bmN0aW9uIGxvYWRzdGF0dXMocCkgeworICAgICAgLy8gY2FsbGVkIHdpdGggYSBwZXJjZW50YWdlICgwLTEwMCkgaW5kaWNhdGluZyBsb2FkIHByb2dyZXNzCisgICAgfQorCisgICAgbHouZW1iZWQubHphcHAub25sb2FkID0gZnVuY3Rpb24gbG9hZGVkKCkgeworICAgICAgLy8gY2FsbGVkIHdoZW4gdGhpcyBhcHBsaWNhdGlvbiBpcyBkb25lIGxvYWRpbmcKKyAgICB9CisgICAgaW5pdGlhbGl6ZSgpOworPC9zY3JpcHQ+CisKKworCis8ZGl2IHN0eWxlPSJ3aWR0aDogMTAwJTsgaGVpZ2h0OiAxMDAlOyIgaWQ9Imx6YXBwQ29udGFpbmVyIj48ZW1iZWQKKwlzcmM9Im1haW5kZWJ1Zy5sengtRGF0ZWllbi9tYWluZGVidWcubHp4IiBxdWFsaXR5PSJoaWdoIgorCWJnY29sb3I9IiNmZmZmZmYiIHdtb2RlPSJ3aW5kb3ciIGFsbG93ZnVsbHNjcmVlbj0iZmFsc2UiIGlkPSJsemFwcCIKKwluYW1lPSJsemFwcCIKKwlmbGFzaHZhcnM9Imx6dD1zd2YmYW1wO2x6cHJveGllZD1zb2xvJmFtcDtsenI9c3dmOCZhbXA7Ymdjb2xvcj0lMjNmZmZmZmYmYW1wO3dpZHRoPTEwMCUyNSZhbXA7aGVpZ2h0PTEwMCUyNSZhbXA7X19senVybD1tYWluZGVidWcubHp4JTNGbHp0JTNEc3dmJTI2bHpwcm94aWVkJTNEc29sbyUyNmx6ciUzRHN3ZjgmYW1wO19fbHptaW5pbXVtdmVyc2lvbj04JmFtcDtpZD1semFwcCIKKwlzd2xpdmVjb25uZWN0PSJ0cnVlIiBhbGxvd3NjcmlwdGFjY2Vzcz0ic2FtZURvbWFpbiIKKwl0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIKKwlwbHVnaW5zcGFnZT0iaHR0cDovL3d3dy5tYWNyb21lZGlhLmNvbS9nby9nZXRmbGFzaHBsYXllciIKKwlhbGlnbj0ibWlkZGxlIiBoZWlnaHQ9IjEwMCUiIHdpZHRoPSIxMDAlIj48L2Rpdj4KKzxub3NjcmlwdD5QbGVhc2UgZW5hYmxlIEphdmFTY3JpcHQgaW4gb3JkZXIgdG8gdXNlIHRoaXMKK2FwcGxpY2F0aW9uLjwvbm9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zcmMvdGVzdF9tYWluLmx6eC5senI9c3dmOC5zd2YgYi9XZWJDb250ZW50L3NyYy90ZXN0X21haW4ubHp4Lmx6cj1zd2Y4LnN3ZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDBhYjllCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zcmMvdGVzdF9tYWluLmx6eC5senI9c3dmOC5zd2YKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC9hdWRpb1ZpZGVvVGVzdC9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3dmMTAvYXVkaW9WaWRlb1Rlc3QvbGlicmFyeS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWI2NGI0OAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3dmMTAvYXVkaW9WaWRlb1Rlc3QvbGlicmFyeS5sengKQEAgLTAsMCArMSwzNiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworCTwhLS0gQVBMIGF1dGhvciBzZWJhd2FnbmVyIC0tPgorCTxyZXNvdXJjZSBuYW1lPSJsZXZlbF9tZXRlcl9yc2MiIHNyYz0icmVzb3VyY2VzL2xldmVsX21ldGVyLnBuZyIgLz4KKwk8IS0tIEFQTCBhdXRob3Igc2ViYXdhZ25lciAtLT4KKyAgICA8cmVzb3VyY2UgbmFtZT0idGVzdF9zZXR1cF9yZWNvcmRfcnNjIiBzcmM9InJlc291cmNlcy93ZWJzdGFydF9yZWNvcmQucG5nIiAvPgorICAgIDwhLS0gQVBMIGF1dGhvciBzZWJhd2FnbmVyIC0tPgorICAgIDxyZXNvdXJjZSBuYW1lPSJ0ZXN0X3NldHVwX3BsYXlfcnNjIiBzcmM9InJlc291cmNlcy9ydW4ucG5nIiAvPgorICAgIDwhLS0gQVBMIGF1dGhvciBzZWJhd2FnbmVyIC0tPgorICAgIDxyZXNvdXJjZSBuYW1lPSJ0ZXN0X3NldHVwX3N0b3BfcnNjIiBzcmM9InJlc291cmNlcy9zdG9wLnBuZyIgLz4KKyAgICA8IS0tIEZhbUZhbSBJY29uIFNldCAtLT4KKyAgICA8cmVzb3VyY2UgbmFtZT0idGVzdF9zZXR1cF9pbmZvX3JzYyIgc3JjPSJyZXNvdXJjZXMvaW5mb3JtYXRpb24ucG5nIiAvPgorICAgIAorICAgIDxpbmNsdWRlIGhyZWY9InRlc3RpbmdBcHBsaWNhdGlvbi5sengiIC8+CisgICAgCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL2F1ZGlvVmlkZW9UZXN0L3Jlc291cmNlcy9pbmZvcm1hdGlvbi5wbmcgYi9XZWJDb250ZW50L3N3ZjEwL2F1ZGlvVmlkZW9UZXN0L3Jlc291cmNlcy9pbmZvcm1hdGlvbi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTJjZDFhZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3dmMTAvYXVkaW9WaWRlb1Rlc3QvcmVzb3VyY2VzL2luZm9ybWF0aW9uLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL2F1ZGlvVmlkZW9UZXN0L3Jlc291cmNlcy9sZXZlbF9tZXRlci5mbGEgYi9XZWJDb250ZW50L3N3ZjEwL2F1ZGlvVmlkZW9UZXN0L3Jlc291cmNlcy9sZXZlbF9tZXRlci5mbGEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGUxYThjOAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3dmMTAvYXVkaW9WaWRlb1Rlc3QvcmVzb3VyY2VzL2xldmVsX21ldGVyLmZsYQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL2F1ZGlvVmlkZW9UZXN0L3Jlc291cmNlcy9sZXZlbF9tZXRlci5wbmcgYi9XZWJDb250ZW50L3N3ZjEwL2F1ZGlvVmlkZW9UZXN0L3Jlc291cmNlcy9sZXZlbF9tZXRlci5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzgxOTJlZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3dmMTAvYXVkaW9WaWRlb1Rlc3QvcmVzb3VyY2VzL2xldmVsX21ldGVyLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL2F1ZGlvVmlkZW9UZXN0L3Jlc291cmNlcy9yZWNvcmQuZmxhIGIvV2ViQ29udGVudC9zd2YxMC9hdWRpb1ZpZGVvVGVzdC9yZXNvdXJjZXMvcmVjb3JkLmZsYQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzBiMjY0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC9hdWRpb1ZpZGVvVGVzdC9yZXNvdXJjZXMvcmVjb3JkLmZsYQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL2F1ZGlvVmlkZW9UZXN0L3Jlc291cmNlcy9yZWNvcmQucG5nIGIvV2ViQ29udGVudC9zd2YxMC9hdWRpb1ZpZGVvVGVzdC9yZXNvdXJjZXMvcmVjb3JkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OTEwOWRhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC9hdWRpb1ZpZGVvVGVzdC9yZXNvdXJjZXMvcmVjb3JkLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL2F1ZGlvVmlkZW9UZXN0L3Jlc291cmNlcy9ydW4ucG5nIGIvV2ViQ29udGVudC9zd2YxMC9hdWRpb1ZpZGVvVGVzdC9yZXNvdXJjZXMvcnVuLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzdiOGQ5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC9hdWRpb1ZpZGVvVGVzdC9yZXNvdXJjZXMvcnVuLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL2F1ZGlvVmlkZW9UZXN0L3Jlc291cmNlcy9zdG9wLmZsYSBiL1dlYkNvbnRlbnQvc3dmMTAvYXVkaW9WaWRlb1Rlc3QvcmVzb3VyY2VzL3N0b3AuZmxhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0YTI5ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL2F1ZGlvVmlkZW9UZXN0L3Jlc291cmNlcy9zdG9wLmZsYQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL2F1ZGlvVmlkZW9UZXN0L3Jlc291cmNlcy9zdG9wLnBuZyBiL1dlYkNvbnRlbnQvc3dmMTAvYXVkaW9WaWRlb1Rlc3QvcmVzb3VyY2VzL3N0b3AucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViMWFkZjMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL2F1ZGlvVmlkZW9UZXN0L3Jlc291cmNlcy9zdG9wLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL2F1ZGlvVmlkZW9UZXN0L3Jlc291cmNlcy93ZWJzdGFydF9yZWNvcmQuZmxhIGIvV2ViQ29udGVudC9zd2YxMC9hdWRpb1ZpZGVvVGVzdC9yZXNvdXJjZXMvd2Vic3RhcnRfcmVjb3JkLmZsYQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzVmOWRjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC9hdWRpb1ZpZGVvVGVzdC9yZXNvdXJjZXMvd2Vic3RhcnRfcmVjb3JkLmZsYQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL2F1ZGlvVmlkZW9UZXN0L3Jlc291cmNlcy93ZWJzdGFydF9yZWNvcmQucG5nIGIvV2ViQ29udGVudC9zd2YxMC9hdWRpb1ZpZGVvVGVzdC9yZXNvdXJjZXMvd2Vic3RhcnRfcmVjb3JkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTRiN2Y1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC9hdWRpb1ZpZGVvVGVzdC9yZXNvdXJjZXMvd2Vic3RhcnRfcmVjb3JkLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL2F1ZGlvVmlkZW9UZXN0L3Rlc3RpbmdBcHBsaWNhdGlvbi5senggYi9XZWJDb250ZW50L3N3ZjEwL2F1ZGlvVmlkZW9UZXN0L3Rlc3RpbmdBcHBsaWNhdGlvbi5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmM5ODZhZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3dmMTAvYXVkaW9WaWRlb1Rlc3QvdGVzdGluZ0FwcGxpY2F0aW9uLmx6eApAQCAtMCwwICsxLDQxNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPCEtLSAKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKK1Rlc3QgdGhlIHNldHVwIHZhbHVlcyBiZWZvcmUgeW91IGVudGVyIGEgcm9vbQorCisgLS0+CisgCis8Y2xhc3MgbmFtZT0idGVzdGluZ0FwcGxpY2F0aW9uIiBleHRlbmRzPSJ2aWV3IiB3aWR0aD0iNjAwIiBoZWlnaHQ9IjQwMCI+CisKKyAgICA8c3dpdGNoPgorICAgICAgICA8d2hlbiBwcm9wZXJ0eT0iJGFzMyI+CisgICAgICAgICAgICA8cGFzc3Rocm91Z2g+CisgICAgICAgICAgICAgICAgaW1wb3J0IGZsYXNoLm1lZGlhLkNhbWVyYTsKKyAgICAgICAgICAgICAgICBpbXBvcnQgZmxhc2gubWVkaWEuTWljcm9waG9uZTsKKyAgICAgICAgICAgICAgICBpbXBvcnQgZmxhc2gubmV0LlNoYXJlZE9iamVjdDsKKyAgICAgICAgICAgICAgICBpbXBvcnQgZmxhc2gubWVkaWEuU291bmRDb2RlYzsKKyAgICAgICAgICAgIDwvcGFzc3Rocm91Z2g+CisgICAgICAgIDwvd2hlbj4KKyAgICA8L3N3aXRjaD4KKwkKKwk8YXR0cmlidXRlIG5hbWU9Imxhc3RSZWNvcmRlZCIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0iaXNSdW5uaW5nIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJyZWNvcmRpbmdzQ291bnRlciIgdmFsdWU9IjUiIHR5cGU9Im51bWJlciIgLz4KKwkKKwk8YXR0cmlidXRlIG5hbWU9InRpbWVySXNSdW5uaW5nIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJjb3VudGVyRGVsZWdhdGUiIHZhbHVlPSJudWxsIiAvPgorCQorCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisJCXRoaXMuY291bnRlckRlbGVnYXRlID0gbmV3IEx6RGVsZWdhdGUoIHRoaXMsICJjb3VudCIgKTsKKwk8L2hhbmRsZXI+CisJCisJPG1ldGhvZCBuYW1lPSJzdGFydFRpbWVyIj4KKwkJdGhpcy50aW1lcklzUnVubmluZyA9IHRydWU7CisJCXRoaXMudGltZXJXYXNVbm11dGVkVGhlRmlyc3RUaW1lID0gdHJ1ZTsKKwkJbHouVGltZXIuYWRkVGltZXIoIHRoaXMuY291bnRlckRlbGVnYXRlLCAxMDAwICk7CisJPC9tZXRob2Q+CisJCisJPG1ldGhvZCBuYW1lPSJjb3VudCIgYXJncz0iY2FsbGVlT2JqIj4KKwkJaWYgKHRoaXMucmVjb3JkaW5nc0NvdW50ZXIgIT0gMCl7CisJCQl0aGlzLnJlY29yZGluZ3NDb3VudGVyIC09IDE7CisJCQlsei5UaW1lci5hZGRUaW1lciggdGhpcy5jb3VudGVyRGVsZWdhdGUsIDEwMDAgKTsKKwkJCQorCQkJdGhpcy5fdGV4dC5faW5mby5zZXRBdHRyaWJ1dGUoInRleHQiLCIiK3RoaXMucmVjb3JkaW5nc0NvdW50ZXIrIiBzZWMiKTsKKwkJCQorCQl9IGVsc2UgeworCQkJdGhpcy5fdGV4dC5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKwkJCXRoaXMuZG9TdG9wKCk7CisJCQl0aGlzLnRpbWVySXNSdW5uaW5nID0gZmFsc2U7CisJCQl0aGlzLmRvUGxheSgpOworCQl9CisJPC9tZXRob2Q+CisJCisJPG1ldGhvZCBuYW1lPSJzdGFydFRpbWVyVG9Db3VudCI+CisJCWlmICghdGhpcy50aW1lcklzUnVubmluZykgeworCQkJdGhpcy5zdGFydFRpbWVyKCk7CisJCX0KKwk8L21ldGhvZD4KKwkKKwk8bWV0aG9kIG5hbWU9InN0b3JlU2V0dGluZ3MiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzdG9yZVNldHRpbmdzICIpOworICAgICAgICAgICAgdmFyIHQ6U2hhcmVkT2JqZWN0ID0gU2hhcmVkT2JqZWN0LmdldExvY2FsKCd1c2VyZGF0YScpOworICAgICAgICAgICAgdmFyIGcgPSB0LmRhdGE7CisgICAgICAgICAgICBpZiAoZz09bnVsbCkgZyA9IG5ldyBBcnJheSgpOworICAgICAgICAgICAgZ1siY2FtIl0gPSB0aGlzLmF2YWlsaWJsZUNhbXMuZ2V0VmFsdWUoKTsKKyAgICAgICAgICAgIGdbIm1pYyJdID0gdGhpcy5hdmFpbGlibGVNaWNzLmdldFZhbHVlKCk7CisgICAgICAgICAgICB0LmZsdXNoKCk7CisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPiAgIAorCQorCTxtZXRob2QgbmFtZT0iZG9uaW5pdGFsaXplIj4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgIAorICAgICAgICAgICAgdGhpcy5fYnRuU3RhcnRSZWNvcmRpbmcuc2V0QXR0cmlidXRlKCJlbmFibGVkIixmYWxzZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMucmVjb3JkaW5nc0NvdW50ZXIgPSA1OworICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLl90ZXh0LnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKyAgICAgICAgICAgIHRoaXMuX3RleHQuX2luZm8uc2V0QXR0cmlidXRlKCJ0ZXh0IiwiNSBzZWMiKTsKKyAgICAgICAgCisgICAgICAgICAgICB0aGlzLmlzUnVubmluZyA9IHRydWU7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciB2YWxDYW0gPSB0aGlzLmF2YWlsaWJsZUNhbXMuZ2V0VmFsdWUoKTsKKyAgICAgICAgICAgIHZhciB2YWxNaWMgPSB0aGlzLmF2YWlsaWJsZUNhbXMuZ2V0VmFsdWUoKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIHZpZGVvdmlldyA9IHRoaXMuX3B1Ymxpc2hlci5fY2hhdHZpZGVvaW5uZXIuX3ZpZGVvc3RyZWFtOworICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInZpZGVvdmlldzogIix2aWRlb3ZpZXcpOworICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUodmFsQ2FtLHZhbE1pYyk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHZhciBfbWljcm8gPSBudWxsOworICAgICAgICAgICAgdmFyIF9jYW1lcmEgPSBudWxsOworICAgICAgICAgICAgaWYgKHZhbE1pYyAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgIF9taWNybyA9IE1pY3JvcGhvbmUuZ2V0TWljcm9waG9uZSh2YWxNaWMpOworICAgICAgICAgICAgICAgICBpZiAoX21pY3JvICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICAgICAgIF9taWNyby5jb2RlYyA9IFNvdW5kQ29kZWMuTkVMTFlNT1NFUjsKKyAgICAgICAgICAgICAgICAgICAgIF9taWNyby5mcmFtZXNQZXJQYWNrZXQgPSAxOworICAgICAgICAgICAgICAgICAgICAgX21pY3JvLnNldFNpbGVuY2VMZXZlbCgwLCAyMDAwKTsKKyAgICAgICAgICAgICAgICAgICAgIF9taWNyby5nYWluID0gNTA7CisgICAgICAgICAgICAgICAgICAgICAvLyB0aGlzIGhhcyBubyBlZmZlY3QgaWYgZW5oYW5jZWQgbWljcm9waG9uZSBpcyBvYnRhaW5lZAorICAgICAgICAgICAgICAgICAgICAvL01pY3JvcGhvbmUgc2V0VXNlRWNob1N1cHJlc3Npb24oYm9vbCkKKyAgICAgICAgICAgICAgICAgICAgX21pY3JvLnNldFVzZUVjaG9TdXBwcmVzc2lvbih0cnVlKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodmFsQ2FtICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBfY2FtZXJhID0gQ2FtZXJhLmdldENhbWVyYSh2YWxDYW0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiX2NhbWVyYS5zZXRNb2RlOiAiLHZpZGVvdmlldy53aWR0aCx2aWRlb3ZpZXcuaGVpZ2h0LGNhbnZhcy5mcmFtZXNQZXJTZWNvbmQsdHJ1ZSk7CisKKyAgICAgICAgICAgIC8vTWljcm9waG9uZS5zZXQKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJjYW52YXMubWljcm9waG9uZVJhdGVCZXN0OiAiLGNhbnZhcy5taWNyb3Bob25lUmF0ZUJlc3QpOworICAgICAgICAgICAgaWYgKF9jYW1lcmEgIT0gbnVsbCkgeworICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJfY2FtZXJhLnNldFF1YWxpdHkgQkVTVDogIix0aGlzLmlzSW50ZXJ2aWV3LChjYW52YXMuYmFuZHdpZHRoTmVlZGVkQmVzdCoyKSxjYW52YXMuY2FtUXVhbGl0eUJlc3QpOworICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzSW50ZXJ2aWV3KSB7CisgICAgICAgICAgICAgICAgICAgIF9jYW1lcmEuc2V0TW9kZSh2aWRlb3ZpZXcud2lkdGgsdmlkZW92aWV3LmhlaWdodCwyNCx0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud2FybigiSVMgSU5URVJWSUVXICIpOworICAgICAgICAgICAgICAgICAgICBfY2FtZXJhLnNldFF1YWxpdHkoMCw5OCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgX2NhbWVyYS5zZXRNb2RlKHZpZGVvdmlldy53aWR0aCx2aWRlb3ZpZXcuaGVpZ2h0LGNhbnZhcy5mcmFtZXNQZXJTZWNvbmQsdHJ1ZSk7CisgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndhcm4oIklTIE5PIElOVEVSVklFVyAiKTsKKyAgICAgICAgICAgICAgICAgICAgX2NhbWVyYS5zZXRRdWFsaXR5KGNhbnZhcy5iYW5kd2lkdGhOZWVkZWRCZXN0LGNhbnZhcy5jYW1RdWFsaXR5QmVzdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgCisgICAgICAgICAgICAvL1RoZSBGaXJzdCBzdGFydC10aW1lciBtZXNzYWdlIHdpbGwgY29tZSBmcm9tIHRoZSBGbGFzaCBPYmplY3QKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud2FybigiX2NhbWVyYS5tdXRlZCAiLF9jYW1lcmEubXV0ZWQpOworICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud2FybigiX21pY3JvLm11dGVkICIsX21pY3JvLm11dGVkKTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCFfY2FtZXJhLm11dGVkKSB7CisgICAgICAgICAgICAgICAgdGhpcy5zdGFydFRpbWVyKCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vc3RhcnQgcmVjb3JkaW5nIG9mIGNsaWVudCBzdHJlYW0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgdmFyIHQgPSBuZXcgRGF0ZSgpOworICAgICAgICAgICAgdGhpcy5sYXN0UmVjb3JkZWQgPSAiVEVTVF9TRVRVUF8iK3QuZ2V0VGltZSgpOworICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLl9wdWJsaXNoZXIuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgICAgICAgICAgdGhpcy5fdmlld2VyLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgICAgICAgICAgCisgICAgICAgICAgICB2aWRlb3ZpZXcucmVjb3JkKHRoaXMubGFzdFJlY29yZGVkLF9jYW1lcmEsX21pY3JvKTsKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJkb1BsYXkiPgorICAgIAk8IVtDREFUQVsKKyAgICAJCisgICAgCSAgIGlmICh0aGlzLmxhc3RSZWNvcmRlZCA9PSAiIikgeworICAgIAkgICAJICAgLy9FcnJvciAtIG5vdGhpbmcgcmVjb3JkZWQgeWV0CisgICAgCSAgIAkgICBpZiAoJGRlYnVnKSBEZWJ1Zy53YXJuKCJOb3RoaW5nIHRvIFBsYXkiKTsKKyAgICAJICAgfSBlbHNlIHsKKyAgICAJICAgCSAgIAorICAgIAkgICAJICAgdGhpcy5fcGxheS5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgCSAgIAkKKyAgICAJICAgCSAgIHRoaXMuX3B1Ymxpc2hlci5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKyAgICAgICAgICAgICAgIHRoaXMuX3ZpZXdlci5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgIHZhciB2aWRlb3ZpZXcgPSB0aGlzLl92aWV3ZXIuX2NoYXR2aWRlb2lubmVyLl92aWRlb3N0cmVhbTsKKyAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgdmlkZW92aWV3Lmp1c3RQbGF5U3RyZWFtKHRoaXMubGFzdFJlY29yZGVkKyIuZmx2IiwwKTsKKyAgICAgICAgICAgICAgICAKKyAgICAJICAgfQorICAgIAkKKyAgICAJXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJkb1N0b3AiPgorICAgIAlpZiAodGhpcy5pc1J1bm5pbmcpIHsKKyAgICAJCXRoaXMuaXNSdW5uaW5nID0gZmFsc2U7CisgICAgCQkKKyAgICAJCXZhciB2aWRlb3ZpZXcgPSB0aGlzLl9wdWJsaXNoZXIuX2NoYXR2aWRlb2lubmVyLl92aWRlb3N0cmVhbTsKKyAgICAJCQorICAgIAkJdGhpcy5fYnRuU3RhcnRSZWNvcmRpbmcuc2V0QXR0cmlidXRlKCJlbmFibGVkIix0cnVlKTsKKyAgICAJCQorICAgIAkJdmlkZW92aWV3Ll9zdG9wKCk7CisgICAgCQkKKyAgICAJCXRoaXMuZG9QbGF5KCk7CisgICAgCX0KKyAgICAJCisgICAgCXZhciB2aWRlb3ZpZXdWaWV3ZXIgPSB0aGlzLl92aWV3ZXIuX2NoYXR2aWRlb2lubmVyLl92aWRlb3N0cmVhbTsKKyAgICAgICAgdmlkZW92aWV3Vmlld2VyLl9zdG9wKCk7CisgICAgPC9tZXRob2Q+CisJCisJPGxhYmVsVGV4dCBmb250c3R5bGU9ImJvbGQiIGxhYmVsaWQ9Ijc1OCIKKwkJCSAgIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoLTIgfSIgaGVpZ2h0PSIzMCIgbXVsdGlsaW5lPSJ0cnVlIiAvPiAKKwkKKwk8bGFiZWxUZXh0IG5hbWU9ImF2YWlsaWJsZUNhbXNMYWJlbCIgbGFiZWxpZD0iNTIiIGZvbnRzaXplPSIxMSIgeD0iMiIgeT0iNDAiIC8+CisKKyAgICA8cmVzZXRDb21ib2JveCBmb250c2l6ZT0iMTEiIG5hbWU9ImF2YWlsaWJsZUNhbXMiIHg9IjEwIiB5PSI2MCIgd2lkdGg9IjI2MCIgZWRpdGFibGU9ImZhbHNlIj4KKyAgICAgICAgPHN3aXRjaD4KKyAgICAgICAgICAgIDx3aGVuIHByb3BlcnR5PSIkYXMzIj4KKyAgICAgICAgICAgICAgICA8cGFzc3Rocm91Z2g+CisgICAgICAgICAgICAgICAgICAgIGltcG9ydCBmbGFzaC5tZWRpYS5DYW1lcmE7CisgICAgICAgICAgICAgICAgICAgIGltcG9ydCBmbGFzaC5uZXQuU2hhcmVkT2JqZWN0OworICAgICAgICAgICAgICAgIDwvcGFzc3Rocm91Z2g+CisgICAgICAgICAgICA8L3doZW4+CisgICAgICAgIDwvc3dpdGNoPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgLy9HZXQgYWxsIGF2YWlsaWJsZSBDYW0ncworICAgICAgICAgICAgICAgIHZhciB0dyA9IENhbWVyYS5uYW1lczsKKyAgICAgICAgICAgICAgICB2YXIgciA9ICIiOworICAgICAgICAgICAgICAgIGZvciAodmFyIGVnPTA7ZWc8dHcubGVuZ3RoO2VnKyspeworICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZEl0ZW0odHdbZWddLGVnKTsKKyAgICAgICAgICAgICAgICAgICAgcj1lZzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdmFyIHQ6U2hhcmVkT2JqZWN0ID0gU2hhcmVkT2JqZWN0LmdldExvY2FsKCd1c2VyZGF0YScpOworICAgICAgICAgICAgICAgIHZhciBnID0gdC5kYXRhOworICAgICAgICAgICAgICAgIHZhciBjYW07CisgICAgICAgICAgICAgICAgaWYgKGcgIT0gbnVsbCl7CisgICAgICAgICAgICAgICAgICAgIGNhbSA9IGdbImNhbSJdOworICAgICAgICAgICAgICAgICAgICBpZiAoY2FtID09ICd1bmRlZmluZWQnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYW0gPSByOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgY2FtID0gcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RJdGVtKFN0cmluZyhjYW0pKTsKKyAgICAgICAgICAgIF1dPgorICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9yZXNldENvbWJvYm94PgorICAgIAorICAgIDxsYWJlbFRleHQgbmFtZT0iYXZhaWxpYmxlTWljc0xhYmVsIiBsYWJlbGlkPSI1MyIgZm9udHNpemU9IjExIiB4PSIyIiB5PSI4NCIgLz4KKworICAgIDxyZXNldENvbWJvYm94IGZvbnRzaXplPSIxMSIgbmFtZT0iYXZhaWxpYmxlTWljcyIgIHg9IjEwIiB5PSIxMDQiIHdpZHRoPSIyNjAiIGVkaXRhYmxlPSJmYWxzZSI+CisgICAgICAgIDxzd2l0Y2g+CisgICAgICAgICAgICA8d2hlbiBwcm9wZXJ0eT0iJGFzMyI+CisgICAgICAgICAgICAgICAgPHBhc3N0aHJvdWdoPgorICAgICAgICAgICAgICAgICAgICBpbXBvcnQgZmxhc2gubWVkaWEuTWljcm9waG9uZTsKKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0IGZsYXNoLm5ldC5TaGFyZWRPYmplY3Q7CisgICAgICAgICAgICAgICAgPC9wYXNzdGhyb3VnaD4KKyAgICAgICAgICAgIDwvd2hlbj4KKyAgICAgICAgPC9zd2l0Y2g+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICAvL0dldCBhbGwgYXZhaWxpYmxlIE1pYydzCisgICAgICAgICAgICAgICAgdmFyIHR3ID0gTWljcm9waG9uZS5uYW1lczsKKyAgICAgICAgICAgICAgICB2YXIgciA9ICIiOworICAgICAgICAgICAgICAgIGZvciAodmFyIGVnPTA7ZWc8dHcubGVuZ3RoO2VnKyspeworICAgICAgICAgICAgICAgICAgICByPWVnOworICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZEl0ZW0odHdbZWddLGVnKTsKKyAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICB2YXIgdDpTaGFyZWRPYmplY3QgPSBTaGFyZWRPYmplY3QuZ2V0TG9jYWwoJ3VzZXJkYXRhJyk7CisgICAgICAgICAgICAgICAgdmFyIGcgPSB0LmRhdGE7CisgICAgICAgICAgICAgICAgdmFyIG1pYzsKKyAgICAgICAgICAgICAgICBpZiAoZyAhPSBudWxsKXsKKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiU2VsZWN0IG1pYyA0OiAiLG1pYyk7CisgICAgICAgICAgICAgICAgICAgIG1pYyA9IGdbIm1pYyJdOworICAgICAgICAgICAgICAgICAgICBpZiAobWljID09ICd1bmRlZmluZWQnKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJTZWxlY3QgbWljIDM6ICIsbWljKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1pYyA9IHI7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJTZWxlY3QgbWljIDI6ICIsbWljKTsKKyAgICAgICAgICAgICAgICAgICAgbWljID0gcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIlNlbGVjdCBtaWMgMTogIixtaWMpOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0SXRlbShTdHJpbmcobWljKSk7CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPgorICAgIDwvcmVzZXRDb21ib2JveD4KKyAgICAKKyAgICAKKyAgICA8c2ltcGxlTGFiZWxCdXR0b24gbmFtZT0iX2J0blN0YXJ0UmVjb3JkaW5nIiBsYWJlbGlkPSI3NzUiIAorICAgIAkJCQkgICB3aWR0aD0iMTcwIiB4PSIxMDAiIHk9IjE1MCIgaGVpZ2h0PSIyOCI+CisgICAgCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgcGFyZW50Ll9sZXZlbF9tZXRlci5zdGFydExldmVsKCk7CisgICAgICAgICAgICBwYXJlbnQuZG9uaW5pdGFsaXplKCk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPHZpZXcgcmVzb3VyY2U9InRlc3Rfc2V0dXBfcmVjb3JkX3JzYyIgeD0iMiIgeT0iMiIgLz4KKyAgICA8L3NpbXBsZUxhYmVsQnV0dG9uPgorICAgIAorCQorCTx2aWRlb09iamVjdFRlc3RCcm9hZGNhc3QgbmFtZT0iX3B1Ymxpc2hlciIgeD0iMzQwIiB5PSI0MCIgd2lkdGg9IjI0MCIgaGVpZ2h0PSIxODAiPgorCQk8aGFuZGxlciBuYW1lPSJzZW5kQ2FtZXJhU3RhdHVzIiBhcmdzPSJjYW1TdGF0dXMiPgorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInNlbmRDYW1lcmFTdGF0dXMgLTEtICIsY2FtU3RhdHVzKTsKKyAgICAgICAgICAgIGlmIChjYW1TdGF0dXMgPT0gIkNhbWVyYS5Vbm11dGVkIikgeworICAgICAgICAgICAgCXBhcmVudC5zdGFydFRpbWVyVG9Db3VudCgpOworICAgICAgICAgICAgfQorICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIAorICAgICAgICA8aGFuZGxlciBuYW1lPSJzZW5kTWljcm9TdGF0dXMiIGFyZ3M9Im1pY1N0YXR1cyI+CisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2VuZE1pY3JvU3RhdHVzIC0xLSAiLG1pY1N0YXR1cyk7CisgICAgICAgICAgICBpZiAobWljU3RhdHVzID09ICJNaWNyb3Bob25lLlVubXV0ZWQiKSB7CisgICAgICAgICAgICAgICAgcGFyZW50LnN0YXJ0VGltZXJUb0NvdW50KCk7CisgICAgICAgICAgICB9CisgICAgICAgIDwvaGFuZGxlcj4KKwk8L3ZpZGVvT2JqZWN0VGVzdEJyb2FkY2FzdD4KKwkKKwk8dmlkZW9PYmplY3RQbGF5VGVzdEJyb2FkY2FzdCBuYW1lPSJfdmlld2VyIiB4PSIzNDAiIHk9IjQwIiAKKwkJCQkJCQkJICB3aWR0aD0iMjQwIiBoZWlnaHQ9IjE4MCIgdmlzaWJpbGl0eT0iaGlkZGVuIiAvPgorCQkJCQkJCQkgIAorCTx2aWV3IG5hbWU9Il90ZXh0IiB4PSIzNDAiIHk9IjQwIiB3aWR0aD0iMjQwIiBoZWlnaHQ9IjE4MCIgdmlzaWJpbGl0eT0iaGlkZGVuIj4KKwkJPHRleHQgbmFtZT0iX2luZm8iIHJlc2l6ZT0idHJ1ZSIgYmdjb2xvcj0iMHhGRkZGRkYiIGFsaWduPSJyaWdodCIKKwkJCSAgZm9udHNpemU9IjEyIiBmb250c3R5bGU9ImJvbGQiIC8+CisJPC92aWV3PgorCQorCTwhLS0KKwk8c2ltcGxlTGFiZWxSb3VuZEJ1dHRvbkljb24gbmFtZT0iX3N0YXJ0IiB5PSIxOTAiIHg9IjM1MCIgCisJCQkJcmVzc291cmNlSWNvbj0idGVzdF9zZXR1cF9yZWNvcmRfcnNjIgorCQkJCXdpZHRoPSI3MCIgdGxhYmVsaWQ9Ijc2MyIgPgorCQk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKwkJCXBhcmVudC5fbGV2ZWxfbWV0ZXIuc3RhcnRMZXZlbCgpOworCQkJcGFyZW50LmRvbmluaXRhbGl6ZSgpOworCQk8L2hhbmRsZXI+CisJPC9zaW1wbGVMYWJlbFJvdW5kQnV0dG9uSWNvbj4KKwkKKwk8c2ltcGxlTGFiZWxSb3VuZEJ1dHRvbkljb24gbmFtZT0iX3N0b3AiIHk9IjE5MCIgeD0iNDI1IiAKKwkJCQlyZXNzb3VyY2VJY29uPSJ0ZXN0X3NldHVwX3N0b3BfcnNjIgorCQkJCXdpZHRoPSI3MCIgdGxhYmVsaWQ9Ijc2NiIgPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgCXBhcmVudC5fbGV2ZWxfbWV0ZXIucmVzZXROZXdMZXZlbCgpOworICAgICAgICAgICAgcGFyZW50LmRvU3RvcCgpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgPC9zaW1wbGVMYWJlbFJvdW5kQnV0dG9uSWNvbj4KKyAgICAKKwk8c2ltcGxlTGFiZWxSb3VuZEJ1dHRvbkljb24gbmFtZT0iX3BsYXkiIHk9IjE5MCIgeD0iNTAwIiAKKwkJCQlyZXNzb3VyY2VJY29uPSJ0ZXN0X3NldHVwX3BsYXlfcnNjIgorCQkJCXdpZHRoPSI3MCIgdGxhYmVsaWQ9Ijc2NCIgCisJCQkJZW5hYmxlZD0iZmFsc2UiPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgIHBhcmVudC5kb1BsYXkoKTsKKyAgICAgICAgPC9oYW5kbGVyPgorICAgIDwvc2ltcGxlTGFiZWxSb3VuZEJ1dHRvbkljb24+CisgICAgIC0tPgorICAgICAKKyAgICAgPCEtLSByZXNzb3VyY2VJY29uPSJ0ZXN0X3NldHVwX3BsYXlfcnNjIiAtLT4KKyAgICA8c2ltcGxlTGFiZWxCdXR0b24gbmFtZT0iX3BsYXkiIHk9IjE5MCIgeD0iNDkwIiB2aXNpYmlsaXR5PSJoaWRkZW4iCisgICAgICAgICAgICAgICAgd2lkdGg9Ijg2IiBsYWJlbGlkPSI3NjQiID4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICBwYXJlbnQuZG9QbGF5KCk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICA8L3NpbXBsZUxhYmVsQnV0dG9uPgorICAgICAKKyAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9Ijc2NyIgeD0iMzQwIiB5PSIyMjQiIC8+CisgICAgCisgICAgPHZpZXcgbmFtZT0iX2xldmVsX21ldGVyIiB4PSIzNDAiIHk9IjI0NCIgd2lkdGg9IjI0MCIgaGVpZ2h0PSIyMCIgY2xpcD0idHJ1ZSIgYmdjb2xvcj0iMHgwMDAwMDAiPgorICAgIAkKKyAgICAJIDwhLS0tIExldmVsIGRlbGVnYXRlLCB1c2VkIHRvIHRyYWNrIGxldmVsIGNoYW5nZXMuIAorICAgICAgICAgICAgICBAa2V5d29yZHMgcHJpdmF0ZSAtLT4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJfbGV2ZWxkZWwiIHZhbHVlPSIkb25jZXtuZXcgTHpEZWxlZ2F0ZSh0aGlzLCAnX3VwZGF0ZUxldmVsJyl9Ii8+CisgICAgCQorICAgIAk8bWV0aG9kIG5hbWU9Il91cGRhdGVMZXZlbCIgYXJncz0ibm8iPgorICAgIAkJPCFbQ0RBVEFbCisgICAgCQkgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiX3VwZGF0ZUxldmVsIixubyxwYXJlbnQuX3B1Ymxpc2hlci5fY2hhdHZpZGVvaW5uZXIuX3ZpZGVvc3RyZWFtLm1pY3JvKTsKKyAgICAJCSAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJfdXBkYXRlTGV2ZWwiLHBhcmVudC5fcHVibGlzaGVyLl9jaGF0dmlkZW9pbm5lci5fdmlkZW9zdHJlYW0ubWljcm8pOworICAgIAkJICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIl91cGRhdGVMZXZlbCIscGFyZW50Ll9wdWJsaXNoZXIuX2NoYXR2aWRlb2lubmVyLl92aWRlb3N0cmVhbS5taWNyby5hY3Rpdml0eUxldmVsKTsKKyAgICAJCSAgICBpZiAocGFyZW50Ll9wdWJsaXNoZXIuX2NoYXR2aWRlb2lubmVyLl92aWRlb3N0cmVhbS5taWNybyA9PSBudWxsKQorICAgIAkJICAgIHsKKyAgICAJCSAgICAJcmV0dXJuOworICAgIAkJICAgIH0KKyAgICAJCSAgICB0aGlzLnNldE5ld0xldmVsKHBhcmVudC5fcHVibGlzaGVyLl9jaGF0dmlkZW9pbm5lci5fdmlkZW9zdHJlYW0ubWljcm8uYWN0aXZpdHlMZXZlbCk7CisgICAgCQldXT4KKyAgICAJPC9tZXRob2Q+CisgICAgCQorICAgIAk8bWV0aG9kIG5hbWU9InN0YXJ0TGV2ZWwiPgorICAgIAkJdGhpcy5fbGV2ZWxkZWwucmVnaXN0ZXIobHouSWRsZSwgIm9uaWRsZSIpOworICAgIAk8L21ldGhvZD4KKyAgICAJCisgICAgCTxtZXRob2QgbmFtZT0icmVzZXROZXdMZXZlbCI+CisgICAgCQl0aGlzLl9sZXZlbGRlbC51bnJlZ2lzdGVyQWxsKCk7CisgICAgCQl0aGlzLnNldE5ld0xldmVsKDApOworICAgIAk8L21ldGhvZD4KKyAgICAJCisgICAgCTxtZXRob2QgbmFtZT0ic2V0TmV3TGV2ZWwiIGFyZ3M9Im5vIj4KKyAgICAJCTwhW0NEQVRBWworICAgIAkJCisgICAgICAgICAgICAgICAgdmFyIG5ld0xldmVsID0gKDIzOC8xMDApICogbm87CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB0aGlzLl9vdmVyLnNldEF0dHJpYnV0ZSgid2lkdGgiLDIzOC1uZXdMZXZlbCk7CisgICAgICAgICAgICAgICAgdGhpcy5fb3Zlci5zZXRBdHRyaWJ1dGUoIngiLDErKG5ld0xldmVsKSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICBdXT4KKyAgICAJPC9tZXRob2Q+CisgICAgCQorICAgIAk8dmlldyBuYW1lPSJfYmciIHdpZHRoPSIyMzgiIGhlaWdodD0iMTgiIHg9IjEiIHk9IjEiIGJnY29sb3I9IjB4RkZGRkZGIiAvPgorICAgIAk8dmlldyBuYW1lPSJfZ3JpcCIgcmVzb3VyY2U9ImxldmVsX21ldGVyX3JzYyIgeD0iMSIgeT0iMSIgLz4KKyAgICAJPHZpZXcgbmFtZT0iX292ZXIiIHdpZHRoPSIyMzgiIGhlaWdodD0iMTgiIHg9IjEiIHk9IjEiIGJnY29sb3I9IjB4RkZGRkZGIiAvPgorICAgIDwvdmlldz4KKyAgICAKKyAgICA8dmlldyB5PSIyOTIiIHJlc291cmNlPSJ0ZXN0X3NldHVwX2luZm9fcnNjIiB4PSIxNiIgLz4KKyAgICAKKyAgICA8bGFiZWxUZXh0IGZvbnRzdHlsZT0iYm9sZCIgbGFiZWxpZD0iNzY1IiB4PSIzOSIgeT0iMjkwIgorICAgICAgICAgICAgICAgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGgtNTAgfSIgbXVsdGlsaW5lPSJ0cnVlIiAvPgorICAgIAorPC9jbGFzcz4KKwkKKzwvbGlicmFyeT4KKyAKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9jb21wb25lbnRzL2J1dHRvbi9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9jb21wb25lbnRzL2J1dHRvbi9saWJyYXJ5Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NGY2ODZhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvYnV0dG9uL2xpYnJhcnkubHp4CkBAIC0wLDAgKzEsMjUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/Pg0KKzwhLS0NCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgIA0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAgICAJICANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAgdW5kZXIgdGhlIExpY2Vuc2UuDQorICANCistLT4NCis8bGlicmFyeT4NCisNCisJPGluY2x1ZGUgaHJlZj0ic2ltcGxlTGFiZWxCdXR0b24ubHp4IiAvPg0KKw0KKzwvbGlicmFyeT4NCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9idXR0b24vc2ltcGxlTGFiZWxCdXR0b24ubHp4IGIvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvYnV0dG9uL3NpbXBsZUxhYmVsQnV0dG9uLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODNhZDVlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvYnV0dG9uL3NpbXBsZUxhYmVsQnV0dG9uLmx6eApAQCAtMCwwICsxLDM0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPGxpYnJhcnk+DQorDQorPGNsYXNzIG5hbWU9InNpbXBsZUxhYmVsQnV0dG9uIiBleHRlbmRzPSJidXR0b24iIGZvbnRzdHlsZT0iYm9sZCINCisJICAgZm9udHNpemU9IjExIiBoZWlnaHQ9IjIwIiBzdHlsZT0iY29tcG9uZW50U3R5bGUiPg0KKw0KKwk8YXR0cmlidXRlIG5hbWU9ImxhYmVsaWQiIHR5cGU9Im51bWJlciIgc2V0dGVyPSJzZXRMYWJlbElkKGxhYmVsaWQpIiAvPg0KKwk8bWV0aG9kIG5hbWU9InNldExhYmVsSWQiIGFyZ3M9Il9sYWJlbGlkIiA+DQorCQl0aGlzLmxhYmVsaWQgPSBfbGFiZWxpZDsNCisJCXRoaXMuc2V0QXR0cmlidXRlKCd0ZXh0JyxjYW52YXMuZ2V0TGFiZWxOYW1lKHRoaXMubGFiZWxpZCkpOw0KKwk8L21ldGhvZD4NCisJDQorPC9jbGFzcz4NCisNCis8L2xpYnJhcnk+DQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvZXhwbG9yZXJCb3gubHp4IGIvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvZXhwbG9yZXJCb3gubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjOWFhZjMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9leHBsb3JlckJveC5sengKQEAgLTAsMCArMSw0MDAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/Pg0KKzwhLS0NCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgIA0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAgICAJICANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAgdW5kZXIgdGhlIExpY2Vuc2UuDQorICANCistLT4NCis8bGlicmFyeT4NCisNCis8Y2xhc3MgbmFtZT0iZXhwbG9yZXJCb3giIGV4dGVuZHM9InZpZXciIHdpZHRoPSIyNTAiIHk9IjEwMCIgdmlzaWJpbGl0eT0iaGlkZGVuIg0KKyAgICBoZWlnaHQ9IjQwMCIgYmdjb2xvcj0iMHgwMDAwODgiIA0KKwlvbm1vdXNlZG93bj0idGhpcy5fc3RhcnREcmFnU3RhdGUodGhpcykiIG9ubW91c2V1cD0idGhpcy5fcmVtb3ZlRHJhZ1N0YXRlKHRoaXMpIiA+DQorDQorICAgIDxzd2l0Y2g+DQorCSAgPHdoZW4gcHJvcGVydHk9IiRhczMiPg0KKwkJPHBhc3N0aHJvdWdoPg0KKwkJICBpbXBvcnQgZmxhc2guZmlsdGVycy5Ecm9wU2hhZG93RmlsdGVyOw0KKwkJPC9wYXNzdGhyb3VnaD4NCisJICA8L3doZW4+DQorCTwvc3dpdGNoPg0KKw0KKyAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPg0KKyAgICAJLy9pZigkZGVidWcpIERlYnVnLndyaXRlKCJleHBsb3JlckJveC9vbmluaXQgc2hvd1dpbmRvd0VmZmVjdD8gIixjYW52YXMuc2hvd1dpbmRvd0VmZmVjdCk7DQorICAgIAlpZiAoY2FudmFzLnNob3dXaW5kb3dFZmZlY3Q9PSJ5Iil7DQorICAgIAkJLy9pZigkZGVidWcpIERlYnVnLndyaXRlKCJleHBsb3JlckJveC9zaG93V2luZG93RWZmZWN0ID09IFlFUyIpOw0KKyAgICAJCW5ldyBsei5ib3hJbml0RWZmZWN0KHBhcmVudCx7eDp0aGlzLngrKHRoaXMud2lkdGgvMiktNTAseTp0aGlzLnkrKHRoaXMuaGVpZ2h0LzIpLTEwLHppZWx4OnRoaXMueCx6aWVseTp0aGlzLnksemllbHdpZHRoOnRoaXMud2lkdGgsemllbGhlaWdodDp0aGlzLmhlaWdodCxvYmpSZWY6dGhpc30pOw0KKyAgICAJfSBlbHNlIHsNCisgICAgCQl0aGlzLnNlbmRBbm5pQ29tcGxldGUoKTsNCisgICAgCX0NCisgICAgPC9oYW5kbGVyPg0KKyAgICANCisgICAgPG1ldGhvZCBuYW1lPSJzZW5kQW5uaUNvbXBsZXRlIj4NCisgICAgCS8vaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2VuZEFubmlDb21wbGV0ZSIpOw0KKyAgICAJdGhpcy5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCd2aXNpYmxlJyk7DQorICAgIAl0aGlzLnNldFNoYWRvdyh0cnVlKTsNCisgICAgPC9tZXRob2Q+DQorDQorICAgIDxtZXRob2QgbmFtZT0ic2V0U2hhZG93IiBhcmdzPSJib29sIj4NCisgICAgICAgIHRoaXMuaGFzc2hhZG93ID0gYm9vbDsNCisgICAgICAgIDwhW0NEQVRBWw0KKyAgICAgICAgaWYgKHRoaXMuaXNpbml0ZWQpew0KKyAgICAgICAgICAgIHRoaXMubm9ybWFsTUMgPSB0aGlzLmdldERpc3BsYXlPYmplY3QoKTsNCisgICAgICAgICAgICAvL0RlYnVnLndyaXRlKHRoaXMubm9ybWFsTUMpOw0KKyAgICAgICAgICAgIC8vLy9EZWJ1Zy53cml0ZSgidGhpcy5ub3JtYWxNQzogIix0aGlzLm5vcm1hbE1DKTsNCisgICAgICAgICAgICAvLy8vRGVidWcud3JpdGUoInRoaXM6ICIsdGhpcyk7DQorICAgICAgICAgICAJdGhpcy5kaXNwbGFjZW1lbnRNYXAgPSBuZXcgRHJvcFNoYWRvd0ZpbHRlcigpOw0KKyAgICAgICAgICAgIHRoaXMubm9ybWFsTUMuZmlsdGVycyA9IFt0aGlzLmRpc3BsYWNlbWVudE1hcF07DQorICAgICAgICB9DQorICAgICAgICBdXT4gICAgICAgICAgICAgIA0KKyAgICA8L21ldGhvZD4JDQorICAgICAgICAgIA0KKwk8IS0tLSBUaGUgVGl0bGUgb2YgdGhpcyBCb3ggLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0idGl0bGUiIHZhbHVlPSJkZWZhdWx0dGl0bGUiIHR5cGU9InN0cmluZyIgLz4NCisJDQorCTwhLS0tIGlmIHRoaXMgQm94IHNob3VsZCBiZSBjbG9zZWFibGUgLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0iY2xvc2FibGUiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4NCisgICAgDQorICAgIDwhLS0tIGlmIHRoaXMgQm94IHNob3VsZCBiZSByZXNpemVhYmxlICAtLT4NCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJyZXNpemVhYmxlIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+DQorCQ0KKwk8IS0tLSBDYW4gdGhpcyBCb3ggYmUgZG9ja2VkIHRvIG90aGVycyBhbmQgDQorCQkJdGhlIHdpZHRoL2hlaWdodCBvZiBwYXJlbnQgY29tcG9lbnQgYmFycmllciAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJkb2NraW5nIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+DQorCQ0KKwk8IS0tLSBIYXJkIHRvIGV4cGxhaW4gYnV0IGl0cyBjbGVhciBpZiB5b3UgcGxheSBhcm91bmQgDQorCQl3aXRoIHRoYXQuIEl0cyB0aGUgbnVtYmVyIG9mIG1pbmltdW0gcGl4ZWxzIGJlZm9yZSANCisJCXRoZSAiZG9ja2luZyIgZWZmZWN0IHdpbGwgYmUgdGhlcmUgLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0iZG9ja2luZ2JhcnJpZXIiIHZhbHVlPSIxNSIgdHlwZT0ibnVtYmVyIiAvPg0KKwkNCisJPCEtLS0gdGhlIEV2ZW50IHdpbGwgYmUgdGhyb3duIGlmIHlvdSBjbG9zZSB0aGUgQm94IC0tPg0KKwk8ZXZlbnQgbmFtZT0ib25jbG9zZSIgLz4NCisJDQorCTwhLS0tQGtleXdvcmRzIHByaXZhdGUgdGhlIGxpc3Qgb2YgY29ubmVjdGVkIHZpZXdzIC0tPg0KKwk8YXR0cmlidXRlIG5hbWU9ImRvY2tpbmdsaXN0IiB2YWx1ZT0ibnVsbCIgLz4NCisJDQorCTwhLS0tIEBrZXl3b3JkcyBwcml2YXRlIHRlbXAtb2xkZXIgb2YgeC1kaXN0YW5jZSB0byBkb2NrZWQtQm94ICAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJ0ZW1wWGRpc3RhbmNlIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPg0KKw0KKwk8IS0tLSBAa2V5d29yZHMgcHJpdmF0ZSB0ZW1wLW9sZGVyIG9mIHktZGlzdGFuY2UgdG8gZG9ja2VkLUJveCAgLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0idGVtcFlkaXN0YW5jZSIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4NCisJDQorCTwhLS0tIEBrZXl3b3JkcyBwcml2YXRlIGlzIHRoZSBCb3ggbWluaW1pemVkICAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJpc29wZW4iIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPg0KKwkNCisJPCEtLS0gQGtleXdvcmRzIHByaXZhdGUgaXMgdGhlIEJveCBtaW5pbWl6ZWQgIC0tPg0KKwk8YXR0cmlidXRlIG5hbWU9Im9wZW4iIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPgkNCisJDQorCTwhLS0tIEBrZXl3b3JkcyBwcml2YXRlICAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJpbml0aGVpZ2h0IiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPg0KKwkNCisJPCEtLS0gQGtleXdvcmRzIHByaXZhdGUgc3RvcmUgaW5pdGlhbCBoZWlnaHQgc28gdG9nZ2xlb3BlbiBjYW4gcmVzZXQgaGVpZ2h0ICAtLT4NCisJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4NCisJCXRoaXMuaW5pdGhlaWdodD10aGlzLmhlaWdodDsNCisJCS8vLy9EZWJ1Zy53cml0ZSgidGhpcy5pc29wZW46ICIsdGhpcy5pc29wZW4pOw0KKwkJaWYgKCF0aGlzLm9wZW4pIHRvZ2dsZW9wZW4oKTsNCisJPC9oYW5kbGVyPg0KKwkNCisJPG1ldGhvZCBuYW1lPSJjbG9zZSI+DQorCQlpZiAodGhpcy5vbmNsb3NlKSB0aGlzLm9uY2xvc2Uuc2VuZEV2ZW50KCk7DQorCQl0aGlzLmRvRGVzdHJveSgpOw0KKwk8L21ldGhvZD4NCisJDQorCTxtZXRob2QgbmFtZT0idG9nZ2xlb3BlbiI+DQorCQkvLy8vRGVidWcud3JpdGUoInRoaXMuaXNvcGVuIix0aGlzLmlzb3Blbik7DQorCQl0aGlzLnNldEF0dHJpYnV0ZSgnaXNvcGVuJywhdGhpcy5pc29wZW4pOw0KKwkJaWYgKHRoaXMuaXNvcGVuKXsNCisJCQlfY2FsY2RvY2tpbmdMaXN0KCk7DQorCQkJZm9yICh2YXIgZWcgaW4gdGhpcy5kb2NraW5nbGlzdCl7DQorCQkJCWlmKHRoaXMuZG9ja2luZ2xpc3RbZWddLmRvY2tpbmcpew0KKwkJCQkJLy8vL0RlYnVnLndyaXRlKCJ0aGlzLmRvY2tpbmdsaXN0W2VnXTogIix0aGlzLmRvY2tpbmdsaXN0W2VnXS50aXRsZSk7DQorCQkJCQkvLy8vRGVidWcud3JpdGUoIm9wZW4gbmV3IHkiLHRoaXMueSt0aGlzLmluaXRoZWlnaHQpOw0KKwkJCQkJdGhpcy5kb2NraW5nbGlzdFtlZ10udG9nZ2xlT3BlbkJ5UGFyZW50KHRoaXMuaW5pdGhlaWdodC0yMik7DQorCQkJCQl0aGlzLmRvY2tpbmdsaXN0W2VnXS5zZXRBdHRyaWJ1dGUoJ3knLHRoaXMueSt0aGlzLmluaXRoZWlnaHQpOw0KKwkJCQkJDQorCQkJCX0NCisJCQl9CQkJDQorCQkJdGhpcy5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsdGhpcy5pbml0aGVpZ2h0KTsNCisJCX0gZWxzZSB7DQorCQkJX2NhbGNkb2NraW5nTGlzdCgpOw0KKwkJCWZvciAodmFyIGVnIGluIHRoaXMuZG9ja2luZ2xpc3Qpew0KKwkJCQlpZih0aGlzLmRvY2tpbmdsaXN0W2VnXS5kb2NraW5nKXsNCisJCQkJCS8vLy9EZWJ1Zy53cml0ZSgidGhpcy5kb2NraW5nbGlzdFtlZ106ICIsdGhpcy5kb2NraW5nbGlzdFtlZ10udGl0bGUpOw0KKwkJCQkJdGhpcy5kb2NraW5nbGlzdFtlZ10udG9nZ2xlT3BlbkJ5UGFyZW50KC0odGhpcy5pbml0aGVpZ2h0LTIyKSk7DQorCQkJCQl0aGlzLmRvY2tpbmdsaXN0W2VnXS5zZXRBdHRyaWJ1dGUoJ3knLHRoaXMueSsyMik7DQorCQkJCX0NCisJCQl9CQ0KKwkJCXRoaXMuc2V0QXR0cmlidXRlKCdoZWlnaHQnLDIyKTsJCQ0KKwkJfQ0KKwk8L21ldGhvZD4NCisJDQorCTxtZXRob2QgbmFtZT0idG9nZ2xlT3BlbkJ5UGFyZW50IiBhcmdzPSJjaGFuZ2VZIj4NCisJCS8vLy9EZWJ1Zy53cml0ZSgiKysrKysgdG9nZ2xlT3BlbkJ5UGFyZW50ICsrKysrIGNoYW5nZVk6ICIsdGhpcy50aXRsZSxjaGFuZ2VZKTsNCisJCXZhciB0ZW1wTGlzdD1uZXcgQXJyYXkoKTsNCisJCTwhW0NEQVRBWw0KKwkJLy9jaGVjayBmb3IgZG9ja2FibGUgc3R1ZmYgd2hpY2ggaXMgY29ubmVjdGVkIHRvIHRoaXMgQm94DQorCQlmb3IgKHZhciBlZyBpbiB0aGlzLnBhcmVudC5zdWJ2aWV3cyl7DQorCQkJLy9jaGVjayB0aGF0IHlvdSBkbyBub3QgY2FsYyB3aXRoIHlvdXJzZWxmDQorCQkJaWYgKHRoaXMucGFyZW50LnN1YnZpZXdzW2VnXSE9dGhpcyAmJiB0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10uZG9ja2luZyl7DQorCQkJCS8vIHRoZXJlIGFyZSA0IGNhc2VzIHdoaWNoIGhhdmUgdG8gYmUgcHJvb2ZlZCB0byBjaGVjayBldmVyeSBwb3NzaWJsZSBzaXR1YXRpb24NCisJCQkJdmFyIHByb29mPWZhbHNlOw0KKwkJCQkvLy8vRGVidWcud3JpdGUoImZvdW5kIHNvbWU6ICIsdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLnRpdGxlKTsNCisJCQkJLy90b3AgYm94LWJvcmRlcg0KKwkJCQlpZiAgKCAoICgodGhpcy55K3RoaXMuaGVpZ2h0KS10aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueSkgPCAxICkgJiYgKCAoKHRoaXMueSt0aGlzLmhlaWdodCktdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLnkpID4gLTEgKSAmJiAoICh0aGlzLngrdGhpcy53aWR0aCkgPiB0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueCApICAmJiAoIHRoaXMueCA8ICh0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueCt0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ud2lkdGgpICkgKXsNCisJCQkJCXByb29mPXRydWU7DQorCQkJCX0NCisJCQkJCQ0KKwkJCQlpZiAocHJvb2YpIHRlbXBMaXN0LnB1c2godGhpcy5wYXJlbnQuc3Vidmlld3NbZWddKTsNCisJCQl9DQorCQl9DQorCQldXT4NCisJCS8vLy9EZWJ1Zy53cml0ZSgidGVtcExpc3QubGVuZ3RoOiAiLHRlbXBMaXN0Lmxlbmd0aCk7DQorCQlpZiAodGVtcExpc3QubGVuZ3RoIT0wKXsNCisJCQlmb3IgKHZhciBlZyBpbiB0ZW1wTGlzdCl7DQorCQkJCWlmKHRlbXBMaXN0W2VnXS5kb2NraW5nKXsNCisJCQkJCS8vLy9EZWJ1Zy53cml0ZSgidG9nZ2xlT3BlbkJ5UGFyZW50IDEgW2VnXSxjaGFuZ2VZOiAiLHRlbXBMaXN0W2VnXS50aXRsZSxjaGFuZ2VZKTsNCisJCQkJCXRlbXBMaXN0W2VnXS50b2dnbGVPcGVuQnlQYXJlbnQoY2hhbmdlWSk7DQorCQkJCQl0ZW1wTGlzdFtlZ10uc2V0QXR0cmlidXRlKCd5Jyx0ZW1wTGlzdFtlZ10ueStjaGFuZ2VZKTsNCisJCQkJfQ0KKwkJCX0JDQorCQl9DQorCQkNCisJPC9tZXRob2Q+DQorCQ0KKwk8IS0tLSBAa2V5d29yZHMgcHJpdmF0ZSAgLS0+DQorCTxtZXRob2QgbmFtZT0iX3JlbW92ZURyYWdTdGF0ZSIgYXJncz0ib2JqIj4NCisJCS8vSXQncyBpbXBvcnRhbnQgdG8gcmVtb3ZlIHRoZSBkcmFnZ2VyIGFuZCBkbyBkb2NraW5nIHN0dWZmIGJlZm9yZSB5b3UgY2hlY2sgZm9yIGNvbmVuY3RlZCBCb3hlcw0KKwkJZHJhZ2dlci5yZW1vdmUoKTsNCisJCWlmIChvYmo9PXRoaXMpew0KKwkJCWlmIChkb2NraW5nKSBhcnJhbmdlUG9zaXRpb24oKTsNCisJCX0gZWxzZSB7DQorCQkJaWYgKGRvY2tpbmcpIF9sb29rZm9yUGFyZW50T25seShvYmopOw0KKwkJfQ0KKwkJCQ0KKwkJLy9jaGVjayBmb3IgY29ubmVjdGVkIEJveGVzDQorCQlmb3IgKHZhciBlZyBpbiB0aGlzLmRvY2tpbmdsaXN0KXsNCisJCQlpZih0aGlzLmRvY2tpbmdsaXN0W2VnXS5kb2NraW5nKXsNCisJCQkJdGhpcy5kb2NraW5nbGlzdFtlZ10uX3JlbW92ZURyYWdTdGF0ZSh0aGlzKTsNCisJCQl9DQorCQl9DQorDQorCTwvbWV0aG9kPg0KKw0KKwkNCisJPCEtLS0gQGtleXdvcmRzIHByaXZhdGUNCisJCXRoZSBhcmcgb2JqIGlzIG5lZWRlZCBiZWNhdXNlIHRoZSBkcmFnZ2luZyBjYW4gYmUgY2FsbGVkIGJ5IHRoZSBCb3ggaXRzZWxmDQorCQlvciBieSBhIEJveCB3aGljaCBpcyBjb25uZWN0ZWQgdG8gdGhpcyBCb3ghICAtLT4NCisJPG1ldGhvZCBuYW1lPSJfc3RhcnREcmFnU3RhdGUiIGFyZ3M9Im9iaiI+DQorCQl0aGlzLmJyaW5nVG9Gcm9udCgpOw0KKwkJX2NhbGNkb2NraW5nTGlzdCgpOw0KKwkJZm9yICh2YXIgZWcgaW4gdGhpcy5kb2NraW5nbGlzdCl7DQorCQkJaWYodGhpcy5kb2NraW5nbGlzdFtlZ10uZG9ja2luZyl7DQorCQkJCXRoaXMuZG9ja2luZ2xpc3RbZWddLl9zdGFydERyYWdTdGF0ZSh0aGlzKTsNCisJCQl9DQorCQl9DQorCQkvL3N0b3JlIHBvc2l0aW9uIGNhdXNlIGl0IHdhc24ndCBkcmFnZ2VkIGJ5IGl0c2VsZg0KKwkJaWYgKG9iaiE9dGhpcyl7DQorCQkJc3RvcmVBZGp1c3RtZW50VG9QYXJlbnQob2JqLngsb2JqLnkpOw0KKwkJfQ0KKwkJZHJhZ2dlci5hcHBseSgpOw0KKwk8L21ldGhvZD4NCisJDQorCTwhLS0tIENhbGMgdGhlIExpc3Qgb2YgQm94ZXMgd2hpY2ggd2lsbCBiZSBkcmFnZ2VkIGFuZCBzZXRwb3NpdGlvbiBpZiB0aGlzIEJveA0KKwkJd2lsbCBiZSBkcmFnZ2VkLGRvY2tlZCBvciBtaW5pbWl6ZWQvbWF4aW1pemVkICAtLT4NCisJPG1ldGhvZCBuYW1lPSJfY2FsY2RvY2tpbmdMaXN0Ij4NCisJCS8vQ2xlYXIgbGlzdCBvZiBjb25lbmN0ZWQgQm94ZXMNCisJCXRoaXMuZG9ja2luZ2xpc3Q9bmV3IEFycmF5KCk7DQorCQk8IVtDREFUQVsNCisJCS8vY2hlY2sgZm9yIGRvY2thYmxlIHN0dWZmIHdoaWNoIGlzIGNvbm5lY3RlZCB0byB0aGlzIEJveA0KKwkJZm9yICh2YXIgZWcgaW4gdGhpcy5wYXJlbnQuc3Vidmlld3Mpew0KKwkJCS8vY2hlY2sgdGhhdCB5b3UgZG8gbm90IGNhbGMgd2l0aCB5b3Vyc2VsZg0KKwkJCWlmICh0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10hPXRoaXMgJiYgdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLmRvY2tpbmcpew0KKwkJCQkvLyB0aGVyZSBhcmUgNCBjYXNlcyB3aGljaCBoYXZlIHRvIGJlIHByb29mZWQgdG8gY2hlY2sgZXZlcnkgcG9zc2libGUgc2l0dWF0aW9uDQorCQkJCXZhciBwcm9vZj1mYWxzZTsNCisNCisJCQkJLy90b3AgYm94LWJvcmRlcg0KKwkJCQlpZiAgKCAoICgodGhpcy55K3RoaXMuaGVpZ2h0KS10aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueSkgPCAxICkgJiYgKCAoKHRoaXMueSt0aGlzLmhlaWdodCktdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLnkpID4gLTEgKSAmJiAoICh0aGlzLngrdGhpcy53aWR0aCkgPiB0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueCApICAmJiAoIHRoaXMueCA8ICh0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueCt0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ud2lkdGgpICkgKXsNCisJCQkJCXByb29mPXRydWU7DQorCQkJCX0NCisNCisJCQkJaWYgKHByb29mKSB0aGlzLmRvY2tpbmdsaXN0LnB1c2godGhpcy5wYXJlbnQuc3Vidmlld3NbZWddKTsNCisJCQl9DQorCQl9DQorCQldXT4NCisJCS8vLy9EZWJ1Zy53cml0ZSgidGhpcy5kb2NraW5nbGlzdC5sZW5ndGg6Iix0aGlzLmRvY2tpbmdsaXN0Lmxlbmd0aCk7DQorCTwvbWV0aG9kPg0KKwkNCisJPCEtLS0gQGtleXdvcmRzIHByaXZhdGUgIC0tPg0KKwk8bWV0aG9kIG5hbWU9ImFycmFuZ2VQb3NpdGlvbiI+DQorCQkvL2RvIHRoZSBtYWdpYw0KKwkJLy90aGUgaWRlYSBpczogbG9vayBmb3IgYWxsIG9uIHRoZSB2aWV3IGNvbnRhaW5lciBvbmUgbGV2ZWwgYWJvdmUgdGhpcyBvbmUNCisJCS8vYW5kIGxvb2sgZm9yIHRoZSB3aWR0aC9oZWlnaHQgYW5kIDAvMCBhbmQgbG9vayBmb3IgImRvY2thYmxlIiBzdHVmZiB0aGVyZQ0KKwkJdmFyIG5ld3g9dGhpcy54Ow0KKwkJdmFyIG5ld3k9dGhpcy55Ow0KKwkgIA0KKwkJPCFbQ0RBVEFbDQorCQkJCQ0KKwkJZm9yICh2YXIgZWcgaW4gdGhpcy5wYXJlbnQuc3Vidmlld3Mpew0KKwkJCS8vY2hlY2sgdGhhdCB5b3UgZG8gbm90IGNhbGMgd2l0aCB5b3Vyc2VsZg0KKwkJCWlmICh0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10hPXRoaXMgJiYgdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLmRvY2tpbmcpew0KKwkJCQkvLyB0aGVyZSBhcmUgNCBjYXNlcyB3aGljaCBoYXZlIHRvIGJlIHByb29mZWQgdG8gY2hlY2sgZXZlcnkgcG9zc2libGUgc2l0dWF0aW9uDQorCQkJCS8vbGVmdCBib3gtYm9yZGVyDQorCQkJCWlmICggKCAoKHRoaXMueCt0aGlzLndpZHRoKS10aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueCkgPCB0aGlzLmRvY2tpbmdiYXJyaWVyICkgJiYgKCAoKHRoaXMueCt0aGlzLndpZHRoKS10aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueCkgPiAtdGhpcy5kb2NraW5nYmFycmllciApICYmICAoICh0aGlzLnkrdGhpcy5oZWlnaHQpID4gdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLnkgKSAmJiAgKCB0aGlzLnkgPCAodGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLnkrdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLmhlaWdodCkgKSApew0KKwkJCQkJbmV3eD0gKCB0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueCAtIHRoaXMud2lkdGggKTsNCisJCQkJfQ0KKwkJCQkvL3JpZ2h0IGJveC1ib3JkZXINCisJCQkJaWYgKCAoICgodGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLngrdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLndpZHRoKS10aGlzLngpPHRoaXMuZG9ja2luZ2JhcnJpZXIgKSAmJiAoICgodGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLngrdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLndpZHRoKS10aGlzLngpPi10aGlzLmRvY2tpbmdiYXJyaWVyICkgJiYgICggKHRoaXMueSt0aGlzLmhlaWdodCkgPiB0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueSApICYmICAoIHRoaXMueSA8ICh0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueSt0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10uaGVpZ2h0KSApICl7DQorCQkJCQluZXd4PSAoIHRoaXMucGFyZW50LnN1YnZpZXdzW2VnXS54ICsgdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLndpZHRoICk7DQorCQkJCX0NCisJCQkJLy90b3AgYm94LWJvcmRlcg0KKwkJCQlpZiAgKCAoICgodGhpcy55K3RoaXMuaGVpZ2h0KS10aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueSkgPCB0aGlzLmRvY2tpbmdiYXJyaWVyICkgJiYgKCAoKHRoaXMueSt0aGlzLmhlaWdodCktdGhpcy5wYXJlbnQuc3Vidmlld3NbZWddLnkpID4gLXRoaXMuZG9ja2luZ2JhcnJpZXIgKSAmJiAoICh0aGlzLngrdGhpcy53aWR0aCkgPiB0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueCApICAmJiAoIHRoaXMueCA8ICh0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueCt0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ud2lkdGgpICkgKXsNCisJCQkJCW5ld3kgPSB0aGlzLnBhcmVudC5zdWJ2aWV3c1tlZ10ueS10aGlzLmhlaWdodDsNCisJCQkJfQ0KKwkJCQkvL2JvdHRvbSBib3gtYm9yZGVyDQorCQkJCWlmICggKCAoKHRoaXMucGFyZW50LnN1YnZpZXdzW2VnXS55K3RoaXMucGFyZW50LnN1YnZpZXdzW2VnXS5oZWlnaHQpLXRoaXMueSkgPCB0aGlzLmRvY2tpbmdiYXJyaWVyICkgJiYgKCAoKHRoaXMucGFyZW50LnN1YnZpZXdzW2VnXS55K3RoaXMucGFyZW50LnN1YnZpZXdzW2VnXS5oZWlnaHQpLXRoaXMueSkgPiAtdGhpcy5kb2NraW5nYmFycmllciApICYmICggKHRoaXMueCt0aGlzLndpZHRoKSA+IHRoaXMucGFyZW50LnN1YnZpZXdzW2VnXS54ICkgICYmICggdGhpcy54IDwgKHRoaXMucGFyZW50LnN1YnZpZXdzW2VnXS54K3RoaXMucGFyZW50LnN1YnZpZXdzW2VnXS53aWR0aCkgKSApew0KKwkJCQkJbmV3eSA9IHRoaXMucGFyZW50LnN1YnZpZXdzW2VnXS55K3RoaXMucGFyZW50LnN1YnZpZXdzW2VnXS5oZWlnaHQ7DQorCQkJCX0NCisJCQl9DQorCQl9DQorCQkNCisJCS8vQ2hlY2sgZm9yIEJvcmRlcnMNCisJCS8vc2hvdWxkIGJlIGRvbmUgX2FmdGVyXyBjaGVja2luZyBmb3Igb3RoZXIgZG9ja2FibGUgc3R1ZmYgc28gaXQgZ2V0cyANCisJCS8vcHJpb3JpdHkgdG8gZG9jayBhZ2FpbnN0IHRoZSBib3JkZXIgb2YgcGFyZW50IHZpZXcNCisJCWlmICh0aGlzLng8dGhpcy5kb2NraW5nYmFycmllcil7DQorCQkJbmV3eD0wOw0KKwkJfQ0KKwkJaWYgKHRoaXMueTx0aGlzLmRvY2tpbmdiYXJyaWVyKXsNCisJCQluZXd5PTA7DQorCQl9DQorCQlpZiAoICh0aGlzLnBhcmVudC53aWR0aC0odGhpcy54K3RoaXMud2lkdGgpKTx0aGlzLmRvY2tpbmdiYXJyaWVyKXsNCisJCQluZXd4PXRoaXMucGFyZW50LndpZHRoLXRoaXMud2lkdGg7DQorCQl9DQorCQlpZiAoICh0aGlzLnBhcmVudC5oZWlnaHQtKHRoaXMueSt0aGlzLmhlaWdodCkpPHRoaXMuZG9ja2luZ2JhcnJpZXIpew0KKwkJCW5ld3k9dGhpcy5wYXJlbnQuaGVpZ2h0LXRoaXMuaGVpZ2h0Ow0KKwkJfQ0KKwkJDQorCQkvL3NldCBwb3NpdGlvbg0KKwkJdGhpcy5zZXRBdHRyaWJ1dGUoJ3gnLG5ld3gpOw0KKwkJdGhpcy5zZXRBdHRyaWJ1dGUoJ3knLG5ld3kpOw0KKwkJXV0+DQorCTwvbWV0aG9kPg0KKwkNCisJPG1ldGhvZCBuYW1lPSJzdG9yZUFkanVzdG1lbnRUb1BhcmVudCIgYXJncz0ib2JqWCxvYmpZIj4NCisJCXRoaXMudGVtcFhkaXN0YW5jZT1vYmpYLXRoaXMueDsNCisJCXRoaXMudGVtcFlkaXN0YW5jZT1vYmpZLXRoaXMueTsNCisJPC9tZXRob2Q+DQorCQ0KKwk8IS0tLSBAa2V5d29yZHMgcHJpdmF0ZSANCisJCXRoaXMgbWV0aG9kIGlzIG5lZWRlZCBiZWNhdXNlIGlmIHRoZSBkcmFnZ2luZyBlbmQgYW5kDQorCQlpdCB3YXMgbm90IGRyYWdnZWQgX2l0c2VsZl8gaXQgd2FzIGRyYWdlZCBqdXN0IGJlY2F1c2UgYSBjb25uZWN0ZWQNCisJCWRvY2thYmxlIEJveCB3YXMgZHJhZ2dlZCB0aGFuIGl0IGNvdWxkIGJlIHRoYXQgdGhlIGNvbm5lY3RlZA0KKwkJQm94IHdhcyBmb3JjZWQgdG8gZG9jayBhZ2FpbnN0IHNvbWV0aGluZyBkaWZmZXJlbnQgb25tb3VzZXVwDQorCQlzbyB5b3UgaGF2ZSB0byByZWFycmFuZ2UgdGhlIG9sZCAiYWRqdXN0bWVudCIJLS0+DQorCTxtZXRob2QgbmFtZT0iX2xvb2tmb3JQYXJlbnRPbmx5IiBhcmdzPSJvYmoiPg0KKwkJPCFbQ0RBVEFbCQkNCisJCXZhciBuZXd4PW9iai54LXRlbXBYZGlzdGFuY2U7DQorCQl2YXIgbmV3eT1vYmoueS10ZW1wWWRpc3RhbmNlOw0KKwkJDQorCQl0aGlzLnNldEF0dHJpYnV0ZSgneCcsbmV3eCk7DQorCQl0aGlzLnNldEF0dHJpYnV0ZSgneScsbmV3eSk7DQorCQldXT4NCisJPC9tZXRob2Q+DQorCQ0KKwk8ZHJhZ3N0YXRlIG5hbWU9ImRyYWdnZXIiIC8+DQorICAgIA0KKyAgICA8YW5pbWF0b3IgYXR0cmlidXRlPSJ5IiB0bz0iMjAiIGR1cmF0aW9uPSIxMDAwIiBzdGFydGVkPSJmYWxzZSIgLz4NCisgICAgICAgIA0KKyAgICA8YW5pbWF0b3IgbmFtZT0iZG9PdXQiIGF0dHJpYnV0ZT0ieSIgdG89Ii01MDAiIGR1cmF0aW9uPSIxMDAwIiBzdGFydGVkPSJmYWxzZSIgb25zdG9wPSJwYXJlbnQuZG9EZXN0cm95KCkiIC8+ICAgIA0KKyAgICANCisgICAgPG1ldGhvZCBuYW1lPSJkb0Rlc3Ryb3kiPg0KKyAgICAgICAgdGhpcy5kZXN0cm95KCk7DQorICAgIDwvbWV0aG9kPg0KKwkNCisJPHZpZXcgd2lkdGg9IiR7IHRoaXMucGFyZW50LndpZHRoLTIgfSIgaGVpZ2h0PSIkeyB0aGlzLnBhcmVudC5oZWlnaHQtMiB9IiANCisJCSAgeD0iMSIgeT0iMSIgYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdtYWluQmFja2dyb3VuZENvbG9yJykgfSIgLz4NCisJPHZpZXcgeD0iMSIgeT0iMSIgd2lkdGg9IiR7IHRoaXMucGFyZW50LndpZHRoLTIgfSIgaGVpZ2h0PSIyMCIgPg0KKwkJDQorCQk8Z3JhZGllbnR2aWV3IHg9IjAiIHdpZHRoPSIkeyB0aGlzLnBhcmVudC53aWR0aCB9IiBoZWlnaHQ9IjIwIg0KKwkJCQljb2xvckZyb209IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignYmFzZU1vdXNlY29sb3JpemVyJykgfSINCisJCQkJY29sb3JUbz0iMHgwMDAwODgiID4NCisJCTwvZ3JhZGllbnR2aWV3Pg0KKwkJDQorICAgICAgICA8dGV4dCBmb250c2l6ZT0iMTAiIGhlaWdodD0iMTciIHg9IjYiIHk9IjEiIHRleHQ9IiR7IHRoaXMucGFyZW50LnBhcmVudC50aXRsZSB9IiANCisJCQlmZ2NvbG9yPSIweEZGRkZGRiIgcmVzaXplPSJ0cnVlIiBmb250c3R5bGU9ImJvbGQiIC8+DQorCQ0KKwkJPHZpZXcgdmlzaWJsZT0iJHsgdGhpcy5wYXJlbnQucGFyZW50LmNsb3NhYmxlIH0iIHg9IiR7IHRoaXMucGFyZW50LnBhcmVudC53aWR0aC0yMCB9IiANCisJCQl5PSIyIiByZXNvdXJjZT0iYnRuX3ByZXNlbnRlcl9jbG9zZSINCisgICAgICAgICAgICAgICAgb25tb3VzZW92ZXI9InRoaXMuc2V0QXR0cmlidXRlKCdmcmFtZScsMikiDQorICAgICAgICAgICAgICAgIG9ubW91c2VvdXQ9InRoaXMuc2V0QXR0cmlidXRlKCdmcmFtZScsMSkiDQorICAgICAgICAgICAgICAgIG9ubW91c2Vkb3duPSJ0aGlzLnNldEF0dHJpYnV0ZSgnZnJhbWUnLDMpIg0KKyAgICAgICAgICAgICAgICBvbm1vdXNldXA9InRoaXMuc2V0QXR0cmlidXRlKCdmcmFtZScsMSkiID4NCisJCQk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4NCisJCQkJdGhpcy5wYXJlbnQucGFyZW50LmNsb3NlKCk7DQorCQkJPC9oYW5kbGVyPgkJCQkJCQkJCQ0KKwkJPC92aWV3Pg0KKwkJPCEtLSANCisJCTx2aWV3IHZpc2libGU9IiR7ICF0aGlzLnBhcmVudC5wYXJlbnQuaXNvcGVuIH0iIHg9IjIiIHk9IjMiIHJlc291cmNlPSJleHBsb3Jlcl9idXR0b25fbWluX3JzYyI+DQorCQkJPGhhbmRsZXIgbmFtZT0ib25tb3VzZW92ZXIiPg0KKwkJCQl0aGlzLnNldEF0dHJpYnV0ZSgnZnJhbWUnLDIpOw0KKwkJCTwvaGFuZGxlcj4NCisJCQk8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3V0Ij4NCisJCQkJdGhpcy5zZXRBdHRyaWJ1dGUoJ2ZyYW1lJywxKTsNCisJCQk8L2hhbmRsZXI+DQorCQkJPGhhbmRsZXIgbmFtZT0ib25tb3VzZWRvd24iPg0KKwkJCQl0aGlzLnNldEF0dHJpYnV0ZSgnZnJhbWUnLDMpOw0KKwkJCTwvaGFuZGxlcj4JDQorCQkJPGhhbmRsZXIgbmFtZT0ib25tb3VzZXVwIj4NCisJCQkJdGhpcy5zZXRBdHRyaWJ1dGUoJ2ZyYW1lJywxKTsNCisJCQkJdGhpcy5wYXJlbnQucGFyZW50LnRvZ2dsZW9wZW4oKTsNCisJCQk8L2hhbmRsZXI+CQkJCQkJCQkJDQorCQk8L3ZpZXc+DQorCQk8dmlldyB2aXNpYmxlPSIkeyB0aGlzLnBhcmVudC5wYXJlbnQuaXNvcGVuIH0iIHg9IjIiIHk9IjMiIHJlc291cmNlPSJleHBsb3Jlcl9idXR0b25fbWF4X3JzYyI+DQorCQkJPGhhbmRsZXIgbmFtZT0ib25tb3VzZW92ZXIiPg0KKwkJCQl0aGlzLnNldEF0dHJpYnV0ZSgnZnJhbWUnLDIpOw0KKwkJCTwvaGFuZGxlcj4NCisJCQk8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3V0Ij4NCisJCQkJdGhpcy5zZXRBdHRyaWJ1dGUoJ2ZyYW1lJywxKTsNCisJCQk8L2hhbmRsZXI+DQorCQkJPGhhbmRsZXIgbmFtZT0ib25tb3VzZWRvd24iPg0KKwkJCQl0aGlzLnNldEF0dHJpYnV0ZSgnZnJhbWUnLDMpOw0KKwkJCTwvaGFuZGxlcj4JDQorCQkJPGhhbmRsZXIgbmFtZT0ib25tb3VzZXVwIj4NCisJCQkJdGhpcy5zZXRBdHRyaWJ1dGUoJ2ZyYW1lJywxKTsNCisJCQkJdGhpcy5wYXJlbnQucGFyZW50LnRvZ2dsZW9wZW4oKTsNCisJCQk8L2hhbmRsZXI+CQkJCQkJCQkJDQorCQk8L3ZpZXc+DQorCQkgLS0+DQorCTwvdmlldz4NCisgICAgPGhhbmRsZXIgbmFtZT0ib25hZGRzdWJ2aWV3IiBhcmdzPSJ2Ij4NCisJCS8vLy9EZWJ1Zy53cml0ZSgib25hZGRzdWJ2aWV3Iix2KTsNCisJCWlmICh2LnBhcmVudC5zdWJ2aWV3cy5sZW5ndGg+MikgdGhpcy5fcmVzaXpldmlldy5icmluZ1RvRnJvbnQoKTsNCisgICAgPC9oYW5kbGVyPg0KKyAgICA8dmlldyB2aXNpYmxlPSIkeyB0aGlzLnBhcmVudC5yZXNpemVhYmxlIH0iIG5hbWU9Il9yZXNpemV2aWV3IiANCisgICAgCSAgeD0iJHsgdGhpcy5wYXJlbnQud2lkdGggLSAxNyB9IiB5PSIkeyB0aGlzLnBhcmVudC5oZWlnaHQgLSAxNyB9IiANCisgICAgICAgIHJlc291cmNlPSJleHBsb3Jlcl9yZXNpemVfcnNjIiBjdXJzb3I9ImV4cGxvcmVyX3Jlc2l6ZW1vdXNlX3JzYyIgDQorICAgICAgICBvbm1vdXNlZG93bj0idGhpcy5wYXJlbnQucnMuYXBwbHkoKSINCisgICAgICAgIG9ubW91c2V1cD0idGhpcy5wYXJlbnQucnMucmVtb3ZlKCkiID4NCisgICAgCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+DQorICAgIAkJLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2V0VGludCIpOw0KKyAgICAJCS8vVE9ETzogRml4IHRoaXMsIGRvZXMgbm90IHdvcmsgYXQgdGhlIG1vbWVudA0KKyAgICAJCS8vaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL29wZW5tZWV0aW5ncy9pc3N1ZXMvZGV0YWlsP2lkPTQ3MA0KKyAgICAJCXRoaXMuc2V0Q29sb3IoY2FudmFzLmdldFRoZW1lQ29sb3IoJ2Jhc2VNb3VzZWNvbG9yaXplcicpKTsNCisgICAgCTwvaGFuZGxlcj4gIAkNCisgICAgPC92aWV3Pg0KKyAgICA8cmVzaXplc3RhdGUgbmFtZT0icnMiLz4NCis8L2NsYXNzPg0KKw0KKzwvbGlicmFyeT4NCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9sYWJlbGV4cGxvcmVyQm94Lmx6eCBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9jb21wb25lbnRzL2V4cGxvcmVyL2xhYmVsZXhwbG9yZXJCb3gubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwNjcwYWMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9sYWJlbGV4cGxvcmVyQm94Lmx6eApAQCAtMCwwICsxLDMzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPGxpYnJhcnk+DQorDQorPGNsYXNzIG5hbWU9ImxhYmVsRXhwbG9yZXJCb3giIGV4dGVuZHM9ImV4cGxvcmVyQm94IiA+DQorDQorCTxhdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZCIgdHlwZT0ibnVtYmVyIiBzZXR0ZXI9InNldExhYmVsSWQobGFiZWxpZCkiIC8+DQorCTxtZXRob2QgbmFtZT0ic2V0TGFiZWxJZCIgYXJncz0iX2xhYmVsaWQiID4NCisJCXRoaXMubGFiZWxpZCA9IF9sYWJlbGlkOw0KKwkJdGhpcy50aXRsZT1jYW52YXMuZ2V0TGFiZWxOYW1lKHRoaXMubGFiZWxpZCk7DQorCTwvbWV0aG9kPg0KKwkNCis8L2NsYXNzPg0KKw0KKzwvbGlicmFyeT4NCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9jb21wb25lbnRzL2V4cGxvcmVyL2xpYnJhcnkubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxNmNhMTgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9saWJyYXJ5Lmx6eApAQCAtMCwwICsxLDMxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPGxpYnJhcnk+DQorDQorCTxpbmNsdWRlIGhyZWY9ImluY3ViYXRvci9ncmFkaWVudHZpZXcubHp4IiAvPiANCisNCisJPGluY2x1ZGUgaHJlZj0icmVzb3VyY2VzLyIgLz4NCisJDQorCTxpbmNsdWRlIGhyZWY9ImV4cGxvcmVyQm94Lmx6eCIgLz4NCisJPGluY2x1ZGUgaHJlZj0ibGFiZWxleHBsb3JlckJveC5sengiIC8+DQorDQorICAgIA0KKzwvbGlicmFyeT4NCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9yZXNvdXJjZXMvY2xvc2VfZG4ucG5nIGIvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvcmVzb3VyY2VzL2Nsb3NlX2RuLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41N2ZjZjIwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvcmVzb3VyY2VzL2Nsb3NlX2RuLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9yZXNvdXJjZXMvY2xvc2VfbW8ucG5nIGIvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvcmVzb3VyY2VzL2Nsb3NlX21vLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOWQwZjk0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvcmVzb3VyY2VzL2Nsb3NlX21vLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9yZXNvdXJjZXMvY2xvc2VfdXAucG5nIGIvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvcmVzb3VyY2VzL2Nsb3NlX3VwLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OWQzYjcyCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvcmVzb3VyY2VzL2Nsb3NlX3VwLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9yZXNvdXJjZXMvZXhwbG9yYmFyX21heGltaXplX2RuLnBuZyBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9jb21wb25lbnRzL2V4cGxvcmVyL3Jlc291cmNlcy9leHBsb3JiYXJfbWF4aW1pemVfZG4ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1YWUzNDMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9yZXNvdXJjZXMvZXhwbG9yYmFyX21heGltaXplX2RuLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9yZXNvdXJjZXMvZXhwbG9yYmFyX21heGltaXplX21vLnBuZyBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9jb21wb25lbnRzL2V4cGxvcmVyL3Jlc291cmNlcy9leHBsb3JiYXJfbWF4aW1pemVfbW8ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5M2EwYjAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9yZXNvdXJjZXMvZXhwbG9yYmFyX21heGltaXplX21vLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9yZXNvdXJjZXMvZXhwbG9yYmFyX21heGltaXplX25vLnBuZyBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9jb21wb25lbnRzL2V4cGxvcmVyL3Jlc291cmNlcy9leHBsb3JiYXJfbWF4aW1pemVfbm8ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjYTZlYzgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9yZXNvdXJjZXMvZXhwbG9yYmFyX21heGltaXplX25vLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9yZXNvdXJjZXMvZXhwbG9yYmFyX21pbmltaXplX2RuLnBuZyBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9jb21wb25lbnRzL2V4cGxvcmVyL3Jlc291cmNlcy9leHBsb3JiYXJfbWluaW1pemVfZG4ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwNWRlODMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9yZXNvdXJjZXMvZXhwbG9yYmFyX21pbmltaXplX2RuLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9yZXNvdXJjZXMvZXhwbG9yYmFyX21pbmltaXplX21vLnBuZyBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9jb21wb25lbnRzL2V4cGxvcmVyL3Jlc291cmNlcy9leHBsb3JiYXJfbWluaW1pemVfbW8ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhYmE3MGQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9yZXNvdXJjZXMvZXhwbG9yYmFyX21pbmltaXplX21vLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9yZXNvdXJjZXMvZXhwbG9yYmFyX21pbmltaXplX25vLnBuZyBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9jb21wb25lbnRzL2V4cGxvcmVyL3Jlc291cmNlcy9leHBsb3JiYXJfbWluaW1pemVfbm8ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0ZGFmYTMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9yZXNvdXJjZXMvZXhwbG9yYmFyX21pbmltaXplX25vLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9yZXNvdXJjZXMvZXhwbG9yZXJiYXIucG5nIGIvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvcmVzb3VyY2VzL2V4cGxvcmVyYmFyLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Y2IyZDU5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvcmVzb3VyY2VzL2V4cGxvcmVyYmFyLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9yZXNvdXJjZXMvbGlicmFyeS5senggYi9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9yZXNvdXJjZXMvbGlicmFyeS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmMxMjNhNgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9jb21wb25lbnRzL2V4cGxvcmVyL3Jlc291cmNlcy9saWJyYXJ5Lmx6eApAQCAtMCwwICsxLDYwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPGxpYnJhcnk+DQorDQorPCEtLSBBUEwgYXV0aG9yIHNlYmF3YWduZXIgLS0+DQorPHJlc291cmNlIHNyYz0iZXhwbG9yZXJiYXIucG5nIiBuYW1lPSJleHBsb3Jlcl90aHVtYl9yc2MiIC8+DQorDQorPCEtLSBBUEwgYXV0aG9yIHNlYmF3YWduZXIgLS0+DQorPHJlc291cmNlIG5hbWU9ImV4cGxvcmVyX2J1dHRvbl9taW5fcnNjIiA+DQorCTxmcmFtZSBzcmM9ImV4cGxvcmJhcl9taW5pbWl6ZV9uby5wbmciIC8+DQorCTxmcmFtZSBzcmM9ImV4cGxvcmJhcl9taW5pbWl6ZV9tby5wbmciIC8+DQorCTxmcmFtZSBzcmM9ImV4cGxvcmJhcl9taW5pbWl6ZV9kbi5wbmciIC8+DQorPC9yZXNvdXJjZT4NCisNCis8IS0tIEFQTCBhdXRob3Igc2ViYXdhZ25lciAtLT4NCis8cmVzb3VyY2UgbmFtZT0iZXhwbG9yZXJfYnV0dG9uX21heF9yc2MiID4NCisJPGZyYW1lIHNyYz0iZXhwbG9yYmFyX21heGltaXplX25vLnBuZyIgLz4NCisJPGZyYW1lIHNyYz0iZXhwbG9yYmFyX21heGltaXplX21vLnBuZyIgLz4NCisJPGZyYW1lIHNyYz0iZXhwbG9yYmFyX21heGltaXplX2RuLnBuZyIgLz4NCis8L3Jlc291cmNlPg0KKw0KKzwhLS0gQVBMIGF1dGhvciBzZWJhd2FnbmVyIC0tPg0KKzxyZXNvdXJjZSBuYW1lPSJleHBsb3Jlcl9yZXNpemVfcnNjIiBzcmM9InJlc2l6ZXIuc3dmIiAvPg0KKw0KKzwhLS0gQVBMIGF1dGhvciBzZWJhd2FnbmVyIC0tPg0KKzxyZXNvdXJjZSBuYW1lPSJidG5fcHJlc2VudGVyX21pbmltaXplIiBzcmM9Im1pbmltaXplX3VwLnBuZyIgLz4NCis8IS0tIEFQTCBhdXRob3Igc2ViYXdhZ25lciAtLT4NCis8cmVzb3VyY2UgbmFtZT0iYnRuX3ByZXNlbnRlcl9tYXhpbWl6ZSIgc3JjPSJtYXhpbWl6ZV91cC5wbmciIC8+DQorPCEtLSBBUEwgYXV0aG9yIHNlYmF3YWduZXIgLS0+DQorPHJlc291cmNlIG5hbWU9ImJ0bl9wcmVzZW50ZXJfbWF4aW1pemUyIiBzcmM9Im1heGltaXplMl91cC5wbmciIC8+DQorDQorPCEtLSBBUEwgYXV0aG9yIHNlYmF3YWduZXIgLS0+DQorPHJlc291cmNlIG5hbWU9ImJ0bl9wcmVzZW50ZXJfY2xvc2UiPg0KKyAgICA8ZnJhbWUgc3JjPSJjbG9zZV91cC5wbmciIC8+DQorICAgIDxmcmFtZSBzcmM9ImNsb3NlX21vLnBuZyIgLz4NCisgICAgPGZyYW1lIHNyYz0iY2xvc2VfZG4ucG5nIiAvPg0KKzwvcmVzb3VyY2U+IA0KKw0KKzwhLS0gQVBMIGF1dGhvciBzZWJhd2FnbmVyIC0tPg0KKzxyZXNvdXJjZSBuYW1lPSJleHBsb3Jlcl9yZXNpemVtb3VzZV9yc2MiIHNyYz0icmVzaXplbW91c2UucG5nIiAvPg0KKw0KKzwvbGlicmFyeT4NCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9yZXNvdXJjZXMvbWF4aW1pemUyX3VwLnBuZyBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9jb21wb25lbnRzL2V4cGxvcmVyL3Jlc291cmNlcy9tYXhpbWl6ZTJfdXAucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFlZGQyM2IKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9yZXNvdXJjZXMvbWF4aW1pemUyX3VwLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9yZXNvdXJjZXMvbWF4aW1pemVfdXAucG5nIGIvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvcmVzb3VyY2VzL21heGltaXplX3VwLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzhjMDVjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvcmVzb3VyY2VzL21heGltaXplX3VwLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9yZXNvdXJjZXMvbWluaW1pemVfdXAucG5nIGIvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvcmVzb3VyY2VzL21pbmltaXplX3VwLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNjM3Mjk4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvcmVzb3VyY2VzL21pbmltaXplX3VwLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9yZXNvdXJjZXMvcmVzaXplbW91c2UucG5nIGIvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvcmVzb3VyY2VzL3Jlc2l6ZW1vdXNlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTMxNjRmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvZXhwbG9yZXIvcmVzb3VyY2VzL3Jlc2l6ZW1vdXNlLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9yZXNvdXJjZXMvcmVzaXplci5mbGEgYi9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9yZXNvdXJjZXMvcmVzaXplci5mbGEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDdkZTk1NwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9jb21wb25lbnRzL2V4cGxvcmVyL3Jlc291cmNlcy9yZXNpemVyLmZsYQpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9yZXNvdXJjZXMvcmVzaXplci5wbmcgYi9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9yZXNvdXJjZXMvcmVzaXplci5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmM5NTFmZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9jb21wb25lbnRzL2V4cGxvcmVyL3Jlc291cmNlcy9yZXNpemVyLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9yZXNvdXJjZXMvcmVzaXplci5zd2YgYi9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9leHBsb3Jlci9yZXNvdXJjZXMvcmVzaXplci5zd2YKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmU1ZDBkYQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9jb21wb25lbnRzL2V4cGxvcmVyL3Jlc291cmNlcy9yZXNpemVyLnN3ZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9sYWJlbENoZWNrYm94Lmx6eCBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9jb21wb25lbnRzL2xhYmVsQ2hlY2tib3gubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2NjBjZTgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9sYWJlbENoZWNrYm94Lmx6eApAQCAtMCwwICsxLDMxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgICAgICAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPGxpYnJhcnk+DQorDQorPGNsYXNzIG5hbWU9ImxhYmVsQ2hlY2tib3giIGV4dGVuZHM9ImNoZWNrYm94IiBzdHlsZT0iY29tcG9uZW50U3R5bGUiIGZvbnRzaXplPSIxMSIgPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9ImxhYmVsaWQiIHR5cGU9Im51bWJlciIgc2V0dGVyPSJzZXRMYWJlbElkKGxhYmVsaWQpIiAvPg0KKyAgICA8bWV0aG9kIG5hbWU9InNldExhYmVsSWQiIGFyZ3M9Il9sYWJlbGlkIiA+DQorICAgICAgICB0aGlzLmxhYmVsaWQgPSBfbGFiZWxpZDsNCisgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCd0ZXh0JyxjYW52YXMuZ2V0TGFiZWxOYW1lKHRoaXMubGFiZWxpZCkpOw0KKyAgICA8L21ldGhvZD4NCis8L2NsYXNzPg0KKw0KKzwvbGlicmFyeT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9jb21wb25lbnRzL2xpYnJhcnkubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3OWM4MzkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9saWJyYXJ5Lmx6eApAQCAtMCwwICsxLDMzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPGxpYnJhcnk+DQorDQorICAgIDxpbmNsdWRlIGhyZWY9InJlc2V0Q29tYm9ib3gubHp4IiAvPg0KKyAgICA8aW5jbHVkZSBocmVmPSJtaW5pSWNvbnNQcmVzZW50ZXIubHp4IiAvPg0KKyAgICA8aW5jbHVkZSBocmVmPSJsYWJlbENoZWNrYm94Lmx6eCIgLz4NCisgICAgDQorICAgIDxpbmNsdWRlIGhyZWY9InRleHQvIiAvPg0KKyAgICA8aW5jbHVkZSBocmVmPSJzY3JvbGxiYXJzLyIgLz4NCisgICAgPGluY2x1ZGUgaHJlZj0ibHBzLyIgLz4NCisgICAgPGluY2x1ZGUgaHJlZj0iYnV0dG9uLyIgLz4NCisgICAgPGluY2x1ZGUgaHJlZj0iZXhwbG9yZXIvIiAvPiANCisgICAgICANCis8L2xpYnJhcnk+DQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvbHBzL2Jhc2VQcm9wZXJ0eVNlbGVjdG9yLmx6eCBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9jb21wb25lbnRzL2xwcy9iYXNlUHJvcGVydHlTZWxlY3Rvci5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQ5YTA5OQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9jb21wb25lbnRzL2xwcy9iYXNlUHJvcGVydHlTZWxlY3Rvci5sengKQEAgLTAsMCArMSw0OCBAQAorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisJCis8Y2xhc3MgbmFtZT0iaGlkZVByb3BlcnR5VmlldyIgZXh0ZW5kcz0idmlldyIKKwkgICB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCB9IiBoZWlnaHQ9IiRvbmNleyBwYXJlbnQuaGVpZ2h0IH0iCisJICAgb3BhY2l0eT0iMC43IiBiZ2NvbG9yPSIweEZGRkZGRiIgLz4KKworPGNsYXNzIG5hbWU9ImJhc2VQcm9wZXJ0eVNlbGVjdG9yIiBleHRlbmRzPSJ2aWV3Ij4KKwkKKwk8IS0tLSBwb3NpdGlvbiBvZiB0aGUgU2xpZGVyV2luIG9yIENvbG9yUGlja2VyIC0tPgorCTxhdHRyaWJ1dGUgbmFtZT0iYm94UG9zaXRpb24iIHZhbHVlPSJkb3duIiB0eXBlPSJzdHJpbmciIC8+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJpc0VuYWJsZWQiIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0iZW5hYmxlZFZpZXciIHZhbHVlPSJudWxsIiAvPgorCQorCTxtZXRob2QgbmFtZT0ic2V0RW5hYmxlZCIgYXJncz0iYiI+CisJCXRoaXMuc2V0QXR0cmlidXRlKCdpc0VuYWJsZWQnLGIpOworCQlpZiAodGhpcy5lbmFibGVkVmlldyAhPSBudWxsKSB7CisJCQl0aGlzLmVuYWJsZWRWaWV3LmRlc3Ryb3koKTsKKwkJCXRoaXMuZW5hYmxlZFZpZXcgPSBudWxsOworCQl9CisJCWlmICghYikgeworCQkJdGhpcy5lbmFibGVkVmlldyA9IG5ldyBsei5oaWRlUHJvcGVydHlWaWV3KHRoaXMpOworCQl9IAorCTwvbWV0aG9kPgorICAgIAorICAgIAorPC9jbGFzcz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvbHBzL2NoYW5nZVdpZHRoU2xpZGVyLmx6eCBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9jb21wb25lbnRzL2xwcy9jaGFuZ2VXaWR0aFNsaWRlci5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGZhNzQ2YQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9jb21wb25lbnRzL2xwcy9jaGFuZ2VXaWR0aFNsaWRlci5sengKQEAgLTAsMCArMSwxNjggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+ICAKKworPGNsYXNzIG5hbWU9ImNoYW5nZVdpZHRoU2xpZGVyIiBleHRlbmRzPSJiYXNlUHJvcGVydHlTZWxlY3RvciIgYmdjb2xvcj0iMHhGRkZGRkYiIHdpZHRoPSI2MCIgaGVpZ2h0PSIyNCI+CisKKyAgICA8YXR0cmlidXRlIG5hbWU9Im51bWJlckFsaWduIiB2YWx1ZT0icmlnaHQiIHR5cGU9InN0cmluZyIvPgorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibWluaW11bSIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0iMSIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9Im1heGltdW0iIHR5cGU9Im51bWJlciIgdmFsdWU9IjEwMCIgLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9InN0ZXAiIHZhbHVlPSIxIiB0eXBlPSJudW1iZXIiLz4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImluaXRpYWxOdW1iZXJJbml0IiB2YWx1ZT0iMSIgdHlwZT0ibnVtYmVyIi8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpbml0aWFsTnVtYmVyIiB2YWx1ZT0iMyIgdHlwZT0ibnVtYmVyIi8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJib3hQb3NpdGlvbiIgdmFsdWU9ImRvd24iIHR5cGU9InN0cmluZyIvPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZCIgdmFsdWU9IjQyOSIgdHlwZT0ibnVtYmVyIi8+CisgICAgCisgICAgPGV2ZW50IG5hbWU9Im9ucGx1cyIgLz4KKyAgICA8ZXZlbnQgbmFtZT0ib25taW51cyIgLz4KKyAgICAKKyAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgICAgICB0aGlzLmluaXRpYWxOdW1iZXJJbml0PWluaXRpYWxOdW1iZXI7CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPgorICAgICAgICByZXR1cm4gdGhpcy5pbml0aWFsTnVtYmVyOworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0ic2V0U2xpZGVyVmFsdWUiIGFyZ3M9InYiPgorICAgIAl0aGlzLmluaXRpYWxOdW1iZXIgPSB2OworICAgIAl0aGlzLm51bWVyaWNWYWx1ZS5zZXRBdHRyaWJ1dGUoJ3RlbXBWYWx1ZScsdGhpcy5pbml0aWFsTnVtYmVyKTsKKyAgICAJdGhpcy5udW1lcmljVmFsdWUuc2V0QXR0cmlidXRlKCd0ZXh0Jyx0aGlzLmluaXRpYWxOdW1iZXIpOworICAgIAlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2V0U2xpZGVyVmFsdWUgIix2KTsKKyAgICAJdGhpcy5zZXRFbmFibGVkKHRydWUpOworICAgIDwvbWV0aG9kPgorCisgICAgPGVkaXR0ZXh0IG5hbWU9Im51bWVyaWNWYWx1ZSIgd2lkdGg9IjM0IiBoZWlnaHQ9IjI0IiB0ZXh0PSIkb25jZXsgcGFyZW50LmluaXRpYWxOdW1iZXIgfSIgPgorICAgICAgICA8YXR0cmlidXRlIG5hbWU9InRlbXBWYWx1ZSIgdmFsdWU9IiRvbmNleyBwYXJlbnQuaW5pdGlhbE51bWJlciB9IiB0eXBlPSJudW1iZXIiIC8+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZm9jdXMiPgorICAgICAgICAgICAgdGhpcy50ZW1wVmFsdWUgPSBOdW1iZXIodGhpcy5nZXRUZXh0KCkpOworICAgICAgICA8L2hhbmRsZXI+ICAgICAgICAgICAgCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uYmx1ciI+CisgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICB2YXIgdCA9IHBhcnNlSW50KHRoaXMuZ2V0VGV4dCgpKTsKKyAgICAgICAgICAgICAgICBpZiAoaXNOYU4odCkgfHwgdCA+IHRoaXMucGFyZW50Lm1heGltdW0gfHwgdCA8IHRoaXMucGFyZW50Lm1pbmltdW0peworICAgICAgICAgICAgICAgICAgICB0ID0gdGhpcy50ZW1wVmFsdWU7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCd0ZXh0Jyx0KTsKKyAgICAgICAgICAgICAgICAgICAgbHouRm9jdXMuc2V0Rm9jdXModGhpcyk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgdGhpcy50ZW1wVmFsdWUgPSB0OworICAgICAgICAgICAgICAgICAgICBwYXJlbnQuc2V0QXR0cmlidXRlKCdpbml0aWFsTnVtYmVyJyx0KTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICBdXT4KKyAgICAgICAgPC9oYW5kbGVyPgorICAgIDwvZWRpdHRleHQ+CisKKworICAgIDxidXR0b24gbmFtZT0iYXJyb3dWaWV3IiB4PSIzNiIgd2lkdGg9IjI0IiB5PSIxIiBoZWlnaHQ9IjIzIiA+CisgICAgICAgIDx2aWV3IG5hbWU9ImFycm93X2Rvd25fc2xpZGVyIiByZXNvdXJjZT0iYXJyb3dfZG93bl9zbGlkZXJfcnNjIiAKKyAgICAgICAgICAgIHg9IjQiIHk9IjMiIC8+CisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4KKyAgICAgICAgICAgIAlpZiAodGhpcy5wYXJlbnQuYm94UG9zaXRpb249PSJ1cCIpeworICAgICAgICAgICAgCQl2YXIgcGljayA9IG5ldyBsei5jaGFuZ2VXaWR0aFNsaWRlcldpbihjYW52YXMseworCQkJCQkgICAgICAgICAgICAJCQlpbml0aWFsTnVtYmVyOnBhcmVudC5udW1lcmljVmFsdWUudGVtcFZhbHVlLAorCQkJCQkgICAgICAgICAgICAJCQlidG5SZWY6dGhpcy5wYXJlbnQseDoocGFyZW50LmdldEF0dHJpYnV0ZVJlbGF0aXZlKCd4JyxjYW52YXMpKSwKKwkJCQkJICAgICAgICAgICAgCQkJbWF4dmFsdWU6cGFyZW50Lm1heGltdW0sCisJCQkJCSAgICAgICAgICAgIAkJCXk6KHBhcmVudC5nZXRBdHRyaWJ1dGVSZWxhdGl2ZSgneScsY2FudmFzKS0xNDArcGFyZW50LmhlaWdodCkKKwkJCQkgICAgICAgICAgICAJCQl9KTsKKyAgICAgICAgICAgIAl9IGVsc2UgeworICAgICAgICAgICAgCQl2YXIgcGljayA9IG5ldyBsei5jaGFuZ2VXaWR0aFNsaWRlcldpbihjYW52YXMseworCQkJCQkgICAgICAgICAgICAJCQlpbml0aWFsTnVtYmVyOnBhcmVudC5udW1lcmljVmFsdWUudGVtcFZhbHVlLAorCQkJCQkgICAgICAgICAgICAJCQlidG5SZWY6dGhpcy5wYXJlbnQseDoocGFyZW50LmdldEF0dHJpYnV0ZVJlbGF0aXZlKCd4JyxjYW52YXMpKSwKKwkJCQkJICAgICAgICAgICAgCQkJbWF4dmFsdWU6cGFyZW50Lm1heGltdW0sCisJCQkJCSAgICAgICAgICAgIAkJCXk6KHBhcmVudC5nZXRBdHRyaWJ1dGVSZWxhdGl2ZSgneScsY2FudmFzKSkKKwkJCQkgICAgICAgICAgICAJCQl9KTsKKyAgICAgICAgICAgIAl9CisgICAgICAgICAgICAgICAgbHouTW9kZU1hbmFnZXIubWFrZU1vZGFsKCBwaWNrICk7CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iJG9uY2V7IHBhcmVudC5wYXJlbnQubGFiZWxpZCB9IiAvPgorICAgIDwvYnV0dG9uPgorICAgIAorPC9jbGFzcz4KKyAgICAKKzxjbGFzcyBuYW1lPSJjbG9zYWJsZVZpZXciIGV4dGVuZHM9InZpZXciPgorICAgIDxtZXRob2QgbmFtZT0iY2xvc2UiPgorICAgICAgICBsei5Nb2RlTWFuYWdlci5yZWxlYXNlKHRoaXMpOworICAgICAgICB0aGlzLmRlc3Ryb3koKTsKKyAgICA8L21ldGhvZD4KKzwvY2xhc3M+ICAgIAorICAgIAorPGNsYXNzIG5hbWU9ImNoYW5nZVdpZHRoU2xpZGVyV2luIiBleHRlbmRzPSJjbG9zYWJsZVZpZXciIGJnY29sb3I9IndoaXRlIiAKKyAgICBjbGlja2FibGU9InRydWUiIHdpZHRoPSI1OCIgaGVpZ2h0PSIxNDAiID4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9ImJ0blJlZiIgdmFsdWU9Im51bGwiIC8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpbml0aWFsTnVtYmVyIiB2YWx1ZT0iMyIgdHlwZT0ibnVtYmVyIi8+CisgICAgPGF0dHJpYnV0ZSBuYW1lPSJtYXh2YWx1ZSIgdmFsdWU9IjEwMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgIAorICAgIDwhLS0tIEBrZXl3b3JkcyBwcml2YXRlIC0tPgorICAgIDxtZXRob2QgbmFtZT0icGFzc01vZGVFdmVudCIgYXJncz0iZXZlbnRTdHIsdmlldyIgPiAKKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICBpZiAoIGV2ZW50U3RyID09ICJvbm1vdXNlZG93biIgICl7CisgICAgICAgICAgICAgICAgaWYgKCB2aWV3ICE9IG51bGwgKSB7CisgICAgICAgICAgICAgICAgICAgaWYgKCAhdmlldy5jaGlsZE9mKHRoaXMpICkgeworICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jbG9zZSgpOworICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHZpZXcgJiYgdmlldy5jaGlsZE9mKHRoaXMpKSB7CisgICAgICAgICAgICAgICAgaWYgKHZpZXdbIGV2ZW50U3RyIF0pIHsKKyAgICAgICAgICAgICAgICAgICAgdmlld1sgZXZlbnRTdHIgXS5zZW5kRXZlbnQoIHZpZXcgKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIF1dPiAKKyAgICA8L21ldGhvZD4KKworICAgIDx2aWV3IGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignYmFzZU1vdXNlY29sb3JpemVyJykgfSIgd2lkdGg9IjU4IiBoZWlnaHQ9IjEzOCIgeD0iMSIgeT0iMSIgLz4KKyAgICAKKyAgICA8dnNsaWRlciBuYW1lPSJfc2xpZGVyIiBoZWlnaHQ9IjEyMCIgeT0iMTAiIHg9IjEwIiBtaW52YWx1ZT0iMSIgbWF4dmFsdWU9IiRvbmNleyBwYXJlbnQubWF4dmFsdWUgfSIgCisgICAgICAgIGluaXR2YWx1ZT0iJG9uY2V7IHBhcmVudC5pbml0aWFsTnVtYmVyIH0iIHNob3dyYW5nZT0iZmFsc2UiIHNob3d2YWx1ZT0idHJ1ZSI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9udmFsdWUiIGFyZ3M9InYiPgorICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib252YWx1ZSIsdik7CisgICAgICAgICAgICBwYXJlbnQuYnRuUmVmLm51bWVyaWNWYWx1ZS50ZW1wVmFsdWUgPSBOdW1iZXIodik7CisgICAgICAgICAgICBwYXJlbnQuYnRuUmVmLm51bWVyaWNWYWx1ZS5zZXRBdHRyaWJ1dGUoJ3RleHQnLHYpOworICAgICAgICAgICAgcGFyZW50LmJ0blJlZi5zZXRBdHRyaWJ1dGUoJ2luaXRpYWxOdW1iZXInLHYpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9udmFsdWVDaG9zZW5GaW5hbCI+CisgICAgICAgICAgICBwYXJlbnQuY2xvc2UoKTsKKyAgICAgICAgPC9oYW5kbGVyPiAgICAgICAgCisgICAgPC92c2xpZGVyPgorICAgIAorICAgIDx2aWV3IG5hbWU9Il9jbG9zZSIgeD0iJG9uY2V7IHBhcmVudC53aWR0aC10aGlzLndpZHRoLTIgfSIgeT0iMiIKKyAgICAgICAgcmVzb3VyY2U9ImJ0bl9wcmVzZW50ZXJfY2xvc2UiCisgICAgICAgIG9ubW91c2VvdmVyPSJ0aGlzLnNldEF0dHJpYnV0ZSgnZnJhbWUnLDIpIgorICAgICAgICBvbm1vdXNlb3V0PSJ0aGlzLnNldEF0dHJpYnV0ZSgnZnJhbWUnLDEpIgorICAgICAgICBvbm1vdXNlZG93bj0idGhpcy5zZXRBdHRyaWJ1dGUoJ2ZyYW1lJywzKSIKKyAgICAgICAgb25tb3VzZXVwPSJ0aGlzLnNldEF0dHJpYnV0ZSgnZnJhbWUnLDEpIiA+CisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2ZyYW1lJywyKTsKKyAgICAgICAgICAgIHRoaXMucGFyZW50LmNsb3NlKCk7CisgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPGxhYmVsVG9vbHRpcCBsYWJlbGlkPSI0MzAiIC8+CisgICAgPC92aWV3PiAgICAgCisgICAgICAgIAorPC9jbGFzcz4gICAgCisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9jb21wb25lbnRzL2xwcy9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9jb21wb25lbnRzL2xwcy9saWJyYXJ5Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzQ0YmNjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvbHBzL2xpYnJhcnkubHp4CkBAIC0wLDAgKzEsMzAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisgICAgCisgICAgPCEtLSBBUEwgYXV0aG9yIHNlYmF3YWduZXIgLS0+CisgICAgPHJlc291cmNlIG5hbWU9ImFycm93X2Rvd25fc2xpZGVyX3JzYyIgc3JjPSJyZXNvdXJjZXMvYXJyb3dfZG93bl9zbGlkZXIucG5nIiAvPiAKKworICAgIDxpbmNsdWRlIGhyZWY9ImJhc2VQcm9wZXJ0eVNlbGVjdG9yLmx6eCIgLz4KKyAgICA8aW5jbHVkZSBocmVmPSJ2c2xpZGVyLmx6eCIgLz4gCisgICAgPGluY2x1ZGUgaHJlZj0iY2hhbmdlV2lkdGhTbGlkZXIubHp4IiAvPgorICAgIAorPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvbHBzL3Jlc291cmNlcy9hcnJvd19kb3duX3NsaWRlci5wbmcgYi9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9scHMvcmVzb3VyY2VzL2Fycm93X2Rvd25fc2xpZGVyLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTEwN2Q3Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvbHBzL3Jlc291cmNlcy9hcnJvd19kb3duX3NsaWRlci5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvbHBzL3ZzbGlkZXIubHp4IGIvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvbHBzL3ZzbGlkZXIubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4NmE0ZjIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9scHMvdnNsaWRlci5sengKQEAgLTAsMCArMSwxMzcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPCEtLSBYX0xaX0NPUFlSSUdIVF9CRUdJTiAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyogQ29weXJpZ2h0IDIwMDYsIDIwMDkgTGFzemxvIFN5c3RlbXMsIEluYy4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuICAgICAgICAgICAgICAqCisqIFVzZSBpcyBzdWJqZWN0IHRvIGxpY2Vuc2UgdGVybXMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKiBYX0xaX0NPUFlSSUdIVF9FTkQgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+Cis8IS0tCisgICAgdmVydGljYWwgc2xpZGVyIGNvbnRyaWJ1dGVkIGJ5IFNlYmFzdGlhbiBXYWduZXIKKy0tPgorPGxpYnJhcnk+CisgIAorICA8Y2xhc3MgbmFtZT0idnNsaWRlcnRyYWNrIiBleHRlbmRzPSJ2aWV3IiBiZ2NvbG9yPSIweDAwMDAwMCI+CisgICAgICAgIDx2aWV3IHdpZHRoPSIkeyBwYXJlbnQud2lkdGgtMn0iIGhlaWdodD0iJHsgcGFyZW50LmhlaWdodC0yIH0iIAorICAgICAgICAgIHg9IjEiIHk9IjEiIGJnY29sb3I9IjB4RkZGRkZGIi8+CisgICAgICAgIDx2aWV3IHdpZHRoPSIkeyBwYXJlbnQud2lkdGgtMn0iIGJnY29sb3I9IjB4Q0NDQ0NDIgorICAgICAgICAgIHg9IjEiIHk9IiR7ICh0aGlzLnBhcmVudC5wYXJlbnQuc3dpdGNoYXhpcykgPyAKKyAgICAgICAgICAgICAgICBwYXJlbnQucGFyZW50Ll9zbGlkZXJ0aHVtYi55IDogMSB9IiAKKyAgICAgICAgICB2aXNpYmxlPSIkeyBwYXJlbnQucGFyZW50LnNob3dyYW5nZSB9IiAKKyAgICAgICAgICBoZWlnaHQ9IiR7ICh0aGlzLnBhcmVudC5wYXJlbnQuc3dpdGNoYXhpcykgPyAKKyAgICAgICAgKHBhcmVudC5wYXJlbnQuX3ZzbGlkZXJ0cmFjay5oZWlnaHQgLSBwYXJlbnQucGFyZW50Ll9zbGlkZXJ0aHVtYi55LTEpIDogCisgICAgICAgIHBhcmVudC5wYXJlbnQuX3NsaWRlcnRodW1iLnkgfSIgLz4KKyAgPC9jbGFzcz4KKyAgCisgIDxjbGFzcyBuYW1lPSJ2c2xpZGVydGh1bWIiIGV4dGVuZHM9ImJ1dHRvbiIgYmdjb2xvcj0iMHg5OTk5OTkiIAorICAgICAgICBoZWlnaHQ9IjEwIiB3aWR0aD0iMjAiIAorICAgIG9ubW91c2Vkb3duPSJkcmFnZ2VyLnNldEF0dHJpYnV0ZSgnYXBwbGllZCcsIHRydWUpIiBvbm1vdXNldXA9ImRyYWdnZXIuc2V0QXR0cmlidXRlKCdhcHBsaWVkJywgZmFsc2UpIj4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJkcmFnX21pbiIgdmFsdWU9IjAiIHR5cGU9Im51bWJlciIgLz4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJzaG93dmFsdWUiIHR5cGU9ImJvb2xlYW4iIHZhbHVlPSJ0cnVlIiAvPgorICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImRyYWdfbWF4IiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPgorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgICAgICAgICAgICAgIC8vU2V0dGluZyB0aGUgaW5pdFZhbAorICAgICAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCd5JywgZ2V0UG9zRnJvbVZhbHVlKHRoaXMucGFyZW50LmluaXR2YWx1ZSkpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIAorICAgICAgICA8bWV0aG9kIG5hbWU9ImdldFZhbHVlRnJvbVBvcyI+CisgICAgICAgICAgICAgICAgdmFyIGRlbHRhMSA9IHRoaXMucGFyZW50Lm1heHZhbHVlLXRoaXMucGFyZW50Lm1pbnZhbHVlOworICAgICAgICAgICAgICAgIHZhciBwZXJjID0gKHRoaXMucGFyZW50LnN3aXRjaGF4aXMpID8gMS0oeSAvICh0aGlzLnBhcmVudC5oZWlnaHQtdGhpcy5oZWlnaHQpKSA6ICh5IC8gKHRoaXMucGFyZW50LmhlaWdodC10aGlzLmhlaWdodCkpOworICAgICAgICAgICAgICAgIC8vRGVidWcud3JpdGUoZGVsdGExLHBlcmMpOworICAgICAgICAgICAgICAgIHJldHVybiAoTWF0aC5yb3VuZChwZXJjKmRlbHRhMSkpK3RoaXMucGFyZW50Lm1pbnZhbHVlOworICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgCisgICAgICAgIDxtZXRob2QgbmFtZT0iZ2V0UG9zRnJvbVZhbHVlIiBhcmdzPSJ2YWwiPgorICAgICAgICAgICAgICAgIHZhciBwZXJjID0gKHZhbC10aGlzLnBhcmVudC5taW52YWx1ZSkgLyAodGhpcy5wYXJlbnQubWF4dmFsdWUtdGhpcy5wYXJlbnQubWludmFsdWUpOworICAgICAgICAgICAgICAgIC8vRGVidWcud3JpdGUocGVyYyk7CisgICAgICAgICAgICAgICAgdmFyIHZhbFkgPSAodGhpcy5wYXJlbnQuc3dpdGNoYXhpcykgPyAoICgxLXBlcmMpICogKHRoaXMucGFyZW50LmhlaWdodC10aGlzLmhlaWdodCkpIDogKHBlcmMgKiAodGhpcy5wYXJlbnQuaGVpZ2h0LXRoaXMuaGVpZ2h0KSk7CisgICAgICAgICAgICAgICAgLy9EZWJ1Zy53cml0ZSgidmFsWTogIixNYXRoLnJvdW5kKHZhbFkpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTWF0aC5yb3VuZCh2YWxZKTsKKyAgICAgICAgPC9tZXRob2Q+CisgICAgICAgIAorICAgICAgICA8c2V0dGVyIG5hbWU9InkiIGFyZ3M9InYiPgorICAgICAgICAgICAgICAgIHN1cGVyLnNldEF0dHJpYnV0ZSgneScsIHYpOworICAgICAgICAgICAgICAgIHZhciB0aHVtYlZhbCA9IGdldFZhbHVlRnJvbVBvcygpOworICAgICAgICAgICAgICAgIGlmICh0aHVtYlZhbCAhPSBwYXJlbnQudmFsdWUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnNldFZhbHVlKHRodW1iVmFsKTsKKyAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgCisgICAgICAgIDwvc2V0dGVyPgorICAgIDxkcmFnc3RhdGUgbmFtZT0iZHJhZ2dlciIgZHJhZ19heGlzPSJ5IgorICAgICAgICBkcmFnX21pbl95PSIkeyB0aGlzLmRyYWdfbWluIH0iICAKKyAgICAgICAgZHJhZ19tYXhfeT0iJHsgdGhpcy5kcmFnX21heCB9Ij4KKyAgICAgICAgICAgIDx0ZXh0IG5hbWU9InQxIiB4PSItMjQiIHRleHQ9IiR7IHRoaXMucGFyZW50LnBhcmVudC52YWx1ZSB9IiB5PSItNCIgcmVzaXplPSJ0cnVlIiAvPgorICAgIDwvZHJhZ3N0YXRlPgorICA8L2NsYXNzPgorCisgIDxjbGFzcyBuYW1lPSJ2c2xpZGVyIiBleHRlbmRzPSJ2aWV3IiA+CisgICAgICAgIDwhLS0tIE1pbmltdW0gVmFsdWUgLS0+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ibWludmFsdWUiIHR5cGU9Im51bWJlciIgdmFsdWU9IjAiLz4KKyAgICAgICAgCisgICAgICAgIDwhLS0tIE1heGltdW0gVmFsdWUgLS0+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ibWF4dmFsdWUiIHR5cGU9Im51bWJlciIgdmFsdWU9IjEwMCIvPgorICAgICAgICAKKyAgICAgICAgPCEtLS0gU2hvd3JhbmdlIHNob3VsZCB0aGUgc2xpZGVydHJhY2sgYmUgd2l0aCBjb2xvciB3aGlsZSAnc2xpZGluZycgLS0+CisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ic2hvd3JhbmdlIiB0eXBlPSJib29sZWFuIiB2YWx1ZT0idHJ1ZSIvPgorICAgICAgICAKKyAgICAgICAgPCEtLS0gc2hvd3ZhbHVlIHNob3VsZCB0aGUgc2xpZGVyIHNob3cgdGhlIG51bWJlcnMgb2YgbWluL21heCAtLT4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJzaG93dmFsdWUiIHR5cGU9ImJvb2xlYW4iIHZhbHVlPSJ0cnVlIi8+CisgICAgICAgIAorICAgICAgICA8IS0tLSBzd2l0Y2hheGlzIHRydWUgbWVhbnMgbWluaW11bS12YWx1ZSBpcyAKKyAgICAgICAgICAgICAgICB0IG9wIG1heGltdW0gaXMgYm90dG9tIGZhbHNlIHR1cm5zIGFyb3VuZCAtLT4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJzd2l0Y2hheGlzIiB0eXBlPSJib29sZWFuIiB2YWx1ZT0iZmFsc2UiLz4KKyAgICAgICAgCisgICAgICAgIDwhLS0gSW5pdGlhbCBWYWx1ZSAtLT4KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJpbml0dmFsdWUiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+ICAgICAgICAgIAorICAgICAgICAKKyAgICA8IS0tLSBAa2V5d29yZHMgcHJpdmF0ZSAtLT4KKyAgICA8ZXZlbnQgbmFtZT0ib252YWx1ZSIvPgorICAgICAgICAKKyAgICA8IS0tLSBAa2V5d29yZHMgcHJpdmF0ZSAtLT4KKyAgICA8YXR0cmlidXRlIG5hbWU9InZhbHVlIiB2YWx1ZT0iMCIgc2V0dGVyPSJzZXRWYWx1ZSh2YWx1ZSkiLz4KKyAgICA8bWV0aG9kIG5hbWU9InNldFZhbHVlIiBhcmdzPSJ2Ij4KKyAgICAgICAgaWYgKCFpc2luaXRlZCkgeworICAgICAgICAgIHRoaXMudmFsdWUgPSB2OworICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAgICBpZiAodGhpcy52YWx1ZSA9PSB2KSByZXR1cm47CisgICAgICAgIHRoaXMudmFsdWUgPSB2OworICAgICAgICBpZiAob252YWx1ZSkgb252YWx1ZS5zZW5kRXZlbnQodik7CisgICAgPC9tZXRob2Q+CisgICAgICAgCisgICAgICAgIDx2c2xpZGVydHJhY2sgbmFtZT0iX3ZzbGlkZXJ0cmFjayIgeD0iNSIgCisgICAgICAgIHdpZHRoPSIxMCIgaGVpZ2h0PSIkeyBwYXJlbnQuaGVpZ2h0IH0iIC8+CisgICAgICAgIDx2c2xpZGVydGh1bWIgbmFtZT0iX3NsaWRlcnRodW1iIiAKKyAgICAgICAgZHJhZ19tYXg9IiR7IHBhcmVudC5oZWlnaHQtdGhpcy5oZWlnaHQgfSIgCisgICAgICAgIHNob3d2YWx1ZT0iJHsgcGFyZW50LnNob3d2YWx1ZSB9IiAvPgorICAgICAgICAKKyAgICAgICAgPHRleHQgdGV4dD0iJHsgKCAodGhpcy5wYXJlbnQuc3dpdGNoYXhpcykgPyAKKyAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5tYXh2YWx1ZSA6IHRoaXMucGFyZW50Lm1pbnZhbHVlICkgfSIgCisgICAgICAgIHZpc2libGU9IiR7IHBhcmVudC5zaG93dmFsdWUgfSIgCisgICAgICAgIHk9Ii04IiB4PSIkeyB0aGlzLnBhcmVudC5fdnNsaWRlcnRyYWNrLndpZHRoKzEwIH0iIC8+CisgICAgICAgIAorICAgICAgICA8dGV4dCB0ZXh0PSIkeyAoICh0aGlzLnBhcmVudC5zd2l0Y2hheGlzKSA/IAorICAgICAgICAgICAgICAgIHRoaXMucGFyZW50Lm1pbnZhbHVlIDogdGhpcy5wYXJlbnQubWF4dmFsdWUgKSB9IiAKKyAgICAgICAgICB2aXNpYmxlPSIkeyBwYXJlbnQuc2hvd3ZhbHVlIH0iIAorICAgICAgICAgIHk9IiR7IHRoaXMucGFyZW50LmhlaWdodC0xMCB9IiAKKyAgICAgICAgICB4PSIkeyB0aGlzLnBhcmVudC5fdnNsaWRlcnRyYWNrLndpZHRoKzEwIH0iIC8+CisgIDwvY2xhc3M+CisgIAorICAKKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvbWluaUljb25zUHJlc2VudGVyLmx6eCBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9jb21wb25lbnRzL21pbmlJY29uc1ByZXNlbnRlci5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWQ1OGEyNAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9jb21wb25lbnRzL21pbmlJY29uc1ByZXNlbnRlci5sengKQEAgLTAsMCArMSw1MSBAQAorPGxpYnJhcnk+DQorPCEtLQ0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAgDQorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICAgIAkgIA0KKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICB1bmRlciB0aGUgTGljZW5zZS4NCisgIA0KKy0tPg0KKw0KKzxjbGFzcyBuYW1lPSJtaW5pSWNvbnNQcmVzZW50ZXIiIGV4dGVuZHM9InZpZXciPg0KKyAgICANCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpY29uUmVzc291cmNlTmFtZSIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIi8+DQorICAgIA0KKyAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3ZlciI+DQorICAgICAgICB0aGlzLl9iZy5zZXRBdHRyaWJ1dGUoImJnY29sb3IiLDB4RkZGRkZGKTsNCisgICAgICAgIHRoaXMuX2JnLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsNCisgICAgPC9oYW5kbGVyPg0KKyAgICANCisgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZW91dCI+DQorICAgICAgICB0aGlzLl9iZy5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsNCisgICAgPC9oYW5kbGVyPg0KKyAgICANCisgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZWRvd24iPg0KKyAgICAgICAgdGhpcy5fYmcuc2V0QXR0cmlidXRlKCJiZ2NvbG9yIixjYW52YXMuZ2V0VGhlbWVDb2xvcignYmFzZWJnY29sb3JpemVyJykpOw0KKyAgICAgICAgdGhpcy5fYmcuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOw0KKyAgICA8L2hhbmRsZXI+DQorICAgIA0KKyAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNldXAiPg0KKyAgICAgICAgdGhpcy5fYmcuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7DQorICAgIDwvaGFuZGxlcj4NCisgICAgDQorICAgIDx2aWV3IG5hbWU9Il9iZyIgdmlzaWJpbGl0eT0iaGlkZGVuIiBvcGFjaXR5PSIwLjciDQorICAgICAgICAgIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNCIgeD0iMSIgeT0iMSIgYmdjb2xvcj0iMHhGRkZGRkYiIC8+DQorICAgICAgICAgIA0KKyAgICA8dmlldyBuYW1lPSJfaXRlbVJzYyIgcmVzb3VyY2U9IiRvbmNleyBwYXJlbnQuaWNvblJlc3NvdXJjZU5hbWUgfSIgLz4NCisgICAgDQorPC9jbGFzcz4NCisNCis8L2xpYnJhcnk+DQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvcmVzZXRDb21ib2JveC5senggYi9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9yZXNldENvbWJvYm94Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTVhYmZmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvcmVzZXRDb21ib2JveC5sengKQEAgLTAsMCArMSwzNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+DQorPCEtLQ0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAgDQorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICAgIAkgIA0KKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICB1bmRlciB0aGUgTGljZW5zZS4NCisgIA0KKy0tPg0KKzxsaWJyYXJ5Pg0KKw0KKyAgICA8Y2xhc3MgbmFtZT0icmVzZXRDb21ib2JveCIgZXh0ZW5kcz0iY29tYm9ib3giIGVkaXRhYmxlPSJmYWxzZSIgc2hvd25pdGVtcz0iMTIiDQorICAgIAkgICBzdHlsZT0iY29tcG9uZW50U3R5bGUiIGl0ZW1jbGFzc25hbWU9ImxhYmVsZFRleHRMaXN0SXRlbSI+DQorICAgIA0KKyAgICAgICAgPG1ldGhvZCBuYW1lPSJyZXNldCIgPg0KKyAgICAgICAgICAgIDwhW0NEQVRBWw0KKyAgICAgICAgICAgICAgICB2YXIgY3VycmVudENvdW50ID0gdGhpcy5jYmxpc3QuZ2V0TnVtSXRlbXMoKTsNCisgICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBjdXJyZW50Q291bnQ7IGkrKykNCisgICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlSXRlbUF0KDApOw0KKyAgICAgICAgICAgICAgICB0aGlzLmNsZWFyU2VsZWN0aW9uKCk7DQorICAgICAgICAgICAgXV0+DQorICAgICAgICA8L21ldGhvZD4NCisgICAgDQorICAgIDwvY2xhc3M+DQorICAgICAgICANCis8L2xpYnJhcnk+DQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvc2Nyb2xsYmFycy9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9jb21wb25lbnRzL3Njcm9sbGJhcnMvbGlicmFyeS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWVlMDBlMQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9jb21wb25lbnRzL3Njcm9sbGJhcnMvbGlicmFyeS5sengKQEAgLTAsMCArMSw0NCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+DQorPCEtLQ0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAgDQorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICAgIAkgIA0KKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICB1bmRlciB0aGUgTGljZW5zZS4NCisgIA0KKy0tPg0KKzxsaWJyYXJ5Pg0KKw0KKwk8IS0tIEFQTCBBdXRob3Igc2ViYXdhZ25lciAtLT4NCisJPHJlc291cmNlIG5hbWU9Im9tc2Nyb2xsdHJhY2tfeV9yc2MiIHNyYz0icmVzb3VyY2VzL3lfc2Nyb2xsdHJhY2suc3dmIiAvPg0KKwkNCisJPCEtLSBBUEwgQXV0aG9yIHNlYmF3YWduZXIgLS0+DQorICAgIDxyZXNvdXJjZSBuYW1lPSJvbXNjcm9sbGJhcl95dGh1bWJtaWRkbGVfcnNjIiBzcmM9InJlc291cmNlcy9zY3JvbGx0aHVtYl95X21pZC5zd2YiIC8+DQorICAgIDwhLS0gQVBMIEF1dGhvciBzZWJhd2FnbmVyIC0tPg0KKyAgICA8cmVzb3VyY2UgbmFtZT0ib21zY3JvbGxiYXJfeXRodW1idG9wX3JzYyIgc3JjPSJyZXNvdXJjZXMvc2Nyb2xsdGh1bWJfeV90b3Auc3dmIiAvPg0KKyAgICA8IS0tIEFQTCBBdXRob3Igc2ViYXdhZ25lciAtLT4NCisgICAgPHJlc291cmNlIG5hbWU9Im9tc2Nyb2xsYmFyX3l0aHVtYmJvdHRvbV9yc2MiIHNyYz0icmVzb3VyY2VzL3Njcm9sbHRodW1iX3lfYm90dG9tLnN3ZiIgLz4NCisgICAgPCEtLSBBUEwgQXV0aG9yIHNlYmF3YWduZXIgLS0+DQorICAgCTxyZXNvdXJjZSBuYW1lPSJvbXNjcm9sbHRyYWNrX3hfcnNjIiBzcmM9InJlc291cmNlcy94X3Njcm9sbHRyYWNrLnN3ZiIgLz4NCisJPCEtLSBBUEwgQXV0aG9yIHNlYmF3YWduZXIgLS0+DQorICAgIDxyZXNvdXJjZSBuYW1lPSJvbXNjcm9sbGJhcl94dGh1bWJtaWRkbGVfcnNjIiBzcmM9InJlc291cmNlcy9zY3JvbGx0aHVtYl94X21pZC5zd2YiIC8+DQorICAgIDwhLS0gQVBMIEF1dGhvciBzZWJhd2FnbmVyIC0tPg0KKyAgICA8cmVzb3VyY2UgbmFtZT0ib21zY3JvbGxiYXJfeHRodW1ibGVmdF9yc2MiIHNyYz0icmVzb3VyY2VzL3Njcm9sbHRodW1iX3hfbGVmdC5zd2YiIC8+DQorICAgIDwhLS0gQVBMIEF1dGhvciBzZWJhd2FnbmVyIC0tPg0KKyAgICA8cmVzb3VyY2UgbmFtZT0ib21zY3JvbGxiYXJfeHRodW1icmlnaHRfcnNjIiBzcmM9InJlc291cmNlcy9zY3JvbGx0aHVtYl94X3JpZ2h0LnN3ZiIgLz4NCisNCisJPGluY2x1ZGUgaHJlZj0ib21fdnNjcm9sbGJhci5sengiLz4NCisJPGluY2x1ZGUgaHJlZj0ib21faHNjcm9sbGJhci5sengiLz4NCisNCis8L2xpYnJhcnk+DQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvc2Nyb2xsYmFycy9vbV9oc2Nyb2xsYmFyLmx6eCBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9jb21wb25lbnRzL3Njcm9sbGJhcnMvb21faHNjcm9sbGJhci5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDM2ZmVkNgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9jb21wb25lbnRzL3Njcm9sbGJhcnMvb21faHNjcm9sbGJhci5sengKQEAgLTAsMCArMSw2MSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9Im9tX2hzY3JvbGxiYXIiIGV4dGVuZHM9ImJhc2VzY3JvbGxiYXIiIHN0eWxlYWJsZT0iZmFsc2UiCisgICAgYXhpcz0ieCI+CisKKyAgICA8IS0tLSBAa2V5d29yZHMgcHJpdmF0ZSAtLT4KKyAgICA8YXR0cmlidXRlIG5hbWU9ImhlaWdodCIgdmFsdWU9IjEwIi8+CisgICAgCisgICAgPCEtLS0gQGtleXdvcmRzIHByaXZhdGUgLS0+CisgICAgPG1ldGhvZCBuYW1lPSJfc2hvd0VuYWJsZWQiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgaWYgKCFfZW5hYmxlZCkgeworICAgICAgICAJLy90aGlzLnNjcm9sbHRyYWNrLnRodW1iLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgMCk7CisgICAgICAgICAgICB0aGlzLnNjcm9sbHRyYWNrLnRodW1iLnNldEF0dHJpYnV0ZSgndmlzaWJpbGl0eScsICdoaWRkZW4nKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuc2Nyb2xsdHJhY2sudGh1bWIuc2V0QXR0cmlidXRlKCd2aXNpYmlsaXR5JywgJ3Zpc2libGUnKTsKKyAgICAgICAgfQorICAgICAgICBzdXBlci5fc2hvd0VuYWJsZWQoKTsKKyAgICBdXT4KKyAgICA8L21ldGhvZD4KKworCTx2aWV3IG5hbWU9InJpZ2h0YXJyb3ciIHdpZHRoPSIwIiAvPgorICAgIDx2aWV3IG5hbWU9InNjcm9sbHRyYWNrIj4KKyAgICAJIDxiYXNlc2Nyb2xsdHJhY2sgbmFtZT0ibGVmdCIKKyAgICAgICAgICAgcmVzb3VyY2U9Im9tc2Nyb2xsdHJhY2tfeF9yc2MiIHN0cmV0Y2hlcz0id2lkdGgiPgorICAgICAgICAgCTxhdHRyaWJ1dGUgbmFtZT0iaGVpZ2h0IiB2YWx1ZT0iJHtwYXJlbnQuaGVpZ2h0fSIvPgorICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJ3aWR0aCIgdmFsdWU9IiR7cGFyZW50LndpZHRofSIvPiAgCisgICAgICAgICA8L2Jhc2VzY3JvbGx0cmFjaz4KKyAgICAgICAgIDxiYXNlc2Nyb2xsdGh1bWIgbmFtZT0idGh1bWIiIHg9IjEiPgorICAgICAgICAgICAgIDx2aWV3IHJlc291cmNlPSJvbXNjcm9sbGJhcl94dGh1bWJsZWZ0X3JzYyIvPgorICAgICAgICAgICAgIDx2aWV3IHJlc291cmNlPSJvbXNjcm9sbGJhcl94dGh1bWJtaWRkbGVfcnNjIiBzdHJldGNoZXM9ImJvdGgiLz4KKyAgICAgICAgICAgICA8dmlldyByZXNvdXJjZT0ib21zY3JvbGxiYXJfeHRodW1icmlnaHRfcnNjIi8+CisgICAgICAgICAgICAgPHN0YWJsZWJvcmRlcmxheW91dCBheGlzPSJ4Ii8+CisgICAgICAgIDwvYmFzZXNjcm9sbHRodW1iPgorICAgIDwvdmlldz4KKworCTx2aWV3IGhlaWdodD0iMCIgbmFtZT0ibGVmdGFycm93IiAvPgorICAgIDxzdGFibGVib3JkZXJsYXlvdXQgYXhpcz0ieCIvPgorCis8L2NsYXNzPgorPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvc2Nyb2xsYmFycy9vbV92c2Nyb2xsYmFyLmx6eCBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9jb21wb25lbnRzL3Njcm9sbGJhcnMvb21fdnNjcm9sbGJhci5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTg2MjNlZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9jb21wb25lbnRzL3Njcm9sbGJhcnMvb21fdnNjcm9sbGJhci5sengKQEAgLTAsMCArMSw2MSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworPGNsYXNzIG5hbWU9Im9tX3ZzY3JvbGxiYXIiIGV4dGVuZHM9ImJhc2VzY3JvbGxiYXIiIHN0eWxlYWJsZT0iZmFsc2UiCisgICAgYXhpcz0ieSI+CisKKyAgICA8IS0tLSBAa2V5d29yZHMgcHJpdmF0ZSAtLT4KKyAgICA8YXR0cmlidXRlIG5hbWU9IndpZHRoIiB2YWx1ZT0iMTAiLz4KKyAgICAKKyAgICA8IS0tLSBAa2V5d29yZHMgcHJpdmF0ZSAtLT4KKyAgICA8bWV0aG9kIG5hbWU9Il9zaG93RW5hYmxlZCI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICBpZiAoIV9lbmFibGVkKSB7CisgICAgICAgIAkvL3RoaXMuc2Nyb2xsdHJhY2sudGh1bWIuc2V0QXR0cmlidXRlKCdoZWlnaHQnLCAwKTsKKyAgICAgICAgICAgIHRoaXMuc2Nyb2xsdHJhY2sudGh1bWIuc2V0QXR0cmlidXRlKCd2aXNpYmlsaXR5JywgJ2hpZGRlbicpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdGhpcy5zY3JvbGx0cmFjay50aHVtYi5zZXRBdHRyaWJ1dGUoJ3Zpc2liaWxpdHknLCAndmlzaWJsZScpOworICAgICAgICB9CisgICAgICAgIHN1cGVyLl9zaG93RW5hYmxlZCgpOworICAgIF1dPgorICAgIDwvbWV0aG9kPgorCisJPHZpZXcgbmFtZT0idG9wYXJyb3ciIGhlaWdodD0iMCIgLz4KKyAgICA8dmlldyBuYW1lPSJzY3JvbGx0cmFjayI+CisgICAgCSA8YmFzZXNjcm9sbHRyYWNrIG5hbWU9InRvcCIKKyAgICAgICAgICAgcmVzb3VyY2U9Im9tc2Nyb2xsdHJhY2tfeV9yc2MiIHN0cmV0Y2hlcz0iaGVpZ2h0Ij4KKyAgICAgICAgIAk8YXR0cmlidXRlIG5hbWU9ImhlaWdodCIgdmFsdWU9IiR7cGFyZW50LmhlaWdodH0iLz4KKyAgICAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0id2lkdGgiIHZhbHVlPSIke3BhcmVudC53aWR0aH0iLz4gIAorICAgICAgICAgPC9iYXNlc2Nyb2xsdHJhY2s+CisgICAgICAgICA8YmFzZXNjcm9sbHRodW1iIG5hbWU9InRodW1iIiB4PSIxIj4KKyAgICAgICAgICAgICA8dmlldyByZXNvdXJjZT0ib21zY3JvbGxiYXJfeXRodW1idG9wX3JzYyIvPgorICAgICAgICAgICAgIDx2aWV3IHJlc291cmNlPSJvbXNjcm9sbGJhcl95dGh1bWJtaWRkbGVfcnNjIiBzdHJldGNoZXM9ImJvdGgiLz4KKyAgICAgICAgICAgICA8dmlldyByZXNvdXJjZT0ib21zY3JvbGxiYXJfeXRodW1iYm90dG9tX3JzYyIvPgorICAgICAgICAgICAgIDxzdGFibGVib3JkZXJsYXlvdXQgYXhpcz0ieSIvPgorICAgICAgICA8L2Jhc2VzY3JvbGx0aHVtYj4KKyAgICA8L3ZpZXc+CisKKwk8dmlldyBoZWlnaHQ9IjAiIG5hbWU9ImJvdHRvbWFycm93IiAvPgorICAgIDxzdGFibGVib3JkZXJsYXlvdXQgYXhpcz0ieSIvPgorCis8L2NsYXNzPgorPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvc2Nyb2xsYmFycy9yZXNvdXJjZXMvc2Nyb2xsdGh1bWJfeF9sZWZ0LnN3ZiBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9jb21wb25lbnRzL3Njcm9sbGJhcnMvcmVzb3VyY2VzL3Njcm9sbHRodW1iX3hfbGVmdC5zd2YKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQ5NDExYgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9jb21wb25lbnRzL3Njcm9sbGJhcnMvcmVzb3VyY2VzL3Njcm9sbHRodW1iX3hfbGVmdC5zd2YKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvc2Nyb2xsYmFycy9yZXNvdXJjZXMvc2Nyb2xsdGh1bWJfeF9taWQuc3dmIGIvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvc2Nyb2xsYmFycy9yZXNvdXJjZXMvc2Nyb2xsdGh1bWJfeF9taWQuc3dmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmZjM3NDQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9zY3JvbGxiYXJzL3Jlc291cmNlcy9zY3JvbGx0aHVtYl94X21pZC5zd2YKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvc2Nyb2xsYmFycy9yZXNvdXJjZXMvc2Nyb2xsdGh1bWJfeF9yaWdodC5zd2YgYi9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9zY3JvbGxiYXJzL3Jlc291cmNlcy9zY3JvbGx0aHVtYl94X3JpZ2h0LnN3ZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NGVhNjRhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvc2Nyb2xsYmFycy9yZXNvdXJjZXMvc2Nyb2xsdGh1bWJfeF9yaWdodC5zd2YKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvc2Nyb2xsYmFycy9yZXNvdXJjZXMvc2Nyb2xsdGh1bWJfeV9ib3R0b20uc3dmIGIvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvc2Nyb2xsYmFycy9yZXNvdXJjZXMvc2Nyb2xsdGh1bWJfeV9ib3R0b20uc3dmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5YTM3MGIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9zY3JvbGxiYXJzL3Jlc291cmNlcy9zY3JvbGx0aHVtYl95X2JvdHRvbS5zd2YKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvc2Nyb2xsYmFycy9yZXNvdXJjZXMvc2Nyb2xsdGh1bWJfeV9taWQuc3dmIGIvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvc2Nyb2xsYmFycy9yZXNvdXJjZXMvc2Nyb2xsdGh1bWJfeV9taWQuc3dmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFmOTAxNWYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9zY3JvbGxiYXJzL3Jlc291cmNlcy9zY3JvbGx0aHVtYl95X21pZC5zd2YKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvc2Nyb2xsYmFycy9yZXNvdXJjZXMvc2Nyb2xsdGh1bWJfeV90b3Auc3dmIGIvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvc2Nyb2xsYmFycy9yZXNvdXJjZXMvc2Nyb2xsdGh1bWJfeV90b3Auc3dmCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3MDE3NDAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9zY3JvbGxiYXJzL3Jlc291cmNlcy9zY3JvbGx0aHVtYl95X3RvcC5zd2YKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvc2Nyb2xsYmFycy9yZXNvdXJjZXMveF9zY3JvbGx0cmFjay5zd2YgYi9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9zY3JvbGxiYXJzL3Jlc291cmNlcy94X3Njcm9sbHRyYWNrLnN3ZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MzdkZDhkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvc2Nyb2xsYmFycy9yZXNvdXJjZXMveF9zY3JvbGx0cmFjay5zd2YKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvc2Nyb2xsYmFycy9yZXNvdXJjZXMveV9zY3JvbGx0cmFjay5zd2YgYi9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9zY3JvbGxiYXJzL3Jlc291cmNlcy95X3Njcm9sbHRyYWNrLnN3ZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMDViODhhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvc2Nyb2xsYmFycy9yZXNvdXJjZXMveV9zY3JvbGx0cmFjay5zd2YKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvc2Nyb2xsYmFycy9zY3JvbGxiYXJfeXJlc291cmNlcy5senggYi9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy9zY3JvbGxiYXJzL3Njcm9sbGJhcl95cmVzb3VyY2VzLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYzA4ZmZlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvc2Nyb2xsYmFycy9zY3JvbGxiYXJfeXJlc291cmNlcy5sengKQEAgLTAsMCArMSwyNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+DQorPCEtLQ0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAgDQorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICAgIAkgIA0KKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICB1bmRlciB0aGUgTGljZW5zZS4NCisgIA0KKy0tPg0KKzxsaWJyYXJ5Pg0KKw0KKw0KKyAgICANCis8L2xpYnJhcnk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvdGV4dC9ib3JkZXJlZElucHV0dGV4dC5senggYi9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy90ZXh0L2JvcmRlcmVkSW5wdXR0ZXh0Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NTE0NDllCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvdGV4dC9ib3JkZXJlZElucHV0dGV4dC5sengKQEAgLTAsMCArMSwxOTQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/Pg0KKzwhLS0NCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgIA0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAgICAJICANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAgdW5kZXIgdGhlIExpY2Vuc2UuDQorICANCistLT4NCis8bGlicmFyeT4NCisNCis8Y2xhc3MgbmFtZT0iYm9yZGVyZWRJbnB1dHRleHQiIGV4dGVuZHM9InZpZXciIGJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignYmFzZWJnY29sb3JpemVyJykgfSIgPg0KKwk8YXR0cmlidXRlIG5hbWU9IndpZHRoIiB2YWx1ZT0iMjAwIiB0eXBlPSJzaXplIiAvPg0KKwk8YXR0cmlidXRlIG5hbWU9ImhlaWdodCIgdmFsdWU9IjE4IiB0eXBlPSJzaXplIiAvPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9InR2YWx1ZSIgdHlwZT0ic3RyaW5nIiB2YWx1ZT0iZGVmYXVsdCIvPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9InNlbmRjaGFuZ2UiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4NCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJtdWx0aWxpbmUiIHZhbHVlPSJmYWxzZSIvPg0KKwk8YXR0cmlidXRlIG5hbWU9ImxhYmVsaWQiIHR5cGU9Im51bWJlciIgc2V0dGVyPSJzZXRMYWJlbElkKGxhYmVsaWQpIiAvPg0KKwk8bWV0aG9kIG5hbWU9InNldExhYmVsSWQiIGFyZ3M9Il9sYWJlbGlkIiA+DQorCQl0aGlzLmxhYmVsaWQgPSBfbGFiZWxpZDsNCisJCXRoaXMuc2V0QXR0cmlidXRlKCd0ZXh0JyxjYW52YXMuZ2V0TGFiZWxOYW1lKHRoaXMubGFiZWxpZCkpOw0KKwk8L21ldGhvZD4NCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJjaGVja0lzTnVtYmVyIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0iY2hlY2tJc0RvdWJsZSIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9ImVkaXRhYmxlIiB2YWx1ZT0idHJ1ZSIgc2V0dGVyPSJzZXRFZGl0YWJsZShlZGl0YWJsZSkiIHR5cGU9ImJvb2xlYW4iIC8+DQorICAgIDxtZXRob2QgbmFtZT0ic2V0RWRpdGFibGUiIGFyZ3M9InZhbHVlIj4NCisgICAgICAgIHRoaXMuZWRpdGFibGU9dmFsdWU7DQorICAgIAl0aGlzLmZpZWxkLnNldEVuYWJsZWQodmFsdWUpOw0KKyAgICA8L21ldGhvZD4NCisgICAgPGV2ZW50IG5hbWU9Im9uYmx1ciIgLz4NCisgICAgPG1ldGhvZCBuYW1lPSJzZXRJdGVtRW5hYmxlZCIgYXJncz0idmFsdWUiPg0KKyAgICAJdGhpcy5maWVsZC5zZXRFbmFibGVkKHZhbHVlKTsNCisgICAgPC9tZXRob2Q+ICAgIA0KKyAgICA8YXR0cmlidXRlIG5hbWU9Im1heGxlbmd0aCIgdmFsdWU9Im51bGwiIHR5cGU9Im51bWJlciIvPiAgICAgICAgIAkNCisJPGF0dHJpYnV0ZSBuYW1lPSJ0ZXh0IiB0eXBlPSJzdHJpbmciIHZhbHVlPSIiIC8+DQorCQk8IS0tIC0tPg0KKyAgPGlucHV0dGV4dCBuYW1lPSJmaWVsZCIgZm9udHNpemU9IjEwIiB0ZXh0PSIkeyB0aGlzLnBhcmVudC50ZXh0IH0iIHg9IjEiIHk9IjEiIGJnY29sb3I9IjB4RkZGRkZGIiANCisgIAltdWx0aWxpbmU9IiRvbmNle3BhcmVudC5tdWx0aWxpbmV9IiB3aWR0aD0iJHsgdGhpcy5wYXJlbnQud2lkdGgtMiB9IiBoZWlnaHQ9IiR7IHRoaXMucGFyZW50LmhlaWdodC0yIH0iID4NCisgIAkJPGF0dHJpYnV0ZSBuYW1lPSJwcmVUZXh0IiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+DQorICAJCTxoYW5kbGVyIG5hbWU9Im9uZm9jdXMiPg0KKyAgCQkJdGhpcy5wcmVUZXh0ID0gdGhpcy5nZXRUZXh0KCk7DQorICAJCTwvaGFuZGxlcj4NCisgICAgICAJPGhhbmRsZXIgbmFtZT0ib25ibHVyIj4NCisgICAgICAJCXZhciB0ID0gdGhpcy5nZXRUZXh0KCk7DQorICAgICAgCQlpZiAodGhpcy5wYXJlbnQuY2hlY2tJc051bWJlcil7DQorICAgICAgCQkJaWYgKCBpc05hTiggTnVtYmVyKHQpICkgKXsNCisgICAgICAJCQkJaWYgKHRoaXMucGFyZW50LmNoZWNrSXNEb3VibGUpew0KKyAgICAgIAkJCQkJdD0iMC4wMCI7DQorICAgICAgCQkJCX0gZWxzZSB7DQorICAgICAgCQkJCQl0PXRoaXMucHJlVGV4dDsNCisgICAgICAJCQkJfQ0KKyAgICAgIAkJCQl0aGlzLnNldEF0dHJpYnV0ZSgndGV4dCcsdCk7DQorICAgICAgCQkJfQ0KKyAgICAgIAkJfQ0KKyAgICAgICAgICAgIGlmICh0aGlzLnBhcmVudC5zZW5kY2hhbmdlKSB0aGlzLnBhcmVudC5wYXJlbnQuc2VuZGNoYW5nZSh0aGlzLnBhcmVudCx0aGlzLnBhcmVudC50dmFsdWUsdGhpcy5nZXRUZXh0KCkpOw0KKyAgICAgICAgICAgIGlmICh0aGlzLnBhcmVudC5vbmJsdXIpIHRoaXMucGFyZW50Lm9uYmx1ci5zZW5kRXZlbnQoKTsNCisgICAgICAJPC9oYW5kbGVyPg0KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4NCisgICAgICAgICAgICB0aGlzLnNldEVuYWJsZWQodGhpcy5wYXJlbnQuZWRpdGFibGUpOw0KKyAgICAgICAgPC9oYW5kbGVyPiAgICAgICAJICAgICAgICAgICANCisJPC9pbnB1dHRleHQ+CSAgIA0KKwkgDQorCTxtZXRob2QgbmFtZT0iZ2V0VGV4dCI+DQorCQlyZXR1cm4gdGhpcy5maWVsZC5nZXRUZXh0KCk7DQorCTwvbWV0aG9kPg0KKwk8bWV0aG9kIG5hbWU9InNldFRleHQiIGFyZ3M9InR4dCI+DQorCQl0aGlzLnNldEF0dHJpYnV0ZSgndGV4dCcsdHh0KTsNCisJPC9tZXRob2Q+IAkJDQorPC9jbGFzcz4NCisNCis8Y2xhc3MgbmFtZT0iYm9yZGVyZWRNdWx0aUlucHV0dGV4dCIgZXh0ZW5kcz0idmlldyI+DQorCTxhdHRyaWJ1dGUgbmFtZT0id2lkdGgiIHZhbHVlPSIyMDAiIHR5cGU9InNpemUiIC8+DQorCTxhdHRyaWJ1dGUgbmFtZT0iaGVpZ2h0IiB2YWx1ZT0iMTgiIHR5cGU9InNpemUiIC8+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0idHZhbHVlIiB0eXBlPSJzdHJpbmciIHZhbHVlPSJkZWZhdWx0Ii8+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0ic2VuZGNoYW5nZSIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9Im11bHRpbGluZSIgdmFsdWU9ImZhbHNlIi8+DQorCTxhdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZCIgdHlwZT0ibnVtYmVyIiBzZXR0ZXI9InNldExhYmVsSWQobGFiZWxpZCkiIC8+DQorCTxtZXRob2QgbmFtZT0ic2V0TGFiZWxJZCIgYXJncz0iX2xhYmVsaWQiID4NCisJCXRoaXMubGFiZWxpZCA9IF9sYWJlbGlkOw0KKwkJdGhpcy5zZXRBdHRyaWJ1dGUoJ3RleHQnLGNhbnZhcy5nZXRMYWJlbE5hbWUodGhpcy5sYWJlbGlkKSk7DQorCTwvbWV0aG9kPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9ImNoZWNrSXNOdW1iZXIiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4NCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJjaGVja0lzRG91YmxlIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0iZWRpdGFibGUiIHZhbHVlPSJ0cnVlIiBzZXR0ZXI9InNldEVkaXRhYmxlKGVkaXRhYmxlKSIgdHlwZT0iYm9vbGVhbiIgLz4NCisgICAgPG1ldGhvZCBuYW1lPSJzZXRFZGl0YWJsZSIgYXJncz0idmFsdWUiPg0KKyAgICAgICAgdGhpcy5lZGl0YWJsZT12YWx1ZTsNCisgICAgCXRoaXMuZmllbGQuc2V0RW5hYmxlZCh2YWx1ZSk7DQorICAgIDwvbWV0aG9kPg0KKyAgICA8bWV0aG9kIG5hbWU9InNldEl0ZW1FbmFibGVkIiBhcmdzPSJ2YWx1ZSI+DQorICAgIAl0aGlzLmZpZWxkLnNldEVuYWJsZWQodmFsdWUpOw0KKyAgICA8L21ldGhvZD4gICAgDQorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibWF4bGVuZ3RoIiB2YWx1ZT0ibnVsbCIgdHlwZT0ibnVtYmVyIi8+ICAgICAgICAgCQ0KKwk8YXR0cmlidXRlIG5hbWU9ImJnY29sb3IiIHZhbHVlPSIweEEzQjJDQyIgdHlwZT0iY29sb3IiIC8+DQorCTxhdHRyaWJ1dGUgbmFtZT0idGV4dCIgdHlwZT0ic3RyaW5nIiB2YWx1ZT0iIiAvPg0KKwkJPCEtLSAtLT4NCisgIDxpbnB1dHRleHQgbmFtZT0iZmllbGQiIGZvbnRzaXplPSIxMCIgdGV4dD0iJHsgdGhpcy5wYXJlbnQudGV4dCB9IiB4PSIxIiB5PSIxIiBiZ2NvbG9yPSIweEZGRkZGRiIgDQorICAJbXVsdGlsaW5lPSJ0cnVlIiB3aWR0aD0iJHsgdGhpcy5wYXJlbnQud2lkdGgtMiB9IiBoZWlnaHQ9IiR7IHRoaXMucGFyZW50LmhlaWdodC0yIH0iID4NCisgICAgICAJPGhhbmRsZXIgbmFtZT0ib25ibHVyIj4NCisgICAgICAJCXZhciB0ID0gdGhpcy5nZXRUZXh0KCk7DQorICAgICAgCQlpZiAodGhpcy5wYXJlbnQuY2hlY2tJc051bWJlcil7DQorICAgICAgCQkJaWYgKCBpc05hTiggTnVtYmVyKHQpICkgKXsNCisgICAgICAJCQkJaWYgKHRoaXMucGFyZW50LmNoZWNrSXNEb3VibGUpew0KKyAgICAgIAkJCQkJdD0iMC4wMCI7DQorICAgICAgCQkJCX0gZWxzZSB7DQorICAgICAgCQkJCQl0PSIwIjsNCisgICAgICAJCQkJfQ0KKyAgICAgIAkJCQl0aGlzLnNldEF0dHJpYnV0ZSgndGV4dCcsdCk7DQorICAgICAgCQkJfQ0KKyAgICAgIAkJfQ0KKyAgICAgICAgICAgIGlmICh0aGlzLnBhcmVudC5zZW5kY2hhbmdlKSB0aGlzLnBhcmVudC5wYXJlbnQuc2VuZGNoYW5nZSh0aGlzLnBhcmVudCx0aGlzLnBhcmVudC50dmFsdWUsdGhpcy5nZXRUZXh0KCkpOw0KKyAgICAgIAk8L2hhbmRsZXI+ICAgDQorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPg0KKyAgICAgICAgICAgIHRoaXMuc2V0RW5hYmxlZCh0aGlzLnBhcmVudC5lZGl0YWJsZSk7DQorICAgICAgICAgICAgaWYodGhpcy5tdWx0aWxpbmUpIHRoaXMuaW5pdCgpOw0KKyAgICAgICAgPC9oYW5kbGVyPiAgICAgICAJICAgICAgICAgICANCisgICAgICAgIDxtZXRob2QgbmFtZT0iaW5pdCI+DQorICAgICAgICAgICAgc3VwZXIuaW5pdCgpOyAgICAgICAgDQorICAgICAgICA8L21ldGhvZD4NCisJPC9pbnB1dHRleHQ+CSAgIA0KKwkgDQorCTxtZXRob2QgbmFtZT0iZ2V0VGV4dCI+DQorCQlyZXR1cm4gdGhpcy5maWVsZC5nZXRUZXh0KCk7DQorCTwvbWV0aG9kPg0KKwk8bWV0aG9kIG5hbWU9InNldFRleHQiIGFyZ3M9InR4dCI+DQorCQl0aGlzLnNldEF0dHJpYnV0ZSgndGV4dCcsdHh0KTsNCisJPC9tZXRob2Q+IAkJDQorPC9jbGFzcz4NCisNCis8Y2xhc3MgbmFtZT0iYm9yZGVyZWRQYXNzd29yZFRleHQiIGV4dGVuZHM9InZpZXciPg0KKwk8YXR0cmlidXRlIG5hbWU9IndpZHRoIiB2YWx1ZT0iMjAwIiB0eXBlPSJzaXplIiAvPg0KKwk8YXR0cmlidXRlIG5hbWU9ImhlaWdodCIgdmFsdWU9IjE4IiB0eXBlPSJzaXplIiAvPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9InR2YWx1ZSIgdHlwZT0ic3RyaW5nIiB2YWx1ZT0iZGVmYXVsdCIvPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9InNlbmRjaGFuZ2UiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4NCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJtdWx0aWxpbmUiIHZhbHVlPSJmYWxzZSIvPg0KKwk8YXR0cmlidXRlIG5hbWU9ImxhYmVsaWQiIHR5cGU9Im51bWJlciIgc2V0dGVyPSJzZXRMYWJlbElkKGxhYmVsaWQpIiAvPg0KKwk8bWV0aG9kIG5hbWU9InNldExhYmVsSWQiIGFyZ3M9Il9sYWJlbGlkIiA+DQorCQl0aGlzLmxhYmVsaWQgPSBfbGFiZWxpZDsNCisJCXRoaXMuc2V0QXR0cmlidXRlKCd0ZXh0JyxjYW52YXMuZ2V0TGFiZWxOYW1lKHRoaXMubGFiZWxpZCkpOw0KKwk8L21ldGhvZD4NCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJjaGVja0lzTnVtYmVyIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0iY2hlY2tJc0RvdWJsZSIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9ImVkaXRhYmxlIiB2YWx1ZT0idHJ1ZSIgc2V0dGVyPSJzZXRFZGl0YWJsZShlZGl0YWJsZSkiIHR5cGU9ImJvb2xlYW4iIC8+DQorICAgIDxtZXRob2QgbmFtZT0ic2V0RWRpdGFibGUiIGFyZ3M9InZhbHVlIj4NCisgICAgICAgIHRoaXMuZWRpdGFibGU9dmFsdWU7DQorICAgIAl0aGlzLmZpZWxkLnNldEVuYWJsZWQodmFsdWUpOw0KKyAgICA8L21ldGhvZD4NCisgICAgPG1ldGhvZCBuYW1lPSJzZXRJdGVtRW5hYmxlZCIgYXJncz0idmFsdWUiPg0KKyAgICAJdGhpcy5maWVsZC5zZXRFbmFibGVkKHZhbHVlKTsNCisgICAgPC9tZXRob2Q+ICAgIA0KKyAgICA8YXR0cmlidXRlIG5hbWU9Im1heGxlbmd0aCIgdmFsdWU9Im51bGwiIHR5cGU9Im51bWJlciIvPiAgICAgICAgIAkNCisJPGF0dHJpYnV0ZSBuYW1lPSJiZ2NvbG9yIiB2YWx1ZT0iMHhBM0IyQ0MiIHR5cGU9ImNvbG9yIiAvPg0KKwk8YXR0cmlidXRlIG5hbWU9InRleHQiIHR5cGU9InN0cmluZyIgdmFsdWU9IiIgLz4NCisJCTwhLS0gLS0+DQorICA8aW5wdXR0ZXh0IG5hbWU9ImZpZWxkIiBmb250c2l6ZT0iMTAiIHRleHQ9IiR7IHRoaXMucGFyZW50LnRleHQgfSIgeD0iMSIgeT0iMSIgYmdjb2xvcj0iMHhGRkZGRkYiIA0KKyAgCW11bHRpbGluZT0iJG9uY2V7cGFyZW50Lm11bHRpbGluZX0iIHBhc3N3b3JkPSJ0cnVlIiB3aWR0aD0iJHsgdGhpcy5wYXJlbnQud2lkdGgtMiB9IiBoZWlnaHQ9IiR7IHRoaXMucGFyZW50LmhlaWdodC0yIH0iID4NCisgICAgICAJPGhhbmRsZXIgbmFtZT0ib25ibHVyIj4NCisgICAgICAJCXZhciB0ID0gdGhpcy5nZXRUZXh0KCk7DQorICAgICAgCQlpZiAodGhpcy5wYXJlbnQuY2hlY2tJc051bWJlcil7DQorICAgICAgCQkJaWYgKCBpc05hTiggTnVtYmVyKHQpICkgKXsNCisgICAgICAJCQkJaWYgKHRoaXMucGFyZW50LmNoZWNrSXNEb3VibGUpew0KKyAgICAgIAkJCQkJdD0iMC4wMCI7DQorICAgICAgCQkJCX0gZWxzZSB7DQorICAgICAgCQkJCQl0PSIwIjsNCisgICAgICAJCQkJfQ0KKyAgICAgIAkJCQl0aGlzLnNldEF0dHJpYnV0ZSgndGV4dCcsdCk7DQorICAgICAgCQkJfQ0KKyAgICAgIAkJfQ0KKyAgICAgICAgICAgIGlmICh0aGlzLnBhcmVudC5zZW5kY2hhbmdlKSB0aGlzLnBhcmVudC5wYXJlbnQuc2VuZGNoYW5nZSh0aGlzLnBhcmVudCx0aGlzLnBhcmVudC50dmFsdWUsdGhpcy5nZXRUZXh0KCkpOw0KKyAgICAgIAk8L2hhbmRsZXI+ICAgDQorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPg0KKyAgICAgICAgICAgIHRoaXMuc2V0RW5hYmxlZCh0aGlzLnBhcmVudC5lZGl0YWJsZSk7DQorICAgICAgICA8L2hhbmRsZXI+ICAgICAgIAkgICAgICAgICAgIA0KKwk8L2lucHV0dGV4dD4JICAgDQorCSANCisJPG1ldGhvZCBuYW1lPSJnZXRUZXh0Ij4NCisJCXJldHVybiB0aGlzLmZpZWxkLmdldFRleHQoKTsNCisJPC9tZXRob2Q+DQorCTxtZXRob2QgbmFtZT0ic2V0VGV4dCIgYXJncz0idHh0Ij4NCisJCXRoaXMuc2V0QXR0cmlidXRlKCd0ZXh0Jyx0eHQpOw0KKwk8L21ldGhvZD4gCQkNCis8L2NsYXNzPg0KKw0KKzwvbGlicmFyeT4NCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy90ZXh0L2xhYmVsVGV4dC5senggYi9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy90ZXh0L2xhYmVsVGV4dC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzVmOTYxYwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9jb21wb25lbnRzL3RleHQvbGFiZWxUZXh0Lmx6eApAQCAtMCwwICsxLDU5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPGxpYnJhcnk+DQorDQorPGNsYXNzIG5hbWU9ImxhYmVsVGV4dCIgZXh0ZW5kcz0idGV4dCIgcmVzaXplPSJ0cnVlIiBmb250c2l6ZT0iMTEiID4NCisNCisJPGF0dHJpYnV0ZSBuYW1lPSJsYWJlbGlkIiB0eXBlPSJudW1iZXIiIHNldHRlcj0ic2V0TGFiZWxJZChsYWJlbGlkKSIgLz4NCisJPG1ldGhvZCBuYW1lPSJzZXRMYWJlbElkIiBhcmdzPSJfbGFiZWxpZCIgPg0KKwkJdGhpcy5sYWJlbGlkID0gX2xhYmVsaWQ7DQorCQl0aGlzLnNldEF0dHJpYnV0ZSgndGV4dCcsY2FudmFzLmdldExhYmVsTmFtZSh0aGlzLmxhYmVsaWQpKTsNCisJPC9tZXRob2Q+DQorCQ0KKzwvY2xhc3M+DQorDQorDQorPGNsYXNzIG5hbWU9ImxhYmVsVGV4dFdpZHRoVG9vbHRpcCIgZXh0ZW5kcz0idGV4dCIgcmVzaXplPSJ0cnVlIiANCisJICAgb25tb3VzZW92ZXI9IiIgb25tb3VzZW91dD0iIg0KKwkgICBmb250c2l6ZT0iMTEiID4NCisJDQorCTxhdHRyaWJ1dGUgbmFtZT0ibGFiZWxMYWJlbGlkIiB0eXBlPSJudW1iZXIiIHZhbHVlPSItMSIgLz4NCisNCisJPGF0dHJpYnV0ZSBuYW1lPSJsYWJlbGlkIiB0eXBlPSJudW1iZXIiIHNldHRlcj0ic2V0TGFiZWxJZChsYWJlbGlkKSIgLz4NCisJPG1ldGhvZCBuYW1lPSJzZXRMYWJlbElkIiBhcmdzPSJfbGFiZWxpZCIgPg0KKwkJdGhpcy5sYWJlbGlkID0gX2xhYmVsaWQ7DQorCQl0aGlzLnNldEF0dHJpYnV0ZSgndGV4dCcsY2FudmFzLmdldExhYmVsTmFtZSh0aGlzLmxhYmVsaWQpKTsNCisJPC9tZXRob2Q+DQorCQ0KKwk8bGFiZWxUb29sdGlwIG5hbWU9Il9sYWJlbFRvb2x0aXAiIGxhYmVsaWQ9IiRvbmNleyBwYXJlbnQubGFiZWxMYWJlbGlkIH0iIC8+DQorCQ0KKzwvY2xhc3M+DQorDQorPGNsYXNzIG5hbWU9ImxhYmVsZFRleHRMaXN0SXRlbSIgZXh0ZW5kcz0idGV4dGxpc3RpdGVtIj4NCisJPGF0dHJpYnV0ZSBuYW1lPSJsYWJlbGlkIiB0eXBlPSJudW1iZXIiIHNldHRlcj0ic2V0TGFiZWxJZChsYWJlbGlkKSIgLz4NCisgICAgPG1ldGhvZCBuYW1lPSJzZXRMYWJlbElkIiBhcmdzPSJfbGFiZWxpZCIgPg0KKyAgICAgICAgdGhpcy5sYWJlbGlkID0gX2xhYmVsaWQ7DQorICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgndGV4dCcsY2FudmFzLmdldExhYmVsTmFtZSh0aGlzLmxhYmVsaWQpKTsNCisgICAgPC9tZXRob2Q+DQorICAgIDxsYWJlbFRvb2x0aXAgaW5pdEJ5RGF0YVBhdGhwYXJlbnQ9InRydWUiIC8+DQorPC9jbGFzcz4NCisNCis8L2xpYnJhcnk+DQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvdGV4dC9sYWJlbFRvb2x0aXAubHp4IGIvV2ViQ29udGVudC9zd2YxMC9iYXNlL2NvbXBvbmVudHMvdGV4dC9sYWJlbFRvb2x0aXAubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0MmViM2MKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy90ZXh0L2xhYmVsVG9vbHRpcC5sengKQEAgLTAsMCArMSwxNjIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/Pg0KKzwhLS0NCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgIA0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAgICAJICANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAgdW5kZXIgdGhlIExpY2Vuc2UuDQorICANCistLT4NCis8bGlicmFyeT4NCisNCis8Y2xhc3MgbmFtZT0ibGFiZWxUb29sdGlwIiBleHRlbmRzPSJ2aWV3IiB2aXNpYmxlPSJmYWxzZSIgPg0KKw0KKwk8YXR0cmlidXRlIG5hbWU9ImluaXR0d2ljZSIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9Im11bHRpbGluZSIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9ImlzbWVudWJ1dHRvbmxhYmVsIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0iaW5pdEJ5RGF0YVBhdGhwYXJlbnQiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4NCisgICAgDQorICAgIDxhdHRyaWJ1dGUgbmFtZT0iaG9sZGVyIiB2YWx1ZT0ibnVsbCIgLz4NCisgICAgDQorICAgIDxldmVudCBuYW1lPSJzZXRDb250ZW50IiAvPg0KKyAgICAgICAgDQorICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdmVyIiByZWZlcmVuY2U9InRoaXMucGFyZW50Ij4NCisgICAgCTwhW0NEQVRBWw0KKyAgICAgICAgICAgIHRoaXMuZG9vbm1vdXNlb3ZlcigpOw0KKyAgICAgICAgXV0+ICAgICAgICANCisgICAgPC9oYW5kbGVyPg0KKyAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3V0IiByZWZlcmVuY2U9InRoaXMucGFyZW50Ij4NCisgICAgICAgIHRoaXMuY2xlYW5Ib2xkZXIoKTsNCisgICAgPC9oYW5kbGVyPg0KKyAgICANCisgICAgPG1ldGhvZCBuYW1lPSJkb29ubW91c2VvdmVyIj4NCisgICAgCTwhW0NEQVRBWw0KKyAgICAgICAgICAgIHRoaXMuc2V0Q29udGVudC5zZW5kRXZlbnQoKTsNCisJICAgIAlpZiAodGhpcy5pc21lbnVidXR0b25sYWJlbCl7DQorCSAgICAJCXRoaXMucGFyZW50LnNldExhYmVsKCk7DQorCSAgICAJfQ0KKwkgICAgCWlmICh0aGlzLmluaXR0d2ljZSl7DQorCSAgICAJCXRoaXMuc2V0QXR0cmlidXRlKCd0ZXh0JyxjYW52YXMuZ2V0TGFiZWxOYW1lKHRoaXMubGFiZWxpZCkpOw0KKwkgICAgCX0NCisJICAgIAlpZiAodGhpcy5pbml0QnlEYXRhUGF0aHBhcmVudCl7DQorICAgICAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCd0ZXh0JyxwYXJlbnQudGV4dCk7DQorICAgICAgICAgICAgfQ0KKwkgICAgICAgIHZhciB4VmFsID0gY2FudmFzLmdldE1vdXNlKCd4Jyk7DQorCSAgICAgICAgdmFyIHlWYWwgPSBjYW52YXMuZ2V0TW91c2UoJ3knKTsNCisJCQkvLy8vRGVidWcud3JpdGUoIm15dGV4dDogIix0aGlzLm15dGV4dCk7DQorCQkJaWYgKHRoaXMubXVsdGlsaW5lICYmIHRoaXMudGV4dC5sZW5ndGghPTApew0KKwkJCQl0aGlzLmhvbGRlciA9IG5ldyBsei54bWxDcm1Ub29sdGlwTXVsdGkoY2FudmFzLHt0ZXh0OnRoaXMudGV4dCxob2xkZXI6dGhpc30pOw0KKwkJCX0gZWxzZSBpZiAodGhpcy50ZXh0Lmxlbmd0aCE9MCl7DQorCQkJCXRoaXMuaG9sZGVyID0gbmV3IGx6LnhtbENybVRvb2x0aXAoY2FudmFzLHt0ZXh0OnRoaXMudGV4dCxob2xkZXI6dGhpc30pOw0KKwkJCX0NCisJICAgICAgICBpZiAoeFZhbDxjYW52YXMud2lkdGgvMil7DQorCSAgICAgICAgICAgIHhWYWwgKz0gMDsNCisJICAgICAgICB9IGVsc2Ugew0KKwkgICAgICAgICAgICB4VmFsIC09IHRoaXMuaG9sZGVyLndpZHRoLTE0Ow0KKwkgICAgICAgIH0NCisJICAgICAgICBpZiAoeVZhbDxjYW52YXMuaGVpZ2h0LzIpew0KKwkgICAgICAgICAgICB5VmFsICs9IDI0Ow0KKwkgICAgICAgIH0gZWxzZSB7DQorCSAgICAgICAgICAgIHlWYWwgLT0gMjQ7DQorCSAgICAgICAgfQ0KKwkgICAgICAgIHRoaXMuaG9sZGVyLnNldEF0dHJpYnV0ZSgneCcseFZhbCk7DQorCSAgICAgICAgdGhpcy5ob2xkZXIuc2V0QXR0cmlidXRlKCd5Jyx5VmFsKTsNCisJICAgICAgICBjYW52YXMucmVnaXN0ZXJUb29sVGlwKHRoaXMpOw0KKyAgICAgICAgXV0+ICAgICAgICANCisgICAgPC9tZXRob2Q+DQorICAgIA0KKyAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNldXAiIHJlZmVyZW5jZT0idGhpcy5wYXJlbnQiPg0KKyAgICAgICAgdGhpcy5jbGVhbkhvbGRlcigpOw0KKyAgICA8L2hhbmRsZXI+DQorICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siIHJlZmVyZW5jZT0idGhpcy5wYXJlbnQiPg0KKyAgICAgICAgdGhpcy5jbGVhbkhvbGRlcigpOw0KKyAgICA8L2hhbmRsZXI+ICANCisgICAgDQorICAgIDxtZXRob2QgbmFtZT0iY2xlYW5Ib2xkZXIiPg0KKyAgICAgICAgaWYgKHRoaXMuaG9sZGVyIT1udWxsKSB7DQorICAgICAgICAgICAgdGhpcy5ob2xkZXIuZGVzdHJveSgpOw0KKyAgICAgICAgICAgIHRoaXMuaG9sZGVyID0gbnVsbDsgDQorICAgICAgICAgICAgY2FudmFzLmNsZWFyVG9vbFRpcCgpOw0KKyAgICAgICAgfQ0KKyAgICA8L21ldGhvZD4gDQorICAgICAgDQorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZCIgdHlwZT0ibnVtYmVyIiBzZXR0ZXI9InNldExhYmVsSWQobGFiZWxpZCkiIC8+DQorICAgIDxtZXRob2QgbmFtZT0ic2V0TGFiZWxJZCIgYXJncz0iX2xhYmVsaWQiID4NCisgICAgICAgIHRoaXMubGFiZWxpZCA9IF9sYWJlbGlkOw0KKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ3RleHQnLGNhbnZhcy5nZXRMYWJlbE5hbWUodGhpcy5sYWJlbGlkKSk7DQorICAgIDwvbWV0aG9kPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9InRleHQiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4NCis8L2NsYXNzPg0KKw0KKzxjbGFzcyBuYW1lPSJ4bWxDcm1Ub29sdGlwIiBleHRlbmRzPSJ2aWV3IiBiZ2NvbG9yPSIweDAwMDAwMCINCisgICAgd2lkdGg9IiR7IHRoaXMuX3RleHQud2lkdGgrMiB9IiBoZWlnaHQ9IiR7IHRoaXMuX3RleHQuaGVpZ2h0KzIgfSIgPg0KKyAgICA8c3dpdGNoPg0KKwkgIDx3aGVuIHByb3BlcnR5PSIkYXMzIj4NCisJCTxwYXNzdGhyb3VnaD4NCisJCSAgaW1wb3J0IGZsYXNoLmZpbHRlcnMuRHJvcFNoYWRvd0ZpbHRlcjsNCisJCTwvcGFzc3Rocm91Z2g+DQorCSAgPC93aGVuPg0KKwk8L3N3aXRjaD4NCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJ0ZXh0IiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0iaG9sZGVyIiB2YWx1ZT0ibnVsbCIgLz4NCisgICAgPHRleHQgeD0iMSIgeT0iMSIgdGV4dD0iJHsgcGFyZW50LnRleHQgfSIgcmVzaXplPSJ0cnVlIiANCisgICAgICAgIGZvbnRzaXplPSIxMCIgbmFtZT0iX3RleHQiIGJnY29sb3I9IjB4RkZGRkZGIiAvPg0KKyAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3V0Ij4NCisgICAgICAgIHRoaXMuZGVzdHJveSgpOw0KKyAgICA8L2hhbmRsZXI+DQorICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+DQorICAgICAgICB0aGlzLnNldFNoYWRvdygpOw0KKyAgICA8L2hhbmRsZXI+DQorICAgIDxtZXRob2QgbmFtZT0ic2V0U2hhZG93IiA+DQorICAgICAgICA8IVtDREFUQVsNCisgICAgICAgIGlmICh0aGlzLmlzaW5pdGVkKXsNCisgICAgICAgICAgICB0aGlzLm5vcm1hbE1DID0gdGhpcy5nZXREaXNwbGF5T2JqZWN0KCk7DQorICAgICAgICAgICAJdGhpcy5kaXNwbGFjZW1lbnRNYXAgPSBuZXcgRHJvcFNoYWRvd0ZpbHRlcigpOw0KKyAgICAgICAgICAgIHRoaXMubm9ybWFsTUMuZmlsdGVycyA9IFt0aGlzLmRpc3BsYWNlbWVudE1hcF07DQorICAgICAgICB9DQorICAgICAgICBdXT4gICAgICAgICAgICAgIA0KKyAgICA8L21ldGhvZD4gDQorPC9jbGFzcz4NCisNCis8Y2xhc3MgbmFtZT0ieG1sQ3JtVG9vbHRpcE11bHRpIiBleHRlbmRzPSJ2aWV3IiBiZ2NvbG9yPSIweDAwMDAwMCIgDQorICAgIHdpZHRoPSIkeyB0aGlzLl90ZXh0LndpZHRoKzIgfSIgaGVpZ2h0PSIkeyB0aGlzLl90ZXh0LmhlaWdodCsyIH0iID4NCisgICAgPHN3aXRjaD4NCisJICA8d2hlbiBwcm9wZXJ0eT0iJGFzMyI+DQorCQk8cGFzc3Rocm91Z2g+DQorCQkgIGltcG9ydCBmbGFzaC5maWx0ZXJzLkRyb3BTaGFkb3dGaWx0ZXI7DQorCQk8L3Bhc3N0aHJvdWdoPg0KKwkgIDwvd2hlbj4NCisJPC9zd2l0Y2g+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0idGV4dCIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9ImhvbGRlciIgdmFsdWU9Im51bGwiIC8+DQorICAgIDx0ZXh0IHg9IjEiIHk9IjEiIHRleHQ9IiR7IHBhcmVudC50ZXh0IH0iIHJlc2l6ZT0idHJ1ZSIgDQorICAgICAgICBmb250c2l6ZT0iMTAiIG5hbWU9Il90ZXh0IiBiZ2NvbG9yPSIweEZGRkZGRiIgbXVsdGlsaW5lPSJ0cnVlIiAvPg0KKyAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPg0KKyAgICAgICAgdGhpcy5zZXRTaGFkb3coKTsNCisgICAgPC9oYW5kbGVyPg0KKyAgICA8bWV0aG9kIG5hbWU9InNldFNoYWRvdyIgPg0KKyAgICAgICAgPCFbQ0RBVEFbDQorICAgICAgICBpZiAodGhpcy5pc2luaXRlZCl7DQorICAgICAgICAgICAgdGhpcy5ub3JtYWxNQyA9IHRoaXMuZ2V0RGlzcGxheU9iamVjdCgpOw0KKyAgICAgICAgICAgCXRoaXMuZGlzcGxhY2VtZW50TWFwID0gbmV3IERyb3BTaGFkb3dGaWx0ZXIoKTsNCisgICAgICAgICAgICB0aGlzLm5vcm1hbE1DLmZpbHRlcnMgPSBbdGhpcy5kaXNwbGFjZW1lbnRNYXBdOw0KKyAgICAgICAgfQ0KKyAgICAgICAgXV0+ICAgICAgICAgICAgICANCisgICAgPC9tZXRob2Q+CSAgICANCisgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZW91dCI+DQorICAgICAgICB0aGlzLmRlc3Ryb3koKTsNCisgICAgPC9oYW5kbGVyPg0KKzwvY2xhc3M+DQorDQorPC9saWJyYXJ5Pg0KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9jb21wb25lbnRzL3RleHQvbGlicmFyeS5senggYi9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy90ZXh0L2xpYnJhcnkubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2MmE3MzYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvY29tcG9uZW50cy90ZXh0L2xpYnJhcnkubHp4CkBAIC0wLDAgKzEsMjggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/Pg0KKzwhLS0NCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgIA0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAgICAJICANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAgdW5kZXIgdGhlIExpY2Vuc2UuDQorICANCistLT4NCis8bGlicmFyeT4NCisJDQorCTxpbmNsdWRlIGhyZWY9ImJvcmRlcmVkSW5wdXR0ZXh0Lmx6eCIgLz4NCisJPGluY2x1ZGUgaHJlZj0ibGFiZWxUZXh0Lmx6eCIgLz4NCisJPGluY2x1ZGUgaHJlZj0ibGFiZWxUb29sdGlwLmx6eCIgLz4NCisJDQorDQorPC9saWJyYXJ5Pg0KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9mdW5jdGlvbnMubHp4IGIvV2ViQ29udGVudC9zd2YxMC9iYXNlL2Z1bmN0aW9ucy5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTRkZmZkNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9mdW5jdGlvbnMubHp4CkBAIC0wLDAgKzEsNjIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGxpYnJhcnk+CisKKworPCEtLSAKKworTk9USUNFOgorQWxsIGNvbnRlbnRzIHJlZ2FyZGluZyAiY2hhdCIgYXJlIG1vdmVkIHRvIC9tb2R1bGVzL2NoYXQvZ2xvYmFsTWV0aG9kcy5sengKK0lzc3VlMzUzLiAyMDA4LjMuMjggSC5rdXplKG1pbmFtb3Rvbm9hc29uKQorCistLT4KKworCis8c2NyaXB0PgorPCFbQ0RBVEFbCisKKy8vIExvYWQgTGFiZWxzIGZyb20gTGlzdAordmFyIGxhYmVscyA9IG5ldyBPYmplY3QoKTsKKworU3RyaW5nLnByb3RvdHlwZS5zdGFydHNXaXRoID0gZnVuY3Rpb24ocHJlZml4KSB7CisgICAgcmV0dXJuICh0aGlzLmluZGV4T2YocHJlZml4KSA9PT0gMCk7Cit9OwkKKworZnVuY3Rpb24gc2V0TGFiZWxPYmplY3RCeUh1bmRyZWQobm8sIG9iail7CisgICAJZm9yICh2YXIgaSA9IDA7IGkgPCBvYmoubGVuZ3RoOyArK2kpIHsKKwkgICAgbGFiZWxzWyJpZCIgKyBvYmpbaV0uaWRdID0gb2JqW2ldLnZhbHVlOworICAgCX0KK30KKworZnVuY3Rpb24gZ2V0TGFiZWxUYWcobGFiZWxpZCl7CisJdmFyIGwgPSBsYWJlbHNbImlkIiArIGxhYmVsaWRdOworCWlmIChsICE9IHVuZGVmaW5lZCkgeworCQlpZiAoJGRlYnVnKSBsICs9ICIgWyIgKyBsYWJlbGlkICsgIl0iOworCX0gZWxzZSB7CisJCWwgPSAiRXJyb3IgTWlzc2luZyBbIiArIGxhYmVsaWQgKyAiXSI7CisJfQorICAgIHJldHVybiBsOworfQorCitdXT4KKzwvc2NyaXB0PgorCQkKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9oaWJlcm5hdGUvaGliUnRtcENvbm5lY3Rpb24ubHp4IGIvV2ViQ29udGVudC9zd2YxMC9iYXNlL2hpYmVybmF0ZS9oaWJSdG1wQ29ubmVjdGlvbi5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc2NWI2NAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9oaWJlcm5hdGUvaGliUnRtcENvbm5lY3Rpb24ubHp4CkBAIC0wLDAgKzEsODIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/Pg0KKzwhLS0NCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgIA0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAgICAJICANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAgdW5kZXIgdGhlIExpY2Vuc2UuDQorICANCistLT4NCis8bGlicmFyeT4NCisgICAgDQorPGRhdGFzZXQgbmFtZT0ibXlyZXN1bHRuYXZpIiAvPg0KKw0KKzxkYXRhc2V0IG5hbWU9Imxhbmd1YWdlc1NldCIgLz4gICAgICAgIA0KKw0KKzxkYXRhc2V0IG5hbWU9ImNvdW50cnlTZXQiIC8+DQorPGRhdGFzZXQgbmFtZT0idGltZVpvbmVTZXQiIC8+DQorDQorPGNsYXNzIG5hbWU9InVzZXJTdGF0dXMiIGV4dGVuZHM9InZpZXciIHdpZHRoPSIyNTAiIGhlaWdodD0iMzAiPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9InN0YXR1c1RleHQiIHR5cGU9InN0cmluZyIgLz4NCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJzdGF0dXNDb2xvciIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0iMCIgLz4NCisNCisgICAgPHRleHQgbmFtZT0ic3RhdHVzIiB3aWR0aD0iMjQwIiBoZWlnaHQ9IjIwIiB4PSI1IiB5PSI1IiBmb250c3R5bGU9ImJvbGQiIGZnY29sb3I9IjAiIHRleHQ9ImRlZmF1bHR0ZXh0IiBmb250c2l6ZT0iMTAiLz4NCisNCisgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4NCisgICAgICAgIHRoaXMuc3RhdHVzLnNldEF0dHJpYnV0ZSgidGV4dCIsIHRoaXMuc3RhdHVzVGV4dCk7DQorICAgICAgICB0aGlzLnN0YXR1cy5zZXRBdHRyaWJ1dGUoImZnY29sb3IiLCB0aGlzLnN0YXR1c0NvbG9yKTsNCisgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwgInZpc2libGUiKTsNCisgICAgICAgIGx6LlRpbWVyLmFkZFRpbWVyKCBuZXcgTHpEZWxlZ2F0ZSggdGhpcywgInNlbGZEZXN0cm95IiApLCAzMDAwICk7DQorICAgIDwvaGFuZGxlcj4NCisNCisgICAgPG1ldGhvZCBuYW1lPSJzZWxmRGVzdHJveSIgYXJncz0iaWdub3JlPW51bGwiPg0KKyAgICAgICAgdGhpcy5kZXN0cm95KCk7DQorICAgIDwvbWV0aG9kPg0KKzwvY2xhc3M+DQorDQorPGNsYXNzIG5hbWU9ImhpYlJ0bXBDb25uZWN0aW9uIiBleHRlbmRzPSJydG1wQ29ubmVjdGlvbiIgZGVidWc9ImZhbHNlIiBzcmM9IiIgPg0KKw0KKyAgICAgPCEtLQ0KKyAgICAgICAgVGhlIG9uY29ubmVjdCBNZXRob2QgaXMgdHJpZ2dlcmVkIHNldmVyYWwgdGltZXM6DQorICAgICAgICAgICAgIC0gV2hlbiB5b3UgZW50ZXIgYSByb29tIHRoZSBOZXRDb25uZWN0aW9uIHdpbGwgY2xvc2UgYW5kIHJlY29ubmVjdCB0byB0aGUgU2NvcGUgb2YgdGhlIFJvb20NCisgICAgICAgICAgICAgLSBXaGVuIHlvdSBsZWF2ZSB0aGUgcm9vbSBhZ2FpbiBpdCB3aWxsIGJlIHJlLWNvbm5lY3RlZCB0byB0aGUgZGVmYXVsdCBzY29wZSBhZ2Fpbg0KKyAgICAgIC0tPg0KKyAgICAgPGhhbmRsZXIgbmFtZT0ib25jb25uZWN0Ij4NCisJCWlmKCRkZWJ1ZykgRGVidWcuaW5mbygiaGliUnRtcENvbm5lY3Rpb24vb25jb25uZWN0IHNlbmQgdG8gTG9jYWxDb25uZWN0aW9uICIpOw0KKwkJY2FudmFzLnZpZGVvQ29tcF9sYy5zZW5kKGNhbnZhcy52aWRlb0NvbXBfbGNfbmFtZSwgJ2FzM0Nvbm5lY3Rpb25TdWNjZXNzJyk7DQorCQkNCisJCS8vcmVzZXQgcmlnaHRzDQorICAgICAgICBjYW52YXMuaXNBbGxvd2VkVG9HaXZlRXhjbHVzaXZlQXVkaW8gPSBmYWxzZTsNCisgICAgICAgIC8vIHRoaXMub3ZlcndyaXRlUHVibGljU0lELmRvQ2FsbCgpOw0KKyAgICAgICAgLy90aGlzLnNldFVzZXJuYW1lUmVjb25uZWN0LmRvQ2FsbCgpOw0KKyAgICA8L2hhbmRsZXI+DQorDQorICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9Im92ZXJ3cml0ZVB1YmxpY1NJRCIgZnVuY25hbWU9Im92ZXJ3cml0ZVB1YmxpY1NJRCIgPg0KKyAgICAJPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPiByZXR1cm4gY2FudmFzLnB1YmxpY1NJRDs8L21ldGhvZD48L25ldHBhcmFtPg0KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+DQorICAgICAgICAgICAgLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZSB0aGUgcnRtcGNvbm5lY3Rpb24NCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib3ZlcndyaXRlUHVibGljU0lEOiAiLHZhbHVlKTsNCisgICAgICAgIDwvaGFuZGxlcj4NCisgICAgPC9uZXRSZW1vdGVDYWxsSGliPg0KKw0KKyAgICA8aGFuZGxlciBuYW1lPSJvbmVycm9yIiBhcmdzPSJ2YWx1ZSI+DQorICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiQ29ubmVjdGlvbiBlcnJvciAiLHZhbHVlKTsNCisgICAgICAgIC8vIHRoaXMuY29ubmVjdCgpOw0KKyAgICA8L2hhbmRsZXI+DQorICAgIA0KKzwvY2xhc3M+DQorDQorPGhpYlJ0bXBDb25uZWN0aW9uIG5hbWU9InRoaXNoaWIiIGlkPSJoaWIiIC8+DQorDQorPC9saWJyYXJ5Pg0KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9oaWJlcm5hdGUvbGlicmFyeS5senggYi9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvaGliZXJuYXRlL2xpYnJhcnkubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4ZDk5ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvaGliZXJuYXRlL2xpYnJhcnkubHp4CkBAIC0wLDAgKzEsMjYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/Pg0KKzwhLS0NCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgIA0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAgICAJICANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAgdW5kZXIgdGhlIExpY2Vuc2UuDQorICANCistLT4NCis8bGlicmFyeT4NCisNCisJPGluY2x1ZGUgaHJlZj0ibmV0UmVtb3RlQ2FsbEhpYi5sengiIC8+DQorCTxpbmNsdWRlIGhyZWY9ImhpYlJ0bXBDb25uZWN0aW9uLmx6eCIgLz4NCisNCis8L2xpYnJhcnk+DQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC9iYXNlL2hpYmVybmF0ZS9uZXRSZW1vdGVDYWxsSGliLmx6eCBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9oaWJlcm5hdGUvbmV0UmVtb3RlQ2FsbEhpYi5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmYyOGI0NgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9oaWJlcm5hdGUvbmV0UmVtb3RlQ2FsbEhpYi5sengKQEAgLTAsMCArMSw4NiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+DQorPCEtLQ0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAgDQorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICAgIAkgIA0KKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICB1bmRlciB0aGUgTGljZW5zZS4NCisgIA0KKy0tPg0KKzxsaWJyYXJ5Pg0KKw0KKzxjbGFzcyBuYW1lPSJuZXRSZW1vdGVDYWxsSGliIiBleHRlbmRzPSJuZXRyZW1vdGVjYWxsIj4NCisNCisJPCEtLSB0aGlzIHNob3VsZCBiZSB0aGUgY29udGVudFNhdmVXaW5kb3cgLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0icmV0dXJuT2JqIiB2YWx1ZT0ibnVsbCIgLz4NCisJIA0KKwk8IS0tIGlmIHRydWUgdGhpcyBvYmplY3Qgd2lsbCByZWdpc3RlciBhdCB0aGUgdXBkYXRlLW9ic2VydmVyIC0tPg0KKwk8YXR0cmlidXRlIG5hbWU9InJlZ2lzdGVyT2JqZWN0IiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+DQorCQ0KKwk8IS0tIHNob3cgRXJyb3IgTWVzc2FnZXMgd2l0aCBub3JtYWwgQm94IC0tPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9ImFjdGl2ZUVycm9ySGFuZGxlciIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgkNCisgICAgDQorCTwhLS0gc2hvdyBFcnJvciBNZXNzYWdlcyB3aXRoIG5vcm1hbCBCb3ggLS0+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0ic2hvd0xvYWRpbmciIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPiAgICANCisJDQorCTwhLS0gc2hvdyBFcnJvciBNZXNzYWdlcyB3aXRoIENhbGxiYWNrIEJveCAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJpc0NhbGxCYWNrSGFuZGxlciIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPgkNCisJDQorCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+DQorCQlpZiAodGhpcy5yZWdpc3Rlck9iamVjdCkgdGhpcy5wYXJlbnQuYWRkVmlld1RvT2JzZXJ2ZXIodGhpcyk7DQorCTwvaGFuZGxlcj4JDQorCTxtZXRob2QgbmFtZT0iZG9DYWxsIj4NCisgICAgICAgIC8vaWYgKHRoaXMuc2hvd0xvYWRpbmcpIGNhbnZhcy5fbG9hZGluZ0FsbC5zZXRBdHRyaWJ1dGUoJ3Zpc2libGUnLHRydWUpOw0KKwkJLy9pZigkZGVidWcpIERlYnVnLndyaXRlKCJuZXRSZW1vdGVDYWxsSGliL2RvQ2FsbDogWyAiICwgdGhpcy5mdW5jbmFtZSAsICIgXSIsdGhpcy5wYXJlbnQpOw0KKwkJdGhpcy5jYWxsUlBDKG51bGwpOw0KKwk8L21ldGhvZD4NCisJDQorCTxldmVudCBuYW1lPSJzZW5kQ2FsbEJhY2siIC8+DQorCQ0KKwk8IS0tDQorDQorCSAtLT4NCisJPGhhbmRsZXIgbmFtZT0ib25kYXRhIiBhcmdzPSJ2YWx1ZSI+DQorCQk8IVtDREFUQVsNCisJCQkvL0RlYnVnLndyaXRlKCJvbmRhdGE6ICIsdGhpcy5mdW5jbmFtZSx2YWx1ZSk7DQorCQkJDQorCQkJLy9pZiAodGhpcy5zaG93TG9hZGluZykgY2FudmFzLl9sb2FkaW5nQWxsLnNldEF0dHJpYnV0ZSgndmlzaWJsZScsZmFsc2UpOw0KKwkJCQ0KKwkJCS8vQW5vdGhlciBFcnJvciBIYW5kbGVyIGZvciB0aGUgRm9ybS1Db21wb25lbnRzDQorCQkJaWYgKHRoaXMucmV0dXJuT2JqIT1udWxsICYmIE51bWJlcih2YWx1ZSk+MCkgew0KKwkJCQkvL0RlYnVnLndyaXRlKCJ0aGlzLnJldHVybk9iai5wcm9jZXNzTmV4dCIpOw0KKwkJCQl0aGlzLnJldHVybk9iai5wcm9jZXNzTmV4dCgpOw0KKwkJCX0gZWxzZSBpZiAodGhpcy5yZXR1cm5PYmohPW51bGwgJiYgTnVtYmVyKHZhbHVlKTwwKSB7DQorCQkJCXRoaXMucmV0dXJuT2JqLmVycm9yQnlDb2RlKE51bWJlcih2YWx1ZSkpOw0KKwkJCX0gZWxzZSBpZiAodGhpcy5yZXR1cm5PYmohPW51bGwgJiYgdmFsdWU9PW51bGwpIHsNCisJCQkJdGhpcy5yZXR1cm5PYmouZXJyb3JCeUNvZGUoLTEpOw0KKwkJCX0NCisJCQkNCisgICAgICAgICAgICBpZiAodGhpcy5hY3RpdmVFcnJvckhhbmRsZXIpIHsNCisgICAgICAgICAgICAgICAgaWYgKE51bWJlcih2YWx1ZSk8MCl7DQorICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53YXJuKCJSZWNlaXZlZCBFcnJvciBJRDogIix2YWx1ZSk7CQkJCQkNCisJCQkJCWlmICh0aGlzLmlzQ2FsbEJhY2tIYW5kbGVyKSANCisJCQkJCXsNCisJCQkJCSAgIC8vVE9ETzogRml4IGVycm9yIG1lc3NhZ2VzDQorCQkJCQkgICANCisJCQkJCX0gZWxzZSB7DQorCQkJCQkgICAvL1RPRE86IEZpeCBlcnJvciBtZXNzYWdlcw0KKwkJCQkJfQ0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQkJCQ0KKwkJXV0+DQorCTwvaGFuZGxlcj4JDQorPC9jbGFzcz4NCisNCis8L2xpYnJhcnk+DQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC9iYXNlL2xpYnJhcnkubHp4IGIvV2ViQ29udGVudC9zd2YxMC9iYXNlL2xpYnJhcnkubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkZTE2ZjkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvbGlicmFyeS5sengKQEAgLTAsMCArMSwzMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+DQorPCEtLQ0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAgDQorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICAgIAkgIA0KKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICB1bmRlciB0aGUgTGljZW5zZS4NCisgIA0KKy0tPg0KKzxsaWJyYXJ5Pg0KKw0KKyAgICA8aW5jbHVkZSBocmVmPSJmdW5jdGlvbnMubHp4IiAvPg0KKyAgICA8aW5jbHVkZSBocmVmPSJtYWluQXR0cmlidXRlcy5sengiIC8+DQorICAgIDxpbmNsdWRlIGhyZWY9Im1haW5EYXRhc2V0cy5sengiIC8+DQorICAgIDxpbmNsdWRlIGhyZWY9Im1haW5NZXRob2RzLmx6eCIgLz4NCisgICAgDQorICAgIDxpbmNsdWRlIGhyZWY9InJlbW90ZS8iIC8+DQorICAgIDxpbmNsdWRlIGhyZWY9ImNvbXBvbmVudHMvIiAvPg0KKyAgICA8aW5jbHVkZSBocmVmPSJoaWJlcm5hdGUvIiAvPg0KKwkNCis8L2xpYnJhcnk+DQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC9iYXNlL21haW5BdHRyaWJ1dGVzLmx6eCBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9tYWluQXR0cmlidXRlcy5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWVhMTlmZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9tYWluQXR0cmlidXRlcy5sengKQEAgLTAsMCArMSwxMjcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/Pg0KKzwhLS0NCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgIA0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAgICAJICANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAgdW5kZXIgdGhlIExpY2Vuc2UuDQorICANCistLT4NCisNCis8IS0tIGFsbCBhdHRyaWJ1dGVzIGZvciBtYWluLmx6eCAtLT4NCisNCis8bGlicmFyeT4NCisJDQorCTwhLS0tIA0KKwkgICBBdWRpby1WaWRlbyBRdWFsaXR5IFNldHRpbmdzDQorCQlvdmVyd3JpdHRlbiBieSB2YWx1ZXMgZnJvbSB0aGUgY29uZmlnLnhtbCANCisJIC0tPg0KKwk8YXR0cmlidXRlIG5hbWU9ImNvZGVjVHlwZSIgdmFsdWU9ImgyNjQiIHR5cGU9InN0cmluZyIgLz4NCisJPGF0dHJpYnV0ZSBuYW1lPSJmcmFtZXNQZXJTZWNvbmQiIHZhbHVlPSIzMCIgdHlwZT0ibnVtYmVyIiAvPg0KKwk8YXR0cmlidXRlIG5hbWU9ImJhbmR3aWR0aE5lZWRlZE5vcm1hbCIgdmFsdWU9IjE2Mzg0IiB0eXBlPSJudW1iZXIiIC8+DQorCTxhdHRyaWJ1dGUgbmFtZT0iYmFuZHdpZHRoTmVlZGVkQmVzdCIgdmFsdWU9IjMyNzY4IiB0eXBlPSJudW1iZXIiIC8+DQorCTxhdHRyaWJ1dGUgbmFtZT0iY2FtUXVhbGl0eU5vcm1hbCIgdmFsdWU9Ijc1IiB0eXBlPSJudW1iZXIiIC8+DQorCTxhdHRyaWJ1dGUgbmFtZT0iY2FtUXVhbGl0eUJlc3QiIHZhbHVlPSI3NSIgdHlwZT0ibnVtYmVyIiAvPg0KKwk8YXR0cmlidXRlIG5hbWU9Im1pY3JvcGhvbmVSYXRlQmVzdCIgdmFsdWU9IjIyIiB0eXBlPSJudW1iZXIiIC8+IA0KKwk8YXR0cmlidXRlIG5hbWU9ImVjaG9QYXRoIiB2YWx1ZT0iMTI4IiB0eXBlPSJudW1iZXIiIC8+IA0KKwk8YXR0cmlidXRlIG5hbWU9ImVjaG9TdXBwcmVzc2lvbiIgdmFsdWU9InRydWUiIHR5cGU9InN0cmluZyIgLz4JDQorDQorCTwhLS0tIA0KKyAgICAgICAgSG9sZHMgYSByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgVmlkZW9DT250YWluZXIgT2JqZWN0DQorICAgICAgICBjb250YWluaW5nIHRoZSBWaWRlb1ZpZXdzDQorICAgICAgICBhbmQgc29tZSBtb3JlIHJlZmVyZW5jZXMgdG8gdGVtcC1vYmplY3RzDQorCSAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJfdmlkZW9jb250YWluZXIiIHZhbHVlPSJudWxsIiAvPg0KKw0KKwk8YXR0cmlidXRlIG5hbWU9ImN1cnJlbnROQyIgdmFsdWU9Im51bGwiIC8+DQorDQorCTxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudFJvb21PYmplY3QiIHZhbHVlPSJudWxsIi8+DQorDQorCTxhdHRyaWJ1dGUgbmFtZT0idXNlcm9iamVjdCIgdmFsdWU9Im51bGwiLz4NCisNCisJPGF0dHJpYnV0ZSBuYW1lPSJ3ZWJBcHBSb290S2V5IiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+DQorCQ0KKwk8IS0tLSANCisJCVVSTC9JUCB0byB1c2UgZm9yIHRoZSBTZXJ2ZXIgZm9yIEhUVFAgYW5kIEhUVFBTIHRyYWZmaWMuDQorCSAgICBJZiB0aGlzIHZhbHVlIGlzIGVtcHR5IGl0IHdpbGwgdXNlIHRoZSBydG1waG9zdGxvY2FsIA0KKwkgICAgdmFyaWFibGUgKGFuZCBpbiB0aGF0IHdheSB0cnkgdG8gY29ubmVjdCB0byB0aGUgDQorCSAgICBkb21haW4tbmFtZSB0aGUgT3Blbk1lZXRpbmdzLUNsaWVudCBoYXMgYmVlbiBsb2FkaW5nIGZyb20pDQorCSAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJodHRwaG9zdGxvY2FsIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+DQorCQ0KKwk8IS0tLSANCisJICAgIFBvcnQgdG8gdXNlIGZvciB0aGUgU2VydmVyDQorCSAgICBUaGlzIHBvcnQgaXMgdXNlZCB0byBjb25uZWN0IHRvIHRoZSBIVFRQLVNlcnZsZXQNCisJICAgIG9mIHRoZSBSZWQ1LVNlcnZsZXQNCisJIC0tPg0KKwk8YXR0cmlidXRlIG5hbWU9InJlZDVodHRwcG9ydCIgdmFsdWU9IjUwODAiIHR5cGU9InN0cmluZyIgLz4NCisNCisJPGF0dHJpYnV0ZSBuYW1lPSJodHRwUm9vdEtleSIgdmFsdWU9Ii8iIHR5cGU9InN0cmluZyIgLz4NCisJDQorCTxhdHRyaWJ1dGUgbmFtZT0icHJvdG9jb2wiIHZhbHVlPSIvIiB0eXBlPSJzdHJpbmciIC8+DQorCQ0KKwk8YXR0cmlidXRlIG5hbWU9InByb3h5VHlwZSIgdmFsdWU9Im5vbmUiIHR5cGU9InN0cmluZyIgLz4NCisNCisJPCEtLS0NCisJCUEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IHNjcmVlblNoYXJpbmdEaWFsb2dDb250YWluZXIgb3IgDQorCQludWxsIGlmIHRoZXJlIGlzIG5vdGhpbmcgdG8gc3RyZWFtDQorCSAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJzY3JlZW5TaGFyaW5nRGlhbG9nQ29udGFpbmVyIiB2YWx1ZT0ibnVsbCIgLz4NCisJDQorCTwhLS0NCisJICAgIHRoaXMgdmFsdWUgaW5kaWNhdGVzIGlmIHRoaXMgdXNlciBpcyBhbGxvd2VkIHRvIGRyYXcgdG8gdGhlIFdoaXRlYm9hcmQNCisJICAgIElmIHRoaXMgdXNlciBpcyBjdXJyZW50bHkgTW9kZXJhdG9yID0+IGhlIEFMV0FZUyBjYW4gZHJhdyB0byB3aGl0ZWJvYXJkDQorCSAgICBldmVuIGlmIHRoaXMgaXNBbGxvd2VkVG9EcmF3ID09IGZhbHNlDQorCSAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJpc0FsbG93ZWRUb0RyYXciIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4NCisJDQorCTxhdHRyaWJ1dGUgbmFtZT0iaXNBbGxvd2VkVG9TY3JlZW5TaGFyZSIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPg0KKwkNCisJPGF0dHJpYnV0ZSBuYW1lPSJpc0FsbG93ZWRUb1JlbW90ZUNvbnRyb2wiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4NCisJDQorCTxhdHRyaWJ1dGUgbmFtZT0iaXNBbGxvd2VkVG9HaXZlRXhjbHVzaXZlQXVkaW8iIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4NCisJDQorCTxhdHRyaWJ1dGUgbmFtZT0iaXNtb2RlcmF0b3IiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4NCisJDQorCTxhdHRyaWJ1dGUgbmFtZT0iaXNJbnRlcnZpZXciIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4NCisJDQorCTwhLS0NCisJICAgVGhvc2UgdmFsdWVzIGFyZSBmaXhlZCB2YWx1ZXMgb2YgdGhlIHZpZGVvIHBvc2l0aW9ucyBvZiB0aGUgdmlkZW9zIGZyb20gdGhlIGludGVydmlldyByb29tIHR5cGUNCisJIC0tPg0KKwk8YXR0cmlidXRlIG5hbWU9ImludGVydmlld1BvZDFfeCIgdmFsdWU9IjMyMCIgdHlwZT0ibnVtYmVyIiAvPg0KKwk8YXR0cmlidXRlIG5hbWU9ImludGVydmlld1BvZDFfeSIgdmFsdWU9IjI4IiB0eXBlPSJudW1iZXIiIC8+DQorCQ0KKwk8YXR0cmlidXRlIG5hbWU9ImludGVydmlld1BvZDJfeCIgdmFsdWU9IjY0NCIgdHlwZT0ibnVtYmVyIiAvPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9ImludGVydmlld1BvZDJfeSIgdmFsdWU9IjI4IiB0eXBlPSJudW1iZXIiIC8+DQorICAgIA0KKyAgICA8IS0tIA0KKwkJSG9sZHMgYSByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgdG9vbHRpcCwgaWYgdGhlcmUgaXMgb25lDQorCSAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50VG9vbFRpcCIgdmFsdWU9Im51bGwiIC8+DQorCQ0KKwk8bWV0aG9kIG5hbWU9InJlZ2lzdGVyVG9vbFRpcCIgYXJncz0idmlld0luc3RhbmNlIj4NCisJCWlmICh0aGlzLmN1cnJlbnRUb29sVGlwICE9IG51bGwpIHsNCisJCQl0aGlzLmN1cnJlbnRUb29sVGlwLmNsZWFuSG9sZGVyKCk7DQorCQl9DQorCQl0aGlzLmN1cnJlbnRUb29sVGlwID0gdmlld0luc3RhbmNlOw0KKwk8L21ldGhvZD4NCisJDQorCTxtZXRob2QgbmFtZT0iY2xlYXJUb29sVGlwIj4NCisJCWlmICh0aGlzLmN1cnJlbnRUb29sVGlwICE9IG51bGwpIHsNCisJCQl0aGlzLmN1cnJlbnRUb29sVGlwLmNsZWFuSG9sZGVyKCk7DQorCQkJdGhpcy5jdXJyZW50VG9vbFRpcCA9IG51bGw7DQorCQl9DQorCTwvbWV0aG9kPg0KKw0KKzwvbGlicmFyeT4NCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvbWFpbkRhdGFzZXRzLmx6eCBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9tYWluRGF0YXNldHMubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4NjQxZDQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvbWFpbkRhdGFzZXRzLmx6eApAQCAtMCwwICsxLDY2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorDQorPCEtLSBhbGwgZGF0YXNldHMgZm9yIG1haW4ubHp4IC0tPg0KKw0KKzxsaWJyYXJ5Pg0KKw0KKzwhLS0gZ2V0IHZhbHVlcyBmcm9tIGNvbmZpZy54bWwgLS0+DQorPGRhdGFzZXQgdHlwZT0iaHR0cCIgbmFtZT0ibXlDb25maWdTZXQiIHJlcXVlc3Q9ImZhbHNlIiBvbmRhdGE9InBhcmVudC5tYWluVGhlbWUubG9hZFRoZW1lKCkiPg0KKyAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPg0KKyAgICAgICAgdmFyIGQgPSBuZXcgRGF0ZSgpOw0KKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoInNyYyIsImNvbmZpZy54bWw/cmFuZG9tPSIrZC5nZXRUaW1lKCkpOw0KKyAgICAgICAgdGhpcy5kb1JlcXVlc3QoKTsNCisgICAgPC9oYW5kbGVyPg0KKyAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiPg0KKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9uZGF0YSIpOw0KKyAgICA8L2hhbmRsZXI+DQorICAgIDxoYW5kbGVyIG5hbWU9Im9uZXJyb3IiIGFyZ3M9ImUiPg0KKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9uZXJyb3IiLGUpOw0KKyAgICA8L2hhbmRsZXI+DQorICAgIDxoYW5kbGVyIG5hbWU9Im9udGltZW91dCIgYXJncz0iZSI+DQorICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib250aW1lb3V0IixlKTsNCisgICAgPC9oYW5kbGVyPg0KKzwvZGF0YXNldD4NCisNCis8bWV0aG9kIG5hbWU9InJlbG9hZENvbmZpZyI+DQorCQ0KKzwvbWV0aG9kPg0KKw0KKzwhLS0gZ2V0IHZhbHVlcyBmcm9tIGNvbmZpZy54bWwgLS0+DQorPGRhdGFzZXQgdHlwZT0iaHR0cCIgbmFtZT0ibWFpblRoZW1lIiByZXF1ZXN0PSJmYWxzZSIgb25kYXRhPSJjYW52YXMubXlpbml0KCkiPg0KKyAgICA8bWV0aG9kIG5hbWU9ImxvYWRUaGVtZSI+DQorICAgICAgICB2YXIgZCA9IG5ldyBEYXRlKCk7DQorICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgic3JjIiwiZGVmYXVsdC10aGVtZS54bWw/cmFuZG9tPSIrZC5nZXRUaW1lKCkpOw0KKyAgICAgICAgdGhpcy5kb1JlcXVlc3QoKTsNCisgICAgPC9tZXRob2Q+DQorICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSI+DQorICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib25kYXRhIik7DQorICAgIDwvaGFuZGxlcj4NCisgICAgPGhhbmRsZXIgbmFtZT0ib25lcnJvciIgYXJncz0iZSI+DQorICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib25lcnJvciIsZSk7DQorICAgIDwvaGFuZGxlcj4NCisgICAgPGhhbmRsZXIgbmFtZT0ib250aW1lb3V0IiBhcmdzPSJlIj4NCisgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbnRpbWVvdXQiLGUpOw0KKyAgICA8L2hhbmRsZXI+DQorPC9kYXRhc2V0Pg0KKw0KKzwvbGlicmFyeT4NCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvbWFpbk1ldGhvZHMubHp4IGIvV2ViQ29udGVudC9zd2YxMC9iYXNlL21haW5NZXRob2RzLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjllNWVkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC9iYXNlL21haW5NZXRob2RzLmx6eApAQCAtMCwwICsxLDExMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+DQorPCEtLQ0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAgDQorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICAgIAkgIA0KKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICB1bmRlciB0aGUgTGljZW5zZS4NCisgIA0KKy0tPg0KKw0KKzwhLS0gbWV0aG9kcyBmb3IgbWFpbi5senggLS0+DQorDQorPGxpYnJhcnk+DQorICAgIA0KKyAgICA8bWV0aG9kIG5hbWU9Im15aW5pdCI+DQorICAgICAgICA8IVtDREFUQVsNCisgICAgICAgIGNhbnZhcy5tZWRpYWVycm9ydGltZW91dCA9IDMwMDAwOw0KKyAgICAgICAgY2FudmFzLm1lZGlhbG9hZHRpbWVvdXQgPSAzMDAwMDsNCisgICAgICAgIA0KKyAgICAgICAgaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgibWFpbi5sengvY29uZmlnLnhtbCBvbmRhdGEiLHRoaXMpOw0KKyAgICAgICAgDQorICAgICAgICAvL0F1ZGlvLVZpZGVvLVNldHRpbmdzDQorICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnbG91ZG5lc3NBY2l0dmlhdGlvbicsY2FudmFzLm15Q29uZmlnU2V0LmdldFBvaW50ZXIoKS54cGF0aFF1ZXJ5KCdjb25maWcvbG91ZG5lc3NBY2l0dmlhdGlvbi90ZXh0KCknKSk7DQorICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnY29kZWNUeXBlJyxjYW52YXMubXlDb25maWdTZXQuZ2V0UG9pbnRlcigpLnhwYXRoUXVlcnkoJ2NvbmZpZy9jb2RlY1R5cGUvdGV4dCgpJykpOw0KKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2ZyYW1lc1BlclNlY29uZCcsTnVtYmVyKGNhbnZhcy5teUNvbmZpZ1NldC5nZXRQb2ludGVyKCkueHBhdGhRdWVyeSgnY29uZmlnL2ZyYW1lc1BlclNlY29uZC90ZXh0KCknKSkpOyAgDQorICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnYmFuZHdpZHRoTmVlZGVkTm9ybWFsJyxOdW1iZXIoY2FudmFzLm15Q29uZmlnU2V0LmdldFBvaW50ZXIoKS54cGF0aFF1ZXJ5KCdjb25maWcvYmFuZHdpZHRoTmVlZGVkTm9ybWFsL3RleHQoKScpKSk7ICANCisgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdiYW5kd2lkdGhOZWVkZWRCZXN0JyxOdW1iZXIoY2FudmFzLm15Q29uZmlnU2V0LmdldFBvaW50ZXIoKS54cGF0aFF1ZXJ5KCdjb25maWcvYmFuZHdpZHRoTmVlZGVkQmVzdC90ZXh0KCknKSkpOyAgDQorICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnY2FtUXVhbGl0eU5vcm1hbCcsTnVtYmVyKGNhbnZhcy5teUNvbmZpZ1NldC5nZXRQb2ludGVyKCkueHBhdGhRdWVyeSgnY29uZmlnL2NhbVF1YWxpdHlOb3JtYWwvdGV4dCgpJykpKTsgIA0KKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2NhbVF1YWxpdHlCZXN0JyxOdW1iZXIoY2FudmFzLm15Q29uZmlnU2V0LmdldFBvaW50ZXIoKS54cGF0aFF1ZXJ5KCdjb25maWcvY2FtUXVhbGl0eUJlc3QvdGV4dCgpJykpKTsgIA0KKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ21pY3JvcGhvbmVSYXRlQmVzdCcsTnVtYmVyKGNhbnZhcy5teUNvbmZpZ1NldC5nZXRQb2ludGVyKCkueHBhdGhRdWVyeSgnY29uZmlnL21pY3JvcGhvbmVSYXRlQmVzdC90ZXh0KCknKSkpOyAgDQorICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnZWNob1BhdGgnLE51bWJlcihjYW52YXMubXlDb25maWdTZXQuZ2V0UG9pbnRlcigpLnhwYXRoUXVlcnkoJ2NvbmZpZy9lY2hvUGF0aC90ZXh0KCknKSkpOw0KKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2VjaG9TdXBwcmVzc2lvbicsY2FudmFzLm15Q29uZmlnU2V0LmdldFBvaW50ZXIoKS54cGF0aFF1ZXJ5KCdjb25maWcvZWNob1N1cHByZXNzaW9uL3RleHQoKScpKTsNCisgICAgICAgIA0KKyAgICAgICAgLy9odHRwaG9zdGxvY2FsIHZhcmlhYmxlIGlzIGxvYWRlZCBmcm9tIHRoZSBTV0Y4IGFwcGxpY2F0aW9uLCBjYXVzZSBpdCBuZWVkcyB2YWx1ZSwgU1dGMTAgYXBwDQorICAgICAgICAvL2tub3dzIG5vdGhpbmcgYWJvdXQgdGhlIHJ0bXBob3N0bG9jYWwsIGFuZCB3ZSBkb24ndCB3YW50IHRvIHBhcnNlIHRoZSBVUkwgZnJvbSB0aGUgYnJvd3Nlcg0KKyAgICAgICAgLy9pbiBib3RoIGFwcGxpY2F0aW9ucyB0byBmaW5kIG91dCB3aGVyZSB0aGUgdXNlciBsb2FkZWQgdGhlIFNXRiBmcm9tIGFuZCBleHRyYWN0IHRoZSBkb21haW4vaXAgDQorICAgICAgICAvL2Zyb20gaXQNCisgICAgICAgIA0KKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoJ2h0dHBSb290S2V5JyxjYW52YXMubXlDb25maWdTZXQuZ2V0UG9pbnRlcigpLnhwYXRoUXVlcnkoJ2NvbmZpZy9odHRwUm9vdEtleS90ZXh0KCknKSk7DQorICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgncHJvdG9jb2wnLGNhbnZhcy5teUNvbmZpZ1NldC5nZXRQb2ludGVyKCkueHBhdGhRdWVyeSgnY29uZmlnL3Byb3RvY29sL3RleHQoKScpKTsgDQorICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgncHJveHlUeXBlJyxjYW52YXMubXlDb25maWdTZXQuZ2V0UG9pbnRlcigpLnhwYXRoUXVlcnkoJ2NvbmZpZy9wcm94eVR5cGUvdGV4dCgpJykpOyAgDQorDQorICAgICAgICB2YXIgX3VybCA9IHRoaXMuZ2V0RGlzcGxheU9iamVjdCgpLmxvYWRlckluZm8udXJsOw0KKyAgICAgICAgaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiX3VybDogIixfdXJsKTsNCisgICAgICAgIA0KKyAgICAgICAgXV0+DQorICAgIDwvbWV0aG9kPg0KKyAgICANCisgICAgPG1ldGhvZCBuYW1lPSJnZXRMYWJlbE5hbWUiIGFyZ3M9ImlkIj4NCisgICAgCS8vIHJldHVybiAibGFiZWwgIitpZDsNCisgICAgICAgIC8vaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgibWFpbi5sengvZ2V0TGFiZWxOYW1lKCkiLGlkKTsNCisgICAgICAgIHJldHVybiBnZXRMYWJlbFRhZyhpZCk7DQorICAgIDwvbWV0aG9kPg0KKyAgICANCisgICAgPG1ldGhvZCBuYW1lPSJnZXRUaGVtZUltYWdlIiBhcmdzPSJ0TmFtZSI+DQorCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgibG9hZCBJbWFnZSBieSBOYW1lIFNXRjEwOiAiLHROYW1lKTsNCisJCXZhciB0UGF0aCA9IGNhbnZhcy5tYWluVGhlbWUuZ2V0UG9pbnRlcigpLnhwYXRoUXVlcnkoInRoZW1lL3Jlc291cmNlW0BuYW1lPSciK3ROYW1lKyInXS9Ac3JjIik7DQorCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidFBhdGggU1dGMTAgIit0UGF0aCk7DQorCQlyZXR1cm4gdFBhdGg7DQorCTwvbWV0aG9kPg0KKwkNCisJPG1ldGhvZCBuYW1lPSJnZXRUaGVtZUNvbG9yIiBhcmdzPSJ0Q29sb3IiPg0KKwkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImxvYWQgQ29sb3IgYnkgTmFtZSBTV0YxMDogIix0Q29sb3IpOw0KKwkJdmFyIHRDb2xvciA9IGNhbnZhcy5tYWluVGhlbWUuZ2V0UG9pbnRlcigpLnhwYXRoUXVlcnkoInRoZW1lL2NvbG9yW0BuYW1lPSciK3RDb2xvcisiJ10vQHZhbHVlIik7DQorCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidENvbG9yIFNXRjEwICIrdENvbG9yKTsNCisJCXJldHVybiB0Q29sb3I7DQorCTwvbWV0aG9kPg0KKwkNCisJPCEtLSANCisJCWh0dHBob3N0bG9jYWwgaXMgc3luY2VkIGZyb20gdGhlIFNXRjggYXBwbGljYXRpb24sIGl0IHdpbGwgYWx3YXlzIHBvaW50IHRvIHRoZSBtYXN0ZXINCisJIC0tPg0KKwk8bWV0aG9kIG5hbWU9ImdldEh0dHBIb3N0Ij4NCisJCXJldHVybiBjYW52YXMuaHR0cGhvc3Rsb2NhbDsNCisgICAgPC9tZXRob2Q+DQorCQ0KKwk8bWV0aG9kIG5hbWU9ImdldFVybCI+DQorCQk8IVtDREFUQVsNCisJCQlyZXR1cm4gY2FudmFzLnByb3RvY29sICsgJzovLycgKyBnZXRIdHRwSG9zdCgpDQorCQkJCSsgJzonICsgY2FudmFzLnJlZDVodHRwcG9ydCArIGNhbnZhcy5odHRwUm9vdEtleTsNCisJCV1dPg0KKwk8L21ldGhvZD4NCisgICAgDQorCTxtZXRob2QgbmFtZT0iZ2V0UGljdHVyZVVybCIgYXJncz0icGljdHVyZXVyaSxleHRyYVBhcmFtcyI+DQorCTwhW0NEQVRBWw0KKwkJdmFyIHBVcmkgPSAocGljdHVyZXVyaSA9PSBudWxsIHx8IHBpY3R1cmV1cmkubGVuZ3RoID09IDApID8gImQuanBnIiA6IHBpY3R1cmV1cmk7DQorCQl2YXIgZG93bmxvYWR1cmwgPSBwVXJpOw0KKwkJaWYgKCFwVXJpLnN0YXJ0c1dpdGgoImh0dHA6Ly8iKSAmJiAhcFVyaS5zdGFydHNXaXRoKCJodHRwczovLyIpKSB7DQorCQkJcFVyaSA9ICJfcHJvZmlsZV8iICsgcFVyaTsNCisJCQkNCisJCQlkb3dubG9hZHVybCA9IGNhbnZhcy5nZXRVcmwoKSArICdEb3dubG9hZEhhbmRsZXI/ZmlsZU5hbWU9JyArIHBVcmkNCisJCQkJKyAnJnJvb21faWQ9JnI9JyArIChuZXcgRGF0ZSgpKS5nZXRUaW1lKCkNCisJCQkJKyBleHRyYVBhcmFtcyArICcmc2lkPScrY2FudmFzLnNlc3Npb25JZDsNCisJCX0NCisJCWlmKCRkZWJ1ZykgRGVidWcud3JpdGUoImdldFBpY3R1cmVVcmwvZG93bmxvYWR1cmwgIiwgZG93bmxvYWR1cmwpOw0KKwkJcmV0dXJuIGRvd25sb2FkdXJsOw0KKwldXT4NCisJPC9tZXRob2Q+DQorCQkNCis8L2xpYnJhcnk+DQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC9iYXNlL3JlbW90ZS9iYXNlVmlkZW9TdHJlYW0ubHp4IGIvV2ViQ29udGVudC9zd2YxMC9iYXNlL3JlbW90ZS9iYXNlVmlkZW9TdHJlYW0ubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZiOTYxYzIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvcmVtb3RlL2Jhc2VWaWRlb1N0cmVhbS5sengKQEAgLTAsMCArMSwzNzYgQEAKKzxsaWJyYXJ5Pg0KKzwhLS0NCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgIA0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAgICAJICANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAgdW5kZXIgdGhlIExpY2Vuc2UuDQorICANCistLT4NCisNCis8IS0tLQ0KKwlleHRlbmRzIHRoZSBWaWRlby1WaWV3IHdpdGggU3RyZWFtaW5nIGZ1bmN0aW9ucw0KKyAtLT4NCisNCis8Y2xhc3MgbmFtZT0iYmFzZVZpZGVvU3RyZWFtIiBleHRlbmRzPSJiYXNlVmlkZW9WaWV3Ij4NCisNCisgICAgPHN3aXRjaD4NCisgICAgPHdoZW4gcHJvcGVydHk9IiRhczMiPg0KKyAgICAgICAgPHBhc3N0aHJvdWdoPg0KKyAgICAgICAgCWltcG9ydCBmbGFzaC5ldmVudHMuKjsNCisgICAgICAgICAgICBpbXBvcnQgZmxhc2gubmV0Lio7DQorICAgICAgICAgICAgaW1wb3J0IGZsYXNoLm1lZGlhLioNCisgICAgICAgIDwvcGFzc3Rocm91Z2g+DQorICAgIDwvd2hlbj4NCisgICAgPC9zd2l0Y2g+DQorICAgIA0KKyAgICA8YXR0cmlidXRlIG5hbWU9InlEZWJ1ZyIgdmFsdWU9Ii0yMCIgdHlwZT0ibnVtYmVyIiAvPg0KKyAgICANCisgICAgPG1ldGhvZCBuYW1lPSJnZXRZRGVidWciPg0KKyAgICAJdGhpcy55RGVidWcgKz0gMjA7DQorICAgIAlyZXR1cm4gdGhpcy55RGVidWc7DQorICAgIDwvbWV0aG9kPg0KKw0KKwk8IS0tLSB0aGUgTmV0U3RyZWFtIE9iamVjdA0KKyAgICAgICAgICAgICAgQGtleXdvcmRzIGZpbmFsIC0tPg0KKwk8YXR0cmlidXRlIG5hbWU9Il9ucyIgdmFsdWU9Im51bGwiIC8+DQorDQorCTwhLS0tIFRoaXMgdmFsdWUgZG9lcyBpbmRpY2F0ZSBpZiB0aGlzIHN0cmVhbSBwbGF5IG9yIGJyb2FkY2FzdHMNCisgICAgICAgICAgICAgIEBrZXl3b3JkcyByZWFkb25seSAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJtb2RlIiB2YWx1ZT0icGxheSIgdHlwZT0ic3RyaW5nIiAvPg0KKw0KKwk8IS0tLSBUaGlzIGlzIHRoZSBjdXJyZW50IGJ1ZmZlciB1c2VkLCBpbiBMaXZlIFN0cmVhbWluZyB0aGlzIE1VU1QgYmUgMA0KKyAgICAgICAgICAgICAgQGtleXdvcmRzIHJlYWRvbmx5IC0tPg0KKwk8YXR0cmlidXRlIG5hbWU9ImJ1ZmZlclRpbWUiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+DQorDQorCTwhLS0tIFRoaXMgaXMgYSByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgbWljcm9waG9uZSwgb25seSBzZXQgaWYgYnJvYWRjYXN0aW5nDQorICAgICAgICAgICAgICBAa2V5d29yZHMgcmVhZG9ubHkgLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0ibWljcm8iIHZhbHVlPSJudWxsIiAvPg0KKw0KKwk8IS0tLSBUaGlzIGlzIGEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGNhbWFyYSwgb25seSBzZXQgaWYgYnJvYWRjYXN0aW5nDQorICAgICAgICAgICAgICBAa2V5d29yZHMgcmVhZG9ubHkgLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0iY2FtZXJhIiB2YWx1ZT0ibnVsbCIgLz4NCisNCisJPCEtLS0gUmVmZXJlbmNlIFRvIHRoZSBTb3VuZCBPYmplY3QNCisJCUBrZXl3b3JkcyBmaW5hbCAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJzb3VuZFJlZiIgdmFsdWU9Im51bGwiIC8+DQorCTwhLS0tIFJlZmVyZW5jZSBUbyB0aGUgU291bmQgTW92aWVDbGlwDQorCQlAa2V5d29yZHMgZmluYWwgLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0ic291bmRSZWZNQyIgdmFsdWU9Im51bGwiIC8+DQorDQorICAgIDwhLS0tIERlZmF1bHQgbWljIGdhaW4gLS0+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibWljR2FpbiIgdmFsdWU9IjUwIiB0eXBlPSJudW1iZXIiLz4NCisNCisJPGV2ZW50IG5hbWU9Im9uTWV0YURhdGFFdmVudCIgLz4NCisJPGV2ZW50IG5hbWU9Im9uUGxheVN0YXR1c0V2ZW50IiAvPg0KKwk8ZXZlbnQgbmFtZT0ib25DdWVQb2ludEV2ZW50IiAvPg0KKwk8ZXZlbnQgbmFtZT0ib25Bc3luY0Vycm9yIiAvPg0KKwk8ZXZlbnQgbmFtZT0ib25OZXRTdGF0dXMiIC8+DQorCTxldmVudCBuYW1lPSJvbklvRXJyb3IiIC8+DQorDQorCTwhLS0gc2F2ZSB2YWx1ZSBmb3IgcmVzdGFydCAtLT4NCisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ic3RyZWFtTmFtZSIgLz4NCisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iZGVsYXkiIC8+DQorCTwhLS0tIEBrZXl3b3JkcyBwcml2YXRlIC0tPg0KKwk8bWV0aG9kIG5hbWU9ImNyZWF0ZVN0cmVhbSI+DQorCQl2YXIgdFN0cmVhbSA9IHRoaXMuX2ZpbmRuYygpOw0KKyAgICAgICAgaWYgKCF0U3RyZWFtLmNvbm5lY3RlZCkgew0KKyAgICAgICAgCWlmICgkZGVidWcpIERlYnVnLndhcm4oIk5ldENvbm5lY3Rpb24gaXMgbm90IGNvbm5lY3RlZCIpOw0KKyAgICAgICAgfQ0KKwkJdGhpcy5fbnMgPSBuZXcgTmV0U3RyZWFtKHRTdHJlYW0pOw0KKwkJLy9zZWU6IGh0dHA6Ly9saXZlZG9jcy5hZG9iZS5jb20vZmxhc2gvOS4wX2RlL0FjdGlvblNjcmlwdExhbmdSZWZWMy9mbGFzaC9uZXQvTmV0U3RyZWFtLmh0bWwNCisgICAgICAgIC8vYWNjb3JkaW5nIHRvIHRoZSBkb2NzIHRoZSBjb25zdHJ1Y3QgdG8gY2F0Y2ggZXZlbnQgaGFzIHRvIGJlIGltcGxlbWVudGVkIGxpa2UgdGhpcy4NCisgICAgICAgIHZhciB0ID0gdGhpczsNCisJCXZhciBjbGllbnRPYmplY3QgPSBuZXcgT2JqZWN0KCk7DQorCQljbGllbnRPYmplY3Qub25NZXRhRGF0YSA9IGZ1bmN0aW9uKG1ldGFkYXRhOk9iamVjdCk6dm9pZCB7DQorCQkJdC5vbk1ldGFEYXRhKG1ldGFkYXRhKTsNCisJCX07DQorCQljbGllbnRPYmplY3Qub25QbGF5U3RhdHVzID0gZnVuY3Rpb24obWV0YWRhdGE6T2JqZWN0KTp2b2lkIHsNCisJCQl0Lm9uUGxheVN0YXR1cyhtZXRhZGF0YSk7DQorCQl9Ow0KKwkJY2xpZW50T2JqZWN0Lm9uQ3VlUG9pbnQgPSBmdW5jdGlvbihtZXRhZGF0YTpPYmplY3QpOnZvaWQgew0KKwkJCXQub25DdWVQb2ludChtZXRhZGF0YSk7DQorCQl9Ow0KKwkJY2xpZW50T2JqZWN0LmlvRXJyb3IgPSBmdW5jdGlvbihlcnJvcjpPYmplY3QpOnZvaWQgew0KKwkJCXQuaW9FcnJvcihlcnJvcik7DQorCQl9Ow0KKwkJY2xpZW50T2JqZWN0Lm5ldFN0YXR1cyA9IGZ1bmN0aW9uKHN0YXR1czpPYmplY3QpOnZvaWQgew0KKwkJCXQubmV0U3RhdHVzKHN0YXR1cyk7DQorCQl9Ow0KKwkJY2xpZW50T2JqZWN0LmFzeW5jRXJyb3IgPSBmdW5jdGlvbihlcnJvcjpPYmplY3QpOnZvaWQgew0KKwkJCXQuYXN5bmNFcnJvcihlcnJvcik7DQorCQl9Ow0KKwkJdGhpcy5fbnMuY2xpZW50ID0gY2xpZW50T2JqZWN0Ow0KKwkJLy90aGlzIGlzIGEgd29ya2Fyb3VuZCwgYXR0YWNoaW5nIHRoZSBldmVudCB0byB0aGUgY2xpZW50IG9iamVjdCBkb2VzIG5vdCB3b3JrDQorCQl0aGlzLl9ucy5hZGRFdmVudExpc3RlbmVyKE5ldFN0YXR1c0V2ZW50Lk5FVF9TVEFUVVMsIG9uTmV0U3RhdHVzMik7DQorCTwvbWV0aG9kPg0KKwkNCisJPG1ldGhvZCBuYW1lPSJvbk5ldFN0YXR1czIiIGFyZ3M9ImV2dCI+DQorCQlpZigkZGVidWcpIERlYnVnLndyaXRlKCJuZXRTdHJlYW1fb25OZXRTdGF0dXM6ICIgLCBldnQuaW5mby5jb2RlLCBldnQudGFyZ2V0KTsNCisJCXRoaXMub25OZXRTdGF0dXMuc2VuZEV2ZW50KGV2dC5pbmZvKTsNCisJPC9tZXRob2Q+DQorCQ0KKwk8bWV0aG9kIG5hbWU9ImFzeW5jRXJyb3IiIGFyZ3M9ImVycm9yIj4NCisJCWlmKCRkZWJ1ZykgRGVidWcud3JpdGUoInNpbXBsZU5ldFN0cmVhbSBhc3luY0Vycm9yIixlcnJvcik7DQorCQl0aGlzLm9uQXN5bmNFcnJvci5zZW5kRXZlbnQoZXJyb3IpOw0KKwk8L21ldGhvZD4NCisJDQorCTxtZXRob2QgbmFtZT0ibmV0U3RhdHVzIiBhcmdzPSJzdGF0dXMiPg0KKwkJaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2ltcGxlTmV0U3RyZWFtIG5ldFN0YXR1cyIsc3RhdHVzKTsNCisJCXRoaXMub25OZXRTdGF0dXMuc2VuZEV2ZW50KHN0YXR1cyk7DQorCTwvbWV0aG9kPg0KKwkNCisJPG1ldGhvZCBuYW1lPSJpb0Vycm9yIiBhcmdzPSJlcnJvciI+DQorCQlpZigkZGVidWcpIERlYnVnLndyaXRlKCJzaW1wbGVOZXRTdHJlYW0gaW9FcnJvciIsZXJyb3IpOw0KKwkJdGhpcy5vbklvRXJyb3Iuc2VuZEV2ZW50KGVycm9yKTsNCisJPC9tZXRob2Q+DQorDQorICAgIDxtZXRob2QgbmFtZT0ib25DdWVQb2ludCIgYXJncz0iaW5mbyI+PCFbQ0RBVEFbDQorICAgICAgICBpZigkZGVidWcpIERlYnVnLndyaXRlKCJzaW1wbGVOZXRTdHJlYW0gb25DdWVQb2ludCIsaW5mbyk7DQorICAgICAgICB0aGlzLm9uQ3VlUG9pbnRFdmVudC5zZW5kRXZlbnQoaW5mbyk7DQorICAgIF1dPjwvbWV0aG9kPg0KKw0KKyAgICA8bWV0aG9kIG5hbWU9Im9uUGxheVN0YXR1cyIgYXJncz0iaW5mbyI+PCFbQ0RBVEFbDQorICAgICAgICBpZigkZGVidWcpIERlYnVnLndyaXRlKCJzaW1wbGVOZXRTdHJlYW0gb25QbGF5U3RhdHVzIixpbmZvKTsNCisgICAgICAgIHRoaXMub25QbGF5U3RhdHVzRXZlbnQuc2VuZEV2ZW50KGluZm8pOw0KKyAgICBdXT48L21ldGhvZD4NCisNCisgICAgPG1ldGhvZCBuYW1lPSJvbk1ldGFEYXRhIiBhcmdzPSJpbmZvIj48IVtDREFUQVsNCisgICAgICAgIGlmKCRkZWJ1ZykgRGVidWcud3JpdGUoInNpbXBsZU5ldFN0cmVhbSBvbk1ldGFEYXRhIixpbmZvKTsNCisgICAgICAgIHRoaXMub25NZXRhRGF0YUV2ZW50LnNlbmRFdmVudChpbmZvKTsNCisgICAgXV0+PC9tZXRob2Q+DQorDQorICAgIDwhLS0tIEZpbmQgdGhlIEZsYXNoIE5ldENvbm5lY3Rpb24gb2JqZWN0Lg0KKyAgICAgICAgICBAa2V5d29yZHMgcHJpdmF0ZSAtLT4NCisgICAgPG1ldGhvZCBuYW1lPSJfZmluZG5jIj4NCisgICAgCWlmIChjYW52YXMuY3VycmVudE5DID09IG51bGwpIHsNCisgICAgCQlpZiAoJGRlYnVnKSBEZWJ1Zy53YXJuKCJjYW52YXMuY3VycmVudE5DIGlzIE5VTEwsIG1heWJlIGNvbm5lY3Rpb24gZGlkIGZhaWw/Iik7DQorICAgIAl9DQorICAgICAgICByZXR1cm4gY2FudmFzLmN1cnJlbnROQzsNCisgICAgPC9tZXRob2Q+DQorDQorCTwhLS0tDQorCQlQbGF5cyBhIFZpZGVvIFN0cmVhbSwgbWFrZXMgYSBuZXcgSW5zdGFuY2Ugb2YgYSBOZXRTdHJlYW0sIGlmIHByZXZpb3VzIE5ldFN0cmVhbQ0KKwkJaXMgc3RpbGwgb3BlbiBpdCB3aWxsIGZpcnN0IGNsb3NlIHRoYXQsIHVzZWQgdG8gc3Vic2NyaWJlIHRvIGEgbGl2ZS1zdHJlYW0NCisJCUBwYXJhbSBzdHJpbmcgc3RyZWFtTmFtZSB0aGUgc3RyZWFtbmFtZSB0byBwbGF5DQorCQlAcGFyYW0gbnVtYmVyIGRlbGF5IFRoZSB0aW1lIGl0IHNob3VsZCBzZWVrLCBmb3IgTGl2ZS1TdHJlYW1zIHRoaXMgdmFsdWUgc2hvdWxkIGJlIC0xDQorCSAtLT4NCisJPG1ldGhvZCBuYW1lPSJwbGF5U3RyZWFtIiBhcmdzPSJzdHJlYW1OYW1lLGRlbGF5Ij4NCisJCTwhW0NEQVRBWw0KKwkJCXRoaXMuc3RyZWFtTmFtZT1zdHJlYW1OYW1lOw0KKwkJCXRoaXMuZGVsYXk9ZGVsYXk7DQorCQkJaWYgKHRoaXMuX25zIT1udWxsKXsNCisJCQkJdGhpcy5fc3RvcCgpOw0KKwkJCX0NCisJCQl0aGlzLm1vZGUgPSAicGxheSI7DQorCQkJdGhpcy5jcmVhdGVTdHJlYW0oKTsNCisJCQkvL2ludm9rZXMgTWV0aG9kIGluIGJhc2VWaWRlb1ZpZXcgd2hpY2ggc2hvd3MgdGhlIHN0cmVhbQ0KKwkJCXRoaXMuYXR0YWNoVmlkZW8odGhpcy5fbnMpOw0KKwkJCS8vRklYTUU6IENvbW1lbnRlZCBvdXQsIGNhdXNlIHRoaXMgbGVhZHMgdG8gQnVmZmVyLUZ1bGwvQnVmZmVyLUVtcHR5IEV2ZW50cw0KKwkJCS8vYWZ0ZXIgcmUtc3luY2luZyB0aGUgc3RyZWFtDQorCQkJLy90aGlzLnNldEJ1ZmZlcigwLjEpOw0KKwkJCWlmIChkZWxheSA9PSAwKSB7DQorCQkJICAgIHRoaXMuX25zLnBsYXkoc3RyZWFtTmFtZSk7DQorCQkJfSBlbHNlIHsNCisJCQkgICAgdGhpcy5fbnMucGxheShzdHJlYW1OYW1lLGRlbGF5KTsNCisJCQl9DQorCQldXT4NCisJPC9tZXRob2Q+DQorDQorCTxtZXRob2QgbmFtZT0ianVzdFBsYXlTdHJlYW0iIGFyZ3M9InN0cmVhbU5hbWUsZGVsYXkiPg0KKyAgICAgICAgPCFbQ0RBVEFbDQorICAgICAgICAgICAgdGhpcy5zdHJlYW1OYW1lPXN0cmVhbU5hbWU7DQorICAgICAgICAgICAgdGhpcy5kZWxheT1kZWxheTsNCisgICAgICAgICAgICBpZiAodGhpcy5fbnMhPW51bGwpew0KKyAgICAgICAgICAgIAlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiU1RPUCBOUyBpcyBOT1QgbnVsbCAiKQ0KKyAgICAgICAgICAgICAgICB0aGlzLl9zdG9wKCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHRoaXMubW9kZSA9ICJwbGF5IjsNCisgICAgICAgICAgICB0aGlzLmNyZWF0ZVN0cmVhbSgpOw0KKyAgICAgICAgICAgIC8vaW52b2tlcyBNZXRob2QgaW4gYmFzZVZpZGVvVmlldyB3aGljaCBzaG93cyB0aGUgc3RyZWFtDQorICAgICAgICAgICAgdGhpcy5hdHRhY2hWaWRlbyh0aGlzLl9ucyk7DQorICAgICAgICAgICAgLy9GSVhNRTogQ29tbWVudGVkIG91dCwgY2F1c2UgdGhpcyBsZWFkcyB0byBCdWZmZXItRnVsbC9CdWZmZXItRW1wdHkgRXZlbnRzDQorICAgICAgICAgICAgLy9hZnRlciByZS1zeW5jaW5nIHRoZSBzdHJlYW0NCisNCisgICAgICAgICAgICB0aGlzLnNldEJ1ZmZlcig2KTsNCisNCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiUGxheSBTdHJlYW0gIitzdHJlYW1OYW1lKTsNCisNCisgICAgICAgICAgICB0aGlzLl9ucy5wbGF5KHN0cmVhbU5hbWUsZGVsYXkpOw0KKyAgICAgICAgXV0+DQorICAgIDwvbWV0aG9kPg0KKw0KKwk8bWV0aG9kIG5hbWU9InByZXBhcmUiIGFyZ3M9Im1vZGUsc3RyZWFtTmFtZSxjYW1SZWZlcmVuY2UsbWljUmVmZXJlbmNlIj4NCisJCWlmICh0aGlzLl9ucyAhPSBudWxsKXsNCisJCQl0aGlzLl9zdG9wKCk7DQorCQl9DQorCQl0aGlzLm1vZGUgPSBtb2RlOw0KKwkJdGhpcy5jcmVhdGVTdHJlYW0oKTsNCisJCQ0KKwkJaWYgKGNhbVJlZmVyZW5jZSAhPSBudWxsKSB7DQorCQkJdGhpcy5zZXRBdHRyaWJ1dGUoJ2NhbWVyYScsIGNhbVJlZmVyZW5jZSk7DQorCQkJdGhpcy5fbnMuYXR0YWNoQ2FtZXJhKGNhbVJlZmVyZW5jZSk7DQorCQkJLy9pbnZva2VzIE1ldGhvZCBpbiBiYXNlVmlkZW9WaWV3IHdoaWNoIHNob3dzIHRoZSBjYW0NCisJCQl0aGlzLmF0dGFjaENhbWVyYShjYW1SZWZlcmVuY2UpOw0KKwkJCQ0KKwkJCXZhciB2aWRlb1N0cmVhbVNldHRpbmdzID0gbnVsbDsNCisJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiY29kZWNUeXBlPSIgKyBjYW52YXMuY29kZWNUeXBlKTsNCisJCQlpZiAoY2FudmFzLmNvZGVjVHlwZSA9PT0gImgyNjQiKSB7DQorCQkJCXZpZGVvU3RyZWFtU2V0dGluZ3MgPSBuZXcgSDI2NFZpZGVvU3RyZWFtU2V0dGluZ3MoKTsNCisJCQkJdmlkZW9TdHJlYW1TZXR0aW5ncy5zZXRQcm9maWxlTGV2ZWwoSDI2NFByb2ZpbGUuQkFTRUxJTkUsIEgyNjRMZXZlbC5MRVZFTF81XzEpOw0KKwkJCX0gZWxzZSB7DQorCQkJCXZpZGVvU3RyZWFtU2V0dGluZ3MgPSBuZXcgVmlkZW9TdHJlYW1TZXR0aW5ncygpOw0KKwkJCX0NCisJCQl2aWRlb1N0cmVhbVNldHRpbmdzLnNldFF1YWxpdHkoY2FtUmVmZXJlbmNlLmJhbmR3aWR0aCwgY2FtUmVmZXJlbmNlLnF1YWxpdHkpOw0KKwkJCXZpZGVvU3RyZWFtU2V0dGluZ3Muc2V0S2V5RnJhbWVJbnRlcnZhbChjYW1SZWZlcmVuY2Uua2V5RnJhbWVJbnRlcnZhbCk7DQorCQkJdmlkZW9TdHJlYW1TZXR0aW5ncy5zZXRNb2RlKGNhbVJlZmVyZW5jZS53aWR0aCwgY2FtUmVmZXJlbmNlLmhlaWdodCwgY2FtUmVmZXJlbmNlLmZwcyk7DQorCQkJdGhpcy5fbnMudmlkZW9TdHJlYW1TZXR0aW5ncyA9IHZpZGVvU3RyZWFtU2V0dGluZ3M7DQorCQl9DQorCQlpZiAobWljUmVmZXJlbmNlICE9IG51bGwpIHsNCisJCQl0aGlzLnNldEF0dHJpYnV0ZSgnbWljcm8nLCBtaWNSZWZlcmVuY2UpOw0KKwkJCXRoaXMuX25zLmF0dGFjaEF1ZGlvKG1pY1JlZmVyZW5jZSk7DQorCQl9DQorCQkNCisJCXRoaXMuX25zLnB1Ymxpc2goc3RyZWFtTmFtZSwgKG1vZGUgPT0gImJyb2FkY2FzdCIpID8gImxpdmUiIDogbW9kZSk7DQorCTwvbWV0aG9kPg0KKwk8IS0tLQ0KKwkJQnJvYWRDYXN0cyBhIFN0cmVhbQ0KKwkJQHBhcmFtIHN0cmluZyBzdHJlYW1OYW1lIHRoZSBzdHJlYW1uYW1lIHRvIGJyb2FkY2FzdA0KKwkJQHBhcmFtIGNhbWVyYSBjYW1SZWZlcmVuY2UgYSByZWZlcmVuY2UgdG8gdGhlIENhbWVyYS1PYmplY3QgdG8gc3RyZWFtDQorCQlAcGFyYW0gbWljcm9wb25lIG1pY1JlZmVyZW5jZSBhIHJlZmVyZW5jZSB0byB0aGUgTWljcm9wb2huZSBPYmplY3QgdG8gc3RyZWFtDQorCSAtLT4NCisJPG1ldGhvZCBuYW1lPSJicm9hZGNhc3QiIGFyZ3M9InN0cmVhbU5hbWUsY2FtUmVmZXJlbmNlLG1pY1JlZmVyZW5jZSI+DQorCQlwcmVwYXJlKCJicm9hZGNhc3QiLCBzdHJlYW1OYW1lLCBjYW1SZWZlcmVuY2UsIG1pY1JlZmVyZW5jZSk7DQorCTwvbWV0aG9kPg0KKw0KKwk8bWV0aG9kIG5hbWU9InJlY29yZCIgYXJncz0ic3RyZWFtTmFtZSxjYW1SZWZlcmVuY2UsbWljUmVmZXJlbmNlIj4NCisJCXByZXBhcmUoInJlY29yZCIsIHN0cmVhbU5hbWUsIGNhbVJlZmVyZW5jZSwgbWljUmVmZXJlbmNlKTsNCisgICAgPC9tZXRob2Q+DQorICAgIA0KKwk8IS0tLQ0KKwkJU3RvcHMgcGxheWluZyBvciBicm9hZGNhc3RpbmcgYSBTdHJlYW0gYW5kIGNsZWFycyB0aGUgVmlkZW8tT2JqZWN0DQorCSAtLT4NCisJPG1ldGhvZCBuYW1lPSJfc3RvcCI+DQorCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiU1RPUDogIix0aGlzLm1vZGUsdGhpcy5fbnMpOw0KKwkJLy9TdG9wIE5ldFN0cmVhbQ0KKwkJaWYgKHRoaXMuX25zPT1udWxsKSByZXR1cm47DQorCQl0aGlzLmNhbWVyYSA9IG51bGw7DQorCQl0aGlzLm1pY3JvID0gbnVsbDsNCisJCWlmICh0aGlzLm1vZGUgPT0gInBsYXkiKSB7DQorICAgICAgICAgICAgdGhpcy5zb3VuZFJlZk1DID0gbnVsbDsNCisJCQl0aGlzLnNvdW5kUmVmID0gbnVsbDsNCisJCQl0aGlzLl9ucy5wYXVzZSgpOw0KKwkJCXRoaXMuX25zLmNsb3NlKCk7DQorCQkJLy9yZW1vdmUgTmV0U3RyZWFtIGZyb20gVmlkZW8tT2JqZWN0DQorCQkJdGhpcy5jbGVhcigpOw0KKwkJCXRoaXMuX25zID0gbnVsbDsNCisJCX0gZWxzZSBpZiAodGhpcy5tb2RlID09ICJicm9hZGNhc3QiKSB7DQorICAgICAgICAgICAgdGhpcy5fbnMucHVibGlzaChmYWxzZSk7DQorICAgICAgICAgICAgLy9yZW1vdmUgTmV0U3RyZWFtIGZyb20gVmlkZW8tT2JqZWN0DQorICAgICAgICAgICAgdGhpcy5jbGVhcigpOw0KKyAgICAgICAgICAgIHRoaXMuX25zLmNsb3NlKCk7DQorICAgICAgICAgICAgdGhpcy5fbnMgPSBudWxsOw0KKyAgICAgICAgfSBlbHNlIGlmICh0aGlzLm1vZGUgPT0gInJlY29yZCIpIHsNCisgICAgICAgICAgICB0aGlzLl9ucy5wdWJsaXNoKGZhbHNlKTsNCisgICAgICAgICAgICAvL3JlbW92ZSBOZXRTdHJlYW0gZnJvbSBWaWRlby1PYmplY3QNCisgICAgICAgICAgICB0aGlzLmNsZWFyKCk7DQorICAgICAgICAgICAgdGhpcy5fbnMuY2xvc2UoKTsNCisgICAgICAgICAgICB0aGlzLl9ucyA9IG51bGw7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHRoaXMuY2xlYXIoKTsNCisgICAgICAgICAgICB0aGlzLl9ucy5jbG9zZSgpOw0KKyAgICAgICAgICAgIHRoaXMuX25zID0gbnVsbDsNCisJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53YXJuKCJOb3Qga25vd24gTW9kZTogIix0aGlzLm1vZGUsdGhpcyk7DQorCQl9DQorCTwvbWV0aG9kPg0KKw0KKwk8bWV0aG9kIG5hbWU9InJlc3RhcnQiPg0KKwkgICAgIHRoaXMuX3N0b3AoKTsNCisJICAgICB0aGlzLnBsYXlTdHJlYW0odGhpcy5zdHJlYW1OYW1lICx0aGlzLmRlbGF5KTsNCisJPC9tZXRob2Q+DQorCQ0KKwk8bWV0aG9kIG5hbWU9InNldEJ1ZmZlciIgYXJncz0idGltZSI+DQorCSAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53YXJuKCJzZXRCdWZmZXIgaGFzIG5vIDE6MSBlcXVpdmFsZW50IGluIEFTMyAiKTsNCisJICAgIHJldHVybjsNCisJCWlmKHRoaXMuX25zIT1udWxsKXsNCisJCQl0aGlzLmJ1ZmZlclRpbWUgPSB0aW1lOw0KKwkJCXRoaXMuX25zLnNldEJ1ZmZlclRpbWUodGltZSk7DQorCQl9IGVsc2Ugew0KKwkJCWlmICgkZGVidWcpIERlYnVnLndhcm4oInNldEJ1ZmZlciBidXQgbm8gTmV0U3RyZWFtIGluaXRpYWxpemVkIix0aGlzKTsNCisJCX0NCisJPC9tZXRob2Q+DQorDQorCTwhLS0tIHNldHMgdGhlIFZvbHVtZSBvZiB0aGUgVmlkZW9TdHJlYW0NCisJCUBwYXJhbSBudW1iZXIgdm9sdW1lIE51bWJlciBiZXR3ZWVuIDAgYW5kIDEwMA0KKwkgLS0+DQorCTxtZXRob2QgbmFtZT0ic2V0U291bmRWb2x1bWUiIGFyZ3M9InZvbHVtZSI+DQorCQkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCI6OiBzZXRTb3VuZFZvbHVtZSAiLCBwYXJlbnQucGFyZW50LnB1YmxpY1NJRCk7DQorCQkvL3RoaXMuc291bmRSZWYuc2V0Vm9sdW1lKHZvbHVtZSk7DQorCQlpZiAodGhpcy5fbnMhPW51bGwpew0KKwkJCXRoaXMuX25zLnNvdW5kVHJhbnNmb3JtID0gbmV3IFNvdW5kVHJhbnNmb3JtKHZvbHVtZS8xMDAuMCk7DQorCQl9DQorCTwvbWV0aG9kPg0KKw0KKwk8bWV0aG9kIG5hbWU9Im11dGVNaWNybyIgYXJncz0ibXV0ZSI+DQorCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiOjogbXV0ZU1pY3JvICIsIG11dGUsIHBhcmVudC5wYXJlbnQucHVibGljU0lEKTsNCisJCWlmKHRoaXMubWljcm8gIT0gbnVsbCkgew0KKwkJCWlmKG11dGUpIHsNCisJCQkJaWYgKHRoaXMubWljcm8uZ2FpbiA9PSAwKSB7DQorCQkJCQlyZXR1cm47DQorCQkJCX0NCisJCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIk1ha2UgR2FpbiBtdXRlIGFnYWluIGZyb20gIix0aGlzLm1pY3JvLmdhaW4pOw0KKwkJCQl0aGlzLnNldEF0dHJpYnV0ZSgnbWljR2FpbicsIHRoaXMubWljcm8uZ2Fpbik7DQorCQkJCXRoaXMubWljcm8uZ2FpbiA9IDA7DQorCQkJfSBlbHNlIHsNCisJCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIk1ha2UgR2FpbiBsb3VkIGFnYWluIHRvICIsdGhpcy5taWNHYWluKTsNCisJCQkJdGhpcy5taWNyby5nYWluID0gdGhpcy5taWNHYWluOw0KKwkJCX0NCisJCX0NCisJPC9tZXRob2Q+DQorICAgIA0KKyAgICA8IS0tLQ0KKyAgICAgICAgcGF1c2Ugb3IgcmVzdW1lcyB0aGUgTmV0U3RyZWFtDQorICAgICAgICBAYXJncyBwYXVzZVN0YXR1cyB0cnVlIHBhdXNlLCBmYWxzZSByZXN1bWUNCisgICAgIC0tPg0KKyAgICA8bWV0aG9kIG5hbWU9InBhdXNlIiBhcmdzPSJwYXVzZVN0YXR1cyI+DQorICAgIAlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZG8gUGF1c2UiLHBhdXNlU3RhdHVzKTsNCisgICAgCWlmICh0aGlzLl9ucz09bnVsbCl7DQorICAgIAkJaWYgKCRkZWJ1ZykgRGVidWcud2FybigiTm8gTmV0U3RyZWFtIik7DQorICAgIAkJcmV0dXJuOw0KKyAgICAJfQ0KKyAgICAJaWYgKHBhdXNlU3RhdHVzKSB7DQorICAgIAkJdGhpcy5fbnMucGF1c2UoKTsNCisgICAgCX0gZWxzZSB7DQorICAgIAkJdGhpcy5fbnMucmVzdW1lKCk7DQorICAgIAl9DQorICAgIDwvbWV0aG9kPg0KKyAgICANCisgICAgPCEtLS0NCisgICAgICAgIFNlZWsgdGhlIHN0cmVhbSB0byBhIGZsdlRpbWUNCisgICAgICAgIHRoaXMgbWlnaHQgb25seSB3b3JrIGlmIHRoZXJlIGFyZSBrZXlmcmFtZXMgaW4gdGhlIEZMViwgbm9ybWFsbHkgaXQgc2hvdWxkIA0KKyAgICAgICAgdHJ5IHRvIHVzZSB0aGUgbmVhcmVzdCBrZXlmcmFtZSBhdmFpbGFibGUgZm9yIHRoZSBzcGVjaWZpZWQgdGltZS4NCisgICAgIC0tPg0KKyAgICA8bWV0aG9kIG5hbWU9InNlZWtTdHJlYW0iIGFyZ3M9ImZsdlRpbWUiPg0KKyAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImRvIHNlZWsiLGZsdlRpbWUpOw0KKyAgICAgICAgaWYgKHRoaXMuX25zPT1udWxsKXsNCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53YXJuKCJObyBOZXRTdHJlYW0iKTsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgICAgICB0aGlzLl9ucy5zZWVrKGZsdlRpbWUpOw0KKyAgICA8L21ldGhvZD4NCisNCis8L2NsYXNzPg0KKw0KKw0KKzwvbGlicmFyeT4NCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvcmVtb3RlL2Jhc2VWaWRlb1N0cmVhbURldmljZS5senggYi9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvcmVtb3RlL2Jhc2VWaWRlb1N0cmVhbURldmljZS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDMwZDk2NwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9yZW1vdGUvYmFzZVZpZGVvU3RyZWFtRGV2aWNlLmx6eApAQCAtMCwwICsxLDE3MSBAQAorPGxpYnJhcnk+DQorCTwhLS0gTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZSBvciBtb3JlIA0KKwkJY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiBTZWUgdGhlIE5PVElDRSBmaWxlIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyANCisJCXdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuIFRoZSBBU0YgbGljZW5zZXMgDQorCQl0aGlzIGZpbGUgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOyB5b3UgDQorCQltYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gDQorCQlhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIFVubGVzcyANCisJCXJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZSBkaXN0cmlidXRlZCANCisJCXVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyANCisJCU9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgDQorCQl0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4gLS0+DQorDQorCTwhLS0tIGV4dGVuZHMgdGhlIGJhc2VWaWRlb1N0cmVhbSB3aXRoIGZ1bmN0aW9ucyB0byBjYXRjaCBEZXZpY2UgRXZlbnRzIA0KKwkJdGhpcyBDbGFzcyB1c2VzIEV2ZW50cyBmcm9tIHRoZSBCYXNlIENsYXNzIGJhc2VWaWRlb1N0cmVhbSBvbm1pY3JvIGFuZCBvbmNhbWVyYSwgDQorCQl3aGljaCBhcmUgdGhyb3duLCBvbmNlIGEgZGV2aWNlIHdhcyBzZXQgLS0+DQorDQorCTxjbGFzcyBuYW1lPSJiYXNlVmlkZW9TdHJlYW1EZXZpY2UiIGV4dGVuZHM9ImJhc2VWaWRlb1N0cmVhbSI+DQorDQorCQk8c3dpdGNoPg0KKwkJCTx3aGVuIHByb3BlcnR5PSIkYXMzIj4NCisJCQkJPHBhc3N0aHJvdWdoPg0KKwkJCQkJaW1wb3J0IGZsYXNoLmV2ZW50cy5TdGF0dXNFdmVudDsNCisJCQkJCWltcG9ydCBmbGFzaC5ldmVudHMuQWN0aXZpdHlFdmVudDsNCisJCQkJPC9wYXNzdGhyb3VnaD4NCisJCQk8L3doZW4+DQorCQk8L3N3aXRjaD4NCisNCisJCTwhLS0tIFNob3dzIGlmIHRoZXJlIGlzIEFjdGl2aXR5IG9uIHRoZSBNaWNyb3Bob25lIC0tPg0KKwkJPGF0dHJpYnV0ZSBuYW1lPSJtaWNhY3RpdmUiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4NCisNCisJCTwhLS0tIExldmVsIGRlbGVnYXRlLCB1c2VkIHRvIHRyYWNrIGxldmVsIGNoYW5nZXMuDQorCQkJQGtleXdvcmRzIHByaXZhdGUgLS0+DQorCQk8YXR0cmlidXRlIG5hbWU9Il9sZXZlbGRlbCINCisJCQl2YWx1ZT0iJG9uY2V7bmV3IEx6RGVsZWdhdGUodGhpcywgJ191cGRhdGVMZXZlbCcpfSIgLz4NCisNCisJCTwhLS0tIEF1ZGlvIGxldmVsLCAwLTEwMCwgdGhlIGFtb3VudCBvZiBzb3VuZCBkZXRlY3RlZCBieSB0aGlzIG1pY3JvcGhvbmUuIA0KKwkJCVJlc2V0IHRvIDAgd2hlbiB0aGVyZSBpcyBubyBhdWRpbyAobm8gYWN0aXZpdHkgb3Igbm90IGFsbG93ZWQpLg0KKwkJCUBrZXl3b3JkcyByZWFkb25seSAtLT4NCisJCTxhdHRyaWJ1dGUgbmFtZT0ibGV2ZWwiIHR5cGU9Im51bWJlciIgdmFsdWU9IjAiIC8+DQorDQorCQk8IS0tLSBTaG93cyBpZiB0aGVyZSBpcyBBY3Rpdml0eSBvbiB0aGUgQ2FtZXJhIC0tPg0KKwkJPGF0dHJpYnV0ZSBuYW1lPSJjYW1hY3RpdmUiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4NCisNCisJCTwhLS0tIE1lc3NhZ2UgdG8gc2VuZCB0byBDbGllbnRzIC0tPg0KKwkJPGF0dHJpYnV0ZSBuYW1lPSJvYmpNZXNzYWdlIiB2YWx1ZT0ibnVsbCIgLz4NCisJCTwhLS0tIGluZGljYXRlcyBpZiB0aGUgbWVzc2FnZSBzaG91bGQgYmUgc2VuZCwgeW91IGNhbiBjaGFuZ2UgdGhlIG5vdGlmaWNhdGlvbiANCisJCQlsZXZlbCBieSBjaGFuZ2luZyB0aGUgbG91ZG5lc3NBY2l0dmlhdGlvbiBpbiB0aGUgY29uZmlnLnhtbCAtLT4NCisJCTxhdHRyaWJ1dGUgbmFtZT0iaXNncmVhdGVyIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+DQorDQorCQk8YXR0cmlidXRlIG5hbWU9ImRvU2VuZE5vdGlmaWNhdGlvbiIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+DQorDQorCQk8IS0tLSBJZiB0cnVlIHRoZSBjb21wb25lbnQgd2lsbCBzZW5kIGFuIGV2ZW50IHZpYSBMb2NhbENvbm5lY3Rpb24gd2hlbiANCisJCQlzb3VuZCBpcyBsb3VkZXIgb3IgbGVzcyA1JSAtLT4NCisJCTxhdHRyaWJ1dGUgbmFtZT0ic2VuZE5vdGlmaWNhdGlvblZpYUxvY2FsQ29ubmVjdGlvbiIgdmFsdWU9InRydWUiDQorCQkJdHlwZT0iYm9vbGVhbiIgLz4NCisNCisJCTxldmVudCBuYW1lPSJzZW5kQ2FtZXJhU3RhdHVzIiAvPg0KKw0KKwkJPGV2ZW50IG5hbWU9InNlbmRNaWNyb1N0YXR1cyIgLz4NCisNCisJCTxoYW5kbGVyIG5hbWU9Im9uY2FtZXJhIiBhcmdzPSJjIj4NCisJCQkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJDYW06ICIsYyk7DQorCQkJYy5hZGRFdmVudExpc3RlbmVyKEFjdGl2aXR5RXZlbnQuQUNUSVZJVFksIG9uQWN0aXZpdHkpOw0KKwkJCWMuYWRkRXZlbnRMaXN0ZW5lcihTdGF0dXNFdmVudC5TVEFUVVMsIG9uU3RhdHVzKTsNCisJCTwvaGFuZGxlcj4NCisNCisJCTxtZXRob2QgbmFtZT0ib25TdGF0dXMiIGFyZ3M9InN0YXRzIj4NCisJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiQ2FtU3RhdHVzOiAiLHN0YXRzKTsNCisJCQl0aGlzLnNlbmRDYW1lcmFTdGF0dXMuc2VuZEV2ZW50KHN0YXRzLmNvZGUpOw0KKwkJPC9tZXRob2Q+DQorDQorCQk8bWV0aG9kIG5hbWU9Im9uQWN0aXZpdHkiIGFyZ3M9ImV2ZW50Ij4NCisJCQl0aGlzLnNldEF0dHJpYnV0ZSgiY2FtYWN0aXZlIiwgZXZlbnQuYWN0aXZhdGluZyk7DQorCQk8L21ldGhvZD4NCisNCisJCTxoYW5kbGVyIG5hbWU9Im9ubWljcm8iIGFyZ3M9Im0iPg0KKwkJCS8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9ubWljcm86ICIsbSk7DQorCQkJdmFyIHQgPSB0aGlzOw0KKwkJCS8vc2VuZCBtaWMgYWN0aXZlIHRvIHRydWUgdG8gc3RhcnQgdGhlIG9uQWN0aXZpdHkgY2FsbGJhY2sgSWRsZSBqb2INCisJCQl0aGlzLnNldEF0dHJpYnV0ZSgibWljYWN0aXZlIiwgdHJ1ZSk7DQorCQkJbS5hZGRFdmVudExpc3RlbmVyKEFjdGl2aXR5RXZlbnQuQUNUSVZJVFksIG9uTWljQWN0aXZpdHkpOw0KKwkJCW0uYWRkRXZlbnRMaXN0ZW5lcihTdGF0dXNFdmVudC5TVEFUVVMsIG9uTWljU3RhdHVzKTsNCisJCTwvaGFuZGxlcj4NCisNCisJCTxtZXRob2QgbmFtZT0ib25NaWNTdGF0dXMiIGFyZ3M9InN0YXRzIj4NCisJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib25NaWNTdGF0dXMgMTogIixzdGF0cyk7DQorCQkJdGhpcy5zZW5kTWljcm9TdGF0dXMuc2VuZEV2ZW50KHN0YXRzLmNvZGUpOw0KKwkJPC9tZXRob2Q+DQorDQorCQk8bWV0aG9kIG5hbWU9Im9uTWljQWN0aXZpdHkiIGFyZ3M9ImV2ZW50Ij4NCisJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib25NaWNBY3Rpdml0eTogIixldmVudCk7DQorCQk8L21ldGhvZD4NCisNCisJCTwhLS0tIEhhbmRsZXIgZm9yIHRoZSBGbGFzaCBNaWNyb3Bob25lIG9uQWN0aXZpdHkgY2FsbGJhY2suDQorCQkJQGtleXdvcmRzIHByaXZhdGUgLS0+DQorCQk8aGFuZGxlciBuYW1lPSJvbm1pY2FjdGl2ZSI+DQorCQk8IVtDREFUQVsNCisJCQlpZiAodGhpcy5vbmxldmVsKSB7DQorCQkJCWlmICh0aGlzLm1pY2FjdGl2ZSkgew0KKwkJCQkJdGhpcy5fbGV2ZWxkZWwucmVnaXN0ZXIobHouSWRsZSwgIm9uaWRsZSIpOw0KKwkJCQl9IGVsc2Ugew0KKwkJCQkJdGhpcy5fbGV2ZWxkZWwudW5yZWdpc3RlckFsbCgpOw0KKwkJCQkJdGhpcy5zZXRBdHRyaWJ1dGUoImxldmVsIiwgMCk7DQorCQkJCX0NCisJCQl9DQorCQldXT4NCisJCTwvaGFuZGxlcj4NCisNCisJCTwhLS0tIEhhbmRsZXIgZm9yIHVwZGF0aW5nIHRoZSBtaWNyb3Bob25lIGFjdGl2aXR5IGxldmVsIGF0dHJpYnV0ZS4NCisJCQlAa2V5d29yZHMgcHJpdmF0ZSAtLT4NCisJCTxtZXRob2QgbmFtZT0iX3VwZGF0ZUxldmVsIiBhcmdzPSJhcmciPg0KKwkJPCFbQ0RBVEFbDQorCQkJaWYgKHRoaXMubWljcm8gPT0gbnVsbCkgew0KKwkJCQlyZXR1cm47DQorCQkJfQ0KKwkJCXZhciBsZXZlbCA9IHRoaXMubWljcm8uYWN0aXZpdHlMZXZlbDsNCisJCQlpZiAobGV2ZWwgPCAwKSB7DQorCQkJCWxldmVsID0gMDsNCisJCQl9DQorDQorCQkJaWYgKGxldmVsICE9IHRoaXMubGV2ZWwpIHsNCisJCQkJdGhpcy5zZXRBdHRyaWJ1dGUoImxldmVsIiwgbGV2ZWwpOw0KKwkJCX0NCisJCV1dPg0KKwkJPC9tZXRob2Q+DQorDQorCQk8IS0tIHRoZXNlIG1ldGhvZHMgc2VuZCBhIE5vdGlmaWNhdGlvbiB0byBhbGwgQ29ubmVjdGVkIHVzZXJzIG9mIGEgUm9vbSANCisJCQlhYm91dCB0aGUgb25BY3Rpdml0eS1DaGFuZ2UgLS0+DQorCQk8aGFuZGxlciBuYW1lPSJvbmxldmVsIiBhcmdzPSJsZXZlbCI+DQorCQk8IVtDREFUQVsNCisJCQkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbmxldmVsICIsdGhpcy5sZXZlbCxsZXZlbCk7DQorCQkJDQorCQkJaWYgKCF0aGlzLmRvU2VuZE5vdGlmaWNhdGlvbikgew0KKwkJCQlyZXR1cm47DQorCQkJfQ0KKwkJCQ0KKwkJCS8vZ3JlYXRlciA1IG1lYW5zIHRoZSBncmVlbiBkb3Qgc3RhcnRzIHRvIGJsaW5rIGlmIHRoZSBsb3VkbmVzcyBpcyBncmVhdGVyIHRoZW4gNSUNCisJCQkvL2l0IG1ha2VzIG5vIHNlbnNlIHRvIHNldCB0aGlzIHRvIHplcm8gYXMgdGhlcmUgd2lsbCBiZSAxMDAwIG9mIGV2ZW50cyBzZW5kDQorCQkJLy9wZXIgbWludXRlIHRvIGNoYW5nZSB0aGUgc3RhdHVzIGp1c3Qgb2YgdGhpcyBpY29uLCBzd2FnbmVyIDEyLjAyLjIwMTINCisJCQl2YXIgdFZhbCA9IChsZXZlbCA+IDgpOw0KKwkJCQ0KKwkJCWlmICh0aGlzLmlzZ3JlYXRlciAhPSB0VmFsKSB7DQorCQkJCS8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIkxldmVsIHNlbmROb3RpZmljYXRpb24gIix0aGlzLmlzZ3JlYXRlcix0VmFsLGxldmVsKTsNCisJCQkJdGhpcy5pc2dyZWF0ZXIgPSB0VmFsOw0KKwkJCQl0aGlzLnNlbmROb3RpZmljYXRpb24oKTsNCisJCQl9DQorCQldXT4NCisJCTwvaGFuZGxlcj4NCisNCisJCTxtZXRob2QgbmFtZT0ic2VuZE5vdGlmaWNhdGlvbiI+DQorCQkJLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiTGV2ZWwgc2VuZE5vdGlmaWNhdGlvbiAiLHRoaXMuaXNncmVhdGVyKTsNCisJCQlpZiAoIXRoaXMuc2VuZE5vdGlmaWNhdGlvblZpYUxvY2FsQ29ubmVjdGlvbikgew0KKwkJCQlyZXR1cm47DQorCQkJfQ0KKwkJCWlmIChwYXJlbnQucGFyZW50Ll9sb3VkbmVzcyAhPSBudWxsKSB7DQorCQkJCXBhcmVudC5wYXJlbnQuX2xvdWRuZXNzLnNldFNwZWFraW5nKHRoaXMuaXNncmVhdGVyKTsNCisJCQl9DQorCQkJdGhpcy5vYmpNZXNzYWdlID0gbmV3IEFycmF5ICgpOw0KKwkJCXRoaXMub2JqTWVzc2FnZVswXSA9ICdhdWRpb0FjdGl2aXR5JzsNCisJCQl0aGlzLm9iak1lc3NhZ2VbMV0gPSB0aGlzLmlzZ3JlYXRlcjsNCisJCQl0aGlzLm9iak1lc3NhZ2VbMl0gPSBwYXJlbnQucGFyZW50LnB1YmxpY1NJRDsNCisJCQkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJMZXZlbCBzZW5kTm90aWZpY2F0aW9uICIsdGhpcy5vYmpNZXNzYWdlKTsNCisJCQl0aGlzLnNlbmRNZXNzYWdlLmRvQ2FsbCgpOw0KKwkJPC9tZXRob2Q+DQorDQorCQk8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJzZW5kTWVzc2FnZSIgZnVuY25hbWU9InNlbmRNZXNzYWdlIg0KKwkJCXJlbW90ZWNvbnRleHQ9IiRvbmNleyBjYW52YXMudGhpc2hpYiB9IiBzaG93TG9hZGluZz0iZmFsc2UiPg0KKwkJCTxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj4gcmV0dXJuIHBhcmVudC5wYXJlbnQub2JqTWVzc2FnZTsgPC9tZXRob2Q+PC9uZXRwYXJhbT4NCisJCTwvbmV0UmVtb3RlQ2FsbEhpYj4NCisJPC9jbGFzcz4NCis8L2xpYnJhcnk+DQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC9iYXNlL3JlbW90ZS9iYXNlVmlkZW9WaWV3Lmx6eCBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9yZW1vdGUvYmFzZVZpZGVvVmlldy5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk3YTUzYQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9yZW1vdGUvYmFzZVZpZGVvVmlldy5sengKQEAgLTAsMCArMSwxMDIgQEAKKzxsaWJyYXJ5Pg0KKzwhLS0NCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgIA0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAgICAJICANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAgdW5kZXIgdGhlIExpY2Vuc2UuDQorICANCistLT4NCisNCisNCis8IS0tLQ0KKwlUaGlzIGNsYXNzIHByb3ZpZGVzIHRoZSBiYXNpYyBmdW5jdGlvbnMgZm9yIHRoZSB2aWRlby1vdXRwdXQNCisNCisJICAgIEBTVEFSVF9DT0RFDQorICAgICAgICAgICAgPGJhc2VWaWRlb1ZpZXcgeD0iMjAiIHk9IjIwIiB3aWR0aD0iMzIwIiBoZWlnaHQ9IjI0MCIgYmdjb2xvcj0iYmxhY2siIC8+DQorICAgICAgICBARU5EX0NPREUNCisgLS0+DQorDQorPGNsYXNzIG5hbWU9ImJhc2VWaWRlb1ZpZXciIHdpZHRoPSIke3BhcmVudC53aWR0aH0iIGhlaWdodD0iJHtwYXJlbnQuaGVpZ2h0fSI+DQorDQorICAgIDxwYXNzdGhyb3VnaCB3aGVuPSIkYXMzIj4NCisgICAgICAgIGltcG9ydCBmbGFzaC5tZWRpYS4qOw0KKyAgICAgICAgaW1wb3J0IGZsYXNoLm5ldC5OZXRDb25uZWN0aW9uOw0KKyAgICAgICAgaW1wb3J0IGZsYXNoLm5ldC5OZXRTdHJlYW07DQorICAgIDwvcGFzc3Rocm91Z2g+DQorDQorICAgIDxhdHRyaWJ1dGUgbmFtZT0iX3NvdW5kIiB2YWx1ZT0ibnVsbCIvPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9Il9fTFp2aWRlbyIgdmFsdWU9Im51bGwiLz4NCisNCisJPG1ldGhvZCBuYW1lPSJpbml0Ij48IVtDREFUQVsNCisgICAgICAgIHN1cGVyLmluaXQoKTsNCisgICAgICAgIHZhciBtYyA9IG5ldyBWaWRlbyh0aGlzLndpZHRoLCB0aGlzLmhlaWdodCk7DQorICAgICAgICB0aGlzLnNwcml0ZS5hZGRDaGlsZChtYyk7DQorICAgICAgICB0aGlzLl9fTFp2aWRlbyA9IG1jOw0KKyAgICAgICAgdGhpcy5hcHBseVNpemVUb1ZpZCgpOw0KKyAgICBdXT48L21ldGhvZD4NCisNCisJPG1ldGhvZCBuYW1lPSJhcHBseVNpemVUb1ZpZCI+DQorCQl2YXIgdmlkID0gdGhpcy5fZ2V0Zmxhc2h2aWRlbygpOw0KKyAgICAgICAgaWYodmlkICE9IG51bGwpIHsNCisgICAgICAgICAgICB2aWQud2lkdGggPSB0aGlzLndpZHRoOw0KKyAgICAgICAgICAgIHZpZC5oZWlnaHQgPSB0aGlzLmhlaWdodDsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud2FybigiYXBwbHlTaXplVG9WaWQgSVMgTlVMTCAiLHRoaXMud2lkdGgsdGhpcy5oZWlnaHQpOw0KKyAgICAgICAgfQ0KKwk8L21ldGhvZD4NCisNCisgICAgPGhhbmRsZXIgbmFtZT0ib253aWR0aCIgYXJncz0idyI+DQorICAgIAkvL2lmICgkZGVidWcpIERlYnVnLmluZm8oIm9ud2lkdGggIix0aGlzLndpZHRoLHRoaXMuaGVpZ2h0KTsNCisgICAgICAgIHRoaXMuYXBwbHlTaXplVG9WaWQoKTsNCisgICAgPC9oYW5kbGVyPg0KKw0KKyAgICA8aGFuZGxlciBuYW1lPSJvbmhlaWdodCIgYXJncz0iaCI+DQorICAgIAkvL2lmICgkZGVidWcpIERlYnVnLmluZm8oIm9uaGVpZ2h0ICIsdGhpcy53aWR0aCx0aGlzLmhlaWdodCk7DQorICAgICAgICB0aGlzLmFwcGx5U2l6ZVRvVmlkKCk7DQorICAgIDwvaGFuZGxlcj4NCisNCisJPG1ldGhvZCBuYW1lPSJfZ2V0Zmxhc2h2aWRlbyI+DQorCTwhW0NEQVRBWw0KKwkJaWYgKF9fTFp2aWRlbyA9PSBudWxsKSB7DQorCQkJaW5pdCgpOw0KKwkJfQ0KKwkJLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiX2dldGZsYXNodmlkZW8oKSIpOw0KKwkJcmV0dXJuIHRoaXMuX19MWnZpZGVvOw0KKwldXT4NCisJPC9tZXRob2Q+DQorDQorICAgIDxtZXRob2QgbmFtZT0iYXR0YWNoQ2FtZXJhIiBhcmdzPSJjYW1lcmEiPg0KKyAgICAgICAgdmFyIHZpZCA9IHRoaXMuX2dldGZsYXNodmlkZW8oKTsNCisgICAgCXZpZC5hdHRhY2hDYW1lcmEoY2FtZXJhKTsNCisgICAgPC9tZXRob2Q+DQorDQorICAgIDwhLS0tIHNob3dzIHRoZSBWaWRlbyAoTmV0U3RyZWFtKSBpbiB0aGUgVmlldyAtLT4NCisgICAgPG1ldGhvZCBuYW1lPSJhdHRhY2hWaWRlbyIgYXJncz0idmlkZW8iPg0KKyAgICAJdmFyIHZpZCA9IHRoaXMuX2dldGZsYXNodmlkZW8oKTsNCisgICAgCXZpZC5hdHRhY2hOZXRTdHJlYW0odmlkZW8pOw0KKyAgICA8L21ldGhvZD4NCisNCisJPG1ldGhvZCBuYW1lPSJjbGVhciI+DQorCSAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiU2VsZWN0IHVuYXR0YWNoIDozIik7DQorCQl2YXIgdmlkID0gdGhpcy5fZ2V0Zmxhc2h2aWRlbygpOw0KKwkJdmlkLmF0dGFjaE5ldFN0cmVhbShudWxsKTsNCisJCXZpZC5hdHRhY2hDYW1lcmEobnVsbCk7DQorCQl0aGlzLl9fTFp2aWRlby5jbGVhcigpOw0KKwkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIlNlbGVjdCB1bmF0dGFjaCA6IDQiKTsNCisJPC9tZXRob2Q+DQorPC9jbGFzcz4NCisNCisNCis8L2xpYnJhcnk+DQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC9iYXNlL3JlbW90ZS9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9yZW1vdGUvbGlicmFyeS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMThiOGNiOAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9yZW1vdGUvbGlicmFyeS5sengKQEAgLTAsMCArMSwzMCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+DQorPCEtLQ0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAgDQorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICAgIAkgIA0KKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICB1bmRlciB0aGUgTGljZW5zZS4NCisgIA0KKy0tPg0KKzxsaWJyYXJ5Pg0KKwkNCisJPCEtLSBuZXcgTGlicmFyeSAtLT4NCisJPGluY2x1ZGUgaHJlZj0iYmFzZVZpZGVvVmlldy5sengiIC8+DQorCTxpbmNsdWRlIGhyZWY9ImJhc2VWaWRlb1N0cmVhbS5sengiIC8+DQorCTxpbmNsdWRlIGhyZWY9ImJhc2VWaWRlb1N0cmVhbURldmljZS5sengiIC8+DQorCTxpbmNsdWRlIGhyZWY9InJ0bXBDb25uZWN0aW9uLmx6eCIgLz4NCisJPGluY2x1ZGUgaHJlZj0ic2hhcmVkT2JqZWN0Lmx6eCIgLz4NCisgICAgDQorPC9saWJyYXJ5Pg0KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9yZW1vdGUvcnRtcENvbm5lY3Rpb24ubHp4IGIvV2ViQ29udGVudC9zd2YxMC9iYXNlL3JlbW90ZS9ydG1wQ29ubmVjdGlvbi5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWNmYjY5ZgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3dmMTAvYmFzZS9yZW1vdGUvcnRtcENvbm5lY3Rpb24ubHp4CkBAIC0wLDAgKzEsMzc1IEBACis8bGlicmFyeT4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorDQorDQorPGNsYXNzIG5hbWU9InJ0bXBDb25uZWN0aW9uIiBleHRlbmRzPSJub2RlIj4NCisNCisgICAgICAgIDxzd2l0Y2g+DQorICAgICAgICAgICAgPHdoZW4gcHJvcGVydHk9IiRhczMiPg0KKyAgICAgICAgICAgICAgICA8cGFzc3Rocm91Z2g+DQorICAgICAgICAgICAgICAgICAgICBpbXBvcnQgZmxhc2gubmV0Lk5ldENvbm5lY3Rpb247DQorICAgICAgICAgICAgICAgICAgICBpbXBvcnQgZmxhc2guZXZlbnRzLk5ldFN0YXR1c0V2ZW50Ow0KKyAgICAgICAgICAgICAgICA8L3Bhc3N0aHJvdWdoPg0KKyAgICAgICAgICAgIDwvd2hlbj4NCisgICAgICAgIDwvc3dpdGNoPg0KKw0KKyAgICAJPGF0dHJpYnV0ZSBuYW1lPSJkZWJ1ZyIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPg0KKyAgICAJDQorICAgIAk8ZXZlbnQgbmFtZT0ib25jb25uZWN0Ii8+DQorICAgIAk8ZXZlbnQgbmFtZT0ib25lcnJvciIvPg0KKyAgICAgICAgDQorICAgICAgICA8IS0tIHRoaXMgYXR0cmlidXRlIGhvbGRzIGEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50L2xhc3QgY2FsbGVkIG5ldHJlbW90ZUNhbGwsDQorICAgICAgICBpbiBjYXNlIG9mIGVycm9yIHlvdSBjYW4gZGVidWcgdGhhdCB3YXkgd2hpY2ggY2FsbCBkaWQgZmFpbCAtLT4NCisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ibGFzdENhbGxlZCIgdmFsdWU9Im51bGwiIC8+DQorICAgIAkNCisgICAgCTxhdHRyaWJ1dGUgbmFtZT0ic3JjIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciLz4NCisNCisJCTxtZXRob2QgbmFtZT0iY29ubmVjdCI+DQorICAgICAgICAgICAgdGhpcy5fbmMgPSBuZXcgTmV0Q29ubmVjdGlvbigpOw0KKw0KKyAgICAgICAgICAgIC8vIGxvY2FsIHJlZmVyZW5jZSB0byBydG1wY29ubmVjdGlvbg0KKyAgICAgICAgICAgIC8vdGhpcy5fbmMudCA9IHRoaXM7DQorICAgICAgICAgICAgDQorICAgICAgICAgICAgdGhpcy5fbmMucHJveHlUeXBlID0gY2FudmFzLnByb3h5VHlwZTsNCisgICAgICAgICAgICANCisgICAgICAgICAgICB2YXIgb2sgPSB0aGlzLl9uYy5jb25uZWN0KHNyYyA9PSAibnVsbCIgPyBudWxsIDogc3JjLCB0cnVlKTsgLy9pc0FWQ2xpZW50ID0gdHJ1ZQ0KKyAgICAgICAgICAgIGlmICh0aGlzLmRlYnVnKSB7DQorICAgICAgICAgICAgCWlmKCRkZWJ1ZykgRGVidWcud3JpdGUoIioqKiBkZWJ1ZyAqKioiKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgDQorICAgICAgICAgICAgdGhpcy5fbmMuYWRkRXZlbnRMaXN0ZW5lcihOZXRTdGF0dXNFdmVudC5ORVRfU1RBVFVTLCBfb25TdGF0dXMpOw0KKyAgICAgICAgICAgIA0KKyAgICAJCWlmKCRkZWJ1ZykgRGVidWcud3JpdGUoImRldlJ0bXBDb25uZWN0aW9uL3JlZ2lzdGVyTWV0aG9kcygpIik7DQorICAgIAkJdmFyIGNsaWVudE9iaiA9IHt9Ow0KKyAgICAJCWNsaWVudE9iai5zZXRJZCA9IHRoaXMuc2V0SWQ7DQorICAgIAkJDQorICAgIAkJdGhpcy5fbmMuY2xpZW50ID0gY2xpZW50T2JqOw0KKyAgICAJCQ0KKwkJCS8vUmVnaXN0ZXIgTWV0aG9kcw0KKwkJCS8vdGhpcy5yZWdpc3Rlck1ldGhvZHMoKTsNCisJCTwvbWV0aG9kPg0KKwkJDQorCQk8bWV0aG9kIG5hbWU9InNldElkIiBhcmdzPSJ0SWQiPg0KKwkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzZXRJZCAiLCB0SWQpOw0KKwkJPC9tZXRob2Q+DQorCQkNCisgICAgICAgIDxtZXRob2QgbmFtZT0iX29uU3RhdHVzIiBhcmdzPSJzdGF0cyI+PCFbQ0RBVEFbDQorICAgICAgICAgICAgaWYgKCRkZWJ1Zykgew0KKyAgICAgICAgICAgICAgICBEZWJ1Zy53cml0ZSgiZGV2cnRtcGNvbm5lY3Rpb24iLCB0aGlzLCAiX29uU3RhdHVzIiwgc3RhdHMuaW5mby5jb2RlKTsNCisgICAgICAgICAgICB9DQorDQorICAgICAgICAgICAgdmFyIG1zZyA9ICIiOw0KKyAgICAgICAgICAgIHZhciBzOw0KKw0KKyAgICAgICAgICAgIHN3aXRjaCAoc3RhdHMuaW5mby5jb2RlKSB7DQorDQorICAgICAgICAgICAgICAgIGNhc2UgIk5ldENvbm5lY3Rpb24uQ29ubmVjdC5TdWNjZXNzIjogew0KKyAgICAgICAgICAgICAgICAgICAgLy8gVGhlIGNvbm5lY3Rpb24gYXR0ZW1wdCBzdWNjZWVkZWQuDQorICAgICAgICAgICAgICAgICAgICAvL2NhbnZhcy5jdXJyZW50TkMgaXMgdGhlIHJlZmVyZW5jZSB0byB0aGUgTmV0Q29ubmVjdGlvbiB0aGF0IGlzIHVzZWQgaW4gdGhlIE5ldFN0cmVhbQ0KKyAgICAgICAgICAgICAgICAgICAgbXNnID0gc3RhdHMuaW5mby5jb2RlOw0KKyAgICAgICAgICAgICAgICAgICAgY2FudmFzLmN1cnJlbnROQyA9IHRoaXMuX25jOw0KKyAgICAgICAgICAgICAgICAgICAgcyA9IDI7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAgY2FzZSAiTmV0Q29ubmVjdGlvbi5Db25uZWN0LkNsb3NlZCI6IHsNCisgICAgICAgICAgICAgICAgICAgIG1zZyA9IHN0YXRzLmluZm8uY29kZTsNCisgICAgICAgICAgICAgICAgICAgIHRoaXMuX25jID0gbnVsbDsNCisgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5jdXJyZW50TkMgPSBudWxsOw0KKyAgICAgICAgICAgICAgICAgICAgcyA9IDA7DQorICAgICAgICAgICAgICAgICAgICBicmVhazsNCisgICAgICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgICAgICAgICBkZWZhdWx0OiB7DQorICAgICAgICAgICAgICAgICAgICBtc2cgPSBzdGF0cy5pbmZvLmNvZGU7DQorICAgICAgICAgICAgICAgICAgICBzID0gMDsNCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOw0KKyAgICAgICAgICAgICAgICB9DQorDQorICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJzdGF0dXMiLCBtc2cpOw0KKw0KKyAgICAgICAgICAgIGlmIChzID09IDIpIHsNCisgICAgICAgICAgICAgICAgdGhpcy5vbmNvbm5lY3Quc2VuZEV2ZW50KCk7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAJdGhpcy5vbmVycm9yLnNlbmRFdmVudCgpOw0KKyAgICAgICAgICAgIH0NCisNCisgICAgICAgICAgXV0+DQorICAgICAgICA8L21ldGhvZD4JDQorICAgICAgICANCisgICAgICAgIDxtZXRob2QgbmFtZT0iZGlzY29ubmVjdCI+DQorICAgICAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIiBESVNDT05ORUNUICIpOw0KKyAgICAgICAgCWlmICh0aGlzLl9uYyAhPSBudWxsKSB7DQorICAgICAgICAgICAgICAgIHRoaXMuX25jLmNsb3NlKCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgPC9tZXRob2Q+DQorICAgIDwhLS0tIA0KKyAgICAgICAgV2l0aCB0aGlzIGZ1bmN0aW9uIGFsbCBtZXRob2RzIGFyZSByZWdpc3RlcmVkIHRvIHRoZSBOZXRDb25uZWN0aW9uDQorICAgICAgICBBIHNlcnZlciBjYW4gaW52b2tlIHRoaXMgTWV0aG9kIHdpdGggYSBjYWxsIGZvciBpdCBmcm9tIHRoZSBDbGllbnQNCisgICAgICAgIE9ubHkgc3Vibm9kZXMgb2YgcnRtcGNvbm5lY3Rpb25zIHdoaWNoIGFyZSBhIGluc3RhbmNlIG9mIG5ldFJlbW90ZUNhbGxIaWINCisgICAgICAgIGFyZSByZWdpc3RlcmVkLCB0byBhZGQgZHluYW1pY2FsbHkgbWV0aG9kcyB0byB0aGUgcmVtb3RlZnVuY3Rpb24geW91IHdpbGwNCisgICAgICAgIGhhdmUgdG8gaW52b2tlIHRoaXMgbWV0aG9kIG9uY2UgYWdhaW4NCisgICAgICAgIC1zd2FnbmVyDQorICAgICAtLT4NCisgICAgPG1ldGhvZCBuYW1lPSJyZWdpc3Rlck1ldGhvZHMiPg0KKyAgICAgICAgPCFbQ0RBVEFbDQorCSAgICAgICAgaWYgKHRoaXMuc3Vibm9kZXMhPW51bGwpew0KKwkgICAgICAgICAgICB2YXIgY2xpZW50T2JqID0ge307DQorCQkgICAgICAgIC8vUmVnaXN0ZXIgYWxsIG1ldGhvZHMgd2hpY2ggYXJlIG9uc3RhbmNlb2YgbmV0UmVtb3RlQ2FsbEhpYg0KKwkJICAgICAgICBmb3IgKHZhciBpPTA7aTx0aGlzLnN1Ym5vZGVzLmxlbmd0aDtpKyspew0KKwkJICAgICAgICAgICAgLy9JZiBpdCBpcyBvZiBUeXBlIG5ldFJlbW90ZUNhbGxIaWIgdGhlbiByZWdpc3RlciBpdCB0byB0aGUgTmV0Q29ubmVjdGlvbg0KKwkJICAgICAgICAgICAgaWYgKHRoaXMuc3Vibm9kZXNbaV0gaW5zdGFuY2VvZiBsei5uZXRSZW1vdGVDYWxsSGliKXsNCisJCSAgICAgICAgICAgICAgICBjbGllbnRPYmpbdGhpcy5zdWJub2Rlc1tpXS5mdW5jbmFtZV0gPSBmdW5jdGlvbiggYXJncyApew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gY2FudmFzLnRoaXNoaWIucmVtb3RlQ2FsbE1ldGhvZChhcmd1bWVudHMuY2FsbGVlLGFyZ3VtZW50cyk7DQorCQkgICAgICAgICAgICAgICAgICAgIC8vcmV0dXJuIGhpYi5yZW1vdGVDYWxsTWV0aG9kKGFyZ3VtZW50cy5jYWxsZWUsYXJncyk7DQorCQkgICAgICAgICAgICAgICAgfQ0KKwkJICAgICAgICAgICAgfQ0KKwkJICAgICAgICB9DQorCQkgICAgICAgIHRoaXMuX25jLmNsaWVudCA9IGNsaWVudE9iajsNCisgICAgICAgIAl9DQorICAgICAgICBdXT4NCisgICAgPC9tZXRob2Q+DQorICAgIA0KKyAgICA8IS0tIA0KKyAgICAgICAgUHJvY2VzcyB0aGUgUmVtb3RlQ2FsbCB0byB0aGUgUmlnaHQgRnVudGlvbg0KKyAgICAgICAgLXN3YWduZXINCisgICAgIC0tPg0KKyAgICA8bWV0aG9kIG5hbWU9InJlbW90ZUNhbGxNZXRob2QiIGFyZ3M9ImNhbGxlZSxhcmdzIj4NCisgICAgICAgIDwhW0NEQVRBWw0KKyAgICAgICAgICAgIGZvciAodmFyIGVnIGluIHRoaXMuX25jKXsNCisgICAgICAgICAgICAgICAgaWYgKHRoaXMuX25jW2VnXT09Y2FsbGVlKXsNCisgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmRlYnVnKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgLy9fcm9vdC5EZWJ1Zy53cml0ZS53cml0ZSgiREVCVUcgaW52b2tlZCBhIGZ1bmN0aW9uIHJlbW90ZWx5OiAiLGVnLGFyZ3MpOw0KKyAgICAgICAgICAgICAgICAgICAgfSAgICANCisgICAgICAgICAgICAgICAgICAgIGlmIChhcmdzLmxlbmd0aCA9PSAxKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2FsbEZ1bnRpb24oZWcsYXJnc1swXSk7DQorICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLmNhbGxGdW50aW9uKGVnLGFyZ3MpOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgLy9yZXR1cm4gdGhpcy5jYWxsRnVudGlvbihlZyxhcmdzKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIF1dPg0KKyAgICA8L21ldGhvZD4NCisgICAgDQorICAgIDwhLS0gDQorICAgICAgICBNYXAgdGhlIEZ1bmN0aW9uIHRvIGEgbmV0UmVtb3RlQ2FsbEhpYg0KKyAgICAgICAgLXN3YWduZXINCisgICAgIC0tPg0KKyAgICA8bWV0aG9kIG5hbWU9ImNhbGxGdW50aW9uIiBhcmdzPSJmdW5jbmFtZSxhcmdzIj4NCisgICAgICAgIDwhW0NEQVRBWw0KKyAgICAgICAgICAgIGZvciAodmFyIGk9MDtpPHRoaXMuc3Vibm9kZXMubGVuZ3RoO2krKyl7DQorICAgICAgICAgICAgICAgIGlmICh0aGlzLnN1Ym5vZGVzW2ldLmZ1bmNuYW1lPT1mdW5jbmFtZSl7DQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gdGhpcy5zdWJub2Rlc1tpXS5vblJlc3VsdChhcmdzKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgICAgIF1dPg0KKyAgICA8L21ldGhvZD4JCQ0KKyAgICANCisgICAgPG1ldGhvZCBuYW1lPSJjYWxsUlBDIiBhcmdzPSJmdW5jLCBvYmosIHBhcmFtcyI+DQorICAgIAkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCIqKiogY2FsbDogZnVuYywgb2JqLCBwYXJhbXMiLGZ1bmMsb2JqLCB0eXBlb2YgKHBhcmFtcykgLHBhcmFtcy5sZW5ndGgpOw0KKyAgICAJaWYgKHBhcmFtcy5sZW5ndGggIT0gMCl7DQorCSAgICAJLy9kb2VzIHRoaXMgcmVhbGx5IHdvcms/DQorCSAgICAJLy9BU1NldFByb3BGbGFncyhfZ2xvYmFsLCBudWxsLCA4LCAxKTsNCisgICAgICAgICAgICAvL3NldFByb3BlcnR5SXNFbnVtZXJhYmxlKDgsIDEpOw0KKwkgICAgCS8vRGVidWcud3JpdGUoImRvZXMgaXQgd29yaz8iLGFyZ3VtZW50cyk7DQorCSAgICAJPCEtLQ0KKwkgICAgCXRoaXMuX25jLmNhbGwuYXBwbHkodGhpcy5fbmMsYXJndW1lbnRzKTsNCisJICAgIAkgLS0+DQorCQkJaWYgKHBhcmFtcy5sZW5ndGg9PTEpew0KKwkJCSAgICB0aGlzLl9uYy5jYWxsKGZ1bmMsIG9iaixwYXJhbXNbMF0pOw0KKwkJCX0gZWxzZSBpZiAocGFyYW1zLmxlbmd0aD09Mil7DQorCQkJICAgIHRoaXMuX25jLmNhbGwoZnVuYywgb2JqLHBhcmFtc1swXSxwYXJhbXNbMV0pOw0KKwkJCX0gZWxzZSBpZiAocGFyYW1zLmxlbmd0aD09Myl7DQorCQkJICAgIHRoaXMuX25jLmNhbGwoZnVuYywgb2JqLHBhcmFtc1swXSxwYXJhbXNbMV0scGFyYW1zWzJdKTsNCisJCQl9IGVsc2UgaWYgKHBhcmFtcy5sZW5ndGg9PTQpew0KKwkJCSAgICB0aGlzLl9uYy5jYWxsKGZ1bmMsIG9iaixwYXJhbXNbMF0scGFyYW1zWzFdLHBhcmFtc1syXSxwYXJhbXNbM10pOw0KKwkJCX0gZWxzZSBpZiAocGFyYW1zLmxlbmd0aD09NSl7DQorCQkJICAgIHRoaXMuX25jLmNhbGwoZnVuYywgb2JqLHBhcmFtc1swXSxwYXJhbXNbMV0scGFyYW1zWzJdLHBhcmFtc1szXSxwYXJhbXNbNF0pOw0KKwkJCX0gZWxzZSBpZiAocGFyYW1zLmxlbmd0aD09Nil7DQorCQkJICAgIHRoaXMuX25jLmNhbGwoZnVuYywgb2JqLHBhcmFtc1swXSxwYXJhbXNbMV0scGFyYW1zWzJdLHBhcmFtc1szXSxwYXJhbXNbNF0scGFyYW1zWzVdKTsNCisJCQl9IGVsc2UgaWYgKHBhcmFtcy5sZW5ndGg9PTcpew0KKwkJCSAgICB0aGlzLl9uYy5jYWxsKGZ1bmMsIG9iaixwYXJhbXNbMF0scGFyYW1zWzFdLHBhcmFtc1syXSxwYXJhbXNbM10scGFyYW1zWzRdLHBhcmFtc1s1XSxwYXJhbXNbNl0pOw0KKwkJCX0gZWxzZSBpZiAocGFyYW1zLmxlbmd0aD09OCl7DQorCQkJICAgIHRoaXMuX25jLmNhbGwoZnVuYywgb2JqLHBhcmFtc1swXSxwYXJhbXNbMV0scGFyYW1zWzJdLHBhcmFtc1szXSxwYXJhbXNbNF0scGFyYW1zWzVdLHBhcmFtc1s2XSxwYXJhbXNbN10pOw0KKwkJCX0gZWxzZSBpZiAocGFyYW1zLmxlbmd0aD09OSl7DQorCQkJICAgIHRoaXMuX25jLmNhbGwoZnVuYywgb2JqLHBhcmFtc1swXSxwYXJhbXNbMV0scGFyYW1zWzJdLHBhcmFtc1szXSxwYXJhbXNbNF0scGFyYW1zWzVdLHBhcmFtc1s2XSxwYXJhbXNbN10scGFyYW1zWzhdKTsNCisJCQl9IGVsc2UgaWYgKHBhcmFtcy5sZW5ndGg9PTEwKXsNCisJCQkgICAgdGhpcy5fbmMuY2FsbChmdW5jLCBvYmoscGFyYW1zWzBdLHBhcmFtc1sxXSxwYXJhbXNbMl0scGFyYW1zWzNdLHBhcmFtc1s0XSxwYXJhbXNbNV0scGFyYW1zWzZdLHBhcmFtc1s3XSxwYXJhbXNbOF0scGFyYW1zWzldKTsNCisJCQl9IGVsc2UgaWYgKHBhcmFtcy5sZW5ndGg9PTExKXsNCisJCQkgICAgdGhpcy5fbmMuY2FsbChmdW5jLCBvYmoscGFyYW1zWzBdLHBhcmFtc1sxXSxwYXJhbXNbMl0scGFyYW1zWzNdLHBhcmFtc1s0XSxwYXJhbXNbNV0scGFyYW1zWzZdLHBhcmFtc1s3XSxwYXJhbXNbOF0scGFyYW1zWzldLHBhcmFtc1sxMF0pOw0KKwkJCX0gZWxzZSBpZiAocGFyYW1zLmxlbmd0aD09MTIpew0KKwkJCSAgICB0aGlzLl9uYy5jYWxsKGZ1bmMsIG9iaixwYXJhbXNbMF0scGFyYW1zWzFdLHBhcmFtc1syXSxwYXJhbXNbM10scGFyYW1zWzRdLHBhcmFtc1s1XSxwYXJhbXNbNl0scGFyYW1zWzddLHBhcmFtc1s4XSxwYXJhbXNbOV0scGFyYW1zWzEwXSxwYXJhbXNbMTFdKTsNCisJCQl9IGVsc2UgaWYgKHBhcmFtcy5sZW5ndGg9PTEzKXsNCisJCQkgICAgdGhpcy5fbmMuY2FsbChmdW5jLCBvYmoscGFyYW1zWzBdLHBhcmFtc1sxXSxwYXJhbXNbMl0scGFyYW1zWzNdLHBhcmFtc1s0XSxwYXJhbXNbNV0scGFyYW1zWzZdLHBhcmFtc1s3XSxwYXJhbXNbOF0scGFyYW1zWzldLHBhcmFtc1sxMF0scGFyYW1zWzExXSxwYXJhbXNbMTJdKTsNCisJCQl9IGVsc2UgaWYgKHBhcmFtcy5sZW5ndGg9PTE0KXsNCisJCQkgICAgdGhpcy5fbmMuY2FsbChmdW5jLCBvYmoscGFyYW1zWzBdLHBhcmFtc1sxXSxwYXJhbXNbMl0scGFyYW1zWzNdLHBhcmFtc1s0XSxwYXJhbXNbNV0scGFyYW1zWzZdLHBhcmFtc1s3XSxwYXJhbXNbOF0scGFyYW1zWzldLHBhcmFtc1sxMF0scGFyYW1zWzExXSxwYXJhbXNbMTJdLHBhcmFtc1sxM10pOw0KKwkJCX0gZWxzZSBpZiAocGFyYW1zLmxlbmd0aD09MTUpew0KKwkJCSAgICB0aGlzLl9uYy5jYWxsKGZ1bmMsIG9iaixwYXJhbXNbMF0scGFyYW1zWzFdLHBhcmFtc1syXSxwYXJhbXNbM10scGFyYW1zWzRdLHBhcmFtc1s1XSxwYXJhbXNbNl0scGFyYW1zWzddLHBhcmFtc1s4XSxwYXJhbXNbOV0scGFyYW1zWzEwXSxwYXJhbXNbMTFdLHBhcmFtc1sxMl0scGFyYW1zWzEzXSxwYXJhbXNbMTRdKTsNCisJCQl9IGVsc2UgaWYgKHBhcmFtcy5sZW5ndGg9PTE2KXsNCisJCQkgICAgdGhpcy5fbmMuY2FsbChmdW5jLCBvYmoscGFyYW1zWzBdLHBhcmFtc1sxXSxwYXJhbXNbMl0scGFyYW1zWzNdLHBhcmFtc1s0XSxwYXJhbXNbNV0scGFyYW1zWzZdLHBhcmFtc1s3XSxwYXJhbXNbOF0scGFyYW1zWzldLHBhcmFtc1sxMF0scGFyYW1zWzExXSxwYXJhbXNbMTJdLHBhcmFtc1sxM10scGFyYW1zWzE0XSxwYXJhbXNbMTVdKTsNCisJCQl9IGVsc2UgaWYgKHBhcmFtcy5sZW5ndGg9PTE3KXsNCisJCQkgICAgdGhpcy5fbmMuY2FsbChmdW5jLCBvYmoscGFyYW1zWzBdLHBhcmFtc1sxXSxwYXJhbXNbMl0scGFyYW1zWzNdLHBhcmFtc1s0XSxwYXJhbXNbNV0scGFyYW1zWzZdLHBhcmFtc1s3XSxwYXJhbXNbOF0scGFyYW1zWzldLHBhcmFtc1sxMF0scGFyYW1zWzExXSxwYXJhbXNbMTJdLHBhcmFtc1sxM10scGFyYW1zWzE0XSxwYXJhbXNbMTVdLHBhcmFtc1sxNl0pOw0KKwkJCX0gZWxzZSBpZiAocGFyYW1zLmxlbmd0aD09MTgpew0KKwkJCSAgICB0aGlzLl9uYy5jYWxsKGZ1bmMsIG9iaixwYXJhbXNbMF0scGFyYW1zWzFdLHBhcmFtc1syXSxwYXJhbXNbM10scGFyYW1zWzRdLHBhcmFtc1s1XSxwYXJhbXNbNl0scGFyYW1zWzddLHBhcmFtc1s4XSxwYXJhbXNbOV0scGFyYW1zWzEwXSxwYXJhbXNbMTFdLHBhcmFtc1sxMl0scGFyYW1zWzEzXSxwYXJhbXNbMTRdLHBhcmFtc1sxNV0scGFyYW1zWzE2XSxwYXJhbXNbMTddKTsNCisJCQl9IGVsc2UgaWYgKHBhcmFtcy5sZW5ndGg9PTE5KXsNCisJCQkgICAgdGhpcy5fbmMuY2FsbChmdW5jLCBvYmoscGFyYW1zWzBdLHBhcmFtc1sxXSxwYXJhbXNbMl0scGFyYW1zWzNdLHBhcmFtc1s0XSxwYXJhbXNbNV0scGFyYW1zWzZdLHBhcmFtc1s3XSxwYXJhbXNbOF0scGFyYW1zWzldLHBhcmFtc1sxMF0scGFyYW1zWzExXSxwYXJhbXNbMTJdLHBhcmFtc1sxM10scGFyYW1zWzE0XSxwYXJhbXNbMTVdLHBhcmFtc1sxNl0scGFyYW1zWzE3XSxwYXJhbXNbMThdKTsNCisJCQl9IGVsc2UgaWYgKHBhcmFtcy5sZW5ndGg9PTIwKXsNCisJCQkgICAgdGhpcy5fbmMuY2FsbChmdW5jLCBvYmoscGFyYW1zWzBdLHBhcmFtc1sxXSxwYXJhbXNbMl0scGFyYW1zWzNdLHBhcmFtc1s0XSxwYXJhbXNbNV0scGFyYW1zWzZdLHBhcmFtc1s3XSxwYXJhbXNbOF0scGFyYW1zWzldLHBhcmFtc1sxMF0scGFyYW1zWzExXSxwYXJhbXNbMTJdLHBhcmFtc1sxM10scGFyYW1zWzE0XSxwYXJhbXNbMTVdLHBhcmFtc1sxNl0scGFyYW1zWzE3XSxwYXJhbXNbMThdLHBhcmFtc1sxOV0pOw0KKwkJCX0JICAgIAkgDQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHRoaXMuX25jLmNhbGwoZnVuYywgb2JqKTsNCisgICAgICAgIH0NCisgICAgPC9tZXRob2Q+DQorICAgIA0KKzwvY2xhc3M+DQorDQorDQorICAgIDwhLS0tDQorICAgICAgICBOZXQgcmVtb3RlIGNhbGwuIA0KKyAgICAgICAgQHRvZG8gRG9jdW1lbnQgbmV0cmVtb3RlY2FsbCBjbGFzcy4NCisgICAgLS0+DQorICAgIDxjbGFzcyBuYW1lPSJuZXRyZW1vdGVjYWxsIiBleHRlbmRzPSJub2RlIj4NCisNCisgICAgICAgIDxzd2l0Y2g+DQorICAgICAgICAgICAgPHdoZW4gcHJvcGVydHk9IiRhczMiPg0KKyAgICAgICAgICAgICAgICA8cGFzc3Rocm91Z2g+DQorICAgICAgICAgICAgICAgICAgICBpbXBvcnQgZmxhc2gubmV0LlJlc3BvbmRlcjsNCisgICAgICAgICAgICAgICAgPC9wYXNzdGhyb3VnaD4NCisgICAgICAgICAgICA8L3doZW4+DQorICAgICAgICA8L3N3aXRjaD4NCisNCisgICAgICAgIDwhLS0tIE5hbWUgb2YgdGhlIHJlbW90ZSBmdW5jdGlvbi4gLS0+DQorICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImZ1bmNuYW1lIiB2YWx1ZT0iJG9uY2V7bnVsbH0iIHR5cGU9InN0cmluZyIgLz4NCisgICAgDQorICAgICAgICA8YXR0cmlidXRlIG5hbWU9InJlbW90ZWNvbnRleHQiIHZhbHVlPSJudWxsIiAvPg0KKyAgICANCisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iZGF0YW9iamVjdCIgdmFsdWU9Im51bGwiIC8+DQorDQorICAgICAgICA8YXR0cmlidXRlIG5hbWU9InJlc3BvbmRlciIgdmFsdWU9Im51bGwiIC8+DQorCQkNCisgICAgICAgIDwhLS0tIERhdGEgaGFuZGxpbmcgZXZlbnQuIGFyZ3M9InZhbHVlIiAgLS0+DQorICAgICAgICA8ZXZlbnQgbmFtZT0ib25kYXRhIiAvPg0KKw0KKyAgICAgICAgPCEtLS0gRXJyb3IgaGFuZGxpbmcgZXZlbnQuIC0tPg0KKyAgICAgICAgPGV2ZW50IG5hbWU9Im9uZXJyb3IiLz4NCisNCisgICAgICAgIDwhLS0tIENhbGwgdGhlIHJlbW90ZSBtZXRob2QsIHBhc3NpbmcgdGhlIGFycmF5IG9mIHBhcmFtcy4gLS0+DQorICAgICAgICA8bWV0aG9kIG5hbWU9ImNhbGxSUEMiIGFyZ3M9InBhcmFtcyI+PCFbQ0RBVEFbDQorICAgICAgICAgICAgaWYgKHRoaXMuZnVuY25hbWUgPT0gbnVsbCkgew0KKyAgICAgICAgICAgICAgICAvL0RlYnVnLndyaXRlKCJObyBmdW5jbmFtZSBnaXZlbiIpOw0KKyAgICAgICAgICAgICAgICBpZiAodGhpcy5vbmVycm9yKSB0aGlzLm9uZXJyb3Iuc2VuZEV2ZW50KCJObyBmdW5jbmFtZSBnaXZlbiIpOw0KKyAgICAgICAgICAgICAgICByZXR1cm47DQorICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgICAgIGlmIChwYXJhbXMgPT0gbnVsbCkgew0KKyAgICAgICAgICAgICAgICBwYXJhbXMgPSBuZXcgQXJyYXkoKTsNCisNCisgICAgICAgICAgICAgICAgdmFyIHN1Ym5vZGVzID0gdGhpcy5zdWJub2RlczsNCisgICAgICAgICAgICAgICAgaWYgKHN1Ym5vZGVzICE9IG51bGwpIHsNCisgICAgICAgICAgICAgICAgICAgIHZhciBpOw0KKyAgICAgICAgICAgICAgICAgICAgdmFyIG4gPSBzdWJub2Rlcy5sZW5ndGg7DQorICAgICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgLy8gSWYgZ2V0VmFsdWUgbWV0aG9kIGlzIGRlY2xhcmVkIGluIHBhcmFtLCBjYWxsIHRoYXQNCisgICAgICAgICAgICAgICAgICAgICAgICAvLyBpbnN0ZWFkIHRvIGdldCB2YWx1ZS4NCisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdHNpID0gc3Vibm9kZXNbaV07DQorICAgICAgICAgICAgICAgICAgICAgICAgLy9UT0RPOiBmaXhtZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vaWYgKCh0c2lbImdldFZhbHVlIl0gIT0gbnVsbCkgJiYgKHRzaS5nZXRWYWx1ZVsicHJvdG90eXBlIl0gIT0gbnVsbCkpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICBwYXJhbXNbaV0gPSB0c2kuZ2V0VmFsdWUoKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICBEZWJ1Zy53cml0ZSgidHNpLmdldFZhbHVlKCk6IiwgdHNpLmdldFZhbHVlKCkpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAvLyAgICBwYXJhbXNbaV0gPSB0c2kudmFsdWU7DQorICAgICAgICAgICAgICAgICAgICAgICAgLy99DQorICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zW2ldID0gdHNpLmdldFZhbHVlKCk7DQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisNCisgICAgICAgICAgICB9IGVsc2UgaWYgKHBhcmFtcy5fX3Byb3RvX18gIT0gQXJyYXkucHJvdG90eXBlKSB7DQorICAgICAgICAgICAgICAgIC8vRGVidWcud3JpdGUodGhpcy5uYW1lLCAiZXJyb3I6IGZpcnN0IGFyZ3VtZW50IChwYXJhbXMpIGlzIG5vdCBhbiBhcnJheSIpOw0KKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7DQorICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImNhbGwiLCB0aGlzLCB0aGlzLnBhcmVudCwgdGhpcy5wYXJlbnQuc3RhdHVzKTsNCisgICAgICAgICAgICB2YXIgcnRtcE9iamVjdCA9IG51bGw7DQorICAgICAgICAgICAgaWYgKHRoaXMucGFyZW50IGluc3RhbmNlb2YgbHoucnRtcENvbm5lY3Rpb24pew0KKyAgICAgICAgCSAgICBydG1wT2JqZWN0ID0gdGhpcy5wYXJlbnQ7DQorICAgICAgICAgICAgfSBlbHNlIGlmKHRoaXMucmVtb3RlY29udGV4dCAgaW5zdGFuY2VvZiBsei5ydG1wQ29ubmVjdGlvbil7DQorICAgICAgICAJICAgIHJ0bXBPYmplY3QgPSB0aGlzLnJlbW90ZWNvbnRleHQ7DQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgIAkgICAgaWYgKCRkZWJ1ZykgRGVidWcud2FybigiRVJST1I6IG5vIHJlbW90ZWNvbnRleHQgYXZhaWxpYmxlIGFib3J0IGNhbGwiLCB0aGlzLmZ1bmNuYW1lLCB0aGlzKTsNCisgICAgICAgIAkgICAgcmV0dXJuOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIAkvL0RlYnVnLndyaXRlKCdjYWxsJywgdGhpcywgcnRtcE9iamVjdCwgcnRtcE9iamVjdC5zdGF0dXMpOw0KKyAgICAgICAgCS8vRGVidWcud3JpdGUoJ2NhbGwnLCB0aGlzLnJlbW90ZWNvbnRleHQpOw0KKyAgICAgICAgICAgIGlmIChydG1wT2JqZWN0LmRlYnVnKSBEZWJ1Zy53cml0ZSgnY2FsbCcsIHRoaXMsIHJ0bXBPYmplY3QsIHJ0bXBPYmplY3Quc3RhdHVzKTsNCisgICAgICAgICAgICBydG1wT2JqZWN0Lmxhc3RDYWxsZWQgPSB0aGlzOw0KKw0KKyAgICAgICAgICAgIHRoaXMucmVzcG9uZGVyID0gbmV3IFJlc3BvbmRlcihvblJlc3VsdCk7DQorDQorICAgICAgICAgICAgcnRtcE9iamVjdC5jYWxsUlBDKHRoaXMuZnVuY25hbWUsIHRoaXMucmVzcG9uZGVyLCBwYXJhbXMpOw0KKw0KKyAgICAgICAgICBdXT4NCisgICAgICAgIDwvbWV0aG9kPg0KKw0KKyAgICAgICAgPCEtLS0gSGFuZGxlIHRoZSByZXN1bHQgcmV0dXJuZWQgZnJvbSB0aGUgcmVtb3RlIG1ldGhvZC4gLS0+DQorICAgICAgICA8bWV0aG9kIG5hbWU9Im9uUmVzdWx0IiBhcmdzPSJ2YWx1ZSI+PCFbQ0RBVEFbDQorICAgICAgICAgICAgLy8gQ2FuIGJlIG92ZXJyaWRlbi4NCisgICAgICAgICAgICAvLyBXb3VsZCBiZSBncmVhdCBpZiBpdCBjYW4gYmUgdXNlZCB3aXRoIGRhdGFvYmplY3QsDQorICAgICAgICAgICAgLy8gYnV0IEkgZG9uJ3Qga25vdyBob3cgdG8gY29udmVydCBBcnJheS9wcmltaXRpdmUgdG8gTHpEYXRhc2V0L0x6RGF0YVBvaW50ZXIuDQorICAgICAgICAgICAgLy8vL0RlYnVnLndyaXRlKCJuZXRyZW1vdGVjYWxsIiwgdGhpcywgIm9uUmVzdWx0IiwgdmFsdWUpOw0KKw0KKyAgICAgICAgICAgIGlmICh0aGlzLmRhdGFvYmplY3QhPW51bGwpIHsNCisgICAgICAgICAgICAgICAgaWYgKCB0aGlzLmRhdGFvYmplY3QgaW5zdGFuY2VvZiBMekRhdGFzZXQgKSB7DQorICAgICAgICAgICAgICAgICAgICAvL0RlYnVnLndyaXRlKCJvblJlc3VsdDogIix0aGlzLHZhbHVlLGRhdGFvYmplY3QpOw0KKyAgICAgICAgICAgICAgICAgICAgdmFyIGVsZW1lbnQgPSBMekRhdGFFbGVtZW50LnZhbHVlVG9FbGVtZW50KHZhbHVlKTsNCisgICAgICAgICAgICAgICAgICAgIHRoaXMuZGF0YW9iamVjdC5zZXREYXRhKGVsZW1lbnQuY2hpbGROb2Rlcyk7DQorICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIHRoaXMuZGF0YW9iamVjdCBpbnN0YW5jZW9mIEx6RGF0YUVsZW1lbnQgKSB7DQorICAgICAgICAgICAgICAgICAgICB2YXIgZWxlbWVudCA9IEx6RGF0YUVsZW1lbnQudmFsdWVUb0VsZW1lbnQodmFsdWUpOw0KKyAgICAgICAgICAgICAgICAgICAgdGhpcy5kYXRhb2JqZWN0LmFwcGVuZENoaWxkKCBlbGVtZW50ICk7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICAvL1RPRE86Zml4bWUNCisgICAgICAgICAgICAgICAgICAgIC8vRGVidWcud2FybigiZGF0YW9iamVjdCBpcyBub3QgTHpEYXRhc2V0IG9yIEx6RGF0YUVsZW1lbnQ6ICIsdGhpcyx0aGlzLmRhdGFvYmplY3QsZGVsZWdhdGUpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHRoaXMub25kYXRhLnNlbmRFdmVudCh2YWx1ZSk7CQkNCisgICAgICAgICAgXV0+DQorICAgICAgICA8L21ldGhvZD4NCisNCisNCisgICAgPC9jbGFzcz4NCisNCisNCisgICAgPCEtLS0NCisgICAgICAgIE5ldCBwYXJhbWV0ZXIuDQorICAgICAgICBFbGVtZW50IHRvIHVzZSBpbnNpZGUgbmV0cmVtb3RlY2FsbC4NCisgICAgICAgIEB0b2RvIERvY3VtZW50IG5ldHBhcmFtIGNsYXNzLg0KKyAgICAtLT4NCisgICAgPGNsYXNzIG5hbWU9Im5ldHBhcmFtIiBleHRlbmRzPSJub2RlIj4NCisNCisgICAgICAgIDwhLS0tIFRoZSB2YWx1ZSBvZiB0aGUgbmV0cGFyYW0uIC0tPg0KKyAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJ2YWx1ZSIgdmFsdWU9Im51bGwiLz4NCisNCisgICAgPC9jbGFzcz4NCisNCisNCis8L2xpYnJhcnk+DQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC9iYXNlL3JlbW90ZS9zaGFyZWRPYmplY3QubHp4IGIvV2ViQ29udGVudC9zd2YxMC9iYXNlL3JlbW90ZS9zaGFyZWRPYmplY3QubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljN2NkOTYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL2Jhc2UvcmVtb3RlL3NoYXJlZE9iamVjdC5sengKQEAgLTAsMCArMSwxMDMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/Pg0KKzwhLS0NCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgIA0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAgICAJICANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAgdW5kZXIgdGhlIExpY2Vuc2UuDQorICANCistLT4NCis8bGlicmFyeT4NCisNCis8Y2xhc3MgbmFtZT0ic2hhcmVkT2JqZWN0IiBleHRlbmRzPSJub2RlIj4NCisNCisgICAgPHN3aXRjaD4NCisgICAgICAgIDx3aGVuIHByb3BlcnR5PSIkYXMzIj4NCisgICAgICAgICAgICA8cGFzc3Rocm91Z2g+DQorICAgICAgICAgICAgICAgIGltcG9ydCBmbGFzaC5uZXQuU2hhcmVkT2JqZWN0Ow0KKyAgICAgICAgICAgIDwvcGFzc3Rocm91Z2g+DQorICAgICAgICA8L3doZW4+DQorICAgIDwvc3dpdGNoPg0KKw0KKwk8YXR0cmlidXRlIG5hbWU9InNvIiB2YWx1ZT0ibnVsbCIgLz4NCisJPGF0dHJpYnV0ZSBuYW1lPSJvblN0YXR1cyIgdmFsdWU9Im51bGwiIC8+DQorCQ0KKw0KKwk8bWV0aG9kIG5hbWU9ImNvbm5lY3QiIGFyZ3M9InNvX05hbWUsbmMscGVyc2lzdGFudCI+DQorDQorCQkvL0RlYnVnLndyaXRlKCJjb25uZWN0IFNoYXJlZE9iamVjdDogIixuYy51cmkpOw0KKwkJdGhpcy5zbyA9IHRoaXMuZ2V0UmVtb3RlKHNvX05hbWUsbmMudXJpLHBlcnNpc3RhbnQpOw0KKwkJDQorCQl2YXIgdCA9IHRoaXM7DQorCQl0aGlzLnNvLm9uU3luYyA9IGZ1bmN0aW9uIChldnRPYmopew0KKwkJCWlmICh0Lm9uU3RhdHVzKXQub25TdGF0dXMuc2VuZEV2ZW50KGV2dE9iaik7DQorCQkJLy9fcm9vdC5EZWJ1Zy53cml0ZS53cml0ZSgiU2hhcmVkIE9iamVjdCBvblN5bmMiLGV2dE9iaixhcmd1bWVudHMpOw0KKwkJfQ0KKwkJDQorCQl0aGlzLnNvLmNvbm5lY3QobmMpOw0KKwkJDQorCTwvbWV0aG9kPg0KKwkNCisgICAgDQorICAgIDxtZXRob2QgbmFtZT0iZ2V0UmVtb3RlIiBhcmdzPSJzb19OYW1lLG5jLHBlcnNpc3RhbnQiPg0KKw0KKyAgICAgICAgLy9EZWJ1Zy53cml0ZSgiY29ubmVjdCBTaGFyZWRPYmplY3Q6ICIsbmMudXJpKTsNCisgICAgICAgIHRoaXMuc28gPSB0aGlzLmdldFJlbW90ZShzb19OYW1lLG5jLnVyaSxwZXJzaXN0YW50KTsNCisNCisgICAgICAgIHZhciB0ID0gdGhpczsNCisgICAgICAgIHRoaXMuc28ub25TeW5jID0gZnVuY3Rpb24gKGV2dE9iail7DQorICAgICAgICAgICAgaWYgKHQub25TdGF0dXMpdC5vblN0YXR1cy5zZW5kRXZlbnQoZXZ0T2JqKTsNCisgICAgICAgICAgICAvL19yb290LkRlYnVnLndyaXRlLndyaXRlKCJTaGFyZWQgT2JqZWN0IG9uU3luYyIsZXZ0T2JqLGFyZ3VtZW50cyk7DQorICAgICAgICB9DQorICAgIDwvbWV0aG9kPg0KKyAgICANCisgICAgPCEtLS0gY3JlYXRlIE9iamVjdCBpZiBub3QgZXhpc3RpbmcgIC0tPg0KKyAgICA8bWV0aG9kIG5hbWU9ImdldExvY2FsIiBhcmdzPSJuYW1lIj4NCisNCisgICAgICAgIHRoaXMuc28gPSB0aGlzLmdldExvY2FsKG5hbWUpOw0KKw0KKyAgICAgICAgdmFyIHQgPSB0aGlzOw0KKyAgICAgICAgdGhpcy5zby5vblN5bmMgPSBmdW5jdGlvbiAoZXZ0T2JqKXsNCisgICAgICAgICAgICBpZiAodC5vblN0YXR1cyl0Lm9uU3RhdHVzLnNlbmRFdmVudChldnRPYmopOw0KKyAgICAgICAgICAgIC8vX3Jvb3QuRGVidWcud3JpdGUud3JpdGUoIlNoYXJlZCBPYmplY3Qgb25TeW5jIixldnRPYmosYXJndW1lbnRzKTsNCisgICAgICAgIH0NCisgICAgICAgIA0KKyAgICA8L21ldGhvZD4NCisgICAgDQorICAgIDwhLS0tIA0KKyAgICAgICAgZm9yY2Ugd3JpdGUgdG8gZGlzaw0KKyAgICAgICAgQHJldHVybiB0cnVlKHN1Y2Nlc3MpIGZhbHNlKFVzZXIgaGFzIGZvcmJpZGRlbiB0byBzdG9yZSBkYXRhIGxvY2FsKQ0KKyAgICAgIC0tPg0KKyAgICA8bWV0aG9kIG5hbWU9ImZsdXNoIj4NCisgICAgICAgIHJldHVybiB0aGlzLnNvLmZsdXNoKCk7DQorICAgIDwvbWV0aG9kPg0KKw0KKyAgICA8bWV0aG9kIG5hbWU9ImdldERhdGEiIGFyZ3M9ImtleSI+DQorICAgICAgICBpZiAodGhpcy5zby5kYXRhWyJrZXkiXSA9PSB1bmRlZmluZWQpew0KKyAgICAgICAgICAgIHJldHVybiBudWxsOw0KKyAgICAgICAgICAgLy9fcm9vdC5EZWJ1Zy53cml0ZS53cml0ZSgia2V5IHVuZGVmaW5lZCIsa2V5KTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgcmV0dXJuIHRoaXMuc28uZGF0YVsia2V5Il07DQorICAgICAgICB9DQorICAgIDwvbWV0aG9kPg0KKwkNCisgICAgPG1ldGhvZCBuYW1lPSJzZXRTaGFyZWREYXRhIiBhcmdzPSJrZXksdmFsIj4NCisgICAgCS8vRGVidWcud3JpdGUoInRoaXMuLi4uLi4gc286ICIsdGhpcy5zbyk7DQorICAgICAgICB0aGlzLnNvLmRhdGFbImtleSJdID0gdmFsOw0KKyAgICA8L21ldGhvZD4NCisNCisJCQ0KKzwvY2xhc3M+DQorDQorPC9saWJyYXJ5Pg0KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3dmMTAvY29tbW9uVmlkZW9WaWV3Q29udGVudFNXRjEwLmx6eCBiL1dlYkNvbnRlbnQvc3dmMTAvY29tbW9uVmlkZW9WaWV3Q29udGVudFNXRjEwLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzExY2IxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC9jb21tb25WaWRlb1ZpZXdDb250ZW50U1dGMTAubHp4CkBAIC0wLDAgKzEsNTg3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPGxpYnJhcnk+DQorDQorDQorPGNsYXNzIG5hbWU9ImNvbW1vblZpZGVvVmlld0NvbnRlbnRTV0YxMCIgZXh0ZW5kcz0idmlldyI+DQorDQorICAgIDxzd2l0Y2g+DQorICAgICAgICA8d2hlbiBwcm9wZXJ0eT0iJGFzMyI+DQorICAgICAgICAgICAgPHBhc3N0aHJvdWdoPg0KKyAgICAgICAgICAgICAgICBpbXBvcnQgZmxhc2gubmV0LkxvY2FsQ29ubmVjdGlvbjsNCisgICAgICAgICAgICA8L3Bhc3N0aHJvdWdoPg0KKyAgICAgICAgPC93aGVuPg0KKyAgICA8L3N3aXRjaD4NCisNCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJvZmZzZXRMZW5ndGgiIHR5cGU9Im51bWJlciIgdmFsdWU9IjQwIi8+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0idmlkZW9XaWR0aCIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0iMTMyIi8+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0idmlkZW9IZWlnaHQiIHR5cGU9Im51bWJlciIgdmFsdWU9IjEzMiIvPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9IlNJREVQQU5FTF9XSURUSCIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0iMjcwIiAvPg0KKyAgICANCisgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4NCisgICAgICAgIDwhW0NEQVRBWw0KKw0KKyAgICAgICAgICAgIHZhciBjbGllbnQgPSB7fTsNCisgICAgICAgICAgICBjbGllbnQudCA9IHRoaXM7DQorDQorICAgICAgICAgICAgY2xpZW50LmNyZWF0ZUVkaXRSZWNvcmRTdHJlYW0gPSB0aGlzLmNyZWF0ZUVkaXRSZWNvcmRTdHJlYW07DQorICAgICAgICAgICAgY2xpZW50LmNyZWF0ZVZpZGVvT2JqZWN0ID0gdGhpcy5jcmVhdGVWaWRlb09iamVjdDsNCisgICAgICAgICAgICBjbGllbnQuY3JlYXRlVmlkZW8gPSB0aGlzLmNyZWF0ZVZpZGVvOw0KKyAgICAgICAgICAgIGNsaWVudC5nZXRWaWRlb09iamVjdEJ5UHVibGljU0lEID0gdGhpcy5nZXRWaWRlb09iamVjdEJ5UHVibGljU0lEOw0KKyAgICAgICAgICAgIGNsaWVudC5nZXROZXdWaWRlb09iamVjdCA9IHRoaXMuZ2V0TmV3VmlkZW9PYmplY3Q7DQorICAgICAgICAgICAgY2xpZW50LmdldFZpZGVvT2JqZWN0RnJlZVBvcyA9IHRoaXMuZ2V0VmlkZW9PYmplY3RGcmVlUG9zOw0KKyAgICAgICAgICAgIGNsaWVudC5kaXNjb25uZWN0Y2xpZW50ID0gdGhpcy5kaXNjb25uZWN0Y2xpZW50Ow0KKyAgICAgICAgICAgIGNsaWVudC5yZXNldEFsbFZhbHVlcyA9IHRoaXMucmVzZXRBbGxWYWx1ZXM7DQorICAgICAgICAgICAgY2xpZW50LmNsb3NlU3RyZWFtQ2xpZW50ID0gdGhpcy5jbG9zZVN0cmVhbUNsaWVudDsNCisgICAgICAgICAgICBjbGllbnQuc2V0U3BlYWtpbmdCeVBvcyA9IHRoaXMuc2V0U3BlYWtpbmdCeVBvczsNCisgICAgICAgICAgICBjbGllbnQuc2V0QVZTZXR0aW5nc1RvQ2xpZW50ID0gdGhpcy5zZXRBVlNldHRpbmdzVG9DbGllbnQ7DQorICAgICAgICAgICAgY2xpZW50LnN0YXJ0U3RyZWFtID0gdGhpcy5zdGFydFN0cmVhbTsNCisgICAgICAgICAgICBjbGllbnQucmVtb3ZlVmlkZW9CeVVzZXIgPSB0aGlzLnJlbW92ZVZpZGVvQnlVc2VyOw0KKyAgICAgICAgICAgIGNsaWVudC5tdXRlU291bmQgPSB0aGlzLm11dGVTb3VuZDsNCisgICAgICAgICAgICBjbGllbnQudXBkYXRlTXV0ZVN0YXR1c1ZpZGVvVmlldyA9IHRoaXMudXBkYXRlTXV0ZVN0YXR1c1ZpZGVvVmlldzsNCisgICAgICAgICAgICBjbGllbnQuaXNtb2RlcmF0b3JDaGFuZ2VkID0gdGhpcy5pc21vZGVyYXRvckNoYW5nZWQ7DQorICAgICAgICAgICAgLy8gdXBkYXRlIHJpZ2h0cyB0byBTV0YxMCBjbGllbnQNCisgICAgICAgICAgICBjbGllbnQudXBkYXRlTW9kZXJhdGlvbkZsYWcgPSB0aGlzLnVwZGF0ZU1vZGVyYXRpb25GbGFnOw0KKyAgICAgICAgICAgIGNsaWVudC5jaGFuZ2VEZXZpY2UgPSB0aGlzLmNoYW5nZURldmljZTsNCisgICAgICAgICAgICBjbGllbnQuc2V0RHJhd0FsbG93U3RhdHVzID0gdGhpcy5zZXREcmF3QWxsb3dTdGF0dXM7DQorICAgICAgICAgICAgY2xpZW50LnNldEV4Y2x1c2l2ZUF1ZGlvQWxsb3dTdGF0dXMgPSB0aGlzLnNldEV4Y2x1c2l2ZUF1ZGlvQWxsb3dTdGF0dXM7DQorICAgICAgICAgICAgY2xpZW50LmV4aXRSb29tID0gdGhpcy5leGl0Um9vbTsNCisgICAgICAgICAgICBjbGllbnQuaW1tZWRpYXRlRXhpdFJvb20gPSB0aGlzLmltbWVkaWF0ZUV4aXRSb29tOw0KKyAgICAgICAgICAgIGNsaWVudC5jbG9zZVdoaXRlYm9hcmQgPSB0aGlzLmNsb3NlV2hpdGVib2FyZDsNCisgICAgICAgICAgICBjbGllbnQuYXJyYW5nZVdpbmRvd3MgPSB0aGlzLmFycmFuZ2VXaW5kb3dzOw0KKyAgICAgICAgICAgIGNsaWVudC51cGRhdGVGaXJzdExhc3ROYW1lID0gdGhpcy51cGRhdGVGaXJzdExhc3ROYW1lOw0KKyAgICAgICAgICAgIGNsaWVudC5zZXRTZXNzaW9uSWQgPSB0aGlzLnNldFNlc3Npb25JZDsNCisNCisgICAgICAgICAgICB2YXIgbGM6TG9jYWxDb25uZWN0aW9uID0gbmV3IExvY2FsQ29ubmVjdGlvbigpOw0KKyAgICAgICAgICAgIGxjLmNvbm5lY3QoY2FudmFzLnZpZF9sY19uYW1lKTsNCisgICAgICAgICAgICBsYy5jbGllbnQgPSBjbGllbnQ7DQorICAgICAgICAgICAgY2FudmFzLnNldEF0dHJpYnV0ZSgibGMiLCBsYyk7DQorDQorICAgICAgICBdXT4NCisgICAgPC9oYW5kbGVyPg0KKyAgICANCisJPG1ldGhvZCBuYW1lPSJjcmVhdGVFZGl0UmVjb3JkU3RyZWFtIiBhcmdzPSJzeW5jVXBkYXRlLGlzSW50ZXJ2aWV3LGludGVydmlld1BvZElkIj4NCisJCWlmKCRkZWJ1ZykgRGVidWcuaW5mbygiY3JlYXRlRWRpdFJlY29yZFN0cmVhbSwiLHN5bmNVcGRhdGUsaXNJbnRlcnZpZXcsaW50ZXJ2aWV3UG9kSWQpOw0KKwkJaWYgKGNhbnZhcy5pbm5lci5lZGl0UmVjb3JkU3RyZWFtICE9IG51bGwpDQorCQkJY2FudmFzLmlubmVyLmVkaXRSZWNvcmRTdHJlYW0uZGVzdHJveSgpOw0KKwkJbmV3IGx6LmVkaXRSZWNvcmRTdHJlYW1TV0YxMChjYW52YXMuaW5uZXIsIHsNCisJCQkJCW5hbWU6ImVkaXRSZWNvcmRTdHJlYW0iLA0KKwkJCQkJaXNTeW5jVXBkYXRlOnN5bmNVcGRhdGUsDQorCQkJCQlpc0ludGVydmlldzppc0ludGVydmlldywNCisJCQkJCWludGVydmlld1BvZElkOmludGVydmlld1BvZElkDQorCQkJCX0pOw0KKwkJcmV0dXJuOw0KKwk8L21ldGhvZD4NCisNCisJPCEtLSANCisJCU1ldGhvZCB0aGF0IGNyZWF0ZXMgdGhlIHZpZGVvIHZpZXdzIHdoZW4gYW5vdGhlciB1c2VyIGVudGVycyBhIHJvb20gYW5kIGhpcyANCisJCWl0ZW0gaW4gdGhlIGxpc3Qgb2YgcGFydGljaXBhbnRzIGlzIGNyZWF0ZWQuDQorCQlUaGUgbWV0aG9kIHRvICJwbGF5IiB0aGUgc3RyZWFtIGlzIGludm9rZWQgbGF0ZXIsIHdoZW4gdGhlIHVzZXINCisJCXJlYWxseSBzdGFydHMgdG8gc3RyZWFtIGFuZCBub3Qgb25seSB3aGVuIGhlIGp1c3QgZW50ZXJzIHRoZSByb29tLg0KKwkgLS0+DQorICAgIDxtZXRob2QgbmFtZT0iY3JlYXRlVmlkZW9PYmplY3QiIGFyZ3M9InB1YmxpY1NJRCxpc0Jyb2FkY2FzdGluZyxpbnRlcnZpZXdQb2RJZCxvYmplY3QiPg0KKyAgICAgICAgaWYoJGRlYnVnKSBEZWJ1Zy5pbmZvKCJjcmVhdGVWaWRlb09iamVjdCwgcHVibGljU0lEOiAiLHB1YmxpY1NJRCwgImlzQnJvYWRjYXN0aW5nOiAiLCBpc0Jyb2FkY2FzdGluZywgIm9iamVjdCIsIG9iamVjdCk7DQorICAgICAgICB2YXIgdmlkQ29udGFpbmVyID0gZ2V0VmlkZW9PYmplY3RCeVB1YmxpY1NJRChwdWJsaWNTSUQpOw0KKyAgICAgICAgaWYodmlkQ29udGFpbmVyID09IG51bGwpIHsNCisgICAgICAgICAgICB2aWRDb250YWluZXIgPSBpc0Jyb2FkY2FzdGluZyA/IHRoaXMuZ2V0TmV3VmlkZW9PYmplY3QocHVibGljU0lEKSA6IHRoaXMuZ2V0TmV3VmlkZW9PYmplY3RCeVBvcyhwdWJsaWNTSUQpOw0KKyAgICAgICAgICAgIHZpZENvbnRhaW5lci5wdWJsaWNTSUQgPSBwdWJsaWNTSUQ7DQorICAgICAgICB9DQorICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiSXMgaW50ZXJ2aWV3ID8gIixjYW52YXMuaXNJbnRlcnZpZXcpOw0KKyAgICAgICAgaWYgKGNhbnZhcy5pc0ludGVydmlldykgew0KKyAgICAgICAgCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJJcyBpbnRlcnZpZXcgIixpbnRlcnZpZXdQb2RJZCwieCIsY2FudmFzWyJpbnRlcnZpZXdQb2QiK2ludGVydmlld1BvZElkKyJfeCJdKTsNCisgICAgICAgIAlpZiAoaW50ZXJ2aWV3UG9kSWQgIT0gbnVsbCkgew0KKwkgICAgICAgIAl2aWRDb250YWluZXIuc2V0QXR0cmlidXRlKCJpbnRlcnZpZXdQb2RJZCIsIGludGVydmlld1BvZElkKTsNCisJICAgICAgICAJdmlkQ29udGFpbmVyLnNldEF0dHJpYnV0ZSgieCIsY2FudmFzWyJpbnRlcnZpZXdQb2QiK2ludGVydmlld1BvZElkKyJfeCJdKTsNCisJICAgICAgICAgICAgdmlkQ29udGFpbmVyLnNldEF0dHJpYnV0ZSgieSIsY2FudmFzWyJpbnRlcnZpZXdQb2QiK2ludGVydmlld1BvZElkKyJfeSJdKTsNCisJICAgICAgICB9DQorICAgICAgICAgICAgdmlkQ29udGFpbmVyLnNldEF0dHJpYnV0ZSgid2lkdGgiLDMyMik7DQorICAgICAgICAgICAgdmlkQ29udGFpbmVyLnNldEF0dHJpYnV0ZSgiaGVpZ2h0IiwyODEpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgdmlkQ29udGFpbmVyLmNsaWVudFZhcnMgPSBvYmplY3Q7DQorICAgICAgICB2aWRDb250YWluZXIuc2V0QXR0cmlidXRlKCd2aXNpYmlsaXR5JywnaGlkZGVuJyk7DQorICAgICAgICByZXR1cm4gdmlkQ29udGFpbmVyOw0KKyAgICA8L21ldGhvZD4NCisNCisJPCEtLSANCisJCQ0KKwkJTWV0aG9kIHRoYXQgY3JlYXRlcyB0aGUgdmlkZW8gdmlld3Mgd2hlbiB1c2VyKHNlbGYpIGluaXRpYWxseSBlbnRlcmluZyBhIHJvb20uDQorCQlDcmVhdGVzIHRoZSB2aWRlby12aWV3IEFORCBzdGFydHMgdG8gc3RyZWFtL3BsYXkgdGhlIHZpZGVvDQorCSAtLT4NCisgICAgPG1ldGhvZCBuYW1lPSJjcmVhdGVWaWRlbyIgYXJncz0icHVibGljU0lELGRpc3BsYXlOYW1lLGJyb2FkY2FzdElkLGF2c2V0dGluZ3MsaW50ZXJ2aWV3UG9kSWQsb2JqZWN0Ij4NCisgICAgICAgIDwhW0NEQVRBWw0KKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLmluZm8oImNyZWF0ZVZpZGVvLCBwdWJsaWNTSUQ6ICIscHVibGljU0lELCJicm9hZGNhc3RJZDogIixicm9hZGNhc3RJZCwiQVZzZXR0aW5nczogIixhdnNldHRpbmdzKTsNCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiIGNyZWF0ZVZpZGVvIEFMTCB2YXJzICIsb2JqZWN0KTsNCisgICAgICAgICAgICB2YXIgdmlkQ29udGFpbmVyID0gZ2V0VmlkZW9PYmplY3RCeVB1YmxpY1NJRChwdWJsaWNTSUQpOw0KKyAgICAgICAgICAgIGlmKHZpZENvbnRhaW5lciA9PSBudWxsKSB7DQorICAgICAgICAgICAgICAgIHZpZENvbnRhaW5lciA9IHRoaXMuZ2V0TmV3VmlkZW9PYmplY3RCeVBvcyhwdWJsaWNTSUQpOw0KKyAgICAgICAgICAgICAgICB2aWRDb250YWluZXIuY2xpZW50VmFycyA9IG9iamVjdDsNCisgICAgICAgICAgICAgICAgdmlkQ29udGFpbmVyLnNldEF0dHJpYnV0ZSgnY2hhdHBhcnRuZXJuYW1lJyxkaXNwbGF5TmFtZSk7DQorICAgICAgICAgICAgICAgIGlmIChhdnNldHRpbmdzPT0ibiIpew0KKyAgICAgICAgICAgICAgICAgICAgdmlkQ29udGFpbmVyLnNldFZpZGVvdXNlclByb2ZpbGVQaWMob2JqZWN0KTsNCisgICAgICAgICAgICAgICAgICAgIHZpZENvbnRhaW5lci5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChhdnNldHRpbmdzPT0iYSIpew0KKyAgICAgICAgICAgICAgICAgICAgdmlkQ29udGFpbmVyLnNldFZpZGVvdXNlclByb2ZpbGVQaWMob2JqZWN0KTsNCisgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndhcm4oInN0YXJ0IHBsYXkiKTsNCisgICAgICAgICAgICAgICAgICAgIHZpZENvbnRhaW5lci5fY2hhdHZpZGVvaW5uZXIuX3ZpZGVvc3RyZWFtLnBsYXlTdHJlYW0oYnJvYWRjYXN0SWQsLTEpOw0KKyAgICAgICAgICAgICAgICAgICAgdmlkQ29udGFpbmVyLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOw0KKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGF2c2V0dGluZ3M9PSJ2IiB8fCBhdnNldHRpbmdzPT0iYXYiKSB7DQorICAgICAgICAgICAgICAgICAgICAvL3RoaXMgbWVhbnMgYXZzZXR0aW5ncyBpcyBlaXRoZXI6ICJ2IiBvciAiYXYiDQorICAgICAgICAgICAgICAgIAl2aWRDb250YWluZXIuc2V0RGVmYXVsdFZpZGVvU2l6ZShvYmplY3QuVldpZHRoLG9iamVjdC5WSGVpZ2h0KTsNCisgICAgICAgICAgICAgICAgICAgIHZpZENvbnRhaW5lci5fY2hhdHZpZGVvaW5uZXIuX3ZpZGVvc3RyZWFtLnBsYXlTdHJlYW0oYnJvYWRjYXN0SWQsLTEpOw0KKyAgICAgICAgICAgICAgICAgICAgdmlkQ29udGFpbmVyLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsNCisgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgCS8vdGhpcyBtZWFucyB1c2VyIGRpZCBub3Qgc2VsZWN0IGFueXRoaW5nIHlldCBhbmQgc3RyZWFtaW5nIGhhcyBub3Qgc3RhcnRlZA0KKyAgICAgICAgICAgICAgICAJdmlkQ29udGFpbmVyLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIHZpZENvbnRhaW5lci5zZXRBdHRyaWJ1dGUoImludGVydmlld1BvZElkIiwgaW50ZXJ2aWV3UG9kSWQpOw0KKyAgICAgICAgICAgICAgICB2aWRDb250YWluZXIudXBkYXRlQVZTZXR0aW5nc1N5bWJvbChvYmplY3QpOw0KKyAgICAgICAgICAgICAgICBpZiAob2JqZWN0Lm1pY011dGVkKSB7DQorICAgICAgICAgICAgCSAgICB2aWRDb250YWluZXIuc2V0TWljTXV0ZWQob2JqZWN0Lm1pY011dGVkKTsNCisgICAgICAgICAgIAkgCX0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgDQorICAgICAgICAgICAgDQorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIklzIGludGVydmlldyA/ICIsY2FudmFzLmlzSW50ZXJ2aWV3KTsNCisgICAgICAgICAgICBpZiAoY2FudmFzLmlzSW50ZXJ2aWV3ICYmIGludGVydmlld1BvZElkICE9IG51bGwgJiYgaW50ZXJ2aWV3UG9kSWQgPiAwKSB7DQorICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJJcyBpbnRlcnZpZXcgIixpbnRlcnZpZXdQb2RJZCwieCIsY2FudmFzWyJpbnRlcnZpZXdQb2QiK2ludGVydmlld1BvZElkKyJfeCJdKTsNCisgICAgICAgICAgICAgICAgdmlkQ29udGFpbmVyLnNldEF0dHJpYnV0ZSgiaW50ZXJ2aWV3UG9kSWQiLCBpbnRlcnZpZXdQb2RJZCk7DQorICAgICAgICAgICAgICAgIHZpZENvbnRhaW5lci5zZXRBdHRyaWJ1dGUoIngiLGNhbnZhc1siaW50ZXJ2aWV3UG9kIitpbnRlcnZpZXdQb2RJZCsiX3giXSk7DQorICAgICAgICAgICAgICAgIHZpZENvbnRhaW5lci5zZXRBdHRyaWJ1dGUoInkiLGNhbnZhc1siaW50ZXJ2aWV3UG9kIitpbnRlcnZpZXdQb2RJZCsiX3kiXSk7DQorICAgICAgICAgICAgICAgIHZpZENvbnRhaW5lci5zZXRBdHRyaWJ1dGUoIndpZHRoIiwzMjIpOw0KKyAgICAgICAgICAgICAgICB2aWRDb250YWluZXIuc2V0QXR0cmlidXRlKCJoZWlnaHQiLDI4MSk7DQorICAgICAgICAgICAgfQ0KKwkJCXJldHVybjsNCisgICAgICAgIF1dPg0KKyAgICA8L21ldGhvZD4NCisgICAgDQorICAgIDxtZXRob2QgbmFtZT0iZ2V0VmlkZW9PYmplY3RCeVB1YmxpY1NJRCIgYXJncz0icHVibGljU0lEIj4NCisgICAgCTwhW0NEQVRBWw0KKyAgICAJCS8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImdldFZpZGVvT2JqZWN0QnlQdWJsaWNTaWQgU0VBUkNIOiAiLHB1YmxpY1NJRCk7DQorICAgICAgICAJZm9yICh2YXIgaT0wO2k8dGhpcy5zdWJ2aWV3cy5sZW5ndGg7aSsrKXsNCisgICAgICAgIAkgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidGhpcy5zdWJ2aWV3c1tpXS5wdWJsaWNTSUQgIix0aGlzLnN1YnZpZXdzW2ldLnB1YmxpY1NJRCk7DQorICAgIAkJCWlmICh0aGlzLnN1YnZpZXdzW2ldLnB1YmxpY1NJRD09cHVibGljU0lEKXsNCisgICAgCQkJCXJldHVybiB0aGlzLnN1YnZpZXdzW2ldOw0KKyAgICAJCQl9DQorICAgIAkJfQ0KKyAgICAJCWlmICgkZGVidWcpIERlYnVnLndhcm4oIiAtIGdldFZpZGVvT2JqZWN0QnlQdWJsaWNTSUQgLSBESUQgTk9UIEZJTkQgVEhFIFVTRVIgQlkgIixwdWJsaWNTSUQpOw0KKyAgICAgICAgICAgIHJldHVybiBudWxsOw0KKyAgICAJXV0+DQorICAgIDwvbWV0aG9kPg0KKw0KKyAgICA8bWV0aG9kIG5hbWU9ImdldE5ld1ZpZGVvT2JqZWN0QnlQb3MiIGFyZ3M9InB1YmxpY1NJRCI+DQorICAgICAgICA8IVtDREFUQVsNCisgICAgICAgICAgICB2YXIgb2JqID0gdGhpcy5nZXRWaWRlb09iamVjdEJ5UHVibGljU0lEKHB1YmxpY1NJRCk7DQorICAgICAgICAgICAgaWYgKG9iaiE9bnVsbCl7DQorICAgICAgICAgICAgICAgIHJldHVybiBvYmo7DQorICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgICAgIC8vR2V0IGEgRnJlZSBWaWRlb1ZpZXcgU2xvdA0KKyAgICAgICAgICAgIHZhciBmcmVlUG9zID0gdGhpcy5nZXRWaWRlb09iamVjdEZyZWVQb3ModGhpcy5vZmZzZXRMZW5ndGgsdGhpcy52aWRlb1dpZHRoLHRoaXMudmlkZW9IZWlnaHQpOw0KKw0KKyAgICAgICAgICAgIHJldHVybiBuZXcgbHoudmlkZW9PYmplY3RQbGF5QnJvYWRjYXN0KHRoaXMsew0KKyAgICAgICAgICAgICAgICAgICAgcHVibGljU0lEOnB1YmxpY1NJRCwNCisgICAgICAgICAgICAgICAgICAgIHdpZHRoOnZpZGVvV2lkdGgsDQorICAgICAgICAgICAgICAgICAgICBoZWlnaHQ6dmlkZW9IZWlnaHQsDQorICAgICAgICAgICAgICAgICAgICB4OmZyZWVQb3NbMF0sDQorICAgICAgICAgICAgICAgICAgICB5OmZyZWVQb3NbMV0sDQorICAgICAgICAgICAgICAgICAgICBpc0ludGVydmlldzpjYW52YXMuaXNJbnRlcnZpZXcNCisgICAgICAgICAgICAgICAgfSk7DQorICAgICAgICBdXT4NCisgICAgPC9tZXRob2Q+DQorDQorICAgIDxtZXRob2QgbmFtZT0iZ2V0TmV3VmlkZW9PYmplY3QiIGFyZ3M9InB1YmxpY1NJRCI+DQorCQk8IVtDREFUQVsNCisJCQl2YXIgb2JqID0gdGhpcy5nZXRWaWRlb09iamVjdEJ5UHVibGljU0lEKHB1YmxpY1NJRCk7DQorCQkJaWYgKG9iaiE9bnVsbCl7DQorCQkJCXRoaXMuYnJvYWRDYXN0Vmlld1JlZiA9IG9iajsNCisJCQl9IGVsc2Ugew0KKwkJCQl0aGlzLmJyb2FkQ2FzdFZpZXdSZWYgPSBnZXROZXdWaWRlb09iamVjdEJ5UG9zKHB1YmxpY1NJRCk7DQorDQorCQkJCXRoaXMuYnJvYWRDYXN0Vmlld1JlZi5fY2hhdHZpZGVvaW5uZXIuci5kZXN0cm95KCk7DQorCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJnZXROZXdWaWRlb09iamVjdCBjYW52YXMudXNlcm9iamVjdCAiLHB1YmxpY1NJRCxjYW52YXMudXNlcm9iamVjdCk7DQorCQkJCXRoaXMuYnJvYWRDYXN0Vmlld1JlZi5zZXRBdHRyaWJ1dGUoJ2NoYXRwYXJ0bmVybmFtZScsY2FudmFzLnVzZXJvYmplY3QuZmlyc3RuYW1lKycgJytjYW52YXMudXNlcm9iamVjdC5sYXN0bmFtZSk7DQorCQkJfQ0KKwkJCXJldHVybiB0aGlzLmJyb2FkQ2FzdFZpZXdSZWY7DQorCQldXT4NCisJPC9tZXRob2Q+DQorDQorICAgIDxtZXRob2QgbmFtZT0iZ2V0VmlkZW9PYmplY3RCeUludGVydmlld1BvZElkIiBhcmdzPSJpbnRlcnZpZXdQb2RJZCI+DQorICAgICAgICA8IVtDREFUQVsNCisgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTx0aGlzLnN1YnZpZXdzLmxlbmd0aDtpKyspew0KKyAgICAgICAgICAgICAgICBpZiAodGhpcy5zdWJ2aWV3c1tpXS5pbnRlcnZpZXdQb2RJZD09aW50ZXJ2aWV3UG9kSWQpew0KKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuc3Vidmlld3NbaV07DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud2FybigiIC0gZ2V0VmlkZW9PYmplY3RCeUludGVydmlld1BvZElkIC0gRElEIE5PVCBGSU5EIFRIRSBVU0VSIEJZICIsaW50ZXJ2aWV3UG9kSWQpOw0KKyAgICAgICAgICAgIHJldHVybiBudWxsOw0KKyAgICAgICAgXV0+DQorICAgIDwvbWV0aG9kPg0KKw0KKyAgICA8bWV0aG9kIG5hbWU9ImdldFZpZGVvT2JqZWN0RnJlZVBvcyIgYXJncz0ib2Zmc2V0TGVuZ3RoLHZpZGVvV2lkdGgsdmlkZW9IZWlnaHQiPg0KKyAgICAgICAgPCFbQ0RBVEFbDQorICAgICAgICAgICAgdmFyIG5ld3ggPSAyMDsNCisgICAgICAgICAgICBpZiAoY2FudmFzLmN1cnJlbnRSb29tT2JqZWN0LmhpZGVXaGl0ZWJvYXJkKSB7DQorICAgICAgICAgICAgICAgIG5ld3ggKz0gU0lERVBBTkVMX1dJRFRIOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICB2YXIgbmV3eSA9IDA7DQorICAgICAgICAgICAgdmFyIHBvc0ZvdW5kID0gZmFsc2U7DQorICAgICAgICAgICAgaWYgKG9mZnNldExlbmd0aCA9PSB1bmRlZmluZWQpIHsNCisgICAgICAgICAgICAgICAgb2Zmc2V0TGVuZ3RoPTEwOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICB3aGlsZSAoIXBvc0ZvdW5kKSB7DQorICAgICAgICAgICAgICAgIHBvc0ZvdW5kID0gdHJ1ZTsNCisgICAgICAgICAgICAgICAgZm9yICh2YXIgaT0wO2k8dGhpcy5zdWJ2aWV3cy5sZW5ndGg7aSsrKXsNCisgICAgICAgICAgICAgICAgICAgIHZhciBzdWJ2aWV3ID0gdGhpcy5zdWJ2aWV3c1tpXTsNCisgICAgICAgICAgICAgICAgICAgIHZhciBsZWZ0ID0gc3Vidmlldy54Ow0KKyAgICAgICAgICAgICAgICAgICAgdmFyIHJpZ2h0ID0gc3Vidmlldy54ICsgc3Vidmlldy53aWR0aDsNCisgICAgICAgICAgICAgICAgICAgIHZhciB0b3AgPSBzdWJ2aWV3Lnk7DQorICAgICAgICAgICAgICAgICAgICB2YXIgYm90dG9tID0gc3Vidmlldy55ICsgc3Vidmlldy5oZWlnaHQ7DQorDQorICAgICAgICAgICAgICAgICAgICBpZiggIShuZXd4ID4gcmlnaHQNCisgICAgICAgICAgICAgICAgICAgICAgICB8fCAobmV3eCArIHZpZGVvV2lkdGgpIDwgbGVmdA0KKyAgICAgICAgICAgICAgICAgICAgICAgIHx8IG5ld3kgPiBib3R0b20NCisgICAgICAgICAgICAgICAgICAgICAgICB8fCAobmV3eSArIHZpZGVvSGVpZ2h0KSA8IHRvcCApKQ0KKyAgICAgICAgICAgICAgICAgICAgew0KKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld3ggPSByaWdodCArIG9mZnNldExlbmd0aDsNCisgICAgICAgICAgICAgICAgICAgICAgICBwb3NGb3VuZCA9IGZhbHNlOw0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgaWYgKChuZXd4ICsgdmlkZW9XaWR0aCkgPj0gY2FudmFzLndpZHRoKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgbmV3eCA9IDIwOw0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYW52YXMuY3VycmVudFJvb21PYmplY3QuaGlkZVdoaXRlYm9hcmQpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3eCArPSBTSURFUEFORUxfV0lEVEg7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld3kgKz0gMTA7DQorICAgICAgICAgICAgICAgICAgICAgICAgcG9zRm91bmQgPSBmYWxzZTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisNCisgICAgICAgICAgICBpZiAoKG5ld3kgKyB2aWRlb0hlaWdodCkgPj0gY2FudmFzLmhlaWdodCkgew0KKyAgICAgICAgICAgICAgICBuZXd5ID0gMDsNCisgICAgICAgICAgICB9DQorDQorICAgICAgICAgICAgdmFyIHJlc3VsdCA9IFtuZXd4LCBuZXd5XTsNCisgICAgICAgICAgICByZXR1cm4gcmVzdWx0Ow0KKyAgICAgICAgXV0+DQorICAgIDwvbWV0aG9kPg0KKw0KKyAgICA8bWV0aG9kIG5hbWU9ImRpc2Nvbm5lY3RjbGllbnQiIGFyZ3M9InB1YmxpY1NJRCI+DQorICAgICAgICA8IVtDREFUQVsNCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZGlzY29ubmVjdGNsaWVudDogIixwdWJsaWNTSUQpOw0KKw0KKyAgICAgICAgICAgIHZhciBvYmogPSB0aGlzLmdldFZpZGVvT2JqZWN0QnlQdWJsaWNTSUQocHVibGljU0lEKTsNCisNCisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJkaXNjb25uZWNjbGllbnQgb2JqOiAiLG9iaik7DQorICAgICAgICAgICAgaWYgKG9iaiA9PSBudWxsKSB7DQorICAgICAgICAgICAgCWlmICgkZGVidWcpIERlYnVnLndhcm4oIkNvdWxkIE5vdCBmaW5kIHRoaXMgVG8gZGlzY29ubmVjdCIscHVibGljU0lEKTsNCisgICAgICAgICAgICB9DQorDQorICAgICAgICAgICAgaWYgKG9iaiAhPSBudWxsKXsNCisgICAgICAgICAgICAgICAgb2JqLnJlc2V0VmFsdWVzKCk7DQorICAgICAgICAgICAgICAgIG9iai5kZXN0cm95KCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgXV0+DQorICAgIDwvbWV0aG9kPg0KKw0KKyAgICA8bWV0aG9kIG5hbWU9Im11dGVTb3VuZCIgYXJncz0icHVibGljU0lELCBib29sIj4NCisgICAgICAgIDwhW0NEQVRBWw0KKyAgICAgICAgICAgIHZhciBvYmogPSB0aGlzLmdldFZpZGVvT2JqZWN0QnlQdWJsaWNTSUQocHVibGljU0lEKTsNCisgICAgICAgICAgICBpZiAob2JqICE9IG51bGwpIHsNCisgICAgICAgICAgICAgICAgb2JqLnNpbGVuY2VNaWNyb3Bob25lKGJvb2wpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICBdXT4NCisgICAgPC9tZXRob2Q+DQorDQorICAgIDxtZXRob2QgbmFtZT0icmVzZXRBbGxWYWx1ZXMiPg0KKyAgICAgICAgZm9yICh2YXIgZWcgaW4gdGhpcy5zdWJ2aWV3cyl7DQorICAgICAgICAgICAgdGhpcy5zdWJ2aWV3c1tlZ10ucmVzZXRWYWx1ZXMoKTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybjsNCisgICAgPC9tZXRob2Q+DQorDQorICAgIDxtZXRob2QgbmFtZT0iY2xvc2VTdHJlYW1jbGllbnQiIGFyZ3M9InB1YmxpY1NJRCI+DQorICAgICAgICA8IVtDREFUQVsNCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiY2xvc2VTdHJlYW10aGlzOiAiLHB1YmxpY1NJRCk7DQorICAgICAgICAgICAgdmFyIG9iaiA9IHRoaXMuZ2V0VmlkZW9PYmplY3RCeVB1YmxpY1NJRChwdWJsaWNTSUQpOw0KKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJjbG9zZVN0cmVhbXRoaXMgb2JqOiAiLG9iaik7DQorICAgICAgICAgICAgaWYgKG9iaiAhPSBudWxsKXsNCisgICAgICAgICAgICAgICAgb2JqLnJlc2V0VmFsdWVzKCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHJldHVybiBvYmo7DQorICAgICAgICBdXT4NCisgICAgPC9tZXRob2Q+DQorDQorICAgIDxtZXRob2QgbmFtZT0icmVtb3ZlVmlkZW9CeVVzZXIiIGFyZ3M9InB1YmxpY1NJRCI+PCFbQ0RBVEFbDQorICAgICAgICB2YXIgb2JqID0gdGhpcy5jbG9zZVN0cmVhbWNsaWVudChwdWJsaWNTSUQpOw0KKyAgICAgICAgaWYob2JqICE9IG51bGwpIHsNCisgICAgICAgICAgICBvYmouZGVzdHJveSgpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgcmV0dXJuOw0KKyAgICBdXT48L21ldGhvZD4NCisNCisJPG1ldGhvZCBuYW1lPSJ1cGRhdGVNdXRlU3RhdHVzVmlkZW9WaWV3IiBhcmdzPSJyb29tQ2xpZW50Ij4NCisJPCFbQ0RBVEFbDQorCQl2YXIgb2JqID0gdGhpcy5nZXRWaWRlb09iamVjdEJ5UHVibGljU0lEKHJvb21DbGllbnQucHVibGljU0lEKTsNCisJCWlmIChvYmogIT0gbnVsbCkgew0KKwkJCW9iai5tdXRlTWljcm9waG9uZShyb29tQ2xpZW50KTsNCisJCX0NCisJXV0+DQorCTwvbWV0aG9kPg0KKw0KKyAgICA8bWV0aG9kIG5hbWU9ImlzbW9kZXJhdG9yQ2hhbmdlZCIgYXJncz0ibSI+DQorICAgICAgICBjYW52YXMuc2V0QXR0cmlidXRlKCJpc21vZGVyYXRvciIsIG0pOw0KKyAgICAgICAgcmV0dXJuOw0KKyAgICA8L21ldGhvZD4NCisNCisNCisJPG1ldGhvZCBuYW1lPSJzZXRTcGVha2luZ0J5UG9zIiBhcmdzPSJwdWJsaWNTSUQsYm9vbCI+DQorCTwhW0NEQVRBWw0KKwkJLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2V0U3BlYWtpbmdCeVBvcyAiLHB1YmxpY1NJRCxib29sKTsNCisJCXZhciBvYmogPSB0aGlzLmdldFZpZGVvT2JqZWN0QnlQdWJsaWNTSUQocHVibGljU0lEKTsNCisJCWlmIChvYmogPT0gbnVsbCkgew0KKwkJCWlmICgkZGVidWcpIERlYnVnLndhcm4oIkNvdWxkIG5vdCBmaW5kIHVzZXIgZm9yIHNldFNwZWFraW5nQnlQb3MgIixwdWJsaWNTSUQsYm9vbCk7DQorCQkJcmV0dXJuOw0KKwkJfQ0KKwkJb2JqLl9sb3VkbmVzcy5zZXRTcGVha2luZyhib29sKTsNCisJXV0+DQorCTwvbWV0aG9kPg0KKw0KKyAgICA8bWV0aG9kIG5hbWU9InNldEFWU2V0dGluZ3NUb0NsaWVudCIgYXJncz0icmNsIj4NCisgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzZXRBVlNldHRpbmdzVG9DbGllbnQgIixyY2wucHVibGljU0lELHJjbCk7DQorICAgICAgICB2YXIgb2JqID0gdGhpcy5nZXRWaWRlb09iamVjdEJ5UHVibGljU0lEKHJjbC5wdWJsaWNTSUQpOw0KKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInNldEFWU2V0dGluZ3NUb0NsaWVudDogIixvYmoscmNsLmF2c2V0dGluZ3MpOw0KKyAgICAgICAgaWYgKG9iaiA9PSBudWxsKSB7DQorICAgIAkJb2JqID0gdGhpcy5nZXROZXdWaWRlb09iamVjdEJ5UG9zKHJjbC5wdWJsaWNTSUQpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHJjbC5hdnNldHRpbmdzPT0ibiIpew0KKyAgICAgICAgICAgIG9iai5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsNCisgICAgICAgICAgICBvYmouc2V0VmlkZW91c2VyUHJvZmlsZVBpYyhyY2wpOw0KKyAgICAgICAgfSBlbHNlIGlmIChyY2wuYXZzZXR0aW5ncz09ImEiKXsNCisgICAgICAgICAgICBvYmouc2V0VmlkZW91c2VyUHJvZmlsZVBpYyhyY2wpOw0KKyAgICAgICAgICAgIG9iai5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgb2JqLmRlbGV0ZVZpZGVvQ29uZlByb2ZpbGVQaWMoKTsNCisgICAgICAgICAgICBvYmouc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgb2JqLnRoaXNWYXJzID0gcmNsOw0KKyAgICAgICAgb2JqLnVwZGF0ZUFWU2V0dGluZ3NTeW1ib2wocmNsKTsNCisgICAgICAgIHJldHVybjsNCisgICAgPC9tZXRob2Q+DQorDQorICAgIDxtZXRob2QgbmFtZT0ic3RhcnRTdHJlYW0iIGFyZ3M9InB1YmxpY1NJRCxicm9hZGNhc3RJZCxmaXJzdG5hbWUsbGFzdG5hbWUsaW50ZXJ2aWV3UG9kSWQsd2lkdGgsaGVpZ2h0Ij4NCisgICAgICAgIDwhW0NEQVRBWw0KKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzdGFydFN0cmVhbTogIiwgcHVibGljU0lELGJyb2FkY2FzdElkLGZpcnN0bmFtZSxsYXN0bmFtZSxpbnRlcnZpZXdQb2RJZCx3aWR0aCxoZWlnaHQpOw0KKyAgICAgICAgICAgIHZhciBvYmogPSB0aGlzLmdldFZpZGVvT2JqZWN0QnlQdWJsaWNTSUQocHVibGljU0lEKTsNCisgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJzdGFydFN0cmVhbSBvYmo6ICIsb2JqKTsNCisgICAgICAgICAgICBpZiAob2JqICE9IG51bGwgKXsNCisgICAgICAgICAgICAgICAgb2JqLl9jaGF0dmlkZW9pbm5lci5fdmlkZW9zdHJlYW0ucGxheVN0cmVhbShicm9hZGNhc3RJZCwtMSk7DQorICAgICAgICAgICAgICAgIG9iai5zZXREZWZhdWx0VmlkZW9TaXplKHdpZHRoLGhlaWdodCk7DQorICAgICAgICAgICAgICAgIG9iai5zZXRBdHRyaWJ1dGUoJ2NoYXRwYXJ0bmVybmFtZScsZmlyc3RuYW1lKycgJytsYXN0bmFtZSk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIC8vd2UgaGF2ZSB0byBkbyB0aGlzIGFnYWluIHdoZW4gdGhlIHN0cmVhbSBzdGFydHMsIHRoZSBpbml0aWFsIHZpZGVvIA0KKyAgICAgICAgICAgIC8vY29tcG9uZW50IGRvZXMgbm90IGtub3cgdGhlIGludGVydmlld1BvZElkIGFzIHRoZSB1c2VyIGhhcyBub3Qgc2VsZWN0ZWQgDQorICAgICAgICAgICAgLy93aGljaCBpbnRlcnZpZXcgdmlkZW8gcG9kIGhlIGlzIGdvaW5nIHRvIHVzZQ0KKyAgICAgICAgICAgIGlmIChjYW52YXMuaXNJbnRlcnZpZXcgJiYgaW50ZXJ2aWV3UG9kSWQgIT0gbnVsbCAmJiBpbnRlcnZpZXdQb2RJZCA+IDApIHsNCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIklzIGludGVydmlldyAiLGludGVydmlld1BvZElkLCJ4IixjYW52YXNbImludGVydmlld1BvZCIraW50ZXJ2aWV3UG9kSWQrIl94Il0pOw0KKyAgICAgICAgICAgICAgICBvYmouc2V0QXR0cmlidXRlKCJpbnRlcnZpZXdQb2RJZCIsIGludGVydmlld1BvZElkKTsNCisgICAgICAgICAgICAgICAgb2JqLnNldEF0dHJpYnV0ZSgieCIsY2FudmFzWyJpbnRlcnZpZXdQb2QiK2ludGVydmlld1BvZElkKyJfeCJdKTsNCisgICAgICAgICAgICAgICAgb2JqLnNldEF0dHJpYnV0ZSgieSIsY2FudmFzWyJpbnRlcnZpZXdQb2QiK2ludGVydmlld1BvZElkKyJfeSJdKTsNCisgICAgICAgICAgICAgICAgb2JqLnNldEF0dHJpYnV0ZSgid2lkdGgiLDMyMik7DQorICAgICAgICAgICAgICAgIG9iai5zZXRBdHRyaWJ1dGUoImhlaWdodCIsMjgxKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgXV0+DQorICAgIDwvbWV0aG9kPg0KKw0KKwk8IS0tLQ0KKwkJQ2xlYXIgYWxsIHZpZXdzLCBwcm9iYWJseSB0aGlzIGlzIGNhbGVsZCB3aGVuZXZlciBhIHVzZXIgbGVhdmVzIHRoZSByb29tIGZvciBleGFtcGxlDQorCSAtLT4NCisgICAgPG1ldGhvZCBuYW1lPSJjbGVhckFsbCI+DQorICAgICAgICA8IVtDREFUQVsNCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiY2xlYXJBbGwiLCB0aGlzLnN1YnZpZXdzKTsNCisgICAgICAgICAgICB3aGlsZSh0aGlzLnN1YnZpZXdzLmxlbmd0aCA+IDApIHsNCisgICAgICAgICAgICAgICAgdGhpcy5zdWJ2aWV3c1swXS5fY2hhdHZpZGVvaW5uZXIuX3ZpZGVvc3RyZWFtLl9zdG9wKCk7DQorICAgICAgICAgICAgICAgIHRoaXMuc3Vidmlld3NbMF0uZGVzdHJveSgpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBpZiAoY2FudmFzLmlubmVyLmVkaXRSZWNvcmRTdHJlYW0gIT0gbnVsbCkgew0KKyAgICAgICAgICAgICAgICBjYW52YXMuaW5uZXIuZWRpdFJlY29yZFN0cmVhbS5kZXN0cm95KCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIF1dPg0KKyAgICA8L21ldGhvZD4NCisgICAgDQorICAgIDwhLS0tDQorICAgIAlVcGRhdGUgdGhlIGlzbW9kZXJhdG9yIGZsYWcsIHRoZXJlIGlzIG5vIG5lZWQgdG8gY2hlY2sgaGVyZSB3aGljaCB1c2VyDQorICAgIAl0aGlzIGhhcHBlbmVkIGFscmVhZHkgYmVmb3JlIHNlbmRpbmcgaXQgdG8gdGhlIFNXRjEwIGFwcA0KKyAgICAgLS0+DQorICAgIDxtZXRob2QgbmFtZT0idXBkYXRlTW9kZXJhdGlvbkZsYWciIGFyZ3M9Im1vZGVyYXRvciI+DQorICAgIAk8IVtDREFUQVsNCisgICAgCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidXBkYXRlTW9kZXJhdGlvbkZsYWcgOjogIixtb2RlcmF0b3IpOw0KKyAgICAJCXRoaXMuc2V0QXR0cmlidXRlKCdpc21vZGVyYXRvcicsbW9kZXJhdG9yKTsNCisgICAgCQlyZXR1cm47DQorICAgIAldXT4NCisgICAgPC9tZXRob2Q+DQorICAgIA0KKyAgICA8IS0tLQ0KKyAgICAJVXBkYXRlIHRoZSBjYW5EcmF3LGNhblNoYXJlLGNhblJlbW90ZSBmbGFnLCB0aGVyZSBpcyBubyBuZWVkIHRvIGNoZWNrIGhlcmUgd2hpY2ggdXNlcg0KKyAgICAJdGhpcyBoYXBwZW5lZCBhbHJlYWR5IGJlZm9yZSBzZW5kaW5nIGl0IHRvIHRoZSBTV0YxMCBhcHANCisgICAgIC0tPg0KKyAgICA8bWV0aG9kIG5hbWU9InNldERyYXdBbGxvd1N0YXR1cyIgYXJncz0iY2FuRHJhdyxjYW5TaGFyZSxjYW5SZW1vdGUiPg0KKyAgICAJPCFbQ0RBVEFbDQorICAgIAkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInNldERyYXdBbGxvd1N0YXR1cyA6OiAiLGNhbkRyYXcsY2FuU2hhcmUsY2FuUmVtb3RlKTsNCisgICAgCQljYW52YXMuc2V0QXR0cmlidXRlKCJpc0FsbG93ZWRUb0RyYXciLGNhbkRyYXcpOw0KKyAgICAgICAgICAgIGNhbnZhcy5zZXRBdHRyaWJ1dGUoImlzQWxsb3dlZFRvU2NyZWVuU2hhcmUiLGNhblNoYXJlKTsNCisgICAgICAgICAgICBjYW52YXMuc2V0QXR0cmlidXRlKCJpc0FsbG93ZWRUb1JlbW90ZUNvbnRyb2wiLGNhblJlbW90ZSk7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAJXV0+DQorICAgIDwvbWV0aG9kPg0KKyAgICANCisgICAgPG1ldGhvZCBuYW1lPSJzZXRFeGNsdXNpdmVBdWRpb0FsbG93U3RhdHVzIiBhcmdzPSJjYW5HaXZlQXVkaW8iPg0KKyAgICAJPCFbQ0RBVEFbDQorICAgIAkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInNldEV4Y2x1c2l2ZUF1ZGlvQWxsb3dTdGF0dXMgOjogIixjYW5HaXZlQXVkaW8pOw0KKyAgICAJCWNhbnZhcy5zZXRBdHRyaWJ1dGUoImlzQWxsb3dlZFRvR2l2ZUV4Y2x1c2l2ZUF1ZGlvIixjYW5HaXZlQXVkaW8pOw0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgCV1dPg0KKyAgICA8L21ldGhvZD4NCisNCisgICAgPCEtLS0NCisgICAgICAgIFNob3dzIHRoZSB3aW5kb3cgd2l0aCBkZXZpY2Ugc2V0dGluZ3MNCisgICAgLS0+DQorICAgIDxtZXRob2QgbmFtZT0iY2hhbmdlRGV2aWNlIj4NCisgICAgICAgIDwhW0NEQVRBWw0KKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJjaGFuZ2VEZXZpY2UiKTsNCisgICAgICAgICAgICBuZXcgbHouY2hhbmdlRGV2aWNlKGNhbnZhcy5pbm5lciwgew0KKwkJCQkJICAgICAgICAgICAgICAgIG5hbWU6ImNoYW5nZURldmljZURpYWxvZyINCisJCQkJCSAgICAgICAgICAgIH0pOw0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIF1dPg0KKyAgICA8L21ldGhvZD4NCisNCisgICAgPCEtLS0NCisgICAgICAgIFNob3dzIHRoZSBleGl0IGRpYWxvZw0KKyAgICAtLT4NCisgICAgPG1ldGhvZCBuYW1lPSJleGl0Um9vbSI+DQorICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZXhpdFJvb20iKTsNCisgICAgICAgIG5ldyBsei5jb25maXJtYXRpb25TaW5nbGVTV0YxMChjYW52YXMsew0KKyAgICAgICAgICAgICAgICByZWZPYmo6dGhpcywNCisgICAgICAgICAgICAgICAgbGFiZWxpZDo3OTEsDQorICAgICAgICAgICAgICAgIGxhYmVsaWRlcnJvcjo3OTAsDQorICAgICAgICAgICAgICAgIHJlZlJldHVybk1ldGhvZDonaW1tZWRpYXRlRXhpdFJvb20nLA0KKyAgICAgICAgICAgICAgICBzaG93Q2hlY2tCb3g6ZmFsc2UNCisgICAgICAgICAgICB9KTsNCisgICAgICAgIHJldHVybjsNCisgICAgPC9tZXRob2Q+DQorDQorCTxtZXRob2QgbmFtZT0iaW1tZWRpYXRlRXhpdFJvb20iIGFyZ3M9ImJvb2wsY3R4Ij4NCisJCWNhbnZhcy52aWRlb0NvbXBfbGMuc2VuZChjYW52YXMudmlkZW9Db21wX2xjX25hbWUsICdleGl0Um9vbScsIGJvb2wpOw0KKwk8L21ldGhvZD4NCisNCisJPG1ldGhvZCBuYW1lPSJ1cGRhdGVGaXJzdExhc3ROYW1lIiBhcmdzPSJwdWJsaWNTSUQsZmlyc3QsbGFzdCI+DQorCQl2YXIgdiA9IGdldFZpZGVvT2JqZWN0QnlQdWJsaWNTSUQocHVibGljU0lEKTsNCisJCWlmICh2ICE9IG51bGwpIHsNCisJCQl2LnNldEF0dHJpYnV0ZSgnY2hhdHBhcnRuZXJuYW1lJywgZmlyc3QgKyAnICcgKyBsYXN0KTsNCisJCX0NCisJPC9tZXRob2Q+DQorCQ0KKyAgICA8IS0tLQ0KKyAgICAgICAgU2hvd3MgdGhlIGNsb3NlIHdoaXRlYm9hcmQgZGlhbG9nDQorICAgIC0tPg0KKyAgICA8bWV0aG9kIG5hbWU9ImNsb3NlV2hpdGVib2FyZCI+DQorICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiY2xvc2VXaGl0ZWJvYXJkIik7DQorICAgICAgICBpZiAoY2FudmFzLmlzbW9kZXJhdG9yIHx8IGNhbnZhcy5pc0FsbG93ZWRUb0RyYXcpIHsNCisgICAgICAgICAgICBjYW52YXMuY2xvc2VXaGl0ZWJvYXJkRGlhbG9nID0gbmV3IGx6LmNvbmZpcm1hdGlvblNpbmdsZVNXRjEwKGNhbnZhcyx7DQorICAgICAgICAgICAgICAgIHJlZk9iajp0aGlzLA0KKyAgICAgICAgICAgICAgICBsYWJlbGlkZXJyb3I6MTMxMywNCisgICAgICAgICAgICAgICAgcmVmUmV0dXJuTWV0aG9kOidjbG9zZVdoaXRlYm9hcmRDb25maXJtTWV0aG9kJywNCisgICAgICAgICAgICAgICAgc2hvd0NoZWNrQm94OmZhbHNlDQorICAgICAgICAgICAgfSk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIG5ldyBsei5sYWJlbGVycm9yUG9wdXBTV0YxMChjYW52YXMse2xhYmVsaWQ6MTM2NiwgZXJyb3JsYWJlbGlkOjEzNjV9KTsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybjsNCisgICAgPC9tZXRob2Q+DQorICAgIA0KKyAgICA8bWV0aG9kIG5hbWU9ImNsb3NlV2hpdGVib2FyZENvbmZpcm1NZXRob2QiIGFyZ3M9ImJvb2wsc2hhcmVkT2JqZWN0RGF0YSI+DQorICAgIAljYW52YXMudmlkZW9Db21wX2xjLnNlbmQoY2FudmFzLnZpZGVvQ29tcF9sY19uYW1lLCAnY2xvc2VXaGl0ZWJvYXJkJywgYm9vbCk7DQorICAgIDwvbWV0aG9kPg0KKyAgICAgICAgDQorCTwhLS0gYXJyYW5nZXMgdmlkZW8gcG9kcyAtLT4NCisJPG1ldGhvZCBuYW1lPSJhcnJhbmdlV2luZG93cyI+DQorCTwhW0NEQVRBWw0KKwkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImFycmFuZ2VXaW5kb3dzIik7DQorCQl2YXIgd2luZG93c0xpc3QgPSB0aGlzLnN1YnZpZXdzOw0KKw0KKwkJaWYgKDAgPT0gd2luZG93c0xpc3QubGVuZ3RoKSB7DQorICAgICAgICAgICAgcmV0dXJuOw0KKwkJfQ0KKw0KKyAgICAgICAgd2luZG93c0xpc3Quc29ydCh0aGlzLnNvcnRGdW5jdGlvbik7DQorDQorCQl2YXIgb2Zmc2V0SW5QeCA9IDQwOw0KKwkJdmFyIGluaXRYID0gMjA7DQorCQl2YXIgaW5pdFkgPSAyMDsNCisJCXZhciB4UG9zID0gaW5pdFg7DQorCQl2YXIgeVBvcyA9IGluaXRZOw0KKwkJdmFyIHJvd0hlaWdodCA9IHdpbmRvd3NMaXN0WzBdLmhlaWdodDsNCisNCisJCS8vIGFycmFuZ2Ugd2luZG93cyB3aXRoIG5ldyBwb3NpdGlvbnMNCisJCWZvciAodmFyIHdpbklkeCA9IDA7IHdpbklkeCA8IHdpbmRvd3NMaXN0Lmxlbmd0aDsgd2luSWR4KyspIHsNCisJCQl2YXIgd2luZG93ID0gd2luZG93c0xpc3Rbd2luSWR4XTsNCisJCQlpZiAoY2FudmFzLndpZHRoIDwgeFBvcyArIHdpbmRvdy53aWR0aCkgew0KKyAgICAgICAgICAgICAgICB5UG9zICs9IHJvd0hlaWdodCArIG9mZnNldEluUHg7DQorICAgICAgICAgICAgICAgIHhQb3MgPSBpbml0WDsNCisgICAgICAgICAgICAgICAgcm93SGVpZ2h0ID0gd2luZG93LmhlaWdodDsNCisJCQl9DQorCQkJaWYgKGNhbnZhcy5oZWlnaHQgPCB5UG9zKSB7DQorCQkJICAgIGluaXRYICs9IDEwOw0KKwkJCSAgICBpbml0WSArPSAxMDsNCisJCQkgICAgeFBvcyA9IGluaXRYOw0KKwkJCSAgICB5UG9zID0gaW5pdFk7DQorCQkJfQ0KKwkJCXdpbmRvdy5zZXRBdHRyaWJ1dGUoIngiLCB4UG9zKTsNCisJCQl3aW5kb3cuc2V0QXR0cmlidXRlKCJ5IiwgeVBvcyk7DQorCQkJd2luZG93LmJyaW5nVG9Gcm9udCgpOw0KKw0KKwkJCXhQb3MgKz0gd2luZG93LndpZHRoICsgb2Zmc2V0SW5QeDsNCisJCX0NCisJXV0+DQorCTwvbWV0aG9kPg0KKw0KKwk8bWV0aG9kIG5hbWU9InNldFNlc3Npb25JZCIgYXJncz0ic2Vzc2lvbl9pZCI+DQorCQljYW52YXMuc2V0QXR0cmlidXRlKCJzZXNzaW9uSWQiLCBzZXNzaW9uX2lkKTsNCisJPC9tZXRob2Q+DQorCQ0KKyAgICA8IS0tIEBrZXl3b3JkIHByaXZhdGUgLS0+DQorICAgIDxtZXRob2QgbmFtZT0ic29ydEZ1bmN0aW9uIiBhcmdzPSJlbDEsIGVsMiI+DQorICAgICAgICA8IVtDREFUQVsNCisgICAgICAgICAgICBpZiAoZWwxLmhlaWdodCA+IGVsMi5oZWlnaHQpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOw0KKyAgICAgICAgICAgIH0gZWxzZSBpZiAoZWwxLmhlaWdodCA8IGVsMi5oZWlnaHQpIHsNCisgICAgICAgICAgICAgICAgcmV0dXJuIDE7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHJldHVybiAwOw0KKyAgICAgICAgXV0+DQorICAgIDwvbWV0aG9kPg0KKw0KKzwvY2xhc3M+DQorDQorPC9saWJyYXJ5Pg0KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3dmMTAvZHJhZ0hlbHBlci5senggYi9XZWJDb250ZW50L3N3ZjEwL2RyYWdIZWxwZXIubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjOGJlYTkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL2RyYWdIZWxwZXIubHp4CkBAIC0wLDAgKzEsNDAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/Pg0KKzwhLS0NCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgIA0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAgICAJICANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAgdW5kZXIgdGhlIExpY2Vuc2UuDQorICANCistLT4NCis8bGlicmFyeT4NCisNCis8Y2xhc3MgbmFtZT0iZHJhZ0hlbHBlciI+DQorDQorICAgIDxhdHRyaWJ1dGUgbmFtZT0iZHJhZ0hlbHBlciIgdmFsdWU9Im51bGwiIC8+DQorDQorICAgIDxtZXRob2QgbmFtZT0iY3JlYXRlIj4NCisgICAgICAgIGlmKHRoaXMuZHJhZ0hlbHBlciAhPSBudWxsICkgdGhpcy5kcmFnSGVscGVyLmRlc3Ryb3koKTsNCisgICAgICAgIHRoaXMuZHJhZ0hlbHBlciA9IG5ldyBsei52aWV3KGNhbnZhcywge3dpZHRoOmNhbnZhcy53aWR0aCxoZWlnaHQ6Y2FudmFzLmhlaWdodCx4OicwJyx5OicwJywgYmdjb2xvcjonMHhGRkZGRkYnLCBvcGFjaXR5OjAuMDEsY2xpY2thYmxlOnRydWV9KTsNCisgICAgICAgIHRoaXMuZHJhZ0hlbHBlci5zZW5kSW5Gcm9udE9mKGNhbnZhcy5tYWluQ29tcG9uZW50KTsNCisgICAgPC9tZXRob2Q+DQorDQorICAgIDxtZXRob2QgbmFtZT0icmVtb3ZlIj4NCisgICAgICAgIHRoaXMuZHJhZ0hlbHBlci5kZXN0cm95KCk7DQorICAgICAgICB0aGlzLmRyYWdIZWxwZXIgPSBudWxsOw0KKyAgICA8L21ldGhvZD4NCisNCis8L2NsYXNzPg0KKw0KKzwvbGlicmFyeT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL2hpYkFkYXB0ZXIubHp4IGIvV2ViQ29udGVudC9zd2YxMC9oaWJBZGFwdGVyLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOWYwZmU0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC9oaWJBZGFwdGVyLmx6eApAQCAtMCwwICsxLDM4MyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+DQorPCEtLQ0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAgDQorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICAgIAkgIA0KKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICB1bmRlciB0aGUgTGljZW5zZS4NCisgIA0KKy0tPg0KKzxsaWJyYXJ5Pg0KKw0KKzxjbGFzcyBuYW1lPSJoaWJBZGFwdGVyIj4NCisNCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJ0ZXN0aW5nQXBwbGljYXRpb24iIHZhbHVlPSJudWxsIiAvPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9ImJhc2VWaWRlb1N0cmVhbSIgdmFsdWU9Im51bGwiIC8+DQorDQorICAgIDxzd2l0Y2g+DQorICAgICAgICA8d2hlbiBwcm9wZXJ0eT0iJGFzMyI+DQorICAgICAgICAgICAgPHBhc3N0aHJvdWdoPg0KKyAgICAgICAgICAgICAgICBpbXBvcnQgZmxhc2gubmV0LkxvY2FsQ29ubmVjdGlvbjsNCisgICAgICAgICAgICA8L3Bhc3N0aHJvdWdoPg0KKyAgICAgICAgPC93aGVuPg0KKyAgICA8L3N3aXRjaD4NCisNCisgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij48IVtDREFUQVsNCisgICAgICAgIHZhciBjbGllbnQgPSB7fTsNCisgICAgICAgIGNsaWVudC50ID0gdGhpczsNCisNCisgICAgICAgIGNsaWVudC5oaWJBZGFwdGVyX3NldExhYmVsT2JqZWN0QnlIdW5kcmVkID0gdGhpcy5oaWJBZGFwdGVyX3NldExhYmVsT2JqZWN0QnlIdW5kcmVkOw0KKyAgICAgICAgY2xpZW50LnNldFJvb21WYWx1ZXMgPSB0aGlzLnNldFJvb21WYWx1ZXM7DQorICAgICAgICBjbGllbnQuZ2V0Um9vbVR5cGVzID0gdGhpcy5nZXRSb29tVHlwZXM7DQorICAgICAgICBjbGllbnQuZGlzY29ubmVjdCA9IHRoaXMuZGlzY29ubmVjdDsNCisgICAgICAgIGNsaWVudC5yZWNvbm5lY3RTdWNjZXNzID0gdGhpcy5yZWNvbm5lY3RTdWNjZXNzOw0KKyAgICAgICAgLy9UZXN0IGFwcGxpY2F0aW9uIHRvIHJlY29yZCA1IHNlY29uZHMNCisgICAgICAgIGNsaWVudC5kb0luaXRUZXN0aW5nQXBwbGljYXRpb24gPSB0aGlzLmRvSW5pdFRlc3RpbmdBcHBsaWNhdGlvbjsNCisgICAgICAgIGNsaWVudC5jbG9zZUluaXRUZXN0aW5nQXBwbGljYXRpb24gPSB0aGlzLmNsb3NlSW5pdFRlc3RpbmdBcHBsaWNhdGlvbjsNCisgICAgICAgIA0KKyAgICAgICAgLy9SZWNvcmRpbmcgUGxheWVyIFdoaXRlYm9hcmQNCisgICAgICAgIGNsaWVudC5jb25uZWN0UmVjb3JkaW5nUGxheWVyID0gdGhpcy5jb25uZWN0UmVjb3JkaW5nUGxheWVyOw0KKyAgICAgICAgY2xpZW50LnBsYXlSZWNvcmRpbmdTdHJlYW0gPSB0aGlzLnBsYXlSZWNvcmRpbmdTdHJlYW07DQorICAgICAgICBjbGllbnQudXBkYXRlUmVjb3JkaW5nVmlkZW9Qb3NpdGlvbiA9IHRoaXMudXBkYXRlUmVjb3JkaW5nVmlkZW9Qb3NpdGlvbjsNCisgICAgICAgIGNsaWVudC5zdG9wUmVjb3JkaW5nU3RyZWFtID0gdGhpcy5zdG9wUmVjb3JkaW5nU3RyZWFtOw0KKyAgICAgICAgY2xpZW50LnBhdXNlUmVjb3JkaW5nUGxheWJhY2sgPSB0aGlzLnBhdXNlUmVjb3JkaW5nUGxheWJhY2s7DQorICAgICAgICBjbGllbnQuc2Vla1JlY29yZGluZ1BsYXliYWNrID0gdGhpcy5zZWVrUmVjb3JkaW5nUGxheWJhY2s7DQorICAgICAgICBjbGllbnQuc3RvcEFuZENsb3NlUmVjb3JkaW5nQ29ubmVjdGlvbiA9IHRoaXMuc3RvcEFuZENsb3NlUmVjb3JkaW5nQ29ubmVjdGlvbjsNCisgICAgICAgIGNsaWVudC5wbGF5YmFja1doaXRlYm9hcmRWaWRlbyA9IHRoaXMucGxheWJhY2tXaGl0ZWJvYXJkVmlkZW87DQorICAgICAgICBjbGllbnQuc3RvcFdoaXRlYm9hcmRWaWRlbyA9IHRoaXMuc3RvcFdoaXRlYm9hcmRWaWRlbzsNCisgICAgICAgIA0KKyAgICAgICAgLy9TY3JlZW4gc2hhcmluZyBwbGF5ZXINCisgICAgICAgIGNsaWVudC5uZXdTY3JlZW5TaGFyaW5nID0gdGhpcy5uZXdTY3JlZW5TaGFyaW5nOw0KKyAgICAgICAgY2xpZW50Lm5ld1NjcmVlblNoYXJpbmdzID0gdGhpcy5uZXdTY3JlZW5TaGFyaW5nczsNCisgICAgICAgIGNsaWVudC5jbG9zZVNjcmVlblNoYXJpbmcgPSB0aGlzLmNsb3NlU2NyZWVuU2hhcmluZzsNCisgICAgICAgIGNsaWVudC5jbG9zZUFsbFNjcmVlblNoYXJpbmdzID0gdGhpcy5jbG9zZUFsbFNjcmVlblNoYXJpbmdzOw0KKyAgICAgICAgY2xpZW50LnVwZGF0ZUN1cnNvclNjcmVlblNoYXJpbmcgPSB0aGlzLnVwZGF0ZUN1cnNvclNjcmVlblNoYXJpbmc7DQorICAgICAgICANCisgICAgICAgIC8vVGV4dCBSZWdFeHAgDQorICAgICAgICBjbGllbnQucmVnRXhwVGVzdCA9IHRoaXMucmVnRXhwVGVzdDsNCisNCisgICAgICAgIHZhciBydG1wTEM6TG9jYWxDb25uZWN0aW9uID0gbmV3IExvY2FsQ29ubmVjdGlvbigpOw0KKyAgICAgICAgcnRtcExDLmNvbm5lY3QoY2FudmFzLnJ0bXBfbGNfbmFtZSk7DQorICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiQ29ubmVjdCB0byBMb2NhbENvbm5lY3Rpb24gIixjYW52YXMucnRtcF9sY19uYW1lKTsNCisgICAgICAgIHJ0bXBMQy5jbGllbnQ9Y2xpZW50Ow0KKyAgICAgICAgY2FudmFzLnNldEF0dHJpYnV0ZSgicnRtcF9sYyIsIHJ0bXBMQyk7DQorICAgIF1dPjwvaGFuZGxlcj4NCisNCisgICAgPG1ldGhvZCBuYW1lPSJoaWJBZGFwdGVyX3NldExhYmVsT2JqZWN0QnlIdW5kcmVkIiBhcmdzPSJzdGFydCx2YWx1ZSI+DQorICAgIAkvL2lmKCRkZWJ1ZykgRGVidWcud3JpdGUoImhpYkFkYXB0ZXJfc2V0TGFiZWxPYmplY3RCeUh1bmRyZWQiLHN0YXJ0KTsNCisgICAgICAgIC8vIGlmKCRkZWJ1ZykgRGVidWcud3JpdGUoImhpYkFkYXB0ZXJfc2V0TGFiZWxPYmplY3RCeUh1bmRyZWQiLHN0YXJ0LHZhbHVlKTsNCisgICAgICAgIHNldExhYmVsT2JqZWN0QnlIdW5kcmVkKHN0YXJ0LHZhbHVlKTsNCisgICAgPC9tZXRob2Q+DQorDQorICAgIDxtZXRob2QgbmFtZT0ic2V0Um9vbVZhbHVlcyIgYXJncz0icm9vbXR5cGVzX2lkLHJvb21zX2lkLHZhbHVlIj4NCisgICAgICAgIGlmKCRkZWJ1ZykgRGVidWcud3JpdGUoInNldFJvb21WYWx1ZXMiLHJvb210eXBlc19pZCxyb29tc19pZCx2YWx1ZSk7DQorICAgICAgICBjYW52YXMuY3VycmVudFJvb21PYmplY3QgPSB2YWx1ZTsNCisgICAgPC9tZXRob2Q+DQorDQorICAgIDxtZXRob2QgbmFtZT0iZ2V0Um9vbVR5cGVzIiBhcmdzPSJ2YWx1ZSI+DQorICAgICAgICBjYW52YXMucm9vbVR5cGVzSW5pdFZhbHVlcyA9IHZhbHVlOw0KKyAgICA8L21ldGhvZD4NCisgICAgDQorICAgIDwhLS0gDQorICAgIAlTeW5jZXMgc29tZSBvZiB0aGUgdmFyaWFibGVzIGZyb20gdGhlIFNXRjggdG8gdGhlIFNXRjEwLg0KKyAgICAJVGhpcyBhbHNvIGluY2x1ZGVzIHZhbHVlcyBmb3IgaHR0cGhvc3Rsb2NhbA0KKyAgICAJaW4gY2FzZSBpdHMgYSBjbHVzdGVyJ2VkIE9wZW5NZWV0aW5ncyBpbnN0YWxsYXRpb24gdGhlIGNvbm5lY3Rpb25fdXJsDQorICAgIAltaWdodCBwb2ludCB0byB0aGUgc2xhdmUgd2hpbGUgdGhlIGh0dHBob3N0bG9jYWwgcG9pbnRzIHRvIHRoZSBtYXN0ZXINCisgICAgIC0tPg0KKyAgICA8bWV0aG9kIG5hbWU9InJlY29ubmVjdFN1Y2Nlc3MiIGFyZ3M9ImNvbm5lY3Rpb25fdXJsLHB1YmxpY1NJRCx1c2Vyb2JqZWN0LGlzSW50ZXJ2aWV3LGh0dHBob3N0bG9jYWwiPg0KKyAgICAgICAgaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgicmVjb25uZWN0U3VjY2VzcyIsY29ubmVjdGlvbl91cmwscHVibGljU0lELHVzZXJvYmplY3QpOw0KKyAgICAgICAgY2FudmFzLmh0dHBob3N0bG9jYWwgPSBodHRwaG9zdGxvY2FsOw0KKyAgICAgICAgY2FudmFzLnB1YmxpY1NJRCA9IHB1YmxpY1NJRDsNCisgICAgICAgIGNhbnZhcy51c2Vyb2JqZWN0ID0gdXNlcm9iamVjdDsNCisgICAgICAgIGNhbnZhcy5pc0ludGVydmlldyA9IGlzSW50ZXJ2aWV3Ow0KKyAgICAgICAgY2FudmFzLnRoaXNoaWIuc2V0QXR0cmlidXRlKCdzcmMnLGNvbm5lY3Rpb25fdXJsKTsNCisgICAgICAgIGNhbnZhcy50aGlzaGliLmNvbm5lY3QoKTsNCisgICAgPC9tZXRob2Q+DQorICAgIA0KKyAgICA8bWV0aG9kIG5hbWU9ImRpc2Nvbm5lY3QiIGFyZ3M9ImFyZyI+DQorICAgICAgICBpZigkZGVidWcpIERlYnVnLndyaXRlKCJEbyBkaXNjb25uZWN0Iik7DQorICAgICAgICBjYW52YXMudGhpc2hpYi5kaXNjb25uZWN0KCk7DQorICAgIDwvbWV0aG9kPg0KKyAgICANCisgICAgPCEtLS0NCisgICAgICAgIFN0YXJ0cyB0aGUgNSBzZWNvbmQgYXVkaW8vdmlkZW8gdGVzdGluZyBhcHBsaWNhdGlvbiBhbmQgY29ubmVjdCB0byBSVE1QDQorICAgICAtLT4NCisgICAgPG1ldGhvZCBuYW1lPSJkb0luaXRUZXN0aW5nQXBwbGljYXRpb24iIGFyZ3M9IngseSxjb25uZWN0aW9uX3VybCI+DQorICAgICAgICBpZigkZGVidWcpIERlYnVnLndyaXRlKCJkb0luaXRUZXN0aW5nQXBwbGljYXRpb24gIix4LHkpOw0KKyAgICAgICAgY2FudmFzLnRoaXNoaWIuc2V0QXR0cmlidXRlKCdzcmMnLGNvbm5lY3Rpb25fdXJsKTsNCisgICAgICAgIGNhbnZhcy50aGlzaGliLmNvbm5lY3QoKTsNCisgICAgICAgIHRoaXMudGVzdGluZ0FwcGxpY2F0aW9uID0gbmV3IGx6LnRlc3RpbmdBcHBsaWNhdGlvbihjYW52YXMse25hbWU6J2N1cnJlbnRTaGFyaW5nJyx4OngrMSx5OnkrMjR9KTsNCisgICAgPC9tZXRob2Q+DQorICAgIA0KKyAgICA8IS0tLQ0KKyAgICAgICAgU3RvcHMgYW5kIGRlc3Ryb3lzIHRoZSB2aWV3IHdpdGggdGhlIGF1ZGlvL3ZpZGVvIHRlc3RpbmcgYXBwbGljYXRpb24NCisgICAgICAgIGFuZCBzZW5kIGNvbmZpcm1hdGlvbiBiYWNrIHZpYSBMb2NhbENvbm5lY3Rpb24NCisgICAgIC0tPg0KKyAgICA8bWV0aG9kIG5hbWU9ImNsb3NlSW5pdFRlc3RpbmdBcHBsaWNhdGlvbiI+DQorICAgIAljYW52YXMudGhpc2hpYi5kaXNjb25uZWN0KCk7DQorICAgICAgICBpZigkZGVidWcpIERlYnVnLndyaXRlKCJjbG9zZUluaXRUZXN0aW5nQXBwbGljYXRpb24gIik7DQorICAgICAgICBpZiAodGhpcy50ZXN0aW5nQXBwbGljYXRpb24gIT0gbnVsbCkgew0KKyAgICAgICAgICAgIHRoaXMudGVzdGluZ0FwcGxpY2F0aW9uLnN0b3JlU2V0dGluZ3MoKTsNCisgICAgICAgICAgICB0aGlzLnRlc3RpbmdBcHBsaWNhdGlvbi5kZXN0cm95KCk7DQorICAgICAgICAgICAgdGhpcy50ZXN0aW5nQXBwbGljYXRpb24gPSBudWxsOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIlNlbmQgY29uZmlybWF0aW9uIG9mIGNsb3NlIGJhY2sgdG86ICIsY2FudmFzLnZpZGVvQ29tcF9sY19uYW1lKTsNCisgICAgICAgIGNhbnZhcy52aWRlb0NvbXBfbGMuc2VuZChjYW52YXMudmlkZW9Db21wX2xjX25hbWUsICdjbG9zZUluaXRUZXN0aW5nQXBwbGljYXRpb25Db25maXJtJyk7DQorICAgIDwvbWV0aG9kPg0KKyAgICANCisgICAgPCEtLS0NCisgICAgICAgIEluaXRpYWxpemVzIHZpZGVvIHBsYXliYWNrIGNvbXBvbmVudA0KKyAgICAgICAgYW5kIGNvbm5lY3QgdG8gUlRNUA0KKyAgICAgLS0+DQorICAgIDxtZXRob2QgbmFtZT0iY29ubmVjdFJlY29yZGluZ1BsYXllciIgYXJncz0iY29ubmVjdGlvbl91cmwseCx5LHdpZHRoLGhlaWdodCI+DQorICAgIAlpZigkZGVidWcpIERlYnVnLndyaXRlKCJjb25uZWN0UmVjb3JkaW5nUGxheWVyICIsIGNvbm5lY3Rpb25fdXJsLHgseSx3aWR0aCxoZWlnaHQpOw0KKyAgICAJY2FudmFzLnRoaXNoaWIuc2V0QXR0cmlidXRlKCdzcmMnLGNvbm5lY3Rpb25fdXJsKTsNCisgICAgICAgIGNhbnZhcy50aGlzaGliLmNvbm5lY3QoKTsNCisgICAgICAgIHRoaXMuYmFzZVZpZGVvU3RyZWFtID0gbmV3IGx6LnBsYXlCYWNrVmlkZW9TdHJlYW0oY2FudmFzLHsNCisgICAgICAgICAgICB4OngsDQorICAgICAgICAgICAgeTp5LA0KKyAgICAgICAgICAgIHdpZHRoOndpZHRoLA0KKyAgICAgICAgICAgIGhlaWdodDpoZWlnaHQNCisgICAgICAgIH0pOw0KKyAgICA8L21ldGhvZD4gDQorICAgIA0KKyAgICA8IS0tLQ0KKyAgICAgICAgcGxheXMgYSByZWNvcmRlZCBzdHJlYW0NCisgICAgIC0tPg0KKyAgICA8bWV0aG9kIG5hbWU9InBsYXlSZWNvcmRpbmdTdHJlYW0iIGFyZ3M9InN0cmVhbU5hbWUsZGVsYXkseCx5LHdpZHRoLGhlaWdodCI+DQorICAgIAlpZigkZGVidWcpIERlYnVnLndyaXRlKCJwbGF5UmVjb3JkaW5nU3RyZWFtICIsc3RyZWFtTmFtZSx4LHksd2lkdGgsaGVpZ2h0KTsNCisgICAgCWlmICh0aGlzLmJhc2VWaWRlb1N0cmVhbSA9PSBudWxsKSB7DQorICAgIAkJaWYgKCRkZWJ1ZykgRGVidWcud2FybigiYmFzZVZpZGVvU3RyZWFtIGlzIE5VTEwiKTsNCisgICAgCQlyZXR1cm47DQorICAgIAl9DQorICAgIAl0aGlzLmJhc2VWaWRlb1N0cmVhbS5zZXRBdHRyaWJ1dGUoIngiLHgpOw0KKyAgICAJdGhpcy5iYXNlVmlkZW9TdHJlYW0uc2V0QXR0cmlidXRlKCJ5Iix5KTsNCisgICAgCXRoaXMuYmFzZVZpZGVvU3RyZWFtLnNldEF0dHJpYnV0ZSgid2lkdGgiLHdpZHRoKTsNCisgICAgCXRoaXMuYmFzZVZpZGVvU3RyZWFtLnNldEF0dHJpYnV0ZSgiaGVpZ2h0IixoZWlnaHQpOw0KKyAgICAJdGhpcy5iYXNlVmlkZW9TdHJlYW0uc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOw0KKyAgICAJdGhpcy5iYXNlVmlkZW9TdHJlYW0ucGxheVJlY29yZGluZ1N0cmVhbShzdHJlYW1OYW1lLGRlbGF5KTsNCisgICAgPC9tZXRob2Q+DQorICAgIA0KKyAgICA8IS0tLQ0KKyAgICAgICAgVXBkYXRlcyB0aGUgd2lkdGgvaGVpZ2h0IHByb3BlcnR5IG9mIHRoZSByZWNvcmRpbmcgcGxheWJhY2sgdmlkZW8gDQorICAgICAtLT4gICAgDQorICAgIDxtZXRob2QgbmFtZT0idXBkYXRlUmVjb3JkaW5nVmlkZW9Qb3NpdGlvbiIgYXJncz0id2lkdGgsaGVpZ2h0Ij4NCisgICAgCWlmICh0aGlzLmJhc2VWaWRlb1N0cmVhbSA9PSBudWxsKSB7DQorICAgIAkJaWYgKCRkZWJ1ZykgRGVidWcud2FybigiYmFzZVZpZGVvU3RyZWFtIGlzIE5VTEwiKTsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgICAgICB0aGlzLmJhc2VWaWRlb1N0cmVhbS5zZXRBdHRyaWJ1dGUoIndpZHRoIix3aWR0aCk7DQorICAgICAgICB0aGlzLmJhc2VWaWRlb1N0cmVhbS5zZXRBdHRyaWJ1dGUoImhlaWdodCIsaGVpZ2h0KTsNCisgICAgPC9tZXRob2Q+DQorICAgIA0KKyAgICA8IS0tLQ0KKyAgICAgICAgc3RvcHMgYW5kIGhpZGVzIHRoZSByZWNvcmRpbmcgcGxheWJhY2sgdmlkZW8NCisgICAgIC0tPg0KKyAgICA8bWV0aG9kIG5hbWU9InN0b3BSZWNvcmRpbmdTdHJlYW0iPg0KKyAgICAJaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic3RvcFJlY29yZGluZ1N0cmVhbSAiKTsNCisgICAgICAgIGlmICh0aGlzLmJhc2VWaWRlb1N0cmVhbSA9PSBudWxsKSB7DQorICAgICAgICAJaWYgKCRkZWJ1ZykgRGVidWcud2FybigiYmFzZVZpZGVvU3RyZWFtIGlzIE5VTEwiKTsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgICAgICBpZigkZGVidWcpIERlYnVnLndyaXRlKCIgc3RvcFJlY29yZGluZyAiKTsNCisgICAgICAgIHRoaXMuYmFzZVZpZGVvU3RyZWFtLnN0b3BSZWNvcmRpbmcoKTsNCisgICAgICAgIHRoaXMuYmFzZVZpZGVvU3RyZWFtLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOw0KKyAgICA8L21ldGhvZD4NCisgICAgDQorICAgIDwhLS0tIA0KKyAgICAgICAgcGF1c2VzIHRoZSBjdXJyZW50IHZpZGVvIG9yIGNvbnRpbnVlIGF0IHRoZSBzYW1lIHBvc2l0aW9uDQorICAgICAtLT4NCisgICAgPG1ldGhvZCBuYW1lPSJwYXVzZVJlY29yZGluZ1BsYXliYWNrIiBhcmdzPSJwYXVzZUJvb2wiPg0KKyAgICAJaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgicGF1c2VSZWNvcmRpbmdQbGF5YmFjayAiKTsNCisgICAgICAgIGlmICh0aGlzLmJhc2VWaWRlb1N0cmVhbSA9PSBudWxsKSB7DQorICAgICAgICAJaWYgKCRkZWJ1ZykgRGVidWcud2FybigiYmFzZVZpZGVvU3RyZWFtIGlzIE5VTEwiKTsNCisgICAgICAgICAgICByZXR1cm47DQorICAgICAgICB9DQorICAgICAgICB0aGlzLmJhc2VWaWRlb1N0cmVhbS5wYXVzZShwYXVzZUJvb2wpOw0KKyAgICA8L21ldGhvZD4NCisgICAgDQorICAgIDxtZXRob2QgbmFtZT0ic2Vla1JlY29yZGluZ1BsYXliYWNrIiBhcmdzPSJmbHZUaW1lIj4NCisgICAgCWlmKCRkZWJ1ZykgRGVidWcud3JpdGUoInNlZWtSZWNvcmRpbmdQbGF5YmFjayAiLGZsdlRpbWUpOw0KKyAgICAgICAgaWYgKHRoaXMuYmFzZVZpZGVvU3RyZWFtID09IG51bGwpIHsNCisgICAgICAgIAlpZiAoJGRlYnVnKSBEZWJ1Zy53YXJuKCJiYXNlVmlkZW9TdHJlYW0gaXMgTlVMTCIpOw0KKyAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgIH0NCisgICAgICAgIHRoaXMuYmFzZVZpZGVvU3RyZWFtLnNlZWtTdHJlYW0oZmx2VGltZSk7DQorICAgIDwvbWV0aG9kPg0KKyAgICANCisgICAgPG1ldGhvZCBuYW1lPSJzdG9wQW5kQ2xvc2VSZWNvcmRpbmdDb25uZWN0aW9uIj4NCisgICAgCWlmKCRkZWJ1ZykgRGVidWcud3JpdGUoInN0b3BBbmRDbG9zZVJlY29yZGluZ0Nvbm5lY3Rpb24gIik7DQorICAgICAgICBpZiAodGhpcy5iYXNlVmlkZW9TdHJlYW0gPT0gbnVsbCkgew0KKyAgICAgICAgCWlmICgkZGVidWcpIERlYnVnLndhcm4oImJhc2VWaWRlb1N0cmVhbSBpcyBOVUxMIik7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICAgICAgdGhpcy5iYXNlVmlkZW9TdHJlYW0uc3RvcFJlY29yZGluZygpOw0KKyAgICAgICAgdGhpcy5iYXNlVmlkZW9TdHJlYW0uZGVzdHJveSgpOw0KKyAgICAgICAgdGhpcy5iYXNlVmlkZW9TdHJlYW0gPSBudWxsOw0KKyAgICAgICAgY2FudmFzLnRoaXNoaWIuZGlzY29ubmVjdCgpOw0KKyAgICAgICAgLy8gc2VuZCBiYWNrIGNvbmZpcm1hdGlvbiB0byBsZWF2ZSB0aGUgbW9kdWxlDQorICAgICAgICBjYW52YXMudmlkZW9Db21wX2xjLnNlbmQoY2FudmFzLnZpZGVvQ29tcF9sY19uYW1lLCAncmVjb3JkaW5nU3RvcHBlZEFuZERpc2Nvbm5lY3RlZCcpOw0KKyAgICA8L21ldGhvZD4NCisgICAgDQorICAgIDwhLS0tDQorICAgICAgICBTdGFydCBwbGF5YmFjayBvZiB3aGl0ZWJvYXJkIHZpZGVvDQorICAgICAtLT4NCisgICAgPG1ldGhvZCBuYW1lPSJwbGF5YmFja1doaXRlYm9hcmRWaWRlbyIgYXJncz0idE5hbWUscmVjb3JkaW5nTmFtZSxzZWVrLHR4LHR5LHR3aWR0aCx0aGVpZ2h0Ij4NCisgICAgCTwhW0NEQVRBWw0KKyAgICAJICAgaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgicGxheWJhY2tXaGl0ZWJvYXJkVmlkZW8gIix0TmFtZSxyZWNvcmRpbmdOYW1lLHNlZWssdHgsdHksdHdpZHRoLHRoZWlnaHQpOw0KKyAgICAJICAgaWYgKHRoaXNbdE5hbWVdKSB7DQorICAgIAkgICAJIGlmICgkZGVidWcpIERlYnVnLndhcm4oInBsYXliYWNrV2hpdGVib2FyZFZpZGVvIHRoZXJlIHdhcyBhbHJlYWR5IGEgdmlkZW8gd2l0aCB0aGUgc2FtZSBuYW1lIik7DQorICAgIAkgICAJIHRoaXNbdE5hbWVdLl9zdG9wKCk7DQorICAgIAkgICAJIHRoaXNbdE5hbWVdLmRlc3Ryb3koKTsNCisgICAgCSAgIH0NCisgICAgCSAgIA0KKyAgICAJICAgbmV3IGx6LnBsYXlCYWNrV2hpdGVib2FyZFZpZGVvKHRoaXMud2hpdGVib2FyZFZpZGVvcyx7DQorICAgICAgICAgICAgICAgIAkgICAgICAgbmFtZTp0TmFtZSwNCisgICAgICAgICAgICAgICAgCSAgICAgICB4OnR4LA0KKyAgICAgICAgICAgICAgICAJICAgICAgIHk6dHksDQorICAgICAgICAgICAgICAgIAkgICAJICAgd2lkdGg6dHdpZHRoLA0KKyAgICAgICAgICAgICAgICAJICAgCSAgIGhlaWdodDp0aGVpZ2h0DQorICAgICAgICAgICAgICAgIAkgICB9KTsNCisgICAgCSAgIA0KKyAgICAJICAgdGhpcy53aGl0ZWJvYXJkVmlkZW9zW3ROYW1lXS5wbGF5VmlkZW9TdHJlYW0ocmVjb3JkaW5nTmFtZSwwKTsNCisgICAgCV1dPg0KKyAgICA8L21ldGhvZD4NCisgICAgDQorICAgIDxtZXRob2QgbmFtZT0ic3RvcFdoaXRlYm9hcmRWaWRlbyIgYXJncz0idE5hbWUiPg0KKyAgICAJPCFbQ0RBVEFbDQorICAgIAkgICBpZigkZGVidWcpIERlYnVnLndyaXRlKCJzdG9wV2hpdGVib2FyZFZpZGVvICIsdE5hbWUpOw0KKyAgICAgICAgICAgaWYgKHRoaXMud2hpdGVib2FyZFZpZGVvc1t0TmFtZV0pIHsNCisgICAgICAgICAgICAgdGhpcy53aGl0ZWJvYXJkVmlkZW9zW3ROYW1lXS5zdG9wVmlkZW8oKTsNCisgICAgICAgICAgICAgdGhpcy53aGl0ZWJvYXJkVmlkZW9zW3ROYW1lXS5kZXN0cm95KCk7DQorICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgCSBpZiAoJGRlYnVnKSBEZWJ1Zy53YXJuKCJzdG9wV2hpdGVib2FyZFZpZGVvIGNvdWxkIG5vdCBmaW5kIHZpZGVvIHRvIHN0b3AiKTsNCisgICAgICAgICAgIH0NCisgICAgCV1dPg0KKyAgICA8L21ldGhvZD4NCisgICAgDQorICAgIDwhLS0tDQorICAgICAgICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKyAgICAgICBNZXRob2RzIHRvIGhhbmRsZSBzY3JlZW4gc2hhcmluZyB2aWRlbyBwbGF5YmFjayBhbmQgY3Vyc29yDQorICAgICAtLT4NCisgICAgIA0KKyAgICA8IS0tLQ0KKyAgICAgICAgQWRkcyBhIG5ldyBzY3JlZW4gc2hhcmluZyBwbGF5YmFjayB2aWRlbw0KKyAgICAgLS0+DQorICAgIDxtZXRob2QgbmFtZT0ibmV3U2NyZWVuU2hhcmluZyIgYXJncz0idmFsdWUiPg0KKyAgICAJPCFbQ0RBVEFbDQorICAgIAkgICBpZiAodmFsdWUuc3RyZWFtUHVibGlzaE5hbWUgIT0gY2FudmFzLnB1YmxpY1NJRCkgew0KKyAgICAgICAgICAgICAgICBpZiAoY2FudmFzLnNjcmVlblNoYXJpbmdEaWFsb2dDb250YWluZXIgPT0gbnVsbCkgew0KKyAgICAgICAgICAgICAgICAgICAgY2FudmFzLnNjcmVlblNoYXJpbmdEaWFsb2dDb250YWluZXIgPSBuZXcgbHouc2NyZWVuU2hhcmluZ0RpYWxvZ0NvbnRhaW5lcihjYW52YXMpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIG5ldyBsei5zY3JlZW5TaGFyaW5nRGlhbG9nKGNhbnZhcy5zY3JlZW5TaGFyaW5nRGlhbG9nQ29udGFpbmVyLHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdE9iamVjdDp2YWx1ZSANCisgICAgICAgICAgICAgICAgICAgICAgICB9KTsgDQorICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud2FybigiU2VsZiBTY3JlZW4gU2hhcmluZyIpOw0KKyAgICAgICAgICAgIH0NCisgICAgCV1dPg0KKyAgICA8L21ldGhvZD4gDQorICAgIA0KKyAgICA8IS0tLQ0KKyAgICAgICAgQWRkIGEgbGlzdCBvZiBzY3JlZW4gc2hhcmluZyBwbGF5YmFjayB2aWRlb3MgDQorICAgICAgICAoaW5pdGlhbGx5IHdoZW4gZW50ZXJpbmcgdGhlIHJvb20gaW52b2tlZCkNCisgICAgIC0tPg0KKyAgICA8bWV0aG9kIG5hbWU9Im5ld1NjcmVlblNoYXJpbmdzIiBhcmdzPSJ2YWx1ZSI+DQorICAgICAJPCFbQ0RBVEFbDQorICAgICAJICAgIGZvciAodmFyIGVnIGluIHZhbHVlKSB7DQorICAgICAgICAgICAgICAgIHRoaXMubmV3U2NyZWVuU2hhcmluZyh2YWx1ZVtlZ10pOw0KKyAgICAgICAgICAgIH0NCisgICAgIAldXT4NCisgICAgPC9tZXRob2Q+DQorICAgDQorICAgIDwhLS0tDQorICAgICAgICBDbG9zZSBhIHNpbmdsZSBzY3JlZW4gc2hhcmluZyBwbGF5YmFjayB2aWRlbw0KKyAgICAgLS0+IA0KKwk8bWV0aG9kIG5hbWU9ImNsb3NlU2NyZWVuU2hhcmluZyIgYXJncz0idmFsdWUiPg0KKwkJPCFbQ0RBVEFbDQorCQkJaWYgKGNhbnZhcy5zY3JlZW5TaGFyaW5nRGlhbG9nQ29udGFpbmVyICE9IG51bGwpIHsNCisJCQkJdmFyIG9iaiA9IGNhbnZhcy5zY3JlZW5TaGFyaW5nRGlhbG9nQ29udGFpbmVyDQorCQkJCQkJLnNlYXJjaEZvclNlc3Npb24odmFsdWUuc3RyZWFtUHVibGlzaE5hbWUpOw0KKwkJCQlpZiAob2JqKSB7DQorCQkJCQlvYmouZG9DbG9zZSgpOw0KKwkJCQl9DQorCQkJfQ0KKwkJXV0+DQorCTwvbWV0aG9kPg0KKwkNCisJPCEtLS0NCisJICAgQ2xvc2VzIGFsbCBzY3JlZW4gc2hhcmluZyBwbGF5YmFjayB2aWRlb3MsIHdoaXRlYm9hcmQgdmlkZW9zLCB1c2VyIHZpZGVvcyANCisJICAgYW5kIGNsb3NlcyB0aGUgcnRtcCBjb25uZWN0aW9uDQorCSAtLT4NCisJPG1ldGhvZCBuYW1lPSJjbG9zZUFsbFNjcmVlblNoYXJpbmdzIj4NCisgICAgICAgIDwhW0NEQVRBWw0KKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJSRUNFSVZFIGNsb3NlQWxsU2NyZWVuU2hhcmluZ3MgIik7DQorICAgICAgICAgICAgaWYgKGNhbnZhcy5zY3JlZW5TaGFyaW5nRGlhbG9nQ29udGFpbmVyICE9IG51bGwpIHsNCisgICAgICAgICAgICAgICAgY2FudmFzLnNjcmVlblNoYXJpbmdEaWFsb2dDb250YWluZXIuY2xvc2VBbGwoKTsNCisgICAgICAgICAgICAgICAgY2FudmFzLnNjcmVlblNoYXJpbmdEaWFsb2dDb250YWluZXIuZGVzdHJveSgpOw0KKyAgICAgICAgICAgICAgICBjYW52YXMuc2NyZWVuU2hhcmluZ0RpYWxvZ0NvbnRhaW5lciA9IG51bGw7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHRoaXMud2hpdGVib2FyZFZpZGVvcy5jbGVhckFsbCgpOw0KKyAgICAgICAgICAgIHBhcmVudC5fdmlkZW9Db21wb25lbnQuY2xlYXJBbGwoKTsNCisgICAgICAgICAgICBjYW52YXMudGhpc2hpYi5kaXNjb25uZWN0KCk7DQorICAgICAgICBdXT4NCisgICAgPC9tZXRob2Q+DQorICAgIA0KKyAgICA8IS0tLQ0KKyAgICAgICAgVXBkYXRlIHRoZSBwb3NpdGlvbiBvZiB0aGUgY3Vyc29yIGZyb20gdGhlIHNoYXJpbmcgc2NyZWVuDQorICAgICAtLT4NCisJPG1ldGhvZCBuYW1lPSJ1cGRhdGVDdXJzb3JTY3JlZW5TaGFyaW5nIiBhcmdzPSJ2YWx1ZSI+DQorCQk8IVtDREFUQVsNCisJCQlpZiAoY2FudmFzLnNjcmVlblNoYXJpbmdEaWFsb2dDb250YWluZXIgIT0gbnVsbCkgew0KKwkJCQl2YXIgb2JqID0gY2FudmFzLnNjcmVlblNoYXJpbmdEaWFsb2dDb250YWluZXINCisJCQkJCQkuc2VhcmNoRm9yU2Vzc2lvbih2YWx1ZS5zdHJlYW1QdWJsaXNoTmFtZSk7DQorCQkJCW9iai51cGRhdGVDdXJzb3IodmFsdWUuY3Vyc29yX3gsIHZhbHVlLmN1cnNvcl95KTsNCisJCQl9DQorCQldXT4NCisJPC9tZXRob2Q+DQorCQ0KKwk8IS0tLQ0KKwkJTWFrZSByZWdFeHBUZXN0IA0KKwkgLS0+DQorCTxtZXRob2QgbmFtZT0icmVnRXhwVGVzdCIgYXJncz0iZmllbGRWYWx1ZSxyZWdFeFN0cixyZWdFeHBDaGVja0lkIj4NCisJCTwhW0NEQVRBWw0KKwkJCXZhciByZSA9IG5ldyBSZWdFeHAocmVnRXhTdHIpOw0KKwkJCQ0KKwkJCXZhciB0ZXN0UmVzdWx0ID0gcmUudGVzdCggZmllbGRWYWx1ZSApOw0KKwkJCQ0KKwkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKGZpZWxkVmFsdWUsIHRlc3RSZXN1bHQpOw0KKwkJCQ0KKwkJCWNhbnZhcy52aWRlb0NvbXBfbGMuc2VuZChjYW52YXMudmlkZW9Db21wX2xjX25hbWUsICdyZWdFeHBSZXN1bHQnLCByZWdFeHBDaGVja0lkLCB0ZXN0UmVzdWx0KTsNCisJCQkNCisJCV1dPg0KKwk8L21ldGhvZD4NCisJDQorICAgIDwhLS0NCisgICAgICAgIENvbnRhaW5lciB0byBob2xkIGFsbCB3aGl0ZWJvYXJkIHZpZGVvcw0KKyAgICAgLS0+CQ0KKwk8dmlldyBuYW1lPSJ3aGl0ZWJvYXJkVmlkZW9zIj4NCisJCTxtZXRob2QgbmFtZT0iY2xlYXJBbGwiPg0KKyAgICAJCTwhW0NEQVRBWw0KKyAgICAJCQlmb3IgKHZhciBlZyBpbiB0aGlzLnN1YnZpZXdzKSB7DQorICAgIAkJCQl0aGlzLnN1YnZpZXdzW2VnXS5zdG9wVmlkZW8oKTsNCisgICAgCQkJCXRoaXMuc3Vidmlld3NbZWddLmRlc3Ryb3koKTsNCisgICAgCQkJfQ0KKyAgICAJCV1dPg0KKwkJPC9tZXRob2Q+DQorCTwvdmlldz4NCisgICAgIA0KKw0KKzwvY2xhc3M+DQorDQorPC9saWJyYXJ5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3dmMTAvbHpyZWNvcmRlci9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3dmMTAvbHpyZWNvcmRlci9saWJyYXJ5Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Zjg0ZTRjCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC9senJlY29yZGVyL2xpYnJhcnkubHp4CkBAIC0wLDAgKzEsMjUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/Pg0KKzwhLS0NCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgIA0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAgICAJICANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAgdW5kZXIgdGhlIExpY2Vuc2UuDQorICANCistLT4NCis8bGlicmFyeT4NCisNCisgICAgPGluY2x1ZGUgaHJlZj0icGxheUJhY2tWaWRlb1N0cmVhbS5sengiIC8+DQorICAgIA0KKzwvbGlicmFyeT4NCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL2x6cmVjb3JkZXIvcGxheUJhY2tWaWRlb1N0cmVhbS5senggYi9XZWJDb250ZW50L3N3ZjEwL2x6cmVjb3JkZXIvcGxheUJhY2tWaWRlb1N0cmVhbS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjdmZGZkNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3dmMTAvbHpyZWNvcmRlci9wbGF5QmFja1ZpZGVvU3RyZWFtLmx6eApAQCAtMCwwICsxLDcxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPGxpYnJhcnk+DQorDQorPCEtLS0NCisgICAgVGhlIHBsYXlCYWNrVmlkZW9TdHJlYW0gaXMgdXNlZCBpbiB0aGUgcmVjb3JkaW5nIHBsYXllcmJhY2sgdG8gc2hvdyB0aGUgdmlkZW8NCisgLS0+DQorPGNsYXNzIG5hbWU9InBsYXlCYWNrVmlkZW9TdHJlYW0iIGV4dGVuZHM9ImJhc2VWaWRlb1N0cmVhbSIgYmdjb2xvcj0iMHgwMDAwMDAiIHZpc2liaWxpdHk9ImhpZGRlbiI+DQorICAgIA0KKyAgICA8YXR0cmlidXRlIG5hbWU9InRpbWVyRGVsZWdhdGUiIHZhbHVlPSJudWxsIi8+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0idGltZXJEZWxlZ2F0ZVN0YXJ0ZWQiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIvPg0KKyAgICANCisgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4NCisgICAgICAgIHRoaXMudGltZXJEZWxlZ2F0ZSA9IG5ldyBMekRlbGVnYXRlKCB0aGlzLCAiY2FsY1Byb2dyZXNzQmFyIiApOw0KKyAgICA8L2hhbmRsZXI+DQorICAgIA0KKyAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4NCisgICAgICAgIGNhbnZhcy52aWRlb0NvbXBfbGMuc2VuZChjYW52YXMudmlkZW9Db21wX2xjX25hbWUsICd0b2dnbGVQbGF5UmVjb3JkaW5nU3RyZWFtJyk7DQorICAgIDwvaGFuZGxlcj4NCisgICAgDQorICAgIDxtZXRob2QgbmFtZT0icGxheVJlY29yZGluZ1N0cmVhbSIgYXJncz0ic3RyZWFtTmFtZSxkZWxheSI+DQorICAgICAgICB0aGlzLnBsYXlTdHJlYW0oc3RyZWFtTmFtZSxkZWxheSk7DQorICAgICAgICB0aGlzLnRpbWVyRGVsZWdhdGVTdGFydGVkID0gdHJ1ZTsNCisgICAgICAgIGx6LlRpbWVyLmFkZFRpbWVyKCB0aGlzLnRpbWVyRGVsZWdhdGUgLCAxMDAwICk7DQorICAgIDwvbWV0aG9kPg0KKyAgICANCisgICAgPG1ldGhvZCBuYW1lPSJzdG9wUmVjb3JkaW5nIj4NCisgICAgICAgIHRoaXMuX3N0b3AoKTsNCisgICAgICAgIGx6LlRpbWVyLnJlbW92ZVRpbWVyKHRoaXMudGltZXJEZWxlZ2F0ZSk7DQorICAgICAgICB0aGlzLnRpbWVyRGVsZWdhdGVTdGFydGVkID0gZmFsc2U7DQorICAgIDwvbWV0aG9kPg0KKyAgICANCisgICAgPGhhbmRsZXIgbmFtZT0ib25OZXRTdGF0dXMiIGFyZ3M9ImluZm8iPg0KKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9uTmV0U3RhdHVzICIsaW5mbyk7DQorICAgICAgICBpZiAoaW5mby5jb2RlID09ICAiTmV0U3RyZWFtLlBsYXkuU3RvcCIgKSB7DQorICAgICAgICAgICAgY2FudmFzLnZpZGVvQ29tcF9sYy5zZW5kKGNhbnZhcy52aWRlb0NvbXBfbGNfbmFtZSwgJ3N0b3BSZWNvcmRpbmdTdHJlYW0nKTsNCisgICAgICAgIH0NCisgICAgPC9oYW5kbGVyPg0KKyAgICA8aGFuZGxlciBuYW1lPSJvbk1ldGFEYXRhRXZlbnQiIGFyZ3M9ImluZm8iPg0KKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9uTWV0YURhdGEgIixpbmZvKTsNCisgICAgPC9oYW5kbGVyPg0KKyAgICANCisgICAgPG1ldGhvZCBuYW1lPSJjYWxjUHJvZ3Jlc3NCYXIiIGFyZ3M9InRPYmpSZWYiPg0KKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImNhbGNQcm9ncmVzc0JhciB1cGRhdGVSZWNvcmRpbmdTdHJlYW1UaW1lIix0aGlzLl9ucy50aW1lKQ0KKyAgICAgICAgY2FudmFzLnZpZGVvQ29tcF9sYy5zZW5kKGNhbnZhcy52aWRlb0NvbXBfbGNfbmFtZSwgJ3VwZGF0ZVJlY29yZGluZ1N0cmVhbVRpbWUnLHRoaXMuX25zLnRpbWUpOw0KKyAgICAgICAgaWYgKHRoaXMudGltZXJEZWxlZ2F0ZVN0YXJ0ZWQpIHsNCisgICAgICAgICAgICBsei5UaW1lci5hZGRUaW1lciggdGhpcy50aW1lckRlbGVnYXRlICwgMTAwMCApOw0KKyAgICAgICAgfQ0KKyAgICA8L21ldGhvZD4NCisgICAgDQorPC9jbGFzcz4JDQorDQorPC9saWJyYXJ5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3dmMTAvbWFpbi5hczMubHp4IGIvV2ViQ29udGVudC9zd2YxMC9tYWluLmFzMy5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTlkNWY4MwotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3dmMTAvbWFpbi5hczMubHp4CkBAIC0wLDAgKzEsMTM2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPGNhbnZhcyB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiB0aXRsZT0iT3Blbk1lZXRpbmdzIj4NCisJDQorCTxzd2l0Y2g+DQorICAgICAgICA8d2hlbiBwcm9wZXJ0eT0iJGFzMyI+DQorICAgICAgICAgICAgPHBhc3N0aHJvdWdoPg0KKyAgICAgICAgICAgICAgICBpbXBvcnQgZmxhc2gubmV0Lio7DQorICAgICAgICAgICAgICAgIGltcG9ydCBmbGFzaC5kaXNwbGF5Lio7DQorICAgICAgICAgICAgICAgIGltcG9ydCBmbGFzaC5ldmVudHMuKjsNCisgICAgICAgICAgICA8L3Bhc3N0aHJvdWdoPg0KKyAgICAgICAgPC93aGVuPg0KKyAgICA8L3N3aXRjaD4NCisJPHN3aXRjaD4NCisJCTx3aGVuIHByb3BlcnR5PSIkZGVidWciPg0KKwkJCTxtZXRob2QgbmFtZT0iZG9EZWJ1Z0luaXQiPg0KKwkJCQljYW52YXMuc2V0QXR0cmlidXRlKCdkZWJ1ZycsIHRydWUpOw0KKwkJCTwvbWV0aG9kPg0KKwkJCTxkZWJ1ZyBmb250c2l6ZT0iMTEiIG9uaW5pdD0iRGVidWcuc2hvd0ludGVybmFsUHJvcGVydGllcyA9IHRydWUiIHdpZHRoPSI0MCUiIHk9IjUwJSIgeD0iNjAlIiBoZWlnaHQ9IjUwJSIgLz4NCisJCTwvd2hlbj4NCisJCTxvdGhlcndpc2U+DQorCQkJPG1ldGhvZCBuYW1lPSJkb0RlYnVnSW5pdCI+DQorCQkJPC9tZXRob2Q+DQorCQk8L290aGVyd2lzZT4NCisgICAgPC9zd2l0Y2g+DQorICAgIA0KKyAgICA8aW5jbHVkZSBocmVmPSJ0ZXN0VmlkZW9PYmplY3QubHp4IiAvPg0KKw0KKyAgICA8c2lsdmVyc3R5bGUgbmFtZT0iY29tcG9uZW50U3R5bGUiIGJhc2Vjb2xvcj0iMHhGRkZGRkYiIHRleHRjb2xvcj0iMHgwMDAwMDAiIC8+DQorDQorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibGNfU0lEIi8+DQorDQorICAgIDxhdHRyaWJ1dGUgbmFtZT0idmlkX2xjX25hbWUiIC8+DQorDQorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibGMiLz4NCisNCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJydG1wX2xjX25hbWUiIC8+DQorDQorICAgIDxhdHRyaWJ1dGUgbmFtZT0icnRtcF9sYyIvPg0KKw0KKyAgICA8YXR0cmlidXRlIG5hbWU9InZpZGVvQ29tcF9sY19uYW1lIiAvPg0KKw0KKyAgICA8YXR0cmlidXRlIG5hbWU9InZpZGVvQ29tcF9sY19jYWxsYmFja19uYW1lIiAvPg0KKw0KKyAgICA8YXR0cmlidXRlIG5hbWU9InZpZGVvQ29tcF9sYyIgLz4NCisNCisgICAgPGluY2x1ZGUgaHJlZj0iYmFzZS8iIC8+DQorDQorICAgIDxpbmNsdWRlIGhyZWY9Im1vZHVsZXMvIiAvPg0KKw0KKyAgICA8aW5jbHVkZSBocmVmPSJ2aWRlby8iIC8+DQorICAgIA0KKyAgICA8aW5jbHVkZSBocmVmPSJzY3JlZW5zaGFyaW5nLyIgLz4NCisgICAgDQorICAgIDxpbmNsdWRlIGhyZWY9ImF1ZGlvVmlkZW9UZXN0LyIgLz4NCisgICAgDQorICAgIDxpbmNsdWRlIGhyZWY9Imx6cmVjb3JkZXIvIiAvPg0KKyAgICANCisgICAgPGluY2x1ZGUgaHJlZj0id2hpdGVib2FyZC8iIC8+DQorDQorICAgIDxpbmNsdWRlIGhyZWY9ImNvbW1vblZpZGVvVmlld0NvbnRlbnRTV0YxMC5sengiIC8+DQorDQorICAgIDxpbmNsdWRlIGhyZWY9ImhpYkFkYXB0ZXIubHp4IiAvPg0KKw0KKyAgICA8aW5jbHVkZSBocmVmPSJtaW5pSWNvbnMubHp4IiAvPg0KKw0KKyAgICA8aW5jbHVkZSBocmVmPSJkcmFnSGVscGVyLmx6eCIgLz4NCisNCisgICAgPHZpZXcgbmFtZT0ibWFpbkNvbXBvbmVudCIgd2lkdGg9IiR7Y2FudmFzLndpZHRofSIgaGVpZ2h0PSIke2NhbnZhcy5oZWlnaHR9Ij4NCisgICAgICAgIDx0ZXh0IGlkPSJtYWluQmFzZVRleHQiPiA8L3RleHQ+DQorICAgIDwvdmlldz4NCisNCisgICAgPG1ldGhvZCBuYW1lPSJnZXRMQ1NJRCI+DQorICAgICAgICAvL1RPRE86IGZpeG1lDQorICAgICAgICByZXR1cm4gIiIgKyBNYXRoLmZsb29yKDk5OTk5OSpNYXRoLnJhbmRvbSgpKTsNCisgICAgPC9tZXRob2Q+DQorDQorICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+PCFbQ0RBVEFbDQorCQlkb0RlYnVnSW5pdCgpOw0KKyAgICANCisgICAgICAgIHZhciB0SW5pdEFyZ3NBcnJ5ID0gbmV3IEFycmF5KCdzZWN1cmVIYXNoJywnaW52aXRhdGlvbkhhc2gnLCdzaWQnLCdyb29taWQnLCdkaXJlY3RSb29tSWQnLCdsYW5ndWFnZScsJ2hhc2gnLCdjdXNlcicsJ3RBY2NlcHQnLCdtb29kbGVSb29tJywnYmVjb21lbW9kZXJhdG9yJywnd3d3cm9vdCcsJ3VzZXJfaWQnLCdwaWN0dXJlJywnc2NvcGVSb29tSWQnKTsNCisgICAgDQorICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgnbGNfU0lEJywgdGhpcy5nZXRMQ1NJRCgpKTsNCisgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCd2aWRfbGNfbmFtZScsIGxjX1NJRCArICdfX3ZpZGVvTEMnKTsNCisgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCdydG1wX2xjX25hbWUnLCBsY19TSUQgKyAnX19ydG1wTEMnKTsNCisgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCd2aWRlb0NvbXBfbGNfbmFtZScsIGxjX1NJRCArICdfX3N0cmVhbUxDJyk7DQorICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgndmlkZW9Db21wX2xjX2NhbGxiYWNrX25hbWUnLCBsY19TSUQgKyAnX19zdHJlYW1MQ19jYmFjaycpOw0KKw0KKyAgICAgICAgdmFyIHZpZGVvQ29tcF9sY19jYmFjazpMb2NhbENvbm5lY3Rpb24gPSBuZXcgTG9jYWxDb25uZWN0aW9uKCk7DQorICAgICAgICB2aWRlb0NvbXBfbGNfY2JhY2suY29ubmVjdCh0aGlzLnZpZGVvQ29tcF9sY19jYWxsYmFja19uYW1lKTsNCisgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCd2aWRlb0NvbXBfbGMnLHZpZGVvQ29tcF9sY19jYmFjayk7DQorICAgICAgICANCisgICAgICAgIHZhciB0cXVlcnlTdHJpbmcgPSAiIjsNCisgICAgICAgIGZvciAodmFyIGk9MDtpPHRJbml0QXJnc0FycnkubGVuZ3RoO2krKykgew0KKyAgICAgICAgICAgIC8vIGlmICgkZGVidWcpIERlYnVnLndyaXRlKHRJbml0QXJnc0FycnlbaV0sbHouQnJvd3Nlci5nZXRJbml0QXJnKHRJbml0QXJnc0FycnlbaV0pKTsNCisgICAgICAgICAgICB2YXIgdFZhbHVlID0gbHouQnJvd3Nlci5nZXRJbml0QXJnKHRJbml0QXJnc0FycnlbaV0pOw0KKyAgICAgICAgICAgIGlmICh0VmFsdWUgIT0gdW5kZWZpbmVkKSB7DQorICAgICAgICAgICAgICAgIHRxdWVyeVN0cmluZyArPSAiJiIrdEluaXRBcmdzQXJyeVtpXSsiPSIrdFZhbHVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIH0NCisgICAgICAgIA0KKyAgICAgICAgdmFyIHRTV0ZVUkwgPSAibWFpbiIgKyAoJGRlYnVnID8gImRlYnVnIiA6ICIiKSArICIuc3dmOC5zd2Y/bHpwcm94aWVkPXNvbG8mbGNfU0lEPSIrbGNfU0lEK3RxdWVyeVN0cmluZzsNCisgICAgICAgIA0KKyAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInRTV0ZVUkwgOjogIix0U1dGVVJMKTsNCisgICAgICAgIA0KKyAgICAgICAgdmFyIHJlcXVlc3Q6VVJMUmVxdWVzdCA9IG5ldyBVUkxSZXF1ZXN0KHRTV0ZVUkwpOw0KKyAgICAgICAgdmFyIGxvYWRlcjpMb2FkZXIgPSBuZXcgTG9hZGVyKCk7DQorICAgICAgICBsb2FkZXIubG9hZChyZXF1ZXN0KTsNCisgICAgICAgIHRoaXMubWFpbkNvbXBvbmVudC5zcHJpdGUuYWRkQ2hpbGQobG9hZGVyKTsNCisNCisgICAgICAgIG5ldyBsei5jb21tb25WaWRlb1ZpZXdDb250ZW50U1dGMTAodGhpcywge25hbWU6J192aWRlb0NvbXBvbmVudCd9KTsNCisgICAgICAgIG5ldyBsei5oaWJBZGFwdGVyKHRoaXMpOw0KKw0KKyAgICBdXT48L2hhbmRsZXI+DQorDQorICAgIDx2aWV3IG5hbWU9ImlubmVyIj48L3ZpZXc+DQorICAgIA0KKzwvY2FudmFzPg0KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3dmMTAvbWluaUljb25zLmx6eCBiL1dlYkNvbnRlbnQvc3dmMTAvbWluaUljb25zLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMDFkMzgxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC9taW5pSWNvbnMubHp4CkBAIC0wLDAgKzEsNjcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/Pg0KKzwhLS0NCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgIA0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAgICAJICANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAgdW5kZXIgdGhlIExpY2Vuc2UuDQorICANCistLT4NCis8bGlicmFyeT4NCisNCis8Y2xhc3MgbmFtZT0ibWluaUljb25zIiBleHRlbmRzPSJ2aWV3IiBzdHJldGNoZXM9ImJvdGgiPg0KKwk8YXR0cmlidXRlIG5hbWU9InNob3doYW5kY3Vyc29yIiB2YWx1ZT0idHJ1ZSIgdHlwZT0iYm9vbGVhbiIgLz4NCisgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZW92ZXIiPg0KKyAgICAJaWYgKHRoaXMuc2hvd2hhbmRjdXJzb3IpIHsNCisgICAgICAgIAl0aGlzLnNldEF0dHJpYnV0ZSgieCIsdGhpcy54LTEpOw0KKyAgICAgICAgCXRoaXMuc2V0QXR0cmlidXRlKCJ5Iix0aGlzLnktMSk7DQorICAgICAgICAJdGhpcy5zZXRBdHRyaWJ1dGUoImhlaWdodCIsdGhpcy5oZWlnaHQrMik7DQorICAgICAgICAJdGhpcy5zZXRBdHRyaWJ1dGUoIndpZHRoIix0aGlzLndpZHRoKzIpOw0KKyAgICAJfQ0KKyAgICAgICAgcGFyZW50LnBhcmVudC5vbm1vdXNlb3Zlci5zZW5kRXZlbnQoKTsNCisgICAgPC9oYW5kbGVyPg0KKyAgICA8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3V0Ij4NCisgICAgCWlmICh0aGlzLnNob3doYW5kY3Vyc29yKSB7DQorICAgICAgICAJdGhpcy5zZXRBdHRyaWJ1dGUoIngiLHRoaXMueCsxKTsNCisgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgieSIsdGhpcy55KzEpOw0KKyAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJoZWlnaHQiLHRoaXMuaGVpZ2h0LTIpOw0KKyAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJ3aWR0aCIsdGhpcy53aWR0aC0yKTsNCisgICAgCX0NCisgICAgICAgIHBhcmVudC5wYXJlbnQub25tb3VzZW91dC5zZW5kRXZlbnQoKTsNCisgICAgPC9oYW5kbGVyPg0KKzwvY2xhc3M+DQorDQorPGNsYXNzIG5hbWU9Im1pbmlJY29uc0ltYWdlIiBleHRlbmRzPSJpbWFnZSIgc3RyZXRjaGVzPSJib3RoIj4NCisJPGF0dHJpYnV0ZSBuYW1lPSJzaG93aGFuZGN1cnNvciIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+DQorICAgIDxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdmVyIj4NCisgICAgCWlmICh0aGlzLnNob3doYW5kY3Vyc29yKSB7DQorICAgICAgICAJdGhpcy5zZXRBdHRyaWJ1dGUoIngiLHRoaXMueC0xKTsNCisgICAgICAgIAl0aGlzLnNldEF0dHJpYnV0ZSgieSIsdGhpcy55LTEpOw0KKyAgICAgICAgCXRoaXMuc2V0QXR0cmlidXRlKCJoZWlnaHQiLHRoaXMuaGVpZ2h0KzIpOw0KKyAgICAgICAgCXRoaXMuc2V0QXR0cmlidXRlKCJ3aWR0aCIsdGhpcy53aWR0aCsyKTsNCisgICAgCX0NCisgICAgICAgIHBhcmVudC5wYXJlbnQub25tb3VzZW92ZXIuc2VuZEV2ZW50KCk7DQorICAgIDwvaGFuZGxlcj4NCisgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZW91dCI+DQorICAgIAlpZiAodGhpcy5zaG93aGFuZGN1cnNvcikgew0KKyAgICAgICAgCXRoaXMuc2V0QXR0cmlidXRlKCJ4Iix0aGlzLngrMSk7DQorICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoInkiLHRoaXMueSsxKTsNCisgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgiaGVpZ2h0Iix0aGlzLmhlaWdodC0yKTsNCisgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgid2lkdGgiLHRoaXMud2lkdGgtMik7DQorICAgIAl9DQorICAgICAgICBwYXJlbnQucGFyZW50Lm9ubW91c2VvdXQuc2VuZEV2ZW50KCk7DQorICAgIDwvaGFuZGxlcj4NCis8L2NsYXNzPg0KKw0KKzwvbGlicmFyeT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL21vZHVsZXMvY29uZmVyZW5jZS9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3dmMTAvbW9kdWxlcy9jb25mZXJlbmNlL2xpYnJhcnkubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkMWQxZDEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL21vZHVsZXMvY29uZmVyZW5jZS9saWJyYXJ5Lmx6eApAQCAtMCwwICsxLDI1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPGxpYnJhcnk+DQorDQorICAgIDxpbmNsdWRlIGhyZWY9InBvcHVwcy8iIC8+DQorDQorPC9saWJyYXJ5Pg0KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3dmMTAvbW9kdWxlcy9jb25mZXJlbmNlL3BvcHVwcy9jb25maXJtYXRpb25TaW5nbGVTV0YxMC5senggYi9XZWJDb250ZW50L3N3ZjEwL21vZHVsZXMvY29uZmVyZW5jZS9wb3B1cHMvY29uZmlybWF0aW9uU2luZ2xlU1dGMTAubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1YjNjODYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL21vZHVsZXMvY29uZmVyZW5jZS9wb3B1cHMvY29uZmlybWF0aW9uU2luZ2xlU1dGMTAubHp4CkBAIC0wLDAgKzEsMTUwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorDQorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKw0KKy0tPg0KKzxsaWJyYXJ5Pg0KKw0KKzxjbGFzcyBuYW1lPSJjb25maXJtYXRpb25TaW5nbGVTV0YxMCIgZXh0ZW5kcz0ibGFiZWxFeHBsb3JlckJveCIgbGFiZWxpZD0iODMyIg0KKyAgICBkb2NraW5nPSJ0cnVlIiByZXNpemVhYmxlPSJmYWxzZSIgY2xvc2FibGU9InRydWUiIGhlaWdodD0iMTQwIiB3aWR0aD0iMzAwIj4NCisNCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJyZWZPYmoiIHZhbHVlPSJudWxsIiAvPg0KKw0KKyAgICA8YXR0cmlidXRlIG5hbWU9InJlZlJldHVybk1ldGhvZCIgdmFsdWU9Im51bGwiIC8+DQorDQorICAgIDxhdHRyaWJ1dGUgbmFtZT0ic2hvd0NoZWNrQm94IiB2YWx1ZT0idHJ1ZSIgdHlwZT0iYm9vbGVhbiIgLz4NCisNCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJsYWJlbGlkZXJyb3IiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+DQorDQorICAgIDxhdHRyaWJ1dGUgbmFtZT0icmVzdWx0IiB0eXBlPSJib29sIi8+DQorICAgIA0KKyAgICA8YXR0cmlidXRlIG5hbWU9Imljb25SZXNvdXJjZSIgdmFsdWU9Indhcm5pbmdfcG9wdXBfaWNvbl9yc2MiIHR5cGU9InN0cmluZyIgLz4NCisNCisJPGltYWdlIHg9IjQiIHNyYz0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUltYWdlKHBhcmVudC5pY29uUmVzb3VyY2UpIH0iIHk9IjI0IiAvPg0KKw0KKyAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IiRvbmNleyBwYXJlbnQubGFiZWxpZGVycm9yIH0iIHk9IjI0Ig0KKyAgICAJCSAgIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoIC0gNDAgfSINCisgICAgCW11bHRpbGluZT0idHJ1ZSIgcmVzaXplPSJmYWxzZSIgeD0iMzAiIC8+DQorDQorICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+DQorICAgICAgICA8IVtDREFUQVsNCisNCisgICAgICAgICAgICAvL1NldCBQb3NpdGlvbiBvZiBDb25maXJtYXRpb24gQm94IGFzIENsb3NlIGFzIHBvc3NpYmxlIHRvIHRoZSBNb3VzZQ0KKyAgICAgICAgICAgIHZhciB4ID0gcGFyZW50LmdldE1vdXNlKCJ4Iik7DQorICAgICAgICAgICAgdmFyIHkgPSBwYXJlbnQuZ2V0TW91c2UoInkiKTsNCisgICAgICAgICAgICB2YXIgbmV3eCA9IHggLSAodGhpcy53aWR0aC8yKTsNCisgICAgICAgICAgICB2YXIgbmV3eSA9IHkgLSAodGhpcy5oZWlnaHQvMik7DQorDQorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIjEiLHgseSxuZXd4LG5ld3kpOw0KKw0KKyAgICAgICAgICAgIGlmIChuZXd4IDwgMCkgew0KKyAgICAgICAgICAgICAgICBuZXd4ID0gMjA7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmIChuZXd5IDwgMCkgew0KKyAgICAgICAgICAgICAgICBuZXd5ID0gMjA7DQorICAgICAgICAgICAgfQ0KKw0KKyAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIjEuMSIsKHRoaXMud2lkdGggKyBuZXd4ICsgMjApLHBhcmVudC53aWR0aCx0aGlzLndpZHRoKTsNCisNCisgICAgICAgICAgICB2YXIgcmVsYXRpdmVXaWR0aCA9IHBhcmVudC53aWR0aDsNCisgICAgICAgICAgICBpZiAocmVsYXRpdmVXaWR0aCA+IGNhbnZhcy53aWR0aCkgew0KKyAgICAgICAgICAgIAlyZWxhdGl2ZVdpZHRoID0gY2FudmFzLndpZHRoOw0KKyAgICAgICAgICAgIH0NCisNCisgICAgICAgICAgICBpZiAodGhpcy53aWR0aCArIG5ld3ggKyAyMCA+IHJlbGF0aXZlV2lkdGgpIHsNCisgICAgICAgICAgICAJbmV3eCA9IHJlbGF0aXZlV2lkdGgtdGhpcy53aWR0aC0yMDsNCisgICAgICAgICAgICB9DQorDQorICAgICAgICAgICAgaWYgKHRoaXMuaGVpZ2h0ICsgbmV3eSArIDIwID4gcGFyZW50LmhlaWdodCkgew0KKyAgICAgICAgICAgIAluZXd5ID0gcGFyZW50LmhlaWdodC10aGlzLmhlaWdodC0yMDsNCisgICAgICAgICAgICB9DQorDQorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIjIiLG5ld3gsbmV3eSk7DQorDQorICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoIngiLG5ld3gpOw0KKyAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJ5IixuZXd5KTsNCisNCisgICAgICAgIF1dPg0KKyAgICA8L2hhbmRsZXI+DQorDQorICAgIDxsYWJlbENoZWNrYm94IG5hbWU9ImhvbGRkYXRhaW5TTyIgdmlzaWJpbGl0eT0iJG9uY2V7IChwYXJlbnQuc2hvd0NoZWNrQm94KSA/ICd2aXNpYmxlJyA6ICdoaWRkZW4nIH0iDQorICAgICAgICAgICAgICAgICAgIGxhYmVsaWQ9IjY0IiB4PSIxMCIgeT0iJG9uY2V7IHBhcmVudC5oZWlnaHQgLSA0NiB9IiAvPg0KKw0KKyAgICA8c2ltcGxlTGFiZWxCdXR0b24gbGFiZWxpZD0iNjEiIHdpZHRoPSIxMDAiIHg9IiRvbmNleyBwYXJlbnQud2lkdGggLSAxMDUgfSIgeT0iJG9uY2V7IHBhcmVudC5oZWlnaHQgLSAyNiB9Ij4NCisgICAgCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPg0KKyAgICAJCXZhciB0ID0gcGFyZW50LmhvbGRkYXRhaW5TTy5nZXRWYWx1ZSgpOw0KKyAgICAJCXRoaXMucGFyZW50LmNsb3NlKCk7DQorICAgICAgICAgICAgdGhpcy5wYXJlbnQucmVzdWx0ID0gZmFsc2U7DQorICAgICAgICAgICAgaWYgKG51bGwgIT0gdGhpcy5wYXJlbnQucmVmT2JqKSB7DQorICAgICAgICAgICAgICAgIGlmIChwYXJlbnQucmVmUmV0dXJuTWV0aG9kID09IG51bGwpIHsNCisgICAgICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnJlZk9iai5zZW5kQ29uZmlybWF0aW9uKGZhbHNlLHQpOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQucmVmT2JqW3BhcmVudC5yZWZSZXR1cm5NZXRob2RdKGZhbHNlLHQpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJlbmQiKTsNCisgICAgCTwvaGFuZGxlcj4NCisgICAgPC9zaW1wbGVMYWJlbEJ1dHRvbj4NCisgICAgPHNpbXBsZUxhYmVsQnV0dG9uIGxhYmVsaWQ9IjYwIiB3aWR0aD0iMTAwIiB4PSIkb25jZXsgcGFyZW50LndpZHRoIC0gMjEwIH0iIHk9IiRvbmNleyBwYXJlbnQuaGVpZ2h0IC0gMjYgfSI+DQorICAgIAk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4NCisgICAgCQl2YXIgdCA9IHBhcmVudC5ob2xkZGF0YWluU08uZ2V0VmFsdWUoKTsNCisgICAgCQl0aGlzLnBhcmVudC5jbG9zZSgpOw0KKyAgICAgICAgICAgIHRoaXMucGFyZW50LnJlc3VsdCA9IHRydWU7DQorICAgICAgICAgICAgaWYgKG51bGwgIT0gdGhpcy5wYXJlbnQucmVmT2JqKSB7DQorICAgICAgICAgICAgICAgIGlmIChwYXJlbnQucmVmUmV0dXJuTWV0aG9kID09IG51bGwpIHsNCisgICAgICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnJlZk9iai5zZW5kQ29uZmlybWF0aW9uKHRydWUsdCk7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5yZWZPYmpbcGFyZW50LnJlZlJldHVybk1ldGhvZF0odHJ1ZSx0KTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0NCisgICAgCTwvaGFuZGxlcj4NCisgICAgPC9zaW1wbGVMYWJlbEJ1dHRvbj4NCis8L2NsYXNzPg0KKw0KKzxjbGFzcyBuYW1lPSJyZW1lbWJlck1lc3NhZ2VTV0YxMCIgZXh0ZW5kcz0ibGFiZWxFeHBsb3JlckJveCIgbGFiZWxpZD0iODMyIg0KKwkgICB4PSIkb25jZXsgY2FudmFzLndpZHRoLzIgLSB0aGlzLndpZHRoLzIgfSIgeT0iMTAwIg0KKwkgICBkb2NraW5nPSJ0cnVlIiByZXNpemVhYmxlPSJmYWxzZSIgY2xvc2FibGU9InRydWUiIGhlaWdodD0iMTQwIiB3aWR0aD0iMzAwIj4NCisNCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJyZWZPYmoiIHZhbHVlPSJudWxsIiAvPg0KKw0KKyAgICA8YXR0cmlidXRlIG5hbWU9InNob3dDaGVja0JveCIgdmFsdWU9InRydWUiIHR5cGU9ImJvb2xlYW4iIC8+DQorDQorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibGFiZWxpZGVycm9yIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPg0KKw0KKyAgICA8dmlldyB4PSI0IiByZXNvdXJjZT0id2FybmluZ19pY29uX3JzYyIgeT0iMjQiIC8+DQorDQorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iJG9uY2V7IHBhcmVudC5sYWJlbGlkZXJyb3IgfSIgeT0iMjQiDQorICAgICAgICAgICAgICAgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGggLSA0MCB9Ig0KKyAgICAgICAgbXVsdGlsaW5lPSJ0cnVlIiByZXNpemU9ImZhbHNlIiB4PSIzMCIgLz4NCisNCisgICAgPGxhYmVsQ2hlY2tib3ggbmFtZT0iaG9sZGRhdGFpblNPIiB2aXNpYmlsaXR5PSIkb25jZXsgKHBhcmVudC5zaG93Q2hlY2tCb3gpID8gJ3Zpc2libGUnIDogJ2hpZGRlbicgfSINCisgICAgICAgICAgICAgICAgICAgbGFiZWxpZD0iNjQiIHg9IjEwIiB5PSIkb25jZXsgcGFyZW50LmhlaWdodCAtIDQ2IH0iIC8+DQorDQorICAgIDxzaW1wbGVMYWJlbEJ1dHRvbiBsYWJlbGlkPSI2NDIiIHdpZHRoPSIxMDAiIHg9IiRvbmNleyBwYXJlbnQud2lkdGggLSAxMDUgfSIgeT0iJG9uY2V7IHBhcmVudC5oZWlnaHQgLSAyNiB9Ij4NCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPg0KKyAgICAgICAgCXZhciB0ID0gcGFyZW50LmhvbGRkYXRhaW5TTy5nZXRWYWx1ZSgpOw0KKyAgICAgICAgICAgIHRoaXMucGFyZW50LmNsb3NlKCk7DQorICAgICAgICAgICAgaWYgKG51bGwgIT0gdGhpcy5wYXJlbnQucmVmT2JqKSB7DQorICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LnJlZk9iai5zZW5kQ29uZmlybWF0aW9uKHQpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIDwvaGFuZGxlcj4NCisgICAgPC9zaW1wbGVMYWJlbEJ1dHRvbj4NCisNCis8L2NsYXNzPg0KKw0KKzwvbGlicmFyeT4NCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL21vZHVsZXMvY29uZmVyZW5jZS9wb3B1cHMvZXJyb3JQb3B1cFNXRjEwLmx6eCBiL1dlYkNvbnRlbnQvc3dmMTAvbW9kdWxlcy9jb25mZXJlbmNlL3BvcHVwcy9lcnJvclBvcHVwU1dGMTAubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4ZmIyZjkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL21vZHVsZXMvY29uZmVyZW5jZS9wb3B1cHMvZXJyb3JQb3B1cFNXRjEwLmx6eApAQCAtMCwwICsxLDk5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPGxpYnJhcnk+DQorDQorPGNsYXNzIG5hbWU9ImVycm9yUG9wdXBTV0YxMCIgZXh0ZW5kcz0ibGFiZWxFeHBsb3JlckJveCIgbGFiZWxpZD0iMjA0Ig0KKwlkb2NraW5nPSJ0cnVlIiByZXNpemVhYmxlPSJmYWxzZSIgY2xvc2FibGU9InRydWUiIHk9IjEwMCINCisgICAgeD0iJG9uY2V7IHBhcmVudC53aWR0aC8yIC0gdGhpcy53aWR0aC8yIH0iIGhlaWdodD0iMTYwIiB3aWR0aD0iMzI0Ij4NCisNCisJPGF0dHJpYnV0ZSBuYW1lPSJlcnJvciIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPg0KKwkNCisJPGF0dHJpYnV0ZSBuYW1lPSJtYWtlTW9kYWwiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4NCisJDQorCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+DQorCSAgIGlmICh0aGlzLm1ha2VNb2RhbCkgew0KKwkgICAgICAgbHouTW9kZU1hbmFnZXIubWFrZU1vZGFsKHRoaXMpOw0KKwkgICB9DQorCTwvaGFuZGxlcj4NCisJDQorCTxoYW5kbGVyIG5hbWU9Im9uY2xvc2UiPg0KKyAgICAgICBpZiAodGhpcy5tYWtlTW9kYWwpIHsNCisgICAgICAgICAgIGx6Lk1vZGVNYW5hZ2VyLnJlbGVhc2VBbGwoKTsNCisgICAgICAgfQ0KKyAgICA8L2hhbmRsZXI+DQorDQorCTx2aWV3IHg9IjQiIHJlc291cmNlPSJ3YXJuaW5nX2ljb25fcnNjIiB5PSIyNCIgLz4NCisNCisJPHZpZXcgeT0iMjQiIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoIC0gNDAgfSIgaGVpZ2h0PSIxMzAiIHg9IjMwIiBjbGlwPSJ0cnVlIj4NCisJCTx0ZXh0IGZvbnRzaXplPSIxMCIgZm9udHN0eWxlPSJib2xkIiB0ZXh0PSIkeyBwYXJlbnQucGFyZW50LmVycm9yIH0iDQorCQkJbXVsdGlsaW5lPSJ0cnVlIiB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCAtIDE2IH0iIHNlbGVjdGFibGU9InRydWUiIC8+DQorCTwvdmlldz4NCisgICAgDQorICAgIDxzaW1wbGVMYWJlbEJ1dHRvbiBsYWJlbGlkPSI2NDIiIHdpZHRoPSIxMDAiIHg9IiRvbmNleyBwYXJlbnQud2lkdGgtMTA1IH0iIA0KKyAgICAgICAgICAgeT0iJG9uY2V7IHBhcmVudC5oZWlnaHQtMjQgfSIgDQorICAgICAgICAgICBvbmNsaWNrPSJ0aGlzLnBhcmVudC5jbG9zZSgpOyIgLz4NCisNCis8L2NsYXNzPg0KKw0KKzxjbGFzcyBuYW1lPSJsYWJlbGVycm9yUG9wdXBTV0YxMCIgZXh0ZW5kcz0iZXJyb3JQb3B1cFNXRjEwIj4NCisNCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJlcnJvcmxhYmVsaWQiIHR5cGU9Im51bWJlciIgc2V0dGVyPSJzZXRFcnJvckxhYmVsSWQoZXJyb3JsYWJlbGlkKSIgLz4NCisgICAgPG1ldGhvZCBuYW1lPSJzZXRFcnJvckxhYmVsSWQiIGFyZ3M9ImVycm9ybGFiZWxpZCIgPg0KKyAgICAgICAgdGhpcy5lcnJvcmxhYmVsaWQgPSBlcnJvcmxhYmVsaWQ7DQorICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgiZXJyb3IiLGNhbnZhcy5nZXRMYWJlbE5hbWUodGhpcy5lcnJvcmxhYmVsaWQpKTsNCisgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJsYWJlbGVycm9yUG9wdXBTV0YxMDogIixjYW52YXMuZ2V0TGFiZWxOYW1lKHRoaXMuZXJyb3JsYWJlbGlkKSk7DQorICAgIDwvbWV0aG9kPg0KKyAgICANCisNCis8L2NsYXNzPg0KKw0KKzxjbGFzcyBuYW1lPSJzaW5nbGV0b25FcnJvclBvcHVwU1dGMTAiIGV4dGVuZHM9ImVycm9yUG9wdXBTV0YxMCI+DQorCTxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+DQorCQlsei5zaW5nbGV0b25FcnJvclBvcHVwSG9sZGVyU1dGMTAuZGlhbG9nUHJlc2VudCA9IDE7DQorCQlsei5zaW5nbGV0b25FcnJvclBvcHVwSG9sZGVyU1dGMTAuZGlhbG9nT2JqZWN0ID0gdGhpczsNCisJPC9oYW5kbGVyPg0KKwkNCisJPGhhbmRsZXIgbmFtZT0ib25kZXN0cm95Ij4NCisJCWx6LnNpbmdsZXRvbkVycm9yUG9wdXBIb2xkZXJTV0YxMC5kaWFsb2dQcmVzZW50ID0gMDsNCisJCWx6LnNpbmdsZXRvbkVycm9yUG9wdXBIb2xkZXJTV0YxMC5kaWFsb2dPYmplY3QgPSBudWxsOw0KKwk8L2hhbmRsZXI+DQorPC9jbGFzcz4NCisNCis8Y2xhc3MgbmFtZT0ic2luZ2xldG9uRXJyb3JQb3B1cEhvbGRlclNXRjEwIj4NCisJPGF0dHJpYnV0ZSBuYW1lPSJlcnJvciIgdHlwZT0ic3RyaW5nIiBzZXR0ZXI9InNldEVycm9yKGVycm9yKSIvPg0KKwk8YXR0cmlidXRlIG5hbWU9ImRpYWxvZ1ByZXNlbnQiIGFsbG9jYXRpb249ImNsYXNzIiB2YWx1ZT0iMCIgLz4NCisJPGF0dHJpYnV0ZSBuYW1lPSJkaWFsb2dPYmplY3QiIGFsbG9jYXRpb249ImNsYXNzIiAvPg0KKwkNCisJPG1ldGhvZCBuYW1lPSJzZXRFcnJvciIgYXJncz0iZXJyb3IiPg0KKwkNCisJCWlmICggbHouc2luZ2xldG9uRXJyb3JQb3B1cEhvbGRlclNXRjEwLmRpYWxvZ1ByZXNlbnQgPT0gMCApDQorCQl7DQorCQkJbHouc2luZ2xldG9uRXJyb3JQb3B1cEhvbGRlclNXRjEwLmRpYWxvZ1ByZXNlbnQgPSAxOw0KKwkJCWx6LnNpbmdsZXRvbkVycm9yUG9wdXBIb2xkZXJTV0YxMC5kaWFsb2dPYmplY3QgPSBuZXcgbHouc2luZ2xldG9uRXJyb3JQb3B1cFNXRjEwKGNhbnZhcyx7ZXJyb3I6ZXJyb3J9KTsNCisJCX0NCisJCWVsc2UNCisJCXsNCisJCQlsei5zaW5nbGV0b25FcnJvclBvcHVwSG9sZGVyU1dGMTAuZGlhbG9nT2JqZWN0LmVycm9yID0gZXJyb3I7DQorCQl9DQorCTwvbWV0aG9kPg0KKzwvY2xhc3M+DQorDQorPC9saWJyYXJ5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3dmMTAvbW9kdWxlcy9jb25mZXJlbmNlL3BvcHVwcy9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3dmMTAvbW9kdWxlcy9jb25mZXJlbmNlL3BvcHVwcy9saWJyYXJ5Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTNkZjc4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC9tb2R1bGVzL2NvbmZlcmVuY2UvcG9wdXBzL2xpYnJhcnkubHp4CkBAIC0wLDAgKzEsMzIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/Pg0KKzwhLS0NCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgIA0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAgICAJICANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAgdW5kZXIgdGhlIExpY2Vuc2UuDQorICANCistLT4NCis8bGlicmFyeT4NCisJDQorCTwhLS0gDQorCUZhbUZhbSBJY29uIFNldA0KKwlDcmVhdGl2ZSBDb21tb25zIDMuMA0KKwkgLS0+DQorCTxyZXNvdXJjZSBuYW1lPSJ3YXJuaW5nX2ljb25fcnNjIiBzcmM9InJlc291cmNlcy9lcnJvci5wbmciIC8+DQorDQorICAgIDxpbmNsdWRlIGhyZWY9ImNvbmZpcm1hdGlvblNpbmdsZVNXRjEwLmx6eCIgLz4NCisgICAgPGluY2x1ZGUgaHJlZj0iZXJyb3JQb3B1cFNXRjEwLmx6eCIgLz4NCisgICAgDQorPC9saWJyYXJ5Pg0KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3dmMTAvbW9kdWxlcy9jb25mZXJlbmNlL3BvcHVwcy9yZXNvdXJjZXMvZXJyb3IucG5nIGIvV2ViQ29udGVudC9zd2YxMC9tb2R1bGVzL2NvbmZlcmVuY2UvcG9wdXBzL3Jlc291cmNlcy9lcnJvci5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjI4Y2YyZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3dmMTAvbW9kdWxlcy9jb25mZXJlbmNlL3BvcHVwcy9yZXNvdXJjZXMvZXJyb3IucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3dmMTAvbW9kdWxlcy9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3dmMTAvbW9kdWxlcy9saWJyYXJ5Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjU1M2QwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC9tb2R1bGVzL2xpYnJhcnkubHp4CkBAIC0wLDAgKzEsMjUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/Pg0KKzwhLS0NCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgIA0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAgICAJICANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAgdW5kZXIgdGhlIExpY2Vuc2UuDQorICANCistLT4NCis8bGlicmFyeT4NCisNCisgICAgPGluY2x1ZGUgaHJlZj0iY29uZmVyZW5jZS8iIC8+DQorDQorPC9saWJyYXJ5Pg0KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3dmMTAvbmV0d29ya1Rlc3RpbmcvbmV0d29ya3Rlc3RpbmcubHp4IGIvV2ViQ29udGVudC9zd2YxMC9uZXR3b3JrVGVzdGluZy9uZXR3b3JrdGVzdGluZy5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM3NTI2NgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3dmMTAvbmV0d29ya1Rlc3RpbmcvbmV0d29ya3Rlc3RpbmcubHp4CkBAIC0wLDAgKzEsMTMzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgICAgICAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPGNhbnZhcyB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIxMDAlIiB0aXRsZT0iTmV0d29ya1Rlc3RpbmciPg0KKw0KKwk8c3dpdGNoPg0KKyAgICAgICAgPHdoZW4gcHJvcGVydHk9IiRhczMiPg0KKyAgICAgICAgICAgIDxwYXNzdGhyb3VnaD4NCisgICAgICAgICAgICAgICAgaW1wb3J0IGZsYXNoLmV4dGVybmFsLkV4dGVybmFsSW50ZXJmYWNlOw0KKyAgICAgICAgICAgIDwvcGFzc3Rocm91Z2g+DQorICAgICAgICA8L3doZW4+DQorICAgIDwvc3dpdGNoPg0KKwk8c3dpdGNoPg0KKwkJPHdoZW4gcHJvcGVydHk9IiRkZWJ1ZyI+DQorCQkJPG1ldGhvZCBuYW1lPSJkb0RlYnVnSW5pdCI+DQorCQkJCWNhbnZhcy5zZXRBdHRyaWJ1dGUoJ2RlYnVnJywgdHJ1ZSk7DQorCQkJPC9tZXRob2Q+DQorCQkJPGRlYnVnIGZvbnRzaXplPSIxMSIgb25pbml0PSJEZWJ1Zy5zaG93SW50ZXJuYWxQcm9wZXJ0aWVzID0gdHJ1ZSIgd2lkdGg9IjQwJSIgeT0iNTAlIiB4PSI2MCUiIGhlaWdodD0iNTAlIiAvPg0KKwkJPC93aGVuPg0KKwkJPG90aGVyd2lzZT4NCisJCQk8bWV0aG9kIG5hbWU9ImRvRGVidWdJbml0Ij4NCisJCQk8L21ldGhvZD4NCisJCTwvb3RoZXJ3aXNlPg0KKyAgICA8L3N3aXRjaD4NCisgICAgDQorICAgIDxpbmNsdWRlIGhyZWY9InRlc3RzVmlldy5sengiIC8+DQorICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+PCFbQ0RBVEFbDQorICAgIAlmbGFzaC5leHRlcm5hbC5FeHRlcm5hbEludGVyZmFjZS5jYWxsKCJsb2FkaW5nQ29tcGxldGUiKTsNCisJCWRvRGVidWdJbml0KCk7DQorCV1dPjwvaGFuZGxlcj4NCisJDQorICAgIDwhLS0NCisgICAgICAgIFRoZXNlIGF0dHJpYnV0ZXMgYXJlIHJld3JpdHRlbiBieSB2YWx1ZXMgZnJvbSAiY29uZmlnLnhtbCINCisgICAgLS0+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0icnRtcFByb3RvY29sIiB0eXBlPSJzdHJpbmciIHZhbHVlPSJydG1wIiAvPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9InJ0bXBIb3N0IiB0eXBlPSJzdHJpbmciIHZhbHVlPSIiIC8+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0icnRtcFBvcnQiIHR5cGU9Im51bWJlciIgdmFsdWU9IjE5MzUiIC8+DQorICAgIA0KKyAgICA8YXR0cmlidXRlIG5hbWU9Imh0dHBQcm90b2NvbCIgdHlwZT0ic3RyaW5nIiB2YWx1ZT0iaHR0cCIgLz4NCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJodHRwSG9zdCIgdHlwZT0ic3RyaW5nIiB2YWx1ZT0iIiAvPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9Imh0dHBQb3J0IiB0eXBlPSJudW1iZXIiIHZhbHVlPSI1MDgwIiAvPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9InVyaUNvbnRleHQiIHR5cGU9InN0cmluZyIgdmFsdWU9Ii9vcGVubWVldGluZ3MiIC8+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0icnRtcFVyaVBhdGgiIHR5cGU9InN0cmluZyIgdmFsdWU9Ii9vcGVubWVldGluZ3MvaGliZXJuYXRlIiAvPg0KKw0KKwk8bWV0aG9kIG5hbWU9ImdldEJyb3dzZXJIb3N0Ij4NCisJCXZhciBob3N0OlN0cmluZyA9IEV4dGVybmFsSW50ZXJmYWNlLmNhbGwoIndpbmRvdy5sb2NhdGlvbi5ob3N0LnRvU3RyaW5nKCkiKTsNCisJCS8vIGluIGNhc2Ugb2YgSUUgb3Igc29tZSBvdGhlciBzZWN1cml0eSBpc3N1ZXMgd2Ugd2lsbCBmYWlsIC4uLg0KKwkJaWYgKCFob3N0KSB7DQorCQkJdmFyIHVybDpTdHJpbmcgPSBjYW52YXMucHJveHl1cmw7DQorCQkJaWYgKHVybCkgew0KKwkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidXJsICIsIHVybCk7DQorCQkJCXZhciBwYXJhbXNJZHggPSB1cmwuaW5kZXhPZigiPyIpOw0KKwkJCQlpZiAocGFyYW1zSWR4ICE9IC0xKSB7DQorCQkJCQl1cmwgPSB1cmwuc3Vic3RyKDAsIHBhcmFtc0lkeCk7DQorCQkJCX0NCisJCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInVybCAiLCB1cmwpOw0KKwkJCQl1cmwgPSB1cmwuc3Vic3RyKHVybC5pbmRleE9mKCIvLyIpICsgMik7DQorCQkJCXZhciBwb3J0SWR4ID0gdXJsLmluZGV4T2YoIjoiKTsNCisJCQkJaG9zdCA9IHVybC5zdWJzdHIoMCwgcG9ydElkeCAhPSAtMSA/IHBvcnRJZHggOiB1cmwuaW5kZXhPZigiLyIpKTsNCisJCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImhvc3QgIiwgaG9zdCk7DQorCQkJfQ0KKwkJfQ0KKwkJcmV0dXJuIGhvc3Q7DQorCTwvbWV0aG9kPg0KKwkNCisJPG1ldGhvZCBuYW1lPSJnZXRTZXR0aW5ncyI+DQorCQl2YXIgc2V0dGluZ3NQdHIgPSBjYW52YXMuc2V0dGluZ3MuZ2V0UG9pbnRlcigpOw0KKwkJDQorCQl2YXIgdXNlU1NMOkJvb2xlYW4gPSAoInllcyIgPT0gc2V0dGluZ3NQdHIueHBhdGhRdWVyeSgiY29uZmlnL3VzZVNTTC90ZXh0KCkiKSk7DQorCQljYW52YXMuc2V0QXR0cmlidXRlKCJydG1wUHJvdG9jb2wiLCB1c2VTU0wgPyAicnRtcHMiIDogInJ0bXAiKTsNCisJCWNhbnZhcy5zZXRBdHRyaWJ1dGUoInJ0bXBIb3N0Iiwgc2V0dGluZ3NQdHIueHBhdGhRdWVyeSgiY29uZmlnL3J0bXBob3N0bG9jYWwvdGV4dCgpIikpOw0KKwkJaWYgKCFjYW52YXMucnRtcEhvc3QpIHsNCisJCQljYW52YXMucnRtcEhvc3QgPSBnZXRCcm93c2VySG9zdCgpOw0KKwkJfQ0KKwkJY2FudmFzLnNldEF0dHJpYnV0ZSgicnRtcFBvcnQiLCBzZXR0aW5nc1B0ci54cGF0aFF1ZXJ5KCJjb25maWcvcnRtcHBvcnQvdGV4dCgpIikpOw0KKwkJDQorCQljYW52YXMuc2V0QXR0cmlidXRlKCJodHRwUHJvdG9jb2wiLCBzZXR0aW5nc1B0ci54cGF0aFF1ZXJ5KCJjb25maWcvcHJvdG9jb2wvdGV4dCgpIikpOw0KKwkJY2FudmFzLnNldEF0dHJpYnV0ZSgiaHR0cEhvc3QiLCBzZXR0aW5nc1B0ci54cGF0aFF1ZXJ5KCJjb25maWcvaHR0cGhvc3Rsb2NhbC90ZXh0KCkiKSk7DQorCQlpZiAoIWNhbnZhcy5odHRwSG9zdCkgew0KKwkJCWNhbnZhcy5odHRwSG9zdCA9IHJ0bXBIb3N0Ow0KKwkJfQ0KKwkJY2FudmFzLnNldEF0dHJpYnV0ZSgiaHR0cFBvcnQiLCBzZXR0aW5nc1B0ci54cGF0aFF1ZXJ5KCJjb25maWcvcmVkNWh0dHBwb3J0L3RleHQoKSIpKTsNCisNCisJCWNhbnZhcy5zZXRBdHRyaWJ1dGUoInVyaUNvbnRleHQiLCBzZXR0aW5nc1B0ci54cGF0aFF1ZXJ5KCJjb25maWcvaHR0cFJvb3RLZXkvdGV4dCgpIikpOw0KKwkJY2FudmFzLnNldEF0dHJpYnV0ZSgicnRtcFVyaVBhdGgiLCBjYW52YXMudXJpQ29udGV4dCArICJoaWJlcm5hdGUiKTsNCisJPC9tZXRob2Q+DQorDQorICAgIDxtZXRob2QgbmFtZT0ic2hvd1Rlc3RzIj4NCisgICAgICAgIHZhciB0ZXN0cyA9IG5ldyBsei5UZXN0c1ZpZXcoY2FudmFzLCB7bmFtZToidGVzdHNWaWV3In0pOw0KKyAgICAgICAgdGVzdHMudGVzdEFsbCgpOw0KKyAgICA8L21ldGhvZD4NCisNCisgICAgPGRhdGFzZXQgdHlwZT0iaHR0cCIgbmFtZT0ic2V0dGluZ3MiIHJlcXVlc3Q9ImZhbHNlIiA+DQorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPg0KKyAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJzcmMiLCJjb25maWcueG1sIik7DQorICAgICAgICAgICAgdGhpcy5kb1JlcXVlc3QoKTsNCisgICAgICAgIDwvaGFuZGxlcj4NCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSI+DQorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIlNldHRpbmdzIGFyZSByZXRyaWV2ZWQiKTsNCisgICAgICAgICAgICBjYW52YXMuZ2V0U2V0dGluZ3MoKTsNCisgICAgICAgICAgICBjYW52YXMuc2hvd1Rlc3RzKCk7DQorICAgICAgICA8L2hhbmRsZXI+DQorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmVycm9yIiBhcmdzPSJlIj4NCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiU2V0dGluZ3MgZXJyb3IiLCBlKTsNCisgICAgICAgIDwvaGFuZGxlcj4NCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9udGltZW91dCIgYXJncz0iZSI+DQorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIlNldHRpbmdzIHRpbWVvdXQgZXJyb3IiLCBlKTsNCisgICAgICAgIDwvaGFuZGxlcj4NCisgICAgPC9kYXRhc2V0Pg0KKw0KKyAgICA8YXR0cmlidXRlIG5hbWU9ImJ1c3kiIHR5cGU9ImJvb2xlYW4iIHZhbHVlPSJmYWxzZSIvPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9ImxvZyIgdHlwZT0ic3RyaW5nIiB2YWx1ZT0iIiAvPg0KKw0KKyAgICA8YXR0cmlidXRlIG5hbWU9InRlc3RzVmlldyIgdmFsdWU9Im51bGwiLz4NCisNCis8L2NhbnZhcz4NCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL25ldHdvcmtUZXN0aW5nL3Jlc291cmNlcy9lZGl0LWNvcHkucG5nIGIvV2ViQ29udGVudC9zd2YxMC9uZXR3b3JrVGVzdGluZy9yZXNvdXJjZXMvZWRpdC1jb3B5LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZGQ0OGM0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC9uZXR3b3JrVGVzdGluZy9yZXNvdXJjZXMvZWRpdC1jb3B5LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL25ldHdvcmtUZXN0aW5nL3Rlc3RzL0Jhc2VVUkxMb2FkVGVzdC5senggYi9XZWJDb250ZW50L3N3ZjEwL25ldHdvcmtUZXN0aW5nL3Rlc3RzL0Jhc2VVUkxMb2FkVGVzdC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWM2ZDk3ZQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3dmMTAvbmV0d29ya1Rlc3RpbmcvdGVzdHMvQmFzZVVSTExvYWRUZXN0Lmx6eApAQCAtMCwwICsxLDE0NiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+DQorPCEtLQ0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKw0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKw0KKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICB1bmRlciB0aGUgTGljZW5zZS4NCisNCistLT4NCis8bGlicmFyeT4NCisNCis8Y2xhc3MgbmFtZT0iQmFzZVVSTExvYWRUZXN0IiBleHRlbmRzPSJOZXR3b3JrVGVzdCI+DQorDQorICAgIDxzd2l0Y2g+DQorICAgICAgICA8d2hlbiBwcm9wZXJ0eT0iJGFzMyI+DQorICAgICAgICAgICAgPHBhc3N0aHJvdWdoPg0KKyAgICAgICAgICAgICAgICBpbXBvcnQgZmxhc2guZXZlbnRzLio7DQorICAgICAgICAgICAgICAgIGltcG9ydCBmbGFzaC5uZXQuKjsNCisgICAgICAgICAgICAgICAgaW1wb3J0IGZsYXNoLnV0aWxzLio7DQorICAgICAgICAgICAgPC9wYXNzdGhyb3VnaD4NCisgICAgICAgIDwvd2hlbj4NCisgICAgPC9zd2l0Y2g+DQorDQorICAgIDxhdHRyaWJ1dGUgbmFtZT0idGVzdHNDb3VudCIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0iMCIgLz4NCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJ0ZXN0VHlwZVBhcmFtZXRlciIgdHlwZT0ic3RyaW5nIiB2YWx1ZT0ibnVsbCIgLz4NCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJ2ZXJib3NlIiB0eXBlPSJib29sZWFuIiB2YWx1ZT0idHJ1ZSIgLz4NCisNCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJzdGFydFRpbWUiIHR5cGU9Im51bWJlciIgdmFsdWU9IjAiIC8+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0id2hvbGVUaW1lIiB0eXBlPSJudW1iZXIiIHZhbHVlPSIwIiAvPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9Im1heFRpbWUiIHR5cGU9Im51bWJlciIgdmFsdWU9IjAiIC8+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibWluVGltZSIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0iOTk5OTk5IiAvPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9ImZpbmlzaGVkVGVzdHNDb3VudCIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0iMCIgLz4NCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJzdWNjZXNzZnVsVGVzdHNDb3VudCIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0iMCIgLz4NCisNCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJob3N0VXJsIiB0eXBlPSJzdHJpbmciIHZhbHVlPSIiIC8+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibG9hZGVySW5pdGVkIiB0eXBlPSJib29sZWFuIiB2YWx1ZT0iZmFsc2UiIC8+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0icmVxdWVzdCIgdmFsdWU9Im51bGwiIC8+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibG9hZGVyIiB2YWx1ZT0ibnVsbCIgLz4NCisNCisgICAgPG1ldGhvZCBuYW1lPSJpbml0TG9hZGVyIj4NCisgICAgICAgIGhvc3RVcmwgPSBwcm90b2NvbCArICI6Ly8iICsgaG9zdCArICI6IiArIHBvcnQgKyBjYW52YXMudXJpQ29udGV4dCArICIvbmV0d29ya3Rlc3QudXBsb2FkP3Rlc3RUeXBlPSIgKyB0ZXN0VHlwZVBhcmFtZXRlcjsNCisgICAgICAgIHJlcXVlc3QgPSBuZXcgVVJMUmVxdWVzdChob3N0VXJsKTsNCisNCisgICAgICAgIGxvYWRlciA9IG5ldyBVUkxMb2FkZXIoKTsNCisgICAgICAgIGxvYWRlci5hZGRFdmVudExpc3RlbmVyKEV2ZW50LkNPTVBMRVRFLCB0aGlzLm9uQ29tcGxldGUpOw0KKyAgICAgICAgbG9hZGVyLmFkZEV2ZW50TGlzdGVuZXIoSU9FcnJvckV2ZW50LklPX0VSUk9SLCB0aGlzLm9uRXJyb3IpOw0KKyAgICAgICAgbG9hZGVyLmFkZEV2ZW50TGlzdGVuZXIoU2VjdXJpdHlFcnJvckV2ZW50LlNFQ1VSSVRZX0VSUk9SLCB0aGlzLm9uRXJyb3IpOw0KKw0KKyAgICAgICAgbG9hZGVySW5pdGVkID0gdHJ1ZTsNCisgICAgPC9tZXRob2Q+DQorDQorICAgIDxtZXRob2QgbmFtZT0ic3RhcnQiPg0KKyAgICAgICAgaWYgKCFsb2FkZXJJbml0ZWQpIHsNCisgICAgICAgICAgICB0aGlzLmluaXRMb2FkZXIoKTsNCisgICAgICAgIH0NCisgICAgICAgIGZpbmlzaGVkVGVzdHNDb3VudCA9IDA7DQorICAgICAgICBzdWNjZXNzZnVsVGVzdHNDb3VudCA9IDA7DQorICAgICAgICB3aG9sZVRpbWUgPSAwOw0KKyAgICAgICAgbWF4VGltZSA9IDA7DQorICAgICAgICBtaW5UaW1lID0gOTk5OTk5Ow0KKw0KKyAgICAgICAgdGhpcy5sb2coInN0YXJ0IHRlc3QuLi4gIiArIGhvc3RVcmwpOw0KKyAgICAgICAgc3RhcnRUaW1lID0gZ2V0VGltZXIoKTsNCisgICAgICAgIGxvYWRlci5sb2FkKHJlcXVlc3QpOw0KKyAgICA8L21ldGhvZD4NCisNCisgICAgPG1ldGhvZCBuYW1lPSJmb3JjZWRTdG9wIj4NCisgICAgICAgIGxvYWRlci5jbG9zZSgpOw0KKyAgICAgICAgdGhpcy5sb2coInN0b3BwZWQiKTsNCisgICAgPC9tZXRob2Q+DQorDQorICAgIDxtZXRob2QgbmFtZT0ib25Db21wbGV0ZSIgYXJncz0iZSI+DQorICAgICAgICA8IVtDREFUQVsNCisgICAgICAgIHZhciBlbmRUaW1lID0gZ2V0VGltZXIoKTsNCisgICAgICAgIHZhciBwaW5nVGltZSA9IGVuZFRpbWUgLSBzdGFydFRpbWU7DQorICAgICAgICB3aG9sZVRpbWUgKz0gcGluZ1RpbWU7DQorICAgICAgICBpZiAocGluZ1RpbWUgPiBtYXhUaW1lKSB7DQorICAgICAgICAgICAgbWF4VGltZSA9IHBpbmdUaW1lOw0KKyAgICAgICAgfQ0KKyAgICAgICAgaWYgKHBpbmdUaW1lIDwgbWluVGltZSkgew0KKyAgICAgICAgICAgIG1pblRpbWUgPSBwaW5nVGltZTsNCisgICAgICAgIH0NCisNCisgICAgICAgIGlmICh2ZXJib3NlKSB7DQorICAgICAgICAgICAgdGhpcy5sb2coImxvYWQgdGltZSA9ICIgKyBwaW5nVGltZSArICIgbXMiKTsNCisgICAgICAgIH0NCisNCisgICAgICAgIGZpbmlzaGVkVGVzdHNDb3VudCsrOw0KKyAgICAgICAgc3VjY2Vzc2Z1bFRlc3RzQ291bnQrKzsNCisgICAgICAgIGlmIChmaW5pc2hlZFRlc3RzQ291bnQgPCB0ZXN0c0NvdW50ICYmIHJ1bm5pbmcpIHsNCisgICAgICAgICAgICBzdGFydFRpbWUgPSBnZXRUaW1lcigpOw0KKyAgICAgICAgICAgIGxvYWRlci5sb2FkKHJlcXVlc3QpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICB0aGlzLnJlcG9ydCgpOw0KKyAgICAgICAgfQ0KKyAgICAgICAgXV0+DQorICAgIDwvbWV0aG9kPg0KKw0KKyAgICA8bWV0aG9kIG5hbWU9Im9uRXJyb3IiIGFyZ3M9ImUiPg0KKyAgICAgICAgPCFbQ0RBVEFbDQorICAgICAgICBpZiAodmVyYm9zZSkgew0KKyAgICAgICAgICAgIHRoaXMubG9nKCJFcnJvciAtICIgKyBlKTsNCisgICAgICAgIH0NCisNCisgICAgICAgIGZpbmlzaGVkVGVzdHNDb3VudCsrOw0KKyAgICAgICAgaWYgKGZpbmlzaGVkVGVzdHNDb3VudCA8IHRlc3RzQ291bnQgJiYgcnVubmluZykgew0KKyAgICAgICAgICAgIHN0YXJ0VGltZSA9IGdldFRpbWVyKCk7DQorICAgICAgICAgICAgbG9hZGVyLmxvYWQocmVxdWVzdCk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHRoaXMucmVwb3J0KCk7DQorICAgICAgICB9DQorICAgICAgICBdXT4NCisgICAgPC9tZXRob2Q+DQorDQorICAgIDxtZXRob2QgbmFtZT0icmVwb3J0Ij4NCisgICAgICAgIHZhciByZXBvcnQgPSAicmVwb3J0OiI7DQorICAgICAgICBpZiAoc3VjY2Vzc2Z1bFRlc3RzQ291bnQgPiAwKSB7DQorICAgICAgICAgICAgcmVwb3J0ICs9ICJcbiIgKyB0aGlzLmdlbmVyYXRlUmVwb3J0KCk7DQorICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgIHJlcG9ydCArPSAiIGNvbm5lY3Rpb24gZXJyb3IiOw0KKyAgICAgICAgfQ0KKyAgICAgICAgdGhpcy5sb2cocmVwb3J0KTsNCisNCisgICAgICAgIGlmIChzdWNjZXNzZnVsVGVzdHNDb3VudCA+IDApIHsNCisgICAgICAgICAgICB0aGlzLnNldFBhc3NlZCgpOw0KKyAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICB0aGlzLnNldEZhaWxlZCgpOw0KKyAgICAgICAgfQ0KKyAgICA8L21ldGhvZD4NCisNCisgICAgPG1ldGhvZCBuYW1lPSJnZW5lcmF0ZVJlcG9ydCIgLz4NCisNCis8L2NsYXNzPg0KKw0KKzwvbGlicmFyeT4NCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL25ldHdvcmtUZXN0aW5nL3Rlc3RzL0Rvd25sb2FkU3BlZWRUZXN0Lmx6eCBiL1dlYkNvbnRlbnQvc3dmMTAvbmV0d29ya1Rlc3RpbmcvdGVzdHMvRG93bmxvYWRTcGVlZFRlc3QubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE1ZWExMTUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL25ldHdvcmtUZXN0aW5nL3Rlc3RzL0Rvd25sb2FkU3BlZWRUZXN0Lmx6eApAQCAtMCwwICsxLDUwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorDQorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKw0KKy0tPg0KKzxsaWJyYXJ5Pg0KKw0KKzxjbGFzcyBuYW1lPSJEb3dubG9hZFNwZWVkVGVzdCIgZXh0ZW5kcz0iQmFzZVVSTExvYWRUZXN0Ij4NCisNCisgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4NCisgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJ0ZXN0c0NvdW50IiwgMSk7DQorICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgidGVzdE5hbWUiLCAiRG93bmxvYWQgc3BlZWQiKTsNCisgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJ0ZXN0VHlwZVBhcmFtZXRlciIsICJkb3dubG9hZCIpOw0KKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoInZlcmJvc2UiLCBmYWxzZSk7DQorICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgicmVzdWx0VGV4dCIsIHRydWUpOw0KKyAgICA8L2hhbmRsZXI+DQorDQorICAgIDxtZXRob2QgbmFtZT0iZ2VuZXJhdGVSZXBvcnQiPg0KKyAgICAgICAgdmFyIG1CeXRlcyA9IGxvYWRlci5ieXRlc1RvdGFsLygxMDI0KjEwMjQpOw0KKyAgICAgICAgdmFyIHRpbWVTZWMgPSB3aG9sZVRpbWUvMTAwMDsNCisgICAgICAgIHZhciBzcGVlZCA9IG1CeXRlcy90aW1lU2VjOw0KKw0KKyAgICAgICAgdmFyIHJlcG9ydCA9ICJCeXRlcyBkb3dubG9hZGVkOiAiICsgbUJ5dGVzICsgIiBNYlxuIjsNCisgICAgICAgIHJlcG9ydCArPSAiRG93bmxvYWQgdGltZTogIiArIHRpbWVTZWMgKyAiIHNcbiI7DQorICAgICAgICByZXBvcnQgKz0gIkRvd25sb2FkIHNwZWVkOiAiICsgc3BlZWQgKyAiIE1iL3NcbiI7DQorDQorICAgICAgICByZXN1bHRMYWJlbC5zZXRBdHRyaWJ1dGUoInRleHQiLCAiIik7DQorICAgICAgICByZXN1bHRMYWJlbC5hZGRGb3JtYXQoIiUuMmZcbiVzIiwgc3BlZWQsICJNYi9zIik7DQorDQorICAgICAgICByZXR1cm4gcmVwb3J0Ow0KKyAgICA8L21ldGhvZD4NCisNCis8L2NsYXNzPg0KKw0KKzwvbGlicmFyeT4NCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL25ldHdvcmtUZXN0aW5nL3Rlc3RzL0ppdHRlclRlc3QubHp4IGIvV2ViQ29udGVudC9zd2YxMC9uZXR3b3JrVGVzdGluZy90ZXN0cy9KaXR0ZXJUZXN0Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZDgwYmIwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC9uZXR3b3JrVGVzdGluZy90ZXN0cy9KaXR0ZXJUZXN0Lmx6eApAQCAtMCwwICsxLDU3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorDQorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKw0KKy0tPg0KKzxsaWJyYXJ5Pg0KKw0KKzxjbGFzcyBuYW1lPSJKaXR0ZXJUZXN0IiBleHRlbmRzPSJCYXNlVVJMTG9hZFRlc3QiPg0KKw0KKyAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPg0KKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoInRlc3RzQ291bnQiLCAxMDApOw0KKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoInRlc3ROYW1lIiwgIkppdHRlciIpOw0KKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoInRlc3RUeXBlUGFyYW1ldGVyIiwgImppdHRlciIpOw0KKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoInZlcmJvc2UiLCBmYWxzZSk7DQorICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgicmVzdWx0VGV4dCIsIHRydWUpOw0KKyAgICA8L2hhbmRsZXI+DQorDQorICAgIDxtZXRob2QgbmFtZT0iZ2VuZXJhdGVSZXBvcnQiPg0KKyAgICAgICAgPCFbQ0RBVEFbDQorICAgICAgICB2YXIgYXZlcmFnZVRpbWUgPSB3aG9sZVRpbWUgLyBzdWNjZXNzZnVsVGVzdHNDb3VudDsNCisgICAgICAgIHZhciBqaXR0ZXJNYXggPSBtYXhUaW1lIC0gYXZlcmFnZVRpbWU7DQorICAgICAgICB2YXIgaml0dGVyTWluID0gbWluVGltZSAtIGF2ZXJhZ2VUaW1lOw0KKyAgICAgICAgdmFyIHJlcG9ydCA9ICJBdmVyYWdlIHRpbWU6ICIgKyBhdmVyYWdlVGltZSArICIgbXNcbiI7DQorICAgICAgICByZXBvcnQgKz0gIk1pbiB0aW1lOiAiICsgbWluVGltZSArICIgbXNcbiI7DQorICAgICAgICByZXBvcnQgKz0gIk1heCB0aW1lOiAiICsgbWF4VGltZSArICIgbXNcbiI7DQorICAgICAgICByZXBvcnQgKz0gIkppdHRlcjogIiArIGppdHRlck1heCArICIgbXMgYW5kICIgKyBqaXR0ZXJNaW4gKyAiIG1zIFxuIjsNCisNCisgICAgICAgIHZhciBtYXggPSAtaml0dGVyTWluOw0KKyAgICAgICAgaWYgKGppdHRlck1heCA+IG1heCkgew0KKyAgICAgICAgICAgIG1heCA9IGppdHRlck1heDsNCisgICAgICAgIH0NCisNCisgICAgICAgIHJlc3VsdExhYmVsLnNldEF0dHJpYnV0ZSgidGV4dCIsICIiKTsNCisgICAgICAgIHJlc3VsdExhYmVsLmFkZEZvcm1hdCgiJS4wZFxuJXMiLCBtYXgsICJtcyIpOw0KKw0KKyAgICAgICAgcmV0dXJuIHJlcG9ydDsNCisgICAgICAgIF1dPg0KKyAgICA8L21ldGhvZD4NCisNCis8L2NsYXNzPg0KKw0KKzwvbGlicmFyeT4NCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL25ldHdvcmtUZXN0aW5nL3Rlc3RzL05ldHdvcmtUZXN0Lmx6eCBiL1dlYkNvbnRlbnQvc3dmMTAvbmV0d29ya1Rlc3RpbmcvdGVzdHMvTmV0d29ya1Rlc3QubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwZWNhMTcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL25ldHdvcmtUZXN0aW5nL3Rlc3RzL05ldHdvcmtUZXN0Lmx6eApAQCAtMCwwICsxLDEyNiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+DQorPCEtLQ0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKw0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKw0KKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICB1bmRlciB0aGUgTGljZW5zZS4NCisNCistLT4NCis8bGlicmFyeT4NCisNCis8Y2xhc3MgbmFtZT0iTmV0d29ya1Rlc3QiIGV4dGVuZHM9InZpZXciPg0KKw0KKyAgICA8YXR0cmlidXRlIG5hbWU9InRlc3ROYW1lIiB0eXBlPSJzdHJpbmciIHZhbHVlPSJudWxsIiAvPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9InByb3RvY29sIiB0eXBlPSJzdHJpbmciIHZhbHVlPSJudWxsIiAvPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9Imhvc3QiIHR5cGU9InN0cmluZyIgdmFsdWU9Im51bGwiIC8+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0icG9ydCIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0ibnVsbCIgLz4NCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJydW5uaW5nIiB0eXBlPSJib29sZWFuIiB2YWx1ZT0iZmFsc2UiIC8+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0iYWxsVGVzdHMiIHR5cGU9ImJvb2xlYW4iIHZhbHVlPSJmYWxzZSIgLz4NCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJyZXN1bHRUZXh0IiB0eXBlPSJib29sZWFuIiB2YWx1ZT0iZmFsc2UiIC8+DQorDQorICAgIDxtZXRob2QgbmFtZT0ic3RhcnQiIC8+DQorICAgIDxtZXRob2QgbmFtZT0iZm9yY2VkU3RvcCIgLz4NCisNCisgICAgPG1ldGhvZCBuYW1lPSJzdGFydEFsbFRlc3RzTW9kZSI+DQorICAgICAgICBhbGxUZXN0cyA9IHRydWU7DQorICAgICAgICB0aGlzLnNldFJ1bm5pbmcoKTsNCisgICAgPC9tZXRob2Q+DQorDQorICAgIDx2aWV3IG5hbWU9InBpY3R1cmUiPg0KKyAgICAgICAgPHZpZXcgbmFtZT0icnNjIiByZXNvdXJjZT0ibm90cnVuIiB3aWR0aD0iMTEzIiBoZWlnaHQ9IjExMyIgLz4NCisgICAgPC92aWV3Pg0KKyAgICA8dGV4dCBuYW1lPSJuYW1lTGFiZWwiDQorICAgICAgICAgIHRleHQ9IiR7cGFyZW50LnRlc3ROYW1lfSINCisgICAgICAgICAgeD0iJHsocGFyZW50LnBpY3R1cmUucnNjLndpZHRoIC0gdGhpcy53aWR0aCkvMn0iDQorICAgICAgICAgIHk9IiRvbmNle3BhcmVudC5waWN0dXJlLnJzYy5oZWlnaHR9Ig0KKyAgICAvPg0KKyAgICA8dGV4dCBuYW1lPSJyZXN1bHRMYWJlbCINCisgICAgICAgICAgdmlzaWJsZT0iZmFsc2UiDQorICAgICAgICAgIGZnY29sb3I9IndoaXRlIg0KKyAgICAgICAgICBhbGlnbj0iY2VudGVyIg0KKyAgICAgICAgICBmb250c2l6ZT0iMTYiDQorICAgIC8+DQorDQorICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPg0KKyAgICAgICAgaWYgKHJ1bm5pbmcpIHsNCisgICAgICAgICAgICB0aGlzLnNldFN0b3BwZWQoKTsNCisgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgYWxsVGVzdHMgPSBmYWxzZTsNCisgICAgICAgICAgICB0aGlzLnNldFJ1bm5pbmcoKTsNCisgICAgICAgIH0NCisgICAgPC9oYW5kbGVyPg0KKw0KKyAgICA8bWV0aG9kIG5hbWU9ImhhbmRsZUFsbFRlc3RzTW9kZSI+DQorICAgICAgICBpZiAoYWxsVGVzdHMpIHsNCisgICAgICAgICAgICBjYW52YXMudGVzdHNWaWV3LnRlc3RBbGwoKTsNCisgICAgICAgIH0NCisgICAgPC9tZXRob2Q+DQorICAgIA0KKyAgICA8bWV0aG9kIG5hbWU9InNldFBhc3NlZCI+DQorICAgICAgICBpZiAocnVubmluZykgew0KKyAgICAgICAgICAgIHJ1bm5pbmc9ZmFsc2U7DQorICAgICAgICAgICAgaWYgKHJlc3VsdFRleHQpIHsNCisgICAgICAgICAgICAgICAgcGljdHVyZS5yc2Muc2V0QXR0cmlidXRlKCJyZXNvdXJjZSIsICJwYXNzZWRfcmVzdWx0Iik7DQorICAgICAgICAgICAgICAgIHZhciB4ID0gKHBpY3R1cmUucnNjLndpZHRoIC0gcmVzdWx0TGFiZWwud2lkdGgpLzI7DQorICAgICAgICAgICAgICAgIHZhciB5ID0gKHBpY3R1cmUucnNjLmhlaWdodCAtIHJlc3VsdExhYmVsLmhlaWdodCkvMjsNCisgICAgICAgICAgICAgICAgcmVzdWx0TGFiZWwuc2V0QXR0cmlidXRlKCJ4IiwgeCk7DQorICAgICAgICAgICAgICAgIHJlc3VsdExhYmVsLnNldEF0dHJpYnV0ZSgieSIsIHkpOw0KKyAgICAgICAgICAgICAgICByZXN1bHRMYWJlbC5zZXRBdHRyaWJ1dGUoInZpc2libGUiLCB0cnVlKTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBwaWN0dXJlLnJzYy5zZXRBdHRyaWJ1dGUoInJlc291cmNlIiwgInBhc3NlZCIpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICBjYW52YXMuc2V0QXR0cmlidXRlKCJidXN5IiwgZmFsc2UpOw0KKyAgICAgICAgICAgIHRoaXMuaGFuZGxlQWxsVGVzdHNNb2RlKCk7DQorICAgICAgICB9DQorICAgIDwvbWV0aG9kPg0KKw0KKyAgICA8bWV0aG9kIG5hbWU9InNldEZhaWxlZCI+DQorICAgICAgICBpZiAocnVubmluZykgew0KKyAgICAgICAgICAgIHJ1bm5pbmc9ZmFsc2U7DQorICAgICAgICAgICAgcGljdHVyZS5yc2Muc2V0QXR0cmlidXRlKCJyZXNvdXJjZSIsICJmYWlsZWQiKTsNCisgICAgICAgICAgICBjYW52YXMuc2V0QXR0cmlidXRlKCJidXN5IiwgZmFsc2UpOw0KKyAgICAgICAgICAgIHRoaXMuaGFuZGxlQWxsVGVzdHNNb2RlKCk7DQorICAgICAgICB9DQorICAgIDwvbWV0aG9kPg0KKw0KKyAgICA8bWV0aG9kIG5hbWU9InNldFJ1bm5pbmciPg0KKyAgICAgICAgaWYgKGNhbnZhcy5idXN5KSB7DQorICAgICAgICAgICAgcmV0dXJuOw0KKyAgICAgICAgfQ0KKyAgICAgICAgY2FudmFzLnNldEF0dHJpYnV0ZSgiYnVzeSIsIHRydWUpOw0KKyAgICAgICAgdGhpcy5zdGFydCgpOw0KKyAgICAgICAgcnVubmluZz10cnVlOw0KKyAgICAgICAgcmVzdWx0TGFiZWwuc2V0QXR0cmlidXRlKCJ2aXNpYmxlIiwgZmFsc2UpOw0KKyAgICAgICAgcGljdHVyZS5yc2Muc2V0QXR0cmlidXRlKCJyZXNvdXJjZSIsICJydW5uaW5nIik7DQorICAgICAgICBwaWN0dXJlLnJzYy5wbGF5KCk7DQorICAgIDwvbWV0aG9kPg0KKw0KKyAgICA8bWV0aG9kIG5hbWU9InNldFN0b3BwZWQiPg0KKyAgICAgICAgdGhpcy5mb3JjZWRTdG9wKCk7DQorICAgICAgICBydW5uaW5nPWZhbHNlOw0KKyAgICAgICAgcGljdHVyZS5yc2Muc2V0QXR0cmlidXRlKCJyZXNvdXJjZSIsICJub3RydW4iKTsNCisgICAgICAgIGNhbnZhcy5zZXRBdHRyaWJ1dGUoImJ1c3kiLCBmYWxzZSk7DQorICAgICAgICB0aGlzLmhhbmRsZUFsbFRlc3RzTW9kZSgpOw0KKyAgICA8L21ldGhvZD4NCisNCisgICAgPG1ldGhvZCBuYW1lPSJsb2ciIGFyZ3M9Im1lc3NhZ2UiPg0KKyAgICAgICAgdmFyIHN0ciA9IHRlc3ROYW1lICsgIjogIiArIG1lc3NhZ2UgKyAiXG4iOw0KKyAgICAgICAgY2FudmFzLmxvZyArPSBzdHI7DQorICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZShzdHIpOw0KKyAgICA8L21ldGhvZD4NCisNCis8L2NsYXNzPg0KKw0KKzwvbGlicmFyeT4NCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL25ldHdvcmtUZXN0aW5nL3Rlc3RzL1BpbmdUZXN0Lmx6eCBiL1dlYkNvbnRlbnQvc3dmMTAvbmV0d29ya1Rlc3RpbmcvdGVzdHMvUGluZ1Rlc3QubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwODZkM2IKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL25ldHdvcmtUZXN0aW5nL3Rlc3RzL1BpbmdUZXN0Lmx6eApAQCAtMCwwICsxLDQzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorDQorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKw0KKy0tPg0KKzxsaWJyYXJ5Pg0KKw0KKzxjbGFzcyBuYW1lPSJQaW5nVGVzdCIgZXh0ZW5kcz0iQmFzZVVSTExvYWRUZXN0Ij4NCisNCisgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4NCisgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJ0ZXN0c0NvdW50IiwgMTApOw0KKyAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoInRlc3ROYW1lIiwgIlBpbmciKTsNCisgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJ0ZXN0VHlwZVBhcmFtZXRlciIsICJwaW5nIik7DQorICAgIDwvaGFuZGxlcj4NCisNCisgICAgPG1ldGhvZCBuYW1lPSJnZW5lcmF0ZVJlcG9ydCI+DQorICAgICAgICB2YXIgYXZlcmFnZVRpbWUgPSB3aG9sZVRpbWUgLyBzdWNjZXNzZnVsVGVzdHNDb3VudDsNCisgICAgICAgIHZhciBwYWNrZXRzTG9zdCA9IHRlc3RzQ291bnQgLSBzdWNjZXNzZnVsVGVzdHNDb3VudDsNCisgICAgICAgIHZhciByZXBvcnQgPSAiQXZlcmFnZSBwaW5nIHRpbWU6ICIgKyBhdmVyYWdlVGltZSArICIgbXNcbiI7DQorICAgICAgICByZXBvcnQgKz0gIlBhY2tldHMgcmVjZWl2ZWQ6ICIgKyBzdWNjZXNzZnVsVGVzdHNDb3VudCArICJcbiI7DQorICAgICAgICByZXBvcnQgKz0gIlBhY2tldHMgbG9zdDogIiArIHBhY2tldHNMb3N0ICsgIlxuIjsNCisNCisgICAgICAgIHJldHVybiByZXBvcnQ7DQorICAgIDwvbWV0aG9kPg0KKw0KKzwvY2xhc3M+DQorDQorPC9saWJyYXJ5Pg0KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3dmMTAvbmV0d29ya1Rlc3RpbmcvdGVzdHMvUG9ydEF2YWlsYWJpbGl0eVRlc3QubHp4IGIvV2ViQ29udGVudC9zd2YxMC9uZXR3b3JrVGVzdGluZy90ZXN0cy9Qb3J0QXZhaWxhYmlsaXR5VGVzdC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmFhY2YxYgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3dmMTAvbmV0d29ya1Rlc3RpbmcvdGVzdHMvUG9ydEF2YWlsYWJpbGl0eVRlc3QubHp4CkBAIC0wLDAgKzEsODkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/Pg0KKzwhLS0NCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisNCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisNCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAgdW5kZXIgdGhlIExpY2Vuc2UuDQorDQorLS0+DQorPGxpYnJhcnk+DQorDQorPGNsYXNzIG5hbWU9IlBvcnRBdmFpbGFiaWxpdHlUZXN0IiBleHRlbmRzPSJOZXR3b3JrVGVzdCI+DQorDQorICAgIDxzd2l0Y2g+DQorICAgICAgICA8d2hlbiBwcm9wZXJ0eT0iJGFzMyI+DQorICAgICAgICAgICAgPHBhc3N0aHJvdWdoPg0KKyAgICAgICAgICAgICAgICBpbXBvcnQgZmxhc2guZXZlbnRzLio7DQorICAgICAgICAgICAgICAgIGltcG9ydCBmbGFzaC5uZXQuKjsNCisgICAgICAgICAgICAgICAgaW1wb3J0IGZsYXNoLnN5c3RlbS4qOw0KKyAgICAgICAgICAgIDwvcGFzc3Rocm91Z2g+DQorICAgICAgICA8L3doZW4+DQorICAgIDwvc3dpdGNoPg0KKw0KKyAgICA8cnRtcGNvbm5lY3Rpb24gbmFtZT0icnRtcCIgYXV0b2Nvbm5lY3Q9ImZhbHNlIiBkZWJ1Zz0idHJ1ZSIgLz4NCisNCisgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4NCisgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJ0ZXN0TmFtZSIsICJQb3J0Iik7DQorICAgIDwvaGFuZGxlcj4NCisNCisgICAgPG1ldGhvZCBuYW1lPSJzdGFydCI+DQorICAgICAgICB2YXIgaG9zdFVybCA9IHByb3RvY29sICsgIjovLyIgKyBob3N0ICsgIjoiICsgcG9ydCArIGNhbnZhcy5ydG1wVXJpUGF0aDsNCisgICAgICAgIHJ0bXAuc2V0QXR0cmlidXRlKCJzcmMiLCBob3N0VXJsKTsNCisgICAgICAgIHRoaXMubG9nKCI6IHN0YXJ0IHRlc3QuLi4gIiArIGhvc3RVcmwpOw0KKw0KKyAgICAgICAgcnRtcC5jb25uZWN0KCk7DQorICAgIDwvbWV0aG9kPg0KKw0KKyAgICA8bWV0aG9kIG5hbWU9ImZvcmNlZFN0b3AiPg0KKyAgICAgICAgdGhpcy5sb2coInN0b3BwZWQiKTsNCisJCWRpc2Nvbm5lY3QoKTsNCisgICAgPC9tZXRob2Q+DQorDQorCTxtZXRob2QgbmFtZT0iZGlzY29ubmVjdCI+DQorICAgICAgIHJ0bXAuX25jLmNsb3NlKCk7DQorICAgICAgIHJ0bXAuc2V0QXR0cmlidXRlKCdzdGF0dXMnLCAnZGlzY29ubmVjdGVkJyk7DQorICAgICAgIHJ0bXAuc2V0QXR0cmlidXRlKCdzdGFnZScsIDApOw0KKwk8L21ldGhvZD4NCisJDQorICAgIDxoYW5kbGVyIG5hbWU9Im9uY29ubmVjdCIgcmVmZXJlbmNlPSJydG1wIj4NCisJCWlmIChydW5uaW5nKSB7DQorCQkJdGhpcy5sb2coInBvcnQgaXMgYXZhaWxhYmxlXG4iKTsNCisJCQl0aGlzLnNldFBhc3NlZCgpOw0KKwkJCWRpc2Nvbm5lY3QoKTsNCisgICAgICAgIH0NCisgICAgPC9oYW5kbGVyPg0KKw0KKyAgICA8aGFuZGxlciBuYW1lPSJvbmVycm9yIiBhcmdzPSJlIiByZWZlcmVuY2U9InJ0bXAiPg0KKyAgICAgICAgaWYgKHJ1bm5pbmcpIHsNCisgICAgICAgICAgICB0aGlzLmxvZygiY29ubmVjdGlvbiBlcnJvciAtICIgKyBlICsgIlxuIik7DQorICAgICAgICAgICAgdGhpcy5zZXRGYWlsZWQoKTsNCisgICAgICAgIH0NCisgICAgPC9oYW5kbGVyPg0KKw0KKyAgICA8aGFuZGxlciBuYW1lPSJvbnN0YXR1cyIgYXJncz0iZSIgcmVmZXJlbmNlPSJydG1wIj4NCisgICAgICAgIGlmIChydW5uaW5nKSB7DQorICAgICAgICAJc3dpdGNoKGUpIHsNCisgICAgICAgIAkJY2FzZSAidGltZWQgb3V0IjoNCisgICAgICAgIAkJY2FzZSAiY29ubmVjdGlvbiBmYWlsZWQiOg0KKyAgICAgICAgCQkJdGhpcy5zZXRGYWlsZWQoKTsNCisgICAgICAgIAkJCWJyZWFrOw0KKyAgICAgICAgCX0NCisgICAgICAgICAgICBpZigkZGVidWcpIERlYnVnLndyaXRlKHRlc3ROYW1lICsgIjogUlRNUCBjb25uZWN0IHN0YXR1cyAtICIsIGUpOw0KKyAgICAgICAgfQ0KKyAgICA8L2hhbmRsZXI+DQorDQorPC9jbGFzcz4NCisNCis8L2xpYnJhcnk+DQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC9uZXR3b3JrVGVzdGluZy90ZXN0cy9VcGxvYWRTcGVlZFRlc3QubHp4IGIvV2ViQ29udGVudC9zd2YxMC9uZXR3b3JrVGVzdGluZy90ZXN0cy9VcGxvYWRTcGVlZFRlc3QubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlMzE5OGUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL25ldHdvcmtUZXN0aW5nL3Rlc3RzL1VwbG9hZFNwZWVkVGVzdC5sengKQEAgLTAsMCArMSwxMTcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/Pg0KKzwhLS0NCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisNCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisNCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAgdW5kZXIgdGhlIExpY2Vuc2UuDQorDQorLS0+DQorPGxpYnJhcnk+DQorDQorPGNsYXNzIG5hbWU9IlVwbG9hZFNwZWVkVGVzdCIgZXh0ZW5kcz0iTmV0d29ya1Rlc3QiPg0KKw0KKyAgICA8c3dpdGNoPg0KKyAgICAgICAgPHdoZW4gcHJvcGVydHk9IiRhczMiPg0KKyAgICAgICAgICAgIDxwYXNzdGhyb3VnaD4NCisgICAgICAgICAgICAgICAgaW1wb3J0IGZsYXNoLmV2ZW50cy4qOw0KKyAgICAgICAgICAgICAgICBpbXBvcnQgZmxhc2gubmV0Lio7DQorICAgICAgICAgICAgICAgIGltcG9ydCBmbGFzaC51dGlscy4qOw0KKyAgICAgICAgICAgIDwvcGFzc3Rocm91Z2g+DQorICAgICAgICA8L3doZW4+DQorICAgIDwvc3dpdGNoPg0KKw0KKyAgICA8YXR0cmlidXRlIG5hbWU9InN0YXJ0VGltZSIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0iMCIgLz4NCisNCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJob3N0VXJsIiB0eXBlPSJzdHJpbmciIHZhbHVlPSIiIC8+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibG9hZGVySW5pdGVkIiB0eXBlPSJib29sZWFuIiB2YWx1ZT0iZmFsc2UiIC8+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0icmVxdWVzdCIgdmFsdWU9Im51bGwiIC8+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibG9hZGVyIiB2YWx1ZT0ibnVsbCIgLz4NCisNCisgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4NCisgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJ0ZXN0TmFtZSIsICJVcGxvYWQgc3BlZWQiKTsNCisgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJyZXN1bHRUZXh0IiwgdHJ1ZSk7DQorICAgIDwvaGFuZGxlcj4NCisNCisgICAgPG1ldGhvZCBuYW1lPSJpbml0TG9hZGVyIj4NCisgICAgICAgIGhvc3RVcmwgPSBwcm90b2NvbCArICI6Ly8iICsgaG9zdCArICI6IiArIHBvcnQgKyBjYW52YXMudXJpQ29udGV4dCArICIvbmV0d29ya3Rlc3QudXBsb2FkIjsNCisgICAgICAgIHJlcXVlc3QgPSBuZXcgVVJMUmVxdWVzdChob3N0VXJsKTsNCisgICAgICAgIHJlcXVlc3QubWV0aG9kID0gVVJMUmVxdWVzdE1ldGhvZC5QT1NUOw0KKyAgICAgICAgcmVxdWVzdC5kYXRhID0gZ2V0RGF0YVN0cmluZygpOw0KKw0KKyAgICAgICAgbG9hZGVyID0gbmV3IFVSTExvYWRlcigpOw0KKyAgICAgICAgbG9hZGVyLmFkZEV2ZW50TGlzdGVuZXIoRXZlbnQuQ09NUExFVEUsIHRoaXMub25Db21wbGV0ZSk7DQorICAgICAgICBsb2FkZXIuYWRkRXZlbnRMaXN0ZW5lcihJT0Vycm9yRXZlbnQuSU9fRVJST1IsIHRoaXMub25FcnJvcik7DQorICAgICAgICBsb2FkZXIuYWRkRXZlbnRMaXN0ZW5lcihTZWN1cml0eUVycm9yRXZlbnQuU0VDVVJJVFlfRVJST1IsIHRoaXMub25FcnJvcik7DQorDQorICAgICAgICBsb2FkZXJJbml0ZWQgPSB0cnVlOw0KKyAgICA8L21ldGhvZD4NCisNCisgICAgPG1ldGhvZCBuYW1lPSJzdGFydCI+DQorICAgICAgICBpZiAoIWxvYWRlckluaXRlZCkgew0KKyAgICAgICAgICAgIHRoaXMuaW5pdExvYWRlcigpOw0KKyAgICAgICAgfQ0KKw0KKyAgICAgICAgdGhpcy5sb2coInN0YXJ0IHRlc3QuLi4gIiArIGhvc3RVcmwpOw0KKyAgICAgICAgc3RhcnRUaW1lID0gZ2V0VGltZXIoKTsNCisgICAgICAgIGxvYWRlci5sb2FkKHJlcXVlc3QpOw0KKyAgICA8L21ldGhvZD4NCisNCisgICAgPG1ldGhvZCBuYW1lPSJmb3JjZWRTdG9wIj4NCisgICAgICAgIGxvYWRlci5jbG9zZSgpOw0KKyAgICAgICAgdGhpcy5sb2coInN0b3BwZWQiKTsNCisgICAgPC9tZXRob2Q+DQorDQorICAgIDxtZXRob2QgbmFtZT0ib25Db21wbGV0ZSIgYXJncz0iZSI+DQorICAgICAgICBpZiAocnVubmluZykgew0KKyAgICAgICAgICAgIHZhciBlbmRUaW1lID0gZ2V0VGltZXIoKTsNCisgICAgICAgICAgICB2YXIgbG9hZFRpbWUgPSBlbmRUaW1lIC0gc3RhcnRUaW1lOw0KKyAgICAgICAgICAgIHZhciBsb2FkVGltZVNlYyA9IGxvYWRUaW1lLzEwMDA7DQorICAgICAgICAgICAgdmFyIG1CeXRlcyA9IHJlcXVlc3QuZGF0YS5sZW5ndGgvKDEwMjQqMTAyNCk7DQorICAgICAgICAgICAgdmFyIHNwZWVkID0gbUJ5dGVzIC8gbG9hZFRpbWVTZWM7DQorDQorICAgICAgICAgICAgdmFyIHJlcG9ydCA9ICJyZXBvcnQ6XG4iOw0KKyAgICAgICAgICAgIHJlcG9ydCArPSAiQnl0ZXMgdXBsb2FkZWQ6ICIgKyBtQnl0ZXMgKyAiIE1iXG4iOw0KKyAgICAgICAgICAgIHJlcG9ydCArPSAiVXBsb2FkIHRpbWU6ICIgKyBsb2FkVGltZVNlYyArICIgc1xuIjsNCisgICAgICAgICAgICByZXBvcnQgKz0gIlVwbG9hZCBzcGVlZDogIiArIHNwZWVkICsgIiBNYi9zXG4iOw0KKw0KKyAgICAgICAgICAgIHJlc3VsdExhYmVsLnNldEF0dHJpYnV0ZSgidGV4dCIsICIiKTsNCisgICAgICAgICAgICByZXN1bHRMYWJlbC5hZGRGb3JtYXQoIiUuMmZcbiVzIiwgc3BlZWQsICJNYi9zIik7DQorICAgICAgICAgICAgdGhpcy5sb2cocmVwb3J0KTsNCisgICAgICAgICAgICB0aGlzLnNldFBhc3NlZCgpOw0KKyAgICAgICAgfQ0KKyAgICA8L21ldGhvZD4NCisNCisgICAgPG1ldGhvZCBuYW1lPSJvbkVycm9yIiBhcmdzPSJlIj4NCisgICAgICAgIGlmIChydW5uaW5nKSB7DQorICAgICAgICAgICAgdGhpcy5sb2coImVycm9yIC0gIiArIGUpOw0KKyAgICAgICAgICAgIHRoaXMuc2V0RmFpbGVkKCk7DQorICAgICAgICB9DQorICAgIDwvbWV0aG9kPg0KKw0KKyAgICA8IS0tIHJldHVybnMgYSAxIE1iIHN0cmluZy0tPg0KKyAgICA8bWV0aG9kIG5hbWU9ImdldERhdGFTdHJpbmciPg0KKyAgICAgICAgPCFbQ0RBVEFbDQorICAgICAgICB2YXIgcmVzdWx0ID0gIiI7DQorICAgICAgICB2YXIgc3RyNjQgPSAiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCI7DQorICAgICAgICBmb3IgKHZhciBpPTA7IGk8MTYzODQ7IGkrKykgew0KKyAgICAgICAgICAgIHJlc3VsdCArPSBzdHI2NDsNCisgICAgICAgIH0NCisgICAgICAgIHJldHVybiByZXN1bHQ7DQorICAgICAgICBdXT4NCisgICAgPC9tZXRob2Q+DQorDQorPC9jbGFzcz4NCisNCis8L2xpYnJhcnk+DQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC9uZXR3b3JrVGVzdGluZy90ZXN0cy9saWJyYXJ5Lmx6eCBiL1dlYkNvbnRlbnQvc3dmMTAvbmV0d29ya1Rlc3RpbmcvdGVzdHMvbGlicmFyeS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWI4NTc1ZAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3dmMTAvbmV0d29ya1Rlc3RpbmcvdGVzdHMvbGlicmFyeS5sengKQEAgLTAsMCArMSwzNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+DQorPCEtLQ0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAgDQorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICAgIAkgIA0KKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICB1bmRlciB0aGUgTGljZW5zZS4NCisgIA0KKy0tPg0KKzxsaWJyYXJ5Pg0KKw0KKyAgICA8cmVzb3VyY2UgbmFtZT0iZmFpbGVkIiBzcmM9InJlc291cmNlcy9mYWlsZWQucG5nIiAvPg0KKyAgICA8cmVzb3VyY2UgbmFtZT0ibm90cnVuIiBzcmM9InJlc291cmNlcy9ub3RydW4ucG5nIiAvPg0KKyAgICA8cmVzb3VyY2UgbmFtZT0icGFzc2VkIiBzcmM9InJlc291cmNlcy9wYXNzZWQucG5nIiAvPg0KKyAgICA8cmVzb3VyY2UgbmFtZT0icGFzc2VkX3Jlc3VsdCIgc3JjPSJyZXNvdXJjZXMvcGFzc2VkX3Jlc3VsdC5wbmciIC8+DQorICAgIDxyZXNvdXJjZSBuYW1lPSJydW5uaW5nIiBzcmM9InJlc291cmNlcy9ydW5uaW5nLnN3ZiIgLz4NCisNCisgICAgPGluY2x1ZGUgaHJlZj0iQmFzZVVSTExvYWRUZXN0Lmx6eCIgLz4NCisgICAgPGluY2x1ZGUgaHJlZj0iRG93bmxvYWRTcGVlZFRlc3QubHp4IiAvPg0KKyAgICA8aW5jbHVkZSBocmVmPSJKaXR0ZXJUZXN0Lmx6eCIgLz4NCisgICAgPGluY2x1ZGUgaHJlZj0iTmV0d29ya1Rlc3QubHp4IiAvPg0KKyAgICA8aW5jbHVkZSBocmVmPSJQaW5nVGVzdC5sengiIC8+DQorICAgIDxpbmNsdWRlIGhyZWY9IlBvcnRBdmFpbGFiaWxpdHlUZXN0Lmx6eCIgLz4NCisgICAgPGluY2x1ZGUgaHJlZj0iVXBsb2FkU3BlZWRUZXN0Lmx6eCIgLz4NCisNCis8L2xpYnJhcnk+DQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC9uZXR3b3JrVGVzdGluZy90ZXN0cy9yZXNvdXJjZXMvZmFpbGVkLnBuZyBiL1dlYkNvbnRlbnQvc3dmMTAvbmV0d29ya1Rlc3RpbmcvdGVzdHMvcmVzb3VyY2VzL2ZhaWxlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODY1NGIyNAotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3dmMTAvbmV0d29ya1Rlc3RpbmcvdGVzdHMvcmVzb3VyY2VzL2ZhaWxlZC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC9uZXR3b3JrVGVzdGluZy90ZXN0cy9yZXNvdXJjZXMvbm90cnVuLnBuZyBiL1dlYkNvbnRlbnQvc3dmMTAvbmV0d29ya1Rlc3RpbmcvdGVzdHMvcmVzb3VyY2VzL25vdHJ1bi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2I4NjllYgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3dmMTAvbmV0d29ya1Rlc3RpbmcvdGVzdHMvcmVzb3VyY2VzL25vdHJ1bi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC9uZXR3b3JrVGVzdGluZy90ZXN0cy9yZXNvdXJjZXMvcGFzc2VkLnBuZyBiL1dlYkNvbnRlbnQvc3dmMTAvbmV0d29ya1Rlc3RpbmcvdGVzdHMvcmVzb3VyY2VzL3Bhc3NlZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTkyOWQxNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3dmMTAvbmV0d29ya1Rlc3RpbmcvdGVzdHMvcmVzb3VyY2VzL3Bhc3NlZC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC9uZXR3b3JrVGVzdGluZy90ZXN0cy9yZXNvdXJjZXMvcGFzc2VkX3Jlc3VsdC5wbmcgYi9XZWJDb250ZW50L3N3ZjEwL25ldHdvcmtUZXN0aW5nL3Rlc3RzL3Jlc291cmNlcy9wYXNzZWRfcmVzdWx0LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGQ2Zjg0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC9uZXR3b3JrVGVzdGluZy90ZXN0cy9yZXNvdXJjZXMvcGFzc2VkX3Jlc3VsdC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC9uZXR3b3JrVGVzdGluZy90ZXN0cy9yZXNvdXJjZXMvcnVubmluZy5zd2YgYi9XZWJDb250ZW50L3N3ZjEwL25ldHdvcmtUZXN0aW5nL3Rlc3RzL3Jlc291cmNlcy9ydW5uaW5nLnN3ZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzhkM2UxCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC9uZXR3b3JrVGVzdGluZy90ZXN0cy9yZXNvdXJjZXMvcnVubmluZy5zd2YKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC9uZXR3b3JrVGVzdGluZy90ZXN0c1ZpZXcubHp4IGIvV2ViQ29udGVudC9zd2YxMC9uZXR3b3JrVGVzdGluZy90ZXN0c1ZpZXcubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0MTMyMjkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL25ldHdvcmtUZXN0aW5nL3Rlc3RzVmlldy5sengKQEAgLTAsMCArMSwxMDQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/Pg0KKzwhLS0NCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisNCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisNCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAgdW5kZXIgdGhlIExpY2Vuc2UuDQorDQorLS0+DQorPGxpYnJhcnk+DQorDQorPGluY2x1ZGUgaHJlZj0idGVzdHMvIiAvPg0KKzxyZXNvdXJjZSBuYW1lPSJsb2ciIHNyYz0icmVzb3VyY2VzL2VkaXQtY29weS5wbmciIC8+DQorDQorPGNsYXNzIG5hbWU9IlRlc3RzVmlldyIgZXh0ZW5kcz0idmlldyI+DQorDQorICAgIDxhdHRyaWJ1dGUgbmFtZT0ib2Zmc2V0IiB0eXBlPSJudW1iZXIiIHZhbHVlPSIyMCIgLz4NCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJzbWFsbE9mZnNldCIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0iNSIgLz4NCisNCisgICAgPHRleHQgbmFtZT0ibGFiZWwiDQorICAgICAgICB0ZXh0PSJDbGljayBhIHBsYXkgYnV0dG9uIHRvIHJ1biBhIHRlc3QiDQorICAgICAgICB4PSIke3BhcmVudC5vZmZzZXR9Ig0KKyAgICAgICAgeT0iJHtwYXJlbnQub2Zmc2V0fSINCisgICAgLz4NCisgICAgPHZpZXcgbmFtZT0ibG9nQnV0dG9uIg0KKyAgICAgICAgeD0iJHtwYXJlbnQud2lkdGggLSB0aGlzLnJzYy53aWR0aCAtIHBhcmVudC5vZmZzZXR9Ig0KKyAgICAgICAgeT0iJHtwYXJlbnQubGFiZWwueSArIChwYXJlbnQubGFiZWwuaGVpZ2h0IC0gdGhpcy5yc2MuaGVpZ2h0KS8yfSINCisgICAgPg0KKyAgICAgICAgPGltYWdlIG5hbWU9InJzYyIgcmVzb3VyY2U9ImxvZyIgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2Ii8+DQorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4NCisgICAgICAgICAgICBsei5Ccm93c2VyLnNldENsaXBib2FyZChjYW52YXMubG9nKTsNCisgICAgICAgIDwvaGFuZGxlcj4NCisgICAgPC92aWV3Pg0KKw0KKyAgICA8dGV4dCBuYW1lPSJsb2dMYWJlbCINCisgICAgICAgIHRleHQ9IkNvcHkgdGhlIGxvZyB0byB0aGUgY2xpcGJvYXJkOiINCisgICAgICAgIHg9IiR7cGFyZW50LmxvZ0J1dHRvbi54IC0gdGhpcy53aWR0aCAtIHBhcmVudC5zbWFsbE9mZnNldH0iDQorICAgICAgICB5PSIke3BhcmVudC5sYWJlbC55fSINCisgICAgLz4NCisNCisgICAgPFBpbmdUZXN0DQorICAgICAgICBuYW1lPSJwaW5nVGVzdCIgcHJvdG9jb2w9IiR7Y2FudmFzLmh0dHBQcm90b2NvbH0iIGhvc3Q9IiR7Y2FudmFzLmh0dHBIb3N0fSIgcG9ydD0iJHtjYW52YXMuaHR0cFBvcnR9Ig0KKyAgICAgICAgeD0iJHtwYXJlbnQub2Zmc2V0fSINCisgICAgICAgIHk9IiR7cGFyZW50LmxhYmVsLnkgKyBwYXJlbnQubGFiZWwuaGVpZ2h0ICsgcGFyZW50Lm9mZnNldC8yfSINCisgICAgLz4NCisgICAgPFBvcnRBdmFpbGFiaWxpdHlUZXN0DQorICAgICAgICBuYW1lPSJwb3J0VGVzdCIgcHJvdG9jb2w9IiR7Y2FudmFzLnJ0bXBQcm90b2NvbH0iIGhvc3Q9IiR7Y2FudmFzLnJ0bXBIb3N0fSIgcG9ydD0iJHtjYW52YXMucnRtcFBvcnR9Ig0KKyAgICAgICAgeD0iJHtwYXJlbnQucGluZ1Rlc3QueCArIHBhcmVudC5waW5nVGVzdC53aWR0aCArIHBhcmVudC5vZmZzZXR9Ig0KKyAgICAgICAgeT0iJHtwYXJlbnQucGluZ1Rlc3QueX0iDQorICAgICAvPg0KKyAgICA8Sml0dGVyVGVzdA0KKyAgICAgICAgbmFtZT0iaml0dGVyVGVzdCIgcHJvdG9jb2w9IiR7Y2FudmFzLmh0dHBQcm90b2NvbH0iIGhvc3Q9IiR7Y2FudmFzLmh0dHBIb3N0fSIgcG9ydD0iJHtjYW52YXMuaHR0cFBvcnR9Ig0KKyAgICAgICAgeD0iJHtwYXJlbnQucG9ydFRlc3QueCArIHBhcmVudC5wb3J0VGVzdC53aWR0aCArIHBhcmVudC5vZmZzZXR9Ig0KKyAgICAgICAgeT0iJHtwYXJlbnQucGluZ1Rlc3QueX0iDQorICAgIC8+DQorICAgIDxEb3dubG9hZFNwZWVkVGVzdA0KKyAgICAgICAgbmFtZT0iZG93bmxvYWRUZXN0IiBwcm90b2NvbD0iJHtjYW52YXMuaHR0cFByb3RvY29sfSIgaG9zdD0iJHtjYW52YXMuaHR0cEhvc3R9IiBwb3J0PSIke2NhbnZhcy5odHRwUG9ydH0iDQorICAgICAgICB4PSIke3BhcmVudC5qaXR0ZXJUZXN0LnggKyBwYXJlbnQuaml0dGVyVGVzdC53aWR0aCArIHBhcmVudC5vZmZzZXR9Ig0KKyAgICAgICAgeT0iJHtwYXJlbnQucGluZ1Rlc3QueX0iDQorICAgIC8+DQorDQorICAgIDxVcGxvYWRTcGVlZFRlc3QNCisgICAgICAgIG5hbWU9InVwbG9hZFRlc3QiIHByb3RvY29sPSIke2NhbnZhcy5odHRwUHJvdG9jb2x9IiBob3N0PSIke2NhbnZhcy5odHRwSG9zdH0iIHBvcnQ9IiR7Y2FudmFzLmh0dHBQb3J0fSINCisgICAgICAgIHg9IiR7cGFyZW50LmRvd25sb2FkVGVzdC54ICsgcGFyZW50LmRvd25sb2FkVGVzdC53aWR0aCArIHBhcmVudC5vZmZzZXR9Ig0KKyAgICAgICAgeT0iJHtwYXJlbnQucGluZ1Rlc3QueX0iDQorICAgIC8+DQorDQorICAgIDxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudFRlc3ROdW1iZXIiIHR5cGU9Im51bWJlciIgdmFsdWU9IjAiIC8+DQorICAgIDxtZXRob2QgbmFtZT0idGVzdEFsbCI+DQorICAgICAgICB2YXIgbmV4dFRlc3Q7DQorICAgICAgICBpZiAoMCA9PSBjdXJyZW50VGVzdE51bWJlcikgew0KKyAgICAgICAgICAgIG5leHRUZXN0ID0gcGluZ1Rlc3Q7DQorICAgICAgICB9IGVsc2UgaWYgKDEgPT0gY3VycmVudFRlc3ROdW1iZXIpIHsNCisgICAgICAgICAgICBuZXh0VGVzdCA9IHBvcnRUZXN0Ow0KKyAgICAgICAgfSBlbHNlIGlmICgyID09IGN1cnJlbnRUZXN0TnVtYmVyKSB7DQorICAgICAgICAgICAgbmV4dFRlc3QgPSBqaXR0ZXJUZXN0Ow0KKyAgICAgICAgfSBlbHNlIGlmICgzID09IGN1cnJlbnRUZXN0TnVtYmVyKSB7DQorICAgICAgICAgICAgbmV4dFRlc3QgPSBkb3dubG9hZFRlc3Q7DQorICAgICAgICB9IGVsc2UgaWYgKDQgPT0gY3VycmVudFRlc3ROdW1iZXIpIHsNCisgICAgICAgICAgICBuZXh0VGVzdCA9IHVwbG9hZFRlc3Q7DQorICAgICAgICB9IGVsc2UgaWYgKDUgPT0gY3VycmVudFRlc3ROdW1iZXIpIHsNCisgICAgICAgICAgICBuZXh0VGVzdCA9IG51bGw7DQorICAgICAgICB9DQorDQorICAgICAgICBpZiAobnVsbCAhPSBuZXh0VGVzdCkgew0KKyAgICAgICAgICAgIGN1cnJlbnRUZXN0TnVtYmVyKys7DQorICAgICAgICAgICAgbmV4dFRlc3Quc3RhcnRBbGxUZXN0c01vZGUoKTsNCisgICAgICAgIH0NCisgICAgPC9tZXRob2Q+DQorDQorPC9jbGFzcz4NCisNCis8L2xpYnJhcnk+DQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC9zY3JlZW5zaGFyaW5nL2xpYnJhcnkubHp4IGIvV2ViQ29udGVudC9zd2YxMC9zY3JlZW5zaGFyaW5nL2xpYnJhcnkubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxODIxODMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL3NjcmVlbnNoYXJpbmcvbGlicmFyeS5sengKQEAgLTAsMCArMSwyOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKyAgICAKKyAgICA8IS0tIEZhbUZhbSBJY29uIFNldCAtLT4KKwk8cmVzb3VyY2UgbmFtZT0ibWVudXBvaW50ZXJfcnNjIiBzcmM9InJlc291cmNlcy9jdXJzb3IucG5nIiAvPgorCQorCTxpbmNsdWRlIGhyZWY9InNjcmVlblNoYXJpbmdEaWFsb2cubHp4IiAvPgorICAgIDxpbmNsdWRlIGhyZWY9InZpZGVvT2JqZWN0UGxheVNjcmVlblNoYXJlLmx6eCIgLz4KKworPC9saWJyYXJ5PgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC9zY3JlZW5zaGFyaW5nL3Jlc291cmNlcy9jdXJzb3IucG5nIGIvV2ViQ29udGVudC9zd2YxMC9zY3JlZW5zaGFyaW5nL3Jlc291cmNlcy9jdXJzb3IucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzMmY1MzIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL3NjcmVlbnNoYXJpbmcvcmVzb3VyY2VzL2N1cnNvci5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC9zY3JlZW5zaGFyaW5nL3NjcmVlblNoYXJpbmdEaWFsb2cubHp4IGIvV2ViQ29udGVudC9zd2YxMC9zY3JlZW5zaGFyaW5nL3NjcmVlblNoYXJpbmdEaWFsb2cubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4MzMyMmEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL3NjcmVlbnNoYXJpbmcvc2NyZWVuU2hhcmluZ0RpYWxvZy5sengKQEAgLTAsMCArMSwxMTIyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxsaWJyYXJ5PgorICAgIAorPGNsYXNzIG5hbWU9InNjcmVlblNoYXJpbmdEaWFsb2dDb250YWluZXIiIGV4dGVuZHM9InZpZXciIAorICAgICAgIHdpZHRoPSIke3BhcmVudC53aWR0aCB9IiBoZWlnaHQ9IiR7IHBhcmVudC5oZWlnaHQgfSI+CisJCisJPG1ldGhvZCBuYW1lPSJjbG9zZUFsbCI+CisJCTwhW0NEQVRBWworCQkgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInNjcmVlblNoYXJpbmdEaWFsb2dDb250YWluZXIgY2xvc2VBbGwiKTsKKyAgICAgICAgICAgIGZvciAodmFyIGVnIGluIHRoaXMuc3Vidmlld3MpIHsKKyAgICAgICAgICAgICAgICB0aGlzLnN1YnZpZXdzW2VnXS5kb0Nsb3NlKCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvL2RvIGZpcnN0IGNsb3NlIHRoZSB2aWRlbyBjb25uZWN0aW9uIGJlZm9yZSByZW1vdmluZyB0aGUgY2xpZW50IHZpZXcKKyAgICAgICAgICAgIHRoaXMuY2xlYXJBbGxTZXNzaW9ucygpOworICAgICAgICBdXT4KKwk8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9ImNsZWFyQWxsU2Vzc2lvbnMiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzY3JlZW5TaGFyaW5nRGlhbG9nQ29udGFpbmVyIGNsZWFyQWxsU2Vzc2lvbnMiKTsKKyAgICAgICAgICAgIGZvciAodmFyIGVnIGluIHRoaXMuc3Vidmlld3MpIHsKKyAgICAgICAgICAgICAgICB0aGlzLnN1YnZpZXdzW2VnXS5kZXN0cm95KCk7CisgICAgICAgICAgICB9CisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0ic2VhcmNoRm9yU2Vzc2lvbiIgYXJncz0ic3RyZWFtUHVibGlzaE5hbWUiPgorICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgCisgICAgICAgICAgICBmb3IgKHZhciBpPTA7aTx0aGlzLnN1YnZpZXdzLmxlbmd0aDtpKyspIHsKKyAgICAgICAgICAgICAgICBpZiAodGhpcy5zdWJ2aWV3c1tpXS5pbml0T2JqZWN0LnN0cmVhbVB1Ymxpc2hOYW1lID09IHN0cmVhbVB1Ymxpc2hOYW1lKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiB0aGlzLnN1YnZpZXdzW2ldOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIk5vIFNjcmVlbiBTZXNzaW9uICIrc3RyZWFtUHVibGlzaE5hbWUpOworICAgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIF1dPgorICAgIDwvbWV0aG9kPgorICAgIAorPC9jbGFzcz4gICAgCisKKzxjbGFzcyBuYW1lPSJzY3JlZW5TaGFyaW5nRGlhbG9nIiBleHRlbmRzPSJsYWJlbEV4cGxvcmVyQm94IiBsYWJlbGlkPSI4NTUiCisgICAgZG9ja2luZz0idHJ1ZSIgcmVzaXplYWJsZT0idHJ1ZSIgY2xvc2FibGU9InRydWUiIAorICAgIHdpZHRoPSIyNzAiIHg9IiRvbmNleyBjYW52YXMud2lkdGggLSB0aGlzLndpZHRoIC0gMjAgfSIgaGVpZ2h0PSIxMDAiPgorICAgIAorICAgIDxhdHRyaWJ1dGUgbmFtZT0iaXNTdGFydGVkIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+CisgICAgCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJjdXJyZW50Q3Vyc29yT2JqZWN0IiB2YWx1ZT0ibnVsbCIgLz4KKyAgICAKKyAgICA8YXR0cmlidXRlIG5hbWU9ImluaXRPYmplY3QiIHZhbHVlPSJudWxsIi8+CisgICAgCisgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAJdmFyIGZOYW1lID0gIiAiICsgdGhpcy5pbml0T2JqZWN0LmZpcnN0bmFtZSAKKyAgICAgICAgICAgICAgICAgICsgIiAiICsgdGhpcy5pbml0T2JqZWN0Lmxhc3RuYW1lOworICAgICAgICB2YXIgdFN0cmluZyA9IGNhbnZhcy5nZXRMYWJlbE5hbWUoODQ5KQorICAgICAgICAgICAgICAgICAgICAgICAgKyAiICIgKyBmTmFtZQorICAgICAgICAgICAgICAgICAgICAgICAgKyAiICIgKyBjYW52YXMuZ2V0TGFiZWxOYW1lKDg1MCk7CisgICAgICAgIAorCQl0aGlzLnNldEF0dHJpYnV0ZSgndGl0bGUnLCBjYW52YXMuZ2V0TGFiZWxOYW1lKDg1NSkgKyAiICIgKyBmTmFtZSk7CisgICAgICAgIGlmIChwYXJlbnQuc3Vidmlld3MubGVuZ3RoID4gMSkgeworICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoInkiLCgocGFyZW50LnN1YnZpZXdzLmxlbmd0aC0xKSoxMDApKzQwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJ5Iiw0MCk7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHRoaXMuX2luaXRUZXh0Ll9pbmZvVGV4dC5zZXRBdHRyaWJ1dGUoInRleHQiLHRTdHJpbmcpOworICAgIDwvaGFuZGxlcj4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InN0YXJ0Vmlld2VyU2Vzc2lvbiI+CisgICAgICAgIDwhW0NEQVRBWworICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuaXNTdGFydGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5fc3ViY29udGVudC5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuX2luaXRUZXh0LnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuX3Nob3dTY3JlZW5TaGFyaW5nLl95LnNldEF0dHJpYnV0ZSgidG8iLDApOworICAgICAgICAgICAgdGhpcy5fc2hvd1NjcmVlblNoYXJpbmcuX2hlaWdodC5zZXRBdHRyaWJ1dGUoInRvIixjYW52YXMuaGVpZ2h0KTsKKyAgICAgICAgICAgIHRoaXMuX3Nob3dTY3JlZW5TaGFyaW5nLl93aWR0aC5zZXRBdHRyaWJ1dGUoInRvIixjYW52YXMud2lkdGgtMjYwKTsKKyAgICAgICAgICAgIHRoaXMuX3Nob3dTY3JlZW5TaGFyaW5nLl94LnNldEF0dHJpYnV0ZSgidG8iLDI2MCk7CisgICAgICAgIAorICAgICAgICAgICAgdGhpcy5fc2hvd1NjcmVlblNoYXJpbmcuc2V0QXR0cmlidXRlKCdzdGFydGVkJywgdHJ1ZSk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ0aGlzLmluaXRPYmplY3QgIix0aGlzLmluaXRPYmplY3QpOworICAgICAgICAgICAgCisgICAgICAgICAgICB0aGlzLl9zdWJjb250ZW50Ll9jb250ZW50Ll92aWRlby5zZXRBdHRyaWJ1dGUoIndpZHRoIix0aGlzLmluaXRPYmplY3QuVldpZHRoKTsKKyAgICAgICAgICAgIHRoaXMuX3N1YmNvbnRlbnQuX2NvbnRlbnQuX3ZpZGVvLnNldEF0dHJpYnV0ZSgiaGVpZ2h0Iix0aGlzLmluaXRPYmplY3QuVkhlaWdodCk7CisgICAgICAgICAgICAKKyAgICAgICAgICAgIHRoaXMuX3N1YmNvbnRlbnQuX2NvbnRlbnQuX3ZpZGVvLl92aWRlb3N0cmVhbS5wbGF5U3RyZWFtKHRoaXMuaW5pdE9iamVjdC5zdHJlYW1QdWJsaXNoTmFtZSwtMSk7CisgICAgICAgICAgICAKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJkb01pbmltaXplIj4KKyAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgIAorICAgICAgICAgICB0aGlzLmlzU3RhcnRlZCA9IGZhbHNlOworICAgICAgICAgICAKKyAgICAgICAgICAgdGhpcy5fc3ViY29udGVudC5fY29udGVudC5fdmlkZW8uX3ZpZGVvc3RyZWFtLnN0b3AoKTsKKyAgICAgICAgICAgCisgICAgICAgICAgIHRoaXMuX3Nob3dTY3JlZW5TaGFyaW5nLl95LnNldEF0dHJpYnV0ZSgidG8iLCgocGFyZW50LnN1YnZpZXdzLmxlbmd0aC0xKSoxMDApKzQwKTsKKyAgICAgICAgICAgdGhpcy5fc2hvd1NjcmVlblNoYXJpbmcuX3guc2V0QXR0cmlidXRlKCJ0byIsY2FudmFzLndpZHRoIC0gMjcwIC0gMjApOworICAgICAgICAgICB0aGlzLl9zaG93U2NyZWVuU2hhcmluZy5faGVpZ2h0LnNldEF0dHJpYnV0ZSgidG8iLDEwMCk7CisgICAgICAgICAgIHRoaXMuX3Nob3dTY3JlZW5TaGFyaW5nLl93aWR0aC5zZXRBdHRyaWJ1dGUoInRvIiwyNzApOworICAgICAgICAgICAKKyAgICAgICAgICAgdGhpcy5fc2hvd1NjcmVlblNoYXJpbmcuc2V0QXR0cmlidXRlKCdzdGFydGVkJywgdHJ1ZSk7CisgICAgICAgICAgIAorICAgICAgICAgICB0aGlzLl9pbmZvQm94LnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgICAgICAgICB0aGlzLl96b29tYmFyLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgICAgICAgICB0aGlzLl9wYXVzZS5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKyAgICAgICAgICAgdGhpcy5fY2xvc2Uuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7CisgICAgICAgICAgIAorICAgICAgICAgICB0aGlzLl9zdWJjb250ZW50LnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOworICAgICAgICAgICAKKyAgICAgICAgXV0+CisgICAgPC9tZXRob2Q+CisgICAgCisgICAgPG1ldGhvZCBuYW1lPSJkb0Nsb3NlIj4KKyAgICAgICAgaWYgKHRoaXMuaXNTdGFydGVkKSB7CisgICAgICAgICAgICB0aGlzLl9zdWJjb250ZW50Ll9jb250ZW50Ll92aWRlby5fdmlkZW9zdHJlYW0uc3RvcCgpOworICAgICAgICB9CisgICAgICAgIHRoaXMuY2xvc2UoKTsKKyAgICA8L21ldGhvZD4KKyAgICAKKyAgICA8bWV0aG9kIG5hbWU9InVwZGF0ZUN1cnNvciIgYXJncz0ieCx5Ij4KKyAgICAgICAgaWYgKHRoaXMuY3VycmVudEN1cnNvck9iamVjdCA9PSBudWxsKSB7CisgICAgICAgICAgICB0aGlzLmN1cnJlbnRDdXJzb3JPYmplY3QgPSBuZXcgbHouc2NyZWVuU2hhcmVDdXJzb3JPYmplY3QodGhpcy5fc3ViY29udGVudC5fY29udGVudCx7CisgICAgICAgICAgICAgICAgICAgICAgICByZWZPYmo6dGhpcy5fc3ViY29udGVudC5fY29udGVudC5fdmlkZW8uX3ZpZGVvc3RyZWFtCisgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgICAgIHRoaXMuY3VycmVudEN1cnNvck9iamVjdC5zZXRBdHRyaWJ1dGUoIngiLHggKiAodGhpcy5fem9vbWJhci5fem9vbS5pbml0aWFsTnVtYmVyLzEwMCkpOworICAgICAgICB0aGlzLmN1cnJlbnRDdXJzb3JPYmplY3Quc2V0QXR0cmlidXRlKCJ5Iix5ICogKHRoaXMuX3pvb21iYXIuX3pvb20uaW5pdGlhbE51bWJlci8xMDApKTsKKyAgICA8L21ldGhvZD4gICAgCisgICAgCisgICAgPHZpZXcgbmFtZT0iX2luaXRUZXh0Ij4KKyAgICAgICAgCisgICAgICAgIDwhLS0KKyAgICAgICAgPHZpZXcgeD0iNCIgcmVzb3VyY2U9Indhcm5pbmdfaWNvbl9yc2MiIHk9IjI0IiAvPgorICAgICAgICAgLS0+CisgICAgICAgICAKKyAgICAgICAgPGxhYmVsVGV4dCBuYW1lPSJfaW5mb1RleHQiIGxhYmVsaWQ9IjcyNCIgd2lkdGg9IjIzMCIgCisgICAgICAgICAgICAgICAgICAgeD0iMTAiIHk9IjI2IiBtdWx0aWxpbmU9InRydWUiIC8+CisgICAgCisgICAgICAgIDxzaW1wbGVMYWJlbEJ1dHRvbiBuYW1lPSJfc3RhcnRCdXR0b24iIGxhYmVsaWQ9Ijg0OCIgeD0iMTAiIHdpZHRoPSIxMjQiIHk9Ijc4Ij4KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPgorICAgICAgICAgICAgICAgIHBhcmVudC5wYXJlbnQuc3RhcnRWaWV3ZXJTZXNzaW9uKCk7CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDwvc2ltcGxlTGFiZWxCdXR0b24+IAorICAgICAgICAgIAorICAgICAgICA8c2ltcGxlTGFiZWxCdXR0b24gbmFtZT0iX2Nsb3NlQnV0dG9uIiBsYWJlbGlkPSI4NTEiIHg9IjEzOCIgd2lkdGg9IjEyNCIgeT0iNzgiPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+CisgICAgICAgICAgICAgICAgcGFyZW50LnBhcmVudC5jbG9zZSgpOworICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8L3NpbXBsZUxhYmVsQnV0dG9uPiAgIAorICAgICAgICAKKyAgICA8L3ZpZXc+CisgICAgCisgICAgPHZpZXcgbmFtZT0iX3N1YmNvbnRlbnQiIHdpZHRoPSIkeyBwYXJlbnQud2lkdGggfSIgdmlzaWJpbGl0eT0iaGlkZGVuIgorICAgICAgICAgIHk9IjIwIiBoZWlnaHQ9IiR7IHBhcmVudC5oZWlnaHQgLSA0OCB9IiBjbGlwPSJ0cnVlIj4KKyAgICAJCisgICAgICAgIDx2aWV3IG5hbWU9Il9jb250ZW50Ij4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPHZpZGVvT2JqZWN0UGxheVNjcmVlblNoYXJlIG5hbWU9Il92aWRlbyI+CisgICAgICAgICAgICAJCisgICAgICAgICAgICAJPGNvbnRleHRtZW51PgorCQkJCisJCQkJCTxjb250ZXh0bWVudWl0ZW0gY2FwdGlvbj0iJG9uY2V7IGNhbnZhcy5nZXRMYWJlbE5hbWUoMTA4NykgfSIgCisJCQkJCQkJCQkgb25zZWxlY3Q9InBhcmVudC5wYXJlbnQucGFyZW50LnBhc3RlQ29udGVudCgpIiAvPgorCQkgICAgICAgIAorCQkgICAgICAgIDwvY29udGV4dG1lbnU+CisJCSAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImRvU2VuZEV2ZW50cyIgdHlwZT0iYm9vbGVhbiIgdmFsdWU9InRydWUiIC8+CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJpZGxlRGVsZWdhdGUiIHZhbHVlPSJudWxsIiB0eXBlPSJleHByZXNzaW9uIiAvPgorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iaXNNb3VzZU92ZXJBY3RpdmUiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIvPgorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0ibGFzdE1vdXNlWCIgdmFsdWU9Ii0xIiB0eXBlPSJudW1iZXIiLz4KKyAgICAgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9Imxhc3RNb3VzZVkiIHZhbHVlPSItMSIgdHlwZT0ibnVtYmVyIi8+CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJpc01hYyIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIi8+CisgICAgICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJpc1dpbmRvd3MiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIvPgorICAgICAgICAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iaXNMaW51eCIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIi8+CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4KKyAgICAgICAgICAgICAgICAJCisgICAgICAgICAgICAgICAgCXZhciBvc0luZm8gPSBsei5Ccm93c2VyLmdldE9TKCk7CisgICAgICAgICAgICAgICAgCQorICAgICAgICAgICAgICAgIAlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib3NJbmZvIDo6ICIsb3NJbmZvKTsKKyAgICAgICAgICAgICAgICAJCisgICAgICAgICAgICAgICAgCWlmIChvc0luZm8uaW5kZXhPZigiTWFjIikgPj0gMCkgeworICAgICAgICAgICAgICAgIAkJdGhpcy5pc01hYyA9IHRydWU7CisgICAgICAgICAgICAgICAgCX0gZWxzZSBpZiAob3NJbmZvLmluZGV4T2YoIldpbiIpID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNXaW5kb3dzID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChvc0luZm8uaW5kZXhPZigiTGludXgiKSA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTGludXggPSB0cnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidGhpcy5pc01hYyA6OiAiLHRoaXMuaXNNYWMpOworICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidGhpcy5pc1dpbmRvd3MgOjogIix0aGlzLmlzV2luZG93cyk7CisgICAgICAgICAgICAgICAgCQorICAgICAgICAgICAgICAgICAgICB0aGlzLmlkbGVEZWxlZ2F0ZSA9IG5ldyBMekRlbGVnYXRlKCB0aGlzLCAic2VuZE1vdXNlUG9zaXRpb24iICk7CisgICAgICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIDxtZXRob2QgbmFtZT0icGFzdGVDb250ZW50Ij4KKyAgICAgICAgICAgICAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInBhc3RlQ29udGVudCA6OiAiKTsKKyAgICAgICAgICAgICAgICA8L21ldGhvZD4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmtleWRvd24iIHJlZmVyZW5jZT0ibHouS2V5cyIgYXJncz0iayI+CisgICAgICAgICAgICAgICAgCTwhW0NEQVRBWworCSAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNNb3VzZU92ZXJBY3RpdmUpIHsKKwkgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib25rZXlkb3duICIsayk7CisJICAgICAgICAgICAgICAgICAgICAgICAgCisJICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRPYmplY3QgPSBuZXcgT2JqZWN0KCk7CisJICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiYWN0aW9uIl0gPSAib25rZXlkb3duIjsKKwkgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJrIl0gPSBrOworCSAgICAgICAgICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBkb3dua2V5cyA9IGx6LktleXMuZG93bktleXNBcnJheTsKKwkgICAgICAgICAgICAgICAgICAgICAgICAKKwkgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZG93bmtleXMgIixkb3dua2V5cyxkb3dua2V5cy5sZW5ndGgpOworCQkJCQorCSAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzV2luZG93cykgeworCSAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIAkJCQkJCQlpZiAoZG93bmtleXMubGVuZ3RoPT0yICYmIGRvd25rZXlzWzBdPT0xNikgeworICAgIAkJCQkJCQkJaWYgKGsgPT0gMTg3KSB7CisgICAgCQkJCQkJCQkJdE9iamVjdFsiayJdID0gLTE7CisgICAgCQkgICAgICAgICAgICAgICAgICAgICAgICAJdE9iamVjdFsiYyJdID0gIioiOworICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrID09IDE5MSkgeworICAgIAkJCQkJCQkJCXRPYmplY3RbImsiXSA9IC0xOworICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgCXRPYmplY3RbImMiXSA9ICInIjsKKyAgICAJCSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoayA9PSAxODkpIHsKKyAgICAJCQkJCQkJCQl0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAJCSAgICAgICAgICAgICAgICAgICAgICAgIAl0T2JqZWN0WyJjIl0gPSAiXyI7CisgICAgCQkgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGsgPT0gMjIxKSB7CisgICAgCQkJCQkJCQkJdE9iamVjdFsiayJdID0gLTE7CisgICAgCQkgICAgICAgICAgICAgICAgICAgICAgICAJdE9iamVjdFsiYyJdID0gImAiOworICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrID09IDIxOSkgeworICAgIAkJCQkJCQkJCXRPYmplY3RbImsiXSA9IC0xOworICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgCXRPYmplY3RbImMiXSA9ICI/IjsKKyAgICAJCSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoayA9PSAyMjYpIHsKKyAgICAJCQkJCQkJCQl0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAJCSAgICAgICAgICAgICAgICAgICAgICAgIAl0T2JqZWN0WyJjIl0gPSAiPiI7CisgICAgCQkgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGsgPT0gMjIwKSB7CisgICAgCQkJCQkJCQkJdE9iamVjdFsiayJdID0gLTE7CisgICAgCQkgICAgICAgICAgICAgICAgICAgICAgICAJdE9iamVjdFsiYyJdID0gIsKwIjsKKyAgICAJCSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoayA9PSAxODYpIHsKKyAgICAJCQkJCQkJCQl0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAJCSAgICAgICAgICAgICAgICAgICAgICAgIAl0T2JqZWN0WyJjIl0gPSAiw5wiOworICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrID09IDIyMikgeworICAgIAkJCQkJCQkJCXRPYmplY3RbImsiXSA9IC0xOworICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgCXRPYmplY3RbImMiXSA9ICLDhCI7CisgICAgCQkgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGsgPT0gMTkyKSB7CisgICAgCQkJCQkJCQkJdE9iamVjdFsiayJdID0gLTE7CisgICAgCQkgICAgICAgICAgICAgICAgICAgICAgICAJdE9iamVjdFsiYyJdID0gIsOWIjsKKyAgICAJCSAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAJCSAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgCQkJCQkJCX0gZWxzZSBpZiAoZG93bmtleXMubGVuZ3RoPT0yICYmIGRvd25rZXlzWzBdPT0xOCkgeworICAgIAkJCQkJCQkJCisgICAgCQkJCQkJCQlpZiAoayA9PSA4MSkgeworICAgIAkJCQkJCQkJCXRPYmplY3RbImsiXSA9IC0xOworICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgCXRPYmplY3RbImMiXSA9ICJAIjsKKyAgICAJCQkJCQkJCX0gZWxzZSBpZiAoayA9PSAyMjYpIHsKKyAgICAJCQkJCQkJCQl0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAJCSAgICAgICAgICAgICAgICAgICAgICAgIAl0T2JqZWN0WyJjIl0gPSAifCI7CisgICAgCQkJCQkJCQl9CisgICAgCQkJCQkJCQkKKyAgICAJCQkJCQkJfSBlbHNlIHsKKyAgICAJCQkJCQkJCQorICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPT0gMTg3KSB7CisgICAgCQkgICAgICAgICAgICAgICAgICAgICAgICAJdE9iamVjdFsiayJdID0gLTE7CisgICAgCQkgICAgICAgICAgICAgICAgICAgICAgICAJdE9iamVjdFsiYyJdID0gIisiOworICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrID09IDE5MSkgeworICAgIAkJCQkJCQkJCXRPYmplY3RbImsiXSA9IC0xOworICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgCXRPYmplY3RbImMiXSA9ICIjIjsKKyAgICAJCSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoayA9PSAxODkpIHsKKyAgICAJCQkJCQkJCQl0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAJCSAgICAgICAgICAgICAgICAgICAgICAgIAl0T2JqZWN0WyJjIl0gPSAiLSI7CisgICAgCQkgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGsgPT0gMjIxKSB7CisgICAgCQkJCQkJCQkJdE9iamVjdFsiayJdID0gLTE7CisgICAgCQkgICAgICAgICAgICAgICAgICAgICAgICAJdE9iamVjdFsiYyJdID0gImAiOworICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrID09IDIxOSkgeworICAgIAkJCQkJCQkJCXRPYmplY3RbImsiXSA9IC0xOworICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgCXRPYmplY3RbImMiXSA9ICLDnyI7CisgICAgCQkgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGsgPT0gMjI2KSB7CisgICAgCQkJCQkJCQkJdE9iamVjdFsiayJdID0gLTE7CisgICAgCQkgICAgICAgICAgICAgICAgICAgICAgICAJdE9iamVjdFsiYyJdID0gIjwiOworICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrID09IDIyMCkgeworICAgIAkJCQkJCQkJCXRPYmplY3RbImsiXSA9IC0xOworICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgCXRPYmplY3RbImMiXSA9ICJeIjsKKyAgICAJCSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoayA9PSAxODYpIHsKKyAgICAJCQkJCQkJCQl0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAJCSAgICAgICAgICAgICAgICAgICAgICAgIAl0T2JqZWN0WyJjIl0gPSAiw7wiOworICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrID09IDIyMikgeworICAgIAkJCQkJCQkJCXRPYmplY3RbImsiXSA9IC0xOworICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgCXRPYmplY3RbImMiXSA9ICLDpCI7CisgICAgCQkgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGsgPT0gMTkyKSB7CisgICAgCQkJCQkJCQkJdE9iamVjdFsiayJdID0gLTE7CisgICAgCQkgICAgICAgICAgICAgICAgICAgICAgICAJdE9iamVjdFsiYyJdID0gIsO2IjsKKyAgICAJCSAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAJCSAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIAkJCQkJCQl9CisJCQkJCQkJCisJICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzTWFjKSB7CisJICAgICAgICAgICAgICAgICAgICAgICAgCQorCSAgICAgICAgICAgICAgICAgICAgICAgIAlpZiAoZG93bmtleXMubGVuZ3RoPT0yICYmIGRvd25rZXlzWzBdPT0xNikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPT0gMjIxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiayJdID0gLTE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiYyJdID0gIioiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrID09IDIyMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImsiXSA9IC0xOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImMiXSA9ICInIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoayA9PSAxOTEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJjIl0gPSAiXyI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGsgPT0gMjI1KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiayJdID0gLTE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiYyJdID0gImAiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrID09IDE4OSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImsiXSA9IC0xOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImMiXSA9ICI/IjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoayA9PSAxOTIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJjIl0gPSAiPiI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGsgPT0gMTc2KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiayJdID0gLTE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiYyJdID0gIsKwIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoayA9PSAyMTkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJjIl0gPSAiw5wiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrID09IDIyMikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImsiXSA9IC0xOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImMiXSA9ICLDhCI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGsgPT0gMTg2KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiayJdID0gLTE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiYyJdID0gIsOWIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZG93bmtleXMubGVuZ3RoPT0yICYmIGRvd25rZXlzWzBdPT0xOCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9PSA1MCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImsiXSA9IC0xOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImMiXSA9ICJAIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoayA9PSA1NSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImsiXSA9IC0xOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImMiXSA9ICJ8IjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9PSAyMjEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJjIl0gPSAiKyI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGsgPT0gMjIwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiayJdID0gLTE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiYyJdID0gIiMiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrID09IDE5MSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImsiXSA9IC0xOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImMiXSA9ICItIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoayA9PSAyMjUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJjIl0gPSAiYCI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGsgPT0gMTg5KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiayJdID0gLTE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiYyJdID0gIsOfIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoayA9PSAxOTIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJjIl0gPSAiPCI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGsgPT0gMTc2KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiayJdID0gLTE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiYyJdID0gIl4iOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrID09IDIxOSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImsiXSA9IC0xOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImMiXSA9ICLDvCI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGsgPT0gMjIyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiayJdID0gLTE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiYyJdID0gIsOkIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoayA9PSAxODYpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJjIl0gPSAiw7YiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAgICAgICAgICAgICAJCisJICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzTGludXgpIHsKKwkgICAgICAgICAgICAgICAgICAgICAgICAJCisJICAgICAgICAgICAgICAgICAgICAgICAgCWlmIChkb3dua2V5cy5sZW5ndGg9PTIgJiYgZG93bmtleXNbMF09PTE2KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9PSAxODcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJjIl0gPSAiKiI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGsgPT0gNTEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJjIl0gPSAiJyI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGsgPT0gMTg5KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiayJdID0gLTE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiYyJdID0gIl8iOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrID09IDIyMikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImsiXSA9IC0xOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImMiXSA9ICJgIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoayA9PSAyMjMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJjIl0gPSAiPyI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGsgPT0gMTg4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiayJdID0gLTE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiYyJdID0gIj4iOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrID09IDE3NikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImsiXSA9IC0xOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImMiXSA9ICLCsCI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGsgPT0gMjUyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiayJdID0gLTE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiYyJdID0gIsOcIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoayA9PSAyMjgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJjIl0gPSAiw4QiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrID09IDI0NikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImsiXSA9IC0xOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImMiXSA9ICLDliI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGRvd25rZXlzLmxlbmd0aD09MiAmJiBkb3dua2V5c1swXT09MTgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPT0gNTApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJjIl0gPSAiQCI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGsgPT0gNTUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJjIl0gPSAifCI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPT0gMTg3KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiayJdID0gLTE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiYyJdID0gIisiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrID09IDUxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiayJdID0gLTE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiYyJdID0gIiMiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrID09IDE4OSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImsiXSA9IC0xOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImMiXSA9ICItIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoayA9PSAyMjIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJjIl0gPSAiYCI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGsgPT0gMjIzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiayJdID0gLTE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiYyJdID0gIsOfIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoayA9PSAxODgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJjIl0gPSAiPCI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGsgPT0gMTc2KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiayJdID0gLTE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiYyJdID0gIl4iOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrID09IDI0NikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImsiXSA9IC0xOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImMiXSA9ICLDvCI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGsgPT0gMjI4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiayJdID0gLTE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiYyJdID0gIsOkIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoayA9PSAyNDYpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJjIl0gPSAiw7YiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgICAgICAgICAgICAgICAJCisJICAgICAgICAgICAgICAgICAgICAgICAgfQorCQkJCQkJCQorCQkJCQkJCWlmIChsei5LZXlzLmRvd25LZXlzQXJyYXkubGVuZ3RoID4gMSkgeworCQkJCQkJCQlmb3IgKHZhciBpPTA7aTxsei5LZXlzLmRvd25LZXlzQXJyYXkubGVuZ3RoO2krKykgeworCQkJCQkJCQkJaWYgKGx6LktleXMuZG93bktleXNBcnJheVtpXSA9PSAxNyB8fCBsei5LZXlzLmRvd25LZXlzQXJyYXlbaV0gPT0gJzE3JykgeworCQkJCQkJCQkJCWx6LktleXMuZG93bktleXNBcnJheSA9IG5ldyBBcnJheSgpOworCQkJCQkJCQkJCWJyZWFrOworCQkJCQkJCQkJfQorCQkJCQkJCQl9CisJCQkJCQkJfQorCQkJCQkJCQorCSAgICAgICAgICAgICAgICAgICAgICAgIAorCQkJCQkJCQorCQkJCQkJCWlmIChrID09IDE4IHx8IGsgPT0gMTcpIHsKKwkJCQkJCQkJcmV0dXJuOworCQkJCQkJCX0KKwkgICAgICAgICAgICAgICAgICAgICAgICAKKwkgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbmRSZW1vdGVDdXJzb3JFdmVudC50T2JqZWN0ID0gdE9iamVjdDsKKwkgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FudmFzLmlzQWxsb3dlZFRvUmVtb3RlQ29udHJvbCB8fCBjYW52YXMuaXNtb2RlcmF0b3IpIHsKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZW5kUmVtb3RlQ3Vyc29yRXZlbnQuZG9DYWxsKCk7CisJICAgICAgICAgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICAgICAgICAgIAorCSAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBdXT4KKyAgICAgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25rZXl1cCIgcmVmZXJlbmNlPSJsei5LZXlzIiBhcmdzPSJrIj4KKyAgICAgICAgICAgICAgICAJPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc01vdXNlT3ZlckFjdGl2ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbmtleXVwICIsayk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRPYmplY3QgPSBuZXcgT2JqZWN0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiYWN0aW9uIl0gPSAib25rZXl1cCI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiayJdID0gazsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXIgZG93bmtleXMgPSBsei5LZXlzLmRvd25LZXlzQXJyYXk7CisgICAgCQkJCSAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNXaW5kb3dzKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCQorICAgIAkJCQkJICAgICAgICBpZiAoZG93bmtleXMubGVuZ3RoPT0yICYmIGRvd25rZXlzWzBdPT0xNikgeworICAgIAkJCQkJCQkJaWYgKGsgPT0gMTg3KSB7CisgICAgCQkJCQkJCQkJdE9iamVjdFsiayJdID0gLTE7CisgICAgCQkgICAgICAgICAgICAgICAgICAgICAgICAJdE9iamVjdFsiYyJdID0gIioiOworICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrID09IDE5MSkgeworICAgIAkJCQkJCQkJCXRPYmplY3RbImsiXSA9IC0xOworICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgCXRPYmplY3RbImMiXSA9ICInIjsKKyAgICAJCSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoayA9PSAxODkpIHsKKyAgICAJCQkJCQkJCQl0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAJCSAgICAgICAgICAgICAgICAgICAgICAgIAl0T2JqZWN0WyJjIl0gPSAiXyI7CisgICAgCQkgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGsgPT0gMjIxKSB7CisgICAgCQkJCQkJCQkJdE9iamVjdFsiayJdID0gLTE7CisgICAgCQkgICAgICAgICAgICAgICAgICAgICAgICAJdE9iamVjdFsiYyJdID0gImAiOworICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrID09IDIxOSkgeworICAgIAkJCQkJCQkJCXRPYmplY3RbImsiXSA9IC0xOworICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgCXRPYmplY3RbImMiXSA9ICI/IjsKKyAgICAJCSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoayA9PSAyMjYpIHsKKyAgICAJCQkJCQkJCQl0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAJCSAgICAgICAgICAgICAgICAgICAgICAgIAl0T2JqZWN0WyJjIl0gPSAiPiI7CisgICAgCQkgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGsgPT0gMjIwKSB7CisgICAgCQkJCQkJCQkJdE9iamVjdFsiayJdID0gLTE7CisgICAgCQkgICAgICAgICAgICAgICAgICAgICAgICAJdE9iamVjdFsiYyJdID0gIsKwIjsKKyAgICAJCSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoayA9PSAxODYpIHsKKyAgICAJCQkJCQkJCQl0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAJCSAgICAgICAgICAgICAgICAgICAgICAgIAl0T2JqZWN0WyJjIl0gPSAiw7wiOworICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrID09IDIyMikgeworICAgIAkJCQkJCQkJCXRPYmplY3RbImsiXSA9IC0xOworICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgCXRPYmplY3RbImMiXSA9ICLDpCI7CisgICAgCQkgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGsgPT0gMTkyKSB7CisgICAgCQkJCQkJCQkJdE9iamVjdFsiayJdID0gLTE7CisgICAgCQkgICAgICAgICAgICAgICAgICAgICAgICAJdE9iamVjdFsiYyJdID0gIsO2IjsKKyAgICAJCSAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAJCSAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgCQkJCQkJCX0gZWxzZSBpZiAoZG93bmtleXMubGVuZ3RoPT0yICYmIGRvd25rZXlzWzBdPT0xOCkgeworICAgIAkJCQkJCQkJCisgICAgCQkJCQkJCQlpZiAoayA9PSA4MSkgeworICAgIAkJCQkJCQkJCXRPYmplY3RbImsiXSA9IC0xOworICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgCXRPYmplY3RbImMiXSA9ICJAIjsKKyAgICAJCQkJCQkJCX0gZWxzZSBpZiAoayA9PSAyMjYpIHsKKyAgICAJCQkJCQkJCQl0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAJCSAgICAgICAgICAgICAgICAgICAgICAgIAl0T2JqZWN0WyJjIl0gPSAifCI7CisgICAgCQkJCQkJCQl9CisgICAgCQkJCQkJCQkKKyAgICAJCQkJCQkJfSBlbHNlIHsKKyAgICAJCQkJCQkJCQorICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGsgPT0gMTg3KSB7CisgICAgCQkgICAgICAgICAgICAgICAgICAgICAgICAJdE9iamVjdFsiayJdID0gLTE7CisgICAgCQkgICAgICAgICAgICAgICAgICAgICAgICAJdE9iamVjdFsiYyJdID0gIisiOworICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrID09IDE5MSkgeworICAgIAkJCQkJCQkJCXRPYmplY3RbImsiXSA9IC0xOworICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgCXRPYmplY3RbImMiXSA9ICIjIjsKKyAgICAJCSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoayA9PSAxODkpIHsKKyAgICAJCQkJCQkJCQl0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAJCSAgICAgICAgICAgICAgICAgICAgICAgIAl0T2JqZWN0WyJjIl0gPSAiLSI7CisgICAgCQkgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGsgPT0gMjIxKSB7CisgICAgCQkJCQkJCQkJdE9iamVjdFsiayJdID0gLTE7CisgICAgCQkgICAgICAgICAgICAgICAgICAgICAgICAJdE9iamVjdFsiYyJdID0gImAiOworICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrID09IDIxOSkgeworICAgIAkJCQkJCQkJCXRPYmplY3RbImsiXSA9IC0xOworICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgCXRPYmplY3RbImMiXSA9ICLDnyI7CisgICAgCQkgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGsgPT0gMjI2KSB7CisgICAgCQkJCQkJCQkJdE9iamVjdFsiayJdID0gLTE7CisgICAgCQkgICAgICAgICAgICAgICAgICAgICAgICAJdE9iamVjdFsiYyJdID0gIjwiOworICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrID09IDIyMCkgeworICAgIAkJCQkJCQkJCXRPYmplY3RbImsiXSA9IC0xOworICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgCXRPYmplY3RbImMiXSA9ICJeIjsKKyAgICAJCSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoayA9PSAxODYpIHsKKyAgICAJCQkJCQkJCQl0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAJCSAgICAgICAgICAgICAgICAgICAgICAgIAl0T2JqZWN0WyJjIl0gPSAiw5wiOworICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrID09IDIyMikgeworICAgIAkJCQkJCQkJCXRPYmplY3RbImsiXSA9IC0xOworICAgIAkJICAgICAgICAgICAgICAgICAgICAgICAgCXRPYmplY3RbImMiXSA9ICLDhCI7CisgICAgCQkgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGsgPT0gMTkyKSB7CisgICAgCQkJCQkJCQkJdE9iamVjdFsiayJdID0gLTE7CisgICAgCQkgICAgICAgICAgICAgICAgICAgICAgICAJdE9iamVjdFsiYyJdID0gIsOWIjsKKyAgICAJCSAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAJCSAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIAkJCQkJCQl9CisgICAgCQkJCQkJCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmlzTWFjKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAJCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChkb3dua2V5cy5sZW5ndGg9PTIgJiYgZG93bmtleXNbMF09PTE2KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9PSAyMjEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJjIl0gPSAiKiI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGsgPT0gMjIwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiayJdID0gLTE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiYyJdID0gIiciOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrID09IDE5MSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImsiXSA9IC0xOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImMiXSA9ICJfIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoayA9PSAyMjUpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJjIl0gPSAiYCI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGsgPT0gMTg5KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiayJdID0gLTE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiYyJdID0gIj8iOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrID09IDE5MikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImsiXSA9IC0xOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImMiXSA9ICI+IjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoayA9PSAxNzYpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJjIl0gPSAiwrAiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrID09IDIxOSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImsiXSA9IC0xOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImMiXSA9ICLDnCI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGsgPT0gMjIyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiayJdID0gLTE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiYyJdID0gIsOEIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoayA9PSAxODYpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJjIl0gPSAiw5YiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChkb3dua2V5cy5sZW5ndGg9PTIgJiYgZG93bmtleXNbMF09PTE4KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID09IDUwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiayJdID0gLTE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiYyJdID0gIkAiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrID09IDU1KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiayJdID0gLTE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiYyJdID0gInwiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID09IDIyMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImsiXSA9IC0xOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImMiXSA9ICIrIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoayA9PSAyMjApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJjIl0gPSAiIyI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGsgPT0gMTkxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiayJdID0gLTE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiYyJdID0gIi0iOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrID09IDIyNSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImsiXSA9IC0xOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImMiXSA9ICJgIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoayA9PSAxODkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJjIl0gPSAiw58iOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrID09IDE5MikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImsiXSA9IC0xOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImMiXSA9ICI8IjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoayA9PSAxNzYpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJjIl0gPSAiXiI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGsgPT0gMjE5KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiayJdID0gLTE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiYyJdID0gIsO8IjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoayA9PSAyMjIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJjIl0gPSAiw6QiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrID09IDE4NikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImsiXSA9IC0xOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImMiXSA9ICLDtiI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMuaXNMaW51eCkgeworCSAgICAgICAgICAgICAgICAgICAgICAgIAkKKwkgICAgICAgICAgICAgICAgICAgICAgICAJaWYgKGRvd25rZXlzLmxlbmd0aD09MiAmJiBkb3dua2V5c1swXT09MTYpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrID09IDE4NykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImsiXSA9IC0xOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImMiXSA9ICIqIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoayA9PSA1MSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImsiXSA9IC0xOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImMiXSA9ICInIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoayA9PSAxODkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJjIl0gPSAiXyI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGsgPT0gMjIyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiayJdID0gLTE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiYyJdID0gImAiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrID09IDIyMykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImsiXSA9IC0xOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImMiXSA9ICI/IjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoayA9PSAxODgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJjIl0gPSAiPiI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGsgPT0gMTc2KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiayJdID0gLTE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiYyJdID0gIsKwIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoayA9PSAyNTIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJjIl0gPSAiw5wiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrID09IDIyOCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImsiXSA9IC0xOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImMiXSA9ICLDhCI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGsgPT0gMjQ2KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiayJdID0gLTE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiYyJdID0gIsOWIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoZG93bmtleXMubGVuZ3RoPT0yICYmIGRvd25rZXlzWzBdPT0xOCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9PSA1MCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImsiXSA9IC0xOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImMiXSA9ICJAIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoayA9PSA1NSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImsiXSA9IC0xOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImMiXSA9ICJ8IjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA9PSAxODcpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJjIl0gPSAiKyI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGsgPT0gNTEpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJjIl0gPSAiIyI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGsgPT0gMTg5KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiayJdID0gLTE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiYyJdID0gIi0iOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrID09IDIyMikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImsiXSA9IC0xOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImMiXSA9ICJgIjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoayA9PSAyMjMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJjIl0gPSAiw58iOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrID09IDE4OCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImsiXSA9IC0xOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImMiXSA9ICI8IjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoayA9PSAxNzYpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJjIl0gPSAiXiI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGsgPT0gMjQ2KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiayJdID0gLTE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsiYyJdID0gIsO8IjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoayA9PSAyMjgpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJrIl0gPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJjIl0gPSAiw6QiOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChrID09IDI0NikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImsiXSA9IC0xOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImMiXSA9ICLDtiI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorCSAgICAgICAgICAgICAgICAgICAgICAgIAkKKwkgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgCQkJCQkJCQorICAgIAkJCQkJCWlmIChrID09IDE4IHx8IGsgPT0gMTcpIHsKKyAgICAJCQkJCQkJcmV0dXJuOworICAgIAkJCQkJCX0KKyAgICAJCQkJCQkKKyAgICAJCQkJCQlpZiAobHouS2V5cy5kb3duS2V5c0FycmF5Lmxlbmd0aCA+IDEpIHsKKyAgICAJCQkJCQkJZm9yICh2YXIgaT0wO2k8bHouS2V5cy5kb3duS2V5c0FycmF5Lmxlbmd0aDtpKyspIHsKKyAgICAJCQkJCQkJCWlmIChsei5LZXlzLmRvd25LZXlzQXJyYXlbaV0gPT0gMTcgfHwgbHouS2V5cy5kb3duS2V5c0FycmF5W2ldID09ICcxNycpIHsKKyAgICAJCQkJCQkJCQlsei5LZXlzLmRvd25LZXlzQXJyYXkgPSBuZXcgQXJyYXkoKTsKKyAgICAJCQkJCQkJCQlicmVhazsKKyAgICAJCQkJCQkJCX0KKyAgICAJCQkJCQkJfQorICAgIAkJCQkJCX0KKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIAkJCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ0T2JqZWN0IDo6ICIsdE9iamVjdCx0aGlzLmlzV2luZG93cyx0aGlzLmlzTWFjKTsKKyAgICAJCQkJCQkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbmRSZW1vdGVDdXJzb3JFdmVudC50T2JqZWN0ID0gdE9iamVjdDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2FudmFzLmlzQWxsb3dlZFRvUmVtb3RlQ29udHJvbCB8fCBjYW52YXMuaXNtb2RlcmF0b3IpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZW5kUmVtb3RlQ3Vyc29yRXZlbnQuZG9DYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBdXT4KKyAgICAgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZW92ZXIiPgorICAgICAgICAgICAgICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbm1vdXNlb3V0ICIpOworICAgICAgICAgICAgICAgICAgICB0aGlzLmlzTW91c2VPdmVyQWN0aXZlID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgbHouVGltZXIuYWRkVGltZXIoIHRoaXMuaWRsZURlbGVnYXRlLCA1MDAgKTsKKyAgICAgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZW91dCI+CisgICAgICAgICAgICAgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9ubW91c2VvdXQgIik7CisgICAgICAgICAgICAgICAgICAgIHRoaXMuaXNNb3VzZU92ZXJBY3RpdmUgPSBmYWxzZTsKKyAgICAgICAgICAgICAgICAgICAgbHouVGltZXIucmVtb3ZlVGltZXIoIHRoaXMuaWRsZURlbGVnYXRlKTsKKyAgICAgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgPG1ldGhvZCBuYW1lPSJzZW5kTW91c2VQb3NpdGlvbiIgYXJncz0icmVmT2JqIj4KKyAgICAgICAgICAgICAgICAgICAgPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgeCA9IHRoaXMuZ2V0TW91c2UoIngiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciB5ID0gdGhpcy5nZXRNb3VzZSgieSIpOworICAgICAgICAgICAgICAgICAgICAgICAgeCAvPSAocGFyZW50LnBhcmVudC5wYXJlbnQuX3pvb21iYXIuX3pvb20uaW5pdGlhbE51bWJlci8xMDApOworICAgICAgICAgICAgICAgICAgICAgICAgeSAvPSAocGFyZW50LnBhcmVudC5wYXJlbnQuX3pvb21iYXIuX3pvb20uaW5pdGlhbE51bWJlci8xMDApOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdE9iamVjdCA9IG5ldyBPYmplY3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImFjdGlvbiJdID0gIm1vdXNlUG9zIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsieCJdID0gTWF0aC5yb3VuZCh4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbInkiXSA9IE1hdGgucm91bmQoeSk7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VuZFJlbW90ZUN1cnNvckV2ZW50LnRPYmplY3QgPSB0T2JqZWN0OworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbnZhcy5pc0FsbG93ZWRUb1JlbW90ZUNvbnRyb2wgfHwgY2FudmFzLmlzbW9kZXJhdG9yKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2VuZE1vdXNlUG9zaXRpb24gIix4LHkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0T2JqZWN0WyJ4Il0gIT0gdGhpcy5sYXN0TW91c2VYICYmIHRPYmplY3RbInkiXSAhPSB0aGlzLmxhc3RNb3VzZVkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMubGFzdE1vdXNlWCA9IHRPYmplY3RbIngiXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5sYXN0TW91c2VZID0gdE9iamVjdFsieSJdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbmRSZW1vdGVDdXJzb3JFdmVudC5kb0NhbGwoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzTW91c2VPdmVyQWN0aXZlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbHouVGltZXIuYWRkVGltZXIoIHRoaXMuaWRsZURlbGVnYXRlLCA1MDAgKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgXV0+CisgICAgICAgICAgICAgICAgPC9tZXRob2Q+CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZWRvd24iIGFyZ3M9InJlZk9iaiI+CisgICAgICAgICAgICAgICAgICAgIDwhW0NEQVRBWworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHggPSB0aGlzLmdldE1vdXNlKCJ4Iik7CisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgeSA9IHRoaXMuZ2V0TW91c2UoInkiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCIxIHgseSA6OiAiLHgseSk7CisgICAgICAgICAgICAgICAgICAgICAgICB4IC89IChwYXJlbnQucGFyZW50LnBhcmVudC5fem9vbWJhci5fem9vbS5pbml0aWFsTnVtYmVyLzEwMCk7CisgICAgICAgICAgICAgICAgICAgICAgICB5IC89IChwYXJlbnQucGFyZW50LnBhcmVudC5fem9vbWJhci5fem9vbS5pbml0aWFsTnVtYmVyLzEwMCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiMiB4LHkgOjogIix4LHkpOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICB2YXIgdE9iamVjdCA9IG5ldyBPYmplY3QoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbImFjdGlvbiJdID0gIm9ubW91c2Vkb3duIjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbIngiXSA9IE1hdGgucm91bmQoeCk7CisgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJ5Il0gPSBNYXRoLnJvdW5kKHkpOworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnNlbmRSZW1vdGVDdXJzb3JFdmVudC50T2JqZWN0ID0gdE9iamVjdDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjYW52YXMuaXNBbGxvd2VkVG9SZW1vdGVDb250cm9sIHx8IGNhbnZhcy5pc21vZGVyYXRvcikgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VuZFJlbW90ZUN1cnNvckV2ZW50LmRvQ2FsbCgpOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBdXT4KKyAgICAgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25tb3VzZXVwIiBhcmdzPSJyZWZPYmoiPgorICAgICAgICAgICAgICAgICAgICA8IVtDREFUQVsKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhciB4ID0gdGhpcy5nZXRNb3VzZSgieCIpOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHkgPSB0aGlzLmdldE1vdXNlKCJ5Iik7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiMSB4LHkgOjogIix4LHkpOworICAgICAgICAgICAgICAgICAgICAgICAgeCAvPSAocGFyZW50LnBhcmVudC5wYXJlbnQuX3pvb21iYXIuX3pvb20uaW5pdGlhbE51bWJlci8xMDApOworICAgICAgICAgICAgICAgICAgICAgICAgeSAvPSAocGFyZW50LnBhcmVudC5wYXJlbnQuX3pvb21iYXIuX3pvb20uaW5pdGlhbE51bWJlci8xMDApOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIjIgeCx5IDo6ICIseCx5KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHRPYmplY3QgPSBuZXcgT2JqZWN0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICB0T2JqZWN0WyJhY3Rpb24iXSA9ICJvbm1vdXNldXAiOworICAgICAgICAgICAgICAgICAgICAgICAgdE9iamVjdFsieCJdID0gTWF0aC5yb3VuZCh4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRPYmplY3RbInkiXSA9IE1hdGgucm91bmQoeSk7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuc2VuZFJlbW90ZUN1cnNvckV2ZW50LnRPYmplY3QgPSB0T2JqZWN0OworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGNhbnZhcy5pc0FsbG93ZWRUb1JlbW90ZUNvbnRyb2wgfHwgY2FudmFzLmlzbW9kZXJhdG9yKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZW5kUmVtb3RlQ3Vyc29yRXZlbnQuZG9DYWxsKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIF1dPgorICAgICAgICAgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICA8IS0tCisgICAgICAgICAgICAgICAgcHVibGljIHN5bmNocm9uaXplZCBCb29sZWFuIHNlbmRSZW1vdGVDdXJzb3JFdmVudChTdHJpbmcgc3RyZWFtaWQsIE1hcCBtZXNzYWdlT2JqKQorICAgICAgICAgICAgICAgICAtLT4KKyAgICAgICAgICAgICAgICA8bmV0UmVtb3RlQ2FsbEhpYiBuYW1lPSJzZW5kUmVtb3RlQ3Vyc29yRXZlbnQiICBzaG93TG9hZGluZz0iZmFsc2UiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iIGZ1bmNuYW1lPSJzZW5kUmVtb3RlQ3Vyc29yRXZlbnQiICA+CisgICAgICAgICAgICAgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9InRPYmplY3QiIHZhbHVlPSJudWxsIiAvPgorICAgICAgICAgICAgICAgICAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LmluaXRPYmplY3Quc3RyZWFtaWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnRPYmplY3Q7PC9tZXRob2Q+PC9uZXRwYXJhbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPgorICAgICAgICAgICAgICAgICAgICAgICAgLy9UaGUgb25SZXN1bHQtSGFuZGxlciB3aWxsIGJlIGNhbGxlZCBiZSB0aGUgcnRtcGNvbm5lY3Rpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIC8vaWYoICRkZWJ1ZyApIERlYnVnLndyaXRlKCIrKysrKysrKysrKysrKysrKyBzdG9wUmVjb3JkaW5nU2hvdzogIix2YWx1ZSk7ICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgLy9wYXJlbnQuY2xvc2UoKTsKKyAgICAgICAgICAgICAgICAgICAgPC9oYW5kbGVyPiAgCisgICAgICAgICAgICAgICAgPC9uZXRSZW1vdGVDYWxsSGliPiAKKyAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICA8L3ZpZGVvT2JqZWN0UGxheVNjcmVlblNoYXJlPgorICAgICAgICAgICAgCisgICAgICAgIDwvdmlldz4KKyAgICAgICAgCisgICAgICAgIDxvbV92c2Nyb2xsYmFyIC8+CisgICAgICAgIDxvbV9oc2Nyb2xsYmFyIC8+CisgICAgICAgIAorICAgIDwvdmlldz4gICAgCisgICAgCisgICAgPHZpZXcgbmFtZT0iX2luZm9Cb3giIHg9IjAiIHZpc2liaWxpdHk9ImhpZGRlbiIgPgorICAgIAkKKyAgICAJPHZpZXcgbmFtZT0iaW5uZXJCb3giIGhlaWdodD0iJHsgcGFyZW50LnBhcmVudC5oZWlnaHQgfSIgCisgICAgCQkgIHZpc2libGU9IiR7ICgoY2FudmFzLmlzbW9kZXJhdG9yKSA/IHRydWUgOiAoKGNhbnZhcy5pc0FsbG93ZWRUb1JlbW90ZUNvbnRyb2wpID8gdHJ1ZSA6IGZhbHNlICkpIH0iPgorICAgIAkJCisgICAgICAgICAgICA8bGFiZWxFeHBsb3JlckJveCBuYW1lPSJfaW5mb0JveCIgbGFiZWxpZD0iMTA4OCIgCisgICAgICAgICAgICAgICAgICBkb2NraW5nPSJ0cnVlIiByZXNpemVhYmxlPSJmYWxzZSIgY2xvc2FibGU9InRydWUiIHZhbGlnbj0ibWlkZGxlIgorICAgICAgICAgICAgICAgICAgICB4PSIwIiBoZWlnaHQ9IjQwMCIgd2lkdGg9IjE3MCI+CisgICAgICAgICAgICAgICAgPHN3aXRjaD4KKyAgICAgICAgICAgICAgICAgICAgPHdoZW4gcHJvcGVydHk9IiRhczMiPgorICAgICAgICAgICAgICAgICAgICAgICAgPHBhc3N0aHJvdWdoPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydCBmbGFzaC5uZXQuU2hhcmVkT2JqZWN0OworICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXNzdGhyb3VnaD4KKyAgICAgICAgICAgICAgICAgICAgPC93aGVuPgorICAgICAgICAgICAgICAgIDwvc3dpdGNoPgorICAgICAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+CisgICAgICAgICAgICAgICAgCTwhW0NEQVRBWworICAgICAgICAgICAgICAgIAl0aGlzLmJyaW5nVG9Gcm9udCgpOworICAgICAgICAgICAgICAgICAgICB2YXIgdDpTaGFyZWRPYmplY3QgPSBTaGFyZWRPYmplY3QuZ2V0TG9jYWwoJ3VzZXJkYXRhJyk7CisgICAgICAgICAgICAgICAgICAgIHZhciBnID0gdC5kYXRhOworICAgICAgICAgICAgICAgICAgICBpZiAoZ1siaW1hZ2UiXSE9bnVsbCkgeworICAgICAgICAgICAgICAgICAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImdbaW1hZ2VdW2Rvbm90YXNrYWdhaW5yZGNdICIsZ1siaW1hZ2UiXVsiZG9ub3Rhc2thZ2FpbnJkYyJdKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJnW2ltYWdlXSAiLGdbImltYWdlIl0pOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdbImltYWdlIl1bImRvbm90YXNrYWdhaW5yZGMiXSAhPSBudWxsICYmIGdbImltYWdlIl1bImRvbm90YXNrYWdhaW5yZGMiXSA9PSB0cnVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIkRPIENMT1NFIElUIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlKCk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgXV0+CisgICAgICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgPHZpZXcgeD0iNCIgcmVzb3VyY2U9Indhcm5pbmdfaWNvbl9yc2MiIHk9IjI2IiAvPgorICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgPHZpZXcgeT0iMjIiIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoIC0gMzUgfSIgaGVpZ2h0PSIxMzAiIHg9IjMwIiA+CisgICAgICAgICAgICAgICAgICAgIDxsYWJlbFRleHQgZm9udHNpemU9IjEwIiBmb250c3R5bGU9ImJvbGQiIGxhYmVsaWQ9IjEwODYiCisgICAgICAgICAgICAgICAgICAgICAgICBtdWx0aWxpbmU9InRydWUiIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoIC0gMTYgfSIgc2VsZWN0YWJsZT0idHJ1ZSIgLz4KKyAgICAgICAgICAgICAgICA8L3ZpZXc+CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgPHZpZXcgeT0iNzYiIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoIC0gNyB9IiBoZWlnaHQ9IjEzMCIgeD0iNCIgPgorICAgICAgICAgICAgICAgICAgICA8bGFiZWxUZXh0IGZvbnRzaXplPSIxMCIgbGFiZWxpZD0iMTA4NSIKKyAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpbGluZT0idHJ1ZSIgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGggLSAxNiB9IiBzZWxlY3RhYmxlPSJ0cnVlIiAvPgorICAgICAgICAgICAgICAgIDwvdmlldz4KKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICA8bGFiZWxDaGVja2JveCB4PSI0IiB5PSIkb25jZXsgcGFyZW50LmhlaWdodC00MiB9IiBmb250c2l6ZT0iMTEiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPSJfZG9Ob3RTaG93QWdhaW4iIGxhYmVsaWQ9IjExMjMiID4KKyAgICAgICAgICAgICAgICAJPGF0dHJpYnV0ZSBuYW1lPSJjaGVja2JveElzaW5pdGVkIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iLz4KKyAgICAgICAgICAgICAgICAJPHN3aXRjaD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx3aGVuIHByb3BlcnR5PSIkYXMzIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cGFzc3Rocm91Z2g+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydCBmbGFzaC5uZXQuU2hhcmVkT2JqZWN0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFzc3Rocm91Z2g+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3doZW4+CisgICAgICAgICAgICAgICAgICAgIDwvc3dpdGNoPgorICAgICAgICAgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgICAgICAgICAgICAgICAgICAJPCFbQ0RBVEFbCisgICAgICAgICAgICAgICAgICAgIAkgICAgdmFyIHQ6U2hhcmVkT2JqZWN0ID0gU2hhcmVkT2JqZWN0LmdldExvY2FsKCd1c2VyZGF0YScpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBnID0gdC5kYXRhOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnWyJpbWFnZSJdIT1udWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJnW2ltYWdlXSIsZ1siaW1hZ2UiXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnWyJpbWFnZSJdWyJkb25vdGFza2FnYWlucmRjIl0gIT0gbnVsbCAmJiBnWyJpbWFnZSJdWyJkb25vdGFza2FnYWlucmRjIl0gPT0gdHJ1ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImRvbm90YXNrYWdhaW5yZGMgIixnWyJpbWFnZSJdWyJkb25vdGFza2FnYWlucmRjIl0pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRWYWx1ZSh0cnVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNoZWNrYm94SXNpbml0ZWQgPSB0cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgXV0+CisgICAgICAgICAgICAgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib252YWx1ZSIgYXJncz0idiI+CisgICAgICAgICAgICAgICAgICAgIAlpZiAoIXRoaXMuY2hlY2tib3hJc2luaXRlZCkgeworICAgICAgICAgICAgICAgICAgICAJCXJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgCX0KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbnNlbGVjdCAiLHYpOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHQ6U2hhcmVkT2JqZWN0ID0gU2hhcmVkT2JqZWN0LmdldExvY2FsKCd1c2VyZGF0YScpOworICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGcgPSB0LmRhdGE7CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZ1siaW1hZ2UiXT09bnVsbCkgZ1siaW1hZ2UiXT1uZXcgQXJyYXkoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdbImltYWdlIl1bImRvbm90YXNrYWdhaW5yZGMiXT12OworICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZ1tpbWFnZV1bZG9ub3Rhc2thZ2FpbnJkY10gIixnWyJpbWFnZSJdWyJkb25vdGFza2FnYWlucmRjIl0pOworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImdbaW1hZ2VdICIsZ1siaW1hZ2UiXSk7CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIHQuZmx1c2goKTsKKyAgICAgICAgICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICAgICAgICAgIDwvbGFiZWxDaGVja2JveD4gICAgCisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgPHNpbXBsZUxhYmVsQnV0dG9uIGxhYmVsaWQ9IjY0MiIgd2lkdGg9IjEwMCIgeD0iJG9uY2V7IHBhcmVudC53aWR0aC0xMDUgfSIgCisgICAgICAgICAgICAgICAgICAgICAgIHk9IiRvbmNleyBwYXJlbnQuaGVpZ2h0LTI0IH0iIG9uY2xpY2s9InRoaXMucGFyZW50LmNsb3NlKCk7IiAvPgorICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIDwvbGFiZWxFeHBsb3JlckJveD4gIAorICAgICAgICAgICAgCisgICAgICAgIDwvdmlldz4KKyAgICAgICAgCisgICAgPC92aWV3PiAgCisKKyAgICA8dmlldyBuYW1lPSJfem9vbWJhciIgeD0iMjAiIHZpc2liaWxpdHk9ImhpZGRlbiIgeT0iJHsgcGFyZW50LmhlaWdodC0yNiB9Ij4KKyAgICAgICAgCisgICAgICAgIDxtZXRob2QgbmFtZT0ic2V0RGVmYXVsdFpvb20iPgorICAgICAgICAgICAgaWYgKHBhcmVudC5pbml0T2JqZWN0LlZXaWR0aCA+IChwYXJlbnQuX3N1YmNvbnRlbnQud2lkdGgtMTYpICkgeworICAgICAgICAgICAgICAgIHZhciBuZXdab29tID0gTWF0aC5yb3VuZCgoIChwYXJlbnQuX3N1YmNvbnRlbnQud2lkdGgtMTYpIC9wYXJlbnQuaW5pdE9iamVjdC5WV2lkdGgpKjEwMCk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm5ld1pvb20gIixuZXdab29tKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB0aGlzLl96b29tLnNldFNsaWRlclZhbHVlKG5ld1pvb20pOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHRoaXMuX3pvb20ub25pbml0aWFsTnVtYmVyLnNlbmRFdmVudChuZXdab29tKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgdGhpcy5zZXREZWZhdWx0SGVpZ2h0KCk7CisgICAgICAgIDwvbWV0aG9kPgorICAgICAgICAKKyAgICAgICAgPG1ldGhvZCBuYW1lPSJzZXREZWZhdWx0SGVpZ2h0Ij4KKyAgICAgICAgICAgIGlmIChwYXJlbnQuaW5pdE9iamVjdC5WSGVpZ2h0ID4gKHBhcmVudC5fc3ViY29udGVudC5oZWlnaHQtMTYpKSB7CisgICAgICAgICAgICAgICAgdmFyIG5ld1pvb20gPSBNYXRoLnJvdW5kKCggKHBhcmVudC5fc3ViY29udGVudC5oZWlnaHQtMTYpIC9wYXJlbnQuaW5pdE9iamVjdC5WSGVpZ2h0KSoxMDApOworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJuZXdab29tICIsbmV3Wm9vbSk7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgdGhpcy5fem9vbS5zZXRTbGlkZXJWYWx1ZShuZXdab29tKTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB0aGlzLl96b29tLm9uaW5pdGlhbE51bWJlci5zZW5kRXZlbnQobmV3Wm9vbSk7CisgICAgICAgICAgICB9CisgICAgICAgIDwvbWV0aG9kPgorICAgICAgICAKKyAgICAgICAgPHNpbXBsZWxheW91dCBheGlzPSJ4IiBzcGFjaW5nPSIyIiAvPgorICAgICAgICAKKyAgICAgICAgPGxhYmVsVGV4dCBsYWJlbGlkPSI4NTIiIHJlc2l6ZT0idHJ1ZSIgeT0iNCIgLz4KKyAgICAgICAgCisgICAgICAgIDxjaGFuZ2VXaWR0aFNsaWRlciBuYW1lPSJfem9vbSIgaW5pdGlhbE51bWJlckluaXQ9IjEwMCIgeD0iMTAiCisgICAgICAgICAgICAgIGJveFBvc2l0aW9uPSJ1cCIgaW5pdGlhbE51bWJlcj0iMTAwIiBtYXhpbXVtPSIyMDAiPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0aWFsTnVtYmVyIiBhcmdzPSJpIj4KKyAgICAgICAgICAgICAgICBpZiAocGFyZW50LnBhcmVudC5pc1N0YXJ0ZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIHZhciBuZXdXaWR0aCA9IHBhcmVudC5wYXJlbnQuaW5pdE9iamVjdC5WV2lkdGggKiAoaS8xMDApOworICAgICAgICAgICAgICAgICAgICB2YXIgbmV3SGVpZ2h0ID0gcGFyZW50LnBhcmVudC5pbml0T2JqZWN0LlZIZWlnaHQgKiAoaS8xMDApOworICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgcGFyZW50LnBhcmVudC5fc3ViY29udGVudC5fY29udGVudC5fdmlkZW8uc2V0QXR0cmlidXRlKCJ3aWR0aCIsbmV3V2lkdGgpOworICAgICAgICAgICAgICAgICAgICBwYXJlbnQucGFyZW50Ll9zdWJjb250ZW50Ll9jb250ZW50Ll92aWRlby5zZXRBdHRyaWJ1dGUoImhlaWdodCIsbmV3SGVpZ2h0KTsKKyAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8L2NoYW5nZVdpZHRoU2xpZGVyPgorICAgICAgICAKKyAgICAgICAgPGxhYmVsVGV4dCB4PSI2NCIgeT0iNCIgbGFiZWxpZD0iMjUzIiAvPiAgIAorICAgICAgICAKKyAgICAgICAgPGxhYmVsVGV4dCB4PSI4NCIgeT0iNCIgbGFiZWxpZD0iMTA5NiIgLz4gIAorICAgICAgICAKKyAgICAgICAgPCEtLQorICAgICAgICA8cmVzZXRDb21ib2JveCBuYW1lPSJsYW5ndWFnZXMiIHdpZHRoPSI2MCIgeT0iNiIgeD0iMjAwIiA+CisgICAgICAgIAk8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorICAgICAgICAJCTwhW0NEQVRBWworICAgICAgICAgICAgCQkvL2dldEJyb3dzZXJMYW5nCisgICAgICAgICAgICAJCQorICAgICAgICAJCSAgICB2YXIgdGhpc0l0ZW0gPSB0aGlzOworICAgICAgICAJCQorICAgICAgICAgICAgCQlmdW5jdGlvbiBjYWxsYmFjayhyZXR1cm5WYWx1ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIiBjYWxsYmFjayAiLHJldHVyblZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJldHVyblZhbHVlLmluZGV4T2YoImRlIikgPj0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgCXRoaXNJdGVtLnNlbGVjdEl0ZW1BdCgxKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAocmV0dXJuVmFsdWUuaW5kZXhPZigiZGUiKSA+PSAwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAJdGhpc0l0ZW0uc2VsZWN0SXRlbUF0KDApOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIAl0aGlzSXRlbS5zZWxlY3RJdGVtQXQoMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAJLy9TaG93IEVycm9yIEJveCB0aGF0IHdlIGN1cnJlbnRseSBoYXZlIG5vIAorICAgICAgICAgICAgICAgICAgICAgICAgCS8vS2V5Ym9hcmQgU2NoZW1lIGF2YWlsYWJsZSBmb3IgdGhhdCBjb3VudHJ5CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgbHouQnJvd3Nlci4gY2FsbEpTKCJnZXRCcm93c2VyTGFuZyIsY2FsbGJhY2spOworICAgICAgICAgICAgCQkKKyAgICAgICAgICAgIAkJCisgICAgICAgICAgICAJCS8vdmFyIHQgPSBsei5Ccm93c2VyOworICAgICAgICAgICAgCQkvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJsei5Ccm93c2VyIDo6ICIsdCk7CisgICAgICAgICAgICAJCQorICAgICAgICAgICAgCQkvL3RoaXMuc2VsZWN0SXRlbUF0KDApOworICAgICAgICAJCV1dPgorICAgICAgICAJPC9oYW5kbGVyPgorICAgICAgICAJPGxhYmVsZFRleHRMaXN0SXRlbSBsYWJlbGlkPSIxMDk0IiB2YWx1ZT0iZW5fVVMiIC8+CisgICAgICAgICAgICA8bGFiZWxkVGV4dExpc3RJdGVtIGxhYmVsaWQ9IjEwOTUiIHZhbHVlPSJkZV9ERSIgLz4KKyAgICAgICAgPC9yZXNldENvbWJvYm94PiAKKyAgICAgICAgIC0tPgorICAgIDwvdmlldz4KKyAgICAKKyAgICA8c2ltcGxlTGFiZWxCdXR0b24gbmFtZT0iX3BhdXNlIiB2aXNpYmlsaXR5PSJoaWRkZW4iCisgICAgICAgIGxhYmVsaWQ9Ijg1NCIgd2lkdGg9IjEwMCIgeD0iJHsgcGFyZW50LndpZHRoLTIwNCB9IiAKKyAgICAgICAgeT0iJHsgcGFyZW50LmhlaWdodC0yMiB9IiBvbmNsaWNrPSJ0aGlzLnBhcmVudC5kb01pbmltaXplKCk7IiAvPgorICAgIAorICAgIDxzaW1wbGVMYWJlbEJ1dHRvbiBuYW1lPSJfY2xvc2UiIHZpc2liaWxpdHk9ImhpZGRlbiIKKyAgICAgICAgbGFiZWxpZD0iODUxIiB3aWR0aD0iMTAwIiB4PSIkeyBwYXJlbnQud2lkdGgtMTAyIH0iIAorICAgICAgICB5PSIkeyBwYXJlbnQuaGVpZ2h0LTIyIH0iIG9uY2xpY2s9InRoaXMucGFyZW50LmRvQ2xvc2UoKTsiIC8+CisgICAgICAgIAorICAgIDxhbmltYXRvcmdyb3VwIG5hbWU9Il9zaG93U2NyZWVuU2hhcmluZyIgc3RhcnRlZD0iZmFsc2UiIAorICAgICAgICAgICAgICAgICAgIHByb2Nlc3M9InNpbXVsdGFuZW91cyIgZHVyYXRpb249IjEwMDAiID4KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25zdG9wIj4KKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbnN0b3AgdGhpcy5feS50byAiLHRoaXMuX3kudG8pOworICAgICAgICAgICAgaWYgKCFwYXJlbnQuaXNTdGFydGVkKSB7CisgICAgICAgICAgICAgICAgcGFyZW50Ll9pbml0VGV4dC5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgCXBhcmVudC5faW5mb0JveC5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7CisgICAgICAgICAgICAgICAgcGFyZW50Ll96b29tYmFyLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKyAgICAgICAgICAgICAgICBwYXJlbnQuX3pvb21iYXIuc2V0RGVmYXVsdFpvb20oKTsKKyAgICAgICAgICAgICAgICBwYXJlbnQuX2Nsb3NlLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKyAgICAgICAgICAgICAgICBwYXJlbnQuX3BhdXNlLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgPC9oYW5kbGVyPgorICAgICAgICA8YW5pbWF0b3IgbmFtZT0iX3kiIGF0dHJpYnV0ZT0ieSIgdG89IjAiIC8+CisgICAgICAgIDxhbmltYXRvciBuYW1lPSJfeCIgYXR0cmlidXRlPSJ4IiB0bz0iMCIgLz4KKyAgICAgICAgPGFuaW1hdG9yIG5hbWU9Il9oZWlnaHQiIGF0dHJpYnV0ZT0iaGVpZ2h0IiAvPgorICAgICAgICA8YW5pbWF0b3IgbmFtZT0iX3dpZHRoIiBhdHRyaWJ1dGU9IndpZHRoIiAvPgorICAgIDwvYW5pbWF0b3Jncm91cD4gICAgICAgIAorCis8L2NsYXNzPgorCis8L2xpYnJhcnk+CmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL3NjcmVlbnNoYXJpbmcvdmlkZW9PYmplY3RQbGF5U2NyZWVuU2hhcmUubHp4IGIvV2ViQ29udGVudC9zd2YxMC9zY3JlZW5zaGFyaW5nL3ZpZGVvT2JqZWN0UGxheVNjcmVlblNoYXJlLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZGRkYmM2Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC9zY3JlZW5zaGFyaW5nL3ZpZGVvT2JqZWN0UGxheVNjcmVlblNoYXJlLmx6eApAQCAtMCwwICsxLDIzOCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8bGlicmFyeT4KKworCis8IS0tLQorCUNvbnRhaW5zIG5vIG1pY3JvcGhvbmUgb3IgY2FtZXJhIE9iamVjdCwgdGhpcyB2aWV3IGNhbiBvbmx5IAorCXN1YnNjcmliZSB0byBhIHZpZGVvIG9yIGxpdmUtc3RyZWFtCisKKyAtLT4KKwkKKzxjbGFzcyBuYW1lPSJ0ZW1wVGV4dEJveCIgZXh0ZW5kcz0idmlldyIgd2lkdGg9IjEyMCIgaGVpZ2h0PSI0MCIgYmdjb2xvcj0iMHgwMDAwMDAiPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0iaXNTdG9wcGVkIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iLz4KKwkKKwk8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorCQlwYXJlbnQuc2VuZEN1cnNvclZpc2libGUoZmFsc2UpOworICAgICAgICBsei5UaW1lci5hZGRUaW1lciggbmV3IEx6RGVsZWdhdGUoIHRoaXMsICJyZW1vdmVUaGlzIiApLCAzMDAwICk7CisgICAgPC9oYW5kbGVyPgorICAgIAorICAgIDxtZXRob2QgbmFtZT0icmVtb3ZlVGhpcyIgYXJncz0icmVmT2JqIj4KKyAgICAgICAgdGhpcy5fb3V0LnNldEF0dHJpYnV0ZSgnc3RhcnRlZCcsIHRydWUpOworICAgIDwvbWV0aG9kPgorICAgIAorICAgIDxhbmltYXRvciBuYW1lPSJfb3V0IiBhdHRyaWJ1dGU9Im9wYWNpdHkiIHRvPSIwIiAKKyAgICAJCSAgZHVyYXRpb249Ijc1MCIgc3RhcnRlZD0iZmFsc2UiPgorICAgIAk8aGFuZGxlciBuYW1lPSJvbnN0b3AiPgorICAgIAkJaWYgKHBhcmVudC5pc1N0b3BwZWQpIHsKKyAgICAJCQlyZXR1cm47CisgICAgCQl9CisgICAgCQlwYXJlbnQuaXNTdG9wcGVkID0gdHJ1ZTsKKyAgICAJCXBhcmVudC5fYmcuX2luLnN0b3AoKTsKKyAgICAJCXBhcmVudC5fYmcuX291dC5zdG9wKCk7CisgICAgCQlwYXJlbnQuZGVzdHJveSgpOworICAgIAkJcGFyZW50LnBhcmVudC5zZW5kQ3Vyc29yVmlzaWJsZSh0cnVlKTsKKyAgICAJPC9oYW5kbGVyPgorICAgIDwvYW5pbWF0b3I+CisgICAgCisJPHZpZXcgbmFtZT0iX2JnIiBiZ2NvbG9yPSIweDdmZmYwMCIgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGggfSIKKwkJICBoZWlnaHQ9IiRvbmNleyBwYXJlbnQuaGVpZ2h0IH0iPgorCQk8aGFuZGxlciBuYW1lPSJvbmluaXQiPgorCQkJdGhpcy5faW4uc2V0QXR0cmlidXRlKCdzdGFydGVkJywgdHJ1ZSk7CisJCTwvaGFuZGxlcj4KKwkJCisJCTxhbmltYXRvciBuYW1lPSJfb3V0IiBhdHRyaWJ1dGU9Im9wYWNpdHkiIHRvPSIwLjMiIAorICAgICAgICAgICAgICBkdXJhdGlvbj0iMjUwIiBzdGFydGVkPSJmYWxzZSI+CisgICAgICAgICAgICA8aGFuZGxlciBuYW1lPSJvbnN0b3AiPgorICAgICAgICAgICAgCWlmIChwYXJlbnQucGFyZW50LmlzU3RvcHBlZCkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHBhcmVudC5faW4uc2V0QXR0cmlidXRlKCdzdGFydGVkJywgdHJ1ZSk7CisgICAgICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIDwvYW5pbWF0b3I+CisgICAgICAgIAorICAgICAgICA8YW5pbWF0b3IgbmFtZT0iX2luIiBhdHRyaWJ1dGU9Im9wYWNpdHkiIHRvPSIxIiAKKyAgICAgICAgICAgICAgZHVyYXRpb249IjI1MCIgc3RhcnRlZD0iZmFsc2UiPgorICAgICAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25zdG9wIj4KKyAgICAgICAgICAgIAlpZiAocGFyZW50LnBhcmVudC5pc1N0b3BwZWQpIHsKKyAgICAgICAgICAgIAkJcmV0dXJuOworICAgICAgICAgICAgCX0KKyAgICAgICAgICAgICAgICBwYXJlbnQuX291dC5zZXRBdHRyaWJ1dGUoJ3N0YXJ0ZWQnLCB0cnVlKTsKKyAgICAgICAgICAgIDwvaGFuZGxlcj4KKyAgICAgICAgPC9hbmltYXRvcj4KKwkJCisJPC92aWV3PgorCQorCTx2aWV3IG5hbWU9Il9iZzIiIGJnY29sb3I9IjB4N2ZmZjAwIiB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCB9IiBoZWlnaHQ9IjE4Ij4KKwkJPGxhYmVsVGV4dCB4PSIyIiB5PSIxIiBsYWJlbGlkPSIxMTI0IiAvPgorCTwvdmlldz4KKwkKKwk8aW5wdXR0ZXh0IG5hbWU9Il90ZXh0IiB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aCAtIDQgfSIgaGVpZ2h0PSIyMCIgeT0iMTgiCisJCQkgICBiZ2NvbG9yPSIweEZGRkZGRiIgeD0iMiIgPgorCQk8aGFuZGxlciBuYW1lPSJvbnRleHQiIGFyZ3M9InR4dCI+CisJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53YXJuKCJvbnRleHQgIix0eHQpOworCQkJcGFyZW50LnBhcmVudC5kb0Jyb2FkY2FzdFRleHQodHh0KTsKKwkJCXBhcmVudC5fb3V0LnNldEF0dHJpYnV0ZSgnc3RhcnRlZCcsIHRydWUpOworCQk8L2hhbmRsZXI+CisJPC9pbnB1dHRleHQ+CisJCis8L2NsYXNzPgkKKworPGNsYXNzIG5hbWU9ImNvcGllZFRleHRQb3B1cCIgZXh0ZW5kcz0ibGFiZWxFeHBsb3JlckJveCIgbGFiZWxpZD0iMTEyMSIKKyAgICBkb2NraW5nPSJ0cnVlIiByZXNpemVhYmxlPSJ0cnVlIiBjbG9zYWJsZT0idHJ1ZSIgeT0iMTAwIgorICAgIHg9IiRvbmNleyBwYXJlbnQud2lkdGgvMiAtIHRoaXMud2lkdGgvMiB9IiBoZWlnaHQ9IjE2MCIgd2lkdGg9IjMyNCI+CisKKyAgICA8YXR0cmlidXRlIG5hbWU9ImVycm9yIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciIC8+CisgICAgCisgICAgPHZpZXcgbmFtZT0iX2JveCIgeT0iMjQiIHdpZHRoPSIkeyBwYXJlbnQud2lkdGggLSAyMCB9IiAKKyAgICAJICBoZWlnaHQ9IiR7IHBhcmVudC5oZWlnaHQgLSA1MCB9IiB4PSIxMCIgY2xpcD0idHJ1ZSI+CisgICAgICAgIDx0ZXh0IGZvbnRzaXplPSIxMCIgZm9udHN0eWxlPSJib2xkIiB0ZXh0PSIkeyBwYXJlbnQucGFyZW50LmVycm9yIH0iCisgICAgICAgICAgICBtdWx0aWxpbmU9InRydWUiIHdpZHRoPSIkeyBwYXJlbnQud2lkdGggLSAxNiB9IiBzZWxlY3RhYmxlPSJ0cnVlIiAvPgorICAgIDwvdmlldz4KKyAgICAKKyAgICA8c2ltcGxlTGFiZWxCdXR0b24gbGFiZWxpZD0iNjQyIiB3aWR0aD0iMTAwIiB4PSIkeyBwYXJlbnQud2lkdGgtMTA1IH0iIAorICAgICAgICAgICB5PSIkeyBwYXJlbnQuaGVpZ2h0LTI0IH0iIG9uY2xpY2s9InRoaXMucGFyZW50LmNsb3NlKCk7IiAvPgorCis8L2NsYXNzPgorCQkJCis8Y2xhc3MgbmFtZT0ic2NyZWVuU2hhcmVDdXJzb3JPYmplY3QiIGV4dGVuZHM9InZpZXciIHJlc291cmNlPSJtZW51cG9pbnRlcl9yc2MiPgorCQorCTxhdHRyaWJ1dGUgbmFtZT0icmVmT2JqIiB2YWx1ZT0ibnVsbCIgLz4KKwkKKyAgICA8Y29udGV4dG1lbnU+CisgICAgICAgICAgICAKKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25tZW51b3BlbiI+CisgICAgICAgICAgICBwYXJlbnQucmVmT2JqLmN1cnJlbnRYID0gcGFyZW50LnJlZk9iai5nZXRNb3VzZSgieCIpOworICAgICAgICAgICAgcGFyZW50LnJlZk9iai5jdXJyZW50WSA9IHBhcmVudC5yZWZPYmouZ2V0TW91c2UoInkiKTsKKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbm1lbnVvcGVuIHgseSAiLHBhcmVudC5jdXJyZW50WCxwYXJlbnQuY3VycmVudFkpOworICAgICAgICA8L2hhbmRsZXI+CisgICAgICAgIAorICAgICAgICA8Y29udGV4dG1lbnVpdGVtIGNhcHRpb249IiRvbmNleyBjYW52YXMuZ2V0TGFiZWxOYW1lKDExMTkpIH0iIAorICAgICAgICAgICAgICAgICAgICAgICAgIG9uc2VsZWN0PSJwYXJlbnQucGFyZW50LnJlZk9iai5pbnNlcnRUZXh0KCkiIC8+CisgICAgICAgIAorICAgICAgICA8Y29udGV4dG1lbnVpdGVtIGNhcHRpb249IiRvbmNleyBjYW52YXMuZ2V0TGFiZWxOYW1lKDExMjApIH0iIAorICAgICAgICAgICAgICAgICAgICAgICAgIG9uc2VsZWN0PSJwYXJlbnQucGFyZW50LnJlZk9iai5jb3B5RnJvbVJlbW90ZSgpIiAvPgorICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICA8Y29udGV4dG1lbnVpdGVtIGNhcHRpb249IiRvbmNleyBjYW52YXMuZ2V0TGFiZWxOYW1lKDExMjIpIH0iIAorICAgICAgICAgICAgICAgICAgICAgICAgIG9uc2VsZWN0PSJwYXJlbnQucGFyZW50LnJlZk9iai5zaG93RnJvbVJlbW90ZSgpIiAvPgorICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgIDwvY29udGV4dG1lbnU+Cis8L2NsYXNzPgkJCQorCQkJCQkgICAKKzxjbGFzcyBuYW1lPSJ2aWRlb09iamVjdFBsYXlTY3JlZW5TaGFyZSIgZXh0ZW5kcz0idmlldyI+CisJCisgICAgPGJhc2VWaWRlb1N0cmVhbSBuYW1lPSJfdmlkZW9zdHJlYW0iIGJnY29sb3I9ImJsYWNrIiAKKyAgICAgICAgICB3aWR0aD0iJHtwYXJlbnQud2lkdGh9IiBoZWlnaHQ9IiR7cGFyZW50LmhlaWdodH0iID4KKyAgICAJCisgICAgCTxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudFgiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisgICAgCTxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudFkiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+CisgICAgCQorICAgIAk8bWV0aG9kIG5hbWU9Imluc2VydFRleHQiPgorICAgIAkJaWYgKGNhbnZhcy5pc0FsbG93ZWRUb1JlbW90ZUNvbnRyb2wgfHwgY2FudmFzLmlzbW9kZXJhdG9yKSB7CisgICAgICAgIAkJbmV3IGx6LnRlbXBUZXh0Qm94KHRoaXMseworICAgICAgICAgICAgICAgIAkJICAgeDp0aGlzLmN1cnJlbnRYLAorICAgICAgICAgICAgICAgIAkJICAgeTp0aGlzLmN1cnJlbnRZCisgICAgICAgICAgICAgICAgCQl9KTsKKyAgICAJCX0gZWxzZSB7CisgICAgCQkJbmV3IGx6LmxhYmVsZXJyb3JQb3B1cFNXRjEwKGNhbnZhcyx7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JsYWJlbGlkOjExMjUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTsKKyAgICAJCX0KKyAgICAJPC9tZXRob2Q+CisgICAgCQorICAgIAk8bWV0aG9kIG5hbWU9InNlbmRDdXJzb3JWaXNpYmxlIiBhcmdzPSJib29sIj4KKyAgICAJCWlmIChib29sKSB7CisgICAgCQkJcGFyZW50LnBhcmVudC5wYXJlbnQucGFyZW50LmN1cnJlbnRDdXJzb3JPYmplY3Quc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOworICAgIAkJfSBlbHNlIHsKKyAgICAJCQlwYXJlbnQucGFyZW50LnBhcmVudC5wYXJlbnQuY3VycmVudEN1cnNvck9iamVjdC5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsKKyAgICAJCX0KKyAgICAJPC9tZXRob2Q+CisgICAgCQorICAgIAk8bWV0aG9kIG5hbWU9ImRvQnJvYWRjYXN0VGV4dCIgYXJncz0idHh0Ij4KKyAgICAJCWlmIChjYW52YXMuaXNBbGxvd2VkVG9SZW1vdGVDb250cm9sIHx8IGNhbnZhcy5pc21vZGVyYXRvcikgeworICAgICAgICAJCXZhciB0T2JqZWN0ID0gbmV3IE9iamVjdCgpOworICAgICAgICAgICAgICAgIHRPYmplY3RbImFjdGlvbiJdID0gInBhc3RlIjsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICB0T2JqZWN0WyJwYXN0ZSJdID0gdHh0OworICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgIHBhcmVudC5zZW5kUmVtb3RlQ3Vyc29yRXZlbnQudE9iamVjdCA9IHRPYmplY3Q7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud2FybigiZG9Ccm9hZGNhc3RUZXh0IDo6ICIsdHh0KTsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICBwYXJlbnQuc2VuZFJlbW90ZUN1cnNvckV2ZW50LmRvQ2FsbCgpOworICAgIAkJfSBlbHNlIHsKKyAgICAJCQluZXcgbHoubGFiZWxlcnJvclBvcHVwU1dGMTAoY2FudmFzLHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcmxhYmVsaWQ6MTEyNQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgIAkJfQorICAgIAk8L21ldGhvZD4KKyAgICAJCisgICAgCTxtZXRob2QgbmFtZT0iY29weUZyb21SZW1vdGUiPgorICAgIAkJaWYgKGNhbnZhcy5pc0FsbG93ZWRUb1JlbW90ZUNvbnRyb2wgfHwgY2FudmFzLmlzbW9kZXJhdG9yKSB7CisgICAgICAgIAkJdmFyIHRPYmplY3QgPSBuZXcgT2JqZWN0KCk7CisgICAgICAgICAgICAgICAgdE9iamVjdFsiYWN0aW9uIl0gPSAiY29weSI7CisgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgdE9iamVjdFsiY2xpZW50SWQiXSA9IGNhbnZhcy5zdHJlYW1pZDsKKyAgICAgICAgICAgICAgICAKKyAgICAgICAgCQlwYXJlbnQuc2VuZFJlbW90ZUN1cnNvckV2ZW50LnRPYmplY3QgPSB0T2JqZWN0OworICAgICAgICAgICAgICAgIHBhcmVudC5zZW5kUmVtb3RlQ3Vyc29yRXZlbnQuZG9DYWxsKCk7CisgICAgCQl9IGVsc2UgeworICAgIAkJCW5ldyBsei5sYWJlbGVycm9yUG9wdXBTV0YxMChjYW52YXMseworICAgICAgICAgICAgICAgIAkJCSAgIGVycm9ybGFiZWxpZDoxMTI1CisgICAgICAgICAgICAgICAgCQkJfSk7CisgICAgCQl9CisgICAgCTwvbWV0aG9kPgorICAgIAkKKyAgICAJPG1ldGhvZCBuYW1lPSJzaG93RnJvbVJlbW90ZSI+CisgICAgICAgICAgICB2YXIgdE9iamVjdCA9IG5ldyBPYmplY3QoKTsKKyAgICAgICAgICAgIHRPYmplY3RbImFjdGlvbiJdID0gInNob3ciOworICAgICAgICAgICAgCisgICAgICAgICAgICB0T2JqZWN0WyJjbGllbnRJZCJdID0gY2FudmFzLnN0cmVhbWlkOworICAgICAgICAgICAgCisgICAgICAgICAgICBwYXJlbnQuc2VuZFJlbW90ZUN1cnNvckV2ZW50LnRPYmplY3QgPSB0T2JqZWN0OworICAgICAgICAgICAgcGFyZW50LnNlbmRSZW1vdGVDdXJzb3JFdmVudC5kb0NhbGwoKTsKKyAgICAgICAgPC9tZXRob2Q+CisgICAgCQorICAgIAk8Y29udGV4dG1lbnU+CisgICAgCQkKKyAgICAJCTxoYW5kbGVyIG5hbWU9Im9ubWVudW9wZW4iPgorICAgIAkJCXBhcmVudC5jdXJyZW50WCA9IHBhcmVudC5nZXRNb3VzZSgieCIpOworICAgIAkJCXBhcmVudC5jdXJyZW50WSA9IHBhcmVudC5nZXRNb3VzZSgieSIpOworICAgIAkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJvbm1lbnVvcGVuIHgseSAiLHBhcmVudC5jdXJyZW50WCxwYXJlbnQuY3VycmVudFkpOworICAgIAkJPC9oYW5kbGVyPgorICAgICAgICAgICAgCisgICAgICAgICAgICA8Y29udGV4dG1lbnVpdGVtIGNhcHRpb249IiRvbmNleyBjYW52YXMuZ2V0TGFiZWxOYW1lKDExMTkpIH0iIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbnNlbGVjdD0icGFyZW50LnBhcmVudC5pbnNlcnRUZXh0KCkiIC8+CisgICAgICAgICAgICAKKyAgICAgICAgICAgIDxjb250ZXh0bWVudWl0ZW0gY2FwdGlvbj0iJG9uY2V7IGNhbnZhcy5nZXRMYWJlbE5hbWUoMTEyMCkgfSIgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uc2VsZWN0PSJwYXJlbnQucGFyZW50LmNvcHlGcm9tUmVtb3RlKCkiIC8+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgPGNvbnRleHRtZW51aXRlbSBjYXB0aW9uPSIkb25jZXsgY2FudmFzLmdldExhYmVsTmFtZSgxMTIyKSB9IiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25zZWxlY3Q9InBhcmVudC5wYXJlbnQuc2hvd0Zyb21SZW1vdGUoKSIgLz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgIDwvY29udGV4dG1lbnU+CisgICAgICAgIAorICAgIDwvYmFzZVZpZGVvU3RyZWFtPgorICAgICAgICAKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3dmMTAvdGVzdFZpZGVvT2JqZWN0Lmx6eCBiL1dlYkNvbnRlbnQvc3dmMTAvdGVzdFZpZGVvT2JqZWN0Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NWNjMzBkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC90ZXN0VmlkZW9PYmplY3QubHp4CkBAIC0wLDAgKzEsMjYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/Pg0KKzwhLS0NCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgIA0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAgICAJICANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAgdW5kZXIgdGhlIExpY2Vuc2UuDQorICANCistLT4NCis8bGlicmFyeT4NCisNCisgICAgPGNsYXNzIG5hbWU9InRlc3RWaWRlb09iamVjdCIgZXh0ZW5kcz0idmlldyIgYmdjb2xvcj0iMHgwMDAwMDAiIHdpZHRoPSIxMzIiIGhlaWdodD0iMTIwIiBvbm1vdXNlZG93bj0iZHJhZ2dlci5zZXRBdHRyaWJ1dGUoJ2FwcGxpZWQnLCB0cnVlKSIgb25tb3VzZXVwPSJkcmFnZ2VyLnNldEF0dHJpYnV0ZSgnYXBwbGllZCcsIGZhbHNlKSI+DQorICAgICAgICA8ZHJhZ3N0YXRlIG5hbWU9ImRyYWdnZXIiLz4+DQorICAgIDwvY2xhc3M+DQorPC9saWJyYXJ5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3dmMTAvdmlkZW8vYmFzZVZpZGVvT2JqZWN0Lmx6eCBiL1dlYkNvbnRlbnQvc3dmMTAvdmlkZW8vYmFzZVZpZGVvT2JqZWN0Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNTNmMThlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC92aWRlby9iYXNlVmlkZW9PYmplY3QubHp4CkBAIC0wLDAgKzEsNjcxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4NCis8IS0tIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuIFNlZSB0aGUgTk9USUNFIGZpbGUgDQorCWRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZSB0byB5b3UgdW5kZXIgDQorCXRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgDQorCW9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gDQorCWluIHdyaXRpbmcsIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIA0KKwlBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucyB1bmRlciANCisJdGhlIExpY2Vuc2UuIC0tPg0KKzxsaWJyYXJ5Pg0KKw0KKw0KKwk8IS0tLSBCYXNlIGNvbnRhaW5lciBmb3IgYSBjbGllbnQsIGNhbiBiZSBlaXRoZXI6IGEgcmVtb3RlLXZpZGVvIChzdWJzY3JpYmluZy9wbGF5aW5nIGEgdmlkZW8pIG9yIGEgc2VsZi12aWRlbyAoYnJvYWRjYXN0aW5nIA0KKwkJYSBjYW0vbWljKSAtLT4NCisJPGNsYXNzIG5hbWU9ImJhc2VWaWRlb09iamVjdCIgZXh0ZW5kcz0idmlldyIgYmdjb2xvcj0iMHgwMDAwMDAiIHdpZHRoPSIxMjIiIGhlaWdodD0iMTAxIj4NCisNCisJCTxzd2l0Y2g+DQorCQkJPHdoZW4gcHJvcGVydHk9IiRhczMiPg0KKwkJCQk8cGFzc3Rocm91Z2g+DQorCQkJCQlpbXBvcnQgZmxhc2guZmlsdGVycy5Ecm9wU2hhZG93RmlsdGVyOw0KKwkJCQkJaW1wb3J0IGZsYXNoLm1lZGlhLioNCisJCQkJCWltcG9ydCBmbGFzaC5uZXQuU2hhcmVkT2JqZWN0Ow0KKwkJCQk8L3Bhc3N0aHJvdWdoPg0KKwkJCTwvd2hlbj4NCisJCTwvc3dpdGNoPg0KKw0KKwkJPCEtLS0gQGtleXdvcmRzIHByaXZhdGUgLS0+DQorCQk8YXR0cmlidXRlIG5hbWU9ImNoYXRwYXJ0bmVybmFtZSIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPg0KKwkJPCEtLS0gQGtleXdvcmRzIHByaXZhdGUgLS0+DQorCQk8YXR0cmlidXRlIG5hbWU9InNob3dVc2VyUHJvZmlsZVBpYyIgdHlwZT0iYm9vbGVhbiIgdmFsdWU9ImZhbHNlIiAvPg0KKw0KKwkJPCEtLS0gY29sb3Igb2YgdGhpcyB1c2VyLCB0aGlzIGlzIHRoZSBjb2xvciB0aGUgdXNlciB3aWxsIGFsc28gdXNlIGZvciBoaXMgY2hhdC1jb2xvciAtLT4NCisJCTxhdHRyaWJ1dGUgbmFtZT0idXNlcmNvbG9yIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPg0KKw0KKwkJPCEtLS0gcHVibGljU0lEIGlzIGEgaGFzaC12YWx1ZSB0byBpZGVudGlmeSBhIHVzZXIgLS0+DQorCQk8YXR0cmlidXRlIG5hbWU9InB1YmxpY1NJRCIgdmFsdWU9IiIgdHlwZT0ic3RyaW5nIiAvPg0KKw0KKwkJPCEtLS0gbWljTXV0ZWQgaW5kaWNhdGVzIGlmIHRoZSBtaWNyb3Bob25lIGlzIGN1cnJlbnRseSB0dXJuZWQgc291bmQgb3IgZ2FpbiB0byAwIC0tPg0KKwkJPGF0dHJpYnV0ZSBuYW1lPSJtaWNNdXRlZCIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPg0KKw0KKwkJPCEtLS0gQGtleXdvcmRzIHByaXZhdGUgLS0+DQorCQk8YXR0cmlidXRlIG5hbWU9ImlzcmVtb3RlIiB2YWx1ZT0idHJ1ZSIgdHlwZT0iYm9vbGVhbiIgLz4NCisNCisJCTwhLS0tIEBrZXl3b3JkcyBwcml2YXRlIC0tPg0KKwkJPGF0dHJpYnV0ZSBuYW1lPSJjbGllbnRWYXJzIiB2YWx1ZT0ibnVsbCIgLz4NCisNCisJCTwhLS0tIEBrZXl3b3JkcyBwcml2YXRlIC0tPg0KKwkJPGF0dHJpYnV0ZSBuYW1lPSJpc1Jlc2l6aW5nIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+DQorDQorCQk8IS0tLSBAa2V5d29yZHMgcHJpdmF0ZSAtLT4NCisJCTxhdHRyaWJ1dGUgbmFtZT0iaXNJbnRlcnZpZXciIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4NCisNCisJCTxhdHRyaWJ1dGUgbmFtZT0icmVzcGVjdFJhdGlvIiB2YWx1ZT0idHJ1ZSIgdHlwZT0iYm9vbGVhbiIgLz4NCisNCisJCTxhdHRyaWJ1dGUgbmFtZT0ibWluaW1pemVkIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+DQorDQorCQk8YXR0cmlidXRlIG5hbWU9ImhpZGVieUF1ZGlvT25seSIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPg0KKw0KKwkJPGF0dHJpYnV0ZSBuYW1lPSJjdXN0b20iIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4NCisNCisJCTxhdHRyaWJ1dGUgbmFtZT0iaW5pdEgiIHZhbHVlPSI0MCIgdHlwZT0ibnVtYmVyIiAvPg0KKwkJPGF0dHJpYnV0ZSBuYW1lPSJpbml0VyIgdmFsdWU9IjQwIiB0eXBlPSJudW1iZXIiIC8+DQorDQorCQk8YXR0cmlidXRlIG5hbWU9ImlzU2hvd01pY011dGUiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4NCisNCisJCTxhdHRyaWJ1dGUgbmFtZT0iaXNNdXRlZEJ5TW9kZXJhdG9yIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+DQorDQorCQk8YXR0cmlidXRlIG5hbWU9ImlzTWljcm9waG9uZXNSb29tIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+DQorDQorCQk8YXR0cmlidXRlIG5hbWU9Imxhc3RQb3NpdGl2ZVZvbHVtZSIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0iNTAiIC8+DQorDQorCQk8IS0tIEluaXRpYWwgc3RyZWFtIHJhdGlvOiB3aWR0aCAvIGhlaWdodCAtLT4NCisJCTxhdHRyaWJ1dGUgbmFtZT0iaW5pdFJhdGlvIiB0eXBlPSJudW1iZXIiIHZhbHVlPSJudWxsIiAvPg0KKwkJPGF0dHJpYnV0ZSBuYW1lPSJpbml0aWFsSGVpZ2h0IiB2YWx1ZT0iJG9uY2V7IHRoaXMuaGVpZ2h0IH0iIHR5cGU9Im51bWJlciIgLz4NCisNCisJCTxoYW5kbGVyIG5hbWU9Im9uaXNyZW1vdGUiIGFyZ3M9InIiPg0KKwkJCXRoaXMuaXNyZW1vdGUgPSByOw0KKwkJPC9oYW5kbGVyPg0KKw0KKwkJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4NCisgICAgICAgIDwhW0NEQVRBWw0KKyAgICAgICAgICAgIHRoaXMuY2xpZW50VmFycyA9IG5ldyBBcnJheSgpOw0KKyAgICAgICAgICAgIHRoaXMuY2xpZW50VmFyc1snVXNlciddPSdObyBVc2VyIENvbm5lY3RlZCc7DQorICAgICAgICAgICAgDQorICAgICAgICAgICAgaWYgKHRoaXMuaXNJbnRlcnZpZXcpIHsNCisgICAgICAgICAgICAJdGhpcy5fdG9vbGJhci5fbWluaW1pemUuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7DQorICAgICAgICAgICAgCXRoaXMuX3Jlc2l6ZXZpZXcuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7DQorICAgICAgICAgICAgCXRoaXMuX2lubmVyYm90dG9tLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOw0KKyAgICAgICAgICAgIAlyZXR1cm47DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIA0KKyAgICAgICAgICAgIGlmICh0aGlzLmN1c3RvbSkgew0KKyAgICAgICAgICAgICAgICB0aGlzLl90b29sYmFyLl9taW5pbWl6ZS5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsNCisgICAgICAgICAgICAgICAgdGhpcy5fcmVzaXpldmlldy5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsNCisgICAgICAgICAgICAgICAgdGhpcy5fdG9vbGJhci5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsNCisgICAgICAgICAgICAgICAgdGhpcy5fcmVzaXpldmlldy5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsNCisgICAgICAgICAgICAgICAgdGhpcy5fbG91ZG5lc3Muc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7DQorICAgICAgICAgICAgICAgIHRoaXMuX2lubmVydG9wLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOw0KKyAgICAgICAgICAgICAgICB0aGlzLl9pbm5lcmJvdHRvbS5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgdGhpcy5zZXRTaGFkb3coKTsNCisgICAgICAgICAgICANCisgICAgICAgICAgICBpZiAodGhpcy5wdWJsaWNTSUQgPT0gY2FudmFzLnB1YmxpY1NJRCkgew0KKyAgICAgICAgICAgICAgICB0aGlzLl90b29sYmFyLl9yZXN5bmMuX3RpcC5zZXRBdHRyaWJ1dGUoImxhYmVsaWQiLDYxMCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHRoaXMuX2dpdmVFeGNsdXNpdmVBdWRpb1ZpZXcuYnJpbmdUb0Zyb250KCk7DQorICAgICAgICAgICAgDQorICAgICAgICAgICAgdGhpcy5pc01pY3JvcGhvbmVzUm9vbSA9IGNhbnZhcy5jdXJyZW50Um9vbU9iamVjdC5zaG93TWljcm9waG9uZVN0YXR1czsNCisgICAgICAgICAgICBpZiAoY2FudmFzLmN1cnJlbnRSb29tT2JqZWN0LnNob3dNaWNyb3Bob25lU3RhdHVzKSB7DQorICAgICAgICAgICAgICAgIHRoaXMuX2lubmVydG9wLnNldEF0dHJpYnV0ZSgiYmdjb2xvciIsICIweEZGNjYwMCIpOw0KKyAgICAgICAgICAgICAgICB0aGlzLl9pbm5lcmJvdHRvbS5zZXRBdHRyaWJ1dGUoImJnY29sb3IiLCAiMHhGRjY2MDAiKTsNCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICB0aGlzLl9pbm5lcmJvdHRvbS5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCAiaGlkZGVuIik7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgXV0+DQorCQk8L2hhbmRsZXI+DQorDQorCQk8aGFuZGxlciBuYW1lPSJvbnkiPg0KKwkJPCFbQ0RBVEFbDQorCQkgICAgaWYgKHRoaXMuaXNJbnRlcnZpZXcgfHwgdGhpcy5jdXN0b20gfHwgY2FudmFzLmN1cnJlbnRSb29tT2JqZWN0LmhpZGVXaGl0ZWJvYXJkKSB7DQorICAgICAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgdmFyIGJvdW5kcyA9IHRoaXMuZ2V0Qm91bmRzKCk7DQorICAgICAgICAgICAgdmFyIHBhcmVudEJvdW5kcyA9IGNhbnZhcy5nZXRCb3VuZHMoKTsNCisgICAgICAgICAgICBpZiAoYm91bmRzLnkgPCAwKSB7DQorICAgICAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCd5JywwKTsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgaWYgKGJvdW5kcy55ID4gKHBhcmVudEJvdW5kcy5oZWlnaHQgLSBib3VuZHMuaGVpZ2h0KSkgeyAgICAgICAgICAgDQorICAgICAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCd5JywgcGFyZW50Qm91bmRzLmhlaWdodCAtIGJvdW5kcy5oZWlnaHQgKTsNCisgICAgICAgICAgICB9DQorICAgICAgICBdXT4NCisJCTwvaGFuZGxlcj4NCisNCisJCTxoYW5kbGVyIG5hbWU9Im9ueCI+DQorCQk8IVtDREFUQVsNCisgICAgICAgICAgICBpZiAodGhpcy5pc0ludGVydmlldyB8fCB0aGlzLmN1c3RvbSkgew0KKyAgICAgICAgICAgICAgICByZXR1cm47DQorICAgICAgICAgICAgfQkNCisJCQ0KKwkJCXZhciBib3VuZHMgPSB0aGlzLmdldEJvdW5kcygpOw0KKyAgICAgICAgICAgIHZhciBwYXJlbnRCb3VuZHMgPSBjYW52YXMuZ2V0Qm91bmRzKCk7DQorICAgICAgICAgICAgaWYgKGJvdW5kcy54IDwgMCkgew0KKyAgICAgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgneCcsMCk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIA0KKyAgICAgICAgICAgIGlmIChib3VuZHMueCA+IChwYXJlbnRCb3VuZHMud2lkdGggLSBib3VuZHMud2lkdGgpKSB7DQorICAgICAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCd4JywgcGFyZW50Qm91bmRzLndpZHRoIC0gYm91bmRzLndpZHRoICk7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgXV0+DQorCQk8L2hhbmRsZXI+DQorDQorCQk8bWV0aG9kIG5hbWU9InNldFNoYWRvdyI+DQorICAgICAgICA8IVtDREFUQVsNCisJICAgICAgICBpZiAodGhpcy5pc2luaXRlZCl7DQorCSAgICAgICAgICAgIHRoaXMubm9ybWFsTUMgPSB0aGlzLmdldERpc3BsYXlPYmplY3QoKTsNCisJICAgICAgICAgICAgLy9pZigkZGVidWcpIERlYnVnLndyaXRlKHRoaXMubm9ybWFsTUMpOw0KKwkgICAgICAgICAgICAvL2lmKCRkZWJ1ZykgRGVidWcud3JpdGUoInRoaXMubm9ybWFsTUM6ICIsdGhpcy5ub3JtYWxNQyk7DQorCSAgICAgICAgICAgIC8vaWYoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidGhpczogIix0aGlzKTsNCisJICAgICAgICAgICAgdGhpcy5kaXNwbGFjZW1lbnRNYXAgPSBuZXcgZmxhc2guZmlsdGVycy5Ecm9wU2hhZG93RmlsdGVyKCk7DQorCSAgICAgICAgICAgIHRoaXMubm9ybWFsTUMuZmlsdGVycyA9IFt0aGlzLmRpc3BsYWNlbWVudE1hcF07DQorCSAgICAgICAgfQ0KKyAgICAgICAgXV0+DQorCQk8L21ldGhvZD4NCisNCisJCTwhLS0gcmVzcGVjdCByYXRpbyBhbmQga2VlcCBtaW5pbXVtIHdpZHRoIC8gaGVpZ2h0IC0tPg0KKwkJPG1ldGhvZCBuYW1lPSJzZXRJdGVtQ29udHJhaW50c1dpZHRoIiBhcmdzPSJ1bnVzZWQiPg0KKyAgICAgICAgPCFbQ0RBVEFbDQorICAgICAgICAgICAgaWYgKCF0aGlzLnJlc3BlY3RSYXRpbykgew0KKyAgICAgICAgICAgICAgICByZXR1cm47DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHZhciBoPXRoaXMud2lkdGggKiB0aGlzLmluaXRIL3RoaXMuaW5pdFc7DQorICAgICAgICAgICAgaD0oKGggPCB0aGlzLmluaXRIICkgPyBpbml0SCA6IGgpOw0KKw0KKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzZXRJdGVtQ29udHJhaW50c1dpZHRoIix0aGlzLnJlc3BlY3RSYXRpbywnb3JpZycsdGhpcy5oZWlnaHQsdGhpcy53aWR0aCwnbmV3IGgnLGgpOw0KKw0KKyAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJoZWlnaHQiLGgpOw0KKyAgICAgICAgXV0+DQorCQk8L21ldGhvZD4NCisNCisJCTxtZXRob2QgbmFtZT0ic2V0SXRlbUNvbnRyYWludHNIZWlnaHQiIGFyZ3M9InVudXNlZCI+DQorICAgICAgICA8IVtDREFUQVsNCisgICAgICAgICAgICBpZiAoIXRoaXMucmVzcGVjdFJhdGlvKSB7DQorICAgICAgICAgICAgICAgIHJldHVybjsNCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgdmFyIHc9dGhpcy5oZWlnaHQgKiB0aGlzLmluaXRXL3RoaXMuaW5pdEg7DQorICAgICAgICAgICAgdz0oKHcgPCB0aGlzLmluaXRXICkgPyBpbml0VyA6IHcpOw0KKw0KKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzZXRJdGVtQ29udHJhaW50c0hlaWdodCIsdGhpcy5yZXNwZWN0UmF0aW8sJ29yaWcnLHRoaXMuaGVpZ2h0LHRoaXMud2lkdGgsJ25ldyB3Jyx3KTsNCisNCisgICAgICAgICAgICB0aGlzLnNldEF0dHJpYnV0ZSgid2lkdGgiLHcpOw0KKyAgICAgICAgXV0+DQorCQk8L21ldGhvZD4NCisNCisJCTxtZXRob2QgbmFtZT0idXBkYXRlQVZTZXR0aW5nc1N5bWJvbCIgYXJncz0icmNsIj4NCisJCQkvL0ZJWE1FOiBTZXQgYSBTeW1ib2wgd2V0aGVyIHRoaXMgQ2xpZW50IGlzIEF1ZGlvKG9ubHkpL1ZpZGVvKG9ubHkpLCBib3RoIG9yIFByb2ZpbGUgUGljdHVyZQ0KKwkJCWlmICgkZGVidWcpIERlYnVnLndhcm4oInVwZGF0ZUFWU2V0dGluZ3NTeW1ib2wgVE9ETyAiLHJjbCk7DQorCQk8L21ldGhvZD4NCisNCisJCTxtZXRob2QgbmFtZT0iZG9SZXNpemUiIGFyZ3M9ImJvb2wiPg0KKwkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJkb1Jlc2l6ZSIsYm9vbCk7DQorCQkJaWYoYm9vbCkgew0KKwkJCQlkcmFnSGVscGVyLmNyZWF0ZSgpOw0KKwkJCX0gZWxzZSB7DQorCQkJCWRyYWdIZWxwZXIucmVtb3ZlKCk7DQorCQkJfQ0KKwkJCWlmICh0aGlzLmlzSW50ZXJ2aWV3IHx8IHRoaXMuY3VzdG9tKSB7DQorCQkJCXJldHVybjsNCisJCQl9DQorDQorCQkJaWYgKGJvb2wpIHsNCisJCQkJdGhpcy5pc1Jlc2l6aW5nID0gdHJ1ZTsNCisJCQkJdGhpcy5ycy5hcHBseSgpOw0KKwkJCX0gZWxzZSB7DQorCQkJCXRoaXMuaXNSZXNpemluZyA9IGZhbHNlOw0KKwkJCQl0aGlzLnJzLnJlbW92ZSgpOw0KKwkJCX0NCisJCTwvbWV0aG9kPg0KKw0KKwkJPCEtLS0gcmVzZXRzIGFsbCB2YWx1ZXMgYW5kIHN0b3BzIHRoZSBzdHJlYW1pbmcgLS0+DQorCQk8bWV0aG9kIG5hbWU9InJlc2V0VmFsdWVzIj4NCisJCTwhW0NEQVRBWw0KKwkgICAgCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJyZXNldFZhbHVlczogIix0aGlzLmlzcmVtb3RlKTsNCisJICAgIAl0aGlzLmNsaWVudFZhcnM9bnVsbDsNCisJICAgIAlpZiAoIXRoaXMuaXNyZW1vdGUpIHsNCisJICAgIAkJZGVsZXRlVmlkZW9Db25mUHJvZmlsZVBpYygpOw0KKwkgICAgCX0NCisJICAgIAlpZiAodGhpcy5pc3JlbW90ZSl7DQorCSAgICAJCXRoaXMuX2NoYXR2aWRlb2lubmVyLl92aWRlb3N0cmVhbS5yZXN0YXJ0KCk7DQorCSAgICAJfSBlbHNlIHsNCisJICAgIAkJdGhpcy5fY2hhdHZpZGVvaW5uZXIuX3ZpZGVvc3RyZWFtLl9zdG9wKCk7DQorCSAgICAJfQ0KKwkJXV0+DQorCQk8L21ldGhvZD4NCisJCTxtZXRob2QgbmFtZT0ic2V0VmlkZW91c2VyUHJvZmlsZVBpYyIgYXJncz0idmFsdWUiPg0KKwkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCIjIyMgc2V0VmlkZW91c2VyUHJvZmlsZVBpYyAiLHZhbHVlKTsNCisJCQl0aGlzLmRlbGV0ZVZpZGVvQ29uZlByb2ZpbGVQaWMoKTsNCisJCQluZXcgbHoudmlkZW9Vc2VyUHJvZmlsZVBpY1NXRjEwKHRoaXMuX2NoYXR2aWRlb2lubmVyLHtuYW1lOid1c2VyUHJvZmlsZVBpYycsdmFsdWU6dmFsdWV9KTsNCisJCQl0aGlzLnNob3dVc2VyUHJvZmlsZVBpYyA9IHRydWU7DQorCQk8L21ldGhvZD4NCisJCTxtZXRob2QgbmFtZT0iZGVsZXRlVmlkZW9Db25mUHJvZmlsZVBpYyI+DQorCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIiMjIyBkZWxldGVWaWRlb0NvbmZQcm9maWxlUGljICMjIyIpOw0KKwkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJkZWxldGUgIix0aGlzLnNob3dVc2VyUHJvZmlsZVBpYyk7DQorCQkJaWYgKHRoaXMuc2hvd1VzZXJQcm9maWxlUGljKSB7DQorCQkJCXRoaXMuX2NoYXR2aWRlb2lubmVyLnVzZXJQcm9maWxlUGljLmRlc3Ryb3koKTsNCisJCQkJdGhpcy5zaG93VXNlclByb2ZpbGVQaWMgPSBmYWxzZTsNCisJCQl9DQorCQk8L21ldGhvZD4NCisNCisJCTwhLS0tIEBrZXl3b3JkcyBwcml2YXRlIC0tPg0KKwkJPG1ldGhvZCBuYW1lPSJfc3RhcnREcmFnU3RhdGUiIGFyZ3M9Im9iaiI+DQorCQkJaWYgKHRoaXMuaXNJbnRlcnZpZXcgfHwgdGhpcy5jdXN0b20pIHsNCisJCQkJcmV0dXJuOw0KKwkJCX0NCisNCisJCQlkcmFnSGVscGVyLmNyZWF0ZSgpOw0KKw0KKwkJCXRoaXMuYnJpbmdUb0Zyb250KCk7DQorCQkJcGFyZW50LmJyaW5nVG9Gcm9udCgpOw0KKwkJCXRoaXMuZHJhZ2dlci5hcHBseSgpOw0KKwkJPC9tZXRob2Q+DQorDQorCQk8IS0tLSBAa2V5d29yZHMgcHJpdmF0ZSAtLT4NCisJCTxtZXRob2QgbmFtZT0iX3JlbW92ZURyYWdTdGF0ZSIgYXJncz0ib2JqIj4NCisgICAgCTwhW0NEQVRBWw0KKwkgICAgICAgIGx6LkN1cnNvci51bmxvY2soKTsNCisJICAgICAgICANCisJICAgICAgICBpZiAodGhpcy54IDwgMCkgew0KKwkgICAgICAgIAl0aGlzLnNldEF0dHJpYnV0ZSgieCIsMjApOw0KKwkgICAgICAgIH0NCisJICAgICAgICANCisJICAgICAgICBpZiAodGhpcy55IDwgMCkgew0KKwkgICAgICAgIAl0aGlzLnNldEF0dHJpYnV0ZSgieSIsMjApOw0KKwkgICAgICAgIH0NCisJICAgICAgICANCisJICAgICAgICBpZiAodGhpcy54K3RoaXMud2lkdGggPiBwYXJlbnQud2lkdGgpIHsNCisJICAgICAgICAJdGhpcy5zZXRBdHRyaWJ1dGUoIngiLHBhcmVudC53aWR0aCAtIHRoaXMud2lkdGggLSAyMCk7DQorCSAgICAgICAgfQ0KKwkgICAgICAgIA0KKwkgICAgICAgIGlmICh0aGlzLnkrdGhpcy5oZWlnaHQgPiBwYXJlbnQuaGVpZ2h0KSB7DQorCSAgICAgICAgCXRoaXMuc2V0QXR0cmlidXRlKCJ5IixwYXJlbnQuaGVpZ2h0IC0gdGhpcy5oZWlnaHQgLSAyMCk7DQorCSAgICAgICAgfQ0KKwkgICAgICAgIGRyYWdIZWxwZXIucmVtb3ZlKCk7DQorCSAgICAgICAgdGhpcy5kcmFnZ2VyLnJlbW92ZSgpOw0KKyAgICAgICAgXV0+DQorCQk8L21ldGhvZD4NCisNCisJCTxtZXRob2QgbmFtZT0ibWluaW1pemUiPg0KKyAgICAgICAgPCFbQ0RBVEFbDQorICAgICAgICAgICAgdGhpcy5yZXNwZWN0UmF0aW8gPSBmYWxzZTsNCisgICAgICAgIA0KKyAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJtaW5pbWl6ZWQiLHRydWUpOw0KKyAgICAgICAgICAgIA0KKyAgICAgICAgICAgIHRoaXMuX3Rvb2xiYXIuX21pbmltaXplLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOw0KKyAgICAgICAgICAgIHRoaXMuX3Rvb2xiYXIuX21heGltaXplMi5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7DQorICAgICAgICAgICAgDQorICAgICAgICAgICAgZm9yICh2YXIgZWcgaW4gdGhpcy5zdWJ2aWV3cykgew0KKyAgICAgICAgICAgICAgICBpZiAodGhpcy5zdWJ2aWV3c1tlZ10ubmFtZSAhPSAiX3Rvb2xiYXIiIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICYmIHRoaXMuc3Vidmlld3NbZWddLm5hbWUgIT0gIl9pbm5lcnRvcCINCisgICAgICAgICAgICAgICAgICAgICAgICAmJiB0aGlzLnN1YnZpZXdzW2VnXS5uYW1lICE9ICJfbG91ZG5lc3MiKSB7DQorICAgICAgICAgICAgICAgICAgICAgdGhpcy5zdWJ2aWV3c1tlZ10uc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7ICAgDQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgDQorICAgICAgICAgICAgdGhpcy5fbG91ZG5lc3Muc2V0QXR0cmlidXRlKCJ4Iix0aGlzLndpZHRoIC0gODQgLSAodGhpcy5pc1Nob3dNaWNNdXRlID8gMjAgOiAwKSk7DQorICAgICAgICAgICAgdGhpcy5fbG91ZG5lc3MuYnJpbmdUb0Zyb250KCk7DQorICAgICAgICAgICAgDQorICAgICAgICAgICAgdGhpcy5pbml0aWFsSGVpZ2h0ID0gdGhpcy5oZWlnaHQ7DQorICAgICAgICAgICAgLy90aGlzLnNldEF0dHJpYnV0ZSgiaGVpZ2h0IiwyMCk7DQorICAgICAgICAgICAgdGhpcy5fbWluaW1pemVab29tLnNldEF0dHJpYnV0ZSgidG8iLDIwKTsNCisgICAgICAgICAgICB0aGlzLl9taW5pbWl6ZVpvb20uc2V0QXR0cmlidXRlKCdzdGFydGVkJywgdHJ1ZSk7DQorICAgICAgICBdXT4NCisJCTwvbWV0aG9kPg0KKw0KKwkJPG1ldGhvZCBuYW1lPSJyZW1pbmltaXplIj4NCisgICAgICAgIDwhW0NEQVRBWw0KKyAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJtaW5pbWl6ZWQiLGZhbHNlKTsNCisgICAgICAgICAgICANCisgICAgICAgICAgICB0aGlzLl90b29sYmFyLl9taW5pbWl6ZS5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7DQorICAgICAgICAgICAgdGhpcy5fdG9vbGJhci5fbWF4aW1pemUyLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOw0KKyAgICAgICAgICAgIA0KKyAgICAgICAgICAgIHRoaXMuX2xvdWRuZXNzLnNldEF0dHJpYnV0ZSgieCIsMSk7DQorICAgICAgICAgICAgDQorICAgICAgICAgICAgLy90aGlzLnNldEF0dHJpYnV0ZSgiaGVpZ2h0Iix0aGlzLmluaXRpYWxIZWlnaHQpOyANCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgidGhpcy5pbml0aWFsSGVpZ2h0ICIsdGhpcy5pbml0aWFsSGVpZ2h0KTsNCisgICAgICAgICAgICB0aGlzLl9taW5pbWl6ZVpvb20uc2V0QXR0cmlidXRlKCJ0byIsdGhpcy5pbml0aWFsSGVpZ2h0KTsNCisgICAgICAgICAgICB0aGlzLl9taW5pbWl6ZVpvb20uc2V0QXR0cmlidXRlKCdzdGFydGVkJywgdHJ1ZSk7DQorICAgICAgICBdXT4NCisJCTwvbWV0aG9kPg0KKw0KKwkJPG1ldGhvZCBuYW1lPSJyZW1pbmltaXplQ29tcGxldGUiPg0KKyAgICAgICAgPCFbQ0RBVEFbDQorICAgICAgICAgICAgaWYgKCF0aGlzLm1pbmltaXplZCkgew0KKyAgICAgICAgICAgICAgICBmb3IgKHZhciBlZyBpbiB0aGlzLnN1YnZpZXdzKSB7DQorICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5zdWJ2aWV3c1tlZ10ubmFtZSAhPSAiX3Rvb2xiYXIiIA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiB0aGlzLnN1YnZpZXdzW2VnXS5uYW1lICE9ICJfaW5uZXJ0b3AiDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIHRoaXMuc3Vidmlld3NbZWddLm5hbWUgIT0gIl9sb3VkbmVzcyINCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgdGhpcy5zdWJ2aWV3c1tlZ10ubmFtZSAhPSAiX2lubmVyYm90dG9tIikgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnN1YnZpZXdzW2VnXS5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7ICAgDQorICAgICAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgaWYgKGlzTWljcm9waG9uZXNSb29tKSB7DQorICAgICAgICAgICAgICAgICAgICB0aGlzLl9pbm5lcmJvdHRvbS5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCAidmlzaWJsZSIpOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgICAgIHRoaXMucmVzcGVjdFJhdGlvID0gdHJ1ZTsNCisgICAgICAgICAgICB9DQorICAgICAgICBdXT4NCisJCTwvbWV0aG9kPg0KKw0KKwkJPHZpZXcgbmFtZT0iX2lubmVydG9wIiB3aWR0aD0iJHtwYXJlbnQud2lkdGgtMiB9IiBoZWlnaHQ9IjE4IiB4PSIxIiB5PSIxIg0KKwkJCWJnY29sb3I9IiRvbmNleyBjYW52YXMuZ2V0VGhlbWVDb2xvcignYmFzZWJnY29sb3JpemVyJykgfSI+DQorCQkJPHRleHQgdGV4dD0iJHsgcGFyZW50LnBhcmVudC5jaGF0cGFydG5lcm5hbWUgfSIgb25tb3VzZWRvd249InBhcmVudC5wYXJlbnQuX3N0YXJ0RHJhZ1N0YXRlKHRoaXMpIg0KKwkJCQlvbm1vdXNldXA9InBhcmVudC5wYXJlbnQuX3JlbW92ZURyYWdTdGF0ZSh0aGlzKSINCisJCQkJd2lkdGg9IiR7IHBhcmVudC53aWR0aC0yIH0iIGZnY29sb3I9IndoaXRlIiBmb250c2l6ZT0iOSI+DQorCQkJCTxoYW5kbGVyIG5hbWU9Im9ubW91c2VvdmVyIj4NCisJCQkJCS8vY3Vyc29yPSJhcnJvd19kcmF3X3BhbmVsX2N1cnNvciINCisJCQkJCWx6LkN1cnNvci5zZXRDdXJzb3JHbG9iYWwoImFycm93X2RyYXdfcGFuZWxfY3Vyc29yIik7DQorCQkJCTwvaGFuZGxlcj4NCisNCisJCQkJPGhhbmRsZXIgbmFtZT0ib25tb3VzZW91dCI+DQorCQkJCQlsei5DdXJzb3IudW5sb2NrKCk7DQorCQkJCTwvaGFuZGxlcj4NCisJCQk8L3RleHQ+DQorCQk8L3ZpZXc+DQorDQorCQk8dmlldyBuYW1lPSJfaW5uZXJib3R0b20iIHdpZHRoPSIke3BhcmVudC53aWR0aCAtIDJ9IiB4PSIxIiB5PSIke3BhcmVudC5oZWlnaHQgLSAxOX0iIGhlaWdodD0iMTgiDQorCQkJYmdjb2xvcj0iJG9uY2V7IGNhbnZhcy5nZXRUaGVtZUNvbG9yKCdiYXNlYmdjb2xvcml6ZXInKSB9Ij4NCisJCQk8dGV4dCB0ZXh0PSIke2NhbnZhcy5nZXRMYWJlbE5hbWUoMTQzNCl9IiB3aWR0aD0iJHsgcGFyZW50LndpZHRoLTIgfSIgZmdjb2xvcj0id2hpdGUiIG5hbWU9InRpdGxlIiBmb250c2l6ZT0iOSIgLz4NCisJCTwvdmlldz4NCisNCisJCTx2aWV3IG5hbWU9Il9sb3VkbmVzcyIgeD0iMSIgdmlzaWJsZT0iJHtwYXJlbnQuaXNyZW1vdGV9IiB5PSIke3BhcmVudC5oZWlnaHQgLSAyMCAtICgocGFyZW50Ll9pbm5lcmJvdHRvbS52aXNpYmxlKSA/IDE4IDogMCkgfSI+DQorCQkJPG1ldGhvZCBuYW1lPSJzZXRTcGVha2luZyIgYXJncz0iYm9vbCI+DQorCQkJCXRoaXMubG91ZG5lc3Muc2V0QXR0cmlidXRlKCdvcGFjaXR5JywgYm9vbCA/IDEgOiAwLjIpOw0KKwkJCTwvbWV0aG9kPg0KKwkJCTx2aWV3IHg9IjIiIHk9IjIiIG5hbWU9ImxvdWRuZXNzIiByZXNvdXJjZT0ic3BlYWtpbmciIG9wYWNpdHk9IjAuMiIgb25tb3VzZW92ZXI9IiIgb25tb3VzZW91dD0iIj4NCisJCQkJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+DQorCQkJCTwhW0NEQVRBWw0KKwkJCQkJaWYgKGNhbnZhcy5pc21vZGVyYXRvciB8fCBjYW52YXMuaXNBbGxvd2VkVG9HaXZlRXhjbHVzaXZlQXVkaW8pIHsNCisJCQkJCQlwYXJlbnQucGFyZW50LmNvbmZpcm1FeGNsdXNpdmVBdWRpbygpOw0KKwkJCQkJfSBlbHNlIHsNCisJCQkJCQluZXcgbHoubGFiZWxlcnJvclBvcHVwU1dGMTAoY2FudmFzLHtlcnJvcmxhYmVsaWQ6MTQ3OH0pOw0KKwkJCQkJfQ0KKwkJCQldXT4NCisJCQkJPC9oYW5kbGVyPg0KKwkJCQk8bGFiZWxUb29sdGlwIGluaXR0d2ljZT0idHJ1ZSIgbGFiZWxpZD0iMzcyIiAvPg0KKwkJCTwvdmlldz4NCisJCTwvdmlldz4NCisNCisJCTx2aWV3IG5hbWU9Il9yZXNpemV2aWV3IiB4PSIkeyB0aGlzLnBhcmVudC53aWR0aCAtIDE2IH0iIHZhbGlnbj0iYm90dG9tIiByZXNvdXJjZT0iZXhwbG9yZXJfcmVzaXplX3JzYyIgY3Vyc29yPSJleHBsb3Jlcl9yZXNpemVtb3VzZV9yc2MiDQorCQkJb25tb3VzZWRvd249InRoaXMucGFyZW50LmRvUmVzaXplKHRydWUpIiBvbm1vdXNldXA9InRoaXMucGFyZW50LmRvUmVzaXplKGZhbHNlKSI+DQorCQkJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4NCisJCQkJLy9pZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2V0VGludCIpOw0KKwkJCQkvL1RPRE86IEZpeCB0aGlzLCBkb2VzIG5vdCB3b3JrIGF0IHRoZSBtb21lbnQNCisJCQkJLy9jYW52YXMucHJvdG9jb2wgKyAnOi8vY29kZS5nb29nbGUuY29tL3Avb3Blbm1lZXRpbmdzL2lzc3Vlcy9kZXRhaWw/aWQ9NDcwDQorCQkJCXRoaXMuc2V0Q29sb3IoY2FudmFzLmdldFRoZW1lQ29sb3IoJ2Jhc2VNb3VzZWNvbG9yaXplcicpKTsNCisJCQk8L2hhbmRsZXI+DQorCQk8L3ZpZXc+DQorDQorCQk8dmlldyBuYW1lPSJfdG9vbGJhciIgeD0iJHsgcGFyZW50LndpZHRoLXRoaXMud2lkdGgtMiB9IiBsYXlvdXQ9ImF4aXM6eDtzcGFjaW5nOjAiIHk9IjIiPg0KKw0KKwkJCTxhdHRyaWJ1dGUgbmFtZT0iaXNsb2FkIiB2YWx1ZT0idHJ1ZSIgdHlwZT0iYm9vbGVhbiIgLz4NCisNCisJCQk8bWluaUljb25zUHJlc2VudGVyIG5hbWU9Il9yZXN5bmMiIGljb25SZXNzb3VyY2VOYW1lPSJyZXN5bmN1c2VyX3JzYyI+DQorCQkJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPg0KKwkJCQkJcGFyZW50LnBhcmVudC5yZXNldFZhbHVlcygpOw0KKwkJCQkJaWYoIXRoaXMucGFyZW50LnBhcmVudC5pc3JlbW90ZSkgew0KKwkJCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJlZGl0UmVjb3JkU3RyZWFtICMjIyMjIyMjIyMjIyMjIyMjIGJhc2VWaWRlT2JqZWN0IGlzSW50ZXJ2aWV3Ig0KKwkJCQkJCQkJLHRoaXMucGFyZW50LnBhcmVudC5pc0ludGVydmlldyx0aGlzLnBhcmVudC5wYXJlbnQuaW50ZXJ2aWV3UG9kSWQpOw0KKwkJCQkJCWlmICh0aGlzLnBhcmVudC5wYXJlbnQuaXNJbnRlcnZpZXcpIHsNCisJCQkJCQkJLy9UT0RPOiBmaXggaXQNCisJCQkJCQkJbmV3IGx6LmVkaXRSZWNvcmRTdHJlYW1TV0YxMChjYW52YXMuaW5uZXIsew0KKwkJCQkJCQkJbmFtZToiZWRpdFJlY29yZFN0cmVhbSIsDQorCQkJCQkJCQlkb0RlZmF1bHRBbmltYXRpb246ZmFsc2UsDQorCQkJCQkJCQlpc0ludGVydmlldzp0cnVlLA0KKwkJCQkJCQkJaW50ZXJ2aWV3UG9kSWQ6dGhpcy5wYXJlbnQucGFyZW50LmludGVydmlld1BvZElkLA0KKwkJCQkJCQkJaXNTeW5jVXBkYXRlOnRydWV9KTsNCisJCQkJCQl9IGVsc2Ugew0KKwkJCQkJCQluZXcgbHouZWRpdFJlY29yZFN0cmVhbVNXRjEwKGNhbnZhcy5pbm5lcix7DQorCQkJCQkJCQluYW1lOiJlZGl0UmVjb3JkU3RyZWFtIiwNCisJCQkJCQkJCWlzSW50ZXJ2aWV3OmZhbHNlLA0KKwkJCQkJCQkJaXNTeW5jVXBkYXRlOnRydWV9KTsNCisJCQkJCQl9DQorCQkJCQl9DQorCQkJCTwvaGFuZGxlcj4NCisJCQkJPGxhYmVsVG9vbHRpcCBuYW1lPSJfdGlwIiBsYWJlbGlkPSI1NDAiIC8+DQorCQkJPC9taW5pSWNvbnNQcmVzZW50ZXI+DQorDQorCQkJPG1pbmlJY29uc1ByZXNlbnRlciBuYW1lPSJfbXV0ZSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBpY29uUmVzc291cmNlTmFtZT0ibXV0ZV9taWNyb19idG5fcnNjIj4NCisJCQkJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+DQorCQkJCQlwYXJlbnQucGFyZW50LnNpbGVuY2VNaWNyb3Bob25lKCFwYXJlbnQucGFyZW50Lm1pY011dGVkKTsNCisJCQkJPC9oYW5kbGVyPg0KKwkJCQk8bGFiZWxUb29sdGlwIG5hbWU9Il90aXAiIGxhYmVsaWQ9IjE0MDUiIC8+DQorCQkJPC9taW5pSWNvbnNQcmVzZW50ZXI+DQorDQorCQkJPG1pbmlJY29uc1ByZXNlbnRlciB4PSIwIiB5PSIwIiBuYW1lPSJfdm9sdW1lIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGljb25SZXNzb3VyY2VOYW1lPSJ2b2x1bWUiPg0KKwkJCQk8aGFuZGxlciBuYW1lPSJvbmluaXQiPg0KKwkJCQkJX3RpcC5zZXRBdHRyaWJ1dGUoImxhYmVsaWQiLCBwYXJlbnQucGFyZW50LmlzcmVtb3RlID8gMTUxMSA6IDE1MTIpOw0KKwkJCQk8L2hhbmRsZXI+DQorCQkJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPg0KKwkJCQkJdmFyIHZvbHVtZSA9IHBhcmVudC5wYXJlbnQuZ2V0U3RyZWFtVm9sdW1lKCk7DQorDQorCQkJCQl2YXIgc2xpZGVySGVpZ2h0ID0gMTIwOw0KKwkJCQkJdmFyIHNsaWRlclggPQ0KKwkJCQkJdGhpcy5nZXRBdHRyaWJ1dGVSZWxhdGl2ZSgneCcsY2FudmFzKSAtIDI7DQorCQkJCQl2YXIgcGljayA9IG5ldyBsei5Wb2x1bWVTbGlkZXIoY2FudmFzLCB7DQorCQkJCQkJCWhlaWdodDpzbGlkZXJIZWlnaHQsDQorCQkJCQkJCXg6c2xpZGVyWCwNCisJCQkJCQkJeToocGFyZW50LmdldEF0dHJpYnV0ZVJlbGF0aXZlKCd5JyxjYW52YXMpIC0gc2xpZGVySGVpZ2h0LzIpLA0KKwkJCQkJCQlpbml0aWFsTnVtYmVyOnZvbHVtZSwNCisJCQkJCQkJdmlkZW9PYmplY3Q6cGFyZW50LnBhcmVudA0KKwkJCQkJCX0pOw0KKwkJCQkJbHouTW9kZU1hbmFnZXIubWFrZU1vZGFsKHBpY2spOw0KKwkJCQk8L2hhbmRsZXI+DQorCQkJCTxsYWJlbFRvb2x0aXAgbmFtZT0iX3RpcCIgLz4NCisJCQk8L21pbmlJY29uc1ByZXNlbnRlcj4NCisNCisJCQk8bWluaUljb25zUHJlc2VudGVyIG5hbWU9Il9taW5pbWl6ZSIgaWNvblJlc3NvdXJjZU5hbWU9ImJ0bl9wcmVzZW50ZXJfbWluaW1pemUiPg0KKwkJCQk8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4NCisJCQkJCXRoaXMucGFyZW50LnBhcmVudC5taW5pbWl6ZSgpOw0KKwkJCQk8L2hhbmRsZXI+DQorCQkJCTxsYWJlbFRvb2x0aXAgbGFiZWxpZD0iODU2IiAvPg0KKwkJCTwvbWluaUljb25zUHJlc2VudGVyPg0KKw0KKwkJCTxtaW5pSWNvbnNQcmVzZW50ZXIgbmFtZT0iX21heGltaXplMiIgdmlzaWJpbGl0eT0iaGlkZGVuIiBpY29uUmVzc291cmNlTmFtZT0iYnRuX3ByZXNlbnRlcl9tYXhpbWl6ZSI+DQorCQkJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPg0KKwkJCQkJdGhpcy5wYXJlbnQucGFyZW50LnJlbWluaW1pemUoKTsNCisJCQkJPC9oYW5kbGVyPg0KKwkJCQk8bGFiZWxUb29sdGlwIGxhYmVsaWQ9Ijg1NyIgLz4NCisJCQk8L21pbmlJY29uc1ByZXNlbnRlcj4NCisNCisJCTwvdmlldz4NCisNCisJCTx2aWV3IG5hbWU9Il9naXZlRXhjbHVzaXZlQXVkaW9WaWV3IiB2YWxpZ249Im1pZGRsZSIgYWxpZ249ImNlbnRlciIgdmlzaWJsZT0iZmFsc2UiPg0KKwkJCTx2aWV3IG5hbWU9Il9taWNCdXR0b24iIHdpZHRoPSI0MCIgaGVpZ2h0PSI0MCIgcmVzb3VyY2U9Im1pY19yc2MiIHNob3doYW5kY3Vyc29yPSJ0cnVlIj4NCisJCQkJPGxhYmVsVG9vbHRpcCBuYW1lPSJfdG9vbFRpcFRleHRFeGNsdXNpdmVBdWRpbyIgbGFiZWxpZD0iMTM4NiIgLz4NCisJCQk8L3ZpZXc+DQorCQk8L3ZpZXc+DQorDQorCQk8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3ZlciI+DQorICAgICAgICA8IVtDREFUQVsNCisJICAgICAgICBpZiAodGhpcy5pc0ludGVydmlldyB8fCB0aGlzLm1pbmltaXplZCkgew0KKwkgICAgICAgICAgICByZXR1cm47DQorCSAgICAgICAgfQ0KKwkgICAgICAgIGlmIChjYW52YXMuaXNtb2RlcmF0b3IgfHwgY2FudmFzLmlzQWxsb3dlZFRvR2l2ZUV4Y2x1c2l2ZUF1ZGlvKSB7DQorCSAgICAgICAgCXRoaXMuX2dpdmVFeGNsdXNpdmVBdWRpb1ZpZXcuX21pY0J1dHRvbi5fdG9vbFRpcFRleHRFeGNsdXNpdmVBdWRpby5kb29ubW91c2VvdmVyKCk7DQorCSAgICAgICAgICAgIHRoaXMuX2dpdmVFeGNsdXNpdmVBdWRpb1ZpZXcuc2V0QXR0cmlidXRlKCJ2aXNpYmxlIiwgdHJ1ZSk7DQorCSAgICAgICAgfQ0KKyAgICAgICAgXV0+DQorCQk8L2hhbmRsZXI+DQorDQorCQk8aGFuZGxlciBuYW1lPSJvbm1vdXNlb3V0Ij4NCisgICAgICAgIDwhW0NEQVRBWw0KKwkgICAgICAgIGlmICh0aGlzLmlzSW50ZXJ2aWV3IHx8IHRoaXMubWluaW1pemVkKSB7DQorCSAgICAgICAgICAgIHJldHVybjsNCisJICAgICAgICB9DQorCSAgICAgICAgdGhpcy5fZ2l2ZUV4Y2x1c2l2ZUF1ZGlvVmlldy5fbWljQnV0dG9uLl90b29sVGlwVGV4dEV4Y2x1c2l2ZUF1ZGlvLmNsZWFuSG9sZGVyKCk7DQorCSAgICAgICAgdGhpcy5fZ2l2ZUV4Y2x1c2l2ZUF1ZGlvVmlldy5zZXRBdHRyaWJ1dGUoInZpc2libGUiLCBmYWxzZSk7DQorICAgICAgICBdXT4NCisJCTwvaGFuZGxlcj4NCisNCisJCTxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPg0KKwkJPCFbQ0RBVEFbDQorCSAgICAgIAlpZiAoY2FudmFzLmlzbW9kZXJhdG9yIHx8IGNhbnZhcy5pc0FsbG93ZWRUb0dpdmVFeGNsdXNpdmVBdWRpbykgew0KKwkgICAgICAJCXRoaXMuX2dpdmVFeGNsdXNpdmVBdWRpb1ZpZXcuX21pY0J1dHRvbi5fdG9vbFRpcFRleHRFeGNsdXNpdmVBdWRpby5jbGVhbkhvbGRlcigpOw0KKwkgICAgICAgICAgCXRoaXMuY29uZmlybUV4Y2x1c2l2ZUF1ZGlvKCk7DQorCSAgICAgICAgfSBlbHNlIHsNCisJCQkJbmV3IGx6LmxhYmVsZXJyb3JQb3B1cFNXRjEwKGNhbnZhcyx7ZXJyb3JsYWJlbGlkOjE0Nzh9KTsgICAgICAgIA0KKwkgICAgICAgIH0NCisJCV1dPg0KKwkJPC9oYW5kbGVyPg0KKw0KKwkJPGRyYWdzdGF0ZSBuYW1lPSJkcmFnZ2VyIiAvPg0KKwkJPHJlc2l6ZXN0YXRlbWluIG5hbWU9InJzIiByZXNpemVfbWluX3dpZHRoPSI3MCIgcmVzaXplX21pbl9oZWlnaHQ9IjcwIiAvPg0KKwkJPGRyYWdIZWxwZXIgbmFtZT0iZHJhZ0hlbHBlciIgLz4NCisNCisJCTxhbmltYXRvciBuYW1lPSJfbWluaW1pemVab29tIiBhdHRyaWJ1dGU9ImhlaWdodCIgZHVyYXRpb249Ijc1MCIgdG89IjIwIiBzdGFydGVkPSJmYWxzZSI+DQorCQkJPGhhbmRsZXIgbmFtZT0ib25zdG9wIiBhcmdzPSJzIj4NCisJCQkJcGFyZW50LnJlbWluaW1pemVDb21wbGV0ZSgpOw0KKwkJCTwvaGFuZGxlcj4NCisJCTwvYW5pbWF0b3I+DQorDQorCQk8aGFuZGxlciBuYW1lPSJvbmlzbW9kZXJhdG9yIiByZWZlcmVuY2U9ImNhbnZhcyIgYXJncz0ibSI+DQorICAgICAgICA8IVtDREFUQVsNCisJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiIyMjIyMjIGlzbW9kZXJhdG9yICIsIG0pOw0KKwkgICAgICAgIA0KKwkgICAgICAgIGlmICh0aGlzLm1pbmltaXplZCkgew0KKwkgICAgICAgICAgICB0aGlzLl9sb3VkbmVzcy5zZXRBdHRyaWJ1dGUoIngiLHRoaXMud2lkdGggLSA4NCAtICh0aGlzLmlzU2hvd01pY011dGUgPyAyMCA6IDApKTsNCisJICAgICAgICAgICAgdGhpcy5fbG91ZG5lc3MuYnJpbmdUb0Zyb250KCk7DQorCSAgICAgICAgfQ0KKyAgICAgICAgXV0+DQorCQk8L2hhbmRsZXI+DQorDQorCQk8bWV0aG9kIG5hbWU9ImdpdmVFeGNsdXNpdmVBdWRpbyI+DQorCQkJY2FudmFzLnZpZGVvQ29tcF9sYy5zZW5kKGNhbnZhcy52aWRlb0NvbXBfbGNfbmFtZSwgJ2xjX2dpdmVFeGNsdXNpdmVBdWRpbycsIHRoaXMucHVibGljU0lEKTsNCisJCTwvbWV0aG9kPg0KKw0KKwkJPG1ldGhvZCBuYW1lPSJjb25maXJtRXhjbHVzaXZlQXVkaW8iPg0KKwkJCXZhciBzbzpTaGFyZWRPYmplY3QgPSBTaGFyZWRPYmplY3QuZ2V0TG9jYWwoJ3VzZXJkYXRhJyk7DQorCQkJdmFyIHVzZXJEYXRhID0gc28uZGF0YTsNCisJCQl2YXIgZG9udFNob3dFeGNsdXNpdmVBdWRpb0NvbmZpcm1hdGlvbiA9IHVzZXJEYXRhWyJkb250U2hvd0V4Y2x1c2l2ZUF1ZGlvQ29uZmlybWF0aW9uIl07DQorCQkJdmFyIGV4Y2x1c2l2ZUF1ZGlvTGlzdGVuZXIgPSBuZXcgT2JqZWN0KCk7DQorCQkJZXhjbHVzaXZlQXVkaW9MaXN0ZW5lci5zZW5kTm9Db25maXJtYXRpb24gPSBmdW5jdGlvbigpIHt9Ow0KKwkJCWV4Y2x1c2l2ZUF1ZGlvTGlzdGVuZXIuc2VuZENvbmZpcm1hdGlvbiA9IGZ1bmN0aW9uKGFuc3dlciwgcmVtZW1iZXIpIHsNCisJCQkJCWlmIChhbnN3ZXIpIHsNCisJCQkJCQlnaXZlRXhjbHVzaXZlQXVkaW8oKTsNCisJCQkJCQlpZiAocmVtZW1iZXIpIHsNCisJCQkJCQkJdXNlckRhdGFbImRvbnRTaG93RXhjbHVzaXZlQXVkaW9Db25maXJtYXRpb24iXSA9IHRydWU7DQorCQkJCQkJCXNvLmZsdXNoKCk7DQorCQkJCQkJfQ0KKwkJCQkJfQ0KKwkJCQl9Ow0KKwkJCWlmIChkb250U2hvd0V4Y2x1c2l2ZUF1ZGlvQ29uZmlybWF0aW9uID09IHRydWUpIHsNCisJCQkJZXhjbHVzaXZlQXVkaW9MaXN0ZW5lci5zZW5kQ29uZmlybWF0aW9uKHRydWUsIHRydWUpOw0KKwkJCX0gZWxzZSB7DQorCQkJCW5ldyBsei5jb25maXJtYXRpb25TaW5nbGVTV0YxMChjYW52YXMsew0KKwkJCQkJbGFiZWxpZDoxNDI4LA0KKwkJCQkJbGFiZWxpZGVycm9yOjE1MzksDQorCQkJCQlyZWZPYmo6ZXhjbHVzaXZlQXVkaW9MaXN0ZW5lciwNCisJCQkJCXNob3dDaGVja0JveDp0cnVlfSk7DQorCQkJfQ0KKwkJPC9tZXRob2Q+DQorDQorCQk8IS0tIFRoaXMgd2lsbCBtdXRlIHRoZSBNaWNyb3Bob25lIG9ubHkgdG8gdGhlIHBlcnNvbiB0aGF0IGlzIHNwZWFraW5nIGlmIHRoZSBnYWluIGlzIHNldCB0byB6ZXJvIE5PQk9EWSB3aWxsIGhlYXIgJ2VtIC0tPg0KKwkJPG1ldGhvZCBuYW1lPSJtdXRlTWljcm9waG9uZSIgYXJncz0icm9vbUNsaWVudE9iaiI+DQorCQk8IVtDREFUQVsNCisJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiIyMjIyMjIyMjIyMjIG11dGVNaWNyb3Bob25lICIsIHJvb21DbGllbnRPYmoubWljTXV0ZWQsIHJvb21DbGllbnRPYmoucHVibGljU0lELCB0aGlzLnB1YmxpY1NJRCk7DQorCQkJDQorCQkJaWYgKHJvb21DbGllbnRPYmoucHVibGljU0lEID09IHRoaXMucHVibGljU0lEKSB7DQorCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJTZXQgTXV0ZSBmb3IgQ2xpZW50IDo6ICIsIHJvb21DbGllbnRPYmopOw0KKwkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiIyMjIyMjIyMjIyMjIFNFVCBHQUlOICIgKyByb29tQ2xpZW50T2JqLm1pY011dGVkKTsNCisJCQkJdGhpcy5fY2hhdHZpZGVvaW5uZXIuX3ZpZGVvc3RyZWFtLm11dGVNaWNybyhyb29tQ2xpZW50T2JqLm1pY011dGVkKTsNCisJCQkJdGhpcy5pc011dGVkQnlNb2RlcmF0b3IgPSByb29tQ2xpZW50T2JqLm1pY011dGVkOw0KKwkJCQl0aGlzLnNldE1pY011dGVkKHJvb21DbGllbnRPYmoubWljTXV0ZWQpOw0KKwkJCX0NCisJCV1dPg0KKwkJPC9tZXRob2Q+DQorDQorCQk8IS0tIFRoaXMgd2lsbCBtdXRlIGl0IG9ubHkgbG9jYWxseSwgdGhhdCBtZWFucyBvbiBvdGhlciBzY3JlZW5zIHRoZSB1c2VyIG1pZ2h0IGJlIHN0aWxsIG9ubGluZSBhbmQgbG91ZCAtLT4NCisJCTxtZXRob2QgbmFtZT0ic2lsZW5jZU1pY3JvcGhvbmUiIGFyZ3M9Im11dGUiPg0KKwkJPCFbQ0RBVEFbDQorCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIiMjIyMjIyMjIyMjIyBzaWxlbmNlTWljcm9waG9uZSAiLCB0aGlzLnB1YmxpY1NJRCk7DQorCQkJaWYgKHRoaXMucHVibGljU0lEID09IGNhbnZhcy5wdWJsaWNTSUQpIHsNCisJCQkJLy9zZWxmIHNvdW5kIHR1cm5lZCBvZmYNCisJCQkJY2FudmFzLnZpZGVvQ29tcF9sYy5zZW5kKGNhbnZhcy52aWRlb0NvbXBfbGNfbmFtZSwgJ2xjX3N3aXRjaE1pY011dGVkJywgdGhpcy5wdWJsaWNTSUQsIG11dGUpOw0KKwkJCQlpZiAoIW11dGUpIHsNCisJCQkJCXRoaXMuX2NoYXR2aWRlb2lubmVyLl92aWRlb3N0cmVhbS5tdXRlTWljcm8oZmFsc2UpOw0KKwkJCQl9DQorCQkJfSBlbHNlIHsNCisJCQkJLy9kaXNhYmxlIHRoaXMgYWN0aW9uIGZvciBub3cNCisJCQkJaWYgKCFjYW52YXMuaXNtb2RlcmF0b3IpIHsNCisJCQkJCW5ldyBsei5sYWJlbGVycm9yUG9wdXBTV0YxMChjYW52YXMse2Vycm9ybGFiZWxpZDoxNDA5fSk7DQorCQkJCQlyZXR1cm47DQorCQkJCX0NCisJCQkJLy95b3UgY2FuIG5vdCB1bm11dGUgaXQgbG9jYWxseSBieSBwdXR0aW5nIHNvdW5kIHRvIDEwMCBjYXVzZSB0aGUgZ2FpbiBpcyBzZXQgdG8gemVybyBnbG9iYWxseSBpbiB0aGUgbWljcm8gb2YgdGhlIHNlbmRlciENCisJCQkJLy9zbyBzZXR0aW5nIHRoZSBzb3VuZC92b2x1bWUgb24gdGhlIG90aGVyIHJlbW90ZSBjbGllbnRzIGhhcyB6ZXJvIGVmZmVjdA0KKwkJCQlpZiAodGhpcy5pc011dGVkQnlNb2RlcmF0b3IgJiYgIWNhbnZhcy5pc21vZGVyYXRvcikgew0KKwkJCQkJLy9GSVhNRTogVGhhdCBpcyBub3QgdHJ1ZSwgeW91IGNvdWxkIHJlc3RhcnQgYXVkaW8vdmlkZW8gLi4uDQorCQkJCQl2YXIgZXJyb3JsYWJlbGlkID0gdGhpcy5wdWJsaWNTSUQgPT0gY2FudmFzLnB1YmxpY1NJRCA/IDEzODcgOiAxNDAyOw0KKwkJCQkJbmV3IGx6LmxhYmVsZXJyb3JQb3B1cFNXRjEwKGNhbnZhcyx7ZXJyb3JsYWJlbGlkOmVycm9ybGFiZWxpZH0pOw0KKwkJCQkJcmV0dXJuOw0KKwkJCQl9DQorCQkJCWlmIChjYW52YXMuaXNtb2RlcmF0b3IpIHsNCisJCQkJCWNhbnZhcy52aWRlb0NvbXBfbGMuc2VuZChjYW52YXMudmlkZW9Db21wX2xjX25hbWUsICdsY19zd2l0Y2hNaWNNdXRlZCcsIHRoaXMucHVibGljU0lELCBtdXRlKTsNCisJCQkJfSBlbHNlIHsNCisJCQkJCXRoaXMuX2NoYXR2aWRlb2lubmVyLl92aWRlb3N0cmVhbS5zZXRTb3VuZFZvbHVtZShtdXRlID8gMCA6IDEwMCk7DQorCQkJCX0NCisJCQl9DQorCQkJdGhpcy5zZXRNaWNNdXRlZChtdXRlKTsNCisJCV1dPg0KKwkJPC9tZXRob2Q+DQorDQorCQk8bWV0aG9kIG5hbWU9InNldE1pY011dGVkIiBhcmdzPSJtaWNNdXRlZCI+DQorICAgICAgICA8IVtDREFUQVsNCisJICAgICAgICB0aGlzLm1pY011dGVkID0gbWljTXV0ZWQ7DQorICAgICAgICAgICAgdGhpcy5fdG9vbGJhci5fbXV0ZS5fdGlwLnNldEF0dHJpYnV0ZSgibGFiZWxpZCIsIG1pY011dGVkID8gIjE0MDYiIDogIjE0MDUiKTsNCisgICAgICAgICAgICB0aGlzLl90b29sYmFyLl9tdXRlLl9pdGVtUnNjLnNldEF0dHJpYnV0ZSgnZnJhbWUnLCBtaWNNdXRlZCA/IDIgOiAxKTsNCisgICAgICAgICAgICBpZiAoaXNNaWNyb3Bob25lc1Jvb20pIHsNCisgICAgICAgICAgICAgICAgdmFyIGxhYmVsID0gY2FudmFzLmdldExhYmVsTmFtZShtaWNNdXRlZCA/IDE0MzUgOiAxNDM0KTsNCisgICAgICAgICAgICAgICAgdmFyIGNvbG9yID0gbWljTXV0ZWQgPyBjYW52YXMuZ2V0VGhlbWVDb2xvcignYmFzZWJnY29sb3JpemVyJykgOiAiMHhGRjY2MDAiOw0KKyAgICAgICAgICAgICAgICB0aGlzLl9pbm5lcnRvcC5zZXRBdHRyaWJ1dGUoJ2JnY29sb3InLCBjb2xvcik7DQorICAgICAgICAgICAgICAgIHRoaXMuX2lubmVyYm90dG9tLnNldEF0dHJpYnV0ZSgnYmdjb2xvcicsIGNvbG9yKTsNCisgICAgICAgICAgICAgICAgdGhpcy5faW5uZXJib3R0b20udGl0bGUuc2V0QXR0cmlidXRlKCd0ZXh0JywgbGFiZWwpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgIF1dPg0KKwkJPC9tZXRob2Q+DQorDQorCQk8bWV0aG9kIG5hbWU9InNldFN0cmVhbVZvbHVtZSIgYXJncz0idiI+DQorCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIiMjIyMjIyMjIyMjIyBzZXRTdHJlYW1Wb2x1bWUgIiwgdiwgdGhpcy5wdWJsaWNTSUQpOw0KKwkJCXZhciBzdHJlYW0gPSB0aGlzLl9jaGF0dmlkZW9pbm5lci5fdmlkZW9zdHJlYW07DQorCQkJaWYgKHRoaXMuaXNyZW1vdGUpIHsNCisJCQkJc3RyZWFtLnNldFNvdW5kVm9sdW1lKHYpOw0KKwkJCX0gZWxzZSB7DQorCQkJCXN0cmVhbS5zZXRBdHRyaWJ1dGUoJ21pY0dhaW4nLCB2KTsNCisJCQkJc3RyZWFtLm1pY3JvLmdhaW4gPSB2Ow0KKwkJCQlpZiAoMCA9PSB2KSB7DQorCQkJCQl0aGlzLnNldE1pY011dGVkKHRydWUpOw0KKwkJCQkJY2FudmFzLnZpZGVvQ29tcF9sYy5zZW5kKGNhbnZhcy52aWRlb0NvbXBfbGNfbmFtZSwgJ2xjX3N3aXRjaE1pY011dGVkJywgdGhpcy5wdWJsaWNTSUQsIHRydWUpOw0KKwkJCQl9IGVsc2UgaWYgKG1pY011dGVkKSB7DQorCQkJCQl0aGlzLnNpbGVuY2VNaWNyb3Bob25lKGZhbHNlKTsNCisJCQkJfQ0KKwkJCX0NCisJCTwvbWV0aG9kPg0KKw0KKwkJPG1ldGhvZCBuYW1lPSJnZXRTdHJlYW1Wb2x1bWUiPg0KKwkJCXZhciBzdHJlYW0gPSB0aGlzLl9jaGF0dmlkZW9pbm5lci5fdmlkZW9zdHJlYW07DQorCQkJcmV0dXJuIHRoaXMuaXNyZW1vdGUgPyBOdW1iZXIoc3RyZWFtLl9ucy5zb3VuZFRyYW5zZm9ybS52b2x1bWUgKiAxMDApIDogc3RyZWFtLm1pY3JvLmdhaW47DQorCQk8L21ldGhvZD4NCisNCisJCTxoYW5kbGVyIG5hbWU9Im9uaGVpZ2h0IiBhcmdzPSJ2YWx1ZSI+DQorCQkJaWYgKG51bGwgPT0gaW5pdFJhdGlvIHx8ICFyZXNwZWN0UmF0aW8pIHsNCisJCQkJcmV0dXJuOw0KKwkJCX0NCisJCQl2YXIgdmlkZW9IZWlnaHQgPSB2YWx1ZSAtIHRoaXMudmlkZW9JbnNldFkgLSB0aGlzLmJvdHRvbUJhckhlaWdodDsNCisJCQl2YXIgZXhwZWN0ZWRWaWRlb1dpZHRoID0gdmlkZW9IZWlnaHQgKiBpbml0UmF0aW87DQorCQkJdmFyIGV4cGVjdGVkUG9kV2lkdGggPSBleHBlY3RlZFZpZGVvV2lkdGggKyB0aGlzLnZpZGVvSW5zZXRYOw0KKwkJCWlmICh0aGlzLndpZHRoICE9IGV4cGVjdGVkUG9kV2lkdGgpIHsNCisJCQkJdGhpcy5zZXRBdHRyaWJ1dGUoIndpZHRoIiwgZXhwZWN0ZWRQb2RXaWR0aCk7DQorCQkJfQ0KKwkJPC9oYW5kbGVyPg0KKw0KKwkJPGhhbmRsZXIgbmFtZT0ib253aWR0aCIgYXJncz0idmFsdWUiPg0KKwkJCWlmIChudWxsID09IGluaXRSYXRpbyB8fCAhcmVzcGVjdFJhdGlvKSB7DQorCQkJCXJldHVybjsNCisJCQl9DQorCQkJdmFyIHZpZGVvV2lkdGggPSB2YWx1ZSAtIHRoaXMudmlkZW9JbnNldFg7DQorCQkJdmFyIGV4cGVjdGVkVmlkZW9IZWlnaHQgPSB2aWRlb1dpZHRoIC8gaW5pdFJhdGlvOw0KKwkJCXZhciBleHBlY3RlZFBvZEhlaWdodCA9IGV4cGVjdGVkVmlkZW9IZWlnaHQgKyB0aGlzLnZpZGVvSW5zZXRZICsgdGhpcy5ib3R0b21CYXJIZWlnaHQ7DQorCQkJaWYgKHRoaXMuaGVpZ2h0ICE9IGV4cGVjdGVkUG9kSGVpZ2h0KSB7DQorCQkJCXRoaXMuc2V0QXR0cmlidXRlKCJoZWlnaHQiLCBleHBlY3RlZFBvZEhlaWdodCk7DQorCQkJfQ0KKwkJPC9oYW5kbGVyPg0KKwk8L2NsYXNzPg0KKzwvbGlicmFyeT4NCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL3ZpZGVvL2NoYW5nZURldmljZS5senggYi9XZWJDb250ZW50L3N3ZjEwL3ZpZGVvL2NoYW5nZURldmljZS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGE5NzQzNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3dmMTAvdmlkZW8vY2hhbmdlRGV2aWNlLmx6eApAQCAtMCwwICsxLDE2MCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+DQorPCEtLQ0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAgDQorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICAgIAkgIA0KKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICB1bmRlciB0aGUgTGljZW5zZS4NCisgIA0KKy0tPg0KKzxsaWJyYXJ5Pg0KKw0KKzxjbGFzcyBuYW1lPSJjaGFuZ2VEZXZpY2UiIGV4dGVuZHM9ImxhYmVsRXhwbG9yZXJCb3giIGxhYmVsaWQ9IjUxIg0KKyAgICBkb2NraW5nPSJ0cnVlIiByZXNpemVhYmxlPSJmYWxzZSIgY2xvc2FibGU9InRydWUiIHdpZHRoPSIzMDAiIHg9IjE0IiBoZWlnaHQ9IjI2MCI+DQorDQorICAgIDxzd2l0Y2g+DQorICAgICAgICA8d2hlbiBwcm9wZXJ0eT0iJGFzMyI+DQorICAgICAgICAgICAgPHBhc3N0aHJvdWdoPg0KKyAgICAgICAgICAgICAgICBpbXBvcnQgZmxhc2gubmV0LlNoYXJlZE9iamVjdDsNCisgICAgICAgICAgICA8L3Bhc3N0aHJvdWdoPg0KKyAgICAgICAgPC93aGVuPg0KKyAgICA8L3N3aXRjaD4NCisNCisgICAgPG1ldGhvZCBuYW1lPSJzdG9yZWxvY2FsZGF0YSI+DQorICAgICAgICA8IVtDREFUQVsNCisgICAgICAgIHZhciBzbzpTaGFyZWRPYmplY3QgPSBTaGFyZWRPYmplY3QuZ2V0TG9jYWwoJ3VzZXJkYXRhJyk7DQorICAgICAgICB2YXIgc2RhdGEgPSBzby5kYXRhOw0KKyAgICAgICAgaWYgKHNkYXRhPT1udWxsKSBzZGF0YSA9IG5ldyBBcnJheSgpOw0KKyAgICAgICAgc2RhdGFbImNhbSJdPWF2YWlsaWJsZUNhbXMzLmdldFZhbHVlKCk7DQorICAgICAgICBzZGF0YVsibWljIl09YXZhaWxpYmxlTWljczMuZ2V0VmFsdWUoKTsNCisgICAgICAgIHNkYXRhWyJzYXZlY2FtZGF0YSJdID0gdGhpcy5ob2xkZGF0YWluU08uZ2V0VmFsdWUoKTsNCisgICAgICAgIHNvLmZsdXNoKCk7DQorICAgICAgICBdXT4NCisgICAgPC9tZXRob2Q+ICAgDQorICAgIA0KKyAgICA8bWV0aG9kIG5hbWU9ImRvbmluaXRhbGl6ZSI+DQorICAgICAgICB0aGlzLnN0b3JlbG9jYWxkYXRhKCk7DQorICAgICAgICB0aGlzLmNsb3NlKCk7DQorICAgIDwvbWV0aG9kPg0KKyAgICAgDQorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iNTIiIGZvbnRzaXplPSIxMSIgeD0iMTAiIHk9IjMwIiAvPg0KKw0KKyAgICA8cmVzZXRDb21ib2JveCBmb250c2l6ZT0iMTEiIGlkPSJhdmFpbGlibGVDYW1zMyIgeD0iMTAiIHk9IjUwIiB3aWR0aD0iMjgwIiBlZGl0YWJsZT0iZmFsc2UiPg0KKyAgICAgICAgPHN3aXRjaD4NCisgICAgICAgICAgICA8d2hlbiBwcm9wZXJ0eT0iJGFzMyI+DQorICAgICAgICAgICAgICAgIDxwYXNzdGhyb3VnaD4NCisgICAgICAgICAgICAgICAgICAgIGltcG9ydCBmbGFzaC5tZWRpYS5DYW1lcmE7DQorICAgICAgICAgICAgICAgICAgICBpbXBvcnQgZmxhc2gubmV0LlNoYXJlZE9iamVjdDsNCisgICAgICAgICAgICAgICAgPC9wYXNzdGhyb3VnaD4NCisgICAgICAgICAgICA8L3doZW4+DQorICAgICAgICA8L3N3aXRjaD4NCisNCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+DQorICAgICAgICAgICAgPCFbQ0RBVEFbDQorICAgICAgICAgICAgLy9HZXQgYWxsIGF2YWlsaWJsZSBDYW0ncw0KKyAgICAgICAgICAgIHZhciB0dyA9IENhbWVyYS5uYW1lczsNCisgICAgICAgICAgICB2YXIgdCA9ICIiOw0KKyAgICAgICAgICAgIGZvciAodmFyIGVnPTA7ZWc8dHcubGVuZ3RoO2VnKyspew0KKyAgICAgICAgICAgICAgICB0aGlzLmFkZEl0ZW0odHdbZWddLGVnKTsNCisgICAgICAgICAgICAgICAgdD1lZzsNCisgICAgICAgICAgICB9DQorDQorICAgICAgICAgICAgdmFyIHNvOlNoYXJlZE9iamVjdCA9IFNoYXJlZE9iamVjdC5nZXRMb2NhbCgndXNlcmRhdGEnKTsNCisJICAgICAgICB2YXIgc2RhdGEgPSBzby5kYXRhOw0KKwkgICAgICAgIHZhciBjYW07DQorICAgICAgICAgICAgaWYgKHNkYXRhICE9IG51bGwpew0KKyAgICAgICAgICAgICAgICBjYW0gPSBzZGF0YVsiY2FtIl07DQorICAgICAgICAgICAgICAgIGlmIChjYW0gPT0gJ3VuZGVmaW5lZCcpIHsNCisgICAgICAgICAgICAgICAgICAgIGNhbSA9IHQ7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICBjYW0gPSB0Ow0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICB0aGlzLnNlbGVjdEl0ZW0oU3RyaW5nKGNhbSkpOw0KKyAgICAgICAgICAgIF1dPg0KKyAgICAgICAgPC9oYW5kbGVyPg0KKyAgICA8L3Jlc2V0Q29tYm9ib3g+DQorICAgIA0KKyAgICA8bGFiZWxUZXh0IHRleHQ9IkxBQkVMNTMiIGxhYmVsaWQ9IjUzIiBmb250c2l6ZT0iMTEiIHg9IjEwIiB5PSI4MCIgLz4NCisNCisgICAgPHJlc2V0Q29tYm9ib3ggZm9udHNpemU9IjExIiBpZD0iYXZhaWxpYmxlTWljczMiICB4PSIxMCIgeT0iMTAwIiB3aWR0aD0iMjgwIiBlZGl0YWJsZT0iZmFsc2UiPg0KKyAgICAgICAgPHN3aXRjaD4NCisgICAgICAgICAgICA8d2hlbiBwcm9wZXJ0eT0iJGFzMyI+DQorICAgICAgICAgICAgICAgIDxwYXNzdGhyb3VnaD4NCisgICAgICAgICAgICAgICAgICAgIGltcG9ydCBmbGFzaC5tZWRpYS5NaWNyb3Bob25lOw0KKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0IGZsYXNoLm5ldC5TaGFyZWRPYmplY3Q7DQorICAgICAgICAgICAgICAgIDwvcGFzc3Rocm91Z2g+DQorICAgICAgICAgICAgPC93aGVuPg0KKyAgICAgICAgPC9zd2l0Y2g+DQorDQorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPg0KKyAgICAgICAgICAgIDwhW0NEQVRBWw0KKyAgICAgICAgICAgIC8vR2V0IGFsbCBhdmFpbGlibGUgTWljJ3MNCisgICAgICAgICAgICB2YXIgdHcgPSBNaWNyb3Bob25lLm5hbWVzOw0KKyAgICAgICAgICAgIHZhciB0ID0gIiI7DQorICAgICAgICAgICAgZm9yICh2YXIgZWc9MDtlZzx0dy5sZW5ndGg7ZWcrKyl7DQorICAgICAgICAgICAgICAgIHQ9ZWc7DQorICAgICAgICAgICAgICAgIHRoaXMuYWRkSXRlbSh0d1tlZ10sZWcpOw0KKyAgICAgICAgICAgIH0NCisNCisgICAgICAgICAgICB2YXIgc286U2hhcmVkT2JqZWN0ID0gU2hhcmVkT2JqZWN0LmdldExvY2FsKCd1c2VyZGF0YScpOw0KKwkgICAgICAgIHZhciBzZGF0YSA9IHNvLmRhdGE7DQorCSAgICAgICAgdmFyIG1pYzsNCisJICAgICAgICBpZiAoc2RhdGEgIT0gbnVsbCl7DQorICAgICAgICAgICAgICAgIG1pYyA9IHNkYXRhWyJtaWMiXTsNCisgICAgICAgICAgICAgICAgaWYgKG1pYyA9PSAndW5kZWZpbmVkJykgew0KKyAgICAgICAgICAgICAgICAgICAgbWljID0gdDsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIG1pYyA9IHQ7DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIHRoaXMuc2VsZWN0SXRlbShTdHJpbmcobWljKSk7DQorICAgICAgICAgICAgXV0+DQorICAgICAgICA8L2hhbmRsZXI+DQorICAgIDwvcmVzZXRDb21ib2JveD4NCisNCisgICAgPCEtLSBSZW1lbWJlciBNZSAtLT4NCisgICAgPGxhYmVsQ2hlY2tib3ggbmFtZT0iaG9sZGRhdGFpblNPIiBsYWJlbGlkPSI3NjIiIHg9IjEwIiB5PSIyMjAiPg0KKyAgICAgICAgPHN3aXRjaD4NCisgICAgICAgICAgICA8d2hlbiBwcm9wZXJ0eT0iJGFzMyI+DQorICAgICAgICAgICAgICAgIDxwYXNzdGhyb3VnaD4NCisgICAgICAgICAgICAgICAgICAgIGltcG9ydCBmbGFzaC5uZXQuU2hhcmVkT2JqZWN0Ow0KKyAgICAgICAgICAgICAgICA8L3Bhc3N0aHJvdWdoPg0KKyAgICAgICAgICAgIDwvd2hlbj4NCisgICAgICAgIDwvc3dpdGNoPg0KKw0KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4NCisgICAgICAgICAgICB2YXIgc286U2hhcmVkT2JqZWN0ID0gU2hhcmVkT2JqZWN0LmdldExvY2FsKCd1c2VyZGF0YScpOw0KKwkgICAgICAgIHZhciBzZGF0YSA9IHNvLmRhdGE7DQorICAgICAgICAgICAgdmFyIHNhdmUgPSBzZGF0YVsic2F2ZWNhbWRhdGEiXTsNCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2F2ZWNhbWRhdGEgc2F2ZTogIixzYXZlKTsNCisgICAgICAgICAgICBpZihzYXZlKSB0aGlzLnNldFZhbHVlKHRydWUpOw0KKyAgICAgICAgPC9oYW5kbGVyPiAgICAgICAgIA0KKyAgICA8L2xhYmVsQ2hlY2tib3g+DQorICAgIA0KKyAgICA8c2ltcGxlTGFiZWxCdXR0b24gZm9udHNpemU9IjExIiBsYWJlbGlkPSI1NCIgeD0iODAiIHk9IjE5MCIgd2lkdGg9IjEwMCI+DQorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4NCisgICAgICAgICAgICB0aGlzLnBhcmVudC5kb25pbml0YWxpemUoKTsNCisgICAgICAgIDwvaGFuZGxlcj4NCisgICAgPC9zaW1wbGVMYWJlbEJ1dHRvbj4NCisgICAgDQorICAgIDxsYWJlbFRleHQgbGFiZWxpZD0iNTYiIHdpZHRoPSIyODAiIHg9IjEwIg0KKyAgICAJeT0iMTUwIiBtdWx0aWxpbmU9InRydWUiIHJlc2l6ZT0iZmFsc2UiLz4NCisgICAgDQorICAgIDxzaW1wbGVMYWJlbEJ1dHRvbiBsYWJlbGlkPSI1NSIgd2lkdGg9IjEwMCIgeD0iMTkwIiB5PSIxOTAiDQorICAgICAgICBvbmNsaWNrPSJ0aGlzLnBhcmVudC5jbG9zZSgpOyIgLz4NCisgICAgDQorPC9jbGFzcz4NCisNCis8L2xpYnJhcnk+DQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC92aWRlby9lZGl0UmVjb3JkU3RyZWFtU1dGMTAubHp4IGIvV2ViQ29udGVudC9zd2YxMC92aWRlby9lZGl0UmVjb3JkU3RyZWFtU1dGMTAubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0NzRlMDgKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL3ZpZGVvL2VkaXRSZWNvcmRTdHJlYW1TV0YxMC5sengKQEAgLTAsMCArMSw5MTMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/Pg0KKzwhLS0NCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgIA0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAgICAJICANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAgdW5kZXIgdGhlIExpY2Vuc2UuDQorICANCistLT4NCis8bGlicmFyeT4NCisgICAgDQorPCEtLSAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KKwlDbGFzcyBlZGl0UmVjb3JkU3RyZWFtDQorCQ0KKwlEZXNjcmlwdGlvbjoNCisJVGhpcyBDbGFzcyBzaG93cyBhIHdpbmRvdyB3aGVyZSB5b3UgY2FuIGFsdGVyIHlvdSBWaWRlby0vTWljcm9waG9uZS0gSW5wdXQtUmVzb3VyY2VzDQorCWFuZCBzdGFydCB0byBzdHJlYW0uIFRoZSBhcHAgY291bGQgYWxzbyB1c2UgdGhlIGRlZmF1bHQgdmFsdWVzIGZvciBDYW0vTWljIGJ1dA0KKwltb3N0IHVzZXJzIGRvbid0IGtub3cgaG93IHRvIGFsdGVyIHRoaXMgKHdlYXRoZXIgaW4gU3lzdGVtLUNvbnRyb2wtUGFuZWwgb3IgYnkgUmlnaHQgQ2xpY2tpbmcNCisJb24gdGhlIEZsYXNoLVNjcmVlbiBhbmQgKj5QcmVmZXJlbmNlcz5DYW1lcmEqICkNCisJU28gSSB0aGluayBpdCBpcyBiZXR0ZXIgaWYgVXNlcnMgYXJlIGZvcmNlZCB0byBjaG9vc2Ugc29tZXRoaW5nIGZyb20gdGhpcyBsaXN0DQorCQ0KKyAtLT4NCisgDQorPGNsYXNzIG5hbWU9ImVkaXRSZWNvcmRTdHJlYW1TV0YxMCIgIGV4dGVuZHM9ImxhYmVsRXhwbG9yZXJCb3giIGxhYmVsaWQ9IjUxIg0KKwl3aWR0aD0iNjAwIiBoZWlnaHQ9IjUwMCIgeD0iMTQiIHk9Ii01NDAiID4NCisNCisgICAgPHN3aXRjaD4NCisgICAgICAgIDx3aGVuIHByb3BlcnR5PSIkYXMzIj4NCisgICAgICAgICAgICA8cGFzc3Rocm91Z2g+DQorCQkJCWltcG9ydCBmbGFzaC5ldmVudHMuU3RhdHVzRXZlbnQ7DQorICAgICAgICAgICAgICAgIGltcG9ydCBmbGFzaC5tZWRpYS5DYW1lcmE7DQorICAgICAgICAgICAgICAgIGltcG9ydCBmbGFzaC5tZWRpYS5NaWNyb3Bob25lOw0KKyAgICAgICAgICAgICAgICBpbXBvcnQgZmxhc2gubWVkaWEuTWljcm9waG9uZUVuaGFuY2VkTW9kZTsNCisgICAgICAgICAgICAgICAgaW1wb3J0IGZsYXNoLm1lZGlhLk1pY3JvcGhvbmVFbmhhbmNlZE9wdGlvbnM7DQorICAgICAgICAgICAgICAgIGltcG9ydCBmbGFzaC5uZXQuU2hhcmVkT2JqZWN0Ow0KKyAgICAgICAgICAgICAgICBpbXBvcnQgZmxhc2gubWVkaWEuU291bmRDb2RlYzsNCisgICAgICAgICAgICA8L3Bhc3N0aHJvdWdoPg0KKyAgICAgICAgPC93aGVuPg0KKyAgICA8L3N3aXRjaD4NCisNCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJteXZpZGVvY29udGFpbmVyIiB2YWx1ZT0ibnVsbCIgLz4NCisNCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJjaG9zZW5DYW0iIHZhbHVlPSJudWxsIiAvPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9ImNob3Nlbk1pYyIgdmFsdWU9Im51bGwiIC8+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0iY2hvc2VuU2V0dGluZyIgdmFsdWU9Im51bGwiIC8+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0iY3VycmVudENsaWVudCIgdmFsdWU9Im51bGwiIC8+DQorDQorICAgIDxhdHRyaWJ1dGUgbmFtZT0icmVtb3RlTWVzc2FnZSIgdmFsdWU9Im51bGwiIC8+DQorDQorICAgIDwhLS0tDQorICAgICAgICBpZiB0cnVlIHRoZSB1c2VyIHdpbGwgc2VlIHRoZSBkaWFsb2cgbm8gbWF0dGVyIGlmIGhlIGhhcyBjaG9vc2VuICJkbyBub3Qgc2hvdyBhZ2FpbiIgb3Igbm90DQorICAgICAtLT4NCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpc1N5bmNVcGRhdGUiIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4NCisNCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJkb0RlZmF1bHRBbmltYXRpb24iIHZhbHVlPSJ0cnVlIiB0eXBlPSJib29sZWFuIiAvPg0KKw0KKyAgICA8YXR0cmlidXRlIG5hbWU9ImNhbV9kZWZhdWx0X3dpZHRoIiB2YWx1ZT0iMjQwIiB0eXBlPSJudW1iZXIiIC8+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0iY2FtX2RlZmF1bHRfaGVpZ2h0IiB2YWx1ZT0iMTgwIiB0eXBlPSJudW1iZXIiIC8+DQorICAgIA0KKyAgICA8YXR0cmlidXRlIG5hbWU9ImludGVydmlld1BvZElkIiB2YWx1ZT0iMCIgdHlwZT0ibnVtYmVyIiAvPg0KKyAgICANCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJsYXN0UmVjb3JkZWQiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIgLz4NCisJDQorCTxhdHRyaWJ1dGUgbmFtZT0iaXNSdW5uaW5nIiB2YWx1ZT0iZmFsc2UiIHR5cGU9ImJvb2xlYW4iIC8+DQorCQ0KKwk8YXR0cmlidXRlIG5hbWU9InJlY29yZGluZ3NDb3VudGVyIiB2YWx1ZT0iNSIgdHlwZT0ibnVtYmVyIiAvPg0KKwkNCisJPGF0dHJpYnV0ZSBuYW1lPSJ0aW1lcklzUnVubmluZyIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPg0KKwkNCisJPGF0dHJpYnV0ZSBuYW1lPSJjb3VudGVyRGVsZWdhdGUiIHZhbHVlPSJudWxsIiAvPg0KKwkNCisJPG1ldGhvZCBuYW1lPSJzdGFydFRpbWVyIj4NCisJCXRoaXMudGltZXJJc1J1bm5pbmcgPSB0cnVlOw0KKwkJdGhpcy50aW1lcldhc1VubXV0ZWRUaGVGaXJzdFRpbWUgPSB0cnVlOw0KKwkJbHouVGltZXIuYWRkVGltZXIoIHRoaXMuY291bnRlckRlbGVnYXRlLCAxMDAwICk7DQorCTwvbWV0aG9kPg0KKwkNCisJPG1ldGhvZCBuYW1lPSJjb3VudCIgYXJncz0iY2FsbGVlT2JqIj4NCisJCWlmICh0aGlzLnJlY29yZGluZ3NDb3VudGVyICE9IDApew0KKwkJCXRoaXMucmVjb3JkaW5nc0NvdW50ZXIgLT0gMTsNCisJCQlsei5UaW1lci5hZGRUaW1lciggdGhpcy5jb3VudGVyRGVsZWdhdGUsIDEwMDAgKTsNCisJCQkNCisJCQl0aGlzLl90ZXh0Ll9pbmZvLnNldEF0dHJpYnV0ZSgidGV4dCIsIiIrdGhpcy5yZWNvcmRpbmdzQ291bnRlcisiIHNlYyIpOw0KKwkJCQ0KKwkJfSBlbHNlIHsNCisJCQl0aGlzLl90ZXh0LnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOw0KKwkJCXRoaXMuZG9TdG9wKCk7DQorCQkJdGhpcy50aW1lcklzUnVubmluZyA9IGZhbHNlOw0KKwkJCXRoaXMuZG9QbGF5KCk7DQorCQl9DQorCTwvbWV0aG9kPg0KKwkNCisJPG1ldGhvZCBuYW1lPSJzdGFydFRpbWVyVG9Db3VudCI+DQorCQlpZiAoIXRoaXMudGltZXJJc1J1bm5pbmcpIHsNCisJCQl0aGlzLnN0YXJ0VGltZXIoKTsNCisJCX0NCisJPC9tZXRob2Q+DQorCQ0KKwk8aGFuZGxlciBuYW1lPSJvbmluaXQiPg0KKwkJPCFbQ0RBVEFbDQorCQkJLy9NYWtlIHRoaXMgdmlldyB0aGUgdXBtb3N0IGluIHRoZSB6LUluZGV4IG9yZGVyDQorCQkJY2FudmFzLmlubmVyLmJyaW5nVG9Gcm9udCgpOw0KKwkJDQorCQkJdGhpcy5jb3VudGVyRGVsZWdhdGUgPSBuZXcgTHpEZWxlZ2F0ZSggdGhpcywgImNvdW50IiApOw0KKwkJDQorCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInRoaXMubXl2aWRlb2NvbnRhaW5lciAiLHRoaXMubXl2aWRlb2NvbnRhaW5lcik7DQorCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoImVkaXRyZWNvcmRzdHJlYW0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyAiKTsNCisNCisJCQljYW52YXMudmlkZW9Db21wX2xjLmNsaWVudCA9IHtjbGJfZ2V0QnJvYWRDYXN0SWQ6IHRoaXMuY2xiX2dldEJyb2FkQ2FzdElkLCBjbGJfc2V0VXNlckFWU2V0dGluZ3M6IHRoaXMuY2xiX3NldFVzZXJBVlNldHRpbmdzfTsNCisNCisJICAgICAgICB2YXIgc2hhcmVkRGF0YSA9IHRoaXMuY2hlY2tEZXZpY2VTZXR0aW5nc1JlbWVtYmVyU3RhdHVzKCk7DQorICAgICAgICAgICAgaWYoc2hhcmVkRGF0YSAhPSBudWxsKSB7DQorICAgICAgICAgICAgICAgIHRoaXMuY2hvc2VuQ2FtID0gc2hhcmVkRGF0YVsiY2FtIl07DQorICAgICAgICAgICAgICAgIHRoaXMuY2hvc2VuTWljID0gc2hhcmVkRGF0YVsibWljIl07DQorICAgICAgICAgICAgICAgIHRoaXMuY2FtX2RlZmF1bHRfd2lkdGggPSBzaGFyZWREYXRhWyJ3aWR0aCJdOw0KKyAgICAgICAgICAgICAgICB0aGlzLmNhbV9kZWZhdWx0X2hlaWdodCA9IHNoYXJlZERhdGFbImhlaWdodCJdOw0KKyAgICAgICAgICAgICAgICB0aGlzLmNob3NlblNldHRpbmcgPSBzaGFyZWREYXRhWyJhdnN0b3JlZCJdOw0KKyAgICAgICAgICAgICAgICB0aGlzLnJlbW90ZU1lc3NhZ2UgPSBuZXcgQXJyYXkoKTsNCisgICAgICAgICAgICAgICAgdGhpcy5yZW1vdGVNZXNzYWdlWzBdID0gJ2F2c2V0dGluZ3MnOw0KKyAgICAgICAgICAgICAgICB0aGlzLnJlbW90ZU1lc3NhZ2VbMl0gPSB0aGlzLmNob3NlblNldHRpbmc7IA0KKyAgICAgICAgICAgICAgICB0aGlzLmdldEJyb2FkQ2FzdElkLmRvQ2FsbCgpOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIGlmICh0aGlzLmRvRGVmYXVsdEFuaW1hdGlvbiAmJiAhY2FudmFzLmlzSW50ZXJ2aWV3KSB7DQorICAgICAgICAgICAgICAgICAgICB0aGlzLl9jaG9vc2VEZXZpY2VBbmltYXRpb24uc2V0QXR0cmlidXRlKCdzdGFydGVkJywgdHJ1ZSk7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgdGhpcy5pbml0SXRlbXNBbmREZWZhdWx0QXR0YWNoQ2FtZXJhKCk7DQorICAgICAgICAgICAgfQ0KKwkgICAgICAgIA0KKwkgICAgICAgIGlmIChjYW52YXMuaXNJbnRlcnZpZXcpIHsNCisJICAgICAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIklzIGludGVydmlldyAiLGludGVydmlld1BvZElkKTsNCisgICAgICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoIngiLGNhbnZhc1siaW50ZXJ2aWV3UG9kIitpbnRlcnZpZXdQb2RJZCsiX3giXSk7DQorICAgICAgICAgICAgICAgIHRoaXMuc2V0QXR0cmlidXRlKCJ5IixjYW52YXNbImludGVydmlld1BvZCIraW50ZXJ2aWV3UG9kSWQrIl95Il0pOw0KKwkgICAgICAgIH0NCisgICAgICAgIF1dPg0KKwk8L2hhbmRsZXI+DQorCQ0KKwk8IS0tIA0KKwkgICBJZiB0aGUgcmVtZW1iZXIgY2hlY2stYm94IHdhcyB0cnVlLCB0aGlzIGZsYWcgaW4gdGhlIEZsYXNoIENvb2tpZSAoYWthIFNoYXJlZE9iamVjdCkNCisJICAgaXMgdHJ1ZSBhbmQgdGhlIGJveCB3aWxsIGNsb3NlIHdpdGhvdXQgYXNraW5nIGZvciBkZXZpY2Ugc2V0dGluZ3MuDQorCSAtLT4NCisJPG1ldGhvZCBuYW1lPSJjaGVja0RldmljZVNldHRpbmdzUmVtZW1iZXJTdGF0dXMiPg0KKwkgICAgPCFbQ0RBVEFbDQorCQl2YXIgdDpTaGFyZWRPYmplY3QgPSBTaGFyZWRPYmplY3QuZ2V0TG9jYWwoJ3VzZXJkYXRhJyk7DQorCQl2YXIgZyA9IHQuZGF0YTsNCisJCXZhciBzYXZlID0gZ1sic2F2ZWNhbWRhdGEiXTsNCisJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzYXZlOiAiLHNhdmUsZ1siY2FtIl0sZ1sibWljIl0sdGhpcy5pc1N5bmNVcGRhdGUpOw0KKwkJLy9JbiBjYXNlIGl0cyBhbiBBdWRpby1Pbmx5IFJvb20gdGhpcyBib3ggc2hvdWxkIG5vdCBjbG9zZSBhdXRvbWF0aWNhbGx5DQorCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiY2FudmFzLmN1cnJlbnRSb29tT2JqZWN0OiAiLCBjYW52YXMuY3VycmVudFJvb21PYmplY3QpOw0KKwkJDQorCQkvL0luIGNhc2UgdGhlIHVzZXIgcHJlc3NlcyB0aGUgU3luYyBCdXR0b24gdGhpcyBib3ggc2hvdWxkDQorICAgICAgICAvL25vdCBjbG9zZSBhdXRvbWF0aWNhbGx5IGFuZCBkbyB0aGUgdXNlci1wcmVmZXJlZCB2YWx1ZXMNCisJCWlmKHNhdmUgJiYgIXRoaXMuaXNTeW5jVXBkYXRlICYmIHRoaXMuY2hlY2tMb2NhbERhdGFDb21wbGV0ZSgpKSB7DQorCQkgICAgcmV0dXJuIGc7DQorCQl9DQorCQlyZXR1cm4gbnVsbDsNCisJCV1dPg0KKwk8L21ldGhvZD4NCisJDQorCTwhLS0gDQorCSAgIENoZWNrcyBpZiBhbGwgbmVlZGVkIGRhdGEgaW4gdGhlIHNoYXJlZCBvYmplY3QgaXMgYXZhaWxhYmxlDQorCSAtLT4NCisJPG1ldGhvZCBuYW1lPSJjaGVja0xvY2FsRGF0YUNvbXBsZXRlIj4NCisgICAgICAgIDwhW0NEQVRBWw0KKyAgICAgICAgCXZhciB0OlNoYXJlZE9iamVjdCA9IFNoYXJlZE9iamVjdC5nZXRMb2NhbCgndXNlcmRhdGEnKTsNCisJICAgICAgICB2YXIgZyA9IHQuZGF0YTsNCisgICAgICAgICAgICBpZiAoZ1sid2lkdGgiXSA+IDAgJiYgZ1siaGVpZ2h0Il0gPiAwKSB7DQorICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQorICAgICAgICBdXT4NCisgICAgPC9tZXRob2Q+DQorICAgIA0KKyAgICANCisgICAgPG5ldFJlbW90ZUNhbGxIaWIgbmFtZT0iZ2V0QnJvYWRDYXN0SWQiIGZ1bmNuYW1lPSJnZXRCcm9hZENhc3RJZCINCisgICAgICAgICAgICAgICAgICAgICAgcmVtb3RlY29udGV4dD0iJG9uY2V7IGNhbnZhcy50aGlzaGliIH0iID4NCisNCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSIgYXJncz0idmFsdWUiPg0KKyAgICAgICAgICAgIDwhW0NEQVRBWw0KKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZ2V0QnJvYWRDYXN0SWQiLHZhbHVlLGNhbnZhcy5wdWJsaWNTSUQpOw0KKyAgICAgICAgICAgICAgICBwYXJlbnQubXl2aWRlb2NvbnRhaW5lciA9IGNhbnZhcy5fdmlkZW9Db21wb25lbnQuY3JlYXRlVmlkZW9PYmplY3QoY2FudmFzLnB1YmxpY1NJRCwgdHJ1ZSwgcGFyZW50LmludGVydmlld1BvZElkLCBjYW52YXMudXNlcm9iamVjdCk7DQorDQorICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJwYXJlbnQuc2V0VXNlckFWU2V0dGluZ3MgLTEtICIscGFyZW50LmNob3NlblNldHRpbmcpOw0KKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgicGFyZW50LnNldFVzZXJBVlNldHRpbmdzIC0yLSAiLHBhcmVudC5yZW1vdGVNZXNzYWdlKTsNCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInBhcmVudC5zZXRVc2VyQVZTZXR0aW5ncyAtMy0gIixwYXJlbnQuY2FtX2RlZmF1bHRfd2lkdGgpOw0KKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgicGFyZW50LnNldFVzZXJBVlNldHRpbmdzIC00LSAiLHBhcmVudC5jYW1fZGVmYXVsdF9oZWlnaHQpOw0KKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgicGFyZW50LnNldFVzZXJBVlNldHRpbmdzIC01YS0gIixjYW52YXMuY3VycmVudFJvb21PYmplY3Qucm9vbXNfaWQpOw0KKyAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgicGFyZW50LnNldFVzZXJBVlNldHRpbmdzIC02LSAiLGNhbnZhcy5wdWJsaWNTSUQpOw0KKyAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAgcGFyZW50LnNldFVzZXJBVlNldHRpbmdzLmRvQ2FsbCgpOw0KKyAgICAgICAgICAgIF1dPg0KKyAgICAgICAgPC9oYW5kbGVyPiAgIA0KKyAgICA8L25ldFJlbW90ZUNhbGxIaWI+ICANCisgICAgDQorICAgIDxuZXRSZW1vdGVDYWxsSGliIG5hbWU9InNldFVzZXJBVlNldHRpbmdzIiBmdW5jbmFtZT0ic2V0VXNlckFWU2V0dGluZ3MiIA0KKyAgICAgICAgICAgICAgICAgICAgICByZW1vdGVjb250ZXh0PSIkb25jZXsgY2FudmFzLnRoaXNoaWIgfSIgPiAgDQorICAgICAgICA8bmV0cGFyYW0+PG1ldGhvZCBuYW1lPSJnZXRWYWx1ZSI+cmV0dXJuIHBhcmVudC5wYXJlbnQuY2hvc2VuU2V0dGluZzs8L21ldGhvZD48L25ldHBhcmFtPg0KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50LnJlbW90ZU1lc3NhZ2U7PC9tZXRob2Q+PC9uZXRwYXJhbT4NCisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gcGFyZW50LnBhcmVudC5jYW1fZGVmYXVsdF93aWR0aDs8L21ldGhvZD48L25ldHBhcmFtPg0KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50LmNhbV9kZWZhdWx0X2hlaWdodDs8L21ldGhvZD48L25ldHBhcmFtPg0KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBjYW52YXMuY3VycmVudFJvb21PYmplY3Qucm9vbXNfaWQ7PC9tZXRob2Q+PC9uZXRwYXJhbT4NCisgICAgICAgIDxuZXRwYXJhbT48bWV0aG9kIG5hbWU9ImdldFZhbHVlIj5yZXR1cm4gY2FudmFzLnB1YmxpY1NJRDs8L21ldGhvZD48L25ldHBhcmFtPg0KKyAgICAgICAgPG5ldHBhcmFtPjxtZXRob2QgbmFtZT0iZ2V0VmFsdWUiPnJldHVybiBwYXJlbnQucGFyZW50LmludGVydmlld1BvZElkOzwvbWV0aG9kPjwvbmV0cGFyYW0+DQorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmRhdGEiIGFyZ3M9InZhbHVlIj4NCisgICAgICAgICAgICA8IVtDREFUQVsNCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInNldFVzZXJBVlNldHRpbmdzIix2YWx1ZSk7DQorICAgICAgICAgICAgICAgIHBhcmVudC5jdXJyZW50Q2xpZW50ID0gdmFsdWU7DQorICAgICAgICAgICAgICAgIHBhcmVudC5kb1N0YXJ0Q29uZmVyZW5jZSgpOw0KKyAgICAgICAgICAgIF1dPg0KKyAgICAgICAgPC9oYW5kbGVyPiAgIA0KKyAgICA8L25ldFJlbW90ZUNhbGxIaWI+ICANCisNCisgICAgPG1ldGhvZCBuYW1lPSJzdG9yZWxvY2FsZGF0YSI+DQorICAgICAgICA8IVtDREFUQVsNCisgICAgICAgICAgICAvL0RlYnVnLndyaXRlKCJzaGFyZWRvYmplY3Qgc3RvcmUgIik7DQorICAgICAgICAgICAgdmFyIHQ6U2hhcmVkT2JqZWN0ID0gU2hhcmVkT2JqZWN0LmdldExvY2FsKCd1c2VyZGF0YScpOw0KKyAgICAgICAgICAgIHZhciBnID0gdC5kYXRhOw0KKyAgICAgICAgICAgIGlmIChnPT1udWxsKSBnID0gbmV3IEFycmF5KCk7DQorICAgICAgICAgICAgZ1siY2FtIl0gPSB0aGlzLmF2YWlsaWJsZUNhbXMuZ2V0VmFsdWUoKTsNCisJICAgICAgICBnWyJtaWMiXSA9IHRoaXMuYXZhaWxpYmxlTWljcy5nZXRWYWx1ZSgpOw0KKwkgICAgICAgIGdbImF2c3RvcmVkIl0gPSB0aGlzLmF2YWlsaWJsZVNldHRpbmdzLmdldFZhbHVlKCk7DQorCSAgICAgICAgZ1sic2F2ZWNhbWRhdGEiXSA9IHRoaXMuaG9sZGRhdGFpblNPLmdldFZhbHVlKCk7DQorCSAgICAgICAgZ1sid2lkdGgiXSA9IHRoaXMuY2FtX2RlZmF1bHRfd2lkdGg7DQorCSAgICAgICAgZ1siaGVpZ2h0Il0gPSB0aGlzLmNhbV9kZWZhdWx0X2hlaWdodDsNCisgICAgICAgICAgICB0LmZsdXNoKCk7DQorICAgICAgICBdXT4NCisgICAgPC9tZXRob2Q+DQorDQorCTxtZXRob2QgbmFtZT0iZ2V0TWljIiBhcmdzPSJ2YWxNaWMiPg0KKwk8IVtDREFUQVsNCisJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJFbnRlcmluZyBnZXRNaWMgLi4uIiwgdmFsTWljKTsNCisJCXZhciBfbWljcm8gPSBudWxsOw0KKwkJaWYgKHZhbE1pYyAhPSBudWxsKSB7DQorCQkJX21pY3JvID0gY2FudmFzLmVjaG9QYXRoID09IDAgPyBNaWNyb3Bob25lLmdldE1pY3JvcGhvbmUodmFsTWljKSA6IE1pY3JvcGhvbmUuZ2V0RW5oYW5jZWRNaWNyb3Bob25lKHZhbE1pYyk7DQorCQkJDQorCQkJaWYgKF9taWNybyAhPSBudWxsICYmIGNhbnZhcy5lY2hvUGF0aCA9PSAyNTYpIHsNCisJCQkJdmFyIG9wdGlvbnM6TWljcm9waG9uZUVuaGFuY2VkT3B0aW9ucyA9IG5ldyBNaWNyb3Bob25lRW5oYW5jZWRPcHRpb25zKCk7DQorCQkJCW9wdGlvbnMubW9kZSA9IE1pY3JvcGhvbmVFbmhhbmNlZE1vZGUuRlVMTF9EVVBMRVg7DQorCQkJCW9wdGlvbnMuZWNob1BhdGggPSAyNTY7DQorCQkJCW9wdGlvbnMubm9uTGluZWFyUHJvY2Vzc2luZyA9IHRydWU7DQorCQkJCV9taWNyby5lbmhhbmNlZE9wdGlvbnMgPSBvcHRpb25zOw0KKwkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZWNob1BhdGggc2V0IHRvIDI1NiIpOw0KKwkJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZShfbWljcm8uZW5oYW5jZWRPcHRpb25zKTsNCisJCQl9DQorCQkJDQorCQkJaWYgKF9taWNybyAhPSBudWxsKSB7DQorCQkJCV9taWNyby5jb2RlYyA9IFNvdW5kQ29kZWMuTkVMTFlNT1NFUjsNCisJCQkJX21pY3JvLmZyYW1lc1BlclBhY2tldCA9IDE7DQorCQkJCV9taWNyby5zZXRTaWxlbmNlTGV2ZWwoMCwgMjAwMCk7DQorCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJjYW52YXMubWljcm9waG9uZVJhdGVCZXN0OiAiLGNhbnZhcy5taWNyb3Bob25lUmF0ZUJlc3QpOw0KKwkJCQlfbWljcm8ucmF0ZSA9IChjYW52YXMubWljcm9waG9uZVJhdGVCZXN0ID09ICd1bmRlZmluZWQnKSA/IDIyIDogY2FudmFzLm1pY3JvcGhvbmVSYXRlQmVzdDsNCisJCQkJX21pY3JvLmdhaW4gPSA1MDsNCisJCQkJLy8gdGhpcyBoYXMgbm8gZWZmZWN0IGlmIGVuaGFuY2VkIG1pY3JvcGhvbmUgaXMgb2J0YWluZWQNCisJCQkJLy9NaWNyb3Bob25lIHNldFVzZUVjaG9TdXByZXNzaW9uKGJvb2wpDQorCQkJCXZhciBlbmFibGVFY2hvU3VwcmVzc2lvbiA9ICEoY2FudmFzLmVjaG9TdXBwcmVzc2lvbiA9PT0gImZhbHNlIik7DQorCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJjYW52YXMuZWNob1N1cHByZXNzaW9uOiAiLGNhbnZhcy5lY2hvU3VwcHJlc3Npb24pOw0KKwkJCQlfbWljcm8uc2V0VXNlRWNob1N1cHByZXNzaW9uKGVuYWJsZUVjaG9TdXByZXNzaW9uKTsNCisJCQl9DQorCQl9DQorCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiLi4uIGdldE1pYyBET05FIiwgX21pY3JvKTsNCisJCXJldHVybiBfbWljcm87DQorCV1dPg0KKwk8L21ldGhvZD4NCisJDQorCTxtZXRob2QgbmFtZT0iZ2V0Q2FtIiBhcmdzPSJ2YWxDYW0sdmlkZW92aWV3Ij4NCisJPCFbQ0RBVEFbDQorCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiRW50ZXJpbmcgZ2V0Q2FtIC4uLiIsIHZhbENhbSk7DQorCQl2YXIgX2NhbWVyYSA9IG51bGw7DQorCQlpZiAodmFsQ2FtICE9IG51bGwpIHsNCisJCQlfY2FtZXJhID0gQ2FtZXJhLmdldENhbWVyYSh2YWxDYW0pOw0KKwkJfQ0KKwkJaWYgKF9jYW1lcmEgIT0gbnVsbCkgew0KKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJ2aWRlb3ZpZXc6ICIsdmlkZW92aWV3KTsNCisJCQkNCisJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiX2NhbWVyYS5zZXRRdWFsaXR5IEJFU1Q6ICIsIGNhbnZhcy5pc0ludGVydmlldywgKGNhbnZhcy5iYW5kd2lkdGhOZWVkZWRCZXN0KjIpLCBjYW52YXMuY2FtUXVhbGl0eUJlc3QpOw0KKwkJCWlmIChjYW52YXMuaXNJbnRlcnZpZXcpIHsNCisJCQkJLy93ZSBuZWVkIGEgZml4ZWQgZnJhbWUgcmF0ZSBmb3IgdGhlIHZpZGVvcyB0byBtZXJnZSB0aGVtIGxhdGVyIG9uDQorCQkJCV9jYW1lcmEuc2V0TW9kZSh2aWRlb3ZpZXcud2lkdGgsIHZpZGVvdmlldy5oZWlnaHQsIDI0LCB0cnVlKTsNCisJCQkJaWYgKCRkZWJ1ZykgRGVidWcud2FybigiSVMgSU5URVJWSUVXICIpOw0KKwkJCQlfY2FtZXJhLnNldFF1YWxpdHkoMCwgOTgpOw0KKwkJCX0gZWxzZSB7DQorCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJfY2FtZXJhLnNldE1vZGU6ICIsdmlkZW92aWV3LndpZHRoLHZpZGVvdmlldy5oZWlnaHQsY2FudmFzLmZyYW1lc1BlclNlY29uZCx0cnVlKTsNCisJCQkJX2NhbWVyYS5zZXRNb2RlKHZpZGVvdmlldy53aWR0aCwgdmlkZW92aWV3LmhlaWdodCwgY2FudmFzLmZyYW1lc1BlclNlY29uZCwgdHJ1ZSk7DQorCQkJCWlmICgkZGVidWcpIERlYnVnLndhcm4oIklTIE5PIElOVEVSVklFVyAiKTsNCisJCQkJX2NhbWVyYS5zZXRRdWFsaXR5KGNhbnZhcy5iYW5kd2lkdGhOZWVkZWRCZXN0LCBjYW52YXMuY2FtUXVhbGl0eUJlc3QpOw0KKwkJCX0NCisJCX0NCisJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCIuLi4gZ2V0Q2FtIERPTkUiLCBfY2FtZXJhKTsNCisJCXJldHVybiBfY2FtZXJhOw0KKwldXT4NCisJPC9tZXRob2Q+DQorCQ0KKwk8bWV0aG9kIG5hbWU9ImRvU3RhcnRDb25mZXJlbmNlIj4NCisJPCFbQ0RBVEFbDQorCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiZG9uaW5pdGFsaXplIik7DQorCQl2YXIgc2V0dGluZ3MgPSB0aGlzLmNob3NlblNldHRpbmc7DQorCQlpZiAoIWNhbnZhcy5pc0ludGVydmlldykgew0KKwkJCXRoaXMubXl2aWRlb2NvbnRhaW5lci5zZXREZWZhdWx0VmlkZW9TaXplKHRoaXMuY2FtX2RlZmF1bHRfd2lkdGgsIHRoaXMuY2FtX2RlZmF1bHRfaGVpZ2h0KTsNCisJCX0NCisJCQ0KKwkJdmFyIHZpZGVvdmlldyA9IHRoaXMubXl2aWRlb2NvbnRhaW5lci5fY2hhdHZpZGVvaW5uZXIuX3ZpZGVvc3RyZWFtOw0KKwkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInRoaXMubXl2aWRlb2NvbnRhaW5lcjogIiwgdGhpcy5teXZpZGVvY29udGFpbmVyKTsNCisJCXRoaXMubXl2aWRlb2NvbnRhaW5lci5zZXRBdHRyaWJ1dGUoJ2lzcmVtb3RlJyxmYWxzZSk7DQorCQl2YXIgX21pY3JvID0gdGhpcy5nZXRNaWModGhpcy5jaG9zZW5NaWMpOw0KKwkJdmFyIF9jYW1lcmEgPSB0aGlzLmdldENhbSh0aGlzLmNob3NlbkNhbSwgdmlkZW92aWV3KTsNCisJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKF9jYW1lcmEgLCBfbWljcm8sIHNldHRpbmdzKTsNCisJCQ0KKwkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIkJyb2FkY2FzdElkOiAiLCB0aGlzLmN1cnJlbnRDbGllbnQuYnJvYWRDYXN0SUQpOw0KKwkJc3dpdGNoIChzZXR0aW5ncyl7DQorCQkJY2FzZSAicyI6DQorCQkJCXRoaXMubXl2aWRlb2NvbnRhaW5lci5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsNCisJCQkJYnJlYWs7DQorCQkJY2FzZSAidnMiOg0KKwkJCQl2aWRlb3ZpZXcuYnJvYWRjYXN0KHRoaXMuY3VycmVudENsaWVudC5icm9hZENhc3RJRCxfY2FtZXJhLG51bGwpOw0KKwkJCQlpZihjYW52YXMuaXNJbnRlcnZpZXcpIHsNCisJCQkJCWNhbnZhcy52aWRlb0NvbXBfbGMuc2VuZChjYW52YXMudmlkZW9Db21wX2xjX25hbWUsICJvblN0YXJ0QnJvYWRjYXN0IiwgdGhpcy5jdXJyZW50Q2xpZW50LmJyb2FkQ2FzdElELCBzZXR0aW5ncyk7DQorCQkJCX0gZWxzZSB7DQorCQkJCQl0aGlzLm15dmlkZW9jb250YWluZXIuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOw0KKwkJCQkJaWYgKHRoaXMubXl2aWRlb2NvbnRhaW5lci5taW5pbWl6ZWQpIHsNCisJCQkJCQl0aGlzLm15dmlkZW9jb250YWluZXIucmVtaW5pbWl6ZSgpOw0KKwkJCQkJfQ0KKwkJCQl9DQorCQkJCWJyZWFrOw0KKwkJCWNhc2UgImF2IjoNCisJCQkJdmlkZW92aWV3LmJyb2FkY2FzdCh0aGlzLmN1cnJlbnRDbGllbnQuYnJvYWRDYXN0SUQsX2NhbWVyYSxfbWljcm8pOw0KKwkJCQlpZihjYW52YXMuaXNJbnRlcnZpZXcpIHsNCisJCQkJCWNhbnZhcy52aWRlb0NvbXBfbGMuc2VuZChjYW52YXMudmlkZW9Db21wX2xjX25hbWUsICJvblN0YXJ0QnJvYWRjYXN0IiwgdGhpcy5jdXJyZW50Q2xpZW50LmJyb2FkQ2FzdElELCBzZXR0aW5ncyk7DQorCQkJCX0gZWxzZSB7DQorCQkJCQl0aGlzLm15dmlkZW9jb250YWluZXIuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOw0KKwkJCQkJaWYgKHRoaXMubXl2aWRlb2NvbnRhaW5lci5taW5pbWl6ZWQpIHsNCisJCQkJCQl0aGlzLm15dmlkZW9jb250YWluZXIucmVtaW5pbWl6ZSgpOw0KKwkJCQkJfQ0KKwkJCQl9DQorCQkJCWJyZWFrOw0KKwkJCWNhc2UgImEiOg0KKwkJCQl2aWRlb3ZpZXcuYnJvYWRjYXN0KHRoaXMuY3VycmVudENsaWVudC5icm9hZENhc3RJRCxudWxsLF9taWNybyk7DQorCQkJCWlmKGNhbnZhcy5pc0ludGVydmlldykgew0KKwkJCQkJY2FudmFzLnZpZGVvQ29tcF9sYy5zZW5kKGNhbnZhcy52aWRlb0NvbXBfbGNfbmFtZSwgIm9uU3RhcnRCcm9hZGNhc3QiLCB0aGlzLmN1cnJlbnRDbGllbnQuYnJvYWRDYXN0SUQsIHNldHRpbmdzKTsNCisJCQkJfSBlbHNlIHsNCisJCQkJCWlmICh0aGlzLm15dmlkZW9jb250YWluZXIuaGlkZWJ5QXVkaW9Pbmx5KSB7DQorCQkJCQkJdGhpcy5teXZpZGVvY29udGFpbmVyLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOw0KKwkJCQkJfSBlbHNlIHsNCisJCQkJCQl0aGlzLm15dmlkZW9jb250YWluZXIuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOw0KKwkJCQkJCWlmICghdGhpcy5teXZpZGVvY29udGFpbmVyLm1pbmltaXplZCkgew0KKwkJCQkJCQl0aGlzLm15dmlkZW9jb250YWluZXIubWluaW1pemUoKTsNCisJCQkJCQl9DQorCQkJCQl9DQorCQkJCX0NCisJCQkJYnJlYWs7DQorCQkJY2FzZSAidiI6DQorCQkJCXZpZGVvdmlldy5icm9hZGNhc3QodGhpcy5jdXJyZW50Q2xpZW50LmJyb2FkQ2FzdElELF9jYW1lcmEsbnVsbCk7DQorCQkJCWlmKGNhbnZhcy5pc0ludGVydmlldykgew0KKwkJCQkJY2FudmFzLnZpZGVvQ29tcF9sYy5zZW5kKGNhbnZhcy52aWRlb0NvbXBfbGNfbmFtZSwgIm9uU3RhcnRCcm9hZGNhc3QiLCB0aGlzLmN1cnJlbnRDbGllbnQuYnJvYWRDYXN0SUQsIHNldHRpbmdzKTsNCisJCQkJfSBlbHNlIHsNCisJCQkJCXRoaXMubXl2aWRlb2NvbnRhaW5lci5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7DQorCQkJCQlpZiAodGhpcy5teXZpZGVvY29udGFpbmVyLm1pbmltaXplZCkgew0KKwkJCQkJCXRoaXMubXl2aWRlb2NvbnRhaW5lci5yZW1pbmltaXplKCk7DQorCQkJCQl9DQorCQkJCX0NCisJCQkJYnJlYWs7DQorCQkJY2FzZSAibiI6DQorCQkJCWlmICgkZGVidWcpIERlYnVnLndyaXRlKCJEbyBub3QgUHVibGlzaCBBL1YiKTsNCisJCQkJLy9QcmV2ZW50IGZyb20gSGlkaW5nIHRoZSBCb3ggaW4gRXZlbnQgTW9kdXMNCisJCQkJaWYgKGNhbnZhcy50aGlzaGliLm1vZHVzID09ICJjb25mZXJlbmNlIikgew0KKwkJCQkJdGhpcy5teXZpZGVvY29udGFpbmVyLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsImhpZGRlbiIpOw0KKwkJCQl9DQorCQkJCWJyZWFrOw0KKwkJCWRlZmF1bHQ6DQorCQkJCWlmICgkZGVidWcpIERlYnVnLndhcm4oIm5vIHZhbGlkIGRldmljZSBTZXR1cCBjaG9zZW4iKTsNCisJCQkJYnJlYWs7DQorCQl9DQorCQl0aGlzLmNsb3NlKCk7DQorCV1dPg0KKwk8L21ldGhvZD4NCisgICAgDQorCTxtZXRob2QgbmFtZT0iZG9TdGFydFJlY29yZGluZyI+DQorCTwhW0NEQVRBWw0KKwkJdGhpcy5fYnRuU3RhcnRSZWNvcmRpbmcuc2V0QXR0cmlidXRlKCJlbmFibGVkIixmYWxzZSk7DQorCQl0aGlzLl9wbGF5LnNldEF0dHJpYnV0ZSgiZW5hYmxlZCIsZmFsc2UpOw0KKwkJdGhpcy5yZWNvcmRpbmdzQ291bnRlciA9IDU7DQorCQl0aGlzLl90ZXh0LnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsInZpc2libGUiKTsNCisJCXRoaXMuX3RleHQuX2luZm8uc2V0QXR0cmlidXRlKCJ0ZXh0IiwiNSBzZWMiKTsNCisJCXRoaXMuaXNSdW5uaW5nID0gdHJ1ZTsNCisJCQ0KKwkJdmFyIHZpZGVvdmlldyA9IHRoaXMuX3ZpZGVvLmNvbnRlbnQuX3B1Ymxpc2hlci5fY2hhdHZpZGVvaW5uZXIuX3ZpZGVvc3RyZWFtOw0KKwkJdmFyIF9taWNybyA9IHRoaXMuZ2V0TWljKHRoaXMuYXZhaWxpYmxlTWljcy5nZXRWYWx1ZSgpKTsNCisJCXZhciBfY2FtZXJhID0gdGhpcy5nZXRDYW0odGhpcy5hdmFpbGlibGVDYW1zLmdldFZhbHVlKCksIHZpZGVvdmlldyk7DQorCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZShfY2FtZXJhLCBfbWljcm8pOw0KKwkJDQorCQlpZiAoJGRlYnVnICYmIF9jYW1lcmEgIT0gbnVsbCkgRGVidWcud2FybigiX2NhbWVyYS5tdXRlZCAiLCBfY2FtZXJhLm11dGVkKTsNCisJCWlmICgkZGVidWcgJiYgX21pY3JvICE9IG51bGwpIERlYnVnLndhcm4oIl9taWNyby5tdXRlZCAiLCBfbWljcm8ubXV0ZWQpOw0KKwkJaWYgKChfY2FtZXJhICE9IG51bGwgJiYgIV9jYW1lcmEubXV0ZWQpIHx8IChfY2FtZXJhID09IG51bGwgJiYgX21pY3JvICE9IG51bGwpKSB7DQorCQkJdGhpcy5zdGFydFRpbWVyKCk7DQorCQl9DQorCQkNCisJCS8vc3RhcnQgcmVjb3JkaW5nIG9mIGNsaWVudCBzdHJlYW0NCisJCXZhciB0ID0gbmV3IERhdGUoKTsNCisJCXRoaXMubGFzdFJlY29yZGVkID0gIlRFU1RfU0VUVVBfIit0LmdldFRpbWUoKTsNCisJCXRoaXMuX3ZpZGVvLmNvbnRlbnQuX3B1Ymxpc2hlci5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJ2aXNpYmxlIik7DQorCQl0aGlzLl92aWRlby5jb250ZW50Ll92aWV3ZXIuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwiaGlkZGVuIik7DQorCQl2aWRlb3ZpZXcucmVjb3JkKHRoaXMubGFzdFJlY29yZGVkLF9jYW1lcmEsX21pY3JvKTsNCisJXV0+DQorCTwvbWV0aG9kPg0KKyAgICANCisgICAgPG1ldGhvZCBuYW1lPSJkb1BsYXkiPg0KKyAgICAJPCFbQ0RBVEFbDQorICAgIAkgICBpZiAodGhpcy5sYXN0UmVjb3JkZWQgPT0gIiIpIHsNCisgICAgCSAgIAkgICAvL0Vycm9yIC0gbm90aGluZyByZWNvcmRlZCB5ZXQNCisgICAgCSAgIAkgICBpZiAoJGRlYnVnKSBEZWJ1Zy53YXJuKCJOb3RoaW5nIHRvIFBsYXkiKTsNCisgICAgCSAgIH0gZWxzZSB7DQorICAgIAkgICAJICAgdGhpcy5fcGxheS5zZXRBdHRyaWJ1dGUoImVuYWJsZWQiLHRydWUpOw0KKyAgICAJICAgCSAgIHRoaXMuX3ZpZGVvLmNvbnRlbnQuX3B1Ymxpc2hlci5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLCJoaWRkZW4iKTsNCisgICAgICAgICAgICAgICB0aGlzLl92aWRlby5jb250ZW50Ll92aWV3ZXIuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwidmlzaWJsZSIpOw0KKyAgICAgICAgICAgICAgIHZhciB2aWRlb3ZpZXcgPSB0aGlzLl92aWRlby5jb250ZW50Ll92aWV3ZXIuX2NoYXR2aWRlb2lubmVyLl92aWRlb3N0cmVhbTsNCisgICAgICAgICAgICAgICB2aWRlb3ZpZXcuanVzdFBsYXlTdHJlYW0odGhpcy5sYXN0UmVjb3JkZWQrIi5mbHYiLDApOw0KKyAgICAJICAgfQ0KKyAgICAJXV0+DQorICAgIDwvbWV0aG9kPg0KKyAgICANCisgICAgPG1ldGhvZCBuYW1lPSJkb1N0b3AiPg0KKyAgICAJaWYgKHRoaXMuaXNSdW5uaW5nKSB7DQorICAgIAkJdGhpcy5pc1J1bm5pbmcgPSBmYWxzZTsNCisgICAgCQl2YXIgdmlkZW92aWV3ID0gdGhpcy5fdmlkZW8uY29udGVudC5fcHVibGlzaGVyLl9jaGF0dmlkZW9pbm5lci5fdmlkZW9zdHJlYW07DQorICAgIAkJdGhpcy5fYnRuU3RhcnRSZWNvcmRpbmcuc2V0QXR0cmlidXRlKCJlbmFibGVkIix0cnVlKTsNCisgICAgCQl2aWRlb3ZpZXcuX3N0b3AoKTsNCisgICAgCQl0aGlzLmRvUGxheSgpOw0KKyAgICAJfQ0KKyAgICAJdmFyIHZpZGVvdmlld1ZpZXdlciA9IHRoaXMuX3ZpZGVvLmNvbnRlbnQuX3ZpZXdlci5fY2hhdHZpZGVvaW5uZXIuX3ZpZGVvc3RyZWFtOw0KKyAgICAgICAgdmlkZW92aWV3Vmlld2VyLl9zdG9wKCk7DQorICAgIDwvbWV0aG9kPg0KKw0KKyAgICA8YW5pbWF0b3IgbmFtZT0iX2Nob29zZURldmljZUFuaW1hdGlvbiIgc3RhcnRlZD0iZmFsc2UiIGF0dHJpYnV0ZT0ieSIgdG89IjQwIiBkdXJhdGlvbj0iNzUwIiAvPg0KKyAgICANCisgICAgDQorICAgIDxsYWJlbFRleHQgZm9udHN0eWxlPSJib2xkIiBsYWJlbGlkPSI3NTgiDQorCQkJICAgd2lkdGg9IiR7IHBhcmVudC53aWR0aC0yIH0iIGhlaWdodD0iMzAiIG11bHRpbGluZT0idHJ1ZSIgeT0iMjAiIC8+IA0KKw0KKyAgICA8bGFiZWxUZXh0IGxhYmVsaWQ9IjQ0NyIgZm9udHNpemU9IjExIiBmb250c3R5bGU9ImJvbGQiIA0KKyAgICAJCQl4PSIxMCIgeT0iODAiIHdpZHRoPSIkb25jZXsgcGFyZW50LndpZHRoLTIwIH0iIC8+DQorDQorICAgIDxyZXNldENvbWJvYm94IGZvbnRzaXplPSIxMSIgbmFtZT0iYXZhaWxpYmxlU2V0dGluZ3MiIHg9IjEwIiB5PSIxMDAiIHdpZHRoPSIyODAiIGVkaXRhYmxlPSJmYWxzZSI+DQorDQorICAgICAgICA8c3dpdGNoPg0KKyAgICAgICAgICAgIDx3aGVuIHByb3BlcnR5PSIkYXMzIj4NCisgICAgICAgICAgICAgICAgPHBhc3N0aHJvdWdoPg0KKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0IGZsYXNoLm5ldC5TaGFyZWRPYmplY3Q7DQorICAgICAgICAgICAgICAgIDwvcGFzc3Rocm91Z2g+DQorICAgICAgICAgICAgPC93aGVuPg0KKyAgICAgICAgPC9zd2l0Y2g+DQorDQorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPg0KKyAgICAgICAgICAgIDwhW0NEQVRBWw0KKw0KKyAgICAgICAgICAgICAgICBpZiAoY2FudmFzLmN1cnJlbnRSb29tT2JqZWN0LmlzQXVkaW9Pbmx5KSB7DQorICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZEl0ZW0oY2FudmFzLmdldExhYmVsTmFtZSg0NDkpLCJhIik7DQorICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZEl0ZW0oY2FudmFzLmdldExhYmVsTmFtZSg0NTEpLCJuIik7DQorICAgICAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIAl0aGlzLmFkZEl0ZW0oY2FudmFzLmdldExhYmVsTmFtZSg0NDgpLCJhdiIpOw0KKyAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRJdGVtKGNhbnZhcy5nZXRMYWJlbE5hbWUoNDQ5KSwiYSIpOw0KKyAgICAgICAgICAgICAgICAgICAgdGhpcy5hZGRJdGVtKGNhbnZhcy5nZXRMYWJlbE5hbWUoNDUwKSwidiIpOw0KKyAgICAgICAgICAgICAgICAgICAgLy90aGlzLmFkZEl0ZW0oY2FudmFzLmdldExhYmVsTmFtZSg4NDUpLCJzIik7DQorICAgICAgICAgICAgICAgICAgICAvL3RoaXMuYWRkSXRlbShjYW52YXMuZ2V0TGFiZWxOYW1lKDg0NiksInN2Iik7DQorICAgICAgICAgICAgICAgICAgICB0aGlzLmFkZEl0ZW0oY2FudmFzLmdldExhYmVsTmFtZSg0NTEpLCJuIik7DQorICAgICAgICAgICAgICAgIH0NCisNCisJCQkJdmFyIHQ6U2hhcmVkT2JqZWN0ID0gU2hhcmVkT2JqZWN0LmdldExvY2FsKCd1c2VyZGF0YScpOw0KKwkJCQl2YXIgZyA9IHQuZGF0YTsNCisJCQkJdmFyIGNhbSA9IG51bGw7DQorCQkJCWlmIChnIT1udWxsKXsNCisJCQkJCXZhciBhdnN0b3JlZCA9IGdbImF2c3RvcmVkIl07DQorCQkJCX0NCisNCisJCQkJdmFyIHRJdGVtID0gdGhpcy5nZXRJdGVtKFN0cmluZyhhdnN0b3JlZCkpOw0KKwkJCQlpZiAodEl0ZW0gIT0gbnVsbCkgew0KKwkJCQkgICAgdGhpcy5zZWxlY3RJdGVtKFN0cmluZyhhdnN0b3JlZCkpOw0KKwkJCQl9IGVsc2Ugew0KKwkJCQkJdGhpcy5zZWxlY3RJdGVtQXQoMCk7DQorCQkJCX0NCisgICAgICAgICAgICBdXT4NCisgICAgICAgIDwvaGFuZGxlcj4NCisNCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uc2VsZWN0Ij4NCisgICAgICAgIAk8IVtDREFUQVsNCisgICAgICAgIAkJdmFyIGNhbVZpc2libGUgPSAidmlzaWJsZSI7DQorICAgICAgICAJCXZhciBtaWNWaXNpYmxlID0gInZpc2libGUiOw0KKyAgICAgICAgCQl2YXIgdGV4dFZpc2libGUgPSAiaGlkZGVuIjsNCisJICAgICAgICAJc3dpdGNoICh0aGlzLmdldFZhbHVlKCkpew0KKwkgICAgICAgIAkJY2FzZSAiYXYiOg0KKwkgICAgICAgIAkJCWJyZWFrOw0KKwkgICAgICAgIAkJY2FzZSAiYSI6DQorCSAgICAgICAgCQkJY2FtVmlzaWJsZSA9ICJoaWRkZW4iOw0KKwkgICAgICAgIAkJCWJyZWFrOw0KKwkgICAgICAgIAkJY2FzZSAidiI6DQorCSAgICAgICAgCQkJbWljVmlzaWJsZSA9ICJoaWRkZW4iOw0KKwkgICAgICAgIAkJCWJyZWFrOw0KKwkgICAgICAgIAkJY2FzZSAibiI6DQorCSAgICAgICAgCQkJY2FtVmlzaWJsZSA9ICJoaWRkZW4iOw0KKwkgICAgICAgIAkJCW1pY1Zpc2libGUgPSAiaGlkZGVuIjsNCisJICAgICAgICAJCQl0ZXh0VmlzaWJsZSA9ICJ2aXNpYmxlIjsNCisJICAgICAgICAJCQlicmVhazsNCisJICAgICAgICAJCWRlZmF1bHQ6DQorCSAgICAgICAgCQkJaWYgKCRkZWJ1ZykgRGVidWcud2Fybigibm8gdmFsaWQgZGV2aWNlIFNldHVwIGNob3NlbiIpOw0KKwkgICAgICAgIAkJCWJyZWFrOw0KKwkgICAgICAgIAl9DQorICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LmF2YWlsaWJsZUNhbXNMYWJlbC5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLGNhbVZpc2libGUpOw0KKyAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5hdmFpbGlibGVDYW1zLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsY2FtVmlzaWJsZSk7DQorICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LmF2YWlsaWJsZU1pY3NMYWJlbC5zZXRBdHRyaWJ1dGUoInZpc2liaWxpdHkiLG1pY1Zpc2libGUpOw0KKyAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5hdmFpbGlibGVNaWNzLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsbWljVmlzaWJsZSk7ICAgICAgIA0KKyAgICAgICAgICAgICAgICB0aGlzLnBhcmVudC5pbmZvVGV4dE5vQVYuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5Iix0ZXh0VmlzaWJsZSk7DQorICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LmF2YWlsaWJsZVJlc29sdXRpb25zTGFiZWwuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwoKGNhbnZhcy5pc0ludGVydmlldykgPyAnaGlkZGVuJyA6IGNhbVZpc2libGUpKTsNCisgICAgICAgICAgICAgICAgdGhpcy5wYXJlbnQuYXZhaWxpYmxlUmVzb2x1dGlvbnNXYXJuaW5nLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsKChjYW52YXMuaXNJbnRlcnZpZXcpID8gJ2hpZGRlbicgOiBjYW1WaXNpYmxlKSk7DQorICAgICAgICAgICAgICAgIHRoaXMucGFyZW50LmF2YWlsaWJsZVJlc29sdXRpb25zLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsKChjYW52YXMuaXNJbnRlcnZpZXcpID8gJ2hpZGRlbicgOiBjYW1WaXNpYmxlKSk7DQorICAgICAgICAJXV0+DQorICAgICAgICA8L2hhbmRsZXI+DQorICAgIDwvcmVzZXRDb21ib2JveD4NCisgICAgDQorICAgIDxhdHRyaWJ1dGUgbmFtZT0iZXhlY3V0ZUF0dGFjaENhbWVyYSIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPg0KKw0KKyAgICA8IS0tIA0KKyAgICAgICAgSW5pdGlhbGl6ZSB0aGUgZGVmYXVsdCBzZXR0aW5ncyBmb3IgY2FtIGFuZCByZXNvbHV0aW9uIGFuZCBhdHRhY2ggdGhlIGNhbWVyYSANCisgICAgICAgIGFmdGVyIHdlIGhhdmUgbWFkZSBzdXJlIHRoZSB2YWx1ZXMgYXJlIHRoZXJlIG9uZSB0aW1lDQorICAgICAtLT4NCisJPG1ldGhvZCBuYW1lPSJpbml0SXRlbXNBbmREZWZhdWx0QXR0YWNoQ2FtZXJhIj4NCisgICAgICAgIDwhW0NEQVRBWw0KKyAgICAgICAgICAgIC8vSW5pdGlhbGl6ZSBhbmQgZ2V0IGV2ZW50dWFsbHkgc3RvcmVkIGNhbWVyYQ0KKyAgICAgICAgICAgIHZhciB0OlNoYXJlZE9iamVjdCA9IFNoYXJlZE9iamVjdC5nZXRMb2NhbCgndXNlcmRhdGEnKTsNCisgICAgICAgICAgICB2YXIgZyA9IHQuZGF0YTsNCisgICAgICAgICAgICB2YXIgY2FtOw0KKyAgICAgICAgICAgIGlmIChnICE9IG51bGwpew0KKyAgICAgICAgICAgICAgICBjYW0gPSAiIitnWyJjYW0iXTsNCisgICAgICAgICAgICB9DQorICAgICAgICANCisgICAgICAgICAgICAvL0dldCBhbGwgYXZhaWxpYmxlIENhbSdzDQorICAgICAgICAgICAgdmFyIHR3ID0gQ2FtZXJhLm5hbWVzOw0KKyAgICAgICAgICAgIHZhciByID0gIiI7DQorICAgICAgICAgICAgdmFyIGZvdW5kU3RvcmVkQ2FtID0gbnVsbDsNCisgICAgICAgICAgICBmb3IgKHZhciBlZz0wO2VnPHR3Lmxlbmd0aDtlZysrKXsNCisgICAgICAgICAgICAgICAgdGhpcy5hdmFpbGlibGVDYW1zLmFkZEl0ZW0odHdbZWddLGVnKTsNCisgICAgICAgICAgICAgICAgcj0iIitlZzsNCisgICAgICAgICAgICAgICAgaWYgKHIgPT0gY2FtKSB7DQorICAgICAgICAgICAgICAgICAgICBmb3VuZFN0b3JlZENhbSA9IHI7DQorICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICB9DQorICAgICAgICAgICAgDQorICAgICAgICAgICAgaWYgKGZvdW5kU3RvcmVkQ2FtICE9IG51bGwpIHsNCisgICAgICAgICAgICAgICAgdGhpcy5hdmFpbGlibGVDYW1zLnNlbGVjdEl0ZW0oZm91bmRTdG9yZWRDYW0pOw0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIGlmICh0dy5sZW5ndGggPiAwKSB7DQorICAgICAgICAgICAgICAgICAgICB0aGlzLmF2YWlsaWJsZUNhbXMuc2VsZWN0SXRlbUF0KDApOw0KKyAgICAgICAgICAgICAgICB9DQorICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIA0KKyAgICAgICAgICAgIC8vSW5pdGlhbGl6ZSBhbmQgc2V0IGRlZmF1bHQgcmVzb2x1dGlvbnMgY29tYm9ib3gNCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgibXlDb25maWdTZXQgMSAiLGNhbnZhcy5teUNvbmZpZ1NldCk7DQorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm15Q29uZmlnU2V0IDIgIixjYW52YXMubXlDb25maWdTZXQuZ2V0UG9pbnRlcigpLnhwYXRoUXVlcnkoJ2NvbmZpZy9hdmFpbGFibGVDYW1lcmFSZXNvbHV0aW9ucy9yZXNvbHV0aW9uJykpOw0KKyAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJteUNvbmZpZ1NldCAzICIsY2FudmFzLm15Q29uZmlnU2V0LmdldFBvaW50ZXIoKS54cGF0aFF1ZXJ5KCdjb25maWcvYXZhaWxhYmxlQ2FtZXJhUmVzb2x1dGlvbnMvcmVzb2x1dGlvbi8nKSk7DQorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm15Q29uZmlnU2V0IDQgIixjYW52YXMubXlDb25maWdTZXQuZ2V0UG9pbnRlcigpLnhwYXRoUXVlcnkoJ2NvbmZpZy9hdmFpbGFibGVDYW1lcmFSZXNvbHV0aW9ucy9yZXNvbHV0aW9uLyonKSk7DQorICAgICAgICAgICAgDQorICAgICAgICAgICAgdGhpcy5leGVjdXRlQXR0YWNoQ2FtZXJhID0gdHJ1ZTsNCisgICAgICAgICAgICANCisgICAgICAgICAgICB0aGlzLmF0dGFjaENhbWVyYSgpOw0KKyAgICAgICAgXV0+DQorICAgIDwvbWV0aG9kPg0KKwkNCisJPG1ldGhvZCBuYW1lPSJhdHRhY2hDYW1lcmEiPg0KKwkgICAgPCFbQ0RBVEFbDQorCQkgICAgLy9pZiB0aGUgdXNlciBoYXMgY29uZmlndXJlZCB0aGlzIGJveCB0byBhdXRvLWNsb3NlLCBkbyBub3QgdHJ5IHRvDQorCQkgICAgLy9hdHRhY2ggdGhlIGNhbSB0byB0aGUgcHJldmlldyAoYmxhY2spIGJveA0KKwkJICAgIHZhciBzaGFyZWREYXRhID0gdGhpcy5jaGVja0RldmljZVNldHRpbmdzUmVtZW1iZXJTdGF0dXMoKTsNCisJICAgICAgICBpZihzaGFyZWREYXRhICE9IG51bGwpIHsNCisJICAgICAgICAgICAgcmV0dXJuOw0KKwkgICAgICAgIH0NCisJICAgICAgICANCisJICAgICAgICAvL0Rvbid0IGV4ZWN1dGUgYmVmb3JlIGNvbWJvYm94IGl0ZW1zIGFyZSBub3QgaW5pdGlhbGl6ZWQNCisJICAgICAgICBpZiAoIXRoaXMuZXhlY3V0ZUF0dGFjaENhbWVyYSkgew0KKwkgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiUmV0dXJuLCBleGVjdXRlQXR0YWNoQ2FtZXJhIGlzIGZhbHNlIik7DQorICAgICAgICAgICAgICAgIHJldHVybjsNCisJICAgICAgICB9DQorCQkNCisJCQlpZiAoX3ZpZGVvID09IHVuZGVmaW5lZCkgIHsNCisJCQkgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIlJldHVybiwgdmlkZW8gdmlkZW8gbm90IHlldCByZWFkeSIpOw0KKyAgICAgICAgICAgICAgICByZXR1cm47DQorCQkJfQ0KKwkJCV92aWRlby5jb250ZW50Ll9wdWJsaXNoZXIuc2V0QXR0cmlidXRlKCJ2aXNpYmlsaXR5IiwgInZpc2libGUiKTsNCisJCQlfdmlkZW8uY29udGVudC5fdmlld2VyLnNldEF0dHJpYnV0ZSgidmlzaWJpbGl0eSIsICJoaWRkZW4iKTsNCisJCQl2YXIgdmlkZW92aWV3ID0gdGhpcy5fdmlkZW8uY29udGVudC5fcHVibGlzaGVyLl9jaGF0dmlkZW9pbm5lci5fdmlkZW9zdHJlYW07DQorCQkJdmFyIF9jYW1lcmEgPSBnZXRDYW0oYXZhaWxpYmxlQ2Ftcy5nZXRWYWx1ZSgpLCB2aWRlb3ZpZXcpOw0KKwkJCWlmIChfY2FtZXJhICE9IG51bGwpIHsNCisJCQkgICAgLy9zdG9wIHdpbGwgbm90IGNhbGwgY2xlYXIgYXMgdGhlcmUgaXMgbm8gTmV0U3RyZWFtDQorCQkJCXZpZGVvdmlldy5fc3RvcCgpOw0KKwkJCQl2aWRlb3ZpZXcuY2xlYXIoKTsNCisJCQkJdmlkZW92aWV3LmF0dGFjaENhbWVyYShfY2FtZXJhKTsNCisJCQl9DQorCQldXT4NCisJPC9tZXRob2Q+DQorCQ0KKwk8bWV0aG9kIG5hbWU9ImNsZWFuVmlkZW9zIj4NCisJICAgaWYgKF92aWRlbyA9PSB1bmRlZmluZWQpIHJldHVybjsNCisJICAgLy9tYWtlIHN1cmUgc3RvcCBhbmQgY2xlYXIgaXMgY2FsbGVkLCBhcyB0aGUgX3N0b3AgbWV0aG9kIGRvZXMgbm90IHdvcmsgZm9yIGFsbA0KKwkgICAvL3ZpZGVvdmlld3MgaW4gdGhlIGRldmljZSBzZXR0aW5ncy4NCisJICAgX3ZpZGVvLmNvbnRlbnQuX3B1Ymxpc2hlci5fY2hhdHZpZGVvaW5uZXIuX3ZpZGVvc3RyZWFtLl9zdG9wKCk7DQorICAgICAgIF92aWRlby5jb250ZW50Ll92aWV3ZXIuX2NoYXR2aWRlb2lubmVyLl92aWRlb3N0cmVhbS5fc3RvcCgpOw0KKyAgICAgICBfdmlkZW8uY29udGVudC5fcHVibGlzaGVyLl9jaGF0dmlkZW9pbm5lci5fdmlkZW9zdHJlYW0uY2xlYXIoKTsNCisgICAgICAgX3ZpZGVvLmNvbnRlbnQuX3ZpZXdlci5fY2hhdHZpZGVvaW5uZXIuX3ZpZGVvc3RyZWFtLmNsZWFyKCk7DQorICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJDbGVhbmVkIHVwIHZpZGVvcyBhbmQgZnJlZSByZXNvdXJjZXMiKTsNCisJPC9tZXRob2Q+DQorCQ0KKyAgICA8bGFiZWxUZXh0IG5hbWU9ImF2YWlsaWJsZUNhbXNMYWJlbCIgbGFiZWxpZD0iNTIiIGZvbnRzaXplPSIxMSIgeD0iMTAiIHk9IjE0MCIgd2lkdGg9IiRvbmNleyBwYXJlbnQud2lkdGgtMjAgfSIgLz4NCisgICAgPHJlc2V0Q29tYm9ib3ggZm9udHNpemU9IjExIiBuYW1lPSJhdmFpbGlibGVDYW1zIiB4PSIxMCIgeT0iMTYwIiB3aWR0aD0iMjgwIiBlZGl0YWJsZT0iZmFsc2UiPg0KKwkJPGhhbmRsZXIgbmFtZT0ib25zZWxlY3QiPg0KKwkJCXBhcmVudC5hdHRhY2hDYW1lcmEoKTsNCisJCTwvaGFuZGxlcj4NCisgICAgPC9yZXNldENvbWJvYm94Pg0KKw0KKyAgICA8bGFiZWxUZXh0IG5hbWU9ImF2YWlsaWJsZU1pY3NMYWJlbCIgbGFiZWxpZD0iNTMiIGZvbnRzaXplPSIxMSINCisgICAgICAgICAgICAgICB4PSIxMCIgeT0iMTgwIiB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aC0yMCB9IiAvPg0KKw0KKyAgICA8cmVzZXRDb21ib2JveCBmb250c2l6ZT0iMTEiIG5hbWU9ImF2YWlsaWJsZU1pY3MiICB4PSIxMCIgeT0iMjAwIiB3aWR0aD0iMjgwIiBlZGl0YWJsZT0iZmFsc2UiPg0KKyAgICAgICAgPHN3aXRjaD4NCisgICAgICAgICAgICA8d2hlbiBwcm9wZXJ0eT0iJGFzMyI+DQorICAgICAgICAgICAgICAgIDxwYXNzdGhyb3VnaD4NCisgICAgICAgICAgICAgICAgICAgIGltcG9ydCBmbGFzaC5tZWRpYS5NaWNyb3Bob25lOw0KKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0IGZsYXNoLm5ldC5TaGFyZWRPYmplY3Q7DQorICAgICAgICAgICAgICAgIDwvcGFzc3Rocm91Z2g+DQorICAgICAgICAgICAgPC93aGVuPg0KKyAgICAgICAgPC9zd2l0Y2g+DQorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPg0KKyAgICAgICAgICAgIDwhW0NEQVRBWw0KKyAgICAgICAgICAgIAkvL0dldCBldmVudHVhbGx5IHN0b3JlZCBtaWMgZnJvbSB1c2VyIHNldHRpbmdzL3NoYXJlZCBvYmplY3QvY29va2llDQorICAgICAgICAgICAgCXZhciB0OlNoYXJlZE9iamVjdCA9IFNoYXJlZE9iamVjdC5nZXRMb2NhbCgndXNlcmRhdGEnKTsNCisJICAgICAgICAgICAgdmFyIGcgPSB0LmRhdGE7DQorCSAgICAgICAgICAgIHZhciBtaWMgPSBudWxsOw0KKwkgICAgICAgICAgICBpZiAoZyAhPSBudWxsKSB7DQorCSAgICAgICAgICAgIAltaWMgPSAiIiArIGdbIm1pYyJdOw0KKwkgICAgICAgICAgICB9DQorICAgICAgICAgICAgDQorCSAgICAgICAgICAgIC8vR2V0IGFsbCBhdmFpbGlibGUgTWljJ3MNCisJICAgICAgICAgICAgdmFyIHR3ID0gTWljcm9waG9uZS5uYW1lczsNCisJICAgICAgICAgICAgdmFyIHIgPSAiIjsNCisJICAgICAgICAgICAgdmFyIGZvdW5kU3RvcmVkTWljID0gbnVsbDsNCisJICAgICAgICAgICAgZm9yICh2YXIgZWc9MDtlZzx0dy5sZW5ndGg7ZWcrKyl7DQorCSAgICAgICAgICAgICAgICByID0gIiIgKyBlZzsNCisJICAgICAgICAgICAgICAgIHRoaXMuYWRkSXRlbSh0d1tlZ10sZWcpOw0KKwkgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICBpZiAociA9PSBtaWMpIHsNCisJICAgICAgICAgICAgICAgIAlmb3VuZFN0b3JlZE1pYyA9IHI7DQorCSAgICAgICAgICAgICAgICB9DQorCSAgICAgICAgICAgIH0NCisNCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIlNlbGVjdCBmb3VuZFN0b3JlZE1pYzogIixmb3VuZFN0b3JlZE1pYyk7DQorICAgICAgICAgICAgICAgIGlmIChmb3VuZFN0b3JlZE1pYyAhPSBudWxsKSB7DQorICAgICAgICAgICAgICAgIAl0aGlzLnNlbGVjdEl0ZW0oZm91bmRTdG9yZWRNaWMpOw0KKyAgICAgICAgICAgICAgICB9IGVsc2Ugew0KKyAgICAgICAgICAgICAgICAgICAgaWYgKHR3Lmxlbmd0aCA+IDApIHsNCisgICAgICAgICAgICAgICAgICAgIAl0aGlzLnNlbGVjdEl0ZW1BdCgwKTsNCisgICAgICAgICAgICAgICAgICAgIH0NCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIF1dPg0KKyAgICAgICAgPC9oYW5kbGVyPg0KKyAgICA8L3Jlc2V0Q29tYm9ib3g+DQorDQorICAgIDxsYWJlbFRleHQgbmFtZT0iaW5mb1RleHROb0FWIiBsYWJlbGlkPSI0NTIiIG11bHRpbGluZT0idHJ1ZSIgd2lkdGg9IjI4MCIgDQorICAgICAgICAgICAgICAgZm9udHNpemU9IjExIiB4PSIxMCIgeT0iMTMwIiB2aXNpYmlsaXR5PSJoaWRkZW4iIC8+DQorICAgICAgICAgICAgICAgDQorICAgIDxsYWJlbFRleHQgbmFtZT0iYXZhaWxpYmxlUmVzb2x1dGlvbnNMYWJlbCIgbGFiZWxpZD0iMTQyOSIgDQorICAgICAgICAgICAgZm9udHNpemU9IjExIiB4PSIxMCIgeT0iMjI0IiB3aWR0aD0iJG9uY2V7IHBhcmVudC53aWR0aC0yMCB9IiAvPg0KKyAgICAgICAgICAgIA0KKyAgICA8dmlldyBuYW1lPSJhdmFpbGlibGVSZXNvbHV0aW9uc1dhcm5pbmciIHg9IjI3MiIgeT0iMjI0IiANCisgICAgICAgICAgICByZXNvdXJjZT0id2FybmluZ19pY29uX3BvcHVwX2RldmljZXNfcnNjIiBjbGlja2FibGU9InRydWUiPg0KKyAgICAgICAgPGxhYmVsVG9vbHRpcCBtdWx0aWxpbmU9InRydWUiIGxhYmVsaWQ9IjE0MzAiIC8+DQorICAgIDwvdmlldz4gICAgIA0KKyAgICANCisgICAgPHJlc2V0Q29tYm9ib3ggZm9udHNpemU9IjExIiBuYW1lPSJhdmFpbGlibGVSZXNvbHV0aW9ucyIgeD0iMTAiIHNob3duaXRlbXM9IjEwIg0KKyAgICAgICAgICAgICAgICB5PSIyNDQiIHdpZHRoPSIyODAiIGVkaXRhYmxlPSJmYWxzZSI+DQorICAgICAgICA8IS0tLSBAa2V5d29yZHMgcHJpdmF0ZSAtLT4NCisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iY291bnRlciIgdmFsdWU9IjAiIC8+DQorCQk8aGFuZGxlciBuYW1lPSJvbnNlbGVjdCIgYXJncz0iaXRlbSI+DQorCQk8IVtDREFUQVsNCisJCQlpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgib25zZWxlY3QgdyAiLCBpdGVtLmNhbV93aWR0aCk7DQorCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9uc2VsZWN0IGggIiwgaXRlbS5jYW1faGVpZ2h0KTsNCisJCQlwYXJlbnQuc2V0QXR0cmlidXRlKCJjYW1fZGVmYXVsdF93aWR0aCIsaXRlbS5jYW1fd2lkdGgpOw0KKwkJCXBhcmVudC5zZXRBdHRyaWJ1dGUoImNhbV9kZWZhdWx0X2hlaWdodCIsaXRlbS5jYW1faGVpZ2h0KTsNCisJCQkNCisJCQlpZiAoaXRlbS5jYW1fd2lkdGggPiAyNDApIHsNCisJCQkJdmFyIG5ld1dpZHRoID0gNjAwICsgaXRlbS5jYW1fd2lkdGggLSAyNDA7DQorCQkJCWlmIChuZXdXaWR0aCtwYXJlbnQueCsxMCA+IGNhbnZhcy53aWR0aCkgew0KKwkJCQkJbmV3V2lkdGggPSBjYW52YXMud2lkdGggLSAxMCAtIHRoaXMueDsNCisJCQkJfQ0KKwkJCQlwYXJlbnQuc2V0QXR0cmlidXRlKCJ3aWR0aCIsbmV3V2lkdGgpOw0KKwkJCX0gZWxzZSB7DQorCQkJCXBhcmVudC5zZXRBdHRyaWJ1dGUoIndpZHRoIiw2MDApOw0KKwkJCX0NCisJCQkNCisJCQlpZiAoaXRlbS5jYW1faGVpZ2h0ID4gMTgwKSB7DQorCQkJCXZhciBuZXdIZWlnaHQgPSA1MDAgKyBpdGVtLmNhbV9oZWlnaHQgLSAxODA7DQorCQkJCWlmIChuZXdIZWlnaHQrcGFyZW50LnkrMTAgPiBjYW52YXMuaGVpZ2h0KSB7DQorCQkJCQluZXdIZWlnaHQgPSBjYW52YXMuaGVpZ2h0IC0gMTAgLSBwYXJlbnQueTsNCisJCQkJfQ0KKwkJCQlwYXJlbnQuc2V0QXR0cmlidXRlKCJoZWlnaHQiLG5ld0hlaWdodCk7DQorCQkJfSBlbHNlIHsNCisJCQkJcGFyZW50LnNldEF0dHJpYnV0ZSgiaGVpZ2h0Iiw1MDApOw0KKwkJCX0NCisJCQlwYXJlbnQuYXR0YWNoQ2FtZXJhKCk7DQorCQldXT4NCisJCTwvaGFuZGxlcj4NCisgICAgICAgIDx0ZXh0bGlzdGl0ZW0gZGF0YXBhdGg9Im15Q29uZmlnU2V0Oi9jb25maWcvYXZhaWxhYmxlQ2FtZXJhUmVzb2x1dGlvbnMvcmVzb2x1dGlvbiIgPg0KKyAgICAgICAgICAgIDxzd2l0Y2g+DQorCSAgICAgICAgICAgIDx3aGVuIHByb3BlcnR5PSIkYXMzIj4NCisJICAgICAgICAgICAgICAgIDxwYXNzdGhyb3VnaD4NCisJICAgICAgICAgICAgICAgICAgICBpbXBvcnQgZmxhc2gubmV0LlNoYXJlZE9iamVjdDsNCisJICAgICAgICAgICAgICAgIDwvcGFzc3Rocm91Z2g+DQorCSAgICAgICAgICAgIDwvd2hlbj4NCisJICAgICAgICA8L3N3aXRjaD4NCisgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9ImNhbV93aWR0aCIgdmFsdWU9IjMyMCIgdHlwZT0ibnVtYmVyIiAvPg0KKyAgICAgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iY2FtX2hlaWdodCIgdmFsdWU9IjI0MCIgdHlwZT0ibnVtYmVyIiAvPg0KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uZGF0YSI+DQorICAgICAgICAgICAgICAgIDwhW0NEQVRBWw0KKyAgICAgICAgICAgICAgICAgICAgLy8gaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9uZGF0YSAiLCB0aGlzKTsNCisgICAgICAgICAgICAgICAgICAgIHZhciB0eXBlID0gdGhpcy5kYXRhcGF0aC54cGF0aFF1ZXJ5KCdAdHlwZScpOw0KKyAgICAgICAgICAgICAgICAgICAgdGhpcy5jYW1fd2lkdGggPSBOdW1iZXIodGhpcy5kYXRhcGF0aC54cGF0aFF1ZXJ5KCdAd2lkdGgnKSk7DQorICAgICAgICAgICAgICAgICAgICB0aGlzLmNhbV9oZWlnaHQgPSBOdW1iZXIodGhpcy5kYXRhcGF0aC54cGF0aFF1ZXJ5KCdAaGVpZ2h0JykpOw0KKyAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXRBdHRyaWJ1dGUoInRleHQiLCIiK3RoaXMuY2FtX3dpZHRoKyJ4Iit0aGlzLmNhbV9oZWlnaHQrIiBbIit0eXBlKyJdIik7DQorICAgICAgICAgICAgICAgICAgICB2YXIgaXNEZWZhdWx0ID0gdGhpcy5kYXRhcGF0aC54cGF0aFF1ZXJ5KCdAaXNEZWZhdWx0Jyk7DQorICAgICAgICAgICAgICAgICAgICANCisgICAgICAgICAgICAgICAgICAgIHZhciB0OlNoYXJlZE9iamVjdCA9IFNoYXJlZE9iamVjdC5nZXRMb2NhbCgndXNlcmRhdGEnKTsNCisgICAgICAgICAgICAgICAgICAgIHZhciBnID0gdC5kYXRhOw0KKyAgICAgICAgICAgICAgICAgICAgdmFyIHdpZHRoID0gZ1sid2lkdGgiXTsNCisgICAgICAgICAgICAgICAgICAgIHZhciBoZWlnaHQgPSBnWyJoZWlnaHQiXTsNCisgICAgICAgICAgICAgICAgICAgIGlmICh3aWR0aCE9bnVsbCAmJiB3aWR0aCA+IDAgJiYgaGVpZ2h0IT1udWxsICYmIGhlaWdodD4wKSB7DQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHdpZHRoID09IHRoaXMuY2FtX3dpZHRoICYmIGhlaWdodCA9PSB0aGlzLmNhbV9oZWlnaHQpIHsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LnNlbGVjdEl0ZW1BdChwYXJlbnQuY291bnRlcik7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5vbnNlbGVjdC5zZW5kRXZlbnQodGhpcyk7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsNCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNEZWZhdWx0ID09ICJ0cnVlIikgew0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgiRm91bmQgZGVmYXVsdCBvbmUgIix0eXBlKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50LnNlbGVjdEl0ZW1BdChwYXJlbnQuY291bnRlcik7DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC5vbnNlbGVjdC5zZW5kRXZlbnQodGhpcyk7DQorICAgICAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgICAgICAgICAgcGFyZW50LmNvdW50ZXIrPTE7DQorICAgICAgICAgICAgICAgIF1dPg0KKyAgICAgICAgICAgIDwvaGFuZGxlcj4NCisgICAgICAgIDwvdGV4dGxpc3RpdGVtPg0KKyAgICA8L3Jlc2V0Q29tYm9ib3g+ICAgICAgDQorICAgIA0KKyAgICA8c2ltcGxlTGFiZWxCdXR0b24gbmFtZT0iX2J0blN0YXJ0UmVjb3JkaW5nIiBsYWJlbGlkPSI3NzUiIA0KKyAgICAJCQkJICAgd2lkdGg9IjE0MCIgeD0iMTUwIiB5PSIyODAiIGhlaWdodD0iMjgiPg0KKyAgICAJPGhhbmRsZXIgbmFtZT0ib25jbGljayI+DQorICAgICAgICAgICAgcGFyZW50Ll9sZXZlbF9tZXRlci5zdGFydExldmVsKCk7DQorICAgICAgICAgICAgcGFyZW50LmRvU3RhcnRSZWNvcmRpbmcoKTsNCisgICAgICAgIDwvaGFuZGxlcj4NCisgICAgPC9zaW1wbGVMYWJlbEJ1dHRvbj4NCisgICAgDQorCTx2aWV3IHg9IjM0MCIgeT0iNjAiIG5hbWU9Il92aWRlbyIgY2xpcD0idHJ1ZSIgDQorCQkJd2lkdGg9IiR7IHBhcmVudC53aWR0aC10aGlzLngtMTAgfSIgaGVpZ2h0PSIkeyBwYXJlbnQuaGVpZ2h0LTI2MCB9Ij4gDQorCQk8dmlldyBuYW1lPSJjb250ZW50Ij4NCisJCQ0KKwkJCTx2aWRlb09iamVjdFRlc3RCcm9hZGNhc3QgbmFtZT0iX3B1Ymxpc2hlciIgIA0KKwkJCQkJd2lkdGg9IiR7IHBhcmVudC5wYXJlbnQucGFyZW50LmNhbV9kZWZhdWx0X3dpZHRoIH0iIA0KKwkJCQkJaGVpZ2h0PSIkeyBwYXJlbnQucGFyZW50LnBhcmVudC5jYW1fZGVmYXVsdF9oZWlnaHQgfSI+DQorCQkJCTxoYW5kbGVyIG5hbWU9InNlbmRDYW1lcmFTdGF0dXMiIGFyZ3M9ImNhbVN0YXR1cyI+DQorCQkgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2VuZENhbWVyYVN0YXR1cyAtMS0gIixjYW1TdGF0dXMpOw0KKwkJICAgICAgICAgICAgaWYgKGNhbVN0YXR1cyA9PSAiQ2FtZXJhLlVubXV0ZWQiKSB7DQorCQkgICAgICAgICAgICAJcGFyZW50LnBhcmVudC5wYXJlbnQuc3RhcnRUaW1lclRvQ291bnQoKTsNCisJCSAgICAgICAgICAgIH0NCisJCSAgICAgICAgPC9oYW5kbGVyPg0KKwkJICAgICAgICANCisJCSAgICAgICAgPGhhbmRsZXIgbmFtZT0ic2VuZE1pY3JvU3RhdHVzIiBhcmdzPSJtaWNTdGF0dXMiPg0KKwkJICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInNlbmRNaWNyb1N0YXR1cyAtMS0gIixtaWNTdGF0dXMpOw0KKwkJICAgICAgICAgICAgaWYgKG1pY1N0YXR1cyA9PSAiTWljcm9waG9uZS5Vbm11dGVkIikgew0KKwkJICAgICAgICAgICAgICAgIHBhcmVudC5wYXJlbnQucGFyZW50LnN0YXJ0VGltZXJUb0NvdW50KCk7DQorCQkgICAgICAgICAgICB9DQorCQkgICAgICAgIDwvaGFuZGxlcj4NCisJCQk8L3ZpZGVvT2JqZWN0VGVzdEJyb2FkY2FzdD4NCisJCQkNCisJCQk8dmlkZW9PYmplY3RQbGF5VGVzdEJyb2FkY2FzdCBuYW1lPSJfdmlld2VyIiB2aXNpYmlsaXR5PSJoaWRkZW4iIA0KKwkJCQkJCXdpZHRoPSIkeyBwYXJlbnQucGFyZW50LnBhcmVudC5jYW1fZGVmYXVsdF93aWR0aCB9IiANCisJCQkJCQloZWlnaHQ9IiR7IHBhcmVudC5wYXJlbnQucGFyZW50LmNhbV9kZWZhdWx0X2hlaWdodCB9IiAvPg0KKwkJPC92aWV3Pg0KKwkJDQorCQk8b21fdnNjcm9sbGJhciAvPg0KKwkJPG9tX2hzY3JvbGxiYXIgLz4NCisJPC92aWV3Pg0KKwkNCisJCQkJCQkJCSAgDQorCTx2aWV3IG5hbWU9Il90ZXh0IiB4PSIzNDAiIHk9IjYwIiB3aWR0aD0iMjQwIiBoZWlnaHQ9IjE4MCIgdmlzaWJpbGl0eT0iaGlkZGVuIj4NCisJCTx0ZXh0IG5hbWU9Il9pbmZvIiByZXNpemU9InRydWUiIGJnY29sb3I9IjB4RkZGRkZGIiBhbGlnbj0icmlnaHQiDQorCQkJICBmb250c2l6ZT0iMTIiIGZvbnRzdHlsZT0iYm9sZCIgLz4NCisJPC92aWV3Pg0KKyAgICANCisgICAgPHNpbXBsZUxhYmVsQnV0dG9uIG5hbWU9Il9wbGF5IiB5PSIkeyBwYXJlbnQuaGVpZ2h0LTE2NiB9IiB4PSI0OTAiIGVuYWJsZWQ9ImZhbHNlIg0KKyAgICAgICAgICAgICAgICAJd2lkdGg9IjkwIiBsYWJlbGlkPSI3NjQiID4NCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uY2xpY2siPg0KKyAgICAgICAgICAgIHBhcmVudC5kb1BsYXkoKTsNCisgICAgICAgIDwvaGFuZGxlcj4NCisgICAgPC9zaW1wbGVMYWJlbEJ1dHRvbj4NCisgICAgIA0KKyAgICA8dmlldyBuYW1lPSJfbGV2ZWxfbWV0ZXIiIHg9IjM0MCIgeT0iJHsgcGFyZW50LmhlaWdodC0xOTAgfSIgd2lkdGg9IjI0MCIgaGVpZ2h0PSIyMCIgY2xpcD0idHJ1ZSIgYmdjb2xvcj0iMHgwMDAwMDAiPg0KKyAgICAJDQorICAgIAkgPCEtLS0gTGV2ZWwgZGVsZWdhdGUsIHVzZWQgdG8gdHJhY2sgbGV2ZWwgY2hhbmdlcy4gDQorICAgICAgICAgICAgICBAa2V5d29yZHMgcHJpdmF0ZSAtLT4NCisgICAgICAgIDxhdHRyaWJ1dGUgbmFtZT0iX2xldmVsZGVsIiB2YWx1ZT0iJG9uY2V7bmV3IEx6RGVsZWdhdGUodGhpcywgJ191cGRhdGVMZXZlbCcpfSIvPg0KKyAgICAJDQorICAgIAk8bWV0aG9kIG5hbWU9Il91cGRhdGVMZXZlbCIgYXJncz0ibm8iPg0KKyAgICAJCTwhW0NEQVRBWw0KKyAgICAJCSAgICBpZiAocGFyZW50Ll92aWRlby5jb250ZW50Ll9wdWJsaXNoZXIuX2NoYXR2aWRlb2lubmVyLl92aWRlb3N0cmVhbS5taWNybyA9PSBudWxsKQ0KKyAgICAJCSAgICB7DQorICAgIAkJICAgIAlyZXR1cm47DQorICAgIAkJICAgIH0NCisgICAgCQkgICAgdGhpcy5zZXROZXdMZXZlbChwYXJlbnQuX3ZpZGVvLmNvbnRlbnQuX3B1Ymxpc2hlci5fY2hhdHZpZGVvaW5uZXIuX3ZpZGVvc3RyZWFtLm1pY3JvLmFjdGl2aXR5TGV2ZWwpOw0KKyAgICAJCV1dPg0KKyAgICAJPC9tZXRob2Q+DQorICAgIAkNCisgICAgCTxtZXRob2QgbmFtZT0ic3RhcnRMZXZlbCI+DQorICAgIAkJdGhpcy5fbGV2ZWxkZWwucmVnaXN0ZXIobHouSWRsZSwgIm9uaWRsZSIpOw0KKyAgICAJPC9tZXRob2Q+DQorICAgIAkNCisgICAgCTxtZXRob2QgbmFtZT0icmVzZXROZXdMZXZlbCI+DQorICAgIAkJdGhpcy5fbGV2ZWxkZWwudW5yZWdpc3RlckFsbCgpOw0KKyAgICAJCXRoaXMuc2V0TmV3TGV2ZWwoMCk7DQorICAgIAk8L21ldGhvZD4NCisgICAgCQ0KKyAgICAJPG1ldGhvZCBuYW1lPSJzZXROZXdMZXZlbCIgYXJncz0ibm8iPg0KKyAgICAJCTwhW0NEQVRBWw0KKyAgICAgICAgICAgICAgICB2YXIgbmV3TGV2ZWwgPSAoMjM4LzEwMCkgKiBubzsNCisgICAgICAgICAgICAgICAgdGhpcy5fb3Zlci5zZXRBdHRyaWJ1dGUoIndpZHRoIiwyMzgtbmV3TGV2ZWwpOw0KKyAgICAgICAgICAgICAgICB0aGlzLl9vdmVyLnNldEF0dHJpYnV0ZSgieCIsMSsobmV3TGV2ZWwpKTsNCisgICAgICAgICAgICBdXT4NCisgICAgCTwvbWV0aG9kPg0KKyAgICAJDQorICAgIAk8dmlldyBuYW1lPSJfYmciIHdpZHRoPSIyMzgiIGhlaWdodD0iMTgiIHg9IjEiIHk9IjEiIGJnY29sb3I9IjB4RkZGRkZGIiAvPg0KKyAgICAJPHZpZXcgbmFtZT0iX2dyaXAiIHJlc291cmNlPSJsZXZlbF9tZXRlcl9yc2MiIHg9IjEiIHk9IjEiIC8+DQorICAgIAk8dmlldyBuYW1lPSJfb3ZlciIgd2lkdGg9IjIzOCIgaGVpZ2h0PSIxOCIgeD0iMSIgeT0iMSIgYmdjb2xvcj0iMHhGRkZGRkYiIC8+DQorICAgIAk8bGFiZWxUZXh0IGxhYmVsaWQ9Ijc2NyIgeD0iMiIgeT0iMiIgaGVpZ2h0PSIxNiIgd2lkdGg9IjIzNiIgcmVzaXplPSJmYWxzZSIgLz4NCisgICAgPC92aWV3Pg0KKyAgICANCisgICAgPHZpZXcgeT0iJHsgcGFyZW50LmhlaWdodC05OCB9IiByZXNvdXJjZT0idGVzdF9zZXR1cF9pbmZvX3JzYyIgeD0iMTYiIC8+DQorICAgIA0KKyAgICA8bGFiZWxUZXh0IGZvbnRzdHlsZT0iYm9sZCIgbGFiZWxpZD0iNzY1IiB4PSIzOSIgeT0iJHsgcGFyZW50LmhlaWdodC0xMDAgfSINCisgICAgICAgICAgICAgICB3aWR0aD0iJHsgcGFyZW50LndpZHRoLTUwIH0iIG11bHRpbGluZT0idHJ1ZSIgLz4NCisNCisgICAgPCEtLSBSZW1lbWJlciBNZSAtLT4NCisgICAgPGxhYmVsQ2hlY2tib3ggbmFtZT0iaG9sZGRhdGFpblNPIiBsYWJlbGlkPSI3NjIiIHg9IjEwIiB5PSIkeyBwYXJlbnQuaGVpZ2h0LTIwIH0iID4NCisgICAgICAgIDxzd2l0Y2g+DQorICAgICAgICAgICAgPHdoZW4gcHJvcGVydHk9IiRhczMiPg0KKyAgICAgICAgICAgICAgICA8cGFzc3Rocm91Z2g+DQorICAgICAgICAgICAgICAgICAgICBpbXBvcnQgZmxhc2gubmV0LlNoYXJlZE9iamVjdDsNCisgICAgICAgICAgICAgICAgPC9wYXNzdGhyb3VnaD4NCisgICAgICAgICAgICA8L3doZW4+DQorICAgICAgICA8L3N3aXRjaD4NCisgICAgICAgIDxoYW5kbGVyIG5hbWU9Im9uaW5pdCI+DQorICAgICAgICAgICAgdmFyIHQ6U2hhcmVkT2JqZWN0ID0gU2hhcmVkT2JqZWN0LmdldExvY2FsKCd1c2VyZGF0YScpOw0KKyAgICAgICAgICAgIHZhciBnID0gdC5kYXRhOw0KKyAgICAgICAgICAgIHZhciBzYXZlID0gZ1sic2F2ZWNhbWRhdGEiXTsNCisgICAgICAgICAgICBpZiAoJGRlYnVnKSBEZWJ1Zy53cml0ZSgic2F2ZWNhbWRhdGEgc2F2ZTogIixzYXZlKTsNCisgICAgICAgICAgICBpZihzYXZlKSB0aGlzLnNldFZhbHVlKHRydWUpOw0KKyAgICAgICAgPC9oYW5kbGVyPg0KKyAgICA8L2xhYmVsQ2hlY2tib3g+DQorDQorICAgIDxzaW1wbGVMYWJlbEJ1dHRvbiBmb250c2l6ZT0iMTEiIHZpc2liaWxpdHk9IiR7IChjYW52YXMuaXNJbnRlcnZpZXcpID8gJ3Zpc2libGUnIDogJ2hpZGRlbicgfSINCisgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsaWQ9IjU0IiB4PSIkeyBwYXJlbnQud2lkdGgtMjIwIH0iIHk9IiR7IHBhcmVudC5oZWlnaHQtNTAgfSIgd2lkdGg9IjEwMCI+DQorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4NCisgICAgICAgICAgICBwYXJlbnQuY2xlYW5WaWRlb3MoKTsNCisgICAgICAgICAgICB0aGlzLnBhcmVudC5zdG9yZWxvY2FsZGF0YSgpOw0KKyAgICAgICAgICAgIHRoaXMucGFyZW50LmNob3NlbkNhbSA9IHBhcmVudC5hdmFpbGlibGVDYW1zLmdldFZhbHVlKCk7DQorICAgICAgICAgICAgdGhpcy5wYXJlbnQuY2hvc2VuTWljID0gcGFyZW50LmF2YWlsaWJsZU1pY3MuZ2V0VmFsdWUoKTsNCisgICAgICAgICAgICB0aGlzLnBhcmVudC5jaG9zZW5TZXR0aW5nID0gcGFyZW50LmF2YWlsaWJsZVNldHRpbmdzLmdldFZhbHVlKCk7DQorICAgICAgICAgICAgdGhpcy5wYXJlbnQucmVtb3RlTWVzc2FnZSA9IG5ldyBBcnJheSgpOw0KKyAgICAgICAgICAgIHRoaXMucGFyZW50LnJlbW90ZU1lc3NhZ2VbMF0gPSAnYXZzZXR0aW5ncyc7DQorICAgICAgICAgICAgdGhpcy5wYXJlbnQucmVtb3RlTWVzc2FnZVsxXSA9ICIwIjsNCisgICAgICAgICAgICB0aGlzLnBhcmVudC5yZW1vdGVNZXNzYWdlWzJdID0gdGhpcy5wYXJlbnQuY2hvc2VuU2V0dGluZzsNCisgICAgICAgICAgICB0aGlzLnBhcmVudC5nZXRCcm9hZENhc3RJZC5kb0NhbGwoKTsNCisgICAgICAgIDwvaGFuZGxlcj4NCisgICAgPC9zaW1wbGVMYWJlbEJ1dHRvbj4NCisNCisgICAgPHNpbXBsZUxhYmVsQnV0dG9uIGZvbnRzaXplPSIxMSIgdmlzaWJpbGl0eT0iJHsgKGNhbnZhcy5pc0ludGVydmlldykgPyAndmlzaWJsZScgOiAnaGlkZGVuJyB9Ig0KKyAgICAgICAgICAgICAgICAgICAgICAgbGFiZWxpZD0iOTE4IiB4PSIkeyBwYXJlbnQud2lkdGgtMTEwIH0iIHk9IiR7IHBhcmVudC5oZWlnaHQtNTAgfSIgd2lkdGg9IjEwMCI+DQorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbmNsaWNrIj4NCisgICAgICAgICAgICBwYXJlbnQuY2xlYW5WaWRlb3MoKTsNCisgICAgICAgICAgICBwYXJlbnQuY2xvc2UoKTsNCisgICAgICAgIDwvaGFuZGxlcj4NCisgICAgPC9zaW1wbGVMYWJlbEJ1dHRvbj4NCisNCisgICAgPHNpbXBsZUxhYmVsQnV0dG9uIGZvbnRzaXplPSIxMSIgdmlzaWJpbGl0eT0iJHsgKCFjYW52YXMuaXNJbnRlcnZpZXcpID8gJ3Zpc2libGUnIDogJ2hpZGRlbicgfSINCisgICAgCQkJCSAgIGxhYmVsaWQ9Ijc2MSIgd2lkdGg9IjE2MCIgeD0iJHsgcGFyZW50LndpZHRoLTE3MCB9IiB5PSIkeyBwYXJlbnQuaGVpZ2h0LTUwIH0iIGhlaWdodD0iMjgiPg0KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib25jbGljayI+DQorICAgICAgICAgICAgcGFyZW50LmNsZWFuVmlkZW9zKCk7DQorICAgICAgICAJdGhpcy5wYXJlbnQuc3RvcmVsb2NhbGRhdGEoKTsNCisgICAgICAgIAl0aGlzLnBhcmVudC5jaG9zZW5DYW0gPSBwYXJlbnQuYXZhaWxpYmxlQ2Ftcy5nZXRWYWx1ZSgpOw0KKyAgICAgICAgCXRoaXMucGFyZW50LmNob3Nlbk1pYyA9IHBhcmVudC5hdmFpbGlibGVNaWNzLmdldFZhbHVlKCk7DQorICAgICAgICAJdGhpcy5wYXJlbnQuY2hvc2VuU2V0dGluZyA9IHBhcmVudC5hdmFpbGlibGVTZXR0aW5ncy5nZXRWYWx1ZSgpOw0KKwkJCXRoaXMucGFyZW50LnJlbW90ZU1lc3NhZ2UgPSBuZXcgQXJyYXkoKTsNCisJCQl0aGlzLnBhcmVudC5yZW1vdGVNZXNzYWdlWzBdID0gJ2F2c2V0dGluZ3MnOw0KKwkJCXRoaXMucGFyZW50LnJlbW90ZU1lc3NhZ2VbMV0gPSAiMCI7DQorCQkJdGhpcy5wYXJlbnQucmVtb3RlTWVzc2FnZVsyXSA9IHRoaXMucGFyZW50LmNob3NlblNldHRpbmc7DQorICAgICAgICAgICAgdGhpcy5wYXJlbnQuZ2V0QnJvYWRDYXN0SWQuZG9DYWxsKCk7DQorICAgICAgICA8L2hhbmRsZXI+DQorICAgIDwvc2ltcGxlTGFiZWxCdXR0b24+DQorDQorPC9jbGFzcz4NCisgICAgDQorPC9saWJyYXJ5Pg0KZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvc3dmMTAvdmlkZW8vbGlicmFyeS5senggYi9XZWJDb250ZW50L3N3ZjEwL3ZpZGVvL2xpYnJhcnkubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxNTU2N2YKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL3ZpZGVvL2xpYnJhcnkubHp4CkBAIC0wLDAgKzEsNjUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/Pg0KKzwhLS0NCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgIA0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAgICAJICANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAgdW5kZXIgdGhlIExpY2Vuc2UuDQorICANCistLT4NCis8bGlicmFyeT4NCisNCisJPCEtLSAgRmFtRmFtIEljb24gQ3JlYXRpdmUgQ29tbW9ucyAtLT4NCisgICAgPHJlc291cmNlIG5hbWU9Indhcm5pbmdfaWNvbl9wb3B1cF9kZXZpY2VzX3JzYyIgc3JjPSJyZXNvdXJjZXMvZXJyb3IucG5nIiAvPg0KKw0KKwk8IS0tICBBUEwgYXV0aG9yIHNlYmF3YWduZXIgLS0+DQorCTxyZXNvdXJjZSBuYW1lPSJjaGF0YmdpdGVtIiBzcmM9InJlc291cmNlcy9wcm9maWxlX3BpYy5qcGciIC8+DQorDQorCTwhLS0gIEZhbUZhbSBJY29uIENyZWF0aXZlIENvbW1vbnMgLS0+DQorCTxyZXNvdXJjZSBuYW1lPSJyZXN5bmN1c2VyX3JzYyIgc3JjPSJyZXNvdXJjZXMvYXJyb3dfcmVmcmVzaF9zbWFsbC5wbmciIC8+DQorCQ0KKwk8IS0tICBBUEwgYXV0aG9yIHNlYmF3YWduZXIgLS0+DQorICAgIDxyZXNvdXJjZSBuYW1lPSJtaWNfcnNjIiBzcmM9InJlc291cmNlcy9taWNyby5wbmciIC8+DQorICAgIA0KKyAgICA8IS0tICBBUEwgYXV0aG9yIHNlYmF3YWduZXIgLS0+DQorCTxyZXNvdXJjZSBuYW1lPSJzcGVha2luZyIgc3JjPSJyZXNvdXJjZXMvc3BlYWtpbmcucG5nIiAvPg0KKw0KKyAgICA8IS0tICBJY29uRmluZGVyIENyZWF0aXZlIENvbW1vbnMgLS0+DQorICAgIDxyZXNvdXJjZSBuYW1lPSJ2b2x1bWUiIHNyYz0icmVzb3VyY2VzL3ZvbHVtZS5wbmciIC8+DQorCQ0KKwk8IS0tICBGYW1GYW0gSWNvbiBDcmVhdGl2ZSBDb21tb25zIC0tPg0KKwk8cmVzb3VyY2UgbmFtZT0ibXV0ZV9idG5fcnNjIj4NCisJCTxmcmFtZSBzcmM9InJlc291cmNlcy9zb3VuZC5wbmciIC8+DQorCQk8ZnJhbWUgc3JjPSJyZXNvdXJjZXMvc291bmRfbXV0ZS5wbmciIC8+DQorCTwvcmVzb3VyY2U+DQorCQ0KKwk8IS0tICBBUEwgYXV0aG9yIHNlYmF3YWduZXIgLS0+DQorICAgIDxyZXNvdXJjZSBuYW1lPSJtdXRlX21pY3JvX2J0bl9yc2MiPg0KKwkJPGZyYW1lIHNyYz0icmVzb3VyY2VzL211dGVfbWljcm8ucG5nIiAvPg0KKwkJPGZyYW1lIHNyYz0icmVzb3VyY2VzL211dGVfbWljcm9fcmVkLnBuZyIgLz4NCisJPC9yZXNvdXJjZT4NCisNCisJPCEtLSAgQVBMIGF1dGhvciBzZWJhd2FnbmVyIC0tPg0KKwk8cmVzb3VyY2UgbmFtZT0ibHpfcmVjb3JkZXJfcGxheSIgc3JjPSJyZXNvdXJjZXMvd2Vic3RhcnRfcGxheS5wbmciIC8+DQorDQorICAgIDxpbmNsdWRlIGhyZWY9ImNoYW5nZURldmljZS5sengiIC8+DQorICAgIDxpbmNsdWRlIGhyZWY9InZpZGVvVXNlclByb2ZpbGVQaWNTV0YxMC5sengiIC8+DQorICAgIDxpbmNsdWRlIGhyZWY9ImVkaXRSZWNvcmRTdHJlYW1TV0YxMC5sengiIC8+DQorICAgIDxpbmNsdWRlIGhyZWY9ImJhc2VWaWRlb09iamVjdC5sengiIC8+DQorICAgIDxpbmNsdWRlIGhyZWY9InZpZGVvT2JqZWN0UGxheUJyb2FkY2FzdC5sengiIC8+DQorICAgIDxpbmNsdWRlIGhyZWY9InZpZGVvT2JqZWN0VGVzdEJyb2FkY2FzdC5sengiIC8+DQorICAgIDxpbmNsdWRlIGhyZWY9InZpZGVvT2JqZWN0UGxheVRlc3RCcm9hZGNhc3QubHp4IiAvPg0KKyAgICA8aW5jbHVkZSBocmVmPSJ2b2x1bWVTbGlkZXIubHp4IiAvPg0KKyAgICANCis8L2xpYnJhcnk+DQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC92aWRlby9yZXNvdXJjZXMvYXJyb3dfcmVmcmVzaF9zbWFsbC5wbmcgYi9XZWJDb250ZW50L3N3ZjEwL3ZpZGVvL3Jlc291cmNlcy9hcnJvd19yZWZyZXNoX3NtYWxsLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzA4N2RmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC92aWRlby9yZXNvdXJjZXMvYXJyb3dfcmVmcmVzaF9zbWFsbC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC92aWRlby9yZXNvdXJjZXMvZXJyb3IucG5nIGIvV2ViQ29udGVudC9zd2YxMC92aWRlby9yZXNvdXJjZXMvZXJyb3IucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyOGNmMmQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL3ZpZGVvL3Jlc291cmNlcy9lcnJvci5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC92aWRlby9yZXNvdXJjZXMvbWljcm8uZmxhIGIvV2ViQ29udGVudC9zd2YxMC92aWRlby9yZXNvdXJjZXMvbWljcm8uZmxhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2MzFhZDIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL3ZpZGVvL3Jlc291cmNlcy9taWNyby5mbGEKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC92aWRlby9yZXNvdXJjZXMvbWljcm8ucG5nIGIvV2ViQ29udGVudC9zd2YxMC92aWRlby9yZXNvdXJjZXMvbWljcm8ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllMDI1ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL3ZpZGVvL3Jlc291cmNlcy9taWNyby5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC92aWRlby9yZXNvdXJjZXMvbXV0ZV9taWNyby5mbGEgYi9XZWJDb250ZW50L3N3ZjEwL3ZpZGVvL3Jlc291cmNlcy9tdXRlX21pY3JvLmZsYQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTBkZGJmCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC92aWRlby9yZXNvdXJjZXMvbXV0ZV9taWNyby5mbGEKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC92aWRlby9yZXNvdXJjZXMvbXV0ZV9taWNyby5wbmcgYi9XZWJDb250ZW50L3N3ZjEwL3ZpZGVvL3Jlc291cmNlcy9tdXRlX21pY3JvLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWVmZGJlCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC92aWRlby9yZXNvdXJjZXMvbXV0ZV9taWNyby5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC92aWRlby9yZXNvdXJjZXMvbXV0ZV9taWNyb19yZWQuZmxhIGIvV2ViQ29udGVudC9zd2YxMC92aWRlby9yZXNvdXJjZXMvbXV0ZV9taWNyb19yZWQuZmxhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4N2MyYTAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL3ZpZGVvL3Jlc291cmNlcy9tdXRlX21pY3JvX3JlZC5mbGEKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC92aWRlby9yZXNvdXJjZXMvbXV0ZV9taWNyb19yZWQucG5nIGIvV2ViQ29udGVudC9zd2YxMC92aWRlby9yZXNvdXJjZXMvbXV0ZV9taWNyb19yZWQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5ZTE2YjUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL3ZpZGVvL3Jlc291cmNlcy9tdXRlX21pY3JvX3JlZC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC92aWRlby9yZXNvdXJjZXMvcHJvZmlsZV9waWMuanBnIGIvV2ViQ29udGVudC9zd2YxMC92aWRlby9yZXNvdXJjZXMvcHJvZmlsZV9waWMuanBnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiNjNmMDEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL3ZpZGVvL3Jlc291cmNlcy9wcm9maWxlX3BpYy5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC92aWRlby9yZXNvdXJjZXMvc291bmQucG5nIGIvV2ViQ29udGVudC9zd2YxMC92aWRlby9yZXNvdXJjZXMvc291bmQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwNTZkMjMKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL3ZpZGVvL3Jlc291cmNlcy9zb3VuZC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC92aWRlby9yZXNvdXJjZXMvc291bmRfbXV0ZS5wbmcgYi9XZWJDb250ZW50L3N3ZjEwL3ZpZGVvL3Jlc291cmNlcy9zb3VuZF9tdXRlLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjUyZDJhCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC92aWRlby9yZXNvdXJjZXMvc291bmRfbXV0ZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC92aWRlby9yZXNvdXJjZXMvc3BlYWtpbmcucG5nIGIvV2ViQ29udGVudC9zd2YxMC92aWRlby9yZXNvdXJjZXMvc3BlYWtpbmcucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjYTIxYTcKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL3ZpZGVvL3Jlc291cmNlcy9zcGVha2luZy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC92aWRlby9yZXNvdXJjZXMvdm9sdW1lLnBuZyBiL1dlYkNvbnRlbnQvc3dmMTAvdmlkZW8vcmVzb3VyY2VzL3ZvbHVtZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWIwZGJjNQotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3dmMTAvdmlkZW8vcmVzb3VyY2VzL3ZvbHVtZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC92aWRlby9yZXNvdXJjZXMvd2Vic3RhcnRfcGxheS5wbmcgYi9XZWJDb250ZW50L3N3ZjEwL3ZpZGVvL3Jlc291cmNlcy93ZWJzdGFydF9wbGF5LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDEzNjgzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC92aWRlby9yZXNvdXJjZXMvd2Vic3RhcnRfcGxheS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC92aWRlby92aWRlb09iamVjdFBsYXlCcm9hZGNhc3QubHp4IGIvV2ViQ29udGVudC9zd2YxMC92aWRlby92aWRlb09iamVjdFBsYXlCcm9hZGNhc3QubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxNjI0NDUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL3ZpZGVvL3ZpZGVvT2JqZWN0UGxheUJyb2FkY2FzdC5sengKQEAgLTAsMCArMSw3NSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+DQorPCEtLSBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lIG9yIG1vcmUgY29udHJpYnV0b3IgDQorCWxpY2Vuc2UgYWdyZWVtZW50cy4gU2VlIHRoZSBOT1RJQ0UgZmlsZSBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCANCisJaW5mb3JtYXRpb24gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlIHRvIA0KKwl5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSANCisJdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiANCisJdGhlIExpY2Vuc2UgYXQgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIFVubGVzcyByZXF1aXJlZCANCisJYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSANCisJTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyANCisJT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIA0KKwlsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLiAtLT4NCis8bGlicmFyeT4NCisNCisJPCEtLS0gQ29udGFpbnMgbm8gbWljcm9waG9uZSBvciBjYW1lcmEgT2JqZWN0LCB0aGlzIHZpZXcgY2FuIG9ubHkgc3Vic2NyaWJlIA0KKwkJdG8gYSB2aWRlbyBvciBsaXZlLXN0cmVhbSAtLT4NCisJPGNsYXNzIG5hbWU9InZpZGVvT2JqZWN0UGxheUJyb2FkY2FzdCIgZXh0ZW5kcz0iYmFzZVZpZGVvT2JqZWN0Ig0KKwkJaXNyZW1vdGU9InRydWUiPg0KKwkJPGF0dHJpYnV0ZSBuYW1lPSJpbnRlcnZpZXdQb2RJZCIgdmFsdWU9Ii0xIiAvPg0KKwkJPGF0dHJpYnV0ZSBuYW1lPSJyYXRpb1ciIHZhbHVlPSIxIiAvPg0KKwkJPGF0dHJpYnV0ZSBuYW1lPSJyYXRpb0giIHZhbHVlPSIxIiAvPg0KKw0KKwkJPGF0dHJpYnV0ZSBuYW1lPSJ2aWRlb0luc2V0WCIgdmFsdWU9IjIiIHR5cGU9Im51bWJlciIgLz4NCisJCTxhdHRyaWJ1dGUgbmFtZT0idmlkZW9JbnNldFkiIHZhbHVlPSIyMSIgdHlwZT0ibnVtYmVyIiAvPg0KKwkJPGF0dHJpYnV0ZSBuYW1lPSJib3R0b21CYXJIZWlnaHQiIHZhbHVlPSIwIiB0eXBlPSJudW1iZXIiIC8+DQorDQorCQk8aGFuZGxlciBuYW1lPSJvbmluaXQiPg0KKwkJPCFbQ0RBVEFbDQorCQkJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIkluaXQgdmlkZW9PYmplY3RQbGF5QnJvYWRjYXN0ICIsdGhpcy5pc3JlbW90ZSx0aGlzLmNsaWVudFZhcnMpOw0KKwkJCS8vRGlzcGxheSB3aWRnZXQgZGVmaW5lZCBpbiBtb3RoZXIgY2xhc3MNCisJCQl0aGlzLl9sb3VkbmVzcy5icmluZ1RvRnJvbnQoKTsNCisJCQl0aGlzLl9yZXNpemV2aWV3LmJyaW5nVG9Gcm9udCgpOw0KKwkJXV0+DQorCQk8L2hhbmRsZXI+DQorDQorCQk8IS0tLSBDaGFuZ2UgdGhlIHZpZGVvIHJlc29sdXRpb24gYnkgY2hhbmluZyBwb2Qgc2l6ZSAtLT4NCisJCTxtZXRob2QgbmFtZT0ic2V0RGVmYXVsdFZpZGVvU2l6ZSIgYXJncz0idyxoIj4NCisJCQl0aGlzLmluaXRSYXRpbyA9IHcgLyBoOw0KKwkJCXRoaXMuc2V0QXR0cmlidXRlKCJ3aWR0aCIsdyt0aGlzLnZpZGVvSW5zZXRYKTsNCisNCisJCQlpZiAoY2FudmFzLmN1cnJlbnRSb29tT2JqZWN0LnNob3dNaWNyb3Bob25lU3RhdHVzKSB7DQorCQkJCXRoaXMuc2V0QXR0cmlidXRlKCJib3R0b21CYXJIZWlnaHQiLHRoaXMuX2lubmVydG9wLmhlaWdodCArIDEpOw0KKwkJCX0NCisNCisJCQl0aGlzLnNldEF0dHJpYnV0ZSgiaGVpZ2h0IixoK3RoaXMudmlkZW9JbnNldFkrdGhpcy5ib3R0b21CYXJIZWlnaHQpOw0KKwkJPC9tZXRob2Q+DQorDQorCQk8dmlldyBuYW1lPSJfY2hhdHZpZGVvaW5uZXIiIHg9IiRvbmNleyBwYXJlbnQudmlkZW9JbnNldFgtMSB9IiB5PSIkb25jZXsgcGFyZW50LnZpZGVvSW5zZXRZLTEgfSINCisJCQloZWlnaHQ9IiR7cGFyZW50LmhlaWdodC1wYXJlbnQudmlkZW9JbnNldFktcGFyZW50LmJvdHRvbUJhckhlaWdodH0iDQorCQkJd2lkdGg9IiR7cGFyZW50LndpZHRoLXBhcmVudC52aWRlb0luc2V0WH0iPg0KKw0KKwkJCTxhdHRyaWJ1dGUgbmFtZT0iaW5pdEgiIC8+DQorCQkJPGF0dHJpYnV0ZSBuYW1lPSJpbml0VyIgLz4NCisNCisJCQk8aGFuZGxlciBuYW1lPSJvbmluaXQiPg0KKwkJCQl0aGlzLnIuc2V0QXR0cmlidXRlKCdmcmFtZScsNSk7DQorCQkJCXRoaXMuaW5pdEggPQ0KKwkJCQl0aGlzLmhlaWdodDsNCisJCQkJdGhpcy5pbml0VyA9IHRoaXMud2lkdGg7DQorCQkJPC9oYW5kbGVyPg0KKw0KKwkJCTx2aWV3IG5hbWU9InIiPjwvdmlldz4NCisNCisJCQk8YmFzZVZpZGVvU3RyZWFtRGV2aWNlIG5hbWU9Il92aWRlb3N0cmVhbSINCisJCQkJYmdjb2xvcj0iYmxhY2siIHdpZHRoPSIke3BhcmVudC53aWR0aH0iIGhlaWdodD0iJHtwYXJlbnQuaGVpZ2h0fSI+DQorCQkJCTxoYW5kbGVyIG5hbWU9Im9ubGV2ZWwiPg0KKwkJCQkJdmFyIGZ1bGxMZW5ndGggPSBwYXJlbnQuaGVpZ2h0LTI0Ow0KKwkJCQkJcGFyZW50Ll9hY3Rpdml0eUxldmVsLnNldEF0dHJpYnV0ZSgiaGVpZ2h0IiwtdGhpcy5sZXZlbCooZnVsbExlbmd0aC8xMDApKTsNCisJCQkJPC9oYW5kbGVyPg0KKwkJCTwvYmFzZVZpZGVvU3RyZWFtRGV2aWNlPg0KKw0KKwkJCTx2aWV3IG5hbWU9Il9hY3Rpdml0eUxldmVsIiB3aWR0aD0iNiIgeD0iMiIgeT0iJHtwYXJlbnQuaGVpZ2h0fSINCisJCQkJb3BhY2l0eT0iMC41IiBiZ2NvbG9yPSIweDAwRkYwMCIgaGVpZ2h0PSIwIiAvPg0KKwkJPC92aWV3Pg0KKwk8L2NsYXNzPg0KKzwvbGlicmFyeT4NCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL3ZpZGVvL3ZpZGVvT2JqZWN0UGxheVRlc3RCcm9hZGNhc3QubHp4IGIvV2ViQ29udGVudC9zd2YxMC92aWRlby92aWRlb09iamVjdFBsYXlUZXN0QnJvYWRjYXN0Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTg5YWU1Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC92aWRlby92aWRlb09iamVjdFBsYXlUZXN0QnJvYWRjYXN0Lmx6eApAQCAtMCwwICsxLDQxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPGxpYnJhcnk+DQorDQorDQorPCEtLS0NCisJY29udGFpbnMgbWljcm9waG9uZSBhbmQgY2FtZXJhIGZvciBicm9hZGNhc3RpbmcsDQorCXRoaXMgY2xhc3MgaXMgdXNlZCBvbmx5IGluIE1lZXRpbmdzLU1vZHVzDQorIC0tPg0KKw0KKyANCis8Y2xhc3MgbmFtZT0idmlkZW9PYmplY3RQbGF5VGVzdEJyb2FkY2FzdCIgZXh0ZW5kcz0idmlldyIgPg0KKw0KKwk8dmlldyBuYW1lPSJfY2hhdHZpZGVvaW5uZXIiIHg9IjAiIHk9IjAiIGhlaWdodD0iJHtwYXJlbnQuaGVpZ2h0fSIgd2lkdGg9IiR7cGFyZW50LndpZHRofSI+DQorCQkNCisJCTxiYXNlVmlkZW9TdHJlYW0gbmFtZT0iX3ZpZGVvc3RyZWFtIiBtb2RlPSJicm9hZGNhc3QiDQorCQkJCQkJIHdpZHRoPSIke3BhcmVudC53aWR0aH0iIGhlaWdodD0iJHtwYXJlbnQuaGVpZ2h0fSIgYmdjb2xvcj0iMHgwMDAwMDAiIC8+DQorCQkNCisJPC92aWV3PgkNCis8L2NsYXNzPg0KKw0KKw0KKzwvbGlicmFyeT4NCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL3ZpZGVvL3ZpZGVvT2JqZWN0VGVzdEJyb2FkY2FzdC5senggYi9XZWJDb250ZW50L3N3ZjEwL3ZpZGVvL3ZpZGVvT2JqZWN0VGVzdEJyb2FkY2FzdC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmZmZjBhMgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3dmMTAvdmlkZW8vdmlkZW9PYmplY3RUZXN0QnJvYWRjYXN0Lmx6eApAQCAtMCwwICsxLDU1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPGxpYnJhcnk+DQorDQorDQorPCEtLS0NCisJY29udGFpbnMgbWljcm9waG9uZSBhbmQgY2FtZXJhIGZvciBicm9hZGNhc3RpbmcsDQorCXRoaXMgY2xhc3MgaXMgdXNlZCBvbmx5IGluIE1lZXRpbmdzLU1vZHVzDQorIC0tPg0KKw0KKyANCis8Y2xhc3MgbmFtZT0idmlkZW9PYmplY3RUZXN0QnJvYWRjYXN0IiBleHRlbmRzPSJ2aWV3IiA+DQorDQorICAgIDxldmVudCBuYW1lPSJzZW5kQ2FtZXJhU3RhdHVzIiAvPg0KKyAgICANCisgICAgPGV2ZW50IG5hbWU9InNlbmRNaWNyb1N0YXR1cyIgLz4NCisgICAgDQorCTx2aWV3IG5hbWU9Il9jaGF0dmlkZW9pbm5lciIgeD0iMCIgeT0iMCIgaGVpZ2h0PSIke3BhcmVudC5oZWlnaHR9IiB3aWR0aD0iJHtwYXJlbnQud2lkdGh9Ij4NCisJCQ0KKwkJPGJhc2VWaWRlb1N0cmVhbURldmljZSBuYW1lPSJfdmlkZW9zdHJlYW0iIG1vZGU9ImJyb2FkY2FzdCIgc2VuZE5vdGlmaWNhdGlvblZpYUxvY2FsQ29ubmVjdGlvbj0iZmFsc2UiDQorCQkJCQkJIHdpZHRoPSIke3BhcmVudC53aWR0aH0iIGhlaWdodD0iJHtwYXJlbnQuaGVpZ2h0fSIgYmdjb2xvcj0iMHgwMDAwMDAiPg0KKwkJCTxoYW5kbGVyIG5hbWU9InNlbmRDYW1lcmFTdGF0dXMiIGFyZ3M9ImNhbVN0YXR1cyI+DQorICAgICAgICAgICAgICAgIGlmICgkZGVidWcpIERlYnVnLndyaXRlKCJzZW5kQ2FtZXJhU3RhdHVzIixjYW1TdGF0dXMpOw0KKyAgICAgICAgICAgICAgICBwYXJlbnQucGFyZW50LnNlbmRDYW1lcmFTdGF0dXMuc2VuZEV2ZW50KGNhbVN0YXR1cyk7DQorICAgICAgICAgICAgPC9oYW5kbGVyPg0KKyAgICAgICAgICAgIA0KKyAgICAgICAgICAgIDxoYW5kbGVyIG5hbWU9InNlbmRNaWNyb1N0YXR1cyIgYXJncz0ibWljU3RhdHVzIj4NCisgICAgICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoInNlbmRNaWNyb1N0YXR1cyIsbWljU3RhdHVzKTsNCisgICAgICAgICAgICAgICAgcGFyZW50LnBhcmVudC5zZW5kTWljcm9TdGF0dXMuc2VuZEV2ZW50KG1pY1N0YXR1cyk7DQorICAgICAgICAgICAgPC9oYW5kbGVyPg0KKwkJPC9iYXNlVmlkZW9TdHJlYW1EZXZpY2U+DQorCQkNCisJPC92aWV3PgkNCis8L2NsYXNzPg0KKw0KKw0KKzwvbGlicmFyeT4NCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL3ZpZGVvL3ZpZGVvVXNlclByb2ZpbGVQaWNTV0YxMC5senggYi9XZWJDb250ZW50L3N3ZjEwL3ZpZGVvL3ZpZGVvVXNlclByb2ZpbGVQaWNTV0YxMC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmE3Nzk3YgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3dmMTAvdmlkZW8vdmlkZW9Vc2VyUHJvZmlsZVBpY1NXRjEwLmx6eApAQCAtMCwwICsxLDM4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPGxpYnJhcnk+DQorDQorPGNsYXNzIG5hbWU9InZpZGVvVXNlclByb2ZpbGVQaWNTV0YxMCIgZXh0ZW5kcz0idmlldyIgeD0iMSIgeT0iMiIgd2lkdGg9IiR7cGFyZW50LndpZHRoLTJ9IiBoZWlnaHQ9IiR7cGFyZW50LmhlaWdodC0zfSIgDQorCSAgIGNsaXA9InRydWUiIGJnY29sb3I9IndoaXRlIj4NCisJPGF0dHJpYnV0ZSBuYW1lPSJ2YWx1ZSIgdmFsdWU9Im51bGwiIC8+DQorCQkNCisJPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4NCisJPCFbQ0RBVEFbDQorCQl2YXIgZXh0cmEgPSB2YWx1ZS5zaXBUcmFuc3BvcnQgPyAiJnBhcmVudFBhdGg9Li4vZGVmYXVsdCZtb2R1bGVOYW1lPXZpZGVvY29uZjEiDQorCQkJOiAnJnBhcmVudFBhdGg9Jm1vZHVsZU5hbWU9cmVtb3RldXNlcnByb2ZpbGUmcmVtb3RlVXNlcmlkPScrdGhpcy52YWx1ZS51c2VyX2lkOw0KKw0KKwkJdGhpcy5fdXNlcnBpYy5zZXRBdHRyaWJ1dGUoJ3NyYycsIGNhbnZhcy5nZXRQaWN0dXJlVXJsKHZhbHVlLnBpY3R1cmVfdXJpLCBleHRyYSkpOw0KKwldXT4NCisJPC9oYW5kbGVyPgkNCisJPGltYWdlIG5hbWU9Il91c2VycGljIiBzdHJldGNoZXM9ImJvdGgiIHdpZHRoPSIke3BhcmVudC53aWR0aH0iIGhlaWdodD0iJHtwYXJlbnQuaGVpZ2h0fSIgLz4NCis8L2NsYXNzPg0KKw0KKzwvbGlicmFyeT4NCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL3ZpZGVvL3ZvbHVtZVNsaWRlci5senggYi9XZWJDb250ZW50L3N3ZjEwL3ZpZGVvL3ZvbHVtZVNsaWRlci5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGMyZDM1YgotLS0gL2Rldi9udWxsCisrKyBiL1dlYkNvbnRlbnQvc3dmMTAvdmlkZW8vdm9sdW1lU2xpZGVyLmx6eApAQCAtMCwwICsxLDg4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorDQorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKw0KKy0tPg0KKzxsaWJyYXJ5Pg0KKw0KKzxjbGFzcyBuYW1lPSJWb2x1bWVTbGlkZXIiIGV4dGVuZHM9ImNsb3NhYmxlVmlldyIgY2xpY2thYmxlPSJ0cnVlIiBoZWlnaHQ9IjEyMCI+DQorDQorICAgIDxzd2l0Y2g+DQorICAgIDx3aGVuIHByb3BlcnR5PSIkYXMzIj4NCisgICAgICAgIDxwYXNzdGhyb3VnaD4NCisgICAgICAgICAgICBpbXBvcnQgZmxhc2gubmV0Lio7DQorICAgICAgICAgICAgaW1wb3J0IGZsYXNoLm1lZGlhLio7DQorICAgICAgICA8L3Bhc3N0aHJvdWdoPg0KKyAgICA8L3doZW4+DQorICAgIDwvc3dpdGNoPg0KKw0KKyAgICA8YXR0cmlidXRlIG5hbWU9InZpZGVvU3RyZWFtIiB2YWx1ZT0ibnVsbCIgLz4NCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJvd25TdHJlYW0iIHR5cGU9ImJvb2xlYW4iIHZhbHVlPSJmYWxzZSIgLz4NCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJyZXNpemluZyIgdHlwZT0iYm9vbGVhbiIgdmFsdWU9ImZhbHNlIiAvPg0KKw0KKyAgICA8YXR0cmlidXRlIG5hbWU9InZpZGVvT2JqZWN0IiB2YWx1ZT0ibnVsbCIgLz4NCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpbml0aWFsTnVtYmVyIiB2YWx1ZT0iNTAiIHR5cGU9Im51bWJlciIvPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9Im1heHZhbHVlIiB2YWx1ZT0iMTAwIiB0eXBlPSJudW1iZXIiIC8+DQorDQorICAgIDxkcmFnSGVscGVyIG5hbWU9ImRyYWdIZWxwZXIiLz4NCisNCisgICAgPGhhbmRsZXIgbmFtZT0ib25pbml0Ij4NCisgICAgICAgIGRyYWdIZWxwZXIuY3JlYXRlKCk7DQorICAgIDwvaGFuZGxlcj4NCisNCisgICAgPGhhbmRsZXIgbmFtZT0ib25kZXN0cm95Ij4NCisgICAgICAgIGRyYWdIZWxwZXIucmVtb3ZlKCk7DQorICAgIDwvaGFuZGxlcj4NCisNCisgICAgPCEtLS0gQGtleXdvcmRzIHByaXZhdGUgLS0+DQorICAgIDxtZXRob2QgbmFtZT0icGFzc01vZGVFdmVudCIgYXJncz0iZXZlbnRTdHIsdmlldyIgPg0KKyAgICAgICAgPCFbQ0RBVEFbDQorICAgICAgICBpZiAoZXZlbnRTdHIgPT0gIm9ubW91c2Vkb3duIikgew0KKyAgICAgICAgICAgIGlmIChudWxsICE9IHZpZXcpIHsNCisgICAgICAgICAgICAgICAgaWYgKCF2aWV3LmNoaWxkT2YodGhpcykpIHsNCisgICAgICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTsNCisgICAgICAgICAgICAgICAgfQ0KKyAgICAgICAgICAgIH0gZWxzZSB7DQorICAgICAgICAgICAgICAgIHRoaXMuY2xvc2UoKTsNCisgICAgICAgICAgICB9DQorICAgICAgICB9DQorICAgICAgICBpZiAodmlldyAmJiB2aWV3LmNoaWxkT2YodGhpcykpIHsNCisgICAgICAgICAgICBpZiAodmlld1tldmVudFN0cl0pIHsNCisgICAgICAgICAgICAgICAgdmlld1tldmVudFN0cl0uc2VuZEV2ZW50KHZpZXcpOw0KKyAgICAgICAgICAgIH0NCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7DQorICAgICAgICB9DQorICAgICAgICByZXR1cm4gdHJ1ZTsNCisgICAgICAgIF1dPg0KKyAgICA8L21ldGhvZD4NCisNCisgICAgPHZzbGlkZXIgbmFtZT0iX3NsaWRlciIgaGVpZ2h0PSIkb25jZXtwYXJlbnQuaGVpZ2h0fSIgeT0iMTAiIHg9IjAiIG1pbnZhbHVlPSIwIiBtYXh2YWx1ZT0iMTAwIg0KKyAgICAgICAgaW5pdHZhbHVlPSIkb25jZXtwYXJlbnQuaW5pdGlhbE51bWJlcn0iIHNob3dyYW5nZT0iZmFsc2UiIHNob3d2YWx1ZT0iZmFsc2UiIHN3aXRjaGF4aXM9InRydWUiPg0KKyAgICAgICAgPGhhbmRsZXIgbmFtZT0ib252YWx1ZSIgYXJncz0idiI+DQorICAgICAgICAgICAgaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9udmFsdWUiLCB2KTsNCisNCisgICAgICAgICAgICBwYXJlbnQudmlkZW9PYmplY3Quc2V0U3RyZWFtVm9sdW1lKE51bWJlcih2KSk7DQorICAgICAgICA8L2hhbmRsZXI+DQorICAgICAgICA8aGFuZGxlciBuYW1lPSJvbnZhbHVlQ2hvc2VuRmluYWwiPg0KKyAgICAgICAgICAgIHBhcmVudC5jbG9zZSgpOw0KKyAgICAgICAgPC9oYW5kbGVyPg0KKyAgICA8L3ZzbGlkZXI+DQorDQorPC9jbGFzcz4NCisNCis8L2xpYnJhcnk+DQpkaWZmIC0tZ2l0IGEvV2ViQ29udGVudC9zd2YxMC93aGl0ZWJvYXJkL2xpYnJhcnkubHp4IGIvV2ViQ29udGVudC9zd2YxMC93aGl0ZWJvYXJkL2xpYnJhcnkubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmViYjU1NmIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJDb250ZW50L3N3ZjEwL3doaXRlYm9hcmQvbGlicmFyeS5sengKQEAgLTAsMCArMSwyNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiID8+DQorPCEtLQ0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAgDQorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICAgIAkgIA0KKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICB1bmRlciB0aGUgTGljZW5zZS4NCisgIA0KKy0tPg0KKzxsaWJyYXJ5Pg0KKw0KKyAgICA8aW5jbHVkZSBocmVmPSJwbGF5QmFja1doaXRlYm9hcmRWaWRlby5sengiIC8+DQorICAgIA0KKzwvbGlicmFyeT4NCmRpZmYgLS1naXQgYS9XZWJDb250ZW50L3N3ZjEwL3doaXRlYm9hcmQvcGxheUJhY2tXaGl0ZWJvYXJkVmlkZW8ubHp4IGIvV2ViQ29udGVudC9zd2YxMC93aGl0ZWJvYXJkL3BsYXlCYWNrV2hpdGVib2FyZFZpZGVvLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZGM3MTk0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC9zd2YxMC93aGl0ZWJvYXJkL3BsYXlCYWNrV2hpdGVib2FyZFZpZGVvLmx6eApAQCAtMCwwICsxLDcyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCIgPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPGxpYnJhcnk+DQorDQorPCEtLS0NCisgICAgVGhlIHBsYXlCYWNrVmlkZW9TdHJlYW0gaXMgdXNlZCBpbiB0aGUgcmVjb3JkaW5nIHBsYXllcmJhY2sgdG8gc2hvdyB0aGUgdmlkZW8NCisgLS0+DQorPGNsYXNzIG5hbWU9InBsYXlCYWNrV2hpdGVib2FyZFZpZGVvIiBleHRlbmRzPSJiYXNlVmlkZW9TdHJlYW0iIGJnY29sb3I9IjB4MDAwMDAwIj4NCisJDQorCTxhdHRyaWJ1dGUgbmFtZT0idGltZXJEZWxlZ2F0ZSIgdmFsdWU9Im51bGwiLz4NCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJ0aW1lckRlbGVnYXRlU3RhcnRlZCIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIi8+DQorICAgIA0KKyAgICA8aGFuZGxlciBuYW1lPSJvbmluaXQiPg0KKyAgICAgICAgdGhpcy50aW1lckRlbGVnYXRlID0gbmV3IEx6RGVsZWdhdGUoIHRoaXMsICJjYWxjUHJvZ3Jlc3NCYXIiICk7DQorICAgIDwvaGFuZGxlcj4NCisgICAgDQorICAgIDxtZXRob2QgbmFtZT0icGxheVZpZGVvU3RyZWFtIiBhcmdzPSJzdHJlYW1OYW1lLGRlbGF5Ij4NCisgICAgICAgIHRoaXMucGxheVN0cmVhbShzdHJlYW1OYW1lLGRlbGF5KTsNCisgICAgICAgIHRoaXMudGltZXJEZWxlZ2F0ZVN0YXJ0ZWQgPSB0cnVlOw0KKyAgICAgICAgbHouVGltZXIuYWRkVGltZXIoIHRoaXMudGltZXJEZWxlZ2F0ZSAsIDEwMDAgKTsNCisgICAgPC9tZXRob2Q+DQorICAgIA0KKyAgICA8bWV0aG9kIG5hbWU9InN0b3BWaWRlbyI+DQorICAgICAgICB0aGlzLl9zdG9wKCk7DQorICAgICAgICBsei5UaW1lci5yZW1vdmVUaW1lcih0aGlzLnRpbWVyRGVsZWdhdGUpOw0KKyAgICAgICAgdGhpcy50aW1lckRlbGVnYXRlU3RhcnRlZCA9IGZhbHNlOw0KKyAgICA8L21ldGhvZD4NCisJDQorCTxoYW5kbGVyIG5hbWU9Im9uTmV0U3RhdHVzIiBhcmdzPSJpbmZvIj4NCisgICAgICAgIC8vaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIm9uTmV0U3RhdHVzICIsaW5mbyk7DQorICAgICAgICBpZiAoaW5mby5jb2RlID09ICAiTmV0U3RyZWFtLlBsYXkuU3RvcCIgKSB7DQorICAgICAgICAJaWYgKCRkZWJ1ZykgRGVidWcud3JpdGUoIi0tIHN0b3BTdHJlYW0iKTsNCisgICAgICAgICAgICAvL3BhcmVudC5wYXJlbnQuc3RvcFN0cmVhbSgpOw0KKyAgICAgICAgICAgIGNhbnZhcy52aWRlb0NvbXBfbGMuc2VuZChjYW52YXMudmlkZW9Db21wX2xjX25hbWUsICdzdG9wUmVjb3JkaW5nU3RyZWFtJywgdGhpcy5uYW1lKTsNCisgICAgICAgIH0NCisgICAgPC9oYW5kbGVyPg0KKyAgICA8aGFuZGxlciBuYW1lPSJvbk1ldGFEYXRhRXZlbnQiIGFyZ3M9ImluZm8iPg0KKyAgICAgICAgLy9pZiAoJGRlYnVnKSBEZWJ1Zy53YXJuKCJvbk1ldGFEYXRhICIsaW5mbyk7DQorICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJwYXJlbnQucGFyZW50LmRlbHRhSW5TZWNvbmRzICIsTnVtYmVyKGluZm8uZHVyYXRpb24pKTsNCisgICAgICAgIC8vcGFyZW50LnBhcmVudC5kZWx0YUluU2Vjb25kcyA9IE51bWJlcihpbmZvLmR1cmF0aW9uKTsNCisgICAgICAgIGNhbnZhcy52aWRlb0NvbXBfbGMuc2VuZChjYW52YXMudmlkZW9Db21wX2xjX25hbWUsICdtZXRhV2hpdGVib2FyZFBsYXliYWNrU3RyZWFtJywgdGhpcy5uYW1lLCBOdW1iZXIoaW5mby5kdXJhdGlvbikpOw0KKyAgICA8L2hhbmRsZXI+DQorICAgIA0KKyAgICA8bWV0aG9kIG5hbWU9ImNhbGNQcm9ncmVzc0JhciIgYXJncz0idE9ialJlZiI+DQorICAgICAgICAvL2lmICgkZGVidWcpIERlYnVnLndyaXRlKCJjYWxjUHJvZ3Jlc3NCYXIgdXBkYXRlUmVjb3JkaW5nU3RyZWFtVGltZSIsdGhpcy5fbnMudGltZSkNCisgICAgICAgIGNhbnZhcy52aWRlb0NvbXBfbGMuc2VuZChjYW52YXMudmlkZW9Db21wX2xjX25hbWUsICd1cGRhdGVXaGl0ZWJvYXJkU3RyZWFtVGltZScsdGhpcy5uYW1lLCB0aGlzLl9ucy50aW1lKTsNCisgICAgICAgIGlmICh0aGlzLnRpbWVyRGVsZWdhdGVTdGFydGVkKSB7DQorICAgICAgICAgICAgbHouVGltZXIuYWRkVGltZXIoIHRoaXMudGltZXJEZWxlZ2F0ZSAsIDEwMDAgKTsNCisgICAgICAgIH0NCisgICAgPC9tZXRob2Q+DQorCQ0KKzwvY2xhc3M+DQorDQorPC9saWJyYXJ5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvdXBsb2FkdGVtcC9saWJyYXJ5LnhtbCBiL1dlYkNvbnRlbnQvdXBsb2FkdGVtcC9saWJyYXJ5LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjllZWYzCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC91cGxvYWR0ZW1wL2xpYnJhcnkueG1sCkBAIC0wLDAgKzEsMjIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPCEtLQ0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAgDQorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICAgIAkgIA0KKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICB1bmRlciB0aGUgTGljZW5zZS4NCisgIA0KKy0tPg0KKzxwcmVzZW50YXRpb24geG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgCisgICAgeHNpOm5vTmFtZXNwYWNlU2NoZW1hTG9jYXRpb249ImxpYnJhcnkueHNkIj48b3JpZ2luYWxEb2N1bWVudCBsYXN0bW9kPSIxMTg1NDYxODE0MDAwIiBzaXplPSIyNDAyMzMiPlR1dG9yYXQucGRmPC9vcmlnaW5hbERvY3VtZW50Pjxzd2ZEb2N1bWVudCBsYXN0bW9kPSIxMTg1NDYxODE0MDAwIiBzaXplPSIyNDAyMzMiPlR1dG9yYXQuc3dmPC9zd2ZEb2N1bWVudD48dGh1bWJzPjx0aHVtYiBsYXN0bW9kPSIxMTg1NDYxODEzMDAwIiBzaXplPSIzOTk4Ij5fdGh1bWJfcGFnZXMtMDAwLmpwZzwvdGh1bWI+PHRodW1iIGxhc3Rtb2Q9IjExODU0NjE4MTMwMDAiIHNpemU9IjM4NTUiPl90aHVtYl9wYWdlcy0wMDEuanBnPC90aHVtYj48dGh1bWIgbGFzdG1vZD0iMTE4NTQ2MTgxMzAwMCIgc2l6ZT0iNDMwNiI+X3RodW1iX3BhZ2VzLTAwMi5qcGc8L3RodW1iPjx0aHVtYiBsYXN0bW9kPSIxMTg1NDYxODEzMDAwIiBzaXplPSIzNzQ3Ij5fdGh1bWJfcGFnZXMtMDAzLmpwZzwvdGh1bWI+PHRodW1iIGxhc3Rtb2Q9IjExODU0NjE4MTMwMDAiIHNpemU9IjMxNjIiPl90aHVtYl9wYWdlcy0wMDQuanBnPC90aHVtYj48dGh1bWIgbGFzdG1vZD0iMTE4NTQ2MTgxMzAwMCIgc2l6ZT0iMzIzMiI+X3RodW1iX3BhZ2VzLTAwNS5qcGc8L3RodW1iPjx0aHVtYiBsYXN0bW9kPSIxMTg1NDYxODEzMDAwIiBzaXplPSIyOTgxIj5fdGh1bWJfcGFnZXMtMDA2LmpwZzwvdGh1bWI+PHRodW1iIGxhc3Rtb2Q9IjExODU0NjE4MTMwMDAiIHNpemU9IjMxMjYiPl90aHVtYl9wYWdlcy0wMDcuanBnPC90aHVtYj48dGh1bWIgbGFzdG1vZD0iMTE4NTQ2MTgxMzAwMCIgc2l6ZT0iNDQ1NyI+X3RodW1iX3BhZ2VzLTAwOC5qcGc8L3RodW1iPjx0aHVtYiBsYXN0bW9kPSIxMTg1NDYxODEzMDAwIiBzaXplPSI0MjY0Ij5fdGh1bWJfcGFnZXMtMDA5LmpwZzwvdGh1bWI+PHRodW1iIGxhc3Rtb2Q9IjExODU0NjE4MTMwMDAiIHNpemU9IjQyNjMiPl90aHVtYl9wYWdlcy0wMTAuanBnPC90aHVtYj48dGh1bWIgbGFzdG1vZD0iMTE4NTQ2MTgxMzAwMCIgc2l6ZT0iMzc3MCI+X3RodW1iX3BhZ2VzLTAxMS5qcGc8L3RodW1iPjx0aHVtYiBsYXN0bW9kPSIxMTg1NDYxODEzMDAwIiBzaXplPSIzMzU0Ij5fdGh1bWJfcGFnZXMtMDEyLmpwZzwvdGh1bWI+PHRodW1iIGxhc3Rtb2Q9IjExODU0NjE4MTMwMDAiIHNpemU9IjMwMDYiPl90aHVtYl9wYWdlcy0wMTMuanBnPC90aHVtYj48dGh1bWIgbGFzdG1vZD0iMTE4NTQ2MTgxMzAwMCIgc2l6ZT0iMzk3MiI+X3RodW1iX3BhZ2VzLTAxNC5qcGc8L3RodW1iPjx0aHVtYiBsYXN0bW9kPSIxMTg1NDYxODEzMDAwIiBzaXplPSI0MzUzIj5fdGh1bWJfcGFnZXMtMDE1LmpwZzwvdGh1bWI+PHRodW1iIGxhc3Rtb2Q9IjExODU0NjE4MTMwMDAiIHNpemU9IjQxODQiPl90aHVtYl9wYWdlcy0wMTYuanBnPC90aHVtYj48dGh1bWIgbGFzdG1vZD0iMTE4NTQ2MTgxMzAwMCIgc2l6ZT0iNDAyMSI+X3RodW1iX3BhZ2VzLTAxNy5qcGc8L3RodW1iPjx0aHVtYiBsYXN0bW9kPSIxMTg1NDYxODEzMDAwIiBzaXplPSIzMjI1Ij5fdGh1bWJfcGFnZXMtMDE4LmpwZzwvdGh1bWI+PHRodW1iIGxhc3Rtb2Q9IjExODU0NjE4MTMwMDAiIHNpemU9IjM4NDciPl90aHVtYl9wYWdlcy0wMTkuanBnPC90aHVtYj48dGh1bWIgbGFzdG1vZD0iMTE4NTQ2MTgxMzAwMCIgc2l6ZT0iMzA0NiI+X3RodW1iX3BhZ2VzLTAyMC5qcGc8L3RodW1iPjx0aHVtYiBsYXN0bW9kPSIxMTg1NDYxODEzMDAwIiBzaXplPSIyNjMzIj5fdGh1bWJfcGFnZXMtMDIxLmpwZzwvdGh1bWI+PHRodW1iIGxhc3Rtb2Q9IjExODU0NjE4MTMwMDAiIHNpemU9IjQwMDEiPl90aHVtYl9wYWdlcy0wMjIuanBnPC90aHVtYj48dGh1bWIgbGFzdG1vZD0iMTE4NTQ2MTgxMzAwMCIgc2l6ZT0iNDI0MyI+X3RodW1iX3BhZ2VzLTAyMy5qcGc8L3RodW1iPjwvdGh1bWJzPjwvcHJlc2VudGF0aW9uPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1dlYkNvbnRlbnQvdXBsb2FkdGVtcC9saWJyYXJ5LnhzZCBiL1dlYkNvbnRlbnQvdXBsb2FkdGVtcC9saWJyYXJ5LnhzZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MWYyYjdkCi0tLSAvZGV2L251bGwKKysrIGIvV2ViQ29udGVudC91cGxvYWR0ZW1wL2xpYnJhcnkueHNkCkBAIC0wLDAgKzEsNjggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPCEtLQ0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAgDQorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICAgIAkgIA0KKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICB1bmRlciB0aGUgTGljZW5zZS4NCisgIA0KKy0tPg0KKzx4czpzY2hlbWEgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCI+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJwcmVzZW50YXRpb24iPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOnNlcXVlbmNlPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJvcmlnaW5hbERvY3VtZW50Ii8+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9InN3ZkRvY3VtZW50Ii8+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRodW1icyIvPg0KKyAgICAgIDwveHM6c2VxdWVuY2U+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJvcmlnaW5hbERvY3VtZW50Ij4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czpzaW1wbGVDb250ZW50Pg0KKyAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ4czpOQ05hbWUiPg0KKyAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imxhc3Rtb2QiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOmludGVnZXIiLz4NCisgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzaXplIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czppbnRlZ2VyIi8+DQorICAgICAgICA8L3hzOmV4dGVuc2lvbj4NCisgICAgICA8L3hzOnNpbXBsZUNvbnRlbnQ+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJzd2ZEb2N1bWVudCI+DQorICAgIDx4czpjb21wbGV4VHlwZT4NCisgICAgICA8eHM6c2ltcGxlQ29udGVudD4NCisgICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0ieHM6TkNOYW1lIj4NCisgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYXN0bW9kIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czppbnRlZ2VyIi8+DQorICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2l6ZSIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6aW50ZWdlciIvPg0KKyAgICAgICAgPC94czpleHRlbnNpb24+DQorICAgICAgPC94czpzaW1wbGVDb250ZW50Pg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0idGh1bWJzIj4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czpzZXF1ZW5jZT4NCisgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9InRodW1iIi8+DQorICAgICAgPC94czpzZXF1ZW5jZT4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9InRodW1iIj4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czpzaW1wbGVDb250ZW50Pg0KKyAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJ4czpOQ05hbWUiPg0KKyAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imxhc3Rtb2QiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOmludGVnZXIiLz4NCisgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzaXplIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czppbnRlZ2VyIi8+DQorICAgICAgICA8L3hzOmV4dGVuc2lvbj4NCisgICAgICA8L3hzOnNpbXBsZUNvbnRlbnQ+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorPC94czpzY2hlbWE+DQpkaWZmIC0tZ2l0IGEvYnVpbGQtamF1ZGlvdGFnZ2VyLnhzbCBiL2J1aWxkLWphdWRpb3RhZ2dlci54c2wKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjEwNTMzYwotLS0gL2Rldi9udWxsCisrKyBiL2J1aWxkLWphdWRpb3RhZ2dlci54c2wKQEAgLTAsMCArMSwyNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8IS0tDQorICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKw0KKyAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisNCisgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorIC0tPg0KKzx4c2w6c3R5bGVzaGVldCB2ZXJzaW9uPSIxLjAiIHhtbG5zOnhzbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIj4NCisgPHhzbDpvdXRwdXQgb21pdC14bWwtZGVjbGFyYXRpb249Im5vIi8+DQorICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9Im5vZGUoKXxAKiI+DQorICAgICAgPHhzbDpjb3B5Pg0KKyAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0ibm9kZSgpfEAqIi8+DQorICAgICAgPC94c2w6Y29weT4NCisgICAgPC94c2w6dGVtcGxhdGU+DQorDQorICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9Ii8vKltAaWQ9J21wNHJlYWRlci5pbXBsJ10iLz4NCisgICAgPHhzbDp0ZW1wbGF0ZSBtYXRjaD0iLy8qW0BpZD0nbXAzcmVhZGVyLmltcGwnXSIvPg0KKzwveHNsOnN0eWxlc2hlZXQ+DQpkaWZmIC0tZ2l0IGEvYnVpbGQtcmVkNV9pdnkueHNsIGIvYnVpbGQtcmVkNV9pdnkueHNsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlYjMyZjYKLS0tIC9kZXYvbnVsbAorKysgYi9idWlsZC1yZWQ1X2l2eS54c2wKQEAgLTAsMCArMSw1OCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8IS0tDQorICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKw0KKyAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisNCisgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorIC0tPg0KKzx4c2w6c3R5bGVzaGVldCB2ZXJzaW9uPSIxLjAiIHhtbG5zOnhzbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIj4NCisgPHhzbDpvdXRwdXQgb21pdC14bWwtZGVjbGFyYXRpb249Im5vIi8+DQorICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9Im5vZGUoKXxAKiI+DQorICAgICAgPHhzbDpjb3B5Pg0KKyAgICAgICAgIDx4c2w6YXBwbHktdGVtcGxhdGVzIHNlbGVjdD0ibm9kZSgpfEAqIi8+DQorICAgICAgPC94c2w6Y29weT4NCisgICAgPC94c2w6dGVtcGxhdGU+DQorDQorICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9Ii8vKltAbmFtZT0namF1ZGlvdGFnZ2VyJ10iPg0KKwkJPHhzbDp0ZXh0IGRpc2FibGUtb3V0cHV0LWVzY2FwaW5nPSJ5ZXMiPg0KKwkJCSZsdDtkZXBlbmRlbmN5IG9yZz0ib3JnIiBuYW1lPSJqYXVkaW90YWdnZXIiIHJldj0iMi4wLjQtU05BUFNIT1QiICZndDsNCisJCQkJJmx0O2luY2x1ZGUgdHlwZT0iamFyIiAvJmd0OworCQkJJmx0Oy9kZXBlbmRlbmN5Jmd0Ow0KKwkJPC94c2w6dGV4dD4NCisJPC94c2w6dGVtcGxhdGU+DQorICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9Ii8vKltAbmFtZT0nYmNwcm92LWpkazE2J10iPg0KKwkJPHhzbDp0ZXh0IGRpc2FibGUtb3V0cHV0LWVzY2FwaW5nPSJ5ZXMiPg0KKwkJCSZsdDtkZXBlbmRlbmN5IG9yZz0ib3JnLmJvdW5jeWNhc3RsZSIgbmFtZT0iYmNwcm92LWpkazE2IiByZXY9IjEuNDUiIGNvbmY9ImphdmE2LSZndDsqIiAmZ3Q7DQorCQkJCSZsdDtpbmNsdWRlIHR5cGU9ImphciIgLyZndDsKKwkJCSZsdDsvZGVwZW5kZW5jeSZndDsNCisJCTwveHNsOnRleHQ+DQorCTwveHNsOnRlbXBsYXRlPg0KKyAgICA8eHNsOnRlbXBsYXRlIG1hdGNoPSIvLypbQG5hbWU9J3N5c291dC1vdmVyLXNsZjRqJ10iPg0KKwkJPHhzbDp0ZXh0IGRpc2FibGUtb3V0cHV0LWVzY2FwaW5nPSJ5ZXMiPg0KKwkJCSZsdDtkZXBlbmRlbmN5IG9yZz0idWsub3JnLmxpZGFsaWEiIG5hbWU9InN5c291dC1vdmVyLXNsZjRqIiByZXY9IjEuMC4yIiAmZ3Q7DQorCQkJCSZsdDtpbmNsdWRlIHR5cGU9ImphciIgLyZndDsKKwkJCSZsdDsvZGVwZW5kZW5jeSZndDsNCisJCTwveHNsOnRleHQ+DQorCTwveHNsOnRlbXBsYXRlPg0KKyAgICA8eHNsOnRlbXBsYXRlIG1hdGNoPSIvLypbQG5hbWU9J2h0dHBjb3JlJ10iPg0KKwkJPHhzbDp0ZXh0IGRpc2FibGUtb3V0cHV0LWVzY2FwaW5nPSJ5ZXMiPg0KKwkJCSZsdDtkZXBlbmRlbmN5IG9yZz0ib3JnLmFwYWNoZS5odHRwY29tcG9uZW50cyIgbmFtZT0iaHR0cGNvcmUiIHJldj0iNC4yLjEiICZndDsNCisJCQkJJmx0O2luY2x1ZGUgdHlwZT0iamFyIiAvJmd0OworCQkJJmx0Oy9kZXBlbmRlbmN5Jmd0Ow0KKwkJPC94c2w6dGV4dD4NCisJPC94c2w6dGVtcGxhdGU+DQorICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9Ii8vKltAbmFtZT0naHR0cGNsaWVudCddIj4NCisJCTx4c2w6dGV4dCBkaXNhYmxlLW91dHB1dC1lc2NhcGluZz0ieWVzIj4NCisJCQkmbHQ7ZGVwZW5kZW5jeSBvcmc9Im9yZy5hcGFjaGUuaHR0cGNvbXBvbmVudHMiIG5hbWU9Imh0dHBjbGllbnQiIHJldj0iNC4yIiAmZ3Q7DQorCQkJCSZsdDtpbmNsdWRlIHR5cGU9ImphciIgLyZndDsKKwkJCSZsdDsvZGVwZW5kZW5jeSZndDsNCisJCTwveHNsOnRleHQ+DQorCTwveHNsOnRlbXBsYXRlPg0KKzwveHNsOnN0eWxlc2hlZXQ+DQpkaWZmIC0tZ2l0IGEvYnVpbGQtcmVkNV9pdnlzZXR0aW5ncy54c2wgYi9idWlsZC1yZWQ1X2l2eXNldHRpbmdzLnhzbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYzA0ODgyCi0tLSAvZGV2L251bGwKKysrIGIvYnVpbGQtcmVkNV9pdnlzZXR0aW5ncy54c2wKQEAgLTAsMCArMSwyOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8IS0tDQorICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKw0KKyAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisNCisgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorIC0tPg0KKzx4c2w6c3R5bGVzaGVldCB2ZXJzaW9uPSIxLjAiIHhtbG5zOnhzbD0iaHR0cDovL3d3dy53My5vcmcvMTk5OS9YU0wvVHJhbnNmb3JtIj4NCisgPHhzbDpvdXRwdXQgb21pdC14bWwtZGVjbGFyYXRpb249Im5vIi8+DQorICAgIDx4c2w6dGVtcGxhdGUgbWF0Y2g9Im5vZGUoKXxAKiIgbmFtZT0iaWRlbnRpdHkiPg0KKyAgICAgIDx4c2w6Y29weT4NCisgICAgICAgICA8eHNsOmFwcGx5LXRlbXBsYXRlcyBzZWxlY3Q9Im5vZGUoKXxAKiIvPg0KKyAgICAgIDwveHNsOmNvcHk+DQorICAgIDwveHNsOnRlbXBsYXRlPg0KKw0KKyAgICA8eHNsOnRlbXBsYXRlIG1hdGNoPSJ1cmxbbGFzdCgpXSI+DQorCQk8eHNsOmNhbGwtdGVtcGxhdGUgbmFtZT0iaWRlbnRpdHkiLz4NCisgICAgICAgICAgICA8dXJsIG5hbWU9ImphdmFfbmV0Ij4NCisJCQkJPGFydGlmYWN0IHBhdHRlcm49Imh0dHA6Ly9kb3dubG9hZC5qYXZhLm5ldC9tYXZlbi8yL1tvcmdhbmlzYXRpb25dL1thcnRpZmFjdF0vW3JldmlzaW9uXS9bYXJ0aWZhY3RdLVtyZXZpc2lvbl0uW2V4dF0iIC8+DQorICAgICAgICAgICAgPC91cmw+DQorCTwveHNsOnRlbXBsYXRlPg0KKzwveHNsOnN0eWxlc2hlZXQ+DQpkaWZmIC0tZ2l0IGEvYnVpbGQucHJvcGVydGllcyBiL2J1aWxkLnByb3BlcnRpZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTliY2UyNAotLS0gL2Rldi9udWxsCisrKyBiL2J1aWxkLnByb3BlcnRpZXMKQEAgLTAsMCArMSwyMCBAQAorIyAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyMgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorIyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyMNCisjICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyMNCisjICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyMgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyMgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisjICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyMgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCitwcm9qZWN0LnZlcnNpb249Mi4xLjEKK3Byb2plY3Quc3RhdHVzPVNOQVBTSE9UCitpdnkuaW5zdGFsbC52ZXJzaW9uPTIuMy4wCityZWQ1LnNlcnZlci5yZXZpc2lvbj00MzkzCityZWQ1LmNsaWVudC5yZXZpc2lvbj00MzkzCitsYXN6bG8ucHJveGllZD1zb2xvCit3aWNrZXQubW9kZT1ERVBMT1lNRU5UCitiYWNrdXAuZmlsZS5saXN0PWJhY2t1cF92XzFfNF9yYzFfcjMzMjYuemlwLGJhY2t1cF92XzFfNV9yYzFfcjMzOTMuemlwLGJhY2t1cF92XzFfNl8yX3IzNjc1LnppcCxiYWNrdXBfdl8xXzdfMF9yMzgyMi56aXAsYmFja3VwX3ZfMV84XzhfcjQ1NTUuemlwLGJhY2t1cF92XzFfOV8xX3I0NzA3LnppcCxiYWNrdXBfdl8yXzBfMF9yMTM2MTQ5Ny56aXAKK2RiPWRlcmJ5CmRpZmYgLS1naXQgYS9idWlsZC54bWwgYi9idWlsZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTUzZDA2MgotLS0gL2Rldi9udWxsCisrKyBiL2J1aWxkLnhtbApAQCAtMCwwICsxLDEyMjkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorIC0tPgorPCFET0NUWVBFIHByb2plY3Q+Cis8cHJvamVjdCBuYW1lPSJvcGVubWVldGluZ3MiIGJhc2VkaXI9Ii4vIiBkZWZhdWx0PSJkaXN0IgorCXhtbG5zPSJhbnRsaWI6b3JnLmFwYWNoZS50b29scy5hbnQiCisJeG1sbnM6cmF0PSJhbnRsaWI6b3JnLmFwYWNoZS5yYXQuYW50dGFza3MiCisJeG1sbnM6aXZ5PSJhbnRsaWI6b3JnLmFwYWNoZS5pdnkuYW50IgorCT4KKwk8bG9hZHByb3BlcnRpZXMgc3JjRmlsZT0iYnVpbGQucHJvcGVydGllcyIgLz4KKworCTxwcm9wZXJ0eSBuYW1lPSJwcm9qZWN0LmRpc3RuYW1lIiB2YWx1ZT0ib3Blbm1lZXRpbmdzIiAvPgorCTxwcm9wZXJ0eSBuYW1lPSJqYXIuc3VmZml4IiB2YWx1ZT0iJHtwcm9qZWN0LnZlcnNpb259LSR7cHJvamVjdC5zdGF0dXN9IiAvPgorCTxwcm9wZXJ0eSBlbnZpcm9ubWVudD0iZW52IiAvPgorCisJPHByb3BlcnR5IG5hbWU9Im1haW4uc3JjLmRpciIgdmFsdWU9IiR7YmFzZWRpcn0vc3JjIiAvPgorCisJPHByb3BlcnR5IG5hbWU9ImRpc3QuZGlyIiB2YWx1ZT0iZGlzdCIgLz4KKworCTxwcm9wZXJ0eSBuYW1lPSJidWlsZC5iYXNlLmRpciIgdmFsdWU9IiR7YmFzZWRpcn0vYnVpbGQiIC8+CisJPHByb3BlcnR5IG5hbWU9InByb2plY3QubGliLmRpciIgdmFsdWU9IiR7YnVpbGQuYmFzZS5kaXJ9L2xpYiIgLz4KKwk8cHJvcGVydHkgbmFtZT0iaXZ5Lmphci5wYXRoIiB2YWx1ZT0iJHtwcm9qZWN0LmxpYi5kaXJ9L2l2eS0ke2l2eS5pbnN0YWxsLnZlcnNpb259LmphciIgLz4KKwk8cHJvcGVydHkgbmFtZT0ibWFpbmxpYnMubGliLmRpciIgdmFsdWU9IiR7cHJvamVjdC5saWIuZGlyfS9tYWlubGlicyIgLz4KKwk8cHJvcGVydHkgbmFtZT0ib20ubGliLmRpciIgdmFsdWU9IiR7cHJvamVjdC5saWIuZGlyfS9vbSIgLz4KKwk8cHJvcGVydHkgbmFtZT0iYW5ha2lhLmxpYi5kaXIiIHZhbHVlPSIke3Byb2plY3QubGliLmRpcn0vYW5ha2lhIiAvPgorCTxwcm9wZXJ0eSBuYW1lPSJ3ZWJjb250ZW50LnNyYy5kaXIiIHZhbHVlPSIke2Jhc2VkaXJ9L1dlYkNvbnRlbnQiIC8+CisJPHByb3BlcnR5IG5hbWU9InNjcmVlbnNoYXJpbmcucmVzb3VyY2VzIiB2YWx1ZT0iJHt3ZWJjb250ZW50LnNyYy5kaXJ9L3NjcmVlbnNoYXJpbmciIC8+CisJPHByb3BlcnR5IG5hbWU9Imp1bml0LmxpYi5kaXIiIHZhbHVlPSIke3Byb2plY3QubGliLmRpcn0vanVuaXQiIC8+CisJPHByb3BlcnR5IG5hbWU9Imp1bml0LmJhY2t1cHMuZGlyIiB2YWx1ZT0iJHtqdW5pdC5saWIuZGlyfS9iYWNrdXBzIiAvPgorCTxwcm9wZXJ0eSBuYW1lPSJyYXQubGliLmRpciIgdmFsdWU9IiR7cHJvamVjdC5saWIuZGlyfS9yYXQiIC8+CisJPHByb3BlcnR5IG5hbWU9ImR0ZC1nZW5lcmF0b3IubGliLmRpciIgdmFsdWU9IiR7cHJvamVjdC5saWIuZGlyfS9kdGQtZ2VuZXJhdG9yIiAvPgorCTxwcm9wZXJ0eSBuYW1lPSJzdm50YXNrLmxpYi5kaXIiIHZhbHVlPSIke3Byb2plY3QubGliLmRpcn0vc3ZudGFzayIgLz4KKwk8cHJvcGVydHkgbmFtZT0iZG9jcy5kZXN0IiB2YWx1ZT0iZG9jcyIgLz4KKwk8cHJvcGVydHkgbmFtZT0iZG9jcy5zcmMiIHZhbHVlPSJ4ZG9jcyIgLz4KKworCTxwcm9wZXJ0eSBuYW1lPSJyZWQ1LnNlcnZlci5kaXIiIHZhbHVlPSIke2J1aWxkLmJhc2UuZGlyfS9yZWQ1L3NlcnZlciIgLz4KKwk8cHJvcGVydHkgbmFtZT0icmVkNS5jbGllbnQuZGlyIiB2YWx1ZT0iJHtidWlsZC5iYXNlLmRpcn0vcmVkNS9jbGllbnQiIC8+CisJPHByb3BlcnR5IG5hbWU9InJlZDUubGliIiB2YWx1ZT0iJHtyZWQ1LnNlcnZlci5kaXJ9L2Rpc3QiIC8+CisJPHByb3BlcnR5IG5hbWU9InJlZDUuc2VydmVyLmxpYiIgdmFsdWU9IiR7cmVkNS5saWJ9L2xpYiIgLz4KKwk8cHJvcGVydHkgbmFtZT0icmVkNS5jbGllbnQubGliIiB2YWx1ZT0iJHtyZWQ1LmNsaWVudC5kaXJ9L2Rpc3QiIC8+CisJPHByb3BlcnR5IG5hbWU9InJlZDUucm9vdCIgdmFsdWU9IiR7ZGlzdC5kaXJ9L3JlZDUiIC8+CisJPHByb3BlcnR5IG5hbWU9ImRpc3Qud2ViYXBwcy5kaXIiIHZhbHVlPSIke3JlZDUucm9vdH0vd2ViYXBwcy8ke3Byb2plY3QuZGlzdG5hbWV9IiAvPgorCTxwcm9wZXJ0eSBuYW1lPSJkaXN0LnBlcnNpc3RlbmNlLmRpciIgdmFsdWU9IiR7ZGlzdC53ZWJhcHBzLmRpcn0vV0VCLUlORi9jbGFzc2VzL01FVEEtSU5GLyIgLz4KKworCTxwcm9wZXJ0eSBuYW1lPSJsYXN6bG8uaG9tZSIgdmFsdWU9IiR7YnVpbGQuYmFzZS5kaXJ9L29wZW5sYXN6bG8iIC8+CisJPHByb3BlcnR5IG5hbWU9Imxhc3psbzQ2LmhvbWUiIHZhbHVlPSIke2J1aWxkLmJhc2UuZGlyfS9vcGVubGFzemxvNDYiIC8+CisKKwk8IS0tIHNjcmVlbnNoYXJlLm91dC5kaXIgLS0+CisJPHByb3BlcnR5IG5hbWU9InNjcmVlbnNoYXJlLm91dC5kaXIiIHZhbHVlPSIke2Rpc3Qud2ViYXBwcy5kaXJ9L3NjcmVlbnNoYXJpbmciIC8+CisKKwk8cHJvcGVydHkgbmFtZT0ibWFpbi5vdXQuZGlyIiB2YWx1ZT0iJHtidWlsZC5iYXNlLmRpcn0vY2xhc3Nlcy9vcGVubWVldGluZ3MiIC8+CisKKwk8IS0tIExQUyBQcm9wZXJ0aWVzIC0tPgorCTxwcm9wZXJ0eSBuYW1lPSJvdXQuZGlyLnN3ZiIgdmFsdWU9IiR7YmFzZWRpcn0vJHtkaXN0LndlYmFwcHMuZGlyfS8iIC8+CisJPHByb3BlcnR5IG5hbWU9Imxhc3psby5hczMuc3JjLmRpciIgdmFsdWU9IiR7d2ViY29udGVudC5zcmMuZGlyfS9zd2YxMCIgLz4KKwk8cHJvcGVydHkgbmFtZT0ibGFzemxvLnNyYy5kaXIiIHZhbHVlPSIke3dlYmNvbnRlbnQuc3JjLmRpcn0vc3JjIiAvPgorCisJPHByb3BlcnR5IG5hbWU9ImtleXN0b3JlLmZpbGUiIHZhbHVlPSIke2J1aWxkLmJhc2UuZGlyfS9maWxldGVzdC5rZXlzdG9yZSIgLz4KKworCTxwcm9wZXJ0eSBuYW1lPSJqdW5pdC5iYXNlLmRpciIgdmFsdWU9IiR7YnVpbGQuYmFzZS5kaXJ9L2p1bml0IiAvPgorCTxwcm9wZXJ0eSBuYW1lPSJqdW5pdC5yZXBvcnQuZGlyIiB2YWx1ZT0iJHtqdW5pdC5iYXNlLmRpcn0vcmVwb3J0IiAvPgorCisJPHBhdGggaWQ9Imxhc3psby5saWIiPgorCQk8IS0tIHN3ZjggLS0+CisJCTxmaWxlc2V0IGRpcj0iJHtsYXN6bG8uaG9tZX0vV0VCLUlORi9saWIiIGluY2x1ZGVzPSJzYXhvbi02LjUuMy1sei1wMS5qYXIgamFrYXJ0YS1yZWdleHAtMS4yLmphcgorCQkJY29tbW9ucy1jb2xsZWN0aW9ucy5qYXIgamRvbS5qYXIgbG9nNGotMS4yLjYuamFyIGxwcy00LjkuMC5qYXIgYmF0aWstYWxsLWZsZXguamFyIHZlbG9jaXR5LWRlcC0xLjQtZmxleC5qYXIiIC8+CisJCTwhLS0gc3dmMTAgLS0+CisJCTxmaWxlc2V0IGRpcj0iJHtsYXN6bG8uaG9tZX0vV0VCLUlORi9saWIiIGluY2x1ZGVzPSJteG1sYyouamFyIGZsZXgtbWVzc2FnaW5nLWNvbW1vbi5qYXIgc3dmdXRpbHMuamFyIGFzYy5qYXIKKwkJCWZ4Z3V0aWxzLmphciIgLz4KKwk8L3BhdGg+CisKKwk8cGF0aCBpZD0ibGFzemxvNDYubGliIj4KKwkJPGZpbGVzZXQgZGlyPSIke2xhc3psbzQ2LmhvbWV9L1dFQi1JTkYvbGliIiBpbmNsdWRlcz0iKi5qYXIiIC8+CisJPC9wYXRoPgorCQorCTwhLS0gY29tcGlsZSBjbGFzc3BhdGggLS0+CisJPHBhdGggaWQ9ImNoZWNrLmNsYXNzcGF0aCI+CisJCTxmaWxlc2V0IGRpcj0iJHtyZWQ1LnNlcnZlci5saWJ9IiBpbmNsdWRlcz0iKi5qYXIiIC8+CisJCTxmaWxlc2V0IGRpcj0iJHtyZWQ1LmNsaWVudC5saWJ9IiBpbmNsdWRlcz0iKi5qYXIiIC8+CisJCTxmaWxlc2V0IGRpcj0iJHtyZWQ1LmxpYn0iIGluY2x1ZGVzPSIqLmphciIgLz4KKwkJPGZpbGVzZXQgZGlyPSIke21haW5saWJzLmxpYi5kaXJ9IiBpbmNsdWRlcz0iKi5qYXIiIC8+CisJCTxmaWxlc2V0IGRpcj0iJHtvbS5saWIuZGlyfSIgaW5jbHVkZXM9IiouamFyIiAvPgorCQk8ZmlsZXNldCBkaXI9IiR7anVuaXQubGliLmRpcn0iIGluY2x1ZGVzPSIqLmphciIgLz4KKwkJPGZpbGVzZXQgZGlyPSIke2R0ZC1nZW5lcmF0b3IubGliLmRpcn0iIGluY2x1ZGVzPSIqLmphciIgLz4KKwkJPGZpbGVzZXQgZGlyPSIke3Byb2plY3QubGliLmRpcn0iIGluY2x1ZGVzPSIqLmphciIgLz4KKwk8L3BhdGg+CisJPHBhdGggaWQ9ImNvbXBpbGUuY2xhc3NwYXRoIj4KKwkJPGZpbGVzZXQgZGlyPSIke3JlZDUubGlifS9wbHVnaW5zIiBpbmNsdWRlcz0iKi5qYXIiIC8+CisJCTxwYXRoIHJlZmlkPSJjaGVjay5jbGFzc3BhdGgiLz4KKwk8L3BhdGg+CisKKwk8dGFyZ2V0IG5hbWU9ImluZm8iIHVubGVzcz0iamF2YTYuaW5zdGFsbGVkIj4KKwkJPGVjaG8+QW50IHZlcnNpb24gaXMgJHthbnQudmVyc2lvbn08L2VjaG8+IDwhLS0gb3V0cHV0IEFudCB2ZXJzaW9uIC0tPgorCTwvdGFyZ2V0PgorCisJPHRhcmdldCBuYW1lPSJwcmVwYXJlLm1rZGlyIiBkZXBlbmRzPSItamF2YTZvcjcuY2hlY2siPgorCQk8bWtkaXIgZGlyPSIke3JlZDUuc2VydmVyLmxpYn0iIC8+CisJCTxta2RpciBkaXI9IiR7cmVkNS5jbGllbnQuZGlyfS9kaXN0IiAvPgorCQk8bWtkaXIgZGlyPSIke2Rpc3QuZGlyfSIgLz4KKwkJPG1rZGlyIGRpcj0iJHttYWluLm91dC5kaXJ9IiAvPgorCQk8bWtkaXIgZGlyPSIke21haW5saWJzLmxpYi5kaXJ9IiAvPgorCQk8bWtkaXIgZGlyPSIke29tLmxpYi5kaXJ9IiAvPgorCQk8bWtkaXIgZGlyPSIke2FuYWtpYS5saWIuZGlyfSIgLz4KKwkJPG1rZGlyIGRpcj0iJHtqdW5pdC5iYWNrdXBzLmRpcn0iIC8+CisJCTxta2RpciBkaXI9IiR7anVuaXQucmVwb3J0LmRpcn0iIC8+CisJCTxta2RpciBkaXI9IiR7cmF0LmxpYi5kaXJ9IiAvPgorCQk8bWtkaXIgZGlyPSIke2R0ZC1nZW5lcmF0b3IubGliLmRpcn0iIC8+CisJCTxta2RpciBkaXI9IiR7c3ZudGFzay5saWIuZGlyfSIgLz4KKwkJPG1rZGlyIGRpcj0iJHtsYXN6bG8uaG9tZX0iIC8+CisJCTxta2RpciBkaXI9IiR7bGFzemxvNDYuaG9tZX0iIC8+CisJCTxlY2hvIGZpbGU9IiR7YnVpbGQuYmFzZS5kaXJ9L3ZlbG9jaXR5LnByb3BlcnRpZXMiIGFwcGVuZD0iZmFsc2UiPnJ1bnRpbWUubG9nID0gJHtidWlsZC5iYXNlLmRpcn0vdmVsb2NpdHkubG9nJHtsaW5lLnNlcGFyYXRvcn1vdXRwdXQuZW5jb2Rpbmc9VVRGLTgke2xpbmUuc2VwYXJhdG9yfTwvZWNobz4KKwk8L3RhcmdldD4KKworCTwhLS0gYnVpbGQgYXJ0ZWZhY3RzIC0tPgorCTx0YXJnZXQgbmFtZT0iZGlzdC1iaW4iIGRlc2NyaXB0aW9uPSJwYWNrIGJpbmFyeSBkaXN0cmlidXRpb24iIGRlcGVuZHM9ImNsZWFuLmFsbCwgZGlzdCI+CisJCTx0c3RhbXA+CisJCQk8Zm9ybWF0IHByb3BlcnR5PSJidWlsZC50aW1lIiBwYXR0ZXJuPSJkZC1NTS15eXl5X0hIbW0iIC8+CisJCTwvdHN0YW1wPgorCQk8cHJvcGVydHkgbmFtZT0iYXJjaGl2ZS5maWxlLm5hbWUiIHZhbHVlPSIke2Rpc3QuZGlyfS9hcGFjaGUtJHtwcm9qZWN0LmRpc3RuYW1lfS0ke3Byb2plY3QudmVyc2lvbn0uciR7c3ZuLmluZm8ucmV2fS0ke2J1aWxkLnRpbWV9IiAvPgorCisJCTxtb3ZlIGZpbGU9IiR7ZGlzdC5kaXJ9L3JlZDUvbGljZW5zZS50eHQiIHRvZmlsZT0iJHtkaXN0LmRpcn0vcmVkNS9yZWQ1LWxpY2Vuc2UudHh0IiAvPgorCQk8Y29weSBmaWxlPSJidWlsZC5wcm9wZXJ0aWVzIiB0b2ZpbGU9IiR7YnVpbGQuYmFzZS5kaXJ9L2J1aWxkLnByb3BlcnRpZXMiIG92ZXJ3cml0ZT0idHJ1ZSIgLz4KKwkJPGNvcHkgZmlsZT0iTElDRU5TRSIgdG9maWxlPSIke2Rpc3QuZGlyfS9yZWQ1L0xJQ0VOU0UiIG92ZXJ3cml0ZT0idHJ1ZSIgLz4KKwkJPGNvcHkgZmlsZT0iTk9USUNFIiB0b2ZpbGU9IiR7ZGlzdC5kaXJ9L3JlZDUvTk9USUNFIiBvdmVyd3JpdGU9InRydWUiIC8+CisJCTxjb3B5IGZpbGU9IlJFQURNRSIgdG9maWxlPSIke2Rpc3QuZGlyfS9yZWQ1L1JFQURNRSIgb3ZlcndyaXRlPSJ0cnVlIiAvPgorCQk8Y29weSBmaWxlPSJDSEFOR0VMT0ciIHRvZmlsZT0iJHtkaXN0LmRpcn0vcmVkNS9DSEFOR0VMT0ciIG92ZXJ3cml0ZT0idHJ1ZSIgLz4KKworCQk8ZWNobyBmaWxlPSIke2J1aWxkLmJhc2UuZGlyfS9idWlsZC5wcm9wZXJ0aWVzIiBhcHBlbmQ9InRydWUiPnN2bi5pbmZvLnJldj0ke3N2bi5pbmZvLnJldn0ke2xpbmUuc2VwYXJhdG9yfTwvZWNobz4KKwkJPHRhciBsb25nZmlsZT0iZ251IiBjb21wcmVzc2lvbj0iZ3ppcCIgZGVzdGZpbGU9IiR7YXJjaGl2ZS5maWxlLm5hbWV9LXNyYy50YXIuZ3oiPgorCQkJPHRhcmZpbGVzZXQgZGlyPSIke2Jhc2VkaXJ9Ij4KKwkJCQk8ZXhjbHVkZSBuYW1lPSJidWlsZC8qKiIgLz4KKwkJCQk8ZXhjbHVkZSBuYW1lPSJkaXN0LyoqIiAvPgorCQkJCTxleGNsdWRlIG5hbWU9ImJ1aWxkLnByb3BlcnRpZXMiIC8+CisJCQk8L3RhcmZpbGVzZXQ+CisJCQk8dGFyZmlsZXNldCBkaXI9IiR7YnVpbGQuYmFzZS5kaXJ9Ij4KKwkJCQk8aW5jbHVkZSBuYW1lPSJidWlsZC5wcm9wZXJ0aWVzIiAvPgorCQkJPC90YXJmaWxlc2V0PgorCQk8L3Rhcj4KKwkJPHRhciBsb25nZmlsZT0iZ251IiBjb21wcmVzc2lvbj0iZ3ppcCIgZGVzdGZpbGU9IiR7YXJjaGl2ZS5maWxlLm5hbWV9LnRhci5neiI+CisJCQk8dGFyZmlsZXNldCBkaXI9IiR7ZGlzdC5kaXJ9L3JlZDUiPgorCQkJCTxpbmNsdWRlIG5hbWU9IioqIiAvPgorCQkJCTxleGNsdWRlIG5hbWU9Iiouc2giIC8+CisJCQk8L3RhcmZpbGVzZXQ+CisJCQk8dGFyZmlsZXNldCBkaXI9IiR7ZGlzdC5kaXJ9L3JlZDUiIGZpbGVtb2RlPSI3NTUiPgorCQkJCTxpbmNsdWRlIG5hbWU9Iiouc2giIC8+CisJCQk8L3RhcmZpbGVzZXQ+CisJCTwvdGFyPgorCTwvdGFyZ2V0PgorCQorCTwhLS0gYnVpbGQgYXJ0ZWZhY3RzIC0tPgorCTx0YXJnZXQgbmFtZT0iZGlzdC1yZWxlYXNlIiBkZXNjcmlwdGlvbj0icGFjayBiaW5hcnkgZGlzdHJpYnV0aW9uIj4KKwkJPHByb3BlcnR5IG5hbWU9ImFyY2hpdmUuZmlsZS5uYW1lIiB2YWx1ZT0iJHtkaXN0LmRpcn0vYXBhY2hlLSR7cHJvamVjdC5kaXN0bmFtZX0tJHtwcm9qZWN0LnZlcnNpb259IiAvPgorCQk8YW50Y2FsbCB0YXJnZXQ9ImRpc3QtYmluIiAvPgorCQk8emlwIGRlc3RmaWxlPSIke2FyY2hpdmUuZmlsZS5uYW1lfS56aXAiPgorCQkJPHppcGZpbGVzZXQgZGlyPSIke2Rpc3QuZGlyfS9yZWQ1Ij4KKwkJCQk8aW5jbHVkZSBuYW1lPSIqKiIgLz4KKwkJCQk8ZXhjbHVkZSBuYW1lPSIqLnNoIiAvPgorCQkJPC96aXBmaWxlc2V0PgorCQkJPHppcGZpbGVzZXQgZGlyPSIke2Rpc3QuZGlyfS9yZWQ1IiBmaWxlbW9kZT0iNzU1Ij4KKwkJCQk8aW5jbHVkZSBuYW1lPSIqLnNoIiAvPgorCQkJPC96aXBmaWxlc2V0PgorCQk8L3ppcD4KKwkJPHppcCBkZXN0ZmlsZT0iJHthcmNoaXZlLmZpbGUubmFtZX0tc3JjLnppcCI+CisJCQk8emlwZmlsZXNldCBkaXI9IiR7YmFzZWRpcn0iPgorCQkJCTxleGNsdWRlIG5hbWU9ImJ1aWxkLyoqIiAvPgorCQkJCTxleGNsdWRlIG5hbWU9ImRpc3QvKioiIC8+CisJCQkJPGV4Y2x1ZGUgbmFtZT0iYnVpbGQucHJvcGVydGllcyIgLz4KKwkJCTwvemlwZmlsZXNldD4KKwkJCTx6aXBmaWxlc2V0IGRpcj0iJHtidWlsZC5iYXNlLmRpcn0iPgorCQkJCTxpbmNsdWRlIG5hbWU9ImJ1aWxkLnByb3BlcnRpZXMiIC8+CisJCQk8L3ppcGZpbGVzZXQ+CisJCTwvemlwPgorCTwvdGFyZ2V0PgorCisJPCEtLSBidWlsZCB3ZWJhcHAgLS0+CisJPHRhcmdldCBuYW1lPSItY29weS1saWJyYXJpZXMiIGRlc2NyaXB0aW9uPSJBbGwgamFycyBkb3dubG9hZGVkIGJ5IGl2eSBjb3BpZWQgdG8gYXBwcm9wcmlhdGUgcGxhY2VzIj4KKwkJPGNvcHkgdG9kaXI9IiR7cmVkNS5yb290fS9saWIiPgorCQkJPGZpbGVzZXQgZGlyPSIke3JlZDUuY2xpZW50LmxpYn0iIGluY2x1ZGVzPSJyZWQ1LWNsaWVudCouamFyIiAvPgorCQkJPGZpbGVzZXQgZGlyPSIke21haW5saWJzLmxpYi5kaXJ9IiBpbmNsdWRlcz0iKi5qYXIiIC8+CisJCTwvY29weT4KKwkJPGNvcHkgdG9kaXI9IiR7ZGlzdC53ZWJhcHBzLmRpcn0vV0VCLUlORi9saWIiPgorCQkJPGZpbGVzZXQgZGlyPSIke29tLmxpYi5kaXJ9IiBpbmNsdWRlcz0iKi5qYXIiIC8+CisJCTwvY29weT4KKwkJPGNobW9kIGRpcj0iJHtkaXN0LndlYmFwcHMuZGlyfS9XRUItSU5GL2xpYiIgcGVybT0iNzU1IiBpbmNsdWRlcz0iKiovKi5zaCIgLz4KKwk8L3RhcmdldD4KKworCTx0YXJnZXQgbmFtZT0iZGlzdCIgZGVzY3JpcHRpb249ImJpbmFyeSBkaXN0cmlidXRpb24gb2YgT3Blbk1lZXRpbmdzIiBkZXBlbmRzPSJjbGVhbiwgamFyLCBjbGllbnQub25seSwgZW5oYW5jZSwgLWNvcHktbGlicmFyaWVzLCBzaWduV2ViU3RhcnRKYXJzIiAvPgorCisJPCEtLSBjb21waWxlcyB0aGUgc291cmNlcyB3aXRob3V0IG9wZW5sYXN6bG8gY2xpZW50IC0tPgorCTx0YXJnZXQgbmFtZT0iZGlzdC10ZXN0IiBkZXNjcmlwdGlvbj0iYmluYXJ5IGRpc3RyaWJ1dGlvbiBvZiBPcGVuTWVldGluZ3MiIGRlcGVuZHM9ImNsZWFuLCAtZGlzdC10ZXN0LW5vLWNsZWFuLCBzaWduV2ViU3RhcnRKYXJzIiAvPgorCisJPCEtLSBjb21waWxlcyB0aGUgc291cmNlcyB3aXRob3V0IG9wZW5sYXN6bG8gY2xpZW50IGFuZCBjbGVhbiAtLT4KKwk8dGFyZ2V0IG5hbWU9Ii1kaXN0LXRlc3Qtbm8tY2xlYW4iIGRlc2NyaXB0aW9uPSJiaW5hcnkgZGlzdHJpYnV0aW9uIG9mIE9wZW5NZWV0aW5ncyIgZGVwZW5kcz0iamFyLCAtY29weS1saWJyYXJpZXMiIC8+CisKKwk8IS0tIGNvbXBpbGVzIHRoZSBzb3VyY2VzIG9ubHkgd2l0aCBsYXN6bG8gZGVidWcgY2xpZW50IC0tPgorCTx0YXJnZXQgbmFtZT0iZGlzdC1kZWJ1ZyIgZGVzY3JpcHRpb249ImJpbmFyeSBkaXN0cmlidXRpb24gb2YgT3Blbk1lZXRpbmdzIiBkZXBlbmRzPSJjbGVhbiwgamFyLCBjbGllbnQuZGVidWcub25seSwgLWNvcHktbGlicmFyaWVzLCBzaWduV2ViU3RhcnRKYXJzIiAvPgorCisJPHRhcmdldCBuYW1lPSItY2xlYW51cC1qcmViZWwiIHVubGVzcz0ianJlYmVsLmVuYWJsZWQiPgorCQk8ZGVsZXRlPgorCQkJPGZpbGVzZXQgZGlyPSIke2Rpc3Qud2ViYXBwcy5kaXJ9L1dFQi1JTkYvY2xhc3NlcyIgaW5jbHVkZXM9InJlYmVsKi54bWwiIC8+CisJCTwvZGVsZXRlPgorCTwvdGFyZ2V0PgorCQorCTwhLS0gQ2hlY2sgdGltZXN0YW1wIG9uIGZpbGVzIC0tPgorCTx0YXJnZXQgbmFtZT0icHJlcGFyZSIgZGVwZW5kcz0icHJlcGFyZS5ta2RpciI+CisJCTxjb3B5IHRvZGlyPSIke3JlZDUucm9vdH0iPgorCQkJPGZpbGVzZXQgZGlyPSIke3JlZDUubGlifSI+CisJCQkJPGV4Y2x1ZGUgbmFtZT0iKiovKi5mbGEiIC8+CisJCQk8L2ZpbGVzZXQ+CisJCTwvY29weT4KKwkJPGNvcHkgdG9kaXI9IiR7ZGlzdC53ZWJhcHBzLmRpcn0iPgorCQkJPGZpbGVzZXQgZGlyPSIke3dlYmNvbnRlbnQuc3JjLmRpcn0vb3Blbm1lZXRpbmdzIiAvPgorCQk8L2NvcHk+CisKKwkJPGNvcHkgdG9kaXI9IiR7ZGlzdC53ZWJhcHBzLmRpcn0iPgorCQkJPGZpbGVzZXQgZGlyPSIke3dlYmNvbnRlbnQuc3JjLmRpcn0iPgorCQkJCTxpbmNsdWRlIG5hbWU9IiouaHRtbCIgLz4KKwkJCTwvZmlsZXNldD4KKwkJPC9jb3B5PgorCQk8ZmlsdGVyIHRva2VuPSJ3aWNrZXQubW9kZSIgdmFsdWU9IiR7d2lja2V0Lm1vZGV9IiAvPgorCQk8Y29weSB0b2Rpcj0iJHtkaXN0LndlYmFwcHMuZGlyfS9XRUItSU5GIiBmaWx0ZXJpbmc9InRydWUiPgorCQkJPGZpbGVzZXQgZGlyPSIke3dlYmNvbnRlbnQuc3JjLmRpcn0vV0VCLUlORiI+CisJCQkJPGluY2x1ZGUgbmFtZT0iKi54bWwiIC8+CisJCQkJPGluY2x1ZGUgbmFtZT0iKi5wcm9wZXJ0aWVzIiAvPgorCQkJCTxleGNsdWRlIG5hbWU9InJvb3QtKi54bWwiIC8+CisJCQk8L2ZpbGVzZXQ+CisJCTwvY29weT4KKwkJPGFudGNhbGwgdGFyZ2V0PSItY2xlYW51cC1qcmViZWwiIC8+CisJCTxjaG1vZCBkaXI9IiR7cmVkNS5yb290fSIgcGVybT0iNzU1IiBpbmNsdWRlcz0iKiovKi5zaCIgLz4KKworCQk8YW50Y2FsbCB0YXJnZXQ9Ii1wcm9jZXNzLWRiIiBpbmhlcml0QWxsPSJ0cnVlIiBpbmhlcml0UmVmcz0idHJ1ZSIgLz4KKwkJPGNvcHkgdG9kaXI9IiR7ZGlzdC5wZXJzaXN0ZW5jZS5kaXJ9Ij4KKwkJCTxmaWxlc2V0IGZpbGU9InNyYy9NRVRBLUlORi8qLnhtbCI+CisJCQkJPGV4Y2x1ZGUgbmFtZT0ic2VydmljZXMueG1sIiAvPgorCQkJPC9maWxlc2V0PgorCQk8L2NvcHk+CisKKwkJPCEtLSBhZGQgbGFuZ3VhZ2UgZmlsZXMgZnJvbSAud2FyIHZlcnNpb24gLS0+CisJCTxjb3B5IHRvZGlyPSIke2Rpc3Qud2ViYXBwcy5kaXJ9L2xhbmd1YWdlcyI+CisJCQk8ZmlsZXNldCBkaXI9IiR7d2ViY29udGVudC5zcmMuZGlyfS9sYW5ndWFnZXMiIC8+CisJCTwvY29weT4KKwkJPGNvcHkgdG9kaXI9IiR7ZGlzdC53ZWJhcHBzLmRpcn0vY29uZiI+CisJCQk8ZmlsZXNldCBkaXI9IiR7d2ViY29udGVudC5zcmMuZGlyfS9jb25mIiAvPgorCQk8L2NvcHk+CisJCTx0c3RhbXAgLz4KKwk8L3RhcmdldD4KKworCTwhLS0gQ29weSBhbnkgcmVzb3VyY2Ugb3IgY29uZmlndXJhdGlvbiBmaWxlcyAtLT4KKwk8dGFyZ2V0IG5hbWU9InJlc291cmNlcyI+CisJCTxwYXR0ZXJuc2V0IGlkPSJ4bWxwbmciPgorCQkJPGluY2x1ZGUgbmFtZT0iKiovKi54bWwiIC8+CisJCQk8aW5jbHVkZSBuYW1lPSIqKi8qLnBuZyIgLz4KKwkJPC9wYXR0ZXJuc2V0PgorCQk8cGF0dGVybnNldCBpZD0icmVzb3VyY2VzIj4KKwkJCTxwYXR0ZXJuc2V0IHJlZmlkPSJ4bWxwbmciIC8+CisJCQk8aW5jbHVkZSBuYW1lPSIqKi8qLmNvbmYiIC8+CisJCQk8aW5jbHVkZSBuYW1lPSIqKi8qLnByb3BlcnRpZXMiIC8+CisJCQk8aW5jbHVkZSBuYW1lPSIqKi8qLnZtIiAvPgorCQk8L3BhdHRlcm5zZXQ+CisKKwkJPCEtLSBNYWluIEFwcGxpY2F0aW9ucyAtLT4KKwkJPGNvcHkgdG9kaXI9IiR7bWFpbi5vdXQuZGlyfSIgaW5jbHVkZUVtcHR5RGlycz0ieWVzIj4KKwkJCTxmaWxlc2V0IGRpcj0iJHttYWluLnNyYy5kaXJ9Ij4KKwkJCQk8cGF0dGVybnNldCByZWZpZD0icmVzb3VyY2VzIiAvPgorCQkJPC9maWxlc2V0PgorCQk8L2NvcHk+CisJPC90YXJnZXQ+CisJCisJPHRhcmdldCBuYW1lPSJqYXIud2ViLm9ubHkiIGRlcGVuZHM9ImVuaGFuY2Uub25seS5ub3JlZnJlc2gsIGN1cnJlbnRfcmV2aXNpb24iPgorCQk8dHN0YW1wIHByZWZpeD0iYnVpbGQiPgorCQkJPGZvcm1hdCBwcm9wZXJ0eT0iVE9EQVkiIHBhdHRlcm49ImQtTU1NTS15eXl5IiBsb2NhbGU9ImVuIiAvPgorCQk8L3RzdGFtcD4KKwkJPG1hbmlmZXN0Y2xhc3NwYXRoIHByb3BlcnR5PSJqYXIuY2xhc3NwYXRoIiBqYXJmaWxlPSIke3Byb2plY3QuZGlzdG5hbWV9LSR7amFyLnN1ZmZpeH0uamFyIj4KKwkJCTxjbGFzc3BhdGggcmVmaWQ9ImNvbXBpbGUuY2xhc3NwYXRoIiAvPgorCQk8L21hbmlmZXN0Y2xhc3NwYXRoPgorCQk8amFyIGRlc3RmaWxlPSIke2Rpc3Qud2ViYXBwcy5kaXJ9L1dFQi1JTkYvbGliLyR7cHJvamVjdC5kaXN0bmFtZX0tJHtqYXIuc3VmZml4fS5qYXIiPgorCQkJPGZpbGVzZXQgZGlyPSIke21haW4ub3V0LmRpcn0iPgorCQkJCTxpbmNsdWRlIG5hbWU9IioqIiAvPgorCQkJCTxleGNsdWRlIG5hbWU9IioqL3Rlc3QvKioiIC8+CisJCQkJPGV4Y2x1ZGUgbmFtZT0iKiovYXhpcy8qKiIgLz4KKwkJCQk8ZXhjbHVkZSBuYW1lPSJvcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zY3JlZW4vKioiIC8+CisJCQkJPGV4Y2x1ZGUgbmFtZT0ib3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZG9jLyoqIiAvPgorCQkJCTxleGNsdWRlIG5hbWU9IioqL2NsaWVudC8qKiIgLz4KKwkJCQk8ZXhjbHVkZSBuYW1lPSIqKi8qLnBuZyIgLz4KKwkJCQk8ZXhjbHVkZSBuYW1lPSIqKi8qLnZtIiAvPgorCQkJCTxleGNsdWRlIG5hbWU9Ik1FVEEtSU5GLyoueG1sIiAvPgorCQkJCTxleGNsdWRlIG5hbWU9ImxvZzRqLnByb3BlcnRpZXMiIC8+CisJCQk8L2ZpbGVzZXQ+CisJCQk8bWFuaWZlc3Q+CisJCQkJPGF0dHJpYnV0ZSBuYW1lPSJCdWlsdC1CeSIgdmFsdWU9Ik9wZW5NZWV0aW5ncyAtIGh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZyIgLz4KKwkJCQk8YXR0cmlidXRlIG5hbWU9IkJ1aWx0LU9uIiB2YWx1ZT0iJHtidWlsZC5UT0RBWX0iIC8+CisJCQkJPGF0dHJpYnV0ZSBuYW1lPSJDbGFzcy1QYXRoIiB2YWx1ZT0iY29uZi8gJHtqYXIuY2xhc3NwYXRofSIgLz4KKwkJCQk8YXR0cmlidXRlIG5hbWU9IlN2bi1SZXZpc2lvbiIgdmFsdWU9IiR7c3ZuLmluZm8ucmV2fSIgLz4KKwkJCQk8YXR0cmlidXRlIG5hbWU9IlByb2R1Y3QtVmVyc2lvbiIgdmFsdWU9IiR7cHJvamVjdC52ZXJzaW9ufS0ke3Byb2plY3Quc3RhdHVzfSIgLz4KKwkJCTwvbWFuaWZlc3Q+CisJCTwvamFyPgorCTwvdGFyZ2V0PgorCisJPHRhcmdldCBuYW1lPSJqYXIub25seSIgZGVwZW5kcz0iYnVpbGRKYXZhRG9jcywgZW5oYW5jZS5vbmx5LCBjdXJyZW50X3JldmlzaW9uIj4KKwkJPHRzdGFtcCBwcmVmaXg9ImJ1aWxkIj4KKwkJCTxmb3JtYXQgcHJvcGVydHk9IlRPREFZIiBwYXR0ZXJuPSJkLU1NTU0teXl5eSIgbG9jYWxlPSJlbiIgLz4KKwkJPC90c3RhbXA+CisJCTxtYW5pZmVzdGNsYXNzcGF0aCBwcm9wZXJ0eT0iamFyLmNsYXNzcGF0aCIgamFyZmlsZT0iJHtwcm9qZWN0LmRpc3RuYW1lfS0ke2phci5zdWZmaXh9LmphciI+CisJCQk8Y2xhc3NwYXRoIHJlZmlkPSJjb21waWxlLmNsYXNzcGF0aCIgLz4KKwkJPC9tYW5pZmVzdGNsYXNzcGF0aD4KKwkJPGphciBkZXN0ZmlsZT0iJHtkaXN0LndlYmFwcHMuZGlyfS9XRUItSU5GL2xpYi8ke3Byb2plY3QuZGlzdG5hbWV9LSR7amFyLnN1ZmZpeH0uamFyIj4KKwkJCTxmaWxlc2V0IGRpcj0iJHttYWluLm91dC5kaXJ9Ij4KKwkJCQk8aW5jbHVkZSBuYW1lPSIqKiIgLz4KKwkJCQk8ZXhjbHVkZSBuYW1lPSIqKi90ZXN0LyoqIiAvPgorCQkJCTxleGNsdWRlIG5hbWU9IioqL2F4aXMvKioiIC8+CisJCQkJPGV4Y2x1ZGUgbmFtZT0ib3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2NyZWVuLyoqIiAvPgorCQkJCTxleGNsdWRlIG5hbWU9Im9yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RvYy8qKiIgLz4KKwkJCQk8ZXhjbHVkZSBuYW1lPSIqKi9jbGllbnQvKioiIC8+CisJCQkJPGV4Y2x1ZGUgbmFtZT0iKiovKi5wbmciIC8+CisJCQkJPGV4Y2x1ZGUgbmFtZT0iKiovKi52bSIgLz4KKwkJCQk8ZXhjbHVkZSBuYW1lPSJNRVRBLUlORi8qLnhtbCIgLz4KKwkJCQk8ZXhjbHVkZSBuYW1lPSJsb2c0ai5wcm9wZXJ0aWVzIiAvPgorCQkJPC9maWxlc2V0PgorCQkJPG1hbmlmZXN0PgorCQkJCTxhdHRyaWJ1dGUgbmFtZT0iQnVpbHQtQnkiIHZhbHVlPSJPcGVuTWVldGluZ3MgLSBodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmciIC8+CisJCQkJPGF0dHJpYnV0ZSBuYW1lPSJCdWlsdC1PbiIgdmFsdWU9IiR7YnVpbGQuVE9EQVl9IiAvPgorCQkJCTxhdHRyaWJ1dGUgbmFtZT0iQ2xhc3MtUGF0aCIgdmFsdWU9ImNvbmYvICR7amFyLmNsYXNzcGF0aH0iIC8+CisJCQkJPGF0dHJpYnV0ZSBuYW1lPSJTdm4tUmV2aXNpb24iIHZhbHVlPSIke3N2bi5pbmZvLnJldn0iIC8+CisJCQkJPGF0dHJpYnV0ZSBuYW1lPSJQcm9kdWN0LVZlcnNpb24iIHZhbHVlPSIke3Byb2plY3QudmVyc2lvbn0tJHtwcm9qZWN0LnN0YXR1c30iIC8+CisJCQk8L21hbmlmZXN0PgorCQk8L2phcj4KKwkJPGphciBkZXN0ZmlsZT0iJHtkaXN0LndlYmFwcHMuZGlyfS9XRUItSU5GL2xpYi8ke3Byb2plY3QuZGlzdG5hbWV9LXRlbXBsYXRlcy0ke2phci5zdWZmaXh9LmphciI+CisJCQk8ZmlsZXNldCBkaXI9IiR7bWFpbi5vdXQuZGlyfSI+CisJCQkJPGluY2x1ZGUgbmFtZT0iKioiIC8+CisJCQkJPGV4Y2x1ZGUgbmFtZT0iKiovb3JnLyoqIiAvPgorCQkJCTxleGNsdWRlIG5hbWU9IioqLyoucG5nIiAvPgorCQkJCTxleGNsdWRlIG5hbWU9IioqLyoucHJvcGVydGllcyIgLz4KKwkJCQk8ZXhjbHVkZSBuYW1lPSJNRVRBLUlORi8qLnhtbCIgLz4KKwkJCTwvZmlsZXNldD4KKwkJCTxtYW5pZmVzdD4KKwkJCQk8YXR0cmlidXRlIG5hbWU9IkJ1aWx0LUJ5IiB2YWx1ZT0iT3Blbk1lZXRpbmdzIC0gaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnIiAvPgorCQkJCTxhdHRyaWJ1dGUgbmFtZT0iQnVpbHQtT24iIHZhbHVlPSIke2J1aWxkLlRPREFZfSIgLz4KKwkJCQk8YXR0cmlidXRlIG5hbWU9IkNsYXNzLVBhdGgiIHZhbHVlPSJjb25mLyAke2phci5jbGFzc3BhdGh9IiAvPgorCQkJCTxhdHRyaWJ1dGUgbmFtZT0iU3ZuLVJldmlzaW9uIiB2YWx1ZT0iJHtzdm4uaW5mby5yZXZ9IiAvPgorCQkJCTxhdHRyaWJ1dGUgbmFtZT0iUHJvZHVjdC1WZXJzaW9uIiB2YWx1ZT0iJHtwcm9qZWN0LnZlcnNpb259LSR7cHJvamVjdC5zdGF0dXN9IiAvPgorCQkJPC9tYW5pZmVzdD4KKwkJPC9qYXI+CisKKwkJPCEtLSBCdWlsZCBXZWJTZXJ2aWNlcyAtLT4KKwkJPHByb3BlcnR5IG5hbWU9Im9tX2Fhcl9uYW1lIiB2YWx1ZT0iJHtwcm9qZWN0LmRpc3RuYW1lfS0ke2phci5zdWZmaXh9LmFhciIvPgorCQk8cHJvcGVydHkgbmFtZT0ib21fYWFyX2ZvbGRlciIgdmFsdWU9IiR7ZGlzdC53ZWJhcHBzLmRpcn0vV0VCLUlORi9zZXJ2aWNlcyIvPgorCQk8amFyIGRlc3RmaWxlPSIke29tX2Fhcl9mb2xkZXJ9LyR7b21fYWFyX25hbWV9Ij4KKwkJCTxmaWxlc2V0IGRpcj0ic3JjLyI+CisJCQkJPGluY2x1ZGUgbmFtZT0iTUVUQS1JTkYvc2VydmljZXMueG1sIiAvPgorCQkJPC9maWxlc2V0PgorCQkJPGZpbGVzZXQgZGlyPSIke21haW4ub3V0LmRpcn0iPgorCQkJCTxpbmNsdWRlIG5hbWU9Ik1FVEEtSU5GL0xJQ0VOU0UiIC8+CisJCQkJPGluY2x1ZGUgbmFtZT0iTUVUQS1JTkYvTk9USUNFIiAvPgorCQkJPC9maWxlc2V0PgorCQk8L2phcj4KKwkJPGVjaG8gZmlsZT0iJHtvbV9hYXJfZm9sZGVyfS9zZXJ2aWNlcy5saXN0IiBhcHBlbmQ9ImZhbHNlIj4ke29tX2Fhcl9uYW1lfSR7bGluZS5zZXBhcmF0b3J9dmVyc2lvbi5hYXIke2xpbmUuc2VwYXJhdG9yfTwvZWNobz4KKwkJPGphciBkZXN0ZmlsZT0iJHtkaXN0LndlYmFwcHMuZGlyfS9XRUItSU5GL2xpYi8ke3Byb2plY3QuZGlzdG5hbWV9LVdlYlNlcnZpY2UtJHtqYXIuc3VmZml4fS5qYXIiPgorCQkJPGZpbGVzZXQgZGlyPSIke21haW4ub3V0LmRpcn0iPgorCQkJCTxpbmNsdWRlIG5hbWU9IioqL2FwYWNoZS9vcGVubWVldGluZ3MvYXhpcy8qKiIgLz4KKwkJCQk8aW5jbHVkZSBuYW1lPSJNRVRBLUlORi9MSUNFTlNFIiAvPgorCQkJCTxpbmNsdWRlIG5hbWU9Ik1FVEEtSU5GL05PVElDRSIgLz4KKwkJCTwvZmlsZXNldD4KKwkJPC9qYXI+CisJPC90YXJnZXQ+CisKKwk8dGFyZ2V0IG5hbWU9ImRpc3Quc2NyZWVuLnNoYXJlIiBkZXNjcmlwdGlvbj0iTWFrZSBTY3JlZW4gU2hhcmUgQXJjaGl2ZSIgZGVwZW5kcz0iamFyLnNjcmVlbi5zaGFyZSwgc2lnbldlYlN0YXJ0SmFycyIgLz4KKworCTx0YXJnZXQgbmFtZT0iamFyLnNjcmVlbi5zaGFyZSIgZGVzY3JpcHRpb249Ik1ha2UgU2NyZWVuIFNoYXJlIEFyY2hpdmUiIGRlcGVuZHM9ImNvbXBpbGUub25seSI+CisJCTx0c3RhbXAgcHJlZml4PSJidWlsZCI+CisJCQk8Zm9ybWF0IHByb3BlcnR5PSJUT0RBWSIgcGF0dGVybj0iZC1NTU1NLXl5eXkiIGxvY2FsZT0iZW4iIC8+CisJCTwvdHN0YW1wPgorCQk8bWFuaWZlc3RjbGFzc3BhdGggcHJvcGVydHk9ImphcjIuY2xhc3NwYXRoIiBqYXJmaWxlPSIke3Byb2plY3QuZGlzdG5hbWV9LmphciI+CisJCQk8Y2xhc3NwYXRoIHJlZmlkPSJjb21waWxlLmNsYXNzcGF0aCIgLz4KKwkJPC9tYW5pZmVzdGNsYXNzcGF0aD4KKwkJPCEtLSBTY3JlZW4gU2hhcmUgLS0+CisJCTxqYXIgZGVzdGZpbGU9IiR7c2NyZWVuc2hhcmUub3V0LmRpcn0vJHtwcm9qZWN0LmRpc3RuYW1lfS1zY3JlZW5zaGFyZS0ke2phci5zdWZmaXh9LmphciI+CisJCQk8ZmlsZXNldCBkaXI9IiR7bWFpbi5vdXQuZGlyfSI+CisJCQkJPGluY2x1ZGUgbmFtZT0ib3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2NyZWVuLyoqIiAvPgorCQkJCTxpbmNsdWRlIG5hbWU9Ik1FVEEtSU5GL0xJQ0VOU0UiIC8+CisJCQkJPGluY2x1ZGUgbmFtZT0iTUVUQS1JTkYvTk9USUNFIiAvPgorCQkJPC9maWxlc2V0PgorCQkJPGZpbGVzZXQgZmlsZT0iJHtzY3JlZW5zaGFyaW5nLnJlc291cmNlc30vbG9nYmFjay54bWwiIC8+CisJCQk8bWFuaWZlc3Q+CisJCQkJPGF0dHJpYnV0ZSBuYW1lPSJCdWlsdC1CeSIgdmFsdWU9Ik9wZW5NZWV0aW5ncyAtIGh0dHA6Ly9vcGVubWVldGluZ3MuZ29vZ2xlY29kZS5jb20iIC8+CisJCQkJPGF0dHJpYnV0ZSBuYW1lPSJCdWlsdC1PbiIgdmFsdWU9IiR7YnVpbGQuVE9EQVl9IiAvPgorCQkJCTxhdHRyaWJ1dGUgbmFtZT0iQ2xhc3MtUGF0aCIgdmFsdWU9ImNvbmYvICR7amFyMi5jbGFzc3BhdGh9IiAvPgorCQkJPC9tYW5pZmVzdD4KKwkJPC9qYXI+CisJPC90YXJnZXQ+CisJCisJPHRhcmdldCBuYW1lPSJidWlsZEphdmFEb2NzIj4KKwkJPHRzdGFtcCBwcmVmaXg9ImRvYyI+CisJCQk8Zm9ybWF0IHByb3BlcnR5PSJUT0RBWV9ZRUFSIiBwYXR0ZXJuPSJ5eXl5IiBsb2NhbGU9ImVuIiAvPgorCQk8L3RzdGFtcD4KKwkgICAgPGphdmFkb2MgcGFja2FnZW5hbWVzPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5yZW1vdGUuKiIKKwkgICAgICAgICAgIHNvdXJjZXBhdGg9InNyYyIKKwkgICAgICAgICAgIGV4Y2x1ZGVwYWNrYWdlbmFtZXM9Im9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnRlc3QuKiIKKwkgICAgICAgICAgIGRlZmF1bHRleGNsdWRlcz0ieWVzIgorCSAgICAgICAgICAgZGVzdGRpcj0iYnVpbGQvYXBpIgorCSAgICAgICAgICAgYXV0aG9yPSJ0cnVlIgorCSAgICAgICAgICAgdmVyc2lvbj0idHJ1ZSIKKwkgICAgICAgICAgIHVzZT0idHJ1ZSIKKwkgICAgICAgICAgIHdpbmRvd3RpdGxlPSJBcGFjaGUgT3Blbk1lZXRpbmdzIEFQSSI+CisJICAgIAk8Y2xhc3NwYXRoIHJlZmlkPSJjb21waWxlLmNsYXNzcGF0aCI+PC9jbGFzc3BhdGg+CisJICAgICAgICA8ZG9jdGl0bGU+PCFbQ0RBVEFbPGgxPkFwYWNoZSBPcGVuTWVldGluZ3MgQVBJPC9oMT5dXT48L2RvY3RpdGxlPgorCSAgICAJPGJvdHRvbT48IVtDREFUQVs8aT5Db3B5cmlnaHQgJmNvcHk7IDIwMDAtJHtkb2MuVE9EQVlfWUVBUn0gVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLiBBbGwgcmlnaHRzIFJlc2VydmVkLjwvaT5dXT48L2JvdHRvbT4KKwkgIAk8L2phdmFkb2M+CisJPC90YXJnZXQ+CisKKwk8IS0tIENvbXBpbGUgSkFSIC0tPgorCTx0YXJnZXQgbmFtZT0iamFyIiBkZXNjcmlwdGlvbj0iTWFrZSBBcmNoaXZlIiBkZXBlbmRzPSJlbmhhbmNlLCBidWlsZC5vbmx5LndlYnNlcnZpY2UuZG9jLCBqYXIub25seSwgamFyLnNjcmVlbi5zaGFyZSI+CisJCTx0c3RhbXAgcHJlZml4PSJidWlsZCI+CisJCQk8Zm9ybWF0IHByb3BlcnR5PSJUT0RBWSIgcGF0dGVybj0iZC1NTU1NLXl5eXkiIGxvY2FsZT0iZW4iIC8+CisJCTwvdHN0YW1wPgorCTwvdGFyZ2V0PgorCisJPHRhcmdldCBuYW1lPSJzaWduV2ViU3RhcnRKYXJzIj4KKwkJPGRlbGV0ZSBmaWxlPSIke2tleXN0b3JlLmZpbGV9IiAvPgorCQk8Z2Vua2V5IGFsaWFzPSJmaWxldGVzdCIgc3RvcmVwYXNzPSJzZWNyZXQiIGtleXN0b3JlPSIke2tleXN0b3JlLmZpbGV9IiB2ZXJib3NlPSJ0cnVlIgorCQkJc2lnYWxnPSJNRDV3aXRoUlNBIiBrZXlhbGc9IlJTQSI+CisJCQk8ZG5hbWU+CisJCQkJPHBhcmFtIG5hbWU9IkNOIiB2YWx1ZT0iU2ViYXN0aWFuIFdhZ25lciIgLz4KKwkJCQk8cGFyYW0gbmFtZT0iT1UiIHZhbHVlPSJ0ZWNobm9sb2d5IiAvPgorCQkJCTxwYXJhbSBuYW1lPSJPIiB2YWx1ZT0ib3Blbm1lZXRpbmdzLmFwYWNoZS5vcmciIC8+CisJCQkJPHBhcmFtIG5hbWU9IkMiIHZhbHVlPSJERSIgLz4KKwkJCTwvZG5hbWU+CisJCTwvZ2Vua2V5PgorCQk8Y29weSB0b2Rpcj0iJHtzY3JlZW5zaGFyZS5vdXQuZGlyfSI+CisJCQk8ZmlsZXNldCBkaXI9IiR7c2NyZWVuc2hhcmluZy5yZXNvdXJjZXN9IiBpbmNsdWRlcz0iKi5qcGciIC8+CisJCQk8ZmlsZXNldCBkaXI9IiR7cmVkNS5zZXJ2ZXIubGlifSIgaW5jbHVkZXM9ImNvbW1vbnMtY29kZWMqLmphciIgLz4KKwkJCTxmaWxlc2V0IGRpcj0iJHtyZWQ1LnNlcnZlci5saWJ9IiBpbmNsdWRlcz0iaHR0cGNsaWVudCouamFyIiAvPgorCQkJPGZpbGVzZXQgZGlyPSIke3JlZDUuc2VydmVyLmxpYn0iIGluY2x1ZGVzPSJodHRwY29yZSouamFyIiAvPgorCQkJPGZpbGVzZXQgZGlyPSIke3JlZDUuc2VydmVyLmxpYn0iIGluY2x1ZGVzPSJiY3Byb3YqLmphciIgLz4KKwkJCTxmaWxlc2V0IGRpcj0iJHtyZWQ1LnNlcnZlci5saWJ9IiBpbmNsdWRlcz0iZWhjYWNoZS1jb3JlKi5qYXIiIC8+CisJCQk8ZmlsZXNldCBkaXI9IiR7cmVkNS5zZXJ2ZXIubGlifSIgaW5jbHVkZXM9ImNvbW1vbnMtYmVhbnV0aWxzKi5qYXIiIC8+CisJCQk8ZmlsZXNldCBkaXI9IiR7cmVkNS5zZXJ2ZXIubGlifSIgaW5jbHVkZXM9InNsZjRqLWFwaSouamFyIiAvPgorCQkJPGZpbGVzZXQgZGlyPSIke3JlZDUuc2VydmVyLmxpYn0iIGluY2x1ZGVzPSJqY2wtb3Zlci1zbGY0aiouamFyIiAvPgorCQkJPGZpbGVzZXQgZGlyPSIke3JlZDUuc2VydmVyLmxpYn0iIGluY2x1ZGVzPSJjb21tb25zLWNvbGxlY3Rpb25zKi5qYXIiIC8+CisJCQk8ZmlsZXNldCBkaXI9IiR7cmVkNS5saWJ9IiBpbmNsdWRlcz0icmVkNS5qYXIiIC8+CisJCQk8ZmlsZXNldCBkaXI9IiR7cmVkNS5zZXJ2ZXIubGlifSIgaW5jbHVkZXM9InNwcmluZy1jb250ZXh0LTMqLmphciIgLz4KKwkJCTxmaWxlc2V0IGRpcj0iJHtyZWQ1LnNlcnZlci5saWJ9IiBpbmNsdWRlcz0ic3ByaW5nLWNvcmUtKi5qYXIiIC8+CisJCQk8ZmlsZXNldCBkaXI9IiR7cmVkNS5zZXJ2ZXIubGlifSIgaW5jbHVkZXM9InNwcmluZy1iZWFucy0qLmphciIgLz4KKwkJCTxmaWxlc2V0IGRpcj0iJHtyZWQ1LnNlcnZlci5saWJ9IiBpbmNsdWRlcz0ibG9nYmFjayouamFyIiAvPgorCQkJPGZpbGVzZXQgZGlyPSIke3JlZDUuc2VydmVyLmxpYn0iIGluY2x1ZGVzPSJtaW5hLWNvcmUqLmphciIgLz4KKwkJCTxmaWxlc2V0IGRpcj0iJHtyZWQ1LnNlcnZlci5saWJ9IiBpbmNsdWRlcz0iY29tLnNwcmluZ3NvdXJjZS5zbGY0ai5hcGkqLmphciIgLz4KKwkJCTxmaWxlc2V0IGRpcj0iJHtyZWQ1LmNsaWVudC5saWJ9IiBpbmNsdWRlcz0icmVkNS1jbGllbnQqLmphciIgLz4KKwkJPC9jb3B5PgorCQk8c2lnbmphciBhbGlhcz0iZmlsZXRlc3QiIGtleXN0b3JlPSIke2tleXN0b3JlLmZpbGV9IiBzdG9yZXBhc3M9InNlY3JldCIgbGF6eT0iZmFsc2UiCisJCQlzaWdhbGc9Ik1ENXdpdGhSU0EiIGRpZ2VzdGFsZz0iU0hBMSI+CisJCQk8cGF0aD4KKwkJCQk8ZmlsZXNldCBkaXI9IiR7c2NyZWVuc2hhcmUub3V0LmRpcn0iPgorCQkJCQk8aW5jbHVkZSBuYW1lPSIqKi8qLmphciIgLz4KKwkJCQk8L2ZpbGVzZXQ+CisJCQk8L3BhdGg+CisJCTwvc2lnbmphcj4KKwk8L3RhcmdldD4KKworCTx0YXJnZXQgbmFtZT0iY2xpZW50Lm9ubHkiIGRlcGVuZHM9ImNvbXBpbGUubGFzemxvLm1haW4uYXMzLGNvbXBpbGUubGFzemxvLm1haW4sY29tcGlsZS5sYXN6bG8ubmV0d29ya3Rlc3RpbmciIC8+CisKKwk8dGFyZ2V0IG5hbWU9ImNsaWVudC5kZWJ1Zy5vbmx5IiBkZXBlbmRzPSJjb21waWxlLmxhc3psby5tYWluLmRlYnVnLmFzMyxjb21waWxlLmxhc3psby5tYWluLmRlYnVnLGNvbXBpbGUubGFzemxvLm5ldHdvcmt0ZXN0aW5nLmRlYnVnIiAvPgorCisJPHRhcmdldCBuYW1lPSItY29tcGlsZS5mbGFzaCIgZGVzY3JpcHRpb249ImNvbXBpbGUgZmxhc2ggYXBwbGljYXRpb24iPgorCQk8IS0tIGNvbW1lbnRlZCBmb3Igbm93CisJCTxlY2hvIG1lc3NhZ2U9ImZsYXNoLnNyYy5kaXIgPT0gJyR7Zmxhc2guc3JjLmRpcn0nIiAvPgorCQk8ZWNobyBtZXNzYWdlPSJjbGFzc3BhdGhyZWYgPT0gJyR7Zmxhc2guY2xhc3NwYXRoLnJlZn0nIiAvPgorCQk8ZWNobyBtZXNzYWdlPSJsYXN6bG8uaG9tZSA9PSAnJHtmbGFzaC5scHMuaG9tZX0nIiAvPgorCQk8ZWNobyBtZXNzYWdlPSJmbGFzaC5kZWJ1ZyA9PSAnJHtmbGFzaC5kZWJ1Z30nIiAvPgorCQk8ZWNobyBtZXNzYWdlPSJsYXN6bG8ucHJveGllZCA9PSAnJHtsYXN6bG8ucHJveGllZH0nIiAvPgorCQk8ZWNobyBtZXNzYWdlPSJmbGFzaC5ydW50aW1lID09ICcke2ZsYXNoLnJ1bnRpbWV9JyIgLz4KKwkJPGVjaG8gbWVzc2FnZT0ib3V0LmRpci5zd2YgPT0gJyR7b3V0LmRpci5zd2Z9JyIgLz4KKwkJPGVjaG8gbWVzc2FnZT0iZmxhc2gubWFpbi5maWxlID09ICcke2ZsYXNoLm1haW4uZmlsZX0nIiAvPgorCQk8ZWNobyBtZXNzYWdlPSJmbGFzaC5vdXQuZmlsZSA9PSAnJHtmbGFzaC5vdXQuZmlsZX0nIiAvPgorCQktLT4KKwkJPGphdmEgY2xhc3NuYW1lPSJvcmcub3Blbmxhc3psby5jb21waWxlci5NYWluIiBmb3JrPSJ0cnVlIiBuZXdlbnZpcm9ubWVudD0idHJ1ZSIgZmFpbG9uZXJyb3I9InRydWUiIGRpcj0iJHtmbGFzaC5zcmMuZGlyfSIgY2xhc3NwYXRocmVmPSIke2ZsYXNoLmNsYXNzcGF0aC5yZWZ9Ij4KKwkJCTxqdm1hcmcgdmFsdWU9Ii1ETFBTX0hPTUU9JHtmbGFzaC5scHMuaG9tZX0iIC8+CisJCQk8anZtYXJnIHZhbHVlPSItRGx6ZGVidWc9ZmFsc2UiIC8+CisJCQk8anZtYXJnIHZhbHVlPSItRGx6cHJveGllZD0ke2xhc3psby5wcm94aWVkfSIgLz4KKwkJCTxqdm1hcmcgdmFsdWU9Ii1YbXM1MTJNIiAvPgorCQkJPGp2bWFyZyB2YWx1ZT0iLVhteDUxMk0iIC8+CisJCQk8YXJnIGxpbmU9Ii0tcnVudGltZT0ke2ZsYXNoLnJ1bnRpbWV9ICR7Zmxhc2guZGVidWd9IC0tZGlyICZxdW90OyR7b3V0LmRpci5zd2Z9JnF1b3Q7IC0tb25lcnJvciB3YXJuICR7Zmxhc2gubWFpbi5maWxlfSAtbyAke2ZsYXNoLm91dC5maWxlfSIgLz4KKwkJPC9qYXZhPgorCTwvdGFyZ2V0PgorCisJPHRhcmdldCBuYW1lPSJjb21waWxlLmxhc3psby5uZXR3b3JrdGVzdGluZyIgZGVwZW5kcz0iY29tcGlsZS5sYXN6bG8ubmV0d29ya3Rlc3RpbmcuZGVidWciPgorCQk8YW50Y2FsbCB0YXJnZXQ9Ii1jb21waWxlLmZsYXNoIiBpbmhlcml0QWxsPSJ0cnVlIiBpbmhlcml0UmVmcz0idHJ1ZSI+CisJCQk8cGFyYW0gbmFtZT0iZmxhc2guY2xhc3NwYXRoLnJlZiIgdmFsdWU9Imxhc3psby5saWIiIC8+CisJCQk8cGFyYW0gbmFtZT0iZmxhc2guc3JjLmRpciIgdmFsdWU9IiR7bGFzemxvLmFzMy5zcmMuZGlyfS9uZXR3b3JrVGVzdGluZyIgLz4KKwkJCTxwYXJhbSBuYW1lPSJmbGFzaC5scHMuaG9tZSIgdmFsdWU9IiR7bGFzemxvLmhvbWV9IiAvPgorCQkJPHBhcmFtIG5hbWU9ImZsYXNoLnJ1bnRpbWUiIHZhbHVlPSJzd2YxMCIgLz4KKwkJCTxwYXJhbSBuYW1lPSJmbGFzaC5tYWluLmZpbGUiIHZhbHVlPSJuZXR3b3JrdGVzdGluZy5sengiIC8+CisJCQk8cGFyYW0gbmFtZT0iZmxhc2gub3V0LmZpbGUiIHZhbHVlPSJuZXR3b3JrdGVzdGluZy5zd2YxMC5zd2YiIC8+CisJCQk8cGFyYW0gbmFtZT0iZmxhc2guZGVidWciIHZhbHVlPSIiIC8+CisJCTwvYW50Y2FsbD4KKwk8L3RhcmdldD4KKworCTx0YXJnZXQgbmFtZT0iY29tcGlsZS5sYXN6bG8ubmV0d29ya3Rlc3RpbmcuZGVidWciIGRlcGVuZHM9Ii1yZXRyaWV2ZS1vcGVubGFzemxvIj4KKwkJPGFudGNhbGwgdGFyZ2V0PSItY29tcGlsZS5mbGFzaCIgaW5oZXJpdEFsbD0idHJ1ZSIgaW5oZXJpdFJlZnM9InRydWUiPgorCQkJPHBhcmFtIG5hbWU9ImZsYXNoLmNsYXNzcGF0aC5yZWYiIHZhbHVlPSJsYXN6bG8ubGliIiAvPgorCQkJPHBhcmFtIG5hbWU9ImZsYXNoLnNyYy5kaXIiIHZhbHVlPSIke2xhc3psby5hczMuc3JjLmRpcn0vbmV0d29ya1Rlc3RpbmciIC8+CisJCQk8cGFyYW0gbmFtZT0iZmxhc2gubHBzLmhvbWUiIHZhbHVlPSIke2xhc3psby5ob21lfSIgLz4KKwkJCTxwYXJhbSBuYW1lPSJmbGFzaC5ydW50aW1lIiB2YWx1ZT0ic3dmMTAiIC8+CisJCQk8cGFyYW0gbmFtZT0iZmxhc2gubWFpbi5maWxlIiB2YWx1ZT0ibmV0d29ya3Rlc3RpbmcubHp4IiAvPgorCQkJPHBhcmFtIG5hbWU9ImZsYXNoLm91dC5maWxlIiB2YWx1ZT0ibmV0d29ya3Rlc3RpbmdkZWJ1Zy5zd2YxMC5zd2YiIC8+CisJCQk8cGFyYW0gbmFtZT0iZmxhc2guZGVidWciIHZhbHVlPSItLWRlYnVnIiAvPgorCQk8L2FudGNhbGw+CisJPC90YXJnZXQ+CisJCisJPHRhcmdldCBuYW1lPSJjb21waWxlLmxhc3psby50ZXN0c2V0dXAuYXMzIiBkZXBlbmRzPSItcmV0cmlldmUtb3Blbmxhc3psbzQ2Ij4KKyAgICAgICAgPGFudGNhbGwgdGFyZ2V0PSItY29tcGlsZS5mbGFzaCIgaW5oZXJpdEFsbD0idHJ1ZSIgaW5oZXJpdFJlZnM9InRydWUiPgorICAgICAgICAgICAgPHBhcmFtIG5hbWU9ImZsYXNoLmNsYXNzcGF0aC5yZWYiIHZhbHVlPSJsYXN6bG80Ni5saWIiIC8+CisgICAgICAgICAgICA8cGFyYW0gbmFtZT0iZmxhc2guc3JjLmRpciIgdmFsdWU9IiR7bGFzemxvLnNyYy5kaXJ9IiAvPgorICAgICAgICAgICAgPHBhcmFtIG5hbWU9ImZsYXNoLmxwcy5ob21lIiB2YWx1ZT0iJHtsYXN6bG80Ni5ob21lfSIgLz4KKyAgICAgICAgICAgIDxwYXJhbSBuYW1lPSJmbGFzaC5ydW50aW1lIiB2YWx1ZT0ic3dmMTEiIC8+CisgICAgICAgICAgICA8cGFyYW0gbmFtZT0iZmxhc2gubWFpbi5maWxlIiB2YWx1ZT0idGVzdC90ZXN0LXNldHVwLmx6eCIgLz4KKyAgICAgICAgICAgIDxwYXJhbSBuYW1lPSJmbGFzaC5vdXQuZmlsZSIgdmFsdWU9InRlc3Qtc2V0dXAuYXMzLnN3ZjExLnN3ZiIgLz4KKyAgICAgICAgICAgIDxwYXJhbSBuYW1lPSJmbGFzaC5kZWJ1ZyIgdmFsdWU9IiIgLz4KKyAgICAgICAgPC9hbnRjYWxsPgorICAgIDwvdGFyZ2V0PgorCisJPHRhcmdldCBuYW1lPSJjb21waWxlLmxhc3psby5tYWluLmFzMyIgZGVwZW5kcz0iY29tcGlsZS5sYXN6bG8ubWFpbi5kZWJ1Zy5hczMiPgorCQk8YW50Y2FsbCB0YXJnZXQ9Ii1jb21waWxlLmZsYXNoIiBpbmhlcml0QWxsPSJ0cnVlIiBpbmhlcml0UmVmcz0idHJ1ZSI+CisJCQk8cGFyYW0gbmFtZT0iZmxhc2guY2xhc3NwYXRoLnJlZiIgdmFsdWU9Imxhc3psbzQ2LmxpYiIgLz4KKwkJCTxwYXJhbSBuYW1lPSJmbGFzaC5zcmMuZGlyIiB2YWx1ZT0iJHtsYXN6bG8uYXMzLnNyYy5kaXJ9IiAvPgorCQkJPHBhcmFtIG5hbWU9ImZsYXNoLmxwcy5ob21lIiB2YWx1ZT0iJHtsYXN6bG80Ni5ob21lfSIgLz4KKwkJCTxwYXJhbSBuYW1lPSJmbGFzaC5ydW50aW1lIiB2YWx1ZT0ic3dmMTEiIC8+CisJCQk8cGFyYW0gbmFtZT0iZmxhc2gubWFpbi5maWxlIiB2YWx1ZT0ibWFpbi5hczMubHp4IiAvPgorCQkJPHBhcmFtIG5hbWU9ImZsYXNoLm91dC5maWxlIiB2YWx1ZT0ibWFpbi5hczMuc3dmMTEuc3dmIiAvPgorCQkJPHBhcmFtIG5hbWU9ImZsYXNoLmRlYnVnIiB2YWx1ZT0iIiAvPgorCQk8L2FudGNhbGw+CisJPC90YXJnZXQ+CisKKwk8dGFyZ2V0IG5hbWU9ImNvbXBpbGUubGFzemxvLm1haW4uZGVidWcuYXMzIiBkZXBlbmRzPSItcmV0cmlldmUtb3Blbmxhc3psbzQ2Ij4KKwkJPGFudGNhbGwgdGFyZ2V0PSItY29tcGlsZS5mbGFzaCIgaW5oZXJpdEFsbD0idHJ1ZSIgaW5oZXJpdFJlZnM9InRydWUiPgorCQkJPHBhcmFtIG5hbWU9ImZsYXNoLmNsYXNzcGF0aC5yZWYiIHZhbHVlPSJsYXN6bG80Ni5saWIiIC8+CisJCQk8cGFyYW0gbmFtZT0iZmxhc2guc3JjLmRpciIgdmFsdWU9IiR7bGFzemxvLmFzMy5zcmMuZGlyfSIgLz4KKwkJCTxwYXJhbSBuYW1lPSJmbGFzaC5scHMuaG9tZSIgdmFsdWU9IiR7bGFzemxvNDYuaG9tZX0iIC8+CisJCQk8cGFyYW0gbmFtZT0iZmxhc2gucnVudGltZSIgdmFsdWU9InN3ZjExIiAvPgorCQkJPHBhcmFtIG5hbWU9ImZsYXNoLm1haW4uZmlsZSIgdmFsdWU9Im1haW4uYXMzLmx6eCIgLz4KKwkJCTxwYXJhbSBuYW1lPSJmbGFzaC5vdXQuZmlsZSIgdmFsdWU9Im1haW5kZWJ1Zy5hczMuc3dmMTEuc3dmIiAvPgorCQkJPHBhcmFtIG5hbWU9ImZsYXNoLmRlYnVnIiB2YWx1ZT0iLS1kZWJ1ZyIgLz4KKwkJPC9hbnRjYWxsPgorCTwvdGFyZ2V0PgorCisJPHRhcmdldCBuYW1lPSJjb21waWxlLmxhc3psby5tYWluIiBkZXBlbmRzPSJjb21waWxlLmxhc3psby5tYWluLmRlYnVnIj4KKwkJPGFudGNhbGwgdGFyZ2V0PSItY29tcGlsZS5mbGFzaCIgaW5oZXJpdEFsbD0idHJ1ZSIgaW5oZXJpdFJlZnM9InRydWUiPgorCQkJPHBhcmFtIG5hbWU9ImZsYXNoLmNsYXNzcGF0aC5yZWYiIHZhbHVlPSJsYXN6bG8ubGliIiAvPgorCQkJPHBhcmFtIG5hbWU9ImZsYXNoLnNyYy5kaXIiIHZhbHVlPSIke2xhc3psby5zcmMuZGlyfSIgLz4KKwkJCTxwYXJhbSBuYW1lPSJmbGFzaC5scHMuaG9tZSIgdmFsdWU9IiR7bGFzemxvLmhvbWV9IiAvPgorCQkJPHBhcmFtIG5hbWU9ImZsYXNoLnJ1bnRpbWUiIHZhbHVlPSJzd2Y4IiAvPgorCQkJPHBhcmFtIG5hbWU9ImZsYXNoLm1haW4uZmlsZSIgdmFsdWU9Im1haW4ubHp4IiAvPgorCQkJPHBhcmFtIG5hbWU9ImZsYXNoLm91dC5maWxlIiB2YWx1ZT0ibWFpbi5zd2Y4LnN3ZiIgLz4KKwkJCTxwYXJhbSBuYW1lPSJmbGFzaC5kZWJ1ZyIgdmFsdWU9IiIgLz4KKwkJPC9hbnRjYWxsPgorCTwvdGFyZ2V0PgorCisJPHRhcmdldCBuYW1lPSJjb21waWxlLmxhc3psby5tYWluLmRlYnVnIiBkZXBlbmRzPSItcmV0cmlldmUtb3Blbmxhc3psbyI+CisJCTxhbnRjYWxsIHRhcmdldD0iLWNvbXBpbGUuZmxhc2giIGluaGVyaXRBbGw9InRydWUiIGluaGVyaXRSZWZzPSJ0cnVlIj4KKwkJCTxwYXJhbSBuYW1lPSJmbGFzaC5jbGFzc3BhdGgucmVmIiB2YWx1ZT0ibGFzemxvLmxpYiIgLz4KKwkJCTxwYXJhbSBuYW1lPSJmbGFzaC5zcmMuZGlyIiB2YWx1ZT0iJHtsYXN6bG8uc3JjLmRpcn0iIC8+CisJCQk8cGFyYW0gbmFtZT0iZmxhc2gubHBzLmhvbWUiIHZhbHVlPSIke2xhc3psby5ob21lfSIgLz4KKwkJCTxwYXJhbSBuYW1lPSJmbGFzaC5ydW50aW1lIiB2YWx1ZT0ic3dmOCIgLz4KKwkJCTxwYXJhbSBuYW1lPSJmbGFzaC5tYWluLmZpbGUiIHZhbHVlPSJtYWluLmx6eCIgLz4KKwkJCTxwYXJhbSBuYW1lPSJmbGFzaC5vdXQuZmlsZSIgdmFsdWU9Im1haW5kZWJ1Zy5zd2Y4LnN3ZiIgLz4KKwkJCTxwYXJhbSBuYW1lPSJmbGFzaC5kZWJ1ZyIgdmFsdWU9Ii0tZGVidWciIC8+CisJCTwvYW50Y2FsbD4KKwk8L3RhcmdldD4KKworCTx0YXJnZXQgbmFtZT0iY29tcGlsZSIgZGVwZW5kcz0iY29tcGlsZS5vbmx5LCBwcmVwYXJlIiAvPgorCisJPHRhcmdldCBuYW1lPSJjb21waWxlLm9ubHkiIGRlcGVuZHM9ImNsZWFuLmNsYXNzZXMsIC1yZXRyaWV2ZS1tYWlubGlicywtcmV0cmlldmUtb20sLXJldHJpZXZlLWR0ZC1nZW5lcmF0b3IsLXJldHJpZXZlLWp1bml0LCAtcmV0cmlldmUtY21kYWRtaW4sIC1yZXRyaWV2ZS10b29scy5qYXIsIHJlc291cmNlcyI+CisJCTxlY2hvIG1lc3NhZ2U9IkNvbXBpbGUgbWFpbiB0byAke21haW4ub3V0LmRpcn0iIC8+CisJCTxqYXZhYyBkZWJ1Zz0ib24iIGRlYnVnbGV2ZWw9ImxpbmVzLHZhcnMsc291cmNlIiBkZXN0ZGlyPSIke21haW4ub3V0LmRpcn0iIGluY2x1ZGVhbnRydW50aW1lPSJmYWxzZSIKKwkJCXNvdXJjZT0iMS42IiB0YXJnZXQ9IjEuNiI+CisJCQk8c3JjIHBhdGg9IiR7bWFpbi5zcmMuZGlyfSIgLz4KKwkJCTxjbGFzc3BhdGggcmVmaWQ9ImNvbXBpbGUuY2xhc3NwYXRoIiAvPgorCQkJPGNvbXBpbGVyYXJnIHZhbHVlPSItQW9wZW5qcGEubWV0YW1vZGVsPXRydWUiIC8+CisJCQk8IS0tIGNvbXBpbGVyYXJnIHZhbHVlPSItWGxpbnQ6ZGVwcmVjYXRpb24iLyAtLT4KKwkJPC9qYXZhYz4KKwkJPGNvcHkgdG9kaXI9IiR7bWFpbi5vdXQuZGlyfSI+CisJCQk8ZmlsZXNldCBkaXI9IiR7bWFpbi5zcmMuZGlyfSI+CisJCQkJPGluY2x1ZGUgbmFtZT0iKiovKi4qIiAvPgorCQkJCTxleGNsdWRlIG5hbWU9IioqLyouamF2YSIgLz4KKwkJCTwvZmlsZXNldD4KKwkJPC9jb3B5PgorCQk8Y29weSBmaWxlPSJMSUNFTlNFIiB0b2ZpbGU9IiR7bWFpbi5vdXQuZGlyfS9NRVRBLUlORi9MSUNFTlNFIiBvdmVyd3JpdGU9InRydWUiIC8+CisJCTxjb3B5IGZpbGU9Ik5PVElDRSIgdG9maWxlPSIke21haW4ub3V0LmRpcn0vTUVUQS1JTkYvTk9USUNFIiBvdmVyd3JpdGU9InRydWUiIC8+CisJPC90YXJnZXQ+CisJCisJPHRhcmdldCBuYW1lPSJjb21waWxlLm9ubHkubm9jaGVjayI+CisJCTxlY2hvIG1lc3NhZ2U9IkNvbXBpbGUgbWFpbiB0byAke21haW4ub3V0LmRpcn0iIC8+CisJCTxqYXZhYyBkZWJ1Zz0ib24iIGRlYnVnbGV2ZWw9ImxpbmVzLHZhcnMsc291cmNlIiBkZXN0ZGlyPSIke21haW4ub3V0LmRpcn0iIGluY2x1ZGVhbnRydW50aW1lPSJmYWxzZSIKKwkJCXNvdXJjZT0iMS42IiB0YXJnZXQ9IjEuNiI+CisJCQk8c3JjIHBhdGg9IiR7bWFpbi5zcmMuZGlyfSIgLz4KKwkJCTxjbGFzc3BhdGggcmVmaWQ9ImNvbXBpbGUuY2xhc3NwYXRoIiAvPgorCQkJPGNvbXBpbGVyYXJnIHZhbHVlPSItQW9wZW5qcGEubWV0YW1vZGVsPXRydWUiIC8+CisJCQk8IS0tIGNvbXBpbGVyYXJnIHZhbHVlPSItWGxpbnQ6ZGVwcmVjYXRpb24iLyAtLT4KKwkJPC9qYXZhYz4KKwkJPGNvcHkgdG9kaXI9IiR7bWFpbi5vdXQuZGlyfSI+CisJCQk8ZmlsZXNldCBkaXI9IiR7bWFpbi5zcmMuZGlyfSI+CisJCQkJPGluY2x1ZGUgbmFtZT0iKiovKi4qIiAvPgorCQkJCTxleGNsdWRlIG5hbWU9IioqLyouamF2YSIgLz4KKwkJCTwvZmlsZXNldD4KKwkJPC9jb3B5PgorCQk8Y29weSBmaWxlPSJMSUNFTlNFIiB0b2ZpbGU9IiR7bWFpbi5vdXQuZGlyfS9NRVRBLUlORi9MSUNFTlNFIiBvdmVyd3JpdGU9InRydWUiIC8+CisJCTxjb3B5IGZpbGU9Ik5PVElDRSIgdG9maWxlPSIke21haW4ub3V0LmRpcn0vTUVUQS1JTkYvTk9USUNFIiBvdmVyd3JpdGU9InRydWUiIC8+CisJPC90YXJnZXQ+CisKKwk8cGF0aCBpZD0ianBhLmVuaGFuY2VtZW50LmNsYXNzcGF0aCI+CisJCTxwYXRoZWxlbWVudCBwYXRoPSIke21haW4ub3V0LmRpcn0iIC8+CisJCTxwYXRoIHJlZmlkPSJjb21waWxlLmNsYXNzcGF0aCIgLz4KKwk8L3BhdGg+CisKKwk8dGFyZ2V0IG5hbWU9ImVuaGFuY2UiIGRlcGVuZHM9ImNvbXBpbGUsIGVuaGFuY2Uub25seSIgLz4KKworCTx0YXJnZXQgbmFtZT0iZW5oYW5jZS5vbmx5IiBkZXBlbmRzPSJjb21waWxlLm9ubHkiPgorCQk8IS0tIGRlZmluZSB0aGUgb3BlbmpwYWMgdGFzayAtLT4KKwkJPHRhc2tkZWYgbmFtZT0ib3BlbmpwYWMiIGNsYXNzbmFtZT0ib3JnLmFwYWNoZS5vcGVuanBhLmFudC5QQ0VuaGFuY2VyVGFzayI+CisJCQk8Y2xhc3NwYXRoIHJlZmlkPSJqcGEuZW5oYW5jZW1lbnQuY2xhc3NwYXRoIiAvPgorCQk8L3Rhc2tkZWY+CisKKwkJPCEtLSBpbnZva2UgdGhlIGVuaGFuY2VyIC0tPgorCQk8b3BlbmpwYWM+CisJCQk8Y2xhc3NwYXRoIHJlZmlkPSJqcGEuZW5oYW5jZW1lbnQuY2xhc3NwYXRoIiAvPgorCQkJPGNvbmZpZyBwcm9wZXJ0aWVzRmlsZT0iJHtkaXN0LnBlcnNpc3RlbmNlLmRpcn0vJHtkYn1fcGVyc2lzdGVuY2UueG1sIiAvPgorCQk8L29wZW5qcGFjPgorCQk8ZWNobyBtZXNzYWdlPSJFbmhhbmNpbmcgY29tcGxldGUuIiAvPgorCTwvdGFyZ2V0PgorCQorCTx0YXJnZXQgbmFtZT0iZW5oYW5jZS5vbmx5Lm5vcmVmcmVzaCIgZGVwZW5kcz0iY29tcGlsZS5vbmx5Lm5vY2hlY2siPgorCQk8IS0tIGRlZmluZSB0aGUgb3BlbmpwYWMgdGFzayAtLT4KKwkJPHRhc2tkZWYgbmFtZT0ib3BlbmpwYWMiIGNsYXNzbmFtZT0ib3JnLmFwYWNoZS5vcGVuanBhLmFudC5QQ0VuaGFuY2VyVGFzayI+CisJCQk8Y2xhc3NwYXRoIHJlZmlkPSJqcGEuZW5oYW5jZW1lbnQuY2xhc3NwYXRoIiAvPgorCQk8L3Rhc2tkZWY+CisKKwkJPCEtLSBpbnZva2UgdGhlIGVuaGFuY2VyIC0tPgorCQk8b3BlbmpwYWM+CisJCQk8Y2xhc3NwYXRoIHJlZmlkPSJqcGEuZW5oYW5jZW1lbnQuY2xhc3NwYXRoIiAvPgorCQkJPGNvbmZpZyBwcm9wZXJ0aWVzRmlsZT0iJHtkaXN0LnBlcnNpc3RlbmNlLmRpcn0vJHtkYn1fcGVyc2lzdGVuY2UueG1sIiAvPgorCQk8L29wZW5qcGFjPgorCQk8ZWNobyBtZXNzYWdlPSJFbmhhbmNpbmcgY29tcGxldGUuIiAvPgorCTwvdGFyZ2V0PgorCisJPHBhdGggaWQ9InN2bnRhc2suY2xhc3NwYXRoIj4KKwkJPGZpbGVzZXQgZGlyPSIke3N2bnRhc2subGliLmRpcn0iIGluY2x1ZGVzPSIqLmphciIgLz4KKwk8L3BhdGg+CisJPHRhcmdldCBuYW1lPSItYW50LXRhc2siIGRlcGVuZHM9Ii1yZXRyaWV2ZS1zdm50YXNrIj4KKwkJPHR5cGVkZWYgcmVzb3VyY2U9Im9yZy90aWdyaXMvc3VidmVyc2lvbi9zdm5hbnQvc3ZuYW50bGliLnhtbCI+CisJCQk8Y2xhc3NwYXRoPgorCQkJCTxwYXRoIHJlZmlkPSJzdm50YXNrLmNsYXNzcGF0aCIgLz4KKwkJCTwvY2xhc3NwYXRoPgorCQk8L3R5cGVkZWY+CisJCTxzdm5TZXR0aW5nIHN2bmtpdD0iZmFsc2UiIGphdmFobD0iZmFsc2UiIGlkPSJzdm4uc2V0dGluZ3MiIC8+CisJCTwhLS0gbmF0aXZlIHN2biBpbiB0aGUgcGF0aC0tPgorCTwvdGFyZ2V0PgorCTx0YXJnZXQgbmFtZT0iY3VycmVudF9yZXZpc2lvbiIgZGVwZW5kcz0iLWFudC10YXNrIiB1bmxlc3M9InN2bi5pbmZvLnJldiI+CisJCTxzdm4gcmVmaWQ9InN2bi5zZXR0aW5ncyI+CisJCQk8aW5mbyB0YXJnZXQ9Ii4iIC8+CisJCTwvc3ZuPgorCQk8ZWNobz5DdXJyZW50IHJldmlzaW9uOiAke3N2bi5pbmZvLnJldn08L2VjaG8+CisJPC90YXJnZXQ+CisKKwk8IS0tIEJ1aWxkIGVudGlyZSBwcm9qZWN0IC0tPgorCTx0YXJnZXQgbmFtZT0iYnVpbGQgcHJvamVjdCIgZGVwZW5kcz0iY2xlYW4sIHByZXBhcmUsIGNvbXBpbGUiIC8+CisKKwk8cGF0aCBpZD0iY2hlY2sucmF0LmNsYXNzcGF0aCI+CisJCTxmaWxlc2V0IGRpcj0iJHtyYXQubGliLmRpcn0iIGluY2x1ZGVzPSIqLmphciIgLz4KKwk8L3BhdGg+CisJPHBhdGggaWQ9InJhdC5jbGFzc3BhdGgiPgorCQk8cGF0aCByZWZpZD0iY29tcGlsZS5jbGFzc3BhdGgiIC8+CisJCTxwYXRoIHJlZmlkPSJjaGVjay5yYXQuY2xhc3NwYXRoIiAvPgorCTwvcGF0aD4KKwk8dGFyZ2V0IG5hbWU9InJlcG9ydF9yYXQiIGRlcGVuZHM9Ii1yZXRyaWV2ZS1yYXQiPgorCQk8IS0tIGRlZmluZSB0aGUgUkFUIHRhc2sgLS0+CisJCTx0YXNrZGVmIHVyaT0iYW50bGliOm9yZy5hcGFjaGUucmF0LmFudHRhc2tzIiByZXNvdXJjZT0ib3JnL2FwYWNoZS9yYXQvYW50dGFza3MvYW50bGliLnhtbCI+CisJCQk8Y2xhc3NwYXRoPgorCQkJCTxwYXRoIHJlZmlkPSJyYXQuY2xhc3NwYXRoIiAvPgorCQkJPC9jbGFzc3BhdGg+CisJCTwvdGFza2RlZj4KKworCQk8cmF0OnJlcG9ydD4KKwkJCTxmaWxlc2V0IGRpcj0iJHttYWluLnNyYy5kaXJ9IiAvPgorCQkJPGZpbGVzZXQgZGlyPSIke3dlYmNvbnRlbnQuc3JjLmRpcn0iIGV4Y2x1ZGVzPSIqKi8qLnN3ZiIgLz4KKwkJCTxmaWxlc2V0IGRpcj0iJHtkb2NzLnNyY30iIC8+CisJCTwvcmF0OnJlcG9ydD4KKwk8L3RhcmdldD4KKworCTxwYXRoIGlkPSJidWlsZC53ZWJzZXJ2aWNlLmNsYXNzcGF0aCI+CisJCTxwYXRoZWxlbWVudCBwYXRoPSIke21haW4ub3V0LmRpcn0iIC8+CisJCTxwYXRoIHJlZmlkPSJjb21waWxlLmNsYXNzcGF0aCIgLz4KKwk8L3BhdGg+CisKKwk8dGFyZ2V0IG5hbWU9ImJ1aWxkLndlYnNlcnZpY2UuZG9jIiBkZXBlbmRzPSJjb21waWxlLm9ubHksIGJ1aWxkLm9ubHkud2Vic2VydmljZS5kb2MiLz4KKworCTxwYXR0ZXJuc2V0IGlkPSJpbWFnZXMiPgorCQk8aW5jbHVkZSBuYW1lPSIqKi8qLmdpZiIgLz4KKwkJPGluY2x1ZGUgbmFtZT0iKiovKi5qcGVnIiAvPgorCQk8aW5jbHVkZSBuYW1lPSIqKi8qLmpwZyIgLz4KKwkJPGluY2x1ZGUgbmFtZT0iKiovKi5wbmciIC8+CisJPC9wYXR0ZXJuc2V0PgorCTxwYXR0ZXJuc2V0IGlkPSJjc3MiPgorCQk8aW5jbHVkZSBuYW1lPSIqKi8qLmNzcyIgLz4KKwkJPGluY2x1ZGUgbmFtZT0iKiovKi5naWYiIC8+CisJCTxpbmNsdWRlIG5hbWU9IioqLyoucG5nIiAvPgorCTwvcGF0dGVybnNldD4KKworCTwhLS0gQW5ha2lhIEJ1aWxkIGNsYXNzcGF0aCAtLT4KKwk8cGF0aCBpZD0iY2hlY2suYW5ha2lhLmNsYXNzcGF0aCI+CisJCTxmaWxlc2V0IGRpcj0iJHthbmFraWEubGliLmRpcn0iIGluY2x1ZGVzPSIqLmphciIgLz4KKwkJPGZpbGVzZXQgZGlyPSIke21haW5saWJzLmxpYi5kaXJ9IiBpbmNsdWRlcz0iY29tbW9ucy1jb2xsZWN0aW9ucyouamFyLGNvbW1vbnMtbGFuZyouamFyLHZlbG9jaXR5Ki5qYXIiIC8+CisJPC9wYXRoPgorCQorCTxwYXRoIGlkPSJhbmFraWEuY2xhc3NwYXRoIj4KKwkJPHBhdGggcmVmaWQ9ImNvbXBpbGUuY2xhc3NwYXRoIiAvPgorCQk8cGF0aCByZWZpZD0iY2hlY2suYW5ha2lhLmNsYXNzcGF0aCIgLz4KKwk8L3BhdGg+CisKKwk8dGFyZ2V0IG5hbWU9ImFuYWtpYSIgZGVwZW5kcz0iLXJldHJpZXZlLW1haW5saWJzLC1yZXRyaWV2ZS1vbSwtcmV0cmlldmUtYW5ha2lhIj4KKwkJPHRhc2tkZWYgbmFtZT0iYW5ha2lhIiBjbGFzc25hbWU9Im9yZy5hcGFjaGUudmVsb2NpdHkuYW5ha2lhLkFuYWtpYVRhc2siPgorCQkJPGNsYXNzcGF0aD4KKwkJCQk8cGF0aCByZWZpZD0iYW5ha2lhLmNsYXNzcGF0aCIgLz4KKwkJCTwvY2xhc3NwYXRoPgorCQk8L3Rhc2tkZWY+CisKKwkJPHhzbHQgaW49IiR7d2ViY29udGVudC5zcmMuZGlyfS9sYW5ndWFnZXMvZXJyb3J2YWx1ZXMueG1sIiBvdXQ9IiR7ZG9jcy5zcmN9L0Vycm9yc1RhYmxlLnhtbCIgc3R5bGU9IiR7ZG9jcy5zcmN9L3N0eWxlc2hlZXRzL2Vycm9ydGFibGUueHNsIiAvPgorCQk8YW5ha2lhIGJhc2VkaXI9IiR7ZG9jcy5zcmN9IiBkZXN0ZGlyPSIke2RvY3MuZGVzdH0vIiBleHRlbnNpb249Ii5odG1sIiBzdHlsZT0iLi9zaXRlLnZzbCIgcHJvamVjdEZpbGU9InN0eWxlc2hlZXRzL3Byb2plY3QueG1sIiBleGNsdWRlcz0iKiovc3R5bGVzaGVldHMvKiogZW1wdHkueG1sIiBpbmNsdWRlcz0iKiovKi54bWwiIGxhc3RNb2RpZmllZENoZWNrPSJ0cnVlIiB0ZW1wbGF0ZVBhdGg9Inhkb2NzL3N0eWxlc2hlZXRzIiB2ZWxvY2l0eVByb3BlcnRpZXNGaWxlPSIke2J1aWxkLmJhc2UuZGlyfS92ZWxvY2l0eS5wcm9wZXJ0aWVzIiAvPgorCQk8Y29weSB0b2Rpcj0iJHtkb2NzLmRlc3R9L2ltYWdlcyI+CisJCQk8ZmlsZXNldCBkaXI9IiR7ZG9jcy5zcmN9L2ltYWdlcyI+CisJCQkJPHBhdHRlcm5zZXQgcmVmaWQ9ImltYWdlcyIgLz4KKwkJCTwvZmlsZXNldD4KKwkJPC9jb3B5PgorCisJCTxjb3B5IHRvZGlyPSIke2RvY3MuZGVzdH0vY3NzIj4KKwkJCTxmaWxlc2V0IGRpcj0iJHtkb2NzLnNyY30vY3NzIj4KKwkJCQk8cGF0dGVybnNldCByZWZpZD0iY3NzIiAvPgorCQkJPC9maWxlc2V0PgorCQk8L2NvcHk+CisJPC90YXJnZXQ+CisKKwk8dGFyZ2V0IG5hbWU9ImJ1aWxkLm9ubHkud2Vic2VydmljZS5kb2MiIGRlcGVuZHM9ImFuYWtpYSI+CisJCTxqYXZhZG9jIGNsYXNzcGF0aHJlZj0iYnVpbGQud2Vic2VydmljZS5jbGFzc3BhdGgiIHVzZWV4dGVybmFsZmlsZT0idHJ1ZSI+CisJCQk8ZmlsZXNldCBkaXI9InNyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9heGlzL3NlcnZpY2VzIj4KKwkJCQk8aW5jbHVkZSBuYW1lPSIqV2ViU2VydmljZS5qYXZhIiAvPgorCQkJCTxleGNsdWRlIG5hbWU9IkJhc2VXZWJTZXJ2aWNlLmphdmEiIC8+CisJCQk8L2ZpbGVzZXQ+CisJCQk8ZG9jbGV0IG5hbWU9Im9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRvYy5XZWJTZXJ2aWNlRG9jbGV0IiBwYXRocmVmPSJidWlsZC53ZWJzZXJ2aWNlLmNsYXNzcGF0aCIgLz4KKwkJPC9qYXZhZG9jPgorCisJCTxjb3B5IHRvZGlyPSIke2Rpc3Qud2ViYXBwcy5kaXJ9L2RvY3MiPgorCQkJPGZpbGVzZXQgZGlyPSIke2Jhc2VkaXJ9L2RvY3MvIj4KKwkJCQk8aW5jbHVkZSBuYW1lPSIqLmh0bWwiIC8+CisJCQkJPGluY2x1ZGUgbmFtZT0iKi5jc3MiIC8+CisJCQk8L2ZpbGVzZXQ+CisJCTwvY29weT4KKwkJPGNvcHkgdG9kaXI9IiR7ZGlzdC53ZWJhcHBzLmRpcn0vZG9jcy9pbWFnZXMiPgorCQkJPGZpbGVzZXQgZGlyPSIke2Jhc2VkaXJ9L2RvY3MvaW1hZ2VzLyI+CisJCQkJPHBhdHRlcm5zZXQgcmVmaWQ9ImltYWdlcyIgLz4KKwkJCTwvZmlsZXNldD4KKwkJPC9jb3B5PgorCQk8Y29weSB0b2Rpcj0iJHtkaXN0LndlYmFwcHMuZGlyfS9kb2NzL2NzcyI+CisJCQk8ZmlsZXNldCBkaXI9IiR7YmFzZWRpcn0vZG9jcy9jc3MvIj4KKwkJCQk8cGF0dGVybnNldCByZWZpZD0iY3NzIiAvPgorCQkJPC9maWxlc2V0PgorCQk8L2NvcHk+CisJCTxjb3B5IHRvZGlyPSIke2Rpc3Qud2ViYXBwcy5kaXJ9L2RvY3MvanMiPgorCQkJPGZpbGVzZXQgZGlyPSIke2Jhc2VkaXJ9L2RvY3MvanMvIj4KKwkJCQk8aW5jbHVkZSBuYW1lPSIqKi8qLmpzIiAvPgorCQkJPC9maWxlc2V0PgorCQk8L2NvcHk+CisJPC90YXJnZXQ+CisKKwk8IS0tIFVuaXQgVGVzdHMgLS0+CisJPHByb3BlcnR5IG5hbWU9Im9tLmRpc3Qud2ViYXBwIiB2YWx1ZT0iJHtyZWQ1LnJvb3R9L3dlYmFwcHMvJHtwcm9qZWN0LmRpc3RuYW1lfSIgLz4KKworCTxjb25kaXRpb24gcHJvcGVydHk9Imp1bml0LnRlc3QucGF0dGVybiIgdmFsdWU9IiR7dGVzdGNhc2VzfSIgZWxzZT0iVGVzdCoiPgorCQk8aXNzZXQgcHJvcGVydHk9InRlc3RjYXNlcyIgLz4KKwk8L2NvbmRpdGlvbj4KKworCTxjb25kaXRpb24gcHJvcGVydHk9Imp1bml0LnRlc3QuZm9ybWF0dGVyIiB2YWx1ZT0iJHt0ZXN0LmZvcm1hdHRlcn0iIGVsc2U9InhtbCI+CisJCTxpc3NldCBwcm9wZXJ0eT0idGVzdC5mb3JtYXR0ZXIiIC8+CisJPC9jb25kaXRpb24+CisKKwk8cGF0aCBpZD0ianVuaXQuY2xhc3NwYXRoIj4KKwkJPGZpbGVzZXQgZGlyPSIke2p1bml0LmxpYi5kaXJ9IiBpbmNsdWRlcz0iKi5qYXIiIC8+CisJCTxmaWxlc2V0IGRpcj0iJHtvbS5kaXN0LndlYmFwcH0vV0VCLUlORi9saWIiPgorCQkJPGluY2x1ZGUgbmFtZT0iKi5qYXIiIC8+CisJCQk8ZXhjbHVkZSBuYW1lPSJvcGVubWVldGluZ3MqLmphciIgLz4KKwkJPC9maWxlc2V0PgorCQk8ZmlsZXNldCBkaXI9IiR7cmVkNS5yb290fSIgaW5jbHVkZXM9IiouamFyIiAvPgorCQk8ZmlsZXNldCBkaXI9IiR7cmVkNS5yb290fS9saWIiIGluY2x1ZGVzPSIqLmphciIgLz4KKwkJPGZpbGVzZXQgZGlyPSIke3JlZDUucm9vdH0vcGx1Z2lucyIgaW5jbHVkZXM9IiouamFyIiAvPgorCQk8cGF0aGVsZW1lbnQgcGF0aD0iJHtvbS5kaXN0LndlYmFwcH0vV0VCLUlORiIgLz4KKwkJPHBhdGhlbGVtZW50IHBhdGg9IiR7b20uZGlzdC53ZWJhcHB9L1dFQi1JTkYvY2xhc3NlcyIgLz4KKwkJPHBhdGhlbGVtZW50IHBhdGg9IiR7bWFpbi5vdXQuZGlyfSIgLz4KKwk8L3BhdGg+CisJPHRhcmdldCBuYW1lPSJ0ZXN0IiBkZXBlbmRzPSItZGlzdC10ZXN0LW5vLWNsZWFuIiBkZXNjcmlwdGlvbj0iV2lsbCBydW4gYWxsIHRlc3RzIHVubGVzcyAtRHRlc3RjYXNlcz1fZmlsZV9uYW1lX3BhdHRlcm5fIHdpbGwgYmUgcGFzc2VkIj4KKwkJPHRhc2tkZWYgcmVzb3VyY2U9Im5ldC9zZi9hbnRjb250cmliL2FudGxpYi54bWwiPgorCQkJPGNsYXNzcGF0aCByZWZpZD0ianVuaXQuY2xhc3NwYXRoIiAvPgorCQk8L3Rhc2tkZWY+CisJCTxmb3IgbGlzdD0iJHtiYWNrdXAuZmlsZS5saXN0fSIgcGFyYW09InByb3AiPgorCQkJPHNlcXVlbnRpYWw+CisJCQkJPGlmPgorCQkJCQk8bm90PgorCQkJCQkJPGF2YWlsYWJsZSBmaWxlPSIke2p1bml0LmJhY2t1cHMuZGlyfS9Ae3Byb3B9IiB0eXBlPSJmaWxlIiAvPgorCQkJCQk8L25vdD4KKwkJCQkJPHRoZW4+CisJCQkJCQk8ZWNobyBtZXNzYWdlPSJCYWNrdXAgZmlsZSBAe3Byb3B9IGRvZXMgbm90IGV4aXN0cy4gRG93bmxvYWRpbmcgLi4uIiAvPgorCQkJCQkJPGdldCBzcmM9Imh0dHA6Ly9vcGVubWVldGluZ3MuZ29vZ2xlY29kZS5jb20vc3ZuL3JlcG9zaXRvcnkvQHtwcm9wfSIgZGVzdD0iJHtqdW5pdC5iYWNrdXBzLmRpcn0iIHVzZXRpbWVzdGFtcD0idHJ1ZSIvPgorCQkJCQk8L3RoZW4+CisJCQkJPC9pZj4KKwkJCTwvc2VxdWVudGlhbD4KKwkJPC9mb3I+CisJCTxta2RpciBkaXI9IiR7anVuaXQucmVwb3J0LmRpcn0iIC8+CisJCTwhLS0gcHJvcGVydHkgbmFtZT0ibXljbHNwIiByZWZpZD0ianVuaXQuY2xhc3NwYXRoIiAvPgorCQk8ZWNobyBtZXNzYWdlPSIke215Y2xzcH0iIC8tLT4KKwkJPGp1bml0IG1heG1lbW9yeT0iMTAyNG0iIHByaW50c3VtbWFyeT0ieWVzIiBkaXI9IiR7anVuaXQuYmFzZS5kaXJ9IiB0ZW1wZGlyPSIke2p1bml0LmJhc2UuZGlyfSIgZm9yaz0ieWVzIiBmb3JrbW9kZT0icGVyQmF0Y2giPgorCQkJPGNsYXNzcGF0aCByZWZpZD0ianVuaXQuY2xhc3NwYXRoIiAvPgorCQkJPGp2bWFyZyB2YWx1ZT0iLURvbS5ob21lPSR7YmFzZWRpcn0vJHtvbS5kaXN0LndlYmFwcH0iIC8+CisJCQk8anZtYXJnIHZhbHVlPSItRHJlZDUucm9vdD0ke3JlZDUucm9vdH0iIC8+CisJCQk8anZtYXJnIHZhbHVlPSItRGJhc2VkaXI9JHtiYXNlZGlyfSIgLz4KKwkJCTxqdm1hcmcgdmFsdWU9Ii1EcmVkNS5jb25maWdfcm9vdD0ke3JlZDUucm9vdH0vY29uZiIgLz4KKwkJCTxqdm1hcmcgdmFsdWU9Ii1EYmFja3Vwcy5kaXI9JHtqdW5pdC5iYWNrdXBzLmRpcn0iIC8+CisJCQk8Zm9ybWF0dGVyIHR5cGU9IiR7anVuaXQudGVzdC5mb3JtYXR0ZXJ9IiAvPgorCQkJPGJhdGNodGVzdCB0b2Rpcj0iJHtqdW5pdC5yZXBvcnQuZGlyfSI+CisJCQkJPGZpbGVzZXQgZGlyPSIke21haW4ub3V0LmRpcn0iPgorCQkJCQk8aW5jbHVkZSBuYW1lPSJvcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0LyoqLyR7anVuaXQudGVzdC5wYXR0ZXJufS5jbGFzcyIgLz4KKwkJCQkJPGV4Y2x1ZGUgbmFtZT0iKiovKiQkKi5jbGFzcyIgLz4KKwkJCQk8L2ZpbGVzZXQ+CisJCQk8L2JhdGNodGVzdD4KKwkJPC9qdW5pdD4KKwkJPGp1bml0cmVwb3J0IHRvZGlyPSIke2p1bml0LnJlcG9ydC5kaXJ9Ij4KKwkJCTxmaWxlc2V0IGRpcj0iJHtqdW5pdC5yZXBvcnQuZGlyfSI+CisJCQkJPGluY2x1ZGUgbmFtZT0iVEVTVC0qLnhtbCIgLz4KKwkJCTwvZmlsZXNldD4KKwkJCTxyZXBvcnQgdG9kaXI9IiR7anVuaXQucmVwb3J0LmRpcn0iIC8+CisJCTwvanVuaXRyZXBvcnQ+CisJPC90YXJnZXQ+CisJPHRhcmdldCBuYW1lPSJzbW9rZS50ZXN0IiBkZXBlbmRzPSJkaXN0IiBkZXNjcmlwdGlvbj0iV2lsbCBydW4gJ1Ntb2tlJyBzdWJzZXQgb2YgdGVzdHMiPgorCQk8YW50Y2FsbCB0YXJnZXQ9InRlc3QiPgorCQkJPHBhcmFtIG5hbWU9Imp1bml0LnRlc3QucGF0dGVybiIgdmFsdWU9IlRlc3RTbW9rZSoiIC8+CisJCTwvYW50Y2FsbD4KKwk8L3RhcmdldD4KKworCTx0YXJnZXQgbmFtZT0iLWNoZWNrLWl2eS1pbnN0YWxsZWQiPgorCQk8YXZhaWxhYmxlIGZpbGU9IiR7aXZ5Lmphci5wYXRofSIgdHlwZT0iZmlsZSIgcHJvcGVydHk9Iml2eS5pbnN0YWxsZWQiIC8+CisJPC90YXJnZXQ+CisJPHRhcmdldCBuYW1lPSItZG93bmxvYWQtaXZ5IiBkZXBlbmRzPSItY2hlY2staXZ5LWluc3RhbGxlZCIgdW5sZXNzPSJpdnkuaW5zdGFsbGVkIj4KKwkJPG1rZGlyIGRpcj0iJHtwcm9qZWN0LmxpYi5kaXJ9Ii8+CisJCTxlY2hvIG1lc3NhZ2U9IkRvd25sb2FkaW5nIGl2eS4uLiIvPgorCQk8Z2V0IHNyYz0iaHR0cDovL3JlcG8xLm1hdmVuLm9yZy9tYXZlbjIvb3JnL2FwYWNoZS9pdnkvaXZ5LyR7aXZ5Lmluc3RhbGwudmVyc2lvbn0vaXZ5LSR7aXZ5Lmluc3RhbGwudmVyc2lvbn0uamFyIgorCQkJZGVzdD0iJHtpdnkuamFyLnBhdGh9IiB1c2V0aW1lc3RhbXA9InRydWUiLz4KKwk8L3RhcmdldD4KKwkKKwk8dGFyZ2V0IG5hbWU9Ii1pbnN0YWxsLWl2eSIgZGVwZW5kcz0iLWRvd25sb2FkLWl2eSIgZGVzY3JpcHRpb249IkNoZWNrIGlmIHdlIG5lZWQgdG8gZG93bmxvYWQgaXZ5IG9yIG5vdCI+CisJCTx0YXNrZGVmIHJlc291cmNlPSJvcmcvYXBhY2hlL2l2eS9hbnQvYW50bGliLnhtbCIgdXJpPSJhbnRsaWI6b3JnLmFwYWNoZS5pdnkuYW50IiBjbGFzc3BhdGg9IiR7aXZ5Lmphci5wYXRofSIvPgorCTwvdGFyZ2V0PgorCQorCTx0YXJnZXQgbmFtZT0iLWF2YWlsYWJpbGl0eS1jaGVjayIgdW5sZXNzPSJyZWQ1Lmluc3RhbGxlZCIgZGVzY3JpcHRpb249IkNoZWNrIHdoaWNoIGxpYnJhcmllcyBuZWVkIHRvIGJlIHJldHJpZXZlZCIgZGVwZW5kcz0icHJlcGFyZS5ta2RpciI+CisJCTxhdmFpbGFibGUgY2xhc3NwYXRocmVmPSJjaGVjay5jbGFzc3BhdGgiIGNsYXNzbmFtZT0iamF2YXgucGVyc2lzdGVuY2Uuc3BpLlBlcnNpc3RlbmNlUHJvdmlkZXIiIHByb3BlcnR5PSJtYWlubGliLmluc3RhbGxlZCIgLz4KKwkJPGF2YWlsYWJsZSBjbGFzc3BhdGhyZWY9ImNoZWNrLmNsYXNzcGF0aCIgY2xhc3NuYW1lPSJvcmcuYXBhY2hlLmF4aXMyLlZlcnNpb24iIHByb3BlcnR5PSJvbS5pbnN0YWxsZWQiIC8+CisJCTxhdmFpbGFibGUgY2xhc3NwYXRocmVmPSJjaGVjay5jbGFzc3BhdGgiIGNsYXNzbmFtZT0ib3JnLmp1bml0LlRlc3QiIHByb3BlcnR5PSJqdW5pdC5pbnN0YWxsZWQiIC8+CisJCTxhdmFpbGFibGUgY2xhc3NwYXRocmVmPSJjaGVjay5jbGFzc3BhdGgiIGNsYXNzbmFtZT0iY29tLnRoYWlvcGVuc291cmNlLnJlbGF4bmcudHJhbnNsYXRlLkRyaXZlciIgcHJvcGVydHk9ImR0ZC1nZW5lcmF0b3IuaW5zdGFsbGVkIiAvPgorCQk8YXZhaWxhYmxlIGNsYXNzcGF0aHJlZj0iY2hlY2suY2xhc3NwYXRoIiBjbGFzc25hbWU9Im9yZy5hcGFjaGUuY29tbW9ucy5jbGkuQ29tbWFuZExpbmUiIHByb3BlcnR5PSJjbWRhZG1pbi5pbnN0YWxsZWQiIC8+CisJCTxjb25kaXRpb24gcHJvcGVydHk9ImFuYWtpYS5pbnN0YWxsZWQiPgorCQkJPGFuZD4KKwkJCQk8YXZhaWxhYmxlIGNsYXNzcGF0aHJlZj0iY2hlY2suYW5ha2lhLmNsYXNzcGF0aCIgY2xhc3NuYW1lPSJvcmcuYXBhY2hlLm9yby50ZXh0Lkdsb2JDb21waWxlciIgLz4KKwkJCQk8YXZhaWxhYmxlIGNsYXNzcGF0aHJlZj0iY2hlY2suYW5ha2lhLmNsYXNzcGF0aCIgY2xhc3NuYW1lPSJvcmcuamRvbS5KRE9NRXhjZXB0aW9uIiAvPgorCQkJPC9hbmQ+CisJCTwvY29uZGl0aW9uPiAKKwkJPGF2YWlsYWJsZSBjbGFzc3BhdGhyZWY9ImNoZWNrLmFuYWtpYS5jbGFzc3BhdGgiIGNsYXNzbmFtZT0ib3JnLmFwYWNoZS5vcm8udGV4dC5HbG9iQ29tcGlsZXIiIHByb3BlcnR5PSJhbmFraWEuaW5zdGFsbGVkIiAvPgorCQk8YXZhaWxhYmxlIGNsYXNzcGF0aHJlZj0iY2hlY2sucmF0LmNsYXNzcGF0aCIgY2xhc3NuYW1lPSJvcmcuYXBhY2hlLnJhdC5SZXBvcnQiIHByb3BlcnR5PSJyYXQuaW5zdGFsbGVkIiAvPgorCQk8YXZhaWxhYmxlIGNsYXNzcGF0aHJlZj0ic3ZudGFzay5jbGFzc3BhdGgiIGNsYXNzbmFtZT0ib3JnLnRtYXRlc29mdC5zdm4uY29yZS5TVk5Db21taXRJbmZvIiBwcm9wZXJ0eT0ic3ZudGFzay5pbnN0YWxsZWQiIC8+CisJCTxhdmFpbGFibGUgY2xhc3NwYXRocmVmPSJjaGVjay5jbGFzc3BhdGgiIGNsYXNzbmFtZT0iY29tLm15c3FsLmpkYmMuRHJpdmVyIiBwcm9wZXJ0eT0ibXlzcWwuaW5zdGFsbGVkIiAvPgorCQk8YXZhaWxhYmxlIGNsYXNzcGF0aHJlZj0iY2hlY2suY2xhc3NwYXRoIiBjbGFzc25hbWU9Im9yZy5hcGFjaGUuZGVyYnkuamRiYy5DbGllbnREcml2ZXIiIHByb3BlcnR5PSJkZXJieS5pbnN0YWxsZWQiIC8+CisJCTxhdmFpbGFibGUgZmlsZT0iJHtsYXN6bG8uaG9tZX0vV0VCLUlORi9saWIiIHR5cGU9ImRpciIgcHJvcGVydHk9Imxhc3psby5pbnN0YWxsZWQiIC8+CisJCTxhdmFpbGFibGUgZmlsZT0iJHtsYXN6bG80Ni5ob21lfS9XRUItSU5GL2xpYiIgdHlwZT0iZGlyIiBwcm9wZXJ0eT0ibGFzemxvNDYuaW5zdGFsbGVkIiAvPgorCQk8YXZhaWxhYmxlIGZpbGU9IiR7cmVkNS5saWJ9L3JlZDUuc2giIHR5cGU9ImZpbGUiIHByb3BlcnR5PSJyZWQ1Lmluc3RhbGxlZCIgLz4KKwkJPGF2YWlsYWJsZSBjbGFzc3BhdGhyZWY9ImNoZWNrLmNsYXNzcGF0aCIgY2xhc3NuYW1lPSJvcmcucmVkNS5jbGllbnQubmV0LnJ0bXAuUlRNUENsaWVudCIgcHJvcGVydHk9InJlZDUuY2xpZW50Lmluc3RhbGxlZCIgLz4KKwk8L3RhcmdldD4KKworCTx0YXJnZXQgbmFtZT0iLXJldHJpZXZlIiBkZXBlbmRzPSItaW5zdGFsbC1pdnkiIGRlc2NyaXB0aW9uPSJSZXRyaWV2ZXMgdGhlIGxpYnJhcmllcyBpZiBuZWVkZWQiPgorCQk8Y29uZGl0aW9uIHByb3BlcnR5PSJpdnkuY29uZi5uYW1lIiB2YWx1ZT0icmVkNSI+CisJCQk8bm90PgorCQkJCTxpc3NldCBwcm9wZXJ0eT0iaXZ5LmNvbmYubmFtZSIgLz4KKwkJCTwvbm90PgorCQk8L2NvbmRpdGlvbj4KKwkJPGNvbmRpdGlvbiBwcm9wZXJ0eT0iaXZ5LmxpYi5sb2NhdGlvbiIgdmFsdWU9IiR7bWFpbmxpYnMubGliLmRpcn0iPgorCQkJPG5vdD4KKwkJCQk8aXNzZXQgcHJvcGVydHk9Iml2eS5saWIubG9jYXRpb24iIC8+CisJCQk8L25vdD4KKwkJPC9jb25kaXRpb24+CisJCTxjb25kaXRpb24gcHJvcGVydHk9Iml2eS50cmFuc2l0aXZlIiB2YWx1ZT0iZmFsc2UiPgorCQkJPG5vdD4KKwkJCQk8aXNzZXQgcHJvcGVydHk9Iml2eS50cmFuc2l0aXZlIiAvPgorCQkJPC9ub3Q+CisJCTwvY29uZGl0aW9uPgorCQk8ZWNobyBtZXNzYWdlPSJJdnkgY29uZiBuYW1lOiAke2l2eS5jb25mLm5hbWV9LCBkZXN0aW5hdGlvbjogJHtpdnkubGliLmxvY2F0aW9ufSIgLz4KKwkJPGl2eTpyZXNvbHZlIGZpbGU9Iml2eS54bWwiIGNvbmY9IiR7aXZ5LmNvbmYubmFtZX0iIGNoZWNrSWZDaGFuZ2VkPSJmYWxzZSIgdHJhbnNpdGl2ZT0iJHtpdnkudHJhbnNpdGl2ZX0iIC8+CisJCTxpdnk6cmV0cmlldmUgY29uZj0iJHtpdnkuY29uZi5uYW1lfSIgcGF0dGVybj0iJHtpdnkubGliLmxvY2F0aW9ufS9bYXJ0aWZhY3RdLVt0eXBlXS1bcmV2aXNpb25dLltleHRdIiAvPgorCTwvdGFyZ2V0PgorCQorCTx0YXJnZXQgbmFtZT0iLXBhdGNoLXJlZDUtc2VydmVyLXN0YXJ0LXNjcmlwdCIgaWY9ImpyZWJlbC5ob21lIj4KKwkJPGVjaG8+R29pbmcgdG8gcGF0Y2ggcmVkNS1kZWJ1Zy4qIHdpdGggJHtqcmViZWwuaG9tZX08L2VjaG8+CisJCTxmaWx0ZXIgdG9rZW49ImpyZWJlbC5ob21lIiB2YWx1ZT0iJHtqcmViZWwuaG9tZX0iIC8+CisJCTxmaWx0ZXIgdG9rZW49InByb2plY3QuaG9tZSIgdmFsdWU9IiR7dXNlci5kaXJ9IiAvPgorCQk8Y29weSB0b2Rpcj0iJHtyZWQ1LmxpYn0iIGZpbHRlcmluZz0idHJ1ZSIgb3ZlcndyaXRlPSJ0cnVlIiBmb3JjZT0idHJ1ZSI+CisJCQk8ZmlsZXNldCBkaXI9IiR7d2ViY29udGVudC5zcmMuZGlyfS9qcmViZWwiIGluY2x1ZGVzPSJyZWQ1LWRlYnVnLioiLz4KKwkJPC9jb3B5PgorCTwvdGFyZ2V0PgorCTx0YXJnZXQgbmFtZT0iLXBhdGNoLXJlZDUtc2VydmVyLWhpZ2hwZXJmLXNjcmlwdCI+CisJCTxlY2hvPkdvaW5nIHRvIHBhdGNoIHJlZDUtaGlnaHBlcmYuYmF0PC9lY2hvPgorCQk8Y29weSB0b2Rpcj0iJHtyZWQ1LmxpYn0iIG92ZXJ3cml0ZT0idHJ1ZSIgZm9yY2U9InRydWUiPgorCQkJPGZpbGVzZXQgZGlyPSIke3dlYmNvbnRlbnQuc3JjLmRpcn0vcmVkNSIgaW5jbHVkZXM9InJlZDUtaGlnaHBlcmYuYmF0IiAvPgorCQk8L2NvcHk+CisJPC90YXJnZXQ+CisJCisJPCEtLSBDaGVjayBmb3IgdGhlIFJlZDUgc2VydmVyIGxpYnJhcmllcyAtLT4KKwk8dGFyZ2V0IG5hbWU9Ii1yZXRyaWV2ZS1yZWQ1LXNlcnZlciIgdW5sZXNzPSJyZWQ1Lmluc3RhbGxlZCIgZGVzY3JpcHRpb249IlJldHJpZXZlcyB0aGUgbGlicmFyaWVzIGlmIG5lZWRlZCIgZGVwZW5kcz0iLWFudC10YXNrIj4KKwkJPHN2biByZWZpZD0ic3ZuLnNldHRpbmdzIj4KKwkJCTxjaGVja291dCB1cmw9Imh0dHA6Ly9yZWQ1Lmdvb2dsZWNvZGUuY29tL3N2bi9qYXZhL3NlcnZlci90cnVuay8iIHJldmlzaW9uPSIke3JlZDUuc2VydmVyLnJldmlzaW9ufSIgZGVzdFBhdGg9IiR7cmVkNS5zZXJ2ZXIuZGlyfSIgLz4KKwkJPC9zdm4+CisJCTwhLS0gU1RBUlQgb2YgVG9tY2F0IDcgcGF0Y2ggLS0+CisJCTxkZWxldGU+CisJCQk8ZmlsZXNldCBkaXI9IiR7cmVkNS5zZXJ2ZXIuZGlyfS9wbHVnaW5zIiBpbmNsdWRlcz0iKi5qYXIiIC8+CisJCTwvZGVsZXRlPgorCQk8YW50Y2FsbCB0YXJnZXQ9Ii1yZXRyaWV2ZSIgaW5oZXJpdEFsbD0idHJ1ZSIgaW5oZXJpdFJlZnM9InRydWUiPgorCQkJPHBhcmFtIG5hbWU9Iml2eS5jb25mLm5hbWUiIHZhbHVlPSJ0b21jYXQ3IiAvPgorCQkJPHBhcmFtIG5hbWU9Iml2eS5saWIubG9jYXRpb24iIHZhbHVlPSIke3JlZDUuc2VydmVyLmRpcn0vcGx1Z2lucyIgLz4KKwkJPC9hbnRjYWxsPgorCQk8IS0tIEVORCBvZiBUb21jYXQgNyBwYXRjaCAtLT4KKwkJPHhzbHQgaW49IiR7cmVkNS5zZXJ2ZXIuZGlyfS9pdnkueG1sIiBvdXQ9IiR7cmVkNS5zZXJ2ZXIuZGlyfS9pdnkxLnhtbCIgc3R5bGU9ImJ1aWxkLXJlZDVfaXZ5LnhzbCIgLz4KKwkJPG1vdmUgZmlsZT0iJHtyZWQ1LnNlcnZlci5kaXJ9L2l2eTEueG1sIiB0b2ZpbGU9IiR7cmVkNS5zZXJ2ZXIuZGlyfS9pdnkueG1sIiAvPgorCQk8eHNsdCBpbj0iJHtyZWQ1LnNlcnZlci5kaXJ9L2l2eXNldHRpbmdzLnhtbCIgb3V0PSIke3JlZDUuc2VydmVyLmRpcn0vaXZ5c2V0dGluZ3MxLnhtbCIgc3R5bGU9ImJ1aWxkLXJlZDVfaXZ5c2V0dGluZ3MueHNsIiAvPgorCQk8bW92ZSBmaWxlPSIke3JlZDUuc2VydmVyLmRpcn0vaXZ5c2V0dGluZ3MxLnhtbCIgdG9maWxlPSIke3JlZDUuc2VydmVyLmRpcn0vaXZ5c2V0dGluZ3MueG1sIiAvPgorCQk8c3ViYW50IHRhcmdldD0iZGlzdCI+CisJCQk8ZmlsZXNldCBkaXI9IiR7cmVkNS5zZXJ2ZXIuZGlyfSIgaW5jbHVkZXM9ImJ1aWxkLnhtbCIgLz4KKwkJPC9zdWJhbnQ+CisJCTwhLS0gU1RBUlQgb2YgVG9tY2F0IDcgcGF0Y2ggLS0+CisJCTxkZWxldGUgZmlsZT0iJHtyZWQ1LmxpYn0vbGliL2phdmFlZS1hcGktNS4xLjIuamFyIiAvPgorCQk8IS0tIEVORCBvZiBUb21jYXQgNyBwYXRjaCAtLT4KKwkJPGRlbGV0ZSBkaXI9IiR7cmVkNS5saWJ9L3dlYmFwcHMvaW5zdGFsbGVyIiAvPgorCQk8ZGVsZXRlIGRpcj0iJHtyZWQ1LmxpYn0vd2ViYXBwcy9saXZlIiAvPgorCQk8ZGVsZXRlIGRpcj0iJHtyZWQ1LmxpYn0vd2ViYXBwcy92b2QiIC8+CisJCTxjb3B5IHRvZGlyPSIke3JlZDUubGlifS9jb25mIiBvdmVyd3JpdGU9InRydWUiIGZvcmNlPSJ0cnVlIj4KKwkJCTxmaWxlc2V0IGRpcj0iJHt3ZWJjb250ZW50LnNyYy5kaXJ9L3JlZDUiIGluY2x1ZGVzPSJqZWUtY29udGFpbmVyKi54bWwiIC8+CisJCTwvY29weT4KKwkJPGNvcHkgZmlsZT0iJHtyZWQ1LnNlcnZlci5kaXJ9L3NyYy9jb25mL3JlZDUucHJvcGVydGllcyIgdG9kaXI9IiR7cmVkNS5saWJ9L2NvbmYiIG92ZXJ3cml0ZT0idHJ1ZSIgZm9yY2U9InRydWUiPgorCQkJPGZpbHRlcmNoYWluPgorCQkJCTx0b2tlbmZpbHRlcj4KKwkJCQkJPHJlcGxhY2VyZWdleCBwYXR0ZXJuPSJeWyBcdF0qcnRtcHQudGFyZ2V0X3JlcG9uc2Vfc2l6ZVsgXHRdKj0uKiQiIHJlcGxhY2U9InJ0bXB0LnRhcmdldF9yZXBvbnNlX3NpemU9NjU1MzYiLz4KKwkJCQk8L3Rva2VuZmlsdGVyPgorCQkJPC9maWx0ZXJjaGFpbj4KKwkJPC9jb3B5PgorCQk8Y29weSBmaWxlPSIke3dlYmNvbnRlbnQuc3JjLmRpcn0vcmVkNS9pbmRleC5odG1sIiB0b2Rpcj0iJHtyZWQ1LmxpYn0vd2ViYXBwcy9yb290IiBvdmVyd3JpdGU9InRydWUiIGZvcmNlPSJ0cnVlIiAvPgorCQk8Y29weSB0b2Rpcj0iJHtyZWQ1LmxpYn0iIG92ZXJ3cml0ZT0idHJ1ZSIgZm9yY2U9InRydWUiPgorCQkJPGZpbGVzZXQgZGlyPSIke3dlYmNvbnRlbnQuc3JjLmRpcn0vcmVkNSIgaW5jbHVkZXM9ImFkbWluLiosbmV0d29ya190ZXN0LnNoIiAvPgorCQk8L2NvcHk+CisJCTwhLS0gRklYTUUgbmVlZCB0byBiZSByZW1vdmVkIGFzIHNvb24gYXMgSkF1ZGlvVGFnZ2VyICh3aWxsIGJlIG9mZmljaWFsbHkgRHVhbCBMaWNlbnNlZCkgLS0+CisJCTx4c2x0IGluPSIke3JlZDUubGlifS9jb25mL3JlZDUtY29tbW9uLnhtbCIgb3V0PSIke3JlZDUubGlifS9jb25mL3JlZDUtY29tbW9uMS54bWwiIHN0eWxlPSJidWlsZC1qYXVkaW90YWdnZXIueHNsIiAvPgorCQk8bW92ZSBmaWxlPSIke3JlZDUubGlifS9jb25mL3JlZDUtY29tbW9uMS54bWwiIHRvZmlsZT0iJHtyZWQ1LmxpYn0vY29uZi9yZWQ1LWNvbW1vbi54bWwiIC8+CisJCTxkZWxldGU+CisJCQk8ZmlsZXNldCBkaXI9IiR7cmVkNS5zZXJ2ZXIubGlifSIgaW5jbHVkZXM9ImphdWRpb3RhZ2dlciouamFyIiAvPgorCQk8L2RlbGV0ZT4KKwkJPGFudGNhbGwgdGFyZ2V0PSItcGF0Y2gtcmVkNS1zZXJ2ZXItc3RhcnQtc2NyaXB0Ii8+IAorCQk8YW50Y2FsbCB0YXJnZXQ9Ii1wYXRjaC1yZWQ1LXNlcnZlci1oaWdocGVyZi1zY3JpcHQiLz4gCisJPC90YXJnZXQ+CisJCisJPCEtLSBDaGVjayBmb3IgdGhlIFJlZDUgY2xpZW50IGxpYnJhcmllcyAtLT4KKwk8dGFyZ2V0IG5hbWU9Ii1yZXRyaWV2ZS1yZWQ1LWNsaWVudCIgdW5sZXNzPSJyZWQ1LmNsaWVudC5pbnN0YWxsZWQiIGRlc2NyaXB0aW9uPSJSZXRyaWV2ZXMgdGhlIGxpYnJhcmllcyBpZiBuZWVkZWQiIGRlcGVuZHM9Ii1yZXRyaWV2ZS1yZWQ1LXNlcnZlciI+CisJCTxzdm4gcmVmaWQ9InN2bi5zZXR0aW5ncyI+CisJCQk8Y2hlY2tvdXQgdXJsPSJodHRwOi8vcmVkNS5nb29nbGVjb2RlLmNvbS9zdm4vamF2YS9jbGllbnQvdHJ1bmsvIiByZXZpc2lvbj0iJHtyZWQ1LmNsaWVudC5yZXZpc2lvbn0iIGRlc3RQYXRoPSIke3JlZDUuY2xpZW50LmRpcn0iIC8+CisJCTwvc3ZuPgorCQk8Y29weSBmaWxlPSIke3JlZDUubGlifS9yZWQ1LmphciIgdG9kaXI9IiR7cmVkNS5jbGllbnQuZGlyfS9saWIiIG92ZXJ3cml0ZT0idHJ1ZSIgZm9yY2U9InRydWUiIC8+CisJCTx4c2x0IGluPSIke3JlZDUuY2xpZW50LmRpcn0vaXZ5LnhtbCIgb3V0PSIke3JlZDUuY2xpZW50LmRpcn0vaXZ5MS54bWwiIHN0eWxlPSJidWlsZC1yZWQ1X2l2eS54c2wiIC8+CisJCTxtb3ZlIGZpbGU9IiR7cmVkNS5jbGllbnQuZGlyfS9pdnkxLnhtbCIgdG9maWxlPSIke3JlZDUuY2xpZW50LmRpcn0vaXZ5LnhtbCIgLz4KKwkJPHN1YmFudCB0YXJnZXQ9ImRpc3QiPgorCQkJPGZpbGVzZXQgZGlyPSIke3JlZDUuY2xpZW50LmRpcn0iIGluY2x1ZGVzPSJidWlsZC54bWwiIC8+CisJCTwvc3ViYW50PgorCQk8IS0tIFNUQVJUIG9mIFRvbWNhdCA3IHBhdGNoIC0tPgorCQk8ZGVsZXRlIGZpbGU9IiR7cmVkNS5jbGllbnQubGlifS9saWIvamF2YWVlLWFwaS01LjEuMi5qYXIiIC8+CisJCTwhLS0gRU5EIG9mIFRvbWNhdCA3IHBhdGNoIC0tPgorCQk8ZWNobyBtZXNzYWdlPSJSZWQ1IENsaWVudCBidWlsZCIgLz4KKwk8L3RhcmdldD4KKworCTwhLS0gQ2hlY2sgZm9yIHRoZSBUb3AgbGV2ZWwgbGlicmFyaWVzIC0tPgorCTx0YXJnZXQgbmFtZT0iLXJldHJpZXZlLW1haW5saWJzIiB1bmxlc3M9Im1haW5saWIuaW5zdGFsbGVkIiBkZXNjcmlwdGlvbj0iUmV0cmlldmVzIHRoZSBsaWJyYXJpZXMgaWYgbmVlZGVkIiBkZXBlbmRzPSItcmV0cmlldmUtcmVkNS1jbGllbnQiPgorCQk8IS0tIEl2eSBjb25maWd1cmF0aW9uIC0gaHR0cDovL2FudC5hcGFjaGUub3JnL2l2eS9oaXN0b3J5L3RydW5rL2FudC5odG1sIC0tPgorCQk8YW50Y2FsbCB0YXJnZXQ9Ii1yZXRyaWV2ZSIgaW5oZXJpdEFsbD0idHJ1ZSIgaW5oZXJpdFJlZnM9InRydWUiPgorCQkJPHBhcmFtIG5hbWU9Iml2eS5jb25mLm5hbWUiIHZhbHVlPSJtYWlubGliIiAvPgorCQkJPHBhcmFtIG5hbWU9Iml2eS5saWIubG9jYXRpb24iIHZhbHVlPSIke21haW5saWJzLmxpYi5kaXJ9IiAvPgorCQk8L2FudGNhbGw+CisJCTxhbnRjYWxsIHRhcmdldD0iLXJldHJpZXZlIiBpbmhlcml0QWxsPSJ0cnVlIiBpbmhlcml0UmVmcz0idHJ1ZSI+CisJCQk8cGFyYW0gbmFtZT0iaXZ5LmNvbmYubmFtZSIgdmFsdWU9Im1haW5saWIuZXh0IiAvPgorCQkJPHBhcmFtIG5hbWU9Iml2eS5saWIubG9jYXRpb24iIHZhbHVlPSIke21haW5saWJzLmxpYi5kaXJ9IiAvPgorCQk8L2FudGNhbGw+CisJCTxkZWxldGU+CisJCQk8ZmlsZXNldCBkaXI9IiR7bWFpbmxpYnMubGliLmRpcn0iIGluY2x1ZGVzPSIqLXNvdXJjZSouamFyIiAvPgorCQkJPGZpbGVzZXQgZGlyPSIke21haW5saWJzLmxpYi5kaXJ9IiBpbmNsdWRlcz0iKi1qYXZhZG9jKi5qYXIiIC8+CisJCTwvZGVsZXRlPgorCTwvdGFyZ2V0PgorCTwhLS0gQ2hlY2sgZm9yIHRoZSBPTSBsaWJyYXJpZXMgLS0+CisJPHRhcmdldCBuYW1lPSItcmV0cmlldmUtb20iIHVubGVzcz0ib20uaW5zdGFsbGVkIiBkZXNjcmlwdGlvbj0iUmV0cmlldmVzIHRoZSBsaWJyYXJpZXMgaWYgbmVlZGVkIiBkZXBlbmRzPSItYXZhaWxhYmlsaXR5LWNoZWNrIj4KKwkJPGFudGNhbGwgdGFyZ2V0PSItcmV0cmlldmUiIGluaGVyaXRBbGw9InRydWUiIGluaGVyaXRSZWZzPSJ0cnVlIj4KKwkJCTxwYXJhbSBuYW1lPSJpdnkuY29uZi5uYW1lIiB2YWx1ZT0ib3Blbm1lZXRpbmdzIiAvPgorCQkJPHBhcmFtIG5hbWU9Iml2eS5saWIubG9jYXRpb24iIHZhbHVlPSIke29tLmxpYi5kaXJ9IiAvPgorCQk8L2FudGNhbGw+CisJCTxhbnRjYWxsIHRhcmdldD0iLXJldHJpZXZlIiBpbmhlcml0QWxsPSJ0cnVlIiBpbmhlcml0UmVmcz0idHJ1ZSI+CisJCQk8cGFyYW0gbmFtZT0iaXZ5LmNvbmYubmFtZSIgdmFsdWU9Im9wZW5tZWV0aW5ncy5leHQiIC8+CisJCQk8cGFyYW0gbmFtZT0iaXZ5LmxpYi5sb2NhdGlvbiIgdmFsdWU9IiR7b20ubGliLmRpcn0iIC8+CisJCTwvYW50Y2FsbD4KKwkJPGFudGNhbGwgdGFyZ2V0PSItcmV0cmlldmUiIGluaGVyaXRBbGw9InRydWUiIGluaGVyaXRSZWZzPSJ0cnVlIj4KKwkJCTxwYXJhbSBuYW1lPSJpdnkuY29uZi5uYW1lIiB2YWx1ZT0ib3Blbm1lZXRpbmdzLmF4aXMyIiAvPgorCQkJPHBhcmFtIG5hbWU9Iml2eS5saWIubG9jYXRpb24iIHZhbHVlPSIke29tLmxpYi5kaXJ9IiAvPgorCQkJPHBhcmFtIG5hbWU9Iml2eS50cmFuc2l0aXZlIiB2YWx1ZT0idHJ1ZSIgLz4KKwkJPC9hbnRjYWxsPgorCQk8ZGVsZXRlPgorCQkJPGZpbGVzZXQgZGlyPSIke29tLmxpYi5kaXJ9IiBpbmNsdWRlcz0iY29tbW9ucy1sb2dnaW5nKi5qYXIiIC8+CisJCQk8ZmlsZXNldCBkaXI9IiR7b20ubGliLmRpcn0iIGluY2x1ZGVzPSJjb21tb25zLWNvZGVjKi5qYXIiIC8+CisJCQk8ZmlsZXNldCBkaXI9IiR7b20ubGliLmRpcn0iIGluY2x1ZGVzPSJjb21tb25zLWZpbGV1cGxvYWQqLmphciIgLz4KKwkJCTxmaWxlc2V0IGRpcj0iJHtvbS5saWIuZGlyfSIgaW5jbHVkZXM9ImNvbW1vbnMtaW8qLmphciIgLz4KKwkJCTxmaWxlc2V0IGRpcj0iJHtvbS5saWIuZGlyfSIgaW5jbHVkZXM9Imh0dHBjb3JlLWphciouamFyIiAvPgorCQkJPGZpbGVzZXQgZGlyPSIke29tLmxpYi5kaXJ9IiBpbmNsdWRlcz0iaHR0cGNsaWVudC1qYXIqLmphciIgLz4KKwkJCTxmaWxlc2V0IGRpcj0iJHtvbS5saWIuZGlyfSIgaW5jbHVkZXM9InNsZjRqLWFwaSouamFyIiAvPgorCQkJPGZpbGVzZXQgZGlyPSIke29tLmxpYi5kaXJ9IiBpbmNsdWRlcz0iKi1zb3VyY2UqLmphciIgLz4KKwkJCTxmaWxlc2V0IGRpcj0iJHtvbS5saWIuZGlyfSIgaW5jbHVkZXM9IiotamF2YWRvYyouamFyIiAvPgorCQk8L2RlbGV0ZT4KKwk8L3RhcmdldD4KKwk8IS0tIENoZWNrIGZvciB0aGUgQW5ha2lhIGxpYnJhcmllcyAtLT4KKwk8dGFyZ2V0IG5hbWU9Ii1yZXRyaWV2ZS1hbmFraWEiIHVubGVzcz0iYW5ha2lhLmluc3RhbGxlZCIgZGVzY3JpcHRpb249IlJldHJpZXZlcyB0aGUgbGlicmFyaWVzIGlmIG5lZWRlZCIgZGVwZW5kcz0iLXJldHJpZXZlLW1haW5saWJzIj4KKwkJPGFudGNhbGwgdGFyZ2V0PSItcmV0cmlldmUiIGluaGVyaXRBbGw9InRydWUiIGluaGVyaXRSZWZzPSJ0cnVlIj4KKwkJCTxwYXJhbSBuYW1lPSJpdnkuY29uZi5uYW1lIiB2YWx1ZT0iYW5ha2lhIiAvPgorCQkJPHBhcmFtIG5hbWU9Iml2eS5saWIubG9jYXRpb24iIHZhbHVlPSIke2FuYWtpYS5saWIuZGlyfSIgLz4KKwkJPC9hbnRjYWxsPgorCTwvdGFyZ2V0PgorCTwhLS0gQ2hlY2sgZm9yIGp1bml0IGxpYnJhcmllcyAtLT4KKwk8dGFyZ2V0IG5hbWU9Ii1yZXRyaWV2ZS1qdW5pdCIgdW5sZXNzPSJqdW5pdC5pbnN0YWxsZWQiIGRlc2NyaXB0aW9uPSJSZXRyaWV2ZXMgdGhlIGxpYnJhcmllcyBpZiBuZWVkZWQiIGRlcGVuZHM9Ii1hdmFpbGFiaWxpdHktY2hlY2siPgorCQk8YW50Y2FsbCB0YXJnZXQ9Ii1yZXRyaWV2ZSIgaW5oZXJpdEFsbD0idHJ1ZSIgaW5oZXJpdFJlZnM9InRydWUiPgorCQkJPHBhcmFtIG5hbWU9Iml2eS5jb25mLm5hbWUiIHZhbHVlPSJqdW5pdCIgLz4KKwkJCTxwYXJhbSBuYW1lPSJpdnkubGliLmxvY2F0aW9uIiB2YWx1ZT0iJHtqdW5pdC5saWIuZGlyfSIgLz4KKwkJPC9hbnRjYWxsPgorCTwvdGFyZ2V0PgorCTwhLS0gQ2hlY2sgZm9yIHJhdCBsaWJyYXJpZXMgLS0+CisJPHRhcmdldCBuYW1lPSItcmV0cmlldmUtcmF0IiB1bmxlc3M9InJhdC5pbnN0YWxsZWQiIGRlc2NyaXB0aW9uPSJSZXRyaWV2ZXMgdGhlIGxpYnJhcmllcyBpZiBuZWVkZWQiIGRlcGVuZHM9Ii1hdmFpbGFiaWxpdHktY2hlY2siPgorCQk8YW50Y2FsbCB0YXJnZXQ9Ii1yZXRyaWV2ZSIgaW5oZXJpdEFsbD0idHJ1ZSIgaW5oZXJpdFJlZnM9InRydWUiPgorCQkJPHBhcmFtIG5hbWU9Iml2eS5jb25mLm5hbWUiIHZhbHVlPSJyYXQiIC8+CisJCQk8cGFyYW0gbmFtZT0iaXZ5LmxpYi5sb2NhdGlvbiIgdmFsdWU9IiR7cmF0LmxpYi5kaXJ9IiAvPgorCQk8L2FudGNhbGw+CisJPC90YXJnZXQ+CisJPCEtLSBDaGVjayBmb3IgZHRkLWdlbmVyYXRvciBsaWJyYXJpZXMgLS0+CisJPHRhcmdldCBuYW1lPSItcmV0cmlldmUtZHRkLWdlbmVyYXRvciIgdW5sZXNzPSJkdGQtZ2VuZXJhdG9yLmluc3RhbGxlZCIgZGVzY3JpcHRpb249IlJldHJpZXZlcyB0aGUgbGlicmFyaWVzIGlmIG5lZWRlZCIgZGVwZW5kcz0iLWF2YWlsYWJpbGl0eS1jaGVjayI+CisJCTxhbnRjYWxsIHRhcmdldD0iLXJldHJpZXZlIiBpbmhlcml0QWxsPSJ0cnVlIiBpbmhlcml0UmVmcz0idHJ1ZSI+CisJCQk8cGFyYW0gbmFtZT0iaXZ5LmNvbmYubmFtZSIgdmFsdWU9ImR0ZCIgLz4KKwkJCTxwYXJhbSBuYW1lPSJpdnkubGliLmxvY2F0aW9uIiB2YWx1ZT0iJHtkdGQtZ2VuZXJhdG9yLmxpYi5kaXJ9IiAvPgorCQk8L2FudGNhbGw+CisJPC90YXJnZXQ+CisJPCEtLSBDaGVjayBmb3Igc3ZudGFzayBsaWJyYXJpZXMgLS0+CisJPHRhcmdldCBuYW1lPSItcmV0cmlldmUtc3ZudGFzayIgdW5sZXNzPSJzdm50YXNrLmluc3RhbGxlZCIgZGVzY3JpcHRpb249IlJldHJpZXZlcyB0aGUgbGlicmFyaWVzIGlmIG5lZWRlZCIgZGVwZW5kcz0iLWF2YWlsYWJpbGl0eS1jaGVjayI+CisJCTxhbnRjYWxsIHRhcmdldD0iLXJldHJpZXZlIiBpbmhlcml0QWxsPSJ0cnVlIiBpbmhlcml0UmVmcz0idHJ1ZSI+CisJCQk8cGFyYW0gbmFtZT0iaXZ5LmNvbmYubmFtZSIgdmFsdWU9InN2bnRhc2siIC8+CisJCQk8cGFyYW0gbmFtZT0iaXZ5LmxpYi5sb2NhdGlvbiIgdmFsdWU9IiR7c3ZudGFzay5saWIuZGlyfSIgLz4KKwkJCTxwYXJhbSBuYW1lPSJpdnkudHJhbnNpdGl2ZSIgdmFsdWU9InRydWUiIC8+CisJCTwvYW50Y2FsbD4KKwk8L3RhcmdldD4KKwk8IS0tIENoZWNrIGZvciBKREsgMS42IHRvb2xzLmphciBsaWJyYXJpZXMgLS0+CisJPHRhcmdldCBuYW1lPSItcmV0cmlldmUtdG9vbHMuamFyIiB1bmxlc3M9InRvb2xzLmphci5pbnN0YWxsZWQiIGRlc2NyaXB0aW9uPSJSZXRyaWV2ZXMgdGhlIGxpYnJhcmllcyBpZiBuZWVkZWQiPgorCQk8YXZhaWxhYmxlIGZpbGU9IiR7amF2YS5ob21lfS9DbGFzc2VzL2NsYXNzZXMuamFyIiB0eXBlPSJmaWxlIiBwcm9wZXJ0eT0idG9vbHMuamFyLnBhdGgiIHZhbHVlPSIke2phdmEuaG9tZX0vQ2xhc3Nlcy9jbGFzc2VzLmphciIgLz4KKwkJPGF2YWlsYWJsZSBmaWxlPSIke2phdmEuaG9tZX0vLi4vQ2xhc3Nlcy9jbGFzc2VzLmphciIgdHlwZT0iZmlsZSIgcHJvcGVydHk9InRvb2xzLmphci5wYXRoIiB2YWx1ZT0iJHtqYXZhLmhvbWV9Ly4uL0NsYXNzZXMvY2xhc3Nlcy5qYXIiIC8+CisJCTxhdmFpbGFibGUgZmlsZT0iJHtqYXZhLmhvbWV9L2xpYi90b29scy5qYXIiIHR5cGU9ImZpbGUiIHByb3BlcnR5PSJ0b29scy5qYXIucGF0aCIgdmFsdWU9IiR7amF2YS5ob21lfS9saWIvdG9vbHMuamFyIiAvPgorCQk8YXZhaWxhYmxlIGZpbGU9IiR7amF2YS5ob21lfS8uLi9saWIvdG9vbHMuamFyIiB0eXBlPSJmaWxlIiBwcm9wZXJ0eT0idG9vbHMuamFyLnBhdGgiIHZhbHVlPSIke2phdmEuaG9tZX0vLi4vbGliL3Rvb2xzLmphciIgLz4KKwkJPGF2YWlsYWJsZSBmaWxlPSIke3Rvb2xzLmphci5wYXRofSIgdHlwZT0iZmlsZSIgcHJvcGVydHk9InRvb2xzLmphci5pbnN0YWxsZWQiIC8+CisKKwkJPGNvcHkgZmlsZT0iJHt0b29scy5qYXIucGF0aH0iIHRvZmlsZT0iJHtwcm9qZWN0LmxpYi5kaXJ9L2phdmFfMTZfdG9vbHMuamFyIiAvPgorCTwvdGFyZ2V0PgorCTwhLS0gQ2hlY2sgZm9yIE9wZW5sYXN6bG8gLS0+CisJPHRhcmdldCBuYW1lPSItZXh0cmFjdC10Z3oiIGRlc2NyaXB0aW9uPSJFeHRyYWN0cyBnaXZlbiB0YXIgaW50byAke2J1aWxkLmJhc2UuZGlyfSBmb2xkZXIiPgorCQk8ZWNobyBtZXNzYWdlPSJHb2luZyB0byBleHRyYWN0ICR7ZGVwLmZpbGV9IHRvIHRoZSAke2J1aWxkLmJhc2UuZGlyfSIgLz4KKwkJPHVudGFyIHNyYz0iJHtkZXAuZmlsZX0iIGRlc3Q9IiR7YnVpbGQuYmFzZS5kaXJ9IiBjb21wcmVzc2lvbj0iZ3ppcCIgLz4KKwk8L3RhcmdldD4KKwk8dGFyZ2V0IG5hbWU9Ii1yZXRyaWV2ZS1vcGVubGFzemxvIiB1bmxlc3M9Imxhc3psby5pbnN0YWxsZWQiIGRlc2NyaXB0aW9uPSJSZXRyaWV2ZXMgdGhlIGxpYnJhcmllcyBpZiBuZWVkZWQiIGRlcGVuZHM9Ii1hdmFpbGFiaWxpdHktY2hlY2siPgorCQk8YW50Y2FsbCB0YXJnZXQ9Ii1yZXRyaWV2ZSIgaW5oZXJpdEFsbD0idHJ1ZSIgaW5oZXJpdFJlZnM9InRydWUiPgorCQkJPHBhcmFtIG5hbWU9Iml2eS5jb25mLm5hbWUiIHZhbHVlPSJvcGVubGFzemxvIiAvPgorCQkJPHBhcmFtIG5hbWU9Iml2eS5saWIubG9jYXRpb24iIHZhbHVlPSIke2xhc3psby5ob21lfSIgLz4KKwkJPC9hbnRjYWxsPgorCQk8ZGVsZXRlPgorCQkJPGZpbGVzZXQgZGlyPSIke2xhc3psby5ob21lfSIgaW5jbHVkZXM9Im9wZW5sYXN6bG8qLnRneiIvPgorCQk8L2RlbGV0ZT4KKwk8L3RhcmdldD4KKwk8dGFyZ2V0IG5hbWU9Ii1yZXRyaWV2ZS1vcGVubGFzemxvNDYiIHVubGVzcz0ibGFzemxvNDYuaW5zdGFsbGVkIiBkZXNjcmlwdGlvbj0iUmV0cmlldmVzIHRoZSBsaWJyYXJpZXMgaWYgbmVlZGVkIiBkZXBlbmRzPSItYXZhaWxhYmlsaXR5LWNoZWNrIj4KKwkJPGFudGNhbGwgdGFyZ2V0PSItcmV0cmlldmUiIGluaGVyaXRBbGw9InRydWUiIGluaGVyaXRSZWZzPSJ0cnVlIj4KKwkJCTxwYXJhbSBuYW1lPSJpdnkuY29uZi5uYW1lIiB2YWx1ZT0ib3Blbmxhc3psbzQ2IiAvPgorCQkJPHBhcmFtIG5hbWU9Iml2eS5saWIubG9jYXRpb24iIHZhbHVlPSIke2xhc3psbzQ2LmhvbWV9IiAvPgorCQk8L2FudGNhbGw+CisJCTxjaG1vZCBkaXI9IiR7bGFzemxvNDYuaG9tZX0vV0VCLUlORi9mbGV4c2RrIiBwZXJtPSI3NTUiIGluY2x1ZGVzPSIqKi9teG1sYyoiIC8+CisJCTxkZWxldGU+CisJCQk8ZmlsZXNldCBkaXI9IiR7bGFzemxvNDYuaG9tZX0iIGluY2x1ZGVzPSJvcGVubGFzemxvKi50Z3oiLz4KKwkJPC9kZWxldGU+CisJPC90YXJnZXQ+CisJPCEtLSBDaGVjayBmb3IgQ29tbWFuZCBsaW5lIGFkbWluIGRlcGFuZGVuY2llcyAtLT4KKwk8dGFyZ2V0IG5hbWU9Ii1yZXRyaWV2ZS1jbWRhZG1pbiIgdW5sZXNzPSJjbWRhZG1pbi5pbnN0YWxsZWQiIGRlc2NyaXB0aW9uPSJSZXRyaWV2ZXMgdGhlIGxpYnJhcmllcyBpZiBuZWVkZWQiIGRlcGVuZHM9Ii1hdmFpbGFiaWxpdHktY2hlY2siPgorCQk8YW50Y2FsbCB0YXJnZXQ9Ii1yZXRyaWV2ZSIgaW5oZXJpdEFsbD0idHJ1ZSIgaW5oZXJpdFJlZnM9InRydWUiPgorCQkJPHBhcmFtIG5hbWU9Iml2eS5jb25mLm5hbWUiIHZhbHVlPSJjbWRhZG1pbiIgLz4KKwkJCTxwYXJhbSBuYW1lPSJpdnkubGliLmxvY2F0aW9uIiB2YWx1ZT0iJHtyZWQ1LmxpYn0iIC8+CisJCTwvYW50Y2FsbD4KKwk8L3RhcmdldD4KKworCTx0YXJnZXQgbmFtZT0iLXJldHJpZXZlLWRiMiIgdW5sZXNzPSJkYjIuaW5zdGFsbGVkIiBkZXNjcmlwdGlvbj0iUmV0cmlldmVzIHRoZSBsaWJyYXJpZXMgaWYgbmVlZGVkIiBkZXBlbmRzPSItYXZhaWxhYmlsaXR5LWNoZWNrIj4KKwkJPCEtLSBlbXB0eSAtLT4KKwk8L3RhcmdldD4KKworCTx0YXJnZXQgbmFtZT0iLXJldHJpZXZlLWRlcmJ5IiB1bmxlc3M9ImRlcmJ5Lmluc3RhbGxlZCIgZGVzY3JpcHRpb249IlJldHJpZXZlcyB0aGUgbGlicmFyaWVzIGlmIG5lZWRlZCIgZGVwZW5kcz0iLWF2YWlsYWJpbGl0eS1jaGVjayI+CisJCTwhLS0gcmV0cmlldmVkIGF1dG9tYXRpY2FsbHksIGFkZGVkIGZvciBjb21wYXRpYmlsaXR5IC0tPgorCTwvdGFyZ2V0PgorCisJPHRhcmdldCBuYW1lPSItcmV0cmlldmUtbXlzcWwiIHVubGVzcz0ibXlzcWwuaW5zdGFsbGVkIiBkZXNjcmlwdGlvbj0iUmV0cmlldmVzIHRoZSBsaWJyYXJpZXMgaWYgbmVlZGVkIiBkZXBlbmRzPSItYXZhaWxhYmlsaXR5LWNoZWNrIj4KKwkJPGFudGNhbGwgdGFyZ2V0PSItcmV0cmlldmUiIGluaGVyaXRBbGw9InRydWUiIGluaGVyaXRSZWZzPSJ0cnVlIj4KKwkJCTxwYXJhbSBuYW1lPSJpdnkuY29uZi5uYW1lIiB2YWx1ZT0ibXlzcWwiIC8+CisJCQk8cGFyYW0gbmFtZT0iaXZ5LmxpYi5sb2NhdGlvbiIgdmFsdWU9IiR7b20ubGliLmRpcn0iIC8+CisJCTwvYW50Y2FsbD4KKwk8L3RhcmdldD4KKworCTx0YXJnZXQgbmFtZT0iLXJldHJpZXZlLW9yYWNsZSIgdW5sZXNzPSJvcmFjbGUuaW5zdGFsbGVkIiBkZXNjcmlwdGlvbj0iUmV0cmlldmVzIHRoZSBsaWJyYXJpZXMgaWYgbmVlZGVkIiBkZXBlbmRzPSItYXZhaWxhYmlsaXR5LWNoZWNrIj4KKwkJPCEtLSBlbXB0eSAtLT4KKwk8L3RhcmdldD4KKworCTx0YXJnZXQgbmFtZT0iLXJldHJpZXZlLXBvc3RncmVzIiB1bmxlc3M9InBvc3RncmVzLmluc3RhbGxlZCIgZGVzY3JpcHRpb249IlJldHJpZXZlcyB0aGUgbGlicmFyaWVzIGlmIG5lZWRlZCIgZGVwZW5kcz0iLWF2YWlsYWJpbGl0eS1jaGVjayI+CisJCTwhLS0gcmV0cmlldmVkIGF1dG9tYXRpY2FsbHksIGFkZGVkIGZvciBjb21wYXRpYmlsaXR5IC0tPgorCTwvdGFyZ2V0PgorCisJPHRhcmdldCBuYW1lPSItcHJvY2Vzcy1kYiIgZGVzY3JpcHRpb249InBlcmZvcm1zIERCIHJlbGF0ZWQgdGFza3MgYmFzZWQgb24gcGFzc2VkIERCIHR5cGUiPgorCQk8ZWNobyBtZXNzYWdlPSJkYi5wcm92aWRlciA9PSAke2RifSIgLz4KKwkJPGFudGNhbGwgdGFyZ2V0PSItcmV0cmlldmUtJHtkYn0iIGluaGVyaXRBbGw9InRydWUiIGluaGVyaXRSZWZzPSJ0cnVlIiAvPgorCQk8Y29weSBmaWxlPSJzcmMvTUVUQS1JTkYvJHtkYn1fcGVyc2lzdGVuY2UueG1sIiB0b2ZpbGU9InNyYy9NRVRBLUlORi9wZXJzaXN0ZW5jZS54bWwiIG92ZXJ3cml0ZT0idHJ1ZSIgLz4KKwk8L3RhcmdldD4KKworCTwhLS0gQ2xlYW4gdGFyZ2V0cyAtLT4KKwk8IS0tIFJlbW92ZSBjbGFzc2VzIGRpcmVjdG9yeSBmb3IgY2xlYW4gYnVpbGQgLS0+CisJPHRhcmdldCBuYW1lPSJjbGVhbi5jbGFzc2VzIiBkZXNjcmlwdGlvbj0iQ2xlYW4gQ2xhc3NlcyI+CisJCTxkZWxldGUgaW5jbHVkZWVtcHR5ZGlycz0idHJ1ZSIgZGlyPSIke21haW4ub3V0LmRpcn0iIC8+CisJPC90YXJnZXQ+CisKKwk8dGFyZ2V0IG5hbWU9ImNsZWFuLmRpc3QiIGRlc2NyaXB0aW9uPSJDbGVhbiBEaXN0IGRpciI+CisJCTxkZWxldGUgaW5jbHVkZWVtcHR5ZGlycz0idHJ1ZSIgZGlyPSIke2Rpc3QuZGlyfSIgLz4KKwk8L3RhcmdldD4KKworCTx0YXJnZXQgbmFtZT0iY2xlYW4iIGRlcGVuZHM9ImNsZWFuLmNsYXNzZXMsIGNsZWFuLmRpc3QiIGRlc2NyaXB0aW9uPSJDbGVhbiBGb3IgQmluYXJ5Ij4KKwkJPGRlbGV0ZSBpbmNsdWRlZW1wdHlkaXJzPSJ0cnVlIiBkaXI9IiR7anVuaXQuYmFzZS5kaXJ9IiAvPgorCQk8ZGVsZXRlIGZpbGU9IiR7a2V5c3RvcmUuZmlsZX0iIC8+CisJPC90YXJnZXQ+CisKKwk8dGFyZ2V0IG5hbWU9ImNsZWFuLmFsbCIgZGVwZW5kcz0iY2xlYW4uZGlzdCIgZGVzY3JpcHRpb249IkNsZWFuIEFsbCI+CisJCTxkZWxldGUgaW5jbHVkZWVtcHR5ZGlycz0idHJ1ZSIgZGlyPSIke2J1aWxkLmJhc2UuZGlyfSIgLz4KKwk8L3RhcmdldD4KKwkKKwk8dGFyZ2V0IG5hbWU9ImNsZWFuLml2eSIgZGVwZW5kcz0iY2xlYW4uYWxsLC1pbnN0YWxsLWl2eSIgZGVzY3JpcHRpb249IkNsZWFycyBvdXQgSXZ5IGNhY2hlIGFuZCBidWlsZCBmb2xkZXIiPgorCQk8aXZ5OmNsZWFuY2FjaGUgLz4KKwk8L3RhcmdldD4KKworCTx0YXJnZXQgbmFtZT0icHJlcGFyZS1lY2xpcHNlIiBpZj0iamF2YTYuaW5zdGFsbGVkIiBkZXNjcmlwdGlvbj0iTGF5b3V0IHZhcmlvdXMgZmlsZXMgbmVjZXNzYXJ5IGZvciBkZXZlbG9wbWVudCIgZGVwZW5kcz0iLWphdmE2b3I3LmNoZWNrIj4KKwkJPGFudGNhbGwgdGFyZ2V0PSItcmV0cmlldmUtbWFpbmxpYnMiIGluaGVyaXRBbGw9InRydWUiIGluaGVyaXRSZWZzPSJ0cnVlIiAvPgorCQk8YW50Y2FsbCB0YXJnZXQ9Ii1yZXRyaWV2ZS1vbSIgaW5oZXJpdEFsbD0idHJ1ZSIgaW5oZXJpdFJlZnM9InRydWUiIC8+CisJCTxhbnRjYWxsIHRhcmdldD0iLXJldHJpZXZlLWp1bml0IiBpbmhlcml0QWxsPSJ0cnVlIiBpbmhlcml0UmVmcz0idHJ1ZSIgLz4KKwkJPGFudGNhbGwgdGFyZ2V0PSItcmV0cmlldmUtZHRkLWdlbmVyYXRvciIgaW5oZXJpdEFsbD0idHJ1ZSIgaW5oZXJpdFJlZnM9InRydWUiIC8+CisJCTxhbnRjYWxsIHRhcmdldD0iLXJldHJpZXZlLXRvb2xzLmphciIgaW5oZXJpdEFsbD0idHJ1ZSIgaW5oZXJpdFJlZnM9InRydWUiIC8+CisJCTxhbnRjYWxsIHRhcmdldD0iLXJldHJpZXZlLW9wZW5sYXN6bG8iIGluaGVyaXRBbGw9InRydWUiIGluaGVyaXRSZWZzPSJ0cnVlIiAvPgorCQk8YW50Y2FsbCB0YXJnZXQ9Ii1yZXRyaWV2ZS1vcGVubGFzemxvNDYiIGluaGVyaXRBbGw9InRydWUiIGluaGVyaXRSZWZzPSJ0cnVlIiAvPgorCQk8YW50Y2FsbCB0YXJnZXQ9Ii1yZXRyaWV2ZS1jbWRhZG1pbiIgaW5oZXJpdEFsbD0idHJ1ZSIgaW5oZXJpdFJlZnM9InRydWUiIC8+CisJCTxhbnRjYWxsIHRhcmdldD0iLXByb2Nlc3MtZGIiIGluaGVyaXRBbGw9InRydWUiIGluaGVyaXRSZWZzPSJ0cnVlIiAvPgorCTwvdGFyZ2V0PgorCQorCTx0YXJnZXQgbmFtZT0iLWphdmE2b3I3LmNoZWNrIiB1bmxlc3M9ImphdmE2Lmluc3RhbGxlZCIgZGVwZW5kcz0iaW5mbyI+CisJCTxjb25kaXRpb24gcHJvcGVydHk9ImphdmE2Lmluc3RhbGxlZCIgdmFsdWU9InRydWUiPgorCQkJPGFuZD4KKwkJCQk8b3I+CisJCQkJCTxlcXVhbHMgYXJnMT0iJHtqYXZhLnNwZWNpZmljYXRpb24udmVyc2lvbn0iIGFyZzI9IjEuNiIgLz4KKwkJCQkJPGVxdWFscyBhcmcxPSIke2phdmEuc3BlY2lmaWNhdGlvbi52ZXJzaW9ufSIgYXJnMj0iMS43IiAvPgorCQkJCTwvb3I+CisJCQkJPG1hdGNoZXMgc3RyaW5nPSIke2phdmEudm0uc3BlY2lmaWNhdGlvbi52ZW5kb3J9IiBwYXR0ZXJuPSIuKltzdW4sb3JhY2xlXS4qIiBjYXNlc2Vuc2l0aXZlPSJmYWxzZSIgc2luZ2xlbGluZT0idHJ1ZSIgLz4KKwkJCTwvYW5kPgorCQk8L2NvbmRpdGlvbj4KKwkJPGVjaG8gbWVzc2FnZT0iVXNpbmcgSmF2YSAke2phdmEudmVyc2lvbn0gc3BlY2lmaWNhdGlvbjogJHtqYXZhLnNwZWNpZmljYXRpb24udmVyc2lvbn0iIC8+CisJCTxmYWlsIG1lc3NhZ2U9IlVuc3VwcG9ydGVkIEphdmEgdmVyc2lvbiAtIGRldGVjdGVkOiAke2phdmEudmVyc2lvbn0gT25seSBTdW4vT3JhY2xlIEphdmEgY29tcGlsZXIgdmVyc2lvbiA2IG9yIDcgc3VwcG9ydGVkLiI+CisJCQk8Y29uZGl0aW9uPgorCQkJCTxub3Q+CisJCQkJCTxlcXVhbHMgYXJnMT0iJHtqYXZhNi5pbnN0YWxsZWR9IiBhcmcyPSJ0cnVlIiAvPgorCQkJCTwvbm90PgorCQkJPC9jb25kaXRpb24+CisJCTwvZmFpbD4KKwk8L3RhcmdldD4KKwkKKwk8cGF0aCBpZD0ibG9hZHRlc3QuY2xhc3NwYXRoIj4KKwkJPGZpbGVzZXQgZGlyPSIke29tLmRpc3Qud2ViYXBwfS9zY3JlZW5zaGFyaW5nIj4KKwkJCTxpbmNsdWRlIG5hbWU9IiouamFyIiAvPgorCQkJPGV4Y2x1ZGUgbmFtZT0ib3Blbm1lZXRpbmdzKi5qYXIiIC8+CisJCTwvZmlsZXNldD4KKwkJPCEtLQorCQk8ZmlsZWxpc3Q+CisJCQk8ZmlsZSBuYW1lPSIke2Jhc2VkaXJ9L1dlYkNvbnRlbnQvc2NyZWVuc2hhcmluZy9sb2diYWNrLnhtbCIvPgorCQk8L2ZpbGVsaXN0PgorCQkgLS0+CisJCTxwYXRoZWxlbWVudCBwYXRoPSIke2Jhc2VkaXJ9L1dlYkNvbnRlbnQvc2NyZWVuc2hhcmluZyIgLz4KKwkJPHBhdGhlbGVtZW50IHBhdGg9IiR7bWFpbi5vdXQuZGlyfSIgLz4KKwk8L3BhdGg+CisJCisJPHByb3BlcnR5IG5hbWU9InJ1blRlc3RIb3N0IiB2YWx1ZT0iMTkyLjE2OC4xLjciIC8+CisJPHByb3BlcnR5IG5hbWU9Im51bWJlck9mQ2xpZW50IiB2YWx1ZT0iNTAiIC8+CisJPHByb3BlcnR5IG5hbWU9InJ1blRlc3RQb3J0IiB2YWx1ZT0iMTkzNSIgLz4KKwk8cHJvcGVydHkgbmFtZT0icnVuVGVzdENvbnRleHQiIHZhbHVlPSJvcGVubWVldGluZ3MvMSIgLz4KKwkKKwk8dGFyZ2V0IG5hbWU9ImRvUnVuQ2xpZW50VGVzdCI+CisJCTxwYXJhbGxlbD4KKwkJCTxqYXZhIGNsYXNzbmFtZT0ib3JnLmFwYWNoZS5vcGVubWVldGluZ3MudGVzdC5ydG1wLlNpbXVsYXRlTG9hZFRlc3QiPgorCQkJCTxhcmcgdmFsdWU9IiR7cnVuVGVzdEhvc3R9Ii8+CisJCQkJPGFyZyB2YWx1ZT0iJHtudW1iZXJPZkNsaWVudH0iLz4KKwkJCQk8Y2xhc3NwYXRoIHJlZmlkPSJsb2FkdGVzdC5jbGFzc3BhdGgiIC8+CisJCQk8L2phdmE+CisJCTwvcGFyYWxsZWw+CisJPC90YXJnZXQ+CisJCis8L3Byb2plY3Q+CmRpZmYgLS1naXQgYS9kb2NzL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwgYi9kb2NzL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzZlMDhlNgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvQXBhY2hlRGVyYnlDb25maWcuaHRtbApAQCAtMCwwICsxLDcxNyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CisKKzwhLS0KK0NvcHlyaWdodCAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK3lvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCitodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworCis8IS0tIENvbnRlbnQgU3R5bGVzaGVldCBmb3IgU2l0ZSAtLT4KKworICAgICAgICAKKzwhLS0gc3RhcnQgdGhlIHByb2Nlc3NpbmcgLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDwhLS0gR0VORVJBVEVEIEZJTEUsIERPIE5PVCBFRElULCBFRElUIFRIRSBYTUwgRklMRSBJTiB4ZG9jcyBJTlNURUFEISAtLT4KKyAgICA8IS0tIE1haW4gUGFnZSBTZWN0aW9uIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8aHRtbD4KKyAgICAgICAgPGhlYWQ+CisgICAgICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIvPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSIKKwkJCUFwYWNoZSBPcGVuTWVldGluZ3MgRG9jdW1lbnRhdGlvbiBUZWFtCisJCSI+CisgICAgICAgICAgICA8bWV0YSBuYW1lPSJlbWFpbCIgY29udGVudD0ic2ViYXdhZ25lckBhcGFjaGUub3JnIj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICA8dGl0bGU+QXBhY2hlIE9wZW5NZWV0aW5ncyAtIEFwYWNoZSBEZXJieSBDb25maWd1cmF0aW9uPC90aXRsZT4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9vcGVubWVldGluZ3MuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9qcXVlcnktdWkuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2luLXNsaWRlci1zdHlsZXMuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2xvcmJveC5jc3MiIC8+CisgICAgICAgICAgICAKKwkJCTwhLS0gQWRkIGpRdWVyeSBsaWJyYXJ5IC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LTEuNy4xLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPCEtLSBBZGQgY29pbnNsaWRlciBwbHVnaW5zIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvY29pbi1zbGlkZXIubWluLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPCEtLSBBZGQgY29sb3Jib3ggcGx1Z2luIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LmNvbG9yYm94LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmNvcmUuanMiPjwvc2NyaXB0PgorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS53aWRnZXQuanMiPjwvc2NyaXB0PgorCQkKKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkuYWNjb3JkaW9uLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdD4KKwkJCSQoZnVuY3Rpb24oKSB7CisJCQkJJCggIiNhY2NvcmRpb24iICkuYWNjb3JkaW9uKHsKKwkJCQkJYXV0b0hlaWdodDogZmFsc2UsCisJCQkJCW5hdmlnYXRpb246IHRydWUsCisJCQkJCW5hdmlnYXRpb25GaWx0ZXI6IGZ1bmN0aW9uICgpIHsKKwkJCQkJCXZhciBzaWRlYmFySHJlZkFycmF5ID0gdGhpcy5ocmVmLnNwbGl0KCIvIik7CisgICAgCQkJCQl2YXIgc2lkZUJhckxhc3RTdHJpbmcgPSBzaWRlYmFySHJlZkFycmF5W3NpZGViYXJIcmVmQXJyYXkubGVuZ3RoIC0gMV0udG9Mb3dlckNhc2UoKTsKKwkJCQkJCQorCQkJCQkJaWYgKHNpZGVCYXJMYXN0U3RyaW5nLmluZGV4T2YoIiMiKSA9PSAtMSkgeworCQkJCQkJCXJldHVybiBmYWxzZTsKKwkJCQkJCX0KKwkJCQkJCQorCQkJCQkJCQkJCQkJLyogZG9jdW1lbnQubG9jYXRpb24uaHJlZiAqLworCQkJCQkJdmFyIGN1cnJlbnRTZWN0aW9uID0gIiI7CisJCQkJCQkKKwkJCQkJCXZhciBjdXJyZW50TG9jYXRpb24gPSAiIjsKKwkJCQkJCXZhciBjdXJyZW50TGluayA9ICIiOworCQkJCQkJaWYgKGZhbHNlKSB7CisJCQkJCQkKKwkJCQkJCX0KKyAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5kZXguaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5kZXguaHRtbCIuc3Vic3RyKDEsICIvaW5kZXguaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9saWNlbnNlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2xpY2Vuc2UuaHRtbCIuc3Vic3RyKDEsICIvbGljZW5zZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5zdWJzdHIoMSwgImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZG93bmxvYWRzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2Rvd25sb2Fkcy5odG1sIi5zdWJzdHIoMSwgIi9kb3dubG9hZHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiLnN1YnN0cigxLCAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9pbnN0YWxsYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5zdGFsbGF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL2luc3RhbGxhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1VwZ3JhZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvVXBncmFkZS5odG1sIi5zdWJzdHIoMSwgIi9VcGdyYWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIuc3Vic3RyKDEsICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db21tYW5kTGluZUFkbWluLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIuc3Vic3RyKDEsICIvQ29tbWFuZExpbmVBZG1pbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9nZXQtaW52b2x2ZWQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9nZXQtaW52b2x2ZWQuaHRtbCIuc3Vic3RyKDEsICIvZ2V0LWludm9sdmVkLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGVhbS1saXN0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdGVhbS1saXN0Lmh0bWwiLnN1YnN0cigxLCAiL3RlYW0tbGlzdC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL21haWwtbGlzdHMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9tYWlsLWxpc3RzLmh0bWwiLnN1YnN0cigxLCAiL21haWwtbGlzdHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLnN1YnN0cigxLCAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3N2bi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvc3ZuLmh0bWwiLnN1YnN0cigxLCAiL3N2bi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIuc3Vic3RyKDEsICJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2RlcGVuZGVuY2llcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZGVwZW5kZW5jaWVzLmh0bWwiLnN1YnN0cigxLCAiL2RlcGVuZGVuY2llcy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pVbml0VGVzdGluZy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSlVuaXRUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL0pVbml0VGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01hbnVhbFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01hbnVhbFRlc3RpbmcuaHRtbCIuc3Vic3RyKDEsICIvTWFudWFsVGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlbGVhc2VHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVsZWFzZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1JlbGVhc2VHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYnNpdGVHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvV2Vic2l0ZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1dlYnNpdGVHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Tb2FwUmVzdEFQSS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU29hcFJlc3RBUEkuaHRtbCIuc3Vic3RyKDEsICIvU29hcFJlc3RBUEkuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZXN0QVBJU2FtcGxlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZXN0QVBJU2FtcGxlLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RBUElTYW1wbGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MZGFwQW5kQURTLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9MZGFwQW5kQURTLmh0bWwiLnN1YnN0cigxLCAiL0xkYXBBbmRBRFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FcnJvcnNUYWJsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRXJyb3JzVGFibGUuaHRtbCIuc3Vic3RyKDEsICIvRXJyb3JzVGFibGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTW9vZGxlUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01vb2RsZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Nb29kbGVQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TYWthaVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TYWthaVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TYWthaVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ppcmFQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSmlyYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9KaXJhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSm9vbWxhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pvb21sYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Kb29tbGFQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EcnVwYWxQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRHJ1cGFsUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0RydXBhbFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0JpdHJpeFBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CaXRyaXhQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvQml0cml4UGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TdWdhckNSTVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TdWdhckNSTVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TdWdhckNSTVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlZG1pbmVQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVkbWluZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9SZWRtaW5lUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSUJNREIyQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSUJNREIyQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL0lCTURCMkNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3JhY2xlQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3JhY2xlQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL09yYWNsZUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTXlTUUxDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9NeVNRTENvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9NeVNRTENvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUG9zdGdyZXNDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MYW5ndWFnZUVkaXRvci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLnN1YnN0cigxLCAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5zdWJzdHIoMSwgIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FZGl0VGVtcGxhdGVzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRWRpdFRlbXBsYXRlcy5odG1sIi5zdWJzdHIoMSwgIi9FZGl0VGVtcGxhdGVzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1BvcnRTZXR0aW5ncy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1BvcnRTZXR0aW5ncy5odG1sIi5zdWJzdHIoMSwgIi9Qb3J0U2V0dGluZ3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5zdWJzdHIoMSwgIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5zdWJzdHIoMSwgIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EYXNoYm9hcmQuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9EYXNoYm9hcmQuaHRtbCIuc3Vic3RyKDEsICIvRGFzaGJvYXJkLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLnN1YnN0cigxLCAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Ib3RLZXlzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSG90S2V5cy5odG1sIi5zdWJzdHIoMSwgIi9Ib3RLZXlzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYmFwcE5hbWVQYXRoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvV2ViYXBwTmFtZVBhdGguaHRtbCIuc3Vic3RyKDEsICIvV2ViYXBwTmFtZVBhdGguaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL05hdmlnYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9OYXZpZ2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL05hdmlnYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLnN1YnN0cigxLCAiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIuc3Vic3RyKDEsICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIuc3Vic3RyKDEsICIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUlRNUFNBbmRIVFRQUy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1JUTVBTQW5kSFRUUFMuaHRtbCIuc3Vic3RyKDEsICIvUlRNUFNBbmRIVFRQUy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5zdWJzdHIoMSwgIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5zdWJzdHIoMSwgIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NsdXN0ZXJpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DbHVzdGVyaW5nLmh0bWwiLnN1YnN0cigxLCAiL0NsdXN0ZXJpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvR2V0VmVyc2lvbkluZm8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9HZXRWZXJzaW9uSW5mby5odG1sIi5zdWJzdHIoMSwgIi9HZXRWZXJzaW9uSW5mby5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkgICAgCQkJCQkKKyAgICAJCQkJCWN1cnJlbnRMaW5rID0gY3VycmVudExpbmsudG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCWN1cnJlbnRMb2NhdGlvbiA9IGN1cnJlbnRMb2NhdGlvbi50b0xvd2VyQ2FzZSgpOworICAgIAkJCQkJCisJCQkJCQlyZXR1cm4gc2lkZUJhckxhc3RTdHJpbmcgPT0gY3VycmVudExpbmsrIiMiK2N1cnJlbnRMb2NhdGlvbjsKKwkJCQkJfQorCQkJCX0pOworCQkJfSk7CisJCQk8L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCQkJCSQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgeworCQkJCQkkKCcuZmFuY3lib3gtYnV0dG9ucycpLmNvbG9yYm94KHtyZWw6J2ZhbmN5Ym94LWJ1dHRvbnMnLHdpZHRoOiI3NSUiLCBoZWlnaHQ6Ijc1JSJ9KTsKKwkJCQkJJCgnI2FjY29yZGlvbiBhJykuZWFjaChmdW5jdGlvbigpIHsKKwkJCQkgICAgICB2YXIgYSA9ICQodGhpcyk7CisJCQkJICAgICAgdmFyIGhyZWYgPSBhLmF0dHIoImhyZWYiKTsKKwkJCQkgICAgICBpZiAoaHJlZi5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkgICAgICAJICB2YXIgY29tcGFyZUl0ID0gaHJlZi5zdWJzdHIoMiwgaHJlZi5sZW5ndGgpOworCQkJCQkgICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKGNvbXBhcmVJdCkhPSAtMSkgeworCQkJCQkgICAgICAgYS5hZGRDbGFzcygnYWN0aXZlJyk7CisJCQkJCSAgICAgIH0KKwkJCQkgICAgICB9CisJCQkJICAgIH0pOworCQkJCQkkKCcjY29pbi1zbGlkZXInKS5jb2luc2xpZGVyKHsgd2lkdGg6IDY0MCxoZWlnaHQ6IDQwMCwgZGVsYXk6IDQwMDAgIH0pOwkJCQkJCisJCQkJfSk7CisJCQk8L3NjcmlwdD4JCisJCQkJCQkKKwkJCTxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisJCQkJLmZhbmN5Ym94LWN1c3RvbSAuZmFuY3lib3gtb3V0ZXIgeworCQkJCQlib3gtc2hhZG93OiAwIDAgNTBweCAjMjIyOworCQkJCX0KKwkJCTwvc3R5bGU+CisgICAgICAgIDwvaGVhZD4KKworICAgICAgICA8Ym9keSBiZ2NvbG9yPSIjZmZmZmZmIiB0ZXh0PSIjMDAwMDAwIiBsaW5rPSIjMTIzNDY1IiB2bGluaz0iIzEyMzQ2NSIgYWxpbms9IiMwMDAwMDAiPiAgCisgICAgICAgIAk8ZGl2IGNsYXNzPSJtYWluYm9keSIgc3R5bGU9IndpZHRoOiAxMDAlOyI+CisgICAgICAgIAk8ZGl2IGNsYXNzPSJzdXBlcmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIj4KKyAgICAgICAgICAgICAgICA8IS0tIFRPUCBJTUFHRSAtLT4KKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCI+Cis8YSBocmVmPSJodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvIj48aW1nIHNyYz0iLi9pbWFnZXMvbG9nby0yLmpwZyIgYWx0PSJBcGFjaGUgT3Blbk1lZXRpbmdzIiBib3JkZXI9IjAiLz48L2E+Cis8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCIgPgorCTxhIGhyZWY9ImRlbW8uaHRtbCI+RGVtbzwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJkb3dubG9hZHMuaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5Eb3dubG9hZDwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJpbnN0YWxsYXRpb24uaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5JbnN0YWxsYXRpb248L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MiIHRhcmdldD0iX0JMQU5LIj5XaWtpPC9hPgorCTxzcGFuPiZuYnNwOzwvc3Bhbj4KKzwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjQiPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8IS0tIExFRlQgU0lERSBOQVZJR0FUSU9OIC0tPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiIG5vd3JhcD0ibm93cmFwIj4KKworICAgICAgICAgICAgICAgICAgICA8IS0tIHNwZWNpYWwgQUNvbiBMb2dvIC0gbGVhdmUgaGVyZSBmb3IgbmV4dCB0aW1lCisgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9hcGFjaGVjb24uY29tLzIwMDUvVVMvIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vYXBhY2hlLm9yZy9pbWFnZXMvYWMyMDA1dXNfYmx1ZV8xMjV4MTI1LmpwZyIgaGVpZ2h0PSIxMjUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPSIxMjUiIGJvcmRlcj0iMCIgYWx0PSJBcGFjaGVDb24gVVMgMjAwNSIgLz4KKyAgICAgICAgICAgICAgICAgICAgPC9hPiAgLS0+CisKKyAgICAgICAgICAgICAgICAgICA8IS0tIHJlZ3VsYXIgbWVudSAtLT4KKworICAgICAgICAgICAgICAgICAgICAKKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8ZGl2IGlkPSJhY2NvcmRpb24iIHN0eWxlPSJ3aWR0aDogMTAwJSI+CisgICAgCisgICAgICAgICAgICAJPGgzPjxhIGhyZWY9IiNHZW5lcmFsIj5HZW5lcmFsPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9pbmRleC5odG1sIj5Ib21lPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9saWNlbnNlLmh0bWwiPkxpY2Vuc2U8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5BU0Y8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2Rvd25sb2Fkcy5odG1sIj5Eb3dubG9hZHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIj5Db21tZXJjaWFsIFN1cHBvcnQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0luc3RhbGxhdGlvbmFuZFVwZ3JhZGUiPkluc3RhbGxhdGlvbiBhbmQgVXBncmFkZTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5zdGFsbGF0aW9uLmh0bWwiPkluc3RhbGxhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vVXBncmFkZS5odG1sIj5VcGdyYWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLmh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIj5UdXRvcmlhbHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCI+Q29tbWFuZCBMaW5lIEFkbWluPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb21tdW5pdHkiPkNvbW11bml0eTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZ2V0LWludm9sdmVkLmh0bWwiPkdldCBJbnZvbHZlZDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdGVhbS1saXN0Lmh0bWwiPkNvbW1pdHRlcnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL21haWwtbGlzdHMuaHRtbCI+TWFpbGluZyBMaXN0czwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIj5XaWtpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNEZXZlbG9wbWVudCI+RGV2ZWxvcG1lbnQ8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3N2bi5odG1sIj5Tb3VyY2UgQ29kZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiPkJ1Z3MgLyBJc3N1ZXMgKEpJUkEpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kZXBlbmRlbmNpZXMuaHRtbCI+RGVwZW5kZW5jaWVzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CdWlsZEluc3RydWN0aW9ucy5odG1sIj5CdWlsZCBJbnN0cnVjdGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pVbml0VGVzdGluZy5odG1sIj5KVW5pdCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9NYW51YWxUZXN0aW5nLmh0bWwiPk1hbnVhbCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWxlYXNlR3VpZGUuaHRtbCI+UmVsZWFzZSBHdWlkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vV2Vic2l0ZUd1aWRlLmh0bWwiPldlYnNpdGUgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0ludGVncmF0aW9uIj5JbnRlZ3JhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU29hcFJlc3RBUEkuaHRtbCI+U09BUC9SRVNUIEFQSTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVzdEFQSVNhbXBsZS5odG1sIj5SRVNUIEFQSSBTYW1wbGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0xkYXBBbmRBRFMuaHRtbCI+TGRhcCBhbmQgQURTPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIj5Wb0lQIGFuZCBTSVA8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0Vycm9yc1RhYmxlLmh0bWwiPkVycm9ycyB0YWJsZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjUGx1Z2lucyI+UGx1Z2luczwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTW9vZGxlUGx1Z2luLmh0bWwiPk1vb2RsZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Nha2FpUGx1Z2luLmh0bWwiPlNha2FpIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSmlyYVBsdWdpbi5odG1sIj5KaXJhIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSm9vbWxhUGx1Z2luLmh0bWwiPkpvb21sYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0RydXBhbFBsdWdpbi5odG1sIj5EcnVwYWwgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CaXRyaXhQbHVnaW4uaHRtbCI+Qml0cml4IFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQ29uZmx1ZW5jZVBsdWdpbi5odG1sIj5Db25mbHVlbmNlIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU3VnYXJDUk1QbHVnaW4uaHRtbCI+U3VnYXJDUk0gUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWRtaW5lUGx1Z2luLmh0bWwiPlJlZG1pbmUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb25maWd1cmF0aW9uIj5Db25maWd1cmF0aW9uPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5EQiBTYW1wbGUgQ29uZmlndXJhdGlvbnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIj5BcGFjaGUgRGVyYnk8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0lCTURCMkNvbmZpZy5odG1sIj5JQk0gREIyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcmFjbGVDb25maWcuaHRtbCI+T3JhY2xlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9NeVNRTENvbmZpZy5odG1sIj5NeVNRTDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9zdGdyZXNDb25maWcuaHRtbCI+UG9zdGdyZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkxvY2FsaXphdGlvbiBhbmQgbGFuZ3VhZ2VzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCI+SW50ZXJuYXRpb25hbGlzYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0xhbmd1YWdlRWRpdG9yLmh0bWwiPkxhbmd1YWdlRWRpdG9yPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiPlRpbWVab25lSGFuZGxpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0VkaXRUZW1wbGF0ZXMuaHRtbCI+RWRpdFRlbXBsYXRlczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TkFUIFBvcnQgU2V0dGluZ3M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Qb3J0U2V0dGluZ3MuaHRtbCI+UG9ydCBzZXR0aW5nczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+UGVyZm9ybWFuY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIj5KVk0gcGVyZm9ybWFuY2UgdHVuaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Vc2VyIEludGVyZmFjZTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCI+VGhlbWVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9EYXNoYm9hcmQuaHRtbCI+RGFzaGJvYXJkPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIj5XZWJjYW0gcmVzb2x1dGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIj5Sb29tIGxheW91dCBvcHRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Ib3RLZXlzLmh0bWwiPkhvdCBLZXlzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5DdXN0b21pemF0aW9uPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViYXBwTmFtZVBhdGguaHRtbCI+V2ViYXBwIG5hbWUvcGF0aDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTmF2aWdhdGlvbi5odG1sIj5OYXZpZ2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiPkNhbGVuZGFyIGFuZCB0aW1lem9uZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIj5DdXN0b20gcm9vbSB0eXBlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIj5DdXN0b20gY3R5cHQgbWVjaGFuaXNtPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIj5HZW5lcmFsIENvbmZpZ3VyYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlNlY3VyaXR5PC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUmVzdHJpY3RlZEFjY2Vzcy5odG1sIj5SZXN0cmljdGVkIEFjY2VzczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUlRNUFNBbmRIVFRQUy5odG1sIj5SVE1QUyBhbmQgSFRUUFM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNvbnZlcnRlcnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiPk9wZW5PZmZpY2UgQ29udmVydGVyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiPkZGTVBFRyBWZXJzaW9uIFN3aXRjaDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q2x1c3RlcmluZzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NsdXN0ZXJpbmcuaHRtbCI+Q2x1c3RlcmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TWlzYzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0dldFZlcnNpb25JbmZvLmh0bWwiPkdldCB2ZXJzaW9uIGluZm88L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAorICAgIDwvZGl2PgorICAgICAKKyAgICA8YnIvPgorICAgIAorICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJBcGFjaGUgRGVyYnkgQ29uZmlndXJhdGlvbiI+PHN0cm9uZz5BcGFjaGUgRGVyYnkgQ29uZmlndXJhdGlvbjwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgICA8aHIgc3R5bGU9IndpZHRoOjEwMCU7IGNvbG9yOiM5OTk5OTk7IGJhY2tncm91bmQtY29sb3I6Izk5OTk5OTsgaGVpZ2h0OjFweDsgYm9yZGVyOjBweDsiLz4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQorCQkJCU9wZW5NZWV0aW5ncyBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gaXMgdG8gdXNlIEFwYWNoZSBEZXJieS4NCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJSXQgaXMgcmVjb21tZW5kZWQgZm9yIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRzIGFuZCBoaWdoDQorCQkJCWF2YWlsaWJpbGl0eSB0byBjaGFuZ2UgdG8gYW4gdXN1YWwgcmVsYXRpb25hbCBkYXRhYmFzZSBsaWtlIE15U1FMLA0KKwkJCQlQb3N0Z3JlcyBvciBEQjIuDQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQorCQkJCUZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IEFwYWNoZSBEZXJieSBzZWUNCisJCQkJPGEgaHJlZj0iaHR0cDovL2RiLmFwYWNoZS5vcmcvZGVyYnkvIj5odHRwOi8vZGIuYXBhY2hlLm9yZy9kZXJieS88L2E+DQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQorCQkJCVRoZXJlIGlzIGEgc2FtcGxlIGNvbmZpZ3VyYXRpb24gZm9yIEFwYWNoZSBEZXJieSB0aGF0IHNoaXBzIHdpdGgNCisJCQkJZXZlcnkgcmVsZWFzZSBpbjoNCisJCQkJPGJyIC8+DQorCQkJCS93ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL2NsYXNzZXMvTUVUQS1JTkYvZGVyYnlfcGVyc2lzdGVuY2UueG1sDQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQorCQkJCUlmIHlvdSBlbmNvdW50ZXIgaXNzdWVzLCB5b3UgY2FuIGRyb3AgdGhlIGRiIGFnYWluIGFuZCBkZWxldGUgdGhlDQorCQkJCWZpbGUgL3dlYmFwcHMvb3Blbm1lZXRpbmdzL2NvbmYvaW5zdGFsbC54bWwgYW5kIHRoZW4gcnVuIHRoZSB3ZWINCisJCQkJYmFzZWQgaW5zdGFsbGVyIGFnYWluDQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8IS0tIEZPT1RFUiAtLT4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGFsaWduPSJjZW50ZXIiPjxmb250IGNvbG9yPSIjMTIzNDY1IiBzaXplPSItMSI+PGVtPgorICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgJiMxNjk7IDIwMDMtMjAxMywgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisgICAgICAgICAgICAgICAgICAgIDwvZW0+PC9mb250PjwvZGl2PgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2JvZHk+CisgICAgPC9odG1sPgorPCEtLSBlbmQgdGhlIHByb2Nlc3NpbmcgLS0+CisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKZGlmZiAtLWdpdCBhL2RvY3MvQml0cml4UGx1Z2luLmh0bWwgYi9kb2NzL0JpdHJpeFBsdWdpbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0ZTIwOWYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL0JpdHJpeFBsdWdpbi5odG1sCkBAIC0wLDAgKzEsNzM4IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KKworPCEtLQorQ29weXJpZ2h0IDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KK0xpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKK2h0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCitVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCitkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCitTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCitsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorCisKKzwhLS0gQ29udGVudCBTdHlsZXNoZWV0IGZvciBTaXRlIC0tPgorCisgICAgICAgIAorPCEtLSBzdGFydCB0aGUgcHJvY2Vzc2luZyAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPCEtLSBHRU5FUkFURUQgRklMRSwgRE8gTk9UIEVESVQsIEVESVQgVEhFIFhNTCBGSUxFIElOIHhkb2NzIElOU1RFQUQhIC0tPgorICAgIDwhLS0gTWFpbiBQYWdlIFNlY3Rpb24gLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDxodG1sPgorICAgICAgICA8aGVhZD4KKyAgICAgICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ii8+CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9IgorCQkJT3Blbk1lZXRpbmdzIFRlYW0KKwkJIj4KKyAgICAgICAgICAgIDxtZXRhIG5hbWU9ImVtYWlsIiBjb250ZW50PSJzb2xvbWF4QGFwYWNoZS5vcmciPgorICAgICAgICAgICAgCisgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIDx0aXRsZT5BcGFjaGUgT3Blbk1lZXRpbmdzIC0gQml0cml4IFBsdWdpbjwvdGl0bGU+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3Mvb3Blbm1lZXRpbmdzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvanF1ZXJ5LXVpLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29pbi1zbGlkZXItc3R5bGVzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29sb3Jib3guY3NzIiAvPgorICAgICAgICAgICAgCisJCQk8IS0tIEFkZCBqUXVlcnkgbGlicmFyeSAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS0xLjcuMS5taW4uanMiPjwvc2NyaXB0PgorCQkKKwkJCTwhLS0gQWRkIGNvaW5zbGlkZXIgcGx1Z2lucyAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2NvaW4tc2xpZGVyLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTwhLS0gQWRkIGNvbG9yYm94IHBsdWdpbiAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS5jb2xvcmJveC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5jb3JlLmpzIj48L3NjcmlwdD4KKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkud2lkZ2V0LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmFjY29yZGlvbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQ+CisJCQkkKGZ1bmN0aW9uKCkgeworCQkJCSQoICIjYWNjb3JkaW9uIiApLmFjY29yZGlvbih7CisJCQkJCWF1dG9IZWlnaHQ6IGZhbHNlLAorCQkJCQluYXZpZ2F0aW9uOiB0cnVlLAorCQkJCQluYXZpZ2F0aW9uRmlsdGVyOiBmdW5jdGlvbiAoKSB7CisJCQkJCQl2YXIgc2lkZWJhckhyZWZBcnJheSA9IHRoaXMuaHJlZi5zcGxpdCgiLyIpOworICAgIAkJCQkJdmFyIHNpZGVCYXJMYXN0U3RyaW5nID0gc2lkZWJhckhyZWZBcnJheVtzaWRlYmFySHJlZkFycmF5Lmxlbmd0aCAtIDFdLnRvTG93ZXJDYXNlKCk7CisJCQkJCQkKKwkJCQkJCWlmIChzaWRlQmFyTGFzdFN0cmluZy5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJCQl9CisJCQkJCQkKKwkJCQkJCQkJCQkJCS8qIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgKi8KKwkJCQkJCXZhciBjdXJyZW50U2VjdGlvbiA9ICIiOworCQkJCQkJCisJCQkJCQl2YXIgY3VycmVudExvY2F0aW9uID0gIiI7CisJCQkJCQl2YXIgY3VycmVudExpbmsgPSAiIjsKKwkJCQkJCWlmIChmYWxzZSkgeworCQkJCQkJCisJCQkJCQl9CisgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luZGV4Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luZGV4Lmh0bWwiLnN1YnN0cigxLCAiL2luZGV4Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbGljZW5zZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9saWNlbnNlLmh0bWwiLnN1YnN0cigxLCAiL2xpY2Vuc2UuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIuc3Vic3RyKDEsICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2Rvd25sb2Fkcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kb3dubG9hZHMuaHRtbCIuc3Vic3RyKDEsICIvZG93bmxvYWRzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5zdWJzdHIoMSwgIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5zdGFsbGF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luc3RhbGxhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9pbnN0YWxsYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9VcGdyYWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1VwZ3JhZGUuaHRtbCIuc3Vic3RyKDEsICIvVXBncmFkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLnN1YnN0cigxLCAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29tbWFuZExpbmVBZG1pbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLnN1YnN0cigxLCAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZ2V0LWludm9sdmVkLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZ2V0LWludm9sdmVkLmh0bWwiLnN1YnN0cigxLCAiL2dldC1pbnZvbHZlZC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RlYW0tbGlzdC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3RlYW0tbGlzdC5odG1sIi5zdWJzdHIoMSwgIi90ZWFtLWxpc3QuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9tYWlsLWxpc3RzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbWFpbC1saXN0cy5odG1sIi5zdWJzdHIoMSwgIi9tYWlsLWxpc3RzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5zdWJzdHIoMSwgImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9zdm4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3N2bi5odG1sIi5zdWJzdHIoMSwgIi9zdm4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLnN1YnN0cigxLCAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kZXBlbmRlbmNpZXMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2RlcGVuZGVuY2llcy5odG1sIi5zdWJzdHIoMSwgIi9kZXBlbmRlbmNpZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVW5pdFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pVbml0VGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9KVW5pdFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NYW51YWxUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9NYW51YWxUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL01hbnVhbFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWxlYXNlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlbGVhc2VHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9SZWxlYXNlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJzaXRlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1dlYnNpdGVHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9XZWJzaXRlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU29hcFJlc3RBUEkuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1NvYXBSZXN0QVBJLmh0bWwiLnN1YnN0cigxLCAiL1NvYXBSZXN0QVBJLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdEFQSVNhbXBsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVzdEFQSVNhbXBsZS5odG1sIi5zdWJzdHIoMSwgIi9SZXN0QVBJU2FtcGxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGRhcEFuZEFEUy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTGRhcEFuZEFEUy5odG1sIi5zdWJzdHIoMSwgIi9MZGFwQW5kQURTLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRXJyb3JzVGFibGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0Vycm9yc1RhYmxlLmh0bWwiLnN1YnN0cigxLCAiL0Vycm9yc1RhYmxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01vb2RsZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Nb29kbGVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvTW9vZGxlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU2FrYWlQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU2FrYWlQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU2FrYWlQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KaXJhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0ppcmFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSmlyYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pvb21sYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Kb29tbGFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSm9vbWxhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRHJ1cGFsUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0RydXBhbFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9EcnVwYWxQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CaXRyaXhQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQml0cml4UGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0JpdHJpeFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU3VnYXJDUk1QbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWRtaW5lUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlZG1pbmVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvUmVkbWluZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0lCTURCMkNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0lCTURCMkNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9JQk1EQjJDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09yYWNsZUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09yYWNsZUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9PcmFjbGVDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL015U1FMQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTXlTUUxDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvTXlTUUxDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Bvc3RncmVzQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9zdGdyZXNDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvUG9zdGdyZXNDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9MYW5ndWFnZUVkaXRvci5odG1sIi5zdWJzdHIoMSwgIi9MYW5ndWFnZUVkaXRvci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVGltZVpvbmVIYW5kbGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIuc3Vic3RyKDEsICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRWRpdFRlbXBsYXRlcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIuc3Vic3RyKDEsICIvRWRpdFRlbXBsYXRlcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3J0U2V0dGluZ3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3J0U2V0dGluZ3MuaHRtbCIuc3Vic3RyKDEsICIvUG9ydFNldHRpbmdzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIuc3Vic3RyKDEsICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIuc3Vic3RyKDEsICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRGFzaGJvYXJkLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRGFzaGJvYXJkLmh0bWwiLnN1YnN0cigxLCAiL0Rhc2hib2FyZC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSG90S2V5cy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0hvdEtleXMuaHRtbCIuc3Vic3RyKDEsICIvSG90S2V5cy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJhcHBOYW1lUGF0aC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLnN1YnN0cigxLCAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9OYXZpZ2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTmF2aWdhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9OYXZpZ2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5zdWJzdHIoMSwgIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JUTVBTQW5kSFRUUFMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SVE1QU0FuZEhUVFBTLmh0bWwiLnN1YnN0cigxLCAiL1JUTVBTQW5kSFRUUFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIuc3Vic3RyKDEsICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIuc3Vic3RyKDEsICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DbHVzdGVyaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2x1c3RlcmluZy5odG1sIi5zdWJzdHIoMSwgIi9DbHVzdGVyaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dldFZlcnNpb25JbmZvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2V0VmVyc2lvbkluZm8uaHRtbCIuc3Vic3RyKDEsICIvR2V0VmVyc2lvbkluZm8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJICAgIAkJCQkJCisgICAgCQkJCQljdXJyZW50TGluayA9IGN1cnJlbnRMaW5rLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQljdXJyZW50TG9jYXRpb24gPSBjdXJyZW50TG9jYXRpb24udG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCQorCQkJCQkJcmV0dXJuIHNpZGVCYXJMYXN0U3RyaW5nID09IGN1cnJlbnRMaW5rKyIjIitjdXJyZW50TG9jYXRpb247CisJCQkJCX0KKwkJCQl9KTsKKwkJCX0pOworCQkJPC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwkJCQkkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsKKwkJCQkJJCgnLmZhbmN5Ym94LWJ1dHRvbnMnKS5jb2xvcmJveCh7cmVsOidmYW5jeWJveC1idXR0b25zJyx3aWR0aDoiNzUlIiwgaGVpZ2h0OiI3NSUifSk7CisJCQkJCSQoJyNhY2NvcmRpb24gYScpLmVhY2goZnVuY3Rpb24oKSB7CisJCQkJICAgICAgdmFyIGEgPSAkKHRoaXMpOworCQkJCSAgICAgIHZhciBocmVmID0gYS5hdHRyKCJocmVmIik7CisJCQkJICAgICAgaWYgKGhyZWYuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJICAgICAgCSAgdmFyIGNvbXBhcmVJdCA9IGhyZWYuc3Vic3RyKDIsIGhyZWYubGVuZ3RoKTsKKwkJCQkJICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZihjb21wYXJlSXQpIT0gLTEpIHsKKwkJCQkJICAgICAgIGEuYWRkQ2xhc3MoJ2FjdGl2ZScpOworCQkJCQkgICAgICB9CisJCQkJICAgICAgfQorCQkJCSAgICB9KTsKKwkJCQkJJCgnI2NvaW4tc2xpZGVyJykuY29pbnNsaWRlcih7IHdpZHRoOiA2NDAsaGVpZ2h0OiA0MDAsIGRlbGF5OiA0MDAwICB9KTsJCQkJCQorCQkJCX0pOworCQkJPC9zY3JpcHQ+CQorCQkJCQkJCisJCQk8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorCQkJCS5mYW5jeWJveC1jdXN0b20gLmZhbmN5Ym94LW91dGVyIHsKKwkJCQkJYm94LXNoYWRvdzogMCAwIDUwcHggIzIyMjsKKwkJCQl9CisJCQk8L3N0eWxlPgorICAgICAgICA8L2hlYWQ+CisKKyAgICAgICAgPGJvZHkgYmdjb2xvcj0iI2ZmZmZmZiIgdGV4dD0iIzAwMDAwMCIgbGluaz0iIzEyMzQ2NSIgdmxpbms9IiMxMjM0NjUiIGFsaW5rPSIjMDAwMDAwIj4gIAorICAgICAgICAJPGRpdiBjbGFzcz0ibWFpbmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAJPGRpdiBjbGFzcz0ic3VwZXJib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCI+CisgICAgICAgICAgICAgICAgPCEtLSBUT1AgSU1BR0UgLS0+CisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPgorPGEgaHJlZj0iaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnLyI+PGltZyBzcmM9Ii4vaW1hZ2VzL2xvZ28tMi5qcGciIGFsdD0iQXBhY2hlIE9wZW5NZWV0aW5ncyIgYm9yZGVyPSIwIi8+PC9hPgorPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiID4KKwk8YSBocmVmPSJkZW1vLmh0bWwiPkRlbW88L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iZG93bmxvYWRzLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+RG93bmxvYWQ8L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaW5zdGFsbGF0aW9uLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+SW5zdGFsbGF0aW9uPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTIiB0YXJnZXQ9Il9CTEFOSyI+V2lraTwvYT4KKwk8c3Bhbj4mbmJzcDs8L3NwYW4+Cis8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSI0Ij4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPCEtLSBMRUZUIFNJREUgTkFWSUdBVElPTiAtLT4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIiBub3dyYXA9Im5vd3JhcCI+CisKKyAgICAgICAgICAgICAgICAgICAgPCEtLSBzcGVjaWFsIEFDb24gTG9nbyAtIGxlYXZlIGhlcmUgZm9yIG5leHQgdGltZQorICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vYXBhY2hlY29uLmNvbS8yMDA1L1VTLyI+CisgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2FwYWNoZS5vcmcvaW1hZ2VzL2FjMjAwNXVzX2JsdWVfMTI1eDEyNS5qcGciIGhlaWdodD0iMTI1IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTI1IiBib3JkZXI9IjAiIGFsdD0iQXBhY2hlQ29uIFVTIDIwMDUiIC8+CisgICAgICAgICAgICAgICAgICAgIDwvYT4gIC0tPgorCisgICAgICAgICAgICAgICAgICAgPCEtLSByZWd1bGFyIG1lbnUgLS0+CisKKyAgICAgICAgICAgICAgICAgICAgCisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGRpdiBpZD0iYWNjb3JkaW9uIiBzdHlsZT0id2lkdGg6IDEwMCUiPgorICAgIAorICAgICAgICAgICAgCTxoMz48YSBocmVmPSIjR2VuZXJhbCI+R2VuZXJhbDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5kZXguaHRtbCI+SG9tZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbGljZW5zZS5odG1sIj5MaWNlbnNlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyI+QVNGPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kb3dubG9hZHMuaHRtbCI+RG93bmxvYWRzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCI+Q29tbWVyY2lhbCBTdXBwb3J0PC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnN0YWxsYXRpb25hbmRVcGdyYWRlIj5JbnN0YWxsYXRpb24gYW5kIFVwZ3JhZGU8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luc3RhbGxhdGlvbi5odG1sIj5JbnN0YWxsYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1VwZ3JhZGUuaHRtbCI+VXBncmFkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii5odHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyI+VHV0b3JpYWxzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db21tYW5kTGluZUFkbWluLmh0bWwiPkNvbW1hbmQgTGluZSBBZG1pbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29tbXVuaXR5Ij5Db21tdW5pdHk8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2dldC1pbnZvbHZlZC5odG1sIj5HZXQgSW52b2x2ZWQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3RlYW0tbGlzdC5odG1sIj5Db21taXR0ZXJzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9tYWlsLWxpc3RzLmh0bWwiPk1haWxpbmcgTGlzdHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyI+V2lraTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjRGV2ZWxvcG1lbnQiPkRldmVsb3BtZW50PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9zdm4uaHRtbCI+U291cmNlIENvZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIj5CdWdzIC8gSXNzdWVzIChKSVJBKTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZGVwZW5kZW5jaWVzLmh0bWwiPkRlcGVuZGVuY2llczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCI+QnVpbGQgSW5zdHJ1Y3Rpb25zPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KVW5pdFRlc3RpbmcuaHRtbCI+SlVuaXQgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTWFudWFsVGVzdGluZy5odG1sIj5NYW51YWwgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVsZWFzZUd1aWRlLmh0bWwiPlJlbGVhc2UgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1dlYnNpdGVHdWlkZS5odG1sIj5XZWJzaXRlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnRlZ3JhdGlvbiI+SW50ZWdyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1NvYXBSZXN0QVBJLmh0bWwiPlNPQVAvUkVTVCBBUEk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Jlc3RBUElTYW1wbGUuaHRtbCI+UkVTVCBBUEkgU2FtcGxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9MZGFwQW5kQURTLmh0bWwiPkxkYXAgYW5kIEFEUzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCI+Vm9JUCBhbmQgU0lQPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9FcnJvcnNUYWJsZS5odG1sIj5FcnJvcnMgdGFibGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI1BsdWdpbnMiPlBsdWdpbnM8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01vb2RsZVBsdWdpbi5odG1sIj5Nb29kbGUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TYWthaVBsdWdpbi5odG1sIj5TYWthaSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0ppcmFQbHVnaW4uaHRtbCI+SmlyYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pvb21sYVBsdWdpbi5odG1sIj5Kb29tbGEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9EcnVwYWxQbHVnaW4uaHRtbCI+RHJ1cGFsIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQml0cml4UGx1Z2luLmh0bWwiPkJpdHJpeCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCI+Q29uZmx1ZW5jZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiPlN1Z2FyQ1JNIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVkbWluZVBsdWdpbi5odG1sIj5SZWRtaW5lIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29uZmlndXJhdGlvbiI+Q29uZmlndXJhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+REIgU2FtcGxlIENvbmZpZ3VyYXRpb25zPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQXBhY2hlRGVyYnlDb25maWcuaHRtbCI+QXBhY2hlIERlcmJ5PC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JQk1EQjJDb25maWcuaHRtbCI+SUJNIERCMjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3JhY2xlQ29uZmlnLmh0bWwiPk9yYWNsZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTXlTUUxDb25maWcuaHRtbCI+TXlTUUw8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Bvc3RncmVzQ29uZmlnLmh0bWwiPlBvc3RncmVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Mb2NhbGl6YXRpb24gYW5kIGxhbmd1YWdlczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiPkludGVybmF0aW9uYWxpc2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9MYW5ndWFnZUVkaXRvci5odG1sIj5MYW5ndWFnZUVkaXRvcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vVGltZVpvbmVIYW5kbGluZy5odG1sIj5UaW1lWm9uZUhhbmRsaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9FZGl0VGVtcGxhdGVzLmh0bWwiPkVkaXRUZW1wbGF0ZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk5BVCBQb3J0IFNldHRpbmdzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9ydFNldHRpbmdzLmh0bWwiPlBvcnQgc2V0dGluZ3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlBlcmZvcm1hbmNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCI+SlZNIHBlcmZvcm1hbmNlIHR1bmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+VXNlciBJbnRlcmZhY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiPlRoZW1lczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRGFzaGJvYXJkLmh0bWwiPkRhc2hib2FyZDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCI+V2ViY2FtIHJlc29sdXRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCI+Um9vbSBsYXlvdXQgb3B0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSG90S2V5cy5odG1sIj5Ib3QgS2V5czwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q3VzdG9taXphdGlvbjwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmFwcE5hbWVQYXRoLmh0bWwiPldlYmFwcCBuYW1lL3BhdGg8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL05hdmlnYXRpb24uaHRtbCI+TmF2aWdhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIj5DYWxlbmRhciBhbmQgdGltZXpvbmU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCI+Q3VzdG9tIHJvb20gdHlwZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCI+Q3VzdG9tIGN0eXB0IG1lY2hhbmlzbTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCI+R2VuZXJhbCBDb25maWd1cmF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5TZWN1cml0eTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCI+UmVzdHJpY3RlZCBBY2Nlc3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1JUTVBTQW5kSFRUUFMuaHRtbCI+UlRNUFMgYW5kIEhUVFBTPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Db252ZXJ0ZXJzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIj5PcGVuT2ZmaWNlIENvbnZlcnRlcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIj5GRk1QRUcgVmVyc2lvbiBTd2l0Y2g8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNsdXN0ZXJpbmc8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DbHVzdGVyaW5nLmh0bWwiPkNsdXN0ZXJpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk1pc2M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZXRWZXJzaW9uSW5mby5odG1sIj5HZXQgdmVyc2lvbiBpbmZvPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAKKyAgICA8L2Rpdj4KKyAgICAgCisgICAgPGJyLz4KKyAgICAKKyAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iT3Blbk1lZXRpbmdzIFBsdWdpbiBmb3IgQml0cml4Ij48c3Ryb25nPk9wZW5NZWV0aW5ncyBQbHVnaW4gZm9yIEJpdHJpeDwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgICA8aHIgc3R5bGU9IndpZHRoOjEwMCU7IGNvbG9yOiM5OTk5OTk7IGJhY2tncm91bmQtY29sb3I6Izk5OTk5OTsgaGVpZ2h0OjFweDsgYm9yZGVyOjBweDsiLz4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQorCQkJCUN1cnJlbnQgRGV2ZWxvcG1lbnQgU25hcHNob3RzIGZvciB0ZXN0aW5nIGNhbiBiZSBjcmVhdGVkIGZyb20gdGhlIHNvdXJjZXM6DQorCQkJCTxhIGhyZWY9Imh0dHBzOi8vc3ZuLmNvZGVzcG90LmNvbS9hL2FwYWNoZS1leHRyYXMub3JnL29wZW5tZWV0aW5ncy1iaXRyaXgtcGx1Z2luL3RydW5rIj5oZXJlPC9hPg0KKwkJCQkuDQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iRmVhdHVyZXMiPjxzdHJvbmc+RmVhdHVyZXM8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlRoZSBwbHVnaW4gY29udGFpbnMgdGhlIGZvbGxvd2luZyBmZWF0dXJlczogPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPg0KKwkJCQk8bGk+RW50ZXIgdmlkZW9jb25mZXJlbmNlIHJvb21zIGZyb20gQml0cml4IChodHRwOi8vd3d3LjFjLWJpdHJpeC5ydS8pOiA8L2xpPg0KKwkJCTwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJDb25maWd1cmF0aW9uIj48c3Ryb25nPkNvbmZpZ3VyYXRpb248L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorCQkJCTxiPk9wZW5NZWV0aW5ncyBCaXRyaXggUGx1Z2luIEluc3RhbGxhdGlvbjwvYj48YnIgLz4NCisJCQkJPG9sPg0KKwkJCQkJPGxpPkJ1aWxkIHBsdWdpbiBmcm9tIHNvdXJjZXM8L2xpPg0KKwkJCQkJPGxpPlVucGFjayBpdCBpbnRvIGJpdHJpeC9tb2R1bGVzPC9saT4NCisJCQkJCTxsaT5JbnN0YWxsIHZpYSBBZG1pbjwvbGk+DQorCQkJCQk8bGk+QWRkIE9QZW5tZWV0aW5ncyBjb21wb25lbnQgdG8gYW55IHBhZ2UuPC9saT4NCisJCQkJPC9vbD4gICAgICAgICAgICAgIA0KKwkJCTwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8IS0tIEZPT1RFUiAtLT4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGFsaWduPSJjZW50ZXIiPjxmb250IGNvbG9yPSIjMTIzNDY1IiBzaXplPSItMSI+PGVtPgorICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgJiMxNjk7IDIwMDMtMjAxMywgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisgICAgICAgICAgICAgICAgICAgIDwvZW0+PC9mb250PjwvZGl2PgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2JvZHk+CisgICAgPC9odG1sPgorPCEtLSBlbmQgdGhlIHByb2Nlc3NpbmcgLS0+CisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKZGlmZiAtLWdpdCBhL2RvY3MvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCBiL2RvY3MvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTNhNDk3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9CdWlsZEluc3RydWN0aW9ucy5odG1sCkBAIC0wLDAgKzEsMTA0MSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CisKKzwhLS0KK0NvcHlyaWdodCAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK3lvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCitodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworCis8IS0tIENvbnRlbnQgU3R5bGVzaGVldCBmb3IgU2l0ZSAtLT4KKworICAgICAgICAKKzwhLS0gc3RhcnQgdGhlIHByb2Nlc3NpbmcgLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDwhLS0gR0VORVJBVEVEIEZJTEUsIERPIE5PVCBFRElULCBFRElUIFRIRSBYTUwgRklMRSBJTiB4ZG9jcyBJTlNURUFEISAtLT4KKyAgICA8IS0tIE1haW4gUGFnZSBTZWN0aW9uIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8aHRtbD4KKyAgICAgICAgPGhlYWQ+CisgICAgICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIvPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSIKKwkJCU9wZW5NZWV0aW5ncyBUZWFtCisJCSI+CisgICAgICAgICAgICA8bWV0YSBuYW1lPSJlbWFpbCIgY29udGVudD0ic2ViYXdhZ25lckBhcGFjaGUub3JnIj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICA8dGl0bGU+QXBhY2hlIE9wZW5NZWV0aW5ncyAtIEJ1aWxkIGluc3RydWN0aW9uczwvdGl0bGU+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3Mvb3Blbm1lZXRpbmdzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvanF1ZXJ5LXVpLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29pbi1zbGlkZXItc3R5bGVzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29sb3Jib3guY3NzIiAvPgorICAgICAgICAgICAgCisJCQk8IS0tIEFkZCBqUXVlcnkgbGlicmFyeSAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS0xLjcuMS5taW4uanMiPjwvc2NyaXB0PgorCQkKKwkJCTwhLS0gQWRkIGNvaW5zbGlkZXIgcGx1Z2lucyAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2NvaW4tc2xpZGVyLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTwhLS0gQWRkIGNvbG9yYm94IHBsdWdpbiAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS5jb2xvcmJveC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5jb3JlLmpzIj48L3NjcmlwdD4KKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkud2lkZ2V0LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmFjY29yZGlvbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQ+CisJCQkkKGZ1bmN0aW9uKCkgeworCQkJCSQoICIjYWNjb3JkaW9uIiApLmFjY29yZGlvbih7CisJCQkJCWF1dG9IZWlnaHQ6IGZhbHNlLAorCQkJCQluYXZpZ2F0aW9uOiB0cnVlLAorCQkJCQluYXZpZ2F0aW9uRmlsdGVyOiBmdW5jdGlvbiAoKSB7CisJCQkJCQl2YXIgc2lkZWJhckhyZWZBcnJheSA9IHRoaXMuaHJlZi5zcGxpdCgiLyIpOworICAgIAkJCQkJdmFyIHNpZGVCYXJMYXN0U3RyaW5nID0gc2lkZWJhckhyZWZBcnJheVtzaWRlYmFySHJlZkFycmF5Lmxlbmd0aCAtIDFdLnRvTG93ZXJDYXNlKCk7CisJCQkJCQkKKwkJCQkJCWlmIChzaWRlQmFyTGFzdFN0cmluZy5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJCQl9CisJCQkJCQkKKwkJCQkJCQkJCQkJCS8qIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgKi8KKwkJCQkJCXZhciBjdXJyZW50U2VjdGlvbiA9ICIiOworCQkJCQkJCisJCQkJCQl2YXIgY3VycmVudExvY2F0aW9uID0gIiI7CisJCQkJCQl2YXIgY3VycmVudExpbmsgPSAiIjsKKwkJCQkJCWlmIChmYWxzZSkgeworCQkJCQkJCisJCQkJCQl9CisgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luZGV4Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luZGV4Lmh0bWwiLnN1YnN0cigxLCAiL2luZGV4Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbGljZW5zZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9saWNlbnNlLmh0bWwiLnN1YnN0cigxLCAiL2xpY2Vuc2UuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIuc3Vic3RyKDEsICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2Rvd25sb2Fkcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kb3dubG9hZHMuaHRtbCIuc3Vic3RyKDEsICIvZG93bmxvYWRzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5zdWJzdHIoMSwgIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5zdGFsbGF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luc3RhbGxhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9pbnN0YWxsYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9VcGdyYWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1VwZ3JhZGUuaHRtbCIuc3Vic3RyKDEsICIvVXBncmFkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLnN1YnN0cigxLCAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29tbWFuZExpbmVBZG1pbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLnN1YnN0cigxLCAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZ2V0LWludm9sdmVkLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZ2V0LWludm9sdmVkLmh0bWwiLnN1YnN0cigxLCAiL2dldC1pbnZvbHZlZC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RlYW0tbGlzdC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3RlYW0tbGlzdC5odG1sIi5zdWJzdHIoMSwgIi90ZWFtLWxpc3QuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9tYWlsLWxpc3RzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbWFpbC1saXN0cy5odG1sIi5zdWJzdHIoMSwgIi9tYWlsLWxpc3RzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5zdWJzdHIoMSwgImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9zdm4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3N2bi5odG1sIi5zdWJzdHIoMSwgIi9zdm4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLnN1YnN0cigxLCAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kZXBlbmRlbmNpZXMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2RlcGVuZGVuY2llcy5odG1sIi5zdWJzdHIoMSwgIi9kZXBlbmRlbmNpZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVW5pdFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pVbml0VGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9KVW5pdFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NYW51YWxUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9NYW51YWxUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL01hbnVhbFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWxlYXNlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlbGVhc2VHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9SZWxlYXNlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJzaXRlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1dlYnNpdGVHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9XZWJzaXRlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU29hcFJlc3RBUEkuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1NvYXBSZXN0QVBJLmh0bWwiLnN1YnN0cigxLCAiL1NvYXBSZXN0QVBJLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdEFQSVNhbXBsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVzdEFQSVNhbXBsZS5odG1sIi5zdWJzdHIoMSwgIi9SZXN0QVBJU2FtcGxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGRhcEFuZEFEUy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTGRhcEFuZEFEUy5odG1sIi5zdWJzdHIoMSwgIi9MZGFwQW5kQURTLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRXJyb3JzVGFibGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0Vycm9yc1RhYmxlLmh0bWwiLnN1YnN0cigxLCAiL0Vycm9yc1RhYmxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01vb2RsZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Nb29kbGVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvTW9vZGxlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU2FrYWlQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU2FrYWlQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU2FrYWlQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KaXJhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0ppcmFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSmlyYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pvb21sYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Kb29tbGFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSm9vbWxhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRHJ1cGFsUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0RydXBhbFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9EcnVwYWxQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CaXRyaXhQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQml0cml4UGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0JpdHJpeFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU3VnYXJDUk1QbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWRtaW5lUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlZG1pbmVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvUmVkbWluZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0lCTURCMkNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0lCTURCMkNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9JQk1EQjJDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09yYWNsZUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09yYWNsZUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9PcmFjbGVDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL015U1FMQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTXlTUUxDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvTXlTUUxDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Bvc3RncmVzQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9zdGdyZXNDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvUG9zdGdyZXNDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9MYW5ndWFnZUVkaXRvci5odG1sIi5zdWJzdHIoMSwgIi9MYW5ndWFnZUVkaXRvci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVGltZVpvbmVIYW5kbGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIuc3Vic3RyKDEsICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRWRpdFRlbXBsYXRlcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIuc3Vic3RyKDEsICIvRWRpdFRlbXBsYXRlcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3J0U2V0dGluZ3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3J0U2V0dGluZ3MuaHRtbCIuc3Vic3RyKDEsICIvUG9ydFNldHRpbmdzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIuc3Vic3RyKDEsICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIuc3Vic3RyKDEsICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRGFzaGJvYXJkLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRGFzaGJvYXJkLmh0bWwiLnN1YnN0cigxLCAiL0Rhc2hib2FyZC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSG90S2V5cy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0hvdEtleXMuaHRtbCIuc3Vic3RyKDEsICIvSG90S2V5cy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJhcHBOYW1lUGF0aC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLnN1YnN0cigxLCAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9OYXZpZ2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTmF2aWdhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9OYXZpZ2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5zdWJzdHIoMSwgIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JUTVBTQW5kSFRUUFMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SVE1QU0FuZEhUVFBTLmh0bWwiLnN1YnN0cigxLCAiL1JUTVBTQW5kSFRUUFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIuc3Vic3RyKDEsICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIuc3Vic3RyKDEsICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DbHVzdGVyaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2x1c3RlcmluZy5odG1sIi5zdWJzdHIoMSwgIi9DbHVzdGVyaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dldFZlcnNpb25JbmZvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2V0VmVyc2lvbkluZm8uaHRtbCIuc3Vic3RyKDEsICIvR2V0VmVyc2lvbkluZm8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJICAgIAkJCQkJCisgICAgCQkJCQljdXJyZW50TGluayA9IGN1cnJlbnRMaW5rLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQljdXJyZW50TG9jYXRpb24gPSBjdXJyZW50TG9jYXRpb24udG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCQorCQkJCQkJcmV0dXJuIHNpZGVCYXJMYXN0U3RyaW5nID09IGN1cnJlbnRMaW5rKyIjIitjdXJyZW50TG9jYXRpb247CisJCQkJCX0KKwkJCQl9KTsKKwkJCX0pOworCQkJPC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwkJCQkkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsKKwkJCQkJJCgnLmZhbmN5Ym94LWJ1dHRvbnMnKS5jb2xvcmJveCh7cmVsOidmYW5jeWJveC1idXR0b25zJyx3aWR0aDoiNzUlIiwgaGVpZ2h0OiI3NSUifSk7CisJCQkJCSQoJyNhY2NvcmRpb24gYScpLmVhY2goZnVuY3Rpb24oKSB7CisJCQkJICAgICAgdmFyIGEgPSAkKHRoaXMpOworCQkJCSAgICAgIHZhciBocmVmID0gYS5hdHRyKCJocmVmIik7CisJCQkJICAgICAgaWYgKGhyZWYuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJICAgICAgCSAgdmFyIGNvbXBhcmVJdCA9IGhyZWYuc3Vic3RyKDIsIGhyZWYubGVuZ3RoKTsKKwkJCQkJICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZihjb21wYXJlSXQpIT0gLTEpIHsKKwkJCQkJICAgICAgIGEuYWRkQ2xhc3MoJ2FjdGl2ZScpOworCQkJCQkgICAgICB9CisJCQkJICAgICAgfQorCQkJCSAgICB9KTsKKwkJCQkJJCgnI2NvaW4tc2xpZGVyJykuY29pbnNsaWRlcih7IHdpZHRoOiA2NDAsaGVpZ2h0OiA0MDAsIGRlbGF5OiA0MDAwICB9KTsJCQkJCQorCQkJCX0pOworCQkJPC9zY3JpcHQ+CQorCQkJCQkJCisJCQk8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorCQkJCS5mYW5jeWJveC1jdXN0b20gLmZhbmN5Ym94LW91dGVyIHsKKwkJCQkJYm94LXNoYWRvdzogMCAwIDUwcHggIzIyMjsKKwkJCQl9CisJCQk8L3N0eWxlPgorICAgICAgICA8L2hlYWQ+CisKKyAgICAgICAgPGJvZHkgYmdjb2xvcj0iI2ZmZmZmZiIgdGV4dD0iIzAwMDAwMCIgbGluaz0iIzEyMzQ2NSIgdmxpbms9IiMxMjM0NjUiIGFsaW5rPSIjMDAwMDAwIj4gIAorICAgICAgICAJPGRpdiBjbGFzcz0ibWFpbmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAJPGRpdiBjbGFzcz0ic3VwZXJib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCI+CisgICAgICAgICAgICAgICAgPCEtLSBUT1AgSU1BR0UgLS0+CisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPgorPGEgaHJlZj0iaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnLyI+PGltZyBzcmM9Ii4vaW1hZ2VzL2xvZ28tMi5qcGciIGFsdD0iQXBhY2hlIE9wZW5NZWV0aW5ncyIgYm9yZGVyPSIwIi8+PC9hPgorPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiID4KKwk8YSBocmVmPSJkZW1vLmh0bWwiPkRlbW88L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iZG93bmxvYWRzLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+RG93bmxvYWQ8L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaW5zdGFsbGF0aW9uLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+SW5zdGFsbGF0aW9uPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTIiB0YXJnZXQ9Il9CTEFOSyI+V2lraTwvYT4KKwk8c3Bhbj4mbmJzcDs8L3NwYW4+Cis8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSI0Ij4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPCEtLSBMRUZUIFNJREUgTkFWSUdBVElPTiAtLT4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIiBub3dyYXA9Im5vd3JhcCI+CisKKyAgICAgICAgICAgICAgICAgICAgPCEtLSBzcGVjaWFsIEFDb24gTG9nbyAtIGxlYXZlIGhlcmUgZm9yIG5leHQgdGltZQorICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vYXBhY2hlY29uLmNvbS8yMDA1L1VTLyI+CisgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2FwYWNoZS5vcmcvaW1hZ2VzL2FjMjAwNXVzX2JsdWVfMTI1eDEyNS5qcGciIGhlaWdodD0iMTI1IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTI1IiBib3JkZXI9IjAiIGFsdD0iQXBhY2hlQ29uIFVTIDIwMDUiIC8+CisgICAgICAgICAgICAgICAgICAgIDwvYT4gIC0tPgorCisgICAgICAgICAgICAgICAgICAgPCEtLSByZWd1bGFyIG1lbnUgLS0+CisKKyAgICAgICAgICAgICAgICAgICAgCisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGRpdiBpZD0iYWNjb3JkaW9uIiBzdHlsZT0id2lkdGg6IDEwMCUiPgorICAgIAorICAgICAgICAgICAgCTxoMz48YSBocmVmPSIjR2VuZXJhbCI+R2VuZXJhbDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5kZXguaHRtbCI+SG9tZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbGljZW5zZS5odG1sIj5MaWNlbnNlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyI+QVNGPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kb3dubG9hZHMuaHRtbCI+RG93bmxvYWRzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCI+Q29tbWVyY2lhbCBTdXBwb3J0PC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnN0YWxsYXRpb25hbmRVcGdyYWRlIj5JbnN0YWxsYXRpb24gYW5kIFVwZ3JhZGU8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luc3RhbGxhdGlvbi5odG1sIj5JbnN0YWxsYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1VwZ3JhZGUuaHRtbCI+VXBncmFkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii5odHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyI+VHV0b3JpYWxzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db21tYW5kTGluZUFkbWluLmh0bWwiPkNvbW1hbmQgTGluZSBBZG1pbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29tbXVuaXR5Ij5Db21tdW5pdHk8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2dldC1pbnZvbHZlZC5odG1sIj5HZXQgSW52b2x2ZWQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3RlYW0tbGlzdC5odG1sIj5Db21taXR0ZXJzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9tYWlsLWxpc3RzLmh0bWwiPk1haWxpbmcgTGlzdHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyI+V2lraTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjRGV2ZWxvcG1lbnQiPkRldmVsb3BtZW50PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9zdm4uaHRtbCI+U291cmNlIENvZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIj5CdWdzIC8gSXNzdWVzIChKSVJBKTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZGVwZW5kZW5jaWVzLmh0bWwiPkRlcGVuZGVuY2llczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCI+QnVpbGQgSW5zdHJ1Y3Rpb25zPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KVW5pdFRlc3RpbmcuaHRtbCI+SlVuaXQgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTWFudWFsVGVzdGluZy5odG1sIj5NYW51YWwgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVsZWFzZUd1aWRlLmh0bWwiPlJlbGVhc2UgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1dlYnNpdGVHdWlkZS5odG1sIj5XZWJzaXRlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnRlZ3JhdGlvbiI+SW50ZWdyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1NvYXBSZXN0QVBJLmh0bWwiPlNPQVAvUkVTVCBBUEk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Jlc3RBUElTYW1wbGUuaHRtbCI+UkVTVCBBUEkgU2FtcGxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9MZGFwQW5kQURTLmh0bWwiPkxkYXAgYW5kIEFEUzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCI+Vm9JUCBhbmQgU0lQPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9FcnJvcnNUYWJsZS5odG1sIj5FcnJvcnMgdGFibGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI1BsdWdpbnMiPlBsdWdpbnM8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01vb2RsZVBsdWdpbi5odG1sIj5Nb29kbGUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TYWthaVBsdWdpbi5odG1sIj5TYWthaSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0ppcmFQbHVnaW4uaHRtbCI+SmlyYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pvb21sYVBsdWdpbi5odG1sIj5Kb29tbGEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9EcnVwYWxQbHVnaW4uaHRtbCI+RHJ1cGFsIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQml0cml4UGx1Z2luLmh0bWwiPkJpdHJpeCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCI+Q29uZmx1ZW5jZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiPlN1Z2FyQ1JNIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVkbWluZVBsdWdpbi5odG1sIj5SZWRtaW5lIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29uZmlndXJhdGlvbiI+Q29uZmlndXJhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+REIgU2FtcGxlIENvbmZpZ3VyYXRpb25zPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQXBhY2hlRGVyYnlDb25maWcuaHRtbCI+QXBhY2hlIERlcmJ5PC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JQk1EQjJDb25maWcuaHRtbCI+SUJNIERCMjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3JhY2xlQ29uZmlnLmh0bWwiPk9yYWNsZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTXlTUUxDb25maWcuaHRtbCI+TXlTUUw8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Bvc3RncmVzQ29uZmlnLmh0bWwiPlBvc3RncmVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Mb2NhbGl6YXRpb24gYW5kIGxhbmd1YWdlczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiPkludGVybmF0aW9uYWxpc2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9MYW5ndWFnZUVkaXRvci5odG1sIj5MYW5ndWFnZUVkaXRvcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vVGltZVpvbmVIYW5kbGluZy5odG1sIj5UaW1lWm9uZUhhbmRsaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9FZGl0VGVtcGxhdGVzLmh0bWwiPkVkaXRUZW1wbGF0ZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk5BVCBQb3J0IFNldHRpbmdzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9ydFNldHRpbmdzLmh0bWwiPlBvcnQgc2V0dGluZ3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlBlcmZvcm1hbmNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCI+SlZNIHBlcmZvcm1hbmNlIHR1bmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+VXNlciBJbnRlcmZhY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiPlRoZW1lczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRGFzaGJvYXJkLmh0bWwiPkRhc2hib2FyZDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCI+V2ViY2FtIHJlc29sdXRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCI+Um9vbSBsYXlvdXQgb3B0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSG90S2V5cy5odG1sIj5Ib3QgS2V5czwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q3VzdG9taXphdGlvbjwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmFwcE5hbWVQYXRoLmh0bWwiPldlYmFwcCBuYW1lL3BhdGg8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL05hdmlnYXRpb24uaHRtbCI+TmF2aWdhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIj5DYWxlbmRhciBhbmQgdGltZXpvbmU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCI+Q3VzdG9tIHJvb20gdHlwZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCI+Q3VzdG9tIGN0eXB0IG1lY2hhbmlzbTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCI+R2VuZXJhbCBDb25maWd1cmF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5TZWN1cml0eTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCI+UmVzdHJpY3RlZCBBY2Nlc3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1JUTVBTQW5kSFRUUFMuaHRtbCI+UlRNUFMgYW5kIEhUVFBTPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Db252ZXJ0ZXJzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIj5PcGVuT2ZmaWNlIENvbnZlcnRlcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIj5GRk1QRUcgVmVyc2lvbiBTd2l0Y2g8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNsdXN0ZXJpbmc8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DbHVzdGVyaW5nLmh0bWwiPkNsdXN0ZXJpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk1pc2M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZXRWZXJzaW9uSW5mby5odG1sIj5HZXQgdmVyc2lvbiBpbmZvPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAKKyAgICA8L2Rpdj4KKyAgICAgCisgICAgPGJyLz4KKyAgICAKKyAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iTmlnaHRseSBCdWlsZHMiPjxzdHJvbmc+TmlnaHRseSBCdWlsZHM8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQlZb3UgY2FuIGZpbmQgTmlnaHRseSBCdWlsZHMgb2YgdGhlIHNvZnR3YXJlIGF0Og0KKwkJCQk8YSBocmVmPSJodHRwczovL2J1aWxkcy5hcGFjaGUub3JnL3ZpZXcvTS1SL3ZpZXcvT3Blbk1lZXRpbmdzLyIgcmVsPSJub2ZvbGxvdyIgdGFyZ2V0PSJfQkxBTksiPg0KKwkJCQkJaHR0cHM6Ly9idWlsZHMuYXBhY2hlLm9yZy92aWV3L00tUi92aWV3L09wZW5NZWV0aW5ncy8NCisJCQkJPC9hPg0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkID48IS0tIGJnY29sb3I9IiNFRUVFRUUiIC0tPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0idmVyZGFuYSxhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IkhvdyB0byBCdWlsZCBhIERpc3RyaWJ1dGlvbiI+PHN0cm9uZz5Ib3cgdG8gQnVpbGQgYSBEaXN0cmlidXRpb248L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorCQkJCTxwPlRvIGJ1aWxkIGEgYmluYXJ5IHJlbGVhc2Ugb2YgT3Blbk1lZXRpbmdzIHlvdSBuZWVkOiA8L3A+DQorCQkJCTx1bD4NCisJCQkJCTxsaT5TdW4gSkRLNjwvbGk+DQorCQkJCQk8bGk+QXBhY2hlIEFOVCAobWluaW11bSkgMS44LjM8L2xpPg0KKwkJCQkJPGxpPg0KKwkJCQkJCVNWTiBDb21tYW5kIGxpbmUgY2xpZW50IChTdWJ2ZXJzaW9uIDEuNyByZXF1aXJlZCEpDQorCQkJCQkJPGEgaHJlZj0iaHR0cDovL3N1YnZlcnNpb24uYXBhY2hlLm9yZy9wYWNrYWdlcy5odG1sIiB0YXJnZXQ9Il9CTEFOSyIgcmVsPSJub2ZvbGxvdyI+aHR0cDovL3N1YnZlcnNpb24uYXBhY2hlLm9yZy9wYWNrYWdlcy5odG1sPC9hPg0KKwkJCQkJPC9saT4NCisJCQkJPC91bD4NCisJCQk8L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPkdldCB0aGUgc291cmNlOiA8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ4bWxjb2RlIj4NCisJCQkJc3ZuIGNoZWNrb3V0DQorCQkJCWh0dHBzOi8vc3ZuLmFwYWNoZS5vcmcvcmVwb3MvYXNmL29wZW5tZWV0aW5ncy90cnVuay9zaW5nbGV3ZWJhcHAvDQorCQkJPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5SdW4gdGhlIGNvbW1hbmQ6IDwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InhtbGNvZGUiPg0KKwkJCQlhbnQNCisJCQk8L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlRoZXJlIGlzIG5vIG5lZWQgdG8gY29tcGlsZSB0aGUgY2xpZW50IGFkZGl0aW9uYWxseSEgVGhlIGFudCB0YXNrDQorCQkJCWRvZXMgaXQgYWxsISBZb3Ugd2lsbCBmaW5kIGEgZGlyZWN0b3J5IGRpc3QgdGhhdCBjb250YWlucw0KKwkJCQlPcGVuTWVldGluZ3MgYW5kIGEgcmVkNS1zZXJ2ZXIuDQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+VG8gY29tcGlsZSB0aGUgY2xpZW50IHlvdSBjYW4gYWxzbyB1c2UgYW50OiA8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ4bWxjb2RlIj4NCisJCQkJYW50DQorCQkJCTxzcGFuIHN0eWxlPSJtYXJnaW4tbGVmdDogMjAwcHg7Ij4jIGNvbXBpbGVzIGEgY29tcGxldGUgcGFja2FnZSBpbnRvIHRoZSBmb2xkZXIgZGlzdA0KKwkJCQk8L3NwYW4+DQorCQkJCTxiciAvPg0KKwkJCQlhbnQgY29tcGlsZS5sYXN6bG8ubWFpbg0KKwkJCQk8c3BhbiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDcwcHg7Ij4jIGNvbXBpbGVzIHRoZSBjbGllbnQgaW50byBtYWluLmFzMy5zd2YxMC5zd2YgYW5kDQorCQkJCQltYWluLnN3Zjguc3dmPC9zcGFuPg0KKwkJCQk8YnIgLz4NCisJCQkJYW50IGNvbXBpbGUubGFzemxvLm1haW4uZGVidWcNCisJCQkJPHNwYW4gc3R5bGU9Im1hcmdpbi1sZWZ0OiAzMHB4OyI+IyBjb21waWxlcyB0aGUgZGVidWctY2xpZW50IGludG8NCisJCQkJCW1haW5kZWJ1Zy5hczMuc3dmMTAuc3dmIGFuZCBtYWluZGVidWcuc3dmOC5zd2YNCisJCQkJPC9zcGFuPg0KKwkJCQk8YnIgLz4NCisJCQkJYW50IC1EZGI9Jmx0O25hbWUgb2YgREImZ3Q7DQorCQkJCTxzcGFuIHN0eWxlPSJtYXJnaW4tbGVmdDogNTBweDsiPiMgd2lsbCBjb3B5ICZsdDtuYW1lIG9mIERCJmd0O19wZXJzaXN0ZW5zZS54bWwgdG8NCisJCQkJCXBlcnNpc3RlbnNlLnhtbA0KKwkJCQk8L3NwYW4+DQorCQkJCTxiciAvPg0KKwkJCQk8c3BhbiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDIzMHB4OyI+Iyhmb3IgZXguIGFudCAtRGRiPW15c3FsIHdpbGwgc2V0IG15c3FsIGFzIGRlZmF1bHQNCisJCQkJCURCKQ0KKwkJCQk8L3NwYW4+DQorCQkJPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5UbyBjb21waWxlIGp1c3QgdGhlIG9wZW5tZWV0aW5ncyBKQVIgZmlsZTogPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ieG1sY29kZSI+DQorCQkJCWFudCBqYXIub25seQ0KKwkJCTwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQorCQkJCVRvIHJ1biBKdW5pdCB0ZXN0cyB1c2luZyBBTlQgc2VlDQorCQkJCTxhIGhyZWY9IkpVbml0VGVzdGluZy5odG1sIj5KVW5pdFRlc3Rpbmc8L2E+DQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iUnVuLCBEZXZlbG9wLCBUZXN0Ij48c3Ryb25nPlJ1biwgRGV2ZWxvcCwgVGVzdDwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgICA8aHIgc3R5bGU9IndpZHRoOjEwMCU7IGNvbG9yOiM5OTk5OTk7IGJhY2tncm91bmQtY29sb3I6Izk5OTk5OTsgaGVpZ2h0OjFweDsgYm9yZGVyOjBweDsiLz4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQorCQkJCVRvIGRldmVsb3Agb3IgYnVpbGQgT3Blbk1lZXRpbmdzIHlvdSBjaGVja291dCB0aGUgc291cmNlIGFzIEVjbGlwc2UNCisJCQkJcHJvamVjdC4gWW91IG5lZWQgdGhlIFN1YmNsaXBzZSBvciBTdWJ2ZXJzaXZlIFBsdWdpbiBmb3IgRWNsaXBzZS4gSWYNCisJCQkJeW91IGp1c3QgbmVlZCB0byBjaGFuZ2UgMyBsaW5lcyBvZiBjb2RlIHRoZW4geW91ciBwcm9iYWJseSBiZXR0ZXINCisJCQkJc3dpdGNoIHRvDQorCQkJCTxhIGhyZWY9IiNIb3dfdG9fYnVpbGRfYV9kaXN0cmlidXRpb24iIHJlbD0ibm9mb2xsb3ciPkhvdyB0byBidWlsZCBhDQorCQkJCQlkaXN0cmlidXRpb24NCisJCQkJPC9hPg0KKwkJCQkuDQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCBiZ2NvbG9yPSIjRUZFRkVGIj4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9ImFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iU3RlcDEgLSBHZXQgcmVxdWlyZWQgU29mdHdhcmUiPjxzdHJvbmc+U3RlcDEgLSBHZXQgcmVxdWlyZWQgU29mdHdhcmU8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+VG8gZGV2ZWxvcCBPcGVuTWVldGluZ3MgeW91IG5lZWQgYXQgbGVhc3Q6IDwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4NCisJCQkJCTxsaT5FY2xpcHNlIGluIGEgdXAgdG8gZGF0ZSBjb3B5IGFuZCBTdW4gSkRLNiA8L2xpPg0KKwkJCQkJPGxpPkFwYWNoZSBBTlQgKG1pbmltdW0pIDEuOC4zPC9saT4NCisJCQkJCTxsaT4NCisJCQkJCQlTdWJjbGlwc2UgMS44IChTdWJ2ZXJzaW9uIDEuNyByZXF1aXJlZCEpDQorCQkJCQkJPGEgaHJlZj0iaHR0cDovL3N1YmNsaXBzZS50aWdyaXMub3JnLyIgdGFyZ2V0PSJfQkxBTksiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9zdWJjbGlwc2UudGlncmlzLm9yZy8NCisJCQkJCQk8L2E+DQorCQkJCQk8L2xpPg0KKwkJCQkJPGxpPg0KKwkJCQkJCVNWTiBDb21tYW5kIGxpbmUgY2xpZW50IChTdWJ2ZXJzaW9uIDEuNyByZXF1aXJlZCEpDQorCQkJCQkJPGEgaHJlZj0iaHR0cDovL3N1YnZlcnNpb24uYXBhY2hlLm9yZy9wYWNrYWdlcy5odG1sIiB0YXJnZXQ9Il9CTEFOSyIgcmVsPSJub2ZvbGxvdyI+aHR0cDovL3N1YnZlcnNpb24uYXBhY2hlLm9yZy9wYWNrYWdlcy5odG1sPC9hPg0KKwkJCQkJPC9saT4NCisJCQkJCTxsaT5TcHJpbmcgSURFIGZvciBFY2xpcHNlIChpbnN0YWxsYWJsZSB2aWEgSGVscCAmZ3Q7IEVjbGlwc2UNCisJCQkJCQlNYXJrZXRwbGFjZSkNCisJCQkJCTwvbGk+DQorCQkJCQk8bGk+DQorCQkJCQkJQXBhY2hlIEl2eURF4oSiIEZvciBFY2xpcHNlIChpbnN0YWxsYWJsZSB2aWEgSGVscCAmZ3Q7IEluc3RhbGwNCisJCQkJCQlOZXcgU29mdHdhcmUpDQorCQkJCQkJVVJMOiBodHRwOi8vd3d3LmFwYWNoZS5vcmcvZGlzdC9hbnQvaXZ5ZGUvdXBkYXRlc2l0ZQ0KKwkJCQkJCWRldGFpbGVkIHN0ZXBzIGNhbiBiZSBmb3VuZCBoZXJlOg0KKwkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9hbnQuYXBhY2hlLm9yZy9pdnkvaXZ5ZGUvZG93bmxvYWQuY2dpIiB0YXJnZXQ9Il9CTEFOSyIgcmVsPSJub2ZvbGxvdyI+aHR0cDovL2FudC5hcGFjaGUub3JnL2l2eS9pdnlkZS9kb3dubG9hZC5jZ2k8L2E+DQorCQkJCQk8L2xpPg0KKwkJCQkJPGxpPk15U1FMIChvciBQb3N0Z3Jlcywgb3Igb3RoZXIgRGF0YWJhc2VzIHN1cHBvcnRlZCBieSBvcGVuSlBBKQ0KKwkJCQkJCWFyZSBvcHRpb25hbGx5IGJ1dCBoYW5keSB0byBoYXZlIHRoZW0NCisJCQkJCTwvbGk+DQorCQkJCTwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCBiZ2NvbG9yPSIjRUZFRkVGIj4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9ImFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iU3RlcDIgLSBEb3dubG9hZCB0aGUgU291cmNlIj48c3Ryb25nPlN0ZXAyIC0gRG93bmxvYWQgdGhlIFNvdXJjZTwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5BZHZhbmNlZCBVc2VyczogQ2hlY2sgb3V0IHRoZSBDb2RlIGZyb20gdGhlIFJlcG9zaXRvcnkgYXMgYQ0KKwkJCQkJSmF2YQ0KKwkJCQkJcHJvamVjdCBpbnRvIEVjbGlwc2UuDQorCQkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQkJVVJMOg0KKwkJCQkJPGEgaHJlZj0iaHR0cHM6Ly9zdm4uYXBhY2hlLm9yZy9yZXBvcy9hc2Yvb3Blbm1lZXRpbmdzL3RydW5rL3NpbmdsZXdlYmFwcC8iPg0KKwkJCQkJCWh0dHBzOi8vc3ZuLmFwYWNoZS5vcmcvcmVwb3MvYXNmL29wZW5tZWV0aW5ncy90cnVuay9zaW5nbGV3ZWJhcHAvDQorCQkJCQk8L2E+DQorCQkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlRvIGRvd25sb2FkIHRoZSByZXF1aXJlZCBKQVJzIGZvciBidWlsZGluZyBhbmQgZGV2ZWxvcGluZw0KKwkJCQkJT3Blbk1lZXRpbmdzIHlvdSBuZWVkIHRvIHJ1biB0aGUgQU5UIGNvbWFuZDoNCisJCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ieG1sY29kZSI+DQorCQkJCQlhbnQgLURkYj0mbHQ7eW91cl9EQiZndDsgcHJlcGFyZS1lY2xpcHNlDQorCQkJCTwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+QWZ0ZXIgdGhlIEFOVCBjb21tYW5kIHlvdSBuZWVkIHRvIHByZXNzIEY1IGFuZCByZWJ1aWxkIHRoZQ0KKwkJCQkJcHJvamVjdCBmcm9tIGluc2lkZSBFY2xpcHNlDQorCQkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlN0ZXAtQnktU3RlcDogPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+MSkgU3RhcnQgRWNsaXBzZSA8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJCTIpIENoYW5nZSBQZXJzcGVjdGl2ZSB0byBTVk4gUmVwb3NpdG9yeSBFeHBsb3Jpbmc6DQorCQkJCQk8YnIgLz4NCisJCQkJCTxiciAvPg0KKwkJCQkJPGEgY2xhc3M9ImZhbmN5Ym94LWJ1dHRvbnMiIGhyZWY9ImltYWdlcy9jaGVja291dF8xLnBuZyI+DQorCQkJCQkJPGltZyBzcmM9ImltYWdlcy9jaGVja291dF8xLnBuZyIgYWx0PSIiIHdpZHRoPSI0MDAiIGhlaWdodD0iMjg5IiAvPg0KKwkJCQkJPC9hPg0KKw0KKwkJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJCTMpIFNlbGVjdCBTVk4gUmVwb3NpdG9yeSBFeHBsb3JpbmcgYW5kIGNsaWNrIG9rLg0KKwkJCQkJPGJyIC8+DQorCQkJCQk8YnIgLz4NCisJCQkJCTxhIGNsYXNzPSJmYW5jeWJveC1idXR0b25zIiBocmVmPSJpbWFnZXMvY2hlY2tvdXRfMi5wbmciPg0KKwkJCQkJCTxpbWcgc3JjPSJpbWFnZXMvY2hlY2tvdXRfMi5wbmciIGFsdD0iIiB3aWR0aD0iMzA0IiBoZWlnaHQ9IjQxNyIgLz4NCisJCQkJCTwvYT4NCisJCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQorCQkJCQk0KSBBIG5ldyBEaWFsb2cgaW4gRWNsaXBzZSBvcGVucw0KKwkJCQkJPHN0cm9uZz5TVk4gUmVwb3NpdG9yaWVzPC9zdHJvbmc+DQorCQkJCQk8YnIgLz4NCisJCQkJCTxiciAvPg0KKwkJCQkJPGEgY2xhc3M9ImZhbmN5Ym94LWJ1dHRvbnMiIGhyZWY9ImltYWdlcy9jaGVja291dF8zLnBuZyI+DQorCQkJCQkJPGltZyBzcmM9ImltYWdlcy9jaGVja291dF8zLnBuZyIgYWx0PSIiIHdpZHRoPSI0NjAiIGhlaWdodD0iMTAyIiAvPg0KKwkJCQkJPC9hPg0KKwkJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJCTUpIENsaWNrIG9uIHRoZSBpY29uIHdpdGggdGhlIHBsdXMgaW4gdGhlIHRvcCByaWdodCBjb3JuZXIgaW4gdGhlDQorCQkJCQlTVk4gUmVwb3NpdG9yeSBEaWFsb2cNCisJCQkJCTxiciAvPg0KKwkJCQkJPGJyIC8+DQorCQkJCQk8YSBjbGFzcz0iZmFuY3lib3gtYnV0dG9ucyIgaHJlZj0iaW1hZ2VzL2NoZWNrb3V0XzQucG5nIj4NCisJCQkJCQk8aW1nIHNyYz0iaW1hZ2VzL2NoZWNrb3V0XzQucG5nIiBhbHQ9IiIgd2lkdGg9IjU3IiBoZWlnaHQ9IjM4IiAvPg0KKwkJCQkJPC9hPg0KKwkJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJCTYpIEFkZCB0aGUgVVJMDQorCQkJCQk8YSBocmVmPSJodHRwczovL3N2bi5hcGFjaGUub3JnL3JlcG9zL2FzZi9vcGVubWVldGluZ3MvdHJ1bmsvc2luZ2xld2ViYXBwLyIgcmVsPSJub2ZvbGxvdyI+aHR0cHM6Ly9zdm4uYXBhY2hlLm9yZy9yZXBvcy9hc2Yvb3Blbm1lZXRpbmdzL3RydW5rL3NpbmdsZXdlYmFwcC8NCisJCQkJCTwvYT4NCisJCQkJCWFuZCBjbGljayBGaW5pc2gNCisJCQkJCTxiciAvPg0KKwkJCQkJPGJyIC8+DQorCQkJCQk8YSBjbGFzcz0iZmFuY3lib3gtYnV0dG9ucyIgaHJlZj0iaW1hZ2VzL2NoZWNrb3V0XzUucG5nIj4NCisJCQkJCQk8aW1nIHNyYz0iaW1hZ2VzL2NoZWNrb3V0XzUucG5nIiBhbHQ9IiIgd2lkdGg9IjQ1NSIgaGVpZ2h0PSIyNzIiIC8+DQorCQkJCQk8L2E+DQorCQkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQkJNykgQWZ0ZXIgZG93bmxvYWQgaXMgY29tcGxldGUgeW91IHNlZSBhIG5ldyBTb3VyY2UgUmVwb3NpdG9yeSBpbg0KKwkJCQkJdGhlIFJlcG9zaXRvcnkgRXhwbG9yZXIuIFJpZ2h0IGNsaWNrIG9uIGl0IGFuZCBjaG9vc2UNCisJCQkJCTxzdHJvbmc+Y2hlY2tvdXQ8L3N0cm9uZz4NCisJCQkJCTxiciAvPg0KKwkJCQkJPGJyIC8+DQorCQkJCQk8YSBjbGFzcz0iZmFuY3lib3gtYnV0dG9ucyIgaHJlZj0iaW1hZ2VzL2NoZWNrb3V0XzYucG5nIj4NCisJCQkJCQk8aW1nIHNyYz0iaW1hZ2VzL2NoZWNrb3V0XzYucG5nIiBhbHQ9IiIgd2lkdGg9IjM0MCIgaGVpZ2h0PSIxMzUiIC8+DQorCQkJCQk8L2E+DQorCQkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQkJOCkgSW4gdGhlIERpYWxvZyB0aGUgb3BlbnMgbm93IGp1c3QgY2xpY2sgbmV4dA0KKwkJCQkJPGJyIC8+DQorCQkJCQk8YnIgLz4NCisJCQkJCTxhIGNsYXNzPSJmYW5jeWJveC1idXR0b25zIiBocmVmPSJpbWFnZXMvY2hlY2tvdXRfNy5wbmciPg0KKwkJCQkJCTxpbWcgc3JjPSJpbWFnZXMvY2hlY2tvdXRfNy5wbmciIGFsdD0iIiB3aWR0aD0iMzkwIiBoZWlnaHQ9IjMzOCIgLz4NCisJCQkJCTwvYT4NCisJCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQorCQkJCQk5KSBJbiB0aGUgbmV4dCBEaWFsb2cganVzdCBjbGljayBGaW5pc2gsIEVjbGlwc2Ugd2lsbCB0aGVuIGRvd25sb2FkDQorCQkJCQl0aGUgc291cmNlcw0KKwkJCQkJPGJyIC8+DQorCQkJCQk8YnIgLz4NCisJCQkJCTxhIGNsYXNzPSJmYW5jeWJveC1idXR0b25zIiBocmVmPSJpbWFnZXMvY2hlY2tvdXRfOC5wbmciPg0KKwkJCQkJCTxpbWcgc3JjPSJpbWFnZXMvY2hlY2tvdXRfOC5wbmciIGFsdD0iIiB3aWR0aD0iMzkwIiBoZWlnaHQ9IjMzOCIgLz4NCisJCQkJCTwvYT4NCisJCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQorCQkJCQkxMCkgQWZ0ZXIgdGhlIGRvd25sb2FkIGlzIGNvbXBsZXRlIHlvdSB3aWxsIHNlZSBhIG5ldyBQcm9qZWN0IGluDQorCQkJCQl0aGUgUGFja2FnZSBFeHBsb3JlciBEaWFsb2cgb2YgRWNsaXBzZQ0KKwkJCQkJPGJyIC8+DQorCQkJCQk8YnIgLz4NCisJCQkJCTxhIGNsYXNzPSJmYW5jeWJveC1idXR0b25zIiBocmVmPSJpbWFnZXMvY2hlY2tvdXRfOS5wbmciPg0KKwkJCQkJCTxpbWcgc3JjPSJpbWFnZXMvY2hlY2tvdXRfOS5wbmciIGFsdD0iIiB3aWR0aD0iMzEwIiBoZWlnaHQ9IjI5NyIgLz4NCisJCQkJCTwvYT4NCisJCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisJCQkJCTExKSBQbGVhc2UgcnVuDQorCQkJCQk8ZGl2IGNsYXNzPSJ4bWxjb2RlIj4NCisJCQkJCQlhbnQgcHJlcGFyZS1lY2xpcHNlDQorCQkJCQk8L2Rpdj4NCisJCQkJCXRvIGRvd25sb2FkIGFsbCBuZWNlc3NhcnkgamFyIGZpbGVzLCBhbmQgcGVyZm9ybSBzb3VyY2UNCisJCQkJCTx0dD5SZWZyZXNoPC90dD4NCisJCQkJCXRvIHJlc29sdmUgYWxsIGNvbXBpbGF0aW9uIGlzc3Vlcy4NCisJCQkJPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCBiZ2NvbG9yPSIjRUZFRkVGIj4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9ImFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iU3RlcDMgLSBEZXBsb3kgYW5kIFJ1biI+PHN0cm9uZz5TdGVwMyAtIERlcGxveSBhbmQgUnVuPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQkJc2VlIHRoZSBmaXJzdCBjaGFwdGVyIGFib3V0IHRoZSBBTlQgdGFza3MgdG8gY29tcGlsZSB0aGUgY29kZS4gWW91DQorCQkJCQl3aWxsIGZpbmQgYSBkaXJlY3RvcnkgY2FsbGVkDQorCQkJCQk8c3Ryb25nPmRpc3Q8L3N0cm9uZz4NCisJCQkJCXdoaWNoIGNvbnRhaW5zIGEgcmVndWxhciBvcGVubWVldGluZ3MgaW5jbHVkaW5nIHJlZDUuIFlvdSBjYW4gdGhlbg0KKwkJCQkJdXNlIHRoZSB1c3VhbCBwcm9jZXNzIGxpa2UgZGVzY3JpYmVkIGF0DQorCQkJCQk8YSBocmVmPSJpbnN0YWxsYXRpb24uaHRtbCI+aW5zdGFsbGF0aW9uPC9hPg0KKwkJCQkJdG8gcnVuIHRoZSBjb2RlIHRoZW4uDQorCQkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJMaW5rcyI+PHN0cm9uZz5MaW5rczwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgICA8aHIgc3R5bGU9IndpZHRoOjEwMCU7IGNvbG9yOiM5OTk5OTk7IGJhY2tncm91bmQtY29sb3I6Izk5OTk5OTsgaGVpZ2h0OjFweDsgYm9yZGVyOjBweDsiLz4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPg0KKwkJCQk8bGk+DQorCQkJCQlHZXR0aW5nIFN0YXJ0ZWQgd2l0aCBPcGVuTGFzemxvLCBjaGVja291dA0KKwkJCQkJPGEgaHJlZj0iaHR0cDovL3d3dy5vcGVubGFzemxvLm9yZy9scHM0LjIvbGFzemxvLWV4cGxvcmVyL2luZGV4LmpzcD9senI9c3dmOCIgdGFyZ2V0PSJfQkxBTksiIHJlbD0ibm9mb2xsb3ciPkxhc3psby1pbi0xMC1NaW51dGVzPC9hPg0KKwkJCQkJYW5kIHRoZQ0KKwkJCQkJPGEgaHJlZj0iaHR0cDovL3d3dy5vcGVubGFzemxvLm9yZy9scHM0LjIvZG9jcy8iIHRhcmdldD0iX0JMQU5LIiByZWw9Im5vZm9sbG93Ij5BcHBsaWNhdGlvbg0KKwkJCQkJCURldmVsb3BlcidzIEd1aWRlDQorCQkJCQk8L2E+DQorCQkJCQlvciB0cnkgdGhlDQorCQkJCQk8YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5sYXN6bG8ub3JnL2dldHN0YXJ0ZWQiIHRhcmdldD0iX0JMQU5LIiByZWw9Im5vZm9sbG93Ij5TY3JlZW5DYXN0PC9hPg0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+DQorCQkJCQk8YSBocmVmPSJodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvc3ZuLmh0bWwiPg0KKwkJCQkJCWJyb3dzZSBTVk4gc291cmNlDQorCQkJCQk8L2E+DQorCQkJCTwvbGk+DQorCQkJPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkID48IS0tIGJnY29sb3I9IiNFRUVFRUUiIC0tPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0idmVyZGFuYSxhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IlRpcHBzIGFuZCBHb3RjaGFzIj48c3Ryb25nPlRpcHBzIGFuZCBHb3RjaGFzPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5XaGVuIHlvdSB3YW50IHRvIGRldmVsb3Agb25seSBjbGllbnQgc2lkZSB0aGVyZSBhcmUgaGFuZHkgQU5UDQorCQkJCXRhc2tzIHNvIHRoYXQgeW91IG9ubHkgcmVidWlsZCB0aGUgU1dGcywgc2FtZSBmb3IgdGhlIEphdmEgc2lkZS4NCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJSXQNCisJCQkJYWxzbyB0YWtlcyBtdWNoIGxlc3MgdGltZSBpZiB5b3UgZG8gdXNlIE15U1FMIGFzIGRhdGFiYXNlIHRoZW4NCisJCQkJcmVidWlsZGluZyB0aGUgc29mdHdhcmUgYW5kIHdhaXRpbmcgZm9yIEFwYWNoZSBEZXJieSB0byBzZXQgdXAgdGhlDQorCQkJCWRhdGFiYXNlIGV2ZXJ5dGltZSB5b3UgZGlkIHJlYnVpbGQuDQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQorCQkJCTxiPldvcmtpbmcgYmVoaW5kIGEgcHJveHk6PC9iPg0KKwkJCQlJZiB5b3UgYXJlIHNpdHRpbmcgYmVoaW5kIGEgcHJveHkgeW91IHNob3VsZCBhZGQgc29tZSBwcm94eSBzZXR0aW5ncw0KKwkJCQliZWZvcmUgc3RhcnRpbmcgdGhlIGJ1aWxkIHByb2Nlc3MuDQorCQkJCTxiciAvPg0KKwkJCQlGb3IgQXBhY2hlIEl2eSBzZWU6DQorCQkJCTxhIGhyZWY9Imh0dHA6Ly9hbnQuYXBhY2hlLm9yZy9pdnkvZmFxLmh0bWwiIHRhcmdldD0iX0JMQU5LIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vYW50LmFwYWNoZS5vcmcvaXZ5L2ZhcS5odG1sDQorCQkJCTwvYT4NCisJCQkJPGJyIC8+DQorCQkJCUZvciBTVk4gQ29tbWFuZCBMaW5lIENsaWVudCAoRnJvbSBDb2xsYWJOZXQgMS43KSBzZWU6DQorCQkJCTxhIGhyZWY9Imh0dHBzOi8vY3RmNmxhdGVzdC5jb2xsYWIubmV0L2ludGVybmFsLWhlbHAvaW5kZXguanNwP3RvcGljPS90ZWFtZm9yZ2U2MTAvZmFxL2NsaWVudF9wcm94eV9zZXR0aW5ncy5odG1sIiB0YXJnZXQ9Il9CTEFOSyIgcmVsPSJub2ZvbGxvdyI+aHR0cHM6Ly9jdGY2bGF0ZXN0LmNvbGxhYi5uZXQvaW50ZXJuYWwtaGVscC9pbmRleC5qc3A/dG9waWM9L3RlYW1mb3JnZTYxMC9mYXEvY2xpZW50X3Byb3h5X3NldHRpbmdzLmh0bWwNCisJCQkJPC9hPg0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPCEtLSBGT09URVIgLS0+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGhyIG5vc2hhZGU9Im5vc2hhZGUiIHNpemU9IjEiLz4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBhbGlnbj0iY2VudGVyIj48Zm9udCBjb2xvcj0iIzEyMzQ2NSIgc2l6ZT0iLTEiPjxlbT4KKyAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0ICYjMTY5OyAyMDAzLTIwMTMsIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorICAgICAgICAgICAgICAgICAgICA8L2VtPjwvZm9udD48L2Rpdj4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9ib2R5PgorICAgIDwvaHRtbD4KKzwhLS0gZW5kIHRoZSBwcm9jZXNzaW5nIC0tPgorCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCmRpZmYgLS1naXQgYS9kb2NzL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCBiL2RvY3MvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2ODBlNzQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbApAQCAtMCwwICsxLDc2OCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CisKKzwhLS0KK0NvcHlyaWdodCAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK3lvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCitodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworCis8IS0tIENvbnRlbnQgU3R5bGVzaGVldCBmb3IgU2l0ZSAtLT4KKworICAgICAgICAKKzwhLS0gc3RhcnQgdGhlIHByb2Nlc3NpbmcgLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDwhLS0gR0VORVJBVEVEIEZJTEUsIERPIE5PVCBFRElULCBFRElUIFRIRSBYTUwgRklMRSBJTiB4ZG9jcyBJTlNURUFEISAtLT4KKyAgICA8IS0tIE1haW4gUGFnZSBTZWN0aW9uIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8aHRtbD4KKyAgICAgICAgPGhlYWQ+CisgICAgICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIvPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSIKKwkJCU9wZW5NZWV0aW5ncyBUZWFtCisJCSI+CisgICAgICAgICAgICA8bWV0YSBuYW1lPSJlbWFpbCIgY29udGVudD0ic2ViYXdhZ25lckBhcGFjaGUub3JnIj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICA8dGl0bGU+QXBhY2hlIE9wZW5NZWV0aW5ncyAtIENoYW5naW5nIHRoZSBDYWxlbmRhciBhbmQgVGltZXpvbmUgZGVmYXVsdDwvdGl0bGU+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3Mvb3Blbm1lZXRpbmdzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvanF1ZXJ5LXVpLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29pbi1zbGlkZXItc3R5bGVzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29sb3Jib3guY3NzIiAvPgorICAgICAgICAgICAgCisJCQk8IS0tIEFkZCBqUXVlcnkgbGlicmFyeSAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS0xLjcuMS5taW4uanMiPjwvc2NyaXB0PgorCQkKKwkJCTwhLS0gQWRkIGNvaW5zbGlkZXIgcGx1Z2lucyAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2NvaW4tc2xpZGVyLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTwhLS0gQWRkIGNvbG9yYm94IHBsdWdpbiAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS5jb2xvcmJveC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5jb3JlLmpzIj48L3NjcmlwdD4KKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkud2lkZ2V0LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmFjY29yZGlvbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQ+CisJCQkkKGZ1bmN0aW9uKCkgeworCQkJCSQoICIjYWNjb3JkaW9uIiApLmFjY29yZGlvbih7CisJCQkJCWF1dG9IZWlnaHQ6IGZhbHNlLAorCQkJCQluYXZpZ2F0aW9uOiB0cnVlLAorCQkJCQluYXZpZ2F0aW9uRmlsdGVyOiBmdW5jdGlvbiAoKSB7CisJCQkJCQl2YXIgc2lkZWJhckhyZWZBcnJheSA9IHRoaXMuaHJlZi5zcGxpdCgiLyIpOworICAgIAkJCQkJdmFyIHNpZGVCYXJMYXN0U3RyaW5nID0gc2lkZWJhckhyZWZBcnJheVtzaWRlYmFySHJlZkFycmF5Lmxlbmd0aCAtIDFdLnRvTG93ZXJDYXNlKCk7CisJCQkJCQkKKwkJCQkJCWlmIChzaWRlQmFyTGFzdFN0cmluZy5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJCQl9CisJCQkJCQkKKwkJCQkJCQkJCQkJCS8qIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgKi8KKwkJCQkJCXZhciBjdXJyZW50U2VjdGlvbiA9ICIiOworCQkJCQkJCisJCQkJCQl2YXIgY3VycmVudExvY2F0aW9uID0gIiI7CisJCQkJCQl2YXIgY3VycmVudExpbmsgPSAiIjsKKwkJCQkJCWlmIChmYWxzZSkgeworCQkJCQkJCisJCQkJCQl9CisgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luZGV4Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luZGV4Lmh0bWwiLnN1YnN0cigxLCAiL2luZGV4Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbGljZW5zZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9saWNlbnNlLmh0bWwiLnN1YnN0cigxLCAiL2xpY2Vuc2UuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIuc3Vic3RyKDEsICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2Rvd25sb2Fkcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kb3dubG9hZHMuaHRtbCIuc3Vic3RyKDEsICIvZG93bmxvYWRzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5zdWJzdHIoMSwgIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5zdGFsbGF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luc3RhbGxhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9pbnN0YWxsYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9VcGdyYWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1VwZ3JhZGUuaHRtbCIuc3Vic3RyKDEsICIvVXBncmFkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLnN1YnN0cigxLCAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29tbWFuZExpbmVBZG1pbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLnN1YnN0cigxLCAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZ2V0LWludm9sdmVkLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZ2V0LWludm9sdmVkLmh0bWwiLnN1YnN0cigxLCAiL2dldC1pbnZvbHZlZC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RlYW0tbGlzdC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3RlYW0tbGlzdC5odG1sIi5zdWJzdHIoMSwgIi90ZWFtLWxpc3QuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9tYWlsLWxpc3RzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbWFpbC1saXN0cy5odG1sIi5zdWJzdHIoMSwgIi9tYWlsLWxpc3RzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5zdWJzdHIoMSwgImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9zdm4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3N2bi5odG1sIi5zdWJzdHIoMSwgIi9zdm4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLnN1YnN0cigxLCAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kZXBlbmRlbmNpZXMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2RlcGVuZGVuY2llcy5odG1sIi5zdWJzdHIoMSwgIi9kZXBlbmRlbmNpZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVW5pdFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pVbml0VGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9KVW5pdFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NYW51YWxUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9NYW51YWxUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL01hbnVhbFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWxlYXNlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlbGVhc2VHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9SZWxlYXNlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJzaXRlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1dlYnNpdGVHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9XZWJzaXRlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU29hcFJlc3RBUEkuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1NvYXBSZXN0QVBJLmh0bWwiLnN1YnN0cigxLCAiL1NvYXBSZXN0QVBJLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdEFQSVNhbXBsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVzdEFQSVNhbXBsZS5odG1sIi5zdWJzdHIoMSwgIi9SZXN0QVBJU2FtcGxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGRhcEFuZEFEUy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTGRhcEFuZEFEUy5odG1sIi5zdWJzdHIoMSwgIi9MZGFwQW5kQURTLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRXJyb3JzVGFibGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0Vycm9yc1RhYmxlLmh0bWwiLnN1YnN0cigxLCAiL0Vycm9yc1RhYmxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01vb2RsZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Nb29kbGVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvTW9vZGxlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU2FrYWlQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU2FrYWlQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU2FrYWlQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KaXJhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0ppcmFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSmlyYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pvb21sYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Kb29tbGFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSm9vbWxhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRHJ1cGFsUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0RydXBhbFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9EcnVwYWxQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CaXRyaXhQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQml0cml4UGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0JpdHJpeFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU3VnYXJDUk1QbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWRtaW5lUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlZG1pbmVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvUmVkbWluZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0lCTURCMkNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0lCTURCMkNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9JQk1EQjJDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09yYWNsZUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09yYWNsZUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9PcmFjbGVDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL015U1FMQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTXlTUUxDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvTXlTUUxDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Bvc3RncmVzQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9zdGdyZXNDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvUG9zdGdyZXNDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9MYW5ndWFnZUVkaXRvci5odG1sIi5zdWJzdHIoMSwgIi9MYW5ndWFnZUVkaXRvci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVGltZVpvbmVIYW5kbGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIuc3Vic3RyKDEsICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRWRpdFRlbXBsYXRlcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIuc3Vic3RyKDEsICIvRWRpdFRlbXBsYXRlcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3J0U2V0dGluZ3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3J0U2V0dGluZ3MuaHRtbCIuc3Vic3RyKDEsICIvUG9ydFNldHRpbmdzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIuc3Vic3RyKDEsICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIuc3Vic3RyKDEsICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRGFzaGJvYXJkLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRGFzaGJvYXJkLmh0bWwiLnN1YnN0cigxLCAiL0Rhc2hib2FyZC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSG90S2V5cy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0hvdEtleXMuaHRtbCIuc3Vic3RyKDEsICIvSG90S2V5cy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJhcHBOYW1lUGF0aC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLnN1YnN0cigxLCAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9OYXZpZ2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTmF2aWdhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9OYXZpZ2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5zdWJzdHIoMSwgIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JUTVBTQW5kSFRUUFMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SVE1QU0FuZEhUVFBTLmh0bWwiLnN1YnN0cigxLCAiL1JUTVBTQW5kSFRUUFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIuc3Vic3RyKDEsICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIuc3Vic3RyKDEsICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DbHVzdGVyaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2x1c3RlcmluZy5odG1sIi5zdWJzdHIoMSwgIi9DbHVzdGVyaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dldFZlcnNpb25JbmZvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2V0VmVyc2lvbkluZm8uaHRtbCIuc3Vic3RyKDEsICIvR2V0VmVyc2lvbkluZm8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJICAgIAkJCQkJCisgICAgCQkJCQljdXJyZW50TGluayA9IGN1cnJlbnRMaW5rLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQljdXJyZW50TG9jYXRpb24gPSBjdXJyZW50TG9jYXRpb24udG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCQorCQkJCQkJcmV0dXJuIHNpZGVCYXJMYXN0U3RyaW5nID09IGN1cnJlbnRMaW5rKyIjIitjdXJyZW50TG9jYXRpb247CisJCQkJCX0KKwkJCQl9KTsKKwkJCX0pOworCQkJPC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwkJCQkkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsKKwkJCQkJJCgnLmZhbmN5Ym94LWJ1dHRvbnMnKS5jb2xvcmJveCh7cmVsOidmYW5jeWJveC1idXR0b25zJyx3aWR0aDoiNzUlIiwgaGVpZ2h0OiI3NSUifSk7CisJCQkJCSQoJyNhY2NvcmRpb24gYScpLmVhY2goZnVuY3Rpb24oKSB7CisJCQkJICAgICAgdmFyIGEgPSAkKHRoaXMpOworCQkJCSAgICAgIHZhciBocmVmID0gYS5hdHRyKCJocmVmIik7CisJCQkJICAgICAgaWYgKGhyZWYuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJICAgICAgCSAgdmFyIGNvbXBhcmVJdCA9IGhyZWYuc3Vic3RyKDIsIGhyZWYubGVuZ3RoKTsKKwkJCQkJICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZihjb21wYXJlSXQpIT0gLTEpIHsKKwkJCQkJICAgICAgIGEuYWRkQ2xhc3MoJ2FjdGl2ZScpOworCQkJCQkgICAgICB9CisJCQkJICAgICAgfQorCQkJCSAgICB9KTsKKwkJCQkJJCgnI2NvaW4tc2xpZGVyJykuY29pbnNsaWRlcih7IHdpZHRoOiA2NDAsaGVpZ2h0OiA0MDAsIGRlbGF5OiA0MDAwICB9KTsJCQkJCQorCQkJCX0pOworCQkJPC9zY3JpcHQ+CQorCQkJCQkJCisJCQk8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorCQkJCS5mYW5jeWJveC1jdXN0b20gLmZhbmN5Ym94LW91dGVyIHsKKwkJCQkJYm94LXNoYWRvdzogMCAwIDUwcHggIzIyMjsKKwkJCQl9CisJCQk8L3N0eWxlPgorICAgICAgICA8L2hlYWQ+CisKKyAgICAgICAgPGJvZHkgYmdjb2xvcj0iI2ZmZmZmZiIgdGV4dD0iIzAwMDAwMCIgbGluaz0iIzEyMzQ2NSIgdmxpbms9IiMxMjM0NjUiIGFsaW5rPSIjMDAwMDAwIj4gIAorICAgICAgICAJPGRpdiBjbGFzcz0ibWFpbmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAJPGRpdiBjbGFzcz0ic3VwZXJib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCI+CisgICAgICAgICAgICAgICAgPCEtLSBUT1AgSU1BR0UgLS0+CisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPgorPGEgaHJlZj0iaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnLyI+PGltZyBzcmM9Ii4vaW1hZ2VzL2xvZ28tMi5qcGciIGFsdD0iQXBhY2hlIE9wZW5NZWV0aW5ncyIgYm9yZGVyPSIwIi8+PC9hPgorPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiID4KKwk8YSBocmVmPSJkZW1vLmh0bWwiPkRlbW88L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iZG93bmxvYWRzLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+RG93bmxvYWQ8L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaW5zdGFsbGF0aW9uLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+SW5zdGFsbGF0aW9uPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTIiB0YXJnZXQ9Il9CTEFOSyI+V2lraTwvYT4KKwk8c3Bhbj4mbmJzcDs8L3NwYW4+Cis8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSI0Ij4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPCEtLSBMRUZUIFNJREUgTkFWSUdBVElPTiAtLT4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIiBub3dyYXA9Im5vd3JhcCI+CisKKyAgICAgICAgICAgICAgICAgICAgPCEtLSBzcGVjaWFsIEFDb24gTG9nbyAtIGxlYXZlIGhlcmUgZm9yIG5leHQgdGltZQorICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vYXBhY2hlY29uLmNvbS8yMDA1L1VTLyI+CisgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2FwYWNoZS5vcmcvaW1hZ2VzL2FjMjAwNXVzX2JsdWVfMTI1eDEyNS5qcGciIGhlaWdodD0iMTI1IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTI1IiBib3JkZXI9IjAiIGFsdD0iQXBhY2hlQ29uIFVTIDIwMDUiIC8+CisgICAgICAgICAgICAgICAgICAgIDwvYT4gIC0tPgorCisgICAgICAgICAgICAgICAgICAgPCEtLSByZWd1bGFyIG1lbnUgLS0+CisKKyAgICAgICAgICAgICAgICAgICAgCisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGRpdiBpZD0iYWNjb3JkaW9uIiBzdHlsZT0id2lkdGg6IDEwMCUiPgorICAgIAorICAgICAgICAgICAgCTxoMz48YSBocmVmPSIjR2VuZXJhbCI+R2VuZXJhbDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5kZXguaHRtbCI+SG9tZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbGljZW5zZS5odG1sIj5MaWNlbnNlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyI+QVNGPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kb3dubG9hZHMuaHRtbCI+RG93bmxvYWRzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCI+Q29tbWVyY2lhbCBTdXBwb3J0PC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnN0YWxsYXRpb25hbmRVcGdyYWRlIj5JbnN0YWxsYXRpb24gYW5kIFVwZ3JhZGU8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luc3RhbGxhdGlvbi5odG1sIj5JbnN0YWxsYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1VwZ3JhZGUuaHRtbCI+VXBncmFkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii5odHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyI+VHV0b3JpYWxzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db21tYW5kTGluZUFkbWluLmh0bWwiPkNvbW1hbmQgTGluZSBBZG1pbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29tbXVuaXR5Ij5Db21tdW5pdHk8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2dldC1pbnZvbHZlZC5odG1sIj5HZXQgSW52b2x2ZWQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3RlYW0tbGlzdC5odG1sIj5Db21taXR0ZXJzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9tYWlsLWxpc3RzLmh0bWwiPk1haWxpbmcgTGlzdHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyI+V2lraTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjRGV2ZWxvcG1lbnQiPkRldmVsb3BtZW50PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9zdm4uaHRtbCI+U291cmNlIENvZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIj5CdWdzIC8gSXNzdWVzIChKSVJBKTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZGVwZW5kZW5jaWVzLmh0bWwiPkRlcGVuZGVuY2llczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCI+QnVpbGQgSW5zdHJ1Y3Rpb25zPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KVW5pdFRlc3RpbmcuaHRtbCI+SlVuaXQgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTWFudWFsVGVzdGluZy5odG1sIj5NYW51YWwgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVsZWFzZUd1aWRlLmh0bWwiPlJlbGVhc2UgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1dlYnNpdGVHdWlkZS5odG1sIj5XZWJzaXRlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnRlZ3JhdGlvbiI+SW50ZWdyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1NvYXBSZXN0QVBJLmh0bWwiPlNPQVAvUkVTVCBBUEk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Jlc3RBUElTYW1wbGUuaHRtbCI+UkVTVCBBUEkgU2FtcGxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9MZGFwQW5kQURTLmh0bWwiPkxkYXAgYW5kIEFEUzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCI+Vm9JUCBhbmQgU0lQPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9FcnJvcnNUYWJsZS5odG1sIj5FcnJvcnMgdGFibGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI1BsdWdpbnMiPlBsdWdpbnM8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01vb2RsZVBsdWdpbi5odG1sIj5Nb29kbGUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TYWthaVBsdWdpbi5odG1sIj5TYWthaSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0ppcmFQbHVnaW4uaHRtbCI+SmlyYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pvb21sYVBsdWdpbi5odG1sIj5Kb29tbGEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9EcnVwYWxQbHVnaW4uaHRtbCI+RHJ1cGFsIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQml0cml4UGx1Z2luLmh0bWwiPkJpdHJpeCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCI+Q29uZmx1ZW5jZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiPlN1Z2FyQ1JNIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVkbWluZVBsdWdpbi5odG1sIj5SZWRtaW5lIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29uZmlndXJhdGlvbiI+Q29uZmlndXJhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+REIgU2FtcGxlIENvbmZpZ3VyYXRpb25zPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQXBhY2hlRGVyYnlDb25maWcuaHRtbCI+QXBhY2hlIERlcmJ5PC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JQk1EQjJDb25maWcuaHRtbCI+SUJNIERCMjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3JhY2xlQ29uZmlnLmh0bWwiPk9yYWNsZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTXlTUUxDb25maWcuaHRtbCI+TXlTUUw8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Bvc3RncmVzQ29uZmlnLmh0bWwiPlBvc3RncmVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Mb2NhbGl6YXRpb24gYW5kIGxhbmd1YWdlczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiPkludGVybmF0aW9uYWxpc2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9MYW5ndWFnZUVkaXRvci5odG1sIj5MYW5ndWFnZUVkaXRvcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vVGltZVpvbmVIYW5kbGluZy5odG1sIj5UaW1lWm9uZUhhbmRsaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9FZGl0VGVtcGxhdGVzLmh0bWwiPkVkaXRUZW1wbGF0ZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk5BVCBQb3J0IFNldHRpbmdzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9ydFNldHRpbmdzLmh0bWwiPlBvcnQgc2V0dGluZ3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlBlcmZvcm1hbmNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCI+SlZNIHBlcmZvcm1hbmNlIHR1bmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+VXNlciBJbnRlcmZhY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiPlRoZW1lczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRGFzaGJvYXJkLmh0bWwiPkRhc2hib2FyZDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCI+V2ViY2FtIHJlc29sdXRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCI+Um9vbSBsYXlvdXQgb3B0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSG90S2V5cy5odG1sIj5Ib3QgS2V5czwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q3VzdG9taXphdGlvbjwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmFwcE5hbWVQYXRoLmh0bWwiPldlYmFwcCBuYW1lL3BhdGg8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL05hdmlnYXRpb24uaHRtbCI+TmF2aWdhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIj5DYWxlbmRhciBhbmQgdGltZXpvbmU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCI+Q3VzdG9tIHJvb20gdHlwZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCI+Q3VzdG9tIGN0eXB0IG1lY2hhbmlzbTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCI+R2VuZXJhbCBDb25maWd1cmF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5TZWN1cml0eTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCI+UmVzdHJpY3RlZCBBY2Nlc3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1JUTVBTQW5kSFRUUFMuaHRtbCI+UlRNUFMgYW5kIEhUVFBTPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Db252ZXJ0ZXJzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIj5PcGVuT2ZmaWNlIENvbnZlcnRlcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIj5GRk1QRUcgVmVyc2lvbiBTd2l0Y2g8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNsdXN0ZXJpbmc8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DbHVzdGVyaW5nLmh0bWwiPkNsdXN0ZXJpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk1pc2M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZXRWZXJzaW9uSW5mby5odG1sIj5HZXQgdmVyc2lvbiBpbmZvPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAKKyAgICA8L2Rpdj4KKyAgICAgCisgICAgPGJyLz4KKyAgICAKKyAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iQ2hhbmdpbmcgdGhlIENhbGVuZGFyIGFuZCBUaW1lem9uZSBkZWZhdWx0Ij48c3Ryb25nPkNoYW5naW5nIHRoZSBDYWxlbmRhciBhbmQgVGltZXpvbmUgZGVmYXVsdDwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgICA8aHIgc3R5bGU9IndpZHRoOjEwMCU7IGNvbG9yOiM5OTk5OTk7IGJhY2tncm91bmQtY29sb3I6Izk5OTk5OTsgaGVpZ2h0OjFweDsgYm9yZGVyOjBweDsiLz4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQorCQkJCUluIGdlbmVyYWwgdGhlIHRpbWV6b25lIGlzIGNvbmZpZ3VyZWQgaW4gdGhlIHVzZXIgcHJvZmlsZSBvZiBlYWNoDQorCQkJCXVzZXIsIHNvIGNoYW5naW5nIHRoZSBzZXJ2ZXIgdGltZXpvbmUgaGFzIG5vIGVmZmVjdCBob3cgdG8gdGhlIHVzZXJzDQorCQkJCWNhbGVuZGFyIGZvciBleGFtcGxlLg0KKwkJCQk8YnIgLz4NCisJCQkJPGJyIC8+DQorCQkJCUhvd2V2ZXIgdGhlcmUgYXJlIHNvbWUgY2lyY3Vtc3RhbmNlcyB3aGVyZSB0aGVyZSBpcyBubyB1c2VyIHByb2ZpbGUNCisJCQkJYXZhaWxhYmxlLg0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkID48IS0tIGJnY29sb3I9IiNFRUVFRUUiIC0tPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0idmVyZGFuYSxhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IkNoYW5naW5nIHNlcnZlcnMgZGVmYXVsdCB0aW16ZW9uZSBmb3IgRW1haWxzIGFuZCBJbnZpdGF0aW9ucyAoZGlzcGxheSkiPjxzdHJvbmc+Q2hhbmdpbmcgc2VydmVycyBkZWZhdWx0IHRpbXplb25lIGZvciBFbWFpbHMgYW5kIEludml0YXRpb25zIChkaXNwbGF5KTwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgICA8aHIgc3R5bGU9IndpZHRoOjEwMCU7IGNvbG9yOiM5OTk5OTk7IGJhY2tncm91bmQtY29sb3I6Izk5OTk5OTsgaGVpZ2h0OjFweDsgYm9yZGVyOjBweDsiLz4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQorCQkJCUdvdG8gQWRtaW5pc3RyYXRpb24gJmd0OyBDb25maWd1cmF0aW9uIGFuZCBjaGFuZ2UgdGhlIGNvbmZpZy1rZXk6DQorCQkJCTx0dD5kZWZhdWx0LnRpbWV6b25lPC90dD4NCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5WYWxpZCB0aW1lem9uZSBoYXZlIHRvIG1lZXQgc3RhbmRhcmRzISA8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJDaGFuZ2luZyBmaXJzdCBkYXkgaW4gd2VlayBmb3IgY2FsZW5kYXIgZnJvbSBTdW5kYXkgdG8gTW9uZGF5Ij48c3Ryb25nPkNoYW5naW5nIGZpcnN0IGRheSBpbiB3ZWVrIGZvciBjYWxlbmRhciBmcm9tIFN1bmRheSB0byBNb25kYXk8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPmluIHRoZSBjb25maWcueG1sIGNoYW5nZSB0aGUga2V5OiA8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ4bWxjb2RlIj4NCisJCQkJJmx0OyEtLQ0KKwkJCQk8YnIgLz4NCisJCQkJRmlyc3QgZGF5IGluIHRoZSBXZWVrIHVzZWQgYnkgdGhlIENhbGVuZGFyDQorCQkJCTxiciAvPg0KKwkJCQkwIG1lYW5zIFN1bmRheQ0KKwkJCQk8YnIgLz4NCisJCQkJMSBtZWFucyBNb25kYXkNCisJCQkJPGJyIC8+DQorCQkJCXRoaXMgaXMgdGhlIHdheSBob3cgdGhlIENlbGVuZGFyIGluaXRzIGEgd2Vlaw0KKwkJCQk8YnIgLz4NCisJCQkJLS0mZ3Q7DQorCQkJCTxiciAvPg0KKwkJCQkmbHQ7Zmlyc3RkYXlpbndlZWsmZ3Q7MCZsdDsvZmlyc3RkYXlpbndlZWsmZ3Q7DQorCQkJCTxiciAvPg0KKwkJCTwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iQ2hhbmdpbmcgdGhlIGRlZmF1bHQgbnVtYmVyIG9mIG1heCBwYXJ0aWNpcGFudHMgb2YgYSBjb25mZXJlbmNlIHJvb20gY3JlYXRlZCB2aWEgY2FsZW5kYXIiPjxzdHJvbmc+Q2hhbmdpbmcgdGhlIGRlZmF1bHQgbnVtYmVyIG9mIG1heCBwYXJ0aWNpcGFudHMgb2YgYSBjb25mZXJlbmNlIHJvb20gY3JlYXRlZCB2aWEgY2FsZW5kYXI8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPkdvdG8NCisJCQkJQWRtaW5pc3RyYXRpb24gJmd0OyBDb25maWd1cmF0aW9uIGFuZCBjaGFuZ2UgdGhlIGNvbmZpZy1rZXk6DQorCQkJCTx0dD5jYWxlbmRhci5jb25mZXJlbmNlLnJvb21zLmRlZmF1bHQuc2l6ZTwvdHQ+DQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8IS0tIEZPT1RFUiAtLT4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGFsaWduPSJjZW50ZXIiPjxmb250IGNvbG9yPSIjMTIzNDY1IiBzaXplPSItMSI+PGVtPgorICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgJiMxNjk7IDIwMDMtMjAxMywgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisgICAgICAgICAgICAgICAgICAgIDwvZW0+PC9mb250PjwvZGl2PgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2JvZHk+CisgICAgPC9odG1sPgorPCEtLSBlbmQgdGhlIHByb2Nlc3NpbmcgLS0+CisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKZGlmZiAtLWdpdCBhL2RvY3MvQ2FsZW5kYXJTZXJ2aWNlLmh0bWwgYi9kb2NzL0NhbGVuZGFyU2VydmljZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4YzNmZTUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL0NhbGVuZGFyU2VydmljZS5odG1sCkBAIC0wLDAgKzEsMTI0NyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+DQorPCEtLQ0KK0NvcHlyaWdodCAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uDQorTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQoreW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKw0KK2h0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKw0KK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCitkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCitsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCistLT4NCisNCisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPg0KKyAgICA8IS0tIEdFTkVSQVRFRCBGSUxFLCBETyBOT1QgRURJVCwgRURJVCBUSEUgVEVNUExBVEUgSU5TVEVBRCEgLS0+DQorICAgIDwhLS0gTWFpbiBQYWdlIFNlY3Rpb24gLS0+DQorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4NCisgICAgDQorICAgICA8aHRtbD4NCisgICAgICAgIDxoZWFkPg0KKwkJPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSIvPg0KKwkJPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSJPcGVuTWVldGluZ3MgVGVhbSI+DQorCQk8bWV0YSBuYW1lPSJlbWFpbCIgY29udGVudD0ic2ViYXdhZ25lckBhcGFjaGUub3JnIj4NCisJCTx0aXRsZT5PcGVuTWVldGluZ3MgQVBJIE1ldGhvZHM8L3RpdGxlPg0KKwkJPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0ib3Blbm1lZXRpbmdzX2RvY3MuY3NzIj4NCisgICAgICAgIDwvaGVhZD4NCisJPGJvZHk+DQorCQ0KKwkJPGgzPkF2YWlsYWJsZSBXZWJTZXJ2aWNlczo8L2gzPg0KKwkNCisJCTxpZnJhbWUgc3JjPSJXZWJzZXJ2aWNlSW5kZXguaHRtbCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMjEwIiBuYW1lPSJXZWJzZXJ2aWNlSW5kZXguaHRtbCINCisJCQlzY3JvbGxpbmc9Im5vIiBtYXJnaW5oZWlnaHQ9IjAiIG1hcmdpbndpZHRoPSIwIiBmcmFtZWJvcmRlcj0iMCI+DQorCQkgIDxwPllvdXIgQnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IGZyYW1lcyAuLi48L3A+DQorCQk8L2lmcmFtZT4NCisJCQ0KKwkJPGhyIC8+DQorCQ0KKwkgICA8aDM+V2ViU2VydmljZTogQ2FsZW5kYXJTZXJ2aWNlPC9oMz4NCisJICAgPHA+Q2FsZW5kYXJTZXJ2aWNlIGNvbnRhaW5zIG1ldGhvZHMgdG8gY3JlYXRlLCBlZGl0IGRlbGV0ZSBjYWxlbmRhciBtZWV0aW5nczxwPg0KKwkgICA8cD5XU0RMIHNhbXBsZSBVcmw6IDxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvQ2FsZW5kYXJTZXJ2aWNlP3dzZGwiPmh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvQ2FsZW5kYXJTZXJ2aWNlP3dzZGw8L2E+PHA+DQorCQ0KKwk8IS0tIExpbmtzIHRvIE1ldGhvZHMgLS0+DQorCSAgIDxoMz5JbmRleCBvZiBNZXRob2RzIGF2YWlsYWJsZSBpbiBDYWxlbmRhclNlcnZpY2U8L2gzPg0KKwkgICANCisgICAgICAgPGRpdiBjbGFzcz0ibmF2aWdhdGlvbiI+DQorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ2V0QXBwb2ludG1lbnRCeVJhbmdlIj48Yj5nZXRBcHBvaW50bWVudEJ5UmFuZ2U8L2I+PC9hPjxici8+DQorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb25fY29tbWVudCI+PGkgPkxvYWQgYXBwb2ludG1lbnRzIGJ5IGEgc3RhcnQgLyBlbmQgcmFuZ2UgZm9yIHRoZSBjdXJyZW50IFNJRDwvaT48L2Rpdj4NCisgICAgICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ2V0QXBwb2ludG1lbnRCeVJhbmdlRm9yVXNlcklkIj48Yj5nZXRBcHBvaW50bWVudEJ5UmFuZ2VGb3JVc2VySWQ8L2I+PC9hPjxici8+DQorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb25fY29tbWVudCI+PGkgPkxvYWQgYXBwb2ludG1lbnRzIGJ5IGEgc3RhcnQgLyBlbmQgcmFuZ2UgZm9yIHRoZSB1c2VySWQ8L2k+PC9kaXY+DQorICAgICAgICAgICAgICAgIDwvZGl2Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dldE5leHRBcHBvaW50bWVudCI+PGI+Z2V0TmV4dEFwcG9pbnRtZW50PC9iPjwvYT48YnIvPg0KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uX2NvbW1lbnQiPjxpID5HZXQgdGhlIG5leHQgQ2FsZW5kYXIgZXZlbnQgZm9yIHRoZSBjdXJyZW50IHVzZXIgb2YgdGhlIFNJRDwvaT48L2Rpdj4NCisgICAgICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ2V0TmV4dEFwcG9pbnRtZW50Rm9yVXNlcklkIj48Yj5nZXROZXh0QXBwb2ludG1lbnRGb3JVc2VySWQ8L2I+PC9hPjxici8+DQorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb25fY29tbWVudCI+PGkgPkdldCB0aGUgbmV4dCBDYWxlbmRhciBldmVudCBmb3IgdXNlcklkPC9pPjwvZGl2Pg0KKyAgICAgICAgICAgICAgICA8L2Rpdj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzZWFyY2hBcHBvaW50bWVudEJ5TmFtZSI+PGI+c2VhcmNoQXBwb2ludG1lbnRCeU5hbWU8L2I+PC9hPjxici8+DQorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb25fY29tbWVudCI+PGkgPlNlYXJjaCBhIGNhbGVuZGFyIGV2ZW50IGZvciB0aGUgY3VycmVudCBTSUQ8L2k+PC9kaXY+DQorICAgICAgICAgICAgICAgIDwvZGl2Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NhdmVBcHBvaW50bWVudCI+PGI+c2F2ZUFwcG9pbnRtZW50PC9iPjwvYT48YnIvPg0KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uX2NvbW1lbnQiPjxpID5TYXZlIGFuIGFwcG9pbnRtZW50PC9pPjwvZGl2Pg0KKyAgICAgICAgICAgICAgICA8L2Rpdj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorICAgICAgICAgICAgICAgIDxhIGhyZWY9IiN1cGRhdGVBcHBvaW50bWVudFRpbWVPbmx5Ij48Yj51cGRhdGVBcHBvaW50bWVudFRpbWVPbmx5PC9iPjwvYT48YnIvPg0KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uX2NvbW1lbnQiPjxpID5VcGRhdGUgYW4gY2FsZW5kYXIgZXZlbnQgdGltZSBvbmx5PC9pPjwvZGl2Pg0KKyAgICAgICAgICAgICAgICA8L2Rpdj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorICAgICAgICAgICAgICAgIDxhIGhyZWY9IiN1cGRhdGVBcHBvaW50bWVudCI+PGI+dXBkYXRlQXBwb2ludG1lbnQ8L2I+PC9hPjxici8+DQorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb25fY29tbWVudCI+PGkgPlNhdmUgYW4gYXBwb2ludG1lbnQ8L2k+PC9kaXY+DQorICAgICAgICAgICAgICAgIDwvZGl2Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2RlbGV0ZUFwcG9pbnRtZW50Ij48Yj5kZWxldGVBcHBvaW50bWVudDwvYj48L2E+PGJyLz4NCisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2aWdhdGlvbl9jb21tZW50Ij48aSA+ZGVsZXRlIGEgY2FsZW5kYXIgZXZlbnQKKyAKKyBJZiB0aGUgZ2l2ZW4gU0lEIGlzIGZyb20gYW4gQWRtaW5pc3RyYXRvciBvciBXZWItU2VydmljZSB1c2VyLCB0aGUgdXNlcgorIGNhbiBkZWxldGUgYW55IGFwcG9pbnRtZW50Ljxici8+CisgSWYgdGhlIFNJRCBpcyBhc3NpZ25lZCB0byBhIHNpbXBsZSB1c2VyLCBoZSBjYW4gb25seSBkZWxldGUgYXBwb2ludG1lbnRzCisgd2hlcmUgaGUgaXMgYWxzbyB0aGUgb3duZXIvY3JlYXRvciBvZiB0aGUgYXBwb2ludG1lbnQ8L2k+PC9kaXY+DQorICAgICAgICAgICAgICAgIDwvZGl2Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dldEFwcG9pbnRtZW50QnlSb29tSWQiPjxiPmdldEFwcG9pbnRtZW50QnlSb29tSWQ8L2I+PC9hPjxici8+DQorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb25fY29tbWVudCI+PGkgPkxvYWQgYSBjYWxlbmRhciBldmVudCBieSBpdHMgcm9vbSBpZDwvaT48L2Rpdj4NCisgICAgICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ2V0QXBwb2ludG1lbnRDYXRlZ29yeUxpc3QiPjxiPmdldEFwcG9pbnRtZW50Q2F0ZWdvcnlMaXN0PC9iPjwvYT48YnIvPg0KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uX2NvbW1lbnQiPjxpID5HZXQgYWxsIGNhdGVnb3JpZXMgb2YgY2FsZW5kYXIgZXZlbnRzPC9pPjwvZGl2Pg0KKyAgICAgICAgICAgICAgICA8L2Rpdj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnZXRBcHBvaW50bWVudFJlbWluZGVyVHlwTGlzdCI+PGI+Z2V0QXBwb2ludG1lbnRSZW1pbmRlclR5cExpc3Q8L2I+PC9hPjxici8+DQorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb25fY29tbWVudCI+PGkgPkdldCBhbGwgcmVtaW5kZXIgdHlwZXMgZm9yIGNhbGVuZGFyIGV2ZW50czwvaT48L2Rpdj4NCisgICAgICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ2V0QXBwb2ludG1lbnRzQnlXZWVrQ2FsZW5kYXIiPjxiPmdldEFwcG9pbnRtZW50c0J5V2Vla0NhbGVuZGFyPC9iPjwvYT48YnIvPg0KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uX2NvbW1lbnQiPjxpID5HZXQgdGhlIGFwcG9pbnRtZW50cyAoY2FsZW5kYXIgZXZlbnRzKSBmb3IgdGhlIGdpdmVuIHJlcXVlc3RVc2VySWQgPGJyLz4KKyBUaGUgVGltZVpvbmUgY2FuIGJlIGVpdGhlciBnaXZlbiBieSB0aGUgSWQgb2YgdGhlIHRpbWV6b25lIGluIHRoZSB0YWJsZQorICJvbV90aW1lem9uZSIgd2l0aCB0aGUgcGFyYW0gdGltZVpvbmVJZEEgPGJyLz4KKyBPciB3aXRoIHRoZSBqYXZhIG5hbWUgb2YgdGhlIFRpbWVab25lIGluIHRoZSBwYXJhbSBqYXZhVGltZVpvbmVOYW1lPC9pPjwvZGl2Pg0KKyAgICAgICAgICAgICAgICA8L2Rpdj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCisJICAgDQorCSAgICA8aDM+TWV0aG9kcyBEZXRhaWxzIGluIENhbGVuZGFyU2VydmljZTwvaDM+DQorCQ0KKwkJCQkgICAgCQkgICAgICA8ZGl2IGNsYXNzPSJtZXRob2QiPg0KKwkJICAgICAgICA8ZGl2IGNsYXNzPSJtZXRob2RfaGVhZGVyIj4NCisJCSAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTBweCI+DQorICAgIAkJCTxhIG5hbWU9ImdldEFwcG9pbnRtZW50QnlSYW5nZSIgPjxiPmdldEFwcG9pbnRtZW50QnlSYW5nZTwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+Z2V0QXBwb2ludG1lbnRCeVJhbmdlICgNCisgICAgCQkJICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIFNJRA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBEYXRlIHN0YXJ0dGltZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBEYXRlIGVuZHRpbWUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkpDQorICAgIAkJCTwvaT48YnIvPg0KKyAgICAJCQk8cD4NCisgICAgCQkJICBMb2FkIGFwcG9pbnRtZW50cyBieSBhIHN0YXJ0IC8gZW5kIHJhbmdlIGZvciB0aGUgY3VycmVudCBTSUQNCisgICAgCQkJPC9wPg0KKyAgICAJCQk8cD4NCisgICAgICAgICAgICAgICAgICBSZXR1cm4gVHlwZTogamF2YS51dGlsLkxpc3QNCisgICAgICAgICAgICAgICAgPC9wPg0KKyAgICAJCQk8cD5QYXJhbXM6PC9wPg0KKyAgICAJCQkgICAgCQkJDQorICAgIAkJCQkgICAgCQkJPHRhYmxlIHJ1bGVzPSJhbGwiIGJvcmRlcj0iMSI+DQorCSAgICAJCQkgICA8dGhlYWQ+DQorCSAgICAJCQkgICA8dHI+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+VHlwZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+RmllbGRuYW1lPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSI0MDAiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvdGg+DQorCSAgICAJCQkgICA8L3RyPg0KKwkgICAgCQkJICAgPC90aGVhZD4NCisJICAgIAkJCSAgIDx0Ym9keT4NCisJICAgIAkJCSAgIAkgICAgCQkJICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlNJRDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgTG9nZ2VkaW48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCURhdGUNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnN0YXJ0dGltZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+c3RhcnQgdGltZSwgeXl5eS1tbS1kZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJRGF0ZQ0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+ZW5kdGltZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+ZW5kIHRpbWUsIHl5eXktbW0tZGQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQorCSAgICAJCQk8L3RhYmxlPg0KKyAgICAJCQkgICAgCQkJPGJyLz4NCisgICAgCQkJUkVTVCBTYW1wbGUgQ2FsbC9VUkw6PGJyLz4NCisgICAgCQkJICAgIAkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL0NhbGVuZGFyU2VydmljZS9nZXRBcHBvaW50bWVudEJ5UmFuZ2U/U0lEPVZBTFVFJnN0YXJ0dGltZT1WQUxVRSZlbmR0aW1lPVZBTFVFIj5odHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL0NhbGVuZGFyU2VydmljZS9nZXRBcHBvaW50bWVudEJ5UmFuZ2U/U0lEPVZBTFVFJmFtcDtzdGFydHRpbWU9VkFMVUUmYW1wO2VuZHRpbWU9VkFMVUU8L2E+DQorICAgIAkJICA8L2Rpdj4NCisgICAgCSAgIAkJCQkgICAgCQkgICAgICA8ZGl2IGNsYXNzPSJtZXRob2QiPg0KKwkJICAgICAgICA8ZGl2IGNsYXNzPSJtZXRob2RfaGVhZGVyIj4NCisJCSAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTBweCI+DQorICAgIAkJCTxhIG5hbWU9ImdldEFwcG9pbnRtZW50QnlSYW5nZUZvclVzZXJJZCIgPjxiPmdldEFwcG9pbnRtZW50QnlSYW5nZUZvclVzZXJJZDwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+Z2V0QXBwb2ludG1lbnRCeVJhbmdlRm9yVXNlcklkICgNCisgICAgCQkJICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIFNJRA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBsb25nIHVzZXJJZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBEYXRlIHN0YXJ0dGltZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBEYXRlIGVuZHRpbWUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkpDQorICAgIAkJCTwvaT48YnIvPg0KKyAgICAJCQk8cD4NCisgICAgCQkJICBMb2FkIGFwcG9pbnRtZW50cyBieSBhIHN0YXJ0IC8gZW5kIHJhbmdlIGZvciB0aGUgdXNlcklkDQorICAgIAkJCTwvcD4NCisgICAgCQkJPHA+DQorICAgICAgICAgICAgICAgICAgUmV0dXJuIFR5cGU6IGphdmEudXRpbC5MaXN0DQorICAgICAgICAgICAgICAgIDwvcD4NCisgICAgCQkJPHA+UGFyYW1zOjwvcD4NCisgICAgCQkJICAgIAkJCQ0KKyAgICAJCQkJICAgIAkJCTx0YWJsZSBydWxlcz0iYWxsIiBib3JkZXI9IjEiPg0KKwkgICAgCQkJICAgPHRoZWFkPg0KKwkgICAgCQkJICAgPHRyPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPlR5cGU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPkZpZWxkbmFtZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iNDAwIiBhbGlnbj0ibGVmdCI+RGVzY3JpcHRpb248L3RoPg0KKwkgICAgCQkJICAgPC90cj4NCisJICAgIAkJCSAgIDwvdGhlYWQ+DQorCSAgICAJCQkgICA8dGJvZHk+DQorCSAgICAJCQkgICAJICAgIAkJCSAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5TSUQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIExvZ2dlZGluPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlsb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj51c2VySWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSB1c2VySWQgdGhlIGNhbGVuZGFyIGV2ZW50cyBzaG91bGQgYmUgbG9hZGVkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlEYXRlDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5zdGFydHRpbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnN0YXJ0IHRpbWUsIHl5eXktbW0tZGQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCURhdGUNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmVuZHRpbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmVuZCB0aW1lLCB5eXl5LW1tLWRkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KKwkgICAgCQkJPC90YWJsZT4NCisgICAgCQkJICAgIAkJCTxici8+DQorICAgIAkJCVJFU1QgU2FtcGxlIENhbGwvVVJMOjxici8+DQorICAgIAkJCSAgICAJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL0NhbGVuZGFyU2VydmljZS9nZXRBcHBvaW50bWVudEJ5UmFuZ2VGb3JVc2VySWQ/U0lEPVZBTFVFJnVzZXJJZD1WQUxVRSZzdGFydHRpbWU9VkFMVUUmZW5kdGltZT1WQUxVRSI+aHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9DYWxlbmRhclNlcnZpY2UvZ2V0QXBwb2ludG1lbnRCeVJhbmdlRm9yVXNlcklkP1NJRD1WQUxVRSZhbXA7dXNlcklkPVZBTFVFJmFtcDtzdGFydHRpbWU9VkFMVUUmYW1wO2VuZHRpbWU9VkFMVUU8L2E+DQorICAgIAkJICA8L2Rpdj4NCisgICAgCSAgIAkJCQkgICAgCQkgICAgICA8ZGl2IGNsYXNzPSJtZXRob2QiPg0KKwkJICAgICAgICA8ZGl2IGNsYXNzPSJtZXRob2RfaGVhZGVyIj4NCisJCSAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTBweCI+DQorICAgIAkJCTxhIG5hbWU9ImdldE5leHRBcHBvaW50bWVudCIgPjxiPmdldE5leHRBcHBvaW50bWVudDwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+Z2V0TmV4dEFwcG9pbnRtZW50ICgNCisgICAgCQkJICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIFNJRA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSkNCisgICAgCQkJPC9pPjxici8+DQorICAgIAkJCTxwPg0KKyAgICAJCQkgIEdldCB0aGUgbmV4dCBDYWxlbmRhciBldmVudCBmb3IgdGhlIGN1cnJlbnQgdXNlciBvZiB0aGUgU0lEDQorICAgIAkJCTwvcD4NCisgICAgCQkJPHA+DQorICAgICAgICAgICAgICAgICAgUmV0dXJuIFR5cGU6IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmNhbGVuZGFyLkFwcG9pbnRtZW50DQorICAgICAgICAgICAgICAgIDwvcD4NCisgICAgCQkJPHA+UGFyYW1zOjwvcD4NCisgICAgCQkJICAgIAkJCQ0KKyAgICAJCQkJICAgIAkJCTx0YWJsZSBydWxlcz0iYWxsIiBib3JkZXI9IjEiPg0KKwkgICAgCQkJICAgPHRoZWFkPg0KKwkgICAgCQkJICAgPHRyPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPlR5cGU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPkZpZWxkbmFtZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iNDAwIiBhbGlnbj0ibGVmdCI+RGVzY3JpcHRpb248L3RoPg0KKwkgICAgCQkJICAgPC90cj4NCisJICAgIAkJCSAgIDwvdGhlYWQ+DQorCSAgICAJCQkgICA8dGJvZHk+DQorCSAgICAJCQkgICAJICAgIAkJCSAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5TSUQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIExvZ2dlZGluPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KKwkgICAgCQkJPC90YWJsZT4NCisgICAgCQkJICAgIAkJCTxici8+DQorICAgIAkJCVJFU1QgU2FtcGxlIENhbGwvVVJMOjxici8+DQorICAgIAkJCSAgICAJCQkgICAgCQkJCSAgICAJCQkJCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL0NhbGVuZGFyU2VydmljZS9nZXROZXh0QXBwb2ludG1lbnQ/U0lEPVZBTFVFIj5odHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL0NhbGVuZGFyU2VydmljZS9nZXROZXh0QXBwb2ludG1lbnQ/U0lEPVZBTFVFPC9hPg0KKyAgICAJCSAgPC9kaXY+DQorICAgIAkgICAJCQkJICAgIAkJICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kIj4NCisJCSAgICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kX2hlYWRlciI+DQorCQkgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjEwcHgiPg0KKyAgICAJCQk8YSBuYW1lPSJnZXROZXh0QXBwb2ludG1lbnRGb3JVc2VySWQiID48Yj5nZXROZXh0QXBwb2ludG1lbnRGb3JVc2VySWQ8L2I+PC9hPg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCQ0KKyAgICAJCQlNZXRob2Q6IDxpPmdldE5leHRBcHBvaW50bWVudEZvclVzZXJJZCAoDQorICAgIAkJCSAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBTSUQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgbG9uZyB1c2VySWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkpDQorICAgIAkJCTwvaT48YnIvPg0KKyAgICAJCQk8cD4NCisgICAgCQkJICBHZXQgdGhlIG5leHQgQ2FsZW5kYXIgZXZlbnQgZm9yIHVzZXJJZA0KKyAgICAJCQk8L3A+DQorICAgIAkJCTxwPg0KKyAgICAgICAgICAgICAgICAgIFJldHVybiBUeXBlOiBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5jYWxlbmRhci5BcHBvaW50bWVudA0KKyAgICAgICAgICAgICAgICA8L3A+DQorICAgIAkJCTxwPlBhcmFtczo8L3A+DQorICAgIAkJCSAgICAJCQkJPGI+V2FybmluZzo8L2I+PGk+IFBhcmFtcyBpbiB0aGlzIG1ldGhvZCBkbyBub3Qgc2VlbSB0byBiZSBjb3JyZWN0bHkgZG9jdW1lbnRhdGVkPC9pPg0KKyAgICAJCQkJPGJyLz48YnIvPg0KKyAgICAJCQkgICAgCQkJDQorICAgIAkJCQkgICAgCQkJPHRhYmxlIHJ1bGVzPSJhbGwiIGJvcmRlcj0iMSI+DQorCSAgICAJCQkgICA8dGhlYWQ+DQorCSAgICAJCQkgICA8dHI+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+VHlwZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+RmllbGRuYW1lPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSI0MDAiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvdGg+DQorCSAgICAJCQkgICA8L3RyPg0KKwkgICAgCQkJICAgPC90aGVhZD4NCisJICAgIAkJCSAgIDx0Ym9keT4NCisJICAgIAkJCSAgIAkgICAgCQkJICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlNJRDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgTG9nZ2VkaW48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQorCSAgICAJCQk8L3RhYmxlPg0KKyAgICAJCQkgICAgCQkJPGJyLz4NCisgICAgCQkJUkVTVCBTYW1wbGUgQ2FsbC9VUkw6PGJyLz4NCisgICAgCQkJICAgIAkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9DYWxlbmRhclNlcnZpY2UvZ2V0TmV4dEFwcG9pbnRtZW50Rm9yVXNlcklkP1NJRD1WQUxVRSZ1c2VySWQ9VkFMVUUiPmh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvQ2FsZW5kYXJTZXJ2aWNlL2dldE5leHRBcHBvaW50bWVudEZvclVzZXJJZD9TSUQ9VkFMVUUmYW1wO3VzZXJJZD1WQUxVRTwvYT4NCisgICAgCQkgIDwvZGl2Pg0KKyAgICAJICAgCQkJCSAgICAJCSAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZCI+DQorCQkgICAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZF9oZWFkZXIiPg0KKwkJICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDoxMHB4Ij4NCisgICAgCQkJPGEgbmFtZT0ic2VhcmNoQXBwb2ludG1lbnRCeU5hbWUiID48Yj5zZWFyY2hBcHBvaW50bWVudEJ5TmFtZTwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+c2VhcmNoQXBwb2ludG1lbnRCeU5hbWUgKA0KKyAgICAJCQkgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgU0lEDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBhcHBvaW50bWVudE5hbWUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkpDQorICAgIAkJCTwvaT48YnIvPg0KKyAgICAJCQk8cD4NCisgICAgCQkJICBTZWFyY2ggYSBjYWxlbmRhciBldmVudCBmb3IgdGhlIGN1cnJlbnQgU0lEDQorICAgIAkJCTwvcD4NCisgICAgCQkJPHA+DQorICAgICAgICAgICAgICAgICAgUmV0dXJuIFR5cGU6IGphdmEudXRpbC5MaXN0DQorICAgICAgICAgICAgICAgIDwvcD4NCisgICAgCQkJPHA+UGFyYW1zOjwvcD4NCisgICAgCQkJICAgIAkJCQ0KKyAgICAJCQkJICAgIAkJCTx0YWJsZSBydWxlcz0iYWxsIiBib3JkZXI9IjEiPg0KKwkgICAgCQkJICAgPHRoZWFkPg0KKwkgICAgCQkJICAgPHRyPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPlR5cGU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPkZpZWxkbmFtZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iNDAwIiBhbGlnbj0ibGVmdCI+RGVzY3JpcHRpb248L3RoPg0KKwkgICAgCQkJICAgPC90cj4NCisJICAgIAkJCSAgIDwvdGhlYWQ+DQorCSAgICAJCQkgICA8dGJvZHk+DQorCSAgICAJCQkgICAJICAgIAkJCSAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5TSUQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIExvZ2dlZGluPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFwcG9pbnRtZW50TmFtZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGhlIHNlYXJjaCBzdHJpbmc8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQorCSAgICAJCQk8L3RhYmxlPg0KKyAgICAJCQkgICAgCQkJPGJyLz4NCisgICAgCQkJUkVTVCBTYW1wbGUgQ2FsbC9VUkw6PGJyLz4NCisgICAgCQkJICAgIAkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9DYWxlbmRhclNlcnZpY2Uvc2VhcmNoQXBwb2ludG1lbnRCeU5hbWU/U0lEPVZBTFVFJmFwcG9pbnRtZW50TmFtZT1WQUxVRSI+aHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9DYWxlbmRhclNlcnZpY2Uvc2VhcmNoQXBwb2ludG1lbnRCeU5hbWU/U0lEPVZBTFVFJmFtcDthcHBvaW50bWVudE5hbWU9VkFMVUU8L2E+DQorICAgIAkJICA8L2Rpdj4NCisgICAgCSAgIAkJCQkgICAgCQkgICAgICA8ZGl2IGNsYXNzPSJtZXRob2QiPg0KKwkJICAgICAgICA8ZGl2IGNsYXNzPSJtZXRob2RfaGVhZGVyIj4NCisJCSAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTBweCI+DQorICAgIAkJCTxhIG5hbWU9InNhdmVBcHBvaW50bWVudCIgPjxiPnNhdmVBcHBvaW50bWVudDwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+c2F2ZUFwcG9pbnRtZW50ICgNCisgICAgCQkJICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIFNJRA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgYXBwb2ludG1lbnROYW1lDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBhcHBvaW50bWVudExvY2F0aW9uDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBhcHBvaW50bWVudERlc2NyaXB0aW9uDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIENhbGVuZGFyIGFwcG9pbnRtZW50c3RhcnQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgQ2FsZW5kYXIgYXBwb2ludG1lbnRlbmQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgQm9vbGVhbiBpc0RhaWx5DQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEJvb2xlYW4gaXNXZWVrbHkNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgQm9vbGVhbiBpc01vbnRobHkNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgQm9vbGVhbiBpc1llYXJseQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBMb25nIGNhdGVnb3J5SWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgTG9uZyByZW1pbmQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIG1tQ2xpZW50DQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIExvbmcgcm9vbVR5cGUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGJhc2VVcmwNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgTG9uZyBsYW5ndWFnZUlkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEJvb2xlYW4gaXNQYXNzd29yZFByb3RlY3RlZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgcGFzc3dvcmQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgbG9uZyByb29tSWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkpDQorICAgIAkJCTwvaT48YnIvPg0KKyAgICAJCQk8cD4NCisgICAgCQkJICBTYXZlIGFuIGFwcG9pbnRtZW50DQorICAgIAkJCTwvcD4NCisgICAgCQkJPHA+DQorICAgICAgICAgICAgICAgICAgUmV0dXJuIFR5cGU6IGphdmEubGFuZy5Mb25nDQorICAgICAgICAgICAgICAgIDwvcD4NCisgICAgCQkJPHA+UGFyYW1zOjwvcD4NCisgICAgCQkJICAgIAkJCQk8Yj5XYXJuaW5nOjwvYj48aT4gUGFyYW1zIGluIHRoaXMgbWV0aG9kIGRvIG5vdCBzZWVtIHRvIGJlIGNvcnJlY3RseSBkb2N1bWVudGF0ZWQ8L2k+DQorICAgIAkJCQk8YnIvPjxici8+DQorICAgIAkJCSAgICAJCQkNCisgICAgCQkJCSAgICAJCQk8dGFibGUgcnVsZXM9ImFsbCIgYm9yZGVyPSIxIj4NCisJICAgIAkJCSAgIDx0aGVhZD4NCisJICAgIAkJCSAgIDx0cj4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5UeXBlPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5GaWVsZG5hbWU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjQwMCIgYWxpZ249ImxlZnQiPkRlc2NyaXB0aW9uPC90aD4NCisJICAgIAkJCSAgIDwvdHI+DQorCSAgICAJCQkgICA8L3RoZWFkPg0KKwkgICAgCQkJICAgPHRib2R5Pg0KKwkgICAgCQkJICAgCSAgICAJCQkgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+U0lEPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5UaGUgU0lEIG9mIHRoZSBVc2VyLiBUaGlzIFNJRCBtdXN0IGJlIG1hcmtlZCBhcyBMb2dnZWRpbjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hcHBvaW50bWVudE5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPm5hbWUgb2YgdGhlIGNhbGVuZGFyIGV2ZW50PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFwcG9pbnRtZW50TG9jYXRpb248L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmxvY2F0aW9uIGluZm8gdGV4dCBvZiB0aGUgY2FsZW5kYXIgZXZlbnQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+YXBwb2ludG1lbnREZXNjcmlwdGlvbjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+ZGVzY3JpcHRpb24gdGVzdCBvZiB0aGUgY2FsZW5kYXIgZXZlbnQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUNhbGVuZGFyDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hcHBvaW50bWVudHN0YXJ0PC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5zdGFydCBhcyBEYXRlIHl5eXktbW0tZGRUaGg6bW06c3M8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUNhbGVuZGFyDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hcHBvaW50bWVudGVuZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+ZW5kIGFzIERhdGUgeXl5eS1tbS1kZFRoaDptbTpzczwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJQm9vbGVhbg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aXNEYWlseTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aWYgdGhlIGNhbGVuZGFyIGV2ZW50IHNob3VsZCBiZSByZXBlYXRlZCBkYWlseSAobm90CisgICAgICAgICAgICBpbXBsZW1lbnRlZCk8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlzV2Vla2x5PC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5pZiB0aGUgY2FsZW5kYXIgZXZlbnQgc2hvdWxkIGJlIHJlcGVhdGVkIHdlZWtseSAobm90CisgICAgICAgICAgICBpbXBsZW1lbnRlZCk8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlzTW9udGhseTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aWYgdGhlIGNhbGVuZGFyIGV2ZW50IHNob3VsZCBiZSByZXBlYXRlZCBtb250aGx5IChub3QKKyAgICAgICAgICAgIGltcGxlbWVudGVkKTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJQm9vbGVhbg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aXNZZWFybHk8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlmIHRoZSBjYWxlbmRhciBldmVudCBzaG91bGQgYmUgcmVwZWF0ZWQgeWVhcmx5IChub3QKKyAgICAgICAgICAgIGltcGxlbWVudGVkKTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJTG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+Y2F0ZWdvcnlJZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGhlIGNhdGVnb3J5IGlkIG9mIHRoZSBjYWxlbmRhciBldmVudDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJTG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+cmVtaW5kPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aGUgcmVtaW5kZXIgdHlwZSBvZiB0aGUgY2FsZW5kYXIgZXZlbnQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+bW1DbGllbnQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPkxpc3Qgb2YgY2xpZW50cywgY29tbWEgc2VwYXJhdGVkIHN0cmluZywgPGJyLz4KKyAgICAgICAgICAgIHNhbXBsZTogMSxmaXJzdG5hbWUsbGFzdG5hbWUsaGFucy50aWVyQGdtYWlsLmNvbSwxLEV0Yy9HTVQrMQorICAgICAgICAgICAgdG8gYWRkIG11bHRpcGxlIGNsaWVudHMgeW91IGNhbiB1c2UgdGhlIHNhbWUgR0VUIHBhcmFtZXRlciBpbgorICAgICAgICAgICAgdGhlIFVSTCBtdWx0aXBsZSB0aW1lcywgZm9yIGV4YW1wbGU6CisgICAgICAgICAgICAmYW1wO21tQ2xpZW50PTEsZmlyc3RuYW1lLGxhc3RuYW1lLGhhbnMKKyAgICAgICAgICAgIC50aWVyQGdtYWlsLmNvbSwxLEV0Yy9HTVQrMSZhbXA7bW1DbGllbnQKKyAgICAgICAgICAgID0yLGZpcnN0bmFtZSxsYXN0bmFtZSxoYW5zLnRpZXJAZ21haWwuY29tLDEsRXRjL0dNVCsxPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5yb29tVHlwZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGhlIHJvb20gdHlwZSBmb3IgdGhlIGNhbGVuZGFyIGV2ZW50PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmJhc2VVcmw8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSBiYXNlIFVSTCBmb3IgdGhlIGludml0YXRpb25zPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5sYW5ndWFnZUlkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aGUgbGFuZ3VhZ2UgaWQgb2YgdGhlIGNhbGVuZGFyIGV2ZW50LCBub3RpZmljYXRpb24gZW1haWxzCisgICAgICAgICAgICB3aWxsIGJlIHNlbmQgaW4gdGhpcyBsYW5ndWFnZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJQm9vbGVhbg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aXNQYXNzd29yZFByb3RlY3RlZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aWYgdGhlIHJvb20gaXMgcGFzc3dvcmQgcHJvdGVjdGVkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnBhc3N3b3JkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aGUgcGFzc3dvcmQgZm9yIHRoZSByb29tPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KKwkgICAgCQkJPC90YWJsZT4NCisgICAgCQkJICAgIAkJCTxici8+DQorICAgIAkJCVJFU1QgU2FtcGxlIENhbGwvVVJMOjxici8+DQorICAgIAkJCSAgICAJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL0NhbGVuZGFyU2VydmljZS9zYXZlQXBwb2ludG1lbnQ/U0lEPVZBTFVFJmFwcG9pbnRtZW50TmFtZT1WQUxVRSZhcHBvaW50bWVudExvY2F0aW9uPVZBTFVFJmFwcG9pbnRtZW50RGVzY3JpcHRpb249VkFMVUUmYXBwb2ludG1lbnRzdGFydD1WQUxVRSZhcHBvaW50bWVudGVuZD1WQUxVRSZpc0RhaWx5PVZBTFVFJmlzV2Vla2x5PVZBTFVFJmlzTW9udGhseT1WQUxVRSZpc1llYXJseT1WQUxVRSZjYXRlZ29yeUlkPVZBTFVFJnJlbWluZD1WQUxVRSZtbUNsaWVudD1WQUxVRSZyb29tVHlwZT1WQUxVRSZiYXNlVXJsPVZBTFVFJmxhbmd1YWdlSWQ9VkFMVUUmaXNQYXNzd29yZFByb3RlY3RlZD1WQUxVRSZwYXNzd29yZD1WQUxVRSZyb29tSWQ9VkFMVUUiPmh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvQ2FsZW5kYXJTZXJ2aWNlL3NhdmVBcHBvaW50bWVudD9TSUQ9VkFMVUUmYW1wO2FwcG9pbnRtZW50TmFtZT1WQUxVRSZhbXA7YXBwb2ludG1lbnRMb2NhdGlvbj1WQUxVRSZhbXA7YXBwb2ludG1lbnREZXNjcmlwdGlvbj1WQUxVRSZhbXA7YXBwb2ludG1lbnRzdGFydD1WQUxVRSZhbXA7YXBwb2ludG1lbnRlbmQ9VkFMVUUmYW1wO2lzRGFpbHk9VkFMVUUmYW1wO2lzV2Vla2x5PVZBTFVFJmFtcDtpc01vbnRobHk9VkFMVUUmYW1wO2lzWWVhcmx5PVZBTFVFJmFtcDtjYXRlZ29yeUlkPVZBTFVFJmFtcDtyZW1pbmQ9VkFMVUUmYW1wO21tQ2xpZW50PVZBTFVFJmFtcDtyb29tVHlwZT1WQUxVRSZhbXA7YmFzZVVybD1WQUxVRSZhbXA7bGFuZ3VhZ2VJZD1WQUxVRSZhbXA7aXNQYXNzd29yZFByb3RlY3RlZD1WQUxVRSZhbXA7cGFzc3dvcmQ9VkFMVUUmYW1wO3Jvb21JZD1WQUxVRTwvYT4NCisgICAgCQkgIDwvZGl2Pg0KKyAgICAJICAgCQkJCSAgICAJCSAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZCI+DQorCQkgICAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZF9oZWFkZXIiPg0KKwkJICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDoxMHB4Ij4NCisgICAgCQkJPGEgbmFtZT0idXBkYXRlQXBwb2ludG1lbnRUaW1lT25seSIgPjxiPnVwZGF0ZUFwcG9pbnRtZW50VGltZU9ubHk8L2I+PC9hPg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCQ0KKyAgICAJCQlNZXRob2Q6IDxpPnVwZGF0ZUFwcG9pbnRtZW50VGltZU9ubHkgKA0KKyAgICAJCQkgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgU0lEDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIExvbmcgYXBwb2ludG1lbnRJZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBEYXRlIGFwcG9pbnRtZW50c3RhcnQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgRGF0ZSBhcHBvaW50bWVudGVuZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgYmFzZXVybA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBMb25nIGxhbmd1YWdlSWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkpDQorICAgIAkJCTwvaT48YnIvPg0KKyAgICAJCQk8cD4NCisgICAgCQkJICBVcGRhdGUgYW4gY2FsZW5kYXIgZXZlbnQgdGltZSBvbmx5DQorICAgIAkJCTwvcD4NCisgICAgCQkJPHA+DQorICAgICAgICAgICAgICAgICAgUmV0dXJuIFR5cGU6IGphdmEubGFuZy5Mb25nDQorICAgICAgICAgICAgICAgIDwvcD4NCisgICAgCQkJPHA+UGFyYW1zOjwvcD4NCisgICAgCQkJICAgIAkJCQ0KKyAgICAJCQkJICAgIAkJCTx0YWJsZSBydWxlcz0iYWxsIiBib3JkZXI9IjEiPg0KKwkgICAgCQkJICAgPHRoZWFkPg0KKwkgICAgCQkJICAgPHRyPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPlR5cGU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPkZpZWxkbmFtZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iNDAwIiBhbGlnbj0ibGVmdCI+RGVzY3JpcHRpb248L3RoPg0KKwkgICAgCQkJICAgPC90cj4NCisJICAgIAkJCSAgIDwvdGhlYWQ+DQorCSAgICAJCQkgICA8dGJvZHk+DQorCSAgICAJCQkgICAJICAgIAkJCSAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5TSUQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIExvZ2dlZGluPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hcHBvaW50bWVudElkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aGUgY2FsZW5kYXIgZXZlbnQgdGhhdCBzaG91bGQgYmUgdXBkYXRlZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJRGF0ZQ0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+YXBwb2ludG1lbnRzdGFydDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+c3RhcnQgeXl5eS1tbS1kZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJRGF0ZQ0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+YXBwb2ludG1lbnRlbmQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmVuZCB5eXl5LW1tLWRkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmJhc2V1cmw8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSBiYXNlIFVSTCBmb3IgdGhlIGludml0YXRpb25zIHRoYXQgd2lsbCBiZSBzZW5kIGJ5IGVtYWlsPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5sYW5ndWFnZUlkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aGUgbGFuZ3VhZ2UgaWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQorCSAgICAJCQk8L3RhYmxlPg0KKyAgICAJCQkgICAgCQkJPGJyLz4NCisgICAgCQkJUkVTVCBTYW1wbGUgQ2FsbC9VUkw6PGJyLz4NCisgICAgCQkJICAgIAkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL0NhbGVuZGFyU2VydmljZS91cGRhdGVBcHBvaW50bWVudFRpbWVPbmx5P1NJRD1WQUxVRSZhcHBvaW50bWVudElkPVZBTFVFJmFwcG9pbnRtZW50c3RhcnQ9VkFMVUUmYXBwb2ludG1lbnRlbmQ9VkFMVUUmYmFzZXVybD1WQUxVRSZsYW5ndWFnZUlkPVZBTFVFIj5odHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL0NhbGVuZGFyU2VydmljZS91cGRhdGVBcHBvaW50bWVudFRpbWVPbmx5P1NJRD1WQUxVRSZhbXA7YXBwb2ludG1lbnRJZD1WQUxVRSZhbXA7YXBwb2ludG1lbnRzdGFydD1WQUxVRSZhbXA7YXBwb2ludG1lbnRlbmQ9VkFMVUUmYW1wO2Jhc2V1cmw9VkFMVUUmYW1wO2xhbmd1YWdlSWQ9VkFMVUU8L2E+DQorICAgIAkJICA8L2Rpdj4NCisgICAgCSAgIAkJCQkgICAgCQkgICAgICA8ZGl2IGNsYXNzPSJtZXRob2QiPg0KKwkJICAgICAgICA8ZGl2IGNsYXNzPSJtZXRob2RfaGVhZGVyIj4NCisJCSAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTBweCI+DQorICAgIAkJCTxhIG5hbWU9InVwZGF0ZUFwcG9pbnRtZW50IiA+PGI+dXBkYXRlQXBwb2ludG1lbnQ8L2I+PC9hPg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCQ0KKyAgICAJCQlNZXRob2Q6IDxpPnVwZGF0ZUFwcG9pbnRtZW50ICgNCisgICAgCQkJICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIFNJRA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBMb25nIGFwcG9pbnRtZW50SWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGFwcG9pbnRtZW50TmFtZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgYXBwb2ludG1lbnRMb2NhdGlvbg0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgYXBwb2ludG1lbnREZXNjcmlwdGlvbg0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBDYWxlbmRhciBhcHBvaW50bWVudHN0YXJ0DQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIENhbGVuZGFyIGFwcG9pbnRtZW50ZW5kDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEJvb2xlYW4gaXNEYWlseQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGlzV2Vla2x5DQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEJvb2xlYW4gaXNNb250aGx5DQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEJvb2xlYW4gaXNZZWFybHkNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgTG9uZyBjYXRlZ29yeUlkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIExvbmcgcmVtaW5kDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBtbUNsaWVudA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBMb25nIHJvb21UeXBlDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBiYXNldXJsDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIExvbmcgbGFuZ3VhZ2VJZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGlzUGFzc3dvcmRQcm90ZWN0ZWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIHBhc3N3b3JkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJKQ0KKyAgICAJCQk8L2k+PGJyLz4NCisgICAgCQkJPHA+DQorICAgIAkJCSAgU2F2ZSBhbiBhcHBvaW50bWVudA0KKyAgICAJCQk8L3A+DQorICAgIAkJCTxwPg0KKyAgICAgICAgICAgICAgICAgIFJldHVybiBUeXBlOiBqYXZhLmxhbmcuTG9uZw0KKyAgICAgICAgICAgICAgICA8L3A+DQorICAgIAkJCTxwPlBhcmFtczo8L3A+DQorICAgIAkJCSAgICAJCQkNCisgICAgCQkJCSAgICAJCQk8dGFibGUgcnVsZXM9ImFsbCIgYm9yZGVyPSIxIj4NCisJICAgIAkJCSAgIDx0aGVhZD4NCisJICAgIAkJCSAgIDx0cj4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5UeXBlPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5GaWVsZG5hbWU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjQwMCIgYWxpZ249ImxlZnQiPkRlc2NyaXB0aW9uPC90aD4NCisJICAgIAkJCSAgIDwvdHI+DQorCSAgICAJCQkgICA8L3RoZWFkPg0KKwkgICAgCQkJICAgPHRib2R5Pg0KKwkgICAgCQkJICAgCSAgICAJCQkgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+U0lEPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5UaGUgU0lEIG9mIHRoZSBVc2VyLiBUaGlzIFNJRCBtdXN0IGJlIG1hcmtlZCBhcyBMb2dnZWRpbjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJTG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+YXBwb2ludG1lbnRJZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGhlIGlkIHRvIHVwZGF0ZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hcHBvaW50bWVudE5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPm5hbWUgb2YgdGhlIGNhbGVuZGFyIGV2ZW50PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFwcG9pbnRtZW50TG9jYXRpb248L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmxvY2F0aW9uIGluZm8gdGV4dCBvZiB0aGUgY2FsZW5kYXIgZXZlbnQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+YXBwb2ludG1lbnREZXNjcmlwdGlvbjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+ZGVzY3JpcHRpb24gdGVzdCBvZiB0aGUgY2FsZW5kYXIgZXZlbnQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUNhbGVuZGFyDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hcHBvaW50bWVudHN0YXJ0PC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5zdGFydCBhcyBEYXRlIHl5eXktbW0tZGRUaGg6bW06c3M8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUNhbGVuZGFyDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hcHBvaW50bWVudGVuZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+ZW5kIGFzIERhdGUgeXl5eS1tbS1kZFRoaDptbTpzczwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJQm9vbGVhbg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aXNEYWlseTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aWYgdGhlIGNhbGVuZGFyIGV2ZW50IHNob3VsZCBiZSByZXBlYXRlZCBkYWlseSAobm90CisgICAgICAgICAgICBpbXBsZW1lbnRlZCk8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlzV2Vla2x5PC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5pZiB0aGUgY2FsZW5kYXIgZXZlbnQgc2hvdWxkIGJlIHJlcGVhdGVkIHdlZWtseSAobm90CisgICAgICAgICAgICBpbXBsZW1lbnRlZCk8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlzTW9udGhseTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aWYgdGhlIGNhbGVuZGFyIGV2ZW50IHNob3VsZCBiZSByZXBlYXRlZCBtb250aGx5IChub3QKKyAgICAgICAgICAgIGltcGxlbWVudGVkKTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJQm9vbGVhbg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aXNZZWFybHk8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlmIHRoZSBjYWxlbmRhciBldmVudCBzaG91bGQgYmUgcmVwZWF0ZWQgeWVhcmx5IChub3QKKyAgICAgICAgICAgIGltcGxlbWVudGVkKTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJTG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+Y2F0ZWdvcnlJZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGhlIGNhdGVnb3J5IGlkIG9mIHRoZSBjYWxlbmRhciBldmVudDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJTG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+cmVtaW5kPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aGUgcmVtaW5kZXIgdHlwZSBvZiB0aGUgY2FsZW5kYXIgZXZlbnQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+bW1DbGllbnQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPkxpc3Qgb2YgY2xpZW50cywgY29tbWEgc2VwYXJhdGVkIHN0cmluZywgPGJyLz4KKyAgICAgICAgICAgIHNhbXBsZTogMSxmaXJzdG5hbWUsbGFzdG5hbWUsaGFucy50aWVyQGdtYWlsLmNvbSwxLEV0Yy9HTVQrMQorICAgICAgICAgICAgdG8gYWRkIG11bHRpcGxlIGNsaWVudHMgeW91IGNhbiB1c2UgdGhlIHNhbWUgR0VUIHBhcmFtZXRlciBpbgorICAgICAgICAgICAgdGhlIFVSTCBtdWx0aXBsZSB0aW1lcywgZm9yIGV4YW1wbGU6CisgICAgICAgICAgICAmYW1wO21tQ2xpZW50PTEsZmlyc3RuYW1lLGxhc3RuYW1lLGhhbnMKKyAgICAgICAgICAgIC50aWVyQGdtYWlsLmNvbSwxLEV0Yy9HTVQrMSZhbXA7bW1DbGllbnQKKyAgICAgICAgICAgID0yLGZpcnN0bmFtZSxsYXN0bmFtZSxoYW5zLnRpZXJAZ21haWwuY29tLDEsRXRjL0dNVCsxPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5yb29tVHlwZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGhlIHJvb20gdHlwZSBmb3IgdGhlIGNhbGVuZGFyIGV2ZW50PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmJhc2VVcmw8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSBiYXNlIFVSTCBmb3IgdGhlIGludml0YXRpb25zPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5sYW5ndWFnZUlkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aGUgbGFuZ3VhZ2UgaWQgb2YgdGhlIGNhbGVuZGFyIGV2ZW50LCBub3RpZmljYXRpb24gZW1haWxzCisgICAgICAgICAgICB3aWxsIGJlIHNlbmQgaW4gdGhpcyBsYW5ndWFnZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJQm9vbGVhbg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aXNQYXNzd29yZFByb3RlY3RlZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aWYgdGhlIHJvb20gaXMgcGFzc3dvcmQgcHJvdGVjdGVkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnBhc3N3b3JkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aGUgcGFzc3dvcmQgZm9yIHRoZSByb29tPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KKwkgICAgCQkJPC90YWJsZT4NCisgICAgCQkJICAgIAkJCTxici8+DQorICAgIAkJCVJFU1QgU2FtcGxlIENhbGwvVVJMOjxici8+DQorICAgIAkJCSAgICAJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL0NhbGVuZGFyU2VydmljZS91cGRhdGVBcHBvaW50bWVudD9TSUQ9VkFMVUUmYXBwb2ludG1lbnRJZD1WQUxVRSZhcHBvaW50bWVudE5hbWU9VkFMVUUmYXBwb2ludG1lbnRMb2NhdGlvbj1WQUxVRSZhcHBvaW50bWVudERlc2NyaXB0aW9uPVZBTFVFJmFwcG9pbnRtZW50c3RhcnQ9VkFMVUUmYXBwb2ludG1lbnRlbmQ9VkFMVUUmaXNEYWlseT1WQUxVRSZpc1dlZWtseT1WQUxVRSZpc01vbnRobHk9VkFMVUUmaXNZZWFybHk9VkFMVUUmY2F0ZWdvcnlJZD1WQUxVRSZyZW1pbmQ9VkFMVUUmbW1DbGllbnQ9VkFMVUUmcm9vbVR5cGU9VkFMVUUmYmFzZXVybD1WQUxVRSZsYW5ndWFnZUlkPVZBTFVFJmlzUGFzc3dvcmRQcm90ZWN0ZWQ9VkFMVUUmcGFzc3dvcmQ9VkFMVUUiPmh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvQ2FsZW5kYXJTZXJ2aWNlL3VwZGF0ZUFwcG9pbnRtZW50P1NJRD1WQUxVRSZhbXA7YXBwb2ludG1lbnRJZD1WQUxVRSZhbXA7YXBwb2ludG1lbnROYW1lPVZBTFVFJmFtcDthcHBvaW50bWVudExvY2F0aW9uPVZBTFVFJmFtcDthcHBvaW50bWVudERlc2NyaXB0aW9uPVZBTFVFJmFtcDthcHBvaW50bWVudHN0YXJ0PVZBTFVFJmFtcDthcHBvaW50bWVudGVuZD1WQUxVRSZhbXA7aXNEYWlseT1WQUxVRSZhbXA7aXNXZWVrbHk9VkFMVUUmYW1wO2lzTW9udGhseT1WQUxVRSZhbXA7aXNZZWFybHk9VkFMVUUmYW1wO2NhdGVnb3J5SWQ9VkFMVUUmYW1wO3JlbWluZD1WQUxVRSZhbXA7bW1DbGllbnQ9VkFMVUUmYW1wO3Jvb21UeXBlPVZBTFVFJmFtcDtiYXNldXJsPVZBTFVFJmFtcDtsYW5ndWFnZUlkPVZBTFVFJmFtcDtpc1Bhc3N3b3JkUHJvdGVjdGVkPVZBTFVFJmFtcDtwYXNzd29yZD1WQUxVRTwvYT4NCisgICAgCQkgIDwvZGl2Pg0KKyAgICAJICAgCQkJCSAgICAJCSAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZCI+DQorCQkgICAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZF9oZWFkZXIiPg0KKwkJICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDoxMHB4Ij4NCisgICAgCQkJPGEgbmFtZT0iZGVsZXRlQXBwb2ludG1lbnQiID48Yj5kZWxldGVBcHBvaW50bWVudDwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+ZGVsZXRlQXBwb2ludG1lbnQgKA0KKyAgICAJCQkgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgU0lEDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIExvbmcgYXBwb2ludG1lbnRJZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBMb25nIGxhbmd1YWdlX2lkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJKQ0KKyAgICAJCQk8L2k+PGJyLz4NCisgICAgCQkJPHA+DQorICAgIAkJCSAgZGVsZXRlIGEgY2FsZW5kYXIgZXZlbnQKKyAKKyBJZiB0aGUgZ2l2ZW4gU0lEIGlzIGZyb20gYW4gQWRtaW5pc3RyYXRvciBvciBXZWItU2VydmljZSB1c2VyLCB0aGUgdXNlcgorIGNhbiBkZWxldGUgYW55IGFwcG9pbnRtZW50Ljxici8+CisgSWYgdGhlIFNJRCBpcyBhc3NpZ25lZCB0byBhIHNpbXBsZSB1c2VyLCBoZSBjYW4gb25seSBkZWxldGUgYXBwb2ludG1lbnRzCisgd2hlcmUgaGUgaXMgYWxzbyB0aGUgb3duZXIvY3JlYXRvciBvZiB0aGUgYXBwb2ludG1lbnQNCisgICAgCQkJPC9wPg0KKyAgICAJCQk8cD4NCisgICAgICAgICAgICAgICAgICBSZXR1cm4gVHlwZTogamF2YS5sYW5nLkxvbmcNCisgICAgICAgICAgICAgICAgPC9wPg0KKyAgICAJCQk8cD5QYXJhbXM6PC9wPg0KKyAgICAJCQkgICAgCQkJDQorICAgIAkJCQkgICAgCQkJPHRhYmxlIHJ1bGVzPSJhbGwiIGJvcmRlcj0iMSI+DQorCSAgICAJCQkgICA8dGhlYWQ+DQorCSAgICAJCQkgICA8dHI+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+VHlwZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+RmllbGRuYW1lPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSI0MDAiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvdGg+DQorCSAgICAJCQkgICA8L3RyPg0KKwkgICAgCQkJICAgPC90aGVhZD4NCisJICAgIAkJCSAgIDx0Ym9keT4NCisJICAgIAkJCSAgIAkgICAgCQkJICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlNJRDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+YW4gYXV0aGVudGljYXRlZCBTSUQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUxvbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFwcG9pbnRtZW50SWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSBpZCB0byBkZWxldGU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUxvbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmxhbmd1YWdlX2lkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aGUgbGFuZ3VhZ2UgaWQgaW4gd2hpY2ggdGhlIG5vdGlmaWNhdGlvbnMgZm9yIHRoZSBkZWxldGVkCisgICAgICAgICAgICBhcHBvaW50bWVudCBhcmUgc2VuZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCisJICAgIAkJCTwvdGFibGU+DQorICAgIAkJCSAgICAJCQk8YnIvPg0KKyAgICAJCQlSRVNUIFNhbXBsZSBDYWxsL1VSTDo8YnIvPg0KKyAgICAJCQkgICAgCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvQ2FsZW5kYXJTZXJ2aWNlL2RlbGV0ZUFwcG9pbnRtZW50P1NJRD1WQUxVRSZhcHBvaW50bWVudElkPVZBTFVFJmxhbmd1YWdlX2lkPVZBTFVFIj5odHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL0NhbGVuZGFyU2VydmljZS9kZWxldGVBcHBvaW50bWVudD9TSUQ9VkFMVUUmYW1wO2FwcG9pbnRtZW50SWQ9VkFMVUUmYW1wO2xhbmd1YWdlX2lkPVZBTFVFPC9hPg0KKyAgICAJCSAgPC9kaXY+DQorICAgIAkgICAJCQkJICAgIAkJICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kIj4NCisJCSAgICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kX2hlYWRlciI+DQorCQkgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjEwcHgiPg0KKyAgICAJCQk8YSBuYW1lPSJnZXRBcHBvaW50bWVudEJ5Um9vbUlkIiA+PGI+Z2V0QXBwb2ludG1lbnRCeVJvb21JZDwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+Z2V0QXBwb2ludG1lbnRCeVJvb21JZCAoDQorICAgIAkJCSAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBTSUQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgTG9uZyByb29tX2lkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJKQ0KKyAgICAJCQk8L2k+PGJyLz4NCisgICAgCQkJPHA+DQorICAgIAkJCSAgTG9hZCBhIGNhbGVuZGFyIGV2ZW50IGJ5IGl0cyByb29tIGlkDQorICAgIAkJCTwvcD4NCisgICAgCQkJPHA+DQorICAgICAgICAgICAgICAgICAgUmV0dXJuIFR5cGU6IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmNhbGVuZGFyLkFwcG9pbnRtZW50DQorICAgICAgICAgICAgICAgIDwvcD4NCisgICAgCQkJPHA+UGFyYW1zOjwvcD4NCisgICAgCQkJICAgIAkJCQ0KKyAgICAJCQkJICAgIAkJCTx0YWJsZSBydWxlcz0iYWxsIiBib3JkZXI9IjEiPg0KKwkgICAgCQkJICAgPHRoZWFkPg0KKwkgICAgCQkJICAgPHRyPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPlR5cGU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPkZpZWxkbmFtZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iNDAwIiBhbGlnbj0ibGVmdCI+RGVzY3JpcHRpb248L3RoPg0KKwkgICAgCQkJICAgPC90cj4NCisJICAgIAkJCSAgIDwvdGhlYWQ+DQorCSAgICAJCQkgICA8dGJvZHk+DQorCSAgICAJCQkgICAJICAgIAkJCSAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5TSUQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJTG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+cm9vbV9pZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KKwkgICAgCQkJPC90YWJsZT4NCisgICAgCQkJICAgIAkJCTxici8+DQorICAgIAkJCVJFU1QgU2FtcGxlIENhbGwvVVJMOjxici8+DQorICAgIAkJCSAgICAJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvQ2FsZW5kYXJTZXJ2aWNlL2dldEFwcG9pbnRtZW50QnlSb29tSWQ/U0lEPVZBTFVFJnJvb21faWQ9VkFMVUUiPmh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvQ2FsZW5kYXJTZXJ2aWNlL2dldEFwcG9pbnRtZW50QnlSb29tSWQ/U0lEPVZBTFVFJmFtcDtyb29tX2lkPVZBTFVFPC9hPg0KKyAgICAJCSAgPC9kaXY+DQorICAgIAkgICAJCQkJICAgIAkJICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kIj4NCisJCSAgICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kX2hlYWRlciI+DQorCQkgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjEwcHgiPg0KKyAgICAJCQk8YSBuYW1lPSJnZXRBcHBvaW50bWVudENhdGVnb3J5TGlzdCIgPjxiPmdldEFwcG9pbnRtZW50Q2F0ZWdvcnlMaXN0PC9iPjwvYT4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQkNCisgICAgCQkJTWV0aG9kOiA8aT5nZXRBcHBvaW50bWVudENhdGVnb3J5TGlzdCAoDQorICAgIAkJCSAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBTSUQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkpDQorICAgIAkJCTwvaT48YnIvPg0KKyAgICAJCQk8cD4NCisgICAgCQkJICBHZXQgYWxsIGNhdGVnb3JpZXMgb2YgY2FsZW5kYXIgZXZlbnRzDQorICAgIAkJCTwvcD4NCisgICAgCQkJPHA+DQorICAgICAgICAgICAgICAgICAgUmV0dXJuIFR5cGU6IGphdmEudXRpbC5MaXN0DQorICAgICAgICAgICAgICAgIDwvcD4NCisgICAgCQkJPHA+UGFyYW1zOjwvcD4NCisgICAgCQkJICAgIAkJCQ0KKyAgICAJCQkJICAgIAkJCTx0YWJsZSBydWxlcz0iYWxsIiBib3JkZXI9IjEiPg0KKwkgICAgCQkJICAgPHRoZWFkPg0KKwkgICAgCQkJICAgPHRyPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPlR5cGU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPkZpZWxkbmFtZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iNDAwIiBhbGlnbj0ibGVmdCI+RGVzY3JpcHRpb248L3RoPg0KKwkgICAgCQkJICAgPC90cj4NCisJICAgIAkJCSAgIDwvdGhlYWQ+DQorCSAgICAJCQkgICA8dGJvZHk+DQorCSAgICAJCQkgICAJICAgIAkJCSAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5TSUQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCisJICAgIAkJCTwvdGFibGU+DQorICAgIAkJCSAgICAJCQk8YnIvPg0KKyAgICAJCQlSRVNUIFNhbXBsZSBDYWxsL1VSTDo8YnIvPg0KKyAgICAJCQkgICAgCQkJICAgIAkJCQkgICAgCQkJCQkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9DYWxlbmRhclNlcnZpY2UvZ2V0QXBwb2ludG1lbnRDYXRlZ29yeUxpc3Q/U0lEPVZBTFVFIj5odHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL0NhbGVuZGFyU2VydmljZS9nZXRBcHBvaW50bWVudENhdGVnb3J5TGlzdD9TSUQ9VkFMVUU8L2E+DQorICAgIAkJICA8L2Rpdj4NCisgICAgCSAgIAkJCQkgICAgCQkgICAgICA8ZGl2IGNsYXNzPSJtZXRob2QiPg0KKwkJICAgICAgICA8ZGl2IGNsYXNzPSJtZXRob2RfaGVhZGVyIj4NCisJCSAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTBweCI+DQorICAgIAkJCTxhIG5hbWU9ImdldEFwcG9pbnRtZW50UmVtaW5kZXJUeXBMaXN0IiA+PGI+Z2V0QXBwb2ludG1lbnRSZW1pbmRlclR5cExpc3Q8L2I+PC9hPg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCQ0KKyAgICAJCQlNZXRob2Q6IDxpPmdldEFwcG9pbnRtZW50UmVtaW5kZXJUeXBMaXN0ICgNCisgICAgCQkJICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIFNJRA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSkNCisgICAgCQkJPC9pPjxici8+DQorICAgIAkJCTxwPg0KKyAgICAJCQkgIEdldCBhbGwgcmVtaW5kZXIgdHlwZXMgZm9yIGNhbGVuZGFyIGV2ZW50cw0KKyAgICAJCQk8L3A+DQorICAgIAkJCTxwPg0KKyAgICAgICAgICAgICAgICAgIFJldHVybiBUeXBlOiBqYXZhLnV0aWwuTGlzdA0KKyAgICAgICAgICAgICAgICA8L3A+DQorICAgIAkJCTxwPlBhcmFtczo8L3A+DQorICAgIAkJCSAgICAJCQkNCisgICAgCQkJCSAgICAJCQk8dGFibGUgcnVsZXM9ImFsbCIgYm9yZGVyPSIxIj4NCisJICAgIAkJCSAgIDx0aGVhZD4NCisJICAgIAkJCSAgIDx0cj4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5UeXBlPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5GaWVsZG5hbWU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjQwMCIgYWxpZ249ImxlZnQiPkRlc2NyaXB0aW9uPC90aD4NCisJICAgIAkJCSAgIDwvdHI+DQorCSAgICAJCQkgICA8L3RoZWFkPg0KKwkgICAgCQkJICAgPHRib2R5Pg0KKwkgICAgCQkJICAgCSAgICAJCQkgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+U0lEPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQorCSAgICAJCQk8L3RhYmxlPg0KKyAgICAJCQkgICAgCQkJPGJyLz4NCisgICAgCQkJUkVTVCBTYW1wbGUgQ2FsbC9VUkw6PGJyLz4NCisgICAgCQkJICAgIAkJCSAgICAJCQkJICAgIAkJCQkJCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvQ2FsZW5kYXJTZXJ2aWNlL2dldEFwcG9pbnRtZW50UmVtaW5kZXJUeXBMaXN0P1NJRD1WQUxVRSI+aHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9DYWxlbmRhclNlcnZpY2UvZ2V0QXBwb2ludG1lbnRSZW1pbmRlclR5cExpc3Q/U0lEPVZBTFVFPC9hPg0KKyAgICAJCSAgPC9kaXY+DQorICAgIAkgICAJCQkJICAgIAkJICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kIj4NCisJCSAgICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kX2hlYWRlciI+DQorCQkgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjEwcHgiPg0KKyAgICAJCQk8YSBuYW1lPSJnZXRBcHBvaW50bWVudHNCeVdlZWtDYWxlbmRhciIgPjxiPmdldEFwcG9pbnRtZW50c0J5V2Vla0NhbGVuZGFyPC9iPjwvYT4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQkNCisgICAgCQkJTWV0aG9kOiA8aT5nZXRBcHBvaW50bWVudHNCeVdlZWtDYWxlbmRhciAoDQorICAgIAkJCSAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBTSUQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgaW50IGZpcnN0RGF5SW5XZWVrDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIERhdGUgc3RhcnREYXRlDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIExvbmcgcmVxdWVzdFVzZXJJZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBMb25nIG9tVGltZVpvbmVJZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgamF2YVRpbWVab25lTmFtZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSkNCisgICAgCQkJPC9pPjxici8+DQorICAgIAkJCTxwPg0KKyAgICAJCQkgIEdldCB0aGUgYXBwb2ludG1lbnRzIChjYWxlbmRhciBldmVudHMpIGZvciB0aGUgZ2l2ZW4gcmVxdWVzdFVzZXJJZCA8YnIvPgorIFRoZSBUaW1lWm9uZSBjYW4gYmUgZWl0aGVyIGdpdmVuIGJ5IHRoZSBJZCBvZiB0aGUgdGltZXpvbmUgaW4gdGhlIHRhYmxlCisgIm9tX3RpbWV6b25lIiB3aXRoIHRoZSBwYXJhbSB0aW1lWm9uZUlkQSA8YnIvPgorIE9yIHdpdGggdGhlIGphdmEgbmFtZSBvZiB0aGUgVGltZVpvbmUgaW4gdGhlIHBhcmFtIGphdmFUaW1lWm9uZU5hbWUNCisgICAgCQkJPC9wPg0KKyAgICAJCQk8cD4NCisgICAgICAgICAgICAgICAgICBSZXR1cm4gVHlwZTogamF2YS51dGlsLkxpc3QNCisgICAgICAgICAgICAgICAgPC9wPg0KKyAgICAJCQk8cD5QYXJhbXM6PC9wPg0KKyAgICAJCQkgICAgCQkJDQorICAgIAkJCQkgICAgCQkJPHRhYmxlIHJ1bGVzPSJhbGwiIGJvcmRlcj0iMSI+DQorCSAgICAJCQkgICA8dGhlYWQ+DQorCSAgICAJCQkgICA8dHI+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+VHlwZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+RmllbGRuYW1lPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSI0MDAiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvdGg+DQorCSAgICAJCQkgICA8L3RyPg0KKwkgICAgCQkJICAgPC90aGVhZD4NCisJICAgIAkJCSAgIDx0Ym9keT4NCisJICAgIAkJCSAgIAkgICAgCQkJICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlNJRDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+YSB2YWxpZCB1c2VyIGlkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlpbnQNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmZpcnN0RGF5SW5XZWVrPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aGUgZmlyc3QgZGF5aW4gd2VlaywgMD1TdW5kYXksIDE9TW9uZGF5LCAuLi48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCURhdGUNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnN0YXJ0RGF0ZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGhlIGRhdGUgaXQgc2hvdWxkIHN0YXJ0IHdpdGg8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUxvbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnJlcXVlc3RVc2VySWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSB1c2VyIGlkIHRoZSBjYWxlbmRhciBldmVudHMgYXJlIHJlcXVlc3RlZCwgaWYgaXQgaXMgbm90CisgICAgICAgICAgICB0aGUgdXNlciBpZCBvZiB0aGUgU0lEIHRoZW4gdGhlIFNJRCdzIHVzZXIgbmVlZHMgdG8gaGF2ZSB0aGUKKyAgICAgICAgICAgIHJpZ2h0IHRvIHdhdGNoIHRob3NlIGV2ZW50czwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJTG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+b21UaW1lWm9uZUlkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aGUgaWQgb2YgdGhlIHRpbWV6b25lIChhbHRlcm5hdGl2bHkgdXNlIGphdmFUaW1lWm9uZU5hbWUpPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmphdmFUaW1lWm9uZU5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSBuYW1lIG9mIHRoZSBqYXZhIHRpbWUgem9uZSwgc2VlIDxhCisgICAgICAgICAgICBocmVmPSJodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1RpbWVfem9uZSNKYXZhIgorICAgICAgICAgICAgdGFyZ2V0PSJfYmxhbmsiCisgICAgICAgICAgICA+aHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UaW1lX3pvbmUjSmF2YTwvYT48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQorCSAgICAJCQk8L3RhYmxlPg0KKyAgICAJCQkgICAgCQkJPGJyLz4NCisgICAgCQkJUkVTVCBTYW1wbGUgQ2FsbC9VUkw6PGJyLz4NCisgICAgCQkJICAgIAkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL0NhbGVuZGFyU2VydmljZS9nZXRBcHBvaW50bWVudHNCeVdlZWtDYWxlbmRhcj9TSUQ9VkFMVUUmZmlyc3REYXlJbldlZWs9VkFMVUUmc3RhcnREYXRlPVZBTFVFJnJlcXVlc3RVc2VySWQ9VkFMVUUmb21UaW1lWm9uZUlkPVZBTFVFJmphdmFUaW1lWm9uZU5hbWU9VkFMVUUiPmh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvQ2FsZW5kYXJTZXJ2aWNlL2dldEFwcG9pbnRtZW50c0J5V2Vla0NhbGVuZGFyP1NJRD1WQUxVRSZhbXA7Zmlyc3REYXlJbldlZWs9VkFMVUUmYW1wO3N0YXJ0RGF0ZT1WQUxVRSZhbXA7cmVxdWVzdFVzZXJJZD1WQUxVRSZhbXA7b21UaW1lWm9uZUlkPVZBTFVFJmFtcDtqYXZhVGltZVpvbmVOYW1lPVZBTFVFPC9hPg0KKyAgICAJCSAgPC9kaXY+DQorICAgIAkgICAJCQkNCisJDQorCTwvYm9keT4NCis8L2h0bWw+DQorDQpkaWZmIC0tZ2l0IGEvZG9jcy9DbHVzdGVyaW5nLmh0bWwgYi9kb2NzL0NsdXN0ZXJpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMGNmYjk1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9DbHVzdGVyaW5nLmh0bWwKQEAgLTAsMCArMSw4NjcgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgorCis8IS0tCitDb3B5cmlnaHQgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKworPCEtLSBDb250ZW50IFN0eWxlc2hlZXQgZm9yIFNpdGUgLS0+CisKKyAgICAgICAgCis8IS0tIHN0YXJ0IHRoZSBwcm9jZXNzaW5nIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8IS0tIEdFTkVSQVRFRCBGSUxFLCBETyBOT1QgRURJVCwgRURJVCBUSEUgWE1MIEZJTEUgSU4geGRvY3MgSU5TVEVBRCEgLS0+CisgICAgPCEtLSBNYWluIFBhZ2UgU2VjdGlvbiAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGh0bWw+CisgICAgICAgIDxoZWFkPgorICAgICAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiLz4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iCisJCQlPcGVuTWVldGluZ3MgVGVhbQorCQkiPgorICAgICAgICAgICAgPG1ldGEgbmFtZT0iZW1haWwiIGNvbnRlbnQ9InNvbG9tYXhAYXBhY2hlLm9yZyI+CisgICAgICAgICAgICAKKyAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgPHRpdGxlPkFwYWNoZSBPcGVuTWVldGluZ3MgLSBDbHVzdGVyaW5nPC90aXRsZT4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9vcGVubWVldGluZ3MuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9qcXVlcnktdWkuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2luLXNsaWRlci1zdHlsZXMuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2xvcmJveC5jc3MiIC8+CisgICAgICAgICAgICAKKwkJCTwhLS0gQWRkIGpRdWVyeSBsaWJyYXJ5IC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LTEuNy4xLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPCEtLSBBZGQgY29pbnNsaWRlciBwbHVnaW5zIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvY29pbi1zbGlkZXIubWluLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPCEtLSBBZGQgY29sb3Jib3ggcGx1Z2luIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LmNvbG9yYm94LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmNvcmUuanMiPjwvc2NyaXB0PgorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS53aWRnZXQuanMiPjwvc2NyaXB0PgorCQkKKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkuYWNjb3JkaW9uLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdD4KKwkJCSQoZnVuY3Rpb24oKSB7CisJCQkJJCggIiNhY2NvcmRpb24iICkuYWNjb3JkaW9uKHsKKwkJCQkJYXV0b0hlaWdodDogZmFsc2UsCisJCQkJCW5hdmlnYXRpb246IHRydWUsCisJCQkJCW5hdmlnYXRpb25GaWx0ZXI6IGZ1bmN0aW9uICgpIHsKKwkJCQkJCXZhciBzaWRlYmFySHJlZkFycmF5ID0gdGhpcy5ocmVmLnNwbGl0KCIvIik7CisgICAgCQkJCQl2YXIgc2lkZUJhckxhc3RTdHJpbmcgPSBzaWRlYmFySHJlZkFycmF5W3NpZGViYXJIcmVmQXJyYXkubGVuZ3RoIC0gMV0udG9Mb3dlckNhc2UoKTsKKwkJCQkJCQorCQkJCQkJaWYgKHNpZGVCYXJMYXN0U3RyaW5nLmluZGV4T2YoIiMiKSA9PSAtMSkgeworCQkJCQkJCXJldHVybiBmYWxzZTsKKwkJCQkJCX0KKwkJCQkJCQorCQkJCQkJCQkJCQkJLyogZG9jdW1lbnQubG9jYXRpb24uaHJlZiAqLworCQkJCQkJdmFyIGN1cnJlbnRTZWN0aW9uID0gIiI7CisJCQkJCQkKKwkJCQkJCXZhciBjdXJyZW50TG9jYXRpb24gPSAiIjsKKwkJCQkJCXZhciBjdXJyZW50TGluayA9ICIiOworCQkJCQkJaWYgKGZhbHNlKSB7CisJCQkJCQkKKwkJCQkJCX0KKyAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5kZXguaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5kZXguaHRtbCIuc3Vic3RyKDEsICIvaW5kZXguaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9saWNlbnNlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2xpY2Vuc2UuaHRtbCIuc3Vic3RyKDEsICIvbGljZW5zZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5zdWJzdHIoMSwgImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZG93bmxvYWRzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2Rvd25sb2Fkcy5odG1sIi5zdWJzdHIoMSwgIi9kb3dubG9hZHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiLnN1YnN0cigxLCAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9pbnN0YWxsYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5zdGFsbGF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL2luc3RhbGxhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1VwZ3JhZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvVXBncmFkZS5odG1sIi5zdWJzdHIoMSwgIi9VcGdyYWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIuc3Vic3RyKDEsICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db21tYW5kTGluZUFkbWluLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIuc3Vic3RyKDEsICIvQ29tbWFuZExpbmVBZG1pbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9nZXQtaW52b2x2ZWQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9nZXQtaW52b2x2ZWQuaHRtbCIuc3Vic3RyKDEsICIvZ2V0LWludm9sdmVkLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGVhbS1saXN0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdGVhbS1saXN0Lmh0bWwiLnN1YnN0cigxLCAiL3RlYW0tbGlzdC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL21haWwtbGlzdHMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9tYWlsLWxpc3RzLmh0bWwiLnN1YnN0cigxLCAiL21haWwtbGlzdHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLnN1YnN0cigxLCAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3N2bi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvc3ZuLmh0bWwiLnN1YnN0cigxLCAiL3N2bi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIuc3Vic3RyKDEsICJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2RlcGVuZGVuY2llcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZGVwZW5kZW5jaWVzLmh0bWwiLnN1YnN0cigxLCAiL2RlcGVuZGVuY2llcy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pVbml0VGVzdGluZy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSlVuaXRUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL0pVbml0VGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01hbnVhbFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01hbnVhbFRlc3RpbmcuaHRtbCIuc3Vic3RyKDEsICIvTWFudWFsVGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlbGVhc2VHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVsZWFzZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1JlbGVhc2VHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYnNpdGVHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvV2Vic2l0ZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1dlYnNpdGVHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Tb2FwUmVzdEFQSS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU29hcFJlc3RBUEkuaHRtbCIuc3Vic3RyKDEsICIvU29hcFJlc3RBUEkuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZXN0QVBJU2FtcGxlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZXN0QVBJU2FtcGxlLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RBUElTYW1wbGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MZGFwQW5kQURTLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9MZGFwQW5kQURTLmh0bWwiLnN1YnN0cigxLCAiL0xkYXBBbmRBRFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FcnJvcnNUYWJsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRXJyb3JzVGFibGUuaHRtbCIuc3Vic3RyKDEsICIvRXJyb3JzVGFibGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTW9vZGxlUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01vb2RsZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Nb29kbGVQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TYWthaVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TYWthaVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TYWthaVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ppcmFQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSmlyYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9KaXJhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSm9vbWxhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pvb21sYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Kb29tbGFQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EcnVwYWxQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRHJ1cGFsUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0RydXBhbFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0JpdHJpeFBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CaXRyaXhQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvQml0cml4UGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TdWdhckNSTVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TdWdhckNSTVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TdWdhckNSTVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlZG1pbmVQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVkbWluZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9SZWRtaW5lUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSUJNREIyQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSUJNREIyQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL0lCTURCMkNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3JhY2xlQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3JhY2xlQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL09yYWNsZUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTXlTUUxDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9NeVNRTENvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9NeVNRTENvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUG9zdGdyZXNDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MYW5ndWFnZUVkaXRvci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLnN1YnN0cigxLCAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5zdWJzdHIoMSwgIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FZGl0VGVtcGxhdGVzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRWRpdFRlbXBsYXRlcy5odG1sIi5zdWJzdHIoMSwgIi9FZGl0VGVtcGxhdGVzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1BvcnRTZXR0aW5ncy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1BvcnRTZXR0aW5ncy5odG1sIi5zdWJzdHIoMSwgIi9Qb3J0U2V0dGluZ3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5zdWJzdHIoMSwgIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5zdWJzdHIoMSwgIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EYXNoYm9hcmQuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9EYXNoYm9hcmQuaHRtbCIuc3Vic3RyKDEsICIvRGFzaGJvYXJkLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLnN1YnN0cigxLCAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Ib3RLZXlzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSG90S2V5cy5odG1sIi5zdWJzdHIoMSwgIi9Ib3RLZXlzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYmFwcE5hbWVQYXRoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvV2ViYXBwTmFtZVBhdGguaHRtbCIuc3Vic3RyKDEsICIvV2ViYXBwTmFtZVBhdGguaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL05hdmlnYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9OYXZpZ2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL05hdmlnYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLnN1YnN0cigxLCAiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIuc3Vic3RyKDEsICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIuc3Vic3RyKDEsICIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUlRNUFNBbmRIVFRQUy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1JUTVBTQW5kSFRUUFMuaHRtbCIuc3Vic3RyKDEsICIvUlRNUFNBbmRIVFRQUy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5zdWJzdHIoMSwgIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5zdWJzdHIoMSwgIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NsdXN0ZXJpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DbHVzdGVyaW5nLmh0bWwiLnN1YnN0cigxLCAiL0NsdXN0ZXJpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvR2V0VmVyc2lvbkluZm8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9HZXRWZXJzaW9uSW5mby5odG1sIi5zdWJzdHIoMSwgIi9HZXRWZXJzaW9uSW5mby5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkgICAgCQkJCQkKKyAgICAJCQkJCWN1cnJlbnRMaW5rID0gY3VycmVudExpbmsudG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCWN1cnJlbnRMb2NhdGlvbiA9IGN1cnJlbnRMb2NhdGlvbi50b0xvd2VyQ2FzZSgpOworICAgIAkJCQkJCisJCQkJCQlyZXR1cm4gc2lkZUJhckxhc3RTdHJpbmcgPT0gY3VycmVudExpbmsrIiMiK2N1cnJlbnRMb2NhdGlvbjsKKwkJCQkJfQorCQkJCX0pOworCQkJfSk7CisJCQk8L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCQkJCSQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgeworCQkJCQkkKCcuZmFuY3lib3gtYnV0dG9ucycpLmNvbG9yYm94KHtyZWw6J2ZhbmN5Ym94LWJ1dHRvbnMnLHdpZHRoOiI3NSUiLCBoZWlnaHQ6Ijc1JSJ9KTsKKwkJCQkJJCgnI2FjY29yZGlvbiBhJykuZWFjaChmdW5jdGlvbigpIHsKKwkJCQkgICAgICB2YXIgYSA9ICQodGhpcyk7CisJCQkJICAgICAgdmFyIGhyZWYgPSBhLmF0dHIoImhyZWYiKTsKKwkJCQkgICAgICBpZiAoaHJlZi5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkgICAgICAJICB2YXIgY29tcGFyZUl0ID0gaHJlZi5zdWJzdHIoMiwgaHJlZi5sZW5ndGgpOworCQkJCQkgICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKGNvbXBhcmVJdCkhPSAtMSkgeworCQkJCQkgICAgICAgYS5hZGRDbGFzcygnYWN0aXZlJyk7CisJCQkJCSAgICAgIH0KKwkJCQkgICAgICB9CisJCQkJICAgIH0pOworCQkJCQkkKCcjY29pbi1zbGlkZXInKS5jb2luc2xpZGVyKHsgd2lkdGg6IDY0MCxoZWlnaHQ6IDQwMCwgZGVsYXk6IDQwMDAgIH0pOwkJCQkJCisJCQkJfSk7CisJCQk8L3NjcmlwdD4JCisJCQkJCQkKKwkJCTxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisJCQkJLmZhbmN5Ym94LWN1c3RvbSAuZmFuY3lib3gtb3V0ZXIgeworCQkJCQlib3gtc2hhZG93OiAwIDAgNTBweCAjMjIyOworCQkJCX0KKwkJCTwvc3R5bGU+CisgICAgICAgIDwvaGVhZD4KKworICAgICAgICA8Ym9keSBiZ2NvbG9yPSIjZmZmZmZmIiB0ZXh0PSIjMDAwMDAwIiBsaW5rPSIjMTIzNDY1IiB2bGluaz0iIzEyMzQ2NSIgYWxpbms9IiMwMDAwMDAiPiAgCisgICAgICAgIAk8ZGl2IGNsYXNzPSJtYWluYm9keSIgc3R5bGU9IndpZHRoOiAxMDAlOyI+CisgICAgICAgIAk8ZGl2IGNsYXNzPSJzdXBlcmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIj4KKyAgICAgICAgICAgICAgICA8IS0tIFRPUCBJTUFHRSAtLT4KKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCI+Cis8YSBocmVmPSJodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvIj48aW1nIHNyYz0iLi9pbWFnZXMvbG9nby0yLmpwZyIgYWx0PSJBcGFjaGUgT3Blbk1lZXRpbmdzIiBib3JkZXI9IjAiLz48L2E+Cis8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCIgPgorCTxhIGhyZWY9ImRlbW8uaHRtbCI+RGVtbzwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJkb3dubG9hZHMuaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5Eb3dubG9hZDwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJpbnN0YWxsYXRpb24uaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5JbnN0YWxsYXRpb248L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MiIHRhcmdldD0iX0JMQU5LIj5XaWtpPC9hPgorCTxzcGFuPiZuYnNwOzwvc3Bhbj4KKzwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjQiPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8IS0tIExFRlQgU0lERSBOQVZJR0FUSU9OIC0tPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiIG5vd3JhcD0ibm93cmFwIj4KKworICAgICAgICAgICAgICAgICAgICA8IS0tIHNwZWNpYWwgQUNvbiBMb2dvIC0gbGVhdmUgaGVyZSBmb3IgbmV4dCB0aW1lCisgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9hcGFjaGVjb24uY29tLzIwMDUvVVMvIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vYXBhY2hlLm9yZy9pbWFnZXMvYWMyMDA1dXNfYmx1ZV8xMjV4MTI1LmpwZyIgaGVpZ2h0PSIxMjUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPSIxMjUiIGJvcmRlcj0iMCIgYWx0PSJBcGFjaGVDb24gVVMgMjAwNSIgLz4KKyAgICAgICAgICAgICAgICAgICAgPC9hPiAgLS0+CisKKyAgICAgICAgICAgICAgICAgICA8IS0tIHJlZ3VsYXIgbWVudSAtLT4KKworICAgICAgICAgICAgICAgICAgICAKKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8ZGl2IGlkPSJhY2NvcmRpb24iIHN0eWxlPSJ3aWR0aDogMTAwJSI+CisgICAgCisgICAgICAgICAgICAJPGgzPjxhIGhyZWY9IiNHZW5lcmFsIj5HZW5lcmFsPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9pbmRleC5odG1sIj5Ib21lPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9saWNlbnNlLmh0bWwiPkxpY2Vuc2U8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5BU0Y8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2Rvd25sb2Fkcy5odG1sIj5Eb3dubG9hZHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIj5Db21tZXJjaWFsIFN1cHBvcnQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0luc3RhbGxhdGlvbmFuZFVwZ3JhZGUiPkluc3RhbGxhdGlvbiBhbmQgVXBncmFkZTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5zdGFsbGF0aW9uLmh0bWwiPkluc3RhbGxhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vVXBncmFkZS5odG1sIj5VcGdyYWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLmh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIj5UdXRvcmlhbHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCI+Q29tbWFuZCBMaW5lIEFkbWluPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb21tdW5pdHkiPkNvbW11bml0eTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZ2V0LWludm9sdmVkLmh0bWwiPkdldCBJbnZvbHZlZDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdGVhbS1saXN0Lmh0bWwiPkNvbW1pdHRlcnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL21haWwtbGlzdHMuaHRtbCI+TWFpbGluZyBMaXN0czwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIj5XaWtpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNEZXZlbG9wbWVudCI+RGV2ZWxvcG1lbnQ8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3N2bi5odG1sIj5Tb3VyY2UgQ29kZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiPkJ1Z3MgLyBJc3N1ZXMgKEpJUkEpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kZXBlbmRlbmNpZXMuaHRtbCI+RGVwZW5kZW5jaWVzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CdWlsZEluc3RydWN0aW9ucy5odG1sIj5CdWlsZCBJbnN0cnVjdGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pVbml0VGVzdGluZy5odG1sIj5KVW5pdCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9NYW51YWxUZXN0aW5nLmh0bWwiPk1hbnVhbCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWxlYXNlR3VpZGUuaHRtbCI+UmVsZWFzZSBHdWlkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vV2Vic2l0ZUd1aWRlLmh0bWwiPldlYnNpdGUgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0ludGVncmF0aW9uIj5JbnRlZ3JhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU29hcFJlc3RBUEkuaHRtbCI+U09BUC9SRVNUIEFQSTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVzdEFQSVNhbXBsZS5odG1sIj5SRVNUIEFQSSBTYW1wbGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0xkYXBBbmRBRFMuaHRtbCI+TGRhcCBhbmQgQURTPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIj5Wb0lQIGFuZCBTSVA8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0Vycm9yc1RhYmxlLmh0bWwiPkVycm9ycyB0YWJsZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjUGx1Z2lucyI+UGx1Z2luczwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTW9vZGxlUGx1Z2luLmh0bWwiPk1vb2RsZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Nha2FpUGx1Z2luLmh0bWwiPlNha2FpIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSmlyYVBsdWdpbi5odG1sIj5KaXJhIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSm9vbWxhUGx1Z2luLmh0bWwiPkpvb21sYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0RydXBhbFBsdWdpbi5odG1sIj5EcnVwYWwgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CaXRyaXhQbHVnaW4uaHRtbCI+Qml0cml4IFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQ29uZmx1ZW5jZVBsdWdpbi5odG1sIj5Db25mbHVlbmNlIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU3VnYXJDUk1QbHVnaW4uaHRtbCI+U3VnYXJDUk0gUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWRtaW5lUGx1Z2luLmh0bWwiPlJlZG1pbmUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb25maWd1cmF0aW9uIj5Db25maWd1cmF0aW9uPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5EQiBTYW1wbGUgQ29uZmlndXJhdGlvbnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIj5BcGFjaGUgRGVyYnk8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0lCTURCMkNvbmZpZy5odG1sIj5JQk0gREIyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcmFjbGVDb25maWcuaHRtbCI+T3JhY2xlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9NeVNRTENvbmZpZy5odG1sIj5NeVNRTDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9zdGdyZXNDb25maWcuaHRtbCI+UG9zdGdyZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkxvY2FsaXphdGlvbiBhbmQgbGFuZ3VhZ2VzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCI+SW50ZXJuYXRpb25hbGlzYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0xhbmd1YWdlRWRpdG9yLmh0bWwiPkxhbmd1YWdlRWRpdG9yPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiPlRpbWVab25lSGFuZGxpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0VkaXRUZW1wbGF0ZXMuaHRtbCI+RWRpdFRlbXBsYXRlczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TkFUIFBvcnQgU2V0dGluZ3M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Qb3J0U2V0dGluZ3MuaHRtbCI+UG9ydCBzZXR0aW5nczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+UGVyZm9ybWFuY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIj5KVk0gcGVyZm9ybWFuY2UgdHVuaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Vc2VyIEludGVyZmFjZTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCI+VGhlbWVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9EYXNoYm9hcmQuaHRtbCI+RGFzaGJvYXJkPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIj5XZWJjYW0gcmVzb2x1dGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIj5Sb29tIGxheW91dCBvcHRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Ib3RLZXlzLmh0bWwiPkhvdCBLZXlzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5DdXN0b21pemF0aW9uPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViYXBwTmFtZVBhdGguaHRtbCI+V2ViYXBwIG5hbWUvcGF0aDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTmF2aWdhdGlvbi5odG1sIj5OYXZpZ2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiPkNhbGVuZGFyIGFuZCB0aW1lem9uZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIj5DdXN0b20gcm9vbSB0eXBlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIj5DdXN0b20gY3R5cHQgbWVjaGFuaXNtPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIj5HZW5lcmFsIENvbmZpZ3VyYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlNlY3VyaXR5PC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUmVzdHJpY3RlZEFjY2Vzcy5odG1sIj5SZXN0cmljdGVkIEFjY2VzczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUlRNUFNBbmRIVFRQUy5odG1sIj5SVE1QUyBhbmQgSFRUUFM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNvbnZlcnRlcnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiPk9wZW5PZmZpY2UgQ29udmVydGVyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiPkZGTVBFRyBWZXJzaW9uIFN3aXRjaDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q2x1c3RlcmluZzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NsdXN0ZXJpbmcuaHRtbCI+Q2x1c3RlcmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TWlzYzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0dldFZlcnNpb25JbmZvLmh0bWwiPkdldCB2ZXJzaW9uIGluZm88L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAorICAgIDwvZGl2PgorICAgICAKKyAgICA8YnIvPgorICAgIAorICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJEZXNjcmlwdGlvbiI+PHN0cm9uZz5EZXNjcmlwdGlvbjwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgICA8aHIgc3R5bGU9IndpZHRoOjEwMCU7IGNvbG9yOiM5OTk5OTk7IGJhY2tncm91bmQtY29sb3I6Izk5OTk5OTsgaGVpZ2h0OjFweDsgYm9yZGVyOjBweDsiLz4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQorCQkJCU9wZW5NZWV0aW5ncyAyLjEgb3IgbGF0ZXIgaXMgcmVxdWlyZWQgdG8gdXNlIGNsdXN0ZXJpbmcuIE9uZSBkYXRhYmFzZSBpcyB1c2VkIGZvciBhbGwgT3Blbk1lZXRpbmdzIA0KKwkJCQlzZXJ2ZXJzLCBzbyBhbGwgZGF0YWJhc2UgdGFibGVzIGFyZSBzaGFyZWQgYWNyb3NzIE9NIGluc3RhbmNlcy4gQ2VydGFpbiBmb2xkZXJzIHNob3VsZCBiZSBzaGFyZWQgDQorCQkJCWJldHdlZW4gYWxsIHNlcnZlcnMgdG8gYWxsb3cgYWNjZXNzIHRvIHRoZSBmaWxlcy9yZWNvcmRpbmcuPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iQ29uZmlndXJhdGlvbiI+PHN0cm9uZz5Db25maWd1cmF0aW9uPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+DQorCQkJCTxsaT4NCisJCQkJCU11bHRpcGxlIE9NIHNlcnZlcnMgc2hvdWxkIGJlIHNldCB1cCBhcyBkZXNjcmliZWQgaW4NCisJCQkJCTxhIGhyZWY9Imluc3RhbGxhdGlvbi5odG1sIiB0YXJnZXQ9Il9CTEFOSyI+DQorCQkJCQkJPGI+SW5zdGFsbGF0aW9uPC9iPg0KKwkJCQkJPC9hPg0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+QWxsIHNlcnZlcnMgc2hvdWxkIGJlIGNvbmZpZ3VyZWQgdG8gaGF2ZSBzYW1lIFRpbWUgem9uZSAoVG8gYXZvaWQNCisJCQkJCVNjaGVkdWxlcnMgdG8gZHJvcCB1c2VyIHNlc3Npb25zIGFzIG91dGRhdGVkKQ0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+QWxsIHNlcnZlcnMgc2hvdWxkIGJlIGNvbmZpZ3VyZWQgdG8gdXNlIHRoZSBzYW1lIERCPC9saT4NCisJCQkJPGxpPlNlcnZlcnMgc2hvdWxkIGJlIGFkZGVkIGluIEFkbWluaXN0cmF0aW9uIC0mZ3Q7IFNlcnZlcnMgc2VjdGlvbjwvbGk+DQorCQkJPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkID48IS0tIGJnY29sb3I9IiNFRUVFRUUiIC0tPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0idmVyZGFuYSxhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IkRhdGFiYXNlIj48c3Ryb25nPkRhdGFiYXNlPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+DQorCQkJCTxsaT5BZGQgdXNlcnMgd2hvIGNhbiBjb25uZWN0IHRvIHRoZSBkYXRhYmFzZSByZW1vdGVseTwvbGk+DQorCQkJCTxsaT5VcGRhdGUgPHR0Pi9vcHQvcmVkNS93ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL2NsYXNzZXMvTUVUQS1JTkYvcGVyc2lzdGVuY2UueG1sPC90dD4NCisJCQkJCXNldCBjb3JyZWN0IHNlcnZlciBhZGRyZXNzLCBsb2dpbiBhbmQgcGFzc3dvcmQuIEFsc28gYWRkIHRoZSBmb2xsb3dpbmcgc2VjdGlvbjoNCisJCQkJCTxkaXYgY2xhc3M9InhtbGNvZGUiPiZsdDtwcm9wZXJ0eSBuYW1lPSJvcGVuanBhLlJlbW90ZUNvbW1pdFByb3ZpZGVyIiB2YWx1ZT0idGNwKEFkZHJlc3Nlcz0xMC4xLjEuMTsxMC4xLjEuMikiIC8mZ3Q7PC9kaXY+DQorCQkJCQlJbnN0ZWFkIG9mIHRoZSAxMC4xLjEuMSBhbmQgMTAuMS4xLjIgc2V0IHNlbWljb2xvbiBzZXBhcmF0ZWQgSVBzIG9mIGFsbCBub2RlcyBvZiB0aGUgY2x1c3Rlci4NCisJCQkJPC9saT4NCisJCQk8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iRmlsZSBzeXN0ZW1zIj48c3Ryb25nPkZpbGUgc3lzdGVtczwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgICA8aHIgc3R5bGU9IndpZHRoOjEwMCU7IGNvbG9yOiM5OTk5OTk7IGJhY2tncm91bmQtY29sb3I6Izk5OTk5OTsgaGVpZ2h0OjFweDsgYm9yZGVyOjBweDsiLz4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPg0KKwkJCQk8bGk+SW5zdGFsbCBORlMgdG8gdGhlIGRhdGEgc2VydmVyLiBJbiB0aGUgZmlsZSA8dHQ+L2V0Yy9leHBvcnRzPC90dD4gYWRkIHRoZSBmb2xsb3dpbmcgbGluZXM6DQorCQkJCQk8ZGl2IGNsYXNzPSJ4bWxjb2RlIj4NCisJCQkJCQkvb3B0L3JlZDUvd2ViYXBwcy9vcGVubWVldGluZ3MvdXBsb2FkIDEwLjEuMS4yKHJ3LHN5bmMsbm9fc3VidHJlZV9jaGVjayxub19yb290X3NxdWFzaCk8YnIgLz4NCisJCQkJCQkvb3B0L3JlZDUvd2ViYXBwcy9vcGVubWVldGluZ3Mvc3RyZWFtcyAxMC4xLjEuMihydyxzeW5jLG5vX3N1YnRyZWVfY2hlY2ssbm9fcm9vdF9zcXVhc2gpDQorCQkJCQk8L2Rpdj4NCisJCQkJCUhlcmUgMTAuMS4xLjIgLSBpcyBub2RlIGlwIGZvciBORlMgcmVtb3RlIGFjY2Vzcy4gQWRkIHRoZXNlIGxpbmVzIGZvciBhbGwgbm9kZXMgZXhjZXB0IG5vZGUgd2l0aCANCisJCQkJCWZvbGRlcnMuDQorCQkJCTwvbGk+DQorCQkJCTxsaT4NCisJCQkJCUluc3RhbGwgTkZTIGNvbW1vbiB0b29scyB0byBvdGhlciBub2Rlcy4gSW4gdGhlIGZpbGUgPHR0Pi9ldGMvZnN0YWI8L3R0PiBkbyB0aGUgZm9sbG93aW5nOg0KKwkJCQkJPGRpdiBjbGFzcz0ieG1sY29kZSI+DQorCQkJCQkJMTAuMS4xLjE6L29wdC9yZWQ1L3dlYmFwcHMvb3Blbm1lZXRpbmdzL3VwbG9hZC88YnIgLz4NCisJCQkJCQkvb3B0L3JlZDUvd2ViYXBwcy9vcGVubWVldGluZ3MvdXBsb2FkIG5mcyB0aW1lbz01MCxoYXJkLGludHI8YnIgLz4NCisJCQkJCQkxMC4xLjEuMTovb3B0L3JlZDUvd2ViYXBwcy9vcGVubWVldGluZ3Mvc3RyZWFtcy88YnIgLz4NCisJCQkJCQkvb3B0L3JlZDUvd2ViYXBwcy9vcGVubWVldGluZ3Mvc3RyZWFtcyBuZnMgdGltZW89NTAsaGFyZCxpbnRyDQorCQkJCQk8L2Rpdj4NCisJCQkJCUhlcmUgMTAuMS4xLjEg4oCTIGRhdGEgc2VydmVyIGlwLiBBbmQgcnVuIHRoZSBjb21tYW5kOg0KKwkJCQkJPGRpdiBjbGFzcz0ieG1sY29kZSI+DQorCQkJCQkJbW91bnQgLWENCisJCQkJCTwvZGl2Pg0KKwkJCQk8L2xpPg0KKwkJCTwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJPTSBub2RlcyBjb25maWd1cmF0aW9uIj48c3Ryb25nPk9NIG5vZGVzIGNvbmZpZ3VyYXRpb248L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0dD4vb3B0L3JlZDUvd2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9vcGVubWVldGluZ3MtYXBwbGljYXRpb25Db250ZXh0LnhtbDwvdHQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+DQorCQkJCTxsaT4NCisJCQkJCUZvciBlYWNoIG5vZGUgdW5jb21tZW50IGxpbmU6DQorCQkJCQk8ZGl2IGNsYXNzPSJ4bWxjb2RlIj4NCisJCQkJCQkmbHQ7IS0tIE5lZWQgdG8gYmUgdW5jb21tZW50ZWQgYW5kIHNldCB0byB0aGUgcmVhbCBJRCBpZiBpbiBjbHVzdGVyIG1vZGUtLSZndDs8YnIgLz4NCisJCQkJCQkmbHQ7cHJvcGVydHkgbmFtZT0ic2VydmVySWQiIHZhbHVlPSIxIiAvJmd0Ow0KKwkJCQkJPC9kaXY+DQorCQkJCQlhbmQgaW5wdXQgdGhlIHVuaXF1ZSB2YWx1ZSBmb3IgZWFjaCBub2RlLg0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+IA0KKwkJCQkJUmVwbGFjZSA8dHQ+Jmx0O3JlZiBiZWFuPSJvcGVubWVldGluZ3MuSGFzaE1hcFN0b3JlIiAvJmd0OyAgJmx0OyEtLSBNZW1vcnkgYmFzZWQgc2Vzc2lvbiBjYWNoZSBieSBkZWZhdWx0IC0tJmd0OzwvdHQ+PGJyIC8+DQorCQkJCQl3aXRoIDx0dD4mbHQ7cmVmIGJlYW49Im9wZW5tZWV0aW5ncy5EYXRhYmFzZVN0b3JlIiAvJmd0OzwvdHQ+IA0KKwkJCQkJKEN1cnJlbnRseSBjb21tZW50ZWQgb3V0IHdpdGggZm9sbG93aW5nIGNvbW1lbnQ6IDx0dD4iVGhlIGZvbGxvd2luZyBzZWN0aW9uIHNob3VsZCBiZSB1c2VkIGluIGNsdXN0ZXJpbmcgbW9kZSI8L3R0PikNCisJCQkJPC9saT4NCisJCQk8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iQ29uZmlndXJpbmcgY2x1c3RlciBpbiBBZG1pbmlzdHJhdGlvbiI+PHN0cm9uZz5Db25maWd1cmluZyBjbHVzdGVyIGluIEFkbWluaXN0cmF0aW9uPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+DQorCQkJCTxsaT5HbyB0byB0aGUgPHR0PkFkbWluaXN0cmF0aW9uIC0mZ3Q7IFVzZXJzPC90dD4gYW5kIGNyZWF0ZSBXZWJzZXJ2aWNlIHVzZXIgKG9ubHkgYWNjZXNzIHZpYSBTT0FQKS48L2xpPg0KKwkJCQk8bGk+DQorCQkJCQlHbyB0byB0aGUgPHR0PkFkbWluaXN0cmF0aW9uIC0mZ3Q7IFNlcnZlcnM8L3R0PiBhbmQgYWRkIGFsbCBjbHVzdGVyIG5vZGVzIHdpdGggdGhlIGZvbGxvd2luZyBzZXR0aW5nczoNCisJCQkJCTxkaXYgY2xhc3M9InhtbGNvZGUiPg0KKwkJCQkJCVNlcnZlciBOYW1lID0gbm9kZSBuYW1lOzxiciAvPg0KKwkJCQkJCUFjdGl2ZSA9IGNoZWNrIHRoZSBjaGVja2JveC4gSWYgdGhlIGNoZWNrYm94IGlzIGNoZWNrZWQgaXQgbWVhbnMgbm9kZSBpcyBhY3RpdmUgYW5kIHlvdSBjYW4gdXNlIHRoaXMgbm9kZTs8YnIgLz4NCisJCQkJCQlTZXJ2ZXIgQWRkcmVzcyA9IG5vZGUgaXA7PGJyIC8+DQorCQkJCQkJSFRUUCBQb3J0ID0gNTA4MCAtIHBvcnQgZm9yIGh0dHAgcGFydCBvZiBPcGVubWVldGluZ3M7PGJyIC8+DQorCQkJCQkJVXNlciAoU09BUCBBY2Nlc3MpID0gbG9naW4gb2YgV2Vic2VydmljZSB1c2VyIGZyb20gdGhlIHByZXZpb3VzIHN0ZXA7PGJyIC8+DQorCQkJCQkJUGFzc3dvcmQgPSBwYXNzd29yZCBvZiBXZWJzZXJ2aXNlIHVzZXI7PGJyIC8+DQorCQkJCQkJV2ViYXBwIHBhdGggPSBvcGVubWVldGluZ3MgLSBwYXRoIHdoZXJlIE9NIGluc3RhbGxlZCBvbiB0aGlzIG5vZGUsIGl0IHdvdWxkIGJlIGJldHRlciBpZiB0aGlzIHBhdGggd2lsbCBiZSB0aGUgc2FtZSBmb3IgYWxsIG5vZGVzOzxiciAvPg0KKwkJCQkJCVByb3RvY29sID0gaHR0cC4NCisJCQkJCTwvZGl2Pg0KKwkJCQk8L2xpPiANCisJCQk8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Ii4vaW1hZ2VzL2NsdXN0ZXIxLnBuZyIgd2lkdGg9IjY1MCIgaGVpZ2h0PSI0NjEiIGFsaWduPSIiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iRW5zdXJlIGV2ZXJ5dGhpbmcgd29ya3MgYXMgZXhwZWN0ZWQiPjxzdHJvbmc+RW5zdXJlIGV2ZXJ5dGhpbmcgd29ya3MgYXMgZXhwZWN0ZWQ8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4NCisJCQkJPGxpPlNldCB1cCB0aGUgY2x1c3RlciBhbmQgbG9nZ2luIHdpdGggdHdvIHVzZXJzLCBnbyB0byB0aGUgc2FtZSByb29tIChhbHNvIGNoZWNrIGJlZm9yZSByb29tIA0KKwkJCQllbnRlcmluZyB0aGF0IHRoZSBzdGF0dXMgcGFnZSB3aXRoIHRoZSByb29tIGxpc3Qgc2hvd3MgdGhlIGNvcnJlY3QgbnVtYmVyIG9mIHBhcnRpY2lwYW50cyBiZWZvcmUgDQorCQkJCWVudGVyaW5nIHRoZSByb29tKS4gWW91IHNob3VsZCBsb2dpbiB0byB0aGUgc2FtZSBzZXJ2ZXIgaW5pdGlhbGx5LCB0aGUgc2VydmVyIHdpbGwgcmVkaXJlY3QgeW91IA0KKwkJCQlmb3IgdGhlIGNvbmZlcmVuY2Ugcm9vbSB0byB0aGUgYXBwcm9wcmlhdGUgc2VydmVyIGF1dG9tYXRpY2FsbHkuIEJvdGggdXNlcnMgc2hvdWxkIGJlIGluIHRoZSBzYW1lIHJvb20uDQorCQkJCTwvbGk+DQorCQkJCTxsaT5EbyB0aGUgc2FtZSB3aXRoIG9ubHkgdHdvIHVzZXJzIGJ1dCBnbyB0byBfZGlmZmVyZW50XyByb29tcy4gVGhlIGNhbGN1bGF0aW9uIHNob3VsZCBzZW5kIA0KKwkJCQlib3RoIHVzZXJzIHRvIGRpZmZlcmVudCBzZXJ2ZXJzLCBjYXVzZSBiYXNlZCBvbiB0aGUgY2FsY3VsYXRpb24gdHdvIGRpZmZlcmVudCByb29tcyBvbiBhIGNsdXN0ZXIgDQorCQkJCXdpdGggdHdvIG5vZGVzIHNob3VsZCBnbyBleGFjdGx5IG9uZSByb29tIGZvciBlYWNoIG5vZGUuIFlvdSBjYW4gbm93IGxvZ2dpbiByZWFsbHkgdG8gbm9kZTEgDQorCQkJCWFuZCBub2RlMiBvZiB5b3VyIGNsdXN0ZXIgd2hpbGUgdGhvc2UgdXNlcnMgYXJlIGxvZ2dlZGluIGFuZCBnbyB0byA8dHQ+QWRtaW5pc3RyYXRpb24gJmd0OyBDb25uZWN0aW9uczwvdHQ+DQorCQkJCWFuZCBjaGVjayBpbiB0aGUgY29sdW1uICJzZXJ2ZXJzIiB3aGVyZSB0aGV5IGFyZSBsb2NhdGVkLiBUaGV5IHNob3VsZCBiZSBvbiBkaWZmZXJlbnQgc2VydmVyLg0KKwkJCQk8L2xpPg0KKwkJCTwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iLi9pbWFnZXMvY2x1c3RlcjIucG5nIiB3aWR0aD0iNjUwIiBoZWlnaHQ9IjM2OSIgYWxpZ249IiI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDwhLS0gRk9PVEVSIC0tPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgYWxpZ249ImNlbnRlciI+PGZvbnQgY29sb3I9IiMxMjM0NjUiIHNpemU9Ii0xIj48ZW0+CisgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAmIzE2OTsgMjAwMy0yMDEzLCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyAgICAgICAgICAgICAgICAgICAgPC9lbT48L2ZvbnQ+PC9kaXY+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvYm9keT4KKyAgICA8L2h0bWw+Cis8IS0tIGVuZCB0aGUgcHJvY2Vzc2luZyAtLT4KKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKwpkaWZmIC0tZ2l0IGEvZG9jcy9Db21tYW5kTGluZUFkbWluLmh0bWwgYi9kb2NzL0NvbW1hbmRMaW5lQWRtaW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjY0YTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9Db21tYW5kTGluZUFkbWluLmh0bWwKQEAgLTAsMCArMSw3NDAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgorCis8IS0tCitDb3B5cmlnaHQgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKworPCEtLSBDb250ZW50IFN0eWxlc2hlZXQgZm9yIFNpdGUgLS0+CisKKyAgICAgICAgCis8IS0tIHN0YXJ0IHRoZSBwcm9jZXNzaW5nIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8IS0tIEdFTkVSQVRFRCBGSUxFLCBETyBOT1QgRURJVCwgRURJVCBUSEUgWE1MIEZJTEUgSU4geGRvY3MgSU5TVEVBRCEgLS0+CisgICAgPCEtLSBNYWluIFBhZ2UgU2VjdGlvbiAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGh0bWw+CisgICAgICAgIDxoZWFkPgorICAgICAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiLz4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iCisJCQlPcGVuTWVldGluZ3MgVGVhbQorCQkiPgorICAgICAgICAgICAgPG1ldGEgbmFtZT0iZW1haWwiIGNvbnRlbnQ9InNvbG9tYXhAYXBhY2hlLm9yZyI+CisgICAgICAgICAgICAKKyAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgPHRpdGxlPkFwYWNoZSBPcGVuTWVldGluZ3MgLSBDb21tYW5kIGxpbmUgYWRtaW48L3RpdGxlPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL29wZW5tZWV0aW5ncy5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2pxdWVyeS11aS5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2NvaW4tc2xpZGVyLXN0eWxlcy5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2NvbG9yYm94LmNzcyIgLz4KKyAgICAgICAgICAgIAorCQkJPCEtLSBBZGQgalF1ZXJ5IGxpYnJhcnkgLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9qcXVlcnktMS43LjEubWluLmpzIj48L3NjcmlwdD4KKwkJCisJCQk8IS0tIEFkZCBjb2luc2xpZGVyIHBsdWdpbnMgLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9jb2luLXNsaWRlci5taW4uanMiPjwvc2NyaXB0PgorCQkJCisJCQk8IS0tIEFkZCBjb2xvcmJveCBwbHVnaW4gLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9qcXVlcnkuY29sb3Jib3guanMiPjwvc2NyaXB0PgorCQkKKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkuY29yZS5qcyI+PC9zY3JpcHQ+CisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLndpZGdldC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5hY2NvcmRpb24uanMiPjwvc2NyaXB0PgorCQkJCisJCQk8c2NyaXB0PgorCQkJJChmdW5jdGlvbigpIHsKKwkJCQkkKCAiI2FjY29yZGlvbiIgKS5hY2NvcmRpb24oeworCQkJCQlhdXRvSGVpZ2h0OiBmYWxzZSwKKwkJCQkJbmF2aWdhdGlvbjogdHJ1ZSwKKwkJCQkJbmF2aWdhdGlvbkZpbHRlcjogZnVuY3Rpb24gKCkgeworCQkJCQkJdmFyIHNpZGViYXJIcmVmQXJyYXkgPSB0aGlzLmhyZWYuc3BsaXQoIi8iKTsKKyAgICAJCQkJCXZhciBzaWRlQmFyTGFzdFN0cmluZyA9IHNpZGViYXJIcmVmQXJyYXlbc2lkZWJhckhyZWZBcnJheS5sZW5ndGggLSAxXS50b0xvd2VyQ2FzZSgpOworCQkJCQkJCisJCQkJCQlpZiAoc2lkZUJhckxhc3RTdHJpbmcuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJCQkJcmV0dXJuIGZhbHNlOworCQkJCQkJfQorCQkJCQkJCisJCQkJCQkJCQkJCQkvKiBkb2N1bWVudC5sb2NhdGlvbi5ocmVmICovCisJCQkJCQl2YXIgY3VycmVudFNlY3Rpb24gPSAiIjsKKwkJCQkJCQorCQkJCQkJdmFyIGN1cnJlbnRMb2NhdGlvbiA9ICIiOworCQkJCQkJdmFyIGN1cnJlbnRMaW5rID0gIiI7CisJCQkJCQlpZiAoZmFsc2UpIHsKKwkJCQkJCQorCQkJCQkJfQorICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9pbmRleC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9pbmRleC5odG1sIi5zdWJzdHIoMSwgIi9pbmRleC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2xpY2Vuc2UuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbGljZW5zZS5odG1sIi5zdWJzdHIoMSwgIi9saWNlbnNlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iLnN1YnN0cigxLCAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kb3dubG9hZHMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZG93bmxvYWRzLmh0bWwiLnN1YnN0cigxLCAiL2Rvd25sb2Fkcy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIuc3Vic3RyKDEsICIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luc3RhbGxhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9pbnN0YWxsYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvaW5zdGFsbGF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVXBncmFkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9VcGdyYWRlLmh0bWwiLnN1YnN0cigxLCAiL1VwZ3JhZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIi5zdWJzdHIoMSwgImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29tbWFuZExpbmVBZG1pbi5odG1sIi5zdWJzdHIoMSwgIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2dldC1pbnZvbHZlZC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2dldC1pbnZvbHZlZC5odG1sIi5zdWJzdHIoMSwgIi9nZXQtaW52b2x2ZWQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi90ZWFtLWxpc3QuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi90ZWFtLWxpc3QuaHRtbCIuc3Vic3RyKDEsICIvdGVhbS1saXN0Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbWFpbC1saXN0cy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL21haWwtbGlzdHMuaHRtbCIuc3Vic3RyKDEsICIvbWFpbC1saXN0cy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIuc3Vic3RyKDEsICJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvc3ZuLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9zdm4uaHRtbCIuc3Vic3RyKDEsICIvc3ZuLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIi5zdWJzdHIoMSwgImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZGVwZW5kZW5jaWVzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kZXBlbmRlbmNpZXMuaHRtbCIuc3Vic3RyKDEsICIvZGVwZW5kZW5jaWVzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiLnN1YnN0cigxLCAiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSlVuaXRUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9KVW5pdFRlc3RpbmcuaHRtbCIuc3Vic3RyKDEsICIvSlVuaXRUZXN0aW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTWFudWFsVGVzdGluZy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTWFudWFsVGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9NYW51YWxUZXN0aW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVsZWFzZUd1aWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZWxlYXNlR3VpZGUuaHRtbCIuc3Vic3RyKDEsICIvUmVsZWFzZUd1aWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2Vic2l0ZUd1aWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9XZWJzaXRlR3VpZGUuaHRtbCIuc3Vic3RyKDEsICIvV2Vic2l0ZUd1aWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1NvYXBSZXN0QVBJLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Tb2FwUmVzdEFQSS5odG1sIi5zdWJzdHIoMSwgIi9Tb2FwUmVzdEFQSS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RBUElTYW1wbGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1Jlc3RBUElTYW1wbGUuaHRtbCIuc3Vic3RyKDEsICIvUmVzdEFQSVNhbXBsZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0xkYXBBbmRBRFMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0xkYXBBbmRBRFMuaHRtbCIuc3Vic3RyKDEsICIvTGRhcEFuZEFEUy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0Vycm9yc1RhYmxlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9FcnJvcnNUYWJsZS5odG1sIi5zdWJzdHIoMSwgIi9FcnJvcnNUYWJsZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Nb29kbGVQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTW9vZGxlUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL01vb2RsZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Nha2FpUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1Nha2FpUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1Nha2FpUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSmlyYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9KaXJhUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0ppcmFQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Kb29tbGFQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSm9vbWxhUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0pvb21sYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0RydXBhbFBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9EcnVwYWxQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvRHJ1cGFsUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQml0cml4UGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0JpdHJpeFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9CaXRyaXhQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVkbWluZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZWRtaW5lUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1JlZG1pbmVQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9JQk1EQjJDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JQk1EQjJDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvSUJNREIyQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9PcmFjbGVDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9PcmFjbGVDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvT3JhY2xlQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NeVNRTENvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL015U1FMQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL015U1FMQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1Bvc3RncmVzQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL1Bvc3RncmVzQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0xhbmd1YWdlRWRpdG9yLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIuc3Vic3RyKDEsICIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiLnN1YnN0cigxLCAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0VkaXRUZW1wbGF0ZXMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9FZGl0VGVtcGxhdGVzLmh0bWwiLnN1YnN0cigxLCAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUG9ydFNldHRpbmdzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9ydFNldHRpbmdzLmh0bWwiLnN1YnN0cigxLCAiL1BvcnRTZXR0aW5ncy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiLnN1YnN0cigxLCAiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiLnN1YnN0cigxLCAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0Rhc2hib2FyZC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0Rhc2hib2FyZC5odG1sIi5zdWJzdHIoMSwgIi9EYXNoYm9hcmQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0hvdEtleXMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Ib3RLZXlzLmh0bWwiLnN1YnN0cigxLCAiL0hvdEtleXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViYXBwTmFtZVBhdGguaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJhcHBOYW1lUGF0aC5odG1sIi5zdWJzdHIoMSwgIi9XZWJhcHBOYW1lUGF0aC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTmF2aWdhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL05hdmlnYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvTmF2aWdhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIuc3Vic3RyKDEsICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIuc3Vic3RyKDEsICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIi5zdWJzdHIoMSwgIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SVE1QU0FuZEhUVFBTLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUlRNUFNBbmRIVFRQUy5odG1sIi5zdWJzdHIoMSwgIi9SVE1QU0FuZEhUVFBTLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiLnN1YnN0cigxLCAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiLnN1YnN0cigxLCAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ2x1c3RlcmluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NsdXN0ZXJpbmcuaHRtbCIuc3Vic3RyKDEsICIvQ2x1c3RlcmluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZXRWZXJzaW9uSW5mby5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dldFZlcnNpb25JbmZvLmh0bWwiLnN1YnN0cigxLCAiL0dldFZlcnNpb25JbmZvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCSAgICAJCQkJCQorICAgIAkJCQkJY3VycmVudExpbmsgPSBjdXJyZW50TGluay50b0xvd2VyQ2FzZSgpOworICAgIAkJCQkJY3VycmVudExvY2F0aW9uID0gY3VycmVudExvY2F0aW9uLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQkKKwkJCQkJCXJldHVybiBzaWRlQmFyTGFzdFN0cmluZyA9PSBjdXJyZW50TGluaysiIyIrY3VycmVudExvY2F0aW9uOworCQkJCQl9CisJCQkJfSk7CisJCQl9KTsKKwkJCTwvc2NyaXB0PgorCQkJCisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisJCQkJJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CisJCQkJCSQoJy5mYW5jeWJveC1idXR0b25zJykuY29sb3Jib3goe3JlbDonZmFuY3lib3gtYnV0dG9ucycsd2lkdGg6Ijc1JSIsIGhlaWdodDoiNzUlIn0pOworCQkJCQkkKCcjYWNjb3JkaW9uIGEnKS5lYWNoKGZ1bmN0aW9uKCkgeworCQkJCSAgICAgIHZhciBhID0gJCh0aGlzKTsKKwkJCQkgICAgICB2YXIgaHJlZiA9IGEuYXR0cigiaHJlZiIpOworCQkJCSAgICAgIGlmIChocmVmLmluZGV4T2YoIiMiKSA9PSAtMSkgeworCQkJCSAgICAgIAkgIHZhciBjb21wYXJlSXQgPSBocmVmLnN1YnN0cigyLCBocmVmLmxlbmd0aCk7CisJCQkJCSAgICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoY29tcGFyZUl0KSE9IC0xKSB7CisJCQkJCSAgICAgICBhLmFkZENsYXNzKCdhY3RpdmUnKTsKKwkJCQkJICAgICAgfQorCQkJCSAgICAgIH0KKwkJCQkgICAgfSk7CisJCQkJCSQoJyNjb2luLXNsaWRlcicpLmNvaW5zbGlkZXIoeyB3aWR0aDogNjQwLGhlaWdodDogNDAwLCBkZWxheTogNDAwMCAgfSk7CQkJCQkKKwkJCQl9KTsKKwkJCTwvc2NyaXB0PgkKKwkJCQkJCQorCQkJPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKwkJCQkuZmFuY3lib3gtY3VzdG9tIC5mYW5jeWJveC1vdXRlciB7CisJCQkJCWJveC1zaGFkb3c6IDAgMCA1MHB4ICMyMjI7CisJCQkJfQorCQkJPC9zdHlsZT4KKyAgICAgICAgPC9oZWFkPgorCisgICAgICAgIDxib2R5IGJnY29sb3I9IiNmZmZmZmYiIHRleHQ9IiMwMDAwMDAiIGxpbms9IiMxMjM0NjUiIHZsaW5rPSIjMTIzNDY1IiBhbGluaz0iIzAwMDAwMCI+ICAKKyAgICAgICAgCTxkaXYgY2xhc3M9Im1haW5ib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgCTxkaXYgY2xhc3M9InN1cGVyYm9keSIgc3R5bGU9IndpZHRoOiAxMDAlOyI+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiPgorICAgICAgICAgICAgICAgIDwhLS0gVE9QIElNQUdFIC0tPgorICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0Ij4KKzxhIGhyZWY9Imh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy8iPjxpbWcgc3JjPSIuL2ltYWdlcy9sb2dvLTIuanBnIiBhbHQ9IkFwYWNoZSBPcGVuTWVldGluZ3MiIGJvcmRlcj0iMCIvPjwvYT4KKzwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODAlIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIiA+CisJPGEgaHJlZj0iZGVtby5odG1sIj5EZW1vPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9ImRvd25sb2Fkcy5odG1sIiB0YXJnZXQ9Il9QQVJFTlQiPkRvd25sb2FkPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imluc3RhbGxhdGlvbi5odG1sIiB0YXJnZXQ9Il9QQVJFTlQiPkluc3RhbGxhdGlvbjwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUyIgdGFyZ2V0PSJfQkxBTksiPldpa2k8L2E+CisJPHNwYW4+Jm5ic3A7PC9zcGFuPgorPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iNCI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGhyIG5vc2hhZGU9Im5vc2hhZGUiIHNpemU9IjEiLz4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDwhLS0gTEVGVCBTSURFIE5BVklHQVRJT04gLS0+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCIgbm93cmFwPSJub3dyYXAiPgorCisgICAgICAgICAgICAgICAgICAgIDwhLS0gc3BlY2lhbCBBQ29uIExvZ28gLSBsZWF2ZSBoZXJlIGZvciBuZXh0IHRpbWUKKyAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL2FwYWNoZWNvbi5jb20vMjAwNS9VUy8iPgorICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHA6Ly9hcGFjaGUub3JnL2ltYWdlcy9hYzIwMDV1c19ibHVlXzEyNXgxMjUuanBnIiBoZWlnaHQ9IjEyNSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjEyNSIgYm9yZGVyPSIwIiBhbHQ9IkFwYWNoZUNvbiBVUyAyMDA1IiAvPgorICAgICAgICAgICAgICAgICAgICA8L2E+ICAtLT4KKworICAgICAgICAgICAgICAgICAgIDwhLS0gcmVndWxhciBtZW51IC0tPgorCisgICAgICAgICAgICAgICAgICAgIAorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDxkaXYgaWQ9ImFjY29yZGlvbiIgc3R5bGU9IndpZHRoOiAxMDAlIj4KKyAgICAKKyAgICAgICAgICAgIAk8aDM+PGEgaHJlZj0iI0dlbmVyYWwiPkdlbmVyYWw8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luZGV4Lmh0bWwiPkhvbWU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2xpY2Vuc2UuaHRtbCI+TGljZW5zZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iPkFTRjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZG93bmxvYWRzLmh0bWwiPkRvd25sb2FkczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiPkNvbW1lcmNpYWwgU3VwcG9ydDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI+SW5zdGFsbGF0aW9uIGFuZCBVcGdyYWRlPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9pbnN0YWxsYXRpb24uaHRtbCI+SW5zdGFsbGF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9VcGdyYWRlLmh0bWwiPlVwZ3JhZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiPlR1dG9yaWFsczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQ29tbWFuZExpbmVBZG1pbi5odG1sIj5Db21tYW5kIExpbmUgQWRtaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0NvbW11bml0eSI+Q29tbXVuaXR5PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9nZXQtaW52b2x2ZWQuaHRtbCI+R2V0IEludm9sdmVkPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi90ZWFtLWxpc3QuaHRtbCI+Q29tbWl0dGVyczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbWFpbC1saXN0cy5odG1sIj5NYWlsaW5nIExpc3RzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iPldpa2k8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0RldmVsb3BtZW50Ij5EZXZlbG9wbWVudDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vc3ZuLmh0bWwiPlNvdXJjZSBDb2RlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyI+QnVncyAvIElzc3VlcyAoSklSQSk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2RlcGVuZGVuY2llcy5odG1sIj5EZXBlbmRlbmNpZXM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiPkJ1aWxkIEluc3RydWN0aW9uczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSlVuaXRUZXN0aW5nLmh0bWwiPkpVbml0IFRlc3Rpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01hbnVhbFRlc3RpbmcuaHRtbCI+TWFudWFsIFRlc3Rpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1JlbGVhc2VHdWlkZS5odG1sIj5SZWxlYXNlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9XZWJzaXRlR3VpZGUuaHRtbCI+V2Vic2l0ZSBHdWlkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjSW50ZWdyYXRpb24iPkludGVncmF0aW9uPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Tb2FwUmVzdEFQSS5odG1sIj5TT0FQL1JFU1QgQVBJPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZXN0QVBJU2FtcGxlLmh0bWwiPlJFU1QgQVBJIFNhbXBsZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTGRhcEFuZEFEUy5odG1sIj5MZGFwIGFuZCBBRFM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiPlZvSVAgYW5kIFNJUDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vRXJyb3JzVGFibGUuaHRtbCI+RXJyb3JzIHRhYmxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNQbHVnaW5zIj5QbHVnaW5zPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Nb29kbGVQbHVnaW4uaHRtbCI+TW9vZGxlIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU2FrYWlQbHVnaW4uaHRtbCI+U2FrYWkgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KaXJhUGx1Z2luLmh0bWwiPkppcmEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Kb29tbGFQbHVnaW4uaHRtbCI+Sm9vbWxhIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vRHJ1cGFsUGx1Z2luLmh0bWwiPkRydXBhbCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0JpdHJpeFBsdWdpbi5odG1sIj5CaXRyaXggUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiPkNvbmZsdWVuY2UgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TdWdhckNSTVBsdWdpbi5odG1sIj5TdWdhckNSTSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1JlZG1pbmVQbHVnaW4uaHRtbCI+UmVkbWluZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0NvbmZpZ3VyYXRpb24iPkNvbmZpZ3VyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkRCIFNhbXBsZSBDb25maWd1cmF0aW9uczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiPkFwYWNoZSBEZXJieTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSUJNREIyQ29uZmlnLmh0bWwiPklCTSBEQjI8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL09yYWNsZUNvbmZpZy5odG1sIj5PcmFjbGU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL015U1FMQ29uZmlnLmh0bWwiPk15U1FMPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIj5Qb3N0Z3JlczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TG9jYWxpemF0aW9uIGFuZCBsYW5ndWFnZXM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIj5JbnRlcm5hdGlvbmFsaXNhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTGFuZ3VhZ2VFZGl0b3IuaHRtbCI+TGFuZ3VhZ2VFZGl0b3I8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1RpbWVab25lSGFuZGxpbmcuaHRtbCI+VGltZVpvbmVIYW5kbGluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRWRpdFRlbXBsYXRlcy5odG1sIj5FZGl0VGVtcGxhdGVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5OQVQgUG9ydCBTZXR0aW5nczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1BvcnRTZXR0aW5ncy5odG1sIj5Qb3J0IHNldHRpbmdzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5QZXJmb3JtYW5jZTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiPkpWTSBwZXJmb3JtYW5jZSB0dW5pbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlVzZXIgSW50ZXJmYWNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIj5UaGVtZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0Rhc2hib2FyZC5odG1sIj5EYXNoYm9hcmQ8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiPldlYmNhbSByZXNvbHV0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiPlJvb20gbGF5b3V0IG9wdGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0hvdEtleXMuaHRtbCI+SG90IEtleXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkN1c3RvbWl6YXRpb248L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9XZWJhcHBOYW1lUGF0aC5odG1sIj5XZWJhcHAgbmFtZS9wYXRoPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9OYXZpZ2F0aW9uLmh0bWwiPk5hdmlnYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCI+Q2FsZW5kYXIgYW5kIHRpbWV6b25lPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiPkN1c3RvbSByb29tIHR5cGU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiPkN1c3RvbSBjdHlwdCBtZWNoYW5pc208L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiPkdlbmVyYWwgQ29uZmlndXJhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+U2VjdXJpdHk8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiPlJlc3RyaWN0ZWQgQWNjZXNzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9SVE1QU0FuZEhUVFBTLmh0bWwiPlJUTVBTIGFuZCBIVFRQUzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q29udmVydGVyczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCI+T3Blbk9mZmljZSBDb252ZXJ0ZXI8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCI+RkZNUEVHIFZlcnNpb24gU3dpdGNoPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5DbHVzdGVyaW5nPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2x1c3RlcmluZy5odG1sIj5DbHVzdGVyaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5NaXNjPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2V0VmVyc2lvbkluZm8uaHRtbCI+R2V0IHZlcnNpb24gaW5mbzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCisgICAgPC9kaXY+CisgICAgIAorICAgIDxici8+CisgICAgCisgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODAlIiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkID48IS0tIGJnY29sb3I9IiNFRUVFRUUiIC0tPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0idmVyZGFuYSxhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IlVzYWdlIj48c3Ryb25nPlVzYWdlPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5UbyBhdm9pZCBpbnRlbnNpdmUgdHJhZmZpYyB1dGlsaXphdGlvbiBhbmQgc2F2ZSB5b3VyIHRpbWUgeW91IGNhbg0KKwkJCQl1c2UgY29tbWFuZCBsaW5lIGFkbWluIHRvIGFjaGlldmUgZm9sbG93aW5nIHRhc2tzOjwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorCQkJCTxkaXYgY2xhc3M9InhtbGNvZGUiPg0KKyAtdiwtLXZlcmJvc2UgICAgICAgICAgICAgICAgICAgICAgICB2ZXJib3NlIGVycm9yIG1lc3NhZ2VzPGJyIC8+DQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08YnIgLz4NCisgLWgsLS1oZWxwICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnRzIHRoaXMgbWVzc2FnZTxiciAvPg0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPGJyIC8+DQorIC1iLC0tYmFja3VwICAgICAgICAgICAgICAgICAgICAgICAgIEJhY2t1cHMgT008YnIgLz4NCis8c3BhbiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDUwcHg7Ij4tZmlsZSAmbHQ7YXJnJmd0OyAgICAgICAgICAgICAgICAgICAgICAgKG9wdGlvbmFsKSBmaWxlIHVzZWQgZm9yIGJhY2t1cC9yZXN0b3JlL2luc3RhbGw8L3NwYW4+PGJyIC8+DQorPHNwYW4gc3R5bGU9Im1hcmdpbi1sZWZ0OiAxMDBweDsiPi0tZXhjbHVkZS1maWxlcyAgICAgICAgICAgICAgICAob3B0aW9uYWwpIHNob3VsZCBiYWNrdXAgZXhjbHVkZSBmaWxlcyBbZGVmYXVsdDogaW5jbHVkZV08L3NwYW4+PGJyIC8+DQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08YnIgLz4NCisgLXIsLS1yZXN0b3JlICAgICAgICAgICAgICAgICAgICAgICAgUmVzdG9yZXMgT008YnIgLz4NCis8c3BhbiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDUwcHg7Ij4tZmlsZSAmbHQ7YXJnJmd0OyAgICAgICAgICAgICAgICAgICAgICAgZmlsZSB1c2VkIGZvciBiYWNrdXAvcmVzdG9yZS9pbnN0YWxsPC9zcGFuPjxiciAvPg0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPGJyIC8+DQorIC1sLC0tbGFuZ3VhZ2VzICAgICAgICAgICAgICAgICAgICAgIFJlaW1wb3J0IEFsbCBsYW5ndWFnZSBmaWxlcyBpbnRvIERCPGJyIC8+DQorPHNwYW4gc3R5bGU9Im1hcmdpbi1sZWZ0OiA1MHB4OyI+LWxhbmcsLS1sYW5ndWFnZSAmbHQ7YXJnJmd0OyAgICAgICAgICAgIChvcHRpb25hbCkgU2luZ2xlIGxhbmd1YWdlIHRvIGJlIGltcG9ydGVkIChpZCBvciBuYW1lKTwvc3Bhbj48YnIgLz4NCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTxiciAvPg0KKyAtaSwtLWluc3RhbGwgICAgICAgICAgICAgICAgICAgICAgICBGaWxsIERCIHRhYmxlLCBhbmQgbWFrZSBPTSB1c2FibGU8YnIgLz4NCis8c3BhbiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDUwcHg7Ij4tdXNlciAmbHQ7YXJnJmd0OyAgICAgICAgICAgICAgICAgICAgICAgTG9naW4gbmFtZSBvZiB0aGUgZGVmYXVsdCB1c2VyLCBtaW5pbXVtIDQgY2hhcmFjdGVycyAobXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggJ2ZpbGUnKTwvc3Bhbj48YnIgLz4NCis8c3BhbiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDUwcHg7Ij4tZ3JvdXAgJmx0O2FyZyZndDsgICAgICAgICAgICAgICAgICAgICAgVGhlIG5hbWUgb2YgdGhlIGRlZmF1bHQgdXNlciBncm91cCAobXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggJ2ZpbGUnKTwvc3Bhbj48YnIgLz4NCis8c3BhbiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDUwcHg7Ij4tZW1haWwgJmx0O2FyZyZndDsgICAgICAgICAgICAgICAgICAgICAgRW1haWwgb2YgdGhlIGRlZmF1bHQgdXNlciAobXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggJ2ZpbGUnKTwvc3Bhbj48YnIgLz4NCis8c3BhbiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDUwcHg7Ij4tdHogJmx0O2FyZyZndDsgICAgICAgICAgICAgICAgICAgICAgICAgRGVmYXVsdCBzZXJ2ZXIgdGltZSB6b25lLCBhbmQgdGltZSB6b25lIGZvciB0aGUgc2VsZWN0ZWQgdXNlciAobXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggJ2ZpbGUnKSBmaWxlIHVzZWQgZm9yIGJhY2t1cC9yZXN0b3JlL2luc3RhbGw8L3NwYW4+PGJyIC8+DQorPHNwYW4gc3R5bGU9Im1hcmdpbi1sZWZ0OiAxMDBweDsiPi0tZW1haWwtYXV0aC1wYXNzICZsdDthcmcmZ3Q7ICAgICAgICAob3B0aW9uYWwpIEVtYWlsIGF1dGggcGFzc3dvcmQgKGFub255bW91cyBjb25uZWN0aW9uIHdpbGwgYmUgdXNlZCBpZiBub3Qgc2V0KTwvc3Bhbj48YnIgLz4NCis8c3BhbiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDEwMHB4OyI+LS1kYi1ob3N0ICZsdDthcmcmZ3Q7ICAgICAgICAgICAgICAgIChvcHRpb25hbCkgRE5TIG5hbWUgb3IgSVAgYWRkcmVzcyBvZiBkYXRhYmFzZTwvc3Bhbj48YnIgLz4NCis8c3BhbiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDEwMHB4OyI+LS1kcm9wICAgICAgICAgICAgICAgICAgICAgICAgIChvcHRpb25hbCkgRHJvcCBkYXRhYmFzZSBiZWZvcmUgaW5zdGFsbGF0aW9uPC9zcGFuPjxiciAvPg0KKzxzcGFuIHN0eWxlPSJtYXJnaW4tbGVmdDogMTAwcHg7Ij4tLWRiLXVzZXIgJmx0O2FyZyZndDsgICAgICAgICAgICAgICAgKG9wdGlvbmFsKSBVc2VyIHdpdGggd3JpdGUgYWNjZXNzIHRvIHRoZSBEQiBzcGVjaWZpZWQ8L3NwYW4+PGJyIC8+DQorPHNwYW4gc3R5bGU9Im1hcmdpbi1sZWZ0OiAxMDBweDsiPi0tc3lzdGVtLWVtYWlsLWFkZHJlc3MgJmx0O2FyZyZndDsgICAob3B0aW9uYWwpIFN5c3RlbSBlLW1haWwgYWRkcmVzcyBbZGVmYXVsdDogbm9yZXBseUBvcGVubWVldGluZ3MuYXBhY2hlLm9yZ108L3NwYW4+PGJyIC8+DQorPHNwYW4gc3R5bGU9Im1hcmdpbi1sZWZ0OiAxMDBweDsiPi0tcGFzc3dvcmQgJmx0O2FyZyZndDsgICAgICAgICAgICAgICAob3B0aW9uYWwpIFBhc3N3b3JkIG9mIHRoZSBkZWZhdWx0IHVzZXIsIG1pbmltdW0gNCBjaGFyYWN0ZXJzICh3aWxsIGJlIHByb21wdGVkIGlmIG5vdCBzZXQpPC9zcGFuPjxiciAvPg0KKzxzcGFuIHN0eWxlPSJtYXJnaW4tbGVmdDogMTAwcHg7Ij4tLWVtYWlsLXVzZS10bHMgICAgICAgICAgICAgICAgKG9wdGlvbmFsKSBJcyBzZWN1cmUgZS1tYWlsIGNvbm5lY3Rpb24gW2RlZmF1bHQ6IG5vXTwvc3Bhbj48YnIgLz4NCis8c3BhbiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDEwMHB4OyI+LS1lbWFpbC1hdXRoLXVzZXIgJmx0O2FyZyZndDsgICAgICAgIChvcHRpb25hbCkgRW1haWwgYXV0aCB1c2VybmFtZSAoYW5vbnltb3VzIGNvbm5lY3Rpb24gd2lsbCBiZSB1c2VkIGlmIG5vdCBzZXQpPC9zcGFuPjxiciAvPg0KKzxzcGFuIHN0eWxlPSJtYXJnaW4tbGVmdDogMTAwcHg7Ij4tLWRiLXBvcnQgJmx0O2FyZyZndDsgICAgICAgICAgICAgICAgKG9wdGlvbmFsKSBEYXRhYmFzZSBwb3J0PC9zcGFuPjxiciAvPg0KKzxzcGFuIHN0eWxlPSJtYXJnaW4tbGVmdDogMTAwcHg7Ij4tLXNtdHAtcG9ydCAmbHQ7YXJnJmd0OyAgICAgICAgICAgICAgKG9wdGlvbmFsKSBTTVRQIHNlcnZlciBmb3Igb3V0Z29pbmcgZS1tYWlscyBbZGVmYXVsdDogMjVdPC9zcGFuPjxiciAvPg0KKzxzcGFuIHN0eWxlPSJtYXJnaW4tbGVmdDogMTAwcHg7Ij4tLWRiLW5hbWUgJmx0O2FyZyZndDsgICAgICAgICAgICAgICAgKG9wdGlvbmFsKSBUaGUgbmFtZSBvZiBPcGVubWVldGluZ3MgZGF0YWJhc2U8L3NwYW4+PGJyIC8+DQorPHNwYW4gc3R5bGU9Im1hcmdpbi1sZWZ0OiAxMDBweDsiPi0tZGlzYWJsZS1mcm9udGVuZC1yZWdpc3RlciAgICAob3B0aW9uYWwpIERvIG5vdCBhbGxvdyBmcm9udCBlbmQgcmVnaXN0ZXIgW2FsbG93ZWQgYnkgZGVmYXVsdF08L3NwYW4+PGJyIC8+DQorPHNwYW4gc3R5bGU9Im1hcmdpbi1sZWZ0OiAxMDBweDsiPi0tZGItdHlwZSAmbHQ7YXJnJmd0OyAgICAgICAgICAgICAgICAob3B0aW9uYWwpIFRoZSB0eXBlIG9mIHRoZSBEQiB0byBiZSB1c2VkPC9zcGFuPjxiciAvPg0KKzxzcGFuIHN0eWxlPSJtYXJnaW4tbGVmdDogMTAwcHg7Ij4tLXNraXAtZGVmYXVsdC1yb29tcyAgICAgICAgICAgKG9wdGlvbmFsKSBEbyBub3QgY3JlYXRlIGRlZmF1bHQgcm9vbXMgW2NyZWF0ZWQgYnkgZGVmYXVsdF08L3NwYW4+PGJyIC8+DQorPHNwYW4gc3R5bGU9Im1hcmdpbi1sZWZ0OiAxMDBweDsiPi0tZm9yY2UgICAgICAgICAgICAgICAgICAgICAgICAob3B0aW9uYWwpIEluc3RhbGwgd2l0aG91dCBjaGVja2luZyB0aGUgZXhpc3RlbmNlIG9mIG9sZCBkYXRhIGluIHRoZSBkYXRhYmFzZS48L3NwYW4+PGJyIC8+DQorPHNwYW4gc3R5bGU9Im1hcmdpbi1sZWZ0OiAxMDBweDsiPi0tc210cC1zZXJ2ZXIgJmx0O2FyZyZndDsgICAgICAgICAgICAob3B0aW9uYWwpIFNNVFAgc2VydmVyIGZvciBvdXRnb2luZyBlLW1haWxzIFtkZWZhdWx0OiBsb2NhbGhvc3RdPC9zcGFuPjxiciAvPg0KKzxzcGFuIHN0eWxlPSJtYXJnaW4tbGVmdDogMTAwcHg7Ij4tLWRiLXBhc3MgJmx0O2FyZyZndDsgICAgICAgICAgICAgICAgKG9wdGlvbmFsKSBQYXNzd29yZCBvZiB0aGUgdXNlciB3aXRoIHdyaXRlIGFjY2VzcyB0byB0aGUgREIgc3BlY2lmaWVkPC9zcGFuPjxiciAvPg0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPGJyIC8+DQorIC1mLC0tZmlsZXMgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGUgb3BlcmF0aW9ucyAtIHN0YXRpY3RpY3MvY2xlYW51cDxiciAvPg0KKzxzcGFuIHN0eWxlPSJtYXJnaW4tbGVmdDogMTAwcHg7Ij4tLWNsZWFudXAgICAgICAgICAgICAgICAgICAgICAgKG9wdGlvbmFsKSBTaG91bGQgaW50ZXJtZWRpYXRlIGZpbGVzIGJlIGNsZWFuIHVwPC9zcGFuPjxiciAvPg0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPGJyIC8+DQorCQkJCTwvZGl2Pg0KKwkJCTwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8IS0tIEZPT1RFUiAtLT4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGFsaWduPSJjZW50ZXIiPjxmb250IGNvbG9yPSIjMTIzNDY1IiBzaXplPSItMSI+PGVtPgorICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgJiMxNjk7IDIwMDMtMjAxMywgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisgICAgICAgICAgICAgICAgICAgIDwvZW0+PC9mb250PjwvZGl2PgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2JvZHk+CisgICAgPC9odG1sPgorPCEtLSBlbmQgdGhlIHByb2Nlc3NpbmcgLS0+CisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKZGlmZiAtLWdpdCBhL2RvY3MvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwgYi9kb2NzL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4MTlmM2YKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sCkBAIC0wLDAgKzEsODI2IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KKworPCEtLQorQ29weXJpZ2h0IDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KK0xpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKK2h0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCitVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCitkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCitTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCitsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorCisKKzwhLS0gQ29udGVudCBTdHlsZXNoZWV0IGZvciBTaXRlIC0tPgorCisgICAgICAgIAorPCEtLSBzdGFydCB0aGUgcHJvY2Vzc2luZyAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPCEtLSBHRU5FUkFURUQgRklMRSwgRE8gTk9UIEVESVQsIEVESVQgVEhFIFhNTCBGSUxFIElOIHhkb2NzIElOU1RFQUQhIC0tPgorICAgIDwhLS0gTWFpbiBQYWdlIFNlY3Rpb24gLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDxodG1sPgorICAgICAgICA8aGVhZD4KKyAgICAgICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ii8+CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9IgorICAgICAgICAgICAgT3Blbk1lZXRpbmdzIFRlYW0KKyAgICAgICAgIj4KKyAgICAgICAgICAgIDxtZXRhIG5hbWU9ImVtYWlsIiBjb250ZW50PSJzZWJhd2FnbmVyQGFwYWNoZS5vcmciPgorICAgICAgICAgICAgCisgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIDx0aXRsZT5BcGFjaGUgT3Blbk1lZXRpbmdzIC0gTGF5b3V0IG9wdGlvbnMgZm9yIGEgY29uZmVyZW5jZSByb29tIGluIE9wZW5NZWV0aW5nczwvdGl0bGU+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3Mvb3Blbm1lZXRpbmdzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvanF1ZXJ5LXVpLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29pbi1zbGlkZXItc3R5bGVzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29sb3Jib3guY3NzIiAvPgorICAgICAgICAgICAgCisJCQk8IS0tIEFkZCBqUXVlcnkgbGlicmFyeSAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS0xLjcuMS5taW4uanMiPjwvc2NyaXB0PgorCQkKKwkJCTwhLS0gQWRkIGNvaW5zbGlkZXIgcGx1Z2lucyAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2NvaW4tc2xpZGVyLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTwhLS0gQWRkIGNvbG9yYm94IHBsdWdpbiAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS5jb2xvcmJveC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5jb3JlLmpzIj48L3NjcmlwdD4KKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkud2lkZ2V0LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmFjY29yZGlvbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQ+CisJCQkkKGZ1bmN0aW9uKCkgeworCQkJCSQoICIjYWNjb3JkaW9uIiApLmFjY29yZGlvbih7CisJCQkJCWF1dG9IZWlnaHQ6IGZhbHNlLAorCQkJCQluYXZpZ2F0aW9uOiB0cnVlLAorCQkJCQluYXZpZ2F0aW9uRmlsdGVyOiBmdW5jdGlvbiAoKSB7CisJCQkJCQl2YXIgc2lkZWJhckhyZWZBcnJheSA9IHRoaXMuaHJlZi5zcGxpdCgiLyIpOworICAgIAkJCQkJdmFyIHNpZGVCYXJMYXN0U3RyaW5nID0gc2lkZWJhckhyZWZBcnJheVtzaWRlYmFySHJlZkFycmF5Lmxlbmd0aCAtIDFdLnRvTG93ZXJDYXNlKCk7CisJCQkJCQkKKwkJCQkJCWlmIChzaWRlQmFyTGFzdFN0cmluZy5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJCQl9CisJCQkJCQkKKwkJCQkJCQkJCQkJCS8qIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgKi8KKwkJCQkJCXZhciBjdXJyZW50U2VjdGlvbiA9ICIiOworCQkJCQkJCisJCQkJCQl2YXIgY3VycmVudExvY2F0aW9uID0gIiI7CisJCQkJCQl2YXIgY3VycmVudExpbmsgPSAiIjsKKwkJCQkJCWlmIChmYWxzZSkgeworCQkJCQkJCisJCQkJCQl9CisgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luZGV4Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luZGV4Lmh0bWwiLnN1YnN0cigxLCAiL2luZGV4Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbGljZW5zZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9saWNlbnNlLmh0bWwiLnN1YnN0cigxLCAiL2xpY2Vuc2UuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIuc3Vic3RyKDEsICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2Rvd25sb2Fkcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kb3dubG9hZHMuaHRtbCIuc3Vic3RyKDEsICIvZG93bmxvYWRzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5zdWJzdHIoMSwgIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5zdGFsbGF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luc3RhbGxhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9pbnN0YWxsYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9VcGdyYWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1VwZ3JhZGUuaHRtbCIuc3Vic3RyKDEsICIvVXBncmFkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLnN1YnN0cigxLCAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29tbWFuZExpbmVBZG1pbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLnN1YnN0cigxLCAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZ2V0LWludm9sdmVkLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZ2V0LWludm9sdmVkLmh0bWwiLnN1YnN0cigxLCAiL2dldC1pbnZvbHZlZC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RlYW0tbGlzdC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3RlYW0tbGlzdC5odG1sIi5zdWJzdHIoMSwgIi90ZWFtLWxpc3QuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9tYWlsLWxpc3RzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbWFpbC1saXN0cy5odG1sIi5zdWJzdHIoMSwgIi9tYWlsLWxpc3RzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5zdWJzdHIoMSwgImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9zdm4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3N2bi5odG1sIi5zdWJzdHIoMSwgIi9zdm4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLnN1YnN0cigxLCAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kZXBlbmRlbmNpZXMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2RlcGVuZGVuY2llcy5odG1sIi5zdWJzdHIoMSwgIi9kZXBlbmRlbmNpZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVW5pdFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pVbml0VGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9KVW5pdFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NYW51YWxUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9NYW51YWxUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL01hbnVhbFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWxlYXNlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlbGVhc2VHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9SZWxlYXNlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJzaXRlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1dlYnNpdGVHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9XZWJzaXRlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU29hcFJlc3RBUEkuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1NvYXBSZXN0QVBJLmh0bWwiLnN1YnN0cigxLCAiL1NvYXBSZXN0QVBJLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdEFQSVNhbXBsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVzdEFQSVNhbXBsZS5odG1sIi5zdWJzdHIoMSwgIi9SZXN0QVBJU2FtcGxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGRhcEFuZEFEUy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTGRhcEFuZEFEUy5odG1sIi5zdWJzdHIoMSwgIi9MZGFwQW5kQURTLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRXJyb3JzVGFibGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0Vycm9yc1RhYmxlLmh0bWwiLnN1YnN0cigxLCAiL0Vycm9yc1RhYmxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01vb2RsZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Nb29kbGVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvTW9vZGxlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU2FrYWlQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU2FrYWlQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU2FrYWlQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KaXJhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0ppcmFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSmlyYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pvb21sYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Kb29tbGFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSm9vbWxhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRHJ1cGFsUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0RydXBhbFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9EcnVwYWxQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CaXRyaXhQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQml0cml4UGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0JpdHJpeFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU3VnYXJDUk1QbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWRtaW5lUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlZG1pbmVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvUmVkbWluZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0lCTURCMkNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0lCTURCMkNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9JQk1EQjJDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09yYWNsZUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09yYWNsZUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9PcmFjbGVDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL015U1FMQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTXlTUUxDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvTXlTUUxDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Bvc3RncmVzQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9zdGdyZXNDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvUG9zdGdyZXNDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9MYW5ndWFnZUVkaXRvci5odG1sIi5zdWJzdHIoMSwgIi9MYW5ndWFnZUVkaXRvci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVGltZVpvbmVIYW5kbGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIuc3Vic3RyKDEsICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRWRpdFRlbXBsYXRlcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIuc3Vic3RyKDEsICIvRWRpdFRlbXBsYXRlcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3J0U2V0dGluZ3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3J0U2V0dGluZ3MuaHRtbCIuc3Vic3RyKDEsICIvUG9ydFNldHRpbmdzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIuc3Vic3RyKDEsICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIuc3Vic3RyKDEsICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRGFzaGJvYXJkLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRGFzaGJvYXJkLmh0bWwiLnN1YnN0cigxLCAiL0Rhc2hib2FyZC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSG90S2V5cy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0hvdEtleXMuaHRtbCIuc3Vic3RyKDEsICIvSG90S2V5cy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJhcHBOYW1lUGF0aC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLnN1YnN0cigxLCAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9OYXZpZ2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTmF2aWdhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9OYXZpZ2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5zdWJzdHIoMSwgIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JUTVBTQW5kSFRUUFMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SVE1QU0FuZEhUVFBTLmh0bWwiLnN1YnN0cigxLCAiL1JUTVBTQW5kSFRUUFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIuc3Vic3RyKDEsICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIuc3Vic3RyKDEsICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DbHVzdGVyaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2x1c3RlcmluZy5odG1sIi5zdWJzdHIoMSwgIi9DbHVzdGVyaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dldFZlcnNpb25JbmZvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2V0VmVyc2lvbkluZm8uaHRtbCIuc3Vic3RyKDEsICIvR2V0VmVyc2lvbkluZm8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJICAgIAkJCQkJCisgICAgCQkJCQljdXJyZW50TGluayA9IGN1cnJlbnRMaW5rLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQljdXJyZW50TG9jYXRpb24gPSBjdXJyZW50TG9jYXRpb24udG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCQorCQkJCQkJcmV0dXJuIHNpZGVCYXJMYXN0U3RyaW5nID09IGN1cnJlbnRMaW5rKyIjIitjdXJyZW50TG9jYXRpb247CisJCQkJCX0KKwkJCQl9KTsKKwkJCX0pOworCQkJPC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwkJCQkkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsKKwkJCQkJJCgnLmZhbmN5Ym94LWJ1dHRvbnMnKS5jb2xvcmJveCh7cmVsOidmYW5jeWJveC1idXR0b25zJyx3aWR0aDoiNzUlIiwgaGVpZ2h0OiI3NSUifSk7CisJCQkJCSQoJyNhY2NvcmRpb24gYScpLmVhY2goZnVuY3Rpb24oKSB7CisJCQkJICAgICAgdmFyIGEgPSAkKHRoaXMpOworCQkJCSAgICAgIHZhciBocmVmID0gYS5hdHRyKCJocmVmIik7CisJCQkJICAgICAgaWYgKGhyZWYuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJICAgICAgCSAgdmFyIGNvbXBhcmVJdCA9IGhyZWYuc3Vic3RyKDIsIGhyZWYubGVuZ3RoKTsKKwkJCQkJICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZihjb21wYXJlSXQpIT0gLTEpIHsKKwkJCQkJICAgICAgIGEuYWRkQ2xhc3MoJ2FjdGl2ZScpOworCQkJCQkgICAgICB9CisJCQkJICAgICAgfQorCQkJCSAgICB9KTsKKwkJCQkJJCgnI2NvaW4tc2xpZGVyJykuY29pbnNsaWRlcih7IHdpZHRoOiA2NDAsaGVpZ2h0OiA0MDAsIGRlbGF5OiA0MDAwICB9KTsJCQkJCQorCQkJCX0pOworCQkJPC9zY3JpcHQ+CQorCQkJCQkJCisJCQk8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorCQkJCS5mYW5jeWJveC1jdXN0b20gLmZhbmN5Ym94LW91dGVyIHsKKwkJCQkJYm94LXNoYWRvdzogMCAwIDUwcHggIzIyMjsKKwkJCQl9CisJCQk8L3N0eWxlPgorICAgICAgICA8L2hlYWQ+CisKKyAgICAgICAgPGJvZHkgYmdjb2xvcj0iI2ZmZmZmZiIgdGV4dD0iIzAwMDAwMCIgbGluaz0iIzEyMzQ2NSIgdmxpbms9IiMxMjM0NjUiIGFsaW5rPSIjMDAwMDAwIj4gIAorICAgICAgICAJPGRpdiBjbGFzcz0ibWFpbmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAJPGRpdiBjbGFzcz0ic3VwZXJib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCI+CisgICAgICAgICAgICAgICAgPCEtLSBUT1AgSU1BR0UgLS0+CisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPgorPGEgaHJlZj0iaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnLyI+PGltZyBzcmM9Ii4vaW1hZ2VzL2xvZ28tMi5qcGciIGFsdD0iQXBhY2hlIE9wZW5NZWV0aW5ncyIgYm9yZGVyPSIwIi8+PC9hPgorPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiID4KKwk8YSBocmVmPSJkZW1vLmh0bWwiPkRlbW88L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iZG93bmxvYWRzLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+RG93bmxvYWQ8L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaW5zdGFsbGF0aW9uLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+SW5zdGFsbGF0aW9uPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTIiB0YXJnZXQ9Il9CTEFOSyI+V2lraTwvYT4KKwk8c3Bhbj4mbmJzcDs8L3NwYW4+Cis8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSI0Ij4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPCEtLSBMRUZUIFNJREUgTkFWSUdBVElPTiAtLT4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIiBub3dyYXA9Im5vd3JhcCI+CisKKyAgICAgICAgICAgICAgICAgICAgPCEtLSBzcGVjaWFsIEFDb24gTG9nbyAtIGxlYXZlIGhlcmUgZm9yIG5leHQgdGltZQorICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vYXBhY2hlY29uLmNvbS8yMDA1L1VTLyI+CisgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2FwYWNoZS5vcmcvaW1hZ2VzL2FjMjAwNXVzX2JsdWVfMTI1eDEyNS5qcGciIGhlaWdodD0iMTI1IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTI1IiBib3JkZXI9IjAiIGFsdD0iQXBhY2hlQ29uIFVTIDIwMDUiIC8+CisgICAgICAgICAgICAgICAgICAgIDwvYT4gIC0tPgorCisgICAgICAgICAgICAgICAgICAgPCEtLSByZWd1bGFyIG1lbnUgLS0+CisKKyAgICAgICAgICAgICAgICAgICAgCisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGRpdiBpZD0iYWNjb3JkaW9uIiBzdHlsZT0id2lkdGg6IDEwMCUiPgorICAgIAorICAgICAgICAgICAgCTxoMz48YSBocmVmPSIjR2VuZXJhbCI+R2VuZXJhbDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5kZXguaHRtbCI+SG9tZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbGljZW5zZS5odG1sIj5MaWNlbnNlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyI+QVNGPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kb3dubG9hZHMuaHRtbCI+RG93bmxvYWRzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCI+Q29tbWVyY2lhbCBTdXBwb3J0PC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnN0YWxsYXRpb25hbmRVcGdyYWRlIj5JbnN0YWxsYXRpb24gYW5kIFVwZ3JhZGU8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luc3RhbGxhdGlvbi5odG1sIj5JbnN0YWxsYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1VwZ3JhZGUuaHRtbCI+VXBncmFkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii5odHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyI+VHV0b3JpYWxzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db21tYW5kTGluZUFkbWluLmh0bWwiPkNvbW1hbmQgTGluZSBBZG1pbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29tbXVuaXR5Ij5Db21tdW5pdHk8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2dldC1pbnZvbHZlZC5odG1sIj5HZXQgSW52b2x2ZWQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3RlYW0tbGlzdC5odG1sIj5Db21taXR0ZXJzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9tYWlsLWxpc3RzLmh0bWwiPk1haWxpbmcgTGlzdHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyI+V2lraTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjRGV2ZWxvcG1lbnQiPkRldmVsb3BtZW50PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9zdm4uaHRtbCI+U291cmNlIENvZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIj5CdWdzIC8gSXNzdWVzIChKSVJBKTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZGVwZW5kZW5jaWVzLmh0bWwiPkRlcGVuZGVuY2llczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCI+QnVpbGQgSW5zdHJ1Y3Rpb25zPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KVW5pdFRlc3RpbmcuaHRtbCI+SlVuaXQgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTWFudWFsVGVzdGluZy5odG1sIj5NYW51YWwgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVsZWFzZUd1aWRlLmh0bWwiPlJlbGVhc2UgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1dlYnNpdGVHdWlkZS5odG1sIj5XZWJzaXRlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnRlZ3JhdGlvbiI+SW50ZWdyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1NvYXBSZXN0QVBJLmh0bWwiPlNPQVAvUkVTVCBBUEk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Jlc3RBUElTYW1wbGUuaHRtbCI+UkVTVCBBUEkgU2FtcGxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9MZGFwQW5kQURTLmh0bWwiPkxkYXAgYW5kIEFEUzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCI+Vm9JUCBhbmQgU0lQPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9FcnJvcnNUYWJsZS5odG1sIj5FcnJvcnMgdGFibGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI1BsdWdpbnMiPlBsdWdpbnM8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01vb2RsZVBsdWdpbi5odG1sIj5Nb29kbGUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TYWthaVBsdWdpbi5odG1sIj5TYWthaSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0ppcmFQbHVnaW4uaHRtbCI+SmlyYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pvb21sYVBsdWdpbi5odG1sIj5Kb29tbGEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9EcnVwYWxQbHVnaW4uaHRtbCI+RHJ1cGFsIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQml0cml4UGx1Z2luLmh0bWwiPkJpdHJpeCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCI+Q29uZmx1ZW5jZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiPlN1Z2FyQ1JNIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVkbWluZVBsdWdpbi5odG1sIj5SZWRtaW5lIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29uZmlndXJhdGlvbiI+Q29uZmlndXJhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+REIgU2FtcGxlIENvbmZpZ3VyYXRpb25zPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQXBhY2hlRGVyYnlDb25maWcuaHRtbCI+QXBhY2hlIERlcmJ5PC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JQk1EQjJDb25maWcuaHRtbCI+SUJNIERCMjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3JhY2xlQ29uZmlnLmh0bWwiPk9yYWNsZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTXlTUUxDb25maWcuaHRtbCI+TXlTUUw8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Bvc3RncmVzQ29uZmlnLmh0bWwiPlBvc3RncmVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Mb2NhbGl6YXRpb24gYW5kIGxhbmd1YWdlczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiPkludGVybmF0aW9uYWxpc2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9MYW5ndWFnZUVkaXRvci5odG1sIj5MYW5ndWFnZUVkaXRvcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vVGltZVpvbmVIYW5kbGluZy5odG1sIj5UaW1lWm9uZUhhbmRsaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9FZGl0VGVtcGxhdGVzLmh0bWwiPkVkaXRUZW1wbGF0ZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk5BVCBQb3J0IFNldHRpbmdzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9ydFNldHRpbmdzLmh0bWwiPlBvcnQgc2V0dGluZ3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlBlcmZvcm1hbmNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCI+SlZNIHBlcmZvcm1hbmNlIHR1bmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+VXNlciBJbnRlcmZhY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiPlRoZW1lczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRGFzaGJvYXJkLmh0bWwiPkRhc2hib2FyZDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCI+V2ViY2FtIHJlc29sdXRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCI+Um9vbSBsYXlvdXQgb3B0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSG90S2V5cy5odG1sIj5Ib3QgS2V5czwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q3VzdG9taXphdGlvbjwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmFwcE5hbWVQYXRoLmh0bWwiPldlYmFwcCBuYW1lL3BhdGg8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL05hdmlnYXRpb24uaHRtbCI+TmF2aWdhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIj5DYWxlbmRhciBhbmQgdGltZXpvbmU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCI+Q3VzdG9tIHJvb20gdHlwZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCI+Q3VzdG9tIGN0eXB0IG1lY2hhbmlzbTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCI+R2VuZXJhbCBDb25maWd1cmF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5TZWN1cml0eTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCI+UmVzdHJpY3RlZCBBY2Nlc3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1JUTVBTQW5kSFRUUFMuaHRtbCI+UlRNUFMgYW5kIEhUVFBTPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Db252ZXJ0ZXJzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIj5PcGVuT2ZmaWNlIENvbnZlcnRlcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIj5GRk1QRUcgVmVyc2lvbiBTd2l0Y2g8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNsdXN0ZXJpbmc8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DbHVzdGVyaW5nLmh0bWwiPkNsdXN0ZXJpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk1pc2M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZXRWZXJzaW9uSW5mby5odG1sIj5HZXQgdmVyc2lvbiBpbmZvPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAKKyAgICA8L2Rpdj4KKyAgICAgCisgICAgPGJyLz4KKyAgICAKKyAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iTGF5b3V0IG9wdGlvbnMgZm9yIGNvbmZlcmVuY2Ugcm9vbXMiPjxzdHJvbmc+TGF5b3V0IG9wdGlvbnMgZm9yIGNvbmZlcmVuY2Ugcm9vbXM8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPkVhY2ggcm9vbSBoYXMgYSBudW1iZXIgb2YgYXR0cmlidXRlcyB0byBnZW5lcmF0ZSBkaWZmZXJlbnQgbGF5b3V0cy4NCisgICAgICAgICAgICBZb3UgY2FuIGNoYW5nZSB0aG9zZSB2YWx1ZXMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIHJvb20gaW4gQWRtaW5pc3RyYXRpb24gJmd0OyBSb29tcw0KKyAgICAgICAgICAgIDwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIC8+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGggYmdjb2xvcj0iIzAzOWFjYyIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICBrZXkgCisgICAgPC90aD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGJnY29sb3I9IiMwMzlhY2MiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgZGVmYXVsdCAKKyAgICA8L3RoPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggYmdjb2xvcj0iIzAzOWFjYyIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICBtZWFuaW5nIAorICAgIDwvdGg+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBiZ2NvbG9yPSIjMDM5YWNjIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgIGF2YWlsYWJlIHNpbmNlIE9wZW5NZWV0aW5ncyB2ZXJzaW9uIAorICAgIDwvdGg+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICBoaWRlVG9wQmFyIAorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgIGZhbHNlIAorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgIEhpZGUgdGhlIHRvcCBiYXIgd2l0aCB0aGUgbWVudXMgYW5kIGV4aXQgYnV0dG9uIAorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgIDIueCAKKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgaGlkZUNoYXQgCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgZmFsc2UgCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgSGlkZSB0aGUgY2hhdCB0YWIgYW5kIHVzZSBzcGFjZSBmb3Igd2hpdGVib2FyZCAKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICAyLnggCisgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgIGhpZGVBY3Rpdml0aWVzQW5kQWN0aW9ucyAKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICBmYWxzZSAKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICBIaWRlIHRoZSBhY3Rpdml0aWVzIHdpbmRvdyB3aXRoIHRoZSBub3RvZmljYXRpb25zIGFiZXIgdXNlciBhY3Rpdml0aWVzCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgMi54IAorICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICBoaWRlRmlsZXNFeHBsb3JlciAKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICBmYWxzZSAKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICBIaWRlIHRoZSBmaWxlIGV4cGxvcmVyCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgMi54IAorICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICBoaWRlQWN0aW9uc01lbnUgCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgZmFsc2UgCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgSGlkZSB0aGUgbWVudSB3aXRoIHRoZSBhY3Rpb25zCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgMi54IAorICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICBoaWRlU2NyZWVuU2hhcmluZyAKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICBmYWxzZSAKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICBIaWRlIHRoZSBidXR0b24gdG8gc3RhcnQgc2NyZWVuc2hhcmluZy9yZWNvcmRpbmcKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICAyLnggCisgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgIGhpZGVXaGl0ZWJvYXJkIAorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgIGZhbHNlIAorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgIEhpZGUgdGhlIHdoaXRlYm9hcmQsIGlmIHRoaXMgb3B0aW9uIGlzIHRydWUsIHRoZSB2aWRlb3Mgd2lsbCBiZSBpbiB0aGUgYXJlYSBvZiB0aGUgd2hpdGVib2FyZAorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgIDIueCAKKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgc2hvd01pY3JvcGhvbmVTdGF0dXMgCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgZmFsc2UgCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgU2hvdyB0aGUgY3VycmVudCBzdGF0dXMgb2YgdGhlIG1pY3JvcGhvbmUgKG9mZi9vbikgb24gdGhlIGJvdHRvbSBvZiBlYWNoIHZpZGVvIHZpZXcKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICAyLnggCisgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8IS0tIEZPT1RFUiAtLT4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGFsaWduPSJjZW50ZXIiPjxmb250IGNvbG9yPSIjMTIzNDY1IiBzaXplPSItMSI+PGVtPgorICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgJiMxNjk7IDIwMDMtMjAxMywgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisgICAgICAgICAgICAgICAgICAgIDwvZW0+PC9mb250PjwvZGl2PgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2JvZHk+CisgICAgPC9odG1sPgorPCEtLSBlbmQgdGhlIHByb2Nlc3NpbmcgLS0+CisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKZGlmZiAtLWdpdCBhL2RvY3MvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIGIvZG9jcy9Db25mbHVlbmNlUGx1Z2luLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWFlNmFhOQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvQ29uZmx1ZW5jZVBsdWdpbi5odG1sCkBAIC0wLDAgKzEsNzQyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KKworPCEtLQorQ29weXJpZ2h0IDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KK0xpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKK2h0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCitVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCitkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCitTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCitsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorCisKKzwhLS0gQ29udGVudCBTdHlsZXNoZWV0IGZvciBTaXRlIC0tPgorCisgICAgICAgIAorPCEtLSBzdGFydCB0aGUgcHJvY2Vzc2luZyAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPCEtLSBHRU5FUkFURUQgRklMRSwgRE8gTk9UIEVESVQsIEVESVQgVEhFIFhNTCBGSUxFIElOIHhkb2NzIElOU1RFQUQhIC0tPgorICAgIDwhLS0gTWFpbiBQYWdlIFNlY3Rpb24gLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDxodG1sPgorICAgICAgICA8aGVhZD4KKyAgICAgICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ii8+CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9IgorCQkJT3Blbk1lZXRpbmdzIFRlYW0KKwkJIj4KKyAgICAgICAgICAgIDxtZXRhIG5hbWU9ImVtYWlsIiBjb250ZW50PSJldWdlbi5zY2h3ZXJ0QGdtYWlsLmNvbSI+CisgICAgICAgICAgICAKKyAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgPHRpdGxlPkFwYWNoZSBPcGVuTWVldGluZ3MgLSBDb25mbHVlbmNlIFBsdWdpbjwvdGl0bGU+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3Mvb3Blbm1lZXRpbmdzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvanF1ZXJ5LXVpLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29pbi1zbGlkZXItc3R5bGVzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29sb3Jib3guY3NzIiAvPgorICAgICAgICAgICAgCisJCQk8IS0tIEFkZCBqUXVlcnkgbGlicmFyeSAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS0xLjcuMS5taW4uanMiPjwvc2NyaXB0PgorCQkKKwkJCTwhLS0gQWRkIGNvaW5zbGlkZXIgcGx1Z2lucyAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2NvaW4tc2xpZGVyLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTwhLS0gQWRkIGNvbG9yYm94IHBsdWdpbiAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS5jb2xvcmJveC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5jb3JlLmpzIj48L3NjcmlwdD4KKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkud2lkZ2V0LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmFjY29yZGlvbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQ+CisJCQkkKGZ1bmN0aW9uKCkgeworCQkJCSQoICIjYWNjb3JkaW9uIiApLmFjY29yZGlvbih7CisJCQkJCWF1dG9IZWlnaHQ6IGZhbHNlLAorCQkJCQluYXZpZ2F0aW9uOiB0cnVlLAorCQkJCQluYXZpZ2F0aW9uRmlsdGVyOiBmdW5jdGlvbiAoKSB7CisJCQkJCQl2YXIgc2lkZWJhckhyZWZBcnJheSA9IHRoaXMuaHJlZi5zcGxpdCgiLyIpOworICAgIAkJCQkJdmFyIHNpZGVCYXJMYXN0U3RyaW5nID0gc2lkZWJhckhyZWZBcnJheVtzaWRlYmFySHJlZkFycmF5Lmxlbmd0aCAtIDFdLnRvTG93ZXJDYXNlKCk7CisJCQkJCQkKKwkJCQkJCWlmIChzaWRlQmFyTGFzdFN0cmluZy5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJCQl9CisJCQkJCQkKKwkJCQkJCQkJCQkJCS8qIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgKi8KKwkJCQkJCXZhciBjdXJyZW50U2VjdGlvbiA9ICIiOworCQkJCQkJCisJCQkJCQl2YXIgY3VycmVudExvY2F0aW9uID0gIiI7CisJCQkJCQl2YXIgY3VycmVudExpbmsgPSAiIjsKKwkJCQkJCWlmIChmYWxzZSkgeworCQkJCQkJCisJCQkJCQl9CisgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luZGV4Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luZGV4Lmh0bWwiLnN1YnN0cigxLCAiL2luZGV4Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbGljZW5zZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9saWNlbnNlLmh0bWwiLnN1YnN0cigxLCAiL2xpY2Vuc2UuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIuc3Vic3RyKDEsICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2Rvd25sb2Fkcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kb3dubG9hZHMuaHRtbCIuc3Vic3RyKDEsICIvZG93bmxvYWRzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5zdWJzdHIoMSwgIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5zdGFsbGF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luc3RhbGxhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9pbnN0YWxsYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9VcGdyYWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1VwZ3JhZGUuaHRtbCIuc3Vic3RyKDEsICIvVXBncmFkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLnN1YnN0cigxLCAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29tbWFuZExpbmVBZG1pbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLnN1YnN0cigxLCAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZ2V0LWludm9sdmVkLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZ2V0LWludm9sdmVkLmh0bWwiLnN1YnN0cigxLCAiL2dldC1pbnZvbHZlZC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RlYW0tbGlzdC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3RlYW0tbGlzdC5odG1sIi5zdWJzdHIoMSwgIi90ZWFtLWxpc3QuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9tYWlsLWxpc3RzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbWFpbC1saXN0cy5odG1sIi5zdWJzdHIoMSwgIi9tYWlsLWxpc3RzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5zdWJzdHIoMSwgImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9zdm4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3N2bi5odG1sIi5zdWJzdHIoMSwgIi9zdm4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLnN1YnN0cigxLCAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kZXBlbmRlbmNpZXMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2RlcGVuZGVuY2llcy5odG1sIi5zdWJzdHIoMSwgIi9kZXBlbmRlbmNpZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVW5pdFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pVbml0VGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9KVW5pdFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NYW51YWxUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9NYW51YWxUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL01hbnVhbFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWxlYXNlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlbGVhc2VHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9SZWxlYXNlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJzaXRlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1dlYnNpdGVHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9XZWJzaXRlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU29hcFJlc3RBUEkuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1NvYXBSZXN0QVBJLmh0bWwiLnN1YnN0cigxLCAiL1NvYXBSZXN0QVBJLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdEFQSVNhbXBsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVzdEFQSVNhbXBsZS5odG1sIi5zdWJzdHIoMSwgIi9SZXN0QVBJU2FtcGxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGRhcEFuZEFEUy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTGRhcEFuZEFEUy5odG1sIi5zdWJzdHIoMSwgIi9MZGFwQW5kQURTLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRXJyb3JzVGFibGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0Vycm9yc1RhYmxlLmh0bWwiLnN1YnN0cigxLCAiL0Vycm9yc1RhYmxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01vb2RsZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Nb29kbGVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvTW9vZGxlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU2FrYWlQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU2FrYWlQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU2FrYWlQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KaXJhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0ppcmFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSmlyYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pvb21sYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Kb29tbGFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSm9vbWxhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRHJ1cGFsUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0RydXBhbFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9EcnVwYWxQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CaXRyaXhQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQml0cml4UGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0JpdHJpeFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU3VnYXJDUk1QbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWRtaW5lUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlZG1pbmVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvUmVkbWluZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0lCTURCMkNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0lCTURCMkNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9JQk1EQjJDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09yYWNsZUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09yYWNsZUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9PcmFjbGVDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL015U1FMQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTXlTUUxDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvTXlTUUxDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Bvc3RncmVzQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9zdGdyZXNDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvUG9zdGdyZXNDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9MYW5ndWFnZUVkaXRvci5odG1sIi5zdWJzdHIoMSwgIi9MYW5ndWFnZUVkaXRvci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVGltZVpvbmVIYW5kbGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIuc3Vic3RyKDEsICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRWRpdFRlbXBsYXRlcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIuc3Vic3RyKDEsICIvRWRpdFRlbXBsYXRlcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3J0U2V0dGluZ3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3J0U2V0dGluZ3MuaHRtbCIuc3Vic3RyKDEsICIvUG9ydFNldHRpbmdzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIuc3Vic3RyKDEsICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIuc3Vic3RyKDEsICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRGFzaGJvYXJkLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRGFzaGJvYXJkLmh0bWwiLnN1YnN0cigxLCAiL0Rhc2hib2FyZC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSG90S2V5cy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0hvdEtleXMuaHRtbCIuc3Vic3RyKDEsICIvSG90S2V5cy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJhcHBOYW1lUGF0aC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLnN1YnN0cigxLCAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9OYXZpZ2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTmF2aWdhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9OYXZpZ2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5zdWJzdHIoMSwgIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JUTVBTQW5kSFRUUFMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SVE1QU0FuZEhUVFBTLmh0bWwiLnN1YnN0cigxLCAiL1JUTVBTQW5kSFRUUFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIuc3Vic3RyKDEsICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIuc3Vic3RyKDEsICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DbHVzdGVyaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2x1c3RlcmluZy5odG1sIi5zdWJzdHIoMSwgIi9DbHVzdGVyaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dldFZlcnNpb25JbmZvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2V0VmVyc2lvbkluZm8uaHRtbCIuc3Vic3RyKDEsICIvR2V0VmVyc2lvbkluZm8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJICAgIAkJCQkJCisgICAgCQkJCQljdXJyZW50TGluayA9IGN1cnJlbnRMaW5rLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQljdXJyZW50TG9jYXRpb24gPSBjdXJyZW50TG9jYXRpb24udG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCQorCQkJCQkJcmV0dXJuIHNpZGVCYXJMYXN0U3RyaW5nID09IGN1cnJlbnRMaW5rKyIjIitjdXJyZW50TG9jYXRpb247CisJCQkJCX0KKwkJCQl9KTsKKwkJCX0pOworCQkJPC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwkJCQkkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsKKwkJCQkJJCgnLmZhbmN5Ym94LWJ1dHRvbnMnKS5jb2xvcmJveCh7cmVsOidmYW5jeWJveC1idXR0b25zJyx3aWR0aDoiNzUlIiwgaGVpZ2h0OiI3NSUifSk7CisJCQkJCSQoJyNhY2NvcmRpb24gYScpLmVhY2goZnVuY3Rpb24oKSB7CisJCQkJICAgICAgdmFyIGEgPSAkKHRoaXMpOworCQkJCSAgICAgIHZhciBocmVmID0gYS5hdHRyKCJocmVmIik7CisJCQkJICAgICAgaWYgKGhyZWYuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJICAgICAgCSAgdmFyIGNvbXBhcmVJdCA9IGhyZWYuc3Vic3RyKDIsIGhyZWYubGVuZ3RoKTsKKwkJCQkJICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZihjb21wYXJlSXQpIT0gLTEpIHsKKwkJCQkJICAgICAgIGEuYWRkQ2xhc3MoJ2FjdGl2ZScpOworCQkJCQkgICAgICB9CisJCQkJICAgICAgfQorCQkJCSAgICB9KTsKKwkJCQkJJCgnI2NvaW4tc2xpZGVyJykuY29pbnNsaWRlcih7IHdpZHRoOiA2NDAsaGVpZ2h0OiA0MDAsIGRlbGF5OiA0MDAwICB9KTsJCQkJCQorCQkJCX0pOworCQkJPC9zY3JpcHQ+CQorCQkJCQkJCisJCQk8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorCQkJCS5mYW5jeWJveC1jdXN0b20gLmZhbmN5Ym94LW91dGVyIHsKKwkJCQkJYm94LXNoYWRvdzogMCAwIDUwcHggIzIyMjsKKwkJCQl9CisJCQk8L3N0eWxlPgorICAgICAgICA8L2hlYWQ+CisKKyAgICAgICAgPGJvZHkgYmdjb2xvcj0iI2ZmZmZmZiIgdGV4dD0iIzAwMDAwMCIgbGluaz0iIzEyMzQ2NSIgdmxpbms9IiMxMjM0NjUiIGFsaW5rPSIjMDAwMDAwIj4gIAorICAgICAgICAJPGRpdiBjbGFzcz0ibWFpbmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAJPGRpdiBjbGFzcz0ic3VwZXJib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCI+CisgICAgICAgICAgICAgICAgPCEtLSBUT1AgSU1BR0UgLS0+CisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPgorPGEgaHJlZj0iaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnLyI+PGltZyBzcmM9Ii4vaW1hZ2VzL2xvZ28tMi5qcGciIGFsdD0iQXBhY2hlIE9wZW5NZWV0aW5ncyIgYm9yZGVyPSIwIi8+PC9hPgorPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiID4KKwk8YSBocmVmPSJkZW1vLmh0bWwiPkRlbW88L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iZG93bmxvYWRzLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+RG93bmxvYWQ8L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaW5zdGFsbGF0aW9uLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+SW5zdGFsbGF0aW9uPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTIiB0YXJnZXQ9Il9CTEFOSyI+V2lraTwvYT4KKwk8c3Bhbj4mbmJzcDs8L3NwYW4+Cis8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSI0Ij4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPCEtLSBMRUZUIFNJREUgTkFWSUdBVElPTiAtLT4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIiBub3dyYXA9Im5vd3JhcCI+CisKKyAgICAgICAgICAgICAgICAgICAgPCEtLSBzcGVjaWFsIEFDb24gTG9nbyAtIGxlYXZlIGhlcmUgZm9yIG5leHQgdGltZQorICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vYXBhY2hlY29uLmNvbS8yMDA1L1VTLyI+CisgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2FwYWNoZS5vcmcvaW1hZ2VzL2FjMjAwNXVzX2JsdWVfMTI1eDEyNS5qcGciIGhlaWdodD0iMTI1IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTI1IiBib3JkZXI9IjAiIGFsdD0iQXBhY2hlQ29uIFVTIDIwMDUiIC8+CisgICAgICAgICAgICAgICAgICAgIDwvYT4gIC0tPgorCisgICAgICAgICAgICAgICAgICAgPCEtLSByZWd1bGFyIG1lbnUgLS0+CisKKyAgICAgICAgICAgICAgICAgICAgCisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGRpdiBpZD0iYWNjb3JkaW9uIiBzdHlsZT0id2lkdGg6IDEwMCUiPgorICAgIAorICAgICAgICAgICAgCTxoMz48YSBocmVmPSIjR2VuZXJhbCI+R2VuZXJhbDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5kZXguaHRtbCI+SG9tZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbGljZW5zZS5odG1sIj5MaWNlbnNlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyI+QVNGPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kb3dubG9hZHMuaHRtbCI+RG93bmxvYWRzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCI+Q29tbWVyY2lhbCBTdXBwb3J0PC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnN0YWxsYXRpb25hbmRVcGdyYWRlIj5JbnN0YWxsYXRpb24gYW5kIFVwZ3JhZGU8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luc3RhbGxhdGlvbi5odG1sIj5JbnN0YWxsYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1VwZ3JhZGUuaHRtbCI+VXBncmFkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii5odHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyI+VHV0b3JpYWxzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db21tYW5kTGluZUFkbWluLmh0bWwiPkNvbW1hbmQgTGluZSBBZG1pbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29tbXVuaXR5Ij5Db21tdW5pdHk8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2dldC1pbnZvbHZlZC5odG1sIj5HZXQgSW52b2x2ZWQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3RlYW0tbGlzdC5odG1sIj5Db21taXR0ZXJzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9tYWlsLWxpc3RzLmh0bWwiPk1haWxpbmcgTGlzdHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyI+V2lraTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjRGV2ZWxvcG1lbnQiPkRldmVsb3BtZW50PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9zdm4uaHRtbCI+U291cmNlIENvZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIj5CdWdzIC8gSXNzdWVzIChKSVJBKTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZGVwZW5kZW5jaWVzLmh0bWwiPkRlcGVuZGVuY2llczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCI+QnVpbGQgSW5zdHJ1Y3Rpb25zPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KVW5pdFRlc3RpbmcuaHRtbCI+SlVuaXQgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTWFudWFsVGVzdGluZy5odG1sIj5NYW51YWwgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVsZWFzZUd1aWRlLmh0bWwiPlJlbGVhc2UgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1dlYnNpdGVHdWlkZS5odG1sIj5XZWJzaXRlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnRlZ3JhdGlvbiI+SW50ZWdyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1NvYXBSZXN0QVBJLmh0bWwiPlNPQVAvUkVTVCBBUEk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Jlc3RBUElTYW1wbGUuaHRtbCI+UkVTVCBBUEkgU2FtcGxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9MZGFwQW5kQURTLmh0bWwiPkxkYXAgYW5kIEFEUzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCI+Vm9JUCBhbmQgU0lQPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9FcnJvcnNUYWJsZS5odG1sIj5FcnJvcnMgdGFibGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI1BsdWdpbnMiPlBsdWdpbnM8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01vb2RsZVBsdWdpbi5odG1sIj5Nb29kbGUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TYWthaVBsdWdpbi5odG1sIj5TYWthaSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0ppcmFQbHVnaW4uaHRtbCI+SmlyYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pvb21sYVBsdWdpbi5odG1sIj5Kb29tbGEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9EcnVwYWxQbHVnaW4uaHRtbCI+RHJ1cGFsIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQml0cml4UGx1Z2luLmh0bWwiPkJpdHJpeCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCI+Q29uZmx1ZW5jZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiPlN1Z2FyQ1JNIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVkbWluZVBsdWdpbi5odG1sIj5SZWRtaW5lIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29uZmlndXJhdGlvbiI+Q29uZmlndXJhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+REIgU2FtcGxlIENvbmZpZ3VyYXRpb25zPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQXBhY2hlRGVyYnlDb25maWcuaHRtbCI+QXBhY2hlIERlcmJ5PC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JQk1EQjJDb25maWcuaHRtbCI+SUJNIERCMjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3JhY2xlQ29uZmlnLmh0bWwiPk9yYWNsZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTXlTUUxDb25maWcuaHRtbCI+TXlTUUw8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Bvc3RncmVzQ29uZmlnLmh0bWwiPlBvc3RncmVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Mb2NhbGl6YXRpb24gYW5kIGxhbmd1YWdlczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiPkludGVybmF0aW9uYWxpc2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9MYW5ndWFnZUVkaXRvci5odG1sIj5MYW5ndWFnZUVkaXRvcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vVGltZVpvbmVIYW5kbGluZy5odG1sIj5UaW1lWm9uZUhhbmRsaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9FZGl0VGVtcGxhdGVzLmh0bWwiPkVkaXRUZW1wbGF0ZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk5BVCBQb3J0IFNldHRpbmdzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9ydFNldHRpbmdzLmh0bWwiPlBvcnQgc2V0dGluZ3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlBlcmZvcm1hbmNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCI+SlZNIHBlcmZvcm1hbmNlIHR1bmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+VXNlciBJbnRlcmZhY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiPlRoZW1lczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRGFzaGJvYXJkLmh0bWwiPkRhc2hib2FyZDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCI+V2ViY2FtIHJlc29sdXRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCI+Um9vbSBsYXlvdXQgb3B0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSG90S2V5cy5odG1sIj5Ib3QgS2V5czwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q3VzdG9taXphdGlvbjwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmFwcE5hbWVQYXRoLmh0bWwiPldlYmFwcCBuYW1lL3BhdGg8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL05hdmlnYXRpb24uaHRtbCI+TmF2aWdhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIj5DYWxlbmRhciBhbmQgdGltZXpvbmU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCI+Q3VzdG9tIHJvb20gdHlwZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCI+Q3VzdG9tIGN0eXB0IG1lY2hhbmlzbTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCI+R2VuZXJhbCBDb25maWd1cmF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5TZWN1cml0eTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCI+UmVzdHJpY3RlZCBBY2Nlc3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1JUTVBTQW5kSFRUUFMuaHRtbCI+UlRNUFMgYW5kIEhUVFBTPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Db252ZXJ0ZXJzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIj5PcGVuT2ZmaWNlIENvbnZlcnRlcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIj5GRk1QRUcgVmVyc2lvbiBTd2l0Y2g8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNsdXN0ZXJpbmc8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DbHVzdGVyaW5nLmh0bWwiPkNsdXN0ZXJpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk1pc2M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZXRWZXJzaW9uSW5mby5odG1sIj5HZXQgdmVyc2lvbiBpbmZvPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAKKyAgICA8L2Rpdj4KKyAgICAgCisgICAgPGJyLz4KKyAgICAKKyAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iQ29uZmx1ZW5jZSBQbHVnaW4gZm9yIE9wZW5NZWV0aW5ncyI+PHN0cm9uZz5Db25mbHVlbmNlIFBsdWdpbiBmb3IgT3Blbk1lZXRpbmdzPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4JCQkJDQorCQkJCUN1cnJlbnQgRGV2ZWxvcG1lbnQgU25hcHNob3RzIGZvciB0ZXN0aW5nIGNhbiBiZSBkb3dubG9hZGVkIGZyb206DQorCQkJCTxhIGhyZWY9Imh0dHBzOi8vc3ZuLmFwYWNoZS5vcmcvcmVwb3MvYXNmL29wZW5tZWV0aW5ncy9icmFuY2hlcy9jb25mbHVlbmNlLXBsdWdpbi90YXJnZXQvb3Blbm1lZXRpbmdzY29uZmx1ZW5jZS0xLjAtU05BUFNIT1QuamFyIj5oZXJlPC9hPg0KKwkJCQkuDQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iRmVhdHVyZXMiPjxzdHJvbmc+RmVhdHVyZXM8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlRoZSBwbHVnaW4gY29udGFpbnMgdGhlIGZvbGxvd2luZyBmZWF0dXJlczogPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPg0KKwkJCQk8bGk+Q3JlYXRlIHZpZGVvY29uZmVyZW5jZSByb29tcyB0aHJvdWdoIENvbmZsdWVuY2U6IDwvbGk+DQorCQkJCTxsaT4NCisJCQkJCTxvbD4NCisJCQkJCQk8bGk+SW50ZWdyYXRlZCB3aXRoIENvbmZsdWVuY2UgY29udGVudCA8L2xpPgkJCQkJCQkJCQkNCisJCQkJCQk8bGk+Q29uZmlndXJhYmxlIHJvb20gdHlwZSA8L2xpPg0KKwkJCQkJPC9vbD4NCisJCQkJPC9saT4NCisJCQk8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iRGVtbyB2aWRlbyI+PHN0cm9uZz5EZW1vIHZpZGVvPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5UaGUgZGVtbyB2aWRlbyBvZiBDb25mbHVlbmNlIHBsdWdpbiBzaG93IHlvdSB0aGUgcGx1Z2luIGluIGFjdGlvbiA8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IHN0eWxlPSJoZWlnaHQ6IDM5MHB4OyB3aWR0aDogNjQwcHgiPg0KKwkJCSAgICAgIDxwYXJhbSBuYW1lPSJtb3ZpZSIgdmFsdWU9Imh0dHA6Ly93d3cueW91dHViZS5jb20vdi9ZRktsWGdndGxkMD92ZXJzaW9uPTMmYW1wO2ZlYXR1cmU9cGxheWVyX2RldGFpbHBhZ2UiIC8+DQorCQkJICAgICAgPHBhcmFtIG5hbWU9ImFsbG93RnVsbFNjcmVlbiIgdmFsdWU9InRydWUiIC8+DQorCQkJICAgICAgPHBhcmFtIG5hbWU9ImFsbG93U2NyaXB0QWNjZXNzIiB2YWx1ZT0iYWx3YXlzIiAvPg0KKwkJCSAgICAgIDxlbWJlZCBzcmM9Imh0dHA6Ly93d3cueW91dHViZS5jb20vdi9ZRktsWGdndGxkMD92ZXJzaW9uPTMmYW1wO2ZlYXR1cmU9cGxheWVyX2RldGFpbHBhZ2UiIHR5cGU9ImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoIiBhbGxvd2Z1bGxzY3JlZW49InRydWUiIGFsbG93U2NyaXB0QWNjZXNzPSJhbHdheXMiIHdpZHRoPSI2NDAiIGhlaWdodD0iMzYwIiAvPg0KKwkJICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDwhLS0gRk9PVEVSIC0tPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgYWxpZ249ImNlbnRlciI+PGZvbnQgY29sb3I9IiMxMjM0NjUiIHNpemU9Ii0xIj48ZW0+CisgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAmIzE2OTsgMjAwMy0yMDEzLCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyAgICAgICAgICAgICAgICAgICAgPC9lbT48L2ZvbnQ+PC9kaXY+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvYm9keT4KKyAgICA8L2h0bWw+Cis8IS0tIGVuZCB0aGUgcHJvY2Vzc2luZyAtLT4KKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKwpkaWZmIC0tZ2l0IGEvZG9jcy9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIGIvZG9jcy9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzZWQ1NmQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwKQEAgLTAsMCArMSw3NzkgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgorCis8IS0tCitDb3B5cmlnaHQgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKworPCEtLSBDb250ZW50IFN0eWxlc2hlZXQgZm9yIFNpdGUgLS0+CisKKyAgICAgICAgCis8IS0tIHN0YXJ0IHRoZSBwcm9jZXNzaW5nIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8IS0tIEdFTkVSQVRFRCBGSUxFLCBETyBOT1QgRURJVCwgRURJVCBUSEUgWE1MIEZJTEUgSU4geGRvY3MgSU5TVEVBRCEgLS0+CisgICAgPCEtLSBNYWluIFBhZ2UgU2VjdGlvbiAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGh0bWw+CisgICAgICAgIDxoZWFkPgorICAgICAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiLz4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iCisJCQlPcGVuTWVldGluZ3MgVGVhbQorCQkiPgorICAgICAgICAgICAgPG1ldGEgbmFtZT0iZW1haWwiIGNvbnRlbnQ9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+CisgICAgICAgICAgICAKKyAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgPHRpdGxlPkFwYWNoZSBPcGVuTWVldGluZ3MgLSBIb3d0byBjcmVhdGUgYSBDdXN0b20gQ3J5cHQgc3R5bGVzPC90aXRsZT4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9vcGVubWVldGluZ3MuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9qcXVlcnktdWkuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2luLXNsaWRlci1zdHlsZXMuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2xvcmJveC5jc3MiIC8+CisgICAgICAgICAgICAKKwkJCTwhLS0gQWRkIGpRdWVyeSBsaWJyYXJ5IC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LTEuNy4xLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPCEtLSBBZGQgY29pbnNsaWRlciBwbHVnaW5zIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvY29pbi1zbGlkZXIubWluLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPCEtLSBBZGQgY29sb3Jib3ggcGx1Z2luIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LmNvbG9yYm94LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmNvcmUuanMiPjwvc2NyaXB0PgorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS53aWRnZXQuanMiPjwvc2NyaXB0PgorCQkKKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkuYWNjb3JkaW9uLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdD4KKwkJCSQoZnVuY3Rpb24oKSB7CisJCQkJJCggIiNhY2NvcmRpb24iICkuYWNjb3JkaW9uKHsKKwkJCQkJYXV0b0hlaWdodDogZmFsc2UsCisJCQkJCW5hdmlnYXRpb246IHRydWUsCisJCQkJCW5hdmlnYXRpb25GaWx0ZXI6IGZ1bmN0aW9uICgpIHsKKwkJCQkJCXZhciBzaWRlYmFySHJlZkFycmF5ID0gdGhpcy5ocmVmLnNwbGl0KCIvIik7CisgICAgCQkJCQl2YXIgc2lkZUJhckxhc3RTdHJpbmcgPSBzaWRlYmFySHJlZkFycmF5W3NpZGViYXJIcmVmQXJyYXkubGVuZ3RoIC0gMV0udG9Mb3dlckNhc2UoKTsKKwkJCQkJCQorCQkJCQkJaWYgKHNpZGVCYXJMYXN0U3RyaW5nLmluZGV4T2YoIiMiKSA9PSAtMSkgeworCQkJCQkJCXJldHVybiBmYWxzZTsKKwkJCQkJCX0KKwkJCQkJCQorCQkJCQkJCQkJCQkJLyogZG9jdW1lbnQubG9jYXRpb24uaHJlZiAqLworCQkJCQkJdmFyIGN1cnJlbnRTZWN0aW9uID0gIiI7CisJCQkJCQkKKwkJCQkJCXZhciBjdXJyZW50TG9jYXRpb24gPSAiIjsKKwkJCQkJCXZhciBjdXJyZW50TGluayA9ICIiOworCQkJCQkJaWYgKGZhbHNlKSB7CisJCQkJCQkKKwkJCQkJCX0KKyAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5kZXguaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5kZXguaHRtbCIuc3Vic3RyKDEsICIvaW5kZXguaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9saWNlbnNlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2xpY2Vuc2UuaHRtbCIuc3Vic3RyKDEsICIvbGljZW5zZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5zdWJzdHIoMSwgImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZG93bmxvYWRzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2Rvd25sb2Fkcy5odG1sIi5zdWJzdHIoMSwgIi9kb3dubG9hZHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiLnN1YnN0cigxLCAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9pbnN0YWxsYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5zdGFsbGF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL2luc3RhbGxhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1VwZ3JhZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvVXBncmFkZS5odG1sIi5zdWJzdHIoMSwgIi9VcGdyYWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIuc3Vic3RyKDEsICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db21tYW5kTGluZUFkbWluLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIuc3Vic3RyKDEsICIvQ29tbWFuZExpbmVBZG1pbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9nZXQtaW52b2x2ZWQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9nZXQtaW52b2x2ZWQuaHRtbCIuc3Vic3RyKDEsICIvZ2V0LWludm9sdmVkLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGVhbS1saXN0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdGVhbS1saXN0Lmh0bWwiLnN1YnN0cigxLCAiL3RlYW0tbGlzdC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL21haWwtbGlzdHMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9tYWlsLWxpc3RzLmh0bWwiLnN1YnN0cigxLCAiL21haWwtbGlzdHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLnN1YnN0cigxLCAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3N2bi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvc3ZuLmh0bWwiLnN1YnN0cigxLCAiL3N2bi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIuc3Vic3RyKDEsICJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2RlcGVuZGVuY2llcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZGVwZW5kZW5jaWVzLmh0bWwiLnN1YnN0cigxLCAiL2RlcGVuZGVuY2llcy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pVbml0VGVzdGluZy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSlVuaXRUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL0pVbml0VGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01hbnVhbFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01hbnVhbFRlc3RpbmcuaHRtbCIuc3Vic3RyKDEsICIvTWFudWFsVGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlbGVhc2VHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVsZWFzZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1JlbGVhc2VHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYnNpdGVHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvV2Vic2l0ZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1dlYnNpdGVHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Tb2FwUmVzdEFQSS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU29hcFJlc3RBUEkuaHRtbCIuc3Vic3RyKDEsICIvU29hcFJlc3RBUEkuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZXN0QVBJU2FtcGxlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZXN0QVBJU2FtcGxlLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RBUElTYW1wbGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MZGFwQW5kQURTLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9MZGFwQW5kQURTLmh0bWwiLnN1YnN0cigxLCAiL0xkYXBBbmRBRFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FcnJvcnNUYWJsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRXJyb3JzVGFibGUuaHRtbCIuc3Vic3RyKDEsICIvRXJyb3JzVGFibGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTW9vZGxlUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01vb2RsZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Nb29kbGVQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TYWthaVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TYWthaVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TYWthaVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ppcmFQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSmlyYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9KaXJhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSm9vbWxhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pvb21sYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Kb29tbGFQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EcnVwYWxQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRHJ1cGFsUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0RydXBhbFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0JpdHJpeFBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CaXRyaXhQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvQml0cml4UGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TdWdhckNSTVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TdWdhckNSTVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TdWdhckNSTVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlZG1pbmVQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVkbWluZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9SZWRtaW5lUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSUJNREIyQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSUJNREIyQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL0lCTURCMkNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3JhY2xlQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3JhY2xlQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL09yYWNsZUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTXlTUUxDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9NeVNRTENvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9NeVNRTENvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUG9zdGdyZXNDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MYW5ndWFnZUVkaXRvci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLnN1YnN0cigxLCAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5zdWJzdHIoMSwgIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FZGl0VGVtcGxhdGVzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRWRpdFRlbXBsYXRlcy5odG1sIi5zdWJzdHIoMSwgIi9FZGl0VGVtcGxhdGVzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1BvcnRTZXR0aW5ncy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1BvcnRTZXR0aW5ncy5odG1sIi5zdWJzdHIoMSwgIi9Qb3J0U2V0dGluZ3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5zdWJzdHIoMSwgIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5zdWJzdHIoMSwgIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EYXNoYm9hcmQuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9EYXNoYm9hcmQuaHRtbCIuc3Vic3RyKDEsICIvRGFzaGJvYXJkLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLnN1YnN0cigxLCAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Ib3RLZXlzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSG90S2V5cy5odG1sIi5zdWJzdHIoMSwgIi9Ib3RLZXlzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYmFwcE5hbWVQYXRoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvV2ViYXBwTmFtZVBhdGguaHRtbCIuc3Vic3RyKDEsICIvV2ViYXBwTmFtZVBhdGguaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL05hdmlnYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9OYXZpZ2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL05hdmlnYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLnN1YnN0cigxLCAiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIuc3Vic3RyKDEsICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIuc3Vic3RyKDEsICIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUlRNUFNBbmRIVFRQUy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1JUTVBTQW5kSFRUUFMuaHRtbCIuc3Vic3RyKDEsICIvUlRNUFNBbmRIVFRQUy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5zdWJzdHIoMSwgIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5zdWJzdHIoMSwgIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NsdXN0ZXJpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DbHVzdGVyaW5nLmh0bWwiLnN1YnN0cigxLCAiL0NsdXN0ZXJpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvR2V0VmVyc2lvbkluZm8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9HZXRWZXJzaW9uSW5mby5odG1sIi5zdWJzdHIoMSwgIi9HZXRWZXJzaW9uSW5mby5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkgICAgCQkJCQkKKyAgICAJCQkJCWN1cnJlbnRMaW5rID0gY3VycmVudExpbmsudG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCWN1cnJlbnRMb2NhdGlvbiA9IGN1cnJlbnRMb2NhdGlvbi50b0xvd2VyQ2FzZSgpOworICAgIAkJCQkJCisJCQkJCQlyZXR1cm4gc2lkZUJhckxhc3RTdHJpbmcgPT0gY3VycmVudExpbmsrIiMiK2N1cnJlbnRMb2NhdGlvbjsKKwkJCQkJfQorCQkJCX0pOworCQkJfSk7CisJCQk8L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCQkJCSQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgeworCQkJCQkkKCcuZmFuY3lib3gtYnV0dG9ucycpLmNvbG9yYm94KHtyZWw6J2ZhbmN5Ym94LWJ1dHRvbnMnLHdpZHRoOiI3NSUiLCBoZWlnaHQ6Ijc1JSJ9KTsKKwkJCQkJJCgnI2FjY29yZGlvbiBhJykuZWFjaChmdW5jdGlvbigpIHsKKwkJCQkgICAgICB2YXIgYSA9ICQodGhpcyk7CisJCQkJICAgICAgdmFyIGhyZWYgPSBhLmF0dHIoImhyZWYiKTsKKwkJCQkgICAgICBpZiAoaHJlZi5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkgICAgICAJICB2YXIgY29tcGFyZUl0ID0gaHJlZi5zdWJzdHIoMiwgaHJlZi5sZW5ndGgpOworCQkJCQkgICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKGNvbXBhcmVJdCkhPSAtMSkgeworCQkJCQkgICAgICAgYS5hZGRDbGFzcygnYWN0aXZlJyk7CisJCQkJCSAgICAgIH0KKwkJCQkgICAgICB9CisJCQkJICAgIH0pOworCQkJCQkkKCcjY29pbi1zbGlkZXInKS5jb2luc2xpZGVyKHsgd2lkdGg6IDY0MCxoZWlnaHQ6IDQwMCwgZGVsYXk6IDQwMDAgIH0pOwkJCQkJCisJCQkJfSk7CisJCQk8L3NjcmlwdD4JCisJCQkJCQkKKwkJCTxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisJCQkJLmZhbmN5Ym94LWN1c3RvbSAuZmFuY3lib3gtb3V0ZXIgeworCQkJCQlib3gtc2hhZG93OiAwIDAgNTBweCAjMjIyOworCQkJCX0KKwkJCTwvc3R5bGU+CisgICAgICAgIDwvaGVhZD4KKworICAgICAgICA8Ym9keSBiZ2NvbG9yPSIjZmZmZmZmIiB0ZXh0PSIjMDAwMDAwIiBsaW5rPSIjMTIzNDY1IiB2bGluaz0iIzEyMzQ2NSIgYWxpbms9IiMwMDAwMDAiPiAgCisgICAgICAgIAk8ZGl2IGNsYXNzPSJtYWluYm9keSIgc3R5bGU9IndpZHRoOiAxMDAlOyI+CisgICAgICAgIAk8ZGl2IGNsYXNzPSJzdXBlcmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIj4KKyAgICAgICAgICAgICAgICA8IS0tIFRPUCBJTUFHRSAtLT4KKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCI+Cis8YSBocmVmPSJodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvIj48aW1nIHNyYz0iLi9pbWFnZXMvbG9nby0yLmpwZyIgYWx0PSJBcGFjaGUgT3Blbk1lZXRpbmdzIiBib3JkZXI9IjAiLz48L2E+Cis8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCIgPgorCTxhIGhyZWY9ImRlbW8uaHRtbCI+RGVtbzwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJkb3dubG9hZHMuaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5Eb3dubG9hZDwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJpbnN0YWxsYXRpb24uaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5JbnN0YWxsYXRpb248L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MiIHRhcmdldD0iX0JMQU5LIj5XaWtpPC9hPgorCTxzcGFuPiZuYnNwOzwvc3Bhbj4KKzwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjQiPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8IS0tIExFRlQgU0lERSBOQVZJR0FUSU9OIC0tPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiIG5vd3JhcD0ibm93cmFwIj4KKworICAgICAgICAgICAgICAgICAgICA8IS0tIHNwZWNpYWwgQUNvbiBMb2dvIC0gbGVhdmUgaGVyZSBmb3IgbmV4dCB0aW1lCisgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9hcGFjaGVjb24uY29tLzIwMDUvVVMvIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vYXBhY2hlLm9yZy9pbWFnZXMvYWMyMDA1dXNfYmx1ZV8xMjV4MTI1LmpwZyIgaGVpZ2h0PSIxMjUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPSIxMjUiIGJvcmRlcj0iMCIgYWx0PSJBcGFjaGVDb24gVVMgMjAwNSIgLz4KKyAgICAgICAgICAgICAgICAgICAgPC9hPiAgLS0+CisKKyAgICAgICAgICAgICAgICAgICA8IS0tIHJlZ3VsYXIgbWVudSAtLT4KKworICAgICAgICAgICAgICAgICAgICAKKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8ZGl2IGlkPSJhY2NvcmRpb24iIHN0eWxlPSJ3aWR0aDogMTAwJSI+CisgICAgCisgICAgICAgICAgICAJPGgzPjxhIGhyZWY9IiNHZW5lcmFsIj5HZW5lcmFsPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9pbmRleC5odG1sIj5Ib21lPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9saWNlbnNlLmh0bWwiPkxpY2Vuc2U8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5BU0Y8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2Rvd25sb2Fkcy5odG1sIj5Eb3dubG9hZHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIj5Db21tZXJjaWFsIFN1cHBvcnQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0luc3RhbGxhdGlvbmFuZFVwZ3JhZGUiPkluc3RhbGxhdGlvbiBhbmQgVXBncmFkZTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5zdGFsbGF0aW9uLmh0bWwiPkluc3RhbGxhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vVXBncmFkZS5odG1sIj5VcGdyYWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLmh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIj5UdXRvcmlhbHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCI+Q29tbWFuZCBMaW5lIEFkbWluPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb21tdW5pdHkiPkNvbW11bml0eTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZ2V0LWludm9sdmVkLmh0bWwiPkdldCBJbnZvbHZlZDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdGVhbS1saXN0Lmh0bWwiPkNvbW1pdHRlcnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL21haWwtbGlzdHMuaHRtbCI+TWFpbGluZyBMaXN0czwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIj5XaWtpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNEZXZlbG9wbWVudCI+RGV2ZWxvcG1lbnQ8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3N2bi5odG1sIj5Tb3VyY2UgQ29kZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiPkJ1Z3MgLyBJc3N1ZXMgKEpJUkEpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kZXBlbmRlbmNpZXMuaHRtbCI+RGVwZW5kZW5jaWVzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CdWlsZEluc3RydWN0aW9ucy5odG1sIj5CdWlsZCBJbnN0cnVjdGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pVbml0VGVzdGluZy5odG1sIj5KVW5pdCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9NYW51YWxUZXN0aW5nLmh0bWwiPk1hbnVhbCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWxlYXNlR3VpZGUuaHRtbCI+UmVsZWFzZSBHdWlkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vV2Vic2l0ZUd1aWRlLmh0bWwiPldlYnNpdGUgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0ludGVncmF0aW9uIj5JbnRlZ3JhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU29hcFJlc3RBUEkuaHRtbCI+U09BUC9SRVNUIEFQSTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVzdEFQSVNhbXBsZS5odG1sIj5SRVNUIEFQSSBTYW1wbGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0xkYXBBbmRBRFMuaHRtbCI+TGRhcCBhbmQgQURTPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIj5Wb0lQIGFuZCBTSVA8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0Vycm9yc1RhYmxlLmh0bWwiPkVycm9ycyB0YWJsZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjUGx1Z2lucyI+UGx1Z2luczwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTW9vZGxlUGx1Z2luLmh0bWwiPk1vb2RsZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Nha2FpUGx1Z2luLmh0bWwiPlNha2FpIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSmlyYVBsdWdpbi5odG1sIj5KaXJhIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSm9vbWxhUGx1Z2luLmh0bWwiPkpvb21sYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0RydXBhbFBsdWdpbi5odG1sIj5EcnVwYWwgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CaXRyaXhQbHVnaW4uaHRtbCI+Qml0cml4IFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQ29uZmx1ZW5jZVBsdWdpbi5odG1sIj5Db25mbHVlbmNlIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU3VnYXJDUk1QbHVnaW4uaHRtbCI+U3VnYXJDUk0gUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWRtaW5lUGx1Z2luLmh0bWwiPlJlZG1pbmUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb25maWd1cmF0aW9uIj5Db25maWd1cmF0aW9uPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5EQiBTYW1wbGUgQ29uZmlndXJhdGlvbnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIj5BcGFjaGUgRGVyYnk8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0lCTURCMkNvbmZpZy5odG1sIj5JQk0gREIyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcmFjbGVDb25maWcuaHRtbCI+T3JhY2xlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9NeVNRTENvbmZpZy5odG1sIj5NeVNRTDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9zdGdyZXNDb25maWcuaHRtbCI+UG9zdGdyZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkxvY2FsaXphdGlvbiBhbmQgbGFuZ3VhZ2VzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCI+SW50ZXJuYXRpb25hbGlzYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0xhbmd1YWdlRWRpdG9yLmh0bWwiPkxhbmd1YWdlRWRpdG9yPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiPlRpbWVab25lSGFuZGxpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0VkaXRUZW1wbGF0ZXMuaHRtbCI+RWRpdFRlbXBsYXRlczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TkFUIFBvcnQgU2V0dGluZ3M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Qb3J0U2V0dGluZ3MuaHRtbCI+UG9ydCBzZXR0aW5nczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+UGVyZm9ybWFuY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIj5KVk0gcGVyZm9ybWFuY2UgdHVuaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Vc2VyIEludGVyZmFjZTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCI+VGhlbWVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9EYXNoYm9hcmQuaHRtbCI+RGFzaGJvYXJkPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIj5XZWJjYW0gcmVzb2x1dGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIj5Sb29tIGxheW91dCBvcHRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Ib3RLZXlzLmh0bWwiPkhvdCBLZXlzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5DdXN0b21pemF0aW9uPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViYXBwTmFtZVBhdGguaHRtbCI+V2ViYXBwIG5hbWUvcGF0aDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTmF2aWdhdGlvbi5odG1sIj5OYXZpZ2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiPkNhbGVuZGFyIGFuZCB0aW1lem9uZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIj5DdXN0b20gcm9vbSB0eXBlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIj5DdXN0b20gY3R5cHQgbWVjaGFuaXNtPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIj5HZW5lcmFsIENvbmZpZ3VyYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlNlY3VyaXR5PC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUmVzdHJpY3RlZEFjY2Vzcy5odG1sIj5SZXN0cmljdGVkIEFjY2VzczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUlRNUFNBbmRIVFRQUy5odG1sIj5SVE1QUyBhbmQgSFRUUFM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNvbnZlcnRlcnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiPk9wZW5PZmZpY2UgQ29udmVydGVyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiPkZGTVBFRyBWZXJzaW9uIFN3aXRjaDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q2x1c3RlcmluZzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NsdXN0ZXJpbmcuaHRtbCI+Q2x1c3RlcmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TWlzYzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0dldFZlcnNpb25JbmZvLmh0bWwiPkdldCB2ZXJzaW9uIGluZm88L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAorICAgIDwvZGl2PgorICAgICAKKyAgICA8YnIvPgorICAgIAorICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJDb25maWd1cmF0aW9uIG9mIEN1c3RvbSBDcnlwdC1TdHlsZSI+PHN0cm9uZz5Db25maWd1cmF0aW9uIG9mIEN1c3RvbSBDcnlwdC1TdHlsZTwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgICA8aHIgc3R5bGU9IndpZHRoOjEwMCU7IGNvbG9yOiM5OTk5OTk7IGJhY2tncm91bmQtY29sb3I6Izk5OTk5OTsgaGVpZ2h0OjFweDsgYm9yZGVyOjBweDsiLz4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQorCQkJCVlvdSBjYW4gdXNlIGN1c3RvbSBDcnlwdC1UeXBlcywgYnV0IHlvdSBzaG91bGQgZGVjaWRlIGR1cmluZw0KKwkJCQlpbnN0YWxsYXRpb24gd2hpY2ggVHlwZSBvZiBlbmNyeXB0aW9uIHlvdSB3YW50IHRvIHVzZS4gQnkgZGVmYXVsdA0KKwkJCQl0d28gdHlwZSBhcmUgYXZhaWxhYmxlOg0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4NCisJCQkJPGxpPm9yZy54bWxjcm0udXRpbHMuY3J5cHQuTUQ1SW1wbGVtZW50YXRpb24gLSB0aGlzIHVzZXMgY29tbW9uIE1ENQ0KKwkJCQkJQ3J5cHQgbGlrZSBQSFAgZG9lcywgdGhpcyBpcyB0aGUgZGVmYXVsdCBvbmUgKHJlc3VsdHMgaW4gc29tZXRoaW5nDQorCQkJCQlsaWtlOiBmZTAxY2UyYTdmYmFjOGZhZmFlZDdjOTgyYTA0ZTIyOSk8L2xpPg0KKwkJCQk8bGk+b3JnLnhtbGNybS51dGlscy5jcnlwdC5NRDVDcnlwdEltcGxlbWVudGF0aW9uIC0gZG9lcyB1c2UNCisJCQkJCUJTRC1TdHlsZSBvZiBlbmNyeXB0aW9uIHVzaW5nIGEgc2FsdCAocmVzdWx0cyBpbiBzb21ldGhpbmcgbGlrZToNCisJCQkJCSQxJEdNc2o3RjJJJDVTM3I5Q2V1a1hHWE53ZjZiNHNwaDEpPC9saT4NCisJCQk8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQorCQkJCVlvdSBjYW4gZWRpdCB0aGUgY29uZmlnLWtleSBkdXJpbmcgSW5zdGFsbGF0aW9uIG9yIGxhdGVyIGluIHRoZQ0KKwkJCQlBZG1pbmlzdHJhdGlvbiBQYW5lbC4gQnV0IGlmIHlvdSBjaGFuZ2UgaXQgdXNpbmcgdGhlDQorCQkJCUFkbWluaXN0cmF0aW9uLVBhbmVsIHByZXZpb3VzIHBhc3N3b3JkcyBtaWdodCBiZSBub3Qgd29ya2luZyBhbnltb3JlDQorCQkJCWFzIHRoZXkgYXJlIGVuY3J5cHRlZCB3aXRoIGFub3RoZXIgYWxnb3JpdGhtLg0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkID48IS0tIGJnY29sb3I9IiNFRUVFRUUiIC0tPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0idmVyZGFuYSxhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IkNvbmZpZ3VyYXRpb24gb2YgQ3VzdG9tIENyeXB0LVN0eWxlIj48c3Ryb25nPkNvbmZpZ3VyYXRpb24gb2YgQ3VzdG9tIENyeXB0LVN0eWxlPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJVG8gYWRkIHlvdXIgb3duIGNyeXB0IHN0eWxlIHlvdSBuZWVkIHRvIHdyaXRlIGEgY2xhc3Mgd2hpY2gNCisJCQkJaW1wbGVtZW50cyB0aGUgaW50ZXJmYWNlOiBvcmcueG1sY3JtLnV0aWxzLmNyeXB0Q3J5cHRTdHJpbmcNCisJCQkJPGJyIC8+DQorCQkJCWFuZCBleHRlbmRzIHRoZSBBZGFwdGVyOiBvcmcueG1sY3JtLnV0aWxzLkNyeXB0U3RyaW5nQWRhcHRlcg0KKwkJCQk8YnIgLz4NCisJCQkJRXhhbXBsZSBvZiBhbiBJbXBsZW1lbnRhdGlvbjoNCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ4bWxjb2RlIj4NCisJCQkJcGFja2FnZSBvcmcueG1sY3JtLnV0aWxzLmNyeXB0Ow0KKwkJCQkNCisJCQkJaW1wb3J0IGphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uOw0KKwkJCQkNCisJCQkJcHVibGljIGNsYXNzIE1ENUltcGxlbWVudGF0aW9uIGV4dGVuZHMgQ3J5cHRTdHJpbmdBZGFwdGVyIGltcGxlbWVudHMgQ3J5cHRTdHJpbmcgew0KKwkJCQkNCisJCQkJICAgICAgICBAT3ZlcnJpZGUNCisJCQkJICAgICAgICBwdWJsaWMgU3RyaW5nIGNyZWF0ZVBhc3NQaHJhc2UoU3RyaW5nIHVzZXJHaXZlblBhc3MpIHsNCisJCQkJICAgICAgICAgICAgICAgIFN0cmluZyBwYXNzUGhyYXNlID0gbnVsbDsNCisJCQkJICAgICAgICAgICAgICAgIHRyeSB7DQorCQkJCSAgICAgICAgICAgICAgICAgICAgICAgIHBhc3NQaHJhc2UgPSBNRDUuZG9fY2hlY2tzdW0odXNlckdpdmVuUGFzcyk7DQorCQkJCSAgICAgICAgICAgICAgICB9IGNhdGNoIChOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24gZSkgew0KKwkJCQkgICAgICAgICAgICAgICAgICAgICAgICBlLnByaW50U3RhY2tUcmFjZSgpOw0KKwkJCQkgICAgICAgICAgICAgICAgfQ0KKwkJCQkgICAgICAgICAgICAgICAgcmV0dXJuIHBhc3NQaHJhc2U7DQorCQkJCSAgICAgICAgfQ0KKwkJCQkNCisJCQkJICAgICAgICBAT3ZlcnJpZGUNCisJCQkJICAgICAgICBwdWJsaWMgQm9vbGVhbiB2ZXJpZnlQYXNzd29yZChTdHJpbmcgcGFzc0dpdmVuLCBTdHJpbmcgcGFzc3dkRnJvbURiKSB7DQorCQkJCSAgICAgICAgICAgICAgICByZXR1cm4gKHBhc3N3ZEZyb21EYi5lcXVhbHMoY3JlYXRlUGFzc1BocmFzZShwYXNzR2l2ZW4pKSk7DQorCQkJCSAgICAgICAgfQ0KKwkJCQkgICAgICAgIA0KKwkJCQl9DQorCQkJPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5UbyBhZGQgeW91ciBvd24gRW5jcnlwdGlvbi1DbGFzcyB5b3UgbmVlZCB0byBhZGQgeW91ciBjbGFzcyB0byB0aGUNCisJCQkJT3Blbk1lZXRpbmdzLVdlYmFwcCAobWFrZSBpdCBhdmFpbGFibGUgdG8gdGhlIHdlYmFwcC1jbGFzc3BhdGgpIGFuZA0KKwkJCQl1c2UgeW91ciBjdXN0b20tY2xhc3MtbmFtZSBpbnN0ZWFkIG9mDQorCQkJCW9yZy54bWxjcm0udXRpbHMuY3J5cHQuTUQ1SW1wbGVtZW50YXRpb24gZHVyaW5nIHRoZSBJbnN0YWxsYXRpb24gb3INCisJCQkJYXQgcnVudGltZSBieSBlZGl0aW5nIHRoZSBjb25maWcta2V5IGNyeXB0X0NsYXNzTmFtZTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkID48IS0tIGJnY29sb3I9IiNFRUVFRUUiIC0tPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0idmVyZGFuYSxhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IkNvbmZpZ3VyYXRpb24gb2YgQ3VzdG9tIENyeXB0LVN0eWxlIj48c3Ryb25nPkNvbmZpZ3VyYXRpb24gb2YgQ3VzdG9tIENyeXB0LVN0eWxlPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5jcmVkaXRzIGdvdG8gTWlrYSBmb3Igc2hhcmluZyBoaXMgSW1wbGVtZW50YXRpb24gb2YgdGhlDQorCQkJCU1ENUNyeXB0LVN0eWxlPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8IS0tIEZPT1RFUiAtLT4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGFsaWduPSJjZW50ZXIiPjxmb250IGNvbG9yPSIjMTIzNDY1IiBzaXplPSItMSI+PGVtPgorICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgJiMxNjk7IDIwMDMtMjAxMywgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisgICAgICAgICAgICAgICAgICAgIDwvZW0+PC9mb250PjwvZGl2PgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2JvZHk+CisgICAgPC9odG1sPgorPCEtLSBlbmQgdGhlIHByb2Nlc3NpbmcgLS0+CisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKZGlmZiAtLWdpdCBhL2RvY3MvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIGIvZG9jcy9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzhiYzEyZgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sCkBAIC0wLDAgKzEsNzg2IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KKworPCEtLQorQ29weXJpZ2h0IDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KK0xpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKK2h0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCitVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCitkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCitTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCitsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorCisKKzwhLS0gQ29udGVudCBTdHlsZXNoZWV0IGZvciBTaXRlIC0tPgorCisgICAgICAgIAorPCEtLSBzdGFydCB0aGUgcHJvY2Vzc2luZyAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPCEtLSBHRU5FUkFURUQgRklMRSwgRE8gTk9UIEVESVQsIEVESVQgVEhFIFhNTCBGSUxFIElOIHhkb2NzIElOU1RFQUQhIC0tPgorICAgIDwhLS0gTWFpbiBQYWdlIFNlY3Rpb24gLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDxodG1sPgorICAgICAgICA8aGVhZD4KKyAgICAgICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ii8+CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9IgorICAgICAgICAgICAgT3Blbk1lZXRpbmdzIFRlYW0KKwkJIj4KKyAgICAgICAgICAgIDxtZXRhIG5hbWU9ImVtYWlsIiBjb250ZW50PSJzZWJhd2FnbmVyQGFwYWNoZS5vcmciPgorICAgICAgICAgICAgCisgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIDx0aXRsZT5BcGFjaGUgT3Blbk1lZXRpbmdzIC0gSG93dG8gY3JlYXRlIGEgY3VzdG9tIHJvb20gdHlwZSBpbiBPcGVuTWVldGluZ3M8L3RpdGxlPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL29wZW5tZWV0aW5ncy5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2pxdWVyeS11aS5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2NvaW4tc2xpZGVyLXN0eWxlcy5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2NvbG9yYm94LmNzcyIgLz4KKyAgICAgICAgICAgIAorCQkJPCEtLSBBZGQgalF1ZXJ5IGxpYnJhcnkgLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9qcXVlcnktMS43LjEubWluLmpzIj48L3NjcmlwdD4KKwkJCisJCQk8IS0tIEFkZCBjb2luc2xpZGVyIHBsdWdpbnMgLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9jb2luLXNsaWRlci5taW4uanMiPjwvc2NyaXB0PgorCQkJCisJCQk8IS0tIEFkZCBjb2xvcmJveCBwbHVnaW4gLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9qcXVlcnkuY29sb3Jib3guanMiPjwvc2NyaXB0PgorCQkKKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkuY29yZS5qcyI+PC9zY3JpcHQ+CisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLndpZGdldC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5hY2NvcmRpb24uanMiPjwvc2NyaXB0PgorCQkJCisJCQk8c2NyaXB0PgorCQkJJChmdW5jdGlvbigpIHsKKwkJCQkkKCAiI2FjY29yZGlvbiIgKS5hY2NvcmRpb24oeworCQkJCQlhdXRvSGVpZ2h0OiBmYWxzZSwKKwkJCQkJbmF2aWdhdGlvbjogdHJ1ZSwKKwkJCQkJbmF2aWdhdGlvbkZpbHRlcjogZnVuY3Rpb24gKCkgeworCQkJCQkJdmFyIHNpZGViYXJIcmVmQXJyYXkgPSB0aGlzLmhyZWYuc3BsaXQoIi8iKTsKKyAgICAJCQkJCXZhciBzaWRlQmFyTGFzdFN0cmluZyA9IHNpZGViYXJIcmVmQXJyYXlbc2lkZWJhckhyZWZBcnJheS5sZW5ndGggLSAxXS50b0xvd2VyQ2FzZSgpOworCQkJCQkJCisJCQkJCQlpZiAoc2lkZUJhckxhc3RTdHJpbmcuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJCQkJcmV0dXJuIGZhbHNlOworCQkJCQkJfQorCQkJCQkJCisJCQkJCQkJCQkJCQkvKiBkb2N1bWVudC5sb2NhdGlvbi5ocmVmICovCisJCQkJCQl2YXIgY3VycmVudFNlY3Rpb24gPSAiIjsKKwkJCQkJCQorCQkJCQkJdmFyIGN1cnJlbnRMb2NhdGlvbiA9ICIiOworCQkJCQkJdmFyIGN1cnJlbnRMaW5rID0gIiI7CisJCQkJCQlpZiAoZmFsc2UpIHsKKwkJCQkJCQorCQkJCQkJfQorICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9pbmRleC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9pbmRleC5odG1sIi5zdWJzdHIoMSwgIi9pbmRleC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2xpY2Vuc2UuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbGljZW5zZS5odG1sIi5zdWJzdHIoMSwgIi9saWNlbnNlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iLnN1YnN0cigxLCAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kb3dubG9hZHMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZG93bmxvYWRzLmh0bWwiLnN1YnN0cigxLCAiL2Rvd25sb2Fkcy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIuc3Vic3RyKDEsICIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luc3RhbGxhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9pbnN0YWxsYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvaW5zdGFsbGF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVXBncmFkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9VcGdyYWRlLmh0bWwiLnN1YnN0cigxLCAiL1VwZ3JhZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIi5zdWJzdHIoMSwgImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29tbWFuZExpbmVBZG1pbi5odG1sIi5zdWJzdHIoMSwgIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2dldC1pbnZvbHZlZC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2dldC1pbnZvbHZlZC5odG1sIi5zdWJzdHIoMSwgIi9nZXQtaW52b2x2ZWQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi90ZWFtLWxpc3QuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi90ZWFtLWxpc3QuaHRtbCIuc3Vic3RyKDEsICIvdGVhbS1saXN0Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbWFpbC1saXN0cy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL21haWwtbGlzdHMuaHRtbCIuc3Vic3RyKDEsICIvbWFpbC1saXN0cy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIuc3Vic3RyKDEsICJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvc3ZuLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9zdm4uaHRtbCIuc3Vic3RyKDEsICIvc3ZuLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIi5zdWJzdHIoMSwgImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZGVwZW5kZW5jaWVzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kZXBlbmRlbmNpZXMuaHRtbCIuc3Vic3RyKDEsICIvZGVwZW5kZW5jaWVzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiLnN1YnN0cigxLCAiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSlVuaXRUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9KVW5pdFRlc3RpbmcuaHRtbCIuc3Vic3RyKDEsICIvSlVuaXRUZXN0aW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTWFudWFsVGVzdGluZy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTWFudWFsVGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9NYW51YWxUZXN0aW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVsZWFzZUd1aWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZWxlYXNlR3VpZGUuaHRtbCIuc3Vic3RyKDEsICIvUmVsZWFzZUd1aWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2Vic2l0ZUd1aWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9XZWJzaXRlR3VpZGUuaHRtbCIuc3Vic3RyKDEsICIvV2Vic2l0ZUd1aWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1NvYXBSZXN0QVBJLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Tb2FwUmVzdEFQSS5odG1sIi5zdWJzdHIoMSwgIi9Tb2FwUmVzdEFQSS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RBUElTYW1wbGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1Jlc3RBUElTYW1wbGUuaHRtbCIuc3Vic3RyKDEsICIvUmVzdEFQSVNhbXBsZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0xkYXBBbmRBRFMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0xkYXBBbmRBRFMuaHRtbCIuc3Vic3RyKDEsICIvTGRhcEFuZEFEUy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0Vycm9yc1RhYmxlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9FcnJvcnNUYWJsZS5odG1sIi5zdWJzdHIoMSwgIi9FcnJvcnNUYWJsZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Nb29kbGVQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTW9vZGxlUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL01vb2RsZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Nha2FpUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1Nha2FpUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1Nha2FpUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSmlyYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9KaXJhUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0ppcmFQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Kb29tbGFQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSm9vbWxhUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0pvb21sYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0RydXBhbFBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9EcnVwYWxQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvRHJ1cGFsUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQml0cml4UGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0JpdHJpeFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9CaXRyaXhQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVkbWluZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZWRtaW5lUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1JlZG1pbmVQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9JQk1EQjJDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JQk1EQjJDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvSUJNREIyQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9PcmFjbGVDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9PcmFjbGVDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvT3JhY2xlQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NeVNRTENvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL015U1FMQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL015U1FMQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1Bvc3RncmVzQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL1Bvc3RncmVzQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0xhbmd1YWdlRWRpdG9yLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIuc3Vic3RyKDEsICIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiLnN1YnN0cigxLCAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0VkaXRUZW1wbGF0ZXMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9FZGl0VGVtcGxhdGVzLmh0bWwiLnN1YnN0cigxLCAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUG9ydFNldHRpbmdzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9ydFNldHRpbmdzLmh0bWwiLnN1YnN0cigxLCAiL1BvcnRTZXR0aW5ncy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiLnN1YnN0cigxLCAiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiLnN1YnN0cigxLCAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0Rhc2hib2FyZC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0Rhc2hib2FyZC5odG1sIi5zdWJzdHIoMSwgIi9EYXNoYm9hcmQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0hvdEtleXMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Ib3RLZXlzLmh0bWwiLnN1YnN0cigxLCAiL0hvdEtleXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViYXBwTmFtZVBhdGguaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJhcHBOYW1lUGF0aC5odG1sIi5zdWJzdHIoMSwgIi9XZWJhcHBOYW1lUGF0aC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTmF2aWdhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL05hdmlnYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvTmF2aWdhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIuc3Vic3RyKDEsICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIuc3Vic3RyKDEsICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIi5zdWJzdHIoMSwgIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SVE1QU0FuZEhUVFBTLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUlRNUFNBbmRIVFRQUy5odG1sIi5zdWJzdHIoMSwgIi9SVE1QU0FuZEhUVFBTLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiLnN1YnN0cigxLCAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiLnN1YnN0cigxLCAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ2x1c3RlcmluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NsdXN0ZXJpbmcuaHRtbCIuc3Vic3RyKDEsICIvQ2x1c3RlcmluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZXRWZXJzaW9uSW5mby5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dldFZlcnNpb25JbmZvLmh0bWwiLnN1YnN0cigxLCAiL0dldFZlcnNpb25JbmZvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCSAgICAJCQkJCQorICAgIAkJCQkJY3VycmVudExpbmsgPSBjdXJyZW50TGluay50b0xvd2VyQ2FzZSgpOworICAgIAkJCQkJY3VycmVudExvY2F0aW9uID0gY3VycmVudExvY2F0aW9uLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQkKKwkJCQkJCXJldHVybiBzaWRlQmFyTGFzdFN0cmluZyA9PSBjdXJyZW50TGluaysiIyIrY3VycmVudExvY2F0aW9uOworCQkJCQl9CisJCQkJfSk7CisJCQl9KTsKKwkJCTwvc2NyaXB0PgorCQkJCisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisJCQkJJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CisJCQkJCSQoJy5mYW5jeWJveC1idXR0b25zJykuY29sb3Jib3goe3JlbDonZmFuY3lib3gtYnV0dG9ucycsd2lkdGg6Ijc1JSIsIGhlaWdodDoiNzUlIn0pOworCQkJCQkkKCcjYWNjb3JkaW9uIGEnKS5lYWNoKGZ1bmN0aW9uKCkgeworCQkJCSAgICAgIHZhciBhID0gJCh0aGlzKTsKKwkJCQkgICAgICB2YXIgaHJlZiA9IGEuYXR0cigiaHJlZiIpOworCQkJCSAgICAgIGlmIChocmVmLmluZGV4T2YoIiMiKSA9PSAtMSkgeworCQkJCSAgICAgIAkgIHZhciBjb21wYXJlSXQgPSBocmVmLnN1YnN0cigyLCBocmVmLmxlbmd0aCk7CisJCQkJCSAgICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoY29tcGFyZUl0KSE9IC0xKSB7CisJCQkJCSAgICAgICBhLmFkZENsYXNzKCdhY3RpdmUnKTsKKwkJCQkJICAgICAgfQorCQkJCSAgICAgIH0KKwkJCQkgICAgfSk7CisJCQkJCSQoJyNjb2luLXNsaWRlcicpLmNvaW5zbGlkZXIoeyB3aWR0aDogNjQwLGhlaWdodDogNDAwLCBkZWxheTogNDAwMCAgfSk7CQkJCQkKKwkJCQl9KTsKKwkJCTwvc2NyaXB0PgkKKwkJCQkJCQorCQkJPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKwkJCQkuZmFuY3lib3gtY3VzdG9tIC5mYW5jeWJveC1vdXRlciB7CisJCQkJCWJveC1zaGFkb3c6IDAgMCA1MHB4ICMyMjI7CisJCQkJfQorCQkJPC9zdHlsZT4KKyAgICAgICAgPC9oZWFkPgorCisgICAgICAgIDxib2R5IGJnY29sb3I9IiNmZmZmZmYiIHRleHQ9IiMwMDAwMDAiIGxpbms9IiMxMjM0NjUiIHZsaW5rPSIjMTIzNDY1IiBhbGluaz0iIzAwMDAwMCI+ICAKKyAgICAgICAgCTxkaXYgY2xhc3M9Im1haW5ib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgCTxkaXYgY2xhc3M9InN1cGVyYm9keSIgc3R5bGU9IndpZHRoOiAxMDAlOyI+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiPgorICAgICAgICAgICAgICAgIDwhLS0gVE9QIElNQUdFIC0tPgorICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0Ij4KKzxhIGhyZWY9Imh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy8iPjxpbWcgc3JjPSIuL2ltYWdlcy9sb2dvLTIuanBnIiBhbHQ9IkFwYWNoZSBPcGVuTWVldGluZ3MiIGJvcmRlcj0iMCIvPjwvYT4KKzwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODAlIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIiA+CisJPGEgaHJlZj0iZGVtby5odG1sIj5EZW1vPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9ImRvd25sb2Fkcy5odG1sIiB0YXJnZXQ9Il9QQVJFTlQiPkRvd25sb2FkPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imluc3RhbGxhdGlvbi5odG1sIiB0YXJnZXQ9Il9QQVJFTlQiPkluc3RhbGxhdGlvbjwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUyIgdGFyZ2V0PSJfQkxBTksiPldpa2k8L2E+CisJPHNwYW4+Jm5ic3A7PC9zcGFuPgorPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iNCI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGhyIG5vc2hhZGU9Im5vc2hhZGUiIHNpemU9IjEiLz4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDwhLS0gTEVGVCBTSURFIE5BVklHQVRJT04gLS0+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCIgbm93cmFwPSJub3dyYXAiPgorCisgICAgICAgICAgICAgICAgICAgIDwhLS0gc3BlY2lhbCBBQ29uIExvZ28gLSBsZWF2ZSBoZXJlIGZvciBuZXh0IHRpbWUKKyAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL2FwYWNoZWNvbi5jb20vMjAwNS9VUy8iPgorICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHA6Ly9hcGFjaGUub3JnL2ltYWdlcy9hYzIwMDV1c19ibHVlXzEyNXgxMjUuanBnIiBoZWlnaHQ9IjEyNSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjEyNSIgYm9yZGVyPSIwIiBhbHQ9IkFwYWNoZUNvbiBVUyAyMDA1IiAvPgorICAgICAgICAgICAgICAgICAgICA8L2E+ICAtLT4KKworICAgICAgICAgICAgICAgICAgIDwhLS0gcmVndWxhciBtZW51IC0tPgorCisgICAgICAgICAgICAgICAgICAgIAorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDxkaXYgaWQ9ImFjY29yZGlvbiIgc3R5bGU9IndpZHRoOiAxMDAlIj4KKyAgICAKKyAgICAgICAgICAgIAk8aDM+PGEgaHJlZj0iI0dlbmVyYWwiPkdlbmVyYWw8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luZGV4Lmh0bWwiPkhvbWU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2xpY2Vuc2UuaHRtbCI+TGljZW5zZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iPkFTRjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZG93bmxvYWRzLmh0bWwiPkRvd25sb2FkczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiPkNvbW1lcmNpYWwgU3VwcG9ydDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI+SW5zdGFsbGF0aW9uIGFuZCBVcGdyYWRlPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9pbnN0YWxsYXRpb24uaHRtbCI+SW5zdGFsbGF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9VcGdyYWRlLmh0bWwiPlVwZ3JhZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiPlR1dG9yaWFsczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQ29tbWFuZExpbmVBZG1pbi5odG1sIj5Db21tYW5kIExpbmUgQWRtaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0NvbW11bml0eSI+Q29tbXVuaXR5PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9nZXQtaW52b2x2ZWQuaHRtbCI+R2V0IEludm9sdmVkPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi90ZWFtLWxpc3QuaHRtbCI+Q29tbWl0dGVyczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbWFpbC1saXN0cy5odG1sIj5NYWlsaW5nIExpc3RzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iPldpa2k8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0RldmVsb3BtZW50Ij5EZXZlbG9wbWVudDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vc3ZuLmh0bWwiPlNvdXJjZSBDb2RlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyI+QnVncyAvIElzc3VlcyAoSklSQSk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2RlcGVuZGVuY2llcy5odG1sIj5EZXBlbmRlbmNpZXM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiPkJ1aWxkIEluc3RydWN0aW9uczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSlVuaXRUZXN0aW5nLmh0bWwiPkpVbml0IFRlc3Rpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01hbnVhbFRlc3RpbmcuaHRtbCI+TWFudWFsIFRlc3Rpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1JlbGVhc2VHdWlkZS5odG1sIj5SZWxlYXNlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9XZWJzaXRlR3VpZGUuaHRtbCI+V2Vic2l0ZSBHdWlkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjSW50ZWdyYXRpb24iPkludGVncmF0aW9uPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Tb2FwUmVzdEFQSS5odG1sIj5TT0FQL1JFU1QgQVBJPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZXN0QVBJU2FtcGxlLmh0bWwiPlJFU1QgQVBJIFNhbXBsZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTGRhcEFuZEFEUy5odG1sIj5MZGFwIGFuZCBBRFM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiPlZvSVAgYW5kIFNJUDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vRXJyb3JzVGFibGUuaHRtbCI+RXJyb3JzIHRhYmxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNQbHVnaW5zIj5QbHVnaW5zPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Nb29kbGVQbHVnaW4uaHRtbCI+TW9vZGxlIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU2FrYWlQbHVnaW4uaHRtbCI+U2FrYWkgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KaXJhUGx1Z2luLmh0bWwiPkppcmEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Kb29tbGFQbHVnaW4uaHRtbCI+Sm9vbWxhIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vRHJ1cGFsUGx1Z2luLmh0bWwiPkRydXBhbCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0JpdHJpeFBsdWdpbi5odG1sIj5CaXRyaXggUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiPkNvbmZsdWVuY2UgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TdWdhckNSTVBsdWdpbi5odG1sIj5TdWdhckNSTSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1JlZG1pbmVQbHVnaW4uaHRtbCI+UmVkbWluZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0NvbmZpZ3VyYXRpb24iPkNvbmZpZ3VyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkRCIFNhbXBsZSBDb25maWd1cmF0aW9uczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiPkFwYWNoZSBEZXJieTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSUJNREIyQ29uZmlnLmh0bWwiPklCTSBEQjI8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL09yYWNsZUNvbmZpZy5odG1sIj5PcmFjbGU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL015U1FMQ29uZmlnLmh0bWwiPk15U1FMPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIj5Qb3N0Z3JlczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TG9jYWxpemF0aW9uIGFuZCBsYW5ndWFnZXM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIj5JbnRlcm5hdGlvbmFsaXNhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTGFuZ3VhZ2VFZGl0b3IuaHRtbCI+TGFuZ3VhZ2VFZGl0b3I8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1RpbWVab25lSGFuZGxpbmcuaHRtbCI+VGltZVpvbmVIYW5kbGluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRWRpdFRlbXBsYXRlcy5odG1sIj5FZGl0VGVtcGxhdGVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5OQVQgUG9ydCBTZXR0aW5nczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1BvcnRTZXR0aW5ncy5odG1sIj5Qb3J0IHNldHRpbmdzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5QZXJmb3JtYW5jZTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiPkpWTSBwZXJmb3JtYW5jZSB0dW5pbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlVzZXIgSW50ZXJmYWNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIj5UaGVtZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0Rhc2hib2FyZC5odG1sIj5EYXNoYm9hcmQ8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiPldlYmNhbSByZXNvbHV0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiPlJvb20gbGF5b3V0IG9wdGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0hvdEtleXMuaHRtbCI+SG90IEtleXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkN1c3RvbWl6YXRpb248L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9XZWJhcHBOYW1lUGF0aC5odG1sIj5XZWJhcHAgbmFtZS9wYXRoPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9OYXZpZ2F0aW9uLmh0bWwiPk5hdmlnYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCI+Q2FsZW5kYXIgYW5kIHRpbWV6b25lPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiPkN1c3RvbSByb29tIHR5cGU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiPkN1c3RvbSBjdHlwdCBtZWNoYW5pc208L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiPkdlbmVyYWwgQ29uZmlndXJhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+U2VjdXJpdHk8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiPlJlc3RyaWN0ZWQgQWNjZXNzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9SVE1QU0FuZEhUVFBTLmh0bWwiPlJUTVBTIGFuZCBIVFRQUzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q29udmVydGVyczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCI+T3Blbk9mZmljZSBDb252ZXJ0ZXI8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCI+RkZNUEVHIFZlcnNpb24gU3dpdGNoPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5DbHVzdGVyaW5nPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2x1c3RlcmluZy5odG1sIj5DbHVzdGVyaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5NaXNjPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2V0VmVyc2lvbkluZm8uaHRtbCI+R2V0IHZlcnNpb24gaW5mbzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCisgICAgPC9kaXY+CisgICAgIAorICAgIDxici8+CisgICAgCisgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODAlIiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkID48IS0tIGJnY29sb3I9IiNFRUVFRUUiIC0tPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0idmVyZGFuYSxhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IldoeSBjcmVhdGluZyBhIGN1c3RvbSByb29tIHR5cGUgaW4gT3Blbk1lZXRpbmdzIj48c3Ryb25nPldoeSBjcmVhdGluZyBhIGN1c3RvbSByb29tIHR5cGUgaW4gT3Blbk1lZXRpbmdzPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5JZiB5b3Ugd2FudCB0byBjcmVhdGUgeW91ciBvd24gc3R5bGVkIHJvb20gdGhlIGJlc3QgdGhpbmcgdG8gZG8gaW4gDQorICAgICAgICAgICAgb3JkZXIgdG8gYmUgInVwZGF0ZS1zYXZlIiBpcyB0byBjcmVhdGUgeW91ciBvd24gY3VzdG9tIHJvb20gdHlwZS4gVGhlcmUgaXMgYW4gZW1wdHkgY29uZmlndXJhdGlvbiANCisJCQkJYnkgZGVmYXVsdCBzaGlwcGVkIHdpdGggZXZlcnkgcmVsZWFzZSBvZiBPcGVuTWVldGluZ3MsIHRoZSByb29tIHR5cGUgImN1c3RvbSIgKElEID0gNSkuPGJyIC8+DQorCQkJCTxiciAvPg0KKyAgICAgICAgICAgIFlvdSBjYW4gdXNlIHRoYXQgYW5kIGV4dGVuZCBpdCwgb3IgeW91IGNhbiBhZGQgbW9yZSByb29tIHR5cGVzIHRvIGZpdCB5b3VyIHVzZSBjYXNlLg0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIC8+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJDcmVhdGUgeW91ciBvd24gcm9vbSB0eXBlIGNsYXNzIChVc2VyIEludGVyZmFjZSkiPjxzdHJvbmc+Q3JlYXRlIHlvdXIgb3duIHJvb20gdHlwZSBjbGFzcyAoVXNlciBJbnRlcmZhY2UpPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5MZXRzIHN0YXJ0IGJ5IGNyZWF0aW5nIHlvdXIgY3VzdG9tIHJvb20gdHlwZSBjbGFzcy4NCisJCQkJPGJyIC8+DQorCQkJCQlZb3UgY291bGQgZm9yIGV4YW1wbGUgZHVwbGljYXRlIGFuIGV4aXN0aW5nIHJvb20gY2xhc3MsIGZyb20gPGJyIC8+DQorCQkJCQk8dHQ+c3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tPC90dD4gZm9sZGVyLCBmb3IgZXhhbXBsZSB0aGUgDQorCQkJZmxleGlibGVDb25mZXJlbmNlUm9vbS5seng6IEdlbmVyYXRlIGEgZHVwbGljYXRlLCBjaGFuZ2UgdGhlIG5hbWUsIGZvciBleGFtcGxlIHRvIA0KKwkJCW15Q3VzdG9tQ29uZmVyZW5jZVJvb20ubHp4IGFuZCBlZGl0IHRoZSBjbGFzcyBuYW1lIGluc2lkZSB0aGUgZmlsZSBuYW1lPSJmbGV4aWJsZUNvbmZlcmVuY2VSb29tIiB0bw0KKwkJCW5hbWU9Im15Q3VzdG9tQ29uZmVyZW5jZVJvb20iLiBBbHNvIGRvbid0IG1pc3MgdG8gYWRkIGFuIGVudHJ5IHRvIGxpYnJhcnkubHp4IHNvIHRoYXQgdGhlIGNvbXBpbGVyIA0KKwkJCXdpbGwgZmluZCB5b3VyIG5ldyBjbGFzcy4NCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJDcmVhdGUgbmVzc2VjY2FyeSBlbnRyaWVzIGluIGNvbmZpZ3VyYXRpb24gdGFibGVzIj48c3Ryb25nPkNyZWF0ZSBuZXNzZWNjYXJ5IGVudHJpZXMgaW4gY29uZmlndXJhdGlvbiB0YWJsZXM8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPllvdSBmaXJzdCBuZWVkIHRvIGNyZWF0ZSBhIG51bWJlciBvZiBjb25maWd1cmF0aW9uIGZpbGVzIDwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4NCisJCQkJPGxpPlRvIGhhdmUgeW91ciByb29tdHlwZSBhdmFpbGFibGUgZXZlcnl0aW1lIHlvdSBpbnN0YWxsIE9wZW5NZWV0aW5ncyB5b3UgbmVlZCB0byBhZGQgDQorCQkJCQlpdCB0byB0aGUgZGVmYXVsdCByb29tczogPHR0PkltcG9ydEluaXR2YWx1ZXMuamF2YSBNZXRob2Q6IGxvYWREZWZhdWx0Um9vbXMoKTwvdHQ+LiBBZGQgeW91ciBlbnRyeSBoZXJlLiANCisJCQkJWW91IGNhbiBjaG9vc2UgYW55IHJhbmRvbSBuYW1lIGZvciB0aGUgcm9vbS4gVGhlIElEIGlzIHRoZSBpbXBvcnRhbnQgdHJpZ2dlciBmb3IgdGhlIHJvb20gdHlwZSANCisJCQkJdG8gaWRlbnRpZnkgbGF0ZXIuIFlvdSBuZWVkIHRvIHJ1biB0aGUgaW5zdGFsbGVyIHNvIHRoYXQgeW91ciBuZXcgcm9vbSB0eXBlIGlzIGluIHRoZSBkYXRhYmFzZS48L2xpPg0KKwkJCQkNCisJCQkJPGxpPkFkZCB5b3VyIHJvb20gdHlwZSBpbiB0aGUgZGVmYXVsdCBtb2R1bGUgY29uZmlndXJhdGlvbjogDQorCQkJCQk8dHQ+c3JjL2Jhc2UvbW9kdWxlQ29uZmlndXJhdGlvbi5seng8L3R0PiwgDQorCQkJCWhlcmUgeW91IG5lZWQgdG8gYWRkIGEgZGVmYXVsdCBjbGFzcyBuYW1lIGZvciB5b3VyIHJvb20gdHlwZSA8L2xpPg0KKwkJCQkNCisJCQkJPGxpPkFkZCB5b3VyIHJvb20gdHlwZSBpbiB0aGUgcmVhbCBjb25maWd1cmF0aW9uOiBjb25maWcueG1sLCBhZGQgYSBuZXcgZW50cnkuDQorCQkJCQk8YnIgLz4NCisJCQkJCVlvdSBzaG91bGQgZml4IGFsc28gdGhlIGZpbGUgPHR0Pm9wZW5tZWV0aW5ncy1jb25maWcueHNkPC90dD4gdGhhdCBpcyB0aGUgU2NoZW1hIGZpbGUgZm9yIHRoZSBjb25maWcueG1sLg0KKwkJCQk8L2xpPg0KKyAgICAgICAgCQkNCisJCQkJPGxpPkFkZCBhIHBhcnNlciBlbnRyeSB0byBtb2RpZnkgdGhlIHJvb20gdHlwZSBtYXBwaW5nOiANCisJCQkJCTx0dD5iYXNlL21haW5NZXRob2RzLmx6eCBtZXRob2Q6IG15aW5pdDwvdHQ+LiBZb3UgDQorICAgICAgICAJCWNhbiBzZWUgc29tZSBleGFtcGxlIHBhcnNpbmcsIHlvdSBzaG91bGQgYWRkIHlvdXIgb25lIHNpbWlsYXIgdG8gdGhlIGV4aXN0aW5nIHJvb20gdHlwZXMuPC9saT4NCisgICAgICAgIAkJDQorCQkJPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkID48IS0tIGJnY29sb3I9IiNFRUVFRUUiIC0tPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0idmVyZGFuYSxhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IkxpbmsgeW91ciByb29tIHR5cGUgY29uZmlnIHdpdGggeW91ciByb29tIHR5cGUgY2xhc3MgIj48c3Ryb25nPkxpbmsgeW91ciByb29tIHR5cGUgY29uZmlnIHdpdGggeW91ciByb29tIHR5cGUgY2xhc3MgPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5Ob3cgeW91IG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgZXZlcnl0aW1lIHRoZSBjb25mZXJlbmNlIHJvb20gaXMgY3JlYXRlZCANCisJCQl5b3VyIG5ldyBjbGFzcyAibXlDdXN0b21Db25mZXJlbmNlUm9vbSIgaXMgdXNlZC4gVGhlcmUgYXJlIDMgcGxhY2VzIHlvdSBuZWVkIHRvIGFkZCB5b3VyIG1hcHBpbmcuPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPg0KKwkJCQk8bGk+SW4gdGhlIGdsb2JhbCBtYXBwaW5nOiANCisJCQkJCTx0dD5iYXNlL21haW5NZXRob2RzLmx6eCBtZXRob2QgbmFtZT0ic2V0Um9vbVZhbHVlcyI8L3R0PiANCisJCQkJPC9saT4NCisJCQkJPGxpPkluIGZpbGU6IA0KKwkJCQkJPHR0Pm1vZHVsZXMvY29uZmVyZW5jZS9jb25mZXJlbmNlL3Jvb21MaXN0SXRlbS5senggbWV0aG9kIG5hbWU9ImluaXRSb29tIjwvdHQ+IA0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+SW4gZmlsZTogDQorCQkJCQk8dHQ+bW9kdWxlcy9pbnZpdGF0aW9uL2F1dG9sb2FkZXJCYXJPbmx5Lmx6eCBuZXRSZW1vdGVDYWxsSGliIG5hbWU9InNldFVzZXJuYW1lQW5kU2Vzc2lvbiI8L3R0PiANCisJCQkJPC9saT4NCisJCQk8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+VGhhdHMgaXQuIFlvdSBjYW4gYWRkL2VkaXQvZGVsZXRlIHlvdXIgcm9vbSB3aXRoIHRoZSBuZXcgcm9vbSB0eXBlIGluIHRoZSBBZG1pbmlzdHJhdGlvbiAmZ3Q7IFJvb21zIGludGVyZmFjZSBvZiANCisJCQlPcGVuTWVldGluZ3MgbGlrZSBhbnkgb3RoZXIgcm9vbS48L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5JZiB5b3UgbmVlZCB0byBoYXZlIHRoaXMgcm9vbSB0eXBlIGF2YWlsYWJsZSBhcyBvcHRpb24gaW4gdGhlIENhbGVuZGFyIFVJLCB5b3UgbmVlZCB0byBhZGQgaXQgdG8gdGhlIGNvbWJvYm94IG1hbnVhbGx5LjwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPCEtLSBGT09URVIgLS0+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGhyIG5vc2hhZGU9Im5vc2hhZGUiIHNpemU9IjEiLz4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBhbGlnbj0iY2VudGVyIj48Zm9udCBjb2xvcj0iIzEyMzQ2NSIgc2l6ZT0iLTEiPjxlbT4KKyAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0ICYjMTY5OyAyMDAzLTIwMTMsIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorICAgICAgICAgICAgICAgICAgICA8L2VtPjwvZm9udD48L2Rpdj4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9ib2R5PgorICAgIDwvaHRtbD4KKzwhLS0gZW5kIHRoZSBwcm9jZXNzaW5nIC0tPgorCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCmRpZmYgLS1naXQgYS9kb2NzL0Rhc2hib2FyZC5odG1sIGIvZG9jcy9EYXNoYm9hcmQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjIwZDFmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9EYXNoYm9hcmQuaHRtbApAQCAtMCwwICsxLDc4MSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CisKKzwhLS0KK0NvcHlyaWdodCAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK3lvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCitodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworCis8IS0tIENvbnRlbnQgU3R5bGVzaGVldCBmb3IgU2l0ZSAtLT4KKworICAgICAgICAKKzwhLS0gc3RhcnQgdGhlIHByb2Nlc3NpbmcgLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDwhLS0gR0VORVJBVEVEIEZJTEUsIERPIE5PVCBFRElULCBFRElUIFRIRSBYTUwgRklMRSBJTiB4ZG9jcyBJTlNURUFEISAtLT4KKyAgICA8IS0tIE1haW4gUGFnZSBTZWN0aW9uIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8aHRtbD4KKyAgICAgICAgPGhlYWQ+CisgICAgICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIvPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSIKKwkJCU9wZW5NZWV0aW5ncyBUZWFtCisJCSI+CisgICAgICAgICAgICA8bWV0YSBuYW1lPSJlbWFpbCIgY29udGVudD0ic2ViYXdhZ25lckBhcGFjaGUub3JnIj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICA8dGl0bGU+QXBhY2hlIE9wZW5NZWV0aW5ncyAtIENoYW5naW5nIERhc2hib2FyZDwvdGl0bGU+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3Mvb3Blbm1lZXRpbmdzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvanF1ZXJ5LXVpLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29pbi1zbGlkZXItc3R5bGVzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29sb3Jib3guY3NzIiAvPgorICAgICAgICAgICAgCisJCQk8IS0tIEFkZCBqUXVlcnkgbGlicmFyeSAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS0xLjcuMS5taW4uanMiPjwvc2NyaXB0PgorCQkKKwkJCTwhLS0gQWRkIGNvaW5zbGlkZXIgcGx1Z2lucyAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2NvaW4tc2xpZGVyLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTwhLS0gQWRkIGNvbG9yYm94IHBsdWdpbiAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS5jb2xvcmJveC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5jb3JlLmpzIj48L3NjcmlwdD4KKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkud2lkZ2V0LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmFjY29yZGlvbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQ+CisJCQkkKGZ1bmN0aW9uKCkgeworCQkJCSQoICIjYWNjb3JkaW9uIiApLmFjY29yZGlvbih7CisJCQkJCWF1dG9IZWlnaHQ6IGZhbHNlLAorCQkJCQluYXZpZ2F0aW9uOiB0cnVlLAorCQkJCQluYXZpZ2F0aW9uRmlsdGVyOiBmdW5jdGlvbiAoKSB7CisJCQkJCQl2YXIgc2lkZWJhckhyZWZBcnJheSA9IHRoaXMuaHJlZi5zcGxpdCgiLyIpOworICAgIAkJCQkJdmFyIHNpZGVCYXJMYXN0U3RyaW5nID0gc2lkZWJhckhyZWZBcnJheVtzaWRlYmFySHJlZkFycmF5Lmxlbmd0aCAtIDFdLnRvTG93ZXJDYXNlKCk7CisJCQkJCQkKKwkJCQkJCWlmIChzaWRlQmFyTGFzdFN0cmluZy5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJCQl9CisJCQkJCQkKKwkJCQkJCQkJCQkJCS8qIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgKi8KKwkJCQkJCXZhciBjdXJyZW50U2VjdGlvbiA9ICIiOworCQkJCQkJCisJCQkJCQl2YXIgY3VycmVudExvY2F0aW9uID0gIiI7CisJCQkJCQl2YXIgY3VycmVudExpbmsgPSAiIjsKKwkJCQkJCWlmIChmYWxzZSkgeworCQkJCQkJCisJCQkJCQl9CisgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luZGV4Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luZGV4Lmh0bWwiLnN1YnN0cigxLCAiL2luZGV4Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbGljZW5zZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9saWNlbnNlLmh0bWwiLnN1YnN0cigxLCAiL2xpY2Vuc2UuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIuc3Vic3RyKDEsICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2Rvd25sb2Fkcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kb3dubG9hZHMuaHRtbCIuc3Vic3RyKDEsICIvZG93bmxvYWRzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5zdWJzdHIoMSwgIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5zdGFsbGF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luc3RhbGxhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9pbnN0YWxsYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9VcGdyYWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1VwZ3JhZGUuaHRtbCIuc3Vic3RyKDEsICIvVXBncmFkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLnN1YnN0cigxLCAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29tbWFuZExpbmVBZG1pbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLnN1YnN0cigxLCAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZ2V0LWludm9sdmVkLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZ2V0LWludm9sdmVkLmh0bWwiLnN1YnN0cigxLCAiL2dldC1pbnZvbHZlZC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RlYW0tbGlzdC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3RlYW0tbGlzdC5odG1sIi5zdWJzdHIoMSwgIi90ZWFtLWxpc3QuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9tYWlsLWxpc3RzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbWFpbC1saXN0cy5odG1sIi5zdWJzdHIoMSwgIi9tYWlsLWxpc3RzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5zdWJzdHIoMSwgImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9zdm4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3N2bi5odG1sIi5zdWJzdHIoMSwgIi9zdm4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLnN1YnN0cigxLCAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kZXBlbmRlbmNpZXMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2RlcGVuZGVuY2llcy5odG1sIi5zdWJzdHIoMSwgIi9kZXBlbmRlbmNpZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVW5pdFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pVbml0VGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9KVW5pdFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NYW51YWxUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9NYW51YWxUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL01hbnVhbFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWxlYXNlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlbGVhc2VHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9SZWxlYXNlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJzaXRlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1dlYnNpdGVHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9XZWJzaXRlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU29hcFJlc3RBUEkuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1NvYXBSZXN0QVBJLmh0bWwiLnN1YnN0cigxLCAiL1NvYXBSZXN0QVBJLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdEFQSVNhbXBsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVzdEFQSVNhbXBsZS5odG1sIi5zdWJzdHIoMSwgIi9SZXN0QVBJU2FtcGxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGRhcEFuZEFEUy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTGRhcEFuZEFEUy5odG1sIi5zdWJzdHIoMSwgIi9MZGFwQW5kQURTLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRXJyb3JzVGFibGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0Vycm9yc1RhYmxlLmh0bWwiLnN1YnN0cigxLCAiL0Vycm9yc1RhYmxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01vb2RsZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Nb29kbGVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvTW9vZGxlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU2FrYWlQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU2FrYWlQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU2FrYWlQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KaXJhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0ppcmFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSmlyYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pvb21sYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Kb29tbGFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSm9vbWxhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRHJ1cGFsUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0RydXBhbFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9EcnVwYWxQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CaXRyaXhQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQml0cml4UGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0JpdHJpeFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU3VnYXJDUk1QbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWRtaW5lUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlZG1pbmVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvUmVkbWluZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0lCTURCMkNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0lCTURCMkNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9JQk1EQjJDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09yYWNsZUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09yYWNsZUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9PcmFjbGVDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL015U1FMQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTXlTUUxDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvTXlTUUxDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Bvc3RncmVzQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9zdGdyZXNDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvUG9zdGdyZXNDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9MYW5ndWFnZUVkaXRvci5odG1sIi5zdWJzdHIoMSwgIi9MYW5ndWFnZUVkaXRvci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVGltZVpvbmVIYW5kbGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIuc3Vic3RyKDEsICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRWRpdFRlbXBsYXRlcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIuc3Vic3RyKDEsICIvRWRpdFRlbXBsYXRlcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3J0U2V0dGluZ3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3J0U2V0dGluZ3MuaHRtbCIuc3Vic3RyKDEsICIvUG9ydFNldHRpbmdzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIuc3Vic3RyKDEsICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIuc3Vic3RyKDEsICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRGFzaGJvYXJkLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRGFzaGJvYXJkLmh0bWwiLnN1YnN0cigxLCAiL0Rhc2hib2FyZC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSG90S2V5cy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0hvdEtleXMuaHRtbCIuc3Vic3RyKDEsICIvSG90S2V5cy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJhcHBOYW1lUGF0aC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLnN1YnN0cigxLCAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9OYXZpZ2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTmF2aWdhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9OYXZpZ2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5zdWJzdHIoMSwgIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JUTVBTQW5kSFRUUFMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SVE1QU0FuZEhUVFBTLmh0bWwiLnN1YnN0cigxLCAiL1JUTVBTQW5kSFRUUFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIuc3Vic3RyKDEsICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIuc3Vic3RyKDEsICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DbHVzdGVyaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2x1c3RlcmluZy5odG1sIi5zdWJzdHIoMSwgIi9DbHVzdGVyaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dldFZlcnNpb25JbmZvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2V0VmVyc2lvbkluZm8uaHRtbCIuc3Vic3RyKDEsICIvR2V0VmVyc2lvbkluZm8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJICAgIAkJCQkJCisgICAgCQkJCQljdXJyZW50TGluayA9IGN1cnJlbnRMaW5rLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQljdXJyZW50TG9jYXRpb24gPSBjdXJyZW50TG9jYXRpb24udG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCQorCQkJCQkJcmV0dXJuIHNpZGVCYXJMYXN0U3RyaW5nID09IGN1cnJlbnRMaW5rKyIjIitjdXJyZW50TG9jYXRpb247CisJCQkJCX0KKwkJCQl9KTsKKwkJCX0pOworCQkJPC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwkJCQkkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsKKwkJCQkJJCgnLmZhbmN5Ym94LWJ1dHRvbnMnKS5jb2xvcmJveCh7cmVsOidmYW5jeWJveC1idXR0b25zJyx3aWR0aDoiNzUlIiwgaGVpZ2h0OiI3NSUifSk7CisJCQkJCSQoJyNhY2NvcmRpb24gYScpLmVhY2goZnVuY3Rpb24oKSB7CisJCQkJICAgICAgdmFyIGEgPSAkKHRoaXMpOworCQkJCSAgICAgIHZhciBocmVmID0gYS5hdHRyKCJocmVmIik7CisJCQkJICAgICAgaWYgKGhyZWYuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJICAgICAgCSAgdmFyIGNvbXBhcmVJdCA9IGhyZWYuc3Vic3RyKDIsIGhyZWYubGVuZ3RoKTsKKwkJCQkJICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZihjb21wYXJlSXQpIT0gLTEpIHsKKwkJCQkJICAgICAgIGEuYWRkQ2xhc3MoJ2FjdGl2ZScpOworCQkJCQkgICAgICB9CisJCQkJICAgICAgfQorCQkJCSAgICB9KTsKKwkJCQkJJCgnI2NvaW4tc2xpZGVyJykuY29pbnNsaWRlcih7IHdpZHRoOiA2NDAsaGVpZ2h0OiA0MDAsIGRlbGF5OiA0MDAwICB9KTsJCQkJCQorCQkJCX0pOworCQkJPC9zY3JpcHQ+CQorCQkJCQkJCisJCQk8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorCQkJCS5mYW5jeWJveC1jdXN0b20gLmZhbmN5Ym94LW91dGVyIHsKKwkJCQkJYm94LXNoYWRvdzogMCAwIDUwcHggIzIyMjsKKwkJCQl9CisJCQk8L3N0eWxlPgorICAgICAgICA8L2hlYWQ+CisKKyAgICAgICAgPGJvZHkgYmdjb2xvcj0iI2ZmZmZmZiIgdGV4dD0iIzAwMDAwMCIgbGluaz0iIzEyMzQ2NSIgdmxpbms9IiMxMjM0NjUiIGFsaW5rPSIjMDAwMDAwIj4gIAorICAgICAgICAJPGRpdiBjbGFzcz0ibWFpbmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAJPGRpdiBjbGFzcz0ic3VwZXJib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCI+CisgICAgICAgICAgICAgICAgPCEtLSBUT1AgSU1BR0UgLS0+CisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPgorPGEgaHJlZj0iaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnLyI+PGltZyBzcmM9Ii4vaW1hZ2VzL2xvZ28tMi5qcGciIGFsdD0iQXBhY2hlIE9wZW5NZWV0aW5ncyIgYm9yZGVyPSIwIi8+PC9hPgorPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiID4KKwk8YSBocmVmPSJkZW1vLmh0bWwiPkRlbW88L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iZG93bmxvYWRzLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+RG93bmxvYWQ8L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaW5zdGFsbGF0aW9uLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+SW5zdGFsbGF0aW9uPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTIiB0YXJnZXQ9Il9CTEFOSyI+V2lraTwvYT4KKwk8c3Bhbj4mbmJzcDs8L3NwYW4+Cis8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSI0Ij4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPCEtLSBMRUZUIFNJREUgTkFWSUdBVElPTiAtLT4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIiBub3dyYXA9Im5vd3JhcCI+CisKKyAgICAgICAgICAgICAgICAgICAgPCEtLSBzcGVjaWFsIEFDb24gTG9nbyAtIGxlYXZlIGhlcmUgZm9yIG5leHQgdGltZQorICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vYXBhY2hlY29uLmNvbS8yMDA1L1VTLyI+CisgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2FwYWNoZS5vcmcvaW1hZ2VzL2FjMjAwNXVzX2JsdWVfMTI1eDEyNS5qcGciIGhlaWdodD0iMTI1IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTI1IiBib3JkZXI9IjAiIGFsdD0iQXBhY2hlQ29uIFVTIDIwMDUiIC8+CisgICAgICAgICAgICAgICAgICAgIDwvYT4gIC0tPgorCisgICAgICAgICAgICAgICAgICAgPCEtLSByZWd1bGFyIG1lbnUgLS0+CisKKyAgICAgICAgICAgICAgICAgICAgCisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGRpdiBpZD0iYWNjb3JkaW9uIiBzdHlsZT0id2lkdGg6IDEwMCUiPgorICAgIAorICAgICAgICAgICAgCTxoMz48YSBocmVmPSIjR2VuZXJhbCI+R2VuZXJhbDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5kZXguaHRtbCI+SG9tZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbGljZW5zZS5odG1sIj5MaWNlbnNlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyI+QVNGPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kb3dubG9hZHMuaHRtbCI+RG93bmxvYWRzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCI+Q29tbWVyY2lhbCBTdXBwb3J0PC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnN0YWxsYXRpb25hbmRVcGdyYWRlIj5JbnN0YWxsYXRpb24gYW5kIFVwZ3JhZGU8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luc3RhbGxhdGlvbi5odG1sIj5JbnN0YWxsYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1VwZ3JhZGUuaHRtbCI+VXBncmFkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii5odHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyI+VHV0b3JpYWxzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db21tYW5kTGluZUFkbWluLmh0bWwiPkNvbW1hbmQgTGluZSBBZG1pbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29tbXVuaXR5Ij5Db21tdW5pdHk8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2dldC1pbnZvbHZlZC5odG1sIj5HZXQgSW52b2x2ZWQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3RlYW0tbGlzdC5odG1sIj5Db21taXR0ZXJzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9tYWlsLWxpc3RzLmh0bWwiPk1haWxpbmcgTGlzdHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyI+V2lraTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjRGV2ZWxvcG1lbnQiPkRldmVsb3BtZW50PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9zdm4uaHRtbCI+U291cmNlIENvZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIj5CdWdzIC8gSXNzdWVzIChKSVJBKTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZGVwZW5kZW5jaWVzLmh0bWwiPkRlcGVuZGVuY2llczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCI+QnVpbGQgSW5zdHJ1Y3Rpb25zPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KVW5pdFRlc3RpbmcuaHRtbCI+SlVuaXQgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTWFudWFsVGVzdGluZy5odG1sIj5NYW51YWwgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVsZWFzZUd1aWRlLmh0bWwiPlJlbGVhc2UgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1dlYnNpdGVHdWlkZS5odG1sIj5XZWJzaXRlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnRlZ3JhdGlvbiI+SW50ZWdyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1NvYXBSZXN0QVBJLmh0bWwiPlNPQVAvUkVTVCBBUEk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Jlc3RBUElTYW1wbGUuaHRtbCI+UkVTVCBBUEkgU2FtcGxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9MZGFwQW5kQURTLmh0bWwiPkxkYXAgYW5kIEFEUzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCI+Vm9JUCBhbmQgU0lQPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9FcnJvcnNUYWJsZS5odG1sIj5FcnJvcnMgdGFibGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI1BsdWdpbnMiPlBsdWdpbnM8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01vb2RsZVBsdWdpbi5odG1sIj5Nb29kbGUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TYWthaVBsdWdpbi5odG1sIj5TYWthaSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0ppcmFQbHVnaW4uaHRtbCI+SmlyYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pvb21sYVBsdWdpbi5odG1sIj5Kb29tbGEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9EcnVwYWxQbHVnaW4uaHRtbCI+RHJ1cGFsIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQml0cml4UGx1Z2luLmh0bWwiPkJpdHJpeCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCI+Q29uZmx1ZW5jZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiPlN1Z2FyQ1JNIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVkbWluZVBsdWdpbi5odG1sIj5SZWRtaW5lIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29uZmlndXJhdGlvbiI+Q29uZmlndXJhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+REIgU2FtcGxlIENvbmZpZ3VyYXRpb25zPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQXBhY2hlRGVyYnlDb25maWcuaHRtbCI+QXBhY2hlIERlcmJ5PC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JQk1EQjJDb25maWcuaHRtbCI+SUJNIERCMjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3JhY2xlQ29uZmlnLmh0bWwiPk9yYWNsZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTXlTUUxDb25maWcuaHRtbCI+TXlTUUw8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Bvc3RncmVzQ29uZmlnLmh0bWwiPlBvc3RncmVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Mb2NhbGl6YXRpb24gYW5kIGxhbmd1YWdlczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiPkludGVybmF0aW9uYWxpc2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9MYW5ndWFnZUVkaXRvci5odG1sIj5MYW5ndWFnZUVkaXRvcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vVGltZVpvbmVIYW5kbGluZy5odG1sIj5UaW1lWm9uZUhhbmRsaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9FZGl0VGVtcGxhdGVzLmh0bWwiPkVkaXRUZW1wbGF0ZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk5BVCBQb3J0IFNldHRpbmdzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9ydFNldHRpbmdzLmh0bWwiPlBvcnQgc2V0dGluZ3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlBlcmZvcm1hbmNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCI+SlZNIHBlcmZvcm1hbmNlIHR1bmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+VXNlciBJbnRlcmZhY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiPlRoZW1lczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRGFzaGJvYXJkLmh0bWwiPkRhc2hib2FyZDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCI+V2ViY2FtIHJlc29sdXRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCI+Um9vbSBsYXlvdXQgb3B0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSG90S2V5cy5odG1sIj5Ib3QgS2V5czwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q3VzdG9taXphdGlvbjwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmFwcE5hbWVQYXRoLmh0bWwiPldlYmFwcCBuYW1lL3BhdGg8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL05hdmlnYXRpb24uaHRtbCI+TmF2aWdhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIj5DYWxlbmRhciBhbmQgdGltZXpvbmU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCI+Q3VzdG9tIHJvb20gdHlwZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCI+Q3VzdG9tIGN0eXB0IG1lY2hhbmlzbTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCI+R2VuZXJhbCBDb25maWd1cmF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5TZWN1cml0eTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCI+UmVzdHJpY3RlZCBBY2Nlc3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1JUTVBTQW5kSFRUUFMuaHRtbCI+UlRNUFMgYW5kIEhUVFBTPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Db252ZXJ0ZXJzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIj5PcGVuT2ZmaWNlIENvbnZlcnRlcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIj5GRk1QRUcgVmVyc2lvbiBTd2l0Y2g8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNsdXN0ZXJpbmc8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DbHVzdGVyaW5nLmh0bWwiPkNsdXN0ZXJpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk1pc2M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZXRWZXJzaW9uSW5mby5odG1sIj5HZXQgdmVyc2lvbiBpbmZvPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAKKyAgICA8L2Rpdj4KKyAgICAgCisgICAgPGJyLz4KKyAgICAKKyAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iQ2hhbmdpbmcgRGFzaGJvYXJkIj48c3Ryb25nPkNoYW5naW5nIERhc2hib2FyZDwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgICA8aHIgc3R5bGU9IndpZHRoOjEwMCU7IGNvbG9yOiM5OTk5OTk7IGJhY2tncm91bmQtY29sb3I6Izk5OTk5OTsgaGVpZ2h0OjFweDsgYm9yZGVyOjBweDsiLz4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WW91IGNhbiBjb25maWd1cmUgdGhlIHRhYnMgdGhhdCBhcmUgdmlzaWJsZSBieSBkZWZhdWx0IGF0IGJvdHRvbQ0KKwkJCQlvZiB0aGUgZGFzaGJvYXJkLiBUbyBlZGl0IHRoZSBzZXR0aW5ncywgbG9naW4gYXMgYWRtaW4gYW5kIGdvdG8NCisJCQkJQWRtaW5pc3RyYXRpb24gJmd0OyBDb25maWd1cmF0aW9uIDwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIC8+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGggYmdjb2xvcj0iIzAzOWFjYyIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICBDb25maWcta2V5IAorICAgIDwvdGg+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBiZ2NvbG9yPSIjMDM5YWNjIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgIFZhbHVlcyAKKyAgICA8L3RoPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggYmdjb2xvcj0iIzAzOWFjYyIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICBNZWFuaW5nIAorICAgIDwvdGg+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICBkZWZhdWx0LmRhc2hib2FyZC50YWIgCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgMCwxLDIgCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgV2hpY2ggdGFiIHNob3VsZCBiZSBzaG93biBieSBkZWZhdWx0LCBjb3VudGluZw0KKwkJCQkJCXN0YXJ0cyB3aXRoIDANCisJCQkJCQorICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICBkYXNoYm9hcmQuc2hvdy5teXJvb21zIAorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgIDAgb3IgMSAKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICBJZiB0aGUgTXlSb29tcyB0YWIgc2hvdWxkIGJlIHZpc2libGUgb3Igbm90IAorICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICBkYXNoYm9hcmQuc2hvdy5jaGF0IAorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgIDAgb3IgMSAKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICBJZiB0aGUgQ2hhdCB0YWIgc2hvdWxkIGJlIHZpc2libGUgb3Igbm90IAorICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICBkYXNoYm9hcmQuc2hvdy5yc3NmZWVkIAorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgIDAgb3IgMSAKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICBJZiB0aGUgUlNTLUZlZWQgdGFiIHNob3VsZCBiZSB2aXNpYmxlIG9yIG5vdCAKKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgcnNzX2ZlZWQxIAorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgIGh0dHAtVVJMIAorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgIEFUT00tRmVlZCBVUkwgZm9yIHRoZSBkYXNoYm9hcmQgUlNTIFRhYiAKKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgcnNzX2ZlZWQyIAorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgIGh0dHAtVVJMIAorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgIEFUT00tRmVlZCBVUkwgZm9yIHRoZSBkYXNoYm9hcmQgUlNTIFRhYiAKKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCAvPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+Q2hhbmdlcyBhcmUgaW1tZWRpYXRlbHkgb25saW5lLCBubyBuZWVkIHRvIHJlc3RhcnQgYW55dGhpbmcuIDwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPCEtLSBGT09URVIgLS0+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGhyIG5vc2hhZGU9Im5vc2hhZGUiIHNpemU9IjEiLz4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBhbGlnbj0iY2VudGVyIj48Zm9udCBjb2xvcj0iIzEyMzQ2NSIgc2l6ZT0iLTEiPjxlbT4KKyAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0ICYjMTY5OyAyMDAzLTIwMTMsIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorICAgICAgICAgICAgICAgICAgICA8L2VtPjwvZm9udD48L2Rpdj4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9ib2R5PgorICAgIDwvaHRtbD4KKzwhLS0gZW5kIHRoZSBwcm9jZXNzaW5nIC0tPgorCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCmRpZmYgLS1naXQgYS9kb2NzL0RydXBhbFBsdWdpbi5odG1sIGIvZG9jcy9EcnVwYWxQbHVnaW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzMwNjlhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9EcnVwYWxQbHVnaW4uaHRtbApAQCAtMCwwICsxLDc1NyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CisKKzwhLS0KK0NvcHlyaWdodCAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK3lvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCitodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworCis8IS0tIENvbnRlbnQgU3R5bGVzaGVldCBmb3IgU2l0ZSAtLT4KKworICAgICAgICAKKzwhLS0gc3RhcnQgdGhlIHByb2Nlc3NpbmcgLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDwhLS0gR0VORVJBVEVEIEZJTEUsIERPIE5PVCBFRElULCBFRElUIFRIRSBYTUwgRklMRSBJTiB4ZG9jcyBJTlNURUFEISAtLT4KKyAgICA8IS0tIE1haW4gUGFnZSBTZWN0aW9uIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8aHRtbD4KKyAgICAgICAgPGhlYWQ+CisgICAgICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIvPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSIKKwkJCU9wZW5NZWV0aW5ncyBUZWFtCisJCSI+CisgICAgICAgICAgICA8bWV0YSBuYW1lPSJlbWFpbCIgY29udGVudD0ic2ViYXdhZ25lckBhcGFjaGUub3JnIj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICA8dGl0bGU+QXBhY2hlIE9wZW5NZWV0aW5ncyAtIERydXBhbCBQbHVnaW48L3RpdGxlPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL29wZW5tZWV0aW5ncy5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2pxdWVyeS11aS5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2NvaW4tc2xpZGVyLXN0eWxlcy5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2NvbG9yYm94LmNzcyIgLz4KKyAgICAgICAgICAgIAorCQkJPCEtLSBBZGQgalF1ZXJ5IGxpYnJhcnkgLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9qcXVlcnktMS43LjEubWluLmpzIj48L3NjcmlwdD4KKwkJCisJCQk8IS0tIEFkZCBjb2luc2xpZGVyIHBsdWdpbnMgLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9jb2luLXNsaWRlci5taW4uanMiPjwvc2NyaXB0PgorCQkJCisJCQk8IS0tIEFkZCBjb2xvcmJveCBwbHVnaW4gLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9qcXVlcnkuY29sb3Jib3guanMiPjwvc2NyaXB0PgorCQkKKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkuY29yZS5qcyI+PC9zY3JpcHQ+CisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLndpZGdldC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5hY2NvcmRpb24uanMiPjwvc2NyaXB0PgorCQkJCisJCQk8c2NyaXB0PgorCQkJJChmdW5jdGlvbigpIHsKKwkJCQkkKCAiI2FjY29yZGlvbiIgKS5hY2NvcmRpb24oeworCQkJCQlhdXRvSGVpZ2h0OiBmYWxzZSwKKwkJCQkJbmF2aWdhdGlvbjogdHJ1ZSwKKwkJCQkJbmF2aWdhdGlvbkZpbHRlcjogZnVuY3Rpb24gKCkgeworCQkJCQkJdmFyIHNpZGViYXJIcmVmQXJyYXkgPSB0aGlzLmhyZWYuc3BsaXQoIi8iKTsKKyAgICAJCQkJCXZhciBzaWRlQmFyTGFzdFN0cmluZyA9IHNpZGViYXJIcmVmQXJyYXlbc2lkZWJhckhyZWZBcnJheS5sZW5ndGggLSAxXS50b0xvd2VyQ2FzZSgpOworCQkJCQkJCisJCQkJCQlpZiAoc2lkZUJhckxhc3RTdHJpbmcuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJCQkJcmV0dXJuIGZhbHNlOworCQkJCQkJfQorCQkJCQkJCisJCQkJCQkJCQkJCQkvKiBkb2N1bWVudC5sb2NhdGlvbi5ocmVmICovCisJCQkJCQl2YXIgY3VycmVudFNlY3Rpb24gPSAiIjsKKwkJCQkJCQorCQkJCQkJdmFyIGN1cnJlbnRMb2NhdGlvbiA9ICIiOworCQkJCQkJdmFyIGN1cnJlbnRMaW5rID0gIiI7CisJCQkJCQlpZiAoZmFsc2UpIHsKKwkJCQkJCQorCQkJCQkJfQorICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9pbmRleC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9pbmRleC5odG1sIi5zdWJzdHIoMSwgIi9pbmRleC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2xpY2Vuc2UuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbGljZW5zZS5odG1sIi5zdWJzdHIoMSwgIi9saWNlbnNlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iLnN1YnN0cigxLCAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kb3dubG9hZHMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZG93bmxvYWRzLmh0bWwiLnN1YnN0cigxLCAiL2Rvd25sb2Fkcy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIuc3Vic3RyKDEsICIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luc3RhbGxhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9pbnN0YWxsYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvaW5zdGFsbGF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVXBncmFkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9VcGdyYWRlLmh0bWwiLnN1YnN0cigxLCAiL1VwZ3JhZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIi5zdWJzdHIoMSwgImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29tbWFuZExpbmVBZG1pbi5odG1sIi5zdWJzdHIoMSwgIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2dldC1pbnZvbHZlZC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2dldC1pbnZvbHZlZC5odG1sIi5zdWJzdHIoMSwgIi9nZXQtaW52b2x2ZWQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi90ZWFtLWxpc3QuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi90ZWFtLWxpc3QuaHRtbCIuc3Vic3RyKDEsICIvdGVhbS1saXN0Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbWFpbC1saXN0cy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL21haWwtbGlzdHMuaHRtbCIuc3Vic3RyKDEsICIvbWFpbC1saXN0cy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIuc3Vic3RyKDEsICJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvc3ZuLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9zdm4uaHRtbCIuc3Vic3RyKDEsICIvc3ZuLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIi5zdWJzdHIoMSwgImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZGVwZW5kZW5jaWVzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kZXBlbmRlbmNpZXMuaHRtbCIuc3Vic3RyKDEsICIvZGVwZW5kZW5jaWVzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiLnN1YnN0cigxLCAiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSlVuaXRUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9KVW5pdFRlc3RpbmcuaHRtbCIuc3Vic3RyKDEsICIvSlVuaXRUZXN0aW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTWFudWFsVGVzdGluZy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTWFudWFsVGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9NYW51YWxUZXN0aW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVsZWFzZUd1aWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZWxlYXNlR3VpZGUuaHRtbCIuc3Vic3RyKDEsICIvUmVsZWFzZUd1aWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2Vic2l0ZUd1aWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9XZWJzaXRlR3VpZGUuaHRtbCIuc3Vic3RyKDEsICIvV2Vic2l0ZUd1aWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1NvYXBSZXN0QVBJLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Tb2FwUmVzdEFQSS5odG1sIi5zdWJzdHIoMSwgIi9Tb2FwUmVzdEFQSS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RBUElTYW1wbGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1Jlc3RBUElTYW1wbGUuaHRtbCIuc3Vic3RyKDEsICIvUmVzdEFQSVNhbXBsZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0xkYXBBbmRBRFMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0xkYXBBbmRBRFMuaHRtbCIuc3Vic3RyKDEsICIvTGRhcEFuZEFEUy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0Vycm9yc1RhYmxlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9FcnJvcnNUYWJsZS5odG1sIi5zdWJzdHIoMSwgIi9FcnJvcnNUYWJsZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Nb29kbGVQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTW9vZGxlUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL01vb2RsZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Nha2FpUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1Nha2FpUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1Nha2FpUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSmlyYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9KaXJhUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0ppcmFQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Kb29tbGFQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSm9vbWxhUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0pvb21sYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0RydXBhbFBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9EcnVwYWxQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvRHJ1cGFsUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQml0cml4UGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0JpdHJpeFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9CaXRyaXhQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVkbWluZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZWRtaW5lUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1JlZG1pbmVQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9JQk1EQjJDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JQk1EQjJDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvSUJNREIyQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9PcmFjbGVDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9PcmFjbGVDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvT3JhY2xlQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NeVNRTENvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL015U1FMQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL015U1FMQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1Bvc3RncmVzQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL1Bvc3RncmVzQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0xhbmd1YWdlRWRpdG9yLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIuc3Vic3RyKDEsICIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiLnN1YnN0cigxLCAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0VkaXRUZW1wbGF0ZXMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9FZGl0VGVtcGxhdGVzLmh0bWwiLnN1YnN0cigxLCAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUG9ydFNldHRpbmdzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9ydFNldHRpbmdzLmh0bWwiLnN1YnN0cigxLCAiL1BvcnRTZXR0aW5ncy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiLnN1YnN0cigxLCAiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiLnN1YnN0cigxLCAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0Rhc2hib2FyZC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0Rhc2hib2FyZC5odG1sIi5zdWJzdHIoMSwgIi9EYXNoYm9hcmQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0hvdEtleXMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Ib3RLZXlzLmh0bWwiLnN1YnN0cigxLCAiL0hvdEtleXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViYXBwTmFtZVBhdGguaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJhcHBOYW1lUGF0aC5odG1sIi5zdWJzdHIoMSwgIi9XZWJhcHBOYW1lUGF0aC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTmF2aWdhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL05hdmlnYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvTmF2aWdhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIuc3Vic3RyKDEsICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIuc3Vic3RyKDEsICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIi5zdWJzdHIoMSwgIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SVE1QU0FuZEhUVFBTLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUlRNUFNBbmRIVFRQUy5odG1sIi5zdWJzdHIoMSwgIi9SVE1QU0FuZEhUVFBTLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiLnN1YnN0cigxLCAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiLnN1YnN0cigxLCAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ2x1c3RlcmluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NsdXN0ZXJpbmcuaHRtbCIuc3Vic3RyKDEsICIvQ2x1c3RlcmluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZXRWZXJzaW9uSW5mby5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dldFZlcnNpb25JbmZvLmh0bWwiLnN1YnN0cigxLCAiL0dldFZlcnNpb25JbmZvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCSAgICAJCQkJCQorICAgIAkJCQkJY3VycmVudExpbmsgPSBjdXJyZW50TGluay50b0xvd2VyQ2FzZSgpOworICAgIAkJCQkJY3VycmVudExvY2F0aW9uID0gY3VycmVudExvY2F0aW9uLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQkKKwkJCQkJCXJldHVybiBzaWRlQmFyTGFzdFN0cmluZyA9PSBjdXJyZW50TGluaysiIyIrY3VycmVudExvY2F0aW9uOworCQkJCQl9CisJCQkJfSk7CisJCQl9KTsKKwkJCTwvc2NyaXB0PgorCQkJCisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisJCQkJJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CisJCQkJCSQoJy5mYW5jeWJveC1idXR0b25zJykuY29sb3Jib3goe3JlbDonZmFuY3lib3gtYnV0dG9ucycsd2lkdGg6Ijc1JSIsIGhlaWdodDoiNzUlIn0pOworCQkJCQkkKCcjYWNjb3JkaW9uIGEnKS5lYWNoKGZ1bmN0aW9uKCkgeworCQkJCSAgICAgIHZhciBhID0gJCh0aGlzKTsKKwkJCQkgICAgICB2YXIgaHJlZiA9IGEuYXR0cigiaHJlZiIpOworCQkJCSAgICAgIGlmIChocmVmLmluZGV4T2YoIiMiKSA9PSAtMSkgeworCQkJCSAgICAgIAkgIHZhciBjb21wYXJlSXQgPSBocmVmLnN1YnN0cigyLCBocmVmLmxlbmd0aCk7CisJCQkJCSAgICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoY29tcGFyZUl0KSE9IC0xKSB7CisJCQkJCSAgICAgICBhLmFkZENsYXNzKCdhY3RpdmUnKTsKKwkJCQkJICAgICAgfQorCQkJCSAgICAgIH0KKwkJCQkgICAgfSk7CisJCQkJCSQoJyNjb2luLXNsaWRlcicpLmNvaW5zbGlkZXIoeyB3aWR0aDogNjQwLGhlaWdodDogNDAwLCBkZWxheTogNDAwMCAgfSk7CQkJCQkKKwkJCQl9KTsKKwkJCTwvc2NyaXB0PgkKKwkJCQkJCQorCQkJPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKwkJCQkuZmFuY3lib3gtY3VzdG9tIC5mYW5jeWJveC1vdXRlciB7CisJCQkJCWJveC1zaGFkb3c6IDAgMCA1MHB4ICMyMjI7CisJCQkJfQorCQkJPC9zdHlsZT4KKyAgICAgICAgPC9oZWFkPgorCisgICAgICAgIDxib2R5IGJnY29sb3I9IiNmZmZmZmYiIHRleHQ9IiMwMDAwMDAiIGxpbms9IiMxMjM0NjUiIHZsaW5rPSIjMTIzNDY1IiBhbGluaz0iIzAwMDAwMCI+ICAKKyAgICAgICAgCTxkaXYgY2xhc3M9Im1haW5ib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgCTxkaXYgY2xhc3M9InN1cGVyYm9keSIgc3R5bGU9IndpZHRoOiAxMDAlOyI+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiPgorICAgICAgICAgICAgICAgIDwhLS0gVE9QIElNQUdFIC0tPgorICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0Ij4KKzxhIGhyZWY9Imh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy8iPjxpbWcgc3JjPSIuL2ltYWdlcy9sb2dvLTIuanBnIiBhbHQ9IkFwYWNoZSBPcGVuTWVldGluZ3MiIGJvcmRlcj0iMCIvPjwvYT4KKzwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODAlIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIiA+CisJPGEgaHJlZj0iZGVtby5odG1sIj5EZW1vPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9ImRvd25sb2Fkcy5odG1sIiB0YXJnZXQ9Il9QQVJFTlQiPkRvd25sb2FkPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imluc3RhbGxhdGlvbi5odG1sIiB0YXJnZXQ9Il9QQVJFTlQiPkluc3RhbGxhdGlvbjwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUyIgdGFyZ2V0PSJfQkxBTksiPldpa2k8L2E+CisJPHNwYW4+Jm5ic3A7PC9zcGFuPgorPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iNCI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGhyIG5vc2hhZGU9Im5vc2hhZGUiIHNpemU9IjEiLz4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDwhLS0gTEVGVCBTSURFIE5BVklHQVRJT04gLS0+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCIgbm93cmFwPSJub3dyYXAiPgorCisgICAgICAgICAgICAgICAgICAgIDwhLS0gc3BlY2lhbCBBQ29uIExvZ28gLSBsZWF2ZSBoZXJlIGZvciBuZXh0IHRpbWUKKyAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL2FwYWNoZWNvbi5jb20vMjAwNS9VUy8iPgorICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHA6Ly9hcGFjaGUub3JnL2ltYWdlcy9hYzIwMDV1c19ibHVlXzEyNXgxMjUuanBnIiBoZWlnaHQ9IjEyNSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjEyNSIgYm9yZGVyPSIwIiBhbHQ9IkFwYWNoZUNvbiBVUyAyMDA1IiAvPgorICAgICAgICAgICAgICAgICAgICA8L2E+ICAtLT4KKworICAgICAgICAgICAgICAgICAgIDwhLS0gcmVndWxhciBtZW51IC0tPgorCisgICAgICAgICAgICAgICAgICAgIAorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDxkaXYgaWQ9ImFjY29yZGlvbiIgc3R5bGU9IndpZHRoOiAxMDAlIj4KKyAgICAKKyAgICAgICAgICAgIAk8aDM+PGEgaHJlZj0iI0dlbmVyYWwiPkdlbmVyYWw8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luZGV4Lmh0bWwiPkhvbWU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2xpY2Vuc2UuaHRtbCI+TGljZW5zZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iPkFTRjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZG93bmxvYWRzLmh0bWwiPkRvd25sb2FkczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiPkNvbW1lcmNpYWwgU3VwcG9ydDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI+SW5zdGFsbGF0aW9uIGFuZCBVcGdyYWRlPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9pbnN0YWxsYXRpb24uaHRtbCI+SW5zdGFsbGF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9VcGdyYWRlLmh0bWwiPlVwZ3JhZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiPlR1dG9yaWFsczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQ29tbWFuZExpbmVBZG1pbi5odG1sIj5Db21tYW5kIExpbmUgQWRtaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0NvbW11bml0eSI+Q29tbXVuaXR5PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9nZXQtaW52b2x2ZWQuaHRtbCI+R2V0IEludm9sdmVkPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi90ZWFtLWxpc3QuaHRtbCI+Q29tbWl0dGVyczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbWFpbC1saXN0cy5odG1sIj5NYWlsaW5nIExpc3RzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iPldpa2k8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0RldmVsb3BtZW50Ij5EZXZlbG9wbWVudDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vc3ZuLmh0bWwiPlNvdXJjZSBDb2RlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyI+QnVncyAvIElzc3VlcyAoSklSQSk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2RlcGVuZGVuY2llcy5odG1sIj5EZXBlbmRlbmNpZXM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiPkJ1aWxkIEluc3RydWN0aW9uczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSlVuaXRUZXN0aW5nLmh0bWwiPkpVbml0IFRlc3Rpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01hbnVhbFRlc3RpbmcuaHRtbCI+TWFudWFsIFRlc3Rpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1JlbGVhc2VHdWlkZS5odG1sIj5SZWxlYXNlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9XZWJzaXRlR3VpZGUuaHRtbCI+V2Vic2l0ZSBHdWlkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjSW50ZWdyYXRpb24iPkludGVncmF0aW9uPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Tb2FwUmVzdEFQSS5odG1sIj5TT0FQL1JFU1QgQVBJPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZXN0QVBJU2FtcGxlLmh0bWwiPlJFU1QgQVBJIFNhbXBsZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTGRhcEFuZEFEUy5odG1sIj5MZGFwIGFuZCBBRFM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiPlZvSVAgYW5kIFNJUDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vRXJyb3JzVGFibGUuaHRtbCI+RXJyb3JzIHRhYmxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNQbHVnaW5zIj5QbHVnaW5zPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Nb29kbGVQbHVnaW4uaHRtbCI+TW9vZGxlIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU2FrYWlQbHVnaW4uaHRtbCI+U2FrYWkgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KaXJhUGx1Z2luLmh0bWwiPkppcmEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Kb29tbGFQbHVnaW4uaHRtbCI+Sm9vbWxhIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vRHJ1cGFsUGx1Z2luLmh0bWwiPkRydXBhbCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0JpdHJpeFBsdWdpbi5odG1sIj5CaXRyaXggUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiPkNvbmZsdWVuY2UgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TdWdhckNSTVBsdWdpbi5odG1sIj5TdWdhckNSTSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1JlZG1pbmVQbHVnaW4uaHRtbCI+UmVkbWluZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0NvbmZpZ3VyYXRpb24iPkNvbmZpZ3VyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkRCIFNhbXBsZSBDb25maWd1cmF0aW9uczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiPkFwYWNoZSBEZXJieTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSUJNREIyQ29uZmlnLmh0bWwiPklCTSBEQjI8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL09yYWNsZUNvbmZpZy5odG1sIj5PcmFjbGU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL015U1FMQ29uZmlnLmh0bWwiPk15U1FMPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIj5Qb3N0Z3JlczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TG9jYWxpemF0aW9uIGFuZCBsYW5ndWFnZXM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIj5JbnRlcm5hdGlvbmFsaXNhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTGFuZ3VhZ2VFZGl0b3IuaHRtbCI+TGFuZ3VhZ2VFZGl0b3I8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1RpbWVab25lSGFuZGxpbmcuaHRtbCI+VGltZVpvbmVIYW5kbGluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRWRpdFRlbXBsYXRlcy5odG1sIj5FZGl0VGVtcGxhdGVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5OQVQgUG9ydCBTZXR0aW5nczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1BvcnRTZXR0aW5ncy5odG1sIj5Qb3J0IHNldHRpbmdzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5QZXJmb3JtYW5jZTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiPkpWTSBwZXJmb3JtYW5jZSB0dW5pbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlVzZXIgSW50ZXJmYWNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIj5UaGVtZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0Rhc2hib2FyZC5odG1sIj5EYXNoYm9hcmQ8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiPldlYmNhbSByZXNvbHV0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiPlJvb20gbGF5b3V0IG9wdGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0hvdEtleXMuaHRtbCI+SG90IEtleXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkN1c3RvbWl6YXRpb248L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9XZWJhcHBOYW1lUGF0aC5odG1sIj5XZWJhcHAgbmFtZS9wYXRoPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9OYXZpZ2F0aW9uLmh0bWwiPk5hdmlnYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCI+Q2FsZW5kYXIgYW5kIHRpbWV6b25lPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiPkN1c3RvbSByb29tIHR5cGU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiPkN1c3RvbSBjdHlwdCBtZWNoYW5pc208L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiPkdlbmVyYWwgQ29uZmlndXJhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+U2VjdXJpdHk8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiPlJlc3RyaWN0ZWQgQWNjZXNzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9SVE1QU0FuZEhUVFBTLmh0bWwiPlJUTVBTIGFuZCBIVFRQUzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q29udmVydGVyczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCI+T3Blbk9mZmljZSBDb252ZXJ0ZXI8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCI+RkZNUEVHIFZlcnNpb24gU3dpdGNoPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5DbHVzdGVyaW5nPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2x1c3RlcmluZy5odG1sIj5DbHVzdGVyaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5NaXNjPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2V0VmVyc2lvbkluZm8uaHRtbCI+R2V0IHZlcnNpb24gaW5mbzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCisgICAgPC9kaXY+CisgICAgIAorICAgIDxici8+CisgICAgCisgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODAlIiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkID48IS0tIGJnY29sb3I9IiNFRUVFRUUiIC0tPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0idmVyZGFuYSxhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IkRydXBhbCBQbHVnaW4gZm9yIE9wZW5NZWV0aW5ncyI+PHN0cm9uZz5EcnVwYWwgUGx1Z2luIGZvciBPcGVuTWVldGluZ3M8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQlZb3UgY2FuIGdldCB0aGUgbGF0ZXN0IFZlcnNpb24gb2YgdGhlIFBsdWdpbiBmb3IgRHJ1cGFsIGZvciBPcGVuTWVldGluZ3MgYXQgIA0KKwkJCQk8YSBocmVmPSJodHRwOi8vY29kZS5nb29nbGUuY29tL2EvYXBhY2hlLWV4dHJhcy5vcmcvaG9zdGluZy9zZWFyY2g/cT1vcGVubWVldGluZ3MiPmFwYWNoZS1leHRyYXMub3JnPC9hPg0KKwkJCQkuIEp1c3QgZ290byB0aGUgRHJ1cGFsIHBsdWdpbiBhbmQgbmF2aWdhdGUgdG8gdGhlIHByb2plY3QuDQorCQkJCTxiciAvPg0KKwkJCQlBIGRlbW8gdmVyc2lvbit2aWRlbyBvZiB0aGUgRHJ1cGFsIHBsdWdpbiBpcyBhdmFpbGFibGUgYXQNCisJCQkJPGEgaHJlZj0iaHR0cDovL2RydXBhbC5vcGVubWVldGluZ3MuZGUvIiB0YXJnZXQ9Il9CTEFOSyIgcmVsPSJub2ZvbGxvdyI+ZHJ1cGFsLm9wZW5tZWV0aW5ncy5kZQ0KKwkJCQk8L2E+DQorCQkJCS4NCisJCQkJDQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iSW5zdGFsbGF0aW9uIG9mIHRoZSBEcnVwYWwgUGx1Z2luIGZvciBBcGFjaGUgT3Blbk1lZXRpbmdzIj48c3Ryb25nPkluc3RhbGxhdGlvbiBvZiB0aGUgRHJ1cGFsIFBsdWdpbiBmb3IgQXBhY2hlIE9wZW5NZWV0aW5nczwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgICA8aHIgc3R5bGU9IndpZHRoOjEwMCU7IGNvbG9yOiM5OTk5OTk7IGJhY2tncm91bmQtY29sb3I6Izk5OTk5OTsgaGVpZ2h0OjFweDsgYm9yZGVyOjBweDsiLz4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQorCQkJCVlvdSBzaW1wbHkgZG93bmxvYWQgdGhlIFpJUCBvciBUQVIgcGFja2FnZSBhbmQgdW56aXAgaXQgdG8gRHJ1cGFsICJtb2QiIGRpcmVjdG9yeS4NCisJCQkJPGJyIC8+DQorCQkJCUZvciBhIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9uIGhvdyB0byBpbnN0YWxsIHBsdWdpbnMgaW4gRHJ1cGFsIHBsZWFzZSByZXZpZXcgdGhlaXIgDQorCQkJCTxhIGhyZWY9Imh0dHA6Ly9kcnVwYWwub3JnL2RvY3VtZW50YXRpb24vaW5zdGFsbC9tb2R1bGVzLXRoZW1lcyIgdGFyZ2V0PSJfQkxBTksiIHJlbD0ibm9mb2xsb3ciPmhhbmRib29rPC9hPi4NCisJCQkJPGJyIC8+DQorCQkJCVRoZW4geW91IHZpc2l0IHRoZSBtb2R1bGUgaW50ZXJmYWNlIG9mIERydXBhbCwgd2hlcmUgeW91IHdpbGwgZmluZCB0aGUgbmV3IG1vZHVsZS4NCisJCQkJWW91IHNob3VsZCBzd2l0Y2ggaXQgdG8gImVuYWJsZWQiIHRvIGdldCB0aGUgIkNvbmZpZ3VyZSIgYW5kICJQZXJtaXNzaW9ucyIgYnV0dG9ucy4NCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iZmFuY3lib3gtYnV0dG9ucyIgaHJlZj0iaW1hZ2VzL2RydXBhbF9tb2R1bGVfaW5zdGFsbGF0aW9uLnBuZyI+DQorCQkJCTxpbWcgc3JjPSJpbWFnZXMvZHJ1cGFsX21vZHVsZV9pbnN0YWxsYXRpb24ucG5nIiBhbHQ9IiIgd2lkdGg9IjYwMCIgaGVpZ2h0PSIxNTAiIC8+DQorCQkJPC9hPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQorCQkJCUluIHRoZSBjb25maWd1cmF0aW9uIHlvdSBlbnRlciB0aGUgYXV0aCBkYXRhIHRvIGFjY2VzcyB5b3VyIEFwYWNoZSBPcGVuTWVldGluZ3Mgc2VydmVyOg0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJmYW5jeWJveC1idXR0b25zIiBocmVmPSJpbWFnZXMvZHJ1cGFsX21vZHVsZV9jb25maWd1cmF0aW9uLnBuZyI+DQorCQkJCTxpbWcgc3JjPSJpbWFnZXMvZHJ1cGFsX21vZHVsZV9jb25maWd1cmF0aW9uLnBuZyIgYWx0PSIiIHdpZHRoPSI2MDAiIGhlaWdodD0iMzQwIiAvPg0KKwkJCTwvYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkID48IS0tIGJnY29sb3I9IiNFRUVFRUUiIC0tPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0idmVyZGFuYSxhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IkFkZGluZyBhIG5ldyBjb25mZXJlbmNlIHJvb20gdG8gRHJ1cGFsIj48c3Ryb25nPkFkZGluZyBhIG5ldyBjb25mZXJlbmNlIHJvb20gdG8gRHJ1cGFsPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJQWZ0ZXIgaW5zdGFsbGF0aW9uIG9mIHRoZSBwbHVnaW4geW91IGNhbiBnbyB0byB0aGUgZnJvbnQgcGFnZSBpbiBEcnVwYWwgYW5kIGFkZCBhIG5ldyBjb250ZW50IGl0ZW0gDQorCQkJCSJPcGVuTWVldGluZ3MgUm9vbXMiID0mZ3Q7ICJBZGQgTmV3IFJvb20iLiBZb3UgbWF5IGZpbmQgZm9sbG93aW5nIGNvbmZpZ3VyYXRpb24gdmFsdWVzIGZvciBlYWNoIA0KKwkJCQljb25mZXJlbmNlIHJvb206DQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImZhbmN5Ym94LWJ1dHRvbnMiIGhyZWY9ImltYWdlcy9kcnVwYWxfcm9vbV9jb25maWd1cmF0aW9uLnBuZyI+DQorCQkJCTxpbWcgc3JjPSJpbWFnZXMvZHJ1cGFsX3Jvb21fY29uZmlndXJhdGlvbi5wbmciIGFsdD0iIiB3aWR0aD0iNjAwIiBoZWlnaHQ9IjQwMCIgLz4NCisJCQk8L2E+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDwhLS0gRk9PVEVSIC0tPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgYWxpZ249ImNlbnRlciI+PGZvbnQgY29sb3I9IiMxMjM0NjUiIHNpemU9Ii0xIj48ZW0+CisgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAmIzE2OTsgMjAwMy0yMDEzLCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyAgICAgICAgICAgICAgICAgICAgPC9lbT48L2ZvbnQ+PC9kaXY+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvYm9keT4KKyAgICA8L2h0bWw+Cis8IS0tIGVuZCB0aGUgcHJvY2Vzc2luZyAtLT4KKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKwpkaWZmIC0tZ2l0IGEvZG9jcy9FZGl0VGVtcGxhdGVzLmh0bWwgYi9kb2NzL0VkaXRUZW1wbGF0ZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjQwNWU3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9FZGl0VGVtcGxhdGVzLmh0bWwKQEAgLTAsMCArMSw3MzkgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgorCis8IS0tCitDb3B5cmlnaHQgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKworPCEtLSBDb250ZW50IFN0eWxlc2hlZXQgZm9yIFNpdGUgLS0+CisKKyAgICAgICAgCis8IS0tIHN0YXJ0IHRoZSBwcm9jZXNzaW5nIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8IS0tIEdFTkVSQVRFRCBGSUxFLCBETyBOT1QgRURJVCwgRURJVCBUSEUgWE1MIEZJTEUgSU4geGRvY3MgSU5TVEVBRCEgLS0+CisgICAgPCEtLSBNYWluIFBhZ2UgU2VjdGlvbiAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGh0bWw+CisgICAgICAgIDxoZWFkPgorICAgICAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiLz4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iCisJCQlPcGVuTWVldGluZ3MgVGVhbQorCQkiPgorICAgICAgICAgICAgPG1ldGEgbmFtZT0iZW1haWwiIGNvbnRlbnQ9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+CisgICAgICAgICAgICAKKyAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgPHRpdGxlPkFwYWNoZSBPcGVuTWVldGluZ3MgLSBFZGl0IFRlbXBsYXRlczwvdGl0bGU+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3Mvb3Blbm1lZXRpbmdzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvanF1ZXJ5LXVpLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29pbi1zbGlkZXItc3R5bGVzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29sb3Jib3guY3NzIiAvPgorICAgICAgICAgICAgCisJCQk8IS0tIEFkZCBqUXVlcnkgbGlicmFyeSAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS0xLjcuMS5taW4uanMiPjwvc2NyaXB0PgorCQkKKwkJCTwhLS0gQWRkIGNvaW5zbGlkZXIgcGx1Z2lucyAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2NvaW4tc2xpZGVyLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTwhLS0gQWRkIGNvbG9yYm94IHBsdWdpbiAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS5jb2xvcmJveC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5jb3JlLmpzIj48L3NjcmlwdD4KKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkud2lkZ2V0LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmFjY29yZGlvbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQ+CisJCQkkKGZ1bmN0aW9uKCkgeworCQkJCSQoICIjYWNjb3JkaW9uIiApLmFjY29yZGlvbih7CisJCQkJCWF1dG9IZWlnaHQ6IGZhbHNlLAorCQkJCQluYXZpZ2F0aW9uOiB0cnVlLAorCQkJCQluYXZpZ2F0aW9uRmlsdGVyOiBmdW5jdGlvbiAoKSB7CisJCQkJCQl2YXIgc2lkZWJhckhyZWZBcnJheSA9IHRoaXMuaHJlZi5zcGxpdCgiLyIpOworICAgIAkJCQkJdmFyIHNpZGVCYXJMYXN0U3RyaW5nID0gc2lkZWJhckhyZWZBcnJheVtzaWRlYmFySHJlZkFycmF5Lmxlbmd0aCAtIDFdLnRvTG93ZXJDYXNlKCk7CisJCQkJCQkKKwkJCQkJCWlmIChzaWRlQmFyTGFzdFN0cmluZy5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJCQl9CisJCQkJCQkKKwkJCQkJCQkJCQkJCS8qIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgKi8KKwkJCQkJCXZhciBjdXJyZW50U2VjdGlvbiA9ICIiOworCQkJCQkJCisJCQkJCQl2YXIgY3VycmVudExvY2F0aW9uID0gIiI7CisJCQkJCQl2YXIgY3VycmVudExpbmsgPSAiIjsKKwkJCQkJCWlmIChmYWxzZSkgeworCQkJCQkJCisJCQkJCQl9CisgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luZGV4Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luZGV4Lmh0bWwiLnN1YnN0cigxLCAiL2luZGV4Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbGljZW5zZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9saWNlbnNlLmh0bWwiLnN1YnN0cigxLCAiL2xpY2Vuc2UuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIuc3Vic3RyKDEsICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2Rvd25sb2Fkcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kb3dubG9hZHMuaHRtbCIuc3Vic3RyKDEsICIvZG93bmxvYWRzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5zdWJzdHIoMSwgIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5zdGFsbGF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luc3RhbGxhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9pbnN0YWxsYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9VcGdyYWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1VwZ3JhZGUuaHRtbCIuc3Vic3RyKDEsICIvVXBncmFkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLnN1YnN0cigxLCAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29tbWFuZExpbmVBZG1pbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLnN1YnN0cigxLCAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZ2V0LWludm9sdmVkLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZ2V0LWludm9sdmVkLmh0bWwiLnN1YnN0cigxLCAiL2dldC1pbnZvbHZlZC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RlYW0tbGlzdC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3RlYW0tbGlzdC5odG1sIi5zdWJzdHIoMSwgIi90ZWFtLWxpc3QuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9tYWlsLWxpc3RzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbWFpbC1saXN0cy5odG1sIi5zdWJzdHIoMSwgIi9tYWlsLWxpc3RzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5zdWJzdHIoMSwgImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9zdm4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3N2bi5odG1sIi5zdWJzdHIoMSwgIi9zdm4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLnN1YnN0cigxLCAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kZXBlbmRlbmNpZXMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2RlcGVuZGVuY2llcy5odG1sIi5zdWJzdHIoMSwgIi9kZXBlbmRlbmNpZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVW5pdFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pVbml0VGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9KVW5pdFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NYW51YWxUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9NYW51YWxUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL01hbnVhbFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWxlYXNlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlbGVhc2VHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9SZWxlYXNlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJzaXRlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1dlYnNpdGVHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9XZWJzaXRlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU29hcFJlc3RBUEkuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1NvYXBSZXN0QVBJLmh0bWwiLnN1YnN0cigxLCAiL1NvYXBSZXN0QVBJLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdEFQSVNhbXBsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVzdEFQSVNhbXBsZS5odG1sIi5zdWJzdHIoMSwgIi9SZXN0QVBJU2FtcGxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGRhcEFuZEFEUy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTGRhcEFuZEFEUy5odG1sIi5zdWJzdHIoMSwgIi9MZGFwQW5kQURTLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRXJyb3JzVGFibGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0Vycm9yc1RhYmxlLmh0bWwiLnN1YnN0cigxLCAiL0Vycm9yc1RhYmxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01vb2RsZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Nb29kbGVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvTW9vZGxlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU2FrYWlQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU2FrYWlQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU2FrYWlQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KaXJhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0ppcmFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSmlyYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pvb21sYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Kb29tbGFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSm9vbWxhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRHJ1cGFsUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0RydXBhbFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9EcnVwYWxQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CaXRyaXhQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQml0cml4UGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0JpdHJpeFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU3VnYXJDUk1QbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWRtaW5lUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlZG1pbmVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvUmVkbWluZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0lCTURCMkNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0lCTURCMkNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9JQk1EQjJDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09yYWNsZUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09yYWNsZUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9PcmFjbGVDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL015U1FMQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTXlTUUxDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvTXlTUUxDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Bvc3RncmVzQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9zdGdyZXNDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvUG9zdGdyZXNDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9MYW5ndWFnZUVkaXRvci5odG1sIi5zdWJzdHIoMSwgIi9MYW5ndWFnZUVkaXRvci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVGltZVpvbmVIYW5kbGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIuc3Vic3RyKDEsICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRWRpdFRlbXBsYXRlcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIuc3Vic3RyKDEsICIvRWRpdFRlbXBsYXRlcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3J0U2V0dGluZ3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3J0U2V0dGluZ3MuaHRtbCIuc3Vic3RyKDEsICIvUG9ydFNldHRpbmdzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIuc3Vic3RyKDEsICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIuc3Vic3RyKDEsICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRGFzaGJvYXJkLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRGFzaGJvYXJkLmh0bWwiLnN1YnN0cigxLCAiL0Rhc2hib2FyZC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSG90S2V5cy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0hvdEtleXMuaHRtbCIuc3Vic3RyKDEsICIvSG90S2V5cy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJhcHBOYW1lUGF0aC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLnN1YnN0cigxLCAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9OYXZpZ2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTmF2aWdhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9OYXZpZ2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5zdWJzdHIoMSwgIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JUTVBTQW5kSFRUUFMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SVE1QU0FuZEhUVFBTLmh0bWwiLnN1YnN0cigxLCAiL1JUTVBTQW5kSFRUUFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIuc3Vic3RyKDEsICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIuc3Vic3RyKDEsICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DbHVzdGVyaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2x1c3RlcmluZy5odG1sIi5zdWJzdHIoMSwgIi9DbHVzdGVyaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dldFZlcnNpb25JbmZvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2V0VmVyc2lvbkluZm8uaHRtbCIuc3Vic3RyKDEsICIvR2V0VmVyc2lvbkluZm8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJICAgIAkJCQkJCisgICAgCQkJCQljdXJyZW50TGluayA9IGN1cnJlbnRMaW5rLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQljdXJyZW50TG9jYXRpb24gPSBjdXJyZW50TG9jYXRpb24udG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCQorCQkJCQkJcmV0dXJuIHNpZGVCYXJMYXN0U3RyaW5nID09IGN1cnJlbnRMaW5rKyIjIitjdXJyZW50TG9jYXRpb247CisJCQkJCX0KKwkJCQl9KTsKKwkJCX0pOworCQkJPC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwkJCQkkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsKKwkJCQkJJCgnLmZhbmN5Ym94LWJ1dHRvbnMnKS5jb2xvcmJveCh7cmVsOidmYW5jeWJveC1idXR0b25zJyx3aWR0aDoiNzUlIiwgaGVpZ2h0OiI3NSUifSk7CisJCQkJCSQoJyNhY2NvcmRpb24gYScpLmVhY2goZnVuY3Rpb24oKSB7CisJCQkJICAgICAgdmFyIGEgPSAkKHRoaXMpOworCQkJCSAgICAgIHZhciBocmVmID0gYS5hdHRyKCJocmVmIik7CisJCQkJICAgICAgaWYgKGhyZWYuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJICAgICAgCSAgdmFyIGNvbXBhcmVJdCA9IGhyZWYuc3Vic3RyKDIsIGhyZWYubGVuZ3RoKTsKKwkJCQkJICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZihjb21wYXJlSXQpIT0gLTEpIHsKKwkJCQkJICAgICAgIGEuYWRkQ2xhc3MoJ2FjdGl2ZScpOworCQkJCQkgICAgICB9CisJCQkJICAgICAgfQorCQkJCSAgICB9KTsKKwkJCQkJJCgnI2NvaW4tc2xpZGVyJykuY29pbnNsaWRlcih7IHdpZHRoOiA2NDAsaGVpZ2h0OiA0MDAsIGRlbGF5OiA0MDAwICB9KTsJCQkJCQorCQkJCX0pOworCQkJPC9zY3JpcHQ+CQorCQkJCQkJCisJCQk8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorCQkJCS5mYW5jeWJveC1jdXN0b20gLmZhbmN5Ym94LW91dGVyIHsKKwkJCQkJYm94LXNoYWRvdzogMCAwIDUwcHggIzIyMjsKKwkJCQl9CisJCQk8L3N0eWxlPgorICAgICAgICA8L2hlYWQ+CisKKyAgICAgICAgPGJvZHkgYmdjb2xvcj0iI2ZmZmZmZiIgdGV4dD0iIzAwMDAwMCIgbGluaz0iIzEyMzQ2NSIgdmxpbms9IiMxMjM0NjUiIGFsaW5rPSIjMDAwMDAwIj4gIAorICAgICAgICAJPGRpdiBjbGFzcz0ibWFpbmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAJPGRpdiBjbGFzcz0ic3VwZXJib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCI+CisgICAgICAgICAgICAgICAgPCEtLSBUT1AgSU1BR0UgLS0+CisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPgorPGEgaHJlZj0iaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnLyI+PGltZyBzcmM9Ii4vaW1hZ2VzL2xvZ28tMi5qcGciIGFsdD0iQXBhY2hlIE9wZW5NZWV0aW5ncyIgYm9yZGVyPSIwIi8+PC9hPgorPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiID4KKwk8YSBocmVmPSJkZW1vLmh0bWwiPkRlbW88L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iZG93bmxvYWRzLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+RG93bmxvYWQ8L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaW5zdGFsbGF0aW9uLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+SW5zdGFsbGF0aW9uPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTIiB0YXJnZXQ9Il9CTEFOSyI+V2lraTwvYT4KKwk8c3Bhbj4mbmJzcDs8L3NwYW4+Cis8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSI0Ij4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPCEtLSBMRUZUIFNJREUgTkFWSUdBVElPTiAtLT4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIiBub3dyYXA9Im5vd3JhcCI+CisKKyAgICAgICAgICAgICAgICAgICAgPCEtLSBzcGVjaWFsIEFDb24gTG9nbyAtIGxlYXZlIGhlcmUgZm9yIG5leHQgdGltZQorICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vYXBhY2hlY29uLmNvbS8yMDA1L1VTLyI+CisgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2FwYWNoZS5vcmcvaW1hZ2VzL2FjMjAwNXVzX2JsdWVfMTI1eDEyNS5qcGciIGhlaWdodD0iMTI1IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTI1IiBib3JkZXI9IjAiIGFsdD0iQXBhY2hlQ29uIFVTIDIwMDUiIC8+CisgICAgICAgICAgICAgICAgICAgIDwvYT4gIC0tPgorCisgICAgICAgICAgICAgICAgICAgPCEtLSByZWd1bGFyIG1lbnUgLS0+CisKKyAgICAgICAgICAgICAgICAgICAgCisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGRpdiBpZD0iYWNjb3JkaW9uIiBzdHlsZT0id2lkdGg6IDEwMCUiPgorICAgIAorICAgICAgICAgICAgCTxoMz48YSBocmVmPSIjR2VuZXJhbCI+R2VuZXJhbDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5kZXguaHRtbCI+SG9tZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbGljZW5zZS5odG1sIj5MaWNlbnNlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyI+QVNGPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kb3dubG9hZHMuaHRtbCI+RG93bmxvYWRzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCI+Q29tbWVyY2lhbCBTdXBwb3J0PC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnN0YWxsYXRpb25hbmRVcGdyYWRlIj5JbnN0YWxsYXRpb24gYW5kIFVwZ3JhZGU8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luc3RhbGxhdGlvbi5odG1sIj5JbnN0YWxsYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1VwZ3JhZGUuaHRtbCI+VXBncmFkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii5odHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyI+VHV0b3JpYWxzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db21tYW5kTGluZUFkbWluLmh0bWwiPkNvbW1hbmQgTGluZSBBZG1pbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29tbXVuaXR5Ij5Db21tdW5pdHk8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2dldC1pbnZvbHZlZC5odG1sIj5HZXQgSW52b2x2ZWQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3RlYW0tbGlzdC5odG1sIj5Db21taXR0ZXJzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9tYWlsLWxpc3RzLmh0bWwiPk1haWxpbmcgTGlzdHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyI+V2lraTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjRGV2ZWxvcG1lbnQiPkRldmVsb3BtZW50PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9zdm4uaHRtbCI+U291cmNlIENvZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIj5CdWdzIC8gSXNzdWVzIChKSVJBKTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZGVwZW5kZW5jaWVzLmh0bWwiPkRlcGVuZGVuY2llczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCI+QnVpbGQgSW5zdHJ1Y3Rpb25zPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KVW5pdFRlc3RpbmcuaHRtbCI+SlVuaXQgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTWFudWFsVGVzdGluZy5odG1sIj5NYW51YWwgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVsZWFzZUd1aWRlLmh0bWwiPlJlbGVhc2UgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1dlYnNpdGVHdWlkZS5odG1sIj5XZWJzaXRlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnRlZ3JhdGlvbiI+SW50ZWdyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1NvYXBSZXN0QVBJLmh0bWwiPlNPQVAvUkVTVCBBUEk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Jlc3RBUElTYW1wbGUuaHRtbCI+UkVTVCBBUEkgU2FtcGxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9MZGFwQW5kQURTLmh0bWwiPkxkYXAgYW5kIEFEUzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCI+Vm9JUCBhbmQgU0lQPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9FcnJvcnNUYWJsZS5odG1sIj5FcnJvcnMgdGFibGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI1BsdWdpbnMiPlBsdWdpbnM8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01vb2RsZVBsdWdpbi5odG1sIj5Nb29kbGUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TYWthaVBsdWdpbi5odG1sIj5TYWthaSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0ppcmFQbHVnaW4uaHRtbCI+SmlyYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pvb21sYVBsdWdpbi5odG1sIj5Kb29tbGEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9EcnVwYWxQbHVnaW4uaHRtbCI+RHJ1cGFsIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQml0cml4UGx1Z2luLmh0bWwiPkJpdHJpeCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCI+Q29uZmx1ZW5jZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiPlN1Z2FyQ1JNIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVkbWluZVBsdWdpbi5odG1sIj5SZWRtaW5lIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29uZmlndXJhdGlvbiI+Q29uZmlndXJhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+REIgU2FtcGxlIENvbmZpZ3VyYXRpb25zPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQXBhY2hlRGVyYnlDb25maWcuaHRtbCI+QXBhY2hlIERlcmJ5PC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JQk1EQjJDb25maWcuaHRtbCI+SUJNIERCMjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3JhY2xlQ29uZmlnLmh0bWwiPk9yYWNsZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTXlTUUxDb25maWcuaHRtbCI+TXlTUUw8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Bvc3RncmVzQ29uZmlnLmh0bWwiPlBvc3RncmVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Mb2NhbGl6YXRpb24gYW5kIGxhbmd1YWdlczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiPkludGVybmF0aW9uYWxpc2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9MYW5ndWFnZUVkaXRvci5odG1sIj5MYW5ndWFnZUVkaXRvcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vVGltZVpvbmVIYW5kbGluZy5odG1sIj5UaW1lWm9uZUhhbmRsaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9FZGl0VGVtcGxhdGVzLmh0bWwiPkVkaXRUZW1wbGF0ZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk5BVCBQb3J0IFNldHRpbmdzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9ydFNldHRpbmdzLmh0bWwiPlBvcnQgc2V0dGluZ3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlBlcmZvcm1hbmNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCI+SlZNIHBlcmZvcm1hbmNlIHR1bmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+VXNlciBJbnRlcmZhY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiPlRoZW1lczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRGFzaGJvYXJkLmh0bWwiPkRhc2hib2FyZDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCI+V2ViY2FtIHJlc29sdXRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCI+Um9vbSBsYXlvdXQgb3B0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSG90S2V5cy5odG1sIj5Ib3QgS2V5czwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q3VzdG9taXphdGlvbjwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmFwcE5hbWVQYXRoLmh0bWwiPldlYmFwcCBuYW1lL3BhdGg8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL05hdmlnYXRpb24uaHRtbCI+TmF2aWdhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIj5DYWxlbmRhciBhbmQgdGltZXpvbmU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCI+Q3VzdG9tIHJvb20gdHlwZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCI+Q3VzdG9tIGN0eXB0IG1lY2hhbmlzbTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCI+R2VuZXJhbCBDb25maWd1cmF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5TZWN1cml0eTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCI+UmVzdHJpY3RlZCBBY2Nlc3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1JUTVBTQW5kSFRUUFMuaHRtbCI+UlRNUFMgYW5kIEhUVFBTPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Db252ZXJ0ZXJzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIj5PcGVuT2ZmaWNlIENvbnZlcnRlcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIj5GRk1QRUcgVmVyc2lvbiBTd2l0Y2g8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNsdXN0ZXJpbmc8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DbHVzdGVyaW5nLmh0bWwiPkNsdXN0ZXJpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk1pc2M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZXRWZXJzaW9uSW5mby5odG1sIj5HZXQgdmVyc2lvbiBpbmZvPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAKKyAgICA8L2Rpdj4KKyAgICAgCisgICAgPGJyLz4KKyAgICAKKyAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iQ2hhbmdpbmcgTGFiZWxzIGFuZCB0ZXh0IHN0cmluZ3MiPjxzdHJvbmc+Q2hhbmdpbmcgTGFiZWxzIGFuZCB0ZXh0IHN0cmluZ3M8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQlBbGwgbGFuZ3VhZ2Ugc3RyaW5nIHNob3VsZCBiZSBsb2NhbGl6ZWQgYW5kIHN0b3JlZCBpbiB0aGUgbGFuZ3VhZ2UNCisJCQkJc2VjdGlvbi4gWW91IGhhdmUgYSBmdWxsIGZlYXR1cmVkIGxhbmd1YWdlIGVkaXRvciB3aXRoIGV2ZXJ5DQorCQkJCWluc3RhbGxhdGlvbiBvZiBPcGVuTWVldGluZ3MsIGNoZWNrIG91dCB0aGUNCisJCQkJPGEgaHJlZj0iTGFuZ3VhZ2VFZGl0b3IuaHRtbCI+TGFuZ3VhZ2VFZGl0b3I8L2E+DQorCQkJCS4NCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJVG8gbG9va3VwIHRoZSBsYWJlbGlkcyBpbiB0aGUgR1VJIHlvdSBjYW4gc2ltcGx5IHJ1biBPcGVuTWVldGluZ3MNCisJCQkJY2xpZW50IHdpdGggdGhlIGRlYnVnIGVuYWJsZWQuIFRoYXQgd2F5IGV2ZXJ5IHRleHQtc3RyaW5nIGhhcyB0aGUNCisJCQkJbGFiZWxpZCBpbiBicmFja2V0cyBhZGRpdGlvbmFsbHkgaW4gdGhlIHRleHRmaWVsZC4gVG8gc3RhcnQgdGhlDQorCQkJCWNsaWVudCBpbiBkZWJ1ZyBtb2RlIGp1c3QgYWRkIHRoZSBwYXJhbSA/c3dmPW1haW5kZWJ1Zy5zd2Y4LnN3ZiB0bw0KKwkJCQl0aGUgVVJMLiBFeGFtcGxlOg0KKwkJCQk8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzLz9zd2Y9bWFpbmRlYnVnLnN3Zjguc3dmIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzLz9zd2Y9bWFpbmRlYnVnLnN3Zjguc3dmPC9hPg0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkID48IS0tIGJnY29sb3I9IiNFRUVFRUUiIC0tPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0idmVyZGFuYSxhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IkNoYW5naW5nIGxheW91dCwgYWRkaW5nIGZvb3RlcnMgaW4gZW1haWxzIj48c3Ryb25nPkNoYW5naW5nIGxheW91dCwgYWRkaW5nIGZvb3RlcnMgaW4gZW1haWxzPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5JZiB5b3Ugd291bGQgbGlrZSB0byBjaGFuZ2UgdGhlIHN0YW5kYXJkIGVtYWlsIGxheW91dCBvciBhZGQgZm9yDQorCQkJCWV4YW1wbGUgc29tZSBmb290ZXIgaW4gZXZlcnkgZW1haWwgeW91IGhhdmUgdG8gY2hhbmdlIHRoZSBlbWFpbA0KKwkJCQl0ZW1wbGF0ZXMuDQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+VG8gZG8gdGhhdDogU3RvcCB0aGUgUmVkNS9PcGVuTWVldGluZ3MtU2VydmljZSBHb3RvOg0KKwkJCQkkUmVkNV9IT01FL3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvbGliL29wZW5tZWV0aW5ncy10ZW1wbGF0ZXMuamFyDQorCQkJCVVuemlwOiBvcGVubWVldGluZ3MtdGVtcGxhdGVzLmphciAodGhpcyBpcyBhIHVzdWFsIFpJUCBmaWxlLCB5b3UgY2FuDQorCQkJCXJlbmFtZSBpdCB0byBvcGVubWVldGluZ3MtdGVtcGxhdGVzLnppcCB1bnppcCwgZWRpdCB0aGUgZmlsZXMsIHppcA0KKwkJCQlpdCBhZ2FpbiBhbmQgcmVuYW1lIGl0IHRvIG9wZW5tZWV0aW5ncy10ZW1wbGF0ZXMuamFyKQ0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQlJbiBvcGVubWVldGluZ3MtdGVtcGxhdGVzLmphciB0aGVyZSBhcmUgYWxsIHRlbXBsYXRlIGZpbGVzLiBUaGV5DQorCQkJCWhhdmUgdGhlIGZpbGUgZXh0ZW5zaW9uIC52bSAoVk0gc3RhbmRzIGZvciB2ZWxvY2l0eS10ZW1wbGF0ZSkuIEFmdGVyDQorCQkJCXlvdSBoYXZlIGRvbmUgeW91ciBjaGFuZ2VzIHlvdSBuZWVkIHRvIChyZSlzdGFydCB0aGUNCisJCQkJUmVkNS9PcGVuTWVldGluZ3MNCisJCQkJLVNlcnZpY2Ugc28gdGhhdCBjaGFuZ2VzIGFyZSBvbmxpbmUuDQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8IS0tIEZPT1RFUiAtLT4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGFsaWduPSJjZW50ZXIiPjxmb250IGNvbG9yPSIjMTIzNDY1IiBzaXplPSItMSI+PGVtPgorICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgJiMxNjk7IDIwMDMtMjAxMywgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisgICAgICAgICAgICAgICAgICAgIDwvZW0+PC9mb250PjwvZGl2PgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2JvZHk+CisgICAgPC9odG1sPgorPCEtLSBlbmQgdGhlIHByb2Nlc3NpbmcgLS0+CisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKZGlmZiAtLWdpdCBhL2RvY3MvRXJyb3JzVGFibGUuaHRtbCBiL2RvY3MvRXJyb3JzVGFibGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTY2OTE3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9FcnJvcnNUYWJsZS5odG1sCkBAIC0wLDAgKzEsMTMxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CisKKzwhLS0KK0NvcHlyaWdodCAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK3lvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCitodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworCis8IS0tIENvbnRlbnQgU3R5bGVzaGVldCBmb3IgU2l0ZSAtLT4KKworICAgICAgICAKKzwhLS0gc3RhcnQgdGhlIHByb2Nlc3NpbmcgLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDwhLS0gR0VORVJBVEVEIEZJTEUsIERPIE5PVCBFRElULCBFRElUIFRIRSBYTUwgRklMRSBJTiB4ZG9jcyBJTlNURUFEISAtLT4KKyAgICA8IS0tIE1haW4gUGFnZSBTZWN0aW9uIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8aHRtbD4KKyAgICAgICAgPGhlYWQ+CisgICAgICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIvPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSJBcGFjaGUgT3Blbk1lZXRpbmdzIERvY3VtZW50YXRpb24gUm9ib3QiPgorICAgICAgICAgICAgPG1ldGEgbmFtZT0iZW1haWwiIGNvbnRlbnQ9InNvbG9tYXhAYXBhY2hlLm9yZyI+CisgICAgICAgICAgICAKKyAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgPHRpdGxlPkFwYWNoZSBPcGVuTWVldGluZ3MgLSBPcGVubWVldGluZ3MgRXJyb3JzIHRhYmxlPC90aXRsZT4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9vcGVubWVldGluZ3MuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9qcXVlcnktdWkuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2luLXNsaWRlci1zdHlsZXMuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2xvcmJveC5jc3MiIC8+CisgICAgICAgICAgICAKKwkJCTwhLS0gQWRkIGpRdWVyeSBsaWJyYXJ5IC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LTEuNy4xLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPCEtLSBBZGQgY29pbnNsaWRlciBwbHVnaW5zIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvY29pbi1zbGlkZXIubWluLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPCEtLSBBZGQgY29sb3Jib3ggcGx1Z2luIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LmNvbG9yYm94LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmNvcmUuanMiPjwvc2NyaXB0PgorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS53aWRnZXQuanMiPjwvc2NyaXB0PgorCQkKKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkuYWNjb3JkaW9uLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdD4KKwkJCSQoZnVuY3Rpb24oKSB7CisJCQkJJCggIiNhY2NvcmRpb24iICkuYWNjb3JkaW9uKHsKKwkJCQkJYXV0b0hlaWdodDogZmFsc2UsCisJCQkJCW5hdmlnYXRpb246IHRydWUsCisJCQkJCW5hdmlnYXRpb25GaWx0ZXI6IGZ1bmN0aW9uICgpIHsKKwkJCQkJCXZhciBzaWRlYmFySHJlZkFycmF5ID0gdGhpcy5ocmVmLnNwbGl0KCIvIik7CisgICAgCQkJCQl2YXIgc2lkZUJhckxhc3RTdHJpbmcgPSBzaWRlYmFySHJlZkFycmF5W3NpZGViYXJIcmVmQXJyYXkubGVuZ3RoIC0gMV0udG9Mb3dlckNhc2UoKTsKKwkJCQkJCQorCQkJCQkJaWYgKHNpZGVCYXJMYXN0U3RyaW5nLmluZGV4T2YoIiMiKSA9PSAtMSkgeworCQkJCQkJCXJldHVybiBmYWxzZTsKKwkJCQkJCX0KKwkJCQkJCQorCQkJCQkJCQkJCQkJLyogZG9jdW1lbnQubG9jYXRpb24uaHJlZiAqLworCQkJCQkJdmFyIGN1cnJlbnRTZWN0aW9uID0gIiI7CisJCQkJCQkKKwkJCQkJCXZhciBjdXJyZW50TG9jYXRpb24gPSAiIjsKKwkJCQkJCXZhciBjdXJyZW50TGluayA9ICIiOworCQkJCQkJaWYgKGZhbHNlKSB7CisJCQkJCQkKKwkJCQkJCX0KKyAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5kZXguaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5kZXguaHRtbCIuc3Vic3RyKDEsICIvaW5kZXguaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9saWNlbnNlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2xpY2Vuc2UuaHRtbCIuc3Vic3RyKDEsICIvbGljZW5zZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5zdWJzdHIoMSwgImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZG93bmxvYWRzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2Rvd25sb2Fkcy5odG1sIi5zdWJzdHIoMSwgIi9kb3dubG9hZHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiLnN1YnN0cigxLCAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9pbnN0YWxsYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5zdGFsbGF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL2luc3RhbGxhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1VwZ3JhZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvVXBncmFkZS5odG1sIi5zdWJzdHIoMSwgIi9VcGdyYWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIuc3Vic3RyKDEsICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db21tYW5kTGluZUFkbWluLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIuc3Vic3RyKDEsICIvQ29tbWFuZExpbmVBZG1pbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9nZXQtaW52b2x2ZWQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9nZXQtaW52b2x2ZWQuaHRtbCIuc3Vic3RyKDEsICIvZ2V0LWludm9sdmVkLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGVhbS1saXN0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdGVhbS1saXN0Lmh0bWwiLnN1YnN0cigxLCAiL3RlYW0tbGlzdC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL21haWwtbGlzdHMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9tYWlsLWxpc3RzLmh0bWwiLnN1YnN0cigxLCAiL21haWwtbGlzdHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLnN1YnN0cigxLCAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3N2bi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvc3ZuLmh0bWwiLnN1YnN0cigxLCAiL3N2bi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIuc3Vic3RyKDEsICJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2RlcGVuZGVuY2llcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZGVwZW5kZW5jaWVzLmh0bWwiLnN1YnN0cigxLCAiL2RlcGVuZGVuY2llcy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pVbml0VGVzdGluZy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSlVuaXRUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL0pVbml0VGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01hbnVhbFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01hbnVhbFRlc3RpbmcuaHRtbCIuc3Vic3RyKDEsICIvTWFudWFsVGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlbGVhc2VHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVsZWFzZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1JlbGVhc2VHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYnNpdGVHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvV2Vic2l0ZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1dlYnNpdGVHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Tb2FwUmVzdEFQSS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU29hcFJlc3RBUEkuaHRtbCIuc3Vic3RyKDEsICIvU29hcFJlc3RBUEkuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZXN0QVBJU2FtcGxlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZXN0QVBJU2FtcGxlLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RBUElTYW1wbGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MZGFwQW5kQURTLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9MZGFwQW5kQURTLmh0bWwiLnN1YnN0cigxLCAiL0xkYXBBbmRBRFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FcnJvcnNUYWJsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRXJyb3JzVGFibGUuaHRtbCIuc3Vic3RyKDEsICIvRXJyb3JzVGFibGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTW9vZGxlUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01vb2RsZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Nb29kbGVQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TYWthaVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TYWthaVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TYWthaVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ppcmFQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSmlyYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9KaXJhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSm9vbWxhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pvb21sYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Kb29tbGFQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EcnVwYWxQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRHJ1cGFsUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0RydXBhbFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0JpdHJpeFBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CaXRyaXhQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvQml0cml4UGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TdWdhckNSTVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TdWdhckNSTVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TdWdhckNSTVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlZG1pbmVQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVkbWluZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9SZWRtaW5lUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSUJNREIyQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSUJNREIyQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL0lCTURCMkNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3JhY2xlQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3JhY2xlQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL09yYWNsZUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTXlTUUxDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9NeVNRTENvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9NeVNRTENvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUG9zdGdyZXNDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MYW5ndWFnZUVkaXRvci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLnN1YnN0cigxLCAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5zdWJzdHIoMSwgIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FZGl0VGVtcGxhdGVzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRWRpdFRlbXBsYXRlcy5odG1sIi5zdWJzdHIoMSwgIi9FZGl0VGVtcGxhdGVzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1BvcnRTZXR0aW5ncy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1BvcnRTZXR0aW5ncy5odG1sIi5zdWJzdHIoMSwgIi9Qb3J0U2V0dGluZ3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5zdWJzdHIoMSwgIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5zdWJzdHIoMSwgIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EYXNoYm9hcmQuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9EYXNoYm9hcmQuaHRtbCIuc3Vic3RyKDEsICIvRGFzaGJvYXJkLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLnN1YnN0cigxLCAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Ib3RLZXlzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSG90S2V5cy5odG1sIi5zdWJzdHIoMSwgIi9Ib3RLZXlzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYmFwcE5hbWVQYXRoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvV2ViYXBwTmFtZVBhdGguaHRtbCIuc3Vic3RyKDEsICIvV2ViYXBwTmFtZVBhdGguaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL05hdmlnYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9OYXZpZ2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL05hdmlnYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLnN1YnN0cigxLCAiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIuc3Vic3RyKDEsICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIuc3Vic3RyKDEsICIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUlRNUFNBbmRIVFRQUy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1JUTVBTQW5kSFRUUFMuaHRtbCIuc3Vic3RyKDEsICIvUlRNUFNBbmRIVFRQUy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5zdWJzdHIoMSwgIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5zdWJzdHIoMSwgIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NsdXN0ZXJpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DbHVzdGVyaW5nLmh0bWwiLnN1YnN0cigxLCAiL0NsdXN0ZXJpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvR2V0VmVyc2lvbkluZm8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9HZXRWZXJzaW9uSW5mby5odG1sIi5zdWJzdHIoMSwgIi9HZXRWZXJzaW9uSW5mby5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkgICAgCQkJCQkKKyAgICAJCQkJCWN1cnJlbnRMaW5rID0gY3VycmVudExpbmsudG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCWN1cnJlbnRMb2NhdGlvbiA9IGN1cnJlbnRMb2NhdGlvbi50b0xvd2VyQ2FzZSgpOworICAgIAkJCQkJCisJCQkJCQlyZXR1cm4gc2lkZUJhckxhc3RTdHJpbmcgPT0gY3VycmVudExpbmsrIiMiK2N1cnJlbnRMb2NhdGlvbjsKKwkJCQkJfQorCQkJCX0pOworCQkJfSk7CisJCQk8L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCQkJCSQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgeworCQkJCQkkKCcuZmFuY3lib3gtYnV0dG9ucycpLmNvbG9yYm94KHtyZWw6J2ZhbmN5Ym94LWJ1dHRvbnMnLHdpZHRoOiI3NSUiLCBoZWlnaHQ6Ijc1JSJ9KTsKKwkJCQkJJCgnI2FjY29yZGlvbiBhJykuZWFjaChmdW5jdGlvbigpIHsKKwkJCQkgICAgICB2YXIgYSA9ICQodGhpcyk7CisJCQkJICAgICAgdmFyIGhyZWYgPSBhLmF0dHIoImhyZWYiKTsKKwkJCQkgICAgICBpZiAoaHJlZi5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkgICAgICAJICB2YXIgY29tcGFyZUl0ID0gaHJlZi5zdWJzdHIoMiwgaHJlZi5sZW5ndGgpOworCQkJCQkgICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKGNvbXBhcmVJdCkhPSAtMSkgeworCQkJCQkgICAgICAgYS5hZGRDbGFzcygnYWN0aXZlJyk7CisJCQkJCSAgICAgIH0KKwkJCQkgICAgICB9CisJCQkJICAgIH0pOworCQkJCQkkKCcjY29pbi1zbGlkZXInKS5jb2luc2xpZGVyKHsgd2lkdGg6IDY0MCxoZWlnaHQ6IDQwMCwgZGVsYXk6IDQwMDAgIH0pOwkJCQkJCisJCQkJfSk7CisJCQk8L3NjcmlwdD4JCisJCQkJCQkKKwkJCTxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisJCQkJLmZhbmN5Ym94LWN1c3RvbSAuZmFuY3lib3gtb3V0ZXIgeworCQkJCQlib3gtc2hhZG93OiAwIDAgNTBweCAjMjIyOworCQkJCX0KKwkJCTwvc3R5bGU+CisgICAgICAgIDwvaGVhZD4KKworICAgICAgICA8Ym9keSBiZ2NvbG9yPSIjZmZmZmZmIiB0ZXh0PSIjMDAwMDAwIiBsaW5rPSIjMTIzNDY1IiB2bGluaz0iIzEyMzQ2NSIgYWxpbms9IiMwMDAwMDAiPiAgCisgICAgICAgIAk8ZGl2IGNsYXNzPSJtYWluYm9keSIgc3R5bGU9IndpZHRoOiAxMDAlOyI+CisgICAgICAgIAk8ZGl2IGNsYXNzPSJzdXBlcmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIj4KKyAgICAgICAgICAgICAgICA8IS0tIFRPUCBJTUFHRSAtLT4KKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCI+Cis8YSBocmVmPSJodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvIj48aW1nIHNyYz0iLi9pbWFnZXMvbG9nby0yLmpwZyIgYWx0PSJBcGFjaGUgT3Blbk1lZXRpbmdzIiBib3JkZXI9IjAiLz48L2E+Cis8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCIgPgorCTxhIGhyZWY9ImRlbW8uaHRtbCI+RGVtbzwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJkb3dubG9hZHMuaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5Eb3dubG9hZDwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJpbnN0YWxsYXRpb24uaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5JbnN0YWxsYXRpb248L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MiIHRhcmdldD0iX0JMQU5LIj5XaWtpPC9hPgorCTxzcGFuPiZuYnNwOzwvc3Bhbj4KKzwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjQiPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8IS0tIExFRlQgU0lERSBOQVZJR0FUSU9OIC0tPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiIG5vd3JhcD0ibm93cmFwIj4KKworICAgICAgICAgICAgICAgICAgICA8IS0tIHNwZWNpYWwgQUNvbiBMb2dvIC0gbGVhdmUgaGVyZSBmb3IgbmV4dCB0aW1lCisgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9hcGFjaGVjb24uY29tLzIwMDUvVVMvIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vYXBhY2hlLm9yZy9pbWFnZXMvYWMyMDA1dXNfYmx1ZV8xMjV4MTI1LmpwZyIgaGVpZ2h0PSIxMjUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPSIxMjUiIGJvcmRlcj0iMCIgYWx0PSJBcGFjaGVDb24gVVMgMjAwNSIgLz4KKyAgICAgICAgICAgICAgICAgICAgPC9hPiAgLS0+CisKKyAgICAgICAgICAgICAgICAgICA8IS0tIHJlZ3VsYXIgbWVudSAtLT4KKworICAgICAgICAgICAgICAgICAgICAKKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8ZGl2IGlkPSJhY2NvcmRpb24iIHN0eWxlPSJ3aWR0aDogMTAwJSI+CisgICAgCisgICAgICAgICAgICAJPGgzPjxhIGhyZWY9IiNHZW5lcmFsIj5HZW5lcmFsPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9pbmRleC5odG1sIj5Ib21lPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9saWNlbnNlLmh0bWwiPkxpY2Vuc2U8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5BU0Y8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2Rvd25sb2Fkcy5odG1sIj5Eb3dubG9hZHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIj5Db21tZXJjaWFsIFN1cHBvcnQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0luc3RhbGxhdGlvbmFuZFVwZ3JhZGUiPkluc3RhbGxhdGlvbiBhbmQgVXBncmFkZTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5zdGFsbGF0aW9uLmh0bWwiPkluc3RhbGxhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vVXBncmFkZS5odG1sIj5VcGdyYWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLmh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIj5UdXRvcmlhbHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCI+Q29tbWFuZCBMaW5lIEFkbWluPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb21tdW5pdHkiPkNvbW11bml0eTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZ2V0LWludm9sdmVkLmh0bWwiPkdldCBJbnZvbHZlZDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdGVhbS1saXN0Lmh0bWwiPkNvbW1pdHRlcnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL21haWwtbGlzdHMuaHRtbCI+TWFpbGluZyBMaXN0czwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIj5XaWtpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNEZXZlbG9wbWVudCI+RGV2ZWxvcG1lbnQ8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3N2bi5odG1sIj5Tb3VyY2UgQ29kZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiPkJ1Z3MgLyBJc3N1ZXMgKEpJUkEpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kZXBlbmRlbmNpZXMuaHRtbCI+RGVwZW5kZW5jaWVzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CdWlsZEluc3RydWN0aW9ucy5odG1sIj5CdWlsZCBJbnN0cnVjdGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pVbml0VGVzdGluZy5odG1sIj5KVW5pdCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9NYW51YWxUZXN0aW5nLmh0bWwiPk1hbnVhbCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWxlYXNlR3VpZGUuaHRtbCI+UmVsZWFzZSBHdWlkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vV2Vic2l0ZUd1aWRlLmh0bWwiPldlYnNpdGUgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0ludGVncmF0aW9uIj5JbnRlZ3JhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU29hcFJlc3RBUEkuaHRtbCI+U09BUC9SRVNUIEFQSTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVzdEFQSVNhbXBsZS5odG1sIj5SRVNUIEFQSSBTYW1wbGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0xkYXBBbmRBRFMuaHRtbCI+TGRhcCBhbmQgQURTPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIj5Wb0lQIGFuZCBTSVA8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0Vycm9yc1RhYmxlLmh0bWwiPkVycm9ycyB0YWJsZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjUGx1Z2lucyI+UGx1Z2luczwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTW9vZGxlUGx1Z2luLmh0bWwiPk1vb2RsZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Nha2FpUGx1Z2luLmh0bWwiPlNha2FpIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSmlyYVBsdWdpbi5odG1sIj5KaXJhIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSm9vbWxhUGx1Z2luLmh0bWwiPkpvb21sYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0RydXBhbFBsdWdpbi5odG1sIj5EcnVwYWwgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CaXRyaXhQbHVnaW4uaHRtbCI+Qml0cml4IFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQ29uZmx1ZW5jZVBsdWdpbi5odG1sIj5Db25mbHVlbmNlIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU3VnYXJDUk1QbHVnaW4uaHRtbCI+U3VnYXJDUk0gUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWRtaW5lUGx1Z2luLmh0bWwiPlJlZG1pbmUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb25maWd1cmF0aW9uIj5Db25maWd1cmF0aW9uPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5EQiBTYW1wbGUgQ29uZmlndXJhdGlvbnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIj5BcGFjaGUgRGVyYnk8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0lCTURCMkNvbmZpZy5odG1sIj5JQk0gREIyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcmFjbGVDb25maWcuaHRtbCI+T3JhY2xlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9NeVNRTENvbmZpZy5odG1sIj5NeVNRTDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9zdGdyZXNDb25maWcuaHRtbCI+UG9zdGdyZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkxvY2FsaXphdGlvbiBhbmQgbGFuZ3VhZ2VzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCI+SW50ZXJuYXRpb25hbGlzYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0xhbmd1YWdlRWRpdG9yLmh0bWwiPkxhbmd1YWdlRWRpdG9yPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiPlRpbWVab25lSGFuZGxpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0VkaXRUZW1wbGF0ZXMuaHRtbCI+RWRpdFRlbXBsYXRlczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TkFUIFBvcnQgU2V0dGluZ3M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Qb3J0U2V0dGluZ3MuaHRtbCI+UG9ydCBzZXR0aW5nczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+UGVyZm9ybWFuY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIj5KVk0gcGVyZm9ybWFuY2UgdHVuaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Vc2VyIEludGVyZmFjZTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCI+VGhlbWVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9EYXNoYm9hcmQuaHRtbCI+RGFzaGJvYXJkPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIj5XZWJjYW0gcmVzb2x1dGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIj5Sb29tIGxheW91dCBvcHRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Ib3RLZXlzLmh0bWwiPkhvdCBLZXlzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5DdXN0b21pemF0aW9uPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViYXBwTmFtZVBhdGguaHRtbCI+V2ViYXBwIG5hbWUvcGF0aDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTmF2aWdhdGlvbi5odG1sIj5OYXZpZ2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiPkNhbGVuZGFyIGFuZCB0aW1lem9uZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIj5DdXN0b20gcm9vbSB0eXBlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIj5DdXN0b20gY3R5cHQgbWVjaGFuaXNtPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIj5HZW5lcmFsIENvbmZpZ3VyYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlNlY3VyaXR5PC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUmVzdHJpY3RlZEFjY2Vzcy5odG1sIj5SZXN0cmljdGVkIEFjY2VzczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUlRNUFNBbmRIVFRQUy5odG1sIj5SVE1QUyBhbmQgSFRUUFM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNvbnZlcnRlcnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiPk9wZW5PZmZpY2UgQ29udmVydGVyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiPkZGTVBFRyBWZXJzaW9uIFN3aXRjaDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q2x1c3RlcmluZzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NsdXN0ZXJpbmcuaHRtbCI+Q2x1c3RlcmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TWlzYzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0dldFZlcnNpb25JbmZvLmh0bWwiPkdldCB2ZXJzaW9uIGluZm88L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAorICAgIDwvZGl2PgorICAgICAKKyAgICA8YnIvPgorICAgIAorICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJPcGVubWVldGluZ3MgRXJyb3JzIHRhYmxlIj48c3Ryb25nPk9wZW5tZWV0aW5ncyBFcnJvcnMgdGFibGU8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBiZ2NvbG9yPSIjMDM5YWNjIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgQ29kZQorICAgIDwvdGg+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBiZ2NvbG9yPSIjMDM5YWNjIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgVHlwZQorICAgIDwvdGg+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBiZ2NvbG9yPSIjMDM5YWNjIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgRGVzY3JpcHRpb24KKyAgICA8L3RoPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAtMQorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgRXJyb3IKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIFVua25vd24gZXJyb3IuIFBsZWFzZSByZXBvcnQgdGhpcyB0byB0aGUgYWRtaW5pc3RyYXRvci4KKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAtMgorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgRXJyb3IKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIFBsZWFzZSBlbnRlciBlaXRoZXIgYW4gZW1haWwgYWRkcmVzcyBvciBhIHVzZXIgbmFtZQorICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIC0zCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBFcnJvcgorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgVGhlcmUgaXMgbm8gdXNlciBjb25uZWN0ZWQgdG8gdGhpcyB1c2VybmFtZQorICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIC00CisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBNZXNzYWdlCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBUaGUgZW1haWwgY29udGFpbmluZyBhIHNwZWNpYWwgbGluayBoYXMgYmVlbiBzZW50IHRvIHlvdXIgZW1haWwgYWRkcmVzcworICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIC01CisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBFcnJvcgorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgTm8gdXNlciBmb3VuZAorICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIC02CisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBFcnJvcgorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgVGhlIHBhc3N3b3JkcyB5b3UgZW50ZXJlZCB3ZXJlbid0IGlkZW50aWNhbAorICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIC03CisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBFcnJvcgorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgUGFzc3dvcmQgYW5kIG9yIHVzZXJuYW1lIHRvbyBzaG9ydCwgcmVxdWlyZWQgbWluaW11bSBsZW5ndGggZm9yIHVzZXIgbmFtZSAvIHBhc3N3b3JkIGFyZToKKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAtOAorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgTWVzc2FnZQorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgUGFzc3dvcmQgc2V0LiBZb3UgY2FuIG5vdyBsb2dpbi4KKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAtOQorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgRXJyb3IKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIE5vIHN1Y2ggZW1haWwgYWRkcmVzcyB3YXMgZm91bmQuIE1ha2Ugc3VyZSB5b3UgZW50ZXJlZCB0aGUgc2FtZSBlbWFpbCBhZGRyZXNzIHlvdSB1c2VkIHRvIGNyZWF0ZSB5b3VyIGFjY291bnQuCisgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgLTEwCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBFcnJvcgorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgVXNlcm5hbWUgbm90IGZvdW5kCisgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgLTExCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBFcnJvcgorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgSW52YWxpZCBwYXNzd29yZAorICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIC0xMgorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgTWVzc2FnZQorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgU3VjY2Vzc2Z1bGx5IGxvZ2dlZCBvdXQKKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAtMTMKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIEVycm9yCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBQYXNzd29yZCBhbmQgb3IgbG9naW4gaXMgdG9vIHNob3J0CisgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgLTE0CisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBFcnJvcgorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgUmVnaXN0cmF0aW9uIGRpc2FibGVkCisgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgLTE1CisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBFcnJvcgorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgVGhlIHVzZXJuYW1lIGlzIGFscmVhZHkgdXNlZAorICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIC0xNgorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgRXJyb3IKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIFN5c3RlbSBlcnJvciBwbGVhc2UgY29udGFjdCB0aGUgYWRtaW5pc3RyYXRvcgorICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIC0xNworICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgRXJyb3IKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIFRoZSBtYWlsIGFkZHJlc3MgaXMgYWxyZWFkeSByZWdpc3RlcmVkCisgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgLTE4CisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBFcnJvcgorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgWW91ciBhY2NvdW50IGhhcyBiZWVuIGNyZWF0ZWQuIFlvdSBjYW4gbm93IGxvZ2luLgorICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIC0xOQorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgRXJyb3IKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIEludmFsaWQgZW1haWwgYWRkcmVzcworICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIC0yMAorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgRXJyb3IKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIER1cGxpY2F0ZSBmaWxlIG5hbWUsIHBsZWFzZSBlbnRlciBhbm90aGVyCisgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgLTIxCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBFcnJvcgorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgRmlsZSBuYW1lIHRvbyBzaG9ydAorICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIC0yMgorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgRXJyb3IKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIENvdWxkIG5vdCBzYXZlIHRoZSBhZGRyZXNzCisgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgLTIzCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBNZXNzYWdlCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBVc2VyIGFkZGVkIGJ1dCB5b3UgbmVlZCB0byBhc3NpZ24gdGhpcyB1c2VyIHRvIGFuIHVzZXJncm91cCwgb3RoZXJ3aXNlIHRoZXkgd29uJ3QgYmUgYWJsZSB0byBsb2cgaW4KKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAtMjQKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIEVycm9yCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBObyBmaWVsZCBmb3VuZCBmb3IgdGhlIElECisgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgLTI1CisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBFcnJvcgorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgTm8gbGFiZWwgZm91bmQKKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAtMjYKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIEVycm9yCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBBZG1pbiBhdXRob3JpemF0aW9uIHJlcXVpcmVkCisgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgLTI3CisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBFcnJvcgorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgSW52YWxpZCBsYWJlbCBJRAorICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIC0yOAorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgTWVzc2FnZQorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgWW91IGhhdmUgZGVsZXRlZCB0aGUgbGFiZWwKKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAtMjkKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIEVycm9yCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBJbnZhbGlkIGxhYmVsIElECisgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgLTMwCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBNZXNzYWdlCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBUaGlzIHJvb20gaXMgZnVsbAorICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIC0zMQorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgRXJyb3IKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIE5vIGludml0YXRpb24gYXZhaWxhYmxlIGZvciB0aGlzIGludml0YXRpb24gY29kZQorICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIC0zMgorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgRXJyb3IKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIFRoaXMgaW52aXRhdGlvbiB3YXMgYWxyZWFkeSB1c2VkCisgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgLTMzCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBFcnJvcgorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgVGhlIGludml0YXRpb24gY29kZSBpcyBpbnZhbGlkCisgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgLTM0CisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBFcnJvcgorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgSW52YWxpZCBwYXNzd29yZAorICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIC0zNQorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgRXJyb3IKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIFRoaXMgdXNlciBpcyBhbHJlYWR5IGEgbWVtYmVyIG9mIHRoaXMgdXNlcmdyb3VwCisgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgLTM2CisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBFcnJvcgorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgVGhpcyBtZXRob2QgbmVlZHMgYW4gYWRtaW5zdHJhdGlvbiBhY2NvdW50IHRvIGJlIGludm9rZWQKKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAtMzcKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIEVycm9yCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBUaGVyZSB3YXMgbm8gc2Vzc2lvbiBhc3NvY2lhdGVkIHdpdGggdGhpcyBJRAorICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIC0zOAorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgRXJyb3IKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIFlvdSBjYW5ub3QgZGVsZXRlIHlvdXIgb3duIHVzZXIKKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAtMzkKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIEVycm9yCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBUaGlzIGlzIGFuIGFkbWluaXN0cmF0b3Igb3IgbW9kZXJhdG9yIGFjY291bnQuIFlvdSBjYW4gb25seSBlZGl0IHRoaXMgYWNjb3VudCB0aHJvdWdoIHRoZSBhZG1pbmlzdHJhdGlvbiBwYW5lbC4KKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAtNDAKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIE1lc3NhZ2UKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIFlvdSBoYXZlIHN1Y2Nlc3NmdWxseSBzaWduZWQgdXAuIEFuIGVtYWlsIHdpdGggYSB2ZXJpZmljYXRpb24gY29kZSB3aWxsIGJlIHNlbnQgdG8geW91ciBtYWlsYm94LgorICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIC00MQorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgRXJyb3IKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIFlvdXIgYWNjb3VudCBpcyBub3QgYWN0aXZhdGVkLiBQbGVhc2UgdXNlIHRoZSBsaW5rIGluIHRoZSBlbWFpbCB5b3UgcmVjZWl2ZWQgZHVyaW5nIHJlZ2lzdHJhdGlvbi4KKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAtNDIKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIEVycm9yCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBUaGlzIHNlc3Npb24gaGFzaCBoYXMgYWxyZWFkeSBiZWVuIHVzZWQKKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAtNDMKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIEVycm9yCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBZb3UgaGF2ZSB0byBlbnRlciB5b3VyIHBhc3N3b3JkIGFnYWluIHRvIGF1dG8gY3JlYXRlIHRoZSBTSVAgZGF0YQorICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIC00NAorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgRXJyb3IKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIFRoaXMgZW1haWwgaXMgYWxyZWFkeSB1c2VkIGJ5IGFub3RoZXIgdXNlci4KKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAtNDUKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIEVycm9yCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBUaGlzIHVzZXIgaXMgYWxyZWFkeSBpbiB5b3VyIGNvbnRhY3QgbGlzdCBvciBoYXMgcmVjZWl2ZWQgYW4gaW52aXRhdGlvbiB0byB5b3VyIGNvbnRhY3QgbGlzdCB0aGF0IGlzIG5vdCBhbnN3ZXJlZCB5ZXQuCisgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgLTQ2CisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBFcnJvcgorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgVGhlIHVzZXIgaXMgYWxyZWFkeSBkZW5pZWQuCisgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgLTQ3CisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBFcnJvcgorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgVGhlIHVzZXIgaXMgYWxyZWFkeSBhcHByb3ZlZC4KKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAtNDgKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIEVycm9yCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBUaGlzIHVzZXIgY29udGFjdCBoYXNoIGlzIGludmFsaWQuCisgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgLTQ5CisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBFcnJvcgorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgVGhlcmUgaXMgbm8gc3VjaCBjb250YWN0LgorICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIC01MAorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgRXJyb3IKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIFlvdSBpbnZpdGF0aW9uIGNvZGUgaXMgbm90IHZhbGlkLCB0aGUgY29kZSBpcyBvbmx5IHZhbGlkIGR1cmluZyB0aGlzIHNwZWNpZmljIGRhdGUgYW5kIHRpbWU6CisgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgLTUxCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBFcnJvcgorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgUGxlYXNlIGVudGVyIGEgcGFzc3dvcmQKKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAtNTIKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIEVycm9yCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBZb3UgbmVlZCBhbiBhY2NvdW50IHdpdGggdXNlciBsZXZlbCB1c2VyLCBtb2RlcmF0b3Igb3IgYWRtaW4KKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAtNTMKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIEVycm9yCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBQbGVhc2UgZW50ZXIgZW1haWwKKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAtNTQKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIEVycm9yCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBZb3UgZG9uJ3QgaGF2ZSB0aGUgcmlnaHQgdG8gZ2l2ZSB5b3Vyc2VsZiBvciBvdGhlcnMgZXhjbHVzaXZlIGF1ZGlvLiBZb3UgbmVlZCB0byBhcHBseSBmb3IgdGhlIHJpZ2h0IGZyb20gdGhlIG1vZGVyYXRvciBvciBhc2sgdGhlIG1vZGVyYXRvciB0byBnaXZlIHlvdSBleGNsdXNpdmUgYXVkaW8uCisgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgLTU1CisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBFcnJvcgorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgUGxlYXNlIHNwZWNpZnkgeW91ciB0aW1lem9uZQorICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPCEtLSBGT09URVIgLS0+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGhyIG5vc2hhZGU9Im5vc2hhZGUiIHNpemU9IjEiLz4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBhbGlnbj0iY2VudGVyIj48Zm9udCBjb2xvcj0iIzEyMzQ2NSIgc2l6ZT0iLTEiPjxlbT4KKyAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0ICYjMTY5OyAyMDAzLTIwMTMsIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorICAgICAgICAgICAgICAgICAgICA8L2VtPjwvZm9udD48L2Rpdj4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9ib2R5PgorICAgIDwvaHRtbD4KKzwhLS0gZW5kIHRoZSBwcm9jZXNzaW5nIC0tPgorCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCmRpZmYgLS1naXQgYS9kb2NzL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCBiL2RvY3MvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlOWZmMDQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbApAQCAtMCwwICsxLDczMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CisKKzwhLS0KK0NvcHlyaWdodCAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK3lvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCitodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworCis8IS0tIENvbnRlbnQgU3R5bGVzaGVldCBmb3IgU2l0ZSAtLT4KKworICAgICAgICAKKzwhLS0gc3RhcnQgdGhlIHByb2Nlc3NpbmcgLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDwhLS0gR0VORVJBVEVEIEZJTEUsIERPIE5PVCBFRElULCBFRElUIFRIRSBYTUwgRklMRSBJTiB4ZG9jcyBJTlNURUFEISAtLT4KKyAgICA8IS0tIE1haW4gUGFnZSBTZWN0aW9uIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8aHRtbD4KKyAgICAgICAgPGhlYWQ+CisgICAgICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIvPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSIKKwkJCU9wZW5NZWV0aW5ncyBUZWFtCisJCSI+CisgICAgICAgICAgICA8bWV0YSBuYW1lPSJlbWFpbCIgY29udGVudD0ic2ViYXdhZ25lckBhcGFjaGUub3JnIj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICA8dGl0bGU+QXBhY2hlIE9wZW5NZWV0aW5ncyAtIEhvd3RvIHN3aXRjaCBiZXR3ZWVuIGRpZmZlcmVudCB2ZXJzaW9ucyBvZiBGRk1QRUcgPC90aXRsZT4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9vcGVubWVldGluZ3MuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9qcXVlcnktdWkuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2luLXNsaWRlci1zdHlsZXMuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2xvcmJveC5jc3MiIC8+CisgICAgICAgICAgICAKKwkJCTwhLS0gQWRkIGpRdWVyeSBsaWJyYXJ5IC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LTEuNy4xLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPCEtLSBBZGQgY29pbnNsaWRlciBwbHVnaW5zIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvY29pbi1zbGlkZXIubWluLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPCEtLSBBZGQgY29sb3Jib3ggcGx1Z2luIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LmNvbG9yYm94LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmNvcmUuanMiPjwvc2NyaXB0PgorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS53aWRnZXQuanMiPjwvc2NyaXB0PgorCQkKKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkuYWNjb3JkaW9uLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdD4KKwkJCSQoZnVuY3Rpb24oKSB7CisJCQkJJCggIiNhY2NvcmRpb24iICkuYWNjb3JkaW9uKHsKKwkJCQkJYXV0b0hlaWdodDogZmFsc2UsCisJCQkJCW5hdmlnYXRpb246IHRydWUsCisJCQkJCW5hdmlnYXRpb25GaWx0ZXI6IGZ1bmN0aW9uICgpIHsKKwkJCQkJCXZhciBzaWRlYmFySHJlZkFycmF5ID0gdGhpcy5ocmVmLnNwbGl0KCIvIik7CisgICAgCQkJCQl2YXIgc2lkZUJhckxhc3RTdHJpbmcgPSBzaWRlYmFySHJlZkFycmF5W3NpZGViYXJIcmVmQXJyYXkubGVuZ3RoIC0gMV0udG9Mb3dlckNhc2UoKTsKKwkJCQkJCQorCQkJCQkJaWYgKHNpZGVCYXJMYXN0U3RyaW5nLmluZGV4T2YoIiMiKSA9PSAtMSkgeworCQkJCQkJCXJldHVybiBmYWxzZTsKKwkJCQkJCX0KKwkJCQkJCQorCQkJCQkJCQkJCQkJLyogZG9jdW1lbnQubG9jYXRpb24uaHJlZiAqLworCQkJCQkJdmFyIGN1cnJlbnRTZWN0aW9uID0gIiI7CisJCQkJCQkKKwkJCQkJCXZhciBjdXJyZW50TG9jYXRpb24gPSAiIjsKKwkJCQkJCXZhciBjdXJyZW50TGluayA9ICIiOworCQkJCQkJaWYgKGZhbHNlKSB7CisJCQkJCQkKKwkJCQkJCX0KKyAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5kZXguaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5kZXguaHRtbCIuc3Vic3RyKDEsICIvaW5kZXguaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9saWNlbnNlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2xpY2Vuc2UuaHRtbCIuc3Vic3RyKDEsICIvbGljZW5zZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5zdWJzdHIoMSwgImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZG93bmxvYWRzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2Rvd25sb2Fkcy5odG1sIi5zdWJzdHIoMSwgIi9kb3dubG9hZHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiLnN1YnN0cigxLCAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9pbnN0YWxsYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5zdGFsbGF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL2luc3RhbGxhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1VwZ3JhZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvVXBncmFkZS5odG1sIi5zdWJzdHIoMSwgIi9VcGdyYWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIuc3Vic3RyKDEsICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db21tYW5kTGluZUFkbWluLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIuc3Vic3RyKDEsICIvQ29tbWFuZExpbmVBZG1pbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9nZXQtaW52b2x2ZWQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9nZXQtaW52b2x2ZWQuaHRtbCIuc3Vic3RyKDEsICIvZ2V0LWludm9sdmVkLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGVhbS1saXN0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdGVhbS1saXN0Lmh0bWwiLnN1YnN0cigxLCAiL3RlYW0tbGlzdC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL21haWwtbGlzdHMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9tYWlsLWxpc3RzLmh0bWwiLnN1YnN0cigxLCAiL21haWwtbGlzdHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLnN1YnN0cigxLCAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3N2bi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvc3ZuLmh0bWwiLnN1YnN0cigxLCAiL3N2bi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIuc3Vic3RyKDEsICJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2RlcGVuZGVuY2llcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZGVwZW5kZW5jaWVzLmh0bWwiLnN1YnN0cigxLCAiL2RlcGVuZGVuY2llcy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pVbml0VGVzdGluZy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSlVuaXRUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL0pVbml0VGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01hbnVhbFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01hbnVhbFRlc3RpbmcuaHRtbCIuc3Vic3RyKDEsICIvTWFudWFsVGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlbGVhc2VHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVsZWFzZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1JlbGVhc2VHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYnNpdGVHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvV2Vic2l0ZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1dlYnNpdGVHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Tb2FwUmVzdEFQSS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU29hcFJlc3RBUEkuaHRtbCIuc3Vic3RyKDEsICIvU29hcFJlc3RBUEkuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZXN0QVBJU2FtcGxlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZXN0QVBJU2FtcGxlLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RBUElTYW1wbGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MZGFwQW5kQURTLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9MZGFwQW5kQURTLmh0bWwiLnN1YnN0cigxLCAiL0xkYXBBbmRBRFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FcnJvcnNUYWJsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRXJyb3JzVGFibGUuaHRtbCIuc3Vic3RyKDEsICIvRXJyb3JzVGFibGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTW9vZGxlUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01vb2RsZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Nb29kbGVQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TYWthaVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TYWthaVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TYWthaVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ppcmFQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSmlyYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9KaXJhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSm9vbWxhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pvb21sYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Kb29tbGFQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EcnVwYWxQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRHJ1cGFsUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0RydXBhbFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0JpdHJpeFBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CaXRyaXhQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvQml0cml4UGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TdWdhckNSTVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TdWdhckNSTVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TdWdhckNSTVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlZG1pbmVQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVkbWluZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9SZWRtaW5lUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSUJNREIyQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSUJNREIyQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL0lCTURCMkNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3JhY2xlQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3JhY2xlQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL09yYWNsZUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTXlTUUxDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9NeVNRTENvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9NeVNRTENvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUG9zdGdyZXNDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MYW5ndWFnZUVkaXRvci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLnN1YnN0cigxLCAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5zdWJzdHIoMSwgIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FZGl0VGVtcGxhdGVzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRWRpdFRlbXBsYXRlcy5odG1sIi5zdWJzdHIoMSwgIi9FZGl0VGVtcGxhdGVzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1BvcnRTZXR0aW5ncy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1BvcnRTZXR0aW5ncy5odG1sIi5zdWJzdHIoMSwgIi9Qb3J0U2V0dGluZ3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5zdWJzdHIoMSwgIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5zdWJzdHIoMSwgIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EYXNoYm9hcmQuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9EYXNoYm9hcmQuaHRtbCIuc3Vic3RyKDEsICIvRGFzaGJvYXJkLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLnN1YnN0cigxLCAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Ib3RLZXlzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSG90S2V5cy5odG1sIi5zdWJzdHIoMSwgIi9Ib3RLZXlzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYmFwcE5hbWVQYXRoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvV2ViYXBwTmFtZVBhdGguaHRtbCIuc3Vic3RyKDEsICIvV2ViYXBwTmFtZVBhdGguaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL05hdmlnYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9OYXZpZ2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL05hdmlnYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLnN1YnN0cigxLCAiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIuc3Vic3RyKDEsICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIuc3Vic3RyKDEsICIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUlRNUFNBbmRIVFRQUy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1JUTVBTQW5kSFRUUFMuaHRtbCIuc3Vic3RyKDEsICIvUlRNUFNBbmRIVFRQUy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5zdWJzdHIoMSwgIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5zdWJzdHIoMSwgIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NsdXN0ZXJpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DbHVzdGVyaW5nLmh0bWwiLnN1YnN0cigxLCAiL0NsdXN0ZXJpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvR2V0VmVyc2lvbkluZm8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9HZXRWZXJzaW9uSW5mby5odG1sIi5zdWJzdHIoMSwgIi9HZXRWZXJzaW9uSW5mby5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkgICAgCQkJCQkKKyAgICAJCQkJCWN1cnJlbnRMaW5rID0gY3VycmVudExpbmsudG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCWN1cnJlbnRMb2NhdGlvbiA9IGN1cnJlbnRMb2NhdGlvbi50b0xvd2VyQ2FzZSgpOworICAgIAkJCQkJCisJCQkJCQlyZXR1cm4gc2lkZUJhckxhc3RTdHJpbmcgPT0gY3VycmVudExpbmsrIiMiK2N1cnJlbnRMb2NhdGlvbjsKKwkJCQkJfQorCQkJCX0pOworCQkJfSk7CisJCQk8L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCQkJCSQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgeworCQkJCQkkKCcuZmFuY3lib3gtYnV0dG9ucycpLmNvbG9yYm94KHtyZWw6J2ZhbmN5Ym94LWJ1dHRvbnMnLHdpZHRoOiI3NSUiLCBoZWlnaHQ6Ijc1JSJ9KTsKKwkJCQkJJCgnI2FjY29yZGlvbiBhJykuZWFjaChmdW5jdGlvbigpIHsKKwkJCQkgICAgICB2YXIgYSA9ICQodGhpcyk7CisJCQkJICAgICAgdmFyIGhyZWYgPSBhLmF0dHIoImhyZWYiKTsKKwkJCQkgICAgICBpZiAoaHJlZi5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkgICAgICAJICB2YXIgY29tcGFyZUl0ID0gaHJlZi5zdWJzdHIoMiwgaHJlZi5sZW5ndGgpOworCQkJCQkgICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKGNvbXBhcmVJdCkhPSAtMSkgeworCQkJCQkgICAgICAgYS5hZGRDbGFzcygnYWN0aXZlJyk7CisJCQkJCSAgICAgIH0KKwkJCQkgICAgICB9CisJCQkJICAgIH0pOworCQkJCQkkKCcjY29pbi1zbGlkZXInKS5jb2luc2xpZGVyKHsgd2lkdGg6IDY0MCxoZWlnaHQ6IDQwMCwgZGVsYXk6IDQwMDAgIH0pOwkJCQkJCisJCQkJfSk7CisJCQk8L3NjcmlwdD4JCisJCQkJCQkKKwkJCTxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisJCQkJLmZhbmN5Ym94LWN1c3RvbSAuZmFuY3lib3gtb3V0ZXIgeworCQkJCQlib3gtc2hhZG93OiAwIDAgNTBweCAjMjIyOworCQkJCX0KKwkJCTwvc3R5bGU+CisgICAgICAgIDwvaGVhZD4KKworICAgICAgICA8Ym9keSBiZ2NvbG9yPSIjZmZmZmZmIiB0ZXh0PSIjMDAwMDAwIiBsaW5rPSIjMTIzNDY1IiB2bGluaz0iIzEyMzQ2NSIgYWxpbms9IiMwMDAwMDAiPiAgCisgICAgICAgIAk8ZGl2IGNsYXNzPSJtYWluYm9keSIgc3R5bGU9IndpZHRoOiAxMDAlOyI+CisgICAgICAgIAk8ZGl2IGNsYXNzPSJzdXBlcmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIj4KKyAgICAgICAgICAgICAgICA8IS0tIFRPUCBJTUFHRSAtLT4KKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCI+Cis8YSBocmVmPSJodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvIj48aW1nIHNyYz0iLi9pbWFnZXMvbG9nby0yLmpwZyIgYWx0PSJBcGFjaGUgT3Blbk1lZXRpbmdzIiBib3JkZXI9IjAiLz48L2E+Cis8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCIgPgorCTxhIGhyZWY9ImRlbW8uaHRtbCI+RGVtbzwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJkb3dubG9hZHMuaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5Eb3dubG9hZDwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJpbnN0YWxsYXRpb24uaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5JbnN0YWxsYXRpb248L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MiIHRhcmdldD0iX0JMQU5LIj5XaWtpPC9hPgorCTxzcGFuPiZuYnNwOzwvc3Bhbj4KKzwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjQiPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8IS0tIExFRlQgU0lERSBOQVZJR0FUSU9OIC0tPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiIG5vd3JhcD0ibm93cmFwIj4KKworICAgICAgICAgICAgICAgICAgICA8IS0tIHNwZWNpYWwgQUNvbiBMb2dvIC0gbGVhdmUgaGVyZSBmb3IgbmV4dCB0aW1lCisgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9hcGFjaGVjb24uY29tLzIwMDUvVVMvIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vYXBhY2hlLm9yZy9pbWFnZXMvYWMyMDA1dXNfYmx1ZV8xMjV4MTI1LmpwZyIgaGVpZ2h0PSIxMjUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPSIxMjUiIGJvcmRlcj0iMCIgYWx0PSJBcGFjaGVDb24gVVMgMjAwNSIgLz4KKyAgICAgICAgICAgICAgICAgICAgPC9hPiAgLS0+CisKKyAgICAgICAgICAgICAgICAgICA8IS0tIHJlZ3VsYXIgbWVudSAtLT4KKworICAgICAgICAgICAgICAgICAgICAKKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8ZGl2IGlkPSJhY2NvcmRpb24iIHN0eWxlPSJ3aWR0aDogMTAwJSI+CisgICAgCisgICAgICAgICAgICAJPGgzPjxhIGhyZWY9IiNHZW5lcmFsIj5HZW5lcmFsPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9pbmRleC5odG1sIj5Ib21lPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9saWNlbnNlLmh0bWwiPkxpY2Vuc2U8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5BU0Y8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2Rvd25sb2Fkcy5odG1sIj5Eb3dubG9hZHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIj5Db21tZXJjaWFsIFN1cHBvcnQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0luc3RhbGxhdGlvbmFuZFVwZ3JhZGUiPkluc3RhbGxhdGlvbiBhbmQgVXBncmFkZTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5zdGFsbGF0aW9uLmh0bWwiPkluc3RhbGxhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vVXBncmFkZS5odG1sIj5VcGdyYWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLmh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIj5UdXRvcmlhbHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCI+Q29tbWFuZCBMaW5lIEFkbWluPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb21tdW5pdHkiPkNvbW11bml0eTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZ2V0LWludm9sdmVkLmh0bWwiPkdldCBJbnZvbHZlZDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdGVhbS1saXN0Lmh0bWwiPkNvbW1pdHRlcnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL21haWwtbGlzdHMuaHRtbCI+TWFpbGluZyBMaXN0czwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIj5XaWtpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNEZXZlbG9wbWVudCI+RGV2ZWxvcG1lbnQ8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3N2bi5odG1sIj5Tb3VyY2UgQ29kZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiPkJ1Z3MgLyBJc3N1ZXMgKEpJUkEpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kZXBlbmRlbmNpZXMuaHRtbCI+RGVwZW5kZW5jaWVzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CdWlsZEluc3RydWN0aW9ucy5odG1sIj5CdWlsZCBJbnN0cnVjdGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pVbml0VGVzdGluZy5odG1sIj5KVW5pdCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9NYW51YWxUZXN0aW5nLmh0bWwiPk1hbnVhbCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWxlYXNlR3VpZGUuaHRtbCI+UmVsZWFzZSBHdWlkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vV2Vic2l0ZUd1aWRlLmh0bWwiPldlYnNpdGUgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0ludGVncmF0aW9uIj5JbnRlZ3JhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU29hcFJlc3RBUEkuaHRtbCI+U09BUC9SRVNUIEFQSTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVzdEFQSVNhbXBsZS5odG1sIj5SRVNUIEFQSSBTYW1wbGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0xkYXBBbmRBRFMuaHRtbCI+TGRhcCBhbmQgQURTPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIj5Wb0lQIGFuZCBTSVA8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0Vycm9yc1RhYmxlLmh0bWwiPkVycm9ycyB0YWJsZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjUGx1Z2lucyI+UGx1Z2luczwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTW9vZGxlUGx1Z2luLmh0bWwiPk1vb2RsZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Nha2FpUGx1Z2luLmh0bWwiPlNha2FpIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSmlyYVBsdWdpbi5odG1sIj5KaXJhIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSm9vbWxhUGx1Z2luLmh0bWwiPkpvb21sYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0RydXBhbFBsdWdpbi5odG1sIj5EcnVwYWwgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CaXRyaXhQbHVnaW4uaHRtbCI+Qml0cml4IFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQ29uZmx1ZW5jZVBsdWdpbi5odG1sIj5Db25mbHVlbmNlIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU3VnYXJDUk1QbHVnaW4uaHRtbCI+U3VnYXJDUk0gUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWRtaW5lUGx1Z2luLmh0bWwiPlJlZG1pbmUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb25maWd1cmF0aW9uIj5Db25maWd1cmF0aW9uPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5EQiBTYW1wbGUgQ29uZmlndXJhdGlvbnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIj5BcGFjaGUgRGVyYnk8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0lCTURCMkNvbmZpZy5odG1sIj5JQk0gREIyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcmFjbGVDb25maWcuaHRtbCI+T3JhY2xlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9NeVNRTENvbmZpZy5odG1sIj5NeVNRTDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9zdGdyZXNDb25maWcuaHRtbCI+UG9zdGdyZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkxvY2FsaXphdGlvbiBhbmQgbGFuZ3VhZ2VzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCI+SW50ZXJuYXRpb25hbGlzYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0xhbmd1YWdlRWRpdG9yLmh0bWwiPkxhbmd1YWdlRWRpdG9yPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiPlRpbWVab25lSGFuZGxpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0VkaXRUZW1wbGF0ZXMuaHRtbCI+RWRpdFRlbXBsYXRlczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TkFUIFBvcnQgU2V0dGluZ3M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Qb3J0U2V0dGluZ3MuaHRtbCI+UG9ydCBzZXR0aW5nczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+UGVyZm9ybWFuY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIj5KVk0gcGVyZm9ybWFuY2UgdHVuaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Vc2VyIEludGVyZmFjZTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCI+VGhlbWVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9EYXNoYm9hcmQuaHRtbCI+RGFzaGJvYXJkPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIj5XZWJjYW0gcmVzb2x1dGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIj5Sb29tIGxheW91dCBvcHRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Ib3RLZXlzLmh0bWwiPkhvdCBLZXlzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5DdXN0b21pemF0aW9uPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViYXBwTmFtZVBhdGguaHRtbCI+V2ViYXBwIG5hbWUvcGF0aDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTmF2aWdhdGlvbi5odG1sIj5OYXZpZ2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiPkNhbGVuZGFyIGFuZCB0aW1lem9uZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIj5DdXN0b20gcm9vbSB0eXBlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIj5DdXN0b20gY3R5cHQgbWVjaGFuaXNtPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIj5HZW5lcmFsIENvbmZpZ3VyYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlNlY3VyaXR5PC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUmVzdHJpY3RlZEFjY2Vzcy5odG1sIj5SZXN0cmljdGVkIEFjY2VzczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUlRNUFNBbmRIVFRQUy5odG1sIj5SVE1QUyBhbmQgSFRUUFM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNvbnZlcnRlcnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiPk9wZW5PZmZpY2UgQ29udmVydGVyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiPkZGTVBFRyBWZXJzaW9uIFN3aXRjaDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q2x1c3RlcmluZzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NsdXN0ZXJpbmcuaHRtbCI+Q2x1c3RlcmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TWlzYzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0dldFZlcnNpb25JbmZvLmh0bWwiPkdldCB2ZXJzaW9uIGluZm88L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAorICAgIDwvZGl2PgorICAgICAKKyAgICA8YnIvPgorICAgIAorICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJEZWZhdWx0IENvbmZpZ3VyYXRpb24iPjxzdHJvbmc+RGVmYXVsdCBDb25maWd1cmF0aW9uPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5GRk1QRUcgaGFzIGEgY2hhbmdlIGluIGl0cyBBUEkgKHBvc3NpYmx5IHNpbmNlIEdJVCByZXZpc2lvbg0KKwkJCQk4OGJmZTQ1MTgpDQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+U2luY2UgVmVyc2lvbiAxLjkueCBvZiBPcGVuTWVldGluZ3M6IEJ5IGRlZmF1bHQgT3Blbk1lZXRpbmdzDQorCQkJCWV4cGVjdHMgeW91IHRvIGhhdmUgYSBuZXcgdmVyc2lvbiBvZiBGRk1QRUcgb24geW91ciBPcGVuTWVldGluZ3MNCisJCQkJc2VydmVyIGluc3RhbGxlZCBhbmQgaXQgd2lsbCB1c2UgdGhlIG5ldyBBUEkgc3R5bGUgdG8gY29tbXVuaWNhdGUNCisJCQkJd2l0aCBGRk1QRUcuDQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iU3dpdGNoaW5nIHRvIG9sZCBGRk1QRUcgQVBJIj48c3Ryb25nPlN3aXRjaGluZyB0byBvbGQgRkZNUEVHIEFQSTwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgICA8aHIgc3R5bGU9IndpZHRoOjEwMCU7IGNvbG9yOiM5OTk5OTk7IGJhY2tncm91bmQtY29sb3I6Izk5OTk5OTsgaGVpZ2h0OjFweDsgYm9yZGVyOjBweDsiLz4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQorCQkJCUlmIHlvdSB3YW50IHRvIHN3aXRjaCB0byB0aGUgb2xkIHN0eWxlIHlvdSBjYW4gY2hhbmdlIHRoYXQgdXNpbmcgdGhlDQorCQkJCWNvbmZpZyBrZXk6DQorCQkJCTx0dD51c2Uub2xkLnN0eWxlLmZmbXBlZy5tYXAub3B0aW9uPC90dD4NCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJU2V0IHRoaXMgdmFsdWUgdG8NCisJCQkJPHR0PjE8L3R0Pg0KKwkJCQl0byBoYXZlIHRoZSBvbGQgcGFyYW1zIGluIHRoZSBBUEkgY2FsbCB0byBGRk1QRUcuDQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+UmVmZXJlbmNlczogIDwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4NCisJCQkJPGxpPg0KKwkJCQkJPGEgaHJlZj0iaHR0cDovL2ZmbXBlZy11c2Vycy45MzMyODIubjQubmFiYmxlLmNvbS9JbnZhbGlkLXN0cmVhbS1zcGVjaWZpZXItMC1TdHJlYW0tbWFwLTAtMC1tYXRjaGVzLW5vLXN0cmVhbXMtQ2hhbmdlcy1pbi1GRk1QRUctbWFwLW9wdGlvbi10ZDQwOTExNjUuaHRtbCIgcmVsPSJub2ZvbGxvdyI+aHR0cDovL2ZmbXBlZy11c2Vycy45MzMyODIubjQubmFiYmxlLmNvbS9JbnZhbGlkLXN0cmVhbS1zcGVjaWZpZXItMC1TdHJlYW0tbWFwLTAtMC1tYXRjaGVzLW5vLXN0cmVhbXMtQ2hhbmdlcy1pbi1GRk1QRUctbWFwLW9wdGlvbi10ZDQwOTExNjUuaHRtbA0KKwkJCQkJPC9hPg0KKwkJCQk8L2xpPg0KKwkJCTwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDwhLS0gRk9PVEVSIC0tPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgYWxpZ249ImNlbnRlciI+PGZvbnQgY29sb3I9IiMxMjM0NjUiIHNpemU9Ii0xIj48ZW0+CisgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAmIzE2OTsgMjAwMy0yMDEzLCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyAgICAgICAgICAgICAgICAgICAgPC9lbT48L2ZvbnQ+PC9kaXY+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvYm9keT4KKyAgICA8L2h0bWw+Cis8IS0tIGVuZCB0aGUgcHJvY2Vzc2luZyAtLT4KKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKwpkaWZmIC0tZ2l0IGEvZG9jcy9GaWxlU2VydmljZS5odG1sIGIvZG9jcy9GaWxlU2VydmljZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3YjZiYmIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL0ZpbGVTZXJ2aWNlLmh0bWwKQEAgLTAsMCArMSwxNTU1IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4NCis8IS0tDQorQ29weXJpZ2h0IDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24NCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorDQoraHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorDQorVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKy0tPg0KKw0KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+DQorICAgIDwhLS0gR0VORVJBVEVEIEZJTEUsIERPIE5PVCBFRElULCBFRElUIFRIRSBURU1QTEFURSBJTlNURUFEISAtLT4NCisgICAgPCEtLSBNYWluIFBhZ2UgU2VjdGlvbiAtLT4NCisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPg0KKyAgICANCisgICAgIDxodG1sPg0KKyAgICAgICAgPGhlYWQ+DQorCQk8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIi8+DQorCQk8bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9Ik9wZW5NZWV0aW5ncyBUZWFtIj4NCisJCTxtZXRhIG5hbWU9ImVtYWlsIiBjb250ZW50PSJzZWJhd2FnbmVyQGFwYWNoZS5vcmciPg0KKwkJPHRpdGxlPk9wZW5NZWV0aW5ncyBBUEkgTWV0aG9kczwvdGl0bGU+DQorCQk8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJvcGVubWVldGluZ3NfZG9jcy5jc3MiPg0KKyAgICAgICAgPC9oZWFkPg0KKwk8Ym9keT4NCisJDQorCQk8aDM+QXZhaWxhYmxlIFdlYlNlcnZpY2VzOjwvaDM+DQorCQ0KKwkJPGlmcmFtZSBzcmM9IldlYnNlcnZpY2VJbmRleC5odG1sIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIyMTAiIG5hbWU9IldlYnNlcnZpY2VJbmRleC5odG1sIg0KKwkJCXNjcm9sbGluZz0ibm8iIG1hcmdpbmhlaWdodD0iMCIgbWFyZ2lud2lkdGg9IjAiIGZyYW1lYm9yZGVyPSIwIj4NCisJCSAgPHA+WW91ciBCcm93c2VyIGRvZXMgbm90IHN1cHBvcnQgZnJhbWVzIC4uLjwvcD4NCisJCTwvaWZyYW1lPg0KKwkJDQorCQk8aHIgLz4NCisJDQorCSAgIDxoMz5XZWJTZXJ2aWNlOiBGaWxlU2VydmljZTwvaDM+DQorCSAgIDxwPkNvbnRhaW5zIG1ldGhvZHMgdG8gaW1wb3J0IGFuZCB1cGxvYWQgZmlsZXMgaW50byB0aGUgRmlsZXMgc2VjdGlvbiBvZiB0aGUKKyBjb25mZXJlbmNlIHJvb20gYW5kIHRoZSBwZXJzb25hbCBkcml2ZSBvZiBhbnkgdXNlcjxwPg0KKwkgICA8cD5XU0RMIHNhbXBsZSBVcmw6IDxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvRmlsZVNlcnZpY2U/d3NkbCI+aHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9GaWxlU2VydmljZT93c2RsPC9hPjxwPg0KKwkNCisJPCEtLSBMaW5rcyB0byBNZXRob2RzIC0tPg0KKwkgICA8aDM+SW5kZXggb2YgTWV0aG9kcyBhdmFpbGFibGUgaW4gRmlsZVNlcnZpY2U8L2gzPg0KKwkgICANCisgICAgICAgPGRpdiBjbGFzcz0ibmF2aWdhdGlvbiI+DQorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIjaW1wb3J0RmlsZSI+PGI+aW1wb3J0RmlsZTwvYj48L2E+PGJyLz4NCisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2aWdhdGlvbl9jb21tZW50Ij48aSA+SW1wb3J0IGZpbGUgZnJvbSBleHRlcm5hbCBzb3VyY2UKKyAKKyB0byB1cGxvYWQgYSBmaWxlIHRvIGEgcm9vbS1kcml2ZSB5b3Ugc3BlY2lmeTogZXh0ZXJuYWxVc2VySWQsIHVzZXIgaWYgb2YKKyBvcGVubWVldGluZ3MgdXNlciBmb3Igd2hpY2ggd2UgdXBsb2FkIHRoZSBmaWxlIHJvb21faWQgPSBvcGVubWVldGluZ3MKKyByb29tIGlkIGlzT3duZXIgPSAwIHBhcmVudEZvbGRlcklkID0gMAorIAorIHRvIHVwbG9hZCBhIGZpbGUgdG8gYSBwcml2YXRlLWRyaXZlIHlvdSBzcGVjaWZ5OiBleHRlcm5hbFVzZXJJZCwgdXNlciBpZgorIG9mIG9wZW5tZWV0aW5ncyB1c2VyIGZvciB3aGljaCB3ZSB1cGxvYWQgdGhlIGZpbGUgcm9vbV9pZCA9IG9wZW5tZWV0aW5ncworIHJvb20gaWQgaXNPd25lciA9IDEgcGFyZW50Rm9sZGVySWQgPSAtMjwvaT48L2Rpdj4NCisgICAgICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIjaW1wb3J0RmlsZUJ5SW50ZXJuYWxVc2VySWQiPjxiPmltcG9ydEZpbGVCeUludGVybmFsVXNlcklkPC9iPjwvYT48YnIvPg0KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uX2NvbW1lbnQiPjxpID5JbXBvcnQgZmlsZSBmcm9tIGV4dGVybmFsIHNvdXJjZQorIAorIHRvIHVwbG9hZCBhIGZpbGUgdG8gYSByb29tLWRyaXZlIHlvdSBzcGVjaWZ5OiBpbnRlcm5hbFVzZXJJZCwgdXNlciBpZiBvZgorIG9wZW5tZWV0aW5ncyB1c2VyIGZvciB3aGljaCB3ZSB1cGxvYWQgdGhlIGZpbGUgcm9vbV9pZCA9IG9wZW5tZWV0aW5ncworIHJvb20gaWQgaXNPd25lciA9IDAgcGFyZW50Rm9sZGVySWQgPSAwCisgCisgdG8gdXBsb2FkIGEgZmlsZSB0byBhIHByaXZhdGUtZHJpdmUgeW91IHNwZWNpZnk6IGludGVybmFsVXNlcklkLCB1c2VyIGlmCisgb2Ygb3Blbm1lZXRpbmdzIHVzZXIgZm9yIHdoaWNoIHdlIHVwbG9hZCB0aGUgZmlsZSByb29tX2lkID0gb3Blbm1lZXRpbmdzCisgcm9vbSBpZCBpc093bmVyID0gMSBwYXJlbnRGb2xkZXJJZCA9IC0yPC9pPjwvZGl2Pg0KKyAgICAgICAgICAgICAgICA8L2Rpdj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNhZGRGb2xkZXJCeUV4dGVybmFsVXNlcklkQW5kVHlwZSI+PGI+YWRkRm9sZGVyQnlFeHRlcm5hbFVzZXJJZEFuZFR5cGU8L2I+PC9hPjxici8+DQorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb25fY29tbWVudCI+PGkgPnRvIGFkZCBhIGZvbGRlciB0byB0aGUgcHJpdmF0ZSBkcml2ZSwgc2V0IHBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCA9IDAKKyBhbmQgaXNPd25lciB0byAxL3RydWUgYW5kIGV4dGVybmFsVXNlcklkL2V4dGVybmFsVXNlclR5cGUgdG8gYSB2YWxpZCB1c2VyPC9pPjwvZGl2Pg0KKyAgICAgICAgICAgICAgICA8L2Rpdj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNhZGRGb2xkZXJCeVVzZXJJZCI+PGI+YWRkRm9sZGVyQnlVc2VySWQ8L2I+PC9hPjxici8+DQorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb25fY29tbWVudCI+PGkgPnRvIGFkZCBhIGZvbGRlciB0byB0aGUgcHJpdmF0ZSBkcml2ZSwgc2V0IHBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCA9IDAKKyBhbmQgaXNPd25lciB0byAxL3RydWUgYW5kIHVzZXJJZCB0byBhIHZhbGlkIHVzZXI8L2k+PC9kaXY+DQorICAgICAgICAgICAgICAgIDwvZGl2Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2FkZEZvbGRlclNlbGYiPjxiPmFkZEZvbGRlclNlbGY8L2I+PC9hPjxici8+DQorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb25fY29tbWVudCI+PGkgPkFkZCBhIGZvbGRlciBieSB0aGUgY3VycmVudCB1c2VyIC0gc2ltaWxhciB0byBSVE1QIENhbGw8L2k+PC9kaXY+DQorICAgICAgICAgICAgICAgIDwvZGl2Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2RlbGV0ZUZpbGVPckZvbGRlckJ5RXh0ZXJuYWxJZEFuZFR5cGUiPjxiPmRlbGV0ZUZpbGVPckZvbGRlckJ5RXh0ZXJuYWxJZEFuZFR5cGU8L2I+PC9hPjxici8+DQorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb25fY29tbWVudCI+PGkgPmRlbGV0ZXMgYSBmaWxlIGJ5IGl0cyBleHRlcm5hbCBJZCBhbmQgdHlwZTwvaT48L2Rpdj4NCisgICAgICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIjZGVsZXRlRmlsZU9yRm9sZGVyIj48Yj5kZWxldGVGaWxlT3JGb2xkZXI8L2I+PC9hPjxici8+DQorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb25fY29tbWVudCI+PGkgPmRlbGV0ZXMgZmlsZXMgb3IgZm9sZGVycyBiYXNlZCBvbiBpdCBpZDwvaT48L2Rpdj4NCisgICAgICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIjZGVsZXRlRmlsZU9yRm9sZGVyU2VsZiI+PGI+ZGVsZXRlRmlsZU9yRm9sZGVyU2VsZjwvYj48L2E+PGJyLz4NCisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2aWdhdGlvbl9jb21tZW50Ij48aSA+ZGVsZXRlcyBmaWxlcyBvciBmb2xkZXJzIGJhc2VkIG9uIGl0IGlkPC9pPjwvZGl2Pg0KKyAgICAgICAgICAgICAgICA8L2Rpdj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnZXRJbXBvcnRGaWxlRXh0ZW5zaW9ucyI+PGI+Z2V0SW1wb3J0RmlsZUV4dGVuc2lvbnM8L2I+PC9hPjxici8+DQorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb25fY29tbWVudCI+PGkgPkdldCBhdmFpbGFibGUgaW1wb3J0IEZpbGUgRXh0ZW5zaW9uIGFsbG93ZWQgZHVyaW5nIGltcG9ydDwvaT48L2Rpdj4NCisgICAgICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ2V0UHJlc2VudGF0aW9uUHJldmlld0ZpbGVFeHBsb3JlciI+PGI+Z2V0UHJlc2VudGF0aW9uUHJldmlld0ZpbGVFeHBsb3JlcjwvYj48L2E+PGJyLz4NCisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2aWdhdGlvbl9jb21tZW50Ij48aSA+R2V0IGEgTGlicmFyeVByZXNlbnRhdGlvbi1PYmplY3QgZm9yIGEgY2VydGFpbiBmaWxlPC9pPjwvZGl2Pg0KKyAgICAgICAgICAgICAgICA8L2Rpdj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnZXRGaWxlRXhwbG9yZXJCeVJvb20iPjxiPmdldEZpbGVFeHBsb3JlckJ5Um9vbTwvYj48L2E+PGJyLz4NCisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2aWdhdGlvbl9jb21tZW50Ij48aSA+R2V0IGEgRmlsZSBFeHBsb3JlciBPYmplY3QgYnkgYSBnaXZlbiBSb29tIGFuZCBvd25lciBpZDwvaT48L2Rpdj4NCisgICAgICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ2V0RmlsZUV4cGxvcmVyQnlSb29tU2VsZiI+PGI+Z2V0RmlsZUV4cGxvcmVyQnlSb29tU2VsZjwvYj48L2E+PGJyLz4NCisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2aWdhdGlvbl9jb21tZW50Ij48aSA+R2V0IGEgRmlsZSBFeHBsb3JlciBPYmplY3QgYnkgYSBnaXZlbiBSb29tPC9pPjwvZGl2Pg0KKyAgICAgICAgICAgICAgICA8L2Rpdj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnZXRGaWxlRXhwbG9yZXJCeVBhcmVudCI+PGI+Z2V0RmlsZUV4cGxvcmVyQnlQYXJlbnQ8L2I+PC9hPjxici8+DQorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb25fY29tbWVudCI+PGkgPkdldCBGaWxlRXhwbG9yZXJJdGVtIGxpc3QgYnkgcGFyZW50IGZvbGRlcjwvaT48L2Rpdj4NCisgICAgICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ2V0RmlsZUV4cGxvcmVyQnlQYXJlbnRTZWxmIj48Yj5nZXRGaWxlRXhwbG9yZXJCeVBhcmVudFNlbGY8L2I+PC9hPjxici8+DQorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb25fY29tbWVudCI+PGkgPkdldCBGaWxlRXhwbG9yZXJJdGVtW10gYnkgcGFyZW50IGFuZCBvd25lciBpZDwvaT48L2Rpdj4NCisgICAgICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIjdXBkYXRlRmlsZU9yRm9sZGVyTmFtZSI+PGI+dXBkYXRlRmlsZU9yRm9sZGVyTmFtZTwvYj48L2E+PGJyLz4NCisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2aWdhdGlvbl9jb21tZW50Ij48aSA+dXBkYXRlIGEgZmlsZSBvciBmb2xkZXIgbmFtZTwvaT48L2Rpdj4NCisgICAgICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIjdXBkYXRlRmlsZU9yRm9sZGVyTmFtZVNlbGYiPjxiPnVwZGF0ZUZpbGVPckZvbGRlck5hbWVTZWxmPC9iPjwvYT48YnIvPg0KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uX2NvbW1lbnQiPjxpID51cGRhdGUgYSBmaWxlIG9yIGZvbGRlciBuYW1lPC9pPjwvZGl2Pg0KKyAgICAgICAgICAgICAgICA8L2Rpdj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNtb3ZlRmlsZSI+PGI+bW92ZUZpbGU8L2I+PC9hPjxici8+DQorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb25fY29tbWVudCI+PGkgPm1vdmUgYSBmaWxlIG9yIGZvbGRlcjwvaT48L2Rpdj4NCisgICAgICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIjbW92ZUZpbGVTZWxmIj48Yj5tb3ZlRmlsZVNlbGY8L2I+PC9hPjxici8+DQorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb25fY29tbWVudCI+PGkgPm1vdmUgYSBmaWxlIG9yIGZvbGRlcjwvaT48L2Rpdj4NCisgICAgICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQorCSAgIA0KKwkgICAgPGgzPk1ldGhvZHMgRGV0YWlscyBpbiBGaWxlU2VydmljZTwvaDM+DQorCQ0KKwkJCQkgICAgCQkgICAgICA8ZGl2IGNsYXNzPSJtZXRob2QiPg0KKwkJICAgICAgICA8ZGl2IGNsYXNzPSJtZXRob2RfaGVhZGVyIj4NCisJCSAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTBweCI+DQorICAgIAkJCTxhIG5hbWU9ImltcG9ydEZpbGUiID48Yj5pbXBvcnRGaWxlPC9iPjwvYT4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQkNCisgICAgCQkJTWV0aG9kOiA8aT5pbXBvcnRGaWxlICgNCisgICAgCQkJICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIFNJRA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgZXh0ZXJuYWxVc2VySWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgTG9uZyBleHRlcm5hbEZpbGVJZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgZXh0ZXJuYWxUeXBlDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIExvbmcgcm9vbV9pZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBib29sZWFuIGlzT3duZXINCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIHBhdGgNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgTG9uZyBwYXJlbnRGb2xkZXJJZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgZmlsZVN5c3RlbU5hbWUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkpDQorICAgIAkJCTwvaT48YnIvPg0KKyAgICAJCQk8cD4NCisgICAgCQkJICBJbXBvcnQgZmlsZSBmcm9tIGV4dGVybmFsIHNvdXJjZQorIAorIHRvIHVwbG9hZCBhIGZpbGUgdG8gYSByb29tLWRyaXZlIHlvdSBzcGVjaWZ5OiBleHRlcm5hbFVzZXJJZCwgdXNlciBpZiBvZgorIG9wZW5tZWV0aW5ncyB1c2VyIGZvciB3aGljaCB3ZSB1cGxvYWQgdGhlIGZpbGUgcm9vbV9pZCA9IG9wZW5tZWV0aW5ncworIHJvb20gaWQgaXNPd25lciA9IDAgcGFyZW50Rm9sZGVySWQgPSAwCisgCisgdG8gdXBsb2FkIGEgZmlsZSB0byBhIHByaXZhdGUtZHJpdmUgeW91IHNwZWNpZnk6IGV4dGVybmFsVXNlcklkLCB1c2VyIGlmCisgb2Ygb3Blbm1lZXRpbmdzIHVzZXIgZm9yIHdoaWNoIHdlIHVwbG9hZCB0aGUgZmlsZSByb29tX2lkID0gb3Blbm1lZXRpbmdzCisgcm9vbSBpZCBpc093bmVyID0gMSBwYXJlbnRGb2xkZXJJZCA9IC0yDQorICAgIAkJCTwvcD4NCisgICAgCQkJPHA+DQorICAgICAgICAgICAgICAgICAgUmV0dXJuIFR5cGU6IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmF4aXMuc2VydmljZXMuRmlsZUltcG9ydEVycm9yW10NCisgICAgICAgICAgICAgICAgPC9wPg0KKyAgICAJCQk8cD5QYXJhbXM6PC9wPg0KKyAgICAJCQkgICAgCQkJDQorICAgIAkJCQkgICAgCQkJPHRhYmxlIHJ1bGVzPSJhbGwiIGJvcmRlcj0iMSI+DQorCSAgICAJCQkgICA8dGhlYWQ+DQorCSAgICAJCQkgICA8dHI+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+VHlwZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+RmllbGRuYW1lPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSI0MDAiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvdGg+DQorCSAgICAJCQkgICA8L3RyPg0KKwkgICAgCQkJICAgPC90aGVhZD4NCisJICAgIAkJCSAgIDx0Ym9keT4NCisJICAgIAkJCSAgIAkgICAgCQkJICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlNJRDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIGxvZ2dlZCBpbiBzZXNzaW9uIGlkIHdpdGggbWluaW11bSB3ZWJzZXJ2aWNlIGxldmVsPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmV4dGVybmFsVXNlcklkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aGUgZXh0ZXJuYWwgdXNlciBpZCA9Jmd0OyBJZiB0aGUgZmlsZSBzaG91bGQgZ290byBhIHByaXZhdGUKKyAgICAgICAgICAgIHNlY3Rpb24gb2YgYW55IHVzZXIsIHRoaXMgbnVtYmVyIG5lZWRzIHRvIGJlIHNldDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJTG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+ZXh0ZXJuYWxGaWxlSWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSBleHRlcm5hbCBmaWxlLXR5cGUgdG8gaWRlbnRpZnkgdGhlIGZpbGUgbGF0ZXI8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+ZXh0ZXJuYWxUeXBlPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aGUgbmFtZSBvZiB0aGUgZXh0ZXJuYWwgc3lzdGVtPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5yb29tX2lkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aGUgcm9vbSBJZCwgaWYgdGhlIGZpbGUgZ29lcyB0byB0aGUgcHJpdmF0ZSBmb2xkZXIgb2YgYW4KKyAgICAgICAgICAgIHVzZXIsIHlvdSBjYW4gc2V0IGEgcmFuZG9tIG51bWJlciBoZXJlPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlib29sZWFuDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5pc093bmVyPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5zcGVjaWZ5IGEgMS90cnVlIEFORCBwYXJlbnRGb2xkZXJJZD09LTIgdG8gbWFrZSB0aGUgZmlsZSBnb3RvCisgICAgICAgICAgICB0aGUgcHJpdmF0ZSBzZWN0aW9uPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnBhdGg8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmh0dHAtcGF0aCB3aGVyZSB3ZSBjYW4gZ3JhYiB0aGUgZmlsZSBmcm9tLCB0aGUgZmlsZSBoYXMgdG8gYmUKKyAgICAgICAgICAgIGFjY2Vzc2libGUgZnJvbSB0aGUgT3Blbk1lZXRpbmdzIHNlcnZlcjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJTG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+cGFyZW50Rm9sZGVySWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnNwZWNpZnkgYSBwYXJlbnRGb2xkZXJJZD09LTIgQU5EIGlzT3duZXIgPT0gMS90cnVlIEFORCB0byBtYWtlCisgICAgICAgICAgICB0aGUgZmlsZSBnb3RvIHRoZSBwcml2YXRlIHNlY3Rpb248L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+ZmlsZVN5c3RlbU5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSBmaWxlbmFtZSA9Jmd0OyBJbXBvcnRhbnQgV0lUSCBmaWxlIGV4dGVuc2lvbiE8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQorCSAgICAJCQk8L3RhYmxlPg0KKyAgICAJCQkgICAgCQkJPGJyLz4NCisgICAgCQkJUkVTVCBTYW1wbGUgQ2FsbC9VUkw6PGJyLz4NCisgICAgCQkJICAgIAkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL0ZpbGVTZXJ2aWNlL2ltcG9ydEZpbGU/U0lEPVZBTFVFJmV4dGVybmFsVXNlcklkPVZBTFVFJmV4dGVybmFsRmlsZUlkPVZBTFVFJmV4dGVybmFsVHlwZT1WQUxVRSZyb29tX2lkPVZBTFVFJmlzT3duZXI9VkFMVUUmcGF0aD1WQUxVRSZwYXJlbnRGb2xkZXJJZD1WQUxVRSZmaWxlU3lzdGVtTmFtZT1WQUxVRSI+aHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9GaWxlU2VydmljZS9pbXBvcnRGaWxlP1NJRD1WQUxVRSZhbXA7ZXh0ZXJuYWxVc2VySWQ9VkFMVUUmYW1wO2V4dGVybmFsRmlsZUlkPVZBTFVFJmFtcDtleHRlcm5hbFR5cGU9VkFMVUUmYW1wO3Jvb21faWQ9VkFMVUUmYW1wO2lzT3duZXI9VkFMVUUmYW1wO3BhdGg9VkFMVUUmYW1wO3BhcmVudEZvbGRlcklkPVZBTFVFJmFtcDtmaWxlU3lzdGVtTmFtZT1WQUxVRTwvYT4NCisgICAgCQkgIDwvZGl2Pg0KKyAgICAJICAgCQkJCSAgICAJCSAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZCI+DQorCQkgICAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZF9oZWFkZXIiPg0KKwkJICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDoxMHB4Ij4NCisgICAgCQkJPGEgbmFtZT0iaW1wb3J0RmlsZUJ5SW50ZXJuYWxVc2VySWQiID48Yj5pbXBvcnRGaWxlQnlJbnRlcm5hbFVzZXJJZDwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+aW1wb3J0RmlsZUJ5SW50ZXJuYWxVc2VySWQgKA0KKyAgICAJCQkgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgU0lEDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIExvbmcgaW50ZXJuYWxVc2VySWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgTG9uZyBleHRlcm5hbEZpbGVJZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgZXh0ZXJuYWxUeXBlDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIExvbmcgcm9vbV9pZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBib29sZWFuIGlzT3duZXINCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIHBhdGgNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgTG9uZyBwYXJlbnRGb2xkZXJJZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgZmlsZVN5c3RlbU5hbWUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkpDQorICAgIAkJCTwvaT48YnIvPg0KKyAgICAJCQk8cD4NCisgICAgCQkJICBJbXBvcnQgZmlsZSBmcm9tIGV4dGVybmFsIHNvdXJjZQorIAorIHRvIHVwbG9hZCBhIGZpbGUgdG8gYSByb29tLWRyaXZlIHlvdSBzcGVjaWZ5OiBpbnRlcm5hbFVzZXJJZCwgdXNlciBpZiBvZgorIG9wZW5tZWV0aW5ncyB1c2VyIGZvciB3aGljaCB3ZSB1cGxvYWQgdGhlIGZpbGUgcm9vbV9pZCA9IG9wZW5tZWV0aW5ncworIHJvb20gaWQgaXNPd25lciA9IDAgcGFyZW50Rm9sZGVySWQgPSAwCisgCisgdG8gdXBsb2FkIGEgZmlsZSB0byBhIHByaXZhdGUtZHJpdmUgeW91IHNwZWNpZnk6IGludGVybmFsVXNlcklkLCB1c2VyIGlmCisgb2Ygb3Blbm1lZXRpbmdzIHVzZXIgZm9yIHdoaWNoIHdlIHVwbG9hZCB0aGUgZmlsZSByb29tX2lkID0gb3Blbm1lZXRpbmdzCisgcm9vbSBpZCBpc093bmVyID0gMSBwYXJlbnRGb2xkZXJJZCA9IC0yDQorICAgIAkJCTwvcD4NCisgICAgCQkJPHA+DQorICAgICAgICAgICAgICAgICAgUmV0dXJuIFR5cGU6IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmF4aXMuc2VydmljZXMuRmlsZUltcG9ydEVycm9yW10NCisgICAgICAgICAgICAgICAgPC9wPg0KKyAgICAJCQk8cD5QYXJhbXM6PC9wPg0KKyAgICAJCQkgICAgCQkJDQorICAgIAkJCQkgICAgCQkJPHRhYmxlIHJ1bGVzPSJhbGwiIGJvcmRlcj0iMSI+DQorCSAgICAJCQkgICA8dGhlYWQ+DQorCSAgICAJCQkgICA8dHI+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+VHlwZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+RmllbGRuYW1lPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSI0MDAiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvdGg+DQorCSAgICAJCQkgICA8L3RyPg0KKwkgICAgCQkJICAgPC90aGVhZD4NCisJICAgIAkJCSAgIDx0Ym9keT4NCisJICAgIAkJCSAgIAkgICAgCQkJICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlNJRDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgbG9nZ2VkIGluPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5pbnRlcm5hbFVzZXJJZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGhlIG9wZW5tZWV0aW5ncyB1c2VyIGlkID0mZ3Q7IElmIHRoZSBmaWxlIHNob3VsZCBnb3RvIGEgcHJpdmF0ZQorICAgICAgICAgICAgc2VjdGlvbiBvZiBhbnkgdXNlciwgdGhpcyBudW1iZXIgbmVlZHMgdG8gYmUgc2U8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUxvbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmV4dGVybmFsRmlsZUlkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aGUgZXh0ZXJuYWwgZmlsZS10eXBlIHRvIGlkZW50aWZ5IHRoZSBmaWxlIGxhdGVyPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmV4dGVybmFsVHlwZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGhlIG5hbWUgb2YgdGhlIGV4dGVybmFsIHN5c3RlbTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJTG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+cm9vbV9pZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGhlIHJvb20gSWQsIGlmIHRoZSBmaWxlIGdvZXMgdG8gdGhlIHByaXZhdGUgZm9sZGVyIG9mIGFuCisgICAgICAgICAgICB1c2VyLCB5b3UgY2FuIHNldCBhIHJhbmRvbSBudW1iZXIgaGVyZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJYm9vbGVhbg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aXNPd25lcjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+c3BlY2lmeSBhIDEvdHJ1ZSBBTkQgcGFyZW50Rm9sZGVySWQ9PS0yIHRvIG1ha2UgdGhlIGZpbGUgZ290bworICAgICAgICAgICAgdGhlIHByaXZhdGUgc2VjdGlvbjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5wYXRoPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5odHRwLXBhdGggd2hlcmUgd2UgY2FuIGdyYWIgdGhlIGZpbGUgZnJvbSwgdGhlIGZpbGUgaGFzIHRvIGJlCisgICAgICAgICAgICBhY2Nlc3NpYmxlIGZyb20gdGhlIE9wZW5NZWV0aW5ncyBzZXJ2ZXI8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUxvbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnBhcmVudEZvbGRlcklkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5zcGVjaWZ5IGEgcGFyZW50Rm9sZGVySWQ9PS0yIEFORCBpc093bmVyID09IDEvdHJ1ZSBBTkQgdG8gbWFrZQorICAgICAgICAgICAgdGhlIGZpbGUgZ290byB0aGUgcHJpdmF0ZSBzZWN0aW9uPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmZpbGVTeXN0ZW1OYW1lPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aGUgZmlsZW5hbWUgPSZndDsgSW1wb3J0YW50IFdJVEggZmlsZSBleHRlbnNpb24hPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KKwkgICAgCQkJPC90YWJsZT4NCisgICAgCQkJICAgIAkJCTxici8+DQorICAgIAkJCVJFU1QgU2FtcGxlIENhbGwvVVJMOjxici8+DQorICAgIAkJCSAgICAJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9GaWxlU2VydmljZS9pbXBvcnRGaWxlQnlJbnRlcm5hbFVzZXJJZD9TSUQ9VkFMVUUmaW50ZXJuYWxVc2VySWQ9VkFMVUUmZXh0ZXJuYWxGaWxlSWQ9VkFMVUUmZXh0ZXJuYWxUeXBlPVZBTFVFJnJvb21faWQ9VkFMVUUmaXNPd25lcj1WQUxVRSZwYXRoPVZBTFVFJnBhcmVudEZvbGRlcklkPVZBTFVFJmZpbGVTeXN0ZW1OYW1lPVZBTFVFIj5odHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL0ZpbGVTZXJ2aWNlL2ltcG9ydEZpbGVCeUludGVybmFsVXNlcklkP1NJRD1WQUxVRSZhbXA7aW50ZXJuYWxVc2VySWQ9VkFMVUUmYW1wO2V4dGVybmFsRmlsZUlkPVZBTFVFJmFtcDtleHRlcm5hbFR5cGU9VkFMVUUmYW1wO3Jvb21faWQ9VkFMVUUmYW1wO2lzT3duZXI9VkFMVUUmYW1wO3BhdGg9VkFMVUUmYW1wO3BhcmVudEZvbGRlcklkPVZBTFVFJmFtcDtmaWxlU3lzdGVtTmFtZT1WQUxVRTwvYT4NCisgICAgCQkgIDwvZGl2Pg0KKyAgICAJICAgCQkJCSAgICAJCSAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZCI+DQorCQkgICAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZF9oZWFkZXIiPg0KKwkJICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDoxMHB4Ij4NCisgICAgCQkJPGEgbmFtZT0iYWRkRm9sZGVyQnlFeHRlcm5hbFVzZXJJZEFuZFR5cGUiID48Yj5hZGRGb2xkZXJCeUV4dGVybmFsVXNlcklkQW5kVHlwZTwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+YWRkRm9sZGVyQnlFeHRlcm5hbFVzZXJJZEFuZFR5cGUgKA0KKyAgICAJCQkgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgU0lEDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBleHRlcm5hbFVzZXJJZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBMb25nIHBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgZm9sZGVyTmFtZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBMb25nIHJvb21faWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgQm9vbGVhbiBpc093bmVyDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIExvbmcgZXh0ZXJuYWxGaWxlc2lkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBleHRlcm5hbFR5cGUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkpDQorICAgIAkJCTwvaT48YnIvPg0KKyAgICAJCQk8cD4NCisgICAgCQkJICB0byBhZGQgYSBmb2xkZXIgdG8gdGhlIHByaXZhdGUgZHJpdmUsIHNldCBwYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQgPSAwCisgYW5kIGlzT3duZXIgdG8gMS90cnVlIGFuZCBleHRlcm5hbFVzZXJJZC9leHRlcm5hbFVzZXJUeXBlIHRvIGEgdmFsaWQgdXNlcg0KKyAgICAJCQk8L3A+DQorICAgIAkJCTxwPg0KKyAgICAgICAgICAgICAgICAgIFJldHVybiBUeXBlOiBqYXZhLmxhbmcuTG9uZw0KKyAgICAgICAgICAgICAgICA8L3A+DQorICAgIAkJCTxwPlBhcmFtczo8L3A+DQorICAgIAkJCSAgICAJCQkNCisgICAgCQkJCSAgICAJCQk8dGFibGUgcnVsZXM9ImFsbCIgYm9yZGVyPSIxIj4NCisJICAgIAkJCSAgIDx0aGVhZD4NCisJICAgIAkJCSAgIDx0cj4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5UeXBlPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5GaWVsZG5hbWU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjQwMCIgYWxpZ249ImxlZnQiPkRlc2NyaXB0aW9uPC90aD4NCisJICAgIAkJCSAgIDwvdHI+DQorCSAgICAJCQkgICA8L3RoZWFkPg0KKwkgICAgCQkJICAgPHRib2R5Pg0KKwkgICAgCQkJICAgCSAgICAJCQkgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+U0lEPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5UaGUgU0lEIG9mIHRoZSBVc2VyLiBUaGlzIFNJRCBtdXN0IGJlIG1hcmtlZCBhcyBsb2dnZWQgaW48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+ZXh0ZXJuYWxVc2VySWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSBleHRlcm5hbCBmaWxlLXR5cGUgdG8gaWRlbnRpZnkgdGhlIGZpbGUgbGF0ZXI8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUxvbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmZvbGRlck5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSBuYW1lIG9mIHRoZSBmb2xkZXI8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUxvbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnJvb21faWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSByb29tIElkLCBpZiB0aGUgZmlsZSBnb2VzIHRvIHRoZSBwcml2YXRlIGZvbGRlciBvZiBhbgorICAgICAgICAgICAgdXNlciwgeW91IGNhbiBzZXQgYSByYW5kb20gbnVtYmVyIGhlcmU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlzT3duZXI8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnNwZWNpZnkgYSAxL3RydWUgQU5EIHBhcmVudEZvbGRlcklkPT0tMiB0byBtYWtlIHRoZSBmaWxlIGdvdG8KKyAgICAgICAgICAgIHRoZSBwcml2YXRlIHNlY3Rpb248L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUxvbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmV4dGVybmFsRmlsZXNpZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGhlIGV4dGVybmFsIGZpbGUtdHlwZSB0byBpZGVudGlmeSB0aGUgZmlsZSBsYXRlcjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5leHRlcm5hbFR5cGU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSBuYW1lIG9mIHRoZSBleHRlcm5hbCBzeXN0ZW08L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQorCSAgICAJCQk8L3RhYmxlPg0KKyAgICAJCQkgICAgCQkJPGJyLz4NCisgICAgCQkJUkVTVCBTYW1wbGUgQ2FsbC9VUkw6PGJyLz4NCisgICAgCQkJICAgIAkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9GaWxlU2VydmljZS9hZGRGb2xkZXJCeUV4dGVybmFsVXNlcklkQW5kVHlwZT9TSUQ9VkFMVUUmZXh0ZXJuYWxVc2VySWQ9VkFMVUUmcGFyZW50RmlsZUV4cGxvcmVySXRlbUlkPVZBTFVFJmZvbGRlck5hbWU9VkFMVUUmcm9vbV9pZD1WQUxVRSZpc093bmVyPVZBTFVFJmV4dGVybmFsRmlsZXNpZD1WQUxVRSZleHRlcm5hbFR5cGU9VkFMVUUiPmh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvRmlsZVNlcnZpY2UvYWRkRm9sZGVyQnlFeHRlcm5hbFVzZXJJZEFuZFR5cGU/U0lEPVZBTFVFJmFtcDtleHRlcm5hbFVzZXJJZD1WQUxVRSZhbXA7cGFyZW50RmlsZUV4cGxvcmVySXRlbUlkPVZBTFVFJmFtcDtmb2xkZXJOYW1lPVZBTFVFJmFtcDtyb29tX2lkPVZBTFVFJmFtcDtpc093bmVyPVZBTFVFJmFtcDtleHRlcm5hbEZpbGVzaWQ9VkFMVUUmYW1wO2V4dGVybmFsVHlwZT1WQUxVRTwvYT4NCisgICAgCQkgIDwvZGl2Pg0KKyAgICAJICAgCQkJCSAgICAJCSAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZCI+DQorCQkgICAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZF9oZWFkZXIiPg0KKwkJICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDoxMHB4Ij4NCisgICAgCQkJPGEgbmFtZT0iYWRkRm9sZGVyQnlVc2VySWQiID48Yj5hZGRGb2xkZXJCeVVzZXJJZDwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+YWRkRm9sZGVyQnlVc2VySWQgKA0KKyAgICAJCQkgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgU0lEDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIExvbmcgdXNlcklkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIExvbmcgcGFyZW50RmlsZUV4cGxvcmVySXRlbUlkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBmb2xkZXJOYW1lDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIExvbmcgcm9vbV9pZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGlzT3duZXINCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgTG9uZyBleHRlcm5hbEZpbGVzaWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGV4dGVybmFsVHlwZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSkNCisgICAgCQkJPC9pPjxici8+DQorICAgIAkJCTxwPg0KKyAgICAJCQkgIHRvIGFkZCBhIGZvbGRlciB0byB0aGUgcHJpdmF0ZSBkcml2ZSwgc2V0IHBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCA9IDAKKyBhbmQgaXNPd25lciB0byAxL3RydWUgYW5kIHVzZXJJZCB0byBhIHZhbGlkIHVzZXINCisgICAgCQkJPC9wPg0KKyAgICAJCQk8cD4NCisgICAgICAgICAgICAgICAgICBSZXR1cm4gVHlwZTogamF2YS5sYW5nLkxvbmcNCisgICAgICAgICAgICAgICAgPC9wPg0KKyAgICAJCQk8cD5QYXJhbXM6PC9wPg0KKyAgICAJCQkgICAgCQkJDQorICAgIAkJCQkgICAgCQkJPHRhYmxlIHJ1bGVzPSJhbGwiIGJvcmRlcj0iMSI+DQorCSAgICAJCQkgICA8dGhlYWQ+DQorCSAgICAJCQkgICA8dHI+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+VHlwZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+RmllbGRuYW1lPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSI0MDAiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvdGg+DQorCSAgICAJCQkgICA8L3RyPg0KKwkgICAgCQkJICAgPC90aGVhZD4NCisJICAgIAkJCSAgIDx0Ym9keT4NCisJICAgIAkJCSAgIAkgICAgCQkJICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlNJRDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgbG9nZ2VkIGluPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj51c2VySWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSBvcGVubWVldGluZ3MgdXNlciBpZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJTG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+cGFyZW50RmlsZUV4cGxvcmVySXRlbUlkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5zcGVjaWZ5IGEgcGFyZW50Rm9sZGVySWQ9PS0yIEFORCBpc093bmVyID09IDEvdHJ1ZSBBTkQgdG8gbWFrZSB0aGUgZmlsZSBnb3RvIHRoZSBwcml2YXRlIHNlY3Rpb248L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+Zm9sZGVyTmFtZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGhlIG5hbWUgb2YgdGhlIGZvbGRlcjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJTG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+cm9vbV9pZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGhlIHJvb20gSWQsIGlmIHRoZSBmaWxlIGdvZXMgdG8gdGhlIHByaXZhdGUgZm9sZGVyIG9mIGFuIHVzZXIsIHlvdSBjYW4gc2V0IGEgcmFuZG9tIG51bWJlciBoZXJlPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlCb29sZWFuDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5pc093bmVyPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5zcGVjaWZ5IGEgMS90cnVlIEFORCBwYXJlbnRGb2xkZXJJZD09LTIgdG8gbWFrZSB0aGUgZmlsZSBnb3RvIHRoZSBwcml2YXRlIHNlY3Rpb248L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUxvbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmV4dGVybmFsRmlsZXNpZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGhlIGV4dGVybmFsIGZpbGUtdHlwZSB0byBpZGVudGlmeSB0aGUgZmlsZSBsYXRlcjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5leHRlcm5hbFR5cGU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSBuYW1lIG9mIHRoZSBleHRlcm5hbCBzeXN0ZW08L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQorCSAgICAJCQk8L3RhYmxlPg0KKyAgICAJCQkgICAgCQkJPGJyLz4NCisgICAgCQkJUkVTVCBTYW1wbGUgQ2FsbC9VUkw6PGJyLz4NCisgICAgCQkJICAgIAkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9GaWxlU2VydmljZS9hZGRGb2xkZXJCeVVzZXJJZD9TSUQ9VkFMVUUmdXNlcklkPVZBTFVFJnBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZD1WQUxVRSZmb2xkZXJOYW1lPVZBTFVFJnJvb21faWQ9VkFMVUUmaXNPd25lcj1WQUxVRSZleHRlcm5hbEZpbGVzaWQ9VkFMVUUmZXh0ZXJuYWxUeXBlPVZBTFVFIj5odHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL0ZpbGVTZXJ2aWNlL2FkZEZvbGRlckJ5VXNlcklkP1NJRD1WQUxVRSZhbXA7dXNlcklkPVZBTFVFJmFtcDtwYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQ9VkFMVUUmYW1wO2ZvbGRlck5hbWU9VkFMVUUmYW1wO3Jvb21faWQ9VkFMVUUmYW1wO2lzT3duZXI9VkFMVUUmYW1wO2V4dGVybmFsRmlsZXNpZD1WQUxVRSZhbXA7ZXh0ZXJuYWxUeXBlPVZBTFVFPC9hPg0KKyAgICAJCSAgPC9kaXY+DQorICAgIAkgICAJCQkJICAgIAkJICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kIj4NCisJCSAgICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kX2hlYWRlciI+DQorCQkgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjEwcHgiPg0KKyAgICAJCQk8YSBuYW1lPSJhZGRGb2xkZXJTZWxmIiA+PGI+YWRkRm9sZGVyU2VsZjwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+YWRkRm9sZGVyU2VsZiAoDQorICAgIAkJCSAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBTSUQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgTG9uZyBwYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGZpbGVOYW1lDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIExvbmcgcm9vbV9pZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGlzT3duZXINCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkpDQorICAgIAkJCTwvaT48YnIvPg0KKyAgICAJCQk8cD4NCisgICAgCQkJICBBZGQgYSBmb2xkZXIgYnkgdGhlIGN1cnJlbnQgdXNlciAtIHNpbWlsYXIgdG8gUlRNUCBDYWxsDQorICAgIAkJCTwvcD4NCisgICAgCQkJPHA+DQorICAgICAgICAgICAgICAgICAgUmV0dXJuIFR5cGU6IGphdmEubGFuZy5Mb25nDQorICAgICAgICAgICAgICAgIDwvcD4NCisgICAgCQkJPHA+UGFyYW1zOjwvcD4NCisgICAgCQkJICAgIAkJCQ0KKyAgICAJCQkJICAgIAkJCTx0YWJsZSBydWxlcz0iYWxsIiBib3JkZXI9IjEiPg0KKwkgICAgCQkJICAgPHRoZWFkPg0KKwkgICAgCQkJICAgPHRyPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPlR5cGU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPkZpZWxkbmFtZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iNDAwIiBhbGlnbj0ibGVmdCI+RGVzY3JpcHRpb248L3RoPg0KKwkgICAgCQkJICAgPC90cj4NCisJICAgIAkJCSAgIDwvdGhlYWQ+DQorCSAgICAJCQkgICA8dGJvZHk+DQorCSAgICAJCQkgICAJICAgIAkJCSAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5TSUQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIGxvZ2dlZCBpbjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJTG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+cGFyZW50RmlsZUV4cGxvcmVySXRlbUlkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5wYXJlbnQgZm9sZGVyIGlkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmZpbGVOYW1lPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aGUgZmlsZSBuYW1lPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5yb29tX2lkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aGUgcm9vbSBpZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJQm9vbGVhbg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aXNPd25lcjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KKwkgICAgCQkJPC90YWJsZT4NCisgICAgCQkJICAgIAkJCTxici8+DQorICAgIAkJCVJFU1QgU2FtcGxlIENhbGwvVVJMOjxici8+DQorICAgIAkJCSAgICAJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvRmlsZVNlcnZpY2UvYWRkRm9sZGVyU2VsZj9TSUQ9VkFMVUUmcGFyZW50RmlsZUV4cGxvcmVySXRlbUlkPVZBTFVFJmZpbGVOYW1lPVZBTFVFJnJvb21faWQ9VkFMVUUmaXNPd25lcj1WQUxVRSI+aHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9GaWxlU2VydmljZS9hZGRGb2xkZXJTZWxmP1NJRD1WQUxVRSZhbXA7cGFyZW50RmlsZUV4cGxvcmVySXRlbUlkPVZBTFVFJmFtcDtmaWxlTmFtZT1WQUxVRSZhbXA7cm9vbV9pZD1WQUxVRSZhbXA7aXNPd25lcj1WQUxVRTwvYT4NCisgICAgCQkgIDwvZGl2Pg0KKyAgICAJICAgCQkJCSAgICAJCSAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZCI+DQorCQkgICAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZF9oZWFkZXIiPg0KKwkJICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDoxMHB4Ij4NCisgICAgCQkJPGEgbmFtZT0iZGVsZXRlRmlsZU9yRm9sZGVyQnlFeHRlcm5hbElkQW5kVHlwZSIgPjxiPmRlbGV0ZUZpbGVPckZvbGRlckJ5RXh0ZXJuYWxJZEFuZFR5cGU8L2I+PC9hPg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCQ0KKyAgICAJCQlNZXRob2Q6IDxpPmRlbGV0ZUZpbGVPckZvbGRlckJ5RXh0ZXJuYWxJZEFuZFR5cGUgKA0KKyAgICAJCQkgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgU0lEDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIExvbmcgZXh0ZXJuYWxGaWxlc2lkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBleHRlcm5hbFR5cGUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkpDQorICAgIAkJCTwvaT48YnIvPg0KKyAgICAJCQk8cD4NCisgICAgCQkJICBkZWxldGVzIGEgZmlsZSBieSBpdHMgZXh0ZXJuYWwgSWQgYW5kIHR5cGUNCisgICAgCQkJPC9wPg0KKyAgICAJCQk8cD4NCisgICAgICAgICAgICAgICAgICBSZXR1cm4gVHlwZTogamF2YS5sYW5nLkxvbmcNCisgICAgICAgICAgICAgICAgPC9wPg0KKyAgICAJCQk8cD5QYXJhbXM6PC9wPg0KKyAgICAJCQkgICAgCQkJDQorICAgIAkJCQkgICAgCQkJPHRhYmxlIHJ1bGVzPSJhbGwiIGJvcmRlcj0iMSI+DQorCSAgICAJCQkgICA8dGhlYWQ+DQorCSAgICAJCQkgICA8dHI+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+VHlwZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+RmllbGRuYW1lPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSI0MDAiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvdGg+DQorCSAgICAJCQkgICA8L3RyPg0KKwkgICAgCQkJICAgPC90aGVhZD4NCisJICAgIAkJCSAgIDx0Ym9keT4NCisJICAgIAkJCSAgIAkgICAgCQkJICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlNJRDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgbG9nZ2VkIGluPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5leHRlcm5hbEZpbGVzaWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSBvZCBvZiB0aGUgZmlsZSBvciBmb2xkZXI8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+ZXh0ZXJuYWxUeXBlPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aGUgZXh0ZXJuYWxUeXBlPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KKwkgICAgCQkJPC90YWJsZT4NCisgICAgCQkJICAgIAkJCTxici8+DQorICAgIAkJCVJFU1QgU2FtcGxlIENhbGwvVVJMOjxici8+DQorICAgIAkJCSAgICAJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9GaWxlU2VydmljZS9kZWxldGVGaWxlT3JGb2xkZXJCeUV4dGVybmFsSWRBbmRUeXBlP1NJRD1WQUxVRSZleHRlcm5hbEZpbGVzaWQ9VkFMVUUmZXh0ZXJuYWxUeXBlPVZBTFVFIj5odHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL0ZpbGVTZXJ2aWNlL2RlbGV0ZUZpbGVPckZvbGRlckJ5RXh0ZXJuYWxJZEFuZFR5cGU/U0lEPVZBTFVFJmFtcDtleHRlcm5hbEZpbGVzaWQ9VkFMVUUmYW1wO2V4dGVybmFsVHlwZT1WQUxVRTwvYT4NCisgICAgCQkgIDwvZGl2Pg0KKyAgICAJICAgCQkJCSAgICAJCSAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZCI+DQorCQkgICAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZF9oZWFkZXIiPg0KKwkJICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDoxMHB4Ij4NCisgICAgCQkJPGEgbmFtZT0iZGVsZXRlRmlsZU9yRm9sZGVyIiA+PGI+ZGVsZXRlRmlsZU9yRm9sZGVyPC9iPjwvYT4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQkNCisgICAgCQkJTWV0aG9kOiA8aT5kZWxldGVGaWxlT3JGb2xkZXIgKA0KKyAgICAJCQkgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgU0lEDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIExvbmcgZmlsZUV4cGxvcmVySXRlbUlkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJKQ0KKyAgICAJCQk8L2k+PGJyLz4NCisgICAgCQkJPHA+DQorICAgIAkJCSAgZGVsZXRlcyBmaWxlcyBvciBmb2xkZXJzIGJhc2VkIG9uIGl0IGlkDQorICAgIAkJCTwvcD4NCisgICAgCQkJPHA+DQorICAgICAgICAgICAgICAgICAgUmV0dXJuIFR5cGU6IGphdmEubGFuZy5Mb25nDQorICAgICAgICAgICAgICAgIDwvcD4NCisgICAgCQkJPHA+UGFyYW1zOjwvcD4NCisgICAgCQkJICAgIAkJCQ0KKyAgICAJCQkJICAgIAkJCTx0YWJsZSBydWxlcz0iYWxsIiBib3JkZXI9IjEiPg0KKwkgICAgCQkJICAgPHRoZWFkPg0KKwkgICAgCQkJICAgPHRyPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPlR5cGU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPkZpZWxkbmFtZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iNDAwIiBhbGlnbj0ibGVmdCI+RGVzY3JpcHRpb248L3RoPg0KKwkgICAgCQkJICAgPC90cj4NCisJICAgIAkJCSAgIDwvdGhlYWQ+DQorCSAgICAJCQkgICA8dGJvZHk+DQorCSAgICAJCQkgICAJICAgIAkJCSAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5TSUQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIGxvZ2dlZCBpbjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJTG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+ZmlsZUV4cGxvcmVySXRlbUlkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aGUgaWQgb2YgdGhlIGZpbGUgb3IgZm9sZGVyPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KKwkgICAgCQkJPC90YWJsZT4NCisgICAgCQkJICAgIAkJCTxici8+DQorICAgIAkJCVJFU1QgU2FtcGxlIENhbGwvVVJMOjxici8+DQorICAgIAkJCSAgICAJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvRmlsZVNlcnZpY2UvZGVsZXRlRmlsZU9yRm9sZGVyP1NJRD1WQUxVRSZmaWxlRXhwbG9yZXJJdGVtSWQ9VkFMVUUiPmh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvRmlsZVNlcnZpY2UvZGVsZXRlRmlsZU9yRm9sZGVyP1NJRD1WQUxVRSZhbXA7ZmlsZUV4cGxvcmVySXRlbUlkPVZBTFVFPC9hPg0KKyAgICAJCSAgPC9kaXY+DQorICAgIAkgICAJCQkJICAgIAkJICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kIj4NCisJCSAgICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kX2hlYWRlciI+DQorCQkgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjEwcHgiPg0KKyAgICAJCQk8YSBuYW1lPSJkZWxldGVGaWxlT3JGb2xkZXJTZWxmIiA+PGI+ZGVsZXRlRmlsZU9yRm9sZGVyU2VsZjwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+ZGVsZXRlRmlsZU9yRm9sZGVyU2VsZiAoDQorICAgIAkJCSAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBTSUQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgTG9uZyBmaWxlRXhwbG9yZXJJdGVtSWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkpDQorICAgIAkJCTwvaT48YnIvPg0KKyAgICAJCQk8cD4NCisgICAgCQkJICBkZWxldGVzIGZpbGVzIG9yIGZvbGRlcnMgYmFzZWQgb24gaXQgaWQNCisgICAgCQkJPC9wPg0KKyAgICAJCQk8cD4NCisgICAgICAgICAgICAgICAgICBSZXR1cm4gVHlwZTogamF2YS5sYW5nLkxvbmcNCisgICAgICAgICAgICAgICAgPC9wPg0KKyAgICAJCQk8cD5QYXJhbXM6PC9wPg0KKyAgICAJCQkgICAgCQkJDQorICAgIAkJCQkgICAgCQkJPHRhYmxlIHJ1bGVzPSJhbGwiIGJvcmRlcj0iMSI+DQorCSAgICAJCQkgICA8dGhlYWQ+DQorCSAgICAJCQkgICA8dHI+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+VHlwZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+RmllbGRuYW1lPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSI0MDAiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvdGg+DQorCSAgICAJCQkgICA8L3RyPg0KKwkgICAgCQkJICAgPC90aGVhZD4NCisJICAgIAkJCSAgIDx0Ym9keT4NCisJICAgIAkJCSAgIAkgICAgCQkJICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlNJRDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgbG9nZ2VkIGluPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5maWxlRXhwbG9yZXJJdGVtSWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSBpZCBvZiB0aGUgZmlsZSBvciBmb2xkZXI8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQorCSAgICAJCQk8L3RhYmxlPg0KKyAgICAJCQkgICAgCQkJPGJyLz4NCisgICAgCQkJUkVTVCBTYW1wbGUgQ2FsbC9VUkw6PGJyLz4NCisgICAgCQkJICAgIAkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9GaWxlU2VydmljZS9kZWxldGVGaWxlT3JGb2xkZXJTZWxmP1NJRD1WQUxVRSZmaWxlRXhwbG9yZXJJdGVtSWQ9VkFMVUUiPmh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvRmlsZVNlcnZpY2UvZGVsZXRlRmlsZU9yRm9sZGVyU2VsZj9TSUQ9VkFMVUUmYW1wO2ZpbGVFeHBsb3Jlckl0ZW1JZD1WQUxVRTwvYT4NCisgICAgCQkgIDwvZGl2Pg0KKyAgICAJICAgCQkJCSAgICAJCSAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZCI+DQorCQkgICAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZF9oZWFkZXIiPg0KKwkJICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDoxMHB4Ij4NCisgICAgCQkJPGEgbmFtZT0iZ2V0SW1wb3J0RmlsZUV4dGVuc2lvbnMiID48Yj5nZXRJbXBvcnRGaWxlRXh0ZW5zaW9uczwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+Z2V0SW1wb3J0RmlsZUV4dGVuc2lvbnMgKA0KKyAgICAJCQkgICAgCQkJICAgIAkJCSkNCisgICAgCQkJPC9pPjxici8+DQorICAgIAkJCTxwPg0KKyAgICAJCQkgIEdldCBhdmFpbGFibGUgaW1wb3J0IEZpbGUgRXh0ZW5zaW9uIGFsbG93ZWQgZHVyaW5nIGltcG9ydA0KKyAgICAJCQk8L3A+DQorICAgIAkJCTxwPg0KKyAgICAgICAgICAgICAgICAgIFJldHVybiBUeXBlOiBqYXZhLmxhbmcuU3RyaW5nW10NCisgICAgICAgICAgICAgICAgPC9wPg0KKyAgICAJCQk8cD5QYXJhbXM6PC9wPg0KKyAgICAJCQkgICAgCQkJDQorICAgIAkJCSAgICAJCQkJPGk+Tm8gUGFyYW1zPC9pPg0KKyAgICAJCQkgICAgCQkJPGJyLz4NCisgICAgCQkJUkVTVCBTYW1wbGUgQ2FsbC9VUkw6PGJyLz4NCisgICAgCQkJICAgIAkJCQkJCQk8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL0ZpbGVTZXJ2aWNlL2dldEltcG9ydEZpbGVFeHRlbnNpb25zIj5odHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL0ZpbGVTZXJ2aWNlL2dldEltcG9ydEZpbGVFeHRlbnNpb25zPC9hPg0KKyAgICAJCSAgPC9kaXY+DQorICAgIAkgICAJCQkJICAgIAkJICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kIj4NCisJCSAgICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kX2hlYWRlciI+DQorCQkgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjEwcHgiPg0KKyAgICAJCQk8YSBuYW1lPSJnZXRQcmVzZW50YXRpb25QcmV2aWV3RmlsZUV4cGxvcmVyIiA+PGI+Z2V0UHJlc2VudGF0aW9uUHJldmlld0ZpbGVFeHBsb3JlcjwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+Z2V0UHJlc2VudGF0aW9uUHJldmlld0ZpbGVFeHBsb3JlciAoDQorICAgIAkJCSAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBTSUQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIHBhcmVudEZvbGRlcg0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSkNCisgICAgCQkJPC9pPjxici8+DQorICAgIAkJCTxwPg0KKyAgICAJCQkgIEdldCBhIExpYnJhcnlQcmVzZW50YXRpb24tT2JqZWN0IGZvciBhIGNlcnRhaW4gZmlsZQ0KKyAgICAJCQk8L3A+DQorICAgIAkJCTxwPg0KKyAgICAgICAgICAgICAgICAgIFJldHVybiBUeXBlOiBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmZpbGUuZHRvLkxpYnJhcnlQcmVzZW50YXRpb24NCisgICAgICAgICAgICAgICAgPC9wPg0KKyAgICAJCQk8cD5QYXJhbXM6PC9wPg0KKyAgICAJCQkgICAgCQkJDQorICAgIAkJCQkgICAgCQkJPHRhYmxlIHJ1bGVzPSJhbGwiIGJvcmRlcj0iMSI+DQorCSAgICAJCQkgICA8dGhlYWQ+DQorCSAgICAJCQkgICA8dHI+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+VHlwZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+RmllbGRuYW1lPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSI0MDAiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvdGg+DQorCSAgICAJCQkgICA8L3RyPg0KKwkgICAgCQkJICAgPC90aGVhZD4NCisJICAgIAkJCSAgIDx0Ym9keT4NCisJICAgIAkJCSAgIAkgICAgCQkJICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlNJRDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnBhcmVudEZvbGRlcjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KKwkgICAgCQkJPC90YWJsZT4NCisgICAgCQkJICAgIAkJCTxici8+DQorICAgIAkJCVJFU1QgU2FtcGxlIENhbGwvVVJMOjxici8+DQorICAgIAkJCSAgICAJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvRmlsZVNlcnZpY2UvZ2V0UHJlc2VudGF0aW9uUHJldmlld0ZpbGVFeHBsb3Jlcj9TSUQ9VkFMVUUmcGFyZW50Rm9sZGVyPVZBTFVFIj5odHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL0ZpbGVTZXJ2aWNlL2dldFByZXNlbnRhdGlvblByZXZpZXdGaWxlRXhwbG9yZXI/U0lEPVZBTFVFJmFtcDtwYXJlbnRGb2xkZXI9VkFMVUU8L2E+DQorICAgIAkJICA8L2Rpdj4NCisgICAgCSAgIAkJCQkgICAgCQkgICAgICA8ZGl2IGNsYXNzPSJtZXRob2QiPg0KKwkJICAgICAgICA8ZGl2IGNsYXNzPSJtZXRob2RfaGVhZGVyIj4NCisJCSAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTBweCI+DQorICAgIAkJCTxhIG5hbWU9ImdldEZpbGVFeHBsb3JlckJ5Um9vbSIgPjxiPmdldEZpbGVFeHBsb3JlckJ5Um9vbTwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+Z2V0RmlsZUV4cGxvcmVyQnlSb29tICgNCisgICAgCQkJICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIFNJRA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBMb25nIHJvb21faWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgTG9uZyBvd25lcl9pZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSkNCisgICAgCQkJPC9pPjxici8+DQorICAgIAkJCTxwPg0KKyAgICAJCQkgIEdldCBhIEZpbGUgRXhwbG9yZXIgT2JqZWN0IGJ5IGEgZ2l2ZW4gUm9vbSBhbmQgb3duZXIgaWQNCisgICAgCQkJPC9wPg0KKyAgICAJCQk8cD4NCisgICAgICAgICAgICAgICAgICBSZXR1cm4gVHlwZTogb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5maWxlLmR0by5GaWxlRXhwbG9yZXJPYmplY3QNCisgICAgICAgICAgICAgICAgPC9wPg0KKyAgICAJCQk8cD5QYXJhbXM6PC9wPg0KKyAgICAJCQkgICAgCQkJDQorICAgIAkJCQkgICAgCQkJPHRhYmxlIHJ1bGVzPSJhbGwiIGJvcmRlcj0iMSI+DQorCSAgICAJCQkgICA8dGhlYWQ+DQorCSAgICAJCQkgICA8dHI+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+VHlwZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+RmllbGRuYW1lPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSI0MDAiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvdGg+DQorCSAgICAJCQkgICA8L3RyPg0KKwkgICAgCQkJICAgPC90aGVhZD4NCisJICAgIAkJCSAgIDx0Ym9keT4NCisJICAgIAkJCSAgIAkgICAgCQkJICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlNJRDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgbG9nZ2VkIGluPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5yb29tX2lkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5Sb29tIGlkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5vd25lcl9pZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+T3duZXIgaWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQorCSAgICAJCQk8L3RhYmxlPg0KKyAgICAJCQkgICAgCQkJPGJyLz4NCisgICAgCQkJUkVTVCBTYW1wbGUgQ2FsbC9VUkw6PGJyLz4NCisgICAgCQkJICAgIAkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL0ZpbGVTZXJ2aWNlL2dldEZpbGVFeHBsb3JlckJ5Um9vbT9TSUQ9VkFMVUUmcm9vbV9pZD1WQUxVRSZvd25lcl9pZD1WQUxVRSI+aHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9GaWxlU2VydmljZS9nZXRGaWxlRXhwbG9yZXJCeVJvb20/U0lEPVZBTFVFJmFtcDtyb29tX2lkPVZBTFVFJmFtcDtvd25lcl9pZD1WQUxVRTwvYT4NCisgICAgCQkgIDwvZGl2Pg0KKyAgICAJICAgCQkJCSAgICAJCSAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZCI+DQorCQkgICAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZF9oZWFkZXIiPg0KKwkJICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDoxMHB4Ij4NCisgICAgCQkJPGEgbmFtZT0iZ2V0RmlsZUV4cGxvcmVyQnlSb29tU2VsZiIgPjxiPmdldEZpbGVFeHBsb3JlckJ5Um9vbVNlbGY8L2I+PC9hPg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCQ0KKyAgICAJCQlNZXRob2Q6IDxpPmdldEZpbGVFeHBsb3JlckJ5Um9vbVNlbGYgKA0KKyAgICAJCQkgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgU0lEDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIExvbmcgcm9vbV9pZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSkNCisgICAgCQkJPC9pPjxici8+DQorICAgIAkJCTxwPg0KKyAgICAJCQkgIEdldCBhIEZpbGUgRXhwbG9yZXIgT2JqZWN0IGJ5IGEgZ2l2ZW4gUm9vbQ0KKyAgICAJCQk8L3A+DQorICAgIAkJCTxwPg0KKyAgICAgICAgICAgICAgICAgIFJldHVybiBUeXBlOiBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmZpbGUuZHRvLkZpbGVFeHBsb3Jlck9iamVjdA0KKyAgICAgICAgICAgICAgICA8L3A+DQorICAgIAkJCTxwPlBhcmFtczo8L3A+DQorICAgIAkJCSAgICAJCQkNCisgICAgCQkJCSAgICAJCQk8dGFibGUgcnVsZXM9ImFsbCIgYm9yZGVyPSIxIj4NCisJICAgIAkJCSAgIDx0aGVhZD4NCisJICAgIAkJCSAgIDx0cj4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5UeXBlPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5GaWVsZG5hbWU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjQwMCIgYWxpZ249ImxlZnQiPkRlc2NyaXB0aW9uPC90aD4NCisJICAgIAkJCSAgIDwvdHI+DQorCSAgICAJCQkgICA8L3RoZWFkPg0KKwkgICAgCQkJICAgPHRib2R5Pg0KKwkgICAgCQkJICAgCSAgICAJCQkgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+U0lEPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5UaGUgU0lEIG9mIHRoZSBVc2VyLiBUaGlzIFNJRCBtdXN0IGJlIG1hcmtlZCBhcyBsb2dnZWQgaW48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUxvbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnJvb21faWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlJvb20gSWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQorCSAgICAJCQk8L3RhYmxlPg0KKyAgICAJCQkgICAgCQkJPGJyLz4NCisgICAgCQkJUkVTVCBTYW1wbGUgQ2FsbC9VUkw6PGJyLz4NCisgICAgCQkJICAgIAkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9GaWxlU2VydmljZS9nZXRGaWxlRXhwbG9yZXJCeVJvb21TZWxmP1NJRD1WQUxVRSZyb29tX2lkPVZBTFVFIj5odHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL0ZpbGVTZXJ2aWNlL2dldEZpbGVFeHBsb3JlckJ5Um9vbVNlbGY/U0lEPVZBTFVFJmFtcDtyb29tX2lkPVZBTFVFPC9hPg0KKyAgICAJCSAgPC9kaXY+DQorICAgIAkgICAJCQkJICAgIAkJICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kIj4NCisJCSAgICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kX2hlYWRlciI+DQorCQkgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjEwcHgiPg0KKyAgICAJCQk8YSBuYW1lPSJnZXRGaWxlRXhwbG9yZXJCeVBhcmVudCIgPjxiPmdldEZpbGVFeHBsb3JlckJ5UGFyZW50PC9iPjwvYT4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQkNCisgICAgCQkJTWV0aG9kOiA8aT5nZXRGaWxlRXhwbG9yZXJCeVBhcmVudCAoDQorICAgIAkJCSAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBTSUQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgTG9uZyBwYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgTG9uZyByb29tX2lkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEJvb2xlYW4gaXNPd25lcg0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBMb25nIG93bmVyX2lkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJKQ0KKyAgICAJCQk8L2k+PGJyLz4NCisgICAgCQkJPHA+DQorICAgIAkJCSAgR2V0IEZpbGVFeHBsb3Jlckl0ZW0gbGlzdCBieSBwYXJlbnQgZm9sZGVyDQorICAgIAkJCTwvcD4NCisgICAgCQkJPHA+DQorICAgICAgICAgICAgICAgICAgUmV0dXJuIFR5cGU6IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmZpbGVzLkZpbGVFeHBsb3Jlckl0ZW1bXQ0KKyAgICAgICAgICAgICAgICA8L3A+DQorICAgIAkJCTxwPlBhcmFtczo8L3A+DQorICAgIAkJCSAgICAJCQkNCisgICAgCQkJCSAgICAJCQk8dGFibGUgcnVsZXM9ImFsbCIgYm9yZGVyPSIxIj4NCisJICAgIAkJCSAgIDx0aGVhZD4NCisJICAgIAkJCSAgIDx0cj4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5UeXBlPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5GaWVsZG5hbWU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjQwMCIgYWxpZ249ImxlZnQiPkRlc2NyaXB0aW9uPC90aD4NCisJICAgIAkJCSAgIDwvdHI+DQorCSAgICAJCQkgICA8L3RoZWFkPg0KKwkgICAgCQkJICAgPHRib2R5Pg0KKwkgICAgCQkJICAgCSAgICAJCQkgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+U0lEPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5UaGUgU0lEIG9mIHRoZSBVc2VyLiBUaGlzIFNJRCBtdXN0IGJlIG1hcmtlZCBhcyBsb2dnZWQgaW48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUxvbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGhlIHBhcmVudCBmb2xkZXIgaWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUxvbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnJvb21faWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSByb29tIGlkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlCb29sZWFuDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5pc093bmVyPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50cnVlIGlmIGl0cyBhIHByaXZhdGUgZHJpdmU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUxvbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPm93bmVyX2lkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aGUgb3duZXIgaWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQorCSAgICAJCQk8L3RhYmxlPg0KKyAgICAJCQkgICAgCQkJPGJyLz4NCisgICAgCQkJUkVTVCBTYW1wbGUgQ2FsbC9VUkw6PGJyLz4NCisgICAgCQkJICAgIAkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9GaWxlU2VydmljZS9nZXRGaWxlRXhwbG9yZXJCeVBhcmVudD9TSUQ9VkFMVUUmcGFyZW50RmlsZUV4cGxvcmVySXRlbUlkPVZBTFVFJnJvb21faWQ9VkFMVUUmaXNPd25lcj1WQUxVRSZvd25lcl9pZD1WQUxVRSI+aHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9GaWxlU2VydmljZS9nZXRGaWxlRXhwbG9yZXJCeVBhcmVudD9TSUQ9VkFMVUUmYW1wO3BhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZD1WQUxVRSZhbXA7cm9vbV9pZD1WQUxVRSZhbXA7aXNPd25lcj1WQUxVRSZhbXA7b3duZXJfaWQ9VkFMVUU8L2E+DQorICAgIAkJICA8L2Rpdj4NCisgICAgCSAgIAkJCQkgICAgCQkgICAgICA8ZGl2IGNsYXNzPSJtZXRob2QiPg0KKwkJICAgICAgICA8ZGl2IGNsYXNzPSJtZXRob2RfaGVhZGVyIj4NCisJCSAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTBweCI+DQorICAgIAkJCTxhIG5hbWU9ImdldEZpbGVFeHBsb3JlckJ5UGFyZW50U2VsZiIgPjxiPmdldEZpbGVFeHBsb3JlckJ5UGFyZW50U2VsZjwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+Z2V0RmlsZUV4cGxvcmVyQnlQYXJlbnRTZWxmICgNCisgICAgCQkJICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIFNJRA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBMb25nIHBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBMb25nIHJvb21faWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgQm9vbGVhbiBpc093bmVyDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJKQ0KKyAgICAJCQk8L2k+PGJyLz4NCisgICAgCQkJPHA+DQorICAgIAkJCSAgR2V0IEZpbGVFeHBsb3Jlckl0ZW1bXSBieSBwYXJlbnQgYW5kIG93bmVyIGlkDQorICAgIAkJCTwvcD4NCisgICAgCQkJPHA+DQorICAgICAgICAgICAgICAgICAgUmV0dXJuIFR5cGU6IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmZpbGVzLkZpbGVFeHBsb3Jlckl0ZW1bXQ0KKyAgICAgICAgICAgICAgICA8L3A+DQorICAgIAkJCTxwPlBhcmFtczo8L3A+DQorICAgIAkJCSAgICAJCQkNCisgICAgCQkJCSAgICAJCQk8dGFibGUgcnVsZXM9ImFsbCIgYm9yZGVyPSIxIj4NCisJICAgIAkJCSAgIDx0aGVhZD4NCisJICAgIAkJCSAgIDx0cj4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5UeXBlPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5GaWVsZG5hbWU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjQwMCIgYWxpZ249ImxlZnQiPkRlc2NyaXB0aW9uPC90aD4NCisJICAgIAkJCSAgIDwvdHI+DQorCSAgICAJCQkgICA8L3RoZWFkPg0KKwkgICAgCQkJICAgPHRib2R5Pg0KKwkgICAgCQkJICAgCSAgICAJCQkgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+U0lEPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5TSUQgVGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgbG9nZ2VkIGluPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5wYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSBwYXJlbnQgZm9sZGVyIGlkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5yb29tX2lkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aGUgcm9vbSBpZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJQm9vbGVhbg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aXNPd25lcjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dHJ1ZSB0byByZXF1ZXN0IHByaXZhdGUgZHJpdmU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQorCSAgICAJCQk8L3RhYmxlPg0KKyAgICAJCQkgICAgCQkJPGJyLz4NCisgICAgCQkJUkVTVCBTYW1wbGUgQ2FsbC9VUkw6PGJyLz4NCisgICAgCQkJICAgIAkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvRmlsZVNlcnZpY2UvZ2V0RmlsZUV4cGxvcmVyQnlQYXJlbnRTZWxmP1NJRD1WQUxVRSZwYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQ9VkFMVUUmcm9vbV9pZD1WQUxVRSZpc093bmVyPVZBTFVFIj5odHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL0ZpbGVTZXJ2aWNlL2dldEZpbGVFeHBsb3JlckJ5UGFyZW50U2VsZj9TSUQ9VkFMVUUmYW1wO3BhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZD1WQUxVRSZhbXA7cm9vbV9pZD1WQUxVRSZhbXA7aXNPd25lcj1WQUxVRTwvYT4NCisgICAgCQkgIDwvZGl2Pg0KKyAgICAJICAgCQkJCSAgICAJCSAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZCI+DQorCQkgICAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZF9oZWFkZXIiPg0KKwkJICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDoxMHB4Ij4NCisgICAgCQkJPGEgbmFtZT0idXBkYXRlRmlsZU9yRm9sZGVyTmFtZSIgPjxiPnVwZGF0ZUZpbGVPckZvbGRlck5hbWU8L2I+PC9hPg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCQ0KKyAgICAJCQlNZXRob2Q6IDxpPnVwZGF0ZUZpbGVPckZvbGRlck5hbWUgKA0KKyAgICAJCQkgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgU0lEDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIExvbmcgZmlsZUV4cGxvcmVySXRlbUlkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBmaWxlTmFtZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSkNCisgICAgCQkJPC9pPjxici8+DQorICAgIAkJCTxwPg0KKyAgICAJCQkgIHVwZGF0ZSBhIGZpbGUgb3IgZm9sZGVyIG5hbWUNCisgICAgCQkJPC9wPg0KKyAgICAJCQk8cD4NCisgICAgICAgICAgICAgICAgICBSZXR1cm4gVHlwZTogamF2YS5sYW5nLkxvbmcNCisgICAgICAgICAgICAgICAgPC9wPg0KKyAgICAJCQk8cD5QYXJhbXM6PC9wPg0KKyAgICAJCQkgICAgCQkJDQorICAgIAkJCQkgICAgCQkJPHRhYmxlIHJ1bGVzPSJhbGwiIGJvcmRlcj0iMSI+DQorCSAgICAJCQkgICA8dGhlYWQ+DQorCSAgICAJCQkgICA8dHI+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+VHlwZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+RmllbGRuYW1lPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSI0MDAiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvdGg+DQorCSAgICAJCQkgICA8L3RyPg0KKwkgICAgCQkJICAgPC90aGVhZD4NCisJICAgIAkJCSAgIDx0Ym9keT4NCisJICAgIAkJCSAgIAkgICAgCQkJICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlNJRDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+U0lEIFRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIGxvZ2dlZCBpbjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJTG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+ZmlsZUV4cGxvcmVySXRlbUlkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5maWxlIG9yIGZvbGRlciBpZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5maWxlTmFtZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+bmV3IGZpbGUgb3IgZm9sZGVyIG5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQorCSAgICAJCQk8L3RhYmxlPg0KKyAgICAJCQkgICAgCQkJPGJyLz4NCisgICAgCQkJUkVTVCBTYW1wbGUgQ2FsbC9VUkw6PGJyLz4NCisgICAgCQkJICAgIAkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL0ZpbGVTZXJ2aWNlL3VwZGF0ZUZpbGVPckZvbGRlck5hbWU/U0lEPVZBTFVFJmZpbGVFeHBsb3Jlckl0ZW1JZD1WQUxVRSZmaWxlTmFtZT1WQUxVRSI+aHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9GaWxlU2VydmljZS91cGRhdGVGaWxlT3JGb2xkZXJOYW1lP1NJRD1WQUxVRSZhbXA7ZmlsZUV4cGxvcmVySXRlbUlkPVZBTFVFJmFtcDtmaWxlTmFtZT1WQUxVRTwvYT4NCisgICAgCQkgIDwvZGl2Pg0KKyAgICAJICAgCQkJCSAgICAJCSAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZCI+DQorCQkgICAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZF9oZWFkZXIiPg0KKwkJICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDoxMHB4Ij4NCisgICAgCQkJPGEgbmFtZT0idXBkYXRlRmlsZU9yRm9sZGVyTmFtZVNlbGYiID48Yj51cGRhdGVGaWxlT3JGb2xkZXJOYW1lU2VsZjwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+dXBkYXRlRmlsZU9yRm9sZGVyTmFtZVNlbGYgKA0KKyAgICAJCQkgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgU0lEDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIExvbmcgZmlsZUV4cGxvcmVySXRlbUlkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBmaWxlTmFtZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSkNCisgICAgCQkJPC9pPjxici8+DQorICAgIAkJCTxwPg0KKyAgICAJCQkgIHVwZGF0ZSBhIGZpbGUgb3IgZm9sZGVyIG5hbWUNCisgICAgCQkJPC9wPg0KKyAgICAJCQk8cD4NCisgICAgICAgICAgICAgICAgICBSZXR1cm4gVHlwZTogamF2YS5sYW5nLkxvbmcNCisgICAgICAgICAgICAgICAgPC9wPg0KKyAgICAJCQk8cD5QYXJhbXM6PC9wPg0KKyAgICAJCQkgICAgCQkJDQorICAgIAkJCQkgICAgCQkJPHRhYmxlIHJ1bGVzPSJhbGwiIGJvcmRlcj0iMSI+DQorCSAgICAJCQkgICA8dGhlYWQ+DQorCSAgICAJCQkgICA8dHI+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+VHlwZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+RmllbGRuYW1lPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSI0MDAiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvdGg+DQorCSAgICAJCQkgICA8L3RyPg0KKwkgICAgCQkJICAgPC90aGVhZD4NCisJICAgIAkJCSAgIDx0Ym9keT4NCisJICAgIAkJCSAgIAkgICAgCQkJICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlNJRDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+U0lEIFRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIGxvZ2dlZCBpbjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJTG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+ZmlsZUV4cGxvcmVySXRlbUlkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5maWxlIG9yIGZvbGRlciBpZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5maWxlTmFtZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+bmV3IGZpbGUgb3IgZm9sZGVyIG5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQorCSAgICAJCQk8L3RhYmxlPg0KKyAgICAJCQkgICAgCQkJPGJyLz4NCisgICAgCQkJUkVTVCBTYW1wbGUgQ2FsbC9VUkw6PGJyLz4NCisgICAgCQkJICAgIAkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL0ZpbGVTZXJ2aWNlL3VwZGF0ZUZpbGVPckZvbGRlck5hbWVTZWxmP1NJRD1WQUxVRSZmaWxlRXhwbG9yZXJJdGVtSWQ9VkFMVUUmZmlsZU5hbWU9VkFMVUUiPmh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvRmlsZVNlcnZpY2UvdXBkYXRlRmlsZU9yRm9sZGVyTmFtZVNlbGY/U0lEPVZBTFVFJmFtcDtmaWxlRXhwbG9yZXJJdGVtSWQ9VkFMVUUmYW1wO2ZpbGVOYW1lPVZBTFVFPC9hPg0KKyAgICAJCSAgPC9kaXY+DQorICAgIAkgICAJCQkJICAgIAkJICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kIj4NCisJCSAgICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kX2hlYWRlciI+DQorCQkgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjEwcHgiPg0KKyAgICAJCQk8YSBuYW1lPSJtb3ZlRmlsZSIgPjxiPm1vdmVGaWxlPC9iPjwvYT4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQkNCisgICAgCQkJTWV0aG9kOiA8aT5tb3ZlRmlsZSAoDQorICAgIAkJCSAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBTSUQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgTG9uZyBmaWxlRXhwbG9yZXJJdGVtSWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgTG9uZyBuZXdQYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgTG9uZyByb29tX2lkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEJvb2xlYW4gaXNPd25lcg0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIG1vdmVUb0hvbWUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgTG9uZyBvd25lcl9pZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSkNCisgICAgCQkJPC9pPjxici8+DQorICAgIAkJCTxwPg0KKyAgICAJCQkgIG1vdmUgYSBmaWxlIG9yIGZvbGRlcg0KKyAgICAJCQk8L3A+DQorICAgIAkJCTxwPg0KKyAgICAgICAgICAgICAgICAgIFJldHVybiBUeXBlOiBqYXZhLmxhbmcuTG9uZw0KKyAgICAgICAgICAgICAgICA8L3A+DQorICAgIAkJCTxwPlBhcmFtczo8L3A+DQorICAgIAkJCSAgICAJCQkNCisgICAgCQkJCSAgICAJCQk8dGFibGUgcnVsZXM9ImFsbCIgYm9yZGVyPSIxIj4NCisJICAgIAkJCSAgIDx0aGVhZD4NCisJICAgIAkJCSAgIDx0cj4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5UeXBlPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5GaWVsZG5hbWU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjQwMCIgYWxpZ249ImxlZnQiPkRlc2NyaXB0aW9uPC90aD4NCisJICAgIAkJCSAgIDwvdHI+DQorCSAgICAJCQkgICA8L3RoZWFkPg0KKwkgICAgCQkJICAgPHRib2R5Pg0KKwkgICAgCQkJICAgCSAgICAJCQkgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+U0lEPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5TSUQgVGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgbG9nZ2VkIGluPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5maWxlRXhwbG9yZXJJdGVtSWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmN1cnJlbnQgZmlsZSBvciBmb2xkZXIgaWQgdG8gYmUgbW92ZWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUxvbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPm5ld1BhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+bmV3IHBhcmVudCBmb2xkZXIgaWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUxvbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnJvb21faWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnJvb20gaWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlzT3duZXI8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlmIHRydWUgb3duZXIgaWQgd2lsbCBiZSBzZXQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPm1vdmVUb0hvbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlmIHRydWUgbW92ZSB0byBwcml2YXRlIGRyaXZlPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5vd25lcl9pZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+b3duZXIgaWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQorCSAgICAJCQk8L3RhYmxlPg0KKyAgICAJCQkgICAgCQkJPGJyLz4NCisgICAgCQkJUkVTVCBTYW1wbGUgQ2FsbC9VUkw6PGJyLz4NCisgICAgCQkJICAgIAkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvRmlsZVNlcnZpY2UvbW92ZUZpbGU/U0lEPVZBTFVFJmZpbGVFeHBsb3Jlckl0ZW1JZD1WQUxVRSZuZXdQYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQ9VkFMVUUmcm9vbV9pZD1WQUxVRSZpc093bmVyPVZBTFVFJm1vdmVUb0hvbWU9VkFMVUUmb3duZXJfaWQ9VkFMVUUiPmh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvRmlsZVNlcnZpY2UvbW92ZUZpbGU/U0lEPVZBTFVFJmFtcDtmaWxlRXhwbG9yZXJJdGVtSWQ9VkFMVUUmYW1wO25ld1BhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZD1WQUxVRSZhbXA7cm9vbV9pZD1WQUxVRSZhbXA7aXNPd25lcj1WQUxVRSZhbXA7bW92ZVRvSG9tZT1WQUxVRSZhbXA7b3duZXJfaWQ9VkFMVUU8L2E+DQorICAgIAkJICA8L2Rpdj4NCisgICAgCSAgIAkJCQkgICAgCQkgICAgICA8ZGl2IGNsYXNzPSJtZXRob2QiPg0KKwkJICAgICAgICA8ZGl2IGNsYXNzPSJtZXRob2RfaGVhZGVyIj4NCisJCSAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTBweCI+DQorICAgIAkJCTxhIG5hbWU9Im1vdmVGaWxlU2VsZiIgPjxiPm1vdmVGaWxlU2VsZjwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+bW92ZUZpbGVTZWxmICgNCisgICAgCQkJICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIFNJRA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBMb25nIGZpbGVFeHBsb3Jlckl0ZW1JZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBMb25nIG5ld1BhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBMb25nIHJvb21faWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgQm9vbGVhbiBpc093bmVyDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEJvb2xlYW4gbW92ZVRvSG9tZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSkNCisgICAgCQkJPC9pPjxici8+DQorICAgIAkJCTxwPg0KKyAgICAJCQkgIG1vdmUgYSBmaWxlIG9yIGZvbGRlcg0KKyAgICAJCQk8L3A+DQorICAgIAkJCTxwPg0KKyAgICAgICAgICAgICAgICAgIFJldHVybiBUeXBlOiBqYXZhLmxhbmcuTG9uZw0KKyAgICAgICAgICAgICAgICA8L3A+DQorICAgIAkJCTxwPlBhcmFtczo8L3A+DQorICAgIAkJCSAgICAJCQkNCisgICAgCQkJCSAgICAJCQk8dGFibGUgcnVsZXM9ImFsbCIgYm9yZGVyPSIxIj4NCisJICAgIAkJCSAgIDx0aGVhZD4NCisJICAgIAkJCSAgIDx0cj4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5UeXBlPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5GaWVsZG5hbWU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjQwMCIgYWxpZ249ImxlZnQiPkRlc2NyaXB0aW9uPC90aD4NCisJICAgIAkJCSAgIDwvdHI+DQorCSAgICAJCQkgICA8L3RoZWFkPg0KKwkgICAgCQkJICAgPHRib2R5Pg0KKwkgICAgCQkJICAgCSAgICAJCQkgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+U0lEPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5TSUQgVGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgbG9nZ2VkIGluPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5maWxlRXhwbG9yZXJJdGVtSWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmN1cnJlbnQgZmlsZSBvciBmb2xkZXIgaWQgdG8gYmUgbW92ZWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUxvbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPm5ld1BhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+bmV3IHBhcmVudCBmb2xkZXIgaWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUxvbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnJvb21faWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnJvb20gaWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlzT3duZXI8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlmIHRydWUgb3duZXIgaWQgd2lsbCBiZSBzZXQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPm1vdmVUb0hvbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPm1vdmUgdG8gcHJpdmF0ZSBkcml2ZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCisJICAgIAkJCTwvdGFibGU+DQorICAgIAkJCSAgICAJCQk8YnIvPg0KKyAgICAJCQlSRVNUIFNhbXBsZSBDYWxsL1VSTDo8YnIvPg0KKyAgICAJCQkgICAgCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvRmlsZVNlcnZpY2UvbW92ZUZpbGVTZWxmP1NJRD1WQUxVRSZmaWxlRXhwbG9yZXJJdGVtSWQ9VkFMVUUmbmV3UGFyZW50RmlsZUV4cGxvcmVySXRlbUlkPVZBTFVFJnJvb21faWQ9VkFMVUUmaXNPd25lcj1WQUxVRSZtb3ZlVG9Ib21lPVZBTFVFIj5odHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL0ZpbGVTZXJ2aWNlL21vdmVGaWxlU2VsZj9TSUQ9VkFMVUUmYW1wO2ZpbGVFeHBsb3Jlckl0ZW1JZD1WQUxVRSZhbXA7bmV3UGFyZW50RmlsZUV4cGxvcmVySXRlbUlkPVZBTFVFJmFtcDtyb29tX2lkPVZBTFVFJmFtcDtpc093bmVyPVZBTFVFJmFtcDttb3ZlVG9Ib21lPVZBTFVFPC9hPg0KKyAgICAJCSAgPC9kaXY+DQorICAgIAkgICAJCQkNCisJDQorCTwvYm9keT4NCis8L2h0bWw+DQorDQpkaWZmIC0tZ2l0IGEvZG9jcy9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIGIvZG9jcy9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhZmZiZWUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwKQEAgLTAsMCArMSw5MDggQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgorCis8IS0tCitDb3B5cmlnaHQgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKworPCEtLSBDb250ZW50IFN0eWxlc2hlZXQgZm9yIFNpdGUgLS0+CisKKyAgICAgICAgCis8IS0tIHN0YXJ0IHRoZSBwcm9jZXNzaW5nIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8IS0tIEdFTkVSQVRFRCBGSUxFLCBETyBOT1QgRURJVCwgRURJVCBUSEUgWE1MIEZJTEUgSU4geGRvY3MgSU5TVEVBRCEgLS0+CisgICAgPCEtLSBNYWluIFBhZ2UgU2VjdGlvbiAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGh0bWw+CisgICAgICAgIDxoZWFkPgorICAgICAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiLz4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iCisJCQlPcGVuTWVldGluZ3MgVGVhbQorCQkiPgorICAgICAgICAgICAgPG1ldGEgbmFtZT0iZW1haWwiIGNvbnRlbnQ9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+CisgICAgICAgICAgICAKKyAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgPHRpdGxlPkFwYWNoZSBPcGVuTWVldGluZ3MgLSBMaXN0IG9mIGdlbmVyYWwgY29uZmlndXJhdGlvbiBvcHRpb25zPC90aXRsZT4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9vcGVubWVldGluZ3MuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9qcXVlcnktdWkuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2luLXNsaWRlci1zdHlsZXMuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2xvcmJveC5jc3MiIC8+CisgICAgICAgICAgICAKKwkJCTwhLS0gQWRkIGpRdWVyeSBsaWJyYXJ5IC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LTEuNy4xLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPCEtLSBBZGQgY29pbnNsaWRlciBwbHVnaW5zIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvY29pbi1zbGlkZXIubWluLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPCEtLSBBZGQgY29sb3Jib3ggcGx1Z2luIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LmNvbG9yYm94LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmNvcmUuanMiPjwvc2NyaXB0PgorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS53aWRnZXQuanMiPjwvc2NyaXB0PgorCQkKKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkuYWNjb3JkaW9uLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdD4KKwkJCSQoZnVuY3Rpb24oKSB7CisJCQkJJCggIiNhY2NvcmRpb24iICkuYWNjb3JkaW9uKHsKKwkJCQkJYXV0b0hlaWdodDogZmFsc2UsCisJCQkJCW5hdmlnYXRpb246IHRydWUsCisJCQkJCW5hdmlnYXRpb25GaWx0ZXI6IGZ1bmN0aW9uICgpIHsKKwkJCQkJCXZhciBzaWRlYmFySHJlZkFycmF5ID0gdGhpcy5ocmVmLnNwbGl0KCIvIik7CisgICAgCQkJCQl2YXIgc2lkZUJhckxhc3RTdHJpbmcgPSBzaWRlYmFySHJlZkFycmF5W3NpZGViYXJIcmVmQXJyYXkubGVuZ3RoIC0gMV0udG9Mb3dlckNhc2UoKTsKKwkJCQkJCQorCQkJCQkJaWYgKHNpZGVCYXJMYXN0U3RyaW5nLmluZGV4T2YoIiMiKSA9PSAtMSkgeworCQkJCQkJCXJldHVybiBmYWxzZTsKKwkJCQkJCX0KKwkJCQkJCQorCQkJCQkJCQkJCQkJLyogZG9jdW1lbnQubG9jYXRpb24uaHJlZiAqLworCQkJCQkJdmFyIGN1cnJlbnRTZWN0aW9uID0gIiI7CisJCQkJCQkKKwkJCQkJCXZhciBjdXJyZW50TG9jYXRpb24gPSAiIjsKKwkJCQkJCXZhciBjdXJyZW50TGluayA9ICIiOworCQkJCQkJaWYgKGZhbHNlKSB7CisJCQkJCQkKKwkJCQkJCX0KKyAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5kZXguaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5kZXguaHRtbCIuc3Vic3RyKDEsICIvaW5kZXguaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9saWNlbnNlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2xpY2Vuc2UuaHRtbCIuc3Vic3RyKDEsICIvbGljZW5zZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5zdWJzdHIoMSwgImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZG93bmxvYWRzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2Rvd25sb2Fkcy5odG1sIi5zdWJzdHIoMSwgIi9kb3dubG9hZHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiLnN1YnN0cigxLCAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9pbnN0YWxsYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5zdGFsbGF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL2luc3RhbGxhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1VwZ3JhZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvVXBncmFkZS5odG1sIi5zdWJzdHIoMSwgIi9VcGdyYWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIuc3Vic3RyKDEsICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db21tYW5kTGluZUFkbWluLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIuc3Vic3RyKDEsICIvQ29tbWFuZExpbmVBZG1pbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9nZXQtaW52b2x2ZWQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9nZXQtaW52b2x2ZWQuaHRtbCIuc3Vic3RyKDEsICIvZ2V0LWludm9sdmVkLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGVhbS1saXN0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdGVhbS1saXN0Lmh0bWwiLnN1YnN0cigxLCAiL3RlYW0tbGlzdC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL21haWwtbGlzdHMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9tYWlsLWxpc3RzLmh0bWwiLnN1YnN0cigxLCAiL21haWwtbGlzdHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLnN1YnN0cigxLCAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3N2bi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvc3ZuLmh0bWwiLnN1YnN0cigxLCAiL3N2bi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIuc3Vic3RyKDEsICJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2RlcGVuZGVuY2llcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZGVwZW5kZW5jaWVzLmh0bWwiLnN1YnN0cigxLCAiL2RlcGVuZGVuY2llcy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pVbml0VGVzdGluZy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSlVuaXRUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL0pVbml0VGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01hbnVhbFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01hbnVhbFRlc3RpbmcuaHRtbCIuc3Vic3RyKDEsICIvTWFudWFsVGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlbGVhc2VHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVsZWFzZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1JlbGVhc2VHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYnNpdGVHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvV2Vic2l0ZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1dlYnNpdGVHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Tb2FwUmVzdEFQSS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU29hcFJlc3RBUEkuaHRtbCIuc3Vic3RyKDEsICIvU29hcFJlc3RBUEkuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZXN0QVBJU2FtcGxlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZXN0QVBJU2FtcGxlLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RBUElTYW1wbGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MZGFwQW5kQURTLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9MZGFwQW5kQURTLmh0bWwiLnN1YnN0cigxLCAiL0xkYXBBbmRBRFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FcnJvcnNUYWJsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRXJyb3JzVGFibGUuaHRtbCIuc3Vic3RyKDEsICIvRXJyb3JzVGFibGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTW9vZGxlUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01vb2RsZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Nb29kbGVQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TYWthaVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TYWthaVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TYWthaVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ppcmFQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSmlyYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9KaXJhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSm9vbWxhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pvb21sYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Kb29tbGFQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EcnVwYWxQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRHJ1cGFsUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0RydXBhbFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0JpdHJpeFBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CaXRyaXhQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvQml0cml4UGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TdWdhckNSTVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TdWdhckNSTVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TdWdhckNSTVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlZG1pbmVQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVkbWluZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9SZWRtaW5lUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSUJNREIyQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSUJNREIyQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL0lCTURCMkNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3JhY2xlQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3JhY2xlQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL09yYWNsZUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTXlTUUxDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9NeVNRTENvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9NeVNRTENvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUG9zdGdyZXNDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MYW5ndWFnZUVkaXRvci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLnN1YnN0cigxLCAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5zdWJzdHIoMSwgIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FZGl0VGVtcGxhdGVzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRWRpdFRlbXBsYXRlcy5odG1sIi5zdWJzdHIoMSwgIi9FZGl0VGVtcGxhdGVzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1BvcnRTZXR0aW5ncy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1BvcnRTZXR0aW5ncy5odG1sIi5zdWJzdHIoMSwgIi9Qb3J0U2V0dGluZ3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5zdWJzdHIoMSwgIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5zdWJzdHIoMSwgIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EYXNoYm9hcmQuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9EYXNoYm9hcmQuaHRtbCIuc3Vic3RyKDEsICIvRGFzaGJvYXJkLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLnN1YnN0cigxLCAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Ib3RLZXlzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSG90S2V5cy5odG1sIi5zdWJzdHIoMSwgIi9Ib3RLZXlzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYmFwcE5hbWVQYXRoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvV2ViYXBwTmFtZVBhdGguaHRtbCIuc3Vic3RyKDEsICIvV2ViYXBwTmFtZVBhdGguaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL05hdmlnYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9OYXZpZ2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL05hdmlnYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLnN1YnN0cigxLCAiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIuc3Vic3RyKDEsICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIuc3Vic3RyKDEsICIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUlRNUFNBbmRIVFRQUy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1JUTVBTQW5kSFRUUFMuaHRtbCIuc3Vic3RyKDEsICIvUlRNUFNBbmRIVFRQUy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5zdWJzdHIoMSwgIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5zdWJzdHIoMSwgIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NsdXN0ZXJpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DbHVzdGVyaW5nLmh0bWwiLnN1YnN0cigxLCAiL0NsdXN0ZXJpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvR2V0VmVyc2lvbkluZm8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9HZXRWZXJzaW9uSW5mby5odG1sIi5zdWJzdHIoMSwgIi9HZXRWZXJzaW9uSW5mby5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkgICAgCQkJCQkKKyAgICAJCQkJCWN1cnJlbnRMaW5rID0gY3VycmVudExpbmsudG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCWN1cnJlbnRMb2NhdGlvbiA9IGN1cnJlbnRMb2NhdGlvbi50b0xvd2VyQ2FzZSgpOworICAgIAkJCQkJCisJCQkJCQlyZXR1cm4gc2lkZUJhckxhc3RTdHJpbmcgPT0gY3VycmVudExpbmsrIiMiK2N1cnJlbnRMb2NhdGlvbjsKKwkJCQkJfQorCQkJCX0pOworCQkJfSk7CisJCQk8L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCQkJCSQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgeworCQkJCQkkKCcuZmFuY3lib3gtYnV0dG9ucycpLmNvbG9yYm94KHtyZWw6J2ZhbmN5Ym94LWJ1dHRvbnMnLHdpZHRoOiI3NSUiLCBoZWlnaHQ6Ijc1JSJ9KTsKKwkJCQkJJCgnI2FjY29yZGlvbiBhJykuZWFjaChmdW5jdGlvbigpIHsKKwkJCQkgICAgICB2YXIgYSA9ICQodGhpcyk7CisJCQkJICAgICAgdmFyIGhyZWYgPSBhLmF0dHIoImhyZWYiKTsKKwkJCQkgICAgICBpZiAoaHJlZi5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkgICAgICAJICB2YXIgY29tcGFyZUl0ID0gaHJlZi5zdWJzdHIoMiwgaHJlZi5sZW5ndGgpOworCQkJCQkgICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKGNvbXBhcmVJdCkhPSAtMSkgeworCQkJCQkgICAgICAgYS5hZGRDbGFzcygnYWN0aXZlJyk7CisJCQkJCSAgICAgIH0KKwkJCQkgICAgICB9CisJCQkJICAgIH0pOworCQkJCQkkKCcjY29pbi1zbGlkZXInKS5jb2luc2xpZGVyKHsgd2lkdGg6IDY0MCxoZWlnaHQ6IDQwMCwgZGVsYXk6IDQwMDAgIH0pOwkJCQkJCisJCQkJfSk7CisJCQk8L3NjcmlwdD4JCisJCQkJCQkKKwkJCTxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisJCQkJLmZhbmN5Ym94LWN1c3RvbSAuZmFuY3lib3gtb3V0ZXIgeworCQkJCQlib3gtc2hhZG93OiAwIDAgNTBweCAjMjIyOworCQkJCX0KKwkJCTwvc3R5bGU+CisgICAgICAgIDwvaGVhZD4KKworICAgICAgICA8Ym9keSBiZ2NvbG9yPSIjZmZmZmZmIiB0ZXh0PSIjMDAwMDAwIiBsaW5rPSIjMTIzNDY1IiB2bGluaz0iIzEyMzQ2NSIgYWxpbms9IiMwMDAwMDAiPiAgCisgICAgICAgIAk8ZGl2IGNsYXNzPSJtYWluYm9keSIgc3R5bGU9IndpZHRoOiAxMDAlOyI+CisgICAgICAgIAk8ZGl2IGNsYXNzPSJzdXBlcmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIj4KKyAgICAgICAgICAgICAgICA8IS0tIFRPUCBJTUFHRSAtLT4KKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCI+Cis8YSBocmVmPSJodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvIj48aW1nIHNyYz0iLi9pbWFnZXMvbG9nby0yLmpwZyIgYWx0PSJBcGFjaGUgT3Blbk1lZXRpbmdzIiBib3JkZXI9IjAiLz48L2E+Cis8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCIgPgorCTxhIGhyZWY9ImRlbW8uaHRtbCI+RGVtbzwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJkb3dubG9hZHMuaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5Eb3dubG9hZDwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJpbnN0YWxsYXRpb24uaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5JbnN0YWxsYXRpb248L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MiIHRhcmdldD0iX0JMQU5LIj5XaWtpPC9hPgorCTxzcGFuPiZuYnNwOzwvc3Bhbj4KKzwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjQiPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8IS0tIExFRlQgU0lERSBOQVZJR0FUSU9OIC0tPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiIG5vd3JhcD0ibm93cmFwIj4KKworICAgICAgICAgICAgICAgICAgICA8IS0tIHNwZWNpYWwgQUNvbiBMb2dvIC0gbGVhdmUgaGVyZSBmb3IgbmV4dCB0aW1lCisgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9hcGFjaGVjb24uY29tLzIwMDUvVVMvIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vYXBhY2hlLm9yZy9pbWFnZXMvYWMyMDA1dXNfYmx1ZV8xMjV4MTI1LmpwZyIgaGVpZ2h0PSIxMjUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPSIxMjUiIGJvcmRlcj0iMCIgYWx0PSJBcGFjaGVDb24gVVMgMjAwNSIgLz4KKyAgICAgICAgICAgICAgICAgICAgPC9hPiAgLS0+CisKKyAgICAgICAgICAgICAgICAgICA8IS0tIHJlZ3VsYXIgbWVudSAtLT4KKworICAgICAgICAgICAgICAgICAgICAKKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8ZGl2IGlkPSJhY2NvcmRpb24iIHN0eWxlPSJ3aWR0aDogMTAwJSI+CisgICAgCisgICAgICAgICAgICAJPGgzPjxhIGhyZWY9IiNHZW5lcmFsIj5HZW5lcmFsPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9pbmRleC5odG1sIj5Ib21lPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9saWNlbnNlLmh0bWwiPkxpY2Vuc2U8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5BU0Y8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2Rvd25sb2Fkcy5odG1sIj5Eb3dubG9hZHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIj5Db21tZXJjaWFsIFN1cHBvcnQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0luc3RhbGxhdGlvbmFuZFVwZ3JhZGUiPkluc3RhbGxhdGlvbiBhbmQgVXBncmFkZTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5zdGFsbGF0aW9uLmh0bWwiPkluc3RhbGxhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vVXBncmFkZS5odG1sIj5VcGdyYWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLmh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIj5UdXRvcmlhbHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCI+Q29tbWFuZCBMaW5lIEFkbWluPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb21tdW5pdHkiPkNvbW11bml0eTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZ2V0LWludm9sdmVkLmh0bWwiPkdldCBJbnZvbHZlZDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdGVhbS1saXN0Lmh0bWwiPkNvbW1pdHRlcnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL21haWwtbGlzdHMuaHRtbCI+TWFpbGluZyBMaXN0czwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIj5XaWtpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNEZXZlbG9wbWVudCI+RGV2ZWxvcG1lbnQ8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3N2bi5odG1sIj5Tb3VyY2UgQ29kZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiPkJ1Z3MgLyBJc3N1ZXMgKEpJUkEpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kZXBlbmRlbmNpZXMuaHRtbCI+RGVwZW5kZW5jaWVzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CdWlsZEluc3RydWN0aW9ucy5odG1sIj5CdWlsZCBJbnN0cnVjdGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pVbml0VGVzdGluZy5odG1sIj5KVW5pdCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9NYW51YWxUZXN0aW5nLmh0bWwiPk1hbnVhbCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWxlYXNlR3VpZGUuaHRtbCI+UmVsZWFzZSBHdWlkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vV2Vic2l0ZUd1aWRlLmh0bWwiPldlYnNpdGUgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0ludGVncmF0aW9uIj5JbnRlZ3JhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU29hcFJlc3RBUEkuaHRtbCI+U09BUC9SRVNUIEFQSTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVzdEFQSVNhbXBsZS5odG1sIj5SRVNUIEFQSSBTYW1wbGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0xkYXBBbmRBRFMuaHRtbCI+TGRhcCBhbmQgQURTPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIj5Wb0lQIGFuZCBTSVA8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0Vycm9yc1RhYmxlLmh0bWwiPkVycm9ycyB0YWJsZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjUGx1Z2lucyI+UGx1Z2luczwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTW9vZGxlUGx1Z2luLmh0bWwiPk1vb2RsZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Nha2FpUGx1Z2luLmh0bWwiPlNha2FpIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSmlyYVBsdWdpbi5odG1sIj5KaXJhIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSm9vbWxhUGx1Z2luLmh0bWwiPkpvb21sYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0RydXBhbFBsdWdpbi5odG1sIj5EcnVwYWwgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CaXRyaXhQbHVnaW4uaHRtbCI+Qml0cml4IFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQ29uZmx1ZW5jZVBsdWdpbi5odG1sIj5Db25mbHVlbmNlIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU3VnYXJDUk1QbHVnaW4uaHRtbCI+U3VnYXJDUk0gUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWRtaW5lUGx1Z2luLmh0bWwiPlJlZG1pbmUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb25maWd1cmF0aW9uIj5Db25maWd1cmF0aW9uPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5EQiBTYW1wbGUgQ29uZmlndXJhdGlvbnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIj5BcGFjaGUgRGVyYnk8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0lCTURCMkNvbmZpZy5odG1sIj5JQk0gREIyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcmFjbGVDb25maWcuaHRtbCI+T3JhY2xlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9NeVNRTENvbmZpZy5odG1sIj5NeVNRTDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9zdGdyZXNDb25maWcuaHRtbCI+UG9zdGdyZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkxvY2FsaXphdGlvbiBhbmQgbGFuZ3VhZ2VzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCI+SW50ZXJuYXRpb25hbGlzYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0xhbmd1YWdlRWRpdG9yLmh0bWwiPkxhbmd1YWdlRWRpdG9yPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiPlRpbWVab25lSGFuZGxpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0VkaXRUZW1wbGF0ZXMuaHRtbCI+RWRpdFRlbXBsYXRlczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TkFUIFBvcnQgU2V0dGluZ3M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Qb3J0U2V0dGluZ3MuaHRtbCI+UG9ydCBzZXR0aW5nczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+UGVyZm9ybWFuY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIj5KVk0gcGVyZm9ybWFuY2UgdHVuaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Vc2VyIEludGVyZmFjZTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCI+VGhlbWVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9EYXNoYm9hcmQuaHRtbCI+RGFzaGJvYXJkPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIj5XZWJjYW0gcmVzb2x1dGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIj5Sb29tIGxheW91dCBvcHRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Ib3RLZXlzLmh0bWwiPkhvdCBLZXlzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5DdXN0b21pemF0aW9uPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViYXBwTmFtZVBhdGguaHRtbCI+V2ViYXBwIG5hbWUvcGF0aDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTmF2aWdhdGlvbi5odG1sIj5OYXZpZ2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiPkNhbGVuZGFyIGFuZCB0aW1lem9uZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIj5DdXN0b20gcm9vbSB0eXBlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIj5DdXN0b20gY3R5cHQgbWVjaGFuaXNtPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIj5HZW5lcmFsIENvbmZpZ3VyYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlNlY3VyaXR5PC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUmVzdHJpY3RlZEFjY2Vzcy5odG1sIj5SZXN0cmljdGVkIEFjY2VzczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUlRNUFNBbmRIVFRQUy5odG1sIj5SVE1QUyBhbmQgSFRUUFM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNvbnZlcnRlcnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiPk9wZW5PZmZpY2UgQ29udmVydGVyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiPkZGTVBFRyBWZXJzaW9uIFN3aXRjaDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q2x1c3RlcmluZzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NsdXN0ZXJpbmcuaHRtbCI+Q2x1c3RlcmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TWlzYzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0dldFZlcnNpb25JbmZvLmh0bWwiPkdldCB2ZXJzaW9uIGluZm88L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAorICAgIDwvZGl2PgorICAgICAKKyAgICA8YnIvPgorICAgIAorICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJMaXN0IG9mIGdlbmVyYWwgY29uZmlndXJhdGlvbiBvcHRpb25zIj48c3Ryb25nPkxpc3Qgb2YgZ2VuZXJhbCBjb25maWd1cmF0aW9uIG9wdGlvbnM8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPkluIEFkbWluaXN0cmF0aW9uICZndDsgQ29uZmlndXJhdGlvbiB0aGVyZSBhcmUgYSBudW1iZXIgb2YNCisJCQkJY29uZmlndXJhdGlvbiB2YWx1ZXMuDQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgLz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBiZ2NvbG9yPSIjMDM5YWNjIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgIGtleSAKKyAgICA8L3RoPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggYmdjb2xvcj0iIzAzOWFjYyIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICBkZWZhdWx0IAorICAgIDwvdGg+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBiZ2NvbG9yPSIjMDM5YWNjIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgIG1lYW5pbmcgCisgICAgPC90aD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGJnY29sb3I9IiMwMzlhY2MiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgYXZhaWxhYmUgc2luY2UgT3Blbk1lZXRpbmdzIHZlcnNpb24gCisgICAgPC90aD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgIHVzZXIubG9naW4ubWluaW11bS5sZW5ndGggCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgNCAKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICBtaW5pbXVtIGNoYXJzIHJlcXVpcmVkIGZvciB0aGUgbG9naW4gdG8gY3JlYXRlIGENCisJCQkJCQl1c2VyDQorCQkJCQkKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICAxLjkueCAKKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgdXNlci5wYXNzLm1pbmltdW0ubGVuZ3RoIAorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgIDQgCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgbWluaW11bSBjaGFycyByZXF1aXJlZCBmb3IgdGhlIHBhc3N3b3JkIHRvIGNyZWF0ZSBhDQorCQkJCQkJdXNlcg0KKwkJCQkJCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgMS45LnggCisgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgIG51bWJlci5taW51dGVzLnJlbWluZGVyLnNlbmQgCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgMTUgCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgbWludXRlcyB0aGUgb25lLXRpbWUgcmVtaW5kZXIgaW4gdGhlIGNhbGVuZGVyIGlzDQorCQkJCQkJc2VuZCwgc2V0IHRvIDAgdG8gZGlzYWJsZSByZW1pbmRlcg0KKwkJCQkJCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgMS45LnggCisgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgIG1heF91cGxvYWRfc2l6ZSAKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICAxMDczNzQxODI0IAorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgIE1heGltdW0gc2l6ZSBvZiB1cGxvYWQgZmlsZSAoYnl0ZXMpIDEwNzM3NDE4MjQgYnl0ZXMNCisJCQkJCQk9IDFHQg0KKwkJCQkJCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgMS44LnggCisgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgIHNob3cud2hpdGVib2FyZC5kcmF3LnN0YXR1cyAKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICAwIAorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgIERpc3BsYXkgbmFtZSBvZiB0aGUgdXNlciB3aG8gZHJhdyB0aGUgY3VycmVudCBvYmplY3QNCisJCQkJCQkoVXNlciBOYW1lIGF1dG8tZGlzYXBwZXIgYWZ0ZXIgMyBzZWNvbmRzLg0KKwkJCQkJCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgMS44LnggCisgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgIHVzZS5vbGQuc3R5bGUuZmZtcGVnLm1hcC5vcHRpb24gCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgMCAKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICBJZiB0aGUgc3lzdGVtIHNob3VsZCAiLiIgKG9sZCBmZm1wZWcpIGluc3RlYWQgb2YgIjoiDQorCQkJCQkJKG5ldyBmZm1wZWcpIGZvciB0aGUgLW1hcCBvcHRpb24gaW4gRkZNUEVHDQorCQkJCQkKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICAxLjkueCAKKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgaW52aXRlci5lbWFpbC5hcy5yZXBseXRvIAorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgIDEgCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgU2V0IGludml0ZXIncyBlbWFpbCBhZGRyZXNzIGFzIFJlcGx5VG8gaW4gZW1haWwgaW52aXRhdGlvbnMgKDEgPT0gc2V0LCAwID09IE5PVCBzZXQpCQorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgIDIuMC54IAorICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICBvZmZpY2UucGF0aCAKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICAKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICBUaGUgcGF0aCB0byBPcGVuT2ZmaWNlL0xpYnJlT2ZmaWNlIChvcHRpb25hbCkgcGxlYXNlIHNldCB0aGlzIHRvIHRoZSByZWFsIHBhdGggaW4gY2FzZSBqb2Rjb252ZXJ0ZXIgaXMgdW5hYmxlIHRvIGZpbmQgT3Blbk9mZmljZS9MaWJyZU9mZmljZSBpbnN0YWxsYXRpb24gYXV0b21hdGljYWxseQkKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICAyLjAueCAKKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgZGVmYXVsdC5sYW5kaW5nLnpvbmUgCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgZGFzaGJvYXJkLnJvb21zIAorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgIEFyZWEgdG8gYmUgc2hvd24gdG8gdGhlIHVzZXIgYWZ0ZXIgbG9naW4uIFBvc3NpYmxlIHZhbHVlcyBhcmU6IGRhc2hib2FyZC5yb29tcywgZGFzaGJvYXJkLmNoYXQsIGNhbGVuZGFyLCByb29tcy5wdWJsaWMsIHJvb21zLnByaXZhdGUsIHJvb21zLnVzZXIgCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgMi4xLnggCisgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgIHNtcy5wcm92aWRlciAKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICAgCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgU01TIHNlcnZpY2UgcHJvdmlkZXIgKGJ1bGtzbXMuaHR0cC4xKSAKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICAyLjEueCAKKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgc21zLlVzZXJuYW1lIAorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgICAKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICBMb2dpbiBmb3IgU01TIHNlcnZpY2UgcHJvdmlkZXIgCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgMi4xLnggCisgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgIHNtcy5Vc2VycGFzcyAKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICAgCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgUGFzc3dvcmQgZm9yIFNNUyBzZXJ2aWNlIHByb3ZpZGVyIAorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgIDIuMS54IAorICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICBzbXMuc3ViamVjdCAKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICAgCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgU3ViamVjdCBvZiBTTVMgcmVtaW5kZXIgbWVzc2FnZSAKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICAyLjEueCAKKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDwhLS0gRk9PVEVSIC0tPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgYWxpZ249ImNlbnRlciI+PGZvbnQgY29sb3I9IiMxMjM0NjUiIHNpemU9Ii0xIj48ZW0+CisgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAmIzE2OTsgMjAwMy0yMDEzLCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyAgICAgICAgICAgICAgICAgICAgPC9lbT48L2ZvbnQ+PC9kaXY+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvYm9keT4KKyAgICA8L2h0bWw+Cis8IS0tIGVuZCB0aGUgcHJvY2Vzc2luZyAtLT4KKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKwpkaWZmIC0tZ2l0IGEvZG9jcy9HZXRWZXJzaW9uSW5mby5odG1sIGIvZG9jcy9HZXRWZXJzaW9uSW5mby5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxZTFkN2MKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL0dldFZlcnNpb25JbmZvLmh0bWwKQEAgLTAsMCArMSw3MjQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgorCis8IS0tCitDb3B5cmlnaHQgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKworPCEtLSBDb250ZW50IFN0eWxlc2hlZXQgZm9yIFNpdGUgLS0+CisKKyAgICAgICAgCis8IS0tIHN0YXJ0IHRoZSBwcm9jZXNzaW5nIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8IS0tIEdFTkVSQVRFRCBGSUxFLCBETyBOT1QgRURJVCwgRURJVCBUSEUgWE1MIEZJTEUgSU4geGRvY3MgSU5TVEVBRCEgLS0+CisgICAgPCEtLSBNYWluIFBhZ2UgU2VjdGlvbiAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGh0bWw+CisgICAgICAgIDxoZWFkPgorICAgICAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiLz4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iCisJCQlPcGVuTWVldGluZ3MgVGVhbQorCQkiPgorICAgICAgICAgICAgPG1ldGEgbmFtZT0iZW1haWwiIGNvbnRlbnQ9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+CisgICAgICAgICAgICAKKyAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgPHRpdGxlPkFwYWNoZSBPcGVuTWVldGluZ3MgLSBIb3cgdG8gY2hlY2sgd2hpY2ggT3Blbm1lZXRpbmdzIHZlcnNpb24gcnVubmluZzwvdGl0bGU+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3Mvb3Blbm1lZXRpbmdzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvanF1ZXJ5LXVpLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29pbi1zbGlkZXItc3R5bGVzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29sb3Jib3guY3NzIiAvPgorICAgICAgICAgICAgCisJCQk8IS0tIEFkZCBqUXVlcnkgbGlicmFyeSAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS0xLjcuMS5taW4uanMiPjwvc2NyaXB0PgorCQkKKwkJCTwhLS0gQWRkIGNvaW5zbGlkZXIgcGx1Z2lucyAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2NvaW4tc2xpZGVyLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTwhLS0gQWRkIGNvbG9yYm94IHBsdWdpbiAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS5jb2xvcmJveC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5jb3JlLmpzIj48L3NjcmlwdD4KKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkud2lkZ2V0LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmFjY29yZGlvbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQ+CisJCQkkKGZ1bmN0aW9uKCkgeworCQkJCSQoICIjYWNjb3JkaW9uIiApLmFjY29yZGlvbih7CisJCQkJCWF1dG9IZWlnaHQ6IGZhbHNlLAorCQkJCQluYXZpZ2F0aW9uOiB0cnVlLAorCQkJCQluYXZpZ2F0aW9uRmlsdGVyOiBmdW5jdGlvbiAoKSB7CisJCQkJCQl2YXIgc2lkZWJhckhyZWZBcnJheSA9IHRoaXMuaHJlZi5zcGxpdCgiLyIpOworICAgIAkJCQkJdmFyIHNpZGVCYXJMYXN0U3RyaW5nID0gc2lkZWJhckhyZWZBcnJheVtzaWRlYmFySHJlZkFycmF5Lmxlbmd0aCAtIDFdLnRvTG93ZXJDYXNlKCk7CisJCQkJCQkKKwkJCQkJCWlmIChzaWRlQmFyTGFzdFN0cmluZy5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJCQl9CisJCQkJCQkKKwkJCQkJCQkJCQkJCS8qIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgKi8KKwkJCQkJCXZhciBjdXJyZW50U2VjdGlvbiA9ICIiOworCQkJCQkJCisJCQkJCQl2YXIgY3VycmVudExvY2F0aW9uID0gIiI7CisJCQkJCQl2YXIgY3VycmVudExpbmsgPSAiIjsKKwkJCQkJCWlmIChmYWxzZSkgeworCQkJCQkJCisJCQkJCQl9CisgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luZGV4Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luZGV4Lmh0bWwiLnN1YnN0cigxLCAiL2luZGV4Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbGljZW5zZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9saWNlbnNlLmh0bWwiLnN1YnN0cigxLCAiL2xpY2Vuc2UuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIuc3Vic3RyKDEsICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2Rvd25sb2Fkcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kb3dubG9hZHMuaHRtbCIuc3Vic3RyKDEsICIvZG93bmxvYWRzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5zdWJzdHIoMSwgIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5zdGFsbGF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luc3RhbGxhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9pbnN0YWxsYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9VcGdyYWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1VwZ3JhZGUuaHRtbCIuc3Vic3RyKDEsICIvVXBncmFkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLnN1YnN0cigxLCAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29tbWFuZExpbmVBZG1pbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLnN1YnN0cigxLCAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZ2V0LWludm9sdmVkLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZ2V0LWludm9sdmVkLmh0bWwiLnN1YnN0cigxLCAiL2dldC1pbnZvbHZlZC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RlYW0tbGlzdC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3RlYW0tbGlzdC5odG1sIi5zdWJzdHIoMSwgIi90ZWFtLWxpc3QuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9tYWlsLWxpc3RzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbWFpbC1saXN0cy5odG1sIi5zdWJzdHIoMSwgIi9tYWlsLWxpc3RzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5zdWJzdHIoMSwgImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9zdm4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3N2bi5odG1sIi5zdWJzdHIoMSwgIi9zdm4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLnN1YnN0cigxLCAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kZXBlbmRlbmNpZXMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2RlcGVuZGVuY2llcy5odG1sIi5zdWJzdHIoMSwgIi9kZXBlbmRlbmNpZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVW5pdFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pVbml0VGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9KVW5pdFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NYW51YWxUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9NYW51YWxUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL01hbnVhbFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWxlYXNlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlbGVhc2VHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9SZWxlYXNlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJzaXRlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1dlYnNpdGVHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9XZWJzaXRlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU29hcFJlc3RBUEkuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1NvYXBSZXN0QVBJLmh0bWwiLnN1YnN0cigxLCAiL1NvYXBSZXN0QVBJLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdEFQSVNhbXBsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVzdEFQSVNhbXBsZS5odG1sIi5zdWJzdHIoMSwgIi9SZXN0QVBJU2FtcGxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGRhcEFuZEFEUy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTGRhcEFuZEFEUy5odG1sIi5zdWJzdHIoMSwgIi9MZGFwQW5kQURTLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRXJyb3JzVGFibGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0Vycm9yc1RhYmxlLmh0bWwiLnN1YnN0cigxLCAiL0Vycm9yc1RhYmxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01vb2RsZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Nb29kbGVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvTW9vZGxlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU2FrYWlQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU2FrYWlQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU2FrYWlQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KaXJhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0ppcmFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSmlyYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pvb21sYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Kb29tbGFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSm9vbWxhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRHJ1cGFsUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0RydXBhbFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9EcnVwYWxQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CaXRyaXhQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQml0cml4UGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0JpdHJpeFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU3VnYXJDUk1QbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWRtaW5lUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlZG1pbmVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvUmVkbWluZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0lCTURCMkNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0lCTURCMkNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9JQk1EQjJDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09yYWNsZUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09yYWNsZUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9PcmFjbGVDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL015U1FMQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTXlTUUxDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvTXlTUUxDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Bvc3RncmVzQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9zdGdyZXNDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvUG9zdGdyZXNDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9MYW5ndWFnZUVkaXRvci5odG1sIi5zdWJzdHIoMSwgIi9MYW5ndWFnZUVkaXRvci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVGltZVpvbmVIYW5kbGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIuc3Vic3RyKDEsICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRWRpdFRlbXBsYXRlcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIuc3Vic3RyKDEsICIvRWRpdFRlbXBsYXRlcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3J0U2V0dGluZ3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3J0U2V0dGluZ3MuaHRtbCIuc3Vic3RyKDEsICIvUG9ydFNldHRpbmdzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIuc3Vic3RyKDEsICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIuc3Vic3RyKDEsICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRGFzaGJvYXJkLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRGFzaGJvYXJkLmh0bWwiLnN1YnN0cigxLCAiL0Rhc2hib2FyZC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSG90S2V5cy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0hvdEtleXMuaHRtbCIuc3Vic3RyKDEsICIvSG90S2V5cy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJhcHBOYW1lUGF0aC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLnN1YnN0cigxLCAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9OYXZpZ2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTmF2aWdhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9OYXZpZ2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5zdWJzdHIoMSwgIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JUTVBTQW5kSFRUUFMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SVE1QU0FuZEhUVFBTLmh0bWwiLnN1YnN0cigxLCAiL1JUTVBTQW5kSFRUUFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIuc3Vic3RyKDEsICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIuc3Vic3RyKDEsICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DbHVzdGVyaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2x1c3RlcmluZy5odG1sIi5zdWJzdHIoMSwgIi9DbHVzdGVyaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dldFZlcnNpb25JbmZvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2V0VmVyc2lvbkluZm8uaHRtbCIuc3Vic3RyKDEsICIvR2V0VmVyc2lvbkluZm8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJICAgIAkJCQkJCisgICAgCQkJCQljdXJyZW50TGluayA9IGN1cnJlbnRMaW5rLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQljdXJyZW50TG9jYXRpb24gPSBjdXJyZW50TG9jYXRpb24udG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCQorCQkJCQkJcmV0dXJuIHNpZGVCYXJMYXN0U3RyaW5nID09IGN1cnJlbnRMaW5rKyIjIitjdXJyZW50TG9jYXRpb247CisJCQkJCX0KKwkJCQl9KTsKKwkJCX0pOworCQkJPC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwkJCQkkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsKKwkJCQkJJCgnLmZhbmN5Ym94LWJ1dHRvbnMnKS5jb2xvcmJveCh7cmVsOidmYW5jeWJveC1idXR0b25zJyx3aWR0aDoiNzUlIiwgaGVpZ2h0OiI3NSUifSk7CisJCQkJCSQoJyNhY2NvcmRpb24gYScpLmVhY2goZnVuY3Rpb24oKSB7CisJCQkJICAgICAgdmFyIGEgPSAkKHRoaXMpOworCQkJCSAgICAgIHZhciBocmVmID0gYS5hdHRyKCJocmVmIik7CisJCQkJICAgICAgaWYgKGhyZWYuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJICAgICAgCSAgdmFyIGNvbXBhcmVJdCA9IGhyZWYuc3Vic3RyKDIsIGhyZWYubGVuZ3RoKTsKKwkJCQkJICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZihjb21wYXJlSXQpIT0gLTEpIHsKKwkJCQkJICAgICAgIGEuYWRkQ2xhc3MoJ2FjdGl2ZScpOworCQkJCQkgICAgICB9CisJCQkJICAgICAgfQorCQkJCSAgICB9KTsKKwkJCQkJJCgnI2NvaW4tc2xpZGVyJykuY29pbnNsaWRlcih7IHdpZHRoOiA2NDAsaGVpZ2h0OiA0MDAsIGRlbGF5OiA0MDAwICB9KTsJCQkJCQorCQkJCX0pOworCQkJPC9zY3JpcHQ+CQorCQkJCQkJCisJCQk8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorCQkJCS5mYW5jeWJveC1jdXN0b20gLmZhbmN5Ym94LW91dGVyIHsKKwkJCQkJYm94LXNoYWRvdzogMCAwIDUwcHggIzIyMjsKKwkJCQl9CisJCQk8L3N0eWxlPgorICAgICAgICA8L2hlYWQ+CisKKyAgICAgICAgPGJvZHkgYmdjb2xvcj0iI2ZmZmZmZiIgdGV4dD0iIzAwMDAwMCIgbGluaz0iIzEyMzQ2NSIgdmxpbms9IiMxMjM0NjUiIGFsaW5rPSIjMDAwMDAwIj4gIAorICAgICAgICAJPGRpdiBjbGFzcz0ibWFpbmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAJPGRpdiBjbGFzcz0ic3VwZXJib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCI+CisgICAgICAgICAgICAgICAgPCEtLSBUT1AgSU1BR0UgLS0+CisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPgorPGEgaHJlZj0iaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnLyI+PGltZyBzcmM9Ii4vaW1hZ2VzL2xvZ28tMi5qcGciIGFsdD0iQXBhY2hlIE9wZW5NZWV0aW5ncyIgYm9yZGVyPSIwIi8+PC9hPgorPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiID4KKwk8YSBocmVmPSJkZW1vLmh0bWwiPkRlbW88L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iZG93bmxvYWRzLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+RG93bmxvYWQ8L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaW5zdGFsbGF0aW9uLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+SW5zdGFsbGF0aW9uPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTIiB0YXJnZXQ9Il9CTEFOSyI+V2lraTwvYT4KKwk8c3Bhbj4mbmJzcDs8L3NwYW4+Cis8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSI0Ij4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPCEtLSBMRUZUIFNJREUgTkFWSUdBVElPTiAtLT4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIiBub3dyYXA9Im5vd3JhcCI+CisKKyAgICAgICAgICAgICAgICAgICAgPCEtLSBzcGVjaWFsIEFDb24gTG9nbyAtIGxlYXZlIGhlcmUgZm9yIG5leHQgdGltZQorICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vYXBhY2hlY29uLmNvbS8yMDA1L1VTLyI+CisgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2FwYWNoZS5vcmcvaW1hZ2VzL2FjMjAwNXVzX2JsdWVfMTI1eDEyNS5qcGciIGhlaWdodD0iMTI1IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTI1IiBib3JkZXI9IjAiIGFsdD0iQXBhY2hlQ29uIFVTIDIwMDUiIC8+CisgICAgICAgICAgICAgICAgICAgIDwvYT4gIC0tPgorCisgICAgICAgICAgICAgICAgICAgPCEtLSByZWd1bGFyIG1lbnUgLS0+CisKKyAgICAgICAgICAgICAgICAgICAgCisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGRpdiBpZD0iYWNjb3JkaW9uIiBzdHlsZT0id2lkdGg6IDEwMCUiPgorICAgIAorICAgICAgICAgICAgCTxoMz48YSBocmVmPSIjR2VuZXJhbCI+R2VuZXJhbDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5kZXguaHRtbCI+SG9tZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbGljZW5zZS5odG1sIj5MaWNlbnNlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyI+QVNGPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kb3dubG9hZHMuaHRtbCI+RG93bmxvYWRzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCI+Q29tbWVyY2lhbCBTdXBwb3J0PC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnN0YWxsYXRpb25hbmRVcGdyYWRlIj5JbnN0YWxsYXRpb24gYW5kIFVwZ3JhZGU8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luc3RhbGxhdGlvbi5odG1sIj5JbnN0YWxsYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1VwZ3JhZGUuaHRtbCI+VXBncmFkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii5odHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyI+VHV0b3JpYWxzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db21tYW5kTGluZUFkbWluLmh0bWwiPkNvbW1hbmQgTGluZSBBZG1pbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29tbXVuaXR5Ij5Db21tdW5pdHk8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2dldC1pbnZvbHZlZC5odG1sIj5HZXQgSW52b2x2ZWQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3RlYW0tbGlzdC5odG1sIj5Db21taXR0ZXJzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9tYWlsLWxpc3RzLmh0bWwiPk1haWxpbmcgTGlzdHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyI+V2lraTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjRGV2ZWxvcG1lbnQiPkRldmVsb3BtZW50PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9zdm4uaHRtbCI+U291cmNlIENvZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIj5CdWdzIC8gSXNzdWVzIChKSVJBKTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZGVwZW5kZW5jaWVzLmh0bWwiPkRlcGVuZGVuY2llczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCI+QnVpbGQgSW5zdHJ1Y3Rpb25zPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KVW5pdFRlc3RpbmcuaHRtbCI+SlVuaXQgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTWFudWFsVGVzdGluZy5odG1sIj5NYW51YWwgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVsZWFzZUd1aWRlLmh0bWwiPlJlbGVhc2UgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1dlYnNpdGVHdWlkZS5odG1sIj5XZWJzaXRlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnRlZ3JhdGlvbiI+SW50ZWdyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1NvYXBSZXN0QVBJLmh0bWwiPlNPQVAvUkVTVCBBUEk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Jlc3RBUElTYW1wbGUuaHRtbCI+UkVTVCBBUEkgU2FtcGxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9MZGFwQW5kQURTLmh0bWwiPkxkYXAgYW5kIEFEUzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCI+Vm9JUCBhbmQgU0lQPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9FcnJvcnNUYWJsZS5odG1sIj5FcnJvcnMgdGFibGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI1BsdWdpbnMiPlBsdWdpbnM8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01vb2RsZVBsdWdpbi5odG1sIj5Nb29kbGUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TYWthaVBsdWdpbi5odG1sIj5TYWthaSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0ppcmFQbHVnaW4uaHRtbCI+SmlyYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pvb21sYVBsdWdpbi5odG1sIj5Kb29tbGEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9EcnVwYWxQbHVnaW4uaHRtbCI+RHJ1cGFsIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQml0cml4UGx1Z2luLmh0bWwiPkJpdHJpeCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCI+Q29uZmx1ZW5jZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiPlN1Z2FyQ1JNIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVkbWluZVBsdWdpbi5odG1sIj5SZWRtaW5lIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29uZmlndXJhdGlvbiI+Q29uZmlndXJhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+REIgU2FtcGxlIENvbmZpZ3VyYXRpb25zPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQXBhY2hlRGVyYnlDb25maWcuaHRtbCI+QXBhY2hlIERlcmJ5PC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JQk1EQjJDb25maWcuaHRtbCI+SUJNIERCMjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3JhY2xlQ29uZmlnLmh0bWwiPk9yYWNsZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTXlTUUxDb25maWcuaHRtbCI+TXlTUUw8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Bvc3RncmVzQ29uZmlnLmh0bWwiPlBvc3RncmVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Mb2NhbGl6YXRpb24gYW5kIGxhbmd1YWdlczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiPkludGVybmF0aW9uYWxpc2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9MYW5ndWFnZUVkaXRvci5odG1sIj5MYW5ndWFnZUVkaXRvcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vVGltZVpvbmVIYW5kbGluZy5odG1sIj5UaW1lWm9uZUhhbmRsaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9FZGl0VGVtcGxhdGVzLmh0bWwiPkVkaXRUZW1wbGF0ZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk5BVCBQb3J0IFNldHRpbmdzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9ydFNldHRpbmdzLmh0bWwiPlBvcnQgc2V0dGluZ3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlBlcmZvcm1hbmNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCI+SlZNIHBlcmZvcm1hbmNlIHR1bmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+VXNlciBJbnRlcmZhY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiPlRoZW1lczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRGFzaGJvYXJkLmh0bWwiPkRhc2hib2FyZDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCI+V2ViY2FtIHJlc29sdXRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCI+Um9vbSBsYXlvdXQgb3B0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSG90S2V5cy5odG1sIj5Ib3QgS2V5czwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q3VzdG9taXphdGlvbjwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmFwcE5hbWVQYXRoLmh0bWwiPldlYmFwcCBuYW1lL3BhdGg8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL05hdmlnYXRpb24uaHRtbCI+TmF2aWdhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIj5DYWxlbmRhciBhbmQgdGltZXpvbmU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCI+Q3VzdG9tIHJvb20gdHlwZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCI+Q3VzdG9tIGN0eXB0IG1lY2hhbmlzbTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCI+R2VuZXJhbCBDb25maWd1cmF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5TZWN1cml0eTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCI+UmVzdHJpY3RlZCBBY2Nlc3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1JUTVBTQW5kSFRUUFMuaHRtbCI+UlRNUFMgYW5kIEhUVFBTPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Db252ZXJ0ZXJzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIj5PcGVuT2ZmaWNlIENvbnZlcnRlcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIj5GRk1QRUcgVmVyc2lvbiBTd2l0Y2g8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNsdXN0ZXJpbmc8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DbHVzdGVyaW5nLmh0bWwiPkNsdXN0ZXJpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk1pc2M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZXRWZXJzaW9uSW5mby5odG1sIj5HZXQgdmVyc2lvbiBpbmZvPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAKKyAgICA8L2Rpdj4KKyAgICAgCisgICAgPGJyLz4KKyAgICAKKyAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iSG93IHRvIGNoZWNrIHdoaWNoIE9wZW5tZWV0aW5ncyB2ZXJzaW9uIHJ1bm5pbmciPjxzdHJvbmc+SG93IHRvIGNoZWNrIHdoaWNoIE9wZW5tZWV0aW5ncyB2ZXJzaW9uIHJ1bm5pbmc8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPklmIHlvdSBuZWVkIHRvIGtub3cgd2hhdCB2ZXJzaW9uIG9mIE9wZW5NZWV0aW5ncyB5b3UgYXJlIHJ1bm5pbmcsDQorCQkJCXlvdSBjYW4gY2hlY2sgdGhhdCBieSB0aGUgZmlsZTogb3Blbm1lZXRpbmdzLSouamFyDQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQorCQkJCVVuemlwOiAvd2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9saWIvb3Blbm1lZXRpbmdzLSouamFyIChqYXJzIGFyZQ0KKwkJCQl6aXBzKQ0KKwkJCQk8YnIgLz4NCisJCQkJPGJyIC8+DQorCQkJCUluIHRoZSByZXN1bHRpbmcgdW56aXBwZWQgZm9sZGVyIG9wZW4gdGhlIGZpbGUgdG8gcmVhZDoNCisJCQkJL01FVEEtSU5GL01BTklGRVNULk1GDQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WW91IGdldCBzb21ldGhpbmcgbGlrZSB0aGlzOiA8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ4bWxjb2RlIj4NCisJCQkJTWFuaWZlc3QtVmVyc2lvbjogMS4wDQorCQkJCTxiciAvPg0KKwkJCQlBbnQtVmVyc2lvbjogQXBhY2hlIEFudCAxLjguMg0KKwkJCQk8YnIgLz4NCisJCQkJQ3JlYXRlZC1CeTogMS42LjBfMjYtYjAzLTM4My0xMUE1MTEgKEFwcGxlIEluYy4pDQorCQkJCTxiciAvPg0KKwkJCQlCdWlsdC1CeTogT3Blbk1lZXRpbmdzIC0gaHR0cDovL29wZW5tZWV0aW5ncy5nb29nbGVjb2RlLmNvbQ0KKwkJCQk8YnIgLz4NCisJCQkJQnVpbHQtT246IDIzLU9jdG9iZXItMjAxMQ0KKwkJCQk8YnIgLz4NCisJCQkJU3ZuLVJldmlzaW9uOiA0MzY4DQorCQkJCTxiciAvPg0KKwkJCTwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+VGhpcyB2ZXJzaW9uIGluZm8gaXMgYXZhaWxhYmxlIHNpbmNlIHZlcnNpb24gMS44LjAuIElmIHlvdSBoYXZlIGFuDQorCQkJCW9sZGVyIHZlcnNpb24gYXMgdmVyc2lvbiAxLjguMCB0aGVuIHlvdSBtaWdodCBzaW1wbHkgY2hlY2sgdGhlDQorCQkJCWxhbmd1YWdlIGZpbGVzIGFuZCB0aGUgbGFiZWxpZCBpbiB0aGVyZSwgdGhlIG51bWJlcnMgb2YgbGFiZWxzIGFyZQ0KKwkJCQlhbG1vc3QgYWx3YXlzIHVuaXF1ZSBpbiB0aGUgdmVyc2lvbnMuIDwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPCEtLSBGT09URVIgLS0+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGhyIG5vc2hhZGU9Im5vc2hhZGUiIHNpemU9IjEiLz4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBhbGlnbj0iY2VudGVyIj48Zm9udCBjb2xvcj0iIzEyMzQ2NSIgc2l6ZT0iLTEiPjxlbT4KKyAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0ICYjMTY5OyAyMDAzLTIwMTMsIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorICAgICAgICAgICAgICAgICAgICA8L2VtPjwvZm9udD48L2Rpdj4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9ib2R5PgorICAgIDwvaHRtbD4KKzwhLS0gZW5kIHRoZSBwcm9jZXNzaW5nIC0tPgorCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCmRpZmYgLS1naXQgYS9kb2NzL0hvdEtleXMuaHRtbCBiL2RvY3MvSG90S2V5cy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllOThlYWUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL0hvdEtleXMuaHRtbApAQCAtMCwwICsxLDc1NCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CisKKzwhLS0KK0NvcHlyaWdodCAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK3lvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCitodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworCis8IS0tIENvbnRlbnQgU3R5bGVzaGVldCBmb3IgU2l0ZSAtLT4KKworICAgICAgICAKKzwhLS0gc3RhcnQgdGhlIHByb2Nlc3NpbmcgLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDwhLS0gR0VORVJBVEVEIEZJTEUsIERPIE5PVCBFRElULCBFRElUIFRIRSBYTUwgRklMRSBJTiB4ZG9jcyBJTlNURUFEISAtLT4KKyAgICA8IS0tIE1haW4gUGFnZSBTZWN0aW9uIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8aHRtbD4KKyAgICAgICAgPGhlYWQ+CisgICAgICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIvPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSIKKwkJCU9wZW5NZWV0aW5ncyBUZWFtCisJCSI+CisgICAgICAgICAgICA8bWV0YSBuYW1lPSJlbWFpbCIgY29udGVudD0ic29sb21heEBhcGFjaGUub3JnIj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICA8dGl0bGU+QXBhY2hlIE9wZW5NZWV0aW5ncyAtIEhvdCBLZXlzPC90aXRsZT4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9vcGVubWVldGluZ3MuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9qcXVlcnktdWkuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2luLXNsaWRlci1zdHlsZXMuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2xvcmJveC5jc3MiIC8+CisgICAgICAgICAgICAKKwkJCTwhLS0gQWRkIGpRdWVyeSBsaWJyYXJ5IC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LTEuNy4xLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPCEtLSBBZGQgY29pbnNsaWRlciBwbHVnaW5zIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvY29pbi1zbGlkZXIubWluLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPCEtLSBBZGQgY29sb3Jib3ggcGx1Z2luIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LmNvbG9yYm94LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmNvcmUuanMiPjwvc2NyaXB0PgorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS53aWRnZXQuanMiPjwvc2NyaXB0PgorCQkKKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkuYWNjb3JkaW9uLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdD4KKwkJCSQoZnVuY3Rpb24oKSB7CisJCQkJJCggIiNhY2NvcmRpb24iICkuYWNjb3JkaW9uKHsKKwkJCQkJYXV0b0hlaWdodDogZmFsc2UsCisJCQkJCW5hdmlnYXRpb246IHRydWUsCisJCQkJCW5hdmlnYXRpb25GaWx0ZXI6IGZ1bmN0aW9uICgpIHsKKwkJCQkJCXZhciBzaWRlYmFySHJlZkFycmF5ID0gdGhpcy5ocmVmLnNwbGl0KCIvIik7CisgICAgCQkJCQl2YXIgc2lkZUJhckxhc3RTdHJpbmcgPSBzaWRlYmFySHJlZkFycmF5W3NpZGViYXJIcmVmQXJyYXkubGVuZ3RoIC0gMV0udG9Mb3dlckNhc2UoKTsKKwkJCQkJCQorCQkJCQkJaWYgKHNpZGVCYXJMYXN0U3RyaW5nLmluZGV4T2YoIiMiKSA9PSAtMSkgeworCQkJCQkJCXJldHVybiBmYWxzZTsKKwkJCQkJCX0KKwkJCQkJCQorCQkJCQkJCQkJCQkJLyogZG9jdW1lbnQubG9jYXRpb24uaHJlZiAqLworCQkJCQkJdmFyIGN1cnJlbnRTZWN0aW9uID0gIiI7CisJCQkJCQkKKwkJCQkJCXZhciBjdXJyZW50TG9jYXRpb24gPSAiIjsKKwkJCQkJCXZhciBjdXJyZW50TGluayA9ICIiOworCQkJCQkJaWYgKGZhbHNlKSB7CisJCQkJCQkKKwkJCQkJCX0KKyAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5kZXguaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5kZXguaHRtbCIuc3Vic3RyKDEsICIvaW5kZXguaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9saWNlbnNlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2xpY2Vuc2UuaHRtbCIuc3Vic3RyKDEsICIvbGljZW5zZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5zdWJzdHIoMSwgImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZG93bmxvYWRzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2Rvd25sb2Fkcy5odG1sIi5zdWJzdHIoMSwgIi9kb3dubG9hZHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiLnN1YnN0cigxLCAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9pbnN0YWxsYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5zdGFsbGF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL2luc3RhbGxhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1VwZ3JhZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvVXBncmFkZS5odG1sIi5zdWJzdHIoMSwgIi9VcGdyYWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIuc3Vic3RyKDEsICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db21tYW5kTGluZUFkbWluLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIuc3Vic3RyKDEsICIvQ29tbWFuZExpbmVBZG1pbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9nZXQtaW52b2x2ZWQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9nZXQtaW52b2x2ZWQuaHRtbCIuc3Vic3RyKDEsICIvZ2V0LWludm9sdmVkLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGVhbS1saXN0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdGVhbS1saXN0Lmh0bWwiLnN1YnN0cigxLCAiL3RlYW0tbGlzdC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL21haWwtbGlzdHMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9tYWlsLWxpc3RzLmh0bWwiLnN1YnN0cigxLCAiL21haWwtbGlzdHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLnN1YnN0cigxLCAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3N2bi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvc3ZuLmh0bWwiLnN1YnN0cigxLCAiL3N2bi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIuc3Vic3RyKDEsICJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2RlcGVuZGVuY2llcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZGVwZW5kZW5jaWVzLmh0bWwiLnN1YnN0cigxLCAiL2RlcGVuZGVuY2llcy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pVbml0VGVzdGluZy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSlVuaXRUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL0pVbml0VGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01hbnVhbFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01hbnVhbFRlc3RpbmcuaHRtbCIuc3Vic3RyKDEsICIvTWFudWFsVGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlbGVhc2VHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVsZWFzZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1JlbGVhc2VHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYnNpdGVHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvV2Vic2l0ZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1dlYnNpdGVHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Tb2FwUmVzdEFQSS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU29hcFJlc3RBUEkuaHRtbCIuc3Vic3RyKDEsICIvU29hcFJlc3RBUEkuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZXN0QVBJU2FtcGxlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZXN0QVBJU2FtcGxlLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RBUElTYW1wbGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MZGFwQW5kQURTLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9MZGFwQW5kQURTLmh0bWwiLnN1YnN0cigxLCAiL0xkYXBBbmRBRFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FcnJvcnNUYWJsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRXJyb3JzVGFibGUuaHRtbCIuc3Vic3RyKDEsICIvRXJyb3JzVGFibGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTW9vZGxlUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01vb2RsZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Nb29kbGVQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TYWthaVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TYWthaVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TYWthaVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ppcmFQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSmlyYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9KaXJhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSm9vbWxhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pvb21sYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Kb29tbGFQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EcnVwYWxQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRHJ1cGFsUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0RydXBhbFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0JpdHJpeFBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CaXRyaXhQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvQml0cml4UGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TdWdhckNSTVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TdWdhckNSTVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TdWdhckNSTVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlZG1pbmVQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVkbWluZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9SZWRtaW5lUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSUJNREIyQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSUJNREIyQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL0lCTURCMkNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3JhY2xlQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3JhY2xlQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL09yYWNsZUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTXlTUUxDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9NeVNRTENvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9NeVNRTENvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUG9zdGdyZXNDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MYW5ndWFnZUVkaXRvci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLnN1YnN0cigxLCAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5zdWJzdHIoMSwgIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FZGl0VGVtcGxhdGVzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRWRpdFRlbXBsYXRlcy5odG1sIi5zdWJzdHIoMSwgIi9FZGl0VGVtcGxhdGVzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1BvcnRTZXR0aW5ncy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1BvcnRTZXR0aW5ncy5odG1sIi5zdWJzdHIoMSwgIi9Qb3J0U2V0dGluZ3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5zdWJzdHIoMSwgIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5zdWJzdHIoMSwgIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EYXNoYm9hcmQuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9EYXNoYm9hcmQuaHRtbCIuc3Vic3RyKDEsICIvRGFzaGJvYXJkLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLnN1YnN0cigxLCAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Ib3RLZXlzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSG90S2V5cy5odG1sIi5zdWJzdHIoMSwgIi9Ib3RLZXlzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYmFwcE5hbWVQYXRoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvV2ViYXBwTmFtZVBhdGguaHRtbCIuc3Vic3RyKDEsICIvV2ViYXBwTmFtZVBhdGguaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL05hdmlnYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9OYXZpZ2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL05hdmlnYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLnN1YnN0cigxLCAiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIuc3Vic3RyKDEsICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIuc3Vic3RyKDEsICIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUlRNUFNBbmRIVFRQUy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1JUTVBTQW5kSFRUUFMuaHRtbCIuc3Vic3RyKDEsICIvUlRNUFNBbmRIVFRQUy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5zdWJzdHIoMSwgIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5zdWJzdHIoMSwgIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NsdXN0ZXJpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DbHVzdGVyaW5nLmh0bWwiLnN1YnN0cigxLCAiL0NsdXN0ZXJpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvR2V0VmVyc2lvbkluZm8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9HZXRWZXJzaW9uSW5mby5odG1sIi5zdWJzdHIoMSwgIi9HZXRWZXJzaW9uSW5mby5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkgICAgCQkJCQkKKyAgICAJCQkJCWN1cnJlbnRMaW5rID0gY3VycmVudExpbmsudG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCWN1cnJlbnRMb2NhdGlvbiA9IGN1cnJlbnRMb2NhdGlvbi50b0xvd2VyQ2FzZSgpOworICAgIAkJCQkJCisJCQkJCQlyZXR1cm4gc2lkZUJhckxhc3RTdHJpbmcgPT0gY3VycmVudExpbmsrIiMiK2N1cnJlbnRMb2NhdGlvbjsKKwkJCQkJfQorCQkJCX0pOworCQkJfSk7CisJCQk8L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCQkJCSQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgeworCQkJCQkkKCcuZmFuY3lib3gtYnV0dG9ucycpLmNvbG9yYm94KHtyZWw6J2ZhbmN5Ym94LWJ1dHRvbnMnLHdpZHRoOiI3NSUiLCBoZWlnaHQ6Ijc1JSJ9KTsKKwkJCQkJJCgnI2FjY29yZGlvbiBhJykuZWFjaChmdW5jdGlvbigpIHsKKwkJCQkgICAgICB2YXIgYSA9ICQodGhpcyk7CisJCQkJICAgICAgdmFyIGhyZWYgPSBhLmF0dHIoImhyZWYiKTsKKwkJCQkgICAgICBpZiAoaHJlZi5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkgICAgICAJICB2YXIgY29tcGFyZUl0ID0gaHJlZi5zdWJzdHIoMiwgaHJlZi5sZW5ndGgpOworCQkJCQkgICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKGNvbXBhcmVJdCkhPSAtMSkgeworCQkJCQkgICAgICAgYS5hZGRDbGFzcygnYWN0aXZlJyk7CisJCQkJCSAgICAgIH0KKwkJCQkgICAgICB9CisJCQkJICAgIH0pOworCQkJCQkkKCcjY29pbi1zbGlkZXInKS5jb2luc2xpZGVyKHsgd2lkdGg6IDY0MCxoZWlnaHQ6IDQwMCwgZGVsYXk6IDQwMDAgIH0pOwkJCQkJCisJCQkJfSk7CisJCQk8L3NjcmlwdD4JCisJCQkJCQkKKwkJCTxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisJCQkJLmZhbmN5Ym94LWN1c3RvbSAuZmFuY3lib3gtb3V0ZXIgeworCQkJCQlib3gtc2hhZG93OiAwIDAgNTBweCAjMjIyOworCQkJCX0KKwkJCTwvc3R5bGU+CisgICAgICAgIDwvaGVhZD4KKworICAgICAgICA8Ym9keSBiZ2NvbG9yPSIjZmZmZmZmIiB0ZXh0PSIjMDAwMDAwIiBsaW5rPSIjMTIzNDY1IiB2bGluaz0iIzEyMzQ2NSIgYWxpbms9IiMwMDAwMDAiPiAgCisgICAgICAgIAk8ZGl2IGNsYXNzPSJtYWluYm9keSIgc3R5bGU9IndpZHRoOiAxMDAlOyI+CisgICAgICAgIAk8ZGl2IGNsYXNzPSJzdXBlcmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIj4KKyAgICAgICAgICAgICAgICA8IS0tIFRPUCBJTUFHRSAtLT4KKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCI+Cis8YSBocmVmPSJodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvIj48aW1nIHNyYz0iLi9pbWFnZXMvbG9nby0yLmpwZyIgYWx0PSJBcGFjaGUgT3Blbk1lZXRpbmdzIiBib3JkZXI9IjAiLz48L2E+Cis8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCIgPgorCTxhIGhyZWY9ImRlbW8uaHRtbCI+RGVtbzwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJkb3dubG9hZHMuaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5Eb3dubG9hZDwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJpbnN0YWxsYXRpb24uaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5JbnN0YWxsYXRpb248L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MiIHRhcmdldD0iX0JMQU5LIj5XaWtpPC9hPgorCTxzcGFuPiZuYnNwOzwvc3Bhbj4KKzwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjQiPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8IS0tIExFRlQgU0lERSBOQVZJR0FUSU9OIC0tPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiIG5vd3JhcD0ibm93cmFwIj4KKworICAgICAgICAgICAgICAgICAgICA8IS0tIHNwZWNpYWwgQUNvbiBMb2dvIC0gbGVhdmUgaGVyZSBmb3IgbmV4dCB0aW1lCisgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9hcGFjaGVjb24uY29tLzIwMDUvVVMvIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vYXBhY2hlLm9yZy9pbWFnZXMvYWMyMDA1dXNfYmx1ZV8xMjV4MTI1LmpwZyIgaGVpZ2h0PSIxMjUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPSIxMjUiIGJvcmRlcj0iMCIgYWx0PSJBcGFjaGVDb24gVVMgMjAwNSIgLz4KKyAgICAgICAgICAgICAgICAgICAgPC9hPiAgLS0+CisKKyAgICAgICAgICAgICAgICAgICA8IS0tIHJlZ3VsYXIgbWVudSAtLT4KKworICAgICAgICAgICAgICAgICAgICAKKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8ZGl2IGlkPSJhY2NvcmRpb24iIHN0eWxlPSJ3aWR0aDogMTAwJSI+CisgICAgCisgICAgICAgICAgICAJPGgzPjxhIGhyZWY9IiNHZW5lcmFsIj5HZW5lcmFsPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9pbmRleC5odG1sIj5Ib21lPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9saWNlbnNlLmh0bWwiPkxpY2Vuc2U8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5BU0Y8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2Rvd25sb2Fkcy5odG1sIj5Eb3dubG9hZHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIj5Db21tZXJjaWFsIFN1cHBvcnQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0luc3RhbGxhdGlvbmFuZFVwZ3JhZGUiPkluc3RhbGxhdGlvbiBhbmQgVXBncmFkZTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5zdGFsbGF0aW9uLmh0bWwiPkluc3RhbGxhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vVXBncmFkZS5odG1sIj5VcGdyYWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLmh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIj5UdXRvcmlhbHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCI+Q29tbWFuZCBMaW5lIEFkbWluPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb21tdW5pdHkiPkNvbW11bml0eTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZ2V0LWludm9sdmVkLmh0bWwiPkdldCBJbnZvbHZlZDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdGVhbS1saXN0Lmh0bWwiPkNvbW1pdHRlcnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL21haWwtbGlzdHMuaHRtbCI+TWFpbGluZyBMaXN0czwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIj5XaWtpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNEZXZlbG9wbWVudCI+RGV2ZWxvcG1lbnQ8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3N2bi5odG1sIj5Tb3VyY2UgQ29kZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiPkJ1Z3MgLyBJc3N1ZXMgKEpJUkEpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kZXBlbmRlbmNpZXMuaHRtbCI+RGVwZW5kZW5jaWVzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CdWlsZEluc3RydWN0aW9ucy5odG1sIj5CdWlsZCBJbnN0cnVjdGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pVbml0VGVzdGluZy5odG1sIj5KVW5pdCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9NYW51YWxUZXN0aW5nLmh0bWwiPk1hbnVhbCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWxlYXNlR3VpZGUuaHRtbCI+UmVsZWFzZSBHdWlkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vV2Vic2l0ZUd1aWRlLmh0bWwiPldlYnNpdGUgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0ludGVncmF0aW9uIj5JbnRlZ3JhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU29hcFJlc3RBUEkuaHRtbCI+U09BUC9SRVNUIEFQSTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVzdEFQSVNhbXBsZS5odG1sIj5SRVNUIEFQSSBTYW1wbGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0xkYXBBbmRBRFMuaHRtbCI+TGRhcCBhbmQgQURTPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIj5Wb0lQIGFuZCBTSVA8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0Vycm9yc1RhYmxlLmh0bWwiPkVycm9ycyB0YWJsZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjUGx1Z2lucyI+UGx1Z2luczwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTW9vZGxlUGx1Z2luLmh0bWwiPk1vb2RsZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Nha2FpUGx1Z2luLmh0bWwiPlNha2FpIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSmlyYVBsdWdpbi5odG1sIj5KaXJhIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSm9vbWxhUGx1Z2luLmh0bWwiPkpvb21sYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0RydXBhbFBsdWdpbi5odG1sIj5EcnVwYWwgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CaXRyaXhQbHVnaW4uaHRtbCI+Qml0cml4IFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQ29uZmx1ZW5jZVBsdWdpbi5odG1sIj5Db25mbHVlbmNlIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU3VnYXJDUk1QbHVnaW4uaHRtbCI+U3VnYXJDUk0gUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWRtaW5lUGx1Z2luLmh0bWwiPlJlZG1pbmUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb25maWd1cmF0aW9uIj5Db25maWd1cmF0aW9uPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5EQiBTYW1wbGUgQ29uZmlndXJhdGlvbnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIj5BcGFjaGUgRGVyYnk8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0lCTURCMkNvbmZpZy5odG1sIj5JQk0gREIyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcmFjbGVDb25maWcuaHRtbCI+T3JhY2xlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9NeVNRTENvbmZpZy5odG1sIj5NeVNRTDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9zdGdyZXNDb25maWcuaHRtbCI+UG9zdGdyZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkxvY2FsaXphdGlvbiBhbmQgbGFuZ3VhZ2VzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCI+SW50ZXJuYXRpb25hbGlzYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0xhbmd1YWdlRWRpdG9yLmh0bWwiPkxhbmd1YWdlRWRpdG9yPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiPlRpbWVab25lSGFuZGxpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0VkaXRUZW1wbGF0ZXMuaHRtbCI+RWRpdFRlbXBsYXRlczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TkFUIFBvcnQgU2V0dGluZ3M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Qb3J0U2V0dGluZ3MuaHRtbCI+UG9ydCBzZXR0aW5nczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+UGVyZm9ybWFuY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIj5KVk0gcGVyZm9ybWFuY2UgdHVuaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Vc2VyIEludGVyZmFjZTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCI+VGhlbWVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9EYXNoYm9hcmQuaHRtbCI+RGFzaGJvYXJkPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIj5XZWJjYW0gcmVzb2x1dGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIj5Sb29tIGxheW91dCBvcHRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Ib3RLZXlzLmh0bWwiPkhvdCBLZXlzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5DdXN0b21pemF0aW9uPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViYXBwTmFtZVBhdGguaHRtbCI+V2ViYXBwIG5hbWUvcGF0aDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTmF2aWdhdGlvbi5odG1sIj5OYXZpZ2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiPkNhbGVuZGFyIGFuZCB0aW1lem9uZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIj5DdXN0b20gcm9vbSB0eXBlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIj5DdXN0b20gY3R5cHQgbWVjaGFuaXNtPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIj5HZW5lcmFsIENvbmZpZ3VyYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlNlY3VyaXR5PC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUmVzdHJpY3RlZEFjY2Vzcy5odG1sIj5SZXN0cmljdGVkIEFjY2VzczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUlRNUFNBbmRIVFRQUy5odG1sIj5SVE1QUyBhbmQgSFRUUFM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNvbnZlcnRlcnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiPk9wZW5PZmZpY2UgQ29udmVydGVyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiPkZGTVBFRyBWZXJzaW9uIFN3aXRjaDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q2x1c3RlcmluZzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NsdXN0ZXJpbmcuaHRtbCI+Q2x1c3RlcmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TWlzYzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0dldFZlcnNpb25JbmZvLmh0bWwiPkdldCB2ZXJzaW9uIGluZm88L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAorICAgIDwvZGl2PgorICAgICAKKyAgICA8YnIvPgorICAgIAorICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJLZXlzIHRhYmxlIj48c3Ryb25nPktleXMgdGFibGU8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBiZ2NvbG9yPSIjMDM5YWNjIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgS2V5CisgICAgPC90aD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGJnY29sb3I9IiMwMzlhY2MiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBGdW5jdGlvbmFsaXR5CisgICAgPC90aD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGJnY29sb3I9IiMwMzlhY2MiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBDb25maWd1cmFibGUKKyAgICA8L3RoPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggYmdjb2xvcj0iIzAzOWFjYyIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIENvbmZpZyBLZXkKKyAgICA8L3RoPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBGMTIgKGNvZGUgMTIzKQorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgQSBob3Qga2V5IGNvZGUgZm9yIHRoZSAnZ2l2ZSBleGNsdXNpdmUgYXVkaW8nIGZ1bmN0aW9uYWxpdHkuCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBZZXMKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIGV4Y2x1c2l2ZS5hdWRpby5rZXljb2RlCisgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgRjggKGNvZGUgMTE5KQorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgSWYgMSBvciAyIHZpZGVvIHdpbmRvd3MgYXJlIHByZXNlbnQgaW4gdGhlIHJvb20gdGhleSB3aWxsIGJlDQorCQkJCQkJInJlYXJyYW5nZWQiIHRvIHRha2UgYWxsIHRoZSBwbGFjZSBhdmFpbGFibGUKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIE5vCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICANCisJCQkJCQorICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIEY3IChjb2RlIDExOCkKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIEEgaG90IGtleSBjb2RlIGZvciB0aGUgJ211dGUvdW5tdXRlIGF1ZGlvJyBmdW5jdGlvbmFsaXR5LgorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgWWVzCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBtdXRlLmtleWNvZGUKKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDwhLS0gRk9PVEVSIC0tPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgYWxpZ249ImNlbnRlciI+PGZvbnQgY29sb3I9IiMxMjM0NjUiIHNpemU9Ii0xIj48ZW0+CisgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAmIzE2OTsgMjAwMy0yMDEzLCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyAgICAgICAgICAgICAgICAgICAgPC9lbT48L2ZvbnQ+PC9kaXY+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvYm9keT4KKyAgICA8L2h0bWw+Cis8IS0tIGVuZCB0aGUgcHJvY2Vzc2luZyAtLT4KKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKwpkaWZmIC0tZ2l0IGEvZG9jcy9JQk1EQjJDb25maWcuaHRtbCBiL2RvY3MvSUJNREIyQ29uZmlnLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTJhYTFiMQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvSUJNREIyQ29uZmlnLmh0bWwKQEAgLTAsMCArMSw3ODMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgorCis8IS0tCitDb3B5cmlnaHQgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKworPCEtLSBDb250ZW50IFN0eWxlc2hlZXQgZm9yIFNpdGUgLS0+CisKKyAgICAgICAgCis8IS0tIHN0YXJ0IHRoZSBwcm9jZXNzaW5nIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8IS0tIEdFTkVSQVRFRCBGSUxFLCBETyBOT1QgRURJVCwgRURJVCBUSEUgWE1MIEZJTEUgSU4geGRvY3MgSU5TVEVBRCEgLS0+CisgICAgPCEtLSBNYWluIFBhZ2UgU2VjdGlvbiAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGh0bWw+CisgICAgICAgIDxoZWFkPgorICAgICAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiLz4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iCisJCQlBcGFjaGUgT3Blbk1lZXRpbmdzIERvY3VtZW50YXRpb24gVGVhbQorCQkiPgorICAgICAgICAgICAgPG1ldGEgbmFtZT0iZW1haWwiIGNvbnRlbnQ9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+CisgICAgICAgICAgICAKKyAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgPHRpdGxlPkFwYWNoZSBPcGVuTWVldGluZ3MgLSBJQk0gREIyIENvbmZpZ3VyYXRpb248L3RpdGxlPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL29wZW5tZWV0aW5ncy5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2pxdWVyeS11aS5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2NvaW4tc2xpZGVyLXN0eWxlcy5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2NvbG9yYm94LmNzcyIgLz4KKyAgICAgICAgICAgIAorCQkJPCEtLSBBZGQgalF1ZXJ5IGxpYnJhcnkgLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9qcXVlcnktMS43LjEubWluLmpzIj48L3NjcmlwdD4KKwkJCisJCQk8IS0tIEFkZCBjb2luc2xpZGVyIHBsdWdpbnMgLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9jb2luLXNsaWRlci5taW4uanMiPjwvc2NyaXB0PgorCQkJCisJCQk8IS0tIEFkZCBjb2xvcmJveCBwbHVnaW4gLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9qcXVlcnkuY29sb3Jib3guanMiPjwvc2NyaXB0PgorCQkKKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkuY29yZS5qcyI+PC9zY3JpcHQ+CisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLndpZGdldC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5hY2NvcmRpb24uanMiPjwvc2NyaXB0PgorCQkJCisJCQk8c2NyaXB0PgorCQkJJChmdW5jdGlvbigpIHsKKwkJCQkkKCAiI2FjY29yZGlvbiIgKS5hY2NvcmRpb24oeworCQkJCQlhdXRvSGVpZ2h0OiBmYWxzZSwKKwkJCQkJbmF2aWdhdGlvbjogdHJ1ZSwKKwkJCQkJbmF2aWdhdGlvbkZpbHRlcjogZnVuY3Rpb24gKCkgeworCQkJCQkJdmFyIHNpZGViYXJIcmVmQXJyYXkgPSB0aGlzLmhyZWYuc3BsaXQoIi8iKTsKKyAgICAJCQkJCXZhciBzaWRlQmFyTGFzdFN0cmluZyA9IHNpZGViYXJIcmVmQXJyYXlbc2lkZWJhckhyZWZBcnJheS5sZW5ndGggLSAxXS50b0xvd2VyQ2FzZSgpOworCQkJCQkJCisJCQkJCQlpZiAoc2lkZUJhckxhc3RTdHJpbmcuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJCQkJcmV0dXJuIGZhbHNlOworCQkJCQkJfQorCQkJCQkJCisJCQkJCQkJCQkJCQkvKiBkb2N1bWVudC5sb2NhdGlvbi5ocmVmICovCisJCQkJCQl2YXIgY3VycmVudFNlY3Rpb24gPSAiIjsKKwkJCQkJCQorCQkJCQkJdmFyIGN1cnJlbnRMb2NhdGlvbiA9ICIiOworCQkJCQkJdmFyIGN1cnJlbnRMaW5rID0gIiI7CisJCQkJCQlpZiAoZmFsc2UpIHsKKwkJCQkJCQorCQkJCQkJfQorICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9pbmRleC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9pbmRleC5odG1sIi5zdWJzdHIoMSwgIi9pbmRleC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2xpY2Vuc2UuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbGljZW5zZS5odG1sIi5zdWJzdHIoMSwgIi9saWNlbnNlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iLnN1YnN0cigxLCAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kb3dubG9hZHMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZG93bmxvYWRzLmh0bWwiLnN1YnN0cigxLCAiL2Rvd25sb2Fkcy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIuc3Vic3RyKDEsICIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luc3RhbGxhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9pbnN0YWxsYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvaW5zdGFsbGF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVXBncmFkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9VcGdyYWRlLmh0bWwiLnN1YnN0cigxLCAiL1VwZ3JhZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIi5zdWJzdHIoMSwgImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29tbWFuZExpbmVBZG1pbi5odG1sIi5zdWJzdHIoMSwgIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2dldC1pbnZvbHZlZC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2dldC1pbnZvbHZlZC5odG1sIi5zdWJzdHIoMSwgIi9nZXQtaW52b2x2ZWQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi90ZWFtLWxpc3QuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi90ZWFtLWxpc3QuaHRtbCIuc3Vic3RyKDEsICIvdGVhbS1saXN0Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbWFpbC1saXN0cy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL21haWwtbGlzdHMuaHRtbCIuc3Vic3RyKDEsICIvbWFpbC1saXN0cy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIuc3Vic3RyKDEsICJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvc3ZuLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9zdm4uaHRtbCIuc3Vic3RyKDEsICIvc3ZuLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIi5zdWJzdHIoMSwgImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZGVwZW5kZW5jaWVzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kZXBlbmRlbmNpZXMuaHRtbCIuc3Vic3RyKDEsICIvZGVwZW5kZW5jaWVzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiLnN1YnN0cigxLCAiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSlVuaXRUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9KVW5pdFRlc3RpbmcuaHRtbCIuc3Vic3RyKDEsICIvSlVuaXRUZXN0aW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTWFudWFsVGVzdGluZy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTWFudWFsVGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9NYW51YWxUZXN0aW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVsZWFzZUd1aWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZWxlYXNlR3VpZGUuaHRtbCIuc3Vic3RyKDEsICIvUmVsZWFzZUd1aWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2Vic2l0ZUd1aWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9XZWJzaXRlR3VpZGUuaHRtbCIuc3Vic3RyKDEsICIvV2Vic2l0ZUd1aWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1NvYXBSZXN0QVBJLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Tb2FwUmVzdEFQSS5odG1sIi5zdWJzdHIoMSwgIi9Tb2FwUmVzdEFQSS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RBUElTYW1wbGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1Jlc3RBUElTYW1wbGUuaHRtbCIuc3Vic3RyKDEsICIvUmVzdEFQSVNhbXBsZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0xkYXBBbmRBRFMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0xkYXBBbmRBRFMuaHRtbCIuc3Vic3RyKDEsICIvTGRhcEFuZEFEUy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0Vycm9yc1RhYmxlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9FcnJvcnNUYWJsZS5odG1sIi5zdWJzdHIoMSwgIi9FcnJvcnNUYWJsZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Nb29kbGVQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTW9vZGxlUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL01vb2RsZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Nha2FpUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1Nha2FpUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1Nha2FpUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSmlyYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9KaXJhUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0ppcmFQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Kb29tbGFQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSm9vbWxhUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0pvb21sYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0RydXBhbFBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9EcnVwYWxQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvRHJ1cGFsUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQml0cml4UGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0JpdHJpeFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9CaXRyaXhQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVkbWluZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZWRtaW5lUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1JlZG1pbmVQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9JQk1EQjJDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JQk1EQjJDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvSUJNREIyQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9PcmFjbGVDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9PcmFjbGVDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvT3JhY2xlQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NeVNRTENvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL015U1FMQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL015U1FMQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1Bvc3RncmVzQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL1Bvc3RncmVzQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0xhbmd1YWdlRWRpdG9yLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIuc3Vic3RyKDEsICIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiLnN1YnN0cigxLCAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0VkaXRUZW1wbGF0ZXMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9FZGl0VGVtcGxhdGVzLmh0bWwiLnN1YnN0cigxLCAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUG9ydFNldHRpbmdzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9ydFNldHRpbmdzLmh0bWwiLnN1YnN0cigxLCAiL1BvcnRTZXR0aW5ncy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiLnN1YnN0cigxLCAiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiLnN1YnN0cigxLCAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0Rhc2hib2FyZC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0Rhc2hib2FyZC5odG1sIi5zdWJzdHIoMSwgIi9EYXNoYm9hcmQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0hvdEtleXMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Ib3RLZXlzLmh0bWwiLnN1YnN0cigxLCAiL0hvdEtleXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViYXBwTmFtZVBhdGguaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJhcHBOYW1lUGF0aC5odG1sIi5zdWJzdHIoMSwgIi9XZWJhcHBOYW1lUGF0aC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTmF2aWdhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL05hdmlnYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvTmF2aWdhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIuc3Vic3RyKDEsICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIuc3Vic3RyKDEsICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIi5zdWJzdHIoMSwgIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SVE1QU0FuZEhUVFBTLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUlRNUFNBbmRIVFRQUy5odG1sIi5zdWJzdHIoMSwgIi9SVE1QU0FuZEhUVFBTLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiLnN1YnN0cigxLCAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiLnN1YnN0cigxLCAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ2x1c3RlcmluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NsdXN0ZXJpbmcuaHRtbCIuc3Vic3RyKDEsICIvQ2x1c3RlcmluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZXRWZXJzaW9uSW5mby5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dldFZlcnNpb25JbmZvLmh0bWwiLnN1YnN0cigxLCAiL0dldFZlcnNpb25JbmZvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCSAgICAJCQkJCQorICAgIAkJCQkJY3VycmVudExpbmsgPSBjdXJyZW50TGluay50b0xvd2VyQ2FzZSgpOworICAgIAkJCQkJY3VycmVudExvY2F0aW9uID0gY3VycmVudExvY2F0aW9uLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQkKKwkJCQkJCXJldHVybiBzaWRlQmFyTGFzdFN0cmluZyA9PSBjdXJyZW50TGluaysiIyIrY3VycmVudExvY2F0aW9uOworCQkJCQl9CisJCQkJfSk7CisJCQl9KTsKKwkJCTwvc2NyaXB0PgorCQkJCisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisJCQkJJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CisJCQkJCSQoJy5mYW5jeWJveC1idXR0b25zJykuY29sb3Jib3goe3JlbDonZmFuY3lib3gtYnV0dG9ucycsd2lkdGg6Ijc1JSIsIGhlaWdodDoiNzUlIn0pOworCQkJCQkkKCcjYWNjb3JkaW9uIGEnKS5lYWNoKGZ1bmN0aW9uKCkgeworCQkJCSAgICAgIHZhciBhID0gJCh0aGlzKTsKKwkJCQkgICAgICB2YXIgaHJlZiA9IGEuYXR0cigiaHJlZiIpOworCQkJCSAgICAgIGlmIChocmVmLmluZGV4T2YoIiMiKSA9PSAtMSkgeworCQkJCSAgICAgIAkgIHZhciBjb21wYXJlSXQgPSBocmVmLnN1YnN0cigyLCBocmVmLmxlbmd0aCk7CisJCQkJCSAgICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoY29tcGFyZUl0KSE9IC0xKSB7CisJCQkJCSAgICAgICBhLmFkZENsYXNzKCdhY3RpdmUnKTsKKwkJCQkJICAgICAgfQorCQkJCSAgICAgIH0KKwkJCQkgICAgfSk7CisJCQkJCSQoJyNjb2luLXNsaWRlcicpLmNvaW5zbGlkZXIoeyB3aWR0aDogNjQwLGhlaWdodDogNDAwLCBkZWxheTogNDAwMCAgfSk7CQkJCQkKKwkJCQl9KTsKKwkJCTwvc2NyaXB0PgkKKwkJCQkJCQorCQkJPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKwkJCQkuZmFuY3lib3gtY3VzdG9tIC5mYW5jeWJveC1vdXRlciB7CisJCQkJCWJveC1zaGFkb3c6IDAgMCA1MHB4ICMyMjI7CisJCQkJfQorCQkJPC9zdHlsZT4KKyAgICAgICAgPC9oZWFkPgorCisgICAgICAgIDxib2R5IGJnY29sb3I9IiNmZmZmZmYiIHRleHQ9IiMwMDAwMDAiIGxpbms9IiMxMjM0NjUiIHZsaW5rPSIjMTIzNDY1IiBhbGluaz0iIzAwMDAwMCI+ICAKKyAgICAgICAgCTxkaXYgY2xhc3M9Im1haW5ib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgCTxkaXYgY2xhc3M9InN1cGVyYm9keSIgc3R5bGU9IndpZHRoOiAxMDAlOyI+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiPgorICAgICAgICAgICAgICAgIDwhLS0gVE9QIElNQUdFIC0tPgorICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0Ij4KKzxhIGhyZWY9Imh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy8iPjxpbWcgc3JjPSIuL2ltYWdlcy9sb2dvLTIuanBnIiBhbHQ9IkFwYWNoZSBPcGVuTWVldGluZ3MiIGJvcmRlcj0iMCIvPjwvYT4KKzwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODAlIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIiA+CisJPGEgaHJlZj0iZGVtby5odG1sIj5EZW1vPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9ImRvd25sb2Fkcy5odG1sIiB0YXJnZXQ9Il9QQVJFTlQiPkRvd25sb2FkPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imluc3RhbGxhdGlvbi5odG1sIiB0YXJnZXQ9Il9QQVJFTlQiPkluc3RhbGxhdGlvbjwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUyIgdGFyZ2V0PSJfQkxBTksiPldpa2k8L2E+CisJPHNwYW4+Jm5ic3A7PC9zcGFuPgorPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iNCI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGhyIG5vc2hhZGU9Im5vc2hhZGUiIHNpemU9IjEiLz4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDwhLS0gTEVGVCBTSURFIE5BVklHQVRJT04gLS0+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCIgbm93cmFwPSJub3dyYXAiPgorCisgICAgICAgICAgICAgICAgICAgIDwhLS0gc3BlY2lhbCBBQ29uIExvZ28gLSBsZWF2ZSBoZXJlIGZvciBuZXh0IHRpbWUKKyAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL2FwYWNoZWNvbi5jb20vMjAwNS9VUy8iPgorICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHA6Ly9hcGFjaGUub3JnL2ltYWdlcy9hYzIwMDV1c19ibHVlXzEyNXgxMjUuanBnIiBoZWlnaHQ9IjEyNSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjEyNSIgYm9yZGVyPSIwIiBhbHQ9IkFwYWNoZUNvbiBVUyAyMDA1IiAvPgorICAgICAgICAgICAgICAgICAgICA8L2E+ICAtLT4KKworICAgICAgICAgICAgICAgICAgIDwhLS0gcmVndWxhciBtZW51IC0tPgorCisgICAgICAgICAgICAgICAgICAgIAorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDxkaXYgaWQ9ImFjY29yZGlvbiIgc3R5bGU9IndpZHRoOiAxMDAlIj4KKyAgICAKKyAgICAgICAgICAgIAk8aDM+PGEgaHJlZj0iI0dlbmVyYWwiPkdlbmVyYWw8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luZGV4Lmh0bWwiPkhvbWU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2xpY2Vuc2UuaHRtbCI+TGljZW5zZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iPkFTRjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZG93bmxvYWRzLmh0bWwiPkRvd25sb2FkczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiPkNvbW1lcmNpYWwgU3VwcG9ydDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI+SW5zdGFsbGF0aW9uIGFuZCBVcGdyYWRlPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9pbnN0YWxsYXRpb24uaHRtbCI+SW5zdGFsbGF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9VcGdyYWRlLmh0bWwiPlVwZ3JhZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiPlR1dG9yaWFsczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQ29tbWFuZExpbmVBZG1pbi5odG1sIj5Db21tYW5kIExpbmUgQWRtaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0NvbW11bml0eSI+Q29tbXVuaXR5PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9nZXQtaW52b2x2ZWQuaHRtbCI+R2V0IEludm9sdmVkPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi90ZWFtLWxpc3QuaHRtbCI+Q29tbWl0dGVyczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbWFpbC1saXN0cy5odG1sIj5NYWlsaW5nIExpc3RzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iPldpa2k8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0RldmVsb3BtZW50Ij5EZXZlbG9wbWVudDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vc3ZuLmh0bWwiPlNvdXJjZSBDb2RlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyI+QnVncyAvIElzc3VlcyAoSklSQSk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2RlcGVuZGVuY2llcy5odG1sIj5EZXBlbmRlbmNpZXM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiPkJ1aWxkIEluc3RydWN0aW9uczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSlVuaXRUZXN0aW5nLmh0bWwiPkpVbml0IFRlc3Rpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01hbnVhbFRlc3RpbmcuaHRtbCI+TWFudWFsIFRlc3Rpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1JlbGVhc2VHdWlkZS5odG1sIj5SZWxlYXNlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9XZWJzaXRlR3VpZGUuaHRtbCI+V2Vic2l0ZSBHdWlkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjSW50ZWdyYXRpb24iPkludGVncmF0aW9uPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Tb2FwUmVzdEFQSS5odG1sIj5TT0FQL1JFU1QgQVBJPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZXN0QVBJU2FtcGxlLmh0bWwiPlJFU1QgQVBJIFNhbXBsZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTGRhcEFuZEFEUy5odG1sIj5MZGFwIGFuZCBBRFM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiPlZvSVAgYW5kIFNJUDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vRXJyb3JzVGFibGUuaHRtbCI+RXJyb3JzIHRhYmxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNQbHVnaW5zIj5QbHVnaW5zPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Nb29kbGVQbHVnaW4uaHRtbCI+TW9vZGxlIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU2FrYWlQbHVnaW4uaHRtbCI+U2FrYWkgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KaXJhUGx1Z2luLmh0bWwiPkppcmEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Kb29tbGFQbHVnaW4uaHRtbCI+Sm9vbWxhIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vRHJ1cGFsUGx1Z2luLmh0bWwiPkRydXBhbCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0JpdHJpeFBsdWdpbi5odG1sIj5CaXRyaXggUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiPkNvbmZsdWVuY2UgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TdWdhckNSTVBsdWdpbi5odG1sIj5TdWdhckNSTSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1JlZG1pbmVQbHVnaW4uaHRtbCI+UmVkbWluZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0NvbmZpZ3VyYXRpb24iPkNvbmZpZ3VyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkRCIFNhbXBsZSBDb25maWd1cmF0aW9uczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiPkFwYWNoZSBEZXJieTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSUJNREIyQ29uZmlnLmh0bWwiPklCTSBEQjI8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL09yYWNsZUNvbmZpZy5odG1sIj5PcmFjbGU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL015U1FMQ29uZmlnLmh0bWwiPk15U1FMPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIj5Qb3N0Z3JlczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TG9jYWxpemF0aW9uIGFuZCBsYW5ndWFnZXM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIj5JbnRlcm5hdGlvbmFsaXNhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTGFuZ3VhZ2VFZGl0b3IuaHRtbCI+TGFuZ3VhZ2VFZGl0b3I8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1RpbWVab25lSGFuZGxpbmcuaHRtbCI+VGltZVpvbmVIYW5kbGluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRWRpdFRlbXBsYXRlcy5odG1sIj5FZGl0VGVtcGxhdGVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5OQVQgUG9ydCBTZXR0aW5nczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1BvcnRTZXR0aW5ncy5odG1sIj5Qb3J0IHNldHRpbmdzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5QZXJmb3JtYW5jZTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiPkpWTSBwZXJmb3JtYW5jZSB0dW5pbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlVzZXIgSW50ZXJmYWNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIj5UaGVtZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0Rhc2hib2FyZC5odG1sIj5EYXNoYm9hcmQ8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiPldlYmNhbSByZXNvbHV0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiPlJvb20gbGF5b3V0IG9wdGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0hvdEtleXMuaHRtbCI+SG90IEtleXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkN1c3RvbWl6YXRpb248L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9XZWJhcHBOYW1lUGF0aC5odG1sIj5XZWJhcHAgbmFtZS9wYXRoPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9OYXZpZ2F0aW9uLmh0bWwiPk5hdmlnYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCI+Q2FsZW5kYXIgYW5kIHRpbWV6b25lPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiPkN1c3RvbSByb29tIHR5cGU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiPkN1c3RvbSBjdHlwdCBtZWNoYW5pc208L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiPkdlbmVyYWwgQ29uZmlndXJhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+U2VjdXJpdHk8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiPlJlc3RyaWN0ZWQgQWNjZXNzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9SVE1QU0FuZEhUVFBTLmh0bWwiPlJUTVBTIGFuZCBIVFRQUzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q29udmVydGVyczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCI+T3Blbk9mZmljZSBDb252ZXJ0ZXI8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCI+RkZNUEVHIFZlcnNpb24gU3dpdGNoPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5DbHVzdGVyaW5nPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2x1c3RlcmluZy5odG1sIj5DbHVzdGVyaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5NaXNjPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2V0VmVyc2lvbkluZm8uaHRtbCI+R2V0IHZlcnNpb24gaW5mbzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCisgICAgPC9kaXY+CisgICAgIAorICAgIDxici8+CisgICAgCisgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODAlIiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkID48IS0tIGJnY29sb3I9IiNFRUVFRUUiIC0tPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0idmVyZGFuYSxhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IklCTSBEQjIgQ29uZmlndXJhdGlvbiI+PHN0cm9uZz5JQk0gREIyIENvbmZpZ3VyYXRpb248L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgYmdjb2xvcj0iI0VGRUZFRiI+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IkJlZm9yZSB5b3Ugc3RhcnQiPjxzdHJvbmc+QmVmb3JlIHlvdSBzdGFydDwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aT5UZXN0ZWQgd2l0aCBJQk0gREIyIEV4cHJlc3MtQyA5LjcueDwvaT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4NCisJCQkJCTxsaT4NCisJCQkJCQlHZXQgdGhlIElCTSBEYXRhIFNlcnZlciBEcml2ZXIgZm9yIEpEQkMgYW5kIFNRTEogZnJvbSBJQk0gd2Vic2l0ZToNCisJCQkJCQk8YSBocmVmPSJodHRwczovL3d3dzE0LnNvZnR3YXJlLmlibS5jb20vd2ViYXBwL2l3bS93ZWIvcHJlTG9naW4uZG8/c291cmNlPXN3Zy1pZHNkanMiPmh0dHBzOi8vd3d3MTQuc29mdHdhcmUuaWJtLmNvbS93ZWJhcHAvaXdtL3dlYi9wcmVMb2dpbi5kbz9zb3VyY2U9c3dnLWlkc2Rqcw0KKwkJCQkJCTwvYT4NCisJCQkJCTwvbGk+DQorCQkJCQk8bGk+Q29weSBKREJDIGRyaXZlciBkYjJqY2M0LmphciB0bw0KKwkJCQkJCXdlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvbGliLw0KKwkJCQkJPC9saT4NCisJCQkJCTxsaT4NCisJCQkJCQlDcmVhdGUgZGF0YWJhc2UgZm9yIE9wZW5NZWV0aW5ncyB1c2luZyBhIHBhZ2VzaXplIGJpZ2dlciBvciBlcXVhbA0KKwkJCQkJCThLLCBzYW1wbGUgcXVlcnk6DQorCQkJCQkJPGJyIC8+DQorCQkJCQkJPGRpdiBjbGFzcz0ieG1sY29kZSI+DQorCQkJCQkJCUNSRUFURSBEQVRBQkFTRSBvcGVubWVldCBBVVRPTUFUSUMgU1RPUkFHRSBZRVMgT04gJ0M6JyBEQlBBVEggT04gJ0M6Jw0KKwkJCQkJCQlVU0lORyBDT0RFU0VUIFVURi04IFRFUlJJVE9SWSBERSBDT0xMQVRFIFVTSU5HIFN5c3RlbSBQQUdFU0laRSAxNg0KKwkJCQkJCQlLDQorCQkJCQkJPC9kaXY+DQorCQkJCQk8L2xpPg0KKwkJCQkJPGxpPklmIHlvdSBlbmNvdW50ZXIgaXNzdWVzLCB5b3UgY2FuIGRyb3AgdGhlIGRiIGFnYWluIGFuZCBkZWxldGUNCisJCQkJCQl0aGUgZmlsZSAkcmVkNS93ZWJhcHBzL29wZW5tZWV0aW5ncy9jb25mL2luc3RhbGwueG1sIGFuZCB0aGVuIHJ1bg0KKwkJCQkJCXRoZSB3ZWIgYmFzZWQgaW5zdGFsbGVyIGFnYWluIDwvbGk+DQorCQkJCTwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCBiZ2NvbG9yPSIjRUZFRkVGIj4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9ImFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iU3RlcHMgdG9kbyI+PHN0cm9uZz5TdGVwcyB0b2RvPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4NCisJCQkJCTxsaT4NCisJCQkJCQlSZW5hbWU6DQorCQkJCQkJPGJyIC8+DQorCQkJCQkJJHJlZDUvd2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9jbGFzc2VzL01FVEEtSU5GL2RiMl9wZXJzaXN0ZW5jZS54bWwNCisJCQkJCQk8YnIgLz4NCisJCQkJCQl0bw0KKwkJCQkJCTxiciAvPg0KKwkJCQkJCSRyZWQ1L3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvY2xhc3Nlcy9NRVRBLUlORi9wZXJzaXN0ZW5jZS54bWwNCisJCQkJCTwvbGk+DQorCQkJCQk8bGk+DQorCQkJCQkJUHJlcGFyZSBEYXRhYmFzZSBTZXR0aW5ncyAtIGdvIHRvDQorCQkJCQkJb3Blbm1lZXRpbmdzX3ZlcnNpb25fbm9feHgvd2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9jbGFzc2VzL01FVEEtSU5GL3BlcnNpc3RlbmNlLnhtbA0KKwkJCQkJCTxiciAvPg0KKwkJCQkJCUFsdGVyIGNvbmZpZyB2YWx1ZXMgaW4gcGVyc2lzdGVuY2UueG1sIGNvbm5lY3Rpb25VUkwsIHVzZXJuYW1lIGFuZA0KKwkJCQkJCXBhc3N3b3JkIHdpdGggeW91ciB2YWx1ZXMNCisJCQkJCTwvbGk+DQorCQkJCQk8bGk+DQorCQkJCQkJUnVuIHJlZDUtc2VydmljZSBhbmQgZ290byB0aGUgd2ViLWJhc2VkIGluc3RhbGxlcjoNCisJCQkJCQlodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL2luc3RhbGwNCisJCQkJCTwvbGk+DQorCQkJCTwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCBiZ2NvbG9yPSIjRUZFRkVGIj4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9ImFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iREIyIFNhbXBsZSBDb25maWd1cmF0aW9uIj48c3Ryb25nPkRCMiBTYW1wbGUgQ29uZmlndXJhdGlvbjwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJCVRoZXJlIGlzIGEgc2FtcGxlIGNvbmZpZ3VyYXRpb24gZm9yIElCTSBEQjIgdGhhdCBzaGlwcyB3aXRoDQorCQkJCQlldmVyeQ0KKwkJCQkJcmVsZWFzZSBpbjoNCisJCQkJCTxiciAvPg0KKwkJCQkJL3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvY2xhc3Nlcy9NRVRBLUlORi9kYjJfcGVyc2lzdGVuY2UueG1sDQorCQkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDwhLS0gRk9PVEVSIC0tPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgYWxpZ249ImNlbnRlciI+PGZvbnQgY29sb3I9IiMxMjM0NjUiIHNpemU9Ii0xIj48ZW0+CisgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAmIzE2OTsgMjAwMy0yMDEzLCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyAgICAgICAgICAgICAgICAgICAgPC9lbT48L2ZvbnQ+PC9kaXY+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvYm9keT4KKyAgICA8L2h0bWw+Cis8IS0tIGVuZCB0aGUgcHJvY2Vzc2luZyAtLT4KKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKwpkaWZmIC0tZ2l0IGEvZG9jcy9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIGIvZG9jcy9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyYzA2NWEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwKQEAgLTAsMCArMSw3NDcgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgorCis8IS0tCitDb3B5cmlnaHQgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKworPCEtLSBDb250ZW50IFN0eWxlc2hlZXQgZm9yIFNpdGUgLS0+CisKKyAgICAgICAgCis8IS0tIHN0YXJ0IHRoZSBwcm9jZXNzaW5nIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8IS0tIEdFTkVSQVRFRCBGSUxFLCBETyBOT1QgRURJVCwgRURJVCBUSEUgWE1MIEZJTEUgSU4geGRvY3MgSU5TVEVBRCEgLS0+CisgICAgPCEtLSBNYWluIFBhZ2UgU2VjdGlvbiAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGh0bWw+CisgICAgICAgIDxoZWFkPgorICAgICAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiLz4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iCisJCQlPcGVuTWVldGluZ3MgVGVhbQorCQkiPgorICAgICAgICAgICAgPG1ldGEgbmFtZT0iZW1haWwiIGNvbnRlbnQ9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+CisgICAgICAgICAgICAKKyAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgPHRpdGxlPkFwYWNoZSBPcGVuTWVldGluZ3MgLSBVcGdyYWRlPC90aXRsZT4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9vcGVubWVldGluZ3MuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9qcXVlcnktdWkuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2luLXNsaWRlci1zdHlsZXMuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2xvcmJveC5jc3MiIC8+CisgICAgICAgICAgICAKKwkJCTwhLS0gQWRkIGpRdWVyeSBsaWJyYXJ5IC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LTEuNy4xLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPCEtLSBBZGQgY29pbnNsaWRlciBwbHVnaW5zIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvY29pbi1zbGlkZXIubWluLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPCEtLSBBZGQgY29sb3Jib3ggcGx1Z2luIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LmNvbG9yYm94LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmNvcmUuanMiPjwvc2NyaXB0PgorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS53aWRnZXQuanMiPjwvc2NyaXB0PgorCQkKKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkuYWNjb3JkaW9uLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdD4KKwkJCSQoZnVuY3Rpb24oKSB7CisJCQkJJCggIiNhY2NvcmRpb24iICkuYWNjb3JkaW9uKHsKKwkJCQkJYXV0b0hlaWdodDogZmFsc2UsCisJCQkJCW5hdmlnYXRpb246IHRydWUsCisJCQkJCW5hdmlnYXRpb25GaWx0ZXI6IGZ1bmN0aW9uICgpIHsKKwkJCQkJCXZhciBzaWRlYmFySHJlZkFycmF5ID0gdGhpcy5ocmVmLnNwbGl0KCIvIik7CisgICAgCQkJCQl2YXIgc2lkZUJhckxhc3RTdHJpbmcgPSBzaWRlYmFySHJlZkFycmF5W3NpZGViYXJIcmVmQXJyYXkubGVuZ3RoIC0gMV0udG9Mb3dlckNhc2UoKTsKKwkJCQkJCQorCQkJCQkJaWYgKHNpZGVCYXJMYXN0U3RyaW5nLmluZGV4T2YoIiMiKSA9PSAtMSkgeworCQkJCQkJCXJldHVybiBmYWxzZTsKKwkJCQkJCX0KKwkJCQkJCQorCQkJCQkJCQkJCQkJLyogZG9jdW1lbnQubG9jYXRpb24uaHJlZiAqLworCQkJCQkJdmFyIGN1cnJlbnRTZWN0aW9uID0gIiI7CisJCQkJCQkKKwkJCQkJCXZhciBjdXJyZW50TG9jYXRpb24gPSAiIjsKKwkJCQkJCXZhciBjdXJyZW50TGluayA9ICIiOworCQkJCQkJaWYgKGZhbHNlKSB7CisJCQkJCQkKKwkJCQkJCX0KKyAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5kZXguaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5kZXguaHRtbCIuc3Vic3RyKDEsICIvaW5kZXguaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9saWNlbnNlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2xpY2Vuc2UuaHRtbCIuc3Vic3RyKDEsICIvbGljZW5zZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5zdWJzdHIoMSwgImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZG93bmxvYWRzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2Rvd25sb2Fkcy5odG1sIi5zdWJzdHIoMSwgIi9kb3dubG9hZHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiLnN1YnN0cigxLCAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9pbnN0YWxsYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5zdGFsbGF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL2luc3RhbGxhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1VwZ3JhZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvVXBncmFkZS5odG1sIi5zdWJzdHIoMSwgIi9VcGdyYWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIuc3Vic3RyKDEsICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db21tYW5kTGluZUFkbWluLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIuc3Vic3RyKDEsICIvQ29tbWFuZExpbmVBZG1pbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9nZXQtaW52b2x2ZWQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9nZXQtaW52b2x2ZWQuaHRtbCIuc3Vic3RyKDEsICIvZ2V0LWludm9sdmVkLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGVhbS1saXN0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdGVhbS1saXN0Lmh0bWwiLnN1YnN0cigxLCAiL3RlYW0tbGlzdC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL21haWwtbGlzdHMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9tYWlsLWxpc3RzLmh0bWwiLnN1YnN0cigxLCAiL21haWwtbGlzdHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLnN1YnN0cigxLCAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3N2bi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvc3ZuLmh0bWwiLnN1YnN0cigxLCAiL3N2bi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIuc3Vic3RyKDEsICJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2RlcGVuZGVuY2llcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZGVwZW5kZW5jaWVzLmh0bWwiLnN1YnN0cigxLCAiL2RlcGVuZGVuY2llcy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pVbml0VGVzdGluZy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSlVuaXRUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL0pVbml0VGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01hbnVhbFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01hbnVhbFRlc3RpbmcuaHRtbCIuc3Vic3RyKDEsICIvTWFudWFsVGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlbGVhc2VHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVsZWFzZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1JlbGVhc2VHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYnNpdGVHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvV2Vic2l0ZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1dlYnNpdGVHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Tb2FwUmVzdEFQSS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU29hcFJlc3RBUEkuaHRtbCIuc3Vic3RyKDEsICIvU29hcFJlc3RBUEkuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZXN0QVBJU2FtcGxlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZXN0QVBJU2FtcGxlLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RBUElTYW1wbGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MZGFwQW5kQURTLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9MZGFwQW5kQURTLmh0bWwiLnN1YnN0cigxLCAiL0xkYXBBbmRBRFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FcnJvcnNUYWJsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRXJyb3JzVGFibGUuaHRtbCIuc3Vic3RyKDEsICIvRXJyb3JzVGFibGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTW9vZGxlUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01vb2RsZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Nb29kbGVQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TYWthaVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TYWthaVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TYWthaVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ppcmFQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSmlyYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9KaXJhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSm9vbWxhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pvb21sYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Kb29tbGFQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EcnVwYWxQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRHJ1cGFsUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0RydXBhbFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0JpdHJpeFBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CaXRyaXhQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvQml0cml4UGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TdWdhckNSTVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TdWdhckNSTVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TdWdhckNSTVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlZG1pbmVQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVkbWluZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9SZWRtaW5lUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSUJNREIyQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSUJNREIyQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL0lCTURCMkNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3JhY2xlQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3JhY2xlQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL09yYWNsZUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTXlTUUxDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9NeVNRTENvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9NeVNRTENvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUG9zdGdyZXNDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MYW5ndWFnZUVkaXRvci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLnN1YnN0cigxLCAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5zdWJzdHIoMSwgIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FZGl0VGVtcGxhdGVzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRWRpdFRlbXBsYXRlcy5odG1sIi5zdWJzdHIoMSwgIi9FZGl0VGVtcGxhdGVzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1BvcnRTZXR0aW5ncy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1BvcnRTZXR0aW5ncy5odG1sIi5zdWJzdHIoMSwgIi9Qb3J0U2V0dGluZ3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5zdWJzdHIoMSwgIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5zdWJzdHIoMSwgIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EYXNoYm9hcmQuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9EYXNoYm9hcmQuaHRtbCIuc3Vic3RyKDEsICIvRGFzaGJvYXJkLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLnN1YnN0cigxLCAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Ib3RLZXlzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSG90S2V5cy5odG1sIi5zdWJzdHIoMSwgIi9Ib3RLZXlzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYmFwcE5hbWVQYXRoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvV2ViYXBwTmFtZVBhdGguaHRtbCIuc3Vic3RyKDEsICIvV2ViYXBwTmFtZVBhdGguaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL05hdmlnYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9OYXZpZ2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL05hdmlnYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLnN1YnN0cigxLCAiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIuc3Vic3RyKDEsICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIuc3Vic3RyKDEsICIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUlRNUFNBbmRIVFRQUy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1JUTVBTQW5kSFRUUFMuaHRtbCIuc3Vic3RyKDEsICIvUlRNUFNBbmRIVFRQUy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5zdWJzdHIoMSwgIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5zdWJzdHIoMSwgIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NsdXN0ZXJpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DbHVzdGVyaW5nLmh0bWwiLnN1YnN0cigxLCAiL0NsdXN0ZXJpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvR2V0VmVyc2lvbkluZm8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9HZXRWZXJzaW9uSW5mby5odG1sIi5zdWJzdHIoMSwgIi9HZXRWZXJzaW9uSW5mby5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkgICAgCQkJCQkKKyAgICAJCQkJCWN1cnJlbnRMaW5rID0gY3VycmVudExpbmsudG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCWN1cnJlbnRMb2NhdGlvbiA9IGN1cnJlbnRMb2NhdGlvbi50b0xvd2VyQ2FzZSgpOworICAgIAkJCQkJCisJCQkJCQlyZXR1cm4gc2lkZUJhckxhc3RTdHJpbmcgPT0gY3VycmVudExpbmsrIiMiK2N1cnJlbnRMb2NhdGlvbjsKKwkJCQkJfQorCQkJCX0pOworCQkJfSk7CisJCQk8L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCQkJCSQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgeworCQkJCQkkKCcuZmFuY3lib3gtYnV0dG9ucycpLmNvbG9yYm94KHtyZWw6J2ZhbmN5Ym94LWJ1dHRvbnMnLHdpZHRoOiI3NSUiLCBoZWlnaHQ6Ijc1JSJ9KTsKKwkJCQkJJCgnI2FjY29yZGlvbiBhJykuZWFjaChmdW5jdGlvbigpIHsKKwkJCQkgICAgICB2YXIgYSA9ICQodGhpcyk7CisJCQkJICAgICAgdmFyIGhyZWYgPSBhLmF0dHIoImhyZWYiKTsKKwkJCQkgICAgICBpZiAoaHJlZi5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkgICAgICAJICB2YXIgY29tcGFyZUl0ID0gaHJlZi5zdWJzdHIoMiwgaHJlZi5sZW5ndGgpOworCQkJCQkgICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKGNvbXBhcmVJdCkhPSAtMSkgeworCQkJCQkgICAgICAgYS5hZGRDbGFzcygnYWN0aXZlJyk7CisJCQkJCSAgICAgIH0KKwkJCQkgICAgICB9CisJCQkJICAgIH0pOworCQkJCQkkKCcjY29pbi1zbGlkZXInKS5jb2luc2xpZGVyKHsgd2lkdGg6IDY0MCxoZWlnaHQ6IDQwMCwgZGVsYXk6IDQwMDAgIH0pOwkJCQkJCisJCQkJfSk7CisJCQk8L3NjcmlwdD4JCisJCQkJCQkKKwkJCTxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisJCQkJLmZhbmN5Ym94LWN1c3RvbSAuZmFuY3lib3gtb3V0ZXIgeworCQkJCQlib3gtc2hhZG93OiAwIDAgNTBweCAjMjIyOworCQkJCX0KKwkJCTwvc3R5bGU+CisgICAgICAgIDwvaGVhZD4KKworICAgICAgICA8Ym9keSBiZ2NvbG9yPSIjZmZmZmZmIiB0ZXh0PSIjMDAwMDAwIiBsaW5rPSIjMTIzNDY1IiB2bGluaz0iIzEyMzQ2NSIgYWxpbms9IiMwMDAwMDAiPiAgCisgICAgICAgIAk8ZGl2IGNsYXNzPSJtYWluYm9keSIgc3R5bGU9IndpZHRoOiAxMDAlOyI+CisgICAgICAgIAk8ZGl2IGNsYXNzPSJzdXBlcmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIj4KKyAgICAgICAgICAgICAgICA8IS0tIFRPUCBJTUFHRSAtLT4KKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCI+Cis8YSBocmVmPSJodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvIj48aW1nIHNyYz0iLi9pbWFnZXMvbG9nby0yLmpwZyIgYWx0PSJBcGFjaGUgT3Blbk1lZXRpbmdzIiBib3JkZXI9IjAiLz48L2E+Cis8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCIgPgorCTxhIGhyZWY9ImRlbW8uaHRtbCI+RGVtbzwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJkb3dubG9hZHMuaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5Eb3dubG9hZDwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJpbnN0YWxsYXRpb24uaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5JbnN0YWxsYXRpb248L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MiIHRhcmdldD0iX0JMQU5LIj5XaWtpPC9hPgorCTxzcGFuPiZuYnNwOzwvc3Bhbj4KKzwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjQiPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8IS0tIExFRlQgU0lERSBOQVZJR0FUSU9OIC0tPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiIG5vd3JhcD0ibm93cmFwIj4KKworICAgICAgICAgICAgICAgICAgICA8IS0tIHNwZWNpYWwgQUNvbiBMb2dvIC0gbGVhdmUgaGVyZSBmb3IgbmV4dCB0aW1lCisgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9hcGFjaGVjb24uY29tLzIwMDUvVVMvIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vYXBhY2hlLm9yZy9pbWFnZXMvYWMyMDA1dXNfYmx1ZV8xMjV4MTI1LmpwZyIgaGVpZ2h0PSIxMjUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPSIxMjUiIGJvcmRlcj0iMCIgYWx0PSJBcGFjaGVDb24gVVMgMjAwNSIgLz4KKyAgICAgICAgICAgICAgICAgICAgPC9hPiAgLS0+CisKKyAgICAgICAgICAgICAgICAgICA8IS0tIHJlZ3VsYXIgbWVudSAtLT4KKworICAgICAgICAgICAgICAgICAgICAKKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8ZGl2IGlkPSJhY2NvcmRpb24iIHN0eWxlPSJ3aWR0aDogMTAwJSI+CisgICAgCisgICAgICAgICAgICAJPGgzPjxhIGhyZWY9IiNHZW5lcmFsIj5HZW5lcmFsPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9pbmRleC5odG1sIj5Ib21lPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9saWNlbnNlLmh0bWwiPkxpY2Vuc2U8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5BU0Y8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2Rvd25sb2Fkcy5odG1sIj5Eb3dubG9hZHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIj5Db21tZXJjaWFsIFN1cHBvcnQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0luc3RhbGxhdGlvbmFuZFVwZ3JhZGUiPkluc3RhbGxhdGlvbiBhbmQgVXBncmFkZTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5zdGFsbGF0aW9uLmh0bWwiPkluc3RhbGxhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vVXBncmFkZS5odG1sIj5VcGdyYWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLmh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIj5UdXRvcmlhbHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCI+Q29tbWFuZCBMaW5lIEFkbWluPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb21tdW5pdHkiPkNvbW11bml0eTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZ2V0LWludm9sdmVkLmh0bWwiPkdldCBJbnZvbHZlZDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdGVhbS1saXN0Lmh0bWwiPkNvbW1pdHRlcnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL21haWwtbGlzdHMuaHRtbCI+TWFpbGluZyBMaXN0czwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIj5XaWtpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNEZXZlbG9wbWVudCI+RGV2ZWxvcG1lbnQ8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3N2bi5odG1sIj5Tb3VyY2UgQ29kZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiPkJ1Z3MgLyBJc3N1ZXMgKEpJUkEpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kZXBlbmRlbmNpZXMuaHRtbCI+RGVwZW5kZW5jaWVzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CdWlsZEluc3RydWN0aW9ucy5odG1sIj5CdWlsZCBJbnN0cnVjdGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pVbml0VGVzdGluZy5odG1sIj5KVW5pdCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9NYW51YWxUZXN0aW5nLmh0bWwiPk1hbnVhbCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWxlYXNlR3VpZGUuaHRtbCI+UmVsZWFzZSBHdWlkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vV2Vic2l0ZUd1aWRlLmh0bWwiPldlYnNpdGUgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0ludGVncmF0aW9uIj5JbnRlZ3JhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU29hcFJlc3RBUEkuaHRtbCI+U09BUC9SRVNUIEFQSTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVzdEFQSVNhbXBsZS5odG1sIj5SRVNUIEFQSSBTYW1wbGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0xkYXBBbmRBRFMuaHRtbCI+TGRhcCBhbmQgQURTPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIj5Wb0lQIGFuZCBTSVA8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0Vycm9yc1RhYmxlLmh0bWwiPkVycm9ycyB0YWJsZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjUGx1Z2lucyI+UGx1Z2luczwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTW9vZGxlUGx1Z2luLmh0bWwiPk1vb2RsZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Nha2FpUGx1Z2luLmh0bWwiPlNha2FpIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSmlyYVBsdWdpbi5odG1sIj5KaXJhIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSm9vbWxhUGx1Z2luLmh0bWwiPkpvb21sYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0RydXBhbFBsdWdpbi5odG1sIj5EcnVwYWwgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CaXRyaXhQbHVnaW4uaHRtbCI+Qml0cml4IFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQ29uZmx1ZW5jZVBsdWdpbi5odG1sIj5Db25mbHVlbmNlIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU3VnYXJDUk1QbHVnaW4uaHRtbCI+U3VnYXJDUk0gUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWRtaW5lUGx1Z2luLmh0bWwiPlJlZG1pbmUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb25maWd1cmF0aW9uIj5Db25maWd1cmF0aW9uPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5EQiBTYW1wbGUgQ29uZmlndXJhdGlvbnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIj5BcGFjaGUgRGVyYnk8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0lCTURCMkNvbmZpZy5odG1sIj5JQk0gREIyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcmFjbGVDb25maWcuaHRtbCI+T3JhY2xlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9NeVNRTENvbmZpZy5odG1sIj5NeVNRTDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9zdGdyZXNDb25maWcuaHRtbCI+UG9zdGdyZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkxvY2FsaXphdGlvbiBhbmQgbGFuZ3VhZ2VzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCI+SW50ZXJuYXRpb25hbGlzYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0xhbmd1YWdlRWRpdG9yLmh0bWwiPkxhbmd1YWdlRWRpdG9yPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiPlRpbWVab25lSGFuZGxpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0VkaXRUZW1wbGF0ZXMuaHRtbCI+RWRpdFRlbXBsYXRlczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TkFUIFBvcnQgU2V0dGluZ3M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Qb3J0U2V0dGluZ3MuaHRtbCI+UG9ydCBzZXR0aW5nczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+UGVyZm9ybWFuY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIj5KVk0gcGVyZm9ybWFuY2UgdHVuaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Vc2VyIEludGVyZmFjZTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCI+VGhlbWVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9EYXNoYm9hcmQuaHRtbCI+RGFzaGJvYXJkPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIj5XZWJjYW0gcmVzb2x1dGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIj5Sb29tIGxheW91dCBvcHRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Ib3RLZXlzLmh0bWwiPkhvdCBLZXlzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5DdXN0b21pemF0aW9uPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViYXBwTmFtZVBhdGguaHRtbCI+V2ViYXBwIG5hbWUvcGF0aDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTmF2aWdhdGlvbi5odG1sIj5OYXZpZ2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiPkNhbGVuZGFyIGFuZCB0aW1lem9uZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIj5DdXN0b20gcm9vbSB0eXBlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIj5DdXN0b20gY3R5cHQgbWVjaGFuaXNtPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIj5HZW5lcmFsIENvbmZpZ3VyYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlNlY3VyaXR5PC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUmVzdHJpY3RlZEFjY2Vzcy5odG1sIj5SZXN0cmljdGVkIEFjY2VzczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUlRNUFNBbmRIVFRQUy5odG1sIj5SVE1QUyBhbmQgSFRUUFM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNvbnZlcnRlcnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiPk9wZW5PZmZpY2UgQ29udmVydGVyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiPkZGTVBFRyBWZXJzaW9uIFN3aXRjaDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q2x1c3RlcmluZzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NsdXN0ZXJpbmcuaHRtbCI+Q2x1c3RlcmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TWlzYzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0dldFZlcnNpb25JbmZvLmh0bWwiPkdldCB2ZXJzaW9uIGluZm88L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAorICAgIDwvZGl2PgorICAgICAKKyAgICA8YnIvPgorICAgIAorICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJXaGVyZSB0byBmaW5kIGxhbmd1YWdlIGZpbGVzIj48c3Ryb25nPldoZXJlIHRvIGZpbmQgbGFuZ3VhZ2UgZmlsZXM8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPllvdSBjYW4gZmluZCBhbGwgY3VycmVudCBsYW5ndWFnZSBmaWxlcyBoZXJlOiA8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJPGEgaHJlZj0iaHR0cHM6Ly9zdm4uYXBhY2hlLm9yZy9yZXBvcy9hc2Yvb3Blbm1lZXRpbmdzL3RydW5rL3NpbmdsZXdlYmFwcC9XZWJDb250ZW50L2xhbmd1YWdlcy8iIHJlbD0ibm9mb2xsb3ciPmh0dHBzOi8vc3ZuLmFwYWNoZS5vcmcvcmVwb3MvYXNmL29wZW5tZWV0aW5ncy90cnVuay9zaW5nbGV3ZWJhcHAvV2ViQ29udGVudC9sYW5ndWFnZXMvDQorCQkJCTwvYT4NCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5KdXN0IHRha2Ugb25lIGZpbGUgYW5kIHRyYW5zbGF0ZSBpdCB0byB5b3VyIGxhbmd1YWdlLiA8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJJbXBvcnQgYW5kIGV4cG9ydCBvZiBMYW5ndWFnZSBGaWxlcyI+PHN0cm9uZz5JbXBvcnQgYW5kIGV4cG9ydCBvZiBMYW5ndWFnZSBGaWxlczwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgICA8aHIgc3R5bGU9IndpZHRoOjEwMCU7IGNvbG9yOiM5OTk5OTk7IGJhY2tncm91bmQtY29sb3I6Izk5OTk5OTsgaGVpZ2h0OjFweDsgYm9yZGVyOjBweDsiLz4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPg0KKwkJCQk8bGk+DQorCQkJCQlVc2UgdGhlDQorCQkJCQk8YSBocmVmPSJMYW5ndWFnZUVkaXRvci5odG1sIj5MYW5ndWFnZUVkaXRvcjwvYT4NCisJCQkJCWZvciB0cmFuc2xhdGlvbg0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+DQorCQkJCQl3aXRoIHRoZQ0KKwkJCQkJPGEgaHJlZj0iTGFuZ3VhZ2VFZGl0b3IuaHRtbCI+TGFuZ3VhZ2VFZGl0b3I8L2E+DQorCQkJCQl5b3UgY2FuIGltcG9ydCBhbmQgZXhwb3J0IExhbmd1YWdlIEZpbGVzDQorCQkJCTwvbGk+DQorCQkJPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkID48IS0tIGJnY29sb3I9IiNFRUVFRUUiIC0tPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0idmVyZGFuYSxhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IkhvdyB0byBhZGQgaXQgYXMgaW5zdGFsbGF0aW9uIG9wdGlvbiI+PHN0cm9uZz5Ib3cgdG8gYWRkIGl0IGFzIGluc3RhbGxhdGlvbiBvcHRpb248L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQlPbmNlIHlvdSBoYXZlIGZpbmlzaGVkIHRoZSB0cmFuc2xhdGlvbiB5b3UgY2FuIGFkZCBhIG5ldyBub2RlIHRvOg0KKwkJCQk8YSBocmVmPSJodHRwczovL3N2bi5hcGFjaGUub3JnL3JlcG9zL2FzZi9vcGVubWVldGluZ3MvdHJ1bmsvc2luZ2xld2ViYXBwL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL2xhbmd1YWdlcy54bWwiIHJlbD0ibm9mb2xsb3ciPmh0dHBzOi8vc3ZuLmFwYWNoZS5vcmcvcmVwb3MvYXNmL29wZW5tZWV0aW5ncy90cnVuay9zaW5nbGV3ZWJhcHAvV2ViQ29udGVudC9sYW5ndWFnZXMvbGFuZ3VhZ2VzLnhtbA0KKwkJCQk8L2E+DQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+dGhlIG5hbWUgb2YgdGhlIGxhbmd1YWdlIHNob3VsZCBtYXRjaCB0aGUgbmFtZSBvZiB0aGUgZmlsZS4gT25jZQ0KKwkJCQl0aGlzIGlzIGRvbmUgdGhlIExhbmd1YWdlIGZpbGUgd2lsbCBhdXRvbWF0aWNhbGx5IGJlIGltcG9ydGVkIGR1cmluZw0KKwkJCQlpbnN0YWxsYXRpb24gYW5kIHdpbGwgYmUgYW4gb3B0aW9uIGF0IGxvZ2luLg0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPCEtLSBGT09URVIgLS0+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGhyIG5vc2hhZGU9Im5vc2hhZGUiIHNpemU9IjEiLz4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBhbGlnbj0iY2VudGVyIj48Zm9udCBjb2xvcj0iIzEyMzQ2NSIgc2l6ZT0iLTEiPjxlbT4KKyAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0ICYjMTY5OyAyMDAzLTIwMTMsIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorICAgICAgICAgICAgICAgICAgICA8L2VtPjwvZm9udD48L2Rpdj4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9ib2R5PgorICAgIDwvaHRtbD4KKzwhLS0gZW5kIHRoZSBwcm9jZXNzaW5nIC0tPgorCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCmRpZmYgLS1naXQgYS9kb2NzL0pVbml0VGVzdGluZy5odG1sIGIvZG9jcy9KVW5pdFRlc3RpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NmYyMWNiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9KVW5pdFRlc3RpbmcuaHRtbApAQCAtMCwwICsxLDc4OCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CisKKzwhLS0KK0NvcHlyaWdodCAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK3lvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCitodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworCis8IS0tIENvbnRlbnQgU3R5bGVzaGVldCBmb3IgU2l0ZSAtLT4KKworICAgICAgICAKKzwhLS0gc3RhcnQgdGhlIHByb2Nlc3NpbmcgLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDwhLS0gR0VORVJBVEVEIEZJTEUsIERPIE5PVCBFRElULCBFRElUIFRIRSBYTUwgRklMRSBJTiB4ZG9jcyBJTlNURUFEISAtLT4KKyAgICA8IS0tIE1haW4gUGFnZSBTZWN0aW9uIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8aHRtbD4KKyAgICAgICAgPGhlYWQ+CisgICAgICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIvPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSIKKwkJCU9wZW5NZWV0aW5ncyBUZWFtCisJCSI+CisgICAgICAgICAgICA8bWV0YSBuYW1lPSJlbWFpbCIgY29udGVudD0ic2ViYXdhZ25lckBhcGFjaGUub3JnIj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICA8dGl0bGU+QXBhY2hlIE9wZW5NZWV0aW5ncyAtIEpVbml0IFRlc3Rpbmc8L3RpdGxlPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL29wZW5tZWV0aW5ncy5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2pxdWVyeS11aS5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2NvaW4tc2xpZGVyLXN0eWxlcy5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2NvbG9yYm94LmNzcyIgLz4KKyAgICAgICAgICAgIAorCQkJPCEtLSBBZGQgalF1ZXJ5IGxpYnJhcnkgLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9qcXVlcnktMS43LjEubWluLmpzIj48L3NjcmlwdD4KKwkJCisJCQk8IS0tIEFkZCBjb2luc2xpZGVyIHBsdWdpbnMgLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9jb2luLXNsaWRlci5taW4uanMiPjwvc2NyaXB0PgorCQkJCisJCQk8IS0tIEFkZCBjb2xvcmJveCBwbHVnaW4gLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9qcXVlcnkuY29sb3Jib3guanMiPjwvc2NyaXB0PgorCQkKKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkuY29yZS5qcyI+PC9zY3JpcHQ+CisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLndpZGdldC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5hY2NvcmRpb24uanMiPjwvc2NyaXB0PgorCQkJCisJCQk8c2NyaXB0PgorCQkJJChmdW5jdGlvbigpIHsKKwkJCQkkKCAiI2FjY29yZGlvbiIgKS5hY2NvcmRpb24oeworCQkJCQlhdXRvSGVpZ2h0OiBmYWxzZSwKKwkJCQkJbmF2aWdhdGlvbjogdHJ1ZSwKKwkJCQkJbmF2aWdhdGlvbkZpbHRlcjogZnVuY3Rpb24gKCkgeworCQkJCQkJdmFyIHNpZGViYXJIcmVmQXJyYXkgPSB0aGlzLmhyZWYuc3BsaXQoIi8iKTsKKyAgICAJCQkJCXZhciBzaWRlQmFyTGFzdFN0cmluZyA9IHNpZGViYXJIcmVmQXJyYXlbc2lkZWJhckhyZWZBcnJheS5sZW5ndGggLSAxXS50b0xvd2VyQ2FzZSgpOworCQkJCQkJCisJCQkJCQlpZiAoc2lkZUJhckxhc3RTdHJpbmcuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJCQkJcmV0dXJuIGZhbHNlOworCQkJCQkJfQorCQkJCQkJCisJCQkJCQkJCQkJCQkvKiBkb2N1bWVudC5sb2NhdGlvbi5ocmVmICovCisJCQkJCQl2YXIgY3VycmVudFNlY3Rpb24gPSAiIjsKKwkJCQkJCQorCQkJCQkJdmFyIGN1cnJlbnRMb2NhdGlvbiA9ICIiOworCQkJCQkJdmFyIGN1cnJlbnRMaW5rID0gIiI7CisJCQkJCQlpZiAoZmFsc2UpIHsKKwkJCQkJCQorCQkJCQkJfQorICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9pbmRleC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9pbmRleC5odG1sIi5zdWJzdHIoMSwgIi9pbmRleC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2xpY2Vuc2UuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbGljZW5zZS5odG1sIi5zdWJzdHIoMSwgIi9saWNlbnNlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iLnN1YnN0cigxLCAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kb3dubG9hZHMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZG93bmxvYWRzLmh0bWwiLnN1YnN0cigxLCAiL2Rvd25sb2Fkcy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIuc3Vic3RyKDEsICIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luc3RhbGxhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9pbnN0YWxsYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvaW5zdGFsbGF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVXBncmFkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9VcGdyYWRlLmh0bWwiLnN1YnN0cigxLCAiL1VwZ3JhZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIi5zdWJzdHIoMSwgImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29tbWFuZExpbmVBZG1pbi5odG1sIi5zdWJzdHIoMSwgIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2dldC1pbnZvbHZlZC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2dldC1pbnZvbHZlZC5odG1sIi5zdWJzdHIoMSwgIi9nZXQtaW52b2x2ZWQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi90ZWFtLWxpc3QuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi90ZWFtLWxpc3QuaHRtbCIuc3Vic3RyKDEsICIvdGVhbS1saXN0Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbWFpbC1saXN0cy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL21haWwtbGlzdHMuaHRtbCIuc3Vic3RyKDEsICIvbWFpbC1saXN0cy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIuc3Vic3RyKDEsICJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvc3ZuLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9zdm4uaHRtbCIuc3Vic3RyKDEsICIvc3ZuLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIi5zdWJzdHIoMSwgImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZGVwZW5kZW5jaWVzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kZXBlbmRlbmNpZXMuaHRtbCIuc3Vic3RyKDEsICIvZGVwZW5kZW5jaWVzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiLnN1YnN0cigxLCAiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSlVuaXRUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9KVW5pdFRlc3RpbmcuaHRtbCIuc3Vic3RyKDEsICIvSlVuaXRUZXN0aW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTWFudWFsVGVzdGluZy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTWFudWFsVGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9NYW51YWxUZXN0aW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVsZWFzZUd1aWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZWxlYXNlR3VpZGUuaHRtbCIuc3Vic3RyKDEsICIvUmVsZWFzZUd1aWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2Vic2l0ZUd1aWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9XZWJzaXRlR3VpZGUuaHRtbCIuc3Vic3RyKDEsICIvV2Vic2l0ZUd1aWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1NvYXBSZXN0QVBJLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Tb2FwUmVzdEFQSS5odG1sIi5zdWJzdHIoMSwgIi9Tb2FwUmVzdEFQSS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RBUElTYW1wbGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1Jlc3RBUElTYW1wbGUuaHRtbCIuc3Vic3RyKDEsICIvUmVzdEFQSVNhbXBsZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0xkYXBBbmRBRFMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0xkYXBBbmRBRFMuaHRtbCIuc3Vic3RyKDEsICIvTGRhcEFuZEFEUy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0Vycm9yc1RhYmxlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9FcnJvcnNUYWJsZS5odG1sIi5zdWJzdHIoMSwgIi9FcnJvcnNUYWJsZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Nb29kbGVQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTW9vZGxlUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL01vb2RsZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Nha2FpUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1Nha2FpUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1Nha2FpUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSmlyYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9KaXJhUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0ppcmFQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Kb29tbGFQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSm9vbWxhUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0pvb21sYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0RydXBhbFBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9EcnVwYWxQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvRHJ1cGFsUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQml0cml4UGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0JpdHJpeFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9CaXRyaXhQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVkbWluZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZWRtaW5lUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1JlZG1pbmVQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9JQk1EQjJDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JQk1EQjJDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvSUJNREIyQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9PcmFjbGVDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9PcmFjbGVDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvT3JhY2xlQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NeVNRTENvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL015U1FMQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL015U1FMQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1Bvc3RncmVzQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL1Bvc3RncmVzQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0xhbmd1YWdlRWRpdG9yLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIuc3Vic3RyKDEsICIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiLnN1YnN0cigxLCAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0VkaXRUZW1wbGF0ZXMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9FZGl0VGVtcGxhdGVzLmh0bWwiLnN1YnN0cigxLCAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUG9ydFNldHRpbmdzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9ydFNldHRpbmdzLmh0bWwiLnN1YnN0cigxLCAiL1BvcnRTZXR0aW5ncy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiLnN1YnN0cigxLCAiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiLnN1YnN0cigxLCAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0Rhc2hib2FyZC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0Rhc2hib2FyZC5odG1sIi5zdWJzdHIoMSwgIi9EYXNoYm9hcmQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0hvdEtleXMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Ib3RLZXlzLmh0bWwiLnN1YnN0cigxLCAiL0hvdEtleXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViYXBwTmFtZVBhdGguaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJhcHBOYW1lUGF0aC5odG1sIi5zdWJzdHIoMSwgIi9XZWJhcHBOYW1lUGF0aC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTmF2aWdhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL05hdmlnYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvTmF2aWdhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIuc3Vic3RyKDEsICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIuc3Vic3RyKDEsICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIi5zdWJzdHIoMSwgIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SVE1QU0FuZEhUVFBTLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUlRNUFNBbmRIVFRQUy5odG1sIi5zdWJzdHIoMSwgIi9SVE1QU0FuZEhUVFBTLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiLnN1YnN0cigxLCAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiLnN1YnN0cigxLCAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ2x1c3RlcmluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NsdXN0ZXJpbmcuaHRtbCIuc3Vic3RyKDEsICIvQ2x1c3RlcmluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZXRWZXJzaW9uSW5mby5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dldFZlcnNpb25JbmZvLmh0bWwiLnN1YnN0cigxLCAiL0dldFZlcnNpb25JbmZvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCSAgICAJCQkJCQorICAgIAkJCQkJY3VycmVudExpbmsgPSBjdXJyZW50TGluay50b0xvd2VyQ2FzZSgpOworICAgIAkJCQkJY3VycmVudExvY2F0aW9uID0gY3VycmVudExvY2F0aW9uLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQkKKwkJCQkJCXJldHVybiBzaWRlQmFyTGFzdFN0cmluZyA9PSBjdXJyZW50TGluaysiIyIrY3VycmVudExvY2F0aW9uOworCQkJCQl9CisJCQkJfSk7CisJCQl9KTsKKwkJCTwvc2NyaXB0PgorCQkJCisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisJCQkJJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CisJCQkJCSQoJy5mYW5jeWJveC1idXR0b25zJykuY29sb3Jib3goe3JlbDonZmFuY3lib3gtYnV0dG9ucycsd2lkdGg6Ijc1JSIsIGhlaWdodDoiNzUlIn0pOworCQkJCQkkKCcjYWNjb3JkaW9uIGEnKS5lYWNoKGZ1bmN0aW9uKCkgeworCQkJCSAgICAgIHZhciBhID0gJCh0aGlzKTsKKwkJCQkgICAgICB2YXIgaHJlZiA9IGEuYXR0cigiaHJlZiIpOworCQkJCSAgICAgIGlmIChocmVmLmluZGV4T2YoIiMiKSA9PSAtMSkgeworCQkJCSAgICAgIAkgIHZhciBjb21wYXJlSXQgPSBocmVmLnN1YnN0cigyLCBocmVmLmxlbmd0aCk7CisJCQkJCSAgICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoY29tcGFyZUl0KSE9IC0xKSB7CisJCQkJCSAgICAgICBhLmFkZENsYXNzKCdhY3RpdmUnKTsKKwkJCQkJICAgICAgfQorCQkJCSAgICAgIH0KKwkJCQkgICAgfSk7CisJCQkJCSQoJyNjb2luLXNsaWRlcicpLmNvaW5zbGlkZXIoeyB3aWR0aDogNjQwLGhlaWdodDogNDAwLCBkZWxheTogNDAwMCAgfSk7CQkJCQkKKwkJCQl9KTsKKwkJCTwvc2NyaXB0PgkKKwkJCQkJCQorCQkJPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKwkJCQkuZmFuY3lib3gtY3VzdG9tIC5mYW5jeWJveC1vdXRlciB7CisJCQkJCWJveC1zaGFkb3c6IDAgMCA1MHB4ICMyMjI7CisJCQkJfQorCQkJPC9zdHlsZT4KKyAgICAgICAgPC9oZWFkPgorCisgICAgICAgIDxib2R5IGJnY29sb3I9IiNmZmZmZmYiIHRleHQ9IiMwMDAwMDAiIGxpbms9IiMxMjM0NjUiIHZsaW5rPSIjMTIzNDY1IiBhbGluaz0iIzAwMDAwMCI+ICAKKyAgICAgICAgCTxkaXYgY2xhc3M9Im1haW5ib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgCTxkaXYgY2xhc3M9InN1cGVyYm9keSIgc3R5bGU9IndpZHRoOiAxMDAlOyI+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiPgorICAgICAgICAgICAgICAgIDwhLS0gVE9QIElNQUdFIC0tPgorICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0Ij4KKzxhIGhyZWY9Imh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy8iPjxpbWcgc3JjPSIuL2ltYWdlcy9sb2dvLTIuanBnIiBhbHQ9IkFwYWNoZSBPcGVuTWVldGluZ3MiIGJvcmRlcj0iMCIvPjwvYT4KKzwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODAlIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIiA+CisJPGEgaHJlZj0iZGVtby5odG1sIj5EZW1vPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9ImRvd25sb2Fkcy5odG1sIiB0YXJnZXQ9Il9QQVJFTlQiPkRvd25sb2FkPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imluc3RhbGxhdGlvbi5odG1sIiB0YXJnZXQ9Il9QQVJFTlQiPkluc3RhbGxhdGlvbjwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUyIgdGFyZ2V0PSJfQkxBTksiPldpa2k8L2E+CisJPHNwYW4+Jm5ic3A7PC9zcGFuPgorPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iNCI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGhyIG5vc2hhZGU9Im5vc2hhZGUiIHNpemU9IjEiLz4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDwhLS0gTEVGVCBTSURFIE5BVklHQVRJT04gLS0+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCIgbm93cmFwPSJub3dyYXAiPgorCisgICAgICAgICAgICAgICAgICAgIDwhLS0gc3BlY2lhbCBBQ29uIExvZ28gLSBsZWF2ZSBoZXJlIGZvciBuZXh0IHRpbWUKKyAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL2FwYWNoZWNvbi5jb20vMjAwNS9VUy8iPgorICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHA6Ly9hcGFjaGUub3JnL2ltYWdlcy9hYzIwMDV1c19ibHVlXzEyNXgxMjUuanBnIiBoZWlnaHQ9IjEyNSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjEyNSIgYm9yZGVyPSIwIiBhbHQ9IkFwYWNoZUNvbiBVUyAyMDA1IiAvPgorICAgICAgICAgICAgICAgICAgICA8L2E+ICAtLT4KKworICAgICAgICAgICAgICAgICAgIDwhLS0gcmVndWxhciBtZW51IC0tPgorCisgICAgICAgICAgICAgICAgICAgIAorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDxkaXYgaWQ9ImFjY29yZGlvbiIgc3R5bGU9IndpZHRoOiAxMDAlIj4KKyAgICAKKyAgICAgICAgICAgIAk8aDM+PGEgaHJlZj0iI0dlbmVyYWwiPkdlbmVyYWw8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luZGV4Lmh0bWwiPkhvbWU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2xpY2Vuc2UuaHRtbCI+TGljZW5zZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iPkFTRjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZG93bmxvYWRzLmh0bWwiPkRvd25sb2FkczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiPkNvbW1lcmNpYWwgU3VwcG9ydDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI+SW5zdGFsbGF0aW9uIGFuZCBVcGdyYWRlPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9pbnN0YWxsYXRpb24uaHRtbCI+SW5zdGFsbGF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9VcGdyYWRlLmh0bWwiPlVwZ3JhZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiPlR1dG9yaWFsczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQ29tbWFuZExpbmVBZG1pbi5odG1sIj5Db21tYW5kIExpbmUgQWRtaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0NvbW11bml0eSI+Q29tbXVuaXR5PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9nZXQtaW52b2x2ZWQuaHRtbCI+R2V0IEludm9sdmVkPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi90ZWFtLWxpc3QuaHRtbCI+Q29tbWl0dGVyczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbWFpbC1saXN0cy5odG1sIj5NYWlsaW5nIExpc3RzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iPldpa2k8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0RldmVsb3BtZW50Ij5EZXZlbG9wbWVudDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vc3ZuLmh0bWwiPlNvdXJjZSBDb2RlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyI+QnVncyAvIElzc3VlcyAoSklSQSk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2RlcGVuZGVuY2llcy5odG1sIj5EZXBlbmRlbmNpZXM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiPkJ1aWxkIEluc3RydWN0aW9uczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSlVuaXRUZXN0aW5nLmh0bWwiPkpVbml0IFRlc3Rpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01hbnVhbFRlc3RpbmcuaHRtbCI+TWFudWFsIFRlc3Rpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1JlbGVhc2VHdWlkZS5odG1sIj5SZWxlYXNlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9XZWJzaXRlR3VpZGUuaHRtbCI+V2Vic2l0ZSBHdWlkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjSW50ZWdyYXRpb24iPkludGVncmF0aW9uPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Tb2FwUmVzdEFQSS5odG1sIj5TT0FQL1JFU1QgQVBJPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZXN0QVBJU2FtcGxlLmh0bWwiPlJFU1QgQVBJIFNhbXBsZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTGRhcEFuZEFEUy5odG1sIj5MZGFwIGFuZCBBRFM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiPlZvSVAgYW5kIFNJUDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vRXJyb3JzVGFibGUuaHRtbCI+RXJyb3JzIHRhYmxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNQbHVnaW5zIj5QbHVnaW5zPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Nb29kbGVQbHVnaW4uaHRtbCI+TW9vZGxlIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU2FrYWlQbHVnaW4uaHRtbCI+U2FrYWkgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KaXJhUGx1Z2luLmh0bWwiPkppcmEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Kb29tbGFQbHVnaW4uaHRtbCI+Sm9vbWxhIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vRHJ1cGFsUGx1Z2luLmh0bWwiPkRydXBhbCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0JpdHJpeFBsdWdpbi5odG1sIj5CaXRyaXggUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiPkNvbmZsdWVuY2UgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TdWdhckNSTVBsdWdpbi5odG1sIj5TdWdhckNSTSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1JlZG1pbmVQbHVnaW4uaHRtbCI+UmVkbWluZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0NvbmZpZ3VyYXRpb24iPkNvbmZpZ3VyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkRCIFNhbXBsZSBDb25maWd1cmF0aW9uczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiPkFwYWNoZSBEZXJieTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSUJNREIyQ29uZmlnLmh0bWwiPklCTSBEQjI8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL09yYWNsZUNvbmZpZy5odG1sIj5PcmFjbGU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL015U1FMQ29uZmlnLmh0bWwiPk15U1FMPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIj5Qb3N0Z3JlczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TG9jYWxpemF0aW9uIGFuZCBsYW5ndWFnZXM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIj5JbnRlcm5hdGlvbmFsaXNhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTGFuZ3VhZ2VFZGl0b3IuaHRtbCI+TGFuZ3VhZ2VFZGl0b3I8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1RpbWVab25lSGFuZGxpbmcuaHRtbCI+VGltZVpvbmVIYW5kbGluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRWRpdFRlbXBsYXRlcy5odG1sIj5FZGl0VGVtcGxhdGVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5OQVQgUG9ydCBTZXR0aW5nczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1BvcnRTZXR0aW5ncy5odG1sIj5Qb3J0IHNldHRpbmdzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5QZXJmb3JtYW5jZTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiPkpWTSBwZXJmb3JtYW5jZSB0dW5pbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlVzZXIgSW50ZXJmYWNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIj5UaGVtZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0Rhc2hib2FyZC5odG1sIj5EYXNoYm9hcmQ8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiPldlYmNhbSByZXNvbHV0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiPlJvb20gbGF5b3V0IG9wdGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0hvdEtleXMuaHRtbCI+SG90IEtleXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkN1c3RvbWl6YXRpb248L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9XZWJhcHBOYW1lUGF0aC5odG1sIj5XZWJhcHAgbmFtZS9wYXRoPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9OYXZpZ2F0aW9uLmh0bWwiPk5hdmlnYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCI+Q2FsZW5kYXIgYW5kIHRpbWV6b25lPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiPkN1c3RvbSByb29tIHR5cGU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiPkN1c3RvbSBjdHlwdCBtZWNoYW5pc208L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiPkdlbmVyYWwgQ29uZmlndXJhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+U2VjdXJpdHk8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiPlJlc3RyaWN0ZWQgQWNjZXNzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9SVE1QU0FuZEhUVFBTLmh0bWwiPlJUTVBTIGFuZCBIVFRQUzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q29udmVydGVyczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCI+T3Blbk9mZmljZSBDb252ZXJ0ZXI8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCI+RkZNUEVHIFZlcnNpb24gU3dpdGNoPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5DbHVzdGVyaW5nPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2x1c3RlcmluZy5odG1sIj5DbHVzdGVyaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5NaXNjPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2V0VmVyc2lvbkluZm8uaHRtbCI+R2V0IHZlcnNpb24gaW5mbzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCisgICAgPC9kaXY+CisgICAgIAorICAgIDxici8+CisgICAgCisgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODAlIiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkID48IS0tIGJnY29sb3I9IiNFRUVFRUUiIC0tPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0idmVyZGFuYSxhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IkludHJvZHVjdGlvbiI+PHN0cm9uZz5JbnRyb2R1Y3Rpb248L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQlBdXRvbWF0aWMgdGVzdHMgYXJlIHRoZSBzaWduaWZpY2FudCBwYXJ0IG9mIGRldmVsb3BtZW50IHByb2Nlc3MuDQorCQkJCUJlbG93IGlzIHRoZSBpbnN0cnVjdGlvbiBvZiBob3cgdG8gcnVuIE9wZW5tZWV0aW5ncw0KKwkJCQk8YSBocmVmPSJodHRwOi8vanVuaXQub3JnIiByZWw9Im5vZm9sbG93Ij5KVW5pdDwvYT4NCisJCQkJdGVzdHMuDQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iRGV0YWlscyI+PHN0cm9uZz5EZXRhaWxzPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b2w+DQorCQkJCTxsaT5ydW5uaW5nIHRlc3RzIHVzaW5nIGNvbW1hbmQgbGluZTogPC9saT4NCisJCQkJPGxpPg0KKwkJCQkJPHVsPg0KKwkJCQkJCTxsaT5hbGwgdGVzdHM6DQorCQkJCQkJCTxkaXYgY2xhc3M9InhtbGNvZGUiPg0KKwkJCQkJCQkJYW50IHRlc3QNCisJCQkJCQkJPC9kaXY+DQorCQkJCQkJPC9saT4NCisJCQkJCQk8bGk+c3Vic2V0IG9mIHRlc3RzIGJ5IG1hc2s6DQorCQkJCQkJCTxkaXYgY2xhc3M9InhtbGNvZGUiPg0KKwkJCQkJCQkJYW50IC1EdGVzdGNhc2VzPVRlc3RFcnJvciogdGVzdA0KKwkJCQkJCQk8L2Rpdj4NCisJCQkJCQk8L2xpPg0KKwkJCQkJPC91bD4NCisJCQkJPC9saT4NCisJCQkJPGxpPnJ1bm5pbmcgdGVzdHMgZnJvbSBFY2xpcHNlIElERTogPC9saT4NCisJCQkJPGxpPg0KKwkJCQkJPHVsPg0KKwkJCQkJCTxsaT4NCisJCQkJCQkJPGRpdiBjbGFzcz0ieG1sY29kZSI+DQorCQkJCQkJCQlhbnQgLURkYj0mbHQ7eW91cl9EQiZndDsgcHJlcGFyZS1lY2xpcHNlDQorCQkJCQkJCTwvZGl2Pg0KKwkJCQkJCTwvbGk+DQorCQkJCQkJPGxpPlN0YXJ0IEVjbGlwc2UgPC9saT4NCisJCQkJCQk8bGk+TG9hZCB3b3Jrc3BhY2Ugd2l0aCBPcGVubWVldGluZ3MgcHJvamVjdCAob3IgcmVmcmVzaCBleGlzdGluZw0KKwkJCQkJCQlwcm9qZWN0KQ0KKwkJCQkJCTwvbGk+DQorCQkJCQkJPGxpPlNlbGVjdCAiRGVidWcgQ29uZmlndXJhdGlvbnMuLi4iIDwvbGk+DQorCQkJCQk8L3VsPg0KKwkJCQk8L2xpPg0KKwkJCTwvb2w+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJPGEgY2xhc3M9ImZhbmN5Ym94LWJ1dHRvbnMiIGhyZWY9ImltYWdlcy9EZWJ1Z0NvbmZpZ3VyYXRpb25zLnBuZyI+DQorCQkJCQk8aW1nIHNyYz0iaW1hZ2VzL0RlYnVnQ29uZmlndXJhdGlvbnMucG5nIiBhbHQ9IiIgd2lkdGg9IjM2NyIgaGVpZ2h0PSIyNjIiIC8+DQorCQkJCTwvYT4NCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+DQorCQkJCTxsaT5DcmVhdGUgTmV3IEp1bml0IGNvbmZpZ3VyYXRpb24sIGdpdmUgaXQgYSBuYW1lIGFuZCBzZWxlY3QgdGVzdA0KKwkJCQkJY2xhc3MNCisJCQkJPC9saT4NCisJCQk8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQorCQkJCTxhIGNsYXNzPSJmYW5jeWJveC1idXR0b25zIiBocmVmPSJpbWFnZXMvTmV3Q29uZmlndXJhdGlvbi5wbmciPg0KKwkJCQkJPGltZyBzcmM9ImltYWdlcy9OZXdDb25maWd1cmF0aW9uLnBuZyIgYWx0PSIiIHdpZHRoPSI0MjAiIGhlaWdodD0iMjA2IiAvPg0KKwkJCQk8L2E+DQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPg0KKwkJCQk8bGk+U2VsZWN0IEFyZ3VtZW50cyB0YWIgPC9saT4NCisJCQkJPGxpPkFkZCB0aGUgZm9sbG93aW5nIGNvZGUgdG8gdGhlIFZNIHNlY3Rpb24NCisJCQkJCTxkaXYgY2xhc3M9InhtbGNvZGUiPg0KKwkJCQkJCS1qYXZhYWdlbnQ6JHt3b3Jrc3BhY2VfbG9jOk9wZW5tZWV0aW5nc30vYnVpbGQvbGliL29tL29wZW5qcGEtYnVuZGxlLTIuMi4xLmphcg0KKwkJCQkJCS1Ed2ViYXBwcy5yb290PSR7d29ya3NwYWNlX2xvYzpPcGVubWVldGluZ3N9L2Rpc3QvcmVkNS93ZWJhcHBzL29wZW5tZWV0aW5ncw0KKwkJCQkJPC9kaXY+DQorCQkJCTwvbGk+DQorCQkJCTxsaT5UbyBhdm9pZCB0ZW1wb3JhcnkgZmlsZXMgYmVpbmcgY3JlYXRlZCBpbiBPTSByb290LCBtb2RpZnkNCisJCQkJCSJXb3JraW5nIERpcmVjdG9yeSIgYXMgZm9sbG93cw0KKwkJCQkJPGRpdiBjbGFzcz0ieG1sY29kZSI+JHt3b3Jrc3BhY2VfbG9jOk9wZW5tZWV0aW5nc30vYnVpbGQvanVuaXQ8L2Rpdj4NCisJCQkJPC9saT4NCisJCQk8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQorCQkJCTxhIGNsYXNzPSJmYW5jeWJveC1idXR0b25zIiBocmVmPSJpbWFnZXMvQXJndW1lbnRzLnBuZyI+DQorCQkJCQk8aW1nIHNyYz0iaW1hZ2VzL0FyZ3VtZW50cy5wbmciIGFsdD0iIiB3aWR0aD0iNDM1IiBoZWlnaHQ9IjQxMCIgLz4NCisJCQkJPC9hPg0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4NCisJCQkJPGxpPlNlbGVjdCBEZWJ1ZyA8L2xpPg0KKw0KKwkJCTwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+DQorCQkJCTxsaT5Ob3RlOiBZb3UgbmVlZCBhIGZpbGUgY2FsbGVkICJwZXJzaXN0ZW5jZS54bWwiIGluIHNyYy9NRVRBLUlORg0KKwkJCQkJaWYgeW91IHJ1biB0aGUgSlVuaXQgdGVzdCBmcm9tIGluc2lkZSBFY2xpcHNlLiBOb3JtYWxseSAiYW50DQorCQkJCQlwcmVwYXJlLWVjbGlwc2UiIHNob3VsZCBkbyB0aGF0IGZvciB5b3UuIDwvbGk+DQorDQorCQkJPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPCEtLSBGT09URVIgLS0+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGhyIG5vc2hhZGU9Im5vc2hhZGUiIHNpemU9IjEiLz4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBhbGlnbj0iY2VudGVyIj48Zm9udCBjb2xvcj0iIzEyMzQ2NSIgc2l6ZT0iLTEiPjxlbT4KKyAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0ICYjMTY5OyAyMDAzLTIwMTMsIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorICAgICAgICAgICAgICAgICAgICA8L2VtPjwvZm9udD48L2Rpdj4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9ib2R5PgorICAgIDwvaHRtbD4KKzwhLS0gZW5kIHRoZSBwcm9jZXNzaW5nIC0tPgorCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCmRpZmYgLS1naXQgYS9kb2NzL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwgYi9kb2NzL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjcxZDIzYgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbApAQCAtMCwwICsxLDczMiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CisKKzwhLS0KK0NvcHlyaWdodCAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK3lvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCitodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworCis8IS0tIENvbnRlbnQgU3R5bGVzaGVldCBmb3IgU2l0ZSAtLT4KKworICAgICAgICAKKzwhLS0gc3RhcnQgdGhlIHByb2Nlc3NpbmcgLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDwhLS0gR0VORVJBVEVEIEZJTEUsIERPIE5PVCBFRElULCBFRElUIFRIRSBYTUwgRklMRSBJTiB4ZG9jcyBJTlNURUFEISAtLT4KKyAgICA8IS0tIE1haW4gUGFnZSBTZWN0aW9uIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8aHRtbD4KKyAgICAgICAgPGhlYWQ+CisgICAgICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIvPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSIKKwkJCU9wZW5NZWV0aW5ncyBUZWFtCisJCSI+CisgICAgICAgICAgICA8bWV0YSBuYW1lPSJlbWFpbCIgY29udGVudD0ic2ViYXdhZ25lckBhcGFjaGUub3JnIj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICA8dGl0bGU+QXBhY2hlIE9wZW5NZWV0aW5ncyAtIFBlcmZvcm1hbmNlIFR1bmluZzwvdGl0bGU+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3Mvb3Blbm1lZXRpbmdzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvanF1ZXJ5LXVpLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29pbi1zbGlkZXItc3R5bGVzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29sb3Jib3guY3NzIiAvPgorICAgICAgICAgICAgCisJCQk8IS0tIEFkZCBqUXVlcnkgbGlicmFyeSAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS0xLjcuMS5taW4uanMiPjwvc2NyaXB0PgorCQkKKwkJCTwhLS0gQWRkIGNvaW5zbGlkZXIgcGx1Z2lucyAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2NvaW4tc2xpZGVyLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTwhLS0gQWRkIGNvbG9yYm94IHBsdWdpbiAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS5jb2xvcmJveC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5jb3JlLmpzIj48L3NjcmlwdD4KKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkud2lkZ2V0LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmFjY29yZGlvbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQ+CisJCQkkKGZ1bmN0aW9uKCkgeworCQkJCSQoICIjYWNjb3JkaW9uIiApLmFjY29yZGlvbih7CisJCQkJCWF1dG9IZWlnaHQ6IGZhbHNlLAorCQkJCQluYXZpZ2F0aW9uOiB0cnVlLAorCQkJCQluYXZpZ2F0aW9uRmlsdGVyOiBmdW5jdGlvbiAoKSB7CisJCQkJCQl2YXIgc2lkZWJhckhyZWZBcnJheSA9IHRoaXMuaHJlZi5zcGxpdCgiLyIpOworICAgIAkJCQkJdmFyIHNpZGVCYXJMYXN0U3RyaW5nID0gc2lkZWJhckhyZWZBcnJheVtzaWRlYmFySHJlZkFycmF5Lmxlbmd0aCAtIDFdLnRvTG93ZXJDYXNlKCk7CisJCQkJCQkKKwkJCQkJCWlmIChzaWRlQmFyTGFzdFN0cmluZy5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJCQl9CisJCQkJCQkKKwkJCQkJCQkJCQkJCS8qIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgKi8KKwkJCQkJCXZhciBjdXJyZW50U2VjdGlvbiA9ICIiOworCQkJCQkJCisJCQkJCQl2YXIgY3VycmVudExvY2F0aW9uID0gIiI7CisJCQkJCQl2YXIgY3VycmVudExpbmsgPSAiIjsKKwkJCQkJCWlmIChmYWxzZSkgeworCQkJCQkJCisJCQkJCQl9CisgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luZGV4Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luZGV4Lmh0bWwiLnN1YnN0cigxLCAiL2luZGV4Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbGljZW5zZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9saWNlbnNlLmh0bWwiLnN1YnN0cigxLCAiL2xpY2Vuc2UuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIuc3Vic3RyKDEsICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2Rvd25sb2Fkcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kb3dubG9hZHMuaHRtbCIuc3Vic3RyKDEsICIvZG93bmxvYWRzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5zdWJzdHIoMSwgIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5zdGFsbGF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luc3RhbGxhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9pbnN0YWxsYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9VcGdyYWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1VwZ3JhZGUuaHRtbCIuc3Vic3RyKDEsICIvVXBncmFkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLnN1YnN0cigxLCAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29tbWFuZExpbmVBZG1pbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLnN1YnN0cigxLCAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZ2V0LWludm9sdmVkLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZ2V0LWludm9sdmVkLmh0bWwiLnN1YnN0cigxLCAiL2dldC1pbnZvbHZlZC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RlYW0tbGlzdC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3RlYW0tbGlzdC5odG1sIi5zdWJzdHIoMSwgIi90ZWFtLWxpc3QuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9tYWlsLWxpc3RzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbWFpbC1saXN0cy5odG1sIi5zdWJzdHIoMSwgIi9tYWlsLWxpc3RzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5zdWJzdHIoMSwgImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9zdm4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3N2bi5odG1sIi5zdWJzdHIoMSwgIi9zdm4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLnN1YnN0cigxLCAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kZXBlbmRlbmNpZXMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2RlcGVuZGVuY2llcy5odG1sIi5zdWJzdHIoMSwgIi9kZXBlbmRlbmNpZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVW5pdFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pVbml0VGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9KVW5pdFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NYW51YWxUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9NYW51YWxUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL01hbnVhbFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWxlYXNlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlbGVhc2VHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9SZWxlYXNlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJzaXRlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1dlYnNpdGVHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9XZWJzaXRlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU29hcFJlc3RBUEkuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1NvYXBSZXN0QVBJLmh0bWwiLnN1YnN0cigxLCAiL1NvYXBSZXN0QVBJLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdEFQSVNhbXBsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVzdEFQSVNhbXBsZS5odG1sIi5zdWJzdHIoMSwgIi9SZXN0QVBJU2FtcGxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGRhcEFuZEFEUy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTGRhcEFuZEFEUy5odG1sIi5zdWJzdHIoMSwgIi9MZGFwQW5kQURTLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRXJyb3JzVGFibGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0Vycm9yc1RhYmxlLmh0bWwiLnN1YnN0cigxLCAiL0Vycm9yc1RhYmxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01vb2RsZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Nb29kbGVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvTW9vZGxlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU2FrYWlQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU2FrYWlQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU2FrYWlQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KaXJhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0ppcmFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSmlyYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pvb21sYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Kb29tbGFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSm9vbWxhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRHJ1cGFsUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0RydXBhbFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9EcnVwYWxQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CaXRyaXhQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQml0cml4UGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0JpdHJpeFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU3VnYXJDUk1QbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWRtaW5lUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlZG1pbmVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvUmVkbWluZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0lCTURCMkNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0lCTURCMkNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9JQk1EQjJDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09yYWNsZUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09yYWNsZUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9PcmFjbGVDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL015U1FMQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTXlTUUxDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvTXlTUUxDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Bvc3RncmVzQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9zdGdyZXNDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvUG9zdGdyZXNDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9MYW5ndWFnZUVkaXRvci5odG1sIi5zdWJzdHIoMSwgIi9MYW5ndWFnZUVkaXRvci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVGltZVpvbmVIYW5kbGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIuc3Vic3RyKDEsICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRWRpdFRlbXBsYXRlcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIuc3Vic3RyKDEsICIvRWRpdFRlbXBsYXRlcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3J0U2V0dGluZ3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3J0U2V0dGluZ3MuaHRtbCIuc3Vic3RyKDEsICIvUG9ydFNldHRpbmdzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIuc3Vic3RyKDEsICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIuc3Vic3RyKDEsICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRGFzaGJvYXJkLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRGFzaGJvYXJkLmh0bWwiLnN1YnN0cigxLCAiL0Rhc2hib2FyZC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSG90S2V5cy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0hvdEtleXMuaHRtbCIuc3Vic3RyKDEsICIvSG90S2V5cy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJhcHBOYW1lUGF0aC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLnN1YnN0cigxLCAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9OYXZpZ2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTmF2aWdhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9OYXZpZ2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5zdWJzdHIoMSwgIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JUTVBTQW5kSFRUUFMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SVE1QU0FuZEhUVFBTLmh0bWwiLnN1YnN0cigxLCAiL1JUTVBTQW5kSFRUUFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIuc3Vic3RyKDEsICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIuc3Vic3RyKDEsICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DbHVzdGVyaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2x1c3RlcmluZy5odG1sIi5zdWJzdHIoMSwgIi9DbHVzdGVyaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dldFZlcnNpb25JbmZvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2V0VmVyc2lvbkluZm8uaHRtbCIuc3Vic3RyKDEsICIvR2V0VmVyc2lvbkluZm8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJICAgIAkJCQkJCisgICAgCQkJCQljdXJyZW50TGluayA9IGN1cnJlbnRMaW5rLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQljdXJyZW50TG9jYXRpb24gPSBjdXJyZW50TG9jYXRpb24udG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCQorCQkJCQkJcmV0dXJuIHNpZGVCYXJMYXN0U3RyaW5nID09IGN1cnJlbnRMaW5rKyIjIitjdXJyZW50TG9jYXRpb247CisJCQkJCX0KKwkJCQl9KTsKKwkJCX0pOworCQkJPC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwkJCQkkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsKKwkJCQkJJCgnLmZhbmN5Ym94LWJ1dHRvbnMnKS5jb2xvcmJveCh7cmVsOidmYW5jeWJveC1idXR0b25zJyx3aWR0aDoiNzUlIiwgaGVpZ2h0OiI3NSUifSk7CisJCQkJCSQoJyNhY2NvcmRpb24gYScpLmVhY2goZnVuY3Rpb24oKSB7CisJCQkJICAgICAgdmFyIGEgPSAkKHRoaXMpOworCQkJCSAgICAgIHZhciBocmVmID0gYS5hdHRyKCJocmVmIik7CisJCQkJICAgICAgaWYgKGhyZWYuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJICAgICAgCSAgdmFyIGNvbXBhcmVJdCA9IGhyZWYuc3Vic3RyKDIsIGhyZWYubGVuZ3RoKTsKKwkJCQkJICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZihjb21wYXJlSXQpIT0gLTEpIHsKKwkJCQkJICAgICAgIGEuYWRkQ2xhc3MoJ2FjdGl2ZScpOworCQkJCQkgICAgICB9CisJCQkJICAgICAgfQorCQkJCSAgICB9KTsKKwkJCQkJJCgnI2NvaW4tc2xpZGVyJykuY29pbnNsaWRlcih7IHdpZHRoOiA2NDAsaGVpZ2h0OiA0MDAsIGRlbGF5OiA0MDAwICB9KTsJCQkJCQorCQkJCX0pOworCQkJPC9zY3JpcHQ+CQorCQkJCQkJCisJCQk8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorCQkJCS5mYW5jeWJveC1jdXN0b20gLmZhbmN5Ym94LW91dGVyIHsKKwkJCQkJYm94LXNoYWRvdzogMCAwIDUwcHggIzIyMjsKKwkJCQl9CisJCQk8L3N0eWxlPgorICAgICAgICA8L2hlYWQ+CisKKyAgICAgICAgPGJvZHkgYmdjb2xvcj0iI2ZmZmZmZiIgdGV4dD0iIzAwMDAwMCIgbGluaz0iIzEyMzQ2NSIgdmxpbms9IiMxMjM0NjUiIGFsaW5rPSIjMDAwMDAwIj4gIAorICAgICAgICAJPGRpdiBjbGFzcz0ibWFpbmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAJPGRpdiBjbGFzcz0ic3VwZXJib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCI+CisgICAgICAgICAgICAgICAgPCEtLSBUT1AgSU1BR0UgLS0+CisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPgorPGEgaHJlZj0iaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnLyI+PGltZyBzcmM9Ii4vaW1hZ2VzL2xvZ28tMi5qcGciIGFsdD0iQXBhY2hlIE9wZW5NZWV0aW5ncyIgYm9yZGVyPSIwIi8+PC9hPgorPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiID4KKwk8YSBocmVmPSJkZW1vLmh0bWwiPkRlbW88L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iZG93bmxvYWRzLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+RG93bmxvYWQ8L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaW5zdGFsbGF0aW9uLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+SW5zdGFsbGF0aW9uPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTIiB0YXJnZXQ9Il9CTEFOSyI+V2lraTwvYT4KKwk8c3Bhbj4mbmJzcDs8L3NwYW4+Cis8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSI0Ij4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPCEtLSBMRUZUIFNJREUgTkFWSUdBVElPTiAtLT4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIiBub3dyYXA9Im5vd3JhcCI+CisKKyAgICAgICAgICAgICAgICAgICAgPCEtLSBzcGVjaWFsIEFDb24gTG9nbyAtIGxlYXZlIGhlcmUgZm9yIG5leHQgdGltZQorICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vYXBhY2hlY29uLmNvbS8yMDA1L1VTLyI+CisgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2FwYWNoZS5vcmcvaW1hZ2VzL2FjMjAwNXVzX2JsdWVfMTI1eDEyNS5qcGciIGhlaWdodD0iMTI1IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTI1IiBib3JkZXI9IjAiIGFsdD0iQXBhY2hlQ29uIFVTIDIwMDUiIC8+CisgICAgICAgICAgICAgICAgICAgIDwvYT4gIC0tPgorCisgICAgICAgICAgICAgICAgICAgPCEtLSByZWd1bGFyIG1lbnUgLS0+CisKKyAgICAgICAgICAgICAgICAgICAgCisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGRpdiBpZD0iYWNjb3JkaW9uIiBzdHlsZT0id2lkdGg6IDEwMCUiPgorICAgIAorICAgICAgICAgICAgCTxoMz48YSBocmVmPSIjR2VuZXJhbCI+R2VuZXJhbDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5kZXguaHRtbCI+SG9tZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbGljZW5zZS5odG1sIj5MaWNlbnNlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyI+QVNGPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kb3dubG9hZHMuaHRtbCI+RG93bmxvYWRzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCI+Q29tbWVyY2lhbCBTdXBwb3J0PC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnN0YWxsYXRpb25hbmRVcGdyYWRlIj5JbnN0YWxsYXRpb24gYW5kIFVwZ3JhZGU8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luc3RhbGxhdGlvbi5odG1sIj5JbnN0YWxsYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1VwZ3JhZGUuaHRtbCI+VXBncmFkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii5odHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyI+VHV0b3JpYWxzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db21tYW5kTGluZUFkbWluLmh0bWwiPkNvbW1hbmQgTGluZSBBZG1pbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29tbXVuaXR5Ij5Db21tdW5pdHk8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2dldC1pbnZvbHZlZC5odG1sIj5HZXQgSW52b2x2ZWQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3RlYW0tbGlzdC5odG1sIj5Db21taXR0ZXJzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9tYWlsLWxpc3RzLmh0bWwiPk1haWxpbmcgTGlzdHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyI+V2lraTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjRGV2ZWxvcG1lbnQiPkRldmVsb3BtZW50PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9zdm4uaHRtbCI+U291cmNlIENvZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIj5CdWdzIC8gSXNzdWVzIChKSVJBKTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZGVwZW5kZW5jaWVzLmh0bWwiPkRlcGVuZGVuY2llczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCI+QnVpbGQgSW5zdHJ1Y3Rpb25zPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KVW5pdFRlc3RpbmcuaHRtbCI+SlVuaXQgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTWFudWFsVGVzdGluZy5odG1sIj5NYW51YWwgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVsZWFzZUd1aWRlLmh0bWwiPlJlbGVhc2UgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1dlYnNpdGVHdWlkZS5odG1sIj5XZWJzaXRlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnRlZ3JhdGlvbiI+SW50ZWdyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1NvYXBSZXN0QVBJLmh0bWwiPlNPQVAvUkVTVCBBUEk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Jlc3RBUElTYW1wbGUuaHRtbCI+UkVTVCBBUEkgU2FtcGxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9MZGFwQW5kQURTLmh0bWwiPkxkYXAgYW5kIEFEUzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCI+Vm9JUCBhbmQgU0lQPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9FcnJvcnNUYWJsZS5odG1sIj5FcnJvcnMgdGFibGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI1BsdWdpbnMiPlBsdWdpbnM8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01vb2RsZVBsdWdpbi5odG1sIj5Nb29kbGUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TYWthaVBsdWdpbi5odG1sIj5TYWthaSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0ppcmFQbHVnaW4uaHRtbCI+SmlyYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pvb21sYVBsdWdpbi5odG1sIj5Kb29tbGEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9EcnVwYWxQbHVnaW4uaHRtbCI+RHJ1cGFsIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQml0cml4UGx1Z2luLmh0bWwiPkJpdHJpeCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCI+Q29uZmx1ZW5jZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiPlN1Z2FyQ1JNIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVkbWluZVBsdWdpbi5odG1sIj5SZWRtaW5lIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29uZmlndXJhdGlvbiI+Q29uZmlndXJhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+REIgU2FtcGxlIENvbmZpZ3VyYXRpb25zPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQXBhY2hlRGVyYnlDb25maWcuaHRtbCI+QXBhY2hlIERlcmJ5PC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JQk1EQjJDb25maWcuaHRtbCI+SUJNIERCMjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3JhY2xlQ29uZmlnLmh0bWwiPk9yYWNsZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTXlTUUxDb25maWcuaHRtbCI+TXlTUUw8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Bvc3RncmVzQ29uZmlnLmh0bWwiPlBvc3RncmVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Mb2NhbGl6YXRpb24gYW5kIGxhbmd1YWdlczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiPkludGVybmF0aW9uYWxpc2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9MYW5ndWFnZUVkaXRvci5odG1sIj5MYW5ndWFnZUVkaXRvcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vVGltZVpvbmVIYW5kbGluZy5odG1sIj5UaW1lWm9uZUhhbmRsaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9FZGl0VGVtcGxhdGVzLmh0bWwiPkVkaXRUZW1wbGF0ZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk5BVCBQb3J0IFNldHRpbmdzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9ydFNldHRpbmdzLmh0bWwiPlBvcnQgc2V0dGluZ3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlBlcmZvcm1hbmNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCI+SlZNIHBlcmZvcm1hbmNlIHR1bmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+VXNlciBJbnRlcmZhY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiPlRoZW1lczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRGFzaGJvYXJkLmh0bWwiPkRhc2hib2FyZDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCI+V2ViY2FtIHJlc29sdXRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCI+Um9vbSBsYXlvdXQgb3B0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSG90S2V5cy5odG1sIj5Ib3QgS2V5czwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q3VzdG9taXphdGlvbjwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmFwcE5hbWVQYXRoLmh0bWwiPldlYmFwcCBuYW1lL3BhdGg8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL05hdmlnYXRpb24uaHRtbCI+TmF2aWdhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIj5DYWxlbmRhciBhbmQgdGltZXpvbmU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCI+Q3VzdG9tIHJvb20gdHlwZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCI+Q3VzdG9tIGN0eXB0IG1lY2hhbmlzbTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCI+R2VuZXJhbCBDb25maWd1cmF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5TZWN1cml0eTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCI+UmVzdHJpY3RlZCBBY2Nlc3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1JUTVBTQW5kSFRUUFMuaHRtbCI+UlRNUFMgYW5kIEhUVFBTPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Db252ZXJ0ZXJzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIj5PcGVuT2ZmaWNlIENvbnZlcnRlcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIj5GRk1QRUcgVmVyc2lvbiBTd2l0Y2g8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNsdXN0ZXJpbmc8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DbHVzdGVyaW5nLmh0bWwiPkNsdXN0ZXJpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk1pc2M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZXRWZXJzaW9uSW5mby5odG1sIj5HZXQgdmVyc2lvbiBpbmZvPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAKKyAgICA8L2Rpdj4KKyAgICAgCisgICAgPGJyLz4KKyAgICAKKyAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iUGVyZm9ybWFuY2UgVHVuaW5nIj48c3Ryb25nPlBlcmZvcm1hbmNlIFR1bmluZzwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgICA8aHIgc3R5bGU9IndpZHRoOjEwMCU7IGNvbG9yOiM5OTk5OTk7IGJhY2tncm91bmQtY29sb3I6Izk5OTk5OTsgaGVpZ2h0OjFweDsgYm9yZGVyOjBweDsiLz4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+VG8gdXNlIHRoZSBvcHRpbXVtIG9mIHBlcmZvcm1hbmNlIGZyb20geW91ciBzZXJ2ZXIgdGhlcmUgaXMgYQ0KKwkJCQlzdGFydC1zY3JpcHQgZm9yIHJlZDUgYXZhaWxhYmxlIHRoYXQgZG9lcyBzb21lIGJhc2ljIHNldHRpbmdzIGluIHRoZQ0KKwkJCQlKVk0uIEl0IGlzIGNhbGxlZCByZWQ1LWhpZ2hwZXJmLnNoLiBJdCBpcyByZWNvbW1lbmRlZCB0byB1c2UgdGhhdA0KKwkJCQlzY3JpcHQgZm9yIHByb2R1Y3Rpb24gYW5kIGhpZ2gtbG9hZCBzY2VuYXJpb3MuDQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ieG1sY29kZSI+DQorCQkJCSMhL2Jpbi9iYXNoDQorCQkJCTxiciAvPg0KKwkJCQk8YnIgLz4NCisJCQkJaWYgWyAteiAiJFJFRDVfSE9NRSIgXTsgdGhlbiBleHBvcnQgUkVENV9IT01FPS47IGZpDQorCQkJCTxiciAvPg0KKwkJCQk8YnIgLz4NCisJCQkJIyBQcmV2aW91cyBvcHRpb24gc2V0DQorCQkJCTxiciAvPg0KKwkJCQlleHBvcnQgSkFWQV9PUFRTPSItWHJzIC1YbXM1MTJNIC1YbXgxMDI0TSAtWHNzMTI4SyAtWFg6TmV3U2l6ZT0yNTZtDQorCQkJCS1YWDpTdXJ2aXZvclJhdGlvPTE2IC1YWDpNaW5IZWFwRnJlZVJhdGlvPTIwDQorCQkJCS1YWDorRXhwbGljaXRHQ0ludm9rZXNDb25jdXJyZW50IC1EamF2YS5uZXQucHJlZmVySVB2NFN0YWNrPXRydWUNCisJCQkJLVh2ZXJpZnk6bm9uZSINCisJCQkJPGJyIC8+DQorCQkJCTxiciAvPg0KKwkJCQkjIHN0YXJ0IFJlZDUNCisJCQkJPGJyIC8+DQorCQkJCWVjaG8gIlNldHRpbmcgSGkgUGVyZm9ybWFuY2UgT3B0aW9ucyINCisJCQkJPGJyIC8+DQorCQkJCWV4ZWMgJFJFRDVfSE9NRS9yZWQ1LnNoICZndDsmZ3Q7ICRSRUQ1X0hPTUUvbG9nL2p2bS5zdGRvdXQgMiZndDsmYW1wOzEgJmFtcDsNCisJCQkJPGJyIC8+DQorCQkJPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5Zb3UgaGF2ZSB0byBleGNsdWRlIHRoZSAiLVhYOitVc2VDb25jTWFya1N3ZWVwR0MiIHBhcmFtIGZyb20gdGhlDQorCQkJCWRlZmF1bHQgcmVkNS1oaWdocGVyZi5zaCB0byBtYWtlIGl0IGZ1bmN0aW9uYWwhIEhvd2V2ZXIgaWYgeW91IGFyZSBhDQorCQkJCXBlcmZvcm1hbmNlIGV4cGVydCB5b3UgbWlnaHQgYWxzbyBwbGF5IHdpdGggdGhlIHZhbHVlcyB0byBmaW5kDQorCQkJCXBlcmZlY3QgbWF0Y2hlcyBmb3IgeW91ciB1c2UtY2FzZS4NCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJRm9yIGEgY29tcGxldGUgb3ZlcnZpZXcgYWJvdXQgcG9zc2libGUgYXJndW1lbnRzIGFuZCB0aGVpciBtZWFuaW5nDQorCQkJCXNlZToNCisJCQkJPGEgaHJlZj0iaHR0cDovL3d3dy5vcmFjbGUuY29tL3RlY2huZXR3b3JrL2phdmEvamF2YXNlL3RlY2gvdm1vcHRpb25zLWpzcC0xNDAxMDIuaHRtbCNQZXJmb3JtYW5jZVR1bmluZyIgcmVsPSJub2ZvbGxvdyI+aHR0cDovL3d3dy5vcmFjbGUuY29tL3RlY2huZXR3b3JrL2phdmEvamF2YXNlL3RlY2gvdm1vcHRpb25zLWpzcC0xNDAxMDIuaHRtbCNQZXJmb3JtYW5jZVR1bmluZw0KKwkJCQk8L2E+DQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8IS0tIEZPT1RFUiAtLT4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGFsaWduPSJjZW50ZXIiPjxmb250IGNvbG9yPSIjMTIzNDY1IiBzaXplPSItMSI+PGVtPgorICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgJiMxNjk7IDIwMDMtMjAxMywgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisgICAgICAgICAgICAgICAgICAgIDwvZW0+PC9mb250PjwvZGl2PgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2JvZHk+CisgICAgPC9odG1sPgorPCEtLSBlbmQgdGhlIHByb2Nlc3NpbmcgLS0+CisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKZGlmZiAtLWdpdCBhL2RvY3MvSmFiYmVyU2VydmljZS5odG1sIGIvZG9jcy9KYWJiZXJTZXJ2aWNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTY1Y2QwNQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvSmFiYmVyU2VydmljZS5odG1sCkBAIC0wLDAgKzEsMjMxIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4NCis8IS0tDQorQ29weXJpZ2h0IDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24NCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorDQoraHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorDQorVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKy0tPg0KKw0KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+DQorICAgIDwhLS0gR0VORVJBVEVEIEZJTEUsIERPIE5PVCBFRElULCBFRElUIFRIRSBURU1QTEFURSBJTlNURUFEISAtLT4NCisgICAgPCEtLSBNYWluIFBhZ2UgU2VjdGlvbiAtLT4NCisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPg0KKyAgICANCisgICAgIDxodG1sPg0KKyAgICAgICAgPGhlYWQ+DQorCQk8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIi8+DQorCQk8bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9Ik9wZW5NZWV0aW5ncyBUZWFtIj4NCisJCTxtZXRhIG5hbWU9ImVtYWlsIiBjb250ZW50PSJzZWJhd2FnbmVyQGFwYWNoZS5vcmciPg0KKwkJPHRpdGxlPk9wZW5NZWV0aW5ncyBBUEkgTWV0aG9kczwvdGl0bGU+DQorCQk8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJvcGVubWVldGluZ3NfZG9jcy5jc3MiPg0KKyAgICAgICAgPC9oZWFkPg0KKwk8Ym9keT4NCisJDQorCQk8aDM+QXZhaWxhYmxlIFdlYlNlcnZpY2VzOjwvaDM+DQorCQ0KKwkJPGlmcmFtZSBzcmM9IldlYnNlcnZpY2VJbmRleC5odG1sIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIyMTAiIG5hbWU9IldlYnNlcnZpY2VJbmRleC5odG1sIg0KKwkJCXNjcm9sbGluZz0ibm8iIG1hcmdpbmhlaWdodD0iMCIgbWFyZ2lud2lkdGg9IjAiIGZyYW1lYm9yZGVyPSIwIj4NCisJCSAgPHA+WW91ciBCcm93c2VyIGRvZXMgbm90IHN1cHBvcnQgZnJhbWVzIC4uLjwvcD4NCisJCTwvaWZyYW1lPg0KKwkJDQorCQk8aHIgLz4NCisJDQorCSAgIDxoMz5XZWJTZXJ2aWNlOiBKYWJiZXJTZXJ2aWNlPC9oMz4NCisJICAgPHA+VGhpcyBjbGFzcyBwcm92aWRlcyBtZXRob2QgaW1wbGVtZW50YXRpb25zIG5lY2Vzc2FyeSBmb3IgT00gdG8gSmFiYmVyIGludGVncmF0aW9uLjxwPg0KKwkgICA8cD5XU0RMIHNhbXBsZSBVcmw6IDxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvSmFiYmVyU2VydmljZT93c2RsIj5odHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL0phYmJlclNlcnZpY2U/d3NkbDwvYT48cD4NCisJDQorCTwhLS0gTGlua3MgdG8gTWV0aG9kcyAtLT4NCisJICAgPGgzPkluZGV4IG9mIE1ldGhvZHMgYXZhaWxhYmxlIGluIEphYmJlclNlcnZpY2U8L2gzPg0KKwkgICANCisgICAgICAgPGRpdiBjbGFzcz0ibmF2aWdhdGlvbiI+DQorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ2V0QXZhaWxhYmxlUm9vbXMiPjxiPmdldEF2YWlsYWJsZVJvb21zPC9iPjwvYT48YnIvPg0KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uX2NvbW1lbnQiPjxpID5HZXQgTGlzdCZsdDtSb29tcyZndDsgb2YgYWxsIHJvb21zIGF2YWlsYWJsZSB0byB0aGUgdXNlci4KKyBObyBhZG1pbiByaWdodHMgYXJlIG5lY2Vzc2FyeSBmb3IgdGhpcyBjYWxsPC9pPjwvZGl2Pg0KKyAgICAgICAgICAgICAgICA8L2Rpdj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnZXRVc2VyQ291bnQiPjxiPmdldFVzZXJDb3VudDwvYj48L2E+PGJyLz4NCisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2aWdhdGlvbl9jb21tZW50Ij48aSA+UmV0dXJucyB0aGUgY291bnQgb2YgdXNlcnMgY3VycmVudGx5IGluIHRoZSBSb29tIHdpdGggZ2l2ZW4gaWQKKyBObyBhZG1pbiByaWdodHMgYXJlIG5lY2Vzc2FyeSBmb3IgdGhpcyBjYWxsPC9pPjwvZGl2Pg0KKyAgICAgICAgICAgICAgICA8L2Rpdj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnZXRJbnZpdGF0aW9uSGFzaCI+PGI+Z2V0SW52aXRhdGlvbkhhc2g8L2I+PC9hPjxici8+DQorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb25fY29tbWVudCI+PGkgPkdldCBpbnZpdGF0aW9uIGhhc2ggZm9yIHRoZSByb29tIHdpdGggZ2l2ZW4gaWQKKyBObyBhZG1pbiByaWdodHMgYXJlIG5lY2Vzc2FyeSBmb3IgdGhpcyBjYWxsPC9pPjwvZGl2Pg0KKyAgICAgICAgICAgICAgICA8L2Rpdj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCisJICAgDQorCSAgICA8aDM+TWV0aG9kcyBEZXRhaWxzIGluIEphYmJlclNlcnZpY2U8L2gzPg0KKwkNCisJCQkJICAgIAkJICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kIj4NCisJCSAgICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kX2hlYWRlciI+DQorCQkgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjEwcHgiPg0KKyAgICAJCQk8YSBuYW1lPSJnZXRBdmFpbGFibGVSb29tcyIgPjxiPmdldEF2YWlsYWJsZVJvb21zPC9iPjwvYT4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQkNCisgICAgCQkJTWV0aG9kOiA8aT5nZXRBdmFpbGFibGVSb29tcyAoDQorICAgIAkJCSAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBTSUQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkpDQorICAgIAkJCTwvaT48YnIvPg0KKyAgICAJCQk8cD4NCisgICAgCQkJICBHZXQgTGlzdCZsdDtSb29tcyZndDsgb2YgYWxsIHJvb21zIGF2YWlsYWJsZSB0byB0aGUgdXNlci4KKyBObyBhZG1pbiByaWdodHMgYXJlIG5lY2Vzc2FyeSBmb3IgdGhpcyBjYWxsDQorICAgIAkJCTwvcD4NCisgICAgCQkJPHA+DQorICAgICAgICAgICAgICAgICAgUmV0dXJuIFR5cGU6IGphdmEudXRpbC5MaXN0DQorICAgICAgICAgICAgICAgIDwvcD4NCisgICAgCQkJPHA+UGFyYW1zOjwvcD4NCisgICAgCQkJICAgIAkJCQ0KKyAgICAJCQkJICAgIAkJCTx0YWJsZSBydWxlcz0iYWxsIiBib3JkZXI9IjEiPg0KKwkgICAgCQkJICAgPHRoZWFkPg0KKwkgICAgCQkJICAgPHRyPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPlR5cGU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPkZpZWxkbmFtZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iNDAwIiBhbGlnbj0ibGVmdCI+RGVzY3JpcHRpb248L3RoPg0KKwkgICAgCQkJICAgPC90cj4NCisJICAgIAkJCSAgIDwvdGhlYWQ+DQorCSAgICAJCQkgICA8dGJvZHk+DQorCSAgICAJCQkgICAJICAgIAkJCSAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5TSUQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlRoZSBTSUQgZnJvbSBVc2VyU2VydmljZS5nZXRTZXNzaW9uPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KKwkgICAgCQkJPC90YWJsZT4NCisgICAgCQkJICAgIAkJCTxici8+DQorICAgIAkJCVJFU1QgU2FtcGxlIENhbGwvVVJMOjxici8+DQorICAgIAkJCSAgICAJCQkgICAgCQkJCSAgICAJCQkJCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL0phYmJlclNlcnZpY2UvZ2V0QXZhaWxhYmxlUm9vbXM/U0lEPVZBTFVFIj5odHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL0phYmJlclNlcnZpY2UvZ2V0QXZhaWxhYmxlUm9vbXM/U0lEPVZBTFVFPC9hPg0KKyAgICAJCSAgPC9kaXY+DQorICAgIAkgICAJCQkJICAgIAkJICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kIj4NCisJCSAgICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kX2hlYWRlciI+DQorCQkgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjEwcHgiPg0KKyAgICAJCQk8YSBuYW1lPSJnZXRVc2VyQ291bnQiID48Yj5nZXRVc2VyQ291bnQ8L2I+PC9hPg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCQ0KKyAgICAJCQlNZXRob2Q6IDxpPmdldFVzZXJDb3VudCAoDQorICAgIAkJCSAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBTSUQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgTG9uZyByb29tSWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkpDQorICAgIAkJCTwvaT48YnIvPg0KKyAgICAJCQk8cD4NCisgICAgCQkJICBSZXR1cm5zIHRoZSBjb3VudCBvZiB1c2VycyBjdXJyZW50bHkgaW4gdGhlIFJvb20gd2l0aCBnaXZlbiBpZAorIE5vIGFkbWluIHJpZ2h0cyBhcmUgbmVjZXNzYXJ5IGZvciB0aGlzIGNhbGwNCisgICAgCQkJPC9wPg0KKyAgICAJCQk8cD4NCisgICAgICAgICAgICAgICAgICBSZXR1cm4gVHlwZTogaW50DQorICAgICAgICAgICAgICAgIDwvcD4NCisgICAgCQkJPHA+UGFyYW1zOjwvcD4NCisgICAgCQkJICAgIAkJCQ0KKyAgICAJCQkJICAgIAkJCTx0YWJsZSBydWxlcz0iYWxsIiBib3JkZXI9IjEiPg0KKwkgICAgCQkJICAgPHRoZWFkPg0KKwkgICAgCQkJICAgPHRyPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPlR5cGU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPkZpZWxkbmFtZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iNDAwIiBhbGlnbj0ibGVmdCI+RGVzY3JpcHRpb248L3RoPg0KKwkgICAgCQkJICAgPC90cj4NCisJICAgIAkJCSAgIDwvdGhlYWQ+DQorCSAgICAJCQkgICA8dGJvZHk+DQorCSAgICAJCQkgICAJICAgIAkJCSAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5TSUQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlRoZSBTSUQgZnJvbSBVc2VyU2VydmljZS5nZXRTZXNzaW9uPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5yb29tSWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlkIG9mIHRoZSByb29tIHRvIGdldCB1c2VyczwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCisJICAgIAkJCTwvdGFibGU+DQorICAgIAkJCSAgICAJCQk8YnIvPg0KKyAgICAJCQlSRVNUIFNhbXBsZSBDYWxsL1VSTDo8YnIvPg0KKyAgICAJCQkgICAgCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL0phYmJlclNlcnZpY2UvZ2V0VXNlckNvdW50P1NJRD1WQUxVRSZyb29tSWQ9VkFMVUUiPmh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvSmFiYmVyU2VydmljZS9nZXRVc2VyQ291bnQ/U0lEPVZBTFVFJmFtcDtyb29tSWQ9VkFMVUU8L2E+DQorICAgIAkJICA8L2Rpdj4NCisgICAgCSAgIAkJCQkgICAgCQkgICAgICA8ZGl2IGNsYXNzPSJtZXRob2QiPg0KKwkJICAgICAgICA8ZGl2IGNsYXNzPSJtZXRob2RfaGVhZGVyIj4NCisJCSAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTBweCI+DQorICAgIAkJCTxhIG5hbWU9ImdldEludml0YXRpb25IYXNoIiA+PGI+Z2V0SW52aXRhdGlvbkhhc2g8L2I+PC9hPg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCQ0KKyAgICAJCQlNZXRob2Q6IDxpPmdldEludml0YXRpb25IYXNoICgNCisgICAgCQkJICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIFNJRA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgdXNlcm5hbWUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgTG9uZyByb29tX2lkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJKQ0KKyAgICAJCQk8L2k+PGJyLz4NCisgICAgCQkJPHA+DQorICAgIAkJCSAgR2V0IGludml0YXRpb24gaGFzaCBmb3IgdGhlIHJvb20gd2l0aCBnaXZlbiBpZAorIE5vIGFkbWluIHJpZ2h0cyBhcmUgbmVjZXNzYXJ5IGZvciB0aGlzIGNhbGwNCisgICAgCQkJPC9wPg0KKyAgICAJCQk8cD4NCisgICAgICAgICAgICAgICAgICBSZXR1cm4gVHlwZTogamF2YS5sYW5nLlN0cmluZw0KKyAgICAgICAgICAgICAgICA8L3A+DQorICAgIAkJCTxwPlBhcmFtczo8L3A+DQorICAgIAkJCSAgICAJCQkNCisgICAgCQkJCSAgICAJCQk8dGFibGUgcnVsZXM9ImFsbCIgYm9yZGVyPSIxIj4NCisJICAgIAkJCSAgIDx0aGVhZD4NCisJICAgIAkJCSAgIDx0cj4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5UeXBlPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5GaWVsZG5hbWU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjQwMCIgYWxpZ249ImxlZnQiPkRlc2NyaXB0aW9uPC90aD4NCisJICAgIAkJCSAgIDwvdHI+DQorCSAgICAJCQkgICA8L3RoZWFkPg0KKwkgICAgCQkJICAgPHRib2R5Pg0KKwkgICAgCQkJICAgCSAgICAJCQkgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+U0lEPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5UaGUgU0lEIGZyb20gVXNlclNlcnZpY2UuZ2V0U2Vzc2lvbjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj51c2VybmFtZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIG5hbWUgb2YgaW52aXRlZCB1c2VyLCB3aWxsIGJlIGRpc3BsYXllZCBpbiB0aGUgcm9vbXMgdXNlciBsaXN0PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5yb29tX2lkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5pZCBvZiB0aGUgcm9vbSB0byBnZXQgdXNlcnM8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQorCSAgICAJCQk8L3RhYmxlPg0KKyAgICAJCQkgICAgCQkJPGJyLz4NCisgICAgCQkJUkVTVCBTYW1wbGUgQ2FsbC9VUkw6PGJyLz4NCisgICAgCQkJICAgIAkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL0phYmJlclNlcnZpY2UvZ2V0SW52aXRhdGlvbkhhc2g/U0lEPVZBTFVFJnVzZXJuYW1lPVZBTFVFJnJvb21faWQ9VkFMVUUiPmh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvSmFiYmVyU2VydmljZS9nZXRJbnZpdGF0aW9uSGFzaD9TSUQ9VkFMVUUmYW1wO3VzZXJuYW1lPVZBTFVFJmFtcDtyb29tX2lkPVZBTFVFPC9hPg0KKyAgICAJCSAgPC9kaXY+DQorICAgIAkgICAJCQkNCisJDQorCTwvYm9keT4NCis8L2h0bWw+DQorDQpkaWZmIC0tZ2l0IGEvZG9jcy9KaXJhUGx1Z2luLmh0bWwgYi9kb2NzL0ppcmFQbHVnaW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzQxNjk1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9KaXJhUGx1Z2luLmh0bWwKQEAgLTAsMCArMSw3NDIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgorCis8IS0tCitDb3B5cmlnaHQgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKworPCEtLSBDb250ZW50IFN0eWxlc2hlZXQgZm9yIFNpdGUgLS0+CisKKyAgICAgICAgCis8IS0tIHN0YXJ0IHRoZSBwcm9jZXNzaW5nIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8IS0tIEdFTkVSQVRFRCBGSUxFLCBETyBOT1QgRURJVCwgRURJVCBUSEUgWE1MIEZJTEUgSU4geGRvY3MgSU5TVEVBRCEgLS0+CisgICAgPCEtLSBNYWluIFBhZ2UgU2VjdGlvbiAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGh0bWw+CisgICAgICAgIDxoZWFkPgorICAgICAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiLz4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iCisJCQlPcGVuTWVldGluZ3MgVGVhbQorCQkiPgorICAgICAgICAgICAgPG1ldGEgbmFtZT0iZW1haWwiIGNvbnRlbnQ9ImV1Z2VuLnNjaHdlcnRAZ21haWwuY29tIj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICA8dGl0bGU+QXBhY2hlIE9wZW5NZWV0aW5ncyAtIEppcmEgUGx1Z2luPC90aXRsZT4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9vcGVubWVldGluZ3MuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9qcXVlcnktdWkuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2luLXNsaWRlci1zdHlsZXMuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2xvcmJveC5jc3MiIC8+CisgICAgICAgICAgICAKKwkJCTwhLS0gQWRkIGpRdWVyeSBsaWJyYXJ5IC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LTEuNy4xLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPCEtLSBBZGQgY29pbnNsaWRlciBwbHVnaW5zIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvY29pbi1zbGlkZXIubWluLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPCEtLSBBZGQgY29sb3Jib3ggcGx1Z2luIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LmNvbG9yYm94LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmNvcmUuanMiPjwvc2NyaXB0PgorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS53aWRnZXQuanMiPjwvc2NyaXB0PgorCQkKKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkuYWNjb3JkaW9uLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdD4KKwkJCSQoZnVuY3Rpb24oKSB7CisJCQkJJCggIiNhY2NvcmRpb24iICkuYWNjb3JkaW9uKHsKKwkJCQkJYXV0b0hlaWdodDogZmFsc2UsCisJCQkJCW5hdmlnYXRpb246IHRydWUsCisJCQkJCW5hdmlnYXRpb25GaWx0ZXI6IGZ1bmN0aW9uICgpIHsKKwkJCQkJCXZhciBzaWRlYmFySHJlZkFycmF5ID0gdGhpcy5ocmVmLnNwbGl0KCIvIik7CisgICAgCQkJCQl2YXIgc2lkZUJhckxhc3RTdHJpbmcgPSBzaWRlYmFySHJlZkFycmF5W3NpZGViYXJIcmVmQXJyYXkubGVuZ3RoIC0gMV0udG9Mb3dlckNhc2UoKTsKKwkJCQkJCQorCQkJCQkJaWYgKHNpZGVCYXJMYXN0U3RyaW5nLmluZGV4T2YoIiMiKSA9PSAtMSkgeworCQkJCQkJCXJldHVybiBmYWxzZTsKKwkJCQkJCX0KKwkJCQkJCQorCQkJCQkJCQkJCQkJLyogZG9jdW1lbnQubG9jYXRpb24uaHJlZiAqLworCQkJCQkJdmFyIGN1cnJlbnRTZWN0aW9uID0gIiI7CisJCQkJCQkKKwkJCQkJCXZhciBjdXJyZW50TG9jYXRpb24gPSAiIjsKKwkJCQkJCXZhciBjdXJyZW50TGluayA9ICIiOworCQkJCQkJaWYgKGZhbHNlKSB7CisJCQkJCQkKKwkJCQkJCX0KKyAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5kZXguaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5kZXguaHRtbCIuc3Vic3RyKDEsICIvaW5kZXguaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9saWNlbnNlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2xpY2Vuc2UuaHRtbCIuc3Vic3RyKDEsICIvbGljZW5zZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5zdWJzdHIoMSwgImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZG93bmxvYWRzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2Rvd25sb2Fkcy5odG1sIi5zdWJzdHIoMSwgIi9kb3dubG9hZHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiLnN1YnN0cigxLCAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9pbnN0YWxsYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5zdGFsbGF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL2luc3RhbGxhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1VwZ3JhZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvVXBncmFkZS5odG1sIi5zdWJzdHIoMSwgIi9VcGdyYWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIuc3Vic3RyKDEsICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db21tYW5kTGluZUFkbWluLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIuc3Vic3RyKDEsICIvQ29tbWFuZExpbmVBZG1pbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9nZXQtaW52b2x2ZWQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9nZXQtaW52b2x2ZWQuaHRtbCIuc3Vic3RyKDEsICIvZ2V0LWludm9sdmVkLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGVhbS1saXN0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdGVhbS1saXN0Lmh0bWwiLnN1YnN0cigxLCAiL3RlYW0tbGlzdC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL21haWwtbGlzdHMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9tYWlsLWxpc3RzLmh0bWwiLnN1YnN0cigxLCAiL21haWwtbGlzdHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLnN1YnN0cigxLCAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3N2bi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvc3ZuLmh0bWwiLnN1YnN0cigxLCAiL3N2bi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIuc3Vic3RyKDEsICJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2RlcGVuZGVuY2llcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZGVwZW5kZW5jaWVzLmh0bWwiLnN1YnN0cigxLCAiL2RlcGVuZGVuY2llcy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pVbml0VGVzdGluZy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSlVuaXRUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL0pVbml0VGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01hbnVhbFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01hbnVhbFRlc3RpbmcuaHRtbCIuc3Vic3RyKDEsICIvTWFudWFsVGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlbGVhc2VHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVsZWFzZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1JlbGVhc2VHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYnNpdGVHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvV2Vic2l0ZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1dlYnNpdGVHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Tb2FwUmVzdEFQSS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU29hcFJlc3RBUEkuaHRtbCIuc3Vic3RyKDEsICIvU29hcFJlc3RBUEkuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZXN0QVBJU2FtcGxlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZXN0QVBJU2FtcGxlLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RBUElTYW1wbGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MZGFwQW5kQURTLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9MZGFwQW5kQURTLmh0bWwiLnN1YnN0cigxLCAiL0xkYXBBbmRBRFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FcnJvcnNUYWJsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRXJyb3JzVGFibGUuaHRtbCIuc3Vic3RyKDEsICIvRXJyb3JzVGFibGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTW9vZGxlUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01vb2RsZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Nb29kbGVQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TYWthaVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TYWthaVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TYWthaVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ppcmFQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSmlyYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9KaXJhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSm9vbWxhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pvb21sYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Kb29tbGFQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EcnVwYWxQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRHJ1cGFsUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0RydXBhbFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0JpdHJpeFBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CaXRyaXhQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvQml0cml4UGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TdWdhckNSTVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TdWdhckNSTVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TdWdhckNSTVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlZG1pbmVQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVkbWluZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9SZWRtaW5lUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSUJNREIyQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSUJNREIyQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL0lCTURCMkNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3JhY2xlQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3JhY2xlQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL09yYWNsZUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTXlTUUxDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9NeVNRTENvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9NeVNRTENvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUG9zdGdyZXNDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MYW5ndWFnZUVkaXRvci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLnN1YnN0cigxLCAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5zdWJzdHIoMSwgIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FZGl0VGVtcGxhdGVzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRWRpdFRlbXBsYXRlcy5odG1sIi5zdWJzdHIoMSwgIi9FZGl0VGVtcGxhdGVzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1BvcnRTZXR0aW5ncy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1BvcnRTZXR0aW5ncy5odG1sIi5zdWJzdHIoMSwgIi9Qb3J0U2V0dGluZ3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5zdWJzdHIoMSwgIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5zdWJzdHIoMSwgIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EYXNoYm9hcmQuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9EYXNoYm9hcmQuaHRtbCIuc3Vic3RyKDEsICIvRGFzaGJvYXJkLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLnN1YnN0cigxLCAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Ib3RLZXlzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSG90S2V5cy5odG1sIi5zdWJzdHIoMSwgIi9Ib3RLZXlzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYmFwcE5hbWVQYXRoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvV2ViYXBwTmFtZVBhdGguaHRtbCIuc3Vic3RyKDEsICIvV2ViYXBwTmFtZVBhdGguaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL05hdmlnYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9OYXZpZ2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL05hdmlnYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLnN1YnN0cigxLCAiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIuc3Vic3RyKDEsICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIuc3Vic3RyKDEsICIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUlRNUFNBbmRIVFRQUy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1JUTVBTQW5kSFRUUFMuaHRtbCIuc3Vic3RyKDEsICIvUlRNUFNBbmRIVFRQUy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5zdWJzdHIoMSwgIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5zdWJzdHIoMSwgIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NsdXN0ZXJpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DbHVzdGVyaW5nLmh0bWwiLnN1YnN0cigxLCAiL0NsdXN0ZXJpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvR2V0VmVyc2lvbkluZm8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9HZXRWZXJzaW9uSW5mby5odG1sIi5zdWJzdHIoMSwgIi9HZXRWZXJzaW9uSW5mby5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkgICAgCQkJCQkKKyAgICAJCQkJCWN1cnJlbnRMaW5rID0gY3VycmVudExpbmsudG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCWN1cnJlbnRMb2NhdGlvbiA9IGN1cnJlbnRMb2NhdGlvbi50b0xvd2VyQ2FzZSgpOworICAgIAkJCQkJCisJCQkJCQlyZXR1cm4gc2lkZUJhckxhc3RTdHJpbmcgPT0gY3VycmVudExpbmsrIiMiK2N1cnJlbnRMb2NhdGlvbjsKKwkJCQkJfQorCQkJCX0pOworCQkJfSk7CisJCQk8L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCQkJCSQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgeworCQkJCQkkKCcuZmFuY3lib3gtYnV0dG9ucycpLmNvbG9yYm94KHtyZWw6J2ZhbmN5Ym94LWJ1dHRvbnMnLHdpZHRoOiI3NSUiLCBoZWlnaHQ6Ijc1JSJ9KTsKKwkJCQkJJCgnI2FjY29yZGlvbiBhJykuZWFjaChmdW5jdGlvbigpIHsKKwkJCQkgICAgICB2YXIgYSA9ICQodGhpcyk7CisJCQkJICAgICAgdmFyIGhyZWYgPSBhLmF0dHIoImhyZWYiKTsKKwkJCQkgICAgICBpZiAoaHJlZi5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkgICAgICAJICB2YXIgY29tcGFyZUl0ID0gaHJlZi5zdWJzdHIoMiwgaHJlZi5sZW5ndGgpOworCQkJCQkgICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKGNvbXBhcmVJdCkhPSAtMSkgeworCQkJCQkgICAgICAgYS5hZGRDbGFzcygnYWN0aXZlJyk7CisJCQkJCSAgICAgIH0KKwkJCQkgICAgICB9CisJCQkJICAgIH0pOworCQkJCQkkKCcjY29pbi1zbGlkZXInKS5jb2luc2xpZGVyKHsgd2lkdGg6IDY0MCxoZWlnaHQ6IDQwMCwgZGVsYXk6IDQwMDAgIH0pOwkJCQkJCisJCQkJfSk7CisJCQk8L3NjcmlwdD4JCisJCQkJCQkKKwkJCTxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisJCQkJLmZhbmN5Ym94LWN1c3RvbSAuZmFuY3lib3gtb3V0ZXIgeworCQkJCQlib3gtc2hhZG93OiAwIDAgNTBweCAjMjIyOworCQkJCX0KKwkJCTwvc3R5bGU+CisgICAgICAgIDwvaGVhZD4KKworICAgICAgICA8Ym9keSBiZ2NvbG9yPSIjZmZmZmZmIiB0ZXh0PSIjMDAwMDAwIiBsaW5rPSIjMTIzNDY1IiB2bGluaz0iIzEyMzQ2NSIgYWxpbms9IiMwMDAwMDAiPiAgCisgICAgICAgIAk8ZGl2IGNsYXNzPSJtYWluYm9keSIgc3R5bGU9IndpZHRoOiAxMDAlOyI+CisgICAgICAgIAk8ZGl2IGNsYXNzPSJzdXBlcmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIj4KKyAgICAgICAgICAgICAgICA8IS0tIFRPUCBJTUFHRSAtLT4KKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCI+Cis8YSBocmVmPSJodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvIj48aW1nIHNyYz0iLi9pbWFnZXMvbG9nby0yLmpwZyIgYWx0PSJBcGFjaGUgT3Blbk1lZXRpbmdzIiBib3JkZXI9IjAiLz48L2E+Cis8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCIgPgorCTxhIGhyZWY9ImRlbW8uaHRtbCI+RGVtbzwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJkb3dubG9hZHMuaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5Eb3dubG9hZDwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJpbnN0YWxsYXRpb24uaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5JbnN0YWxsYXRpb248L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MiIHRhcmdldD0iX0JMQU5LIj5XaWtpPC9hPgorCTxzcGFuPiZuYnNwOzwvc3Bhbj4KKzwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjQiPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8IS0tIExFRlQgU0lERSBOQVZJR0FUSU9OIC0tPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiIG5vd3JhcD0ibm93cmFwIj4KKworICAgICAgICAgICAgICAgICAgICA8IS0tIHNwZWNpYWwgQUNvbiBMb2dvIC0gbGVhdmUgaGVyZSBmb3IgbmV4dCB0aW1lCisgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9hcGFjaGVjb24uY29tLzIwMDUvVVMvIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vYXBhY2hlLm9yZy9pbWFnZXMvYWMyMDA1dXNfYmx1ZV8xMjV4MTI1LmpwZyIgaGVpZ2h0PSIxMjUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPSIxMjUiIGJvcmRlcj0iMCIgYWx0PSJBcGFjaGVDb24gVVMgMjAwNSIgLz4KKyAgICAgICAgICAgICAgICAgICAgPC9hPiAgLS0+CisKKyAgICAgICAgICAgICAgICAgICA8IS0tIHJlZ3VsYXIgbWVudSAtLT4KKworICAgICAgICAgICAgICAgICAgICAKKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8ZGl2IGlkPSJhY2NvcmRpb24iIHN0eWxlPSJ3aWR0aDogMTAwJSI+CisgICAgCisgICAgICAgICAgICAJPGgzPjxhIGhyZWY9IiNHZW5lcmFsIj5HZW5lcmFsPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9pbmRleC5odG1sIj5Ib21lPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9saWNlbnNlLmh0bWwiPkxpY2Vuc2U8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5BU0Y8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2Rvd25sb2Fkcy5odG1sIj5Eb3dubG9hZHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIj5Db21tZXJjaWFsIFN1cHBvcnQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0luc3RhbGxhdGlvbmFuZFVwZ3JhZGUiPkluc3RhbGxhdGlvbiBhbmQgVXBncmFkZTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5zdGFsbGF0aW9uLmh0bWwiPkluc3RhbGxhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vVXBncmFkZS5odG1sIj5VcGdyYWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLmh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIj5UdXRvcmlhbHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCI+Q29tbWFuZCBMaW5lIEFkbWluPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb21tdW5pdHkiPkNvbW11bml0eTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZ2V0LWludm9sdmVkLmh0bWwiPkdldCBJbnZvbHZlZDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdGVhbS1saXN0Lmh0bWwiPkNvbW1pdHRlcnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL21haWwtbGlzdHMuaHRtbCI+TWFpbGluZyBMaXN0czwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIj5XaWtpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNEZXZlbG9wbWVudCI+RGV2ZWxvcG1lbnQ8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3N2bi5odG1sIj5Tb3VyY2UgQ29kZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiPkJ1Z3MgLyBJc3N1ZXMgKEpJUkEpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kZXBlbmRlbmNpZXMuaHRtbCI+RGVwZW5kZW5jaWVzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CdWlsZEluc3RydWN0aW9ucy5odG1sIj5CdWlsZCBJbnN0cnVjdGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pVbml0VGVzdGluZy5odG1sIj5KVW5pdCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9NYW51YWxUZXN0aW5nLmh0bWwiPk1hbnVhbCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWxlYXNlR3VpZGUuaHRtbCI+UmVsZWFzZSBHdWlkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vV2Vic2l0ZUd1aWRlLmh0bWwiPldlYnNpdGUgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0ludGVncmF0aW9uIj5JbnRlZ3JhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU29hcFJlc3RBUEkuaHRtbCI+U09BUC9SRVNUIEFQSTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVzdEFQSVNhbXBsZS5odG1sIj5SRVNUIEFQSSBTYW1wbGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0xkYXBBbmRBRFMuaHRtbCI+TGRhcCBhbmQgQURTPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIj5Wb0lQIGFuZCBTSVA8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0Vycm9yc1RhYmxlLmh0bWwiPkVycm9ycyB0YWJsZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjUGx1Z2lucyI+UGx1Z2luczwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTW9vZGxlUGx1Z2luLmh0bWwiPk1vb2RsZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Nha2FpUGx1Z2luLmh0bWwiPlNha2FpIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSmlyYVBsdWdpbi5odG1sIj5KaXJhIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSm9vbWxhUGx1Z2luLmh0bWwiPkpvb21sYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0RydXBhbFBsdWdpbi5odG1sIj5EcnVwYWwgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CaXRyaXhQbHVnaW4uaHRtbCI+Qml0cml4IFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQ29uZmx1ZW5jZVBsdWdpbi5odG1sIj5Db25mbHVlbmNlIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU3VnYXJDUk1QbHVnaW4uaHRtbCI+U3VnYXJDUk0gUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWRtaW5lUGx1Z2luLmh0bWwiPlJlZG1pbmUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb25maWd1cmF0aW9uIj5Db25maWd1cmF0aW9uPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5EQiBTYW1wbGUgQ29uZmlndXJhdGlvbnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIj5BcGFjaGUgRGVyYnk8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0lCTURCMkNvbmZpZy5odG1sIj5JQk0gREIyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcmFjbGVDb25maWcuaHRtbCI+T3JhY2xlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9NeVNRTENvbmZpZy5odG1sIj5NeVNRTDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9zdGdyZXNDb25maWcuaHRtbCI+UG9zdGdyZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkxvY2FsaXphdGlvbiBhbmQgbGFuZ3VhZ2VzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCI+SW50ZXJuYXRpb25hbGlzYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0xhbmd1YWdlRWRpdG9yLmh0bWwiPkxhbmd1YWdlRWRpdG9yPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiPlRpbWVab25lSGFuZGxpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0VkaXRUZW1wbGF0ZXMuaHRtbCI+RWRpdFRlbXBsYXRlczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TkFUIFBvcnQgU2V0dGluZ3M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Qb3J0U2V0dGluZ3MuaHRtbCI+UG9ydCBzZXR0aW5nczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+UGVyZm9ybWFuY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIj5KVk0gcGVyZm9ybWFuY2UgdHVuaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Vc2VyIEludGVyZmFjZTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCI+VGhlbWVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9EYXNoYm9hcmQuaHRtbCI+RGFzaGJvYXJkPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIj5XZWJjYW0gcmVzb2x1dGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIj5Sb29tIGxheW91dCBvcHRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Ib3RLZXlzLmh0bWwiPkhvdCBLZXlzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5DdXN0b21pemF0aW9uPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViYXBwTmFtZVBhdGguaHRtbCI+V2ViYXBwIG5hbWUvcGF0aDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTmF2aWdhdGlvbi5odG1sIj5OYXZpZ2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiPkNhbGVuZGFyIGFuZCB0aW1lem9uZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIj5DdXN0b20gcm9vbSB0eXBlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIj5DdXN0b20gY3R5cHQgbWVjaGFuaXNtPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIj5HZW5lcmFsIENvbmZpZ3VyYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlNlY3VyaXR5PC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUmVzdHJpY3RlZEFjY2Vzcy5odG1sIj5SZXN0cmljdGVkIEFjY2VzczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUlRNUFNBbmRIVFRQUy5odG1sIj5SVE1QUyBhbmQgSFRUUFM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNvbnZlcnRlcnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiPk9wZW5PZmZpY2UgQ29udmVydGVyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiPkZGTVBFRyBWZXJzaW9uIFN3aXRjaDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q2x1c3RlcmluZzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NsdXN0ZXJpbmcuaHRtbCI+Q2x1c3RlcmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TWlzYzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0dldFZlcnNpb25JbmZvLmh0bWwiPkdldCB2ZXJzaW9uIGluZm88L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAorICAgIDwvZGl2PgorICAgICAKKyAgICA8YnIvPgorICAgIAorICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJKaXJhIFBsdWdpbiBmb3IgT3Blbk1lZXRpbmdzIj48c3Ryb25nPkppcmEgUGx1Z2luIGZvciBPcGVuTWVldGluZ3M8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQlDdXJyZW50IERldmVsb3BtZW50IFNuYXBzaG90cyBmb3IgdGVzdGluZyBjYW4gYmUgZG93bmxvYWRlZCBmcm9tOg0KKwkJCQk8YSBocmVmPSJodHRwczovL3N2bi5hcGFjaGUub3JnL3JlcG9zL2FzZi9vcGVubWVldGluZ3MvYnJhbmNoZXMvamlyYS1wbHVnaW4vdGFyZ2V0L29wZW5tZWV0aW5ncy0xLjAtU05BUFNIT1QuamFyIj5oZXJlPC9hPg0KKwkJCQkuDQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iRmVhdHVyZXMiPjxzdHJvbmc+RmVhdHVyZXM8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlRoZSBwbHVnaW4gY29udGFpbnMgdGhlIGZvbGxvd2luZyBmZWF0dXJlczogPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPg0KKwkJCQk8bGk+Q3JlYXRlIHZpZGVvY29uZmVyZW5jZSByb29tcyB0aHJvdWdoIEppcmE6IDwvbGk+DQorCQkJCTxsaT4NCisJCQkJCTxvbD4NCisJCQkJCQk8bGk+SW50ZWdyYXRlZCB3aXRoIEppcmEgaXNzdWVzIDwvbGk+CQkJCQkJCQkJCQ0KKwkJCQkJCTxsaT5Db25maWd1cmFibGUgcm9vbSB0eXBlIDwvbGk+DQorCQkJCQk8L29sPg0KKwkJCQk8L2xpPg0KKwkJCTwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJEZW1vIHZpZGVvIj48c3Ryb25nPkRlbW8gdmlkZW88L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlRoZSBkZW1vIHZpZGVvIG9mIEppcmEgcGx1Z2luIHNob3cgeW91IHRoZSBwbHVnaW4gaW4gYWN0aW9uIDwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3Qgc3R5bGU9ImhlaWdodDogMzkwcHg7IHdpZHRoOiA2NDBweCI+DQorCQkJICAgICAgPHBhcmFtIG5hbWU9Im1vdmllIiB2YWx1ZT0iaHR0cDovL3d3dy55b3V0dWJlLmNvbS92L3hCZFlqLU9admxjP3ZlcnNpb249MyZhbXA7ZmVhdHVyZT1wbGF5ZXJfZGV0YWlscGFnZSIgLz4NCisJCQkgICAgICA8cGFyYW0gbmFtZT0iYWxsb3dGdWxsU2NyZWVuIiB2YWx1ZT0idHJ1ZSIgLz4NCisJCQkgICAgICA8cGFyYW0gbmFtZT0iYWxsb3dTY3JpcHRBY2Nlc3MiIHZhbHVlPSJhbHdheXMiIC8+DQorCQkJICAgICAgPGVtYmVkIHNyYz0iaHR0cDovL3d3dy55b3V0dWJlLmNvbS92L3hCZFlqLU9admxjP3ZlcnNpb249MyZhbXA7ZmVhdHVyZT1wbGF5ZXJfZGV0YWlscGFnZSIgdHlwZT0iYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giIGFsbG93ZnVsbHNjcmVlbj0idHJ1ZSIgYWxsb3dTY3JpcHRBY2Nlc3M9ImFsd2F5cyIgd2lkdGg9IjY0MCIgaGVpZ2h0PSIzNjAiIC8+DQorCQkgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPCEtLSBGT09URVIgLS0+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGhyIG5vc2hhZGU9Im5vc2hhZGUiIHNpemU9IjEiLz4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBhbGlnbj0iY2VudGVyIj48Zm9udCBjb2xvcj0iIzEyMzQ2NSIgc2l6ZT0iLTEiPjxlbT4KKyAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0ICYjMTY5OyAyMDAzLTIwMTMsIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorICAgICAgICAgICAgICAgICAgICA8L2VtPjwvZm9udD48L2Rpdj4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9ib2R5PgorICAgIDwvaHRtbD4KKzwhLS0gZW5kIHRoZSBwcm9jZXNzaW5nIC0tPgorCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCmRpZmYgLS1naXQgYS9kb2NzL0pvb21sYVBsdWdpbi5odG1sIGIvZG9jcy9Kb29tbGFQbHVnaW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODAwY2E2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9Kb29tbGFQbHVnaW4uaHRtbApAQCAtMCwwICsxLDc2MCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CisKKzwhLS0KK0NvcHlyaWdodCAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK3lvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCitodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworCis8IS0tIENvbnRlbnQgU3R5bGVzaGVldCBmb3IgU2l0ZSAtLT4KKworICAgICAgICAKKzwhLS0gc3RhcnQgdGhlIHByb2Nlc3NpbmcgLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDwhLS0gR0VORVJBVEVEIEZJTEUsIERPIE5PVCBFRElULCBFRElUIFRIRSBYTUwgRklMRSBJTiB4ZG9jcyBJTlNURUFEISAtLT4KKyAgICA8IS0tIE1haW4gUGFnZSBTZWN0aW9uIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8aHRtbD4KKyAgICAgICAgPGhlYWQ+CisgICAgICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIvPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSIKKwkJCU9wZW5NZWV0aW5ncyBUZWFtCisJCSI+CisgICAgICAgICAgICA8bWV0YSBuYW1lPSJlbWFpbCIgY29udGVudD0ic29sb21heEBhcGFjaGUub3JnIj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICA8dGl0bGU+QXBhY2hlIE9wZW5NZWV0aW5ncyAtIEpvb21sYSBQbHVnaW48L3RpdGxlPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL29wZW5tZWV0aW5ncy5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2pxdWVyeS11aS5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2NvaW4tc2xpZGVyLXN0eWxlcy5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2NvbG9yYm94LmNzcyIgLz4KKyAgICAgICAgICAgIAorCQkJPCEtLSBBZGQgalF1ZXJ5IGxpYnJhcnkgLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9qcXVlcnktMS43LjEubWluLmpzIj48L3NjcmlwdD4KKwkJCisJCQk8IS0tIEFkZCBjb2luc2xpZGVyIHBsdWdpbnMgLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9jb2luLXNsaWRlci5taW4uanMiPjwvc2NyaXB0PgorCQkJCisJCQk8IS0tIEFkZCBjb2xvcmJveCBwbHVnaW4gLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9qcXVlcnkuY29sb3Jib3guanMiPjwvc2NyaXB0PgorCQkKKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkuY29yZS5qcyI+PC9zY3JpcHQ+CisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLndpZGdldC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5hY2NvcmRpb24uanMiPjwvc2NyaXB0PgorCQkJCisJCQk8c2NyaXB0PgorCQkJJChmdW5jdGlvbigpIHsKKwkJCQkkKCAiI2FjY29yZGlvbiIgKS5hY2NvcmRpb24oeworCQkJCQlhdXRvSGVpZ2h0OiBmYWxzZSwKKwkJCQkJbmF2aWdhdGlvbjogdHJ1ZSwKKwkJCQkJbmF2aWdhdGlvbkZpbHRlcjogZnVuY3Rpb24gKCkgeworCQkJCQkJdmFyIHNpZGViYXJIcmVmQXJyYXkgPSB0aGlzLmhyZWYuc3BsaXQoIi8iKTsKKyAgICAJCQkJCXZhciBzaWRlQmFyTGFzdFN0cmluZyA9IHNpZGViYXJIcmVmQXJyYXlbc2lkZWJhckhyZWZBcnJheS5sZW5ndGggLSAxXS50b0xvd2VyQ2FzZSgpOworCQkJCQkJCisJCQkJCQlpZiAoc2lkZUJhckxhc3RTdHJpbmcuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJCQkJcmV0dXJuIGZhbHNlOworCQkJCQkJfQorCQkJCQkJCisJCQkJCQkJCQkJCQkvKiBkb2N1bWVudC5sb2NhdGlvbi5ocmVmICovCisJCQkJCQl2YXIgY3VycmVudFNlY3Rpb24gPSAiIjsKKwkJCQkJCQorCQkJCQkJdmFyIGN1cnJlbnRMb2NhdGlvbiA9ICIiOworCQkJCQkJdmFyIGN1cnJlbnRMaW5rID0gIiI7CisJCQkJCQlpZiAoZmFsc2UpIHsKKwkJCQkJCQorCQkJCQkJfQorICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9pbmRleC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9pbmRleC5odG1sIi5zdWJzdHIoMSwgIi9pbmRleC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2xpY2Vuc2UuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbGljZW5zZS5odG1sIi5zdWJzdHIoMSwgIi9saWNlbnNlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iLnN1YnN0cigxLCAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kb3dubG9hZHMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZG93bmxvYWRzLmh0bWwiLnN1YnN0cigxLCAiL2Rvd25sb2Fkcy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIuc3Vic3RyKDEsICIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luc3RhbGxhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9pbnN0YWxsYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvaW5zdGFsbGF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVXBncmFkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9VcGdyYWRlLmh0bWwiLnN1YnN0cigxLCAiL1VwZ3JhZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIi5zdWJzdHIoMSwgImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29tbWFuZExpbmVBZG1pbi5odG1sIi5zdWJzdHIoMSwgIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2dldC1pbnZvbHZlZC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2dldC1pbnZvbHZlZC5odG1sIi5zdWJzdHIoMSwgIi9nZXQtaW52b2x2ZWQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi90ZWFtLWxpc3QuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi90ZWFtLWxpc3QuaHRtbCIuc3Vic3RyKDEsICIvdGVhbS1saXN0Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbWFpbC1saXN0cy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL21haWwtbGlzdHMuaHRtbCIuc3Vic3RyKDEsICIvbWFpbC1saXN0cy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIuc3Vic3RyKDEsICJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvc3ZuLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9zdm4uaHRtbCIuc3Vic3RyKDEsICIvc3ZuLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIi5zdWJzdHIoMSwgImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZGVwZW5kZW5jaWVzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kZXBlbmRlbmNpZXMuaHRtbCIuc3Vic3RyKDEsICIvZGVwZW5kZW5jaWVzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiLnN1YnN0cigxLCAiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSlVuaXRUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9KVW5pdFRlc3RpbmcuaHRtbCIuc3Vic3RyKDEsICIvSlVuaXRUZXN0aW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTWFudWFsVGVzdGluZy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTWFudWFsVGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9NYW51YWxUZXN0aW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVsZWFzZUd1aWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZWxlYXNlR3VpZGUuaHRtbCIuc3Vic3RyKDEsICIvUmVsZWFzZUd1aWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2Vic2l0ZUd1aWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9XZWJzaXRlR3VpZGUuaHRtbCIuc3Vic3RyKDEsICIvV2Vic2l0ZUd1aWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1NvYXBSZXN0QVBJLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Tb2FwUmVzdEFQSS5odG1sIi5zdWJzdHIoMSwgIi9Tb2FwUmVzdEFQSS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RBUElTYW1wbGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1Jlc3RBUElTYW1wbGUuaHRtbCIuc3Vic3RyKDEsICIvUmVzdEFQSVNhbXBsZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0xkYXBBbmRBRFMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0xkYXBBbmRBRFMuaHRtbCIuc3Vic3RyKDEsICIvTGRhcEFuZEFEUy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0Vycm9yc1RhYmxlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9FcnJvcnNUYWJsZS5odG1sIi5zdWJzdHIoMSwgIi9FcnJvcnNUYWJsZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Nb29kbGVQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTW9vZGxlUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL01vb2RsZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Nha2FpUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1Nha2FpUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1Nha2FpUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSmlyYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9KaXJhUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0ppcmFQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Kb29tbGFQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSm9vbWxhUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0pvb21sYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0RydXBhbFBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9EcnVwYWxQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvRHJ1cGFsUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQml0cml4UGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0JpdHJpeFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9CaXRyaXhQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVkbWluZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZWRtaW5lUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1JlZG1pbmVQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9JQk1EQjJDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JQk1EQjJDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvSUJNREIyQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9PcmFjbGVDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9PcmFjbGVDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvT3JhY2xlQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NeVNRTENvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL015U1FMQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL015U1FMQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1Bvc3RncmVzQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL1Bvc3RncmVzQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0xhbmd1YWdlRWRpdG9yLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIuc3Vic3RyKDEsICIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiLnN1YnN0cigxLCAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0VkaXRUZW1wbGF0ZXMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9FZGl0VGVtcGxhdGVzLmh0bWwiLnN1YnN0cigxLCAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUG9ydFNldHRpbmdzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9ydFNldHRpbmdzLmh0bWwiLnN1YnN0cigxLCAiL1BvcnRTZXR0aW5ncy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiLnN1YnN0cigxLCAiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiLnN1YnN0cigxLCAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0Rhc2hib2FyZC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0Rhc2hib2FyZC5odG1sIi5zdWJzdHIoMSwgIi9EYXNoYm9hcmQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0hvdEtleXMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Ib3RLZXlzLmh0bWwiLnN1YnN0cigxLCAiL0hvdEtleXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViYXBwTmFtZVBhdGguaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJhcHBOYW1lUGF0aC5odG1sIi5zdWJzdHIoMSwgIi9XZWJhcHBOYW1lUGF0aC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTmF2aWdhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL05hdmlnYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvTmF2aWdhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIuc3Vic3RyKDEsICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIuc3Vic3RyKDEsICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIi5zdWJzdHIoMSwgIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SVE1QU0FuZEhUVFBTLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUlRNUFNBbmRIVFRQUy5odG1sIi5zdWJzdHIoMSwgIi9SVE1QU0FuZEhUVFBTLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiLnN1YnN0cigxLCAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiLnN1YnN0cigxLCAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ2x1c3RlcmluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NsdXN0ZXJpbmcuaHRtbCIuc3Vic3RyKDEsICIvQ2x1c3RlcmluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZXRWZXJzaW9uSW5mby5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dldFZlcnNpb25JbmZvLmh0bWwiLnN1YnN0cigxLCAiL0dldFZlcnNpb25JbmZvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCSAgICAJCQkJCQorICAgIAkJCQkJY3VycmVudExpbmsgPSBjdXJyZW50TGluay50b0xvd2VyQ2FzZSgpOworICAgIAkJCQkJY3VycmVudExvY2F0aW9uID0gY3VycmVudExvY2F0aW9uLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQkKKwkJCQkJCXJldHVybiBzaWRlQmFyTGFzdFN0cmluZyA9PSBjdXJyZW50TGluaysiIyIrY3VycmVudExvY2F0aW9uOworCQkJCQl9CisJCQkJfSk7CisJCQl9KTsKKwkJCTwvc2NyaXB0PgorCQkJCisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisJCQkJJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CisJCQkJCSQoJy5mYW5jeWJveC1idXR0b25zJykuY29sb3Jib3goe3JlbDonZmFuY3lib3gtYnV0dG9ucycsd2lkdGg6Ijc1JSIsIGhlaWdodDoiNzUlIn0pOworCQkJCQkkKCcjYWNjb3JkaW9uIGEnKS5lYWNoKGZ1bmN0aW9uKCkgeworCQkJCSAgICAgIHZhciBhID0gJCh0aGlzKTsKKwkJCQkgICAgICB2YXIgaHJlZiA9IGEuYXR0cigiaHJlZiIpOworCQkJCSAgICAgIGlmIChocmVmLmluZGV4T2YoIiMiKSA9PSAtMSkgeworCQkJCSAgICAgIAkgIHZhciBjb21wYXJlSXQgPSBocmVmLnN1YnN0cigyLCBocmVmLmxlbmd0aCk7CisJCQkJCSAgICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoY29tcGFyZUl0KSE9IC0xKSB7CisJCQkJCSAgICAgICBhLmFkZENsYXNzKCdhY3RpdmUnKTsKKwkJCQkJICAgICAgfQorCQkJCSAgICAgIH0KKwkJCQkgICAgfSk7CisJCQkJCSQoJyNjb2luLXNsaWRlcicpLmNvaW5zbGlkZXIoeyB3aWR0aDogNjQwLGhlaWdodDogNDAwLCBkZWxheTogNDAwMCAgfSk7CQkJCQkKKwkJCQl9KTsKKwkJCTwvc2NyaXB0PgkKKwkJCQkJCQorCQkJPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKwkJCQkuZmFuY3lib3gtY3VzdG9tIC5mYW5jeWJveC1vdXRlciB7CisJCQkJCWJveC1zaGFkb3c6IDAgMCA1MHB4ICMyMjI7CisJCQkJfQorCQkJPC9zdHlsZT4KKyAgICAgICAgPC9oZWFkPgorCisgICAgICAgIDxib2R5IGJnY29sb3I9IiNmZmZmZmYiIHRleHQ9IiMwMDAwMDAiIGxpbms9IiMxMjM0NjUiIHZsaW5rPSIjMTIzNDY1IiBhbGluaz0iIzAwMDAwMCI+ICAKKyAgICAgICAgCTxkaXYgY2xhc3M9Im1haW5ib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgCTxkaXYgY2xhc3M9InN1cGVyYm9keSIgc3R5bGU9IndpZHRoOiAxMDAlOyI+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiPgorICAgICAgICAgICAgICAgIDwhLS0gVE9QIElNQUdFIC0tPgorICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0Ij4KKzxhIGhyZWY9Imh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy8iPjxpbWcgc3JjPSIuL2ltYWdlcy9sb2dvLTIuanBnIiBhbHQ9IkFwYWNoZSBPcGVuTWVldGluZ3MiIGJvcmRlcj0iMCIvPjwvYT4KKzwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODAlIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIiA+CisJPGEgaHJlZj0iZGVtby5odG1sIj5EZW1vPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9ImRvd25sb2Fkcy5odG1sIiB0YXJnZXQ9Il9QQVJFTlQiPkRvd25sb2FkPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imluc3RhbGxhdGlvbi5odG1sIiB0YXJnZXQ9Il9QQVJFTlQiPkluc3RhbGxhdGlvbjwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUyIgdGFyZ2V0PSJfQkxBTksiPldpa2k8L2E+CisJPHNwYW4+Jm5ic3A7PC9zcGFuPgorPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iNCI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGhyIG5vc2hhZGU9Im5vc2hhZGUiIHNpemU9IjEiLz4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDwhLS0gTEVGVCBTSURFIE5BVklHQVRJT04gLS0+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCIgbm93cmFwPSJub3dyYXAiPgorCisgICAgICAgICAgICAgICAgICAgIDwhLS0gc3BlY2lhbCBBQ29uIExvZ28gLSBsZWF2ZSBoZXJlIGZvciBuZXh0IHRpbWUKKyAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL2FwYWNoZWNvbi5jb20vMjAwNS9VUy8iPgorICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHA6Ly9hcGFjaGUub3JnL2ltYWdlcy9hYzIwMDV1c19ibHVlXzEyNXgxMjUuanBnIiBoZWlnaHQ9IjEyNSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjEyNSIgYm9yZGVyPSIwIiBhbHQ9IkFwYWNoZUNvbiBVUyAyMDA1IiAvPgorICAgICAgICAgICAgICAgICAgICA8L2E+ICAtLT4KKworICAgICAgICAgICAgICAgICAgIDwhLS0gcmVndWxhciBtZW51IC0tPgorCisgICAgICAgICAgICAgICAgICAgIAorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDxkaXYgaWQ9ImFjY29yZGlvbiIgc3R5bGU9IndpZHRoOiAxMDAlIj4KKyAgICAKKyAgICAgICAgICAgIAk8aDM+PGEgaHJlZj0iI0dlbmVyYWwiPkdlbmVyYWw8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luZGV4Lmh0bWwiPkhvbWU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2xpY2Vuc2UuaHRtbCI+TGljZW5zZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iPkFTRjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZG93bmxvYWRzLmh0bWwiPkRvd25sb2FkczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiPkNvbW1lcmNpYWwgU3VwcG9ydDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI+SW5zdGFsbGF0aW9uIGFuZCBVcGdyYWRlPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9pbnN0YWxsYXRpb24uaHRtbCI+SW5zdGFsbGF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9VcGdyYWRlLmh0bWwiPlVwZ3JhZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiPlR1dG9yaWFsczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQ29tbWFuZExpbmVBZG1pbi5odG1sIj5Db21tYW5kIExpbmUgQWRtaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0NvbW11bml0eSI+Q29tbXVuaXR5PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9nZXQtaW52b2x2ZWQuaHRtbCI+R2V0IEludm9sdmVkPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi90ZWFtLWxpc3QuaHRtbCI+Q29tbWl0dGVyczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbWFpbC1saXN0cy5odG1sIj5NYWlsaW5nIExpc3RzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iPldpa2k8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0RldmVsb3BtZW50Ij5EZXZlbG9wbWVudDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vc3ZuLmh0bWwiPlNvdXJjZSBDb2RlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyI+QnVncyAvIElzc3VlcyAoSklSQSk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2RlcGVuZGVuY2llcy5odG1sIj5EZXBlbmRlbmNpZXM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiPkJ1aWxkIEluc3RydWN0aW9uczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSlVuaXRUZXN0aW5nLmh0bWwiPkpVbml0IFRlc3Rpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01hbnVhbFRlc3RpbmcuaHRtbCI+TWFudWFsIFRlc3Rpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1JlbGVhc2VHdWlkZS5odG1sIj5SZWxlYXNlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9XZWJzaXRlR3VpZGUuaHRtbCI+V2Vic2l0ZSBHdWlkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjSW50ZWdyYXRpb24iPkludGVncmF0aW9uPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Tb2FwUmVzdEFQSS5odG1sIj5TT0FQL1JFU1QgQVBJPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZXN0QVBJU2FtcGxlLmh0bWwiPlJFU1QgQVBJIFNhbXBsZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTGRhcEFuZEFEUy5odG1sIj5MZGFwIGFuZCBBRFM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiPlZvSVAgYW5kIFNJUDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vRXJyb3JzVGFibGUuaHRtbCI+RXJyb3JzIHRhYmxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNQbHVnaW5zIj5QbHVnaW5zPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Nb29kbGVQbHVnaW4uaHRtbCI+TW9vZGxlIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU2FrYWlQbHVnaW4uaHRtbCI+U2FrYWkgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KaXJhUGx1Z2luLmh0bWwiPkppcmEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Kb29tbGFQbHVnaW4uaHRtbCI+Sm9vbWxhIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vRHJ1cGFsUGx1Z2luLmh0bWwiPkRydXBhbCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0JpdHJpeFBsdWdpbi5odG1sIj5CaXRyaXggUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiPkNvbmZsdWVuY2UgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TdWdhckNSTVBsdWdpbi5odG1sIj5TdWdhckNSTSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1JlZG1pbmVQbHVnaW4uaHRtbCI+UmVkbWluZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0NvbmZpZ3VyYXRpb24iPkNvbmZpZ3VyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkRCIFNhbXBsZSBDb25maWd1cmF0aW9uczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiPkFwYWNoZSBEZXJieTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSUJNREIyQ29uZmlnLmh0bWwiPklCTSBEQjI8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL09yYWNsZUNvbmZpZy5odG1sIj5PcmFjbGU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL015U1FMQ29uZmlnLmh0bWwiPk15U1FMPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIj5Qb3N0Z3JlczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TG9jYWxpemF0aW9uIGFuZCBsYW5ndWFnZXM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIj5JbnRlcm5hdGlvbmFsaXNhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTGFuZ3VhZ2VFZGl0b3IuaHRtbCI+TGFuZ3VhZ2VFZGl0b3I8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1RpbWVab25lSGFuZGxpbmcuaHRtbCI+VGltZVpvbmVIYW5kbGluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRWRpdFRlbXBsYXRlcy5odG1sIj5FZGl0VGVtcGxhdGVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5OQVQgUG9ydCBTZXR0aW5nczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1BvcnRTZXR0aW5ncy5odG1sIj5Qb3J0IHNldHRpbmdzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5QZXJmb3JtYW5jZTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiPkpWTSBwZXJmb3JtYW5jZSB0dW5pbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlVzZXIgSW50ZXJmYWNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIj5UaGVtZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0Rhc2hib2FyZC5odG1sIj5EYXNoYm9hcmQ8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiPldlYmNhbSByZXNvbHV0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiPlJvb20gbGF5b3V0IG9wdGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0hvdEtleXMuaHRtbCI+SG90IEtleXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkN1c3RvbWl6YXRpb248L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9XZWJhcHBOYW1lUGF0aC5odG1sIj5XZWJhcHAgbmFtZS9wYXRoPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9OYXZpZ2F0aW9uLmh0bWwiPk5hdmlnYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCI+Q2FsZW5kYXIgYW5kIHRpbWV6b25lPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiPkN1c3RvbSByb29tIHR5cGU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiPkN1c3RvbSBjdHlwdCBtZWNoYW5pc208L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiPkdlbmVyYWwgQ29uZmlndXJhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+U2VjdXJpdHk8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiPlJlc3RyaWN0ZWQgQWNjZXNzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9SVE1QU0FuZEhUVFBTLmh0bWwiPlJUTVBTIGFuZCBIVFRQUzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q29udmVydGVyczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCI+T3Blbk9mZmljZSBDb252ZXJ0ZXI8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCI+RkZNUEVHIFZlcnNpb24gU3dpdGNoPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5DbHVzdGVyaW5nPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2x1c3RlcmluZy5odG1sIj5DbHVzdGVyaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5NaXNjPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2V0VmVyc2lvbkluZm8uaHRtbCI+R2V0IHZlcnNpb24gaW5mbzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCisgICAgPC9kaXY+CisgICAgIAorICAgIDxici8+CisgICAgCisgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODAlIiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkID48IS0tIGJnY29sb3I9IiNFRUVFRUUiIC0tPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0idmVyZGFuYSxhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9Ik9wZW5NZWV0aW5ncyBQbHVnaW4gZm9yIEpvb21sYSI+PHN0cm9uZz5PcGVuTWVldGluZ3MgUGx1Z2luIGZvciBKb29tbGE8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQlDdXJyZW50IERldmVsb3BtZW50IFNuYXBzaG90cyBmb3IgdGVzdGluZyBjYW4gYmUgY3JlYXRlZCBmcm9tIHRoZSBzb3VyY2VzOg0KKwkJCQk8YSBocmVmPSJodHRwczovL3N2bi5jb2Rlc3BvdC5jb20vYS9hcGFjaGUtZXh0cmFzLm9yZy9vcGVubWVldGluZ3Mtam9vbWxhLXBsdWdpbi90cnVuayI+aGVyZTwvYT4NCisJCQkJLg0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkID48IS0tIGJnY29sb3I9IiNFRUVFRUUiIC0tPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0idmVyZGFuYSxhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IkZlYXR1cmVzIj48c3Ryb25nPkZlYXR1cmVzPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5UaGUgcGx1Z2luIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgZmVhdHVyZXM6IDwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4NCisJCQkJPGxpPkNyZWF0ZSB2aWRlb2NvbmZlcmVuY2Ugcm9vbXMgZnJvbSBKb29tbGE6IDwvbGk+DQorCQkJCTxsaT4NCisJCQkJCTxvbD4NCisJCQkJCQk8bGk+Q3JlYXRlIHJvb21zPC9saT4JCQkJCQkJCQkJDQorCQkJCQkJPGxpPkVudGVyIHRoZSByb29tPC9saT4NCisJCQkJCTwvb2w+DQorCQkJCTwvbGk+DQorCQkJCTxsaT5BY2Nlc3MgcmVjb3JkaW5ncyBmcm9tIEpvb21sYTogPC9saT4NCisJCQkJPGxpPg0KKwkJCQkJPG9sPg0KKwkJCQkJCTxsaT5Eb3dubG9hZCByZWNvcmRpbmdzPC9saT4JCQkJCQkJCQkJDQorCQkJCQk8L29sPg0KKwkJCQk8L2xpPg0KKwkJCTwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJEZW1vIHZpZGVvIj48c3Ryb25nPkRlbW8gdmlkZW88L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorCQkJCTxiPk9wZW5NZWV0aW5ncyBKb29tbGEgUGx1Z2luIEluc3RhbGxhdGlvbjwvYj48YnIgLz4gICAgICAgICAgICAgIA0KKwkJCQk8b2JqZWN0IHN0eWxlPSJoZWlnaHQ6IDM2MHB4OyB3aWR0aDogNjQwcHgiPg0KKwkJCQkJPHBhcmFtIG5hbWU9Im1vdmllIiB2YWx1ZT0iaHR0cDovL3d3dy55b3V0dWJlLmNvbS92L2p0OGVqZ3RIYXZjP3ZlcnNpb249MyZhbXA7ZmVhdHVyZT1wbGF5ZXJfZGV0YWlscGFnZSIgLz4NCisJCQkJCTxwYXJhbSBuYW1lPSJhbGxvd0Z1bGxTY3JlZW4iIHZhbHVlPSJ0cnVlIiAvPg0KKwkJCQkJPHBhcmFtIG5hbWU9ImFsbG93U2NyaXB0QWNjZXNzIiB2YWx1ZT0iYWx3YXlzIiAvPg0KKwkJCQkJPGVtYmVkIHNyYz0iaHR0cDovL3d3dy55b3V0dWJlLmNvbS92L2p0OGVqZ3RIYXZjP3ZlcnNpb249MyZhbXA7ZmVhdHVyZT1wbGF5ZXJfZGV0YWlscGFnZSIgdHlwZT0iYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giIGFsbG93ZnVsbHNjcmVlbj0idHJ1ZSIgYWxsb3dTY3JpcHRBY2Nlc3M9ImFsd2F5cyIgd2lkdGg9IjY0MCIgaGVpZ2h0PSIzNjAiIC8+DQorCQkJCTwvb2JqZWN0PiANCisJCQk8L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisJCQkJPGI+T3Blbk1lZXRpbmdzIEludGVncmF0aW9uIHdpdGggSm9vbWxhPC9iPjxiciAvPiAgICAgICAgICAgICAgDQorCQkJCTxvYmplY3Qgc3R5bGU9ImhlaWdodDogMzYwcHg7IHdpZHRoOiA2NDBweCI+DQorCQkJCQk8cGFyYW0gbmFtZT0ibW92aWUiIHZhbHVlPSJodHRwOi8vd3d3LnlvdXR1YmUuY29tL3YvSDYxTjBwZkx1c0E/dmVyc2lvbj0zJmFtcDtmZWF0dXJlPXBsYXllcl9kZXRhaWxwYWdlIiAvPg0KKwkJCQkJPHBhcmFtIG5hbWU9ImFsbG93RnVsbFNjcmVlbiIgdmFsdWU9InRydWUiIC8+DQorCQkJCQk8cGFyYW0gbmFtZT0iYWxsb3dTY3JpcHRBY2Nlc3MiIHZhbHVlPSJhbHdheXMiIC8+DQorCQkJCQk8ZW1iZWQgc3JjPSJodHRwOi8vd3d3LnlvdXR1YmUuY29tL3YvSDYxTjBwZkx1c0E/dmVyc2lvbj0zJmFtcDtmZWF0dXJlPXBsYXllcl9kZXRhaWxwYWdlIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgYWxsb3dmdWxsc2NyZWVuPSJ0cnVlIiBhbGxvd1NjcmlwdEFjY2Vzcz0iYWx3YXlzIiB3aWR0aD0iNjQwIiBoZWlnaHQ9IjM2MCIgLz4NCisJCQkJPC9vYmplY3Q+IA0KKwkJCTwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8IS0tIEZPT1RFUiAtLT4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGFsaWduPSJjZW50ZXIiPjxmb250IGNvbG9yPSIjMTIzNDY1IiBzaXplPSItMSI+PGVtPgorICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgJiMxNjk7IDIwMDMtMjAxMywgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisgICAgICAgICAgICAgICAgICAgIDwvZW0+PC9mb250PjwvZGl2PgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2JvZHk+CisgICAgPC9odG1sPgorPCEtLSBlbmQgdGhlIHByb2Nlc3NpbmcgLS0+CisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKZGlmZiAtLWdpdCBhL2RvY3MvTGFuZ3VhZ2VFZGl0b3IuaHRtbCBiL2RvY3MvTGFuZ3VhZ2VFZGl0b3IuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzNjMWIyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9MYW5ndWFnZUVkaXRvci5odG1sCkBAIC0wLDAgKzEsNzIwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KKworPCEtLQorQ29weXJpZ2h0IDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KK0xpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKK2h0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCitVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCitkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCitTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCitsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorCisKKzwhLS0gQ29udGVudCBTdHlsZXNoZWV0IGZvciBTaXRlIC0tPgorCisgICAgICAgIAorPCEtLSBzdGFydCB0aGUgcHJvY2Vzc2luZyAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPCEtLSBHRU5FUkFURUQgRklMRSwgRE8gTk9UIEVESVQsIEVESVQgVEhFIFhNTCBGSUxFIElOIHhkb2NzIElOU1RFQUQhIC0tPgorICAgIDwhLS0gTWFpbiBQYWdlIFNlY3Rpb24gLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDxodG1sPgorICAgICAgICA8aGVhZD4KKyAgICAgICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ii8+CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9IgorCQkJT3Blbk1lZXRpbmdzIFRlYW0KKwkJIj4KKyAgICAgICAgICAgIDxtZXRhIG5hbWU9ImVtYWlsIiBjb250ZW50PSJzZWJhd2FnbmVyQGFwYWNoZS5vcmciPgorICAgICAgICAgICAgCisgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIDx0aXRsZT5BcGFjaGUgT3Blbk1lZXRpbmdzIC0gTGFuZ3VhZ2UgRWRpdG9yPC90aXRsZT4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9vcGVubWVldGluZ3MuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9qcXVlcnktdWkuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2luLXNsaWRlci1zdHlsZXMuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2xvcmJveC5jc3MiIC8+CisgICAgICAgICAgICAKKwkJCTwhLS0gQWRkIGpRdWVyeSBsaWJyYXJ5IC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LTEuNy4xLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPCEtLSBBZGQgY29pbnNsaWRlciBwbHVnaW5zIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvY29pbi1zbGlkZXIubWluLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPCEtLSBBZGQgY29sb3Jib3ggcGx1Z2luIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LmNvbG9yYm94LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmNvcmUuanMiPjwvc2NyaXB0PgorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS53aWRnZXQuanMiPjwvc2NyaXB0PgorCQkKKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkuYWNjb3JkaW9uLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdD4KKwkJCSQoZnVuY3Rpb24oKSB7CisJCQkJJCggIiNhY2NvcmRpb24iICkuYWNjb3JkaW9uKHsKKwkJCQkJYXV0b0hlaWdodDogZmFsc2UsCisJCQkJCW5hdmlnYXRpb246IHRydWUsCisJCQkJCW5hdmlnYXRpb25GaWx0ZXI6IGZ1bmN0aW9uICgpIHsKKwkJCQkJCXZhciBzaWRlYmFySHJlZkFycmF5ID0gdGhpcy5ocmVmLnNwbGl0KCIvIik7CisgICAgCQkJCQl2YXIgc2lkZUJhckxhc3RTdHJpbmcgPSBzaWRlYmFySHJlZkFycmF5W3NpZGViYXJIcmVmQXJyYXkubGVuZ3RoIC0gMV0udG9Mb3dlckNhc2UoKTsKKwkJCQkJCQorCQkJCQkJaWYgKHNpZGVCYXJMYXN0U3RyaW5nLmluZGV4T2YoIiMiKSA9PSAtMSkgeworCQkJCQkJCXJldHVybiBmYWxzZTsKKwkJCQkJCX0KKwkJCQkJCQorCQkJCQkJCQkJCQkJLyogZG9jdW1lbnQubG9jYXRpb24uaHJlZiAqLworCQkJCQkJdmFyIGN1cnJlbnRTZWN0aW9uID0gIiI7CisJCQkJCQkKKwkJCQkJCXZhciBjdXJyZW50TG9jYXRpb24gPSAiIjsKKwkJCQkJCXZhciBjdXJyZW50TGluayA9ICIiOworCQkJCQkJaWYgKGZhbHNlKSB7CisJCQkJCQkKKwkJCQkJCX0KKyAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5kZXguaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5kZXguaHRtbCIuc3Vic3RyKDEsICIvaW5kZXguaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9saWNlbnNlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2xpY2Vuc2UuaHRtbCIuc3Vic3RyKDEsICIvbGljZW5zZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5zdWJzdHIoMSwgImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZG93bmxvYWRzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2Rvd25sb2Fkcy5odG1sIi5zdWJzdHIoMSwgIi9kb3dubG9hZHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiLnN1YnN0cigxLCAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9pbnN0YWxsYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5zdGFsbGF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL2luc3RhbGxhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1VwZ3JhZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvVXBncmFkZS5odG1sIi5zdWJzdHIoMSwgIi9VcGdyYWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIuc3Vic3RyKDEsICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db21tYW5kTGluZUFkbWluLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIuc3Vic3RyKDEsICIvQ29tbWFuZExpbmVBZG1pbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9nZXQtaW52b2x2ZWQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9nZXQtaW52b2x2ZWQuaHRtbCIuc3Vic3RyKDEsICIvZ2V0LWludm9sdmVkLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGVhbS1saXN0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdGVhbS1saXN0Lmh0bWwiLnN1YnN0cigxLCAiL3RlYW0tbGlzdC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL21haWwtbGlzdHMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9tYWlsLWxpc3RzLmh0bWwiLnN1YnN0cigxLCAiL21haWwtbGlzdHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLnN1YnN0cigxLCAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3N2bi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvc3ZuLmh0bWwiLnN1YnN0cigxLCAiL3N2bi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIuc3Vic3RyKDEsICJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2RlcGVuZGVuY2llcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZGVwZW5kZW5jaWVzLmh0bWwiLnN1YnN0cigxLCAiL2RlcGVuZGVuY2llcy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pVbml0VGVzdGluZy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSlVuaXRUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL0pVbml0VGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01hbnVhbFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01hbnVhbFRlc3RpbmcuaHRtbCIuc3Vic3RyKDEsICIvTWFudWFsVGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlbGVhc2VHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVsZWFzZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1JlbGVhc2VHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYnNpdGVHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvV2Vic2l0ZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1dlYnNpdGVHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Tb2FwUmVzdEFQSS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU29hcFJlc3RBUEkuaHRtbCIuc3Vic3RyKDEsICIvU29hcFJlc3RBUEkuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZXN0QVBJU2FtcGxlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZXN0QVBJU2FtcGxlLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RBUElTYW1wbGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MZGFwQW5kQURTLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9MZGFwQW5kQURTLmh0bWwiLnN1YnN0cigxLCAiL0xkYXBBbmRBRFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FcnJvcnNUYWJsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRXJyb3JzVGFibGUuaHRtbCIuc3Vic3RyKDEsICIvRXJyb3JzVGFibGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTW9vZGxlUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01vb2RsZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Nb29kbGVQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TYWthaVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TYWthaVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TYWthaVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ppcmFQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSmlyYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9KaXJhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSm9vbWxhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pvb21sYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Kb29tbGFQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EcnVwYWxQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRHJ1cGFsUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0RydXBhbFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0JpdHJpeFBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CaXRyaXhQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvQml0cml4UGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TdWdhckNSTVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TdWdhckNSTVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TdWdhckNSTVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlZG1pbmVQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVkbWluZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9SZWRtaW5lUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSUJNREIyQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSUJNREIyQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL0lCTURCMkNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3JhY2xlQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3JhY2xlQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL09yYWNsZUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTXlTUUxDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9NeVNRTENvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9NeVNRTENvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUG9zdGdyZXNDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MYW5ndWFnZUVkaXRvci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLnN1YnN0cigxLCAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5zdWJzdHIoMSwgIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FZGl0VGVtcGxhdGVzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRWRpdFRlbXBsYXRlcy5odG1sIi5zdWJzdHIoMSwgIi9FZGl0VGVtcGxhdGVzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1BvcnRTZXR0aW5ncy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1BvcnRTZXR0aW5ncy5odG1sIi5zdWJzdHIoMSwgIi9Qb3J0U2V0dGluZ3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5zdWJzdHIoMSwgIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5zdWJzdHIoMSwgIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EYXNoYm9hcmQuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9EYXNoYm9hcmQuaHRtbCIuc3Vic3RyKDEsICIvRGFzaGJvYXJkLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLnN1YnN0cigxLCAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Ib3RLZXlzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSG90S2V5cy5odG1sIi5zdWJzdHIoMSwgIi9Ib3RLZXlzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYmFwcE5hbWVQYXRoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvV2ViYXBwTmFtZVBhdGguaHRtbCIuc3Vic3RyKDEsICIvV2ViYXBwTmFtZVBhdGguaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL05hdmlnYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9OYXZpZ2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL05hdmlnYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLnN1YnN0cigxLCAiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIuc3Vic3RyKDEsICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIuc3Vic3RyKDEsICIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUlRNUFNBbmRIVFRQUy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1JUTVBTQW5kSFRUUFMuaHRtbCIuc3Vic3RyKDEsICIvUlRNUFNBbmRIVFRQUy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5zdWJzdHIoMSwgIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5zdWJzdHIoMSwgIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NsdXN0ZXJpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DbHVzdGVyaW5nLmh0bWwiLnN1YnN0cigxLCAiL0NsdXN0ZXJpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvR2V0VmVyc2lvbkluZm8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9HZXRWZXJzaW9uSW5mby5odG1sIi5zdWJzdHIoMSwgIi9HZXRWZXJzaW9uSW5mby5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkgICAgCQkJCQkKKyAgICAJCQkJCWN1cnJlbnRMaW5rID0gY3VycmVudExpbmsudG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCWN1cnJlbnRMb2NhdGlvbiA9IGN1cnJlbnRMb2NhdGlvbi50b0xvd2VyQ2FzZSgpOworICAgIAkJCQkJCisJCQkJCQlyZXR1cm4gc2lkZUJhckxhc3RTdHJpbmcgPT0gY3VycmVudExpbmsrIiMiK2N1cnJlbnRMb2NhdGlvbjsKKwkJCQkJfQorCQkJCX0pOworCQkJfSk7CisJCQk8L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCQkJCSQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgeworCQkJCQkkKCcuZmFuY3lib3gtYnV0dG9ucycpLmNvbG9yYm94KHtyZWw6J2ZhbmN5Ym94LWJ1dHRvbnMnLHdpZHRoOiI3NSUiLCBoZWlnaHQ6Ijc1JSJ9KTsKKwkJCQkJJCgnI2FjY29yZGlvbiBhJykuZWFjaChmdW5jdGlvbigpIHsKKwkJCQkgICAgICB2YXIgYSA9ICQodGhpcyk7CisJCQkJICAgICAgdmFyIGhyZWYgPSBhLmF0dHIoImhyZWYiKTsKKwkJCQkgICAgICBpZiAoaHJlZi5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkgICAgICAJICB2YXIgY29tcGFyZUl0ID0gaHJlZi5zdWJzdHIoMiwgaHJlZi5sZW5ndGgpOworCQkJCQkgICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKGNvbXBhcmVJdCkhPSAtMSkgeworCQkJCQkgICAgICAgYS5hZGRDbGFzcygnYWN0aXZlJyk7CisJCQkJCSAgICAgIH0KKwkJCQkgICAgICB9CisJCQkJICAgIH0pOworCQkJCQkkKCcjY29pbi1zbGlkZXInKS5jb2luc2xpZGVyKHsgd2lkdGg6IDY0MCxoZWlnaHQ6IDQwMCwgZGVsYXk6IDQwMDAgIH0pOwkJCQkJCisJCQkJfSk7CisJCQk8L3NjcmlwdD4JCisJCQkJCQkKKwkJCTxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisJCQkJLmZhbmN5Ym94LWN1c3RvbSAuZmFuY3lib3gtb3V0ZXIgeworCQkJCQlib3gtc2hhZG93OiAwIDAgNTBweCAjMjIyOworCQkJCX0KKwkJCTwvc3R5bGU+CisgICAgICAgIDwvaGVhZD4KKworICAgICAgICA8Ym9keSBiZ2NvbG9yPSIjZmZmZmZmIiB0ZXh0PSIjMDAwMDAwIiBsaW5rPSIjMTIzNDY1IiB2bGluaz0iIzEyMzQ2NSIgYWxpbms9IiMwMDAwMDAiPiAgCisgICAgICAgIAk8ZGl2IGNsYXNzPSJtYWluYm9keSIgc3R5bGU9IndpZHRoOiAxMDAlOyI+CisgICAgICAgIAk8ZGl2IGNsYXNzPSJzdXBlcmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIj4KKyAgICAgICAgICAgICAgICA8IS0tIFRPUCBJTUFHRSAtLT4KKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCI+Cis8YSBocmVmPSJodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvIj48aW1nIHNyYz0iLi9pbWFnZXMvbG9nby0yLmpwZyIgYWx0PSJBcGFjaGUgT3Blbk1lZXRpbmdzIiBib3JkZXI9IjAiLz48L2E+Cis8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCIgPgorCTxhIGhyZWY9ImRlbW8uaHRtbCI+RGVtbzwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJkb3dubG9hZHMuaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5Eb3dubG9hZDwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJpbnN0YWxsYXRpb24uaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5JbnN0YWxsYXRpb248L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MiIHRhcmdldD0iX0JMQU5LIj5XaWtpPC9hPgorCTxzcGFuPiZuYnNwOzwvc3Bhbj4KKzwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjQiPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8IS0tIExFRlQgU0lERSBOQVZJR0FUSU9OIC0tPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiIG5vd3JhcD0ibm93cmFwIj4KKworICAgICAgICAgICAgICAgICAgICA8IS0tIHNwZWNpYWwgQUNvbiBMb2dvIC0gbGVhdmUgaGVyZSBmb3IgbmV4dCB0aW1lCisgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9hcGFjaGVjb24uY29tLzIwMDUvVVMvIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vYXBhY2hlLm9yZy9pbWFnZXMvYWMyMDA1dXNfYmx1ZV8xMjV4MTI1LmpwZyIgaGVpZ2h0PSIxMjUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPSIxMjUiIGJvcmRlcj0iMCIgYWx0PSJBcGFjaGVDb24gVVMgMjAwNSIgLz4KKyAgICAgICAgICAgICAgICAgICAgPC9hPiAgLS0+CisKKyAgICAgICAgICAgICAgICAgICA8IS0tIHJlZ3VsYXIgbWVudSAtLT4KKworICAgICAgICAgICAgICAgICAgICAKKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8ZGl2IGlkPSJhY2NvcmRpb24iIHN0eWxlPSJ3aWR0aDogMTAwJSI+CisgICAgCisgICAgICAgICAgICAJPGgzPjxhIGhyZWY9IiNHZW5lcmFsIj5HZW5lcmFsPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9pbmRleC5odG1sIj5Ib21lPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9saWNlbnNlLmh0bWwiPkxpY2Vuc2U8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5BU0Y8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2Rvd25sb2Fkcy5odG1sIj5Eb3dubG9hZHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIj5Db21tZXJjaWFsIFN1cHBvcnQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0luc3RhbGxhdGlvbmFuZFVwZ3JhZGUiPkluc3RhbGxhdGlvbiBhbmQgVXBncmFkZTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5zdGFsbGF0aW9uLmh0bWwiPkluc3RhbGxhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vVXBncmFkZS5odG1sIj5VcGdyYWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLmh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIj5UdXRvcmlhbHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCI+Q29tbWFuZCBMaW5lIEFkbWluPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb21tdW5pdHkiPkNvbW11bml0eTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZ2V0LWludm9sdmVkLmh0bWwiPkdldCBJbnZvbHZlZDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdGVhbS1saXN0Lmh0bWwiPkNvbW1pdHRlcnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL21haWwtbGlzdHMuaHRtbCI+TWFpbGluZyBMaXN0czwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIj5XaWtpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNEZXZlbG9wbWVudCI+RGV2ZWxvcG1lbnQ8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3N2bi5odG1sIj5Tb3VyY2UgQ29kZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiPkJ1Z3MgLyBJc3N1ZXMgKEpJUkEpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kZXBlbmRlbmNpZXMuaHRtbCI+RGVwZW5kZW5jaWVzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CdWlsZEluc3RydWN0aW9ucy5odG1sIj5CdWlsZCBJbnN0cnVjdGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pVbml0VGVzdGluZy5odG1sIj5KVW5pdCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9NYW51YWxUZXN0aW5nLmh0bWwiPk1hbnVhbCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWxlYXNlR3VpZGUuaHRtbCI+UmVsZWFzZSBHdWlkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vV2Vic2l0ZUd1aWRlLmh0bWwiPldlYnNpdGUgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0ludGVncmF0aW9uIj5JbnRlZ3JhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU29hcFJlc3RBUEkuaHRtbCI+U09BUC9SRVNUIEFQSTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVzdEFQSVNhbXBsZS5odG1sIj5SRVNUIEFQSSBTYW1wbGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0xkYXBBbmRBRFMuaHRtbCI+TGRhcCBhbmQgQURTPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIj5Wb0lQIGFuZCBTSVA8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0Vycm9yc1RhYmxlLmh0bWwiPkVycm9ycyB0YWJsZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjUGx1Z2lucyI+UGx1Z2luczwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTW9vZGxlUGx1Z2luLmh0bWwiPk1vb2RsZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Nha2FpUGx1Z2luLmh0bWwiPlNha2FpIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSmlyYVBsdWdpbi5odG1sIj5KaXJhIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSm9vbWxhUGx1Z2luLmh0bWwiPkpvb21sYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0RydXBhbFBsdWdpbi5odG1sIj5EcnVwYWwgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CaXRyaXhQbHVnaW4uaHRtbCI+Qml0cml4IFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQ29uZmx1ZW5jZVBsdWdpbi5odG1sIj5Db25mbHVlbmNlIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU3VnYXJDUk1QbHVnaW4uaHRtbCI+U3VnYXJDUk0gUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWRtaW5lUGx1Z2luLmh0bWwiPlJlZG1pbmUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb25maWd1cmF0aW9uIj5Db25maWd1cmF0aW9uPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5EQiBTYW1wbGUgQ29uZmlndXJhdGlvbnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIj5BcGFjaGUgRGVyYnk8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0lCTURCMkNvbmZpZy5odG1sIj5JQk0gREIyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcmFjbGVDb25maWcuaHRtbCI+T3JhY2xlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9NeVNRTENvbmZpZy5odG1sIj5NeVNRTDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9zdGdyZXNDb25maWcuaHRtbCI+UG9zdGdyZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkxvY2FsaXphdGlvbiBhbmQgbGFuZ3VhZ2VzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCI+SW50ZXJuYXRpb25hbGlzYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0xhbmd1YWdlRWRpdG9yLmh0bWwiPkxhbmd1YWdlRWRpdG9yPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiPlRpbWVab25lSGFuZGxpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0VkaXRUZW1wbGF0ZXMuaHRtbCI+RWRpdFRlbXBsYXRlczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TkFUIFBvcnQgU2V0dGluZ3M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Qb3J0U2V0dGluZ3MuaHRtbCI+UG9ydCBzZXR0aW5nczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+UGVyZm9ybWFuY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIj5KVk0gcGVyZm9ybWFuY2UgdHVuaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Vc2VyIEludGVyZmFjZTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCI+VGhlbWVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9EYXNoYm9hcmQuaHRtbCI+RGFzaGJvYXJkPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIj5XZWJjYW0gcmVzb2x1dGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIj5Sb29tIGxheW91dCBvcHRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Ib3RLZXlzLmh0bWwiPkhvdCBLZXlzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5DdXN0b21pemF0aW9uPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViYXBwTmFtZVBhdGguaHRtbCI+V2ViYXBwIG5hbWUvcGF0aDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTmF2aWdhdGlvbi5odG1sIj5OYXZpZ2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiPkNhbGVuZGFyIGFuZCB0aW1lem9uZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIj5DdXN0b20gcm9vbSB0eXBlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIj5DdXN0b20gY3R5cHQgbWVjaGFuaXNtPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIj5HZW5lcmFsIENvbmZpZ3VyYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlNlY3VyaXR5PC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUmVzdHJpY3RlZEFjY2Vzcy5odG1sIj5SZXN0cmljdGVkIEFjY2VzczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUlRNUFNBbmRIVFRQUy5odG1sIj5SVE1QUyBhbmQgSFRUUFM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNvbnZlcnRlcnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiPk9wZW5PZmZpY2UgQ29udmVydGVyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiPkZGTVBFRyBWZXJzaW9uIFN3aXRjaDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q2x1c3RlcmluZzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NsdXN0ZXJpbmcuaHRtbCI+Q2x1c3RlcmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TWlzYzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0dldFZlcnNpb25JbmZvLmh0bWwiPkdldCB2ZXJzaW9uIGluZm88L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAorICAgIDwvZGl2PgorICAgICAKKyAgICA8YnIvPgorICAgIAorICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJMYW5ndWFnZSBFZGl0b3IiPjxzdHJvbmc+TGFuZ3VhZ2UgRWRpdG9yPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5GZWF0dXJlczo8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+DQorCQkJCTxsaT5lZGl0IHRoZSBsYWJlbHMgb2YgYW55IGxhbmd1YWdlLCBjaGFuZ2VzIHdpbGwgdGFrZSBlZmZlY3QgYXMNCisJCQkJCXNvb24gYXMgeW91IHJlLWxvZ2luDQorCQkJCTwvbGk+DQorCQkJCTxsaT5hZGQgbmV3IGxhbmd1YWdlcyAoZm9yIGV4YW1wbGUgdG8gZml0IHlvdXIgY28tb3BlcmF0aXZlIGRlc2lnbg0KKwkJCQkJYW5kIGxhbmd1YWdlIG9mIHlvdXIgY29tcGFueSkNCisJCQkJPC9saT4NCisJCQkJPGxpPmV4cG9ydCB0aGUgbGFuZ3VhZ2UtZmlsZXMgdG8gYW4gWE1MIEZpbGUgKHRoZXNlIGxhbmd1YWdlIEZpbGVzDQorCQkJCQljYW4gYmUgdXNlZCBmb3IgeW91ciBuZXh0IGluc3RhbGxhdGlvbiBvciBhcyBjb250cmlidXRpb24gdG8gdGhlDQorCQkJCQlwcm9qZWN0KQ0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+DQorCQkJCQlpbXBvcnQgb2YgbGFuZ3VhZ2UgZmlsZXMgKA0KKwkJCQkJPGk+eW91IHNob3VsZCByZXN0YXJ0IHRoZSBzZXJ2ZXIgaWYgeW91IGZhY2UgcHJvYmxlbXMsIGFzIHRoZQ0KKwkJCQkJCWRhdGFiYXNlIGNhY2hlIG1pZ2h0IGJlIGludmFsaWQNCisJCQkJCTwvaT4NCisJCQkJCSkNCisJCQkJPC9saT4NCisJCQk8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+U2NyZWVuIGZyb20gdGhlIEFkbWluaXN0cmF0aW9uIFBhbmVsOiA8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJPGEgY2xhc3M9ImZhbmN5Ym94LWJ1dHRvbnMiIGhyZWY9ImltYWdlcy9sYW5nZWRpdG9yX3NjcmVlbl92Mi5wbmciPg0KKwkJCQkJPGltZyBzcmM9ImltYWdlcy9sYW5nZWRpdG9yX3NjcmVlbl92Mi5wbmciIGFsdD0iIiB3aWR0aD0iNDc1IiBoZWlnaHQ9IjMyNCIgLz4NCisJCQkJPC9hPg0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPCEtLSBGT09URVIgLS0+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGhyIG5vc2hhZGU9Im5vc2hhZGUiIHNpemU9IjEiLz4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBhbGlnbj0iY2VudGVyIj48Zm9udCBjb2xvcj0iIzEyMzQ2NSIgc2l6ZT0iLTEiPjxlbT4KKyAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0ICYjMTY5OyAyMDAzLTIwMTMsIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorICAgICAgICAgICAgICAgICAgICA8L2VtPjwvZm9udD48L2Rpdj4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9ib2R5PgorICAgIDwvaHRtbD4KKzwhLS0gZW5kIHRoZSBwcm9jZXNzaW5nIC0tPgorCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCmRpZmYgLS1naXQgYS9kb2NzL0xkYXBBbmRBRFMuaHRtbCBiL2RvY3MvTGRhcEFuZEFEUy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4YjBhMTQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL0xkYXBBbmRBRFMuaHRtbApAQCAtMCwwICsxLDcxOSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CisKKzwhLS0KK0NvcHlyaWdodCAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK3lvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCitodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworCis8IS0tIENvbnRlbnQgU3R5bGVzaGVldCBmb3IgU2l0ZSAtLT4KKworICAgICAgICAKKzwhLS0gc3RhcnQgdGhlIHByb2Nlc3NpbmcgLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDwhLS0gR0VORVJBVEVEIEZJTEUsIERPIE5PVCBFRElULCBFRElUIFRIRSBYTUwgRklMRSBJTiB4ZG9jcyBJTlNURUFEISAtLT4KKyAgICA8IS0tIE1haW4gUGFnZSBTZWN0aW9uIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8aHRtbD4KKyAgICAgICAgPGhlYWQ+CisgICAgICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIvPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSIKKwkJCVNlYmFzdGlhbiBXYWduZXIKKwkJIj4KKyAgICAgICAgICAgIDxtZXRhIG5hbWU9ImVtYWlsIiBjb250ZW50PSJzZWJhd2FnbmVyQGFwYWNoZS5vcmciPgorICAgICAgICAgICAgCisgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIDx0aXRsZT5BcGFjaGUgT3Blbk1lZXRpbmdzIC0gSG9tZTwvdGl0bGU+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3Mvb3Blbm1lZXRpbmdzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvanF1ZXJ5LXVpLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29pbi1zbGlkZXItc3R5bGVzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29sb3Jib3guY3NzIiAvPgorICAgICAgICAgICAgCisJCQk8IS0tIEFkZCBqUXVlcnkgbGlicmFyeSAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS0xLjcuMS5taW4uanMiPjwvc2NyaXB0PgorCQkKKwkJCTwhLS0gQWRkIGNvaW5zbGlkZXIgcGx1Z2lucyAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2NvaW4tc2xpZGVyLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTwhLS0gQWRkIGNvbG9yYm94IHBsdWdpbiAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS5jb2xvcmJveC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5jb3JlLmpzIj48L3NjcmlwdD4KKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkud2lkZ2V0LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmFjY29yZGlvbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQ+CisJCQkkKGZ1bmN0aW9uKCkgeworCQkJCSQoICIjYWNjb3JkaW9uIiApLmFjY29yZGlvbih7CisJCQkJCWF1dG9IZWlnaHQ6IGZhbHNlLAorCQkJCQluYXZpZ2F0aW9uOiB0cnVlLAorCQkJCQluYXZpZ2F0aW9uRmlsdGVyOiBmdW5jdGlvbiAoKSB7CisJCQkJCQl2YXIgc2lkZWJhckhyZWZBcnJheSA9IHRoaXMuaHJlZi5zcGxpdCgiLyIpOworICAgIAkJCQkJdmFyIHNpZGVCYXJMYXN0U3RyaW5nID0gc2lkZWJhckhyZWZBcnJheVtzaWRlYmFySHJlZkFycmF5Lmxlbmd0aCAtIDFdLnRvTG93ZXJDYXNlKCk7CisJCQkJCQkKKwkJCQkJCWlmIChzaWRlQmFyTGFzdFN0cmluZy5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJCQl9CisJCQkJCQkKKwkJCQkJCQkJCQkJCS8qIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgKi8KKwkJCQkJCXZhciBjdXJyZW50U2VjdGlvbiA9ICIiOworCQkJCQkJCisJCQkJCQl2YXIgY3VycmVudExvY2F0aW9uID0gIiI7CisJCQkJCQl2YXIgY3VycmVudExpbmsgPSAiIjsKKwkJCQkJCWlmIChmYWxzZSkgeworCQkJCQkJCisJCQkJCQl9CisgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luZGV4Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luZGV4Lmh0bWwiLnN1YnN0cigxLCAiL2luZGV4Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbGljZW5zZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9saWNlbnNlLmh0bWwiLnN1YnN0cigxLCAiL2xpY2Vuc2UuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIuc3Vic3RyKDEsICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2Rvd25sb2Fkcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kb3dubG9hZHMuaHRtbCIuc3Vic3RyKDEsICIvZG93bmxvYWRzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5zdWJzdHIoMSwgIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5zdGFsbGF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luc3RhbGxhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9pbnN0YWxsYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9VcGdyYWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1VwZ3JhZGUuaHRtbCIuc3Vic3RyKDEsICIvVXBncmFkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLnN1YnN0cigxLCAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29tbWFuZExpbmVBZG1pbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLnN1YnN0cigxLCAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZ2V0LWludm9sdmVkLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZ2V0LWludm9sdmVkLmh0bWwiLnN1YnN0cigxLCAiL2dldC1pbnZvbHZlZC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RlYW0tbGlzdC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3RlYW0tbGlzdC5odG1sIi5zdWJzdHIoMSwgIi90ZWFtLWxpc3QuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9tYWlsLWxpc3RzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbWFpbC1saXN0cy5odG1sIi5zdWJzdHIoMSwgIi9tYWlsLWxpc3RzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5zdWJzdHIoMSwgImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9zdm4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3N2bi5odG1sIi5zdWJzdHIoMSwgIi9zdm4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLnN1YnN0cigxLCAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kZXBlbmRlbmNpZXMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2RlcGVuZGVuY2llcy5odG1sIi5zdWJzdHIoMSwgIi9kZXBlbmRlbmNpZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVW5pdFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pVbml0VGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9KVW5pdFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NYW51YWxUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9NYW51YWxUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL01hbnVhbFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWxlYXNlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlbGVhc2VHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9SZWxlYXNlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJzaXRlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1dlYnNpdGVHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9XZWJzaXRlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU29hcFJlc3RBUEkuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1NvYXBSZXN0QVBJLmh0bWwiLnN1YnN0cigxLCAiL1NvYXBSZXN0QVBJLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdEFQSVNhbXBsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVzdEFQSVNhbXBsZS5odG1sIi5zdWJzdHIoMSwgIi9SZXN0QVBJU2FtcGxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGRhcEFuZEFEUy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTGRhcEFuZEFEUy5odG1sIi5zdWJzdHIoMSwgIi9MZGFwQW5kQURTLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRXJyb3JzVGFibGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0Vycm9yc1RhYmxlLmh0bWwiLnN1YnN0cigxLCAiL0Vycm9yc1RhYmxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01vb2RsZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Nb29kbGVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvTW9vZGxlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU2FrYWlQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU2FrYWlQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU2FrYWlQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KaXJhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0ppcmFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSmlyYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pvb21sYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Kb29tbGFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSm9vbWxhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRHJ1cGFsUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0RydXBhbFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9EcnVwYWxQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CaXRyaXhQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQml0cml4UGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0JpdHJpeFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU3VnYXJDUk1QbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWRtaW5lUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlZG1pbmVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvUmVkbWluZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0lCTURCMkNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0lCTURCMkNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9JQk1EQjJDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09yYWNsZUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09yYWNsZUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9PcmFjbGVDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL015U1FMQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTXlTUUxDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvTXlTUUxDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Bvc3RncmVzQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9zdGdyZXNDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvUG9zdGdyZXNDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9MYW5ndWFnZUVkaXRvci5odG1sIi5zdWJzdHIoMSwgIi9MYW5ndWFnZUVkaXRvci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVGltZVpvbmVIYW5kbGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIuc3Vic3RyKDEsICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRWRpdFRlbXBsYXRlcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIuc3Vic3RyKDEsICIvRWRpdFRlbXBsYXRlcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3J0U2V0dGluZ3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3J0U2V0dGluZ3MuaHRtbCIuc3Vic3RyKDEsICIvUG9ydFNldHRpbmdzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIuc3Vic3RyKDEsICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIuc3Vic3RyKDEsICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRGFzaGJvYXJkLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRGFzaGJvYXJkLmh0bWwiLnN1YnN0cigxLCAiL0Rhc2hib2FyZC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSG90S2V5cy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0hvdEtleXMuaHRtbCIuc3Vic3RyKDEsICIvSG90S2V5cy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJhcHBOYW1lUGF0aC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLnN1YnN0cigxLCAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9OYXZpZ2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTmF2aWdhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9OYXZpZ2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5zdWJzdHIoMSwgIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JUTVBTQW5kSFRUUFMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SVE1QU0FuZEhUVFBTLmh0bWwiLnN1YnN0cigxLCAiL1JUTVBTQW5kSFRUUFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIuc3Vic3RyKDEsICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIuc3Vic3RyKDEsICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DbHVzdGVyaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2x1c3RlcmluZy5odG1sIi5zdWJzdHIoMSwgIi9DbHVzdGVyaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dldFZlcnNpb25JbmZvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2V0VmVyc2lvbkluZm8uaHRtbCIuc3Vic3RyKDEsICIvR2V0VmVyc2lvbkluZm8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJICAgIAkJCQkJCisgICAgCQkJCQljdXJyZW50TGluayA9IGN1cnJlbnRMaW5rLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQljdXJyZW50TG9jYXRpb24gPSBjdXJyZW50TG9jYXRpb24udG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCQorCQkJCQkJcmV0dXJuIHNpZGVCYXJMYXN0U3RyaW5nID09IGN1cnJlbnRMaW5rKyIjIitjdXJyZW50TG9jYXRpb247CisJCQkJCX0KKwkJCQl9KTsKKwkJCX0pOworCQkJPC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwkJCQkkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsKKwkJCQkJJCgnLmZhbmN5Ym94LWJ1dHRvbnMnKS5jb2xvcmJveCh7cmVsOidmYW5jeWJveC1idXR0b25zJyx3aWR0aDoiNzUlIiwgaGVpZ2h0OiI3NSUifSk7CisJCQkJCSQoJyNhY2NvcmRpb24gYScpLmVhY2goZnVuY3Rpb24oKSB7CisJCQkJICAgICAgdmFyIGEgPSAkKHRoaXMpOworCQkJCSAgICAgIHZhciBocmVmID0gYS5hdHRyKCJocmVmIik7CisJCQkJICAgICAgaWYgKGhyZWYuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJICAgICAgCSAgdmFyIGNvbXBhcmVJdCA9IGhyZWYuc3Vic3RyKDIsIGhyZWYubGVuZ3RoKTsKKwkJCQkJICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZihjb21wYXJlSXQpIT0gLTEpIHsKKwkJCQkJICAgICAgIGEuYWRkQ2xhc3MoJ2FjdGl2ZScpOworCQkJCQkgICAgICB9CisJCQkJICAgICAgfQorCQkJCSAgICB9KTsKKwkJCQkJJCgnI2NvaW4tc2xpZGVyJykuY29pbnNsaWRlcih7IHdpZHRoOiA2NDAsaGVpZ2h0OiA0MDAsIGRlbGF5OiA0MDAwICB9KTsJCQkJCQorCQkJCX0pOworCQkJPC9zY3JpcHQ+CQorCQkJCQkJCisJCQk8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorCQkJCS5mYW5jeWJveC1jdXN0b20gLmZhbmN5Ym94LW91dGVyIHsKKwkJCQkJYm94LXNoYWRvdzogMCAwIDUwcHggIzIyMjsKKwkJCQl9CisJCQk8L3N0eWxlPgorICAgICAgICA8L2hlYWQ+CisKKyAgICAgICAgPGJvZHkgYmdjb2xvcj0iI2ZmZmZmZiIgdGV4dD0iIzAwMDAwMCIgbGluaz0iIzEyMzQ2NSIgdmxpbms9IiMxMjM0NjUiIGFsaW5rPSIjMDAwMDAwIj4gIAorICAgICAgICAJPGRpdiBjbGFzcz0ibWFpbmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAJPGRpdiBjbGFzcz0ic3VwZXJib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCI+CisgICAgICAgICAgICAgICAgPCEtLSBUT1AgSU1BR0UgLS0+CisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPgorPGEgaHJlZj0iaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnLyI+PGltZyBzcmM9Ii4vaW1hZ2VzL2xvZ28tMi5qcGciIGFsdD0iQXBhY2hlIE9wZW5NZWV0aW5ncyIgYm9yZGVyPSIwIi8+PC9hPgorPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiID4KKwk8YSBocmVmPSJkZW1vLmh0bWwiPkRlbW88L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iZG93bmxvYWRzLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+RG93bmxvYWQ8L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaW5zdGFsbGF0aW9uLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+SW5zdGFsbGF0aW9uPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTIiB0YXJnZXQ9Il9CTEFOSyI+V2lraTwvYT4KKwk8c3Bhbj4mbmJzcDs8L3NwYW4+Cis8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSI0Ij4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPCEtLSBMRUZUIFNJREUgTkFWSUdBVElPTiAtLT4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIiBub3dyYXA9Im5vd3JhcCI+CisKKyAgICAgICAgICAgICAgICAgICAgPCEtLSBzcGVjaWFsIEFDb24gTG9nbyAtIGxlYXZlIGhlcmUgZm9yIG5leHQgdGltZQorICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vYXBhY2hlY29uLmNvbS8yMDA1L1VTLyI+CisgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2FwYWNoZS5vcmcvaW1hZ2VzL2FjMjAwNXVzX2JsdWVfMTI1eDEyNS5qcGciIGhlaWdodD0iMTI1IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTI1IiBib3JkZXI9IjAiIGFsdD0iQXBhY2hlQ29uIFVTIDIwMDUiIC8+CisgICAgICAgICAgICAgICAgICAgIDwvYT4gIC0tPgorCisgICAgICAgICAgICAgICAgICAgPCEtLSByZWd1bGFyIG1lbnUgLS0+CisKKyAgICAgICAgICAgICAgICAgICAgCisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGRpdiBpZD0iYWNjb3JkaW9uIiBzdHlsZT0id2lkdGg6IDEwMCUiPgorICAgIAorICAgICAgICAgICAgCTxoMz48YSBocmVmPSIjR2VuZXJhbCI+R2VuZXJhbDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5kZXguaHRtbCI+SG9tZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbGljZW5zZS5odG1sIj5MaWNlbnNlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyI+QVNGPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kb3dubG9hZHMuaHRtbCI+RG93bmxvYWRzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCI+Q29tbWVyY2lhbCBTdXBwb3J0PC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnN0YWxsYXRpb25hbmRVcGdyYWRlIj5JbnN0YWxsYXRpb24gYW5kIFVwZ3JhZGU8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luc3RhbGxhdGlvbi5odG1sIj5JbnN0YWxsYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1VwZ3JhZGUuaHRtbCI+VXBncmFkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii5odHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyI+VHV0b3JpYWxzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db21tYW5kTGluZUFkbWluLmh0bWwiPkNvbW1hbmQgTGluZSBBZG1pbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29tbXVuaXR5Ij5Db21tdW5pdHk8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2dldC1pbnZvbHZlZC5odG1sIj5HZXQgSW52b2x2ZWQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3RlYW0tbGlzdC5odG1sIj5Db21taXR0ZXJzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9tYWlsLWxpc3RzLmh0bWwiPk1haWxpbmcgTGlzdHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyI+V2lraTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjRGV2ZWxvcG1lbnQiPkRldmVsb3BtZW50PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9zdm4uaHRtbCI+U291cmNlIENvZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIj5CdWdzIC8gSXNzdWVzIChKSVJBKTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZGVwZW5kZW5jaWVzLmh0bWwiPkRlcGVuZGVuY2llczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCI+QnVpbGQgSW5zdHJ1Y3Rpb25zPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KVW5pdFRlc3RpbmcuaHRtbCI+SlVuaXQgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTWFudWFsVGVzdGluZy5odG1sIj5NYW51YWwgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVsZWFzZUd1aWRlLmh0bWwiPlJlbGVhc2UgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1dlYnNpdGVHdWlkZS5odG1sIj5XZWJzaXRlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnRlZ3JhdGlvbiI+SW50ZWdyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1NvYXBSZXN0QVBJLmh0bWwiPlNPQVAvUkVTVCBBUEk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Jlc3RBUElTYW1wbGUuaHRtbCI+UkVTVCBBUEkgU2FtcGxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9MZGFwQW5kQURTLmh0bWwiPkxkYXAgYW5kIEFEUzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCI+Vm9JUCBhbmQgU0lQPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9FcnJvcnNUYWJsZS5odG1sIj5FcnJvcnMgdGFibGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI1BsdWdpbnMiPlBsdWdpbnM8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01vb2RsZVBsdWdpbi5odG1sIj5Nb29kbGUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TYWthaVBsdWdpbi5odG1sIj5TYWthaSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0ppcmFQbHVnaW4uaHRtbCI+SmlyYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pvb21sYVBsdWdpbi5odG1sIj5Kb29tbGEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9EcnVwYWxQbHVnaW4uaHRtbCI+RHJ1cGFsIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQml0cml4UGx1Z2luLmh0bWwiPkJpdHJpeCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCI+Q29uZmx1ZW5jZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiPlN1Z2FyQ1JNIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVkbWluZVBsdWdpbi5odG1sIj5SZWRtaW5lIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29uZmlndXJhdGlvbiI+Q29uZmlndXJhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+REIgU2FtcGxlIENvbmZpZ3VyYXRpb25zPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQXBhY2hlRGVyYnlDb25maWcuaHRtbCI+QXBhY2hlIERlcmJ5PC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JQk1EQjJDb25maWcuaHRtbCI+SUJNIERCMjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3JhY2xlQ29uZmlnLmh0bWwiPk9yYWNsZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTXlTUUxDb25maWcuaHRtbCI+TXlTUUw8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Bvc3RncmVzQ29uZmlnLmh0bWwiPlBvc3RncmVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Mb2NhbGl6YXRpb24gYW5kIGxhbmd1YWdlczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiPkludGVybmF0aW9uYWxpc2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9MYW5ndWFnZUVkaXRvci5odG1sIj5MYW5ndWFnZUVkaXRvcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vVGltZVpvbmVIYW5kbGluZy5odG1sIj5UaW1lWm9uZUhhbmRsaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9FZGl0VGVtcGxhdGVzLmh0bWwiPkVkaXRUZW1wbGF0ZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk5BVCBQb3J0IFNldHRpbmdzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9ydFNldHRpbmdzLmh0bWwiPlBvcnQgc2V0dGluZ3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlBlcmZvcm1hbmNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCI+SlZNIHBlcmZvcm1hbmNlIHR1bmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+VXNlciBJbnRlcmZhY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiPlRoZW1lczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRGFzaGJvYXJkLmh0bWwiPkRhc2hib2FyZDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCI+V2ViY2FtIHJlc29sdXRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCI+Um9vbSBsYXlvdXQgb3B0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSG90S2V5cy5odG1sIj5Ib3QgS2V5czwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q3VzdG9taXphdGlvbjwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmFwcE5hbWVQYXRoLmh0bWwiPldlYmFwcCBuYW1lL3BhdGg8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL05hdmlnYXRpb24uaHRtbCI+TmF2aWdhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIj5DYWxlbmRhciBhbmQgdGltZXpvbmU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCI+Q3VzdG9tIHJvb20gdHlwZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCI+Q3VzdG9tIGN0eXB0IG1lY2hhbmlzbTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCI+R2VuZXJhbCBDb25maWd1cmF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5TZWN1cml0eTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCI+UmVzdHJpY3RlZCBBY2Nlc3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1JUTVBTQW5kSFRUUFMuaHRtbCI+UlRNUFMgYW5kIEhUVFBTPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Db252ZXJ0ZXJzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIj5PcGVuT2ZmaWNlIENvbnZlcnRlcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIj5GRk1QRUcgVmVyc2lvbiBTd2l0Y2g8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNsdXN0ZXJpbmc8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DbHVzdGVyaW5nLmh0bWwiPkNsdXN0ZXJpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk1pc2M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZXRWZXJzaW9uSW5mby5odG1sIj5HZXQgdmVyc2lvbiBpbmZvPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAKKyAgICA8L2Rpdj4KKyAgICAgCisgICAgPGJyLz4KKyAgICAKKyAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iTERBUCBhbmQgQWN0aXZlIERpcmVjdG9yeSBJbnRlZ3JhdGlvbiI+PHN0cm9uZz5MREFQIGFuZCBBY3RpdmUgRGlyZWN0b3J5IEludGVncmF0aW9uPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4gSW46ICRSRUQ1X0hPTUUvd2ViYXBwcy9vcGVubWVldGluZ3MvY29uZjxiciAvPg0KKw0KKwkJCQl5b3Ugd2lsbCBmaW5kIHNhbXBsZSBjb25maWd1cmF0aW9ucyBmb3IgTERBUCBhbmQgQWN0aXZlIERpcmVjdG9yeS4gVGhlDQorCQkJCW5hdHVyZSBvZiB0aG9zZSBEaXJlY3RvcnkgU2VydmVycyBhcmUgdGhhdCB0aGV5IGFyZSBpbmRpdmlkdWFsIGZvcg0KKwkJCQlldmVyeSBvcmdhbml6YXRpb24sIHNvIHlvdSBoYXZlIHRvIG1vZGlmeSBvZiBjb3Vyc2UgYXQgbGVhc3QgdGhlDQorCQkJCXBhdGggdG8geW91ciB1c2VyLWJhc2UgZXQgY2V0ZXJhLjxiciAvPg0KKwkJCQk8YnIgLz4NCisJCQkJVG8gYWN0aXZhdGUgYW55IG9mIHRob3NlIGNvbmZpZ3VyYXRpb25zIHlvdSBoYXZlIHRvIGxvZ2luIGludG8NCisJCQkJT3Blbk1lZXRpbmdzLCBnb3RvIEFkbWluaXN0cmF0aW9uICZndDsgTGRhcC4NCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iZmFuY3lib3gtYnV0dG9ucyIgaHJlZj0iaW1hZ2VzL2xkYXBfc2NyZWVuLnBuZyI+DQorCQkJCQk8aW1nIHNyYz0iaW1hZ2VzL2xkYXBfc2NyZWVuLnBuZyIgYWx0PSIiIHdpZHRoPSI0NDIiIGhlaWdodD0iMjgyIiAvPg0KKwkJCQk8L2E+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJSW1wb3J0IGlzIHRoYXQgeW91IGNvbmZpZ3VyZSBMREFQX1NFQVJDSF9QQVRIIHNvIHRoYXQgaXQgcG9pbnRzIHRvIHRoZSBub2RlIG9mIHlvdXIgZGlyZWN0b3J5IHNlcnZlciB0aGF0IGNvbnRhaW5zIHRoZSB1c2Vycw0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQlJZiB5b3UgaGF2ZSBtdWx0aXBsZSBzZWFyY2ggcGF0aHMgeW91IGNhbiBlaXRoZXIgdHJ5IHRvIGRlZmluZSBhIHNlYXJjaCBwYXRoIHRoYXQgcG9pbnRzIHRvIG11bHRpcGxlIG5vZGVzIG9yIGRlZmluZSBtdWx0aXBsZSBsZGFwIGNvbmZpZ3VyYXRpb25zLg0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQlTdWNjZXNzZnVsIGludGVncmF0aW9uIGlzIGFsc28gcmVwb3J0ZWQgd2l0aCBOb3ZlbGwgZURpcmVjdG9yeQ0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQlZb3UgY2FuIGNvbmZpZ3VyZSBtdWx0aXBsZSBkb21haW5zIG9yIGRpZmZlcmVudCB1c2VyLXBhdGhzIGluIHRoZSBBZG1pbmlzdHJhdGlvbiBvZiBPcGVuTWVldGluZ3MuIA0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPCEtLSBGT09URVIgLS0+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGhyIG5vc2hhZGU9Im5vc2hhZGUiIHNpemU9IjEiLz4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBhbGlnbj0iY2VudGVyIj48Zm9udCBjb2xvcj0iIzEyMzQ2NSIgc2l6ZT0iLTEiPjxlbT4KKyAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0ICYjMTY5OyAyMDAzLTIwMTMsIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorICAgICAgICAgICAgICAgICAgICA8L2VtPjwvZm9udD48L2Rpdj4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9ib2R5PgorICAgIDwvaHRtbD4KKzwhLS0gZW5kIHRoZSBwcm9jZXNzaW5nIC0tPgorCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCmRpZmYgLS1naXQgYS9kb2NzL01hbnVhbFRlc3RpbmcuaHRtbCBiL2RvY3MvTWFudWFsVGVzdGluZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5ZTYwN2MKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL01hbnVhbFRlc3RpbmcuaHRtbApAQCAtMCwwICsxLDEwNTEgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgorCis8IS0tCitDb3B5cmlnaHQgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKworPCEtLSBDb250ZW50IFN0eWxlc2hlZXQgZm9yIFNpdGUgLS0+CisKKyAgICAgICAgCis8IS0tIHN0YXJ0IHRoZSBwcm9jZXNzaW5nIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8IS0tIEdFTkVSQVRFRCBGSUxFLCBETyBOT1QgRURJVCwgRURJVCBUSEUgWE1MIEZJTEUgSU4geGRvY3MgSU5TVEVBRCEgLS0+CisgICAgPCEtLSBNYWluIFBhZ2UgU2VjdGlvbiAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGh0bWw+CisgICAgICAgIDxoZWFkPgorICAgICAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiLz4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iCisJCQlPcGVuTWVldGluZ3MgVGVhbQorCQkiPgorICAgICAgICAgICAgPG1ldGEgbmFtZT0iZW1haWwiIGNvbnRlbnQ9ImlhcmtoQGFwYWNoZS5vcmciPgorICAgICAgICAgICAgCisgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIDx0aXRsZT5BcGFjaGUgT3Blbk1lZXRpbmdzIC0gTWFudWFsIFRlc3Rpbmc8L3RpdGxlPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL29wZW5tZWV0aW5ncy5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2pxdWVyeS11aS5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2NvaW4tc2xpZGVyLXN0eWxlcy5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2NvbG9yYm94LmNzcyIgLz4KKyAgICAgICAgICAgIAorCQkJPCEtLSBBZGQgalF1ZXJ5IGxpYnJhcnkgLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9qcXVlcnktMS43LjEubWluLmpzIj48L3NjcmlwdD4KKwkJCisJCQk8IS0tIEFkZCBjb2luc2xpZGVyIHBsdWdpbnMgLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9jb2luLXNsaWRlci5taW4uanMiPjwvc2NyaXB0PgorCQkJCisJCQk8IS0tIEFkZCBjb2xvcmJveCBwbHVnaW4gLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9qcXVlcnkuY29sb3Jib3guanMiPjwvc2NyaXB0PgorCQkKKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkuY29yZS5qcyI+PC9zY3JpcHQ+CisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLndpZGdldC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5hY2NvcmRpb24uanMiPjwvc2NyaXB0PgorCQkJCisJCQk8c2NyaXB0PgorCQkJJChmdW5jdGlvbigpIHsKKwkJCQkkKCAiI2FjY29yZGlvbiIgKS5hY2NvcmRpb24oeworCQkJCQlhdXRvSGVpZ2h0OiBmYWxzZSwKKwkJCQkJbmF2aWdhdGlvbjogdHJ1ZSwKKwkJCQkJbmF2aWdhdGlvbkZpbHRlcjogZnVuY3Rpb24gKCkgeworCQkJCQkJdmFyIHNpZGViYXJIcmVmQXJyYXkgPSB0aGlzLmhyZWYuc3BsaXQoIi8iKTsKKyAgICAJCQkJCXZhciBzaWRlQmFyTGFzdFN0cmluZyA9IHNpZGViYXJIcmVmQXJyYXlbc2lkZWJhckhyZWZBcnJheS5sZW5ndGggLSAxXS50b0xvd2VyQ2FzZSgpOworCQkJCQkJCisJCQkJCQlpZiAoc2lkZUJhckxhc3RTdHJpbmcuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJCQkJcmV0dXJuIGZhbHNlOworCQkJCQkJfQorCQkJCQkJCisJCQkJCQkJCQkJCQkvKiBkb2N1bWVudC5sb2NhdGlvbi5ocmVmICovCisJCQkJCQl2YXIgY3VycmVudFNlY3Rpb24gPSAiIjsKKwkJCQkJCQorCQkJCQkJdmFyIGN1cnJlbnRMb2NhdGlvbiA9ICIiOworCQkJCQkJdmFyIGN1cnJlbnRMaW5rID0gIiI7CisJCQkJCQlpZiAoZmFsc2UpIHsKKwkJCQkJCQorCQkJCQkJfQorICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9pbmRleC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9pbmRleC5odG1sIi5zdWJzdHIoMSwgIi9pbmRleC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2xpY2Vuc2UuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbGljZW5zZS5odG1sIi5zdWJzdHIoMSwgIi9saWNlbnNlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iLnN1YnN0cigxLCAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kb3dubG9hZHMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZG93bmxvYWRzLmh0bWwiLnN1YnN0cigxLCAiL2Rvd25sb2Fkcy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIuc3Vic3RyKDEsICIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luc3RhbGxhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9pbnN0YWxsYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvaW5zdGFsbGF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVXBncmFkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9VcGdyYWRlLmh0bWwiLnN1YnN0cigxLCAiL1VwZ3JhZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIi5zdWJzdHIoMSwgImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29tbWFuZExpbmVBZG1pbi5odG1sIi5zdWJzdHIoMSwgIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2dldC1pbnZvbHZlZC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2dldC1pbnZvbHZlZC5odG1sIi5zdWJzdHIoMSwgIi9nZXQtaW52b2x2ZWQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi90ZWFtLWxpc3QuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi90ZWFtLWxpc3QuaHRtbCIuc3Vic3RyKDEsICIvdGVhbS1saXN0Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbWFpbC1saXN0cy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL21haWwtbGlzdHMuaHRtbCIuc3Vic3RyKDEsICIvbWFpbC1saXN0cy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIuc3Vic3RyKDEsICJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvc3ZuLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9zdm4uaHRtbCIuc3Vic3RyKDEsICIvc3ZuLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIi5zdWJzdHIoMSwgImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZGVwZW5kZW5jaWVzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kZXBlbmRlbmNpZXMuaHRtbCIuc3Vic3RyKDEsICIvZGVwZW5kZW5jaWVzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiLnN1YnN0cigxLCAiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSlVuaXRUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9KVW5pdFRlc3RpbmcuaHRtbCIuc3Vic3RyKDEsICIvSlVuaXRUZXN0aW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTWFudWFsVGVzdGluZy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTWFudWFsVGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9NYW51YWxUZXN0aW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVsZWFzZUd1aWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZWxlYXNlR3VpZGUuaHRtbCIuc3Vic3RyKDEsICIvUmVsZWFzZUd1aWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2Vic2l0ZUd1aWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9XZWJzaXRlR3VpZGUuaHRtbCIuc3Vic3RyKDEsICIvV2Vic2l0ZUd1aWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1NvYXBSZXN0QVBJLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Tb2FwUmVzdEFQSS5odG1sIi5zdWJzdHIoMSwgIi9Tb2FwUmVzdEFQSS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RBUElTYW1wbGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1Jlc3RBUElTYW1wbGUuaHRtbCIuc3Vic3RyKDEsICIvUmVzdEFQSVNhbXBsZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0xkYXBBbmRBRFMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0xkYXBBbmRBRFMuaHRtbCIuc3Vic3RyKDEsICIvTGRhcEFuZEFEUy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0Vycm9yc1RhYmxlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9FcnJvcnNUYWJsZS5odG1sIi5zdWJzdHIoMSwgIi9FcnJvcnNUYWJsZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Nb29kbGVQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTW9vZGxlUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL01vb2RsZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Nha2FpUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1Nha2FpUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1Nha2FpUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSmlyYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9KaXJhUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0ppcmFQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Kb29tbGFQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSm9vbWxhUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0pvb21sYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0RydXBhbFBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9EcnVwYWxQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvRHJ1cGFsUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQml0cml4UGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0JpdHJpeFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9CaXRyaXhQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVkbWluZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZWRtaW5lUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1JlZG1pbmVQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9JQk1EQjJDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JQk1EQjJDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvSUJNREIyQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9PcmFjbGVDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9PcmFjbGVDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvT3JhY2xlQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NeVNRTENvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL015U1FMQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL015U1FMQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1Bvc3RncmVzQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL1Bvc3RncmVzQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0xhbmd1YWdlRWRpdG9yLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIuc3Vic3RyKDEsICIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiLnN1YnN0cigxLCAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0VkaXRUZW1wbGF0ZXMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9FZGl0VGVtcGxhdGVzLmh0bWwiLnN1YnN0cigxLCAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUG9ydFNldHRpbmdzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9ydFNldHRpbmdzLmh0bWwiLnN1YnN0cigxLCAiL1BvcnRTZXR0aW5ncy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiLnN1YnN0cigxLCAiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiLnN1YnN0cigxLCAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0Rhc2hib2FyZC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0Rhc2hib2FyZC5odG1sIi5zdWJzdHIoMSwgIi9EYXNoYm9hcmQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0hvdEtleXMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Ib3RLZXlzLmh0bWwiLnN1YnN0cigxLCAiL0hvdEtleXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViYXBwTmFtZVBhdGguaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJhcHBOYW1lUGF0aC5odG1sIi5zdWJzdHIoMSwgIi9XZWJhcHBOYW1lUGF0aC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTmF2aWdhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL05hdmlnYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvTmF2aWdhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIuc3Vic3RyKDEsICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIuc3Vic3RyKDEsICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIi5zdWJzdHIoMSwgIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SVE1QU0FuZEhUVFBTLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUlRNUFNBbmRIVFRQUy5odG1sIi5zdWJzdHIoMSwgIi9SVE1QU0FuZEhUVFBTLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiLnN1YnN0cigxLCAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiLnN1YnN0cigxLCAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ2x1c3RlcmluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NsdXN0ZXJpbmcuaHRtbCIuc3Vic3RyKDEsICIvQ2x1c3RlcmluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZXRWZXJzaW9uSW5mby5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dldFZlcnNpb25JbmZvLmh0bWwiLnN1YnN0cigxLCAiL0dldFZlcnNpb25JbmZvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCSAgICAJCQkJCQorICAgIAkJCQkJY3VycmVudExpbmsgPSBjdXJyZW50TGluay50b0xvd2VyQ2FzZSgpOworICAgIAkJCQkJY3VycmVudExvY2F0aW9uID0gY3VycmVudExvY2F0aW9uLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQkKKwkJCQkJCXJldHVybiBzaWRlQmFyTGFzdFN0cmluZyA9PSBjdXJyZW50TGluaysiIyIrY3VycmVudExvY2F0aW9uOworCQkJCQl9CisJCQkJfSk7CisJCQl9KTsKKwkJCTwvc2NyaXB0PgorCQkJCisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisJCQkJJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CisJCQkJCSQoJy5mYW5jeWJveC1idXR0b25zJykuY29sb3Jib3goe3JlbDonZmFuY3lib3gtYnV0dG9ucycsd2lkdGg6Ijc1JSIsIGhlaWdodDoiNzUlIn0pOworCQkJCQkkKCcjYWNjb3JkaW9uIGEnKS5lYWNoKGZ1bmN0aW9uKCkgeworCQkJCSAgICAgIHZhciBhID0gJCh0aGlzKTsKKwkJCQkgICAgICB2YXIgaHJlZiA9IGEuYXR0cigiaHJlZiIpOworCQkJCSAgICAgIGlmIChocmVmLmluZGV4T2YoIiMiKSA9PSAtMSkgeworCQkJCSAgICAgIAkgIHZhciBjb21wYXJlSXQgPSBocmVmLnN1YnN0cigyLCBocmVmLmxlbmd0aCk7CisJCQkJCSAgICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoY29tcGFyZUl0KSE9IC0xKSB7CisJCQkJCSAgICAgICBhLmFkZENsYXNzKCdhY3RpdmUnKTsKKwkJCQkJICAgICAgfQorCQkJCSAgICAgIH0KKwkJCQkgICAgfSk7CisJCQkJCSQoJyNjb2luLXNsaWRlcicpLmNvaW5zbGlkZXIoeyB3aWR0aDogNjQwLGhlaWdodDogNDAwLCBkZWxheTogNDAwMCAgfSk7CQkJCQkKKwkJCQl9KTsKKwkJCTwvc2NyaXB0PgkKKwkJCQkJCQorCQkJPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKwkJCQkuZmFuY3lib3gtY3VzdG9tIC5mYW5jeWJveC1vdXRlciB7CisJCQkJCWJveC1zaGFkb3c6IDAgMCA1MHB4ICMyMjI7CisJCQkJfQorCQkJPC9zdHlsZT4KKyAgICAgICAgPC9oZWFkPgorCisgICAgICAgIDxib2R5IGJnY29sb3I9IiNmZmZmZmYiIHRleHQ9IiMwMDAwMDAiIGxpbms9IiMxMjM0NjUiIHZsaW5rPSIjMTIzNDY1IiBhbGluaz0iIzAwMDAwMCI+ICAKKyAgICAgICAgCTxkaXYgY2xhc3M9Im1haW5ib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgCTxkaXYgY2xhc3M9InN1cGVyYm9keSIgc3R5bGU9IndpZHRoOiAxMDAlOyI+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiPgorICAgICAgICAgICAgICAgIDwhLS0gVE9QIElNQUdFIC0tPgorICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0Ij4KKzxhIGhyZWY9Imh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy8iPjxpbWcgc3JjPSIuL2ltYWdlcy9sb2dvLTIuanBnIiBhbHQ9IkFwYWNoZSBPcGVuTWVldGluZ3MiIGJvcmRlcj0iMCIvPjwvYT4KKzwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODAlIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIiA+CisJPGEgaHJlZj0iZGVtby5odG1sIj5EZW1vPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9ImRvd25sb2Fkcy5odG1sIiB0YXJnZXQ9Il9QQVJFTlQiPkRvd25sb2FkPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imluc3RhbGxhdGlvbi5odG1sIiB0YXJnZXQ9Il9QQVJFTlQiPkluc3RhbGxhdGlvbjwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUyIgdGFyZ2V0PSJfQkxBTksiPldpa2k8L2E+CisJPHNwYW4+Jm5ic3A7PC9zcGFuPgorPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iNCI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGhyIG5vc2hhZGU9Im5vc2hhZGUiIHNpemU9IjEiLz4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDwhLS0gTEVGVCBTSURFIE5BVklHQVRJT04gLS0+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCIgbm93cmFwPSJub3dyYXAiPgorCisgICAgICAgICAgICAgICAgICAgIDwhLS0gc3BlY2lhbCBBQ29uIExvZ28gLSBsZWF2ZSBoZXJlIGZvciBuZXh0IHRpbWUKKyAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL2FwYWNoZWNvbi5jb20vMjAwNS9VUy8iPgorICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHA6Ly9hcGFjaGUub3JnL2ltYWdlcy9hYzIwMDV1c19ibHVlXzEyNXgxMjUuanBnIiBoZWlnaHQ9IjEyNSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjEyNSIgYm9yZGVyPSIwIiBhbHQ9IkFwYWNoZUNvbiBVUyAyMDA1IiAvPgorICAgICAgICAgICAgICAgICAgICA8L2E+ICAtLT4KKworICAgICAgICAgICAgICAgICAgIDwhLS0gcmVndWxhciBtZW51IC0tPgorCisgICAgICAgICAgICAgICAgICAgIAorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDxkaXYgaWQ9ImFjY29yZGlvbiIgc3R5bGU9IndpZHRoOiAxMDAlIj4KKyAgICAKKyAgICAgICAgICAgIAk8aDM+PGEgaHJlZj0iI0dlbmVyYWwiPkdlbmVyYWw8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luZGV4Lmh0bWwiPkhvbWU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2xpY2Vuc2UuaHRtbCI+TGljZW5zZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iPkFTRjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZG93bmxvYWRzLmh0bWwiPkRvd25sb2FkczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiPkNvbW1lcmNpYWwgU3VwcG9ydDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI+SW5zdGFsbGF0aW9uIGFuZCBVcGdyYWRlPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9pbnN0YWxsYXRpb24uaHRtbCI+SW5zdGFsbGF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9VcGdyYWRlLmh0bWwiPlVwZ3JhZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiPlR1dG9yaWFsczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQ29tbWFuZExpbmVBZG1pbi5odG1sIj5Db21tYW5kIExpbmUgQWRtaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0NvbW11bml0eSI+Q29tbXVuaXR5PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9nZXQtaW52b2x2ZWQuaHRtbCI+R2V0IEludm9sdmVkPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi90ZWFtLWxpc3QuaHRtbCI+Q29tbWl0dGVyczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbWFpbC1saXN0cy5odG1sIj5NYWlsaW5nIExpc3RzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iPldpa2k8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0RldmVsb3BtZW50Ij5EZXZlbG9wbWVudDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vc3ZuLmh0bWwiPlNvdXJjZSBDb2RlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyI+QnVncyAvIElzc3VlcyAoSklSQSk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2RlcGVuZGVuY2llcy5odG1sIj5EZXBlbmRlbmNpZXM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiPkJ1aWxkIEluc3RydWN0aW9uczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSlVuaXRUZXN0aW5nLmh0bWwiPkpVbml0IFRlc3Rpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01hbnVhbFRlc3RpbmcuaHRtbCI+TWFudWFsIFRlc3Rpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1JlbGVhc2VHdWlkZS5odG1sIj5SZWxlYXNlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9XZWJzaXRlR3VpZGUuaHRtbCI+V2Vic2l0ZSBHdWlkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjSW50ZWdyYXRpb24iPkludGVncmF0aW9uPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Tb2FwUmVzdEFQSS5odG1sIj5TT0FQL1JFU1QgQVBJPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZXN0QVBJU2FtcGxlLmh0bWwiPlJFU1QgQVBJIFNhbXBsZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTGRhcEFuZEFEUy5odG1sIj5MZGFwIGFuZCBBRFM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiPlZvSVAgYW5kIFNJUDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vRXJyb3JzVGFibGUuaHRtbCI+RXJyb3JzIHRhYmxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNQbHVnaW5zIj5QbHVnaW5zPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Nb29kbGVQbHVnaW4uaHRtbCI+TW9vZGxlIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU2FrYWlQbHVnaW4uaHRtbCI+U2FrYWkgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KaXJhUGx1Z2luLmh0bWwiPkppcmEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Kb29tbGFQbHVnaW4uaHRtbCI+Sm9vbWxhIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vRHJ1cGFsUGx1Z2luLmh0bWwiPkRydXBhbCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0JpdHJpeFBsdWdpbi5odG1sIj5CaXRyaXggUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiPkNvbmZsdWVuY2UgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TdWdhckNSTVBsdWdpbi5odG1sIj5TdWdhckNSTSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1JlZG1pbmVQbHVnaW4uaHRtbCI+UmVkbWluZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0NvbmZpZ3VyYXRpb24iPkNvbmZpZ3VyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkRCIFNhbXBsZSBDb25maWd1cmF0aW9uczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiPkFwYWNoZSBEZXJieTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSUJNREIyQ29uZmlnLmh0bWwiPklCTSBEQjI8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL09yYWNsZUNvbmZpZy5odG1sIj5PcmFjbGU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL015U1FMQ29uZmlnLmh0bWwiPk15U1FMPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIj5Qb3N0Z3JlczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TG9jYWxpemF0aW9uIGFuZCBsYW5ndWFnZXM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIj5JbnRlcm5hdGlvbmFsaXNhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTGFuZ3VhZ2VFZGl0b3IuaHRtbCI+TGFuZ3VhZ2VFZGl0b3I8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1RpbWVab25lSGFuZGxpbmcuaHRtbCI+VGltZVpvbmVIYW5kbGluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRWRpdFRlbXBsYXRlcy5odG1sIj5FZGl0VGVtcGxhdGVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5OQVQgUG9ydCBTZXR0aW5nczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1BvcnRTZXR0aW5ncy5odG1sIj5Qb3J0IHNldHRpbmdzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5QZXJmb3JtYW5jZTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiPkpWTSBwZXJmb3JtYW5jZSB0dW5pbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlVzZXIgSW50ZXJmYWNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIj5UaGVtZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0Rhc2hib2FyZC5odG1sIj5EYXNoYm9hcmQ8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiPldlYmNhbSByZXNvbHV0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiPlJvb20gbGF5b3V0IG9wdGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0hvdEtleXMuaHRtbCI+SG90IEtleXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkN1c3RvbWl6YXRpb248L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9XZWJhcHBOYW1lUGF0aC5odG1sIj5XZWJhcHAgbmFtZS9wYXRoPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9OYXZpZ2F0aW9uLmh0bWwiPk5hdmlnYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCI+Q2FsZW5kYXIgYW5kIHRpbWV6b25lPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiPkN1c3RvbSByb29tIHR5cGU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiPkN1c3RvbSBjdHlwdCBtZWNoYW5pc208L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiPkdlbmVyYWwgQ29uZmlndXJhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+U2VjdXJpdHk8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiPlJlc3RyaWN0ZWQgQWNjZXNzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9SVE1QU0FuZEhUVFBTLmh0bWwiPlJUTVBTIGFuZCBIVFRQUzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q29udmVydGVyczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCI+T3Blbk9mZmljZSBDb252ZXJ0ZXI8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCI+RkZNUEVHIFZlcnNpb24gU3dpdGNoPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5DbHVzdGVyaW5nPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2x1c3RlcmluZy5odG1sIj5DbHVzdGVyaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5NaXNjPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2V0VmVyc2lvbkluZm8uaHRtbCI+R2V0IHZlcnNpb24gaW5mbzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCisgICAgPC9kaXY+CisgICAgIAorICAgIDxici8+CisgICAgCisgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODAlIiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkID48IS0tIGJnY29sb3I9IiNFRUVFRUUiIC0tPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0idmVyZGFuYSxhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IkludHJvZHVjdGlvbiI+PHN0cm9uZz5JbnRyb2R1Y3Rpb248L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQlCZWxvdyBpcyBhIHRlc3QgcGxhbiBmb3IgdGhlIE9wZW5NZWV0aW5ncyAyLjEgcHJlLXJlbGVhc2UgdGVzdGluZy4NCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJEZXRhaWxzIj48c3Ryb25nPkRldGFpbHM8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvbD4NCisJCQkJPGxpPg0KKwkJCQkJPGI+VXNlciBHVUkgdGVzdHM8L2I+DQorCQkJCQk8b2w+DQorCQkJCQkJPGxpPg0KKwkJCQkJCQlMb2dpbi9sb2dvdXQgDQorCQkJCQkJCTxvbD4NCisJCQkJCQkJCTxsaT5QYXNzd29yZCByZWNvdmVyaW5nIDwvbGk+DQorCQkJCQkJCQk8bGk+U2VsZi1yZWdpc3RlcmluZyA8L2xpPg0KKwkJCQkJCQkJPGxpPiJWaXNpdCBBcGFjaGUgT3Blbk1lZXRpbmdzIiBsaW5rIDwvbGk+DQorCQkJCQkJCQk8bGk+RW50ZXIgd3JvbmcgbG9naW4vcGFzc3dvcmQgPC9saT4NCisJCQkJCQkJCTxsaT5FbnRlciBjb3JyZWN0IGxvZ2luL3Bhc3N3b3JkIDwvbGk+DQorCQkJCQkJCQk8bGk+RXhpdCB0aGUgc3lzdGVtIGJ5IGNsaWNrIHRoZSBFeGl0IGJ1dHRvbiA8L2xpPg0KKwkJCQkJCQk8L29sPg0KKwkJCQkJCTwvbGk+DQorCQkJCQkJPGxpPg0KKwkJCQkJCQlEYXNoYm9hcmQNCisJCQkJCQkJPG9sPg0KKwkJCQkJCQkJPGxpPkNvcnJlY3QgdXNlciBpbmZvIGluIHRoZSB1cHBlciBsZWZ0IGNvcm5lciA8L2xpPg0KKwkJCQkJCQkJPGxpPkxpbmtzIGluIHRoZSAiSGVscCBhbmQgc3VwcG9ydCIgc2VjdGlvbiA8L2xpPg0KKwkJCQkJCQkJPGxpPkl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBlbnRlciB1c2Vy4oCZcyByb29tIGZyb20gdGhlIGRhc2hib2FyZCA8L2xpPg0KKwkJCQkJCQkJPGxpPlJvb20gZGV0YWlscyBzaG91bGQgYmUgc2hvd24gY29ycmVjdGx5IGluIHRoZSAiUm9vbXMgaW4gdGhpcyBzZWN0aW9u4oCmIiBwYXJ0IG9mIHRoZSBzY3JlZW4gPC9saT4NCisJCQkJCQkJPC9vbD4JCQkJCQ0KKwkJCQkJCTwvbGk+DQorCQkJCQkJPGxpPg0KKwkJCQkJCQlHbG9iYWwgY2hhdCANCisJCQkJCQkJPG9sPg0KKwkJCQkJCQkJPGxpPlNlbmQvcmVjZWl2ZSBtZXNzYWdlIHdoZXJlIGF0IGxlYXN0IDMgdXNlcnMgaW4gdGhlIHN5c3RlbSA8L2xpPg0KKwkJCQkJCQkJPGxpPkFkZGluZyBhIGNvbnRhY3QgdG8gdGhlIGNvbnRhY3QgbGlzdCA8L2xpPg0KKwkJCQkJCQkJPGxpPlByaXZhdGUgbWVzc2FnZSA8L2xpPg0KKwkJCQkJCQkJPGxpPlNob3dpbmcgdXNlciBwcm9maWxlIDwvbGk+DQorCQkJCQkJCQk8bGk+SW52aXRpbmcgdXNlciB0byB0aGUgY29uZmVyZW5jZSByb29tIDwvbGk+DQorCQkJCQkJCQk8bGk+Q29weSBjaGF0IGxvZyA8L2xpPg0KKwkJCQkJCQkJPGxpPkRlbGV0ZSBjaGF0IGxvZyA8L2xpPg0KKwkJCQkJCQkJPGxpPkNoYW5naW5nIGZvbnQgc3R5bGUgaW4gdGhlIG1hc3NhZ2UgPC9saT4NCisJCQkJCQkJCTxsaT5BZGRpbmcgZW1vdGlvbnMgdG8gdGhlIG1lc3NhZ2UgPC9saT4NCisJCQkJCQkJPC9vbD4NCisJCQkJCQkJQXR0ZW50aW9uISBDb3JyZWN0IFJUTCBzdXBwb3J0IGRvZXMgbm90IHdvcmsgaW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gDQorCQkJCQkJPC9saT4NCisJCQkJCQk8bGk+DQorCQkJCQkJCUNhbGVuZGFyIHZpZXcNCisJCQkJCQkJPG9sPg0KKwkJCQkJCQkJPGxpPkNoYW5nZSB2aWV3ICh3ZWVrbHkvZGFpbHkvbW9udGhseSkgYW5kIG1vdmluZyBiZXR3ZWVuIHRoZSBkYXRlcyA8L2xpPg0KKwkJCQkJCQkJPGxpPkFkZGluZy9yZW1vdmluZy9tb3ZpbmcgYnkgbW91c2UgYW4gZXZlbnQgPC9saT4NCisJCQkJCQkJPC9vbD4NCisJCQkJCQk8L2xpPg0KKwkJCQkJCTxsaT4NCisJCQkJCQkJQ2FsZW5kYXIgaW52aXRhdGlvbiB3aW5kb3cNCisJCQkJCQkJPG9sPg0KKwkJCQkJCQkJPGxpPkNyZWF0aW5nL3VwZGF0aW5nL2RlbGV0aW5nIGFuIGV2ZW50IDwvbGk+DQorCQkJCQkJCQk8bGk+SW52aXRpbmcgMyBpbnRlcm5hbCBhbmQgMyBleHRlcm5hbCBndWVzdHMgPC9saT4NCisJCQkJCQkJCTxsaT5EaWZmZXJlbnQgcmVtaW5kZXIgdHlwZXM6IHJlY2VpdmluZyBlLW1haWwgaW52aXRhdGlvbiBmb3IgaW50ZXJuYWwgYW5kIGV4dGVybmFsIGd1ZXN0cyA8L2xpPg0KKwkJCQkJCQkJPGxpPlBhc3N3b3JkIHByb3RlY3RlZCBpbnZpdGF0aW9uIDwvbGk+DQorCQkJCQkJCQk8bGk+SW52aXRpbmcgdG8gdGhlIHJvb21zIG9mIHRoZSBkaWZmZXJlbnQgdHlwZXMgPC9saT4NCisJCQkJCQkJCTxsaT5DaG9vc2luZyB0aW1lIHpvbmUgZm9yIGV4dGVybmFsIGd1ZXN0IDwvbGk+DQorCQkJCQkJCQk8bGk+Q29ycmVjdCB1c2VyIGRhdGEgaW4gdGhlIGludml0YXRpb25zIDwvbGk+DQorCQkJCQkJCQk8bGk+U01TIHJlbWluZGVyIGZvciBpbnRlcm5hbCBhbmQgZXh0ZXJuYWwgZ3Vlc3RzIDwvbGk+DQorCQkJCQkJCQk8bGk+RS1tYWlsIHJlbWluZGVyIGZvciBpbnRlcm5hbCBhbmQgZXh0ZXJuYWwgZ3Vlc3RzIDwvbGk+DQorCQkJCQkJCQk8bGk+SXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvIGVudGVyIHRvIHRoZSBldmVudCB2aWEgaW52aXRhdGlvbiBsaW5rIHJvb20gYXQgdGhlIHBhcnRpY3VsYXIgdGltZSBzbG90IG9ubHkgPC9saT4NCisJCQkJCQkJCTxsaT5FbnRlciB0aGUgcm9vbSB2aWEgaW52aXRhdGlvbiB3aW5kb3cgPC9saT4NCisJCQkJCQkJPC9vbD4NCisJCQkJCQk8L2xpPg0KKwkJCQkJCTxsaT4NCisJCQkJCQkJTXkgUHJvZmlsZTogVXNlciBwcm9maWxlIHNob3VsZCBjb250YWluIGNvcnJlY3QgdXNlciBpbmZvIGFuZCBhbGxvdyB0byBlZGl0IHRoaXMgDQorCQkJCQkJPC9saT4NCisJCQkJCQk8bGk+DQorCQkJCQkJCUNvbnRhY3RzIGFuZCBNZXNzYWdlcw0KKwkJCQkJCQk8b2w+DQorCQkJCQkJCQk8bGk+QWRkL3JlbW92ZSBhIG1lc3NhZ2UgPC9saT4gDQorCQkJCQkJCQk8bGk+Q3JlYXRpbmcgYSBuZXcgZm9sZGVyIDwvbGk+DQorCQkJCQkJCQk8bGk+TW92aW5nIGJldHdlZW4gdGhlIGZvbGRlcnMgPC9saT4NCisJCQkJCQkJCTxsaT5NYXJraW5nIG1lc3NhZ2VzIGFzIHJlYWQvdW5yZWFkIDwvbGk+DQorCQkJCQkJCQk8bGk+TWVzc2FnZSBmaWx0ZXJzIDwvbGk+DQorCQkJCQkJCQk8bGk+Q29udGFjdCBsaXN0IDwvbGk+DQorCQkJCQkJCTwvb2w+DQorCQkJCQkJPC9saT4NCisJCQkJCQk8bGk+DQorCQkJCQkJCVVzZXIgc2V0dGluZ3MNCisJCQkJCQkJPG9sPg0KKwkJCQkJCQkJPGxpPlBvc3NpYmlsaXR5IHRvIGNoYW5nZSB0aGUgdXNlciBpbmZvIDwvbGk+DQorCQkJCQkJCQk8bGk+Q2hhbmdpbmcgdGltZSB6b25lIGFuZCBsYW5ndWFnZSAoc2hvdWxkIHN0YXJ0IHRvIHdvcmsgYWZ0ZXIgdXNlciByZS1sb2dpbiA8L2xpPg0KKwkJCQkJCQkJPGxpPkNvbW11bml0eSBzZXR0aW5ncyBvciBkaWZmZXJlbnQgdXNlcnMgPC9saT4NCisJCQkJCQkJCTxsaT5EaXNwbGF5IHNldHRpbmdzPC9saT4gDQorCQkJCQkJCTwvb2w+DQorCQkJCQkJPC9saT4NCisJCQkJCQk8bGk+DQorCQkJCQkJCVNlYXJjaCB1c2Vycw0KKwkJCQkJCQk8b2w+DQorCQkJCQkJCQk8bGk+U2VuZCBhIHByaXZhdGUgbWVzc2FnZSA8L2xpPg0KKwkJCQkJCQkJPGxpPkFkZGluZyBhIGNvbnRhY3QgPC9saT4NCisJCQkJCQkJCTxsaT5WaWV3IGNvbnRhY3QgZGV0YWlscyB2aWEgdXNlciBsaXN0IDwvbGk+DQorCQkJCQkJCTwvb2w+DQorCQkJCQkJPC9saT4NCisJCQkJCQk8bGk+DQorCQkJCQkJCVJvb20gbGlzdHMgDQorCQkJCQkJCTxvbD4NCisJCQkJCQkJCTxsaT5QdWJsaWMgcm9vbXMsIHByaXZhdGUgcm9vbXMgYW5kIG15IHJvb21zIHNob3VsZCBjb250YWluIGNvcnJlY3Qgcm9vbSBsaXN0cyA8L2xpPg0KKwkJCQkJCQkJPGxpPlVzZXIgbGlzdCBmb3IgdGhlIHNlbGVjdGVkIHJvb20gPC9saT4NCisJCQkJCQkJCTxsaT5Sb29tIGRldGFpbHMgZm9yIHRoZSBzZWxlY3RlZCByb29tIDwvbGk+DQorCQkJCQkJCTwvb2w+DQorCQkJCQkJPC9saT4NCisJCQkJCQk8bGk+DQorCQkJCQkJCVJlY29yZGluZ3MNCisJCQkJCQkJPG9sPiANCisJCQkJCQkJCTxsaT5UaGUgbGlzdCBzaG91bGQgY29udGFpbiBhdmFpbGFibGUgcmVjb3JkaW5ncyBpbiBwdWJsaWMgYW5kIHByaXZhdGUgZm9sZGVycyA8L2xpPg0KKwkJCQkJCQkJPGxpPkluZm8gcGFuZWwgc2hvdWxkIGNvbnRhaW4gYWN0dWFsIGluZm8gYWJvdXQgdGhlIHJlY29yZGluZyA8L2xpPg0KKwkJCQkJCQkJPGxpPkRvd25sb2FkaW5nIGEgcmVjb3JkaW5nIGlzIGRpZmZlcmVudCBmb3JtYXRzIChBVkkvRkxWKSA8L2xpPg0KKwkJCQkJCQkJPGxpPlBsYXkgdGhlIHJlY29yZGluZyBpbiBPcGVuTWVldGluZ3MgPC9saT4NCisJCQkJCQkJCTxsaT5QbGF5IGRvd25sb2FkZWQgcmVjb3JkaW5nIGJ5IFdpbmRvd3MgcGxheWVyIDwvbGk+DQorCQkJCQkJCQk8bGk+UmVtb3ZlIGEgcmVjb3JkaW5nIGZyb20gdGhlIGZvbGRlciA8L2xpPg0KKwkJCQkJCQk8L29sPg0KKwkJCQkJCTwvbGk+DQorCQkJCQkJPGxpPg0KKwkJCQkJCQlSZXN0cmljdGVkIHJvb20gdGVzdGluZyDigJMgZ2VuZXJhbCBpc3N1ZXMgKHNob3VsZCBiZSB0ZXN0ZWQgd2l0aCBhdCBsZWFzdCAzIGF0dGVuZGVlcykNCisJCQkJCQkJPG9sPg0KKwkJCQkJCQkJPGxpPkVudGVyIHRoZSByb29tOiBkaWZmZXJlbnQgY2FzZXMgZm9yIHRoZSBjYW0vbWljcm8sIGNob29zaW5nIG9mIHRoZSBjYW0gcmVzb2x1dGlvbiwgdGVzdCByZWNvcmRpbmcsIGFsbG93L2Rlbnkgb2YgdmlkZW8gPC9saT4NCisJCQkJCQkJCTxsaT5Vc2VyIGxpc3Qgc2hvdWxkIGJlIHNob3duIGNvcnJlY3RseSA8L2xpPg0KKwkJCQkJCQkJPGxpPkNvcnJlY3QgdXNlciBjcmVkZW50aWFscyBhZnRlciAgdGhlIHJvb20gZW50ZXJpbmcgPC9saT4NCisJCQkJCQkJCTxsaT5BZGQgbW9kZXJhdG9yIHBlcm1pc3Npb25zIHRvIHRoZSB1c2VyIDwvbGk+DQorCQkJCQkJCQk8bGk+VHVybiBtaWNybyBvbi9vZmYgaW4gdGhlIHVzZXIgbGlzdCA8L2xpPg0KKwkJCQkJCQkJPGxpPkluY3JlYXNpbmcvZGVjcmVhc2luZyBzb3VuZCBsZXZlbCBhbmQgdHVybmluZyBtaWNybyBvbi9vZmYgaW4gdGhlIHZpZGVvIHdpbmRvdyA8L2xpPg0KKwkJCQkJCQkJPGxpPlR1cm4gbWljcm8gb24vb2ZmIGluIHRoZSB1c2VyIGxpc3QgdG8gYW5vdGhlciB1c2VyIOKAkyBwb3NzaWJsZSBieSB0aGUgbW9kZXJhdG9yIG9ubHkgPC9saT4NCisJCQkJCQkJCTxsaT5JbmNyZWFzaW5nL2RlY3JlYXNpbmcgc291bmQgbGV2ZWwgYW5kIHR1cm5pbmcgbWljcm8gb24vb2ZmIGluIHRoZSB2aWRlbyB3aW5kb3cgLSBwb3NzaWJsZSBieSB0aGUgbW9kZXJhdG9yIG9ubHkgPC9saT4NCisJCQkJCQkJCTxsaT5BbGxvdy9kZW55IGRyYXdpbmcgb24gd2hpdGVib2FyZCDigJMgcG9zc2libGUgYnkgdGhlIG1vZGVyYXRvciBvbmx5IDwvbGk+DQorCQkJCQkJCQk8bGk+QWxsb3cvZGVueSBzY3JlZW4gc2hhcmluZyDigJMgcG9zc2libGUgYnkgdGhlIG1vZGVyYXRvciBvbmx5IDwvbGk+DQorCQkJCQkJCQk8bGk+QWxsb3cvZGVueSByZW1vdGUgc2NyZWVuIGNvbnRyb2wg4oCTIHBvc3NpYmxlIGJ5IHRoZSBtb2RlcmF0b3Igb25seSA8L2xpPg0KKwkJCQkJCQkJPGxpPkFsbG93L2RlbnkgZXhjbHVzaXZlIGF1ZGlvIOKAkyBwb3NzaWJsZSBieSB0aGUgbW9kZXJhdG9yIG9ubHkgPC9saT4NCisJCQkJCQkJCTxsaT5SZS1zdGFydCBkZXZpc2Ugc2V0dGluZ3MgdmlhIHVzZXIgbGlzdCA8L2xpPg0KKwkJCQkJCQkJPGxpPlJlLXN0YXJ0IGRldmlzZSBzZXR0aW5ncyB2aWEgdmlkZW8gd2luZG93IDwvbGk+DQorCQkJCQkJCQk8bGk+S2ljayB0aGUgdXNlciBvZmYgYnkgdGhlIG1vZGVyYXRvciA8L2xpPg0KKwkJCQkJCQkJPGxpPkNsaWNrIEY4IGtleSB0byBhcnJhbmdlIHZpZGVvcyA8L2xpPg0KKwkJCQkJCQkJPGxpPkFjdGl2aXR5IGFuZCBhY3Rpb25zIHBhbmVsIHNob3VsZCBjb250YWluIGNvcnJlY3QgaW5mbyA8L2xpPg0KKwkJCQkJCQkJPGxpPkV4aXQgdGhlIHJvb20gPC9saT4NCisJCQkJCQkJPC9vbD4NCisJCQkJCQk8L2xpPg0KKwkJCQkJCTxsaT4NCisJCQkJCQkJUmVzdHJpY3RlZCByb29tIHRlc3Rpbmc6IGZpbGUgdXBsb2FkaW5nICsgZG9jdW1lbnRzDQorCQkJCQkJCTxvbD4NCisJCQkJCQkJCTxsaT5VcGxvYWQgYSBkb2N1bWVudCB3aXRoICJMb2FkIGRpcmVjdGx5IHRvIHdoaXRlYm9hcmQiIHN3aXRjaCB0dXJuZWQgb24gPC9saT4NCisJCQkJCQkJCTxsaT5VcGxvYWQgYSB3aXRoICJMb2FkIGRpcmVjdGx5IHRvIHdoaXRlYm9hcmQiIHN3aXRjaCB0dXJuZWQgb24gb2ZmIDwvbGk+DQorCQkJCQkJCQk8bGk+VXBsb2FkIGEgZG9jdW1lbnQgd2l0aCB0aGUgbG9jYWxpemVkIGZpbGUgbmFtZSBhbmQgc3BhY2VzIGluIHRoZSBuYW1lIDwvbGk+DQorCQkJCQkJCQk8bGk+VXBsb2FkaW5nIGEgZG9jdW1lbnQgaW50byBkaWZmZXJlbnQgZm9sZGVyczogcHJpdmF0ZSBmaWxlcyBzaG91bGQgYmUgdmlzaWJsZSBvbmx5IHRoZWlyIG93bmVyIG9ubHkgPC9saT4NCisJCQkJCQkJCTxsaT5SZW1vdmluZyBhIGZpbGUgZnJvbSB0aGUgcm9vbSA8L2xpPg0KKwkJCQkJCQkJPGxpPkhvbWUgYW5kIHB1YmxpYyBkcml2ZSBzaXplIHNob3VsZCBjaGFuZ2UgY29ycmVjdGx5IDwvbGk+DQorCQkJCQkJCQk8bGk+QWRkaW5nIGEgbmV3IGZvbGRlciA8L2xpPg0KKwkJCQkJCQkJPGxpPlJlbW92aW5nIGEgZm9sZGVyIDwvbGk+DQorCQkJCQkJCQk8bGk+TG9hZCBhIGRvY3VtZW50IG9mIGVhY2ggc3VwcG9ydGVkIHR5cGUgYW5kIGNoZWNrIHRoYXQgaXTigJlzIHNob3duIGNvcnJlY3RseSA8L2xpPg0KKwkJCQkJCQk8L29sPg0KKwkJCQkJCTwvbGk+DQorCQkJCQkJPGxpPg0KKwkJCQkJCQlSZXN0cmljdGVkIHJvb20gdGVzdGluZyDigJMgd2hpdGVib2FyZCBhbmQgcHJvcGVydGllcyBwYW5lbHMgKHNob3VsZCBiZSB0ZXN0ZWQgd2l0aCBhdCBsZWFzdCAzIGF0dGVuZGVlcykNCisJCQkJCQkJPG9sPg0KKwkJCQkJCQkJPGxpPkFkZGluZyBhIHJlbW92aW5nIGEgd2hpdGVib2FyZCA8L2xpPg0KKwkJCQkJCQkJPGxpPkZ1bGwtZml0IHN3aXRjaCA8L2xpPg0KKwkJCQkJCQkJPGxpPkNsZWFyIHdoaXRlYm9hcmQgPC9saT4NCisJCQkJCQkJCTxsaT5DbGVhciBvYmplY3RzIG9mIGN1cnJlbnQgc2xpZGUgb25seSA8L2xpPg0KKwkJCQkJCQkJPGxpPlNhdmUgYW5kIGV4cG9ydCA8L2xpPg0KKwkJCQkJCQkJPGxpPlVuZG8gPC9saT4NCisJCQkJCQkJCTxsaT5TZWxlY3QgYW4gb2JqZWN0IDwvbGk+DQorCQkJCQkJCQk8bGk+UG9pbnRlciA8L2xpPg0KKwkJCQkJCQkJPGxpPlRleHQgPC9saT4NCisJCQkJCQkJCTxsaT5QYWludCA8L2xpPg0KKwkJCQkJCQkJPGxpPkRyYXcgbGluZSA8L2xpPg0KKwkJCQkJCQkJPGxpPkRyYXcgdW5kZXJsaW5lIDwvbGk+DQorCQkJCQkJCQk8bGk+UmVjdGFuZ2xlIDwvbGk+DQorCQkJCQkJCQk8bGk+RWxsaXBzZSA8L2xpPg0KKwkJCQkJCQkJPGxpPkFycm93IDwvbGk+DQorCQkJCQkJCQk8bGk+Q2xpcGFydHM8L2xpPg0KKwkJCQkJCQk8L29sPgkJCQkJCQ0KKwkJCQkJCTwvbGk+DQorCQkJCQkJPGxpPg0KKwkJCQkJCQlSZXN0cmljdGVkIHJvb20gdGVzdGluZyDigJMgY2hhdCAoc2hvdWxkIGJlIHRlc3RlZCB3aXRoIGF0IGxlYXN0IDMgYXR0ZW5kZWVzKQ0KKwkJCQkJCQk8b2w+DQorCQkJCQkJCQk8bGk+U2VuZCBhIG1lc3NhZ2UgPC9saT4NCisJCQkJCQkJCTxsaT5TdGFydCBhIHByaXZhdGUgY2hhdCA8L2xpPg0KKwkJCQkJCQkJPGxpPkNoYXQgbW9kZXJhdGlvbiA8L2xpPg0KKwkJCQkJCQkJPGxpPkZvbnQgc3R5bGUgPC9saT4NCisJCQkJCQkJCTxsaT5FbW90aW9ucyA8L2xpPg0KKwkJCQkJCQkJPGxpPlNob3cvY29weSBjaGF0IGxvZyA8L2xpPg0KKwkJCQkJCQkJPGxpPkRlbGV0ZSBzZXJ2ZXIgY2hhdCBsb2cgPC9saT4NCisJCQkJCQkJPC9vbD4NCisJCQkJCQk8L2xpPg0KKwkJCQkJCTxsaT4NCisJCQkJCQkJUmVzdHJpY3RlZCByb29tIHRlc3Rpbmcg4oCTIHNjcmVlbiBzaGFyaW5nIGFuZCByZWNvcmRpbmdzIChzaG91bGQgYmUgdGVzdGVkIHdpdGggYXQgbGVhc3QgMyBhdHRlbmRlZXMpDQorCQkJCQkJCTxvbD4NCisJCQkJCQkJCTxsaT4iU2hhcmUgcmVjb3JkL3NjcmVlbiIgYnV0dG9uIGluIHRoZSByb29tIDwvbGk+DQorCQkJCQkJCQk8bGk+RGVza3RvcCBzaGFyZXI6IHN0YXJ0L3N0b3Agc2hhcmluZyA8L2xpPg0KKwkJCQkJCQkJPGxpPkNoYW5nZSB0aGUgc2hhcmVkIHNjcmVlbiBhcmVhIChYLW9mZnNldCwgWS1vZmZzZXQsIHdpZHRoLCBoZWlnaHQpIDwvbGk+DQorCQkJCQkJCQk8bGk+Q2hhbmdlIHRoZSBzY3JlZW4gc2hhcmluZyBxdWFsaXR5IDwvbGk+DQorCQkJCQkJCQk8bGk+U3RhcnQvc3RvcCByZWNvcmRpbmdzIOKAkyBuZWVkIHRvIGNoZWNrIHRoYXQgaXQgd29ya3MgYXMgZXhwZWN0ZWQgPC9saT4NCisJCQkJCQkJPC9vbD4NCisJCQkJCQk8L2xpPg0KKwkJCQkJCTxsaT4NCisJCQkJCQkJUmVzdHJpY3RlZCByb29tIHRlc3Rpbmcg4oCTIEFjdGlvbnMgbWVudQ0KKwkJCQkJCQk8b2w+DQorCQkJCQkJCQk8bGk+U2VuZCBpbnZpdGF0aW9uOiBzZW5kIEVuZ2xpc2ggYW5kIGxvY2FsaXplZCBtZXNzYWdlIDwvbGk+DQorCQkJCQkJCQk8bGk+U2VuZCBpbnZpdGF0aW9uIHdpdGggcGFzc3dvcmQgPC9saT4NCisJCQkJCQkJCTxsaT5TZW5kIGludml0YXRpb25zIHdpdGggMyBkaWZmZXJlbnQgdGltZSBwZXJpb2RzIDwvbGk+DQorCQkJCQkJCQk8bGk+Q2hhbmdlIHRpbWUgem9uZSBvZiB0aGUgaW52aXRhdGlvbiA8L2xpPg0KKwkJCQkJCQkJPGxpPkNoYW5nZSBsYW5ndWFnZSBvZiB0aGUgaW52aXRhdGlvbiA8L2xpPg0KKwkJCQkJCQkJPGxpPlNlbmQgaW52aXRhdGlvbiBzY3JlZW46ICJHZW5lcmF0ZSBVUkwiIGJ1dHRvbiDigJMgY2hlY2sgdGhlIHNhbWUgdGhpbmdzIGFzIGZvciB0aGUgaW52aXRhdGlvbnMgc2VudCBieSBlbWFpbCA8L2xpPg0KKwkJCQkJCQkJPGxpPkFwcGx5IHRvIGJlIG1vZGVyYXRvciA8L2xpPg0KKwkJCQkJCQkJPGxpPkFwcGx5IHRvIHdoaXRlYm9hcmQgYWNjZXNzIDwvbGk+DQorCQkJCQkJCQk8bGk+QXBwbHkgdG8gYXVkaW8vdmlkZW8gYWNjZXNzIDwvbGk+DQorCQkJCQkJCQk8bGk+Q3JlYXRlIGEgcG9sbCA8L2xpPg0KKwkJCQkJCQkJPGxpPlBvbGwgcmVzdWx0cyA8L2xpPg0KKwkJCQkJCQkJPGxpPlZvdGUgPC9saT4NCisJCQkJCQkJCTxsaT5EZWZhdWx0IHdoaXRlYm9hcmQgc2V0dGluZ3M6IGNoZWNrIGFsbCBvZiB0aGVtIDwvbGk+DQorCQkJCQkJCTwvb2w+DQorCQkJCQkJPC9saT4NCisJCQkJCQk8bGk+DQorCQkJCQkJCUNvbmZlcmVuY2Ugcm9vbSB0ZXN0aW5nDQorCQkJCQkJCTxvbD4NCisJCQkJCQkJCTxsaT5Vc2VyIGxpc3Qgc2hvdWxkIGxvb2sgaW4gYW5vdGhlciB3YXkgaW4gY29tcGFyZSB3aXRoIHJlc3RyaWN0ZWQgdHlwZSA8L2xpPg0KKwkJCQkJCQkJPGxpPkdlbmVyYWxseSwgYWxsIHNob3VsZCBsb29rIE9LIHdoZW4gZW50ZXIgdGhlIHJvb20gPC9saT4NCisJCQkJCQkJPC9vbD4NCisJCQkJCQk8L2xpPg0KKwkJCQkJCTxsaT4NCisJCQkJCQkJSW50ZXJ2aWV3IHJvb20gdGVzdGluZyAoc2hvdWxkIGJlIHRlc3RlZCB3aXRoIGF0IGxlYXN0IDMgYXR0ZW5kZWVzKQ0KKwkJCQkJCQk8b2w+DQorCQkJCQkJCQk8bGk+VXNlciBsaXN0IHNob3VsZCBsb29rIGFzIGV4cGVjdGVkIDwvbGk+DQorCQkJCQkJCQk8bGk+Q2hhbmdlIGEgdXNlciBmb3IgdmlkZW8gcG9kIDwvbGk+DQorCQkJCQkJCQk8bGk+U3RhcnQvc3RvcCByZWNvcmRpbmdzIDwvbGk+DQorCQkJCQkJCTwvb2w+DQorCQkJCQkJPC9saT4JCQkJCQkNCisJCQkJCTwvb2w+CQkJDQorCQkJCTwvbGk+DQorCQkJCTxsaT4NCisJCQkJCTxiPkFkbWluIEdVSSB0ZXN0czwvYj4NCisJCQkJCTxvbD4NCisJCQkJCQk8bGk+DQorCQkJCQkJCVVzZXJzDQorCQkJCQkJCTxvbD4NCisJCQkJCQkJCTxsaT5BZGQvZWRpdC9yZW1vdmUvc2VhcmNoIHVzZXIgaW4gdGhlIHRhYmxlIDwvbGk+DQorCQkJCQkJCQk8bGk+TW92ZSBiZXR3ZWVuIHNjcmVlbnMgd2hlcmUgdGhlcmUgYXJlIG1hbnkgdXNlcnMgaW4gdGhlIHRhYmxlIDwvbGk+DQorCQkJCQkJCQk8bGk+RWRpdCB0ZXh0IGZpZWxkcyA8L2xpPg0KKwkJCQkJCQkJPGxpPkNoYW5nZSBhIHRpbWUgem9uZSwgcmUtbG9naW4gYW5kIGNoZWNrIHRoZSBjYWxlbmRhciA8L2xpPg0KKwkJCQkJCQkJPGxpPkNoYW5nZSBhIGxhbmd1YWdlLCByZS1sb2dpbiBhbmQgY2hlY2sgdGhlIEdVSSBsYW5ndWFnZSA8L2xpPg0KKwkJCQkJCQkJPGxpPtCVLW1haWw6IGUtbWFpbHMgc2hvdWxkIHBhc3MgPC9saT4NCisJCQkJCQkJCTxsaT5QaG9uZSBhbmQgU01TIHN3aXRjaDogaWYgc2V0IGFuZCB0dXJuZWQgb24sIHNtcyBtZXNzYWdlcyBzaG91bGQgcGFzcyA8L2xpPg0KKwkJCQkJCQkJPGxpPkNoYW5nZSBhIHN0YXR1cyDigJMgbm9uLWFjdGl2ZSB1c2VyIGNhbm5vdCBsb2dpbiA8L2xpPg0KKwkJCQkJCQkJPGxpPkNoYW5nZSB1c2VyIHJvbGUgYW5kIHJlLWxvZ2luIDwvbGk+DQorCQkJCQkJCQk8bGk+Q2hhbmdlIHVzZXIgZ3JvdXAgIC0gdXNlciBoYXMgYW4gYWNjZXNzIG9ubHkgdG8gdGhlIHJvb21zIGJlbG9uZyB0byBoaXMgb3JnYW5pemF0aW9uIDwvbGk+DQorCQkJCQkJCQk8bGk+Q2hhbmdlIGNvbW11bml0eSBzZXR0aW5ncyBhbmQgY2hlY2sgPC9saT4NCisJCQkJCQkJPC9vbD4NCisJCQkJCQk8L2xpPg0KKwkJCQkJCTxsaT4NCisJCQkJCQkJQ29ubmVjdGlvbnMNCisJCQkJCQkJPG9sPg0KKwkJCQkJCQkJPGxpPlNob3VsZCBiZSB0ZXN0ZWQgd2l0aCBhdCBsZWFzdCAzIHVzZXJzIGluIHRoZSBzeXN0ZW0gPC9saT4NCisJCQkJCQkJCTxsaT5TZXNzaW9udmFycyB0YWJsZSBzaG91bGQgYmUgc2hvd24gY29ycmVjdGx5IDwvbGk+DQorCQkJCQkJCQk8bGk+S2ljayB0aGUgdXNlciBmcm9tIHRoZSBzeXN0ZW0gPC9saT4NCisJCQkJCQkJPC9vbD4NCisJCQkJCQk8L2xpPg0KKwkJCQkJCTxsaT4NCisJCQkJCQkJT3JnYW5pemF0aW9ucyANCisJCQkJCQkJPG9sPg0KKwkJCQkJCQkJPGxpPkFkZC9yZW1vdmUvZWRpdC9zZWFyY2ggYW4gb3JnYW5pemF0aW9uIDwvbGk+DQorCQkJCQkJCQk8bGk+QWRkL3JlbW92ZSBhIHVzZXIgZnJvbSB0aGUgdXNlciBsaXN0IG9mIHNlbGVjdGVkIG9yZ2FuaXphdGlvbiA8L2xpPg0KKwkJCQkJCQk8L29sPg0KKwkJCQkJCTwvbGk+DQorCQkJCQkJPGxpPg0KKwkJCQkJCQlDb25mZXJlbmNlIHJvb21zDQorCQkJCQkJCTxvbD4NCisJCQkJCQkJCTxsaT5BZGQvcmVtb3ZlL2VkaXQvc2VhcmNoIGEgcm9vbSA8L2xpPg0KKwkJCQkJCQkJPGxpPlVzZXIgbGlzdCBmb3IgdGhlIGdpdmVuIHJvb20gc2hvdWxkIGNvbnRhaW4gYWN0dWFsIGxpc3QgPC9saT4NCisJCQkJCQkJCTxsaT5UdXJuIHRoZSBNb2RlcmF0aW9uIHN3aXRjaCBvbi9vZmYgYW5kIGVudGVyIHRoZSByb29tIDwvbGk+DQorCQkJCQkJCQk8bGk+QWRkL3JlbW92ZSBhIHVzZXIgdG8gdGhlIGRlZmF1bHQgbW9kZXJhdG9yIGxpc3QgPC9saT4NCisJCQkJCQkJCTxsaT5DaGVjayBtYXggcGFydGljaXBhbnRzIG51bWJlciBpbiB0aGUgcm9vbSA8L2xpPg0KKwkJCQkJCQkJPGxpPkNoYW5nZSByb29tIHR5cGUgYW5kIGVudGVyIHRoZSByb29tIDwvbGk+DQorCQkJCQkJCQk8bGk+VHVybiBwdWJsaWMgc3dpdGNoIG9uL29mZiA8L2xpPg0KKwkJCQkJCQkJPGxpPlR1cm4gIkRlbW8gc3dpdGNoIiBvbi9vZmYsIGNoYW5nZSB0aGUgZGVtb25zdHJhdGlvbiB0aW1lIDwvbGk+DQorCQkJCQkJCQk8bGk+VHVybiAiQWxsb3cgdXNlciBxdWVzdGlvbnMiIG9uL29mZiBhbmQgZW50ZXIgdGhlIHJvb20gPC9saT4NCisJCQkJCQkJCTxsaT5UdXJuICJBdWRpbyBvbmx5IiBzd2l0Y2ggb24vb2ZmIGFuZCBlbnRlciB0aGUgcm9vbSA8L2xpPg0KKwkJCQkJCQkJPGxpPlNldCAiQ2xvc2UgVVJMIiB0byBzb21lIFVSTCwgZW50ZXIgdGhlIHJvb20gYW5kIHRoZW4gZXhpdCDigJMgeW91IHNob3VsZCBiZSByZS1kaXJlY3RlZCBjb3JyZXNwb25kaW5nbHkgPC9saT4NCisJCQkJCQkJCTxsaT5DaGVjayB0aGF0IFNJUCBzZXR0aW5ncyB3b3JrIGFzIGV4cGVjdGVkIDwvbGk+DQorCQkJCQkJCQk8bGk+Q2hlY2sgdGhhdCAiQWxsb3cgcmVjb3JkaW5ncyIgc3dpdGNoICB3b3JrcyBhcyBleHBlY3RlZCA8L2xpPg0KKwkJCQkJCQkJPGxpPkNoZWNrIHRoYXQgIkxheW91dCBvcHRpb25zIiBzd2l0Y2ggd29yayBhcyBleHBlY3RlZCA8L2xpPg0KKwkJCQkJCQkJPGxpPkNoZWNrIHRoYXQgIkFsbG93IGZvbnQgc3R5bGVzIiBzd2l0Y2ggd29ya3MgYXMgZXhwZWN0ZWQgPC9saT4NCisJCQkJCQkJPC9vbD4NCisJCQkJCQk8L2xpPg0KKwkJCQkJCTxsaT4JCQkJCQ0KKwkJCQkJCQlDb25maWd1cmF0aW9uDQorCQkJCQkJCTxvbD4NCisJCQkJCQkJCTxsaT5BbGxvd19mcm9udGVuZF9yZWdpc3RlciA8L2xpPg0KKwkJCQkJCQkJPGxpPk1haWwgc2VydmVyIHNldHRpbmdzIDwvbGk+DQorCQkJCQkJCQk8bGk+U01TIHByb3ZpZGVyIHNldHRpbmdzIDwvbGk+DQorCQkJCQkJCQk8bGk+QXBwbGljYXRpb24ubmFtZSA8L2xpPg0KKwkJCQkJCQkJPGxpPkRlZmF1bHRfbGFuZ19pZCA8L2xpPg0KKwkJCQkJCQkJPGxpPmRlZmF1bHQgdGltZSB6b25lIDwvbGk+DQorCQkJCQkJCQk8bGk+U0lQIHNldHRpbmdzIDwvbGk+DQorCQkJCQkJCQk8bGk+UmVtaW5kZXIgbWludXRlcyA8L2xpPg0KKwkJCQkJCQk8L29sPg0KKwkJCQkJCTwvbGk+DQorCQkJCQkJPGxpPgkJCQkJDQorCQkJCQkJCUxhbmd1YWdlIGVkaXRvciANCisJCQkJCQkJPG9sPg0KKwkJCQkJCQkJPGxpPkFkZC9yZW1vdmUvZWRpdC9zZWFyY2ggYSBrZXkgPC9saT4NCisJCQkJCQkJCTxsaT5JbXBvcnQvZXhwb3J0IG9mIGxvY2FsaXphdGlvbiBmaWxlcyA8L2xpPg0KKwkJCQkJCQk8L29sPg0KKwkJCQkJCTwvbGk+DQorCQkJCQkJPGxpPgkJCQkJDQorCQkJCQkJCUxEQVA6IEFkZC9yZW1vdmUvZWRpdC9zZWFyY2ggYSByZWNvcmQNCisJCQkJCQk8L2xpPg0KKwkJCQkJCTxsaT4NCisJCQkJCQkJQmFja3VwDQorCQkJCQkJCTxvbD4NCisJCQkJCQkJCTxsaT5TeXN0ZW0gaW1wb3J0IDwvbGk+DQorCQkJCQkJCQk8bGk+U3lzdGVtIGJhY2t1cCA8L2xpPg0KKwkJCQkJCQkJPGxpPlRCRCDigJMgbmVlZCB0byBhZGQgdGVzdHMgZm9yIGNvbW1hbmQgbGluZSBhZG1pbiBoZXJlIDwvbGk+DQorCQkJCQkJCTwvb2w+IA0KKwkJCQkJCTwvbGk+DQorCQkJCQkJPGxpPg0KKwkJCQkJCQlTZXJ2ZXJzOiBBZGQvcmVtb3ZlL2VkaXQvc2VhcmNoIGEgc2VydmVyDQorCQkJCQkJPC9saT4JCQkJCQkNCisJCQkJCTwvb2w+DQorCQkJCTwvbGk+DQorCQkJCTxsaT4NCisJCQkJCTxiPlNJUCBpbnRlZ3JhdGlvbiB0ZXN0czwvYj4gKHNob3VsZCBiZSB0ZXN0ZWQgd2l0aCBhdCBsZWFzdCAzIGF0dGVuZGVlcyBpbiB0aGUgcm9vbTsgZm9yIHJlc3RyaWN0ZWQgYW5kIGludGVydmlldyByb29tcykNCisJCQkJCTxvbD4NCisJCQkJCQk8bGk+Q2FsbCBmcm9tIHRoZSByb29tIHRvIHRoZSBleHRlcm5hbCBwaG9uZSBudW1iZXIgPC9saT4NCisJCQkJCQk8bGk+Q2FsbCBmcm9tIGV4dGVybmFsIHBob25lIG51bWJlciB0byB0aGUgcm9vbSA8L2xpPg0KKwkJCQkJCTxsaT5DYWxsIGZyb20gdGhlIHNvZnR3YXJlIHBob25lIHRvIHRoZSByb29tIDwvbGk+DQorCQkJCQkJPGxpPkNhbGwgZnJvbSB0aGUgc29mdHdhcmUgcGhvbmUgd2l0aCB2aWRlbyB0byB0aGUgcm9vbSA8L2xpPg0KKwkJCQkJPC9vbD4NCisJCQkJPC9saT4NCisJCQkJPGxpPg0KKwkJCQkJPGI+TmV0d29yayB0ZXN0aW5nIHNjcmlwdDwvYj4NCisJCQkJPC9saT4NCisJCQkJPGxpPg0KKwkJCQkJPGI+U2l0ZSBpbnRlZ3JhdGlvbiB0ZXN0czwvYj4NCisJCQkJCTxvbD4NCisJCQkJCQk8bGk+RW50ZXIgT3Blbk1lZXRpbmdzIHJvb20gZnJvbSBNb29kZGxlIHNpdGUgPC9saT4NCisJCQkJCQk8bGk+Q2hlY2sgdGhhdCByZWNvcmRpbmdzIGxpbmsgYXJlIHNob3duIG9uIHRoZSBNb29kbGUgc2l0ZSA8L2xpPg0KKwkJCQkJCTxsaT5FbnRlciBPcGVuTWVldGluZ3Mgcm9vbSBmcm9tIEpvb21sYSBzaXRlIDwvbGk+DQorCQkJCQkJPGxpPkNoZWNrIHRoYXQgcmVjb3JkaW5ncyBsaW5rIGFyZSBzaG93biBvbiB0aGUgSm9vbWxhIHNpdGUgPC9saT4NCisJCQkJCQk8bGk+RW50ZXIgT3Blbk1lZXRpbmdzIHJvb20gZnJvbSBEcnVwYWwgc2l0ZSA8L2xpPg0KKwkJCQkJCTxsaT5DaGVjayB0aGF0IHJlY29yZGluZ3MgbGluayBhcmUgc2hvd24gb24gdGhlIERydXBhbCBzaXRlIDwvbGk+DQorCQkJCQk8L29sPg0KKwkJCQk8L2xpPg0KKwkJCTwvb2w+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDwhLS0gRk9PVEVSIC0tPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgYWxpZ249ImNlbnRlciI+PGZvbnQgY29sb3I9IiMxMjM0NjUiIHNpemU9Ii0xIj48ZW0+CisgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAmIzE2OTsgMjAwMy0yMDEzLCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyAgICAgICAgICAgICAgICAgICAgPC9lbT48L2ZvbnQ+PC9kaXY+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvYm9keT4KKyAgICA8L2h0bWw+Cis8IS0tIGVuZCB0aGUgcHJvY2Vzc2luZyAtLT4KKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKwpkaWZmIC0tZ2l0IGEvZG9jcy9Nb29kbGVQbHVnaW4uaHRtbCBiL2RvY3MvTW9vZGxlUGx1Z2luLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTMwNzI2NgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvTW9vZGxlUGx1Z2luLmh0bWwKQEAgLTAsMCArMSw3NjIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgorCis8IS0tCitDb3B5cmlnaHQgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKworPCEtLSBDb250ZW50IFN0eWxlc2hlZXQgZm9yIFNpdGUgLS0+CisKKyAgICAgICAgCis8IS0tIHN0YXJ0IHRoZSBwcm9jZXNzaW5nIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8IS0tIEdFTkVSQVRFRCBGSUxFLCBETyBOT1QgRURJVCwgRURJVCBUSEUgWE1MIEZJTEUgSU4geGRvY3MgSU5TVEVBRCEgLS0+CisgICAgPCEtLSBNYWluIFBhZ2UgU2VjdGlvbiAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGh0bWw+CisgICAgICAgIDxoZWFkPgorICAgICAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiLz4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iCisJCQlPcGVuTWVldGluZ3MgVGVhbQorCQkiPgorICAgICAgICAgICAgPG1ldGEgbmFtZT0iZW1haWwiIGNvbnRlbnQ9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+CisgICAgICAgICAgICAKKyAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgPHRpdGxlPkFwYWNoZSBPcGVuTWVldGluZ3MgLSBNb29kbGUgUGx1Z2luPC90aXRsZT4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9vcGVubWVldGluZ3MuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9qcXVlcnktdWkuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2luLXNsaWRlci1zdHlsZXMuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2xvcmJveC5jc3MiIC8+CisgICAgICAgICAgICAKKwkJCTwhLS0gQWRkIGpRdWVyeSBsaWJyYXJ5IC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LTEuNy4xLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPCEtLSBBZGQgY29pbnNsaWRlciBwbHVnaW5zIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvY29pbi1zbGlkZXIubWluLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPCEtLSBBZGQgY29sb3Jib3ggcGx1Z2luIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LmNvbG9yYm94LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmNvcmUuanMiPjwvc2NyaXB0PgorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS53aWRnZXQuanMiPjwvc2NyaXB0PgorCQkKKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkuYWNjb3JkaW9uLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdD4KKwkJCSQoZnVuY3Rpb24oKSB7CisJCQkJJCggIiNhY2NvcmRpb24iICkuYWNjb3JkaW9uKHsKKwkJCQkJYXV0b0hlaWdodDogZmFsc2UsCisJCQkJCW5hdmlnYXRpb246IHRydWUsCisJCQkJCW5hdmlnYXRpb25GaWx0ZXI6IGZ1bmN0aW9uICgpIHsKKwkJCQkJCXZhciBzaWRlYmFySHJlZkFycmF5ID0gdGhpcy5ocmVmLnNwbGl0KCIvIik7CisgICAgCQkJCQl2YXIgc2lkZUJhckxhc3RTdHJpbmcgPSBzaWRlYmFySHJlZkFycmF5W3NpZGViYXJIcmVmQXJyYXkubGVuZ3RoIC0gMV0udG9Mb3dlckNhc2UoKTsKKwkJCQkJCQorCQkJCQkJaWYgKHNpZGVCYXJMYXN0U3RyaW5nLmluZGV4T2YoIiMiKSA9PSAtMSkgeworCQkJCQkJCXJldHVybiBmYWxzZTsKKwkJCQkJCX0KKwkJCQkJCQorCQkJCQkJCQkJCQkJLyogZG9jdW1lbnQubG9jYXRpb24uaHJlZiAqLworCQkJCQkJdmFyIGN1cnJlbnRTZWN0aW9uID0gIiI7CisJCQkJCQkKKwkJCQkJCXZhciBjdXJyZW50TG9jYXRpb24gPSAiIjsKKwkJCQkJCXZhciBjdXJyZW50TGluayA9ICIiOworCQkJCQkJaWYgKGZhbHNlKSB7CisJCQkJCQkKKwkJCQkJCX0KKyAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5kZXguaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5kZXguaHRtbCIuc3Vic3RyKDEsICIvaW5kZXguaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9saWNlbnNlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2xpY2Vuc2UuaHRtbCIuc3Vic3RyKDEsICIvbGljZW5zZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5zdWJzdHIoMSwgImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZG93bmxvYWRzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2Rvd25sb2Fkcy5odG1sIi5zdWJzdHIoMSwgIi9kb3dubG9hZHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiLnN1YnN0cigxLCAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9pbnN0YWxsYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5zdGFsbGF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL2luc3RhbGxhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1VwZ3JhZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvVXBncmFkZS5odG1sIi5zdWJzdHIoMSwgIi9VcGdyYWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIuc3Vic3RyKDEsICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db21tYW5kTGluZUFkbWluLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIuc3Vic3RyKDEsICIvQ29tbWFuZExpbmVBZG1pbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9nZXQtaW52b2x2ZWQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9nZXQtaW52b2x2ZWQuaHRtbCIuc3Vic3RyKDEsICIvZ2V0LWludm9sdmVkLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGVhbS1saXN0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdGVhbS1saXN0Lmh0bWwiLnN1YnN0cigxLCAiL3RlYW0tbGlzdC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL21haWwtbGlzdHMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9tYWlsLWxpc3RzLmh0bWwiLnN1YnN0cigxLCAiL21haWwtbGlzdHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLnN1YnN0cigxLCAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3N2bi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvc3ZuLmh0bWwiLnN1YnN0cigxLCAiL3N2bi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIuc3Vic3RyKDEsICJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2RlcGVuZGVuY2llcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZGVwZW5kZW5jaWVzLmh0bWwiLnN1YnN0cigxLCAiL2RlcGVuZGVuY2llcy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pVbml0VGVzdGluZy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSlVuaXRUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL0pVbml0VGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01hbnVhbFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01hbnVhbFRlc3RpbmcuaHRtbCIuc3Vic3RyKDEsICIvTWFudWFsVGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlbGVhc2VHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVsZWFzZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1JlbGVhc2VHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYnNpdGVHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvV2Vic2l0ZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1dlYnNpdGVHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Tb2FwUmVzdEFQSS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU29hcFJlc3RBUEkuaHRtbCIuc3Vic3RyKDEsICIvU29hcFJlc3RBUEkuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZXN0QVBJU2FtcGxlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZXN0QVBJU2FtcGxlLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RBUElTYW1wbGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MZGFwQW5kQURTLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9MZGFwQW5kQURTLmh0bWwiLnN1YnN0cigxLCAiL0xkYXBBbmRBRFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FcnJvcnNUYWJsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRXJyb3JzVGFibGUuaHRtbCIuc3Vic3RyKDEsICIvRXJyb3JzVGFibGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTW9vZGxlUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01vb2RsZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Nb29kbGVQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TYWthaVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TYWthaVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TYWthaVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ppcmFQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSmlyYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9KaXJhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSm9vbWxhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pvb21sYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Kb29tbGFQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EcnVwYWxQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRHJ1cGFsUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0RydXBhbFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0JpdHJpeFBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CaXRyaXhQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvQml0cml4UGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TdWdhckNSTVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TdWdhckNSTVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TdWdhckNSTVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlZG1pbmVQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVkbWluZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9SZWRtaW5lUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSUJNREIyQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSUJNREIyQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL0lCTURCMkNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3JhY2xlQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3JhY2xlQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL09yYWNsZUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTXlTUUxDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9NeVNRTENvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9NeVNRTENvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUG9zdGdyZXNDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MYW5ndWFnZUVkaXRvci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLnN1YnN0cigxLCAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5zdWJzdHIoMSwgIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FZGl0VGVtcGxhdGVzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRWRpdFRlbXBsYXRlcy5odG1sIi5zdWJzdHIoMSwgIi9FZGl0VGVtcGxhdGVzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1BvcnRTZXR0aW5ncy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1BvcnRTZXR0aW5ncy5odG1sIi5zdWJzdHIoMSwgIi9Qb3J0U2V0dGluZ3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5zdWJzdHIoMSwgIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5zdWJzdHIoMSwgIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EYXNoYm9hcmQuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9EYXNoYm9hcmQuaHRtbCIuc3Vic3RyKDEsICIvRGFzaGJvYXJkLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLnN1YnN0cigxLCAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Ib3RLZXlzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSG90S2V5cy5odG1sIi5zdWJzdHIoMSwgIi9Ib3RLZXlzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYmFwcE5hbWVQYXRoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvV2ViYXBwTmFtZVBhdGguaHRtbCIuc3Vic3RyKDEsICIvV2ViYXBwTmFtZVBhdGguaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL05hdmlnYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9OYXZpZ2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL05hdmlnYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLnN1YnN0cigxLCAiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIuc3Vic3RyKDEsICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIuc3Vic3RyKDEsICIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUlRNUFNBbmRIVFRQUy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1JUTVBTQW5kSFRUUFMuaHRtbCIuc3Vic3RyKDEsICIvUlRNUFNBbmRIVFRQUy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5zdWJzdHIoMSwgIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5zdWJzdHIoMSwgIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NsdXN0ZXJpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DbHVzdGVyaW5nLmh0bWwiLnN1YnN0cigxLCAiL0NsdXN0ZXJpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvR2V0VmVyc2lvbkluZm8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9HZXRWZXJzaW9uSW5mby5odG1sIi5zdWJzdHIoMSwgIi9HZXRWZXJzaW9uSW5mby5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkgICAgCQkJCQkKKyAgICAJCQkJCWN1cnJlbnRMaW5rID0gY3VycmVudExpbmsudG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCWN1cnJlbnRMb2NhdGlvbiA9IGN1cnJlbnRMb2NhdGlvbi50b0xvd2VyQ2FzZSgpOworICAgIAkJCQkJCisJCQkJCQlyZXR1cm4gc2lkZUJhckxhc3RTdHJpbmcgPT0gY3VycmVudExpbmsrIiMiK2N1cnJlbnRMb2NhdGlvbjsKKwkJCQkJfQorCQkJCX0pOworCQkJfSk7CisJCQk8L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCQkJCSQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgeworCQkJCQkkKCcuZmFuY3lib3gtYnV0dG9ucycpLmNvbG9yYm94KHtyZWw6J2ZhbmN5Ym94LWJ1dHRvbnMnLHdpZHRoOiI3NSUiLCBoZWlnaHQ6Ijc1JSJ9KTsKKwkJCQkJJCgnI2FjY29yZGlvbiBhJykuZWFjaChmdW5jdGlvbigpIHsKKwkJCQkgICAgICB2YXIgYSA9ICQodGhpcyk7CisJCQkJICAgICAgdmFyIGhyZWYgPSBhLmF0dHIoImhyZWYiKTsKKwkJCQkgICAgICBpZiAoaHJlZi5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkgICAgICAJICB2YXIgY29tcGFyZUl0ID0gaHJlZi5zdWJzdHIoMiwgaHJlZi5sZW5ndGgpOworCQkJCQkgICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKGNvbXBhcmVJdCkhPSAtMSkgeworCQkJCQkgICAgICAgYS5hZGRDbGFzcygnYWN0aXZlJyk7CisJCQkJCSAgICAgIH0KKwkJCQkgICAgICB9CisJCQkJICAgIH0pOworCQkJCQkkKCcjY29pbi1zbGlkZXInKS5jb2luc2xpZGVyKHsgd2lkdGg6IDY0MCxoZWlnaHQ6IDQwMCwgZGVsYXk6IDQwMDAgIH0pOwkJCQkJCisJCQkJfSk7CisJCQk8L3NjcmlwdD4JCisJCQkJCQkKKwkJCTxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisJCQkJLmZhbmN5Ym94LWN1c3RvbSAuZmFuY3lib3gtb3V0ZXIgeworCQkJCQlib3gtc2hhZG93OiAwIDAgNTBweCAjMjIyOworCQkJCX0KKwkJCTwvc3R5bGU+CisgICAgICAgIDwvaGVhZD4KKworICAgICAgICA8Ym9keSBiZ2NvbG9yPSIjZmZmZmZmIiB0ZXh0PSIjMDAwMDAwIiBsaW5rPSIjMTIzNDY1IiB2bGluaz0iIzEyMzQ2NSIgYWxpbms9IiMwMDAwMDAiPiAgCisgICAgICAgIAk8ZGl2IGNsYXNzPSJtYWluYm9keSIgc3R5bGU9IndpZHRoOiAxMDAlOyI+CisgICAgICAgIAk8ZGl2IGNsYXNzPSJzdXBlcmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIj4KKyAgICAgICAgICAgICAgICA8IS0tIFRPUCBJTUFHRSAtLT4KKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCI+Cis8YSBocmVmPSJodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvIj48aW1nIHNyYz0iLi9pbWFnZXMvbG9nby0yLmpwZyIgYWx0PSJBcGFjaGUgT3Blbk1lZXRpbmdzIiBib3JkZXI9IjAiLz48L2E+Cis8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCIgPgorCTxhIGhyZWY9ImRlbW8uaHRtbCI+RGVtbzwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJkb3dubG9hZHMuaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5Eb3dubG9hZDwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJpbnN0YWxsYXRpb24uaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5JbnN0YWxsYXRpb248L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MiIHRhcmdldD0iX0JMQU5LIj5XaWtpPC9hPgorCTxzcGFuPiZuYnNwOzwvc3Bhbj4KKzwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjQiPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8IS0tIExFRlQgU0lERSBOQVZJR0FUSU9OIC0tPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiIG5vd3JhcD0ibm93cmFwIj4KKworICAgICAgICAgICAgICAgICAgICA8IS0tIHNwZWNpYWwgQUNvbiBMb2dvIC0gbGVhdmUgaGVyZSBmb3IgbmV4dCB0aW1lCisgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9hcGFjaGVjb24uY29tLzIwMDUvVVMvIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vYXBhY2hlLm9yZy9pbWFnZXMvYWMyMDA1dXNfYmx1ZV8xMjV4MTI1LmpwZyIgaGVpZ2h0PSIxMjUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPSIxMjUiIGJvcmRlcj0iMCIgYWx0PSJBcGFjaGVDb24gVVMgMjAwNSIgLz4KKyAgICAgICAgICAgICAgICAgICAgPC9hPiAgLS0+CisKKyAgICAgICAgICAgICAgICAgICA8IS0tIHJlZ3VsYXIgbWVudSAtLT4KKworICAgICAgICAgICAgICAgICAgICAKKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8ZGl2IGlkPSJhY2NvcmRpb24iIHN0eWxlPSJ3aWR0aDogMTAwJSI+CisgICAgCisgICAgICAgICAgICAJPGgzPjxhIGhyZWY9IiNHZW5lcmFsIj5HZW5lcmFsPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9pbmRleC5odG1sIj5Ib21lPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9saWNlbnNlLmh0bWwiPkxpY2Vuc2U8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5BU0Y8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2Rvd25sb2Fkcy5odG1sIj5Eb3dubG9hZHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIj5Db21tZXJjaWFsIFN1cHBvcnQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0luc3RhbGxhdGlvbmFuZFVwZ3JhZGUiPkluc3RhbGxhdGlvbiBhbmQgVXBncmFkZTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5zdGFsbGF0aW9uLmh0bWwiPkluc3RhbGxhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vVXBncmFkZS5odG1sIj5VcGdyYWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLmh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIj5UdXRvcmlhbHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCI+Q29tbWFuZCBMaW5lIEFkbWluPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb21tdW5pdHkiPkNvbW11bml0eTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZ2V0LWludm9sdmVkLmh0bWwiPkdldCBJbnZvbHZlZDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdGVhbS1saXN0Lmh0bWwiPkNvbW1pdHRlcnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL21haWwtbGlzdHMuaHRtbCI+TWFpbGluZyBMaXN0czwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIj5XaWtpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNEZXZlbG9wbWVudCI+RGV2ZWxvcG1lbnQ8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3N2bi5odG1sIj5Tb3VyY2UgQ29kZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiPkJ1Z3MgLyBJc3N1ZXMgKEpJUkEpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kZXBlbmRlbmNpZXMuaHRtbCI+RGVwZW5kZW5jaWVzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CdWlsZEluc3RydWN0aW9ucy5odG1sIj5CdWlsZCBJbnN0cnVjdGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pVbml0VGVzdGluZy5odG1sIj5KVW5pdCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9NYW51YWxUZXN0aW5nLmh0bWwiPk1hbnVhbCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWxlYXNlR3VpZGUuaHRtbCI+UmVsZWFzZSBHdWlkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vV2Vic2l0ZUd1aWRlLmh0bWwiPldlYnNpdGUgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0ludGVncmF0aW9uIj5JbnRlZ3JhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU29hcFJlc3RBUEkuaHRtbCI+U09BUC9SRVNUIEFQSTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVzdEFQSVNhbXBsZS5odG1sIj5SRVNUIEFQSSBTYW1wbGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0xkYXBBbmRBRFMuaHRtbCI+TGRhcCBhbmQgQURTPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIj5Wb0lQIGFuZCBTSVA8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0Vycm9yc1RhYmxlLmh0bWwiPkVycm9ycyB0YWJsZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjUGx1Z2lucyI+UGx1Z2luczwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTW9vZGxlUGx1Z2luLmh0bWwiPk1vb2RsZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Nha2FpUGx1Z2luLmh0bWwiPlNha2FpIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSmlyYVBsdWdpbi5odG1sIj5KaXJhIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSm9vbWxhUGx1Z2luLmh0bWwiPkpvb21sYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0RydXBhbFBsdWdpbi5odG1sIj5EcnVwYWwgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CaXRyaXhQbHVnaW4uaHRtbCI+Qml0cml4IFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQ29uZmx1ZW5jZVBsdWdpbi5odG1sIj5Db25mbHVlbmNlIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU3VnYXJDUk1QbHVnaW4uaHRtbCI+U3VnYXJDUk0gUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWRtaW5lUGx1Z2luLmh0bWwiPlJlZG1pbmUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb25maWd1cmF0aW9uIj5Db25maWd1cmF0aW9uPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5EQiBTYW1wbGUgQ29uZmlndXJhdGlvbnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIj5BcGFjaGUgRGVyYnk8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0lCTURCMkNvbmZpZy5odG1sIj5JQk0gREIyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcmFjbGVDb25maWcuaHRtbCI+T3JhY2xlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9NeVNRTENvbmZpZy5odG1sIj5NeVNRTDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9zdGdyZXNDb25maWcuaHRtbCI+UG9zdGdyZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkxvY2FsaXphdGlvbiBhbmQgbGFuZ3VhZ2VzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCI+SW50ZXJuYXRpb25hbGlzYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0xhbmd1YWdlRWRpdG9yLmh0bWwiPkxhbmd1YWdlRWRpdG9yPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiPlRpbWVab25lSGFuZGxpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0VkaXRUZW1wbGF0ZXMuaHRtbCI+RWRpdFRlbXBsYXRlczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TkFUIFBvcnQgU2V0dGluZ3M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Qb3J0U2V0dGluZ3MuaHRtbCI+UG9ydCBzZXR0aW5nczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+UGVyZm9ybWFuY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIj5KVk0gcGVyZm9ybWFuY2UgdHVuaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Vc2VyIEludGVyZmFjZTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCI+VGhlbWVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9EYXNoYm9hcmQuaHRtbCI+RGFzaGJvYXJkPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIj5XZWJjYW0gcmVzb2x1dGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIj5Sb29tIGxheW91dCBvcHRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Ib3RLZXlzLmh0bWwiPkhvdCBLZXlzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5DdXN0b21pemF0aW9uPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViYXBwTmFtZVBhdGguaHRtbCI+V2ViYXBwIG5hbWUvcGF0aDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTmF2aWdhdGlvbi5odG1sIj5OYXZpZ2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiPkNhbGVuZGFyIGFuZCB0aW1lem9uZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIj5DdXN0b20gcm9vbSB0eXBlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIj5DdXN0b20gY3R5cHQgbWVjaGFuaXNtPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIj5HZW5lcmFsIENvbmZpZ3VyYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlNlY3VyaXR5PC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUmVzdHJpY3RlZEFjY2Vzcy5odG1sIj5SZXN0cmljdGVkIEFjY2VzczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUlRNUFNBbmRIVFRQUy5odG1sIj5SVE1QUyBhbmQgSFRUUFM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNvbnZlcnRlcnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiPk9wZW5PZmZpY2UgQ29udmVydGVyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiPkZGTVBFRyBWZXJzaW9uIFN3aXRjaDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q2x1c3RlcmluZzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NsdXN0ZXJpbmcuaHRtbCI+Q2x1c3RlcmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TWlzYzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0dldFZlcnNpb25JbmZvLmh0bWwiPkdldCB2ZXJzaW9uIGluZm88L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAorICAgIDwvZGl2PgorICAgICAKKyAgICA8YnIvPgorICAgIAorICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJNb29kbGUgUGx1Z2luIGZvciBPcGVuTWVldGluZ3MiPjxzdHJvbmc+TW9vZGxlIFBsdWdpbiBmb3IgT3Blbk1lZXRpbmdzPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJWW91IGNhbiBnZXQgdGhlIGxhdGVzdCBWZXJzaW9uIG9mIHRoZSBQbHVnaW4gZm9yIE1vb2RsZSBmcm9tIHRoZQ0KKwkJCQk8YSBocmVmPSJkb3dubG9hZHMuaHRtbCI+ZG93bmxvYWRzPC9hPg0KKwkJCQkuDQorCQkJCTxiciAvPg0KKwkJCQlZb3UgY2FuIGZpbmQgdGhlIE9wZW5NZWV0aW5ncyBQbHVnaW4gYWxzbyBpbiB0aGUNCisJCQkJPGEgaHJlZj0iaHR0cDovL21vb2RsZS5vcmcvcGx1Z2lucy92aWV3LnBocD9wbHVnaW49bW9kX29wZW5tZWV0aW5ncyIgdGFyZ2V0PSJfQkxBTksiIHJlbD0ibm9mb2xsb3ciPk1vb2RsZSBQbHVnaW4gZGF0YWJhc2U8L2E+DQorCQkJCS4NCisJCQkJPGJyIC8+DQorCQkJCUEgZGVtbyB2ZXJzaW9uIG9mIHRoZSBNb29kbGUgcGx1Z2luIGlzIGF2YWlsYWJsZSBhdA0KKwkJCQk8YSBocmVmPSJodHRwOi8vbW9vZGxlLm9wZW5tZWV0aW5ncy5kZSIgdGFyZ2V0PSJfQkxBTksiIHJlbD0ibm9mb2xsb3ciPm1vb2RsZS5vcGVubWVldGluZ3MuZGUNCisJCQkJPC9hPg0KKwkJCQkuDQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iSW5zdGFsbGF0aW9uIG9mIHRoZSBNb29kbGUgUGx1Z2luIGZvciBBcGFjaGUgT3Blbk1lZXRpbmdzIj48c3Ryb25nPkluc3RhbGxhdGlvbiBvZiB0aGUgTW9vZGxlIFBsdWdpbiBmb3IgQXBhY2hlIE9wZW5NZWV0aW5nczwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgICA8aHIgc3R5bGU9IndpZHRoOjEwMCU7IGNvbG9yOiM5OTk5OTk7IGJhY2tncm91bmQtY29sb3I6Izk5OTk5OTsgaGVpZ2h0OjFweDsgYm9yZGVyOjBweDsiLz4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQorCQkJCVlvdSBzaW1wbHkgZG93bmxvYWQgdGhlIFpJUCBvciBUQVIgcGFja2FnZSBhbmQgdW56aXAgaXQgdG8gTW9vZGxlJ3MgIm1vZCIgZGlyZWN0b3J5LjxiciAvPg0KKwkJCQlFdmVudHVhbGx5IHlvdSBuZWVkIHRvIHVuemlwIHRoZSBwYWNrYWdlIGludG8gYSBmb2xkZXIgY2FsbGVkICJvcGVubWVldGluZ3MiLg0KKwkJCQlUaGUgZm9sZGVyIHN0cnVjdHVyZSBpczo8YnIgLz4NCisJCQkJJE1PT0RMRV9IT01FL21vZC9vcGVubWVldGluZ3MvKi5waHANCisJCQkJPGJyIC8+DQorCQkJCVRoZW4geW91IHZpc2l0IHRoZSBhZG1pbiBpbnRlcmZhY2Ugb2YgTW9vZGxlLCBmb3IgZXhhbXBsZQ0KKwkJCQk8YSBocmVmPSJodHRwOi8vJHlvdXJfbW9vZGxlX2hvc3QvJE1PT0RMRV9XV1dfUk9PVC9hZG1pbiIgdGFyZ2V0PSJfQkxBTksiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly8keW91cl9tb29kbGVfaG9zdC8kTU9PRExFX1dXV19ST09UL2FkbWluPC9hPiANCisJCQkJCTxiciAvPg0KKwkJCQlNb29kbGUgd2lsbCBkZXRlY3QgdGhhdCB0aGVyZSBpcyBhIG5ldyBwbHVnaW4gYW5kIHdpbGwgc2hvdyB0aGUgcGx1Z2luIGluc3RhbGxhdGlvbiBzY3JlZW46DQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgY2xhc3M9ImZhbmN5Ym94LWJ1dHRvbnMiIGhyZWY9ImltYWdlcy9tb29kbGVfaW5zdGFsbF9wbHVnaW4ucG5nIj4NCisJCQkJPGltZyBzcmM9ImltYWdlcy9tb29kbGVfaW5zdGFsbF9wbHVnaW4ucG5nIiBhbHQ9IiIgd2lkdGg9IjQzMCIgaGVpZ2h0PSIyMjAiIC8+DQorCQkJPC9hPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQorCQkJCUFmdGVyIHlvdSBoYXZlIGNsaWNrZWQgb24gIlVwZGF0ZSBkYXRhYmFzZSIgTW9vZGxlIHdpbGwgc2hvdyB5b3UgdGhlIHBsdWdpbiBjb25maWd1cmF0aW9uIHNjcmVlbjoNCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iZmFuY3lib3gtYnV0dG9ucyIgaHJlZj0iaW1hZ2VzL21vb2RsZV9jb25maWd1cmVfcGx1Z2luLnBuZyI+DQorCQkJCTxpbWcgc3JjPSJpbWFnZXMvbW9vZGxlX2NvbmZpZ3VyZV9wbHVnaW4ucG5nIiBhbHQ9IiIgd2lkdGg9IjUwMCIgaGVpZ2h0PSIzMDAiIC8+DQorCQkJPC9hPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iQWRkaW5nIGEgbmV3IGNvbmZlcmVuY2Ugcm9vbSB0byBhIE1vb2RsZSBjb3Vyc2UiPjxzdHJvbmc+QWRkaW5nIGEgbmV3IGNvbmZlcmVuY2Ugcm9vbSB0byBhIE1vb2RsZSBjb3Vyc2U8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQlBZnRlciBpbnN0YWxsYXRpb24gb2YgdGhlIHBsdWdpbiB5b3UgY2FuIGdvIHRvIHRoZSBjb3Vyc2UgcGFnZXMgaW4gTW9vZGxlIGFuZCB0dXJuIGVkaXRpbmcgb24uDQorCQkJCVRoZW4geW91IGNob29zZSB0aGUgYWN0aXZpdHkgIk9wZW5NZWV0aW5ncyIsIE1vb2RsZSB3aWxsIHRoZW4gc2hvdyB5b3UgdGhlIGNvbmZlcmVuY2Ugcm9vbSANCisJCQkJY29uZmlndXJhdGlvbiB3aXRoIGFsbCB0aGUgb3B0aW9uczoNCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBjbGFzcz0iZmFuY3lib3gtYnV0dG9ucyIgaHJlZj0iaW1hZ2VzL21vb2RsZV9hZGRfYWN0aXZpdHlfcGx1Z2luLnBuZyI+DQorCQkJCTxpbWcgc3JjPSJpbWFnZXMvbW9vZGxlX2FkZF9hY3Rpdml0eV9wbHVnaW4ucG5nIiBhbHQ9IiIgd2lkdGg9IjQzMCIgaGVpZ2h0PSIzNjAiIC8+DQorCQkJPC9hPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8IS0tIEZPT1RFUiAtLT4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGFsaWduPSJjZW50ZXIiPjxmb250IGNvbG9yPSIjMTIzNDY1IiBzaXplPSItMSI+PGVtPgorICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgJiMxNjk7IDIwMDMtMjAxMywgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisgICAgICAgICAgICAgICAgICAgIDwvZW0+PC9mb250PjwvZGl2PgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2JvZHk+CisgICAgPC9odG1sPgorPCEtLSBlbmQgdGhlIHByb2Nlc3NpbmcgLS0+CisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKZGlmZiAtLWdpdCBhL2RvY3MvTXlTUUxDb25maWcuaHRtbCBiL2RvY3MvTXlTUUxDb25maWcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wM2E5ODBkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9NeVNRTENvbmZpZy5odG1sCkBAIC0wLDAgKzEsNzgyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KKworPCEtLQorQ29weXJpZ2h0IDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KK0xpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKK2h0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCitVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCitkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCitTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCitsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorCisKKzwhLS0gQ29udGVudCBTdHlsZXNoZWV0IGZvciBTaXRlIC0tPgorCisgICAgICAgIAorPCEtLSBzdGFydCB0aGUgcHJvY2Vzc2luZyAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPCEtLSBHRU5FUkFURUQgRklMRSwgRE8gTk9UIEVESVQsIEVESVQgVEhFIFhNTCBGSUxFIElOIHhkb2NzIElOU1RFQUQhIC0tPgorICAgIDwhLS0gTWFpbiBQYWdlIFNlY3Rpb24gLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDxodG1sPgorICAgICAgICA8aGVhZD4KKyAgICAgICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ii8+CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9IgorCQkJQXBhY2hlIE9wZW5NZWV0aW5ncyBEb2N1bWVudGF0aW9uIFRlYW0KKwkJIj4KKyAgICAgICAgICAgIDxtZXRhIG5hbWU9ImVtYWlsIiBjb250ZW50PSJzZWJhd2FnbmVyQGFwYWNoZS5vcmciPgorICAgICAgICAgICAgCisgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIDx0aXRsZT5BcGFjaGUgT3Blbk1lZXRpbmdzIC0gTXlTUUwgQ29uZmlndXJhdGlvbjwvdGl0bGU+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3Mvb3Blbm1lZXRpbmdzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvanF1ZXJ5LXVpLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29pbi1zbGlkZXItc3R5bGVzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29sb3Jib3guY3NzIiAvPgorICAgICAgICAgICAgCisJCQk8IS0tIEFkZCBqUXVlcnkgbGlicmFyeSAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS0xLjcuMS5taW4uanMiPjwvc2NyaXB0PgorCQkKKwkJCTwhLS0gQWRkIGNvaW5zbGlkZXIgcGx1Z2lucyAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2NvaW4tc2xpZGVyLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTwhLS0gQWRkIGNvbG9yYm94IHBsdWdpbiAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS5jb2xvcmJveC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5jb3JlLmpzIj48L3NjcmlwdD4KKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkud2lkZ2V0LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmFjY29yZGlvbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQ+CisJCQkkKGZ1bmN0aW9uKCkgeworCQkJCSQoICIjYWNjb3JkaW9uIiApLmFjY29yZGlvbih7CisJCQkJCWF1dG9IZWlnaHQ6IGZhbHNlLAorCQkJCQluYXZpZ2F0aW9uOiB0cnVlLAorCQkJCQluYXZpZ2F0aW9uRmlsdGVyOiBmdW5jdGlvbiAoKSB7CisJCQkJCQl2YXIgc2lkZWJhckhyZWZBcnJheSA9IHRoaXMuaHJlZi5zcGxpdCgiLyIpOworICAgIAkJCQkJdmFyIHNpZGVCYXJMYXN0U3RyaW5nID0gc2lkZWJhckhyZWZBcnJheVtzaWRlYmFySHJlZkFycmF5Lmxlbmd0aCAtIDFdLnRvTG93ZXJDYXNlKCk7CisJCQkJCQkKKwkJCQkJCWlmIChzaWRlQmFyTGFzdFN0cmluZy5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJCQl9CisJCQkJCQkKKwkJCQkJCQkJCQkJCS8qIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgKi8KKwkJCQkJCXZhciBjdXJyZW50U2VjdGlvbiA9ICIiOworCQkJCQkJCisJCQkJCQl2YXIgY3VycmVudExvY2F0aW9uID0gIiI7CisJCQkJCQl2YXIgY3VycmVudExpbmsgPSAiIjsKKwkJCQkJCWlmIChmYWxzZSkgeworCQkJCQkJCisJCQkJCQl9CisgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luZGV4Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luZGV4Lmh0bWwiLnN1YnN0cigxLCAiL2luZGV4Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbGljZW5zZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9saWNlbnNlLmh0bWwiLnN1YnN0cigxLCAiL2xpY2Vuc2UuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIuc3Vic3RyKDEsICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2Rvd25sb2Fkcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kb3dubG9hZHMuaHRtbCIuc3Vic3RyKDEsICIvZG93bmxvYWRzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5zdWJzdHIoMSwgIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5zdGFsbGF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luc3RhbGxhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9pbnN0YWxsYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9VcGdyYWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1VwZ3JhZGUuaHRtbCIuc3Vic3RyKDEsICIvVXBncmFkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLnN1YnN0cigxLCAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29tbWFuZExpbmVBZG1pbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLnN1YnN0cigxLCAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZ2V0LWludm9sdmVkLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZ2V0LWludm9sdmVkLmh0bWwiLnN1YnN0cigxLCAiL2dldC1pbnZvbHZlZC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RlYW0tbGlzdC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3RlYW0tbGlzdC5odG1sIi5zdWJzdHIoMSwgIi90ZWFtLWxpc3QuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9tYWlsLWxpc3RzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbWFpbC1saXN0cy5odG1sIi5zdWJzdHIoMSwgIi9tYWlsLWxpc3RzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5zdWJzdHIoMSwgImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9zdm4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3N2bi5odG1sIi5zdWJzdHIoMSwgIi9zdm4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLnN1YnN0cigxLCAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kZXBlbmRlbmNpZXMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2RlcGVuZGVuY2llcy5odG1sIi5zdWJzdHIoMSwgIi9kZXBlbmRlbmNpZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVW5pdFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pVbml0VGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9KVW5pdFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NYW51YWxUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9NYW51YWxUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL01hbnVhbFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWxlYXNlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlbGVhc2VHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9SZWxlYXNlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJzaXRlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1dlYnNpdGVHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9XZWJzaXRlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU29hcFJlc3RBUEkuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1NvYXBSZXN0QVBJLmh0bWwiLnN1YnN0cigxLCAiL1NvYXBSZXN0QVBJLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdEFQSVNhbXBsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVzdEFQSVNhbXBsZS5odG1sIi5zdWJzdHIoMSwgIi9SZXN0QVBJU2FtcGxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGRhcEFuZEFEUy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTGRhcEFuZEFEUy5odG1sIi5zdWJzdHIoMSwgIi9MZGFwQW5kQURTLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRXJyb3JzVGFibGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0Vycm9yc1RhYmxlLmh0bWwiLnN1YnN0cigxLCAiL0Vycm9yc1RhYmxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01vb2RsZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Nb29kbGVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvTW9vZGxlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU2FrYWlQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU2FrYWlQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU2FrYWlQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KaXJhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0ppcmFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSmlyYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pvb21sYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Kb29tbGFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSm9vbWxhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRHJ1cGFsUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0RydXBhbFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9EcnVwYWxQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CaXRyaXhQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQml0cml4UGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0JpdHJpeFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU3VnYXJDUk1QbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWRtaW5lUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlZG1pbmVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvUmVkbWluZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0lCTURCMkNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0lCTURCMkNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9JQk1EQjJDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09yYWNsZUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09yYWNsZUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9PcmFjbGVDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL015U1FMQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTXlTUUxDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvTXlTUUxDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Bvc3RncmVzQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9zdGdyZXNDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvUG9zdGdyZXNDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9MYW5ndWFnZUVkaXRvci5odG1sIi5zdWJzdHIoMSwgIi9MYW5ndWFnZUVkaXRvci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVGltZVpvbmVIYW5kbGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIuc3Vic3RyKDEsICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRWRpdFRlbXBsYXRlcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIuc3Vic3RyKDEsICIvRWRpdFRlbXBsYXRlcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3J0U2V0dGluZ3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3J0U2V0dGluZ3MuaHRtbCIuc3Vic3RyKDEsICIvUG9ydFNldHRpbmdzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIuc3Vic3RyKDEsICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIuc3Vic3RyKDEsICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRGFzaGJvYXJkLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRGFzaGJvYXJkLmh0bWwiLnN1YnN0cigxLCAiL0Rhc2hib2FyZC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSG90S2V5cy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0hvdEtleXMuaHRtbCIuc3Vic3RyKDEsICIvSG90S2V5cy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJhcHBOYW1lUGF0aC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLnN1YnN0cigxLCAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9OYXZpZ2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTmF2aWdhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9OYXZpZ2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5zdWJzdHIoMSwgIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JUTVBTQW5kSFRUUFMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SVE1QU0FuZEhUVFBTLmh0bWwiLnN1YnN0cigxLCAiL1JUTVBTQW5kSFRUUFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIuc3Vic3RyKDEsICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIuc3Vic3RyKDEsICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DbHVzdGVyaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2x1c3RlcmluZy5odG1sIi5zdWJzdHIoMSwgIi9DbHVzdGVyaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dldFZlcnNpb25JbmZvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2V0VmVyc2lvbkluZm8uaHRtbCIuc3Vic3RyKDEsICIvR2V0VmVyc2lvbkluZm8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJICAgIAkJCQkJCisgICAgCQkJCQljdXJyZW50TGluayA9IGN1cnJlbnRMaW5rLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQljdXJyZW50TG9jYXRpb24gPSBjdXJyZW50TG9jYXRpb24udG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCQorCQkJCQkJcmV0dXJuIHNpZGVCYXJMYXN0U3RyaW5nID09IGN1cnJlbnRMaW5rKyIjIitjdXJyZW50TG9jYXRpb247CisJCQkJCX0KKwkJCQl9KTsKKwkJCX0pOworCQkJPC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwkJCQkkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsKKwkJCQkJJCgnLmZhbmN5Ym94LWJ1dHRvbnMnKS5jb2xvcmJveCh7cmVsOidmYW5jeWJveC1idXR0b25zJyx3aWR0aDoiNzUlIiwgaGVpZ2h0OiI3NSUifSk7CisJCQkJCSQoJyNhY2NvcmRpb24gYScpLmVhY2goZnVuY3Rpb24oKSB7CisJCQkJICAgICAgdmFyIGEgPSAkKHRoaXMpOworCQkJCSAgICAgIHZhciBocmVmID0gYS5hdHRyKCJocmVmIik7CisJCQkJICAgICAgaWYgKGhyZWYuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJICAgICAgCSAgdmFyIGNvbXBhcmVJdCA9IGhyZWYuc3Vic3RyKDIsIGhyZWYubGVuZ3RoKTsKKwkJCQkJICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZihjb21wYXJlSXQpIT0gLTEpIHsKKwkJCQkJICAgICAgIGEuYWRkQ2xhc3MoJ2FjdGl2ZScpOworCQkJCQkgICAgICB9CisJCQkJICAgICAgfQorCQkJCSAgICB9KTsKKwkJCQkJJCgnI2NvaW4tc2xpZGVyJykuY29pbnNsaWRlcih7IHdpZHRoOiA2NDAsaGVpZ2h0OiA0MDAsIGRlbGF5OiA0MDAwICB9KTsJCQkJCQorCQkJCX0pOworCQkJPC9zY3JpcHQ+CQorCQkJCQkJCisJCQk8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorCQkJCS5mYW5jeWJveC1jdXN0b20gLmZhbmN5Ym94LW91dGVyIHsKKwkJCQkJYm94LXNoYWRvdzogMCAwIDUwcHggIzIyMjsKKwkJCQl9CisJCQk8L3N0eWxlPgorICAgICAgICA8L2hlYWQ+CisKKyAgICAgICAgPGJvZHkgYmdjb2xvcj0iI2ZmZmZmZiIgdGV4dD0iIzAwMDAwMCIgbGluaz0iIzEyMzQ2NSIgdmxpbms9IiMxMjM0NjUiIGFsaW5rPSIjMDAwMDAwIj4gIAorICAgICAgICAJPGRpdiBjbGFzcz0ibWFpbmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAJPGRpdiBjbGFzcz0ic3VwZXJib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCI+CisgICAgICAgICAgICAgICAgPCEtLSBUT1AgSU1BR0UgLS0+CisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPgorPGEgaHJlZj0iaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnLyI+PGltZyBzcmM9Ii4vaW1hZ2VzL2xvZ28tMi5qcGciIGFsdD0iQXBhY2hlIE9wZW5NZWV0aW5ncyIgYm9yZGVyPSIwIi8+PC9hPgorPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiID4KKwk8YSBocmVmPSJkZW1vLmh0bWwiPkRlbW88L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iZG93bmxvYWRzLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+RG93bmxvYWQ8L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaW5zdGFsbGF0aW9uLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+SW5zdGFsbGF0aW9uPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTIiB0YXJnZXQ9Il9CTEFOSyI+V2lraTwvYT4KKwk8c3Bhbj4mbmJzcDs8L3NwYW4+Cis8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSI0Ij4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPCEtLSBMRUZUIFNJREUgTkFWSUdBVElPTiAtLT4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIiBub3dyYXA9Im5vd3JhcCI+CisKKyAgICAgICAgICAgICAgICAgICAgPCEtLSBzcGVjaWFsIEFDb24gTG9nbyAtIGxlYXZlIGhlcmUgZm9yIG5leHQgdGltZQorICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vYXBhY2hlY29uLmNvbS8yMDA1L1VTLyI+CisgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2FwYWNoZS5vcmcvaW1hZ2VzL2FjMjAwNXVzX2JsdWVfMTI1eDEyNS5qcGciIGhlaWdodD0iMTI1IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTI1IiBib3JkZXI9IjAiIGFsdD0iQXBhY2hlQ29uIFVTIDIwMDUiIC8+CisgICAgICAgICAgICAgICAgICAgIDwvYT4gIC0tPgorCisgICAgICAgICAgICAgICAgICAgPCEtLSByZWd1bGFyIG1lbnUgLS0+CisKKyAgICAgICAgICAgICAgICAgICAgCisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGRpdiBpZD0iYWNjb3JkaW9uIiBzdHlsZT0id2lkdGg6IDEwMCUiPgorICAgIAorICAgICAgICAgICAgCTxoMz48YSBocmVmPSIjR2VuZXJhbCI+R2VuZXJhbDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5kZXguaHRtbCI+SG9tZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbGljZW5zZS5odG1sIj5MaWNlbnNlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyI+QVNGPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kb3dubG9hZHMuaHRtbCI+RG93bmxvYWRzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCI+Q29tbWVyY2lhbCBTdXBwb3J0PC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnN0YWxsYXRpb25hbmRVcGdyYWRlIj5JbnN0YWxsYXRpb24gYW5kIFVwZ3JhZGU8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luc3RhbGxhdGlvbi5odG1sIj5JbnN0YWxsYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1VwZ3JhZGUuaHRtbCI+VXBncmFkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii5odHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyI+VHV0b3JpYWxzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db21tYW5kTGluZUFkbWluLmh0bWwiPkNvbW1hbmQgTGluZSBBZG1pbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29tbXVuaXR5Ij5Db21tdW5pdHk8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2dldC1pbnZvbHZlZC5odG1sIj5HZXQgSW52b2x2ZWQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3RlYW0tbGlzdC5odG1sIj5Db21taXR0ZXJzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9tYWlsLWxpc3RzLmh0bWwiPk1haWxpbmcgTGlzdHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyI+V2lraTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjRGV2ZWxvcG1lbnQiPkRldmVsb3BtZW50PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9zdm4uaHRtbCI+U291cmNlIENvZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIj5CdWdzIC8gSXNzdWVzIChKSVJBKTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZGVwZW5kZW5jaWVzLmh0bWwiPkRlcGVuZGVuY2llczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCI+QnVpbGQgSW5zdHJ1Y3Rpb25zPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KVW5pdFRlc3RpbmcuaHRtbCI+SlVuaXQgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTWFudWFsVGVzdGluZy5odG1sIj5NYW51YWwgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVsZWFzZUd1aWRlLmh0bWwiPlJlbGVhc2UgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1dlYnNpdGVHdWlkZS5odG1sIj5XZWJzaXRlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnRlZ3JhdGlvbiI+SW50ZWdyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1NvYXBSZXN0QVBJLmh0bWwiPlNPQVAvUkVTVCBBUEk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Jlc3RBUElTYW1wbGUuaHRtbCI+UkVTVCBBUEkgU2FtcGxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9MZGFwQW5kQURTLmh0bWwiPkxkYXAgYW5kIEFEUzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCI+Vm9JUCBhbmQgU0lQPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9FcnJvcnNUYWJsZS5odG1sIj5FcnJvcnMgdGFibGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI1BsdWdpbnMiPlBsdWdpbnM8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01vb2RsZVBsdWdpbi5odG1sIj5Nb29kbGUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TYWthaVBsdWdpbi5odG1sIj5TYWthaSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0ppcmFQbHVnaW4uaHRtbCI+SmlyYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pvb21sYVBsdWdpbi5odG1sIj5Kb29tbGEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9EcnVwYWxQbHVnaW4uaHRtbCI+RHJ1cGFsIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQml0cml4UGx1Z2luLmh0bWwiPkJpdHJpeCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCI+Q29uZmx1ZW5jZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiPlN1Z2FyQ1JNIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVkbWluZVBsdWdpbi5odG1sIj5SZWRtaW5lIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29uZmlndXJhdGlvbiI+Q29uZmlndXJhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+REIgU2FtcGxlIENvbmZpZ3VyYXRpb25zPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQXBhY2hlRGVyYnlDb25maWcuaHRtbCI+QXBhY2hlIERlcmJ5PC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JQk1EQjJDb25maWcuaHRtbCI+SUJNIERCMjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3JhY2xlQ29uZmlnLmh0bWwiPk9yYWNsZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTXlTUUxDb25maWcuaHRtbCI+TXlTUUw8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Bvc3RncmVzQ29uZmlnLmh0bWwiPlBvc3RncmVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Mb2NhbGl6YXRpb24gYW5kIGxhbmd1YWdlczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiPkludGVybmF0aW9uYWxpc2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9MYW5ndWFnZUVkaXRvci5odG1sIj5MYW5ndWFnZUVkaXRvcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vVGltZVpvbmVIYW5kbGluZy5odG1sIj5UaW1lWm9uZUhhbmRsaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9FZGl0VGVtcGxhdGVzLmh0bWwiPkVkaXRUZW1wbGF0ZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk5BVCBQb3J0IFNldHRpbmdzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9ydFNldHRpbmdzLmh0bWwiPlBvcnQgc2V0dGluZ3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlBlcmZvcm1hbmNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCI+SlZNIHBlcmZvcm1hbmNlIHR1bmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+VXNlciBJbnRlcmZhY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiPlRoZW1lczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRGFzaGJvYXJkLmh0bWwiPkRhc2hib2FyZDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCI+V2ViY2FtIHJlc29sdXRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCI+Um9vbSBsYXlvdXQgb3B0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSG90S2V5cy5odG1sIj5Ib3QgS2V5czwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q3VzdG9taXphdGlvbjwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmFwcE5hbWVQYXRoLmh0bWwiPldlYmFwcCBuYW1lL3BhdGg8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL05hdmlnYXRpb24uaHRtbCI+TmF2aWdhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIj5DYWxlbmRhciBhbmQgdGltZXpvbmU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCI+Q3VzdG9tIHJvb20gdHlwZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCI+Q3VzdG9tIGN0eXB0IG1lY2hhbmlzbTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCI+R2VuZXJhbCBDb25maWd1cmF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5TZWN1cml0eTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCI+UmVzdHJpY3RlZCBBY2Nlc3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1JUTVBTQW5kSFRUUFMuaHRtbCI+UlRNUFMgYW5kIEhUVFBTPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Db252ZXJ0ZXJzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIj5PcGVuT2ZmaWNlIENvbnZlcnRlcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIj5GRk1QRUcgVmVyc2lvbiBTd2l0Y2g8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNsdXN0ZXJpbmc8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DbHVzdGVyaW5nLmh0bWwiPkNsdXN0ZXJpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk1pc2M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZXRWZXJzaW9uSW5mby5odG1sIj5HZXQgdmVyc2lvbiBpbmZvPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAKKyAgICA8L2Rpdj4KKyAgICAgCisgICAgPGJyLz4KKyAgICAKKyAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iTXlTUUwgQ29uZmlndXJhdGlvbiI+PHN0cm9uZz5NeVNRTCBDb25maWd1cmF0aW9uPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkIGJnY29sb3I9IiNFRkVGRUYiPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0iYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJCZWZvcmUgeW91IHN0YXJ0Ij48c3Ryb25nPkJlZm9yZSB5b3Ugc3RhcnQ8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPg0KKwkJCQkJPGxpPk1ha2Ugc3VyZSB0aGF0IHlvdSBoYXZlIHNldCB1dGY4IGFzDQorCQkJCQkJZGVmYXVsdC9zZXJ2ZXItY2hhcmFjdGVyLXNldCBpbiB5b3VyIE15U1FMIGNvbmZpZ3VyYXRpb24gKG15LmNuZikNCisJCQkJCQliZWZvcmUgeW91IHN0YXJ0IHRoZSBpbnN0YWxsYXRpb24gcHJvY2VzcyBvZiBPcGVuTWVldGluZ3MhDQorCQkJCQk8L2xpPg0KKwkJCQkJPGxpPg0KKwkJCQkJCW1ha2Ugc3VyZSBNeVNRTCBpcyBsaXN0ZW5pbmcgb24gVENQL0lQIGNvbm5lY3Rpb25zIQ0KKwkJCQkJCTxiciAvPg0KKwkJCQkJCVRvIHZlcmlmeSBpZiBNeVNRTCBjb25uZWN0aW9uIGlzIHdvcmtpbmc6IE9wZW5NZWV0aW5ncyB3aWxsDQorCQkJCQkJYXV0b21hdGljYWxseSBjcmVhdGUgYWxsIHRhYmxlcyBpbiB0aGUgZGF0YWJhc2UgYW5kIGFsbCB0YWJsZXMNCisJCQkJCQlzaG91bGQgaGF2ZSB1dGY4IGFzIGVuY29kaW5nL2NvbGxhdGlvbiENCisJCQkJCTwvbGk+DQorCQkJCQk8bGk+SWYgeW91IGVuY291bnRlciBpc3N1ZXMsIHlvdSBjYW4gZHJvcCB0aGUgZGIgYWdhaW4gYW5kIGRlbGV0ZQ0KKwkJCQkJCXRoZSBmaWxlICRyZWQ1L3dlYmFwcHMvb3Blbm1lZXRpbmdzL2NvbmYvaW5zdGFsbC54bWwgYW5kIHRoZW4gcnVuDQorCQkJCQkJdGhlIHdlYiBiYXNlZCBpbnN0YWxsZXIgYWdhaW4NCisJCQkJCTwvbGk+DQorCQkJCTwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCBiZ2NvbG9yPSIjRUZFRkVGIj4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9ImFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iU3RlcHMgdG9kbyI+PHN0cm9uZz5TdGVwcyB0b2RvPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4NCisJCQkJCTxsaT4NCisJCQkJCQlZb3UgbmVlZCB0byBkb3dubG9hZCB0aGUgSkNvbm5lY3RvciBmcm9tIG15c3FsDQorCQkJCQkJPGEgaHJlZj0iaHR0cDovL3d3dy5teXNxbC5jb20vZG93bmxvYWRzL2Nvbm5lY3Rvci9qLyIgdGFyZ2V0PSJfQkxBTksiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly93d3cubXlzcWwuY29tL2Rvd25sb2Fkcy9jb25uZWN0b3Ivai88L2E+DQorCQkJCQkJYW5kIHBsYWNlIGl0IGludG86DQorCQkJCQkJPHR0PiRyZWQ1L3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvbGliLzwvdHQ+DQorCQkJCQk8L2xpPg0KKwkJCQkJPGxpPg0KKwkJCQkJCVJlbmFtZToNCisJCQkJCQk8YnIgLz4NCisJCQkJCQkkcmVkNS93ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL2NsYXNzZXMvTUVUQS1JTkYvbXlzcWxfcGVyc2lzdGVuY2UueG1sDQorCQkJCQkJPGJyIC8+DQorCQkJCQkJdG8NCisJCQkJCQk8YnIgLz4NCisJCQkJCQkkcmVkNS93ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL2NsYXNzZXMvTUVUQS1JTkYvcGVyc2lzdGVuY2UueG1sDQorCQkJCQk8L2xpPg0KKwkJCQkJPGxpPg0KKwkJCQkJCVByZXBhcmUgRGF0YWJhc2UgU2V0dGluZ3MgLSBnbyB0bw0KKwkJCQkJCW9wZW5tZWV0aW5nc192ZXJzaW9uX25vX3h4L3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvY2xhc3Nlcy9NRVRBLUlORi9wZXJzaXN0ZW5jZS54bWwNCisJCQkJCQk8YnIgLz4NCisJCQkJCQlBbHRlciBjb25maWcgdmFsdWVzIGluIHBlcnNpc3RlbmNlLnhtbCBEQl9IT1NUIFVTRVJfTkFNRSBVU0VSX1BBU1MNCisJCQkJCQl3aXRoIHlvdXIgdmFsdWVzDQorCQkJCQk8L2xpPg0KKwkJCQkJPGxpPg0KKwkJCQkJCVJ1biByZWQ1LXNlcnZpY2UgYW5kIGdvdG8gdGhlIHdlYi1iYXNlZCBpbnN0YWxsZXI6DQorCQkJCQkJaHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9pbnN0YWxsDQorCQkJCQk8L2xpPg0KKwkJCQk8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgYmdjb2xvcj0iI0VGRUZFRiI+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9Ik15U1FMIFNhbXBsZSBDb25maWd1cmF0aW9uIj48c3Ryb25nPk15U1FMIFNhbXBsZSBDb25maWd1cmF0aW9uPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQkJVGhlcmUgaXMgYSBzYW1wbGUgY29uZmlndXJhdGlvbiBmb3IgTXlTUUwgdGhhdCBzaGlwcyB3aXRoDQorCQkJCQlldmVyeQ0KKwkJCQkJcmVsZWFzZSBpbjoNCisJCQkJCTxiciAvPg0KKwkJCQkJL3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvY2xhc3Nlcy9NRVRBLUlORi9teXNxbF9wZXJzaXN0ZW5jZS54bWwNCisJCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPCEtLSBGT09URVIgLS0+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGhyIG5vc2hhZGU9Im5vc2hhZGUiIHNpemU9IjEiLz4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBhbGlnbj0iY2VudGVyIj48Zm9udCBjb2xvcj0iIzEyMzQ2NSIgc2l6ZT0iLTEiPjxlbT4KKyAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0ICYjMTY5OyAyMDAzLTIwMTMsIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorICAgICAgICAgICAgICAgICAgICA8L2VtPjwvZm9udD48L2Rpdj4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9ib2R5PgorICAgIDwvaHRtbD4KKzwhLS0gZW5kIHRoZSBwcm9jZXNzaW5nIC0tPgorCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCmRpZmYgLS1naXQgYS9kb2NzL05hdmlnYXRpb24uaHRtbCBiL2RvY3MvTmF2aWdhdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyNDI2YzkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL05hdmlnYXRpb24uaHRtbApAQCAtMCwwICsxLDcwOCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CisKKzwhLS0KK0NvcHlyaWdodCAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK3lvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCitodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworCis8IS0tIENvbnRlbnQgU3R5bGVzaGVldCBmb3IgU2l0ZSAtLT4KKworICAgICAgICAKKzwhLS0gc3RhcnQgdGhlIHByb2Nlc3NpbmcgLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDwhLS0gR0VORVJBVEVEIEZJTEUsIERPIE5PVCBFRElULCBFRElUIFRIRSBYTUwgRklMRSBJTiB4ZG9jcyBJTlNURUFEISAtLT4KKyAgICA8IS0tIE1haW4gUGFnZSBTZWN0aW9uIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8aHRtbD4KKyAgICAgICAgPGhlYWQ+CisgICAgICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIvPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSIKKwkJCU9wZW5NZWV0aW5ncyBUZWFtCisJCSI+CisgICAgICAgICAgICA8bWV0YSBuYW1lPSJlbWFpbCIgY29udGVudD0ic2ViYXdhZ25lckBhcGFjaGUub3JnIj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICA8dGl0bGU+QXBhY2hlIE9wZW5NZWV0aW5ncyAtIENoYW5nZSBtYWluIG5hdmlnYXRpb248L3RpdGxlPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL29wZW5tZWV0aW5ncy5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2pxdWVyeS11aS5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2NvaW4tc2xpZGVyLXN0eWxlcy5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2NvbG9yYm94LmNzcyIgLz4KKyAgICAgICAgICAgIAorCQkJPCEtLSBBZGQgalF1ZXJ5IGxpYnJhcnkgLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9qcXVlcnktMS43LjEubWluLmpzIj48L3NjcmlwdD4KKwkJCisJCQk8IS0tIEFkZCBjb2luc2xpZGVyIHBsdWdpbnMgLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9jb2luLXNsaWRlci5taW4uanMiPjwvc2NyaXB0PgorCQkJCisJCQk8IS0tIEFkZCBjb2xvcmJveCBwbHVnaW4gLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9qcXVlcnkuY29sb3Jib3guanMiPjwvc2NyaXB0PgorCQkKKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkuY29yZS5qcyI+PC9zY3JpcHQ+CisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLndpZGdldC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5hY2NvcmRpb24uanMiPjwvc2NyaXB0PgorCQkJCisJCQk8c2NyaXB0PgorCQkJJChmdW5jdGlvbigpIHsKKwkJCQkkKCAiI2FjY29yZGlvbiIgKS5hY2NvcmRpb24oeworCQkJCQlhdXRvSGVpZ2h0OiBmYWxzZSwKKwkJCQkJbmF2aWdhdGlvbjogdHJ1ZSwKKwkJCQkJbmF2aWdhdGlvbkZpbHRlcjogZnVuY3Rpb24gKCkgeworCQkJCQkJdmFyIHNpZGViYXJIcmVmQXJyYXkgPSB0aGlzLmhyZWYuc3BsaXQoIi8iKTsKKyAgICAJCQkJCXZhciBzaWRlQmFyTGFzdFN0cmluZyA9IHNpZGViYXJIcmVmQXJyYXlbc2lkZWJhckhyZWZBcnJheS5sZW5ndGggLSAxXS50b0xvd2VyQ2FzZSgpOworCQkJCQkJCisJCQkJCQlpZiAoc2lkZUJhckxhc3RTdHJpbmcuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJCQkJcmV0dXJuIGZhbHNlOworCQkJCQkJfQorCQkJCQkJCisJCQkJCQkJCQkJCQkvKiBkb2N1bWVudC5sb2NhdGlvbi5ocmVmICovCisJCQkJCQl2YXIgY3VycmVudFNlY3Rpb24gPSAiIjsKKwkJCQkJCQorCQkJCQkJdmFyIGN1cnJlbnRMb2NhdGlvbiA9ICIiOworCQkJCQkJdmFyIGN1cnJlbnRMaW5rID0gIiI7CisJCQkJCQlpZiAoZmFsc2UpIHsKKwkJCQkJCQorCQkJCQkJfQorICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9pbmRleC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9pbmRleC5odG1sIi5zdWJzdHIoMSwgIi9pbmRleC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2xpY2Vuc2UuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbGljZW5zZS5odG1sIi5zdWJzdHIoMSwgIi9saWNlbnNlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iLnN1YnN0cigxLCAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kb3dubG9hZHMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZG93bmxvYWRzLmh0bWwiLnN1YnN0cigxLCAiL2Rvd25sb2Fkcy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIuc3Vic3RyKDEsICIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luc3RhbGxhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9pbnN0YWxsYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvaW5zdGFsbGF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVXBncmFkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9VcGdyYWRlLmh0bWwiLnN1YnN0cigxLCAiL1VwZ3JhZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIi5zdWJzdHIoMSwgImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29tbWFuZExpbmVBZG1pbi5odG1sIi5zdWJzdHIoMSwgIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2dldC1pbnZvbHZlZC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2dldC1pbnZvbHZlZC5odG1sIi5zdWJzdHIoMSwgIi9nZXQtaW52b2x2ZWQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi90ZWFtLWxpc3QuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi90ZWFtLWxpc3QuaHRtbCIuc3Vic3RyKDEsICIvdGVhbS1saXN0Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbWFpbC1saXN0cy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL21haWwtbGlzdHMuaHRtbCIuc3Vic3RyKDEsICIvbWFpbC1saXN0cy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIuc3Vic3RyKDEsICJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvc3ZuLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9zdm4uaHRtbCIuc3Vic3RyKDEsICIvc3ZuLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIi5zdWJzdHIoMSwgImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZGVwZW5kZW5jaWVzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kZXBlbmRlbmNpZXMuaHRtbCIuc3Vic3RyKDEsICIvZGVwZW5kZW5jaWVzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiLnN1YnN0cigxLCAiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSlVuaXRUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9KVW5pdFRlc3RpbmcuaHRtbCIuc3Vic3RyKDEsICIvSlVuaXRUZXN0aW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTWFudWFsVGVzdGluZy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTWFudWFsVGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9NYW51YWxUZXN0aW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVsZWFzZUd1aWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZWxlYXNlR3VpZGUuaHRtbCIuc3Vic3RyKDEsICIvUmVsZWFzZUd1aWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2Vic2l0ZUd1aWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9XZWJzaXRlR3VpZGUuaHRtbCIuc3Vic3RyKDEsICIvV2Vic2l0ZUd1aWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1NvYXBSZXN0QVBJLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Tb2FwUmVzdEFQSS5odG1sIi5zdWJzdHIoMSwgIi9Tb2FwUmVzdEFQSS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RBUElTYW1wbGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1Jlc3RBUElTYW1wbGUuaHRtbCIuc3Vic3RyKDEsICIvUmVzdEFQSVNhbXBsZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0xkYXBBbmRBRFMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0xkYXBBbmRBRFMuaHRtbCIuc3Vic3RyKDEsICIvTGRhcEFuZEFEUy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0Vycm9yc1RhYmxlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9FcnJvcnNUYWJsZS5odG1sIi5zdWJzdHIoMSwgIi9FcnJvcnNUYWJsZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Nb29kbGVQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTW9vZGxlUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL01vb2RsZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Nha2FpUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1Nha2FpUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1Nha2FpUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSmlyYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9KaXJhUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0ppcmFQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Kb29tbGFQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSm9vbWxhUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0pvb21sYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0RydXBhbFBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9EcnVwYWxQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvRHJ1cGFsUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQml0cml4UGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0JpdHJpeFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9CaXRyaXhQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVkbWluZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZWRtaW5lUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1JlZG1pbmVQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9JQk1EQjJDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JQk1EQjJDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvSUJNREIyQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9PcmFjbGVDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9PcmFjbGVDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvT3JhY2xlQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NeVNRTENvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL015U1FMQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL015U1FMQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1Bvc3RncmVzQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL1Bvc3RncmVzQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0xhbmd1YWdlRWRpdG9yLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIuc3Vic3RyKDEsICIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiLnN1YnN0cigxLCAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0VkaXRUZW1wbGF0ZXMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9FZGl0VGVtcGxhdGVzLmh0bWwiLnN1YnN0cigxLCAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUG9ydFNldHRpbmdzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9ydFNldHRpbmdzLmh0bWwiLnN1YnN0cigxLCAiL1BvcnRTZXR0aW5ncy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiLnN1YnN0cigxLCAiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiLnN1YnN0cigxLCAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0Rhc2hib2FyZC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0Rhc2hib2FyZC5odG1sIi5zdWJzdHIoMSwgIi9EYXNoYm9hcmQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0hvdEtleXMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Ib3RLZXlzLmh0bWwiLnN1YnN0cigxLCAiL0hvdEtleXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViYXBwTmFtZVBhdGguaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJhcHBOYW1lUGF0aC5odG1sIi5zdWJzdHIoMSwgIi9XZWJhcHBOYW1lUGF0aC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTmF2aWdhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL05hdmlnYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvTmF2aWdhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIuc3Vic3RyKDEsICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIuc3Vic3RyKDEsICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIi5zdWJzdHIoMSwgIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SVE1QU0FuZEhUVFBTLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUlRNUFNBbmRIVFRQUy5odG1sIi5zdWJzdHIoMSwgIi9SVE1QU0FuZEhUVFBTLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiLnN1YnN0cigxLCAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiLnN1YnN0cigxLCAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ2x1c3RlcmluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NsdXN0ZXJpbmcuaHRtbCIuc3Vic3RyKDEsICIvQ2x1c3RlcmluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZXRWZXJzaW9uSW5mby5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dldFZlcnNpb25JbmZvLmh0bWwiLnN1YnN0cigxLCAiL0dldFZlcnNpb25JbmZvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCSAgICAJCQkJCQorICAgIAkJCQkJY3VycmVudExpbmsgPSBjdXJyZW50TGluay50b0xvd2VyQ2FzZSgpOworICAgIAkJCQkJY3VycmVudExvY2F0aW9uID0gY3VycmVudExvY2F0aW9uLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQkKKwkJCQkJCXJldHVybiBzaWRlQmFyTGFzdFN0cmluZyA9PSBjdXJyZW50TGluaysiIyIrY3VycmVudExvY2F0aW9uOworCQkJCQl9CisJCQkJfSk7CisJCQl9KTsKKwkJCTwvc2NyaXB0PgorCQkJCisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisJCQkJJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CisJCQkJCSQoJy5mYW5jeWJveC1idXR0b25zJykuY29sb3Jib3goe3JlbDonZmFuY3lib3gtYnV0dG9ucycsd2lkdGg6Ijc1JSIsIGhlaWdodDoiNzUlIn0pOworCQkJCQkkKCcjYWNjb3JkaW9uIGEnKS5lYWNoKGZ1bmN0aW9uKCkgeworCQkJCSAgICAgIHZhciBhID0gJCh0aGlzKTsKKwkJCQkgICAgICB2YXIgaHJlZiA9IGEuYXR0cigiaHJlZiIpOworCQkJCSAgICAgIGlmIChocmVmLmluZGV4T2YoIiMiKSA9PSAtMSkgeworCQkJCSAgICAgIAkgIHZhciBjb21wYXJlSXQgPSBocmVmLnN1YnN0cigyLCBocmVmLmxlbmd0aCk7CisJCQkJCSAgICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoY29tcGFyZUl0KSE9IC0xKSB7CisJCQkJCSAgICAgICBhLmFkZENsYXNzKCdhY3RpdmUnKTsKKwkJCQkJICAgICAgfQorCQkJCSAgICAgIH0KKwkJCQkgICAgfSk7CisJCQkJCSQoJyNjb2luLXNsaWRlcicpLmNvaW5zbGlkZXIoeyB3aWR0aDogNjQwLGhlaWdodDogNDAwLCBkZWxheTogNDAwMCAgfSk7CQkJCQkKKwkJCQl9KTsKKwkJCTwvc2NyaXB0PgkKKwkJCQkJCQorCQkJPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKwkJCQkuZmFuY3lib3gtY3VzdG9tIC5mYW5jeWJveC1vdXRlciB7CisJCQkJCWJveC1zaGFkb3c6IDAgMCA1MHB4ICMyMjI7CisJCQkJfQorCQkJPC9zdHlsZT4KKyAgICAgICAgPC9oZWFkPgorCisgICAgICAgIDxib2R5IGJnY29sb3I9IiNmZmZmZmYiIHRleHQ9IiMwMDAwMDAiIGxpbms9IiMxMjM0NjUiIHZsaW5rPSIjMTIzNDY1IiBhbGluaz0iIzAwMDAwMCI+ICAKKyAgICAgICAgCTxkaXYgY2xhc3M9Im1haW5ib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgCTxkaXYgY2xhc3M9InN1cGVyYm9keSIgc3R5bGU9IndpZHRoOiAxMDAlOyI+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiPgorICAgICAgICAgICAgICAgIDwhLS0gVE9QIElNQUdFIC0tPgorICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0Ij4KKzxhIGhyZWY9Imh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy8iPjxpbWcgc3JjPSIuL2ltYWdlcy9sb2dvLTIuanBnIiBhbHQ9IkFwYWNoZSBPcGVuTWVldGluZ3MiIGJvcmRlcj0iMCIvPjwvYT4KKzwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODAlIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIiA+CisJPGEgaHJlZj0iZGVtby5odG1sIj5EZW1vPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9ImRvd25sb2Fkcy5odG1sIiB0YXJnZXQ9Il9QQVJFTlQiPkRvd25sb2FkPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imluc3RhbGxhdGlvbi5odG1sIiB0YXJnZXQ9Il9QQVJFTlQiPkluc3RhbGxhdGlvbjwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUyIgdGFyZ2V0PSJfQkxBTksiPldpa2k8L2E+CisJPHNwYW4+Jm5ic3A7PC9zcGFuPgorPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iNCI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGhyIG5vc2hhZGU9Im5vc2hhZGUiIHNpemU9IjEiLz4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDwhLS0gTEVGVCBTSURFIE5BVklHQVRJT04gLS0+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCIgbm93cmFwPSJub3dyYXAiPgorCisgICAgICAgICAgICAgICAgICAgIDwhLS0gc3BlY2lhbCBBQ29uIExvZ28gLSBsZWF2ZSBoZXJlIGZvciBuZXh0IHRpbWUKKyAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL2FwYWNoZWNvbi5jb20vMjAwNS9VUy8iPgorICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHA6Ly9hcGFjaGUub3JnL2ltYWdlcy9hYzIwMDV1c19ibHVlXzEyNXgxMjUuanBnIiBoZWlnaHQ9IjEyNSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjEyNSIgYm9yZGVyPSIwIiBhbHQ9IkFwYWNoZUNvbiBVUyAyMDA1IiAvPgorICAgICAgICAgICAgICAgICAgICA8L2E+ICAtLT4KKworICAgICAgICAgICAgICAgICAgIDwhLS0gcmVndWxhciBtZW51IC0tPgorCisgICAgICAgICAgICAgICAgICAgIAorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDxkaXYgaWQ9ImFjY29yZGlvbiIgc3R5bGU9IndpZHRoOiAxMDAlIj4KKyAgICAKKyAgICAgICAgICAgIAk8aDM+PGEgaHJlZj0iI0dlbmVyYWwiPkdlbmVyYWw8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luZGV4Lmh0bWwiPkhvbWU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2xpY2Vuc2UuaHRtbCI+TGljZW5zZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iPkFTRjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZG93bmxvYWRzLmh0bWwiPkRvd25sb2FkczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiPkNvbW1lcmNpYWwgU3VwcG9ydDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI+SW5zdGFsbGF0aW9uIGFuZCBVcGdyYWRlPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9pbnN0YWxsYXRpb24uaHRtbCI+SW5zdGFsbGF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9VcGdyYWRlLmh0bWwiPlVwZ3JhZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiPlR1dG9yaWFsczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQ29tbWFuZExpbmVBZG1pbi5odG1sIj5Db21tYW5kIExpbmUgQWRtaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0NvbW11bml0eSI+Q29tbXVuaXR5PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9nZXQtaW52b2x2ZWQuaHRtbCI+R2V0IEludm9sdmVkPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi90ZWFtLWxpc3QuaHRtbCI+Q29tbWl0dGVyczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbWFpbC1saXN0cy5odG1sIj5NYWlsaW5nIExpc3RzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iPldpa2k8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0RldmVsb3BtZW50Ij5EZXZlbG9wbWVudDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vc3ZuLmh0bWwiPlNvdXJjZSBDb2RlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyI+QnVncyAvIElzc3VlcyAoSklSQSk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2RlcGVuZGVuY2llcy5odG1sIj5EZXBlbmRlbmNpZXM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiPkJ1aWxkIEluc3RydWN0aW9uczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSlVuaXRUZXN0aW5nLmh0bWwiPkpVbml0IFRlc3Rpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01hbnVhbFRlc3RpbmcuaHRtbCI+TWFudWFsIFRlc3Rpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1JlbGVhc2VHdWlkZS5odG1sIj5SZWxlYXNlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9XZWJzaXRlR3VpZGUuaHRtbCI+V2Vic2l0ZSBHdWlkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjSW50ZWdyYXRpb24iPkludGVncmF0aW9uPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Tb2FwUmVzdEFQSS5odG1sIj5TT0FQL1JFU1QgQVBJPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZXN0QVBJU2FtcGxlLmh0bWwiPlJFU1QgQVBJIFNhbXBsZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTGRhcEFuZEFEUy5odG1sIj5MZGFwIGFuZCBBRFM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiPlZvSVAgYW5kIFNJUDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vRXJyb3JzVGFibGUuaHRtbCI+RXJyb3JzIHRhYmxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNQbHVnaW5zIj5QbHVnaW5zPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Nb29kbGVQbHVnaW4uaHRtbCI+TW9vZGxlIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU2FrYWlQbHVnaW4uaHRtbCI+U2FrYWkgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KaXJhUGx1Z2luLmh0bWwiPkppcmEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Kb29tbGFQbHVnaW4uaHRtbCI+Sm9vbWxhIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vRHJ1cGFsUGx1Z2luLmh0bWwiPkRydXBhbCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0JpdHJpeFBsdWdpbi5odG1sIj5CaXRyaXggUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiPkNvbmZsdWVuY2UgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TdWdhckNSTVBsdWdpbi5odG1sIj5TdWdhckNSTSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1JlZG1pbmVQbHVnaW4uaHRtbCI+UmVkbWluZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0NvbmZpZ3VyYXRpb24iPkNvbmZpZ3VyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkRCIFNhbXBsZSBDb25maWd1cmF0aW9uczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiPkFwYWNoZSBEZXJieTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSUJNREIyQ29uZmlnLmh0bWwiPklCTSBEQjI8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL09yYWNsZUNvbmZpZy5odG1sIj5PcmFjbGU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL015U1FMQ29uZmlnLmh0bWwiPk15U1FMPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIj5Qb3N0Z3JlczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TG9jYWxpemF0aW9uIGFuZCBsYW5ndWFnZXM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIj5JbnRlcm5hdGlvbmFsaXNhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTGFuZ3VhZ2VFZGl0b3IuaHRtbCI+TGFuZ3VhZ2VFZGl0b3I8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1RpbWVab25lSGFuZGxpbmcuaHRtbCI+VGltZVpvbmVIYW5kbGluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRWRpdFRlbXBsYXRlcy5odG1sIj5FZGl0VGVtcGxhdGVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5OQVQgUG9ydCBTZXR0aW5nczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1BvcnRTZXR0aW5ncy5odG1sIj5Qb3J0IHNldHRpbmdzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5QZXJmb3JtYW5jZTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiPkpWTSBwZXJmb3JtYW5jZSB0dW5pbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlVzZXIgSW50ZXJmYWNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIj5UaGVtZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0Rhc2hib2FyZC5odG1sIj5EYXNoYm9hcmQ8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiPldlYmNhbSByZXNvbHV0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiPlJvb20gbGF5b3V0IG9wdGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0hvdEtleXMuaHRtbCI+SG90IEtleXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkN1c3RvbWl6YXRpb248L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9XZWJhcHBOYW1lUGF0aC5odG1sIj5XZWJhcHAgbmFtZS9wYXRoPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9OYXZpZ2F0aW9uLmh0bWwiPk5hdmlnYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCI+Q2FsZW5kYXIgYW5kIHRpbWV6b25lPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiPkN1c3RvbSByb29tIHR5cGU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiPkN1c3RvbSBjdHlwdCBtZWNoYW5pc208L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiPkdlbmVyYWwgQ29uZmlndXJhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+U2VjdXJpdHk8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiPlJlc3RyaWN0ZWQgQWNjZXNzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9SVE1QU0FuZEhUVFBTLmh0bWwiPlJUTVBTIGFuZCBIVFRQUzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q29udmVydGVyczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCI+T3Blbk9mZmljZSBDb252ZXJ0ZXI8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCI+RkZNUEVHIFZlcnNpb24gU3dpdGNoPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5DbHVzdGVyaW5nPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2x1c3RlcmluZy5odG1sIj5DbHVzdGVyaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5NaXNjPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2V0VmVyc2lvbkluZm8uaHRtbCI+R2V0IHZlcnNpb24gaW5mbzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCisgICAgPC9kaXY+CisgICAgIAorICAgIDxici8+CisgICAgCisgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODAlIiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkID48IS0tIGJnY29sb3I9IiNFRUVFRUUiIC0tPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0idmVyZGFuYSxhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IkNoYW5naW5nIHRoZSBtYWluIG5hdmlnYXRpb24iPjxzdHJvbmc+Q2hhbmdpbmcgdGhlIG1haW4gbmF2aWdhdGlvbjwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgICA8aHIgc3R5bGU9IndpZHRoOjEwMCU7IGNvbG9yOiM5OTk5OTk7IGJhY2tncm91bmQtY29sb3I6Izk5OTk5OTsgaGVpZ2h0OjFweDsgYm9yZGVyOjBweDsiLz4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+VG8gY3VzdG9taXplIHRoZSBtYWluIG1lbnUgKGZvciBleGFtcGxlIHJlbW92ZSBlbnRyaWVzIG9yIGNoYW5naW5nDQorCQkJCXRoZSBvcmRlcikgeW91IGNhbiBlZGl0IHRoZSB0YWJsZXM6ICA8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+DQorCQkJCTxsaT5uYXZpbWFpbiA8L2xpPg0KKwkJCQk8bGk+bmF2aWdsb2JhbCA8L2xpPg0KKwkJCQk8bGk+bmF2aXN1YiAoY3VycmVudGx5IG5vdCBpbiB1c2UpIDwvbGk+DQorCQkJPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIC8+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJWW91IG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgeW91DQorCQkJCTxzdHJvbmc+cmVzdGFydCByZWQ1IGFmdGVyIGRvaW5nIGNoYW5nZXMgdG8gdGhlIGRhdGFiYXNlPC9zdHJvbmc+DQorCQkJCSwgdGhlcmUgaXMgYSBkYXRhYmFzZSBjYWNoZSwgc28gY2hhbmdlcyBtaWdodCBub3QgdGFrZSBhZmZlY3QgYXMNCisJCQkJbG9uZyBhcyB5b3UgZGlkIG5vdCByZXN0YXJ0Lg0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPCEtLSBGT09URVIgLS0+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGhyIG5vc2hhZGU9Im5vc2hhZGUiIHNpemU9IjEiLz4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBhbGlnbj0iY2VudGVyIj48Zm9udCBjb2xvcj0iIzEyMzQ2NSIgc2l6ZT0iLTEiPjxlbT4KKyAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0ICYjMTY5OyAyMDAzLTIwMTMsIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorICAgICAgICAgICAgICAgICAgICA8L2VtPjwvZm9udD48L2Rpdj4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9ib2R5PgorICAgIDwvaHRtbD4KKzwhLS0gZW5kIHRoZSBwcm9jZXNzaW5nIC0tPgorCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCmRpZmYgLS1naXQgYS9kb2NzL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCBiL2RvY3MvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2NGJlNGIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbApAQCAtMCwwICsxLDcxOSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CisKKzwhLS0KK0NvcHlyaWdodCAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK3lvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCitodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworCis8IS0tIENvbnRlbnQgU3R5bGVzaGVldCBmb3IgU2l0ZSAtLT4KKworICAgICAgICAKKzwhLS0gc3RhcnQgdGhlIHByb2Nlc3NpbmcgLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDwhLS0gR0VORVJBVEVEIEZJTEUsIERPIE5PVCBFRElULCBFRElUIFRIRSBYTUwgRklMRSBJTiB4ZG9jcyBJTlNURUFEISAtLT4KKyAgICA8IS0tIE1haW4gUGFnZSBTZWN0aW9uIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8aHRtbD4KKyAgICAgICAgPGhlYWQ+CisgICAgICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIvPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSIKKwkJCU9wZW5NZWV0aW5ncyBUZWFtCisJCSI+CisgICAgICAgICAgICA8bWV0YSBuYW1lPSJlbWFpbCIgY29udGVudD0ic2ViYXdhZ25lckBhcGFjaGUub3JnIj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICA8dGl0bGU+QXBhY2hlIE9wZW5NZWV0aW5ncyAtIE9wZW5PZmZpY2UgY29udmVydGVyIGZvciBPcGVuTWVldGluZ3M8L3RpdGxlPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL29wZW5tZWV0aW5ncy5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2pxdWVyeS11aS5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2NvaW4tc2xpZGVyLXN0eWxlcy5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2NvbG9yYm94LmNzcyIgLz4KKyAgICAgICAgICAgIAorCQkJPCEtLSBBZGQgalF1ZXJ5IGxpYnJhcnkgLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9qcXVlcnktMS43LjEubWluLmpzIj48L3NjcmlwdD4KKwkJCisJCQk8IS0tIEFkZCBjb2luc2xpZGVyIHBsdWdpbnMgLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9jb2luLXNsaWRlci5taW4uanMiPjwvc2NyaXB0PgorCQkJCisJCQk8IS0tIEFkZCBjb2xvcmJveCBwbHVnaW4gLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9qcXVlcnkuY29sb3Jib3guanMiPjwvc2NyaXB0PgorCQkKKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkuY29yZS5qcyI+PC9zY3JpcHQ+CisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLndpZGdldC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5hY2NvcmRpb24uanMiPjwvc2NyaXB0PgorCQkJCisJCQk8c2NyaXB0PgorCQkJJChmdW5jdGlvbigpIHsKKwkJCQkkKCAiI2FjY29yZGlvbiIgKS5hY2NvcmRpb24oeworCQkJCQlhdXRvSGVpZ2h0OiBmYWxzZSwKKwkJCQkJbmF2aWdhdGlvbjogdHJ1ZSwKKwkJCQkJbmF2aWdhdGlvbkZpbHRlcjogZnVuY3Rpb24gKCkgeworCQkJCQkJdmFyIHNpZGViYXJIcmVmQXJyYXkgPSB0aGlzLmhyZWYuc3BsaXQoIi8iKTsKKyAgICAJCQkJCXZhciBzaWRlQmFyTGFzdFN0cmluZyA9IHNpZGViYXJIcmVmQXJyYXlbc2lkZWJhckhyZWZBcnJheS5sZW5ndGggLSAxXS50b0xvd2VyQ2FzZSgpOworCQkJCQkJCisJCQkJCQlpZiAoc2lkZUJhckxhc3RTdHJpbmcuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJCQkJcmV0dXJuIGZhbHNlOworCQkJCQkJfQorCQkJCQkJCisJCQkJCQkJCQkJCQkvKiBkb2N1bWVudC5sb2NhdGlvbi5ocmVmICovCisJCQkJCQl2YXIgY3VycmVudFNlY3Rpb24gPSAiIjsKKwkJCQkJCQorCQkJCQkJdmFyIGN1cnJlbnRMb2NhdGlvbiA9ICIiOworCQkJCQkJdmFyIGN1cnJlbnRMaW5rID0gIiI7CisJCQkJCQlpZiAoZmFsc2UpIHsKKwkJCQkJCQorCQkJCQkJfQorICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9pbmRleC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9pbmRleC5odG1sIi5zdWJzdHIoMSwgIi9pbmRleC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2xpY2Vuc2UuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbGljZW5zZS5odG1sIi5zdWJzdHIoMSwgIi9saWNlbnNlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iLnN1YnN0cigxLCAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kb3dubG9hZHMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZG93bmxvYWRzLmh0bWwiLnN1YnN0cigxLCAiL2Rvd25sb2Fkcy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIuc3Vic3RyKDEsICIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luc3RhbGxhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9pbnN0YWxsYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvaW5zdGFsbGF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVXBncmFkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9VcGdyYWRlLmh0bWwiLnN1YnN0cigxLCAiL1VwZ3JhZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIi5zdWJzdHIoMSwgImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29tbWFuZExpbmVBZG1pbi5odG1sIi5zdWJzdHIoMSwgIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2dldC1pbnZvbHZlZC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2dldC1pbnZvbHZlZC5odG1sIi5zdWJzdHIoMSwgIi9nZXQtaW52b2x2ZWQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi90ZWFtLWxpc3QuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi90ZWFtLWxpc3QuaHRtbCIuc3Vic3RyKDEsICIvdGVhbS1saXN0Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbWFpbC1saXN0cy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL21haWwtbGlzdHMuaHRtbCIuc3Vic3RyKDEsICIvbWFpbC1saXN0cy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIuc3Vic3RyKDEsICJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvc3ZuLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9zdm4uaHRtbCIuc3Vic3RyKDEsICIvc3ZuLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIi5zdWJzdHIoMSwgImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZGVwZW5kZW5jaWVzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kZXBlbmRlbmNpZXMuaHRtbCIuc3Vic3RyKDEsICIvZGVwZW5kZW5jaWVzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiLnN1YnN0cigxLCAiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSlVuaXRUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9KVW5pdFRlc3RpbmcuaHRtbCIuc3Vic3RyKDEsICIvSlVuaXRUZXN0aW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTWFudWFsVGVzdGluZy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTWFudWFsVGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9NYW51YWxUZXN0aW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVsZWFzZUd1aWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZWxlYXNlR3VpZGUuaHRtbCIuc3Vic3RyKDEsICIvUmVsZWFzZUd1aWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2Vic2l0ZUd1aWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9XZWJzaXRlR3VpZGUuaHRtbCIuc3Vic3RyKDEsICIvV2Vic2l0ZUd1aWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1NvYXBSZXN0QVBJLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Tb2FwUmVzdEFQSS5odG1sIi5zdWJzdHIoMSwgIi9Tb2FwUmVzdEFQSS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RBUElTYW1wbGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1Jlc3RBUElTYW1wbGUuaHRtbCIuc3Vic3RyKDEsICIvUmVzdEFQSVNhbXBsZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0xkYXBBbmRBRFMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0xkYXBBbmRBRFMuaHRtbCIuc3Vic3RyKDEsICIvTGRhcEFuZEFEUy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0Vycm9yc1RhYmxlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9FcnJvcnNUYWJsZS5odG1sIi5zdWJzdHIoMSwgIi9FcnJvcnNUYWJsZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Nb29kbGVQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTW9vZGxlUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL01vb2RsZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Nha2FpUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1Nha2FpUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1Nha2FpUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSmlyYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9KaXJhUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0ppcmFQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Kb29tbGFQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSm9vbWxhUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0pvb21sYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0RydXBhbFBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9EcnVwYWxQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvRHJ1cGFsUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQml0cml4UGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0JpdHJpeFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9CaXRyaXhQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVkbWluZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZWRtaW5lUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1JlZG1pbmVQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9JQk1EQjJDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JQk1EQjJDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvSUJNREIyQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9PcmFjbGVDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9PcmFjbGVDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvT3JhY2xlQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NeVNRTENvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL015U1FMQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL015U1FMQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1Bvc3RncmVzQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL1Bvc3RncmVzQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0xhbmd1YWdlRWRpdG9yLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIuc3Vic3RyKDEsICIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiLnN1YnN0cigxLCAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0VkaXRUZW1wbGF0ZXMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9FZGl0VGVtcGxhdGVzLmh0bWwiLnN1YnN0cigxLCAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUG9ydFNldHRpbmdzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9ydFNldHRpbmdzLmh0bWwiLnN1YnN0cigxLCAiL1BvcnRTZXR0aW5ncy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiLnN1YnN0cigxLCAiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiLnN1YnN0cigxLCAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0Rhc2hib2FyZC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0Rhc2hib2FyZC5odG1sIi5zdWJzdHIoMSwgIi9EYXNoYm9hcmQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0hvdEtleXMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Ib3RLZXlzLmh0bWwiLnN1YnN0cigxLCAiL0hvdEtleXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViYXBwTmFtZVBhdGguaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJhcHBOYW1lUGF0aC5odG1sIi5zdWJzdHIoMSwgIi9XZWJhcHBOYW1lUGF0aC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTmF2aWdhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL05hdmlnYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvTmF2aWdhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIuc3Vic3RyKDEsICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIuc3Vic3RyKDEsICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIi5zdWJzdHIoMSwgIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SVE1QU0FuZEhUVFBTLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUlRNUFNBbmRIVFRQUy5odG1sIi5zdWJzdHIoMSwgIi9SVE1QU0FuZEhUVFBTLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiLnN1YnN0cigxLCAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiLnN1YnN0cigxLCAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ2x1c3RlcmluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NsdXN0ZXJpbmcuaHRtbCIuc3Vic3RyKDEsICIvQ2x1c3RlcmluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZXRWZXJzaW9uSW5mby5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dldFZlcnNpb25JbmZvLmh0bWwiLnN1YnN0cigxLCAiL0dldFZlcnNpb25JbmZvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCSAgICAJCQkJCQorICAgIAkJCQkJY3VycmVudExpbmsgPSBjdXJyZW50TGluay50b0xvd2VyQ2FzZSgpOworICAgIAkJCQkJY3VycmVudExvY2F0aW9uID0gY3VycmVudExvY2F0aW9uLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQkKKwkJCQkJCXJldHVybiBzaWRlQmFyTGFzdFN0cmluZyA9PSBjdXJyZW50TGluaysiIyIrY3VycmVudExvY2F0aW9uOworCQkJCQl9CisJCQkJfSk7CisJCQl9KTsKKwkJCTwvc2NyaXB0PgorCQkJCisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisJCQkJJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CisJCQkJCSQoJy5mYW5jeWJveC1idXR0b25zJykuY29sb3Jib3goe3JlbDonZmFuY3lib3gtYnV0dG9ucycsd2lkdGg6Ijc1JSIsIGhlaWdodDoiNzUlIn0pOworCQkJCQkkKCcjYWNjb3JkaW9uIGEnKS5lYWNoKGZ1bmN0aW9uKCkgeworCQkJCSAgICAgIHZhciBhID0gJCh0aGlzKTsKKwkJCQkgICAgICB2YXIgaHJlZiA9IGEuYXR0cigiaHJlZiIpOworCQkJCSAgICAgIGlmIChocmVmLmluZGV4T2YoIiMiKSA9PSAtMSkgeworCQkJCSAgICAgIAkgIHZhciBjb21wYXJlSXQgPSBocmVmLnN1YnN0cigyLCBocmVmLmxlbmd0aCk7CisJCQkJCSAgICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoY29tcGFyZUl0KSE9IC0xKSB7CisJCQkJCSAgICAgICBhLmFkZENsYXNzKCdhY3RpdmUnKTsKKwkJCQkJICAgICAgfQorCQkJCSAgICAgIH0KKwkJCQkgICAgfSk7CisJCQkJCSQoJyNjb2luLXNsaWRlcicpLmNvaW5zbGlkZXIoeyB3aWR0aDogNjQwLGhlaWdodDogNDAwLCBkZWxheTogNDAwMCAgfSk7CQkJCQkKKwkJCQl9KTsKKwkJCTwvc2NyaXB0PgkKKwkJCQkJCQorCQkJPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKwkJCQkuZmFuY3lib3gtY3VzdG9tIC5mYW5jeWJveC1vdXRlciB7CisJCQkJCWJveC1zaGFkb3c6IDAgMCA1MHB4ICMyMjI7CisJCQkJfQorCQkJPC9zdHlsZT4KKyAgICAgICAgPC9oZWFkPgorCisgICAgICAgIDxib2R5IGJnY29sb3I9IiNmZmZmZmYiIHRleHQ9IiMwMDAwMDAiIGxpbms9IiMxMjM0NjUiIHZsaW5rPSIjMTIzNDY1IiBhbGluaz0iIzAwMDAwMCI+ICAKKyAgICAgICAgCTxkaXYgY2xhc3M9Im1haW5ib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgCTxkaXYgY2xhc3M9InN1cGVyYm9keSIgc3R5bGU9IndpZHRoOiAxMDAlOyI+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiPgorICAgICAgICAgICAgICAgIDwhLS0gVE9QIElNQUdFIC0tPgorICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0Ij4KKzxhIGhyZWY9Imh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy8iPjxpbWcgc3JjPSIuL2ltYWdlcy9sb2dvLTIuanBnIiBhbHQ9IkFwYWNoZSBPcGVuTWVldGluZ3MiIGJvcmRlcj0iMCIvPjwvYT4KKzwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODAlIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIiA+CisJPGEgaHJlZj0iZGVtby5odG1sIj5EZW1vPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9ImRvd25sb2Fkcy5odG1sIiB0YXJnZXQ9Il9QQVJFTlQiPkRvd25sb2FkPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imluc3RhbGxhdGlvbi5odG1sIiB0YXJnZXQ9Il9QQVJFTlQiPkluc3RhbGxhdGlvbjwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUyIgdGFyZ2V0PSJfQkxBTksiPldpa2k8L2E+CisJPHNwYW4+Jm5ic3A7PC9zcGFuPgorPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iNCI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGhyIG5vc2hhZGU9Im5vc2hhZGUiIHNpemU9IjEiLz4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDwhLS0gTEVGVCBTSURFIE5BVklHQVRJT04gLS0+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCIgbm93cmFwPSJub3dyYXAiPgorCisgICAgICAgICAgICAgICAgICAgIDwhLS0gc3BlY2lhbCBBQ29uIExvZ28gLSBsZWF2ZSBoZXJlIGZvciBuZXh0IHRpbWUKKyAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL2FwYWNoZWNvbi5jb20vMjAwNS9VUy8iPgorICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHA6Ly9hcGFjaGUub3JnL2ltYWdlcy9hYzIwMDV1c19ibHVlXzEyNXgxMjUuanBnIiBoZWlnaHQ9IjEyNSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjEyNSIgYm9yZGVyPSIwIiBhbHQ9IkFwYWNoZUNvbiBVUyAyMDA1IiAvPgorICAgICAgICAgICAgICAgICAgICA8L2E+ICAtLT4KKworICAgICAgICAgICAgICAgICAgIDwhLS0gcmVndWxhciBtZW51IC0tPgorCisgICAgICAgICAgICAgICAgICAgIAorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDxkaXYgaWQ9ImFjY29yZGlvbiIgc3R5bGU9IndpZHRoOiAxMDAlIj4KKyAgICAKKyAgICAgICAgICAgIAk8aDM+PGEgaHJlZj0iI0dlbmVyYWwiPkdlbmVyYWw8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luZGV4Lmh0bWwiPkhvbWU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2xpY2Vuc2UuaHRtbCI+TGljZW5zZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iPkFTRjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZG93bmxvYWRzLmh0bWwiPkRvd25sb2FkczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiPkNvbW1lcmNpYWwgU3VwcG9ydDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI+SW5zdGFsbGF0aW9uIGFuZCBVcGdyYWRlPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9pbnN0YWxsYXRpb24uaHRtbCI+SW5zdGFsbGF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9VcGdyYWRlLmh0bWwiPlVwZ3JhZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiPlR1dG9yaWFsczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQ29tbWFuZExpbmVBZG1pbi5odG1sIj5Db21tYW5kIExpbmUgQWRtaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0NvbW11bml0eSI+Q29tbXVuaXR5PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9nZXQtaW52b2x2ZWQuaHRtbCI+R2V0IEludm9sdmVkPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi90ZWFtLWxpc3QuaHRtbCI+Q29tbWl0dGVyczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbWFpbC1saXN0cy5odG1sIj5NYWlsaW5nIExpc3RzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iPldpa2k8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0RldmVsb3BtZW50Ij5EZXZlbG9wbWVudDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vc3ZuLmh0bWwiPlNvdXJjZSBDb2RlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyI+QnVncyAvIElzc3VlcyAoSklSQSk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2RlcGVuZGVuY2llcy5odG1sIj5EZXBlbmRlbmNpZXM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiPkJ1aWxkIEluc3RydWN0aW9uczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSlVuaXRUZXN0aW5nLmh0bWwiPkpVbml0IFRlc3Rpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01hbnVhbFRlc3RpbmcuaHRtbCI+TWFudWFsIFRlc3Rpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1JlbGVhc2VHdWlkZS5odG1sIj5SZWxlYXNlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9XZWJzaXRlR3VpZGUuaHRtbCI+V2Vic2l0ZSBHdWlkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjSW50ZWdyYXRpb24iPkludGVncmF0aW9uPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Tb2FwUmVzdEFQSS5odG1sIj5TT0FQL1JFU1QgQVBJPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZXN0QVBJU2FtcGxlLmh0bWwiPlJFU1QgQVBJIFNhbXBsZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTGRhcEFuZEFEUy5odG1sIj5MZGFwIGFuZCBBRFM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiPlZvSVAgYW5kIFNJUDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vRXJyb3JzVGFibGUuaHRtbCI+RXJyb3JzIHRhYmxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNQbHVnaW5zIj5QbHVnaW5zPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Nb29kbGVQbHVnaW4uaHRtbCI+TW9vZGxlIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU2FrYWlQbHVnaW4uaHRtbCI+U2FrYWkgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KaXJhUGx1Z2luLmh0bWwiPkppcmEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Kb29tbGFQbHVnaW4uaHRtbCI+Sm9vbWxhIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vRHJ1cGFsUGx1Z2luLmh0bWwiPkRydXBhbCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0JpdHJpeFBsdWdpbi5odG1sIj5CaXRyaXggUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiPkNvbmZsdWVuY2UgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TdWdhckNSTVBsdWdpbi5odG1sIj5TdWdhckNSTSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1JlZG1pbmVQbHVnaW4uaHRtbCI+UmVkbWluZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0NvbmZpZ3VyYXRpb24iPkNvbmZpZ3VyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkRCIFNhbXBsZSBDb25maWd1cmF0aW9uczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiPkFwYWNoZSBEZXJieTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSUJNREIyQ29uZmlnLmh0bWwiPklCTSBEQjI8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL09yYWNsZUNvbmZpZy5odG1sIj5PcmFjbGU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL015U1FMQ29uZmlnLmh0bWwiPk15U1FMPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIj5Qb3N0Z3JlczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TG9jYWxpemF0aW9uIGFuZCBsYW5ndWFnZXM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIj5JbnRlcm5hdGlvbmFsaXNhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTGFuZ3VhZ2VFZGl0b3IuaHRtbCI+TGFuZ3VhZ2VFZGl0b3I8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1RpbWVab25lSGFuZGxpbmcuaHRtbCI+VGltZVpvbmVIYW5kbGluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRWRpdFRlbXBsYXRlcy5odG1sIj5FZGl0VGVtcGxhdGVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5OQVQgUG9ydCBTZXR0aW5nczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1BvcnRTZXR0aW5ncy5odG1sIj5Qb3J0IHNldHRpbmdzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5QZXJmb3JtYW5jZTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiPkpWTSBwZXJmb3JtYW5jZSB0dW5pbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlVzZXIgSW50ZXJmYWNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIj5UaGVtZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0Rhc2hib2FyZC5odG1sIj5EYXNoYm9hcmQ8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiPldlYmNhbSByZXNvbHV0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiPlJvb20gbGF5b3V0IG9wdGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0hvdEtleXMuaHRtbCI+SG90IEtleXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkN1c3RvbWl6YXRpb248L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9XZWJhcHBOYW1lUGF0aC5odG1sIj5XZWJhcHAgbmFtZS9wYXRoPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9OYXZpZ2F0aW9uLmh0bWwiPk5hdmlnYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCI+Q2FsZW5kYXIgYW5kIHRpbWV6b25lPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiPkN1c3RvbSByb29tIHR5cGU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiPkN1c3RvbSBjdHlwdCBtZWNoYW5pc208L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiPkdlbmVyYWwgQ29uZmlndXJhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+U2VjdXJpdHk8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiPlJlc3RyaWN0ZWQgQWNjZXNzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9SVE1QU0FuZEhUVFBTLmh0bWwiPlJUTVBTIGFuZCBIVFRQUzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q29udmVydGVyczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCI+T3Blbk9mZmljZSBDb252ZXJ0ZXI8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCI+RkZNUEVHIFZlcnNpb24gU3dpdGNoPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5DbHVzdGVyaW5nPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2x1c3RlcmluZy5odG1sIj5DbHVzdGVyaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5NaXNjPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2V0VmVyc2lvbkluZm8uaHRtbCI+R2V0IHZlcnNpb24gaW5mbzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCisgICAgPC9kaXY+CisgICAgIAorICAgIDxici8+CisgICAgCisgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODAlIiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkID48IS0tIGJnY29sb3I9IiNFRUVFRUUiIC0tPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0idmVyZGFuYSxhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9Ik9wZW5PZmZpY2UgU2VydmljZSBmb3IgT3Blbk1lZXRpbmdzIj48c3Ryb25nPk9wZW5PZmZpY2UgU2VydmljZSBmb3IgT3Blbk1lZXRpbmdzPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJVG8gaW1wb3J0IC5kb2MsIC5kb2N4LCAub2RwLCAueGxzLCAueGxzeCwgLnBwdCwgLnBwdHgsIC4uLiBbIGFsbA0KKwkJCQlmaWxlcyB0aGF0IHlvdSBjYW4gb3BlbiB3aXRoIE9wZW5PZmZpY2UgXQ0KKwkJCQl0byBPcGVuTWVldGluZ3MgYW5kIHVzZQ0KKwkJCQl0aGVtIGluIHRoZSB3aGl0ZWJvYXJkIHlvdSBuZWVkIE9wZW5PZmZpY2Ugb3IgTGlicmVPZmZpY2UNCisJCQkJaW5zdGFsbGVkDQorCQkJCXRoZSBtYWNoaW5lIHRoYXQgcnVucyBPcGVuTWVldGluZ3MuDQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQorCQkJCTxpPlNpbmNlIFZlcnNpb24gMi4wIG9mIE9wZW5NZWV0aW5ncyBzdGFydGluZyBvZg0KKwkJCQkJT3Blbk9mZmljZS9MaWJyZU9mZmljZSBhcyBzZXJ2aWNlIGluIG5vdCByZXF1aXJlZCwgSk9EQ29udmVydGVyDQorCQkJCQl3aWxsIGF1dG9tYXRpY2FsbHkgc3RhcnQgYW5kIHNodXQgZG93biB0aGUgc2VydmljZSENCisJCQkJPC9pPg0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQlJbnN0YWxsYXRpb24gb2YgSk9EQ29udmVydGVyIG1lYW5zOiBZb3UgZG9ud2xvYWQgdGhlIFpJUCBiaW5hcnkgZnJvbQ0KKwkJCQl0aGVpcg0KKwkJCQk8YSBocmVmPSJodHRwOi8vY29kZS5nb29nbGUuY29tL3Avam9kY29udmVydGVyLyIgdGFyZ2V0PSJfQkxBTksiIHJlbD0ibm9mb2xsb3ciPndlYnNpdGU8L2E+DQorCQkJCWFuZCB0aGVuIGNvbmZpZ3VyZSBpbiBBcGFjaGUgT3Blbk1lZXRpbmdzIEFkbWluaXN0cmF0aW9uICZndDsNCisJCQkJQ29uZmlndXJhdGlvbiAob3IgZHVyaW5nIGluc3RhbGxhdGlvbikgdGhlIGNvbmZpZyBrZXkNCisJCQkJPHR0PmpvZC5wYXRoPC90dD4NCisJCQkJdG8gcG9pbnQgdG8gdGhlICJsaWIiIGRpcmVjdG9yeSBvZiB0aGUgdW5wYWNrZWQgSk9EQ29udmVydGVyIGJpbmFyeS4NCisJCQkJVGhlcmUgaXMgbm8gcmVzdGFydCBvZiBPcGVuTWVldGluZ3MgcmVxdWlyZWQuDQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WW91IHNob3VsZCB1c2UgYW4gT3Blbk9mZmljZSB2ZXJzaW9uIGdyZWF0ZXIgMzwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPCEtLSBGT09URVIgLS0+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGhyIG5vc2hhZGU9Im5vc2hhZGUiIHNpemU9IjEiLz4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBhbGlnbj0iY2VudGVyIj48Zm9udCBjb2xvcj0iIzEyMzQ2NSIgc2l6ZT0iLTEiPjxlbT4KKyAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0ICYjMTY5OyAyMDAzLTIwMTMsIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorICAgICAgICAgICAgICAgICAgICA8L2VtPjwvZm9udD48L2Rpdj4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9ib2R5PgorICAgIDwvaHRtbD4KKzwhLS0gZW5kIHRoZSBwcm9jZXNzaW5nIC0tPgorCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCmRpZmYgLS1naXQgYS9kb2NzL09yYWNsZUNvbmZpZy5odG1sIGIvZG9jcy9PcmFjbGVDb25maWcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzYwNGY5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9PcmFjbGVDb25maWcuaHRtbApAQCAtMCwwICsxLDc2OCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CisKKzwhLS0KK0NvcHlyaWdodCAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK3lvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCitodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworCis8IS0tIENvbnRlbnQgU3R5bGVzaGVldCBmb3IgU2l0ZSAtLT4KKworICAgICAgICAKKzwhLS0gc3RhcnQgdGhlIHByb2Nlc3NpbmcgLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDwhLS0gR0VORVJBVEVEIEZJTEUsIERPIE5PVCBFRElULCBFRElUIFRIRSBYTUwgRklMRSBJTiB4ZG9jcyBJTlNURUFEISAtLT4KKyAgICA8IS0tIE1haW4gUGFnZSBTZWN0aW9uIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8aHRtbD4KKyAgICAgICAgPGhlYWQ+CisgICAgICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIvPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSIKKwkJCUFwYWNoZSBPcGVuTWVldGluZ3MgRG9jdW1lbnRhdGlvbiBUZWFtCisJCSI+CisgICAgICAgICAgICA8bWV0YSBuYW1lPSJlbWFpbCIgY29udGVudD0ic2ViYXdhZ25lckBhcGFjaGUub3JnIj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICA8dGl0bGU+QXBhY2hlIE9wZW5NZWV0aW5ncyAtIElCTSBEQjIgQ29uZmlndXJhdGlvbjwvdGl0bGU+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3Mvb3Blbm1lZXRpbmdzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvanF1ZXJ5LXVpLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29pbi1zbGlkZXItc3R5bGVzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29sb3Jib3guY3NzIiAvPgorICAgICAgICAgICAgCisJCQk8IS0tIEFkZCBqUXVlcnkgbGlicmFyeSAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS0xLjcuMS5taW4uanMiPjwvc2NyaXB0PgorCQkKKwkJCTwhLS0gQWRkIGNvaW5zbGlkZXIgcGx1Z2lucyAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2NvaW4tc2xpZGVyLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTwhLS0gQWRkIGNvbG9yYm94IHBsdWdpbiAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS5jb2xvcmJveC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5jb3JlLmpzIj48L3NjcmlwdD4KKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkud2lkZ2V0LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmFjY29yZGlvbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQ+CisJCQkkKGZ1bmN0aW9uKCkgeworCQkJCSQoICIjYWNjb3JkaW9uIiApLmFjY29yZGlvbih7CisJCQkJCWF1dG9IZWlnaHQ6IGZhbHNlLAorCQkJCQluYXZpZ2F0aW9uOiB0cnVlLAorCQkJCQluYXZpZ2F0aW9uRmlsdGVyOiBmdW5jdGlvbiAoKSB7CisJCQkJCQl2YXIgc2lkZWJhckhyZWZBcnJheSA9IHRoaXMuaHJlZi5zcGxpdCgiLyIpOworICAgIAkJCQkJdmFyIHNpZGVCYXJMYXN0U3RyaW5nID0gc2lkZWJhckhyZWZBcnJheVtzaWRlYmFySHJlZkFycmF5Lmxlbmd0aCAtIDFdLnRvTG93ZXJDYXNlKCk7CisJCQkJCQkKKwkJCQkJCWlmIChzaWRlQmFyTGFzdFN0cmluZy5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJCQl9CisJCQkJCQkKKwkJCQkJCQkJCQkJCS8qIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgKi8KKwkJCQkJCXZhciBjdXJyZW50U2VjdGlvbiA9ICIiOworCQkJCQkJCisJCQkJCQl2YXIgY3VycmVudExvY2F0aW9uID0gIiI7CisJCQkJCQl2YXIgY3VycmVudExpbmsgPSAiIjsKKwkJCQkJCWlmIChmYWxzZSkgeworCQkJCQkJCisJCQkJCQl9CisgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luZGV4Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luZGV4Lmh0bWwiLnN1YnN0cigxLCAiL2luZGV4Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbGljZW5zZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9saWNlbnNlLmh0bWwiLnN1YnN0cigxLCAiL2xpY2Vuc2UuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIuc3Vic3RyKDEsICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2Rvd25sb2Fkcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kb3dubG9hZHMuaHRtbCIuc3Vic3RyKDEsICIvZG93bmxvYWRzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5zdWJzdHIoMSwgIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5zdGFsbGF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luc3RhbGxhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9pbnN0YWxsYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9VcGdyYWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1VwZ3JhZGUuaHRtbCIuc3Vic3RyKDEsICIvVXBncmFkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLnN1YnN0cigxLCAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29tbWFuZExpbmVBZG1pbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLnN1YnN0cigxLCAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZ2V0LWludm9sdmVkLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZ2V0LWludm9sdmVkLmh0bWwiLnN1YnN0cigxLCAiL2dldC1pbnZvbHZlZC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RlYW0tbGlzdC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3RlYW0tbGlzdC5odG1sIi5zdWJzdHIoMSwgIi90ZWFtLWxpc3QuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9tYWlsLWxpc3RzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbWFpbC1saXN0cy5odG1sIi5zdWJzdHIoMSwgIi9tYWlsLWxpc3RzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5zdWJzdHIoMSwgImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9zdm4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3N2bi5odG1sIi5zdWJzdHIoMSwgIi9zdm4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLnN1YnN0cigxLCAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kZXBlbmRlbmNpZXMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2RlcGVuZGVuY2llcy5odG1sIi5zdWJzdHIoMSwgIi9kZXBlbmRlbmNpZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVW5pdFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pVbml0VGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9KVW5pdFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NYW51YWxUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9NYW51YWxUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL01hbnVhbFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWxlYXNlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlbGVhc2VHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9SZWxlYXNlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJzaXRlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1dlYnNpdGVHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9XZWJzaXRlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU29hcFJlc3RBUEkuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1NvYXBSZXN0QVBJLmh0bWwiLnN1YnN0cigxLCAiL1NvYXBSZXN0QVBJLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdEFQSVNhbXBsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVzdEFQSVNhbXBsZS5odG1sIi5zdWJzdHIoMSwgIi9SZXN0QVBJU2FtcGxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGRhcEFuZEFEUy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTGRhcEFuZEFEUy5odG1sIi5zdWJzdHIoMSwgIi9MZGFwQW5kQURTLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRXJyb3JzVGFibGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0Vycm9yc1RhYmxlLmh0bWwiLnN1YnN0cigxLCAiL0Vycm9yc1RhYmxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01vb2RsZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Nb29kbGVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvTW9vZGxlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU2FrYWlQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU2FrYWlQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU2FrYWlQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KaXJhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0ppcmFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSmlyYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pvb21sYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Kb29tbGFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSm9vbWxhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRHJ1cGFsUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0RydXBhbFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9EcnVwYWxQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CaXRyaXhQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQml0cml4UGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0JpdHJpeFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU3VnYXJDUk1QbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWRtaW5lUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlZG1pbmVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvUmVkbWluZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0lCTURCMkNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0lCTURCMkNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9JQk1EQjJDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09yYWNsZUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09yYWNsZUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9PcmFjbGVDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL015U1FMQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTXlTUUxDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvTXlTUUxDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Bvc3RncmVzQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9zdGdyZXNDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvUG9zdGdyZXNDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9MYW5ndWFnZUVkaXRvci5odG1sIi5zdWJzdHIoMSwgIi9MYW5ndWFnZUVkaXRvci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVGltZVpvbmVIYW5kbGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIuc3Vic3RyKDEsICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRWRpdFRlbXBsYXRlcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIuc3Vic3RyKDEsICIvRWRpdFRlbXBsYXRlcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3J0U2V0dGluZ3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3J0U2V0dGluZ3MuaHRtbCIuc3Vic3RyKDEsICIvUG9ydFNldHRpbmdzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIuc3Vic3RyKDEsICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIuc3Vic3RyKDEsICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRGFzaGJvYXJkLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRGFzaGJvYXJkLmh0bWwiLnN1YnN0cigxLCAiL0Rhc2hib2FyZC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSG90S2V5cy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0hvdEtleXMuaHRtbCIuc3Vic3RyKDEsICIvSG90S2V5cy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJhcHBOYW1lUGF0aC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLnN1YnN0cigxLCAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9OYXZpZ2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTmF2aWdhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9OYXZpZ2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5zdWJzdHIoMSwgIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JUTVBTQW5kSFRUUFMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SVE1QU0FuZEhUVFBTLmh0bWwiLnN1YnN0cigxLCAiL1JUTVBTQW5kSFRUUFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIuc3Vic3RyKDEsICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIuc3Vic3RyKDEsICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DbHVzdGVyaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2x1c3RlcmluZy5odG1sIi5zdWJzdHIoMSwgIi9DbHVzdGVyaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dldFZlcnNpb25JbmZvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2V0VmVyc2lvbkluZm8uaHRtbCIuc3Vic3RyKDEsICIvR2V0VmVyc2lvbkluZm8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJICAgIAkJCQkJCisgICAgCQkJCQljdXJyZW50TGluayA9IGN1cnJlbnRMaW5rLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQljdXJyZW50TG9jYXRpb24gPSBjdXJyZW50TG9jYXRpb24udG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCQorCQkJCQkJcmV0dXJuIHNpZGVCYXJMYXN0U3RyaW5nID09IGN1cnJlbnRMaW5rKyIjIitjdXJyZW50TG9jYXRpb247CisJCQkJCX0KKwkJCQl9KTsKKwkJCX0pOworCQkJPC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwkJCQkkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsKKwkJCQkJJCgnLmZhbmN5Ym94LWJ1dHRvbnMnKS5jb2xvcmJveCh7cmVsOidmYW5jeWJveC1idXR0b25zJyx3aWR0aDoiNzUlIiwgaGVpZ2h0OiI3NSUifSk7CisJCQkJCSQoJyNhY2NvcmRpb24gYScpLmVhY2goZnVuY3Rpb24oKSB7CisJCQkJICAgICAgdmFyIGEgPSAkKHRoaXMpOworCQkJCSAgICAgIHZhciBocmVmID0gYS5hdHRyKCJocmVmIik7CisJCQkJICAgICAgaWYgKGhyZWYuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJICAgICAgCSAgdmFyIGNvbXBhcmVJdCA9IGhyZWYuc3Vic3RyKDIsIGhyZWYubGVuZ3RoKTsKKwkJCQkJICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZihjb21wYXJlSXQpIT0gLTEpIHsKKwkJCQkJICAgICAgIGEuYWRkQ2xhc3MoJ2FjdGl2ZScpOworCQkJCQkgICAgICB9CisJCQkJICAgICAgfQorCQkJCSAgICB9KTsKKwkJCQkJJCgnI2NvaW4tc2xpZGVyJykuY29pbnNsaWRlcih7IHdpZHRoOiA2NDAsaGVpZ2h0OiA0MDAsIGRlbGF5OiA0MDAwICB9KTsJCQkJCQorCQkJCX0pOworCQkJPC9zY3JpcHQ+CQorCQkJCQkJCisJCQk8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorCQkJCS5mYW5jeWJveC1jdXN0b20gLmZhbmN5Ym94LW91dGVyIHsKKwkJCQkJYm94LXNoYWRvdzogMCAwIDUwcHggIzIyMjsKKwkJCQl9CisJCQk8L3N0eWxlPgorICAgICAgICA8L2hlYWQ+CisKKyAgICAgICAgPGJvZHkgYmdjb2xvcj0iI2ZmZmZmZiIgdGV4dD0iIzAwMDAwMCIgbGluaz0iIzEyMzQ2NSIgdmxpbms9IiMxMjM0NjUiIGFsaW5rPSIjMDAwMDAwIj4gIAorICAgICAgICAJPGRpdiBjbGFzcz0ibWFpbmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAJPGRpdiBjbGFzcz0ic3VwZXJib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCI+CisgICAgICAgICAgICAgICAgPCEtLSBUT1AgSU1BR0UgLS0+CisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPgorPGEgaHJlZj0iaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnLyI+PGltZyBzcmM9Ii4vaW1hZ2VzL2xvZ28tMi5qcGciIGFsdD0iQXBhY2hlIE9wZW5NZWV0aW5ncyIgYm9yZGVyPSIwIi8+PC9hPgorPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiID4KKwk8YSBocmVmPSJkZW1vLmh0bWwiPkRlbW88L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iZG93bmxvYWRzLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+RG93bmxvYWQ8L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaW5zdGFsbGF0aW9uLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+SW5zdGFsbGF0aW9uPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTIiB0YXJnZXQ9Il9CTEFOSyI+V2lraTwvYT4KKwk8c3Bhbj4mbmJzcDs8L3NwYW4+Cis8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSI0Ij4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPCEtLSBMRUZUIFNJREUgTkFWSUdBVElPTiAtLT4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIiBub3dyYXA9Im5vd3JhcCI+CisKKyAgICAgICAgICAgICAgICAgICAgPCEtLSBzcGVjaWFsIEFDb24gTG9nbyAtIGxlYXZlIGhlcmUgZm9yIG5leHQgdGltZQorICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vYXBhY2hlY29uLmNvbS8yMDA1L1VTLyI+CisgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2FwYWNoZS5vcmcvaW1hZ2VzL2FjMjAwNXVzX2JsdWVfMTI1eDEyNS5qcGciIGhlaWdodD0iMTI1IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTI1IiBib3JkZXI9IjAiIGFsdD0iQXBhY2hlQ29uIFVTIDIwMDUiIC8+CisgICAgICAgICAgICAgICAgICAgIDwvYT4gIC0tPgorCisgICAgICAgICAgICAgICAgICAgPCEtLSByZWd1bGFyIG1lbnUgLS0+CisKKyAgICAgICAgICAgICAgICAgICAgCisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGRpdiBpZD0iYWNjb3JkaW9uIiBzdHlsZT0id2lkdGg6IDEwMCUiPgorICAgIAorICAgICAgICAgICAgCTxoMz48YSBocmVmPSIjR2VuZXJhbCI+R2VuZXJhbDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5kZXguaHRtbCI+SG9tZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbGljZW5zZS5odG1sIj5MaWNlbnNlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyI+QVNGPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kb3dubG9hZHMuaHRtbCI+RG93bmxvYWRzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCI+Q29tbWVyY2lhbCBTdXBwb3J0PC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnN0YWxsYXRpb25hbmRVcGdyYWRlIj5JbnN0YWxsYXRpb24gYW5kIFVwZ3JhZGU8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luc3RhbGxhdGlvbi5odG1sIj5JbnN0YWxsYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1VwZ3JhZGUuaHRtbCI+VXBncmFkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii5odHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyI+VHV0b3JpYWxzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db21tYW5kTGluZUFkbWluLmh0bWwiPkNvbW1hbmQgTGluZSBBZG1pbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29tbXVuaXR5Ij5Db21tdW5pdHk8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2dldC1pbnZvbHZlZC5odG1sIj5HZXQgSW52b2x2ZWQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3RlYW0tbGlzdC5odG1sIj5Db21taXR0ZXJzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9tYWlsLWxpc3RzLmh0bWwiPk1haWxpbmcgTGlzdHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyI+V2lraTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjRGV2ZWxvcG1lbnQiPkRldmVsb3BtZW50PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9zdm4uaHRtbCI+U291cmNlIENvZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIj5CdWdzIC8gSXNzdWVzIChKSVJBKTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZGVwZW5kZW5jaWVzLmh0bWwiPkRlcGVuZGVuY2llczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCI+QnVpbGQgSW5zdHJ1Y3Rpb25zPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KVW5pdFRlc3RpbmcuaHRtbCI+SlVuaXQgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTWFudWFsVGVzdGluZy5odG1sIj5NYW51YWwgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVsZWFzZUd1aWRlLmh0bWwiPlJlbGVhc2UgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1dlYnNpdGVHdWlkZS5odG1sIj5XZWJzaXRlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnRlZ3JhdGlvbiI+SW50ZWdyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1NvYXBSZXN0QVBJLmh0bWwiPlNPQVAvUkVTVCBBUEk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Jlc3RBUElTYW1wbGUuaHRtbCI+UkVTVCBBUEkgU2FtcGxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9MZGFwQW5kQURTLmh0bWwiPkxkYXAgYW5kIEFEUzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCI+Vm9JUCBhbmQgU0lQPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9FcnJvcnNUYWJsZS5odG1sIj5FcnJvcnMgdGFibGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI1BsdWdpbnMiPlBsdWdpbnM8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01vb2RsZVBsdWdpbi5odG1sIj5Nb29kbGUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TYWthaVBsdWdpbi5odG1sIj5TYWthaSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0ppcmFQbHVnaW4uaHRtbCI+SmlyYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pvb21sYVBsdWdpbi5odG1sIj5Kb29tbGEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9EcnVwYWxQbHVnaW4uaHRtbCI+RHJ1cGFsIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQml0cml4UGx1Z2luLmh0bWwiPkJpdHJpeCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCI+Q29uZmx1ZW5jZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiPlN1Z2FyQ1JNIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVkbWluZVBsdWdpbi5odG1sIj5SZWRtaW5lIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29uZmlndXJhdGlvbiI+Q29uZmlndXJhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+REIgU2FtcGxlIENvbmZpZ3VyYXRpb25zPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQXBhY2hlRGVyYnlDb25maWcuaHRtbCI+QXBhY2hlIERlcmJ5PC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JQk1EQjJDb25maWcuaHRtbCI+SUJNIERCMjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3JhY2xlQ29uZmlnLmh0bWwiPk9yYWNsZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTXlTUUxDb25maWcuaHRtbCI+TXlTUUw8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Bvc3RncmVzQ29uZmlnLmh0bWwiPlBvc3RncmVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Mb2NhbGl6YXRpb24gYW5kIGxhbmd1YWdlczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiPkludGVybmF0aW9uYWxpc2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9MYW5ndWFnZUVkaXRvci5odG1sIj5MYW5ndWFnZUVkaXRvcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vVGltZVpvbmVIYW5kbGluZy5odG1sIj5UaW1lWm9uZUhhbmRsaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9FZGl0VGVtcGxhdGVzLmh0bWwiPkVkaXRUZW1wbGF0ZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk5BVCBQb3J0IFNldHRpbmdzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9ydFNldHRpbmdzLmh0bWwiPlBvcnQgc2V0dGluZ3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlBlcmZvcm1hbmNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCI+SlZNIHBlcmZvcm1hbmNlIHR1bmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+VXNlciBJbnRlcmZhY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiPlRoZW1lczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRGFzaGJvYXJkLmh0bWwiPkRhc2hib2FyZDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCI+V2ViY2FtIHJlc29sdXRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCI+Um9vbSBsYXlvdXQgb3B0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSG90S2V5cy5odG1sIj5Ib3QgS2V5czwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q3VzdG9taXphdGlvbjwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmFwcE5hbWVQYXRoLmh0bWwiPldlYmFwcCBuYW1lL3BhdGg8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL05hdmlnYXRpb24uaHRtbCI+TmF2aWdhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIj5DYWxlbmRhciBhbmQgdGltZXpvbmU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCI+Q3VzdG9tIHJvb20gdHlwZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCI+Q3VzdG9tIGN0eXB0IG1lY2hhbmlzbTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCI+R2VuZXJhbCBDb25maWd1cmF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5TZWN1cml0eTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCI+UmVzdHJpY3RlZCBBY2Nlc3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1JUTVBTQW5kSFRUUFMuaHRtbCI+UlRNUFMgYW5kIEhUVFBTPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Db252ZXJ0ZXJzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIj5PcGVuT2ZmaWNlIENvbnZlcnRlcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIj5GRk1QRUcgVmVyc2lvbiBTd2l0Y2g8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNsdXN0ZXJpbmc8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DbHVzdGVyaW5nLmh0bWwiPkNsdXN0ZXJpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk1pc2M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZXRWZXJzaW9uSW5mby5odG1sIj5HZXQgdmVyc2lvbiBpbmZvPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAKKyAgICA8L2Rpdj4KKyAgICAgCisgICAgPGJyLz4KKyAgICAKKyAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iSUJNIERCMiBDb25maWd1cmF0aW9uIj48c3Ryb25nPklCTSBEQjIgQ29uZmlndXJhdGlvbjwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgICA8aHIgc3R5bGU9IndpZHRoOjEwMCU7IGNvbG9yOiM5OTk5OTk7IGJhY2tncm91bmQtY29sb3I6Izk5OTk5OTsgaGVpZ2h0OjFweDsgYm9yZGVyOjBweDsiLz4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCBiZ2NvbG9yPSIjRUZFRkVGIj4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9ImFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iQmVmb3JlIHlvdSBzdGFydCI+PHN0cm9uZz5CZWZvcmUgeW91IHN0YXJ0PC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4NCisJCQkJCTxsaT5Eb3dubG9hZCB0aGUgbGF0ZXN0IEpEQkMgRHJpdmVyIGZyb20gT3JhY2xlIGZvciB5b3VyIGRhdGFiYXNlDQorCQkJCQkJdmVyc2lvbi4gUGxhY2UgdGhvc2UgSkFScyBpbnRvDQorCQkJCQkJJFJlZDUvd2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9saWINCisJCQkJCTwvbGk+DQorCQkJCQk8bGk+SWYgeW91IGVuY291bnRlciBpc3N1ZXMsIHlvdSBjYW4gZHJvcCB0aGUgZGIgYWdhaW4gYW5kIGRlbGV0ZQ0KKwkJCQkJCXRoZSBmaWxlICRyZWQ1L3dlYmFwcHMvb3Blbm1lZXRpbmdzL2NvbmYvaW5zdGFsbC54bWwgYW5kIHRoZW4gcnVuDQorCQkJCQkJdGhlIHdlYiBiYXNlZCBpbnN0YWxsZXIgYWdhaW4NCisJCQkJCTwvbGk+DQorCQkJCTwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCBiZ2NvbG9yPSIjRUZFRkVGIj4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9ImFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iU3RlcHMgdG9kbyI+PHN0cm9uZz5TdGVwcyB0b2RvPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4NCisJCQkJCTxsaT4NCisJCQkJCQlSZW5hbWU6DQorCQkJCQkJPGJyIC8+DQorCQkJCQkJJHJlZDUvd2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9jbGFzc2VzL01FVEEtSU5GL29yYWNsZV9wZXJzaXN0ZW5jZS54bWwNCisJCQkJCQk8YnIgLz4NCisJCQkJCQl0bw0KKwkJCQkJCTxiciAvPg0KKwkJCQkJCSRyZWQ1L3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvY2xhc3Nlcy9NRVRBLUlORi9wZXJzaXN0ZW5jZS54bWwNCisJCQkJCTwvbGk+DQorCQkJCQk8bGk+DQorCQkJCQkJUHJlcGFyZSBEYXRhYmFzZSBTZXR0aW5ncyAtIGdvIHRvDQorCQkJCQkJb3Blbm1lZXRpbmdzX3ZlcnNpb25fbm9feHgvd2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9jbGFzc2VzL01FVEEtSU5GL3BlcnNpc3RlbmNlLnhtbA0KKwkJCQkJCTxiciAvPg0KKwkJCQkJCUFsdGVyIGNvbmZpZyB2YWx1ZXMgaW4gcGVyc2lzdGVuY2UueG1sIGNvbm5lY3Rpb25VUkwsIHVzZXJuYW1lIGFuZA0KKwkJCQkJCXBhc3N3b3JkIHdpdGggeW91ciB2YWx1ZXMNCisJCQkJCTwvbGk+DQorCQkJCQk8bGk+DQorCQkJCQkJUnVuIHJlZDUtc2VydmljZSBhbmQgZ290byB0aGUgd2ViLWJhc2VkIGluc3RhbGxlcjoNCisJCQkJCQlodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL2luc3RhbGwNCisJCQkJCTwvbGk+DQorCQkJCTwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCBiZ2NvbG9yPSIjRUZFRkVGIj4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9ImFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iT3JhY2xlIFNhbXBsZSBDb25maWd1cmF0aW9uIj48c3Ryb25nPk9yYWNsZSBTYW1wbGUgQ29uZmlndXJhdGlvbjwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJCVRoZXJlIGlzIGEgc2FtcGxlIGNvbmZpZ3VyYXRpb24gZm9yIE9yYWNsZSB0aGF0IHNoaXBzIHdpdGgNCisJCQkJCWV2ZXJ5IHJlbGVhc2UgaW46DQorCQkJCQk8YnIgLz4NCisJCQkJCS93ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL2NsYXNzZXMvTUVUQS1JTkYvb3JhY2xlX3BlcnNpc3RlbmNlLnhtbA0KKwkJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8IS0tIEZPT1RFUiAtLT4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGFsaWduPSJjZW50ZXIiPjxmb250IGNvbG9yPSIjMTIzNDY1IiBzaXplPSItMSI+PGVtPgorICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgJiMxNjk7IDIwMDMtMjAxMywgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisgICAgICAgICAgICAgICAgICAgIDwvZW0+PC9mb250PjwvZGl2PgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2JvZHk+CisgICAgPC9odG1sPgorPCEtLSBlbmQgdGhlIHByb2Nlc3NpbmcgLS0+CisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKZGlmZiAtLWdpdCBhL2RvY3MvUG9ydFNldHRpbmdzLmh0bWwgYi9kb2NzL1BvcnRTZXR0aW5ncy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlY2IwNjkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL1BvcnRTZXR0aW5ncy5odG1sCkBAIC0wLDAgKzEsODMyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KKworPCEtLQorQ29weXJpZ2h0IDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KK0xpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKK2h0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCitVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCitkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCitTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCitsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorCisKKzwhLS0gQ29udGVudCBTdHlsZXNoZWV0IGZvciBTaXRlIC0tPgorCisgICAgICAgIAorPCEtLSBzdGFydCB0aGUgcHJvY2Vzc2luZyAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPCEtLSBHRU5FUkFURUQgRklMRSwgRE8gTk9UIEVESVQsIEVESVQgVEhFIFhNTCBGSUxFIElOIHhkb2NzIElOU1RFQUQhIC0tPgorICAgIDwhLS0gTWFpbiBQYWdlIFNlY3Rpb24gLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDxodG1sPgorICAgICAgICA8aGVhZD4KKyAgICAgICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ii8+CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9IgorCQkJT3Blbk1lZXRpbmdzIFRlYW0KKwkJIj4KKyAgICAgICAgICAgIDxtZXRhIG5hbWU9ImVtYWlsIiBjb250ZW50PSJzZWJhd2FnbmVyQGFwYWNoZS5vcmciPgorICAgICAgICAgICAgCisgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIDx0aXRsZT5BcGFjaGUgT3Blbk1lZXRpbmdzIC0gUG9ydCBzZXR0aW5nczwvdGl0bGU+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3Mvb3Blbm1lZXRpbmdzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvanF1ZXJ5LXVpLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29pbi1zbGlkZXItc3R5bGVzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29sb3Jib3guY3NzIiAvPgorICAgICAgICAgICAgCisJCQk8IS0tIEFkZCBqUXVlcnkgbGlicmFyeSAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS0xLjcuMS5taW4uanMiPjwvc2NyaXB0PgorCQkKKwkJCTwhLS0gQWRkIGNvaW5zbGlkZXIgcGx1Z2lucyAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2NvaW4tc2xpZGVyLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTwhLS0gQWRkIGNvbG9yYm94IHBsdWdpbiAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS5jb2xvcmJveC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5jb3JlLmpzIj48L3NjcmlwdD4KKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkud2lkZ2V0LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmFjY29yZGlvbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQ+CisJCQkkKGZ1bmN0aW9uKCkgeworCQkJCSQoICIjYWNjb3JkaW9uIiApLmFjY29yZGlvbih7CisJCQkJCWF1dG9IZWlnaHQ6IGZhbHNlLAorCQkJCQluYXZpZ2F0aW9uOiB0cnVlLAorCQkJCQluYXZpZ2F0aW9uRmlsdGVyOiBmdW5jdGlvbiAoKSB7CisJCQkJCQl2YXIgc2lkZWJhckhyZWZBcnJheSA9IHRoaXMuaHJlZi5zcGxpdCgiLyIpOworICAgIAkJCQkJdmFyIHNpZGVCYXJMYXN0U3RyaW5nID0gc2lkZWJhckhyZWZBcnJheVtzaWRlYmFySHJlZkFycmF5Lmxlbmd0aCAtIDFdLnRvTG93ZXJDYXNlKCk7CisJCQkJCQkKKwkJCQkJCWlmIChzaWRlQmFyTGFzdFN0cmluZy5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJCQl9CisJCQkJCQkKKwkJCQkJCQkJCQkJCS8qIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgKi8KKwkJCQkJCXZhciBjdXJyZW50U2VjdGlvbiA9ICIiOworCQkJCQkJCisJCQkJCQl2YXIgY3VycmVudExvY2F0aW9uID0gIiI7CisJCQkJCQl2YXIgY3VycmVudExpbmsgPSAiIjsKKwkJCQkJCWlmIChmYWxzZSkgeworCQkJCQkJCisJCQkJCQl9CisgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luZGV4Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luZGV4Lmh0bWwiLnN1YnN0cigxLCAiL2luZGV4Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbGljZW5zZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9saWNlbnNlLmh0bWwiLnN1YnN0cigxLCAiL2xpY2Vuc2UuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIuc3Vic3RyKDEsICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2Rvd25sb2Fkcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kb3dubG9hZHMuaHRtbCIuc3Vic3RyKDEsICIvZG93bmxvYWRzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5zdWJzdHIoMSwgIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5zdGFsbGF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luc3RhbGxhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9pbnN0YWxsYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9VcGdyYWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1VwZ3JhZGUuaHRtbCIuc3Vic3RyKDEsICIvVXBncmFkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLnN1YnN0cigxLCAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29tbWFuZExpbmVBZG1pbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLnN1YnN0cigxLCAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZ2V0LWludm9sdmVkLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZ2V0LWludm9sdmVkLmh0bWwiLnN1YnN0cigxLCAiL2dldC1pbnZvbHZlZC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RlYW0tbGlzdC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3RlYW0tbGlzdC5odG1sIi5zdWJzdHIoMSwgIi90ZWFtLWxpc3QuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9tYWlsLWxpc3RzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbWFpbC1saXN0cy5odG1sIi5zdWJzdHIoMSwgIi9tYWlsLWxpc3RzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5zdWJzdHIoMSwgImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9zdm4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3N2bi5odG1sIi5zdWJzdHIoMSwgIi9zdm4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLnN1YnN0cigxLCAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kZXBlbmRlbmNpZXMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2RlcGVuZGVuY2llcy5odG1sIi5zdWJzdHIoMSwgIi9kZXBlbmRlbmNpZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVW5pdFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pVbml0VGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9KVW5pdFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NYW51YWxUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9NYW51YWxUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL01hbnVhbFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWxlYXNlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlbGVhc2VHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9SZWxlYXNlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJzaXRlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1dlYnNpdGVHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9XZWJzaXRlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU29hcFJlc3RBUEkuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1NvYXBSZXN0QVBJLmh0bWwiLnN1YnN0cigxLCAiL1NvYXBSZXN0QVBJLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdEFQSVNhbXBsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVzdEFQSVNhbXBsZS5odG1sIi5zdWJzdHIoMSwgIi9SZXN0QVBJU2FtcGxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGRhcEFuZEFEUy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTGRhcEFuZEFEUy5odG1sIi5zdWJzdHIoMSwgIi9MZGFwQW5kQURTLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRXJyb3JzVGFibGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0Vycm9yc1RhYmxlLmh0bWwiLnN1YnN0cigxLCAiL0Vycm9yc1RhYmxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01vb2RsZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Nb29kbGVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvTW9vZGxlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU2FrYWlQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU2FrYWlQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU2FrYWlQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KaXJhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0ppcmFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSmlyYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pvb21sYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Kb29tbGFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSm9vbWxhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRHJ1cGFsUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0RydXBhbFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9EcnVwYWxQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CaXRyaXhQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQml0cml4UGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0JpdHJpeFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU3VnYXJDUk1QbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWRtaW5lUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlZG1pbmVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvUmVkbWluZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0lCTURCMkNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0lCTURCMkNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9JQk1EQjJDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09yYWNsZUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09yYWNsZUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9PcmFjbGVDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL015U1FMQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTXlTUUxDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvTXlTUUxDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Bvc3RncmVzQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9zdGdyZXNDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvUG9zdGdyZXNDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9MYW5ndWFnZUVkaXRvci5odG1sIi5zdWJzdHIoMSwgIi9MYW5ndWFnZUVkaXRvci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVGltZVpvbmVIYW5kbGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIuc3Vic3RyKDEsICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRWRpdFRlbXBsYXRlcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIuc3Vic3RyKDEsICIvRWRpdFRlbXBsYXRlcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3J0U2V0dGluZ3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3J0U2V0dGluZ3MuaHRtbCIuc3Vic3RyKDEsICIvUG9ydFNldHRpbmdzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIuc3Vic3RyKDEsICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIuc3Vic3RyKDEsICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRGFzaGJvYXJkLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRGFzaGJvYXJkLmh0bWwiLnN1YnN0cigxLCAiL0Rhc2hib2FyZC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSG90S2V5cy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0hvdEtleXMuaHRtbCIuc3Vic3RyKDEsICIvSG90S2V5cy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJhcHBOYW1lUGF0aC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLnN1YnN0cigxLCAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9OYXZpZ2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTmF2aWdhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9OYXZpZ2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5zdWJzdHIoMSwgIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JUTVBTQW5kSFRUUFMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SVE1QU0FuZEhUVFBTLmh0bWwiLnN1YnN0cigxLCAiL1JUTVBTQW5kSFRUUFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIuc3Vic3RyKDEsICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIuc3Vic3RyKDEsICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DbHVzdGVyaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2x1c3RlcmluZy5odG1sIi5zdWJzdHIoMSwgIi9DbHVzdGVyaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dldFZlcnNpb25JbmZvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2V0VmVyc2lvbkluZm8uaHRtbCIuc3Vic3RyKDEsICIvR2V0VmVyc2lvbkluZm8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJICAgIAkJCQkJCisgICAgCQkJCQljdXJyZW50TGluayA9IGN1cnJlbnRMaW5rLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQljdXJyZW50TG9jYXRpb24gPSBjdXJyZW50TG9jYXRpb24udG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCQorCQkJCQkJcmV0dXJuIHNpZGVCYXJMYXN0U3RyaW5nID09IGN1cnJlbnRMaW5rKyIjIitjdXJyZW50TG9jYXRpb247CisJCQkJCX0KKwkJCQl9KTsKKwkJCX0pOworCQkJPC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwkJCQkkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsKKwkJCQkJJCgnLmZhbmN5Ym94LWJ1dHRvbnMnKS5jb2xvcmJveCh7cmVsOidmYW5jeWJveC1idXR0b25zJyx3aWR0aDoiNzUlIiwgaGVpZ2h0OiI3NSUifSk7CisJCQkJCSQoJyNhY2NvcmRpb24gYScpLmVhY2goZnVuY3Rpb24oKSB7CisJCQkJICAgICAgdmFyIGEgPSAkKHRoaXMpOworCQkJCSAgICAgIHZhciBocmVmID0gYS5hdHRyKCJocmVmIik7CisJCQkJICAgICAgaWYgKGhyZWYuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJICAgICAgCSAgdmFyIGNvbXBhcmVJdCA9IGhyZWYuc3Vic3RyKDIsIGhyZWYubGVuZ3RoKTsKKwkJCQkJICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZihjb21wYXJlSXQpIT0gLTEpIHsKKwkJCQkJICAgICAgIGEuYWRkQ2xhc3MoJ2FjdGl2ZScpOworCQkJCQkgICAgICB9CisJCQkJICAgICAgfQorCQkJCSAgICB9KTsKKwkJCQkJJCgnI2NvaW4tc2xpZGVyJykuY29pbnNsaWRlcih7IHdpZHRoOiA2NDAsaGVpZ2h0OiA0MDAsIGRlbGF5OiA0MDAwICB9KTsJCQkJCQorCQkJCX0pOworCQkJPC9zY3JpcHQ+CQorCQkJCQkJCisJCQk8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorCQkJCS5mYW5jeWJveC1jdXN0b20gLmZhbmN5Ym94LW91dGVyIHsKKwkJCQkJYm94LXNoYWRvdzogMCAwIDUwcHggIzIyMjsKKwkJCQl9CisJCQk8L3N0eWxlPgorICAgICAgICA8L2hlYWQ+CisKKyAgICAgICAgPGJvZHkgYmdjb2xvcj0iI2ZmZmZmZiIgdGV4dD0iIzAwMDAwMCIgbGluaz0iIzEyMzQ2NSIgdmxpbms9IiMxMjM0NjUiIGFsaW5rPSIjMDAwMDAwIj4gIAorICAgICAgICAJPGRpdiBjbGFzcz0ibWFpbmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAJPGRpdiBjbGFzcz0ic3VwZXJib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCI+CisgICAgICAgICAgICAgICAgPCEtLSBUT1AgSU1BR0UgLS0+CisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPgorPGEgaHJlZj0iaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnLyI+PGltZyBzcmM9Ii4vaW1hZ2VzL2xvZ28tMi5qcGciIGFsdD0iQXBhY2hlIE9wZW5NZWV0aW5ncyIgYm9yZGVyPSIwIi8+PC9hPgorPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiID4KKwk8YSBocmVmPSJkZW1vLmh0bWwiPkRlbW88L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iZG93bmxvYWRzLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+RG93bmxvYWQ8L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaW5zdGFsbGF0aW9uLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+SW5zdGFsbGF0aW9uPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTIiB0YXJnZXQ9Il9CTEFOSyI+V2lraTwvYT4KKwk8c3Bhbj4mbmJzcDs8L3NwYW4+Cis8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSI0Ij4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPCEtLSBMRUZUIFNJREUgTkFWSUdBVElPTiAtLT4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIiBub3dyYXA9Im5vd3JhcCI+CisKKyAgICAgICAgICAgICAgICAgICAgPCEtLSBzcGVjaWFsIEFDb24gTG9nbyAtIGxlYXZlIGhlcmUgZm9yIG5leHQgdGltZQorICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vYXBhY2hlY29uLmNvbS8yMDA1L1VTLyI+CisgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2FwYWNoZS5vcmcvaW1hZ2VzL2FjMjAwNXVzX2JsdWVfMTI1eDEyNS5qcGciIGhlaWdodD0iMTI1IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTI1IiBib3JkZXI9IjAiIGFsdD0iQXBhY2hlQ29uIFVTIDIwMDUiIC8+CisgICAgICAgICAgICAgICAgICAgIDwvYT4gIC0tPgorCisgICAgICAgICAgICAgICAgICAgPCEtLSByZWd1bGFyIG1lbnUgLS0+CisKKyAgICAgICAgICAgICAgICAgICAgCisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGRpdiBpZD0iYWNjb3JkaW9uIiBzdHlsZT0id2lkdGg6IDEwMCUiPgorICAgIAorICAgICAgICAgICAgCTxoMz48YSBocmVmPSIjR2VuZXJhbCI+R2VuZXJhbDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5kZXguaHRtbCI+SG9tZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbGljZW5zZS5odG1sIj5MaWNlbnNlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyI+QVNGPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kb3dubG9hZHMuaHRtbCI+RG93bmxvYWRzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCI+Q29tbWVyY2lhbCBTdXBwb3J0PC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnN0YWxsYXRpb25hbmRVcGdyYWRlIj5JbnN0YWxsYXRpb24gYW5kIFVwZ3JhZGU8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luc3RhbGxhdGlvbi5odG1sIj5JbnN0YWxsYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1VwZ3JhZGUuaHRtbCI+VXBncmFkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii5odHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyI+VHV0b3JpYWxzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db21tYW5kTGluZUFkbWluLmh0bWwiPkNvbW1hbmQgTGluZSBBZG1pbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29tbXVuaXR5Ij5Db21tdW5pdHk8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2dldC1pbnZvbHZlZC5odG1sIj5HZXQgSW52b2x2ZWQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3RlYW0tbGlzdC5odG1sIj5Db21taXR0ZXJzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9tYWlsLWxpc3RzLmh0bWwiPk1haWxpbmcgTGlzdHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyI+V2lraTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjRGV2ZWxvcG1lbnQiPkRldmVsb3BtZW50PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9zdm4uaHRtbCI+U291cmNlIENvZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIj5CdWdzIC8gSXNzdWVzIChKSVJBKTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZGVwZW5kZW5jaWVzLmh0bWwiPkRlcGVuZGVuY2llczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCI+QnVpbGQgSW5zdHJ1Y3Rpb25zPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KVW5pdFRlc3RpbmcuaHRtbCI+SlVuaXQgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTWFudWFsVGVzdGluZy5odG1sIj5NYW51YWwgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVsZWFzZUd1aWRlLmh0bWwiPlJlbGVhc2UgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1dlYnNpdGVHdWlkZS5odG1sIj5XZWJzaXRlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnRlZ3JhdGlvbiI+SW50ZWdyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1NvYXBSZXN0QVBJLmh0bWwiPlNPQVAvUkVTVCBBUEk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Jlc3RBUElTYW1wbGUuaHRtbCI+UkVTVCBBUEkgU2FtcGxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9MZGFwQW5kQURTLmh0bWwiPkxkYXAgYW5kIEFEUzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCI+Vm9JUCBhbmQgU0lQPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9FcnJvcnNUYWJsZS5odG1sIj5FcnJvcnMgdGFibGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI1BsdWdpbnMiPlBsdWdpbnM8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01vb2RsZVBsdWdpbi5odG1sIj5Nb29kbGUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TYWthaVBsdWdpbi5odG1sIj5TYWthaSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0ppcmFQbHVnaW4uaHRtbCI+SmlyYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pvb21sYVBsdWdpbi5odG1sIj5Kb29tbGEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9EcnVwYWxQbHVnaW4uaHRtbCI+RHJ1cGFsIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQml0cml4UGx1Z2luLmh0bWwiPkJpdHJpeCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCI+Q29uZmx1ZW5jZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiPlN1Z2FyQ1JNIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVkbWluZVBsdWdpbi5odG1sIj5SZWRtaW5lIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29uZmlndXJhdGlvbiI+Q29uZmlndXJhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+REIgU2FtcGxlIENvbmZpZ3VyYXRpb25zPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQXBhY2hlRGVyYnlDb25maWcuaHRtbCI+QXBhY2hlIERlcmJ5PC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JQk1EQjJDb25maWcuaHRtbCI+SUJNIERCMjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3JhY2xlQ29uZmlnLmh0bWwiPk9yYWNsZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTXlTUUxDb25maWcuaHRtbCI+TXlTUUw8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Bvc3RncmVzQ29uZmlnLmh0bWwiPlBvc3RncmVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Mb2NhbGl6YXRpb24gYW5kIGxhbmd1YWdlczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiPkludGVybmF0aW9uYWxpc2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9MYW5ndWFnZUVkaXRvci5odG1sIj5MYW5ndWFnZUVkaXRvcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vVGltZVpvbmVIYW5kbGluZy5odG1sIj5UaW1lWm9uZUhhbmRsaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9FZGl0VGVtcGxhdGVzLmh0bWwiPkVkaXRUZW1wbGF0ZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk5BVCBQb3J0IFNldHRpbmdzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9ydFNldHRpbmdzLmh0bWwiPlBvcnQgc2V0dGluZ3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlBlcmZvcm1hbmNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCI+SlZNIHBlcmZvcm1hbmNlIHR1bmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+VXNlciBJbnRlcmZhY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiPlRoZW1lczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRGFzaGJvYXJkLmh0bWwiPkRhc2hib2FyZDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCI+V2ViY2FtIHJlc29sdXRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCI+Um9vbSBsYXlvdXQgb3B0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSG90S2V5cy5odG1sIj5Ib3QgS2V5czwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q3VzdG9taXphdGlvbjwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmFwcE5hbWVQYXRoLmh0bWwiPldlYmFwcCBuYW1lL3BhdGg8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL05hdmlnYXRpb24uaHRtbCI+TmF2aWdhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIj5DYWxlbmRhciBhbmQgdGltZXpvbmU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCI+Q3VzdG9tIHJvb20gdHlwZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCI+Q3VzdG9tIGN0eXB0IG1lY2hhbmlzbTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCI+R2VuZXJhbCBDb25maWd1cmF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5TZWN1cml0eTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCI+UmVzdHJpY3RlZCBBY2Nlc3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1JUTVBTQW5kSFRUUFMuaHRtbCI+UlRNUFMgYW5kIEhUVFBTPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Db252ZXJ0ZXJzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIj5PcGVuT2ZmaWNlIENvbnZlcnRlcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIj5GRk1QRUcgVmVyc2lvbiBTd2l0Y2g8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNsdXN0ZXJpbmc8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DbHVzdGVyaW5nLmh0bWwiPkNsdXN0ZXJpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk1pc2M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZXRWZXJzaW9uSW5mby5odG1sIj5HZXQgdmVyc2lvbiBpbmZvPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAKKyAgICA8L2Rpdj4KKyAgICAgCisgICAgPGJyLz4KKyAgICAKKyAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iRGVmYXVsdCBDb25maWd1cmF0aW9uIj48c3Ryb25nPkRlZmF1bHQgQ29uZmlndXJhdGlvbjwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgICA8aHIgc3R5bGU9IndpZHRoOjEwMCU7IGNvbG9yOiM5OTk5OTk7IGJhY2tncm91bmQtY29sb3I6Izk5OTk5OTsgaGVpZ2h0OjFweDsgYm9yZGVyOjBweDsiLz4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPg0KKwkJCQk8bGk+UG9ydCA1MDgwOiBIVFRQIChGb3IgZXhhbXBsZSBmb3IgZmlsZSB1cGxvYWQgYW5kIGRvd25sb2FkKSA8L2xpPg0KKwkJCQk8bGk+UG9ydCAxOTM1OiBSVE1QIChGbGFzaCBTdHJlYW0gYW5kIFJlbW90aW5nL1JQQykgPC9saT4NCisJCQkJPGxpPlBvcnQgODA4ODogUlRNUCBvdmVyIEhUVFAtVHVubmVsaW5nIChydG1wVCkgPC9saT4NCisJCQk8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+QWRkaXRpb25hbGx5IHJlZDUgdXNlcyBzb21lIHBvcnRzIGludGVybmFsbHkuIEhvd2V2ZXIgdGhvc2UgcG9ydHMNCisJCQkJYXJlIG5vdCBpbiB1c2UgYnkgT3Blbk1lZXRpbmdzIGJ5IGRlZmF1bHQuDQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iQ29uZmlndXJlIGFsdGVybmF0aXZlIHBvcnRzIj48c3Ryb25nPkNvbmZpZ3VyZSBhbHRlcm5hdGl2ZSBwb3J0czwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgICA8aHIgc3R5bGU9IndpZHRoOjEwMCU7IGNvbG9yOiM5OTk5OTk7IGJhY2tncm91bmQtY29sb3I6Izk5OTk5OTsgaGVpZ2h0OjFweDsgYm9yZGVyOjBweDsiLz4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WW91IG5lZWQgdG8gY2hhbmdlIHR3byBmaWxlczogPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPg0KKwkJCQk8bGk+U2VydmVyLVNpZGUgY29uZmlndXJhdGlvbjogJFJFRDVfSE9NRS9jb25mL3JlZDUucHJvcGVydGllcywgeW91DQorCQkJCQluZWVkIHRvIHJlc3RhcnQgdGhlIHJlZDUtc2VydmljZSBzbyB0aGF0IGNoYW5nZXMgYXJlIG9ubGluZS4NCisJCQkJPC9saT4NCisJCQkJPGxpPkNsaWVudC1TaWRlIGNvbmZpZ3VyYXRpb246DQorCQkJCQkkUkVENV9IT01FL3dlYmFwcHMvb3Blbm1lZXRpbmdzL2NvbmZpZy54bWwsIHlvdSBuZWVkIHRvIGNsZWFyIHlvdXINCisJCQkJCWJyb3dzZXIgY2FjaGUgYWZ0ZXIgY2hhbmdpbmcgdGhlIGZpbGUuDQorCQkJCTwvbGk+DQorCQkJCTxsaT4NCisJCQkJCTxibG9ja3F1b3RlPkV2ZXJ5IHNlcnZlciBzaWRlIGNvbmZpZ3VyYXRpb24gaGFzIGEgY2xpZW50IHNpZGUNCisJCQkJCQlyZXByZXNlbnRhdGl2ZQ0KKwkJCQkJPC9ibG9ja3F1b3RlPg0KKwkJCQk8L2xpPg0KKwkJCTwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCAvPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGJnY29sb3I9IiMwMzlhY2MiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgQ29uZmlnLU5hbWUgCisgICAgPC90aD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGJnY29sb3I9IiMwMzlhY2MiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgRGVmYXVsdC12YWx1ZSAKKyAgICA8L3RoPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggYmdjb2xvcj0iIzAzOWFjYyIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICBOYW1lIGluIHJlZDUucHJvcGVydGllcyAKKyAgICA8L3RoPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggYmdjb2xvcj0iIzAzOWFjYyIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICBOYW1lIGluIGNvbmZpZy54bWwgCisgICAgPC90aD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgIEhUVFAgCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgNTA4MCAKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICBodHRwLnBvcnQgCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgcmVkNWh0dHBwb3J0IAorICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICBSVE1QIAorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgIDE5MzUgCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgcnRtcC5wb3J0IAorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgIHJ0bXBwb3J0IAorICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICBSVE1QVCAKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICA4MDg4IAorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgIHJ0bXB0Lmhvc3QgCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAgcnRtcFR1bm5lbHBvcnQgCisgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iUHJldmVudGluZyBGaXJld2FsbCBpc3N1ZXMiPjxzdHJvbmc+UHJldmVudGluZyBGaXJld2FsbCBpc3N1ZXM8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPkEgY29tbW9uIHdheSBvZiBieXBhc3NpbmcgdGhlIGZpcmV3YWxsIGlzIHRvIGNoYW5nZSBIVFRQIHBvcnQgdG8NCisJCQkJODAgYW5kIHJ0bXBUIHRvIDQ0My4NCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5BIHNob3J0IGRlc2NyaXB0aW9uIGFib3V0IHRoZSBjb25uZWN0aW9uIG1lY2hhbmlzbTogVGhlDQorCQkJCWFwcGxpY2F0aW9uIGZpcnN0IHRyaWVzIGNvbm5lY3RpbmcgdG8gcnRtcCAzIHRpbWVzLCBiZWNhdXNlIHJ0bXAgaXMNCisJCQkJdGhlIHByb3RvY29sIHRoYXQgaXMgbGVzcyBwZXJmb3JtYW5jZSBodW5ncnkuIElmIHRoYXQgZmFpbHMgdGhlDQorCQkJCWFwcGxpY2F0aW9uIHdpbGwgZmFsbGJhY2sgdG8gcnRtcFQuDQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+TW9zdCBmaXJld2FsbHMgZG8gYWxsb3cgdHJhZmZpYyBvbiBwb3J0IDQ0MyBhbmQgdGhleSBub3JtYWxseSBkbw0KKwkJCQlub3QgYW5hbHlzZSB0aGUgcGFja2V0cywgYmVjYXVzZSA0NDMgaXMgbm9ybWFsbHkgU1NMIGVuY3J5cHRlZCwgc28NCisJCQkJdGhlIGZpcmV3YWxsIHNob3VsZCBub3QgYmUgYWJsZSB0byByZWFkIHRoZSBwYWNrZXRzIGF0IGFsbC4NCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJPcGVuTWVldGluZ3Mgb3ZlciBTU0wiPjxzdHJvbmc+T3Blbk1lZXRpbmdzIG92ZXIgU1NMPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJWW91IGNhbiBydW4gT3Blbk1lZXRpbmdzIGNvbXBsZXRlbHkgb3ZlciBTU0wuIFNlZQ0KKwkJCQk8YSBocmVmPSJSVE1QU0FuZEhUVFBTLmh0bWwiPlJUTVBTQW5kSFRUUFM8L2E+DQorCQkJCS4NCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDwhLS0gRk9PVEVSIC0tPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgYWxpZ249ImNlbnRlciI+PGZvbnQgY29sb3I9IiMxMjM0NjUiIHNpemU9Ii0xIj48ZW0+CisgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAmIzE2OTsgMjAwMy0yMDEzLCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyAgICAgICAgICAgICAgICAgICAgPC9lbT48L2ZvbnQ+PC9kaXY+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvYm9keT4KKyAgICA8L2h0bWw+Cis8IS0tIGVuZCB0aGUgcHJvY2Vzc2luZyAtLT4KKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKwpkaWZmIC0tZ2l0IGEvZG9jcy9Qb3N0Z3Jlc0NvbmZpZy5odG1sIGIvZG9jcy9Qb3N0Z3Jlc0NvbmZpZy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1ZDEyZTgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL1Bvc3RncmVzQ29uZmlnLmh0bWwKQEAgLTAsMCArMSw3NzkgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgorCis8IS0tCitDb3B5cmlnaHQgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKworPCEtLSBDb250ZW50IFN0eWxlc2hlZXQgZm9yIFNpdGUgLS0+CisKKyAgICAgICAgCis8IS0tIHN0YXJ0IHRoZSBwcm9jZXNzaW5nIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8IS0tIEdFTkVSQVRFRCBGSUxFLCBETyBOT1QgRURJVCwgRURJVCBUSEUgWE1MIEZJTEUgSU4geGRvY3MgSU5TVEVBRCEgLS0+CisgICAgPCEtLSBNYWluIFBhZ2UgU2VjdGlvbiAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGh0bWw+CisgICAgICAgIDxoZWFkPgorICAgICAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiLz4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iCisJCQlBcGFjaGUgT3Blbk1lZXRpbmdzIERvY3VtZW50YXRpb24gVGVhbQorCQkiPgorICAgICAgICAgICAgPG1ldGEgbmFtZT0iZW1haWwiIGNvbnRlbnQ9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+CisgICAgICAgICAgICAKKyAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgPHRpdGxlPkFwYWNoZSBPcGVuTWVldGluZ3MgLSBQb3N0Z3JlcyBDb25maWd1cmF0aW9uPC90aXRsZT4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9vcGVubWVldGluZ3MuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9qcXVlcnktdWkuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2luLXNsaWRlci1zdHlsZXMuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2xvcmJveC5jc3MiIC8+CisgICAgICAgICAgICAKKwkJCTwhLS0gQWRkIGpRdWVyeSBsaWJyYXJ5IC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LTEuNy4xLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPCEtLSBBZGQgY29pbnNsaWRlciBwbHVnaW5zIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvY29pbi1zbGlkZXIubWluLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPCEtLSBBZGQgY29sb3Jib3ggcGx1Z2luIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LmNvbG9yYm94LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmNvcmUuanMiPjwvc2NyaXB0PgorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS53aWRnZXQuanMiPjwvc2NyaXB0PgorCQkKKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkuYWNjb3JkaW9uLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdD4KKwkJCSQoZnVuY3Rpb24oKSB7CisJCQkJJCggIiNhY2NvcmRpb24iICkuYWNjb3JkaW9uKHsKKwkJCQkJYXV0b0hlaWdodDogZmFsc2UsCisJCQkJCW5hdmlnYXRpb246IHRydWUsCisJCQkJCW5hdmlnYXRpb25GaWx0ZXI6IGZ1bmN0aW9uICgpIHsKKwkJCQkJCXZhciBzaWRlYmFySHJlZkFycmF5ID0gdGhpcy5ocmVmLnNwbGl0KCIvIik7CisgICAgCQkJCQl2YXIgc2lkZUJhckxhc3RTdHJpbmcgPSBzaWRlYmFySHJlZkFycmF5W3NpZGViYXJIcmVmQXJyYXkubGVuZ3RoIC0gMV0udG9Mb3dlckNhc2UoKTsKKwkJCQkJCQorCQkJCQkJaWYgKHNpZGVCYXJMYXN0U3RyaW5nLmluZGV4T2YoIiMiKSA9PSAtMSkgeworCQkJCQkJCXJldHVybiBmYWxzZTsKKwkJCQkJCX0KKwkJCQkJCQorCQkJCQkJCQkJCQkJLyogZG9jdW1lbnQubG9jYXRpb24uaHJlZiAqLworCQkJCQkJdmFyIGN1cnJlbnRTZWN0aW9uID0gIiI7CisJCQkJCQkKKwkJCQkJCXZhciBjdXJyZW50TG9jYXRpb24gPSAiIjsKKwkJCQkJCXZhciBjdXJyZW50TGluayA9ICIiOworCQkJCQkJaWYgKGZhbHNlKSB7CisJCQkJCQkKKwkJCQkJCX0KKyAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5kZXguaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5kZXguaHRtbCIuc3Vic3RyKDEsICIvaW5kZXguaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9saWNlbnNlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2xpY2Vuc2UuaHRtbCIuc3Vic3RyKDEsICIvbGljZW5zZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5zdWJzdHIoMSwgImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZG93bmxvYWRzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2Rvd25sb2Fkcy5odG1sIi5zdWJzdHIoMSwgIi9kb3dubG9hZHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiLnN1YnN0cigxLCAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9pbnN0YWxsYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5zdGFsbGF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL2luc3RhbGxhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1VwZ3JhZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvVXBncmFkZS5odG1sIi5zdWJzdHIoMSwgIi9VcGdyYWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIuc3Vic3RyKDEsICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db21tYW5kTGluZUFkbWluLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIuc3Vic3RyKDEsICIvQ29tbWFuZExpbmVBZG1pbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9nZXQtaW52b2x2ZWQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9nZXQtaW52b2x2ZWQuaHRtbCIuc3Vic3RyKDEsICIvZ2V0LWludm9sdmVkLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGVhbS1saXN0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdGVhbS1saXN0Lmh0bWwiLnN1YnN0cigxLCAiL3RlYW0tbGlzdC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL21haWwtbGlzdHMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9tYWlsLWxpc3RzLmh0bWwiLnN1YnN0cigxLCAiL21haWwtbGlzdHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLnN1YnN0cigxLCAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3N2bi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvc3ZuLmh0bWwiLnN1YnN0cigxLCAiL3N2bi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIuc3Vic3RyKDEsICJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2RlcGVuZGVuY2llcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZGVwZW5kZW5jaWVzLmh0bWwiLnN1YnN0cigxLCAiL2RlcGVuZGVuY2llcy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pVbml0VGVzdGluZy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSlVuaXRUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL0pVbml0VGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01hbnVhbFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01hbnVhbFRlc3RpbmcuaHRtbCIuc3Vic3RyKDEsICIvTWFudWFsVGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlbGVhc2VHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVsZWFzZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1JlbGVhc2VHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYnNpdGVHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvV2Vic2l0ZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1dlYnNpdGVHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Tb2FwUmVzdEFQSS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU29hcFJlc3RBUEkuaHRtbCIuc3Vic3RyKDEsICIvU29hcFJlc3RBUEkuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZXN0QVBJU2FtcGxlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZXN0QVBJU2FtcGxlLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RBUElTYW1wbGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MZGFwQW5kQURTLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9MZGFwQW5kQURTLmh0bWwiLnN1YnN0cigxLCAiL0xkYXBBbmRBRFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FcnJvcnNUYWJsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRXJyb3JzVGFibGUuaHRtbCIuc3Vic3RyKDEsICIvRXJyb3JzVGFibGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTW9vZGxlUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01vb2RsZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Nb29kbGVQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TYWthaVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TYWthaVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TYWthaVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ppcmFQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSmlyYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9KaXJhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSm9vbWxhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pvb21sYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Kb29tbGFQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EcnVwYWxQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRHJ1cGFsUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0RydXBhbFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0JpdHJpeFBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CaXRyaXhQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvQml0cml4UGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TdWdhckNSTVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TdWdhckNSTVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TdWdhckNSTVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlZG1pbmVQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVkbWluZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9SZWRtaW5lUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSUJNREIyQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSUJNREIyQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL0lCTURCMkNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3JhY2xlQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3JhY2xlQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL09yYWNsZUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTXlTUUxDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9NeVNRTENvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9NeVNRTENvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUG9zdGdyZXNDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MYW5ndWFnZUVkaXRvci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLnN1YnN0cigxLCAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5zdWJzdHIoMSwgIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FZGl0VGVtcGxhdGVzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRWRpdFRlbXBsYXRlcy5odG1sIi5zdWJzdHIoMSwgIi9FZGl0VGVtcGxhdGVzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1BvcnRTZXR0aW5ncy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1BvcnRTZXR0aW5ncy5odG1sIi5zdWJzdHIoMSwgIi9Qb3J0U2V0dGluZ3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5zdWJzdHIoMSwgIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5zdWJzdHIoMSwgIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EYXNoYm9hcmQuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9EYXNoYm9hcmQuaHRtbCIuc3Vic3RyKDEsICIvRGFzaGJvYXJkLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLnN1YnN0cigxLCAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Ib3RLZXlzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSG90S2V5cy5odG1sIi5zdWJzdHIoMSwgIi9Ib3RLZXlzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYmFwcE5hbWVQYXRoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvV2ViYXBwTmFtZVBhdGguaHRtbCIuc3Vic3RyKDEsICIvV2ViYXBwTmFtZVBhdGguaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL05hdmlnYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9OYXZpZ2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL05hdmlnYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLnN1YnN0cigxLCAiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIuc3Vic3RyKDEsICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIuc3Vic3RyKDEsICIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUlRNUFNBbmRIVFRQUy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1JUTVBTQW5kSFRUUFMuaHRtbCIuc3Vic3RyKDEsICIvUlRNUFNBbmRIVFRQUy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5zdWJzdHIoMSwgIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5zdWJzdHIoMSwgIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NsdXN0ZXJpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DbHVzdGVyaW5nLmh0bWwiLnN1YnN0cigxLCAiL0NsdXN0ZXJpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvR2V0VmVyc2lvbkluZm8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9HZXRWZXJzaW9uSW5mby5odG1sIi5zdWJzdHIoMSwgIi9HZXRWZXJzaW9uSW5mby5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkgICAgCQkJCQkKKyAgICAJCQkJCWN1cnJlbnRMaW5rID0gY3VycmVudExpbmsudG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCWN1cnJlbnRMb2NhdGlvbiA9IGN1cnJlbnRMb2NhdGlvbi50b0xvd2VyQ2FzZSgpOworICAgIAkJCQkJCisJCQkJCQlyZXR1cm4gc2lkZUJhckxhc3RTdHJpbmcgPT0gY3VycmVudExpbmsrIiMiK2N1cnJlbnRMb2NhdGlvbjsKKwkJCQkJfQorCQkJCX0pOworCQkJfSk7CisJCQk8L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCQkJCSQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgeworCQkJCQkkKCcuZmFuY3lib3gtYnV0dG9ucycpLmNvbG9yYm94KHtyZWw6J2ZhbmN5Ym94LWJ1dHRvbnMnLHdpZHRoOiI3NSUiLCBoZWlnaHQ6Ijc1JSJ9KTsKKwkJCQkJJCgnI2FjY29yZGlvbiBhJykuZWFjaChmdW5jdGlvbigpIHsKKwkJCQkgICAgICB2YXIgYSA9ICQodGhpcyk7CisJCQkJICAgICAgdmFyIGhyZWYgPSBhLmF0dHIoImhyZWYiKTsKKwkJCQkgICAgICBpZiAoaHJlZi5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkgICAgICAJICB2YXIgY29tcGFyZUl0ID0gaHJlZi5zdWJzdHIoMiwgaHJlZi5sZW5ndGgpOworCQkJCQkgICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKGNvbXBhcmVJdCkhPSAtMSkgeworCQkJCQkgICAgICAgYS5hZGRDbGFzcygnYWN0aXZlJyk7CisJCQkJCSAgICAgIH0KKwkJCQkgICAgICB9CisJCQkJICAgIH0pOworCQkJCQkkKCcjY29pbi1zbGlkZXInKS5jb2luc2xpZGVyKHsgd2lkdGg6IDY0MCxoZWlnaHQ6IDQwMCwgZGVsYXk6IDQwMDAgIH0pOwkJCQkJCisJCQkJfSk7CisJCQk8L3NjcmlwdD4JCisJCQkJCQkKKwkJCTxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisJCQkJLmZhbmN5Ym94LWN1c3RvbSAuZmFuY3lib3gtb3V0ZXIgeworCQkJCQlib3gtc2hhZG93OiAwIDAgNTBweCAjMjIyOworCQkJCX0KKwkJCTwvc3R5bGU+CisgICAgICAgIDwvaGVhZD4KKworICAgICAgICA8Ym9keSBiZ2NvbG9yPSIjZmZmZmZmIiB0ZXh0PSIjMDAwMDAwIiBsaW5rPSIjMTIzNDY1IiB2bGluaz0iIzEyMzQ2NSIgYWxpbms9IiMwMDAwMDAiPiAgCisgICAgICAgIAk8ZGl2IGNsYXNzPSJtYWluYm9keSIgc3R5bGU9IndpZHRoOiAxMDAlOyI+CisgICAgICAgIAk8ZGl2IGNsYXNzPSJzdXBlcmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIj4KKyAgICAgICAgICAgICAgICA8IS0tIFRPUCBJTUFHRSAtLT4KKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCI+Cis8YSBocmVmPSJodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvIj48aW1nIHNyYz0iLi9pbWFnZXMvbG9nby0yLmpwZyIgYWx0PSJBcGFjaGUgT3Blbk1lZXRpbmdzIiBib3JkZXI9IjAiLz48L2E+Cis8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCIgPgorCTxhIGhyZWY9ImRlbW8uaHRtbCI+RGVtbzwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJkb3dubG9hZHMuaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5Eb3dubG9hZDwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJpbnN0YWxsYXRpb24uaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5JbnN0YWxsYXRpb248L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MiIHRhcmdldD0iX0JMQU5LIj5XaWtpPC9hPgorCTxzcGFuPiZuYnNwOzwvc3Bhbj4KKzwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjQiPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8IS0tIExFRlQgU0lERSBOQVZJR0FUSU9OIC0tPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiIG5vd3JhcD0ibm93cmFwIj4KKworICAgICAgICAgICAgICAgICAgICA8IS0tIHNwZWNpYWwgQUNvbiBMb2dvIC0gbGVhdmUgaGVyZSBmb3IgbmV4dCB0aW1lCisgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9hcGFjaGVjb24uY29tLzIwMDUvVVMvIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vYXBhY2hlLm9yZy9pbWFnZXMvYWMyMDA1dXNfYmx1ZV8xMjV4MTI1LmpwZyIgaGVpZ2h0PSIxMjUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPSIxMjUiIGJvcmRlcj0iMCIgYWx0PSJBcGFjaGVDb24gVVMgMjAwNSIgLz4KKyAgICAgICAgICAgICAgICAgICAgPC9hPiAgLS0+CisKKyAgICAgICAgICAgICAgICAgICA8IS0tIHJlZ3VsYXIgbWVudSAtLT4KKworICAgICAgICAgICAgICAgICAgICAKKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8ZGl2IGlkPSJhY2NvcmRpb24iIHN0eWxlPSJ3aWR0aDogMTAwJSI+CisgICAgCisgICAgICAgICAgICAJPGgzPjxhIGhyZWY9IiNHZW5lcmFsIj5HZW5lcmFsPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9pbmRleC5odG1sIj5Ib21lPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9saWNlbnNlLmh0bWwiPkxpY2Vuc2U8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5BU0Y8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2Rvd25sb2Fkcy5odG1sIj5Eb3dubG9hZHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIj5Db21tZXJjaWFsIFN1cHBvcnQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0luc3RhbGxhdGlvbmFuZFVwZ3JhZGUiPkluc3RhbGxhdGlvbiBhbmQgVXBncmFkZTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5zdGFsbGF0aW9uLmh0bWwiPkluc3RhbGxhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vVXBncmFkZS5odG1sIj5VcGdyYWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLmh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIj5UdXRvcmlhbHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCI+Q29tbWFuZCBMaW5lIEFkbWluPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb21tdW5pdHkiPkNvbW11bml0eTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZ2V0LWludm9sdmVkLmh0bWwiPkdldCBJbnZvbHZlZDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdGVhbS1saXN0Lmh0bWwiPkNvbW1pdHRlcnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL21haWwtbGlzdHMuaHRtbCI+TWFpbGluZyBMaXN0czwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIj5XaWtpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNEZXZlbG9wbWVudCI+RGV2ZWxvcG1lbnQ8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3N2bi5odG1sIj5Tb3VyY2UgQ29kZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiPkJ1Z3MgLyBJc3N1ZXMgKEpJUkEpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kZXBlbmRlbmNpZXMuaHRtbCI+RGVwZW5kZW5jaWVzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CdWlsZEluc3RydWN0aW9ucy5odG1sIj5CdWlsZCBJbnN0cnVjdGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pVbml0VGVzdGluZy5odG1sIj5KVW5pdCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9NYW51YWxUZXN0aW5nLmh0bWwiPk1hbnVhbCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWxlYXNlR3VpZGUuaHRtbCI+UmVsZWFzZSBHdWlkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vV2Vic2l0ZUd1aWRlLmh0bWwiPldlYnNpdGUgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0ludGVncmF0aW9uIj5JbnRlZ3JhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU29hcFJlc3RBUEkuaHRtbCI+U09BUC9SRVNUIEFQSTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVzdEFQSVNhbXBsZS5odG1sIj5SRVNUIEFQSSBTYW1wbGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0xkYXBBbmRBRFMuaHRtbCI+TGRhcCBhbmQgQURTPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIj5Wb0lQIGFuZCBTSVA8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0Vycm9yc1RhYmxlLmh0bWwiPkVycm9ycyB0YWJsZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjUGx1Z2lucyI+UGx1Z2luczwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTW9vZGxlUGx1Z2luLmh0bWwiPk1vb2RsZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Nha2FpUGx1Z2luLmh0bWwiPlNha2FpIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSmlyYVBsdWdpbi5odG1sIj5KaXJhIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSm9vbWxhUGx1Z2luLmh0bWwiPkpvb21sYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0RydXBhbFBsdWdpbi5odG1sIj5EcnVwYWwgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CaXRyaXhQbHVnaW4uaHRtbCI+Qml0cml4IFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQ29uZmx1ZW5jZVBsdWdpbi5odG1sIj5Db25mbHVlbmNlIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU3VnYXJDUk1QbHVnaW4uaHRtbCI+U3VnYXJDUk0gUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWRtaW5lUGx1Z2luLmh0bWwiPlJlZG1pbmUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb25maWd1cmF0aW9uIj5Db25maWd1cmF0aW9uPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5EQiBTYW1wbGUgQ29uZmlndXJhdGlvbnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIj5BcGFjaGUgRGVyYnk8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0lCTURCMkNvbmZpZy5odG1sIj5JQk0gREIyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcmFjbGVDb25maWcuaHRtbCI+T3JhY2xlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9NeVNRTENvbmZpZy5odG1sIj5NeVNRTDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9zdGdyZXNDb25maWcuaHRtbCI+UG9zdGdyZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkxvY2FsaXphdGlvbiBhbmQgbGFuZ3VhZ2VzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCI+SW50ZXJuYXRpb25hbGlzYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0xhbmd1YWdlRWRpdG9yLmh0bWwiPkxhbmd1YWdlRWRpdG9yPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiPlRpbWVab25lSGFuZGxpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0VkaXRUZW1wbGF0ZXMuaHRtbCI+RWRpdFRlbXBsYXRlczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TkFUIFBvcnQgU2V0dGluZ3M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Qb3J0U2V0dGluZ3MuaHRtbCI+UG9ydCBzZXR0aW5nczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+UGVyZm9ybWFuY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIj5KVk0gcGVyZm9ybWFuY2UgdHVuaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Vc2VyIEludGVyZmFjZTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCI+VGhlbWVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9EYXNoYm9hcmQuaHRtbCI+RGFzaGJvYXJkPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIj5XZWJjYW0gcmVzb2x1dGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIj5Sb29tIGxheW91dCBvcHRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Ib3RLZXlzLmh0bWwiPkhvdCBLZXlzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5DdXN0b21pemF0aW9uPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViYXBwTmFtZVBhdGguaHRtbCI+V2ViYXBwIG5hbWUvcGF0aDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTmF2aWdhdGlvbi5odG1sIj5OYXZpZ2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiPkNhbGVuZGFyIGFuZCB0aW1lem9uZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIj5DdXN0b20gcm9vbSB0eXBlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIj5DdXN0b20gY3R5cHQgbWVjaGFuaXNtPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIj5HZW5lcmFsIENvbmZpZ3VyYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlNlY3VyaXR5PC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUmVzdHJpY3RlZEFjY2Vzcy5odG1sIj5SZXN0cmljdGVkIEFjY2VzczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUlRNUFNBbmRIVFRQUy5odG1sIj5SVE1QUyBhbmQgSFRUUFM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNvbnZlcnRlcnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiPk9wZW5PZmZpY2UgQ29udmVydGVyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiPkZGTVBFRyBWZXJzaW9uIFN3aXRjaDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q2x1c3RlcmluZzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NsdXN0ZXJpbmcuaHRtbCI+Q2x1c3RlcmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TWlzYzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0dldFZlcnNpb25JbmZvLmh0bWwiPkdldCB2ZXJzaW9uIGluZm88L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAorICAgIDwvZGl2PgorICAgICAKKyAgICA8YnIvPgorICAgIAorICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJQb3N0Z3JlcyBDb25maWd1cmF0aW9uIj48c3Ryb25nPlBvc3RncmVzIENvbmZpZ3VyYXRpb248L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgYmdjb2xvcj0iI0VGRUZFRiI+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IkJlZm9yZSB5b3Ugc3RhcnQiPjxzdHJvbmc+QmVmb3JlIHlvdSBzdGFydDwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+DQorCQkJCQk8bGk+TWFrZSBzdXJlIHRoYXQgeW91IGhhdmUgc2V0IHV0ZjggYXMgZGVmYXVsdC9zZXJ2ZXItY2hhcmFjdGVyLXNldCANCisJCQkJCTwvbGk+DQorCQkJCQk8bGk+DQorCQkJCQkJbWFrZSBzdXJlIFBvc3RncmVzIGlzIGxpc3RlbmluZyBvbiBUQ1AvSVAgY29ubmVjdGlvbnMhDQorCQkJCQkJPGJyIC8+DQorCQkJCQkJVG8gdmVyaWZ5IGlmIFBvc3RncmVzIGNvbm5lY3Rpb24gaXMgd29ya2luZzogT3Blbk1lZXRpbmdzIHdpbGwNCisJCQkJCQlhdXRvbWF0aWNhbGx5IGNyZWF0ZSBhbGwgdGFibGVzIGluIHRoZSBkYXRhYmFzZSBhbmQgYWxsIHRhYmxlcw0KKwkJCQkJCXNob3VsZCBoYXZlIHV0ZjggYXMgZW5jb2RpbmcvY29sbGF0aW9uIQ0KKwkJCQkJPC9saT4NCisJCQkJCTxsaT5JZiB5b3UgZW5jb3VudGVyIGlzc3VlcywgeW91IGNhbiBkcm9wIHRoZSBkYiBhZ2FpbiBhbmQgZGVsZXRlDQorCQkJCQkJdGhlIGZpbGUgJHJlZDUvd2ViYXBwcy9vcGVubWVldGluZ3MvY29uZi9pbnN0YWxsLnhtbCBhbmQgdGhlbiBydW4NCisJCQkJCQl0aGUgd2ViIGJhc2VkIGluc3RhbGxlciBhZ2Fpbg0KKwkJCQkJPC9saT4NCisJCQkJCTxsaT48c3BhbiBzdHlsZT0iZm9udC1zaXplOiBsYXJnZXI7IGNvbG9yOiBibHVlOyI+SU1QT1JUQU5UPC9zcGFuPiBBY2NvcmRpbmcgdG8NCisJCQkJCQk8YSBocmVmPSJodHRwOi8vbWFya21haWwub3JnL21lc3NhZ2Uvb3B5bWxhYjJlNnd5Z2I3cCI+dGhpczwvYT4gdGhyZWFkIHlvdSBuZWVkIHRvIGVuc3VyZTo8YnIgLz4NCisJCQkJCQk8dHQ+c3RhbmRhcmRfY29uZm9ybWluZ19zdHJpbmdzPC90dD4gaXMgc2V0IHRvIDx0dD48Yj5vbjwvYj48L3R0PiBhbmQgPGJyIC8+DQorCQkJCQkJPHR0PmVzY2FwZV9zdHJpbmdfd2FybmluZzwvdHQ+IGlzIHNldCB0byA8dHQ+PGI+b2ZmPC9iPjwvdHQ+DQorCQkJCQk8L2xpPg0KKwkJCQk8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgYmdjb2xvcj0iI0VGRUZFRiI+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IlN0ZXBzIHRvZG8iPjxzdHJvbmc+U3RlcHMgdG9kbzwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+DQorCQkJCQk8bGk+DQorCQkJCQkJUmVuYW1lOg0KKwkJCQkJCTxiciAvPg0KKwkJCQkJCSRyZWQ1L3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvY2xhc3Nlcy9NRVRBLUlORi9wb3N0Z3Jlc19wZXJzaXN0ZW5jZS54bWwNCisJCQkJCQk8YnIgLz4NCisJCQkJCQl0bw0KKwkJCQkJCTxiciAvPg0KKwkJCQkJCSRyZWQ1L3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvY2xhc3Nlcy9NRVRBLUlORi9wZXJzaXN0ZW5jZS54bWwNCisJCQkJCTwvbGk+DQorCQkJCQk8bGk+DQorCQkJCQkJUHJlcGFyZSBEYXRhYmFzZSBTZXR0aW5ncyAtIGdvIHRvDQorCQkJCQkJb3Blbm1lZXRpbmdzX3ZlcnNpb25fbm9feHgvd2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9jbGFzc2VzL01FVEEtSU5GL3BlcnNpc3RlbmNlLnhtbA0KKwkJCQkJCTxiciAvPg0KKwkJCQkJCUFsdGVyIGNvbmZpZyB2YWx1ZXMgaW4gcGVyc2lzdGVuY2UueG1sIERCX0hPU1QgVVNFUl9OQU1FIFVTRVJfUEFTUw0KKwkJCQkJCXdpdGggeW91ciB2YWx1ZXMNCisJCQkJCTwvbGk+DQorCQkJCQk8bGk+DQorCQkJCQkJUnVuIHJlZDUtc2VydmljZSBhbmQgZ290byB0aGUgd2ViLWJhc2VkIGluc3RhbGxlcjoNCisJCQkJCQlodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL2luc3RhbGwNCisJCQkJCTwvbGk+DQorCQkJCTwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCBiZ2NvbG9yPSIjRUZFRkVGIj4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9ImFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iUG9zdGdyZXMgU2FtcGxlIENvbmZpZ3VyYXRpb24iPjxzdHJvbmc+UG9zdGdyZXMgU2FtcGxlIENvbmZpZ3VyYXRpb248L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQorCQkJCQlUaGVyZSBpcyBhIHNhbXBsZSBjb25maWd1cmF0aW9uIGZvciBQb3N0Z3JlcyB0aGF0IHNoaXBzIHdpdGgNCisJCQkJCWV2ZXJ5DQorCQkJCQlyZWxlYXNlIGluOg0KKwkJCQkJPGJyIC8+DQorCQkJCQkvd2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9jbGFzc2VzL01FVEEtSU5GL3Bvc3RncmVzX3BlcnNpc3RlbmNlLnhtbA0KKwkJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8IS0tIEZPT1RFUiAtLT4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGFsaWduPSJjZW50ZXIiPjxmb250IGNvbG9yPSIjMTIzNDY1IiBzaXplPSItMSI+PGVtPgorICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgJiMxNjk7IDIwMDMtMjAxMywgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisgICAgICAgICAgICAgICAgICAgIDwvZW0+PC9mb250PjwvZGl2PgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2JvZHk+CisgICAgPC9odG1sPgorPCEtLSBlbmQgdGhlIHByb2Nlc3NpbmcgLS0+CisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKZGlmZiAtLWdpdCBhL2RvY3MvUlRNUFNBbmRIVFRQUy5odG1sIGIvZG9jcy9SVE1QU0FuZEhUVFBTLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzExMjdhYwotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvUlRNUFNBbmRIVFRQUy5odG1sCkBAIC0wLDAgKzEsOTAyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KKworPCEtLQorQ29weXJpZ2h0IDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KK0xpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKK2h0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCitVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCitkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCitTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCitsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorCisKKzwhLS0gQ29udGVudCBTdHlsZXNoZWV0IGZvciBTaXRlIC0tPgorCisgICAgICAgIAorPCEtLSBzdGFydCB0aGUgcHJvY2Vzc2luZyAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPCEtLSBHRU5FUkFURUQgRklMRSwgRE8gTk9UIEVESVQsIEVESVQgVEhFIFhNTCBGSUxFIElOIHhkb2NzIElOU1RFQUQhIC0tPgorICAgIDwhLS0gTWFpbiBQYWdlIFNlY3Rpb24gLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDxodG1sPgorICAgICAgICA8aGVhZD4KKyAgICAgICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ii8+CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9IgorCQkJT3Blbk1lZXRpbmdzIFRlYW0KKwkJIj4KKyAgICAgICAgICAgIDxtZXRhIG5hbWU9ImVtYWlsIiBjb250ZW50PSJzZWJhd2FnbmVyQGFwYWNoZS5vcmciPgorICAgICAgICAgICAgCisgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIDx0aXRsZT5BcGFjaGUgT3Blbk1lZXRpbmdzIC0gVXNpbmcgT3Blbk1lZXRpbmdzIHdpdGggUlRNUFMgYW5kIEhUVFBTPC90aXRsZT4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9vcGVubWVldGluZ3MuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9qcXVlcnktdWkuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2luLXNsaWRlci1zdHlsZXMuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2xvcmJveC5jc3MiIC8+CisgICAgICAgICAgICAKKwkJCTwhLS0gQWRkIGpRdWVyeSBsaWJyYXJ5IC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LTEuNy4xLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPCEtLSBBZGQgY29pbnNsaWRlciBwbHVnaW5zIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvY29pbi1zbGlkZXIubWluLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPCEtLSBBZGQgY29sb3Jib3ggcGx1Z2luIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LmNvbG9yYm94LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmNvcmUuanMiPjwvc2NyaXB0PgorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS53aWRnZXQuanMiPjwvc2NyaXB0PgorCQkKKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkuYWNjb3JkaW9uLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdD4KKwkJCSQoZnVuY3Rpb24oKSB7CisJCQkJJCggIiNhY2NvcmRpb24iICkuYWNjb3JkaW9uKHsKKwkJCQkJYXV0b0hlaWdodDogZmFsc2UsCisJCQkJCW5hdmlnYXRpb246IHRydWUsCisJCQkJCW5hdmlnYXRpb25GaWx0ZXI6IGZ1bmN0aW9uICgpIHsKKwkJCQkJCXZhciBzaWRlYmFySHJlZkFycmF5ID0gdGhpcy5ocmVmLnNwbGl0KCIvIik7CisgICAgCQkJCQl2YXIgc2lkZUJhckxhc3RTdHJpbmcgPSBzaWRlYmFySHJlZkFycmF5W3NpZGViYXJIcmVmQXJyYXkubGVuZ3RoIC0gMV0udG9Mb3dlckNhc2UoKTsKKwkJCQkJCQorCQkJCQkJaWYgKHNpZGVCYXJMYXN0U3RyaW5nLmluZGV4T2YoIiMiKSA9PSAtMSkgeworCQkJCQkJCXJldHVybiBmYWxzZTsKKwkJCQkJCX0KKwkJCQkJCQorCQkJCQkJCQkJCQkJLyogZG9jdW1lbnQubG9jYXRpb24uaHJlZiAqLworCQkJCQkJdmFyIGN1cnJlbnRTZWN0aW9uID0gIiI7CisJCQkJCQkKKwkJCQkJCXZhciBjdXJyZW50TG9jYXRpb24gPSAiIjsKKwkJCQkJCXZhciBjdXJyZW50TGluayA9ICIiOworCQkJCQkJaWYgKGZhbHNlKSB7CisJCQkJCQkKKwkJCQkJCX0KKyAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5kZXguaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5kZXguaHRtbCIuc3Vic3RyKDEsICIvaW5kZXguaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9saWNlbnNlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2xpY2Vuc2UuaHRtbCIuc3Vic3RyKDEsICIvbGljZW5zZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5zdWJzdHIoMSwgImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZG93bmxvYWRzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2Rvd25sb2Fkcy5odG1sIi5zdWJzdHIoMSwgIi9kb3dubG9hZHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiLnN1YnN0cigxLCAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9pbnN0YWxsYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5zdGFsbGF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL2luc3RhbGxhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1VwZ3JhZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvVXBncmFkZS5odG1sIi5zdWJzdHIoMSwgIi9VcGdyYWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIuc3Vic3RyKDEsICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db21tYW5kTGluZUFkbWluLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIuc3Vic3RyKDEsICIvQ29tbWFuZExpbmVBZG1pbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9nZXQtaW52b2x2ZWQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9nZXQtaW52b2x2ZWQuaHRtbCIuc3Vic3RyKDEsICIvZ2V0LWludm9sdmVkLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGVhbS1saXN0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdGVhbS1saXN0Lmh0bWwiLnN1YnN0cigxLCAiL3RlYW0tbGlzdC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL21haWwtbGlzdHMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9tYWlsLWxpc3RzLmh0bWwiLnN1YnN0cigxLCAiL21haWwtbGlzdHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLnN1YnN0cigxLCAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3N2bi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvc3ZuLmh0bWwiLnN1YnN0cigxLCAiL3N2bi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIuc3Vic3RyKDEsICJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2RlcGVuZGVuY2llcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZGVwZW5kZW5jaWVzLmh0bWwiLnN1YnN0cigxLCAiL2RlcGVuZGVuY2llcy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pVbml0VGVzdGluZy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSlVuaXRUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL0pVbml0VGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01hbnVhbFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01hbnVhbFRlc3RpbmcuaHRtbCIuc3Vic3RyKDEsICIvTWFudWFsVGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlbGVhc2VHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVsZWFzZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1JlbGVhc2VHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYnNpdGVHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvV2Vic2l0ZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1dlYnNpdGVHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Tb2FwUmVzdEFQSS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU29hcFJlc3RBUEkuaHRtbCIuc3Vic3RyKDEsICIvU29hcFJlc3RBUEkuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZXN0QVBJU2FtcGxlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZXN0QVBJU2FtcGxlLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RBUElTYW1wbGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MZGFwQW5kQURTLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9MZGFwQW5kQURTLmh0bWwiLnN1YnN0cigxLCAiL0xkYXBBbmRBRFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FcnJvcnNUYWJsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRXJyb3JzVGFibGUuaHRtbCIuc3Vic3RyKDEsICIvRXJyb3JzVGFibGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTW9vZGxlUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01vb2RsZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Nb29kbGVQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TYWthaVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TYWthaVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TYWthaVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ppcmFQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSmlyYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9KaXJhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSm9vbWxhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pvb21sYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Kb29tbGFQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EcnVwYWxQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRHJ1cGFsUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0RydXBhbFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0JpdHJpeFBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CaXRyaXhQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvQml0cml4UGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TdWdhckNSTVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TdWdhckNSTVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TdWdhckNSTVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlZG1pbmVQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVkbWluZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9SZWRtaW5lUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSUJNREIyQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSUJNREIyQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL0lCTURCMkNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3JhY2xlQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3JhY2xlQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL09yYWNsZUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTXlTUUxDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9NeVNRTENvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9NeVNRTENvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUG9zdGdyZXNDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MYW5ndWFnZUVkaXRvci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLnN1YnN0cigxLCAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5zdWJzdHIoMSwgIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FZGl0VGVtcGxhdGVzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRWRpdFRlbXBsYXRlcy5odG1sIi5zdWJzdHIoMSwgIi9FZGl0VGVtcGxhdGVzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1BvcnRTZXR0aW5ncy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1BvcnRTZXR0aW5ncy5odG1sIi5zdWJzdHIoMSwgIi9Qb3J0U2V0dGluZ3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5zdWJzdHIoMSwgIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5zdWJzdHIoMSwgIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EYXNoYm9hcmQuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9EYXNoYm9hcmQuaHRtbCIuc3Vic3RyKDEsICIvRGFzaGJvYXJkLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLnN1YnN0cigxLCAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Ib3RLZXlzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSG90S2V5cy5odG1sIi5zdWJzdHIoMSwgIi9Ib3RLZXlzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYmFwcE5hbWVQYXRoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvV2ViYXBwTmFtZVBhdGguaHRtbCIuc3Vic3RyKDEsICIvV2ViYXBwTmFtZVBhdGguaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL05hdmlnYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9OYXZpZ2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL05hdmlnYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLnN1YnN0cigxLCAiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIuc3Vic3RyKDEsICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIuc3Vic3RyKDEsICIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUlRNUFNBbmRIVFRQUy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1JUTVBTQW5kSFRUUFMuaHRtbCIuc3Vic3RyKDEsICIvUlRNUFNBbmRIVFRQUy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5zdWJzdHIoMSwgIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5zdWJzdHIoMSwgIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NsdXN0ZXJpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DbHVzdGVyaW5nLmh0bWwiLnN1YnN0cigxLCAiL0NsdXN0ZXJpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvR2V0VmVyc2lvbkluZm8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9HZXRWZXJzaW9uSW5mby5odG1sIi5zdWJzdHIoMSwgIi9HZXRWZXJzaW9uSW5mby5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkgICAgCQkJCQkKKyAgICAJCQkJCWN1cnJlbnRMaW5rID0gY3VycmVudExpbmsudG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCWN1cnJlbnRMb2NhdGlvbiA9IGN1cnJlbnRMb2NhdGlvbi50b0xvd2VyQ2FzZSgpOworICAgIAkJCQkJCisJCQkJCQlyZXR1cm4gc2lkZUJhckxhc3RTdHJpbmcgPT0gY3VycmVudExpbmsrIiMiK2N1cnJlbnRMb2NhdGlvbjsKKwkJCQkJfQorCQkJCX0pOworCQkJfSk7CisJCQk8L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCQkJCSQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgeworCQkJCQkkKCcuZmFuY3lib3gtYnV0dG9ucycpLmNvbG9yYm94KHtyZWw6J2ZhbmN5Ym94LWJ1dHRvbnMnLHdpZHRoOiI3NSUiLCBoZWlnaHQ6Ijc1JSJ9KTsKKwkJCQkJJCgnI2FjY29yZGlvbiBhJykuZWFjaChmdW5jdGlvbigpIHsKKwkJCQkgICAgICB2YXIgYSA9ICQodGhpcyk7CisJCQkJICAgICAgdmFyIGhyZWYgPSBhLmF0dHIoImhyZWYiKTsKKwkJCQkgICAgICBpZiAoaHJlZi5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkgICAgICAJICB2YXIgY29tcGFyZUl0ID0gaHJlZi5zdWJzdHIoMiwgaHJlZi5sZW5ndGgpOworCQkJCQkgICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKGNvbXBhcmVJdCkhPSAtMSkgeworCQkJCQkgICAgICAgYS5hZGRDbGFzcygnYWN0aXZlJyk7CisJCQkJCSAgICAgIH0KKwkJCQkgICAgICB9CisJCQkJICAgIH0pOworCQkJCQkkKCcjY29pbi1zbGlkZXInKS5jb2luc2xpZGVyKHsgd2lkdGg6IDY0MCxoZWlnaHQ6IDQwMCwgZGVsYXk6IDQwMDAgIH0pOwkJCQkJCisJCQkJfSk7CisJCQk8L3NjcmlwdD4JCisJCQkJCQkKKwkJCTxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisJCQkJLmZhbmN5Ym94LWN1c3RvbSAuZmFuY3lib3gtb3V0ZXIgeworCQkJCQlib3gtc2hhZG93OiAwIDAgNTBweCAjMjIyOworCQkJCX0KKwkJCTwvc3R5bGU+CisgICAgICAgIDwvaGVhZD4KKworICAgICAgICA8Ym9keSBiZ2NvbG9yPSIjZmZmZmZmIiB0ZXh0PSIjMDAwMDAwIiBsaW5rPSIjMTIzNDY1IiB2bGluaz0iIzEyMzQ2NSIgYWxpbms9IiMwMDAwMDAiPiAgCisgICAgICAgIAk8ZGl2IGNsYXNzPSJtYWluYm9keSIgc3R5bGU9IndpZHRoOiAxMDAlOyI+CisgICAgICAgIAk8ZGl2IGNsYXNzPSJzdXBlcmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIj4KKyAgICAgICAgICAgICAgICA8IS0tIFRPUCBJTUFHRSAtLT4KKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCI+Cis8YSBocmVmPSJodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvIj48aW1nIHNyYz0iLi9pbWFnZXMvbG9nby0yLmpwZyIgYWx0PSJBcGFjaGUgT3Blbk1lZXRpbmdzIiBib3JkZXI9IjAiLz48L2E+Cis8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCIgPgorCTxhIGhyZWY9ImRlbW8uaHRtbCI+RGVtbzwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJkb3dubG9hZHMuaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5Eb3dubG9hZDwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJpbnN0YWxsYXRpb24uaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5JbnN0YWxsYXRpb248L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MiIHRhcmdldD0iX0JMQU5LIj5XaWtpPC9hPgorCTxzcGFuPiZuYnNwOzwvc3Bhbj4KKzwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjQiPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8IS0tIExFRlQgU0lERSBOQVZJR0FUSU9OIC0tPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiIG5vd3JhcD0ibm93cmFwIj4KKworICAgICAgICAgICAgICAgICAgICA8IS0tIHNwZWNpYWwgQUNvbiBMb2dvIC0gbGVhdmUgaGVyZSBmb3IgbmV4dCB0aW1lCisgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9hcGFjaGVjb24uY29tLzIwMDUvVVMvIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vYXBhY2hlLm9yZy9pbWFnZXMvYWMyMDA1dXNfYmx1ZV8xMjV4MTI1LmpwZyIgaGVpZ2h0PSIxMjUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPSIxMjUiIGJvcmRlcj0iMCIgYWx0PSJBcGFjaGVDb24gVVMgMjAwNSIgLz4KKyAgICAgICAgICAgICAgICAgICAgPC9hPiAgLS0+CisKKyAgICAgICAgICAgICAgICAgICA8IS0tIHJlZ3VsYXIgbWVudSAtLT4KKworICAgICAgICAgICAgICAgICAgICAKKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8ZGl2IGlkPSJhY2NvcmRpb24iIHN0eWxlPSJ3aWR0aDogMTAwJSI+CisgICAgCisgICAgICAgICAgICAJPGgzPjxhIGhyZWY9IiNHZW5lcmFsIj5HZW5lcmFsPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9pbmRleC5odG1sIj5Ib21lPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9saWNlbnNlLmh0bWwiPkxpY2Vuc2U8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5BU0Y8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2Rvd25sb2Fkcy5odG1sIj5Eb3dubG9hZHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIj5Db21tZXJjaWFsIFN1cHBvcnQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0luc3RhbGxhdGlvbmFuZFVwZ3JhZGUiPkluc3RhbGxhdGlvbiBhbmQgVXBncmFkZTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5zdGFsbGF0aW9uLmh0bWwiPkluc3RhbGxhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vVXBncmFkZS5odG1sIj5VcGdyYWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLmh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIj5UdXRvcmlhbHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCI+Q29tbWFuZCBMaW5lIEFkbWluPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb21tdW5pdHkiPkNvbW11bml0eTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZ2V0LWludm9sdmVkLmh0bWwiPkdldCBJbnZvbHZlZDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdGVhbS1saXN0Lmh0bWwiPkNvbW1pdHRlcnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL21haWwtbGlzdHMuaHRtbCI+TWFpbGluZyBMaXN0czwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIj5XaWtpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNEZXZlbG9wbWVudCI+RGV2ZWxvcG1lbnQ8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3N2bi5odG1sIj5Tb3VyY2UgQ29kZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiPkJ1Z3MgLyBJc3N1ZXMgKEpJUkEpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kZXBlbmRlbmNpZXMuaHRtbCI+RGVwZW5kZW5jaWVzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CdWlsZEluc3RydWN0aW9ucy5odG1sIj5CdWlsZCBJbnN0cnVjdGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pVbml0VGVzdGluZy5odG1sIj5KVW5pdCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9NYW51YWxUZXN0aW5nLmh0bWwiPk1hbnVhbCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWxlYXNlR3VpZGUuaHRtbCI+UmVsZWFzZSBHdWlkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vV2Vic2l0ZUd1aWRlLmh0bWwiPldlYnNpdGUgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0ludGVncmF0aW9uIj5JbnRlZ3JhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU29hcFJlc3RBUEkuaHRtbCI+U09BUC9SRVNUIEFQSTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVzdEFQSVNhbXBsZS5odG1sIj5SRVNUIEFQSSBTYW1wbGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0xkYXBBbmRBRFMuaHRtbCI+TGRhcCBhbmQgQURTPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIj5Wb0lQIGFuZCBTSVA8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0Vycm9yc1RhYmxlLmh0bWwiPkVycm9ycyB0YWJsZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjUGx1Z2lucyI+UGx1Z2luczwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTW9vZGxlUGx1Z2luLmh0bWwiPk1vb2RsZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Nha2FpUGx1Z2luLmh0bWwiPlNha2FpIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSmlyYVBsdWdpbi5odG1sIj5KaXJhIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSm9vbWxhUGx1Z2luLmh0bWwiPkpvb21sYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0RydXBhbFBsdWdpbi5odG1sIj5EcnVwYWwgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CaXRyaXhQbHVnaW4uaHRtbCI+Qml0cml4IFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQ29uZmx1ZW5jZVBsdWdpbi5odG1sIj5Db25mbHVlbmNlIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU3VnYXJDUk1QbHVnaW4uaHRtbCI+U3VnYXJDUk0gUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWRtaW5lUGx1Z2luLmh0bWwiPlJlZG1pbmUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb25maWd1cmF0aW9uIj5Db25maWd1cmF0aW9uPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5EQiBTYW1wbGUgQ29uZmlndXJhdGlvbnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIj5BcGFjaGUgRGVyYnk8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0lCTURCMkNvbmZpZy5odG1sIj5JQk0gREIyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcmFjbGVDb25maWcuaHRtbCI+T3JhY2xlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9NeVNRTENvbmZpZy5odG1sIj5NeVNRTDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9zdGdyZXNDb25maWcuaHRtbCI+UG9zdGdyZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkxvY2FsaXphdGlvbiBhbmQgbGFuZ3VhZ2VzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCI+SW50ZXJuYXRpb25hbGlzYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0xhbmd1YWdlRWRpdG9yLmh0bWwiPkxhbmd1YWdlRWRpdG9yPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiPlRpbWVab25lSGFuZGxpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0VkaXRUZW1wbGF0ZXMuaHRtbCI+RWRpdFRlbXBsYXRlczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TkFUIFBvcnQgU2V0dGluZ3M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Qb3J0U2V0dGluZ3MuaHRtbCI+UG9ydCBzZXR0aW5nczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+UGVyZm9ybWFuY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIj5KVk0gcGVyZm9ybWFuY2UgdHVuaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Vc2VyIEludGVyZmFjZTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCI+VGhlbWVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9EYXNoYm9hcmQuaHRtbCI+RGFzaGJvYXJkPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIj5XZWJjYW0gcmVzb2x1dGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIj5Sb29tIGxheW91dCBvcHRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Ib3RLZXlzLmh0bWwiPkhvdCBLZXlzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5DdXN0b21pemF0aW9uPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViYXBwTmFtZVBhdGguaHRtbCI+V2ViYXBwIG5hbWUvcGF0aDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTmF2aWdhdGlvbi5odG1sIj5OYXZpZ2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiPkNhbGVuZGFyIGFuZCB0aW1lem9uZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIj5DdXN0b20gcm9vbSB0eXBlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIj5DdXN0b20gY3R5cHQgbWVjaGFuaXNtPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIj5HZW5lcmFsIENvbmZpZ3VyYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlNlY3VyaXR5PC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUmVzdHJpY3RlZEFjY2Vzcy5odG1sIj5SZXN0cmljdGVkIEFjY2VzczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUlRNUFNBbmRIVFRQUy5odG1sIj5SVE1QUyBhbmQgSFRUUFM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNvbnZlcnRlcnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiPk9wZW5PZmZpY2UgQ29udmVydGVyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiPkZGTVBFRyBWZXJzaW9uIFN3aXRjaDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q2x1c3RlcmluZzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NsdXN0ZXJpbmcuaHRtbCI+Q2x1c3RlcmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TWlzYzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0dldFZlcnNpb25JbmZvLmh0bWwiPkdldCB2ZXJzaW9uIGluZm88L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAorICAgIDwvZGl2PgorICAgICAKKyAgICA8YnIvPgorICAgIAorICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJVc2luZyBPcGVuTWVldGluZ3Mgd2l0aCBSVE1QUyBhbmQgSFRUUFMiPjxzdHJvbmc+VXNpbmcgT3Blbk1lZXRpbmdzIHdpdGggUlRNUFMgYW5kIEhUVFBTPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5UaGVyZSBhcmUgMyB3YXlzIHRoZSBjbGllbnQgY29tbXVuaWNhdGVzIHdpdGggdGhlIHNlcnZlcjogPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPg0KKwkJCQk8bGk+VGhlIGZsYXNoLWNsaWVudCB1c2VzIFJUTVAgcHJvdG9jb2wgdG8gdHJhbnNmZXIgQXVkaW8vVmlkZW8gYW5kDQorCQkJCQl0byBzZW5kIGFuZCByZWNlaXZlIHRoZSB1c2VyIGRhdGEgKGxvZ2luIGV0IGNldGVyYSkgdG8gdGhlIHNlcnZlcg0KKwkJCQkJYW5kIGJhY2sNCisJCQkJPC9saT4NCisJCQkJPGxpPlRoZSBicm93c2VyIHVzZXMgSFRUUCBwcm90b2NvbCB0byBsb2FkIHRoZSBTV0YgYW5kIHRvIHVwbG9hZCBhbmQNCisJCQkJCWRvd25sb2FkIHRoZSBmaWxlcyAoZG9jdW1lbnRzLCBwZGZzLCBpbWFnZXMpIHRvIHRoZSBzZXJ2ZXIgYW5kDQorCQkJCQliYWNrLg0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+VGhlIHNjcmVlbnNoYXJpbmcgY2xpZW50IHVzZXMgUlRNUCBwcm90b2NvbCB0byB0cmFuc2ZlciBzY3JlZW4NCisJCQkJCWRhdGEgYW5kIHJlbW90ZSBjb250cm9sIHRvIHRoZSBzZXJ2ZXIgYW5kIGJhY2sNCisJCQkJPC9saT4NCisJCQk8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iUHJlcmVxdWlzaXRlcyI+PHN0cm9uZz5QcmVyZXF1aXNpdGVzPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+DQorCQkJCTxsaT5Zb3UgbmVlZCBPcGVuTWVldGluZ3MgMS45LnggZm9yIHRoaXMsIE9wZW5NZWV0aW5ncyAxLjgueCBkb2VzDQorCQkJCQlub3QNCisJCQkJCWhhdmUgdGhvc2Ugb3B0aW9ucy4NCisJCQkJPC9saT4NCisJCQkJPGxpPkluc3RhbGwgT3Blbk1lZXRpbmdzIGFjY29yZGluZyB0byB0aGUgaW5zdGFsbCBpbnN0cnVjdGlvbnMgYW5kDQorCQkJCQljaGVjayB0aGF0IGl0IHJ1bnMgd2l0aG91dCBwcm9ibGVtcw0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+UmVuYW1lIHRoZSBleGlzdGluZyBrZXlzdG9yZSBmaWxlIHJlZDUvY29uZi9rZXlzdG9yZSB0bw0KKwkJCQkJa2V5c3RvcmUuYmFrDQorCQkJCTwvbGk+DQorCQkJPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkID48IS0tIGJnY29sb3I9IiNFRUVFRUUiIC0tPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0idmVyZGFuYSxhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IkNvbmZpZ3VyaW5nIFJUTVBTIGZvciB0aGUgRmxhc2ggQ2xpZW50Ij48c3Ryb25nPkNvbmZpZ3VyaW5nIFJUTVBTIGZvciB0aGUgRmxhc2ggQ2xpZW50PC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b2w+DQorCQkJCTxsaT4NCisJCQkJCUNyZWF0ZSBhIG5ldyBrZXlzdG9yZSBhbmQga2V5LCB1c2UgdGhlIHNhbWUgcGFzc3dvcmQgZm9yIGJvdGg6PGJyIC8+DQorCQkJCQkoY29waWVkIGZyb20NCisJCQkJCTxhIGhyZWY9Imh0dHA6Ly90cmFjLnJlZDUub3JnL3dpa2kvRG9jdW1lbnRhdGlvbi9UdXRvcmlhbHMvUmVkNURldmVsb3BlclRpcHMvU1NMVExTJTI5OiIgcmVsPSJub2ZvbGxvdyI+aHR0cDovL3RyYWMucmVkNS5vcmcvd2lraS9Eb2N1bWVudGF0aW9uL1R1dG9yaWFscy9SZWQ1RGV2ZWxvcGVyVGlwcy9TU0xUTFMpOjwvYT4NCisJCQkJCTxkaXYgY2xhc3M9InhtbGNvZGUiPg0KKwkJCQkJCWtleXRvb2wgLWtleXNpemUgMjA0OCAtZ2Vua2V5IC1hbGlhcyByZWQ1IC1rZXlhbGcgUlNBIC1rZXlzdG9yZSByZWQ1L2NvbmYva2V5c3RvcmU8YnIgLz4NCisJCQkJCQlFbnRlciBrZXlzdG9yZSBwYXNzd29yZDo8YnIgLz4NCisJCQkJCQlSZS1lbnRlciBuZXcgcGFzc3dvcmQ6PGJyIC8+DQorCQkJCQkJV2hhdCBpcyB5b3VyIGZpcnN0IGFuZCBsYXN0IG5hbWU/PGJyIC8+DQorCQkJCQkJW1Vua25vd25dOiAgJmx0O3lvdXIgaG9zdG5hbWUsIGUuZyBkZW1vLm9wZW5tZWV0aW5ncy5kZSZndDs8YnIgLz4NCisJCQkJCQlXaGF0IGlzIHRoZSBuYW1lIG9mIHlvdXIgb3JnYW5pemF0aW9uYWwgdW5pdD88YnIgLz4NCisJCQkJCQlbVW5rbm93bl06ICBEZXY8YnIgLz4NCisJCQkJCQlXaGF0IGlzIHRoZSBuYW1lIG9mIHlvdXIgb3JnYW5pemF0aW9uPzxiciAvPg0KKwkJCQkJCVtVbmtub3duXTogIE9wZW5NZWV0aW5nczxiciAvPg0KKwkJCQkJCVdoYXQgaXMgdGhlIG5hbWUgb2YgeW91ciBDaXR5IG9yIExvY2FsaXR5PzxiciAvPg0KKwkJCQkJCVtVbmtub3duXTogIEhlbmRlcnNvbjxiciAvPg0KKwkJCQkJCVdoYXQgaXMgdGhlIG5hbWUgb2YgeW91ciBTdGF0ZSBvciBQcm92aW5jZT88YnIgLz4NCisJCQkJCQlbVW5rbm93bl06ICBOZXZhZGE8YnIgLz4NCisJCQkJCQlXaGF0IGlzIHRoZSB0d28tbGV0dGVyIGNvdW50cnkgY29kZSBmb3IgdGhpcyB1bml0PzxiciAvPg0KKwkJCQkJCVtVbmtub3duXTogIFVTPGJyIC8+DQorCQkJCQkJSXMgQ049ZGVtby5vcGVubWVldGluZ3MuZGUsIE9VPURldiwgTz1PcGVuTWVldGluZ3MsIEw9SGVuZGVyc29uLCBTVD1OZXZhZGEsIEM9VVMgY29ycmVjdD88YnIgLz4NCisJCQkJCQlbbm9dOiAgeWVzPGJyIC8+DQorCQkJCQkJRW50ZXIga2V5IHBhc3N3b3JkIGZvciAmbHQ7cmVkNSZndDs8YnIgLz4NCisJCQkJCTwvZGl2Pg0KKwkJCQk8L2xpPg0KKwkJDQorCQkJCTxsaT5HZW5lcmF0ZSBhIENTUjoga2V5dG9vbCAtY2VydHJlcSAta2V5YWxnIFJTQSAtYWxpYXMgcmVkNSAtZmlsZQ0KKwkJCQkJcmVkNS5jc3IgLWtleXN0b3JlIHJlZDUvY29uZi9rZXlzdG9yZQ0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+U3VibWl0IENTUiB0byB5b3VyIENBIG9mIGNob2ljZSBhbmQgcmVjZWl2ZSBhIHNpZ25lZCBjZXJ0aWZpY2F0ZQ0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+SW1wb3J0IHlvdXIgY2hvc2VuIENBJ3Mgcm9vdCBjZXJ0aWZpY2F0ZSBpbnRvIHRoZSBrZXlzdG9yZSAobWF5DQorCQkJCQluZWVkIHRvIGRvd25sb2FkIGl0IGZyb20gdGhlaXIgc2l0ZSAtIG1ha2Ugc3VyZSB0byBnZXQgdGhlIHJvb3QgQ0EgYW5kDQorCQkJCQlub3QgdGhlIGludGVybWVkaWF0ZSBvbmUpOiBrZXl0b29sIC1pbXBvcnQgLWFsaWFzIHJvb3QgLWtleXN0b3JlDQorCQkJCQlyZWQ1L2NvbmYva2V5c3RvcmUNCisJCQkJCS10cnVzdGNhY2VydHMgLWZpbGUgcm9vdC5jcnQgKG5vdGU6IHlvdSBtYXkgcmVjZWl2ZSBhIHdhcm5pbmcgdGhhdA0KKwkJCQkJdGhlIGNlcnRpZmljYXRlIGFscmVhZHkgZXhpc3RzIGluIHRoZSBzeXN0ZW0gd2lkZSBrZXlzdG9yZSAtIGltcG9ydA0KKwkJCQkJYW55d2F5KQ0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+SW1wb3J0IHRoZSBpbnRlcm1lZGlhdGUgY2VydGlmaWNhdGUocykgeW91IG5vcm1hbGx5IHJlY2VpdmUgd2l0aA0KKwkJCQkJdGhlIGNlcnRpZmljYXRlOg0KKwkJCQkJa2V5dG9vbCAtaW1wb3J0IC1hbGlhcyBpbnRlcm1lZCAta2V5c3RvcmUgcmVkNS9jb25mL2tleXN0b3JlIC10cnVzdGNhY2VydHMNCisJCQkJCS1maWxlIGludGVybWVkaWF0ZS5jcnQNCisJCQkJPC9saT4NCisJCQkJPGxpPkltcG9ydCB0aGUgY2VydGlmaWNhdGUgeW91IHJlY2VpdmVkOiBrZXl0b29sIC1pbXBvcnQgLWFsaWFzIHJlZDUNCisJCQkJCS1rZXlzdG9yZSByZWQ1L2NvbmYva2V5c3RvcmUgLXRydXN0Y2FjZXJ0cyAtZmlsZQ0KKwkJCQkJZGVtby5vcGVubWVldGluZ3MuZGUuY3J0DQorCQkJCTwvbGk+DQorICAgICAgICAgICAgICAgIDxsaT4NCisgICAgICAgICAgICAgICAgQ3JlYXRlIGFkZGl0aW9uYWwgY2VydGlmaWNhdGUgYXMgZGVzY3JpYmVkIGFib3ZlLg0KKyAgICAgICAgICAgICAgICBBZGQgdGhpcyBjZXJ0aWZpY2F0ZSB0byB0aGUgZm9sbG93aW5nIGtleXN0b3JlczogPHR0PnJlZDUvY29uZi9rZXlzdG9yZS5zY3JlZW48L3R0PiBhbmQgPHR0PnJlZDUvY29uZi9rZXlzdG9yZTwvdHQ+Lg0KKyAgICAgICAgICAgICAgICA8L2xpPg0KKwkJCTwvb2w+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJTZXQgdXAgUlRNUFMiPjxzdHJvbmc+U2V0IHVwIFJUTVBTPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b2w+DQorCQkgICAgICA8bGk+DQorCQkgICAgICBVbmNvbW1lbnQgPHR0PiZsdDshLS0gUlRNUFMgLS0mZ3Q7PC90dD4gc2VjdGlvbiBpbiA8dHQ+cmVkNS9jb25mL3JlZDUtY29yZS54bWw8L3R0Pg0KKwkJICAgICAgPC9saT4NCisNCisJCQkJPGxpPg0KKwkJCQkJRWRpdCA8dHQ+cmVkNS9jb25mL3JlZDUucHJvcGVydGllczwvdHQ+IGFuZCBzZXQNCisJCQkJCTx0dD5ydG1wcy5wb3J0PTU0NDM8L3R0Pg0KKwkJCQkJYW5kDQorCQkJCQk8dHQ+cnRtcHMua2V5c3RvcmVwYXNzPXBhc3N3b3JkPC90dD4NCisJCQkJCShwYXNzd29yZCA9IHBhc3N3b3JkIHlvdSBzZXQgb24geW91ciBuZXcNCisJCQkJCWtleXN0b3JlKQ0KKwkJCQk8L2xpPg0KKwkJCQ0KKwkJCQk8bGk+DQorCQkJCQlFZGl0IHJlZDUvd2ViYXBwcy9vcGVubWVldGluZ3MvY29uZmlnLnhtbCBhbmQgc2V0DQorCQkJCQk8dHQ+Jmx0O3J0bXBzc2xwb3J0Jmd0OzU0NDMmbHQ7L3J0bXBzc2xwb3J0Jmd0OzwvdHQ+DQorCQkJCQksDQorCQkJCQk8dHQ+Jmx0O3VzZVNTTCZndDt5ZXMmbHQ7L3VzZVNTTCZndDs8L3R0Pg0KKwkJCQkJYW5kDQorCQkJCQk8dHQ+Jmx0O3Byb3h5VHlwZSZndDtiZXN0Jmx0Oy9wcm94eVR5cGUmZ3Q7PC90dD4NCisJCQkJPC9saT4NCisNCisJCQkJPGxpPlJlc3RhcnQgcmVkNSBhbmQgdHJ5IHRvIGNvbm5lY3QgLSB5b3VyIGNvbm5lY3Rpb24gc2hvdWxkIG5vdyBiZQ0KKwkJCQkJbWFkZSB2aWEgUlRNUFMgKGNsb3NlIHBvcnQgMTkzNSB0byBiZSBzdXJlKQ0KKwkJCQk8L2xpPiAgIA0KKwkJCQkJICANCisJCSAgPC9vbD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkID48IS0tIGJnY29sb3I9IiNFRUVFRUUiIC0tPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0idmVyZGFuYSxhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IlNTTCBmb3IgdGhlIHdlYiBpbnRlcmZhY2UiPjxzdHJvbmc+U1NMIGZvciB0aGUgd2ViIGludGVyZmFjZTwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgICA8aHIgc3R5bGU9IndpZHRoOjEwMCU7IGNvbG9yOiM5OTk5OTk7IGJhY2tncm91bmQtY29sb3I6Izk5OTk5OTsgaGVpZ2h0OjFweDsgYm9yZGVyOjBweDsiLz4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+SWYgeW91IHdhbnQgdG8gdXNlIFNTTCBmb3IgdGhlIHdlYiBpbnRlcmZhY2UgaW4gYWRkaXRpb24gdG8gUlRNUFMsDQorCQkJCXlvdSBuZWVkIHRvIG1ha2Ugc29tZSBmdXJ0aGVyIG1vZGlmaWNhdGlvbnMuIFRoaXMgaXMgbWFpbmx5IHRvIHNlY3VyZQ0KKwkJCQl0aGUgc2VydmVyIGFnYWluc3QgTUlUTSBhdHRhY2tzLCBhZGRpdGlvbmFsbHkgc29tZSBvdGhlciBmZWF0dXJlcw0KKwkJCQlsaWtlIGZpbGUgdXBsb2FkcyBhbHNvIHVzZSBhIHBsYWluIEhUVFAgY29ubmVjdGlvbiBpZiB0aGlzIGlzIG5vdA0KKwkJCQlkb25lLiBUaGUgZm9sbG93aW5nIGluc3RydWN0aW9ucyBhc3N1bWUgdGhhdCB5b3UgaGF2ZSBhbHJlYWR5IHNldCB1cA0KKwkJCQlSVE1QUyBzdWNjZXNzZnVsbHkuIDwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvbD4NCisJCQkJPGxpPg0KKwkJCQkJQ29weSB0aGlzIDx0dD5yZWQ1L2NvbmYvamVlLWNvbnRhaW5lci1zc2wueG1sPC90dD4NCisJCQkJCWZpbGUgdG8gPHR0PnJlZDUvY29uZi9qZWUtY29udGFpbmVyLnhtbDwvdHQ+DQorCQkJCTwvbGk+DQorCQkJCTxsaT4NCisJCQkJCUVkaXQgcmVkNS93ZWJhcHBzL29wZW5tZWV0aW5ncy9jb25maWcueG1sIGFuZCBzZXQNCisJCQkJCTx0dD4mbHQ7cHJvdG9jb2wmZ3Q7aHR0cHMmbHQ7L3Byb3RvY29sJmd0OzwvdHQ+DQorCQkJCTwvbGk+DQorCQkJCTxsaT4NCisJCQkJCUVkaXQgcmVkNS93ZWJhcHBzL29wZW5tZWV0aW5ncy9jb25maWcueG1sIGFuZCBzZXQNCisJCQkJCTx0dD5yZWQ1aHR0cHBvcnQ8L3R0PiB0byA8dHQ+aHR0cHM8L3R0PiBwb3J0DQorCQkJCTwvbGk+DQorCQkJCTxsaT5JbiB3ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL2NvbmYvYXhpczIueG1sIGFkZCAoYmVsb3cgdGhlIGV4aXN0aW5nIGh0dHAgdHJhbnNwb3J0UmVjZWl2ZXIgKGFyb3VuZCBsaW5lIDIyNSkpDQorCQkJCQk8ZGl2IGNsYXNzPSJ4bWxjb2RlIj4mbHQ7dHJhbnNwb3J0UmVjZWl2ZXIgbmFtZT0iaHR0cHMiIGNsYXNzPSJvcmcuYXBhY2hlLmF4aXMyLnRyYW5zcG9ydC5odHRwLkF4aXNTZXJ2bGV0TGlzdGVuZXIiJmd0OzxiciAvPg0KKyAgICDCoMKgwqDCoCZsdDtwYXJhbWV0ZXIgbmFtZT0icG9ydCImZ3Q7NDQzJmx0Oy9wYXJhbWV0ZXImZ3Q7PGJyIC8+DQorJmx0Oy90cmFuc3BvcnRSZWNlaXZlciZndDs8L2Rpdj4NCisJCQkJPC9saT4NCisJCQkJPGxpPkVkaXQgcmVkNS9jb25mL3JlZDUucHJvcGVydGllcyBhbmQgc2V0IDx0dD5odHRwcy5wb3J0PTQ0MzwvdHQ+IDwvbGk+DQorCQkJCTxsaT4NCisJCQkJCVJlc3RhcnQgcmVkNSBhbmQgdHJ5IHRvIGNvbm5lY3QgdG8NCisJCQkJCTxhIGhyZWY9Imh0dHBzOi8veW91ci5zZXJ2ZXIiIHJlbD0ibm9mb2xsb3ciPmh0dHBzOi8veW91ci5zZXJ2ZXI8L2E+DQorCQkJCQktIHlvdSBzaG91bGQgYmUgcmVkaXJlY3RlZCB0byB0aGUgT3Blbk1lZXRpbmdzDQorCQkJCQlhcHAgYW5kIGFsbCBhY2Nlc3Mgc2hvdWxkIGJlIHZpYSBIVFRQUyBvciBSVE1QUyAoY2xvc2UgcG9ydCA1MDgwIHRvDQorCQkJCQliZSBzdXJlKS4NCisJCQkJPC9saT4NCisgICAgICAgICAgICA8L29sPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iQ3JlZGl0cyI+PHN0cm9uZz5DcmVkaXRzPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5DcmVkaXRzIGdvdG86IE5leHVzIGFuZCBIb2xnZXIgUmFiYmFjaCBmb3IgdGhlaXIgaGVscCBhbmQNCisJCQkJY29udHJpYnV0aW9uIGFuZCBjb25maWd1cmF0aW9uIGRvY3VtZW50aW9uISA8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDwhLS0gRk9PVEVSIC0tPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgYWxpZ249ImNlbnRlciI+PGZvbnQgY29sb3I9IiMxMjM0NjUiIHNpemU9Ii0xIj48ZW0+CisgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAmIzE2OTsgMjAwMy0yMDEzLCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyAgICAgICAgICAgICAgICAgICAgPC9lbT48L2ZvbnQ+PC9kaXY+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvYm9keT4KKyAgICA8L2h0bWw+Cis8IS0tIGVuZCB0aGUgcHJvY2Vzc2luZyAtLT4KKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKwpkaWZmIC0tZ2l0IGEvZG9jcy9SZWNvbW1lbmRlZEhhcmR3YXJlTGlzdC5odG1sIGIvZG9jcy9SZWNvbW1lbmRlZEhhcmR3YXJlTGlzdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwYTY4MGIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL1JlY29tbWVuZGVkSGFyZHdhcmVMaXN0Lmh0bWwKQEAgLTAsMCArMSw3NDQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgorCis8IS0tCitDb3B5cmlnaHQgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKworPCEtLSBDb250ZW50IFN0eWxlc2hlZXQgZm9yIFNpdGUgLS0+CisKKyAgICAgICAgCis8IS0tIHN0YXJ0IHRoZSBwcm9jZXNzaW5nIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8IS0tIEdFTkVSQVRFRCBGSUxFLCBETyBOT1QgRURJVCwgRURJVCBUSEUgWE1MIEZJTEUgSU4geGRvY3MgSU5TVEVBRCEgLS0+CisgICAgPCEtLSBNYWluIFBhZ2UgU2VjdGlvbiAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGh0bWw+CisgICAgICAgIDxoZWFkPgorICAgICAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiLz4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iCisJCQlPcGVuTWVldGluZ3MgVGVhbQorCQkiPgorICAgICAgICAgICAgPG1ldGEgbmFtZT0iZW1haWwiIGNvbnRlbnQ9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+CisgICAgICAgICAgICAKKyAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgPHRpdGxlPkFwYWNoZSBPcGVuTWVldGluZ3MgLSBIb21lPC90aXRsZT4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9vcGVubWVldGluZ3MuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9qcXVlcnktdWkuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2luLXNsaWRlci1zdHlsZXMuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2xvcmJveC5jc3MiIC8+CisgICAgICAgICAgICAKKwkJCTwhLS0gQWRkIGpRdWVyeSBsaWJyYXJ5IC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LTEuNy4xLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPCEtLSBBZGQgY29pbnNsaWRlciBwbHVnaW5zIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvY29pbi1zbGlkZXIubWluLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPCEtLSBBZGQgY29sb3Jib3ggcGx1Z2luIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LmNvbG9yYm94LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmNvcmUuanMiPjwvc2NyaXB0PgorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS53aWRnZXQuanMiPjwvc2NyaXB0PgorCQkKKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkuYWNjb3JkaW9uLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdD4KKwkJCSQoZnVuY3Rpb24oKSB7CisJCQkJJCggIiNhY2NvcmRpb24iICkuYWNjb3JkaW9uKHsKKwkJCQkJYXV0b0hlaWdodDogZmFsc2UsCisJCQkJCW5hdmlnYXRpb246IHRydWUsCisJCQkJCW5hdmlnYXRpb25GaWx0ZXI6IGZ1bmN0aW9uICgpIHsKKwkJCQkJCXZhciBzaWRlYmFySHJlZkFycmF5ID0gdGhpcy5ocmVmLnNwbGl0KCIvIik7CisgICAgCQkJCQl2YXIgc2lkZUJhckxhc3RTdHJpbmcgPSBzaWRlYmFySHJlZkFycmF5W3NpZGViYXJIcmVmQXJyYXkubGVuZ3RoIC0gMV0udG9Mb3dlckNhc2UoKTsKKwkJCQkJCQorCQkJCQkJaWYgKHNpZGVCYXJMYXN0U3RyaW5nLmluZGV4T2YoIiMiKSA9PSAtMSkgeworCQkJCQkJCXJldHVybiBmYWxzZTsKKwkJCQkJCX0KKwkJCQkJCQorCQkJCQkJCQkJCQkJLyogZG9jdW1lbnQubG9jYXRpb24uaHJlZiAqLworCQkJCQkJdmFyIGN1cnJlbnRTZWN0aW9uID0gIiI7CisJCQkJCQkKKwkJCQkJCXZhciBjdXJyZW50TG9jYXRpb24gPSAiIjsKKwkJCQkJCXZhciBjdXJyZW50TGluayA9ICIiOworCQkJCQkJaWYgKGZhbHNlKSB7CisJCQkJCQkKKwkJCQkJCX0KKyAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5kZXguaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5kZXguaHRtbCIuc3Vic3RyKDEsICIvaW5kZXguaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9saWNlbnNlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2xpY2Vuc2UuaHRtbCIuc3Vic3RyKDEsICIvbGljZW5zZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5zdWJzdHIoMSwgImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZG93bmxvYWRzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2Rvd25sb2Fkcy5odG1sIi5zdWJzdHIoMSwgIi9kb3dubG9hZHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiLnN1YnN0cigxLCAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9pbnN0YWxsYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5zdGFsbGF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL2luc3RhbGxhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1VwZ3JhZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvVXBncmFkZS5odG1sIi5zdWJzdHIoMSwgIi9VcGdyYWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIuc3Vic3RyKDEsICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db21tYW5kTGluZUFkbWluLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIuc3Vic3RyKDEsICIvQ29tbWFuZExpbmVBZG1pbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9nZXQtaW52b2x2ZWQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9nZXQtaW52b2x2ZWQuaHRtbCIuc3Vic3RyKDEsICIvZ2V0LWludm9sdmVkLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGVhbS1saXN0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdGVhbS1saXN0Lmh0bWwiLnN1YnN0cigxLCAiL3RlYW0tbGlzdC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL21haWwtbGlzdHMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9tYWlsLWxpc3RzLmh0bWwiLnN1YnN0cigxLCAiL21haWwtbGlzdHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLnN1YnN0cigxLCAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3N2bi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvc3ZuLmh0bWwiLnN1YnN0cigxLCAiL3N2bi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIuc3Vic3RyKDEsICJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2RlcGVuZGVuY2llcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZGVwZW5kZW5jaWVzLmh0bWwiLnN1YnN0cigxLCAiL2RlcGVuZGVuY2llcy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pVbml0VGVzdGluZy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSlVuaXRUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL0pVbml0VGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01hbnVhbFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01hbnVhbFRlc3RpbmcuaHRtbCIuc3Vic3RyKDEsICIvTWFudWFsVGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlbGVhc2VHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVsZWFzZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1JlbGVhc2VHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYnNpdGVHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvV2Vic2l0ZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1dlYnNpdGVHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Tb2FwUmVzdEFQSS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU29hcFJlc3RBUEkuaHRtbCIuc3Vic3RyKDEsICIvU29hcFJlc3RBUEkuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZXN0QVBJU2FtcGxlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZXN0QVBJU2FtcGxlLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RBUElTYW1wbGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MZGFwQW5kQURTLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9MZGFwQW5kQURTLmh0bWwiLnN1YnN0cigxLCAiL0xkYXBBbmRBRFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FcnJvcnNUYWJsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRXJyb3JzVGFibGUuaHRtbCIuc3Vic3RyKDEsICIvRXJyb3JzVGFibGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTW9vZGxlUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01vb2RsZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Nb29kbGVQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TYWthaVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TYWthaVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TYWthaVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ppcmFQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSmlyYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9KaXJhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSm9vbWxhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pvb21sYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Kb29tbGFQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EcnVwYWxQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRHJ1cGFsUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0RydXBhbFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0JpdHJpeFBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CaXRyaXhQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvQml0cml4UGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TdWdhckNSTVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TdWdhckNSTVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TdWdhckNSTVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlZG1pbmVQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVkbWluZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9SZWRtaW5lUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSUJNREIyQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSUJNREIyQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL0lCTURCMkNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3JhY2xlQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3JhY2xlQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL09yYWNsZUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTXlTUUxDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9NeVNRTENvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9NeVNRTENvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUG9zdGdyZXNDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MYW5ndWFnZUVkaXRvci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLnN1YnN0cigxLCAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5zdWJzdHIoMSwgIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FZGl0VGVtcGxhdGVzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRWRpdFRlbXBsYXRlcy5odG1sIi5zdWJzdHIoMSwgIi9FZGl0VGVtcGxhdGVzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1BvcnRTZXR0aW5ncy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1BvcnRTZXR0aW5ncy5odG1sIi5zdWJzdHIoMSwgIi9Qb3J0U2V0dGluZ3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5zdWJzdHIoMSwgIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5zdWJzdHIoMSwgIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EYXNoYm9hcmQuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9EYXNoYm9hcmQuaHRtbCIuc3Vic3RyKDEsICIvRGFzaGJvYXJkLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLnN1YnN0cigxLCAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Ib3RLZXlzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSG90S2V5cy5odG1sIi5zdWJzdHIoMSwgIi9Ib3RLZXlzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYmFwcE5hbWVQYXRoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvV2ViYXBwTmFtZVBhdGguaHRtbCIuc3Vic3RyKDEsICIvV2ViYXBwTmFtZVBhdGguaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL05hdmlnYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9OYXZpZ2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL05hdmlnYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLnN1YnN0cigxLCAiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIuc3Vic3RyKDEsICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIuc3Vic3RyKDEsICIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUlRNUFNBbmRIVFRQUy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1JUTVBTQW5kSFRUUFMuaHRtbCIuc3Vic3RyKDEsICIvUlRNUFNBbmRIVFRQUy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5zdWJzdHIoMSwgIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5zdWJzdHIoMSwgIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NsdXN0ZXJpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DbHVzdGVyaW5nLmh0bWwiLnN1YnN0cigxLCAiL0NsdXN0ZXJpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvR2V0VmVyc2lvbkluZm8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9HZXRWZXJzaW9uSW5mby5odG1sIi5zdWJzdHIoMSwgIi9HZXRWZXJzaW9uSW5mby5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkgICAgCQkJCQkKKyAgICAJCQkJCWN1cnJlbnRMaW5rID0gY3VycmVudExpbmsudG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCWN1cnJlbnRMb2NhdGlvbiA9IGN1cnJlbnRMb2NhdGlvbi50b0xvd2VyQ2FzZSgpOworICAgIAkJCQkJCisJCQkJCQlyZXR1cm4gc2lkZUJhckxhc3RTdHJpbmcgPT0gY3VycmVudExpbmsrIiMiK2N1cnJlbnRMb2NhdGlvbjsKKwkJCQkJfQorCQkJCX0pOworCQkJfSk7CisJCQk8L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCQkJCSQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgeworCQkJCQkkKCcuZmFuY3lib3gtYnV0dG9ucycpLmNvbG9yYm94KHtyZWw6J2ZhbmN5Ym94LWJ1dHRvbnMnLHdpZHRoOiI3NSUiLCBoZWlnaHQ6Ijc1JSJ9KTsKKwkJCQkJJCgnI2FjY29yZGlvbiBhJykuZWFjaChmdW5jdGlvbigpIHsKKwkJCQkgICAgICB2YXIgYSA9ICQodGhpcyk7CisJCQkJICAgICAgdmFyIGhyZWYgPSBhLmF0dHIoImhyZWYiKTsKKwkJCQkgICAgICBpZiAoaHJlZi5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkgICAgICAJICB2YXIgY29tcGFyZUl0ID0gaHJlZi5zdWJzdHIoMiwgaHJlZi5sZW5ndGgpOworCQkJCQkgICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKGNvbXBhcmVJdCkhPSAtMSkgeworCQkJCQkgICAgICAgYS5hZGRDbGFzcygnYWN0aXZlJyk7CisJCQkJCSAgICAgIH0KKwkJCQkgICAgICB9CisJCQkJICAgIH0pOworCQkJCQkkKCcjY29pbi1zbGlkZXInKS5jb2luc2xpZGVyKHsgd2lkdGg6IDY0MCxoZWlnaHQ6IDQwMCwgZGVsYXk6IDQwMDAgIH0pOwkJCQkJCisJCQkJfSk7CisJCQk8L3NjcmlwdD4JCisJCQkJCQkKKwkJCTxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisJCQkJLmZhbmN5Ym94LWN1c3RvbSAuZmFuY3lib3gtb3V0ZXIgeworCQkJCQlib3gtc2hhZG93OiAwIDAgNTBweCAjMjIyOworCQkJCX0KKwkJCTwvc3R5bGU+CisgICAgICAgIDwvaGVhZD4KKworICAgICAgICA8Ym9keSBiZ2NvbG9yPSIjZmZmZmZmIiB0ZXh0PSIjMDAwMDAwIiBsaW5rPSIjMTIzNDY1IiB2bGluaz0iIzEyMzQ2NSIgYWxpbms9IiMwMDAwMDAiPiAgCisgICAgICAgIAk8ZGl2IGNsYXNzPSJtYWluYm9keSIgc3R5bGU9IndpZHRoOiAxMDAlOyI+CisgICAgICAgIAk8ZGl2IGNsYXNzPSJzdXBlcmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIj4KKyAgICAgICAgICAgICAgICA8IS0tIFRPUCBJTUFHRSAtLT4KKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCI+Cis8YSBocmVmPSJodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvIj48aW1nIHNyYz0iLi9pbWFnZXMvbG9nby0yLmpwZyIgYWx0PSJBcGFjaGUgT3Blbk1lZXRpbmdzIiBib3JkZXI9IjAiLz48L2E+Cis8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCIgPgorCTxhIGhyZWY9ImRlbW8uaHRtbCI+RGVtbzwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJkb3dubG9hZHMuaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5Eb3dubG9hZDwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJpbnN0YWxsYXRpb24uaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5JbnN0YWxsYXRpb248L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MiIHRhcmdldD0iX0JMQU5LIj5XaWtpPC9hPgorCTxzcGFuPiZuYnNwOzwvc3Bhbj4KKzwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjQiPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8IS0tIExFRlQgU0lERSBOQVZJR0FUSU9OIC0tPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiIG5vd3JhcD0ibm93cmFwIj4KKworICAgICAgICAgICAgICAgICAgICA8IS0tIHNwZWNpYWwgQUNvbiBMb2dvIC0gbGVhdmUgaGVyZSBmb3IgbmV4dCB0aW1lCisgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9hcGFjaGVjb24uY29tLzIwMDUvVVMvIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vYXBhY2hlLm9yZy9pbWFnZXMvYWMyMDA1dXNfYmx1ZV8xMjV4MTI1LmpwZyIgaGVpZ2h0PSIxMjUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPSIxMjUiIGJvcmRlcj0iMCIgYWx0PSJBcGFjaGVDb24gVVMgMjAwNSIgLz4KKyAgICAgICAgICAgICAgICAgICAgPC9hPiAgLS0+CisKKyAgICAgICAgICAgICAgICAgICA8IS0tIHJlZ3VsYXIgbWVudSAtLT4KKworICAgICAgICAgICAgICAgICAgICAKKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8ZGl2IGlkPSJhY2NvcmRpb24iIHN0eWxlPSJ3aWR0aDogMTAwJSI+CisgICAgCisgICAgICAgICAgICAJPGgzPjxhIGhyZWY9IiNHZW5lcmFsIj5HZW5lcmFsPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9pbmRleC5odG1sIj5Ib21lPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9saWNlbnNlLmh0bWwiPkxpY2Vuc2U8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5BU0Y8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2Rvd25sb2Fkcy5odG1sIj5Eb3dubG9hZHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIj5Db21tZXJjaWFsIFN1cHBvcnQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0luc3RhbGxhdGlvbmFuZFVwZ3JhZGUiPkluc3RhbGxhdGlvbiBhbmQgVXBncmFkZTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5zdGFsbGF0aW9uLmh0bWwiPkluc3RhbGxhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vVXBncmFkZS5odG1sIj5VcGdyYWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLmh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIj5UdXRvcmlhbHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCI+Q29tbWFuZCBMaW5lIEFkbWluPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb21tdW5pdHkiPkNvbW11bml0eTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZ2V0LWludm9sdmVkLmh0bWwiPkdldCBJbnZvbHZlZDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdGVhbS1saXN0Lmh0bWwiPkNvbW1pdHRlcnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL21haWwtbGlzdHMuaHRtbCI+TWFpbGluZyBMaXN0czwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIj5XaWtpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNEZXZlbG9wbWVudCI+RGV2ZWxvcG1lbnQ8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3N2bi5odG1sIj5Tb3VyY2UgQ29kZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiPkJ1Z3MgLyBJc3N1ZXMgKEpJUkEpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kZXBlbmRlbmNpZXMuaHRtbCI+RGVwZW5kZW5jaWVzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CdWlsZEluc3RydWN0aW9ucy5odG1sIj5CdWlsZCBJbnN0cnVjdGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pVbml0VGVzdGluZy5odG1sIj5KVW5pdCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9NYW51YWxUZXN0aW5nLmh0bWwiPk1hbnVhbCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWxlYXNlR3VpZGUuaHRtbCI+UmVsZWFzZSBHdWlkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vV2Vic2l0ZUd1aWRlLmh0bWwiPldlYnNpdGUgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0ludGVncmF0aW9uIj5JbnRlZ3JhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU29hcFJlc3RBUEkuaHRtbCI+U09BUC9SRVNUIEFQSTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVzdEFQSVNhbXBsZS5odG1sIj5SRVNUIEFQSSBTYW1wbGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0xkYXBBbmRBRFMuaHRtbCI+TGRhcCBhbmQgQURTPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIj5Wb0lQIGFuZCBTSVA8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0Vycm9yc1RhYmxlLmh0bWwiPkVycm9ycyB0YWJsZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjUGx1Z2lucyI+UGx1Z2luczwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTW9vZGxlUGx1Z2luLmh0bWwiPk1vb2RsZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Nha2FpUGx1Z2luLmh0bWwiPlNha2FpIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSmlyYVBsdWdpbi5odG1sIj5KaXJhIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSm9vbWxhUGx1Z2luLmh0bWwiPkpvb21sYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0RydXBhbFBsdWdpbi5odG1sIj5EcnVwYWwgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CaXRyaXhQbHVnaW4uaHRtbCI+Qml0cml4IFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQ29uZmx1ZW5jZVBsdWdpbi5odG1sIj5Db25mbHVlbmNlIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU3VnYXJDUk1QbHVnaW4uaHRtbCI+U3VnYXJDUk0gUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWRtaW5lUGx1Z2luLmh0bWwiPlJlZG1pbmUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb25maWd1cmF0aW9uIj5Db25maWd1cmF0aW9uPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5EQiBTYW1wbGUgQ29uZmlndXJhdGlvbnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIj5BcGFjaGUgRGVyYnk8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0lCTURCMkNvbmZpZy5odG1sIj5JQk0gREIyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcmFjbGVDb25maWcuaHRtbCI+T3JhY2xlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9NeVNRTENvbmZpZy5odG1sIj5NeVNRTDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9zdGdyZXNDb25maWcuaHRtbCI+UG9zdGdyZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkxvY2FsaXphdGlvbiBhbmQgbGFuZ3VhZ2VzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCI+SW50ZXJuYXRpb25hbGlzYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0xhbmd1YWdlRWRpdG9yLmh0bWwiPkxhbmd1YWdlRWRpdG9yPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiPlRpbWVab25lSGFuZGxpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0VkaXRUZW1wbGF0ZXMuaHRtbCI+RWRpdFRlbXBsYXRlczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TkFUIFBvcnQgU2V0dGluZ3M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Qb3J0U2V0dGluZ3MuaHRtbCI+UG9ydCBzZXR0aW5nczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+UGVyZm9ybWFuY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIj5KVk0gcGVyZm9ybWFuY2UgdHVuaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Vc2VyIEludGVyZmFjZTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCI+VGhlbWVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9EYXNoYm9hcmQuaHRtbCI+RGFzaGJvYXJkPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIj5XZWJjYW0gcmVzb2x1dGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIj5Sb29tIGxheW91dCBvcHRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Ib3RLZXlzLmh0bWwiPkhvdCBLZXlzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5DdXN0b21pemF0aW9uPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViYXBwTmFtZVBhdGguaHRtbCI+V2ViYXBwIG5hbWUvcGF0aDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTmF2aWdhdGlvbi5odG1sIj5OYXZpZ2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiPkNhbGVuZGFyIGFuZCB0aW1lem9uZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIj5DdXN0b20gcm9vbSB0eXBlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIj5DdXN0b20gY3R5cHQgbWVjaGFuaXNtPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIj5HZW5lcmFsIENvbmZpZ3VyYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlNlY3VyaXR5PC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUmVzdHJpY3RlZEFjY2Vzcy5odG1sIj5SZXN0cmljdGVkIEFjY2VzczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUlRNUFNBbmRIVFRQUy5odG1sIj5SVE1QUyBhbmQgSFRUUFM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNvbnZlcnRlcnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiPk9wZW5PZmZpY2UgQ29udmVydGVyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiPkZGTVBFRyBWZXJzaW9uIFN3aXRjaDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q2x1c3RlcmluZzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NsdXN0ZXJpbmcuaHRtbCI+Q2x1c3RlcmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TWlzYzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0dldFZlcnNpb25JbmZvLmh0bWwiPkdldCB2ZXJzaW9uIGluZm88L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAorICAgIDwvZGl2PgorICAgICAKKyAgICA8YnIvPgorICAgIAorICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJDYW1lcmFzIj48c3Ryb25nPkNhbWVyYXM8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4NCisJCQkJPGxpPkxvZ2l0ZWNoIFF1aWNrQ2FtIFNwaGVyZSBBRjwvbGk+DQorCQkJCTxsaT5Mb2dpdGVjaCBRdWlja0NhbSBFMzUwMDwvbGk+DQorCQkJCTxsaT5TYW1zdW5nIFBsZW9tYXggUFdDLTcxMDA8L2xpPg0KKwkJCQk8bGk+R2VuaXVzIExvb2szMjBTPC9saT4NCisJCQkJPGxpPkludGVncmF0ZWQgTGVub3ZvIDMwMDAgbjEwMDwvbGk+DQorCQkJCTxsaT5Ta3lwZW1hdGUgV0MtMTAzTTwvbGk+DQorCQkJPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkID48IS0tIGJnY29sb3I9IiNFRUVFRUUiIC0tPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0idmVyZGFuYSxhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IkhlYWRzZXRzIj48c3Ryb25nPkhlYWRzZXRzPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+DQorCQkJCTxsaT5Mb2dpdGVjaCBDbGVhciBDaGF0IFN0eWxlPC9saT4NCisJCQk8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPg0KKwkJCQk8bGk+Q2xlYXJDaGF0IFBDIFdpcmVsZXNzIChoZWxwcyB0byBzdXBwcmVzcyBlY2hvKTwvbGk+DQorCQkJCTxsaT5Mb2dpdGVjaCBVU0IgRGVza3RvcCBNaWNyb3Bob25lIC0gTWlrcm9waG9uIChnb29kIHNvdW5kLCBidXQgYmFkIGVjaG8gY2FuY2VsbGF0aW9uKTwvbGk+DQorCQkJPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiPk5vdGUgZm9yIE1hYyBPUyBYIHVzZXJzOjwvYj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkID48IS0tIGJnY29sb3I9IiNFRUVFRUUiIC0tPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0idmVyZGFuYSxhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IlNwZWFrZXJwaG9uZXMiPjxzdHJvbmc+U3BlYWtlcnBob25lczwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgICA8aHIgc3R5bGU9IndpZHRoOjEwMCU7IGNvbG9yOiM5OTk5OTk7IGJhY2tncm91bmQtY29sb3I6Izk5OTk5OTsgaGVpZ2h0OjFweDsgYm9yZGVyOjBweDsiLz4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPg0KKwkJCQk8bGk+UGhvZW5peCBBdWRpbyBRdWF0dHJvMiBVU0IgU3BlYWtlcnBob25lIE1UMzAxIChhIHNpbmdsZSBtaWNyb3Bob25lICsgc3BlYWtlcnMgY2FuIGJlIHVzZWQgZXZlbiB3aXRoIDIwLTMwIHBlb3BsZSBzaXR0aW5nIGluIGEgcm9vbSk8L2xpPg0KKwkJCQk8bGk+UGhvZW5peCBEVUVUIEV4ZWN1dGl2ZTwvbGk+DQorCQkJCTxsaT5KYWJyYSBTUEVBSzQxMDwvbGk+DQorCQkJCTxsaT5QbGFudHJvbmljcyBNQ0QgMTAwTTwvbGk+DQorCQkJCTxsaT5JbnRlZ3JhdGVkIExlbm92byAzMDAwIG4xMDA8L2xpPg0KKwkJCQk8bGk+S29uZnRlbCAzMDA8L2xpPg0KKwkJCTwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDwhLS0gRk9PVEVSIC0tPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgYWxpZ249ImNlbnRlciI+PGZvbnQgY29sb3I9IiMxMjM0NjUiIHNpemU9Ii0xIj48ZW0+CisgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAmIzE2OTsgMjAwMy0yMDEzLCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyAgICAgICAgICAgICAgICAgICAgPC9lbT48L2ZvbnQ+PC9kaXY+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvYm9keT4KKyAgICA8L2h0bWw+Cis8IS0tIGVuZCB0aGUgcHJvY2Vzc2luZyAtLT4KKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKwpkaWZmIC0tZ2l0IGEvZG9jcy9SZWRtaW5lUGx1Z2luLmh0bWwgYi9kb2NzL1JlZG1pbmVQbHVnaW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNGQ0YTA2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9SZWRtaW5lUGx1Z2luLmh0bWwKQEAgLTAsMCArMSw3MTMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgorCis8IS0tCitDb3B5cmlnaHQgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKworPCEtLSBDb250ZW50IFN0eWxlc2hlZXQgZm9yIFNpdGUgLS0+CisKKyAgICAgICAgCis8IS0tIHN0YXJ0IHRoZSBwcm9jZXNzaW5nIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8IS0tIEdFTkVSQVRFRCBGSUxFLCBETyBOT1QgRURJVCwgRURJVCBUSEUgWE1MIEZJTEUgSU4geGRvY3MgSU5TVEVBRCEgLS0+CisgICAgPCEtLSBNYWluIFBhZ2UgU2VjdGlvbiAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGh0bWw+CisgICAgICAgIDxoZWFkPgorICAgICAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiLz4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iCisJCQlPcGVuTWVldGluZ3MgVGVhbQorCQkiPgorICAgICAgICAgICAgPG1ldGEgbmFtZT0iZW1haWwiIGNvbnRlbnQ9InNvbG9tYXhAYXBhY2hlLm9yZyI+CisgICAgICAgICAgICAKKyAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgPHRpdGxlPkFwYWNoZSBPcGVuTWVldGluZ3MgLSBSZWRtaW5lIFBsdWdpbjwvdGl0bGU+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3Mvb3Blbm1lZXRpbmdzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvanF1ZXJ5LXVpLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29pbi1zbGlkZXItc3R5bGVzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29sb3Jib3guY3NzIiAvPgorICAgICAgICAgICAgCisJCQk8IS0tIEFkZCBqUXVlcnkgbGlicmFyeSAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS0xLjcuMS5taW4uanMiPjwvc2NyaXB0PgorCQkKKwkJCTwhLS0gQWRkIGNvaW5zbGlkZXIgcGx1Z2lucyAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2NvaW4tc2xpZGVyLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTwhLS0gQWRkIGNvbG9yYm94IHBsdWdpbiAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS5jb2xvcmJveC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5jb3JlLmpzIj48L3NjcmlwdD4KKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkud2lkZ2V0LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmFjY29yZGlvbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQ+CisJCQkkKGZ1bmN0aW9uKCkgeworCQkJCSQoICIjYWNjb3JkaW9uIiApLmFjY29yZGlvbih7CisJCQkJCWF1dG9IZWlnaHQ6IGZhbHNlLAorCQkJCQluYXZpZ2F0aW9uOiB0cnVlLAorCQkJCQluYXZpZ2F0aW9uRmlsdGVyOiBmdW5jdGlvbiAoKSB7CisJCQkJCQl2YXIgc2lkZWJhckhyZWZBcnJheSA9IHRoaXMuaHJlZi5zcGxpdCgiLyIpOworICAgIAkJCQkJdmFyIHNpZGVCYXJMYXN0U3RyaW5nID0gc2lkZWJhckhyZWZBcnJheVtzaWRlYmFySHJlZkFycmF5Lmxlbmd0aCAtIDFdLnRvTG93ZXJDYXNlKCk7CisJCQkJCQkKKwkJCQkJCWlmIChzaWRlQmFyTGFzdFN0cmluZy5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJCQl9CisJCQkJCQkKKwkJCQkJCQkJCQkJCS8qIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgKi8KKwkJCQkJCXZhciBjdXJyZW50U2VjdGlvbiA9ICIiOworCQkJCQkJCisJCQkJCQl2YXIgY3VycmVudExvY2F0aW9uID0gIiI7CisJCQkJCQl2YXIgY3VycmVudExpbmsgPSAiIjsKKwkJCQkJCWlmIChmYWxzZSkgeworCQkJCQkJCisJCQkJCQl9CisgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luZGV4Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luZGV4Lmh0bWwiLnN1YnN0cigxLCAiL2luZGV4Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbGljZW5zZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9saWNlbnNlLmh0bWwiLnN1YnN0cigxLCAiL2xpY2Vuc2UuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIuc3Vic3RyKDEsICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2Rvd25sb2Fkcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kb3dubG9hZHMuaHRtbCIuc3Vic3RyKDEsICIvZG93bmxvYWRzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5zdWJzdHIoMSwgIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5zdGFsbGF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luc3RhbGxhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9pbnN0YWxsYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9VcGdyYWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1VwZ3JhZGUuaHRtbCIuc3Vic3RyKDEsICIvVXBncmFkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLnN1YnN0cigxLCAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29tbWFuZExpbmVBZG1pbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLnN1YnN0cigxLCAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZ2V0LWludm9sdmVkLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZ2V0LWludm9sdmVkLmh0bWwiLnN1YnN0cigxLCAiL2dldC1pbnZvbHZlZC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RlYW0tbGlzdC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3RlYW0tbGlzdC5odG1sIi5zdWJzdHIoMSwgIi90ZWFtLWxpc3QuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9tYWlsLWxpc3RzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbWFpbC1saXN0cy5odG1sIi5zdWJzdHIoMSwgIi9tYWlsLWxpc3RzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5zdWJzdHIoMSwgImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9zdm4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3N2bi5odG1sIi5zdWJzdHIoMSwgIi9zdm4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLnN1YnN0cigxLCAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kZXBlbmRlbmNpZXMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2RlcGVuZGVuY2llcy5odG1sIi5zdWJzdHIoMSwgIi9kZXBlbmRlbmNpZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVW5pdFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pVbml0VGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9KVW5pdFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NYW51YWxUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9NYW51YWxUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL01hbnVhbFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWxlYXNlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlbGVhc2VHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9SZWxlYXNlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJzaXRlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1dlYnNpdGVHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9XZWJzaXRlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU29hcFJlc3RBUEkuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1NvYXBSZXN0QVBJLmh0bWwiLnN1YnN0cigxLCAiL1NvYXBSZXN0QVBJLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdEFQSVNhbXBsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVzdEFQSVNhbXBsZS5odG1sIi5zdWJzdHIoMSwgIi9SZXN0QVBJU2FtcGxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGRhcEFuZEFEUy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTGRhcEFuZEFEUy5odG1sIi5zdWJzdHIoMSwgIi9MZGFwQW5kQURTLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRXJyb3JzVGFibGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0Vycm9yc1RhYmxlLmh0bWwiLnN1YnN0cigxLCAiL0Vycm9yc1RhYmxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01vb2RsZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Nb29kbGVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvTW9vZGxlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU2FrYWlQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU2FrYWlQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU2FrYWlQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KaXJhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0ppcmFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSmlyYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pvb21sYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Kb29tbGFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSm9vbWxhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRHJ1cGFsUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0RydXBhbFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9EcnVwYWxQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CaXRyaXhQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQml0cml4UGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0JpdHJpeFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU3VnYXJDUk1QbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWRtaW5lUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlZG1pbmVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvUmVkbWluZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0lCTURCMkNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0lCTURCMkNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9JQk1EQjJDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09yYWNsZUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09yYWNsZUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9PcmFjbGVDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL015U1FMQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTXlTUUxDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvTXlTUUxDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Bvc3RncmVzQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9zdGdyZXNDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvUG9zdGdyZXNDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9MYW5ndWFnZUVkaXRvci5odG1sIi5zdWJzdHIoMSwgIi9MYW5ndWFnZUVkaXRvci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVGltZVpvbmVIYW5kbGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIuc3Vic3RyKDEsICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRWRpdFRlbXBsYXRlcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIuc3Vic3RyKDEsICIvRWRpdFRlbXBsYXRlcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3J0U2V0dGluZ3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3J0U2V0dGluZ3MuaHRtbCIuc3Vic3RyKDEsICIvUG9ydFNldHRpbmdzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIuc3Vic3RyKDEsICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIuc3Vic3RyKDEsICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRGFzaGJvYXJkLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRGFzaGJvYXJkLmh0bWwiLnN1YnN0cigxLCAiL0Rhc2hib2FyZC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSG90S2V5cy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0hvdEtleXMuaHRtbCIuc3Vic3RyKDEsICIvSG90S2V5cy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJhcHBOYW1lUGF0aC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLnN1YnN0cigxLCAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9OYXZpZ2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTmF2aWdhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9OYXZpZ2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5zdWJzdHIoMSwgIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JUTVBTQW5kSFRUUFMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SVE1QU0FuZEhUVFBTLmh0bWwiLnN1YnN0cigxLCAiL1JUTVBTQW5kSFRUUFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIuc3Vic3RyKDEsICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIuc3Vic3RyKDEsICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DbHVzdGVyaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2x1c3RlcmluZy5odG1sIi5zdWJzdHIoMSwgIi9DbHVzdGVyaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dldFZlcnNpb25JbmZvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2V0VmVyc2lvbkluZm8uaHRtbCIuc3Vic3RyKDEsICIvR2V0VmVyc2lvbkluZm8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJICAgIAkJCQkJCisgICAgCQkJCQljdXJyZW50TGluayA9IGN1cnJlbnRMaW5rLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQljdXJyZW50TG9jYXRpb24gPSBjdXJyZW50TG9jYXRpb24udG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCQorCQkJCQkJcmV0dXJuIHNpZGVCYXJMYXN0U3RyaW5nID09IGN1cnJlbnRMaW5rKyIjIitjdXJyZW50TG9jYXRpb247CisJCQkJCX0KKwkJCQl9KTsKKwkJCX0pOworCQkJPC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwkJCQkkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsKKwkJCQkJJCgnLmZhbmN5Ym94LWJ1dHRvbnMnKS5jb2xvcmJveCh7cmVsOidmYW5jeWJveC1idXR0b25zJyx3aWR0aDoiNzUlIiwgaGVpZ2h0OiI3NSUifSk7CisJCQkJCSQoJyNhY2NvcmRpb24gYScpLmVhY2goZnVuY3Rpb24oKSB7CisJCQkJICAgICAgdmFyIGEgPSAkKHRoaXMpOworCQkJCSAgICAgIHZhciBocmVmID0gYS5hdHRyKCJocmVmIik7CisJCQkJICAgICAgaWYgKGhyZWYuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJICAgICAgCSAgdmFyIGNvbXBhcmVJdCA9IGhyZWYuc3Vic3RyKDIsIGhyZWYubGVuZ3RoKTsKKwkJCQkJICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZihjb21wYXJlSXQpIT0gLTEpIHsKKwkJCQkJICAgICAgIGEuYWRkQ2xhc3MoJ2FjdGl2ZScpOworCQkJCQkgICAgICB9CisJCQkJICAgICAgfQorCQkJCSAgICB9KTsKKwkJCQkJJCgnI2NvaW4tc2xpZGVyJykuY29pbnNsaWRlcih7IHdpZHRoOiA2NDAsaGVpZ2h0OiA0MDAsIGRlbGF5OiA0MDAwICB9KTsJCQkJCQorCQkJCX0pOworCQkJPC9zY3JpcHQ+CQorCQkJCQkJCisJCQk8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorCQkJCS5mYW5jeWJveC1jdXN0b20gLmZhbmN5Ym94LW91dGVyIHsKKwkJCQkJYm94LXNoYWRvdzogMCAwIDUwcHggIzIyMjsKKwkJCQl9CisJCQk8L3N0eWxlPgorICAgICAgICA8L2hlYWQ+CisKKyAgICAgICAgPGJvZHkgYmdjb2xvcj0iI2ZmZmZmZiIgdGV4dD0iIzAwMDAwMCIgbGluaz0iIzEyMzQ2NSIgdmxpbms9IiMxMjM0NjUiIGFsaW5rPSIjMDAwMDAwIj4gIAorICAgICAgICAJPGRpdiBjbGFzcz0ibWFpbmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAJPGRpdiBjbGFzcz0ic3VwZXJib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCI+CisgICAgICAgICAgICAgICAgPCEtLSBUT1AgSU1BR0UgLS0+CisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPgorPGEgaHJlZj0iaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnLyI+PGltZyBzcmM9Ii4vaW1hZ2VzL2xvZ28tMi5qcGciIGFsdD0iQXBhY2hlIE9wZW5NZWV0aW5ncyIgYm9yZGVyPSIwIi8+PC9hPgorPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiID4KKwk8YSBocmVmPSJkZW1vLmh0bWwiPkRlbW88L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iZG93bmxvYWRzLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+RG93bmxvYWQ8L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaW5zdGFsbGF0aW9uLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+SW5zdGFsbGF0aW9uPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTIiB0YXJnZXQ9Il9CTEFOSyI+V2lraTwvYT4KKwk8c3Bhbj4mbmJzcDs8L3NwYW4+Cis8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSI0Ij4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPCEtLSBMRUZUIFNJREUgTkFWSUdBVElPTiAtLT4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIiBub3dyYXA9Im5vd3JhcCI+CisKKyAgICAgICAgICAgICAgICAgICAgPCEtLSBzcGVjaWFsIEFDb24gTG9nbyAtIGxlYXZlIGhlcmUgZm9yIG5leHQgdGltZQorICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vYXBhY2hlY29uLmNvbS8yMDA1L1VTLyI+CisgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2FwYWNoZS5vcmcvaW1hZ2VzL2FjMjAwNXVzX2JsdWVfMTI1eDEyNS5qcGciIGhlaWdodD0iMTI1IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTI1IiBib3JkZXI9IjAiIGFsdD0iQXBhY2hlQ29uIFVTIDIwMDUiIC8+CisgICAgICAgICAgICAgICAgICAgIDwvYT4gIC0tPgorCisgICAgICAgICAgICAgICAgICAgPCEtLSByZWd1bGFyIG1lbnUgLS0+CisKKyAgICAgICAgICAgICAgICAgICAgCisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGRpdiBpZD0iYWNjb3JkaW9uIiBzdHlsZT0id2lkdGg6IDEwMCUiPgorICAgIAorICAgICAgICAgICAgCTxoMz48YSBocmVmPSIjR2VuZXJhbCI+R2VuZXJhbDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5kZXguaHRtbCI+SG9tZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbGljZW5zZS5odG1sIj5MaWNlbnNlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyI+QVNGPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kb3dubG9hZHMuaHRtbCI+RG93bmxvYWRzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCI+Q29tbWVyY2lhbCBTdXBwb3J0PC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnN0YWxsYXRpb25hbmRVcGdyYWRlIj5JbnN0YWxsYXRpb24gYW5kIFVwZ3JhZGU8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luc3RhbGxhdGlvbi5odG1sIj5JbnN0YWxsYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1VwZ3JhZGUuaHRtbCI+VXBncmFkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii5odHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyI+VHV0b3JpYWxzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db21tYW5kTGluZUFkbWluLmh0bWwiPkNvbW1hbmQgTGluZSBBZG1pbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29tbXVuaXR5Ij5Db21tdW5pdHk8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2dldC1pbnZvbHZlZC5odG1sIj5HZXQgSW52b2x2ZWQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3RlYW0tbGlzdC5odG1sIj5Db21taXR0ZXJzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9tYWlsLWxpc3RzLmh0bWwiPk1haWxpbmcgTGlzdHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyI+V2lraTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjRGV2ZWxvcG1lbnQiPkRldmVsb3BtZW50PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9zdm4uaHRtbCI+U291cmNlIENvZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIj5CdWdzIC8gSXNzdWVzIChKSVJBKTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZGVwZW5kZW5jaWVzLmh0bWwiPkRlcGVuZGVuY2llczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCI+QnVpbGQgSW5zdHJ1Y3Rpb25zPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KVW5pdFRlc3RpbmcuaHRtbCI+SlVuaXQgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTWFudWFsVGVzdGluZy5odG1sIj5NYW51YWwgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVsZWFzZUd1aWRlLmh0bWwiPlJlbGVhc2UgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1dlYnNpdGVHdWlkZS5odG1sIj5XZWJzaXRlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnRlZ3JhdGlvbiI+SW50ZWdyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1NvYXBSZXN0QVBJLmh0bWwiPlNPQVAvUkVTVCBBUEk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Jlc3RBUElTYW1wbGUuaHRtbCI+UkVTVCBBUEkgU2FtcGxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9MZGFwQW5kQURTLmh0bWwiPkxkYXAgYW5kIEFEUzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCI+Vm9JUCBhbmQgU0lQPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9FcnJvcnNUYWJsZS5odG1sIj5FcnJvcnMgdGFibGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI1BsdWdpbnMiPlBsdWdpbnM8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01vb2RsZVBsdWdpbi5odG1sIj5Nb29kbGUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TYWthaVBsdWdpbi5odG1sIj5TYWthaSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0ppcmFQbHVnaW4uaHRtbCI+SmlyYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pvb21sYVBsdWdpbi5odG1sIj5Kb29tbGEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9EcnVwYWxQbHVnaW4uaHRtbCI+RHJ1cGFsIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQml0cml4UGx1Z2luLmh0bWwiPkJpdHJpeCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCI+Q29uZmx1ZW5jZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiPlN1Z2FyQ1JNIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVkbWluZVBsdWdpbi5odG1sIj5SZWRtaW5lIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29uZmlndXJhdGlvbiI+Q29uZmlndXJhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+REIgU2FtcGxlIENvbmZpZ3VyYXRpb25zPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQXBhY2hlRGVyYnlDb25maWcuaHRtbCI+QXBhY2hlIERlcmJ5PC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JQk1EQjJDb25maWcuaHRtbCI+SUJNIERCMjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3JhY2xlQ29uZmlnLmh0bWwiPk9yYWNsZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTXlTUUxDb25maWcuaHRtbCI+TXlTUUw8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Bvc3RncmVzQ29uZmlnLmh0bWwiPlBvc3RncmVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Mb2NhbGl6YXRpb24gYW5kIGxhbmd1YWdlczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiPkludGVybmF0aW9uYWxpc2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9MYW5ndWFnZUVkaXRvci5odG1sIj5MYW5ndWFnZUVkaXRvcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vVGltZVpvbmVIYW5kbGluZy5odG1sIj5UaW1lWm9uZUhhbmRsaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9FZGl0VGVtcGxhdGVzLmh0bWwiPkVkaXRUZW1wbGF0ZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk5BVCBQb3J0IFNldHRpbmdzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9ydFNldHRpbmdzLmh0bWwiPlBvcnQgc2V0dGluZ3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlBlcmZvcm1hbmNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCI+SlZNIHBlcmZvcm1hbmNlIHR1bmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+VXNlciBJbnRlcmZhY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiPlRoZW1lczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRGFzaGJvYXJkLmh0bWwiPkRhc2hib2FyZDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCI+V2ViY2FtIHJlc29sdXRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCI+Um9vbSBsYXlvdXQgb3B0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSG90S2V5cy5odG1sIj5Ib3QgS2V5czwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q3VzdG9taXphdGlvbjwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmFwcE5hbWVQYXRoLmh0bWwiPldlYmFwcCBuYW1lL3BhdGg8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL05hdmlnYXRpb24uaHRtbCI+TmF2aWdhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIj5DYWxlbmRhciBhbmQgdGltZXpvbmU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCI+Q3VzdG9tIHJvb20gdHlwZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCI+Q3VzdG9tIGN0eXB0IG1lY2hhbmlzbTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCI+R2VuZXJhbCBDb25maWd1cmF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5TZWN1cml0eTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCI+UmVzdHJpY3RlZCBBY2Nlc3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1JUTVBTQW5kSFRUUFMuaHRtbCI+UlRNUFMgYW5kIEhUVFBTPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Db252ZXJ0ZXJzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIj5PcGVuT2ZmaWNlIENvbnZlcnRlcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIj5GRk1QRUcgVmVyc2lvbiBTd2l0Y2g8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNsdXN0ZXJpbmc8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DbHVzdGVyaW5nLmh0bWwiPkNsdXN0ZXJpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk1pc2M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZXRWZXJzaW9uSW5mby5odG1sIj5HZXQgdmVyc2lvbiBpbmZvPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAKKyAgICA8L2Rpdj4KKyAgICAgCisgICAgPGJyLz4KKyAgICAKKyAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iT3Blbk1lZXRpbmdzIFBsdWdpbiBmb3IgUmVkbWluZSI+PHN0cm9uZz5PcGVuTWVldGluZ3MgUGx1Z2luIGZvciBSZWRtaW5lPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJQ3VycmVudCBEZXZlbG9wbWVudCBTbmFwc2hvdHMgZm9yIHRlc3RpbmcgY2FuIGJlIGNyZWF0ZWQgZnJvbSB0aGUgc291cmNlczoNCisJCQkJPGEgaHJlZj0iaHR0cHM6Ly9zdm4uY29kZXNwb3QuY29tL2EvYXBhY2hlLWV4dHJhcy5vcmcvb3Blbm1lZXRpbmdzLXJlZG1pbmUtcGx1Z2luL3RydW5rIj5oZXJlPC9hPi48YnIgLz4NCisJCQkJVGhlIHBhZ2UgYXQgcmVkbWluZSBzaXRlIGlzIDxhIGhyZWY9Imh0dHA6Ly93d3cucmVkbWluZS5vcmcvcGx1Z2lucy9yZWRtaW5lLW9wZW5tZWV0aW5ncyI+aGVyZTwvYT4NCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJGZWF0dXJlcyI+PHN0cm9uZz5GZWF0dXJlczwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgICA8aHIgc3R5bGU9IndpZHRoOjEwMCU7IGNvbG9yOiM5OTk5OTk7IGJhY2tncm91bmQtY29sb3I6Izk5OTk5OTsgaGVpZ2h0OjFweDsgYm9yZGVyOjBweDsiLz4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+VEJEPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8IS0tIEZPT1RFUiAtLT4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGFsaWduPSJjZW50ZXIiPjxmb250IGNvbG9yPSIjMTIzNDY1IiBzaXplPSItMSI+PGVtPgorICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgJiMxNjk7IDIwMDMtMjAxMywgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisgICAgICAgICAgICAgICAgICAgIDwvZW0+PC9mb250PjwvZGl2PgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2JvZHk+CisgICAgPC9odG1sPgorPCEtLSBlbmQgdGhlIHByb2Nlc3NpbmcgLS0+CisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKZGlmZiAtLWdpdCBhL2RvY3MvUmVsZWFzZUd1aWRlLmh0bWwgYi9kb2NzL1JlbGVhc2VHdWlkZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkZjk2MTMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL1JlbGVhc2VHdWlkZS5odG1sCkBAIC0wLDAgKzEsOTQ0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KKworPCEtLQorQ29weXJpZ2h0IDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KK0xpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKK2h0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCitVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCitkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCitTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCitsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorCisKKzwhLS0gQ29udGVudCBTdHlsZXNoZWV0IGZvciBTaXRlIC0tPgorCisgICAgICAgIAorPCEtLSBzdGFydCB0aGUgcHJvY2Vzc2luZyAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPCEtLSBHRU5FUkFURUQgRklMRSwgRE8gTk9UIEVESVQsIEVESVQgVEhFIFhNTCBGSUxFIElOIHhkb2NzIElOU1RFQUQhIC0tPgorICAgIDwhLS0gTWFpbiBQYWdlIFNlY3Rpb24gLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDxodG1sPgorICAgICAgICA8aGVhZD4KKyAgICAgICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ii8+CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9IgorCQkJT3Blbk1lZXRpbmdzIFRlYW0KKwkJIj4KKyAgICAgICAgICAgIDxtZXRhIG5hbWU9ImVtYWlsIiBjb250ZW50PSJzZWJhd2FnbmVyQGFwYWNoZS5vcmciPgorICAgICAgICAgICAgCisgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIDx0aXRsZT5BcGFjaGUgT3Blbk1lZXRpbmdzIC0gUmVsZWFzZSBHdWlkZTwvdGl0bGU+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3Mvb3Blbm1lZXRpbmdzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvanF1ZXJ5LXVpLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29pbi1zbGlkZXItc3R5bGVzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29sb3Jib3guY3NzIiAvPgorICAgICAgICAgICAgCisJCQk8IS0tIEFkZCBqUXVlcnkgbGlicmFyeSAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS0xLjcuMS5taW4uanMiPjwvc2NyaXB0PgorCQkKKwkJCTwhLS0gQWRkIGNvaW5zbGlkZXIgcGx1Z2lucyAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2NvaW4tc2xpZGVyLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTwhLS0gQWRkIGNvbG9yYm94IHBsdWdpbiAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS5jb2xvcmJveC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5jb3JlLmpzIj48L3NjcmlwdD4KKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkud2lkZ2V0LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmFjY29yZGlvbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQ+CisJCQkkKGZ1bmN0aW9uKCkgeworCQkJCSQoICIjYWNjb3JkaW9uIiApLmFjY29yZGlvbih7CisJCQkJCWF1dG9IZWlnaHQ6IGZhbHNlLAorCQkJCQluYXZpZ2F0aW9uOiB0cnVlLAorCQkJCQluYXZpZ2F0aW9uRmlsdGVyOiBmdW5jdGlvbiAoKSB7CisJCQkJCQl2YXIgc2lkZWJhckhyZWZBcnJheSA9IHRoaXMuaHJlZi5zcGxpdCgiLyIpOworICAgIAkJCQkJdmFyIHNpZGVCYXJMYXN0U3RyaW5nID0gc2lkZWJhckhyZWZBcnJheVtzaWRlYmFySHJlZkFycmF5Lmxlbmd0aCAtIDFdLnRvTG93ZXJDYXNlKCk7CisJCQkJCQkKKwkJCQkJCWlmIChzaWRlQmFyTGFzdFN0cmluZy5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJCQl9CisJCQkJCQkKKwkJCQkJCQkJCQkJCS8qIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgKi8KKwkJCQkJCXZhciBjdXJyZW50U2VjdGlvbiA9ICIiOworCQkJCQkJCisJCQkJCQl2YXIgY3VycmVudExvY2F0aW9uID0gIiI7CisJCQkJCQl2YXIgY3VycmVudExpbmsgPSAiIjsKKwkJCQkJCWlmIChmYWxzZSkgeworCQkJCQkJCisJCQkJCQl9CisgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luZGV4Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luZGV4Lmh0bWwiLnN1YnN0cigxLCAiL2luZGV4Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbGljZW5zZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9saWNlbnNlLmh0bWwiLnN1YnN0cigxLCAiL2xpY2Vuc2UuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIuc3Vic3RyKDEsICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2Rvd25sb2Fkcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kb3dubG9hZHMuaHRtbCIuc3Vic3RyKDEsICIvZG93bmxvYWRzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5zdWJzdHIoMSwgIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5zdGFsbGF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luc3RhbGxhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9pbnN0YWxsYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9VcGdyYWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1VwZ3JhZGUuaHRtbCIuc3Vic3RyKDEsICIvVXBncmFkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLnN1YnN0cigxLCAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29tbWFuZExpbmVBZG1pbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLnN1YnN0cigxLCAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZ2V0LWludm9sdmVkLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZ2V0LWludm9sdmVkLmh0bWwiLnN1YnN0cigxLCAiL2dldC1pbnZvbHZlZC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RlYW0tbGlzdC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3RlYW0tbGlzdC5odG1sIi5zdWJzdHIoMSwgIi90ZWFtLWxpc3QuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9tYWlsLWxpc3RzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbWFpbC1saXN0cy5odG1sIi5zdWJzdHIoMSwgIi9tYWlsLWxpc3RzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5zdWJzdHIoMSwgImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9zdm4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3N2bi5odG1sIi5zdWJzdHIoMSwgIi9zdm4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLnN1YnN0cigxLCAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kZXBlbmRlbmNpZXMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2RlcGVuZGVuY2llcy5odG1sIi5zdWJzdHIoMSwgIi9kZXBlbmRlbmNpZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVW5pdFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pVbml0VGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9KVW5pdFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NYW51YWxUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9NYW51YWxUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL01hbnVhbFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWxlYXNlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlbGVhc2VHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9SZWxlYXNlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJzaXRlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1dlYnNpdGVHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9XZWJzaXRlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU29hcFJlc3RBUEkuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1NvYXBSZXN0QVBJLmh0bWwiLnN1YnN0cigxLCAiL1NvYXBSZXN0QVBJLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdEFQSVNhbXBsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVzdEFQSVNhbXBsZS5odG1sIi5zdWJzdHIoMSwgIi9SZXN0QVBJU2FtcGxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGRhcEFuZEFEUy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTGRhcEFuZEFEUy5odG1sIi5zdWJzdHIoMSwgIi9MZGFwQW5kQURTLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRXJyb3JzVGFibGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0Vycm9yc1RhYmxlLmh0bWwiLnN1YnN0cigxLCAiL0Vycm9yc1RhYmxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01vb2RsZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Nb29kbGVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvTW9vZGxlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU2FrYWlQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU2FrYWlQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU2FrYWlQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KaXJhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0ppcmFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSmlyYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pvb21sYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Kb29tbGFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSm9vbWxhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRHJ1cGFsUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0RydXBhbFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9EcnVwYWxQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CaXRyaXhQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQml0cml4UGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0JpdHJpeFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU3VnYXJDUk1QbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWRtaW5lUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlZG1pbmVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvUmVkbWluZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0lCTURCMkNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0lCTURCMkNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9JQk1EQjJDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09yYWNsZUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09yYWNsZUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9PcmFjbGVDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL015U1FMQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTXlTUUxDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvTXlTUUxDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Bvc3RncmVzQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9zdGdyZXNDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvUG9zdGdyZXNDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9MYW5ndWFnZUVkaXRvci5odG1sIi5zdWJzdHIoMSwgIi9MYW5ndWFnZUVkaXRvci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVGltZVpvbmVIYW5kbGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIuc3Vic3RyKDEsICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRWRpdFRlbXBsYXRlcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIuc3Vic3RyKDEsICIvRWRpdFRlbXBsYXRlcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3J0U2V0dGluZ3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3J0U2V0dGluZ3MuaHRtbCIuc3Vic3RyKDEsICIvUG9ydFNldHRpbmdzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIuc3Vic3RyKDEsICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIuc3Vic3RyKDEsICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRGFzaGJvYXJkLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRGFzaGJvYXJkLmh0bWwiLnN1YnN0cigxLCAiL0Rhc2hib2FyZC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSG90S2V5cy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0hvdEtleXMuaHRtbCIuc3Vic3RyKDEsICIvSG90S2V5cy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJhcHBOYW1lUGF0aC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLnN1YnN0cigxLCAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9OYXZpZ2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTmF2aWdhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9OYXZpZ2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5zdWJzdHIoMSwgIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JUTVBTQW5kSFRUUFMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SVE1QU0FuZEhUVFBTLmh0bWwiLnN1YnN0cigxLCAiL1JUTVBTQW5kSFRUUFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIuc3Vic3RyKDEsICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIuc3Vic3RyKDEsICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DbHVzdGVyaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2x1c3RlcmluZy5odG1sIi5zdWJzdHIoMSwgIi9DbHVzdGVyaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dldFZlcnNpb25JbmZvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2V0VmVyc2lvbkluZm8uaHRtbCIuc3Vic3RyKDEsICIvR2V0VmVyc2lvbkluZm8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJICAgIAkJCQkJCisgICAgCQkJCQljdXJyZW50TGluayA9IGN1cnJlbnRMaW5rLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQljdXJyZW50TG9jYXRpb24gPSBjdXJyZW50TG9jYXRpb24udG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCQorCQkJCQkJcmV0dXJuIHNpZGVCYXJMYXN0U3RyaW5nID09IGN1cnJlbnRMaW5rKyIjIitjdXJyZW50TG9jYXRpb247CisJCQkJCX0KKwkJCQl9KTsKKwkJCX0pOworCQkJPC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwkJCQkkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsKKwkJCQkJJCgnLmZhbmN5Ym94LWJ1dHRvbnMnKS5jb2xvcmJveCh7cmVsOidmYW5jeWJveC1idXR0b25zJyx3aWR0aDoiNzUlIiwgaGVpZ2h0OiI3NSUifSk7CisJCQkJCSQoJyNhY2NvcmRpb24gYScpLmVhY2goZnVuY3Rpb24oKSB7CisJCQkJICAgICAgdmFyIGEgPSAkKHRoaXMpOworCQkJCSAgICAgIHZhciBocmVmID0gYS5hdHRyKCJocmVmIik7CisJCQkJICAgICAgaWYgKGhyZWYuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJICAgICAgCSAgdmFyIGNvbXBhcmVJdCA9IGhyZWYuc3Vic3RyKDIsIGhyZWYubGVuZ3RoKTsKKwkJCQkJICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZihjb21wYXJlSXQpIT0gLTEpIHsKKwkJCQkJICAgICAgIGEuYWRkQ2xhc3MoJ2FjdGl2ZScpOworCQkJCQkgICAgICB9CisJCQkJICAgICAgfQorCQkJCSAgICB9KTsKKwkJCQkJJCgnI2NvaW4tc2xpZGVyJykuY29pbnNsaWRlcih7IHdpZHRoOiA2NDAsaGVpZ2h0OiA0MDAsIGRlbGF5OiA0MDAwICB9KTsJCQkJCQorCQkJCX0pOworCQkJPC9zY3JpcHQ+CQorCQkJCQkJCisJCQk8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorCQkJCS5mYW5jeWJveC1jdXN0b20gLmZhbmN5Ym94LW91dGVyIHsKKwkJCQkJYm94LXNoYWRvdzogMCAwIDUwcHggIzIyMjsKKwkJCQl9CisJCQk8L3N0eWxlPgorICAgICAgICA8L2hlYWQ+CisKKyAgICAgICAgPGJvZHkgYmdjb2xvcj0iI2ZmZmZmZiIgdGV4dD0iIzAwMDAwMCIgbGluaz0iIzEyMzQ2NSIgdmxpbms9IiMxMjM0NjUiIGFsaW5rPSIjMDAwMDAwIj4gIAorICAgICAgICAJPGRpdiBjbGFzcz0ibWFpbmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAJPGRpdiBjbGFzcz0ic3VwZXJib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCI+CisgICAgICAgICAgICAgICAgPCEtLSBUT1AgSU1BR0UgLS0+CisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPgorPGEgaHJlZj0iaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnLyI+PGltZyBzcmM9Ii4vaW1hZ2VzL2xvZ28tMi5qcGciIGFsdD0iQXBhY2hlIE9wZW5NZWV0aW5ncyIgYm9yZGVyPSIwIi8+PC9hPgorPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiID4KKwk8YSBocmVmPSJkZW1vLmh0bWwiPkRlbW88L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iZG93bmxvYWRzLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+RG93bmxvYWQ8L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaW5zdGFsbGF0aW9uLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+SW5zdGFsbGF0aW9uPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTIiB0YXJnZXQ9Il9CTEFOSyI+V2lraTwvYT4KKwk8c3Bhbj4mbmJzcDs8L3NwYW4+Cis8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSI0Ij4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPCEtLSBMRUZUIFNJREUgTkFWSUdBVElPTiAtLT4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIiBub3dyYXA9Im5vd3JhcCI+CisKKyAgICAgICAgICAgICAgICAgICAgPCEtLSBzcGVjaWFsIEFDb24gTG9nbyAtIGxlYXZlIGhlcmUgZm9yIG5leHQgdGltZQorICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vYXBhY2hlY29uLmNvbS8yMDA1L1VTLyI+CisgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2FwYWNoZS5vcmcvaW1hZ2VzL2FjMjAwNXVzX2JsdWVfMTI1eDEyNS5qcGciIGhlaWdodD0iMTI1IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTI1IiBib3JkZXI9IjAiIGFsdD0iQXBhY2hlQ29uIFVTIDIwMDUiIC8+CisgICAgICAgICAgICAgICAgICAgIDwvYT4gIC0tPgorCisgICAgICAgICAgICAgICAgICAgPCEtLSByZWd1bGFyIG1lbnUgLS0+CisKKyAgICAgICAgICAgICAgICAgICAgCisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGRpdiBpZD0iYWNjb3JkaW9uIiBzdHlsZT0id2lkdGg6IDEwMCUiPgorICAgIAorICAgICAgICAgICAgCTxoMz48YSBocmVmPSIjR2VuZXJhbCI+R2VuZXJhbDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5kZXguaHRtbCI+SG9tZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbGljZW5zZS5odG1sIj5MaWNlbnNlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyI+QVNGPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kb3dubG9hZHMuaHRtbCI+RG93bmxvYWRzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCI+Q29tbWVyY2lhbCBTdXBwb3J0PC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnN0YWxsYXRpb25hbmRVcGdyYWRlIj5JbnN0YWxsYXRpb24gYW5kIFVwZ3JhZGU8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luc3RhbGxhdGlvbi5odG1sIj5JbnN0YWxsYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1VwZ3JhZGUuaHRtbCI+VXBncmFkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii5odHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyI+VHV0b3JpYWxzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db21tYW5kTGluZUFkbWluLmh0bWwiPkNvbW1hbmQgTGluZSBBZG1pbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29tbXVuaXR5Ij5Db21tdW5pdHk8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2dldC1pbnZvbHZlZC5odG1sIj5HZXQgSW52b2x2ZWQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3RlYW0tbGlzdC5odG1sIj5Db21taXR0ZXJzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9tYWlsLWxpc3RzLmh0bWwiPk1haWxpbmcgTGlzdHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyI+V2lraTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjRGV2ZWxvcG1lbnQiPkRldmVsb3BtZW50PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9zdm4uaHRtbCI+U291cmNlIENvZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIj5CdWdzIC8gSXNzdWVzIChKSVJBKTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZGVwZW5kZW5jaWVzLmh0bWwiPkRlcGVuZGVuY2llczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCI+QnVpbGQgSW5zdHJ1Y3Rpb25zPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KVW5pdFRlc3RpbmcuaHRtbCI+SlVuaXQgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTWFudWFsVGVzdGluZy5odG1sIj5NYW51YWwgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVsZWFzZUd1aWRlLmh0bWwiPlJlbGVhc2UgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1dlYnNpdGVHdWlkZS5odG1sIj5XZWJzaXRlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnRlZ3JhdGlvbiI+SW50ZWdyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1NvYXBSZXN0QVBJLmh0bWwiPlNPQVAvUkVTVCBBUEk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Jlc3RBUElTYW1wbGUuaHRtbCI+UkVTVCBBUEkgU2FtcGxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9MZGFwQW5kQURTLmh0bWwiPkxkYXAgYW5kIEFEUzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCI+Vm9JUCBhbmQgU0lQPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9FcnJvcnNUYWJsZS5odG1sIj5FcnJvcnMgdGFibGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI1BsdWdpbnMiPlBsdWdpbnM8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01vb2RsZVBsdWdpbi5odG1sIj5Nb29kbGUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TYWthaVBsdWdpbi5odG1sIj5TYWthaSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0ppcmFQbHVnaW4uaHRtbCI+SmlyYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pvb21sYVBsdWdpbi5odG1sIj5Kb29tbGEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9EcnVwYWxQbHVnaW4uaHRtbCI+RHJ1cGFsIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQml0cml4UGx1Z2luLmh0bWwiPkJpdHJpeCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCI+Q29uZmx1ZW5jZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiPlN1Z2FyQ1JNIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVkbWluZVBsdWdpbi5odG1sIj5SZWRtaW5lIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29uZmlndXJhdGlvbiI+Q29uZmlndXJhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+REIgU2FtcGxlIENvbmZpZ3VyYXRpb25zPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQXBhY2hlRGVyYnlDb25maWcuaHRtbCI+QXBhY2hlIERlcmJ5PC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JQk1EQjJDb25maWcuaHRtbCI+SUJNIERCMjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3JhY2xlQ29uZmlnLmh0bWwiPk9yYWNsZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTXlTUUxDb25maWcuaHRtbCI+TXlTUUw8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Bvc3RncmVzQ29uZmlnLmh0bWwiPlBvc3RncmVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Mb2NhbGl6YXRpb24gYW5kIGxhbmd1YWdlczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiPkludGVybmF0aW9uYWxpc2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9MYW5ndWFnZUVkaXRvci5odG1sIj5MYW5ndWFnZUVkaXRvcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vVGltZVpvbmVIYW5kbGluZy5odG1sIj5UaW1lWm9uZUhhbmRsaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9FZGl0VGVtcGxhdGVzLmh0bWwiPkVkaXRUZW1wbGF0ZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk5BVCBQb3J0IFNldHRpbmdzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9ydFNldHRpbmdzLmh0bWwiPlBvcnQgc2V0dGluZ3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlBlcmZvcm1hbmNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCI+SlZNIHBlcmZvcm1hbmNlIHR1bmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+VXNlciBJbnRlcmZhY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiPlRoZW1lczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRGFzaGJvYXJkLmh0bWwiPkRhc2hib2FyZDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCI+V2ViY2FtIHJlc29sdXRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCI+Um9vbSBsYXlvdXQgb3B0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSG90S2V5cy5odG1sIj5Ib3QgS2V5czwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q3VzdG9taXphdGlvbjwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmFwcE5hbWVQYXRoLmh0bWwiPldlYmFwcCBuYW1lL3BhdGg8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL05hdmlnYXRpb24uaHRtbCI+TmF2aWdhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIj5DYWxlbmRhciBhbmQgdGltZXpvbmU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCI+Q3VzdG9tIHJvb20gdHlwZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCI+Q3VzdG9tIGN0eXB0IG1lY2hhbmlzbTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCI+R2VuZXJhbCBDb25maWd1cmF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5TZWN1cml0eTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCI+UmVzdHJpY3RlZCBBY2Nlc3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1JUTVBTQW5kSFRUUFMuaHRtbCI+UlRNUFMgYW5kIEhUVFBTPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Db252ZXJ0ZXJzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIj5PcGVuT2ZmaWNlIENvbnZlcnRlcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIj5GRk1QRUcgVmVyc2lvbiBTd2l0Y2g8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNsdXN0ZXJpbmc8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DbHVzdGVyaW5nLmh0bWwiPkNsdXN0ZXJpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk1pc2M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZXRWZXJzaW9uSW5mby5odG1sIj5HZXQgdmVyc2lvbiBpbmZvPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAKKyAgICA8L2Rpdj4KKyAgICAgCisgICAgPGJyLz4KKyAgICAKKyAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iSG93IHRvIEJ1aWxkIGEgUmVsZWFzZSBvZiBPcGVuTWVldGluZ3MiPjxzdHJvbmc+SG93IHRvIEJ1aWxkIGEgUmVsZWFzZSBvZiBPcGVuTWVldGluZ3M8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgYmdjb2xvcj0iI0VGRUZFRiI+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IlJlcXVpcmVkIHRvb2xzIj48c3Ryb25nPlJlcXVpcmVkIHRvb2xzPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorCQkJCQk8cD5UbyBidWlsZCBhIGJpbmFyeSByZWxlYXNlIG9mIE9wZW5NZWV0aW5ncyB5b3UgbmVlZDogPC9wPg0KKwkJCQkJPHVsPg0KKwkJCQkJCTxsaT5TdW4gSkRLNjwvbGk+DQorCQkJCQkJPGxpPkFwYWNoZSBBTlQgKG1pbmltdW0pIDEuOC4zPC9saT4NCisJCQkJCQk8bGk+DQorCQkJCQkJCVNWTiBDb21tYW5kIGxpbmUgY2xpZW50IChTdWJ2ZXJzaW9uIDEuNyByZXF1aXJlZCEpDQorCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9zdWJ2ZXJzaW9uLmFwYWNoZS5vcmcvcGFja2FnZXMuaHRtbCIgdGFyZ2V0PSJfQkxBTksiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9zdWJ2ZXJzaW9uLmFwYWNoZS5vcmcvcGFja2FnZXMuaHRtbDwvYT4NCisJCQkJCQk8L2xpPg0KKwkJCQkJCTxsaT5BIHRleHQgZWRpdG9yPC9saT4NCisJCQkJCQk8bGk+WW91IG5lZWQgdG8gYmUgb25saW5lISBUaGUgYnVpbGQgcHJvY2VzcyBhY3RpdmVseSBkb3dubG9hZHMNCisJCQkJCQkJbmVlZGVkIGxpYnJhcmllcyBhbmQgZGVwZW5kZW5jaWVzLg0KKwkJCQkJCTwvbGk+DQorCQkJCQk8L3VsPg0KKwkJCQk8L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkIGJnY29sb3I9IiNFRkVGRUYiPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0iYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJQcmVwYXJlIHlvdXIgQXBhY2hlIElEIj48c3Ryb25nPlByZXBhcmUgeW91ciBBcGFjaGUgSUQ8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisJCQkJCUV2ZXJ5IHJlbGVhc2UgcGFja2FnZSBtdXN0IGJlIHNpZ25lZCB3aXRoIGEgUEdQL0dQRyBrZXkuDQorCQkJCQk8YnIgLz4NCisJCQkJCVNvIGlmIHlvdSB3YW50IHRvIHJlbGVhc2UgYSBwYWNrYWdlIHlvdXIgQXBhY2hlIElkIG11c3QgYmUNCisJCQkJCWNvbm5lY3RlZCB3aXRoIGEgUEdQIGtleSENCisJCQkJCTxiciAvPg0KKwkJCQkJPGJyIC8+DQorCQkJCQlZb3UgbWlnaHQgZm9sbG93Og0KKwkJCQkJPGJyIC8+DQorCQkJCQk8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvZGV2L25ldy1jb21taXR0ZXJzLWd1aWRlLmh0bWwjc2VjdXJpdHktYW5kLXBncCIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cuYXBhY2hlLm9yZy9kZXYvbmV3LWNvbW1pdHRlcnMtZ3VpZGUuaHRtbCNzZWN1cml0eS1hbmQtcGdwDQorCQkJCQk8L2E+DQorCQkJCQk8YnIgLz4NCisJCQkJCTxiciAvPg0KKwkJCQkJSW4gc2hvcnQ6DQorCQkJCQk8YnIgLz4NCisJCQkJCUNyZWF0ZSBQR1Aga2V5IHBhaXJzIChwcml2YXRlICsgcHVibGljKSAoYW5kIEkgcmVjb21tZW5kIGNyZWF0aW5nIGENCisJCQkJCVJldm9rZSBDZXJ0KQ0KKwkJCQkJPGJyIC8+DQorCQkJCQlVcGxvYWQgdGhlIHB1YmxpYyBrZXkgKGVpdGhlciBiZWkgdXNpbmcgdGhlIFBHUCBUb29sIHRoYXQgeW91IHVzZQ0KKwkJCQkJdG8gY3JlYXRlIHRoZSBrZXkpIG9yIGJ5IHVzaW5nIHRoZSB3ZWIgZm9ybSB0bzoNCisJCQkJCTxhIGhyZWY9Imh0dHA6Ly9wZ3AubWl0LmVkdS8iIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vcGdwLm1pdC5lZHUvDQorCQkJCQk8L2E+DQorCQkJCQk8YnIgLz4NCisJCQkJCUFkZCB0aGUgZmluZ2VycHJpbnQgc3RyaW5nIChzb21ldGhpbmcgbGlrZSAiQkYxMyBDRjExIEY5QzkgMENCRQ0KKwkJCQkJNDQxMyAwOUFCIDAwNTUgMTZCRiA5M0EzIDAzOTUiKSB0byB5b3VyIHByb2ZpbGUgYXQNCisJCQkJCTxhIGhyZWY9Imh0dHA6Ly9pZC5hcGNoZS1vcmciIHRhcmdldD0iX2JsYW5rIiByZWw9Im5vZm9sbG93Ij5pZC5hcGNoZS1vcmcNCisJCQkJCTwvYT4NCisJCQkJCTxiciAvPg0KKwkJCQkJV2FpdCBmb3IgNi04IGhvdXJzLCB0aGUgc2VydmVyIHdpbGwgc2VhcmNoIGZvciBhIHB1YmxpYyBrZXkgYmFzZWQNCisJCQkJCW9uIHlvdXIgZmluZ2VycHJpbnQsIGlmIHN1Y2Nlc3MgaXQgd2lsbCBjcmVhdGUgYSBmaWxlIHdpdGggeW91cg0KKwkJCQkJbmFtZSBhdDoNCisJCQkJCTxiciAvPg0KKwkJCQkJPGEgaHJlZj0iaHR0cHM6Ly9wZW9wbGUuYXBhY2hlLm9yZy9rZXlzL2NvbW1pdHRlci8iPmh0dHBzOi8vcGVvcGxlLmFwYWNoZS5vcmcva2V5cy9jb21taXR0ZXIvPC9hPg0KKwkJCQkJPGJyIC8+DQorCQkJCQk8YnIgLz4NCisJCQkJCUlmIHRoYXQgaXMgInN1Y2Nlc3MiIHRoZW4gYWRkIHlvdXIga2V5IHRvOg0KKwkJCQkJPGJyIC8+DQorCQkJCQk8YSBocmVmPSJodHRwczovL3N2bi5hcGFjaGUub3JnL3JlcG9zL2FzZi9vcGVubWVldGluZ3MvcHJvamVjdC9LRVlTIj5odHRwczovL3N2bi5hcGFjaGUub3JnL3JlcG9zL2FzZi9vcGVubWVldGluZ3MvcHJvamVjdC9LRVlTDQorCQkJCQk8L2E+DQorCQkJCQk8YnIgLz4NCisJCQkJCWFuZCBmb2xsb3cgdGhlIGluc3RydWN0aW9ucyBpbiB0aGUgZmlsZS4NCisJCQkJCTxiciAvPg0KKwkJCQk8L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkIGJnY29sb3I9IiNFRkVGRUYiPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0iYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJTdGVwMSAtIFByZXBhcmUgZmlsZXMiPjxzdHJvbmc+U3RlcDEgLSBQcmVwYXJlIGZpbGVzPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQkJQ2hlY2sgdGhhdCBhbGwgZmlsZXM6DQorCQkJCQk8YnIgLz4NCisJCQkJCUxJQ0VOU0UsIE5PVElDRSwgRElTQ0xBSU1FUiwgQ0hBTkdFTE9HLCBSRUFETUUNCisJCQkJCTxiciAvPg0KKwkJCQkJYXJlIHVwIHRvIGRhdGUgYW5kIHJlZmVyIHRvIHRoZSByaWdodCB2ZXJzaW9uLg0KKwkJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJCUNyZWF0ZSBhIFRBRyBvZiB0aGUgU1ZOIHRyZWUgdGhhdCB5b3Ugd291bGQgbGlrZSB0byByZWxlYXNlPGJyIC8+DQorCQkJCQlFeGFtcGxlOg0KKwkJCQkJPGRpdiBjbGFzcz0ieG1sY29kZSI+DQorCQkJCQkJc3ZuIGNvcHkgLXIxNDUzMTU4IGh0dHBzOi8vc3ZuLmFwYWNoZS5vcmcvcmVwb3MvYXNmL29wZW5tZWV0aW5ncy90cnVuay9zaW5nbGV3ZWJhcHAgXDxiciAvPg0KKwkJCQkJCQlodHRwczovL3N2bi5hcGFjaGUub3JnL3JlcG9zL2FzZi9vcGVubWVldGluZ3MvdGFncy8yLjFSQzEgXDxiciAvPg0KKwkJCQkJCQktbSAiUmVsZWFzZSBjYW5kaWRhdGUgMSINCisJCQkJCTwvZGl2Pg0KKwkJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5HZXQgdGhlIHNvdXJjZSBmcm9tIHlvdXIgVEFHOiA8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ4bWxjb2RlIj4NCisJCQkJCXN2biBjaGVja291dCBodHRwczovL3N2bi5hcGFjaGUub3JnL3JlcG9zL2FzZi9vcGVubWVldGluZ3MvdGFncy8kQlJBTkNIT1JUQUcvPGJyIC8+DQorCQkJCQkkQlJBTkNIT1JUQUcgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggeW91ciBuZXcgVEFHDQorCQkJCTwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+RWRpdCB0aGUgZmlsZSBidWlsZC5wcm9wZXJ0aWVzIGNoYW5nZTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InhtbGNvZGUiPg0KKwkJCQkJcHJvamVjdC5zdGF0dXM9U05BUFNIT1QNCisJCQkJPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD50bzwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InhtbGNvZGUiPg0KKwkJCQkJcHJvamVjdC5zdGF0dXM9UkVMRUFTRQ0KKwkJCQk8L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlJ1biB0aGUgY29tbWFuZDogPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ieG1sY29kZSI+DQorCQkJCQlhbnQgZGlzdC1yZWxlYXNlDQorCQkJCTwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+VGVzdCBidWlsZGluZyB0aGUgc291cmNlIG9uIHdpbmRvd3MgYW5kIE9TeCBvciBMaW51eDwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlRlc3QgcnVubmluZyB0aGUgYmluYXJ5J3M8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5DcmVhdGUgTUQ1IGNoZWNrc3VtczwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InhtbGNvZGUiPg0KKwkJCQkJI09uIE9TWCB5b3UgbWlnaHQgdXNlIHRoaXMgY29tbWFuZCB0byBtYWtlIGEgTUQ1IGNoZWNrc3VtIGFuZCBzdG9yZSBpdCB0byBhIGZpbGU8YnIgLz4NCisJCQkJCW1kNSAtciBhcGFjaGUtb3Blbm1lZXRpbmdzLVhYWC1zcmMuemlwICZndDthcGFjaGUtb3Blbm1lZXRpbmdzLVhYWC1zcmMuemlwLm1kNQ0KKwkJCQk8L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InhtbGNvZGUiPg0KKwkJCQkJI1RvIGNyZWF0ZSBNRDUgaGFzaGVzIE9uIFVidW50dTo8YnIgLz4NCisJCQkJCWZvciBmIGluIGBscyAtMSAqLnRhci5neiAqLnppcGA7IGRvIG1kNXN1bSAkZiAmZ3Q7ICRmLm1kNTsgZG9uZTxiciAvPg0KKwkJCQkJPGJyIC8+DQorCQkJCQkjVG8gY2hlY2sgTUQ1IGhhc2hlcyBPbiBVYnVudHU6PGJyIC8+DQorCQkJCQlmb3IgZiBpbiBgbHMgLTEgKi50YXIuZ3ogKi56aXBgOyBkbyBtZDVzdW0gLWMgJGYubWQ1OyBkb25lDQorCQkJCTwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQorCQkJCQlDcmVhdGUgc2lnbmF0dXJlcyB3aXRoIHRoZSB5b3VyIEtFWSBmb3IgZXZlcnkgZmlsZSwgdGhlIEtFWSBtdXN0IGJlIGF2YWlsYWJsZSBhdDo8YnIgLz4NCisJCQkJCTxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9kaXN0L2luY3ViYXRvci9vcGVubWVldGluZ3MvS0VZUyI+DQorCQkJCQkJaHR0cDovL3d3dy5hcGFjaGUub3JnL2Rpc3QvaW5jdWJhdG9yL29wZW5tZWV0aW5ncy9LRVlTDQorCQkJCQk8L2E+DQorCQkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9InhtbGNvZGUiPg0KKwkJCQkJI1RvIGNyZWF0ZSBzaWduYXR1cmVzIE9uIFVidW50dTo8YnIgLz4NCisJCQkJCWZvciBmIGluIGBscyAtMSAqLnRhci5neiAqLnppcGA7IGRvIGdwZyAtLWFybW9yIC0tb3V0cHV0ICRmLmFzYyAtLWRldGFjaC1zaWcgJGY7IGRvbmU8YnIgLz4NCisJCQkJCTxiciAvPg0KKwkJCQkJI1RvIGNoZWNrIHNpZ25hdHVyZXMgT24gVWJ1bnR1OjxiciAvPg0KKwkJCQkJZm9yIGYgaW4gYGxzIC0xICoudGFyLmd6ICouemlwYDsgZG8gZ3BnIC0tdmVyaWZ5ICRmLmFzYzsgZG9uZQ0KKwkJCQk8L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQkJQ29tbWl0IGFydGlmYWN0cyB5b3UgaGF2ZSBjcmVhdGVkIHdpdGggS0VZUyBmaWxlIHRvIHRoZQ0KKwkJCQkJPHR0Pmh0dHBzOi8vZGlzdC5hcGFjaGUub3JnL3JlcG9zL2Rpc3QvZGV2L29wZW5tZWV0aW5ncy88L3R0Pg0KKwkJCQkJUHJvcG9zZWQgZmlsZSBzdHJ1Y3R1cmUgZm9yICJSZWxlYXNlIENhbmRpZGF0ZSAxIiBvZiAyLjEgd2lsbCBiZToNCisJCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ieG1sY29kZSI+DQorCQkJCQkyLjE8YnIgLz4NCisJCQkJCTIuMS9yYzE8YnIgLz4NCisJCQkJCTIuMS9yYzEvc3JjPGJyIC8+DQorCQkJCQkyLjEvcmMxL3NyYy9hcGFjaGUtb3Blbm1lZXRpbmdzLTIuMS4wLXNyYy56aXA8YnIgLz4NCisJCQkJCTIuMS9yYzEvc3JjL2FwYWNoZS1vcGVubWVldGluZ3MtMi4xLjAtc3JjLnRhci5nejxiciAvPg0KKwkJCQkJMi4xL3JjMS9zcmMvYXBhY2hlLW9wZW5tZWV0aW5ncy0yLjEuMC1zcmMuemlwLm1kNTxiciAvPg0KKwkJCQkJMi4xL3JjMS9zcmMvYXBhY2hlLW9wZW5tZWV0aW5ncy0yLjEuMC1zcmMuemlwLmFzYzxiciAvPg0KKwkJCQkJMi4xL3JjMS9zcmMvYXBhY2hlLW9wZW5tZWV0aW5ncy0yLjEuMC1zcmMudGFyLmd6Lm1kNTxiciAvPg0KKwkJCQkJMi4xL3JjMS9zcmMvYXBhY2hlLW9wZW5tZWV0aW5ncy0yLjEuMC1zcmMudGFyLmd6LmFzYzxiciAvPg0KKwkJCQkJMi4xL3JjMS9iaW48YnIgLz4NCisJCQkJCTIuMS9yYzEvYmluL2FwYWNoZS1vcGVubWVldGluZ3MtMi4xLjAuemlwPGJyIC8+DQorCQkJCQkyLjEvcmMxL2Jpbi9hcGFjaGUtb3Blbm1lZXRpbmdzLTIuMS4wLnRhci5nejxiciAvPg0KKwkJCQkJMi4xL3JjMS9iaW4vYXBhY2hlLW9wZW5tZWV0aW5ncy0yLjEuMC56aXAubWQ1PGJyIC8+DQorCQkJCQkyLjEvcmMxL2Jpbi9hcGFjaGUtb3Blbm1lZXRpbmdzLTIuMS4wLnppcC5hc2M8YnIgLz4NCisJCQkJCTIuMS9yYzEvYmluL2FwYWNoZS1vcGVubWVldGluZ3MtMi4xLjAudGFyLmd6Lm1kNTxiciAvPg0KKwkJCQkJMi4xL3JjMS9iaW4vYXBhY2hlLW9wZW5tZWV0aW5ncy0yLjEuMC50YXIuZ3ouYXNjPGJyIC8+DQorCQkJCQkyLjEvcmMxL0tFWVMNCisJCQkJPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCBiZ2NvbG9yPSIjRUZFRkVGIj4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9ImFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iU3RlcDIgLSBWT1RFIGFuZCBSRVNVTFQgZW1haWxzIj48c3Ryb25nPlN0ZXAyIC0gVk9URSBhbmQgUkVTVUxUIGVtYWlsczwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJCVNlbmQgYSAiVk9URSIgdG8gdGhlIGRldmVsb3BlciBtYWlsaW5nIGxpc3QgaW5jbHVkaW5nIGxpbmtzIHRvIHJlbGVhc2UgYXJ0ZWZhY3RzLjxiciAvPg0KKwkJCQkJQSBWT1RFIGFsd2F5cyBjb250YWlucyB0d28gcGFydHM6PGJyIC8+DQorCQkJCQlTZW5kIGFuIGVtYWlsIHRvIHRoZSBkZXZlbG9wZXIgbWFpbGluZyBsaXN0IHdpdGggdGhlIHN1YmplY3QgbGluZTo8YnIgLz4NCisJCQkJCVtWT1RFXSBBcGFjaGUgT3Blbk1lZXRpbmdzIHgueHggcmVsZWFzZTxiciAvPg0KKwkJCQkJQW4gZXhhbXBsZSBmb3Igc3VjaCBhbiBlbWFpbDoNCisJCQkJCTxhIGhyZWY9Imh0dHA6Ly9zLmFwYWNoZS5vcmcvdm90ZS0yLjEuMFJDMSI+ZXhhbXBsZSBWb3RlIGVtYWlsPC9hPg0KKwkJCQkJPGEgaHJlZj0iaHR0cDovL3MuYXBhY2hlLm9yZy92b3RlLTIuMC4wUkM0Ij5leGFtcGxlIFZvdGUgZW1haWwgKEluY3ViYXRvcik8L2E+DQorCQkJCQk8YnIgLz4NCisJCQkJCUZvcndhcmQgKE5vdCBDQykgdGhpcyBWb3RlIGVtYWlsIHRvOiBwcml2YXRlQG9wZW5tZWV0aW5ncy5hcGFjaGUub3JnPGJyIC8+DQorCQkJCQk8YnIgLz4NCisJCQkJCUFmdGVyIHRoZSB2b3RlIGlzIG92ZXIsIHNlbmQgYSAiUkVTVUxUIiBlbWFpbCB0byB0aGUgbGlzdCB3aXRoIHRoZSBzdWJqZWN0IGxpbmU6PGJyIC8+DQorCQkJCQlbUkVTVUxUXVtWT1RFXSBBcGFjaGUgT3Blbk1lZXRpbmdzIHgueHggcmVsZWFzZTxiciAvPg0KKwkJCQkJQW4gZXhhbXBsZSBmb3Igc3VjaCBhbiBlbWFpbDoNCisJCQkJCTxhIGhyZWY9Imh0dHA6Ly9tYWlsLWFyY2hpdmVzLmFwYWNoZS5vcmcvbW9kX21ib3gvaW5jdWJhdG9yLW9wZW5tZWV0aW5ncy1kZXYvMjAxMjA3Lm1ib3gvJTNDQ0FDZU1pQS1pYm82ZkdDYm5MakpYOUg1SDJrRkdEVkpSTWZ4UHlNdHpXekNXTmklMkJwT2clNDBtYWlsLmdtYWlsLmNvbSUzRSI+ZXhhbXBsZSBSZXN1bHQgZW1haWw8L2E+DQorCQkJCQk8YnIgLz4NCisJCQkJCUZvcndhcmQgKE5vdCBDQykgdGhpcyBSRVNVTFQgVk9URSBlbWFpbCB0bzogcHJpdmF0ZUBvcGVubWVldGluZ3MuYXBhY2hlLm9yZzxiciAvPg0KKwkJCQkJPGJyIC8+DQorCQkJCQlWb3RlcyBvbiB3aGV0aGVyIGEgcGFja2FnZSBpcyByZWFkeSB0byBiZSByZWxlYXNlZCB1c2UgbWFqb3JpdHkgYXBwcm92YWwgLS0gaS5lLiwgYXQgDQorCQkJCQlsZWFzdCB0aHJlZSBQTUMgbWVtYmVycyBtdXN0IHZvdGUgYWZmaXJtYXRpdmVseSBmb3IgcmVsZWFzZSwgYW5kIHRoZXJlIG11c3QgYmUgbW9yZSANCisJCQkJCXBvc2l0aXZlIHRoYW4gbmVnYXRpdmUgdm90ZXMuIFJlbGVhc2VzIG1heSBub3QgYmUgdmV0b2VkLiBCZWZvcmUgdm90aW5nICsxIFBNQyBtZW1iZXJzDQorCQkJCQlhcmUgcmVxdWlyZWQgdG8gZG93bmxvYWQgdGhlIHNpZ25lZCBzb3VyY2UgY29kZSBwYWNrYWdlLCBjb21waWxlIGl0IGFzIHByb3ZpZGVkLCBhbmQgDQorCQkJCQl0ZXN0IHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZSBvbiB0aGVpciBvd24gcGxhdGZvcm0sIGFsb25nIHdpdGggYWxzbyB2ZXJpZnlpbmcgdGhhdCANCisJCQkJCXRoZSBwYWNrYWdlIG1lZXRzIHRoZSByZXF1aXJlbWVudHMgb2YgdGhlIEFTRiBwb2xpY3kgb24gcmVsZWFzZXMuDQorCQkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkIGJnY29sb3I9IiNFRkVGRUYiPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0iYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJTdGVwMyAtIERpc3RyaWJ1dGUgYW5kIGFubm91bmNlIj48c3Ryb25nPlN0ZXAzIC0gRGlzdHJpYnV0ZSBhbmQgYW5ub3VuY2U8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+SWYgVk9URXMgcG9zaXRpdmU6IFVwbG9hZCB0aGUgcmVsZWFzZSA8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ4bWxjb2RlIj4NCisJCQkJCXN2biBtdiBodHRwczovL2Rpc3QuYXBhY2hlLm9yZy9yZXBvcy9kaXN0L2Rldi9vcGVubWVldGluZ3MvMi4xL3JjMyBcPGJyIC8+DQorCQkJCQkJaHR0cHM6Ly9kaXN0LmFwYWNoZS5vcmcvcmVwb3MvZGlzdC9yZWxlYXNlL29wZW5tZWV0aW5ncy8yLjEgXDxiciAvPg0KKwkJCQkJCS1tICJSQzMgaXMgcmVsZWFzZWQgYXMgMi4xIg0KKwkJCQk8L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQkJV2FpdCAyNCBob3VycyAodW50aWwgYWxsIEFwYWNoZSBtaXJyb3JzIGhhdmUgc3luY2VkIHRoZSBwYWNrYWdlcykNCisJCQkJCWFuZCBzZW5kIGFuIGFubm91bmNlbWVudCB0byB0aGUgbWFpbGluZyBsaXN0ICsgYmxvZyBhbmQgYW55IG90aGVyDQorCQkJCQljaGFubmVsLg0KKwkJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJCUVtYWlsIGFubm91bmNlbWVudHMgc2hvdWxkIGhhdmUgdGhlIHN1YmplY3QgbGluZToNCisJCQkJCTxiciAvPg0KKwkJCQkJW0FOTk9VTkNFXSBBcGFjaGUgT3Blbk1lZXRpbmdzIHgueHggcmVsZWFzZWQNCisJCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQorCQkJCQlBZGQgYSBzZWN0aW9uIHRvIDxhIGhyZWY9ImRvd25sb2Fkcy5odG1sIj5kb3dubG9hZHM8L2E+IHdlYnNpdGUuPGJyIC8+DQorCQkJCQlNYWtlIHN1cmUgdGhhdCB0aGUgYmluYXJ5IHBhY2thZ2VzIGFyZSBsaW5rZWQgdXNpbmcgdGhlIG1pcnJvciBVUkwgYXMgYmFzZSBwYXRoICgNCisJCQkJCTxiPm5vdDwvYj5odHRwOi8vd3d3LmFwYWNoZS5vcmcvZGlzdCk6PGJyIC8+DQorCQkJCQlNaXJyb3IgVVJMOiANCisJCQkJCTxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9keW4vY2xvc2VyLmNnaS9vcGVubWVldGluZ3MvIj5odHRwOi8vd3d3LmFwYWNoZS5vcmcvZHluL2Nsb3Nlci5jZ2kvb3Blbm1lZXRpbmdzLzwvYT4NCisJCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPCEtLSBGT09URVIgLS0+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGhyIG5vc2hhZGU9Im5vc2hhZGUiIHNpemU9IjEiLz4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBhbGlnbj0iY2VudGVyIj48Zm9udCBjb2xvcj0iIzEyMzQ2NSIgc2l6ZT0iLTEiPjxlbT4KKyAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0ICYjMTY5OyAyMDAzLTIwMTMsIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorICAgICAgICAgICAgICAgICAgICA8L2VtPjwvZm9udD48L2Rpdj4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9ib2R5PgorICAgIDwvaHRtbD4KKzwhLS0gZW5kIHRoZSBwcm9jZXNzaW5nIC0tPgorCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCmRpZmYgLS1naXQgYS9kb2NzL1Jlc3RBUElTYW1wbGUuaHRtbCBiL2RvY3MvUmVzdEFQSVNhbXBsZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0NjJlZWQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL1Jlc3RBUElTYW1wbGUuaHRtbApAQCAtMCwwICsxLDc1NyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CisKKzwhLS0KK0NvcHlyaWdodCAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK3lvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCitodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworCis8IS0tIENvbnRlbnQgU3R5bGVzaGVldCBmb3IgU2l0ZSAtLT4KKworICAgICAgICAKKzwhLS0gc3RhcnQgdGhlIHByb2Nlc3NpbmcgLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDwhLS0gR0VORVJBVEVEIEZJTEUsIERPIE5PVCBFRElULCBFRElUIFRIRSBYTUwgRklMRSBJTiB4ZG9jcyBJTlNURUFEISAtLT4KKyAgICA8IS0tIE1haW4gUGFnZSBTZWN0aW9uIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8aHRtbD4KKyAgICAgICAgPGhlYWQ+CisgICAgICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIvPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSIKKwkJCVNlYmFzdGlhbiBXYWduZXIKKwkJIj4KKyAgICAgICAgICAgIDxtZXRhIG5hbWU9ImVtYWlsIiBjb250ZW50PSJzZWJhd2FnbmVyQGFwYWNoZS5vcmciPgorICAgICAgICAgICAgCisgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIDx0aXRsZT5BcGFjaGUgT3Blbk1lZXRpbmdzIC0gSG9tZTwvdGl0bGU+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3Mvb3Blbm1lZXRpbmdzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvanF1ZXJ5LXVpLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29pbi1zbGlkZXItc3R5bGVzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29sb3Jib3guY3NzIiAvPgorICAgICAgICAgICAgCisJCQk8IS0tIEFkZCBqUXVlcnkgbGlicmFyeSAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS0xLjcuMS5taW4uanMiPjwvc2NyaXB0PgorCQkKKwkJCTwhLS0gQWRkIGNvaW5zbGlkZXIgcGx1Z2lucyAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2NvaW4tc2xpZGVyLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTwhLS0gQWRkIGNvbG9yYm94IHBsdWdpbiAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS5jb2xvcmJveC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5jb3JlLmpzIj48L3NjcmlwdD4KKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkud2lkZ2V0LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmFjY29yZGlvbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQ+CisJCQkkKGZ1bmN0aW9uKCkgeworCQkJCSQoICIjYWNjb3JkaW9uIiApLmFjY29yZGlvbih7CisJCQkJCWF1dG9IZWlnaHQ6IGZhbHNlLAorCQkJCQluYXZpZ2F0aW9uOiB0cnVlLAorCQkJCQluYXZpZ2F0aW9uRmlsdGVyOiBmdW5jdGlvbiAoKSB7CisJCQkJCQl2YXIgc2lkZWJhckhyZWZBcnJheSA9IHRoaXMuaHJlZi5zcGxpdCgiLyIpOworICAgIAkJCQkJdmFyIHNpZGVCYXJMYXN0U3RyaW5nID0gc2lkZWJhckhyZWZBcnJheVtzaWRlYmFySHJlZkFycmF5Lmxlbmd0aCAtIDFdLnRvTG93ZXJDYXNlKCk7CisJCQkJCQkKKwkJCQkJCWlmIChzaWRlQmFyTGFzdFN0cmluZy5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJCQl9CisJCQkJCQkKKwkJCQkJCQkJCQkJCS8qIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgKi8KKwkJCQkJCXZhciBjdXJyZW50U2VjdGlvbiA9ICIiOworCQkJCQkJCisJCQkJCQl2YXIgY3VycmVudExvY2F0aW9uID0gIiI7CisJCQkJCQl2YXIgY3VycmVudExpbmsgPSAiIjsKKwkJCQkJCWlmIChmYWxzZSkgeworCQkJCQkJCisJCQkJCQl9CisgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luZGV4Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luZGV4Lmh0bWwiLnN1YnN0cigxLCAiL2luZGV4Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbGljZW5zZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9saWNlbnNlLmh0bWwiLnN1YnN0cigxLCAiL2xpY2Vuc2UuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIuc3Vic3RyKDEsICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2Rvd25sb2Fkcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kb3dubG9hZHMuaHRtbCIuc3Vic3RyKDEsICIvZG93bmxvYWRzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5zdWJzdHIoMSwgIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5zdGFsbGF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luc3RhbGxhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9pbnN0YWxsYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9VcGdyYWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1VwZ3JhZGUuaHRtbCIuc3Vic3RyKDEsICIvVXBncmFkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLnN1YnN0cigxLCAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29tbWFuZExpbmVBZG1pbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLnN1YnN0cigxLCAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZ2V0LWludm9sdmVkLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZ2V0LWludm9sdmVkLmh0bWwiLnN1YnN0cigxLCAiL2dldC1pbnZvbHZlZC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RlYW0tbGlzdC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3RlYW0tbGlzdC5odG1sIi5zdWJzdHIoMSwgIi90ZWFtLWxpc3QuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9tYWlsLWxpc3RzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbWFpbC1saXN0cy5odG1sIi5zdWJzdHIoMSwgIi9tYWlsLWxpc3RzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5zdWJzdHIoMSwgImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9zdm4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3N2bi5odG1sIi5zdWJzdHIoMSwgIi9zdm4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLnN1YnN0cigxLCAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kZXBlbmRlbmNpZXMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2RlcGVuZGVuY2llcy5odG1sIi5zdWJzdHIoMSwgIi9kZXBlbmRlbmNpZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVW5pdFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pVbml0VGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9KVW5pdFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NYW51YWxUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9NYW51YWxUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL01hbnVhbFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWxlYXNlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlbGVhc2VHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9SZWxlYXNlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJzaXRlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1dlYnNpdGVHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9XZWJzaXRlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU29hcFJlc3RBUEkuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1NvYXBSZXN0QVBJLmh0bWwiLnN1YnN0cigxLCAiL1NvYXBSZXN0QVBJLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdEFQSVNhbXBsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVzdEFQSVNhbXBsZS5odG1sIi5zdWJzdHIoMSwgIi9SZXN0QVBJU2FtcGxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGRhcEFuZEFEUy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTGRhcEFuZEFEUy5odG1sIi5zdWJzdHIoMSwgIi9MZGFwQW5kQURTLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRXJyb3JzVGFibGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0Vycm9yc1RhYmxlLmh0bWwiLnN1YnN0cigxLCAiL0Vycm9yc1RhYmxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01vb2RsZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Nb29kbGVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvTW9vZGxlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU2FrYWlQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU2FrYWlQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU2FrYWlQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KaXJhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0ppcmFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSmlyYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pvb21sYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Kb29tbGFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSm9vbWxhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRHJ1cGFsUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0RydXBhbFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9EcnVwYWxQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CaXRyaXhQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQml0cml4UGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0JpdHJpeFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU3VnYXJDUk1QbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWRtaW5lUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlZG1pbmVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvUmVkbWluZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0lCTURCMkNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0lCTURCMkNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9JQk1EQjJDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09yYWNsZUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09yYWNsZUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9PcmFjbGVDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL015U1FMQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTXlTUUxDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvTXlTUUxDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Bvc3RncmVzQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9zdGdyZXNDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvUG9zdGdyZXNDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9MYW5ndWFnZUVkaXRvci5odG1sIi5zdWJzdHIoMSwgIi9MYW5ndWFnZUVkaXRvci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVGltZVpvbmVIYW5kbGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIuc3Vic3RyKDEsICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRWRpdFRlbXBsYXRlcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIuc3Vic3RyKDEsICIvRWRpdFRlbXBsYXRlcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3J0U2V0dGluZ3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3J0U2V0dGluZ3MuaHRtbCIuc3Vic3RyKDEsICIvUG9ydFNldHRpbmdzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIuc3Vic3RyKDEsICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIuc3Vic3RyKDEsICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRGFzaGJvYXJkLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRGFzaGJvYXJkLmh0bWwiLnN1YnN0cigxLCAiL0Rhc2hib2FyZC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSG90S2V5cy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0hvdEtleXMuaHRtbCIuc3Vic3RyKDEsICIvSG90S2V5cy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJhcHBOYW1lUGF0aC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLnN1YnN0cigxLCAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9OYXZpZ2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTmF2aWdhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9OYXZpZ2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5zdWJzdHIoMSwgIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JUTVBTQW5kSFRUUFMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SVE1QU0FuZEhUVFBTLmh0bWwiLnN1YnN0cigxLCAiL1JUTVBTQW5kSFRUUFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIuc3Vic3RyKDEsICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIuc3Vic3RyKDEsICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DbHVzdGVyaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2x1c3RlcmluZy5odG1sIi5zdWJzdHIoMSwgIi9DbHVzdGVyaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dldFZlcnNpb25JbmZvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2V0VmVyc2lvbkluZm8uaHRtbCIuc3Vic3RyKDEsICIvR2V0VmVyc2lvbkluZm8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJICAgIAkJCQkJCisgICAgCQkJCQljdXJyZW50TGluayA9IGN1cnJlbnRMaW5rLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQljdXJyZW50TG9jYXRpb24gPSBjdXJyZW50TG9jYXRpb24udG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCQorCQkJCQkJcmV0dXJuIHNpZGVCYXJMYXN0U3RyaW5nID09IGN1cnJlbnRMaW5rKyIjIitjdXJyZW50TG9jYXRpb247CisJCQkJCX0KKwkJCQl9KTsKKwkJCX0pOworCQkJPC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwkJCQkkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsKKwkJCQkJJCgnLmZhbmN5Ym94LWJ1dHRvbnMnKS5jb2xvcmJveCh7cmVsOidmYW5jeWJveC1idXR0b25zJyx3aWR0aDoiNzUlIiwgaGVpZ2h0OiI3NSUifSk7CisJCQkJCSQoJyNhY2NvcmRpb24gYScpLmVhY2goZnVuY3Rpb24oKSB7CisJCQkJICAgICAgdmFyIGEgPSAkKHRoaXMpOworCQkJCSAgICAgIHZhciBocmVmID0gYS5hdHRyKCJocmVmIik7CisJCQkJICAgICAgaWYgKGhyZWYuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJICAgICAgCSAgdmFyIGNvbXBhcmVJdCA9IGhyZWYuc3Vic3RyKDIsIGhyZWYubGVuZ3RoKTsKKwkJCQkJICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZihjb21wYXJlSXQpIT0gLTEpIHsKKwkJCQkJICAgICAgIGEuYWRkQ2xhc3MoJ2FjdGl2ZScpOworCQkJCQkgICAgICB9CisJCQkJICAgICAgfQorCQkJCSAgICB9KTsKKwkJCQkJJCgnI2NvaW4tc2xpZGVyJykuY29pbnNsaWRlcih7IHdpZHRoOiA2NDAsaGVpZ2h0OiA0MDAsIGRlbGF5OiA0MDAwICB9KTsJCQkJCQorCQkJCX0pOworCQkJPC9zY3JpcHQ+CQorCQkJCQkJCisJCQk8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorCQkJCS5mYW5jeWJveC1jdXN0b20gLmZhbmN5Ym94LW91dGVyIHsKKwkJCQkJYm94LXNoYWRvdzogMCAwIDUwcHggIzIyMjsKKwkJCQl9CisJCQk8L3N0eWxlPgorICAgICAgICA8L2hlYWQ+CisKKyAgICAgICAgPGJvZHkgYmdjb2xvcj0iI2ZmZmZmZiIgdGV4dD0iIzAwMDAwMCIgbGluaz0iIzEyMzQ2NSIgdmxpbms9IiMxMjM0NjUiIGFsaW5rPSIjMDAwMDAwIj4gIAorICAgICAgICAJPGRpdiBjbGFzcz0ibWFpbmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAJPGRpdiBjbGFzcz0ic3VwZXJib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCI+CisgICAgICAgICAgICAgICAgPCEtLSBUT1AgSU1BR0UgLS0+CisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPgorPGEgaHJlZj0iaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnLyI+PGltZyBzcmM9Ii4vaW1hZ2VzL2xvZ28tMi5qcGciIGFsdD0iQXBhY2hlIE9wZW5NZWV0aW5ncyIgYm9yZGVyPSIwIi8+PC9hPgorPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiID4KKwk8YSBocmVmPSJkZW1vLmh0bWwiPkRlbW88L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iZG93bmxvYWRzLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+RG93bmxvYWQ8L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaW5zdGFsbGF0aW9uLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+SW5zdGFsbGF0aW9uPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTIiB0YXJnZXQ9Il9CTEFOSyI+V2lraTwvYT4KKwk8c3Bhbj4mbmJzcDs8L3NwYW4+Cis8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSI0Ij4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPCEtLSBMRUZUIFNJREUgTkFWSUdBVElPTiAtLT4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIiBub3dyYXA9Im5vd3JhcCI+CisKKyAgICAgICAgICAgICAgICAgICAgPCEtLSBzcGVjaWFsIEFDb24gTG9nbyAtIGxlYXZlIGhlcmUgZm9yIG5leHQgdGltZQorICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vYXBhY2hlY29uLmNvbS8yMDA1L1VTLyI+CisgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2FwYWNoZS5vcmcvaW1hZ2VzL2FjMjAwNXVzX2JsdWVfMTI1eDEyNS5qcGciIGhlaWdodD0iMTI1IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTI1IiBib3JkZXI9IjAiIGFsdD0iQXBhY2hlQ29uIFVTIDIwMDUiIC8+CisgICAgICAgICAgICAgICAgICAgIDwvYT4gIC0tPgorCisgICAgICAgICAgICAgICAgICAgPCEtLSByZWd1bGFyIG1lbnUgLS0+CisKKyAgICAgICAgICAgICAgICAgICAgCisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGRpdiBpZD0iYWNjb3JkaW9uIiBzdHlsZT0id2lkdGg6IDEwMCUiPgorICAgIAorICAgICAgICAgICAgCTxoMz48YSBocmVmPSIjR2VuZXJhbCI+R2VuZXJhbDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5kZXguaHRtbCI+SG9tZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbGljZW5zZS5odG1sIj5MaWNlbnNlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyI+QVNGPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kb3dubG9hZHMuaHRtbCI+RG93bmxvYWRzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCI+Q29tbWVyY2lhbCBTdXBwb3J0PC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnN0YWxsYXRpb25hbmRVcGdyYWRlIj5JbnN0YWxsYXRpb24gYW5kIFVwZ3JhZGU8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luc3RhbGxhdGlvbi5odG1sIj5JbnN0YWxsYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1VwZ3JhZGUuaHRtbCI+VXBncmFkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii5odHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyI+VHV0b3JpYWxzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db21tYW5kTGluZUFkbWluLmh0bWwiPkNvbW1hbmQgTGluZSBBZG1pbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29tbXVuaXR5Ij5Db21tdW5pdHk8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2dldC1pbnZvbHZlZC5odG1sIj5HZXQgSW52b2x2ZWQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3RlYW0tbGlzdC5odG1sIj5Db21taXR0ZXJzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9tYWlsLWxpc3RzLmh0bWwiPk1haWxpbmcgTGlzdHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyI+V2lraTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjRGV2ZWxvcG1lbnQiPkRldmVsb3BtZW50PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9zdm4uaHRtbCI+U291cmNlIENvZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIj5CdWdzIC8gSXNzdWVzIChKSVJBKTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZGVwZW5kZW5jaWVzLmh0bWwiPkRlcGVuZGVuY2llczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCI+QnVpbGQgSW5zdHJ1Y3Rpb25zPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KVW5pdFRlc3RpbmcuaHRtbCI+SlVuaXQgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTWFudWFsVGVzdGluZy5odG1sIj5NYW51YWwgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVsZWFzZUd1aWRlLmh0bWwiPlJlbGVhc2UgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1dlYnNpdGVHdWlkZS5odG1sIj5XZWJzaXRlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnRlZ3JhdGlvbiI+SW50ZWdyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1NvYXBSZXN0QVBJLmh0bWwiPlNPQVAvUkVTVCBBUEk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Jlc3RBUElTYW1wbGUuaHRtbCI+UkVTVCBBUEkgU2FtcGxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9MZGFwQW5kQURTLmh0bWwiPkxkYXAgYW5kIEFEUzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCI+Vm9JUCBhbmQgU0lQPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9FcnJvcnNUYWJsZS5odG1sIj5FcnJvcnMgdGFibGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI1BsdWdpbnMiPlBsdWdpbnM8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01vb2RsZVBsdWdpbi5odG1sIj5Nb29kbGUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TYWthaVBsdWdpbi5odG1sIj5TYWthaSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0ppcmFQbHVnaW4uaHRtbCI+SmlyYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pvb21sYVBsdWdpbi5odG1sIj5Kb29tbGEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9EcnVwYWxQbHVnaW4uaHRtbCI+RHJ1cGFsIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQml0cml4UGx1Z2luLmh0bWwiPkJpdHJpeCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCI+Q29uZmx1ZW5jZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiPlN1Z2FyQ1JNIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVkbWluZVBsdWdpbi5odG1sIj5SZWRtaW5lIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29uZmlndXJhdGlvbiI+Q29uZmlndXJhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+REIgU2FtcGxlIENvbmZpZ3VyYXRpb25zPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQXBhY2hlRGVyYnlDb25maWcuaHRtbCI+QXBhY2hlIERlcmJ5PC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JQk1EQjJDb25maWcuaHRtbCI+SUJNIERCMjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3JhY2xlQ29uZmlnLmh0bWwiPk9yYWNsZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTXlTUUxDb25maWcuaHRtbCI+TXlTUUw8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Bvc3RncmVzQ29uZmlnLmh0bWwiPlBvc3RncmVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Mb2NhbGl6YXRpb24gYW5kIGxhbmd1YWdlczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiPkludGVybmF0aW9uYWxpc2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9MYW5ndWFnZUVkaXRvci5odG1sIj5MYW5ndWFnZUVkaXRvcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vVGltZVpvbmVIYW5kbGluZy5odG1sIj5UaW1lWm9uZUhhbmRsaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9FZGl0VGVtcGxhdGVzLmh0bWwiPkVkaXRUZW1wbGF0ZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk5BVCBQb3J0IFNldHRpbmdzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9ydFNldHRpbmdzLmh0bWwiPlBvcnQgc2V0dGluZ3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlBlcmZvcm1hbmNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCI+SlZNIHBlcmZvcm1hbmNlIHR1bmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+VXNlciBJbnRlcmZhY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiPlRoZW1lczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRGFzaGJvYXJkLmh0bWwiPkRhc2hib2FyZDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCI+V2ViY2FtIHJlc29sdXRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCI+Um9vbSBsYXlvdXQgb3B0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSG90S2V5cy5odG1sIj5Ib3QgS2V5czwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q3VzdG9taXphdGlvbjwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmFwcE5hbWVQYXRoLmh0bWwiPldlYmFwcCBuYW1lL3BhdGg8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL05hdmlnYXRpb24uaHRtbCI+TmF2aWdhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIj5DYWxlbmRhciBhbmQgdGltZXpvbmU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCI+Q3VzdG9tIHJvb20gdHlwZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCI+Q3VzdG9tIGN0eXB0IG1lY2hhbmlzbTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCI+R2VuZXJhbCBDb25maWd1cmF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5TZWN1cml0eTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCI+UmVzdHJpY3RlZCBBY2Nlc3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1JUTVBTQW5kSFRUUFMuaHRtbCI+UlRNUFMgYW5kIEhUVFBTPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Db252ZXJ0ZXJzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIj5PcGVuT2ZmaWNlIENvbnZlcnRlcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIj5GRk1QRUcgVmVyc2lvbiBTd2l0Y2g8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNsdXN0ZXJpbmc8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DbHVzdGVyaW5nLmh0bWwiPkNsdXN0ZXJpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk1pc2M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZXRWZXJzaW9uSW5mby5odG1sIj5HZXQgdmVyc2lvbiBpbmZvPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAKKyAgICA8L2Rpdj4KKyAgICAgCisgICAgPGJyLz4KKyAgICAKKyAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iSW50cm9kdWN0aW9uIj48c3Ryb25nPkludHJvZHVjdGlvbjwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgICA8aHIgc3R5bGU9IndpZHRoOjEwMCU7IGNvbG9yOiM5OTk5OTk7IGJhY2tncm91bmQtY29sb3I6Izk5OTk5OTsgaGVpZ2h0OjFweDsgYm9yZGVyOjBweDsiLz4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+IEZvciBhIGRldGFpbGVkIGluc3RydWN0aW9uIHdoaWNoIHNlcnZpY2VzLCBtZXRob2RzIGFuZCBwYXJhbXMgYXJlIGF2YWlsYWJsZSBzZWUgdGhlIGxpc3QgaW4gdGhlIFNvYXBNZXRob2RzLiBBTEwgbWV0aG9kcyB0aGF0IGFyZSBpbXBsZW1lbnRlZCBmb3IgdGhlIFNPQVAgQVBJIGFyZSBhbHNvIGF2YWlsYWJsZSB2aWEgUkVTVC4gDQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iSG93IHRvIGludm9rZSBTZXJ2aWNlcyB2aWEgUkVTVCI+PHN0cm9uZz5Ib3cgdG8gaW52b2tlIFNlcnZpY2VzIHZpYSBSRVNUPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5Gb3IgZXhhbXBsZSBmb3IgdGhlIG1ldGhvZCBnZXRTZXNzaW9uIGluIHRoZSBVc2VyU2VydmljZSwgeW91IHdvdWxkIHVzZSB0aGlzIFVSTCB2aWEgUkVTVDoNCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5TYW1wbGUgVVJMOiA8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vZGVtby5vcGVubWVldGluZ3MuZGUvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1VzZXJTZXJ2aWNlL2dldFNlc3Npb24iPmh0dHA6Ly9kZW1vLm9wZW5tZWV0aW5ncy5kZS9vcGVubWVldGluZ3Mvc2VydmljZXMvVXNlclNlcnZpY2UvZ2V0U2Vzc2lvbjwvYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlJlc3VsdDogPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ieG1sY29kZSI+DQorCQkJCSZsdDtuczpnZXRTZXNzaW9uUmVzcG9uc2UvJmd0OzxiciAvPg0KKwkJCQkmbHQ7bnM6cmV0dXJuIHR5cGU9Im9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmhpYmVybmF0ZS5iZWFucy5iYXNpYy5TZXNzaW9uZGF0YSIvJmd0OzxiciAvPg0KKwkJCQk8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDoyMHB4Ij4NCisJCQkJCSZsdDtheDIxOTppZCZndDsxNTY5NzEmbHQ7L2F4MjE5OmlkLyZndDs8YnIgLz4NCisJCQkJCSZsdDtheDIxOTpsYW5ndWFnZV9pZCB4c2k6bmlsPSJ0cnVlIi8vJmd0OzxiciAvPg0KKwkJCQkJJmx0O2F4MjE5Om9yZ2FuaXphdGlvbl9pZCB4c2k6bmlsPSJ0cnVlIi8vJmd0OzxiciAvPg0KKwkJCQkJJmx0O2F4MjE5OnJlZnJlc2hfdGltZSZndDsyMDExLTA3LTAzVDE0OjQwOjQ0LjAwMFombHQ7L2F4MjE5OnJlZnJlc2hfdGltZS8mZ3Q7PGJyIC8+DQorCQkJCQkmbHQ7YXgyMTk6c2Vzc2lvblhtbCB4c2k6bmlsPSJ0cnVlIi8vJmd0OzxiciAvPg0KKwkJCQkJJmx0O2F4MjE5OnNlc3Npb25faWQmZ3Q7MjY1ODQ3MDUyMDJkN2MxZGU2Y2M4ZTdlMjg4OTBlM2QmbHQ7L2F4MjE5OnNlc3Npb25faWQvJmd0OzxiciAvPg0KKwkJCQkJJmx0O2F4MjE5OnN0YXJ0dGVybWluX3RpbWUmZ3Q7MjAxMS0wNy0wM1QxNDo0MDo0NC4wMDBaJmx0Oy9heDIxOTpzdGFydHRlcm1pbl90aW1lLyZndDs8YnIgLz4NCisJCQkJCSZsdDtheDIxOTpzdG9yZVBlcm1hbmVudCB4c2k6bmlsPSJ0cnVlIi8vJmd0OzxiciAvPg0KKwkJCQkJJmx0O2F4MjE5OnVzZXJfaWQgeHNpOm5pbD0idHJ1ZSIvLyZndDs8YnIgLz4NCisJCQkJPC9kaXY+DQorCQkJCSZsdDsvbnM6cmV0dXJuLyZndDs8YnIgLz4NCisJCQkJJmx0Oy9uczpnZXRTZXNzaW9uUmVzcG9uc2UvJmd0OzxiciAvPg0KKwkJCTwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+VG8gbG9naW4gYSB1c2VyIHRoZSBjYWxsIHRvIGF1dGggd291bGQgYmU6PC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+U2FtcGxlIFVSTDogPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL2RlbW8ub3Blbm1lZXRpbmdzLmRlL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Vc2VyU2VydmljZS9sb2dpblVzZXI/U0lEPTI2NTg0NzA1MjAyZDdjMWRlNmNjOGU3ZTI4ODkwZTNkJmFtcDt1c2VybmFtZT1oYW5zJmFtcDt1c2VycGFzcz10ZXN0Ij5odHRwOi8vZGVtby5vcGVubWVldGluZ3MuZGUvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1VzZXJTZXJ2aWNlL2xvZ2luVXNlcj9TSUQ9MjY1ODQ3MDUyMDJkN2MxZGU2Y2M4ZTdlMjg4OTBlM2QmYW1wO3VzZXJuYW1lPWhhbiZhbXA7dXNlcnBhc3M9dGVzdDwvYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlJlc3VsdDogPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ieG1sY29kZSI+DQorCQkJCSZsdDtuczpsb2dpblVzZXJSZXNwb25zZS8mZ3Q7PGJyIC8+DQorCQkJCTxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjIwcHgiPg0KKwkJCQkgICAgJmx0O25zOnJldHVybiZndDstMTEmbHQ7L25zOnJldHVybi8mZ3Q7PGJyIC8+DQorCQkJCTwvZGl2Pg0KKwkJCQkmbHQ7L25zOmxvZ2luVXNlclJlc3BvbnNlLyZndDs8YnIgLz4NCisJCQk8L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPj0mZ3Q7IEl0IGRvZXMgcmV0dXJuIC0xMCwgd2hpY2ggaXMgdGhlIGVycm9yIGlkIGNhdXNlIHdlIHdpbGwgbm90IHdyaXRlIGRvd24gYSBTT0FQIGxvZ2luIHRvIG91ciBwdWJsaWMgc2VydmVyIGluIHRoaXMgd2lraS4gSG93ZXZlciB0aGUgY29ycmVjdCB3YXkgdG8gY2hlY2sgdGhpcyBlcnJvciB3b3VsZCBiZSB0byBpbnZva2UgdGhlIGNhbGwgdG8gZ2V0IHRoZSBsb2NhbGl6ZWQgZXJyb3IgbWVzc2FnZS4gU28gd2UgaW52b2tlIHRoZSBtZXRob2QgdG8gZ2V0IHRoZSBlcnJvciB2aWEgUkVTVDo8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5TYW1wbGUgVVJMOiA8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vZGVtby5vcGVubWVldGluZ3MuZGUvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1VzZXJTZXJ2aWNlL2dldEVycm9yQnlDb2RlP1NJRD0yNjU4NDcwNTIwMmQ3YzFkZTZjYzhlN2UyODg5MGUzZCZhbXA7ZXJyb3JpZD0tMTAmYW1wO2xhbmd1YWdlX2lkPTEiPmh0dHA6Ly9kZW1vLm9wZW5tZWV0aW5ncy5kZS9vcGVubWVldGluZ3Mvc2VydmljZXMvVXNlclNlcnZpY2UvZ2V0RXJyb3JCeUNvZGU/U0lEPTI2NTg0NzA1MjAyZDdjMWRlNmNjOGU3ZTI4ODkwZTNkJmFtcDtlcnJvcmlkPS0xMCZhbXA7bGFuZ3VhZ2VfaWQ9MTwvYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlJlc3VsdDo8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ4bWxjb2RlIj4NCisJCQkJJmx0O25zOmdldEVycm9yQnlDb2RlUmVzcG9uc2UvJmd0OzxiciAvPg0KKwkJCQkmbHQ7bnM6cmV0dXJuIHR5cGU9Im9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmVhbnMuYmFzaWMuRXJyb3JSZXN1bHQiLyZndDs8YnIgLz4NCisJCQkJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6MjBweCI+DQorCQkJCQkmbHQ7YXgyMTg6ZXJybWVzc2FnZSZndDtVc2VybmFtZSBub3QgZm91bmQmbHQ7L2F4MjE4OmVycm1lc3NhZ2UvJmd0OzxiciAvPg0KKwkJCQkJJmx0O2F4MjE4OmVycm9ySWQmZ3Q7LTEwJmx0Oy9heDIxODplcnJvcklkLyZndDs8YnIgLz4NCisJCQkJCSZsdDtheDIxODplcnJvcnR5cGUmZ3Q7RXJyb3ImbHQ7L2F4MjE4OmVycm9ydHlwZS8mZ3Q7PGJyIC8+DQorCQkJCTwvZGl2Pg0KKwkJCQkmbHQ7L25zOnJldHVybi8mZ3Q7PGJyIC8+DQorCQkJCSZsdDsvbnM6Z2V0RXJyb3JCeUNvZGVSZXNwb25zZS8mZ3Q7PGJyIC8+DQorCQkJPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDwhLS0gRk9PVEVSIC0tPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgYWxpZ249ImNlbnRlciI+PGZvbnQgY29sb3I9IiMxMjM0NjUiIHNpemU9Ii0xIj48ZW0+CisgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAmIzE2OTsgMjAwMy0yMDEzLCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyAgICAgICAgICAgICAgICAgICAgPC9lbT48L2ZvbnQ+PC9kaXY+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvYm9keT4KKyAgICA8L2h0bWw+Cis8IS0tIGVuZCB0aGUgcHJvY2Vzc2luZyAtLT4KKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKwpkaWZmIC0tZ2l0IGEvZG9jcy9SZXN0cmljdGVkQWNjZXNzLmh0bWwgYi9kb2NzL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMmIwMjYxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9SZXN0cmljdGVkQWNjZXNzLmh0bWwKQEAgLTAsMCArMSw3NDQgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgorCis8IS0tCitDb3B5cmlnaHQgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKworPCEtLSBDb250ZW50IFN0eWxlc2hlZXQgZm9yIFNpdGUgLS0+CisKKyAgICAgICAgCis8IS0tIHN0YXJ0IHRoZSBwcm9jZXNzaW5nIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8IS0tIEdFTkVSQVRFRCBGSUxFLCBETyBOT1QgRURJVCwgRURJVCBUSEUgWE1MIEZJTEUgSU4geGRvY3MgSU5TVEVBRCEgLS0+CisgICAgPCEtLSBNYWluIFBhZ2UgU2VjdGlvbiAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGh0bWw+CisgICAgICAgIDxoZWFkPgorICAgICAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiLz4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iCisJCQlPcGVuTWVldGluZ3MgVGVhbQorCQkiPgorICAgICAgICAgICAgPG1ldGEgbmFtZT0iZW1haWwiIGNvbnRlbnQ9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+CisgICAgICAgICAgICAKKyAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgPHRpdGxlPkFwYWNoZSBPcGVuTWVldGluZ3MgLSBIb3cgdG8gcmVzdHJpY3QgYWNjZXNzIHRvIHlvdXIgT3Blbm1lZXRpbmdzIHNlcnZlcjwvdGl0bGU+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3Mvb3Blbm1lZXRpbmdzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvanF1ZXJ5LXVpLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29pbi1zbGlkZXItc3R5bGVzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29sb3Jib3guY3NzIiAvPgorICAgICAgICAgICAgCisJCQk8IS0tIEFkZCBqUXVlcnkgbGlicmFyeSAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS0xLjcuMS5taW4uanMiPjwvc2NyaXB0PgorCQkKKwkJCTwhLS0gQWRkIGNvaW5zbGlkZXIgcGx1Z2lucyAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2NvaW4tc2xpZGVyLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTwhLS0gQWRkIGNvbG9yYm94IHBsdWdpbiAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS5jb2xvcmJveC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5jb3JlLmpzIj48L3NjcmlwdD4KKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkud2lkZ2V0LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmFjY29yZGlvbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQ+CisJCQkkKGZ1bmN0aW9uKCkgeworCQkJCSQoICIjYWNjb3JkaW9uIiApLmFjY29yZGlvbih7CisJCQkJCWF1dG9IZWlnaHQ6IGZhbHNlLAorCQkJCQluYXZpZ2F0aW9uOiB0cnVlLAorCQkJCQluYXZpZ2F0aW9uRmlsdGVyOiBmdW5jdGlvbiAoKSB7CisJCQkJCQl2YXIgc2lkZWJhckhyZWZBcnJheSA9IHRoaXMuaHJlZi5zcGxpdCgiLyIpOworICAgIAkJCQkJdmFyIHNpZGVCYXJMYXN0U3RyaW5nID0gc2lkZWJhckhyZWZBcnJheVtzaWRlYmFySHJlZkFycmF5Lmxlbmd0aCAtIDFdLnRvTG93ZXJDYXNlKCk7CisJCQkJCQkKKwkJCQkJCWlmIChzaWRlQmFyTGFzdFN0cmluZy5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJCQl9CisJCQkJCQkKKwkJCQkJCQkJCQkJCS8qIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgKi8KKwkJCQkJCXZhciBjdXJyZW50U2VjdGlvbiA9ICIiOworCQkJCQkJCisJCQkJCQl2YXIgY3VycmVudExvY2F0aW9uID0gIiI7CisJCQkJCQl2YXIgY3VycmVudExpbmsgPSAiIjsKKwkJCQkJCWlmIChmYWxzZSkgeworCQkJCQkJCisJCQkJCQl9CisgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luZGV4Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luZGV4Lmh0bWwiLnN1YnN0cigxLCAiL2luZGV4Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbGljZW5zZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9saWNlbnNlLmh0bWwiLnN1YnN0cigxLCAiL2xpY2Vuc2UuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIuc3Vic3RyKDEsICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2Rvd25sb2Fkcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kb3dubG9hZHMuaHRtbCIuc3Vic3RyKDEsICIvZG93bmxvYWRzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5zdWJzdHIoMSwgIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5zdGFsbGF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luc3RhbGxhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9pbnN0YWxsYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9VcGdyYWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1VwZ3JhZGUuaHRtbCIuc3Vic3RyKDEsICIvVXBncmFkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLnN1YnN0cigxLCAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29tbWFuZExpbmVBZG1pbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLnN1YnN0cigxLCAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZ2V0LWludm9sdmVkLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZ2V0LWludm9sdmVkLmh0bWwiLnN1YnN0cigxLCAiL2dldC1pbnZvbHZlZC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RlYW0tbGlzdC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3RlYW0tbGlzdC5odG1sIi5zdWJzdHIoMSwgIi90ZWFtLWxpc3QuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9tYWlsLWxpc3RzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbWFpbC1saXN0cy5odG1sIi5zdWJzdHIoMSwgIi9tYWlsLWxpc3RzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5zdWJzdHIoMSwgImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9zdm4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3N2bi5odG1sIi5zdWJzdHIoMSwgIi9zdm4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLnN1YnN0cigxLCAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kZXBlbmRlbmNpZXMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2RlcGVuZGVuY2llcy5odG1sIi5zdWJzdHIoMSwgIi9kZXBlbmRlbmNpZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVW5pdFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pVbml0VGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9KVW5pdFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NYW51YWxUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9NYW51YWxUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL01hbnVhbFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWxlYXNlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlbGVhc2VHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9SZWxlYXNlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJzaXRlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1dlYnNpdGVHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9XZWJzaXRlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU29hcFJlc3RBUEkuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1NvYXBSZXN0QVBJLmh0bWwiLnN1YnN0cigxLCAiL1NvYXBSZXN0QVBJLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdEFQSVNhbXBsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVzdEFQSVNhbXBsZS5odG1sIi5zdWJzdHIoMSwgIi9SZXN0QVBJU2FtcGxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGRhcEFuZEFEUy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTGRhcEFuZEFEUy5odG1sIi5zdWJzdHIoMSwgIi9MZGFwQW5kQURTLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRXJyb3JzVGFibGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0Vycm9yc1RhYmxlLmh0bWwiLnN1YnN0cigxLCAiL0Vycm9yc1RhYmxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01vb2RsZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Nb29kbGVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvTW9vZGxlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU2FrYWlQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU2FrYWlQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU2FrYWlQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KaXJhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0ppcmFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSmlyYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pvb21sYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Kb29tbGFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSm9vbWxhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRHJ1cGFsUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0RydXBhbFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9EcnVwYWxQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CaXRyaXhQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQml0cml4UGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0JpdHJpeFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU3VnYXJDUk1QbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWRtaW5lUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlZG1pbmVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvUmVkbWluZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0lCTURCMkNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0lCTURCMkNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9JQk1EQjJDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09yYWNsZUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09yYWNsZUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9PcmFjbGVDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL015U1FMQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTXlTUUxDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvTXlTUUxDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Bvc3RncmVzQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9zdGdyZXNDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvUG9zdGdyZXNDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9MYW5ndWFnZUVkaXRvci5odG1sIi5zdWJzdHIoMSwgIi9MYW5ndWFnZUVkaXRvci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVGltZVpvbmVIYW5kbGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIuc3Vic3RyKDEsICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRWRpdFRlbXBsYXRlcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIuc3Vic3RyKDEsICIvRWRpdFRlbXBsYXRlcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3J0U2V0dGluZ3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3J0U2V0dGluZ3MuaHRtbCIuc3Vic3RyKDEsICIvUG9ydFNldHRpbmdzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIuc3Vic3RyKDEsICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIuc3Vic3RyKDEsICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRGFzaGJvYXJkLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRGFzaGJvYXJkLmh0bWwiLnN1YnN0cigxLCAiL0Rhc2hib2FyZC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSG90S2V5cy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0hvdEtleXMuaHRtbCIuc3Vic3RyKDEsICIvSG90S2V5cy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJhcHBOYW1lUGF0aC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLnN1YnN0cigxLCAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9OYXZpZ2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTmF2aWdhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9OYXZpZ2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5zdWJzdHIoMSwgIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JUTVBTQW5kSFRUUFMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SVE1QU0FuZEhUVFBTLmh0bWwiLnN1YnN0cigxLCAiL1JUTVBTQW5kSFRUUFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIuc3Vic3RyKDEsICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIuc3Vic3RyKDEsICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DbHVzdGVyaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2x1c3RlcmluZy5odG1sIi5zdWJzdHIoMSwgIi9DbHVzdGVyaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dldFZlcnNpb25JbmZvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2V0VmVyc2lvbkluZm8uaHRtbCIuc3Vic3RyKDEsICIvR2V0VmVyc2lvbkluZm8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJICAgIAkJCQkJCisgICAgCQkJCQljdXJyZW50TGluayA9IGN1cnJlbnRMaW5rLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQljdXJyZW50TG9jYXRpb24gPSBjdXJyZW50TG9jYXRpb24udG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCQorCQkJCQkJcmV0dXJuIHNpZGVCYXJMYXN0U3RyaW5nID09IGN1cnJlbnRMaW5rKyIjIitjdXJyZW50TG9jYXRpb247CisJCQkJCX0KKwkJCQl9KTsKKwkJCX0pOworCQkJPC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwkJCQkkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsKKwkJCQkJJCgnLmZhbmN5Ym94LWJ1dHRvbnMnKS5jb2xvcmJveCh7cmVsOidmYW5jeWJveC1idXR0b25zJyx3aWR0aDoiNzUlIiwgaGVpZ2h0OiI3NSUifSk7CisJCQkJCSQoJyNhY2NvcmRpb24gYScpLmVhY2goZnVuY3Rpb24oKSB7CisJCQkJICAgICAgdmFyIGEgPSAkKHRoaXMpOworCQkJCSAgICAgIHZhciBocmVmID0gYS5hdHRyKCJocmVmIik7CisJCQkJICAgICAgaWYgKGhyZWYuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJICAgICAgCSAgdmFyIGNvbXBhcmVJdCA9IGhyZWYuc3Vic3RyKDIsIGhyZWYubGVuZ3RoKTsKKwkJCQkJICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZihjb21wYXJlSXQpIT0gLTEpIHsKKwkJCQkJICAgICAgIGEuYWRkQ2xhc3MoJ2FjdGl2ZScpOworCQkJCQkgICAgICB9CisJCQkJICAgICAgfQorCQkJCSAgICB9KTsKKwkJCQkJJCgnI2NvaW4tc2xpZGVyJykuY29pbnNsaWRlcih7IHdpZHRoOiA2NDAsaGVpZ2h0OiA0MDAsIGRlbGF5OiA0MDAwICB9KTsJCQkJCQorCQkJCX0pOworCQkJPC9zY3JpcHQ+CQorCQkJCQkJCisJCQk8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorCQkJCS5mYW5jeWJveC1jdXN0b20gLmZhbmN5Ym94LW91dGVyIHsKKwkJCQkJYm94LXNoYWRvdzogMCAwIDUwcHggIzIyMjsKKwkJCQl9CisJCQk8L3N0eWxlPgorICAgICAgICA8L2hlYWQ+CisKKyAgICAgICAgPGJvZHkgYmdjb2xvcj0iI2ZmZmZmZiIgdGV4dD0iIzAwMDAwMCIgbGluaz0iIzEyMzQ2NSIgdmxpbms9IiMxMjM0NjUiIGFsaW5rPSIjMDAwMDAwIj4gIAorICAgICAgICAJPGRpdiBjbGFzcz0ibWFpbmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAJPGRpdiBjbGFzcz0ic3VwZXJib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCI+CisgICAgICAgICAgICAgICAgPCEtLSBUT1AgSU1BR0UgLS0+CisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPgorPGEgaHJlZj0iaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnLyI+PGltZyBzcmM9Ii4vaW1hZ2VzL2xvZ28tMi5qcGciIGFsdD0iQXBhY2hlIE9wZW5NZWV0aW5ncyIgYm9yZGVyPSIwIi8+PC9hPgorPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiID4KKwk8YSBocmVmPSJkZW1vLmh0bWwiPkRlbW88L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iZG93bmxvYWRzLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+RG93bmxvYWQ8L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaW5zdGFsbGF0aW9uLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+SW5zdGFsbGF0aW9uPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTIiB0YXJnZXQ9Il9CTEFOSyI+V2lraTwvYT4KKwk8c3Bhbj4mbmJzcDs8L3NwYW4+Cis8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSI0Ij4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPCEtLSBMRUZUIFNJREUgTkFWSUdBVElPTiAtLT4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIiBub3dyYXA9Im5vd3JhcCI+CisKKyAgICAgICAgICAgICAgICAgICAgPCEtLSBzcGVjaWFsIEFDb24gTG9nbyAtIGxlYXZlIGhlcmUgZm9yIG5leHQgdGltZQorICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vYXBhY2hlY29uLmNvbS8yMDA1L1VTLyI+CisgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2FwYWNoZS5vcmcvaW1hZ2VzL2FjMjAwNXVzX2JsdWVfMTI1eDEyNS5qcGciIGhlaWdodD0iMTI1IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTI1IiBib3JkZXI9IjAiIGFsdD0iQXBhY2hlQ29uIFVTIDIwMDUiIC8+CisgICAgICAgICAgICAgICAgICAgIDwvYT4gIC0tPgorCisgICAgICAgICAgICAgICAgICAgPCEtLSByZWd1bGFyIG1lbnUgLS0+CisKKyAgICAgICAgICAgICAgICAgICAgCisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGRpdiBpZD0iYWNjb3JkaW9uIiBzdHlsZT0id2lkdGg6IDEwMCUiPgorICAgIAorICAgICAgICAgICAgCTxoMz48YSBocmVmPSIjR2VuZXJhbCI+R2VuZXJhbDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5kZXguaHRtbCI+SG9tZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbGljZW5zZS5odG1sIj5MaWNlbnNlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyI+QVNGPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kb3dubG9hZHMuaHRtbCI+RG93bmxvYWRzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCI+Q29tbWVyY2lhbCBTdXBwb3J0PC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnN0YWxsYXRpb25hbmRVcGdyYWRlIj5JbnN0YWxsYXRpb24gYW5kIFVwZ3JhZGU8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luc3RhbGxhdGlvbi5odG1sIj5JbnN0YWxsYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1VwZ3JhZGUuaHRtbCI+VXBncmFkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii5odHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyI+VHV0b3JpYWxzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db21tYW5kTGluZUFkbWluLmh0bWwiPkNvbW1hbmQgTGluZSBBZG1pbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29tbXVuaXR5Ij5Db21tdW5pdHk8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2dldC1pbnZvbHZlZC5odG1sIj5HZXQgSW52b2x2ZWQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3RlYW0tbGlzdC5odG1sIj5Db21taXR0ZXJzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9tYWlsLWxpc3RzLmh0bWwiPk1haWxpbmcgTGlzdHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyI+V2lraTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjRGV2ZWxvcG1lbnQiPkRldmVsb3BtZW50PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9zdm4uaHRtbCI+U291cmNlIENvZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIj5CdWdzIC8gSXNzdWVzIChKSVJBKTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZGVwZW5kZW5jaWVzLmh0bWwiPkRlcGVuZGVuY2llczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCI+QnVpbGQgSW5zdHJ1Y3Rpb25zPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KVW5pdFRlc3RpbmcuaHRtbCI+SlVuaXQgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTWFudWFsVGVzdGluZy5odG1sIj5NYW51YWwgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVsZWFzZUd1aWRlLmh0bWwiPlJlbGVhc2UgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1dlYnNpdGVHdWlkZS5odG1sIj5XZWJzaXRlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnRlZ3JhdGlvbiI+SW50ZWdyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1NvYXBSZXN0QVBJLmh0bWwiPlNPQVAvUkVTVCBBUEk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Jlc3RBUElTYW1wbGUuaHRtbCI+UkVTVCBBUEkgU2FtcGxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9MZGFwQW5kQURTLmh0bWwiPkxkYXAgYW5kIEFEUzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCI+Vm9JUCBhbmQgU0lQPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9FcnJvcnNUYWJsZS5odG1sIj5FcnJvcnMgdGFibGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI1BsdWdpbnMiPlBsdWdpbnM8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01vb2RsZVBsdWdpbi5odG1sIj5Nb29kbGUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TYWthaVBsdWdpbi5odG1sIj5TYWthaSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0ppcmFQbHVnaW4uaHRtbCI+SmlyYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pvb21sYVBsdWdpbi5odG1sIj5Kb29tbGEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9EcnVwYWxQbHVnaW4uaHRtbCI+RHJ1cGFsIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQml0cml4UGx1Z2luLmh0bWwiPkJpdHJpeCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCI+Q29uZmx1ZW5jZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiPlN1Z2FyQ1JNIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVkbWluZVBsdWdpbi5odG1sIj5SZWRtaW5lIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29uZmlndXJhdGlvbiI+Q29uZmlndXJhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+REIgU2FtcGxlIENvbmZpZ3VyYXRpb25zPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQXBhY2hlRGVyYnlDb25maWcuaHRtbCI+QXBhY2hlIERlcmJ5PC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JQk1EQjJDb25maWcuaHRtbCI+SUJNIERCMjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3JhY2xlQ29uZmlnLmh0bWwiPk9yYWNsZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTXlTUUxDb25maWcuaHRtbCI+TXlTUUw8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Bvc3RncmVzQ29uZmlnLmh0bWwiPlBvc3RncmVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Mb2NhbGl6YXRpb24gYW5kIGxhbmd1YWdlczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiPkludGVybmF0aW9uYWxpc2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9MYW5ndWFnZUVkaXRvci5odG1sIj5MYW5ndWFnZUVkaXRvcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vVGltZVpvbmVIYW5kbGluZy5odG1sIj5UaW1lWm9uZUhhbmRsaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9FZGl0VGVtcGxhdGVzLmh0bWwiPkVkaXRUZW1wbGF0ZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk5BVCBQb3J0IFNldHRpbmdzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9ydFNldHRpbmdzLmh0bWwiPlBvcnQgc2V0dGluZ3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlBlcmZvcm1hbmNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCI+SlZNIHBlcmZvcm1hbmNlIHR1bmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+VXNlciBJbnRlcmZhY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiPlRoZW1lczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRGFzaGJvYXJkLmh0bWwiPkRhc2hib2FyZDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCI+V2ViY2FtIHJlc29sdXRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCI+Um9vbSBsYXlvdXQgb3B0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSG90S2V5cy5odG1sIj5Ib3QgS2V5czwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q3VzdG9taXphdGlvbjwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmFwcE5hbWVQYXRoLmh0bWwiPldlYmFwcCBuYW1lL3BhdGg8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL05hdmlnYXRpb24uaHRtbCI+TmF2aWdhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIj5DYWxlbmRhciBhbmQgdGltZXpvbmU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCI+Q3VzdG9tIHJvb20gdHlwZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCI+Q3VzdG9tIGN0eXB0IG1lY2hhbmlzbTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCI+R2VuZXJhbCBDb25maWd1cmF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5TZWN1cml0eTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCI+UmVzdHJpY3RlZCBBY2Nlc3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1JUTVBTQW5kSFRUUFMuaHRtbCI+UlRNUFMgYW5kIEhUVFBTPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Db252ZXJ0ZXJzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIj5PcGVuT2ZmaWNlIENvbnZlcnRlcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIj5GRk1QRUcgVmVyc2lvbiBTd2l0Y2g8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNsdXN0ZXJpbmc8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DbHVzdGVyaW5nLmh0bWwiPkNsdXN0ZXJpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk1pc2M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZXRWZXJzaW9uSW5mby5odG1sIj5HZXQgdmVyc2lvbiBpbmZvPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAKKyAgICA8L2Rpdj4KKyAgICAgCisgICAgPGJyLz4KKyAgICAKKyAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iU2VydmVyIFNpZGUiPjxzdHJvbmc+U2VydmVyIFNpZGU8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPllvdSBjYW4gcHJvdGVjdCB5b3VyIE9wZW5NZWV0aW5ncyBpbnN0YW5jZSBmcm9tIGJlZWluZyBhY2Nlc3NlZA0KKwkJCQlmcm9tIDN0aCBwYXJ0eSBieSB1c2luZyB0aGUgZmlsZToNCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4kUkVENV9IT01FL3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvcmVkNS13ZWIucHJvcGVydGllcyA8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5Db250ZW50OiA8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ4bWxjb2RlIj4NCisJCQkJd2ViYXBwLnZpcnR1YWxIb3N0cz0qLGxvY2FsaG9zdCwgMTI3LjAuMC4xDQorCQkJPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vc3ZuLmFwYWNoZS5vcmcvdmlld3ZjL29wZW5tZWV0aW5ncy90cnVuay9zaW5nbGV3ZWJhcHAvV2ViQ29udGVudC9XRUItSU5GL3JlZDUtd2ViLnByb3BlcnRpZXMiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9zdm4uYXBhY2hlLm9yZy92aWV3dmMvb3Blbm1lZXRpbmdzL3RydW5rL3NpbmdsZXdlYmFwcC9XZWJDb250ZW50L1dFQi1JTkYvcmVkNS13ZWIucHJvcGVydGllcw0KKwkJCTwvYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkID48IS0tIGJnY29sb3I9IiNFRUVFRUUiIC0tPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0idmVyZGFuYSxhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IkNsaWVudCBTaWRlIj48c3Ryb25nPkNsaWVudCBTaWRlPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5BbmQgeW91IGNhbiByZXN0cmljdCB0aGUgYWNjZXNzIGFsc28gZm9yIHRoZSBjbGllbnQgc2lkZTogRXZlcnkNCisJCQkJRmxhc2ggUGx1Z2luIHdpbGwgY2hlY2sgYSBmaWxlIGNhbGxlZCAiY3Jvc3Nkb21haW4ueG1sIiBiZWZvcmUgaXQNCisJCQkJdHJpZXMgdG8gYWNjZXNzIHRoZSBzZXJ2ZXIgdXNpbmcgcnRtcC9SUEMuIFRoaXMgZmlsZSBpcyBsb2NhdGVkOiA8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4kUkVENV9IT01FL3dlYmFwcHMvcm9vdC9jcm9zc2RvbWFpbi54bWwgPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+Q29udGVudDogPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ieG1sY29kZSI+DQorCQkJCSZsdDs/eG1sIHZlcnNpb249IjEuMCI/Jmd0OzxiciAvPg0KKwkJCQkmbHQ7Y3Jvc3MtZG9tYWluLXBvbGljeSZndDs8YnIgLz4NCisJCQkJICAgICAgICAmbHQ7c2l0ZS1jb250cm9sIHBlcm1pdHRlZC1jcm9zcy1kb21haW4tcG9saWNpZXM9ImFsbCIvJmd0OzxiciAvPg0KKwkJCQkgICAgICAgICZsdDthbGxvdy1hY2Nlc3MtZnJvbSBkb21haW49ImxvY2FsaG9zdCIgdG8tcG9ydHM9IjIwLTY1NTM1Ii8mZ3Q7PGJyIC8+DQorCQkJCSAgICAgICAgJmx0O2FsbG93LWFjY2Vzcy1mcm9tIGRvbWFpbj0iKi5sb2NhbCIgdG8tcG9ydHM9IjIwLTY1NTM1Ii8mZ3Q7PGJyIC8+DQorCQkJCSZsdDsvY3Jvc3MtZG9tYWluLXBvbGljeSZndDs8YnIgLz4NCisJCQk8L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQlTYW1wbGUgZmlsZToNCisJCQkJPGEgaHJlZj0iaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL3JlZDUvc291cmNlL2Jyb3dzZS9qYXZhL3NlcnZlci90cnVuay93ZWJhcHBzL3Jvb3QvY3Jvc3Nkb21haW4ueG1sIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vY29kZS5nb29nbGUuY29tL3AvcmVkNS9zb3VyY2UvYnJvd3NlL2phdmEvc2VydmVyL3RydW5rL3dlYmFwcHMvcm9vdC9jcm9zc2RvbWFpbi54bWwNCisJCQkJPC9hPg0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQkJSWYgeW91IGFjY2Vzc2luZyB5b3VyIGFwcGxpY2F0aW9uIGJlaGluZCBhbiBBcGFjaGUgV2Vic2VydnJlICh1c2luZw0KKwkJCQkJbW9kX3Byb3h5IG9yIG1vZF9qazIpIGJlIGNhcmVmdWwgdG8gbWFrZSB0aGUgY3Jvc3Nkb21haW4ueG1sDQorCQkJCQlhY2Nlc3NpYmxlLiBGbGFzaCB3aWxsIGFsd2F5cyBzZWFyY2ggZm9yIHRoaXMgZmlsZSBpbiB0aGUgd3d3LXJvb3QNCisJCQkJCWRpcmVjdG9yeSBvZiBldmVyeSBVUkwgeW91IGNvbm5lY3QgdG8uIFlvdSBtaWdodCB1c2UNCisJCQkJCTxhIGhyZWY9Imh0dHBzOi8vYWRkb25zLm1vemlsbGEub3JnL2RlL2ZpcmVmb3gvYWRkb24vZmlyZWJ1Zy8iIHJlbD0ibm9mb2xsb3ciPkZpcmVCdWcNCisJCQkJCTwvYT4NCisJCQkJCWZvciBleGFtcGxlIHRvIGxvb2t1cCByZXF1ZXN0cy4NCisJCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8IS0tIEZPT1RFUiAtLT4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGFsaWduPSJjZW50ZXIiPjxmb250IGNvbG9yPSIjMTIzNDY1IiBzaXplPSItMSI+PGVtPgorICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgJiMxNjk7IDIwMDMtMjAxMywgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisgICAgICAgICAgICAgICAgICAgIDwvZW0+PC9mb250PjwvZGl2PgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2JvZHk+CisgICAgPC9odG1sPgorPCEtLSBlbmQgdGhlIHByb2Nlc3NpbmcgLS0+CisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKZGlmZiAtLWdpdCBhL2RvY3MvUm9vbVNlcnZpY2UuaHRtbCBiL2RvY3MvUm9vbVNlcnZpY2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDlhYjA5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9Sb29tU2VydmljZS5odG1sCkBAIC0wLDAgKzEsNTE1MSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+DQorPCEtLQ0KK0NvcHlyaWdodCAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uDQorTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQoreW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKw0KK2h0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKw0KK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCitkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCitsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCistLT4NCisNCisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPg0KKyAgICA8IS0tIEdFTkVSQVRFRCBGSUxFLCBETyBOT1QgRURJVCwgRURJVCBUSEUgVEVNUExBVEUgSU5TVEVBRCEgLS0+DQorICAgIDwhLS0gTWFpbiBQYWdlIFNlY3Rpb24gLS0+DQorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4NCisgICAgDQorICAgICA8aHRtbD4NCisgICAgICAgIDxoZWFkPg0KKwkJPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSIvPg0KKwkJPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSJPcGVuTWVldGluZ3MgVGVhbSI+DQorCQk8bWV0YSBuYW1lPSJlbWFpbCIgY29udGVudD0ic2ViYXdhZ25lckBhcGFjaGUub3JnIj4NCisJCTx0aXRsZT5PcGVuTWVldGluZ3MgQVBJIE1ldGhvZHM8L3RpdGxlPg0KKwkJPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0ib3Blbm1lZXRpbmdzX2RvY3MuY3NzIj4NCisgICAgICAgIDwvaGVhZD4NCisJPGJvZHk+DQorCQ0KKwkJPGgzPkF2YWlsYWJsZSBXZWJTZXJ2aWNlczo8L2gzPg0KKwkNCisJCTxpZnJhbWUgc3JjPSJXZWJzZXJ2aWNlSW5kZXguaHRtbCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMjEwIiBuYW1lPSJXZWJzZXJ2aWNlSW5kZXguaHRtbCINCisJCQlzY3JvbGxpbmc9Im5vIiBtYXJnaW5oZWlnaHQ9IjAiIG1hcmdpbndpZHRoPSIwIiBmcmFtZWJvcmRlcj0iMCI+DQorCQkgIDxwPllvdXIgQnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IGZyYW1lcyAuLi48L3A+DQorCQk8L2lmcmFtZT4NCisJCQ0KKwkJPGhyIC8+DQorCQ0KKwkgICA8aDM+V2ViU2VydmljZTogUm9vbVNlcnZpY2U8L2gzPg0KKwkgICA8cD5Sb29tU2VydmljZSBjb250YWlucyBtZXRob2RzIHRvIG1hbmlwdWxhdGUgcm9vbXMgYW5kIGNyZWF0ZSBpbnZpdGF0aW9uIGhhc2g8cD4NCisJICAgPHA+V1NETCBzYW1wbGUgVXJsOiA8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1Jvb21TZXJ2aWNlP3dzZGwiPmh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvUm9vbVNlcnZpY2U/d3NkbDwvYT48cD4NCisJDQorCTwhLS0gTGlua3MgdG8gTWV0aG9kcyAtLT4NCisJICAgPGgzPkluZGV4IG9mIE1ldGhvZHMgYXZhaWxhYmxlIGluIFJvb21TZXJ2aWNlPC9oMz4NCisJICAgDQorICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb24iPg0KKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dldFJvb21zUHVibGljIj48Yj5nZXRSb29tc1B1YmxpYzwvYj48L2E+PGJyLz4NCisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2aWdhdGlvbl9jb21tZW50Ij48aSA+UmV0dXJucyBhbiBPYmplY3Qgb2YgVHlwZSBSb29tc0xpc3Qgd2hpY2ggY29udGFpbnMgYSBsaXN0IG9mCisgUm9vbS1PYmplY3RzLiBFdmVyeSBSb29tLU9iamVjdCBjb250YWlucyBhIFJvb210eXBlIGFuZCBhbGwgaW5mb3JtYXRpb25zCisgYWJvdXQgdGhhdCBSb29tLiBUaGUgTGlzdCBvZiBjdXJyZW50LXVzZXJzIGluIHRoZSByb29tIGlzIE51bGwgaWYgeW91IGdldAorIHRoZW0gdmlhIFNPQVAuIFRoZSBSb29tdHlwZSBjYW4gYmUgMSBmb3IgY29uZmVyZW5jZSByb29tcyBvciAyIGZvcgorIGF1ZGllbmNlIHJvb21zLjwvaT48L2Rpdj4NCisgICAgICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIjZGVsZXRlRmx2UmVjb3JkaW5nIj48Yj5kZWxldGVGbHZSZWNvcmRpbmc8L2I+PC9hPjxici8+DQorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb25fY29tbWVudCI+PGkgPkRlbGV0ZXMgYSBmbHYgcmVjb3JkaW5nPC9pPjwvZGl2Pg0KKyAgICAgICAgICAgICAgICA8L2Rpdj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnZXRGbHZSZWNvcmRpbmdCeUV4dGVybmFsVXNlcklkIj48Yj5nZXRGbHZSZWNvcmRpbmdCeUV4dGVybmFsVXNlcklkPC9iPjwvYT48YnIvPg0KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uX2NvbW1lbnQiPjxpID5HZXRzIGEgbGlzdCBvZiBmbHYgcmVjb3JkaW5nczwvaT48L2Rpdj4NCisgICAgICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ2V0Rmx2UmVjb3JkaW5nQnlFeHRlcm5hbFJvb21UeXBlQW5kQ3JlYXRvciI+PGI+Z2V0Rmx2UmVjb3JkaW5nQnlFeHRlcm5hbFJvb21UeXBlQW5kQ3JlYXRvcjwvYj48L2E+PGJyLz4NCisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2aWdhdGlvbl9jb21tZW50Ij48aSA+R2V0cyBhIGxpc3Qgb2YgZmx2IHJlY29yZGluZ3M8L2k+PC9kaXY+DQorICAgICAgICAgICAgICAgIDwvZGl2Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dldEZsdlJlY29yZGluZ0J5RXh0ZXJuYWxSb29tVHlwZUJ5TGlzdCI+PGI+Z2V0Rmx2UmVjb3JkaW5nQnlFeHRlcm5hbFJvb21UeXBlQnlMaXN0PC9iPjwvYT48YnIvPg0KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uX2NvbW1lbnQiPjxpID5HZXRzIGEgbGlzdCBvZiBmbHYgcmVjb3JkaW5nczwvaT48L2Rpdj4NCisgICAgICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ2V0Rmx2UmVjb3JkaW5nQnlFeHRlcm5hbFJvb21UeXBlIj48Yj5nZXRGbHZSZWNvcmRpbmdCeUV4dGVybmFsUm9vbVR5cGU8L2I+PC9hPjxici8+DQorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb25fY29tbWVudCI+PGkgPkdldHMgYSBsaXN0IG9mIGZsdiByZWNvcmRpbmdzPC9pPjwvZGl2Pg0KKyAgICAgICAgICAgICAgICA8L2Rpdj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnZXRGbHZSZWNvcmRpbmdCeVJvb21JZCI+PGI+Z2V0Rmx2UmVjb3JkaW5nQnlSb29tSWQ8L2I+PC9hPjxici8+DQorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb25fY29tbWVudCI+PGkgPkdldCBsaXN0IG9mIHJlY29yZGluZ3M8L2k+PC9kaXY+DQorICAgICAgICAgICAgICAgIDwvZGl2Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dldFJvb21UeXBlcyI+PGI+Z2V0Um9vbVR5cGVzPC9iPjwvYT48YnIvPg0KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uX2NvbW1lbnQiPjxpID5MaXN0IG9mIGF2YWlsYWJsZSByb29tIHR5cGVzPC9pPjwvZGl2Pg0KKyAgICAgICAgICAgICAgICA8L2Rpdj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnZXRSb29tQ291bnRlcnMiPjxiPmdldFJvb21Db3VudGVyczwvYj48L2E+PGJyLz4NCisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2aWdhdGlvbl9jb21tZW50Ij48aSA+UmV0dXJucyBjdXJyZW50IHVzZXJzIGZvciByb29tcyBpZHM8L2k+PC9kaXY+DQorICAgICAgICAgICAgICAgIDwvZGl2Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dldFJvb21CeUlkIj48Yj5nZXRSb29tQnlJZDwvYj48L2E+PGJyLz4NCisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2aWdhdGlvbl9jb21tZW50Ij48aSA+cmV0dXJucyBhIGNvbmZlcmVuY2Ugcm9vbSBvYmplY3Q8L2k+PC9kaXY+DQorICAgICAgICAgICAgICAgIDwvZGl2Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dldFJvb21XaXRoQ3VycmVudFVzZXJzQnlJZCI+PGI+Z2V0Um9vbVdpdGhDdXJyZW50VXNlcnNCeUlkPC9iPjwvYT48YnIvPg0KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uX2NvbW1lbnQiPjxpID48L2k+PC9kaXY+DQorICAgICAgICAgICAgICAgIDwvZGl2Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dldFJvb21XaXRoQ2xpZW50T2JqZWN0c0J5SWQiPjxiPmdldFJvb21XaXRoQ2xpZW50T2JqZWN0c0J5SWQ8L2I+PC9hPjxici8+DQorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb25fY29tbWVudCI+PGkgPlJldHVybnMgYSBvYmplY3Qgb2YgdHlwZSBSb29tUmV0dXJuPC9pPjwvZGl2Pg0KKyAgICAgICAgICAgICAgICA8L2Rpdj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnZXRSb29tcyI+PGI+Z2V0Um9vbXM8L2I+PC9hPjxici8+DQorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb25fY29tbWVudCI+PGkgPlJldHVybnMgYSBMaXN0IG9mIE9iamVjdHMgb2YgUm9vbXMgWW91IGNhbiB1c2UgIm5hbWUiIGFzIHZhbHVlIGZvcgorIG9yZGVyYnkgb3Igcm9vbXNfaWQ8L2k+PC9kaXY+DQorICAgICAgICAgICAgICAgIDwvZGl2Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dldFJvb21zV2l0aEN1cnJlbnRVc2VycyI+PGI+Z2V0Um9vbXNXaXRoQ3VycmVudFVzZXJzPC9iPjwvYT48YnIvPg0KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uX2NvbW1lbnQiPjxpID5SZXR1cm5zIGEgTGlzdCBvZiBPYmplY3RzIG9mIFJvb21zIFlvdSBjYW4gdXNlICJuYW1lIiBhcyB2YWx1ZSBmb3IKKyBvcmRlcmJ5IG9yIHJvb21zX2lkLiBJdCBhbHNvIGZpbGxzIHRoZSBhdHRyaWJ1dGUgY3VycmVudFVzZXJzIGluIHRoZQorIFJvb20tT2JqZWN0PC9pPjwvZGl2Pg0KKyAgICAgICAgICAgICAgICA8L2Rpdj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNhZGRSb29tIj48Yj5hZGRSb29tPC9iPjwvYT48YnIvPg0KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uX2NvbW1lbnQiPjxpID5UT0RPOiBGaXggT3JnYW5pemF0aW9uIElzc3VlCisgCisgZGVwcmVjYXRlZCB1c2UgYWRkUm9vbVdpdGhNb2RlcmF0aW9uIGluc3RlYWQ8L2k+PC9kaXY+DQorICAgICAgICAgICAgICAgIDwvZGl2Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2FkZFJvb21XaXRoTW9kZXJhdGlvbiI+PGI+YWRkUm9vbVdpdGhNb2RlcmF0aW9uPC9iPjwvYT48YnIvPg0KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uX2NvbW1lbnQiPjxpID5DcmVhdGUgYSBjb25mZXJlbmNlIHJvb208L2k+PC9kaXY+DQorICAgICAgICAgICAgICAgIDwvZGl2Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2FkZFJvb21XaXRoTW9kZXJhdGlvbkFuZFF1ZXN0aW9ucyI+PGI+YWRkUm9vbVdpdGhNb2RlcmF0aW9uQW5kUXVlc3Rpb25zPC9iPjwvYT48YnIvPg0KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uX2NvbW1lbnQiPjxpID50aGlzIFNPQVAgTWV0aG9kIGhhcyBhbiBhZGRpdGlvbmFsIHBhcmFtIHRvIGVuYWJsZSBvciBkaXNhYmxlIHRoZSBidXR0b25zCisgdG8gYXBwbHkgZm9yIG1vZGVyYXRpb24gdGhpcyBkb2VzIG9ubHkgd29yayBpbiBjb21iaW5hdGlvbiB3aXRoIHRoZQorIHJvb20tdHlwZSByZXN0cmljdGVkPC9pPjwvZGl2Pg0KKyAgICAgICAgICAgICAgICA8L2Rpdj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNhZGRSb29tV2l0aE1vZGVyYXRpb25RdWVzdGlvbnNBbmRBdWRpb1R5cGUiPjxiPmFkZFJvb21XaXRoTW9kZXJhdGlvblF1ZXN0aW9uc0FuZEF1ZGlvVHlwZTwvYj48L2E+PGJyLz4NCisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2aWdhdGlvbl9jb21tZW50Ij48aSA+YWRkcyBhIG5ldyByb29tIHdpdGggb3B0aW9ucyBmb3IgdXNlciBxdWVzdGlvbnMgYW5kIGF1ZGlvIG9ubHk8L2k+PC9kaXY+DQorICAgICAgICAgICAgICAgIDwvZGl2Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2FkZFJvb21XaXRoTW9kZXJhdGlvblF1ZXN0aW9uc0F1ZGlvVHlwZUFuZEhpZGVPcHRpb25zIj48Yj5hZGRSb29tV2l0aE1vZGVyYXRpb25RdWVzdGlvbnNBdWRpb1R5cGVBbmRIaWRlT3B0aW9uczwvYj48L2E+PGJyLz4NCisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2aWdhdGlvbl9jb21tZW50Ij48aSA+YWRkcyBhIG5ldyByb29tIHdpdGggb3B0aW9ucyBmb3IgdXNlciBxdWVzdGlvbnMsIGF1ZGlvIG9ubHkgYW5kIGhpZGU8L2k+PC9kaXY+DQorICAgICAgICAgICAgICAgIDwvZGl2Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dldFJvb21JZEJ5RXh0ZXJuYWxJZCI+PGI+Z2V0Um9vbUlkQnlFeHRlcm5hbElkPC9iPjwvYT48YnIvPg0KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uX2NvbW1lbnQiPjxpID5DaGVja3MgaWYgYSByb29tIHdpdGggdGhpcyBleHRlcmFsUm9vbUlkICsgZXh0ZXJuYWxSb29tVHlwZSBkb2VzIGV4aXN0LAorIGlmIHllcyBpdCByZXR1cm5zIHRoZSByb29tIGlkIGlmIG5vdCwgaXQgd2lsbCBjcmVhdGUgdGhlIHJvb20gYW5kIHRoZW4KKyByZXR1cm4gdGhlIHJvb20gaWQgb2YgdGhlIG5ld2x5IGNyZWF0ZWQgcm9vbTwvaT48L2Rpdj4NCisgICAgICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIjdXBkYXRlUm9vbSI+PGI+dXBkYXRlUm9vbTwvYj48L2E+PGJyLz4NCisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2aWdhdGlvbl9jb21tZW50Ij48aSA+VE9ETzogRml4IE9yZ2FuaXphdGlvbiBJc3N1ZSBkZXByZWNhdGVkIHVzZSB1cGRhdGVSb29tV2l0aE1vZGVyYXRpb248L2k+PC9kaXY+DQorICAgICAgICAgICAgICAgIDwvZGl2Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3VwZGF0ZVJvb21XaXRoTW9kZXJhdGlvbiI+PGI+dXBkYXRlUm9vbVdpdGhNb2RlcmF0aW9uPC9iPjwvYT48YnIvPg0KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uX2NvbW1lbnQiPjxpID5VcGRhdGVzIGEgY29uZmVyZW5jZSByb29tIGJ5IGl0cyByb29tIGlkPC9pPjwvZGl2Pg0KKyAgICAgICAgICAgICAgICA8L2Rpdj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorICAgICAgICAgICAgICAgIDxhIGhyZWY9IiN1cGRhdGVSb29tV2l0aE1vZGVyYXRpb25BbmRRdWVzdGlvbnMiPjxiPnVwZGF0ZVJvb21XaXRoTW9kZXJhdGlvbkFuZFF1ZXN0aW9uczwvYj48L2E+PGJyLz4NCisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2aWdhdGlvbl9jb21tZW50Ij48aSA+PC9pPjwvZGl2Pg0KKyAgICAgICAgICAgICAgICA8L2Rpdj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorICAgICAgICAgICAgICAgIDxhIGhyZWY9IiN1cGRhdGVSb29tV2l0aE1vZGVyYXRpb25RdWVzdGlvbnNBdWRpb1R5cGVBbmRIaWRlT3B0aW9ucyI+PGI+dXBkYXRlUm9vbVdpdGhNb2RlcmF0aW9uUXVlc3Rpb25zQXVkaW9UeXBlQW5kSGlkZU9wdGlvbnM8L2I+PC9hPjxici8+DQorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb25fY29tbWVudCI+PGkgPnVwZGF0ZSByb29tIHdpdGggb3B0aW9ucyBmb3IgdXNlciBxdWVzdGlvbnMsIGF1ZGlvIG9ubHkgYW5kIGhpZGU8L2k+PC9kaXY+DQorICAgICAgICAgICAgICAgIDwvZGl2Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2RlbGV0ZVJvb20iPjxiPmRlbGV0ZVJvb208L2I+PC9hPjxici8+DQorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb25fY29tbWVudCI+PGkgPkRlbGV0ZSBhIHJvb20gYnkgaXRzIHJvb20gaWQ8L2k+PC9kaXY+DQorICAgICAgICAgICAgICAgIDwvZGl2Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2tpY2tVc2VyIj48Yj5raWNrVXNlcjwvYj48L2E+PGJyLz4NCisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2aWdhdGlvbl9jb21tZW50Ij48aSA+a2ljayBhbGwgdXNlcyBvZiBhIGNlcnRhaW4gcm9vbTwvaT48L2Rpdj4NCisgICAgICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIjYWRkUm9vbVdpdGhNb2RlcmF0aW9uQW5kRXh0ZXJuYWxUeXBlIj48Yj5hZGRSb29tV2l0aE1vZGVyYXRpb25BbmRFeHRlcm5hbFR5cGU8L2I+PC9hPjxici8+DQorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb25fY29tbWVudCI+PGkgPkFkZCBhIG5ldyBjb25mZXJlbmNlIHJvb20gd2l0aCBvcHRpb24gdG8gc2V0IHRoZSBleHRlcm5hbCByb29tIHR5cGUsIHRoZQorIGV4dGVybmFsIHJvb20gdHlwZSBzaG91bGQgYmUgc2V0IGlmIG11bHRpcGxlIGFwcGxpY2F0aW9ucyB1c2UgdGhlIHNhbWUKKyBPcGVuTWVldGluZ3MgaW5zdGFuY2U8L2k+PC9kaXY+DQorICAgICAgICAgICAgICAgIDwvZGl2Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2FkZFJvb21XaXRoTW9kZXJhdGlvbkV4dGVybmFsVHlwZUFuZEF1ZGlvVHlwZSI+PGI+YWRkUm9vbVdpdGhNb2RlcmF0aW9uRXh0ZXJuYWxUeXBlQW5kQXVkaW9UeXBlPC9iPjwvYT48YnIvPg0KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uX2NvbW1lbnQiPjxpID5BZGRzIGEgbmV3IHJvb20gd2l0aCBvcHRpb25zIGZvciBhdWRpbyBvbmx5PC9pPjwvZGl2Pg0KKyAgICAgICAgICAgICAgICA8L2Rpdj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNhZGRSb29tV2l0aE1vZGVyYXRpb25BbmRSZWNvcmRpbmdGbGFncyI+PGI+YWRkUm9vbVdpdGhNb2RlcmF0aW9uQW5kUmVjb3JkaW5nRmxhZ3M8L2I+PC9hPjxici8+DQorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb25fY29tbWVudCI+PGkgPkFkZHMgYSBuZXcgcm9vbSB3aXRoIG9wdGlvbnMgZm9yIHJlY29yZGluZzwvaT48L2Rpdj4NCisgICAgICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIjYWRkUm9vbVdpdGhNb2RlcmF0aW9uRXh0ZXJuYWxUeXBlQW5kVG9wQmFyT3B0aW9uIj48Yj5hZGRSb29tV2l0aE1vZGVyYXRpb25FeHRlcm5hbFR5cGVBbmRUb3BCYXJPcHRpb248L2I+PC9hPjxici8+DQorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb25fY29tbWVudCI+PGkgPkFkZCBhIGNvbmZlcmVuY2Ugcm9vbSB3aXRoIG9wdGlvbnMgdG8gZGlzYWJsZSB0aGUgdG9wIG1lbnUgYmFyIGluIHRoZQorIGNvbmZlcmVuY2Ugcm9vbTwvaT48L2Rpdj4NCisgICAgICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ2V0SW52aXRhdGlvbkhhc2giPjxiPmdldEludml0YXRpb25IYXNoPC9iPjwvYT48YnIvPg0KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uX2NvbW1lbnQiPjxpID5DcmVhdGUgYSBJbnZpdGF0aW9uIGhhc2ggYW5kIG9wdGlvbmFsbHkgc2VuZCBpdCBieSBtYWlsIHRoZSBGcm9tIHRvIERhdGUKKyBpcyBhcyBTdHJpbmcgYXMgc29tZSBTT0FQIGxpYnJhcmllcyBkbyBub3QgYWNjZXB0IERhdGUgT2JqZWN0cyBpbiBTT0FQCisgQ2FsbHMgRGF0ZSBpcyBwYXJzZWQgYXMgZGQubW0ueXl5eSwgdGltZSBhcyBoaDptbSAoZG9uJ3QgZm9yZ2V0IHRoZQorIGxlYWRpbmcgemVybydzKTwvaT48L2Rpdj4NCisgICAgICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIjc2VuZEludml0YXRpb25IYXNoIj48Yj5zZW5kSW52aXRhdGlvbkhhc2g8L2I+PC9hPjxici8+DQorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb25fY29tbWVudCI+PGkgPkNyZWF0ZSBhIEludml0YXRpb24gaGFzaCBhbmQgb3B0aW9uYWxseSBzZW5kIGl0IGJ5IG1haWwgdGhlIEZyb20gdG8gRGF0ZQorIGlzIGFzIFN0cmluZyBhcyBzb21lIFNPQVAgbGlicmFyaWVzIGRvIG5vdCBhY2NlcHQgRGF0ZSBPYmplY3RzIGluIFNPQVAKKyBDYWxscyBEYXRlIGlzIHBhcnNlZCBhcyBkZC5tbS55eXl5LCB0aW1lIGFzIGhoOm1tIChkb24ndCBmb3JnZXQgdGhlCisgbGVhZGluZyB6ZXJvJ3MpPC9pPjwvZGl2Pg0KKyAgICAgICAgICAgICAgICA8L2Rpdj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzZW5kSW52aXRhdGlvbkhhc2hXaXRoRGF0ZU9iamVjdCI+PGI+c2VuZEludml0YXRpb25IYXNoV2l0aERhdGVPYmplY3Q8L2I+PC9hPjxici8+DQorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb25fY29tbWVudCI+PGkgPkNyZWF0ZSBhIEludml0YXRpb24gaGFzaCBhbmQgb3B0aW9uYWxseSBzZW5kIGl0IGJ5IG1haWwgdGhlIEZyb20gdG8gRGF0ZQorIGlzIGFzIFN0cmluZyBhcyBzb21lIFNPQVAgbGlicmFyaWVzIGRvIG5vdCBhY2NlcHQgRGF0ZSBPYmplY3RzIGluIFNPQVAKKyBDYWxscyBEYXRlIGlzIHBhcnNlZCBhcyBkZC5tbS55eXl5LCB0aW1lIGFzIGhoOm1tIChkb24ndCBmb3JnZXQgdGhlCisgbGVhZGluZyB6ZXJvJ3MpPC9pPjwvZGl2Pg0KKyAgICAgICAgICAgICAgICA8L2Rpdj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnZXRSb29tc1dpdGhDdXJyZW50VXNlcnNCeUxpc3QiPjxiPmdldFJvb21zV2l0aEN1cnJlbnRVc2Vyc0J5TGlzdDwvYj48L2E+PGJyLz4NCisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2aWdhdGlvbl9jb21tZW50Ij48aSA+UmV0dXJuIGEgUm9vbVJldHVybiBPYmplY3Qgd2l0aCBpbmZvcm1hdGlvbiBvZiB0aGUgY3VycmVudCB1c2VycyBvZiBhCisgY29uZmVyZW5jZSByb29tPC9pPjwvZGl2Pg0KKyAgICAgICAgICAgICAgICA8L2Rpdj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnZXRSb29tc1dpdGhDdXJyZW50VXNlcnNCeUxpc3RBbmRUeXBlIj48Yj5nZXRSb29tc1dpdGhDdXJyZW50VXNlcnNCeUxpc3RBbmRUeXBlPC9iPjwvYT48YnIvPg0KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uX2NvbW1lbnQiPjxpID5SZXR1cm4gYSBSb29tUmV0dXJuIE9iamVjdCB3aXRoIGluZm9ybWF0aW9uIG9mIHRoZSBjdXJyZW50IHVzZXJzIG9mIGEKKyBjb25mZXJlbmNlIHJvb20gd2l0aCBvcHRpb24gdG8gc2VhcmNoIGZvciBzcGVjaWFsIGV4dGVybmFsIHJvb20gdHlwZXM8L2k+PC9kaXY+DQorICAgICAgICAgICAgICAgIDwvZGl2Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2FkZFJvb21XaXRoTW9kZXJhdGlvbkFuZEV4dGVybmFsVHlwZUFuZFN0YXJ0RW5kIj48Yj5hZGRSb29tV2l0aE1vZGVyYXRpb25BbmRFeHRlcm5hbFR5cGVBbmRTdGFydEVuZDwvYj48L2E+PGJyLz4NCisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2aWdhdGlvbl9jb21tZW50Ij48aSA+QWRkcyBhIGNvbmZlcmVuY2Ugcm9vbSB0aGF0IGlzIG9ubHkgYXZhaWxhYmxlIGZvciBhIHBlcmlvZCBvZiB0aW1lPC9pPjwvZGl2Pg0KKyAgICAgICAgICAgICAgICA8L2Rpdj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNhZGRNZWV0aW5nTWVtYmVyUmVtaW5kVG9Sb29tIj48Yj5hZGRNZWV0aW5nTWVtYmVyUmVtaW5kVG9Sb29tPC9iPjwvYT48YnIvPg0KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uX2NvbW1lbnQiPjxpID5BZGQgYSBtZWV0aW5nIG1lbWJlciB0byBhIGNlcnRhaW4gcm9vbS4gVGhpcyBpcyB0aGUgc2FtZSBhcyBhZGRpbmcgYW4KKyBleHRlcm5hbCB1c2VyIHRvIGEgZXZlbnQgaW4gdGhlIGNhbGVuZGFyLjwvaT48L2Rpdj4NCisgICAgICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIjYWRkRXh0ZXJuYWxNZWV0aW5nTWVtYmVyUmVtaW5kVG9Sb29tIj48Yj5hZGRFeHRlcm5hbE1lZXRpbmdNZW1iZXJSZW1pbmRUb1Jvb208L2I+PC9hPjxici8+DQorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb25fY29tbWVudCI+PGkgPkFkZCBhIG1lZXRpbmcgbWVtYmVyIHRvIGEgY2VydGFpbiByb29tLiBUaGlzIGlzIHRoZSBzYW1lIGFzIGFkZGluZyBhbgorIGV4dGVybmFsIHVzZXIgdG8gYSBldmVudCBpbiB0aGUgY2FsZW5kYXIuIHdpdGggYSBjZXJ0YWluIHRpbWUgem9uZTwvaT48L2Rpdj4NCisgICAgICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIjY2xvc2VSb29tIj48Yj5jbG9zZVJvb208L2I+PC9hPjxici8+DQorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb25fY29tbWVudCI+PGkgPk1ldGhvZCB0byByZW1vdGVseSBjbG9zZSBvciBvcGVuIHJvb21zLiBJZiBhIHJvb20gaXMgY2xvc2VkIGFsbCB1c2VycworIGluc2lkZSB0aGUgcm9vbSBhbmQgYWxsIHVzZXJzIHRoYXQgdHJ5IHRvIGVudGVyIGl0IHdpbGwgYmUgcmVkaXJlY3RlZCB0bworIHRoZSByZWRpcmVjdFVSTCB0aGF0IGlzIGRlZmluZWQgaW4gdGhlIFJvb20tT2JqZWN0LgorIAorIFJldHVybnMgcG9zaXRpdmUgdmFsdWUgaWYgYXV0aGVudGljYXRpb24gd2FzIHN1Y2Nlc3NmdWwuPC9pPjwvZGl2Pg0KKyAgICAgICAgICAgICAgICA8L2Rpdj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNtb2RpZnlSb29tUGFyYW1ldGVyIj48Yj5tb2RpZnlSb29tUGFyYW1ldGVyPC9iPjwvYT48YnIvPg0KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uX2NvbW1lbnQiPjxpID5NZXRob2QgdG8gdXBkYXRlIGFyYml0cmFyeSByb29tIHBhcmFtZXRlci48L2k+PC9kaXY+DQorICAgICAgICAgICAgICAgIDwvZGl2Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KKwkgICANCisJICAgIDxoMz5NZXRob2RzIERldGFpbHMgaW4gUm9vbVNlcnZpY2U8L2gzPg0KKwkNCisJCQkJICAgIAkJICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kIj4NCisJCSAgICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kX2hlYWRlciI+DQorCQkgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjEwcHgiPg0KKyAgICAJCQk8YSBuYW1lPSJnZXRSb29tc1B1YmxpYyIgPjxiPmdldFJvb21zUHVibGljPC9iPjwvYT4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQkNCisgICAgCQkJTWV0aG9kOiA8aT5nZXRSb29tc1B1YmxpYyAoDQorICAgIAkJCSAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBTSUQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgTG9uZyByb29tdHlwZXNfaWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkpDQorICAgIAkJCTwvaT48YnIvPg0KKyAgICAJCQk8cD4NCisgICAgCQkJICBSZXR1cm5zIGFuIE9iamVjdCBvZiBUeXBlIFJvb21zTGlzdCB3aGljaCBjb250YWlucyBhIGxpc3Qgb2YKKyBSb29tLU9iamVjdHMuIEV2ZXJ5IFJvb20tT2JqZWN0IGNvbnRhaW5zIGEgUm9vbXR5cGUgYW5kIGFsbCBpbmZvcm1hdGlvbnMKKyBhYm91dCB0aGF0IFJvb20uIFRoZSBMaXN0IG9mIGN1cnJlbnQtdXNlcnMgaW4gdGhlIHJvb20gaXMgTnVsbCBpZiB5b3UgZ2V0CisgdGhlbSB2aWEgU09BUC4gVGhlIFJvb210eXBlIGNhbiBiZSAxIGZvciBjb25mZXJlbmNlIHJvb21zIG9yIDIgZm9yCisgYXVkaWVuY2Ugcm9vbXMuDQorICAgIAkJCTwvcD4NCisgICAgCQkJPHA+DQorICAgICAgICAgICAgICAgICAgUmV0dXJuIFR5cGU6IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnJvb20uUm9vbVtdDQorICAgICAgICAgICAgICAgIDwvcD4NCisgICAgCQkJPHA+UGFyYW1zOjwvcD4NCisgICAgCQkJICAgIAkJCQ0KKyAgICAJCQkJICAgIAkJCTx0YWJsZSBydWxlcz0iYWxsIiBib3JkZXI9IjEiPg0KKwkgICAgCQkJICAgPHRoZWFkPg0KKwkgICAgCQkJICAgPHRyPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPlR5cGU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPkZpZWxkbmFtZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iNDAwIiBhbGlnbj0ibGVmdCI+RGVzY3JpcHRpb248L3RoPg0KKwkgICAgCQkJICAgPC90cj4NCisJICAgIAkJCSAgIDwvdGhlYWQ+DQorCSAgICAJCQkgICA8dGJvZHk+DQorCSAgICAJCQkgICAJICAgIAkJCSAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5TSUQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIExvZ2dlZGluPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5yb29tdHlwZXNfaWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCisJICAgIAkJCTwvdGFibGU+DQorICAgIAkJCSAgICAJCQk8YnIvPg0KKyAgICAJCQlSRVNUIFNhbXBsZSBDYWxsL1VSTDo8YnIvPg0KKyAgICAJCQkgICAgCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1Jvb21TZXJ2aWNlL2dldFJvb21zUHVibGljP1NJRD1WQUxVRSZyb29tdHlwZXNfaWQ9VkFMVUUiPmh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvUm9vbVNlcnZpY2UvZ2V0Um9vbXNQdWJsaWM/U0lEPVZBTFVFJmFtcDtyb29tdHlwZXNfaWQ9VkFMVUU8L2E+DQorICAgIAkJICA8L2Rpdj4NCisgICAgCSAgIAkJCQkgICAgCQkgICAgICA8ZGl2IGNsYXNzPSJtZXRob2QiPg0KKwkJICAgICAgICA8ZGl2IGNsYXNzPSJtZXRob2RfaGVhZGVyIj4NCisJCSAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTBweCI+DQorICAgIAkJCTxhIG5hbWU9ImRlbGV0ZUZsdlJlY29yZGluZyIgPjxiPmRlbGV0ZUZsdlJlY29yZGluZzwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+ZGVsZXRlRmx2UmVjb3JkaW5nICgNCisgICAgCQkJICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIFNJRA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBMb25nIGZsdlJlY29yZGluZ0lkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJKQ0KKyAgICAJCQk8L2k+PGJyLz4NCisgICAgCQkJPHA+DQorICAgIAkJCSAgRGVsZXRlcyBhIGZsdiByZWNvcmRpbmcNCisgICAgCQkJPC9wPg0KKyAgICAJCQk8cD4NCisgICAgICAgICAgICAgICAgICBSZXR1cm4gVHlwZTogYm9vbGVhbg0KKyAgICAgICAgICAgICAgICA8L3A+DQorICAgIAkJCTxwPlBhcmFtczo8L3A+DQorICAgIAkJCSAgICAJCQkNCisgICAgCQkJCSAgICAJCQk8dGFibGUgcnVsZXM9ImFsbCIgYm9yZGVyPSIxIj4NCisJICAgIAkJCSAgIDx0aGVhZD4NCisJICAgIAkJCSAgIDx0cj4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5UeXBlPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5GaWVsZG5hbWU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjQwMCIgYWxpZ249ImxlZnQiPkRlc2NyaXB0aW9uPC90aD4NCisJICAgIAkJCSAgIDwvdHI+DQorCSAgICAJCQkgICA8L3RoZWFkPg0KKwkgICAgCQkJICAgPHRib2R5Pg0KKwkgICAgCQkJICAgCSAgICAJCQkgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+U0lEPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5UaGUgU0lEIG9mIHRoZSBVc2VyLiBUaGlzIFNJRCBtdXN0IGJlIG1hcmtlZCBhcyBMb2dnZWRpbjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJTG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+Zmx2UmVjb3JkaW5nSWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSBpZCBvZiB0aGUgcmVjb3JkaW5nPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KKwkgICAgCQkJPC90YWJsZT4NCisgICAgCQkJICAgIAkJCTxici8+DQorICAgIAkJCVJFU1QgU2FtcGxlIENhbGwvVVJMOjxici8+DQorICAgIAkJCSAgICAJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvUm9vbVNlcnZpY2UvZGVsZXRlRmx2UmVjb3JkaW5nP1NJRD1WQUxVRSZmbHZSZWNvcmRpbmdJZD1WQUxVRSI+aHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Sb29tU2VydmljZS9kZWxldGVGbHZSZWNvcmRpbmc/U0lEPVZBTFVFJmFtcDtmbHZSZWNvcmRpbmdJZD1WQUxVRTwvYT4NCisgICAgCQkgIDwvZGl2Pg0KKyAgICAJICAgCQkJCSAgICAJCSAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZCI+DQorCQkgICAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZF9oZWFkZXIiPg0KKwkJICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDoxMHB4Ij4NCisgICAgCQkJPGEgbmFtZT0iZ2V0Rmx2UmVjb3JkaW5nQnlFeHRlcm5hbFVzZXJJZCIgPjxiPmdldEZsdlJlY29yZGluZ0J5RXh0ZXJuYWxVc2VySWQ8L2I+PC9hPg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCQ0KKyAgICAJCQlNZXRob2Q6IDxpPmdldEZsdlJlY29yZGluZ0J5RXh0ZXJuYWxVc2VySWQgKA0KKyAgICAJCQkgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgU0lEDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBleHRlcm5hbFVzZXJJZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSkNCisgICAgCQkJPC9pPjxici8+DQorICAgIAkJCTxwPg0KKyAgICAJCQkgIEdldHMgYSBsaXN0IG9mIGZsdiByZWNvcmRpbmdzDQorICAgIAkJCTwvcD4NCisgICAgCQkJPHA+DQorICAgICAgICAgICAgICAgICAgUmV0dXJuIFR5cGU6IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmF4aXMuc2VydmljZXMuRkxWUmVjb3JkaW5nUmV0dXJuW10NCisgICAgICAgICAgICAgICAgPC9wPg0KKyAgICAJCQk8cD5QYXJhbXM6PC9wPg0KKyAgICAJCQkgICAgCQkJDQorICAgIAkJCQkgICAgCQkJPHRhYmxlIHJ1bGVzPSJhbGwiIGJvcmRlcj0iMSI+DQorCSAgICAJCQkgICA8dGhlYWQ+DQorCSAgICAJCQkgICA8dHI+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+VHlwZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+RmllbGRuYW1lPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSI0MDAiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvdGg+DQorCSAgICAJCQkgICA8L3RyPg0KKwkgICAgCQkJICAgPC90aGVhZD4NCisJICAgIAkJCSAgIDx0Ym9keT4NCisJICAgIAkJCSAgIAkgICAgCQkJICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlNJRDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgTG9nZ2VkaW48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+ZXh0ZXJuYWxVc2VySWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSBleHRlcm5hbFVzZXJJZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCisJICAgIAkJCTwvdGFibGU+DQorICAgIAkJCSAgICAJCQk8YnIvPg0KKyAgICAJCQlSRVNUIFNhbXBsZSBDYWxsL1VSTDo8YnIvPg0KKyAgICAJCQkgICAgCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1Jvb21TZXJ2aWNlL2dldEZsdlJlY29yZGluZ0J5RXh0ZXJuYWxVc2VySWQ/U0lEPVZBTFVFJmV4dGVybmFsVXNlcklkPVZBTFVFIj5odHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1Jvb21TZXJ2aWNlL2dldEZsdlJlY29yZGluZ0J5RXh0ZXJuYWxVc2VySWQ/U0lEPVZBTFVFJmFtcDtleHRlcm5hbFVzZXJJZD1WQUxVRTwvYT4NCisgICAgCQkgIDwvZGl2Pg0KKyAgICAJICAgCQkJCSAgICAJCSAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZCI+DQorCQkgICAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZF9oZWFkZXIiPg0KKwkJICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDoxMHB4Ij4NCisgICAgCQkJPGEgbmFtZT0iZ2V0Rmx2UmVjb3JkaW5nQnlFeHRlcm5hbFJvb21UeXBlQW5kQ3JlYXRvciIgPjxiPmdldEZsdlJlY29yZGluZ0J5RXh0ZXJuYWxSb29tVHlwZUFuZENyZWF0b3I8L2I+PC9hPg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCQ0KKyAgICAJCQlNZXRob2Q6IDxpPmdldEZsdlJlY29yZGluZ0J5RXh0ZXJuYWxSb29tVHlwZUFuZENyZWF0b3IgKA0KKyAgICAJCQkgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgU0lEDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBleHRlcm5hbFJvb21UeXBlDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIExvbmcgaW5zZXJ0ZWRCeQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSkNCisgICAgCQkJPC9pPjxici8+DQorICAgIAkJCTxwPg0KKyAgICAJCQkgIEdldHMgYSBsaXN0IG9mIGZsdiByZWNvcmRpbmdzDQorICAgIAkJCTwvcD4NCisgICAgCQkJPHA+DQorICAgICAgICAgICAgICAgICAgUmV0dXJuIFR5cGU6IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmF4aXMuc2VydmljZXMuRkxWUmVjb3JkaW5nUmV0dXJuW10NCisgICAgICAgICAgICAgICAgPC9wPg0KKyAgICAJCQk8cD5QYXJhbXM6PC9wPg0KKyAgICAJCQkgICAgCQkJDQorICAgIAkJCQkgICAgCQkJPHRhYmxlIHJ1bGVzPSJhbGwiIGJvcmRlcj0iMSI+DQorCSAgICAJCQkgICA8dGhlYWQ+DQorCSAgICAJCQkgICA8dHI+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+VHlwZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+RmllbGRuYW1lPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSI0MDAiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvdGg+DQorCSAgICAJCQkgICA8L3RyPg0KKwkgICAgCQkJICAgPC90aGVhZD4NCisJICAgIAkJCSAgIDx0Ym9keT4NCisJICAgIAkJCSAgIAkgICAgCQkJICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlNJRDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgTG9nZ2VkaW48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+ZXh0ZXJuYWxSb29tVHlwZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+ZXh0ZXJuYWxSb29tVHlwZSBzcGVjaWZpZWQgd2hlbiBjcmVhdGluZyB0aGUgcm9vbTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJTG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aW5zZXJ0ZWRCeTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGhlIHVzZXJJZCB0aGF0IGNyZWF0ZWQgdGhlIHJlY29yZGluZzwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCisJICAgIAkJCTwvdGFibGU+DQorICAgIAkJCSAgICAJCQk8YnIvPg0KKyAgICAJCQlSRVNUIFNhbXBsZSBDYWxsL1VSTDo8YnIvPg0KKyAgICAJCQkgICAgCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvUm9vbVNlcnZpY2UvZ2V0Rmx2UmVjb3JkaW5nQnlFeHRlcm5hbFJvb21UeXBlQW5kQ3JlYXRvcj9TSUQ9VkFMVUUmZXh0ZXJuYWxSb29tVHlwZT1WQUxVRSZpbnNlcnRlZEJ5PVZBTFVFIj5odHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1Jvb21TZXJ2aWNlL2dldEZsdlJlY29yZGluZ0J5RXh0ZXJuYWxSb29tVHlwZUFuZENyZWF0b3I/U0lEPVZBTFVFJmFtcDtleHRlcm5hbFJvb21UeXBlPVZBTFVFJmFtcDtpbnNlcnRlZEJ5PVZBTFVFPC9hPg0KKyAgICAJCSAgPC9kaXY+DQorICAgIAkgICAJCQkJICAgIAkJICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kIj4NCisJCSAgICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kX2hlYWRlciI+DQorCQkgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjEwcHgiPg0KKyAgICAJCQk8YSBuYW1lPSJnZXRGbHZSZWNvcmRpbmdCeUV4dGVybmFsUm9vbVR5cGVCeUxpc3QiID48Yj5nZXRGbHZSZWNvcmRpbmdCeUV4dGVybmFsUm9vbVR5cGVCeUxpc3Q8L2I+PC9hPg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCQ0KKyAgICAJCQlNZXRob2Q6IDxpPmdldEZsdlJlY29yZGluZ0J5RXh0ZXJuYWxSb29tVHlwZUJ5TGlzdCAoDQorICAgIAkJCSAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBTSUQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGV4dGVybmFsUm9vbVR5cGUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkpDQorICAgIAkJCTwvaT48YnIvPg0KKyAgICAJCQk8cD4NCisgICAgCQkJICBHZXRzIGEgbGlzdCBvZiBmbHYgcmVjb3JkaW5ncw0KKyAgICAJCQk8L3A+DQorICAgIAkJCTxwPg0KKyAgICAgICAgICAgICAgICAgIFJldHVybiBUeXBlOiBqYXZhLnV0aWwuTGlzdA0KKyAgICAgICAgICAgICAgICA8L3A+DQorICAgIAkJCTxwPlBhcmFtczo8L3A+DQorICAgIAkJCSAgICAJCQkNCisgICAgCQkJCSAgICAJCQk8dGFibGUgcnVsZXM9ImFsbCIgYm9yZGVyPSIxIj4NCisJICAgIAkJCSAgIDx0aGVhZD4NCisJICAgIAkJCSAgIDx0cj4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5UeXBlPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5GaWVsZG5hbWU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjQwMCIgYWxpZ249ImxlZnQiPkRlc2NyaXB0aW9uPC90aD4NCisJICAgIAkJCSAgIDwvdHI+DQorCSAgICAJCQkgICA8L3RoZWFkPg0KKwkgICAgCQkJICAgPHRib2R5Pg0KKwkgICAgCQkJICAgCSAgICAJCQkgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+U0lEPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5UaGUgU0lEIG9mIHRoZSBVc2VyLiBUaGlzIFNJRCBtdXN0IGJlIG1hcmtlZCBhcyBMb2dnZWRpbjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5leHRlcm5hbFJvb21UeXBlPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5leHRlcm5hbFJvb21UeXBlIHNwZWNpZmllZCB3aGVuIGNyZWF0aW5nIHRoZSByb29tPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KKwkgICAgCQkJPC90YWJsZT4NCisgICAgCQkJICAgIAkJCTxici8+DQorICAgIAkJCVJFU1QgU2FtcGxlIENhbGwvVVJMOjxici8+DQorICAgIAkJCSAgICAJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvUm9vbVNlcnZpY2UvZ2V0Rmx2UmVjb3JkaW5nQnlFeHRlcm5hbFJvb21UeXBlQnlMaXN0P1NJRD1WQUxVRSZleHRlcm5hbFJvb21UeXBlPVZBTFVFIj5odHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1Jvb21TZXJ2aWNlL2dldEZsdlJlY29yZGluZ0J5RXh0ZXJuYWxSb29tVHlwZUJ5TGlzdD9TSUQ9VkFMVUUmYW1wO2V4dGVybmFsUm9vbVR5cGU9VkFMVUU8L2E+DQorICAgIAkJICA8L2Rpdj4NCisgICAgCSAgIAkJCQkgICAgCQkgICAgICA8ZGl2IGNsYXNzPSJtZXRob2QiPg0KKwkJICAgICAgICA8ZGl2IGNsYXNzPSJtZXRob2RfaGVhZGVyIj4NCisJCSAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTBweCI+DQorICAgIAkJCTxhIG5hbWU9ImdldEZsdlJlY29yZGluZ0J5RXh0ZXJuYWxSb29tVHlwZSIgPjxiPmdldEZsdlJlY29yZGluZ0J5RXh0ZXJuYWxSb29tVHlwZTwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+Z2V0Rmx2UmVjb3JkaW5nQnlFeHRlcm5hbFJvb21UeXBlICgNCisgICAgCQkJICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIFNJRA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgZXh0ZXJuYWxSb29tVHlwZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSkNCisgICAgCQkJPC9pPjxici8+DQorICAgIAkJCTxwPg0KKyAgICAJCQkgIEdldHMgYSBsaXN0IG9mIGZsdiByZWNvcmRpbmdzDQorICAgIAkJCTwvcD4NCisgICAgCQkJPHA+DQorICAgICAgICAgICAgICAgICAgUmV0dXJuIFR5cGU6IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmZsdnJlY29yZC5GbHZSZWNvcmRpbmdbXQ0KKyAgICAgICAgICAgICAgICA8L3A+DQorICAgIAkJCTxwPlBhcmFtczo8L3A+DQorICAgIAkJCSAgICAJCQkNCisgICAgCQkJCSAgICAJCQk8dGFibGUgcnVsZXM9ImFsbCIgYm9yZGVyPSIxIj4NCisJICAgIAkJCSAgIDx0aGVhZD4NCisJICAgIAkJCSAgIDx0cj4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5UeXBlPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5GaWVsZG5hbWU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjQwMCIgYWxpZ249ImxlZnQiPkRlc2NyaXB0aW9uPC90aD4NCisJICAgIAkJCSAgIDwvdHI+DQorCSAgICAJCQkgICA8L3RoZWFkPg0KKwkgICAgCQkJICAgPHRib2R5Pg0KKwkgICAgCQkJICAgCSAgICAJCQkgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+U0lEPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5UaGUgU0lEIG9mIHRoZSBVc2VyLiBUaGlzIFNJRCBtdXN0IGJlIG1hcmtlZCBhcyBMb2dnZWRpbjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5leHRlcm5hbFJvb21UeXBlPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5leHRlcm5hbFJvb21UeXBlIHNwZWNpZmllZCB3aGVuIGNyZWF0aW5nIHRoZSByb29tPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KKwkgICAgCQkJPC90YWJsZT4NCisgICAgCQkJICAgIAkJCTxici8+DQorICAgIAkJCVJFU1QgU2FtcGxlIENhbGwvVVJMOjxici8+DQorICAgIAkJCSAgICAJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvUm9vbVNlcnZpY2UvZ2V0Rmx2UmVjb3JkaW5nQnlFeHRlcm5hbFJvb21UeXBlP1NJRD1WQUxVRSZleHRlcm5hbFJvb21UeXBlPVZBTFVFIj5odHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1Jvb21TZXJ2aWNlL2dldEZsdlJlY29yZGluZ0J5RXh0ZXJuYWxSb29tVHlwZT9TSUQ9VkFMVUUmYW1wO2V4dGVybmFsUm9vbVR5cGU9VkFMVUU8L2E+DQorICAgIAkJICA8L2Rpdj4NCisgICAgCSAgIAkJCQkgICAgCQkgICAgICA8ZGl2IGNsYXNzPSJtZXRob2QiPg0KKwkJICAgICAgICA8ZGl2IGNsYXNzPSJtZXRob2RfaGVhZGVyIj4NCisJCSAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTBweCI+DQorICAgIAkJCTxhIG5hbWU9ImdldEZsdlJlY29yZGluZ0J5Um9vbUlkIiA+PGI+Z2V0Rmx2UmVjb3JkaW5nQnlSb29tSWQ8L2I+PC9hPg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCQ0KKyAgICAJCQlNZXRob2Q6IDxpPmdldEZsdlJlY29yZGluZ0J5Um9vbUlkICgNCisgICAgCQkJICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIFNJRA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBMb25nIHJvb21JZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSkNCisgICAgCQkJPC9pPjxici8+DQorICAgIAkJCTxwPg0KKyAgICAJCQkgIEdldCBsaXN0IG9mIHJlY29yZGluZ3MNCisgICAgCQkJPC9wPg0KKyAgICAJCQk8cD4NCisgICAgICAgICAgICAgICAgICBSZXR1cm4gVHlwZTogb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuZmx2cmVjb3JkLkZsdlJlY29yZGluZ1tdDQorICAgICAgICAgICAgICAgIDwvcD4NCisgICAgCQkJPHA+UGFyYW1zOjwvcD4NCisgICAgCQkJICAgIAkJCQ0KKyAgICAJCQkJICAgIAkJCTx0YWJsZSBydWxlcz0iYWxsIiBib3JkZXI9IjEiPg0KKwkgICAgCQkJICAgPHRoZWFkPg0KKwkgICAgCQkJICAgPHRyPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPlR5cGU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPkZpZWxkbmFtZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iNDAwIiBhbGlnbj0ibGVmdCI+RGVzY3JpcHRpb248L3RoPg0KKwkgICAgCQkJICAgPC90cj4NCisJICAgIAkJCSAgIDwvdGhlYWQ+DQorCSAgICAJCQkgICA8dGJvZHk+DQorCSAgICAJCQkgICAJICAgIAkJCSAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5TSUQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIExvZ2dlZGluPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5yb29tSWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSByb29tIGlkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KKwkgICAgCQkJPC90YWJsZT4NCisgICAgCQkJICAgIAkJCTxici8+DQorICAgIAkJCVJFU1QgU2FtcGxlIENhbGwvVVJMOjxici8+DQorICAgIAkJCSAgICAJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvUm9vbVNlcnZpY2UvZ2V0Rmx2UmVjb3JkaW5nQnlSb29tSWQ/U0lEPVZBTFVFJnJvb21JZD1WQUxVRSI+aHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Sb29tU2VydmljZS9nZXRGbHZSZWNvcmRpbmdCeVJvb21JZD9TSUQ9VkFMVUUmYW1wO3Jvb21JZD1WQUxVRTwvYT4NCisgICAgCQkgIDwvZGl2Pg0KKyAgICAJICAgCQkJCSAgICAJCSAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZCI+DQorCQkgICAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZF9oZWFkZXIiPg0KKwkJICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDoxMHB4Ij4NCisgICAgCQkJPGEgbmFtZT0iZ2V0Um9vbVR5cGVzIiA+PGI+Z2V0Um9vbVR5cGVzPC9iPjwvYT4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQkNCisgICAgCQkJTWV0aG9kOiA8aT5nZXRSb29tVHlwZXMgKA0KKyAgICAJCQkgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgU0lEDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJKQ0KKyAgICAJCQk8L2k+PGJyLz4NCisgICAgCQkJPHA+DQorICAgIAkJCSAgTGlzdCBvZiBhdmFpbGFibGUgcm9vbSB0eXBlcw0KKyAgICAJCQk8L3A+DQorICAgIAkJCTxwPg0KKyAgICAgICAgICAgICAgICAgIFJldHVybiBUeXBlOiBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tLlJvb21UeXBlW10NCisgICAgICAgICAgICAgICAgPC9wPg0KKyAgICAJCQk8cD5QYXJhbXM6PC9wPg0KKyAgICAJCQkgICAgCQkJDQorICAgIAkJCQkgICAgCQkJPHRhYmxlIHJ1bGVzPSJhbGwiIGJvcmRlcj0iMSI+DQorCSAgICAJCQkgICA8dGhlYWQ+DQorCSAgICAJCQkgICA8dHI+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+VHlwZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+RmllbGRuYW1lPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSI0MDAiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvdGg+DQorCSAgICAJCQkgICA8L3RyPg0KKwkgICAgCQkJICAgPC90aGVhZD4NCisJICAgIAkJCSAgIDx0Ym9keT4NCisJICAgIAkJCSAgIAkgICAgCQkJICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlNJRDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgTG9nZ2VkaW48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQorCSAgICAJCQk8L3RhYmxlPg0KKyAgICAJCQkgICAgCQkJPGJyLz4NCisgICAgCQkJUkVTVCBTYW1wbGUgQ2FsbC9VUkw6PGJyLz4NCisgICAgCQkJICAgIAkJCSAgICAJCQkJICAgIAkJCQkJCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvUm9vbVNlcnZpY2UvZ2V0Um9vbVR5cGVzP1NJRD1WQUxVRSI+aHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Sb29tU2VydmljZS9nZXRSb29tVHlwZXM/U0lEPVZBTFVFPC9hPg0KKyAgICAJCSAgPC9kaXY+DQorICAgIAkgICAJCQkJICAgIAkJICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kIj4NCisJCSAgICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kX2hlYWRlciI+DQorCQkgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjEwcHgiPg0KKyAgICAJCQk8YSBuYW1lPSJnZXRSb29tQ291bnRlcnMiID48Yj5nZXRSb29tQ291bnRlcnM8L2I+PC9hPg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCQ0KKyAgICAJCQlNZXRob2Q6IDxpPmdldFJvb21Db3VudGVycyAoDQorICAgIAkJCSAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBTSUQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgSW50ZWdlciByb29tSWQxDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEludGVnZXIgcm9vbUlkMg0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBJbnRlZ2VyIHJvb21JZDMNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgSW50ZWdlciByb29tSWQ0DQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEludGVnZXIgcm9vbUlkNQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBJbnRlZ2VyIHJvb21JZDYNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgSW50ZWdlciByb29tSWQ3DQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEludGVnZXIgcm9vbUlkOA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBJbnRlZ2VyIHJvb21JZDkNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgSW50ZWdlciByb29tSWQxMA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSkNCisgICAgCQkJPC9pPjxici8+DQorICAgIAkJCTxwPg0KKyAgICAJCQkgIFJldHVybnMgY3VycmVudCB1c2VycyBmb3Igcm9vbXMgaWRzDQorICAgIAkJCTwvcD4NCisgICAgCQkJPHA+DQorICAgICAgICAgICAgICAgICAgUmV0dXJuIFR5cGU6IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmF4aXMuc2VydmljZXMuUm9vbUNvdW50QmVhbltdDQorICAgICAgICAgICAgICAgIDwvcD4NCisgICAgCQkJPHA+UGFyYW1zOjwvcD4NCisgICAgCQkJICAgIAkJCQ0KKyAgICAJCQkJICAgIAkJCTx0YWJsZSBydWxlcz0iYWxsIiBib3JkZXI9IjEiPg0KKwkgICAgCQkJICAgPHRoZWFkPg0KKwkgICAgCQkJICAgPHRyPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPlR5cGU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPkZpZWxkbmFtZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iNDAwIiBhbGlnbj0ibGVmdCI+RGVzY3JpcHRpb248L3RoPg0KKwkgICAgCQkJICAgPC90cj4NCisJICAgIAkJCSAgIDwvdGhlYWQ+DQorCSAgICAJCQkgICA8dGJvZHk+DQorCSAgICAJCQkgICAJICAgIAkJCSAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5TSUQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIExvZ2dlZGluPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlJbnRlZ2VyDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5yb29tSWQxPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUludGVnZXINCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnJvb21JZDI8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJSW50ZWdlcg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+cm9vbUlkMzwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlJbnRlZ2VyDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5yb29tSWQ0PC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUludGVnZXINCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnJvb21JZDU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJSW50ZWdlcg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+cm9vbUlkNjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlJbnRlZ2VyDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5yb29tSWQ3PC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUludGVnZXINCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnJvb21JZDg8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJSW50ZWdlcg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+cm9vbUlkOTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlJbnRlZ2VyDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5yb29tSWQxMDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KKwkgICAgCQkJPC90YWJsZT4NCisgICAgCQkJICAgIAkJCTxici8+DQorICAgIAkJCVJFU1QgU2FtcGxlIENhbGwvVVJMOjxici8+DQorICAgIAkJCSAgICAJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvUm9vbVNlcnZpY2UvZ2V0Um9vbUNvdW50ZXJzP1NJRD1WQUxVRSZyb29tSWQxPVZBTFVFJnJvb21JZDI9VkFMVUUmcm9vbUlkMz1WQUxVRSZyb29tSWQ0PVZBTFVFJnJvb21JZDU9VkFMVUUmcm9vbUlkNj1WQUxVRSZyb29tSWQ3PVZBTFVFJnJvb21JZDg9VkFMVUUmcm9vbUlkOT1WQUxVRSZyb29tSWQxMD1WQUxVRSI+aHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Sb29tU2VydmljZS9nZXRSb29tQ291bnRlcnM/U0lEPVZBTFVFJmFtcDtyb29tSWQxPVZBTFVFJmFtcDtyb29tSWQyPVZBTFVFJmFtcDtyb29tSWQzPVZBTFVFJmFtcDtyb29tSWQ0PVZBTFVFJmFtcDtyb29tSWQ1PVZBTFVFJmFtcDtyb29tSWQ2PVZBTFVFJmFtcDtyb29tSWQ3PVZBTFVFJmFtcDtyb29tSWQ4PVZBTFVFJmFtcDtyb29tSWQ5PVZBTFVFJmFtcDtyb29tSWQxMD1WQUxVRTwvYT4NCisgICAgCQkgIDwvZGl2Pg0KKyAgICAJICAgCQkJCSAgICAJCSAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZCI+DQorCQkgICAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZF9oZWFkZXIiPg0KKwkJICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDoxMHB4Ij4NCisgICAgCQkJPGEgbmFtZT0iZ2V0Um9vbUJ5SWQiID48Yj5nZXRSb29tQnlJZDwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+Z2V0Um9vbUJ5SWQgKA0KKyAgICAJCQkgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgU0lEDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIGxvbmcgcm9vbXNfaWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkpDQorICAgIAkJCTwvaT48YnIvPg0KKyAgICAJCQk8cD4NCisgICAgCQkJICByZXR1cm5zIGEgY29uZmVyZW5jZSByb29tIG9iamVjdA0KKyAgICAJCQk8L3A+DQorICAgIAkJCTxwPg0KKyAgICAgICAgICAgICAgICAgIFJldHVybiBUeXBlOiBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tLlJvb20NCisgICAgICAgICAgICAgICAgPC9wPg0KKyAgICAJCQk8cD5QYXJhbXM6PC9wPg0KKyAgICAJCQkgICAgCQkJDQorICAgIAkJCQkgICAgCQkJPHRhYmxlIHJ1bGVzPSJhbGwiIGJvcmRlcj0iMSI+DQorCSAgICAJCQkgICA8dGhlYWQ+DQorCSAgICAJCQkgICA8dHI+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+VHlwZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+RmllbGRuYW1lPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSI0MDAiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvdGg+DQorCSAgICAJCQkgICA8L3RyPg0KKwkgICAgCQkJICAgPC90aGVhZD4NCisJICAgIAkJCSAgIDx0Ym9keT4NCisJICAgIAkJCSAgIAkgICAgCQkJICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlNJRDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgTG9nZ2VkaW48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCWxvbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnJvb21zX2lkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aGUgcm9vbSBpZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCisJICAgIAkJCTwvdGFibGU+DQorICAgIAkJCSAgICAJCQk8YnIvPg0KKyAgICAJCQlSRVNUIFNhbXBsZSBDYWxsL1VSTDo8YnIvPg0KKyAgICAJCQkgICAgCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1Jvb21TZXJ2aWNlL2dldFJvb21CeUlkP1NJRD1WQUxVRSZyb29tc19pZD1WQUxVRSI+aHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Sb29tU2VydmljZS9nZXRSb29tQnlJZD9TSUQ9VkFMVUUmYW1wO3Jvb21zX2lkPVZBTFVFPC9hPg0KKyAgICAJCSAgPC9kaXY+DQorICAgIAkgICAJCQkJICAgIAkJICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kIj4NCisJCSAgICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kX2hlYWRlciI+DQorCQkgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjEwcHgiPg0KKyAgICAJCQk8YSBuYW1lPSJnZXRSb29tV2l0aEN1cnJlbnRVc2Vyc0J5SWQiID48Yj5nZXRSb29tV2l0aEN1cnJlbnRVc2Vyc0J5SWQ8L2I+PC9hPg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCQ0KKyAgICAJCQlNZXRob2Q6IDxpPmdldFJvb21XaXRoQ3VycmVudFVzZXJzQnlJZCAoDQorICAgIAkJCSAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBTSUQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgbG9uZyByb29tc19pZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSkNCisgICAgCQkJPC9pPjxici8+DQorICAgIAkJCTxwPg0KKyAgICAJCQkgIA0KKyAgICAJCQk8L3A+DQorICAgIAkJCTxwPg0KKyAgICAgICAgICAgICAgICAgIFJldHVybiBUeXBlOiBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tLlJvb20NCisgICAgICAgICAgICAgICAgPC9wPg0KKyAgICAJCQk8cD5QYXJhbXM6PC9wPg0KKyAgICAJCQkgICAgCQkJDQorICAgIAkJCQkgICAgCQkJPHRhYmxlIHJ1bGVzPSJhbGwiIGJvcmRlcj0iMSI+DQorCSAgICAJCQkgICA8dGhlYWQ+DQorCSAgICAJCQkgICA8dHI+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+VHlwZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+RmllbGRuYW1lPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSI0MDAiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvdGg+DQorCSAgICAJCQkgICA8L3RyPg0KKwkgICAgCQkJICAgPC90aGVhZD4NCisJICAgIAkJCSAgIDx0Ym9keT4NCisJICAgIAkJCSAgIAkgICAgCQkJICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlNJRDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgTG9nZ2VkaW48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCWxvbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnJvb21zX2lkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQorCSAgICAJCQk8L3RhYmxlPg0KKyAgICAJCQkgICAgCQkJPGJyLz4NCisgICAgCQkJUkVTVCBTYW1wbGUgQ2FsbC9VUkw6PGJyLz4NCisgICAgCQkJICAgIAkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Sb29tU2VydmljZS9nZXRSb29tV2l0aEN1cnJlbnRVc2Vyc0J5SWQ/U0lEPVZBTFVFJnJvb21zX2lkPVZBTFVFIj5odHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1Jvb21TZXJ2aWNlL2dldFJvb21XaXRoQ3VycmVudFVzZXJzQnlJZD9TSUQ9VkFMVUUmYW1wO3Jvb21zX2lkPVZBTFVFPC9hPg0KKyAgICAJCSAgPC9kaXY+DQorICAgIAkgICAJCQkJICAgIAkJICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kIj4NCisJCSAgICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kX2hlYWRlciI+DQorCQkgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjEwcHgiPg0KKyAgICAJCQk8YSBuYW1lPSJnZXRSb29tV2l0aENsaWVudE9iamVjdHNCeUlkIiA+PGI+Z2V0Um9vbVdpdGhDbGllbnRPYmplY3RzQnlJZDwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+Z2V0Um9vbVdpdGhDbGllbnRPYmplY3RzQnlJZCAoDQorICAgIAkJCSAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBTSUQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgbG9uZyByb29tc19pZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSkNCisgICAgCQkJPC9pPjxici8+DQorICAgIAkJCTxwPg0KKyAgICAJCQkgIFJldHVybnMgYSBvYmplY3Qgb2YgdHlwZSBSb29tUmV0dXJuDQorICAgIAkJCTwvcD4NCisgICAgCQkJPHA+DQorICAgICAgICAgICAgICAgICAgUmV0dXJuIFR5cGU6IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmF4aXMuc2VydmljZXMuUm9vbVJldHVybg0KKyAgICAgICAgICAgICAgICA8L3A+DQorICAgIAkJCTxwPlBhcmFtczo8L3A+DQorICAgIAkJCSAgICAJCQkNCisgICAgCQkJCSAgICAJCQk8dGFibGUgcnVsZXM9ImFsbCIgYm9yZGVyPSIxIj4NCisJICAgIAkJCSAgIDx0aGVhZD4NCisJICAgIAkJCSAgIDx0cj4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5UeXBlPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5GaWVsZG5hbWU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjQwMCIgYWxpZ249ImxlZnQiPkRlc2NyaXB0aW9uPC90aD4NCisJICAgIAkJCSAgIDwvdHI+DQorCSAgICAJCQkgICA8L3RoZWFkPg0KKwkgICAgCQkJICAgPHRib2R5Pg0KKwkgICAgCQkJICAgCSAgICAJCQkgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+U0lEPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5UaGUgU0lEIG9mIHRoZSBVc2VyLiBUaGlzIFNJRCBtdXN0IGJlIG1hcmtlZCBhcyBMb2dnZWRpbjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJbG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+cm9vbXNfaWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCisJICAgIAkJCTwvdGFibGU+DQorICAgIAkJCSAgICAJCQk8YnIvPg0KKyAgICAJCQlSRVNUIFNhbXBsZSBDYWxsL1VSTDo8YnIvPg0KKyAgICAJCQkgICAgCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1Jvb21TZXJ2aWNlL2dldFJvb21XaXRoQ2xpZW50T2JqZWN0c0J5SWQ/U0lEPVZBTFVFJnJvb21zX2lkPVZBTFVFIj5odHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1Jvb21TZXJ2aWNlL2dldFJvb21XaXRoQ2xpZW50T2JqZWN0c0J5SWQ/U0lEPVZBTFVFJmFtcDtyb29tc19pZD1WQUxVRTwvYT4NCisgICAgCQkgIDwvZGl2Pg0KKyAgICAJICAgCQkJCSAgICAJCSAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZCI+DQorCQkgICAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZF9oZWFkZXIiPg0KKwkJICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDoxMHB4Ij4NCisgICAgCQkJPGEgbmFtZT0iZ2V0Um9vbXMiID48Yj5nZXRSb29tczwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+Z2V0Um9vbXMgKA0KKyAgICAJCQkgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgU0lEDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIGludCBzdGFydA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBpbnQgbWF4DQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBvcmRlcmJ5DQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIGJvb2xlYW4gYXNjDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJKQ0KKyAgICAJCQk8L2k+PGJyLz4NCisgICAgCQkJPHA+DQorICAgIAkJCSAgUmV0dXJucyBhIExpc3Qgb2YgT2JqZWN0cyBvZiBSb29tcyBZb3UgY2FuIHVzZSAibmFtZSIgYXMgdmFsdWUgZm9yCisgb3JkZXJieSBvciByb29tc19pZA0KKyAgICAJCQk8L3A+DQorICAgIAkJCTxwPg0KKyAgICAgICAgICAgICAgICAgIFJldHVybiBUeXBlOiBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJlYW5zLmJhc2ljLlNlYXJjaFJlc3VsdA0KKyAgICAgICAgICAgICAgICA8L3A+DQorICAgIAkJCTxwPlBhcmFtczo8L3A+DQorICAgIAkJCSAgICAJCQkNCisgICAgCQkJCSAgICAJCQk8dGFibGUgcnVsZXM9ImFsbCIgYm9yZGVyPSIxIj4NCisJICAgIAkJCSAgIDx0aGVhZD4NCisJICAgIAkJCSAgIDx0cj4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5UeXBlPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5GaWVsZG5hbWU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjQwMCIgYWxpZ249ImxlZnQiPkRlc2NyaXB0aW9uPC90aD4NCisJICAgIAkJCSAgIDwvdHI+DQorCSAgICAJCQkgICA8L3RoZWFkPg0KKwkgICAgCQkJICAgPHRib2R5Pg0KKwkgICAgCQkJICAgCSAgICAJCQkgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+U0lEPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5UaGUgU0lEIG9mIHRoZSBVc2VyLiBUaGlzIFNJRCBtdXN0IGJlIG1hcmtlZCBhcyBMb2dnZWRpbjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJaW50DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5zdGFydDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIGlkIHlvdSB3YW50IHRvIHN0YXJ0PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlpbnQNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPm1heDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIG1heGltdW0geW91IHdhbnQgdG8gZ2V0PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPm9yZGVyYnk8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlRoZSBjb2x1bW4gaXQgd2lsbCBiZSBvcmRlcmVkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlib29sZWFuDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hc2M8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPkFzYyBvciBEZXNjIHNvcnQgb3JkZXJpbmc8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQorCSAgICAJCQk8L3RhYmxlPg0KKyAgICAJCQkgICAgCQkJPGJyLz4NCisgICAgCQkJUkVTVCBTYW1wbGUgQ2FsbC9VUkw6PGJyLz4NCisgICAgCQkJICAgIAkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Sb29tU2VydmljZS9nZXRSb29tcz9TSUQ9VkFMVUUmc3RhcnQ9VkFMVUUmbWF4PVZBTFVFJm9yZGVyYnk9VkFMVUUmYXNjPVZBTFVFIj5odHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1Jvb21TZXJ2aWNlL2dldFJvb21zP1NJRD1WQUxVRSZhbXA7c3RhcnQ9VkFMVUUmYW1wO21heD1WQUxVRSZhbXA7b3JkZXJieT1WQUxVRSZhbXA7YXNjPVZBTFVFPC9hPg0KKyAgICAJCSAgPC9kaXY+DQorICAgIAkgICAJCQkJICAgIAkJICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kIj4NCisJCSAgICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kX2hlYWRlciI+DQorCQkgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjEwcHgiPg0KKyAgICAJCQk8YSBuYW1lPSJnZXRSb29tc1dpdGhDdXJyZW50VXNlcnMiID48Yj5nZXRSb29tc1dpdGhDdXJyZW50VXNlcnM8L2I+PC9hPg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCQ0KKyAgICAJCQlNZXRob2Q6IDxpPmdldFJvb21zV2l0aEN1cnJlbnRVc2VycyAoDQorICAgIAkJCSAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBTSUQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgaW50IHN0YXJ0DQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIGludCBtYXgNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIG9yZGVyYnkNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgYm9vbGVhbiBhc2MNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkpDQorICAgIAkJCTwvaT48YnIvPg0KKyAgICAJCQk8cD4NCisgICAgCQkJICBSZXR1cm5zIGEgTGlzdCBvZiBPYmplY3RzIG9mIFJvb21zIFlvdSBjYW4gdXNlICJuYW1lIiBhcyB2YWx1ZSBmb3IKKyBvcmRlcmJ5IG9yIHJvb21zX2lkLiBJdCBhbHNvIGZpbGxzIHRoZSBhdHRyaWJ1dGUgY3VycmVudFVzZXJzIGluIHRoZQorIFJvb20tT2JqZWN0DQorICAgIAkJCTwvcD4NCisgICAgCQkJPHA+DQorICAgICAgICAgICAgICAgICAgUmV0dXJuIFR5cGU6IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmVhbnMuYmFzaWMuU2VhcmNoUmVzdWx0DQorICAgICAgICAgICAgICAgIDwvcD4NCisgICAgCQkJPHA+UGFyYW1zOjwvcD4NCisgICAgCQkJICAgIAkJCQ0KKyAgICAJCQkJICAgIAkJCTx0YWJsZSBydWxlcz0iYWxsIiBib3JkZXI9IjEiPg0KKwkgICAgCQkJICAgPHRoZWFkPg0KKwkgICAgCQkJICAgPHRyPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPlR5cGU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPkZpZWxkbmFtZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iNDAwIiBhbGlnbj0ibGVmdCI+RGVzY3JpcHRpb248L3RoPg0KKwkgICAgCQkJICAgPC90cj4NCisJICAgIAkJCSAgIDwvdGhlYWQ+DQorCSAgICAJCQkgICA8dGJvZHk+DQorCSAgICAJCQkgICAJICAgIAkJCSAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5TSUQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIExvZ2dlZGluPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlpbnQNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnN0YXJ0PC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5UaGUgaWQgeW91IHdhbnQgdG8gc3RhcnQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCWludA0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+bWF4PC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5UaGUgbWF4aW11bSB5b3Ugd2FudCB0byBnZXQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+b3JkZXJieTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIGNvbHVtbiBpdCB3aWxsIGJlIG9yZGVyZWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCWJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFzYzwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+QXNjIG9yIERlc2Mgc29ydCBvcmRlcmluZzwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCisJICAgIAkJCTwvdGFibGU+DQorICAgIAkJCSAgICAJCQk8YnIvPg0KKyAgICAJCQlSRVNUIFNhbXBsZSBDYWxsL1VSTDo8YnIvPg0KKyAgICAJCQkgICAgCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1Jvb21TZXJ2aWNlL2dldFJvb21zV2l0aEN1cnJlbnRVc2Vycz9TSUQ9VkFMVUUmc3RhcnQ9VkFMVUUmbWF4PVZBTFVFJm9yZGVyYnk9VkFMVUUmYXNjPVZBTFVFIj5odHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1Jvb21TZXJ2aWNlL2dldFJvb21zV2l0aEN1cnJlbnRVc2Vycz9TSUQ9VkFMVUUmYW1wO3N0YXJ0PVZBTFVFJmFtcDttYXg9VkFMVUUmYW1wO29yZGVyYnk9VkFMVUUmYW1wO2FzYz1WQUxVRTwvYT4NCisgICAgCQkgIDwvZGl2Pg0KKyAgICAJICAgCQkJCSAgICAJCSAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZCI+DQorCQkgICAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZF9oZWFkZXIiPg0KKwkJICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDoxMHB4Ij4NCisgICAgCQkJPGEgbmFtZT0iYWRkUm9vbSIgPjxiPmFkZFJvb208L2I+PC9hPg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCQ0KKyAgICAJCQlNZXRob2Q6IDxpPmFkZFJvb20gKA0KKyAgICAJCQkgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgU0lEDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBuYW1lDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIExvbmcgcm9vbXR5cGVzX2lkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBjb21tZW50DQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIExvbmcgbnVtYmVyT2ZQYXJ0aXppcGFudHMNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgQm9vbGVhbiBpc3B1YmxpYw0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBJbnRlZ2VyIHZpZGVvUG9kV2lkdGgNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgSW50ZWdlciB2aWRlb1BvZEhlaWdodA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBJbnRlZ2VyIHZpZGVvUG9kWFBvc2l0aW9uDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEludGVnZXIgdmlkZW9Qb2RZUG9zaXRpb24NCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgSW50ZWdlciBtb2RlcmF0aW9uUGFuZWxYUG9zaXRpb24NCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgQm9vbGVhbiBzaG93V2hpdGVCb2FyZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBJbnRlZ2VyIHdoaXRlQm9hcmRQYW5lbFhQb3NpdGlvbg0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBJbnRlZ2VyIHdoaXRlQm9hcmRQYW5lbFlQb3NpdGlvbg0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBJbnRlZ2VyIHdoaXRlQm9hcmRQYW5lbEhlaWdodA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBJbnRlZ2VyIHdoaXRlQm9hcmRQYW5lbFdpZHRoDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEJvb2xlYW4gc2hvd0ZpbGVzUGFuZWwNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgSW50ZWdlciBmaWxlc1BhbmVsWFBvc2l0aW9uDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEludGVnZXIgZmlsZXNQYW5lbFlQb3NpdGlvbg0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBJbnRlZ2VyIGZpbGVzUGFuZWxIZWlnaHQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgSW50ZWdlciBmaWxlc1BhbmVsV2lkdGgNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkpDQorICAgIAkJCTwvaT48YnIvPg0KKyAgICAJCQk8cD4NCisgICAgCQkJICBUT0RPOiBGaXggT3JnYW5pemF0aW9uIElzc3VlCisgCisgZGVwcmVjYXRlZCB1c2UgYWRkUm9vbVdpdGhNb2RlcmF0aW9uIGluc3RlYWQNCisgICAgCQkJPC9wPg0KKyAgICAJCQk8cD4NCisgICAgICAgICAgICAgICAgICBSZXR1cm4gVHlwZTogamF2YS5sYW5nLkxvbmcNCisgICAgICAgICAgICAgICAgPC9wPg0KKyAgICAJCQk8cD5QYXJhbXM6PC9wPg0KKyAgICAJCQkgICAgCQkJDQorICAgIAkJCQkgICAgCQkJPHRhYmxlIHJ1bGVzPSJhbGwiIGJvcmRlcj0iMSI+DQorCSAgICAJCQkgICA8dGhlYWQ+DQorCSAgICAJCQkgICA8dHI+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+VHlwZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+RmllbGRuYW1lPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSI0MDAiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvdGg+DQorCSAgICAJCQkgICA8L3RyPg0KKwkgICAgCQkJICAgPC90aGVhZD4NCisJICAgIAkJCSAgIDx0Ym9keT4NCisJICAgIAkJCSAgIAkgICAgCQkJICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlNJRDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgTG9nZ2VkaW48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+bmFtZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5yb29tdHlwZXNfaWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5jb21tZW50PC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUxvbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPm51bWJlck9mUGFydGl6aXBhbnRzPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlzcHVibGljPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUludGVnZXINCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnZpZGVvUG9kV2lkdGg8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJSW50ZWdlcg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dmlkZW9Qb2RIZWlnaHQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJSW50ZWdlcg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dmlkZW9Qb2RYUG9zaXRpb248L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJSW50ZWdlcg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dmlkZW9Qb2RZUG9zaXRpb248L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJSW50ZWdlcg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+bW9kZXJhdGlvblBhbmVsWFBvc2l0aW9uPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnNob3dXaGl0ZUJvYXJkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUludGVnZXINCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPndoaXRlQm9hcmRQYW5lbFhQb3NpdGlvbjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlJbnRlZ2VyDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj53aGl0ZUJvYXJkUGFuZWxZUG9zaXRpb248L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJSW50ZWdlcg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+d2hpdGVCb2FyZFBhbmVsSGVpZ2h0PC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUludGVnZXINCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPndoaXRlQm9hcmRQYW5lbFdpZHRoPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnNob3dGaWxlc1BhbmVsPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUludGVnZXINCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmZpbGVzUGFuZWxYUG9zaXRpb248L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJSW50ZWdlcg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+ZmlsZXNQYW5lbFlQb3NpdGlvbjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlJbnRlZ2VyDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5maWxlc1BhbmVsSGVpZ2h0PC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUludGVnZXINCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmZpbGVzUGFuZWxXaWR0aDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KKwkgICAgCQkJPC90YWJsZT4NCisgICAgCQkJICAgIAkJCTxici8+DQorICAgIAkJCVJFU1QgU2FtcGxlIENhbGwvVVJMOjxici8+DQorICAgIAkJCSAgICAJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Sb29tU2VydmljZS9hZGRSb29tP1NJRD1WQUxVRSZuYW1lPVZBTFVFJnJvb210eXBlc19pZD1WQUxVRSZjb21tZW50PVZBTFVFJm51bWJlck9mUGFydGl6aXBhbnRzPVZBTFVFJmlzcHVibGljPVZBTFVFJnZpZGVvUG9kV2lkdGg9VkFMVUUmdmlkZW9Qb2RIZWlnaHQ9VkFMVUUmdmlkZW9Qb2RYUG9zaXRpb249VkFMVUUmdmlkZW9Qb2RZUG9zaXRpb249VkFMVUUmbW9kZXJhdGlvblBhbmVsWFBvc2l0aW9uPVZBTFVFJnNob3dXaGl0ZUJvYXJkPVZBTFVFJndoaXRlQm9hcmRQYW5lbFhQb3NpdGlvbj1WQUxVRSZ3aGl0ZUJvYXJkUGFuZWxZUG9zaXRpb249VkFMVUUmd2hpdGVCb2FyZFBhbmVsSGVpZ2h0PVZBTFVFJndoaXRlQm9hcmRQYW5lbFdpZHRoPVZBTFVFJnNob3dGaWxlc1BhbmVsPVZBTFVFJmZpbGVzUGFuZWxYUG9zaXRpb249VkFMVUUmZmlsZXNQYW5lbFlQb3NpdGlvbj1WQUxVRSZmaWxlc1BhbmVsSGVpZ2h0PVZBTFVFJmZpbGVzUGFuZWxXaWR0aD1WQUxVRSI+aHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Sb29tU2VydmljZS9hZGRSb29tP1NJRD1WQUxVRSZhbXA7bmFtZT1WQUxVRSZhbXA7cm9vbXR5cGVzX2lkPVZBTFVFJmFtcDtjb21tZW50PVZBTFVFJmFtcDtudW1iZXJPZlBhcnRpemlwYW50cz1WQUxVRSZhbXA7aXNwdWJsaWM9VkFMVUUmYW1wO3ZpZGVvUG9kV2lkdGg9VkFMVUUmYW1wO3ZpZGVvUG9kSGVpZ2h0PVZBTFVFJmFtcDt2aWRlb1BvZFhQb3NpdGlvbj1WQUxVRSZhbXA7dmlkZW9Qb2RZUG9zaXRpb249VkFMVUUmYW1wO21vZGVyYXRpb25QYW5lbFhQb3NpdGlvbj1WQUxVRSZhbXA7c2hvd1doaXRlQm9hcmQ9VkFMVUUmYW1wO3doaXRlQm9hcmRQYW5lbFhQb3NpdGlvbj1WQUxVRSZhbXA7d2hpdGVCb2FyZFBhbmVsWVBvc2l0aW9uPVZBTFVFJmFtcDt3aGl0ZUJvYXJkUGFuZWxIZWlnaHQ9VkFMVUUmYW1wO3doaXRlQm9hcmRQYW5lbFdpZHRoPVZBTFVFJmFtcDtzaG93RmlsZXNQYW5lbD1WQUxVRSZhbXA7ZmlsZXNQYW5lbFhQb3NpdGlvbj1WQUxVRSZhbXA7ZmlsZXNQYW5lbFlQb3NpdGlvbj1WQUxVRSZhbXA7ZmlsZXNQYW5lbEhlaWdodD1WQUxVRSZhbXA7ZmlsZXNQYW5lbFdpZHRoPVZBTFVFPC9hPg0KKyAgICAJCSAgPC9kaXY+DQorICAgIAkgICAJCQkJICAgIAkJICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kIj4NCisJCSAgICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kX2hlYWRlciI+DQorCQkgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjEwcHgiPg0KKyAgICAJCQk8YSBuYW1lPSJhZGRSb29tV2l0aE1vZGVyYXRpb24iID48Yj5hZGRSb29tV2l0aE1vZGVyYXRpb248L2I+PC9hPg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCQ0KKyAgICAJCQlNZXRob2Q6IDxpPmFkZFJvb21XaXRoTW9kZXJhdGlvbiAoDQorICAgIAkJCSAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBTSUQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIG5hbWUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgTG9uZyByb29tdHlwZXNfaWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGNvbW1lbnQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgTG9uZyBudW1iZXJPZlBhcnRpemlwYW50cw0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGlzcHVibGljDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEJvb2xlYW4gYXBwb2ludG1lbnQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgQm9vbGVhbiBpc0RlbW9Sb29tDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEludGVnZXIgZGVtb1RpbWUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgQm9vbGVhbiBpc01vZGVyYXRlZFJvb20NCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkpDQorICAgIAkJCTwvaT48YnIvPg0KKyAgICAJCQk8cD4NCisgICAgCQkJICBDcmVhdGUgYSBjb25mZXJlbmNlIHJvb20NCisgICAgCQkJPC9wPg0KKyAgICAJCQk8cD4NCisgICAgICAgICAgICAgICAgICBSZXR1cm4gVHlwZTogamF2YS5sYW5nLkxvbmcNCisgICAgICAgICAgICAgICAgPC9wPg0KKyAgICAJCQk8cD5QYXJhbXM6PC9wPg0KKyAgICAJCQkgICAgCQkJDQorICAgIAkJCQkgICAgCQkJPHRhYmxlIHJ1bGVzPSJhbGwiIGJvcmRlcj0iMSI+DQorCSAgICAJCQkgICA8dGhlYWQ+DQorCSAgICAJCQkgICA8dHI+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+VHlwZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+RmllbGRuYW1lPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSI0MDAiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvdGg+DQorCSAgICAJCQkgICA8L3RyPg0KKwkgICAgCQkJICAgPC90aGVhZD4NCisJICAgIAkJCSAgIDx0Ym9keT4NCisJICAgIAkJCSAgIAkgICAgCQkJICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlNJRDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgTG9nZ2VkaW48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+bmFtZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+TmFtZSBvZiB0aGUgUm9vbTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJTG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+cm9vbXR5cGVzX2lkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5UeXBlIG9mIHRoYXQgcm9vbSAoMSA9IENvbmZlcmVuY2UsIDIgPSBBdWRpZW5jZSwgMyA9CisgICAgICAgICAgICBSZXN0cmljdGVkLCA0ID0gSW50ZXJ2aWV3KTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5jb21tZW50PC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hbnkgY29tbWVudDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJTG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+bnVtYmVyT2ZQYXJ0aXppcGFudHM8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSBtYXhpbXVtIHVzZXJzIGFsbG93ZWQgaW4gdGhpcyByb29tPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlCb29sZWFuDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5pc3B1YmxpYzwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+SWYgdGhpcyByb29tIGlzIHB1YmxpYyAodXNlIHRydWUgaWYgeW91IGRvbid0IGRlYWwgd2l0aAorICAgICAgICAgICAgZGlmZmVyZW50IE9yZ2FuaXphdGlvbnMpPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlCb29sZWFuDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hcHBvaW50bWVudDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aXMgaXQgYSBDYWxlbmRhciBSb29tICh1c2UgZmFsc2UgYnkgZGVmYXVsdCk8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlzRGVtb1Jvb208L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlzIGl0IGEgRGVtbyBSb29tIHdpdGggbGltaXRlZCB0aW1lICh1c2UgZmFsc2UgYnkgZGVmYXVsdCk8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUludGVnZXINCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmRlbW9UaW1lPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aW1lIGluIHNlY29uZHMgYWZ0ZXIgdGhlIHVzZXIgd2lsbCBiZSBsb2dnZWQgb3V0IChvbmx5CisgICAgICAgICAgICBlbmFibGVkIGlmIGlzRGVtb1Jvb20gaXMgdHJ1ZSk8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlzTW9kZXJhdGVkUm9vbTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VXNlcnMgaGF2ZSB0byB3YWl0IHVudGlsbCBhIE1vZGVyYXRvciBhcnJpdmVzLiBVc2UgdGhlCisgICAgICAgICAgICBiZWNvbWVNb2RlcmF0b3IgcGFyYW0gaW4gc2V0VXNlck9iamVjdEFuZEdlbmVyYXRlUm9vbUhhc2ggdG8KKyAgICAgICAgICAgIHNldCBhIHVzZXIgYXMgZGVmYXVsdCBNb2RlcmF0b3I8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQorCSAgICAJCQk8L3RhYmxlPg0KKyAgICAJCQkgICAgCQkJPGJyLz4NCisgICAgCQkJUkVTVCBTYW1wbGUgQ2FsbC9VUkw6PGJyLz4NCisgICAgCQkJICAgIAkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvUm9vbVNlcnZpY2UvYWRkUm9vbVdpdGhNb2RlcmF0aW9uP1NJRD1WQUxVRSZuYW1lPVZBTFVFJnJvb210eXBlc19pZD1WQUxVRSZjb21tZW50PVZBTFVFJm51bWJlck9mUGFydGl6aXBhbnRzPVZBTFVFJmlzcHVibGljPVZBTFVFJmFwcG9pbnRtZW50PVZBTFVFJmlzRGVtb1Jvb209VkFMVUUmZGVtb1RpbWU9VkFMVUUmaXNNb2RlcmF0ZWRSb29tPVZBTFVFIj5odHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1Jvb21TZXJ2aWNlL2FkZFJvb21XaXRoTW9kZXJhdGlvbj9TSUQ9VkFMVUUmYW1wO25hbWU9VkFMVUUmYW1wO3Jvb210eXBlc19pZD1WQUxVRSZhbXA7Y29tbWVudD1WQUxVRSZhbXA7bnVtYmVyT2ZQYXJ0aXppcGFudHM9VkFMVUUmYW1wO2lzcHVibGljPVZBTFVFJmFtcDthcHBvaW50bWVudD1WQUxVRSZhbXA7aXNEZW1vUm9vbT1WQUxVRSZhbXA7ZGVtb1RpbWU9VkFMVUUmYW1wO2lzTW9kZXJhdGVkUm9vbT1WQUxVRTwvYT4NCisgICAgCQkgIDwvZGl2Pg0KKyAgICAJICAgCQkJCSAgICAJCSAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZCI+DQorCQkgICAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZF9oZWFkZXIiPg0KKwkJICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDoxMHB4Ij4NCisgICAgCQkJPGEgbmFtZT0iYWRkUm9vbVdpdGhNb2RlcmF0aW9uQW5kUXVlc3Rpb25zIiA+PGI+YWRkUm9vbVdpdGhNb2RlcmF0aW9uQW5kUXVlc3Rpb25zPC9iPjwvYT4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQkNCisgICAgCQkJTWV0aG9kOiA8aT5hZGRSb29tV2l0aE1vZGVyYXRpb25BbmRRdWVzdGlvbnMgKA0KKyAgICAJCQkgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgU0lEDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBuYW1lDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIExvbmcgcm9vbXR5cGVzX2lkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBjb21tZW50DQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIExvbmcgbnVtYmVyT2ZQYXJ0aXppcGFudHMNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgQm9vbGVhbiBpc3B1YmxpYw0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGFwcG9pbnRtZW50DQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEJvb2xlYW4gaXNEZW1vUm9vbQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBJbnRlZ2VyIGRlbW9UaW1lDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEJvb2xlYW4gaXNNb2RlcmF0ZWRSb29tDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEJvb2xlYW4gYWxsb3dVc2VyUXVlc3Rpb25zDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJKQ0KKyAgICAJCQk8L2k+PGJyLz4NCisgICAgCQkJPHA+DQorICAgIAkJCSAgdGhpcyBTT0FQIE1ldGhvZCBoYXMgYW4gYWRkaXRpb25hbCBwYXJhbSB0byBlbmFibGUgb3IgZGlzYWJsZSB0aGUgYnV0dG9ucworIHRvIGFwcGx5IGZvciBtb2RlcmF0aW9uIHRoaXMgZG9lcyBvbmx5IHdvcmsgaW4gY29tYmluYXRpb24gd2l0aCB0aGUKKyByb29tLXR5cGUgcmVzdHJpY3RlZA0KKyAgICAJCQk8L3A+DQorICAgIAkJCTxwPg0KKyAgICAgICAgICAgICAgICAgIFJldHVybiBUeXBlOiBqYXZhLmxhbmcuTG9uZw0KKyAgICAgICAgICAgICAgICA8L3A+DQorICAgIAkJCTxwPlBhcmFtczo8L3A+DQorICAgIAkJCSAgICAJCQkNCisgICAgCQkJCSAgICAJCQk8dGFibGUgcnVsZXM9ImFsbCIgYm9yZGVyPSIxIj4NCisJICAgIAkJCSAgIDx0aGVhZD4NCisJICAgIAkJCSAgIDx0cj4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5UeXBlPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5GaWVsZG5hbWU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjQwMCIgYWxpZ249ImxlZnQiPkRlc2NyaXB0aW9uPC90aD4NCisJICAgIAkJCSAgIDwvdHI+DQorCSAgICAJCQkgICA8L3RoZWFkPg0KKwkgICAgCQkJICAgPHRib2R5Pg0KKwkgICAgCQkJICAgCSAgICAJCQkgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+U0lEPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5UaGUgU0lEIG9mIHRoZSBVc2VyLiBUaGlzIFNJRCBtdXN0IGJlIG1hcmtlZCBhcyBMb2dnZWRpbjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5uYW1lPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5OYW1lIG9mIHRoZSBSb29tPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5yb29tdHlwZXNfaWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlR5cGUgb2YgdGhhdCByb29tICgxID0gQ29uZmVyZW5jZSwgMiA9IEF1ZGllbmNlLCAzID0KKyAgICAgICAgICAgIFJlc3RyaWN0ZWQsIDQgPSBJbnRlcnZpZXcpPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmNvbW1lbnQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFueSBjb21tZW50PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5udW1iZXJPZlBhcnRpemlwYW50czwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGhlIG1heGltdW0gdXNlcnMgYWxsb3dlZCBpbiB0aGlzIHJvb208L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlzcHVibGljPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5JZiB0aGlzIHJvb20gaXMgcHVibGljICh1c2UgdHJ1ZSBpZiB5b3UgZG9uJ3QgZGVhbCB3aXRoCisgICAgICAgICAgICBkaWZmZXJlbnQgT3JnYW5pemF0aW9ucyk8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFwcG9pbnRtZW50PC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5pcyBpdCBhIENhbGVuZGFyIFJvb20gKHVzZSBmYWxzZSBieSBkZWZhdWx0KTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJQm9vbGVhbg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aXNEZW1vUm9vbTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aXMgaXQgYSBEZW1vIFJvb20gd2l0aCBsaW1pdGVkIHRpbWUgKHVzZSBmYWxzZSBieSBkZWZhdWx0KTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJSW50ZWdlcg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+ZGVtb1RpbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRpbWUgaW4gc2Vjb25kcyBhZnRlciB0aGUgdXNlciB3aWxsIGJlIGxvZ2dlZCBvdXQgKG9ubHkKKyAgICAgICAgICAgIGVuYWJsZWQgaWYgaXNEZW1vUm9vbSBpcyB0cnVlKTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJQm9vbGVhbg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aXNNb2RlcmF0ZWRSb29tPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5Vc2VycyBoYXZlIHRvIHdhaXQgdW50aWxsIGEgTW9kZXJhdG9yIGFycml2ZXMuIFVzZSB0aGUKKyAgICAgICAgICAgIGJlY29tZU1vZGVyYXRvciBwYXJhbSBpbiBzZXRVc2VyT2JqZWN0QW5kR2VuZXJhdGVSb29tSGFzaCB0bworICAgICAgICAgICAgc2V0IGEgdXNlciBhcyBkZWZhdWx0IE1vZGVyYXRvcjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJQm9vbGVhbg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+YWxsb3dVc2VyUXVlc3Rpb25zPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5lbmFibGUgb3IgZGlzYWJsZSB0aGUgYnV0dG9uIHRvIGFsbG93IHVzZXJzIHRvIGFwcGx5IGZvcgorICAgICAgICAgICAgbW9kZXJhdGlvbjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCisJICAgIAkJCTwvdGFibGU+DQorICAgIAkJCSAgICAJCQk8YnIvPg0KKyAgICAJCQlSRVNUIFNhbXBsZSBDYWxsL1VSTDo8YnIvPg0KKyAgICAJCQkgICAgCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1Jvb21TZXJ2aWNlL2FkZFJvb21XaXRoTW9kZXJhdGlvbkFuZFF1ZXN0aW9ucz9TSUQ9VkFMVUUmbmFtZT1WQUxVRSZyb29tdHlwZXNfaWQ9VkFMVUUmY29tbWVudD1WQUxVRSZudW1iZXJPZlBhcnRpemlwYW50cz1WQUxVRSZpc3B1YmxpYz1WQUxVRSZhcHBvaW50bWVudD1WQUxVRSZpc0RlbW9Sb29tPVZBTFVFJmRlbW9UaW1lPVZBTFVFJmlzTW9kZXJhdGVkUm9vbT1WQUxVRSZhbGxvd1VzZXJRdWVzdGlvbnM9VkFMVUUiPmh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvUm9vbVNlcnZpY2UvYWRkUm9vbVdpdGhNb2RlcmF0aW9uQW5kUXVlc3Rpb25zP1NJRD1WQUxVRSZhbXA7bmFtZT1WQUxVRSZhbXA7cm9vbXR5cGVzX2lkPVZBTFVFJmFtcDtjb21tZW50PVZBTFVFJmFtcDtudW1iZXJPZlBhcnRpemlwYW50cz1WQUxVRSZhbXA7aXNwdWJsaWM9VkFMVUUmYW1wO2FwcG9pbnRtZW50PVZBTFVFJmFtcDtpc0RlbW9Sb29tPVZBTFVFJmFtcDtkZW1vVGltZT1WQUxVRSZhbXA7aXNNb2RlcmF0ZWRSb29tPVZBTFVFJmFtcDthbGxvd1VzZXJRdWVzdGlvbnM9VkFMVUU8L2E+DQorICAgIAkJICA8L2Rpdj4NCisgICAgCSAgIAkJCQkgICAgCQkgICAgICA8ZGl2IGNsYXNzPSJtZXRob2QiPg0KKwkJICAgICAgICA8ZGl2IGNsYXNzPSJtZXRob2RfaGVhZGVyIj4NCisJCSAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTBweCI+DQorICAgIAkJCTxhIG5hbWU9ImFkZFJvb21XaXRoTW9kZXJhdGlvblF1ZXN0aW9uc0FuZEF1ZGlvVHlwZSIgPjxiPmFkZFJvb21XaXRoTW9kZXJhdGlvblF1ZXN0aW9uc0FuZEF1ZGlvVHlwZTwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+YWRkUm9vbVdpdGhNb2RlcmF0aW9uUXVlc3Rpb25zQW5kQXVkaW9UeXBlICgNCisgICAgCQkJICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIFNJRA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgbmFtZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBMb25nIHJvb210eXBlc19pZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgY29tbWVudA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBMb25nIG51bWJlck9mUGFydGl6aXBhbnRzDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEJvb2xlYW4gaXNwdWJsaWMNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgQm9vbGVhbiBhcHBvaW50bWVudA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGlzRGVtb1Jvb20NCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgSW50ZWdlciBkZW1vVGltZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGlzTW9kZXJhdGVkUm9vbQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGFsbG93VXNlclF1ZXN0aW9ucw0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGlzQXVkaW9Pbmx5DQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJKQ0KKyAgICAJCQk8L2k+PGJyLz4NCisgICAgCQkJPHA+DQorICAgIAkJCSAgYWRkcyBhIG5ldyByb29tIHdpdGggb3B0aW9ucyBmb3IgdXNlciBxdWVzdGlvbnMgYW5kIGF1ZGlvIG9ubHkNCisgICAgCQkJPC9wPg0KKyAgICAJCQk8cD4NCisgICAgICAgICAgICAgICAgICBSZXR1cm4gVHlwZTogamF2YS5sYW5nLkxvbmcNCisgICAgICAgICAgICAgICAgPC9wPg0KKyAgICAJCQk8cD5QYXJhbXM6PC9wPg0KKyAgICAJCQkgICAgCQkJDQorICAgIAkJCQkgICAgCQkJPHRhYmxlIHJ1bGVzPSJhbGwiIGJvcmRlcj0iMSI+DQorCSAgICAJCQkgICA8dGhlYWQ+DQorCSAgICAJCQkgICA8dHI+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+VHlwZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+RmllbGRuYW1lPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSI0MDAiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvdGg+DQorCSAgICAJCQkgICA8L3RyPg0KKwkgICAgCQkJICAgPC90aGVhZD4NCisJICAgIAkJCSAgIDx0Ym9keT4NCisJICAgIAkJCSAgIAkgICAgCQkJICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlNJRDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgTG9nZ2VkaW48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+bmFtZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+TmFtZSBvZiB0aGUgUm9vbTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJTG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+cm9vbXR5cGVzX2lkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5UeXBlIG9mIHRoYXQgcm9vbSAoMSA9IENvbmZlcmVuY2UsIDIgPSBBdWRpZW5jZSwgMyA9CisgICAgICAgICAgICBSZXN0cmljdGVkLCA0ID0gSW50ZXJ2aWV3KTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5jb21tZW50PC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hbnkgY29tbWVudDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJTG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+bnVtYmVyT2ZQYXJ0aXppcGFudHM8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSBtYXhpbXVtIHVzZXJzIGFsbG93ZWQgaW4gdGhpcyByb29tPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlCb29sZWFuDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5pc3B1YmxpYzwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+SWYgdGhpcyByb29tIGlzIHB1YmxpYyAodXNlIHRydWUgaWYgeW91IGRvbid0IGRlYWwgd2l0aAorICAgICAgICAgICAgZGlmZmVyZW50IE9yZ2FuaXphdGlvbnMpPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlCb29sZWFuDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hcHBvaW50bWVudDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aXMgaXQgYSBDYWxlbmRhciBSb29tICh1c2UgZmFsc2UgYnkgZGVmYXVsdCk8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlzRGVtb1Jvb208L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlzIGl0IGEgRGVtbyBSb29tIHdpdGggbGltaXRlZCB0aW1lICh1c2UgZmFsc2UgYnkgZGVmYXVsdCk8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUludGVnZXINCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmRlbW9UaW1lPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aW1lIGluIHNlY29uZHMgYWZ0ZXIgdGhlIHVzZXIgd2lsbCBiZSBsb2dnZWQgb3V0IChvbmx5CisgICAgICAgICAgICBlbmFibGVkIGlmIGlzRGVtb1Jvb20gaXMgdHJ1ZSk8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlzTW9kZXJhdGVkUm9vbTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VXNlcnMgaGF2ZSB0byB3YWl0IHVudGlsIGEgTW9kZXJhdG9yIGFycml2ZXMuIFVzZSB0aGUKKyAgICAgICAgICAgIGJlY29tZU1vZGVyYXRvciBwYXJhbSBpbiBzZXRVc2VyT2JqZWN0QW5kR2VuZXJhdGVSb29tSGFzaCB0bworICAgICAgICAgICAgc2V0IGEgdXNlciBhcyBkZWZhdWx0IE1vZGVyYXRvcjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJQm9vbGVhbg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+YWxsb3dVc2VyUXVlc3Rpb25zPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5lbmFibGUgb3IgZGlzYWJsZSB0aGUgYnV0dG9uIHRvIGFsbG93IHVzZXJzIHRvIGFwcGx5IGZvcgorICAgICAgICAgICAgbW9kZXJhdGlvbjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJQm9vbGVhbg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aXNBdWRpb09ubHk8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmVuYWJsZSBvciBkaXNhYmxlIHRoZSB2aWRlbyAvIG9yIGF1ZGlvLW9ubHk8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQorCSAgICAJCQk8L3RhYmxlPg0KKyAgICAJCQkgICAgCQkJPGJyLz4NCisgICAgCQkJUkVTVCBTYW1wbGUgQ2FsbC9VUkw6PGJyLz4NCisgICAgCQkJICAgIAkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1Jvb21TZXJ2aWNlL2FkZFJvb21XaXRoTW9kZXJhdGlvblF1ZXN0aW9uc0FuZEF1ZGlvVHlwZT9TSUQ9VkFMVUUmbmFtZT1WQUxVRSZyb29tdHlwZXNfaWQ9VkFMVUUmY29tbWVudD1WQUxVRSZudW1iZXJPZlBhcnRpemlwYW50cz1WQUxVRSZpc3B1YmxpYz1WQUxVRSZhcHBvaW50bWVudD1WQUxVRSZpc0RlbW9Sb29tPVZBTFVFJmRlbW9UaW1lPVZBTFVFJmlzTW9kZXJhdGVkUm9vbT1WQUxVRSZhbGxvd1VzZXJRdWVzdGlvbnM9VkFMVUUmaXNBdWRpb09ubHk9VkFMVUUiPmh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvUm9vbVNlcnZpY2UvYWRkUm9vbVdpdGhNb2RlcmF0aW9uUXVlc3Rpb25zQW5kQXVkaW9UeXBlP1NJRD1WQUxVRSZhbXA7bmFtZT1WQUxVRSZhbXA7cm9vbXR5cGVzX2lkPVZBTFVFJmFtcDtjb21tZW50PVZBTFVFJmFtcDtudW1iZXJPZlBhcnRpemlwYW50cz1WQUxVRSZhbXA7aXNwdWJsaWM9VkFMVUUmYW1wO2FwcG9pbnRtZW50PVZBTFVFJmFtcDtpc0RlbW9Sb29tPVZBTFVFJmFtcDtkZW1vVGltZT1WQUxVRSZhbXA7aXNNb2RlcmF0ZWRSb29tPVZBTFVFJmFtcDthbGxvd1VzZXJRdWVzdGlvbnM9VkFMVUUmYW1wO2lzQXVkaW9Pbmx5PVZBTFVFPC9hPg0KKyAgICAJCSAgPC9kaXY+DQorICAgIAkgICAJCQkJICAgIAkJICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kIj4NCisJCSAgICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kX2hlYWRlciI+DQorCQkgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjEwcHgiPg0KKyAgICAJCQk8YSBuYW1lPSJhZGRSb29tV2l0aE1vZGVyYXRpb25RdWVzdGlvbnNBdWRpb1R5cGVBbmRIaWRlT3B0aW9ucyIgPjxiPmFkZFJvb21XaXRoTW9kZXJhdGlvblF1ZXN0aW9uc0F1ZGlvVHlwZUFuZEhpZGVPcHRpb25zPC9iPjwvYT4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQkNCisgICAgCQkJTWV0aG9kOiA8aT5hZGRSb29tV2l0aE1vZGVyYXRpb25RdWVzdGlvbnNBdWRpb1R5cGVBbmRIaWRlT3B0aW9ucyAoDQorICAgIAkJCSAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBTSUQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIG5hbWUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgTG9uZyByb29tdHlwZXNfaWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGNvbW1lbnQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgTG9uZyBudW1iZXJPZlBhcnRpemlwYW50cw0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGlzcHVibGljDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEJvb2xlYW4gYXBwb2ludG1lbnQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgQm9vbGVhbiBpc0RlbW9Sb29tDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEludGVnZXIgZGVtb1RpbWUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgQm9vbGVhbiBpc01vZGVyYXRlZFJvb20NCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgQm9vbGVhbiBhbGxvd1VzZXJRdWVzdGlvbnMNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgQm9vbGVhbiBpc0F1ZGlvT25seQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGhpZGVUb3BCYXINCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgQm9vbGVhbiBoaWRlQ2hhdA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGhpZGVBY3Rpdml0aWVzQW5kQWN0aW9ucw0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGhpZGVGaWxlc0V4cGxvcmVyDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEJvb2xlYW4gaGlkZUFjdGlvbnNNZW51DQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEJvb2xlYW4gaGlkZVNjcmVlblNoYXJpbmcNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgQm9vbGVhbiBoaWRlV2hpdGVib2FyZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSkNCisgICAgCQkJPC9pPjxici8+DQorICAgIAkJCTxwPg0KKyAgICAJCQkgIGFkZHMgYSBuZXcgcm9vbSB3aXRoIG9wdGlvbnMgZm9yIHVzZXIgcXVlc3Rpb25zLCBhdWRpbyBvbmx5IGFuZCBoaWRlDQorICAgIAkJCTwvcD4NCisgICAgCQkJPHA+DQorICAgICAgICAgICAgICAgICAgUmV0dXJuIFR5cGU6IGphdmEubGFuZy5Mb25nDQorICAgICAgICAgICAgICAgIDwvcD4NCisgICAgCQkJPHA+UGFyYW1zOjwvcD4NCisgICAgCQkJICAgIAkJCQ0KKyAgICAJCQkJICAgIAkJCTx0YWJsZSBydWxlcz0iYWxsIiBib3JkZXI9IjEiPg0KKwkgICAgCQkJICAgPHRoZWFkPg0KKwkgICAgCQkJICAgPHRyPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPlR5cGU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPkZpZWxkbmFtZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iNDAwIiBhbGlnbj0ibGVmdCI+RGVzY3JpcHRpb248L3RoPg0KKwkgICAgCQkJICAgPC90cj4NCisJICAgIAkJCSAgIDwvdGhlYWQ+DQorCSAgICAJCQkgICA8dGJvZHk+DQorCSAgICAJCQkgICAJICAgIAkJCSAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5TSUQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIExvZ2dlZGluPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPm5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPk5hbWUgb2YgdGhlIFJvb208L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUxvbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnJvb210eXBlc19pZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VHlwZSBvZiB0aGF0IHJvb20gKDEgPSBDb25mZXJlbmNlLCAyID0gQXVkaWVuY2UsIDMgPQorICAgICAgICAgICAgUmVzdHJpY3RlZCwgNCA9IEludGVydmlldyk8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+Y29tbWVudDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+YW55IGNvbW1lbnQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUxvbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPm51bWJlck9mUGFydGl6aXBhbnRzPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aGUgbWF4aW11bSB1c2VycyBhbGxvd2VkIGluIHRoaXMgcm9vbTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJQm9vbGVhbg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aXNwdWJsaWM8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPklmIHRoaXMgcm9vbSBpcyBwdWJsaWMgKHVzZSB0cnVlIGlmIHlvdSBkb24ndCBkZWFsIHdpdGgKKyAgICAgICAgICAgIGRpZmZlcmVudCBPcmdhbml6YXRpb25zKTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJQm9vbGVhbg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+YXBwb2ludG1lbnQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlzIGl0IGEgQ2FsZW5kYXIgUm9vbSAodXNlIGZhbHNlIGJ5IGRlZmF1bHQpPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlCb29sZWFuDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5pc0RlbW9Sb29tPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5pcyBpdCBhIERlbW8gUm9vbSB3aXRoIGxpbWl0ZWQgdGltZSAodXNlIGZhbHNlIGJ5IGRlZmF1bHQpPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlJbnRlZ2VyDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5kZW1vVGltZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGltZSBpbiBzZWNvbmRzIGFmdGVyIHRoZSB1c2VyIHdpbGwgYmUgbG9nZ2VkIG91dCAob25seQorICAgICAgICAgICAgZW5hYmxlZCBpZiBpc0RlbW9Sb29tIGlzIHRydWUpPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlCb29sZWFuDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5pc01vZGVyYXRlZFJvb208L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlVzZXJzIGhhdmUgdG8gd2FpdCB1bnRpbCBhIE1vZGVyYXRvciBhcnJpdmVzLiBVc2UgdGhlCisgICAgICAgICAgICBiZWNvbWVNb2RlcmF0b3IgcGFyYW0gaW4gc2V0VXNlck9iamVjdEFuZEdlbmVyYXRlUm9vbUhhc2ggdG8KKyAgICAgICAgICAgIHNldCBhIHVzZXIgYXMgZGVmYXVsdCBNb2RlcmF0b3I8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFsbG93VXNlclF1ZXN0aW9uczwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+ZW5hYmxlIG9yIGRpc2FibGUgdGhlIGJ1dHRvbiB0byBhbGxvdyB1c2VycyB0byBhcHBseSBmb3IKKyAgICAgICAgICAgIG1vZGVyYXRpb248L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlzQXVkaW9Pbmx5PC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5lbmFibGUgb3IgZGlzYWJsZSB0aGUgdmlkZW8gLyBvciBhdWRpby1vbmx5PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlCb29sZWFuDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5oaWRlVG9wQmFyPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5oaWRlIG9yIHNob3cgVG9wQmFyPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlCb29sZWFuDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5oaWRlQ2hhdDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aGlkZSBvciBzaG93IENoYXQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmhpZGVBY3Rpdml0aWVzQW5kQWN0aW9uczwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aGlkZSBvciBzaG93IEFjdGl2aXRpZXMgQW5kIEFjdGlvbnM8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmhpZGVGaWxlc0V4cGxvcmVyPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5oaWRlIG9yIHNob3cgRmlsZXMgRXhwbG9yZXI8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmhpZGVBY3Rpb25zTWVudTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aGlkZSBvciBzaG93IEFjdGlvbnMgTWVudTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJQm9vbGVhbg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aGlkZVNjcmVlblNoYXJpbmc8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmhpZGUgb3Igc2hvdyBTY3JlZW4gU2hhcmluZzwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJQm9vbGVhbg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aGlkZVdoaXRlYm9hcmQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmhpZGUgb3Igc2hvdyBXaGl0ZWJvYXJkLiBJZiB3aGl0Ym9hcmQgaXMgaGlkZGVuLCB2aWRlbyBwb2RzCisgICAgICAgICAgICBhbmQgc2Nyb2xsYmFyIGFwcGVhciBpbnN0ZWFkLjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCisJICAgIAkJCTwvdGFibGU+DQorICAgIAkJCSAgICAJCQk8YnIvPg0KKyAgICAJCQlSRVNUIFNhbXBsZSBDYWxsL1VSTDo8YnIvPg0KKyAgICAJCQkgICAgCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Sb29tU2VydmljZS9hZGRSb29tV2l0aE1vZGVyYXRpb25RdWVzdGlvbnNBdWRpb1R5cGVBbmRIaWRlT3B0aW9ucz9TSUQ9VkFMVUUmbmFtZT1WQUxVRSZyb29tdHlwZXNfaWQ9VkFMVUUmY29tbWVudD1WQUxVRSZudW1iZXJPZlBhcnRpemlwYW50cz1WQUxVRSZpc3B1YmxpYz1WQUxVRSZhcHBvaW50bWVudD1WQUxVRSZpc0RlbW9Sb29tPVZBTFVFJmRlbW9UaW1lPVZBTFVFJmlzTW9kZXJhdGVkUm9vbT1WQUxVRSZhbGxvd1VzZXJRdWVzdGlvbnM9VkFMVUUmaXNBdWRpb09ubHk9VkFMVUUmaGlkZVRvcEJhcj1WQUxVRSZoaWRlQ2hhdD1WQUxVRSZoaWRlQWN0aXZpdGllc0FuZEFjdGlvbnM9VkFMVUUmaGlkZUZpbGVzRXhwbG9yZXI9VkFMVUUmaGlkZUFjdGlvbnNNZW51PVZBTFVFJmhpZGVTY3JlZW5TaGFyaW5nPVZBTFVFJmhpZGVXaGl0ZWJvYXJkPVZBTFVFIj5odHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1Jvb21TZXJ2aWNlL2FkZFJvb21XaXRoTW9kZXJhdGlvblF1ZXN0aW9uc0F1ZGlvVHlwZUFuZEhpZGVPcHRpb25zP1NJRD1WQUxVRSZhbXA7bmFtZT1WQUxVRSZhbXA7cm9vbXR5cGVzX2lkPVZBTFVFJmFtcDtjb21tZW50PVZBTFVFJmFtcDtudW1iZXJPZlBhcnRpemlwYW50cz1WQUxVRSZhbXA7aXNwdWJsaWM9VkFMVUUmYW1wO2FwcG9pbnRtZW50PVZBTFVFJmFtcDtpc0RlbW9Sb29tPVZBTFVFJmFtcDtkZW1vVGltZT1WQUxVRSZhbXA7aXNNb2RlcmF0ZWRSb29tPVZBTFVFJmFtcDthbGxvd1VzZXJRdWVzdGlvbnM9VkFMVUUmYW1wO2lzQXVkaW9Pbmx5PVZBTFVFJmFtcDtoaWRlVG9wQmFyPVZBTFVFJmFtcDtoaWRlQ2hhdD1WQUxVRSZhbXA7aGlkZUFjdGl2aXRpZXNBbmRBY3Rpb25zPVZBTFVFJmFtcDtoaWRlRmlsZXNFeHBsb3Jlcj1WQUxVRSZhbXA7aGlkZUFjdGlvbnNNZW51PVZBTFVFJmFtcDtoaWRlU2NyZWVuU2hhcmluZz1WQUxVRSZhbXA7aGlkZVdoaXRlYm9hcmQ9VkFMVUU8L2E+DQorICAgIAkJICA8L2Rpdj4NCisgICAgCSAgIAkJCQkgICAgCQkgICAgICA8ZGl2IGNsYXNzPSJtZXRob2QiPg0KKwkJICAgICAgICA8ZGl2IGNsYXNzPSJtZXRob2RfaGVhZGVyIj4NCisJCSAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTBweCI+DQorICAgIAkJCTxhIG5hbWU9ImdldFJvb21JZEJ5RXh0ZXJuYWxJZCIgPjxiPmdldFJvb21JZEJ5RXh0ZXJuYWxJZDwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+Z2V0Um9vbUlkQnlFeHRlcm5hbElkICgNCisgICAgCQkJICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIFNJRA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgbmFtZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBMb25nIHJvb210eXBlc19pZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgY29tbWVudA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBMb25nIG51bWJlck9mUGFydGl6aXBhbnRzDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEJvb2xlYW4gaXNwdWJsaWMNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgQm9vbGVhbiBhcHBvaW50bWVudA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGlzRGVtb1Jvb20NCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgSW50ZWdlciBkZW1vVGltZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGlzTW9kZXJhdGVkUm9vbQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBMb25nIGV4dGVybmFsUm9vbUlkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBleHRlcm5hbFJvb21UeXBlDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJKQ0KKyAgICAJCQk8L2k+PGJyLz4NCisgICAgCQkJPHA+DQorICAgIAkJCSAgQ2hlY2tzIGlmIGEgcm9vbSB3aXRoIHRoaXMgZXh0ZXJhbFJvb21JZCArIGV4dGVybmFsUm9vbVR5cGUgZG9lcyBleGlzdCwKKyBpZiB5ZXMgaXQgcmV0dXJucyB0aGUgcm9vbSBpZCBpZiBub3QsIGl0IHdpbGwgY3JlYXRlIHRoZSByb29tIGFuZCB0aGVuCisgcmV0dXJuIHRoZSByb29tIGlkIG9mIHRoZSBuZXdseSBjcmVhdGVkIHJvb20NCisgICAgCQkJPC9wPg0KKyAgICAJCQk8cD4NCisgICAgICAgICAgICAgICAgICBSZXR1cm4gVHlwZTogamF2YS5sYW5nLkxvbmcNCisgICAgICAgICAgICAgICAgPC9wPg0KKyAgICAJCQk8cD5QYXJhbXM6PC9wPg0KKyAgICAJCQkgICAgCQkJDQorICAgIAkJCQkgICAgCQkJPHRhYmxlIHJ1bGVzPSJhbGwiIGJvcmRlcj0iMSI+DQorCSAgICAJCQkgICA8dGhlYWQ+DQorCSAgICAJCQkgICA8dHI+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+VHlwZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+RmllbGRuYW1lPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSI0MDAiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvdGg+DQorCSAgICAJCQkgICA8L3RyPg0KKwkgICAgCQkJICAgPC90aGVhZD4NCisJICAgIAkJCSAgIDx0Ym9keT4NCisJICAgIAkJCSAgIAkgICAgCQkJICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlNJRDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgTG9nZ2VkaW48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+bmFtZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+TmFtZSBvZiB0aGUgcm9vbTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJTG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+cm9vbXR5cGVzX2lkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5UeXBlIG9mIHRoYXQgcm9vbSAoMSA9IENvbmZlcmVuY2UsIDIgPSBBdWRpZW5jZSwgMyA9CisgICAgICAgICAgICBSZXN0cmljdGVkLCA0ID0gSW50ZXJ2aWV3KTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5jb21tZW50PC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hbnkgY29tbWVudDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJTG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+bnVtYmVyT2ZQYXJ0aXppcGFudHM8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSBtYXhpbXVtIHVzZXJzIGFsbG93ZWQgaW4gdGhpcyByb29tPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlCb29sZWFuDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5pc3B1YmxpYzwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+SWYgdGhpcyByb29tIGlzIHB1YmxpYyAodXNlIHRydWUgaWYgeW91IGRvbid0IGRlYWwgd2l0aAorICAgICAgICAgICAgZGlmZmVyZW50IE9yZ2FuaXphdGlvbnMpPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlCb29sZWFuDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hcHBvaW50bWVudDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aXMgaXQgYSBDYWxlbmRhciBSb29tPyAodXNlIGZhbHNlIGlmIG5vdCBzdXJlIHdoYXQgdGhhdCBtZWFucyk8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlzRGVtb1Jvb208L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlzIGl0IGEgRGVtbyBSb29tIHdpdGggbGltaXRlZCB0aW1lPyAodXNlIGZhbHNlIGlmIG5vdCBzdXJlCisgICAgICAgICAgICB3aGF0IHRoYXQgbWVhbnMpPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlJbnRlZ2VyDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5kZW1vVGltZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGltZSBpbiBzZWNvbmRzIGFmdGVyIHRoZSB1c2VyIHdpbGwgYmUgbG9nZ2VkIG91dCAob25seQorICAgICAgICAgICAgZW5hYmxlZCBpZiBpc0RlbW9Sb29tIGlzIHRydWUpPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlCb29sZWFuDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5pc01vZGVyYXRlZFJvb208L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlVzZXJzIGhhdmUgdG8gd2FpdCB1bnRpbGwgYSBNb2RlcmF0b3IgYXJyaXZlcy4gVXNlIHRoZQorICAgICAgICAgICAgYmVjb21lTW9kZXJhdG9yIHBhcmFtIGluIHNldFVzZXJPYmplY3RBbmRHZW5lcmF0ZVJvb21IYXNoIHRvCisgICAgICAgICAgICBzZXQgYSB1c2VyIGFzIGRlZmF1bHQgTW9kZXJhdG9yPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5leHRlcm5hbFJvb21JZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+eW91ciBleHRlcm5hbCByb29tIGlkIG1heSBzZXQgaGVyZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5leHRlcm5hbFJvb21UeXBlPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj55b3UgY2FuIHNwZWNpZnkgeW91ciBzeXN0ZW0tbmFtZSBvciB0eXBlIG9mIHJvb20gaGVyZSwgZm9yCisgICAgICAgICAgICBleGFtcGxlICJtb29kbGUiPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KKwkgICAgCQkJPC90YWJsZT4NCisgICAgCQkJICAgIAkJCTxici8+DQorICAgIAkJCVJFU1QgU2FtcGxlIENhbGwvVVJMOjxici8+DQorICAgIAkJCSAgICAJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Sb29tU2VydmljZS9nZXRSb29tSWRCeUV4dGVybmFsSWQ/U0lEPVZBTFVFJm5hbWU9VkFMVUUmcm9vbXR5cGVzX2lkPVZBTFVFJmNvbW1lbnQ9VkFMVUUmbnVtYmVyT2ZQYXJ0aXppcGFudHM9VkFMVUUmaXNwdWJsaWM9VkFMVUUmYXBwb2ludG1lbnQ9VkFMVUUmaXNEZW1vUm9vbT1WQUxVRSZkZW1vVGltZT1WQUxVRSZpc01vZGVyYXRlZFJvb209VkFMVUUmZXh0ZXJuYWxSb29tSWQ9VkFMVUUmZXh0ZXJuYWxSb29tVHlwZT1WQUxVRSI+aHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Sb29tU2VydmljZS9nZXRSb29tSWRCeUV4dGVybmFsSWQ/U0lEPVZBTFVFJmFtcDtuYW1lPVZBTFVFJmFtcDtyb29tdHlwZXNfaWQ9VkFMVUUmYW1wO2NvbW1lbnQ9VkFMVUUmYW1wO251bWJlck9mUGFydGl6aXBhbnRzPVZBTFVFJmFtcDtpc3B1YmxpYz1WQUxVRSZhbXA7YXBwb2ludG1lbnQ9VkFMVUUmYW1wO2lzRGVtb1Jvb209VkFMVUUmYW1wO2RlbW9UaW1lPVZBTFVFJmFtcDtpc01vZGVyYXRlZFJvb209VkFMVUUmYW1wO2V4dGVybmFsUm9vbUlkPVZBTFVFJmFtcDtleHRlcm5hbFJvb21UeXBlPVZBTFVFPC9hPg0KKyAgICAJCSAgPC9kaXY+DQorICAgIAkgICAJCQkJICAgIAkJICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kIj4NCisJCSAgICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kX2hlYWRlciI+DQorCQkgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjEwcHgiPg0KKyAgICAJCQk8YSBuYW1lPSJ1cGRhdGVSb29tIiA+PGI+dXBkYXRlUm9vbTwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+dXBkYXRlUm9vbSAoDQorICAgIAkJCSAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBTSUQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgTG9uZyByb29tc19pZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgbmFtZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBMb25nIHJvb210eXBlc19pZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgY29tbWVudA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBMb25nIG51bWJlck9mUGFydGl6aXBhbnRzDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEJvb2xlYW4gaXNwdWJsaWMNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgSW50ZWdlciB2aWRlb1BvZFdpZHRoDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEludGVnZXIgdmlkZW9Qb2RIZWlnaHQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgSW50ZWdlciB2aWRlb1BvZFhQb3NpdGlvbg0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBJbnRlZ2VyIHZpZGVvUG9kWVBvc2l0aW9uDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEludGVnZXIgbW9kZXJhdGlvblBhbmVsWFBvc2l0aW9uDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEJvb2xlYW4gc2hvd1doaXRlQm9hcmQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgSW50ZWdlciB3aGl0ZUJvYXJkUGFuZWxYUG9zaXRpb24NCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgSW50ZWdlciB3aGl0ZUJvYXJkUGFuZWxZUG9zaXRpb24NCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgSW50ZWdlciB3aGl0ZUJvYXJkUGFuZWxIZWlnaHQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgSW50ZWdlciB3aGl0ZUJvYXJkUGFuZWxXaWR0aA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIHNob3dGaWxlc1BhbmVsDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEludGVnZXIgZmlsZXNQYW5lbFhQb3NpdGlvbg0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBJbnRlZ2VyIGZpbGVzUGFuZWxZUG9zaXRpb24NCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgSW50ZWdlciBmaWxlc1BhbmVsSGVpZ2h0DQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEludGVnZXIgZmlsZXNQYW5lbFdpZHRoDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEJvb2xlYW4gYXBwb2ludG1lbnQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkpDQorICAgIAkJCTwvaT48YnIvPg0KKyAgICAJCQk8cD4NCisgICAgCQkJICBUT0RPOiBGaXggT3JnYW5pemF0aW9uIElzc3VlIGRlcHJlY2F0ZWQgdXNlIHVwZGF0ZVJvb21XaXRoTW9kZXJhdGlvbg0KKyAgICAJCQk8L3A+DQorICAgIAkJCTxwPg0KKyAgICAgICAgICAgICAgICAgIFJldHVybiBUeXBlOiBqYXZhLmxhbmcuTG9uZw0KKyAgICAgICAgICAgICAgICA8L3A+DQorICAgIAkJCTxwPlBhcmFtczo8L3A+DQorICAgIAkJCSAgICAJCQkJPGI+V2FybmluZzo8L2I+PGk+IFBhcmFtcyBpbiB0aGlzIG1ldGhvZCBkbyBub3Qgc2VlbSB0byBiZSBjb3JyZWN0bHkgZG9jdW1lbnRhdGVkPC9pPg0KKyAgICAJCQkJPGJyLz48YnIvPg0KKyAgICAJCQkgICAgCQkJDQorICAgIAkJCQkgICAgCQkJPHRhYmxlIHJ1bGVzPSJhbGwiIGJvcmRlcj0iMSI+DQorCSAgICAJCQkgICA8dGhlYWQ+DQorCSAgICAJCQkgICA8dHI+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+VHlwZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+RmllbGRuYW1lPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSI0MDAiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvdGg+DQorCSAgICAJCQkgICA8L3RyPg0KKwkgICAgCQkJICAgPC90aGVhZD4NCisJICAgIAkJCSAgIDx0Ym9keT4NCisJICAgIAkJCSAgIAkgICAgCQkJICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlNJRDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgTG9nZ2VkaW48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUxvbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnJvb21zX2lkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+bmFtZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5yb29tdHlwZXNfaWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5jb21tZW50PC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUxvbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPm51bWJlck9mUGFydGl6aXBhbnRzPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlzcHVibGljPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUludGVnZXINCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnZpZGVvUG9kV2lkdGg8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJSW50ZWdlcg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dmlkZW9Qb2RIZWlnaHQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJSW50ZWdlcg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dmlkZW9Qb2RYUG9zaXRpb248L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJSW50ZWdlcg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dmlkZW9Qb2RZUG9zaXRpb248L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJSW50ZWdlcg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+bW9kZXJhdGlvblBhbmVsWFBvc2l0aW9uPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnNob3dXaGl0ZUJvYXJkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUludGVnZXINCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPndoaXRlQm9hcmRQYW5lbFhQb3NpdGlvbjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlJbnRlZ2VyDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj53aGl0ZUJvYXJkUGFuZWxZUG9zaXRpb248L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJSW50ZWdlcg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+d2hpdGVCb2FyZFBhbmVsSGVpZ2h0PC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUludGVnZXINCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPndoaXRlQm9hcmRQYW5lbFdpZHRoPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnNob3dGaWxlc1BhbmVsPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUludGVnZXINCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmZpbGVzUGFuZWxYUG9zaXRpb248L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJSW50ZWdlcg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+ZmlsZXNQYW5lbFlQb3NpdGlvbjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlJbnRlZ2VyDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5maWxlc1BhbmVsSGVpZ2h0PC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUludGVnZXINCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmZpbGVzUGFuZWxXaWR0aDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KKwkgICAgCQkJPC90YWJsZT4NCisgICAgCQkJICAgIAkJCTxici8+DQorICAgIAkJCVJFU1QgU2FtcGxlIENhbGwvVVJMOjxici8+DQorICAgIAkJCSAgICAJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvUm9vbVNlcnZpY2UvdXBkYXRlUm9vbT9TSUQ9VkFMVUUmcm9vbXNfaWQ9VkFMVUUmbmFtZT1WQUxVRSZyb29tdHlwZXNfaWQ9VkFMVUUmY29tbWVudD1WQUxVRSZudW1iZXJPZlBhcnRpemlwYW50cz1WQUxVRSZpc3B1YmxpYz1WQUxVRSZ2aWRlb1BvZFdpZHRoPVZBTFVFJnZpZGVvUG9kSGVpZ2h0PVZBTFVFJnZpZGVvUG9kWFBvc2l0aW9uPVZBTFVFJnZpZGVvUG9kWVBvc2l0aW9uPVZBTFVFJm1vZGVyYXRpb25QYW5lbFhQb3NpdGlvbj1WQUxVRSZzaG93V2hpdGVCb2FyZD1WQUxVRSZ3aGl0ZUJvYXJkUGFuZWxYUG9zaXRpb249VkFMVUUmd2hpdGVCb2FyZFBhbmVsWVBvc2l0aW9uPVZBTFVFJndoaXRlQm9hcmRQYW5lbEhlaWdodD1WQUxVRSZ3aGl0ZUJvYXJkUGFuZWxXaWR0aD1WQUxVRSZzaG93RmlsZXNQYW5lbD1WQUxVRSZmaWxlc1BhbmVsWFBvc2l0aW9uPVZBTFVFJmZpbGVzUGFuZWxZUG9zaXRpb249VkFMVUUmZmlsZXNQYW5lbEhlaWdodD1WQUxVRSZmaWxlc1BhbmVsV2lkdGg9VkFMVUUmYXBwb2ludG1lbnQ9VkFMVUUiPmh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvUm9vbVNlcnZpY2UvdXBkYXRlUm9vbT9TSUQ9VkFMVUUmYW1wO3Jvb21zX2lkPVZBTFVFJmFtcDtuYW1lPVZBTFVFJmFtcDtyb29tdHlwZXNfaWQ9VkFMVUUmYW1wO2NvbW1lbnQ9VkFMVUUmYW1wO251bWJlck9mUGFydGl6aXBhbnRzPVZBTFVFJmFtcDtpc3B1YmxpYz1WQUxVRSZhbXA7dmlkZW9Qb2RXaWR0aD1WQUxVRSZhbXA7dmlkZW9Qb2RIZWlnaHQ9VkFMVUUmYW1wO3ZpZGVvUG9kWFBvc2l0aW9uPVZBTFVFJmFtcDt2aWRlb1BvZFlQb3NpdGlvbj1WQUxVRSZhbXA7bW9kZXJhdGlvblBhbmVsWFBvc2l0aW9uPVZBTFVFJmFtcDtzaG93V2hpdGVCb2FyZD1WQUxVRSZhbXA7d2hpdGVCb2FyZFBhbmVsWFBvc2l0aW9uPVZBTFVFJmFtcDt3aGl0ZUJvYXJkUGFuZWxZUG9zaXRpb249VkFMVUUmYW1wO3doaXRlQm9hcmRQYW5lbEhlaWdodD1WQUxVRSZhbXA7d2hpdGVCb2FyZFBhbmVsV2lkdGg9VkFMVUUmYW1wO3Nob3dGaWxlc1BhbmVsPVZBTFVFJmFtcDtmaWxlc1BhbmVsWFBvc2l0aW9uPVZBTFVFJmFtcDtmaWxlc1BhbmVsWVBvc2l0aW9uPVZBTFVFJmFtcDtmaWxlc1BhbmVsSGVpZ2h0PVZBTFVFJmFtcDtmaWxlc1BhbmVsV2lkdGg9VkFMVUUmYW1wO2FwcG9pbnRtZW50PVZBTFVFPC9hPg0KKyAgICAJCSAgPC9kaXY+DQorICAgIAkgICAJCQkJICAgIAkJICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kIj4NCisJCSAgICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kX2hlYWRlciI+DQorCQkgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjEwcHgiPg0KKyAgICAJCQk8YSBuYW1lPSJ1cGRhdGVSb29tV2l0aE1vZGVyYXRpb24iID48Yj51cGRhdGVSb29tV2l0aE1vZGVyYXRpb248L2I+PC9hPg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCQ0KKyAgICAJCQlNZXRob2Q6IDxpPnVwZGF0ZVJvb21XaXRoTW9kZXJhdGlvbiAoDQorICAgIAkJCSAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBTSUQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgTG9uZyByb29tX2lkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBuYW1lDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIExvbmcgcm9vbXR5cGVzX2lkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBjb21tZW50DQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIExvbmcgbnVtYmVyT2ZQYXJ0aXppcGFudHMNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgQm9vbGVhbiBpc3B1YmxpYw0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGFwcG9pbnRtZW50DQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEJvb2xlYW4gaXNEZW1vUm9vbQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBJbnRlZ2VyIGRlbW9UaW1lDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEJvb2xlYW4gaXNNb2RlcmF0ZWRSb29tDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJKQ0KKyAgICAJCQk8L2k+PGJyLz4NCisgICAgCQkJPHA+DQorICAgIAkJCSAgVXBkYXRlcyBhIGNvbmZlcmVuY2Ugcm9vbSBieSBpdHMgcm9vbSBpZA0KKyAgICAJCQk8L3A+DQorICAgIAkJCTxwPg0KKyAgICAgICAgICAgICAgICAgIFJldHVybiBUeXBlOiBqYXZhLmxhbmcuTG9uZw0KKyAgICAgICAgICAgICAgICA8L3A+DQorICAgIAkJCTxwPlBhcmFtczo8L3A+DQorICAgIAkJCSAgICAJCQkNCisgICAgCQkJCSAgICAJCQk8dGFibGUgcnVsZXM9ImFsbCIgYm9yZGVyPSIxIj4NCisJICAgIAkJCSAgIDx0aGVhZD4NCisJICAgIAkJCSAgIDx0cj4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5UeXBlPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5GaWVsZG5hbWU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjQwMCIgYWxpZ249ImxlZnQiPkRlc2NyaXB0aW9uPC90aD4NCisJICAgIAkJCSAgIDwvdHI+DQorCSAgICAJCQkgICA8L3RoZWFkPg0KKwkgICAgCQkJICAgPHRib2R5Pg0KKwkgICAgCQkJICAgCSAgICAJCQkgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+U0lEPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5UaGUgU0lEIG9mIHRoZSBVc2VyLiBUaGlzIFNJRCBtdXN0IGJlIG1hcmtlZCBhcyBMb2dnZWRpbjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJTG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+cm9vbV9pZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGhlIHJvb20gaWQgdG8gdXBkYXRlPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPm5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPm5ldyBuYW1lIG9mIHRoZSByb29tPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5yb29tdHlwZXNfaWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPm5ldyB0eXBlIG9mIHJvb20gKDEgPSBDb25mZXJlbmNlLCAyID0gQXVkaWVuY2UsIDMgPQorICAgICAgICAgICAgUmVzdHJpY3RlZCwgNCA9IEludGVydmlldyk8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+Y29tbWVudDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+bmV3IGNvbW1lbnQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUxvbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPm51bWJlck9mUGFydGl6aXBhbnRzPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5uZXcgbnVtYmVyT2ZQYXJ0aWNpcGFudHM8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlzcHVibGljPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5pcyBwdWJsaWM8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFwcG9pbnRtZW50PC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5pZiB0aGUgcm9vbSBpcyBhbiBhcHBvaW50bWVudDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJQm9vbGVhbg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aXNEZW1vUm9vbTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aXMgaXQgYSBEZW1vIFJvb20gd2l0aCBsaW1pdGVkIHRpbWU/ICh1c2UgZmFsc2UgaWYgbm90IHN1cmUKKyAgICAgICAgICAgIHdoYXQgdGhhdCBtZWFucyk8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUludGVnZXINCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmRlbW9UaW1lPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aW1lIGluIHNlY29uZHMgYWZ0ZXIgdGhlIHVzZXIgd2lsbCBiZSBsb2dnZWQgb3V0IChvbmx5CisgICAgICAgICAgICBlbmFibGVkIGlmIGlzRGVtb1Jvb20gaXMgdHJ1ZSk8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlzTW9kZXJhdGVkUm9vbTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VXNlcnMgaGF2ZSB0byB3YWl0IHVudGlsIGEgTW9kZXJhdG9yIGFycml2ZXMuIFVzZSB0aGUKKyAgICAgICAgICAgIGJlY29tZU1vZGVyYXRvciBwYXJhbWV0ZXIgaW4gc2V0VXNlck9iamVjdEFuZEdlbmVyYXRlUm9vbUhhc2gKKyAgICAgICAgICAgIHRvIHNldCBhIHVzZXIgYXMgZGVmYXVsdCBNb2RlcmF0b3I8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQorCSAgICAJCQk8L3RhYmxlPg0KKyAgICAJCQkgICAgCQkJPGJyLz4NCisgICAgCQkJUkVTVCBTYW1wbGUgQ2FsbC9VUkw6PGJyLz4NCisgICAgCQkJICAgIAkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Sb29tU2VydmljZS91cGRhdGVSb29tV2l0aE1vZGVyYXRpb24/U0lEPVZBTFVFJnJvb21faWQ9VkFMVUUmbmFtZT1WQUxVRSZyb29tdHlwZXNfaWQ9VkFMVUUmY29tbWVudD1WQUxVRSZudW1iZXJPZlBhcnRpemlwYW50cz1WQUxVRSZpc3B1YmxpYz1WQUxVRSZhcHBvaW50bWVudD1WQUxVRSZpc0RlbW9Sb29tPVZBTFVFJmRlbW9UaW1lPVZBTFVFJmlzTW9kZXJhdGVkUm9vbT1WQUxVRSI+aHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Sb29tU2VydmljZS91cGRhdGVSb29tV2l0aE1vZGVyYXRpb24/U0lEPVZBTFVFJmFtcDtyb29tX2lkPVZBTFVFJmFtcDtuYW1lPVZBTFVFJmFtcDtyb29tdHlwZXNfaWQ9VkFMVUUmYW1wO2NvbW1lbnQ9VkFMVUUmYW1wO251bWJlck9mUGFydGl6aXBhbnRzPVZBTFVFJmFtcDtpc3B1YmxpYz1WQUxVRSZhbXA7YXBwb2ludG1lbnQ9VkFMVUUmYW1wO2lzRGVtb1Jvb209VkFMVUUmYW1wO2RlbW9UaW1lPVZBTFVFJmFtcDtpc01vZGVyYXRlZFJvb209VkFMVUU8L2E+DQorICAgIAkJICA8L2Rpdj4NCisgICAgCSAgIAkJCQkgICAgCQkgICAgICA8ZGl2IGNsYXNzPSJtZXRob2QiPg0KKwkJICAgICAgICA8ZGl2IGNsYXNzPSJtZXRob2RfaGVhZGVyIj4NCisJCSAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTBweCI+DQorICAgIAkJCTxhIG5hbWU9InVwZGF0ZVJvb21XaXRoTW9kZXJhdGlvbkFuZFF1ZXN0aW9ucyIgPjxiPnVwZGF0ZVJvb21XaXRoTW9kZXJhdGlvbkFuZFF1ZXN0aW9uczwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+dXBkYXRlUm9vbVdpdGhNb2RlcmF0aW9uQW5kUXVlc3Rpb25zICgNCisgICAgCQkJICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIFNJRA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBMb25nIHJvb21faWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIG5hbWUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgTG9uZyByb29tdHlwZXNfaWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGNvbW1lbnQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgTG9uZyBudW1iZXJPZlBhcnRpemlwYW50cw0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGlzcHVibGljDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEJvb2xlYW4gYXBwb2ludG1lbnQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgQm9vbGVhbiBpc0RlbW9Sb29tDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEludGVnZXIgZGVtb1RpbWUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgQm9vbGVhbiBpc01vZGVyYXRlZFJvb20NCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgQm9vbGVhbiBhbGxvd1VzZXJRdWVzdGlvbnMNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkpDQorICAgIAkJCTwvaT48YnIvPg0KKyAgICAJCQk8cD4NCisgICAgCQkJICANCisgICAgCQkJPC9wPg0KKyAgICAJCQk8cD4NCisgICAgICAgICAgICAgICAgICBSZXR1cm4gVHlwZTogamF2YS5sYW5nLkxvbmcNCisgICAgICAgICAgICAgICAgPC9wPg0KKyAgICAJCQk8cD5QYXJhbXM6PC9wPg0KKyAgICAJCQkgICAgCQkJDQorICAgIAkJCQkgICAgCQkJPHRhYmxlIHJ1bGVzPSJhbGwiIGJvcmRlcj0iMSI+DQorCSAgICAJCQkgICA8dGhlYWQ+DQorCSAgICAJCQkgICA8dHI+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+VHlwZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+RmllbGRuYW1lPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSI0MDAiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvdGg+DQorCSAgICAJCQkgICA8L3RyPg0KKwkgICAgCQkJICAgPC90aGVhZD4NCisJICAgIAkJCSAgIDx0Ym9keT4NCisJICAgIAkJCSAgIAkgICAgCQkJICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlNJRDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgTG9nZ2VkaW48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUxvbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnJvb21faWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSByb29tIGlkIHRvIHVwZGF0ZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5uYW1lPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5uZXcgbmFtZSBvZiB0aGUgcm9vbTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJTG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+cm9vbXR5cGVzX2lkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5uZXcgdHlwZSBvZiByb29tICgxID0gQ29uZmVyZW5jZSwgMiA9IEF1ZGllbmNlLCAzID0KKyAgICAgICAgICAgIFJlc3RyaWN0ZWQsIDQgPSBJbnRlcnZpZXcpPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmNvbW1lbnQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPm5ldyBjb21tZW50PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5udW1iZXJPZlBhcnRpemlwYW50czwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+bmV3IG51bWJlck9mUGFydGljaXBhbnRzPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlCb29sZWFuDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5pc3B1YmxpYzwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aXMgcHVibGljPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlCb29sZWFuDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hcHBvaW50bWVudDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aWYgdGhlIHJvb20gaXMgYW4gYXBwb2ludG1lbnQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlzRGVtb1Jvb208L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlzIGl0IGEgRGVtbyBSb29tIHdpdGggbGltaXRlZCB0aW1lPyAodXNlIGZhbHNlIGlmIG5vdCBzdXJlCisgICAgICAgICAgICB3aGF0IHRoYXQgbWVhbnMpPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlJbnRlZ2VyDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5kZW1vVGltZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGltZSBpbiBzZWNvbmRzIGFmdGVyIHRoZSB1c2VyIHdpbGwgYmUgbG9nZ2VkIG91dCAob25seQorICAgICAgICAgICAgZW5hYmxlZCBpZiBpc0RlbW9Sb29tIGlzIHRydWUpPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlCb29sZWFuDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5pc01vZGVyYXRlZFJvb208L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlVzZXJzIGhhdmUgdG8gd2FpdCB1bnRpbCBhIE1vZGVyYXRvciBhcnJpdmVzLiBVc2UgdGhlCisgICAgICAgICAgICBiZWNvbWVNb2RlcmF0b3IgcGFyYW1ldGVyIGluIHNldFVzZXJPYmplY3RBbmRHZW5lcmF0ZVJvb21IYXNoCisgICAgICAgICAgICB0byBzZXQgYSB1c2VyIGFzIGRlZmF1bHQgTW9kZXJhdG9yPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlCb29sZWFuDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hbGxvd1VzZXJRdWVzdGlvbnM8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmVuYWJsZSBvciBkaXNhYmxlIHRoZSBidXR0b24gdG8gYWxsb3cgdXNlcnMgdG8gYXBwbHkgZm9yCisgICAgICAgICAgICBtb2RlcmF0aW9uPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KKwkgICAgCQkJPC90YWJsZT4NCisgICAgCQkJICAgIAkJCTxici8+DQorICAgIAkJCVJFU1QgU2FtcGxlIENhbGwvVVJMOjxici8+DQorICAgIAkJCSAgICAJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Sb29tU2VydmljZS91cGRhdGVSb29tV2l0aE1vZGVyYXRpb25BbmRRdWVzdGlvbnM/U0lEPVZBTFVFJnJvb21faWQ9VkFMVUUmbmFtZT1WQUxVRSZyb29tdHlwZXNfaWQ9VkFMVUUmY29tbWVudD1WQUxVRSZudW1iZXJPZlBhcnRpemlwYW50cz1WQUxVRSZpc3B1YmxpYz1WQUxVRSZhcHBvaW50bWVudD1WQUxVRSZpc0RlbW9Sb29tPVZBTFVFJmRlbW9UaW1lPVZBTFVFJmlzTW9kZXJhdGVkUm9vbT1WQUxVRSZhbGxvd1VzZXJRdWVzdGlvbnM9VkFMVUUiPmh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvUm9vbVNlcnZpY2UvdXBkYXRlUm9vbVdpdGhNb2RlcmF0aW9uQW5kUXVlc3Rpb25zP1NJRD1WQUxVRSZhbXA7cm9vbV9pZD1WQUxVRSZhbXA7bmFtZT1WQUxVRSZhbXA7cm9vbXR5cGVzX2lkPVZBTFVFJmFtcDtjb21tZW50PVZBTFVFJmFtcDtudW1iZXJPZlBhcnRpemlwYW50cz1WQUxVRSZhbXA7aXNwdWJsaWM9VkFMVUUmYW1wO2FwcG9pbnRtZW50PVZBTFVFJmFtcDtpc0RlbW9Sb29tPVZBTFVFJmFtcDtkZW1vVGltZT1WQUxVRSZhbXA7aXNNb2RlcmF0ZWRSb29tPVZBTFVFJmFtcDthbGxvd1VzZXJRdWVzdGlvbnM9VkFMVUU8L2E+DQorICAgIAkJICA8L2Rpdj4NCisgICAgCSAgIAkJCQkgICAgCQkgICAgICA8ZGl2IGNsYXNzPSJtZXRob2QiPg0KKwkJICAgICAgICA8ZGl2IGNsYXNzPSJtZXRob2RfaGVhZGVyIj4NCisJCSAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTBweCI+DQorICAgIAkJCTxhIG5hbWU9InVwZGF0ZVJvb21XaXRoTW9kZXJhdGlvblF1ZXN0aW9uc0F1ZGlvVHlwZUFuZEhpZGVPcHRpb25zIiA+PGI+dXBkYXRlUm9vbVdpdGhNb2RlcmF0aW9uUXVlc3Rpb25zQXVkaW9UeXBlQW5kSGlkZU9wdGlvbnM8L2I+PC9hPg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCQ0KKyAgICAJCQlNZXRob2Q6IDxpPnVwZGF0ZVJvb21XaXRoTW9kZXJhdGlvblF1ZXN0aW9uc0F1ZGlvVHlwZUFuZEhpZGVPcHRpb25zICgNCisgICAgCQkJICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIFNJRA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBMb25nIHJvb21faWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIG5hbWUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgTG9uZyByb29tdHlwZXNfaWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGNvbW1lbnQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgTG9uZyBudW1iZXJPZlBhcnRpemlwYW50cw0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGlzcHVibGljDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEJvb2xlYW4gYXBwb2ludG1lbnQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgQm9vbGVhbiBpc0RlbW9Sb29tDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEludGVnZXIgZGVtb1RpbWUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgQm9vbGVhbiBpc01vZGVyYXRlZFJvb20NCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgQm9vbGVhbiBhbGxvd1VzZXJRdWVzdGlvbnMNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgQm9vbGVhbiBpc0F1ZGlvT25seQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGhpZGVUb3BCYXINCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgQm9vbGVhbiBoaWRlQ2hhdA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGhpZGVBY3Rpdml0aWVzQW5kQWN0aW9ucw0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGhpZGVGaWxlc0V4cGxvcmVyDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEJvb2xlYW4gaGlkZUFjdGlvbnNNZW51DQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEJvb2xlYW4gaGlkZVNjcmVlblNoYXJpbmcNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgQm9vbGVhbiBoaWRlV2hpdGVib2FyZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSkNCisgICAgCQkJPC9pPjxici8+DQorICAgIAkJCTxwPg0KKyAgICAJCQkgIHVwZGF0ZSByb29tIHdpdGggb3B0aW9ucyBmb3IgdXNlciBxdWVzdGlvbnMsIGF1ZGlvIG9ubHkgYW5kIGhpZGUNCisgICAgCQkJPC9wPg0KKyAgICAJCQk8cD4NCisgICAgICAgICAgICAgICAgICBSZXR1cm4gVHlwZTogamF2YS5sYW5nLkxvbmcNCisgICAgICAgICAgICAgICAgPC9wPg0KKyAgICAJCQk8cD5QYXJhbXM6PC9wPg0KKyAgICAJCQkgICAgCQkJDQorICAgIAkJCQkgICAgCQkJPHRhYmxlIHJ1bGVzPSJhbGwiIGJvcmRlcj0iMSI+DQorCSAgICAJCQkgICA8dGhlYWQ+DQorCSAgICAJCQkgICA8dHI+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+VHlwZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+RmllbGRuYW1lPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSI0MDAiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvdGg+DQorCSAgICAJCQkgICA8L3RyPg0KKwkgICAgCQkJICAgPC90aGVhZD4NCisJICAgIAkJCSAgIDx0Ym9keT4NCisJICAgIAkJCSAgIAkgICAgCQkJICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlNJRDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgTG9nZ2VkaW48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUxvbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnJvb21faWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSByb29tIGlkIHRvIHVwZGF0ZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5uYW1lPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5uZXcgbmFtZSBvZiB0aGUgcm9vbTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJTG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+cm9vbXR5cGVzX2lkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5uZXcgdHlwZSBvZiByb29tICgxID0gQ29uZmVyZW5jZSwgMiA9IEF1ZGllbmNlLCAzID0KKyAgICAgICAgICAgIFJlc3RyaWN0ZWQsIDQgPSBJbnRlcnZpZXcpPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmNvbW1lbnQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPm5ldyBjb21tZW50PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5udW1iZXJPZlBhcnRpemlwYW50czwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+bnVtYmVyIG9mIHBhcnRpY2lwYW50czwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJQm9vbGVhbg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aXNwdWJsaWM8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlzIHB1YmxpYzwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJQm9vbGVhbg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+YXBwb2ludG1lbnQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlmIHRoZSByb29tIGlzIGFuIGFwcG9pbnRtZW50ICh1c2UgZmFsc2UgaWYgbm90IHN1cmUgd2hhdCB0aGF0CisgICAgICAgICAgICBtZWFucyk8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlzRGVtb1Jvb208L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlzIGl0IGEgRGVtbyBSb29tIHdpdGggbGltaXRlZCB0aW1lPyAodXNlIGZhbHNlIGlmIG5vdCBzdXJlCisgICAgICAgICAgICB3aGF0IHRoYXQgbWVhbnMpPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlJbnRlZ2VyDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5kZW1vVGltZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGltZSBpbiBzZWNvbmRzIGFmdGVyIHRoZSB1c2VyIHdpbGwgYmUgbG9nZ2VkIG91dCAob25seQorICAgICAgICAgICAgZW5hYmxlZCBpZiBpc0RlbW9Sb29tIGlzIHRydWUpPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlCb29sZWFuDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5pc01vZGVyYXRlZFJvb208L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlVzZXJzIGhhdmUgdG8gd2FpdCB1bnRpbCBhIE1vZGVyYXRvciBhcnJpdmVzLiBVc2UgdGhlCisgICAgICAgICAgICBiZWNvbWVNb2RlcmF0b3IgcGFyYW1ldGVyIGluIHNldFVzZXJPYmplY3RBbmRHZW5lcmF0ZVJvb21IYXNoCisgICAgICAgICAgICB0byBzZXQgYSB1c2VyIGFzIGRlZmF1bHQgTW9kZXJhdG9yPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlCb29sZWFuDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hbGxvd1VzZXJRdWVzdGlvbnM8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmVuYWJsZSBvciBkaXNhYmxlIHRoZSBidXR0b24gdG8gYWxsb3cgdXNlcnMgdG8gYXBwbHkgZm9yCisgICAgICAgICAgICBtb2RlcmF0aW9uPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlCb29sZWFuDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5pc0F1ZGlvT25seTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+ZW5hYmxlIG9yIGRpc2FibGUgdGhlIHZpZGVvIC8gb3IgYXVkaW8tb25seTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJQm9vbGVhbg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aGlkZVRvcEJhcjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aGlkZSBvciBzaG93IFRvcEJhcjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJQm9vbGVhbg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aGlkZUNoYXQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmhpZGUgb3Igc2hvdyBDaGF0PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlCb29sZWFuDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5oaWRlQWN0aXZpdGllc0FuZEFjdGlvbnM8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmhpZGUgb3Igc2hvdyBBY3Rpdml0aWVzIEFuZCBBY3Rpb25zPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlCb29sZWFuDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5oaWRlRmlsZXNFeHBsb3JlcjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aGlkZSBvciBzaG93IEZpbGVzIEV4cGxvcmVyPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlCb29sZWFuDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5oaWRlQWN0aW9uc01lbnU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmhpZGUgb3Igc2hvdyBBY3Rpb25zIE1lbnU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmhpZGVTY3JlZW5TaGFyaW5nPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5oaWRlIG9yIHNob3cgU2NyZWVuIFNoYXJpbmc8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmhpZGVXaGl0ZWJvYXJkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5oaWRlIG9yIHNob3cgV2hpdGVib2FyZC4gSWYgd2hpdGJvYXJkIGlzIGhpZGRlbiwgdmlkZW8gcG9kcworICAgICAgICAgICAgYW5kIHNjcm9sbGJhciBhcHBlYXIgaW5zdGVhZC48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQorCSAgICAJCQk8L3RhYmxlPg0KKyAgICAJCQkgICAgCQkJPGJyLz4NCisgICAgCQkJUkVTVCBTYW1wbGUgQ2FsbC9VUkw6PGJyLz4NCisgICAgCQkJICAgIAkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Sb29tU2VydmljZS91cGRhdGVSb29tV2l0aE1vZGVyYXRpb25RdWVzdGlvbnNBdWRpb1R5cGVBbmRIaWRlT3B0aW9ucz9TSUQ9VkFMVUUmcm9vbV9pZD1WQUxVRSZuYW1lPVZBTFVFJnJvb210eXBlc19pZD1WQUxVRSZjb21tZW50PVZBTFVFJm51bWJlck9mUGFydGl6aXBhbnRzPVZBTFVFJmlzcHVibGljPVZBTFVFJmFwcG9pbnRtZW50PVZBTFVFJmlzRGVtb1Jvb209VkFMVUUmZGVtb1RpbWU9VkFMVUUmaXNNb2RlcmF0ZWRSb29tPVZBTFVFJmFsbG93VXNlclF1ZXN0aW9ucz1WQUxVRSZpc0F1ZGlvT25seT1WQUxVRSZoaWRlVG9wQmFyPVZBTFVFJmhpZGVDaGF0PVZBTFVFJmhpZGVBY3Rpdml0aWVzQW5kQWN0aW9ucz1WQUxVRSZoaWRlRmlsZXNFeHBsb3Jlcj1WQUxVRSZoaWRlQWN0aW9uc01lbnU9VkFMVUUmaGlkZVNjcmVlblNoYXJpbmc9VkFMVUUmaGlkZVdoaXRlYm9hcmQ9VkFMVUUiPmh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvUm9vbVNlcnZpY2UvdXBkYXRlUm9vbVdpdGhNb2RlcmF0aW9uUXVlc3Rpb25zQXVkaW9UeXBlQW5kSGlkZU9wdGlvbnM/U0lEPVZBTFVFJmFtcDtyb29tX2lkPVZBTFVFJmFtcDtuYW1lPVZBTFVFJmFtcDtyb29tdHlwZXNfaWQ9VkFMVUUmYW1wO2NvbW1lbnQ9VkFMVUUmYW1wO251bWJlck9mUGFydGl6aXBhbnRzPVZBTFVFJmFtcDtpc3B1YmxpYz1WQUxVRSZhbXA7YXBwb2ludG1lbnQ9VkFMVUUmYW1wO2lzRGVtb1Jvb209VkFMVUUmYW1wO2RlbW9UaW1lPVZBTFVFJmFtcDtpc01vZGVyYXRlZFJvb209VkFMVUUmYW1wO2FsbG93VXNlclF1ZXN0aW9ucz1WQUxVRSZhbXA7aXNBdWRpb09ubHk9VkFMVUUmYW1wO2hpZGVUb3BCYXI9VkFMVUUmYW1wO2hpZGVDaGF0PVZBTFVFJmFtcDtoaWRlQWN0aXZpdGllc0FuZEFjdGlvbnM9VkFMVUUmYW1wO2hpZGVGaWxlc0V4cGxvcmVyPVZBTFVFJmFtcDtoaWRlQWN0aW9uc01lbnU9VkFMVUUmYW1wO2hpZGVTY3JlZW5TaGFyaW5nPVZBTFVFJmFtcDtoaWRlV2hpdGVib2FyZD1WQUxVRTwvYT4NCisgICAgCQkgIDwvZGl2Pg0KKyAgICAJICAgCQkJCSAgICAJCSAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZCI+DQorCQkgICAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZF9oZWFkZXIiPg0KKwkJICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDoxMHB4Ij4NCisgICAgCQkJPGEgbmFtZT0iZGVsZXRlUm9vbSIgPjxiPmRlbGV0ZVJvb208L2I+PC9hPg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCQ0KKyAgICAJCQlNZXRob2Q6IDxpPmRlbGV0ZVJvb20gKA0KKyAgICAJCQkgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgU0lEDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIGxvbmcgcm9vbXNfaWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkpDQorICAgIAkJCTwvaT48YnIvPg0KKyAgICAJCQk8cD4NCisgICAgCQkJICBEZWxldGUgYSByb29tIGJ5IGl0cyByb29tIGlkDQorICAgIAkJCTwvcD4NCisgICAgCQkJPHA+DQorICAgICAgICAgICAgICAgICAgUmV0dXJuIFR5cGU6IGphdmEubGFuZy5Mb25nDQorICAgICAgICAgICAgICAgIDwvcD4NCisgICAgCQkJPHA+UGFyYW1zOjwvcD4NCisgICAgCQkJICAgIAkJCQ0KKyAgICAJCQkJICAgIAkJCTx0YWJsZSBydWxlcz0iYWxsIiBib3JkZXI9IjEiPg0KKwkgICAgCQkJICAgPHRoZWFkPg0KKwkgICAgCQkJICAgPHRyPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPlR5cGU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPkZpZWxkbmFtZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iNDAwIiBhbGlnbj0ibGVmdCI+RGVzY3JpcHRpb248L3RoPg0KKwkgICAgCQkJICAgPC90cj4NCisJICAgIAkJCSAgIDwvdGhlYWQ+DQorCSAgICAJCQkgICA8dGJvZHk+DQorCSAgICAJCQkgICAJICAgIAkJCSAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5TSUQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIExvZ2dlZGluPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlsb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5yb29tc19pZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KKwkgICAgCQkJPC90YWJsZT4NCisgICAgCQkJICAgIAkJCTxici8+DQorICAgIAkJCVJFU1QgU2FtcGxlIENhbGwvVVJMOjxici8+DQorICAgIAkJCSAgICAJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvUm9vbVNlcnZpY2UvZGVsZXRlUm9vbT9TSUQ9VkFMVUUmcm9vbXNfaWQ9VkFMVUUiPmh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvUm9vbVNlcnZpY2UvZGVsZXRlUm9vbT9TSUQ9VkFMVUUmYW1wO3Jvb21zX2lkPVZBTFVFPC9hPg0KKyAgICAJCSAgPC9kaXY+DQorICAgIAkgICAJCQkJICAgIAkJICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kIj4NCisJCSAgICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kX2hlYWRlciI+DQorCQkgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjEwcHgiPg0KKyAgICAJCQk8YSBuYW1lPSJraWNrVXNlciIgPjxiPmtpY2tVc2VyPC9iPjwvYT4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQkNCisgICAgCQkJTWV0aG9kOiA8aT5raWNrVXNlciAoDQorICAgIAkJCSAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBTSURfQWRtaW4NCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgTG9uZyByb29tX2lkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJKQ0KKyAgICAJCQk8L2k+PGJyLz4NCisgICAgCQkJPHA+DQorICAgIAkJCSAga2ljayBhbGwgdXNlcyBvZiBhIGNlcnRhaW4gcm9vbQ0KKyAgICAJCQk8L3A+DQorICAgIAkJCTxwPg0KKyAgICAgICAgICAgICAgICAgIFJldHVybiBUeXBlOiBqYXZhLmxhbmcuQm9vbGVhbg0KKyAgICAgICAgICAgICAgICA8L3A+DQorICAgIAkJCTxwPlBhcmFtczo8L3A+DQorICAgIAkJCSAgICAJCQkNCisgICAgCQkJCSAgICAJCQk8dGFibGUgcnVsZXM9ImFsbCIgYm9yZGVyPSIxIj4NCisJICAgIAkJCSAgIDx0aGVhZD4NCisJICAgIAkJCSAgIDx0cj4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5UeXBlPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5GaWVsZG5hbWU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjQwMCIgYWxpZ249ImxlZnQiPkRlc2NyaXB0aW9uPC90aD4NCisJICAgIAkJCSAgIDwvdHI+DQorCSAgICAJCQkgICA8L3RoZWFkPg0KKwkgICAgCQkJICAgPHRib2R5Pg0KKwkgICAgCQkJICAgCSAgICAJCQkgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+U0lEPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5UaGUgU0lEIG9mIHRoZSBVc2VyLiBUaGlzIFNJRCBtdXN0IGJlIG1hcmtlZCBhcyBMb2dnZWRpbgorICAgICAgICAgICAgX0FkbWluPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5yb29tX2lkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aGUgcm9vbSBpZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCisJICAgIAkJCTwvdGFibGU+DQorICAgIAkJCSAgICAJCQk8YnIvPg0KKyAgICAJCQlSRVNUIFNhbXBsZSBDYWxsL1VSTDo8YnIvPg0KKyAgICAJCQkgICAgCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1Jvb21TZXJ2aWNlL2tpY2tVc2VyP1NJRF9BZG1pbj1WQUxVRSZyb29tX2lkPVZBTFVFIj5odHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1Jvb21TZXJ2aWNlL2tpY2tVc2VyP1NJRF9BZG1pbj1WQUxVRSZhbXA7cm9vbV9pZD1WQUxVRTwvYT4NCisgICAgCQkgIDwvZGl2Pg0KKyAgICAJICAgCQkJCSAgICAJCSAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZCI+DQorCQkgICAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZF9oZWFkZXIiPg0KKwkJICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDoxMHB4Ij4NCisgICAgCQkJPGEgbmFtZT0iYWRkUm9vbVdpdGhNb2RlcmF0aW9uQW5kRXh0ZXJuYWxUeXBlIiA+PGI+YWRkUm9vbVdpdGhNb2RlcmF0aW9uQW5kRXh0ZXJuYWxUeXBlPC9iPjwvYT4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQkNCisgICAgCQkJTWV0aG9kOiA8aT5hZGRSb29tV2l0aE1vZGVyYXRpb25BbmRFeHRlcm5hbFR5cGUgKA0KKyAgICAJCQkgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgU0lEDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBuYW1lDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIExvbmcgcm9vbXR5cGVzX2lkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBjb21tZW50DQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIExvbmcgbnVtYmVyT2ZQYXJ0aXppcGFudHMNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgQm9vbGVhbiBpc3B1YmxpYw0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGFwcG9pbnRtZW50DQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEJvb2xlYW4gaXNEZW1vUm9vbQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBJbnRlZ2VyIGRlbW9UaW1lDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEJvb2xlYW4gaXNNb2RlcmF0ZWRSb29tDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBleHRlcm5hbFJvb21UeXBlDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJKQ0KKyAgICAJCQk8L2k+PGJyLz4NCisgICAgCQkJPHA+DQorICAgIAkJCSAgQWRkIGEgbmV3IGNvbmZlcmVuY2Ugcm9vbSB3aXRoIG9wdGlvbiB0byBzZXQgdGhlIGV4dGVybmFsIHJvb20gdHlwZSwgdGhlCisgZXh0ZXJuYWwgcm9vbSB0eXBlIHNob3VsZCBiZSBzZXQgaWYgbXVsdGlwbGUgYXBwbGljYXRpb25zIHVzZSB0aGUgc2FtZQorIE9wZW5NZWV0aW5ncyBpbnN0YW5jZQ0KKyAgICAJCQk8L3A+DQorICAgIAkJCTxwPg0KKyAgICAgICAgICAgICAgICAgIFJldHVybiBUeXBlOiBqYXZhLmxhbmcuTG9uZw0KKyAgICAgICAgICAgICAgICA8L3A+DQorICAgIAkJCTxwPlBhcmFtczo8L3A+DQorICAgIAkJCSAgICAJCQkNCisgICAgCQkJCSAgICAJCQk8dGFibGUgcnVsZXM9ImFsbCIgYm9yZGVyPSIxIj4NCisJICAgIAkJCSAgIDx0aGVhZD4NCisJICAgIAkJCSAgIDx0cj4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5UeXBlPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5GaWVsZG5hbWU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjQwMCIgYWxpZ249ImxlZnQiPkRlc2NyaXB0aW9uPC90aD4NCisJICAgIAkJCSAgIDwvdHI+DQorCSAgICAJCQkgICA8L3RoZWFkPg0KKwkgICAgCQkJICAgPHRib2R5Pg0KKwkgICAgCQkJICAgCSAgICAJCQkgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+U0lEPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5UaGUgU0lEIG9mIHRoZSBVc2VyLiBUaGlzIFNJRCBtdXN0IGJlIG1hcmtlZCBhcyBMb2dnZWRpbjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5uYW1lPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5uZXcgbmFtZSBvZiB0aGUgcm9vbTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJTG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+cm9vbXR5cGVzX2lkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5uZXcgdHlwZSBvZiByb29tICgxID0gQ29uZmVyZW5jZSwgMiA9IEF1ZGllbmNlLCAzID0KKyAgICAgICAgICAgIFJlc3RyaWN0ZWQsIDQgPSBJbnRlcnZpZXcpPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmNvbW1lbnQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPm5ldyBjb21tZW50PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5udW1iZXJPZlBhcnRpemlwYW50czwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+bmV3IG51bWJlck9mUGFydGljaXBhbnRzPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlCb29sZWFuDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5pc3B1YmxpYzwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aXMgcHVibGljPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlCb29sZWFuDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hcHBvaW50bWVudDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aWYgdGhlIHJvb20gaXMgYW4gYXBwb2ludG1lbnQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlzRGVtb1Jvb208L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlzIGl0IGEgRGVtbyBSb29tIHdpdGggbGltaXRlZCB0aW1lPyAodXNlIGZhbHNlIGlmIG5vdCBzdXJlCisgICAgICAgICAgICB3aGF0IHRoYXQgbWVhbnMpPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlJbnRlZ2VyDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5kZW1vVGltZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGltZSBpbiBzZWNvbmRzIGFmdGVyIHRoZSB1c2VyIHdpbGwgYmUgbG9nZ2VkIG91dCAob25seQorICAgICAgICAgICAgZW5hYmxlZCBpZiBpc0RlbW9Sb29tIGlzIHRydWUpPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlCb29sZWFuDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5pc01vZGVyYXRlZFJvb208L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlVzZXJzIGhhdmUgdG8gd2FpdCB1bnRpbCBhIE1vZGVyYXRvciBhcnJpdmVzLiBVc2UgdGhlCisgICAgICAgICAgICBiZWNvbWVNb2RlcmF0b3IgcGFyYW1ldGVyIGluIHNldFVzZXJPYmplY3RBbmRHZW5lcmF0ZVJvb21IYXNoCisgICAgICAgICAgICB0byBzZXQgYSB1c2VyIGFzIGRlZmF1bHQgTW9kZXJhdG9yPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmV4dGVybmFsUm9vbVR5cGU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSBleHRlcm5hbCByb29tIHR5cGUgKGNhbiBiZSB1c2VkIHRvIGlkZW50aWZ5IGRpZmZlcmVudAorICAgICAgICAgICAgZXh0ZXJuYWwgc3lzdGVtcyB1c2luZyBzYW1lIE9wZW5NZWV0aW5ncyBpbnN0YW5jZSk8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQorCSAgICAJCQk8L3RhYmxlPg0KKyAgICAJCQkgICAgCQkJPGJyLz4NCisgICAgCQkJUkVTVCBTYW1wbGUgQ2FsbC9VUkw6PGJyLz4NCisgICAgCQkJICAgIAkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Sb29tU2VydmljZS9hZGRSb29tV2l0aE1vZGVyYXRpb25BbmRFeHRlcm5hbFR5cGU/U0lEPVZBTFVFJm5hbWU9VkFMVUUmcm9vbXR5cGVzX2lkPVZBTFVFJmNvbW1lbnQ9VkFMVUUmbnVtYmVyT2ZQYXJ0aXppcGFudHM9VkFMVUUmaXNwdWJsaWM9VkFMVUUmYXBwb2ludG1lbnQ9VkFMVUUmaXNEZW1vUm9vbT1WQUxVRSZkZW1vVGltZT1WQUxVRSZpc01vZGVyYXRlZFJvb209VkFMVUUmZXh0ZXJuYWxSb29tVHlwZT1WQUxVRSI+aHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Sb29tU2VydmljZS9hZGRSb29tV2l0aE1vZGVyYXRpb25BbmRFeHRlcm5hbFR5cGU/U0lEPVZBTFVFJmFtcDtuYW1lPVZBTFVFJmFtcDtyb29tdHlwZXNfaWQ9VkFMVUUmYW1wO2NvbW1lbnQ9VkFMVUUmYW1wO251bWJlck9mUGFydGl6aXBhbnRzPVZBTFVFJmFtcDtpc3B1YmxpYz1WQUxVRSZhbXA7YXBwb2ludG1lbnQ9VkFMVUUmYW1wO2lzRGVtb1Jvb209VkFMVUUmYW1wO2RlbW9UaW1lPVZBTFVFJmFtcDtpc01vZGVyYXRlZFJvb209VkFMVUUmYW1wO2V4dGVybmFsUm9vbVR5cGU9VkFMVUU8L2E+DQorICAgIAkJICA8L2Rpdj4NCisgICAgCSAgIAkJCQkgICAgCQkgICAgICA8ZGl2IGNsYXNzPSJtZXRob2QiPg0KKwkJICAgICAgICA8ZGl2IGNsYXNzPSJtZXRob2RfaGVhZGVyIj4NCisJCSAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTBweCI+DQorICAgIAkJCTxhIG5hbWU9ImFkZFJvb21XaXRoTW9kZXJhdGlvbkV4dGVybmFsVHlwZUFuZEF1ZGlvVHlwZSIgPjxiPmFkZFJvb21XaXRoTW9kZXJhdGlvbkV4dGVybmFsVHlwZUFuZEF1ZGlvVHlwZTwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+YWRkUm9vbVdpdGhNb2RlcmF0aW9uRXh0ZXJuYWxUeXBlQW5kQXVkaW9UeXBlICgNCisgICAgCQkJICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIFNJRA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgbmFtZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBMb25nIHJvb210eXBlc19pZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgY29tbWVudA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBMb25nIG51bWJlck9mUGFydGl6aXBhbnRzDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEJvb2xlYW4gaXNwdWJsaWMNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgQm9vbGVhbiBhcHBvaW50bWVudA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGlzRGVtb1Jvb20NCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgSW50ZWdlciBkZW1vVGltZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGlzTW9kZXJhdGVkUm9vbQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgZXh0ZXJuYWxSb29tVHlwZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGFsbG93VXNlclF1ZXN0aW9ucw0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGlzQXVkaW9Pbmx5DQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJKQ0KKyAgICAJCQk8L2k+PGJyLz4NCisgICAgCQkJPHA+DQorICAgIAkJCSAgQWRkcyBhIG5ldyByb29tIHdpdGggb3B0aW9ucyBmb3IgYXVkaW8gb25seQ0KKyAgICAJCQk8L3A+DQorICAgIAkJCTxwPg0KKyAgICAgICAgICAgICAgICAgIFJldHVybiBUeXBlOiBqYXZhLmxhbmcuTG9uZw0KKyAgICAgICAgICAgICAgICA8L3A+DQorICAgIAkJCTxwPlBhcmFtczo8L3A+DQorICAgIAkJCSAgICAJCQkNCisgICAgCQkJCSAgICAJCQk8dGFibGUgcnVsZXM9ImFsbCIgYm9yZGVyPSIxIj4NCisJICAgIAkJCSAgIDx0aGVhZD4NCisJICAgIAkJCSAgIDx0cj4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5UeXBlPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5GaWVsZG5hbWU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjQwMCIgYWxpZ249ImxlZnQiPkRlc2NyaXB0aW9uPC90aD4NCisJICAgIAkJCSAgIDwvdHI+DQorCSAgICAJCQkgICA8L3RoZWFkPg0KKwkgICAgCQkJICAgPHRib2R5Pg0KKwkgICAgCQkJICAgCSAgICAJCQkgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+U0lEPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5UaGUgU0lEIG9mIHRoZSBVc2VyLiBUaGlzIFNJRCBtdXN0IGJlIG1hcmtlZCBhcyBMb2dnZWRpbjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5uYW1lPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5uZXcgbmFtZSBvZiB0aGUgcm9vbTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJTG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+cm9vbXR5cGVzX2lkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5uZXcgdHlwZSBvZiByb29tICgxID0gQ29uZmVyZW5jZSwgMiA9IEF1ZGllbmNlLCAzID0KKyAgICAgICAgICAgIFJlc3RyaWN0ZWQsIDQgPSBJbnRlcnZpZXcpPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmNvbW1lbnQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPm5ldyBjb21tZW50PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5udW1iZXJPZlBhcnRpemlwYW50czwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+bmV3IG51bWJlck9mUGFydGljaXBhbnRzPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlCb29sZWFuDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5pc3B1YmxpYzwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aXMgcHVibGljPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlCb29sZWFuDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hcHBvaW50bWVudDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aWYgdGhlIHJvb20gaXMgYW4gYXBwb2ludG1lbnQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlzRGVtb1Jvb208L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlzIGl0IGEgRGVtbyBSb29tIHdpdGggbGltaXRlZCB0aW1lPyAodXNlIGZhbHNlIGlmIG5vdCBzdXJlCisgICAgICAgICAgICB3aGF0IHRoYXQgbWVhbnMpPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlJbnRlZ2VyDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5kZW1vVGltZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGltZSBpbiBzZWNvbmRzIGFmdGVyIHRoZSB1c2VyIHdpbGwgYmUgbG9nZ2VkIG91dCAob25seQorICAgICAgICAgICAgZW5hYmxlZCBpZiBpc0RlbW9Sb29tIGlzIHRydWUpPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlCb29sZWFuDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5pc01vZGVyYXRlZFJvb208L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlVzZXJzIGhhdmUgdG8gd2FpdCB1bnRpbCBhIE1vZGVyYXRvciBhcnJpdmVzLiBVc2UgdGhlCisgICAgICAgICAgICBiZWNvbWVNb2RlcmF0b3IgcGFyYW1ldGVyIGluIHNldFVzZXJPYmplY3RBbmRHZW5lcmF0ZVJvb21IYXNoCisgICAgICAgICAgICB0byBzZXQgYSB1c2VyIGFzIGRlZmF1bHQgTW9kZXJhdG9yPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmV4dGVybmFsUm9vbVR5cGU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSBleHRlcm5hbCByb29tIHR5cGUgKGNhbiBiZSB1c2VkIHRvIGlkZW50aWZ5IGRpZmZlcmVudAorICAgICAgICAgICAgZXh0ZXJuYWwgc3lzdGVtcyB1c2luZyBzYW1lIE9wZW5NZWV0aW5ncyBpbnN0YW5jZSk8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFsbG93VXNlclF1ZXN0aW9uczwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+ZW5hYmxlIG9yIGRpc2FibGUgdGhlIGJ1dHRvbiB0byBhbGxvdyB1c2VycyB0byBhcHBseSBmb3IKKyAgICAgICAgICAgIG1vZGVyYXRpb248L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlzQXVkaW9Pbmx5PC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5lbmFibGUgb3IgZGlzYWJsZSB0aGUgdmlkZW8gLyBvciBhdWRpby1vbmx5PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KKwkgICAgCQkJPC90YWJsZT4NCisgICAgCQkJICAgIAkJCTxici8+DQorICAgIAkJCVJFU1QgU2FtcGxlIENhbGwvVVJMOjxici8+DQorICAgIAkJCSAgICAJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1Jvb21TZXJ2aWNlL2FkZFJvb21XaXRoTW9kZXJhdGlvbkV4dGVybmFsVHlwZUFuZEF1ZGlvVHlwZT9TSUQ9VkFMVUUmbmFtZT1WQUxVRSZyb29tdHlwZXNfaWQ9VkFMVUUmY29tbWVudD1WQUxVRSZudW1iZXJPZlBhcnRpemlwYW50cz1WQUxVRSZpc3B1YmxpYz1WQUxVRSZhcHBvaW50bWVudD1WQUxVRSZpc0RlbW9Sb29tPVZBTFVFJmRlbW9UaW1lPVZBTFVFJmlzTW9kZXJhdGVkUm9vbT1WQUxVRSZleHRlcm5hbFJvb21UeXBlPVZBTFVFJmFsbG93VXNlclF1ZXN0aW9ucz1WQUxVRSZpc0F1ZGlvT25seT1WQUxVRSI+aHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Sb29tU2VydmljZS9hZGRSb29tV2l0aE1vZGVyYXRpb25FeHRlcm5hbFR5cGVBbmRBdWRpb1R5cGU/U0lEPVZBTFVFJmFtcDtuYW1lPVZBTFVFJmFtcDtyb29tdHlwZXNfaWQ9VkFMVUUmYW1wO2NvbW1lbnQ9VkFMVUUmYW1wO251bWJlck9mUGFydGl6aXBhbnRzPVZBTFVFJmFtcDtpc3B1YmxpYz1WQUxVRSZhbXA7YXBwb2ludG1lbnQ9VkFMVUUmYW1wO2lzRGVtb1Jvb209VkFMVUUmYW1wO2RlbW9UaW1lPVZBTFVFJmFtcDtpc01vZGVyYXRlZFJvb209VkFMVUUmYW1wO2V4dGVybmFsUm9vbVR5cGU9VkFMVUUmYW1wO2FsbG93VXNlclF1ZXN0aW9ucz1WQUxVRSZhbXA7aXNBdWRpb09ubHk9VkFMVUU8L2E+DQorICAgIAkJICA8L2Rpdj4NCisgICAgCSAgIAkJCQkgICAgCQkgICAgICA8ZGl2IGNsYXNzPSJtZXRob2QiPg0KKwkJICAgICAgICA8ZGl2IGNsYXNzPSJtZXRob2RfaGVhZGVyIj4NCisJCSAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTBweCI+DQorICAgIAkJCTxhIG5hbWU9ImFkZFJvb21XaXRoTW9kZXJhdGlvbkFuZFJlY29yZGluZ0ZsYWdzIiA+PGI+YWRkUm9vbVdpdGhNb2RlcmF0aW9uQW5kUmVjb3JkaW5nRmxhZ3M8L2I+PC9hPg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCQ0KKyAgICAJCQlNZXRob2Q6IDxpPmFkZFJvb21XaXRoTW9kZXJhdGlvbkFuZFJlY29yZGluZ0ZsYWdzICgNCisgICAgCQkJICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIFNJRA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgbmFtZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBMb25nIHJvb210eXBlc19pZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgY29tbWVudA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBMb25nIG51bWJlck9mUGFydGl6aXBhbnRzDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEJvb2xlYW4gaXNwdWJsaWMNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgQm9vbGVhbiBhcHBvaW50bWVudA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGlzRGVtb1Jvb20NCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgSW50ZWdlciBkZW1vVGltZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGlzTW9kZXJhdGVkUm9vbQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgZXh0ZXJuYWxSb29tVHlwZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGFsbG93VXNlclF1ZXN0aW9ucw0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGlzQXVkaW9Pbmx5DQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEJvb2xlYW4gd2FpdEZvclJlY29yZGluZw0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGFsbG93UmVjb3JkaW5nDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJKQ0KKyAgICAJCQk8L2k+PGJyLz4NCisgICAgCQkJPHA+DQorICAgIAkJCSAgQWRkcyBhIG5ldyByb29tIHdpdGggb3B0aW9ucyBmb3IgcmVjb3JkaW5nDQorICAgIAkJCTwvcD4NCisgICAgCQkJPHA+DQorICAgICAgICAgICAgICAgICAgUmV0dXJuIFR5cGU6IGphdmEubGFuZy5Mb25nDQorICAgICAgICAgICAgICAgIDwvcD4NCisgICAgCQkJPHA+UGFyYW1zOjwvcD4NCisgICAgCQkJICAgIAkJCQ0KKyAgICAJCQkJICAgIAkJCTx0YWJsZSBydWxlcz0iYWxsIiBib3JkZXI9IjEiPg0KKwkgICAgCQkJICAgPHRoZWFkPg0KKwkgICAgCQkJICAgPHRyPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPlR5cGU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPkZpZWxkbmFtZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iNDAwIiBhbGlnbj0ibGVmdCI+RGVzY3JpcHRpb248L3RoPg0KKwkgICAgCQkJICAgPC90cj4NCisJICAgIAkJCSAgIDwvdGhlYWQ+DQorCSAgICAJCQkgICA8dGJvZHk+DQorCSAgICAJCQkgICAJICAgIAkJCSAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5TSUQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIExvZ2dlZGluPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPm5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPm5ldyBuYW1lIG9mIHRoZSByb29tPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5yb29tdHlwZXNfaWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPm5ldyB0eXBlIG9mIHJvb20gKDEgPSBDb25mZXJlbmNlLCAyID0gQXVkaWVuY2UsIDMgPQorICAgICAgICAgICAgUmVzdHJpY3RlZCwgNCA9IEludGVydmlldyk8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+Y29tbWVudDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+bmV3IGNvbW1lbnQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUxvbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPm51bWJlck9mUGFydGl6aXBhbnRzPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5uZXcgbnVtYmVyT2ZQYXJ0aWNpcGFudHM8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlzcHVibGljPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5pcyBwdWJsaWM8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFwcG9pbnRtZW50PC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5pZiB0aGUgcm9vbSBpcyBhbiBhcHBvaW50bWVudDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJQm9vbGVhbg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aXNEZW1vUm9vbTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aXMgaXQgYSBEZW1vIFJvb20gd2l0aCBsaW1pdGVkIHRpbWU/ICh1c2UgZmFsc2UgaWYgbm90IHN1cmUKKyAgICAgICAgICAgIHdoYXQgdGhhdCBtZWFucyk8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUludGVnZXINCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmRlbW9UaW1lPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aW1lIGluIHNlY29uZHMgYWZ0ZXIgdGhlIHVzZXIgd2lsbCBiZSBsb2dnZWQgb3V0IChvbmx5CisgICAgICAgICAgICBlbmFibGVkIGlmIGlzRGVtb1Jvb20gaXMgdHJ1ZSk8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlzTW9kZXJhdGVkUm9vbTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VXNlcnMgaGF2ZSB0byB3YWl0IHVudGlsIGEgTW9kZXJhdG9yIGFycml2ZXMuIFVzZSB0aGUKKyAgICAgICAgICAgIGJlY29tZU1vZGVyYXRvciBwYXJhbWV0ZXIgaW4gc2V0VXNlck9iamVjdEFuZEdlbmVyYXRlUm9vbUhhc2gKKyAgICAgICAgICAgIHRvIHNldCBhIHVzZXIgYXMgZGVmYXVsdCBNb2RlcmF0b3I8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+ZXh0ZXJuYWxSb29tVHlwZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGhlIGV4dGVybmFsIHJvb20gdHlwZSAoY2FuIGJlIHVzZWQgdG8gaWRlbnRpZnkgZGlmZmVyZW50CisgICAgICAgICAgICBleHRlcm5hbCBzeXN0ZW1zIHVzaW5nIHNhbWUgT3Blbk1lZXRpbmdzIGluc3RhbmNlKTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJQm9vbGVhbg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+YWxsb3dVc2VyUXVlc3Rpb25zPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5lbmFibGUgb3IgZGlzYWJsZSB0aGUgYnV0dG9uIHRvIGFsbG93IHVzZXJzIHRvIGFwcGx5IGZvcgorICAgICAgICAgICAgbW9kZXJhdGlvbjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJQm9vbGVhbg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aXNBdWRpb09ubHk8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmVuYWJsZSBvciBkaXNhYmxlIHRoZSB2aWRlbyAvIG9yIGF1ZGlvLW9ubHk8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPndhaXRGb3JSZWNvcmRpbmc8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlmIHRoZSB1c2VycyBpbiB0aGUgcm9vbSB3aWxsIGdldCBhIG5vdGlmaWNhdGlvbiB0aGF0IHRoZXkKKyAgICAgICAgICAgIHNob3VsZCBzdGFydCByZWNvcmRpbmcgYmVmb3JlIHRoZXkgZG8gYSBjb25mZXJlbmNlPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlCb29sZWFuDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hbGxvd1JlY29yZGluZzwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aWYgdGhlIHJlY29yZGluZyBvcHRpb24gaXMgYXZhaWxhYmxlIG9yIG5vdDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCisJICAgIAkJCTwvdGFibGU+DQorICAgIAkJCSAgICAJCQk8YnIvPg0KKyAgICAJCQlSRVNUIFNhbXBsZSBDYWxsL1VSTDo8YnIvPg0KKyAgICAJCQkgICAgCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvUm9vbVNlcnZpY2UvYWRkUm9vbVdpdGhNb2RlcmF0aW9uQW5kUmVjb3JkaW5nRmxhZ3M/U0lEPVZBTFVFJm5hbWU9VkFMVUUmcm9vbXR5cGVzX2lkPVZBTFVFJmNvbW1lbnQ9VkFMVUUmbnVtYmVyT2ZQYXJ0aXppcGFudHM9VkFMVUUmaXNwdWJsaWM9VkFMVUUmYXBwb2ludG1lbnQ9VkFMVUUmaXNEZW1vUm9vbT1WQUxVRSZkZW1vVGltZT1WQUxVRSZpc01vZGVyYXRlZFJvb209VkFMVUUmZXh0ZXJuYWxSb29tVHlwZT1WQUxVRSZhbGxvd1VzZXJRdWVzdGlvbnM9VkFMVUUmaXNBdWRpb09ubHk9VkFMVUUmd2FpdEZvclJlY29yZGluZz1WQUxVRSZhbGxvd1JlY29yZGluZz1WQUxVRSI+aHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Sb29tU2VydmljZS9hZGRSb29tV2l0aE1vZGVyYXRpb25BbmRSZWNvcmRpbmdGbGFncz9TSUQ9VkFMVUUmYW1wO25hbWU9VkFMVUUmYW1wO3Jvb210eXBlc19pZD1WQUxVRSZhbXA7Y29tbWVudD1WQUxVRSZhbXA7bnVtYmVyT2ZQYXJ0aXppcGFudHM9VkFMVUUmYW1wO2lzcHVibGljPVZBTFVFJmFtcDthcHBvaW50bWVudD1WQUxVRSZhbXA7aXNEZW1vUm9vbT1WQUxVRSZhbXA7ZGVtb1RpbWU9VkFMVUUmYW1wO2lzTW9kZXJhdGVkUm9vbT1WQUxVRSZhbXA7ZXh0ZXJuYWxSb29tVHlwZT1WQUxVRSZhbXA7YWxsb3dVc2VyUXVlc3Rpb25zPVZBTFVFJmFtcDtpc0F1ZGlvT25seT1WQUxVRSZhbXA7d2FpdEZvclJlY29yZGluZz1WQUxVRSZhbXA7YWxsb3dSZWNvcmRpbmc9VkFMVUU8L2E+DQorICAgIAkJICA8L2Rpdj4NCisgICAgCSAgIAkJCQkgICAgCQkgICAgICA8ZGl2IGNsYXNzPSJtZXRob2QiPg0KKwkJICAgICAgICA8ZGl2IGNsYXNzPSJtZXRob2RfaGVhZGVyIj4NCisJCSAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTBweCI+DQorICAgIAkJCTxhIG5hbWU9ImFkZFJvb21XaXRoTW9kZXJhdGlvbkV4dGVybmFsVHlwZUFuZFRvcEJhck9wdGlvbiIgPjxiPmFkZFJvb21XaXRoTW9kZXJhdGlvbkV4dGVybmFsVHlwZUFuZFRvcEJhck9wdGlvbjwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+YWRkUm9vbVdpdGhNb2RlcmF0aW9uRXh0ZXJuYWxUeXBlQW5kVG9wQmFyT3B0aW9uICgNCisgICAgCQkJICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIFNJRA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgbmFtZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBMb25nIHJvb210eXBlc19pZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgY29tbWVudA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBMb25nIG51bWJlck9mUGFydGl6aXBhbnRzDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEJvb2xlYW4gaXNwdWJsaWMNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgQm9vbGVhbiBhcHBvaW50bWVudA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGlzRGVtb1Jvb20NCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgSW50ZWdlciBkZW1vVGltZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGlzTW9kZXJhdGVkUm9vbQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgZXh0ZXJuYWxSb29tVHlwZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGFsbG93VXNlclF1ZXN0aW9ucw0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGlzQXVkaW9Pbmx5DQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEJvb2xlYW4gd2FpdEZvclJlY29yZGluZw0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGFsbG93UmVjb3JkaW5nDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEJvb2xlYW4gaGlkZVRvcEJhcg0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSkNCisgICAgCQkJPC9pPjxici8+DQorICAgIAkJCTxwPg0KKyAgICAJCQkgIEFkZCBhIGNvbmZlcmVuY2Ugcm9vbSB3aXRoIG9wdGlvbnMgdG8gZGlzYWJsZSB0aGUgdG9wIG1lbnUgYmFyIGluIHRoZQorIGNvbmZlcmVuY2Ugcm9vbQ0KKyAgICAJCQk8L3A+DQorICAgIAkJCTxwPg0KKyAgICAgICAgICAgICAgICAgIFJldHVybiBUeXBlOiBqYXZhLmxhbmcuTG9uZw0KKyAgICAgICAgICAgICAgICA8L3A+DQorICAgIAkJCTxwPlBhcmFtczo8L3A+DQorICAgIAkJCSAgICAJCQkNCisgICAgCQkJCSAgICAJCQk8dGFibGUgcnVsZXM9ImFsbCIgYm9yZGVyPSIxIj4NCisJICAgIAkJCSAgIDx0aGVhZD4NCisJICAgIAkJCSAgIDx0cj4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5UeXBlPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5GaWVsZG5hbWU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjQwMCIgYWxpZ249ImxlZnQiPkRlc2NyaXB0aW9uPC90aD4NCisJICAgIAkJCSAgIDwvdHI+DQorCSAgICAJCQkgICA8L3RoZWFkPg0KKwkgICAgCQkJICAgPHRib2R5Pg0KKwkgICAgCQkJICAgCSAgICAJCQkgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+U0lEPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5UaGUgU0lEIG9mIHRoZSBVc2VyLiBUaGlzIFNJRCBtdXN0IGJlIG1hcmtlZCBhcyBMb2dnZWRpbjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5uYW1lPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5uZXcgbmFtZSBvZiB0aGUgcm9vbTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJTG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+cm9vbXR5cGVzX2lkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5uZXcgdHlwZSBvZiByb29tICgxID0gQ29uZmVyZW5jZSwgMiA9IEF1ZGllbmNlLCAzID0KKyAgICAgICAgICAgIFJlc3RyaWN0ZWQsIDQgPSBJbnRlcnZpZXcpPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmNvbW1lbnQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPm5ldyBjb21tZW50PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5udW1iZXJPZlBhcnRpemlwYW50czwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+bmV3IG51bWJlck9mUGFydGljaXBhbnRzPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlCb29sZWFuDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5pc3B1YmxpYzwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aXMgcHVibGljPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlCb29sZWFuDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hcHBvaW50bWVudDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aWYgdGhlIHJvb20gaXMgYW4gYXBwb2ludG1lbnQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlzRGVtb1Jvb208L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlzIGl0IGEgRGVtbyBSb29tIHdpdGggbGltaXRlZCB0aW1lPyAodXNlIGZhbHNlIGlmIG5vdCBzdXJlCisgICAgICAgICAgICB3aGF0IHRoYXQgbWVhbnMpPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlJbnRlZ2VyDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5kZW1vVGltZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGltZSBpbiBzZWNvbmRzIGFmdGVyIHRoZSB1c2VyIHdpbGwgYmUgbG9nZ2VkIG91dCAob25seQorICAgICAgICAgICAgZW5hYmxlZCBpZiBpc0RlbW9Sb29tIGlzIHRydWUpPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlCb29sZWFuDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5pc01vZGVyYXRlZFJvb208L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlVzZXJzIGhhdmUgdG8gd2FpdCB1bnRpbCBhIE1vZGVyYXRvciBhcnJpdmVzLiBVc2UgdGhlCisgICAgICAgICAgICBiZWNvbWVNb2RlcmF0b3IgcGFyYW1ldGVyIGluIHNldFVzZXJPYmplY3RBbmRHZW5lcmF0ZVJvb21IYXNoCisgICAgICAgICAgICB0byBzZXQgYSB1c2VyIGFzIGRlZmF1bHQgTW9kZXJhdG9yPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmV4dGVybmFsUm9vbVR5cGU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSBleHRlcm5hbCByb29tIHR5cGUgKGNhbiBiZSB1c2VkIHRvIGlkZW50aWZ5IGRpZmZlcmVudAorICAgICAgICAgICAgZXh0ZXJuYWwgc3lzdGVtcyB1c2luZyBzYW1lIE9wZW5NZWV0aW5ncyBpbnN0YW5jZSk8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFsbG93VXNlclF1ZXN0aW9uczwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+ZW5hYmxlIG9yIGRpc2FibGUgdGhlIGJ1dHRvbiB0byBhbGxvdyB1c2VycyB0byBhcHBseSBmb3IKKyAgICAgICAgICAgIG1vZGVyYXRpb248L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlzQXVkaW9Pbmx5PC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5lbmFibGUgb3IgZGlzYWJsZSB0aGUgdmlkZW8gLyBvciBhdWRpby1vbmx5PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlCb29sZWFuDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj53YWl0Rm9yUmVjb3JkaW5nPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5pZiB0aGUgdXNlcnMgaW4gdGhlIHJvb20gd2lsbCBnZXQgYSBub3RpZmljYXRpb24gdGhhdCB0aGV5CisgICAgICAgICAgICBzaG91bGQgc3RhcnQgcmVjb3JkaW5nIGJlZm9yZSB0aGV5IGRvIGEgY29uZmVyZW5jZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJQm9vbGVhbg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+YWxsb3dSZWNvcmRpbmc8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlmIHRoZSByZWNvcmRpbmcgb3B0aW9uIGlzIGF2YWlsYWJsZSBvciBub3Q8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmhpZGVUb3BCYXI8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlmIHRoZSB0b3AgYmFyIGluIHRoZSBjb25mZXJlbmNlIHJvb20gaXMgdmlzaWJsZSBvciBub3Q8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQorCSAgICAJCQk8L3RhYmxlPg0KKyAgICAJCQkgICAgCQkJPGJyLz4NCisgICAgCQkJUkVTVCBTYW1wbGUgQ2FsbC9VUkw6PGJyLz4NCisgICAgCQkJICAgIAkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvUm9vbVNlcnZpY2UvYWRkUm9vbVdpdGhNb2RlcmF0aW9uRXh0ZXJuYWxUeXBlQW5kVG9wQmFyT3B0aW9uP1NJRD1WQUxVRSZuYW1lPVZBTFVFJnJvb210eXBlc19pZD1WQUxVRSZjb21tZW50PVZBTFVFJm51bWJlck9mUGFydGl6aXBhbnRzPVZBTFVFJmlzcHVibGljPVZBTFVFJmFwcG9pbnRtZW50PVZBTFVFJmlzRGVtb1Jvb209VkFMVUUmZGVtb1RpbWU9VkFMVUUmaXNNb2RlcmF0ZWRSb29tPVZBTFVFJmV4dGVybmFsUm9vbVR5cGU9VkFMVUUmYWxsb3dVc2VyUXVlc3Rpb25zPVZBTFVFJmlzQXVkaW9Pbmx5PVZBTFVFJndhaXRGb3JSZWNvcmRpbmc9VkFMVUUmYWxsb3dSZWNvcmRpbmc9VkFMVUUmaGlkZVRvcEJhcj1WQUxVRSI+aHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Sb29tU2VydmljZS9hZGRSb29tV2l0aE1vZGVyYXRpb25FeHRlcm5hbFR5cGVBbmRUb3BCYXJPcHRpb24/U0lEPVZBTFVFJmFtcDtuYW1lPVZBTFVFJmFtcDtyb29tdHlwZXNfaWQ9VkFMVUUmYW1wO2NvbW1lbnQ9VkFMVUUmYW1wO251bWJlck9mUGFydGl6aXBhbnRzPVZBTFVFJmFtcDtpc3B1YmxpYz1WQUxVRSZhbXA7YXBwb2ludG1lbnQ9VkFMVUUmYW1wO2lzRGVtb1Jvb209VkFMVUUmYW1wO2RlbW9UaW1lPVZBTFVFJmFtcDtpc01vZGVyYXRlZFJvb209VkFMVUUmYW1wO2V4dGVybmFsUm9vbVR5cGU9VkFMVUUmYW1wO2FsbG93VXNlclF1ZXN0aW9ucz1WQUxVRSZhbXA7aXNBdWRpb09ubHk9VkFMVUUmYW1wO3dhaXRGb3JSZWNvcmRpbmc9VkFMVUUmYW1wO2FsbG93UmVjb3JkaW5nPVZBTFVFJmFtcDtoaWRlVG9wQmFyPVZBTFVFPC9hPg0KKyAgICAJCSAgPC9kaXY+DQorICAgIAkgICAJCQkJICAgIAkJICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kIj4NCisJCSAgICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kX2hlYWRlciI+DQorCQkgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjEwcHgiPg0KKyAgICAJCQk8YSBuYW1lPSJnZXRJbnZpdGF0aW9uSGFzaCIgPjxiPmdldEludml0YXRpb25IYXNoPC9iPjwvYT4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQkNCisgICAgCQkJTWV0aG9kOiA8aT5nZXRJbnZpdGF0aW9uSGFzaCAoDQorICAgIAkJCSAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBTSUQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIHVzZXJuYW1lDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIExvbmcgcm9vbV9pZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGlzUGFzc3dvcmRQcm90ZWN0ZWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGludml0YXRpb25wYXNzDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEludGVnZXIgdmFsaWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIHZhbGlkRnJvbURhdGUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIHZhbGlkRnJvbVRpbWUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIHZhbGlkVG9EYXRlDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyB2YWxpZFRvVGltZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSkNCisgICAgCQkJPC9pPjxici8+DQorICAgIAkJCTxwPg0KKyAgICAJCQkgIENyZWF0ZSBhIEludml0YXRpb24gaGFzaCBhbmQgb3B0aW9uYWxseSBzZW5kIGl0IGJ5IG1haWwgdGhlIEZyb20gdG8gRGF0ZQorIGlzIGFzIFN0cmluZyBhcyBzb21lIFNPQVAgbGlicmFyaWVzIGRvIG5vdCBhY2NlcHQgRGF0ZSBPYmplY3RzIGluIFNPQVAKKyBDYWxscyBEYXRlIGlzIHBhcnNlZCBhcyBkZC5tbS55eXl5LCB0aW1lIGFzIGhoOm1tIChkb24ndCBmb3JnZXQgdGhlCisgbGVhZGluZyB6ZXJvJ3MpDQorICAgIAkJCTwvcD4NCisgICAgCQkJPHA+DQorICAgICAgICAgICAgICAgICAgUmV0dXJuIFR5cGU6IGphdmEubGFuZy5TdHJpbmcNCisgICAgICAgICAgICAgICAgPC9wPg0KKyAgICAJCQk8cD5QYXJhbXM6PC9wPg0KKyAgICAJCQkgICAgCQkJDQorICAgIAkJCQkgICAgCQkJPHRhYmxlIHJ1bGVzPSJhbGwiIGJvcmRlcj0iMSI+DQorCSAgICAJCQkgICA8dGhlYWQ+DQorCSAgICAJCQkgICA8dHI+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+VHlwZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+RmllbGRuYW1lPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSI0MDAiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvdGg+DQorCSAgICAJCQkgICA8L3RyPg0KKwkgICAgCQkJICAgPC90aGVhZD4NCisJICAgIAkJCSAgIDx0Ym9keT4NCisJICAgIAkJCSAgIAkgICAgCQkJICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlNJRDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgTG9nZ2VkaW4gYQorICAgICAgICAgICAgdmFsaWQgU2Vzc2lvbiBUb2tlbjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj51c2VybmFtZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGhlIHVzZXJuYW1lIG9mIHRoZSBVc2VyIHRoYXQgaGUgd2lsbCBnZXQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUxvbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnJvb21faWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSBjb25mZXJlbmNlIHJvb20gaWQgb2YgdGhlIGludml0YXRpb248L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlzUGFzc3dvcmRQcm90ZWN0ZWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlmIHRoZSBpbnZpdGF0aW9uIGlzIHBhc3N3b3JkIHByb3RlY3RlZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5pbnZpdGF0aW9ucGFzczwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGhlIHBhc3N3b3JkIGZvciBhY2Nlc3NpbmcgdGhlIGNvbmZlcmVuY2Ugcm9vbSB2aWEgdGhlCisgICAgICAgICAgICBpbnZpdGF0aW9uIGhhc2g8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUludGVnZXINCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnZhbGlkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aGUgdHlwZSBvZiB2YWxpZGF0aW9uIGZvciB0aGUgaGFzaCAxOiBlbmRsZXNzLCAyOiBmcm9tLXRvCisgICAgICAgICAgICBwZXJpb2QsIDM6IG9uZS10aW1lPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnZhbGlkRnJvbURhdGU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPkRhdGUgaW4gRm9ybWF0IG9mIGRkLm1tLnl5eXkgb25seSBvZiBpbnRlcmVzdCBpZiB2YWxpZCBpcyB0eXBlCisgICAgICAgICAgICAyPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnZhbGlkRnJvbVRpbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRpbWUgaW4gRm9ybWF0IG9mIGhoOm1tIG9ubHkgb2YgaW50ZXJlc3QgaWYgdmFsaWQgaXMgdHlwZSAyPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnZhbGlkVG9EYXRlPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5EYXRlIGluIEZvcm1hdCBvZiBkZC5tbS55eXl5IG9ubHkgb2YgaW50ZXJlc3QgaWYgdmFsaWQgaXMgdHlwZQorICAgICAgICAgICAgMjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj52YWxpZFRvVGltZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGltZSBpbiBGb3JtYXQgb2YgaGg6bW0gb25seSBvZiBpbnRlcmVzdCBpZiB2YWxpZCBpcyB0eXBlIDI8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQorCSAgICAJCQk8L3RhYmxlPg0KKyAgICAJCQkgICAgCQkJPGJyLz4NCisgICAgCQkJUkVTVCBTYW1wbGUgQ2FsbC9VUkw6PGJyLz4NCisgICAgCQkJICAgIAkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvUm9vbVNlcnZpY2UvZ2V0SW52aXRhdGlvbkhhc2g/U0lEPVZBTFVFJnVzZXJuYW1lPVZBTFVFJnJvb21faWQ9VkFMVUUmaXNQYXNzd29yZFByb3RlY3RlZD1WQUxVRSZpbnZpdGF0aW9ucGFzcz1WQUxVRSZ2YWxpZD1WQUxVRSZ2YWxpZEZyb21EYXRlPVZBTFVFJnZhbGlkRnJvbVRpbWU9VkFMVUUmdmFsaWRUb0RhdGU9VkFMVUUmdmFsaWRUb1RpbWU9VkFMVUUiPmh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvUm9vbVNlcnZpY2UvZ2V0SW52aXRhdGlvbkhhc2g/U0lEPVZBTFVFJmFtcDt1c2VybmFtZT1WQUxVRSZhbXA7cm9vbV9pZD1WQUxVRSZhbXA7aXNQYXNzd29yZFByb3RlY3RlZD1WQUxVRSZhbXA7aW52aXRhdGlvbnBhc3M9VkFMVUUmYW1wO3ZhbGlkPVZBTFVFJmFtcDt2YWxpZEZyb21EYXRlPVZBTFVFJmFtcDt2YWxpZEZyb21UaW1lPVZBTFVFJmFtcDt2YWxpZFRvRGF0ZT1WQUxVRSZhbXA7dmFsaWRUb1RpbWU9VkFMVUU8L2E+DQorICAgIAkJICA8L2Rpdj4NCisgICAgCSAgIAkJCQkgICAgCQkgICAgICA8ZGl2IGNsYXNzPSJtZXRob2QiPg0KKwkJICAgICAgICA8ZGl2IGNsYXNzPSJtZXRob2RfaGVhZGVyIj4NCisJCSAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTBweCI+DQorICAgIAkJCTxhIG5hbWU9InNlbmRJbnZpdGF0aW9uSGFzaCIgPjxiPnNlbmRJbnZpdGF0aW9uSGFzaDwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+c2VuZEludml0YXRpb25IYXNoICgNCisgICAgCQkJICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIFNJRA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgdXNlcm5hbWUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIG1lc3NhZ2UNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGJhc2V1cmwNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGVtYWlsDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBzdWJqZWN0DQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIExvbmcgcm9vbV9pZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgY29uZmVyZW5jZWRvbWFpbg0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGlzUGFzc3dvcmRQcm90ZWN0ZWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGludml0YXRpb25wYXNzDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEludGVnZXIgdmFsaWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIHZhbGlkRnJvbURhdGUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIHZhbGlkRnJvbVRpbWUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIHZhbGlkVG9EYXRlDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyB2YWxpZFRvVGltZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBMb25nIGxhbmd1YWdlX2lkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEJvb2xlYW4gc2VuZE1haWwNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkpDQorICAgIAkJCTwvaT48YnIvPg0KKyAgICAJCQk8cD4NCisgICAgCQkJICBDcmVhdGUgYSBJbnZpdGF0aW9uIGhhc2ggYW5kIG9wdGlvbmFsbHkgc2VuZCBpdCBieSBtYWlsIHRoZSBGcm9tIHRvIERhdGUKKyBpcyBhcyBTdHJpbmcgYXMgc29tZSBTT0FQIGxpYnJhcmllcyBkbyBub3QgYWNjZXB0IERhdGUgT2JqZWN0cyBpbiBTT0FQCisgQ2FsbHMgRGF0ZSBpcyBwYXJzZWQgYXMgZGQubW0ueXl5eSwgdGltZSBhcyBoaDptbSAoZG9uJ3QgZm9yZ2V0IHRoZQorIGxlYWRpbmcgemVybydzKQ0KKyAgICAJCQk8L3A+DQorICAgIAkJCTxwPg0KKyAgICAgICAgICAgICAgICAgIFJldHVybiBUeXBlOiBqYXZhLmxhbmcuU3RyaW5nDQorICAgICAgICAgICAgICAgIDwvcD4NCisgICAgCQkJPHA+UGFyYW1zOjwvcD4NCisgICAgCQkJICAgIAkJCQ0KKyAgICAJCQkJICAgIAkJCTx0YWJsZSBydWxlcz0iYWxsIiBib3JkZXI9IjEiPg0KKwkgICAgCQkJICAgPHRoZWFkPg0KKwkgICAgCQkJICAgPHRyPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPlR5cGU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPkZpZWxkbmFtZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iNDAwIiBhbGlnbj0ibGVmdCI+RGVzY3JpcHRpb248L3RoPg0KKwkgICAgCQkJICAgPC90cj4NCisJICAgIAkJCSAgIDwvdGhlYWQ+DQorCSAgICAJCQkgICA8dGJvZHk+DQorCSAgICAJCQkgICAJICAgIAkJCSAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5TSUQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIExvZ2dlZGluIGEKKyAgICAgICAgICAgIHZhbGlkIFNlc3Npb24gVG9rZW48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dXNlcm5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSBVc2VybmFtZSBvZiB0aGUgVXNlciB0aGF0IGhlIHdpbGwgZ2V0PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPm1lc3NhZ2U8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSBNZXNzYWdlIGluIHRoZSBFbWFpbCBCb2R5IHNlbmQgd2l0aCB0aGUgaW52aXRhdGlvbiBpZgorICAgICAgICAgICAgc2VuZE1haWwgaXMgdHJ1ZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5iYXNldXJsPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aGUgYmFzZVVSTCBmb3IgdGhlIEluZml2YXRpb25zIGxpbmsgaW4gdGhlIE1haWwgQm9keSBpZgorICAgICAgICAgICAgc2VuZE1haWwgaXMgdHJ1ZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5lbWFpbDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGhlIEVtYWlsIHRvIHNlbmQgdGhlIGludml0YXRpb24gdG8gaWYgc2VuZE1haWwgaXMgdHJ1ZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5zdWJqZWN0PC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aGUgc3ViamVjdCBvZiB0aGUgRW1haWwgc2VuZCB3aXRoIHRoZSBpbnZpdGF0aW9uIGlmIHNlbmRNYWlsCisgICAgICAgICAgICBpcyB0cnVlPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5yb29tX2lkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aGUgY29uZmVyZW5jZSByb29tIGlkIG9mIHRoZSBpbnZpdGF0aW9uPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmNvbmZlcmVuY2Vkb21haW48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSBkb21haW4gb2YgdGhlIHJvb20gKGtlZXAgZW1wdHkpPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlCb29sZWFuDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5pc1Bhc3N3b3JkUHJvdGVjdGVkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5pZiB0aGUgaW52aXRhdGlvbiBpcyBwYXNzd29yZCBwcm90ZWN0ZWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aW52aXRhdGlvbnBhc3M8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSBwYXNzd29yZCBmb3IgYWNjZXNzaW5nIHRoZSBjb25mZXJlbmNlIHJvb20gdmlhIHRoZQorICAgICAgICAgICAgaW52aXRhdGlvbiBoYXNoPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlJbnRlZ2VyDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj52YWxpZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGhlIHR5cGUgb2YgdmFsaWRhdGlvbiBmb3IgdGhlIGhhc2ggMTogZW5kbGVzcywgMjogZnJvbS10bworICAgICAgICAgICAgcGVyaW9kLCAzOiBvbmUtdGltZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj52YWxpZEZyb21EYXRlPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5EYXRlIGluIEZvcm1hdCBvZiBkZC5tbS55eXl5IG9ubHkgb2YgaW50ZXJlc3QgaWYgdmFsaWQgaXMgdHlwZQorICAgICAgICAgICAgMjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj52YWxpZEZyb21UaW1lPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aW1lIGluIEZvcm1hdCBvZiBoaDptbSBvbmx5IG9mIGludGVyZXN0IGlmIHZhbGlkIGlzIHR5cGUgMjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj52YWxpZFRvRGF0ZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+RGF0ZSBpbiBGb3JtYXQgb2YgZGQubW0ueXl5eSBvbmx5IG9mIGludGVyZXN0IGlmIHZhbGlkIGlzIHR5cGUKKyAgICAgICAgICAgIDI8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dmFsaWRUb1RpbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRpbWUgaW4gRm9ybWF0IG9mIGhoOm1tIG9ubHkgb2YgaW50ZXJlc3QgaWYgdmFsaWQgaXMgdHlwZSAyPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5sYW5ndWFnZV9pZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGhlIGxhbmd1YWdlIGlkIG9mIHRoZSBFTWFpbCB0aGF0IGlzIHNlbmQgd2l0aCB0aGUgaW52aXRhdGlvbgorICAgICAgICAgICAgaWYgc2VuZE1haWwgaXMgdHJ1ZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJQm9vbGVhbg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+c2VuZE1haWw8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlmIHNlbmRNYWlsIGlzIHRydWUgdGhlbiB0aGUgUlBDLUNhbGwgd2lsbCBzZW5kIHRoZSBpbnZpdGF0aW9uCisgICAgICAgICAgICB0byB0aGUgZW1haWw8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQorCSAgICAJCQk8L3RhYmxlPg0KKyAgICAJCQkgICAgCQkJPGJyLz4NCisgICAgCQkJUkVTVCBTYW1wbGUgQ2FsbC9VUkw6PGJyLz4NCisgICAgCQkJICAgIAkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Sb29tU2VydmljZS9zZW5kSW52aXRhdGlvbkhhc2g/U0lEPVZBTFVFJnVzZXJuYW1lPVZBTFVFJm1lc3NhZ2U9VkFMVUUmYmFzZXVybD1WQUxVRSZlbWFpbD1WQUxVRSZzdWJqZWN0PVZBTFVFJnJvb21faWQ9VkFMVUUmY29uZmVyZW5jZWRvbWFpbj1WQUxVRSZpc1Bhc3N3b3JkUHJvdGVjdGVkPVZBTFVFJmludml0YXRpb25wYXNzPVZBTFVFJnZhbGlkPVZBTFVFJnZhbGlkRnJvbURhdGU9VkFMVUUmdmFsaWRGcm9tVGltZT1WQUxVRSZ2YWxpZFRvRGF0ZT1WQUxVRSZ2YWxpZFRvVGltZT1WQUxVRSZsYW5ndWFnZV9pZD1WQUxVRSZzZW5kTWFpbD1WQUxVRSI+aHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Sb29tU2VydmljZS9zZW5kSW52aXRhdGlvbkhhc2g/U0lEPVZBTFVFJmFtcDt1c2VybmFtZT1WQUxVRSZhbXA7bWVzc2FnZT1WQUxVRSZhbXA7YmFzZXVybD1WQUxVRSZhbXA7ZW1haWw9VkFMVUUmYW1wO3N1YmplY3Q9VkFMVUUmYW1wO3Jvb21faWQ9VkFMVUUmYW1wO2NvbmZlcmVuY2Vkb21haW49VkFMVUUmYW1wO2lzUGFzc3dvcmRQcm90ZWN0ZWQ9VkFMVUUmYW1wO2ludml0YXRpb25wYXNzPVZBTFVFJmFtcDt2YWxpZD1WQUxVRSZhbXA7dmFsaWRGcm9tRGF0ZT1WQUxVRSZhbXA7dmFsaWRGcm9tVGltZT1WQUxVRSZhbXA7dmFsaWRUb0RhdGU9VkFMVUUmYW1wO3ZhbGlkVG9UaW1lPVZBTFVFJmFtcDtsYW5ndWFnZV9pZD1WQUxVRSZhbXA7c2VuZE1haWw9VkFMVUU8L2E+DQorICAgIAkJICA8L2Rpdj4NCisgICAgCSAgIAkJCQkgICAgCQkgICAgICA8ZGl2IGNsYXNzPSJtZXRob2QiPg0KKwkJICAgICAgICA8ZGl2IGNsYXNzPSJtZXRob2RfaGVhZGVyIj4NCisJCSAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTBweCI+DQorICAgIAkJCTxhIG5hbWU9InNlbmRJbnZpdGF0aW9uSGFzaFdpdGhEYXRlT2JqZWN0IiA+PGI+c2VuZEludml0YXRpb25IYXNoV2l0aERhdGVPYmplY3Q8L2I+PC9hPg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCQ0KKyAgICAJCQlNZXRob2Q6IDxpPnNlbmRJbnZpdGF0aW9uSGFzaFdpdGhEYXRlT2JqZWN0ICgNCisgICAgCQkJICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIFNJRA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgdXNlcm5hbWUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIG1lc3NhZ2UNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGJhc2V1cmwNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGVtYWlsDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBzdWJqZWN0DQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIExvbmcgcm9vbV9pZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgY29uZmVyZW5jZWRvbWFpbg0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGlzUGFzc3dvcmRQcm90ZWN0ZWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGludml0YXRpb25wYXNzDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEludGVnZXIgdmFsaWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgRGF0ZSBmcm9tRGF0ZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBEYXRlIHRvRGF0ZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBMb25nIGxhbmd1YWdlX2lkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEJvb2xlYW4gc2VuZE1haWwNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkpDQorICAgIAkJCTwvaT48YnIvPg0KKyAgICAJCQk8cD4NCisgICAgCQkJICBDcmVhdGUgYSBJbnZpdGF0aW9uIGhhc2ggYW5kIG9wdGlvbmFsbHkgc2VuZCBpdCBieSBtYWlsIHRoZSBGcm9tIHRvIERhdGUKKyBpcyBhcyBTdHJpbmcgYXMgc29tZSBTT0FQIGxpYnJhcmllcyBkbyBub3QgYWNjZXB0IERhdGUgT2JqZWN0cyBpbiBTT0FQCisgQ2FsbHMgRGF0ZSBpcyBwYXJzZWQgYXMgZGQubW0ueXl5eSwgdGltZSBhcyBoaDptbSAoZG9uJ3QgZm9yZ2V0IHRoZQorIGxlYWRpbmcgemVybydzKQ0KKyAgICAJCQk8L3A+DQorICAgIAkJCTxwPg0KKyAgICAgICAgICAgICAgICAgIFJldHVybiBUeXBlOiBqYXZhLmxhbmcuU3RyaW5nDQorICAgICAgICAgICAgICAgIDwvcD4NCisgICAgCQkJPHA+UGFyYW1zOjwvcD4NCisgICAgCQkJICAgIAkJCQ0KKyAgICAJCQkJICAgIAkJCTx0YWJsZSBydWxlcz0iYWxsIiBib3JkZXI9IjEiPg0KKwkgICAgCQkJICAgPHRoZWFkPg0KKwkgICAgCQkJICAgPHRyPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPlR5cGU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPkZpZWxkbmFtZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iNDAwIiBhbGlnbj0ibGVmdCI+RGVzY3JpcHRpb248L3RoPg0KKwkgICAgCQkJICAgPC90cj4NCisJICAgIAkJCSAgIDwvdGhlYWQ+DQorCSAgICAJCQkgICA8dGJvZHk+DQorCSAgICAJCQkgICAJICAgIAkJCSAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5TSUQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIExvZ2dlZGluIGEKKyAgICAgICAgICAgIHZhbGlkIFNlc3Npb24gVG9rZW48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dXNlcm5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSBVc2VybmFtZSBvZiB0aGUgVXNlciB0aGF0IGhlIHdpbGwgZ2V0PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPm1lc3NhZ2U8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSBNZXNzYWdlIGluIHRoZSBFbWFpbCBCb2R5IHNlbmQgd2l0aCB0aGUgaW52aXRhdGlvbiBpZgorICAgICAgICAgICAgc2VuZE1haWwgaXMgdHJ1ZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5iYXNldXJsPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aGUgYmFzZVVSTCBmb3IgdGhlIEluZml2YXRpb25zIGxpbmsgaW4gdGhlIE1haWwgQm9keSBpZgorICAgICAgICAgICAgc2VuZE1haWwgaXMgdHJ1ZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5lbWFpbDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGhlIEVtYWlsIHRvIHNlbmQgdGhlIGludml0YXRpb24gdG8gaWYgc2VuZE1haWwgaXMgdHJ1ZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5zdWJqZWN0PC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aGUgc3ViamVjdCBvZiB0aGUgRW1haWwgc2VuZCB3aXRoIHRoZSBpbnZpdGF0aW9uIGlmIHNlbmRNYWlsCisgICAgICAgICAgICBpcyB0cnVlPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5yb29tX2lkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aGUgY29uZmVyZW5jZSByb29tIGlkIG9mIHRoZSBpbnZpdGF0aW9uPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmNvbmZlcmVuY2Vkb21haW48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSBkb21haW4gb2YgdGhlIHJvb20gKGtlZXAgZW1wdHkpPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlCb29sZWFuDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5pc1Bhc3N3b3JkUHJvdGVjdGVkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5pZiB0aGUgaW52aXRhdGlvbiBpcyBwYXNzd29yZCBwcm90ZWN0ZWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aW52aXRhdGlvbnBhc3M8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSBwYXNzd29yZCBmb3IgYWNjZXNzaW5nIHRoZSBjb25mZXJlbmNlIHJvb20gdmlhIHRoZQorICAgICAgICAgICAgaW52aXRhdGlvbiBoYXNoPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlJbnRlZ2VyDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj52YWxpZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGhlIHR5cGUgb2YgdmFsaWRhdGlvbiBmb3IgdGhlIGhhc2ggMTogZW5kbGVzcywgMjogZnJvbS10bworICAgICAgICAgICAgcGVyaW9kLCAzOiBvbmUtdGltZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJRGF0ZQ0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+ZnJvbURhdGU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPkRhdGUgYXMgRGF0ZSBPYmplY3Qgb25seSBvZiBpbnRlcmVzdCBpZiB2YWxpZCBpcyB0eXBlIDI8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCURhdGUNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRvRGF0ZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+RGF0ZSBhcyBEYXRlIE9iamVjdCBvbmx5IG9mIGludGVyZXN0IGlmIHZhbGlkIGlzIHR5cGUgMjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJTG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+bGFuZ3VhZ2VfaWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSBsYW5ndWFnZSBpZCBvZiB0aGUgRU1haWwgdGhhdCBpcyBzZW5kIHdpdGggdGhlIGludml0YXRpb24KKyAgICAgICAgICAgIGlmIHNlbmRNYWlsIGlzIHRydWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnNlbmRNYWlsPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5pZiBzZW5kTWFpbCBpcyB0cnVlIHRoZW4gdGhlIFJQQy1DYWxsIHdpbGwgc2VuZCB0aGUgaW52aXRhdGlvbgorICAgICAgICAgICAgdG8gdGhlIGVtYWlsPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KKwkgICAgCQkJPC90YWJsZT4NCisgICAgCQkJICAgIAkJCTxici8+DQorICAgIAkJCVJFU1QgU2FtcGxlIENhbGwvVVJMOjxici8+DQorICAgIAkJCSAgICAJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Sb29tU2VydmljZS9zZW5kSW52aXRhdGlvbkhhc2hXaXRoRGF0ZU9iamVjdD9TSUQ9VkFMVUUmdXNlcm5hbWU9VkFMVUUmbWVzc2FnZT1WQUxVRSZiYXNldXJsPVZBTFVFJmVtYWlsPVZBTFVFJnN1YmplY3Q9VkFMVUUmcm9vbV9pZD1WQUxVRSZjb25mZXJlbmNlZG9tYWluPVZBTFVFJmlzUGFzc3dvcmRQcm90ZWN0ZWQ9VkFMVUUmaW52aXRhdGlvbnBhc3M9VkFMVUUmdmFsaWQ9VkFMVUUmZnJvbURhdGU9VkFMVUUmdG9EYXRlPVZBTFVFJmxhbmd1YWdlX2lkPVZBTFVFJnNlbmRNYWlsPVZBTFVFIj5odHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1Jvb21TZXJ2aWNlL3NlbmRJbnZpdGF0aW9uSGFzaFdpdGhEYXRlT2JqZWN0P1NJRD1WQUxVRSZhbXA7dXNlcm5hbWU9VkFMVUUmYW1wO21lc3NhZ2U9VkFMVUUmYW1wO2Jhc2V1cmw9VkFMVUUmYW1wO2VtYWlsPVZBTFVFJmFtcDtzdWJqZWN0PVZBTFVFJmFtcDtyb29tX2lkPVZBTFVFJmFtcDtjb25mZXJlbmNlZG9tYWluPVZBTFVFJmFtcDtpc1Bhc3N3b3JkUHJvdGVjdGVkPVZBTFVFJmFtcDtpbnZpdGF0aW9ucGFzcz1WQUxVRSZhbXA7dmFsaWQ9VkFMVUUmYW1wO2Zyb21EYXRlPVZBTFVFJmFtcDt0b0RhdGU9VkFMVUUmYW1wO2xhbmd1YWdlX2lkPVZBTFVFJmFtcDtzZW5kTWFpbD1WQUxVRTwvYT4NCisgICAgCQkgIDwvZGl2Pg0KKyAgICAJICAgCQkJCSAgICAJCSAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZCI+DQorCQkgICAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZF9oZWFkZXIiPg0KKwkJICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDoxMHB4Ij4NCisgICAgCQkJPGEgbmFtZT0iZ2V0Um9vbXNXaXRoQ3VycmVudFVzZXJzQnlMaXN0IiA+PGI+Z2V0Um9vbXNXaXRoQ3VycmVudFVzZXJzQnlMaXN0PC9iPjwvYT4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQkNCisgICAgCQkJTWV0aG9kOiA8aT5nZXRSb29tc1dpdGhDdXJyZW50VXNlcnNCeUxpc3QgKA0KKyAgICAJCQkgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgU0lEDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIGludCBzdGFydA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBpbnQgbWF4DQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBvcmRlcmJ5DQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIGJvb2xlYW4gYXNjDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJKQ0KKyAgICAJCQk8L2k+PGJyLz4NCisgICAgCQkJPHA+DQorICAgIAkJCSAgUmV0dXJuIGEgUm9vbVJldHVybiBPYmplY3Qgd2l0aCBpbmZvcm1hdGlvbiBvZiB0aGUgY3VycmVudCB1c2VycyBvZiBhCisgY29uZmVyZW5jZSByb29tDQorICAgIAkJCTwvcD4NCisgICAgCQkJPHA+DQorICAgICAgICAgICAgICAgICAgUmV0dXJuIFR5cGU6IGphdmEudXRpbC5MaXN0DQorICAgICAgICAgICAgICAgIDwvcD4NCisgICAgCQkJPHA+UGFyYW1zOjwvcD4NCisgICAgCQkJICAgIAkJCQ0KKyAgICAJCQkJICAgIAkJCTx0YWJsZSBydWxlcz0iYWxsIiBib3JkZXI9IjEiPg0KKwkgICAgCQkJICAgPHRoZWFkPg0KKwkgICAgCQkJICAgPHRyPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPlR5cGU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPkZpZWxkbmFtZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iNDAwIiBhbGlnbj0ibGVmdCI+RGVzY3JpcHRpb248L3RoPg0KKwkgICAgCQkJICAgPC90cj4NCisJICAgIAkJCSAgIDwvdGhlYWQ+DQorCSAgICAJCQkgICA8dGJvZHk+DQorCSAgICAJCQkgICAJICAgIAkJCSAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5TSUQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIExvZ2dlZGluPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlpbnQNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnN0YXJ0PC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5UaGUgaWQgeW91IHdhbnQgdG8gc3RhcnQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCWludA0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+bWF4PC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5UaGUgbWF4aW11bSB5b3Ugd2FudCB0byBnZXQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+b3JkZXJieTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIGNvbHVtbiBpdCB3aWxsIGJlIG9yZGVyZWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCWJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFzYzwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+QXNjIG9yIERlc2Mgc29ydCBvcmRlcmluZzwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCisJICAgIAkJCTwvdGFibGU+DQorICAgIAkJCSAgICAJCQk8YnIvPg0KKyAgICAJCQlSRVNUIFNhbXBsZSBDYWxsL1VSTDo8YnIvPg0KKyAgICAJCQkgICAgCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1Jvb21TZXJ2aWNlL2dldFJvb21zV2l0aEN1cnJlbnRVc2Vyc0J5TGlzdD9TSUQ9VkFMVUUmc3RhcnQ9VkFMVUUmbWF4PVZBTFVFJm9yZGVyYnk9VkFMVUUmYXNjPVZBTFVFIj5odHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1Jvb21TZXJ2aWNlL2dldFJvb21zV2l0aEN1cnJlbnRVc2Vyc0J5TGlzdD9TSUQ9VkFMVUUmYW1wO3N0YXJ0PVZBTFVFJmFtcDttYXg9VkFMVUUmYW1wO29yZGVyYnk9VkFMVUUmYW1wO2FzYz1WQUxVRTwvYT4NCisgICAgCQkgIDwvZGl2Pg0KKyAgICAJICAgCQkJCSAgICAJCSAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZCI+DQorCQkgICAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZF9oZWFkZXIiPg0KKwkJICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDoxMHB4Ij4NCisgICAgCQkJPGEgbmFtZT0iZ2V0Um9vbXNXaXRoQ3VycmVudFVzZXJzQnlMaXN0QW5kVHlwZSIgPjxiPmdldFJvb21zV2l0aEN1cnJlbnRVc2Vyc0J5TGlzdEFuZFR5cGU8L2I+PC9hPg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCQ0KKyAgICAJCQlNZXRob2Q6IDxpPmdldFJvb21zV2l0aEN1cnJlbnRVc2Vyc0J5TGlzdEFuZFR5cGUgKA0KKyAgICAJCQkgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgU0lEDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIGludCBzdGFydA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBpbnQgbWF4DQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBvcmRlcmJ5DQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIGJvb2xlYW4gYXNjDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBleHRlcm5hbFJvb21UeXBlDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJKQ0KKyAgICAJCQk8L2k+PGJyLz4NCisgICAgCQkJPHA+DQorICAgIAkJCSAgUmV0dXJuIGEgUm9vbVJldHVybiBPYmplY3Qgd2l0aCBpbmZvcm1hdGlvbiBvZiB0aGUgY3VycmVudCB1c2VycyBvZiBhCisgY29uZmVyZW5jZSByb29tIHdpdGggb3B0aW9uIHRvIHNlYXJjaCBmb3Igc3BlY2lhbCBleHRlcm5hbCByb29tIHR5cGVzDQorICAgIAkJCTwvcD4NCisgICAgCQkJPHA+DQorICAgICAgICAgICAgICAgICAgUmV0dXJuIFR5cGU6IGphdmEudXRpbC5MaXN0DQorICAgICAgICAgICAgICAgIDwvcD4NCisgICAgCQkJPHA+UGFyYW1zOjwvcD4NCisgICAgCQkJICAgIAkJCQ0KKyAgICAJCQkJICAgIAkJCTx0YWJsZSBydWxlcz0iYWxsIiBib3JkZXI9IjEiPg0KKwkgICAgCQkJICAgPHRoZWFkPg0KKwkgICAgCQkJICAgPHRyPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPlR5cGU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPkZpZWxkbmFtZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iNDAwIiBhbGlnbj0ibGVmdCI+RGVzY3JpcHRpb248L3RoPg0KKwkgICAgCQkJICAgPC90cj4NCisJICAgIAkJCSAgIDwvdGhlYWQ+DQorCSAgICAJCQkgICA8dGJvZHk+DQorCSAgICAJCQkgICAJICAgIAkJCSAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5TSUQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIExvZ2dlZGluPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlpbnQNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnN0YXJ0PC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5UaGUgaWQgeW91IHdhbnQgdG8gc3RhcnQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCWludA0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+bWF4PC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5UaGUgbWF4aW11bSB5b3Ugd2FudCB0byBnZXQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+b3JkZXJieTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIGNvbHVtbiBpdCB3aWxsIGJlIG9yZGVyZWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCWJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFzYzwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+QXNjIG9yIERlc2Mgc29ydCBvcmRlcmluZzwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5leHRlcm5hbFJvb21UeXBlPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aGUgZXh0ZXJuYWwgcm9vbSB0eXBlPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KKwkgICAgCQkJPC90YWJsZT4NCisgICAgCQkJICAgIAkJCTxici8+DQorICAgIAkJCVJFU1QgU2FtcGxlIENhbGwvVVJMOjxici8+DQorICAgIAkJCSAgICAJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Sb29tU2VydmljZS9nZXRSb29tc1dpdGhDdXJyZW50VXNlcnNCeUxpc3RBbmRUeXBlP1NJRD1WQUxVRSZzdGFydD1WQUxVRSZtYXg9VkFMVUUmb3JkZXJieT1WQUxVRSZhc2M9VkFMVUUmZXh0ZXJuYWxSb29tVHlwZT1WQUxVRSI+aHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Sb29tU2VydmljZS9nZXRSb29tc1dpdGhDdXJyZW50VXNlcnNCeUxpc3RBbmRUeXBlP1NJRD1WQUxVRSZhbXA7c3RhcnQ9VkFMVUUmYW1wO21heD1WQUxVRSZhbXA7b3JkZXJieT1WQUxVRSZhbXA7YXNjPVZBTFVFJmFtcDtleHRlcm5hbFJvb21UeXBlPVZBTFVFPC9hPg0KKyAgICAJCSAgPC9kaXY+DQorICAgIAkgICAJCQkJICAgIAkJICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kIj4NCisJCSAgICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kX2hlYWRlciI+DQorCQkgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjEwcHgiPg0KKyAgICAJCQk8YSBuYW1lPSJhZGRSb29tV2l0aE1vZGVyYXRpb25BbmRFeHRlcm5hbFR5cGVBbmRTdGFydEVuZCIgPjxiPmFkZFJvb21XaXRoTW9kZXJhdGlvbkFuZEV4dGVybmFsVHlwZUFuZFN0YXJ0RW5kPC9iPjwvYT4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQkNCisgICAgCQkJTWV0aG9kOiA8aT5hZGRSb29tV2l0aE1vZGVyYXRpb25BbmRFeHRlcm5hbFR5cGVBbmRTdGFydEVuZCAoDQorICAgIAkJCSAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBTSUQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIG5hbWUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgTG9uZyByb29tdHlwZXNfaWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGNvbW1lbnQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgTG9uZyBudW1iZXJPZlBhcnRpemlwYW50cw0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGlzcHVibGljDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEJvb2xlYW4gYXBwb2ludG1lbnQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgQm9vbGVhbiBpc0RlbW9Sb29tDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEludGVnZXIgZGVtb1RpbWUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgQm9vbGVhbiBpc01vZGVyYXRlZFJvb20NCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGV4dGVybmFsUm9vbVR5cGUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIHZhbGlkRnJvbURhdGUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIHZhbGlkRnJvbVRpbWUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIHZhbGlkVG9EYXRlDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyB2YWxpZFRvVGltZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBCb29sZWFuIGlzUGFzc3dvcmRQcm90ZWN0ZWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIHBhc3N3b3JkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIExvbmcgcmVtaW5kZXJUeXBlSWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIHJlZGlyZWN0VVJMDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJKQ0KKyAgICAJCQk8L2k+PGJyLz4NCisgICAgCQkJPHA+DQorICAgIAkJCSAgQWRkcyBhIGNvbmZlcmVuY2Ugcm9vbSB0aGF0IGlzIG9ubHkgYXZhaWxhYmxlIGZvciBhIHBlcmlvZCBvZiB0aW1lDQorICAgIAkJCTwvcD4NCisgICAgCQkJPHA+DQorICAgICAgICAgICAgICAgICAgUmV0dXJuIFR5cGU6IGphdmEubGFuZy5Mb25nDQorICAgICAgICAgICAgICAgIDwvcD4NCisgICAgCQkJPHA+UGFyYW1zOjwvcD4NCisgICAgCQkJICAgIAkJCQ0KKyAgICAJCQkJICAgIAkJCTx0YWJsZSBydWxlcz0iYWxsIiBib3JkZXI9IjEiPg0KKwkgICAgCQkJICAgPHRoZWFkPg0KKwkgICAgCQkJICAgPHRyPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPlR5cGU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPkZpZWxkbmFtZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iNDAwIiBhbGlnbj0ibGVmdCI+RGVzY3JpcHRpb248L3RoPg0KKwkgICAgCQkJICAgPC90cj4NCisJICAgIAkJCSAgIDwvdGhlYWQ+DQorCSAgICAJCQkgICA8dGJvZHk+DQorCSAgICAJCQkgICAJICAgIAkJCSAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5TSUQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIExvZ2dlZGluPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPm5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPm5ldyBuYW1lIG9mIHRoZSByb29tPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5yb29tdHlwZXNfaWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPm5ldyB0eXBlIG9mIHJvb20gKDEgPSBDb25mZXJlbmNlLCAyID0gQXVkaWVuY2UsIDMgPQorICAgICAgICAgICAgUmVzdHJpY3RlZCwgNCA9IEludGVydmlldyk8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+Y29tbWVudDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+bmV3IGNvbW1lbnQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUxvbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPm51bWJlck9mUGFydGl6aXBhbnRzPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5uZXcgbnVtYmVyT2ZQYXJ0aWNpcGFudHM8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlzcHVibGljPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5pcyBwdWJsaWM8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFwcG9pbnRtZW50PC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5pZiB0aGUgcm9vbSBpcyBhbiBhcHBvaW50bWVudDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJQm9vbGVhbg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aXNEZW1vUm9vbTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aXMgaXQgYSBEZW1vIFJvb20gd2l0aCBsaW1pdGVkIHRpbWU/ICh1c2UgZmFsc2UgaWYgbm90IHN1cmUKKyAgICAgICAgICAgIHdoYXQgdGhhdCBtZWFucyk8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUludGVnZXINCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmRlbW9UaW1lPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aW1lIGluIHNlY29uZHMgYWZ0ZXIgdGhlIHVzZXIgd2lsbCBiZSBsb2dnZWQgb3V0IChvbmx5CisgICAgICAgICAgICBlbmFibGVkIGlmIGlzRGVtb1Jvb20gaXMgdHJ1ZSk8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUJvb2xlYW4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlzTW9kZXJhdGVkUm9vbTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VXNlcnMgaGF2ZSB0byB3YWl0IHVudGlsIGEgTW9kZXJhdG9yIGFycml2ZXMuIFVzZSB0aGUKKyAgICAgICAgICAgIGJlY29tZU1vZGVyYXRvciBwYXJhbWV0ZXIgaW4gc2V0VXNlck9iamVjdEFuZEdlbmVyYXRlUm9vbUhhc2gKKyAgICAgICAgICAgIHRvIHNldCBhIHVzZXIgYXMgZGVmYXVsdCBNb2RlcmF0b3I8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+ZXh0ZXJuYWxSb29tVHlwZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGhlIGV4dGVybmFsIHJvb20gdHlwZSAoY2FuIGJlIHVzZWQgdG8gaWRlbnRpZnkgZGlmZmVyZW50CisgICAgICAgICAgICBleHRlcm5hbCBzeXN0ZW1zIHVzaW5nIHNhbWUgT3Blbk1lZXRpbmdzIGluc3RhbmNlKTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj52YWxpZEZyb21EYXRlPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj52YWxpZCBmcm9tIGFzIERhdGUgZm9ybWF0OiBkZC5NTS55eXl5PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnZhbGlkRnJvbVRpbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnZhbGlkIHRvIGFzIHRpbWUgZm9ybWF0OiBtbTpoaDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj52YWxpZFRvRGF0ZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dmFsaWQgdG8gRGF0ZSBmb3JtYXQ6IGRkLk1NLnl5eXk8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dmFsaWRUb1RpbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnZhbGlkIHRvIHRpbWUgZm9ybWF0OiBtbTpoaDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJQm9vbGVhbg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aXNQYXNzd29yZFByb3RlY3RlZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+SWYgdGhlIGxpbmtzIHNlbmQgdmlhIEVNYWlsIHRvIGludml0ZWQgcGVvcGxlIGlzIHBhc3N3b3JkCisgICAgICAgICAgICBwcm90ZWN0ZWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+cGFzc3dvcmQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlBhc3N3b3JkIGZvciBJbnZpdGF0aW9ucyBzZW5kIHZpYSBNYWlsPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5yZW1pbmRlclR5cGVJZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+MT1ub25lLCAyPXNpbXBsZSBtYWlsLCAzPUlDQUw8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+cmVkaXJlY3RVUkw8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlVSTCBVc2VycyB3aWxsIGJlIGxlYWQgdG8gaWYgdGhlIENvbmZlcmVuY2UgVGltZSBpcyBlbGFwc2VkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KKwkgICAgCQkJPC90YWJsZT4NCisgICAgCQkJICAgIAkJCTxici8+DQorICAgIAkJCVJFU1QgU2FtcGxlIENhbGwvVVJMOjxici8+DQorICAgIAkJCSAgICAJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1Jvb21TZXJ2aWNlL2FkZFJvb21XaXRoTW9kZXJhdGlvbkFuZEV4dGVybmFsVHlwZUFuZFN0YXJ0RW5kP1NJRD1WQUxVRSZuYW1lPVZBTFVFJnJvb210eXBlc19pZD1WQUxVRSZjb21tZW50PVZBTFVFJm51bWJlck9mUGFydGl6aXBhbnRzPVZBTFVFJmlzcHVibGljPVZBTFVFJmFwcG9pbnRtZW50PVZBTFVFJmlzRGVtb1Jvb209VkFMVUUmZGVtb1RpbWU9VkFMVUUmaXNNb2RlcmF0ZWRSb29tPVZBTFVFJmV4dGVybmFsUm9vbVR5cGU9VkFMVUUmdmFsaWRGcm9tRGF0ZT1WQUxVRSZ2YWxpZEZyb21UaW1lPVZBTFVFJnZhbGlkVG9EYXRlPVZBTFVFJnZhbGlkVG9UaW1lPVZBTFVFJmlzUGFzc3dvcmRQcm90ZWN0ZWQ9VkFMVUUmcGFzc3dvcmQ9VkFMVUUmcmVtaW5kZXJUeXBlSWQ9VkFMVUUmcmVkaXJlY3RVUkw9VkFMVUUiPmh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvUm9vbVNlcnZpY2UvYWRkUm9vbVdpdGhNb2RlcmF0aW9uQW5kRXh0ZXJuYWxUeXBlQW5kU3RhcnRFbmQ/U0lEPVZBTFVFJmFtcDtuYW1lPVZBTFVFJmFtcDtyb29tdHlwZXNfaWQ9VkFMVUUmYW1wO2NvbW1lbnQ9VkFMVUUmYW1wO251bWJlck9mUGFydGl6aXBhbnRzPVZBTFVFJmFtcDtpc3B1YmxpYz1WQUxVRSZhbXA7YXBwb2ludG1lbnQ9VkFMVUUmYW1wO2lzRGVtb1Jvb209VkFMVUUmYW1wO2RlbW9UaW1lPVZBTFVFJmFtcDtpc01vZGVyYXRlZFJvb209VkFMVUUmYW1wO2V4dGVybmFsUm9vbVR5cGU9VkFMVUUmYW1wO3ZhbGlkRnJvbURhdGU9VkFMVUUmYW1wO3ZhbGlkRnJvbVRpbWU9VkFMVUUmYW1wO3ZhbGlkVG9EYXRlPVZBTFVFJmFtcDt2YWxpZFRvVGltZT1WQUxVRSZhbXA7aXNQYXNzd29yZFByb3RlY3RlZD1WQUxVRSZhbXA7cGFzc3dvcmQ9VkFMVUUmYW1wO3JlbWluZGVyVHlwZUlkPVZBTFVFJmFtcDtyZWRpcmVjdFVSTD1WQUxVRTwvYT4NCisgICAgCQkgIDwvZGl2Pg0KKyAgICAJICAgCQkJCSAgICAJCSAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZCI+DQorCQkgICAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZF9oZWFkZXIiPg0KKwkJICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDoxMHB4Ij4NCisgICAgCQkJPGEgbmFtZT0iYWRkTWVldGluZ01lbWJlclJlbWluZFRvUm9vbSIgPjxiPmFkZE1lZXRpbmdNZW1iZXJSZW1pbmRUb1Jvb208L2I+PC9hPg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCQ0KKyAgICAJCQlNZXRob2Q6IDxpPmFkZE1lZXRpbmdNZW1iZXJSZW1pbmRUb1Jvb20gKA0KKyAgICAJCQkgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgU0lEDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIExvbmcgcm9vbV9pZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgZmlyc3RuYW1lDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBsYXN0bmFtZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgZW1haWwNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGJhc2VVcmwNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgTG9uZyBsYW5ndWFnZV9pZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSkNCisgICAgCQkJPC9pPjxici8+DQorICAgIAkJCTxwPg0KKyAgICAJCQkgIEFkZCBhIG1lZXRpbmcgbWVtYmVyIHRvIGEgY2VydGFpbiByb29tLiBUaGlzIGlzIHRoZSBzYW1lIGFzIGFkZGluZyBhbgorIGV4dGVybmFsIHVzZXIgdG8gYSBldmVudCBpbiB0aGUgY2FsZW5kYXIuDQorICAgIAkJCTwvcD4NCisgICAgCQkJPHA+DQorICAgICAgICAgICAgICAgICAgUmV0dXJuIFR5cGU6IGphdmEubGFuZy5Mb25nDQorICAgICAgICAgICAgICAgIDwvcD4NCisgICAgCQkJPHA+UGFyYW1zOjwvcD4NCisgICAgCQkJICAgIAkJCQ0KKyAgICAJCQkJICAgIAkJCTx0YWJsZSBydWxlcz0iYWxsIiBib3JkZXI9IjEiPg0KKwkgICAgCQkJICAgPHRoZWFkPg0KKwkgICAgCQkJICAgPHRyPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPlR5cGU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPkZpZWxkbmFtZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iNDAwIiBhbGlnbj0ibGVmdCI+RGVzY3JpcHRpb248L3RoPg0KKwkgICAgCQkJICAgPC90cj4NCisJICAgIAkJCSAgIDwvdGhlYWQ+DQorCSAgICAJCQkgICA8dGJvZHk+DQorCSAgICAJCQkgICAJICAgIAkJCSAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5TSUQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIExvZ2dlZGluPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5yb29tX2lkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5UaGUgUm9vbSBJZCB0aGUgbWVldGluZyBtZW1iZXIgaXMgZ29pbmcgdG8gYmUgYWRkZWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+Zmlyc3RuYW1lPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5UaGUgZmlyc3QgbmFtZSBvZiB0aGUgbWVldGluZyBtZW1iZXI8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+bGFzdG5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlRoZSBsYXN0IG5hbWUgb2YgdGhlIG1lZXRpbmcgbWVtYmVyPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmVtYWlsPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5UaGUgZW1haWwgb2YgdGhlIE1lZXRpbmcgbWVtYmVyPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmJhc2VVcmw8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlRoZSBiYXNlVXJsLCB0aGlzIGlzIGltcG9ydGFudCB0byBzZW5kIHRoZSBjb3JyZWN0IGxpbmsgaW4gdGhlCisgICAgICAgICAgICBpbnZpdGF0aW9uIHRvIHRoZSBtZWV0aW5nIG1lbWJlcjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJTG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+bGFuZ3VhZ2VfaWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlRoZSBJRCBvZiB0aGUgbGFuZ3VhZ2UsIGZvciB0aGUgZW1haWwgdGhhdCBpcyBzZW5kIHRvIHRoZQorICAgICAgICAgICAgbWVldGluZyBtZW1iZXI8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQorCSAgICAJCQk8L3RhYmxlPg0KKyAgICAJCQkgICAgCQkJPGJyLz4NCisgICAgCQkJUkVTVCBTYW1wbGUgQ2FsbC9VUkw6PGJyLz4NCisgICAgCQkJICAgIAkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvUm9vbVNlcnZpY2UvYWRkTWVldGluZ01lbWJlclJlbWluZFRvUm9vbT9TSUQ9VkFMVUUmcm9vbV9pZD1WQUxVRSZmaXJzdG5hbWU9VkFMVUUmbGFzdG5hbWU9VkFMVUUmZW1haWw9VkFMVUUmYmFzZVVybD1WQUxVRSZsYW5ndWFnZV9pZD1WQUxVRSI+aHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Sb29tU2VydmljZS9hZGRNZWV0aW5nTWVtYmVyUmVtaW5kVG9Sb29tP1NJRD1WQUxVRSZhbXA7cm9vbV9pZD1WQUxVRSZhbXA7Zmlyc3RuYW1lPVZBTFVFJmFtcDtsYXN0bmFtZT1WQUxVRSZhbXA7ZW1haWw9VkFMVUUmYW1wO2Jhc2VVcmw9VkFMVUUmYW1wO2xhbmd1YWdlX2lkPVZBTFVFPC9hPg0KKyAgICAJCSAgPC9kaXY+DQorICAgIAkgICAJCQkJICAgIAkJICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kIj4NCisJCSAgICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kX2hlYWRlciI+DQorCQkgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjEwcHgiPg0KKyAgICAJCQk8YSBuYW1lPSJhZGRFeHRlcm5hbE1lZXRpbmdNZW1iZXJSZW1pbmRUb1Jvb20iID48Yj5hZGRFeHRlcm5hbE1lZXRpbmdNZW1iZXJSZW1pbmRUb1Jvb208L2I+PC9hPg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCQ0KKyAgICAJCQlNZXRob2Q6IDxpPmFkZEV4dGVybmFsTWVldGluZ01lbWJlclJlbWluZFRvUm9vbSAoDQorICAgIAkJCSAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBTSUQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgTG9uZyByb29tX2lkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBmaXJzdG5hbWUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGxhc3RuYW1lDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBlbWFpbA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgYmFzZVVybA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBMb25nIGxhbmd1YWdlX2lkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBqTmFtZVRpbWVab25lDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBpbnZpdG9yTmFtZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSkNCisgICAgCQkJPC9pPjxici8+DQorICAgIAkJCTxwPg0KKyAgICAJCQkgIEFkZCBhIG1lZXRpbmcgbWVtYmVyIHRvIGEgY2VydGFpbiByb29tLiBUaGlzIGlzIHRoZSBzYW1lIGFzIGFkZGluZyBhbgorIGV4dGVybmFsIHVzZXIgdG8gYSBldmVudCBpbiB0aGUgY2FsZW5kYXIuIHdpdGggYSBjZXJ0YWluIHRpbWUgem9uZQ0KKyAgICAJCQk8L3A+DQorICAgIAkJCTxwPg0KKyAgICAgICAgICAgICAgICAgIFJldHVybiBUeXBlOiBqYXZhLmxhbmcuTG9uZw0KKyAgICAgICAgICAgICAgICA8L3A+DQorICAgIAkJCTxwPlBhcmFtczo8L3A+DQorICAgIAkJCSAgICAJCQkNCisgICAgCQkJCSAgICAJCQk8dGFibGUgcnVsZXM9ImFsbCIgYm9yZGVyPSIxIj4NCisJICAgIAkJCSAgIDx0aGVhZD4NCisJICAgIAkJCSAgIDx0cj4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5UeXBlPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5GaWVsZG5hbWU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjQwMCIgYWxpZ249ImxlZnQiPkRlc2NyaXB0aW9uPC90aD4NCisJICAgIAkJCSAgIDwvdHI+DQorCSAgICAJCQkgICA8L3RoZWFkPg0KKwkgICAgCQkJICAgPHRib2R5Pg0KKwkgICAgCQkJICAgCSAgICAJCQkgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+U0lEPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5UaGUgU0lEIG9mIHRoZSBVc2VyLiBUaGlzIFNJRCBtdXN0IGJlIG1hcmtlZCBhcyBMb2dnZWRpbjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJTG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+cm9vbV9pZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIFJvb20gSWQgdGhlIG1lZXRpbmcgbWVtYmVyIGlzIGdvaW5nIHRvIGJlIGFkZGVkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmZpcnN0bmFtZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIGZpcnN0IG5hbWUgb2YgdGhlIG1lZXRpbmcgbWVtYmVyPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmxhc3RuYW1lPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5UaGUgbGFzdCBuYW1lIG9mIHRoZSBtZWV0aW5nIG1lbWJlcjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5lbWFpbDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIGVtYWlsIG9mIHRoZSBNZWV0aW5nIG1lbWJlcjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5iYXNlVXJsPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5UaGUgYmFzZVVybCwgdGhpcyBpcyBpbXBvcnRhbnQgdG8gc2VuZCB0aGUgY29ycmVjdCBsaW5rIGluIHRoZQorICAgICAgICAgICAgaW52aXRhdGlvbiB0byB0aGUgbWVldGluZyBtZW1iZXI8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUxvbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmxhbmd1YWdlX2lkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5UaGUgSUQgb2YgdGhlIGxhbmd1YWdlLCBmb3IgdGhlIGVtYWlsIHRoYXQgaXMgc2VuZCB0byB0aGUKKyAgICAgICAgICAgIG1lZXRpbmcgbWVtYmVyPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmpOYW1lVGltZVpvbmU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPm5hbWUgb2YgdGhlIHRpbWV6b25lPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmludml0b3JOYW1lPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5uYW1lIG9mIGludml0YXRpb24gY3JlYXRvcnM8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQorCSAgICAJCQk8L3RhYmxlPg0KKyAgICAJCQkgICAgCQkJPGJyLz4NCisgICAgCQkJUkVTVCBTYW1wbGUgQ2FsbC9VUkw6PGJyLz4NCisgICAgCQkJICAgIAkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1Jvb21TZXJ2aWNlL2FkZEV4dGVybmFsTWVldGluZ01lbWJlclJlbWluZFRvUm9vbT9TSUQ9VkFMVUUmcm9vbV9pZD1WQUxVRSZmaXJzdG5hbWU9VkFMVUUmbGFzdG5hbWU9VkFMVUUmZW1haWw9VkFMVUUmYmFzZVVybD1WQUxVRSZsYW5ndWFnZV9pZD1WQUxVRSZqTmFtZVRpbWVab25lPVZBTFVFJmludml0b3JOYW1lPVZBTFVFIj5odHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1Jvb21TZXJ2aWNlL2FkZEV4dGVybmFsTWVldGluZ01lbWJlclJlbWluZFRvUm9vbT9TSUQ9VkFMVUUmYW1wO3Jvb21faWQ9VkFMVUUmYW1wO2ZpcnN0bmFtZT1WQUxVRSZhbXA7bGFzdG5hbWU9VkFMVUUmYW1wO2VtYWlsPVZBTFVFJmFtcDtiYXNlVXJsPVZBTFVFJmFtcDtsYW5ndWFnZV9pZD1WQUxVRSZhbXA7ak5hbWVUaW1lWm9uZT1WQUxVRSZhbXA7aW52aXRvck5hbWU9VkFMVUU8L2E+DQorICAgIAkJICA8L2Rpdj4NCisgICAgCSAgIAkJCQkgICAgCQkgICAgICA8ZGl2IGNsYXNzPSJtZXRob2QiPg0KKwkJICAgICAgICA8ZGl2IGNsYXNzPSJtZXRob2RfaGVhZGVyIj4NCisJCSAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTBweCI+DQorICAgIAkJCTxhIG5hbWU9ImNsb3NlUm9vbSIgPjxiPmNsb3NlUm9vbTwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+Y2xvc2VSb29tICgNCisgICAgCQkJICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIFNJRA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBMb25nIHJvb21faWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgQm9vbGVhbiBzdGF0dXMNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkpDQorICAgIAkJCTwvaT48YnIvPg0KKyAgICAJCQk8cD4NCisgICAgCQkJICBNZXRob2QgdG8gcmVtb3RlbHkgY2xvc2Ugb3Igb3BlbiByb29tcy4gSWYgYSByb29tIGlzIGNsb3NlZCBhbGwgdXNlcnMKKyBpbnNpZGUgdGhlIHJvb20gYW5kIGFsbCB1c2VycyB0aGF0IHRyeSB0byBlbnRlciBpdCB3aWxsIGJlIHJlZGlyZWN0ZWQgdG8KKyB0aGUgcmVkaXJlY3RVUkwgdGhhdCBpcyBkZWZpbmVkIGluIHRoZSBSb29tLU9iamVjdC4KKyAKKyBSZXR1cm5zIHBvc2l0aXZlIHZhbHVlIGlmIGF1dGhlbnRpY2F0aW9uIHdhcyBzdWNjZXNzZnVsLg0KKyAgICAJCQk8L3A+DQorICAgIAkJCTxwPg0KKyAgICAgICAgICAgICAgICAgIFJldHVybiBUeXBlOiBpbnQNCisgICAgICAgICAgICAgICAgPC9wPg0KKyAgICAJCQk8cD5QYXJhbXM6PC9wPg0KKyAgICAJCQkgICAgCQkJDQorICAgIAkJCQkgICAgCQkJPHRhYmxlIHJ1bGVzPSJhbGwiIGJvcmRlcj0iMSI+DQorCSAgICAJCQkgICA8dGhlYWQ+DQorCSAgICAJCQkgICA8dHI+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+VHlwZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+RmllbGRuYW1lPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSI0MDAiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvdGg+DQorCSAgICAJCQkgICA8L3RyPg0KKwkgICAgCQkJICAgPC90aGVhZD4NCisJICAgIAkJCSAgIDx0Ym9keT4NCisJICAgIAkJCSAgIAkgICAgCQkJICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlNJRDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgTG9nZ2VkaW48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUxvbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnJvb21faWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSByb29tIGlkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlCb29sZWFuDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5zdGF0dXM8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmZhbHNlID0gY2xvc2UsIHRydWUgPSBvcGVuPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KKwkgICAgCQkJPC90YWJsZT4NCisgICAgCQkJICAgIAkJCTxici8+DQorICAgIAkJCVJFU1QgU2FtcGxlIENhbGwvVVJMOjxici8+DQorICAgIAkJCSAgICAJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Sb29tU2VydmljZS9jbG9zZVJvb20/U0lEPVZBTFVFJnJvb21faWQ9VkFMVUUmc3RhdHVzPVZBTFVFIj5odHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1Jvb21TZXJ2aWNlL2Nsb3NlUm9vbT9TSUQ9VkFMVUUmYW1wO3Jvb21faWQ9VkFMVUUmYW1wO3N0YXR1cz1WQUxVRTwvYT4NCisgICAgCQkgIDwvZGl2Pg0KKyAgICAJICAgCQkJCSAgICAJCSAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZCI+DQorCQkgICAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZF9oZWFkZXIiPg0KKwkJICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDoxMHB4Ij4NCisgICAgCQkJPGEgbmFtZT0ibW9kaWZ5Um9vbVBhcmFtZXRlciIgPjxiPm1vZGlmeVJvb21QYXJhbWV0ZXI8L2I+PC9hPg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCQ0KKyAgICAJCQlNZXRob2Q6IDxpPm1vZGlmeVJvb21QYXJhbWV0ZXIgKA0KKyAgICAJCQkgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgU0lEDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIExvbmcgcm9vbV9pZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgcGFyYW1OYW1lDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBwYXJhbVZhbHVlDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJKQ0KKyAgICAJCQk8L2k+PGJyLz4NCisgICAgCQkJPHA+DQorICAgIAkJCSAgTWV0aG9kIHRvIHVwZGF0ZSBhcmJpdHJhcnkgcm9vbSBwYXJhbWV0ZXIuDQorICAgIAkJCTwvcD4NCisgICAgCQkJPHA+DQorICAgICAgICAgICAgICAgICAgUmV0dXJuIFR5cGU6IGludA0KKyAgICAgICAgICAgICAgICA8L3A+DQorICAgIAkJCTxwPlBhcmFtczo8L3A+DQorICAgIAkJCSAgICAJCQkNCisgICAgCQkJCSAgICAJCQk8dGFibGUgcnVsZXM9ImFsbCIgYm9yZGVyPSIxIj4NCisJICAgIAkJCSAgIDx0aGVhZD4NCisJICAgIAkJCSAgIDx0cj4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5UeXBlPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5GaWVsZG5hbWU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjQwMCIgYWxpZ249ImxlZnQiPkRlc2NyaXB0aW9uPC90aD4NCisJICAgIAkJCSAgIDwvdHI+DQorCSAgICAJCQkgICA8L3RoZWFkPg0KKwkgICAgCQkJICAgPHRib2R5Pg0KKwkgICAgCQkJICAgCSAgICAJCQkgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+U0lEPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5UaGUgU0lEIG9mIHRoZSBVc2VyLiBUaGlzIFNJRCBtdXN0IGJlIG1hcmtlZCBhcyBMb2dnZWRpbjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJTG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+cm9vbV9pZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGhlIHJvb20gaWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+cGFyYW1OYW1lPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+cGFyYW1WYWx1ZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KKwkgICAgCQkJPC90YWJsZT4NCisgICAgCQkJICAgIAkJCTxici8+DQorICAgIAkJCVJFU1QgU2FtcGxlIENhbGwvVVJMOjxici8+DQorICAgIAkJCSAgICAJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1Jvb21TZXJ2aWNlL21vZGlmeVJvb21QYXJhbWV0ZXI/U0lEPVZBTFVFJnJvb21faWQ9VkFMVUUmcGFyYW1OYW1lPVZBTFVFJnBhcmFtVmFsdWU9VkFMVUUiPmh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvUm9vbVNlcnZpY2UvbW9kaWZ5Um9vbVBhcmFtZXRlcj9TSUQ9VkFMVUUmYW1wO3Jvb21faWQ9VkFMVUUmYW1wO3BhcmFtTmFtZT1WQUxVRSZhbXA7cGFyYW1WYWx1ZT1WQUxVRTwvYT4NCisgICAgCQkgIDwvZGl2Pg0KKyAgICAJICAgCQkJDQorCQ0KKwk8L2JvZHk+DQorPC9odG1sPg0KKw0KZGlmZiAtLWdpdCBhL2RvY3MvU2FrYWlQbHVnaW4uaHRtbCBiL2RvY3MvU2FrYWlQbHVnaW4uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jM2E2ODBiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9TYWthaVBsdWdpbi5odG1sCkBAIC0wLDAgKzEsODAzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KKworPCEtLQorQ29weXJpZ2h0IDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KK0xpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKK2h0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCitVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCitkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCitTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCitsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorCisKKzwhLS0gQ29udGVudCBTdHlsZXNoZWV0IGZvciBTaXRlIC0tPgorCisgICAgICAgIAorPCEtLSBzdGFydCB0aGUgcHJvY2Vzc2luZyAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPCEtLSBHRU5FUkFURUQgRklMRSwgRE8gTk9UIEVESVQsIEVESVQgVEhFIFhNTCBGSUxFIElOIHhkb2NzIElOU1RFQUQhIC0tPgorICAgIDwhLS0gTWFpbiBQYWdlIFNlY3Rpb24gLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDxodG1sPgorICAgICAgICA8aGVhZD4KKyAgICAgICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ii8+CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9IgorCQkJT3Blbk1lZXRpbmdzIFRlYW0KKwkJIj4KKyAgICAgICAgICAgIDxtZXRhIG5hbWU9ImVtYWlsIiBjb250ZW50PSJzZWJhd2FnbmVyQGFwYWNoZS5vcmciPgorICAgICAgICAgICAgCisgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIDx0aXRsZT5BcGFjaGUgT3Blbk1lZXRpbmdzIC0gU2FrYWkgUGx1Z2luPC90aXRsZT4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9vcGVubWVldGluZ3MuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9qcXVlcnktdWkuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2luLXNsaWRlci1zdHlsZXMuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2xvcmJveC5jc3MiIC8+CisgICAgICAgICAgICAKKwkJCTwhLS0gQWRkIGpRdWVyeSBsaWJyYXJ5IC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LTEuNy4xLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPCEtLSBBZGQgY29pbnNsaWRlciBwbHVnaW5zIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvY29pbi1zbGlkZXIubWluLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPCEtLSBBZGQgY29sb3Jib3ggcGx1Z2luIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LmNvbG9yYm94LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmNvcmUuanMiPjwvc2NyaXB0PgorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS53aWRnZXQuanMiPjwvc2NyaXB0PgorCQkKKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkuYWNjb3JkaW9uLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdD4KKwkJCSQoZnVuY3Rpb24oKSB7CisJCQkJJCggIiNhY2NvcmRpb24iICkuYWNjb3JkaW9uKHsKKwkJCQkJYXV0b0hlaWdodDogZmFsc2UsCisJCQkJCW5hdmlnYXRpb246IHRydWUsCisJCQkJCW5hdmlnYXRpb25GaWx0ZXI6IGZ1bmN0aW9uICgpIHsKKwkJCQkJCXZhciBzaWRlYmFySHJlZkFycmF5ID0gdGhpcy5ocmVmLnNwbGl0KCIvIik7CisgICAgCQkJCQl2YXIgc2lkZUJhckxhc3RTdHJpbmcgPSBzaWRlYmFySHJlZkFycmF5W3NpZGViYXJIcmVmQXJyYXkubGVuZ3RoIC0gMV0udG9Mb3dlckNhc2UoKTsKKwkJCQkJCQorCQkJCQkJaWYgKHNpZGVCYXJMYXN0U3RyaW5nLmluZGV4T2YoIiMiKSA9PSAtMSkgeworCQkJCQkJCXJldHVybiBmYWxzZTsKKwkJCQkJCX0KKwkJCQkJCQorCQkJCQkJCQkJCQkJLyogZG9jdW1lbnQubG9jYXRpb24uaHJlZiAqLworCQkJCQkJdmFyIGN1cnJlbnRTZWN0aW9uID0gIiI7CisJCQkJCQkKKwkJCQkJCXZhciBjdXJyZW50TG9jYXRpb24gPSAiIjsKKwkJCQkJCXZhciBjdXJyZW50TGluayA9ICIiOworCQkJCQkJaWYgKGZhbHNlKSB7CisJCQkJCQkKKwkJCQkJCX0KKyAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5kZXguaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5kZXguaHRtbCIuc3Vic3RyKDEsICIvaW5kZXguaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9saWNlbnNlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2xpY2Vuc2UuaHRtbCIuc3Vic3RyKDEsICIvbGljZW5zZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5zdWJzdHIoMSwgImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZG93bmxvYWRzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2Rvd25sb2Fkcy5odG1sIi5zdWJzdHIoMSwgIi9kb3dubG9hZHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiLnN1YnN0cigxLCAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9pbnN0YWxsYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5zdGFsbGF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL2luc3RhbGxhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1VwZ3JhZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvVXBncmFkZS5odG1sIi5zdWJzdHIoMSwgIi9VcGdyYWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIuc3Vic3RyKDEsICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db21tYW5kTGluZUFkbWluLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIuc3Vic3RyKDEsICIvQ29tbWFuZExpbmVBZG1pbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9nZXQtaW52b2x2ZWQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9nZXQtaW52b2x2ZWQuaHRtbCIuc3Vic3RyKDEsICIvZ2V0LWludm9sdmVkLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGVhbS1saXN0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdGVhbS1saXN0Lmh0bWwiLnN1YnN0cigxLCAiL3RlYW0tbGlzdC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL21haWwtbGlzdHMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9tYWlsLWxpc3RzLmh0bWwiLnN1YnN0cigxLCAiL21haWwtbGlzdHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLnN1YnN0cigxLCAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3N2bi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvc3ZuLmh0bWwiLnN1YnN0cigxLCAiL3N2bi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIuc3Vic3RyKDEsICJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2RlcGVuZGVuY2llcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZGVwZW5kZW5jaWVzLmh0bWwiLnN1YnN0cigxLCAiL2RlcGVuZGVuY2llcy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pVbml0VGVzdGluZy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSlVuaXRUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL0pVbml0VGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01hbnVhbFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01hbnVhbFRlc3RpbmcuaHRtbCIuc3Vic3RyKDEsICIvTWFudWFsVGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlbGVhc2VHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVsZWFzZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1JlbGVhc2VHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYnNpdGVHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvV2Vic2l0ZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1dlYnNpdGVHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Tb2FwUmVzdEFQSS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU29hcFJlc3RBUEkuaHRtbCIuc3Vic3RyKDEsICIvU29hcFJlc3RBUEkuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZXN0QVBJU2FtcGxlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZXN0QVBJU2FtcGxlLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RBUElTYW1wbGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MZGFwQW5kQURTLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9MZGFwQW5kQURTLmh0bWwiLnN1YnN0cigxLCAiL0xkYXBBbmRBRFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FcnJvcnNUYWJsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRXJyb3JzVGFibGUuaHRtbCIuc3Vic3RyKDEsICIvRXJyb3JzVGFibGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTW9vZGxlUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01vb2RsZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Nb29kbGVQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TYWthaVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TYWthaVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TYWthaVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ppcmFQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSmlyYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9KaXJhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSm9vbWxhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pvb21sYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Kb29tbGFQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EcnVwYWxQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRHJ1cGFsUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0RydXBhbFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0JpdHJpeFBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CaXRyaXhQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvQml0cml4UGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TdWdhckNSTVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TdWdhckNSTVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TdWdhckNSTVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlZG1pbmVQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVkbWluZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9SZWRtaW5lUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSUJNREIyQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSUJNREIyQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL0lCTURCMkNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3JhY2xlQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3JhY2xlQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL09yYWNsZUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTXlTUUxDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9NeVNRTENvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9NeVNRTENvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUG9zdGdyZXNDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MYW5ndWFnZUVkaXRvci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLnN1YnN0cigxLCAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5zdWJzdHIoMSwgIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FZGl0VGVtcGxhdGVzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRWRpdFRlbXBsYXRlcy5odG1sIi5zdWJzdHIoMSwgIi9FZGl0VGVtcGxhdGVzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1BvcnRTZXR0aW5ncy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1BvcnRTZXR0aW5ncy5odG1sIi5zdWJzdHIoMSwgIi9Qb3J0U2V0dGluZ3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5zdWJzdHIoMSwgIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5zdWJzdHIoMSwgIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EYXNoYm9hcmQuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9EYXNoYm9hcmQuaHRtbCIuc3Vic3RyKDEsICIvRGFzaGJvYXJkLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLnN1YnN0cigxLCAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Ib3RLZXlzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSG90S2V5cy5odG1sIi5zdWJzdHIoMSwgIi9Ib3RLZXlzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYmFwcE5hbWVQYXRoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvV2ViYXBwTmFtZVBhdGguaHRtbCIuc3Vic3RyKDEsICIvV2ViYXBwTmFtZVBhdGguaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL05hdmlnYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9OYXZpZ2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL05hdmlnYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLnN1YnN0cigxLCAiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIuc3Vic3RyKDEsICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIuc3Vic3RyKDEsICIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUlRNUFNBbmRIVFRQUy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1JUTVBTQW5kSFRUUFMuaHRtbCIuc3Vic3RyKDEsICIvUlRNUFNBbmRIVFRQUy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5zdWJzdHIoMSwgIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5zdWJzdHIoMSwgIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NsdXN0ZXJpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DbHVzdGVyaW5nLmh0bWwiLnN1YnN0cigxLCAiL0NsdXN0ZXJpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvR2V0VmVyc2lvbkluZm8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9HZXRWZXJzaW9uSW5mby5odG1sIi5zdWJzdHIoMSwgIi9HZXRWZXJzaW9uSW5mby5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkgICAgCQkJCQkKKyAgICAJCQkJCWN1cnJlbnRMaW5rID0gY3VycmVudExpbmsudG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCWN1cnJlbnRMb2NhdGlvbiA9IGN1cnJlbnRMb2NhdGlvbi50b0xvd2VyQ2FzZSgpOworICAgIAkJCQkJCisJCQkJCQlyZXR1cm4gc2lkZUJhckxhc3RTdHJpbmcgPT0gY3VycmVudExpbmsrIiMiK2N1cnJlbnRMb2NhdGlvbjsKKwkJCQkJfQorCQkJCX0pOworCQkJfSk7CisJCQk8L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCQkJCSQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgeworCQkJCQkkKCcuZmFuY3lib3gtYnV0dG9ucycpLmNvbG9yYm94KHtyZWw6J2ZhbmN5Ym94LWJ1dHRvbnMnLHdpZHRoOiI3NSUiLCBoZWlnaHQ6Ijc1JSJ9KTsKKwkJCQkJJCgnI2FjY29yZGlvbiBhJykuZWFjaChmdW5jdGlvbigpIHsKKwkJCQkgICAgICB2YXIgYSA9ICQodGhpcyk7CisJCQkJICAgICAgdmFyIGhyZWYgPSBhLmF0dHIoImhyZWYiKTsKKwkJCQkgICAgICBpZiAoaHJlZi5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkgICAgICAJICB2YXIgY29tcGFyZUl0ID0gaHJlZi5zdWJzdHIoMiwgaHJlZi5sZW5ndGgpOworCQkJCQkgICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKGNvbXBhcmVJdCkhPSAtMSkgeworCQkJCQkgICAgICAgYS5hZGRDbGFzcygnYWN0aXZlJyk7CisJCQkJCSAgICAgIH0KKwkJCQkgICAgICB9CisJCQkJICAgIH0pOworCQkJCQkkKCcjY29pbi1zbGlkZXInKS5jb2luc2xpZGVyKHsgd2lkdGg6IDY0MCxoZWlnaHQ6IDQwMCwgZGVsYXk6IDQwMDAgIH0pOwkJCQkJCisJCQkJfSk7CisJCQk8L3NjcmlwdD4JCisJCQkJCQkKKwkJCTxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisJCQkJLmZhbmN5Ym94LWN1c3RvbSAuZmFuY3lib3gtb3V0ZXIgeworCQkJCQlib3gtc2hhZG93OiAwIDAgNTBweCAjMjIyOworCQkJCX0KKwkJCTwvc3R5bGU+CisgICAgICAgIDwvaGVhZD4KKworICAgICAgICA8Ym9keSBiZ2NvbG9yPSIjZmZmZmZmIiB0ZXh0PSIjMDAwMDAwIiBsaW5rPSIjMTIzNDY1IiB2bGluaz0iIzEyMzQ2NSIgYWxpbms9IiMwMDAwMDAiPiAgCisgICAgICAgIAk8ZGl2IGNsYXNzPSJtYWluYm9keSIgc3R5bGU9IndpZHRoOiAxMDAlOyI+CisgICAgICAgIAk8ZGl2IGNsYXNzPSJzdXBlcmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIj4KKyAgICAgICAgICAgICAgICA8IS0tIFRPUCBJTUFHRSAtLT4KKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCI+Cis8YSBocmVmPSJodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvIj48aW1nIHNyYz0iLi9pbWFnZXMvbG9nby0yLmpwZyIgYWx0PSJBcGFjaGUgT3Blbk1lZXRpbmdzIiBib3JkZXI9IjAiLz48L2E+Cis8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCIgPgorCTxhIGhyZWY9ImRlbW8uaHRtbCI+RGVtbzwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJkb3dubG9hZHMuaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5Eb3dubG9hZDwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJpbnN0YWxsYXRpb24uaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5JbnN0YWxsYXRpb248L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MiIHRhcmdldD0iX0JMQU5LIj5XaWtpPC9hPgorCTxzcGFuPiZuYnNwOzwvc3Bhbj4KKzwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjQiPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8IS0tIExFRlQgU0lERSBOQVZJR0FUSU9OIC0tPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiIG5vd3JhcD0ibm93cmFwIj4KKworICAgICAgICAgICAgICAgICAgICA8IS0tIHNwZWNpYWwgQUNvbiBMb2dvIC0gbGVhdmUgaGVyZSBmb3IgbmV4dCB0aW1lCisgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9hcGFjaGVjb24uY29tLzIwMDUvVVMvIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vYXBhY2hlLm9yZy9pbWFnZXMvYWMyMDA1dXNfYmx1ZV8xMjV4MTI1LmpwZyIgaGVpZ2h0PSIxMjUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPSIxMjUiIGJvcmRlcj0iMCIgYWx0PSJBcGFjaGVDb24gVVMgMjAwNSIgLz4KKyAgICAgICAgICAgICAgICAgICAgPC9hPiAgLS0+CisKKyAgICAgICAgICAgICAgICAgICA8IS0tIHJlZ3VsYXIgbWVudSAtLT4KKworICAgICAgICAgICAgICAgICAgICAKKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8ZGl2IGlkPSJhY2NvcmRpb24iIHN0eWxlPSJ3aWR0aDogMTAwJSI+CisgICAgCisgICAgICAgICAgICAJPGgzPjxhIGhyZWY9IiNHZW5lcmFsIj5HZW5lcmFsPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9pbmRleC5odG1sIj5Ib21lPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9saWNlbnNlLmh0bWwiPkxpY2Vuc2U8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5BU0Y8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2Rvd25sb2Fkcy5odG1sIj5Eb3dubG9hZHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIj5Db21tZXJjaWFsIFN1cHBvcnQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0luc3RhbGxhdGlvbmFuZFVwZ3JhZGUiPkluc3RhbGxhdGlvbiBhbmQgVXBncmFkZTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5zdGFsbGF0aW9uLmh0bWwiPkluc3RhbGxhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vVXBncmFkZS5odG1sIj5VcGdyYWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLmh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIj5UdXRvcmlhbHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCI+Q29tbWFuZCBMaW5lIEFkbWluPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb21tdW5pdHkiPkNvbW11bml0eTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZ2V0LWludm9sdmVkLmh0bWwiPkdldCBJbnZvbHZlZDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdGVhbS1saXN0Lmh0bWwiPkNvbW1pdHRlcnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL21haWwtbGlzdHMuaHRtbCI+TWFpbGluZyBMaXN0czwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIj5XaWtpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNEZXZlbG9wbWVudCI+RGV2ZWxvcG1lbnQ8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3N2bi5odG1sIj5Tb3VyY2UgQ29kZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiPkJ1Z3MgLyBJc3N1ZXMgKEpJUkEpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kZXBlbmRlbmNpZXMuaHRtbCI+RGVwZW5kZW5jaWVzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CdWlsZEluc3RydWN0aW9ucy5odG1sIj5CdWlsZCBJbnN0cnVjdGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pVbml0VGVzdGluZy5odG1sIj5KVW5pdCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9NYW51YWxUZXN0aW5nLmh0bWwiPk1hbnVhbCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWxlYXNlR3VpZGUuaHRtbCI+UmVsZWFzZSBHdWlkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vV2Vic2l0ZUd1aWRlLmh0bWwiPldlYnNpdGUgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0ludGVncmF0aW9uIj5JbnRlZ3JhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU29hcFJlc3RBUEkuaHRtbCI+U09BUC9SRVNUIEFQSTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVzdEFQSVNhbXBsZS5odG1sIj5SRVNUIEFQSSBTYW1wbGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0xkYXBBbmRBRFMuaHRtbCI+TGRhcCBhbmQgQURTPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIj5Wb0lQIGFuZCBTSVA8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0Vycm9yc1RhYmxlLmh0bWwiPkVycm9ycyB0YWJsZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjUGx1Z2lucyI+UGx1Z2luczwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTW9vZGxlUGx1Z2luLmh0bWwiPk1vb2RsZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Nha2FpUGx1Z2luLmh0bWwiPlNha2FpIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSmlyYVBsdWdpbi5odG1sIj5KaXJhIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSm9vbWxhUGx1Z2luLmh0bWwiPkpvb21sYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0RydXBhbFBsdWdpbi5odG1sIj5EcnVwYWwgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CaXRyaXhQbHVnaW4uaHRtbCI+Qml0cml4IFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQ29uZmx1ZW5jZVBsdWdpbi5odG1sIj5Db25mbHVlbmNlIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU3VnYXJDUk1QbHVnaW4uaHRtbCI+U3VnYXJDUk0gUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWRtaW5lUGx1Z2luLmh0bWwiPlJlZG1pbmUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb25maWd1cmF0aW9uIj5Db25maWd1cmF0aW9uPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5EQiBTYW1wbGUgQ29uZmlndXJhdGlvbnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIj5BcGFjaGUgRGVyYnk8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0lCTURCMkNvbmZpZy5odG1sIj5JQk0gREIyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcmFjbGVDb25maWcuaHRtbCI+T3JhY2xlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9NeVNRTENvbmZpZy5odG1sIj5NeVNRTDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9zdGdyZXNDb25maWcuaHRtbCI+UG9zdGdyZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkxvY2FsaXphdGlvbiBhbmQgbGFuZ3VhZ2VzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCI+SW50ZXJuYXRpb25hbGlzYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0xhbmd1YWdlRWRpdG9yLmh0bWwiPkxhbmd1YWdlRWRpdG9yPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiPlRpbWVab25lSGFuZGxpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0VkaXRUZW1wbGF0ZXMuaHRtbCI+RWRpdFRlbXBsYXRlczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TkFUIFBvcnQgU2V0dGluZ3M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Qb3J0U2V0dGluZ3MuaHRtbCI+UG9ydCBzZXR0aW5nczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+UGVyZm9ybWFuY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIj5KVk0gcGVyZm9ybWFuY2UgdHVuaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Vc2VyIEludGVyZmFjZTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCI+VGhlbWVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9EYXNoYm9hcmQuaHRtbCI+RGFzaGJvYXJkPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIj5XZWJjYW0gcmVzb2x1dGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIj5Sb29tIGxheW91dCBvcHRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Ib3RLZXlzLmh0bWwiPkhvdCBLZXlzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5DdXN0b21pemF0aW9uPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViYXBwTmFtZVBhdGguaHRtbCI+V2ViYXBwIG5hbWUvcGF0aDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTmF2aWdhdGlvbi5odG1sIj5OYXZpZ2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiPkNhbGVuZGFyIGFuZCB0aW1lem9uZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIj5DdXN0b20gcm9vbSB0eXBlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIj5DdXN0b20gY3R5cHQgbWVjaGFuaXNtPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIj5HZW5lcmFsIENvbmZpZ3VyYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlNlY3VyaXR5PC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUmVzdHJpY3RlZEFjY2Vzcy5odG1sIj5SZXN0cmljdGVkIEFjY2VzczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUlRNUFNBbmRIVFRQUy5odG1sIj5SVE1QUyBhbmQgSFRUUFM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNvbnZlcnRlcnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiPk9wZW5PZmZpY2UgQ29udmVydGVyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiPkZGTVBFRyBWZXJzaW9uIFN3aXRjaDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q2x1c3RlcmluZzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NsdXN0ZXJpbmcuaHRtbCI+Q2x1c3RlcmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TWlzYzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0dldFZlcnNpb25JbmZvLmh0bWwiPkdldCB2ZXJzaW9uIGluZm88L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAorICAgIDwvZGl2PgorICAgICAKKyAgICA8YnIvPgorICAgIAorICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJJbnRyb2R1Y3Rpb24iPjxzdHJvbmc+SW50cm9kdWN0aW9uPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJSW4gMjAxMCwNCisJCQkJPGEgcmVsPSJub2ZvbGxvdyIgaHJlZj0iaHR0cDovL3d3dy5zYW1vby5lcyIgdGFyZ2V0PSJfYmxhbmsiPlNhbW9vIGNvbXBhbnkNCisJCQkJPC9hPg0KKwkJCQloYXMgZGV2ZWxvcGVkIGEgcGx1Z2luIHRoYXQgaW50ZWdyYXRlcyBTYWthaSBMTVMgYW5kIE9wZW5NZWV0aW5ncw0KKwkJCQkuDQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQorCQkJCVRoZSBwbHVnaW4gd2FzIGRldmVsb3BlZCBmb3Igc29tZSBTcGFuaXNoIFVuaXZlcnNpdGllcyB0aGF0IHVzZQ0KKwkJCQlTYWthaSBhbmQgYmVsb25ncyB0bw0KKwkJCQk8YSByZWw9Im5vZm9sbG93IiB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cHM6Ly9jb25mbHVlbmNlLnNha2FpcHJvamVjdC5vcmcvZGlzcGxheS9TUEFOSVNIL1MyRystK1NwYW5pc2grU2FrYWkrR3JvdXAiPiJTcGFuaXNoIFNha2FpIFVuaXZlcnNpdGllcyI8L2E+DQorCQkJCWdyb3VwOg0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4NCisJCQkJPGxpPg0KKwkJCQkJPGEgcmVsPSJub2ZvbGxvdyIgaHJlZj0iaHR0cDovL3d3dy51ZGwuZXMvIiB0YXJnZXQ9Il9ibGFuayI+VW5pdmVyc2l0YXQgZGUgTGxlaWRhIDwvYT4NCisJCQkJPC9saT4NCisJCQkJPGxpPg0KKwkJCQkJPGEgcmVsPSJub2ZvbGxvdyIgaHJlZj0iaHR0cDovL3d3dy51cHYuZXMvIiB0YXJnZXQ9Il9ibGFuayI+VW5pdmVyc2lkYWQgUG9saXTDqWNuaWNhIGRlIFZhbGVuY2lhIDwvYT4NCisJCQkJPC9saT4NCisJCQkJPGxpPg0KKwkJCQkJPGEgcmVsPSJub2ZvbGxvdyIgaHJlZj0iaHR0cDovL3d3dy51bS5lcy8iIHRhcmdldD0iX2JsYW5rIj5Vbml2ZXJzaWRhZCBkZSBNdXJjaWE8L2E+DQorCQkJCTwvbGk+DQorCQkJCTxsaT4NCisJCQkJCTxhIHJlbD0ibm9mb2xsb3ciIGhyZWY9Imh0dHA6Ly93d3cudW5hdmFycmEuZXMvIiB0YXJnZXQ9Il9ibGFuayI+VW5pdmVyc2lkYWQgUMO6YmxpY2EgZGUgTmF2YXJyYTwvYT4NCisJCQkJPC9saT4NCisJCQkJPGxpPg0KKwkJCQkJPGEgcmVsPSJub2ZvbGxvdyIgaHJlZj0iaHR0cDovL3d3dy51Y2FtLmVkdS8iIHRhcmdldD0iX2JsYW5rIj5Vbml2ZXJzaWRhZCBDYXTDs2xpY2EgU2FuIEFudG9uaW8gZGUgTXVyY2lhDQorCQkJCQk8L2E+DQorCQkJCTwvbGk+DQorCQkJPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkID48IS0tIGJnY29sb3I9IiNFRUVFRUUiIC0tPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0idmVyZGFuYSxhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IkZlYXR1cmVzIj48c3Ryb25nPkZlYXR1cmVzPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5UaGUgcGx1Z2luIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgZmVhdHVyZXM6IDwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4NCisJCQkJPGxpPkNyZWF0ZSB2aWRlb2NvbmZlcmVuY2Ugcm9vbXMgdGhyb3VnaCBTYWthaTogPC9saT4NCisJCQkJPGxpPg0KKwkJCQkJPG9sPg0KKwkJCQkJCTxsaT5JbnRlZ3JhdGVkIHdpdGggY2FsZW5kYXIgPC9saT4NCisJCQkJCQk8bGk+SW50ZWdyYXRlZCB3aXRoIGFubm91bmNlbWVudHMgPC9saT4NCisJCQkJCQk8bGk+U2VuZHMgYW4gZW1haWwgdG8gYWxsIHNpdGUgcGFydGljaXBhbnRzIDwvbGk+DQorCQkJCQkJPGxpPlJvb21zIHJlc3RyaWN0ZWQgdG8gc2l0ZSBncm91cHMgPC9saT4NCisJCQkJCQk8bGk+Q29uZmlndXJhYmxlIHJvb20gdHlwZSA8L2xpPg0KKwkJCQkJPC9vbD4NCisJCQkJPC9saT4NCisJCQk8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHAgLz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4NCisJCQkJPGxpPkZ1dHVyZSByZXF1aXJlbWVudHMgPC9saT4NCisJCQkJPGxpPg0KKwkJCQkJPG9sPg0KKwkJCQkJCTxsaT5QdWJsaXNoIHJvb20gcmVjb3JkaW5ncyB0byBzdHVkZW50cyA8L2xpPg0KKwkJCQkJCTxsaT5Sb29tIHJlc2VydmF0aW9uIDwvbGk+DQorCQkJCQk8L29sPg0KKwkJCQk8L2xpPg0KKwkJCTwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJTb3VyY2UiPjxzdHJvbmc+U291cmNlPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJWW91IGNhbiBkb3dubG9hZCBhbmQgYnVpbGQgdGhlIHNvdXJjZSBjb2RlDQorCQkJCTxhIHJlbD0ibm9mb2xsb3ciIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwczovL3NvdXJjZS5zYWthaXByb2plY3Qub3JnL2NvbnRyaWIvc2Ftb28vYWRvYmVjb25uZWN0cHJvLW9wZW5tZWV0aW5ncy1pbnRlZ3JhdGlvbi90cnVuay8iPmhlcmU8L2E+DQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iSW5zdGFsbGF0aW9uIGFuZCBkb2N1bWVudGF0aW9uIj48c3Ryb25nPkluc3RhbGxhdGlvbiBhbmQgZG9jdW1lbnRhdGlvbjwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgICA8aHIgc3R5bGU9IndpZHRoOjEwMCU7IGNvbG9yOiM5OTk5OTk7IGJhY2tncm91bmQtY29sb3I6Izk5OTk5OTsgaGVpZ2h0OjFweDsgYm9yZGVyOjBweDsiLz4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQorCQkJCVRoZSBkb2N1bWVudGF0aW9uIHJlc2lkZXMgaW4gdGhlDQorCQkJCTxhIHJlbD0ibm9mb2xsb3ciIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwczovL2NvbmZsdWVuY2Uuc2FrYWlwcm9qZWN0Lm9yZy9kaXNwbGF5L09QRU5NVEcvSG9tZSI+U2FrYWkgY29uZmx1ZW5jZSBzcGFjZTwvYT4NCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJUGxlYXNlIGNvbnRhY3QgdGhlIG1haWxpbmcgbGlzdCBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi4gRm9yDQorCQkJCWNvbW1lcmNpYWwgc3VwcG9ydCB5b3UgY2FuIGFsc28gY29udGFjdA0KKwkJCQk8YSByZWw9Im5vZm9sbG93IiBocmVmPSJodHRwOi8vd3d3LnNhbW9vLmVzIiB0YXJnZXQ9Il9ibGFuayI+U2Ftb28gY29tcGFueTwvYT4NCisJCQkJb3Igb3RoZXIgY29tcGFuaWVzIGZyb20gdGhlIGxpc3Qgb2YNCisJCQkJPGEgaHJlZj0iY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiPmNvbW1lcmNpYWwgc3VwcG9ydDwvYT4NCisJCQkJLg0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPCEtLSBGT09URVIgLS0+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGhyIG5vc2hhZGU9Im5vc2hhZGUiIHNpemU9IjEiLz4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBhbGlnbj0iY2VudGVyIj48Zm9udCBjb2xvcj0iIzEyMzQ2NSIgc2l6ZT0iLTEiPjxlbT4KKyAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0ICYjMTY5OyAyMDAzLTIwMTMsIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorICAgICAgICAgICAgICAgICAgICA8L2VtPjwvZm9udD48L2Rpdj4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9ib2R5PgorICAgIDwvaHRtbD4KKzwhLS0gZW5kIHRoZSBwcm9jZXNzaW5nIC0tPgorCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCmRpZmYgLS1naXQgYS9kb2NzL1NlcnZlclNlcnZpY2UuaHRtbCBiL2RvY3MvU2VydmVyU2VydmljZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2ZGJiOTMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL1NlcnZlclNlcnZpY2UuaHRtbApAQCAtMCwwICsxLDM3NCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+DQorPCEtLQ0KK0NvcHlyaWdodCAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uDQorTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQoreW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKw0KK2h0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKw0KK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCitkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCitsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCistLT4NCisNCisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPg0KKyAgICA8IS0tIEdFTkVSQVRFRCBGSUxFLCBETyBOT1QgRURJVCwgRURJVCBUSEUgVEVNUExBVEUgSU5TVEVBRCEgLS0+DQorICAgIDwhLS0gTWFpbiBQYWdlIFNlY3Rpb24gLS0+DQorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4NCisgICAgDQorICAgICA8aHRtbD4NCisgICAgICAgIDxoZWFkPg0KKwkJPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSIvPg0KKwkJPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSJPcGVuTWVldGluZ3MgVGVhbSI+DQorCQk8bWV0YSBuYW1lPSJlbWFpbCIgY29udGVudD0ic2ViYXdhZ25lckBhcGFjaGUub3JnIj4NCisJCTx0aXRsZT5PcGVuTWVldGluZ3MgQVBJIE1ldGhvZHM8L3RpdGxlPg0KKwkJPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0ib3Blbm1lZXRpbmdzX2RvY3MuY3NzIj4NCisgICAgICAgIDwvaGVhZD4NCisJPGJvZHk+DQorCQ0KKwkJPGgzPkF2YWlsYWJsZSBXZWJTZXJ2aWNlczo8L2gzPg0KKwkNCisJCTxpZnJhbWUgc3JjPSJXZWJzZXJ2aWNlSW5kZXguaHRtbCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMjEwIiBuYW1lPSJXZWJzZXJ2aWNlSW5kZXguaHRtbCINCisJCQlzY3JvbGxpbmc9Im5vIiBtYXJnaW5oZWlnaHQ9IjAiIG1hcmdpbndpZHRoPSIwIiBmcmFtZWJvcmRlcj0iMCI+DQorCQkgIDxwPllvdXIgQnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IGZyYW1lcyAuLi48L3A+DQorCQk8L2lmcmFtZT4NCisJCQ0KKwkJPGhyIC8+DQorCQ0KKwkgICA8aDM+V2ViU2VydmljZTogU2VydmVyU2VydmljZTwvaDM+DQorCSAgIDxwPlRoaXMgY2xhc3MgcHJvdmlkZXMgbWV0aG9kIGltcGxlbWVudGF0aW9ucyBuZWNlc3NhcnkgZm9yIE9NIHRvIG1hbmFnZSBzZXJ2ZXJzCisgcGFydGljaXBhdGluZyBpbiBjbHVzdGVyLjxwPg0KKwkgICA8cD5XU0RMIHNhbXBsZSBVcmw6IDxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvU2VydmVyU2VydmljZT93c2RsIj5odHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1NlcnZlclNlcnZpY2U/d3NkbDwvYT48cD4NCisJDQorCTwhLS0gTGlua3MgdG8gTWV0aG9kcyAtLT4NCisJICAgPGgzPkluZGV4IG9mIE1ldGhvZHMgYXZhaWxhYmxlIGluIFNlcnZlclNlcnZpY2U8L2gzPg0KKwkgICANCisgICAgICAgPGRpdiBjbGFzcz0ibmF2aWdhdGlvbiI+DQorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ2V0U2VydmVycyI+PGI+Z2V0U2VydmVyczwvYj48L2E+PGJyLz4NCisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2aWdhdGlvbl9jb21tZW50Ij48aSA+TWV0aG9kIHRvIHJldHJpZXZlIHRoZSBsaXN0IG9mIHRoZSBzZXJ2ZXJzIHBhcnRpY2lwYXRpbmcgaW4gY2x1c3RlcjwvaT48L2Rpdj4NCisgICAgICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ2V0U2VydmVyQ291bnQiPjxiPmdldFNlcnZlckNvdW50PC9iPjwvYT48YnIvPg0KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uX2NvbW1lbnQiPjxpID5NZXRob2QgdG8gcmV0cmlldmUgdGhlIHRvdGFsIGNvdW50IG9mIHRoZSBzZXJ2ZXJzIHBhcnRpY2lwYXRpbmcgaW4KKyBjbHVzdGVyPC9pPjwvZGl2Pg0KKyAgICAgICAgICAgICAgICA8L2Rpdj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNzYXZlU2VydmVyIj48Yj5zYXZlU2VydmVyPC9iPjwvYT48YnIvPg0KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uX2NvbW1lbnQiPjxpID5NZXRob2QgdG8gYWRkL3VwZGF0ZSBzZXJ2ZXI8L2k+PC9kaXY+DQorICAgICAgICAgICAgICAgIDwvZGl2Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2RlbGV0ZVNlcnZlciI+PGI+ZGVsZXRlU2VydmVyPC9iPjwvYT48YnIvPg0KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uX2NvbW1lbnQiPjxpID5NZXRob2QgdG8gZGVsZXRlIHNlcnZlcjwvaT48L2Rpdj4NCisgICAgICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQorCSAgIA0KKwkgICAgPGgzPk1ldGhvZHMgRGV0YWlscyBpbiBTZXJ2ZXJTZXJ2aWNlPC9oMz4NCisJDQorCQkJCSAgICAJCSAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZCI+DQorCQkgICAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZF9oZWFkZXIiPg0KKwkJICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDoxMHB4Ij4NCisgICAgCQkJPGEgbmFtZT0iZ2V0U2VydmVycyIgPjxiPmdldFNlcnZlcnM8L2I+PC9hPg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCQ0KKyAgICAJCQlNZXRob2Q6IDxpPmdldFNlcnZlcnMgKA0KKyAgICAJCQkgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgU0lEDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIGludCBzdGFydA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBpbnQgbWF4DQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJKQ0KKyAgICAJCQk8L2k+PGJyLz4NCisgICAgCQkJPHA+DQorICAgIAkJCSAgTWV0aG9kIHRvIHJldHJpZXZlIHRoZSBsaXN0IG9mIHRoZSBzZXJ2ZXJzIHBhcnRpY2lwYXRpbmcgaW4gY2x1c3Rlcg0KKyAgICAJCQk8L3A+DQorICAgIAkJCTxwPg0KKyAgICAgICAgICAgICAgICAgIFJldHVybiBUeXBlOiBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5TZXJ2ZXJbXQ0KKyAgICAgICAgICAgICAgICA8L3A+DQorICAgIAkJCTxwPlBhcmFtczo8L3A+DQorICAgIAkJCSAgICAJCQkNCisgICAgCQkJCSAgICAJCQk8dGFibGUgcnVsZXM9ImFsbCIgYm9yZGVyPSIxIj4NCisJICAgIAkJCSAgIDx0aGVhZD4NCisJICAgIAkJCSAgIDx0cj4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5UeXBlPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5GaWVsZG5hbWU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjQwMCIgYWxpZ249ImxlZnQiPkRlc2NyaXB0aW9uPC90aD4NCisJICAgIAkJCSAgIDwvdHI+DQorCSAgICAJCQkgICA8L3RoZWFkPg0KKwkgICAgCQkJICAgPHRib2R5Pg0KKwkgICAgCQkJICAgCSAgICAJCQkgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+U0lEPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4tIHNlc3Npb24gaWQgdG8gaWRlbnRpZnkgdGhlIHVzZXIgbWFraW5nIHJlcXVlc3Q8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCWludA0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+c3RhcnQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPi0gc2VydmVyIGluZGV4IHRvIHN0YXJ0IHdpdGg8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCWludA0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+bWF4PC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4tIE1heGltdW0gc2VydmVyIGNvdW50PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KKwkgICAgCQkJPC90YWJsZT4NCisgICAgCQkJICAgIAkJCTxici8+DQorICAgIAkJCVJFU1QgU2FtcGxlIENhbGwvVVJMOjxici8+DQorICAgIAkJCSAgICAJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9TZXJ2ZXJTZXJ2aWNlL2dldFNlcnZlcnM/U0lEPVZBTFVFJnN0YXJ0PVZBTFVFJm1heD1WQUxVRSI+aHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9TZXJ2ZXJTZXJ2aWNlL2dldFNlcnZlcnM/U0lEPVZBTFVFJmFtcDtzdGFydD1WQUxVRSZhbXA7bWF4PVZBTFVFPC9hPg0KKyAgICAJCSAgPC9kaXY+DQorICAgIAkgICAJCQkJICAgIAkJICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kIj4NCisJCSAgICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kX2hlYWRlciI+DQorCQkgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjEwcHgiPg0KKyAgICAJCQk8YSBuYW1lPSJnZXRTZXJ2ZXJDb3VudCIgPjxiPmdldFNlcnZlckNvdW50PC9iPjwvYT4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQkNCisgICAgCQkJTWV0aG9kOiA8aT5nZXRTZXJ2ZXJDb3VudCAoDQorICAgIAkJCSAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBTSUQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkpDQorICAgIAkJCTwvaT48YnIvPg0KKyAgICAJCQk8cD4NCisgICAgCQkJICBNZXRob2QgdG8gcmV0cmlldmUgdGhlIHRvdGFsIGNvdW50IG9mIHRoZSBzZXJ2ZXJzIHBhcnRpY2lwYXRpbmcgaW4KKyBjbHVzdGVyDQorICAgIAkJCTwvcD4NCisgICAgCQkJPHA+DQorICAgICAgICAgICAgICAgICAgUmV0dXJuIFR5cGU6IGludA0KKyAgICAgICAgICAgICAgICA8L3A+DQorICAgIAkJCTxwPlBhcmFtczo8L3A+DQorICAgIAkJCSAgICAJCQkNCisgICAgCQkJCSAgICAJCQk8dGFibGUgcnVsZXM9ImFsbCIgYm9yZGVyPSIxIj4NCisJICAgIAkJCSAgIDx0aGVhZD4NCisJICAgIAkJCSAgIDx0cj4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5UeXBlPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5GaWVsZG5hbWU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjQwMCIgYWxpZ249ImxlZnQiPkRlc2NyaXB0aW9uPC90aD4NCisJICAgIAkJCSAgIDwvdHI+DQorCSAgICAJCQkgICA8L3RoZWFkPg0KKwkgICAgCQkJICAgPHRib2R5Pg0KKwkgICAgCQkJICAgCSAgICAJCQkgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+U0lEPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4tIHNlc3Npb24gaWQgdG8gaWRlbnRpZnkgdGhlIHVzZXIgbWFraW5nIHJlcXVlc3Q8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQorCSAgICAJCQk8L3RhYmxlPg0KKyAgICAJCQkgICAgCQkJPGJyLz4NCisgICAgCQkJUkVTVCBTYW1wbGUgQ2FsbC9VUkw6PGJyLz4NCisgICAgCQkJICAgIAkJCSAgICAJCQkJICAgIAkJCQkJCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvU2VydmVyU2VydmljZS9nZXRTZXJ2ZXJDb3VudD9TSUQ9VkFMVUUiPmh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvU2VydmVyU2VydmljZS9nZXRTZXJ2ZXJDb3VudD9TSUQ9VkFMVUU8L2E+DQorICAgIAkJICA8L2Rpdj4NCisgICAgCSAgIAkJCQkgICAgCQkgICAgICA8ZGl2IGNsYXNzPSJtZXRob2QiPg0KKwkJICAgICAgICA8ZGl2IGNsYXNzPSJtZXRob2RfaGVhZGVyIj4NCisJCSAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTBweCI+DQorICAgIAkJCTxhIG5hbWU9InNhdmVTZXJ2ZXIiID48Yj5zYXZlU2VydmVyPC9iPjwvYT4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQkNCisgICAgCQkJTWV0aG9kOiA8aT5zYXZlU2VydmVyICgNCisgICAgCQkJICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIFNJRA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBsb25nIGlkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBuYW1lDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBhZGRyZXNzDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIGludCBwb3J0DQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyB1c2VyDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBwYXNzDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyB3ZWJhcHANCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIHByb3RvY29sDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIEJvb2xlYW4gYWN0aXZlDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBjb21tZW50DQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJKQ0KKyAgICAJCQk8L2k+PGJyLz4NCisgICAgCQkJPHA+DQorICAgIAkJCSAgTWV0aG9kIHRvIGFkZC91cGRhdGUgc2VydmVyDQorICAgIAkJCTwvcD4NCisgICAgCQkJPHA+DQorICAgICAgICAgICAgICAgICAgUmV0dXJuIFR5cGU6IGxvbmcNCisgICAgICAgICAgICAgICAgPC9wPg0KKyAgICAJCQk8cD5QYXJhbXM6PC9wPg0KKyAgICAJCQkgICAgCQkJDQorICAgIAkJCQkgICAgCQkJPHRhYmxlIHJ1bGVzPSJhbGwiIGJvcmRlcj0iMSI+DQorCSAgICAJCQkgICA8dGhlYWQ+DQorCSAgICAJCQkgICA8dHI+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+VHlwZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+RmllbGRuYW1lPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSI0MDAiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvdGg+DQorCSAgICAJCQkgICA8L3RyPg0KKwkgICAgCQkJICAgPC90aGVhZD4NCisJICAgIAkJCSAgIDx0Ym9keT4NCisJICAgIAkJCSAgIAkgICAgCQkJICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlNJRDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+LSBzZXNzaW9uIGlkIHRvIGlkZW50aWZ5IHRoZSB1c2VyIG1ha2luZyByZXF1ZXN0PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlsb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5pZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+LSB0aGUgaWQgb2YgdGhlIHNlcnZlciB0byBzYXZlPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPm5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPi0gdGhlIG5hbWUgb2YgdGhlIHNlcnZlciB0byBzYXZlPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFkZHJlc3M8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPi0gdGhlIGFkZHJlc3MoRE5TIG5hbWUgb3IgSVApIG9mIHRoZSBzZXJ2ZXIgdG8gc2F2ZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJaW50DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5wb3J0PC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4tIHRoZSBodHRwIHBvcnQgb2YgdGhlIHNsYXZlPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnVzZXI8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPi0gUkVTVCB1c2VyIHRvIGFjY2VzcyB0aGUgc2xhdmU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+cGFzczwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+LSBSRVNUIHBhc3MgdG8gYWNjZXNzIHRoZSBzbGF2ZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj53ZWJhcHA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPi0gd2ViYXBwIG5hbWUgb2YgdGhlIE9wZW5NZWV0aW5ncyBpbnN0YW5jZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5wcm90b2NvbDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+LSBwcm90b2NvbCB0byBhY2Nlc3MgdGhlIE9wZW5NZWV0aW5ncyBpbnN0YW5jZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJQm9vbGVhbg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+YWN0aXZlPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4tIGlmIHRoZSBzZXJ2ZXIgY3VycmVudGx5IHBhcnRpY2lwYXRlcyBpbiB0aGUgY2x1c3RlciBvciBub3Q8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+Y29tbWVudDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+LSBjb21tZW50IGZvciB0aGUgc2VydmVyPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KKwkgICAgCQkJPC90YWJsZT4NCisgICAgCQkJICAgIAkJCTxici8+DQorICAgIAkJCVJFU1QgU2FtcGxlIENhbGwvVVJMOjxici8+DQorICAgIAkJCSAgICAJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvU2VydmVyU2VydmljZS9zYXZlU2VydmVyP1NJRD1WQUxVRSZpZD1WQUxVRSZuYW1lPVZBTFVFJmFkZHJlc3M9VkFMVUUmcG9ydD1WQUxVRSZ1c2VyPVZBTFVFJnBhc3M9VkFMVUUmd2ViYXBwPVZBTFVFJnByb3RvY29sPVZBTFVFJmFjdGl2ZT1WQUxVRSZjb21tZW50PVZBTFVFIj5odHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1NlcnZlclNlcnZpY2Uvc2F2ZVNlcnZlcj9TSUQ9VkFMVUUmYW1wO2lkPVZBTFVFJmFtcDtuYW1lPVZBTFVFJmFtcDthZGRyZXNzPVZBTFVFJmFtcDtwb3J0PVZBTFVFJmFtcDt1c2VyPVZBTFVFJmFtcDtwYXNzPVZBTFVFJmFtcDt3ZWJhcHA9VkFMVUUmYW1wO3Byb3RvY29sPVZBTFVFJmFtcDthY3RpdmU9VkFMVUUmYW1wO2NvbW1lbnQ9VkFMVUU8L2E+DQorICAgIAkJICA8L2Rpdj4NCisgICAgCSAgIAkJCQkgICAgCQkgICAgICA8ZGl2IGNsYXNzPSJtZXRob2QiPg0KKwkJICAgICAgICA8ZGl2IGNsYXNzPSJtZXRob2RfaGVhZGVyIj4NCisJCSAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTBweCI+DQorICAgIAkJCTxhIG5hbWU9ImRlbGV0ZVNlcnZlciIgPjxiPmRlbGV0ZVNlcnZlcjwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+ZGVsZXRlU2VydmVyICgNCisgICAgCQkJICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIFNJRA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBsb25nIGlkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJKQ0KKyAgICAJCQk8L2k+PGJyLz4NCisgICAgCQkJPHA+DQorICAgIAkJCSAgTWV0aG9kIHRvIGRlbGV0ZSBzZXJ2ZXINCisgICAgCQkJPC9wPg0KKyAgICAJCQk8cD4NCisgICAgICAgICAgICAgICAgICBSZXR1cm4gVHlwZTogYm9vbGVhbg0KKyAgICAgICAgICAgICAgICA8L3A+DQorICAgIAkJCTxwPlBhcmFtczo8L3A+DQorICAgIAkJCSAgICAJCQkNCisgICAgCQkJCSAgICAJCQk8dGFibGUgcnVsZXM9ImFsbCIgYm9yZGVyPSIxIj4NCisJICAgIAkJCSAgIDx0aGVhZD4NCisJICAgIAkJCSAgIDx0cj4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5UeXBlPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5GaWVsZG5hbWU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjQwMCIgYWxpZ249ImxlZnQiPkRlc2NyaXB0aW9uPC90aD4NCisJICAgIAkJCSAgIDwvdHI+DQorCSAgICAJCQkgICA8L3RoZWFkPg0KKwkgICAgCQkJICAgPHRib2R5Pg0KKwkgICAgCQkJICAgCSAgICAJCQkgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+U0lEPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4tIHNlc3Npb24gaWQgdG8gaWRlbnRpZnkgdGhlIHVzZXIgbWFraW5nIHJlcXVlc3Q8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCWxvbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4tIHRoZSBpZCBvZiB0aGUgc2VydmVyIHRvIGRlbGV0ZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCisJICAgIAkJCTwvdGFibGU+DQorICAgIAkJCSAgICAJCQk8YnIvPg0KKyAgICAJCQlSRVNUIFNhbXBsZSBDYWxsL1VSTDo8YnIvPg0KKyAgICAJCQkgICAgCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1NlcnZlclNlcnZpY2UvZGVsZXRlU2VydmVyP1NJRD1WQUxVRSZpZD1WQUxVRSI+aHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9TZXJ2ZXJTZXJ2aWNlL2RlbGV0ZVNlcnZlcj9TSUQ9VkFMVUUmYW1wO2lkPVZBTFVFPC9hPg0KKyAgICAJCSAgPC9kaXY+DQorICAgIAkgICAJCQkNCisJDQorCTwvYm9keT4NCis8L2h0bWw+DQorDQpkaWZmIC0tZ2l0IGEvZG9jcy9Tb2FwUmVzdEFQSS5odG1sIGIvZG9jcy9Tb2FwUmVzdEFQSS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1OGFlNmUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL1NvYXBSZXN0QVBJLmh0bWwKQEAgLTAsMCArMSw3NjYgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgorCis8IS0tCitDb3B5cmlnaHQgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKworPCEtLSBDb250ZW50IFN0eWxlc2hlZXQgZm9yIFNpdGUgLS0+CisKKyAgICAgICAgCis8IS0tIHN0YXJ0IHRoZSBwcm9jZXNzaW5nIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8IS0tIEdFTkVSQVRFRCBGSUxFLCBETyBOT1QgRURJVCwgRURJVCBUSEUgWE1MIEZJTEUgSU4geGRvY3MgSU5TVEVBRCEgLS0+CisgICAgPCEtLSBNYWluIFBhZ2UgU2VjdGlvbiAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGh0bWw+CisgICAgICAgIDxoZWFkPgorICAgICAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiLz4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iCisJCQlTZWJhc3RpYW4gV2FnbmVyCisJCSI+CisgICAgICAgICAgICA8bWV0YSBuYW1lPSJlbWFpbCIgY29udGVudD0ic2ViYXdhZ25lckBhcGFjaGUub3JnIj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICA8dGl0bGU+QXBhY2hlIE9wZW5NZWV0aW5ncyAtIEhvbWU8L3RpdGxlPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL29wZW5tZWV0aW5ncy5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2pxdWVyeS11aS5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2NvaW4tc2xpZGVyLXN0eWxlcy5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2NvbG9yYm94LmNzcyIgLz4KKyAgICAgICAgICAgIAorCQkJPCEtLSBBZGQgalF1ZXJ5IGxpYnJhcnkgLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9qcXVlcnktMS43LjEubWluLmpzIj48L3NjcmlwdD4KKwkJCisJCQk8IS0tIEFkZCBjb2luc2xpZGVyIHBsdWdpbnMgLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9jb2luLXNsaWRlci5taW4uanMiPjwvc2NyaXB0PgorCQkJCisJCQk8IS0tIEFkZCBjb2xvcmJveCBwbHVnaW4gLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9qcXVlcnkuY29sb3Jib3guanMiPjwvc2NyaXB0PgorCQkKKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkuY29yZS5qcyI+PC9zY3JpcHQ+CisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLndpZGdldC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5hY2NvcmRpb24uanMiPjwvc2NyaXB0PgorCQkJCisJCQk8c2NyaXB0PgorCQkJJChmdW5jdGlvbigpIHsKKwkJCQkkKCAiI2FjY29yZGlvbiIgKS5hY2NvcmRpb24oeworCQkJCQlhdXRvSGVpZ2h0OiBmYWxzZSwKKwkJCQkJbmF2aWdhdGlvbjogdHJ1ZSwKKwkJCQkJbmF2aWdhdGlvbkZpbHRlcjogZnVuY3Rpb24gKCkgeworCQkJCQkJdmFyIHNpZGViYXJIcmVmQXJyYXkgPSB0aGlzLmhyZWYuc3BsaXQoIi8iKTsKKyAgICAJCQkJCXZhciBzaWRlQmFyTGFzdFN0cmluZyA9IHNpZGViYXJIcmVmQXJyYXlbc2lkZWJhckhyZWZBcnJheS5sZW5ndGggLSAxXS50b0xvd2VyQ2FzZSgpOworCQkJCQkJCisJCQkJCQlpZiAoc2lkZUJhckxhc3RTdHJpbmcuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJCQkJcmV0dXJuIGZhbHNlOworCQkJCQkJfQorCQkJCQkJCisJCQkJCQkJCQkJCQkvKiBkb2N1bWVudC5sb2NhdGlvbi5ocmVmICovCisJCQkJCQl2YXIgY3VycmVudFNlY3Rpb24gPSAiIjsKKwkJCQkJCQorCQkJCQkJdmFyIGN1cnJlbnRMb2NhdGlvbiA9ICIiOworCQkJCQkJdmFyIGN1cnJlbnRMaW5rID0gIiI7CisJCQkJCQlpZiAoZmFsc2UpIHsKKwkJCQkJCQorCQkJCQkJfQorICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9pbmRleC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9pbmRleC5odG1sIi5zdWJzdHIoMSwgIi9pbmRleC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2xpY2Vuc2UuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbGljZW5zZS5odG1sIi5zdWJzdHIoMSwgIi9saWNlbnNlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iLnN1YnN0cigxLCAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kb3dubG9hZHMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZG93bmxvYWRzLmh0bWwiLnN1YnN0cigxLCAiL2Rvd25sb2Fkcy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIuc3Vic3RyKDEsICIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luc3RhbGxhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9pbnN0YWxsYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvaW5zdGFsbGF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVXBncmFkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9VcGdyYWRlLmh0bWwiLnN1YnN0cigxLCAiL1VwZ3JhZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIi5zdWJzdHIoMSwgImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29tbWFuZExpbmVBZG1pbi5odG1sIi5zdWJzdHIoMSwgIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2dldC1pbnZvbHZlZC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2dldC1pbnZvbHZlZC5odG1sIi5zdWJzdHIoMSwgIi9nZXQtaW52b2x2ZWQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi90ZWFtLWxpc3QuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi90ZWFtLWxpc3QuaHRtbCIuc3Vic3RyKDEsICIvdGVhbS1saXN0Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbWFpbC1saXN0cy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL21haWwtbGlzdHMuaHRtbCIuc3Vic3RyKDEsICIvbWFpbC1saXN0cy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIuc3Vic3RyKDEsICJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvc3ZuLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9zdm4uaHRtbCIuc3Vic3RyKDEsICIvc3ZuLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIi5zdWJzdHIoMSwgImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZGVwZW5kZW5jaWVzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kZXBlbmRlbmNpZXMuaHRtbCIuc3Vic3RyKDEsICIvZGVwZW5kZW5jaWVzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiLnN1YnN0cigxLCAiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSlVuaXRUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9KVW5pdFRlc3RpbmcuaHRtbCIuc3Vic3RyKDEsICIvSlVuaXRUZXN0aW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTWFudWFsVGVzdGluZy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTWFudWFsVGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9NYW51YWxUZXN0aW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVsZWFzZUd1aWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZWxlYXNlR3VpZGUuaHRtbCIuc3Vic3RyKDEsICIvUmVsZWFzZUd1aWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2Vic2l0ZUd1aWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9XZWJzaXRlR3VpZGUuaHRtbCIuc3Vic3RyKDEsICIvV2Vic2l0ZUd1aWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1NvYXBSZXN0QVBJLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Tb2FwUmVzdEFQSS5odG1sIi5zdWJzdHIoMSwgIi9Tb2FwUmVzdEFQSS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RBUElTYW1wbGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1Jlc3RBUElTYW1wbGUuaHRtbCIuc3Vic3RyKDEsICIvUmVzdEFQSVNhbXBsZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0xkYXBBbmRBRFMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0xkYXBBbmRBRFMuaHRtbCIuc3Vic3RyKDEsICIvTGRhcEFuZEFEUy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0Vycm9yc1RhYmxlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9FcnJvcnNUYWJsZS5odG1sIi5zdWJzdHIoMSwgIi9FcnJvcnNUYWJsZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Nb29kbGVQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTW9vZGxlUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL01vb2RsZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Nha2FpUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1Nha2FpUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1Nha2FpUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSmlyYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9KaXJhUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0ppcmFQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Kb29tbGFQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSm9vbWxhUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0pvb21sYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0RydXBhbFBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9EcnVwYWxQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvRHJ1cGFsUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQml0cml4UGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0JpdHJpeFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9CaXRyaXhQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVkbWluZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZWRtaW5lUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1JlZG1pbmVQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9JQk1EQjJDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JQk1EQjJDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvSUJNREIyQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9PcmFjbGVDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9PcmFjbGVDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvT3JhY2xlQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NeVNRTENvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL015U1FMQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL015U1FMQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1Bvc3RncmVzQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL1Bvc3RncmVzQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0xhbmd1YWdlRWRpdG9yLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIuc3Vic3RyKDEsICIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiLnN1YnN0cigxLCAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0VkaXRUZW1wbGF0ZXMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9FZGl0VGVtcGxhdGVzLmh0bWwiLnN1YnN0cigxLCAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUG9ydFNldHRpbmdzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9ydFNldHRpbmdzLmh0bWwiLnN1YnN0cigxLCAiL1BvcnRTZXR0aW5ncy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiLnN1YnN0cigxLCAiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiLnN1YnN0cigxLCAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0Rhc2hib2FyZC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0Rhc2hib2FyZC5odG1sIi5zdWJzdHIoMSwgIi9EYXNoYm9hcmQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0hvdEtleXMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Ib3RLZXlzLmh0bWwiLnN1YnN0cigxLCAiL0hvdEtleXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViYXBwTmFtZVBhdGguaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJhcHBOYW1lUGF0aC5odG1sIi5zdWJzdHIoMSwgIi9XZWJhcHBOYW1lUGF0aC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTmF2aWdhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL05hdmlnYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvTmF2aWdhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIuc3Vic3RyKDEsICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIuc3Vic3RyKDEsICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIi5zdWJzdHIoMSwgIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SVE1QU0FuZEhUVFBTLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUlRNUFNBbmRIVFRQUy5odG1sIi5zdWJzdHIoMSwgIi9SVE1QU0FuZEhUVFBTLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiLnN1YnN0cigxLCAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiLnN1YnN0cigxLCAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ2x1c3RlcmluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NsdXN0ZXJpbmcuaHRtbCIuc3Vic3RyKDEsICIvQ2x1c3RlcmluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZXRWZXJzaW9uSW5mby5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dldFZlcnNpb25JbmZvLmh0bWwiLnN1YnN0cigxLCAiL0dldFZlcnNpb25JbmZvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCSAgICAJCQkJCQorICAgIAkJCQkJY3VycmVudExpbmsgPSBjdXJyZW50TGluay50b0xvd2VyQ2FzZSgpOworICAgIAkJCQkJY3VycmVudExvY2F0aW9uID0gY3VycmVudExvY2F0aW9uLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQkKKwkJCQkJCXJldHVybiBzaWRlQmFyTGFzdFN0cmluZyA9PSBjdXJyZW50TGluaysiIyIrY3VycmVudExvY2F0aW9uOworCQkJCQl9CisJCQkJfSk7CisJCQl9KTsKKwkJCTwvc2NyaXB0PgorCQkJCisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisJCQkJJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CisJCQkJCSQoJy5mYW5jeWJveC1idXR0b25zJykuY29sb3Jib3goe3JlbDonZmFuY3lib3gtYnV0dG9ucycsd2lkdGg6Ijc1JSIsIGhlaWdodDoiNzUlIn0pOworCQkJCQkkKCcjYWNjb3JkaW9uIGEnKS5lYWNoKGZ1bmN0aW9uKCkgeworCQkJCSAgICAgIHZhciBhID0gJCh0aGlzKTsKKwkJCQkgICAgICB2YXIgaHJlZiA9IGEuYXR0cigiaHJlZiIpOworCQkJCSAgICAgIGlmIChocmVmLmluZGV4T2YoIiMiKSA9PSAtMSkgeworCQkJCSAgICAgIAkgIHZhciBjb21wYXJlSXQgPSBocmVmLnN1YnN0cigyLCBocmVmLmxlbmd0aCk7CisJCQkJCSAgICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoY29tcGFyZUl0KSE9IC0xKSB7CisJCQkJCSAgICAgICBhLmFkZENsYXNzKCdhY3RpdmUnKTsKKwkJCQkJICAgICAgfQorCQkJCSAgICAgIH0KKwkJCQkgICAgfSk7CisJCQkJCSQoJyNjb2luLXNsaWRlcicpLmNvaW5zbGlkZXIoeyB3aWR0aDogNjQwLGhlaWdodDogNDAwLCBkZWxheTogNDAwMCAgfSk7CQkJCQkKKwkJCQl9KTsKKwkJCTwvc2NyaXB0PgkKKwkJCQkJCQorCQkJPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKwkJCQkuZmFuY3lib3gtY3VzdG9tIC5mYW5jeWJveC1vdXRlciB7CisJCQkJCWJveC1zaGFkb3c6IDAgMCA1MHB4ICMyMjI7CisJCQkJfQorCQkJPC9zdHlsZT4KKyAgICAgICAgPC9oZWFkPgorCisgICAgICAgIDxib2R5IGJnY29sb3I9IiNmZmZmZmYiIHRleHQ9IiMwMDAwMDAiIGxpbms9IiMxMjM0NjUiIHZsaW5rPSIjMTIzNDY1IiBhbGluaz0iIzAwMDAwMCI+ICAKKyAgICAgICAgCTxkaXYgY2xhc3M9Im1haW5ib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgCTxkaXYgY2xhc3M9InN1cGVyYm9keSIgc3R5bGU9IndpZHRoOiAxMDAlOyI+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiPgorICAgICAgICAgICAgICAgIDwhLS0gVE9QIElNQUdFIC0tPgorICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0Ij4KKzxhIGhyZWY9Imh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy8iPjxpbWcgc3JjPSIuL2ltYWdlcy9sb2dvLTIuanBnIiBhbHQ9IkFwYWNoZSBPcGVuTWVldGluZ3MiIGJvcmRlcj0iMCIvPjwvYT4KKzwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODAlIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIiA+CisJPGEgaHJlZj0iZGVtby5odG1sIj5EZW1vPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9ImRvd25sb2Fkcy5odG1sIiB0YXJnZXQ9Il9QQVJFTlQiPkRvd25sb2FkPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imluc3RhbGxhdGlvbi5odG1sIiB0YXJnZXQ9Il9QQVJFTlQiPkluc3RhbGxhdGlvbjwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUyIgdGFyZ2V0PSJfQkxBTksiPldpa2k8L2E+CisJPHNwYW4+Jm5ic3A7PC9zcGFuPgorPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iNCI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGhyIG5vc2hhZGU9Im5vc2hhZGUiIHNpemU9IjEiLz4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDwhLS0gTEVGVCBTSURFIE5BVklHQVRJT04gLS0+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCIgbm93cmFwPSJub3dyYXAiPgorCisgICAgICAgICAgICAgICAgICAgIDwhLS0gc3BlY2lhbCBBQ29uIExvZ28gLSBsZWF2ZSBoZXJlIGZvciBuZXh0IHRpbWUKKyAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL2FwYWNoZWNvbi5jb20vMjAwNS9VUy8iPgorICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHA6Ly9hcGFjaGUub3JnL2ltYWdlcy9hYzIwMDV1c19ibHVlXzEyNXgxMjUuanBnIiBoZWlnaHQ9IjEyNSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjEyNSIgYm9yZGVyPSIwIiBhbHQ9IkFwYWNoZUNvbiBVUyAyMDA1IiAvPgorICAgICAgICAgICAgICAgICAgICA8L2E+ICAtLT4KKworICAgICAgICAgICAgICAgICAgIDwhLS0gcmVndWxhciBtZW51IC0tPgorCisgICAgICAgICAgICAgICAgICAgIAorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDxkaXYgaWQ9ImFjY29yZGlvbiIgc3R5bGU9IndpZHRoOiAxMDAlIj4KKyAgICAKKyAgICAgICAgICAgIAk8aDM+PGEgaHJlZj0iI0dlbmVyYWwiPkdlbmVyYWw8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luZGV4Lmh0bWwiPkhvbWU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2xpY2Vuc2UuaHRtbCI+TGljZW5zZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iPkFTRjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZG93bmxvYWRzLmh0bWwiPkRvd25sb2FkczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiPkNvbW1lcmNpYWwgU3VwcG9ydDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI+SW5zdGFsbGF0aW9uIGFuZCBVcGdyYWRlPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9pbnN0YWxsYXRpb24uaHRtbCI+SW5zdGFsbGF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9VcGdyYWRlLmh0bWwiPlVwZ3JhZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiPlR1dG9yaWFsczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQ29tbWFuZExpbmVBZG1pbi5odG1sIj5Db21tYW5kIExpbmUgQWRtaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0NvbW11bml0eSI+Q29tbXVuaXR5PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9nZXQtaW52b2x2ZWQuaHRtbCI+R2V0IEludm9sdmVkPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi90ZWFtLWxpc3QuaHRtbCI+Q29tbWl0dGVyczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbWFpbC1saXN0cy5odG1sIj5NYWlsaW5nIExpc3RzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iPldpa2k8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0RldmVsb3BtZW50Ij5EZXZlbG9wbWVudDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vc3ZuLmh0bWwiPlNvdXJjZSBDb2RlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyI+QnVncyAvIElzc3VlcyAoSklSQSk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2RlcGVuZGVuY2llcy5odG1sIj5EZXBlbmRlbmNpZXM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiPkJ1aWxkIEluc3RydWN0aW9uczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSlVuaXRUZXN0aW5nLmh0bWwiPkpVbml0IFRlc3Rpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01hbnVhbFRlc3RpbmcuaHRtbCI+TWFudWFsIFRlc3Rpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1JlbGVhc2VHdWlkZS5odG1sIj5SZWxlYXNlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9XZWJzaXRlR3VpZGUuaHRtbCI+V2Vic2l0ZSBHdWlkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjSW50ZWdyYXRpb24iPkludGVncmF0aW9uPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Tb2FwUmVzdEFQSS5odG1sIj5TT0FQL1JFU1QgQVBJPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZXN0QVBJU2FtcGxlLmh0bWwiPlJFU1QgQVBJIFNhbXBsZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTGRhcEFuZEFEUy5odG1sIj5MZGFwIGFuZCBBRFM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiPlZvSVAgYW5kIFNJUDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vRXJyb3JzVGFibGUuaHRtbCI+RXJyb3JzIHRhYmxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNQbHVnaW5zIj5QbHVnaW5zPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Nb29kbGVQbHVnaW4uaHRtbCI+TW9vZGxlIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU2FrYWlQbHVnaW4uaHRtbCI+U2FrYWkgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KaXJhUGx1Z2luLmh0bWwiPkppcmEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Kb29tbGFQbHVnaW4uaHRtbCI+Sm9vbWxhIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vRHJ1cGFsUGx1Z2luLmh0bWwiPkRydXBhbCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0JpdHJpeFBsdWdpbi5odG1sIj5CaXRyaXggUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiPkNvbmZsdWVuY2UgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TdWdhckNSTVBsdWdpbi5odG1sIj5TdWdhckNSTSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1JlZG1pbmVQbHVnaW4uaHRtbCI+UmVkbWluZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0NvbmZpZ3VyYXRpb24iPkNvbmZpZ3VyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkRCIFNhbXBsZSBDb25maWd1cmF0aW9uczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiPkFwYWNoZSBEZXJieTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSUJNREIyQ29uZmlnLmh0bWwiPklCTSBEQjI8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL09yYWNsZUNvbmZpZy5odG1sIj5PcmFjbGU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL015U1FMQ29uZmlnLmh0bWwiPk15U1FMPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIj5Qb3N0Z3JlczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TG9jYWxpemF0aW9uIGFuZCBsYW5ndWFnZXM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIj5JbnRlcm5hdGlvbmFsaXNhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTGFuZ3VhZ2VFZGl0b3IuaHRtbCI+TGFuZ3VhZ2VFZGl0b3I8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1RpbWVab25lSGFuZGxpbmcuaHRtbCI+VGltZVpvbmVIYW5kbGluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRWRpdFRlbXBsYXRlcy5odG1sIj5FZGl0VGVtcGxhdGVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5OQVQgUG9ydCBTZXR0aW5nczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1BvcnRTZXR0aW5ncy5odG1sIj5Qb3J0IHNldHRpbmdzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5QZXJmb3JtYW5jZTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiPkpWTSBwZXJmb3JtYW5jZSB0dW5pbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlVzZXIgSW50ZXJmYWNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIj5UaGVtZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0Rhc2hib2FyZC5odG1sIj5EYXNoYm9hcmQ8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiPldlYmNhbSByZXNvbHV0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiPlJvb20gbGF5b3V0IG9wdGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0hvdEtleXMuaHRtbCI+SG90IEtleXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkN1c3RvbWl6YXRpb248L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9XZWJhcHBOYW1lUGF0aC5odG1sIj5XZWJhcHAgbmFtZS9wYXRoPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9OYXZpZ2F0aW9uLmh0bWwiPk5hdmlnYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCI+Q2FsZW5kYXIgYW5kIHRpbWV6b25lPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiPkN1c3RvbSByb29tIHR5cGU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiPkN1c3RvbSBjdHlwdCBtZWNoYW5pc208L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiPkdlbmVyYWwgQ29uZmlndXJhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+U2VjdXJpdHk8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiPlJlc3RyaWN0ZWQgQWNjZXNzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9SVE1QU0FuZEhUVFBTLmh0bWwiPlJUTVBTIGFuZCBIVFRQUzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q29udmVydGVyczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCI+T3Blbk9mZmljZSBDb252ZXJ0ZXI8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCI+RkZNUEVHIFZlcnNpb24gU3dpdGNoPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5DbHVzdGVyaW5nPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2x1c3RlcmluZy5odG1sIj5DbHVzdGVyaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5NaXNjPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2V0VmVyc2lvbkluZm8uaHRtbCI+R2V0IHZlcnNpb24gaW5mbzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCisgICAgPC9kaXY+CisgICAgIAorICAgIDxici8+CisgICAgCisgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODAlIiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkID48IS0tIGJnY29sb3I9IiNFRUVFRUUiIC0tPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0idmVyZGFuYSxhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IkF2YWlsYWJsZSBXZWJTZXJ2aWNlcyI+PHN0cm9uZz5BdmFpbGFibGUgV2ViU2VydmljZXM8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorCQkJCTxkaXY+DQorCQkJCQk8YSBocmVmPSJVc2VyU2VydmljZS5odG1sIiB0YXJnZXQ9Il9CTEFOSyI+DQorCQkJCQkJPGI+VXNlclNlcnZpY2U8L2I+DQorCQkJCQk8L2E+DQorCQkJCQk8YnIgLz4NCisJCQkJCTxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjIwcHgiPg0KKwkJCQkJCTxpPlRoZSBTZXJ2aWNlIGNvbnRhaW5zIG1ldGhvZHMgdG8gbG9naW4gYW5kIGNyZWF0ZSBoYXNoIHRvDQorCQkJCQkJCWRpcmVjdGx5IGVudGVyDQorCQkJCQkJCWNvbmZlcmVuY2Ugcm9vbXMsIHJlY29yZGluZ3Mgb3IgdGhlIGFwcGxpY2F0aW9uIGluDQorCQkJCQkJCWdlbmVyYWwNCisJCQkJCQk8L2k+DQorCQkJCQk8L2Rpdj4NCisJCQkJPC9kaXY+DQorCQkJCTxkaXY+DQorCQkJCQk8YSBocmVmPSJSb29tU2VydmljZS5odG1sIiB0YXJnZXQ9Il9CTEFOSyI+DQorCQkJCQkJPGI+Um9vbVNlcnZpY2U8L2I+DQorCQkJCQk8L2E+DQorCQkJCQk8YnIgLz4NCisJCQkJCTxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjIwcHgiPg0KKwkJCQkJCTxpPlJvb21TZXJ2aWNlIGNvbnRhaW5zIG1ldGhvZHMgdG8gbWFuaXB1bGF0ZSByb29tcyBhbmQgY3JlYXRlDQorCQkJCQkJCWludml0YXRpb24gaGFzaA0KKwkJCQkJCTwvaT4NCisJCQkJCTwvZGl2Pg0KKwkJCQk8L2Rpdj4NCisJCQkJPGRpdj4NCisJCQkJCTxhIGhyZWY9IkZpbGVTZXJ2aWNlLmh0bWwiIHRhcmdldD0iX0JMQU5LIj4NCisJCQkJCQk8Yj5GaWxlU2VydmljZTwvYj4NCisJCQkJCTwvYT4NCisJCQkJCTxiciAvPg0KKwkJCQkJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6MjBweCI+DQorCQkJCQkJPGk+Q29udGFpbnMgbWV0aG9kcyB0byBpbXBvcnQgYW5kIHVwbG9hZCBmaWxlcyBpbnRvIHRoZSBGaWxlcw0KKwkJCQkJCQlzZWN0aW9uIG9mIHRoZQ0KKwkJCQkJCQljb25mZXJlbmNlIHJvb20gYW5kIHRoZSBwZXJzb25hbCBkcml2ZSBvZiBhbnkgdXNlcg0KKwkJCQkJCTwvaT4NCisJCQkJCTwvZGl2Pg0KKwkJCQk8L2Rpdj4NCisJCQkJPGRpdj4NCisJCQkJCTxhIGhyZWY9IkNhbGVuZGFyU2VydmljZS5odG1sIiB0YXJnZXQ9Il9CTEFOSyI+DQorCQkJCQkJPGI+Q2FsZW5kYXJTZXJ2aWNlPC9iPg0KKwkJCQkJPC9hPg0KKwkJCQkJPGJyIC8+DQorCQkJCQk8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDoyMHB4Ij4NCisJCQkJCQk8aT5DYWxlbmRhclNlcnZpY2UgY29udGFpbnMgbWV0aG9kcyB0byBjcmVhdGUsIGVkaXQgZGVsZXRlDQorCQkJCQkJCWNhbGVuZGFyIG1lZXRpbmdzDQorCQkJCQkJPC9pPg0KKwkJCQkJPC9kaXY+DQorCQkJCTwvZGl2Pg0KKwkJCQk8ZGl2Pg0KKwkJCQkJPGEgaHJlZj0iSmFiYmVyU2VydmljZS5odG1sIiB0YXJnZXQ9Il9CTEFOSyI+DQorCQkJCQkJPGI+SmFiYmVyU2VydmljZTwvYj4NCisJCQkJCTwvYT4NCisJCQkJCTxiciAvPg0KKwkJCQkJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6MjBweCI+DQorCQkJCQkJPGk+VGhlIFNlcnZpY2UgY29udGFpbnMgbWV0aG9kcyBuZWNlc3NhcnkgZm9yIE9NIHRvIEphYmJlciBpbnRlZ3JhdGlvbi4NCisJCQkJCQlBbGwgbWV0aG9kcyBkb2Vzbid0IHJlcXVpcmUgYWRtaW4gcHJpdmlsZWdlcyB0byBnZXQgY2FsbGVkLg0KKwkJCQkJCTwvaT4NCisJCQkJCTwvZGl2Pg0KKwkJCQk8L2Rpdj4NCisJCQkJPGRpdj4NCisJCQkJCTxhIGhyZWY9IlNlcnZlclNlcnZpY2UuaHRtbCIgdGFyZ2V0PSJfQkxBTksiPg0KKwkJCQkJCTxiPlNlcnZlclNlcnZpY2U8L2I+DQorCQkJCQk8L2E+DQorCQkJCQk8YnIgLz4NCisJCQkJCTxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjIwcHgiPg0KKwkJCQkJCTxpPlRoZSBTZXJ2aWNlIGNvbnRhaW5zIG1ldGhvZHMgbmVjZXNzYXJ5IGZvciBPTSB0byBtYW5hZ2Ugc2VydmVycyANCisJCQkJCQlwYXJ0aWNpcGF0aW5nIGluIGNsdXN0ZXIuDQorCQkJCQkJQWxsIG1ldGhvZHMgZG9lcyByZXF1aXJlIGFkbWluIHByaXZpbGVnZXMgdG8gZ2V0IGNhbGxlZC4NCisJCQkJCQk8L2k+DQorCQkJCQk8L2Rpdj4NCisJCQkJPC9kaXY+DQorCQkJPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDwhLS0gRk9PVEVSIC0tPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgYWxpZ249ImNlbnRlciI+PGZvbnQgY29sb3I9IiMxMjM0NjUiIHNpemU9Ii0xIj48ZW0+CisgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAmIzE2OTsgMjAwMy0yMDEzLCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyAgICAgICAgICAgICAgICAgICAgPC9lbT48L2ZvbnQ+PC9kaXY+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvYm9keT4KKyAgICA8L2h0bWw+Cis8IS0tIGVuZCB0aGUgcHJvY2Vzc2luZyAtLT4KKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKwpkaWZmIC0tZ2l0IGEvZG9jcy9TdWdhckNSTVBsdWdpbi5odG1sIGIvZG9jcy9TdWdhckNSTVBsdWdpbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxODhmYmUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL1N1Z2FyQ1JNUGx1Z2luLmh0bWwKQEAgLTAsMCArMSw3NzggQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgorCis8IS0tCitDb3B5cmlnaHQgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKworPCEtLSBDb250ZW50IFN0eWxlc2hlZXQgZm9yIFNpdGUgLS0+CisKKyAgICAgICAgCis8IS0tIHN0YXJ0IHRoZSBwcm9jZXNzaW5nIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8IS0tIEdFTkVSQVRFRCBGSUxFLCBETyBOT1QgRURJVCwgRURJVCBUSEUgWE1MIEZJTEUgSU4geGRvY3MgSU5TVEVBRCEgLS0+CisgICAgPCEtLSBNYWluIFBhZ2UgU2VjdGlvbiAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGh0bWw+CisgICAgICAgIDxoZWFkPgorICAgICAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiLz4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iCisJCQlPcGVuTWVldGluZ3MgVGVhbQorCQkiPgorICAgICAgICAgICAgPG1ldGEgbmFtZT0iZW1haWwiIGNvbnRlbnQ9ImV1Z2VuLnNjaHdlcnRAZ21haWwuY29tIj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICA8dGl0bGU+QXBhY2hlIE9wZW5NZWV0aW5ncyAtIFN1Z2FyQ1JNIFBsdWdpbjwvdGl0bGU+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3Mvb3Blbm1lZXRpbmdzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvanF1ZXJ5LXVpLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29pbi1zbGlkZXItc3R5bGVzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29sb3Jib3guY3NzIiAvPgorICAgICAgICAgICAgCisJCQk8IS0tIEFkZCBqUXVlcnkgbGlicmFyeSAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS0xLjcuMS5taW4uanMiPjwvc2NyaXB0PgorCQkKKwkJCTwhLS0gQWRkIGNvaW5zbGlkZXIgcGx1Z2lucyAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2NvaW4tc2xpZGVyLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTwhLS0gQWRkIGNvbG9yYm94IHBsdWdpbiAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS5jb2xvcmJveC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5jb3JlLmpzIj48L3NjcmlwdD4KKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkud2lkZ2V0LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmFjY29yZGlvbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQ+CisJCQkkKGZ1bmN0aW9uKCkgeworCQkJCSQoICIjYWNjb3JkaW9uIiApLmFjY29yZGlvbih7CisJCQkJCWF1dG9IZWlnaHQ6IGZhbHNlLAorCQkJCQluYXZpZ2F0aW9uOiB0cnVlLAorCQkJCQluYXZpZ2F0aW9uRmlsdGVyOiBmdW5jdGlvbiAoKSB7CisJCQkJCQl2YXIgc2lkZWJhckhyZWZBcnJheSA9IHRoaXMuaHJlZi5zcGxpdCgiLyIpOworICAgIAkJCQkJdmFyIHNpZGVCYXJMYXN0U3RyaW5nID0gc2lkZWJhckhyZWZBcnJheVtzaWRlYmFySHJlZkFycmF5Lmxlbmd0aCAtIDFdLnRvTG93ZXJDYXNlKCk7CisJCQkJCQkKKwkJCQkJCWlmIChzaWRlQmFyTGFzdFN0cmluZy5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJCQl9CisJCQkJCQkKKwkJCQkJCQkJCQkJCS8qIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgKi8KKwkJCQkJCXZhciBjdXJyZW50U2VjdGlvbiA9ICIiOworCQkJCQkJCisJCQkJCQl2YXIgY3VycmVudExvY2F0aW9uID0gIiI7CisJCQkJCQl2YXIgY3VycmVudExpbmsgPSAiIjsKKwkJCQkJCWlmIChmYWxzZSkgeworCQkJCQkJCisJCQkJCQl9CisgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luZGV4Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luZGV4Lmh0bWwiLnN1YnN0cigxLCAiL2luZGV4Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbGljZW5zZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9saWNlbnNlLmh0bWwiLnN1YnN0cigxLCAiL2xpY2Vuc2UuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIuc3Vic3RyKDEsICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2Rvd25sb2Fkcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kb3dubG9hZHMuaHRtbCIuc3Vic3RyKDEsICIvZG93bmxvYWRzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5zdWJzdHIoMSwgIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5zdGFsbGF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luc3RhbGxhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9pbnN0YWxsYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9VcGdyYWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1VwZ3JhZGUuaHRtbCIuc3Vic3RyKDEsICIvVXBncmFkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLnN1YnN0cigxLCAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29tbWFuZExpbmVBZG1pbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLnN1YnN0cigxLCAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZ2V0LWludm9sdmVkLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZ2V0LWludm9sdmVkLmh0bWwiLnN1YnN0cigxLCAiL2dldC1pbnZvbHZlZC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RlYW0tbGlzdC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3RlYW0tbGlzdC5odG1sIi5zdWJzdHIoMSwgIi90ZWFtLWxpc3QuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9tYWlsLWxpc3RzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbWFpbC1saXN0cy5odG1sIi5zdWJzdHIoMSwgIi9tYWlsLWxpc3RzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5zdWJzdHIoMSwgImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9zdm4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3N2bi5odG1sIi5zdWJzdHIoMSwgIi9zdm4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLnN1YnN0cigxLCAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kZXBlbmRlbmNpZXMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2RlcGVuZGVuY2llcy5odG1sIi5zdWJzdHIoMSwgIi9kZXBlbmRlbmNpZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVW5pdFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pVbml0VGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9KVW5pdFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NYW51YWxUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9NYW51YWxUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL01hbnVhbFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWxlYXNlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlbGVhc2VHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9SZWxlYXNlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJzaXRlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1dlYnNpdGVHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9XZWJzaXRlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU29hcFJlc3RBUEkuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1NvYXBSZXN0QVBJLmh0bWwiLnN1YnN0cigxLCAiL1NvYXBSZXN0QVBJLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdEFQSVNhbXBsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVzdEFQSVNhbXBsZS5odG1sIi5zdWJzdHIoMSwgIi9SZXN0QVBJU2FtcGxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGRhcEFuZEFEUy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTGRhcEFuZEFEUy5odG1sIi5zdWJzdHIoMSwgIi9MZGFwQW5kQURTLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRXJyb3JzVGFibGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0Vycm9yc1RhYmxlLmh0bWwiLnN1YnN0cigxLCAiL0Vycm9yc1RhYmxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01vb2RsZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Nb29kbGVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvTW9vZGxlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU2FrYWlQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU2FrYWlQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU2FrYWlQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KaXJhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0ppcmFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSmlyYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pvb21sYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Kb29tbGFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSm9vbWxhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRHJ1cGFsUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0RydXBhbFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9EcnVwYWxQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CaXRyaXhQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQml0cml4UGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0JpdHJpeFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU3VnYXJDUk1QbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWRtaW5lUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlZG1pbmVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvUmVkbWluZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0lCTURCMkNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0lCTURCMkNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9JQk1EQjJDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09yYWNsZUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09yYWNsZUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9PcmFjbGVDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL015U1FMQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTXlTUUxDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvTXlTUUxDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Bvc3RncmVzQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9zdGdyZXNDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvUG9zdGdyZXNDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9MYW5ndWFnZUVkaXRvci5odG1sIi5zdWJzdHIoMSwgIi9MYW5ndWFnZUVkaXRvci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVGltZVpvbmVIYW5kbGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIuc3Vic3RyKDEsICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRWRpdFRlbXBsYXRlcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIuc3Vic3RyKDEsICIvRWRpdFRlbXBsYXRlcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3J0U2V0dGluZ3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3J0U2V0dGluZ3MuaHRtbCIuc3Vic3RyKDEsICIvUG9ydFNldHRpbmdzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIuc3Vic3RyKDEsICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIuc3Vic3RyKDEsICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRGFzaGJvYXJkLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRGFzaGJvYXJkLmh0bWwiLnN1YnN0cigxLCAiL0Rhc2hib2FyZC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSG90S2V5cy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0hvdEtleXMuaHRtbCIuc3Vic3RyKDEsICIvSG90S2V5cy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJhcHBOYW1lUGF0aC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLnN1YnN0cigxLCAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9OYXZpZ2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTmF2aWdhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9OYXZpZ2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5zdWJzdHIoMSwgIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JUTVBTQW5kSFRUUFMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SVE1QU0FuZEhUVFBTLmh0bWwiLnN1YnN0cigxLCAiL1JUTVBTQW5kSFRUUFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIuc3Vic3RyKDEsICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIuc3Vic3RyKDEsICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DbHVzdGVyaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2x1c3RlcmluZy5odG1sIi5zdWJzdHIoMSwgIi9DbHVzdGVyaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dldFZlcnNpb25JbmZvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2V0VmVyc2lvbkluZm8uaHRtbCIuc3Vic3RyKDEsICIvR2V0VmVyc2lvbkluZm8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJICAgIAkJCQkJCisgICAgCQkJCQljdXJyZW50TGluayA9IGN1cnJlbnRMaW5rLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQljdXJyZW50TG9jYXRpb24gPSBjdXJyZW50TG9jYXRpb24udG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCQorCQkJCQkJcmV0dXJuIHNpZGVCYXJMYXN0U3RyaW5nID09IGN1cnJlbnRMaW5rKyIjIitjdXJyZW50TG9jYXRpb247CisJCQkJCX0KKwkJCQl9KTsKKwkJCX0pOworCQkJPC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwkJCQkkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsKKwkJCQkJJCgnLmZhbmN5Ym94LWJ1dHRvbnMnKS5jb2xvcmJveCh7cmVsOidmYW5jeWJveC1idXR0b25zJyx3aWR0aDoiNzUlIiwgaGVpZ2h0OiI3NSUifSk7CisJCQkJCSQoJyNhY2NvcmRpb24gYScpLmVhY2goZnVuY3Rpb24oKSB7CisJCQkJICAgICAgdmFyIGEgPSAkKHRoaXMpOworCQkJCSAgICAgIHZhciBocmVmID0gYS5hdHRyKCJocmVmIik7CisJCQkJICAgICAgaWYgKGhyZWYuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJICAgICAgCSAgdmFyIGNvbXBhcmVJdCA9IGhyZWYuc3Vic3RyKDIsIGhyZWYubGVuZ3RoKTsKKwkJCQkJICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZihjb21wYXJlSXQpIT0gLTEpIHsKKwkJCQkJICAgICAgIGEuYWRkQ2xhc3MoJ2FjdGl2ZScpOworCQkJCQkgICAgICB9CisJCQkJICAgICAgfQorCQkJCSAgICB9KTsKKwkJCQkJJCgnI2NvaW4tc2xpZGVyJykuY29pbnNsaWRlcih7IHdpZHRoOiA2NDAsaGVpZ2h0OiA0MDAsIGRlbGF5OiA0MDAwICB9KTsJCQkJCQorCQkJCX0pOworCQkJPC9zY3JpcHQ+CQorCQkJCQkJCisJCQk8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorCQkJCS5mYW5jeWJveC1jdXN0b20gLmZhbmN5Ym94LW91dGVyIHsKKwkJCQkJYm94LXNoYWRvdzogMCAwIDUwcHggIzIyMjsKKwkJCQl9CisJCQk8L3N0eWxlPgorICAgICAgICA8L2hlYWQ+CisKKyAgICAgICAgPGJvZHkgYmdjb2xvcj0iI2ZmZmZmZiIgdGV4dD0iIzAwMDAwMCIgbGluaz0iIzEyMzQ2NSIgdmxpbms9IiMxMjM0NjUiIGFsaW5rPSIjMDAwMDAwIj4gIAorICAgICAgICAJPGRpdiBjbGFzcz0ibWFpbmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAJPGRpdiBjbGFzcz0ic3VwZXJib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCI+CisgICAgICAgICAgICAgICAgPCEtLSBUT1AgSU1BR0UgLS0+CisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPgorPGEgaHJlZj0iaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnLyI+PGltZyBzcmM9Ii4vaW1hZ2VzL2xvZ28tMi5qcGciIGFsdD0iQXBhY2hlIE9wZW5NZWV0aW5ncyIgYm9yZGVyPSIwIi8+PC9hPgorPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiID4KKwk8YSBocmVmPSJkZW1vLmh0bWwiPkRlbW88L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iZG93bmxvYWRzLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+RG93bmxvYWQ8L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaW5zdGFsbGF0aW9uLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+SW5zdGFsbGF0aW9uPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTIiB0YXJnZXQ9Il9CTEFOSyI+V2lraTwvYT4KKwk8c3Bhbj4mbmJzcDs8L3NwYW4+Cis8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSI0Ij4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPCEtLSBMRUZUIFNJREUgTkFWSUdBVElPTiAtLT4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIiBub3dyYXA9Im5vd3JhcCI+CisKKyAgICAgICAgICAgICAgICAgICAgPCEtLSBzcGVjaWFsIEFDb24gTG9nbyAtIGxlYXZlIGhlcmUgZm9yIG5leHQgdGltZQorICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vYXBhY2hlY29uLmNvbS8yMDA1L1VTLyI+CisgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2FwYWNoZS5vcmcvaW1hZ2VzL2FjMjAwNXVzX2JsdWVfMTI1eDEyNS5qcGciIGhlaWdodD0iMTI1IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTI1IiBib3JkZXI9IjAiIGFsdD0iQXBhY2hlQ29uIFVTIDIwMDUiIC8+CisgICAgICAgICAgICAgICAgICAgIDwvYT4gIC0tPgorCisgICAgICAgICAgICAgICAgICAgPCEtLSByZWd1bGFyIG1lbnUgLS0+CisKKyAgICAgICAgICAgICAgICAgICAgCisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGRpdiBpZD0iYWNjb3JkaW9uIiBzdHlsZT0id2lkdGg6IDEwMCUiPgorICAgIAorICAgICAgICAgICAgCTxoMz48YSBocmVmPSIjR2VuZXJhbCI+R2VuZXJhbDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5kZXguaHRtbCI+SG9tZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbGljZW5zZS5odG1sIj5MaWNlbnNlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyI+QVNGPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kb3dubG9hZHMuaHRtbCI+RG93bmxvYWRzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCI+Q29tbWVyY2lhbCBTdXBwb3J0PC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnN0YWxsYXRpb25hbmRVcGdyYWRlIj5JbnN0YWxsYXRpb24gYW5kIFVwZ3JhZGU8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luc3RhbGxhdGlvbi5odG1sIj5JbnN0YWxsYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1VwZ3JhZGUuaHRtbCI+VXBncmFkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii5odHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyI+VHV0b3JpYWxzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db21tYW5kTGluZUFkbWluLmh0bWwiPkNvbW1hbmQgTGluZSBBZG1pbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29tbXVuaXR5Ij5Db21tdW5pdHk8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2dldC1pbnZvbHZlZC5odG1sIj5HZXQgSW52b2x2ZWQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3RlYW0tbGlzdC5odG1sIj5Db21taXR0ZXJzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9tYWlsLWxpc3RzLmh0bWwiPk1haWxpbmcgTGlzdHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyI+V2lraTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjRGV2ZWxvcG1lbnQiPkRldmVsb3BtZW50PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9zdm4uaHRtbCI+U291cmNlIENvZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIj5CdWdzIC8gSXNzdWVzIChKSVJBKTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZGVwZW5kZW5jaWVzLmh0bWwiPkRlcGVuZGVuY2llczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCI+QnVpbGQgSW5zdHJ1Y3Rpb25zPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KVW5pdFRlc3RpbmcuaHRtbCI+SlVuaXQgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTWFudWFsVGVzdGluZy5odG1sIj5NYW51YWwgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVsZWFzZUd1aWRlLmh0bWwiPlJlbGVhc2UgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1dlYnNpdGVHdWlkZS5odG1sIj5XZWJzaXRlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnRlZ3JhdGlvbiI+SW50ZWdyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1NvYXBSZXN0QVBJLmh0bWwiPlNPQVAvUkVTVCBBUEk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Jlc3RBUElTYW1wbGUuaHRtbCI+UkVTVCBBUEkgU2FtcGxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9MZGFwQW5kQURTLmh0bWwiPkxkYXAgYW5kIEFEUzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCI+Vm9JUCBhbmQgU0lQPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9FcnJvcnNUYWJsZS5odG1sIj5FcnJvcnMgdGFibGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI1BsdWdpbnMiPlBsdWdpbnM8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01vb2RsZVBsdWdpbi5odG1sIj5Nb29kbGUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TYWthaVBsdWdpbi5odG1sIj5TYWthaSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0ppcmFQbHVnaW4uaHRtbCI+SmlyYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pvb21sYVBsdWdpbi5odG1sIj5Kb29tbGEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9EcnVwYWxQbHVnaW4uaHRtbCI+RHJ1cGFsIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQml0cml4UGx1Z2luLmh0bWwiPkJpdHJpeCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCI+Q29uZmx1ZW5jZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiPlN1Z2FyQ1JNIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVkbWluZVBsdWdpbi5odG1sIj5SZWRtaW5lIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29uZmlndXJhdGlvbiI+Q29uZmlndXJhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+REIgU2FtcGxlIENvbmZpZ3VyYXRpb25zPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQXBhY2hlRGVyYnlDb25maWcuaHRtbCI+QXBhY2hlIERlcmJ5PC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JQk1EQjJDb25maWcuaHRtbCI+SUJNIERCMjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3JhY2xlQ29uZmlnLmh0bWwiPk9yYWNsZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTXlTUUxDb25maWcuaHRtbCI+TXlTUUw8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Bvc3RncmVzQ29uZmlnLmh0bWwiPlBvc3RncmVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Mb2NhbGl6YXRpb24gYW5kIGxhbmd1YWdlczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiPkludGVybmF0aW9uYWxpc2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9MYW5ndWFnZUVkaXRvci5odG1sIj5MYW5ndWFnZUVkaXRvcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vVGltZVpvbmVIYW5kbGluZy5odG1sIj5UaW1lWm9uZUhhbmRsaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9FZGl0VGVtcGxhdGVzLmh0bWwiPkVkaXRUZW1wbGF0ZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk5BVCBQb3J0IFNldHRpbmdzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9ydFNldHRpbmdzLmh0bWwiPlBvcnQgc2V0dGluZ3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlBlcmZvcm1hbmNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCI+SlZNIHBlcmZvcm1hbmNlIHR1bmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+VXNlciBJbnRlcmZhY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiPlRoZW1lczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRGFzaGJvYXJkLmh0bWwiPkRhc2hib2FyZDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCI+V2ViY2FtIHJlc29sdXRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCI+Um9vbSBsYXlvdXQgb3B0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSG90S2V5cy5odG1sIj5Ib3QgS2V5czwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q3VzdG9taXphdGlvbjwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmFwcE5hbWVQYXRoLmh0bWwiPldlYmFwcCBuYW1lL3BhdGg8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL05hdmlnYXRpb24uaHRtbCI+TmF2aWdhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIj5DYWxlbmRhciBhbmQgdGltZXpvbmU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCI+Q3VzdG9tIHJvb20gdHlwZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCI+Q3VzdG9tIGN0eXB0IG1lY2hhbmlzbTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCI+R2VuZXJhbCBDb25maWd1cmF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5TZWN1cml0eTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCI+UmVzdHJpY3RlZCBBY2Nlc3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1JUTVBTQW5kSFRUUFMuaHRtbCI+UlRNUFMgYW5kIEhUVFBTPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Db252ZXJ0ZXJzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIj5PcGVuT2ZmaWNlIENvbnZlcnRlcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIj5GRk1QRUcgVmVyc2lvbiBTd2l0Y2g8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNsdXN0ZXJpbmc8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DbHVzdGVyaW5nLmh0bWwiPkNsdXN0ZXJpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk1pc2M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZXRWZXJzaW9uSW5mby5odG1sIj5HZXQgdmVyc2lvbiBpbmZvPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAKKyAgICA8L2Rpdj4KKyAgICAgCisgICAgPGJyLz4KKyAgICAKKyAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iU3VnYXJDUk0gUGx1Z2luIGZvciBPcGVuTWVldGluZ3MiPjxzdHJvbmc+U3VnYXJDUk0gUGx1Z2luIGZvciBPcGVuTWVldGluZ3M8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQlZb3UgY2FuIGdldCB0aGUgbGF0ZXN0IFZlcnNpb24gb2YgdGhlIFBsdWdpbiBmb3IgU3VnYXJDUk0gZnJvbSB0aGUNCisJCQkJPGEgaHJlZj0iZG93bmxvYWRzLmh0bWwiPmRvd25sb2FkczwvYT4NCisJCQkJLg0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQlZb3UgY2FuIGZpbmQgdGhlIE9wZW5NZWV0aW5ncyBQbHVnaW4gYWxzbyBpbiB0aGUNCisJCQkJPGEgaHJlZj0iaHR0cDovL3d3dy5zdWdhcmZvcmdlLm9yZy9wcm9qZWN0cy9vcGVubWVldGluZ3MvIiB0YXJnZXQ9Il9CTEFOSyIgcmVsPSJub2ZvbGxvdyI+U3VnYXJDUk0gUGx1Z2luIGRhdGFiYXNlPC9hPg0KKwkJCQkuDQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQorCQkJCUEgZGVtbyB2ZXJzaW9uIG9mIHRoZSBTdWdhckNSTSBwbHVnaW4gaXMgYXZhaWxhYmxlIGF0DQorCQkJCTxhIGhyZWY9Imh0dHA6Ly9kZW1vLmUtc2Nod2VydC5kZS9zdWdhcmNybS8iIHRhcmdldD0iX0JMQU5LIiByZWw9Im5vZm9sbG93Ij5kZW1vLmUtc2Nod2VydC5kZTwvYT4NCisJCQkJLiBVc2VybmFtZTogZGVtbyBQYXNzd29yZDogRGVtb3VzZXI1NSANCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJGZWF0dXJlcyI+PHN0cm9uZz5GZWF0dXJlczwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgICA8aHIgc3R5bGU9IndpZHRoOjEwMCU7IGNvbG9yOiM5OTk5OTk7IGJhY2tncm91bmQtY29sb3I6Izk5OTk5OTsgaGVpZ2h0OjFweDsgYm9yZGVyOjBweDsiLz4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+VGhlIHBsdWdpbiBjb250YWlucyB0aGUgZm9sbG93aW5nIGZlYXR1cmVzOiA8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+DQorCQkJCTxsaT5DcmVhdGUgdmlkZW9jb25mZXJlbmNlIHJvb21zIHRocm91Z2ggU3VnYXJDUk06IDwvbGk+DQorCQkJCTxsaT4NCisJCQkJCTxvbD4NCisJCQkJCQk8bGk+SW50ZWdyYXRlZCB3aXRoIGNhbGVuZGFyIDwvbGk+DQorCQkJCQkJPGxpPkludGVncmF0ZWQgd2l0aCBTdWdhckNSTSBtZWV0aW5ncyA8L2xpPg0KKwkJCQkJCTxsaT5TZW5kcyBpbnZldGF0aW9ucyBlbWFpbHMgdG8gbWVldGluZyBwYXJ0aWNpcGFudHMgPC9saT4JCQkJCQ0KKwkJCQkJCTxsaT5Db25maWd1cmFibGUgcm9vbSB0eXBlIDwvbGk+DQorCQkJCQk8L29sPg0KKwkJCQk8L2xpPg0KKwkJCTwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJJbnN0YWxsYXRpb24gdGhlIFN1Z2FyQ1JNIFBsdWdpbiBmb3IgT3Blbk1lZXRpbmdzIj48c3Ryb25nPkluc3RhbGxhdGlvbiB0aGUgU3VnYXJDUk0gUGx1Z2luIGZvciBPcGVuTWVldGluZ3M8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPkluIFN1Z2FyQ1JNJ3MgYWRtaW5pc3RyYXRpb24gd2ViLWludGVyZmFjZSB5b3Ugd2lsbCBmaW5kIHRoZQ0KKwkJCQltb2R1bGUgbG9hZGVyLg0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJmYW5jeWJveC1idXR0b25zIiBocmVmPSJpbWFnZXMvbW9vZGxlX3BsdWdpbl9jb25mZXJlbmNlLnBuZyI+DQorCQkJCTxpbWcgc3JjPSJpbWFnZXMvU3VnYXJDUk1fSW5zdGFsbGF0aW9uLnBuZyIgYWx0PSIiIHdpZHRoPSI2NDAiIGhlaWdodD0iMzIwIiAvPg0KKwkJCTwvYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvbD4NCisJCQkJPGxpPlVwbG9hZCB0aGUgbW9kdWxlIHdpdGggbW9kdWxlIGxvYWRlciBpbiBhZG1pbmlzdHJhdGlvbiBhcmVhLiA8L2xpPg0KKwkJCQk8bGk+Q29uZmlndXJlIE9wZW5NZWV0aW5ncyBzZXR0aW5ncy4gPC9saT4NCisJCQkJPGxpPkNyZWF0ZSBPcGVuTWVldGluZ3Mgcm9vbXMuIDwvbGk+CQkJCQ0KKwkJCTwvb2w+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJEZW1vIHZpZGVvIj48c3Ryb25nPkRlbW8gdmlkZW88L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlRoZSBkZW1vIHZpZGVvIG9mIFN1Z2FyQ1JNIHBsdWdpbiBzaG93IHlvdSB0aGUgcGx1Z2luIGluIGFjdGlvbiA8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IHN0eWxlPSJoZWlnaHQ6IDM5MHB4OyB3aWR0aDogNjQwcHgiPg0KKwkJCSAgICAgIDxwYXJhbSBuYW1lPSJtb3ZpZSIgdmFsdWU9Imh0dHA6Ly93d3cueW91dHViZS5jb20vdi94ckRiY1hxeERxOD92ZXJzaW9uPTMmYW1wO2ZlYXR1cmU9cGxheWVyX2RldGFpbHBhZ2UiIC8+DQorCQkJICAgICAgPHBhcmFtIG5hbWU9ImFsbG93RnVsbFNjcmVlbiIgdmFsdWU9InRydWUiIC8+DQorCQkJICAgICAgPHBhcmFtIG5hbWU9ImFsbG93U2NyaXB0QWNjZXNzIiB2YWx1ZT0iYWx3YXlzIiAvPg0KKwkJCSAgICAgIDxlbWJlZCBzcmM9Imh0dHA6Ly93d3cueW91dHViZS5jb20vdi94ckRiY1hxeERxOD92ZXJzaW9uPTMmYW1wO2ZlYXR1cmU9cGxheWVyX2RldGFpbHBhZ2UiIHR5cGU9ImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoIiBhbGxvd2Z1bGxzY3JlZW49InRydWUiIGFsbG93U2NyaXB0QWNjZXNzPSJhbHdheXMiIHdpZHRoPSI2NDAiIGhlaWdodD0iMzYwIiAvPg0KKwkJICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDwhLS0gRk9PVEVSIC0tPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgYWxpZ249ImNlbnRlciI+PGZvbnQgY29sb3I9IiMxMjM0NjUiIHNpemU9Ii0xIj48ZW0+CisgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAmIzE2OTsgMjAwMy0yMDEzLCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyAgICAgICAgICAgICAgICAgICAgPC9lbT48L2ZvbnQ+PC9kaXY+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvYm9keT4KKyAgICA8L2h0bWw+Cis8IS0tIGVuZCB0aGUgcHJvY2Vzc2luZyAtLT4KKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKwpkaWZmIC0tZ2l0IGEvZG9jcy9UaW1lWm9uZUhhbmRsaW5nLmh0bWwgYi9kb2NzL1RpbWVab25lSGFuZGxpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MGRhMDI5Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9UaW1lWm9uZUhhbmRsaW5nLmh0bWwKQEAgLTAsMCArMSw3NjEgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgorCis8IS0tCitDb3B5cmlnaHQgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKworPCEtLSBDb250ZW50IFN0eWxlc2hlZXQgZm9yIFNpdGUgLS0+CisKKyAgICAgICAgCis8IS0tIHN0YXJ0IHRoZSBwcm9jZXNzaW5nIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8IS0tIEdFTkVSQVRFRCBGSUxFLCBETyBOT1QgRURJVCwgRURJVCBUSEUgWE1MIEZJTEUgSU4geGRvY3MgSU5TVEVBRCEgLS0+CisgICAgPCEtLSBNYWluIFBhZ2UgU2VjdGlvbiAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGh0bWw+CisgICAgICAgIDxoZWFkPgorICAgICAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiLz4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iCisJCQlPcGVuTWVldGluZ3MgVGVhbQorCQkiPgorICAgICAgICAgICAgPG1ldGEgbmFtZT0iZW1haWwiIGNvbnRlbnQ9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+CisgICAgICAgICAgICAKKyAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgPHRpdGxlPkFwYWNoZSBPcGVuTWVldGluZ3MgLSBUaW1lem9uZXM8L3RpdGxlPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL29wZW5tZWV0aW5ncy5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2pxdWVyeS11aS5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2NvaW4tc2xpZGVyLXN0eWxlcy5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2NvbG9yYm94LmNzcyIgLz4KKyAgICAgICAgICAgIAorCQkJPCEtLSBBZGQgalF1ZXJ5IGxpYnJhcnkgLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9qcXVlcnktMS43LjEubWluLmpzIj48L3NjcmlwdD4KKwkJCisJCQk8IS0tIEFkZCBjb2luc2xpZGVyIHBsdWdpbnMgLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9jb2luLXNsaWRlci5taW4uanMiPjwvc2NyaXB0PgorCQkJCisJCQk8IS0tIEFkZCBjb2xvcmJveCBwbHVnaW4gLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9qcXVlcnkuY29sb3Jib3guanMiPjwvc2NyaXB0PgorCQkKKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkuY29yZS5qcyI+PC9zY3JpcHQ+CisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLndpZGdldC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5hY2NvcmRpb24uanMiPjwvc2NyaXB0PgorCQkJCisJCQk8c2NyaXB0PgorCQkJJChmdW5jdGlvbigpIHsKKwkJCQkkKCAiI2FjY29yZGlvbiIgKS5hY2NvcmRpb24oeworCQkJCQlhdXRvSGVpZ2h0OiBmYWxzZSwKKwkJCQkJbmF2aWdhdGlvbjogdHJ1ZSwKKwkJCQkJbmF2aWdhdGlvbkZpbHRlcjogZnVuY3Rpb24gKCkgeworCQkJCQkJdmFyIHNpZGViYXJIcmVmQXJyYXkgPSB0aGlzLmhyZWYuc3BsaXQoIi8iKTsKKyAgICAJCQkJCXZhciBzaWRlQmFyTGFzdFN0cmluZyA9IHNpZGViYXJIcmVmQXJyYXlbc2lkZWJhckhyZWZBcnJheS5sZW5ndGggLSAxXS50b0xvd2VyQ2FzZSgpOworCQkJCQkJCisJCQkJCQlpZiAoc2lkZUJhckxhc3RTdHJpbmcuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJCQkJcmV0dXJuIGZhbHNlOworCQkJCQkJfQorCQkJCQkJCisJCQkJCQkJCQkJCQkvKiBkb2N1bWVudC5sb2NhdGlvbi5ocmVmICovCisJCQkJCQl2YXIgY3VycmVudFNlY3Rpb24gPSAiIjsKKwkJCQkJCQorCQkJCQkJdmFyIGN1cnJlbnRMb2NhdGlvbiA9ICIiOworCQkJCQkJdmFyIGN1cnJlbnRMaW5rID0gIiI7CisJCQkJCQlpZiAoZmFsc2UpIHsKKwkJCQkJCQorCQkJCQkJfQorICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9pbmRleC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9pbmRleC5odG1sIi5zdWJzdHIoMSwgIi9pbmRleC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2xpY2Vuc2UuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbGljZW5zZS5odG1sIi5zdWJzdHIoMSwgIi9saWNlbnNlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iLnN1YnN0cigxLCAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kb3dubG9hZHMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZG93bmxvYWRzLmh0bWwiLnN1YnN0cigxLCAiL2Rvd25sb2Fkcy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIuc3Vic3RyKDEsICIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luc3RhbGxhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9pbnN0YWxsYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvaW5zdGFsbGF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVXBncmFkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9VcGdyYWRlLmh0bWwiLnN1YnN0cigxLCAiL1VwZ3JhZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIi5zdWJzdHIoMSwgImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29tbWFuZExpbmVBZG1pbi5odG1sIi5zdWJzdHIoMSwgIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2dldC1pbnZvbHZlZC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2dldC1pbnZvbHZlZC5odG1sIi5zdWJzdHIoMSwgIi9nZXQtaW52b2x2ZWQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi90ZWFtLWxpc3QuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi90ZWFtLWxpc3QuaHRtbCIuc3Vic3RyKDEsICIvdGVhbS1saXN0Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbWFpbC1saXN0cy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL21haWwtbGlzdHMuaHRtbCIuc3Vic3RyKDEsICIvbWFpbC1saXN0cy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIuc3Vic3RyKDEsICJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvc3ZuLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9zdm4uaHRtbCIuc3Vic3RyKDEsICIvc3ZuLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIi5zdWJzdHIoMSwgImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZGVwZW5kZW5jaWVzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kZXBlbmRlbmNpZXMuaHRtbCIuc3Vic3RyKDEsICIvZGVwZW5kZW5jaWVzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiLnN1YnN0cigxLCAiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSlVuaXRUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9KVW5pdFRlc3RpbmcuaHRtbCIuc3Vic3RyKDEsICIvSlVuaXRUZXN0aW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTWFudWFsVGVzdGluZy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTWFudWFsVGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9NYW51YWxUZXN0aW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVsZWFzZUd1aWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZWxlYXNlR3VpZGUuaHRtbCIuc3Vic3RyKDEsICIvUmVsZWFzZUd1aWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2Vic2l0ZUd1aWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9XZWJzaXRlR3VpZGUuaHRtbCIuc3Vic3RyKDEsICIvV2Vic2l0ZUd1aWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1NvYXBSZXN0QVBJLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Tb2FwUmVzdEFQSS5odG1sIi5zdWJzdHIoMSwgIi9Tb2FwUmVzdEFQSS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RBUElTYW1wbGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1Jlc3RBUElTYW1wbGUuaHRtbCIuc3Vic3RyKDEsICIvUmVzdEFQSVNhbXBsZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0xkYXBBbmRBRFMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0xkYXBBbmRBRFMuaHRtbCIuc3Vic3RyKDEsICIvTGRhcEFuZEFEUy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0Vycm9yc1RhYmxlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9FcnJvcnNUYWJsZS5odG1sIi5zdWJzdHIoMSwgIi9FcnJvcnNUYWJsZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Nb29kbGVQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTW9vZGxlUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL01vb2RsZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Nha2FpUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1Nha2FpUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1Nha2FpUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSmlyYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9KaXJhUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0ppcmFQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Kb29tbGFQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSm9vbWxhUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0pvb21sYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0RydXBhbFBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9EcnVwYWxQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvRHJ1cGFsUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQml0cml4UGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0JpdHJpeFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9CaXRyaXhQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVkbWluZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZWRtaW5lUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1JlZG1pbmVQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9JQk1EQjJDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JQk1EQjJDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvSUJNREIyQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9PcmFjbGVDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9PcmFjbGVDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvT3JhY2xlQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NeVNRTENvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL015U1FMQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL015U1FMQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1Bvc3RncmVzQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL1Bvc3RncmVzQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0xhbmd1YWdlRWRpdG9yLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIuc3Vic3RyKDEsICIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiLnN1YnN0cigxLCAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0VkaXRUZW1wbGF0ZXMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9FZGl0VGVtcGxhdGVzLmh0bWwiLnN1YnN0cigxLCAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUG9ydFNldHRpbmdzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9ydFNldHRpbmdzLmh0bWwiLnN1YnN0cigxLCAiL1BvcnRTZXR0aW5ncy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiLnN1YnN0cigxLCAiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiLnN1YnN0cigxLCAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0Rhc2hib2FyZC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0Rhc2hib2FyZC5odG1sIi5zdWJzdHIoMSwgIi9EYXNoYm9hcmQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0hvdEtleXMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Ib3RLZXlzLmh0bWwiLnN1YnN0cigxLCAiL0hvdEtleXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViYXBwTmFtZVBhdGguaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJhcHBOYW1lUGF0aC5odG1sIi5zdWJzdHIoMSwgIi9XZWJhcHBOYW1lUGF0aC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTmF2aWdhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL05hdmlnYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvTmF2aWdhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIuc3Vic3RyKDEsICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIuc3Vic3RyKDEsICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIi5zdWJzdHIoMSwgIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SVE1QU0FuZEhUVFBTLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUlRNUFNBbmRIVFRQUy5odG1sIi5zdWJzdHIoMSwgIi9SVE1QU0FuZEhUVFBTLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiLnN1YnN0cigxLCAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiLnN1YnN0cigxLCAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ2x1c3RlcmluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NsdXN0ZXJpbmcuaHRtbCIuc3Vic3RyKDEsICIvQ2x1c3RlcmluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZXRWZXJzaW9uSW5mby5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dldFZlcnNpb25JbmZvLmh0bWwiLnN1YnN0cigxLCAiL0dldFZlcnNpb25JbmZvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCSAgICAJCQkJCQorICAgIAkJCQkJY3VycmVudExpbmsgPSBjdXJyZW50TGluay50b0xvd2VyQ2FzZSgpOworICAgIAkJCQkJY3VycmVudExvY2F0aW9uID0gY3VycmVudExvY2F0aW9uLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQkKKwkJCQkJCXJldHVybiBzaWRlQmFyTGFzdFN0cmluZyA9PSBjdXJyZW50TGluaysiIyIrY3VycmVudExvY2F0aW9uOworCQkJCQl9CisJCQkJfSk7CisJCQl9KTsKKwkJCTwvc2NyaXB0PgorCQkJCisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisJCQkJJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CisJCQkJCSQoJy5mYW5jeWJveC1idXR0b25zJykuY29sb3Jib3goe3JlbDonZmFuY3lib3gtYnV0dG9ucycsd2lkdGg6Ijc1JSIsIGhlaWdodDoiNzUlIn0pOworCQkJCQkkKCcjYWNjb3JkaW9uIGEnKS5lYWNoKGZ1bmN0aW9uKCkgeworCQkJCSAgICAgIHZhciBhID0gJCh0aGlzKTsKKwkJCQkgICAgICB2YXIgaHJlZiA9IGEuYXR0cigiaHJlZiIpOworCQkJCSAgICAgIGlmIChocmVmLmluZGV4T2YoIiMiKSA9PSAtMSkgeworCQkJCSAgICAgIAkgIHZhciBjb21wYXJlSXQgPSBocmVmLnN1YnN0cigyLCBocmVmLmxlbmd0aCk7CisJCQkJCSAgICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoY29tcGFyZUl0KSE9IC0xKSB7CisJCQkJCSAgICAgICBhLmFkZENsYXNzKCdhY3RpdmUnKTsKKwkJCQkJICAgICAgfQorCQkJCSAgICAgIH0KKwkJCQkgICAgfSk7CisJCQkJCSQoJyNjb2luLXNsaWRlcicpLmNvaW5zbGlkZXIoeyB3aWR0aDogNjQwLGhlaWdodDogNDAwLCBkZWxheTogNDAwMCAgfSk7CQkJCQkKKwkJCQl9KTsKKwkJCTwvc2NyaXB0PgkKKwkJCQkJCQorCQkJPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKwkJCQkuZmFuY3lib3gtY3VzdG9tIC5mYW5jeWJveC1vdXRlciB7CisJCQkJCWJveC1zaGFkb3c6IDAgMCA1MHB4ICMyMjI7CisJCQkJfQorCQkJPC9zdHlsZT4KKyAgICAgICAgPC9oZWFkPgorCisgICAgICAgIDxib2R5IGJnY29sb3I9IiNmZmZmZmYiIHRleHQ9IiMwMDAwMDAiIGxpbms9IiMxMjM0NjUiIHZsaW5rPSIjMTIzNDY1IiBhbGluaz0iIzAwMDAwMCI+ICAKKyAgICAgICAgCTxkaXYgY2xhc3M9Im1haW5ib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgCTxkaXYgY2xhc3M9InN1cGVyYm9keSIgc3R5bGU9IndpZHRoOiAxMDAlOyI+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiPgorICAgICAgICAgICAgICAgIDwhLS0gVE9QIElNQUdFIC0tPgorICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0Ij4KKzxhIGhyZWY9Imh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy8iPjxpbWcgc3JjPSIuL2ltYWdlcy9sb2dvLTIuanBnIiBhbHQ9IkFwYWNoZSBPcGVuTWVldGluZ3MiIGJvcmRlcj0iMCIvPjwvYT4KKzwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODAlIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIiA+CisJPGEgaHJlZj0iZGVtby5odG1sIj5EZW1vPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9ImRvd25sb2Fkcy5odG1sIiB0YXJnZXQ9Il9QQVJFTlQiPkRvd25sb2FkPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imluc3RhbGxhdGlvbi5odG1sIiB0YXJnZXQ9Il9QQVJFTlQiPkluc3RhbGxhdGlvbjwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUyIgdGFyZ2V0PSJfQkxBTksiPldpa2k8L2E+CisJPHNwYW4+Jm5ic3A7PC9zcGFuPgorPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iNCI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGhyIG5vc2hhZGU9Im5vc2hhZGUiIHNpemU9IjEiLz4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDwhLS0gTEVGVCBTSURFIE5BVklHQVRJT04gLS0+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCIgbm93cmFwPSJub3dyYXAiPgorCisgICAgICAgICAgICAgICAgICAgIDwhLS0gc3BlY2lhbCBBQ29uIExvZ28gLSBsZWF2ZSBoZXJlIGZvciBuZXh0IHRpbWUKKyAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL2FwYWNoZWNvbi5jb20vMjAwNS9VUy8iPgorICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHA6Ly9hcGFjaGUub3JnL2ltYWdlcy9hYzIwMDV1c19ibHVlXzEyNXgxMjUuanBnIiBoZWlnaHQ9IjEyNSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjEyNSIgYm9yZGVyPSIwIiBhbHQ9IkFwYWNoZUNvbiBVUyAyMDA1IiAvPgorICAgICAgICAgICAgICAgICAgICA8L2E+ICAtLT4KKworICAgICAgICAgICAgICAgICAgIDwhLS0gcmVndWxhciBtZW51IC0tPgorCisgICAgICAgICAgICAgICAgICAgIAorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDxkaXYgaWQ9ImFjY29yZGlvbiIgc3R5bGU9IndpZHRoOiAxMDAlIj4KKyAgICAKKyAgICAgICAgICAgIAk8aDM+PGEgaHJlZj0iI0dlbmVyYWwiPkdlbmVyYWw8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luZGV4Lmh0bWwiPkhvbWU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2xpY2Vuc2UuaHRtbCI+TGljZW5zZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iPkFTRjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZG93bmxvYWRzLmh0bWwiPkRvd25sb2FkczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiPkNvbW1lcmNpYWwgU3VwcG9ydDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI+SW5zdGFsbGF0aW9uIGFuZCBVcGdyYWRlPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9pbnN0YWxsYXRpb24uaHRtbCI+SW5zdGFsbGF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9VcGdyYWRlLmh0bWwiPlVwZ3JhZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiPlR1dG9yaWFsczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQ29tbWFuZExpbmVBZG1pbi5odG1sIj5Db21tYW5kIExpbmUgQWRtaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0NvbW11bml0eSI+Q29tbXVuaXR5PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9nZXQtaW52b2x2ZWQuaHRtbCI+R2V0IEludm9sdmVkPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi90ZWFtLWxpc3QuaHRtbCI+Q29tbWl0dGVyczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbWFpbC1saXN0cy5odG1sIj5NYWlsaW5nIExpc3RzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iPldpa2k8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0RldmVsb3BtZW50Ij5EZXZlbG9wbWVudDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vc3ZuLmh0bWwiPlNvdXJjZSBDb2RlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyI+QnVncyAvIElzc3VlcyAoSklSQSk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2RlcGVuZGVuY2llcy5odG1sIj5EZXBlbmRlbmNpZXM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiPkJ1aWxkIEluc3RydWN0aW9uczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSlVuaXRUZXN0aW5nLmh0bWwiPkpVbml0IFRlc3Rpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01hbnVhbFRlc3RpbmcuaHRtbCI+TWFudWFsIFRlc3Rpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1JlbGVhc2VHdWlkZS5odG1sIj5SZWxlYXNlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9XZWJzaXRlR3VpZGUuaHRtbCI+V2Vic2l0ZSBHdWlkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjSW50ZWdyYXRpb24iPkludGVncmF0aW9uPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Tb2FwUmVzdEFQSS5odG1sIj5TT0FQL1JFU1QgQVBJPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZXN0QVBJU2FtcGxlLmh0bWwiPlJFU1QgQVBJIFNhbXBsZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTGRhcEFuZEFEUy5odG1sIj5MZGFwIGFuZCBBRFM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiPlZvSVAgYW5kIFNJUDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vRXJyb3JzVGFibGUuaHRtbCI+RXJyb3JzIHRhYmxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNQbHVnaW5zIj5QbHVnaW5zPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Nb29kbGVQbHVnaW4uaHRtbCI+TW9vZGxlIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU2FrYWlQbHVnaW4uaHRtbCI+U2FrYWkgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KaXJhUGx1Z2luLmh0bWwiPkppcmEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Kb29tbGFQbHVnaW4uaHRtbCI+Sm9vbWxhIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vRHJ1cGFsUGx1Z2luLmh0bWwiPkRydXBhbCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0JpdHJpeFBsdWdpbi5odG1sIj5CaXRyaXggUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiPkNvbmZsdWVuY2UgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TdWdhckNSTVBsdWdpbi5odG1sIj5TdWdhckNSTSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1JlZG1pbmVQbHVnaW4uaHRtbCI+UmVkbWluZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0NvbmZpZ3VyYXRpb24iPkNvbmZpZ3VyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkRCIFNhbXBsZSBDb25maWd1cmF0aW9uczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiPkFwYWNoZSBEZXJieTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSUJNREIyQ29uZmlnLmh0bWwiPklCTSBEQjI8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL09yYWNsZUNvbmZpZy5odG1sIj5PcmFjbGU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL015U1FMQ29uZmlnLmh0bWwiPk15U1FMPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIj5Qb3N0Z3JlczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TG9jYWxpemF0aW9uIGFuZCBsYW5ndWFnZXM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIj5JbnRlcm5hdGlvbmFsaXNhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTGFuZ3VhZ2VFZGl0b3IuaHRtbCI+TGFuZ3VhZ2VFZGl0b3I8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1RpbWVab25lSGFuZGxpbmcuaHRtbCI+VGltZVpvbmVIYW5kbGluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRWRpdFRlbXBsYXRlcy5odG1sIj5FZGl0VGVtcGxhdGVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5OQVQgUG9ydCBTZXR0aW5nczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1BvcnRTZXR0aW5ncy5odG1sIj5Qb3J0IHNldHRpbmdzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5QZXJmb3JtYW5jZTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiPkpWTSBwZXJmb3JtYW5jZSB0dW5pbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlVzZXIgSW50ZXJmYWNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIj5UaGVtZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0Rhc2hib2FyZC5odG1sIj5EYXNoYm9hcmQ8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiPldlYmNhbSByZXNvbHV0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiPlJvb20gbGF5b3V0IG9wdGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0hvdEtleXMuaHRtbCI+SG90IEtleXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkN1c3RvbWl6YXRpb248L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9XZWJhcHBOYW1lUGF0aC5odG1sIj5XZWJhcHAgbmFtZS9wYXRoPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9OYXZpZ2F0aW9uLmh0bWwiPk5hdmlnYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCI+Q2FsZW5kYXIgYW5kIHRpbWV6b25lPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiPkN1c3RvbSByb29tIHR5cGU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiPkN1c3RvbSBjdHlwdCBtZWNoYW5pc208L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiPkdlbmVyYWwgQ29uZmlndXJhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+U2VjdXJpdHk8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiPlJlc3RyaWN0ZWQgQWNjZXNzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9SVE1QU0FuZEhUVFBTLmh0bWwiPlJUTVBTIGFuZCBIVFRQUzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q29udmVydGVyczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCI+T3Blbk9mZmljZSBDb252ZXJ0ZXI8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCI+RkZNUEVHIFZlcnNpb24gU3dpdGNoPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5DbHVzdGVyaW5nPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2x1c3RlcmluZy5odG1sIj5DbHVzdGVyaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5NaXNjPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2V0VmVyc2lvbkluZm8uaHRtbCI+R2V0IHZlcnNpb24gaW5mbzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCisgICAgPC9kaXY+CisgICAgIAorICAgIDxici8+CisgICAgCisgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODAlIiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkID48IS0tIGJnY29sb3I9IiNFRUVFRUUiIC0tPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0idmVyZGFuYSxhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IkludHJvZHVjdGlvbiI+PHN0cm9uZz5JbnRyb2R1Y3Rpb248L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQlMaXN0IG9mIGRlZmF1bHQgVGltZXpvbmVzOg0KKwkJCQk8YSBocmVmPSJodHRwOi8vb3Blbm1lZXRpbmdzLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9zaW5nbGV3ZWJhcHAvV2ViQ29udGVudC9sYW5ndWFnZXMvdGltZXpvbmVzLnhtbCIgcmVsPSJub2ZvbGxvdyI+aHR0cDovL29wZW5tZWV0aW5ncy5nb29nbGVjb2RlLmNvbS9zdm4vdHJ1bmsvc2luZ2xld2ViYXBwL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL3RpbWV6b25lcy54bWwNCisJCQkJPC9hPg0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQlUbyBhZGQgYSBuZXcgVGltZSBab25lIHlvdSBoYXZlIHRvIGxvb2t1cCBpdHMgcmVwcmVzYW50IGluIEphdmEncw0KKwkJCQlUaW1lem9uZSByZWdpc3RyeS4gWW91IGNhbiB0aGVuIGFkZCBmcmVlbHkgbmV3IHRpbWUgem9uZXMgdG8gdGhlIFhNTA0KKwkJCQlmaWxlLiBUaGUgWE1MIGVudHJpZXMgYXJlIGltcG9ydGVkIGludG8gdGhlIGRhdGFiYXNlIGludG8gdGhlIHRhYmxlDQorCQkJCTxzdHJvbmc+b21fdGltZXpvbmU8L3N0cm9uZz4NCisJCQkJZHVyaW5nIHRoZSBpbnN0YWxsYXRpb24gb2YgT3Blbk1lZXRpbmdzLiAoRG9uJ3QgZm9yZ2V0IHRvIHN0b3AgdGhlDQorCQkJCXNlcnZlciBiZWZvcmUgeW91IGNoYW5nZSBhbnl0aGluZyBpbiB0aGUgZGF0YWJhc2UpLg0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQlUaGUgU2VydmVycyBkZWZhdWx0IHRpbWV6b25lIGlzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiB0YWJsZSBpbg0KKwkJCQl0aGUgYXR0cmlidXRlDQorCQkJCTxzdHJvbmc+ZGVmYXVsdC50aW1lem9uZTwvc3Ryb25nPg0KKwkJCQkuIFRoZSBuYW1lIGluIHRoaXMgdmFsdWUgbGlua3MgdG8gYW4gYXR0cmlidXRlIGluIHRoZSB0YWJsZQ0KKwkJCQlvbV90aW1lem9uZSBpbiB0aGUgY29sdW1uDQorCQkJCTxzdHJvbmc+am5hbWU8L3N0cm9uZz4NCisJCQkJLg0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQlZb3UgY2FuIHNldCBhIEZsYWcNCisJCQkJPHN0cm9uZz5mb3JjZVRpbWVab25lQ2hlY2s8L3N0cm9uZz4NCisJCQkJZm9yIGVhY2ggdXNlciB0aGF0IGdpdmVzIGhpbSBhIFBvcC1VcCBub3RpZmljYXRpb24gdG8gY2hhbmdlIGhpcw0KKwkJCQl0aW1lIHpvbmUuIFRoZSBGbGFnIGNhbiBiZSBjaGFuZ2VkIGluIHRoZSB1c2VyIGFkbWluaXN0cmF0aW9uIG9mDQorCQkJCU9wZW5NZWV0aW5ncy4gVGhpcyBjYW4gYmUgaGFuZHkgaWYgeW91IHVwZGF0ZSBmcm9tIGEgcHJldmlvdXMNCisJCQkJdmVyc2lvbiBvZiBPcGVuTWVldGluZ3MgdG8gbWFrZSBzdXJlIHVzZXJzIHNlZSB0aGUgbmV3IGZlYXR1cmUgYW5kDQorCQkJCXVwZGF0ZSB0aGVpciBzZXR0aW5ncy4NCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJIb3cgdG8gbG9va3VwIHRpbWV6b25lJ3MiPjxzdHJvbmc+SG93IHRvIGxvb2t1cCB0aW1lem9uZSdzPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ4bWxjb2RlIj4NCisJCSAgDQorICAgICAgICAgICAgICAgICAgICBTdHJpbmdbXSBpZHMgPSBUaW1lWm9uZS5nZXRBdmFpbGFibGVJRHMoKTs8YnIgLz4NCisgICAgICAgICAgICAgICAgICAgIGZvciAoU3RyaW5nIGlkIDogaWRzKSB7PGJyIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6MjBweCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgVGltZVpvbmUgdGltZVpvbmUgPSBUaW1lWm9uZS5nZXRUaW1lWm9uZShpZCk7PGJyIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgLy9UaW1lWm9uZSB0aW1lWm9uZSA9IHRpbWVSZWdpc3RyeS5nZXRUaW1lWm9uZShpZCk7PGJyIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgQ2FsZW5kYXIgY2FsID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTs8YnIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjIwcHgiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsLnNldFRpbWVab25lKHRpbWVab25lKTs8YnIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vICsgY2FsLmdldChDYWxlbmRhci5EU1RfT0ZGU0VUKTxiciAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9mZnNldCA9IGNhbC5nZXQoQ2FsZW5kYXIuWk9ORV9PRkZTRVQpOzxiciAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9mZnNldEluTWludXRlcyA9IG9mZnNldC8xMDAwLzYwOzxiciAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIm5hbWUiICsgaWQgKyAibmFtZSBvZmZzZXQgIitvZmZzZXRJbk1pbnV0ZXMrIm9mZnNldCAiKTsNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2Pg0KKyAgICAgICAgICAgICAgICAgICAgfQ0KKwkJICANCisJCSAgPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDwhLS0gRk9PVEVSIC0tPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgYWxpZ249ImNlbnRlciI+PGZvbnQgY29sb3I9IiMxMjM0NjUiIHNpemU9Ii0xIj48ZW0+CisgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAmIzE2OTsgMjAwMy0yMDEzLCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyAgICAgICAgICAgICAgICAgICAgPC9lbT48L2ZvbnQ+PC9kaXY+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvYm9keT4KKyAgICA8L2h0bWw+Cis8IS0tIGVuZCB0aGUgcHJvY2Vzc2luZyAtLT4KKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKwpkaWZmIC0tZ2l0IGEvZG9jcy9VcGdyYWRlLmh0bWwgYi9kb2NzL1VwZ3JhZGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZmQ1N2QzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9VcGdyYWRlLmh0bWwKQEAgLTAsMCArMSw3NTkgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgorCis8IS0tCitDb3B5cmlnaHQgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKworPCEtLSBDb250ZW50IFN0eWxlc2hlZXQgZm9yIFNpdGUgLS0+CisKKyAgICAgICAgCis8IS0tIHN0YXJ0IHRoZSBwcm9jZXNzaW5nIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8IS0tIEdFTkVSQVRFRCBGSUxFLCBETyBOT1QgRURJVCwgRURJVCBUSEUgWE1MIEZJTEUgSU4geGRvY3MgSU5TVEVBRCEgLS0+CisgICAgPCEtLSBNYWluIFBhZ2UgU2VjdGlvbiAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGh0bWw+CisgICAgICAgIDxoZWFkPgorICAgICAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiLz4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iCisJCQlPcGVuTWVldGluZ3MgVGVhbQorCQkiPgorICAgICAgICAgICAgPG1ldGEgbmFtZT0iZW1haWwiIGNvbnRlbnQ9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+CisgICAgICAgICAgICAKKyAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgPHRpdGxlPkFwYWNoZSBPcGVuTWVldGluZ3MgLSBVcGdyYWRlPC90aXRsZT4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9vcGVubWVldGluZ3MuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9qcXVlcnktdWkuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2luLXNsaWRlci1zdHlsZXMuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2xvcmJveC5jc3MiIC8+CisgICAgICAgICAgICAKKwkJCTwhLS0gQWRkIGpRdWVyeSBsaWJyYXJ5IC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LTEuNy4xLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPCEtLSBBZGQgY29pbnNsaWRlciBwbHVnaW5zIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvY29pbi1zbGlkZXIubWluLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPCEtLSBBZGQgY29sb3Jib3ggcGx1Z2luIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LmNvbG9yYm94LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmNvcmUuanMiPjwvc2NyaXB0PgorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS53aWRnZXQuanMiPjwvc2NyaXB0PgorCQkKKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkuYWNjb3JkaW9uLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdD4KKwkJCSQoZnVuY3Rpb24oKSB7CisJCQkJJCggIiNhY2NvcmRpb24iICkuYWNjb3JkaW9uKHsKKwkJCQkJYXV0b0hlaWdodDogZmFsc2UsCisJCQkJCW5hdmlnYXRpb246IHRydWUsCisJCQkJCW5hdmlnYXRpb25GaWx0ZXI6IGZ1bmN0aW9uICgpIHsKKwkJCQkJCXZhciBzaWRlYmFySHJlZkFycmF5ID0gdGhpcy5ocmVmLnNwbGl0KCIvIik7CisgICAgCQkJCQl2YXIgc2lkZUJhckxhc3RTdHJpbmcgPSBzaWRlYmFySHJlZkFycmF5W3NpZGViYXJIcmVmQXJyYXkubGVuZ3RoIC0gMV0udG9Mb3dlckNhc2UoKTsKKwkJCQkJCQorCQkJCQkJaWYgKHNpZGVCYXJMYXN0U3RyaW5nLmluZGV4T2YoIiMiKSA9PSAtMSkgeworCQkJCQkJCXJldHVybiBmYWxzZTsKKwkJCQkJCX0KKwkJCQkJCQorCQkJCQkJCQkJCQkJLyogZG9jdW1lbnQubG9jYXRpb24uaHJlZiAqLworCQkJCQkJdmFyIGN1cnJlbnRTZWN0aW9uID0gIiI7CisJCQkJCQkKKwkJCQkJCXZhciBjdXJyZW50TG9jYXRpb24gPSAiIjsKKwkJCQkJCXZhciBjdXJyZW50TGluayA9ICIiOworCQkJCQkJaWYgKGZhbHNlKSB7CisJCQkJCQkKKwkJCQkJCX0KKyAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5kZXguaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5kZXguaHRtbCIuc3Vic3RyKDEsICIvaW5kZXguaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9saWNlbnNlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2xpY2Vuc2UuaHRtbCIuc3Vic3RyKDEsICIvbGljZW5zZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5zdWJzdHIoMSwgImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZG93bmxvYWRzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2Rvd25sb2Fkcy5odG1sIi5zdWJzdHIoMSwgIi9kb3dubG9hZHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiLnN1YnN0cigxLCAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9pbnN0YWxsYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5zdGFsbGF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL2luc3RhbGxhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1VwZ3JhZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvVXBncmFkZS5odG1sIi5zdWJzdHIoMSwgIi9VcGdyYWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIuc3Vic3RyKDEsICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db21tYW5kTGluZUFkbWluLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIuc3Vic3RyKDEsICIvQ29tbWFuZExpbmVBZG1pbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9nZXQtaW52b2x2ZWQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9nZXQtaW52b2x2ZWQuaHRtbCIuc3Vic3RyKDEsICIvZ2V0LWludm9sdmVkLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGVhbS1saXN0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdGVhbS1saXN0Lmh0bWwiLnN1YnN0cigxLCAiL3RlYW0tbGlzdC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL21haWwtbGlzdHMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9tYWlsLWxpc3RzLmh0bWwiLnN1YnN0cigxLCAiL21haWwtbGlzdHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLnN1YnN0cigxLCAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3N2bi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvc3ZuLmh0bWwiLnN1YnN0cigxLCAiL3N2bi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIuc3Vic3RyKDEsICJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2RlcGVuZGVuY2llcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZGVwZW5kZW5jaWVzLmh0bWwiLnN1YnN0cigxLCAiL2RlcGVuZGVuY2llcy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pVbml0VGVzdGluZy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSlVuaXRUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL0pVbml0VGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01hbnVhbFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01hbnVhbFRlc3RpbmcuaHRtbCIuc3Vic3RyKDEsICIvTWFudWFsVGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlbGVhc2VHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVsZWFzZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1JlbGVhc2VHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYnNpdGVHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvV2Vic2l0ZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1dlYnNpdGVHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Tb2FwUmVzdEFQSS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU29hcFJlc3RBUEkuaHRtbCIuc3Vic3RyKDEsICIvU29hcFJlc3RBUEkuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZXN0QVBJU2FtcGxlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZXN0QVBJU2FtcGxlLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RBUElTYW1wbGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MZGFwQW5kQURTLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9MZGFwQW5kQURTLmh0bWwiLnN1YnN0cigxLCAiL0xkYXBBbmRBRFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FcnJvcnNUYWJsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRXJyb3JzVGFibGUuaHRtbCIuc3Vic3RyKDEsICIvRXJyb3JzVGFibGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTW9vZGxlUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01vb2RsZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Nb29kbGVQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TYWthaVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TYWthaVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TYWthaVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ppcmFQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSmlyYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9KaXJhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSm9vbWxhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pvb21sYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Kb29tbGFQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EcnVwYWxQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRHJ1cGFsUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0RydXBhbFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0JpdHJpeFBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CaXRyaXhQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvQml0cml4UGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TdWdhckNSTVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TdWdhckNSTVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TdWdhckNSTVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlZG1pbmVQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVkbWluZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9SZWRtaW5lUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSUJNREIyQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSUJNREIyQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL0lCTURCMkNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3JhY2xlQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3JhY2xlQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL09yYWNsZUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTXlTUUxDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9NeVNRTENvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9NeVNRTENvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUG9zdGdyZXNDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MYW5ndWFnZUVkaXRvci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLnN1YnN0cigxLCAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5zdWJzdHIoMSwgIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FZGl0VGVtcGxhdGVzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRWRpdFRlbXBsYXRlcy5odG1sIi5zdWJzdHIoMSwgIi9FZGl0VGVtcGxhdGVzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1BvcnRTZXR0aW5ncy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1BvcnRTZXR0aW5ncy5odG1sIi5zdWJzdHIoMSwgIi9Qb3J0U2V0dGluZ3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5zdWJzdHIoMSwgIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5zdWJzdHIoMSwgIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EYXNoYm9hcmQuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9EYXNoYm9hcmQuaHRtbCIuc3Vic3RyKDEsICIvRGFzaGJvYXJkLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLnN1YnN0cigxLCAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Ib3RLZXlzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSG90S2V5cy5odG1sIi5zdWJzdHIoMSwgIi9Ib3RLZXlzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYmFwcE5hbWVQYXRoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvV2ViYXBwTmFtZVBhdGguaHRtbCIuc3Vic3RyKDEsICIvV2ViYXBwTmFtZVBhdGguaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL05hdmlnYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9OYXZpZ2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL05hdmlnYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLnN1YnN0cigxLCAiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIuc3Vic3RyKDEsICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIuc3Vic3RyKDEsICIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUlRNUFNBbmRIVFRQUy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1JUTVBTQW5kSFRUUFMuaHRtbCIuc3Vic3RyKDEsICIvUlRNUFNBbmRIVFRQUy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5zdWJzdHIoMSwgIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5zdWJzdHIoMSwgIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NsdXN0ZXJpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DbHVzdGVyaW5nLmh0bWwiLnN1YnN0cigxLCAiL0NsdXN0ZXJpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvR2V0VmVyc2lvbkluZm8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9HZXRWZXJzaW9uSW5mby5odG1sIi5zdWJzdHIoMSwgIi9HZXRWZXJzaW9uSW5mby5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkgICAgCQkJCQkKKyAgICAJCQkJCWN1cnJlbnRMaW5rID0gY3VycmVudExpbmsudG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCWN1cnJlbnRMb2NhdGlvbiA9IGN1cnJlbnRMb2NhdGlvbi50b0xvd2VyQ2FzZSgpOworICAgIAkJCQkJCisJCQkJCQlyZXR1cm4gc2lkZUJhckxhc3RTdHJpbmcgPT0gY3VycmVudExpbmsrIiMiK2N1cnJlbnRMb2NhdGlvbjsKKwkJCQkJfQorCQkJCX0pOworCQkJfSk7CisJCQk8L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCQkJCSQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgeworCQkJCQkkKCcuZmFuY3lib3gtYnV0dG9ucycpLmNvbG9yYm94KHtyZWw6J2ZhbmN5Ym94LWJ1dHRvbnMnLHdpZHRoOiI3NSUiLCBoZWlnaHQ6Ijc1JSJ9KTsKKwkJCQkJJCgnI2FjY29yZGlvbiBhJykuZWFjaChmdW5jdGlvbigpIHsKKwkJCQkgICAgICB2YXIgYSA9ICQodGhpcyk7CisJCQkJICAgICAgdmFyIGhyZWYgPSBhLmF0dHIoImhyZWYiKTsKKwkJCQkgICAgICBpZiAoaHJlZi5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkgICAgICAJICB2YXIgY29tcGFyZUl0ID0gaHJlZi5zdWJzdHIoMiwgaHJlZi5sZW5ndGgpOworCQkJCQkgICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKGNvbXBhcmVJdCkhPSAtMSkgeworCQkJCQkgICAgICAgYS5hZGRDbGFzcygnYWN0aXZlJyk7CisJCQkJCSAgICAgIH0KKwkJCQkgICAgICB9CisJCQkJICAgIH0pOworCQkJCQkkKCcjY29pbi1zbGlkZXInKS5jb2luc2xpZGVyKHsgd2lkdGg6IDY0MCxoZWlnaHQ6IDQwMCwgZGVsYXk6IDQwMDAgIH0pOwkJCQkJCisJCQkJfSk7CisJCQk8L3NjcmlwdD4JCisJCQkJCQkKKwkJCTxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisJCQkJLmZhbmN5Ym94LWN1c3RvbSAuZmFuY3lib3gtb3V0ZXIgeworCQkJCQlib3gtc2hhZG93OiAwIDAgNTBweCAjMjIyOworCQkJCX0KKwkJCTwvc3R5bGU+CisgICAgICAgIDwvaGVhZD4KKworICAgICAgICA8Ym9keSBiZ2NvbG9yPSIjZmZmZmZmIiB0ZXh0PSIjMDAwMDAwIiBsaW5rPSIjMTIzNDY1IiB2bGluaz0iIzEyMzQ2NSIgYWxpbms9IiMwMDAwMDAiPiAgCisgICAgICAgIAk8ZGl2IGNsYXNzPSJtYWluYm9keSIgc3R5bGU9IndpZHRoOiAxMDAlOyI+CisgICAgICAgIAk8ZGl2IGNsYXNzPSJzdXBlcmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIj4KKyAgICAgICAgICAgICAgICA8IS0tIFRPUCBJTUFHRSAtLT4KKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCI+Cis8YSBocmVmPSJodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvIj48aW1nIHNyYz0iLi9pbWFnZXMvbG9nby0yLmpwZyIgYWx0PSJBcGFjaGUgT3Blbk1lZXRpbmdzIiBib3JkZXI9IjAiLz48L2E+Cis8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCIgPgorCTxhIGhyZWY9ImRlbW8uaHRtbCI+RGVtbzwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJkb3dubG9hZHMuaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5Eb3dubG9hZDwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJpbnN0YWxsYXRpb24uaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5JbnN0YWxsYXRpb248L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MiIHRhcmdldD0iX0JMQU5LIj5XaWtpPC9hPgorCTxzcGFuPiZuYnNwOzwvc3Bhbj4KKzwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjQiPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8IS0tIExFRlQgU0lERSBOQVZJR0FUSU9OIC0tPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiIG5vd3JhcD0ibm93cmFwIj4KKworICAgICAgICAgICAgICAgICAgICA8IS0tIHNwZWNpYWwgQUNvbiBMb2dvIC0gbGVhdmUgaGVyZSBmb3IgbmV4dCB0aW1lCisgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9hcGFjaGVjb24uY29tLzIwMDUvVVMvIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vYXBhY2hlLm9yZy9pbWFnZXMvYWMyMDA1dXNfYmx1ZV8xMjV4MTI1LmpwZyIgaGVpZ2h0PSIxMjUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPSIxMjUiIGJvcmRlcj0iMCIgYWx0PSJBcGFjaGVDb24gVVMgMjAwNSIgLz4KKyAgICAgICAgICAgICAgICAgICAgPC9hPiAgLS0+CisKKyAgICAgICAgICAgICAgICAgICA8IS0tIHJlZ3VsYXIgbWVudSAtLT4KKworICAgICAgICAgICAgICAgICAgICAKKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8ZGl2IGlkPSJhY2NvcmRpb24iIHN0eWxlPSJ3aWR0aDogMTAwJSI+CisgICAgCisgICAgICAgICAgICAJPGgzPjxhIGhyZWY9IiNHZW5lcmFsIj5HZW5lcmFsPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9pbmRleC5odG1sIj5Ib21lPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9saWNlbnNlLmh0bWwiPkxpY2Vuc2U8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5BU0Y8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2Rvd25sb2Fkcy5odG1sIj5Eb3dubG9hZHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIj5Db21tZXJjaWFsIFN1cHBvcnQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0luc3RhbGxhdGlvbmFuZFVwZ3JhZGUiPkluc3RhbGxhdGlvbiBhbmQgVXBncmFkZTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5zdGFsbGF0aW9uLmh0bWwiPkluc3RhbGxhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vVXBncmFkZS5odG1sIj5VcGdyYWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLmh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIj5UdXRvcmlhbHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCI+Q29tbWFuZCBMaW5lIEFkbWluPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb21tdW5pdHkiPkNvbW11bml0eTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZ2V0LWludm9sdmVkLmh0bWwiPkdldCBJbnZvbHZlZDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdGVhbS1saXN0Lmh0bWwiPkNvbW1pdHRlcnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL21haWwtbGlzdHMuaHRtbCI+TWFpbGluZyBMaXN0czwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIj5XaWtpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNEZXZlbG9wbWVudCI+RGV2ZWxvcG1lbnQ8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3N2bi5odG1sIj5Tb3VyY2UgQ29kZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiPkJ1Z3MgLyBJc3N1ZXMgKEpJUkEpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kZXBlbmRlbmNpZXMuaHRtbCI+RGVwZW5kZW5jaWVzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CdWlsZEluc3RydWN0aW9ucy5odG1sIj5CdWlsZCBJbnN0cnVjdGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pVbml0VGVzdGluZy5odG1sIj5KVW5pdCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9NYW51YWxUZXN0aW5nLmh0bWwiPk1hbnVhbCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWxlYXNlR3VpZGUuaHRtbCI+UmVsZWFzZSBHdWlkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vV2Vic2l0ZUd1aWRlLmh0bWwiPldlYnNpdGUgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0ludGVncmF0aW9uIj5JbnRlZ3JhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU29hcFJlc3RBUEkuaHRtbCI+U09BUC9SRVNUIEFQSTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVzdEFQSVNhbXBsZS5odG1sIj5SRVNUIEFQSSBTYW1wbGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0xkYXBBbmRBRFMuaHRtbCI+TGRhcCBhbmQgQURTPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIj5Wb0lQIGFuZCBTSVA8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0Vycm9yc1RhYmxlLmh0bWwiPkVycm9ycyB0YWJsZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjUGx1Z2lucyI+UGx1Z2luczwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTW9vZGxlUGx1Z2luLmh0bWwiPk1vb2RsZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Nha2FpUGx1Z2luLmh0bWwiPlNha2FpIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSmlyYVBsdWdpbi5odG1sIj5KaXJhIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSm9vbWxhUGx1Z2luLmh0bWwiPkpvb21sYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0RydXBhbFBsdWdpbi5odG1sIj5EcnVwYWwgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CaXRyaXhQbHVnaW4uaHRtbCI+Qml0cml4IFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQ29uZmx1ZW5jZVBsdWdpbi5odG1sIj5Db25mbHVlbmNlIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU3VnYXJDUk1QbHVnaW4uaHRtbCI+U3VnYXJDUk0gUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWRtaW5lUGx1Z2luLmh0bWwiPlJlZG1pbmUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb25maWd1cmF0aW9uIj5Db25maWd1cmF0aW9uPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5EQiBTYW1wbGUgQ29uZmlndXJhdGlvbnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIj5BcGFjaGUgRGVyYnk8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0lCTURCMkNvbmZpZy5odG1sIj5JQk0gREIyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcmFjbGVDb25maWcuaHRtbCI+T3JhY2xlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9NeVNRTENvbmZpZy5odG1sIj5NeVNRTDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9zdGdyZXNDb25maWcuaHRtbCI+UG9zdGdyZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkxvY2FsaXphdGlvbiBhbmQgbGFuZ3VhZ2VzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCI+SW50ZXJuYXRpb25hbGlzYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0xhbmd1YWdlRWRpdG9yLmh0bWwiPkxhbmd1YWdlRWRpdG9yPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiPlRpbWVab25lSGFuZGxpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0VkaXRUZW1wbGF0ZXMuaHRtbCI+RWRpdFRlbXBsYXRlczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TkFUIFBvcnQgU2V0dGluZ3M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Qb3J0U2V0dGluZ3MuaHRtbCI+UG9ydCBzZXR0aW5nczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+UGVyZm9ybWFuY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIj5KVk0gcGVyZm9ybWFuY2UgdHVuaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Vc2VyIEludGVyZmFjZTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCI+VGhlbWVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9EYXNoYm9hcmQuaHRtbCI+RGFzaGJvYXJkPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIj5XZWJjYW0gcmVzb2x1dGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIj5Sb29tIGxheW91dCBvcHRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Ib3RLZXlzLmh0bWwiPkhvdCBLZXlzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5DdXN0b21pemF0aW9uPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViYXBwTmFtZVBhdGguaHRtbCI+V2ViYXBwIG5hbWUvcGF0aDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTmF2aWdhdGlvbi5odG1sIj5OYXZpZ2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiPkNhbGVuZGFyIGFuZCB0aW1lem9uZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIj5DdXN0b20gcm9vbSB0eXBlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIj5DdXN0b20gY3R5cHQgbWVjaGFuaXNtPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIj5HZW5lcmFsIENvbmZpZ3VyYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlNlY3VyaXR5PC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUmVzdHJpY3RlZEFjY2Vzcy5odG1sIj5SZXN0cmljdGVkIEFjY2VzczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUlRNUFNBbmRIVFRQUy5odG1sIj5SVE1QUyBhbmQgSFRUUFM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNvbnZlcnRlcnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiPk9wZW5PZmZpY2UgQ29udmVydGVyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiPkZGTVBFRyBWZXJzaW9uIFN3aXRjaDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q2x1c3RlcmluZzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NsdXN0ZXJpbmcuaHRtbCI+Q2x1c3RlcmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TWlzYzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0dldFZlcnNpb25JbmZvLmh0bWwiPkdldCB2ZXJzaW9uIGluZm88L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAorICAgIDwvZGl2PgorICAgICAKKyAgICA8YnIvPgorICAgIAorICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJVcGdyYWRpbmcgT3Blbk1lZXRpbmdzIHZpYSB0aGUgV2ViLUludGVyZmFjZSI+PHN0cm9uZz5VcGdyYWRpbmcgT3Blbk1lZXRpbmdzIHZpYSB0aGUgV2ViLUludGVyZmFjZTwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgICA8aHIgc3R5bGU9IndpZHRoOjEwMCU7IGNvbG9yOiM5OTk5OTk7IGJhY2tncm91bmQtY29sb3I6Izk5OTk5OTsgaGVpZ2h0OjFweDsgYm9yZGVyOjBweDsiLz4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+VGhlcmUgaXMgYSBTeXN0ZW0gQmFja3VwIGFuZCBJbXBvcnQgdG9vbC4gTG9naW4gYXMgQWRtaW5pc3RyYXRvcg0KKwkJCQlhbmQgR290byAmZ3Q7IEJhY2t1cA0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGNsYXNzPSJmYW5jeWJveC1idXR0b25zIiBocmVmPSJpbWFnZXMvYmFja3VwLnBuZyI+DQorCQkJCTxpbWcgc3JjPSJpbWFnZXMvYmFja3VwLnBuZyIgYWx0PSIiIHdpZHRoPSI2MDAiIGhlaWdodD0iMTQ1IiAvPg0KKwkJCTwvYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQlUaGUgVGV4dCBpbiB0aGUgQWRtaW5pc3RyYXRpb24mZ3Q7QmFja3VwIHNlY3Rpb24gYWN0dWFsbHkganVzdCBzYXlzDQorCQkJCWl0DQorCQkJCWFsbC4gVGhlIGJhY2t1cCBjb250YWlucyB1c2Vycywgcm9vbXMsIG9yZ2FuaXphdGlvbnMgYW5kDQorCQkJCWFwcG9pbnRlbWVudHMgKEludml0YXRpb25zIGFuZCBSZW1pbmRlcnMgYXJlIE5PVCBpbmNsdWRlZCBpbiB0aGUNCisJCQkJQmFja3VwIGFuZCBSZW1pbmRlcnMgd2lsbCBub3QgYmUgc2VuZCBhZ2FpbiEpLiBUaGUgQmFja3VwIGNvbnRhaW5zDQorCQkJCWFsc28gYWxsIHVwbG9hZGVkIEZpbGVzIGFuZCBEb2N1bWVudHMgYW5kIHdpbGwgcmUtaW1wb3J0IHRoZW0gYWdhaW4uDQorDQorCQkJCU1heCBVcGxvYWQgU2l6ZSBpcyAxMDAwIE1CLg0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkID48IS0tIGJnY29sb3I9IiNFRUVFRUUiIC0tPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0idmVyZGFuYSxhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IlVwZ3JhZGluZyBPcGVuTWVldGluZ3MgZnJvbSBjb21tYW5kIGxpbmUiPjxzdHJvbmc+VXBncmFkaW5nIE9wZW5NZWV0aW5ncyBmcm9tIGNvbW1hbmQgbGluZTwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgICA8aHIgc3R5bGU9IndpZHRoOjEwMCU7IGNvbG9yOiM5OTk5OTk7IGJhY2tncm91bmQtY29sb3I6Izk5OTk5OTsgaGVpZ2h0OjFweDsgYm9yZGVyOjBweDsiLz4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQorCQkJCTxpPllvdSBuZWVkIE9wZW5NZWV0aW5ncyAyLnggb3IgbGF0ZXIgdG8gaGF2ZSB0aGUgY29tbWFuZCBsaW5lIGludGVyZmFjZSAoQ0xJKSANCisJCQkJCWZlYXR1cmUgYXZhaWxhYmxlDQorCQkJCTwvaT4NCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJQWx0ZXJuYXRpdmVseSB0byB0aGUgV2ViLUluc3RhbGxlciB5b3UgY2FuIGFsc28gZXhwb3J0IGFuZCBpbXBvcnQNCisJCQkJdmlhIHRoZSBjb21tYW5kIGxpbmUuIDxiciAvPg0KKwkJCQk8Yj5Zb3Ugc2hvdWxkIHNodXRkb3duIHRoZSBSZWQ1LVNlcnZpY2Ugd2hpbGUgZG9pbmcgQ0xJIGV4cG9ydCBvciBpbXBvcnQgb3BlcmF0aW9uczwvYj4NCisJCQkJPGJyIC8+DQorCQkJCUNkIHRvIHlvdXIgcmVkNS1ob21lIGRpcmVjdG9yeSwgdHlwZSAiYWRtaW4iIGFuZCBoaXQgZW50ZXIuIFlvdSB3aWxsDQorCQkJCWdldCBvcHRpb25zIGF2YWlsYWJsZS4NCisJCQkJPGJyIC8+DQorCQkJCTxiciAvPg0KKwkJCQlBIHR5cGljYWwgZXhwb3J0IHdvdWxkIGJlOg0KKwkJCQk8YnIgLz4NCisJCQkJPHR0PmFkbWluIC1iIC1maWxlIGJhY2t1cF90b2RheS56aXA8L3R0Pg0KKwkJCQk8YnIgLz4NCisJCQkJPGJyIC8+DQorCQkJCUEgdHlwaWNhbCBpbXBvcnQgd291bGQgYmU6DQorCQkJCTxiciAvPg0KKwkJCQk8dHQ+YWRtaW4gLXIgLWZpbGUgYmFja3VwX3llc3RlcmRheS56aXA8L3R0Pg0KKwkJCQk8YnIgLz4NCisJCQkJPGJyIC8+DQorCQkJCVlvdSBjYW4gYWxzbyBjb21iaW5lIHRoZSBpbnN0YWxsYXRpb24gd2l0aCBhIGJhY2t1cCwgdGhhdCB3YXkgeW91DQorCQkJCXdpbGwgY3JlYXRlIGV4YWN0bHkgdGhlIHVzZXIgdGFibGUgdGhhdCBleGlzdGVkIGluIHRoZSBiYWNrdXAuDQorCQkJCTxiciAvPg0KKwkJCQlBIHR5cGljYWwgaW5zdGFsbCBmcm9tIGJhY2t1cCB3b3VsZCBiZToNCisJCQkJPGJyIC8+DQorCQkJCTx0dD5hZG1pbiAtaSAtZmlsZSBiYWNrdXBfeWVzdGVyZGF5LnppcDwvdHQ+DQorCQkJCTxiciAvPg0KKwkJCQlwbGVhc2Ugc2VlDQorCQkJCTxhIGhyZWY9IkNvbW1hbmRMaW5lQWRtaW4uaHRtbCIgdGFyZ2V0PSJfQkxBTksiIHJlbD0ibm9mb2xsb3ciPkNvbW1hbmQgTGluZSBBZG1pbg0KKwkJCQk8L2E+DQorCQkJCWZvciBtb3JlIG9wdGlvbnMNCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDwhLS0gRk9PVEVSIC0tPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgYWxpZ249ImNlbnRlciI+PGZvbnQgY29sb3I9IiMxMjM0NjUiIHNpemU9Ii0xIj48ZW0+CisgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAmIzE2OTsgMjAwMy0yMDEzLCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyAgICAgICAgICAgICAgICAgICAgPC9lbT48L2ZvbnQ+PC9kaXY+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvYm9keT4KKyAgICA8L2h0bWw+Cis8IS0tIGVuZCB0aGUgcHJvY2Vzc2luZyAtLT4KKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKwpkaWZmIC0tZ2l0IGEvZG9jcy9Vc2VyU2VydmljZS5odG1sIGIvZG9jcy9Vc2VyU2VydmljZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0ZDE4MTEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL1VzZXJTZXJ2aWNlLmh0bWwKQEAgLTAsMCArMSwyMzM0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4NCis8IS0tDQorQ29weXJpZ2h0IDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24NCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorDQoraHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorDQorVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKy0tPg0KKw0KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+DQorICAgIDwhLS0gR0VORVJBVEVEIEZJTEUsIERPIE5PVCBFRElULCBFRElUIFRIRSBURU1QTEFURSBJTlNURUFEISAtLT4NCisgICAgPCEtLSBNYWluIFBhZ2UgU2VjdGlvbiAtLT4NCisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPg0KKyAgICANCisgICAgIDxodG1sPg0KKyAgICAgICAgPGhlYWQ+DQorCQk8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIi8+DQorCQk8bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9Ik9wZW5NZWV0aW5ncyBUZWFtIj4NCisJCTxtZXRhIG5hbWU9ImVtYWlsIiBjb250ZW50PSJzZWJhd2FnbmVyQGFwYWNoZS5vcmciPg0KKwkJPHRpdGxlPk9wZW5NZWV0aW5ncyBBUEkgTWV0aG9kczwvdGl0bGU+DQorCQk8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJvcGVubWVldGluZ3NfZG9jcy5jc3MiPg0KKyAgICAgICAgPC9oZWFkPg0KKwk8Ym9keT4NCisJDQorCQk8aDM+QXZhaWxhYmxlIFdlYlNlcnZpY2VzOjwvaDM+DQorCQ0KKwkJPGlmcmFtZSBzcmM9IldlYnNlcnZpY2VJbmRleC5odG1sIiB3aWR0aD0iMTAwJSIgaGVpZ2h0PSIyMTAiIG5hbWU9IldlYnNlcnZpY2VJbmRleC5odG1sIg0KKwkJCXNjcm9sbGluZz0ibm8iIG1hcmdpbmhlaWdodD0iMCIgbWFyZ2lud2lkdGg9IjAiIGZyYW1lYm9yZGVyPSIwIj4NCisJCSAgPHA+WW91ciBCcm93c2VyIGRvZXMgbm90IHN1cHBvcnQgZnJhbWVzIC4uLjwvcD4NCisJCTwvaWZyYW1lPg0KKwkJDQorCQk8aHIgLz4NCisJDQorCSAgIDxoMz5XZWJTZXJ2aWNlOiBVc2VyU2VydmljZTwvaDM+DQorCSAgIDxwPlRoZSBTZXJ2aWNlIGNvbnRhaW5zIG1ldGhvZHMgdG8gbG9naW4gYW5kIGNyZWF0ZSBoYXNoIHRvIGRpcmVjdGx5IGVudGVyCisgY29uZmVyZW5jZSByb29tcywgcmVjb3JkaW5ncyBvciB0aGUgYXBwbGljYXRpb24gaW4gZ2VuZXJhbDxwPg0KKwkgICA8cD5XU0RMIHNhbXBsZSBVcmw6IDxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvVXNlclNlcnZpY2U/d3NkbCI+aHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Vc2VyU2VydmljZT93c2RsPC9hPjxwPg0KKwkNCisJPCEtLSBMaW5rcyB0byBNZXRob2RzIC0tPg0KKwkgICA8aDM+SW5kZXggb2YgTWV0aG9kcyBhdmFpbGFibGUgaW4gVXNlclNlcnZpY2U8L2gzPg0KKwkgICANCisgICAgICAgPGRpdiBjbGFzcz0ibmF2aWdhdGlvbiI+DQorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ2V0U2Vzc2lvbiI+PGI+Z2V0U2Vzc2lvbjwvYj48L2E+PGJyLz4NCisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2aWdhdGlvbl9jb21tZW50Ij48aSA+bG9hZCB0aGlzIHNlc3Npb24gaWQgYmVmb3JlIGRvaW5nIGFueXRoaW5nIGVsc2UgUmV0dXJucyBhbiBPYmplY3Qgb2YgVHlwZQorIFNlc3Npb25kYXRhLCB0aGlzIGNvbnRhaW5zIGEgc2Vzc2lvbklkLCB1c2UgdGhhdCBzZXNzaW9uSWQgaW4gYWxsIE1ldGhvZHM8L2k+PC9kaXY+DQorICAgICAgICAgICAgICAgIDwvZGl2Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2xvZ2luVXNlciI+PGI+bG9naW5Vc2VyPC9iPjwvYT48YnIvPg0KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uX2NvbW1lbnQiPjxpID51dGggZnVuY3Rpb24sIHVzZSB0aGUgU0lEIHlvdSBnZXQgYnkgZ2V0U2Vzc2lvbiwgcmV0dXJuIHBvc2l0aXZlIG1lYW5zCisgbG9nZ2VkLWluLCBpZiBuZWdhdGl2ZSBpdHMgYW4gRXJyb3JDb2RlLCB5b3UgaGF2ZSB0byBpbnZva2UgdGhlIE1ldGhvZAorIGdldEVycm9yQnlDb2RlIHRvIGdldCB0aGUgVGV4dC1EZXNjcmlwdGlvbiBvZiB0aGF0IEVycm9yQ29kZTwvaT48L2Rpdj4NCisgICAgICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ2V0RXJyb3JCeUNvZGUiPjxiPmdldEVycm9yQnlDb2RlPC9iPjwvYT48YnIvPg0KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uX2NvbW1lbnQiPjxpID5sb2FkcyBhbiBFcnJvci1PYmplY3QuIElmIGEgTWV0aG9kIHJldHVybnMgYSBuZWdhdGl2ZSBSZXN1bHQsIGl0cyBhbgorIEVycm9yLWlkLCBpdCBuZWVkcyBhIGxhbmd1YWdlX2lkIHRvIHNwZWNpZnkgaW4gd2hpY2ggbGFuZ3VhZ2UgeW91IHdhbnQgdG8KKyBkaXNwbGF5L3JlYWQgdGhlIGVycm9yLW1lc3NhZ2UuIEVuZ2xpc2ggaGFzIHRoZSBMYW5ndWFnZS1JRCBvbmUsIGZvcgorIGRpZmZlcmVudCBvbmUgc2VlIHRoZSBsaXN0IG9mIGxhbmd1YWdlczwvaT48L2Rpdj4NCisgICAgICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIjYWRkTmV3VXNlciI+PGI+YWRkTmV3VXNlcjwvYj48L2E+PGJyLz4NCisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2aWdhdGlvbl9jb21tZW50Ij48aSA+QWRkcyBhIG5ldyBVc3JlIGxpa2UgdGhyb3VnaCB0aGUgRnJvbnRlbmQsIGJ1dCBhbHNvIGRvZXMgYWN0aXZhdGVzIHRoZQorIEFjY291bnQgVG8gZG8gU1NPIHNlZSB0aGUgbWV0aG9kcyB0byBjcmVhdGUgYSBoYXNoIGFuZCB1c2UgdGhvc2Ugb25lcyE8L2k+PC9kaXY+DQorICAgICAgICAgICAgICAgIDwvZGl2Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2FkZE5ld1VzZXJXaXRoVGltZVpvbmUiPjxiPmFkZE5ld1VzZXJXaXRoVGltZVpvbmU8L2I+PC9hPjxici8+DQorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb25fY29tbWVudCI+PGkgPkFkZHMgYSBuZXcgVXNlciBsaWtlIHRocm91Z2ggdGhlIEZyb250ZW5kLCBidXQgYWxzbyBkb2VzIGFjdGl2YXRlcyB0aGUKKyBBY2NvdW50PC9pPjwvZGl2Pg0KKyAgICAgICAgICAgICAgICA8L2Rpdj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNhZGROZXdVc2VyV2l0aEV4dGVybmFsVHlwZSI+PGI+YWRkTmV3VXNlcldpdGhFeHRlcm5hbFR5cGU8L2I+PC9hPjxici8+DQorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb25fY29tbWVudCI+PGkgPkFkZHMgYSBuZXcgVXNlciBsaWtlIHRocm91Z2ggdGhlIEZyb250ZW5kLCBidXQgYWxzbyBkb2VzIGFjdGl2YXRlcyB0aGUKKyBBY2NvdW50LCBzZW5kcyBOTyBlbWFpbCAobm8gbWF0dGVyIHdoYXQgeW91IGNvbmZpZ3VyZWQpIGFuZCBzZXRzIHRoZQorIHVzZXJzIGV4dGVybmFsIHVzZXIgaWQgYW5kIHR5cGUKKyAKKyBVc2UgdGhlIG1ldGhvZHMgdG8gY3JlYXRlIGEgaGFzaCBmb3IgU1NPLCBjcmVhdGluZyB1c2VycyBpcyBub3QgcmVxdWlyZWQKKyBmb3IgU1NPPC9pPjwvZGl2Pg0KKyAgICAgICAgICAgICAgICA8L2Rpdj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNkZWxldGVVc2VyQnlJZCI+PGI+ZGVsZXRlVXNlckJ5SWQ8L2I+PC9hPjxici8+DQorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb25fY29tbWVudCI+PGkgPkRlbGV0ZSBhIGNlcnRhaW4gdXNlciBieSBpdHMgaWQ8L2k+PC9kaXY+DQorICAgICAgICAgICAgICAgIDwvZGl2Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2RlbGV0ZVVzZXJCeUV4dGVybmFsVXNlcklkQW5kVHlwZSI+PGI+ZGVsZXRlVXNlckJ5RXh0ZXJuYWxVc2VySWRBbmRUeXBlPC9iPjwvYT48YnIvPg0KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uX2NvbW1lbnQiPjxpID5EZWxldGUgYSBjZXJ0YWluIHVzZXIgYnkgaXRzIGV4dGVybmFsIHVzZXIgaWQ8L2k+PC9kaXY+DQorICAgICAgICAgICAgICAgIDwvZGl2Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NldFVzZXJPYmplY3QiPjxiPnNldFVzZXJPYmplY3Q8L2I+PC9hPjxici8+DQorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb25fY29tbWVudCI+PGkgPmRlcHJlY2F0ZWQgdXNlIHNldFVzZXJPYmplY3RBbmRHZW5lcmF0ZVJvb21IYXNoCisgCisgRGVzY3JpcHRpb246IHNldHMgdGhlIFNlc3Npb25PYmplY3QgZm9yIGEgY2VydGFpbiBTSUQsIGFmdGVyIHNldHRpbmcgdGhpcworIFNlc3Npb24tT2JqZWN0IHlvdSBjYW4gdXNlIHRoZSBTSUQgKyBhIFJvb21JZCB0byBlbnRlciBhbnkgUm9vbS48L2k+PC9kaXY+DQorICAgICAgICAgICAgICAgIDwvZGl2Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NldFVzZXJPYmplY3RXaXRoRXh0ZXJuYWxVc2VyIj48Yj5zZXRVc2VyT2JqZWN0V2l0aEV4dGVybmFsVXNlcjwvYj48L2E+PGJyLz4NCisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2aWdhdGlvbl9jb21tZW50Ij48aSA+ZGVwcmVjYXRlZCB1c2Ugc2V0VXNlck9iamVjdEFuZEdlbmVyYXRlUm9vbUhhc2gKKyAKKyBEZXNjcmlwdGlvbjogc2V0cyB0aGUgU2Vzc2lvbk9iamVjdCBmb3IgYSBjZXJ0YWluIFNJRCwgYWZ0ZXIgc2V0dGluZyB0aGlzCisgU2Vzc2lvbi1PYmplY3QgeW91IGNhbiB1c2UgdGhlIFNJRCArIGEgUm9vbUlkIHRvIGVudGVyIGFueSBSb29tLjwvaT48L2Rpdj4NCisgICAgICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIjc2V0VXNlck9iamVjdEFuZEdlbmVyYXRlUm9vbUhhc2giPjxiPnNldFVzZXJPYmplY3RBbmRHZW5lcmF0ZVJvb21IYXNoPC9iPjwvYT48YnIvPg0KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uX2NvbW1lbnQiPjxpID5EZXNjcmlwdGlvbjogc2V0cyB0aGUgU2Vzc2lvbk9iamVjdCBmb3IgYSBjZXJ0YWluIFNJRCwgYWZ0ZXIgc2V0dGluZyB0aGlzCisgU2Vzc2lvbi1PYmplY3QgeW91IGNhbiB1c2UgdGhlIFNJRCArIGEgUm9vbUlkIHRvIGVudGVyIGFueSBSb29tLiAuLi4KKyBTZXNzaW9uLUhhc2hzIGFyZSBkZWxldGVkIDE1IG1pbnV0ZXMgYWZ0ZXIgdGhlIGNyZWF0aW9uIGlmIG5vdCB1c2VkLjwvaT48L2Rpdj4NCisgICAgICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIjc2V0VXNlck9iamVjdEFuZEdlbmVyYXRlUm9vbUhhc2hCeVVSTCI+PGI+c2V0VXNlck9iamVjdEFuZEdlbmVyYXRlUm9vbUhhc2hCeVVSTDwvYj48L2E+PGJyLz4NCisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2aWdhdGlvbl9jb21tZW50Ij48aSA+RGVzY3JpcHRpb246IHNldHMgdGhlIFNlc3Npb25PYmplY3QgZm9yIGEgY2VydGFpbiBTSUQsIGFmdGVyIHNldHRpbmcgdGhpcworIFNlc3Npb24tT2JqZWN0IHlvdSBjYW4gdXNlIHRoZSBTSUQgKyBhIFJvb21JZCB0byBlbnRlciBhbnkgUm9vbS4KKyAKKyArKyB0aGUgdXNlciBjYW4gcHJlc3MgZjUgdG8gcmVsb2FkIHRoZSBwYWdlIC8gdXNlIHRoZSBsaW5rIHNldmVyYWwgdGltZXMsCisgdGhlIFNPQVAgR2F0ZXdheSBkb2VzIHJlbWVtYmVyIHRoZSBJUCBvZiB0aGUgdXNlciBhbmQgdGhlIHdpbGwgb25seSB0aGUKKyBmaXJzdCB1c2VyIHRoYXQgZW50ZXJzIHRoZSByb29tIGFsbG93IHRvIHJlLWVudGVyLiAuLi4gU2Vzc2lvbi1IYXNocyBhcmUKKyBkZWxldGVkIDE1IG1pbnV0ZXMgYWZ0ZXIgdGhlIGNyZWF0aW9uIGlmIG5vdCB1c2VkLjwvaT48L2Rpdj4NCisgICAgICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIjc2V0VXNlck9iamVjdEFuZEdlbmVyYXRlUm9vbUhhc2hCeVVSTEFuZFJlY0ZsYWciPjxiPnNldFVzZXJPYmplY3RBbmRHZW5lcmF0ZVJvb21IYXNoQnlVUkxBbmRSZWNGbGFnPC9iPjwvYT48YnIvPg0KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uX2NvbW1lbnQiPjxpID5EZXNjcmlwdGlvbjogc2V0cyB0aGUgU2Vzc2lvbk9iamVjdCBmb3IgYSBjZXJ0YWluIFNJRCwgYWZ0ZXIgc2V0dGluZyB0aGlzCisgU2Vzc2lvbi1PYmplY3QgeW91IGNhbiB1c2UgdGhlIFNJRCArIGEgUm9vbUlkIHRvIGVudGVyIGFueSBSb29tLgorIAorICsrIHRoZSB1c2VyIGNhbiBwcmVzcyBmNSB0byByZWxvYWQgdGhlIHBhZ2UgLyB1c2UgdGhlIGxpbmsgc2V2ZXJhbCB0aW1lcywKKyB0aGUgU09BUCBHYXRld2F5IGRvZXMgcmVtZW1iZXIgdGhlIElQIG9mIHRoZSB1c2VyIGFuZCB0aGUgd2lsbCBvbmx5IHRoZQorIGZpcnN0IHVzZXIgdGhhdCBlbnRlcnMgdGhlIHJvb20gYWxsb3cgdG8gcmUtZW50ZXIuIC4uLiBTZXNzaW9uLUhhc2hzIGFyZQorIGRlbGV0ZWQgMTUgbWludXRlcyBhZnRlciB0aGUgY3JlYXRpb24gaWYgbm90IHVzZWQuCisgCisgKysgc2V0cyB0aGUgZmxhZyBpZiB0aGUgdXNlciBjYW4gZG8gcmVjb3JkaW5nIGluIHRoZSBjb25mZXJlbmNlIHJvb208L2k+PC9kaXY+DQorICAgICAgICAgICAgICAgIDwvZGl2Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NldFVzZXJPYmplY3RNYWluTGFuZGluZ1pvbmUiPjxiPnNldFVzZXJPYmplY3RNYWluTGFuZGluZ1pvbmU8L2I+PC9hPjxici8+DQorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb25fY29tbWVudCI+PGkgPkRlc2NyaXB0aW9uOiBzZXRzIHRoZSBTZXNzaW9uT2JqZWN0IGZvciBhIGNlcnRhaW4gU0lELCBhZnRlciBzZXR0aW5nIHRoaXMKKyBTZXNzaW9uLU9iamVjdCB5b3UgY2FuIHVzZSB0aGUgU0lEIGFuZCBkaXJlY3RseSBsb2dpbiBpbnRvIHRoZSBkYXNoYm9hcmQKKyAKKyArKyB0aGUgdXNlciBjYW4gcHJlc3MgZjUgdG8gcmVsb2FkIHRoZSBwYWdlIC8gdXNlIHRoZSBsaW5rIHNldmVyYWwgdGltZXMsCisgdGhlIFNPQVAgR2F0ZXdheSBkb2VzIHJlbWVtYmVyIHRoZSBJUCBvZiB0aGUgdXNlciBhbmQgdGhlIHdpbGwgb25seSB0aGUKKyBmaXJzdCB1c2VyIHRoYXQgZW50ZXJzIHRoZSByb29tIGFsbG93IHRvIHJlLWVudGVyLiAuLi4gU2Vzc2lvbi1IYXNocyBhcmUKKyBkZWxldGVkIDE1IG1pbnV0ZXMgYWZ0ZXIgdGhlIGNyZWF0aW9uIGlmIG5vdCB1c2VkLjwvaT48L2Rpdj4NCisgICAgICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIjc2V0VXNlckFuZE5pY2tOYW1lIj48Yj5zZXRVc2VyQW5kTmlja05hbWU8L2I+PC9hPjxici8+DQorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb25fY29tbWVudCI+PGkgPkRlc2NyaXB0aW9uOiBzZXRzIHRoZSBTZXNzaW9uT2JqZWN0IGZvciBhIGNlcnRhaW4gU0lELCBhZnRlciBzZXR0aW5nIHRoaXMKKyBTZXNzaW9uLU9iamVjdCB5b3UgY2FuIHVzZSB0aGUgU0lEICsgYSBSb29tSWQgdG8gZW50ZXIgYW55IFJvb20uCisgCisgKysgdGhlIHVzZXIgY2FuIHByZXNzIGY1IHRvIHJlbG9hZCB0aGUgcGFnZSAvIHVzZSB0aGUgbGluayBzZXZlcmFsIHRpbWVzLAorIHRoZSBTT0FQIEdhdGV3YXkgZG9lcyByZW1lbWJlciB0aGUgSVAgb2YgdGhlIHVzZXIgYW5kIHRoZSB3aWxsIG9ubHkgdGhlCisgZmlyc3QgdXNlciB0aGF0IGVudGVycyB0aGUgcm9vbSBhbGxvdyB0byByZS1lbnRlci4gLi4uIFNlc3Npb24tSGFzaHMgYXJlCisgZGVsZXRlZCAxNSBtaW51dGVzIGFmdGVyIHRoZSBjcmVhdGlvbiBpZiBub3QgdXNlZC4KKyAKKyArKyBBZGRpdGlvbmFsbHkgeW91IGNhbiBzZXQgYSBwYXJhbSBzaG93Tmlja05hbWVEaWFsb2dBc0ludCwgdGhlIGVmZmVjdAorIGlmIHRoYXQgcGFyYW0gaXMgMSBpcywgdGhhdCB0aGUgdXNlciBnZXRzIGEgcG9wdXAgd2hlcmUgaGUgY2FuIGVudGVyIGhpcworIG5pY2tuYW1lIHJpZ2h0IGJlZm9yZSBoZSBlbnRlcnMgdGhlIGNvbmZlcmVuY2Ugcm9vbS4gQWxsIG5pY2tuYW1lcyBhbmQKKyBlbWFpbHMgdXNlcnMgZW50ZXIgYXJlIGxvZ2dlZCBpbiB0aGUgY29uZmVyZW5jZWxvZyB0YWJsZS48L2k+PC9kaXY+DQorICAgICAgICAgICAgICAgIDwvZGl2Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICAgICAgPGEgaHJlZj0iI3NldFVzZXJPYmplY3RBbmRHZW5lcmF0ZVJlY29yZGluZ0hhc2hCeVVSTCI+PGI+c2V0VXNlck9iamVjdEFuZEdlbmVyYXRlUmVjb3JkaW5nSGFzaEJ5VVJMPC9iPjwvYT48YnIvPg0KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uX2NvbW1lbnQiPjxpID5Vc2UgdGhpcyBtZXRob2QgdG8gYWNjZXNzIGEgUmVjb3JkaW5nIGluc3RlYWQgb2YgUm9vbTwvaT48L2Rpdj4NCisgICAgICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIjYWRkVXNlclRvT3JnYW5pc2F0aW9uIj48Yj5hZGRVc2VyVG9PcmdhbmlzYXRpb248L2I+PC9hPjxici8+DQorICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb25fY29tbWVudCI+PGkgPkFkZCBhIHVzZXIgdG8gYSBjZXJ0YWluIG9yZ2FuaXphdGlvbjwvaT48L2Rpdj4NCisgICAgICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ2V0VXNlcnNCeU9yZ2FuaXNhdGlvbiI+PGI+Z2V0VXNlcnNCeU9yZ2FuaXNhdGlvbjwvYj48L2E+PGJyLz4NCisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2aWdhdGlvbl9jb21tZW50Ij48aSA+U2VhcmNoIHVzZXJzIGFuZCByZXR1cm4gdGhlbTwvaT48L2Rpdj4NCisgICAgICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIja2lja1VzZXJCeVB1YmxpY1NJRCI+PGI+a2lja1VzZXJCeVB1YmxpY1NJRDwvYj48L2E+PGJyLz4NCisgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2aWdhdGlvbl9jb21tZW50Ij48aSA+S2ljayBhIHVzZXIgYnkgaXRzIHB1YmxpYyBTSUQ8L2k+PC9kaXY+DQorICAgICAgICAgICAgICAgIDwvZGl2Pg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2FkZE9yZ2FuaXNhdGlvbiI+PGI+YWRkT3JnYW5pc2F0aW9uPC9iPjwvYT48YnIvPg0KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uX2NvbW1lbnQiPjxpID5hZGQgYSBuZXcgb3JnYW5pc2F0aW9uPC9pPjwvZGl2Pg0KKyAgICAgICAgICAgICAgICA8L2Rpdj4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4NCisJICAgDQorCSAgICA8aDM+TWV0aG9kcyBEZXRhaWxzIGluIFVzZXJTZXJ2aWNlPC9oMz4NCisJDQorCQkJCSAgICAJCSAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZCI+DQorCQkgICAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZF9oZWFkZXIiPg0KKwkJICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDoxMHB4Ij4NCisgICAgCQkJPGEgbmFtZT0iZ2V0U2Vzc2lvbiIgPjxiPmdldFNlc3Npb248L2I+PC9hPg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCQ0KKyAgICAJCQlNZXRob2Q6IDxpPmdldFNlc3Npb24gKA0KKyAgICAJCQkgICAgCQkJICAgIAkJCSkNCisgICAgCQkJPC9pPjxici8+DQorICAgIAkJCTxwPg0KKyAgICAJCQkgIGxvYWQgdGhpcyBzZXNzaW9uIGlkIGJlZm9yZSBkb2luZyBhbnl0aGluZyBlbHNlIFJldHVybnMgYW4gT2JqZWN0IG9mIFR5cGUKKyBTZXNzaW9uZGF0YSwgdGhpcyBjb250YWlucyBhIHNlc3Npb25JZCwgdXNlIHRoYXQgc2Vzc2lvbklkIGluIGFsbCBNZXRob2RzDQorICAgIAkJCTwvcD4NCisgICAgCQkJPHA+DQorICAgICAgICAgICAgICAgICAgUmV0dXJuIFR5cGU6IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLlNlc3Npb25kYXRhDQorICAgICAgICAgICAgICAgIDwvcD4NCisgICAgCQkJPHA+UGFyYW1zOjwvcD4NCisgICAgCQkJICAgIAkJCQ0KKyAgICAJCQkgICAgCQkJCTxpPk5vIFBhcmFtczwvaT4NCisgICAgCQkJICAgIAkJCTxici8+DQorICAgIAkJCVJFU1QgU2FtcGxlIENhbGwvVVJMOjxici8+DQorICAgIAkJCSAgICAJCQkJCQkJPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Vc2VyU2VydmljZS9nZXRTZXNzaW9uIj5odHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1VzZXJTZXJ2aWNlL2dldFNlc3Npb248L2E+DQorICAgIAkJICA8L2Rpdj4NCisgICAgCSAgIAkJCQkgICAgCQkgICAgICA8ZGl2IGNsYXNzPSJtZXRob2QiPg0KKwkJICAgICAgICA8ZGl2IGNsYXNzPSJtZXRob2RfaGVhZGVyIj4NCisJCSAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTBweCI+DQorICAgIAkJCTxhIG5hbWU9ImxvZ2luVXNlciIgPjxiPmxvZ2luVXNlcjwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+bG9naW5Vc2VyICgNCisgICAgCQkJICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIFNJRA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgdXNlcm5hbWUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIHVzZXJwYXNzDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJKQ0KKyAgICAJCQk8L2k+PGJyLz4NCisgICAgCQkJPHA+DQorICAgIAkJCSAgdXRoIGZ1bmN0aW9uLCB1c2UgdGhlIFNJRCB5b3UgZ2V0IGJ5IGdldFNlc3Npb24sIHJldHVybiBwb3NpdGl2ZSBtZWFucworIGxvZ2dlZC1pbiwgaWYgbmVnYXRpdmUgaXRzIGFuIEVycm9yQ29kZSwgeW91IGhhdmUgdG8gaW52b2tlIHRoZSBNZXRob2QKKyBnZXRFcnJvckJ5Q29kZSB0byBnZXQgdGhlIFRleHQtRGVzY3JpcHRpb24gb2YgdGhhdCBFcnJvckNvZGUNCisgICAgCQkJPC9wPg0KKyAgICAJCQk8cD4NCisgICAgICAgICAgICAgICAgICBSZXR1cm4gVHlwZTogamF2YS5sYW5nLkxvbmcNCisgICAgICAgICAgICAgICAgPC9wPg0KKyAgICAJCQk8cD5QYXJhbXM6PC9wPg0KKyAgICAJCQkgICAgCQkJDQorICAgIAkJCQkgICAgCQkJPHRhYmxlIHJ1bGVzPSJhbGwiIGJvcmRlcj0iMSI+DQorCSAgICAJCQkgICA8dGhlYWQ+DQorCSAgICAJCQkgICA8dHI+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+VHlwZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+RmllbGRuYW1lPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSI0MDAiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvdGg+DQorCSAgICAJCQkgICA8L3RyPg0KKwkgICAgCQkJICAgPC90aGVhZD4NCisJICAgIAkJCSAgIDx0Ym9keT4NCisJICAgIAkJCSAgIAkgICAgCQkJICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlNJRDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIFNJRCBmcm9tIGdldFNlc3Npb248L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dXNlcm5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlVzZXJuYW1lIGZyb20gT3Blbk1lZXRpbmdzLCB0aGUgdXNlciBoYXMgdG8gaGF2ZSBBZG1pbi1yaWdodHM8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dXNlcnBhc3M8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlVzZXJwYXNzIGZyb20gT3Blbk1lZXRpbmdzPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KKwkgICAgCQkJPC90YWJsZT4NCisgICAgCQkJICAgIAkJCTxici8+DQorICAgIAkJCVJFU1QgU2FtcGxlIENhbGwvVVJMOjxici8+DQorICAgIAkJCSAgICAJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Vc2VyU2VydmljZS9sb2dpblVzZXI/U0lEPVZBTFVFJnVzZXJuYW1lPVZBTFVFJnVzZXJwYXNzPVZBTFVFIj5odHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1VzZXJTZXJ2aWNlL2xvZ2luVXNlcj9TSUQ9VkFMVUUmYW1wO3VzZXJuYW1lPVZBTFVFJmFtcDt1c2VycGFzcz1WQUxVRTwvYT4NCisgICAgCQkgIDwvZGl2Pg0KKyAgICAJICAgCQkJCSAgICAJCSAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZCI+DQorCQkgICAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZF9oZWFkZXIiPg0KKwkJICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDoxMHB4Ij4NCisgICAgCQkJPGEgbmFtZT0iZ2V0RXJyb3JCeUNvZGUiID48Yj5nZXRFcnJvckJ5Q29kZTwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+Z2V0RXJyb3JCeUNvZGUgKA0KKyAgICAJCQkgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgU0lEDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIGxvbmcgZXJyb3JpZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBsb25nIGxhbmd1YWdlX2lkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJKQ0KKyAgICAJCQk8L2k+PGJyLz4NCisgICAgCQkJPHA+DQorICAgIAkJCSAgbG9hZHMgYW4gRXJyb3ItT2JqZWN0LiBJZiBhIE1ldGhvZCByZXR1cm5zIGEgbmVnYXRpdmUgUmVzdWx0LCBpdHMgYW4KKyBFcnJvci1pZCwgaXQgbmVlZHMgYSBsYW5ndWFnZV9pZCB0byBzcGVjaWZ5IGluIHdoaWNoIGxhbmd1YWdlIHlvdSB3YW50IHRvCisgZGlzcGxheS9yZWFkIHRoZSBlcnJvci1tZXNzYWdlLiBFbmdsaXNoIGhhcyB0aGUgTGFuZ3VhZ2UtSUQgb25lLCBmb3IKKyBkaWZmZXJlbnQgb25lIHNlZSB0aGUgbGlzdCBvZiBsYW5ndWFnZXMNCisgICAgCQkJPC9wPg0KKyAgICAJCQk8cD4NCisgICAgICAgICAgICAgICAgICBSZXR1cm4gVHlwZTogb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iZWFucy5iYXNpYy5FcnJvclJlc3VsdA0KKyAgICAgICAgICAgICAgICA8L3A+DQorICAgIAkJCTxwPlBhcmFtczo8L3A+DQorICAgIAkJCSAgICAJCQkNCisgICAgCQkJCSAgICAJCQk8dGFibGUgcnVsZXM9ImFsbCIgYm9yZGVyPSIxIj4NCisJICAgIAkJCSAgIDx0aGVhZD4NCisJICAgIAkJCSAgIDx0cj4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5UeXBlPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5GaWVsZG5hbWU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjQwMCIgYWxpZ249ImxlZnQiPkRlc2NyaXB0aW9uPC90aD4NCisJICAgIAkJCSAgIDwvdHI+DQorCSAgICAJCQkgICA8L3RoZWFkPg0KKwkgICAgCQkJICAgPHRib2R5Pg0KKwkgICAgCQkJICAgCSAgICAJCQkgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+U0lEPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5UaGUgU0lEIGZyb20gZ2V0U2Vzc2lvbjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJbG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+ZXJyb3JpZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGhlIGVycm9yIGlkIChuZWdhdGl2ZSBWYWx1ZSBoZXJlISk8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCWxvbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmxhbmd1YWdlX2lkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5UaGUgaWQgb2YgdGhlIGxhbmd1YWdlPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KKwkgICAgCQkJPC90YWJsZT4NCisgICAgCQkJICAgIAkJCTxici8+DQorICAgIAkJCVJFU1QgU2FtcGxlIENhbGwvVVJMOjxici8+DQorICAgIAkJCSAgICAJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Vc2VyU2VydmljZS9nZXRFcnJvckJ5Q29kZT9TSUQ9VkFMVUUmZXJyb3JpZD1WQUxVRSZsYW5ndWFnZV9pZD1WQUxVRSI+aHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Vc2VyU2VydmljZS9nZXRFcnJvckJ5Q29kZT9TSUQ9VkFMVUUmYW1wO2Vycm9yaWQ9VkFMVUUmYW1wO2xhbmd1YWdlX2lkPVZBTFVFPC9hPg0KKyAgICAJCSAgPC9kaXY+DQorICAgIAkgICAJCQkJICAgIAkJICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kIj4NCisJCSAgICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kX2hlYWRlciI+DQorCQkgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjEwcHgiPg0KKyAgICAJCQk8YSBuYW1lPSJhZGROZXdVc2VyIiA+PGI+YWRkTmV3VXNlcjwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+YWRkTmV3VXNlciAoDQorICAgIAkJCSAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBTSUQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIHVzZXJuYW1lDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyB1c2VycGFzcw0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgbGFzdG5hbWUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGZpcnN0bmFtZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgZW1haWwNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGFkZGl0aW9uYWxuYW1lDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBzdHJlZXQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIHppcA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgZmF4DQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIGxvbmcgc3RhdGVzX2lkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyB0b3duDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIGxvbmcgbGFuZ3VhZ2VfaWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGJhc2VVUkwNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkpDQorICAgIAkJCTwvaT48YnIvPg0KKyAgICAJCQk8cD4NCisgICAgCQkJICBBZGRzIGEgbmV3IFVzcmUgbGlrZSB0aHJvdWdoIHRoZSBGcm9udGVuZCwgYnV0IGFsc28gZG9lcyBhY3RpdmF0ZXMgdGhlCisgQWNjb3VudCBUbyBkbyBTU08gc2VlIHRoZSBtZXRob2RzIHRvIGNyZWF0ZSBhIGhhc2ggYW5kIHVzZSB0aG9zZSBvbmVzIQ0KKyAgICAJCQk8L3A+DQorICAgIAkJCTxwPg0KKyAgICAgICAgICAgICAgICAgIFJldHVybiBUeXBlOiBqYXZhLmxhbmcuTG9uZw0KKyAgICAgICAgICAgICAgICA8L3A+DQorICAgIAkJCTxwPlBhcmFtczo8L3A+DQorICAgIAkJCSAgICAJCQkNCisgICAgCQkJCSAgICAJCQk8dGFibGUgcnVsZXM9ImFsbCIgYm9yZGVyPSIxIj4NCisJICAgIAkJCSAgIDx0aGVhZD4NCisJICAgIAkJCSAgIDx0cj4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5UeXBlPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5GaWVsZG5hbWU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjQwMCIgYWxpZ249ImxlZnQiPkRlc2NyaXB0aW9uPC90aD4NCisJICAgIAkJCSAgIDwvdHI+DQorCSAgICAJCQkgICA8L3RoZWFkPg0KKwkgICAgCQkJICAgPHRib2R5Pg0KKwkgICAgCQkJICAgCSAgICAJCQkgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+U0lEPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5UaGUgU0lEIGZyb20gZ2V0U2Vzc2lvbjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj51c2VybmFtZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+YW55IHVzZXJuYW1lPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnVzZXJwYXNzPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hbnkgdXNlcnBhc3M8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+bGFzdG5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFueSBsYXN0bmFtZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5maXJzdG5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFueSBmaXJzdG5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+ZW1haWw8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFueSBlbWFpbDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hZGRpdGlvbmFsbmFtZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+YW55IGFkZGl0aW9uYWxuYW1lPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnN0cmVldDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+YW55IHN0cmVldDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj56aXA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFueSB6aXA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+ZmF4PC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hbnkgZmF4PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlsb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5zdGF0ZXNfaWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmEgdmFsaWQgc3RhdGVzX2lkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRvd248L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFueSB0b3duPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlsb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5sYW5ndWFnZV9pZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGhlIGxhbmd1YWdlX2lkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmJhc2VVUkw8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSBiYXNlVVJMIGlzIG5lZWRlZCB0byBzZW5kIHRoZSBJbml0aWFsIEVtYWlsIGNvcnJlY3RseSB0bworICAgICAgICAgICAgdGhhdCBVc2VyLCBvdGhlcndpc2UgdGhlIExpbmsgaW4gdGhlIEVNYWlsIHRoYXQgdGhlIG5ldyBVc2VyCisgICAgICAgICAgICB3aWxsIHJldmVpdmUgaXMgbm90IHZhbGlkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KKwkgICAgCQkJPC90YWJsZT4NCisgICAgCQkJICAgIAkJCTxici8+DQorICAgIAkJCVJFU1QgU2FtcGxlIENhbGwvVVJMOjxici8+DQorICAgIAkJCSAgICAJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvVXNlclNlcnZpY2UvYWRkTmV3VXNlcj9TSUQ9VkFMVUUmdXNlcm5hbWU9VkFMVUUmdXNlcnBhc3M9VkFMVUUmbGFzdG5hbWU9VkFMVUUmZmlyc3RuYW1lPVZBTFVFJmVtYWlsPVZBTFVFJmFkZGl0aW9uYWxuYW1lPVZBTFVFJnN0cmVldD1WQUxVRSZ6aXA9VkFMVUUmZmF4PVZBTFVFJnN0YXRlc19pZD1WQUxVRSZ0b3duPVZBTFVFJmxhbmd1YWdlX2lkPVZBTFVFJmJhc2VVUkw9VkFMVUUiPmh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvVXNlclNlcnZpY2UvYWRkTmV3VXNlcj9TSUQ9VkFMVUUmYW1wO3VzZXJuYW1lPVZBTFVFJmFtcDt1c2VycGFzcz1WQUxVRSZhbXA7bGFzdG5hbWU9VkFMVUUmYW1wO2ZpcnN0bmFtZT1WQUxVRSZhbXA7ZW1haWw9VkFMVUUmYW1wO2FkZGl0aW9uYWxuYW1lPVZBTFVFJmFtcDtzdHJlZXQ9VkFMVUUmYW1wO3ppcD1WQUxVRSZhbXA7ZmF4PVZBTFVFJmFtcDtzdGF0ZXNfaWQ9VkFMVUUmYW1wO3Rvd249VkFMVUUmYW1wO2xhbmd1YWdlX2lkPVZBTFVFJmFtcDtiYXNlVVJMPVZBTFVFPC9hPg0KKyAgICAJCSAgPC9kaXY+DQorICAgIAkgICAJCQkJICAgIAkJICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kIj4NCisJCSAgICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kX2hlYWRlciI+DQorCQkgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjEwcHgiPg0KKyAgICAJCQk8YSBuYW1lPSJhZGROZXdVc2VyV2l0aFRpbWVab25lIiA+PGI+YWRkTmV3VXNlcldpdGhUaW1lWm9uZTwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+YWRkTmV3VXNlcldpdGhUaW1lWm9uZSAoDQorICAgIAkJCSAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBTSUQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIHVzZXJuYW1lDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyB1c2VycGFzcw0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgbGFzdG5hbWUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGZpcnN0bmFtZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgZW1haWwNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGFkZGl0aW9uYWxuYW1lDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBzdHJlZXQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIHppcA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgZmF4DQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIGxvbmcgc3RhdGVzX2lkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyB0b3duDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIGxvbmcgbGFuZ3VhZ2VfaWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGJhc2VVUkwNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGpOYW1lVGltZVpvbmUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkpDQorICAgIAkJCTwvaT48YnIvPg0KKyAgICAJCQk8cD4NCisgICAgCQkJICBBZGRzIGEgbmV3IFVzZXIgbGlrZSB0aHJvdWdoIHRoZSBGcm9udGVuZCwgYnV0IGFsc28gZG9lcyBhY3RpdmF0ZXMgdGhlCisgQWNjb3VudA0KKyAgICAJCQk8L3A+DQorICAgIAkJCTxwPg0KKyAgICAgICAgICAgICAgICAgIFJldHVybiBUeXBlOiBqYXZhLmxhbmcuTG9uZw0KKyAgICAgICAgICAgICAgICA8L3A+DQorICAgIAkJCTxwPlBhcmFtczo8L3A+DQorICAgIAkJCSAgICAJCQkNCisgICAgCQkJCSAgICAJCQk8dGFibGUgcnVsZXM9ImFsbCIgYm9yZGVyPSIxIj4NCisJICAgIAkJCSAgIDx0aGVhZD4NCisJICAgIAkJCSAgIDx0cj4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5UeXBlPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5GaWVsZG5hbWU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjQwMCIgYWxpZ249ImxlZnQiPkRlc2NyaXB0aW9uPC90aD4NCisJICAgIAkJCSAgIDwvdHI+DQorCSAgICAJCQkgICA8L3RoZWFkPg0KKwkgICAgCQkJICAgPHRib2R5Pg0KKwkgICAgCQkJICAgCSAgICAJCQkgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+U0lEPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5UaGUgU0lEIGZyb20gZ2V0U2Vzc2lvbjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj51c2VybmFtZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+YW55IHVzZXJuYW1lPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnVzZXJwYXNzPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hbnkgdXNlcnBhc3M8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+bGFzdG5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFueSBsYXN0bmFtZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5maXJzdG5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFueSBmaXJzdG5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+ZW1haWw8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFueSBlbWFpbDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hZGRpdGlvbmFsbmFtZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+YW55IGFkZGl0aW9uYWxuYW1lPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnN0cmVldDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+YW55IHN0cmVldDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj56aXA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFueSB6aXA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+ZmF4PC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hbnkgZmF4PC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlsb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5zdGF0ZXNfaWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmEgdmFsaWQgc3RhdGVzX2lkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRvd248L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFueSB0b3duPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlsb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5sYW5ndWFnZV9pZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGhlIGxhbmd1YWdlX2lkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmJhc2VVUkw8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSBiYXNlVVJMIGlzIG5lZWRlZCB0byBzZW5kIHRoZSBJbml0aWFsIEVtYWlsIGNvcnJlY3RseSB0bworICAgICAgICAgICAgdGhhdCBVc2VyLCBvdGhlcndpc2UgdGhlIExpbmsgaW4gdGhlIEVNYWlsIHRoYXQgdGhlIG5ldyBVc2VyCisgICAgICAgICAgICB3aWxsIHJldmVpdmUgaXMgbm90IHZhbGlkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmpOYW1lVGltZVpvbmU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSBuYW1lIG9mIHRoZSB0aW1lem9uZSBmb3IgdGhlIHVzZXI8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQorCSAgICAJCQk8L3RhYmxlPg0KKyAgICAJCQkgICAgCQkJPGJyLz4NCisgICAgCQkJUkVTVCBTYW1wbGUgQ2FsbC9VUkw6PGJyLz4NCisgICAgCQkJICAgIAkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1VzZXJTZXJ2aWNlL2FkZE5ld1VzZXJXaXRoVGltZVpvbmU/U0lEPVZBTFVFJnVzZXJuYW1lPVZBTFVFJnVzZXJwYXNzPVZBTFVFJmxhc3RuYW1lPVZBTFVFJmZpcnN0bmFtZT1WQUxVRSZlbWFpbD1WQUxVRSZhZGRpdGlvbmFsbmFtZT1WQUxVRSZzdHJlZXQ9VkFMVUUmemlwPVZBTFVFJmZheD1WQUxVRSZzdGF0ZXNfaWQ9VkFMVUUmdG93bj1WQUxVRSZsYW5ndWFnZV9pZD1WQUxVRSZiYXNlVVJMPVZBTFVFJmpOYW1lVGltZVpvbmU9VkFMVUUiPmh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvVXNlclNlcnZpY2UvYWRkTmV3VXNlcldpdGhUaW1lWm9uZT9TSUQ9VkFMVUUmYW1wO3VzZXJuYW1lPVZBTFVFJmFtcDt1c2VycGFzcz1WQUxVRSZhbXA7bGFzdG5hbWU9VkFMVUUmYW1wO2ZpcnN0bmFtZT1WQUxVRSZhbXA7ZW1haWw9VkFMVUUmYW1wO2FkZGl0aW9uYWxuYW1lPVZBTFVFJmFtcDtzdHJlZXQ9VkFMVUUmYW1wO3ppcD1WQUxVRSZhbXA7ZmF4PVZBTFVFJmFtcDtzdGF0ZXNfaWQ9VkFMVUUmYW1wO3Rvd249VkFMVUUmYW1wO2xhbmd1YWdlX2lkPVZBTFVFJmFtcDtiYXNlVVJMPVZBTFVFJmFtcDtqTmFtZVRpbWVab25lPVZBTFVFPC9hPg0KKyAgICAJCSAgPC9kaXY+DQorICAgIAkgICAJCQkJICAgIAkJICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kIj4NCisJCSAgICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kX2hlYWRlciI+DQorCQkgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjEwcHgiPg0KKyAgICAJCQk8YSBuYW1lPSJhZGROZXdVc2VyV2l0aEV4dGVybmFsVHlwZSIgPjxiPmFkZE5ld1VzZXJXaXRoRXh0ZXJuYWxUeXBlPC9iPjwvYT4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQkNCisgICAgCQkJTWV0aG9kOiA8aT5hZGROZXdVc2VyV2l0aEV4dGVybmFsVHlwZSAoDQorICAgIAkJCSAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBTSUQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIHVzZXJuYW1lDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyB1c2VycGFzcw0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgbGFzdG5hbWUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGZpcnN0bmFtZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgZW1haWwNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGFkZGl0aW9uYWxuYW1lDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBzdHJlZXQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIHppcA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgZmF4DQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIGxvbmcgc3RhdGVzX2lkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyB0b3duDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIGxvbmcgbGFuZ3VhZ2VfaWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGpOYW1lVGltZVpvbmUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGV4dGVybmFsVXNlcklkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBleHRlcm5hbFVzZXJUeXBlDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJKQ0KKyAgICAJCQk8L2k+PGJyLz4NCisgICAgCQkJPHA+DQorICAgIAkJCSAgQWRkcyBhIG5ldyBVc2VyIGxpa2UgdGhyb3VnaCB0aGUgRnJvbnRlbmQsIGJ1dCBhbHNvIGRvZXMgYWN0aXZhdGVzIHRoZQorIEFjY291bnQsIHNlbmRzIE5PIGVtYWlsIChubyBtYXR0ZXIgd2hhdCB5b3UgY29uZmlndXJlZCkgYW5kIHNldHMgdGhlCisgdXNlcnMgZXh0ZXJuYWwgdXNlciBpZCBhbmQgdHlwZQorIAorIFVzZSB0aGUgbWV0aG9kcyB0byBjcmVhdGUgYSBoYXNoIGZvciBTU08sIGNyZWF0aW5nIHVzZXJzIGlzIG5vdCByZXF1aXJlZAorIGZvciBTU08NCisgICAgCQkJPC9wPg0KKyAgICAJCQk8cD4NCisgICAgICAgICAgICAgICAgICBSZXR1cm4gVHlwZTogamF2YS5sYW5nLkxvbmcNCisgICAgICAgICAgICAgICAgPC9wPg0KKyAgICAJCQk8cD5QYXJhbXM6PC9wPg0KKyAgICAJCQkgICAgCQkJDQorICAgIAkJCQkgICAgCQkJPHRhYmxlIHJ1bGVzPSJhbGwiIGJvcmRlcj0iMSI+DQorCSAgICAJCQkgICA8dGhlYWQ+DQorCSAgICAJCQkgICA8dHI+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+VHlwZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+RmllbGRuYW1lPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSI0MDAiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvdGg+DQorCSAgICAJCQkgICA8L3RyPg0KKwkgICAgCQkJICAgPC90aGVhZD4NCisJICAgIAkJCSAgIDx0Ym9keT4NCisJICAgIAkJCSAgIAkgICAgCQkJICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlNJRDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIFNJRCBmcm9tIGdldFNlc3Npb248L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dXNlcm5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFueSB1c2VybmFtZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj51c2VycGFzczwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+YW55IHVzZXJwYXNzPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmxhc3RuYW1lPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hbnkgbGFzdG5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+Zmlyc3RuYW1lPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hbnkgZmlyc3RuYW1lPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmVtYWlsPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hbnkgZW1haWw8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+YWRkaXRpb25hbG5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFueSBhZGRpdGlvbmFsbmFtZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5zdHJlZXQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFueSBzdHJlZXQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+emlwPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hbnkgemlwPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmZheDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+YW55IGZheDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJbG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+c3RhdGVzX2lkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hIHZhbGlkIHN0YXRlc19pZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50b3duPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hbnkgdG93bjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJbG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+bGFuZ3VhZ2VfaWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSBsYW5ndWFnZV9pZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5qTmFtZVRpbWVab25lPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aGUgbmFtZSBvZiB0aGUgdGltZXpvbmUgZm9yIHRoZSB1c2VyPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmV4dGVybmFsVXNlcklkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5leHRlcm5hbFVzZXJJZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5leHRlcm5hbFVzZXJUeXBlPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5leHRlcm5hbFVzZXJUeXBlPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KKwkgICAgCQkJPC90YWJsZT4NCisgICAgCQkJICAgIAkJCTxici8+DQorICAgIAkJCVJFU1QgU2FtcGxlIENhbGwvVVJMOjxici8+DQorICAgIAkJCSAgICAJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1VzZXJTZXJ2aWNlL2FkZE5ld1VzZXJXaXRoRXh0ZXJuYWxUeXBlP1NJRD1WQUxVRSZ1c2VybmFtZT1WQUxVRSZ1c2VycGFzcz1WQUxVRSZsYXN0bmFtZT1WQUxVRSZmaXJzdG5hbWU9VkFMVUUmZW1haWw9VkFMVUUmYWRkaXRpb25hbG5hbWU9VkFMVUUmc3RyZWV0PVZBTFVFJnppcD1WQUxVRSZmYXg9VkFMVUUmc3RhdGVzX2lkPVZBTFVFJnRvd249VkFMVUUmbGFuZ3VhZ2VfaWQ9VkFMVUUmak5hbWVUaW1lWm9uZT1WQUxVRSZleHRlcm5hbFVzZXJJZD1WQUxVRSZleHRlcm5hbFVzZXJUeXBlPVZBTFVFIj5odHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1VzZXJTZXJ2aWNlL2FkZE5ld1VzZXJXaXRoRXh0ZXJuYWxUeXBlP1NJRD1WQUxVRSZhbXA7dXNlcm5hbWU9VkFMVUUmYW1wO3VzZXJwYXNzPVZBTFVFJmFtcDtsYXN0bmFtZT1WQUxVRSZhbXA7Zmlyc3RuYW1lPVZBTFVFJmFtcDtlbWFpbD1WQUxVRSZhbXA7YWRkaXRpb25hbG5hbWU9VkFMVUUmYW1wO3N0cmVldD1WQUxVRSZhbXA7emlwPVZBTFVFJmFtcDtmYXg9VkFMVUUmYW1wO3N0YXRlc19pZD1WQUxVRSZhbXA7dG93bj1WQUxVRSZhbXA7bGFuZ3VhZ2VfaWQ9VkFMVUUmYW1wO2pOYW1lVGltZVpvbmU9VkFMVUUmYW1wO2V4dGVybmFsVXNlcklkPVZBTFVFJmFtcDtleHRlcm5hbFVzZXJUeXBlPVZBTFVFPC9hPg0KKyAgICAJCSAgPC9kaXY+DQorICAgIAkgICAJCQkJICAgIAkJICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kIj4NCisJCSAgICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kX2hlYWRlciI+DQorCQkgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjEwcHgiPg0KKyAgICAJCQk8YSBuYW1lPSJkZWxldGVVc2VyQnlJZCIgPjxiPmRlbGV0ZVVzZXJCeUlkPC9iPjwvYT4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQkNCisgICAgCQkJTWV0aG9kOiA8aT5kZWxldGVVc2VyQnlJZCAoDQorICAgIAkJCSAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBTSUQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgTG9uZyB1c2VySWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkpDQorICAgIAkJCTwvaT48YnIvPg0KKyAgICAJCQk8cD4NCisgICAgCQkJICBEZWxldGUgYSBjZXJ0YWluIHVzZXIgYnkgaXRzIGlkDQorICAgIAkJCTwvcD4NCisgICAgCQkJPHA+DQorICAgICAgICAgICAgICAgICAgUmV0dXJuIFR5cGU6IGphdmEubGFuZy5Mb25nDQorICAgICAgICAgICAgICAgIDwvcD4NCisgICAgCQkJPHA+UGFyYW1zOjwvcD4NCisgICAgCQkJICAgIAkJCQ0KKyAgICAJCQkJICAgIAkJCTx0YWJsZSBydWxlcz0iYWxsIiBib3JkZXI9IjEiPg0KKwkgICAgCQkJICAgPHRoZWFkPg0KKwkgICAgCQkJICAgPHRyPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPlR5cGU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPkZpZWxkbmFtZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iNDAwIiBhbGlnbj0ibGVmdCI+RGVzY3JpcHRpb248L3RoPg0KKwkgICAgCQkJICAgPC90cj4NCisJICAgIAkJCSAgIDwvdGhlYWQ+DQorCSAgICAJCQkgICA8dGJvZHk+DQorCSAgICAJCQkgICAJICAgIAkJCSAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5TSUQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlRoZSBTSUQgZnJvbSBnZXRTZXNzaW9uPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj51c2VySWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSBvcGVubWVldGluZ3MgdXNlciBpZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCisJICAgIAkJCTwvdGFibGU+DQorICAgIAkJCSAgICAJCQk8YnIvPg0KKyAgICAJCQlSRVNUIFNhbXBsZSBDYWxsL1VSTDo8YnIvPg0KKyAgICAJCQkgICAgCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1VzZXJTZXJ2aWNlL2RlbGV0ZVVzZXJCeUlkP1NJRD1WQUxVRSZ1c2VySWQ9VkFMVUUiPmh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvVXNlclNlcnZpY2UvZGVsZXRlVXNlckJ5SWQ/U0lEPVZBTFVFJmFtcDt1c2VySWQ9VkFMVUU8L2E+DQorICAgIAkJICA8L2Rpdj4NCisgICAgCSAgIAkJCQkgICAgCQkgICAgICA8ZGl2IGNsYXNzPSJtZXRob2QiPg0KKwkJICAgICAgICA8ZGl2IGNsYXNzPSJtZXRob2RfaGVhZGVyIj4NCisJCSAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTBweCI+DQorICAgIAkJCTxhIG5hbWU9ImRlbGV0ZVVzZXJCeUV4dGVybmFsVXNlcklkQW5kVHlwZSIgPjxiPmRlbGV0ZVVzZXJCeUV4dGVybmFsVXNlcklkQW5kVHlwZTwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+ZGVsZXRlVXNlckJ5RXh0ZXJuYWxVc2VySWRBbmRUeXBlICgNCisgICAgCQkJICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIFNJRA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgZXh0ZXJuYWxVc2VySWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGV4dGVybmFsVXNlclR5cGUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkpDQorICAgIAkJCTwvaT48YnIvPg0KKyAgICAJCQk8cD4NCisgICAgCQkJICBEZWxldGUgYSBjZXJ0YWluIHVzZXIgYnkgaXRzIGV4dGVybmFsIHVzZXIgaWQNCisgICAgCQkJPC9wPg0KKyAgICAJCQk8cD4NCisgICAgICAgICAgICAgICAgICBSZXR1cm4gVHlwZTogamF2YS5sYW5nLkxvbmcNCisgICAgICAgICAgICAgICAgPC9wPg0KKyAgICAJCQk8cD5QYXJhbXM6PC9wPg0KKyAgICAJCQkgICAgCQkJDQorICAgIAkJCQkgICAgCQkJPHRhYmxlIHJ1bGVzPSJhbGwiIGJvcmRlcj0iMSI+DQorCSAgICAJCQkgICA8dGhlYWQ+DQorCSAgICAJCQkgICA8dHI+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+VHlwZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+RmllbGRuYW1lPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSI0MDAiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvdGg+DQorCSAgICAJCQkgICA8L3RyPg0KKwkgICAgCQkJICAgPC90aGVhZD4NCisJICAgIAkJCSAgIDx0Ym9keT4NCisJICAgIAkJCSAgIAkgICAgCQkJICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlNJRDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIFNJRCBmcm9tIGdldFNlc3Npb248L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+ZXh0ZXJuYWxVc2VySWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmV4dGVybmFsVXNlcklkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmV4dGVybmFsVXNlclR5cGU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmV4dGVybmFsVXNlcklkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KKwkgICAgCQkJPC90YWJsZT4NCisgICAgCQkJICAgIAkJCTxici8+DQorICAgIAkJCVJFU1QgU2FtcGxlIENhbGwvVVJMOjxici8+DQorICAgIAkJCSAgICAJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Vc2VyU2VydmljZS9kZWxldGVVc2VyQnlFeHRlcm5hbFVzZXJJZEFuZFR5cGU/U0lEPVZBTFVFJmV4dGVybmFsVXNlcklkPVZBTFVFJmV4dGVybmFsVXNlclR5cGU9VkFMVUUiPmh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvVXNlclNlcnZpY2UvZGVsZXRlVXNlckJ5RXh0ZXJuYWxVc2VySWRBbmRUeXBlP1NJRD1WQUxVRSZhbXA7ZXh0ZXJuYWxVc2VySWQ9VkFMVUUmYW1wO2V4dGVybmFsVXNlclR5cGU9VkFMVUU8L2E+DQorICAgIAkJICA8L2Rpdj4NCisgICAgCSAgIAkJCQkgICAgCQkgICAgICA8ZGl2IGNsYXNzPSJtZXRob2QiPg0KKwkJICAgICAgICA8ZGl2IGNsYXNzPSJtZXRob2RfaGVhZGVyIj4NCisJCSAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTBweCI+DQorICAgIAkJCTxhIG5hbWU9InNldFVzZXJPYmplY3QiID48Yj5zZXRVc2VyT2JqZWN0PC9iPjwvYT4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQkNCisgICAgCQkJTWV0aG9kOiA8aT5zZXRVc2VyT2JqZWN0ICgNCisgICAgCQkJICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIFNJRA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgdXNlcm5hbWUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGZpcnN0bmFtZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgbGFzdG5hbWUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIHByb2ZpbGVQaWN0dXJlVXJsDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBlbWFpbA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSkNCisgICAgCQkJPC9pPjxici8+DQorICAgIAkJCTxwPg0KKyAgICAJCQkgIGRlcHJlY2F0ZWQgdXNlIHNldFVzZXJPYmplY3RBbmRHZW5lcmF0ZVJvb21IYXNoCisgCisgRGVzY3JpcHRpb246IHNldHMgdGhlIFNlc3Npb25PYmplY3QgZm9yIGEgY2VydGFpbiBTSUQsIGFmdGVyIHNldHRpbmcgdGhpcworIFNlc3Npb24tT2JqZWN0IHlvdSBjYW4gdXNlIHRoZSBTSUQgKyBhIFJvb21JZCB0byBlbnRlciBhbnkgUm9vbS4NCisgICAgCQkJPC9wPg0KKyAgICAJCQk8cD4NCisgICAgICAgICAgICAgICAgICBSZXR1cm4gVHlwZTogamF2YS5sYW5nLkxvbmcNCisgICAgICAgICAgICAgICAgPC9wPg0KKyAgICAJCQk8cD5QYXJhbXM6PC9wPg0KKyAgICAJCQkgICAgCQkJDQorICAgIAkJCQkgICAgCQkJPHRhYmxlIHJ1bGVzPSJhbGwiIGJvcmRlcj0iMSI+DQorCSAgICAJCQkgICA8dGhlYWQ+DQorCSAgICAJCQkgICA8dHI+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+VHlwZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+RmllbGRuYW1lPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSI0MDAiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvdGg+DQorCSAgICAJCQkgICA8L3RyPg0KKwkgICAgCQkJICAgPC90aGVhZD4NCisJICAgIAkJCSAgIDx0Ym9keT4NCisJICAgIAkJCSAgIAkgICAgCQkJICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlNJRDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIFNJRCBmcm9tIGdldFNlc3Npb248L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dXNlcm5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFueSB1c2VybmFtZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5maXJzdG5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFueSBmaXJzdG5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+bGFzdG5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFueSBsYXN0bmFtZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5wcm9maWxlUGljdHVyZVVybDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+YW55IHByb2ZpbGVQaWN0dXJlVXJsPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmVtYWlsPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hbnkgZW1haWw8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQorCSAgICAJCQk8L3RhYmxlPg0KKyAgICAJCQkgICAgCQkJPGJyLz4NCisgICAgCQkJUkVTVCBTYW1wbGUgQ2FsbC9VUkw6PGJyLz4NCisgICAgCQkJICAgIAkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1VzZXJTZXJ2aWNlL3NldFVzZXJPYmplY3Q/U0lEPVZBTFVFJnVzZXJuYW1lPVZBTFVFJmZpcnN0bmFtZT1WQUxVRSZsYXN0bmFtZT1WQUxVRSZwcm9maWxlUGljdHVyZVVybD1WQUxVRSZlbWFpbD1WQUxVRSI+aHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Vc2VyU2VydmljZS9zZXRVc2VyT2JqZWN0P1NJRD1WQUxVRSZhbXA7dXNlcm5hbWU9VkFMVUUmYW1wO2ZpcnN0bmFtZT1WQUxVRSZhbXA7bGFzdG5hbWU9VkFMVUUmYW1wO3Byb2ZpbGVQaWN0dXJlVXJsPVZBTFVFJmFtcDtlbWFpbD1WQUxVRTwvYT4NCisgICAgCQkgIDwvZGl2Pg0KKyAgICAJICAgCQkJCSAgICAJCSAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZCI+DQorCQkgICAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZF9oZWFkZXIiPg0KKwkJICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDoxMHB4Ij4NCisgICAgCQkJPGEgbmFtZT0ic2V0VXNlck9iamVjdFdpdGhFeHRlcm5hbFVzZXIiID48Yj5zZXRVc2VyT2JqZWN0V2l0aEV4dGVybmFsVXNlcjwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+c2V0VXNlck9iamVjdFdpdGhFeHRlcm5hbFVzZXIgKA0KKyAgICAJCQkgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgU0lEDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyB1c2VybmFtZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgZmlyc3RuYW1lDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBsYXN0bmFtZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgcHJvZmlsZVBpY3R1cmVVcmwNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGVtYWlsDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBleHRlcm5hbFVzZXJJZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgZXh0ZXJuYWxVc2VyVHlwZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSkNCisgICAgCQkJPC9pPjxici8+DQorICAgIAkJCTxwPg0KKyAgICAJCQkgIGRlcHJlY2F0ZWQgdXNlIHNldFVzZXJPYmplY3RBbmRHZW5lcmF0ZVJvb21IYXNoCisgCisgRGVzY3JpcHRpb246IHNldHMgdGhlIFNlc3Npb25PYmplY3QgZm9yIGEgY2VydGFpbiBTSUQsIGFmdGVyIHNldHRpbmcgdGhpcworIFNlc3Npb24tT2JqZWN0IHlvdSBjYW4gdXNlIHRoZSBTSUQgKyBhIFJvb21JZCB0byBlbnRlciBhbnkgUm9vbS4NCisgICAgCQkJPC9wPg0KKyAgICAJCQk8cD4NCisgICAgICAgICAgICAgICAgICBSZXR1cm4gVHlwZTogamF2YS5sYW5nLkxvbmcNCisgICAgICAgICAgICAgICAgPC9wPg0KKyAgICAJCQk8cD5QYXJhbXM6PC9wPg0KKyAgICAJCQkgICAgCQkJDQorICAgIAkJCQkgICAgCQkJPHRhYmxlIHJ1bGVzPSJhbGwiIGJvcmRlcj0iMSI+DQorCSAgICAJCQkgICA8dGhlYWQ+DQorCSAgICAJCQkgICA8dHI+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+VHlwZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+RmllbGRuYW1lPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSI0MDAiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvdGg+DQorCSAgICAJCQkgICA8L3RyPg0KKwkgICAgCQkJICAgPC90aGVhZD4NCisJICAgIAkJCSAgIDx0Ym9keT4NCisJICAgIAkJCSAgIAkgICAgCQkJICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlNJRDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIFNJRCBmcm9tIGdldFNlc3Npb248L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dXNlcm5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFueSB1c2VybmFtZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5maXJzdG5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFueSBmaXJzdG5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+bGFzdG5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFueSBsYXN0bmFtZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5wcm9maWxlUGljdHVyZVVybDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+YW55IHByb2ZpbGVQaWN0dXJlVXJsPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmVtYWlsPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hbnkgZW1haWw8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+ZXh0ZXJuYWxVc2VySWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlmIHlvdSBoYXZlIGFueSBleHRlcm5hbCB1c2VyIElkIHlvdSBtYXkgc2V0IGl0IGhlcmU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+ZXh0ZXJuYWxVc2VyVHlwZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+eW91IGNhbiBzcGVjaWZ5IHlvdXIgc3lzdGVtLW5hbWUgaGVyZSwgZm9yIGV4YW1wbGUgIm1vb2RsZSI8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQorCSAgICAJCQk8L3RhYmxlPg0KKyAgICAJCQkgICAgCQkJPGJyLz4NCisgICAgCQkJUkVTVCBTYW1wbGUgQ2FsbC9VUkw6PGJyLz4NCisgICAgCQkJICAgIAkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Vc2VyU2VydmljZS9zZXRVc2VyT2JqZWN0V2l0aEV4dGVybmFsVXNlcj9TSUQ9VkFMVUUmdXNlcm5hbWU9VkFMVUUmZmlyc3RuYW1lPVZBTFVFJmxhc3RuYW1lPVZBTFVFJnByb2ZpbGVQaWN0dXJlVXJsPVZBTFVFJmVtYWlsPVZBTFVFJmV4dGVybmFsVXNlcklkPVZBTFVFJmV4dGVybmFsVXNlclR5cGU9VkFMVUUiPmh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvVXNlclNlcnZpY2Uvc2V0VXNlck9iamVjdFdpdGhFeHRlcm5hbFVzZXI/U0lEPVZBTFVFJmFtcDt1c2VybmFtZT1WQUxVRSZhbXA7Zmlyc3RuYW1lPVZBTFVFJmFtcDtsYXN0bmFtZT1WQUxVRSZhbXA7cHJvZmlsZVBpY3R1cmVVcmw9VkFMVUUmYW1wO2VtYWlsPVZBTFVFJmFtcDtleHRlcm5hbFVzZXJJZD1WQUxVRSZhbXA7ZXh0ZXJuYWxVc2VyVHlwZT1WQUxVRTwvYT4NCisgICAgCQkgIDwvZGl2Pg0KKyAgICAJICAgCQkJCSAgICAJCSAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZCI+DQorCQkgICAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZF9oZWFkZXIiPg0KKwkJICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDoxMHB4Ij4NCisgICAgCQkJPGEgbmFtZT0ic2V0VXNlck9iamVjdEFuZEdlbmVyYXRlUm9vbUhhc2giID48Yj5zZXRVc2VyT2JqZWN0QW5kR2VuZXJhdGVSb29tSGFzaDwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+c2V0VXNlck9iamVjdEFuZEdlbmVyYXRlUm9vbUhhc2ggKA0KKyAgICAJCQkgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgU0lEDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyB1c2VybmFtZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgZmlyc3RuYW1lDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBsYXN0bmFtZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgcHJvZmlsZVBpY3R1cmVVcmwNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGVtYWlsDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBleHRlcm5hbFVzZXJJZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgZXh0ZXJuYWxVc2VyVHlwZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBMb25nIHJvb21faWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgaW50IGJlY29tZU1vZGVyYXRvckFzSW50DQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIGludCBzaG93QXVkaW9WaWRlb1Rlc3RBc0ludA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSkNCisgICAgCQkJPC9pPjxici8+DQorICAgIAkJCTxwPg0KKyAgICAJCQkgIERlc2NyaXB0aW9uOiBzZXRzIHRoZSBTZXNzaW9uT2JqZWN0IGZvciBhIGNlcnRhaW4gU0lELCBhZnRlciBzZXR0aW5nIHRoaXMKKyBTZXNzaW9uLU9iamVjdCB5b3UgY2FuIHVzZSB0aGUgU0lEICsgYSBSb29tSWQgdG8gZW50ZXIgYW55IFJvb20uIC4uLgorIFNlc3Npb24tSGFzaHMgYXJlIGRlbGV0ZWQgMTUgbWludXRlcyBhZnRlciB0aGUgY3JlYXRpb24gaWYgbm90IHVzZWQuDQorICAgIAkJCTwvcD4NCisgICAgCQkJPHA+DQorICAgICAgICAgICAgICAgICAgUmV0dXJuIFR5cGU6IGphdmEubGFuZy5TdHJpbmcNCisgICAgICAgICAgICAgICAgPC9wPg0KKyAgICAJCQk8cD5QYXJhbXM6PC9wPg0KKyAgICAJCQkgICAgCQkJDQorICAgIAkJCQkgICAgCQkJPHRhYmxlIHJ1bGVzPSJhbGwiIGJvcmRlcj0iMSI+DQorCSAgICAJCQkgICA8dGhlYWQ+DQorCSAgICAJCQkgICA8dHI+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+VHlwZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+RmllbGRuYW1lPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSI0MDAiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvdGg+DQorCSAgICAJCQkgICA8L3RyPg0KKwkgICAgCQkJICAgPC90aGVhZD4NCisJICAgIAkJCSAgIDx0Ym9keT4NCisJICAgIAkJCSAgIAkgICAgCQkJICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlNJRDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIFNJRCBmcm9tIGdldFNlc3Npb248L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dXNlcm5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFueSB1c2VybmFtZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5maXJzdG5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFueSBmaXJzdG5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+bGFzdG5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFueSBsYXN0bmFtZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5wcm9maWxlUGljdHVyZVVybDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+YW55IHByb2ZpbGVQaWN0dXJlVXJsPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmVtYWlsPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hbnkgZW1haWw8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+ZXh0ZXJuYWxVc2VySWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlmIHlvdSBoYXZlIGFueSBleHRlcm5hbCB1c2VyIElkIHlvdSBtYXkgc2V0IGl0IGhlcmU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+ZXh0ZXJuYWxVc2VyVHlwZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+eW91IGNhbiBzcGVjaWZ5IHlvdXIgc3lzdGVtLW5hbWUgaGVyZSwgZm9yIGV4YW1wbGUgIm1vb2RsZSI8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUxvbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnJvb21faWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSByb29tIGlkIHRoZSB1c2VyIHNob3VsZCBiZSBsb2dnZWQgaW48L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCWludA0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+YmVjb21lTW9kZXJhdG9yQXNJbnQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjAgbWVhbnMgbm8gTW9kZXJhdG9yLCAxIG1lYW5zIE1vZGVyYXRvcjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJaW50DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5zaG93QXVkaW9WaWRlb1Rlc3RBc0ludDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+MCBtZWFucyBkb24ndCBzaG93IEF1ZGlvL1ZpZGVvIFRlc3QsIDEgbWVhbnMgc2hvdyBBdWRpby9WaWRlbworICAgICAgICAgICAgVGVzdCBBcHBsaWNhdGlvbiBiZWZvcmUgdGhlIHVzZXIgaXMgbG9nZ2VkIGludG8gdGhlIHJvb208L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQorCSAgICAJCQk8L3RhYmxlPg0KKyAgICAJCQkgICAgCQkJPGJyLz4NCisgICAgCQkJUkVTVCBTYW1wbGUgQ2FsbC9VUkw6PGJyLz4NCisgICAgCQkJICAgIAkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Vc2VyU2VydmljZS9zZXRVc2VyT2JqZWN0QW5kR2VuZXJhdGVSb29tSGFzaD9TSUQ9VkFMVUUmdXNlcm5hbWU9VkFMVUUmZmlyc3RuYW1lPVZBTFVFJmxhc3RuYW1lPVZBTFVFJnByb2ZpbGVQaWN0dXJlVXJsPVZBTFVFJmVtYWlsPVZBTFVFJmV4dGVybmFsVXNlcklkPVZBTFVFJmV4dGVybmFsVXNlclR5cGU9VkFMVUUmcm9vbV9pZD1WQUxVRSZiZWNvbWVNb2RlcmF0b3JBc0ludD1WQUxVRSZzaG93QXVkaW9WaWRlb1Rlc3RBc0ludD1WQUxVRSI+aHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Vc2VyU2VydmljZS9zZXRVc2VyT2JqZWN0QW5kR2VuZXJhdGVSb29tSGFzaD9TSUQ9VkFMVUUmYW1wO3VzZXJuYW1lPVZBTFVFJmFtcDtmaXJzdG5hbWU9VkFMVUUmYW1wO2xhc3RuYW1lPVZBTFVFJmFtcDtwcm9maWxlUGljdHVyZVVybD1WQUxVRSZhbXA7ZW1haWw9VkFMVUUmYW1wO2V4dGVybmFsVXNlcklkPVZBTFVFJmFtcDtleHRlcm5hbFVzZXJUeXBlPVZBTFVFJmFtcDtyb29tX2lkPVZBTFVFJmFtcDtiZWNvbWVNb2RlcmF0b3JBc0ludD1WQUxVRSZhbXA7c2hvd0F1ZGlvVmlkZW9UZXN0QXNJbnQ9VkFMVUU8L2E+DQorICAgIAkJICA8L2Rpdj4NCisgICAgCSAgIAkJCQkgICAgCQkgICAgICA8ZGl2IGNsYXNzPSJtZXRob2QiPg0KKwkJICAgICAgICA8ZGl2IGNsYXNzPSJtZXRob2RfaGVhZGVyIj4NCisJCSAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTBweCI+DQorICAgIAkJCTxhIG5hbWU9InNldFVzZXJPYmplY3RBbmRHZW5lcmF0ZVJvb21IYXNoQnlVUkwiID48Yj5zZXRVc2VyT2JqZWN0QW5kR2VuZXJhdGVSb29tSGFzaEJ5VVJMPC9iPjwvYT4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQkNCisgICAgCQkJTWV0aG9kOiA8aT5zZXRVc2VyT2JqZWN0QW5kR2VuZXJhdGVSb29tSGFzaEJ5VVJMICgNCisgICAgCQkJICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIFNJRA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgdXNlcm5hbWUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGZpcnN0bmFtZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgbGFzdG5hbWUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIHByb2ZpbGVQaWN0dXJlVXJsDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBlbWFpbA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgZXh0ZXJuYWxVc2VySWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGV4dGVybmFsVXNlclR5cGUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgTG9uZyByb29tX2lkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIGludCBiZWNvbWVNb2RlcmF0b3JBc0ludA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBpbnQgc2hvd0F1ZGlvVmlkZW9UZXN0QXNJbnQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkpDQorICAgIAkJCTwvaT48YnIvPg0KKyAgICAJCQk8cD4NCisgICAgCQkJICBEZXNjcmlwdGlvbjogc2V0cyB0aGUgU2Vzc2lvbk9iamVjdCBmb3IgYSBjZXJ0YWluIFNJRCwgYWZ0ZXIgc2V0dGluZyB0aGlzCisgU2Vzc2lvbi1PYmplY3QgeW91IGNhbiB1c2UgdGhlIFNJRCArIGEgUm9vbUlkIHRvIGVudGVyIGFueSBSb29tLgorIAorICsrIHRoZSB1c2VyIGNhbiBwcmVzcyBmNSB0byByZWxvYWQgdGhlIHBhZ2UgLyB1c2UgdGhlIGxpbmsgc2V2ZXJhbCB0aW1lcywKKyB0aGUgU09BUCBHYXRld2F5IGRvZXMgcmVtZW1iZXIgdGhlIElQIG9mIHRoZSB1c2VyIGFuZCB0aGUgd2lsbCBvbmx5IHRoZQorIGZpcnN0IHVzZXIgdGhhdCBlbnRlcnMgdGhlIHJvb20gYWxsb3cgdG8gcmUtZW50ZXIuIC4uLiBTZXNzaW9uLUhhc2hzIGFyZQorIGRlbGV0ZWQgMTUgbWludXRlcyBhZnRlciB0aGUgY3JlYXRpb24gaWYgbm90IHVzZWQuDQorICAgIAkJCTwvcD4NCisgICAgCQkJPHA+DQorICAgICAgICAgICAgICAgICAgUmV0dXJuIFR5cGU6IGphdmEubGFuZy5TdHJpbmcNCisgICAgICAgICAgICAgICAgPC9wPg0KKyAgICAJCQk8cD5QYXJhbXM6PC9wPg0KKyAgICAJCQkgICAgCQkJDQorICAgIAkJCQkgICAgCQkJPHRhYmxlIHJ1bGVzPSJhbGwiIGJvcmRlcj0iMSI+DQorCSAgICAJCQkgICA8dGhlYWQ+DQorCSAgICAJCQkgICA8dHI+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+VHlwZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+RmllbGRuYW1lPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSI0MDAiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvdGg+DQorCSAgICAJCQkgICA8L3RyPg0KKwkgICAgCQkJICAgPC90aGVhZD4NCisJICAgIAkJCSAgIDx0Ym9keT4NCisJICAgIAkJCSAgIAkgICAgCQkJICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlNJRDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIFNJRCBmcm9tIGdldFNlc3Npb248L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dXNlcm5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFueSB1c2VybmFtZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5maXJzdG5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFueSBmaXJzdG5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+bGFzdG5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFueSBsYXN0bmFtZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5wcm9maWxlUGljdHVyZVVybDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+YW55IHByb2ZpbGVQaWN0dXJlVXJsPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmVtYWlsPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hbnkgZW1haWwgYW55IGVtYWlsPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmV4dGVybmFsVXNlcklkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5pZiB5b3UgaGF2ZSBhbnkgZXh0ZXJuYWwgdXNlciBJZCB5b3UgbWF5IHNldCBpdCBoZXJlPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmV4dGVybmFsVXNlclR5cGU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnlvdSBjYW4gc3BlY2lmeSB5b3VyIHN5c3RlbS1uYW1lIGhlcmUsIGZvciBleGFtcGxlICJtb29kbGUiPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5yb29tX2lkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aGUgcm9vbSBpZCB0aGUgdXNlciBzaG91bGQgYmUgbG9nZ2VkIGluPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlpbnQNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmJlY29tZU1vZGVyYXRvckFzSW50PC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4wIG1lYW5zIG5vIE1vZGVyYXRvciwgMSBtZWFucyBNb2RlcmF0b3I8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCWludA0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+c2hvd0F1ZGlvVmlkZW9UZXN0QXNJbnQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjAgbWVhbnMgZG9uJ3Qgc2hvdyBBdWRpby9WaWRlbyBUZXN0LCAxIG1lYW5zIHNob3cgQXVkaW8vVmlkZW8KKyAgICAgICAgICAgIFRlc3QgQXBwbGljYXRpb24gYmVmb3JlIHRoZSB1c2VyIGlzIGxvZ2dlZCBpbnRvIHRoZSByb29tPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KKwkgICAgCQkJPC90YWJsZT4NCisgICAgCQkJICAgIAkJCTxici8+DQorICAgIAkJCVJFU1QgU2FtcGxlIENhbGwvVVJMOjxici8+DQorICAgIAkJCSAgICAJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvVXNlclNlcnZpY2Uvc2V0VXNlck9iamVjdEFuZEdlbmVyYXRlUm9vbUhhc2hCeVVSTD9TSUQ9VkFMVUUmdXNlcm5hbWU9VkFMVUUmZmlyc3RuYW1lPVZBTFVFJmxhc3RuYW1lPVZBTFVFJnByb2ZpbGVQaWN0dXJlVXJsPVZBTFVFJmVtYWlsPVZBTFVFJmV4dGVybmFsVXNlcklkPVZBTFVFJmV4dGVybmFsVXNlclR5cGU9VkFMVUUmcm9vbV9pZD1WQUxVRSZiZWNvbWVNb2RlcmF0b3JBc0ludD1WQUxVRSZzaG93QXVkaW9WaWRlb1Rlc3RBc0ludD1WQUxVRSI+aHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Vc2VyU2VydmljZS9zZXRVc2VyT2JqZWN0QW5kR2VuZXJhdGVSb29tSGFzaEJ5VVJMP1NJRD1WQUxVRSZhbXA7dXNlcm5hbWU9VkFMVUUmYW1wO2ZpcnN0bmFtZT1WQUxVRSZhbXA7bGFzdG5hbWU9VkFMVUUmYW1wO3Byb2ZpbGVQaWN0dXJlVXJsPVZBTFVFJmFtcDtlbWFpbD1WQUxVRSZhbXA7ZXh0ZXJuYWxVc2VySWQ9VkFMVUUmYW1wO2V4dGVybmFsVXNlclR5cGU9VkFMVUUmYW1wO3Jvb21faWQ9VkFMVUUmYW1wO2JlY29tZU1vZGVyYXRvckFzSW50PVZBTFVFJmFtcDtzaG93QXVkaW9WaWRlb1Rlc3RBc0ludD1WQUxVRTwvYT4NCisgICAgCQkgIDwvZGl2Pg0KKyAgICAJICAgCQkJCSAgICAJCSAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZCI+DQorCQkgICAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZF9oZWFkZXIiPg0KKwkJICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDoxMHB4Ij4NCisgICAgCQkJPGEgbmFtZT0ic2V0VXNlck9iamVjdEFuZEdlbmVyYXRlUm9vbUhhc2hCeVVSTEFuZFJlY0ZsYWciID48Yj5zZXRVc2VyT2JqZWN0QW5kR2VuZXJhdGVSb29tSGFzaEJ5VVJMQW5kUmVjRmxhZzwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+c2V0VXNlck9iamVjdEFuZEdlbmVyYXRlUm9vbUhhc2hCeVVSTEFuZFJlY0ZsYWcgKA0KKyAgICAJCQkgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgU0lEDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyB1c2VybmFtZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgZmlyc3RuYW1lDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBsYXN0bmFtZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgcHJvZmlsZVBpY3R1cmVVcmwNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGVtYWlsDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBleHRlcm5hbFVzZXJJZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgZXh0ZXJuYWxVc2VyVHlwZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBMb25nIHJvb21faWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgaW50IGJlY29tZU1vZGVyYXRvckFzSW50DQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIGludCBzaG93QXVkaW9WaWRlb1Rlc3RBc0ludA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBpbnQgYWxsb3dSZWNvcmRpbmcNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkpDQorICAgIAkJCTwvaT48YnIvPg0KKyAgICAJCQk8cD4NCisgICAgCQkJICBEZXNjcmlwdGlvbjogc2V0cyB0aGUgU2Vzc2lvbk9iamVjdCBmb3IgYSBjZXJ0YWluIFNJRCwgYWZ0ZXIgc2V0dGluZyB0aGlzCisgU2Vzc2lvbi1PYmplY3QgeW91IGNhbiB1c2UgdGhlIFNJRCArIGEgUm9vbUlkIHRvIGVudGVyIGFueSBSb29tLgorIAorICsrIHRoZSB1c2VyIGNhbiBwcmVzcyBmNSB0byByZWxvYWQgdGhlIHBhZ2UgLyB1c2UgdGhlIGxpbmsgc2V2ZXJhbCB0aW1lcywKKyB0aGUgU09BUCBHYXRld2F5IGRvZXMgcmVtZW1iZXIgdGhlIElQIG9mIHRoZSB1c2VyIGFuZCB0aGUgd2lsbCBvbmx5IHRoZQorIGZpcnN0IHVzZXIgdGhhdCBlbnRlcnMgdGhlIHJvb20gYWxsb3cgdG8gcmUtZW50ZXIuIC4uLiBTZXNzaW9uLUhhc2hzIGFyZQorIGRlbGV0ZWQgMTUgbWludXRlcyBhZnRlciB0aGUgY3JlYXRpb24gaWYgbm90IHVzZWQuCisgCisgKysgc2V0cyB0aGUgZmxhZyBpZiB0aGUgdXNlciBjYW4gZG8gcmVjb3JkaW5nIGluIHRoZSBjb25mZXJlbmNlIHJvb20NCisgICAgCQkJPC9wPg0KKyAgICAJCQk8cD4NCisgICAgICAgICAgICAgICAgICBSZXR1cm4gVHlwZTogamF2YS5sYW5nLlN0cmluZw0KKyAgICAgICAgICAgICAgICA8L3A+DQorICAgIAkJCTxwPlBhcmFtczo8L3A+DQorICAgIAkJCSAgICAJCQkNCisgICAgCQkJCSAgICAJCQk8dGFibGUgcnVsZXM9ImFsbCIgYm9yZGVyPSIxIj4NCisJICAgIAkJCSAgIDx0aGVhZD4NCisJICAgIAkJCSAgIDx0cj4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5UeXBlPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5GaWVsZG5hbWU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjQwMCIgYWxpZ249ImxlZnQiPkRlc2NyaXB0aW9uPC90aD4NCisJICAgIAkJCSAgIDwvdHI+DQorCSAgICAJCQkgICA8L3RoZWFkPg0KKwkgICAgCQkJICAgPHRib2R5Pg0KKwkgICAgCQkJICAgCSAgICAJCQkgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+U0lEPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5UaGUgU0lEIGZyb20gZ2V0U2Vzc2lvbjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj51c2VybmFtZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+YW55IHVzZXJuYW1lPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmZpcnN0bmFtZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+YW55IGZpcnN0bmFtZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5sYXN0bmFtZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+YW55IGxhc3RuYW1lPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnByb2ZpbGVQaWN0dXJlVXJsPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hbnkgcHJvZmlsZVBpY3R1cmVVcmw8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+ZW1haWw8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFueSBlbWFpbDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5leHRlcm5hbFVzZXJJZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aWYgeW91IGhhdmUgYW55IGV4dGVybmFsIHVzZXIgSWQgeW91IG1heSBzZXQgaXQgaGVyZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5leHRlcm5hbFVzZXJUeXBlPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj55b3UgY2FuIHNwZWNpZnkgeW91ciBzeXN0ZW0tbmFtZSBoZXJlLCBmb3IgZXhhbXBsZSAibW9vZGxlIjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJTG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+cm9vbV9pZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGhlIHJvb20gaWQgdGhlIHVzZXIgc2hvdWxkIGJlIGxvZ2dlZCBpbjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJaW50DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5iZWNvbWVNb2RlcmF0b3JBc0ludDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+MCBtZWFucyBubyBNb2RlcmF0b3IsIDEgbWVhbnMgTW9kZXJhdG9yPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlpbnQNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnNob3dBdWRpb1ZpZGVvVGVzdEFzSW50PC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4wIG1lYW5zIGRvbid0IHNob3cgQXVkaW8vVmlkZW8gVGVzdCwgMSBtZWFucyBzaG93IEF1ZGlvL1ZpZGVvCisgICAgICAgICAgICBUZXN0IEFwcGxpY2F0aW9uIGJlZm9yZSB0aGUgdXNlciBpcyBsb2dnZWQgaW50byB0aGUgcm9vbTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJaW50DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hbGxvd1JlY29yZGluZzwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+MCBtZWFucyBkb24ndCBhbGxvdyBSZWNvcmRpbmcsIDEgbWVhbnMgYWxsb3cgUmVjb3JkaW5nPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KKwkgICAgCQkJPC90YWJsZT4NCisgICAgCQkJICAgIAkJCTxici8+DQorICAgIAkJCVJFU1QgU2FtcGxlIENhbGwvVVJMOjxici8+DQorICAgIAkJCSAgICAJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Vc2VyU2VydmljZS9zZXRVc2VyT2JqZWN0QW5kR2VuZXJhdGVSb29tSGFzaEJ5VVJMQW5kUmVjRmxhZz9TSUQ9VkFMVUUmdXNlcm5hbWU9VkFMVUUmZmlyc3RuYW1lPVZBTFVFJmxhc3RuYW1lPVZBTFVFJnByb2ZpbGVQaWN0dXJlVXJsPVZBTFVFJmVtYWlsPVZBTFVFJmV4dGVybmFsVXNlcklkPVZBTFVFJmV4dGVybmFsVXNlclR5cGU9VkFMVUUmcm9vbV9pZD1WQUxVRSZiZWNvbWVNb2RlcmF0b3JBc0ludD1WQUxVRSZzaG93QXVkaW9WaWRlb1Rlc3RBc0ludD1WQUxVRSZhbGxvd1JlY29yZGluZz1WQUxVRSI+aHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Vc2VyU2VydmljZS9zZXRVc2VyT2JqZWN0QW5kR2VuZXJhdGVSb29tSGFzaEJ5VVJMQW5kUmVjRmxhZz9TSUQ9VkFMVUUmYW1wO3VzZXJuYW1lPVZBTFVFJmFtcDtmaXJzdG5hbWU9VkFMVUUmYW1wO2xhc3RuYW1lPVZBTFVFJmFtcDtwcm9maWxlUGljdHVyZVVybD1WQUxVRSZhbXA7ZW1haWw9VkFMVUUmYW1wO2V4dGVybmFsVXNlcklkPVZBTFVFJmFtcDtleHRlcm5hbFVzZXJUeXBlPVZBTFVFJmFtcDtyb29tX2lkPVZBTFVFJmFtcDtiZWNvbWVNb2RlcmF0b3JBc0ludD1WQUxVRSZhbXA7c2hvd0F1ZGlvVmlkZW9UZXN0QXNJbnQ9VkFMVUUmYW1wO2FsbG93UmVjb3JkaW5nPVZBTFVFPC9hPg0KKyAgICAJCSAgPC9kaXY+DQorICAgIAkgICAJCQkJICAgIAkJICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kIj4NCisJCSAgICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kX2hlYWRlciI+DQorCQkgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjEwcHgiPg0KKyAgICAJCQk8YSBuYW1lPSJzZXRVc2VyT2JqZWN0TWFpbkxhbmRpbmdab25lIiA+PGI+c2V0VXNlck9iamVjdE1haW5MYW5kaW5nWm9uZTwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+c2V0VXNlck9iamVjdE1haW5MYW5kaW5nWm9uZSAoDQorICAgIAkJCSAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBTSUQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIHVzZXJuYW1lDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBmaXJzdG5hbWUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGxhc3RuYW1lDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBwcm9maWxlUGljdHVyZVVybA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgZW1haWwNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGV4dGVybmFsVXNlcklkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBleHRlcm5hbFVzZXJUeXBlDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJKQ0KKyAgICAJCQk8L2k+PGJyLz4NCisgICAgCQkJPHA+DQorICAgIAkJCSAgRGVzY3JpcHRpb246IHNldHMgdGhlIFNlc3Npb25PYmplY3QgZm9yIGEgY2VydGFpbiBTSUQsIGFmdGVyIHNldHRpbmcgdGhpcworIFNlc3Npb24tT2JqZWN0IHlvdSBjYW4gdXNlIHRoZSBTSUQgYW5kIGRpcmVjdGx5IGxvZ2luIGludG8gdGhlIGRhc2hib2FyZAorIAorICsrIHRoZSB1c2VyIGNhbiBwcmVzcyBmNSB0byByZWxvYWQgdGhlIHBhZ2UgLyB1c2UgdGhlIGxpbmsgc2V2ZXJhbCB0aW1lcywKKyB0aGUgU09BUCBHYXRld2F5IGRvZXMgcmVtZW1iZXIgdGhlIElQIG9mIHRoZSB1c2VyIGFuZCB0aGUgd2lsbCBvbmx5IHRoZQorIGZpcnN0IHVzZXIgdGhhdCBlbnRlcnMgdGhlIHJvb20gYWxsb3cgdG8gcmUtZW50ZXIuIC4uLiBTZXNzaW9uLUhhc2hzIGFyZQorIGRlbGV0ZWQgMTUgbWludXRlcyBhZnRlciB0aGUgY3JlYXRpb24gaWYgbm90IHVzZWQuDQorICAgIAkJCTwvcD4NCisgICAgCQkJPHA+DQorICAgICAgICAgICAgICAgICAgUmV0dXJuIFR5cGU6IGphdmEubGFuZy5TdHJpbmcNCisgICAgICAgICAgICAgICAgPC9wPg0KKyAgICAJCQk8cD5QYXJhbXM6PC9wPg0KKyAgICAJCQkgICAgCQkJDQorICAgIAkJCQkgICAgCQkJPHRhYmxlIHJ1bGVzPSJhbGwiIGJvcmRlcj0iMSI+DQorCSAgICAJCQkgICA8dGhlYWQ+DQorCSAgICAJCQkgICA8dHI+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+VHlwZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+RmllbGRuYW1lPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSI0MDAiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvdGg+DQorCSAgICAJCQkgICA8L3RyPg0KKwkgICAgCQkJICAgPC90aGVhZD4NCisJICAgIAkJCSAgIDx0Ym9keT4NCisJICAgIAkJCSAgIAkgICAgCQkJICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlNJRDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIFNJRCBmcm9tIGdldFNlc3Npb248L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dXNlcm5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFueSB1c2VybmFtZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5maXJzdG5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFueSBmaXJzdG5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+bGFzdG5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFueSBsYXN0bmFtZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5wcm9maWxlUGljdHVyZVVybDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+YW55IGFic29sdXRlIHByb2ZpbGVQaWN0dXJlVXJsPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmVtYWlsPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hbnkgZW1haWw8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+ZXh0ZXJuYWxVc2VySWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmlmIHlvdSBoYXZlIGFueSBleHRlcm5hbCB1c2VyIElkIHlvdSBtYXkgc2V0IGl0IGhlcmU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+ZXh0ZXJuYWxVc2VyVHlwZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+eW91IGNhbiBzcGVjaWZ5IHlvdXIgc3lzdGVtLW5hbWUgaGVyZSwgZm9yIGV4YW1wbGUgIm1vb2RsZSI8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQorCSAgICAJCQk8L3RhYmxlPg0KKyAgICAJCQkgICAgCQkJPGJyLz4NCisgICAgCQkJUkVTVCBTYW1wbGUgQ2FsbC9VUkw6PGJyLz4NCisgICAgCQkJICAgIAkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Vc2VyU2VydmljZS9zZXRVc2VyT2JqZWN0TWFpbkxhbmRpbmdab25lP1NJRD1WQUxVRSZ1c2VybmFtZT1WQUxVRSZmaXJzdG5hbWU9VkFMVUUmbGFzdG5hbWU9VkFMVUUmcHJvZmlsZVBpY3R1cmVVcmw9VkFMVUUmZW1haWw9VkFMVUUmZXh0ZXJuYWxVc2VySWQ9VkFMVUUmZXh0ZXJuYWxVc2VyVHlwZT1WQUxVRSI+aHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Vc2VyU2VydmljZS9zZXRVc2VyT2JqZWN0TWFpbkxhbmRpbmdab25lP1NJRD1WQUxVRSZhbXA7dXNlcm5hbWU9VkFMVUUmYW1wO2ZpcnN0bmFtZT1WQUxVRSZhbXA7bGFzdG5hbWU9VkFMVUUmYW1wO3Byb2ZpbGVQaWN0dXJlVXJsPVZBTFVFJmFtcDtlbWFpbD1WQUxVRSZhbXA7ZXh0ZXJuYWxVc2VySWQ9VkFMVUUmYW1wO2V4dGVybmFsVXNlclR5cGU9VkFMVUU8L2E+DQorICAgIAkJICA8L2Rpdj4NCisgICAgCSAgIAkJCQkgICAgCQkgICAgICA8ZGl2IGNsYXNzPSJtZXRob2QiPg0KKwkJICAgICAgICA8ZGl2IGNsYXNzPSJtZXRob2RfaGVhZGVyIj4NCisJCSAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTBweCI+DQorICAgIAkJCTxhIG5hbWU9InNldFVzZXJBbmROaWNrTmFtZSIgPjxiPnNldFVzZXJBbmROaWNrTmFtZTwvYj48L2E+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJDQorICAgIAkJCU1ldGhvZDogPGk+c2V0VXNlckFuZE5pY2tOYW1lICgNCisgICAgCQkJICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIFNJRA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgdXNlcm5hbWUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGZpcnN0bmFtZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgbGFzdG5hbWUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIHByb2ZpbGVQaWN0dXJlVXJsDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBlbWFpbA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgZXh0ZXJuYWxVc2VySWQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGV4dGVybmFsVXNlclR5cGUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgTG9uZyByb29tX2lkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIGludCBiZWNvbWVNb2RlcmF0b3JBc0ludA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBpbnQgc2hvd0F1ZGlvVmlkZW9UZXN0QXNJbnQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgaW50IHNob3dOaWNrTmFtZURpYWxvZ0FzSW50DQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJKQ0KKyAgICAJCQk8L2k+PGJyLz4NCisgICAgCQkJPHA+DQorICAgIAkJCSAgRGVzY3JpcHRpb246IHNldHMgdGhlIFNlc3Npb25PYmplY3QgZm9yIGEgY2VydGFpbiBTSUQsIGFmdGVyIHNldHRpbmcgdGhpcworIFNlc3Npb24tT2JqZWN0IHlvdSBjYW4gdXNlIHRoZSBTSUQgKyBhIFJvb21JZCB0byBlbnRlciBhbnkgUm9vbS4KKyAKKyArKyB0aGUgdXNlciBjYW4gcHJlc3MgZjUgdG8gcmVsb2FkIHRoZSBwYWdlIC8gdXNlIHRoZSBsaW5rIHNldmVyYWwgdGltZXMsCisgdGhlIFNPQVAgR2F0ZXdheSBkb2VzIHJlbWVtYmVyIHRoZSBJUCBvZiB0aGUgdXNlciBhbmQgdGhlIHdpbGwgb25seSB0aGUKKyBmaXJzdCB1c2VyIHRoYXQgZW50ZXJzIHRoZSByb29tIGFsbG93IHRvIHJlLWVudGVyLiAuLi4gU2Vzc2lvbi1IYXNocyBhcmUKKyBkZWxldGVkIDE1IG1pbnV0ZXMgYWZ0ZXIgdGhlIGNyZWF0aW9uIGlmIG5vdCB1c2VkLgorIAorICsrIEFkZGl0aW9uYWxseSB5b3UgY2FuIHNldCBhIHBhcmFtIHNob3dOaWNrTmFtZURpYWxvZ0FzSW50LCB0aGUgZWZmZWN0CisgaWYgdGhhdCBwYXJhbSBpcyAxIGlzLCB0aGF0IHRoZSB1c2VyIGdldHMgYSBwb3B1cCB3aGVyZSBoZSBjYW4gZW50ZXIgaGlzCisgbmlja25hbWUgcmlnaHQgYmVmb3JlIGhlIGVudGVycyB0aGUgY29uZmVyZW5jZSByb29tLiBBbGwgbmlja25hbWVzIGFuZAorIGVtYWlscyB1c2VycyBlbnRlciBhcmUgbG9nZ2VkIGluIHRoZSBjb25mZXJlbmNlbG9nIHRhYmxlLg0KKyAgICAJCQk8L3A+DQorICAgIAkJCTxwPg0KKyAgICAgICAgICAgICAgICAgIFJldHVybiBUeXBlOiBqYXZhLmxhbmcuU3RyaW5nDQorICAgICAgICAgICAgICAgIDwvcD4NCisgICAgCQkJPHA+UGFyYW1zOjwvcD4NCisgICAgCQkJICAgIAkJCQ0KKyAgICAJCQkJICAgIAkJCTx0YWJsZSBydWxlcz0iYWxsIiBib3JkZXI9IjEiPg0KKwkgICAgCQkJICAgPHRoZWFkPg0KKwkgICAgCQkJICAgPHRyPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPlR5cGU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPkZpZWxkbmFtZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iNDAwIiBhbGlnbj0ibGVmdCI+RGVzY3JpcHRpb248L3RoPg0KKwkgICAgCQkJICAgPC90cj4NCisJICAgIAkJCSAgIDwvdGhlYWQ+DQorCSAgICAJCQkgICA8dGJvZHk+DQorCSAgICAJCQkgICAJICAgIAkJCSAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5TSUQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlRoZSBTSUQgZnJvbSBnZXRTZXNzaW9uPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnVzZXJuYW1lPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hbnkgdXNlcm5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+Zmlyc3RuYW1lPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hbnkgZmlyc3RuYW1lPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmxhc3RuYW1lPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hbnkgbGFzdG5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+cHJvZmlsZVBpY3R1cmVVcmw8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFueSBwcm9maWxlUGljdHVyZVVybDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5lbWFpbDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+YW55IGVtYWlsPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmV4dGVybmFsVXNlcklkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5pZiB5b3UgaGF2ZSBhbnkgZXh0ZXJuYWwgdXNlciBJZCB5b3UgbWF5IHNldCBpdCBoZXJlPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmV4dGVybmFsVXNlclR5cGU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnlvdSBjYW4gc3BlY2lmeSB5b3VyIHN5c3RlbS1uYW1lIGhlcmUsIGZvciBleGFtcGxlICJtb29kbGUiPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlMb25nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5yb29tX2lkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aGUgcm9vbSBpZCB0aGUgdXNlciBzaG91bGQgYmUgbG9nZ2VkIGluPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlpbnQNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmJlY29tZU1vZGVyYXRvckFzSW50PC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4wIG1lYW5zIG5vIE1vZGVyYXRvciwgMSBtZWFucyBNb2RlcmF0b3I8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCWludA0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+c2hvd0F1ZGlvVmlkZW9UZXN0QXNJbnQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPjAgbWVhbnMgZG9uJ3Qgc2hvdyBBdWRpby9WaWRlbyBUZXN0LCAxIG1lYW5zIHNob3cgQXVkaW8vVmlkZW8KKyAgICAgICAgICAgIFRlc3QgQXBwbGljYXRpb24gYmVmb3JlIHRoZSB1c2VyIGlzIGxvZ2dlZCBpbnRvIHRoZSByb29tPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlpbnQNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnNob3dOaWNrTmFtZURpYWxvZ0FzSW50PC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4wIG1lYW5zIGRvIG5vdCBzaG93IHRoZSBwb3B1cCB0byBlbnRlciBhIG5pY2huYW1lLCAxIG1lYW5zCisgICAgICAgICAgICB0aGF0IHRoZXJlIGlzIGEgcG9wdXAgdG8gZW50ZXIgdGhlIG5pY2tuYW1lIGZvciB0aGUgY29uZmVyZW5jZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCisJICAgIAkJCTwvdGFibGU+DQorICAgIAkJCSAgICAJCQk8YnIvPg0KKyAgICAJCQlSRVNUIFNhbXBsZSBDYWxsL1VSTDo8YnIvPg0KKyAgICAJCQkgICAgCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvVXNlclNlcnZpY2Uvc2V0VXNlckFuZE5pY2tOYW1lP1NJRD1WQUxVRSZ1c2VybmFtZT1WQUxVRSZmaXJzdG5hbWU9VkFMVUUmbGFzdG5hbWU9VkFMVUUmcHJvZmlsZVBpY3R1cmVVcmw9VkFMVUUmZW1haWw9VkFMVUUmZXh0ZXJuYWxVc2VySWQ9VkFMVUUmZXh0ZXJuYWxVc2VyVHlwZT1WQUxVRSZyb29tX2lkPVZBTFVFJmJlY29tZU1vZGVyYXRvckFzSW50PVZBTFVFJnNob3dBdWRpb1ZpZGVvVGVzdEFzSW50PVZBTFVFJnNob3dOaWNrTmFtZURpYWxvZ0FzSW50PVZBTFVFIj5odHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1VzZXJTZXJ2aWNlL3NldFVzZXJBbmROaWNrTmFtZT9TSUQ9VkFMVUUmYW1wO3VzZXJuYW1lPVZBTFVFJmFtcDtmaXJzdG5hbWU9VkFMVUUmYW1wO2xhc3RuYW1lPVZBTFVFJmFtcDtwcm9maWxlUGljdHVyZVVybD1WQUxVRSZhbXA7ZW1haWw9VkFMVUUmYW1wO2V4dGVybmFsVXNlcklkPVZBTFVFJmFtcDtleHRlcm5hbFVzZXJUeXBlPVZBTFVFJmFtcDtyb29tX2lkPVZBTFVFJmFtcDtiZWNvbWVNb2RlcmF0b3JBc0ludD1WQUxVRSZhbXA7c2hvd0F1ZGlvVmlkZW9UZXN0QXNJbnQ9VkFMVUUmYW1wO3Nob3dOaWNrTmFtZURpYWxvZ0FzSW50PVZBTFVFPC9hPg0KKyAgICAJCSAgPC9kaXY+DQorICAgIAkgICAJCQkJICAgIAkJICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kIj4NCisJCSAgICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kX2hlYWRlciI+DQorCQkgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjEwcHgiPg0KKyAgICAJCQk8YSBuYW1lPSJzZXRVc2VyT2JqZWN0QW5kR2VuZXJhdGVSZWNvcmRpbmdIYXNoQnlVUkwiID48Yj5zZXRVc2VyT2JqZWN0QW5kR2VuZXJhdGVSZWNvcmRpbmdIYXNoQnlVUkw8L2I+PC9hPg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCQ0KKyAgICAJCQlNZXRob2Q6IDxpPnNldFVzZXJPYmplY3RBbmRHZW5lcmF0ZVJlY29yZGluZ0hhc2hCeVVSTCAoDQorICAgIAkJCSAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBTSUQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIHVzZXJuYW1lDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBmaXJzdG5hbWUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIGxhc3RuYW1lDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBleHRlcm5hbFVzZXJJZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgZXh0ZXJuYWxVc2VyVHlwZQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBMb25nIHJlY29yZGluZ19pZA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSkNCisgICAgCQkJPC9pPjxici8+DQorICAgIAkJCTxwPg0KKyAgICAJCQkgIFVzZSB0aGlzIG1ldGhvZCB0byBhY2Nlc3MgYSBSZWNvcmRpbmcgaW5zdGVhZCBvZiBSb29tDQorICAgIAkJCTwvcD4NCisgICAgCQkJPHA+DQorICAgICAgICAgICAgICAgICAgUmV0dXJuIFR5cGU6IGphdmEubGFuZy5TdHJpbmcNCisgICAgICAgICAgICAgICAgPC9wPg0KKyAgICAJCQk8cD5QYXJhbXM6PC9wPg0KKyAgICAJCQkgICAgCQkJDQorICAgIAkJCQkgICAgCQkJPHRhYmxlIHJ1bGVzPSJhbGwiIGJvcmRlcj0iMSI+DQorCSAgICAJCQkgICA8dGhlYWQ+DQorCSAgICAJCQkgICA8dHI+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+VHlwZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+RmllbGRuYW1lPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSI0MDAiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvdGg+DQorCSAgICAJCQkgICA8L3RyPg0KKwkgICAgCQkJICAgPC90aGVhZD4NCisJICAgIAkJCSAgIDx0Ym9keT4NCisJICAgIAkJCSAgIAkgICAgCQkJICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlNJRDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIFNJRCBmcm9tIGdldFNlc3Npb248L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dXNlcm5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFueSB1c2VybmFtZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5maXJzdG5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFueSBmaXJzdG5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+bGFzdG5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPmFueSBsYXN0bmFtZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5leHRlcm5hbFVzZXJJZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aWYgeW91IGhhdmUgYW55IGV4dGVybmFsIHVzZXIgSWQgeW91IG1heSBzZXQgaXQgaGVyZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5leHRlcm5hbFVzZXJUeXBlPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj55b3UgY2FuIHNwZWNpZnkgeW91ciBzeXN0ZW0tbmFtZSBoZXJlLCBmb3IgZXhhbXBsZSAibW9vZGxlIjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJTG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+cmVjb3JkaW5nX2lkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aGUgaWQgb2YgdGhlIHJlY29yZGluZywgZ2V0IGEgTGlzdCBvZiBhbGwgUmVjb3JkaW5ncyB3aXRoCisgICAgICAgICAgICBSb29tU2VydmljZTo6Z2V0Rmx2UmVjb3JkaW5nQnlFeHRlcm5hbFJvb21UeXBlPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICA8L3Rib2R5Pg0KKwkgICAgCQkJPC90YWJsZT4NCisgICAgCQkJICAgIAkJCTxici8+DQorICAgIAkJCVJFU1QgU2FtcGxlIENhbGwvVVJMOjxici8+DQorICAgIAkJCSAgICAJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1VzZXJTZXJ2aWNlL3NldFVzZXJPYmplY3RBbmRHZW5lcmF0ZVJlY29yZGluZ0hhc2hCeVVSTD9TSUQ9VkFMVUUmdXNlcm5hbWU9VkFMVUUmZmlyc3RuYW1lPVZBTFVFJmxhc3RuYW1lPVZBTFVFJmV4dGVybmFsVXNlcklkPVZBTFVFJmV4dGVybmFsVXNlclR5cGU9VkFMVUUmcmVjb3JkaW5nX2lkPVZBTFVFIj5odHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1VzZXJTZXJ2aWNlL3NldFVzZXJPYmplY3RBbmRHZW5lcmF0ZVJlY29yZGluZ0hhc2hCeVVSTD9TSUQ9VkFMVUUmYW1wO3VzZXJuYW1lPVZBTFVFJmFtcDtmaXJzdG5hbWU9VkFMVUUmYW1wO2xhc3RuYW1lPVZBTFVFJmFtcDtleHRlcm5hbFVzZXJJZD1WQUxVRSZhbXA7ZXh0ZXJuYWxVc2VyVHlwZT1WQUxVRSZhbXA7cmVjb3JkaW5nX2lkPVZBTFVFPC9hPg0KKyAgICAJCSAgPC9kaXY+DQorICAgIAkgICAJCQkJICAgIAkJICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kIj4NCisJCSAgICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kX2hlYWRlciI+DQorCQkgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjEwcHgiPg0KKyAgICAJCQk8YSBuYW1lPSJhZGRVc2VyVG9PcmdhbmlzYXRpb24iID48Yj5hZGRVc2VyVG9PcmdhbmlzYXRpb248L2I+PC9hPg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCQ0KKyAgICAJCQlNZXRob2Q6IDxpPmFkZFVzZXJUb09yZ2FuaXNhdGlvbiAoDQorICAgIAkJCSAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBTSUQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgTG9uZyB1c2VyX2lkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIExvbmcgb3JnYW5pc2F0aW9uX2lkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIExvbmcgaW5zZXJ0ZWRieQ0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSkNCisgICAgCQkJPC9pPjxici8+DQorICAgIAkJCTxwPg0KKyAgICAJCQkgIEFkZCBhIHVzZXIgdG8gYSBjZXJ0YWluIG9yZ2FuaXphdGlvbg0KKyAgICAJCQk8L3A+DQorICAgIAkJCTxwPg0KKyAgICAgICAgICAgICAgICAgIFJldHVybiBUeXBlOiBqYXZhLmxhbmcuTG9uZw0KKyAgICAgICAgICAgICAgICA8L3A+DQorICAgIAkJCTxwPlBhcmFtczo8L3A+DQorICAgIAkJCSAgICAJCQkNCisgICAgCQkJCSAgICAJCQk8dGFibGUgcnVsZXM9ImFsbCIgYm9yZGVyPSIxIj4NCisJICAgIAkJCSAgIDx0aGVhZD4NCisJICAgIAkJCSAgIDx0cj4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5UeXBlPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5GaWVsZG5hbWU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjQwMCIgYWxpZ249ImxlZnQiPkRlc2NyaXB0aW9uPC90aD4NCisJICAgIAkJCSAgIDwvdHI+DQorCSAgICAJCQkgICA8L3RoZWFkPg0KKwkgICAgCQkJICAgPHRib2R5Pg0KKwkgICAgCQkJICAgCSAgICAJCQkgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+U0lEPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5UaGUgU0lEIGZyb20gZ2V0U2Vzc2lvbjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJTG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dXNlcl9pZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGhlIHVzZXIgaWQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCUxvbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPm9yZ2FuaXNhdGlvbl9pZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dGhlIG9yZ2FuaXphdGlvbiBpZDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJTG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+aW5zZXJ0ZWRieTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+dXNlciBpZCBvZiB0aGUgb3BlcmF0aW5nIHVzZXI8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQorCSAgICAJCQk8L3RhYmxlPg0KKyAgICAJCQkgICAgCQkJPGJyLz4NCisgICAgCQkJUkVTVCBTYW1wbGUgQ2FsbC9VUkw6PGJyLz4NCisgICAgCQkJICAgIAkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvVXNlclNlcnZpY2UvYWRkVXNlclRvT3JnYW5pc2F0aW9uP1NJRD1WQUxVRSZ1c2VyX2lkPVZBTFVFJm9yZ2FuaXNhdGlvbl9pZD1WQUxVRSZpbnNlcnRlZGJ5PVZBTFVFIj5odHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1VzZXJTZXJ2aWNlL2FkZFVzZXJUb09yZ2FuaXNhdGlvbj9TSUQ9VkFMVUUmYW1wO3VzZXJfaWQ9VkFMVUUmYW1wO29yZ2FuaXNhdGlvbl9pZD1WQUxVRSZhbXA7aW5zZXJ0ZWRieT1WQUxVRTwvYT4NCisgICAgCQkgIDwvZGl2Pg0KKyAgICAJICAgCQkJCSAgICAJCSAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZCI+DQorCQkgICAgICAgIDxkaXYgY2xhc3M9Im1ldGhvZF9oZWFkZXIiPg0KKwkJICAgICAgICA8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDoxMHB4Ij4NCisgICAgCQkJPGEgbmFtZT0iZ2V0VXNlcnNCeU9yZ2FuaXNhdGlvbiIgPjxiPmdldFVzZXJzQnlPcmdhbmlzYXRpb248L2I+PC9hPg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCQ0KKyAgICAJCQlNZXRob2Q6IDxpPmdldFVzZXJzQnlPcmdhbmlzYXRpb24gKA0KKyAgICAJCQkgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgU0lEDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIGxvbmcgb3JnYW5pc2F0aW9uX2lkDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIGludCBzdGFydA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBpbnQgbWF4DQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBvcmRlcmJ5DQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgICAgLCANCisgICAgCQkJICAgICAgIAkJCSAgIGJvb2xlYW4gYXNjDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJKQ0KKyAgICAJCQk8L2k+PGJyLz4NCisgICAgCQkJPHA+DQorICAgIAkJCSAgU2VhcmNoIHVzZXJzIGFuZCByZXR1cm4gdGhlbQ0KKyAgICAJCQk8L3A+DQorICAgIAkJCTxwPg0KKyAgICAgICAgICAgICAgICAgIFJldHVybiBUeXBlOiBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJlYW5zLmJhc2ljLlNlYXJjaFJlc3VsdA0KKyAgICAgICAgICAgICAgICA8L3A+DQorICAgIAkJCTxwPlBhcmFtczo8L3A+DQorICAgIAkJCSAgICAJCQkNCisgICAgCQkJCSAgICAJCQk8dGFibGUgcnVsZXM9ImFsbCIgYm9yZGVyPSIxIj4NCisJICAgIAkJCSAgIDx0aGVhZD4NCisJICAgIAkJCSAgIDx0cj4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5UeXBlPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSIyMDAiIGFsaWduPSJsZWZ0Ij5GaWVsZG5hbWU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjQwMCIgYWxpZ249ImxlZnQiPkRlc2NyaXB0aW9uPC90aD4NCisJICAgIAkJCSAgIDwvdHI+DQorCSAgICAJCQkgICA8L3RoZWFkPg0KKwkgICAgCQkJICAgPHRib2R5Pg0KKwkgICAgCQkJICAgCSAgICAJCQkgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+U0lEPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5UaGUgU0lEIGZyb20gZ2V0U2Vzc2lvbjwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJbG9uZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+b3JnYW5pc2F0aW9uX2lkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aGUgb3JnYW5pemF0aW9uIGlkPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlpbnQNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnN0YXJ0PC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5maXJzdCByZWNvcmQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCWludA0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+bWF4PC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5tYXggcmVjb3JkczwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5vcmRlcmJ5PC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5vcmRlcmJ5IGNsYXVzZTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJYm9vbGVhbg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+YXNjPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5hc2Mgb3IgZGVzYzwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCisJICAgIAkJCTwvdGFibGU+DQorICAgIAkJCSAgICAJCQk8YnIvPg0KKyAgICAJCQlSRVNUIFNhbXBsZSBDYWxsL1VSTDo8YnIvPg0KKyAgICAJCQkgICAgCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCSAgICAJCQkJICAgIAkJCQkJCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvVXNlclNlcnZpY2UvZ2V0VXNlcnNCeU9yZ2FuaXNhdGlvbj9TSUQ9VkFMVUUmb3JnYW5pc2F0aW9uX2lkPVZBTFVFJnN0YXJ0PVZBTFVFJm1heD1WQUxVRSZvcmRlcmJ5PVZBTFVFJmFzYz1WQUxVRSI+aHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Vc2VyU2VydmljZS9nZXRVc2Vyc0J5T3JnYW5pc2F0aW9uP1NJRD1WQUxVRSZhbXA7b3JnYW5pc2F0aW9uX2lkPVZBTFVFJmFtcDtzdGFydD1WQUxVRSZhbXA7bWF4PVZBTFVFJmFtcDtvcmRlcmJ5PVZBTFVFJmFtcDthc2M9VkFMVUU8L2E+DQorICAgIAkJICA8L2Rpdj4NCisgICAgCSAgIAkJCQkgICAgCQkgICAgICA8ZGl2IGNsYXNzPSJtZXRob2QiPg0KKwkJICAgICAgICA8ZGl2IGNsYXNzPSJtZXRob2RfaGVhZGVyIj4NCisJCSAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6MTBweCI+DQorICAgIAkJCTxhIG5hbWU9ImtpY2tVc2VyQnlQdWJsaWNTSUQiID48Yj5raWNrVXNlckJ5UHVibGljU0lEPC9iPjwvYT4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQkNCisgICAgCQkJTWV0aG9kOiA8aT5raWNrVXNlckJ5UHVibGljU0lEICgNCisgICAgCQkJICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIFNJRA0KKyAgICAJCQkgICAgICAgCQkJICAgIAkJCSAgICAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICAgICAJCQkgICBTdHJpbmcgcHVibGljU0lEDQorICAgIAkJCSAgICAgICAJCQkgICAgCQkJKQ0KKyAgICAJCQk8L2k+PGJyLz4NCisgICAgCQkJPHA+DQorICAgIAkJCSAgS2ljayBhIHVzZXIgYnkgaXRzIHB1YmxpYyBTSUQNCisgICAgCQkJPC9wPg0KKyAgICAJCQk8cD4NCisgICAgICAgICAgICAgICAgICBSZXR1cm4gVHlwZTogamF2YS5sYW5nLkJvb2xlYW4NCisgICAgICAgICAgICAgICAgPC9wPg0KKyAgICAJCQk8cD5QYXJhbXM6PC9wPg0KKyAgICAJCQkgICAgCQkJDQorICAgIAkJCQkgICAgCQkJPHRhYmxlIHJ1bGVzPSJhbGwiIGJvcmRlcj0iMSI+DQorCSAgICAJCQkgICA8dGhlYWQ+DQorCSAgICAJCQkgICA8dHI+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+VHlwZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iMjAwIiBhbGlnbj0ibGVmdCI+RmllbGRuYW1lPC90aD4NCisJICAgIAkJCSAgICAgPHRoIHdpZHRoPSI0MDAiIGFsaWduPSJsZWZ0Ij5EZXNjcmlwdGlvbjwvdGg+DQorCSAgICAJCQkgICA8L3RyPg0KKwkgICAgCQkJICAgPC90aGVhZD4NCisJICAgIAkJCSAgIDx0Ym9keT4NCisJICAgIAkJCSAgIAkgICAgCQkJICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlNJRDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+VGhlIFNJRCBmcm9tIGdldFNlc3Npb248L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICAJCVN0cmluZw0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIDwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+cHVibGljU0lEPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj50aGUgcHVibGljU0lEICh5b3UgY2FuIGdldCBpdCBmcm9tIHRoZSBjYWxsIHRvIGdldCB1c2VycyBpbiBhCisgICAgICAgICAgICByb29tKTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICA8L3RyPg0KKwkgICAgICAgICAgICAgICAgICAgDQorCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCisJICAgIAkJCTwvdGFibGU+DQorICAgIAkJCSAgICAJCQk8YnIvPg0KKyAgICAJCQlSRVNUIFNhbXBsZSBDYWxsL1VSTDo8YnIvPg0KKyAgICAJCQkgICAgCQkJICAgIAkJCQkgICAgCQkJCQkJCQkgICAgCQkJCSAgICAJCQkJCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1VzZXJTZXJ2aWNlL2tpY2tVc2VyQnlQdWJsaWNTSUQ/U0lEPVZBTFVFJnB1YmxpY1NJRD1WQUxVRSI+aHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Vc2VyU2VydmljZS9raWNrVXNlckJ5UHVibGljU0lEP1NJRD1WQUxVRSZhbXA7cHVibGljU0lEPVZBTFVFPC9hPg0KKyAgICAJCSAgPC9kaXY+DQorICAgIAkgICAJCQkJICAgIAkJICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kIj4NCisJCSAgICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kX2hlYWRlciI+DQorCQkgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjEwcHgiPg0KKyAgICAJCQk8YSBuYW1lPSJhZGRPcmdhbmlzYXRpb24iID48Yj5hZGRPcmdhbmlzYXRpb248L2I+PC9hPg0KKyAgICAJCQk8L2Rpdj4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCQ0KKyAgICAJCQlNZXRob2Q6IDxpPmFkZE9yZ2FuaXNhdGlvbiAoDQorICAgIAkJCSAgICAJCQkgICAgCQkJICAgICAgIAkJCSAgIFN0cmluZyBTSUQNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkgICAgICAgCQkJICAgICAsIA0KKyAgICAJCQkgICAgICAgCQkJICAgU3RyaW5nIG5hbWUNCisgICAgCQkJICAgICAgIAkJCSAgICAJCQkpDQorICAgIAkJCTwvaT48YnIvPg0KKyAgICAJCQk8cD4NCisgICAgCQkJICBhZGQgYSBuZXcgb3JnYW5pc2F0aW9uDQorICAgIAkJCTwvcD4NCisgICAgCQkJPHA+DQorICAgICAgICAgICAgICAgICAgUmV0dXJuIFR5cGU6IGphdmEubGFuZy5Mb25nDQorICAgICAgICAgICAgICAgIDwvcD4NCisgICAgCQkJPHA+UGFyYW1zOjwvcD4NCisgICAgCQkJICAgIAkJCQ0KKyAgICAJCQkJICAgIAkJCTx0YWJsZSBydWxlcz0iYWxsIiBib3JkZXI9IjEiPg0KKwkgICAgCQkJICAgPHRoZWFkPg0KKwkgICAgCQkJICAgPHRyPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPlR5cGU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPkZpZWxkbmFtZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iNDAwIiBhbGlnbj0ibGVmdCI+RGVzY3JpcHRpb248L3RoPg0KKwkgICAgCQkJICAgPC90cj4NCisJICAgIAkJCSAgIDwvdGhlYWQ+DQorCSAgICAJCQkgICA8dGJvZHk+DQorCSAgICAJCQkgICAJICAgIAkJCSAgIAkgICAgCQkJICAgPHRyPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPg0KKwkgICAgICAgICAgICAgICAgICAgICAJCSAgICAgICAgICAgICAgICAgICAgIAkJU3RyaW5nDQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj5TSUQ8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPlRoZSBTSUQgZnJvbSBnZXRTZXNzaW9uPC90ZD4NCisJICAgICAgICAgICAgICAgICAgIDwvdHI+DQorCSAgICAgICAgICAgICAgICAgICANCisJICAgICAgICAgICAgICAgICAgIAkgICAgICAgICAgICAgICAgICAgCSAgICAJCQkgICA8dHI+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+DQorCSAgICAgICAgICAgICAgICAgICAgIAkJICAgICAgICAgICAgICAgICAgICAgCQlTdHJpbmcNCisJICAgICAgICAgICAgICAgICAgICAgCQkgICAgICAgICAgICAgICAgICAgICA8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPm5hbWU8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgICA8dGQgdmFsaWduPSJ0b3AiPnRoZSBuYW1lIG9mIHRoZSBvcmc8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgCSAgICAgICAgICAgICAgICAgICAJICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQorCSAgICAJCQk8L3RhYmxlPg0KKyAgICAJCQkgICAgCQkJPGJyLz4NCisgICAgCQkJUkVTVCBTYW1wbGUgQ2FsbC9VUkw6PGJyLz4NCisgICAgCQkJICAgIAkJCSAgICAJCQkJICAgIAkJCQkJCQkJICAgIAkJCQkgICAgCQkJCQkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Vc2VyU2VydmljZS9hZGRPcmdhbmlzYXRpb24/U0lEPVZBTFVFJm5hbWU9VkFMVUUiPmh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvVXNlclNlcnZpY2UvYWRkT3JnYW5pc2F0aW9uP1NJRD1WQUxVRSZhbXA7bmFtZT1WQUxVRTwvYT4NCisgICAgCQkgIDwvZGl2Pg0KKyAgICAJICAgCQkJDQorCQ0KKwk8L2JvZHk+DQorPC9odG1sPg0KKw0KZGlmZiAtLWdpdCBhL2RvY3MvV2ViYXBwTmFtZVBhdGguaHRtbCBiL2RvY3MvV2ViYXBwTmFtZVBhdGguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTYwMzY3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9XZWJhcHBOYW1lUGF0aC5odG1sCkBAIC0wLDAgKzEsODc3IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KKworPCEtLQorQ29weXJpZ2h0IDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KK0xpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKK2h0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCitVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCitkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCitTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCitsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorCisKKzwhLS0gQ29udGVudCBTdHlsZXNoZWV0IGZvciBTaXRlIC0tPgorCisgICAgICAgIAorPCEtLSBzdGFydCB0aGUgcHJvY2Vzc2luZyAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPCEtLSBHRU5FUkFURUQgRklMRSwgRE8gTk9UIEVESVQsIEVESVQgVEhFIFhNTCBGSUxFIElOIHhkb2NzIElOU1RFQUQhIC0tPgorICAgIDwhLS0gTWFpbiBQYWdlIFNlY3Rpb24gLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDxodG1sPgorICAgICAgICA8aGVhZD4KKyAgICAgICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ii8+CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9IgorCQkJT3Blbk1lZXRpbmdzIFRlYW0KKwkJIj4KKyAgICAgICAgICAgIDxtZXRhIG5hbWU9ImVtYWlsIiBjb250ZW50PSJzZWJhd2FnbmVyQGFwYWNoZS5vcmciPgorICAgICAgICAgICAgCisgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIDx0aXRsZT5BcGFjaGUgT3Blbk1lZXRpbmdzIC0gV2ViYXBwIE5hbWUgLyBQYXRoPC90aXRsZT4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9vcGVubWVldGluZ3MuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9qcXVlcnktdWkuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2luLXNsaWRlci1zdHlsZXMuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2xvcmJveC5jc3MiIC8+CisgICAgICAgICAgICAKKwkJCTwhLS0gQWRkIGpRdWVyeSBsaWJyYXJ5IC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LTEuNy4xLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPCEtLSBBZGQgY29pbnNsaWRlciBwbHVnaW5zIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvY29pbi1zbGlkZXIubWluLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPCEtLSBBZGQgY29sb3Jib3ggcGx1Z2luIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LmNvbG9yYm94LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmNvcmUuanMiPjwvc2NyaXB0PgorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS53aWRnZXQuanMiPjwvc2NyaXB0PgorCQkKKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkuYWNjb3JkaW9uLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdD4KKwkJCSQoZnVuY3Rpb24oKSB7CisJCQkJJCggIiNhY2NvcmRpb24iICkuYWNjb3JkaW9uKHsKKwkJCQkJYXV0b0hlaWdodDogZmFsc2UsCisJCQkJCW5hdmlnYXRpb246IHRydWUsCisJCQkJCW5hdmlnYXRpb25GaWx0ZXI6IGZ1bmN0aW9uICgpIHsKKwkJCQkJCXZhciBzaWRlYmFySHJlZkFycmF5ID0gdGhpcy5ocmVmLnNwbGl0KCIvIik7CisgICAgCQkJCQl2YXIgc2lkZUJhckxhc3RTdHJpbmcgPSBzaWRlYmFySHJlZkFycmF5W3NpZGViYXJIcmVmQXJyYXkubGVuZ3RoIC0gMV0udG9Mb3dlckNhc2UoKTsKKwkJCQkJCQorCQkJCQkJaWYgKHNpZGVCYXJMYXN0U3RyaW5nLmluZGV4T2YoIiMiKSA9PSAtMSkgeworCQkJCQkJCXJldHVybiBmYWxzZTsKKwkJCQkJCX0KKwkJCQkJCQorCQkJCQkJCQkJCQkJLyogZG9jdW1lbnQubG9jYXRpb24uaHJlZiAqLworCQkJCQkJdmFyIGN1cnJlbnRTZWN0aW9uID0gIiI7CisJCQkJCQkKKwkJCQkJCXZhciBjdXJyZW50TG9jYXRpb24gPSAiIjsKKwkJCQkJCXZhciBjdXJyZW50TGluayA9ICIiOworCQkJCQkJaWYgKGZhbHNlKSB7CisJCQkJCQkKKwkJCQkJCX0KKyAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5kZXguaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5kZXguaHRtbCIuc3Vic3RyKDEsICIvaW5kZXguaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9saWNlbnNlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2xpY2Vuc2UuaHRtbCIuc3Vic3RyKDEsICIvbGljZW5zZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5zdWJzdHIoMSwgImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZG93bmxvYWRzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2Rvd25sb2Fkcy5odG1sIi5zdWJzdHIoMSwgIi9kb3dubG9hZHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiLnN1YnN0cigxLCAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9pbnN0YWxsYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5zdGFsbGF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL2luc3RhbGxhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1VwZ3JhZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvVXBncmFkZS5odG1sIi5zdWJzdHIoMSwgIi9VcGdyYWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIuc3Vic3RyKDEsICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db21tYW5kTGluZUFkbWluLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIuc3Vic3RyKDEsICIvQ29tbWFuZExpbmVBZG1pbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9nZXQtaW52b2x2ZWQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9nZXQtaW52b2x2ZWQuaHRtbCIuc3Vic3RyKDEsICIvZ2V0LWludm9sdmVkLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGVhbS1saXN0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdGVhbS1saXN0Lmh0bWwiLnN1YnN0cigxLCAiL3RlYW0tbGlzdC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL21haWwtbGlzdHMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9tYWlsLWxpc3RzLmh0bWwiLnN1YnN0cigxLCAiL21haWwtbGlzdHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLnN1YnN0cigxLCAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3N2bi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvc3ZuLmh0bWwiLnN1YnN0cigxLCAiL3N2bi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIuc3Vic3RyKDEsICJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2RlcGVuZGVuY2llcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZGVwZW5kZW5jaWVzLmh0bWwiLnN1YnN0cigxLCAiL2RlcGVuZGVuY2llcy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pVbml0VGVzdGluZy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSlVuaXRUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL0pVbml0VGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01hbnVhbFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01hbnVhbFRlc3RpbmcuaHRtbCIuc3Vic3RyKDEsICIvTWFudWFsVGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlbGVhc2VHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVsZWFzZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1JlbGVhc2VHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYnNpdGVHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvV2Vic2l0ZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1dlYnNpdGVHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Tb2FwUmVzdEFQSS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU29hcFJlc3RBUEkuaHRtbCIuc3Vic3RyKDEsICIvU29hcFJlc3RBUEkuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZXN0QVBJU2FtcGxlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZXN0QVBJU2FtcGxlLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RBUElTYW1wbGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MZGFwQW5kQURTLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9MZGFwQW5kQURTLmh0bWwiLnN1YnN0cigxLCAiL0xkYXBBbmRBRFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FcnJvcnNUYWJsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRXJyb3JzVGFibGUuaHRtbCIuc3Vic3RyKDEsICIvRXJyb3JzVGFibGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTW9vZGxlUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01vb2RsZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Nb29kbGVQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TYWthaVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TYWthaVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TYWthaVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ppcmFQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSmlyYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9KaXJhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSm9vbWxhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pvb21sYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Kb29tbGFQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EcnVwYWxQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRHJ1cGFsUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0RydXBhbFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0JpdHJpeFBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CaXRyaXhQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvQml0cml4UGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TdWdhckNSTVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TdWdhckNSTVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TdWdhckNSTVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlZG1pbmVQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVkbWluZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9SZWRtaW5lUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSUJNREIyQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSUJNREIyQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL0lCTURCMkNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3JhY2xlQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3JhY2xlQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL09yYWNsZUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTXlTUUxDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9NeVNRTENvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9NeVNRTENvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUG9zdGdyZXNDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MYW5ndWFnZUVkaXRvci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLnN1YnN0cigxLCAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5zdWJzdHIoMSwgIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FZGl0VGVtcGxhdGVzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRWRpdFRlbXBsYXRlcy5odG1sIi5zdWJzdHIoMSwgIi9FZGl0VGVtcGxhdGVzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1BvcnRTZXR0aW5ncy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1BvcnRTZXR0aW5ncy5odG1sIi5zdWJzdHIoMSwgIi9Qb3J0U2V0dGluZ3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5zdWJzdHIoMSwgIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5zdWJzdHIoMSwgIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EYXNoYm9hcmQuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9EYXNoYm9hcmQuaHRtbCIuc3Vic3RyKDEsICIvRGFzaGJvYXJkLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLnN1YnN0cigxLCAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Ib3RLZXlzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSG90S2V5cy5odG1sIi5zdWJzdHIoMSwgIi9Ib3RLZXlzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYmFwcE5hbWVQYXRoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvV2ViYXBwTmFtZVBhdGguaHRtbCIuc3Vic3RyKDEsICIvV2ViYXBwTmFtZVBhdGguaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL05hdmlnYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9OYXZpZ2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL05hdmlnYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLnN1YnN0cigxLCAiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIuc3Vic3RyKDEsICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIuc3Vic3RyKDEsICIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUlRNUFNBbmRIVFRQUy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1JUTVBTQW5kSFRUUFMuaHRtbCIuc3Vic3RyKDEsICIvUlRNUFNBbmRIVFRQUy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5zdWJzdHIoMSwgIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5zdWJzdHIoMSwgIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NsdXN0ZXJpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DbHVzdGVyaW5nLmh0bWwiLnN1YnN0cigxLCAiL0NsdXN0ZXJpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvR2V0VmVyc2lvbkluZm8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9HZXRWZXJzaW9uSW5mby5odG1sIi5zdWJzdHIoMSwgIi9HZXRWZXJzaW9uSW5mby5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkgICAgCQkJCQkKKyAgICAJCQkJCWN1cnJlbnRMaW5rID0gY3VycmVudExpbmsudG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCWN1cnJlbnRMb2NhdGlvbiA9IGN1cnJlbnRMb2NhdGlvbi50b0xvd2VyQ2FzZSgpOworICAgIAkJCQkJCisJCQkJCQlyZXR1cm4gc2lkZUJhckxhc3RTdHJpbmcgPT0gY3VycmVudExpbmsrIiMiK2N1cnJlbnRMb2NhdGlvbjsKKwkJCQkJfQorCQkJCX0pOworCQkJfSk7CisJCQk8L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCQkJCSQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgeworCQkJCQkkKCcuZmFuY3lib3gtYnV0dG9ucycpLmNvbG9yYm94KHtyZWw6J2ZhbmN5Ym94LWJ1dHRvbnMnLHdpZHRoOiI3NSUiLCBoZWlnaHQ6Ijc1JSJ9KTsKKwkJCQkJJCgnI2FjY29yZGlvbiBhJykuZWFjaChmdW5jdGlvbigpIHsKKwkJCQkgICAgICB2YXIgYSA9ICQodGhpcyk7CisJCQkJICAgICAgdmFyIGhyZWYgPSBhLmF0dHIoImhyZWYiKTsKKwkJCQkgICAgICBpZiAoaHJlZi5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkgICAgICAJICB2YXIgY29tcGFyZUl0ID0gaHJlZi5zdWJzdHIoMiwgaHJlZi5sZW5ndGgpOworCQkJCQkgICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKGNvbXBhcmVJdCkhPSAtMSkgeworCQkJCQkgICAgICAgYS5hZGRDbGFzcygnYWN0aXZlJyk7CisJCQkJCSAgICAgIH0KKwkJCQkgICAgICB9CisJCQkJICAgIH0pOworCQkJCQkkKCcjY29pbi1zbGlkZXInKS5jb2luc2xpZGVyKHsgd2lkdGg6IDY0MCxoZWlnaHQ6IDQwMCwgZGVsYXk6IDQwMDAgIH0pOwkJCQkJCisJCQkJfSk7CisJCQk8L3NjcmlwdD4JCisJCQkJCQkKKwkJCTxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisJCQkJLmZhbmN5Ym94LWN1c3RvbSAuZmFuY3lib3gtb3V0ZXIgeworCQkJCQlib3gtc2hhZG93OiAwIDAgNTBweCAjMjIyOworCQkJCX0KKwkJCTwvc3R5bGU+CisgICAgICAgIDwvaGVhZD4KKworICAgICAgICA8Ym9keSBiZ2NvbG9yPSIjZmZmZmZmIiB0ZXh0PSIjMDAwMDAwIiBsaW5rPSIjMTIzNDY1IiB2bGluaz0iIzEyMzQ2NSIgYWxpbms9IiMwMDAwMDAiPiAgCisgICAgICAgIAk8ZGl2IGNsYXNzPSJtYWluYm9keSIgc3R5bGU9IndpZHRoOiAxMDAlOyI+CisgICAgICAgIAk8ZGl2IGNsYXNzPSJzdXBlcmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIj4KKyAgICAgICAgICAgICAgICA8IS0tIFRPUCBJTUFHRSAtLT4KKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCI+Cis8YSBocmVmPSJodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvIj48aW1nIHNyYz0iLi9pbWFnZXMvbG9nby0yLmpwZyIgYWx0PSJBcGFjaGUgT3Blbk1lZXRpbmdzIiBib3JkZXI9IjAiLz48L2E+Cis8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCIgPgorCTxhIGhyZWY9ImRlbW8uaHRtbCI+RGVtbzwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJkb3dubG9hZHMuaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5Eb3dubG9hZDwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJpbnN0YWxsYXRpb24uaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5JbnN0YWxsYXRpb248L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MiIHRhcmdldD0iX0JMQU5LIj5XaWtpPC9hPgorCTxzcGFuPiZuYnNwOzwvc3Bhbj4KKzwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjQiPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8IS0tIExFRlQgU0lERSBOQVZJR0FUSU9OIC0tPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiIG5vd3JhcD0ibm93cmFwIj4KKworICAgICAgICAgICAgICAgICAgICA8IS0tIHNwZWNpYWwgQUNvbiBMb2dvIC0gbGVhdmUgaGVyZSBmb3IgbmV4dCB0aW1lCisgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9hcGFjaGVjb24uY29tLzIwMDUvVVMvIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vYXBhY2hlLm9yZy9pbWFnZXMvYWMyMDA1dXNfYmx1ZV8xMjV4MTI1LmpwZyIgaGVpZ2h0PSIxMjUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPSIxMjUiIGJvcmRlcj0iMCIgYWx0PSJBcGFjaGVDb24gVVMgMjAwNSIgLz4KKyAgICAgICAgICAgICAgICAgICAgPC9hPiAgLS0+CisKKyAgICAgICAgICAgICAgICAgICA8IS0tIHJlZ3VsYXIgbWVudSAtLT4KKworICAgICAgICAgICAgICAgICAgICAKKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8ZGl2IGlkPSJhY2NvcmRpb24iIHN0eWxlPSJ3aWR0aDogMTAwJSI+CisgICAgCisgICAgICAgICAgICAJPGgzPjxhIGhyZWY9IiNHZW5lcmFsIj5HZW5lcmFsPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9pbmRleC5odG1sIj5Ib21lPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9saWNlbnNlLmh0bWwiPkxpY2Vuc2U8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5BU0Y8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2Rvd25sb2Fkcy5odG1sIj5Eb3dubG9hZHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIj5Db21tZXJjaWFsIFN1cHBvcnQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0luc3RhbGxhdGlvbmFuZFVwZ3JhZGUiPkluc3RhbGxhdGlvbiBhbmQgVXBncmFkZTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5zdGFsbGF0aW9uLmh0bWwiPkluc3RhbGxhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vVXBncmFkZS5odG1sIj5VcGdyYWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLmh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIj5UdXRvcmlhbHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCI+Q29tbWFuZCBMaW5lIEFkbWluPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb21tdW5pdHkiPkNvbW11bml0eTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZ2V0LWludm9sdmVkLmh0bWwiPkdldCBJbnZvbHZlZDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdGVhbS1saXN0Lmh0bWwiPkNvbW1pdHRlcnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL21haWwtbGlzdHMuaHRtbCI+TWFpbGluZyBMaXN0czwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIj5XaWtpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNEZXZlbG9wbWVudCI+RGV2ZWxvcG1lbnQ8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3N2bi5odG1sIj5Tb3VyY2UgQ29kZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiPkJ1Z3MgLyBJc3N1ZXMgKEpJUkEpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kZXBlbmRlbmNpZXMuaHRtbCI+RGVwZW5kZW5jaWVzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CdWlsZEluc3RydWN0aW9ucy5odG1sIj5CdWlsZCBJbnN0cnVjdGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pVbml0VGVzdGluZy5odG1sIj5KVW5pdCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9NYW51YWxUZXN0aW5nLmh0bWwiPk1hbnVhbCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWxlYXNlR3VpZGUuaHRtbCI+UmVsZWFzZSBHdWlkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vV2Vic2l0ZUd1aWRlLmh0bWwiPldlYnNpdGUgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0ludGVncmF0aW9uIj5JbnRlZ3JhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU29hcFJlc3RBUEkuaHRtbCI+U09BUC9SRVNUIEFQSTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVzdEFQSVNhbXBsZS5odG1sIj5SRVNUIEFQSSBTYW1wbGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0xkYXBBbmRBRFMuaHRtbCI+TGRhcCBhbmQgQURTPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIj5Wb0lQIGFuZCBTSVA8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0Vycm9yc1RhYmxlLmh0bWwiPkVycm9ycyB0YWJsZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjUGx1Z2lucyI+UGx1Z2luczwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTW9vZGxlUGx1Z2luLmh0bWwiPk1vb2RsZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Nha2FpUGx1Z2luLmh0bWwiPlNha2FpIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSmlyYVBsdWdpbi5odG1sIj5KaXJhIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSm9vbWxhUGx1Z2luLmh0bWwiPkpvb21sYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0RydXBhbFBsdWdpbi5odG1sIj5EcnVwYWwgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CaXRyaXhQbHVnaW4uaHRtbCI+Qml0cml4IFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQ29uZmx1ZW5jZVBsdWdpbi5odG1sIj5Db25mbHVlbmNlIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU3VnYXJDUk1QbHVnaW4uaHRtbCI+U3VnYXJDUk0gUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWRtaW5lUGx1Z2luLmh0bWwiPlJlZG1pbmUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb25maWd1cmF0aW9uIj5Db25maWd1cmF0aW9uPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5EQiBTYW1wbGUgQ29uZmlndXJhdGlvbnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIj5BcGFjaGUgRGVyYnk8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0lCTURCMkNvbmZpZy5odG1sIj5JQk0gREIyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcmFjbGVDb25maWcuaHRtbCI+T3JhY2xlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9NeVNRTENvbmZpZy5odG1sIj5NeVNRTDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9zdGdyZXNDb25maWcuaHRtbCI+UG9zdGdyZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkxvY2FsaXphdGlvbiBhbmQgbGFuZ3VhZ2VzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCI+SW50ZXJuYXRpb25hbGlzYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0xhbmd1YWdlRWRpdG9yLmh0bWwiPkxhbmd1YWdlRWRpdG9yPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiPlRpbWVab25lSGFuZGxpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0VkaXRUZW1wbGF0ZXMuaHRtbCI+RWRpdFRlbXBsYXRlczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TkFUIFBvcnQgU2V0dGluZ3M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Qb3J0U2V0dGluZ3MuaHRtbCI+UG9ydCBzZXR0aW5nczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+UGVyZm9ybWFuY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIj5KVk0gcGVyZm9ybWFuY2UgdHVuaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Vc2VyIEludGVyZmFjZTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCI+VGhlbWVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9EYXNoYm9hcmQuaHRtbCI+RGFzaGJvYXJkPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIj5XZWJjYW0gcmVzb2x1dGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIj5Sb29tIGxheW91dCBvcHRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Ib3RLZXlzLmh0bWwiPkhvdCBLZXlzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5DdXN0b21pemF0aW9uPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViYXBwTmFtZVBhdGguaHRtbCI+V2ViYXBwIG5hbWUvcGF0aDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTmF2aWdhdGlvbi5odG1sIj5OYXZpZ2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiPkNhbGVuZGFyIGFuZCB0aW1lem9uZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIj5DdXN0b20gcm9vbSB0eXBlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIj5DdXN0b20gY3R5cHQgbWVjaGFuaXNtPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIj5HZW5lcmFsIENvbmZpZ3VyYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlNlY3VyaXR5PC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUmVzdHJpY3RlZEFjY2Vzcy5odG1sIj5SZXN0cmljdGVkIEFjY2VzczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUlRNUFNBbmRIVFRQUy5odG1sIj5SVE1QUyBhbmQgSFRUUFM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNvbnZlcnRlcnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiPk9wZW5PZmZpY2UgQ29udmVydGVyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiPkZGTVBFRyBWZXJzaW9uIFN3aXRjaDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q2x1c3RlcmluZzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NsdXN0ZXJpbmcuaHRtbCI+Q2x1c3RlcmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TWlzYzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0dldFZlcnNpb25JbmZvLmh0bWwiPkdldCB2ZXJzaW9uIGluZm88L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAorICAgIDwvZGl2PgorICAgICAKKyAgICA8YnIvPgorICAgIAorICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJDdXN0b21pemUgT3Blbm1lZXRpbmdzIGxvZ28iPjxzdHJvbmc+Q3VzdG9taXplIE9wZW5tZWV0aW5ncyBsb2dvPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5JZiB5b3Ugd2FudCB0byBzZXQgdXAgeW91ciBsb2dvIGluIE9wZW5tZWV0aW5ncyBoZWFkZXIgeW91IGNhbiBkbyB0aGUgZm9sbG93aW5nOjwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvbD4NCisJCQkJPGxpPmNyZWF0ZSB5b3VyIGxvZ28gaW1hZ2UgYXMgUE5HIDQwcHggaGVpZ2h0PC9saT4NCisJCQkJPGxpPnJlcGxhY2UgPHR0Pi9vcHQvcmVkNS93ZWJhcHBzL29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvbG9nby5wbmc8L3R0PiB3aXRoIHlvdXIgbG9nbyBmaWxlPC9saT4NCisJCQkJPGxpPihBZHZhbmNlZCBvcHRpb25hbCkgeW91IGNhbiBtb2RpZnkgPHR0Pi9vcHQvcmVkNS93ZWJhcHBzL29wZW5tZWV0aW5ncy9jb25maWcueG1sPC90dD4gYW5kIG1vZGlmeSA8dHQ+YXBwZGlzcGxheTwvdHQ+IHNlY3Rpb246IHNldCBwb3NpdGlvbiBhbmQgZGlzcGxheSBmb3IgdGhlIGxvZ28gYW5kL29yIG5hbWU8L2xpPg0KKwkJCQk8bGk+KEFkdmFuY2VkIG9wdGlvbmFsKSB5b3UgY2FuIG1vZGlmeSA8dHQ+L29wdC9yZWQ1L3dlYmFwcHMvb3Blbm1lZXRpbmdzL2RlZmF1bHQtdGhlbWUueG1sPC90dD4gKGFyb3VuZCBsaW5lIDU3KSBhbmQgY2hhbmdlIGltYWdlIG5hbWUvcGF0aDwvbGk+DQorCQkJPC9vbD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkID48IS0tIGJnY29sb3I9IiNFRUVFRUUiIC0tPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0idmVyZGFuYSxhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IlJlbmFtaW5nIC9vcGVubWVldGluZ3MgY29udGV4dCI+PHN0cm9uZz5SZW5hbWluZyAvb3Blbm1lZXRpbmdzIGNvbnRleHQ8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQlJZiB5b3Ugd2FudCB0byBoYXZlDQorCQkJCTx0dD5odHRwOi8veW91cmNvcnAuY29tOjUwODAveW91cm1lZXRpbmdzPC90dD4NCisJCQkJaW5zdGVhZCBvZg0KKwkJCQk8dHQ+aHR0cDovL3lvdXJjb3JwLmNvbTo1MDgwL29wZW5tZWV0aW5nczwvdHQ+DQorCQkJCXlvdSBuZWVkIHRvIGRvIHRoZSBmb2xsb3dpbmcNCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b2w+DQorCQkJCTxsaT5zdG9wIG9wZW5tbWV0aW5ncyBpZiBpdCBpcyBydW5uaW5nIDwvbGk+DQorCQkJCTxsaT4NCisJCQkJCWdvIHRvIG9wZW5tZWV0aW5ncyBpbnN0YWxsIGRpciAoZm9yIGV4Lg0KKwkJCQkJPHR0Pi9vcHQvcmVkNTwvdHQ+DQorCQkJCQkpDQorCQkJCTwvbGk+DQorCQkJCTxsaT4NCisJCQkJCXJlbmFtZQ0KKwkJCQkJPHR0Pi9vcHQvcmVkNS93ZWJhcHBzL29wZW5tZWV0aW5nczwvdHQ+DQorCQkJCQl0bw0KKwkJCQkJPHR0Pi9vcHQvcmVkNS93ZWJhcHBzL3lvdXJtZWV0aW5nczwvdHQ+DQorCQkJCQkoZm9yIGV4Lg0KKwkJCQkJPHR0Pm12IC9vcHQvcmVkNS93ZWJhcHBzL29wZW5tZWV0aW5ncw0KKwkJCQkJCS9vcHQvcmVkNS93ZWJhcHBzL3lvdXJtZWV0aW5ncw0KKwkJCQkJPC90dD4NCisJCQkJCSkNCisJCQkJPC9saT4NCisJCQkJPGxpPg0KKwkJCQkJb3Blbg0KKwkJCQkJPHR0Pi9vcHQvcmVkNS93ZWJhcHBzL3lvdXJtZWV0aW5ncy9jb25maWcueG1sPC90dD4NCisJCQkJCXVzaW5nIHlvdXIgZmF2b3JpdGUgdGV4dCBlZGl0b3IgKGZvciBleC4NCisJCQkJCTx0dD52aW0gL29wdC9yZWQ1L3dlYmFwcHMveW91cm1lZXRpbmdzL2NvbmZpZy54bWw8L3R0Pg0KKwkJCQkJKQ0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+DQorCQkJCQlmaW5kIGFuZCBtb2RpZnkNCisJCQkJCTx0dD4mbHQ7d2ViQXBwUm9vdEtleSZndDtvcGVubWVldGluZ3MmbHQ7L3dlYkFwcFJvb3RLZXkmZ3Q7PC90dD4NCisJCQkJCXRvIGJlDQorCQkJCQk8dHQ+Jmx0O3dlYkFwcFJvb3RLZXkmZ3Q7PC90dD4NCisJCQkJCTxzdHJvbmc+eW91cm1lZXRpbmdzPC9zdHJvbmc+DQorCQkJCQk8dHQ+Jmx0Oy93ZWJBcHBSb290S2V5Jmd0OzwvdHQ+DQorCQkJCTwvbGk+DQorCQkJCTxsaT4NCisJCQkJCWZpbmQgYW5kIG1vZGlmeQ0KKwkJCQkJPHR0PiZsdDtodHRwUm9vdEtleSZndDsvb3Blbm1lZXRpbmdzLyZsdDsvaHR0cFJvb3RLZXkmZ3Q7PC90dD4NCisJCQkJCXRvIGJlDQorCQkJCQk8dHQ+Jmx0O2h0dHBSb290S2V5Jmd0OzwvdHQ+DQorCQkJCQk8c3Ryb25nPi95b3VybWVldGluZ3MvPC9zdHJvbmc+DQorCQkJCQk8dHQ+Jmx0Oy9odHRwUm9vdEtleSZndDs8L3R0Pg0KKwkJCQk8L2xpPg0KKwkJCTwvb2w+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJDaGFuZ2luZyBoYXJkLWNvZGVkIGFwcGxpY2F0aW9uIG5hbWUgaW4gc3RyaW5nIGxhYmVscyI+PHN0cm9uZz5DaGFuZ2luZyBoYXJkLWNvZGVkIGFwcGxpY2F0aW9uIG5hbWUgaW4gc3RyaW5nIGxhYmVsczwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgICA8aHIgc3R5bGU9IndpZHRoOjEwMCU7IGNvbG9yOiM5OTk5OTk7IGJhY2tncm91bmQtY29sb3I6Izk5OTk5OTsgaGVpZ2h0OjFweDsgYm9yZGVyOjBweDsiLz4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQorCQkJCVRvIGhhdmUNCisJCQkJPGk+WW91ciBBcHBsaWNhdGlvbiBOYW1lPC9pPg0KKwkJCQlpbnN0ZWFkIG9mDQorCQkJCTxpPk9wZW5tZWV0aW5nczwvaT4NCisJCQkJaW4NCisJCQkJPHN0cm9uZz5hbGw8L3N0cm9uZz4NCisJCQkJdGV4dCBsYWJlbHMgeW91IG5lZWQgdG8gZG8gdGhlIGZvbGxvd2luZw0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvbD4NCisJCQkJPGxpPg0KKwkJCQkJZW5zdXJlDQorCQkJCQk8c3Ryb25nPg0KKwkJCQkJCTx0dD4kQVBQX05BTUU8L3R0Pg0KKwkJCQkJPC9zdHJvbmc+DQorCQkJCQlwbGFjZWhvbGRlciBpcyB1c2VkIGluDQorCQkJCQk8aT5hbGw8L2k+DQorCQkJCQlzdHJpbmdzIHlvdSBoYXZlIGFkZGVkIGFuZC9vciBtb2RpZmllZCAoYWxsIHN0cmluZ3MgYnVuZGxlZCBpbnRvDQorCQkJCQlPcGVubWVldGluZ3MgYWxyZWFkeSBoYXZlIHRoaXMgcGxhY2Vob2xkZXIpDQorCQkJCTwvbGk+DQorCQkJCTxsaT5sb2dpbiB0byBPcGVubWVldGluZ3MgYXMgdXNlciB3aXRoIGFkbWluaXN0cmF0b3IgcHJpdmlsZWdlcyA8L2xpPg0KKwkJCQk8bGk+DQorCQkJCQlnbyB0bw0KKwkJCQkJPHR0PkFkbWluaXN0cmF0aW9uIC0mZ3Q7IENvbmZpZ3VyYXRpb248L3R0Pg0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+DQorCQkJCQlmaW5kIGFuZCBlZGl0IGNvbmZpZ3VyYXRpb24gd2l0aCBuYW1lDQorCQkJCQk8c3Ryb25nPg0KKwkJCQkJCTx0dD5hcHBsaWNhdGlvbi5uYW1lPC90dD4NCisJCQkJCTwvc3Ryb25nPg0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+DQorCQkJCQlTZXQgaXRzIHZhbHVlIHRvIGJlDQorCQkJCQk8aT4NCisJCQkJCQk8dHQ+WW91ciBBcHBsaWNhdGlvbiBOYW1lPC90dD4NCisJCQkJCTwvaT4NCisJCQkJPC9saT4NCisJCQkJPGxpPg0KKwkJCQkJPHR0PlNhdmU8L3R0Pg0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+cmVsb2FkIHBhZ2Ugb3IgcmVsb2dpbiA8L2xpPg0KKwkJCTwvb2w+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQlBbGwgc3RyaW5nIHdpbGwgZGlzcGxheQ0KKwkJCTxpPg0KKwkJCQk8dHQ+WW91ciBBcHBsaWNhdGlvbiBOYW1lPC90dD4NCisJCQk8L2k+DQorCQkJaW4gcGxhY2Ugb2YNCisJCQk8aT4NCisJCQkJPHR0Pk9wZW5tZWV0aW5nczwvdHQ+DQorCQkJPC9pPg0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQlQbGVhc2UNCisJCQkJPGk+Tk9URTwvaT4NCisJCQkJdGhlcmUgYXJlIDMgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIGluIHRoZSBjb25maWcueG1sIGZpbGUgd2hpY2gNCisJCQkJc2hvdWxkIGJlIG1vZGlmaWVkIGZvcg0KKwkJCQk8c3Ryb25nPlRPVEFMPC9zdHJvbmc+DQorCQkJCU9wZW5tZWV0aW5ncyBjbGVhbiB1cDoNCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ4bWxjb2RlIj4NCisJCQkJJmx0O2N1cnJlbnRhcHBuYW1lJmd0O09wZW5NZWV0aW5ncyZsdDsvY3VycmVudGFwcG5hbWUmZ3Q7DQorCQkJCTxiciAvPg0KKwkJCQkmbHQ7Y3VycmVudGFwcG5hbWV1cmwmZ3Q7aHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnJmx0Oy9jdXJyZW50YXBwbmFtZXVybCZndDsNCisJCQkJPGJyIC8+DQorCQkJCSZsdDtjdXJyZW50YXBwbmFtZWJ1Z3VybCZndDtodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyZsdDsvY3VycmVudGFwcG5hbWVidWd1cmwmZ3Q7DQorCQkJCTxiciAvPg0KKwkJCTwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iUnVubmluZyBtdWx0aXBsZSBPcGVubWVldGluZ3MgaW5zdGFuY2VzIG9uIHRoZSBzYW1lIHNlcnZlciI+PHN0cm9uZz5SdW5uaW5nIG11bHRpcGxlIE9wZW5tZWV0aW5ncyBpbnN0YW5jZXMgb24gdGhlIHNhbWUgc2VydmVyPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJSWYgeW91IHdhbnQgdG8gcnVuIG11bHRpcGxlIE9wZW5tZWV0aW5ncyBpbnN0YW5jZXMgb24gdGhlIHNhbWUgc2VydmVyIGkuZS4gdG8gaGF2ZTxiciAvPiAgDQorCQkJCTx0dD5odHRwOi8veW91cmNvcnAuY29tOjUwODAvb3Blbm1lZXRpbmdzMTwvdHQ+PGJyIC8+IA0KKwkJCQk8dHQ+aHR0cDovL3lvdXJjb3JwLmNvbTo1MDgwL29wZW5tZWV0aW5nczI8L3R0PjxiciAvPiBldGMuPGJyIC8+IHlvdSBuZWVkIHRvIGRvIHRoZSBmb2xsb3dpbmc6DQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9sPg0KKwkJCQk8bGk+ZWRpdCA8dHQ+d2ViYXBwcy9vcGVubWVldGluZ3MxL1dFQi1JTkYvcmVkNS13ZWIucHJvcGVydGllczwvdHQ+IGZvciA8c3Ryb25nPmV2ZXJ5PC9zdHJvbmc+IE9wZW5tZWV0aW5ncyANCisJCQkJaW5zdGFuY2UgYW5kIGFkZCB0aGUgZm9sbG93aW5nIGxpbmUgPHR0PndlYmFwcC5jb250ZXh0UGF0aD0vb3Blbm1lZXRpbmdzMTwvdHQ+ICB0byBpdCAoY29udGV4dCBvZiANCisJCQkJPHN0cm9uZz5ldmVyeTwvc3Ryb25nPiBpbnN0YW5jZSA8c3Ryb25nPnNob3VsZDwvc3Ryb25nPiBtYXRjaCB0aGUgZm9sZGVyIG5hbWUgaW4gd2ViYXBwcyBkaXIpDQorCQkJCTwvbGk+DQorCQkJCTxsaT5pbiBjYXNlIG9mIGphdmEgbWVtb3J5IHByb2JsZW1zIG1vZGlmeSA8dHQ+cmVkNS5zaDwvdHQ+IGFkZCBmb2xsb3dpbmcgbGluZTo8YnIgLz4NCisJCQkJCTxkaXYgY2xhc3M9InhtbGNvZGUiPg0KKwkJCQkJZXhwb3J0IEpBVkFfT1BUUz0iLVhYOitDTVNDbGFzc1VubG9hZGluZ0VuYWJsZWQgLVhYOitDTVNQZXJtR2VuU3dlZXBpbmdFbmFibGVkIC1YWDpNYXhQZXJtU2l6ZT0xMjhNIg0KKwkJCQkJPC9kaXY+DQorCQkJCQlvciA8dHQ+cmVkNS5iYXQ8L3R0Pjo8YnIgLz4NCisJCQkJCTxkaXYgY2xhc3M9InhtbGNvZGUiPg0KKwkJCQkJc2V0IEpBVkFfT1BUUz0tWFg6K0NNU0NsYXNzVW5sb2FkaW5nRW5hYmxlZCAtWFg6K0NNU1Blcm1HZW5Td2VlcGluZ0VuYWJsZWQgLVhYOk1heFBlcm1TaXplPTEyOE0NCisJCQkJCTwvZGl2Pg0KKwkJCQk8L2xpPg0KKwkJCTwvb2w+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDwhLS0gRk9PVEVSIC0tPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgYWxpZ249ImNlbnRlciI+PGZvbnQgY29sb3I9IiMxMjM0NjUiIHNpemU9Ii0xIj48ZW0+CisgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAmIzE2OTsgMjAwMy0yMDEzLCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyAgICAgICAgICAgICAgICAgICAgPC9lbT48L2ZvbnQ+PC9kaXY+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvYm9keT4KKyAgICA8L2h0bWw+Cis8IS0tIGVuZCB0aGUgcHJvY2Vzc2luZyAtLT4KKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKwpkaWZmIC0tZ2l0IGEvZG9jcy9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIGIvZG9jcy9XZWJjYW1SZXNvbHV0aW9ucy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmOGIzNjMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL1dlYmNhbVJlc29sdXRpb25zLmh0bWwKQEAgLTAsMCArMSw3MjIgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgorCis8IS0tCitDb3B5cmlnaHQgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKworPCEtLSBDb250ZW50IFN0eWxlc2hlZXQgZm9yIFNpdGUgLS0+CisKKyAgICAgICAgCis8IS0tIHN0YXJ0IHRoZSBwcm9jZXNzaW5nIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8IS0tIEdFTkVSQVRFRCBGSUxFLCBETyBOT1QgRURJVCwgRURJVCBUSEUgWE1MIEZJTEUgSU4geGRvY3MgSU5TVEVBRCEgLS0+CisgICAgPCEtLSBNYWluIFBhZ2UgU2VjdGlvbiAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGh0bWw+CisgICAgICAgIDxoZWFkPgorICAgICAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiLz4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iCisJCQlPcGVuTWVldGluZ3MgVGVhbQorCQkiPgorICAgICAgICAgICAgPG1ldGEgbmFtZT0iZW1haWwiIGNvbnRlbnQ9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+CisgICAgICAgICAgICAKKyAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgPHRpdGxlPkFwYWNoZSBPcGVuTWVldGluZ3MgLSBIb3cgdG8gY29uZmlndXJlIENhbWVyYSBkZWZhdWx0IHJlc29sdXRpb25zIDwvdGl0bGU+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3Mvb3Blbm1lZXRpbmdzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvanF1ZXJ5LXVpLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29pbi1zbGlkZXItc3R5bGVzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29sb3Jib3guY3NzIiAvPgorICAgICAgICAgICAgCisJCQk8IS0tIEFkZCBqUXVlcnkgbGlicmFyeSAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS0xLjcuMS5taW4uanMiPjwvc2NyaXB0PgorCQkKKwkJCTwhLS0gQWRkIGNvaW5zbGlkZXIgcGx1Z2lucyAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2NvaW4tc2xpZGVyLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTwhLS0gQWRkIGNvbG9yYm94IHBsdWdpbiAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS5jb2xvcmJveC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5jb3JlLmpzIj48L3NjcmlwdD4KKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkud2lkZ2V0LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmFjY29yZGlvbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQ+CisJCQkkKGZ1bmN0aW9uKCkgeworCQkJCSQoICIjYWNjb3JkaW9uIiApLmFjY29yZGlvbih7CisJCQkJCWF1dG9IZWlnaHQ6IGZhbHNlLAorCQkJCQluYXZpZ2F0aW9uOiB0cnVlLAorCQkJCQluYXZpZ2F0aW9uRmlsdGVyOiBmdW5jdGlvbiAoKSB7CisJCQkJCQl2YXIgc2lkZWJhckhyZWZBcnJheSA9IHRoaXMuaHJlZi5zcGxpdCgiLyIpOworICAgIAkJCQkJdmFyIHNpZGVCYXJMYXN0U3RyaW5nID0gc2lkZWJhckhyZWZBcnJheVtzaWRlYmFySHJlZkFycmF5Lmxlbmd0aCAtIDFdLnRvTG93ZXJDYXNlKCk7CisJCQkJCQkKKwkJCQkJCWlmIChzaWRlQmFyTGFzdFN0cmluZy5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJCQl9CisJCQkJCQkKKwkJCQkJCQkJCQkJCS8qIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgKi8KKwkJCQkJCXZhciBjdXJyZW50U2VjdGlvbiA9ICIiOworCQkJCQkJCisJCQkJCQl2YXIgY3VycmVudExvY2F0aW9uID0gIiI7CisJCQkJCQl2YXIgY3VycmVudExpbmsgPSAiIjsKKwkJCQkJCWlmIChmYWxzZSkgeworCQkJCQkJCisJCQkJCQl9CisgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luZGV4Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luZGV4Lmh0bWwiLnN1YnN0cigxLCAiL2luZGV4Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbGljZW5zZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9saWNlbnNlLmh0bWwiLnN1YnN0cigxLCAiL2xpY2Vuc2UuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIuc3Vic3RyKDEsICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2Rvd25sb2Fkcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kb3dubG9hZHMuaHRtbCIuc3Vic3RyKDEsICIvZG93bmxvYWRzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5zdWJzdHIoMSwgIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5zdGFsbGF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luc3RhbGxhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9pbnN0YWxsYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9VcGdyYWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1VwZ3JhZGUuaHRtbCIuc3Vic3RyKDEsICIvVXBncmFkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLnN1YnN0cigxLCAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29tbWFuZExpbmVBZG1pbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLnN1YnN0cigxLCAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZ2V0LWludm9sdmVkLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZ2V0LWludm9sdmVkLmh0bWwiLnN1YnN0cigxLCAiL2dldC1pbnZvbHZlZC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RlYW0tbGlzdC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3RlYW0tbGlzdC5odG1sIi5zdWJzdHIoMSwgIi90ZWFtLWxpc3QuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9tYWlsLWxpc3RzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbWFpbC1saXN0cy5odG1sIi5zdWJzdHIoMSwgIi9tYWlsLWxpc3RzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5zdWJzdHIoMSwgImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9zdm4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3N2bi5odG1sIi5zdWJzdHIoMSwgIi9zdm4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLnN1YnN0cigxLCAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kZXBlbmRlbmNpZXMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2RlcGVuZGVuY2llcy5odG1sIi5zdWJzdHIoMSwgIi9kZXBlbmRlbmNpZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVW5pdFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pVbml0VGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9KVW5pdFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NYW51YWxUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9NYW51YWxUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL01hbnVhbFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWxlYXNlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlbGVhc2VHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9SZWxlYXNlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJzaXRlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1dlYnNpdGVHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9XZWJzaXRlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU29hcFJlc3RBUEkuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1NvYXBSZXN0QVBJLmh0bWwiLnN1YnN0cigxLCAiL1NvYXBSZXN0QVBJLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdEFQSVNhbXBsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVzdEFQSVNhbXBsZS5odG1sIi5zdWJzdHIoMSwgIi9SZXN0QVBJU2FtcGxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGRhcEFuZEFEUy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTGRhcEFuZEFEUy5odG1sIi5zdWJzdHIoMSwgIi9MZGFwQW5kQURTLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRXJyb3JzVGFibGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0Vycm9yc1RhYmxlLmh0bWwiLnN1YnN0cigxLCAiL0Vycm9yc1RhYmxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01vb2RsZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Nb29kbGVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvTW9vZGxlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU2FrYWlQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU2FrYWlQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU2FrYWlQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KaXJhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0ppcmFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSmlyYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pvb21sYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Kb29tbGFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSm9vbWxhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRHJ1cGFsUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0RydXBhbFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9EcnVwYWxQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CaXRyaXhQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQml0cml4UGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0JpdHJpeFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU3VnYXJDUk1QbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWRtaW5lUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlZG1pbmVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvUmVkbWluZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0lCTURCMkNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0lCTURCMkNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9JQk1EQjJDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09yYWNsZUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09yYWNsZUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9PcmFjbGVDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL015U1FMQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTXlTUUxDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvTXlTUUxDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Bvc3RncmVzQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9zdGdyZXNDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvUG9zdGdyZXNDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9MYW5ndWFnZUVkaXRvci5odG1sIi5zdWJzdHIoMSwgIi9MYW5ndWFnZUVkaXRvci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVGltZVpvbmVIYW5kbGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIuc3Vic3RyKDEsICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRWRpdFRlbXBsYXRlcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIuc3Vic3RyKDEsICIvRWRpdFRlbXBsYXRlcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3J0U2V0dGluZ3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3J0U2V0dGluZ3MuaHRtbCIuc3Vic3RyKDEsICIvUG9ydFNldHRpbmdzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIuc3Vic3RyKDEsICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIuc3Vic3RyKDEsICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRGFzaGJvYXJkLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRGFzaGJvYXJkLmh0bWwiLnN1YnN0cigxLCAiL0Rhc2hib2FyZC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSG90S2V5cy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0hvdEtleXMuaHRtbCIuc3Vic3RyKDEsICIvSG90S2V5cy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJhcHBOYW1lUGF0aC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLnN1YnN0cigxLCAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9OYXZpZ2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTmF2aWdhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9OYXZpZ2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5zdWJzdHIoMSwgIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JUTVBTQW5kSFRUUFMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SVE1QU0FuZEhUVFBTLmh0bWwiLnN1YnN0cigxLCAiL1JUTVBTQW5kSFRUUFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIuc3Vic3RyKDEsICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIuc3Vic3RyKDEsICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DbHVzdGVyaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2x1c3RlcmluZy5odG1sIi5zdWJzdHIoMSwgIi9DbHVzdGVyaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dldFZlcnNpb25JbmZvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2V0VmVyc2lvbkluZm8uaHRtbCIuc3Vic3RyKDEsICIvR2V0VmVyc2lvbkluZm8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJICAgIAkJCQkJCisgICAgCQkJCQljdXJyZW50TGluayA9IGN1cnJlbnRMaW5rLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQljdXJyZW50TG9jYXRpb24gPSBjdXJyZW50TG9jYXRpb24udG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCQorCQkJCQkJcmV0dXJuIHNpZGVCYXJMYXN0U3RyaW5nID09IGN1cnJlbnRMaW5rKyIjIitjdXJyZW50TG9jYXRpb247CisJCQkJCX0KKwkJCQl9KTsKKwkJCX0pOworCQkJPC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwkJCQkkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsKKwkJCQkJJCgnLmZhbmN5Ym94LWJ1dHRvbnMnKS5jb2xvcmJveCh7cmVsOidmYW5jeWJveC1idXR0b25zJyx3aWR0aDoiNzUlIiwgaGVpZ2h0OiI3NSUifSk7CisJCQkJCSQoJyNhY2NvcmRpb24gYScpLmVhY2goZnVuY3Rpb24oKSB7CisJCQkJICAgICAgdmFyIGEgPSAkKHRoaXMpOworCQkJCSAgICAgIHZhciBocmVmID0gYS5hdHRyKCJocmVmIik7CisJCQkJICAgICAgaWYgKGhyZWYuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJICAgICAgCSAgdmFyIGNvbXBhcmVJdCA9IGhyZWYuc3Vic3RyKDIsIGhyZWYubGVuZ3RoKTsKKwkJCQkJICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZihjb21wYXJlSXQpIT0gLTEpIHsKKwkJCQkJICAgICAgIGEuYWRkQ2xhc3MoJ2FjdGl2ZScpOworCQkJCQkgICAgICB9CisJCQkJICAgICAgfQorCQkJCSAgICB9KTsKKwkJCQkJJCgnI2NvaW4tc2xpZGVyJykuY29pbnNsaWRlcih7IHdpZHRoOiA2NDAsaGVpZ2h0OiA0MDAsIGRlbGF5OiA0MDAwICB9KTsJCQkJCQorCQkJCX0pOworCQkJPC9zY3JpcHQ+CQorCQkJCQkJCisJCQk8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorCQkJCS5mYW5jeWJveC1jdXN0b20gLmZhbmN5Ym94LW91dGVyIHsKKwkJCQkJYm94LXNoYWRvdzogMCAwIDUwcHggIzIyMjsKKwkJCQl9CisJCQk8L3N0eWxlPgorICAgICAgICA8L2hlYWQ+CisKKyAgICAgICAgPGJvZHkgYmdjb2xvcj0iI2ZmZmZmZiIgdGV4dD0iIzAwMDAwMCIgbGluaz0iIzEyMzQ2NSIgdmxpbms9IiMxMjM0NjUiIGFsaW5rPSIjMDAwMDAwIj4gIAorICAgICAgICAJPGRpdiBjbGFzcz0ibWFpbmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAJPGRpdiBjbGFzcz0ic3VwZXJib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCI+CisgICAgICAgICAgICAgICAgPCEtLSBUT1AgSU1BR0UgLS0+CisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPgorPGEgaHJlZj0iaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnLyI+PGltZyBzcmM9Ii4vaW1hZ2VzL2xvZ28tMi5qcGciIGFsdD0iQXBhY2hlIE9wZW5NZWV0aW5ncyIgYm9yZGVyPSIwIi8+PC9hPgorPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiID4KKwk8YSBocmVmPSJkZW1vLmh0bWwiPkRlbW88L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iZG93bmxvYWRzLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+RG93bmxvYWQ8L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaW5zdGFsbGF0aW9uLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+SW5zdGFsbGF0aW9uPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTIiB0YXJnZXQ9Il9CTEFOSyI+V2lraTwvYT4KKwk8c3Bhbj4mbmJzcDs8L3NwYW4+Cis8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSI0Ij4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPCEtLSBMRUZUIFNJREUgTkFWSUdBVElPTiAtLT4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIiBub3dyYXA9Im5vd3JhcCI+CisKKyAgICAgICAgICAgICAgICAgICAgPCEtLSBzcGVjaWFsIEFDb24gTG9nbyAtIGxlYXZlIGhlcmUgZm9yIG5leHQgdGltZQorICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vYXBhY2hlY29uLmNvbS8yMDA1L1VTLyI+CisgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2FwYWNoZS5vcmcvaW1hZ2VzL2FjMjAwNXVzX2JsdWVfMTI1eDEyNS5qcGciIGhlaWdodD0iMTI1IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTI1IiBib3JkZXI9IjAiIGFsdD0iQXBhY2hlQ29uIFVTIDIwMDUiIC8+CisgICAgICAgICAgICAgICAgICAgIDwvYT4gIC0tPgorCisgICAgICAgICAgICAgICAgICAgPCEtLSByZWd1bGFyIG1lbnUgLS0+CisKKyAgICAgICAgICAgICAgICAgICAgCisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGRpdiBpZD0iYWNjb3JkaW9uIiBzdHlsZT0id2lkdGg6IDEwMCUiPgorICAgIAorICAgICAgICAgICAgCTxoMz48YSBocmVmPSIjR2VuZXJhbCI+R2VuZXJhbDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5kZXguaHRtbCI+SG9tZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbGljZW5zZS5odG1sIj5MaWNlbnNlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyI+QVNGPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kb3dubG9hZHMuaHRtbCI+RG93bmxvYWRzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCI+Q29tbWVyY2lhbCBTdXBwb3J0PC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnN0YWxsYXRpb25hbmRVcGdyYWRlIj5JbnN0YWxsYXRpb24gYW5kIFVwZ3JhZGU8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luc3RhbGxhdGlvbi5odG1sIj5JbnN0YWxsYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1VwZ3JhZGUuaHRtbCI+VXBncmFkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii5odHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyI+VHV0b3JpYWxzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db21tYW5kTGluZUFkbWluLmh0bWwiPkNvbW1hbmQgTGluZSBBZG1pbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29tbXVuaXR5Ij5Db21tdW5pdHk8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2dldC1pbnZvbHZlZC5odG1sIj5HZXQgSW52b2x2ZWQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3RlYW0tbGlzdC5odG1sIj5Db21taXR0ZXJzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9tYWlsLWxpc3RzLmh0bWwiPk1haWxpbmcgTGlzdHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyI+V2lraTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjRGV2ZWxvcG1lbnQiPkRldmVsb3BtZW50PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9zdm4uaHRtbCI+U291cmNlIENvZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIj5CdWdzIC8gSXNzdWVzIChKSVJBKTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZGVwZW5kZW5jaWVzLmh0bWwiPkRlcGVuZGVuY2llczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCI+QnVpbGQgSW5zdHJ1Y3Rpb25zPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KVW5pdFRlc3RpbmcuaHRtbCI+SlVuaXQgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTWFudWFsVGVzdGluZy5odG1sIj5NYW51YWwgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVsZWFzZUd1aWRlLmh0bWwiPlJlbGVhc2UgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1dlYnNpdGVHdWlkZS5odG1sIj5XZWJzaXRlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnRlZ3JhdGlvbiI+SW50ZWdyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1NvYXBSZXN0QVBJLmh0bWwiPlNPQVAvUkVTVCBBUEk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Jlc3RBUElTYW1wbGUuaHRtbCI+UkVTVCBBUEkgU2FtcGxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9MZGFwQW5kQURTLmh0bWwiPkxkYXAgYW5kIEFEUzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCI+Vm9JUCBhbmQgU0lQPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9FcnJvcnNUYWJsZS5odG1sIj5FcnJvcnMgdGFibGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI1BsdWdpbnMiPlBsdWdpbnM8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01vb2RsZVBsdWdpbi5odG1sIj5Nb29kbGUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TYWthaVBsdWdpbi5odG1sIj5TYWthaSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0ppcmFQbHVnaW4uaHRtbCI+SmlyYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pvb21sYVBsdWdpbi5odG1sIj5Kb29tbGEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9EcnVwYWxQbHVnaW4uaHRtbCI+RHJ1cGFsIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQml0cml4UGx1Z2luLmh0bWwiPkJpdHJpeCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCI+Q29uZmx1ZW5jZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiPlN1Z2FyQ1JNIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVkbWluZVBsdWdpbi5odG1sIj5SZWRtaW5lIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29uZmlndXJhdGlvbiI+Q29uZmlndXJhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+REIgU2FtcGxlIENvbmZpZ3VyYXRpb25zPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQXBhY2hlRGVyYnlDb25maWcuaHRtbCI+QXBhY2hlIERlcmJ5PC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JQk1EQjJDb25maWcuaHRtbCI+SUJNIERCMjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3JhY2xlQ29uZmlnLmh0bWwiPk9yYWNsZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTXlTUUxDb25maWcuaHRtbCI+TXlTUUw8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Bvc3RncmVzQ29uZmlnLmh0bWwiPlBvc3RncmVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Mb2NhbGl6YXRpb24gYW5kIGxhbmd1YWdlczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiPkludGVybmF0aW9uYWxpc2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9MYW5ndWFnZUVkaXRvci5odG1sIj5MYW5ndWFnZUVkaXRvcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vVGltZVpvbmVIYW5kbGluZy5odG1sIj5UaW1lWm9uZUhhbmRsaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9FZGl0VGVtcGxhdGVzLmh0bWwiPkVkaXRUZW1wbGF0ZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk5BVCBQb3J0IFNldHRpbmdzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9ydFNldHRpbmdzLmh0bWwiPlBvcnQgc2V0dGluZ3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlBlcmZvcm1hbmNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCI+SlZNIHBlcmZvcm1hbmNlIHR1bmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+VXNlciBJbnRlcmZhY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiPlRoZW1lczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRGFzaGJvYXJkLmh0bWwiPkRhc2hib2FyZDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCI+V2ViY2FtIHJlc29sdXRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCI+Um9vbSBsYXlvdXQgb3B0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSG90S2V5cy5odG1sIj5Ib3QgS2V5czwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q3VzdG9taXphdGlvbjwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmFwcE5hbWVQYXRoLmh0bWwiPldlYmFwcCBuYW1lL3BhdGg8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL05hdmlnYXRpb24uaHRtbCI+TmF2aWdhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIj5DYWxlbmRhciBhbmQgdGltZXpvbmU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCI+Q3VzdG9tIHJvb20gdHlwZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCI+Q3VzdG9tIGN0eXB0IG1lY2hhbmlzbTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCI+R2VuZXJhbCBDb25maWd1cmF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5TZWN1cml0eTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCI+UmVzdHJpY3RlZCBBY2Nlc3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1JUTVBTQW5kSFRUUFMuaHRtbCI+UlRNUFMgYW5kIEhUVFBTPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Db252ZXJ0ZXJzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIj5PcGVuT2ZmaWNlIENvbnZlcnRlcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIj5GRk1QRUcgVmVyc2lvbiBTd2l0Y2g8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNsdXN0ZXJpbmc8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DbHVzdGVyaW5nLmh0bWwiPkNsdXN0ZXJpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk1pc2M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZXRWZXJzaW9uSW5mby5odG1sIj5HZXQgdmVyc2lvbiBpbmZvPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAKKyAgICA8L2Rpdj4KKyAgICAgCisgICAgPGJyLz4KKyAgICAKKyAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iSG93IHRvIGNvbmZpZ3VyZSBDYW1lcmEgZGVmYXVsdCByZXNvbHV0aW9ucyI+PHN0cm9uZz5Ib3cgdG8gY29uZmlndXJlIENhbWVyYSBkZWZhdWx0IHJlc29sdXRpb25zPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5XaGVuIHlvdSBjaG9vc2UgdGhlIHdlYmNhbSB5b3UgaGF2ZSBkaWZmZXJlbnQgcmVzb2x1dGlvbnMNCisJCQkJYXZhaWxhYmxlIHRoZSB1c2VyIGNhbiBjaG9vc2UgZnJvbS4gPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+WW91IGNhbiBhZGQvcmVtb3ZlIHJlc29sdXRpb25zIGFuZCBhbHNvIGNoYW5nZSB0aGUgZGVmYXVsdA0KKwkJCQlzZWxlY3Rpb24uIEluIHRoZSBjb25maWcueG1sIHRoZXJlIGlzIGEgc2VjdGlvbjogPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0ieG1sY29kZSI+DQorCQkJCSZsdDthdmFpbGFibGVDYW1lcmFSZXNvbHV0aW9ucyZndDs8YnIgLz4NCisJCQkJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6MjBweCI+DQorCQkJCSAgICAmbHQ7cmVzb2x1dGlvbiB0eXBlPSI0OjMgKH42IEtCeXRlL3NlYykiIHdpZHRoPSI0MCIgaGVpZ2h0PSIzMCIgaXNEZWZhdWx0PSJmYWxzZSIgLyZndDs8YnIgLz4NCisJCQkJICAgICZsdDtyZXNvbHV0aW9uIHR5cGU9IjQ6MyAofjEyIEtCeXRlL3NlYykiIHdpZHRoPSI4MCIgaGVpZ2h0PSI2MCIgaXNEZWZhdWx0PSJmYWxzZSIgLyZndDs8YnIgLz4NCisJCQkJICAgICZsdDtyZXNvbHV0aW9uIHR5cGU9IjQ6MyAofjIwIEtCeXRlL3NlYykiIHdpZHRoPSIxMjAiIGhlaWdodD0iOTAiIGlzRGVmYXVsdD0idHJ1ZSIgLyZndDs8YnIgLz4NCisJCQkJICAgICZsdDtyZXNvbHV0aW9uIHR5cGU9IlFRVkdBIDQ6MyAofjM2IEtCeXRlL3NlYykiIHdpZHRoPSIxNjAiIGhlaWdodD0iMTIwIiBpc0RlZmF1bHQ9ImZhbHNlIiAvJmd0OzxiciAvPg0KKwkJCQkgICAgJmx0O3Jlc29sdXRpb24gdHlwZT0iNDozICh+NDAgS0J5dGUvc2VjKSIgd2lkdGg9IjI0MCIgaGVpZ2h0PSIxODAiIGlzRGVmYXVsdD0iZmFsc2UiIC8mZ3Q7PGJyIC8+DQorCQkJCSAgICAmbHQ7cmVzb2x1dGlvbiB0eXBlPSJIVkdBIDQ6MyAofjU2IEtCeXRlL3NlYykiIHdpZHRoPSIzMjAiIGhlaWdodD0iMjQwIiBpc0RlZmF1bHQ9ImZhbHNlIiAvJmd0OzxiciAvPg0KKwkJCQkgICAgJmx0O3Jlc29sdXRpb24gdHlwZT0iNDozICAofjYwIEtCeXRlL3NlYykiIHdpZHRoPSI0ODAiIGhlaWdodD0iMzYwIiBpc0RlZmF1bHQ9ImZhbHNlIiAvJmd0OzxiciAvPg0KKwkJCQkgICAgJmx0O3Jlc29sdXRpb24gdHlwZT0iNDozICh+NjggS0J5dGUvc2VjKSIgd2lkdGg9IjY0MCIgaGVpZ2h0PSI0ODAiIGlzRGVmYXVsdD0iZmFsc2UiIC8mZ3Q7PGJyIC8+DQorCQkJCSAgICAmbHQ7cmVzb2x1dGlvbiB0eXBlPSJYR0EgNDozIiB3aWR0aD0iMTAyNCIgaGVpZ2h0PSI3NjgiIGlzRGVmYXVsdD0iZmFsc2UiIC8mZ3Q7PGJyIC8+DQorCQkJCSAgICAmbHQ7cmVzb2x1dGlvbiB0eXBlPSIxNjo5IiB3aWR0aD0iMjU2IiBoZWlnaHQ9IjE1MCIgaXNEZWZhdWx0PSJmYWxzZSIgLyZndDs8YnIgLz4NCisJCQkJICAgICZsdDtyZXNvbHV0aW9uIHR5cGU9IldRVkdBIDk6NSIgd2lkdGg9IjQzMiIgaGVpZ2h0PSIyNDAiIGlzRGVmYXVsdD0iZmFsc2UiIC8mZ3Q7PGJyIC8+DQorCQkJCSAgICAmbHQ7cmVzb2x1dGlvbiB0eXBlPSJwc2V1ZG8gMTY6OSIgd2lkdGg9IjQ4MCIgaGVpZ2h0PSIyMzQiIGlzRGVmYXVsdD0iZmFsc2UiIC8mZ3Q7PGJyIC8+DQorCQkJCSAgICAmbHQ7cmVzb2x1dGlvbiB0eXBlPSIxNjo5IiB3aWR0aD0iNTEyIiBoZWlnaHQ9IjMwMCIgaXNEZWZhdWx0PSJmYWxzZSIgLyZndDs8YnIgLz4NCisJCQkJICAgICZsdDtyZXNvbHV0aW9uIHR5cGU9Im5IRCAxNjo5IiB3aWR0aD0iNjQwIiBoZWlnaHQ9IjM2MCIgaXNEZWZhdWx0PSJmYWxzZSIgLyZndDs8YnIgLz4NCisJCQkJICAgICZsdDtyZXNvbHV0aW9uIHR5cGU9IjE2OjkiIHdpZHRoPSIxMDI0IiBoZWlnaHQ9IjYwMCIgaXNEZWZhdWx0PSJmYWxzZSIgLyZndDs8YnIgLz4NCisJCQkJICAgIDwvZGl2Pg0KKwkJCQkmbHQ7L2F2YWlsYWJsZUNhbWVyYVJlc29sdXRpb25zJmd0OwkJCSANCisJCQk8L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPlRpcDogWW91IG1pZ2h0IGVkaXQgdGhlIGNvbmZpZy54bWwgd2l0aCBhbiBYTUwgYXdhcmUgZWRpdG9yIHRoYXQgY29ycmVjdGx5IA0KKwkJICAgIGhhbmRsZXMgdGhlIFhTRCBkZWZpbnRpb24gdG8gYXZvaWQgbWlzY29uZmlndXJhdGlvbi4gVGhlIG9wZW5tZWV0aW5ncy1jb25maWcueHNkIA0KKwkJICAgIGlzIGluIHRoZSBzYW1lIGZvbGRlciBsaWtlIHRoZSBjb25maWcueG1sLiA8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDwhLS0gRk9PVEVSIC0tPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgYWxpZ249ImNlbnRlciI+PGZvbnQgY29sb3I9IiMxMjM0NjUiIHNpemU9Ii0xIj48ZW0+CisgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAmIzE2OTsgMjAwMy0yMDEzLCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyAgICAgICAgICAgICAgICAgICAgPC9lbT48L2ZvbnQ+PC9kaXY+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvYm9keT4KKyAgICA8L2h0bWw+Cis8IS0tIGVuZCB0aGUgcHJvY2Vzc2luZyAtLT4KKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKwpkaWZmIC0tZ2l0IGEvZG9jcy9XZWJzZXJ2aWNlSW5kZXguaHRtbCBiL2RvY3MvV2Vic2VydmljZUluZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmZmYmExYwotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvV2Vic2VydmljZUluZGV4Lmh0bWwKQEAgLTAsMCArMSw2NCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+DQorPCEtLQ0KK0NvcHlyaWdodCAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uDQorTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQoreW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKw0KK2h0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKw0KK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCitkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCitsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCistLT4NCisNCisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPg0KKyAgICA8IS0tIEdFTkVSQVRFRCBGSUxFLCBETyBOT1QgRURJVCwgRURJVCBUSEUgVEVNUExBVEUgSU5TVEVBRCEgLS0+DQorICAgIDwhLS0gTWFpbiBQYWdlIFNlY3Rpb24gLS0+DQorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4NCisgICAgDQorICAgICA8aHRtbD4NCisgICAgICAgIDxoZWFkPg0KKwkJPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSIvPg0KKwkJPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSJPcGVuTWVldGluZ3MgVGVhbSI+DQorCQk8bWV0YSBuYW1lPSJlbWFpbCIgY29udGVudD0ic2ViYXdhZ25lckBhcGFjaGUub3JnIj4NCisJCTx0aXRsZT5PcGVuTWVldGluZ3MgQVBJIENsYXNzZXM8L3RpdGxlPg0KKwkJPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0ib3Blbm1lZXRpbmdzX2RvY3MuY3NzIj4NCisgICAgICAgIDwvaGVhZD4NCisJPGJvZHk+DQorCQkJDQorICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb24iPg0KKwkgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgIDxhIGhyZWY9IkNhbGVuZGFyU2VydmljZS5odG1sIiB0YXJnZXQ9Il9QQVJFTlQiPjxiPkNhbGVuZGFyU2VydmljZTwvYj48L2E+PGJyLz4NCisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uX2NvbW1lbnQiPjxpID5DYWxlbmRhclNlcnZpY2UgY29udGFpbnMgbWV0aG9kcyB0byBjcmVhdGUsIGVkaXQgZGVsZXRlIGNhbGVuZGFyIG1lZXRpbmdzPC9pPjwvZGl2Pg0KKyAgICAgICAgICAgIDwvZGl2Pg0KKyAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICA8YSBocmVmPSJGaWxlU2VydmljZS5odG1sIiB0YXJnZXQ9Il9QQVJFTlQiPjxiPkZpbGVTZXJ2aWNlPC9iPjwvYT48YnIvPg0KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb25fY29tbWVudCI+PGkgPkNvbnRhaW5zIG1ldGhvZHMgdG8gaW1wb3J0IGFuZCB1cGxvYWQgZmlsZXMgaW50byB0aGUgRmlsZXMgc2VjdGlvbiBvZiB0aGUKKyBjb25mZXJlbmNlIHJvb20gYW5kIHRoZSBwZXJzb25hbCBkcml2ZSBvZiBhbnkgdXNlcjwvaT48L2Rpdj4NCisgICAgICAgICAgICA8L2Rpdj4NCisgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorICAgICAgICAgICAgPGEgaHJlZj0iSmFiYmVyU2VydmljZS5odG1sIiB0YXJnZXQ9Il9QQVJFTlQiPjxiPkphYmJlclNlcnZpY2U8L2I+PC9hPjxici8+DQorICAgICAgICAgICAgPGRpdiBjbGFzcz0ibmF2aWdhdGlvbl9jb21tZW50Ij48aSA+VGhpcyBjbGFzcyBwcm92aWRlcyBtZXRob2QgaW1wbGVtZW50YXRpb25zIG5lY2Vzc2FyeSBmb3IgT00gdG8gSmFiYmVyIGludGVncmF0aW9uLjwvaT48L2Rpdj4NCisgICAgICAgICAgICA8L2Rpdj4NCisgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorICAgICAgICAgICAgPGEgaHJlZj0iUm9vbVNlcnZpY2UuaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj48Yj5Sb29tU2VydmljZTwvYj48L2E+PGJyLz4NCisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uX2NvbW1lbnQiPjxpID5Sb29tU2VydmljZSBjb250YWlucyBtZXRob2RzIHRvIG1hbmlwdWxhdGUgcm9vbXMgYW5kIGNyZWF0ZSBpbnZpdGF0aW9uIGhhc2g8L2k+PC9kaXY+DQorICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgIDxhIGhyZWY9IlNlcnZlclNlcnZpY2UuaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj48Yj5TZXJ2ZXJTZXJ2aWNlPC9iPjwvYT48YnIvPg0KKyAgICAgICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb25fY29tbWVudCI+PGkgPlRoaXMgY2xhc3MgcHJvdmlkZXMgbWV0aG9kIGltcGxlbWVudGF0aW9ucyBuZWNlc3NhcnkgZm9yIE9NIHRvIG1hbmFnZSBzZXJ2ZXJzCisgcGFydGljaXBhdGluZyBpbiBjbHVzdGVyLjwvaT48L2Rpdj4NCisgICAgICAgICAgICA8L2Rpdj4NCisgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorICAgICAgICAgICAgPGEgaHJlZj0iVXNlclNlcnZpY2UuaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj48Yj5Vc2VyU2VydmljZTwvYj48L2E+PGJyLz4NCisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uX2NvbW1lbnQiPjxpID5UaGUgU2VydmljZSBjb250YWlucyBtZXRob2RzIHRvIGxvZ2luIGFuZCBjcmVhdGUgaGFzaCB0byBkaXJlY3RseSBlbnRlcgorIGNvbmZlcmVuY2Ugcm9vbXMsIHJlY29yZGluZ3Mgb3IgdGhlIGFwcGxpY2F0aW9uIGluIGdlbmVyYWw8L2k+PC9kaXY+DQorICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgICAgIDwvZGl2Pg0KKwkNCisJDQorCTwvYm9keT4NCisJPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3MvV2Vic2l0ZUd1aWRlLmh0bWwgYi9kb2NzL1dlYnNpdGVHdWlkZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhN2M1N2EKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL1dlYnNpdGVHdWlkZS5odG1sCkBAIC0wLDAgKzEsODIxIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KKworPCEtLQorQ29weXJpZ2h0IDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KK0xpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKK2h0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCitVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCitkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCitTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCitsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorCisKKzwhLS0gQ29udGVudCBTdHlsZXNoZWV0IGZvciBTaXRlIC0tPgorCisgICAgICAgIAorPCEtLSBzdGFydCB0aGUgcHJvY2Vzc2luZyAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPCEtLSBHRU5FUkFURUQgRklMRSwgRE8gTk9UIEVESVQsIEVESVQgVEhFIFhNTCBGSUxFIElOIHhkb2NzIElOU1RFQUQhIC0tPgorICAgIDwhLS0gTWFpbiBQYWdlIFNlY3Rpb24gLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDxodG1sPgorICAgICAgICA8aGVhZD4KKyAgICAgICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ii8+CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9IgorCQkJT3Blbk1lZXRpbmdzIFRlYW0KKwkJIj4KKyAgICAgICAgICAgIDxtZXRhIG5hbWU9ImVtYWlsIiBjb250ZW50PSJzZWJhd2FnbmVyQGFwYWNoZS5vcmciPgorICAgICAgICAgICAgCisgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIDx0aXRsZT5BcGFjaGUgT3Blbk1lZXRpbmdzIC0gUmVsZWFzZSBHdWlkZTwvdGl0bGU+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3Mvb3Blbm1lZXRpbmdzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvanF1ZXJ5LXVpLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29pbi1zbGlkZXItc3R5bGVzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29sb3Jib3guY3NzIiAvPgorICAgICAgICAgICAgCisJCQk8IS0tIEFkZCBqUXVlcnkgbGlicmFyeSAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS0xLjcuMS5taW4uanMiPjwvc2NyaXB0PgorCQkKKwkJCTwhLS0gQWRkIGNvaW5zbGlkZXIgcGx1Z2lucyAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2NvaW4tc2xpZGVyLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTwhLS0gQWRkIGNvbG9yYm94IHBsdWdpbiAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS5jb2xvcmJveC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5jb3JlLmpzIj48L3NjcmlwdD4KKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkud2lkZ2V0LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmFjY29yZGlvbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQ+CisJCQkkKGZ1bmN0aW9uKCkgeworCQkJCSQoICIjYWNjb3JkaW9uIiApLmFjY29yZGlvbih7CisJCQkJCWF1dG9IZWlnaHQ6IGZhbHNlLAorCQkJCQluYXZpZ2F0aW9uOiB0cnVlLAorCQkJCQluYXZpZ2F0aW9uRmlsdGVyOiBmdW5jdGlvbiAoKSB7CisJCQkJCQl2YXIgc2lkZWJhckhyZWZBcnJheSA9IHRoaXMuaHJlZi5zcGxpdCgiLyIpOworICAgIAkJCQkJdmFyIHNpZGVCYXJMYXN0U3RyaW5nID0gc2lkZWJhckhyZWZBcnJheVtzaWRlYmFySHJlZkFycmF5Lmxlbmd0aCAtIDFdLnRvTG93ZXJDYXNlKCk7CisJCQkJCQkKKwkJCQkJCWlmIChzaWRlQmFyTGFzdFN0cmluZy5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJCQl9CisJCQkJCQkKKwkJCQkJCQkJCQkJCS8qIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgKi8KKwkJCQkJCXZhciBjdXJyZW50U2VjdGlvbiA9ICIiOworCQkJCQkJCisJCQkJCQl2YXIgY3VycmVudExvY2F0aW9uID0gIiI7CisJCQkJCQl2YXIgY3VycmVudExpbmsgPSAiIjsKKwkJCQkJCWlmIChmYWxzZSkgeworCQkJCQkJCisJCQkJCQl9CisgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luZGV4Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luZGV4Lmh0bWwiLnN1YnN0cigxLCAiL2luZGV4Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbGljZW5zZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9saWNlbnNlLmh0bWwiLnN1YnN0cigxLCAiL2xpY2Vuc2UuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIuc3Vic3RyKDEsICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2Rvd25sb2Fkcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kb3dubG9hZHMuaHRtbCIuc3Vic3RyKDEsICIvZG93bmxvYWRzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5zdWJzdHIoMSwgIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5zdGFsbGF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luc3RhbGxhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9pbnN0YWxsYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9VcGdyYWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1VwZ3JhZGUuaHRtbCIuc3Vic3RyKDEsICIvVXBncmFkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLnN1YnN0cigxLCAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29tbWFuZExpbmVBZG1pbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLnN1YnN0cigxLCAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZ2V0LWludm9sdmVkLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZ2V0LWludm9sdmVkLmh0bWwiLnN1YnN0cigxLCAiL2dldC1pbnZvbHZlZC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RlYW0tbGlzdC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3RlYW0tbGlzdC5odG1sIi5zdWJzdHIoMSwgIi90ZWFtLWxpc3QuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9tYWlsLWxpc3RzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbWFpbC1saXN0cy5odG1sIi5zdWJzdHIoMSwgIi9tYWlsLWxpc3RzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5zdWJzdHIoMSwgImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9zdm4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3N2bi5odG1sIi5zdWJzdHIoMSwgIi9zdm4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLnN1YnN0cigxLCAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kZXBlbmRlbmNpZXMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2RlcGVuZGVuY2llcy5odG1sIi5zdWJzdHIoMSwgIi9kZXBlbmRlbmNpZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVW5pdFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pVbml0VGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9KVW5pdFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NYW51YWxUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9NYW51YWxUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL01hbnVhbFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWxlYXNlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlbGVhc2VHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9SZWxlYXNlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJzaXRlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1dlYnNpdGVHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9XZWJzaXRlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU29hcFJlc3RBUEkuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1NvYXBSZXN0QVBJLmh0bWwiLnN1YnN0cigxLCAiL1NvYXBSZXN0QVBJLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdEFQSVNhbXBsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVzdEFQSVNhbXBsZS5odG1sIi5zdWJzdHIoMSwgIi9SZXN0QVBJU2FtcGxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGRhcEFuZEFEUy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTGRhcEFuZEFEUy5odG1sIi5zdWJzdHIoMSwgIi9MZGFwQW5kQURTLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRXJyb3JzVGFibGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0Vycm9yc1RhYmxlLmh0bWwiLnN1YnN0cigxLCAiL0Vycm9yc1RhYmxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01vb2RsZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Nb29kbGVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvTW9vZGxlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU2FrYWlQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU2FrYWlQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU2FrYWlQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KaXJhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0ppcmFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSmlyYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pvb21sYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Kb29tbGFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSm9vbWxhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRHJ1cGFsUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0RydXBhbFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9EcnVwYWxQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CaXRyaXhQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQml0cml4UGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0JpdHJpeFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU3VnYXJDUk1QbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWRtaW5lUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlZG1pbmVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvUmVkbWluZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0lCTURCMkNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0lCTURCMkNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9JQk1EQjJDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09yYWNsZUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09yYWNsZUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9PcmFjbGVDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL015U1FMQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTXlTUUxDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvTXlTUUxDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Bvc3RncmVzQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9zdGdyZXNDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvUG9zdGdyZXNDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9MYW5ndWFnZUVkaXRvci5odG1sIi5zdWJzdHIoMSwgIi9MYW5ndWFnZUVkaXRvci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVGltZVpvbmVIYW5kbGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIuc3Vic3RyKDEsICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRWRpdFRlbXBsYXRlcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIuc3Vic3RyKDEsICIvRWRpdFRlbXBsYXRlcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3J0U2V0dGluZ3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3J0U2V0dGluZ3MuaHRtbCIuc3Vic3RyKDEsICIvUG9ydFNldHRpbmdzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIuc3Vic3RyKDEsICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIuc3Vic3RyKDEsICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRGFzaGJvYXJkLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRGFzaGJvYXJkLmh0bWwiLnN1YnN0cigxLCAiL0Rhc2hib2FyZC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSG90S2V5cy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0hvdEtleXMuaHRtbCIuc3Vic3RyKDEsICIvSG90S2V5cy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJhcHBOYW1lUGF0aC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLnN1YnN0cigxLCAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9OYXZpZ2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTmF2aWdhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9OYXZpZ2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5zdWJzdHIoMSwgIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JUTVBTQW5kSFRUUFMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SVE1QU0FuZEhUVFBTLmh0bWwiLnN1YnN0cigxLCAiL1JUTVBTQW5kSFRUUFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIuc3Vic3RyKDEsICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIuc3Vic3RyKDEsICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DbHVzdGVyaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2x1c3RlcmluZy5odG1sIi5zdWJzdHIoMSwgIi9DbHVzdGVyaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dldFZlcnNpb25JbmZvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2V0VmVyc2lvbkluZm8uaHRtbCIuc3Vic3RyKDEsICIvR2V0VmVyc2lvbkluZm8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJICAgIAkJCQkJCisgICAgCQkJCQljdXJyZW50TGluayA9IGN1cnJlbnRMaW5rLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQljdXJyZW50TG9jYXRpb24gPSBjdXJyZW50TG9jYXRpb24udG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCQorCQkJCQkJcmV0dXJuIHNpZGVCYXJMYXN0U3RyaW5nID09IGN1cnJlbnRMaW5rKyIjIitjdXJyZW50TG9jYXRpb247CisJCQkJCX0KKwkJCQl9KTsKKwkJCX0pOworCQkJPC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwkJCQkkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsKKwkJCQkJJCgnLmZhbmN5Ym94LWJ1dHRvbnMnKS5jb2xvcmJveCh7cmVsOidmYW5jeWJveC1idXR0b25zJyx3aWR0aDoiNzUlIiwgaGVpZ2h0OiI3NSUifSk7CisJCQkJCSQoJyNhY2NvcmRpb24gYScpLmVhY2goZnVuY3Rpb24oKSB7CisJCQkJICAgICAgdmFyIGEgPSAkKHRoaXMpOworCQkJCSAgICAgIHZhciBocmVmID0gYS5hdHRyKCJocmVmIik7CisJCQkJICAgICAgaWYgKGhyZWYuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJICAgICAgCSAgdmFyIGNvbXBhcmVJdCA9IGhyZWYuc3Vic3RyKDIsIGhyZWYubGVuZ3RoKTsKKwkJCQkJICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZihjb21wYXJlSXQpIT0gLTEpIHsKKwkJCQkJICAgICAgIGEuYWRkQ2xhc3MoJ2FjdGl2ZScpOworCQkJCQkgICAgICB9CisJCQkJICAgICAgfQorCQkJCSAgICB9KTsKKwkJCQkJJCgnI2NvaW4tc2xpZGVyJykuY29pbnNsaWRlcih7IHdpZHRoOiA2NDAsaGVpZ2h0OiA0MDAsIGRlbGF5OiA0MDAwICB9KTsJCQkJCQorCQkJCX0pOworCQkJPC9zY3JpcHQ+CQorCQkJCQkJCisJCQk8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorCQkJCS5mYW5jeWJveC1jdXN0b20gLmZhbmN5Ym94LW91dGVyIHsKKwkJCQkJYm94LXNoYWRvdzogMCAwIDUwcHggIzIyMjsKKwkJCQl9CisJCQk8L3N0eWxlPgorICAgICAgICA8L2hlYWQ+CisKKyAgICAgICAgPGJvZHkgYmdjb2xvcj0iI2ZmZmZmZiIgdGV4dD0iIzAwMDAwMCIgbGluaz0iIzEyMzQ2NSIgdmxpbms9IiMxMjM0NjUiIGFsaW5rPSIjMDAwMDAwIj4gIAorICAgICAgICAJPGRpdiBjbGFzcz0ibWFpbmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAJPGRpdiBjbGFzcz0ic3VwZXJib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCI+CisgICAgICAgICAgICAgICAgPCEtLSBUT1AgSU1BR0UgLS0+CisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPgorPGEgaHJlZj0iaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnLyI+PGltZyBzcmM9Ii4vaW1hZ2VzL2xvZ28tMi5qcGciIGFsdD0iQXBhY2hlIE9wZW5NZWV0aW5ncyIgYm9yZGVyPSIwIi8+PC9hPgorPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiID4KKwk8YSBocmVmPSJkZW1vLmh0bWwiPkRlbW88L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iZG93bmxvYWRzLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+RG93bmxvYWQ8L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaW5zdGFsbGF0aW9uLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+SW5zdGFsbGF0aW9uPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTIiB0YXJnZXQ9Il9CTEFOSyI+V2lraTwvYT4KKwk8c3Bhbj4mbmJzcDs8L3NwYW4+Cis8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSI0Ij4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPCEtLSBMRUZUIFNJREUgTkFWSUdBVElPTiAtLT4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIiBub3dyYXA9Im5vd3JhcCI+CisKKyAgICAgICAgICAgICAgICAgICAgPCEtLSBzcGVjaWFsIEFDb24gTG9nbyAtIGxlYXZlIGhlcmUgZm9yIG5leHQgdGltZQorICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vYXBhY2hlY29uLmNvbS8yMDA1L1VTLyI+CisgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2FwYWNoZS5vcmcvaW1hZ2VzL2FjMjAwNXVzX2JsdWVfMTI1eDEyNS5qcGciIGhlaWdodD0iMTI1IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTI1IiBib3JkZXI9IjAiIGFsdD0iQXBhY2hlQ29uIFVTIDIwMDUiIC8+CisgICAgICAgICAgICAgICAgICAgIDwvYT4gIC0tPgorCisgICAgICAgICAgICAgICAgICAgPCEtLSByZWd1bGFyIG1lbnUgLS0+CisKKyAgICAgICAgICAgICAgICAgICAgCisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGRpdiBpZD0iYWNjb3JkaW9uIiBzdHlsZT0id2lkdGg6IDEwMCUiPgorICAgIAorICAgICAgICAgICAgCTxoMz48YSBocmVmPSIjR2VuZXJhbCI+R2VuZXJhbDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5kZXguaHRtbCI+SG9tZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbGljZW5zZS5odG1sIj5MaWNlbnNlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyI+QVNGPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kb3dubG9hZHMuaHRtbCI+RG93bmxvYWRzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCI+Q29tbWVyY2lhbCBTdXBwb3J0PC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnN0YWxsYXRpb25hbmRVcGdyYWRlIj5JbnN0YWxsYXRpb24gYW5kIFVwZ3JhZGU8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luc3RhbGxhdGlvbi5odG1sIj5JbnN0YWxsYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1VwZ3JhZGUuaHRtbCI+VXBncmFkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii5odHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyI+VHV0b3JpYWxzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db21tYW5kTGluZUFkbWluLmh0bWwiPkNvbW1hbmQgTGluZSBBZG1pbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29tbXVuaXR5Ij5Db21tdW5pdHk8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2dldC1pbnZvbHZlZC5odG1sIj5HZXQgSW52b2x2ZWQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3RlYW0tbGlzdC5odG1sIj5Db21taXR0ZXJzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9tYWlsLWxpc3RzLmh0bWwiPk1haWxpbmcgTGlzdHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyI+V2lraTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjRGV2ZWxvcG1lbnQiPkRldmVsb3BtZW50PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9zdm4uaHRtbCI+U291cmNlIENvZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIj5CdWdzIC8gSXNzdWVzIChKSVJBKTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZGVwZW5kZW5jaWVzLmh0bWwiPkRlcGVuZGVuY2llczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCI+QnVpbGQgSW5zdHJ1Y3Rpb25zPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KVW5pdFRlc3RpbmcuaHRtbCI+SlVuaXQgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTWFudWFsVGVzdGluZy5odG1sIj5NYW51YWwgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVsZWFzZUd1aWRlLmh0bWwiPlJlbGVhc2UgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1dlYnNpdGVHdWlkZS5odG1sIj5XZWJzaXRlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnRlZ3JhdGlvbiI+SW50ZWdyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1NvYXBSZXN0QVBJLmh0bWwiPlNPQVAvUkVTVCBBUEk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Jlc3RBUElTYW1wbGUuaHRtbCI+UkVTVCBBUEkgU2FtcGxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9MZGFwQW5kQURTLmh0bWwiPkxkYXAgYW5kIEFEUzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCI+Vm9JUCBhbmQgU0lQPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9FcnJvcnNUYWJsZS5odG1sIj5FcnJvcnMgdGFibGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI1BsdWdpbnMiPlBsdWdpbnM8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01vb2RsZVBsdWdpbi5odG1sIj5Nb29kbGUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TYWthaVBsdWdpbi5odG1sIj5TYWthaSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0ppcmFQbHVnaW4uaHRtbCI+SmlyYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pvb21sYVBsdWdpbi5odG1sIj5Kb29tbGEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9EcnVwYWxQbHVnaW4uaHRtbCI+RHJ1cGFsIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQml0cml4UGx1Z2luLmh0bWwiPkJpdHJpeCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCI+Q29uZmx1ZW5jZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiPlN1Z2FyQ1JNIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVkbWluZVBsdWdpbi5odG1sIj5SZWRtaW5lIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29uZmlndXJhdGlvbiI+Q29uZmlndXJhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+REIgU2FtcGxlIENvbmZpZ3VyYXRpb25zPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQXBhY2hlRGVyYnlDb25maWcuaHRtbCI+QXBhY2hlIERlcmJ5PC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JQk1EQjJDb25maWcuaHRtbCI+SUJNIERCMjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3JhY2xlQ29uZmlnLmh0bWwiPk9yYWNsZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTXlTUUxDb25maWcuaHRtbCI+TXlTUUw8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Bvc3RncmVzQ29uZmlnLmh0bWwiPlBvc3RncmVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Mb2NhbGl6YXRpb24gYW5kIGxhbmd1YWdlczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiPkludGVybmF0aW9uYWxpc2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9MYW5ndWFnZUVkaXRvci5odG1sIj5MYW5ndWFnZUVkaXRvcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vVGltZVpvbmVIYW5kbGluZy5odG1sIj5UaW1lWm9uZUhhbmRsaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9FZGl0VGVtcGxhdGVzLmh0bWwiPkVkaXRUZW1wbGF0ZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk5BVCBQb3J0IFNldHRpbmdzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9ydFNldHRpbmdzLmh0bWwiPlBvcnQgc2V0dGluZ3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlBlcmZvcm1hbmNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCI+SlZNIHBlcmZvcm1hbmNlIHR1bmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+VXNlciBJbnRlcmZhY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiPlRoZW1lczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRGFzaGJvYXJkLmh0bWwiPkRhc2hib2FyZDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCI+V2ViY2FtIHJlc29sdXRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCI+Um9vbSBsYXlvdXQgb3B0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSG90S2V5cy5odG1sIj5Ib3QgS2V5czwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q3VzdG9taXphdGlvbjwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmFwcE5hbWVQYXRoLmh0bWwiPldlYmFwcCBuYW1lL3BhdGg8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL05hdmlnYXRpb24uaHRtbCI+TmF2aWdhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIj5DYWxlbmRhciBhbmQgdGltZXpvbmU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCI+Q3VzdG9tIHJvb20gdHlwZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCI+Q3VzdG9tIGN0eXB0IG1lY2hhbmlzbTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCI+R2VuZXJhbCBDb25maWd1cmF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5TZWN1cml0eTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCI+UmVzdHJpY3RlZCBBY2Nlc3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1JUTVBTQW5kSFRUUFMuaHRtbCI+UlRNUFMgYW5kIEhUVFBTPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Db252ZXJ0ZXJzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIj5PcGVuT2ZmaWNlIENvbnZlcnRlcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIj5GRk1QRUcgVmVyc2lvbiBTd2l0Y2g8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNsdXN0ZXJpbmc8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DbHVzdGVyaW5nLmh0bWwiPkNsdXN0ZXJpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk1pc2M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZXRWZXJzaW9uSW5mby5odG1sIj5HZXQgdmVyc2lvbiBpbmZvPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAKKyAgICA8L2Rpdj4KKyAgICAgCisgICAgPGJyLz4KKyAgICAKKyAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iSG93IHRvIHVwZGF0ZSBBcGFjaGUgT3Blbk1lZXRpbmdzIHdlYnNpdGUiPjxzdHJvbmc+SG93IHRvIHVwZGF0ZSBBcGFjaGUgT3Blbk1lZXRpbmdzIHdlYnNpdGU8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgYmdjb2xvcj0iI0VGRUZFRiI+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IlJlcXVpcmVkIHRvb2xzIj48c3Ryb25nPlJlcXVpcmVkIHRvb2xzPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorCQkJCQk8dWw+DQorCQkJCQkJPGxpPlN1biBKREs2PC9saT4NCisJCQkJCQk8bGk+QXBhY2hlIEFOVCAoMS44IG9yIGxhdGVyKTwvbGk+DQorCQkJCQk8L3VsPg0KKwkJCQk8L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkIGJnY29sb3I9IiNFRkVGRUYiPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0iYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJJbnRyb2R1Y3Rpb24iPjxzdHJvbmc+SW50cm9kdWN0aW9uPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorCQkJCQk8cD4NCisJCQkJCQlUaGUgQXBhY2hlIE9wZW5NZWV0aW5ncyBIVE1MIHdlYnNpdGVzIGFyZSBnZW5lcmF0ZWQgZnJvbSBYTUwgZmlsZXMuIA0KKwkJCQkJCVlvdSBlZGl0IHRoZSBYTUwgZmlsZXMsIHJ1biB0aGUgQU5UIGNvbW1hbmQgImFudCBhbmFraWEiIHRoYXQgZ2VuZXJhdGVzIHRoZSBIVE1MIGZpbGVzIA0KKwkJCQkJCWFuZCB0aGVuIHlvdSBjaGVja2luIHRvIFNWTiBib3RoOiBYTUwgYW5kIEhUTUwgZmlsZXMuDQorCQkJCQk8L3A+DQorCQkJCQk8cD4NCisJCQkJCQlUaGUgd2Vic2l0ZSBpdHNlbGYgdXNlcyBKUXVlcnkgdG8gZ2VuZXJhdGUgdGhlIG1lbnUsIHRoZSBwb3AgaW1hZ2VzIGFuZCB0aGUgaW1hZ2Ugc2xpZGVyIGF0IHRoZSBsYW5kaW5nIHBhZ2UuDQorCQkJCQk8L3A+DQorCQkJCTwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgYmdjb2xvcj0iI0VGRUZFRiI+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IkVkaXRpbmcgdGhlIHdlYnNpdGUiPjxzdHJvbmc+RWRpdGluZyB0aGUgd2Vic2l0ZTwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKwkJCQkJPHA+DQorCQkJCQkJT3Blbk1lZXRpbmdzIHdlYnNpdGUgKA0KKwkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy8iPmh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy88L2E+DQorCQkJCQkJKSBpcyBhIGNvcHkgZnJvbSB0aGUgU1ZOIHJlcG9zaXRvcnkuDQorCQkJCQkJPGJyIC8+DQorCQkJCQkJVGhlIGZpbGUgaW4gdGhlIFNWTiB0byBiZSBzeW5jZWQgYXJlIGF0Og0KKwkJCQkJCTxiciAvPg0KKwkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9zdm4uYXBhY2hlLm9yZy9yZXBvcy9hc2Yvb3Blbm1lZXRpbmdzL3RydW5rL3NpbmdsZXdlYmFwcC9kb2NzLyI+aHR0cDovL3N2bi5hcGFjaGUub3JnL3JlcG9zL2FzZi9vcGVubWVldGluZ3MvdHJ1bmsvc2luZ2xld2ViYXBwL2RvY3MvDQorCQkJCQkJPC9hPg0KKwkJCQkJCTxiciAvPmFuZDxiciAvPg0KKwkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9zdm4uYXBhY2hlLm9yZy9yZXBvcy9hc2Yvb3Blbm1lZXRpbmdzL3RydW5rL3NpbmdsZXdlYmFwcC94ZG9jcy8iPmh0dHA6Ly9zdm4uYXBhY2hlLm9yZy9yZXBvcy9hc2Yvb3Blbm1lZXRpbmdzL3RydW5rL3NpbmdsZXdlYmFwcC94ZG9jcy8NCisJCQkJCQk8L2E+DQorCQkJCQk8L3A+DQorCQkJCQkNCisJCQkJCTxkaXY+DQorCQkJCQkJVG8gdXBkYXRlIHRoZSB3ZWJzaXRlIHlvdSBjaGVja291dCB0cnVuazoNCisJCQkJCQk8YnIgLz4NCisJCQkJCQk8YSBocmVmPSJodHRwczovL3N2bi5hcGFjaGUub3JnL3JlcG9zL2FzZi9vcGVubWVldGluZ3MvdHJ1bmsvc2luZ2xld2ViYXBwLyI+aHR0cHM6Ly9zdm4uYXBhY2hlLm9yZy9yZXBvcy9hc2Yvb3Blbm1lZXRpbmdzL3RydW5rL3NpbmdsZXdlYmFwcC8NCisJCQkJCQk8L2E+IDxiciAvPg0KKwkJCQkJCWVkaXQgdGhlIGZpbGVzIGluIHRoZSBmb2xkZXIgPHR0Pnhkb2NzPC90dD48YnIgLz4NCisJCQkJCQl0aGVuIHlvdSBydW4gdGhlIGNvbW1hbmQ6DQorCQkJCQkJPGRpdiBjbGFzcz0ieG1sY29kZSI+DQorCQkJCQkJCWFudCBhbmFraWENCisJCQkJCQk8L2Rpdj4NCisJCQkJCQljb250cm9sIHRoZSBvdXRwdXQgbG9jYWxseSBpbiB0aGUgZm9sZGVyIDx0dD5kb2NzPC90dD48YnIgLz4NCisJCQkJCQlBbmQgdGhlbiBjaGVja2luIGludG8gdGhlIFNWTiA8aT5ib3RoPC9pPiB0aGUgZWRpdGVkIHhtbCBhbmQgZ2VuZXJhdGVkIGh0bWwgZmlsZXMuDQorCQkJCQk8L2Rpdj4NCisJCQkJCQ0KKwkJCQkJPHA+DQorCQkJCQkJVGhlIHB1YmxpYyB3ZWJzaXRlIGlzIGF1dG9tYXRpY2FsbHkgc3luY2VkIHdpdGggdGhlIFNWTiByZXBvc2l0b3J5LjxiciAvPg0KKwkJCQkJCUNoYW5nZXMgdG8gdGhlIFNWTiBzaG91bGQgYmUgaW1tZWRpYXRlbHkgc3luY2VkIHRvIHRoZSBwcm9kdWN0aW9uIHdlYnNpdGUuPGJyIC8+DQorCQkJCQkJSWYgbm90IHlvdSBtaWdodCBsb2dpbiB0byBwZW9wbGUuYXBhY2hlLm9yZyw8YnIgLz4NCisJCQkJCQljZCB0byA8dHQ+L3d3dy9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9jb250ZW50LzwvdHQ+PGJyIC8+DQorCQkJCQkJYW5kIHJ1biB0aGUgbGludXggY29tbWFuZCAidG91Y2giIG9uIHRoZSBmaWxlcyB0aGF0IG5lZWQgdG8gYmUgc3luY2VkDQorCQkJCQk8L3A+DQorCQkJCTwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgYmdjb2xvcj0iI0VGRUZFRiI+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IkFkZGluZyBhIG5ldyBtZW51IGVudHJ5Ij48c3Ryb25nPkFkZGluZyBhIG5ldyBtZW51IGVudHJ5PC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorCQkJCQlUbyBhZGQgYSBuZXcgbWVudSBlbnRyeSBpbiB0aGUgbGVmdCBzaWRlIHBhbmVsIHlvdSBuZWVkIHRvIG1vZGlmeSB0aGUgZmlsZTogDQorCQkJCQk8YnIgLz4NCisJCQkJCTx0dD54ZG9jcy9zdHlsZXNoZWV0cy9wcm9qZWN0LnhtbDwvdHQ+DQorCQkJCTwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgYmdjb2xvcj0iI0VGRUZFRiI+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IldyaXRpbmcgYSBuZXcgbWFjcm8iPjxzdHJvbmc+V3JpdGluZyBhIG5ldyBtYWNybzwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKwkJCQkJPHA+DQorCQkJCQkJWW91IGNhbiB3cml0ZSBtYWNyb3MgaW4gYSB0ZW1wbGF0ZSBsYW5ndWFnZSB0byBwYXJzZSBmcm9tIHRoZSBYTUwgZmlsZXMgY2VydGFpbiBhc3BlY3RzLg0KKwkJCQkJPC9wPg0KKwkJCQkJPHA+DQorCQkJCQkJVG8gYWRkIGEgbmV3IG1hY3JvIHNlZSB0aGUgZmlsZTo8YnIgLz4NCisJCQkJCQk8dHQ+eGRvY3Mvc3R5bGVzaGVldHMvc2l0ZS52c2w8L3R0Pg0KKwkJCQkJPC9wPg0KKwkJCQk8L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDwhLS0gRk9PVEVSIC0tPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgYWxpZ249ImNlbnRlciI+PGZvbnQgY29sb3I9IiMxMjM0NjUiIHNpemU9Ii0xIj48ZW0+CisgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAmIzE2OTsgMjAwMy0yMDEzLCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyAgICAgICAgICAgICAgICAgICAgPC9lbT48L2ZvbnQ+PC9kaXY+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvYm9keT4KKyAgICA8L2h0bWw+Cis8IS0tIGVuZCB0aGUgcHJvY2Vzc2luZyAtLT4KKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKwpkaWZmIC0tZ2l0IGEvZG9jcy9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCBiL2RvY3MvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjVmZjY0YwotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwKQEAgLTAsMCArMSw3MjAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgorCis8IS0tCitDb3B5cmlnaHQgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKworPCEtLSBDb250ZW50IFN0eWxlc2hlZXQgZm9yIFNpdGUgLS0+CisKKyAgICAgICAgCis8IS0tIHN0YXJ0IHRoZSBwcm9jZXNzaW5nIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8IS0tIEdFTkVSQVRFRCBGSUxFLCBETyBOT1QgRURJVCwgRURJVCBUSEUgWE1MIEZJTEUgSU4geGRvY3MgSU5TVEVBRCEgLS0+CisgICAgPCEtLSBNYWluIFBhZ2UgU2VjdGlvbiAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGh0bWw+CisgICAgICAgIDxoZWFkPgorICAgICAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiLz4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iCisJCQlPcGVuTWVldGluZ3MgVGVhbQorCQkiPgorICAgICAgICAgICAgPG1ldGEgbmFtZT0iZW1haWwiIGNvbnRlbnQ9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+CisgICAgICAgICAgICAKKyAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgPHRpdGxlPkFwYWNoZSBPcGVuTWVldGluZ3MgLSBDb21tZXJjaWFsIFN1cHBvcnQ8L3RpdGxlPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL29wZW5tZWV0aW5ncy5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2pxdWVyeS11aS5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2NvaW4tc2xpZGVyLXN0eWxlcy5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2NvbG9yYm94LmNzcyIgLz4KKyAgICAgICAgICAgIAorCQkJPCEtLSBBZGQgalF1ZXJ5IGxpYnJhcnkgLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9qcXVlcnktMS43LjEubWluLmpzIj48L3NjcmlwdD4KKwkJCisJCQk8IS0tIEFkZCBjb2luc2xpZGVyIHBsdWdpbnMgLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9jb2luLXNsaWRlci5taW4uanMiPjwvc2NyaXB0PgorCQkJCisJCQk8IS0tIEFkZCBjb2xvcmJveCBwbHVnaW4gLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9qcXVlcnkuY29sb3Jib3guanMiPjwvc2NyaXB0PgorCQkKKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkuY29yZS5qcyI+PC9zY3JpcHQ+CisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLndpZGdldC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5hY2NvcmRpb24uanMiPjwvc2NyaXB0PgorCQkJCisJCQk8c2NyaXB0PgorCQkJJChmdW5jdGlvbigpIHsKKwkJCQkkKCAiI2FjY29yZGlvbiIgKS5hY2NvcmRpb24oeworCQkJCQlhdXRvSGVpZ2h0OiBmYWxzZSwKKwkJCQkJbmF2aWdhdGlvbjogdHJ1ZSwKKwkJCQkJbmF2aWdhdGlvbkZpbHRlcjogZnVuY3Rpb24gKCkgeworCQkJCQkJdmFyIHNpZGViYXJIcmVmQXJyYXkgPSB0aGlzLmhyZWYuc3BsaXQoIi8iKTsKKyAgICAJCQkJCXZhciBzaWRlQmFyTGFzdFN0cmluZyA9IHNpZGViYXJIcmVmQXJyYXlbc2lkZWJhckhyZWZBcnJheS5sZW5ndGggLSAxXS50b0xvd2VyQ2FzZSgpOworCQkJCQkJCisJCQkJCQlpZiAoc2lkZUJhckxhc3RTdHJpbmcuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJCQkJcmV0dXJuIGZhbHNlOworCQkJCQkJfQorCQkJCQkJCisJCQkJCQkJCQkJCQkvKiBkb2N1bWVudC5sb2NhdGlvbi5ocmVmICovCisJCQkJCQl2YXIgY3VycmVudFNlY3Rpb24gPSAiIjsKKwkJCQkJCQorCQkJCQkJdmFyIGN1cnJlbnRMb2NhdGlvbiA9ICIiOworCQkJCQkJdmFyIGN1cnJlbnRMaW5rID0gIiI7CisJCQkJCQlpZiAoZmFsc2UpIHsKKwkJCQkJCQorCQkJCQkJfQorICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9pbmRleC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9pbmRleC5odG1sIi5zdWJzdHIoMSwgIi9pbmRleC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2xpY2Vuc2UuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbGljZW5zZS5odG1sIi5zdWJzdHIoMSwgIi9saWNlbnNlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iLnN1YnN0cigxLCAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kb3dubG9hZHMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZG93bmxvYWRzLmh0bWwiLnN1YnN0cigxLCAiL2Rvd25sb2Fkcy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIuc3Vic3RyKDEsICIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luc3RhbGxhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9pbnN0YWxsYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvaW5zdGFsbGF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVXBncmFkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9VcGdyYWRlLmh0bWwiLnN1YnN0cigxLCAiL1VwZ3JhZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIi5zdWJzdHIoMSwgImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29tbWFuZExpbmVBZG1pbi5odG1sIi5zdWJzdHIoMSwgIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2dldC1pbnZvbHZlZC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2dldC1pbnZvbHZlZC5odG1sIi5zdWJzdHIoMSwgIi9nZXQtaW52b2x2ZWQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi90ZWFtLWxpc3QuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi90ZWFtLWxpc3QuaHRtbCIuc3Vic3RyKDEsICIvdGVhbS1saXN0Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbWFpbC1saXN0cy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL21haWwtbGlzdHMuaHRtbCIuc3Vic3RyKDEsICIvbWFpbC1saXN0cy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIuc3Vic3RyKDEsICJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvc3ZuLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9zdm4uaHRtbCIuc3Vic3RyKDEsICIvc3ZuLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIi5zdWJzdHIoMSwgImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZGVwZW5kZW5jaWVzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kZXBlbmRlbmNpZXMuaHRtbCIuc3Vic3RyKDEsICIvZGVwZW5kZW5jaWVzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiLnN1YnN0cigxLCAiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSlVuaXRUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9KVW5pdFRlc3RpbmcuaHRtbCIuc3Vic3RyKDEsICIvSlVuaXRUZXN0aW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTWFudWFsVGVzdGluZy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTWFudWFsVGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9NYW51YWxUZXN0aW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVsZWFzZUd1aWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZWxlYXNlR3VpZGUuaHRtbCIuc3Vic3RyKDEsICIvUmVsZWFzZUd1aWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2Vic2l0ZUd1aWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9XZWJzaXRlR3VpZGUuaHRtbCIuc3Vic3RyKDEsICIvV2Vic2l0ZUd1aWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1NvYXBSZXN0QVBJLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Tb2FwUmVzdEFQSS5odG1sIi5zdWJzdHIoMSwgIi9Tb2FwUmVzdEFQSS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RBUElTYW1wbGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1Jlc3RBUElTYW1wbGUuaHRtbCIuc3Vic3RyKDEsICIvUmVzdEFQSVNhbXBsZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0xkYXBBbmRBRFMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0xkYXBBbmRBRFMuaHRtbCIuc3Vic3RyKDEsICIvTGRhcEFuZEFEUy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0Vycm9yc1RhYmxlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9FcnJvcnNUYWJsZS5odG1sIi5zdWJzdHIoMSwgIi9FcnJvcnNUYWJsZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Nb29kbGVQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTW9vZGxlUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL01vb2RsZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Nha2FpUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1Nha2FpUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1Nha2FpUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSmlyYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9KaXJhUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0ppcmFQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Kb29tbGFQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSm9vbWxhUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0pvb21sYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0RydXBhbFBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9EcnVwYWxQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvRHJ1cGFsUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQml0cml4UGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0JpdHJpeFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9CaXRyaXhQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVkbWluZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZWRtaW5lUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1JlZG1pbmVQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9JQk1EQjJDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JQk1EQjJDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvSUJNREIyQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9PcmFjbGVDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9PcmFjbGVDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvT3JhY2xlQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NeVNRTENvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL015U1FMQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL015U1FMQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1Bvc3RncmVzQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL1Bvc3RncmVzQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0xhbmd1YWdlRWRpdG9yLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIuc3Vic3RyKDEsICIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiLnN1YnN0cigxLCAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0VkaXRUZW1wbGF0ZXMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9FZGl0VGVtcGxhdGVzLmh0bWwiLnN1YnN0cigxLCAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUG9ydFNldHRpbmdzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9ydFNldHRpbmdzLmh0bWwiLnN1YnN0cigxLCAiL1BvcnRTZXR0aW5ncy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiLnN1YnN0cigxLCAiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiLnN1YnN0cigxLCAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0Rhc2hib2FyZC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0Rhc2hib2FyZC5odG1sIi5zdWJzdHIoMSwgIi9EYXNoYm9hcmQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0hvdEtleXMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Ib3RLZXlzLmh0bWwiLnN1YnN0cigxLCAiL0hvdEtleXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViYXBwTmFtZVBhdGguaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJhcHBOYW1lUGF0aC5odG1sIi5zdWJzdHIoMSwgIi9XZWJhcHBOYW1lUGF0aC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTmF2aWdhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL05hdmlnYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvTmF2aWdhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIuc3Vic3RyKDEsICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIuc3Vic3RyKDEsICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIi5zdWJzdHIoMSwgIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SVE1QU0FuZEhUVFBTLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUlRNUFNBbmRIVFRQUy5odG1sIi5zdWJzdHIoMSwgIi9SVE1QU0FuZEhUVFBTLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiLnN1YnN0cigxLCAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiLnN1YnN0cigxLCAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ2x1c3RlcmluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NsdXN0ZXJpbmcuaHRtbCIuc3Vic3RyKDEsICIvQ2x1c3RlcmluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZXRWZXJzaW9uSW5mby5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dldFZlcnNpb25JbmZvLmh0bWwiLnN1YnN0cigxLCAiL0dldFZlcnNpb25JbmZvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCSAgICAJCQkJCQorICAgIAkJCQkJY3VycmVudExpbmsgPSBjdXJyZW50TGluay50b0xvd2VyQ2FzZSgpOworICAgIAkJCQkJY3VycmVudExvY2F0aW9uID0gY3VycmVudExvY2F0aW9uLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQkKKwkJCQkJCXJldHVybiBzaWRlQmFyTGFzdFN0cmluZyA9PSBjdXJyZW50TGluaysiIyIrY3VycmVudExvY2F0aW9uOworCQkJCQl9CisJCQkJfSk7CisJCQl9KTsKKwkJCTwvc2NyaXB0PgorCQkJCisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisJCQkJJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CisJCQkJCSQoJy5mYW5jeWJveC1idXR0b25zJykuY29sb3Jib3goe3JlbDonZmFuY3lib3gtYnV0dG9ucycsd2lkdGg6Ijc1JSIsIGhlaWdodDoiNzUlIn0pOworCQkJCQkkKCcjYWNjb3JkaW9uIGEnKS5lYWNoKGZ1bmN0aW9uKCkgeworCQkJCSAgICAgIHZhciBhID0gJCh0aGlzKTsKKwkJCQkgICAgICB2YXIgaHJlZiA9IGEuYXR0cigiaHJlZiIpOworCQkJCSAgICAgIGlmIChocmVmLmluZGV4T2YoIiMiKSA9PSAtMSkgeworCQkJCSAgICAgIAkgIHZhciBjb21wYXJlSXQgPSBocmVmLnN1YnN0cigyLCBocmVmLmxlbmd0aCk7CisJCQkJCSAgICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoY29tcGFyZUl0KSE9IC0xKSB7CisJCQkJCSAgICAgICBhLmFkZENsYXNzKCdhY3RpdmUnKTsKKwkJCQkJICAgICAgfQorCQkJCSAgICAgIH0KKwkJCQkgICAgfSk7CisJCQkJCSQoJyNjb2luLXNsaWRlcicpLmNvaW5zbGlkZXIoeyB3aWR0aDogNjQwLGhlaWdodDogNDAwLCBkZWxheTogNDAwMCAgfSk7CQkJCQkKKwkJCQl9KTsKKwkJCTwvc2NyaXB0PgkKKwkJCQkJCQorCQkJPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKwkJCQkuZmFuY3lib3gtY3VzdG9tIC5mYW5jeWJveC1vdXRlciB7CisJCQkJCWJveC1zaGFkb3c6IDAgMCA1MHB4ICMyMjI7CisJCQkJfQorCQkJPC9zdHlsZT4KKyAgICAgICAgPC9oZWFkPgorCisgICAgICAgIDxib2R5IGJnY29sb3I9IiNmZmZmZmYiIHRleHQ9IiMwMDAwMDAiIGxpbms9IiMxMjM0NjUiIHZsaW5rPSIjMTIzNDY1IiBhbGluaz0iIzAwMDAwMCI+ICAKKyAgICAgICAgCTxkaXYgY2xhc3M9Im1haW5ib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgCTxkaXYgY2xhc3M9InN1cGVyYm9keSIgc3R5bGU9IndpZHRoOiAxMDAlOyI+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiPgorICAgICAgICAgICAgICAgIDwhLS0gVE9QIElNQUdFIC0tPgorICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0Ij4KKzxhIGhyZWY9Imh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy8iPjxpbWcgc3JjPSIuL2ltYWdlcy9sb2dvLTIuanBnIiBhbHQ9IkFwYWNoZSBPcGVuTWVldGluZ3MiIGJvcmRlcj0iMCIvPjwvYT4KKzwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODAlIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIiA+CisJPGEgaHJlZj0iZGVtby5odG1sIj5EZW1vPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9ImRvd25sb2Fkcy5odG1sIiB0YXJnZXQ9Il9QQVJFTlQiPkRvd25sb2FkPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imluc3RhbGxhdGlvbi5odG1sIiB0YXJnZXQ9Il9QQVJFTlQiPkluc3RhbGxhdGlvbjwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUyIgdGFyZ2V0PSJfQkxBTksiPldpa2k8L2E+CisJPHNwYW4+Jm5ic3A7PC9zcGFuPgorPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iNCI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGhyIG5vc2hhZGU9Im5vc2hhZGUiIHNpemU9IjEiLz4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDwhLS0gTEVGVCBTSURFIE5BVklHQVRJT04gLS0+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCIgbm93cmFwPSJub3dyYXAiPgorCisgICAgICAgICAgICAgICAgICAgIDwhLS0gc3BlY2lhbCBBQ29uIExvZ28gLSBsZWF2ZSBoZXJlIGZvciBuZXh0IHRpbWUKKyAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL2FwYWNoZWNvbi5jb20vMjAwNS9VUy8iPgorICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHA6Ly9hcGFjaGUub3JnL2ltYWdlcy9hYzIwMDV1c19ibHVlXzEyNXgxMjUuanBnIiBoZWlnaHQ9IjEyNSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjEyNSIgYm9yZGVyPSIwIiBhbHQ9IkFwYWNoZUNvbiBVUyAyMDA1IiAvPgorICAgICAgICAgICAgICAgICAgICA8L2E+ICAtLT4KKworICAgICAgICAgICAgICAgICAgIDwhLS0gcmVndWxhciBtZW51IC0tPgorCisgICAgICAgICAgICAgICAgICAgIAorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDxkaXYgaWQ9ImFjY29yZGlvbiIgc3R5bGU9IndpZHRoOiAxMDAlIj4KKyAgICAKKyAgICAgICAgICAgIAk8aDM+PGEgaHJlZj0iI0dlbmVyYWwiPkdlbmVyYWw8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luZGV4Lmh0bWwiPkhvbWU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2xpY2Vuc2UuaHRtbCI+TGljZW5zZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iPkFTRjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZG93bmxvYWRzLmh0bWwiPkRvd25sb2FkczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiPkNvbW1lcmNpYWwgU3VwcG9ydDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI+SW5zdGFsbGF0aW9uIGFuZCBVcGdyYWRlPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9pbnN0YWxsYXRpb24uaHRtbCI+SW5zdGFsbGF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9VcGdyYWRlLmh0bWwiPlVwZ3JhZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiPlR1dG9yaWFsczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQ29tbWFuZExpbmVBZG1pbi5odG1sIj5Db21tYW5kIExpbmUgQWRtaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0NvbW11bml0eSI+Q29tbXVuaXR5PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9nZXQtaW52b2x2ZWQuaHRtbCI+R2V0IEludm9sdmVkPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi90ZWFtLWxpc3QuaHRtbCI+Q29tbWl0dGVyczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbWFpbC1saXN0cy5odG1sIj5NYWlsaW5nIExpc3RzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iPldpa2k8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0RldmVsb3BtZW50Ij5EZXZlbG9wbWVudDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vc3ZuLmh0bWwiPlNvdXJjZSBDb2RlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyI+QnVncyAvIElzc3VlcyAoSklSQSk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2RlcGVuZGVuY2llcy5odG1sIj5EZXBlbmRlbmNpZXM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiPkJ1aWxkIEluc3RydWN0aW9uczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSlVuaXRUZXN0aW5nLmh0bWwiPkpVbml0IFRlc3Rpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01hbnVhbFRlc3RpbmcuaHRtbCI+TWFudWFsIFRlc3Rpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1JlbGVhc2VHdWlkZS5odG1sIj5SZWxlYXNlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9XZWJzaXRlR3VpZGUuaHRtbCI+V2Vic2l0ZSBHdWlkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjSW50ZWdyYXRpb24iPkludGVncmF0aW9uPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Tb2FwUmVzdEFQSS5odG1sIj5TT0FQL1JFU1QgQVBJPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZXN0QVBJU2FtcGxlLmh0bWwiPlJFU1QgQVBJIFNhbXBsZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTGRhcEFuZEFEUy5odG1sIj5MZGFwIGFuZCBBRFM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiPlZvSVAgYW5kIFNJUDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vRXJyb3JzVGFibGUuaHRtbCI+RXJyb3JzIHRhYmxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNQbHVnaW5zIj5QbHVnaW5zPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Nb29kbGVQbHVnaW4uaHRtbCI+TW9vZGxlIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU2FrYWlQbHVnaW4uaHRtbCI+U2FrYWkgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KaXJhUGx1Z2luLmh0bWwiPkppcmEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Kb29tbGFQbHVnaW4uaHRtbCI+Sm9vbWxhIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vRHJ1cGFsUGx1Z2luLmh0bWwiPkRydXBhbCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0JpdHJpeFBsdWdpbi5odG1sIj5CaXRyaXggUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiPkNvbmZsdWVuY2UgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TdWdhckNSTVBsdWdpbi5odG1sIj5TdWdhckNSTSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1JlZG1pbmVQbHVnaW4uaHRtbCI+UmVkbWluZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0NvbmZpZ3VyYXRpb24iPkNvbmZpZ3VyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkRCIFNhbXBsZSBDb25maWd1cmF0aW9uczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiPkFwYWNoZSBEZXJieTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSUJNREIyQ29uZmlnLmh0bWwiPklCTSBEQjI8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL09yYWNsZUNvbmZpZy5odG1sIj5PcmFjbGU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL015U1FMQ29uZmlnLmh0bWwiPk15U1FMPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIj5Qb3N0Z3JlczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TG9jYWxpemF0aW9uIGFuZCBsYW5ndWFnZXM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIj5JbnRlcm5hdGlvbmFsaXNhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTGFuZ3VhZ2VFZGl0b3IuaHRtbCI+TGFuZ3VhZ2VFZGl0b3I8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1RpbWVab25lSGFuZGxpbmcuaHRtbCI+VGltZVpvbmVIYW5kbGluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRWRpdFRlbXBsYXRlcy5odG1sIj5FZGl0VGVtcGxhdGVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5OQVQgUG9ydCBTZXR0aW5nczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1BvcnRTZXR0aW5ncy5odG1sIj5Qb3J0IHNldHRpbmdzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5QZXJmb3JtYW5jZTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiPkpWTSBwZXJmb3JtYW5jZSB0dW5pbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlVzZXIgSW50ZXJmYWNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIj5UaGVtZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0Rhc2hib2FyZC5odG1sIj5EYXNoYm9hcmQ8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiPldlYmNhbSByZXNvbHV0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiPlJvb20gbGF5b3V0IG9wdGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0hvdEtleXMuaHRtbCI+SG90IEtleXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkN1c3RvbWl6YXRpb248L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9XZWJhcHBOYW1lUGF0aC5odG1sIj5XZWJhcHAgbmFtZS9wYXRoPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9OYXZpZ2F0aW9uLmh0bWwiPk5hdmlnYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCI+Q2FsZW5kYXIgYW5kIHRpbWV6b25lPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiPkN1c3RvbSByb29tIHR5cGU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiPkN1c3RvbSBjdHlwdCBtZWNoYW5pc208L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiPkdlbmVyYWwgQ29uZmlndXJhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+U2VjdXJpdHk8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiPlJlc3RyaWN0ZWQgQWNjZXNzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9SVE1QU0FuZEhUVFBTLmh0bWwiPlJUTVBTIGFuZCBIVFRQUzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q29udmVydGVyczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCI+T3Blbk9mZmljZSBDb252ZXJ0ZXI8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCI+RkZNUEVHIFZlcnNpb24gU3dpdGNoPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5DbHVzdGVyaW5nPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2x1c3RlcmluZy5odG1sIj5DbHVzdGVyaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5NaXNjPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2V0VmVyc2lvbkluZm8uaHRtbCI+R2V0IHZlcnNpb24gaW5mbzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCisgICAgPC9kaXY+CisgICAgIAorICAgIDxici8+CisgICAgCisgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODAlIiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkID48IS0tIGJnY29sb3I9IiNFRUVFRUUiIC0tPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0idmVyZGFuYSxhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IkNvbW1lcmNpYWwgU3VwcG9ydCBmb3IgT3Blbk1lZXRpbmdzIj48c3Ryb25nPkNvbW1lcmNpYWwgU3VwcG9ydCBmb3IgT3Blbk1lZXRpbmdzPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5UaGVyZSBhcmUgZmV3IGNvbXBhbmllcyBvZmZlcmluZyBjb21wbGV4IHNlcnZpY2VzIGZvciBPcGVuTWVldGluZ3MsIGluY2x1ZGluZyBjb2RlIHN1cHBvcnQsDQorCQkJZGV2ZWxvcG1lbnQsIGludGVncmF0aW9uIGFuZCBidWcgZml4aW5nDQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPg0KKwkJCQk8bGk+DQorCQkJCQk8YSBocmVmPSJodHRwOi8vd3d3LndlYmJhc2UtZGVzaWduLmRlLyIgdGFyZ2V0PSJfQkxBTksiPndlYmJhc2UtZGVzaWduLmRlDQorCQkJCQk8L2E+DQorCQkJCQlvd25lZCBieSBTZWJhc3RpYW4gV2FnbmVyDQorCQkJCTwvbGk+DQorCQkJCTxsaT4NCisJCQkJCTxhIGhyZWY9Imh0dHA6Ly93d3cuZGF0YXZlZC5ydSIgdGFyZ2V0PSJfQkxBTksiPmRhdGF2ZWQucnUNCisJCQkJCTwvYT4NCisJCQkJCXJ1biBieSBBbGV4ZWkgRmVkb3RvdiwgTWF4aW0gU29sb2Rvdm5paywgVGltdXIgVGxldWtlbm92LCBJcmluYSBBcmtoaXBldHMsIERlbmlzIEthbmRyb3YsIFZhc2lseSBEZWd0eWFyZXYNCisJCQkJPC9saT4NCisJCQkJPGxpPg0KKyAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5zYW1vby5lcyIgdGFyZ2V0PSJfQkxBTksiIHJlbD0ibm9mb2xsb3ciPnNhbW9vLmVzPC9hPg0KKyAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXMgc3VwcG9ydCBmb3IgdGhlIFNha2FpIFBsdWdpbg0KKyAgICAgICAgICAgICAgICA8L2xpPg0KKwkJCTwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkgICAgVGhlcmUgYXJlIG1vcmUgY29tcGFuaWVzIG9mZmVyaW5nIGluc3RhbGxhdGlvbiwgY3VzdG9taXphdGlvbiwgaG9zdGluZywgY29uZmVyZW5jaW5nIGFuZCBzdXBwb3J0IHNlcnZpY2VzLiBZb3UgY2FuIGFkZCANCisJCQkJeW91cnNlbGYgdG8gdGhlIDxhIGhyZWY9Imh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL0NvbW1lcmNpYWwrU3VwcG9ydCI+d2lraSBwYWdlPC9hPi4NCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJV2FudCB0byBnZXQgbGlzdGVkIGhlcmU/IEJlY29tZSBhIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9kZXYvY29tbWl0dGVycy5odG1sIj5jb21taXR0ZXI8L2E+Lg0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPCEtLSBGT09URVIgLS0+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGhyIG5vc2hhZGU9Im5vc2hhZGUiIHNpemU9IjEiLz4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBhbGlnbj0iY2VudGVyIj48Zm9udCBjb2xvcj0iIzEyMzQ2NSIgc2l6ZT0iLTEiPjxlbT4KKyAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0ICYjMTY5OyAyMDAzLTIwMTMsIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorICAgICAgICAgICAgICAgICAgICA8L2VtPjwvZm9udD48L2Rpdj4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9ib2R5PgorICAgIDwvaHRtbD4KKzwhLS0gZW5kIHRoZSBwcm9jZXNzaW5nIC0tPgorCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCmRpZmYgLS1naXQgYS9kb2NzL2Nzcy8xYi5wbmcgYi9kb2NzL2Nzcy8xYi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ3MGQ3NgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvY3NzLzFiLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2Nzcy8yYi5wbmcgYi9kb2NzL2Nzcy8yYi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTkzZTEzMgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvY3NzLzJiLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2Nzcy8zYi5wbmcgYi9kb2NzL2Nzcy8zYi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjlkOGI3YQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvY3NzLzNiLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2Nzcy80Yi5wbmcgYi9kb2NzL2Nzcy80Yi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzZlNDFmNAotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvY3NzLzRiLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2Nzcy9jb2luLXNsaWRlci1zdHlsZXMuY3NzIGIvZG9jcy9jc3MvY29pbi1zbGlkZXItc3R5bGVzLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMWU3ZDY3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9jc3MvY29pbi1zbGlkZXItc3R5bGVzLmNzcwpAQCAtMCwwICsxLDE3IEBACisvKgorCUNvaW4gU2xpZGVyIGpRdWVyeSBwbHVnaW4gQ1NTIHN0eWxlcworCWh0dHA6Ly93b3Jrc2hvcC5ycy9wcm9qZWN0cy9jb2luLXNsaWRlcgorKi8KKworCisuY29pbi1zbGlkZXIgeyBvdmVyZmxvdzogaGlkZGVuOyB6b29tOiAxOyBwb3NpdGlvbjogcmVsYXRpdmU7IH0KKy5jb2luLXNsaWRlciBheyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IG91dGxpbmU6IG5vbmU7IGJvcmRlcjogbm9uZTsgfQorCisuY3MtYnV0dG9ucyB7IGZvbnQtc2l6ZTogMHB4OyBwYWRkaW5nOiAxMHB4OyBmbG9hdDogbGVmdDsgfQorLmNzLWJ1dHRvbnMgYSB7IG1hcmdpbi1sZWZ0OiA1cHg7IGhlaWdodDogMTBweDsgd2lkdGg6IDEwcHg7IGZsb2F0OiBsZWZ0OyBib3JkZXI6IDFweCBzb2xpZCAjQjhDNENGOyBjb2xvcjogI0I4QzRDRjsgdGV4dC1pbmRlbnQ6IC0xMDAwcHg7IH0KKy5jcy1hY3RpdmUgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjQjhDNENGOyBjb2xvcjogI0ZGRkZGRjsgfQorCisuY3MtdGl0bGUgeyB3aWR0aDogNTQ1cHg7IHBhZGRpbmc6IDEwcHg7IGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDA7IGNvbG9yOiAjRkZGRkZGOyB9CisKKy5jcy1wcmV2LCAKKy5jcy1uZXh0IHsgYmFja2dyb3VuZC1jb2xvcjogIzAwMDAwMDsgY29sb3I6ICNGRkZGRkY7IHBhZGRpbmc6IDBweCAxMHB4OyB9CmRpZmYgLS1naXQgYS9kb2NzL2Nzcy9jb2xvcmJveC5jc3MgYi9kb2NzL2Nzcy9jb2xvcmJveC5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk3ZmUzZAotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvY3NzL2NvbG9yYm94LmNzcwpAQCAtMCwwICsxLDg2IEBACisvKgorICAgIENvbG9yQm94IENvcmUgU3R5bGU6CisgICAgVGhlIGZvbGxvd2luZyBDU1MgaXMgY29uc2lzdGVudCBiZXR3ZWVuIGV4YW1wbGUgdGhlbWVzIGFuZCBzaG91bGQgbm90IGJlIGFsdGVyZWQuCisqLworI2NvbG9yYm94LCAjY2JveE92ZXJsYXksICNjYm94V3JhcHBlcntwb3NpdGlvbjphYnNvbHV0ZTsgdG9wOjA7IGxlZnQ6MDsgei1pbmRleDo5OTk5OyBvdmVyZmxvdzpoaWRkZW47fQorI2Nib3hPdmVybGF5e3Bvc2l0aW9uOmZpeGVkOyB3aWR0aDoxMDAlOyBoZWlnaHQ6MTAwJTt9CisjY2JveE1pZGRsZUxlZnQsICNjYm94Qm90dG9tTGVmdHtjbGVhcjpsZWZ0O30KKyNjYm94Q29udGVudHtwb3NpdGlvbjpyZWxhdGl2ZTt9CisjY2JveExvYWRlZENvbnRlbnR7b3ZlcmZsb3c6YXV0bzt9CisjY2JveFRpdGxle21hcmdpbjowO30KKyNjYm94TG9hZGluZ092ZXJsYXksICNjYm94TG9hZGluZ0dyYXBoaWN7cG9zaXRpb246YWJzb2x1dGU7IHRvcDowOyBsZWZ0OjA7IHdpZHRoOjEwMCU7IGhlaWdodDoxMDAlO30KKyNjYm94UHJldmlvdXMsICNjYm94TmV4dCwgI2Nib3hDbG9zZSwgI2Nib3hTbGlkZXNob3d7Y3Vyc29yOnBvaW50ZXI7fQorLmNib3hQaG90b3tmbG9hdDpsZWZ0OyBtYXJnaW46YXV0bzsgYm9yZGVyOjA7IGRpc3BsYXk6YmxvY2s7IG1heC13aWR0aDpub25lO30KKy5jYm94SWZyYW1le3dpZHRoOjEwMCU7IGhlaWdodDoxMDAlOyBkaXNwbGF5OmJsb2NrOyBib3JkZXI6MDt9CisjY29sb3Jib3gsICNjYm94Q29udGVudCwgI2Nib3hMb2FkZWRDb250ZW50e2JveC1zaXppbmc6Y29udGVudC1ib3g7fQorCisvKiAKKyAgICBVc2VyIFN0eWxlOgorICAgIENoYW5nZSB0aGUgZm9sbG93aW5nIHN0eWxlcyB0byBtb2RpZnkgdGhlIGFwcGVhcmFuY2Ugb2YgQ29sb3JCb3guICBUaGV5IGFyZQorICAgIG9yZGVyZWQgJiB0YWJiZWQgaW4gYSB3YXkgdGhhdCByZXByZXNlbnRzIHRoZSBuZXN0aW5nIG9mIHRoZSBnZW5lcmF0ZWQgSFRNTC4KKyovCisjY2JveE92ZXJsYXl7YmFja2dyb3VuZDp1cmwoaW1hZ2VzL292ZXJsYXkucG5nKSByZXBlYXQgMCAwO30KKyNjb2xvcmJveHt9CisgICAgI2Nib3hUb3BMZWZ0e3dpZHRoOjIxcHg7IGhlaWdodDoyMXB4OyBiYWNrZ3JvdW5kOnVybChpbWFnZXMvY29udHJvbHMucG5nKSBuby1yZXBlYXQgLTEwMXB4IDA7fQorICAgICNjYm94VG9wUmlnaHR7d2lkdGg6MjFweDsgaGVpZ2h0OjIxcHg7IGJhY2tncm91bmQ6dXJsKGltYWdlcy9jb250cm9scy5wbmcpIG5vLXJlcGVhdCAtMTMwcHggMDt9CisgICAgI2Nib3hCb3R0b21MZWZ0e3dpZHRoOjIxcHg7IGhlaWdodDoyMXB4OyBiYWNrZ3JvdW5kOnVybChpbWFnZXMvY29udHJvbHMucG5nKSBuby1yZXBlYXQgLTEwMXB4IC0yOXB4O30KKyAgICAjY2JveEJvdHRvbVJpZ2h0e3dpZHRoOjIxcHg7IGhlaWdodDoyMXB4OyBiYWNrZ3JvdW5kOnVybChpbWFnZXMvY29udHJvbHMucG5nKSBuby1yZXBlYXQgLTEzMHB4IC0yOXB4O30KKyAgICAjY2JveE1pZGRsZUxlZnR7d2lkdGg6MjFweDsgYmFja2dyb3VuZDp1cmwoaW1hZ2VzL2NvbnRyb2xzLnBuZykgbGVmdCB0b3AgcmVwZWF0LXk7fQorICAgICNjYm94TWlkZGxlUmlnaHR7d2lkdGg6MjFweDsgYmFja2dyb3VuZDp1cmwoaW1hZ2VzL2NvbnRyb2xzLnBuZykgcmlnaHQgdG9wIHJlcGVhdC15O30KKyAgICAjY2JveFRvcENlbnRlcntoZWlnaHQ6MjFweDsgYmFja2dyb3VuZDp1cmwoaW1hZ2VzL2JvcmRlci5wbmcpIDAgMCByZXBlYXQteDt9CisgICAgI2Nib3hCb3R0b21DZW50ZXJ7aGVpZ2h0OjIxcHg7IGJhY2tncm91bmQ6dXJsKGltYWdlcy9ib3JkZXIucG5nKSAwIC0yOXB4IHJlcGVhdC14O30KKyAgICAjY2JveENvbnRlbnR7YmFja2dyb3VuZDojZmZmOyBvdmVyZmxvdzpoaWRkZW47fQorICAgICAgICAuY2JveElmcmFtZXtiYWNrZ3JvdW5kOiNmZmY7fQorICAgICAgICAjY2JveEVycm9ye3BhZGRpbmc6NTBweDsgYm9yZGVyOjFweCBzb2xpZCAjY2NjO30KKyAgICAgICAgI2Nib3hMb2FkZWRDb250ZW50e21hcmdpbi1ib3R0b206MjhweDt9CisgICAgICAgICNjYm94VGl0bGV7cG9zaXRpb246YWJzb2x1dGU7IGJvdHRvbTo0cHg7IGxlZnQ6MDsgdGV4dC1hbGlnbjpjZW50ZXI7IHdpZHRoOjEwMCU7IGNvbG9yOiM5NDk0OTQ7fQorICAgICAgICAjY2JveEN1cnJlbnR7cG9zaXRpb246YWJzb2x1dGU7IGJvdHRvbTo0cHg7IGxlZnQ6NThweDsgY29sb3I6Izk0OTQ5NDt9CisgICAgICAgICNjYm94U2xpZGVzaG93e3Bvc2l0aW9uOmFic29sdXRlOyBib3R0b206NHB4OyByaWdodDozMHB4OyBjb2xvcjojMDA5MmVmO30KKyAgICAgICAgI2Nib3hQcmV2aW91c3twb3NpdGlvbjphYnNvbHV0ZTsgYm90dG9tOjA7IGxlZnQ6MDsgYmFja2dyb3VuZDp1cmwoaW1hZ2VzL2NvbnRyb2xzLnBuZykgbm8tcmVwZWF0IC03NXB4IDA7IHdpZHRoOjI1cHg7IGhlaWdodDoyNXB4OyB0ZXh0LWluZGVudDotOTk5OXB4O30KKyAgICAgICAgI2Nib3hQcmV2aW91czpob3ZlcntiYWNrZ3JvdW5kLXBvc2l0aW9uOi03NXB4IC0yNXB4O30KKyAgICAgICAgI2Nib3hOZXh0e3Bvc2l0aW9uOmFic29sdXRlOyBib3R0b206MDsgbGVmdDoyN3B4OyBiYWNrZ3JvdW5kOnVybChpbWFnZXMvY29udHJvbHMucG5nKSBuby1yZXBlYXQgLTUwcHggMDsgd2lkdGg6MjVweDsgaGVpZ2h0OjI1cHg7IHRleHQtaW5kZW50Oi05OTk5cHg7fQorICAgICAgICAjY2JveE5leHQ6aG92ZXJ7YmFja2dyb3VuZC1wb3NpdGlvbjotNTBweCAtMjVweDt9CisgICAgICAgICNjYm94TG9hZGluZ092ZXJsYXl7YmFja2dyb3VuZDp1cmwoaW1hZ2VzL2xvYWRpbmdfYmFja2dyb3VuZC5wbmcpIG5vLXJlcGVhdCBjZW50ZXIgY2VudGVyO30KKyAgICAgICAgI2Nib3hMb2FkaW5nR3JhcGhpY3tiYWNrZ3JvdW5kOnVybChpbWFnZXMvbG9hZGluZy5naWYpIG5vLXJlcGVhdCBjZW50ZXIgY2VudGVyO30KKyAgICAgICAgI2Nib3hDbG9zZXtwb3NpdGlvbjphYnNvbHV0ZTsgYm90dG9tOjA7IHJpZ2h0OjA7IGJhY2tncm91bmQ6dXJsKGltYWdlcy9jb250cm9scy5wbmcpIG5vLXJlcGVhdCAtMjVweCAwOyB3aWR0aDoyNXB4OyBoZWlnaHQ6MjVweDsgdGV4dC1pbmRlbnQ6LTk5OTlweDt9CisgICAgICAgICNjYm94Q2xvc2U6aG92ZXJ7YmFja2dyb3VuZC1wb3NpdGlvbjotMjVweCAtMjVweDt9CisKKy8qCisgIFRoZSBmb2xsb3dpbmcgZml4ZXMgYSBwcm9ibGVtIHdoZXJlIElFNyBhbmQgSUU4IHJlcGxhY2UgYSBQTkcncyBhbHBoYSB0cmFuc3BhcmVuY3kgd2l0aCBhIGJsYWNrIGZpbGwKKyAgd2hlbiBhbiBhbHBoYSBmaWx0ZXIgKG9wYWNpdHkgY2hhbmdlKSBpcyBzZXQgb24gdGhlIGVsZW1lbnQgb3IgYW5jZXN0b3IgZWxlbWVudC4gIFRoaXMgc3R5bGUgaXMgbm90IGFwcGxpZWQgdG8gb3IgbmVlZGVkIGluIElFOS4KKyAgU2VlOiBodHRwOi8vamFja2xtb29yZS5jb20vbm90ZXMvaWUtdHJhbnNwYXJlbmN5LXByb2JsZW1zLworKi8KKy5jYm94SUUgI2Nib3hUb3BMZWZ0LAorLmNib3hJRSAjY2JveFRvcENlbnRlciwKKy5jYm94SUUgI2Nib3hUb3BSaWdodCwKKy5jYm94SUUgI2Nib3hCb3R0b21MZWZ0LAorLmNib3hJRSAjY2JveEJvdHRvbUNlbnRlciwKKy5jYm94SUUgI2Nib3hCb3R0b21SaWdodCwKKy5jYm94SUUgI2Nib3hNaWRkbGVMZWZ0LAorLmNib3hJRSAjY2JveE1pZGRsZVJpZ2h0IHsKKyAgICBmaWx0ZXI6IHByb2dpZDpEWEltYWdlVHJhbnNmb3JtLk1pY3Jvc29mdC5ncmFkaWVudChzdGFydENvbG9yc3RyPSMwMEZGRkZGRixlbmRDb2xvcnN0cj0jMDBGRkZGRkYpOworfQorCisvKgorICBUaGUgZm9sbG93aW5nIHByb3ZpZGVzIFBORyB0cmFuc3BhcmVuY3kgc3VwcG9ydCBmb3IgSUU2CisgIEZlZWwgZnJlZSB0byByZW1vdmUgdGhpcyBhbmQgdGhlIC9pZTYvIGRpcmVjdG9yeSBpZiB5b3UgaGF2ZSBkcm9wcGVkIElFNiBzdXBwb3J0LgorKi8KKy5jYm94SUU2ICNjYm94VG9wTGVmdHtiYWNrZ3JvdW5kOnVybChpbWFnZXMvaWU2L2JvcmRlclRvcExlZnQucG5nKTt9CisuY2JveElFNiAjY2JveFRvcENlbnRlcntiYWNrZ3JvdW5kOnVybChpbWFnZXMvaWU2L2JvcmRlclRvcENlbnRlci5wbmcpO30KKy5jYm94SUU2ICNjYm94VG9wUmlnaHR7YmFja2dyb3VuZDp1cmwoaW1hZ2VzL2llNi9ib3JkZXJUb3BSaWdodC5wbmcpO30KKy5jYm94SUU2ICNjYm94Qm90dG9tTGVmdHtiYWNrZ3JvdW5kOnVybChpbWFnZXMvaWU2L2JvcmRlckJvdHRvbUxlZnQucG5nKTt9CisuY2JveElFNiAjY2JveEJvdHRvbUNlbnRlcntiYWNrZ3JvdW5kOnVybChpbWFnZXMvaWU2L2JvcmRlckJvdHRvbUNlbnRlci5wbmcpO30KKy5jYm94SUU2ICNjYm94Qm90dG9tUmlnaHR7YmFja2dyb3VuZDp1cmwoaW1hZ2VzL2llNi9ib3JkZXJCb3R0b21SaWdodC5wbmcpO30KKy5jYm94SUU2ICNjYm94TWlkZGxlTGVmdHtiYWNrZ3JvdW5kOnVybChpbWFnZXMvaWU2L2JvcmRlck1pZGRsZUxlZnQucG5nKTt9CisuY2JveElFNiAjY2JveE1pZGRsZVJpZ2h0e2JhY2tncm91bmQ6dXJsKGltYWdlcy9pZTYvYm9yZGVyTWlkZGxlUmlnaHQucG5nKTt9CisKKy5jYm94SUU2ICNjYm94VG9wTGVmdCwKKy5jYm94SUU2ICNjYm94VG9wQ2VudGVyLAorLmNib3hJRTYgI2Nib3hUb3BSaWdodCwKKy5jYm94SUU2ICNjYm94Qm90dG9tTGVmdCwKKy5jYm94SUU2ICNjYm94Qm90dG9tQ2VudGVyLAorLmNib3hJRTYgI2Nib3hCb3R0b21SaWdodCwKKy5jYm94SUU2ICNjYm94TWlkZGxlTGVmdCwKKy5jYm94SUU2ICNjYm94TWlkZGxlUmlnaHQgeworICAgIF9iZWhhdmlvcjogZXhwcmVzc2lvbih0aGlzLnNyYyA9IHRoaXMuc3JjID8gdGhpcy5zcmMgOiB0aGlzLmN1cnJlbnRTdHlsZS5iYWNrZ3JvdW5kSW1hZ2Uuc3BsaXQoJyInKVsxXSwgdGhpcy5zdHlsZS5iYWNrZ3JvdW5kID0gIm5vbmUiLCB0aGlzLnN0eWxlLmZpbHRlciA9ICJwcm9naWQ6RFhJbWFnZVRyYW5zZm9ybS5NaWNyb3NvZnQuQWxwaGFJbWFnZUxvYWRlcihzcmM9IiArIHRoaXMuc3JjICsgIiwgc2l6aW5nTWV0aG9kPSdzY2FsZScpIik7Cit9CmRpZmYgLS1naXQgYS9kb2NzL2Nzcy9pbWFnZXMvYm9yZGVyLnBuZyBiL2RvY3MvY3NzL2ltYWdlcy9ib3JkZXIucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0NjNhMTAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2Nzcy9pbWFnZXMvYm9yZGVyLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2Nzcy9pbWFnZXMvY29udHJvbHMucG5nIGIvZG9jcy9jc3MvaW1hZ2VzL2NvbnRyb2xzLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kY2ZkNmZiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9jc3MvaW1hZ2VzL2NvbnRyb2xzLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2Nzcy9pbWFnZXMvaWU2L2JvcmRlckJvdHRvbUNlbnRlci5wbmcgYi9kb2NzL2Nzcy9pbWFnZXMvaWU2L2JvcmRlckJvdHRvbUNlbnRlci5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ0NDc1ZQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvY3NzL2ltYWdlcy9pZTYvYm9yZGVyQm90dG9tQ2VudGVyLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2Nzcy9pbWFnZXMvaWU2L2JvcmRlckJvdHRvbUxlZnQucG5nIGIvZG9jcy9jc3MvaW1hZ2VzL2llNi9ib3JkZXJCb3R0b21MZWZ0LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzc1ZWJhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9jc3MvaW1hZ2VzL2llNi9ib3JkZXJCb3R0b21MZWZ0LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2Nzcy9pbWFnZXMvaWU2L2JvcmRlckJvdHRvbVJpZ2h0LnBuZyBiL2RvY3MvY3NzL2ltYWdlcy9pZTYvYm9yZGVyQm90dG9tUmlnaHQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3ZjUxMzcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2Nzcy9pbWFnZXMvaWU2L2JvcmRlckJvdHRvbVJpZ2h0LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2Nzcy9pbWFnZXMvaWU2L2JvcmRlck1pZGRsZUxlZnQucG5nIGIvZG9jcy9jc3MvaW1hZ2VzL2llNi9ib3JkZXJNaWRkbGVMZWZ0LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMmQ2M2QxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9jc3MvaW1hZ2VzL2llNi9ib3JkZXJNaWRkbGVMZWZ0LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2Nzcy9pbWFnZXMvaWU2L2JvcmRlck1pZGRsZVJpZ2h0LnBuZyBiL2RvY3MvY3NzL2ltYWdlcy9pZTYvYm9yZGVyTWlkZGxlUmlnaHQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkN2MzZTgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2Nzcy9pbWFnZXMvaWU2L2JvcmRlck1pZGRsZVJpZ2h0LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2Nzcy9pbWFnZXMvaWU2L2JvcmRlclRvcENlbnRlci5wbmcgYi9kb2NzL2Nzcy9pbWFnZXMvaWU2L2JvcmRlclRvcENlbnRlci5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjkzN2E5YwotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvY3NzL2ltYWdlcy9pZTYvYm9yZGVyVG9wQ2VudGVyLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2Nzcy9pbWFnZXMvaWU2L2JvcmRlclRvcExlZnQucG5nIGIvZG9jcy9jc3MvaW1hZ2VzL2llNi9ib3JkZXJUb3BMZWZ0LnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOWQ0NThiCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9jc3MvaW1hZ2VzL2llNi9ib3JkZXJUb3BMZWZ0LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2Nzcy9pbWFnZXMvaWU2L2JvcmRlclRvcFJpZ2h0LnBuZyBiL2RvY3MvY3NzL2ltYWdlcy9pZTYvYm9yZGVyVG9wUmlnaHQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0Yjg1ODMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2Nzcy9pbWFnZXMvaWU2L2JvcmRlclRvcFJpZ2h0LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2Nzcy9pbWFnZXMvbG9hZGluZy5naWYgYi9kb2NzL2Nzcy9pbWFnZXMvbG9hZGluZy5naWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQ2OTVkOAotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvY3NzL2ltYWdlcy9sb2FkaW5nLmdpZgpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2Nzcy9pbWFnZXMvbG9hZGluZ19iYWNrZ3JvdW5kLnBuZyBiL2RvY3MvY3NzL2ltYWdlcy9sb2FkaW5nX2JhY2tncm91bmQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhZTgzZTYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2Nzcy9pbWFnZXMvbG9hZGluZ19iYWNrZ3JvdW5kLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2Nzcy9pbWFnZXMvb3ZlcmxheS5wbmcgYi9kb2NzL2Nzcy9pbWFnZXMvb3ZlcmxheS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTNlYTk4ZgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvY3NzL2ltYWdlcy9vdmVybGF5LnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2Nzcy9pbWFnZXMvdWktYmdfZmxhdF8wX2FhYWFhYV80MHgxMDAucG5nIGIvZG9jcy9jc3MvaW1hZ2VzL3VpLWJnX2ZsYXRfMF9hYWFhYWFfNDB4MTAwLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjVkYWIyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9jc3MvaW1hZ2VzL3VpLWJnX2ZsYXRfMF9hYWFhYWFfNDB4MTAwLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2Nzcy9pbWFnZXMvdWktYmdfZmxhdF83NV9mZmZmZmZfNDB4MTAwLnBuZyBiL2RvY3MvY3NzL2ltYWdlcy91aS1iZ19mbGF0Xzc1X2ZmZmZmZl80MHgxMDAucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjOGIyMjkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2Nzcy9pbWFnZXMvdWktYmdfZmxhdF83NV9mZmZmZmZfNDB4MTAwLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2Nzcy9pbWFnZXMvdWktYmdfZ2xhc3NfNTVfZmJmOWVlXzF4NDAwLnBuZyBiL2RvY3MvY3NzL2ltYWdlcy91aS1iZ19nbGFzc181NV9mYmY5ZWVfMXg0MDAucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkM2Q2MzQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2Nzcy9pbWFnZXMvdWktYmdfZ2xhc3NfNTVfZmJmOWVlXzF4NDAwLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2Nzcy9pbWFnZXMvdWktYmdfZ2xhc3NfNjVfZmZmZmZmXzF4NDAwLnBuZyBiL2RvY3MvY3NzL2ltYWdlcy91aS1iZ19nbGFzc182NV9mZmZmZmZfMXg0MDAucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyY2NiYTIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2Nzcy9pbWFnZXMvdWktYmdfZ2xhc3NfNjVfZmZmZmZmXzF4NDAwLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2Nzcy9pbWFnZXMvdWktYmdfZ2xhc3NfNzVfZGFkYWRhXzF4NDAwLnBuZyBiL2RvY3MvY3NzL2ltYWdlcy91aS1iZ19nbGFzc183NV9kYWRhZGFfMXg0MDAucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhNDZiNDcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2Nzcy9pbWFnZXMvdWktYmdfZ2xhc3NfNzVfZGFkYWRhXzF4NDAwLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2Nzcy9pbWFnZXMvdWktYmdfZ2xhc3NfNzVfZTZlNmU2XzF4NDAwLnBuZyBiL2RvY3MvY3NzL2ltYWdlcy91aS1iZ19nbGFzc183NV9lNmU2ZTZfMXg0MDAucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2YzJiYWEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2Nzcy9pbWFnZXMvdWktYmdfZ2xhc3NfNzVfZTZlNmU2XzF4NDAwLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2Nzcy9pbWFnZXMvdWktYmdfZ2xhc3NfOTVfZmVmMWVjXzF4NDAwLnBuZyBiL2RvY3MvY3NzL2ltYWdlcy91aS1iZ19nbGFzc185NV9mZWYxZWNfMXg0MDAucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0NDNmZGMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2Nzcy9pbWFnZXMvdWktYmdfZ2xhc3NfOTVfZmVmMWVjXzF4NDAwLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2Nzcy9pbWFnZXMvdWktYmdfaGlnaGxpZ2h0LXNvZnRfNzVfY2NjY2NjXzF4MTAwLnBuZyBiL2RvY3MvY3NzL2ltYWdlcy91aS1iZ19oaWdobGlnaHQtc29mdF83NV9jY2NjY2NfMXgxMDAucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjOWZhNmMKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2Nzcy9pbWFnZXMvdWktYmdfaGlnaGxpZ2h0LXNvZnRfNzVfY2NjY2NjXzF4MTAwLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2Nzcy9pbWFnZXMvdWktaWNvbnNfMjIyMjIyXzI1NngyNDAucG5nIGIvZG9jcy9jc3MvaW1hZ2VzL3VpLWljb25zXzIyMjIyMl8yNTZ4MjQwLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMjczZmYxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9jc3MvaW1hZ2VzL3VpLWljb25zXzIyMjIyMl8yNTZ4MjQwLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2Nzcy9pbWFnZXMvdWktaWNvbnNfMmU4M2ZmXzI1NngyNDAucG5nIGIvZG9jcy9jc3MvaW1hZ2VzL3VpLWljb25zXzJlODNmZl8yNTZ4MjQwLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOWQxY2RjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9jc3MvaW1hZ2VzL3VpLWljb25zXzJlODNmZl8yNTZ4MjQwLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2Nzcy9pbWFnZXMvdWktaWNvbnNfNDU0NTQ1XzI1NngyNDAucG5nIGIvZG9jcy9jc3MvaW1hZ2VzL3VpLWljb25zXzQ1NDU0NV8yNTZ4MjQwLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OWJkNDViCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9jc3MvaW1hZ2VzL3VpLWljb25zXzQ1NDU0NV8yNTZ4MjQwLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2Nzcy9pbWFnZXMvdWktaWNvbnNfODg4ODg4XzI1NngyNDAucG5nIGIvZG9jcy9jc3MvaW1hZ2VzL3VpLWljb25zXzg4ODg4OF8yNTZ4MjQwLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDAyNDI2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9jc3MvaW1hZ2VzL3VpLWljb25zXzg4ODg4OF8yNTZ4MjQwLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2Nzcy9pbWFnZXMvdWktaWNvbnNfY2QwYTBhXzI1NngyNDAucG5nIGIvZG9jcy9jc3MvaW1hZ2VzL3VpLWljb25zX2NkMGEwYV8yNTZ4MjQwLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYWIwMTliCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9jc3MvaW1hZ2VzL3VpLWljb25zX2NkMGEwYV8yNTZ4MjQwLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2NzL2Nzcy9qcXVlcnktdWkuY3NzIGIvZG9jcy9jc3MvanF1ZXJ5LXVpLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTBkYjg4Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9jc3MvanF1ZXJ5LXVpLmNzcwpAQCAtMCwwICsxLDU2OCBAQAorLyoKKyAqIGpRdWVyeSBVSSBDU1MgRnJhbWV3b3JrIDEuOC4xNgorICoKKyAqIENvcHlyaWdodCAyMDExLCBBVVRIT1JTLnR4dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9hYm91dCkKKyAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBvciBHUEwgVmVyc2lvbiAyIGxpY2Vuc2VzLgorICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQorICoKKyAqIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkvVGhlbWluZy9BUEkKKyAqLworCisvKiBMYXlvdXQgaGVscGVycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisudWktaGVscGVyLWhpZGRlbiB7IGRpc3BsYXk6IG5vbmU7IH0KKy51aS1oZWxwZXItaGlkZGVuLWFjY2Vzc2libGUgeyBwb3NpdGlvbjogYWJzb2x1dGUgIWltcG9ydGFudDsgY2xpcDogcmVjdCgxcHggMXB4IDFweCAxcHgpOyBjbGlwOiByZWN0KDFweCwxcHgsMXB4LDFweCk7IH0KKy51aS1oZWxwZXItcmVzZXQgeyBtYXJnaW46IDA7IHBhZGRpbmc6IDA7IGJvcmRlcjogMDsgb3V0bGluZTogMDsgbGluZS1oZWlnaHQ6IDEuMzsgdGV4dC1kZWNvcmF0aW9uOiBub25lOyBmb250LXNpemU6IDEwMCU7IGxpc3Qtc3R5bGU6IG5vbmU7IH0KKy51aS1oZWxwZXItY2xlYXJmaXg6YWZ0ZXIgeyBjb250ZW50OiAiLiI7IGRpc3BsYXk6IGJsb2NrOyBoZWlnaHQ6IDA7IGNsZWFyOiBib3RoOyB2aXNpYmlsaXR5OiBoaWRkZW47IH0KKy51aS1oZWxwZXItY2xlYXJmaXggeyBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7IH0KKy8qIHJlcXVpcmVkIGNvbW1lbnQgZm9yIGNsZWFyZml4IHRvIHdvcmsgaW4gT3BlcmEgXCovCisqIGh0bWwgLnVpLWhlbHBlci1jbGVhcmZpeCB7IGhlaWdodDoxJTsgfQorLnVpLWhlbHBlci1jbGVhcmZpeCB7IGRpc3BsYXk6YmxvY2s7IH0KKy8qIGVuZCBjbGVhcmZpeCAqLworLnVpLWhlbHBlci16Zml4IHsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsgdG9wOiAwOyBsZWZ0OiAwOyBwb3NpdGlvbjogYWJzb2x1dGU7IG9wYWNpdHk6IDA7IGZpbHRlcjpBbHBoYShPcGFjaXR5PTApOyB9CisKKworLyogSW50ZXJhY3Rpb24gQ3VlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisudWktc3RhdGUtZGlzYWJsZWQgeyBjdXJzb3I6IGRlZmF1bHQgIWltcG9ydGFudDsgfQorCisKKy8qIEljb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyogc3RhdGVzIGFuZCBpbWFnZXMgKi8KKy51aS1pY29uIHsgZGlzcGxheTogYmxvY2s7IHRleHQtaW5kZW50OiAtOTk5OTlweDsgb3ZlcmZsb3c6IGhpZGRlbjsgYmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdDsgfQorCisKKy8qIE1pc2MgdmlzdWFscworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKy8qIE92ZXJsYXlzICovCisudWktd2lkZ2V0LW92ZXJsYXkgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHRvcDogMDsgbGVmdDogMDsgd2lkdGg6IDEwMCU7IGhlaWdodDogMTAwJTsgfQorCisKKy8qCisgKiBqUXVlcnkgVUkgQ1NTIEZyYW1ld29yayAxLjguMTYKKyAqCisgKiBDb3B5cmlnaHQgMjAxMSwgQVVUSE9SUy50eHQgKGh0dHA6Ly9qcXVlcnl1aS5jb20vYWJvdXQpCisgKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgb3IgR1BMIFZlcnNpb24gMiBsaWNlbnNlcy4KKyAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2UKKyAqCisgKiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1VJL1RoZW1pbmcvQVBJCisgKgorICogVG8gdmlldyBhbmQgbW9kaWZ5IHRoaXMgdGhlbWUsIHZpc2l0IGh0dHA6Ly9qcXVlcnl1aS5jb20vdGhlbWVyb2xsZXIvP2ZmRGVmYXVsdD1zZWdvZSUyMHVpLCUyMEFyaWFsLCUyMHNhbnMtc2VyaWYmZndEZWZhdWx0PWJvbGQmZnNEZWZhdWx0PTEuMWVtJmNvcm5lclJhZGl1cz0zcHgmYmdDb2xvckhlYWRlcj1mOWY5ZjkmYmdUZXh0dXJlSGVhZGVyPTAzX2hpZ2hsaWdodF9zb2Z0LnBuZyZiZ0ltZ09wYWNpdHlIZWFkZXI9MTAwJmJvcmRlckNvbG9ySGVhZGVyPWNjY2NjYyZmY0hlYWRlcj0wMDAwODgmaWNvbkNvbG9ySGVhZGVyPTVmYTVlMyZiZ0NvbG9yQ29udGVudD1lZWVlZWUmYmdUZXh0dXJlQ29udGVudD0wNl9pbnNldF9oYXJkLnBuZyZiZ0ltZ09wYWNpdHlDb250ZW50PTEwMCZib3JkZXJDb2xvckNvbnRlbnQ9YWFhYWFhJmZjQ29udGVudD0yMjIyMjImaWNvbkNvbG9yQ29udGVudD0wYTgyZWImYmdDb2xvckRlZmF1bHQ9MTQ4NGU2JmJnVGV4dHVyZURlZmF1bHQ9MDhfZGlhZ29uYWxzX3RoaWNrLnBuZyZiZ0ltZ09wYWNpdHlEZWZhdWx0PTIyJmJvcmRlckNvbG9yRGVmYXVsdD1mZmZmZmYmZmNEZWZhdWx0PWZmZmZmZiZpY29uQ29sb3JEZWZhdWx0PWZjZGQ0YSZiZ0NvbG9ySG92ZXI9MjI5M2Y3JmJnVGV4dHVyZUhvdmVyPTA4X2RpYWdvbmFsc190aGljay5wbmcmYmdJbWdPcGFjaXR5SG92ZXI9MjYmYm9yZGVyQ29sb3JIb3Zlcj0yMjkzZjcmZmNIb3Zlcj1mZmZmZmYmaWNvbkNvbG9ySG92ZXI9ZmZmZmZmJmJnQ29sb3JBY3RpdmU9MDAwMDg4JmJnVGV4dHVyZUFjdGl2ZT0wOF9kaWFnb25hbHNfdGhpY2sucG5nJmJnSW1nT3BhY2l0eUFjdGl2ZT0yMCZib3JkZXJDb2xvckFjdGl2ZT0wMDAwODgmZmNBY3RpdmU9ZmZmZmZmJmljb25Db2xvckFjdGl2ZT1mZmZmZmYmYmdDb2xvckhpZ2hsaWdodD1jNWRkZmMmYmdUZXh0dXJlSGlnaGxpZ2h0PTA3X2RpYWdvbmFsc19zbWFsbC5wbmcmYmdJbWdPcGFjaXR5SGlnaGxpZ2h0PTI1JmJvcmRlckNvbG9ySGlnaGxpZ2h0PWZmZmZmZiZmY0hpZ2hsaWdodD0zMzMzMzMmaWNvbkNvbG9ySGlnaGxpZ2h0PTBiNTRkNSZiZ0NvbG9yRXJyb3I9MDAwMDg4JmJnVGV4dHVyZUVycm9yPTA4X2RpYWdvbmFsc190aGljay5wbmcmYmdJbWdPcGFjaXR5RXJyb3I9MjAmYm9yZGVyQ29sb3JFcnJvcj0wMDAwODgmZmNFcnJvcj1mZmZmZmYmaWNvbkNvbG9yRXJyb3I9ZmZmZmZmJmJnQ29sb3JPdmVybGF5PWU2YjkwMCZiZ1RleHR1cmVPdmVybGF5PTAxX2ZsYXQucG5nJmJnSW1nT3BhY2l0eU92ZXJsYXk9MCZvcGFjaXR5T3ZlcmxheT0zMCZiZ0NvbG9yU2hhZG93PTAwMDA4OCZiZ1RleHR1cmVTaGFkb3c9MDFfZmxhdC5wbmcmYmdJbWdPcGFjaXR5U2hhZG93PTAmb3BhY2l0eVNoYWRvdz0yMCZ0aGlja25lc3NTaGFkb3c9MHB4Jm9mZnNldFRvcFNoYWRvdz02cHgmb2Zmc2V0TGVmdFNoYWRvdz02cHgmY29ybmVyUmFkaXVzU2hhZG93PTNweAorICovCisKKworLyogQ29tcG9uZW50IGNvbnRhaW5lcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworLnVpLXdpZGdldCB7IGZvbnQtZmFtaWx5OiBzZWdvZSB1aSwgQXJpYWwsIHNhbnMtc2VyaWY7IGZvbnQtc2l6ZTogMS4xZW07IH0KKy51aS13aWRnZXQgLnVpLXdpZGdldCB7IGZvbnQtc2l6ZTogMWVtOyB9CisudWktd2lkZ2V0IGlucHV0LCAudWktd2lkZ2V0IHNlbGVjdCwgLnVpLXdpZGdldCB0ZXh0YXJlYSwgLnVpLXdpZGdldCBidXR0b24geyBmb250LWZhbWlseTogc2Vnb2UgdWksIEFyaWFsLCBzYW5zLXNlcmlmOyBmb250LXNpemU6IDFlbTsgfQorLnVpLXdpZGdldC1jb250ZW50IHsgYm9yZGVyOiAxcHggc29saWQgI2FhYWFhYTsgYmFja2dyb3VuZDogI2VlZWVlZSB1cmwoaW1hZ2VzL3VpLWJnX2luc2V0LWhhcmRfMTAwX2VlZWVlZV8xeDEwMC5wbmcpIDUwJSBib3R0b20gcmVwZWF0LXg7IGNvbG9yOiAjMjIyMjIyOyB9CisudWktd2lkZ2V0LWNvbnRlbnQgYSB7IGNvbG9yOiAjMjIyMjIyOyB9CisudWktd2lkZ2V0LWhlYWRlciB7IGJvcmRlcjogMXB4IHNvbGlkICNjY2NjY2M7IGJhY2tncm91bmQ6ICNmOWY5ZjkgdXJsKGltYWdlcy91aS1iZ19oaWdobGlnaHQtc29mdF8xMDBfZjlmOWY5XzF4MTAwLnBuZykgNTAlIDUwJSByZXBlYXQteDsgY29sb3I6ICMwMDAwODg7IGZvbnQtd2VpZ2h0OiBib2xkOyB9CisudWktd2lkZ2V0LWhlYWRlciBhIHsgY29sb3I6ICMwMDAwODg7IH0KKworLyogSW50ZXJhY3Rpb24gc3RhdGVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy51aS1zdGF0ZS1kZWZhdWx0LCAudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWRlZmF1bHQsIC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1kZWZhdWx0IHsgYm9yZGVyOiAxcHggc29saWQgI2ZmZmZmZjsgYmFja2dyb3VuZDogIzE0ODRlNiB1cmwoaW1hZ2VzL3VpLWJnX2RpYWdvbmFscy10aGlja18yMl8xNDg0ZTZfNDB4NDAucG5nKSA1MCUgNTAlIHJlcGVhdDsgZm9udC13ZWlnaHQ6IGJvbGQ7IGNvbG9yOiAjZmZmZmZmOyB9CisudWktc3RhdGUtZGVmYXVsdCBhLCAudWktc3RhdGUtZGVmYXVsdCBhOmxpbmssIC51aS1zdGF0ZS1kZWZhdWx0IGE6dmlzaXRlZCB7IGNvbG9yOiAjZmZmZmZmOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH0KKy51aS1zdGF0ZS1ob3ZlciwgLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1ob3ZlciwgLnVpLXdpZGdldC1oZWFkZXIgLnVpLXN0YXRlLWhvdmVyLCAudWktc3RhdGUtZm9jdXMsIC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtZm9jdXMsIC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1mb2N1cyB7IGJvcmRlcjogMXB4IHNvbGlkICMyMjkzZjc7IGJhY2tncm91bmQ6ICMyMjkzZjcgdXJsKGltYWdlcy91aS1iZ19kaWFnb25hbHMtdGhpY2tfMjZfMjI5M2Y3XzQweDQwLnBuZykgNTAlIDUwJSByZXBlYXQ7IGZvbnQtd2VpZ2h0OiBib2xkOyBjb2xvcjogI2ZmZmZmZjsgfQorLnVpLXN0YXRlLWhvdmVyIGEsIC51aS1zdGF0ZS1ob3ZlciBhOmhvdmVyIHsgY29sb3I6ICNmZmZmZmY7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfQorLnVpLXN0YXRlLWFjdGl2ZSwgLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1hY3RpdmUsIC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1hY3RpdmUgeyBib3JkZXI6IDFweCBzb2xpZCAjMDAwMDg4OyBiYWNrZ3JvdW5kOiAjMDAwMDg4IHVybChpbWFnZXMvdWktYmdfZGlhZ29uYWxzLXRoaWNrXzIwX2U2OTcwMF80MHg0MC5wbmcpIDUwJSA1MCUgcmVwZWF0OyBmb250LXdlaWdodDogYm9sZDsgY29sb3I6ICNmZmZmZmY7IH0KKy51aS1zdGF0ZS1hY3RpdmUgYSwgLnVpLXN0YXRlLWFjdGl2ZSBhOmxpbmssIC51aS1zdGF0ZS1hY3RpdmUgYTp2aXNpdGVkIHsgY29sb3I6ICNmZmZmZmY7IHRleHQtZGVjb3JhdGlvbjogbm9uZTsgfQorLnVpLXdpZGdldCA6YWN0aXZlIHsgb3V0bGluZTogbm9uZTsgfQorCisvKiBJbnRlcmFjdGlvbiBDdWVzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKy51aS1zdGF0ZS1oaWdobGlnaHQsIC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtaGlnaGxpZ2h0LCAudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtaGlnaGxpZ2h0ICB7Ym9yZGVyOiAxcHggc29saWQgI2ZmZmZmZjsgYmFja2dyb3VuZDogI2M1ZGRmYyB1cmwoaW1hZ2VzL3VpLWJnX2RpYWdvbmFscy1zbWFsbF8yNV9jNWRkZmNfNDB4NDAucG5nKSA1MCUgNTAlIHJlcGVhdDsgY29sb3I6ICMzMzMzMzM7IH0KKy51aS1zdGF0ZS1oaWdobGlnaHQgYSwgLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1oaWdobGlnaHQgYSwudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtaGlnaGxpZ2h0IGEgeyBjb2xvcjogIzMzMzMzMzsgfQorLnVpLXN0YXRlLWVycm9yLCAudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXN0YXRlLWVycm9yLCAudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZXJyb3Ige2JvcmRlcjogMXB4IHNvbGlkICMwMDAwODg7IGJhY2tncm91bmQ6ICMwMDAwODggdXJsKGltYWdlcy91aS1iZ19kaWFnb25hbHMtdGhpY2tfMjBfZTY5NzAwXzQweDQwLnBuZykgNTAlIDUwJSByZXBlYXQ7IGNvbG9yOiAjZmZmZmZmOyB9CisudWktc3RhdGUtZXJyb3IgYSwgLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1lcnJvciBhLCAudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZXJyb3IgYSB7IGNvbG9yOiAjZmZmZmZmOyB9CisudWktc3RhdGUtZXJyb3ItdGV4dCwgLnVpLXdpZGdldC1jb250ZW50IC51aS1zdGF0ZS1lcnJvci10ZXh0LCAudWktd2lkZ2V0LWhlYWRlciAudWktc3RhdGUtZXJyb3ItdGV4dCB7IGNvbG9yOiAjZmZmZmZmOyB9CisudWktcHJpb3JpdHktcHJpbWFyeSwgLnVpLXdpZGdldC1jb250ZW50IC51aS1wcmlvcml0eS1wcmltYXJ5LCAudWktd2lkZ2V0LWhlYWRlciAudWktcHJpb3JpdHktcHJpbWFyeSB7IGZvbnQtd2VpZ2h0OiBib2xkOyB9CisudWktcHJpb3JpdHktc2Vjb25kYXJ5LCAudWktd2lkZ2V0LWNvbnRlbnQgLnVpLXByaW9yaXR5LXNlY29uZGFyeSwgIC51aS13aWRnZXQtaGVhZGVyIC51aS1wcmlvcml0eS1zZWNvbmRhcnkgeyBvcGFjaXR5OiAuNzsgZmlsdGVyOkFscGhhKE9wYWNpdHk9NzApOyBmb250LXdlaWdodDogbm9ybWFsOyB9CisudWktc3RhdGUtZGlzYWJsZWQsIC51aS13aWRnZXQtY29udGVudCAudWktc3RhdGUtZGlzYWJsZWQsIC51aS13aWRnZXQtaGVhZGVyIC51aS1zdGF0ZS1kaXNhYmxlZCB7IG9wYWNpdHk6IC4zNTsgZmlsdGVyOkFscGhhKE9wYWNpdHk9MzUpOyBiYWNrZ3JvdW5kLWltYWdlOiBub25lOyB9CisKKy8qIEljb25zCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KKworLyogc3RhdGVzIGFuZCBpbWFnZXMgKi8KKy51aS1pY29uIHsgd2lkdGg6IDE2cHg7IGhlaWdodDogMTZweDsgYmFja2dyb3VuZC1pbWFnZTogdXJsKGltYWdlcy91aS1pY29uc18wYTgyZWJfMjU2eDI0MC5wbmcpOyB9CisudWktd2lkZ2V0LWNvbnRlbnQgLnVpLWljb24ge2JhY2tncm91bmQtaW1hZ2U6IHVybChpbWFnZXMvdWktaWNvbnNfMGE4MmViXzI1NngyNDAucG5nKTsgfQorLnVpLXdpZGdldC1oZWFkZXIgLnVpLWljb24ge2JhY2tncm91bmQtaW1hZ2U6IHVybChpbWFnZXMvdWktaWNvbnNfNWZhNWUzXzI1NngyNDAucG5nKTsgfQorLnVpLXN0YXRlLWRlZmF1bHQgLnVpLWljb24geyBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoaW1hZ2VzL3VpLWljb25zX2ZjZGQ0YV8yNTZ4MjQwLnBuZyk7IH0KKy51aS1zdGF0ZS1ob3ZlciAudWktaWNvbiwgLnVpLXN0YXRlLWZvY3VzIC51aS1pY29uIHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoaW1hZ2VzL3VpLWljb25zX2ZmZmZmZl8yNTZ4MjQwLnBuZyk7IH0KKy51aS1zdGF0ZS1hY3RpdmUgLnVpLWljb24ge2JhY2tncm91bmQtaW1hZ2U6IHVybChpbWFnZXMvdWktaWNvbnNfZmZmZmZmXzI1NngyNDAucG5nKTsgfQorLnVpLXN0YXRlLWhpZ2hsaWdodCAudWktaWNvbiB7YmFja2dyb3VuZC1pbWFnZTogdXJsKGltYWdlcy91aS1pY29uc18wYjU0ZDVfMjU2eDI0MC5wbmcpOyB9CisudWktc3RhdGUtZXJyb3IgLnVpLWljb24sIC51aS1zdGF0ZS1lcnJvci10ZXh0IC51aS1pY29uIHtiYWNrZ3JvdW5kLWltYWdlOiB1cmwoaW1hZ2VzL3VpLWljb25zX2ZmZmZmZl8yNTZ4MjQwLnBuZyk7IH0KKworLyogcG9zaXRpb25pbmcgKi8KKy51aS1pY29uLWNhcmF0LTEtbiB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgMDsgfQorLnVpLWljb24tY2FyYXQtMS1uZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IDA7IH0KKy51aS1pY29uLWNhcmF0LTEtZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IDA7IH0KKy51aS1pY29uLWNhcmF0LTEtc2UgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAwOyB9CisudWktaWNvbi1jYXJhdC0xLXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNjRweCAwOyB9CisudWktaWNvbi1jYXJhdC0xLXN3IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggMDsgfQorLnVpLWljb24tY2FyYXQtMS13IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTk2cHggMDsgfQorLnVpLWljb24tY2FyYXQtMS1udyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMTJweCAwOyB9CisudWktaWNvbi1jYXJhdC0yLW4tcyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMjhweCAwOyB9CisudWktaWNvbi1jYXJhdC0yLWUtdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNDRweCAwOyB9CisudWktaWNvbi10cmlhbmdsZS0xLW4geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC0xNnB4OyB9CisudWktaWNvbi10cmlhbmdsZS0xLW5lIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTE2cHg7IH0KKy51aS1pY29uLXRyaWFuZ2xlLTEtZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IC0xNnB4OyB9CisudWktaWNvbi10cmlhbmdsZS0xLXNlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHggLTE2cHg7IH0KKy51aS1pY29uLXRyaWFuZ2xlLTEtcyB7IGJhY2tncm91bmQtcG9zaXRpb246IC02NHB4IC0xNnB4OyB9CisudWktaWNvbi10cmlhbmdsZS0xLXN3IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggLTE2cHg7IH0KKy51aS1pY29uLXRyaWFuZ2xlLTEtdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC05NnB4IC0xNnB4OyB9CisudWktaWNvbi10cmlhbmdsZS0xLW53IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTExMnB4IC0xNnB4OyB9CisudWktaWNvbi10cmlhbmdsZS0yLW4tcyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMjhweCAtMTZweDsgfQorLnVpLWljb24tdHJpYW5nbGUtMi1lLXcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTQ0cHggLTE2cHg7IH0KKy51aS1pY29uLWFycm93LTEtbiB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgLTMycHg7IH0KKy51aS1pY29uLWFycm93LTEtbmUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTZweCAtMzJweDsgfQorLnVpLWljb24tYXJyb3ctMS1lIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTMycHggLTMycHg7IH0KKy51aS1pY29uLWFycm93LTEtc2UgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtMzJweDsgfQorLnVpLWljb24tYXJyb3ctMS1zIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTMycHg7IH0KKy51aS1pY29uLWFycm93LTEtc3cgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAtMzJweDsgfQorLnVpLWljb24tYXJyb3ctMS13IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTk2cHggLTMycHg7IH0KKy51aS1pY29uLWFycm93LTEtbncgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTEycHggLTMycHg7IH0KKy51aS1pY29uLWFycm93LTItbi1zIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTEyOHB4IC0zMnB4OyB9CisudWktaWNvbi1hcnJvdy0yLW5lLXN3IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE0NHB4IC0zMnB4OyB9CisudWktaWNvbi1hcnJvdy0yLWUtdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNjBweCAtMzJweDsgfQorLnVpLWljb24tYXJyb3ctMi1zZS1udyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNzZweCAtMzJweDsgfQorLnVpLWljb24tYXJyb3dzdG9wLTEtbiB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xOTJweCAtMzJweDsgfQorLnVpLWljb24tYXJyb3dzdG9wLTEtZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0yMDhweCAtMzJweDsgfQorLnVpLWljb24tYXJyb3dzdG9wLTEtcyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0yMjRweCAtMzJweDsgfQorLnVpLWljb24tYXJyb3dzdG9wLTEtdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0yNDBweCAtMzJweDsgfQorLnVpLWljb24tYXJyb3d0aGljay0xLW4geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC00OHB4OyB9CisudWktaWNvbi1hcnJvd3RoaWNrLTEtbmUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTZweCAtNDhweDsgfQorLnVpLWljb24tYXJyb3d0aGljay0xLWUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAtNDhweDsgfQorLnVpLWljb24tYXJyb3d0aGljay0xLXNlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHggLTQ4cHg7IH0KKy51aS1pY29uLWFycm93dGhpY2stMS1zIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTQ4cHg7IH0KKy51aS1pY29uLWFycm93dGhpY2stMS1zdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC00OHB4OyB9CisudWktaWNvbi1hcnJvd3RoaWNrLTEtdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC05NnB4IC00OHB4OyB9CisudWktaWNvbi1hcnJvd3RoaWNrLTEtbncgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTEycHggLTQ4cHg7IH0KKy51aS1pY29uLWFycm93dGhpY2stMi1uLXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTI4cHggLTQ4cHg7IH0KKy51aS1pY29uLWFycm93dGhpY2stMi1uZS1zdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNDRweCAtNDhweDsgfQorLnVpLWljb24tYXJyb3d0aGljay0yLWUtdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNjBweCAtNDhweDsgfQorLnVpLWljb24tYXJyb3d0aGljay0yLXNlLW53IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE3NnB4IC00OHB4OyB9CisudWktaWNvbi1hcnJvd3RoaWNrc3RvcC0xLW4geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTkycHggLTQ4cHg7IH0KKy51aS1pY29uLWFycm93dGhpY2tzdG9wLTEtZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0yMDhweCAtNDhweDsgfQorLnVpLWljb24tYXJyb3d0aGlja3N0b3AtMS1zIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTIyNHB4IC00OHB4OyB9CisudWktaWNvbi1hcnJvd3RoaWNrc3RvcC0xLXcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjQwcHggLTQ4cHg7IH0KKy51aS1pY29uLWFycm93cmV0dXJudGhpY2stMS13IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtNjRweDsgfQorLnVpLWljb24tYXJyb3dyZXR1cm50aGljay0xLW4geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTZweCAtNjRweDsgfQorLnVpLWljb24tYXJyb3dyZXR1cm50aGljay0xLWUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAtNjRweDsgfQorLnVpLWljb24tYXJyb3dyZXR1cm50aGljay0xLXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtNjRweDsgfQorLnVpLWljb24tYXJyb3dyZXR1cm4tMS13IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTY0cHg7IH0KKy51aS1pY29uLWFycm93cmV0dXJuLTEtbiB7IGJhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC02NHB4OyB9CisudWktaWNvbi1hcnJvd3JldHVybi0xLWUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtOTZweCAtNjRweDsgfQorLnVpLWljb24tYXJyb3dyZXR1cm4tMS1zIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTExMnB4IC02NHB4OyB9CisudWktaWNvbi1hcnJvd3JlZnJlc2gtMS13IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTEyOHB4IC02NHB4OyB9CisudWktaWNvbi1hcnJvd3JlZnJlc2gtMS1uIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE0NHB4IC02NHB4OyB9CisudWktaWNvbi1hcnJvd3JlZnJlc2gtMS1lIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2MHB4IC02NHB4OyB9CisudWktaWNvbi1hcnJvd3JlZnJlc2gtMS1zIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE3NnB4IC02NHB4OyB9CisudWktaWNvbi1hcnJvdy00IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtODBweDsgfQorLnVpLWljb24tYXJyb3ctNC1kaWFnIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTgwcHg7IH0KKy51aS1pY29uLWV4dGxpbmsgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAtODBweDsgfQorLnVpLWljb24tbmV3d2luIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHggLTgwcHg7IH0KKy51aS1pY29uLXJlZnJlc2ggeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNjRweCAtODBweDsgfQorLnVpLWljb24tc2h1ZmZsZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC04MHB4OyB9CisudWktaWNvbi10cmFuc2Zlci1lLXcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtOTZweCAtODBweDsgfQorLnVpLWljb24tdHJhbnNmZXJ0aGljay1lLXcgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTEycHggLTgwcHg7IH0KKy51aS1pY29uLWZvbGRlci1jb2xsYXBzZWQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAwIC05NnB4OyB9CisudWktaWNvbi1mb2xkZXItb3BlbiB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IC05NnB4OyB9CisudWktaWNvbi1kb2N1bWVudCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IC05NnB4OyB9CisudWktaWNvbi1kb2N1bWVudC1iIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHggLTk2cHg7IH0KKy51aS1pY29uLW5vdGUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNjRweCAtOTZweDsgfQorLnVpLWljb24tbWFpbC1jbG9zZWQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAtOTZweDsgfQorLnVpLWljb24tbWFpbC1vcGVuIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTk2cHggLTk2cHg7IH0KKy51aS1pY29uLXN1aXRjYXNlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTExMnB4IC05NnB4OyB9CisudWktaWNvbi1jb21tZW50IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTEyOHB4IC05NnB4OyB9CisudWktaWNvbi1wZXJzb24geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTQ0cHggLTk2cHg7IH0KKy51aS1pY29uLXByaW50IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2MHB4IC05NnB4OyB9CisudWktaWNvbi10cmFzaCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNzZweCAtOTZweDsgfQorLnVpLWljb24tbG9ja2VkIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE5MnB4IC05NnB4OyB9CisudWktaWNvbi11bmxvY2tlZCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0yMDhweCAtOTZweDsgfQorLnVpLWljb24tYm9va21hcmsgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjI0cHggLTk2cHg7IH0KKy51aS1pY29uLXRhZyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0yNDBweCAtOTZweDsgfQorLnVpLWljb24taG9tZSB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgLTExMnB4OyB9CisudWktaWNvbi1mbGFnIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTExMnB4OyB9CisudWktaWNvbi1jYWxlbmRhciB7IGJhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IC0xMTJweDsgfQorLnVpLWljb24tY2FydCB7IGJhY2tncm91bmQtcG9zaXRpb246IC00OHB4IC0xMTJweDsgfQorLnVpLWljb24tcGVuY2lsIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTExMnB4OyB9CisudWktaWNvbi1jbG9jayB7IGJhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC0xMTJweDsgfQorLnVpLWljb24tZGlzayB7IGJhY2tncm91bmQtcG9zaXRpb246IC05NnB4IC0xMTJweDsgfQorLnVpLWljb24tY2FsY3VsYXRvciB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMTJweCAtMTEycHg7IH0KKy51aS1pY29uLXpvb21pbiB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMjhweCAtMTEycHg7IH0KKy51aS1pY29uLXpvb21vdXQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTQ0cHggLTExMnB4OyB9CisudWktaWNvbi1zZWFyY2ggeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTYwcHggLTExMnB4OyB9CisudWktaWNvbi13cmVuY2ggeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTc2cHggLTExMnB4OyB9CisudWktaWNvbi1nZWFyIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE5MnB4IC0xMTJweDsgfQorLnVpLWljb24taGVhcnQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjA4cHggLTExMnB4OyB9CisudWktaWNvbi1zdGFyIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTIyNHB4IC0xMTJweDsgfQorLnVpLWljb24tbGluayB7IGJhY2tncm91bmQtcG9zaXRpb246IC0yNDBweCAtMTEycHg7IH0KKy51aS1pY29uLWNhbmNlbCB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgLTEyOHB4OyB9CisudWktaWNvbi1wbHVzIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTEyOHB4OyB9CisudWktaWNvbi1wbHVzdGhpY2sgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAtMTI4cHg7IH0KKy51aS1pY29uLW1pbnVzIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTQ4cHggLTEyOHB4OyB9CisudWktaWNvbi1taW51c3RoaWNrIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTEyOHB4OyB9CisudWktaWNvbi1jbG9zZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC0xMjhweDsgfQorLnVpLWljb24tY2xvc2V0aGljayB7IGJhY2tncm91bmQtcG9zaXRpb246IC05NnB4IC0xMjhweDsgfQorLnVpLWljb24ta2V5IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTExMnB4IC0xMjhweDsgfQorLnVpLWljb24tbGlnaHRidWxiIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTEyOHB4IC0xMjhweDsgfQorLnVpLWljb24tc2Npc3NvcnMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTQ0cHggLTEyOHB4OyB9CisudWktaWNvbi1jbGlwYm9hcmQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTYwcHggLTEyOHB4OyB9CisudWktaWNvbi1jb3B5IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE3NnB4IC0xMjhweDsgfQorLnVpLWljb24tY29udGFjdCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xOTJweCAtMTI4cHg7IH0KKy51aS1pY29uLWltYWdlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTIwOHB4IC0xMjhweDsgfQorLnVpLWljb24tdmlkZW8geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjI0cHggLTEyOHB4OyB9CisudWktaWNvbi1zY3JpcHQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjQwcHggLTEyOHB4OyB9CisudWktaWNvbi1hbGVydCB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgLTE0NHB4OyB9CisudWktaWNvbi1pbmZvIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTE0NHB4OyB9CisudWktaWNvbi1ub3RpY2UgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMzJweCAtMTQ0cHg7IH0KKy51aS1pY29uLWhlbHAgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtMTQ0cHg7IH0KKy51aS1pY29uLWNoZWNrIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTE0NHB4OyB9CisudWktaWNvbi1idWxsZXQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtODBweCAtMTQ0cHg7IH0KKy51aS1pY29uLXJhZGlvLW9mZiB7IGJhY2tncm91bmQtcG9zaXRpb246IC05NnB4IC0xNDRweDsgfQorLnVpLWljb24tcmFkaW8tb24geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTEycHggLTE0NHB4OyB9CisudWktaWNvbi1waW4tdyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMjhweCAtMTQ0cHg7IH0KKy51aS1pY29uLXBpbi1zIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE0NHB4IC0xNDRweDsgfQorLnVpLWljb24tcGxheSB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgLTE2MHB4OyB9CisudWktaWNvbi1wYXVzZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IC0xNjBweDsgfQorLnVpLWljb24tc2Vlay1uZXh0IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTMycHggLTE2MHB4OyB9CisudWktaWNvbi1zZWVrLXByZXYgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtMTYwcHg7IH0KKy51aS1pY29uLXNlZWstZW5kIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTY0cHggLTE2MHB4OyB9CisudWktaWNvbi1zZWVrLXN0YXJ0IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggLTE2MHB4OyB9CisvKiB1aS1pY29uLXNlZWstZmlyc3QgaXMgZGVwcmVjYXRlZCwgdXNlIHVpLWljb24tc2Vlay1zdGFydCBpbnN0ZWFkICovCisudWktaWNvbi1zZWVrLWZpcnN0IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggLTE2MHB4OyB9CisudWktaWNvbi1zdG9wIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTk2cHggLTE2MHB4OyB9CisudWktaWNvbi1lamVjdCB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMTJweCAtMTYwcHg7IH0KKy51aS1pY29uLXZvbHVtZS1vZmYgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTI4cHggLTE2MHB4OyB9CisudWktaWNvbi12b2x1bWUtb24geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTQ0cHggLTE2MHB4OyB9CisudWktaWNvbi1wb3dlciB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgLTE3NnB4OyB9CisudWktaWNvbi1zaWduYWwtZGlhZyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IC0xNzZweDsgfQorLnVpLWljb24tc2lnbmFsIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTMycHggLTE3NnB4OyB9CisudWktaWNvbi1iYXR0ZXJ5LTAgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtMTc2cHg7IH0KKy51aS1pY29uLWJhdHRlcnktMSB7IGJhY2tncm91bmQtcG9zaXRpb246IC02NHB4IC0xNzZweDsgfQorLnVpLWljb24tYmF0dGVyeS0yIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggLTE3NnB4OyB9CisudWktaWNvbi1iYXR0ZXJ5LTMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtOTZweCAtMTc2cHg7IH0KKy51aS1pY29uLWNpcmNsZS1wbHVzIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtMTkycHg7IH0KKy51aS1pY29uLWNpcmNsZS1taW51cyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xNnB4IC0xOTJweDsgfQorLnVpLWljb24tY2lyY2xlLWNsb3NlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTMycHggLTE5MnB4OyB9CisudWktaWNvbi1jaXJjbGUtdHJpYW5nbGUtZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC00OHB4IC0xOTJweDsgfQorLnVpLWljb24tY2lyY2xlLXRyaWFuZ2xlLXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNjRweCAtMTkycHg7IH0KKy51aS1pY29uLWNpcmNsZS10cmlhbmdsZS13IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggLTE5MnB4OyB9CisudWktaWNvbi1jaXJjbGUtdHJpYW5nbGUtbiB7IGJhY2tncm91bmQtcG9zaXRpb246IC05NnB4IC0xOTJweDsgfQorLnVpLWljb24tY2lyY2xlLWFycm93LWUgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTEycHggLTE5MnB4OyB9CisudWktaWNvbi1jaXJjbGUtYXJyb3ctcyB7IGJhY2tncm91bmQtcG9zaXRpb246IC0xMjhweCAtMTkycHg7IH0KKy51aS1pY29uLWNpcmNsZS1hcnJvdy13IHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE0NHB4IC0xOTJweDsgfQorLnVpLWljb24tY2lyY2xlLWFycm93LW4geyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTYwcHggLTE5MnB4OyB9CisudWktaWNvbi1jaXJjbGUtem9vbWluIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE3NnB4IC0xOTJweDsgfQorLnVpLWljb24tY2lyY2xlLXpvb21vdXQgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMTkycHggLTE5MnB4OyB9CisudWktaWNvbi1jaXJjbGUtY2hlY2sgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtMjA4cHggLTE5MnB4OyB9CisudWktaWNvbi1jaXJjbGVzbWFsbC1wbHVzIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtMjA4cHg7IH0KKy51aS1pY29uLWNpcmNsZXNtYWxsLW1pbnVzIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTIwOHB4OyB9CisudWktaWNvbi1jaXJjbGVzbWFsbC1jbG9zZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC0zMnB4IC0yMDhweDsgfQorLnVpLWljb24tc3F1YXJlc21hbGwtcGx1cyB7IGJhY2tncm91bmQtcG9zaXRpb246IC00OHB4IC0yMDhweDsgfQorLnVpLWljb24tc3F1YXJlc21hbGwtbWludXMgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNjRweCAtMjA4cHg7IH0KKy51aS1pY29uLXNxdWFyZXNtYWxsLWNsb3NlIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTgwcHggLTIwOHB4OyB9CisudWktaWNvbi1ncmlwLWRvdHRlZC12ZXJ0aWNhbCB7IGJhY2tncm91bmQtcG9zaXRpb246IDAgLTIyNHB4OyB9CisudWktaWNvbi1ncmlwLWRvdHRlZC1ob3Jpem9udGFsIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTE2cHggLTIyNHB4OyB9CisudWktaWNvbi1ncmlwLXNvbGlkLXZlcnRpY2FsIHsgYmFja2dyb3VuZC1wb3NpdGlvbjogLTMycHggLTIyNHB4OyB9CisudWktaWNvbi1ncmlwLXNvbGlkLWhvcml6b250YWwgeyBiYWNrZ3JvdW5kLXBvc2l0aW9uOiAtNDhweCAtMjI0cHg7IH0KKy51aS1pY29uLWdyaXBzbWFsbC1kaWFnb25hbC1zZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC02NHB4IC0yMjRweDsgfQorLnVpLWljb24tZ3JpcC1kaWFnb25hbC1zZSB7IGJhY2tncm91bmQtcG9zaXRpb246IC04MHB4IC0yMjRweDsgfQorCisKKy8qIE1pc2MgdmlzdWFscworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCisKKy8qIENvcm5lciByYWRpdXMgKi8KKy51aS1jb3JuZXItYWxsLCAudWktY29ybmVyLXRvcCwgLnVpLWNvcm5lci1sZWZ0LCAudWktY29ybmVyLXRsIHsgLW1vei1ib3JkZXItcmFkaXVzLXRvcGxlZnQ6IDNweDsgLXdlYmtpdC1ib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAzcHg7IC1raHRtbC1ib3JkZXItdG9wLWxlZnQtcmFkaXVzOiAzcHg7IGJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDNweDsgfQorLnVpLWNvcm5lci1hbGwsIC51aS1jb3JuZXItdG9wLCAudWktY29ybmVyLXJpZ2h0LCAudWktY29ybmVyLXRyIHsgLW1vei1ib3JkZXItcmFkaXVzLXRvcHJpZ2h0OiAzcHg7IC13ZWJraXQtYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDNweDsgLWtodG1sLWJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAzcHg7IGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAzcHg7IH0KKy51aS1jb3JuZXItYWxsLCAudWktY29ybmVyLWJvdHRvbSwgLnVpLWNvcm5lci1sZWZ0LCAudWktY29ybmVyLWJsIHsgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbWxlZnQ6IDNweDsgLXdlYmtpdC1ib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAzcHg7IC1raHRtbC1ib3JkZXItYm90dG9tLWxlZnQtcmFkaXVzOiAzcHg7IGJvcmRlci1ib3R0b20tbGVmdC1yYWRpdXM6IDNweDsgfQorLnVpLWNvcm5lci1hbGwsIC51aS1jb3JuZXItYm90dG9tLCAudWktY29ybmVyLXJpZ2h0LCAudWktY29ybmVyLWJyIHsgLW1vei1ib3JkZXItcmFkaXVzLWJvdHRvbXJpZ2h0OiAzcHg7IC13ZWJraXQtYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDNweDsgLWtodG1sLWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAzcHg7IGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAzcHg7IH0KKworLyogT3ZlcmxheXMgKi8KKy51aS13aWRnZXQtb3ZlcmxheSB7IGJhY2tncm91bmQ6ICNlNmI5MDAgdXJsKGltYWdlcy91aS1iZ19mbGF0XzBfZTZiOTAwXzQweDEwMC5wbmcpIDUwJSA1MCUgcmVwZWF0LXg7IG9wYWNpdHk6IC4zMDtmaWx0ZXI6QWxwaGEoT3BhY2l0eT0zMCk7IH0KKy51aS13aWRnZXQtc2hhZG93IHsgbWFyZ2luOiA2cHggMCAwIDZweDsgcGFkZGluZzogMHB4OyBiYWNrZ3JvdW5kOiAjMDAwMDg4IHVybChpbWFnZXMvdWktYmdfZmxhdF8wX2U2OTcwMF80MHgxMDAucG5nKSA1MCUgNTAlIHJlcGVhdC14OyBvcGFjaXR5OiAuMjA7ZmlsdGVyOkFscGhhKE9wYWNpdHk9MjApOyAtbW96LWJvcmRlci1yYWRpdXM6IDNweDsgLWtodG1sLWJvcmRlci1yYWRpdXM6IDNweDsgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiAzcHg7IGJvcmRlci1yYWRpdXM6IDNweDsgfS8qCisgKiBqUXVlcnkgVUkgUmVzaXphYmxlIDEuOC4xNgorICoKKyAqIENvcHlyaWdodCAyMDExLCBBVVRIT1JTLnR4dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9hYm91dCkKKyAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBvciBHUEwgVmVyc2lvbiAyIGxpY2Vuc2VzLgorICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQorICoKKyAqIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkvUmVzaXphYmxlI3RoZW1pbmcKKyAqLworLnVpLXJlc2l6YWJsZSB7IHBvc2l0aW9uOiByZWxhdGl2ZTt9CisudWktcmVzaXphYmxlLWhhbmRsZSB7IHBvc2l0aW9uOiBhYnNvbHV0ZTtmb250LXNpemU6IDAuMXB4O3otaW5kZXg6IDk5OTk5OyBkaXNwbGF5OiBibG9jazsgfQorLnVpLXJlc2l6YWJsZS1kaXNhYmxlZCAudWktcmVzaXphYmxlLWhhbmRsZSwgLnVpLXJlc2l6YWJsZS1hdXRvaGlkZSAudWktcmVzaXphYmxlLWhhbmRsZSB7IGRpc3BsYXk6IG5vbmU7IH0KKy51aS1yZXNpemFibGUtbiB7IGN1cnNvcjogbi1yZXNpemU7IGhlaWdodDogN3B4OyB3aWR0aDogMTAwJTsgdG9wOiAtNXB4OyBsZWZ0OiAwOyB9CisudWktcmVzaXphYmxlLXMgeyBjdXJzb3I6IHMtcmVzaXplOyBoZWlnaHQ6IDdweDsgd2lkdGg6IDEwMCU7IGJvdHRvbTogLTVweDsgbGVmdDogMDsgfQorLnVpLXJlc2l6YWJsZS1lIHsgY3Vyc29yOiBlLXJlc2l6ZTsgd2lkdGg6IDdweDsgcmlnaHQ6IC01cHg7IHRvcDogMDsgaGVpZ2h0OiAxMDAlOyB9CisudWktcmVzaXphYmxlLXcgeyBjdXJzb3I6IHctcmVzaXplOyB3aWR0aDogN3B4OyBsZWZ0OiAtNXB4OyB0b3A6IDA7IGhlaWdodDogMTAwJTsgfQorLnVpLXJlc2l6YWJsZS1zZSB7IGN1cnNvcjogc2UtcmVzaXplOyB3aWR0aDogMTJweDsgaGVpZ2h0OiAxMnB4OyByaWdodDogMXB4OyBib3R0b206IDFweDsgfQorLnVpLXJlc2l6YWJsZS1zdyB7IGN1cnNvcjogc3ctcmVzaXplOyB3aWR0aDogOXB4OyBoZWlnaHQ6IDlweDsgbGVmdDogLTVweDsgYm90dG9tOiAtNXB4OyB9CisudWktcmVzaXphYmxlLW53IHsgY3Vyc29yOiBudy1yZXNpemU7IHdpZHRoOiA5cHg7IGhlaWdodDogOXB4OyBsZWZ0OiAtNXB4OyB0b3A6IC01cHg7IH0KKy51aS1yZXNpemFibGUtbmUgeyBjdXJzb3I6IG5lLXJlc2l6ZTsgd2lkdGg6IDlweDsgaGVpZ2h0OiA5cHg7IHJpZ2h0OiAtNXB4OyB0b3A6IC01cHg7fS8qCisgKiBqUXVlcnkgVUkgU2VsZWN0YWJsZSAxLjguMTYKKyAqCisgKiBDb3B5cmlnaHQgMjAxMSwgQVVUSE9SUy50eHQgKGh0dHA6Ly9qcXVlcnl1aS5jb20vYWJvdXQpCisgKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgb3IgR1BMIFZlcnNpb24gMiBsaWNlbnNlcy4KKyAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2UKKyAqCisgKiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1VJL1NlbGVjdGFibGUjdGhlbWluZworICovCisudWktc2VsZWN0YWJsZS1oZWxwZXIgeyBwb3NpdGlvbjogYWJzb2x1dGU7IHotaW5kZXg6IDEwMDsgYm9yZGVyOjFweCBkb3R0ZWQgYmxhY2s7IH0KKy8qCisgKiBqUXVlcnkgVUkgQWNjb3JkaW9uIDEuOC4xNgorICoKKyAqIENvcHlyaWdodCAyMDExLCBBVVRIT1JTLnR4dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9hYm91dCkKKyAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBvciBHUEwgVmVyc2lvbiAyIGxpY2Vuc2VzLgorICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQorICoKKyAqIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkvQWNjb3JkaW9uI3RoZW1pbmcKKyAqLworLyogSUUvV2luIC0gRml4IGFuaW1hdGlvbiBidWcgLSAjNDYxNSAqLworLnVpLWFjY29yZGlvbiB7IHdpZHRoOiAxMDAlOyB9CisudWktYWNjb3JkaW9uIC51aS1hY2NvcmRpb24taGVhZGVyIHsgY3Vyc29yOiBwb2ludGVyOyBwb3NpdGlvbjogcmVsYXRpdmU7IG1hcmdpbi10b3A6IDFweDsgem9vbTogMTsgfQorLnVpLWFjY29yZGlvbiAudWktYWNjb3JkaW9uLWxpLWZpeCB7IGRpc3BsYXk6IGlubGluZTsgfQorLnVpLWFjY29yZGlvbiAudWktYWNjb3JkaW9uLWhlYWRlci1hY3RpdmUgeyBib3JkZXItYm90dG9tOiAwICFpbXBvcnRhbnQ7IH0KKy51aS1hY2NvcmRpb24gLnVpLWFjY29yZGlvbi1oZWFkZXIgYSB7IGRpc3BsYXk6IGJsb2NrOyBmb250LXNpemU6IDFlbTsgcGFkZGluZzogLjVlbSAuNWVtIC41ZW0gLjdlbTsgfQorLnVpLWFjY29yZGlvbi1pY29ucyAudWktYWNjb3JkaW9uLWhlYWRlciBhIHsgcGFkZGluZy1sZWZ0OiAyLjJlbTsgfQorLnVpLWFjY29yZGlvbiAudWktYWNjb3JkaW9uLWhlYWRlciAudWktaWNvbiB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgbGVmdDogLjVlbTsgdG9wOiA1MCU7IG1hcmdpbi10b3A6IC04cHg7IH0KKy51aS1hY2NvcmRpb24gLnVpLWFjY29yZGlvbi1jb250ZW50IHsgcGFkZGluZzogMWVtIDIuMmVtOyBib3JkZXItdG9wOiAwOyBtYXJnaW4tdG9wOiAtMnB4OyBwb3NpdGlvbjogcmVsYXRpdmU7IHRvcDogMXB4OyBtYXJnaW4tYm90dG9tOiAycHg7IG92ZXJmbG93OiBhdXRvOyBkaXNwbGF5OiBub25lOyB6b29tOiAxOyB9CisudWktYWNjb3JkaW9uIC51aS1hY2NvcmRpb24tY29udGVudC1hY3RpdmUgeyBkaXNwbGF5OiBibG9jazsgfQorLyoKKyAqIGpRdWVyeSBVSSBBdXRvY29tcGxldGUgMS44LjE2CisgKgorICogQ29weXJpZ2h0IDIwMTEsIEFVVEhPUlMudHh0IChodHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0KQorICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIG9yIEdQTCBWZXJzaW9uIDIgbGljZW5zZXMuCisgKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCisgKgorICogaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9VSS9BdXRvY29tcGxldGUjdGhlbWluZworICovCisudWktYXV0b2NvbXBsZXRlIHsgcG9zaXRpb246IGFic29sdXRlOyBjdXJzb3I6IGRlZmF1bHQ7IH0JCisKKy8qIHdvcmthcm91bmRzICovCisqIGh0bWwgLnVpLWF1dG9jb21wbGV0ZSB7IHdpZHRoOjFweDsgfSAvKiB3aXRob3V0IHRoaXMsIHRoZSBtZW51IGV4cGFuZHMgdG8gMTAwJSBpbiBJRTYgKi8KKworLyoKKyAqIGpRdWVyeSBVSSBNZW51IDEuOC4xNgorICoKKyAqIENvcHlyaWdodCAyMDEwLCBBVVRIT1JTLnR4dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9hYm91dCkKKyAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBvciBHUEwgVmVyc2lvbiAyIGxpY2Vuc2VzLgorICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQorICoKKyAqIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkvTWVudSN0aGVtaW5nCisgKi8KKy51aS1tZW51IHsKKwlsaXN0LXN0eWxlOm5vbmU7CisJcGFkZGluZzogMnB4OworCW1hcmdpbjogMDsKKwlkaXNwbGF5OmJsb2NrOworCWZsb2F0OiBsZWZ0OworfQorLnVpLW1lbnUgLnVpLW1lbnUgeworCW1hcmdpbi10b3A6IC0zcHg7Cit9CisudWktbWVudSAudWktbWVudS1pdGVtIHsKKwltYXJnaW46MDsKKwlwYWRkaW5nOiAwOworCXpvb206IDE7CisJZmxvYXQ6IGxlZnQ7CisJY2xlYXI6IGxlZnQ7CisJd2lkdGg6IDEwMCU7Cit9CisudWktbWVudSAudWktbWVudS1pdGVtIGEgeworCXRleHQtZGVjb3JhdGlvbjpub25lOworCWRpc3BsYXk6YmxvY2s7CisJcGFkZGluZzouMmVtIC40ZW07CisJbGluZS1oZWlnaHQ6MS41OworCXpvb206MTsKK30KKy51aS1tZW51IC51aS1tZW51LWl0ZW0gYS51aS1zdGF0ZS1ob3ZlciwKKy51aS1tZW51IC51aS1tZW51LWl0ZW0gYS51aS1zdGF0ZS1hY3RpdmUgeworCWZvbnQtd2VpZ2h0OiBub3JtYWw7CisJbWFyZ2luOiAtMXB4OworfQorLyoKKyAqIGpRdWVyeSBVSSBCdXR0b24gMS44LjE2CisgKgorICogQ29weXJpZ2h0IDIwMTEsIEFVVEhPUlMudHh0IChodHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0KQorICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIG9yIEdQTCBWZXJzaW9uIDIgbGljZW5zZXMuCisgKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCisgKgorICogaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9VSS9CdXR0b24jdGhlbWluZworICovCisudWktYnV0dG9uIHsgZGlzcGxheTogaW5saW5lLWJsb2NrOyBwb3NpdGlvbjogcmVsYXRpdmU7IHBhZGRpbmc6IDA7IG1hcmdpbi1yaWdodDogLjFlbTsgdGV4dC1kZWNvcmF0aW9uOiBub25lICFpbXBvcnRhbnQ7IGN1cnNvcjogcG9pbnRlcjsgdGV4dC1hbGlnbjogY2VudGVyOyB6b29tOiAxOyBvdmVyZmxvdzogdmlzaWJsZTsgfSAvKiB0aGUgb3ZlcmZsb3cgcHJvcGVydHkgcmVtb3ZlcyBleHRyYSB3aWR0aCBpbiBJRSAqLworLnVpLWJ1dHRvbi1pY29uLW9ubHkgeyB3aWR0aDogMi4yZW07IH0gLyogdG8gbWFrZSByb29tIGZvciB0aGUgaWNvbiwgYSB3aWR0aCBuZWVkcyB0byBiZSBzZXQgaGVyZSAqLworYnV0dG9uLnVpLWJ1dHRvbi1pY29uLW9ubHkgeyB3aWR0aDogMi40ZW07IH0gLyogYnV0dG9uIGVsZW1lbnRzIHNlZW0gdG8gbmVlZCBhIGxpdHRsZSBtb3JlIHdpZHRoICovCisudWktYnV0dG9uLWljb25zLW9ubHkgeyB3aWR0aDogMy40ZW07IH0gCitidXR0b24udWktYnV0dG9uLWljb25zLW9ubHkgeyB3aWR0aDogMy43ZW07IH0gCisKKy8qYnV0dG9uIHRleHQgZWxlbWVudCAqLworLnVpLWJ1dHRvbiAudWktYnV0dG9uLXRleHQgeyBkaXNwbGF5OiBibG9jazsgbGluZS1oZWlnaHQ6IDEuNDsgIH0KKy51aS1idXR0b24tdGV4dC1vbmx5IC51aS1idXR0b24tdGV4dCB7IHBhZGRpbmc6IC40ZW0gMWVtOyB9CisudWktYnV0dG9uLWljb24tb25seSAudWktYnV0dG9uLXRleHQsIC51aS1idXR0b24taWNvbnMtb25seSAudWktYnV0dG9uLXRleHQgeyBwYWRkaW5nOiAuNGVtOyB0ZXh0LWluZGVudDogLTk5OTk5OTlweDsgfQorLnVpLWJ1dHRvbi10ZXh0LWljb24tcHJpbWFyeSAudWktYnV0dG9uLXRleHQsIC51aS1idXR0b24tdGV4dC1pY29ucyAudWktYnV0dG9uLXRleHQgeyBwYWRkaW5nOiAuNGVtIDFlbSAuNGVtIDIuMWVtOyB9CisudWktYnV0dG9uLXRleHQtaWNvbi1zZWNvbmRhcnkgLnVpLWJ1dHRvbi10ZXh0LCAudWktYnV0dG9uLXRleHQtaWNvbnMgLnVpLWJ1dHRvbi10ZXh0IHsgcGFkZGluZzogLjRlbSAyLjFlbSAuNGVtIDFlbTsgfQorLnVpLWJ1dHRvbi10ZXh0LWljb25zIC51aS1idXR0b24tdGV4dCB7IHBhZGRpbmctbGVmdDogMi4xZW07IHBhZGRpbmctcmlnaHQ6IDIuMWVtOyB9CisvKiBubyBpY29uIHN1cHBvcnQgZm9yIGlucHV0IGVsZW1lbnRzLCBwcm92aWRlIHBhZGRpbmcgYnkgZGVmYXVsdCAqLworaW5wdXQudWktYnV0dG9uIHsgcGFkZGluZzogLjRlbSAxZW07IH0KKworLypidXR0b24gaWNvbiBlbGVtZW50KHMpICovCisudWktYnV0dG9uLWljb24tb25seSAudWktaWNvbiwgLnVpLWJ1dHRvbi10ZXh0LWljb24tcHJpbWFyeSAudWktaWNvbiwgLnVpLWJ1dHRvbi10ZXh0LWljb24tc2Vjb25kYXJ5IC51aS1pY29uLCAudWktYnV0dG9uLXRleHQtaWNvbnMgLnVpLWljb24sIC51aS1idXR0b24taWNvbnMtb25seSAudWktaWNvbiB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgdG9wOiA1MCU7IG1hcmdpbi10b3A6IC04cHg7IH0KKy51aS1idXR0b24taWNvbi1vbmx5IC51aS1pY29uIHsgbGVmdDogNTAlOyBtYXJnaW4tbGVmdDogLThweDsgfQorLnVpLWJ1dHRvbi10ZXh0LWljb24tcHJpbWFyeSAudWktYnV0dG9uLWljb24tcHJpbWFyeSwgLnVpLWJ1dHRvbi10ZXh0LWljb25zIC51aS1idXR0b24taWNvbi1wcmltYXJ5LCAudWktYnV0dG9uLWljb25zLW9ubHkgLnVpLWJ1dHRvbi1pY29uLXByaW1hcnkgeyBsZWZ0OiAuNWVtOyB9CisudWktYnV0dG9uLXRleHQtaWNvbi1zZWNvbmRhcnkgLnVpLWJ1dHRvbi1pY29uLXNlY29uZGFyeSwgLnVpLWJ1dHRvbi10ZXh0LWljb25zIC51aS1idXR0b24taWNvbi1zZWNvbmRhcnksIC51aS1idXR0b24taWNvbnMtb25seSAudWktYnV0dG9uLWljb24tc2Vjb25kYXJ5IHsgcmlnaHQ6IC41ZW07IH0KKy51aS1idXR0b24tdGV4dC1pY29ucyAudWktYnV0dG9uLWljb24tc2Vjb25kYXJ5LCAudWktYnV0dG9uLWljb25zLW9ubHkgLnVpLWJ1dHRvbi1pY29uLXNlY29uZGFyeSB7IHJpZ2h0OiAuNWVtOyB9CisKKy8qYnV0dG9uIHNldHMqLworLnVpLWJ1dHRvbnNldCB7IG1hcmdpbi1yaWdodDogN3B4OyB9CisudWktYnV0dG9uc2V0IC51aS1idXR0b24geyBtYXJnaW4tbGVmdDogMDsgbWFyZ2luLXJpZ2h0OiAtLjNlbTsgfQorCisvKiB3b3JrYXJvdW5kcyAqLworYnV0dG9uLnVpLWJ1dHRvbjo6LW1vei1mb2N1cy1pbm5lciB7IGJvcmRlcjogMDsgcGFkZGluZzogMDsgfSAvKiByZXNldCBleHRyYSBwYWRkaW5nIGluIEZpcmVmb3ggKi8KKy8qCisgKiBqUXVlcnkgVUkgRGlhbG9nIDEuOC4xNgorICoKKyAqIENvcHlyaWdodCAyMDExLCBBVVRIT1JTLnR4dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9hYm91dCkKKyAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBvciBHUEwgVmVyc2lvbiAyIGxpY2Vuc2VzLgorICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQorICoKKyAqIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkvRGlhbG9nI3RoZW1pbmcKKyAqLworLnVpLWRpYWxvZyB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgcGFkZGluZzogLjJlbTsgd2lkdGg6IDMwMHB4OyBvdmVyZmxvdzogaGlkZGVuOyB9CisudWktZGlhbG9nIC51aS1kaWFsb2ctdGl0bGViYXIgeyBwYWRkaW5nOiAuNGVtIDFlbTsgcG9zaXRpb246IHJlbGF0aXZlOyAgfQorLnVpLWRpYWxvZyAudWktZGlhbG9nLXRpdGxlIHsgZmxvYXQ6IGxlZnQ7IG1hcmdpbjogLjFlbSAxNnB4IC4xZW0gMDsgfSAKKy51aS1kaWFsb2cgLnVpLWRpYWxvZy10aXRsZWJhci1jbG9zZSB7IHBvc2l0aW9uOiBhYnNvbHV0ZTsgcmlnaHQ6IC4zZW07IHRvcDogNTAlOyB3aWR0aDogMTlweDsgbWFyZ2luOiAtMTBweCAwIDAgMDsgcGFkZGluZzogMXB4OyBoZWlnaHQ6IDE4cHg7IH0KKy51aS1kaWFsb2cgLnVpLWRpYWxvZy10aXRsZWJhci1jbG9zZSBzcGFuIHsgZGlzcGxheTogYmxvY2s7IG1hcmdpbjogMXB4OyB9CisudWktZGlhbG9nIC51aS1kaWFsb2ctdGl0bGViYXItY2xvc2U6aG92ZXIsIC51aS1kaWFsb2cgLnVpLWRpYWxvZy10aXRsZWJhci1jbG9zZTpmb2N1cyB7IHBhZGRpbmc6IDA7IH0KKy51aS1kaWFsb2cgLnVpLWRpYWxvZy1jb250ZW50IHsgcG9zaXRpb246IHJlbGF0aXZlOyBib3JkZXI6IDA7IHBhZGRpbmc6IC41ZW0gMWVtOyBiYWNrZ3JvdW5kOiBub25lOyBvdmVyZmxvdzogYXV0bzsgem9vbTogMTsgfQorLnVpLWRpYWxvZyAudWktZGlhbG9nLWJ1dHRvbnBhbmUgeyB0ZXh0LWFsaWduOiBsZWZ0OyBib3JkZXItd2lkdGg6IDFweCAwIDAgMDsgYmFja2dyb3VuZC1pbWFnZTogbm9uZTsgbWFyZ2luOiAuNWVtIDAgMCAwOyBwYWRkaW5nOiAuM2VtIDFlbSAuNWVtIC40ZW07IH0KKy51aS1kaWFsb2cgLnVpLWRpYWxvZy1idXR0b25wYW5lIC51aS1kaWFsb2ctYnV0dG9uc2V0IHsgZmxvYXQ6IHJpZ2h0OyB9CisudWktZGlhbG9nIC51aS1kaWFsb2ctYnV0dG9ucGFuZSBidXR0b24geyBtYXJnaW46IC41ZW0gLjRlbSAuNWVtIDA7IGN1cnNvcjogcG9pbnRlcjsgfQorLnVpLWRpYWxvZyAudWktcmVzaXphYmxlLXNlIHsgd2lkdGg6IDE0cHg7IGhlaWdodDogMTRweDsgcmlnaHQ6IDNweDsgYm90dG9tOiAzcHg7IH0KKy51aS1kcmFnZ2FibGUgLnVpLWRpYWxvZy10aXRsZWJhciB7IGN1cnNvcjogbW92ZTsgfQorLyoKKyAqIGpRdWVyeSBVSSBTbGlkZXIgMS44LjE2CisgKgorICogQ29weXJpZ2h0IDIwMTEsIEFVVEhPUlMudHh0IChodHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0KQorICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIG9yIEdQTCBWZXJzaW9uIDIgbGljZW5zZXMuCisgKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCisgKgorICogaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9VSS9TbGlkZXIjdGhlbWluZworICovCisudWktc2xpZGVyIHsgcG9zaXRpb246IHJlbGF0aXZlOyB0ZXh0LWFsaWduOiBsZWZ0OyB9CisudWktc2xpZGVyIC51aS1zbGlkZXItaGFuZGxlIHsgcG9zaXRpb246IGFic29sdXRlOyB6LWluZGV4OiAyOyB3aWR0aDogMS4yZW07IGhlaWdodDogMS4yZW07IGN1cnNvcjogZGVmYXVsdDsgfQorLnVpLXNsaWRlciAudWktc2xpZGVyLXJhbmdlIHsgcG9zaXRpb246IGFic29sdXRlOyB6LWluZGV4OiAxOyBmb250LXNpemU6IC43ZW07IGRpc3BsYXk6IGJsb2NrOyBib3JkZXI6IDA7IGJhY2tncm91bmQtcG9zaXRpb246IDAgMDsgfQorCisudWktc2xpZGVyLWhvcml6b250YWwgeyBoZWlnaHQ6IC44ZW07IH0KKy51aS1zbGlkZXItaG9yaXpvbnRhbCAudWktc2xpZGVyLWhhbmRsZSB7IHRvcDogLS4zZW07IG1hcmdpbi1sZWZ0OiAtLjZlbTsgfQorLnVpLXNsaWRlci1ob3Jpem9udGFsIC51aS1zbGlkZXItcmFuZ2UgeyB0b3A6IDA7IGhlaWdodDogMTAwJTsgfQorLnVpLXNsaWRlci1ob3Jpem9udGFsIC51aS1zbGlkZXItcmFuZ2UtbWluIHsgbGVmdDogMDsgfQorLnVpLXNsaWRlci1ob3Jpem9udGFsIC51aS1zbGlkZXItcmFuZ2UtbWF4IHsgcmlnaHQ6IDA7IH0KKworLnVpLXNsaWRlci12ZXJ0aWNhbCB7IHdpZHRoOiAuOGVtOyBoZWlnaHQ6IDEwMHB4OyB9CisudWktc2xpZGVyLXZlcnRpY2FsIC51aS1zbGlkZXItaGFuZGxlIHsgbGVmdDogLS4zZW07IG1hcmdpbi1sZWZ0OiAwOyBtYXJnaW4tYm90dG9tOiAtLjZlbTsgfQorLnVpLXNsaWRlci12ZXJ0aWNhbCAudWktc2xpZGVyLXJhbmdlIHsgbGVmdDogMDsgd2lkdGg6IDEwMCU7IH0KKy51aS1zbGlkZXItdmVydGljYWwgLnVpLXNsaWRlci1yYW5nZS1taW4geyBib3R0b206IDA7IH0KKy51aS1zbGlkZXItdmVydGljYWwgLnVpLXNsaWRlci1yYW5nZS1tYXggeyB0b3A6IDA7IH0vKgorICogalF1ZXJ5IFVJIFRhYnMgMS44LjE2CisgKgorICogQ29weXJpZ2h0IDIwMTEsIEFVVEhPUlMudHh0IChodHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0KQorICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIG9yIEdQTCBWZXJzaW9uIDIgbGljZW5zZXMuCisgKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCisgKgorICogaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9VSS9UYWJzI3RoZW1pbmcKKyAqLworLnVpLXRhYnMgeyBwb3NpdGlvbjogcmVsYXRpdmU7IHBhZGRpbmc6IC4yZW07IHpvb206IDE7IH0gLyogcG9zaXRpb246IHJlbGF0aXZlIHByZXZlbnRzIElFIHNjcm9sbCBidWcgKGVsZW1lbnQgd2l0aCBwb3NpdGlvbjogcmVsYXRpdmUgaW5zaWRlIGNvbnRhaW5lciB3aXRoIG92ZXJmbG93OiBhdXRvIGFwcGVhciBhcyAiZml4ZWQiKSAqLworLnVpLXRhYnMgLnVpLXRhYnMtbmF2IHsgbWFyZ2luOiAwOyBwYWRkaW5nOiAuMmVtIC4yZW0gMDsgfQorLnVpLXRhYnMgLnVpLXRhYnMtbmF2IGxpIHsgbGlzdC1zdHlsZTogbm9uZTsgZmxvYXQ6IGxlZnQ7IHBvc2l0aW9uOiByZWxhdGl2ZTsgdG9wOiAxcHg7IG1hcmdpbjogMCAuMmVtIDFweCAwOyBib3JkZXItYm90dG9tOiAwICFpbXBvcnRhbnQ7IHBhZGRpbmc6IDA7IHdoaXRlLXNwYWNlOiBub3dyYXA7IH0KKy51aS10YWJzIC51aS10YWJzLW5hdiBsaSBhIHsgZmxvYXQ6IGxlZnQ7IHBhZGRpbmc6IC41ZW0gMWVtOyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH0KKy51aS10YWJzIC51aS10YWJzLW5hdiBsaS51aS10YWJzLXNlbGVjdGVkIHsgbWFyZ2luLWJvdHRvbTogMDsgcGFkZGluZy1ib3R0b206IDFweDsgfQorLnVpLXRhYnMgLnVpLXRhYnMtbmF2IGxpLnVpLXRhYnMtc2VsZWN0ZWQgYSwgLnVpLXRhYnMgLnVpLXRhYnMtbmF2IGxpLnVpLXN0YXRlLWRpc2FibGVkIGEsIC51aS10YWJzIC51aS10YWJzLW5hdiBsaS51aS1zdGF0ZS1wcm9jZXNzaW5nIGEgeyBjdXJzb3I6IHRleHQ7IH0KKy51aS10YWJzIC51aS10YWJzLW5hdiBsaSBhLCAudWktdGFicy51aS10YWJzLWNvbGxhcHNpYmxlIC51aS10YWJzLW5hdiBsaS51aS10YWJzLXNlbGVjdGVkIGEgeyBjdXJzb3I6IHBvaW50ZXI7IH0gLyogZmlyc3Qgc2VsZWN0b3IgaW4gZ3JvdXAgc2VlbXMgb2Jzb2xldGUsIGJ1dCByZXF1aXJlZCB0byBvdmVyY29tZSBidWcgaW4gT3BlcmEgYXBwbHlpbmcgY3Vyc29yOiB0ZXh0IG92ZXJhbGwgaWYgZGVmaW5lZCBlbHNld2hlcmUuLi4gKi8KKy51aS10YWJzIC51aS10YWJzLXBhbmVsIHsgZGlzcGxheTogYmxvY2s7IGJvcmRlci13aWR0aDogMDsgcGFkZGluZzogMWVtIDEuNGVtOyBiYWNrZ3JvdW5kOiBub25lOyB9CisudWktdGFicyAudWktdGFicy1oaWRlIHsgZGlzcGxheTogbm9uZSAhaW1wb3J0YW50OyB9CisvKgorICogalF1ZXJ5IFVJIERhdGVwaWNrZXIgMS44LjE2CisgKgorICogQ29weXJpZ2h0IDIwMTEsIEFVVEhPUlMudHh0IChodHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0KQorICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIG9yIEdQTCBWZXJzaW9uIDIgbGljZW5zZXMuCisgKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCisgKgorICogaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9VSS9EYXRlcGlja2VyI3RoZW1pbmcKKyAqLworLnVpLWRhdGVwaWNrZXIgeyB3aWR0aDogMTdlbTsgcGFkZGluZzogLjJlbSAuMmVtIDA7IGRpc3BsYXk6IG5vbmU7IH0KKy51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLWhlYWRlciB7IHBvc2l0aW9uOnJlbGF0aXZlOyBwYWRkaW5nOi4yZW0gMDsgfQorLnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItcHJldiwgLnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItbmV4dCB7IHBvc2l0aW9uOmFic29sdXRlOyB0b3A6IDJweDsgd2lkdGg6IDEuOGVtOyBoZWlnaHQ6IDEuOGVtOyB9CisudWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1wcmV2LWhvdmVyLCAudWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1uZXh0LWhvdmVyIHsgdG9wOiAxcHg7IH0KKy51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLXByZXYgeyBsZWZ0OjJweDsgfQorLnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItbmV4dCB7IHJpZ2h0OjJweDsgfQorLnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItcHJldi1ob3ZlciB7IGxlZnQ6MXB4OyB9CisudWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1uZXh0LWhvdmVyIHsgcmlnaHQ6MXB4OyB9CisudWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1wcmV2IHNwYW4sIC51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLW5leHQgc3BhbiB7IGRpc3BsYXk6IGJsb2NrOyBwb3NpdGlvbjogYWJzb2x1dGU7IGxlZnQ6IDUwJTsgbWFyZ2luLWxlZnQ6IC04cHg7IHRvcDogNTAlOyBtYXJnaW4tdG9wOiAtOHB4OyAgfQorLnVpLWRhdGVwaWNrZXIgLnVpLWRhdGVwaWNrZXItdGl0bGUgeyBtYXJnaW46IDAgMi4zZW07IGxpbmUtaGVpZ2h0OiAxLjhlbTsgdGV4dC1hbGlnbjogY2VudGVyOyB9CisudWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci10aXRsZSBzZWxlY3QgeyBmb250LXNpemU6MWVtOyBtYXJnaW46MXB4IDA7IH0KKy51aS1kYXRlcGlja2VyIHNlbGVjdC51aS1kYXRlcGlja2VyLW1vbnRoLXllYXIge3dpZHRoOiAxMDAlO30KKy51aS1kYXRlcGlja2VyIHNlbGVjdC51aS1kYXRlcGlja2VyLW1vbnRoLCAKKy51aS1kYXRlcGlja2VyIHNlbGVjdC51aS1kYXRlcGlja2VyLXllYXIgeyB3aWR0aDogNDklO30KKy51aS1kYXRlcGlja2VyIHRhYmxlIHt3aWR0aDogMTAwJTsgZm9udC1zaXplOiAuOWVtOyBib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOyBtYXJnaW46MCAwIC40ZW07IH0KKy51aS1kYXRlcGlja2VyIHRoIHsgcGFkZGluZzogLjdlbSAuM2VtOyB0ZXh0LWFsaWduOiBjZW50ZXI7IGZvbnQtd2VpZ2h0OiBib2xkOyBib3JkZXI6IDA7ICB9CisudWktZGF0ZXBpY2tlciB0ZCB7IGJvcmRlcjogMDsgcGFkZGluZzogMXB4OyB9CisudWktZGF0ZXBpY2tlciB0ZCBzcGFuLCAudWktZGF0ZXBpY2tlciB0ZCBhIHsgZGlzcGxheTogYmxvY2s7IHBhZGRpbmc6IC4yZW07IHRleHQtYWxpZ246IHJpZ2h0OyB0ZXh0LWRlY29yYXRpb246IG5vbmU7IH0KKy51aS1kYXRlcGlja2VyIC51aS1kYXRlcGlja2VyLWJ1dHRvbnBhbmUgeyBiYWNrZ3JvdW5kLWltYWdlOiBub25lOyBtYXJnaW46IC43ZW0gMCAwIDA7IHBhZGRpbmc6MCAuMmVtOyBib3JkZXItbGVmdDogMDsgYm9yZGVyLXJpZ2h0OiAwOyBib3JkZXItYm90dG9tOiAwOyB9CisudWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1idXR0b25wYW5lIGJ1dHRvbiB7IGZsb2F0OiByaWdodDsgbWFyZ2luOiAuNWVtIC4yZW0gLjRlbTsgY3Vyc29yOiBwb2ludGVyOyBwYWRkaW5nOiAuMmVtIC42ZW0gLjNlbSAuNmVtOyB3aWR0aDphdXRvOyBvdmVyZmxvdzp2aXNpYmxlOyB9CisudWktZGF0ZXBpY2tlciAudWktZGF0ZXBpY2tlci1idXR0b25wYW5lIGJ1dHRvbi51aS1kYXRlcGlja2VyLWN1cnJlbnQgeyBmbG9hdDpsZWZ0OyB9CisKKy8qIHdpdGggbXVsdGlwbGUgY2FsZW5kYXJzICovCisudWktZGF0ZXBpY2tlci51aS1kYXRlcGlja2VyLW11bHRpIHsgd2lkdGg6YXV0bzsgfQorLnVpLWRhdGVwaWNrZXItbXVsdGkgLnVpLWRhdGVwaWNrZXItZ3JvdXAgeyBmbG9hdDpsZWZ0OyB9CisudWktZGF0ZXBpY2tlci1tdWx0aSAudWktZGF0ZXBpY2tlci1ncm91cCB0YWJsZSB7IHdpZHRoOjk1JTsgbWFyZ2luOjAgYXV0byAuNGVtOyB9CisudWktZGF0ZXBpY2tlci1tdWx0aS0yIC51aS1kYXRlcGlja2VyLWdyb3VwIHsgd2lkdGg6NTAlOyB9CisudWktZGF0ZXBpY2tlci1tdWx0aS0zIC51aS1kYXRlcGlja2VyLWdyb3VwIHsgd2lkdGg6MzMuMyU7IH0KKy51aS1kYXRlcGlja2VyLW11bHRpLTQgLnVpLWRhdGVwaWNrZXItZ3JvdXAgeyB3aWR0aDoyNSU7IH0KKy51aS1kYXRlcGlja2VyLW11bHRpIC51aS1kYXRlcGlja2VyLWdyb3VwLWxhc3QgLnVpLWRhdGVwaWNrZXItaGVhZGVyIHsgYm9yZGVyLWxlZnQtd2lkdGg6MDsgfQorLnVpLWRhdGVwaWNrZXItbXVsdGkgLnVpLWRhdGVwaWNrZXItZ3JvdXAtbWlkZGxlIC51aS1kYXRlcGlja2VyLWhlYWRlciB7IGJvcmRlci1sZWZ0LXdpZHRoOjA7IH0KKy51aS1kYXRlcGlja2VyLW11bHRpIC51aS1kYXRlcGlja2VyLWJ1dHRvbnBhbmUgeyBjbGVhcjpsZWZ0OyB9CisudWktZGF0ZXBpY2tlci1yb3ctYnJlYWsgeyBjbGVhcjpib3RoOyB3aWR0aDoxMDAlOyBmb250LXNpemU6MGVtOyB9CisKKy8qIFJUTCBzdXBwb3J0ICovCisudWktZGF0ZXBpY2tlci1ydGwgeyBkaXJlY3Rpb246IHJ0bDsgfQorLnVpLWRhdGVwaWNrZXItcnRsIC51aS1kYXRlcGlja2VyLXByZXYgeyByaWdodDogMnB4OyBsZWZ0OiBhdXRvOyB9CisudWktZGF0ZXBpY2tlci1ydGwgLnVpLWRhdGVwaWNrZXItbmV4dCB7IGxlZnQ6IDJweDsgcmlnaHQ6IGF1dG87IH0KKy51aS1kYXRlcGlja2VyLXJ0bCAudWktZGF0ZXBpY2tlci1wcmV2OmhvdmVyIHsgcmlnaHQ6IDFweDsgbGVmdDogYXV0bzsgfQorLnVpLWRhdGVwaWNrZXItcnRsIC51aS1kYXRlcGlja2VyLW5leHQ6aG92ZXIgeyBsZWZ0OiAxcHg7IHJpZ2h0OiBhdXRvOyB9CisudWktZGF0ZXBpY2tlci1ydGwgLnVpLWRhdGVwaWNrZXItYnV0dG9ucGFuZSB7IGNsZWFyOnJpZ2h0OyB9CisudWktZGF0ZXBpY2tlci1ydGwgLnVpLWRhdGVwaWNrZXItYnV0dG9ucGFuZSBidXR0b24geyBmbG9hdDogbGVmdDsgfQorLnVpLWRhdGVwaWNrZXItcnRsIC51aS1kYXRlcGlja2VyLWJ1dHRvbnBhbmUgYnV0dG9uLnVpLWRhdGVwaWNrZXItY3VycmVudCB7IGZsb2F0OnJpZ2h0OyB9CisudWktZGF0ZXBpY2tlci1ydGwgLnVpLWRhdGVwaWNrZXItZ3JvdXAgeyBmbG9hdDpyaWdodDsgfQorLnVpLWRhdGVwaWNrZXItcnRsIC51aS1kYXRlcGlja2VyLWdyb3VwLWxhc3QgLnVpLWRhdGVwaWNrZXItaGVhZGVyIHsgYm9yZGVyLXJpZ2h0LXdpZHRoOjA7IGJvcmRlci1sZWZ0LXdpZHRoOjFweDsgfQorLnVpLWRhdGVwaWNrZXItcnRsIC51aS1kYXRlcGlja2VyLWdyb3VwLW1pZGRsZSAudWktZGF0ZXBpY2tlci1oZWFkZXIgeyBib3JkZXItcmlnaHQtd2lkdGg6MDsgYm9yZGVyLWxlZnQtd2lkdGg6MXB4OyB9CisKKy8qIElFNiBJRlJBTUUgRklYICh0YWtlbiBmcm9tIGRhdGVwaWNrZXIgMS41LjMgKi8KKy51aS1kYXRlcGlja2VyLWNvdmVyIHsKKyAgICBkaXNwbGF5OiBub25lOyAvKnNvcnJ5IGZvciBJRTUqLworICAgIGRpc3BsYXkvKiovOiBibG9jazsgLypzb3JyeSBmb3IgSUU1Ki8KKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7IC8qbXVzdCBoYXZlKi8KKyAgICB6LWluZGV4OiAtMTsgLyptdXN0IGhhdmUqLworICAgIGZpbHRlcjogbWFzaygpOyAvKm11c3QgaGF2ZSovCisgICAgdG9wOiAtNHB4OyAvKm11c3QgaGF2ZSovCisgICAgbGVmdDogLTRweDsgLyptdXN0IGhhdmUqLworICAgIHdpZHRoOiAyMDBweDsgLyptdXN0IGhhdmUqLworICAgIGhlaWdodDogMjAwcHg7IC8qbXVzdCBoYXZlKi8KK30vKgorICogalF1ZXJ5IFVJIFByb2dyZXNzYmFyIDEuOC4xNgorICoKKyAqIENvcHlyaWdodCAyMDExLCBBVVRIT1JTLnR4dCAoaHR0cDovL2pxdWVyeXVpLmNvbS9hYm91dCkKKyAqIER1YWwgbGljZW5zZWQgdW5kZXIgdGhlIE1JVCBvciBHUEwgVmVyc2lvbiAyIGxpY2Vuc2VzLgorICogaHR0cDovL2pxdWVyeS5vcmcvbGljZW5zZQorICoKKyAqIGh0dHA6Ly9kb2NzLmpxdWVyeS5jb20vVUkvUHJvZ3Jlc3NiYXIjdGhlbWluZworICovCisudWktcHJvZ3Jlc3NiYXIgeyBoZWlnaHQ6MmVtOyB0ZXh0LWFsaWduOiBsZWZ0OyB9CisudWktcHJvZ3Jlc3NiYXIgLnVpLXByb2dyZXNzYmFyLXZhbHVlIHttYXJnaW46IC0xcHg7IGhlaWdodDoxMDAlOyB9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9jc3Mvb3Blbm1lZXRpbmdzLmNzcyBiL2RvY3MvY3NzL29wZW5tZWV0aW5ncy5jc3MKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Y4MGFmNgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvY3NzL29wZW5tZWV0aW5ncy5jc3MKQEAgLTAsMCArMSw4NCBAQAorLyoKKyogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZSBvciBtb3JlCisqIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUgZGlzdHJpYnV0ZWQgd2l0aAorKiB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuCisqIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlIHRvIFlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wCisqICh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoCisqIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisqCisqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyoKKyogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyovCitib2R5IHsKKwljb2xvcjogIzAwMDAwMDsKKwltYXJnaW46IDA7CisJYmFja2dyb3VuZDogI2ZhZmFmYTsKKwlmb250OiAxMHB0IFZlcmRhbmEsIEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7CisJICAKK30KKy5hY3RpdmUgeworCWZvbnQtc3R5bGU6IGl0YWxpYzsKK30KKworLm1haW5ib2R5IHsKKwltYXJnaW4tbGVmdDogNDBweDsKKwltYXJnaW4tcmlnaHQ6IDQwcHg7CisJLW1vei1ib3gtc2hhZG93OiA0cHggMHB4IDVweCAjNjY2NjY2OworCS13ZWJraXQtYm94LXNoYWRvdzogNHB4IDBweCA1cHggIzY2NjY2NjsKKwlib3gtc2hhZG93OiA0cHggMHB4IDVweCAjNjY2NjY2OworfQorLnN1cGVyYm9keSB7CisJYmFja2dyb3VuZDogI0ZGRkZGRjsKKwktbW96LWJveC1zaGFkb3c6IC00cHggMHB4IDVweCAjNjY2NjY2OworCS13ZWJraXQtYm94LXNoYWRvdzogLTRweCAwcHggNXB4ICM2NjY2NjY7CisJYm94LXNoYWRvdzogLTRweCAwcHggNXB4ICM2NjY2NjY7Cit9CisKKy8qIEJveCBDU1MgICovCitkaXYgeworCW1hcmdpbjogMDsKK30KKworCisucm8geworCWJhY2tncm91bmQ6IHVybCgyYi5wbmcpIHRvcCByaWdodCBuby1yZXBlYXQ7Cit9CisKKy5sbyB7CisJYmFja2dyb3VuZDogdXJsKDFiLnBuZykgdG9wIGxlZnQgbm8tcmVwZWF0OworfQorCisucnUgeworCWJhY2tncm91bmQ6IHVybCgzYi5wbmcpIGJvdHRvbSByaWdodCBuby1yZXBlYXQ7Cit9CisKKy5sdSB7CisJYmFja2dyb3VuZDogdXJsKDRiLnBuZykgYm90dG9tIGxlZnQgbm8tcmVwZWF0OworfQorCit1bCB7CisJbWFyZ2luLXRvcDogMGVtOworCXBhZGRpbmctbGVmdDogMS41ZW07Cit9CisKKy5pbmhhbHQgeworCW1hcmdpbjogMDsKKwlwYWRkaW5nOiAwLjVlbSAyLjBlbSAxLjVlbSAxLjBlbTsKK30KKworLmluaGFsdCBwIHsKKwltYXJnaW46IDA7CisJcGFkZGluZzogMDsKK30KKy54bWxjb2RlIHsKKwltYXJnaW4tbGVmdDogMjBweDsKKwliYWNrZ3JvdW5kLWNvbG9yOiAjZWVlZWVlOworCWNvbG9yOiAjMDAwMGZmOworCW1hcmdpbi10b3A6IDEwcHg7CisJbWFyZ2luLWJvdHRvbTogMTBweDsKK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL2RlbW8uaHRtbCBiL2RvY3MvZGVtby5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkNWExZTAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2RlbW8uaHRtbApAQCAtMCwwICsxLDcwNiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CisKKzwhLS0KK0NvcHlyaWdodCAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK3lvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCitodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworCis8IS0tIENvbnRlbnQgU3R5bGVzaGVldCBmb3IgU2l0ZSAtLT4KKworICAgICAgICAKKzwhLS0gc3RhcnQgdGhlIHByb2Nlc3NpbmcgLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDwhLS0gR0VORVJBVEVEIEZJTEUsIERPIE5PVCBFRElULCBFRElUIFRIRSBYTUwgRklMRSBJTiB4ZG9jcyBJTlNURUFEISAtLT4KKyAgICA8IS0tIE1haW4gUGFnZSBTZWN0aW9uIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8aHRtbD4KKyAgICAgICAgPGhlYWQ+CisgICAgICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIvPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSIKKwkJCVNlYmFzdGlhbiBXYWduZXIKKwkJIj4KKyAgICAgICAgICAgIDxtZXRhIG5hbWU9ImVtYWlsIiBjb250ZW50PSJzZWJhd2FnbmVyQGFwYWNoZS5vcmciPgorICAgICAgICAgICAgCisgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIDx0aXRsZT5BcGFjaGUgT3Blbk1lZXRpbmdzIC0gTWFpbGluZyBMaXN0czwvdGl0bGU+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3Mvb3Blbm1lZXRpbmdzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvanF1ZXJ5LXVpLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29pbi1zbGlkZXItc3R5bGVzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29sb3Jib3guY3NzIiAvPgorICAgICAgICAgICAgCisJCQk8IS0tIEFkZCBqUXVlcnkgbGlicmFyeSAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS0xLjcuMS5taW4uanMiPjwvc2NyaXB0PgorCQkKKwkJCTwhLS0gQWRkIGNvaW5zbGlkZXIgcGx1Z2lucyAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2NvaW4tc2xpZGVyLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTwhLS0gQWRkIGNvbG9yYm94IHBsdWdpbiAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS5jb2xvcmJveC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5jb3JlLmpzIj48L3NjcmlwdD4KKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkud2lkZ2V0LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmFjY29yZGlvbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQ+CisJCQkkKGZ1bmN0aW9uKCkgeworCQkJCSQoICIjYWNjb3JkaW9uIiApLmFjY29yZGlvbih7CisJCQkJCWF1dG9IZWlnaHQ6IGZhbHNlLAorCQkJCQluYXZpZ2F0aW9uOiB0cnVlLAorCQkJCQluYXZpZ2F0aW9uRmlsdGVyOiBmdW5jdGlvbiAoKSB7CisJCQkJCQl2YXIgc2lkZWJhckhyZWZBcnJheSA9IHRoaXMuaHJlZi5zcGxpdCgiLyIpOworICAgIAkJCQkJdmFyIHNpZGVCYXJMYXN0U3RyaW5nID0gc2lkZWJhckhyZWZBcnJheVtzaWRlYmFySHJlZkFycmF5Lmxlbmd0aCAtIDFdLnRvTG93ZXJDYXNlKCk7CisJCQkJCQkKKwkJCQkJCWlmIChzaWRlQmFyTGFzdFN0cmluZy5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJCQl9CisJCQkJCQkKKwkJCQkJCQkJCQkJCS8qIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgKi8KKwkJCQkJCXZhciBjdXJyZW50U2VjdGlvbiA9ICIiOworCQkJCQkJCisJCQkJCQl2YXIgY3VycmVudExvY2F0aW9uID0gIiI7CisJCQkJCQl2YXIgY3VycmVudExpbmsgPSAiIjsKKwkJCQkJCWlmIChmYWxzZSkgeworCQkJCQkJCisJCQkJCQl9CisgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luZGV4Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luZGV4Lmh0bWwiLnN1YnN0cigxLCAiL2luZGV4Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbGljZW5zZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9saWNlbnNlLmh0bWwiLnN1YnN0cigxLCAiL2xpY2Vuc2UuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIuc3Vic3RyKDEsICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2Rvd25sb2Fkcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kb3dubG9hZHMuaHRtbCIuc3Vic3RyKDEsICIvZG93bmxvYWRzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5zdWJzdHIoMSwgIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5zdGFsbGF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luc3RhbGxhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9pbnN0YWxsYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9VcGdyYWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1VwZ3JhZGUuaHRtbCIuc3Vic3RyKDEsICIvVXBncmFkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLnN1YnN0cigxLCAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29tbWFuZExpbmVBZG1pbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLnN1YnN0cigxLCAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZ2V0LWludm9sdmVkLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZ2V0LWludm9sdmVkLmh0bWwiLnN1YnN0cigxLCAiL2dldC1pbnZvbHZlZC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RlYW0tbGlzdC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3RlYW0tbGlzdC5odG1sIi5zdWJzdHIoMSwgIi90ZWFtLWxpc3QuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9tYWlsLWxpc3RzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbWFpbC1saXN0cy5odG1sIi5zdWJzdHIoMSwgIi9tYWlsLWxpc3RzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5zdWJzdHIoMSwgImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9zdm4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3N2bi5odG1sIi5zdWJzdHIoMSwgIi9zdm4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLnN1YnN0cigxLCAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kZXBlbmRlbmNpZXMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2RlcGVuZGVuY2llcy5odG1sIi5zdWJzdHIoMSwgIi9kZXBlbmRlbmNpZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVW5pdFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pVbml0VGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9KVW5pdFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NYW51YWxUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9NYW51YWxUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL01hbnVhbFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWxlYXNlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlbGVhc2VHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9SZWxlYXNlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJzaXRlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1dlYnNpdGVHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9XZWJzaXRlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU29hcFJlc3RBUEkuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1NvYXBSZXN0QVBJLmh0bWwiLnN1YnN0cigxLCAiL1NvYXBSZXN0QVBJLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdEFQSVNhbXBsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVzdEFQSVNhbXBsZS5odG1sIi5zdWJzdHIoMSwgIi9SZXN0QVBJU2FtcGxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGRhcEFuZEFEUy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTGRhcEFuZEFEUy5odG1sIi5zdWJzdHIoMSwgIi9MZGFwQW5kQURTLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRXJyb3JzVGFibGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0Vycm9yc1RhYmxlLmh0bWwiLnN1YnN0cigxLCAiL0Vycm9yc1RhYmxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01vb2RsZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Nb29kbGVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvTW9vZGxlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU2FrYWlQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU2FrYWlQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU2FrYWlQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KaXJhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0ppcmFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSmlyYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pvb21sYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Kb29tbGFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSm9vbWxhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRHJ1cGFsUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0RydXBhbFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9EcnVwYWxQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CaXRyaXhQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQml0cml4UGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0JpdHJpeFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU3VnYXJDUk1QbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWRtaW5lUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlZG1pbmVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvUmVkbWluZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0lCTURCMkNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0lCTURCMkNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9JQk1EQjJDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09yYWNsZUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09yYWNsZUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9PcmFjbGVDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL015U1FMQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTXlTUUxDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvTXlTUUxDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Bvc3RncmVzQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9zdGdyZXNDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvUG9zdGdyZXNDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9MYW5ndWFnZUVkaXRvci5odG1sIi5zdWJzdHIoMSwgIi9MYW5ndWFnZUVkaXRvci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVGltZVpvbmVIYW5kbGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIuc3Vic3RyKDEsICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRWRpdFRlbXBsYXRlcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIuc3Vic3RyKDEsICIvRWRpdFRlbXBsYXRlcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3J0U2V0dGluZ3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3J0U2V0dGluZ3MuaHRtbCIuc3Vic3RyKDEsICIvUG9ydFNldHRpbmdzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIuc3Vic3RyKDEsICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIuc3Vic3RyKDEsICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRGFzaGJvYXJkLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRGFzaGJvYXJkLmh0bWwiLnN1YnN0cigxLCAiL0Rhc2hib2FyZC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSG90S2V5cy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0hvdEtleXMuaHRtbCIuc3Vic3RyKDEsICIvSG90S2V5cy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJhcHBOYW1lUGF0aC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLnN1YnN0cigxLCAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9OYXZpZ2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTmF2aWdhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9OYXZpZ2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5zdWJzdHIoMSwgIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JUTVBTQW5kSFRUUFMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SVE1QU0FuZEhUVFBTLmh0bWwiLnN1YnN0cigxLCAiL1JUTVBTQW5kSFRUUFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIuc3Vic3RyKDEsICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIuc3Vic3RyKDEsICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DbHVzdGVyaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2x1c3RlcmluZy5odG1sIi5zdWJzdHIoMSwgIi9DbHVzdGVyaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dldFZlcnNpb25JbmZvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2V0VmVyc2lvbkluZm8uaHRtbCIuc3Vic3RyKDEsICIvR2V0VmVyc2lvbkluZm8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJICAgIAkJCQkJCisgICAgCQkJCQljdXJyZW50TGluayA9IGN1cnJlbnRMaW5rLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQljdXJyZW50TG9jYXRpb24gPSBjdXJyZW50TG9jYXRpb24udG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCQorCQkJCQkJcmV0dXJuIHNpZGVCYXJMYXN0U3RyaW5nID09IGN1cnJlbnRMaW5rKyIjIitjdXJyZW50TG9jYXRpb247CisJCQkJCX0KKwkJCQl9KTsKKwkJCX0pOworCQkJPC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwkJCQkkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsKKwkJCQkJJCgnLmZhbmN5Ym94LWJ1dHRvbnMnKS5jb2xvcmJveCh7cmVsOidmYW5jeWJveC1idXR0b25zJyx3aWR0aDoiNzUlIiwgaGVpZ2h0OiI3NSUifSk7CisJCQkJCSQoJyNhY2NvcmRpb24gYScpLmVhY2goZnVuY3Rpb24oKSB7CisJCQkJICAgICAgdmFyIGEgPSAkKHRoaXMpOworCQkJCSAgICAgIHZhciBocmVmID0gYS5hdHRyKCJocmVmIik7CisJCQkJICAgICAgaWYgKGhyZWYuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJICAgICAgCSAgdmFyIGNvbXBhcmVJdCA9IGhyZWYuc3Vic3RyKDIsIGhyZWYubGVuZ3RoKTsKKwkJCQkJICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZihjb21wYXJlSXQpIT0gLTEpIHsKKwkJCQkJICAgICAgIGEuYWRkQ2xhc3MoJ2FjdGl2ZScpOworCQkJCQkgICAgICB9CisJCQkJICAgICAgfQorCQkJCSAgICB9KTsKKwkJCQkJJCgnI2NvaW4tc2xpZGVyJykuY29pbnNsaWRlcih7IHdpZHRoOiA2NDAsaGVpZ2h0OiA0MDAsIGRlbGF5OiA0MDAwICB9KTsJCQkJCQorCQkJCX0pOworCQkJPC9zY3JpcHQ+CQorCQkJCQkJCisJCQk8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorCQkJCS5mYW5jeWJveC1jdXN0b20gLmZhbmN5Ym94LW91dGVyIHsKKwkJCQkJYm94LXNoYWRvdzogMCAwIDUwcHggIzIyMjsKKwkJCQl9CisJCQk8L3N0eWxlPgorICAgICAgICA8L2hlYWQ+CisKKyAgICAgICAgPGJvZHkgYmdjb2xvcj0iI2ZmZmZmZiIgdGV4dD0iIzAwMDAwMCIgbGluaz0iIzEyMzQ2NSIgdmxpbms9IiMxMjM0NjUiIGFsaW5rPSIjMDAwMDAwIj4gIAorICAgICAgICAJPGRpdiBjbGFzcz0ibWFpbmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAJPGRpdiBjbGFzcz0ic3VwZXJib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCI+CisgICAgICAgICAgICAgICAgPCEtLSBUT1AgSU1BR0UgLS0+CisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPgorPGEgaHJlZj0iaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnLyI+PGltZyBzcmM9Ii4vaW1hZ2VzL2xvZ28tMi5qcGciIGFsdD0iQXBhY2hlIE9wZW5NZWV0aW5ncyIgYm9yZGVyPSIwIi8+PC9hPgorPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiID4KKwk8YSBocmVmPSJkZW1vLmh0bWwiPkRlbW88L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iZG93bmxvYWRzLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+RG93bmxvYWQ8L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaW5zdGFsbGF0aW9uLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+SW5zdGFsbGF0aW9uPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTIiB0YXJnZXQ9Il9CTEFOSyI+V2lraTwvYT4KKwk8c3Bhbj4mbmJzcDs8L3NwYW4+Cis8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSI0Ij4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPCEtLSBMRUZUIFNJREUgTkFWSUdBVElPTiAtLT4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIiBub3dyYXA9Im5vd3JhcCI+CisKKyAgICAgICAgICAgICAgICAgICAgPCEtLSBzcGVjaWFsIEFDb24gTG9nbyAtIGxlYXZlIGhlcmUgZm9yIG5leHQgdGltZQorICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vYXBhY2hlY29uLmNvbS8yMDA1L1VTLyI+CisgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2FwYWNoZS5vcmcvaW1hZ2VzL2FjMjAwNXVzX2JsdWVfMTI1eDEyNS5qcGciIGhlaWdodD0iMTI1IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTI1IiBib3JkZXI9IjAiIGFsdD0iQXBhY2hlQ29uIFVTIDIwMDUiIC8+CisgICAgICAgICAgICAgICAgICAgIDwvYT4gIC0tPgorCisgICAgICAgICAgICAgICAgICAgPCEtLSByZWd1bGFyIG1lbnUgLS0+CisKKyAgICAgICAgICAgICAgICAgICAgCisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGRpdiBpZD0iYWNjb3JkaW9uIiBzdHlsZT0id2lkdGg6IDEwMCUiPgorICAgIAorICAgICAgICAgICAgCTxoMz48YSBocmVmPSIjR2VuZXJhbCI+R2VuZXJhbDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5kZXguaHRtbCI+SG9tZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbGljZW5zZS5odG1sIj5MaWNlbnNlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyI+QVNGPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kb3dubG9hZHMuaHRtbCI+RG93bmxvYWRzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCI+Q29tbWVyY2lhbCBTdXBwb3J0PC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnN0YWxsYXRpb25hbmRVcGdyYWRlIj5JbnN0YWxsYXRpb24gYW5kIFVwZ3JhZGU8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luc3RhbGxhdGlvbi5odG1sIj5JbnN0YWxsYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1VwZ3JhZGUuaHRtbCI+VXBncmFkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii5odHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyI+VHV0b3JpYWxzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db21tYW5kTGluZUFkbWluLmh0bWwiPkNvbW1hbmQgTGluZSBBZG1pbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29tbXVuaXR5Ij5Db21tdW5pdHk8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2dldC1pbnZvbHZlZC5odG1sIj5HZXQgSW52b2x2ZWQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3RlYW0tbGlzdC5odG1sIj5Db21taXR0ZXJzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9tYWlsLWxpc3RzLmh0bWwiPk1haWxpbmcgTGlzdHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyI+V2lraTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjRGV2ZWxvcG1lbnQiPkRldmVsb3BtZW50PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9zdm4uaHRtbCI+U291cmNlIENvZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIj5CdWdzIC8gSXNzdWVzIChKSVJBKTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZGVwZW5kZW5jaWVzLmh0bWwiPkRlcGVuZGVuY2llczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCI+QnVpbGQgSW5zdHJ1Y3Rpb25zPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KVW5pdFRlc3RpbmcuaHRtbCI+SlVuaXQgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTWFudWFsVGVzdGluZy5odG1sIj5NYW51YWwgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVsZWFzZUd1aWRlLmh0bWwiPlJlbGVhc2UgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1dlYnNpdGVHdWlkZS5odG1sIj5XZWJzaXRlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnRlZ3JhdGlvbiI+SW50ZWdyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1NvYXBSZXN0QVBJLmh0bWwiPlNPQVAvUkVTVCBBUEk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Jlc3RBUElTYW1wbGUuaHRtbCI+UkVTVCBBUEkgU2FtcGxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9MZGFwQW5kQURTLmh0bWwiPkxkYXAgYW5kIEFEUzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCI+Vm9JUCBhbmQgU0lQPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9FcnJvcnNUYWJsZS5odG1sIj5FcnJvcnMgdGFibGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI1BsdWdpbnMiPlBsdWdpbnM8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01vb2RsZVBsdWdpbi5odG1sIj5Nb29kbGUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TYWthaVBsdWdpbi5odG1sIj5TYWthaSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0ppcmFQbHVnaW4uaHRtbCI+SmlyYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pvb21sYVBsdWdpbi5odG1sIj5Kb29tbGEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9EcnVwYWxQbHVnaW4uaHRtbCI+RHJ1cGFsIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQml0cml4UGx1Z2luLmh0bWwiPkJpdHJpeCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCI+Q29uZmx1ZW5jZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiPlN1Z2FyQ1JNIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVkbWluZVBsdWdpbi5odG1sIj5SZWRtaW5lIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29uZmlndXJhdGlvbiI+Q29uZmlndXJhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+REIgU2FtcGxlIENvbmZpZ3VyYXRpb25zPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQXBhY2hlRGVyYnlDb25maWcuaHRtbCI+QXBhY2hlIERlcmJ5PC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JQk1EQjJDb25maWcuaHRtbCI+SUJNIERCMjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3JhY2xlQ29uZmlnLmh0bWwiPk9yYWNsZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTXlTUUxDb25maWcuaHRtbCI+TXlTUUw8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Bvc3RncmVzQ29uZmlnLmh0bWwiPlBvc3RncmVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Mb2NhbGl6YXRpb24gYW5kIGxhbmd1YWdlczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiPkludGVybmF0aW9uYWxpc2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9MYW5ndWFnZUVkaXRvci5odG1sIj5MYW5ndWFnZUVkaXRvcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vVGltZVpvbmVIYW5kbGluZy5odG1sIj5UaW1lWm9uZUhhbmRsaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9FZGl0VGVtcGxhdGVzLmh0bWwiPkVkaXRUZW1wbGF0ZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk5BVCBQb3J0IFNldHRpbmdzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9ydFNldHRpbmdzLmh0bWwiPlBvcnQgc2V0dGluZ3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlBlcmZvcm1hbmNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCI+SlZNIHBlcmZvcm1hbmNlIHR1bmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+VXNlciBJbnRlcmZhY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiPlRoZW1lczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRGFzaGJvYXJkLmh0bWwiPkRhc2hib2FyZDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCI+V2ViY2FtIHJlc29sdXRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCI+Um9vbSBsYXlvdXQgb3B0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSG90S2V5cy5odG1sIj5Ib3QgS2V5czwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q3VzdG9taXphdGlvbjwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmFwcE5hbWVQYXRoLmh0bWwiPldlYmFwcCBuYW1lL3BhdGg8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL05hdmlnYXRpb24uaHRtbCI+TmF2aWdhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIj5DYWxlbmRhciBhbmQgdGltZXpvbmU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCI+Q3VzdG9tIHJvb20gdHlwZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCI+Q3VzdG9tIGN0eXB0IG1lY2hhbmlzbTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCI+R2VuZXJhbCBDb25maWd1cmF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5TZWN1cml0eTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCI+UmVzdHJpY3RlZCBBY2Nlc3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1JUTVBTQW5kSFRUUFMuaHRtbCI+UlRNUFMgYW5kIEhUVFBTPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Db252ZXJ0ZXJzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIj5PcGVuT2ZmaWNlIENvbnZlcnRlcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIj5GRk1QRUcgVmVyc2lvbiBTd2l0Y2g8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNsdXN0ZXJpbmc8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DbHVzdGVyaW5nLmh0bWwiPkNsdXN0ZXJpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk1pc2M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZXRWZXJzaW9uSW5mby5odG1sIj5HZXQgdmVyc2lvbiBpbmZvPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAKKyAgICA8L2Rpdj4KKyAgICAgCisgICAgPGJyLz4KKyAgICAKKyAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iQXBhY2hlIE9wZW5NZWV0aW5ncyBEZW1vIFNlcnZlcnMiPjxzdHJvbmc+QXBhY2hlIE9wZW5NZWV0aW5ncyBEZW1vIFNlcnZlcnM8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQlUaGVyZSBhcmUgY3VycmVudGx5IHNvbWUgdGVjaG5pY2FsIGlzc3VlcyB3aXRoIGRlbW8gc2VydmVycy4NCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJVGhpcyBpcyBhIGxpc3Qgb2Ygc2VydmVycyB0aGF0IHlvdSBjYW4gdXNlIGZvciB0ZXN0aW5nIE9wZW5NZWV0aW5ncy4NCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJPGEgaHJlZj0iaHR0cDovL2RlbW8ub3Blbm1lZXRpbmdzLmRlIiB0YXJnZXQ9Il9CTEFOSyIgcmVsPSJub2ZvbGxvdyI+aHR0cDovL2RlbW8ub3Blbm1lZXRpbmdzLmRlPC9hPg0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQk8YSBocmVmPSJodHRwOi8vZGVtby5kYXRhdmVkLnJ1L29wZW5tZWV0aW5ncyIgdGFyZ2V0PSJfQkxBTksiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9kZW1vLmRhdGF2ZWQucnUvb3Blbm1lZXRpbmdzPC9hPg0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPCEtLSBGT09URVIgLS0+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGhyIG5vc2hhZGU9Im5vc2hhZGUiIHNpemU9IjEiLz4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBhbGlnbj0iY2VudGVyIj48Zm9udCBjb2xvcj0iIzEyMzQ2NSIgc2l6ZT0iLTEiPjxlbT4KKyAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0ICYjMTY5OyAyMDAzLTIwMTMsIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorICAgICAgICAgICAgICAgICAgICA8L2VtPjwvZm9udD48L2Rpdj4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9ib2R5PgorICAgIDwvaHRtbD4KKzwhLS0gZW5kIHRoZSBwcm9jZXNzaW5nIC0tPgorCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCmRpZmYgLS1naXQgYS9kb2NzL2RlcGVuZGVuY2llcy5odG1sIGIvZG9jcy9kZXBlbmRlbmNpZXMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMmE2YjFjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9kZXBlbmRlbmNpZXMuaHRtbApAQCAtMCwwICsxLDcwOCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CisKKzwhLS0KK0NvcHlyaWdodCAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK3lvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCitodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworCis8IS0tIENvbnRlbnQgU3R5bGVzaGVldCBmb3IgU2l0ZSAtLT4KKworICAgICAgICAKKzwhLS0gc3RhcnQgdGhlIHByb2Nlc3NpbmcgLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDwhLS0gR0VORVJBVEVEIEZJTEUsIERPIE5PVCBFRElULCBFRElUIFRIRSBYTUwgRklMRSBJTiB4ZG9jcyBJTlNURUFEISAtLT4KKyAgICA8IS0tIE1haW4gUGFnZSBTZWN0aW9uIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8aHRtbD4KKyAgICAgICAgPGhlYWQ+CisgICAgICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIvPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSIKKyBPcGVuTWVldGluZ3MgRG9jdW1lbnRhdGlvbiBUZWFtIj4KKyAgICAgICAgICAgIDxtZXRhIG5hbWU9ImVtYWlsIiBjb250ZW50PSJzZWJhd2FnbmVyQGFwYWNoZS5vcmciPgorICAgICAgICAgICAgCisgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIDx0aXRsZT5BcGFjaGUgT3Blbk1lZXRpbmdzIC0gUHJvamVjdCBEZXBlbmRlbmNpZXM8L3RpdGxlPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL29wZW5tZWV0aW5ncy5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2pxdWVyeS11aS5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2NvaW4tc2xpZGVyLXN0eWxlcy5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2NvbG9yYm94LmNzcyIgLz4KKyAgICAgICAgICAgIAorCQkJPCEtLSBBZGQgalF1ZXJ5IGxpYnJhcnkgLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9qcXVlcnktMS43LjEubWluLmpzIj48L3NjcmlwdD4KKwkJCisJCQk8IS0tIEFkZCBjb2luc2xpZGVyIHBsdWdpbnMgLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9jb2luLXNsaWRlci5taW4uanMiPjwvc2NyaXB0PgorCQkJCisJCQk8IS0tIEFkZCBjb2xvcmJveCBwbHVnaW4gLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9qcXVlcnkuY29sb3Jib3guanMiPjwvc2NyaXB0PgorCQkKKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkuY29yZS5qcyI+PC9zY3JpcHQ+CisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLndpZGdldC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5hY2NvcmRpb24uanMiPjwvc2NyaXB0PgorCQkJCisJCQk8c2NyaXB0PgorCQkJJChmdW5jdGlvbigpIHsKKwkJCQkkKCAiI2FjY29yZGlvbiIgKS5hY2NvcmRpb24oeworCQkJCQlhdXRvSGVpZ2h0OiBmYWxzZSwKKwkJCQkJbmF2aWdhdGlvbjogdHJ1ZSwKKwkJCQkJbmF2aWdhdGlvbkZpbHRlcjogZnVuY3Rpb24gKCkgeworCQkJCQkJdmFyIHNpZGViYXJIcmVmQXJyYXkgPSB0aGlzLmhyZWYuc3BsaXQoIi8iKTsKKyAgICAJCQkJCXZhciBzaWRlQmFyTGFzdFN0cmluZyA9IHNpZGViYXJIcmVmQXJyYXlbc2lkZWJhckhyZWZBcnJheS5sZW5ndGggLSAxXS50b0xvd2VyQ2FzZSgpOworCQkJCQkJCisJCQkJCQlpZiAoc2lkZUJhckxhc3RTdHJpbmcuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJCQkJcmV0dXJuIGZhbHNlOworCQkJCQkJfQorCQkJCQkJCisJCQkJCQkJCQkJCQkvKiBkb2N1bWVudC5sb2NhdGlvbi5ocmVmICovCisJCQkJCQl2YXIgY3VycmVudFNlY3Rpb24gPSAiIjsKKwkJCQkJCQorCQkJCQkJdmFyIGN1cnJlbnRMb2NhdGlvbiA9ICIiOworCQkJCQkJdmFyIGN1cnJlbnRMaW5rID0gIiI7CisJCQkJCQlpZiAoZmFsc2UpIHsKKwkJCQkJCQorCQkJCQkJfQorICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9pbmRleC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9pbmRleC5odG1sIi5zdWJzdHIoMSwgIi9pbmRleC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2xpY2Vuc2UuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbGljZW5zZS5odG1sIi5zdWJzdHIoMSwgIi9saWNlbnNlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iLnN1YnN0cigxLCAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kb3dubG9hZHMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZG93bmxvYWRzLmh0bWwiLnN1YnN0cigxLCAiL2Rvd25sb2Fkcy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIuc3Vic3RyKDEsICIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luc3RhbGxhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9pbnN0YWxsYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvaW5zdGFsbGF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVXBncmFkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9VcGdyYWRlLmh0bWwiLnN1YnN0cigxLCAiL1VwZ3JhZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIi5zdWJzdHIoMSwgImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29tbWFuZExpbmVBZG1pbi5odG1sIi5zdWJzdHIoMSwgIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2dldC1pbnZvbHZlZC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2dldC1pbnZvbHZlZC5odG1sIi5zdWJzdHIoMSwgIi9nZXQtaW52b2x2ZWQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi90ZWFtLWxpc3QuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi90ZWFtLWxpc3QuaHRtbCIuc3Vic3RyKDEsICIvdGVhbS1saXN0Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbWFpbC1saXN0cy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL21haWwtbGlzdHMuaHRtbCIuc3Vic3RyKDEsICIvbWFpbC1saXN0cy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIuc3Vic3RyKDEsICJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvc3ZuLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9zdm4uaHRtbCIuc3Vic3RyKDEsICIvc3ZuLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIi5zdWJzdHIoMSwgImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZGVwZW5kZW5jaWVzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kZXBlbmRlbmNpZXMuaHRtbCIuc3Vic3RyKDEsICIvZGVwZW5kZW5jaWVzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiLnN1YnN0cigxLCAiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSlVuaXRUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9KVW5pdFRlc3RpbmcuaHRtbCIuc3Vic3RyKDEsICIvSlVuaXRUZXN0aW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTWFudWFsVGVzdGluZy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTWFudWFsVGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9NYW51YWxUZXN0aW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVsZWFzZUd1aWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZWxlYXNlR3VpZGUuaHRtbCIuc3Vic3RyKDEsICIvUmVsZWFzZUd1aWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2Vic2l0ZUd1aWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9XZWJzaXRlR3VpZGUuaHRtbCIuc3Vic3RyKDEsICIvV2Vic2l0ZUd1aWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1NvYXBSZXN0QVBJLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Tb2FwUmVzdEFQSS5odG1sIi5zdWJzdHIoMSwgIi9Tb2FwUmVzdEFQSS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RBUElTYW1wbGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1Jlc3RBUElTYW1wbGUuaHRtbCIuc3Vic3RyKDEsICIvUmVzdEFQSVNhbXBsZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0xkYXBBbmRBRFMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0xkYXBBbmRBRFMuaHRtbCIuc3Vic3RyKDEsICIvTGRhcEFuZEFEUy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0Vycm9yc1RhYmxlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9FcnJvcnNUYWJsZS5odG1sIi5zdWJzdHIoMSwgIi9FcnJvcnNUYWJsZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Nb29kbGVQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTW9vZGxlUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL01vb2RsZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Nha2FpUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1Nha2FpUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1Nha2FpUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSmlyYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9KaXJhUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0ppcmFQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Kb29tbGFQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSm9vbWxhUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0pvb21sYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0RydXBhbFBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9EcnVwYWxQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvRHJ1cGFsUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQml0cml4UGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0JpdHJpeFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9CaXRyaXhQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVkbWluZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZWRtaW5lUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1JlZG1pbmVQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9JQk1EQjJDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JQk1EQjJDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvSUJNREIyQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9PcmFjbGVDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9PcmFjbGVDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvT3JhY2xlQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NeVNRTENvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL015U1FMQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL015U1FMQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1Bvc3RncmVzQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL1Bvc3RncmVzQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0xhbmd1YWdlRWRpdG9yLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIuc3Vic3RyKDEsICIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiLnN1YnN0cigxLCAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0VkaXRUZW1wbGF0ZXMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9FZGl0VGVtcGxhdGVzLmh0bWwiLnN1YnN0cigxLCAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUG9ydFNldHRpbmdzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9ydFNldHRpbmdzLmh0bWwiLnN1YnN0cigxLCAiL1BvcnRTZXR0aW5ncy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiLnN1YnN0cigxLCAiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiLnN1YnN0cigxLCAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0Rhc2hib2FyZC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0Rhc2hib2FyZC5odG1sIi5zdWJzdHIoMSwgIi9EYXNoYm9hcmQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0hvdEtleXMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Ib3RLZXlzLmh0bWwiLnN1YnN0cigxLCAiL0hvdEtleXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViYXBwTmFtZVBhdGguaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJhcHBOYW1lUGF0aC5odG1sIi5zdWJzdHIoMSwgIi9XZWJhcHBOYW1lUGF0aC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTmF2aWdhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL05hdmlnYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvTmF2aWdhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIuc3Vic3RyKDEsICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIuc3Vic3RyKDEsICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIi5zdWJzdHIoMSwgIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SVE1QU0FuZEhUVFBTLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUlRNUFNBbmRIVFRQUy5odG1sIi5zdWJzdHIoMSwgIi9SVE1QU0FuZEhUVFBTLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiLnN1YnN0cigxLCAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiLnN1YnN0cigxLCAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ2x1c3RlcmluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NsdXN0ZXJpbmcuaHRtbCIuc3Vic3RyKDEsICIvQ2x1c3RlcmluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZXRWZXJzaW9uSW5mby5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dldFZlcnNpb25JbmZvLmh0bWwiLnN1YnN0cigxLCAiL0dldFZlcnNpb25JbmZvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCSAgICAJCQkJCQorICAgIAkJCQkJY3VycmVudExpbmsgPSBjdXJyZW50TGluay50b0xvd2VyQ2FzZSgpOworICAgIAkJCQkJY3VycmVudExvY2F0aW9uID0gY3VycmVudExvY2F0aW9uLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQkKKwkJCQkJCXJldHVybiBzaWRlQmFyTGFzdFN0cmluZyA9PSBjdXJyZW50TGluaysiIyIrY3VycmVudExvY2F0aW9uOworCQkJCQl9CisJCQkJfSk7CisJCQl9KTsKKwkJCTwvc2NyaXB0PgorCQkJCisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisJCQkJJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CisJCQkJCSQoJy5mYW5jeWJveC1idXR0b25zJykuY29sb3Jib3goe3JlbDonZmFuY3lib3gtYnV0dG9ucycsd2lkdGg6Ijc1JSIsIGhlaWdodDoiNzUlIn0pOworCQkJCQkkKCcjYWNjb3JkaW9uIGEnKS5lYWNoKGZ1bmN0aW9uKCkgeworCQkJCSAgICAgIHZhciBhID0gJCh0aGlzKTsKKwkJCQkgICAgICB2YXIgaHJlZiA9IGEuYXR0cigiaHJlZiIpOworCQkJCSAgICAgIGlmIChocmVmLmluZGV4T2YoIiMiKSA9PSAtMSkgeworCQkJCSAgICAgIAkgIHZhciBjb21wYXJlSXQgPSBocmVmLnN1YnN0cigyLCBocmVmLmxlbmd0aCk7CisJCQkJCSAgICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoY29tcGFyZUl0KSE9IC0xKSB7CisJCQkJCSAgICAgICBhLmFkZENsYXNzKCdhY3RpdmUnKTsKKwkJCQkJICAgICAgfQorCQkJCSAgICAgIH0KKwkJCQkgICAgfSk7CisJCQkJCSQoJyNjb2luLXNsaWRlcicpLmNvaW5zbGlkZXIoeyB3aWR0aDogNjQwLGhlaWdodDogNDAwLCBkZWxheTogNDAwMCAgfSk7CQkJCQkKKwkJCQl9KTsKKwkJCTwvc2NyaXB0PgkKKwkJCQkJCQorCQkJPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKwkJCQkuZmFuY3lib3gtY3VzdG9tIC5mYW5jeWJveC1vdXRlciB7CisJCQkJCWJveC1zaGFkb3c6IDAgMCA1MHB4ICMyMjI7CisJCQkJfQorCQkJPC9zdHlsZT4KKyAgICAgICAgPC9oZWFkPgorCisgICAgICAgIDxib2R5IGJnY29sb3I9IiNmZmZmZmYiIHRleHQ9IiMwMDAwMDAiIGxpbms9IiMxMjM0NjUiIHZsaW5rPSIjMTIzNDY1IiBhbGluaz0iIzAwMDAwMCI+ICAKKyAgICAgICAgCTxkaXYgY2xhc3M9Im1haW5ib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgCTxkaXYgY2xhc3M9InN1cGVyYm9keSIgc3R5bGU9IndpZHRoOiAxMDAlOyI+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiPgorICAgICAgICAgICAgICAgIDwhLS0gVE9QIElNQUdFIC0tPgorICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0Ij4KKzxhIGhyZWY9Imh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy8iPjxpbWcgc3JjPSIuL2ltYWdlcy9sb2dvLTIuanBnIiBhbHQ9IkFwYWNoZSBPcGVuTWVldGluZ3MiIGJvcmRlcj0iMCIvPjwvYT4KKzwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODAlIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIiA+CisJPGEgaHJlZj0iZGVtby5odG1sIj5EZW1vPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9ImRvd25sb2Fkcy5odG1sIiB0YXJnZXQ9Il9QQVJFTlQiPkRvd25sb2FkPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imluc3RhbGxhdGlvbi5odG1sIiB0YXJnZXQ9Il9QQVJFTlQiPkluc3RhbGxhdGlvbjwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUyIgdGFyZ2V0PSJfQkxBTksiPldpa2k8L2E+CisJPHNwYW4+Jm5ic3A7PC9zcGFuPgorPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iNCI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGhyIG5vc2hhZGU9Im5vc2hhZGUiIHNpemU9IjEiLz4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDwhLS0gTEVGVCBTSURFIE5BVklHQVRJT04gLS0+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCIgbm93cmFwPSJub3dyYXAiPgorCisgICAgICAgICAgICAgICAgICAgIDwhLS0gc3BlY2lhbCBBQ29uIExvZ28gLSBsZWF2ZSBoZXJlIGZvciBuZXh0IHRpbWUKKyAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL2FwYWNoZWNvbi5jb20vMjAwNS9VUy8iPgorICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHA6Ly9hcGFjaGUub3JnL2ltYWdlcy9hYzIwMDV1c19ibHVlXzEyNXgxMjUuanBnIiBoZWlnaHQ9IjEyNSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjEyNSIgYm9yZGVyPSIwIiBhbHQ9IkFwYWNoZUNvbiBVUyAyMDA1IiAvPgorICAgICAgICAgICAgICAgICAgICA8L2E+ICAtLT4KKworICAgICAgICAgICAgICAgICAgIDwhLS0gcmVndWxhciBtZW51IC0tPgorCisgICAgICAgICAgICAgICAgICAgIAorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDxkaXYgaWQ9ImFjY29yZGlvbiIgc3R5bGU9IndpZHRoOiAxMDAlIj4KKyAgICAKKyAgICAgICAgICAgIAk8aDM+PGEgaHJlZj0iI0dlbmVyYWwiPkdlbmVyYWw8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luZGV4Lmh0bWwiPkhvbWU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2xpY2Vuc2UuaHRtbCI+TGljZW5zZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iPkFTRjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZG93bmxvYWRzLmh0bWwiPkRvd25sb2FkczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiPkNvbW1lcmNpYWwgU3VwcG9ydDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI+SW5zdGFsbGF0aW9uIGFuZCBVcGdyYWRlPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9pbnN0YWxsYXRpb24uaHRtbCI+SW5zdGFsbGF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9VcGdyYWRlLmh0bWwiPlVwZ3JhZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiPlR1dG9yaWFsczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQ29tbWFuZExpbmVBZG1pbi5odG1sIj5Db21tYW5kIExpbmUgQWRtaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0NvbW11bml0eSI+Q29tbXVuaXR5PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9nZXQtaW52b2x2ZWQuaHRtbCI+R2V0IEludm9sdmVkPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi90ZWFtLWxpc3QuaHRtbCI+Q29tbWl0dGVyczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbWFpbC1saXN0cy5odG1sIj5NYWlsaW5nIExpc3RzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iPldpa2k8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0RldmVsb3BtZW50Ij5EZXZlbG9wbWVudDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vc3ZuLmh0bWwiPlNvdXJjZSBDb2RlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyI+QnVncyAvIElzc3VlcyAoSklSQSk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2RlcGVuZGVuY2llcy5odG1sIj5EZXBlbmRlbmNpZXM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiPkJ1aWxkIEluc3RydWN0aW9uczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSlVuaXRUZXN0aW5nLmh0bWwiPkpVbml0IFRlc3Rpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01hbnVhbFRlc3RpbmcuaHRtbCI+TWFudWFsIFRlc3Rpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1JlbGVhc2VHdWlkZS5odG1sIj5SZWxlYXNlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9XZWJzaXRlR3VpZGUuaHRtbCI+V2Vic2l0ZSBHdWlkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjSW50ZWdyYXRpb24iPkludGVncmF0aW9uPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Tb2FwUmVzdEFQSS5odG1sIj5TT0FQL1JFU1QgQVBJPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZXN0QVBJU2FtcGxlLmh0bWwiPlJFU1QgQVBJIFNhbXBsZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTGRhcEFuZEFEUy5odG1sIj5MZGFwIGFuZCBBRFM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiPlZvSVAgYW5kIFNJUDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vRXJyb3JzVGFibGUuaHRtbCI+RXJyb3JzIHRhYmxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNQbHVnaW5zIj5QbHVnaW5zPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Nb29kbGVQbHVnaW4uaHRtbCI+TW9vZGxlIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU2FrYWlQbHVnaW4uaHRtbCI+U2FrYWkgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KaXJhUGx1Z2luLmh0bWwiPkppcmEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Kb29tbGFQbHVnaW4uaHRtbCI+Sm9vbWxhIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vRHJ1cGFsUGx1Z2luLmh0bWwiPkRydXBhbCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0JpdHJpeFBsdWdpbi5odG1sIj5CaXRyaXggUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiPkNvbmZsdWVuY2UgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TdWdhckNSTVBsdWdpbi5odG1sIj5TdWdhckNSTSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1JlZG1pbmVQbHVnaW4uaHRtbCI+UmVkbWluZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0NvbmZpZ3VyYXRpb24iPkNvbmZpZ3VyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkRCIFNhbXBsZSBDb25maWd1cmF0aW9uczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiPkFwYWNoZSBEZXJieTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSUJNREIyQ29uZmlnLmh0bWwiPklCTSBEQjI8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL09yYWNsZUNvbmZpZy5odG1sIj5PcmFjbGU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL015U1FMQ29uZmlnLmh0bWwiPk15U1FMPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIj5Qb3N0Z3JlczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TG9jYWxpemF0aW9uIGFuZCBsYW5ndWFnZXM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIj5JbnRlcm5hdGlvbmFsaXNhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTGFuZ3VhZ2VFZGl0b3IuaHRtbCI+TGFuZ3VhZ2VFZGl0b3I8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1RpbWVab25lSGFuZGxpbmcuaHRtbCI+VGltZVpvbmVIYW5kbGluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRWRpdFRlbXBsYXRlcy5odG1sIj5FZGl0VGVtcGxhdGVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5OQVQgUG9ydCBTZXR0aW5nczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1BvcnRTZXR0aW5ncy5odG1sIj5Qb3J0IHNldHRpbmdzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5QZXJmb3JtYW5jZTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiPkpWTSBwZXJmb3JtYW5jZSB0dW5pbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlVzZXIgSW50ZXJmYWNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIj5UaGVtZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0Rhc2hib2FyZC5odG1sIj5EYXNoYm9hcmQ8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiPldlYmNhbSByZXNvbHV0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiPlJvb20gbGF5b3V0IG9wdGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0hvdEtleXMuaHRtbCI+SG90IEtleXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkN1c3RvbWl6YXRpb248L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9XZWJhcHBOYW1lUGF0aC5odG1sIj5XZWJhcHAgbmFtZS9wYXRoPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9OYXZpZ2F0aW9uLmh0bWwiPk5hdmlnYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCI+Q2FsZW5kYXIgYW5kIHRpbWV6b25lPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiPkN1c3RvbSByb29tIHR5cGU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiPkN1c3RvbSBjdHlwdCBtZWNoYW5pc208L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiPkdlbmVyYWwgQ29uZmlndXJhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+U2VjdXJpdHk8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiPlJlc3RyaWN0ZWQgQWNjZXNzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9SVE1QU0FuZEhUVFBTLmh0bWwiPlJUTVBTIGFuZCBIVFRQUzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q29udmVydGVyczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCI+T3Blbk9mZmljZSBDb252ZXJ0ZXI8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCI+RkZNUEVHIFZlcnNpb24gU3dpdGNoPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5DbHVzdGVyaW5nPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2x1c3RlcmluZy5odG1sIj5DbHVzdGVyaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5NaXNjPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2V0VmVyc2lvbkluZm8uaHRtbCI+R2V0IHZlcnNpb24gaW5mbzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCisgICAgPC9kaXY+CisgICAgIAorICAgIDxici8+CisgICAgCisgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODAlIiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkID48IS0tIGJnY29sb3I9IiNFRUVFRUUiIC0tPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0idmVyZGFuYSxhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IlRoZSBBcGFjaGUgUG9kbGluZyBQcm9qZWN0Ij48c3Ryb25nPlRoZSBBcGFjaGUgUG9kbGluZyBQcm9qZWN0PC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKzxwPiANCitUaGUgY29tbW9uIGV4dGVybmFsIGRlcGVuZGVuY2llcyBvZiBPcGVuTWVldGluZ3MgaW5jbHVkZSB0aGUgdG9vbHMgdXNlZCB0byBidWlsZCANCithbmQgdGVzdCBpdDoNCis8L3A+DQorDQorPHVsPg0KKzxsaT5TdWJ2ZXJzaW9uPC9saT4NCis8bGk+QW50PC9saT4NCis8bGk+SlVuaXQ8L2xpPg0KKzwvdWw+DQorDQorPHA+T3Blbk1lZXRpbmdzIHdpbGwgYWN0aXZlbHkgZG93bmxvYWQgcmVzb3VyY2VzIGZyb20gdGhlIG9ubGluZSByZXBvc2l0b3JpZXMgd2hpbGUgYnVpbGRpbmcuPC9wPg0KKw0KKzwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8IS0tIEZPT1RFUiAtLT4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGFsaWduPSJjZW50ZXIiPjxmb250IGNvbG9yPSIjMTIzNDY1IiBzaXplPSItMSI+PGVtPgorICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgJiMxNjk7IDIwMDMtMjAxMywgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisgICAgICAgICAgICAgICAgICAgIDwvZW0+PC9mb250PjwvZGl2PgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2JvZHk+CisgICAgPC9odG1sPgorPCEtLSBlbmQgdGhlIHByb2Nlc3NpbmcgLS0+CisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKZGlmZiAtLWdpdCBhL2RvY3MvZG9jdW1lbnRhdGlvbi5odG1sIGIvZG9jcy9kb2N1bWVudGF0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzU0NzBiOAotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvZG9jdW1lbnRhdGlvbi5odG1sCkBAIC0wLDAgKzEsNzAxIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KKworPCEtLQorQ29weXJpZ2h0IDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KK0xpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKK2h0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCitVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCitkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCitTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCitsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorCisKKzwhLS0gQ29udGVudCBTdHlsZXNoZWV0IGZvciBTaXRlIC0tPgorCisgICAgICAgIAorPCEtLSBzdGFydCB0aGUgcHJvY2Vzc2luZyAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPCEtLSBHRU5FUkFURUQgRklMRSwgRE8gTk9UIEVESVQsIEVESVQgVEhFIFhNTCBGSUxFIElOIHhkb2NzIElOU1RFQUQhIC0tPgorICAgIDwhLS0gTWFpbiBQYWdlIFNlY3Rpb24gLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDxodG1sPgorICAgICAgICA8aGVhZD4KKyAgICAgICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ii8+CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9IgorIFBvZGxpbmcgRG9jdW1lbnRhdGlvbiBUZWFtIj4KKyAgICAgICAgICAgIDxtZXRhIG5hbWU9ImVtYWlsIiBjb250ZW50PSJzZWJhd2FnbmVyQGFwYWNoZS5vcmciPgorICAgICAgICAgICAgCisgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIDx0aXRsZT5BcGFjaGUgT3Blbk1lZXRpbmdzIC0gRG9jdW1lbnRhdGlvbjwvdGl0bGU+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3Mvb3Blbm1lZXRpbmdzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvanF1ZXJ5LXVpLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29pbi1zbGlkZXItc3R5bGVzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29sb3Jib3guY3NzIiAvPgorICAgICAgICAgICAgCisJCQk8IS0tIEFkZCBqUXVlcnkgbGlicmFyeSAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS0xLjcuMS5taW4uanMiPjwvc2NyaXB0PgorCQkKKwkJCTwhLS0gQWRkIGNvaW5zbGlkZXIgcGx1Z2lucyAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2NvaW4tc2xpZGVyLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTwhLS0gQWRkIGNvbG9yYm94IHBsdWdpbiAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS5jb2xvcmJveC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5jb3JlLmpzIj48L3NjcmlwdD4KKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkud2lkZ2V0LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmFjY29yZGlvbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQ+CisJCQkkKGZ1bmN0aW9uKCkgeworCQkJCSQoICIjYWNjb3JkaW9uIiApLmFjY29yZGlvbih7CisJCQkJCWF1dG9IZWlnaHQ6IGZhbHNlLAorCQkJCQluYXZpZ2F0aW9uOiB0cnVlLAorCQkJCQluYXZpZ2F0aW9uRmlsdGVyOiBmdW5jdGlvbiAoKSB7CisJCQkJCQl2YXIgc2lkZWJhckhyZWZBcnJheSA9IHRoaXMuaHJlZi5zcGxpdCgiLyIpOworICAgIAkJCQkJdmFyIHNpZGVCYXJMYXN0U3RyaW5nID0gc2lkZWJhckhyZWZBcnJheVtzaWRlYmFySHJlZkFycmF5Lmxlbmd0aCAtIDFdLnRvTG93ZXJDYXNlKCk7CisJCQkJCQkKKwkJCQkJCWlmIChzaWRlQmFyTGFzdFN0cmluZy5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJCQl9CisJCQkJCQkKKwkJCQkJCQkJCQkJCS8qIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgKi8KKwkJCQkJCXZhciBjdXJyZW50U2VjdGlvbiA9ICIiOworCQkJCQkJCisJCQkJCQl2YXIgY3VycmVudExvY2F0aW9uID0gIiI7CisJCQkJCQl2YXIgY3VycmVudExpbmsgPSAiIjsKKwkJCQkJCWlmIChmYWxzZSkgeworCQkJCQkJCisJCQkJCQl9CisgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luZGV4Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luZGV4Lmh0bWwiLnN1YnN0cigxLCAiL2luZGV4Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbGljZW5zZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9saWNlbnNlLmh0bWwiLnN1YnN0cigxLCAiL2xpY2Vuc2UuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIuc3Vic3RyKDEsICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2Rvd25sb2Fkcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kb3dubG9hZHMuaHRtbCIuc3Vic3RyKDEsICIvZG93bmxvYWRzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5zdWJzdHIoMSwgIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5zdGFsbGF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luc3RhbGxhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9pbnN0YWxsYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9VcGdyYWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1VwZ3JhZGUuaHRtbCIuc3Vic3RyKDEsICIvVXBncmFkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLnN1YnN0cigxLCAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29tbWFuZExpbmVBZG1pbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLnN1YnN0cigxLCAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZ2V0LWludm9sdmVkLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZ2V0LWludm9sdmVkLmh0bWwiLnN1YnN0cigxLCAiL2dldC1pbnZvbHZlZC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RlYW0tbGlzdC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3RlYW0tbGlzdC5odG1sIi5zdWJzdHIoMSwgIi90ZWFtLWxpc3QuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9tYWlsLWxpc3RzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbWFpbC1saXN0cy5odG1sIi5zdWJzdHIoMSwgIi9tYWlsLWxpc3RzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5zdWJzdHIoMSwgImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9zdm4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3N2bi5odG1sIi5zdWJzdHIoMSwgIi9zdm4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLnN1YnN0cigxLCAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kZXBlbmRlbmNpZXMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2RlcGVuZGVuY2llcy5odG1sIi5zdWJzdHIoMSwgIi9kZXBlbmRlbmNpZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVW5pdFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pVbml0VGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9KVW5pdFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NYW51YWxUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9NYW51YWxUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL01hbnVhbFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWxlYXNlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlbGVhc2VHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9SZWxlYXNlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJzaXRlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1dlYnNpdGVHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9XZWJzaXRlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU29hcFJlc3RBUEkuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1NvYXBSZXN0QVBJLmh0bWwiLnN1YnN0cigxLCAiL1NvYXBSZXN0QVBJLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdEFQSVNhbXBsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVzdEFQSVNhbXBsZS5odG1sIi5zdWJzdHIoMSwgIi9SZXN0QVBJU2FtcGxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGRhcEFuZEFEUy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTGRhcEFuZEFEUy5odG1sIi5zdWJzdHIoMSwgIi9MZGFwQW5kQURTLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRXJyb3JzVGFibGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0Vycm9yc1RhYmxlLmh0bWwiLnN1YnN0cigxLCAiL0Vycm9yc1RhYmxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01vb2RsZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Nb29kbGVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvTW9vZGxlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU2FrYWlQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU2FrYWlQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU2FrYWlQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KaXJhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0ppcmFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSmlyYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pvb21sYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Kb29tbGFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSm9vbWxhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRHJ1cGFsUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0RydXBhbFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9EcnVwYWxQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CaXRyaXhQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQml0cml4UGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0JpdHJpeFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU3VnYXJDUk1QbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWRtaW5lUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlZG1pbmVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvUmVkbWluZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0lCTURCMkNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0lCTURCMkNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9JQk1EQjJDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09yYWNsZUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09yYWNsZUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9PcmFjbGVDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL015U1FMQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTXlTUUxDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvTXlTUUxDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Bvc3RncmVzQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9zdGdyZXNDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvUG9zdGdyZXNDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9MYW5ndWFnZUVkaXRvci5odG1sIi5zdWJzdHIoMSwgIi9MYW5ndWFnZUVkaXRvci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVGltZVpvbmVIYW5kbGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIuc3Vic3RyKDEsICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRWRpdFRlbXBsYXRlcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIuc3Vic3RyKDEsICIvRWRpdFRlbXBsYXRlcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3J0U2V0dGluZ3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3J0U2V0dGluZ3MuaHRtbCIuc3Vic3RyKDEsICIvUG9ydFNldHRpbmdzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIuc3Vic3RyKDEsICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIuc3Vic3RyKDEsICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRGFzaGJvYXJkLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRGFzaGJvYXJkLmh0bWwiLnN1YnN0cigxLCAiL0Rhc2hib2FyZC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSG90S2V5cy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0hvdEtleXMuaHRtbCIuc3Vic3RyKDEsICIvSG90S2V5cy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJhcHBOYW1lUGF0aC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLnN1YnN0cigxLCAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9OYXZpZ2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTmF2aWdhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9OYXZpZ2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5zdWJzdHIoMSwgIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JUTVBTQW5kSFRUUFMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SVE1QU0FuZEhUVFBTLmh0bWwiLnN1YnN0cigxLCAiL1JUTVBTQW5kSFRUUFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIuc3Vic3RyKDEsICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIuc3Vic3RyKDEsICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DbHVzdGVyaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2x1c3RlcmluZy5odG1sIi5zdWJzdHIoMSwgIi9DbHVzdGVyaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dldFZlcnNpb25JbmZvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2V0VmVyc2lvbkluZm8uaHRtbCIuc3Vic3RyKDEsICIvR2V0VmVyc2lvbkluZm8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJICAgIAkJCQkJCisgICAgCQkJCQljdXJyZW50TGluayA9IGN1cnJlbnRMaW5rLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQljdXJyZW50TG9jYXRpb24gPSBjdXJyZW50TG9jYXRpb24udG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCQorCQkJCQkJcmV0dXJuIHNpZGVCYXJMYXN0U3RyaW5nID09IGN1cnJlbnRMaW5rKyIjIitjdXJyZW50TG9jYXRpb247CisJCQkJCX0KKwkJCQl9KTsKKwkJCX0pOworCQkJPC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwkJCQkkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsKKwkJCQkJJCgnLmZhbmN5Ym94LWJ1dHRvbnMnKS5jb2xvcmJveCh7cmVsOidmYW5jeWJveC1idXR0b25zJyx3aWR0aDoiNzUlIiwgaGVpZ2h0OiI3NSUifSk7CisJCQkJCSQoJyNhY2NvcmRpb24gYScpLmVhY2goZnVuY3Rpb24oKSB7CisJCQkJICAgICAgdmFyIGEgPSAkKHRoaXMpOworCQkJCSAgICAgIHZhciBocmVmID0gYS5hdHRyKCJocmVmIik7CisJCQkJICAgICAgaWYgKGhyZWYuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJICAgICAgCSAgdmFyIGNvbXBhcmVJdCA9IGhyZWYuc3Vic3RyKDIsIGhyZWYubGVuZ3RoKTsKKwkJCQkJICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZihjb21wYXJlSXQpIT0gLTEpIHsKKwkJCQkJICAgICAgIGEuYWRkQ2xhc3MoJ2FjdGl2ZScpOworCQkJCQkgICAgICB9CisJCQkJICAgICAgfQorCQkJCSAgICB9KTsKKwkJCQkJJCgnI2NvaW4tc2xpZGVyJykuY29pbnNsaWRlcih7IHdpZHRoOiA2NDAsaGVpZ2h0OiA0MDAsIGRlbGF5OiA0MDAwICB9KTsJCQkJCQorCQkJCX0pOworCQkJPC9zY3JpcHQ+CQorCQkJCQkJCisJCQk8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorCQkJCS5mYW5jeWJveC1jdXN0b20gLmZhbmN5Ym94LW91dGVyIHsKKwkJCQkJYm94LXNoYWRvdzogMCAwIDUwcHggIzIyMjsKKwkJCQl9CisJCQk8L3N0eWxlPgorICAgICAgICA8L2hlYWQ+CisKKyAgICAgICAgPGJvZHkgYmdjb2xvcj0iI2ZmZmZmZiIgdGV4dD0iIzAwMDAwMCIgbGluaz0iIzEyMzQ2NSIgdmxpbms9IiMxMjM0NjUiIGFsaW5rPSIjMDAwMDAwIj4gIAorICAgICAgICAJPGRpdiBjbGFzcz0ibWFpbmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAJPGRpdiBjbGFzcz0ic3VwZXJib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCI+CisgICAgICAgICAgICAgICAgPCEtLSBUT1AgSU1BR0UgLS0+CisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPgorPGEgaHJlZj0iaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnLyI+PGltZyBzcmM9Ii4vaW1hZ2VzL2xvZ28tMi5qcGciIGFsdD0iQXBhY2hlIE9wZW5NZWV0aW5ncyIgYm9yZGVyPSIwIi8+PC9hPgorPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiID4KKwk8YSBocmVmPSJkZW1vLmh0bWwiPkRlbW88L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iZG93bmxvYWRzLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+RG93bmxvYWQ8L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaW5zdGFsbGF0aW9uLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+SW5zdGFsbGF0aW9uPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTIiB0YXJnZXQ9Il9CTEFOSyI+V2lraTwvYT4KKwk8c3Bhbj4mbmJzcDs8L3NwYW4+Cis8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSI0Ij4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPCEtLSBMRUZUIFNJREUgTkFWSUdBVElPTiAtLT4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIiBub3dyYXA9Im5vd3JhcCI+CisKKyAgICAgICAgICAgICAgICAgICAgPCEtLSBzcGVjaWFsIEFDb24gTG9nbyAtIGxlYXZlIGhlcmUgZm9yIG5leHQgdGltZQorICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vYXBhY2hlY29uLmNvbS8yMDA1L1VTLyI+CisgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2FwYWNoZS5vcmcvaW1hZ2VzL2FjMjAwNXVzX2JsdWVfMTI1eDEyNS5qcGciIGhlaWdodD0iMTI1IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTI1IiBib3JkZXI9IjAiIGFsdD0iQXBhY2hlQ29uIFVTIDIwMDUiIC8+CisgICAgICAgICAgICAgICAgICAgIDwvYT4gIC0tPgorCisgICAgICAgICAgICAgICAgICAgPCEtLSByZWd1bGFyIG1lbnUgLS0+CisKKyAgICAgICAgICAgICAgICAgICAgCisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGRpdiBpZD0iYWNjb3JkaW9uIiBzdHlsZT0id2lkdGg6IDEwMCUiPgorICAgIAorICAgICAgICAgICAgCTxoMz48YSBocmVmPSIjR2VuZXJhbCI+R2VuZXJhbDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5kZXguaHRtbCI+SG9tZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbGljZW5zZS5odG1sIj5MaWNlbnNlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyI+QVNGPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kb3dubG9hZHMuaHRtbCI+RG93bmxvYWRzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCI+Q29tbWVyY2lhbCBTdXBwb3J0PC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnN0YWxsYXRpb25hbmRVcGdyYWRlIj5JbnN0YWxsYXRpb24gYW5kIFVwZ3JhZGU8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luc3RhbGxhdGlvbi5odG1sIj5JbnN0YWxsYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1VwZ3JhZGUuaHRtbCI+VXBncmFkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii5odHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyI+VHV0b3JpYWxzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db21tYW5kTGluZUFkbWluLmh0bWwiPkNvbW1hbmQgTGluZSBBZG1pbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29tbXVuaXR5Ij5Db21tdW5pdHk8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2dldC1pbnZvbHZlZC5odG1sIj5HZXQgSW52b2x2ZWQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3RlYW0tbGlzdC5odG1sIj5Db21taXR0ZXJzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9tYWlsLWxpc3RzLmh0bWwiPk1haWxpbmcgTGlzdHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyI+V2lraTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjRGV2ZWxvcG1lbnQiPkRldmVsb3BtZW50PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9zdm4uaHRtbCI+U291cmNlIENvZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIj5CdWdzIC8gSXNzdWVzIChKSVJBKTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZGVwZW5kZW5jaWVzLmh0bWwiPkRlcGVuZGVuY2llczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCI+QnVpbGQgSW5zdHJ1Y3Rpb25zPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KVW5pdFRlc3RpbmcuaHRtbCI+SlVuaXQgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTWFudWFsVGVzdGluZy5odG1sIj5NYW51YWwgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVsZWFzZUd1aWRlLmh0bWwiPlJlbGVhc2UgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1dlYnNpdGVHdWlkZS5odG1sIj5XZWJzaXRlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnRlZ3JhdGlvbiI+SW50ZWdyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1NvYXBSZXN0QVBJLmh0bWwiPlNPQVAvUkVTVCBBUEk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Jlc3RBUElTYW1wbGUuaHRtbCI+UkVTVCBBUEkgU2FtcGxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9MZGFwQW5kQURTLmh0bWwiPkxkYXAgYW5kIEFEUzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCI+Vm9JUCBhbmQgU0lQPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9FcnJvcnNUYWJsZS5odG1sIj5FcnJvcnMgdGFibGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI1BsdWdpbnMiPlBsdWdpbnM8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01vb2RsZVBsdWdpbi5odG1sIj5Nb29kbGUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TYWthaVBsdWdpbi5odG1sIj5TYWthaSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0ppcmFQbHVnaW4uaHRtbCI+SmlyYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pvb21sYVBsdWdpbi5odG1sIj5Kb29tbGEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9EcnVwYWxQbHVnaW4uaHRtbCI+RHJ1cGFsIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQml0cml4UGx1Z2luLmh0bWwiPkJpdHJpeCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCI+Q29uZmx1ZW5jZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiPlN1Z2FyQ1JNIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVkbWluZVBsdWdpbi5odG1sIj5SZWRtaW5lIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29uZmlndXJhdGlvbiI+Q29uZmlndXJhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+REIgU2FtcGxlIENvbmZpZ3VyYXRpb25zPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQXBhY2hlRGVyYnlDb25maWcuaHRtbCI+QXBhY2hlIERlcmJ5PC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JQk1EQjJDb25maWcuaHRtbCI+SUJNIERCMjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3JhY2xlQ29uZmlnLmh0bWwiPk9yYWNsZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTXlTUUxDb25maWcuaHRtbCI+TXlTUUw8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Bvc3RncmVzQ29uZmlnLmh0bWwiPlBvc3RncmVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Mb2NhbGl6YXRpb24gYW5kIGxhbmd1YWdlczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiPkludGVybmF0aW9uYWxpc2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9MYW5ndWFnZUVkaXRvci5odG1sIj5MYW5ndWFnZUVkaXRvcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vVGltZVpvbmVIYW5kbGluZy5odG1sIj5UaW1lWm9uZUhhbmRsaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9FZGl0VGVtcGxhdGVzLmh0bWwiPkVkaXRUZW1wbGF0ZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk5BVCBQb3J0IFNldHRpbmdzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9ydFNldHRpbmdzLmh0bWwiPlBvcnQgc2V0dGluZ3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlBlcmZvcm1hbmNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCI+SlZNIHBlcmZvcm1hbmNlIHR1bmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+VXNlciBJbnRlcmZhY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiPlRoZW1lczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRGFzaGJvYXJkLmh0bWwiPkRhc2hib2FyZDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCI+V2ViY2FtIHJlc29sdXRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCI+Um9vbSBsYXlvdXQgb3B0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSG90S2V5cy5odG1sIj5Ib3QgS2V5czwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q3VzdG9taXphdGlvbjwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmFwcE5hbWVQYXRoLmh0bWwiPldlYmFwcCBuYW1lL3BhdGg8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL05hdmlnYXRpb24uaHRtbCI+TmF2aWdhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIj5DYWxlbmRhciBhbmQgdGltZXpvbmU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCI+Q3VzdG9tIHJvb20gdHlwZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCI+Q3VzdG9tIGN0eXB0IG1lY2hhbmlzbTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCI+R2VuZXJhbCBDb25maWd1cmF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5TZWN1cml0eTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCI+UmVzdHJpY3RlZCBBY2Nlc3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1JUTVBTQW5kSFRUUFMuaHRtbCI+UlRNUFMgYW5kIEhUVFBTPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Db252ZXJ0ZXJzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIj5PcGVuT2ZmaWNlIENvbnZlcnRlcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIj5GRk1QRUcgVmVyc2lvbiBTd2l0Y2g8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNsdXN0ZXJpbmc8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DbHVzdGVyaW5nLmh0bWwiPkNsdXN0ZXJpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk1pc2M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZXRWZXJzaW9uSW5mby5odG1sIj5HZXQgdmVyc2lvbiBpbmZvPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAKKyAgICA8L2Rpdj4KKyAgICAgCisgICAgPGJyLz4KKyAgICAKKyAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iT3Blbk1lZXRpbmdzIERvY3VtZW50YXRpb24iPjxzdHJvbmc+T3Blbk1lZXRpbmdzIERvY3VtZW50YXRpb248L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KK1dpa2kgaXMgdG8gYmUgbGlua2VkIGhlcmUsIGNvbWluZyBzb29uIC4uLg0KKw0KKzwhLS0gKioqKioqKioqKioqKioqKiogVEJEICoqKioqKioqKioqKioqKioqKioqKioqKioqICAtLT4NCis8IS0tICoqKioqKioqKioqKioqKioqIFRCRCAqKioqKioqKioqKioqKioqKioqKioqKioqKiAgLS0+DQorPCEtLSAqKioqKioqKioqKioqKioqKiBUQkQgKioqKioqKioqKioqKioqKioqKioqKioqKiogIC0tPg0KKw0KKzwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPCEtLSBGT09URVIgLS0+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGhyIG5vc2hhZGU9Im5vc2hhZGUiIHNpemU9IjEiLz4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBhbGlnbj0iY2VudGVyIj48Zm9udCBjb2xvcj0iIzEyMzQ2NSIgc2l6ZT0iLTEiPjxlbT4KKyAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0ICYjMTY5OyAyMDAzLTIwMTMsIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorICAgICAgICAgICAgICAgICAgICA8L2VtPjwvZm9udD48L2Rpdj4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9ib2R5PgorICAgIDwvaHRtbD4KKzwhLS0gZW5kIHRoZSBwcm9jZXNzaW5nIC0tPgorCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCmRpZmYgLS1naXQgYS9kb2NzL2Rvd25sb2Fkcy5odG1sIGIvZG9jcy9kb3dubG9hZHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDQzNWU1Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9kb3dubG9hZHMuaHRtbApAQCAtMCwwICsxLDc4NCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CisKKzwhLS0KK0NvcHlyaWdodCAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK3lvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCitodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworCis8IS0tIENvbnRlbnQgU3R5bGVzaGVldCBmb3IgU2l0ZSAtLT4KKworICAgICAgICAKKzwhLS0gc3RhcnQgdGhlIHByb2Nlc3NpbmcgLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDwhLS0gR0VORVJBVEVEIEZJTEUsIERPIE5PVCBFRElULCBFRElUIFRIRSBYTUwgRklMRSBJTiB4ZG9jcyBJTlNURUFEISAtLT4KKyAgICA8IS0tIE1haW4gUGFnZSBTZWN0aW9uIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8aHRtbD4KKyAgICAgICAgPGhlYWQ+CisgICAgICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIvPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSIKKwkJCVBvZGxpbmcgRG9jdW1lbnRhdGlvbiBUZWFtCisJCSI+CisgICAgICAgICAgICA8bWV0YSBuYW1lPSJlbWFpbCIgY29udGVudD0ic2ViYXdhZ25lckBhcGFjaGUub3JnIj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICA8dGl0bGU+QXBhY2hlIE9wZW5NZWV0aW5ncyAtIERvd25sb2FkczwvdGl0bGU+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3Mvb3Blbm1lZXRpbmdzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvanF1ZXJ5LXVpLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29pbi1zbGlkZXItc3R5bGVzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29sb3Jib3guY3NzIiAvPgorICAgICAgICAgICAgCisJCQk8IS0tIEFkZCBqUXVlcnkgbGlicmFyeSAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS0xLjcuMS5taW4uanMiPjwvc2NyaXB0PgorCQkKKwkJCTwhLS0gQWRkIGNvaW5zbGlkZXIgcGx1Z2lucyAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2NvaW4tc2xpZGVyLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTwhLS0gQWRkIGNvbG9yYm94IHBsdWdpbiAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS5jb2xvcmJveC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5jb3JlLmpzIj48L3NjcmlwdD4KKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkud2lkZ2V0LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmFjY29yZGlvbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQ+CisJCQkkKGZ1bmN0aW9uKCkgeworCQkJCSQoICIjYWNjb3JkaW9uIiApLmFjY29yZGlvbih7CisJCQkJCWF1dG9IZWlnaHQ6IGZhbHNlLAorCQkJCQluYXZpZ2F0aW9uOiB0cnVlLAorCQkJCQluYXZpZ2F0aW9uRmlsdGVyOiBmdW5jdGlvbiAoKSB7CisJCQkJCQl2YXIgc2lkZWJhckhyZWZBcnJheSA9IHRoaXMuaHJlZi5zcGxpdCgiLyIpOworICAgIAkJCQkJdmFyIHNpZGVCYXJMYXN0U3RyaW5nID0gc2lkZWJhckhyZWZBcnJheVtzaWRlYmFySHJlZkFycmF5Lmxlbmd0aCAtIDFdLnRvTG93ZXJDYXNlKCk7CisJCQkJCQkKKwkJCQkJCWlmIChzaWRlQmFyTGFzdFN0cmluZy5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJCQl9CisJCQkJCQkKKwkJCQkJCQkJCQkJCS8qIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgKi8KKwkJCQkJCXZhciBjdXJyZW50U2VjdGlvbiA9ICIiOworCQkJCQkJCisJCQkJCQl2YXIgY3VycmVudExvY2F0aW9uID0gIiI7CisJCQkJCQl2YXIgY3VycmVudExpbmsgPSAiIjsKKwkJCQkJCWlmIChmYWxzZSkgeworCQkJCQkJCisJCQkJCQl9CisgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luZGV4Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luZGV4Lmh0bWwiLnN1YnN0cigxLCAiL2luZGV4Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbGljZW5zZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9saWNlbnNlLmh0bWwiLnN1YnN0cigxLCAiL2xpY2Vuc2UuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIuc3Vic3RyKDEsICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2Rvd25sb2Fkcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kb3dubG9hZHMuaHRtbCIuc3Vic3RyKDEsICIvZG93bmxvYWRzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5zdWJzdHIoMSwgIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5zdGFsbGF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luc3RhbGxhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9pbnN0YWxsYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9VcGdyYWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1VwZ3JhZGUuaHRtbCIuc3Vic3RyKDEsICIvVXBncmFkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLnN1YnN0cigxLCAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29tbWFuZExpbmVBZG1pbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLnN1YnN0cigxLCAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZ2V0LWludm9sdmVkLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZ2V0LWludm9sdmVkLmh0bWwiLnN1YnN0cigxLCAiL2dldC1pbnZvbHZlZC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RlYW0tbGlzdC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3RlYW0tbGlzdC5odG1sIi5zdWJzdHIoMSwgIi90ZWFtLWxpc3QuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9tYWlsLWxpc3RzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbWFpbC1saXN0cy5odG1sIi5zdWJzdHIoMSwgIi9tYWlsLWxpc3RzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5zdWJzdHIoMSwgImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9zdm4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3N2bi5odG1sIi5zdWJzdHIoMSwgIi9zdm4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLnN1YnN0cigxLCAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kZXBlbmRlbmNpZXMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2RlcGVuZGVuY2llcy5odG1sIi5zdWJzdHIoMSwgIi9kZXBlbmRlbmNpZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVW5pdFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pVbml0VGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9KVW5pdFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NYW51YWxUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9NYW51YWxUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL01hbnVhbFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWxlYXNlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlbGVhc2VHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9SZWxlYXNlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJzaXRlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1dlYnNpdGVHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9XZWJzaXRlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU29hcFJlc3RBUEkuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1NvYXBSZXN0QVBJLmh0bWwiLnN1YnN0cigxLCAiL1NvYXBSZXN0QVBJLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdEFQSVNhbXBsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVzdEFQSVNhbXBsZS5odG1sIi5zdWJzdHIoMSwgIi9SZXN0QVBJU2FtcGxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGRhcEFuZEFEUy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTGRhcEFuZEFEUy5odG1sIi5zdWJzdHIoMSwgIi9MZGFwQW5kQURTLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRXJyb3JzVGFibGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0Vycm9yc1RhYmxlLmh0bWwiLnN1YnN0cigxLCAiL0Vycm9yc1RhYmxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01vb2RsZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Nb29kbGVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvTW9vZGxlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU2FrYWlQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU2FrYWlQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU2FrYWlQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KaXJhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0ppcmFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSmlyYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pvb21sYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Kb29tbGFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSm9vbWxhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRHJ1cGFsUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0RydXBhbFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9EcnVwYWxQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CaXRyaXhQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQml0cml4UGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0JpdHJpeFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU3VnYXJDUk1QbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWRtaW5lUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlZG1pbmVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvUmVkbWluZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0lCTURCMkNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0lCTURCMkNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9JQk1EQjJDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09yYWNsZUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09yYWNsZUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9PcmFjbGVDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL015U1FMQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTXlTUUxDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvTXlTUUxDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Bvc3RncmVzQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9zdGdyZXNDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvUG9zdGdyZXNDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9MYW5ndWFnZUVkaXRvci5odG1sIi5zdWJzdHIoMSwgIi9MYW5ndWFnZUVkaXRvci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVGltZVpvbmVIYW5kbGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIuc3Vic3RyKDEsICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRWRpdFRlbXBsYXRlcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIuc3Vic3RyKDEsICIvRWRpdFRlbXBsYXRlcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3J0U2V0dGluZ3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3J0U2V0dGluZ3MuaHRtbCIuc3Vic3RyKDEsICIvUG9ydFNldHRpbmdzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIuc3Vic3RyKDEsICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIuc3Vic3RyKDEsICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRGFzaGJvYXJkLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRGFzaGJvYXJkLmh0bWwiLnN1YnN0cigxLCAiL0Rhc2hib2FyZC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSG90S2V5cy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0hvdEtleXMuaHRtbCIuc3Vic3RyKDEsICIvSG90S2V5cy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJhcHBOYW1lUGF0aC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLnN1YnN0cigxLCAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9OYXZpZ2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTmF2aWdhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9OYXZpZ2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5zdWJzdHIoMSwgIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JUTVBTQW5kSFRUUFMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SVE1QU0FuZEhUVFBTLmh0bWwiLnN1YnN0cigxLCAiL1JUTVBTQW5kSFRUUFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIuc3Vic3RyKDEsICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIuc3Vic3RyKDEsICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DbHVzdGVyaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2x1c3RlcmluZy5odG1sIi5zdWJzdHIoMSwgIi9DbHVzdGVyaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dldFZlcnNpb25JbmZvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2V0VmVyc2lvbkluZm8uaHRtbCIuc3Vic3RyKDEsICIvR2V0VmVyc2lvbkluZm8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJICAgIAkJCQkJCisgICAgCQkJCQljdXJyZW50TGluayA9IGN1cnJlbnRMaW5rLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQljdXJyZW50TG9jYXRpb24gPSBjdXJyZW50TG9jYXRpb24udG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCQorCQkJCQkJcmV0dXJuIHNpZGVCYXJMYXN0U3RyaW5nID09IGN1cnJlbnRMaW5rKyIjIitjdXJyZW50TG9jYXRpb247CisJCQkJCX0KKwkJCQl9KTsKKwkJCX0pOworCQkJPC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwkJCQkkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsKKwkJCQkJJCgnLmZhbmN5Ym94LWJ1dHRvbnMnKS5jb2xvcmJveCh7cmVsOidmYW5jeWJveC1idXR0b25zJyx3aWR0aDoiNzUlIiwgaGVpZ2h0OiI3NSUifSk7CisJCQkJCSQoJyNhY2NvcmRpb24gYScpLmVhY2goZnVuY3Rpb24oKSB7CisJCQkJICAgICAgdmFyIGEgPSAkKHRoaXMpOworCQkJCSAgICAgIHZhciBocmVmID0gYS5hdHRyKCJocmVmIik7CisJCQkJICAgICAgaWYgKGhyZWYuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJICAgICAgCSAgdmFyIGNvbXBhcmVJdCA9IGhyZWYuc3Vic3RyKDIsIGhyZWYubGVuZ3RoKTsKKwkJCQkJICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZihjb21wYXJlSXQpIT0gLTEpIHsKKwkJCQkJICAgICAgIGEuYWRkQ2xhc3MoJ2FjdGl2ZScpOworCQkJCQkgICAgICB9CisJCQkJICAgICAgfQorCQkJCSAgICB9KTsKKwkJCQkJJCgnI2NvaW4tc2xpZGVyJykuY29pbnNsaWRlcih7IHdpZHRoOiA2NDAsaGVpZ2h0OiA0MDAsIGRlbGF5OiA0MDAwICB9KTsJCQkJCQorCQkJCX0pOworCQkJPC9zY3JpcHQ+CQorCQkJCQkJCisJCQk8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorCQkJCS5mYW5jeWJveC1jdXN0b20gLmZhbmN5Ym94LW91dGVyIHsKKwkJCQkJYm94LXNoYWRvdzogMCAwIDUwcHggIzIyMjsKKwkJCQl9CisJCQk8L3N0eWxlPgorICAgICAgICA8L2hlYWQ+CisKKyAgICAgICAgPGJvZHkgYmdjb2xvcj0iI2ZmZmZmZiIgdGV4dD0iIzAwMDAwMCIgbGluaz0iIzEyMzQ2NSIgdmxpbms9IiMxMjM0NjUiIGFsaW5rPSIjMDAwMDAwIj4gIAorICAgICAgICAJPGRpdiBjbGFzcz0ibWFpbmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAJPGRpdiBjbGFzcz0ic3VwZXJib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCI+CisgICAgICAgICAgICAgICAgPCEtLSBUT1AgSU1BR0UgLS0+CisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPgorPGEgaHJlZj0iaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnLyI+PGltZyBzcmM9Ii4vaW1hZ2VzL2xvZ28tMi5qcGciIGFsdD0iQXBhY2hlIE9wZW5NZWV0aW5ncyIgYm9yZGVyPSIwIi8+PC9hPgorPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiID4KKwk8YSBocmVmPSJkZW1vLmh0bWwiPkRlbW88L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iZG93bmxvYWRzLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+RG93bmxvYWQ8L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaW5zdGFsbGF0aW9uLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+SW5zdGFsbGF0aW9uPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTIiB0YXJnZXQ9Il9CTEFOSyI+V2lraTwvYT4KKwk8c3Bhbj4mbmJzcDs8L3NwYW4+Cis8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSI0Ij4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPCEtLSBMRUZUIFNJREUgTkFWSUdBVElPTiAtLT4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIiBub3dyYXA9Im5vd3JhcCI+CisKKyAgICAgICAgICAgICAgICAgICAgPCEtLSBzcGVjaWFsIEFDb24gTG9nbyAtIGxlYXZlIGhlcmUgZm9yIG5leHQgdGltZQorICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vYXBhY2hlY29uLmNvbS8yMDA1L1VTLyI+CisgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2FwYWNoZS5vcmcvaW1hZ2VzL2FjMjAwNXVzX2JsdWVfMTI1eDEyNS5qcGciIGhlaWdodD0iMTI1IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTI1IiBib3JkZXI9IjAiIGFsdD0iQXBhY2hlQ29uIFVTIDIwMDUiIC8+CisgICAgICAgICAgICAgICAgICAgIDwvYT4gIC0tPgorCisgICAgICAgICAgICAgICAgICAgPCEtLSByZWd1bGFyIG1lbnUgLS0+CisKKyAgICAgICAgICAgICAgICAgICAgCisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGRpdiBpZD0iYWNjb3JkaW9uIiBzdHlsZT0id2lkdGg6IDEwMCUiPgorICAgIAorICAgICAgICAgICAgCTxoMz48YSBocmVmPSIjR2VuZXJhbCI+R2VuZXJhbDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5kZXguaHRtbCI+SG9tZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbGljZW5zZS5odG1sIj5MaWNlbnNlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyI+QVNGPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kb3dubG9hZHMuaHRtbCI+RG93bmxvYWRzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCI+Q29tbWVyY2lhbCBTdXBwb3J0PC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnN0YWxsYXRpb25hbmRVcGdyYWRlIj5JbnN0YWxsYXRpb24gYW5kIFVwZ3JhZGU8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luc3RhbGxhdGlvbi5odG1sIj5JbnN0YWxsYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1VwZ3JhZGUuaHRtbCI+VXBncmFkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii5odHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyI+VHV0b3JpYWxzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db21tYW5kTGluZUFkbWluLmh0bWwiPkNvbW1hbmQgTGluZSBBZG1pbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29tbXVuaXR5Ij5Db21tdW5pdHk8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2dldC1pbnZvbHZlZC5odG1sIj5HZXQgSW52b2x2ZWQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3RlYW0tbGlzdC5odG1sIj5Db21taXR0ZXJzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9tYWlsLWxpc3RzLmh0bWwiPk1haWxpbmcgTGlzdHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyI+V2lraTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjRGV2ZWxvcG1lbnQiPkRldmVsb3BtZW50PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9zdm4uaHRtbCI+U291cmNlIENvZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIj5CdWdzIC8gSXNzdWVzIChKSVJBKTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZGVwZW5kZW5jaWVzLmh0bWwiPkRlcGVuZGVuY2llczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCI+QnVpbGQgSW5zdHJ1Y3Rpb25zPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KVW5pdFRlc3RpbmcuaHRtbCI+SlVuaXQgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTWFudWFsVGVzdGluZy5odG1sIj5NYW51YWwgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVsZWFzZUd1aWRlLmh0bWwiPlJlbGVhc2UgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1dlYnNpdGVHdWlkZS5odG1sIj5XZWJzaXRlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnRlZ3JhdGlvbiI+SW50ZWdyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1NvYXBSZXN0QVBJLmh0bWwiPlNPQVAvUkVTVCBBUEk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Jlc3RBUElTYW1wbGUuaHRtbCI+UkVTVCBBUEkgU2FtcGxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9MZGFwQW5kQURTLmh0bWwiPkxkYXAgYW5kIEFEUzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCI+Vm9JUCBhbmQgU0lQPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9FcnJvcnNUYWJsZS5odG1sIj5FcnJvcnMgdGFibGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI1BsdWdpbnMiPlBsdWdpbnM8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01vb2RsZVBsdWdpbi5odG1sIj5Nb29kbGUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TYWthaVBsdWdpbi5odG1sIj5TYWthaSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0ppcmFQbHVnaW4uaHRtbCI+SmlyYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pvb21sYVBsdWdpbi5odG1sIj5Kb29tbGEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9EcnVwYWxQbHVnaW4uaHRtbCI+RHJ1cGFsIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQml0cml4UGx1Z2luLmh0bWwiPkJpdHJpeCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCI+Q29uZmx1ZW5jZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiPlN1Z2FyQ1JNIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVkbWluZVBsdWdpbi5odG1sIj5SZWRtaW5lIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29uZmlndXJhdGlvbiI+Q29uZmlndXJhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+REIgU2FtcGxlIENvbmZpZ3VyYXRpb25zPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQXBhY2hlRGVyYnlDb25maWcuaHRtbCI+QXBhY2hlIERlcmJ5PC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JQk1EQjJDb25maWcuaHRtbCI+SUJNIERCMjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3JhY2xlQ29uZmlnLmh0bWwiPk9yYWNsZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTXlTUUxDb25maWcuaHRtbCI+TXlTUUw8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Bvc3RncmVzQ29uZmlnLmh0bWwiPlBvc3RncmVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Mb2NhbGl6YXRpb24gYW5kIGxhbmd1YWdlczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiPkludGVybmF0aW9uYWxpc2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9MYW5ndWFnZUVkaXRvci5odG1sIj5MYW5ndWFnZUVkaXRvcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vVGltZVpvbmVIYW5kbGluZy5odG1sIj5UaW1lWm9uZUhhbmRsaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9FZGl0VGVtcGxhdGVzLmh0bWwiPkVkaXRUZW1wbGF0ZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk5BVCBQb3J0IFNldHRpbmdzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9ydFNldHRpbmdzLmh0bWwiPlBvcnQgc2V0dGluZ3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlBlcmZvcm1hbmNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCI+SlZNIHBlcmZvcm1hbmNlIHR1bmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+VXNlciBJbnRlcmZhY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiPlRoZW1lczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRGFzaGJvYXJkLmh0bWwiPkRhc2hib2FyZDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCI+V2ViY2FtIHJlc29sdXRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCI+Um9vbSBsYXlvdXQgb3B0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSG90S2V5cy5odG1sIj5Ib3QgS2V5czwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q3VzdG9taXphdGlvbjwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmFwcE5hbWVQYXRoLmh0bWwiPldlYmFwcCBuYW1lL3BhdGg8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL05hdmlnYXRpb24uaHRtbCI+TmF2aWdhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIj5DYWxlbmRhciBhbmQgdGltZXpvbmU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCI+Q3VzdG9tIHJvb20gdHlwZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCI+Q3VzdG9tIGN0eXB0IG1lY2hhbmlzbTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCI+R2VuZXJhbCBDb25maWd1cmF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5TZWN1cml0eTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCI+UmVzdHJpY3RlZCBBY2Nlc3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1JUTVBTQW5kSFRUUFMuaHRtbCI+UlRNUFMgYW5kIEhUVFBTPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Db252ZXJ0ZXJzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIj5PcGVuT2ZmaWNlIENvbnZlcnRlcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIj5GRk1QRUcgVmVyc2lvbiBTd2l0Y2g8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNsdXN0ZXJpbmc8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DbHVzdGVyaW5nLmh0bWwiPkNsdXN0ZXJpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk1pc2M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZXRWZXJzaW9uSW5mby5odG1sIj5HZXQgdmVyc2lvbiBpbmZvPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAKKyAgICA8L2Rpdj4KKyAgICAgCisgICAgPGJyLz4KKyAgICAKKyAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iRG93bmxvYWRzIj48c3Ryb25nPkRvd25sb2Fkczwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgICA8aHIgc3R5bGU9IndpZHRoOjEwMCU7IGNvbG9yOiM5OTk5OTk7IGJhY2tncm91bmQtY29sb3I6Izk5OTk5OTsgaGVpZ2h0OjFweDsgYm9yZGVyOjBweDsiLz4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisJCQkJQWxsIGRvd25sb2FkcyBjYW4gYmUgdmVyaWZpZWQgdXNpbmcgdGhlIEFwYWNoZSBPcGVuTWVldGluZ3MgY29kZQ0KKwkJCQlzaWduaW5nIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9keW4vY2xvc2VyLmNnaS9vcGVubWVldGluZ3MvMi4xLjAvS0VZUyI+S0VZUzwvYT4uDQorCQkJPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJQWxsIGFyZSBhdmFpbGFibGUgZm9yIGRvd25sb2FkIGFzIHNvdXJjZSBhbmQgYmluYXJ5Lg0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgYmdjb2xvcj0iI0VGRUZFRiI+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IkxhdGVzdCBPZmZpY2lhbCBSZWxlYXNlIj48c3Ryb25nPkxhdGVzdCBPZmZpY2lhbCBSZWxlYXNlPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQkJQXBhY2hlIE9wZW5tZWV0aW5ncyAyLjEuMA0KKwkJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+DQorCQkJCQk8bGk+DQorCQkJCQkJQmluYXJpZXM6DQorCQkJCQkJPHVsPg0KKwkJCQkJCQk8bGk+DQorCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvZHluL2Nsb3Nlci5jZ2kvb3Blbm1lZXRpbmdzLzIuMS4wL2Jpbi9hcGFjaGUtb3Blbm1lZXRpbmdzLTIuMS4wLnppcCI+YXBhY2hlLW9wZW5tZWV0aW5ncy0yLjEuMC56aXA8L2E+DQorCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvZGlzdC9vcGVubWVldGluZ3MvMi4xLjAvYmluL2FwYWNoZS1vcGVubWVldGluZ3MtMi4xLjAuemlwLmFzYyI+W1NJR108L2E+DQorCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvZGlzdC9vcGVubWVldGluZ3MvMi4xLjAvYmluL2FwYWNoZS1vcGVubWVldGluZ3MtMi4xLjAuemlwLm1kNSI+W01ENV08L2E+DQorCQkJCQkJCTwvbGk+DQorCQkJCQkJCTxsaT4NCisJCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9keW4vY2xvc2VyLmNnaS9vcGVubWVldGluZ3MvMi4xLjAvYmluL2FwYWNoZS1vcGVubWVldGluZ3MtMi4xLjAudGFyLmd6Ij5hcGFjaGUtb3Blbm1lZXRpbmdzLTIuMS4wLnRhci5nejwvYT4NCisJCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9kaXN0L29wZW5tZWV0aW5ncy8yLjEuMC9iaW4vYXBhY2hlLW9wZW5tZWV0aW5ncy0yLjEuMC50YXIuZ3ouYXNjIj5bU0lHXTwvYT4NCisJCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9kaXN0L29wZW5tZWV0aW5ncy8yLjEuMC9iaW4vYXBhY2hlLW9wZW5tZWV0aW5ncy0yLjEuMC50YXIuZ3oubWQ1Ij5bTUQ1XTwvYT4NCisJCQkJCQkJPC9saT4NCisJCQkJCQk8L3VsPg0KKwkJCQkJPC9saT4NCisJCQkJCTxsaT4NCisJCQkJCQlTb3VyY2VzOg0KKwkJCQkJCTx1bD4NCisJCQkJCQkJPGxpPg0KKwkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2R5bi9jbG9zZXIuY2dpL29wZW5tZWV0aW5ncy8yLjEuMC9zcmMvYXBhY2hlLW9wZW5tZWV0aW5ncy0yLjEuMC1zcmMuemlwIj5hcGFjaGUtb3Blbm1lZXRpbmdzLTIuMS4wLXNyYy56aXA8L2E+DQorCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvZGlzdC9vcGVubWVldGluZ3MvMi4xLjAvc3JjL2FwYWNoZS1vcGVubWVldGluZ3MtMi4xLjAtc3JjLnppcC5hc2MiPltTSUddPC9hPg0KKwkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2Rpc3Qvb3Blbm1lZXRpbmdzLzIuMS4wL3NyYy9hcGFjaGUtb3Blbm1lZXRpbmdzLTIuMS4wLXNyYy56aXAubWQ1Ij5bTUQ1XTwvYT4NCisJCQkJCQkJPC9saT4NCisJCQkJCQkJPGxpPg0KKwkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2R5bi9jbG9zZXIuY2dpL29wZW5tZWV0aW5ncy8yLjEuMC9zcmMvYXBhY2hlLW9wZW5tZWV0aW5ncy0yLjEuMC1zcmMudGFyLmd6Ij5hcGFjaGUtb3Blbm1lZXRpbmdzLTIuMS4wLXNyYy50YXIuZ3o8L2E+DQorCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvZGlzdC9vcGVubWVldGluZ3MvMi4xLjAvc3JjL2FwYWNoZS1vcGVubWVldGluZ3MtMi4xLjAtc3JjLnRhci5nei5hc2MiPltTSUddPC9hPg0KKwkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2Rpc3Qvb3Blbm1lZXRpbmdzLzIuMS4wL3NyYy9hcGFjaGUtb3Blbm1lZXRpbmdzLTIuMS4wLXNyYy50YXIuZ3oubWQ1Ij5bTUQ1XTwvYT4NCisJCQkJCQkJPC9saT4NCisJCQkJCQk8L3VsPg0KKwkJCQkJPC9saT4NCisJCQkJPC91bD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkIGJnY29sb3I9IiNFRkVGRUYiPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0iYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJQcmV2aW91cyBPZmZpY2lhbCBSZWxlYXNlcyI+PHN0cm9uZz5QcmV2aW91cyBPZmZpY2lhbCBSZWxlYXNlczwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJCUFwYWNoZSBPcGVubWVldGluZ3MgSW5jdWJhdGluZyAyLjAgaXMgYXZhaWxhYmxlIGhlcmU6DQorCQkJCQk8YSBocmVmPSJodHRwOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvaW5jdWJhdG9yL29wZW5tZWV0aW5ncy8yLjAtaW5jdWJhdGluZy8iPmh0dHA6Ly9hcmNoaXZlLmFwYWNoZS5vcmcvZGlzdC9pbmN1YmF0b3Ivb3Blbm1lZXRpbmdzLzIuMC1pbmN1YmF0aW5nPC9hPg0KKwkJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCBiZ2NvbG9yPSIjRUZFRkVGIj4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9ImFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iUGx1Z2lucyAvIE5vbiBBU0YgZG93bmxvYWRzIj48c3Ryb25nPlBsdWdpbnMgLyBOb24gQVNGIGRvd25sb2Fkczwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJCUlmIHlvdSBhcmUgbG9va2luZyBmb3IgbW9yZSBwbHVnaW5zIGZvciAzdGggcGFydHkgYXBwbGljYXRpb25zIChNb29kbGUsIERydXBhbCwgSm9vbWxhLCAuLi4pIGNoZWNrIG91dCA8YSBocmVmPSJodHRwOi8vY29kZS5nb29nbGUuY29tL2EvYXBhY2hlLWV4dHJhcy5vcmcvaG9zdGluZy9zZWFyY2g/cT1vcGVubWVldGluZ3MiIHRhcmdldD0iX0JMQU5LIiByZWw9Im5vZm9sbG93Ij5hcGFjaGUtZXh0cmFzLm9yZzwvYT4uDQorCQkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQkJT3Blbk1lZXRpbmdzIHJlbGVhc2VzIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBBU0YgY2FuIGJlIGRvd25sb2FkZWQgZnJvbSB0aGUNCisJCQkJCW9sZA0KKwkJCQkJPGEgaHJlZj0iaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL29wZW5tZWV0aW5ncy9kb3dubG9hZHMvbGlzdCIgdGFyZ2V0PSJfQkxBTksiPkdvb2dsZUNvZGUgd2Vic2l0ZTwvYT4NCisJCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPCEtLSBGT09URVIgLS0+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGhyIG5vc2hhZGU9Im5vc2hhZGUiIHNpemU9IjEiLz4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBhbGlnbj0iY2VudGVyIj48Zm9udCBjb2xvcj0iIzEyMzQ2NSIgc2l6ZT0iLTEiPjxlbT4KKyAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0ICYjMTY5OyAyMDAzLTIwMTMsIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorICAgICAgICAgICAgICAgICAgICA8L2VtPjwvZm9udD48L2Rpdj4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9ib2R5PgorICAgIDwvaHRtbD4KKzwhLS0gZW5kIHRoZSBwcm9jZXNzaW5nIC0tPgorCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCmRpZmYgLS1naXQgYS9kb2NzL2dldC1pbnZvbHZlZC5odG1sIGIvZG9jcy9nZXQtaW52b2x2ZWQuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTVlY2E0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9nZXQtaW52b2x2ZWQuaHRtbApAQCAtMCwwICsxLDgxMyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CisKKzwhLS0KK0NvcHlyaWdodCAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK3lvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCitodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworCis8IS0tIENvbnRlbnQgU3R5bGVzaGVldCBmb3IgU2l0ZSAtLT4KKworICAgICAgICAKKzwhLS0gc3RhcnQgdGhlIHByb2Nlc3NpbmcgLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDwhLS0gR0VORVJBVEVEIEZJTEUsIERPIE5PVCBFRElULCBFRElUIFRIRSBYTUwgRklMRSBJTiB4ZG9jcyBJTlNURUFEISAtLT4KKyAgICA8IS0tIE1haW4gUGFnZSBTZWN0aW9uIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8aHRtbD4KKyAgICAgICAgPGhlYWQ+CisgICAgICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIvPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSIKKwkJCU9wZW5NZWV0aW5ncyBEb2N1bWVudGF0aW9uIFRlYW0KKwkJIj4KKyAgICAgICAgICAgIDxtZXRhIG5hbWU9ImVtYWlsIiBjb250ZW50PSJkZXZAb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmciPgorICAgICAgICAgICAgCisgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIDx0aXRsZT5BcGFjaGUgT3Blbk1lZXRpbmdzIC0gR2V0IEludm9sdmVkPC90aXRsZT4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9vcGVubWVldGluZ3MuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9qcXVlcnktdWkuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2luLXNsaWRlci1zdHlsZXMuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2xvcmJveC5jc3MiIC8+CisgICAgICAgICAgICAKKwkJCTwhLS0gQWRkIGpRdWVyeSBsaWJyYXJ5IC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LTEuNy4xLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPCEtLSBBZGQgY29pbnNsaWRlciBwbHVnaW5zIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvY29pbi1zbGlkZXIubWluLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPCEtLSBBZGQgY29sb3Jib3ggcGx1Z2luIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LmNvbG9yYm94LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmNvcmUuanMiPjwvc2NyaXB0PgorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS53aWRnZXQuanMiPjwvc2NyaXB0PgorCQkKKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkuYWNjb3JkaW9uLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdD4KKwkJCSQoZnVuY3Rpb24oKSB7CisJCQkJJCggIiNhY2NvcmRpb24iICkuYWNjb3JkaW9uKHsKKwkJCQkJYXV0b0hlaWdodDogZmFsc2UsCisJCQkJCW5hdmlnYXRpb246IHRydWUsCisJCQkJCW5hdmlnYXRpb25GaWx0ZXI6IGZ1bmN0aW9uICgpIHsKKwkJCQkJCXZhciBzaWRlYmFySHJlZkFycmF5ID0gdGhpcy5ocmVmLnNwbGl0KCIvIik7CisgICAgCQkJCQl2YXIgc2lkZUJhckxhc3RTdHJpbmcgPSBzaWRlYmFySHJlZkFycmF5W3NpZGViYXJIcmVmQXJyYXkubGVuZ3RoIC0gMV0udG9Mb3dlckNhc2UoKTsKKwkJCQkJCQorCQkJCQkJaWYgKHNpZGVCYXJMYXN0U3RyaW5nLmluZGV4T2YoIiMiKSA9PSAtMSkgeworCQkJCQkJCXJldHVybiBmYWxzZTsKKwkJCQkJCX0KKwkJCQkJCQorCQkJCQkJCQkJCQkJLyogZG9jdW1lbnQubG9jYXRpb24uaHJlZiAqLworCQkJCQkJdmFyIGN1cnJlbnRTZWN0aW9uID0gIiI7CisJCQkJCQkKKwkJCQkJCXZhciBjdXJyZW50TG9jYXRpb24gPSAiIjsKKwkJCQkJCXZhciBjdXJyZW50TGluayA9ICIiOworCQkJCQkJaWYgKGZhbHNlKSB7CisJCQkJCQkKKwkJCQkJCX0KKyAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5kZXguaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5kZXguaHRtbCIuc3Vic3RyKDEsICIvaW5kZXguaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9saWNlbnNlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2xpY2Vuc2UuaHRtbCIuc3Vic3RyKDEsICIvbGljZW5zZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5zdWJzdHIoMSwgImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZG93bmxvYWRzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2Rvd25sb2Fkcy5odG1sIi5zdWJzdHIoMSwgIi9kb3dubG9hZHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiLnN1YnN0cigxLCAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9pbnN0YWxsYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5zdGFsbGF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL2luc3RhbGxhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1VwZ3JhZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvVXBncmFkZS5odG1sIi5zdWJzdHIoMSwgIi9VcGdyYWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIuc3Vic3RyKDEsICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db21tYW5kTGluZUFkbWluLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIuc3Vic3RyKDEsICIvQ29tbWFuZExpbmVBZG1pbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9nZXQtaW52b2x2ZWQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9nZXQtaW52b2x2ZWQuaHRtbCIuc3Vic3RyKDEsICIvZ2V0LWludm9sdmVkLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGVhbS1saXN0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdGVhbS1saXN0Lmh0bWwiLnN1YnN0cigxLCAiL3RlYW0tbGlzdC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL21haWwtbGlzdHMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9tYWlsLWxpc3RzLmh0bWwiLnN1YnN0cigxLCAiL21haWwtbGlzdHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLnN1YnN0cigxLCAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3N2bi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvc3ZuLmh0bWwiLnN1YnN0cigxLCAiL3N2bi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIuc3Vic3RyKDEsICJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2RlcGVuZGVuY2llcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZGVwZW5kZW5jaWVzLmh0bWwiLnN1YnN0cigxLCAiL2RlcGVuZGVuY2llcy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pVbml0VGVzdGluZy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSlVuaXRUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL0pVbml0VGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01hbnVhbFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01hbnVhbFRlc3RpbmcuaHRtbCIuc3Vic3RyKDEsICIvTWFudWFsVGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlbGVhc2VHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVsZWFzZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1JlbGVhc2VHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYnNpdGVHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvV2Vic2l0ZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1dlYnNpdGVHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Tb2FwUmVzdEFQSS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU29hcFJlc3RBUEkuaHRtbCIuc3Vic3RyKDEsICIvU29hcFJlc3RBUEkuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZXN0QVBJU2FtcGxlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZXN0QVBJU2FtcGxlLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RBUElTYW1wbGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MZGFwQW5kQURTLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9MZGFwQW5kQURTLmh0bWwiLnN1YnN0cigxLCAiL0xkYXBBbmRBRFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FcnJvcnNUYWJsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRXJyb3JzVGFibGUuaHRtbCIuc3Vic3RyKDEsICIvRXJyb3JzVGFibGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTW9vZGxlUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01vb2RsZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Nb29kbGVQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TYWthaVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TYWthaVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TYWthaVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ppcmFQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSmlyYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9KaXJhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSm9vbWxhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pvb21sYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Kb29tbGFQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EcnVwYWxQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRHJ1cGFsUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0RydXBhbFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0JpdHJpeFBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CaXRyaXhQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvQml0cml4UGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TdWdhckNSTVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TdWdhckNSTVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TdWdhckNSTVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlZG1pbmVQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVkbWluZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9SZWRtaW5lUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSUJNREIyQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSUJNREIyQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL0lCTURCMkNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3JhY2xlQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3JhY2xlQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL09yYWNsZUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTXlTUUxDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9NeVNRTENvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9NeVNRTENvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUG9zdGdyZXNDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MYW5ndWFnZUVkaXRvci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLnN1YnN0cigxLCAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5zdWJzdHIoMSwgIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FZGl0VGVtcGxhdGVzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRWRpdFRlbXBsYXRlcy5odG1sIi5zdWJzdHIoMSwgIi9FZGl0VGVtcGxhdGVzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1BvcnRTZXR0aW5ncy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1BvcnRTZXR0aW5ncy5odG1sIi5zdWJzdHIoMSwgIi9Qb3J0U2V0dGluZ3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5zdWJzdHIoMSwgIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5zdWJzdHIoMSwgIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EYXNoYm9hcmQuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9EYXNoYm9hcmQuaHRtbCIuc3Vic3RyKDEsICIvRGFzaGJvYXJkLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLnN1YnN0cigxLCAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Ib3RLZXlzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSG90S2V5cy5odG1sIi5zdWJzdHIoMSwgIi9Ib3RLZXlzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYmFwcE5hbWVQYXRoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvV2ViYXBwTmFtZVBhdGguaHRtbCIuc3Vic3RyKDEsICIvV2ViYXBwTmFtZVBhdGguaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL05hdmlnYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9OYXZpZ2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL05hdmlnYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLnN1YnN0cigxLCAiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIuc3Vic3RyKDEsICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIuc3Vic3RyKDEsICIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUlRNUFNBbmRIVFRQUy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1JUTVBTQW5kSFRUUFMuaHRtbCIuc3Vic3RyKDEsICIvUlRNUFNBbmRIVFRQUy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5zdWJzdHIoMSwgIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5zdWJzdHIoMSwgIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NsdXN0ZXJpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DbHVzdGVyaW5nLmh0bWwiLnN1YnN0cigxLCAiL0NsdXN0ZXJpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvR2V0VmVyc2lvbkluZm8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9HZXRWZXJzaW9uSW5mby5odG1sIi5zdWJzdHIoMSwgIi9HZXRWZXJzaW9uSW5mby5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkgICAgCQkJCQkKKyAgICAJCQkJCWN1cnJlbnRMaW5rID0gY3VycmVudExpbmsudG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCWN1cnJlbnRMb2NhdGlvbiA9IGN1cnJlbnRMb2NhdGlvbi50b0xvd2VyQ2FzZSgpOworICAgIAkJCQkJCisJCQkJCQlyZXR1cm4gc2lkZUJhckxhc3RTdHJpbmcgPT0gY3VycmVudExpbmsrIiMiK2N1cnJlbnRMb2NhdGlvbjsKKwkJCQkJfQorCQkJCX0pOworCQkJfSk7CisJCQk8L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCQkJCSQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgeworCQkJCQkkKCcuZmFuY3lib3gtYnV0dG9ucycpLmNvbG9yYm94KHtyZWw6J2ZhbmN5Ym94LWJ1dHRvbnMnLHdpZHRoOiI3NSUiLCBoZWlnaHQ6Ijc1JSJ9KTsKKwkJCQkJJCgnI2FjY29yZGlvbiBhJykuZWFjaChmdW5jdGlvbigpIHsKKwkJCQkgICAgICB2YXIgYSA9ICQodGhpcyk7CisJCQkJICAgICAgdmFyIGhyZWYgPSBhLmF0dHIoImhyZWYiKTsKKwkJCQkgICAgICBpZiAoaHJlZi5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkgICAgICAJICB2YXIgY29tcGFyZUl0ID0gaHJlZi5zdWJzdHIoMiwgaHJlZi5sZW5ndGgpOworCQkJCQkgICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKGNvbXBhcmVJdCkhPSAtMSkgeworCQkJCQkgICAgICAgYS5hZGRDbGFzcygnYWN0aXZlJyk7CisJCQkJCSAgICAgIH0KKwkJCQkgICAgICB9CisJCQkJICAgIH0pOworCQkJCQkkKCcjY29pbi1zbGlkZXInKS5jb2luc2xpZGVyKHsgd2lkdGg6IDY0MCxoZWlnaHQ6IDQwMCwgZGVsYXk6IDQwMDAgIH0pOwkJCQkJCisJCQkJfSk7CisJCQk8L3NjcmlwdD4JCisJCQkJCQkKKwkJCTxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisJCQkJLmZhbmN5Ym94LWN1c3RvbSAuZmFuY3lib3gtb3V0ZXIgeworCQkJCQlib3gtc2hhZG93OiAwIDAgNTBweCAjMjIyOworCQkJCX0KKwkJCTwvc3R5bGU+CisgICAgICAgIDwvaGVhZD4KKworICAgICAgICA8Ym9keSBiZ2NvbG9yPSIjZmZmZmZmIiB0ZXh0PSIjMDAwMDAwIiBsaW5rPSIjMTIzNDY1IiB2bGluaz0iIzEyMzQ2NSIgYWxpbms9IiMwMDAwMDAiPiAgCisgICAgICAgIAk8ZGl2IGNsYXNzPSJtYWluYm9keSIgc3R5bGU9IndpZHRoOiAxMDAlOyI+CisgICAgICAgIAk8ZGl2IGNsYXNzPSJzdXBlcmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIj4KKyAgICAgICAgICAgICAgICA8IS0tIFRPUCBJTUFHRSAtLT4KKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCI+Cis8YSBocmVmPSJodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvIj48aW1nIHNyYz0iLi9pbWFnZXMvbG9nby0yLmpwZyIgYWx0PSJBcGFjaGUgT3Blbk1lZXRpbmdzIiBib3JkZXI9IjAiLz48L2E+Cis8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCIgPgorCTxhIGhyZWY9ImRlbW8uaHRtbCI+RGVtbzwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJkb3dubG9hZHMuaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5Eb3dubG9hZDwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJpbnN0YWxsYXRpb24uaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5JbnN0YWxsYXRpb248L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MiIHRhcmdldD0iX0JMQU5LIj5XaWtpPC9hPgorCTxzcGFuPiZuYnNwOzwvc3Bhbj4KKzwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjQiPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8IS0tIExFRlQgU0lERSBOQVZJR0FUSU9OIC0tPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiIG5vd3JhcD0ibm93cmFwIj4KKworICAgICAgICAgICAgICAgICAgICA8IS0tIHNwZWNpYWwgQUNvbiBMb2dvIC0gbGVhdmUgaGVyZSBmb3IgbmV4dCB0aW1lCisgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9hcGFjaGVjb24uY29tLzIwMDUvVVMvIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vYXBhY2hlLm9yZy9pbWFnZXMvYWMyMDA1dXNfYmx1ZV8xMjV4MTI1LmpwZyIgaGVpZ2h0PSIxMjUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPSIxMjUiIGJvcmRlcj0iMCIgYWx0PSJBcGFjaGVDb24gVVMgMjAwNSIgLz4KKyAgICAgICAgICAgICAgICAgICAgPC9hPiAgLS0+CisKKyAgICAgICAgICAgICAgICAgICA8IS0tIHJlZ3VsYXIgbWVudSAtLT4KKworICAgICAgICAgICAgICAgICAgICAKKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8ZGl2IGlkPSJhY2NvcmRpb24iIHN0eWxlPSJ3aWR0aDogMTAwJSI+CisgICAgCisgICAgICAgICAgICAJPGgzPjxhIGhyZWY9IiNHZW5lcmFsIj5HZW5lcmFsPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9pbmRleC5odG1sIj5Ib21lPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9saWNlbnNlLmh0bWwiPkxpY2Vuc2U8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5BU0Y8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2Rvd25sb2Fkcy5odG1sIj5Eb3dubG9hZHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIj5Db21tZXJjaWFsIFN1cHBvcnQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0luc3RhbGxhdGlvbmFuZFVwZ3JhZGUiPkluc3RhbGxhdGlvbiBhbmQgVXBncmFkZTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5zdGFsbGF0aW9uLmh0bWwiPkluc3RhbGxhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vVXBncmFkZS5odG1sIj5VcGdyYWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLmh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIj5UdXRvcmlhbHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCI+Q29tbWFuZCBMaW5lIEFkbWluPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb21tdW5pdHkiPkNvbW11bml0eTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZ2V0LWludm9sdmVkLmh0bWwiPkdldCBJbnZvbHZlZDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdGVhbS1saXN0Lmh0bWwiPkNvbW1pdHRlcnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL21haWwtbGlzdHMuaHRtbCI+TWFpbGluZyBMaXN0czwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIj5XaWtpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNEZXZlbG9wbWVudCI+RGV2ZWxvcG1lbnQ8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3N2bi5odG1sIj5Tb3VyY2UgQ29kZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiPkJ1Z3MgLyBJc3N1ZXMgKEpJUkEpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kZXBlbmRlbmNpZXMuaHRtbCI+RGVwZW5kZW5jaWVzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CdWlsZEluc3RydWN0aW9ucy5odG1sIj5CdWlsZCBJbnN0cnVjdGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pVbml0VGVzdGluZy5odG1sIj5KVW5pdCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9NYW51YWxUZXN0aW5nLmh0bWwiPk1hbnVhbCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWxlYXNlR3VpZGUuaHRtbCI+UmVsZWFzZSBHdWlkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vV2Vic2l0ZUd1aWRlLmh0bWwiPldlYnNpdGUgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0ludGVncmF0aW9uIj5JbnRlZ3JhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU29hcFJlc3RBUEkuaHRtbCI+U09BUC9SRVNUIEFQSTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVzdEFQSVNhbXBsZS5odG1sIj5SRVNUIEFQSSBTYW1wbGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0xkYXBBbmRBRFMuaHRtbCI+TGRhcCBhbmQgQURTPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIj5Wb0lQIGFuZCBTSVA8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0Vycm9yc1RhYmxlLmh0bWwiPkVycm9ycyB0YWJsZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjUGx1Z2lucyI+UGx1Z2luczwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTW9vZGxlUGx1Z2luLmh0bWwiPk1vb2RsZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Nha2FpUGx1Z2luLmh0bWwiPlNha2FpIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSmlyYVBsdWdpbi5odG1sIj5KaXJhIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSm9vbWxhUGx1Z2luLmh0bWwiPkpvb21sYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0RydXBhbFBsdWdpbi5odG1sIj5EcnVwYWwgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CaXRyaXhQbHVnaW4uaHRtbCI+Qml0cml4IFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQ29uZmx1ZW5jZVBsdWdpbi5odG1sIj5Db25mbHVlbmNlIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU3VnYXJDUk1QbHVnaW4uaHRtbCI+U3VnYXJDUk0gUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWRtaW5lUGx1Z2luLmh0bWwiPlJlZG1pbmUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb25maWd1cmF0aW9uIj5Db25maWd1cmF0aW9uPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5EQiBTYW1wbGUgQ29uZmlndXJhdGlvbnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIj5BcGFjaGUgRGVyYnk8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0lCTURCMkNvbmZpZy5odG1sIj5JQk0gREIyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcmFjbGVDb25maWcuaHRtbCI+T3JhY2xlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9NeVNRTENvbmZpZy5odG1sIj5NeVNRTDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9zdGdyZXNDb25maWcuaHRtbCI+UG9zdGdyZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkxvY2FsaXphdGlvbiBhbmQgbGFuZ3VhZ2VzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCI+SW50ZXJuYXRpb25hbGlzYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0xhbmd1YWdlRWRpdG9yLmh0bWwiPkxhbmd1YWdlRWRpdG9yPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiPlRpbWVab25lSGFuZGxpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0VkaXRUZW1wbGF0ZXMuaHRtbCI+RWRpdFRlbXBsYXRlczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TkFUIFBvcnQgU2V0dGluZ3M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Qb3J0U2V0dGluZ3MuaHRtbCI+UG9ydCBzZXR0aW5nczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+UGVyZm9ybWFuY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIj5KVk0gcGVyZm9ybWFuY2UgdHVuaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Vc2VyIEludGVyZmFjZTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCI+VGhlbWVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9EYXNoYm9hcmQuaHRtbCI+RGFzaGJvYXJkPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIj5XZWJjYW0gcmVzb2x1dGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIj5Sb29tIGxheW91dCBvcHRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Ib3RLZXlzLmh0bWwiPkhvdCBLZXlzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5DdXN0b21pemF0aW9uPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViYXBwTmFtZVBhdGguaHRtbCI+V2ViYXBwIG5hbWUvcGF0aDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTmF2aWdhdGlvbi5odG1sIj5OYXZpZ2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiPkNhbGVuZGFyIGFuZCB0aW1lem9uZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIj5DdXN0b20gcm9vbSB0eXBlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIj5DdXN0b20gY3R5cHQgbWVjaGFuaXNtPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIj5HZW5lcmFsIENvbmZpZ3VyYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlNlY3VyaXR5PC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUmVzdHJpY3RlZEFjY2Vzcy5odG1sIj5SZXN0cmljdGVkIEFjY2VzczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUlRNUFNBbmRIVFRQUy5odG1sIj5SVE1QUyBhbmQgSFRUUFM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNvbnZlcnRlcnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiPk9wZW5PZmZpY2UgQ29udmVydGVyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiPkZGTVBFRyBWZXJzaW9uIFN3aXRjaDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q2x1c3RlcmluZzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NsdXN0ZXJpbmcuaHRtbCI+Q2x1c3RlcmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TWlzYzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0dldFZlcnNpb25JbmZvLmh0bWwiPkdldCB2ZXJzaW9uIGluZm88L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAorICAgIDwvZGl2PgorICAgICAKKyAgICA8YnIvPgorICAgIAorICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJIb3cgZG8gSSBjb250cmlidXRlLCBnaXZlIGZlZWRiYWNrLCBmaXggYnVncyBhbmQgc28gb24/Ij48c3Ryb25nPkhvdyBkbyBJIGNvbnRyaWJ1dGUsIGdpdmUgZmVlZGJhY2ssIGZpeCBidWdzIGFuZCBzbyBvbj88L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQlUaGUgQXBhY2hlIE9wZW5NZWV0aW5ncyBwcm9qZWN0IHJlYWxseSBuZWVkcyBhbmQgYXBwcmVjaWF0ZXMgYW55DQorCQkJCWNvbnRyaWJ1dGlvbnMsDQorCQkJCWluY2x1ZGluZyBkb2N1bWVudGF0aW9uIGhlbHAsIHNvdXJjZSBjb2RlIGFuZA0KKwkJCQlmZWVkYmFjay4gU3VnZ2VzdGVkDQorCQkJCWNoYW5nZXMgc2hvdWxkIGNvbWUgaW4gdGhlIGZvcm0gb2Ygc291cmNlIGNvZGUNCisJCQkJYW5kL29yIHZlcnkgZGV0YWlsZWQNCisJCQkJYW5kIGNvbnN0cnVjdGl2ZSBmZWVkYmFjay4NCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+DQorCQkJCTxsaT4NCisJCQkJCURpc2N1c3Npb24gb2NjdXJzIG9uIHRoZQ0KKwkJCQkJPGEgaHJlZj0ibWFpbC1saXN0cy5odG1sIj5PcGVuTWVldGluZ3MgbWFpbGluZyBsaXN0czwvYT4NCisJCQkJPC9saT4NCisJCQkJPGxpPg0KKwkJCQkJSW5mb3JtYXRpb24gb24gYWNjZXNzIHRvIHRoZSBwcm9qZWN0IHNvdXJjZSBjb2RlIGlzDQorCQkJCQlhdmFpbGFibGUNCisJCQkJCTxhIGhyZWY9InN2bi5odG1sIj5oZXJlPC9hPg0KKwkJCQkJLg0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+DQorCQkJCQlCdWdzIGFuZCBvdGhlciBpc3N1ZXMgY2FuIGJlIHBvc3RlZCBvbiB0aGUgcHJvamVjdA0KKwkJCQkJPGEgaHJlZj0iaHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiPkpJUkE8L2E+DQorCQkJCQkoDQorCQkJCQk8YSBocmVmPSJodHRwczovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvc2VjdXJlL1NpZ251cCFkZWZhdWx0LmpzcGEiPnNpZ24gdXA8L2E+DQorCQkJCQkpLg0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+DQorCQkJCQlBZGRpdGlvbmFsIGRvY3VtZW50YXRpb24gYW5kIGRpc2N1c3Npb24gY2FuIGJlIGNvbnRyaWJ1dGVkIHRvIHRoZQ0KKwkJCQkJcHJvamVjdA0KKwkJCQkJPGEgaHJlZj0iaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL09QRU5NRUVUSU5HUyI+V2lraTwvYT4NCisJCQkJCSgNCisJCQkJCTxhIGhyZWY9Imh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL3NpZ251cC5hY3Rpb24iPnNpZ24gdXA8L2E+DQorCQkJCQkpLg0KKwkJCQk8L2xpPg0KKwkJCTwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJXaGljaCB0YWtzIGNvdWxkIEkgcG90ZW50aWFsbHkgd29yayBvbj8iPjxzdHJvbmc+V2hpY2ggdGFrcyBjb3VsZCBJIHBvdGVudGlhbGx5IHdvcmsgb24/PC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJTm8gbWF0dGVyIGlmIHlvdSB3YW50IHRvIHNoYXJlIHlvdXIgZXhwZXJpZW5jZXMsIGltcHJvdmUNCisJCQkJZG9jdW1lbnRhdGlvbiwgbG9jYWxpemF0aW9uLCBjb2RlIEphdmEsIEFjdGlvblNjcmlwdCBvciBQSFAsIHRoZXJlDQorCQkJCWFyZSBkb3plbnMgb2YgYXJlYXMgd2hlcmUgeW91IGNhbiBmaW5kIHRhc2sgdG8gd29yayBvbiBhbmQgc2hhcmUNCisJCQkJd2l0aCBvdGhlcnMuDQorCQkJCTxiciAvPg0KKwkJCQk8YnIgLz4NCisJCQkJV2UgdHJpZWQgdG8gY29sbGVjdCBhIGxpc3Qgb2YgaWRlYXMgaW4gb3VyIHdpa2k6DQorCQkJCTxiciAvPg0KKwkJCQk8YSBocmVmPSJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9OZXcrY29tbWl0dGVycythbmQrZGV2ZWxvcGVycyt0YXNrK2lkZWErbGlzdCIgdGFyZ2V0PSJfQkxBTksiPmh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL05ldytjb21taXR0ZXJzK2FuZCtkZXZlbG9wZXJzK3Rhc2sraWRlYStsaXN0DQorCQkJCTwvYT4NCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJIb3cgZG8gSSBiZWNvbWUgYSBjb21taXR0ZXI/Ij48c3Ryb25nPkhvdyBkbyBJIGJlY29tZSBhIGNvbW1pdHRlcj88L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPklmIHlvdSdyZSBpbnRlcmVzdGVkIGluIGNvbW1pdHRpbmcgdG8gdGhlIHByb2plY3Q6IDwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx1bD4NCisJCQkJPGxpPg0KKwkJCQkJPHA+DQorCQkJCQkJWW91J2xsIG5lZWQgdG8gZmlsbCBvdXQgc29tZSBsZWdhbCBwYXBlcndvcmsgYW5kIGdvIHRocm91Z2gNCisJCQkJCQlhDQorCQkJCQkJcHJvY2VzcyB0byBnZXQgYW4gYXBhY2hlIGZvdW5kYXRpb24gY29tbWl0dGVyIGFjY291bnQ6IFNlZQ0KKwkJCQkJCTxhIGNsYXNzPSJleHRlcm5hbCIgcmVsPSJub2ZvbGxvdyIgaHJlZj0iaHR0cDovL2FwYWNoZS5vcmcvZGV2L25ldy1jb21taXR0ZXJzLWd1aWRlLmh0bWwiPg0KKwkJCQkJCQlOZXcgQ29tbWl0dGVycyBHdWlkZQ0KKwkJCQkJCTwvYT4NCisJCQkJCQksDQorCQkJCQkJPGEgY2xhc3M9ImV4dGVybmFsIiByZWw9Im5vZm9sbG93IiBocmVmPSJodHRwOi8vYXBhY2hlLm9yZy9kZXYvY29udHJpYnV0b3JzLmh0bWwiPiBDb250cmlidXRvcnM8L2E+DQorCQkJCQkJLCBhbmQNCisJCQkJCQk8YSBjbGFzcz0iZXh0ZXJuYWwiIHJlbD0ibm9mb2xsb3ciIGhyZWY9Imh0dHA6Ly9hcGFjaGUub3JnL2Rldi9jb21taXR0ZXJzLmh0bWwiPiBDb21taXR0ZXJzPC9hPg0KKwkJCQkJCWZvciBtb3JlIGRldGFpbHMuDQorCQkJCQk8L3A+DQorDQorCQkJCTwvbGk+DQorCQkJCTxsaT4NCisJCQkJCTxwPg0KKwkJCQkJCUFmdGVyIHlvdSd2ZSByZWNlaXZlZCBhbiBlbWFpbCBmcm9tDQorCQkJCQkJPGEgaHJlZj0ibWFpbHRvOnJvb3RAYXBhY2hlLm9yZyI+cm9vdEBhcGFjaGUub3JnPC9hPg0KKwkJCQkJCXdpdGggeW91ciBjb21taXR0ZXIgYWNjb3VudCBpbmZvcm1hdGlvbiwgY2hhbmdlIHlvdXIgaW5pdGlhbA0KKwkJCQkJCXBhc3N3b3JkOg0KKwkJCQkJCUxvZ2luIGJ5ICdzc2ggLWwgJmx0O3VzZXJuYW1lJmd0OyBwZW9wbGUuYXBhY2hlLm9yZyc7DQorCQkJCQkJcnVuDQorCQkJCQkJJ3Bhc3N3ZCc7DQorCQkJCQkJcnVuICdzdm5wYXNzd2QnLiBTZWUNCisJCQkJCQk8YSBjbGFzcz0iZXh0ZXJuYWwiIHJlbD0ibm9mb2xsb3ciIGhyZWY9Imh0dHA6Ly9hcGFjaGUub3JnL2Rldi92ZXJzaW9uLWNvbnRyb2wuaHRtbCI+Q29tbWl0dGVyIFN1YnZlcnNpb24gQWNjZXNzDQorCQkJCQkJPC9hPg0KKwkJCQkJCS4NCisJCQkJCTwvcD4NCisJCQkJPC9saT4NCisJCQkJPGxpPg0KKwkJCQkJPHA+DQorCQkJCQkJQ2hlY2sgb3V0IHRoZSBPcGVuTWVldGluZ3Mgc291cmNlcyBhbmQgdGVzdCB5b3VyIHN2biBhY2NvdW50Og0KKwkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9zdm4uYXBhY2hlLm9yZy92aWV3dmMvb3Blbm1lZXRpbmdzLyI+DQorCQkJCQkJCVN1YnZlcnNpb25SZXBvc2l0b3J5DQorCQkJCQkJPC9hPg0KKwkJCQkJCS4NCisJCQkJCTwvcD4NCisNCisJCQkJPC9saT4NCisNCisJCQk8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8IS0tIEZPT1RFUiAtLT4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGFsaWduPSJjZW50ZXIiPjxmb250IGNvbG9yPSIjMTIzNDY1IiBzaXplPSItMSI+PGVtPgorICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgJiMxNjk7IDIwMDMtMjAxMywgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisgICAgICAgICAgICAgICAgICAgIDwvZW0+PC9mb250PjwvZGl2PgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2JvZHk+CisgICAgPC9odG1sPgorPCEtLSBlbmQgdGhlIHByb2Nlc3NpbmcgLS0+CisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzLzU0ODgyLmpwZyBiL2RvY3MvaW1hZ2VzLzU0ODgyLmpwZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWNjMDM2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9pbWFnZXMvNTQ4ODIuanBnCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL0FyZ3VtZW50cy5wbmcgYi9kb2NzL2ltYWdlcy9Bcmd1bWVudHMucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0MjcyMzYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2ltYWdlcy9Bcmd1bWVudHMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL0RlYnVnQ29uZmlndXJhdGlvbnMucG5nIGIvZG9jcy9pbWFnZXMvRGVidWdDb25maWd1cmF0aW9ucy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzU3MmRkYQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvaW1hZ2VzL0RlYnVnQ29uZmlndXJhdGlvbnMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL0ZlYXR1cmVzX1NjcmVlbl9Db25mZXJlbmNlX1Jvb21fVGh1bWIucG5nIGIvZG9jcy9pbWFnZXMvRmVhdHVyZXNfU2NyZWVuX0NvbmZlcmVuY2VfUm9vbV9UaHVtYi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTlkZWNlOQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvaW1hZ2VzL0ZlYXR1cmVzX1NjcmVlbl9Db25mZXJlbmNlX1Jvb21fVGh1bWIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL05ld0NvbmZpZ3VyYXRpb24ucG5nIGIvZG9jcy9pbWFnZXMvTmV3Q29uZmlndXJhdGlvbi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDVmM2Q2MgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvaW1hZ2VzL05ld0NvbmZpZ3VyYXRpb24ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL1N1Z2FyQ1JNX0luc3RhbGxhdGlvbi5wbmcgYi9kb2NzL2ltYWdlcy9TdWdhckNSTV9JbnN0YWxsYXRpb24ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2NTJiN2IKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2ltYWdlcy9TdWdhckNSTV9JbnN0YWxsYXRpb24ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL2FwYWNoZS1pbmN1YmF0b3ItbG9nby1uby1ib3JkZXJzLnBuZyBiL2RvY3MvaW1hZ2VzL2FwYWNoZS1pbmN1YmF0b3ItbG9nby1uby1ib3JkZXJzLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmY0YTZjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9pbWFnZXMvYXBhY2hlLWluY3ViYXRvci1sb2dvLW5vLWJvcmRlcnMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL2FwYWNoZV9mZWF0aGVyLmdpZiBiL2RvY3MvaW1hZ2VzL2FwYWNoZV9mZWF0aGVyLmdpZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTBjM2U2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9pbWFnZXMvYXBhY2hlX2ZlYXRoZXIuZ2lmCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL2F1ZGlvX2FuZF92aWRlby5wbmcgYi9kb2NzL2ltYWdlcy9hdWRpb19hbmRfdmlkZW8ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzNWJiMTAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2ltYWdlcy9hdWRpb19hbmRfdmlkZW8ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL2JhY2t1cC5wbmcgYi9kb2NzL2ltYWdlcy9iYWNrdXAucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhYTRlOGEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2ltYWdlcy9iYWNrdXAucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL2NhbGVuZGFyLnBuZyBiL2RvY3MvaW1hZ2VzL2NhbGVuZGFyLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MWU5NDhlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9pbWFnZXMvY2FsZW5kYXIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL2NoYXQucG5nIGIvZG9jcy9pbWFnZXMvY2hhdC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2U5YzA0MAotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvaW1hZ2VzL2NoYXQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL2NoZWNrb3V0XzEucG5nIGIvZG9jcy9pbWFnZXMvY2hlY2tvdXRfMS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTUwODkxYQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvaW1hZ2VzL2NoZWNrb3V0XzEucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL2NoZWNrb3V0XzIucG5nIGIvZG9jcy9pbWFnZXMvY2hlY2tvdXRfMi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjMxMDUwYgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvaW1hZ2VzL2NoZWNrb3V0XzIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL2NoZWNrb3V0XzMucG5nIGIvZG9jcy9pbWFnZXMvY2hlY2tvdXRfMy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTRkMjFjZQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvaW1hZ2VzL2NoZWNrb3V0XzMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL2NoZWNrb3V0XzQucG5nIGIvZG9jcy9pbWFnZXMvY2hlY2tvdXRfNC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2ZjZjU3NgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvaW1hZ2VzL2NoZWNrb3V0XzQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL2NoZWNrb3V0XzUucG5nIGIvZG9jcy9pbWFnZXMvY2hlY2tvdXRfNS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTEwMjQyNgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvaW1hZ2VzL2NoZWNrb3V0XzUucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL2NoZWNrb3V0XzYucG5nIGIvZG9jcy9pbWFnZXMvY2hlY2tvdXRfNi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGRkOTE4OQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvaW1hZ2VzL2NoZWNrb3V0XzYucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL2NoZWNrb3V0XzcucG5nIGIvZG9jcy9pbWFnZXMvY2hlY2tvdXRfNy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDE2OGQ5MwotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvaW1hZ2VzL2NoZWNrb3V0XzcucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL2NoZWNrb3V0XzgucG5nIGIvZG9jcy9pbWFnZXMvY2hlY2tvdXRfOC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQ5NGJiNQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvaW1hZ2VzL2NoZWNrb3V0XzgucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL2NoZWNrb3V0XzkucG5nIGIvZG9jcy9pbWFnZXMvY2hlY2tvdXRfOS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjA4M2QwMAotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvaW1hZ2VzL2NoZWNrb3V0XzkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL2Nob29zZV9kaXZpY2UucG5nIGIvZG9jcy9pbWFnZXMvY2hvb3NlX2RpdmljZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWU2ZTMxYwotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvaW1hZ2VzL2Nob29zZV9kaXZpY2UucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL2NsdXN0ZXIxLnBuZyBiL2RvY3MvaW1hZ2VzL2NsdXN0ZXIxLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NzJmZmM0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9pbWFnZXMvY2x1c3RlcjEucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL2NsdXN0ZXIyLnBuZyBiL2RvY3MvaW1hZ2VzL2NsdXN0ZXIyLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDQ3ZTFkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9pbWFnZXMvY2x1c3RlcjIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL2N1dF9hZG1pbmlzdHJhdGlvbl9jb25maWd1cmF0aW9uLnBuZyBiL2RvY3MvaW1hZ2VzL2N1dF9hZG1pbmlzdHJhdGlvbl9jb25maWd1cmF0aW9uLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYTk5YzZjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9pbWFnZXMvY3V0X2FkbWluaXN0cmF0aW9uX2NvbmZpZ3VyYXRpb24ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL2N1dF9jb25mZXJlbmNlX3Jvb20ucG5nIGIvZG9jcy9pbWFnZXMvY3V0X2NvbmZlcmVuY2Vfcm9vbS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWE1MGEyNQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvaW1hZ2VzL2N1dF9jb25mZXJlbmNlX3Jvb20ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL2N1dF9maWxlX2V4cGxvcmVyLnBuZyBiL2RvY3MvaW1hZ2VzL2N1dF9maWxlX2V4cGxvcmVyLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTVkMGM3Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9pbWFnZXMvY3V0X2ZpbGVfZXhwbG9yZXIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL2N1dF9pbnRlZ3JhdGVkX2NhbGVuZGFyLnBuZyBiL2RvY3MvaW1hZ2VzL2N1dF9pbnRlZ3JhdGVkX2NhbGVuZGFyLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGIxNGQzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9pbWFnZXMvY3V0X2ludGVncmF0ZWRfY2FsZW5kYXIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL2N1dF9pbnRlZ3JhdGlvbl9hcGkucG5nIGIvZG9jcy9pbWFnZXMvY3V0X2ludGVncmF0aW9uX2FwaS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2NmNjI2NAotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvaW1hZ2VzL2N1dF9pbnRlZ3JhdGlvbl9hcGkucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL2N1dF9wcml2YXRlX21lc3NhZ2VzLnBuZyBiL2RvY3MvaW1hZ2VzL2N1dF9wcml2YXRlX21lc3NhZ2VzLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjAxZmZmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9pbWFnZXMvY3V0X3ByaXZhdGVfbWVzc2FnZXMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL2N1dF9yZWNvcmRpbmdzX3BsYXliYWNrLnBuZyBiL2RvY3MvaW1hZ2VzL2N1dF9yZWNvcmRpbmdzX3BsYXliYWNrLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTkxODdlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9pbWFnZXMvY3V0X3JlY29yZGluZ3NfcGxheWJhY2sucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL2Rhc2hib2FyZC5wbmcgYi9kb2NzL2ltYWdlcy9kYXNoYm9hcmQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2NDMxZjIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2ltYWdlcy9kYXNoYm9hcmQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL2Rlc2t0b3BzaGFyaW5nLnBuZyBiL2RvY3MvaW1hZ2VzL2Rlc2t0b3BzaGFyaW5nLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDc5NzhlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9pbWFnZXMvZGVza3RvcHNoYXJpbmcucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL2RydXBhbF9tb2R1bGVfY29uZmlndXJhdGlvbi5wbmcgYi9kb2NzL2ltYWdlcy9kcnVwYWxfbW9kdWxlX2NvbmZpZ3VyYXRpb24ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmZjNkMDQKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2ltYWdlcy9kcnVwYWxfbW9kdWxlX2NvbmZpZ3VyYXRpb24ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL2RydXBhbF9tb2R1bGVfaW5zdGFsbGF0aW9uLnBuZyBiL2RvY3MvaW1hZ2VzL2RydXBhbF9tb2R1bGVfaW5zdGFsbGF0aW9uLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYmEyMWIzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9pbWFnZXMvZHJ1cGFsX21vZHVsZV9pbnN0YWxsYXRpb24ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL2RydXBhbF9yb29tX2NvbmZpZ3VyYXRpb24ucG5nIGIvZG9jcy9pbWFnZXMvZHJ1cGFsX3Jvb21fY29uZmlndXJhdGlvbi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmIzNTc2MAotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvaW1hZ2VzL2RydXBhbF9yb29tX2NvbmZpZ3VyYXRpb24ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL2ZpbGVfc21hbC5wbmcgYi9kb2NzL2ltYWdlcy9maWxlX3NtYWwucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5ZGNjNDYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2ltYWdlcy9maWxlX3NtYWwucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL2luc3RhbGxhdGlvbl9pbnN0cnVjdGlvbnMucG5nIGIvZG9jcy9pbWFnZXMvaW5zdGFsbGF0aW9uX2luc3RydWN0aW9ucy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjRhYjA1YQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvaW1hZ2VzL2luc3RhbGxhdGlvbl9pbnN0cnVjdGlvbnMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL2xhbmdlZGl0b3Jfc2NyZWVuX3YyLnBuZyBiL2RvY3MvaW1hZ2VzL2xhbmdlZGl0b3Jfc2NyZWVuX3YyLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYmFmNDdkCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9pbWFnZXMvbGFuZ2VkaXRvcl9zY3JlZW5fdjIucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL2xkYXBfc2NyZWVuLnBuZyBiL2RvY3MvaW1hZ2VzL2xkYXBfc2NyZWVuLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjhiYmMzCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9pbWFnZXMvbGRhcF9zY3JlZW4ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL2xvZ28tMi5qcGcgYi9kb2NzL2ltYWdlcy9sb2dvLTIuanBnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzYzI1MTIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2ltYWdlcy9sb2dvLTIuanBnCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL21pY3JvX3NtYWxsLnBuZyBiL2RvY3MvaW1hZ2VzL21pY3JvX3NtYWxsLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTVjODMxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9pbWFnZXMvbWljcm9fc21hbGwucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL21vbml0b3JfYWRkLnBuZyBiL2RvY3MvaW1hZ2VzL21vbml0b3JfYWRkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hODE4MDY2Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9pbWFnZXMvbW9uaXRvcl9hZGQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL21vb2RsZV9hZGRfYWN0aXZpdHlfcGx1Z2luLnBuZyBiL2RvY3MvaW1hZ2VzL21vb2RsZV9hZGRfYWN0aXZpdHlfcGx1Z2luLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTk1OTkxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9pbWFnZXMvbW9vZGxlX2FkZF9hY3Rpdml0eV9wbHVnaW4ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL21vb2RsZV9jb25maWd1cmVfcGx1Z2luLnBuZyBiL2RvY3MvaW1hZ2VzL21vb2RsZV9jb25maWd1cmVfcGx1Z2luLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MGI1Y2JmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9pbWFnZXMvbW9vZGxlX2NvbmZpZ3VyZV9wbHVnaW4ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL21vb2RsZV9pbnN0YWxsX3BsdWdpbi5wbmcgYi9kb2NzL2ltYWdlcy9tb29kbGVfaW5zdGFsbF9wbHVnaW4ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczODE3MTIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2ltYWdlcy9tb29kbGVfaW5zdGFsbF9wbHVnaW4ucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL21vdXNlX2FkZC5wbmcgYi9kb2NzL2ltYWdlcy9tb3VzZV9hZGQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1YmNhYjUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2ltYWdlcy9tb3VzZV9hZGQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL3BlbmNpbF9hZGQucG5nIGIvZG9jcy9pbWFnZXMvcGVuY2lsX2FkZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTAyYmJlNgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvaW1hZ2VzL3BlbmNpbF9hZGQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL3BvbGwucG5nIGIvZG9jcy9pbWFnZXMvcG9sbC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWI1MWM5YgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvaW1hZ2VzL3BvbGwucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL3BvbGxyZXN1bHQucG5nIGIvZG9jcy9pbWFnZXMvcG9sbHJlc3VsdC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODhjMzhkZgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvaW1hZ2VzL3BvbGxyZXN1bHQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL3ByaXZhdF9tZXNzYWdlcy5wbmcgYi9kb2NzL2ltYWdlcy9wcml2YXRfbWVzc2FnZXMucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzOTkzNjYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2ltYWdlcy9wcml2YXRfbWVzc2FnZXMucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL3JlY29yZGluZ3NfdGltZWxlaW5lLnBuZyBiL2RvY3MvaW1hZ2VzL3JlY29yZGluZ3NfdGltZWxlaW5lLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41M2FlNjYyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9pbWFnZXMvcmVjb3JkaW5nc190aW1lbGVpbmUucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL3JpZ2h0X21hbmFnZW1lbnQucG5nIGIvZG9jcy9pbWFnZXMvcmlnaHRfbWFuYWdlbWVudC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGEyODdhNgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvaW1hZ2VzL3JpZ2h0X21hbmFnZW1lbnQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL3N5c3RlbV9iYWNrdXAucG5nIGIvZG9jcy9pbWFnZXMvc3lzdGVtX2JhY2t1cC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmZjMjk2NAotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvaW1hZ2VzL3N5c3RlbV9iYWNrdXAucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL3VzZXJfYWRkLnBuZyBiL2RvY3MvaW1hZ2VzL3VzZXJfYWRkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWFlOTliCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9pbWFnZXMvdXNlcl9hZGQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL3ZvdGUucG5nIGIvZG9jcy9pbWFnZXMvdm90ZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzE2ZmY4NgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvaW1hZ2VzL3ZvdGUucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW1hZ2VzL3doaXRlYm9hcmQucG5nIGIvZG9jcy9pbWFnZXMvd2hpdGVib2FyZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGU1MzkyZgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvaW1hZ2VzL3doaXRlYm9hcmQucG5nCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvY3MvaW5kZXguaHRtbCBiL2RvY3MvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iY2ExMjE0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9pbmRleC5odG1sCkBAIC0wLDAgKzEsMTI0MSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CisKKzwhLS0KK0NvcHlyaWdodCAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK3lvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCitodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworCis8IS0tIENvbnRlbnQgU3R5bGVzaGVldCBmb3IgU2l0ZSAtLT4KKworICAgICAgICAKKzwhLS0gc3RhcnQgdGhlIHByb2Nlc3NpbmcgLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDwhLS0gR0VORVJBVEVEIEZJTEUsIERPIE5PVCBFRElULCBFRElUIFRIRSBYTUwgRklMRSBJTiB4ZG9jcyBJTlNURUFEISAtLT4KKyAgICA8IS0tIE1haW4gUGFnZSBTZWN0aW9uIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8aHRtbD4KKyAgICAgICAgPGhlYWQ+CisgICAgICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIvPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSIKKwkJCVNlYmFzdGlhbiBXYWduZXIKKwkJIj4KKyAgICAgICAgICAgIDxtZXRhIG5hbWU9ImVtYWlsIiBjb250ZW50PSJzZWJhd2FnbmVyQGFwYWNoZS5vcmciPgorICAgICAgICAgICAgCisgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIDx0aXRsZT5BcGFjaGUgT3Blbk1lZXRpbmdzIC0gSG9tZTwvdGl0bGU+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3Mvb3Blbm1lZXRpbmdzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvanF1ZXJ5LXVpLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29pbi1zbGlkZXItc3R5bGVzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29sb3Jib3guY3NzIiAvPgorICAgICAgICAgICAgCisJCQk8IS0tIEFkZCBqUXVlcnkgbGlicmFyeSAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS0xLjcuMS5taW4uanMiPjwvc2NyaXB0PgorCQkKKwkJCTwhLS0gQWRkIGNvaW5zbGlkZXIgcGx1Z2lucyAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2NvaW4tc2xpZGVyLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTwhLS0gQWRkIGNvbG9yYm94IHBsdWdpbiAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS5jb2xvcmJveC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5jb3JlLmpzIj48L3NjcmlwdD4KKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkud2lkZ2V0LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmFjY29yZGlvbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQ+CisJCQkkKGZ1bmN0aW9uKCkgeworCQkJCSQoICIjYWNjb3JkaW9uIiApLmFjY29yZGlvbih7CisJCQkJCWF1dG9IZWlnaHQ6IGZhbHNlLAorCQkJCQluYXZpZ2F0aW9uOiB0cnVlLAorCQkJCQluYXZpZ2F0aW9uRmlsdGVyOiBmdW5jdGlvbiAoKSB7CisJCQkJCQl2YXIgc2lkZWJhckhyZWZBcnJheSA9IHRoaXMuaHJlZi5zcGxpdCgiLyIpOworICAgIAkJCQkJdmFyIHNpZGVCYXJMYXN0U3RyaW5nID0gc2lkZWJhckhyZWZBcnJheVtzaWRlYmFySHJlZkFycmF5Lmxlbmd0aCAtIDFdLnRvTG93ZXJDYXNlKCk7CisJCQkJCQkKKwkJCQkJCWlmIChzaWRlQmFyTGFzdFN0cmluZy5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJCQl9CisJCQkJCQkKKwkJCQkJCQkJCQkJCS8qIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgKi8KKwkJCQkJCXZhciBjdXJyZW50U2VjdGlvbiA9ICIiOworCQkJCQkJCisJCQkJCQl2YXIgY3VycmVudExvY2F0aW9uID0gIiI7CisJCQkJCQl2YXIgY3VycmVudExpbmsgPSAiIjsKKwkJCQkJCWlmIChmYWxzZSkgeworCQkJCQkJCisJCQkJCQl9CisgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luZGV4Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luZGV4Lmh0bWwiLnN1YnN0cigxLCAiL2luZGV4Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbGljZW5zZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9saWNlbnNlLmh0bWwiLnN1YnN0cigxLCAiL2xpY2Vuc2UuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIuc3Vic3RyKDEsICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2Rvd25sb2Fkcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kb3dubG9hZHMuaHRtbCIuc3Vic3RyKDEsICIvZG93bmxvYWRzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5zdWJzdHIoMSwgIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5zdGFsbGF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luc3RhbGxhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9pbnN0YWxsYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9VcGdyYWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1VwZ3JhZGUuaHRtbCIuc3Vic3RyKDEsICIvVXBncmFkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLnN1YnN0cigxLCAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29tbWFuZExpbmVBZG1pbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLnN1YnN0cigxLCAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZ2V0LWludm9sdmVkLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZ2V0LWludm9sdmVkLmh0bWwiLnN1YnN0cigxLCAiL2dldC1pbnZvbHZlZC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RlYW0tbGlzdC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3RlYW0tbGlzdC5odG1sIi5zdWJzdHIoMSwgIi90ZWFtLWxpc3QuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9tYWlsLWxpc3RzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbWFpbC1saXN0cy5odG1sIi5zdWJzdHIoMSwgIi9tYWlsLWxpc3RzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5zdWJzdHIoMSwgImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9zdm4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3N2bi5odG1sIi5zdWJzdHIoMSwgIi9zdm4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLnN1YnN0cigxLCAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kZXBlbmRlbmNpZXMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2RlcGVuZGVuY2llcy5odG1sIi5zdWJzdHIoMSwgIi9kZXBlbmRlbmNpZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVW5pdFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pVbml0VGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9KVW5pdFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NYW51YWxUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9NYW51YWxUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL01hbnVhbFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWxlYXNlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlbGVhc2VHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9SZWxlYXNlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJzaXRlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1dlYnNpdGVHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9XZWJzaXRlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU29hcFJlc3RBUEkuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1NvYXBSZXN0QVBJLmh0bWwiLnN1YnN0cigxLCAiL1NvYXBSZXN0QVBJLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdEFQSVNhbXBsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVzdEFQSVNhbXBsZS5odG1sIi5zdWJzdHIoMSwgIi9SZXN0QVBJU2FtcGxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGRhcEFuZEFEUy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTGRhcEFuZEFEUy5odG1sIi5zdWJzdHIoMSwgIi9MZGFwQW5kQURTLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRXJyb3JzVGFibGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0Vycm9yc1RhYmxlLmh0bWwiLnN1YnN0cigxLCAiL0Vycm9yc1RhYmxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01vb2RsZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Nb29kbGVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvTW9vZGxlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU2FrYWlQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU2FrYWlQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU2FrYWlQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KaXJhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0ppcmFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSmlyYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pvb21sYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Kb29tbGFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSm9vbWxhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRHJ1cGFsUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0RydXBhbFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9EcnVwYWxQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CaXRyaXhQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQml0cml4UGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0JpdHJpeFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU3VnYXJDUk1QbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWRtaW5lUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlZG1pbmVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvUmVkbWluZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0lCTURCMkNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0lCTURCMkNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9JQk1EQjJDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09yYWNsZUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09yYWNsZUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9PcmFjbGVDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL015U1FMQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTXlTUUxDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvTXlTUUxDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Bvc3RncmVzQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9zdGdyZXNDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvUG9zdGdyZXNDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9MYW5ndWFnZUVkaXRvci5odG1sIi5zdWJzdHIoMSwgIi9MYW5ndWFnZUVkaXRvci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVGltZVpvbmVIYW5kbGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIuc3Vic3RyKDEsICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRWRpdFRlbXBsYXRlcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIuc3Vic3RyKDEsICIvRWRpdFRlbXBsYXRlcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3J0U2V0dGluZ3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3J0U2V0dGluZ3MuaHRtbCIuc3Vic3RyKDEsICIvUG9ydFNldHRpbmdzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIuc3Vic3RyKDEsICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIuc3Vic3RyKDEsICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRGFzaGJvYXJkLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRGFzaGJvYXJkLmh0bWwiLnN1YnN0cigxLCAiL0Rhc2hib2FyZC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSG90S2V5cy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0hvdEtleXMuaHRtbCIuc3Vic3RyKDEsICIvSG90S2V5cy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJhcHBOYW1lUGF0aC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLnN1YnN0cigxLCAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9OYXZpZ2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTmF2aWdhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9OYXZpZ2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5zdWJzdHIoMSwgIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JUTVBTQW5kSFRUUFMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SVE1QU0FuZEhUVFBTLmh0bWwiLnN1YnN0cigxLCAiL1JUTVBTQW5kSFRUUFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIuc3Vic3RyKDEsICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIuc3Vic3RyKDEsICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DbHVzdGVyaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2x1c3RlcmluZy5odG1sIi5zdWJzdHIoMSwgIi9DbHVzdGVyaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dldFZlcnNpb25JbmZvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2V0VmVyc2lvbkluZm8uaHRtbCIuc3Vic3RyKDEsICIvR2V0VmVyc2lvbkluZm8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJICAgIAkJCQkJCisgICAgCQkJCQljdXJyZW50TGluayA9IGN1cnJlbnRMaW5rLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQljdXJyZW50TG9jYXRpb24gPSBjdXJyZW50TG9jYXRpb24udG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCQorCQkJCQkJcmV0dXJuIHNpZGVCYXJMYXN0U3RyaW5nID09IGN1cnJlbnRMaW5rKyIjIitjdXJyZW50TG9jYXRpb247CisJCQkJCX0KKwkJCQl9KTsKKwkJCX0pOworCQkJPC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwkJCQkkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsKKwkJCQkJJCgnLmZhbmN5Ym94LWJ1dHRvbnMnKS5jb2xvcmJveCh7cmVsOidmYW5jeWJveC1idXR0b25zJyx3aWR0aDoiNzUlIiwgaGVpZ2h0OiI3NSUifSk7CisJCQkJCSQoJyNhY2NvcmRpb24gYScpLmVhY2goZnVuY3Rpb24oKSB7CisJCQkJICAgICAgdmFyIGEgPSAkKHRoaXMpOworCQkJCSAgICAgIHZhciBocmVmID0gYS5hdHRyKCJocmVmIik7CisJCQkJICAgICAgaWYgKGhyZWYuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJICAgICAgCSAgdmFyIGNvbXBhcmVJdCA9IGhyZWYuc3Vic3RyKDIsIGhyZWYubGVuZ3RoKTsKKwkJCQkJICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZihjb21wYXJlSXQpIT0gLTEpIHsKKwkJCQkJICAgICAgIGEuYWRkQ2xhc3MoJ2FjdGl2ZScpOworCQkJCQkgICAgICB9CisJCQkJICAgICAgfQorCQkJCSAgICB9KTsKKwkJCQkJJCgnI2NvaW4tc2xpZGVyJykuY29pbnNsaWRlcih7IHdpZHRoOiA2NDAsaGVpZ2h0OiA0MDAsIGRlbGF5OiA0MDAwICB9KTsJCQkJCQorCQkJCX0pOworCQkJPC9zY3JpcHQ+CQorCQkJCQkJCisJCQk8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorCQkJCS5mYW5jeWJveC1jdXN0b20gLmZhbmN5Ym94LW91dGVyIHsKKwkJCQkJYm94LXNoYWRvdzogMCAwIDUwcHggIzIyMjsKKwkJCQl9CisJCQk8L3N0eWxlPgorICAgICAgICA8L2hlYWQ+CisKKyAgICAgICAgPGJvZHkgYmdjb2xvcj0iI2ZmZmZmZiIgdGV4dD0iIzAwMDAwMCIgbGluaz0iIzEyMzQ2NSIgdmxpbms9IiMxMjM0NjUiIGFsaW5rPSIjMDAwMDAwIj4gIAorICAgICAgICAJPGRpdiBjbGFzcz0ibWFpbmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAJPGRpdiBjbGFzcz0ic3VwZXJib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCI+CisgICAgICAgICAgICAgICAgPCEtLSBUT1AgSU1BR0UgLS0+CisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPgorPGEgaHJlZj0iaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnLyI+PGltZyBzcmM9Ii4vaW1hZ2VzL2xvZ28tMi5qcGciIGFsdD0iQXBhY2hlIE9wZW5NZWV0aW5ncyIgYm9yZGVyPSIwIi8+PC9hPgorPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiID4KKwk8YSBocmVmPSJkZW1vLmh0bWwiPkRlbW88L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iZG93bmxvYWRzLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+RG93bmxvYWQ8L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaW5zdGFsbGF0aW9uLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+SW5zdGFsbGF0aW9uPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTIiB0YXJnZXQ9Il9CTEFOSyI+V2lraTwvYT4KKwk8c3Bhbj4mbmJzcDs8L3NwYW4+Cis8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSI0Ij4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPCEtLSBMRUZUIFNJREUgTkFWSUdBVElPTiAtLT4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIiBub3dyYXA9Im5vd3JhcCI+CisKKyAgICAgICAgICAgICAgICAgICAgPCEtLSBzcGVjaWFsIEFDb24gTG9nbyAtIGxlYXZlIGhlcmUgZm9yIG5leHQgdGltZQorICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vYXBhY2hlY29uLmNvbS8yMDA1L1VTLyI+CisgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2FwYWNoZS5vcmcvaW1hZ2VzL2FjMjAwNXVzX2JsdWVfMTI1eDEyNS5qcGciIGhlaWdodD0iMTI1IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTI1IiBib3JkZXI9IjAiIGFsdD0iQXBhY2hlQ29uIFVTIDIwMDUiIC8+CisgICAgICAgICAgICAgICAgICAgIDwvYT4gIC0tPgorCisgICAgICAgICAgICAgICAgICAgPCEtLSByZWd1bGFyIG1lbnUgLS0+CisKKyAgICAgICAgICAgICAgICAgICAgCisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGRpdiBpZD0iYWNjb3JkaW9uIiBzdHlsZT0id2lkdGg6IDEwMCUiPgorICAgIAorICAgICAgICAgICAgCTxoMz48YSBocmVmPSIjR2VuZXJhbCI+R2VuZXJhbDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5kZXguaHRtbCI+SG9tZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbGljZW5zZS5odG1sIj5MaWNlbnNlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyI+QVNGPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kb3dubG9hZHMuaHRtbCI+RG93bmxvYWRzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCI+Q29tbWVyY2lhbCBTdXBwb3J0PC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnN0YWxsYXRpb25hbmRVcGdyYWRlIj5JbnN0YWxsYXRpb24gYW5kIFVwZ3JhZGU8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luc3RhbGxhdGlvbi5odG1sIj5JbnN0YWxsYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1VwZ3JhZGUuaHRtbCI+VXBncmFkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii5odHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyI+VHV0b3JpYWxzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db21tYW5kTGluZUFkbWluLmh0bWwiPkNvbW1hbmQgTGluZSBBZG1pbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29tbXVuaXR5Ij5Db21tdW5pdHk8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2dldC1pbnZvbHZlZC5odG1sIj5HZXQgSW52b2x2ZWQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3RlYW0tbGlzdC5odG1sIj5Db21taXR0ZXJzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9tYWlsLWxpc3RzLmh0bWwiPk1haWxpbmcgTGlzdHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyI+V2lraTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjRGV2ZWxvcG1lbnQiPkRldmVsb3BtZW50PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9zdm4uaHRtbCI+U291cmNlIENvZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIj5CdWdzIC8gSXNzdWVzIChKSVJBKTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZGVwZW5kZW5jaWVzLmh0bWwiPkRlcGVuZGVuY2llczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCI+QnVpbGQgSW5zdHJ1Y3Rpb25zPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KVW5pdFRlc3RpbmcuaHRtbCI+SlVuaXQgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTWFudWFsVGVzdGluZy5odG1sIj5NYW51YWwgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVsZWFzZUd1aWRlLmh0bWwiPlJlbGVhc2UgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1dlYnNpdGVHdWlkZS5odG1sIj5XZWJzaXRlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnRlZ3JhdGlvbiI+SW50ZWdyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1NvYXBSZXN0QVBJLmh0bWwiPlNPQVAvUkVTVCBBUEk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Jlc3RBUElTYW1wbGUuaHRtbCI+UkVTVCBBUEkgU2FtcGxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9MZGFwQW5kQURTLmh0bWwiPkxkYXAgYW5kIEFEUzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCI+Vm9JUCBhbmQgU0lQPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9FcnJvcnNUYWJsZS5odG1sIj5FcnJvcnMgdGFibGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI1BsdWdpbnMiPlBsdWdpbnM8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01vb2RsZVBsdWdpbi5odG1sIj5Nb29kbGUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TYWthaVBsdWdpbi5odG1sIj5TYWthaSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0ppcmFQbHVnaW4uaHRtbCI+SmlyYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pvb21sYVBsdWdpbi5odG1sIj5Kb29tbGEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9EcnVwYWxQbHVnaW4uaHRtbCI+RHJ1cGFsIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQml0cml4UGx1Z2luLmh0bWwiPkJpdHJpeCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCI+Q29uZmx1ZW5jZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiPlN1Z2FyQ1JNIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVkbWluZVBsdWdpbi5odG1sIj5SZWRtaW5lIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29uZmlndXJhdGlvbiI+Q29uZmlndXJhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+REIgU2FtcGxlIENvbmZpZ3VyYXRpb25zPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQXBhY2hlRGVyYnlDb25maWcuaHRtbCI+QXBhY2hlIERlcmJ5PC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JQk1EQjJDb25maWcuaHRtbCI+SUJNIERCMjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3JhY2xlQ29uZmlnLmh0bWwiPk9yYWNsZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTXlTUUxDb25maWcuaHRtbCI+TXlTUUw8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Bvc3RncmVzQ29uZmlnLmh0bWwiPlBvc3RncmVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Mb2NhbGl6YXRpb24gYW5kIGxhbmd1YWdlczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiPkludGVybmF0aW9uYWxpc2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9MYW5ndWFnZUVkaXRvci5odG1sIj5MYW5ndWFnZUVkaXRvcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vVGltZVpvbmVIYW5kbGluZy5odG1sIj5UaW1lWm9uZUhhbmRsaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9FZGl0VGVtcGxhdGVzLmh0bWwiPkVkaXRUZW1wbGF0ZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk5BVCBQb3J0IFNldHRpbmdzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9ydFNldHRpbmdzLmh0bWwiPlBvcnQgc2V0dGluZ3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlBlcmZvcm1hbmNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCI+SlZNIHBlcmZvcm1hbmNlIHR1bmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+VXNlciBJbnRlcmZhY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiPlRoZW1lczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRGFzaGJvYXJkLmh0bWwiPkRhc2hib2FyZDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCI+V2ViY2FtIHJlc29sdXRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCI+Um9vbSBsYXlvdXQgb3B0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSG90S2V5cy5odG1sIj5Ib3QgS2V5czwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q3VzdG9taXphdGlvbjwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmFwcE5hbWVQYXRoLmh0bWwiPldlYmFwcCBuYW1lL3BhdGg8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL05hdmlnYXRpb24uaHRtbCI+TmF2aWdhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIj5DYWxlbmRhciBhbmQgdGltZXpvbmU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCI+Q3VzdG9tIHJvb20gdHlwZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCI+Q3VzdG9tIGN0eXB0IG1lY2hhbmlzbTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCI+R2VuZXJhbCBDb25maWd1cmF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5TZWN1cml0eTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCI+UmVzdHJpY3RlZCBBY2Nlc3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1JUTVBTQW5kSFRUUFMuaHRtbCI+UlRNUFMgYW5kIEhUVFBTPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Db252ZXJ0ZXJzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIj5PcGVuT2ZmaWNlIENvbnZlcnRlcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIj5GRk1QRUcgVmVyc2lvbiBTd2l0Y2g8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNsdXN0ZXJpbmc8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DbHVzdGVyaW5nLmh0bWwiPkNsdXN0ZXJpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk1pc2M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZXRWZXJzaW9uSW5mby5odG1sIj5HZXQgdmVyc2lvbiBpbmZvPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAKKyAgICA8L2Rpdj4KKyAgICAgCisgICAgPGJyLz4KKyAgICAKKyAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iQXBhY2hlIE9wZW5NZWV0aW5ncyAtIEZlYXR1cmVzIGFuZCBvdmVydmlldyI+PHN0cm9uZz5BcGFjaGUgT3Blbk1lZXRpbmdzIC0gRmVhdHVyZXMgYW5kIG92ZXJ2aWV3PC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGlkPSJjb2luLXNsaWRlciI+DQorCQkJCTxhIGhyZWY9IiMiPg0KKwkJCQkJPGltZyBzcmM9ImltYWdlcy9jdXRfY29uZmVyZW5jZV9yb29tLnBuZyIgYWx0PSJDb25mZXJlbmNlIFJvb20iIC8+DQorCQkJCQk8c3Bhbj4NCisJCQkJCQk8Yj5BdWRpby9WaWRlbyBDb25mZXJlbmNpbmc8L2I+DQorCQkJCQkJPGJyIC8+DQorCQkJCQkJT3Blbk1lZXRpbmdzIGVuYWJsZXMgeW91IHRvIG1ha2UgQXVkaW8vVmlkZW8gY29uZmVyZW5jaW5nLg0KKwkJCQkJPC9zcGFuPg0KKwkJCQk8L2E+DQorDQorCQkJCTxhIGhyZWY9IiMiPg0KKwkJCQkJPGltZyBzcmM9ImltYWdlcy9jdXRfaW50ZWdyYXRlZF9jYWxlbmRhci5wbmciIGFsdD0iQ2FsZW5kYXIiIC8+DQorCQkJCQk8c3Bhbj4NCisJCQkJCQk8Yj5DYWxlbmRhcjwvYj4NCisJCQkJCQk8YnIgLz4NCisJCQkJCQlZb3UgY2FuIGNyZWF0ZSBtZWV0aW5ncyB3aXRoIHRoZSBpbnRlZ3JhdGVkIGNhbGVuZGFyLCBjb25mZXJlbmNlIHJvb21zIGFuZCBpbnZpdGF0aW9ucyBhcmUgYXV0b21hdGljYWxseSBzZW5kIHRvIGV2ZXJ5Ym9keQ0KKwkJCQkJPC9zcGFuPg0KKwkJCQk8L2E+DQorDQorCQkJCTxhIGhyZWY9IiMiPg0KKwkJCQkJPGltZyBzcmM9ImltYWdlcy9jdXRfZmlsZV9leHBsb3Jlci5wbmciIGFsdD0iRmlsZSBFeHBsb3JlciIgLz4NCisJCQkJCTxzcGFuPg0KKwkJCQkJCTxiPkZpbGUgRXhwbG9yZXI8L2I+DQorCQkJCQkJPGJyIC8+DQorCQkJCQkJRWFjaCByb29tIGhhcyBpdHMgb3duIEZpbGUtRXhwbG9yZXIuIEVhY2ggdXNlciBoYXMgaGlzIG93biBwcml2YXRlIGRyaXZlIGFuZCBhZGRpdGlvbmFsbHkgdGhlcmUgaXMgYSBwdWJsaWMgZHJpdmUgdG8gc2hhcmUgZmlsZXMgd2l0aCBvdGhlciBwYXJ0aWNpcGFudHMNCisJCQkJCTwvc3Bhbj4NCisJCQkJPC9hPg0KKw0KKwkJCQk8YSBocmVmPSIjIj4NCisJCQkJCTxpbWcgc3JjPSJpbWFnZXMvY3V0X2ludGVncmF0aW9uX2FwaS5wbmciIGFsdD0iSW50ZWdyYXRpb24gQVBJIiAvPg0KKwkJCQkJPHNwYW4+DQorCQkJCQkJPGI+SW50ZWdyYXRpb24gQVBJPC9iPg0KKwkJCQkJCTxiciAvPg0KKwkJCQkJCVRoZXJlIGlzIGEgU09BUC9SRVNUIEFQSSB0byBpbnRlZ3JhdGUgaW50byB5b3VyIHdlYnNpdGUgb3IgaW50cmFuZXQsIGFzIHdlbGwNCisJCQkJCQlhcyBMREFQL0FEUyBjb25uZWN0b3JzIGFuZCBWb0lQL0FzdGVyaXNrIGludGVncmF0aW9uIG1vZHVsZXMNCisJCQkJCTwvc3Bhbj4NCisJCQkJPC9hPg0KKw0KKwkJCQk8YSBocmVmPSIjIj4NCisJCQkJCTxpbWcgc3JjPSJpbWFnZXMvY3V0X3ByaXZhdGVfbWVzc2FnZXMucG5nIiBhbHQ9IlByaXZhdGUgbWVzc2FnZXMiIC8+DQorCQkJCQk8c3Bhbj4NCisJCQkJCQk8Yj5Qcml2YXRlIG1lc3NhZ2VzIGFuZCBjb250YWN0czwvYj4NCisJCQkJCQk8YnIgLz4NCisJCQkJCQlGcm9tIHRoZSBwcml2YXRlIG1lc3NhZ2UgY2VudGVyIHlvdSBjYW4gc2VuZCBpbnZpdGF0aW9ucyBieSBlbWFpbA0KKwkJCQkJCWFuZCBhdHRhY2ggbWVldGluZyBpbnZpdGF0aW9ucyB0byBldmVyeSBlbWFpbA0KKwkJCQkJPC9zcGFuPg0KKwkJCQk8L2E+DQorDQorCQkJCTxhIGhyZWY9IiMiPg0KKwkJCQkJPGltZyBzcmM9ImltYWdlcy9jdXRfYWRtaW5pc3RyYXRpb25fY29uZmlndXJhdGlvbi5wbmciIGFsdD0iQWRtaW5pc3RyYXRpb24iIC8+DQorCQkJCQk8c3Bhbj4NCisJCQkJCQk8Yj5BZG1pbmlzdHJhdGlvbiBhbmQgQ29uZmlndXJhdGlvbjwvYj4NCisJCQkJCQk8YnIgLz4NCisJCQkJCQlZb3UgY2FuIGNvbmZpZ3VyZSB1c2Vycywgcm9vbXMsIHVzZXJncm91cHMsIGNvbmZpZyBzZXR0aW5ncyBvcg0KKwkJCQkJCWVkaXQgbGFiZWxzIHdpdGggYSBXZWItRnJvbnRlbmQgaW50ZWdyYXRlZCBpbiB0aGUgYXBwbGljYXRpb24NCisJCQkJCTwvc3Bhbj4NCisJCQkJPC9hPg0KKw0KKwkJCQk8YSBocmVmPSIjIj4NCisJCQkJCTxpbWcgc3JjPSJpbWFnZXMvY3V0X3JlY29yZGluZ3NfcGxheWJhY2sucG5nIiBhbHQ9IlNoYXJlIGFuZCBSZWNvcmQiIC8+DQorCQkJCQk8c3Bhbj4NCisJCQkJCQk8Yj5TY3JlZW4gc2hhcmluZyBhbmQgUmVjb3JkaW5nPC9iPg0KKwkJCQkJCTxiciAvPg0KKwkJCQkJCVlvdSBjYW4gZG8gc2NyZWVuIHNoYXJpbmcgYXMgd2VsbCBhcyByZWNvcmRpbmcgb2Ygd2hvbGUgc2Vzc2lvbnMNCisJCQkJCQlpbmNsdWRpbmcgYXVkaW8vdmlkZW8uIFJlY29yZGluZ3MgY2FuIGJlIGRvd25sb2FkZWQgYXMgQVZJL0ZMViBvcg0KKwkJCQkJCXdhdGNoZWQgb25saW5lIGluIHRoZSBpbnRlZ3JhdGVkIHBsYXllci4NCisJCQkJCTwvc3Bhbj4NCisJCQkJPC9hPg0KKw0KKwkJCTwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+IE9wZW5tZWV0aW5ncyBwcm92aWRlcyB2aWRlbyBjb25mZXJlbmNpbmcsIGluc3RhbnQgbWVzc2FnaW5nLA0KKwkJCQl3aGl0ZSBib2FyZCwgY29sbGFib3JhdGl2ZSBkb2N1bWVudCBlZGl0aW5nIGFuZCBvdGhlciBncm91cHdhcmUNCisJCQkJdG9vbHMgdXNpbmcgQVBJIGZ1bmN0aW9ucyBvZiB0aGUgUmVkNSBTdHJlYW1pbmcgU2VydmVyIGZvciBSZW1vdGluZw0KKwkJCQlhbmQgU3RyZWFtaW5nLg0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQlPcGVuTWVldGluZ3MgaXMgYSBwcm9qZWN0IG9mIHRoZSBBcGFjaGUsIHRoZSBvbGQgcHJvamVjdA0KKwkJCQl3ZWJzaXRlIGF0DQorCQkJCTxhIGhyZWY9Imh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9vcGVubWVldGluZ3MvIiB0YXJnZXQ9Il9CTEFOSyI+R29vZ2xlQ29kZQ0KKwkJCQk8L2E+DQorCQkJCXdpbGwgcmVjZWl2ZSBubyB1cGRhdGVzIGFueW1vcmUuIFRoZSB3ZWJzaXRlIGF0IEFwYWNoZSBpcyB0aGUgb25seQ0KKwkJCQlwbGFjZSB0aGF0IHJlY2VpdmVzIHVwZGF0ZXMuDQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iTmV3cyI+PHN0cm9uZz5OZXdzPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkgICAgPHN0cm9uZz4NCisJCQkJCU9wZW5NZWV0aW5ncyAyLjEuMCBpcyByZWxlYXNlZCEgUGxlYXNlIGNoZWNrIDxhIGhyZWY9ImRvd25sb2Fkcy5odG1sIj5Eb3dubG9hZHMgcGFnZTwvYT4uIA0KKwkJCQkJKDIwMTMtMDQtMDEpDQorCQkJCTwvc3Ryb25nPg0KKwkJCQk8YnIgLz4NCisJCQkgICAgPHN0cm9uZz4NCisJCQkJCU9wZW5NZWV0aW5ncyBuZXcgVVJMLCB1cGRhdGUgeW91ciBmaWx0ZXJzIQ0KKwkJCQkJPGEgaHJlZj0iaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnIj5vcGVubWVldGluZ3MuYXBhY2hlLm9yZzwvYT4gaXMgdGhlIG5ldyBob21lLiANCisJCQkJCSgyMDEzLTAxLTI4KQ0KKwkJCQk8L3N0cm9uZz4NCisJCQkJPGJyIC8+DQorCQkJICAgIDxzdHJvbmc+DQorCQkJCQlPcGVuTWVldGluZ3Mgb24gdGhlIHJvYWQgdG8gZ3JhZHVhdGUgZnJvbSB0aGUgSW5jdWJhdG9yDQorCQkJCQk8YSBocmVmPSJodHRwczovL2Jsb2dzLmFwYWNoZS5vcmcvb3Blbm1lZXRpbmdzL2VudHJ5L29wZW5tZWV0aW5nc19vbl90aGVfcm9hZF90byIgdGFyZ2V0PSJfQkxBTksiIHJlbD0ibm9mb2xsb3ciPmF0IG91ciBibG9nPC9hPg0KKwkJCQkJKDIwMTItMTItMDcpDQorCQkJCTwvc3Ryb25nPg0KKwkJCQk8YnIgLz4NCisJCQkJPHN0cm9uZz4NCisJCQkJCVNvbWUgc2xpZGVzIGZyb20gb3VyIEZhc3QgRmVhdGhlciBUcmFjayBhdCB0aGUgQXBhY2hlQ29uIEV1cm9wZSAyMDEyIA0KKwkJCQkJPGEgaHJlZj0iaHR0cHM6Ly9ibG9ncy5hcGFjaGUub3JnL29wZW5tZWV0aW5ncy9lbnRyeS9vcGVubWVldGluZ3NfYXBhY2hlY29uX3ByZXNlbnRhdGlvbl9zbGlkZSIgdGFyZ2V0PSJfQkxBTksiIHJlbD0ibm9mb2xsb3ciPmF0IG91ciBibG9nPC9hPg0KKwkJCQkJKDIwMTItMTEtMTgpDQorCQkJCTwvc3Ryb25nPg0KKwkJCQk8YnIgLz4NCisJCQkJPHN0cm9uZz4NCisJCQkJCVVwZGF0ZTogQnVpbGRzIGFyZSBhdmFpbGFibGUgYXQNCisJCQkJCTxhIGhyZWY9Imh0dHBzOi8vYnVpbGRzLmFwYWNoZS5vcmcvdmlldy9NLVIvdmlldy9PcGVuTWVldGluZ3MvIiB0YXJnZXQ9Il9CTEFOSyIgcmVsPSJub2ZvbGxvdyI+YnVpbGRzLmFwYWNoZS5vcmc8L2E+DQorCQkJCQkoMjAxMi0wOC0wMykNCisJCQkJPC9zdHJvbmc+DQorCQkJCTxiciAvPg0KKwkJCQk8c3Ryb25nPg0KKwkJCQkJPGEgaHJlZj0iaHR0cHM6Ly9ibG9ncy5hcGFjaGUub3JnL29wZW5tZWV0aW5ncy9lbnRyeS9hcGFjaGVfb3Blbm1lZXRpbmdzXzJfMF9pbmN1YmF0aW5nIiB0YXJnZXQ9Il9CTEFOSyIgcmVsPSJub2ZvbGxvdyI+VmVyc2lvbiAyLjAgcmVsZWFzZWQ8L2E+DQorCQkJCQkoMjAxMi0wNy0yNikNCisJCQkJPC9zdHJvbmc+DQorCQkJCTxiciAvPg0KKwkJCQk8c3Ryb25nPk5ldyBjb21taXR0ZXI6IFRpbXVyIFRsZXVrZW5vdiAoMjAxMi0wMy0wNik8L3N0cm9uZz4NCisJCQkJPGJyIC8+DQorCQkJCTxzdHJvbmc+DQorCQkJCQk8YSBocmVmPSJodHRwOi8vZGVtby5vcGVubWVldGluZ3MuZGUiIHRhcmdldD0iX0JMQU5LIiByZWw9Im5vZm9sbG93Ij5EZW1vDQorCQkJCQkJc2VydmVyPC9hPg0KKwkJCQkJdXBkYXRlZCB0byByMTIzNjE3MiAoMjAxMi0wMS0yNikNCisJCQkJPC9zdHJvbmc+DQorCQkJCTxiciAvPg0KKwkJCQk8c3Ryb25nPk5ldyBjb21taXR0ZXI6IEdlcm1hbiBHcmVraG92ICgyMDExLTEyLTI2KTwvc3Ryb25nPg0KKwkJCQk8YnIgLz4NCisJCQkJPHN0cm9uZz5PcGVuTWVldGluZ3MgaGFzIGJlZW4gYWNjZXB0ZWQgaW50byB0aGUgQXBhY2hlIEluY3ViYXRvcg0KKwkJCQkJKDIwMTEtMTEtMTIpLg0KKwkJCQk8L3N0cm9uZz4NCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJDb21tdW5pdHkiPjxzdHJvbmc+Q29tbXVuaXR5PC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKwkJCQk8c3Ryb25nPldobyB3ZSBhcmU8L3N0cm9uZz4NCisJCQkJPGJsb2NrcXVvdGU+DQorCQkJCQk8YSBocmVmPSJ0ZWFtLWxpc3QuaHRtbCI+TGlzdCBvZiBjb21taXR0ZXJzPC9hPg0KKwkJCQkJLg0KKwkJCQk8L2Jsb2NrcXVvdGU+DQorCQkJPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKwkJCQk8c3Ryb25nPlVzZXJzITwvc3Ryb25nPg0KKwkJCQk8YmxvY2txdW90ZT4NCisJCQkJCVdlJ2QgbG92ZSB0byBoYXZlIHlvdSBpbnZvbHZlZC4gQ2hlY2sgb3V0IHRoZQ0KKwkJCQkJPGEgaHJlZj0iZ2V0LWludm9sdmVkLmh0bWwiPkdldCBpbnZvbHZlZDwvYT4NCisJCQkJCS4NCisJCQkJPC9ibG9ja3F1b3RlPg0KKwkJCTwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iRmVhdHVyZSBkZXRhaWxzIj48c3Ryb25nPkZlYXR1cmUgZGV0YWlsczwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgICA8aHIgc3R5bGU9IndpZHRoOjEwMCU7IGNvbG9yOiM5OTk5OTk7IGJhY2tncm91bmQtY29sb3I6Izk5OTk5OTsgaGVpZ2h0OjFweDsgYm9yZGVyOjBweDsiLz4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCTxoMz5BdWRpbyBhbmQgVmlkZW8gQ29uZmVyZW5jaW5nPC9oMz4KKwk8dGFibGUgYm9yZGVyPSIwIj4KKwkJPHRib2R5PgorCQkJPHRyPgorCQkJCTx0ZCBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyIgd2lkdGg9IjMwMCI+CisJCQkJCQkJCQkJCQkJCQkJCQk8cD4KKwkJCQkJCQk8YSBjbGFzcz0iZ3JvdXAxIGZhbmN5Ym94LWJ1dHRvbnMiIGhyZWY9ImltYWdlcy9GZWF0dXJlc19TY3JlZW5fQ29uZmVyZW5jZV9Sb29tX1RodW1iLnBuZyI+CisJCQkJCQkJCTxpbWcgc3JjPSJpbWFnZXMvRmVhdHVyZXNfU2NyZWVuX0NvbmZlcmVuY2VfUm9vbV9UaHVtYi5wbmciIGFsdD0iIiB3aWR0aD0iMjUwIiAKKwkJCQkJCQkJCWhlaWdodD0iMTc1IiAvPgorCQkJCQkJCTwvYT4KKwkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJPC90ZD4KKwkJCQk8dGQ+CisJCQkJCQkJCQkJCTxkaXY+CisJCQkJCQkJCQkJCQkJCQkJCTxkaXY+CisJCQkJCQkJCQkJCQkJPGRpdj4NCisJCQkJCVRoZXJlIGFyZSBmb3VyIG9wdGlvbnMgdG8gdXNlIE9wZW5NZWV0aW5ncyBhdWRpby92aWRlbyBmdW5jdGlvbnMsDQorCQkJCQl3aGljaCB5b3UgY2FuIHNlbGVjdCBkdXJpbmcgYSBjb25mZXJlbmNlIHNlc3Npb24uDQorCQkJCQk8dWw+DQorCQkJCQkJPGxpPmF1ZGlvICsgdmlkZW88L2xpPg0KKwkJCQkJCTxsaT5hdWRpbyBvbmx5PC9saT4NCisJCQkJCQk8bGk+dmlkZW8gb25seTwvbGk+DQorCQkJCQkJPGxpPnBpY3R1cmUgb25seTwvbGk+DQorCQkJCQk8L3VsPg0KKwkJCQkJQWRkaXRpb25hbCB5b3UgY2FuIGNoYW5nZSB2aWRlby0vYXVkaW8tcXVhbGl0eSwgY2hvb3NlIG11bHRpcGxlDQorCQkJCQljYW1lcmEgcmVzb2x1dGlvbnMgKDQ6MywgMTY6OSBvciAzOjIpDQorCQkJCQlhbmQgY2hvb3NlIHlvdXIgaW5wdXQgZGV2aWNlcy4NCisJCQkJPC9kaXY+CisJCQkJCQkJCQkJCQkJCQk8L3RkPgorCQkJPC90cj4KKwkgICAgPC90Ym9keT4KKwk8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCTxoMz5NZWV0aW5nIHJlY29yZGluZyBhbmQgU2NyZWVuIHNoYXJpbmc8L2gzPgorCTx0YWJsZSBib3JkZXI9IjAiPgorCQk8dGJvZHk+CisJCQk8dHI+CisJCQkJPHRkIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7IiB3aWR0aD0iMzAwIj4KKwkJCQkJCQkJCQkJCQkJCQkJCTxwPgorCQkJCQkJCTxhIGNsYXNzPSJncm91cDEgZmFuY3lib3gtYnV0dG9ucyIgaHJlZj0iaW1hZ2VzL2Rlc2t0b3BzaGFyaW5nLnBuZyI+CisJCQkJCQkJCTxpbWcgc3JjPSJpbWFnZXMvZGVza3RvcHNoYXJpbmcucG5nIiBhbHQ9IiIgd2lkdGg9IjE0MCIgCisJCQkJCQkJCQloZWlnaHQ9IjE1MCIgLz4KKwkJCQkJCQk8L2E+CisJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk8cD4KKwkJCQkJCQk8YSBjbGFzcz0iZ3JvdXAxIGZhbmN5Ym94LWJ1dHRvbnMiIGhyZWY9ImltYWdlcy9yZWNvcmRpbmdzX3RpbWVsZWluZS5wbmciPgorCQkJCQkJCQk8aW1nIHNyYz0iaW1hZ2VzL3JlY29yZGluZ3NfdGltZWxlaW5lLnBuZyIgYWx0PSIiIHdpZHRoPSIyMDAiIAorCQkJCQkJCQkJaGVpZ2h0PSIxMTUiIC8+CisJCQkJCQkJPC9hPgorCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk8L3RkPgorCQkJCTx0ZD4KKwkJCQkJCQkJCQkJPGRpdj4KKwkJCQkJCQkJCQkJCQkJCQkJPGRpdj4KKwkJCQkJCQkJCQkJCQkJCQkJPGRpdj4KKwkJCQkJCQkJCQkJCQk8ZGl2Pg0KKwkJCQkJPHVsPg0KKwkJCQkJCTxsaT5SZWNvcmRlZCBzZXNzaW9ucyBjb250YWluIGV2ZXJ5dGhpbmcgaW5jbHVkaW5nIHNvdW5kIHJlY29yZGVkDQorCQkJCQkJCWZyb20gYWxsIGF1ZGlvIHN0cmVhbXMgaW4gZXhhY3RseSB0aGUgd2F5IHlvdSd2ZSBzZWVuIGl0IGluIHRoZQ0KKwkJCQkJCQljb25mZXJlbmNlLg0KKwkJCQkJCTwvbGk+DQorCQkJCQk8L3VsPg0KKwkJCQkJPHVsPg0KKwkJCQkJCTxsaT5SZWNvcmRlZCBzZXNzaW9ucyBjYW4gYmUgZG93bmxvYWRlZCBhcyBBVkkvRkxWIGZpbGVzLjwvbGk+DQorCQkJCQk8L3VsPg0KKwkJCQkJPHVsPg0KKwkJCQkJCTxsaT5Qb3NzaWJpbGl0eSB0byBzZWxlY3QgYSBzY3JlZW4gYXJlYSBmb3Igc2hhcmluZy48L2xpPg0KKwkJCQkJPC91bD4NCisJCQkJCTx1bD4NCisJCQkJCQk8bGk+RGlmZmVyZW50IHF1YWxpdHkgc3RlcHMgZm9yIFNjcmVlbnNoYXJpbmcuPC9saT4NCisJCQkJCTwvdWw+DQorCQkJCQk8dWw+DQorCQkJCQkJPGxpPldhdGNoIGFuZCBvcmdhbml6ZSByZWNvcmRpbmdzIGluIGFuIGludGVncmF0ZWQgRHJhZyBhbmQgRHJvcA0KKwkJCQkJCQlGaWxlLUV4cGxvcmVyDQorCQkJCQkJPC9saT4NCisJCQkJCTwvdWw+DQorCQkJCTwvZGl2PgorCQkJCQkJCQkJCQkJCQkJPC90ZD4KKwkJCTwvdHI+CisJICAgIDwvdGJvZHk+CisJPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAk8aDM+RmlsZSBFeHBsb3JlcjwvaDM+CisJPHRhYmxlIGJvcmRlcj0iMCI+CisJCTx0Ym9keT4KKwkJCTx0cj4KKwkJCQk8dGQgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiIHdpZHRoPSIzMDAiPgorCQkJCQkJCQkJCQkJCQkJCQkJPHA+CisJCQkJCQkJPGEgY2xhc3M9Imdyb3VwMSBmYW5jeWJveC1idXR0b25zIiBocmVmPSJpbWFnZXMvZmlsZV9zbWFsLnBuZyI+CisJCQkJCQkJCTxpbWcgc3JjPSJpbWFnZXMvZmlsZV9zbWFsLnBuZyIgYWx0PSIiIHdpZHRoPSIxMzUiIAorCQkJCQkJCQkJaGVpZ2h0PSIyMDAiIC8+CisJCQkJCQkJPC9hPgorCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk8L3RkPgorCQkJCTx0ZD4KKwkJCQkJCQkJCQkJPGRpdj4KKwkJCQkJCQkJCQkJCQkJCQkJPGRpdj4KKwkJCQkJCQkJCQkJCQk8ZGl2Pg0KKwkJCQkJQWR2YW5jZWQgRmlsZS1FeHBsb3JlciBpbiBldmVyeSBjb25mZXJlbmNlIHJvb20sIERyYWcgYW5kIERyb3ANCisJCQkJCWludGVyZmFjZSBmb3IgbWFuYWdpbmcgdXBsb2FkZWQgZmlsZXMsIGluY2x1ZGluZyB0aGUgcG9zc2liaWxpdHkgdG8NCisJCQkJCWNyZWF0ZSBhIGRvY3VtZW50IHRyZWUgd2l0aCBmb2xkZXJzLg0KKwkJCQkJPGJyIC8+DQorCQkJCQk8YnIgLz4NCisJCQkJCVByaXZhdGUgYW5kIFB1YmxpYyBEcml2ZSBpbg0KKwkJCQkJRmlsZS1FeHBsb3Jlci4gVGhlIEZpbGUtRXhwbG9yZXIgaGFzIHR3bw0KKwkJCQkJZGlmZmVyZW50IHZpZXdzLCBvbmUgaXMgdGhlDQorCQkJCQk8Yj5Qcml2YXRlIERyaXZlPC9iPg0KKwkJCQkJYW5kIHRoZSBvdGhlciB0aGUNCisJCQkJCTxiPlB1YmxpYyBEcml2ZTwvYj4NCisJCQkJCS4gVGhlIFByaXZhdGUgRHJpdmUNCisJCQkJCWFsd2F5cyBjb250YWlucyB0aGUgc2FtZSBmaWxlcy4NCisJCQkJCVRob3NlIGZpbGVzIGFyZQ0KKwkJCQkJdmlzaWJsZSBvbmx5IHRvIHRoZQ0KKwkJCQkJdXNlciBjdXJyZW50bHkgbG9nZ2VkaW4uIFRoZQ0KKwkJCQkJUHVibGljIERyaXZlIGlzIG5vdA0KKwkJCQkJYm91bmQgdG8gdGhlIHVzZXIsDQorCQkJCQlidXQgdG8gdGhlIGNvbmZlcmVuY2Ugcm9vbQ0KKwkJCQkJaW5zdGVhZC4gQWxsIHVzZXJzIGluDQorCQkJCQl0aGUgY29uZmVyZW5jZSByb29tDQorCQkJCQloYXZlIGFjY2VzcyB0byB0aGUgUHVibGljDQorCQkJCQlEcml2ZS4NCisJCQkJPC9kaXY+CisJCQkJCQkJCQkJCQkJCQk8L3RkPgorCQkJPC90cj4KKwkgICAgPC90Ym9keT4KKwk8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCTxoMz5Nb2RlcmF0aW5nIFN5c3RlbTwvaDM+CisJPHRhYmxlIGJvcmRlcj0iMCI+CisJCTx0Ym9keT4KKwkJCTx0cj4KKwkJCQk8dGQgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiIHdpZHRoPSIzMDAiPgorCQkJCQkJCQkJCQkJCQkJCQkJPHA+CisJCQkJCQkJPGEgY2xhc3M9Imdyb3VwMSBmYW5jeWJveC1idXR0b25zIiBocmVmPSJpbWFnZXMvcmlnaHRfbWFuYWdlbWVudC5wbmciPgorCQkJCQkJCQk8aW1nIHNyYz0iaW1hZ2VzL3JpZ2h0X21hbmFnZW1lbnQucG5nIiBhbHQ9IiIgd2lkdGg9IjEzNSIgCisJCQkJCQkJCQloZWlnaHQ9IjIxNiIgLz4KKwkJCQkJCQk8L2E+CisJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCTwvdGQ+CisJCQkJPHRkPgorCQkJCQkJCQkJCQk8ZGl2PgorCQkJCQkJCQkJCQkJCQkJCQk8ZGl2PgorCQkJCQkJCQkJCQkJCTxkaXY+DQorCQkJCQlEdXJpbmcgYSBjb25mZXJlbmNlLCB0aGUgbW9kZXJhdG9yIGNhbiBhZGp1c3QgdGhlIHVzZXIgcGVybWlzc2lvbg0KKwkJCQkJdG8gZXZlcnkgdXNlciBpbmRpdmlkdWFsbHkgLg0KKwkJCQkJPHVsPg0KKwkJCQkJCTxsaT4NCisJCQkJCQkJPGltZyBjbGFzcz0iYWxpZ25ub25lIiB0aXRsZT0iQWxsb3cgbW9kYXJhdGlvbiIgc3JjPSJpbWFnZXMvdXNlcl9hZGQucG5nIiBhbHQ9IiIgLz4NCisJCQkJCQkJQWxsb3cvRGVueSBtb2RlcmF0aW9uDQorCQkJCQkJPC9saT4NCisJCQkJCQk8bGk+DQorCQkJCQkJCTxpbWcgY2xhc3M9ImFsaWdubm9uZSIgdGl0bGU9IldoaXRlYm9hcmQgQWNjZXNzIiBzcmM9ImltYWdlcy9wZW5jaWxfYWRkLnBuZyIgYWx0PSIiIC8+DQorCQkJCQkJCUFsbG93L0RlbnkgdG8gZHJhdyBvbiB3aGl0ZSBib2FyZA0KKwkJCQkJCTwvbGk+DQorCQkJCQkJPGxpPg0KKwkJCQkJCQk8aW1nIGNsYXNzPSJhbGlnbm5vbmUiIHRpdGxlPSJTY3JlZW5zaGFyZSIgc3JjPSJpbWFnZXMvbW9uaXRvcl9hZGQucG5nIiBhbHQ9IiIgLz4NCisJCQkJCQkJQWxsb3cvRGVueSBzY3JlZW4tc2hhcmluZy9yZWNvcmQgc2NyZWVuDQorCQkJCQkJPC9saT4NCisJCQkJCQk8bGk+DQorCQkJCQkJCTxpbWcgY2xhc3M9ImFsaWdubm9uZSIgdGl0bGU9IlJlbW90ZSBjb250cm9sIiBzcmM9ImltYWdlcy9tb3VzZV9hZGQucG5nIiBhbHQ9IiIgLz4NCisJCQkJCQkJQWxsb3cvRGVueSBSZW1vdGUgQ29udHJvbCBTY3JlZW4NCisJCQkJCQk8L2xpPg0KKwkJCQkJCTxsaT4NCisJCQkJCQkJPGltZyBjbGFzcz0iYWxpZ25ub25lIiB0aXRsZT0iUmVtb3RlIGNvbnRyb2wiIHNyYz0iaW1hZ2VzL21pY3JvX3NtYWxsLnBuZyIgYWx0PSIiIC8+DQorCQkJCQkJCUdpdmUgZXhjbHVzaXZlIGF1ZGlvIHRvIG90aGVycyBvciBzZWxmDQorCQkJCQkJPC9saT4NCisJCQkJCQk8bGk+DQorCQkJCQkJCTxpbWcgY2xhc3M9ImFsaWdubm9uZSIgdGl0bGU9IlZpZGVvIEF1ZGlvIiBzcmM9ImltYWdlcy9hdWRpb19hbmRfdmlkZW8ucG5nIiBhbHQ9IiIgLz4NCisJCQkJCQkJKFJlLSkgU3RhcnQgQXVkaW8sIFZpZGVvIG9yIERldmljZSBzZXR0aW5ncw0KKwkJCQkJCTwvbGk+DQorCQkJCQk8L3VsPg0KKwkJCQk8L2Rpdj4KKwkJCQkJCQkJCQkJCQkJCTwvdGQ+CisJCQk8L3RyPgorCSAgICA8L3Rib2R5PgorCTwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJPGgzPk11bHRpLVdoaXRlYm9hcmQgYW5kIENoYXQ8L2gzPgorCTx0YWJsZSBib3JkZXI9IjAiPgorCQk8dGJvZHk+CisJCQk8dHI+CisJCQkJPHRkIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7IiB3aWR0aD0iMzAwIj4KKwkJCQkJCQkJCQkJCQkJCQkJCTxwPgorCQkJCQkJCTxhIGNsYXNzPSJncm91cDEgZmFuY3lib3gtYnV0dG9ucyIgaHJlZj0iaW1hZ2VzL3doaXRlYm9hcmQucG5nIj4KKwkJCQkJCQkJPGltZyBzcmM9ImltYWdlcy93aGl0ZWJvYXJkLnBuZyIgYWx0PSIiIHdpZHRoPSIyNDAiIAorCQkJCQkJCQkJaGVpZ2h0PSIxNjUiIC8+CisJCQkJCQkJPC9hPgorCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJPHA+CisJCQkJCQkJPGEgY2xhc3M9Imdyb3VwMSBmYW5jeWJveC1idXR0b25zIiBocmVmPSJpbWFnZXMvY2hhdC5wbmciPgorCQkJCQkJCQk8aW1nIHNyYz0iaW1hZ2VzL2NoYXQucG5nIiBhbHQ9IiIgd2lkdGg9IjI0MCIgCisJCQkJCQkJCQloZWlnaHQ9IjY4IiAvPgorCQkJCQkJCTwvYT4KKwkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJPC90ZD4KKwkJCQk8dGQ+CisJCQkJCQkJCQkJCTxkaXY+CisJCQkJCQkJCQkJCQkJCQkJCTxkaXY+CisJCQkJCQkJCQkJCQkJCQkJCTxkaXY+CisJCQkJCQkJCQkJCQkJPGRpdj4NCisJCQkJCU11bHRpLVdoaXRlYm9hcmQsIHlvdSBjYW4gYWRkIG5ldyB3aGl0ZWJvYXJkIGluc3RhbmNlcywgZWFjaA0KKwkJCQkJd2hpdGUNCisJCQkJCWJvYXJkIGNhbiBoYXZlIHRoZSBmdWxsIHJhbmdlIG9mIHRvb2xzIGFuZCBkb2N1bWVudHMgaW5zaWRlLg0KKwkJCQkJPGJyIC8+DQorCQkJCQk8YnIgLz4NCisJCQkJCVNhdmUgd2hpdGUgYm9hcmRzLiBZb3UgY2FuIHNhdmUgZWFjaCB3aGl0ZWJvYXJkIGluc3RhbmNlIGFzIGEgZmlsZS4NCisJCQkJCVRoZSBmaWxlIGlzIGxvY2F0ZWQgaW4gdGhlIEZpbGUtRXhwbG9yZXIgYW5kIGNhbiBiZSBkcmFnIG4nIGRyb3AnZWQNCisJCQkJCXRvIHRoZSB3aGl0ZSBib2FyZCBhZ2FpbiBhbmQgb3JnYW5pemVkIGxpa2UgYW55IG90aGVyIGRvY3VtZW50LA0KKwkJCQkJaW1hZ2Ugb3IgZm9sZGVyLg0KKwkJCQkJPGJyIC8+DQorCQkJCQk8YnIgLz4NCisJCQkJCVdoaXRlIGJvYXJkIHdpdGggZHJhd2luZywgd3JpdGluZywgRHJhZyBuJyBEcm9wLCBSZXNpemluZywgSW1hZ2VzDQorCQkJCQkoRHJhZyBuJw0KKwkJCQkJRHJvcCBmcm9tIEZpbGUtRXhwbG9yZXIpLCBTeW1ib2wocykvQ2xpcGFydHMgLg0KKwkJCQkJPGJyIC8+DQorCQkJCQk8YnIgLz4NCisJCQkJCUZ1bGwtZml0IGRvZXMgcmVzY2FsZSB0aGUgZG9jdW1lbnQgb24gdGhlIHNjcmVlbiB0byBiZSAxMDAlIHZpc2libGUNCisJCQkJCW9uIGFsbA0KKwkJCQkJc2NyZWVucyBubyBtYXR0ZXIgd2hhdCBraW5kIG9mIHNjcmVlbiByZXNvbHV0aW9uIGRpZmZlcmVudA0KKwkJCQkJdXNlcnMNCisJCQkJCWhhdmUuDQorCQkJCQk8YnIgLz4NCisJCQkJCTxiciAvPg0KKwkJCQkJWW91IGNhbiBpbXBvcnQgZnJvbSBhIHdpZGUgcmFuZ2Ugb2YgZG9jdW1lbnQgZm9ybWF0cyAoUERGLCBET0MsDQorCQkJCQlPRFQsIFBQVCwgZXQgY2V0ZXJhLi4uKQ0KKwkJCQk8L2Rpdj4KKwkJCQkJCQkJCQkJCQkJCTwvdGQ+CisJCQk8L3RyPgorCSAgICA8L3Rib2R5PgorCTwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJPGgzPlVzZXIgYW5kIHJvb20gbWFuYWdlbWVudDwvaDM+CisJPHRhYmxlIGJvcmRlcj0iMCI+CisJCTx0Ym9keT4KKwkJCTx0cj4KKwkJCQk8dGQgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiIHdpZHRoPSIzMDAiPgorCQkJCQkJCQkJCQkJCQkJCQkJPHA+CisJCQkJCQkJPGEgY2xhc3M9Imdyb3VwMSBmYW5jeWJveC1idXR0b25zIiBocmVmPSJpbWFnZXMvZGFzaGJvYXJkLnBuZyI+CisJCQkJCQkJCTxpbWcgc3JjPSJpbWFnZXMvZGFzaGJvYXJkLnBuZyIgYWx0PSIiIHdpZHRoPSIyNTAiIAorCQkJCQkJCQkJaGVpZ2h0PSIxMzAiIC8+CisJCQkJCQkJPC9hPgorCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk8L3RkPgorCQkJCTx0ZD4KKwkJCQkJCQkJCQkJPGRpdj4KKwkJCQkJCQkJCQkJCQkJCQkJPGRpdj4KKwkJCQkJCQkJCQkJCQk8ZGl2Pg0KKwkJCQkJWW91IGNhbiBtYW5hZ2UgdXNlcnMgYW5kIG11bHRpcGxlIG9yZ2FuaXphdGlvbnMgaW4gYSBzaW5nbGUNCisJCQkJCU9wZW5NZWV0aW5ncyBpbnN0YW5jZS4gWW91IGNhbiBhbHNvIGNyZWF0ZSB1c2VycyB0aGF0IG9ubHkgaGF2ZQ0KKwkJCQkJYWNjZXNzIHZpYSB0aGUgU09BUC1BUEkuDQorCQkJCQk8YnIgLz4NCisJCQkJCTxiciAvPg0KKwkJCQkJTXlSb29tcyBzZWN0aW9uLiBFYWNoIHVzZXIgaGFzIGJ5IGRlZmF1bHQgMiBwZXJzb25hbCByb29tcyB0aGF0DQorCQkJCQlhcmUNCisJCQkJCWFsd2F5cyBhY2Nlc3NpYmxlIGV4Y2x1c2l2ZWx5IGZvciB0aGF0IHVzZXIuIFRoZXJlIGFyZSBidXR0b25zDQorCQkJCQl0bw0KKwkJCQkJZW50ZXIgdGhvc2Ugcm9vbXMgZnJvbSB0aGUgRGFzaGJvYXJkLg0KKwkJCQkJPGJyIC8+DQorCQkJCQk8YnIgLz4NCisJCQkJCVlvdSBjYW4gYXNzaWduIGNvbmZlcmVuY2Ugcm9vbSB0byBhbGwgdXNlcnMsIG9yIHlvdSBjYW4gYXNzaWduIHRoZW0NCisJCQkJCW9ubHkgdG8gc3BlY2lmaWMgdXNlci1ncm91cHMuDQorCQkJCTwvZGl2PgorCQkJCQkJCQkJCQkJCQkJPC90ZD4KKwkJCTwvdHI+CisJICAgIDwvdGJvZHk+CisJPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAk8aDM+UHJpdmF0ZSBtZXNzYWdlIGNlbnRlcjwvaDM+CisJPHRhYmxlIGJvcmRlcj0iMCI+CisJCTx0Ym9keT4KKwkJCTx0cj4KKwkJCQk8dGQgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiIHdpZHRoPSIzMDAiPgorCQkJCQkJCQkJCQkJCQkJCQkJPHA+CisJCQkJCQkJPGEgY2xhc3M9Imdyb3VwMSBmYW5jeWJveC1idXR0b25zIiBocmVmPSJpbWFnZXMvcHJpdmF0X21lc3NhZ2VzLnBuZyI+CisJCQkJCQkJCTxpbWcgc3JjPSJpbWFnZXMvcHJpdmF0X21lc3NhZ2VzLnBuZyIgYWx0PSIiIHdpZHRoPSIyMzAiIAorCQkJCQkJCQkJaGVpZ2h0PSIxMjUiIC8+CisJCQkJCQkJPC9hPgorCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQk8L3RkPgorCQkJCTx0ZD4KKwkJCQkJCQkJCQkJPGRpdj4KKwkJCQkJCQkJCQkJCQkJCQkJPGRpdj4KKwkJCQkJCQkJCQkJCQk8ZGl2Pg0KKwkJCQkJU2VuZCB1c2VycyBtZXNzYWdlcyBhbmQgb3JnYW5pemUgdGhlbSBpbiBmb2xkZXJzLiBZb3UgY2FuIGJvb2sNCisJCQkJCWNvbmZlcmVuY2Ugcm9vbXMgYnkgc2VuZGluZyBwcml2YXRlIG1lc3NhZ2VzLiBUaGUgYm9va2VkIGV2ZW50DQorCQkJCQlhdXRvbWF0aWNhbGx5IGlzIGluIHlvdXIgYW5kIHRoZSBwYXJ0aWNpcGFudHMgY2FsZW5kYXIsIGNoYW5nZXMgdG8NCisJCQkJCXRoYXQgZXZlbnQgd2lsbCBiZSBwb3B1bGF0ZWQgdG8gYWxsIHVzZXJzIGJvb2tlZCB0byB0aGUgZXZlbnQuDQorCQkJCQk8YnIgLz4NCisJCQkJCTxiciAvPg0KKwkJCQkJVXNlciBjb250YWN0cywgeW91IGNhbiBzZWFyY2ggdXNlcnMgYW5kIGFkZCB0aGVtIHRvIHlvdXIgY29udGFjdHMuDQorCQkJCQlZb3UNCisJCQkJCWNhbiBldmVuIGdpdmUgdGhlbSB0aGUgcmlnaHQgdG8gc2VlIHlvdXIgY2FsZW5kYXIuDQorCQkJCTwvZGl2PgorCQkJCQkJCQkJCQkJCQkJPC90ZD4KKwkJCTwvdHI+CisJICAgIDwvdGJvZHk+CisJPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAk8aDM+UGxhbiBtZWV0aW5ncyB3aXRoIGludGVncmF0ZWQgY2FsZW5kYXI8L2gzPgorCTx0YWJsZSBib3JkZXI9IjAiPgorCQk8dGJvZHk+CisJCQk8dHI+CisJCQkJPHRkIHN0eWxlPSJ0ZXh0LWFsaWduOiBjZW50ZXI7IiB3aWR0aD0iMzAwIj4KKwkJCQkJCQkJCQkJCQkJCQkJCTxwPgorCQkJCQkJCTxhIGNsYXNzPSJncm91cDEgZmFuY3lib3gtYnV0dG9ucyIgaHJlZj0iaW1hZ2VzL2NhbGVuZGFyLnBuZyI+CisJCQkJCQkJCTxpbWcgc3JjPSJpbWFnZXMvY2FsZW5kYXIucG5nIiBhbHQ9IiIgd2lkdGg9IjIwMCIgCisJCQkJCQkJCQloZWlnaHQ9IjExNSIgLz4KKwkJCQkJCQk8L2E+CisJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCTwvdGQ+CisJCQkJPHRkPgorCQkJCQkJCQkJCQk8ZGl2PgorCQkJCQkJCQkJCQkJCQkJCQk8ZGl2PgorCQkJCQkJCQkJCQkJCTxkaXY+DQorCQkJCQk8dWw+DQorCQkJCQkJPGxpPlBsYW4geW91ciBjb25mZXJlbmNpbmcgYW5kIGludml0ZSBhdHRlbmRlZXMgZnJvbSBPcGVuTWVldGluZ3MNCisJCQkJCQkJb3IgRXh0ZXJuYWwuDQorCQkJCQkJPC9saT4NCisJCQkJCQk8bGk+VGhlIGludml0ZWQgYXR0ZW5kZWVzIHdpbGwgcmVjaWV2ZSBhbiBFLW1haWwgd2l0aCBkZXRhaWxzIHRvDQorCQkJCQkJCXRoZSBtZWV0aW5ncyBhbmQgYSBsaW5rIHdpdGggYSBzZWN1cmUgaGFzaCB0byB0aGUgY29uZmVyZW5jZQ0KKwkJCQkJCQlyb29tLg0KKwkJCQkJCTwvbGk+DQorCQkJCQkJPGxpPlNoYXJlIHlvdXIgY2FsZW5kYXIgd2l0aCB5b3VyIGNvbnRhY3RzLjwvbGk+DQorCQkJCQk8L3VsPg0KKwkJCQk8L2Rpdj4KKwkJCQkJCQkJCQkJCQkJCTwvdGQ+CisJCQk8L3RyPgorCSAgICA8L3Rib2R5PgorCTwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAJPGgzPlBvbGxzIGFuZCBWb3RlczwvaDM+CisJPHRhYmxlIGJvcmRlcj0iMCI+CisJCTx0Ym9keT4KKwkJCTx0cj4KKwkJCQk8dGQgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiIHdpZHRoPSIzMDAiPgorCQkJCQkJCQkJCQkJCQkJCQkJPHA+CisJCQkJCQkJPGEgY2xhc3M9Imdyb3VwMSBmYW5jeWJveC1idXR0b25zIiBocmVmPSJpbWFnZXMvcG9sbC5wbmciPgorCQkJCQkJCQk8aW1nIHNyYz0iaW1hZ2VzL3BvbGwucG5nIiBhbHQ9IiIgd2lkdGg9IjI1MCIgCisJCQkJCQkJCQloZWlnaHQ9IjI1MCIgLz4KKwkJCQkJCQk8L2E+CisJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCTwvdGQ+CisJCQkJPHRkPgorCQkJCQkJCQkJCQk8ZGl2PgorCQkJCQkJCQkJCQkJCQkJCQk8ZGl2PgorCQkJCQkJCQkJCQkJCTxkaXY+DQorCQkJCQlZb3UgY2FuIGNyZWF0ZSBhIHBvbGwgd2l0aCB5ZXMvbm8gb3IgMS0xMCBxdWVzdGlvbnMsIGxldCB0aGUNCisJCQkJCXVzZXINCisJCQkJCXZvdGUgYW5kIHNlZSB0aGUgdm90aW5nIHJlc3VsdHMuDQorCQkJCQk8YnIgLz4NCisJCQkJCTxiciAvPg0KKwkJCQkJUG9sbHMgY2FuIGJlIHN0b3JlZCBhbmQgcmVzdWx0cyB2aWV3ZWQgYXMgcGllLWNoYXJ0DQorCQkJCTwvZGl2PgorCQkJCQkJCQkJCQkJCQkJPC90ZD4KKwkJCTwvdHI+CisJICAgIDwvdGJvZHk+CisJPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAk8aDM+QmFja3VwPC9oMz4KKwk8dGFibGUgYm9yZGVyPSIwIj4KKwkJPHRib2R5PgorCQkJPHRyPgorCQkJCTx0ZCBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyIgd2lkdGg9IjMwMCI+CisJCQkJCQkJCQkJCQkJCQkJCQk8cD4KKwkJCQkJCQk8YSBjbGFzcz0iZ3JvdXAxIGZhbmN5Ym94LWJ1dHRvbnMiIGhyZWY9ImltYWdlcy9iYWNrdXAucG5nIj4KKwkJCQkJCQkJPGltZyBzcmM9ImltYWdlcy9iYWNrdXAucG5nIiBhbHQ9IiIgd2lkdGg9IjI1MCIgCisJCQkJCQkJCQloZWlnaHQ9IjYwIiAvPgorCQkJCQkJCTwvYT4KKwkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJPC90ZD4KKwkJCQk8dGQ+CisJCQkJCQkJCQkJCTxkaXY+CisJCQkJCQkJCQkJCQkJCQkJCTxkaXY+CisJCQkJCQkJCQkJCQkJPGRpdj4NCisJCQkJCVlvdSBjYW4gYmFja3VwIGFsbCB1c2VyLWdlbmVyYXRlZCBkYXRhIGluY2x1ZGluZyBmaWxlcw0KKwkJCQkJdXBsb2FkZWQgYnkgdGhlIHVzZXJzIGluIGEgc2luZ2xlIFpJUCBmaWxlIGFuZCBpbXBvcnQgdGhhdCBaSVAgaW50bw0KKwkJCQkJYSBuZXcgaW5zdGFsbGF0aW9uIG9mIE9wZW5NZWV0aW5ncyBhZ2Fpbi4NCisJCQkJPC9kaXY+CisJCQkJCQkJCQkJCQkJCQk8L3RkPgorCQkJPC90cj4KKwkgICAgPC90Ym9keT4KKwk8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8IS0tIEZPT1RFUiAtLT4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGFsaWduPSJjZW50ZXIiPjxmb250IGNvbG9yPSIjMTIzNDY1IiBzaXplPSItMSI+PGVtPgorICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgJiMxNjk7IDIwMDMtMjAxMywgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisgICAgICAgICAgICAgICAgICAgIDwvZW0+PC9mb250PjwvZGl2PgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2JvZHk+CisgICAgPC9odG1sPgorPCEtLSBlbmQgdGhlIHByb2Nlc3NpbmcgLS0+CisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKZGlmZiAtLWdpdCBhL2RvY3MvaW5zdGFsbGF0aW9uLmh0bWwgYi9kb2NzL2luc3RhbGxhdGlvbi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3NTU4ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2luc3RhbGxhdGlvbi5odG1sCkBAIC0wLDAgKzEsMTAxNiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CisKKzwhLS0KK0NvcHlyaWdodCAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK3lvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCitodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworCis8IS0tIENvbnRlbnQgU3R5bGVzaGVldCBmb3IgU2l0ZSAtLT4KKworICAgICAgICAKKzwhLS0gc3RhcnQgdGhlIHByb2Nlc3NpbmcgLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDwhLS0gR0VORVJBVEVEIEZJTEUsIERPIE5PVCBFRElULCBFRElUIFRIRSBYTUwgRklMRSBJTiB4ZG9jcyBJTlNURUFEISAtLT4KKyAgICA8IS0tIE1haW4gUGFnZSBTZWN0aW9uIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8aHRtbD4KKyAgICAgICAgPGhlYWQ+CisgICAgICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIvPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSIKKwkJCU9wZW5NZWV0aW5ncyBUZWFtCisJCSI+CisgICAgICAgICAgICA8bWV0YSBuYW1lPSJlbWFpbCIgY29udGVudD0ic2ViYXdhZ25lckBhcGFjaGUub3JnIj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICA8dGl0bGU+QXBhY2hlIE9wZW5NZWV0aW5ncyAtIEhvbWU8L3RpdGxlPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL29wZW5tZWV0aW5ncy5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2pxdWVyeS11aS5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2NvaW4tc2xpZGVyLXN0eWxlcy5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2NvbG9yYm94LmNzcyIgLz4KKyAgICAgICAgICAgIAorCQkJPCEtLSBBZGQgalF1ZXJ5IGxpYnJhcnkgLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9qcXVlcnktMS43LjEubWluLmpzIj48L3NjcmlwdD4KKwkJCisJCQk8IS0tIEFkZCBjb2luc2xpZGVyIHBsdWdpbnMgLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9jb2luLXNsaWRlci5taW4uanMiPjwvc2NyaXB0PgorCQkJCisJCQk8IS0tIEFkZCBjb2xvcmJveCBwbHVnaW4gLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9qcXVlcnkuY29sb3Jib3guanMiPjwvc2NyaXB0PgorCQkKKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkuY29yZS5qcyI+PC9zY3JpcHQ+CisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLndpZGdldC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5hY2NvcmRpb24uanMiPjwvc2NyaXB0PgorCQkJCisJCQk8c2NyaXB0PgorCQkJJChmdW5jdGlvbigpIHsKKwkJCQkkKCAiI2FjY29yZGlvbiIgKS5hY2NvcmRpb24oeworCQkJCQlhdXRvSGVpZ2h0OiBmYWxzZSwKKwkJCQkJbmF2aWdhdGlvbjogdHJ1ZSwKKwkJCQkJbmF2aWdhdGlvbkZpbHRlcjogZnVuY3Rpb24gKCkgeworCQkJCQkJdmFyIHNpZGViYXJIcmVmQXJyYXkgPSB0aGlzLmhyZWYuc3BsaXQoIi8iKTsKKyAgICAJCQkJCXZhciBzaWRlQmFyTGFzdFN0cmluZyA9IHNpZGViYXJIcmVmQXJyYXlbc2lkZWJhckhyZWZBcnJheS5sZW5ndGggLSAxXS50b0xvd2VyQ2FzZSgpOworCQkJCQkJCisJCQkJCQlpZiAoc2lkZUJhckxhc3RTdHJpbmcuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJCQkJcmV0dXJuIGZhbHNlOworCQkJCQkJfQorCQkJCQkJCisJCQkJCQkJCQkJCQkvKiBkb2N1bWVudC5sb2NhdGlvbi5ocmVmICovCisJCQkJCQl2YXIgY3VycmVudFNlY3Rpb24gPSAiIjsKKwkJCQkJCQorCQkJCQkJdmFyIGN1cnJlbnRMb2NhdGlvbiA9ICIiOworCQkJCQkJdmFyIGN1cnJlbnRMaW5rID0gIiI7CisJCQkJCQlpZiAoZmFsc2UpIHsKKwkJCQkJCQorCQkJCQkJfQorICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9pbmRleC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9pbmRleC5odG1sIi5zdWJzdHIoMSwgIi9pbmRleC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2xpY2Vuc2UuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbGljZW5zZS5odG1sIi5zdWJzdHIoMSwgIi9saWNlbnNlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iLnN1YnN0cigxLCAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kb3dubG9hZHMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZG93bmxvYWRzLmh0bWwiLnN1YnN0cigxLCAiL2Rvd25sb2Fkcy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIuc3Vic3RyKDEsICIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luc3RhbGxhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9pbnN0YWxsYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvaW5zdGFsbGF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVXBncmFkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9VcGdyYWRlLmh0bWwiLnN1YnN0cigxLCAiL1VwZ3JhZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIi5zdWJzdHIoMSwgImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29tbWFuZExpbmVBZG1pbi5odG1sIi5zdWJzdHIoMSwgIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2dldC1pbnZvbHZlZC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2dldC1pbnZvbHZlZC5odG1sIi5zdWJzdHIoMSwgIi9nZXQtaW52b2x2ZWQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi90ZWFtLWxpc3QuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi90ZWFtLWxpc3QuaHRtbCIuc3Vic3RyKDEsICIvdGVhbS1saXN0Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbWFpbC1saXN0cy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL21haWwtbGlzdHMuaHRtbCIuc3Vic3RyKDEsICIvbWFpbC1saXN0cy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIuc3Vic3RyKDEsICJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvc3ZuLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9zdm4uaHRtbCIuc3Vic3RyKDEsICIvc3ZuLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIi5zdWJzdHIoMSwgImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZGVwZW5kZW5jaWVzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kZXBlbmRlbmNpZXMuaHRtbCIuc3Vic3RyKDEsICIvZGVwZW5kZW5jaWVzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiLnN1YnN0cigxLCAiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSlVuaXRUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9KVW5pdFRlc3RpbmcuaHRtbCIuc3Vic3RyKDEsICIvSlVuaXRUZXN0aW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTWFudWFsVGVzdGluZy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTWFudWFsVGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9NYW51YWxUZXN0aW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVsZWFzZUd1aWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZWxlYXNlR3VpZGUuaHRtbCIuc3Vic3RyKDEsICIvUmVsZWFzZUd1aWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2Vic2l0ZUd1aWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9XZWJzaXRlR3VpZGUuaHRtbCIuc3Vic3RyKDEsICIvV2Vic2l0ZUd1aWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1NvYXBSZXN0QVBJLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Tb2FwUmVzdEFQSS5odG1sIi5zdWJzdHIoMSwgIi9Tb2FwUmVzdEFQSS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RBUElTYW1wbGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1Jlc3RBUElTYW1wbGUuaHRtbCIuc3Vic3RyKDEsICIvUmVzdEFQSVNhbXBsZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0xkYXBBbmRBRFMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0xkYXBBbmRBRFMuaHRtbCIuc3Vic3RyKDEsICIvTGRhcEFuZEFEUy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0Vycm9yc1RhYmxlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9FcnJvcnNUYWJsZS5odG1sIi5zdWJzdHIoMSwgIi9FcnJvcnNUYWJsZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Nb29kbGVQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTW9vZGxlUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL01vb2RsZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Nha2FpUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1Nha2FpUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1Nha2FpUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSmlyYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9KaXJhUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0ppcmFQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Kb29tbGFQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSm9vbWxhUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0pvb21sYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0RydXBhbFBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9EcnVwYWxQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvRHJ1cGFsUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQml0cml4UGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0JpdHJpeFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9CaXRyaXhQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVkbWluZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZWRtaW5lUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1JlZG1pbmVQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9JQk1EQjJDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JQk1EQjJDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvSUJNREIyQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9PcmFjbGVDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9PcmFjbGVDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvT3JhY2xlQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NeVNRTENvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL015U1FMQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL015U1FMQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1Bvc3RncmVzQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL1Bvc3RncmVzQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0xhbmd1YWdlRWRpdG9yLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIuc3Vic3RyKDEsICIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiLnN1YnN0cigxLCAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0VkaXRUZW1wbGF0ZXMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9FZGl0VGVtcGxhdGVzLmh0bWwiLnN1YnN0cigxLCAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUG9ydFNldHRpbmdzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9ydFNldHRpbmdzLmh0bWwiLnN1YnN0cigxLCAiL1BvcnRTZXR0aW5ncy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiLnN1YnN0cigxLCAiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiLnN1YnN0cigxLCAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0Rhc2hib2FyZC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0Rhc2hib2FyZC5odG1sIi5zdWJzdHIoMSwgIi9EYXNoYm9hcmQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0hvdEtleXMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Ib3RLZXlzLmh0bWwiLnN1YnN0cigxLCAiL0hvdEtleXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViYXBwTmFtZVBhdGguaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJhcHBOYW1lUGF0aC5odG1sIi5zdWJzdHIoMSwgIi9XZWJhcHBOYW1lUGF0aC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTmF2aWdhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL05hdmlnYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvTmF2aWdhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIuc3Vic3RyKDEsICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIuc3Vic3RyKDEsICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIi5zdWJzdHIoMSwgIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SVE1QU0FuZEhUVFBTLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUlRNUFNBbmRIVFRQUy5odG1sIi5zdWJzdHIoMSwgIi9SVE1QU0FuZEhUVFBTLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiLnN1YnN0cigxLCAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiLnN1YnN0cigxLCAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ2x1c3RlcmluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NsdXN0ZXJpbmcuaHRtbCIuc3Vic3RyKDEsICIvQ2x1c3RlcmluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZXRWZXJzaW9uSW5mby5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dldFZlcnNpb25JbmZvLmh0bWwiLnN1YnN0cigxLCAiL0dldFZlcnNpb25JbmZvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCSAgICAJCQkJCQorICAgIAkJCQkJY3VycmVudExpbmsgPSBjdXJyZW50TGluay50b0xvd2VyQ2FzZSgpOworICAgIAkJCQkJY3VycmVudExvY2F0aW9uID0gY3VycmVudExvY2F0aW9uLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQkKKwkJCQkJCXJldHVybiBzaWRlQmFyTGFzdFN0cmluZyA9PSBjdXJyZW50TGluaysiIyIrY3VycmVudExvY2F0aW9uOworCQkJCQl9CisJCQkJfSk7CisJCQl9KTsKKwkJCTwvc2NyaXB0PgorCQkJCisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisJCQkJJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CisJCQkJCSQoJy5mYW5jeWJveC1idXR0b25zJykuY29sb3Jib3goe3JlbDonZmFuY3lib3gtYnV0dG9ucycsd2lkdGg6Ijc1JSIsIGhlaWdodDoiNzUlIn0pOworCQkJCQkkKCcjYWNjb3JkaW9uIGEnKS5lYWNoKGZ1bmN0aW9uKCkgeworCQkJCSAgICAgIHZhciBhID0gJCh0aGlzKTsKKwkJCQkgICAgICB2YXIgaHJlZiA9IGEuYXR0cigiaHJlZiIpOworCQkJCSAgICAgIGlmIChocmVmLmluZGV4T2YoIiMiKSA9PSAtMSkgeworCQkJCSAgICAgIAkgIHZhciBjb21wYXJlSXQgPSBocmVmLnN1YnN0cigyLCBocmVmLmxlbmd0aCk7CisJCQkJCSAgICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoY29tcGFyZUl0KSE9IC0xKSB7CisJCQkJCSAgICAgICBhLmFkZENsYXNzKCdhY3RpdmUnKTsKKwkJCQkJICAgICAgfQorCQkJCSAgICAgIH0KKwkJCQkgICAgfSk7CisJCQkJCSQoJyNjb2luLXNsaWRlcicpLmNvaW5zbGlkZXIoeyB3aWR0aDogNjQwLGhlaWdodDogNDAwLCBkZWxheTogNDAwMCAgfSk7CQkJCQkKKwkJCQl9KTsKKwkJCTwvc2NyaXB0PgkKKwkJCQkJCQorCQkJPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKwkJCQkuZmFuY3lib3gtY3VzdG9tIC5mYW5jeWJveC1vdXRlciB7CisJCQkJCWJveC1zaGFkb3c6IDAgMCA1MHB4ICMyMjI7CisJCQkJfQorCQkJPC9zdHlsZT4KKyAgICAgICAgPC9oZWFkPgorCisgICAgICAgIDxib2R5IGJnY29sb3I9IiNmZmZmZmYiIHRleHQ9IiMwMDAwMDAiIGxpbms9IiMxMjM0NjUiIHZsaW5rPSIjMTIzNDY1IiBhbGluaz0iIzAwMDAwMCI+ICAKKyAgICAgICAgCTxkaXYgY2xhc3M9Im1haW5ib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgCTxkaXYgY2xhc3M9InN1cGVyYm9keSIgc3R5bGU9IndpZHRoOiAxMDAlOyI+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiPgorICAgICAgICAgICAgICAgIDwhLS0gVE9QIElNQUdFIC0tPgorICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0Ij4KKzxhIGhyZWY9Imh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy8iPjxpbWcgc3JjPSIuL2ltYWdlcy9sb2dvLTIuanBnIiBhbHQ9IkFwYWNoZSBPcGVuTWVldGluZ3MiIGJvcmRlcj0iMCIvPjwvYT4KKzwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODAlIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIiA+CisJPGEgaHJlZj0iZGVtby5odG1sIj5EZW1vPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9ImRvd25sb2Fkcy5odG1sIiB0YXJnZXQ9Il9QQVJFTlQiPkRvd25sb2FkPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imluc3RhbGxhdGlvbi5odG1sIiB0YXJnZXQ9Il9QQVJFTlQiPkluc3RhbGxhdGlvbjwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUyIgdGFyZ2V0PSJfQkxBTksiPldpa2k8L2E+CisJPHNwYW4+Jm5ic3A7PC9zcGFuPgorPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iNCI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGhyIG5vc2hhZGU9Im5vc2hhZGUiIHNpemU9IjEiLz4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDwhLS0gTEVGVCBTSURFIE5BVklHQVRJT04gLS0+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCIgbm93cmFwPSJub3dyYXAiPgorCisgICAgICAgICAgICAgICAgICAgIDwhLS0gc3BlY2lhbCBBQ29uIExvZ28gLSBsZWF2ZSBoZXJlIGZvciBuZXh0IHRpbWUKKyAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL2FwYWNoZWNvbi5jb20vMjAwNS9VUy8iPgorICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHA6Ly9hcGFjaGUub3JnL2ltYWdlcy9hYzIwMDV1c19ibHVlXzEyNXgxMjUuanBnIiBoZWlnaHQ9IjEyNSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjEyNSIgYm9yZGVyPSIwIiBhbHQ9IkFwYWNoZUNvbiBVUyAyMDA1IiAvPgorICAgICAgICAgICAgICAgICAgICA8L2E+ICAtLT4KKworICAgICAgICAgICAgICAgICAgIDwhLS0gcmVndWxhciBtZW51IC0tPgorCisgICAgICAgICAgICAgICAgICAgIAorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDxkaXYgaWQ9ImFjY29yZGlvbiIgc3R5bGU9IndpZHRoOiAxMDAlIj4KKyAgICAKKyAgICAgICAgICAgIAk8aDM+PGEgaHJlZj0iI0dlbmVyYWwiPkdlbmVyYWw8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luZGV4Lmh0bWwiPkhvbWU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2xpY2Vuc2UuaHRtbCI+TGljZW5zZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iPkFTRjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZG93bmxvYWRzLmh0bWwiPkRvd25sb2FkczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiPkNvbW1lcmNpYWwgU3VwcG9ydDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI+SW5zdGFsbGF0aW9uIGFuZCBVcGdyYWRlPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9pbnN0YWxsYXRpb24uaHRtbCI+SW5zdGFsbGF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9VcGdyYWRlLmh0bWwiPlVwZ3JhZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiPlR1dG9yaWFsczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQ29tbWFuZExpbmVBZG1pbi5odG1sIj5Db21tYW5kIExpbmUgQWRtaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0NvbW11bml0eSI+Q29tbXVuaXR5PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9nZXQtaW52b2x2ZWQuaHRtbCI+R2V0IEludm9sdmVkPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi90ZWFtLWxpc3QuaHRtbCI+Q29tbWl0dGVyczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbWFpbC1saXN0cy5odG1sIj5NYWlsaW5nIExpc3RzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iPldpa2k8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0RldmVsb3BtZW50Ij5EZXZlbG9wbWVudDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vc3ZuLmh0bWwiPlNvdXJjZSBDb2RlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyI+QnVncyAvIElzc3VlcyAoSklSQSk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2RlcGVuZGVuY2llcy5odG1sIj5EZXBlbmRlbmNpZXM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiPkJ1aWxkIEluc3RydWN0aW9uczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSlVuaXRUZXN0aW5nLmh0bWwiPkpVbml0IFRlc3Rpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01hbnVhbFRlc3RpbmcuaHRtbCI+TWFudWFsIFRlc3Rpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1JlbGVhc2VHdWlkZS5odG1sIj5SZWxlYXNlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9XZWJzaXRlR3VpZGUuaHRtbCI+V2Vic2l0ZSBHdWlkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjSW50ZWdyYXRpb24iPkludGVncmF0aW9uPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Tb2FwUmVzdEFQSS5odG1sIj5TT0FQL1JFU1QgQVBJPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZXN0QVBJU2FtcGxlLmh0bWwiPlJFU1QgQVBJIFNhbXBsZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTGRhcEFuZEFEUy5odG1sIj5MZGFwIGFuZCBBRFM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiPlZvSVAgYW5kIFNJUDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vRXJyb3JzVGFibGUuaHRtbCI+RXJyb3JzIHRhYmxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNQbHVnaW5zIj5QbHVnaW5zPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Nb29kbGVQbHVnaW4uaHRtbCI+TW9vZGxlIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU2FrYWlQbHVnaW4uaHRtbCI+U2FrYWkgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KaXJhUGx1Z2luLmh0bWwiPkppcmEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Kb29tbGFQbHVnaW4uaHRtbCI+Sm9vbWxhIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vRHJ1cGFsUGx1Z2luLmh0bWwiPkRydXBhbCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0JpdHJpeFBsdWdpbi5odG1sIj5CaXRyaXggUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiPkNvbmZsdWVuY2UgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TdWdhckNSTVBsdWdpbi5odG1sIj5TdWdhckNSTSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1JlZG1pbmVQbHVnaW4uaHRtbCI+UmVkbWluZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0NvbmZpZ3VyYXRpb24iPkNvbmZpZ3VyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkRCIFNhbXBsZSBDb25maWd1cmF0aW9uczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiPkFwYWNoZSBEZXJieTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSUJNREIyQ29uZmlnLmh0bWwiPklCTSBEQjI8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL09yYWNsZUNvbmZpZy5odG1sIj5PcmFjbGU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL015U1FMQ29uZmlnLmh0bWwiPk15U1FMPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIj5Qb3N0Z3JlczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TG9jYWxpemF0aW9uIGFuZCBsYW5ndWFnZXM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIj5JbnRlcm5hdGlvbmFsaXNhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTGFuZ3VhZ2VFZGl0b3IuaHRtbCI+TGFuZ3VhZ2VFZGl0b3I8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1RpbWVab25lSGFuZGxpbmcuaHRtbCI+VGltZVpvbmVIYW5kbGluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRWRpdFRlbXBsYXRlcy5odG1sIj5FZGl0VGVtcGxhdGVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5OQVQgUG9ydCBTZXR0aW5nczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1BvcnRTZXR0aW5ncy5odG1sIj5Qb3J0IHNldHRpbmdzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5QZXJmb3JtYW5jZTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiPkpWTSBwZXJmb3JtYW5jZSB0dW5pbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlVzZXIgSW50ZXJmYWNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIj5UaGVtZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0Rhc2hib2FyZC5odG1sIj5EYXNoYm9hcmQ8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiPldlYmNhbSByZXNvbHV0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiPlJvb20gbGF5b3V0IG9wdGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0hvdEtleXMuaHRtbCI+SG90IEtleXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkN1c3RvbWl6YXRpb248L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9XZWJhcHBOYW1lUGF0aC5odG1sIj5XZWJhcHAgbmFtZS9wYXRoPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9OYXZpZ2F0aW9uLmh0bWwiPk5hdmlnYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCI+Q2FsZW5kYXIgYW5kIHRpbWV6b25lPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiPkN1c3RvbSByb29tIHR5cGU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiPkN1c3RvbSBjdHlwdCBtZWNoYW5pc208L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiPkdlbmVyYWwgQ29uZmlndXJhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+U2VjdXJpdHk8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiPlJlc3RyaWN0ZWQgQWNjZXNzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9SVE1QU0FuZEhUVFBTLmh0bWwiPlJUTVBTIGFuZCBIVFRQUzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q29udmVydGVyczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCI+T3Blbk9mZmljZSBDb252ZXJ0ZXI8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCI+RkZNUEVHIFZlcnNpb24gU3dpdGNoPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5DbHVzdGVyaW5nPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2x1c3RlcmluZy5odG1sIj5DbHVzdGVyaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5NaXNjPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2V0VmVyc2lvbkluZm8uaHRtbCI+R2V0IHZlcnNpb24gaW5mbzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCisgICAgPC9kaXY+CisgICAgIAorICAgIDxici8+CisgICAgCisgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODAlIiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkID48IS0tIGJnY29sb3I9IiNFRUVFRUUiIC0tPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0idmVyZGFuYSxhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9Ik9wZW5NZWV0aW5ncyBJbnN0YWxsYXRpb24iPjxzdHJvbmc+T3Blbk1lZXRpbmdzIEluc3RhbGxhdGlvbjwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgICA8aHIgc3R5bGU9IndpZHRoOjEwMCU7IGNvbG9yOiM5OTk5OTk7IGJhY2tncm91bmQtY29sb3I6Izk5OTk5OTsgaGVpZ2h0OjFweDsgYm9yZGVyOjBweDsiLz4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQorCQkJCVRvIHVwZGF0ZSBmcm9tIHBhc3QgdmVyc2lvbnMgb3IgbWlncmF0ZSBzZWUNCisJCQkJPGEgaHJlZj0iVXBncmFkZS5odG1sIj5VcGdyYWRlPC9hPg0KKwkJCQkuDQorCQkJCUlmIHlvdSBhcmUgbG9va2luZyBmb3IgY29tbWVyY2lhbCBoZWxwIGhhdmUgYSBsb29rIGF0DQorCQkJCTxhIGhyZWY9ImNvbW1lcmNpYWwtc3VwcG9ydC5odG1sIiB0YXJnZXQ9Il9CTEFOSyIgcmVsPSJub2ZvbGxvdyI+Y29tbWVyY2lhbA0KKwkJCQkJc3VwcG9ydA0KKwkJCQk8L2E+DQorCQkJCS4NCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKwkJCQk8YSBocmVmPSJkb3dubG9hZHMuaHRtbCIgcmVsPSJub2ZvbGxvdyI+DQorCQkJCQk8aW1nIHNyYz0iaW1hZ2VzL2luc3RhbGxhdGlvbl9pbnN0cnVjdGlvbnMucG5nIiBhbHQ9IkdyYWZpayIgLz4NCisJCQkJPC9hPg0KKwkJCQk8cD4NCisJCQkJCTxpPk5vdGU6IE9wZW5NZWV0aW5ncyByZXF1aXJlcyBTVU4vT3JhY2xlIEpSRSA2LCBub3Qgb3BlbkpESyE8L2k+DQorCQkJCQk8YnIgLz4NCisJCQkJCTxpPg0KKwkJCQkJCVNpbmNlIFZlcnNpb24gMi4wIHlvdSBjYW4gYWxzbyBpbnN0YWxsIE9wZW5NZWV0aW5ncyBmcm9tIGNvbW1hbmQNCisJCQkJCQlsaW5lLiBKdXN0IGNkIHRvIHRoZSB1bnBhY2tlZCBhcmNoaXZlIGFuZCB0eXBlIC4vYWRtaW4uc2ggb3INCisJCQkJCQlhZG1pbi5iYXQsIHBsZWFzZSBzZWUNCisJCQkJCQk8YSBocmVmPSJDb21tYW5kTGluZUFkbWluLmh0bWwiIHRhcmdldD0iX0JMQU5LIiByZWw9Im5vZm9sbG93Ij5Db21tYW5kIExpbmUgQWRtaW4NCisJCQkJCQk8L2E+DQorCQkJCQkJZm9yIG1vcmUgb3B0aW9ucw0KKwkJCQkJPC9pPg0KKwkJCQk8L3A+DQorCQkJPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b2w+DQorCQkJCTxsaT4NCisJCQkJCTxiPlJlY29tbWVuZGF0aW9uIGZvciBwcm9kdWN0aW9uIGVudmlyb25tZW50PC9iPg0KKwkJCQkJPGRpdiBzdHlsZT0ibWFyZ2luLXRvcDogMTBweDsgbWFyZ2luLWJvdHRvbToxMHB4Ij4NCisJCQkJCQlCeSBkZWZhdWx0IE9wZW5NZWV0aW5ncyB1c2VzIHRoZSBpbnRlZ3JhdGVkIEFwYWNoZSBEZXJieSBkYXRhYmFzZS4NCisJCQkJCQlGb3IgcHJvZHVjdGlvbiBlbnZpcm9ubWVudCB5b3Ugc2hvdWxkIGNvbnNpZGVyIHVzaW5nDQorCQkJCQkJPGEgaHJlZj0iTXlTUUxDb25maWcuaHRtbCI+TXlTUUw8L2E+DQorCQkJCQkJLA0KKwkJCQkJCTxhIGhyZWY9IlBvc3RncmVzQ29uZmlnLmh0bWwiPlBvc3RncmVzPC9hPg0KKwkJCQkJCSwgb3IgZm9yIGV4YW1wbGUNCisJCQkJCQk8YSBocmVmPSJJQk1EQjJDb25maWcuaHRtbCI+SUJNIERCMjwvYT4NCisJCQkJCQksIG9yDQorCQkJCQkJPGEgaHJlZj0iT3JhY2xlQ29uZmlnLmh0bWwiPk9yYWNsZTwvYT4NCisJCQkJCTwvZGl2Pg0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+DQorCQkJCQk8Yj5FbmFibGluZyBJbWFnZSBVcGxvYWQgYW5kIGltcG9ydCB0byB3aGl0ZWJvYXJkPC9iPg0KKwkJCQkJPGRpdiBzdHlsZT0ibWFyZ2luLXRvcDogMTBweDsgbWFyZ2luLWJvdHRvbToxMHB4Ij4NCisJCQkJCQlJbnN0YWxsDQorCQkJCQkJPGI+SW1hZ2VNYWdpY2s8L2I+DQorCQkJCQkJb24gdGhlIHNlcnZlciwgeW91IGNhbiBnZXQgbW9yZSBpbmZvcm1hdGlvbiBvbg0KKwkJCQkJCTxhIGhyZWY9Imh0dHA6Ly93d3cuaW1hZ2VtYWdpY2sub3JnIiByZWw9Im5vZm9sbG93IiB0YXJnZXQ9Il9CTEFOSyI+aHR0cDovL3d3dy5pbWFnZW1hZ2ljay5vcmcNCisJCQkJCQk8L2E+DQorCQkJCQkJcmVnYXJkaW5nIGluc3RhbGxhdGlvbi4gVGhlIGluc3RydWN0aW9ucw0KKwkJCQkJCWZvciBpbnN0YWxsYXRpb24gY2FuIGJlDQorCQkJCQkJZm91bmQgdGhlcmUNCisJCQkJCQk8YSBocmVmPSJodHRwOi8vd3d3LmltYWdlbWFnaWNrLm9yZy9zY3JpcHQvYmluYXJ5LXJlbGVhc2VzLnBocCIgdGFyZ2V0PSJfQkxBTksiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly93d3cuaW1hZ2VtYWdpY2sub3JnL3NjcmlwdC9iaW5hcnktcmVsZWFzZXMucGhwDQorCQkJCQkJPC9hPg0KKwkJCQkJCSwNCisJCQkJCQlob3dldmVyIG9uDQorCQkJCQkJbW9zdCBMaW51eCBzeXN0ZW1zIHlvdSBjYW4gZ2V0IGl0IHZpYSB5b3VyIGZhdm9yaXRlDQorCQkJCQkJcGFja2FnZQ0KKwkJCQkJCW1hbmFnZXJzIChhcHQtZ2V0IGl0KQ0KKwkJCQkJPC9kaXY+DQorCQkJCTwvbGk+DQorCQkJCTxsaT4NCisJCQkJCTxiPkVuYWJsaW5nIGltcG9ydCBvZiBQREZzIGludG8gd2hpdGVib2FyZDwvYj4NCisJCQkJCTxkaXYgc3R5bGU9Im1hcmdpbi10b3A6IDEwcHg7IG1hcmdpbi1ib3R0b206MTBweCI+DQorCQkJCQkJPHVsPg0KKwkJCQkJCQk8bGk+DQorCQkJCQkJCQlJbnN0YWxsDQorCQkJCQkJCQk8Yj5HaG9zdFNjcmlwdDwvYj4NCisJCQkJCQkJCW9uIHRoZSBzZXJ2ZXIsIHlvdSBjYW4gZ2V0IG1vcmUNCisJCQkJCQkJCWluZm9ybWF0aW9uIG9uDQorCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vd3d3Lmdob3N0c2NyaXB0LmNvbS9kb3dubG9hZC9nc2RubGQuaHRtbCIgdGFyZ2V0PSJfQkxBTksiIHJlbD0ibm9mb2xsb3ciPg0KKwkJCQkJCQkJCWh0dHA6Ly93d3cuZ2hvc3RzY3JpcHQuY29tL2Rvd25sb2FkL2dzZG5sZC5odG1sDQorCQkJCQkJCQk8L2E+DQorCQkJCQkJCQlyZWdhcmRpbmcNCisJCQkJCQkJCWluc3RhbGxhdGlvbi4gVGhlIGluc3RydWN0aW9ucyBmb3IgaW5zdGFsbGF0aW9uIGNhbiBiZQ0KKwkJCQkJCQkJZm91bmQNCisJCQkJCQkJCXRoZXJlLCBob3dldmVyIG9uIG1vc3QgTGludXggc3lzdGVtcyB5b3UgY2FuIGdldCBpdCB2aWENCisJCQkJCQkJCXlvdXINCisJCQkJCQkJCWZhdm9yaXRlIHBhY2thZ2UgbWFuYWdlcnMgKGFwdC1nZXQgaXQpLg0KKwkJCQkJCQk8L2xpPg0KKwkJCQkJCQk8bGk+DQorCQkJCQkJCQlJbnN0YWxsDQorCQkJCQkJCQk8Yj5TV0ZUb29sczwvYj4NCisJCQkJCQkJCW9uIHRoZSBzZXJ2ZXIsIHlvdSBjYW4gZ2V0IG1vcmUgaW5mb3JtYXRpb24NCisJCQkJCQkJCW9uDQorCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vd3d3LnN3ZnRvb2xzLm9yZy8iIHRhcmdldD0iX0JMQU5LIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vd3d3LnN3ZnRvb2xzLm9yZy8NCisJCQkJCQkJCTwvYT4NCisJCQkJCQkJCXJlZ2FyZGluZyBpbnN0YWxsYXRpb24uIFNvbWUgb2YgdGhlDQorCQkJCQkJCQlMaW51eCBkaXN0cmlidXRpb25zIGFscmVhZHkNCisJCQkJCQkJCWhhdmUgaXQgaW4gdGhlcmUgcGFja2FnZSBtYW5hZ2VyIChzZWUNCisJCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9wYWNrYWdlcy5kZWJpYW4ub3JnL3Vuc3RhYmxlL3V0aWxzL3N3ZnRvb2xzIiB0YXJnZXQ9Il9CTEFOSyIgcmVsPSJub2ZvbGxvdyI+aHR0cDovL3BhY2thZ2VzLmRlYmlhbi5vcmcvdW5zdGFibGUvdXRpbHMvc3dmdG9vbHMNCisJCQkJCQkJCTwvYT4NCisJCQkJCQkJCSksIHRoZQ0KKwkJCQkJCQkJcmVjb21tZW5kZWQgdmVyc2lvbiBvZiBTV0ZUb29scyBpcyAwLjkgYXMgcHJpb3IgdmVyc2lvbg0KKwkJCQkJCQkJaGF2ZSBhDQorCQkJCQkJCQlidWcgdGhhdCBkb2VzIGxlYWQgdG8gd3Jvbmcgb2JqZWN0IGRpbWVuc2lvbnMgYXQNCisJCQkJCQkJCXdoaXRlYm9hcmQNCisJCQkJCQkJPC9saT4NCisJCQkJCQk8L3VsPg0KKwkJCQkJPC9kaXY+DQorCQkJCTwvbGk+DQorCQkJCTxsaT4NCisJCQkJCTxiPkVuYWJsaW5nIGltcG9ydCBvZiAuZG9jLCAuZG9jeCwgLnBwdCwgLnBwdHgsIC4uLiBhbGwgT2ZmaWNlDQorCQkJCQkJRG9jdW1lbnRzIGludG8gd2hpdGViYW9yZA0KKwkJCQkJPC9iPg0KKwkJCQkJPGRpdiBzdHlsZT0ibWFyZ2luLXRvcDogMTBweDsgbWFyZ2luLWJvdHRvbToxMHB4Ij4NCisJCQkJCQk8dWw+DQorCQkJCQkJCTxsaT4NCisJCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9qb2Rjb252ZXJ0ZXIvIiB0YXJnZXQ9Il9CTEFOSyIgcmVsPSJub2ZvbGxvdyI+Sk9EQ29udmVydGVyPC9hPg0KKwkJCQkJCQkJaW5zdGFsbGVkIChuZWVkZWQgc2luY2UgdjIueCkNCisJCQkJCQkJPC9saT4NCisJCQkJCQkJPGxpPk9wZW5PZmZpY2Ugb3IgTGlicmUgT2ZmaWNlIEluc3RhbGxlZDwvbGk+DQorCQkJCQkJPC91bD4NCisJCQkJCQlTaW5jZSBWZXJzaW9uIDIueCBvZiBPcGVuTWVldGluZ3MgaXQgaXMgbm8gbW9yZSByZXF1aXJlZCB0byBzdGFydA0KKwkJCQkJCU9wZW5PZmZpY2UgKG9yIExpYnJlb2ZmaWNlKSBzZXJ2aWNlLCBzZWUNCisJCQkJCQk8YSBocmVmPSJPcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiPk9wZW5PZmZpY2VDb252ZXJ0ZXI8L2E+DQorCQkJCQkJZm9yIGRldGFpbHMNCisJCQkJCTwvZGl2Pg0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+DQorCQkJCQk8Yj5FbmFibGluZyBSZWNvcmRpbmcgYW5kIGltcG9ydCBvZiAuYXZpLCAuZmx2LCAubW92IGFuZCAubXA0IGludG8NCisJCQkJCQl3aGl0ZWJvYXJkDQorCQkJCQk8L2I+DQorCQkJCQk8ZGl2IHN0eWxlPSJtYXJnaW4tdG9wOiAxMHB4OyBtYXJnaW4tYm90dG9tOjEwcHgiPg0KKwkJCQkJCTx1bD4NCisJCQkJCQkJPGxpPg0KKwkJCQkJCQkJSW5zdGFsbA0KKwkJCQkJCQkJPGI+RkZNcGVnICh3aXRoIC1lbmFibGVkIGxpYm1wM2xhbWUgYW5kIGxpYngyNjQgb3B0aW9ucyk8L2I+DQorCQkJCQkJCQkuIFlvdSBzaG91bGQgZ2V0IEZGTVBFRyBpbiBhbiB1cCB0byBkYXRlIGNvcHkhIE9wZW5NZWV0aW5ncyBpcw0KKwkJCQkJCQkJdGVzdGVkIHdpdGggRkZNUEVHIFZlcnNpb24gMTAuMyBhbmQgbGF0ZXN0IGJ1aWxkIGZyb20gR0lUDQorCQkJCQkJCQlGb3IgV2luZG93cyB5b3UgY2FuIGRvd25sb2FkIGEgQnVpbGQgZm9yIGV4YW1wbGUgZnJvbQ0KKwkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL2ZmbXBlZy56ZXJhbm9lLmNvbS9idWlsZHMvIiB0YXJnZXQ9Il9CTEFOSyIgcmVsPSJub2ZvbGxvdyI+aHR0cDovL2ZmbXBlZy56ZXJhbm9lLmNvbS9idWlsZHMvIDwvYT4NCisJCQkJCQkJCUxpbnV4IG9yIE9TeCBVc2VycyBzaG91bGQgYmUgYWJsZSB0byB1c2Ugb25lIG9mIHRoZSB2YXJpb3VzDQorCQkJCQkJCQlJbnN0YWxsYXRpb24gSW5zdHJ1Y3Rpb25zIG9uIHRoZSBXZWIuIFlvdSBuZWVkIHRvIGVuYWJsZQ0KKwkJCQkJCQkJbGlibXAzbGFtZSBhbmQgbGlieDI2NCENCisJCQkJCQkJPC9saT4NCisJCQkJCQkJPGxpPg0KKwkJCQkJCQkJSW5zdGFsbA0KKwkJCQkJCQkJPGI+U29YPC9iPg0KKwkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL3NveC5zb3VyY2Vmb3JnZS5uZXQvIiB0YXJnZXQ9Il9CTEFOSyIgcmVsPSJub2ZvbGxvdyI+aHR0cDovL3NveC5zb3VyY2Vmb3JnZS5uZXQvDQorCQkJCQkJCQk8L2E+DQorCQkJCQkJCQkuIFlvdSBzaG91bGQgaW5zdGFsbCBTb1ggaW4gYSB1cA0KKwkJCQkJCQkJdG8gZGF0ZSBjb3B5ISBTb1ggMTIueHggd2lsbCBOT1QNCisJCQkJCQkJCXdvcmshDQorCQkJCQkJCTwvbGk+DQorCQkJCQkJPC91bD4NCisJCQkJCTwvZGl2Pg0KKwkJCQk8L2xpPg0KKwkJCTwvb2w+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJQb3J0cywgTkFUIFNldHRpbmdzLCBDdXN0b21pemUiPjxzdHJvbmc+UG9ydHMsIE5BVCBTZXR0aW5ncywgQ3VzdG9taXplPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJU2VlDQorCQkJCTxhIGhyZWY9IlBvcnRTZXR0aW5ncy5odG1sIj5Qb3J0U2V0dGluZ3M8L2E+DQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iVk1XYXJlIj48c3Ryb25nPlZNV2FyZTwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgICA8aHIgc3R5bGU9IndpZHRoOjEwMCU7IGNvbG9yOiM5OTk5OTk7IGJhY2tncm91bmQtY29sb3I6Izk5OTk5OTsgaGVpZ2h0OjFweDsgYm9yZGVyOjBweDsiLz4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPg0KKwkJCQk8bGk+DQorCQkJCQlTZWUNCisJCQkJCTxhIGhyZWY9Imh0dHA6Ly9uaWdodGx5Lm9wZW5tZWV0aW5ncy5kZS9vcGVubWVldGluZ3MvYnVpbGRzL3Ztd2FyZS8iIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9uaWdodGx5Lm9wZW5tZWV0aW5ncy5kZS9vcGVubWVldGluZ3MvYnVpbGRzL3Ztd2FyZS88L2E+DQorCQkJCTwvbGk+DQorCQkJCTxsaT4NCisJCQkJCVZNV2FyZSAxLjYuMQ0KKwkJCQkJPGEgaHJlZj0iaHR0cDovL29wZW5zdHVkaW8ubm8taXAuaW5mby8yMDExLzAxL29wZW5tZWV0aW5ncy0xLTYtcmMxLXZtd2FyZS1hcHBsaWFuY2UtdXNpbmctdWJ1bnR1LXNlcnZlci0xMC0wNC1sdHMvIiByZWw9Im5vZm9sbG93Ij5ibG9nLWVudHJ5PC9hPg0KKwkJCQk8L2xpPg0KKwkJCTwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJIYXJkd2FyZSBSZXF1aXJlbWVudHMiPjxzdHJvbmc+SGFyZHdhcmUgUmVxdWlyZW1lbnRzPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+DQorCQkJCTxsaT4NCisJCQkJCU1pbmltYWxpc3RpYyByZXF1aXJlbWVudCAod2l0aG91dCBEb2N1bWVudCBDb252ZXJ0ZXJzLCBSZWNvcmRlciBhbmQNCisJCQkJCVVwbG9hZCBmZWF0dXJlKSAxR0h6IENQVSAxIEdCIFJBTSAoDQorCQkJCQk8aT5zZXJ2ZXItc2lkZTwvaT4NCisJCQkJCSkNCisJCQkJPC9saT4NCisJCQkJPGxpPg0KKwkJCQkJUmVjb21tZW5kZWQgcmVxdWlyZW1lbnQgMngvNHggMkdIeiArKyBDUFUgKDMyIG9yIDY0Qml0KSA0R0IgUkFNLiBJZg0KKwkJCQkJeW91IGhhdmUgYSA2NEJpdCBPcGVyYXRpbmcgU3lzdGVtIGNoZWNrIGlmIHRoZXJlIGlzIGEgT3Blbk9mZmljZQ0KKwkJCQkJNjRCaXQgVmVyc2lvbg0KKwkJCQkJPGEgaHJlZj0iaHR0cDovL2Rvd25sb2FkLm9wZW5vZmZpY2Uub3JnL290aGVyLmh0bWwjZGUiIHJlbD0ibm9mb2xsb3ciPmF2YWlsYWJsZQ0KKwkJCQkJCWZvciB5b3VyIE9TDQorCQkJCQk8L2E+DQorCQkJCQkoDQorCQkJCQk8aT5zZXJ2ZXItc2lkZTwvaT4NCisJCQkJCSkNCisJCQkJPC9saT4NCisJCQkJPGxpPg0KKwkJCQkJSGVhZHNldC9NaWNyb3Bob25lIHJlY29tbWVuZGF0aW9uOiBMb2dpdGVjaCBDbGVhckNoYXQgUEMgV2lyZWxlc3MsDQorCQkJCQlmb3IgZXhhbXBsZSBmcm9tDQorCQkJCQk8YSBocmVmPSJodHRwOi8vd3d3LmFtYXpvbi5kZS9Mb2dpdGVjaC1DbGVhckNoYXQta2FiZWxsb3Nlci1Lb3BmaCVDMyVCNnJlci1UcmFuc21pdHRlci9kcC9CMDAxNjZXU040IiByZWw9Im5vZm9sbG93Ij5BbWF6b248L2E+DQorCQkJCQlvcg0KKwkJCQkJPGEgaHJlZj0iaHR0cDovL3Nob3AuZWJheS5jb20vaS5odG1sP19ua3c9TG9naXRlY2grQ2xlYXJDaGF0LitXaXJlbGVzcyZhbXA7X3NhY2F0PTAmYW1wO190cmtzaWQ9cDMyODYubTI3MC5sMTMxMyZhbXA7TEhfQklOPTEmYW1wO0xIX0luY2x1ZGVTSUY9MSZhbXA7X29ka3c9TG9naXRlY2grQ2xlYXJDaGF0K1BDJmFtcDtfb3NhY2F0PTAiIHJlbD0ibm9mb2xsb3ciPkVCYXkgQXVjdGlvbnM8L2E+DQorCQkJCQkoDQorCQkJCQk8aT5jaWVudC1zaWRlPC9pPg0KKwkJCQkJKS4NCisJCQkJCTxhIGhyZWY9IlJlY29tbWVuZGVkSGFyZHdhcmVMaXN0Lmh0bWwiPlNlZSBhbGwgcmVjb21tZW5kYXRpb25zPC9hPg0KKwkJCQkJZm9yIGNhbWVyYXMsIGhlYWRzZXRzIGFuZCBzcGVha2VycGhvbmVzLg0KKwkJCQk8L2xpPg0KKwkJCTwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJEZWJpYW4sIExpbmtzLCBDaGFuZ2Vsb2csIFZvSVAiPjxzdHJvbmc+RGViaWFuLCBMaW5rcywgQ2hhbmdlbG9nLCBWb0lQPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWw+DQorCQkJCTxsaT4NCisJCQkJCWZvciBWb0lQIGFuZCBTSVAgSW50ZWdyYXRpb24gc2VlIGFsc28NCisJCQkJCTxhIGhyZWY9InZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiPlZvSVBBbmRTSVA8L2E+DQorCQkJCTwvbGk+DQorCQkJCTxsaT4NCisJCQkJCTxhIGhyZWY9Imh0dHA6Ly9tZWV0aW5nc2xpdmUuc291cmNlZm9yZ2UubmV0LyIgcmVsPSJub2ZvbGxvdyI+aHR0cDovL21lZXRpbmdzbGl2ZS5zb3VyY2Vmb3JnZS5uZXQvDQorCQkJCQk8L2E+DQorCQkJCTwvbGk+DQorCQkJCTxsaT4NCisJCQkJCTxhIGhyZWY9Imh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIj5JbnN0YWxsYXRpb24gb2YgT00gMi4wIGZvciBVYnVudHUgMTIuMDQgeDY0LCBVYnVudHUgMTIuMTAgeDY0LCBEZWJpYW4sIFdpbmRvd3MgWFAsIDcsIDIwMDMsIDIwMDg8L2E+DQorCQkJCTwvbGk+DQorCQkJCTxsaT4NCisJCQkJCTxhIGhyZWY9Imh0dHA6Ly9saWJlcmFtZW1vcmlhLmJsb2dzcG90LmNvbS8yMDA5LzAyL2luc3RhbGFuZG8tb3Blbm1lZXRpbmdzLTA3LXJjLTItZW4uaHRtbCIgcmVsPSJub2ZvbGxvdyI+RXNwYW5vbCBWZXJzaW9uIGZvciBEZWJpYW4gSW5zdGFsbGF0aW9uPC9hPg0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+DQorCQkJCQk8YSBocmVmPSJodHRwOi8vYWl0aW5ldC5jb20vYmxvZy93cC1jb250ZW50L3VwbG9hZHMvMjAwOS8wOC9UVVRPUklBTC1QQVJBLUlOU1RBTEFDQU8tRE8tUkVENS1FLU9QRU5NRUVUSU5HUy1OTy1MSU5VWC1ERUJJQU4tTEVOTlktNTEucGRmIiByZWw9Im5vZm9sbG93Ij5Qb3J0dWd1ZXNlIFZlcnNpb24gZm9yIERlYmlhbiBJbnN0YWxsYXRpb24gb2YgMC45IFJDMTwvYT4NCisJCQkJPC9saT4NCisJCQkJPGxpPg0KKwkJCQkJPGEgaHJlZj0iaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiIHJlbD0ibm9mb2xsb3ciPkF1dG9tYXRpYyBzY3JpcHQgaW5zdGFsbGF0aW9uIGZvciBVYnVudHUvRGViaWFuIChiZXRhKTwvYT4NCisJCQkJPC9saT4NCisJCQkJPGxpPg0KKwkJCQkJRnJlbmNoIHZlcnNpb24gb2YgSW5zdGFsbGF0aW9uIEluc3RydWN0aW9uczoNCisJCQkJCTxhIGhyZWY9Imh0dHA6Ly9mbGFzaC41NG4uZnJlZS5mci8/L1Jvb3QvRGViaWFuL09wZW5NZWV0aW5ncy1JbnN0YWxsYXRpb24iIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9mbGFzaC41NG4uZnJlZS5mci8/L1Jvb3QvRGViaWFuL09wZW5NZWV0aW5ncy1JbnN0YWxsYXRpb24NCisJCQkJCTwvYT4NCisJCQkJPC9saT4NCisJCQk8L3VsPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iVGlwcyBhbmQgVHJpY2tzIj48c3Ryb25nPlRpcHMgYW5kIFRyaWNrczwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgICA8aHIgc3R5bGU9IndpZHRoOjEwMCU7IGNvbG9yOiM5OTk5OTk7IGJhY2tncm91bmQtY29sb3I6Izk5OTk5OTsgaGVpZ2h0OjFweDsgYm9yZGVyOjBweDsiLz4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsPg0KKwkJCQk8bGk+DQorCQkJCQlVc2UgdGhlIERlYnVnLUFwcGxpY2F0aW9uOiBFbnRlciBpbiB5b3VyIGJyb3dzZXINCisJCQkJCTxhIGhyZWY9Imh0dHA6Ly8kUkVELUhPU1Q6JFJFRDUtUE9SVC9vcGVubWVldGluZ3MvP3N3Zj1tYWluZGVidWcuYXMzLnN3ZjExLnN3ZiIgcmVsPSJub2ZvbGxvdyI+aHR0cDovLyRSRUQtSE9TVDokUkVENS1QT1JUL29wZW5tZWV0aW5ncy8/c3dmPW1haW5kZWJ1Zy5hczMuc3dmMTEuc3dmDQorCQkJCQk8L2E+DQorCQkJCQlmb3IgZXhhbXBsZQ0KKwkJCQkJPGEgaHJlZj0iaHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy8/c3dmPW1haW5kZWJ1Zy5hczMuc3dmMTEuc3dmIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzLz9zd2Y9bWFpbmRlYnVnLmFzMy5zd2YxMS5zd2YNCisJCQkJCTwvYT4NCisJCQkJPC9saT4NCisJCQkJPGxpPklmIHlvdSBoYXZlIFByb2JsZW1zIHdpdGggY29udmVyc2lvbi1qb2JzIGNoZWNrIHlvdXIgUmVkNS1Mb2cNCisJCQkJCW91dHB1dC4gVGhlcmUgd2lsbCBiZSBlcnJvciBNZXNzYWdlcyB3aGljaCBoZWxwIHlvdS4gWW91IG11c3QNCisJCQkJCWluc3RhbGwgT3Blbk9mZmljZSwgSW1hZ2VNYWdpY2ssIEdob3N0U2NyaXB0IGFuZCBTV0ZUb29scyB0byBydW4NCisJCQkJCWFsbCBjb252ZXJzaW9uLUpvYnMgY29ycmVjdGx5Lg0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+aWYgeW91IGhhdmUgcHJvYmxlbXMgaW4gY29udmVydGluZyBGaWxlcyBjaGVjayB0aGUgQmF0Y2gtU2NyaXB0cw0KKwkJCQkJaW4gJE9QRU5NRUVUSU5HU19IT01FL2pvZA0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+DQorCQkJCQlJZiB5b3Ugd2FudCB0byB1c2UgcmVkNSBhcyBhIHNlcnZpY2UgKHdpdGhvdXQgcmVkNS5iYXQpLCB5b3UgbmVlZA0KKwkJCQkJdG8gbW92ZSByZWQ1XHdyYXBwZXJcd3JhcHBlci5leGUgdG8gcmVkNVx3cmFwcGVyLmV4ZS4gVGhlbiBjaGFuZ2UNCisJCQkJCXNvbWUgcGF0aCBpbiBjb25mXHdyYXBwZXIuY29uZiAobGlrZSAuLlxsaWJcZm9vLmphciB0bw0KKwkJCQkJbGliXGZvby5qYXIpLiBBbmQgZmluYWxseSBjaGFuZ2UgdGhlIHJlZ2lzdGVyIGtleSBpbg0KKwkJCQkJSEtFWV9MT0NBTF9NQUNISU5FXFNZU1RFTVxDdXJyZW50Q29udHJvbFNldFxTZXJ2aWNlc1xSZWQ1XEltYWdlUGF0aA0KKwkJCQkJdG8gcG9pbnQgdG8gdGhlIG5ldyB3cmFwcGVyLg0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+DQorCQkJCQl5b3UgY2FuIHF1ZXJ5IGEgTXlzcWwgRGF0YWJhc2UgdG8gZ2V0IHRoZSBzY2hlbWFfY29sbGVjdGlvbiBieQ0KKwkJCQkJdXNpbmcgdGhpcyBxdWVyeToNCisJCQkJCTxkaXYgY2xhc3M9InhtbGNvZGUiPg0KKwkJCQkJCVNFTEVDVCBUYWJsZV9uYW1lLCBUQUJMRV9DT0xMQVRJT04gRlJPTQ0KKwkJCQkJCWluZm9ybWF0aW9uX3NjaGVtYS50YWJsZXMgV0hFUkUgdGFibGVfc2NoZW1hID0gJ29wZW5tZWV0aW5ncycNCisJCQkJCQlPUkRFUiBCWSB0YWJsZV9uYW1lIERFU0MNCisJCQkJCTwvZGl2Pg0KKwkJCQk8L2xpPg0KKwkJCTwvdWw+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDwhLS0gRk9PVEVSIC0tPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgYWxpZ249ImNlbnRlciI+PGZvbnQgY29sb3I9IiMxMjM0NjUiIHNpemU9Ii0xIj48ZW0+CisgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAmIzE2OTsgMjAwMy0yMDEzLCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyAgICAgICAgICAgICAgICAgICAgPC9lbT48L2ZvbnQ+PC9kaXY+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvYm9keT4KKyAgICA8L2h0bWw+Cis8IS0tIGVuZCB0aGUgcHJvY2Vzc2luZyAtLT4KKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKwpkaWZmIC0tZ2l0IGEvZG9jcy9qcy9jb2luLXNsaWRlci5taW4uanMgYi9kb2NzL2pzL2NvaW4tc2xpZGVyLm1pbi5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTY3MDhmCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9qcy9jb2luLXNsaWRlci5taW4uanMKQEAgLTAsMCArMSw1MSBAQAorLyoqCisgKiBDb2luIFNsaWRlciAtIFVuaXF1ZSBqUXVlcnkgSW1hZ2UgU2xpZGVyCisgKiBAdmVyc2lvbjogMS4wIC0gKDIwMTAvMDQvMDQpCisgKiBAcmVxdWlyZXMgalF1ZXJ5IHYxLjIuMiBvciBsYXRlciAKKyAqIEBhdXRob3IgSXZhbiBMYXphcmV2aWMKKyAqIEV4YW1wbGVzIGFuZCBkb2N1bWVudGF0aW9uIGF0OiBodHRwOi8vd29ya3Nob3AucnMvcHJvamVjdHMvY29pbi1zbGlkZXIvCisgCisgKiBMaWNlbnNlZCB1bmRlciBNSVQgbGljZW5jZToKKyAqICAgaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHAKKyoqLworCisoZnVuY3Rpb24oJCl7dmFyIHBhcmFtcz1uZXcgQXJyYXk7dmFyIG9yZGVyPW5ldyBBcnJheTt2YXIgaW1hZ2VzPW5ldyBBcnJheTt2YXIgbGlua3M9bmV3IEFycmF5O3ZhciBsaW5rc1RhcmdldD1uZXcgQXJyYXk7dmFyIHRpdGxlcz1uZXcgQXJyYXk7dmFyIGludGVydmFsPW5ldyBBcnJheTt2YXIgaW1hZ2VQb3M9bmV3IEFycmF5O3ZhciBhcHBJbnRlcnZhbD1uZXcgQXJyYXk7dmFyIHNxdWFyZVBvcz1uZXcgQXJyYXk7dmFyIHJldmVyc2U9bmV3IEFycmF5OyQuZm4uY29pbnNsaWRlcj0kLmZuLkNvaW5TbGlkZXI9ZnVuY3Rpb24ob3B0aW9ucyl7aW5pdD1mdW5jdGlvbihlbCl7b3JkZXJbZWwuaWRdPW5ldyBBcnJheSgpO2ltYWdlc1tlbC5pZF09bmV3IEFycmF5KCk7bGlua3NbZWwuaWRdPW5ldyBBcnJheSgpO2xpbmtzVGFyZ2V0W2VsLmlkXT1uZXcgQXJyYXkoKTt0aXRsZXNbZWwuaWRdPW5ldyBBcnJheSgpO2ltYWdlUG9zW2VsLmlkXT0wO3NxdWFyZVBvc1tlbC5pZF09MDtyZXZlcnNlW2VsLmlkXT0xO3BhcmFtc1tlbC5pZF09JC5leHRlbmQoe30sJC5mbi5jb2luc2xpZGVyLmRlZmF1bHRzLG9wdGlvbnMpOyQuZWFjaCgkKCcjJytlbC5pZCsnIGltZycpLGZ1bmN0aW9uKGksaXRlbSl7aW1hZ2VzW2VsLmlkXVtpXT0kKGl0ZW0pLmF0dHIoJ3NyYycpO2xpbmtzW2VsLmlkXVtpXT0kKGl0ZW0pLnBhcmVudCgpLmlzKCdhJyk/JChpdGVtKS5wYXJlbnQoKS5hdHRyKCdocmVmJyk6Jyc7bGlua3NUYXJnZXRbZWwuaWRdW2ldPSQoaXRlbSkucGFyZW50KCkuaXMoJ2EnKT8kKGl0ZW0pLnBhcmVudCgpLmF0dHIoJ3RhcmdldCcpOicnO3RpdGxlc1tlbC5pZF1baV09JChpdGVtKS5uZXh0KCkuaXMoJ3NwYW4nKT8kKGl0ZW0pLm5leHQoKS5odG1sKCk6Jyc7JChpdGVtKS5oaWRlKCk7JChpdGVtKS5uZXh0KCkuaGlkZSgpO30pOyQoZWwpLmNzcyh7J2JhY2tncm91bmQtaW1hZ2UnOid1cmwoJytpbWFnZXNbZWwuaWRdWzBdKycpJywnd2lkdGgnOnBhcmFtc1tlbC5pZF0ud2lkdGgsJ2hlaWdodCc6cGFyYW1zW2VsLmlkXS5oZWlnaHQsJ3Bvc2l0aW9uJzoncmVsYXRpdmUnLCdiYWNrZ3JvdW5kLXBvc2l0aW9uJzondG9wIGxlZnQnfSkud3JhcCgiPGRpdiBjbGFzcz0nY29pbi1zbGlkZXInIGlkPSdjb2luLXNsaWRlci0iK2VsLmlkKyInIC8+Iik7JCgnIycrZWwuaWQpLmFwcGVuZCgiPGRpdiBjbGFzcz0nY3MtdGl0bGUnIGlkPSdjcy10aXRsZS0iK2VsLmlkKyInIHN0eWxlPSdwb3NpdGlvbjogYWJzb2x1dGU7IGJvdHRvbTowOyBsZWZ0OiAwOyB6LWluZGV4OiAxMDAwOyc+PC9kaXY+Iik7JC5zZXRGaWVsZHMoZWwpO2lmKHBhcmFtc1tlbC5pZF0ubmF2aWdhdGlvbikKKyQuc2V0TmF2aWdhdGlvbihlbCk7JC50cmFuc2l0aW9uKGVsLDApOyQudHJhbnNpdGlvbkNhbGwoZWwpO30KKyQuc2V0RmllbGRzPWZ1bmN0aW9uKGVsKXt0V2lkdGg9c1dpZHRoPXBhcnNlSW50KHBhcmFtc1tlbC5pZF0ud2lkdGgvcGFyYW1zW2VsLmlkXS5zcHcpO3RIZWlnaHQ9c0hlaWdodD1wYXJzZUludChwYXJhbXNbZWwuaWRdLmhlaWdodC9wYXJhbXNbZWwuaWRdLnNwaCk7Y291bnRlcj1zTGVmdD1zVG9wPTA7dGdhcHg9Z2FweD1wYXJhbXNbZWwuaWRdLndpZHRoLXBhcmFtc1tlbC5pZF0uc3B3KnNXaWR0aDt0Z2FweT1nYXB5PXBhcmFtc1tlbC5pZF0uaGVpZ2h0LXBhcmFtc1tlbC5pZF0uc3BoKnNIZWlnaHQ7Zm9yKGk9MTtpPD1wYXJhbXNbZWwuaWRdLnNwaDtpKyspe2dhcHg9dGdhcHg7aWYoZ2FweT4wKXtnYXB5LS07c0hlaWdodD10SGVpZ2h0KzE7fWVsc2V7c0hlaWdodD10SGVpZ2h0O30KK2ZvcihqPTE7ajw9cGFyYW1zW2VsLmlkXS5zcHc7aisrKXtpZihnYXB4PjApe2dhcHgtLTtzV2lkdGg9dFdpZHRoKzE7fWVsc2V7c1dpZHRoPXRXaWR0aDt9CitvcmRlcltlbC5pZF1bY291bnRlcl09aSsnJytqO2NvdW50ZXIrKztpZihwYXJhbXNbZWwuaWRdLmxpbmtzKQorJCgnIycrZWwuaWQpLmFwcGVuZCgiPGEgaHJlZj0nIitsaW5rc1tlbC5pZF1bMF0rIicgY2xhc3M9J2NzLSIrZWwuaWQrIicgaWQ9J2NzLSIrZWwuaWQraStqKyInIHN0eWxlPSd3aWR0aDoiK3NXaWR0aCsicHg7IGhlaWdodDoiK3NIZWlnaHQrInB4OyBmbG9hdDogbGVmdDsgcG9zaXRpb246IGFic29sdXRlOyc+PC9hPiIpO2Vsc2UKKyQoJyMnK2VsLmlkKS5hcHBlbmQoIjxkaXYgY2xhc3M9J2NzLSIrZWwuaWQrIicgaWQ9J2NzLSIrZWwuaWQraStqKyInIHN0eWxlPSd3aWR0aDoiK3NXaWR0aCsicHg7IGhlaWdodDoiK3NIZWlnaHQrInB4OyBmbG9hdDogbGVmdDsgcG9zaXRpb246IGFic29sdXRlOyc+PC9kaXY+Iik7JCgiI2NzLSIrZWwuaWQraStqKS5jc3MoeydiYWNrZ3JvdW5kLXBvc2l0aW9uJzotc0xlZnQrJ3B4ICcrKC1zVG9wKydweCcpLCdsZWZ0JzpzTGVmdCwndG9wJzpzVG9wfSk7c0xlZnQrPXNXaWR0aDt9CitzVG9wKz1zSGVpZ2h0O3NMZWZ0PTA7fQorJCgnLmNzLScrZWwuaWQpLm1vdXNlb3ZlcihmdW5jdGlvbigpeyQoJyNjcy1uYXZpZ2F0aW9uLScrZWwuaWQpLnNob3coKTt9KTskKCcuY3MtJytlbC5pZCkubW91c2VvdXQoZnVuY3Rpb24oKXskKCcjY3MtbmF2aWdhdGlvbi0nK2VsLmlkKS5oaWRlKCk7fSk7JCgnI2NzLXRpdGxlLScrZWwuaWQpLm1vdXNlb3ZlcihmdW5jdGlvbigpeyQoJyNjcy1uYXZpZ2F0aW9uLScrZWwuaWQpLnNob3coKTt9KTskKCcjY3MtdGl0bGUtJytlbC5pZCkubW91c2VvdXQoZnVuY3Rpb24oKXskKCcjY3MtbmF2aWdhdGlvbi0nK2VsLmlkKS5oaWRlKCk7fSk7aWYocGFyYW1zW2VsLmlkXS5ob3ZlclBhdXNlKXskKCcuY3MtJytlbC5pZCkubW91c2VvdmVyKGZ1bmN0aW9uKCl7cGFyYW1zW2VsLmlkXS5wYXVzZT10cnVlO30pOyQoJy5jcy0nK2VsLmlkKS5tb3VzZW91dChmdW5jdGlvbigpe3BhcmFtc1tlbC5pZF0ucGF1c2U9ZmFsc2U7fSk7JCgnI2NzLXRpdGxlLScrZWwuaWQpLm1vdXNlb3ZlcihmdW5jdGlvbigpe3BhcmFtc1tlbC5pZF0ucGF1c2U9dHJ1ZTt9KTskKCcjY3MtdGl0bGUtJytlbC5pZCkubW91c2VvdXQoZnVuY3Rpb24oKXtwYXJhbXNbZWwuaWRdLnBhdXNlPWZhbHNlO30pO319OyQudHJhbnNpdGlvbkNhbGw9ZnVuY3Rpb24oZWwpe2NsZWFySW50ZXJ2YWwoaW50ZXJ2YWxbZWwuaWRdKTtkZWxheT1wYXJhbXNbZWwuaWRdLmRlbGF5K3BhcmFtc1tlbC5pZF0uc3B3KnBhcmFtc1tlbC5pZF0uc3BoKnBhcmFtc1tlbC5pZF0uc0RlbGF5O2ludGVydmFsW2VsLmlkXT1zZXRJbnRlcnZhbChmdW5jdGlvbigpeyQudHJhbnNpdGlvbihlbCl9LGRlbGF5KTt9CiskLnRyYW5zaXRpb249ZnVuY3Rpb24oZWwsZGlyZWN0aW9uKXtpZihwYXJhbXNbZWwuaWRdLnBhdXNlPT10cnVlKXJldHVybjskLmVmZmVjdChlbCk7c3F1YXJlUG9zW2VsLmlkXT0wO2FwcEludGVydmFsW2VsLmlkXT1zZXRJbnRlcnZhbChmdW5jdGlvbigpeyQuYXBwZXJlYW5jZShlbCxvcmRlcltlbC5pZF1bc3F1YXJlUG9zW2VsLmlkXV0pfSxwYXJhbXNbZWwuaWRdLnNEZWxheSk7JChlbCkuY3NzKHsnYmFja2dyb3VuZC1pbWFnZSc6J3VybCgnK2ltYWdlc1tlbC5pZF1baW1hZ2VQb3NbZWwuaWRdXSsnKSd9KTtpZih0eXBlb2YoZGlyZWN0aW9uKT09InVuZGVmaW5lZCIpCitpbWFnZVBvc1tlbC5pZF0rKztlbHNlCitpZihkaXJlY3Rpb249PSdwcmV2JykKK2ltYWdlUG9zW2VsLmlkXS0tO2Vsc2UKK2ltYWdlUG9zW2VsLmlkXT1kaXJlY3Rpb247aWYoaW1hZ2VQb3NbZWwuaWRdPT1pbWFnZXNbZWwuaWRdLmxlbmd0aCl7aW1hZ2VQb3NbZWwuaWRdPTA7fQoraWYoaW1hZ2VQb3NbZWwuaWRdPT0tMSl7aW1hZ2VQb3NbZWwuaWRdPWltYWdlc1tlbC5pZF0ubGVuZ3RoLTE7fQorJCgnLmNzLWJ1dHRvbi0nK2VsLmlkKS5yZW1vdmVDbGFzcygnY3MtYWN0aXZlJyk7JCgnI2NzLWJ1dHRvbi0nK2VsLmlkKyItIisoaW1hZ2VQb3NbZWwuaWRdKzEpKS5hZGRDbGFzcygnY3MtYWN0aXZlJyk7aWYodGl0bGVzW2VsLmlkXVtpbWFnZVBvc1tlbC5pZF1dKXskKCcjY3MtdGl0bGUtJytlbC5pZCkuY3NzKHsnb3BhY2l0eSc6MH0pLmFuaW1hdGUoeydvcGFjaXR5JzpwYXJhbXNbZWwuaWRdLm9wYWNpdHl9LHBhcmFtc1tlbC5pZF0udGl0bGVTcGVlZCk7JCgnI2NzLXRpdGxlLScrZWwuaWQpLmh0bWwodGl0bGVzW2VsLmlkXVtpbWFnZVBvc1tlbC5pZF1dKTt9ZWxzZXskKCcjY3MtdGl0bGUtJytlbC5pZCkuY3NzKCdvcGFjaXR5JywwKTt9fTskLmFwcGVyZWFuY2U9ZnVuY3Rpb24oZWwsc2lkKXskKCcuY3MtJytlbC5pZCkuYXR0cignaHJlZicsbGlua3NbZWwuaWRdW2ltYWdlUG9zW2VsLmlkXV0pLmF0dHIoJ3RhcmdldCcsbGlua3NUYXJnZXRbZWwuaWRdW2ltYWdlUG9zW2VsLmlkXV0pO2lmKHNxdWFyZVBvc1tlbC5pZF09PXBhcmFtc1tlbC5pZF0uc3B3KnBhcmFtc1tlbC5pZF0uc3BoKXtjbGVhckludGVydmFsKGFwcEludGVydmFsW2VsLmlkXSk7cmV0dXJuO30KKyQoJyNjcy0nK2VsLmlkK3NpZCkuY3NzKHtvcGFjaXR5OjAsJ2JhY2tncm91bmQtaW1hZ2UnOid1cmwoJytpbWFnZXNbZWwuaWRdW2ltYWdlUG9zW2VsLmlkXV0rJyknfSk7JCgnI2NzLScrZWwuaWQrc2lkKS5hbmltYXRlKHtvcGFjaXR5OjF9LDMwMCk7c3F1YXJlUG9zW2VsLmlkXSsrO307JC5zZXROYXZpZ2F0aW9uPWZ1bmN0aW9uKGVsKXskKGVsKS5hcHBlbmQoIjxkaXYgaWQ9J2NzLW5hdmlnYXRpb24tIitlbC5pZCsiJz48L2Rpdj4iKTskKCcjY3MtbmF2aWdhdGlvbi0nK2VsLmlkKS5oaWRlKCk7JCgnI2NzLW5hdmlnYXRpb24tJytlbC5pZCkuYXBwZW5kKCI8YSBocmVmPScjJyBpZD0nY3MtcHJldi0iK2VsLmlkKyInIGNsYXNzPSdjcy1wcmV2Jz5wcmV2PC9hPiIpOyQoJyNjcy1uYXZpZ2F0aW9uLScrZWwuaWQpLmFwcGVuZCgiPGEgaHJlZj0nIycgaWQ9J2NzLW5leHQtIitlbC5pZCsiJyBjbGFzcz0nY3MtbmV4dCc+bmV4dDwvYT4iKTskKCcjY3MtcHJldi0nK2VsLmlkKS5jc3Moeydwb3NpdGlvbic6J2Fic29sdXRlJywndG9wJzpwYXJhbXNbZWwuaWRdLmhlaWdodC8yLTE1LCdsZWZ0JzowLCd6LWluZGV4JzoxMDAxLCdsaW5lLWhlaWdodCc6JzMwcHgnLCdvcGFjaXR5JzpwYXJhbXNbZWwuaWRdLm9wYWNpdHl9KS5jbGljayhmdW5jdGlvbihlKXtlLnByZXZlbnREZWZhdWx0KCk7JC50cmFuc2l0aW9uKGVsLCdwcmV2Jyk7JC50cmFuc2l0aW9uQ2FsbChlbCk7fSkubW91c2VvdmVyKGZ1bmN0aW9uKCl7JCgnI2NzLW5hdmlnYXRpb24tJytlbC5pZCkuc2hvdygpfSk7JCgnI2NzLW5leHQtJytlbC5pZCkuY3NzKHsncG9zaXRpb24nOidhYnNvbHV0ZScsJ3RvcCc6cGFyYW1zW2VsLmlkXS5oZWlnaHQvMi0xNSwncmlnaHQnOjAsJ3otaW5kZXgnOjEwMDEsJ2xpbmUtaGVpZ2h0JzonMzBweCcsJ29wYWNpdHknOnBhcmFtc1tlbC5pZF0ub3BhY2l0eX0pLmNsaWNrKGZ1bmN0aW9uKGUpe2UucHJldmVudERlZmF1bHQoKTskLnRyYW5zaXRpb24oZWwpOyQudHJhbnNpdGlvbkNhbGwoZWwpO30pLm1vdXNlb3ZlcihmdW5jdGlvbigpeyQoJyNjcy1uYXZpZ2F0aW9uLScrZWwuaWQpLnNob3coKX0pOyQoIjxkaXYgaWQ9J2NzLWJ1dHRvbnMtIitlbC5pZCsiJyBjbGFzcz0nY3MtYnV0dG9ucyc+PC9kaXY+IikuYXBwZW5kVG8oJCgnI2NvaW4tc2xpZGVyLScrZWwuaWQpKTtmb3Ioaz0xO2s8aW1hZ2VzW2VsLmlkXS5sZW5ndGgrMTtrKyspeyQoJyNjcy1idXR0b25zLScrZWwuaWQpLmFwcGVuZCgiPGEgaHJlZj0nIycgY2xhc3M9J2NzLWJ1dHRvbi0iK2VsLmlkKyInIGlkPSdjcy1idXR0b24tIitlbC5pZCsiLSIraysiJz4iK2srIjwvYT4iKTt9CiskLmVhY2goJCgnLmNzLWJ1dHRvbi0nK2VsLmlkKSxmdW5jdGlvbihpLGl0ZW0peyQoaXRlbSkuY2xpY2soZnVuY3Rpb24oZSl7JCgnLmNzLWJ1dHRvbi0nK2VsLmlkKS5yZW1vdmVDbGFzcygnY3MtYWN0aXZlJyk7JCh0aGlzKS5hZGRDbGFzcygnY3MtYWN0aXZlJyk7ZS5wcmV2ZW50RGVmYXVsdCgpOyQudHJhbnNpdGlvbihlbCxpKTskLnRyYW5zaXRpb25DYWxsKGVsKTt9KX0pOyQoJyNjcy1uYXZpZ2F0aW9uLScrZWwuaWQrJyBhJykubW91c2VvdXQoZnVuY3Rpb24oKXskKCcjY3MtbmF2aWdhdGlvbi0nK2VsLmlkKS5oaWRlKCk7cGFyYW1zW2VsLmlkXS5wYXVzZT1mYWxzZTt9KTskKCIjY3MtYnV0dG9ucy0iK2VsLmlkKS5jc3MoeydsZWZ0JzonNTAlJywnbWFyZ2luLWxlZnQnOi1pbWFnZXNbZWwuaWRdLmxlbmd0aCoxNS8yLTUsJ3Bvc2l0aW9uJzoncmVsYXRpdmUnfSk7fQorJC5lZmZlY3Q9ZnVuY3Rpb24oZWwpe2VmZkE9WydyYW5kb20nLCdzd2lybCcsJ3JhaW4nLCdzdHJhaWdodCddO2lmKHBhcmFtc1tlbC5pZF0uZWZmZWN0PT0nJykKK2VmZj1lZmZBW01hdGguZmxvb3IoTWF0aC5yYW5kb20oKSooZWZmQS5sZW5ndGgpKV07ZWxzZQorZWZmPXBhcmFtc1tlbC5pZF0uZWZmZWN0O29yZGVyW2VsLmlkXT1uZXcgQXJyYXkoKTtpZihlZmY9PSdyYW5kb20nKXtjb3VudGVyPTA7Zm9yKGk9MTtpPD1wYXJhbXNbZWwuaWRdLnNwaDtpKyspe2ZvcihqPTE7ajw9cGFyYW1zW2VsLmlkXS5zcHc7aisrKXtvcmRlcltlbC5pZF1bY291bnRlcl09aSsnJytqO2NvdW50ZXIrKzt9fQorJC5yYW5kb20ob3JkZXJbZWwuaWRdKTt9CitpZihlZmY9PSdyYWluJyl7JC5yYWluKGVsKTt9CitpZihlZmY9PSdzd2lybCcpCiskLnN3aXJsKGVsKTtpZihlZmY9PSdzdHJhaWdodCcpCiskLnN0cmFpZ2h0KGVsKTtyZXZlcnNlW2VsLmlkXSo9LTE7aWYocmV2ZXJzZVtlbC5pZF0+MCl7b3JkZXJbZWwuaWRdLnJldmVyc2UoKTt9fQorJC5yYW5kb209ZnVuY3Rpb24oYXJyKXt2YXIgaT1hcnIubGVuZ3RoO2lmKGk9PTApcmV0dXJuIGZhbHNlO3doaWxlKC0taSl7dmFyIGo9TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpKihpKzEpKTt2YXIgdGVtcGk9YXJyW2ldO3ZhciB0ZW1waj1hcnJbal07YXJyW2ldPXRlbXBqO2FycltqXT10ZW1waTt9fQorJC5zd2lybD1mdW5jdGlvbihlbCl7dmFyIG49cGFyYW1zW2VsLmlkXS5zcGg7dmFyIG09cGFyYW1zW2VsLmlkXS5zcHc7dmFyIHg9MTt2YXIgeT0xO3ZhciBnb2luZz0wO3ZhciBudW09MDt2YXIgYz0wO3ZhciBkb3doaWxlPXRydWU7d2hpbGUoZG93aGlsZSl7bnVtPShnb2luZz09MHx8Z29pbmc9PTIpP206bjtmb3IoaT0xO2k8PW51bTtpKyspe29yZGVyW2VsLmlkXVtjXT14KycnK3k7YysrO2lmKGkhPW51bSl7c3dpdGNoKGdvaW5nKXtjYXNlIDA6eSsrO2JyZWFrO2Nhc2UgMTp4Kys7YnJlYWs7Y2FzZSAyOnktLTticmVhaztjYXNlIDM6eC0tO2JyZWFrO319fQorZ29pbmc9KGdvaW5nKzEpJTQ7c3dpdGNoKGdvaW5nKXtjYXNlIDA6bS0tO3krKzticmVhaztjYXNlIDE6bi0tO3grKzticmVhaztjYXNlIDI6bS0tO3ktLTticmVhaztjYXNlIDM6bi0tO3gtLTticmVhazt9CitjaGVjaz0kLm1heChuLG0pLSQubWluKG4sbSk7aWYobTw9Y2hlY2smJm48PWNoZWNrKQorZG93aGlsZT1mYWxzZTt9fQorJC5yYWluPWZ1bmN0aW9uKGVsKXt2YXIgbj1wYXJhbXNbZWwuaWRdLnNwaDt2YXIgbT1wYXJhbXNbZWwuaWRdLnNwdzt2YXIgYz0wO3ZhciB0bz10bzI9ZnJvbT0xO3ZhciBkb3doaWxlPXRydWU7d2hpbGUoZG93aGlsZSl7Zm9yKGk9ZnJvbTtpPD10bztpKyspe29yZGVyW2VsLmlkXVtjXT1pKycnK3BhcnNlSW50KHRvMi1pKzEpO2MrKzt9Cit0bzIrKztpZih0bzxuJiZ0bzI8bSYmbjxtKXt0bysrO30KK2lmKHRvPG4mJm4+PW0pe3RvKys7fQoraWYodG8yPm0pe2Zyb20rKzt9CitpZihmcm9tPnRvKWRvd2hpbGU9ZmFsc2U7fX0KKyQuc3RyYWlnaHQ9ZnVuY3Rpb24oZWwpe2NvdW50ZXI9MDtmb3IoaT0xO2k8PXBhcmFtc1tlbC5pZF0uc3BoO2krKyl7Zm9yKGo9MTtqPD1wYXJhbXNbZWwuaWRdLnNwdztqKyspe29yZGVyW2VsLmlkXVtjb3VudGVyXT1pKycnK2o7Y291bnRlcisrO319fQorJC5taW49ZnVuY3Rpb24obixtKXtpZihuPm0pcmV0dXJuIG07ZWxzZSByZXR1cm4gbjt9CiskLm1heD1mdW5jdGlvbihuLG0pe2lmKG48bSlyZXR1cm4gbTtlbHNlIHJldHVybiBuO30KK3RoaXMuZWFjaChmdW5jdGlvbigpe2luaXQodGhpcyk7fSk7fTskLmZuLmNvaW5zbGlkZXIuZGVmYXVsdHM9e3dpZHRoOjU2NSxoZWlnaHQ6MjkwLHNwdzo3LHNwaDo1LGRlbGF5OjMwMDAsc0RlbGF5OjMwLG9wYWNpdHk6MC43LHRpdGxlU3BlZWQ6NTAwLGVmZmVjdDonJyxuYXZpZ2F0aW9uOnRydWUsbGlua3M6dHJ1ZSxob3ZlclBhdXNlOnRydWV9O30pKGpRdWVyeSk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9qcy9qcXVlcnktMS43LjEubWluLmpzIGIvZG9jcy9qcy9qcXVlcnktMS43LjEubWluLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5OGIzZmYKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2pzL2pxdWVyeS0xLjcuMS5taW4uanMKQEAgLTAsMCArMSw0IEBACisvKiEgalF1ZXJ5IHYxLjcuMSBqcXVlcnkuY29tIHwganF1ZXJ5Lm9yZy9saWNlbnNlICovCisoZnVuY3Rpb24oYSxiKXtmdW5jdGlvbiBjeShhKXtyZXR1cm4gZi5pc1dpbmRvdyhhKT9hOmEubm9kZVR5cGU9PT05P2EuZGVmYXVsdFZpZXd8fGEucGFyZW50V2luZG93OiExfWZ1bmN0aW9uIGN2KGEpe2lmKCFja1thXSl7dmFyIGI9Yy5ib2R5LGQ9ZigiPCIrYSsiPiIpLmFwcGVuZFRvKGIpLGU9ZC5jc3MoImRpc3BsYXkiKTtkLnJlbW92ZSgpO2lmKGU9PT0ibm9uZSJ8fGU9PT0iIil7Y2x8fChjbD1jLmNyZWF0ZUVsZW1lbnQoImlmcmFtZSIpLGNsLmZyYW1lQm9yZGVyPWNsLndpZHRoPWNsLmhlaWdodD0wKSxiLmFwcGVuZENoaWxkKGNsKTtpZighY218fCFjbC5jcmVhdGVFbGVtZW50KWNtPShjbC5jb250ZW50V2luZG93fHxjbC5jb250ZW50RG9jdW1lbnQpLmRvY3VtZW50LGNtLndyaXRlKChjLmNvbXBhdE1vZGU9PT0iQ1NTMUNvbXBhdCI/IjwhZG9jdHlwZSBodG1sPiI6IiIpKyI8aHRtbD48Ym9keT4iKSxjbS5jbG9zZSgpO2Q9Y20uY3JlYXRlRWxlbWVudChhKSxjbS5ib2R5LmFwcGVuZENoaWxkKGQpLGU9Zi5jc3MoZCwiZGlzcGxheSIpLGIucmVtb3ZlQ2hpbGQoY2wpfWNrW2FdPWV9cmV0dXJuIGNrW2FdfWZ1bmN0aW9uIGN1KGEsYil7dmFyIGM9e307Zi5lYWNoKGNxLmNvbmNhdC5hcHBseShbXSxjcS5zbGljZSgwLGIpKSxmdW5jdGlvbigpe2NbdGhpc109YX0pO3JldHVybiBjfWZ1bmN0aW9uIGN0KCl7Y3I9Yn1mdW5jdGlvbiBjcygpe3NldFRpbWVvdXQoY3QsMCk7cmV0dXJuIGNyPWYubm93KCl9ZnVuY3Rpb24gY2ooKXt0cnl7cmV0dXJuIG5ldyBhLkFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxIVFRQIil9Y2F0Y2goYil7fX1mdW5jdGlvbiBjaSgpe3RyeXtyZXR1cm4gbmV3IGEuWE1MSHR0cFJlcXVlc3R9Y2F0Y2goYil7fX1mdW5jdGlvbiBjYyhhLGMpe2EuZGF0YUZpbHRlciYmKGM9YS5kYXRhRmlsdGVyKGMsYS5kYXRhVHlwZSkpO3ZhciBkPWEuZGF0YVR5cGVzLGU9e30sZyxoLGk9ZC5sZW5ndGgsaixrPWRbMF0sbCxtLG4sbyxwO2ZvcihnPTE7ZzxpO2crKyl7aWYoZz09PTEpZm9yKGggaW4gYS5jb252ZXJ0ZXJzKXR5cGVvZiBoPT0ic3RyaW5nIiYmKGVbaC50b0xvd2VyQ2FzZSgpXT1hLmNvbnZlcnRlcnNbaF0pO2w9ayxrPWRbZ107aWYoaz09PSIqIilrPWw7ZWxzZSBpZihsIT09IioiJiZsIT09ayl7bT1sKyIgIitrLG49ZVttXXx8ZVsiKiAiK2tdO2lmKCFuKXtwPWI7Zm9yKG8gaW4gZSl7aj1vLnNwbGl0KCIgIik7aWYoalswXT09PWx8fGpbMF09PT0iKiIpe3A9ZVtqWzFdKyIgIitrXTtpZihwKXtvPWVbb10sbz09PSEwP249cDpwPT09ITAmJihuPW8pO2JyZWFrfX19fSFuJiYhcCYmZi5lcnJvcigiTm8gY29udmVyc2lvbiBmcm9tICIrbS5yZXBsYWNlKCIgIiwiIHRvICIpKSxuIT09ITAmJihjPW4/bihjKTpwKG8oYykpKX19cmV0dXJuIGN9ZnVuY3Rpb24gY2IoYSxjLGQpe3ZhciBlPWEuY29udGVudHMsZj1hLmRhdGFUeXBlcyxnPWEucmVzcG9uc2VGaWVsZHMsaCxpLGosaztmb3IoaSBpbiBnKWkgaW4gZCYmKGNbZ1tpXV09ZFtpXSk7d2hpbGUoZlswXT09PSIqIilmLnNoaWZ0KCksaD09PWImJihoPWEubWltZVR5cGV8fGMuZ2V0UmVzcG9uc2VIZWFkZXIoImNvbnRlbnQtdHlwZSIpKTtpZihoKWZvcihpIGluIGUpaWYoZVtpXSYmZVtpXS50ZXN0KGgpKXtmLnVuc2hpZnQoaSk7YnJlYWt9aWYoZlswXWluIGQpaj1mWzBdO2Vsc2V7Zm9yKGkgaW4gZCl7aWYoIWZbMF18fGEuY29udmVydGVyc1tpKyIgIitmWzBdXSl7aj1pO2JyZWFrfWt8fChrPWkpfWo9anx8a31pZihqKXtqIT09ZlswXSYmZi51bnNoaWZ0KGopO3JldHVybiBkW2pdfX1mdW5jdGlvbiBjYShhLGIsYyxkKXtpZihmLmlzQXJyYXkoYikpZi5lYWNoKGIsZnVuY3Rpb24oYixlKXtjfHxiRS50ZXN0KGEpP2QoYSxlKTpjYShhKyJbIisodHlwZW9mIGU9PSJvYmplY3QifHxmLmlzQXJyYXkoZSk/YjoiIikrIl0iLGUsYyxkKX0pO2Vsc2UgaWYoIWMmJmIhPW51bGwmJnR5cGVvZiBiPT0ib2JqZWN0Iilmb3IodmFyIGUgaW4gYiljYShhKyJbIitlKyJdIixiW2VdLGMsZCk7ZWxzZSBkKGEsYil9ZnVuY3Rpb24gYl8oYSxjKXt2YXIgZCxlLGc9Zi5hamF4U2V0dGluZ3MuZmxhdE9wdGlvbnN8fHt9O2ZvcihkIGluIGMpY1tkXSE9PWImJigoZ1tkXT9hOmV8fChlPXt9KSlbZF09Y1tkXSk7ZSYmZi5leHRlbmQoITAsYSxlKX1mdW5jdGlvbiBiJChhLGMsZCxlLGYsZyl7Zj1mfHxjLmRhdGFUeXBlc1swXSxnPWd8fHt9LGdbZl09ITA7dmFyIGg9YVtmXSxpPTAsaj1oP2gubGVuZ3RoOjAsaz1hPT09YlQsbDtmb3IoO2k8aiYmKGt8fCFsKTtpKyspbD1oW2ldKGMsZCxlKSx0eXBlb2YgbD09InN0cmluZyImJigha3x8Z1tsXT9sPWI6KGMuZGF0YVR5cGVzLnVuc2hpZnQobCksbD1iJChhLGMsZCxlLGwsZykpKTsoa3x8IWwpJiYhZ1siKiJdJiYobD1iJChhLGMsZCxlLCIqIixnKSk7cmV0dXJuIGx9ZnVuY3Rpb24gYlooYSl7cmV0dXJuIGZ1bmN0aW9uKGIsYyl7dHlwZW9mIGIhPSJzdHJpbmciJiYoYz1iLGI9IioiKTtpZihmLmlzRnVuY3Rpb24oYykpe3ZhciBkPWIudG9Mb3dlckNhc2UoKS5zcGxpdChiUCksZT0wLGc9ZC5sZW5ndGgsaCxpLGo7Zm9yKDtlPGc7ZSsrKWg9ZFtlXSxqPS9eXCsvLnRlc3QoaCksaiYmKGg9aC5zdWJzdHIoMSl8fCIqIiksaT1hW2hdPWFbaF18fFtdLGlbaj8idW5zaGlmdCI6InB1c2giXShjKX19fWZ1bmN0aW9uIGJDKGEsYixjKXt2YXIgZD1iPT09IndpZHRoIj9hLm9mZnNldFdpZHRoOmEub2Zmc2V0SGVpZ2h0LGU9Yj09PSJ3aWR0aCI/Yng6YnksZz0wLGg9ZS5sZW5ndGg7aWYoZD4wKXtpZihjIT09ImJvcmRlciIpZm9yKDtnPGg7ZysrKWN8fChkLT1wYXJzZUZsb2F0KGYuY3NzKGEsInBhZGRpbmciK2VbZ10pKXx8MCksYz09PSJtYXJnaW4iP2QrPXBhcnNlRmxvYXQoZi5jc3MoYSxjK2VbZ10pKXx8MDpkLT1wYXJzZUZsb2F0KGYuY3NzKGEsImJvcmRlciIrZVtnXSsiV2lkdGgiKSl8fDA7cmV0dXJuIGQrInB4In1kPWJ6KGEsYixiKTtpZihkPDB8fGQ9PW51bGwpZD1hLnN0eWxlW2JdfHwwO2Q9cGFyc2VGbG9hdChkKXx8MDtpZihjKWZvcig7ZzxoO2crKylkKz1wYXJzZUZsb2F0KGYuY3NzKGEsInBhZGRpbmciK2VbZ10pKXx8MCxjIT09InBhZGRpbmciJiYoZCs9cGFyc2VGbG9hdChmLmNzcyhhLCJib3JkZXIiK2VbZ10rIldpZHRoIikpfHwwKSxjPT09Im1hcmdpbiImJihkKz1wYXJzZUZsb2F0KGYuY3NzKGEsYytlW2ddKSl8fDApO3JldHVybiBkKyJweCJ9ZnVuY3Rpb24gYnAoYSxiKXtiLnNyYz9mLmFqYXgoe3VybDpiLnNyYyxhc3luYzohMSxkYXRhVHlwZToic2NyaXB0In0pOmYuZ2xvYmFsRXZhbCgoYi50ZXh0fHxiLnRleHRDb250ZW50fHxiLmlubmVySFRNTHx8IiIpLnJlcGxhY2UoYmYsIi8qJDAqLyIpKSxiLnBhcmVudE5vZGUmJmIucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChiKX1mdW5jdGlvbiBibyhhKXt2YXIgYj1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2JoLmFwcGVuZENoaWxkKGIpLGIuaW5uZXJIVE1MPWEub3V0ZXJIVE1MO3JldHVybiBiLmZpcnN0Q2hpbGR9ZnVuY3Rpb24gYm4oYSl7dmFyIGI9KGEubm9kZU5hbWV8fCIiKS50b0xvd2VyQ2FzZSgpO2I9PT0iaW5wdXQiP2JtKGEpOmIhPT0ic2NyaXB0IiYmdHlwZW9mIGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUhPSJ1bmRlZmluZWQiJiZmLmdyZXAoYS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiaW5wdXQiKSxibSl9ZnVuY3Rpb24gYm0oYSl7aWYoYS50eXBlPT09ImNoZWNrYm94Inx8YS50eXBlPT09InJhZGlvIilhLmRlZmF1bHRDaGVja2VkPWEuY2hlY2tlZH1mdW5jdGlvbiBibChhKXtyZXR1cm4gdHlwZW9mIGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUhPSJ1bmRlZmluZWQiP2EuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKTp0eXBlb2YgYS5xdWVyeVNlbGVjdG9yQWxsIT0idW5kZWZpbmVkIj9hLnF1ZXJ5U2VsZWN0b3JBbGwoIioiKTpbXX1mdW5jdGlvbiBiayhhLGIpe3ZhciBjO2lmKGIubm9kZVR5cGU9PT0xKXtiLmNsZWFyQXR0cmlidXRlcyYmYi5jbGVhckF0dHJpYnV0ZXMoKSxiLm1lcmdlQXR0cmlidXRlcyYmYi5tZXJnZUF0dHJpYnV0ZXMoYSksYz1iLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7aWYoYz09PSJvYmplY3QiKWIub3V0ZXJIVE1MPWEub3V0ZXJIVE1MO2Vsc2UgaWYoYyE9PSJpbnB1dCJ8fGEudHlwZSE9PSJjaGVja2JveCImJmEudHlwZSE9PSJyYWRpbyIpe2lmKGM9PT0ib3B0aW9uIiliLnNlbGVjdGVkPWEuZGVmYXVsdFNlbGVjdGVkO2Vsc2UgaWYoYz09PSJpbnB1dCJ8fGM9PT0idGV4dGFyZWEiKWIuZGVmYXVsdFZhbHVlPWEuZGVmYXVsdFZhbHVlfWVsc2UgYS5jaGVja2VkJiYoYi5kZWZhdWx0Q2hlY2tlZD1iLmNoZWNrZWQ9YS5jaGVja2VkKSxiLnZhbHVlIT09YS52YWx1ZSYmKGIudmFsdWU9YS52YWx1ZSk7Yi5yZW1vdmVBdHRyaWJ1dGUoZi5leHBhbmRvKX19ZnVuY3Rpb24gYmooYSxiKXtpZihiLm5vZGVUeXBlPT09MSYmISFmLmhhc0RhdGEoYSkpe3ZhciBjLGQsZSxnPWYuX2RhdGEoYSksaD1mLl9kYXRhKGIsZyksaT1nLmV2ZW50cztpZihpKXtkZWxldGUgaC5oYW5kbGUsaC5ldmVudHM9e307Zm9yKGMgaW4gaSlmb3IoZD0wLGU9aVtjXS5sZW5ndGg7ZDxlO2QrKylmLmV2ZW50LmFkZChiLGMrKGlbY11bZF0ubmFtZXNwYWNlPyIuIjoiIikraVtjXVtkXS5uYW1lc3BhY2UsaVtjXVtkXSxpW2NdW2RdLmRhdGEpfWguZGF0YSYmKGguZGF0YT1mLmV4dGVuZCh7fSxoLmRhdGEpKX19ZnVuY3Rpb24gYmkoYSxiKXtyZXR1cm4gZi5ub2RlTmFtZShhLCJ0YWJsZSIpP2EuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRib2R5IilbMF18fGEuYXBwZW5kQ2hpbGQoYS5vd25lckRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInRib2R5IikpOmF9ZnVuY3Rpb24gVShhKXt2YXIgYj1WLnNwbGl0KCJ8IiksYz1hLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTtpZihjLmNyZWF0ZUVsZW1lbnQpd2hpbGUoYi5sZW5ndGgpYy5jcmVhdGVFbGVtZW50KGIucG9wKCkpO3JldHVybiBjfWZ1bmN0aW9uIFQoYSxiLGMpe2I9Ynx8MDtpZihmLmlzRnVuY3Rpb24oYikpcmV0dXJuIGYuZ3JlcChhLGZ1bmN0aW9uKGEsZCl7dmFyIGU9ISFiLmNhbGwoYSxkLGEpO3JldHVybiBlPT09Y30pO2lmKGIubm9kZVR5cGUpcmV0dXJuIGYuZ3JlcChhLGZ1bmN0aW9uKGEsZCl7cmV0dXJuIGE9PT1iPT09Y30pO2lmKHR5cGVvZiBiPT0ic3RyaW5nIil7dmFyIGQ9Zi5ncmVwKGEsZnVuY3Rpb24oYSl7cmV0dXJuIGEubm9kZVR5cGU9PT0xfSk7aWYoTy50ZXN0KGIpKXJldHVybiBmLmZpbHRlcihiLGQsIWMpO2I9Zi5maWx0ZXIoYixkKX1yZXR1cm4gZi5ncmVwKGEsZnVuY3Rpb24oYSxkKXtyZXR1cm4gZi5pbkFycmF5KGEsYik+PTA9PT1jfSl9ZnVuY3Rpb24gUyhhKXtyZXR1cm4hYXx8IWEucGFyZW50Tm9kZXx8YS5wYXJlbnROb2RlLm5vZGVUeXBlPT09MTF9ZnVuY3Rpb24gSygpe3JldHVybiEwfWZ1bmN0aW9uIEooKXtyZXR1cm4hMX1mdW5jdGlvbiBuKGEsYixjKXt2YXIgZD1iKyJkZWZlciIsZT1iKyJxdWV1ZSIsZz1iKyJtYXJrIixoPWYuX2RhdGEoYSxkKTtoJiYoYz09PSJxdWV1ZSJ8fCFmLl9kYXRhKGEsZSkpJiYoYz09PSJtYXJrInx8IWYuX2RhdGEoYSxnKSkmJnNldFRpbWVvdXQoZnVuY3Rpb24oKXshZi5fZGF0YShhLGUpJiYhZi5fZGF0YShhLGcpJiYoZi5yZW1vdmVEYXRhKGEsZCwhMCksaC5maXJlKCkpfSwwKX1mdW5jdGlvbiBtKGEpe2Zvcih2YXIgYiBpbiBhKXtpZihiPT09ImRhdGEiJiZmLmlzRW1wdHlPYmplY3QoYVtiXSkpY29udGludWU7aWYoYiE9PSJ0b0pTT04iKXJldHVybiExfXJldHVybiEwfWZ1bmN0aW9uIGwoYSxjLGQpe2lmKGQ9PT1iJiZhLm5vZGVUeXBlPT09MSl7dmFyIGU9ImRhdGEtIitjLnJlcGxhY2UoaywiLSQxIikudG9Mb3dlckNhc2UoKTtkPWEuZ2V0QXR0cmlidXRlKGUpO2lmKHR5cGVvZiBkPT0ic3RyaW5nIil7dHJ5e2Q9ZD09PSJ0cnVlIj8hMDpkPT09ImZhbHNlIj8hMTpkPT09Im51bGwiP251bGw6Zi5pc051bWVyaWMoZCk/cGFyc2VGbG9hdChkKTpqLnRlc3QoZCk/Zi5wYXJzZUpTT04oZCk6ZH1jYXRjaChnKXt9Zi5kYXRhKGEsYyxkKX1lbHNlIGQ9Yn1yZXR1cm4gZH1mdW5jdGlvbiBoKGEpe3ZhciBiPWdbYV09e30sYyxkO2E9YS5zcGxpdCgvXHMrLyk7Zm9yKGM9MCxkPWEubGVuZ3RoO2M8ZDtjKyspYlthW2NdXT0hMDtyZXR1cm4gYn12YXIgYz1hLmRvY3VtZW50LGQ9YS5uYXZpZ2F0b3IsZT1hLmxvY2F0aW9uLGY9ZnVuY3Rpb24oKXtmdW5jdGlvbiBKKCl7aWYoIWUuaXNSZWFkeSl7dHJ5e2MuZG9jdW1lbnRFbGVtZW50LmRvU2Nyb2xsKCJsZWZ0Iil9Y2F0Y2goYSl7c2V0VGltZW91dChKLDEpO3JldHVybn1lLnJlYWR5KCl9fXZhciBlPWZ1bmN0aW9uKGEsYil7cmV0dXJuIG5ldyBlLmZuLmluaXQoYSxiLGgpfSxmPWEualF1ZXJ5LGc9YS4kLGgsaT0vXig/OlteIzxdKig8W1x3XFddKz4pW14+XSokfCMoW1x3XC1dKikkKS8saj0vXFMvLGs9L15ccysvLGw9L1xzKyQvLG09L148KFx3KylccypcLz8+KD86PFwvXDE+KT8kLyxuPS9eW1xdLDp7fVxzXSokLyxvPS9cXCg/OlsiXFxcL2JmbnJ0XXx1WzAtOWEtZkEtRl17NH0pL2cscD0vIlteIlxcXG5ccl0qInx0cnVlfGZhbHNlfG51bGx8LT9cZCsoPzpcLlxkKik/KD86W2VFXVsrXC1dP1xkKyk/L2cscT0vKD86Xnw6fCwpKD86XHMqXFspKy9nLHI9Lyh3ZWJraXQpWyBcL10oW1x3Ll0rKS8scz0vKG9wZXJhKSg/Oi4qdmVyc2lvbik/WyBcL10oW1x3Ll0rKS8sdD0vKG1zaWUpIChbXHcuXSspLyx1PS8obW96aWxsYSkoPzouKj8gcnY6KFtcdy5dKykpPy8sdj0vLShbYS16XXxbMC05XSkvaWcsdz0vXi1tcy0vLHg9ZnVuY3Rpb24oYSxiKXtyZXR1cm4oYisiIikudG9VcHBlckNhc2UoKX0seT1kLnVzZXJBZ2VudCx6LEEsQixDPU9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcsRD1PYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LEU9QXJyYXkucHJvdG90eXBlLnB1c2gsRj1BcnJheS5wcm90b3R5cGUuc2xpY2UsRz1TdHJpbmcucHJvdG90eXBlLnRyaW0sSD1BcnJheS5wcm90b3R5cGUuaW5kZXhPZixJPXt9O2UuZm49ZS5wcm90b3R5cGU9e2NvbnN0cnVjdG9yOmUsaW5pdDpmdW5jdGlvbihhLGQsZil7dmFyIGcsaCxqLGs7aWYoIWEpcmV0dXJuIHRoaXM7aWYoYS5ub2RlVHlwZSl7dGhpcy5jb250ZXh0PXRoaXNbMF09YSx0aGlzLmxlbmd0aD0xO3JldHVybiB0aGlzfWlmKGE9PT0iYm9keSImJiFkJiZjLmJvZHkpe3RoaXMuY29udGV4dD1jLHRoaXNbMF09Yy5ib2R5LHRoaXMuc2VsZWN0b3I9YSx0aGlzLmxlbmd0aD0xO3JldHVybiB0aGlzfWlmKHR5cGVvZiBhPT0ic3RyaW5nIil7YS5jaGFyQXQoMCkhPT0iPCJ8fGEuY2hhckF0KGEubGVuZ3RoLTEpIT09Ij4ifHxhLmxlbmd0aDwzP2c9aS5leGVjKGEpOmc9W251bGwsYSxudWxsXTtpZihnJiYoZ1sxXXx8IWQpKXtpZihnWzFdKXtkPWQgaW5zdGFuY2VvZiBlP2RbMF06ZCxrPWQ/ZC5vd25lckRvY3VtZW50fHxkOmMsaj1tLmV4ZWMoYSksaj9lLmlzUGxhaW5PYmplY3QoZCk/KGE9W2MuY3JlYXRlRWxlbWVudChqWzFdKV0sZS5mbi5hdHRyLmNhbGwoYSxkLCEwKSk6YT1bay5jcmVhdGVFbGVtZW50KGpbMV0pXTooaj1lLmJ1aWxkRnJhZ21lbnQoW2dbMV1dLFtrXSksYT0oai5jYWNoZWFibGU/ZS5jbG9uZShqLmZyYWdtZW50KTpqLmZyYWdtZW50KS5jaGlsZE5vZGVzKTtyZXR1cm4gZS5tZXJnZSh0aGlzLGEpfWg9Yy5nZXRFbGVtZW50QnlJZChnWzJdKTtpZihoJiZoLnBhcmVudE5vZGUpe2lmKGguaWQhPT1nWzJdKXJldHVybiBmLmZpbmQoYSk7dGhpcy5sZW5ndGg9MSx0aGlzWzBdPWh9dGhpcy5jb250ZXh0PWMsdGhpcy5zZWxlY3Rvcj1hO3JldHVybiB0aGlzfXJldHVybiFkfHxkLmpxdWVyeT8oZHx8ZikuZmluZChhKTp0aGlzLmNvbnN0cnVjdG9yKGQpLmZpbmQoYSl9aWYoZS5pc0Z1bmN0aW9uKGEpKXJldHVybiBmLnJlYWR5KGEpO2Euc2VsZWN0b3IhPT1iJiYodGhpcy5zZWxlY3Rvcj1hLnNlbGVjdG9yLHRoaXMuY29udGV4dD1hLmNvbnRleHQpO3JldHVybiBlLm1ha2VBcnJheShhLHRoaXMpfSxzZWxlY3RvcjoiIixqcXVlcnk6IjEuNy4xIixsZW5ndGg6MCxzaXplOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubGVuZ3RofSx0b0FycmF5OmZ1bmN0aW9uKCl7cmV0dXJuIEYuY2FsbCh0aGlzLDApfSxnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PW51bGw/dGhpcy50b0FycmF5KCk6YTwwP3RoaXNbdGhpcy5sZW5ndGgrYV06dGhpc1thXX0scHVzaFN0YWNrOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD10aGlzLmNvbnN0cnVjdG9yKCk7ZS5pc0FycmF5KGEpP0UuYXBwbHkoZCxhKTplLm1lcmdlKGQsYSksZC5wcmV2T2JqZWN0PXRoaXMsZC5jb250ZXh0PXRoaXMuY29udGV4dCxiPT09ImZpbmQiP2Quc2VsZWN0b3I9dGhpcy5zZWxlY3RvcisodGhpcy5zZWxlY3Rvcj8iICI6IiIpK2M6YiYmKGQuc2VsZWN0b3I9dGhpcy5zZWxlY3RvcisiLiIrYisiKCIrYysiKSIpO3JldHVybiBkfSxlYWNoOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGUuZWFjaCh0aGlzLGEsYil9LHJlYWR5OmZ1bmN0aW9uKGEpe2UuYmluZFJlYWR5KCksQS5hZGQoYSk7cmV0dXJuIHRoaXN9LGVxOmZ1bmN0aW9uKGEpe2E9K2E7cmV0dXJuIGE9PT0tMT90aGlzLnNsaWNlKGEpOnRoaXMuc2xpY2UoYSxhKzEpfSxmaXJzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKDApfSxsYXN0OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZXEoLTEpfSxzbGljZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLnB1c2hTdGFjayhGLmFwcGx5KHRoaXMsYXJndW1lbnRzKSwic2xpY2UiLEYuY2FsbChhcmd1bWVudHMpLmpvaW4oIiwiKSl9LG1hcDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZS5tYXAodGhpcyxmdW5jdGlvbihiLGMpe3JldHVybiBhLmNhbGwoYixjLGIpfSkpfSxlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wcmV2T2JqZWN0fHx0aGlzLmNvbnN0cnVjdG9yKG51bGwpfSxwdXNoOkUsc29ydDpbXS5zb3J0LHNwbGljZTpbXS5zcGxpY2V9LGUuZm4uaW5pdC5wcm90b3R5cGU9ZS5mbixlLmV4dGVuZD1lLmZuLmV4dGVuZD1mdW5jdGlvbigpe3ZhciBhLGMsZCxmLGcsaCxpPWFyZ3VtZW50c1swXXx8e30saj0xLGs9YXJndW1lbnRzLmxlbmd0aCxsPSExO3R5cGVvZiBpPT0iYm9vbGVhbiImJihsPWksaT1hcmd1bWVudHNbMV18fHt9LGo9MiksdHlwZW9mIGkhPSJvYmplY3QiJiYhZS5pc0Z1bmN0aW9uKGkpJiYoaT17fSksaz09PWomJihpPXRoaXMsLS1qKTtmb3IoO2o8aztqKyspaWYoKGE9YXJndW1lbnRzW2pdKSE9bnVsbClmb3IoYyBpbiBhKXtkPWlbY10sZj1hW2NdO2lmKGk9PT1mKWNvbnRpbnVlO2wmJmYmJihlLmlzUGxhaW5PYmplY3QoZil8fChnPWUuaXNBcnJheShmKSkpPyhnPyhnPSExLGg9ZCYmZS5pc0FycmF5KGQpP2Q6W10pOmg9ZCYmZS5pc1BsYWluT2JqZWN0KGQpP2Q6e30saVtjXT1lLmV4dGVuZChsLGgsZikpOmYhPT1iJiYoaVtjXT1mKX1yZXR1cm4gaX0sZS5leHRlbmQoe25vQ29uZmxpY3Q6ZnVuY3Rpb24oYil7YS4kPT09ZSYmKGEuJD1nKSxiJiZhLmpRdWVyeT09PWUmJihhLmpRdWVyeT1mKTtyZXR1cm4gZX0saXNSZWFkeTohMSxyZWFkeVdhaXQ6MSxob2xkUmVhZHk6ZnVuY3Rpb24oYSl7YT9lLnJlYWR5V2FpdCsrOmUucmVhZHkoITApfSxyZWFkeTpmdW5jdGlvbihhKXtpZihhPT09ITAmJiEtLWUucmVhZHlXYWl0fHxhIT09ITAmJiFlLmlzUmVhZHkpe2lmKCFjLmJvZHkpcmV0dXJuIHNldFRpbWVvdXQoZS5yZWFkeSwxKTtlLmlzUmVhZHk9ITA7aWYoYSE9PSEwJiYtLWUucmVhZHlXYWl0PjApcmV0dXJuO0EuZmlyZVdpdGgoYyxbZV0pLGUuZm4udHJpZ2dlciYmZShjKS50cmlnZ2VyKCJyZWFkeSIpLm9mZigicmVhZHkiKX19LGJpbmRSZWFkeTpmdW5jdGlvbigpe2lmKCFBKXtBPWUuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpO2lmKGMucmVhZHlTdGF0ZT09PSJjb21wbGV0ZSIpcmV0dXJuIHNldFRpbWVvdXQoZS5yZWFkeSwxKTtpZihjLmFkZEV2ZW50TGlzdGVuZXIpYy5hZGRFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixCLCExKSxhLmFkZEV2ZW50TGlzdGVuZXIoImxvYWQiLGUucmVhZHksITEpO2Vsc2UgaWYoYy5hdHRhY2hFdmVudCl7Yy5hdHRhY2hFdmVudCgib25yZWFkeXN0YXRlY2hhbmdlIixCKSxhLmF0dGFjaEV2ZW50KCJvbmxvYWQiLGUucmVhZHkpO3ZhciBiPSExO3RyeXtiPWEuZnJhbWVFbGVtZW50PT1udWxsfWNhdGNoKGQpe31jLmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbCYmYiYmSigpfX19LGlzRnVuY3Rpb246ZnVuY3Rpb24oYSl7cmV0dXJuIGUudHlwZShhKT09PSJmdW5jdGlvbiJ9LGlzQXJyYXk6QXJyYXkuaXNBcnJheXx8ZnVuY3Rpb24oYSl7cmV0dXJuIGUudHlwZShhKT09PSJhcnJheSJ9LGlzV2luZG93OmZ1bmN0aW9uKGEpe3JldHVybiBhJiZ0eXBlb2YgYT09Im9iamVjdCImJiJzZXRJbnRlcnZhbCJpbiBhfSxpc051bWVyaWM6ZnVuY3Rpb24oYSl7cmV0dXJuIWlzTmFOKHBhcnNlRmxvYXQoYSkpJiZpc0Zpbml0ZShhKX0sdHlwZTpmdW5jdGlvbihhKXtyZXR1cm4gYT09bnVsbD9TdHJpbmcoYSk6SVtDLmNhbGwoYSldfHwib2JqZWN0In0saXNQbGFpbk9iamVjdDpmdW5jdGlvbihhKXtpZighYXx8ZS50eXBlKGEpIT09Im9iamVjdCJ8fGEubm9kZVR5cGV8fGUuaXNXaW5kb3coYSkpcmV0dXJuITE7dHJ5e2lmKGEuY29uc3RydWN0b3ImJiFELmNhbGwoYSwiY29uc3RydWN0b3IiKSYmIUQuY2FsbChhLmNvbnN0cnVjdG9yLnByb3RvdHlwZSwiaXNQcm90b3R5cGVPZiIpKXJldHVybiExfWNhdGNoKGMpe3JldHVybiExfXZhciBkO2ZvcihkIGluIGEpO3JldHVybiBkPT09Ynx8RC5jYWxsKGEsZCl9LGlzRW1wdHlPYmplY3Q6ZnVuY3Rpb24oYSl7Zm9yKHZhciBiIGluIGEpcmV0dXJuITE7cmV0dXJuITB9LGVycm9yOmZ1bmN0aW9uKGEpe3Rocm93IG5ldyBFcnJvcihhKX0scGFyc2VKU09OOmZ1bmN0aW9uKGIpe2lmKHR5cGVvZiBiIT0ic3RyaW5nInx8IWIpcmV0dXJuIG51bGw7Yj1lLnRyaW0oYik7aWYoYS5KU09OJiZhLkpTT04ucGFyc2UpcmV0dXJuIGEuSlNPTi5wYXJzZShiKTtpZihuLnRlc3QoYi5yZXBsYWNlKG8sIkAiKS5yZXBsYWNlKHAsIl0iKS5yZXBsYWNlKHEsIiIpKSlyZXR1cm4obmV3IEZ1bmN0aW9uKCJyZXR1cm4gIitiKSkoKTtlLmVycm9yKCJJbnZhbGlkIEpTT046ICIrYil9LHBhcnNlWE1MOmZ1bmN0aW9uKGMpe3ZhciBkLGY7dHJ5e2EuRE9NUGFyc2VyPyhmPW5ldyBET01QYXJzZXIsZD1mLnBhcnNlRnJvbVN0cmluZyhjLCJ0ZXh0L3htbCIpKTooZD1uZXcgQWN0aXZlWE9iamVjdCgiTWljcm9zb2Z0LlhNTERPTSIpLGQuYXN5bmM9ImZhbHNlIixkLmxvYWRYTUwoYykpfWNhdGNoKGcpe2Q9Yn0oIWR8fCFkLmRvY3VtZW50RWxlbWVudHx8ZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgicGFyc2VyZXJyb3IiKS5sZW5ndGgpJiZlLmVycm9yKCJJbnZhbGlkIFhNTDogIitjKTtyZXR1cm4gZH0sbm9vcDpmdW5jdGlvbigpe30sZ2xvYmFsRXZhbDpmdW5jdGlvbihiKXtiJiZqLnRlc3QoYikmJihhLmV4ZWNTY3JpcHR8fGZ1bmN0aW9uKGIpe2EuZXZhbC5jYWxsKGEsYil9KShiKX0sY2FtZWxDYXNlOmZ1bmN0aW9uKGEpe3JldHVybiBhLnJlcGxhY2UodywibXMtIikucmVwbGFjZSh2LHgpfSxub2RlTmFtZTpmdW5jdGlvbihhLGIpe3JldHVybiBhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvVXBwZXJDYXNlKCk9PT1iLnRvVXBwZXJDYXNlKCl9LGVhY2g6ZnVuY3Rpb24oYSxjLGQpe3ZhciBmLGc9MCxoPWEubGVuZ3RoLGk9aD09PWJ8fGUuaXNGdW5jdGlvbihhKTtpZihkKXtpZihpKXtmb3IoZiBpbiBhKWlmKGMuYXBwbHkoYVtmXSxkKT09PSExKWJyZWFrfWVsc2UgZm9yKDtnPGg7KWlmKGMuYXBwbHkoYVtnKytdLGQpPT09ITEpYnJlYWt9ZWxzZSBpZihpKXtmb3IoZiBpbiBhKWlmKGMuY2FsbChhW2ZdLGYsYVtmXSk9PT0hMSlicmVha31lbHNlIGZvcig7ZzxoOylpZihjLmNhbGwoYVtnXSxnLGFbZysrXSk9PT0hMSlicmVhaztyZXR1cm4gYX0sdHJpbTpHP2Z1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsPyIiOkcuY2FsbChhKX06ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PW51bGw/IiI6KGErIiIpLnJlcGxhY2UoaywiIikucmVwbGFjZShsLCIiKX0sbWFrZUFycmF5OmZ1bmN0aW9uKGEsYil7dmFyIGM9Ynx8W107aWYoYSE9bnVsbCl7dmFyIGQ9ZS50eXBlKGEpO2EubGVuZ3RoPT1udWxsfHxkPT09InN0cmluZyJ8fGQ9PT0iZnVuY3Rpb24ifHxkPT09InJlZ2V4cCJ8fGUuaXNXaW5kb3coYSk/RS5jYWxsKGMsYSk6ZS5tZXJnZShjLGEpfXJldHVybiBjfSxpbkFycmF5OmZ1bmN0aW9uKGEsYixjKXt2YXIgZDtpZihiKXtpZihIKXJldHVybiBILmNhbGwoYixhLGMpO2Q9Yi5sZW5ndGgsYz1jP2M8MD9NYXRoLm1heCgwLGQrYyk6YzowO2Zvcig7YzxkO2MrKylpZihjIGluIGImJmJbY109PT1hKXJldHVybiBjfXJldHVybi0xfSxtZXJnZTpmdW5jdGlvbihhLGMpe3ZhciBkPWEubGVuZ3RoLGU9MDtpZih0eXBlb2YgYy5sZW5ndGg9PSJudW1iZXIiKWZvcih2YXIgZj1jLmxlbmd0aDtlPGY7ZSsrKWFbZCsrXT1jW2VdO2Vsc2Ugd2hpbGUoY1tlXSE9PWIpYVtkKytdPWNbZSsrXTthLmxlbmd0aD1kO3JldHVybiBhfSxncmVwOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1bXSxlO2M9ISFjO2Zvcih2YXIgZj0wLGc9YS5sZW5ndGg7ZjxnO2YrKyllPSEhYihhW2ZdLGYpLGMhPT1lJiZkLnB1c2goYVtmXSk7cmV0dXJuIGR9LG1hcDpmdW5jdGlvbihhLGMsZCl7dmFyIGYsZyxoPVtdLGk9MCxqPWEubGVuZ3RoLGs9YSBpbnN0YW5jZW9mIGV8fGohPT1iJiZ0eXBlb2Ygaj09Im51bWJlciImJihqPjAmJmFbMF0mJmFbai0xXXx8aj09PTB8fGUuaXNBcnJheShhKSk7aWYoaylmb3IoO2k8ajtpKyspZj1jKGFbaV0saSxkKSxmIT1udWxsJiYoaFtoLmxlbmd0aF09Zik7ZWxzZSBmb3IoZyBpbiBhKWY9YyhhW2ddLGcsZCksZiE9bnVsbCYmKGhbaC5sZW5ndGhdPWYpO3JldHVybiBoLmNvbmNhdC5hcHBseShbXSxoKX0sZ3VpZDoxLHByb3h5OmZ1bmN0aW9uKGEsYyl7aWYodHlwZW9mIGM9PSJzdHJpbmciKXt2YXIgZD1hW2NdO2M9YSxhPWR9aWYoIWUuaXNGdW5jdGlvbihhKSlyZXR1cm4gYjt2YXIgZj1GLmNhbGwoYXJndW1lbnRzLDIpLGc9ZnVuY3Rpb24oKXtyZXR1cm4gYS5hcHBseShjLGYuY29uY2F0KEYuY2FsbChhcmd1bWVudHMpKSl9O2cuZ3VpZD1hLmd1aWQ9YS5ndWlkfHxnLmd1aWR8fGUuZ3VpZCsrO3JldHVybiBnfSxhY2Nlc3M6ZnVuY3Rpb24oYSxjLGQsZixnLGgpe3ZhciBpPWEubGVuZ3RoO2lmKHR5cGVvZiBjPT0ib2JqZWN0Iil7Zm9yKHZhciBqIGluIGMpZS5hY2Nlc3MoYSxqLGNbal0sZixnLGQpO3JldHVybiBhfWlmKGQhPT1iKXtmPSFoJiZmJiZlLmlzRnVuY3Rpb24oZCk7Zm9yKHZhciBrPTA7azxpO2srKylnKGFba10sYyxmP2QuY2FsbChhW2tdLGssZyhhW2tdLGMpKTpkLGgpO3JldHVybiBhfXJldHVybiBpP2coYVswXSxjKTpifSxub3c6ZnVuY3Rpb24oKXtyZXR1cm4obmV3IERhdGUpLmdldFRpbWUoKX0sdWFNYXRjaDpmdW5jdGlvbihhKXthPWEudG9Mb3dlckNhc2UoKTt2YXIgYj1yLmV4ZWMoYSl8fHMuZXhlYyhhKXx8dC5leGVjKGEpfHxhLmluZGV4T2YoImNvbXBhdGlibGUiKTwwJiZ1LmV4ZWMoYSl8fFtdO3JldHVybnticm93c2VyOmJbMV18fCIiLHZlcnNpb246YlsyXXx8IjAifX0sc3ViOmZ1bmN0aW9uKCl7ZnVuY3Rpb24gYShiLGMpe3JldHVybiBuZXcgYS5mbi5pbml0KGIsYyl9ZS5leHRlbmQoITAsYSx0aGlzKSxhLnN1cGVyY2xhc3M9dGhpcyxhLmZuPWEucHJvdG90eXBlPXRoaXMoKSxhLmZuLmNvbnN0cnVjdG9yPWEsYS5zdWI9dGhpcy5zdWIsYS5mbi5pbml0PWZ1bmN0aW9uKGQsZil7ZiYmZiBpbnN0YW5jZW9mIGUmJiEoZiBpbnN0YW5jZW9mIGEpJiYoZj1hKGYpKTtyZXR1cm4gZS5mbi5pbml0LmNhbGwodGhpcyxkLGYsYil9LGEuZm4uaW5pdC5wcm90b3R5cGU9YS5mbjt2YXIgYj1hKGMpO3JldHVybiBhfSxicm93c2VyOnt9fSksZS5lYWNoKCJCb29sZWFuIE51bWJlciBTdHJpbmcgRnVuY3Rpb24gQXJyYXkgRGF0ZSBSZWdFeHAgT2JqZWN0Ii5zcGxpdCgiICIpLGZ1bmN0aW9uKGEsYil7SVsiW29iamVjdCAiK2IrIl0iXT1iLnRvTG93ZXJDYXNlKCl9KSx6PWUudWFNYXRjaCh5KSx6LmJyb3dzZXImJihlLmJyb3dzZXJbei5icm93c2VyXT0hMCxlLmJyb3dzZXIudmVyc2lvbj16LnZlcnNpb24pLGUuYnJvd3Nlci53ZWJraXQmJihlLmJyb3dzZXIuc2FmYXJpPSEwKSxqLnRlc3QoIsKgIikmJihrPS9eW1xzXHhBMF0rLyxsPS9bXHNceEEwXSskLyksaD1lKGMpLGMuYWRkRXZlbnRMaXN0ZW5lcj9CPWZ1bmN0aW9uKCl7Yy5yZW1vdmVFdmVudExpc3RlbmVyKCJET01Db250ZW50TG9hZGVkIixCLCExKSxlLnJlYWR5KCl9OmMuYXR0YWNoRXZlbnQmJihCPWZ1bmN0aW9uKCl7Yy5yZWFkeVN0YXRlPT09ImNvbXBsZXRlIiYmKGMuZGV0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsQiksZS5yZWFkeSgpKX0pO3JldHVybiBlfSgpLGc9e307Zi5DYWxsYmFja3M9ZnVuY3Rpb24oYSl7YT1hP2dbYV18fGgoYSk6e307dmFyIGM9W10sZD1bXSxlLGksaixrLGwsbT1mdW5jdGlvbihiKXt2YXIgZCxlLGcsaCxpO2ZvcihkPTAsZT1iLmxlbmd0aDtkPGU7ZCsrKWc9YltkXSxoPWYudHlwZShnKSxoPT09ImFycmF5Ij9tKGcpOmg9PT0iZnVuY3Rpb24iJiYoIWEudW5pcXVlfHwhby5oYXMoZykpJiZjLnB1c2goZyl9LG49ZnVuY3Rpb24oYixmKXtmPWZ8fFtdLGU9IWEubWVtb3J5fHxbYixmXSxpPSEwLGw9anx8MCxqPTAsaz1jLmxlbmd0aDtmb3IoO2MmJmw8aztsKyspaWYoY1tsXS5hcHBseShiLGYpPT09ITEmJmEuc3RvcE9uRmFsc2Upe2U9ITA7YnJlYWt9aT0hMSxjJiYoYS5vbmNlP2U9PT0hMD9vLmRpc2FibGUoKTpjPVtdOmQmJmQubGVuZ3RoJiYoZT1kLnNoaWZ0KCksby5maXJlV2l0aChlWzBdLGVbMV0pKSl9LG89e2FkZDpmdW5jdGlvbigpe2lmKGMpe3ZhciBhPWMubGVuZ3RoO20oYXJndW1lbnRzKSxpP2s9Yy5sZW5ndGg6ZSYmZSE9PSEwJiYoaj1hLG4oZVswXSxlWzFdKSl9cmV0dXJuIHRoaXN9LHJlbW92ZTpmdW5jdGlvbigpe2lmKGMpe3ZhciBiPWFyZ3VtZW50cyxkPTAsZT1iLmxlbmd0aDtmb3IoO2Q8ZTtkKyspZm9yKHZhciBmPTA7ZjxjLmxlbmd0aDtmKyspaWYoYltkXT09PWNbZl0pe2kmJmY8PWsmJihrLS0sZjw9bCYmbC0tKSxjLnNwbGljZShmLS0sMSk7aWYoYS51bmlxdWUpYnJlYWt9fXJldHVybiB0aGlzfSxoYXM6ZnVuY3Rpb24oYSl7aWYoYyl7dmFyIGI9MCxkPWMubGVuZ3RoO2Zvcig7YjxkO2IrKylpZihhPT09Y1tiXSlyZXR1cm4hMH1yZXR1cm4hMX0sZW1wdHk6ZnVuY3Rpb24oKXtjPVtdO3JldHVybiB0aGlzfSxkaXNhYmxlOmZ1bmN0aW9uKCl7Yz1kPWU9YjtyZXR1cm4gdGhpc30sZGlzYWJsZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hY30sbG9jazpmdW5jdGlvbigpe2Q9YiwoIWV8fGU9PT0hMCkmJm8uZGlzYWJsZSgpO3JldHVybiB0aGlzfSxsb2NrZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hZH0sZmlyZVdpdGg6ZnVuY3Rpb24oYixjKXtkJiYoaT9hLm9uY2V8fGQucHVzaChbYixjXSk6KCFhLm9uY2V8fCFlKSYmbihiLGMpKTtyZXR1cm4gdGhpc30sZmlyZTpmdW5jdGlvbigpe28uZmlyZVdpdGgodGhpcyxhcmd1bWVudHMpO3JldHVybiB0aGlzfSxmaXJlZDpmdW5jdGlvbigpe3JldHVybiEhZX19O3JldHVybiBvfTt2YXIgaT1bXS5zbGljZTtmLmV4dGVuZCh7RGVmZXJyZWQ6ZnVuY3Rpb24oYSl7dmFyIGI9Zi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksYz1mLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSxkPWYuQ2FsbGJhY2tzKCJtZW1vcnkiKSxlPSJwZW5kaW5nIixnPXtyZXNvbHZlOmIscmVqZWN0OmMsbm90aWZ5OmR9LGg9e2RvbmU6Yi5hZGQsZmFpbDpjLmFkZCxwcm9ncmVzczpkLmFkZCxzdGF0ZTpmdW5jdGlvbigpe3JldHVybiBlfSxpc1Jlc29sdmVkOmIuZmlyZWQsaXNSZWplY3RlZDpjLmZpcmVkLHRoZW46ZnVuY3Rpb24oYSxiLGMpe2kuZG9uZShhKS5mYWlsKGIpLnByb2dyZXNzKGMpO3JldHVybiB0aGlzfSxhbHdheXM6ZnVuY3Rpb24oKXtpLmRvbmUuYXBwbHkoaSxhcmd1bWVudHMpLmZhaWwuYXBwbHkoaSxhcmd1bWVudHMpO3JldHVybiB0aGlzfSxwaXBlOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZi5EZWZlcnJlZChmdW5jdGlvbihkKXtmLmVhY2goe2RvbmU6W2EsInJlc29sdmUiXSxmYWlsOltiLCJyZWplY3QiXSxwcm9ncmVzczpbYywibm90aWZ5Il19LGZ1bmN0aW9uKGEsYil7dmFyIGM9YlswXSxlPWJbMV0sZztmLmlzRnVuY3Rpb24oYyk/aVthXShmdW5jdGlvbigpe2c9Yy5hcHBseSh0aGlzLGFyZ3VtZW50cyksZyYmZi5pc0Z1bmN0aW9uKGcucHJvbWlzZSk/Zy5wcm9taXNlKCkudGhlbihkLnJlc29sdmUsZC5yZWplY3QsZC5ub3RpZnkpOmRbZSsiV2l0aCJdKHRoaXM9PT1pP2Q6dGhpcyxbZ10pfSk6aVthXShkW2VdKX0pfSkucHJvbWlzZSgpfSxwcm9taXNlOmZ1bmN0aW9uKGEpe2lmKGE9PW51bGwpYT1oO2Vsc2UgZm9yKHZhciBiIGluIGgpYVtiXT1oW2JdO3JldHVybiBhfX0saT1oLnByb21pc2Uoe30pLGo7Zm9yKGogaW4gZylpW2pdPWdbal0uZmlyZSxpW2orIldpdGgiXT1nW2pdLmZpcmVXaXRoO2kuZG9uZShmdW5jdGlvbigpe2U9InJlc29sdmVkIn0sYy5kaXNhYmxlLGQubG9jaykuZmFpbChmdW5jdGlvbigpe2U9InJlamVjdGVkIn0sYi5kaXNhYmxlLGQubG9jayksYSYmYS5jYWxsKGksaSk7cmV0dXJuIGl9LHdoZW46ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gbShhKXtyZXR1cm4gZnVuY3Rpb24oYil7ZVthXT1hcmd1bWVudHMubGVuZ3RoPjE/aS5jYWxsKGFyZ3VtZW50cywwKTpiLGoubm90aWZ5V2l0aChrLGUpfX1mdW5jdGlvbiBsKGEpe3JldHVybiBmdW5jdGlvbihjKXtiW2FdPWFyZ3VtZW50cy5sZW5ndGg+MT9pLmNhbGwoYXJndW1lbnRzLDApOmMsLS1nfHxqLnJlc29sdmVXaXRoKGosYil9fXZhciBiPWkuY2FsbChhcmd1bWVudHMsMCksYz0wLGQ9Yi5sZW5ndGgsZT1BcnJheShkKSxnPWQsaD1kLGo9ZDw9MSYmYSYmZi5pc0Z1bmN0aW9uKGEucHJvbWlzZSk/YTpmLkRlZmVycmVkKCksaz1qLnByb21pc2UoKTtpZihkPjEpe2Zvcig7YzxkO2MrKyliW2NdJiZiW2NdLnByb21pc2UmJmYuaXNGdW5jdGlvbihiW2NdLnByb21pc2UpP2JbY10ucHJvbWlzZSgpLnRoZW4obChjKSxqLnJlamVjdCxtKGMpKTotLWc7Z3x8ai5yZXNvbHZlV2l0aChqLGIpfWVsc2UgaiE9PWEmJmoucmVzb2x2ZVdpdGgoaixkP1thXTpbXSk7cmV0dXJuIGt9fSksZi5zdXBwb3J0PWZ1bmN0aW9uKCl7dmFyIGIsZCxlLGcsaCxpLGosayxsLG0sbixvLHAscT1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpLHI9Yy5kb2N1bWVudEVsZW1lbnQ7cS5zZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIsInQiKSxxLmlubmVySFRNTD0iICAgPGxpbmsvPjx0YWJsZT48L3RhYmxlPjxhIGhyZWY9Jy9hJyBzdHlsZT0ndG9wOjFweDtmbG9hdDpsZWZ0O29wYWNpdHk6LjU1Oyc+YTwvYT48aW5wdXQgdHlwZT0nY2hlY2tib3gnLz4iLGQ9cS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLGU9cS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYSIpWzBdO2lmKCFkfHwhZC5sZW5ndGh8fCFlKXJldHVybnt9O2c9Yy5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKSxoPWcuYXBwZW5kQ2hpbGQoYy5jcmVhdGVFbGVtZW50KCJvcHRpb24iKSksaT1xLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpWzBdLGI9e2xlYWRpbmdXaGl0ZXNwYWNlOnEuZmlyc3RDaGlsZC5ub2RlVHlwZT09PTMsdGJvZHk6IXEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRib2R5IikubGVuZ3RoLGh0bWxTZXJpYWxpemU6ISFxLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIikubGVuZ3RoLHN0eWxlOi90b3AvLnRlc3QoZS5nZXRBdHRyaWJ1dGUoInN0eWxlIikpLGhyZWZOb3JtYWxpemVkOmUuZ2V0QXR0cmlidXRlKCJocmVmIik9PT0iL2EiLG9wYWNpdHk6L14wLjU1Ly50ZXN0KGUuc3R5bGUub3BhY2l0eSksY3NzRmxvYXQ6ISFlLnN0eWxlLmNzc0Zsb2F0LGNoZWNrT246aS52YWx1ZT09PSJvbiIsb3B0U2VsZWN0ZWQ6aC5zZWxlY3RlZCxnZXRTZXRBdHRyaWJ1dGU6cS5jbGFzc05hbWUhPT0idCIsZW5jdHlwZTohIWMuY3JlYXRlRWxlbWVudCgiZm9ybSIpLmVuY3R5cGUsaHRtbDVDbG9uZTpjLmNyZWF0ZUVsZW1lbnQoIm5hdiIpLmNsb25lTm9kZSghMCkub3V0ZXJIVE1MIT09Ijw6bmF2PjwvOm5hdj4iLHN1Ym1pdEJ1YmJsZXM6ITAsY2hhbmdlQnViYmxlczohMCxmb2N1c2luQnViYmxlczohMSxkZWxldGVFeHBhbmRvOiEwLG5vQ2xvbmVFdmVudDohMCxpbmxpbmVCbG9ja05lZWRzTGF5b3V0OiExLHNocmlua1dyYXBCbG9ja3M6ITEscmVsaWFibGVNYXJnaW5SaWdodDohMH0saS5jaGVja2VkPSEwLGIubm9DbG9uZUNoZWNrZWQ9aS5jbG9uZU5vZGUoITApLmNoZWNrZWQsZy5kaXNhYmxlZD0hMCxiLm9wdERpc2FibGVkPSFoLmRpc2FibGVkO3RyeXtkZWxldGUgcS50ZXN0fWNhdGNoKHMpe2IuZGVsZXRlRXhwYW5kbz0hMX0hcS5hZGRFdmVudExpc3RlbmVyJiZxLmF0dGFjaEV2ZW50JiZxLmZpcmVFdmVudCYmKHEuYXR0YWNoRXZlbnQoIm9uY2xpY2siLGZ1bmN0aW9uKCl7Yi5ub0Nsb25lRXZlbnQ9ITF9KSxxLmNsb25lTm9kZSghMCkuZmlyZUV2ZW50KCJvbmNsaWNrIikpLGk9Yy5jcmVhdGVFbGVtZW50KCJpbnB1dCIpLGkudmFsdWU9InQiLGkuc2V0QXR0cmlidXRlKCJ0eXBlIiwicmFkaW8iKSxiLnJhZGlvVmFsdWU9aS52YWx1ZT09PSJ0IixpLnNldEF0dHJpYnV0ZSgiY2hlY2tlZCIsImNoZWNrZWQiKSxxLmFwcGVuZENoaWxkKGkpLGs9Yy5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksay5hcHBlbmRDaGlsZChxLmxhc3RDaGlsZCksYi5jaGVja0Nsb25lPWsuY2xvbmVOb2RlKCEwKS5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5jaGVja2VkLGIuYXBwZW5kQ2hlY2tlZD1pLmNoZWNrZWQsay5yZW1vdmVDaGlsZChpKSxrLmFwcGVuZENoaWxkKHEpLHEuaW5uZXJIVE1MPSIiLGEuZ2V0Q29tcHV0ZWRTdHlsZSYmKGo9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKSxqLnN0eWxlLndpZHRoPSIwIixqLnN0eWxlLm1hcmdpblJpZ2h0PSIwIixxLnN0eWxlLndpZHRoPSIycHgiLHEuYXBwZW5kQ2hpbGQoaiksYi5yZWxpYWJsZU1hcmdpblJpZ2h0PShwYXJzZUludCgoYS5nZXRDb21wdXRlZFN0eWxlKGosbnVsbCl8fHttYXJnaW5SaWdodDowfSkubWFyZ2luUmlnaHQsMTApfHwwKT09PTApO2lmKHEuYXR0YWNoRXZlbnQpZm9yKG8gaW57c3VibWl0OjEsY2hhbmdlOjEsZm9jdXNpbjoxfSluPSJvbiIrbyxwPW4gaW4gcSxwfHwocS5zZXRBdHRyaWJ1dGUobiwicmV0dXJuOyIpLHA9dHlwZW9mIHFbbl09PSJmdW5jdGlvbiIpLGJbbysiQnViYmxlcyJdPXA7ay5yZW1vdmVDaGlsZChxKSxrPWc9aD1qPXE9aT1udWxsLGYoZnVuY3Rpb24oKXt2YXIgYSxkLGUsZyxoLGksaixrLG0sbixvLHI9Yy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdOyFyfHwoaj0xLGs9InBvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDt3aWR0aDoxcHg7aGVpZ2h0OjFweDttYXJnaW46MDsiLG09InZpc2liaWxpdHk6aGlkZGVuO2JvcmRlcjowOyIsbj0ic3R5bGU9JyIraysiYm9yZGVyOjVweCBzb2xpZCAjMDAwO3BhZGRpbmc6MDsnIixvPSI8ZGl2ICIrbisiPjxkaXY+PC9kaXY+PC9kaXY+IisiPHRhYmxlICIrbisiIGNlbGxwYWRkaW5nPScwJyBjZWxsc3BhY2luZz0nMCc+IisiPHRyPjx0ZD48L3RkPjwvdHI+PC90YWJsZT4iLGE9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKSxhLnN0eWxlLmNzc1RleHQ9bSsid2lkdGg6MDtoZWlnaHQ6MDtwb3NpdGlvbjpzdGF0aWM7dG9wOjA7bWFyZ2luLXRvcDoiK2orInB4IixyLmluc2VydEJlZm9yZShhLHIuZmlyc3RDaGlsZCkscT1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGEuYXBwZW5kQ2hpbGQocSkscS5pbm5lckhUTUw9Ijx0YWJsZT48dHI+PHRkIHN0eWxlPSdwYWRkaW5nOjA7Ym9yZGVyOjA7ZGlzcGxheTpub25lJz48L3RkPjx0ZD50PC90ZD48L3RyPjwvdGFibGU+IixsPXEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRkIikscD1sWzBdLm9mZnNldEhlaWdodD09PTAsbFswXS5zdHlsZS5kaXNwbGF5PSIiLGxbMV0uc3R5bGUuZGlzcGxheT0ibm9uZSIsYi5yZWxpYWJsZUhpZGRlbk9mZnNldHM9cCYmbFswXS5vZmZzZXRIZWlnaHQ9PT0wLHEuaW5uZXJIVE1MPSIiLHEuc3R5bGUud2lkdGg9cS5zdHlsZS5wYWRkaW5nTGVmdD0iMXB4IixmLmJveE1vZGVsPWIuYm94TW9kZWw9cS5vZmZzZXRXaWR0aD09PTIsdHlwZW9mIHEuc3R5bGUuem9vbSE9InVuZGVmaW5lZCImJihxLnN0eWxlLmRpc3BsYXk9ImlubGluZSIscS5zdHlsZS56b29tPTEsYi5pbmxpbmVCbG9ja05lZWRzTGF5b3V0PXEub2Zmc2V0V2lkdGg9PT0yLHEuc3R5bGUuZGlzcGxheT0iIixxLmlubmVySFRNTD0iPGRpdiBzdHlsZT0nd2lkdGg6NHB4Oyc+PC9kaXY+IixiLnNocmlua1dyYXBCbG9ja3M9cS5vZmZzZXRXaWR0aCE9PTIpLHEuc3R5bGUuY3NzVGV4dD1rK20scS5pbm5lckhUTUw9byxkPXEuZmlyc3RDaGlsZCxlPWQuZmlyc3RDaGlsZCxoPWQubmV4dFNpYmxpbmcuZmlyc3RDaGlsZC5maXJzdENoaWxkLGk9e2RvZXNOb3RBZGRCb3JkZXI6ZS5vZmZzZXRUb3AhPT01LGRvZXNBZGRCb3JkZXJGb3JUYWJsZUFuZENlbGxzOmgub2Zmc2V0VG9wPT09NX0sZS5zdHlsZS5wb3NpdGlvbj0iZml4ZWQiLGUuc3R5bGUudG9wPSIyMHB4IixpLmZpeGVkUG9zaXRpb249ZS5vZmZzZXRUb3A9PT0yMHx8ZS5vZmZzZXRUb3A9PT0xNSxlLnN0eWxlLnBvc2l0aW9uPWUuc3R5bGUudG9wPSIiLGQuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIsZC5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiLGkuc3VidHJhY3RzQm9yZGVyRm9yT3ZlcmZsb3dOb3RWaXNpYmxlPWUub2Zmc2V0VG9wPT09LTUsaS5kb2VzTm90SW5jbHVkZU1hcmdpbkluQm9keU9mZnNldD1yLm9mZnNldFRvcCE9PWosci5yZW1vdmVDaGlsZChhKSxxPWE9bnVsbCxmLmV4dGVuZChiLGkpKX0pO3JldHVybiBifSgpO3ZhciBqPS9eKD86XHsuKlx9fFxbLipcXSkkLyxrPS8oW0EtWl0pL2c7Zi5leHRlbmQoe2NhY2hlOnt9LHV1aWQ6MCxleHBhbmRvOiJqUXVlcnkiKyhmLmZuLmpxdWVyeStNYXRoLnJhbmRvbSgpKS5yZXBsYWNlKC9cRC9nLCIiKSxub0RhdGE6e2VtYmVkOiEwLG9iamVjdDoiY2xzaWQ6RDI3Q0RCNkUtQUU2RC0xMWNmLTk2QjgtNDQ0NTUzNTQwMDAwIixhcHBsZXQ6ITB9LGhhc0RhdGE6ZnVuY3Rpb24oYSl7YT1hLm5vZGVUeXBlP2YuY2FjaGVbYVtmLmV4cGFuZG9dXTphW2YuZXhwYW5kb107cmV0dXJuISFhJiYhbShhKX0sZGF0YTpmdW5jdGlvbihhLGMsZCxlKXtpZighIWYuYWNjZXB0RGF0YShhKSl7dmFyIGcsaCxpLGo9Zi5leHBhbmRvLGs9dHlwZW9mIGM9PSJzdHJpbmciLGw9YS5ub2RlVHlwZSxtPWw/Zi5jYWNoZTphLG49bD9hW2pdOmFbal0mJmosbz1jPT09ImV2ZW50cyI7aWYoKCFufHwhbVtuXXx8IW8mJiFlJiYhbVtuXS5kYXRhKSYmayYmZD09PWIpcmV0dXJuO258fChsP2Fbal09bj0rK2YudXVpZDpuPWopLG1bbl18fChtW25dPXt9LGx8fChtW25dLnRvSlNPTj1mLm5vb3ApKTtpZih0eXBlb2YgYz09Im9iamVjdCJ8fHR5cGVvZiBjPT0iZnVuY3Rpb24iKWU/bVtuXT1mLmV4dGVuZChtW25dLGMpOm1bbl0uZGF0YT1mLmV4dGVuZChtW25dLmRhdGEsYyk7Zz1oPW1bbl0sZXx8KGguZGF0YXx8KGguZGF0YT17fSksaD1oLmRhdGEpLGQhPT1iJiYoaFtmLmNhbWVsQ2FzZShjKV09ZCk7aWYobyYmIWhbY10pcmV0dXJuIGcuZXZlbnRzO2s/KGk9aFtjXSxpPT1udWxsJiYoaT1oW2YuY2FtZWxDYXNlKGMpXSkpOmk9aDtyZXR1cm4gaX19LHJlbW92ZURhdGE6ZnVuY3Rpb24oYSxiLGMpe2lmKCEhZi5hY2NlcHREYXRhKGEpKXt2YXIgZCxlLGcsaD1mLmV4cGFuZG8saT1hLm5vZGVUeXBlLGo9aT9mLmNhY2hlOmEsaz1pP2FbaF06aDtpZighaltrXSlyZXR1cm47aWYoYil7ZD1jP2pba106altrXS5kYXRhO2lmKGQpe2YuaXNBcnJheShiKXx8KGIgaW4gZD9iPVtiXTooYj1mLmNhbWVsQ2FzZShiKSxiIGluIGQ/Yj1bYl06Yj1iLnNwbGl0KCIgIikpKTtmb3IoZT0wLGc9Yi5sZW5ndGg7ZTxnO2UrKylkZWxldGUgZFtiW2VdXTtpZighKGM/bTpmLmlzRW1wdHlPYmplY3QpKGQpKXJldHVybn19aWYoIWMpe2RlbGV0ZSBqW2tdLmRhdGE7aWYoIW0oaltrXSkpcmV0dXJufWYuc3VwcG9ydC5kZWxldGVFeHBhbmRvfHwhai5zZXRJbnRlcnZhbD9kZWxldGUgaltrXTpqW2tdPW51bGwsaSYmKGYuc3VwcG9ydC5kZWxldGVFeHBhbmRvP2RlbGV0ZSBhW2hdOmEucmVtb3ZlQXR0cmlidXRlP2EucmVtb3ZlQXR0cmlidXRlKGgpOmFbaF09bnVsbCl9fSxfZGF0YTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGYuZGF0YShhLGIsYywhMCl9LGFjY2VwdERhdGE6ZnVuY3Rpb24oYSl7aWYoYS5ub2RlTmFtZSl7dmFyIGI9Zi5ub0RhdGFbYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXTtpZihiKXJldHVybiBiIT09ITAmJmEuZ2V0QXR0cmlidXRlKCJjbGFzc2lkIik9PT1ifXJldHVybiEwfX0pLGYuZm4uZXh0ZW5kKHtkYXRhOmZ1bmN0aW9uKGEsYyl7dmFyIGQsZSxnLGg9bnVsbDtpZih0eXBlb2YgYT09InVuZGVmaW5lZCIpe2lmKHRoaXMubGVuZ3RoKXtoPWYuZGF0YSh0aGlzWzBdKTtpZih0aGlzWzBdLm5vZGVUeXBlPT09MSYmIWYuX2RhdGEodGhpc1swXSwicGFyc2VkQXR0cnMiKSl7ZT10aGlzWzBdLmF0dHJpYnV0ZXM7Zm9yKHZhciBpPTAsaj1lLmxlbmd0aDtpPGo7aSsrKWc9ZVtpXS5uYW1lLGcuaW5kZXhPZigiZGF0YS0iKT09PTAmJihnPWYuY2FtZWxDYXNlKGcuc3Vic3RyaW5nKDUpKSxsKHRoaXNbMF0sZyxoW2ddKSk7Zi5fZGF0YSh0aGlzWzBdLCJwYXJzZWRBdHRycyIsITApfX1yZXR1cm4gaH1pZih0eXBlb2YgYT09Im9iamVjdCIpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2YuZGF0YSh0aGlzLGEpfSk7ZD1hLnNwbGl0KCIuIiksZFsxXT1kWzFdPyIuIitkWzFdOiIiO2lmKGM9PT1iKXtoPXRoaXMudHJpZ2dlckhhbmRsZXIoImdldERhdGEiK2RbMV0rIiEiLFtkWzBdXSksaD09PWImJnRoaXMubGVuZ3RoJiYoaD1mLmRhdGEodGhpc1swXSxhKSxoPWwodGhpc1swXSxhLGgpKTtyZXR1cm4gaD09PWImJmRbMV0/dGhpcy5kYXRhKGRbMF0pOmh9cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPWYodGhpcyksZT1bZFswXSxjXTtiLnRyaWdnZXJIYW5kbGVyKCJzZXREYXRhIitkWzFdKyIhIixlKSxmLmRhdGEodGhpcyxhLGMpLGIudHJpZ2dlckhhbmRsZXIoImNoYW5nZURhdGEiK2RbMV0rIiEiLGUpfSl9LHJlbW92ZURhdGE6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2YucmVtb3ZlRGF0YSh0aGlzLGEpfSl9fSksZi5leHRlbmQoe19tYXJrOmZ1bmN0aW9uKGEsYil7YSYmKGI9KGJ8fCJmeCIpKyJtYXJrIixmLl9kYXRhKGEsYiwoZi5fZGF0YShhLGIpfHwwKSsxKSl9LF91bm1hcms6ZnVuY3Rpb24oYSxiLGMpe2EhPT0hMCYmKGM9YixiPWEsYT0hMSk7aWYoYil7Yz1jfHwiZngiO3ZhciBkPWMrIm1hcmsiLGU9YT8wOihmLl9kYXRhKGIsZCl8fDEpLTE7ZT9mLl9kYXRhKGIsZCxlKTooZi5yZW1vdmVEYXRhKGIsZCwhMCksbihiLGMsIm1hcmsiKSl9fSxxdWV1ZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ7aWYoYSl7Yj0oYnx8ImZ4IikrInF1ZXVlIixkPWYuX2RhdGEoYSxiKSxjJiYoIWR8fGYuaXNBcnJheShjKT9kPWYuX2RhdGEoYSxiLGYubWFrZUFycmF5KGMpKTpkLnB1c2goYykpO3JldHVybiBkfHxbXX19LGRlcXVldWU6ZnVuY3Rpb24oYSxiKXtiPWJ8fCJmeCI7dmFyIGM9Zi5xdWV1ZShhLGIpLGQ9Yy5zaGlmdCgpLGU9e307ZD09PSJpbnByb2dyZXNzIiYmKGQ9Yy5zaGlmdCgpKSxkJiYoYj09PSJmeCImJmMudW5zaGlmdCgiaW5wcm9ncmVzcyIpLGYuX2RhdGEoYSxiKyIucnVuIixlKSxkLmNhbGwoYSxmdW5jdGlvbigpe2YuZGVxdWV1ZShhLGIpfSxlKSksYy5sZW5ndGh8fChmLnJlbW92ZURhdGEoYSxiKyJxdWV1ZSAiK2IrIi5ydW4iLCEwKSxuKGEsYiwicXVldWUiKSl9fSksZi5mbi5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGEsYyl7dHlwZW9mIGEhPSJzdHJpbmciJiYoYz1hLGE9ImZ4Iik7aWYoYz09PWIpcmV0dXJuIGYucXVldWUodGhpc1swXSxhKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9Zi5xdWV1ZSh0aGlzLGEsYyk7YT09PSJmeCImJmJbMF0hPT0iaW5wcm9ncmVzcyImJmYuZGVxdWV1ZSh0aGlzLGEpfSl9LGRlcXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2YuZGVxdWV1ZSh0aGlzLGEpfSl9LGRlbGF5OmZ1bmN0aW9uKGEsYil7YT1mLmZ4P2YuZnguc3BlZWRzW2FdfHxhOmEsYj1ifHwiZngiO3JldHVybiB0aGlzLnF1ZXVlKGIsZnVuY3Rpb24oYixjKXt2YXIgZD1zZXRUaW1lb3V0KGIsYSk7Yy5zdG9wPWZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KGQpfX0pfSxjbGVhclF1ZXVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnF1ZXVlKGF8fCJmeCIsW10pfSxwcm9taXNlOmZ1bmN0aW9uKGEsYyl7ZnVuY3Rpb24gbSgpey0taHx8ZC5yZXNvbHZlV2l0aChlLFtlXSl9dHlwZW9mIGEhPSJzdHJpbmciJiYoYz1hLGE9YiksYT1hfHwiZngiO3ZhciBkPWYuRGVmZXJyZWQoKSxlPXRoaXMsZz1lLmxlbmd0aCxoPTEsaT1hKyJkZWZlciIsaj1hKyJxdWV1ZSIsaz1hKyJtYXJrIixsO3doaWxlKGctLSlpZihsPWYuZGF0YShlW2ddLGksYiwhMCl8fChmLmRhdGEoZVtnXSxqLGIsITApfHxmLmRhdGEoZVtnXSxrLGIsITApKSYmZi5kYXRhKGVbZ10saSxmLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwhMCkpaCsrLGwuYWRkKG0pO20oKTtyZXR1cm4gZC5wcm9taXNlKCl9fSk7dmFyIG89L1tcblx0XHJdL2cscD0vXHMrLyxxPS9cci9nLHI9L14oPzpidXR0b258aW5wdXQpJC9pLHM9L14oPzpidXR0b258aW5wdXR8b2JqZWN0fHNlbGVjdHx0ZXh0YXJlYSkkL2ksdD0vXmEoPzpyZWEpPyQvaSx1PS9eKD86YXV0b2ZvY3VzfGF1dG9wbGF5fGFzeW5jfGNoZWNrZWR8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWR8c2VsZWN0ZWQpJC9pLHY9Zi5zdXBwb3J0LmdldFNldEF0dHJpYnV0ZSx3LHgseTtmLmZuLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihhLGIpe3JldHVybiBmLmFjY2Vzcyh0aGlzLGEsYiwhMCxmLmF0dHIpfSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmLnJlbW92ZUF0dHIodGhpcyxhKX0pfSxwcm9wOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGYuYWNjZXNzKHRoaXMsYSxiLCEwLGYucHJvcCl9LHJlbW92ZVByb3A6ZnVuY3Rpb24oYSl7YT1mLnByb3BGaXhbYV18fGE7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3RyeXt0aGlzW2FdPWIsZGVsZXRlIHRoaXNbYV19Y2F0Y2goYyl7fX0pfSxhZGRDbGFzczpmdW5jdGlvbihhKXt2YXIgYixjLGQsZSxnLGgsaTtpZihmLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtmKHRoaXMpLmFkZENsYXNzKGEuY2FsbCh0aGlzLGIsdGhpcy5jbGFzc05hbWUpKX0pO2lmKGEmJnR5cGVvZiBhPT0ic3RyaW5nIil7Yj1hLnNwbGl0KHApO2ZvcihjPTAsZD10aGlzLmxlbmd0aDtjPGQ7YysrKXtlPXRoaXNbY107aWYoZS5ub2RlVHlwZT09PTEpaWYoIWUuY2xhc3NOYW1lJiZiLmxlbmd0aD09PTEpZS5jbGFzc05hbWU9YTtlbHNle2c9IiAiK2UuY2xhc3NOYW1lKyIgIjtmb3IoaD0wLGk9Yi5sZW5ndGg7aDxpO2grKyl+Zy5pbmRleE9mKCIgIitiW2hdKyIgIil8fChnKz1iW2hdKyIgIik7ZS5jbGFzc05hbWU9Zi50cmltKGcpfX19cmV0dXJuIHRoaXN9LHJlbW92ZUNsYXNzOmZ1bmN0aW9uKGEpe3ZhciBjLGQsZSxnLGgsaSxqO2lmKGYuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2YodGhpcykucmVtb3ZlQ2xhc3MoYS5jYWxsKHRoaXMsYix0aGlzLmNsYXNzTmFtZSkpfSk7aWYoYSYmdHlwZW9mIGE9PSJzdHJpbmcifHxhPT09Yil7Yz0oYXx8IiIpLnNwbGl0KHApO2ZvcihkPTAsZT10aGlzLmxlbmd0aDtkPGU7ZCsrKXtnPXRoaXNbZF07aWYoZy5ub2RlVHlwZT09PTEmJmcuY2xhc3NOYW1lKWlmKGEpe2g9KCIgIitnLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UobywiICIpO2ZvcihpPTAsaj1jLmxlbmd0aDtpPGo7aSsrKWg9aC5yZXBsYWNlKCIgIitjW2ldKyIgIiwiICIpO2cuY2xhc3NOYW1lPWYudHJpbShoKX1lbHNlIGcuY2xhc3NOYW1lPSIifX1yZXR1cm4gdGhpc30sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24oYSxiKXt2YXIgYz10eXBlb2YgYSxkPXR5cGVvZiBiPT0iYm9vbGVhbiI7aWYoZi5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYyl7Zih0aGlzKS50b2dnbGVDbGFzcyhhLmNhbGwodGhpcyxjLHRoaXMuY2xhc3NOYW1lLGIpLGIpfSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2lmKGM9PT0ic3RyaW5nIil7dmFyIGUsZz0wLGg9Zih0aGlzKSxpPWIsaj1hLnNwbGl0KHApO3doaWxlKGU9altnKytdKWk9ZD9pOiFoLmhhc0NsYXNzKGUpLGhbaT8iYWRkQ2xhc3MiOiJyZW1vdmVDbGFzcyJdKGUpfWVsc2UgaWYoYz09PSJ1bmRlZmluZWQifHxjPT09ImJvb2xlYW4iKXRoaXMuY2xhc3NOYW1lJiZmLl9kYXRhKHRoaXMsIl9fY2xhc3NOYW1lX18iLHRoaXMuY2xhc3NOYW1lKSx0aGlzLmNsYXNzTmFtZT10aGlzLmNsYXNzTmFtZXx8YT09PSExPyIiOmYuX2RhdGEodGhpcywiX19jbGFzc05hbWVfXyIpfHwiIn0pfSxoYXNDbGFzczpmdW5jdGlvbihhKXt2YXIgYj0iICIrYSsiICIsYz0wLGQ9dGhpcy5sZW5ndGg7Zm9yKDtjPGQ7YysrKWlmKHRoaXNbY10ubm9kZVR5cGU9PT0xJiYoIiAiK3RoaXNbY10uY2xhc3NOYW1lKyIgIikucmVwbGFjZShvLCIgIikuaW5kZXhPZihiKT4tMSlyZXR1cm4hMDtyZXR1cm4hMX0sdmFsOmZ1bmN0aW9uKGEpe3ZhciBjLGQsZSxnPXRoaXNbMF07e2lmKCEhYXJndW1lbnRzLmxlbmd0aCl7ZT1mLmlzRnVuY3Rpb24oYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihkKXt2YXIgZz1mKHRoaXMpLGg7aWYodGhpcy5ub2RlVHlwZT09PTEpe2U/aD1hLmNhbGwodGhpcyxkLGcudmFsKCkpOmg9YSxoPT1udWxsP2g9IiI6dHlwZW9mIGg9PSJudW1iZXIiP2grPSIiOmYuaXNBcnJheShoKSYmKGg9Zi5tYXAoaCxmdW5jdGlvbihhKXtyZXR1cm4gYT09bnVsbD8iIjphKyIifSkpLGM9Zi52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldfHxmLnZhbEhvb2tzW3RoaXMudHlwZV07aWYoIWN8fCEoInNldCJpbiBjKXx8Yy5zZXQodGhpcyxoLCJ2YWx1ZSIpPT09Yil0aGlzLnZhbHVlPWh9fSl9aWYoZyl7Yz1mLnZhbEhvb2tzW2cubm9kZU5hbWUudG9Mb3dlckNhc2UoKV18fGYudmFsSG9va3NbZy50eXBlXTtpZihjJiYiZ2V0ImluIGMmJihkPWMuZ2V0KGcsInZhbHVlIikpIT09YilyZXR1cm4gZDtkPWcudmFsdWU7cmV0dXJuIHR5cGVvZiBkPT0ic3RyaW5nIj9kLnJlcGxhY2UocSwiIik6ZD09bnVsbD8iIjpkfX19fSksZi5leHRlbmQoe3ZhbEhvb2tzOntvcHRpb246e2dldDpmdW5jdGlvbihhKXt2YXIgYj1hLmF0dHJpYnV0ZXMudmFsdWU7cmV0dXJuIWJ8fGIuc3BlY2lmaWVkP2EudmFsdWU6YS50ZXh0fX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZz1hLnNlbGVjdGVkSW5kZXgsaD1bXSxpPWEub3B0aW9ucyxqPWEudHlwZT09PSJzZWxlY3Qtb25lIjtpZihnPDApcmV0dXJuIG51bGw7Yz1qP2c6MCxkPWo/ZysxOmkubGVuZ3RoO2Zvcig7YzxkO2MrKyl7ZT1pW2NdO2lmKGUuc2VsZWN0ZWQmJihmLnN1cHBvcnQub3B0RGlzYWJsZWQ/IWUuZGlzYWJsZWQ6ZS5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIik9PT1udWxsKSYmKCFlLnBhcmVudE5vZGUuZGlzYWJsZWR8fCFmLm5vZGVOYW1lKGUucGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2I9ZihlKS52YWwoKTtpZihqKXJldHVybiBiO2gucHVzaChiKX19aWYoaiYmIWgubGVuZ3RoJiZpLmxlbmd0aClyZXR1cm4gZihpW2ddKS52YWwoKTtyZXR1cm4gaH0sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGM9Zi5tYWtlQXJyYXkoYik7ZihhKS5maW5kKCJvcHRpb24iKS5lYWNoKGZ1bmN0aW9uKCl7dGhpcy5zZWxlY3RlZD1mLmluQXJyYXkoZih0aGlzKS52YWwoKSxjKT49MH0pLGMubGVuZ3RofHwoYS5zZWxlY3RlZEluZGV4PS0xKTtyZXR1cm4gY319fSxhdHRyRm46e3ZhbDohMCxjc3M6ITAsaHRtbDohMCx0ZXh0OiEwLGRhdGE6ITAsd2lkdGg6ITAsaGVpZ2h0OiEwLG9mZnNldDohMH0sYXR0cjpmdW5jdGlvbihhLGMsZCxlKXt2YXIgZyxoLGksaj1hLm5vZGVUeXBlO2lmKCEhYSYmaiE9PTMmJmohPT04JiZqIT09Mil7aWYoZSYmYyBpbiBmLmF0dHJGbilyZXR1cm4gZihhKVtjXShkKTtpZih0eXBlb2YgYS5nZXRBdHRyaWJ1dGU9PSJ1bmRlZmluZWQiKXJldHVybiBmLnByb3AoYSxjLGQpO2k9aiE9PTF8fCFmLmlzWE1MRG9jKGEpLGkmJihjPWMudG9Mb3dlckNhc2UoKSxoPWYuYXR0ckhvb2tzW2NdfHwodS50ZXN0KGMpP3g6dykpO2lmKGQhPT1iKXtpZihkPT09bnVsbCl7Zi5yZW1vdmVBdHRyKGEsYyk7cmV0dXJufWlmKGgmJiJzZXQiaW4gaCYmaSYmKGc9aC5zZXQoYSxkLGMpKSE9PWIpcmV0dXJuIGc7YS5zZXRBdHRyaWJ1dGUoYywiIitkKTtyZXR1cm4gZH1pZihoJiYiZ2V0ImluIGgmJmkmJihnPWguZ2V0KGEsYykpIT09bnVsbClyZXR1cm4gZztnPWEuZ2V0QXR0cmlidXRlKGMpO3JldHVybiBnPT09bnVsbD9iOmd9fSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGcsaD0wO2lmKGImJmEubm9kZVR5cGU9PT0xKXtkPWIudG9Mb3dlckNhc2UoKS5zcGxpdChwKSxnPWQubGVuZ3RoO2Zvcig7aDxnO2grKyllPWRbaF0sZSYmKGM9Zi5wcm9wRml4W2VdfHxlLGYuYXR0cihhLGUsIiIpLGEucmVtb3ZlQXR0cmlidXRlKHY/ZTpjKSx1LnRlc3QoZSkmJmMgaW4gYSYmKGFbY109ITEpKX19LGF0dHJIb29rczp7dHlwZTp7c2V0OmZ1bmN0aW9uKGEsYil7aWYoci50ZXN0KGEubm9kZU5hbWUpJiZhLnBhcmVudE5vZGUpZi5lcnJvcigidHlwZSBwcm9wZXJ0eSBjYW4ndCBiZSBjaGFuZ2VkIik7ZWxzZSBpZighZi5zdXBwb3J0LnJhZGlvVmFsdWUmJmI9PT0icmFkaW8iJiZmLm5vZGVOYW1lKGEsImlucHV0Iikpe3ZhciBjPWEudmFsdWU7YS5zZXRBdHRyaWJ1dGUoInR5cGUiLGIpLGMmJihhLnZhbHVlPWMpO3JldHVybiBifX19LHZhbHVlOntnZXQ6ZnVuY3Rpb24oYSxiKXtpZih3JiZmLm5vZGVOYW1lKGEsImJ1dHRvbiIpKXJldHVybiB3LmdldChhLGIpO3JldHVybiBiIGluIGE/YS52YWx1ZTpudWxsfSxzZXQ6ZnVuY3Rpb24oYSxiLGMpe2lmKHcmJmYubm9kZU5hbWUoYSwiYnV0dG9uIikpcmV0dXJuIHcuc2V0KGEsYixjKTthLnZhbHVlPWJ9fX0scHJvcEZpeDp7dGFiaW5kZXg6InRhYkluZGV4IixyZWFkb25seToicmVhZE9ubHkiLCJmb3IiOiJodG1sRm9yIiwiY2xhc3MiOiJjbGFzc05hbWUiLG1heGxlbmd0aDoibWF4TGVuZ3RoIixjZWxsc3BhY2luZzoiY2VsbFNwYWNpbmciLGNlbGxwYWRkaW5nOiJjZWxsUGFkZGluZyIscm93c3Bhbjoicm93U3BhbiIsY29sc3BhbjoiY29sU3BhbiIsdXNlbWFwOiJ1c2VNYXAiLGZyYW1lYm9yZGVyOiJmcmFtZUJvcmRlciIsY29udGVudGVkaXRhYmxlOiJjb250ZW50RWRpdGFibGUifSxwcm9wOmZ1bmN0aW9uKGEsYyxkKXt2YXIgZSxnLGgsaT1hLm5vZGVUeXBlO2lmKCEhYSYmaSE9PTMmJmkhPT04JiZpIT09Mil7aD1pIT09MXx8IWYuaXNYTUxEb2MoYSksaCYmKGM9Zi5wcm9wRml4W2NdfHxjLGc9Zi5wcm9wSG9va3NbY10pO3JldHVybiBkIT09Yj9nJiYic2V0ImluIGcmJihlPWcuc2V0KGEsZCxjKSkhPT1iP2U6YVtjXT1kOmcmJiJnZXQiaW4gZyYmKGU9Zy5nZXQoYSxjKSkhPT1udWxsP2U6YVtjXX19LHByb3BIb29rczp7dGFiSW5kZXg6e2dldDpmdW5jdGlvbihhKXt2YXIgYz1hLmdldEF0dHJpYnV0ZU5vZGUoInRhYmluZGV4Iik7cmV0dXJuIGMmJmMuc3BlY2lmaWVkP3BhcnNlSW50KGMudmFsdWUsMTApOnMudGVzdChhLm5vZGVOYW1lKXx8dC50ZXN0KGEubm9kZU5hbWUpJiZhLmhyZWY/MDpifX19fSksZi5hdHRySG9va3MudGFiaW5kZXg9Zi5wcm9wSG9va3MudGFiSW5kZXgseD17Z2V0OmZ1bmN0aW9uKGEsYyl7dmFyIGQsZT1mLnByb3AoYSxjKTtyZXR1cm4gZT09PSEwfHx0eXBlb2YgZSE9ImJvb2xlYW4iJiYoZD1hLmdldEF0dHJpYnV0ZU5vZGUoYykpJiZkLm5vZGVWYWx1ZSE9PSExP2MudG9Mb3dlckNhc2UoKTpifSxzZXQ6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO2I9PT0hMT9mLnJlbW92ZUF0dHIoYSxjKTooZD1mLnByb3BGaXhbY118fGMsZCBpbiBhJiYoYVtkXT0hMCksYS5zZXRBdHRyaWJ1dGUoYyxjLnRvTG93ZXJDYXNlKCkpKTtyZXR1cm4gY319LHZ8fCh5PXtuYW1lOiEwLGlkOiEwfSx3PWYudmFsSG9va3MuYnV0dG9uPXtnZXQ6ZnVuY3Rpb24oYSxjKXt2YXIgZDtkPWEuZ2V0QXR0cmlidXRlTm9kZShjKTtyZXR1cm4gZCYmKHlbY10/ZC5ub2RlVmFsdWUhPT0iIjpkLnNwZWNpZmllZCk/ZC5ub2RlVmFsdWU6Yn0sc2V0OmZ1bmN0aW9uKGEsYixkKXt2YXIgZT1hLmdldEF0dHJpYnV0ZU5vZGUoZCk7ZXx8KGU9Yy5jcmVhdGVBdHRyaWJ1dGUoZCksYS5zZXRBdHRyaWJ1dGVOb2RlKGUpKTtyZXR1cm4gZS5ub2RlVmFsdWU9YisiIn19LGYuYXR0ckhvb2tzLnRhYmluZGV4LnNldD13LnNldCxmLmVhY2goWyJ3aWR0aCIsImhlaWdodCJdLGZ1bmN0aW9uKGEsYil7Zi5hdHRySG9va3NbYl09Zi5leHRlbmQoZi5hdHRySG9va3NbYl0se3NldDpmdW5jdGlvbihhLGMpe2lmKGM9PT0iIil7YS5zZXRBdHRyaWJ1dGUoYiwiYXV0byIpO3JldHVybiBjfX19KX0pLGYuYXR0ckhvb2tzLmNvbnRlbnRlZGl0YWJsZT17Z2V0OncuZ2V0LHNldDpmdW5jdGlvbihhLGIsYyl7Yj09PSIiJiYoYj0iZmFsc2UiKSx3LnNldChhLGIsYyl9fSksZi5zdXBwb3J0LmhyZWZOb3JtYWxpemVkfHxmLmVhY2goWyJocmVmIiwic3JjIiwid2lkdGgiLCJoZWlnaHQiXSxmdW5jdGlvbihhLGMpe2YuYXR0ckhvb2tzW2NdPWYuZXh0ZW5kKGYuYXR0ckhvb2tzW2NdLHtnZXQ6ZnVuY3Rpb24oYSl7dmFyIGQ9YS5nZXRBdHRyaWJ1dGUoYywyKTtyZXR1cm4gZD09PW51bGw/YjpkfX0pfSksZi5zdXBwb3J0LnN0eWxlfHwoZi5hdHRySG9va3Muc3R5bGU9e2dldDpmdW5jdGlvbihhKXtyZXR1cm4gYS5zdHlsZS5jc3NUZXh0LnRvTG93ZXJDYXNlKCl8fGJ9LHNldDpmdW5jdGlvbihhLGIpe3JldHVybiBhLnN0eWxlLmNzc1RleHQ9IiIrYn19KSxmLnN1cHBvcnQub3B0U2VsZWN0ZWR8fChmLnByb3BIb29rcy5zZWxlY3RlZD1mLmV4dGVuZChmLnByb3BIb29rcy5zZWxlY3RlZCx7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiPWEucGFyZW50Tm9kZTtiJiYoYi5zZWxlY3RlZEluZGV4LGIucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgpO3JldHVybiBudWxsfX0pKSxmLnN1cHBvcnQuZW5jdHlwZXx8KGYucHJvcEZpeC5lbmN0eXBlPSJlbmNvZGluZyIpLGYuc3VwcG9ydC5jaGVja09ufHxmLmVhY2goWyJyYWRpbyIsImNoZWNrYm94Il0sZnVuY3Rpb24oKXtmLnZhbEhvb2tzW3RoaXNdPXtnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpPT09bnVsbD8ib24iOmEudmFsdWV9fX0pLGYuZWFjaChbInJhZGlvIiwiY2hlY2tib3giXSxmdW5jdGlvbigpe2YudmFsSG9va3NbdGhpc109Zi5leHRlbmQoZi52YWxIb29rc1t0aGlzXSx7c2V0OmZ1bmN0aW9uKGEsYil7aWYoZi5pc0FycmF5KGIpKXJldHVybiBhLmNoZWNrZWQ9Zi5pbkFycmF5KGYoYSkudmFsKCksYik+PTB9fSl9KTt2YXIgej0vXig/OnRleHRhcmVhfGlucHV0fHNlbGVjdCkkL2ksQT0vXihbXlwuXSopPyg/OlwuKC4rKSk/JC8sQj0vXGJob3ZlcihcLlxTKyk/XGIvLEM9L15rZXkvLEQ9L14oPzptb3VzZXxjb250ZXh0bWVudSl8Y2xpY2svLEU9L14oPzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvLEY9L14oXHcqKSg/OiMoW1x3XC1dKykpPyg/OlwuKFtcd1wtXSspKT8kLyxHPWZ1bmN0aW9uKGEpe3ZhciBiPUYuZXhlYyhhKTtiJiYoYlsxXT0oYlsxXXx8IiIpLnRvTG93ZXJDYXNlKCksYlszXT1iWzNdJiZuZXcgUmVnRXhwKCIoPzpefFxccykiK2JbM10rIig/Olxcc3wkKSIpKTtyZXR1cm4gYn0sSD1mdW5jdGlvbihhLGIpe3ZhciBjPWEuYXR0cmlidXRlc3x8e307cmV0dXJuKCFiWzFdfHxhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1iWzFdKSYmKCFiWzJdfHwoYy5pZHx8e30pLnZhbHVlPT09YlsyXSkmJighYlszXXx8YlszXS50ZXN0KChjWyJjbGFzcyJdfHx7fSkudmFsdWUpKX0sST1mdW5jdGlvbihhKXtyZXR1cm4gZi5ldmVudC5zcGVjaWFsLmhvdmVyP2E6YS5yZXBsYWNlKEIsIm1vdXNlZW50ZXIkMSBtb3VzZWxlYXZlJDEiKX07CitmLmV2ZW50PXthZGQ6ZnVuY3Rpb24oYSxjLGQsZSxnKXt2YXIgaCxpLGosayxsLG0sbixvLHAscSxyLHM7aWYoIShhLm5vZGVUeXBlPT09M3x8YS5ub2RlVHlwZT09PTh8fCFjfHwhZHx8IShoPWYuX2RhdGEoYSkpKSl7ZC5oYW5kbGVyJiYocD1kLGQ9cC5oYW5kbGVyKSxkLmd1aWR8fChkLmd1aWQ9Zi5ndWlkKyspLGo9aC5ldmVudHMsanx8KGguZXZlbnRzPWo9e30pLGk9aC5oYW5kbGUsaXx8KGguaGFuZGxlPWk9ZnVuY3Rpb24oYSl7cmV0dXJuIHR5cGVvZiBmIT0idW5kZWZpbmVkIiYmKCFhfHxmLmV2ZW50LnRyaWdnZXJlZCE9PWEudHlwZSk/Zi5ldmVudC5kaXNwYXRjaC5hcHBseShpLmVsZW0sYXJndW1lbnRzKTpifSxpLmVsZW09YSksYz1mLnRyaW0oSShjKSkuc3BsaXQoIiAiKTtmb3Ioaz0wO2s8Yy5sZW5ndGg7aysrKXtsPUEuZXhlYyhjW2tdKXx8W10sbT1sWzFdLG49KGxbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxzPWYuZXZlbnQuc3BlY2lhbFttXXx8e30sbT0oZz9zLmRlbGVnYXRlVHlwZTpzLmJpbmRUeXBlKXx8bSxzPWYuZXZlbnQuc3BlY2lhbFttXXx8e30sbz1mLmV4dGVuZCh7dHlwZTptLG9yaWdUeXBlOmxbMV0sZGF0YTplLGhhbmRsZXI6ZCxndWlkOmQuZ3VpZCxzZWxlY3RvcjpnLHF1aWNrOkcoZyksbmFtZXNwYWNlOm4uam9pbigiLiIpfSxwKSxyPWpbbV07aWYoIXIpe3I9alttXT1bXSxyLmRlbGVnYXRlQ291bnQ9MDtpZighcy5zZXR1cHx8cy5zZXR1cC5jYWxsKGEsZSxuLGkpPT09ITEpYS5hZGRFdmVudExpc3RlbmVyP2EuYWRkRXZlbnRMaXN0ZW5lcihtLGksITEpOmEuYXR0YWNoRXZlbnQmJmEuYXR0YWNoRXZlbnQoIm9uIittLGkpfXMuYWRkJiYocy5hZGQuY2FsbChhLG8pLG8uaGFuZGxlci5ndWlkfHwoby5oYW5kbGVyLmd1aWQ9ZC5ndWlkKSksZz9yLnNwbGljZShyLmRlbGVnYXRlQ291bnQrKywwLG8pOnIucHVzaChvKSxmLmV2ZW50Lmdsb2JhbFttXT0hMH1hPW51bGx9fSxnbG9iYWw6e30scmVtb3ZlOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGc9Zi5oYXNEYXRhKGEpJiZmLl9kYXRhKGEpLGgsaSxqLGssbCxtLG4sbyxwLHEscixzO2lmKCEhZyYmISEobz1nLmV2ZW50cykpe2I9Zi50cmltKEkoYnx8IiIpKS5zcGxpdCgiICIpO2ZvcihoPTA7aDxiLmxlbmd0aDtoKyspe2k9QS5leGVjKGJbaF0pfHxbXSxqPWs9aVsxXSxsPWlbMl07aWYoIWope2ZvcihqIGluIG8pZi5ldmVudC5yZW1vdmUoYSxqK2JbaF0sYyxkLCEwKTtjb250aW51ZX1wPWYuZXZlbnQuc3BlY2lhbFtqXXx8e30saj0oZD9wLmRlbGVnYXRlVHlwZTpwLmJpbmRUeXBlKXx8aixyPW9bal18fFtdLG09ci5sZW5ndGgsbD1sP25ldyBSZWdFeHAoIihefFxcLikiK2wuc3BsaXQoIi4iKS5zb3J0KCkuam9pbigiXFwuKD86LipcXC4pPyIpKyIoXFwufCQpIik6bnVsbDtmb3Iobj0wO248ci5sZW5ndGg7bisrKXM9cltuXSwoZXx8az09PXMub3JpZ1R5cGUpJiYoIWN8fGMuZ3VpZD09PXMuZ3VpZCkmJighbHx8bC50ZXN0KHMubmFtZXNwYWNlKSkmJighZHx8ZD09PXMuc2VsZWN0b3J8fGQ9PT0iKioiJiZzLnNlbGVjdG9yKSYmKHIuc3BsaWNlKG4tLSwxKSxzLnNlbGVjdG9yJiZyLmRlbGVnYXRlQ291bnQtLSxwLnJlbW92ZSYmcC5yZW1vdmUuY2FsbChhLHMpKTtyLmxlbmd0aD09PTAmJm0hPT1yLmxlbmd0aCYmKCghcC50ZWFyZG93bnx8cC50ZWFyZG93bi5jYWxsKGEsbCk9PT0hMSkmJmYucmVtb3ZlRXZlbnQoYSxqLGcuaGFuZGxlKSxkZWxldGUgb1tqXSl9Zi5pc0VtcHR5T2JqZWN0KG8pJiYocT1nLmhhbmRsZSxxJiYocS5lbGVtPW51bGwpLGYucmVtb3ZlRGF0YShhLFsiZXZlbnRzIiwiaGFuZGxlIl0sITApKX19LGN1c3RvbUV2ZW50OntnZXREYXRhOiEwLHNldERhdGE6ITAsY2hhbmdlRGF0YTohMH0sdHJpZ2dlcjpmdW5jdGlvbihjLGQsZSxnKXtpZighZXx8ZS5ub2RlVHlwZSE9PTMmJmUubm9kZVR5cGUhPT04KXt2YXIgaD1jLnR5cGV8fGMsaT1bXSxqLGssbCxtLG4sbyxwLHEscixzO2lmKEUudGVzdChoK2YuZXZlbnQudHJpZ2dlcmVkKSlyZXR1cm47aC5pbmRleE9mKCIhIik+PTAmJihoPWguc2xpY2UoMCwtMSksaz0hMCksaC5pbmRleE9mKCIuIik+PTAmJihpPWguc3BsaXQoIi4iKSxoPWkuc2hpZnQoKSxpLnNvcnQoKSk7aWYoKCFlfHxmLmV2ZW50LmN1c3RvbUV2ZW50W2hdKSYmIWYuZXZlbnQuZ2xvYmFsW2hdKXJldHVybjtjPXR5cGVvZiBjPT0ib2JqZWN0Ij9jW2YuZXhwYW5kb10/YzpuZXcgZi5FdmVudChoLGMpOm5ldyBmLkV2ZW50KGgpLGMudHlwZT1oLGMuaXNUcmlnZ2VyPSEwLGMuZXhjbHVzaXZlPWssYy5uYW1lc3BhY2U9aS5qb2luKCIuIiksYy5uYW1lc3BhY2VfcmU9Yy5uYW1lc3BhY2U/bmV3IFJlZ0V4cCgiKF58XFwuKSIraS5qb2luKCJcXC4oPzouKlxcLik/IikrIihcXC58JCkiKTpudWxsLG89aC5pbmRleE9mKCI6Iik8MD8ib24iK2g6IiI7aWYoIWUpe2o9Zi5jYWNoZTtmb3IobCBpbiBqKWpbbF0uZXZlbnRzJiZqW2xdLmV2ZW50c1toXSYmZi5ldmVudC50cmlnZ2VyKGMsZCxqW2xdLmhhbmRsZS5lbGVtLCEwKTtyZXR1cm59Yy5yZXN1bHQ9YixjLnRhcmdldHx8KGMudGFyZ2V0PWUpLGQ9ZCE9bnVsbD9mLm1ha2VBcnJheShkKTpbXSxkLnVuc2hpZnQoYykscD1mLmV2ZW50LnNwZWNpYWxbaF18fHt9O2lmKHAudHJpZ2dlciYmcC50cmlnZ2VyLmFwcGx5KGUsZCk9PT0hMSlyZXR1cm47cj1bW2UscC5iaW5kVHlwZXx8aF1dO2lmKCFnJiYhcC5ub0J1YmJsZSYmIWYuaXNXaW5kb3coZSkpe3M9cC5kZWxlZ2F0ZVR5cGV8fGgsbT1FLnRlc3QocytoKT9lOmUucGFyZW50Tm9kZSxuPW51bGw7Zm9yKDttO209bS5wYXJlbnROb2RlKXIucHVzaChbbSxzXSksbj1tO24mJm49PT1lLm93bmVyRG9jdW1lbnQmJnIucHVzaChbbi5kZWZhdWx0Vmlld3x8bi5wYXJlbnRXaW5kb3d8fGEsc10pfWZvcihsPTA7bDxyLmxlbmd0aCYmIWMuaXNQcm9wYWdhdGlvblN0b3BwZWQoKTtsKyspbT1yW2xdWzBdLGMudHlwZT1yW2xdWzFdLHE9KGYuX2RhdGEobSwiZXZlbnRzIil8fHt9KVtjLnR5cGVdJiZmLl9kYXRhKG0sImhhbmRsZSIpLHEmJnEuYXBwbHkobSxkKSxxPW8mJm1bb10scSYmZi5hY2NlcHREYXRhKG0pJiZxLmFwcGx5KG0sZCk9PT0hMSYmYy5wcmV2ZW50RGVmYXVsdCgpO2MudHlwZT1oLCFnJiYhYy5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmKCFwLl9kZWZhdWx0fHxwLl9kZWZhdWx0LmFwcGx5KGUub3duZXJEb2N1bWVudCxkKT09PSExKSYmKGghPT0iY2xpY2sifHwhZi5ub2RlTmFtZShlLCJhIikpJiZmLmFjY2VwdERhdGEoZSkmJm8mJmVbaF0mJihoIT09ImZvY3VzIiYmaCE9PSJibHVyInx8Yy50YXJnZXQub2Zmc2V0V2lkdGghPT0wKSYmIWYuaXNXaW5kb3coZSkmJihuPWVbb10sbiYmKGVbb109bnVsbCksZi5ldmVudC50cmlnZ2VyZWQ9aCxlW2hdKCksZi5ldmVudC50cmlnZ2VyZWQ9YixuJiYoZVtvXT1uKSk7cmV0dXJuIGMucmVzdWx0fX0sZGlzcGF0Y2g6ZnVuY3Rpb24oYyl7Yz1mLmV2ZW50LmZpeChjfHxhLmV2ZW50KTt2YXIgZD0oZi5fZGF0YSh0aGlzLCJldmVudHMiKXx8e30pW2MudHlwZV18fFtdLGU9ZC5kZWxlZ2F0ZUNvdW50LGc9W10uc2xpY2UuY2FsbChhcmd1bWVudHMsMCksaD0hYy5leGNsdXNpdmUmJiFjLm5hbWVzcGFjZSxpPVtdLGosayxsLG0sbixvLHAscSxyLHMsdDtnWzBdPWMsYy5kZWxlZ2F0ZVRhcmdldD10aGlzO2lmKGUmJiFjLnRhcmdldC5kaXNhYmxlZCYmKCFjLmJ1dHRvbnx8Yy50eXBlIT09ImNsaWNrIikpe209Zih0aGlzKSxtLmNvbnRleHQ9dGhpcy5vd25lckRvY3VtZW50fHx0aGlzO2ZvcihsPWMudGFyZ2V0O2whPXRoaXM7bD1sLnBhcmVudE5vZGV8fHRoaXMpe289e30scT1bXSxtWzBdPWw7Zm9yKGo9MDtqPGU7aisrKXI9ZFtqXSxzPXIuc2VsZWN0b3Isb1tzXT09PWImJihvW3NdPXIucXVpY2s/SChsLHIucXVpY2spOm0uaXMocykpLG9bc10mJnEucHVzaChyKTtxLmxlbmd0aCYmaS5wdXNoKHtlbGVtOmwsbWF0Y2hlczpxfSl9fWQubGVuZ3RoPmUmJmkucHVzaCh7ZWxlbTp0aGlzLG1hdGNoZXM6ZC5zbGljZShlKX0pO2ZvcihqPTA7ajxpLmxlbmd0aCYmIWMuaXNQcm9wYWdhdGlvblN0b3BwZWQoKTtqKyspe3A9aVtqXSxjLmN1cnJlbnRUYXJnZXQ9cC5lbGVtO2ZvcihrPTA7azxwLm1hdGNoZXMubGVuZ3RoJiYhYy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpO2srKyl7cj1wLm1hdGNoZXNba107aWYoaHx8IWMubmFtZXNwYWNlJiYhci5uYW1lc3BhY2V8fGMubmFtZXNwYWNlX3JlJiZjLm5hbWVzcGFjZV9yZS50ZXN0KHIubmFtZXNwYWNlKSljLmRhdGE9ci5kYXRhLGMuaGFuZGxlT2JqPXIsbj0oKGYuZXZlbnQuc3BlY2lhbFtyLm9yaWdUeXBlXXx8e30pLmhhbmRsZXx8ci5oYW5kbGVyKS5hcHBseShwLmVsZW0sZyksbiE9PWImJihjLnJlc3VsdD1uLG49PT0hMSYmKGMucHJldmVudERlZmF1bHQoKSxjLnN0b3BQcm9wYWdhdGlvbigpKSl9fXJldHVybiBjLnJlc3VsdH0scHJvcHM6ImF0dHJDaGFuZ2UgYXR0ck5hbWUgcmVsYXRlZE5vZGUgc3JjRWxlbWVudCBhbHRLZXkgYnViYmxlcyBjYW5jZWxhYmxlIGN0cmxLZXkgY3VycmVudFRhcmdldCBldmVudFBoYXNlIG1ldGFLZXkgcmVsYXRlZFRhcmdldCBzaGlmdEtleSB0YXJnZXQgdGltZVN0YW1wIHZpZXcgd2hpY2giLnNwbGl0KCIgIiksZml4SG9va3M6e30sa2V5SG9va3M6e3Byb3BzOiJjaGFyIGNoYXJDb2RlIGtleSBrZXlDb2RlIi5zcGxpdCgiICIpLGZpbHRlcjpmdW5jdGlvbihhLGIpe2Eud2hpY2g9PW51bGwmJihhLndoaWNoPWIuY2hhckNvZGUhPW51bGw/Yi5jaGFyQ29kZTpiLmtleUNvZGUpO3JldHVybiBhfX0sbW91c2VIb29rczp7cHJvcHM6ImJ1dHRvbiBidXR0b25zIGNsaWVudFggY2xpZW50WSBmcm9tRWxlbWVudCBvZmZzZXRYIG9mZnNldFkgcGFnZVggcGFnZVkgc2NyZWVuWCBzY3JlZW5ZIHRvRWxlbWVudCIuc3BsaXQoIiAiKSxmaWx0ZXI6ZnVuY3Rpb24oYSxkKXt2YXIgZSxmLGcsaD1kLmJ1dHRvbixpPWQuZnJvbUVsZW1lbnQ7YS5wYWdlWD09bnVsbCYmZC5jbGllbnRYIT1udWxsJiYoZT1hLnRhcmdldC5vd25lckRvY3VtZW50fHxjLGY9ZS5kb2N1bWVudEVsZW1lbnQsZz1lLmJvZHksYS5wYWdlWD1kLmNsaWVudFgrKGYmJmYuc2Nyb2xsTGVmdHx8ZyYmZy5zY3JvbGxMZWZ0fHwwKS0oZiYmZi5jbGllbnRMZWZ0fHxnJiZnLmNsaWVudExlZnR8fDApLGEucGFnZVk9ZC5jbGllbnRZKyhmJiZmLnNjcm9sbFRvcHx8ZyYmZy5zY3JvbGxUb3B8fDApLShmJiZmLmNsaWVudFRvcHx8ZyYmZy5jbGllbnRUb3B8fDApKSwhYS5yZWxhdGVkVGFyZ2V0JiZpJiYoYS5yZWxhdGVkVGFyZ2V0PWk9PT1hLnRhcmdldD9kLnRvRWxlbWVudDppKSwhYS53aGljaCYmaCE9PWImJihhLndoaWNoPWgmMT8xOmgmMj8zOmgmND8yOjApO3JldHVybiBhfX0sZml4OmZ1bmN0aW9uKGEpe2lmKGFbZi5leHBhbmRvXSlyZXR1cm4gYTt2YXIgZCxlLGc9YSxoPWYuZXZlbnQuZml4SG9va3NbYS50eXBlXXx8e30saT1oLnByb3BzP3RoaXMucHJvcHMuY29uY2F0KGgucHJvcHMpOnRoaXMucHJvcHM7YT1mLkV2ZW50KGcpO2ZvcihkPWkubGVuZ3RoO2Q7KWU9aVstLWRdLGFbZV09Z1tlXTthLnRhcmdldHx8KGEudGFyZ2V0PWcuc3JjRWxlbWVudHx8YyksYS50YXJnZXQubm9kZVR5cGU9PT0zJiYoYS50YXJnZXQ9YS50YXJnZXQucGFyZW50Tm9kZSksYS5tZXRhS2V5PT09YiYmKGEubWV0YUtleT1hLmN0cmxLZXkpO3JldHVybiBoLmZpbHRlcj9oLmZpbHRlcihhLGcpOmF9LHNwZWNpYWw6e3JlYWR5OntzZXR1cDpmLmJpbmRSZWFkeX0sbG9hZDp7bm9CdWJibGU6ITB9LGZvY3VzOntkZWxlZ2F0ZVR5cGU6ImZvY3VzaW4ifSxibHVyOntkZWxlZ2F0ZVR5cGU6ImZvY3Vzb3V0In0sYmVmb3JldW5sb2FkOntzZXR1cDpmdW5jdGlvbihhLGIsYyl7Zi5pc1dpbmRvdyh0aGlzKSYmKHRoaXMub25iZWZvcmV1bmxvYWQ9Yyl9LHRlYXJkb3duOmZ1bmN0aW9uKGEsYil7dGhpcy5vbmJlZm9yZXVubG9hZD09PWImJih0aGlzLm9uYmVmb3JldW5sb2FkPW51bGwpfX19LHNpbXVsYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWYuZXh0ZW5kKG5ldyBmLkV2ZW50LGMse3R5cGU6YSxpc1NpbXVsYXRlZDohMCxvcmlnaW5hbEV2ZW50Ont9fSk7ZD9mLmV2ZW50LnRyaWdnZXIoZSxudWxsLGIpOmYuZXZlbnQuZGlzcGF0Y2guY2FsbChiLGUpLGUuaXNEZWZhdWx0UHJldmVudGVkKCkmJmMucHJldmVudERlZmF1bHQoKX19LGYuZXZlbnQuaGFuZGxlPWYuZXZlbnQuZGlzcGF0Y2gsZi5yZW1vdmVFdmVudD1jLnJlbW92ZUV2ZW50TGlzdGVuZXI/ZnVuY3Rpb24oYSxiLGMpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lciYmYS5yZW1vdmVFdmVudExpc3RlbmVyKGIsYywhMSl9OmZ1bmN0aW9uKGEsYixjKXthLmRldGFjaEV2ZW50JiZhLmRldGFjaEV2ZW50KCJvbiIrYixjKX0sZi5FdmVudD1mdW5jdGlvbihhLGIpe2lmKCEodGhpcyBpbnN0YW5jZW9mIGYuRXZlbnQpKXJldHVybiBuZXcgZi5FdmVudChhLGIpO2EmJmEudHlwZT8odGhpcy5vcmlnaW5hbEV2ZW50PWEsdGhpcy50eXBlPWEudHlwZSx0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1hLmRlZmF1bHRQcmV2ZW50ZWR8fGEucmV0dXJuVmFsdWU9PT0hMXx8YS5nZXRQcmV2ZW50RGVmYXVsdCYmYS5nZXRQcmV2ZW50RGVmYXVsdCgpP0s6Sik6dGhpcy50eXBlPWEsYiYmZi5leHRlbmQodGhpcyxiKSx0aGlzLnRpbWVTdGFtcD1hJiZhLnRpbWVTdGFtcHx8Zi5ub3coKSx0aGlzW2YuZXhwYW5kb109ITB9LGYuRXZlbnQucHJvdG90eXBlPXtwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPUs7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50OyFhfHwoYS5wcmV2ZW50RGVmYXVsdD9hLnByZXZlbnREZWZhdWx0KCk6YS5yZXR1cm5WYWx1ZT0hMSl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9Szt2YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7IWF8fChhLnN0b3BQcm9wYWdhdGlvbiYmYS5zdG9wUHJvcGFnYXRpb24oKSxhLmNhbmNlbEJ1YmJsZT0hMCl9LHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3RoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9Syx0aGlzLnN0b3BQcm9wYWdhdGlvbigpfSxpc0RlZmF1bHRQcmV2ZW50ZWQ6Sixpc1Byb3BhZ2F0aW9uU3RvcHBlZDpKLGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOkp9LGYuZWFjaCh7bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9LGZ1bmN0aW9uKGEsYil7Zi5ldmVudC5zcGVjaWFsW2FdPXtkZWxlZ2F0ZVR5cGU6YixiaW5kVHlwZTpiLGhhbmRsZTpmdW5jdGlvbihhKXt2YXIgYz10aGlzLGQ9YS5yZWxhdGVkVGFyZ2V0LGU9YS5oYW5kbGVPYmosZz1lLnNlbGVjdG9yLGg7aWYoIWR8fGQhPT1jJiYhZi5jb250YWlucyhjLGQpKWEudHlwZT1lLm9yaWdUeXBlLGg9ZS5oYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxhLnR5cGU9YjtyZXR1cm4gaH19fSksZi5zdXBwb3J0LnN1Ym1pdEJ1YmJsZXN8fChmLmV2ZW50LnNwZWNpYWwuc3VibWl0PXtzZXR1cDpmdW5jdGlvbigpe2lmKGYubm9kZU5hbWUodGhpcywiZm9ybSIpKXJldHVybiExO2YuZXZlbnQuYWRkKHRoaXMsImNsaWNrLl9zdWJtaXQga2V5cHJlc3MuX3N1Ym1pdCIsZnVuY3Rpb24oYSl7dmFyIGM9YS50YXJnZXQsZD1mLm5vZGVOYW1lKGMsImlucHV0Iil8fGYubm9kZU5hbWUoYywiYnV0dG9uIik/Yy5mb3JtOmI7ZCYmIWQuX3N1Ym1pdF9hdHRhY2hlZCYmKGYuZXZlbnQuYWRkKGQsInN1Ym1pdC5fc3VibWl0IixmdW5jdGlvbihhKXt0aGlzLnBhcmVudE5vZGUmJiFhLmlzVHJpZ2dlciYmZi5ldmVudC5zaW11bGF0ZSgic3VibWl0Iix0aGlzLnBhcmVudE5vZGUsYSwhMCl9KSxkLl9zdWJtaXRfYXR0YWNoZWQ9ITApfSl9LHRlYXJkb3duOmZ1bmN0aW9uKCl7aWYoZi5ub2RlTmFtZSh0aGlzLCJmb3JtIikpcmV0dXJuITE7Zi5ldmVudC5yZW1vdmUodGhpcywiLl9zdWJtaXQiKX19KSxmLnN1cHBvcnQuY2hhbmdlQnViYmxlc3x8KGYuZXZlbnQuc3BlY2lhbC5jaGFuZ2U9e3NldHVwOmZ1bmN0aW9uKCl7aWYoei50ZXN0KHRoaXMubm9kZU5hbWUpKXtpZih0aGlzLnR5cGU9PT0iY2hlY2tib3gifHx0aGlzLnR5cGU9PT0icmFkaW8iKWYuZXZlbnQuYWRkKHRoaXMsInByb3BlcnR5Y2hhbmdlLl9jaGFuZ2UiLGZ1bmN0aW9uKGEpe2Eub3JpZ2luYWxFdmVudC5wcm9wZXJ0eU5hbWU9PT0iY2hlY2tlZCImJih0aGlzLl9qdXN0X2NoYW5nZWQ9ITApfSksZi5ldmVudC5hZGQodGhpcywiY2xpY2suX2NoYW5nZSIsZnVuY3Rpb24oYSl7dGhpcy5fanVzdF9jaGFuZ2VkJiYhYS5pc1RyaWdnZXImJih0aGlzLl9qdXN0X2NoYW5nZWQ9ITEsZi5ldmVudC5zaW11bGF0ZSgiY2hhbmdlIix0aGlzLGEsITApKX0pO3JldHVybiExfWYuZXZlbnQuYWRkKHRoaXMsImJlZm9yZWFjdGl2YXRlLl9jaGFuZ2UiLGZ1bmN0aW9uKGEpe3ZhciBiPWEudGFyZ2V0O3oudGVzdChiLm5vZGVOYW1lKSYmIWIuX2NoYW5nZV9hdHRhY2hlZCYmKGYuZXZlbnQuYWRkKGIsImNoYW5nZS5fY2hhbmdlIixmdW5jdGlvbihhKXt0aGlzLnBhcmVudE5vZGUmJiFhLmlzU2ltdWxhdGVkJiYhYS5pc1RyaWdnZXImJmYuZXZlbnQuc2ltdWxhdGUoImNoYW5nZSIsdGhpcy5wYXJlbnROb2RlLGEsITApfSksYi5fY2hhbmdlX2F0dGFjaGVkPSEwKX0pfSxoYW5kbGU6ZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQ7aWYodGhpcyE9PWJ8fGEuaXNTaW11bGF0ZWR8fGEuaXNUcmlnZ2VyfHxiLnR5cGUhPT0icmFkaW8iJiZiLnR5cGUhPT0iY2hlY2tib3giKXJldHVybiBhLmhhbmRsZU9iai5oYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sdGVhcmRvd246ZnVuY3Rpb24oKXtmLmV2ZW50LnJlbW92ZSh0aGlzLCIuX2NoYW5nZSIpO3JldHVybiB6LnRlc3QodGhpcy5ub2RlTmFtZSl9fSksZi5zdXBwb3J0LmZvY3VzaW5CdWJibGVzfHxmLmVhY2goe2ZvY3VzOiJmb2N1c2luIixibHVyOiJmb2N1c291dCJ9LGZ1bmN0aW9uKGEsYil7dmFyIGQ9MCxlPWZ1bmN0aW9uKGEpe2YuZXZlbnQuc2ltdWxhdGUoYixhLnRhcmdldCxmLmV2ZW50LmZpeChhKSwhMCl9O2YuZXZlbnQuc3BlY2lhbFtiXT17c2V0dXA6ZnVuY3Rpb24oKXtkKys9PT0wJiZjLmFkZEV2ZW50TGlzdGVuZXIoYSxlLCEwKX0sdGVhcmRvd246ZnVuY3Rpb24oKXstLWQ9PT0wJiZjLnJlbW92ZUV2ZW50TGlzdGVuZXIoYSxlLCEwKX19fSksZi5mbi5leHRlbmQoe29uOmZ1bmN0aW9uKGEsYyxkLGUsZyl7dmFyIGgsaTtpZih0eXBlb2YgYT09Im9iamVjdCIpe3R5cGVvZiBjIT0ic3RyaW5nIiYmKGQ9YyxjPWIpO2ZvcihpIGluIGEpdGhpcy5vbihpLGMsZCxhW2ldLGcpO3JldHVybiB0aGlzfWQ9PW51bGwmJmU9PW51bGw/KGU9YyxkPWM9Yik6ZT09bnVsbCYmKHR5cGVvZiBjPT0ic3RyaW5nIj8oZT1kLGQ9Yik6KGU9ZCxkPWMsYz1iKSk7aWYoZT09PSExKWU9SjtlbHNlIGlmKCFlKXJldHVybiB0aGlzO2c9PT0xJiYoaD1lLGU9ZnVuY3Rpb24oYSl7ZigpLm9mZihhKTtyZXR1cm4gaC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGUuZ3VpZD1oLmd1aWR8fChoLmd1aWQ9Zi5ndWlkKyspKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zi5ldmVudC5hZGQodGhpcyxhLGUsZCxjKX0pfSxvbmU6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHRoaXMub24uY2FsbCh0aGlzLGEsYixjLGQsMSl9LG9mZjpmdW5jdGlvbihhLGMsZCl7aWYoYSYmYS5wcmV2ZW50RGVmYXVsdCYmYS5oYW5kbGVPYmope3ZhciBlPWEuaGFuZGxlT2JqO2YoYS5kZWxlZ2F0ZVRhcmdldCkub2ZmKGUubmFtZXNwYWNlP2UudHlwZSsiLiIrZS5uYW1lc3BhY2U6ZS50eXBlLGUuc2VsZWN0b3IsZS5oYW5kbGVyKTtyZXR1cm4gdGhpc31pZih0eXBlb2YgYT09Im9iamVjdCIpe2Zvcih2YXIgZyBpbiBhKXRoaXMub2ZmKGcsYyxhW2ddKTtyZXR1cm4gdGhpc31pZihjPT09ITF8fHR5cGVvZiBjPT0iZnVuY3Rpb24iKWQ9YyxjPWI7ZD09PSExJiYoZD1KKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zi5ldmVudC5yZW1vdmUodGhpcyxhLGQsYyl9KX0sYmluZDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMub24oYSxudWxsLGIsYyl9LHVuYmluZDpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm9mZihhLG51bGwsYil9LGxpdmU6ZnVuY3Rpb24oYSxiLGMpe2YodGhpcy5jb250ZXh0KS5vbihhLHRoaXMuc2VsZWN0b3IsYixjKTtyZXR1cm4gdGhpc30sZGllOmZ1bmN0aW9uKGEsYil7Zih0aGlzLmNvbnRleHQpLm9mZihhLHRoaXMuc2VsZWN0b3J8fCIqKiIsYik7cmV0dXJuIHRoaXN9LGRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLm9uKGIsYSxjLGQpfSx1bmRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD09MT90aGlzLm9mZihhLCIqKiIpOnRoaXMub2ZmKGIsYSxjKX0sdHJpZ2dlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmLmV2ZW50LnRyaWdnZXIoYSxiLHRoaXMpfSl9LHRyaWdnZXJIYW5kbGVyOmZ1bmN0aW9uKGEsYil7aWYodGhpc1swXSlyZXR1cm4gZi5ldmVudC50cmlnZ2VyKGEsYix0aGlzWzBdLCEwKX0sdG9nZ2xlOmZ1bmN0aW9uKGEpe3ZhciBiPWFyZ3VtZW50cyxjPWEuZ3VpZHx8Zi5ndWlkKyssZD0wLGU9ZnVuY3Rpb24oYyl7dmFyIGU9KGYuX2RhdGEodGhpcywibGFzdFRvZ2dsZSIrYS5ndWlkKXx8MCklZDtmLl9kYXRhKHRoaXMsImxhc3RUb2dnbGUiK2EuZ3VpZCxlKzEpLGMucHJldmVudERlZmF1bHQoKTtyZXR1cm4gYltlXS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fCExfTtlLmd1aWQ9Yzt3aGlsZShkPGIubGVuZ3RoKWJbZCsrXS5ndWlkPWM7cmV0dXJuIHRoaXMuY2xpY2soZSl9LGhvdmVyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMubW91c2VlbnRlcihhKS5tb3VzZWxlYXZlKGJ8fGEpfX0pLGYuZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IGxvYWQgcmVzaXplIHNjcm9sbCB1bmxvYWQgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe2YuZm5bYl09ZnVuY3Rpb24oYSxjKXtjPT1udWxsJiYoYz1hLGE9bnVsbCk7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MD90aGlzLm9uKGIsbnVsbCxhLGMpOnRoaXMudHJpZ2dlcihiKX0sZi5hdHRyRm4mJihmLmF0dHJGbltiXT0hMCksQy50ZXN0KGIpJiYoZi5ldmVudC5maXhIb29rc1tiXT1mLmV2ZW50LmtleUhvb2tzKSxELnRlc3QoYikmJihmLmV2ZW50LmZpeEhvb2tzW2JdPWYuZXZlbnQubW91c2VIb29rcyl9KSxmdW5jdGlvbigpe2Z1bmN0aW9uIHgoYSxiLGMsZSxmLGcpe2Zvcih2YXIgaD0wLGk9ZS5sZW5ndGg7aDxpO2grKyl7dmFyIGo9ZVtoXTtpZihqKXt2YXIgaz0hMTtqPWpbYV07d2hpbGUoail7aWYoaltkXT09PWMpe2s9ZVtqLnNpenNldF07YnJlYWt9aWYoai5ub2RlVHlwZT09PTEpe2d8fChqW2RdPWMsai5zaXpzZXQ9aCk7aWYodHlwZW9mIGIhPSJzdHJpbmciKXtpZihqPT09Yil7az0hMDticmVha319ZWxzZSBpZihtLmZpbHRlcihiLFtqXSkubGVuZ3RoPjApe2s9ajticmVha319aj1qW2FdfWVbaF09a319fWZ1bmN0aW9uIHcoYSxiLGMsZSxmLGcpe2Zvcih2YXIgaD0wLGk9ZS5sZW5ndGg7aDxpO2grKyl7dmFyIGo9ZVtoXTtpZihqKXt2YXIgaz0hMTtqPWpbYV07d2hpbGUoail7aWYoaltkXT09PWMpe2s9ZVtqLnNpenNldF07YnJlYWt9ai5ub2RlVHlwZT09PTEmJiFnJiYoaltkXT1jLGouc2l6c2V0PWgpO2lmKGoubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWIpe2s9ajticmVha31qPWpbYV19ZVtoXT1rfX19dmFyIGE9LygoPzpcKCg/OlwoW14oKV0rXCl8W14oKV0rKStcKXxcWyg/OlxbW15cW1xdXSpcXXxbJyJdW14nIl0qWyciXXxbXlxbXF0nIl0rKStcXXxcXC58W14gPit+LChcW1xcXSspK3xbPit+XSkoXHMqLFxzKik/KCg/Oi58XHJ8XG4pKikvZyxkPSJzaXpjYWNoZSIrKE1hdGgucmFuZG9tKCkrIiIpLnJlcGxhY2UoIi4iLCIiKSxlPTAsZz1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLGg9ITEsaT0hMCxqPS9cXC9nLGs9L1xyXG4vZyxsPS9cVy87WzAsMF0uc29ydChmdW5jdGlvbigpe2k9ITE7cmV0dXJuIDB9KTt2YXIgbT1mdW5jdGlvbihiLGQsZSxmKXtlPWV8fFtdLGQ9ZHx8Yzt2YXIgaD1kO2lmKGQubm9kZVR5cGUhPT0xJiZkLm5vZGVUeXBlIT09OSlyZXR1cm5bXTtpZighYnx8dHlwZW9mIGIhPSJzdHJpbmciKXJldHVybiBlO3ZhciBpLGosayxsLG4scSxyLHQsdT0hMCx2PW0uaXNYTUwoZCksdz1bXSx4PWI7ZG97YS5leGVjKCIiKSxpPWEuZXhlYyh4KTtpZihpKXt4PWlbM10sdy5wdXNoKGlbMV0pO2lmKGlbMl0pe2w9aVszXTticmVha319fXdoaWxlKGkpO2lmKHcubGVuZ3RoPjEmJnAuZXhlYyhiKSlpZih3Lmxlbmd0aD09PTImJm8ucmVsYXRpdmVbd1swXV0paj15KHdbMF0rd1sxXSxkLGYpO2Vsc2V7aj1vLnJlbGF0aXZlW3dbMF1dP1tkXTptKHcuc2hpZnQoKSxkKTt3aGlsZSh3Lmxlbmd0aCliPXcuc2hpZnQoKSxvLnJlbGF0aXZlW2JdJiYoYis9dy5zaGlmdCgpKSxqPXkoYixqLGYpfWVsc2V7IWYmJncubGVuZ3RoPjEmJmQubm9kZVR5cGU9PT05JiYhdiYmby5tYXRjaC5JRC50ZXN0KHdbMF0pJiYhby5tYXRjaC5JRC50ZXN0KHdbdy5sZW5ndGgtMV0pJiYobj1tLmZpbmQody5zaGlmdCgpLGQsdiksZD1uLmV4cHI/bS5maWx0ZXIobi5leHByLG4uc2V0KVswXTpuLnNldFswXSk7aWYoZCl7bj1mP3tleHByOncucG9wKCksc2V0OnMoZil9Om0uZmluZCh3LnBvcCgpLHcubGVuZ3RoPT09MSYmKHdbMF09PT0ifiJ8fHdbMF09PT0iKyIpJiZkLnBhcmVudE5vZGU/ZC5wYXJlbnROb2RlOmQsdiksaj1uLmV4cHI/bS5maWx0ZXIobi5leHByLG4uc2V0KTpuLnNldCx3Lmxlbmd0aD4wP2s9cyhqKTp1PSExO3doaWxlKHcubGVuZ3RoKXE9dy5wb3AoKSxyPXEsby5yZWxhdGl2ZVtxXT9yPXcucG9wKCk6cT0iIixyPT1udWxsJiYocj1kKSxvLnJlbGF0aXZlW3FdKGsscix2KX1lbHNlIGs9dz1bXX1rfHwoaz1qKSxrfHxtLmVycm9yKHF8fGIpO2lmKGcuY2FsbChrKT09PSJbb2JqZWN0IEFycmF5XSIpaWYoIXUpZS5wdXNoLmFwcGx5KGUsayk7ZWxzZSBpZihkJiZkLm5vZGVUeXBlPT09MSlmb3IodD0wO2tbdF0hPW51bGw7dCsrKWtbdF0mJihrW3RdPT09ITB8fGtbdF0ubm9kZVR5cGU9PT0xJiZtLmNvbnRhaW5zKGQsa1t0XSkpJiZlLnB1c2goalt0XSk7ZWxzZSBmb3IodD0wO2tbdF0hPW51bGw7dCsrKWtbdF0mJmtbdF0ubm9kZVR5cGU9PT0xJiZlLnB1c2goalt0XSk7ZWxzZSBzKGssZSk7bCYmKG0obCxoLGUsZiksbS51bmlxdWVTb3J0KGUpKTtyZXR1cm4gZX07bS51bmlxdWVTb3J0PWZ1bmN0aW9uKGEpe2lmKHUpe2g9aSxhLnNvcnQodSk7aWYoaClmb3IodmFyIGI9MTtiPGEubGVuZ3RoO2IrKylhW2JdPT09YVtiLTFdJiZhLnNwbGljZShiLS0sMSl9cmV0dXJuIGF9LG0ubWF0Y2hlcz1mdW5jdGlvbihhLGIpe3JldHVybiBtKGEsbnVsbCxudWxsLGIpfSxtLm1hdGNoZXNTZWxlY3Rvcj1mdW5jdGlvbihhLGIpe3JldHVybiBtKGIsbnVsbCxudWxsLFthXSkubGVuZ3RoPjB9LG0uZmluZD1mdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmLGcsaCxpO2lmKCFhKXJldHVybltdO2ZvcihlPTAsZj1vLm9yZGVyLmxlbmd0aDtlPGY7ZSsrKXtoPW8ub3JkZXJbZV07aWYoZz1vLmxlZnRNYXRjaFtoXS5leGVjKGEpKXtpPWdbMV0sZy5zcGxpY2UoMSwxKTtpZihpLnN1YnN0cihpLmxlbmd0aC0xKSE9PSJcXCIpe2dbMV09KGdbMV18fCIiKS5yZXBsYWNlKGosIiIpLGQ9by5maW5kW2hdKGcsYixjKTtpZihkIT1udWxsKXthPWEucmVwbGFjZShvLm1hdGNoW2hdLCIiKTticmVha319fX1kfHwoZD10eXBlb2YgYi5nZXRFbGVtZW50c0J5VGFnTmFtZSE9InVuZGVmaW5lZCI/Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpOltdKTtyZXR1cm57c2V0OmQsZXhwcjphfX0sbS5maWx0ZXI9ZnVuY3Rpb24oYSxjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbixwLHE9YSxyPVtdLHM9Yyx0PWMmJmNbMF0mJm0uaXNYTUwoY1swXSk7d2hpbGUoYSYmYy5sZW5ndGgpe2ZvcihoIGluIG8uZmlsdGVyKWlmKChmPW8ubGVmdE1hdGNoW2hdLmV4ZWMoYSkpIT1udWxsJiZmWzJdKXtrPW8uZmlsdGVyW2hdLGw9ZlsxXSxnPSExLGYuc3BsaWNlKDEsMSk7aWYobC5zdWJzdHIobC5sZW5ndGgtMSk9PT0iXFwiKWNvbnRpbnVlO3M9PT1yJiYocj1bXSk7aWYoby5wcmVGaWx0ZXJbaF0pe2Y9by5wcmVGaWx0ZXJbaF0oZixzLGQscixlLHQpO2lmKCFmKWc9aT0hMDtlbHNlIGlmKGY9PT0hMCljb250aW51ZX1pZihmKWZvcihuPTA7KGo9c1tuXSkhPW51bGw7bisrKWomJihpPWsoaixmLG4scykscD1lXmksZCYmaSE9bnVsbD9wP2c9ITA6c1tuXT0hMTpwJiYoci5wdXNoKGopLGc9ITApKTtpZihpIT09Yil7ZHx8KHM9ciksYT1hLnJlcGxhY2Uoby5tYXRjaFtoXSwiIik7aWYoIWcpcmV0dXJuW107YnJlYWt9fWlmKGE9PT1xKWlmKGc9PW51bGwpbS5lcnJvcihhKTtlbHNlIGJyZWFrO3E9YX1yZXR1cm4gc30sbS5lcnJvcj1mdW5jdGlvbihhKXt0aHJvdyBuZXcgRXJyb3IoIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIrYSl9O3ZhciBuPW0uZ2V0VGV4dD1mdW5jdGlvbihhKXt2YXIgYixjLGQ9YS5ub2RlVHlwZSxlPSIiO2lmKGQpe2lmKGQ9PT0xfHxkPT09OSl7aWYodHlwZW9mIGEudGV4dENvbnRlbnQ9PSJzdHJpbmciKXJldHVybiBhLnRleHRDb250ZW50O2lmKHR5cGVvZiBhLmlubmVyVGV4dD09InN0cmluZyIpcmV0dXJuIGEuaW5uZXJUZXh0LnJlcGxhY2UoaywiIik7Zm9yKGE9YS5maXJzdENoaWxkO2E7YT1hLm5leHRTaWJsaW5nKWUrPW4oYSl9ZWxzZSBpZihkPT09M3x8ZD09PTQpcmV0dXJuIGEubm9kZVZhbHVlfWVsc2UgZm9yKGI9MDtjPWFbYl07YisrKWMubm9kZVR5cGUhPT04JiYoZSs9bihjKSk7cmV0dXJuIGV9LG89bS5zZWxlY3RvcnM9e29yZGVyOlsiSUQiLCJOQU1FIiwiVEFHIl0sbWF0Y2g6e0lEOi8jKCg/Oltcd1x1MDBjMC1cdUZGRkZcLV18XFwuKSspLyxDTEFTUzovXC4oKD86W1x3XHUwMGMwLVx1RkZGRlwtXXxcXC4pKykvLE5BTUU6L1xbbmFtZT1bJyJdKigoPzpbXHdcdTAwYzAtXHVGRkZGXC1dfFxcLikrKVsnIl0qXF0vLEFUVFI6L1xbXHMqKCg/Oltcd1x1MDBjMC1cdUZGRkZcLV18XFwuKSspXHMqKD86KFxTPz0pXHMqKD86KFsnIl0pKC4qPylcM3woIz8oPzpbXHdcdTAwYzAtXHVGRkZGXC1dfFxcLikqKXwpfClccypcXS8sVEFHOi9eKCg/Oltcd1x1MDBjMC1cdUZGRkZcKlwtXXxcXC4pKykvLENISUxEOi86KG9ubHl8bnRofGxhc3R8Zmlyc3QpLWNoaWxkKD86XChccyooZXZlbnxvZGR8KD86WytcLV0/XGQrfCg/OlsrXC1dP1xkKik/blxzKig/OlsrXC1dXHMqXGQrKT8pKVxzKlwpKT8vLFBPUzovOihudGh8ZXF8Z3R8bHR8Zmlyc3R8bGFzdHxldmVufG9kZCkoPzpcKChcZCopXCkpPyg/PVteXC1dfCQpLyxQU0VVRE86LzooKD86W1x3XHUwMGMwLVx1RkZGRlwtXXxcXC4pKykoPzpcKChbJyJdPykoKD86XChbXlwpXStcKXxbXlwoXCldKikrKVwyXCkpPy99LGxlZnRNYXRjaDp7fSxhdHRyTWFwOnsiY2xhc3MiOiJjbGFzc05hbWUiLCJmb3IiOiJodG1sRm9yIn0sYXR0ckhhbmRsZTp7aHJlZjpmdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoImhyZWYiKX0sdHlwZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoInR5cGUiKX19LHJlbGF0aXZlOnsiKyI6ZnVuY3Rpb24oYSxiKXt2YXIgYz10eXBlb2YgYj09InN0cmluZyIsZD1jJiYhbC50ZXN0KGIpLGU9YyYmIWQ7ZCYmKGI9Yi50b0xvd2VyQ2FzZSgpKTtmb3IodmFyIGY9MCxnPWEubGVuZ3RoLGg7ZjxnO2YrKylpZihoPWFbZl0pe3doaWxlKChoPWgucHJldmlvdXNTaWJsaW5nKSYmaC5ub2RlVHlwZSE9PTEpO2FbZl09ZXx8aCYmaC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09Yj9ofHwhMTpoPT09Yn1lJiZtLmZpbHRlcihiLGEsITApfSwiPiI6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPXR5cGVvZiBiPT0ic3RyaW5nIixlPTAsZj1hLmxlbmd0aDtpZihkJiYhbC50ZXN0KGIpKXtiPWIudG9Mb3dlckNhc2UoKTtmb3IoO2U8ZjtlKyspe2M9YVtlXTtpZihjKXt2YXIgZz1jLnBhcmVudE5vZGU7YVtlXT1nLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1iP2c6ITF9fX1lbHNle2Zvcig7ZTxmO2UrKyljPWFbZV0sYyYmKGFbZV09ZD9jLnBhcmVudE5vZGU6Yy5wYXJlbnROb2RlPT09Yik7ZCYmbS5maWx0ZXIoYixhLCEwKX19LCIiOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxmPWUrKyxnPXg7dHlwZW9mIGI9PSJzdHJpbmciJiYhbC50ZXN0KGIpJiYoYj1iLnRvTG93ZXJDYXNlKCksZD1iLGc9dyksZygicGFyZW50Tm9kZSIsYixmLGEsZCxjKX0sIn4iOmZ1bmN0aW9uKGEsYixjKXt2YXIgZCxmPWUrKyxnPXg7dHlwZW9mIGI9PSJzdHJpbmciJiYhbC50ZXN0KGIpJiYoYj1iLnRvTG93ZXJDYXNlKCksZD1iLGc9dyksZygicHJldmlvdXNTaWJsaW5nIixiLGYsYSxkLGMpfX0sZmluZDp7SUQ6ZnVuY3Rpb24oYSxiLGMpe2lmKHR5cGVvZiBiLmdldEVsZW1lbnRCeUlkIT0idW5kZWZpbmVkIiYmIWMpe3ZhciBkPWIuZ2V0RWxlbWVudEJ5SWQoYVsxXSk7cmV0dXJuIGQmJmQucGFyZW50Tm9kZT9bZF06W119fSxOQU1FOmZ1bmN0aW9uKGEsYil7aWYodHlwZW9mIGIuZ2V0RWxlbWVudHNCeU5hbWUhPSJ1bmRlZmluZWQiKXt2YXIgYz1bXSxkPWIuZ2V0RWxlbWVudHNCeU5hbWUoYVsxXSk7Zm9yKHZhciBlPTAsZj1kLmxlbmd0aDtlPGY7ZSsrKWRbZV0uZ2V0QXR0cmlidXRlKCJuYW1lIik9PT1hWzFdJiZjLnB1c2goZFtlXSk7cmV0dXJuIGMubGVuZ3RoPT09MD9udWxsOmN9fSxUQUc6ZnVuY3Rpb24oYSxiKXtpZih0eXBlb2YgYi5nZXRFbGVtZW50c0J5VGFnTmFtZSE9InVuZGVmaW5lZCIpcmV0dXJuIGIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYVsxXSl9fSxwcmVGaWx0ZXI6e0NMQVNTOmZ1bmN0aW9uKGEsYixjLGQsZSxmKXthPSIgIithWzFdLnJlcGxhY2UoaiwiIikrIiAiO2lmKGYpcmV0dXJuIGE7Zm9yKHZhciBnPTAsaDsoaD1iW2ddKSE9bnVsbDtnKyspaCYmKGVeKGguY2xhc3NOYW1lJiYoIiAiK2guY2xhc3NOYW1lKyIgIikucmVwbGFjZSgvW1x0XG5ccl0vZywiICIpLmluZGV4T2YoYSk+PTApP2N8fGQucHVzaChoKTpjJiYoYltnXT0hMSkpO3JldHVybiExfSxJRDpmdW5jdGlvbihhKXtyZXR1cm4gYVsxXS5yZXBsYWNlKGosIiIpfSxUQUc6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYVsxXS5yZXBsYWNlKGosIiIpLnRvTG93ZXJDYXNlKCl9LENISUxEOmZ1bmN0aW9uKGEpe2lmKGFbMV09PT0ibnRoIil7YVsyXXx8bS5lcnJvcihhWzBdKSxhWzJdPWFbMl0ucmVwbGFjZSgvXlwrfFxzKi9nLCIiKTt2YXIgYj0vKC0/KShcZCopKD86bihbK1wtXT9cZCopKT8vLmV4ZWMoYVsyXT09PSJldmVuIiYmIjJuInx8YVsyXT09PSJvZGQiJiYiMm4rMSJ8fCEvXEQvLnRlc3QoYVsyXSkmJiIwbisiK2FbMl18fGFbMl0pO2FbMl09YlsxXSsoYlsyXXx8MSktMCxhWzNdPWJbM10tMH1lbHNlIGFbMl0mJm0uZXJyb3IoYVswXSk7YVswXT1lKys7cmV0dXJuIGF9LEFUVFI6ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe3ZhciBnPWFbMV09YVsxXS5yZXBsYWNlKGosIiIpOyFmJiZvLmF0dHJNYXBbZ10mJihhWzFdPW8uYXR0ck1hcFtnXSksYVs0XT0oYVs0XXx8YVs1XXx8IiIpLnJlcGxhY2UoaiwiIiksYVsyXT09PSJ+PSImJihhWzRdPSIgIithWzRdKyIgIik7cmV0dXJuIGF9LFBTRVVETzpmdW5jdGlvbihiLGMsZCxlLGYpe2lmKGJbMV09PT0ibm90IilpZigoYS5leGVjKGJbM10pfHwiIikubGVuZ3RoPjF8fC9eXHcvLnRlc3QoYlszXSkpYlszXT1tKGJbM10sbnVsbCxudWxsLGMpO2Vsc2V7dmFyIGc9bS5maWx0ZXIoYlszXSxjLGQsITBeZik7ZHx8ZS5wdXNoLmFwcGx5KGUsZyk7cmV0dXJuITF9ZWxzZSBpZihvLm1hdGNoLlBPUy50ZXN0KGJbMF0pfHxvLm1hdGNoLkNISUxELnRlc3QoYlswXSkpcmV0dXJuITA7cmV0dXJuIGJ9LFBPUzpmdW5jdGlvbihhKXthLnVuc2hpZnQoITApO3JldHVybiBhfX0sZmlsdGVyczp7ZW5hYmxlZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5kaXNhYmxlZD09PSExJiZhLnR5cGUhPT0iaGlkZGVuIn0sZGlzYWJsZWQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZGlzYWJsZWQ9PT0hMH0sY2hlY2tlZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5jaGVja2VkPT09ITB9LHNlbGVjdGVkOmZ1bmN0aW9uKGEpe2EucGFyZW50Tm9kZSYmYS5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXg7cmV0dXJuIGEuc2VsZWN0ZWQ9PT0hMH0scGFyZW50OmZ1bmN0aW9uKGEpe3JldHVybiEhYS5maXJzdENoaWxkfSxlbXB0eTpmdW5jdGlvbihhKXtyZXR1cm4hYS5maXJzdENoaWxkfSxoYXM6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiEhbShjWzNdLGEpLmxlbmd0aH0saGVhZGVyOmZ1bmN0aW9uKGEpe3JldHVybi9oXGQvaS50ZXN0KGEubm9kZU5hbWUpfSx0ZXh0OmZ1bmN0aW9uKGEpe3ZhciBiPWEuZ2V0QXR0cmlidXRlKCJ0eXBlIiksYz1hLnR5cGU7cmV0dXJuIGEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PSJpbnB1dCImJiJ0ZXh0Ij09PWMmJihiPT09Y3x8Yj09PW51bGwpfSxyYWRpbzpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmInJhZGlvIj09PWEudHlwZX0sY2hlY2tib3g6ZnVuY3Rpb24oYSl7cmV0dXJuIGEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PSJpbnB1dCImJiJjaGVja2JveCI9PT1hLnR5cGV9LGZpbGU6ZnVuY3Rpb24oYSl7cmV0dXJuIGEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PSJpbnB1dCImJiJmaWxlIj09PWEudHlwZX0scGFzc3dvcmQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PSJpbnB1dCImJiJwYXNzd29yZCI9PT1hLnR5cGV9LHN1Ym1pdDpmdW5jdGlvbihhKXt2YXIgYj1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuKGI9PT0iaW5wdXQifHxiPT09ImJ1dHRvbiIpJiYic3VibWl0Ij09PWEudHlwZX0saW1hZ2U6ZnVuY3Rpb24oYSl7cmV0dXJuIGEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PSJpbnB1dCImJiJpbWFnZSI9PT1hLnR5cGV9LHJlc2V0OmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4oYj09PSJpbnB1dCJ8fGI9PT0iYnV0dG9uIikmJiJyZXNldCI9PT1hLnR5cGV9LGJ1dHRvbjpmdW5jdGlvbihhKXt2YXIgYj1hLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk7cmV0dXJuIGI9PT0iaW5wdXQiJiYiYnV0dG9uIj09PWEudHlwZXx8Yj09PSJidXR0b24ifSxpbnB1dDpmdW5jdGlvbihhKXtyZXR1cm4vaW5wdXR8c2VsZWN0fHRleHRhcmVhfGJ1dHRvbi9pLnRlc3QoYS5ub2RlTmFtZSl9LGZvY3VzOmZ1bmN0aW9uKGEpe3JldHVybiBhPT09YS5vd25lckRvY3VtZW50LmFjdGl2ZUVsZW1lbnR9fSxzZXRGaWx0ZXJzOntmaXJzdDpmdW5jdGlvbihhLGIpe3JldHVybiBiPT09MH0sbGFzdDpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4gYj09PWQubGVuZ3RoLTF9LGV2ZW46ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYiUyPT09MH0sb2RkOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGIlMj09PTF9LGx0OmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYjxjWzNdLTB9LGd0OmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYj5jWzNdLTB9LG50aDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGNbM10tMD09PWJ9LGVxOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gY1szXS0wPT09Yn19LGZpbHRlcjp7UFNFVURPOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWJbMV0sZj1vLmZpbHRlcnNbZV07aWYoZilyZXR1cm4gZihhLGMsYixkKTtpZihlPT09ImNvbnRhaW5zIilyZXR1cm4oYS50ZXh0Q29udGVudHx8YS5pbm5lclRleHR8fG4oW2FdKXx8IiIpLmluZGV4T2YoYlszXSk+PTA7aWYoZT09PSJub3QiKXt2YXIgZz1iWzNdO2Zvcih2YXIgaD0wLGk9Zy5sZW5ndGg7aDxpO2grKylpZihnW2hdPT09YSlyZXR1cm4hMTtyZXR1cm4hMH1tLmVycm9yKGUpfSxDSElMRDpmdW5jdGlvbihhLGIpe3ZhciBjLGUsZixnLGgsaSxqLGs9YlsxXSxsPWE7c3dpdGNoKGspe2Nhc2Uib25seSI6Y2FzZSJmaXJzdCI6d2hpbGUobD1sLnByZXZpb3VzU2libGluZylpZihsLm5vZGVUeXBlPT09MSlyZXR1cm4hMTtpZihrPT09ImZpcnN0IilyZXR1cm4hMDtsPWE7Y2FzZSJsYXN0Ijp3aGlsZShsPWwubmV4dFNpYmxpbmcpaWYobC5ub2RlVHlwZT09PTEpcmV0dXJuITE7cmV0dXJuITA7Y2FzZSJudGgiOmM9YlsyXSxlPWJbM107aWYoYz09PTEmJmU9PT0wKXJldHVybiEwO2Y9YlswXSxnPWEucGFyZW50Tm9kZTtpZihnJiYoZ1tkXSE9PWZ8fCFhLm5vZGVJbmRleCkpe2k9MDtmb3IobD1nLmZpcnN0Q2hpbGQ7bDtsPWwubmV4dFNpYmxpbmcpbC5ub2RlVHlwZT09PTEmJihsLm5vZGVJbmRleD0rK2kpO2dbZF09Zn1qPWEubm9kZUluZGV4LWU7cmV0dXJuIGM9PT0wP2o9PT0wOmolYz09PTAmJmovYz49MH19LElEOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGEubm9kZVR5cGU9PT0xJiZhLmdldEF0dHJpYnV0ZSgiaWQiKT09PWJ9LFRBRzpmdW5jdGlvbihhLGIpe3JldHVybiBiPT09IioiJiZhLm5vZGVUeXBlPT09MXx8ISFhLm5vZGVOYW1lJiZhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1ifSxDTEFTUzpmdW5jdGlvbihhLGIpe3JldHVybigiICIrKGEuY2xhc3NOYW1lfHxhLmdldEF0dHJpYnV0ZSgiY2xhc3MiKSkrIiAiKS5pbmRleE9mKGIpPi0xfSxBVFRSOmZ1bmN0aW9uKGEsYil7dmFyIGM9YlsxXSxkPW0uYXR0cj9tLmF0dHIoYSxjKTpvLmF0dHJIYW5kbGVbY10/by5hdHRySGFuZGxlW2NdKGEpOmFbY10hPW51bGw/YVtjXTphLmdldEF0dHJpYnV0ZShjKSxlPWQrIiIsZj1iWzJdLGc9Yls0XTtyZXR1cm4gZD09bnVsbD9mPT09IiE9IjohZiYmbS5hdHRyP2QhPW51bGw6Zj09PSI9Ij9lPT09ZzpmPT09Iio9Ij9lLmluZGV4T2YoZyk+PTA6Zj09PSJ+PSI/KCIgIitlKyIgIikuaW5kZXhPZihnKT49MDpnP2Y9PT0iIT0iP2UhPT1nOmY9PT0iXj0iP2UuaW5kZXhPZihnKT09PTA6Zj09PSIkPSI/ZS5zdWJzdHIoZS5sZW5ndGgtZy5sZW5ndGgpPT09ZzpmPT09Inw9Ij9lPT09Z3x8ZS5zdWJzdHIoMCxnLmxlbmd0aCsxKT09PWcrIi0iOiExOmUmJmQhPT0hMX0sUE9TOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWJbMl0sZj1vLnNldEZpbHRlcnNbZV07aWYoZilyZXR1cm4gZihhLGMsYixkKX19fSxwPW8ubWF0Y2guUE9TLHE9ZnVuY3Rpb24oYSxiKXtyZXR1cm4iXFwiKyhiLTArMSl9O2Zvcih2YXIgciBpbiBvLm1hdGNoKW8ubWF0Y2hbcl09bmV3IFJlZ0V4cChvLm1hdGNoW3JdLnNvdXJjZSsvKD8hW15cW10qXF0pKD8hW15cKF0qXCkpLy5zb3VyY2UpLG8ubGVmdE1hdGNoW3JdPW5ldyBSZWdFeHAoLyheKD86LnxccnxcbikqPykvLnNvdXJjZStvLm1hdGNoW3JdLnNvdXJjZS5yZXBsYWNlKC9cXChcZCspL2cscSkpO3ZhciBzPWZ1bmN0aW9uKGEsYil7YT1BcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhLDApO2lmKGIpe2IucHVzaC5hcHBseShiLGEpO3JldHVybiBifXJldHVybiBhfTt0cnl7QXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYy5kb2N1bWVudEVsZW1lbnQuY2hpbGROb2RlcywwKVswXS5ub2RlVHlwZX1jYXRjaCh0KXtzPWZ1bmN0aW9uKGEsYil7dmFyIGM9MCxkPWJ8fFtdO2lmKGcuY2FsbChhKT09PSJbb2JqZWN0IEFycmF5XSIpQXJyYXkucHJvdG90eXBlLnB1c2guYXBwbHkoZCxhKTtlbHNlIGlmKHR5cGVvZiBhLmxlbmd0aD09Im51bWJlciIpZm9yKHZhciBlPWEubGVuZ3RoO2M8ZTtjKyspZC5wdXNoKGFbY10pO2Vsc2UgZm9yKDthW2NdO2MrKylkLnB1c2goYVtjXSk7cmV0dXJuIGR9fXZhciB1LHY7Yy5kb2N1bWVudEVsZW1lbnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24/dT1mdW5jdGlvbihhLGIpe2lmKGE9PT1iKXtoPSEwO3JldHVybiAwfWlmKCFhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9ufHwhYi5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbilyZXR1cm4gYS5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbj8tMToxO3JldHVybiBhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIpJjQ/LTE6MX06KHU9ZnVuY3Rpb24oYSxiKXtpZihhPT09Yil7aD0hMDtyZXR1cm4gMH1pZihhLnNvdXJjZUluZGV4JiZiLnNvdXJjZUluZGV4KXJldHVybiBhLnNvdXJjZUluZGV4LWIuc291cmNlSW5kZXg7dmFyIGMsZCxlPVtdLGY9W10sZz1hLnBhcmVudE5vZGUsaT1iLnBhcmVudE5vZGUsaj1nO2lmKGc9PT1pKXJldHVybiB2KGEsYik7aWYoIWcpcmV0dXJuLTE7aWYoIWkpcmV0dXJuIDE7d2hpbGUoaillLnVuc2hpZnQoaiksaj1qLnBhcmVudE5vZGU7aj1pO3doaWxlKGopZi51bnNoaWZ0KGopLGo9ai5wYXJlbnROb2RlO2M9ZS5sZW5ndGgsZD1mLmxlbmd0aDtmb3IodmFyIGs9MDtrPGMmJms8ZDtrKyspaWYoZVtrXSE9PWZba10pcmV0dXJuIHYoZVtrXSxmW2tdKTtyZXR1cm4gaz09PWM/dihhLGZba10sLTEpOnYoZVtrXSxiLDEpfSx2PWZ1bmN0aW9uKGEsYixjKXtpZihhPT09YilyZXR1cm4gYzt2YXIgZD1hLm5leHRTaWJsaW5nO3doaWxlKGQpe2lmKGQ9PT1iKXJldHVybi0xO2Q9ZC5uZXh0U2libGluZ31yZXR1cm4gMX0pLGZ1bmN0aW9uKCl7dmFyIGE9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKSxkPSJzY3JpcHQiKyhuZXcgRGF0ZSkuZ2V0VGltZSgpLGU9Yy5kb2N1bWVudEVsZW1lbnQ7YS5pbm5lckhUTUw9IjxhIG5hbWU9JyIrZCsiJy8+IixlLmluc2VydEJlZm9yZShhLGUuZmlyc3RDaGlsZCksYy5nZXRFbGVtZW50QnlJZChkKSYmKG8uZmluZC5JRD1mdW5jdGlvbihhLGMsZCl7aWYodHlwZW9mIGMuZ2V0RWxlbWVudEJ5SWQhPSJ1bmRlZmluZWQiJiYhZCl7dmFyIGU9Yy5nZXRFbGVtZW50QnlJZChhWzFdKTtyZXR1cm4gZT9lLmlkPT09YVsxXXx8dHlwZW9mIGUuZ2V0QXR0cmlidXRlTm9kZSE9InVuZGVmaW5lZCImJmUuZ2V0QXR0cmlidXRlTm9kZSgiaWQiKS5ub2RlVmFsdWU9PT1hWzFdP1tlXTpiOltdfX0sby5maWx0ZXIuSUQ9ZnVuY3Rpb24oYSxiKXt2YXIgYz10eXBlb2YgYS5nZXRBdHRyaWJ1dGVOb2RlIT0idW5kZWZpbmVkIiYmYS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpO3JldHVybiBhLm5vZGVUeXBlPT09MSYmYyYmYy5ub2RlVmFsdWU9PT1ifSksZS5yZW1vdmVDaGlsZChhKSxlPWE9bnVsbH0oKSxmdW5jdGlvbigpe3ZhciBhPWMuY3JlYXRlRWxlbWVudCgiZGl2Iik7YS5hcHBlbmRDaGlsZChjLmNyZWF0ZUNvbW1lbnQoIiIpKSxhLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikubGVuZ3RoPjAmJihvLmZpbmQuVEFHPWZ1bmN0aW9uKGEsYil7dmFyIGM9Yi5nZXRFbGVtZW50c0J5VGFnTmFtZShhWzFdKTtpZihhWzFdPT09IioiKXt2YXIgZD1bXTtmb3IodmFyIGU9MDtjW2VdO2UrKyljW2VdLm5vZGVUeXBlPT09MSYmZC5wdXNoKGNbZV0pO2M9ZH1yZXR1cm4gY30pLGEuaW5uZXJIVE1MPSI8YSBocmVmPScjJz48L2E+IixhLmZpcnN0Q2hpbGQmJnR5cGVvZiBhLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlIT0idW5kZWZpbmVkIiYmYS5maXJzdENoaWxkLmdldEF0dHJpYnV0ZSgiaHJlZiIpIT09IiMiJiYoby5hdHRySGFuZGxlLmhyZWY9ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZ2V0QXR0cmlidXRlKCJocmVmIiwyKX0pLGE9bnVsbH0oKSxjLnF1ZXJ5U2VsZWN0b3JBbGwmJmZ1bmN0aW9uKCl7dmFyIGE9bSxiPWMuY3JlYXRlRWxlbWVudCgiZGl2IiksZD0iX19zaXp6bGVfXyI7Yi5pbm5lckhUTUw9IjxwIGNsYXNzPSdURVNUJz48L3A+IjtpZighYi5xdWVyeVNlbGVjdG9yQWxsfHxiLnF1ZXJ5U2VsZWN0b3JBbGwoIi5URVNUIikubGVuZ3RoIT09MCl7bT1mdW5jdGlvbihiLGUsZixnKXtlPWV8fGM7aWYoIWcmJiFtLmlzWE1MKGUpKXt2YXIgaD0vXihcdyskKXxeXC4oW1x3XC1dKyQpfF4jKFtcd1wtXSskKS8uZXhlYyhiKTtpZihoJiYoZS5ub2RlVHlwZT09PTF8fGUubm9kZVR5cGU9PT05KSl7aWYoaFsxXSlyZXR1cm4gcyhlLmdldEVsZW1lbnRzQnlUYWdOYW1lKGIpLGYpO2lmKGhbMl0mJm8uZmluZC5DTEFTUyYmZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKXJldHVybiBzKGUuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShoWzJdKSxmKX1pZihlLm5vZGVUeXBlPT09OSl7aWYoYj09PSJib2R5IiYmZS5ib2R5KXJldHVybiBzKFtlLmJvZHldLGYpO2lmKGgmJmhbM10pe3ZhciBpPWUuZ2V0RWxlbWVudEJ5SWQoaFszXSk7aWYoIWl8fCFpLnBhcmVudE5vZGUpcmV0dXJuIHMoW10sZik7aWYoaS5pZD09PWhbM10pcmV0dXJuIHMoW2ldLGYpfXRyeXtyZXR1cm4gcyhlLnF1ZXJ5U2VsZWN0b3JBbGwoYiksZil9Y2F0Y2goail7fX1lbHNlIGlmKGUubm9kZVR5cGU9PT0xJiZlLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCkhPT0ib2JqZWN0Iil7dmFyIGs9ZSxsPWUuZ2V0QXR0cmlidXRlKCJpZCIpLG49bHx8ZCxwPWUucGFyZW50Tm9kZSxxPS9eXHMqWyt+XS8udGVzdChiKTtsP249bi5yZXBsYWNlKC8nL2csIlxcJCYiKTplLnNldEF0dHJpYnV0ZSgiaWQiLG4pLHEmJnAmJihlPWUucGFyZW50Tm9kZSk7dHJ5e2lmKCFxfHxwKXJldHVybiBzKGUucXVlcnlTZWxlY3RvckFsbCgiW2lkPSciK24rIiddICIrYiksZil9Y2F0Y2gocil7fWZpbmFsbHl7bHx8ay5yZW1vdmVBdHRyaWJ1dGUoImlkIil9fX1yZXR1cm4gYShiLGUsZixnKX07Zm9yKHZhciBlIGluIGEpbVtlXT1hW2VdO2I9bnVsbH19KCksZnVuY3Rpb24oKXt2YXIgYT1jLmRvY3VtZW50RWxlbWVudCxiPWEubWF0Y2hlc1NlbGVjdG9yfHxhLm1vek1hdGNoZXNTZWxlY3Rvcnx8YS53ZWJraXRNYXRjaGVzU2VsZWN0b3J8fGEubXNNYXRjaGVzU2VsZWN0b3I7aWYoYil7dmFyIGQ9IWIuY2FsbChjLmNyZWF0ZUVsZW1lbnQoImRpdiIpLCJkaXYiKSxlPSExO3RyeXtiLmNhbGwoYy5kb2N1bWVudEVsZW1lbnQsIlt0ZXN0IT0nJ106c2l6emxlIil9Y2F0Y2goZil7ZT0hMH1tLm1hdGNoZXNTZWxlY3Rvcj1mdW5jdGlvbihhLGMpe2M9Yy5yZXBsYWNlKC9cPVxzKihbXiciXF1dKilccypcXS9nLCI9JyQxJ10iKTtpZighbS5pc1hNTChhKSl0cnl7aWYoZXx8IW8ubWF0Y2guUFNFVURPLnRlc3QoYykmJiEvIT0vLnRlc3QoYykpe3ZhciBmPWIuY2FsbChhLGMpO2lmKGZ8fCFkfHxhLmRvY3VtZW50JiZhLmRvY3VtZW50Lm5vZGVUeXBlIT09MTEpcmV0dXJuIGZ9fWNhdGNoKGcpe31yZXR1cm4gbShjLG51bGwsbnVsbCxbYV0pLmxlbmd0aD4wfX19KCksZnVuY3Rpb24oKXt2YXIgYT1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2EuaW5uZXJIVE1MPSI8ZGl2IGNsYXNzPSd0ZXN0IGUnPjwvZGl2PjxkaXYgY2xhc3M9J3Rlc3QnPjwvZGl2PiI7aWYoISFhLmdldEVsZW1lbnRzQnlDbGFzc05hbWUmJmEuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSgiZSIpLmxlbmd0aCE9PTApe2EubGFzdENoaWxkLmNsYXNzTmFtZT0iZSI7aWYoYS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJlIikubGVuZ3RoPT09MSlyZXR1cm47by5vcmRlci5zcGxpY2UoMSwwLCJDTEFTUyIpLG8uZmluZC5DTEFTUz1mdW5jdGlvbihhLGIsYyl7aWYodHlwZW9mIGIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSE9InVuZGVmaW5lZCImJiFjKXJldHVybiBiLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoYVsxXSl9LGE9bnVsbH19KCksYy5kb2N1bWVudEVsZW1lbnQuY29udGFpbnM/bS5jb250YWlucz1mdW5jdGlvbihhLGIpe3JldHVybiBhIT09YiYmKGEuY29udGFpbnM/YS5jb250YWlucyhiKTohMCl9OmMuZG9jdW1lbnRFbGVtZW50LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uP20uY29udGFpbnM9ZnVuY3Rpb24oYSxiKXtyZXR1cm4hIShhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGIpJjE2KX06bS5jb250YWlucz1mdW5jdGlvbigpe3JldHVybiExfSxtLmlzWE1MPWZ1bmN0aW9uKGEpe3ZhciBiPShhP2Eub3duZXJEb2N1bWVudHx8YTowKS5kb2N1bWVudEVsZW1lbnQ7cmV0dXJuIGI/Yi5ub2RlTmFtZSE9PSJIVE1MIjohMX07dmFyIHk9ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGU9W10sZj0iIixnPWIubm9kZVR5cGU/W2JdOmI7d2hpbGUoZD1vLm1hdGNoLlBTRVVETy5leGVjKGEpKWYrPWRbMF0sYT1hLnJlcGxhY2Uoby5tYXRjaC5QU0VVRE8sIiIpO2E9by5yZWxhdGl2ZVthXT9hKyIqIjphO2Zvcih2YXIgaD0wLGk9Zy5sZW5ndGg7aDxpO2grKyltKGEsZ1toXSxlLGMpO3JldHVybiBtLmZpbHRlcihmLGUpfTttLmF0dHI9Zi5hdHRyLG0uc2VsZWN0b3JzLmF0dHJNYXA9e30sZi5maW5kPW0sZi5leHByPW0uc2VsZWN0b3JzLGYuZXhwclsiOiJdPWYuZXhwci5maWx0ZXJzLGYudW5pcXVlPW0udW5pcXVlU29ydCxmLnRleHQ9bS5nZXRUZXh0LGYuaXNYTUxEb2M9bS5pc1hNTCxmLmNvbnRhaW5zPW0uY29udGFpbnN9KCk7dmFyIEw9L1VudGlsJC8sTT0vXig/OnBhcmVudHN8cHJldlVudGlsfHByZXZBbGwpLyxOPS8sLyxPPS9eLlteOiNcW1wuLF0qJC8sUD1BcnJheS5wcm90b3R5cGUuc2xpY2UsUT1mLmV4cHIubWF0Y2guUE9TLFI9e2NoaWxkcmVuOiEwLGNvbnRlbnRzOiEwLG5leHQ6ITAscHJldjohMH07Zi5mbi5leHRlbmQoe2ZpbmQ6ZnVuY3Rpb24oYSl7dmFyIGI9dGhpcyxjLGQ7aWYodHlwZW9mIGEhPSJzdHJpbmciKXJldHVybiBmKGEpLmZpbHRlcihmdW5jdGlvbigpe2ZvcihjPTAsZD1iLmxlbmd0aDtjPGQ7YysrKWlmKGYuY29udGFpbnMoYltjXSx0aGlzKSlyZXR1cm4hMH0pO3ZhciBlPXRoaXMucHVzaFN0YWNrKCIiLCJmaW5kIixhKSxnLGgsaTtmb3IoYz0wLGQ9dGhpcy5sZW5ndGg7YzxkO2MrKyl7Zz1lLmxlbmd0aCxmLmZpbmQoYSx0aGlzW2NdLGUpO2lmKGM+MClmb3IoaD1nO2g8ZS5sZW5ndGg7aCsrKWZvcihpPTA7aTxnO2krKylpZihlW2ldPT09ZVtoXSl7ZS5zcGxpY2UoaC0tLDEpO2JyZWFrfX1yZXR1cm4gZX0saGFzOmZ1bmN0aW9uKGEpe3ZhciBiPWYoYSk7cmV0dXJuIHRoaXMuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKHZhciBhPTAsYz1iLmxlbmd0aDthPGM7YSsrKWlmKGYuY29udGFpbnModGhpcyxiW2FdKSlyZXR1cm4hMH0pfSxub3Q6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFQodGhpcyxhLCExKSwibm90IixhKX0sZmlsdGVyOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnB1c2hTdGFjayhUKHRoaXMsYSwhMCksImZpbHRlciIsYSl9LGlzOmZ1bmN0aW9uKGEpe3JldHVybiEhYSYmKHR5cGVvZiBhPT0ic3RyaW5nIj9RLnRlc3QoYSk/ZihhLHRoaXMuY29udGV4dCkuaW5kZXgodGhpc1swXSk+PTA6Zi5maWx0ZXIoYSx0aGlzKS5sZW5ndGg+MDp0aGlzLmZpbHRlcihhKS5sZW5ndGg+MCl9LGNsb3Nlc3Q6ZnVuY3Rpb24oYSxiKXt2YXIgYz1bXSxkLGUsZz10aGlzWzBdO2lmKGYuaXNBcnJheShhKSl7dmFyIGg9MTt3aGlsZShnJiZnLm93bmVyRG9jdW1lbnQmJmchPT1iKXtmb3IoZD0wO2Q8YS5sZW5ndGg7ZCsrKWYoZykuaXMoYVtkXSkmJmMucHVzaCh7c2VsZWN0b3I6YVtkXSxlbGVtOmcsbGV2ZWw6aH0pO2c9Zy5wYXJlbnROb2RlLGgrK31yZXR1cm4gY312YXIgaT1RLnRlc3QoYSl8fHR5cGVvZiBhIT0ic3RyaW5nIj9mKGEsYnx8dGhpcy5jb250ZXh0KTowO2ZvcihkPTAsZT10aGlzLmxlbmd0aDtkPGU7ZCsrKXtnPXRoaXNbZF07d2hpbGUoZyl7aWYoaT9pLmluZGV4KGcpPi0xOmYuZmluZC5tYXRjaGVzU2VsZWN0b3IoZyxhKSl7Yy5wdXNoKGcpO2JyZWFrfWc9Zy5wYXJlbnROb2RlO2lmKCFnfHwhZy5vd25lckRvY3VtZW50fHxnPT09Ynx8Zy5ub2RlVHlwZT09PTExKWJyZWFrfX1jPWMubGVuZ3RoPjE/Zi51bmlxdWUoYyk6YztyZXR1cm4gdGhpcy5wdXNoU3RhY2soYywiY2xvc2VzdCIsYSl9LGluZGV4OmZ1bmN0aW9uKGEpe2lmKCFhKXJldHVybiB0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGU/dGhpcy5wcmV2QWxsKCkubGVuZ3RoOi0xO2lmKHR5cGVvZiBhPT0ic3RyaW5nIilyZXR1cm4gZi5pbkFycmF5KHRoaXNbMF0sZihhKSk7cmV0dXJuIGYuaW5BcnJheShhLmpxdWVyeT9hWzBdOmEsdGhpcyl9LGFkZDpmdW5jdGlvbihhLGIpe3ZhciBjPXR5cGVvZiBhPT0ic3RyaW5nIj9mKGEsYik6Zi5tYWtlQXJyYXkoYSYmYS5ub2RlVHlwZT9bYV06YSksZD1mLm1lcmdlKHRoaXMuZ2V0KCksYyk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFMoY1swXSl8fFMoZFswXSk/ZDpmLnVuaXF1ZShkKSl9LGFuZFNlbGY6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5hZGQodGhpcy5wcmV2T2JqZWN0KX19KSxmLmVhY2goe3BhcmVudDpmdW5jdGlvbihhKXt2YXIgYj1hLnBhcmVudE5vZGU7cmV0dXJuIGImJmIubm9kZVR5cGUhPT0xMT9iOm51bGx9LHBhcmVudHM6ZnVuY3Rpb24oYSl7cmV0dXJuIGYuZGlyKGEsInBhcmVudE5vZGUiKX0scGFyZW50c1VudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZi5kaXIoYSwicGFyZW50Tm9kZSIsYyl9LG5leHQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGYubnRoKGEsMiwibmV4dFNpYmxpbmciKX0scHJldjpmdW5jdGlvbihhKXtyZXR1cm4gZi5udGgoYSwyLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dEFsbDpmdW5jdGlvbihhKXtyZXR1cm4gZi5kaXIoYSwibmV4dFNpYmxpbmciKX0scHJldkFsbDpmdW5jdGlvbihhKXtyZXR1cm4gZi5kaXIoYSwicHJldmlvdXNTaWJsaW5nIil9LG5leHRVbnRpbDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGYuZGlyKGEsIm5leHRTaWJsaW5nIixjKX0scHJldlVudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZi5kaXIoYSwicHJldmlvdXNTaWJsaW5nIixjKX0sc2libGluZ3M6ZnVuY3Rpb24oYSl7cmV0dXJuIGYuc2libGluZyhhLnBhcmVudE5vZGUuZmlyc3RDaGlsZCxhKX0sY2hpbGRyZW46ZnVuY3Rpb24oYSl7cmV0dXJuIGYuc2libGluZyhhLmZpcnN0Q2hpbGQpfSxjb250ZW50czpmdW5jdGlvbihhKXtyZXR1cm4gZi5ub2RlTmFtZShhLCJpZnJhbWUiKT9hLmNvbnRlbnREb2N1bWVudHx8YS5jb250ZW50V2luZG93LmRvY3VtZW50OmYubWFrZUFycmF5KGEuY2hpbGROb2Rlcyl9fSxmdW5jdGlvbihhLGIpe2YuZm5bYV09ZnVuY3Rpb24oYyxkKXt2YXIgZT1mLm1hcCh0aGlzLGIsYyk7TC50ZXN0KGEpfHwoZD1jKSxkJiZ0eXBlb2YgZD09InN0cmluZyImJihlPWYuZmlsdGVyKGQsZSkpLGU9dGhpcy5sZW5ndGg+MSYmIVJbYV0/Zi51bmlxdWUoZSk6ZSwodGhpcy5sZW5ndGg+MXx8Ti50ZXN0KGQpKSYmTS50ZXN0KGEpJiYoZT1lLnJldmVyc2UoKSk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGUsYSxQLmNhbGwoYXJndW1lbnRzKS5qb2luKCIsIikpfX0pLGYuZXh0ZW5kKHtmaWx0ZXI6ZnVuY3Rpb24oYSxiLGMpe2MmJihhPSI6bm90KCIrYSsiKSIpO3JldHVybiBiLmxlbmd0aD09PTE/Zi5maW5kLm1hdGNoZXNTZWxlY3RvcihiWzBdLGEpP1tiWzBdXTpbXTpmLmZpbmQubWF0Y2hlcyhhLGIpfSxkaXI6ZnVuY3Rpb24oYSxjLGQpe3ZhciBlPVtdLGc9YVtjXTt3aGlsZShnJiZnLm5vZGVUeXBlIT09OSYmKGQ9PT1ifHxnLm5vZGVUeXBlIT09MXx8IWYoZykuaXMoZCkpKWcubm9kZVR5cGU9PT0xJiZlLnB1c2goZyksZz1nW2NdO3JldHVybiBlfSxudGg6ZnVuY3Rpb24oYSxiLGMsZCl7Yj1ifHwxO3ZhciBlPTA7Zm9yKDthO2E9YVtjXSlpZihhLm5vZGVUeXBlPT09MSYmKytlPT09YilicmVhaztyZXR1cm4gYX0sc2libGluZzpmdW5jdGlvbihhLGIpe3ZhciBjPVtdO2Zvcig7YTthPWEubmV4dFNpYmxpbmcpYS5ub2RlVHlwZT09PTEmJmEhPT1iJiZjLnB1c2goYSk7cmV0dXJuIGN9fSk7dmFyIFY9ImFiYnJ8YXJ0aWNsZXxhc2lkZXxhdWRpb3xjYW52YXN8ZGF0YWxpc3R8ZGV0YWlsc3xmaWdjYXB0aW9ufGZpZ3VyZXxmb290ZXJ8aGVhZGVyfGhncm91cHxtYXJrfG1ldGVyfG5hdnxvdXRwdXR8cHJvZ3Jlc3N8c2VjdGlvbnxzdW1tYXJ5fHRpbWV8dmlkZW8iLFc9LyBqUXVlcnlcZCs9Iig/OlxkK3xudWxsKSIvZyxYPS9eXHMrLyxZPS88KD8hYXJlYXxicnxjb2x8ZW1iZWR8aHJ8aW1nfGlucHV0fGxpbmt8bWV0YXxwYXJhbSkoKFtcdzpdKylbXj5dKilcLz4vaWcsWj0vPChbXHc6XSspLywkPS88dGJvZHkvaSxfPS88fCYjP1x3KzsvLGJhPS88KD86c2NyaXB0fHN0eWxlKS9pLGJiPS88KD86c2NyaXB0fG9iamVjdHxlbWJlZHxvcHRpb258c3R5bGUpL2ksYmM9bmV3IFJlZ0V4cCgiPCg/OiIrVisiKSIsImkiKSxiZD0vY2hlY2tlZFxzKig/OltePV18PVxzKi5jaGVja2VkLikvaSxiZT0vXC8oamF2YXxlY21hKXNjcmlwdC9pLGJmPS9eXHMqPCEoPzpcW0NEQVRBXFt8XC1cLSkvLGJnPXtvcHRpb246WzEsIjxzZWxlY3QgbXVsdGlwbGU9J211bHRpcGxlJz4iLCI8L3NlbGVjdD4iXSxsZWdlbmQ6WzEsIjxmaWVsZHNldD4iLCI8L2ZpZWxkc2V0PiJdLHRoZWFkOlsxLCI8dGFibGU+IiwiPC90YWJsZT4iXSx0cjpbMiwiPHRhYmxlPjx0Ym9keT4iLCI8L3Rib2R5PjwvdGFibGU+Il0sdGQ6WzMsIjx0YWJsZT48dGJvZHk+PHRyPiIsIjwvdHI+PC90Ym9keT48L3RhYmxlPiJdLGNvbDpbMiwiPHRhYmxlPjx0Ym9keT48L3Rib2R5Pjxjb2xncm91cD4iLCI8L2NvbGdyb3VwPjwvdGFibGU+Il0sYXJlYTpbMSwiPG1hcD4iLCI8L21hcD4iXSxfZGVmYXVsdDpbMCwiIiwiIl19LGJoPVUoYyk7Ymcub3B0Z3JvdXA9Ymcub3B0aW9uLGJnLnRib2R5PWJnLnRmb290PWJnLmNvbGdyb3VwPWJnLmNhcHRpb249YmcudGhlYWQsYmcudGg9YmcudGQsZi5zdXBwb3J0Lmh0bWxTZXJpYWxpemV8fChiZy5fZGVmYXVsdD1bMSwiZGl2PGRpdj4iLCI8L2Rpdj4iXSksZi5mbi5leHRlbmQoe3RleHQ6ZnVuY3Rpb24oYSl7aWYoZi5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7dmFyIGM9Zih0aGlzKTtjLnRleHQoYS5jYWxsKHRoaXMsYixjLnRleHQoKSkpfSk7aWYodHlwZW9mIGEhPSJvYmplY3QiJiZhIT09YilyZXR1cm4gdGhpcy5lbXB0eSgpLmFwcGVuZCgodGhpc1swXSYmdGhpc1swXS5vd25lckRvY3VtZW50fHxjKS5jcmVhdGVUZXh0Tm9kZShhKSk7cmV0dXJuIGYudGV4dCh0aGlzKX0sd3JhcEFsbDpmdW5jdGlvbihhKXtpZihmLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtmKHRoaXMpLndyYXBBbGwoYS5jYWxsKHRoaXMsYikpfSk7aWYodGhpc1swXSl7dmFyIGI9ZihhLHRoaXNbMF0ub3duZXJEb2N1bWVudCkuZXEoMCkuY2xvbmUoITApO3RoaXNbMF0ucGFyZW50Tm9kZSYmYi5pbnNlcnRCZWZvcmUodGhpc1swXSksYi5tYXAoZnVuY3Rpb24oKXt2YXIgYT10aGlzO3doaWxlKGEuZmlyc3RDaGlsZCYmYS5maXJzdENoaWxkLm5vZGVUeXBlPT09MSlhPWEuZmlyc3RDaGlsZDtyZXR1cm4gYX0pLmFwcGVuZCh0aGlzKX1yZXR1cm4gdGhpc30sd3JhcElubmVyOmZ1bmN0aW9uKGEpe2lmKGYuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2YodGhpcykud3JhcElubmVyKGEuY2FsbCh0aGlzLGIpKX0pO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1mKHRoaXMpLGM9Yi5jb250ZW50cygpO2MubGVuZ3RoP2Mud3JhcEFsbChhKTpiLmFwcGVuZChhKX0pfSx3cmFwOmZ1bmN0aW9uKGEpe3ZhciBiPWYuaXNGdW5jdGlvbihhKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGMpe2YodGhpcykud3JhcEFsbChiP2EuY2FsbCh0aGlzLGMpOmEpfSl9LHVud3JhcDpmdW5jdGlvbigpe3JldHVybiB0aGlzLnBhcmVudCgpLmVhY2goZnVuY3Rpb24oKXtmLm5vZGVOYW1lKHRoaXMsImJvZHkiKXx8Zih0aGlzKS5yZXBsYWNlV2l0aCh0aGlzLmNoaWxkTm9kZXMpfSkuZW5kKCl9LGFwcGVuZDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cywhMCxmdW5jdGlvbihhKXt0aGlzLm5vZGVUeXBlPT09MSYmdGhpcy5hcHBlbmRDaGlsZChhKX0pfSxwcmVwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCEwLGZ1bmN0aW9uKGEpe3RoaXMubm9kZVR5cGU9PT0xJiZ0aGlzLmluc2VydEJlZm9yZShhLHRoaXMuZmlyc3RDaGlsZCl9KX0sYmVmb3JlOmZ1bmN0aW9uKCl7aWYodGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlKXJldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cywhMSxmdW5jdGlvbihhKXt0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcyl9KTtpZihhcmd1bWVudHMubGVuZ3RoKXt2YXIgYT1mLmNsZWFuKGFyZ3VtZW50cyk7YS5wdXNoLmFwcGx5KGEsdGhpcy50b0FycmF5KCkpO3JldHVybiB0aGlzLnB1c2hTdGFjayhhLCJiZWZvcmUiLGFyZ3VtZW50cyl9fSxhZnRlcjpmdW5jdGlvbigpe2lmKHRoaXNbMF0mJnRoaXNbMF0ucGFyZW50Tm9kZSlyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsITEsZnVuY3Rpb24oYSl7dGhpcy5wYXJlbnROb2RlLmluc2VydEJlZm9yZShhLHRoaXMubmV4dFNpYmxpbmcpfSk7aWYoYXJndW1lbnRzLmxlbmd0aCl7dmFyIGE9dGhpcy5wdXNoU3RhY2sodGhpcywiYWZ0ZXIiLGFyZ3VtZW50cyk7YS5wdXNoLmFwcGx5KGEsZi5jbGVhbihhcmd1bWVudHMpKTtyZXR1cm4gYX19LHJlbW92ZTpmdW5jdGlvbihhLGIpe2Zvcih2YXIgYz0wLGQ7KGQ9dGhpc1tjXSkhPW51bGw7YysrKWlmKCFhfHxmLmZpbHRlcihhLFtkXSkubGVuZ3RoKSFiJiZkLm5vZGVUeXBlPT09MSYmKGYuY2xlYW5EYXRhKGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSksZi5jbGVhbkRhdGEoW2RdKSksZC5wYXJlbnROb2RlJiZkLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoZCk7cmV0dXJuIHRoaXN9LGVtcHR5OmZ1bmN0aW9uKCkKK3tmb3IodmFyIGE9MCxiOyhiPXRoaXNbYV0pIT1udWxsO2ErKyl7Yi5ub2RlVHlwZT09PTEmJmYuY2xlYW5EYXRhKGIuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSk7d2hpbGUoYi5maXJzdENoaWxkKWIucmVtb3ZlQ2hpbGQoYi5maXJzdENoaWxkKX1yZXR1cm4gdGhpc30sY2xvbmU6ZnVuY3Rpb24oYSxiKXthPWE9PW51bGw/ITE6YSxiPWI9PW51bGw/YTpiO3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3JldHVybiBmLmNsb25lKHRoaXMsYSxiKX0pfSxodG1sOmZ1bmN0aW9uKGEpe2lmKGE9PT1iKXJldHVybiB0aGlzWzBdJiZ0aGlzWzBdLm5vZGVUeXBlPT09MT90aGlzWzBdLmlubmVySFRNTC5yZXBsYWNlKFcsIiIpOm51bGw7aWYodHlwZW9mIGE9PSJzdHJpbmciJiYhYmEudGVzdChhKSYmKGYuc3VwcG9ydC5sZWFkaW5nV2hpdGVzcGFjZXx8IVgudGVzdChhKSkmJiFiZ1soWi5leGVjKGEpfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpXSl7YT1hLnJlcGxhY2UoWSwiPCQxPjwvJDI+Iik7dHJ5e2Zvcih2YXIgYz0wLGQ9dGhpcy5sZW5ndGg7YzxkO2MrKyl0aGlzW2NdLm5vZGVUeXBlPT09MSYmKGYuY2xlYW5EYXRhKHRoaXNbY10uZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKSksdGhpc1tjXS5pbm5lckhUTUw9YSl9Y2F0Y2goZSl7dGhpcy5lbXB0eSgpLmFwcGVuZChhKX19ZWxzZSBmLmlzRnVuY3Rpb24oYSk/dGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3ZhciBjPWYodGhpcyk7Yy5odG1sKGEuY2FsbCh0aGlzLGIsYy5odG1sKCkpKX0pOnRoaXMuZW1wdHkoKS5hcHBlbmQoYSk7cmV0dXJuIHRoaXN9LHJlcGxhY2VXaXRoOmZ1bmN0aW9uKGEpe2lmKHRoaXNbMF0mJnRoaXNbMF0ucGFyZW50Tm9kZSl7aWYoZi5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7dmFyIGM9Zih0aGlzKSxkPWMuaHRtbCgpO2MucmVwbGFjZVdpdGgoYS5jYWxsKHRoaXMsYixkKSl9KTt0eXBlb2YgYSE9InN0cmluZyImJihhPWYoYSkuZGV0YWNoKCkpO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj10aGlzLm5leHRTaWJsaW5nLGM9dGhpcy5wYXJlbnROb2RlO2YodGhpcykucmVtb3ZlKCksYj9mKGIpLmJlZm9yZShhKTpmKGMpLmFwcGVuZChhKX0pfXJldHVybiB0aGlzLmxlbmd0aD90aGlzLnB1c2hTdGFjayhmKGYuaXNGdW5jdGlvbihhKT9hKCk6YSksInJlcGxhY2VXaXRoIixhKTp0aGlzfSxkZXRhY2g6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucmVtb3ZlKGEsITApfSxkb21NYW5pcDpmdW5jdGlvbihhLGMsZCl7dmFyIGUsZyxoLGksaj1hWzBdLGs9W107aWYoIWYuc3VwcG9ydC5jaGVja0Nsb25lJiZhcmd1bWVudHMubGVuZ3RoPT09MyYmdHlwZW9mIGo9PSJzdHJpbmciJiZiZC50ZXN0KGopKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmKHRoaXMpLmRvbU1hbmlwKGEsYyxkLCEwKX0pO2lmKGYuaXNGdW5jdGlvbihqKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGUpe3ZhciBnPWYodGhpcyk7YVswXT1qLmNhbGwodGhpcyxlLGM/Zy5odG1sKCk6YiksZy5kb21NYW5pcChhLGMsZCl9KTtpZih0aGlzWzBdKXtpPWomJmoucGFyZW50Tm9kZSxmLnN1cHBvcnQucGFyZW50Tm9kZSYmaSYmaS5ub2RlVHlwZT09PTExJiZpLmNoaWxkTm9kZXMubGVuZ3RoPT09dGhpcy5sZW5ndGg/ZT17ZnJhZ21lbnQ6aX06ZT1mLmJ1aWxkRnJhZ21lbnQoYSx0aGlzLGspLGg9ZS5mcmFnbWVudCxoLmNoaWxkTm9kZXMubGVuZ3RoPT09MT9nPWg9aC5maXJzdENoaWxkOmc9aC5maXJzdENoaWxkO2lmKGcpe2M9YyYmZi5ub2RlTmFtZShnLCJ0ciIpO2Zvcih2YXIgbD0wLG09dGhpcy5sZW5ndGgsbj1tLTE7bDxtO2wrKylkLmNhbGwoYz9iaSh0aGlzW2xdLGcpOnRoaXNbbF0sZS5jYWNoZWFibGV8fG0+MSYmbDxuP2YuY2xvbmUoaCwhMCwhMCk6aCl9ay5sZW5ndGgmJmYuZWFjaChrLGJwKX1yZXR1cm4gdGhpc319KSxmLmJ1aWxkRnJhZ21lbnQ9ZnVuY3Rpb24oYSxiLGQpe3ZhciBlLGcsaCxpLGo9YVswXTtiJiZiWzBdJiYoaT1iWzBdLm93bmVyRG9jdW1lbnR8fGJbMF0pLGkuY3JlYXRlRG9jdW1lbnRGcmFnbWVudHx8KGk9YyksYS5sZW5ndGg9PT0xJiZ0eXBlb2Ygaj09InN0cmluZyImJmoubGVuZ3RoPDUxMiYmaT09PWMmJmouY2hhckF0KDApPT09IjwiJiYhYmIudGVzdChqKSYmKGYuc3VwcG9ydC5jaGVja0Nsb25lfHwhYmQudGVzdChqKSkmJihmLnN1cHBvcnQuaHRtbDVDbG9uZXx8IWJjLnRlc3QoaikpJiYoZz0hMCxoPWYuZnJhZ21lbnRzW2pdLGgmJmghPT0xJiYoZT1oKSksZXx8KGU9aS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksZi5jbGVhbihhLGksZSxkKSksZyYmKGYuZnJhZ21lbnRzW2pdPWg/ZToxKTtyZXR1cm57ZnJhZ21lbnQ6ZSxjYWNoZWFibGU6Z319LGYuZnJhZ21lbnRzPXt9LGYuZWFjaCh7YXBwZW5kVG86ImFwcGVuZCIscHJlcGVuZFRvOiJwcmVwZW5kIixpbnNlcnRCZWZvcmU6ImJlZm9yZSIsaW5zZXJ0QWZ0ZXI6ImFmdGVyIixyZXBsYWNlQWxsOiJyZXBsYWNlV2l0aCJ9LGZ1bmN0aW9uKGEsYil7Zi5mblthXT1mdW5jdGlvbihjKXt2YXIgZD1bXSxlPWYoYyksZz10aGlzLmxlbmd0aD09PTEmJnRoaXNbMF0ucGFyZW50Tm9kZTtpZihnJiZnLm5vZGVUeXBlPT09MTEmJmcuY2hpbGROb2Rlcy5sZW5ndGg9PT0xJiZlLmxlbmd0aD09PTEpe2VbYl0odGhpc1swXSk7cmV0dXJuIHRoaXN9Zm9yKHZhciBoPTAsaT1lLmxlbmd0aDtoPGk7aCsrKXt2YXIgaj0oaD4wP3RoaXMuY2xvbmUoITApOnRoaXMpLmdldCgpO2YoZVtoXSlbYl0oaiksZD1kLmNvbmNhdChqKX1yZXR1cm4gdGhpcy5wdXNoU3RhY2soZCxhLGUuc2VsZWN0b3IpfX0pLGYuZXh0ZW5kKHtjbG9uZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxnLGg9Zi5zdXBwb3J0Lmh0bWw1Q2xvbmV8fCFiYy50ZXN0KCI8IithLm5vZGVOYW1lKT9hLmNsb25lTm9kZSghMCk6Ym8oYSk7aWYoKCFmLnN1cHBvcnQubm9DbG9uZUV2ZW50fHwhZi5zdXBwb3J0Lm5vQ2xvbmVDaGVja2VkKSYmKGEubm9kZVR5cGU9PT0xfHxhLm5vZGVUeXBlPT09MTEpJiYhZi5pc1hNTERvYyhhKSl7YmsoYSxoKSxkPWJsKGEpLGU9YmwoaCk7Zm9yKGc9MDtkW2ddOysrZyllW2ddJiZiayhkW2ddLGVbZ10pfWlmKGIpe2JqKGEsaCk7aWYoYyl7ZD1ibChhKSxlPWJsKGgpO2ZvcihnPTA7ZFtnXTsrK2cpYmooZFtnXSxlW2ddKX19ZD1lPW51bGw7cmV0dXJuIGh9LGNsZWFuOmZ1bmN0aW9uKGEsYixkLGUpe3ZhciBnO2I9Ynx8Yyx0eXBlb2YgYi5jcmVhdGVFbGVtZW50PT0idW5kZWZpbmVkIiYmKGI9Yi5vd25lckRvY3VtZW50fHxiWzBdJiZiWzBdLm93bmVyRG9jdW1lbnR8fGMpO3ZhciBoPVtdLGk7Zm9yKHZhciBqPTAsazsoaz1hW2pdKSE9bnVsbDtqKyspe3R5cGVvZiBrPT0ibnVtYmVyIiYmKGsrPSIiKTtpZighayljb250aW51ZTtpZih0eXBlb2Ygaz09InN0cmluZyIpaWYoIV8udGVzdChrKSlrPWIuY3JlYXRlVGV4dE5vZGUoayk7ZWxzZXtrPWsucmVwbGFjZShZLCI8JDE+PC8kMj4iKTt2YXIgbD0oWi5leGVjKGspfHxbIiIsIiJdKVsxXS50b0xvd2VyQ2FzZSgpLG09YmdbbF18fGJnLl9kZWZhdWx0LG49bVswXSxvPWIuY3JlYXRlRWxlbWVudCgiZGl2Iik7Yj09PWM/YmguYXBwZW5kQ2hpbGQobyk6VShiKS5hcHBlbmRDaGlsZChvKSxvLmlubmVySFRNTD1tWzFdK2srbVsyXTt3aGlsZShuLS0pbz1vLmxhc3RDaGlsZDtpZighZi5zdXBwb3J0LnRib2R5KXt2YXIgcD0kLnRlc3QoaykscT1sPT09InRhYmxlIiYmIXA/by5maXJzdENoaWxkJiZvLmZpcnN0Q2hpbGQuY2hpbGROb2RlczptWzFdPT09Ijx0YWJsZT4iJiYhcD9vLmNoaWxkTm9kZXM6W107Zm9yKGk9cS5sZW5ndGgtMTtpPj0wOy0taSlmLm5vZGVOYW1lKHFbaV0sInRib2R5IikmJiFxW2ldLmNoaWxkTm9kZXMubGVuZ3RoJiZxW2ldLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQocVtpXSl9IWYuc3VwcG9ydC5sZWFkaW5nV2hpdGVzcGFjZSYmWC50ZXN0KGspJiZvLmluc2VydEJlZm9yZShiLmNyZWF0ZVRleHROb2RlKFguZXhlYyhrKVswXSksby5maXJzdENoaWxkKSxrPW8uY2hpbGROb2Rlc312YXIgcjtpZighZi5zdXBwb3J0LmFwcGVuZENoZWNrZWQpaWYoa1swXSYmdHlwZW9mIChyPWsubGVuZ3RoKT09Im51bWJlciIpZm9yKGk9MDtpPHI7aSsrKWJuKGtbaV0pO2Vsc2UgYm4oayk7ay5ub2RlVHlwZT9oLnB1c2goayk6aD1mLm1lcmdlKGgsayl9aWYoZCl7Zz1mdW5jdGlvbihhKXtyZXR1cm4hYS50eXBlfHxiZS50ZXN0KGEudHlwZSl9O2ZvcihqPTA7aFtqXTtqKyspaWYoZSYmZi5ub2RlTmFtZShoW2pdLCJzY3JpcHQiKSYmKCFoW2pdLnR5cGV8fGhbal0udHlwZS50b0xvd2VyQ2FzZSgpPT09InRleHQvamF2YXNjcmlwdCIpKWUucHVzaChoW2pdLnBhcmVudE5vZGU/aFtqXS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGhbal0pOmhbal0pO2Vsc2V7aWYoaFtqXS5ub2RlVHlwZT09PTEpe3ZhciBzPWYuZ3JlcChoW2pdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJzY3JpcHQiKSxnKTtoLnNwbGljZS5hcHBseShoLFtqKzEsMF0uY29uY2F0KHMpKX1kLmFwcGVuZENoaWxkKGhbal0pfX1yZXR1cm4gaH0sY2xlYW5EYXRhOmZ1bmN0aW9uKGEpe3ZhciBiLGMsZD1mLmNhY2hlLGU9Zi5ldmVudC5zcGVjaWFsLGc9Zi5zdXBwb3J0LmRlbGV0ZUV4cGFuZG87Zm9yKHZhciBoPTAsaTsoaT1hW2hdKSE9bnVsbDtoKyspe2lmKGkubm9kZU5hbWUmJmYubm9EYXRhW2kubm9kZU5hbWUudG9Mb3dlckNhc2UoKV0pY29udGludWU7Yz1pW2YuZXhwYW5kb107aWYoYyl7Yj1kW2NdO2lmKGImJmIuZXZlbnRzKXtmb3IodmFyIGogaW4gYi5ldmVudHMpZVtqXT9mLmV2ZW50LnJlbW92ZShpLGopOmYucmVtb3ZlRXZlbnQoaSxqLGIuaGFuZGxlKTtiLmhhbmRsZSYmKGIuaGFuZGxlLmVsZW09bnVsbCl9Zz9kZWxldGUgaVtmLmV4cGFuZG9dOmkucmVtb3ZlQXR0cmlidXRlJiZpLnJlbW92ZUF0dHJpYnV0ZShmLmV4cGFuZG8pLGRlbGV0ZSBkW2NdfX19fSk7dmFyIGJxPS9hbHBoYVwoW14pXSpcKS9pLGJyPS9vcGFjaXR5PShbXildKikvLGJzPS8oW0EtWl18Xm1zKS9nLGJ0PS9eLT9cZCsoPzpweCk/JC9pLGJ1PS9eLT9cZC8sYnY9L14oW1wtK10pPShbXC0rLlxkZV0rKS8sYnc9e3Bvc2l0aW9uOiJhYnNvbHV0ZSIsdmlzaWJpbGl0eToiaGlkZGVuIixkaXNwbGF5OiJibG9jayJ9LGJ4PVsiTGVmdCIsIlJpZ2h0Il0sYnk9WyJUb3AiLCJCb3R0b20iXSxieixiQSxiQjtmLmZuLmNzcz1mdW5jdGlvbihhLGMpe2lmKGFyZ3VtZW50cy5sZW5ndGg9PT0yJiZjPT09YilyZXR1cm4gdGhpcztyZXR1cm4gZi5hY2Nlc3ModGhpcyxhLGMsITAsZnVuY3Rpb24oYSxjLGQpe3JldHVybiBkIT09Yj9mLnN0eWxlKGEsYyxkKTpmLmNzcyhhLGMpfSl9LGYuZXh0ZW5kKHtjc3NIb29rczp7b3BhY2l0eTp7Z2V0OmZ1bmN0aW9uKGEsYil7aWYoYil7dmFyIGM9YnooYSwib3BhY2l0eSIsIm9wYWNpdHkiKTtyZXR1cm4gYz09PSIiPyIxIjpjfXJldHVybiBhLnN0eWxlLm9wYWNpdHl9fX0sY3NzTnVtYmVyOntmaWxsT3BhY2l0eTohMCxmb250V2VpZ2h0OiEwLGxpbmVIZWlnaHQ6ITAsb3BhY2l0eTohMCxvcnBoYW5zOiEwLHdpZG93czohMCx6SW5kZXg6ITAsem9vbTohMH0sY3NzUHJvcHM6eyJmbG9hdCI6Zi5zdXBwb3J0LmNzc0Zsb2F0PyJjc3NGbG9hdCI6InN0eWxlRmxvYXQifSxzdHlsZTpmdW5jdGlvbihhLGMsZCxlKXtpZighIWEmJmEubm9kZVR5cGUhPT0zJiZhLm5vZGVUeXBlIT09OCYmISFhLnN0eWxlKXt2YXIgZyxoLGk9Zi5jYW1lbENhc2UoYyksaj1hLnN0eWxlLGs9Zi5jc3NIb29rc1tpXTtjPWYuY3NzUHJvcHNbaV18fGk7aWYoZD09PWIpe2lmKGsmJiJnZXQiaW4gayYmKGc9ay5nZXQoYSwhMSxlKSkhPT1iKXJldHVybiBnO3JldHVybiBqW2NdfWg9dHlwZW9mIGQsaD09PSJzdHJpbmciJiYoZz1idi5leGVjKGQpKSYmKGQ9KyhnWzFdKzEpKitnWzJdK3BhcnNlRmxvYXQoZi5jc3MoYSxjKSksaD0ibnVtYmVyIik7aWYoZD09bnVsbHx8aD09PSJudW1iZXIiJiZpc05hTihkKSlyZXR1cm47aD09PSJudW1iZXIiJiYhZi5jc3NOdW1iZXJbaV0mJihkKz0icHgiKTtpZigha3x8ISgic2V0ImluIGspfHwoZD1rLnNldChhLGQpKSE9PWIpdHJ5e2pbY109ZH1jYXRjaChsKXt9fX0sY3NzOmZ1bmN0aW9uKGEsYyxkKXt2YXIgZSxnO2M9Zi5jYW1lbENhc2UoYyksZz1mLmNzc0hvb2tzW2NdLGM9Zi5jc3NQcm9wc1tjXXx8YyxjPT09ImNzc0Zsb2F0IiYmKGM9ImZsb2F0Iik7aWYoZyYmImdldCJpbiBnJiYoZT1nLmdldChhLCEwLGQpKSE9PWIpcmV0dXJuIGU7aWYoYnopcmV0dXJuIGJ6KGEsYyl9LHN3YXA6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkPXt9O2Zvcih2YXIgZSBpbiBiKWRbZV09YS5zdHlsZVtlXSxhLnN0eWxlW2VdPWJbZV07Yy5jYWxsKGEpO2ZvcihlIGluIGIpYS5zdHlsZVtlXT1kW2VdfX0pLGYuY3VyQ1NTPWYuY3NzLGYuZWFjaChbImhlaWdodCIsIndpZHRoIl0sZnVuY3Rpb24oYSxiKXtmLmNzc0hvb2tzW2JdPXtnZXQ6ZnVuY3Rpb24oYSxjLGQpe3ZhciBlO2lmKGMpe2lmKGEub2Zmc2V0V2lkdGghPT0wKXJldHVybiBiQyhhLGIsZCk7Zi5zd2FwKGEsYncsZnVuY3Rpb24oKXtlPWJDKGEsYixkKX0pO3JldHVybiBlfX0sc2V0OmZ1bmN0aW9uKGEsYil7aWYoIWJ0LnRlc3QoYikpcmV0dXJuIGI7Yj1wYXJzZUZsb2F0KGIpO2lmKGI+PTApcmV0dXJuIGIrInB4In19fSksZi5zdXBwb3J0Lm9wYWNpdHl8fChmLmNzc0hvb2tzLm9wYWNpdHk9e2dldDpmdW5jdGlvbihhLGIpe3JldHVybiBici50ZXN0KChiJiZhLmN1cnJlbnRTdHlsZT9hLmN1cnJlbnRTdHlsZS5maWx0ZXI6YS5zdHlsZS5maWx0ZXIpfHwiIik/cGFyc2VGbG9hdChSZWdFeHAuJDEpLzEwMCsiIjpiPyIxIjoiIn0sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGM9YS5zdHlsZSxkPWEuY3VycmVudFN0eWxlLGU9Zi5pc051bWVyaWMoYik/ImFscGhhKG9wYWNpdHk9IitiKjEwMCsiKSI6IiIsZz1kJiZkLmZpbHRlcnx8Yy5maWx0ZXJ8fCIiO2Muem9vbT0xO2lmKGI+PTEmJmYudHJpbShnLnJlcGxhY2UoYnEsIiIpKT09PSIiKXtjLnJlbW92ZUF0dHJpYnV0ZSgiZmlsdGVyIik7aWYoZCYmIWQuZmlsdGVyKXJldHVybn1jLmZpbHRlcj1icS50ZXN0KGcpP2cucmVwbGFjZShicSxlKTpnKyIgIitlfX0pLGYoZnVuY3Rpb24oKXtmLnN1cHBvcnQucmVsaWFibGVNYXJnaW5SaWdodHx8KGYuY3NzSG9va3MubWFyZ2luUmlnaHQ9e2dldDpmdW5jdGlvbihhLGIpe3ZhciBjO2Yuc3dhcChhLHtkaXNwbGF5OiJpbmxpbmUtYmxvY2sifSxmdW5jdGlvbigpe2I/Yz1ieihhLCJtYXJnaW4tcmlnaHQiLCJtYXJnaW5SaWdodCIpOmM9YS5zdHlsZS5tYXJnaW5SaWdodH0pO3JldHVybiBjfX0pfSksYy5kZWZhdWx0VmlldyYmYy5kZWZhdWx0Vmlldy5nZXRDb21wdXRlZFN0eWxlJiYoYkE9ZnVuY3Rpb24oYSxiKXt2YXIgYyxkLGU7Yj1iLnJlcGxhY2UoYnMsIi0kMSIpLnRvTG93ZXJDYXNlKCksKGQ9YS5vd25lckRvY3VtZW50LmRlZmF1bHRWaWV3KSYmKGU9ZC5nZXRDb21wdXRlZFN0eWxlKGEsbnVsbCkpJiYoYz1lLmdldFByb3BlcnR5VmFsdWUoYiksYz09PSIiJiYhZi5jb250YWlucyhhLm93bmVyRG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LGEpJiYoYz1mLnN0eWxlKGEsYikpKTtyZXR1cm4gY30pLGMuZG9jdW1lbnRFbGVtZW50LmN1cnJlbnRTdHlsZSYmKGJCPWZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGY9YS5jdXJyZW50U3R5bGUmJmEuY3VycmVudFN0eWxlW2JdLGc9YS5zdHlsZTtmPT09bnVsbCYmZyYmKGU9Z1tiXSkmJihmPWUpLCFidC50ZXN0KGYpJiZidS50ZXN0KGYpJiYoYz1nLmxlZnQsZD1hLnJ1bnRpbWVTdHlsZSYmYS5ydW50aW1lU3R5bGUubGVmdCxkJiYoYS5ydW50aW1lU3R5bGUubGVmdD1hLmN1cnJlbnRTdHlsZS5sZWZ0KSxnLmxlZnQ9Yj09PSJmb250U2l6ZSI/IjFlbSI6Znx8MCxmPWcucGl4ZWxMZWZ0KyJweCIsZy5sZWZ0PWMsZCYmKGEucnVudGltZVN0eWxlLmxlZnQ9ZCkpO3JldHVybiBmPT09IiI/ImF1dG8iOmZ9KSxiej1iQXx8YkIsZi5leHByJiZmLmV4cHIuZmlsdGVycyYmKGYuZXhwci5maWx0ZXJzLmhpZGRlbj1mdW5jdGlvbihhKXt2YXIgYj1hLm9mZnNldFdpZHRoLGM9YS5vZmZzZXRIZWlnaHQ7cmV0dXJuIGI9PT0wJiZjPT09MHx8IWYuc3VwcG9ydC5yZWxpYWJsZUhpZGRlbk9mZnNldHMmJihhLnN0eWxlJiZhLnN0eWxlLmRpc3BsYXl8fGYuY3NzKGEsImRpc3BsYXkiKSk9PT0ibm9uZSJ9LGYuZXhwci5maWx0ZXJzLnZpc2libGU9ZnVuY3Rpb24oYSl7cmV0dXJuIWYuZXhwci5maWx0ZXJzLmhpZGRlbihhKX0pO3ZhciBiRD0vJTIwL2csYkU9L1xbXF0kLyxiRj0vXHI/XG4vZyxiRz0vIy4qJC8sYkg9L14oLio/KTpbIFx0XSooW15cclxuXSopXHI/JC9tZyxiST0vXig/OmNvbG9yfGRhdGV8ZGF0ZXRpbWV8ZGF0ZXRpbWUtbG9jYWx8ZW1haWx8aGlkZGVufG1vbnRofG51bWJlcnxwYXNzd29yZHxyYW5nZXxzZWFyY2h8dGVsfHRleHR8dGltZXx1cmx8d2VlaykkL2ksYko9L14oPzphYm91dHxhcHB8YXBwXC1zdG9yYWdlfC4rXC1leHRlbnNpb258ZmlsZXxyZXN8d2lkZ2V0KTokLyxiSz0vXig/OkdFVHxIRUFEKSQvLGJMPS9eXC9cLy8sYk09L1w/LyxiTj0vPHNjcmlwdFxiW148XSooPzooPyE8XC9zY3JpcHQ+KTxbXjxdKikqPFwvc2NyaXB0Pi9naSxiTz0vXig/OnNlbGVjdHx0ZXh0YXJlYSkvaSxiUD0vXHMrLyxiUT0vKFs/Jl0pXz1bXiZdKi8sYlI9L14oW1x3XCtcLlwtXSs6KSg/OlwvXC8oW15cLz8jOl0qKSg/OjooXGQrKSk/KT8vLGJTPWYuZm4ubG9hZCxiVD17fSxiVT17fSxiVixiVyxiWD1bIiovIl0rWyIqIl07dHJ5e2JWPWUuaHJlZn1jYXRjaChiWSl7YlY9Yy5jcmVhdGVFbGVtZW50KCJhIiksYlYuaHJlZj0iIixiVj1iVi5ocmVmfWJXPWJSLmV4ZWMoYlYudG9Mb3dlckNhc2UoKSl8fFtdLGYuZm4uZXh0ZW5kKHtsb2FkOmZ1bmN0aW9uKGEsYyxkKXtpZih0eXBlb2YgYSE9InN0cmluZyImJmJTKXJldHVybiBiUy5hcHBseSh0aGlzLGFyZ3VtZW50cyk7aWYoIXRoaXMubGVuZ3RoKXJldHVybiB0aGlzO3ZhciBlPWEuaW5kZXhPZigiICIpO2lmKGU+PTApe3ZhciBnPWEuc2xpY2UoZSxhLmxlbmd0aCk7YT1hLnNsaWNlKDAsZSl9dmFyIGg9IkdFVCI7YyYmKGYuaXNGdW5jdGlvbihjKT8oZD1jLGM9Yik6dHlwZW9mIGM9PSJvYmplY3QiJiYoYz1mLnBhcmFtKGMsZi5hamF4U2V0dGluZ3MudHJhZGl0aW9uYWwpLGg9IlBPU1QiKSk7dmFyIGk9dGhpcztmLmFqYXgoe3VybDphLHR5cGU6aCxkYXRhVHlwZToiaHRtbCIsZGF0YTpjLGNvbXBsZXRlOmZ1bmN0aW9uKGEsYixjKXtjPWEucmVzcG9uc2VUZXh0LGEuaXNSZXNvbHZlZCgpJiYoYS5kb25lKGZ1bmN0aW9uKGEpe2M9YX0pLGkuaHRtbChnP2YoIjxkaXY+IikuYXBwZW5kKGMucmVwbGFjZShiTiwiIikpLmZpbmQoZyk6YykpLGQmJmkuZWFjaChkLFtjLGIsYV0pfX0pO3JldHVybiB0aGlzfSxzZXJpYWxpemU6ZnVuY3Rpb24oKXtyZXR1cm4gZi5wYXJhbSh0aGlzLnNlcmlhbGl6ZUFycmF5KCkpfSxzZXJpYWxpemVBcnJheTpmdW5jdGlvbigpe3JldHVybiB0aGlzLm1hcChmdW5jdGlvbigpe3JldHVybiB0aGlzLmVsZW1lbnRzP2YubWFrZUFycmF5KHRoaXMuZWxlbWVudHMpOnRoaXN9KS5maWx0ZXIoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5uYW1lJiYhdGhpcy5kaXNhYmxlZCYmKHRoaXMuY2hlY2tlZHx8Yk8udGVzdCh0aGlzLm5vZGVOYW1lKXx8YkkudGVzdCh0aGlzLnR5cGUpKX0pLm1hcChmdW5jdGlvbihhLGIpe3ZhciBjPWYodGhpcykudmFsKCk7cmV0dXJuIGM9PW51bGw/bnVsbDpmLmlzQXJyYXkoYyk/Zi5tYXAoYyxmdW5jdGlvbihhLGMpe3JldHVybntuYW1lOmIubmFtZSx2YWx1ZTphLnJlcGxhY2UoYkYsIlxyXG4iKX19KTp7bmFtZTpiLm5hbWUsdmFsdWU6Yy5yZXBsYWNlKGJGLCJcclxuIil9fSkuZ2V0KCl9fSksZi5lYWNoKCJhamF4U3RhcnQgYWpheFN0b3AgYWpheENvbXBsZXRlIGFqYXhFcnJvciBhamF4U3VjY2VzcyBhamF4U2VuZCIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe2YuZm5bYl09ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMub24oYixhKX19KSxmLmVhY2goWyJnZXQiLCJwb3N0Il0sZnVuY3Rpb24oYSxjKXtmW2NdPWZ1bmN0aW9uKGEsZCxlLGcpe2YuaXNGdW5jdGlvbihkKSYmKGc9Z3x8ZSxlPWQsZD1iKTtyZXR1cm4gZi5hamF4KHt0eXBlOmMsdXJsOmEsZGF0YTpkLHN1Y2Nlc3M6ZSxkYXRhVHlwZTpnfSl9fSksZi5leHRlbmQoe2dldFNjcmlwdDpmdW5jdGlvbihhLGMpe3JldHVybiBmLmdldChhLGIsYywic2NyaXB0Iil9LGdldEpTT046ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmLmdldChhLGIsYywianNvbiIpfSxhamF4U2V0dXA6ZnVuY3Rpb24oYSxiKXtiP2JfKGEsZi5hamF4U2V0dGluZ3MpOihiPWEsYT1mLmFqYXhTZXR0aW5ncyksYl8oYSxiKTtyZXR1cm4gYX0sYWpheFNldHRpbmdzOnt1cmw6YlYsaXNMb2NhbDpiSi50ZXN0KGJXWzFdKSxnbG9iYWw6ITAsdHlwZToiR0VUIixjb250ZW50VHlwZToiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIixwcm9jZXNzRGF0YTohMCxhc3luYzohMCxhY2NlcHRzOnt4bWw6ImFwcGxpY2F0aW9uL3htbCwgdGV4dC94bWwiLGh0bWw6InRleHQvaHRtbCIsdGV4dDoidGV4dC9wbGFpbiIsanNvbjoiYXBwbGljYXRpb24vanNvbiwgdGV4dC9qYXZhc2NyaXB0IiwiKiI6Ylh9LGNvbnRlbnRzOnt4bWw6L3htbC8saHRtbDovaHRtbC8sanNvbjovanNvbi99LHJlc3BvbnNlRmllbGRzOnt4bWw6InJlc3BvbnNlWE1MIix0ZXh0OiJyZXNwb25zZVRleHQifSxjb252ZXJ0ZXJzOnsiKiB0ZXh0IjphLlN0cmluZywidGV4dCBodG1sIjohMCwidGV4dCBqc29uIjpmLnBhcnNlSlNPTiwidGV4dCB4bWwiOmYucGFyc2VYTUx9LGZsYXRPcHRpb25zOntjb250ZXh0OiEwLHVybDohMH19LGFqYXhQcmVmaWx0ZXI6YlooYlQpLGFqYXhUcmFuc3BvcnQ6YlooYlUpLGFqYXg6ZnVuY3Rpb24oYSxjKXtmdW5jdGlvbiB3KGEsYyxsLG0pe2lmKHMhPT0yKXtzPTIscSYmY2xlYXJUaW1lb3V0KHEpLHA9YixuPW18fCIiLHYucmVhZHlTdGF0ZT1hPjA/NDowO3ZhciBvLHIsdSx3PWMseD1sP2NiKGQsdixsKTpiLHksejtpZihhPj0yMDAmJmE8MzAwfHxhPT09MzA0KXtpZihkLmlmTW9kaWZpZWQpe2lmKHk9di5nZXRSZXNwb25zZUhlYWRlcigiTGFzdC1Nb2RpZmllZCIpKWYubGFzdE1vZGlmaWVkW2tdPXk7aWYoej12LmdldFJlc3BvbnNlSGVhZGVyKCJFdGFnIikpZi5ldGFnW2tdPXp9aWYoYT09PTMwNCl3PSJub3Rtb2RpZmllZCIsbz0hMDtlbHNlIHRyeXtyPWNjKGQseCksdz0ic3VjY2VzcyIsbz0hMH1jYXRjaChBKXt3PSJwYXJzZXJlcnJvciIsdT1BfX1lbHNle3U9dztpZighd3x8YSl3PSJlcnJvciIsYTwwJiYoYT0wKX12LnN0YXR1cz1hLHYuc3RhdHVzVGV4dD0iIisoY3x8dyksbz9oLnJlc29sdmVXaXRoKGUsW3Isdyx2XSk6aC5yZWplY3RXaXRoKGUsW3Ysdyx1XSksdi5zdGF0dXNDb2RlKGopLGo9Yix0JiZnLnRyaWdnZXIoImFqYXgiKyhvPyJTdWNjZXNzIjoiRXJyb3IiKSxbdixkLG8/cjp1XSksaS5maXJlV2l0aChlLFt2LHddKSx0JiYoZy50cmlnZ2VyKCJhamF4Q29tcGxldGUiLFt2LGRdKSwtLWYuYWN0aXZlfHxmLmV2ZW50LnRyaWdnZXIoImFqYXhTdG9wIikpfX10eXBlb2YgYT09Im9iamVjdCImJihjPWEsYT1iKSxjPWN8fHt9O3ZhciBkPWYuYWpheFNldHVwKHt9LGMpLGU9ZC5jb250ZXh0fHxkLGc9ZSE9PWQmJihlLm5vZGVUeXBlfHxlIGluc3RhbmNlb2YgZik/ZihlKTpmLmV2ZW50LGg9Zi5EZWZlcnJlZCgpLGk9Zi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5Iiksaj1kLnN0YXR1c0NvZGV8fHt9LGssbD17fSxtPXt9LG4sbyxwLHEscixzPTAsdCx1LHY9e3JlYWR5U3RhdGU6MCxzZXRSZXF1ZXN0SGVhZGVyOmZ1bmN0aW9uKGEsYil7aWYoIXMpe3ZhciBjPWEudG9Mb3dlckNhc2UoKTthPW1bY109bVtjXXx8YSxsW2FdPWJ9cmV0dXJuIHRoaXN9LGdldEFsbFJlc3BvbnNlSGVhZGVyczpmdW5jdGlvbigpe3JldHVybiBzPT09Mj9uOm51bGx9LGdldFJlc3BvbnNlSGVhZGVyOmZ1bmN0aW9uKGEpe3ZhciBjO2lmKHM9PT0yKXtpZighbyl7bz17fTt3aGlsZShjPWJILmV4ZWMobikpb1tjWzFdLnRvTG93ZXJDYXNlKCldPWNbMl19Yz1vW2EudG9Mb3dlckNhc2UoKV19cmV0dXJuIGM9PT1iP251bGw6Y30sb3ZlcnJpZGVNaW1lVHlwZTpmdW5jdGlvbihhKXtzfHwoZC5taW1lVHlwZT1hKTtyZXR1cm4gdGhpc30sYWJvcnQ6ZnVuY3Rpb24oYSl7YT1hfHwiYWJvcnQiLHAmJnAuYWJvcnQoYSksdygwLGEpO3JldHVybiB0aGlzfX07aC5wcm9taXNlKHYpLHYuc3VjY2Vzcz12LmRvbmUsdi5lcnJvcj12LmZhaWwsdi5jb21wbGV0ZT1pLmFkZCx2LnN0YXR1c0NvZGU9ZnVuY3Rpb24oYSl7aWYoYSl7dmFyIGI7aWYoczwyKWZvcihiIGluIGEpaltiXT1baltiXSxhW2JdXTtlbHNlIGI9YVt2LnN0YXR1c10sdi50aGVuKGIsYil9cmV0dXJuIHRoaXN9LGQudXJsPSgoYXx8ZC51cmwpKyIiKS5yZXBsYWNlKGJHLCIiKS5yZXBsYWNlKGJMLGJXWzFdKyIvLyIpLGQuZGF0YVR5cGVzPWYudHJpbShkLmRhdGFUeXBlfHwiKiIpLnRvTG93ZXJDYXNlKCkuc3BsaXQoYlApLGQuY3Jvc3NEb21haW49PW51bGwmJihyPWJSLmV4ZWMoZC51cmwudG9Mb3dlckNhc2UoKSksZC5jcm9zc0RvbWFpbj0hKCFyfHxyWzFdPT1iV1sxXSYmclsyXT09YldbMl0mJihyWzNdfHwoclsxXT09PSJodHRwOiI/ODA6NDQzKSk9PShiV1szXXx8KGJXWzFdPT09Imh0dHA6Ij84MDo0NDMpKSkpLGQuZGF0YSYmZC5wcm9jZXNzRGF0YSYmdHlwZW9mIGQuZGF0YSE9InN0cmluZyImJihkLmRhdGE9Zi5wYXJhbShkLmRhdGEsZC50cmFkaXRpb25hbCkpLGIkKGJULGQsYyx2KTtpZihzPT09MilyZXR1cm4hMTt0PWQuZ2xvYmFsLGQudHlwZT1kLnR5cGUudG9VcHBlckNhc2UoKSxkLmhhc0NvbnRlbnQ9IWJLLnRlc3QoZC50eXBlKSx0JiZmLmFjdGl2ZSsrPT09MCYmZi5ldmVudC50cmlnZ2VyKCJhamF4U3RhcnQiKTtpZighZC5oYXNDb250ZW50KXtkLmRhdGEmJihkLnVybCs9KGJNLnRlc3QoZC51cmwpPyImIjoiPyIpK2QuZGF0YSxkZWxldGUgZC5kYXRhKSxrPWQudXJsO2lmKGQuY2FjaGU9PT0hMSl7dmFyIHg9Zi5ub3coKSx5PWQudXJsLnJlcGxhY2UoYlEsIiQxXz0iK3gpO2QudXJsPXkrKHk9PT1kLnVybD8oYk0udGVzdChkLnVybCk/IiYiOiI/IikrIl89Iit4OiIiKX19KGQuZGF0YSYmZC5oYXNDb250ZW50JiZkLmNvbnRlbnRUeXBlIT09ITF8fGMuY29udGVudFR5cGUpJiZ2LnNldFJlcXVlc3RIZWFkZXIoIkNvbnRlbnQtVHlwZSIsZC5jb250ZW50VHlwZSksZC5pZk1vZGlmaWVkJiYoaz1rfHxkLnVybCxmLmxhc3RNb2RpZmllZFtrXSYmdi5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Nb2RpZmllZC1TaW5jZSIsZi5sYXN0TW9kaWZpZWRba10pLGYuZXRhZ1trXSYmdi5zZXRSZXF1ZXN0SGVhZGVyKCJJZi1Ob25lLU1hdGNoIixmLmV0YWdba10pKSx2LnNldFJlcXVlc3RIZWFkZXIoIkFjY2VwdCIsZC5kYXRhVHlwZXNbMF0mJmQuYWNjZXB0c1tkLmRhdGFUeXBlc1swXV0/ZC5hY2NlcHRzW2QuZGF0YVR5cGVzWzBdXSsoZC5kYXRhVHlwZXNbMF0hPT0iKiI/IiwgIitiWCsiOyBxPTAuMDEiOiIiKTpkLmFjY2VwdHNbIioiXSk7Zm9yKHUgaW4gZC5oZWFkZXJzKXYuc2V0UmVxdWVzdEhlYWRlcih1LGQuaGVhZGVyc1t1XSk7aWYoZC5iZWZvcmVTZW5kJiYoZC5iZWZvcmVTZW5kLmNhbGwoZSx2LGQpPT09ITF8fHM9PT0yKSl7di5hYm9ydCgpO3JldHVybiExfWZvcih1IGlue3N1Y2Nlc3M6MSxlcnJvcjoxLGNvbXBsZXRlOjF9KXZbdV0oZFt1XSk7cD1iJChiVSxkLGMsdik7aWYoIXApdygtMSwiTm8gVHJhbnNwb3J0Iik7ZWxzZXt2LnJlYWR5U3RhdGU9MSx0JiZnLnRyaWdnZXIoImFqYXhTZW5kIixbdixkXSksZC5hc3luYyYmZC50aW1lb3V0PjAmJihxPXNldFRpbWVvdXQoZnVuY3Rpb24oKXt2LmFib3J0KCJ0aW1lb3V0Iil9LGQudGltZW91dCkpO3RyeXtzPTEscC5zZW5kKGwsdyl9Y2F0Y2goeil7aWYoczwyKXcoLTEseik7ZWxzZSB0aHJvdyB6fX1yZXR1cm4gdn0scGFyYW06ZnVuY3Rpb24oYSxjKXt2YXIgZD1bXSxlPWZ1bmN0aW9uKGEsYil7Yj1mLmlzRnVuY3Rpb24oYik/YigpOmIsZFtkLmxlbmd0aF09ZW5jb2RlVVJJQ29tcG9uZW50KGEpKyI9IitlbmNvZGVVUklDb21wb25lbnQoYil9O2M9PT1iJiYoYz1mLmFqYXhTZXR0aW5ncy50cmFkaXRpb25hbCk7aWYoZi5pc0FycmF5KGEpfHxhLmpxdWVyeSYmIWYuaXNQbGFpbk9iamVjdChhKSlmLmVhY2goYSxmdW5jdGlvbigpe2UodGhpcy5uYW1lLHRoaXMudmFsdWUpfSk7ZWxzZSBmb3IodmFyIGcgaW4gYSljYShnLGFbZ10sYyxlKTtyZXR1cm4gZC5qb2luKCImIikucmVwbGFjZShiRCwiKyIpfX0pLGYuZXh0ZW5kKHthY3RpdmU6MCxsYXN0TW9kaWZpZWQ6e30sZXRhZzp7fX0pO3ZhciBjZD1mLm5vdygpLGNlPS8oXD0pXD8oJnwkKXxcP1w/L2k7Zi5hamF4U2V0dXAoe2pzb25wOiJjYWxsYmFjayIsanNvbnBDYWxsYmFjazpmdW5jdGlvbigpe3JldHVybiBmLmV4cGFuZG8rIl8iK2NkKyt9fSksZi5hamF4UHJlZmlsdGVyKCJqc29uIGpzb25wIixmdW5jdGlvbihiLGMsZCl7dmFyIGU9Yi5jb250ZW50VHlwZT09PSJhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQiJiZ0eXBlb2YgYi5kYXRhPT0ic3RyaW5nIjtpZihiLmRhdGFUeXBlc1swXT09PSJqc29ucCJ8fGIuanNvbnAhPT0hMSYmKGNlLnRlc3QoYi51cmwpfHxlJiZjZS50ZXN0KGIuZGF0YSkpKXt2YXIgZyxoPWIuanNvbnBDYWxsYmFjaz1mLmlzRnVuY3Rpb24oYi5qc29ucENhbGxiYWNrKT9iLmpzb25wQ2FsbGJhY2soKTpiLmpzb25wQ2FsbGJhY2ssaT1hW2hdLGo9Yi51cmwsaz1iLmRhdGEsbD0iJDEiK2grIiQyIjtiLmpzb25wIT09ITEmJihqPWoucmVwbGFjZShjZSxsKSxiLnVybD09PWomJihlJiYoaz1rLnJlcGxhY2UoY2UsbCkpLGIuZGF0YT09PWsmJihqKz0oL1w/Ly50ZXN0KGopPyImIjoiPyIpK2IuanNvbnArIj0iK2gpKSksYi51cmw9aixiLmRhdGE9ayxhW2hdPWZ1bmN0aW9uKGEpe2c9W2FdfSxkLmFsd2F5cyhmdW5jdGlvbigpe2FbaF09aSxnJiZmLmlzRnVuY3Rpb24oaSkmJmFbaF0oZ1swXSl9KSxiLmNvbnZlcnRlcnNbInNjcmlwdCBqc29uIl09ZnVuY3Rpb24oKXtnfHxmLmVycm9yKGgrIiB3YXMgbm90IGNhbGxlZCIpO3JldHVybiBnWzBdfSxiLmRhdGFUeXBlc1swXT0ianNvbiI7cmV0dXJuInNjcmlwdCJ9fSksZi5hamF4U2V0dXAoe2FjY2VwdHM6e3NjcmlwdDoidGV4dC9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9qYXZhc2NyaXB0LCBhcHBsaWNhdGlvbi9lY21hc2NyaXB0LCBhcHBsaWNhdGlvbi94LWVjbWFzY3JpcHQifSxjb250ZW50czp7c2NyaXB0Oi9qYXZhc2NyaXB0fGVjbWFzY3JpcHQvfSxjb252ZXJ0ZXJzOnsidGV4dCBzY3JpcHQiOmZ1bmN0aW9uKGEpe2YuZ2xvYmFsRXZhbChhKTtyZXR1cm4gYX19fSksZi5hamF4UHJlZmlsdGVyKCJzY3JpcHQiLGZ1bmN0aW9uKGEpe2EuY2FjaGU9PT1iJiYoYS5jYWNoZT0hMSksYS5jcm9zc0RvbWFpbiYmKGEudHlwZT0iR0VUIixhLmdsb2JhbD0hMSl9KSxmLmFqYXhUcmFuc3BvcnQoInNjcmlwdCIsZnVuY3Rpb24oYSl7aWYoYS5jcm9zc0RvbWFpbil7dmFyIGQsZT1jLmhlYWR8fGMuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImhlYWQiKVswXXx8Yy5kb2N1bWVudEVsZW1lbnQ7cmV0dXJue3NlbmQ6ZnVuY3Rpb24oZixnKXtkPWMuY3JlYXRlRWxlbWVudCgic2NyaXB0IiksZC5hc3luYz0iYXN5bmMiLGEuc2NyaXB0Q2hhcnNldCYmKGQuY2hhcnNldD1hLnNjcmlwdENoYXJzZXQpLGQuc3JjPWEudXJsLGQub25sb2FkPWQub25yZWFkeXN0YXRlY2hhbmdlPWZ1bmN0aW9uKGEsYyl7aWYoY3x8IWQucmVhZHlTdGF0ZXx8L2xvYWRlZHxjb21wbGV0ZS8udGVzdChkLnJlYWR5U3RhdGUpKWQub25sb2FkPWQub25yZWFkeXN0YXRlY2hhbmdlPW51bGwsZSYmZC5wYXJlbnROb2RlJiZlLnJlbW92ZUNoaWxkKGQpLGQ9YixjfHxnKDIwMCwic3VjY2VzcyIpfSxlLmluc2VydEJlZm9yZShkLGUuZmlyc3RDaGlsZCl9LGFib3J0OmZ1bmN0aW9uKCl7ZCYmZC5vbmxvYWQoMCwxKX19fX0pO3ZhciBjZj1hLkFjdGl2ZVhPYmplY3Q/ZnVuY3Rpb24oKXtmb3IodmFyIGEgaW4gY2gpY2hbYV0oMCwxKX06ITEsY2c9MCxjaDtmLmFqYXhTZXR0aW5ncy54aHI9YS5BY3RpdmVYT2JqZWN0P2Z1bmN0aW9uKCl7cmV0dXJuIXRoaXMuaXNMb2NhbCYmY2koKXx8Y2ooKX06Y2ksZnVuY3Rpb24oYSl7Zi5leHRlbmQoZi5zdXBwb3J0LHthamF4OiEhYSxjb3JzOiEhYSYmIndpdGhDcmVkZW50aWFscyJpbiBhfSl9KGYuYWpheFNldHRpbmdzLnhocigpKSxmLnN1cHBvcnQuYWpheCYmZi5hamF4VHJhbnNwb3J0KGZ1bmN0aW9uKGMpe2lmKCFjLmNyb3NzRG9tYWlufHxmLnN1cHBvcnQuY29ycyl7dmFyIGQ7cmV0dXJue3NlbmQ6ZnVuY3Rpb24oZSxnKXt2YXIgaD1jLnhocigpLGksajtjLnVzZXJuYW1lP2gub3BlbihjLnR5cGUsYy51cmwsYy5hc3luYyxjLnVzZXJuYW1lLGMucGFzc3dvcmQpOmgub3BlbihjLnR5cGUsYy51cmwsYy5hc3luYyk7aWYoYy54aHJGaWVsZHMpZm9yKGogaW4gYy54aHJGaWVsZHMpaFtqXT1jLnhockZpZWxkc1tqXTtjLm1pbWVUeXBlJiZoLm92ZXJyaWRlTWltZVR5cGUmJmgub3ZlcnJpZGVNaW1lVHlwZShjLm1pbWVUeXBlKSwhYy5jcm9zc0RvbWFpbiYmIWVbIlgtUmVxdWVzdGVkLVdpdGgiXSYmKGVbIlgtUmVxdWVzdGVkLVdpdGgiXT0iWE1MSHR0cFJlcXVlc3QiKTt0cnl7Zm9yKGogaW4gZSloLnNldFJlcXVlc3RIZWFkZXIoaixlW2pdKX1jYXRjaChrKXt9aC5zZW5kKGMuaGFzQ29udGVudCYmYy5kYXRhfHxudWxsKSxkPWZ1bmN0aW9uKGEsZSl7dmFyIGosayxsLG0sbjt0cnl7aWYoZCYmKGV8fGgucmVhZHlTdGF0ZT09PTQpKXtkPWIsaSYmKGgub25yZWFkeXN0YXRlY2hhbmdlPWYubm9vcCxjZiYmZGVsZXRlIGNoW2ldKTtpZihlKWgucmVhZHlTdGF0ZSE9PTQmJmguYWJvcnQoKTtlbHNle2o9aC5zdGF0dXMsbD1oLmdldEFsbFJlc3BvbnNlSGVhZGVycygpLG09e30sbj1oLnJlc3BvbnNlWE1MLG4mJm4uZG9jdW1lbnRFbGVtZW50JiYobS54bWw9biksbS50ZXh0PWgucmVzcG9uc2VUZXh0O3RyeXtrPWguc3RhdHVzVGV4dH1jYXRjaChvKXtrPSIifSFqJiZjLmlzTG9jYWwmJiFjLmNyb3NzRG9tYWluP2o9bS50ZXh0PzIwMDo0MDQ6aj09PTEyMjMmJihqPTIwNCl9fX1jYXRjaChwKXtlfHxnKC0xLHApfW0mJmcoaixrLG0sbCl9LCFjLmFzeW5jfHxoLnJlYWR5U3RhdGU9PT00P2QoKTooaT0rK2NnLGNmJiYoY2h8fChjaD17fSxmKGEpLnVubG9hZChjZikpLGNoW2ldPWQpLGgub25yZWFkeXN0YXRlY2hhbmdlPWQpfSxhYm9ydDpmdW5jdGlvbigpe2QmJmQoMCwxKX19fX0pO3ZhciBjaz17fSxjbCxjbSxjbj0vXig/OnRvZ2dsZXxzaG93fGhpZGUpJC8sY289L14oWytcLV09KT8oW1xkKy5cLV0rKShbYS16JV0qKSQvaSxjcCxjcT1bWyJoZWlnaHQiLCJtYXJnaW5Ub3AiLCJtYXJnaW5Cb3R0b20iLCJwYWRkaW5nVG9wIiwicGFkZGluZ0JvdHRvbSJdLFsid2lkdGgiLCJtYXJnaW5MZWZ0IiwibWFyZ2luUmlnaHQiLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCJdLFsib3BhY2l0eSJdXSxjcjtmLmZuLmV4dGVuZCh7c2hvdzpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZTtpZihhfHxhPT09MClyZXR1cm4gdGhpcy5hbmltYXRlKGN1KCJzaG93IiwzKSxhLGIsYyk7Zm9yKHZhciBnPTAsaD10aGlzLmxlbmd0aDtnPGg7ZysrKWQ9dGhpc1tnXSxkLnN0eWxlJiYoZT1kLnN0eWxlLmRpc3BsYXksIWYuX2RhdGEoZCwib2xkZGlzcGxheSIpJiZlPT09Im5vbmUiJiYoZT1kLnN0eWxlLmRpc3BsYXk9IiIpLGU9PT0iIiYmZi5jc3MoZCwiZGlzcGxheSIpPT09Im5vbmUiJiZmLl9kYXRhKGQsIm9sZGRpc3BsYXkiLGN2KGQubm9kZU5hbWUpKSk7Zm9yKGc9MDtnPGg7ZysrKXtkPXRoaXNbZ107aWYoZC5zdHlsZSl7ZT1kLnN0eWxlLmRpc3BsYXk7aWYoZT09PSIifHxlPT09Im5vbmUiKWQuc3R5bGUuZGlzcGxheT1mLl9kYXRhKGQsIm9sZGRpc3BsYXkiKXx8IiJ9fXJldHVybiB0aGlzfSxoaWRlOmZ1bmN0aW9uKGEsYixjKXtpZihhfHxhPT09MClyZXR1cm4gdGhpcy5hbmltYXRlKGN1KCJoaWRlIiwzKSxhLGIsYyk7dmFyIGQsZSxnPTAsaD10aGlzLmxlbmd0aDtmb3IoO2c8aDtnKyspZD10aGlzW2ddLGQuc3R5bGUmJihlPWYuY3NzKGQsImRpc3BsYXkiKSxlIT09Im5vbmUiJiYhZi5fZGF0YShkLCJvbGRkaXNwbGF5IikmJmYuX2RhdGEoZCwib2xkZGlzcGxheSIsZSkpO2ZvcihnPTA7ZzxoO2crKyl0aGlzW2ddLnN0eWxlJiYodGhpc1tnXS5zdHlsZS5kaXNwbGF5PSJub25lIik7cmV0dXJuIHRoaXN9LF90b2dnbGU6Zi5mbi50b2dnbGUsdG9nZ2xlOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD10eXBlb2YgYT09ImJvb2xlYW4iO2YuaXNGdW5jdGlvbihhKSYmZi5pc0Z1bmN0aW9uKGIpP3RoaXMuX3RvZ2dsZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6YT09bnVsbHx8ZD90aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1kP2E6Zih0aGlzKS5pcygiOmhpZGRlbiIpO2YodGhpcylbYj8ic2hvdyI6ImhpZGUiXSgpfSk6dGhpcy5hbmltYXRlKGN1KCJ0b2dnbGUiLDMpLGEsYixjKTtyZXR1cm4gdGhpc30sZmFkZVRvOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLmZpbHRlcigiOmhpZGRlbiIpLmNzcygib3BhY2l0eSIsMCkuc2hvdygpLmVuZCgpLmFuaW1hdGUoe29wYWNpdHk6Yn0sYSxjLGQpfSxhbmltYXRlOmZ1bmN0aW9uKGEsYixjLGQpe2Z1bmN0aW9uIGcoKXtlLnF1ZXVlPT09ITEmJmYuX21hcmsodGhpcyk7dmFyIGI9Zi5leHRlbmQoe30sZSksYz10aGlzLm5vZGVUeXBlPT09MSxkPWMmJmYodGhpcykuaXMoIjpoaWRkZW4iKSxnLGgsaSxqLGssbCxtLG4sbztiLmFuaW1hdGVkUHJvcGVydGllcz17fTtmb3IoaSBpbiBhKXtnPWYuY2FtZWxDYXNlKGkpLGkhPT1nJiYoYVtnXT1hW2ldLGRlbGV0ZSBhW2ldKSxoPWFbZ10sZi5pc0FycmF5KGgpPyhiLmFuaW1hdGVkUHJvcGVydGllc1tnXT1oWzFdLGg9YVtnXT1oWzBdKTpiLmFuaW1hdGVkUHJvcGVydGllc1tnXT1iLnNwZWNpYWxFYXNpbmcmJmIuc3BlY2lhbEVhc2luZ1tnXXx8Yi5lYXNpbmd8fCJzd2luZyI7aWYoaD09PSJoaWRlIiYmZHx8aD09PSJzaG93IiYmIWQpcmV0dXJuIGIuY29tcGxldGUuY2FsbCh0aGlzKTtjJiYoZz09PSJoZWlnaHQifHxnPT09IndpZHRoIikmJihiLm92ZXJmbG93PVt0aGlzLnN0eWxlLm92ZXJmbG93LHRoaXMuc3R5bGUub3ZlcmZsb3dYLHRoaXMuc3R5bGUub3ZlcmZsb3dZXSxmLmNzcyh0aGlzLCJkaXNwbGF5Iik9PT0iaW5saW5lIiYmZi5jc3ModGhpcywiZmxvYXQiKT09PSJub25lIiYmKCFmLnN1cHBvcnQuaW5saW5lQmxvY2tOZWVkc0xheW91dHx8Y3YodGhpcy5ub2RlTmFtZSk9PT0iaW5saW5lIj90aGlzLnN0eWxlLmRpc3BsYXk9ImlubGluZS1ibG9jayI6dGhpcy5zdHlsZS56b29tPTEpKX1iLm92ZXJmbG93IT1udWxsJiYodGhpcy5zdHlsZS5vdmVyZmxvdz0iaGlkZGVuIik7Zm9yKGkgaW4gYSlqPW5ldyBmLmZ4KHRoaXMsYixpKSxoPWFbaV0sY24udGVzdChoKT8obz1mLl9kYXRhKHRoaXMsInRvZ2dsZSIraSl8fChoPT09InRvZ2dsZSI/ZD8ic2hvdyI6ImhpZGUiOjApLG8/KGYuX2RhdGEodGhpcywidG9nZ2xlIitpLG89PT0ic2hvdyI/ImhpZGUiOiJzaG93IiksaltvXSgpKTpqW2hdKCkpOihrPWNvLmV4ZWMoaCksbD1qLmN1cigpLGs/KG09cGFyc2VGbG9hdChrWzJdKSxuPWtbM118fChmLmNzc051bWJlcltpXT8iIjoicHgiKSxuIT09InB4IiYmKGYuc3R5bGUodGhpcyxpLChtfHwxKStuKSxsPShtfHwxKS9qLmN1cigpKmwsZi5zdHlsZSh0aGlzLGksbCtuKSksa1sxXSYmKG09KGtbMV09PT0iLT0iPy0xOjEpKm0rbCksai5jdXN0b20obCxtLG4pKTpqLmN1c3RvbShsLGgsIiIpKTtyZXR1cm4hMH12YXIgZT1mLnNwZWVkKGIsYyxkKTtpZihmLmlzRW1wdHlPYmplY3QoYSkpcmV0dXJuIHRoaXMuZWFjaChlLmNvbXBsZXRlLFshMV0pO2E9Zi5leHRlbmQoe30sYSk7cmV0dXJuIGUucXVldWU9PT0hMT90aGlzLmVhY2goZyk6dGhpcy5xdWV1ZShlLnF1ZXVlLGcpfSxzdG9wOmZ1bmN0aW9uKGEsYyxkKXt0eXBlb2YgYSE9InN0cmluZyImJihkPWMsYz1hLGE9YiksYyYmYSE9PSExJiZ0aGlzLnF1ZXVlKGF8fCJmeCIsW10pO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmdW5jdGlvbiBoKGEsYixjKXt2YXIgZT1iW2NdO2YucmVtb3ZlRGF0YShhLGMsITApLGUuc3RvcChkKX12YXIgYixjPSExLGU9Zi50aW1lcnMsZz1mLl9kYXRhKHRoaXMpO2R8fGYuX3VubWFyayghMCx0aGlzKTtpZihhPT1udWxsKWZvcihiIGluIGcpZ1tiXSYmZ1tiXS5zdG9wJiZiLmluZGV4T2YoIi5ydW4iKT09PWIubGVuZ3RoLTQmJmgodGhpcyxnLGIpO2Vsc2UgZ1tiPWErIi5ydW4iXSYmZ1tiXS5zdG9wJiZoKHRoaXMsZyxiKTtmb3IoYj1lLmxlbmd0aDtiLS07KWVbYl0uZWxlbT09PXRoaXMmJihhPT1udWxsfHxlW2JdLnF1ZXVlPT09YSkmJihkP2VbYl0oITApOmVbYl0uc2F2ZVN0YXRlKCksYz0hMCxlLnNwbGljZShiLDEpKTsoIWR8fCFjKSYmZi5kZXF1ZXVlKHRoaXMsYSl9KX19KSxmLmVhY2goe3NsaWRlRG93bjpjdSgic2hvdyIsMSksc2xpZGVVcDpjdSgiaGlkZSIsMSksc2xpZGVUb2dnbGU6Y3UoInRvZ2dsZSIsMSksZmFkZUluOntvcGFjaXR5OiJzaG93In0sZmFkZU91dDp7b3BhY2l0eToiaGlkZSJ9LGZhZGVUb2dnbGU6e29wYWNpdHk6InRvZ2dsZSJ9fSxmdW5jdGlvbihhLGIpe2YuZm5bYV09ZnVuY3Rpb24oYSxjLGQpe3JldHVybiB0aGlzLmFuaW1hdGUoYixhLGMsZCl9fSksZi5leHRlbmQoe3NwZWVkOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hJiZ0eXBlb2YgYT09Im9iamVjdCI/Zi5leHRlbmQoe30sYSk6e2NvbXBsZXRlOmN8fCFjJiZifHxmLmlzRnVuY3Rpb24oYSkmJmEsZHVyYXRpb246YSxlYXNpbmc6YyYmYnx8YiYmIWYuaXNGdW5jdGlvbihiKSYmYn07ZC5kdXJhdGlvbj1mLmZ4Lm9mZj8wOnR5cGVvZiBkLmR1cmF0aW9uPT0ibnVtYmVyIj9kLmR1cmF0aW9uOmQuZHVyYXRpb24gaW4gZi5meC5zcGVlZHM/Zi5meC5zcGVlZHNbZC5kdXJhdGlvbl06Zi5meC5zcGVlZHMuX2RlZmF1bHQ7aWYoZC5xdWV1ZT09bnVsbHx8ZC5xdWV1ZT09PSEwKWQucXVldWU9ImZ4IjtkLm9sZD1kLmNvbXBsZXRlLGQuY29tcGxldGU9ZnVuY3Rpb24oYSl7Zi5pc0Z1bmN0aW9uKGQub2xkKSYmZC5vbGQuY2FsbCh0aGlzKSxkLnF1ZXVlP2YuZGVxdWV1ZSh0aGlzLGQucXVldWUpOmEhPT0hMSYmZi5fdW5tYXJrKHRoaXMpfTtyZXR1cm4gZH0sZWFzaW5nOntsaW5lYXI6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIGMrZCphfSxzd2luZzpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4oLU1hdGguY29zKGEqTWF0aC5QSSkvMisuNSkqZCtjfX0sdGltZXJzOltdLGZ4OmZ1bmN0aW9uKGEsYixjKXt0aGlzLm9wdGlvbnM9Yix0aGlzLmVsZW09YSx0aGlzLnByb3A9YyxiLm9yaWc9Yi5vcmlnfHx7fX19KSxmLmZ4LnByb3RvdHlwZT17dXBkYXRlOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLnN0ZXAmJnRoaXMub3B0aW9ucy5zdGVwLmNhbGwodGhpcy5lbGVtLHRoaXMubm93LHRoaXMpLChmLmZ4LnN0ZXBbdGhpcy5wcm9wXXx8Zi5meC5zdGVwLl9kZWZhdWx0KSh0aGlzKX0sY3VyOmZ1bmN0aW9uKCl7aWYodGhpcy5lbGVtW3RoaXMucHJvcF0hPW51bGwmJighdGhpcy5lbGVtLnN0eWxlfHx0aGlzLmVsZW0uc3R5bGVbdGhpcy5wcm9wXT09bnVsbCkpcmV0dXJuIHRoaXMuZWxlbVt0aGlzLnByb3BdO3ZhciBhLGI9Zi5jc3ModGhpcy5lbGVtLHRoaXMucHJvcCk7cmV0dXJuIGlzTmFOKGE9cGFyc2VGbG9hdChiKSk/IWJ8fGI9PT0iYXV0byI/MDpiOmF9LGN1c3RvbTpmdW5jdGlvbihhLGMsZCl7ZnVuY3Rpb24gaChhKXtyZXR1cm4gZS5zdGVwKGEpfXZhciBlPXRoaXMsZz1mLmZ4O3RoaXMuc3RhcnRUaW1lPWNyfHxjcygpLHRoaXMuZW5kPWMsdGhpcy5ub3c9dGhpcy5zdGFydD1hLHRoaXMucG9zPXRoaXMuc3RhdGU9MCx0aGlzLnVuaXQ9ZHx8dGhpcy51bml0fHwoZi5jc3NOdW1iZXJbdGhpcy5wcm9wXT8iIjoicHgiKSxoLnF1ZXVlPXRoaXMub3B0aW9ucy5xdWV1ZSxoLmVsZW09dGhpcy5lbGVtLGguc2F2ZVN0YXRlPWZ1bmN0aW9uKCl7ZS5vcHRpb25zLmhpZGUmJmYuX2RhdGEoZS5lbGVtLCJmeHNob3ciK2UucHJvcCk9PT1iJiZmLl9kYXRhKGUuZWxlbSwiZnhzaG93IitlLnByb3AsZS5zdGFydCl9LGgoKSYmZi50aW1lcnMucHVzaChoKSYmIWNwJiYoY3A9c2V0SW50ZXJ2YWwoZy50aWNrLGcuaW50ZXJ2YWwpKX0sc2hvdzpmdW5jdGlvbigpe3ZhciBhPWYuX2RhdGEodGhpcy5lbGVtLCJmeHNob3ciK3RoaXMucHJvcCk7dGhpcy5vcHRpb25zLm9yaWdbdGhpcy5wcm9wXT1hfHxmLnN0eWxlKHRoaXMuZWxlbSx0aGlzLnByb3ApLHRoaXMub3B0aW9ucy5zaG93PSEwLGEhPT1iP3RoaXMuY3VzdG9tKHRoaXMuY3VyKCksYSk6dGhpcy5jdXN0b20odGhpcy5wcm9wPT09IndpZHRoInx8dGhpcy5wcm9wPT09ImhlaWdodCI/MTowLHRoaXMuY3VyKCkpLGYodGhpcy5lbGVtKS5zaG93KCl9LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMub3JpZ1t0aGlzLnByb3BdPWYuX2RhdGEodGhpcy5lbGVtLCJmeHNob3ciK3RoaXMucHJvcCl8fGYuc3R5bGUodGhpcy5lbGVtLHRoaXMucHJvcCksdGhpcy5vcHRpb25zLmhpZGU9ITAsdGhpcy5jdXN0b20odGhpcy5jdXIoKSwwKX0sc3RlcDpmdW5jdGlvbihhKXt2YXIgYixjLGQsZT1jcnx8Y3MoKSxnPSEwLGg9dGhpcy5lbGVtLGk9dGhpcy5vcHRpb25zO2lmKGF8fGU+PWkuZHVyYXRpb24rdGhpcy5zdGFydFRpbWUpe3RoaXMubm93PXRoaXMuZW5kLHRoaXMucG9zPXRoaXMuc3RhdGU9MSx0aGlzLnVwZGF0ZSgpLGkuYW5pbWF0ZWRQcm9wZXJ0aWVzW3RoaXMucHJvcF09ITA7Zm9yKGIgaW4gaS5hbmltYXRlZFByb3BlcnRpZXMpaS5hbmltYXRlZFByb3BlcnRpZXNbYl0hPT0hMCYmKGc9ITEpO2lmKGcpe2kub3ZlcmZsb3chPW51bGwmJiFmLnN1cHBvcnQuc2hyaW5rV3JhcEJsb2NrcyYmZi5lYWNoKFsiIiwiWCIsIlkiXSxmdW5jdGlvbihhLGIpe2guc3R5bGVbIm92ZXJmbG93IitiXT1pLm92ZXJmbG93W2FdfSksaS5oaWRlJiZmKGgpLmhpZGUoKTtpZihpLmhpZGV8fGkuc2hvdylmb3IoYiBpbiBpLmFuaW1hdGVkUHJvcGVydGllcylmLnN0eWxlKGgsYixpLm9yaWdbYl0pLGYucmVtb3ZlRGF0YShoLCJmeHNob3ciK2IsITApLGYucmVtb3ZlRGF0YShoLCJ0b2dnbGUiK2IsITApO2Q9aS5jb21wbGV0ZSxkJiYoaS5jb21wbGV0ZT0hMSxkLmNhbGwoaCkpfXJldHVybiExfWkuZHVyYXRpb249PUluZmluaXR5P3RoaXMubm93PWU6KGM9ZS10aGlzLnN0YXJ0VGltZSx0aGlzLnN0YXRlPWMvaS5kdXJhdGlvbix0aGlzLnBvcz1mLmVhc2luZ1tpLmFuaW1hdGVkUHJvcGVydGllc1t0aGlzLnByb3BdXSh0aGlzLnN0YXRlLGMsMCwxLGkuZHVyYXRpb24pLHRoaXMubm93PXRoaXMuc3RhcnQrKHRoaXMuZW5kLXRoaXMuc3RhcnQpKnRoaXMucG9zKSx0aGlzLnVwZGF0ZSgpO3JldHVybiEwfX0sZi5leHRlbmQoZi5meCx7dGljazpmdW5jdGlvbigpe3ZhciBhLGI9Zi50aW1lcnMsYz0wO2Zvcig7YzxiLmxlbmd0aDtjKyspYT1iW2NdLCFhKCkmJmJbY109PT1hJiZiLnNwbGljZShjLS0sMSk7Yi5sZW5ndGh8fGYuZnguc3RvcCgpfSxpbnRlcnZhbDoxMyxzdG9wOmZ1bmN0aW9uKCl7Y2xlYXJJbnRlcnZhbChjcCksY3A9bnVsbH0sc3BlZWRzOntzbG93OjYwMCxmYXN0OjIwMCxfZGVmYXVsdDo0MDB9LHN0ZXA6e29wYWNpdHk6ZnVuY3Rpb24oYSl7Zi5zdHlsZShhLmVsZW0sIm9wYWNpdHkiLGEubm93KX0sX2RlZmF1bHQ6ZnVuY3Rpb24oYSl7YS5lbGVtLnN0eWxlJiZhLmVsZW0uc3R5bGVbYS5wcm9wXSE9bnVsbD9hLmVsZW0uc3R5bGVbYS5wcm9wXT1hLm5vdythLnVuaXQ6YS5lbGVtW2EucHJvcF09YS5ub3d9fX0pLGYuZWFjaChbIndpZHRoIiwiaGVpZ2h0Il0sZnVuY3Rpb24oYSxiKXtmLmZ4LnN0ZXBbYl09ZnVuY3Rpb24oYSl7Zi5zdHlsZShhLmVsZW0sYixNYXRoLm1heCgwLGEubm93KSthLnVuaXQpfX0pLGYuZXhwciYmZi5leHByLmZpbHRlcnMmJihmLmV4cHIuZmlsdGVycy5hbmltYXRlZD1mdW5jdGlvbihhKXtyZXR1cm4gZi5ncmVwKGYudGltZXJzLGZ1bmN0aW9uKGIpe3JldHVybiBhPT09Yi5lbGVtfSkubGVuZ3RofSk7dmFyIGN3PS9edCg/OmFibGV8ZHxoKSQvaSxjeD0vXig/OmJvZHl8aHRtbCkkL2k7ImdldEJvdW5kaW5nQ2xpZW50UmVjdCJpbiBjLmRvY3VtZW50RWxlbWVudD9mLmZuLm9mZnNldD1mdW5jdGlvbihhKXt2YXIgYj10aGlzWzBdLGM7aWYoYSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2Yub2Zmc2V0LnNldE9mZnNldCh0aGlzLGEsYil9KTtpZighYnx8IWIub3duZXJEb2N1bWVudClyZXR1cm4gbnVsbDtpZihiPT09Yi5vd25lckRvY3VtZW50LmJvZHkpcmV0dXJuIGYub2Zmc2V0LmJvZHlPZmZzZXQoYik7dHJ5e2M9Yi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX1jYXRjaChkKXt9dmFyIGU9Yi5vd25lckRvY3VtZW50LGc9ZS5kb2N1bWVudEVsZW1lbnQ7aWYoIWN8fCFmLmNvbnRhaW5zKGcsYikpcmV0dXJuIGM/e3RvcDpjLnRvcCxsZWZ0OmMubGVmdH06e3RvcDowLGxlZnQ6MH07dmFyIGg9ZS5ib2R5LGk9Y3koZSksaj1nLmNsaWVudFRvcHx8aC5jbGllbnRUb3B8fDAsaz1nLmNsaWVudExlZnR8fGguY2xpZW50TGVmdHx8MCxsPWkucGFnZVlPZmZzZXR8fGYuc3VwcG9ydC5ib3hNb2RlbCYmZy5zY3JvbGxUb3B8fGguc2Nyb2xsVG9wLG09aS5wYWdlWE9mZnNldHx8Zi5zdXBwb3J0LmJveE1vZGVsJiZnLnNjcm9sbExlZnR8fGguc2Nyb2xsTGVmdCxuPWMudG9wK2wtaixvPWMubGVmdCttLWs7cmV0dXJue3RvcDpuLGxlZnQ6b319OmYuZm4ub2Zmc2V0PWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXNbMF07aWYoYSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2Yub2Zmc2V0LnNldE9mZnNldCh0aGlzLGEsYil9KTtpZighYnx8IWIub3duZXJEb2N1bWVudClyZXR1cm4gbnVsbDtpZihiPT09Yi5vd25lckRvY3VtZW50LmJvZHkpcmV0dXJuIGYub2Zmc2V0LmJvZHlPZmZzZXQoYik7dmFyIGMsZD1iLm9mZnNldFBhcmVudCxlPWIsZz1iLm93bmVyRG9jdW1lbnQsaD1nLmRvY3VtZW50RWxlbWVudCxpPWcuYm9keSxqPWcuZGVmYXVsdFZpZXcsaz1qP2ouZ2V0Q29tcHV0ZWRTdHlsZShiLG51bGwpOmIuY3VycmVudFN0eWxlLGw9Yi5vZmZzZXRUb3AsbT1iLm9mZnNldExlZnQ7d2hpbGUoKGI9Yi5wYXJlbnROb2RlKSYmYiE9PWkmJmIhPT1oKXtpZihmLnN1cHBvcnQuZml4ZWRQb3NpdGlvbiYmay5wb3NpdGlvbj09PSJmaXhlZCIpYnJlYWs7Yz1qP2ouZ2V0Q29tcHV0ZWRTdHlsZShiLG51bGwpOmIuY3VycmVudFN0eWxlLGwtPWIuc2Nyb2xsVG9wLG0tPWIuc2Nyb2xsTGVmdCxiPT09ZCYmKGwrPWIub2Zmc2V0VG9wLG0rPWIub2Zmc2V0TGVmdCxmLnN1cHBvcnQuZG9lc05vdEFkZEJvcmRlciYmKCFmLnN1cHBvcnQuZG9lc0FkZEJvcmRlckZvclRhYmxlQW5kQ2VsbHN8fCFjdy50ZXN0KGIubm9kZU5hbWUpKSYmKGwrPXBhcnNlRmxvYXQoYy5ib3JkZXJUb3BXaWR0aCl8fDAsbSs9cGFyc2VGbG9hdChjLmJvcmRlckxlZnRXaWR0aCl8fDApLGU9ZCxkPWIub2Zmc2V0UGFyZW50KSxmLnN1cHBvcnQuc3VidHJhY3RzQm9yZGVyRm9yT3ZlcmZsb3dOb3RWaXNpYmxlJiZjLm92ZXJmbG93IT09InZpc2libGUiJiYobCs9cGFyc2VGbG9hdChjLmJvcmRlclRvcFdpZHRoKXx8MCxtKz1wYXJzZUZsb2F0KGMuYm9yZGVyTGVmdFdpZHRoKXx8MCksaz1jfWlmKGsucG9zaXRpb249PT0icmVsYXRpdmUifHxrLnBvc2l0aW9uPT09InN0YXRpYyIpbCs9aS5vZmZzZXRUb3AsbSs9aS5vZmZzZXRMZWZ0O2Yuc3VwcG9ydC5maXhlZFBvc2l0aW9uJiZrLnBvc2l0aW9uPT09ImZpeGVkIiYmKGwrPU1hdGgubWF4KGguc2Nyb2xsVG9wLGkuc2Nyb2xsVG9wKSxtKz1NYXRoLm1heChoLnNjcm9sbExlZnQsaS5zY3JvbGxMZWZ0KSk7cmV0dXJue3RvcDpsLGxlZnQ6bX19LGYub2Zmc2V0PXtib2R5T2Zmc2V0OmZ1bmN0aW9uKGEpe3ZhciBiPWEub2Zmc2V0VG9wLGM9YS5vZmZzZXRMZWZ0O2Yuc3VwcG9ydC5kb2VzTm90SW5jbHVkZU1hcmdpbkluQm9keU9mZnNldCYmKGIrPXBhcnNlRmxvYXQoZi5jc3MoYSwibWFyZ2luVG9wIikpfHwwLGMrPXBhcnNlRmxvYXQoZi5jc3MoYSwibWFyZ2luTGVmdCIpKXx8MCk7cmV0dXJue3RvcDpiLGxlZnQ6Y319LHNldE9mZnNldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9Zi5jc3MoYSwicG9zaXRpb24iKTtkPT09InN0YXRpYyImJihhLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIpO3ZhciBlPWYoYSksZz1lLm9mZnNldCgpLGg9Zi5jc3MoYSwidG9wIiksaT1mLmNzcyhhLCJsZWZ0Iiksaj0oZD09PSJhYnNvbHV0ZSJ8fGQ9PT0iZml4ZWQiKSYmZi5pbkFycmF5KCJhdXRvIixbaCxpXSk+LTEsaz17fSxsPXt9LG0sbjtqPyhsPWUucG9zaXRpb24oKSxtPWwudG9wLG49bC5sZWZ0KToobT1wYXJzZUZsb2F0KGgpfHwwLG49cGFyc2VGbG9hdChpKXx8MCksZi5pc0Z1bmN0aW9uKGIpJiYoYj1iLmNhbGwoYSxjLGcpKSxiLnRvcCE9bnVsbCYmKGsudG9wPWIudG9wLWcudG9wK20pLGIubGVmdCE9bnVsbCYmKGsubGVmdD1iLmxlZnQtZy5sZWZ0K24pLCJ1c2luZyJpbiBiP2IudXNpbmcuY2FsbChhLGspOmUuY3NzKGspfX0sZi5mbi5leHRlbmQoe3Bvc2l0aW9uOmZ1bmN0aW9uKCl7aWYoIXRoaXNbMF0pcmV0dXJuIG51bGw7dmFyIGE9dGhpc1swXSxiPXRoaXMub2Zmc2V0UGFyZW50KCksYz10aGlzLm9mZnNldCgpLGQ9Y3gudGVzdChiWzBdLm5vZGVOYW1lKT97dG9wOjAsbGVmdDowfTpiLm9mZnNldCgpO2MudG9wLT1wYXJzZUZsb2F0KGYuY3NzKGEsIm1hcmdpblRvcCIpKXx8MCxjLmxlZnQtPXBhcnNlRmxvYXQoZi5jc3MoYSwibWFyZ2luTGVmdCIpKXx8MCxkLnRvcCs9cGFyc2VGbG9hdChmLmNzcyhiWzBdLCJib3JkZXJUb3BXaWR0aCIpKXx8MCxkLmxlZnQrPXBhcnNlRmxvYXQoZi5jc3MoYlswXSwiYm9yZGVyTGVmdFdpZHRoIikpfHwwO3JldHVybnt0b3A6Yy50b3AtZC50b3AsbGVmdDpjLmxlZnQtZC5sZWZ0fX0sb2Zmc2V0UGFyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vZmZzZXRQYXJlbnR8fGMuYm9keTt3aGlsZShhJiYhY3gudGVzdChhLm5vZGVOYW1lKSYmZi5jc3MoYSwicG9zaXRpb24iKT09PSJzdGF0aWMiKWE9YS5vZmZzZXRQYXJlbnQ7cmV0dXJuIGF9KX19KSxmLmVhY2goWyJMZWZ0IiwiVG9wIl0sZnVuY3Rpb24oYSxjKXt2YXIgZD0ic2Nyb2xsIitjO2YuZm5bZF09ZnVuY3Rpb24oYyl7dmFyIGUsZztpZihjPT09Yil7ZT10aGlzWzBdO2lmKCFlKXJldHVybiBudWxsO2c9Y3koZSk7cmV0dXJuIGc/InBhZ2VYT2Zmc2V0ImluIGc/Z1thPyJwYWdlWU9mZnNldCI6InBhZ2VYT2Zmc2V0Il06Zi5zdXBwb3J0LmJveE1vZGVsJiZnLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFtkXXx8Zy5kb2N1bWVudC5ib2R5W2RdOmVbZF19cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2c9Y3kodGhpcyksZz9nLnNjcm9sbFRvKGE/ZihnKS5zY3JvbGxMZWZ0KCk6YyxhP2M6ZihnKS5zY3JvbGxUb3AoKSk6dGhpc1tkXT1jfSl9fSksZi5lYWNoKFsiSGVpZ2h0IiwiV2lkdGgiXSxmdW5jdGlvbihhLGMpe3ZhciBkPWMudG9Mb3dlckNhc2UoKTtmLmZuWyJpbm5lciIrY109ZnVuY3Rpb24oKXt2YXIgYT10aGlzWzBdO3JldHVybiBhP2Euc3R5bGU/cGFyc2VGbG9hdChmLmNzcyhhLGQsInBhZGRpbmciKSk6dGhpc1tkXSgpOm51bGx9LGYuZm5bIm91dGVyIitjXT1mdW5jdGlvbihhKXt2YXIgYj10aGlzWzBdO3JldHVybiBiP2Iuc3R5bGU/cGFyc2VGbG9hdChmLmNzcyhiLGQsYT8ibWFyZ2luIjoiYm9yZGVyIikpOnRoaXNbZF0oKTpudWxsfSxmLmZuW2RdPWZ1bmN0aW9uKGEpe3ZhciBlPXRoaXNbMF07aWYoIWUpcmV0dXJuIGE9PW51bGw/bnVsbDp0aGlzO2lmKGYuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3ZhciBjPWYodGhpcyk7Y1tkXShhLmNhbGwodGhpcyxiLGNbZF0oKSkpfSk7aWYoZi5pc1dpbmRvdyhlKSl7dmFyIGc9ZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrY10saD1lLmRvY3VtZW50LmJvZHk7cmV0dXJuIGUuZG9jdW1lbnQuY29tcGF0TW9kZT09PSJDU1MxQ29tcGF0IiYmZ3x8aCYmaFsiY2xpZW50IitjXXx8Z31pZihlLm5vZGVUeXBlPT09OSlyZXR1cm4gTWF0aC5tYXgoZS5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrY10sZS5ib2R5WyJzY3JvbGwiK2NdLGUuZG9jdW1lbnRFbGVtZW50WyJzY3JvbGwiK2NdLGUuYm9keVsib2Zmc2V0IitjXSxlLmRvY3VtZW50RWxlbWVudFsib2Zmc2V0IitjXSk7aWYoYT09PWIpe3ZhciBpPWYuY3NzKGUsZCksaj1wYXJzZUZsb2F0KGkpO3JldHVybiBmLmlzTnVtZXJpYyhqKT9qOml9cmV0dXJuIHRoaXMuY3NzKGQsdHlwZW9mIGE9PSJzdHJpbmciP2E6YSsicHgiKX19KSxhLmpRdWVyeT1hLiQ9Zix0eXBlb2YgZGVmaW5lPT0iZnVuY3Rpb24iJiZkZWZpbmUuYW1kJiZkZWZpbmUuYW1kLmpRdWVyeSYmZGVmaW5lKCJqcXVlcnkiLFtdLGZ1bmN0aW9uKCl7cmV0dXJuIGZ9KX0pKHdpbmRvdyk7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9qcy9qcXVlcnkuY29sb3Jib3guanMgYi9kb2NzL2pzL2pxdWVyeS5jb2xvcmJveC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yODY3M2E0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9qcy9qcXVlcnkuY29sb3Jib3guanMKQEAgLTAsMCArMSw5MjYgQEAKKy8vIENvbG9yQm94IHYxLjMuMTkuMyAtIGpRdWVyeSBsaWdodGJveCBwbHVnaW4KKy8vIChjKSAyMDExIEphY2sgTW9vcmUgLSBqYWNrbG1vb3JlLmNvbQorLy8gTGljZW5zZTogaHR0cDovL3d3dy5vcGVuc291cmNlLm9yZy9saWNlbnNlcy9taXQtbGljZW5zZS5waHAKKyhmdW5jdGlvbiAoJCwgZG9jdW1lbnQsIHdpbmRvdykgeworCXZhcgorCS8vIERlZmF1bHQgc2V0dGluZ3Mgb2JqZWN0LgkKKwkvLyBTZWUgaHR0cDovL2phY2tsbW9vcmUuY29tL2NvbG9yYm94IGZvciBkZXRhaWxzLgorCWRlZmF1bHRzID0geworCQl0cmFuc2l0aW9uOiAiZWxhc3RpYyIsCisJCXNwZWVkOiAzMDAsCisJCXdpZHRoOiBmYWxzZSwKKwkJaW5pdGlhbFdpZHRoOiAiNjAwIiwKKwkJaW5uZXJXaWR0aDogZmFsc2UsCisJCW1heFdpZHRoOiBmYWxzZSwKKwkJaGVpZ2h0OiBmYWxzZSwKKwkJaW5pdGlhbEhlaWdodDogIjQ1MCIsCisJCWlubmVySGVpZ2h0OiBmYWxzZSwKKwkJbWF4SGVpZ2h0OiBmYWxzZSwKKwkJc2NhbGVQaG90b3M6IHRydWUsCisJCXNjcm9sbGluZzogdHJ1ZSwKKwkJaW5saW5lOiBmYWxzZSwKKwkJaHRtbDogZmFsc2UsCisJCWlmcmFtZTogZmFsc2UsCisJCWZhc3RJZnJhbWU6IHRydWUsCisJCXBob3RvOiBmYWxzZSwKKwkJaHJlZjogZmFsc2UsCisJCXRpdGxlOiBmYWxzZSwKKwkJcmVsOiBmYWxzZSwKKwkJb3BhY2l0eTogMC45LAorCQlwcmVsb2FkaW5nOiB0cnVlLAorCisJCWN1cnJlbnQ6ICJpbWFnZSB7Y3VycmVudH0gb2Yge3RvdGFsfSIsCisJCXByZXZpb3VzOiAicHJldmlvdXMiLAorCQluZXh0OiAibmV4dCIsCisJCWNsb3NlOiAiY2xvc2UiLAorCQl4aHJFcnJvcjogIlRoaXMgY29udGVudCBmYWlsZWQgdG8gbG9hZC4iLAorCQlpbWdFcnJvcjogIlRoaXMgaW1hZ2UgZmFpbGVkIHRvIGxvYWQuIiwKKworCQlvcGVuOiBmYWxzZSwKKwkJcmV0dXJuRm9jdXM6IHRydWUsCisJCXJlcG9zaXRpb246IHRydWUsCisJCWxvb3A6IHRydWUsCisJCXNsaWRlc2hvdzogZmFsc2UsCisJCXNsaWRlc2hvd0F1dG86IHRydWUsCisJCXNsaWRlc2hvd1NwZWVkOiAyNTAwLAorCQlzbGlkZXNob3dTdGFydDogInN0YXJ0IHNsaWRlc2hvdyIsCisJCXNsaWRlc2hvd1N0b3A6ICJzdG9wIHNsaWRlc2hvdyIsCisJCW9uT3BlbjogZmFsc2UsCisJCW9uTG9hZDogZmFsc2UsCisJCW9uQ29tcGxldGU6IGZhbHNlLAorCQlvbkNsZWFudXA6IGZhbHNlLAorCQlvbkNsb3NlZDogZmFsc2UsCisJCW92ZXJsYXlDbG9zZTogdHJ1ZSwJCQorCQllc2NLZXk6IHRydWUsCisJCWFycm93S2V5OiB0cnVlLAorCQl0b3A6IGZhbHNlLAorCQlib3R0b206IGZhbHNlLAorCQlsZWZ0OiBmYWxzZSwKKwkJcmlnaHQ6IGZhbHNlLAorCQlmaXhlZDogZmFsc2UsCisJCWRhdGE6IHVuZGVmaW5lZAorCX0sCisJCisJLy8gQWJzdHJhY3RpbmcgdGhlIEhUTUwgYW5kIGV2ZW50IGlkZW50aWZpZXJzIGZvciBlYXN5IHJlYnJhbmRpbmcKKwljb2xvcmJveCA9ICdjb2xvcmJveCcsCisJcHJlZml4ID0gJ2Nib3gnLAorCWJveEVsZW1lbnQgPSBwcmVmaXggKyAnRWxlbWVudCcsCisJCisJLy8gRXZlbnRzCQorCWV2ZW50X29wZW4gPSBwcmVmaXggKyAnX29wZW4nLAorCWV2ZW50X2xvYWQgPSBwcmVmaXggKyAnX2xvYWQnLAorCWV2ZW50X2NvbXBsZXRlID0gcHJlZml4ICsgJ19jb21wbGV0ZScsCisJZXZlbnRfY2xlYW51cCA9IHByZWZpeCArICdfY2xlYW51cCcsCisJZXZlbnRfY2xvc2VkID0gcHJlZml4ICsgJ19jbG9zZWQnLAorCWV2ZW50X3B1cmdlID0gcHJlZml4ICsgJ19wdXJnZScsCisJCisJLy8gU3BlY2lhbCBIYW5kbGluZyBmb3IgSUUKKwlpc0lFID0gISQuc3VwcG9ydC5vcGFjaXR5ICYmICEkLnN1cHBvcnQuc3R5bGUsIC8vIElFNyAmIElFOAorCWlzSUU2ID0gaXNJRSAmJiAhd2luZG93LlhNTEh0dHBSZXF1ZXN0LCAvLyBJRTYKKwlldmVudF9pZTYgPSBwcmVmaXggKyAnX0lFNicsCisKKwkvLyBDYWNoZWQgalF1ZXJ5IE9iamVjdCBWYXJpYWJsZXMKKwkkb3ZlcmxheSwKKwkkYm94LAorCSR3cmFwLAorCSRjb250ZW50LAorCSR0b3BCb3JkZXIsCisJJGxlZnRCb3JkZXIsCisJJHJpZ2h0Qm9yZGVyLAorCSRib3R0b21Cb3JkZXIsCisJJHJlbGF0ZWQsCisJJHdpbmRvdywKKwkkbG9hZGVkLAorCSRsb2FkaW5nQmF5LAorCSRsb2FkaW5nT3ZlcmxheSwKKwkkdGl0bGUsCisJJGN1cnJlbnQsCisJJHNsaWRlc2hvdywKKwkkbmV4dCwKKwkkcHJldiwKKwkkY2xvc2UsCisJJGdyb3VwQ29udHJvbHMsCisJCisJLy8gVmFyaWFibGVzIGZvciBjYWNoZWQgdmFsdWVzIG9yIHVzZSBhY3Jvc3MgbXVsdGlwbGUgZnVuY3Rpb25zCisJc2V0dGluZ3MsCisJaW50ZXJmYWNlSGVpZ2h0LAorCWludGVyZmFjZVdpZHRoLAorCWxvYWRlZEhlaWdodCwKKwlsb2FkZWRXaWR0aCwKKwllbGVtZW50LAorCWluZGV4LAorCXBob3RvLAorCW9wZW4sCisJYWN0aXZlLAorCWNsb3NpbmcsCisJbG9hZGluZ1RpbWVyLAorCXB1YmxpY01ldGhvZCwKKwlkaXYgPSAiZGl2IiwKKwlpbml0OworCisJLy8gKioqKioqKioqKioqKioqKgorCS8vIEhFTFBFUiBGVU5DVElPTlMKKwkvLyAqKioqKioqKioqKioqKioqCisJCisJLy8gQ29udmllbmNlIGZ1bmN0aW9uIGZvciBjcmVhdGluZyBuZXcgalF1ZXJ5IG9iamVjdHMKKwlmdW5jdGlvbiAkdGFnKHRhZywgaWQsIGNzcykgeworCQl2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodGFnKTsKKworCQlpZiAoaWQpIHsKKwkJCWVsZW1lbnQuaWQgPSBwcmVmaXggKyBpZDsKKwkJfQorCisJCWlmIChjc3MpIHsKKwkJCWVsZW1lbnQuc3R5bGUuY3NzVGV4dCA9IGNzczsKKwkJfQorCisJCXJldHVybiAkKGVsZW1lbnQpOworCX0KKworCS8vIERldGVybWluZSB0aGUgbmV4dCBhbmQgcHJldmlvdXMgbWVtYmVycyBpbiBhIGdyb3VwLgorCWZ1bmN0aW9uIGdldEluZGV4KGluY3JlbWVudCkgeworCQl2YXIgCisJCW1heCA9ICRyZWxhdGVkLmxlbmd0aCwgCisJCW5ld0luZGV4ID0gKGluZGV4ICsgaW5jcmVtZW50KSAlIG1heDsKKwkJCisJCXJldHVybiAobmV3SW5kZXggPCAwKSA/IG1heCArIG5ld0luZGV4IDogbmV3SW5kZXg7CisJfQorCisJLy8gQ29udmVydCAnJScgYW5kICdweCcgdmFsdWVzIHRvIGludGVnZXJzCisJZnVuY3Rpb24gc2V0U2l6ZShzaXplLCBkaW1lbnNpb24pIHsKKwkJcmV0dXJuIE1hdGgucm91bmQoKC8lLy50ZXN0KHNpemUpID8gKChkaW1lbnNpb24gPT09ICd4JyA/ICR3aW5kb3cud2lkdGgoKSA6ICR3aW5kb3cuaGVpZ2h0KCkpIC8gMTAwKSA6IDEpICogcGFyc2VJbnQoc2l6ZSwgMTApKTsKKwl9CisJCisJLy8gQ2hlY2tzIGFuIGhyZWYgdG8gc2VlIGlmIGl0IGlzIGEgcGhvdG8uCisJLy8gVGhlcmUgaXMgYSBmb3JjZSBwaG90byBvcHRpb24gKHBob3RvOiB0cnVlKSBmb3IgaHJlZnMgdGhhdCBjYW5ub3QgYmUgbWF0Y2hlZCBieSB0aGlzIHJlZ2V4LgorCWZ1bmN0aW9uIGlzSW1hZ2UodXJsKSB7CisJCXJldHVybiBzZXR0aW5ncy5waG90byB8fCAvXC4oZ2lmfHBuZ3xqcGU/Z3xibXB8aWNvKSgoI3xcPykuKik/JC9pLnRlc3QodXJsKTsKKwl9CisJCisJLy8gQXNzaWducyBmdW5jdGlvbiByZXN1bHRzIHRvIHRoZWlyIHJlc3BlY3RpdmUgcHJvcGVydGllcworCWZ1bmN0aW9uIG1ha2VTZXR0aW5ncygpIHsKKwkJdmFyIGksCisJCQlkYXRhID0gJC5kYXRhKGVsZW1lbnQsIGNvbG9yYm94KTsKKwkJCisJCWlmIChkYXRhID09IG51bGwpIHsKKwkJCXNldHRpbmdzID0gJC5leHRlbmQoe30sIGRlZmF1bHRzKTsKKwkJCWlmIChjb25zb2xlICYmIGNvbnNvbGUubG9nKSB7CisJCQkJY29uc29sZS5sb2coJ0Vycm9yOiBjYm94RWxlbWVudCBtaXNzaW5nIHNldHRpbmdzIG9iamVjdCcpCisJCQl9CisJCX0gZWxzZSB7CisJCQlzZXR0aW5ncyA9ICQuZXh0ZW5kKHt9LCBkYXRhKTsgICAgCQkKKwkJfQorCQkKKwkJZm9yIChpIGluIHNldHRpbmdzKSB7CisJCQlpZiAoJC5pc0Z1bmN0aW9uKHNldHRpbmdzW2ldKSAmJiBpLnNsaWNlKDAsIDIpICE9PSAnb24nKSB7IC8vIGNoZWNrcyB0byBtYWtlIHN1cmUgdGhlIGZ1bmN0aW9uIGlzbid0IG9uZSBvZiB0aGUgY2FsbGJhY2tzLCB0aGV5IHdpbGwgYmUgaGFuZGxlZCBhdCB0aGUgYXBwcm9wcmlhdGUgdGltZS4KKwkJCQlzZXR0aW5nc1tpXSA9IHNldHRpbmdzW2ldLmNhbGwoZWxlbWVudCk7CisJCQl9CisJCX0KKwkJCisJCXNldHRpbmdzLnJlbCA9IHNldHRpbmdzLnJlbCB8fCBlbGVtZW50LnJlbCB8fCAnbm9mb2xsb3cnOworCQlzZXR0aW5ncy5ocmVmID0gc2V0dGluZ3MuaHJlZiB8fCAkKGVsZW1lbnQpLmF0dHIoJ2hyZWYnKTsKKwkJc2V0dGluZ3MudGl0bGUgPSBzZXR0aW5ncy50aXRsZSB8fCBlbGVtZW50LnRpdGxlOworCQkKKwkJaWYgKHR5cGVvZiBzZXR0aW5ncy5ocmVmID09PSAic3RyaW5nIikgeworCQkJc2V0dGluZ3MuaHJlZiA9ICQudHJpbShzZXR0aW5ncy5ocmVmKTsKKwkJfQorCX0KKworCWZ1bmN0aW9uIHRyaWdnZXIoZXZlbnQsIGNhbGxiYWNrKSB7CisJCSQuZXZlbnQudHJpZ2dlcihldmVudCk7CisJCWlmIChjYWxsYmFjaykgeworCQkJY2FsbGJhY2suY2FsbChlbGVtZW50KTsKKwkJfQorCX0KKworCS8vIFNsaWRlc2hvdyBmdW5jdGlvbmFsaXR5CisJZnVuY3Rpb24gc2xpZGVzaG93KCkgeworCQl2YXIKKwkJdGltZU91dCwKKwkJY2xhc3NOYW1lID0gcHJlZml4ICsgIlNsaWRlc2hvd18iLAorCQljbGljayA9ICJjbGljay4iICsgcHJlZml4LAorCQlzdGFydCwKKwkJc3RvcCwKKwkJY2xlYXI7CisJCQorCQlpZiAoc2V0dGluZ3Muc2xpZGVzaG93ICYmICRyZWxhdGVkWzFdKSB7CisJCQlzdGFydCA9IGZ1bmN0aW9uICgpIHsKKwkJCQkkc2xpZGVzaG93CisJCQkJCS50ZXh0KHNldHRpbmdzLnNsaWRlc2hvd1N0b3ApCisJCQkJCS51bmJpbmQoY2xpY2spCisJCQkJCS5iaW5kKGV2ZW50X2NvbXBsZXRlLCBmdW5jdGlvbiAoKSB7CisJCQkJCQlpZiAoc2V0dGluZ3MubG9vcCB8fCAkcmVsYXRlZFtpbmRleCArIDFdKSB7CisJCQkJCQkJdGltZU91dCA9IHNldFRpbWVvdXQocHVibGljTWV0aG9kLm5leHQsIHNldHRpbmdzLnNsaWRlc2hvd1NwZWVkKTsKKwkJCQkJCX0KKwkJCQkJfSkKKwkJCQkJLmJpbmQoZXZlbnRfbG9hZCwgZnVuY3Rpb24gKCkgeworCQkJCQkJY2xlYXJUaW1lb3V0KHRpbWVPdXQpOworCQkJCQl9KQorCQkJCQkub25lKGNsaWNrICsgJyAnICsgZXZlbnRfY2xlYW51cCwgc3RvcCk7CisJCQkJJGJveC5yZW1vdmVDbGFzcyhjbGFzc05hbWUgKyAib2ZmIikuYWRkQ2xhc3MoY2xhc3NOYW1lICsgIm9uIik7CisJCQkJdGltZU91dCA9IHNldFRpbWVvdXQocHVibGljTWV0aG9kLm5leHQsIHNldHRpbmdzLnNsaWRlc2hvd1NwZWVkKTsKKwkJCX07CisJCQkKKwkJCXN0b3AgPSBmdW5jdGlvbiAoKSB7CisJCQkJY2xlYXJUaW1lb3V0KHRpbWVPdXQpOworCQkJCSRzbGlkZXNob3cKKwkJCQkJLnRleHQoc2V0dGluZ3Muc2xpZGVzaG93U3RhcnQpCisJCQkJCS51bmJpbmQoW2V2ZW50X2NvbXBsZXRlLCBldmVudF9sb2FkLCBldmVudF9jbGVhbnVwLCBjbGlja10uam9pbignICcpKQorCQkJCQkub25lKGNsaWNrLCBmdW5jdGlvbiAoKSB7CisJCQkJCQlwdWJsaWNNZXRob2QubmV4dCgpOworCQkJCQkJc3RhcnQoKTsKKwkJCQkJfSk7CisJCQkJJGJveC5yZW1vdmVDbGFzcyhjbGFzc05hbWUgKyAib24iKS5hZGRDbGFzcyhjbGFzc05hbWUgKyAib2ZmIik7CisJCQl9OworCQkJCisJCQlpZiAoc2V0dGluZ3Muc2xpZGVzaG93QXV0bykgeworCQkJCXN0YXJ0KCk7CisJCQl9IGVsc2UgeworCQkJCXN0b3AoKTsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCSRib3gucmVtb3ZlQ2xhc3MoY2xhc3NOYW1lICsgIm9mZiAiICsgY2xhc3NOYW1lICsgIm9uIik7CisJCX0KKwl9CisKKwlmdW5jdGlvbiBsYXVuY2godGFyZ2V0KSB7CisJCWlmICghY2xvc2luZykgeworCQkJCisJCQllbGVtZW50ID0gdGFyZ2V0OworCQkJCisJCQltYWtlU2V0dGluZ3MoKTsKKwkJCQorCQkJJHJlbGF0ZWQgPSAkKGVsZW1lbnQpOworCQkJCisJCQlpbmRleCA9IDA7CisJCQkKKwkJCWlmIChzZXR0aW5ncy5yZWwgIT09ICdub2ZvbGxvdycpIHsKKwkJCQkkcmVsYXRlZCA9ICQoJy4nICsgYm94RWxlbWVudCkuZmlsdGVyKGZ1bmN0aW9uICgpIHsKKwkJCQkJdmFyIGRhdGEgPSAkLmRhdGEodGhpcywgY29sb3Jib3gpLCAKKwkJCQkJCXJlbFJlbGF0ZWQ7CisKKwkJCQkJaWYgKGRhdGEpIHsKKwkJCQkJCXJlbFJlbGF0ZWQgPSAgZGF0YS5yZWwgfHwgdGhpcy5yZWw7CisJCQkJCX0KKwkJCQkJCisJCQkJCXJldHVybiAocmVsUmVsYXRlZCA9PT0gc2V0dGluZ3MucmVsKTsKKwkJCQl9KTsKKwkJCQlpbmRleCA9ICRyZWxhdGVkLmluZGV4KGVsZW1lbnQpOworCQkJCQorCQkJCS8vIENoZWNrIGRpcmVjdCBjYWxscyB0byBDb2xvckJveC4KKwkJCQlpZiAoaW5kZXggPT09IC0xKSB7CisJCQkJCSRyZWxhdGVkID0gJHJlbGF0ZWQuYWRkKGVsZW1lbnQpOworCQkJCQlpbmRleCA9ICRyZWxhdGVkLmxlbmd0aCAtIDE7CisJCQkJfQorCQkJfQorCQkJCisJCQlpZiAoIW9wZW4pIHsKKwkJCQlvcGVuID0gYWN0aXZlID0gdHJ1ZTsgLy8gUHJldmVudHMgdGhlIHBhZ2UtY2hhbmdlIGFjdGlvbiBmcm9tIHF1ZXVpbmcgdXAgaWYgdGhlIHZpc2l0b3IgaG9sZHMgZG93biB0aGUgbGVmdCBvciByaWdodCBrZXlzLgorCQkJCQorCQkJCSRib3guc2hvdygpOworCQkJCQorCQkJCWlmIChzZXR0aW5ncy5yZXR1cm5Gb2N1cykgeworCQkJCQkkKGVsZW1lbnQpLmJsdXIoKS5vbmUoZXZlbnRfY2xvc2VkLCBmdW5jdGlvbiAoKSB7CisJCQkJCQkkKHRoaXMpLmZvY3VzKCk7CisJCQkJCX0pOworCQkJCX0KKwkJCQkKKwkJCQkvLyArc2V0dGluZ3Mub3BhY2l0eSBhdm9pZHMgYSBwcm9ibGVtIGluIElFIHdoZW4gdXNpbmcgbm9uLXplcm8tcHJlZml4ZWQtc3RyaW5nLXZhbHVlcywgbGlrZSAnLjUnCisJCQkJJG92ZXJsYXkuY3NzKHsib3BhY2l0eSI6ICtzZXR0aW5ncy5vcGFjaXR5LCAiY3Vyc29yIjogc2V0dGluZ3Mub3ZlcmxheUNsb3NlID8gInBvaW50ZXIiIDogImF1dG8ifSkuc2hvdygpOworCQkJCQorCQkJCS8vIE9wZW5zIGluaXRhbCBlbXB0eSBDb2xvckJveCBwcmlvciB0byBjb250ZW50IGJlaW5nIGxvYWRlZC4KKwkJCQlzZXR0aW5ncy53ID0gc2V0U2l6ZShzZXR0aW5ncy5pbml0aWFsV2lkdGgsICd4Jyk7CisJCQkJc2V0dGluZ3MuaCA9IHNldFNpemUoc2V0dGluZ3MuaW5pdGlhbEhlaWdodCwgJ3knKTsKKwkJCQlwdWJsaWNNZXRob2QucG9zaXRpb24oKTsKKwkJCQkKKwkJCQlpZiAoaXNJRTYpIHsKKwkJCQkJJHdpbmRvdy5iaW5kKCdyZXNpemUuJyArIGV2ZW50X2llNiArICcgc2Nyb2xsLicgKyBldmVudF9pZTYsIGZ1bmN0aW9uICgpIHsKKwkJCQkJCSRvdmVybGF5LmNzcyh7d2lkdGg6ICR3aW5kb3cud2lkdGgoKSwgaGVpZ2h0OiAkd2luZG93LmhlaWdodCgpLCB0b3A6ICR3aW5kb3cuc2Nyb2xsVG9wKCksIGxlZnQ6ICR3aW5kb3cuc2Nyb2xsTGVmdCgpfSk7CisJCQkJCX0pLnRyaWdnZXIoJ3Jlc2l6ZS4nICsgZXZlbnRfaWU2KTsKKwkJCQl9CisJCQkJCisJCQkJdHJpZ2dlcihldmVudF9vcGVuLCBzZXR0aW5ncy5vbk9wZW4pOworCQkJCQorCQkJCSRncm91cENvbnRyb2xzLmFkZCgkdGl0bGUpLmhpZGUoKTsKKwkJCQkKKwkJCQkkY2xvc2UuaHRtbChzZXR0aW5ncy5jbG9zZSkuc2hvdygpOworCQkJfQorCQkJCisJCQlwdWJsaWNNZXRob2QubG9hZCh0cnVlKTsKKwkJfQorCX0KKworCS8vIENvbG9yQm94J3MgbWFya3VwIG5lZWRzIHRvIGJlIGFkZGVkIHRvIHRoZSBET00gcHJpb3IgdG8gYmVpbmcgY2FsbGVkCisJLy8gc28gdGhhdCB0aGUgYnJvd3NlciB3aWxsIGdvIGFoZWFkIGFuZCBsb2FkIHRoZSBDU1MgYmFja2dyb3VuZCBpbWFnZXMuCisJZnVuY3Rpb24gYXBwZW5kSFRNTCgpIHsKKwkJaWYgKCEkYm94ICYmIGRvY3VtZW50LmJvZHkpIHsKKwkJCWluaXQgPSBmYWxzZTsKKworCQkJJHdpbmRvdyA9ICQod2luZG93KTsKKwkJCSRib3ggPSAkdGFnKGRpdikuYXR0cih7aWQ6IGNvbG9yYm94LCAnY2xhc3MnOiBpc0lFID8gcHJlZml4ICsgKGlzSUU2ID8gJ0lFNicgOiAnSUUnKSA6ICcnfSkuaGlkZSgpOworCQkJJG92ZXJsYXkgPSAkdGFnKGRpdiwgIk92ZXJsYXkiLCBpc0lFNiA/ICdwb3NpdGlvbjphYnNvbHV0ZScgOiAnJykuaGlkZSgpOworCQkJJHdyYXAgPSAkdGFnKGRpdiwgIldyYXBwZXIiKTsKKwkJCSRjb250ZW50ID0gJHRhZyhkaXYsICJDb250ZW50IikuYXBwZW5kKAorCQkJCSRsb2FkZWQgPSAkdGFnKGRpdiwgIkxvYWRlZENvbnRlbnQiLCAnd2lkdGg6MDsgaGVpZ2h0OjA7IG92ZXJmbG93OmhpZGRlbicpLAorCQkJCSRsb2FkaW5nT3ZlcmxheSA9ICR0YWcoZGl2LCAiTG9hZGluZ092ZXJsYXkiKS5hZGQoJHRhZyhkaXYsICJMb2FkaW5nR3JhcGhpYyIpKSwKKwkJCQkkdGl0bGUgPSAkdGFnKGRpdiwgIlRpdGxlIiksCisJCQkJJGN1cnJlbnQgPSAkdGFnKGRpdiwgIkN1cnJlbnQiKSwKKwkJCQkkbmV4dCA9ICR0YWcoZGl2LCAiTmV4dCIpLAorCQkJCSRwcmV2ID0gJHRhZyhkaXYsICJQcmV2aW91cyIpLAorCQkJCSRzbGlkZXNob3cgPSAkdGFnKGRpdiwgIlNsaWRlc2hvdyIpLmJpbmQoZXZlbnRfb3Blbiwgc2xpZGVzaG93KSwKKwkJCQkkY2xvc2UgPSAkdGFnKGRpdiwgIkNsb3NlIikKKwkJCSk7CisJCQkKKwkJCSR3cmFwLmFwcGVuZCggLy8gVGhlIDN4MyBHcmlkIHRoYXQgbWFrZXMgdXAgQ29sb3JCb3gKKwkJCQkkdGFnKGRpdikuYXBwZW5kKAorCQkJCQkkdGFnKGRpdiwgIlRvcExlZnQiKSwKKwkJCQkJJHRvcEJvcmRlciA9ICR0YWcoZGl2LCAiVG9wQ2VudGVyIiksCisJCQkJCSR0YWcoZGl2LCAiVG9wUmlnaHQiKQorCQkJCSksCisJCQkJJHRhZyhkaXYsIGZhbHNlLCAnY2xlYXI6bGVmdCcpLmFwcGVuZCgKKwkJCQkJJGxlZnRCb3JkZXIgPSAkdGFnKGRpdiwgIk1pZGRsZUxlZnQiKSwKKwkJCQkJJGNvbnRlbnQsCisJCQkJCSRyaWdodEJvcmRlciA9ICR0YWcoZGl2LCAiTWlkZGxlUmlnaHQiKQorCQkJCSksCisJCQkJJHRhZyhkaXYsIGZhbHNlLCAnY2xlYXI6bGVmdCcpLmFwcGVuZCgKKwkJCQkJJHRhZyhkaXYsICJCb3R0b21MZWZ0IiksCisJCQkJCSRib3R0b21Cb3JkZXIgPSAkdGFnKGRpdiwgIkJvdHRvbUNlbnRlciIpLAorCQkJCQkkdGFnKGRpdiwgIkJvdHRvbVJpZ2h0IikKKwkJCQkpCisJCQkpLmZpbmQoJ2RpdiBkaXYnKS5jc3MoeydmbG9hdCc6ICdsZWZ0J30pOworCQkJCisJCQkkbG9hZGluZ0JheSA9ICR0YWcoZGl2LCBmYWxzZSwgJ3Bvc2l0aW9uOmFic29sdXRlOyB3aWR0aDo5OTk5cHg7IHZpc2liaWxpdHk6aGlkZGVuOyBkaXNwbGF5Om5vbmUnKTsKKwkJCQorCQkJJGdyb3VwQ29udHJvbHMgPSAkbmV4dC5hZGQoJHByZXYpLmFkZCgkY3VycmVudCkuYWRkKCRzbGlkZXNob3cpOworCisJCQkkKGRvY3VtZW50LmJvZHkpLmFwcGVuZCgkb3ZlcmxheSwgJGJveC5hcHBlbmQoJHdyYXAsICRsb2FkaW5nQmF5KSk7CisJCX0KKwl9CisKKwkvLyBBZGQgQ29sb3JCb3gncyBldmVudCBiaW5kaW5ncworCWZ1bmN0aW9uIGFkZEJpbmRpbmdzKCkgeworCQlpZiAoJGJveCkgeworCQkJaWYgKCFpbml0KSB7CisJCQkJaW5pdCA9IHRydWU7CisKKwkJCQkvLyBDYWNoZSB2YWx1ZXMgbmVlZGVkIGZvciBzaXplIGNhbGN1bGF0aW9ucworCQkJCWludGVyZmFjZUhlaWdodCA9ICR0b3BCb3JkZXIuaGVpZ2h0KCkgKyAkYm90dG9tQm9yZGVyLmhlaWdodCgpICsgJGNvbnRlbnQub3V0ZXJIZWlnaHQodHJ1ZSkgLSAkY29udGVudC5oZWlnaHQoKTsvL1N1YnRyYWN0aW9uIG5lZWRlZCBmb3IgSUU2CisJCQkJaW50ZXJmYWNlV2lkdGggPSAkbGVmdEJvcmRlci53aWR0aCgpICsgJHJpZ2h0Qm9yZGVyLndpZHRoKCkgKyAkY29udGVudC5vdXRlcldpZHRoKHRydWUpIC0gJGNvbnRlbnQud2lkdGgoKTsKKwkJCQlsb2FkZWRIZWlnaHQgPSAkbG9hZGVkLm91dGVySGVpZ2h0KHRydWUpOworCQkJCWxvYWRlZFdpZHRoID0gJGxvYWRlZC5vdXRlcldpZHRoKHRydWUpOworCQkJCQorCQkJCS8vIFNldHRpbmcgcGFkZGluZyB0byByZW1vdmUgdGhlIG5lZWQgdG8gZG8gc2l6ZSBjb252ZXJzaW9ucyBkdXJpbmcgdGhlIGFuaW1hdGlvbiBzdGVwLgorCQkJCSRib3guY3NzKHsicGFkZGluZy1ib3R0b20iOiBpbnRlcmZhY2VIZWlnaHQsICJwYWRkaW5nLXJpZ2h0IjogaW50ZXJmYWNlV2lkdGh9KTsKKworCQkJCS8vIEFub255bW91cyBmdW5jdGlvbnMgaGVyZSBrZWVwIHRoZSBwdWJsaWMgbWV0aG9kIGZyb20gYmVpbmcgY2FjaGVkLCB0aGVyZWJ5IGFsbG93aW5nIHRoZW0gdG8gYmUgcmVkZWZpbmVkIG9uIHRoZSBmbHkuCisJCQkJJG5leHQuY2xpY2soZnVuY3Rpb24gKCkgeworCQkJCQlwdWJsaWNNZXRob2QubmV4dCgpOworCQkJCX0pOworCQkJCSRwcmV2LmNsaWNrKGZ1bmN0aW9uICgpIHsKKwkJCQkJcHVibGljTWV0aG9kLnByZXYoKTsKKwkJCQl9KTsKKwkJCQkkY2xvc2UuY2xpY2soZnVuY3Rpb24gKCkgeworCQkJCQlwdWJsaWNNZXRob2QuY2xvc2UoKTsKKwkJCQl9KTsKKwkJCQkkb3ZlcmxheS5jbGljayhmdW5jdGlvbiAoKSB7CisJCQkJCWlmIChzZXR0aW5ncy5vdmVybGF5Q2xvc2UpIHsKKwkJCQkJCXB1YmxpY01ldGhvZC5jbG9zZSgpOworCQkJCQl9CisJCQkJfSk7CisJCQkJCisJCQkJLy8gS2V5IEJpbmRpbmdzCisJCQkJJChkb2N1bWVudCkuYmluZCgna2V5ZG93bi4nICsgcHJlZml4LCBmdW5jdGlvbiAoZSkgeworCQkJCQl2YXIga2V5ID0gZS5rZXlDb2RlOworCQkJCQlpZiAob3BlbiAmJiBzZXR0aW5ncy5lc2NLZXkgJiYga2V5ID09PSAyNykgeworCQkJCQkJZS5wcmV2ZW50RGVmYXVsdCgpOworCQkJCQkJcHVibGljTWV0aG9kLmNsb3NlKCk7CisJCQkJCX0KKwkJCQkJaWYgKG9wZW4gJiYgc2V0dGluZ3MuYXJyb3dLZXkgJiYgJHJlbGF0ZWRbMV0pIHsKKwkJCQkJCWlmIChrZXkgPT09IDM3KSB7CisJCQkJCQkJZS5wcmV2ZW50RGVmYXVsdCgpOworCQkJCQkJCSRwcmV2LmNsaWNrKCk7CisJCQkJCQl9IGVsc2UgaWYgKGtleSA9PT0gMzkpIHsKKwkJCQkJCQllLnByZXZlbnREZWZhdWx0KCk7CisJCQkJCQkJJG5leHQuY2xpY2soKTsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCX0pOworCisJCQkJJCgnLicgKyBib3hFbGVtZW50LCBkb2N1bWVudCkubGl2ZSgnY2xpY2snLCBmdW5jdGlvbiAoZSkgeworCQkJCQkvLyBpZ25vcmUgbm9uLWxlZnQtbW91c2UtY2xpY2tzIGFuZCBjbGlja3MgbW9kaWZpZWQgd2l0aCBjdHJsIC8gY29tbWFuZCwgc2hpZnQsIG9yIGFsdC4KKwkJCQkJLy8gU2VlOiBodHRwOi8vamFja2xtb29yZS5jb20vbm90ZXMvY2xpY2stZXZlbnRzLworCQkJCQlpZiAoIShlLndoaWNoID4gMSB8fCBlLnNoaWZ0S2V5IHx8IGUuYWx0S2V5IHx8IGUubWV0YUtleSkpIHsKKwkJCQkJCWUucHJldmVudERlZmF1bHQoKTsKKwkJCQkJCWxhdW5jaCh0aGlzKTsKKwkJCQkJfQorCQkJCX0pOworCQkJfQorCQkJcmV0dXJuIHRydWU7CisJCX0KKwkJcmV0dXJuIGZhbHNlOworCX0KKworCS8vIERvbid0IGRvIGFueXRoaW5nIGlmIENvbG9yQm94IGFscmVhZHkgZXhpc3RzLgorCWlmICgkLmNvbG9yYm94KSB7CisJCXJldHVybjsKKwl9CisKKwkvLyBBcHBlbmQgdGhlIEhUTUwgd2hlbiB0aGUgRE9NIGxvYWRzCisJJChhcHBlbmRIVE1MKTsKKworCisJLy8gKioqKioqKioqKioqKioqKgorCS8vIFBVQkxJQyBGVU5DVElPTlMKKwkvLyBVc2FnZSBmb3JtYXQ6ICQuZm4uY29sb3Jib3guY2xvc2UoKTsKKwkvLyBVc2FnZSBmcm9tIHdpdGhpbiBhbiBpZnJhbWU6IHBhcmVudC4kLmZuLmNvbG9yYm94LmNsb3NlKCk7CisJLy8gKioqKioqKioqKioqKioqKgorCQorCXB1YmxpY01ldGhvZCA9ICQuZm5bY29sb3Jib3hdID0gJFtjb2xvcmJveF0gPSBmdW5jdGlvbiAob3B0aW9ucywgY2FsbGJhY2spIHsKKwkJdmFyICR0aGlzID0gdGhpczsKKwkJCisJCW9wdGlvbnMgPSBvcHRpb25zIHx8IHt9OworCQkKKwkJYXBwZW5kSFRNTCgpOworCisJCWlmIChhZGRCaW5kaW5ncygpKSB7CisJCQlpZiAoISR0aGlzWzBdKSB7CisJCQkJaWYgKCR0aGlzLnNlbGVjdG9yKSB7IC8vIGlmIGEgc2VsZWN0b3Igd2FzIGdpdmVuIGFuZCBpdCBkaWRuJ3QgbWF0Y2ggYW55IGVsZW1lbnRzLCBnbyBhaGVhZCBhbmQgZXhpdC4KKwkJCQkJcmV0dXJuICR0aGlzOworCQkJCX0KKwkJCQkvLyBpZiBubyBzZWxlY3RvciB3YXMgZ2l2ZW4gKGllLiAkLmNvbG9yYm94KCkpLCBjcmVhdGUgYSB0ZW1wb3JhcnkgZWxlbWVudCB0byB3b3JrIHdpdGgKKwkJCQkkdGhpcyA9ICQoJzxhLz4nKTsKKwkJCQlvcHRpb25zLm9wZW4gPSB0cnVlOyAvLyBhc3N1bWUgYW4gaW1tZWRpYXRlIG9wZW4KKwkJCX0KKwkJCQorCQkJaWYgKGNhbGxiYWNrKSB7CisJCQkJb3B0aW9ucy5vbkNvbXBsZXRlID0gY2FsbGJhY2s7CisJCQl9CisJCQkKKwkJCSR0aGlzLmVhY2goZnVuY3Rpb24gKCkgeworCQkJCSQuZGF0YSh0aGlzLCBjb2xvcmJveCwgJC5leHRlbmQoe30sICQuZGF0YSh0aGlzLCBjb2xvcmJveCkgfHwgZGVmYXVsdHMsIG9wdGlvbnMpKTsKKwkJCX0pLmFkZENsYXNzKGJveEVsZW1lbnQpOworCQkJCisJCQlpZiAoKCQuaXNGdW5jdGlvbihvcHRpb25zLm9wZW4pICYmIG9wdGlvbnMub3Blbi5jYWxsKCR0aGlzKSkgfHwgb3B0aW9ucy5vcGVuKSB7CisJCQkJbGF1bmNoKCR0aGlzWzBdKTsKKwkJCX0KKwkJfQorCQkKKwkJcmV0dXJuICR0aGlzOworCX07CisKKwlwdWJsaWNNZXRob2QucG9zaXRpb24gPSBmdW5jdGlvbiAoc3BlZWQsIGxvYWRlZENhbGxiYWNrKSB7CisJCXZhciAKKwkJdG9wID0gMCwgCisJCWxlZnQgPSAwLCAKKwkJb2Zmc2V0ID0gJGJveC5vZmZzZXQoKSwKKwkJc2Nyb2xsVG9wLCAKKwkJc2Nyb2xsTGVmdDsKKwkJCisJCSR3aW5kb3cudW5iaW5kKCdyZXNpemUuJyArIHByZWZpeCk7CisKKwkJLy8gcmVtb3ZlIHRoZSBtb2RhbCBzbyB0aGF0IGl0IGRvZXNuJ3QgaW5mbHVlbmNlIHRoZSBkb2N1bWVudCB3aWR0aC9oZWlnaHQgICAgICAgIAorCQkkYm94LmNzcyh7dG9wOiAtOWU0LCBsZWZ0OiAtOWU0fSk7CisKKwkJc2Nyb2xsVG9wID0gJHdpbmRvdy5zY3JvbGxUb3AoKTsKKwkJc2Nyb2xsTGVmdCA9ICR3aW5kb3cuc2Nyb2xsTGVmdCgpOworCisJCWlmIChzZXR0aW5ncy5maXhlZCAmJiAhaXNJRTYpIHsKKwkJCW9mZnNldC50b3AgLT0gc2Nyb2xsVG9wOworCQkJb2Zmc2V0LmxlZnQgLT0gc2Nyb2xsTGVmdDsKKwkJCSRib3guY3NzKHtwb3NpdGlvbjogJ2ZpeGVkJ30pOworCQl9IGVsc2UgeworCQkJdG9wID0gc2Nyb2xsVG9wOworCQkJbGVmdCA9IHNjcm9sbExlZnQ7CisJCQkkYm94LmNzcyh7cG9zaXRpb246ICdhYnNvbHV0ZSd9KTsKKwkJfQorCisJCS8vIGtlZXBzIHRoZSB0b3AgYW5kIGxlZnQgcG9zaXRpb25zIHdpdGhpbiB0aGUgYnJvd3NlcidzIHZpZXdwb3J0LgorCQlpZiAoc2V0dGluZ3MucmlnaHQgIT09IGZhbHNlKSB7CisJCQlsZWZ0ICs9IE1hdGgubWF4KCR3aW5kb3cud2lkdGgoKSAtIHNldHRpbmdzLncgLSBsb2FkZWRXaWR0aCAtIGludGVyZmFjZVdpZHRoIC0gc2V0U2l6ZShzZXR0aW5ncy5yaWdodCwgJ3gnKSwgMCk7CisJCX0gZWxzZSBpZiAoc2V0dGluZ3MubGVmdCAhPT0gZmFsc2UpIHsKKwkJCWxlZnQgKz0gc2V0U2l6ZShzZXR0aW5ncy5sZWZ0LCAneCcpOworCQl9IGVsc2UgeworCQkJbGVmdCArPSBNYXRoLnJvdW5kKE1hdGgubWF4KCR3aW5kb3cud2lkdGgoKSAtIHNldHRpbmdzLncgLSBsb2FkZWRXaWR0aCAtIGludGVyZmFjZVdpZHRoLCAwKSAvIDIpOworCQl9CisJCQorCQlpZiAoc2V0dGluZ3MuYm90dG9tICE9PSBmYWxzZSkgeworCQkJdG9wICs9IE1hdGgubWF4KCR3aW5kb3cuaGVpZ2h0KCkgLSBzZXR0aW5ncy5oIC0gbG9hZGVkSGVpZ2h0IC0gaW50ZXJmYWNlSGVpZ2h0IC0gc2V0U2l6ZShzZXR0aW5ncy5ib3R0b20sICd5JyksIDApOworCQl9IGVsc2UgaWYgKHNldHRpbmdzLnRvcCAhPT0gZmFsc2UpIHsKKwkJCXRvcCArPSBzZXRTaXplKHNldHRpbmdzLnRvcCwgJ3knKTsKKwkJfSBlbHNlIHsKKwkJCXRvcCArPSBNYXRoLnJvdW5kKE1hdGgubWF4KCR3aW5kb3cuaGVpZ2h0KCkgLSBzZXR0aW5ncy5oIC0gbG9hZGVkSGVpZ2h0IC0gaW50ZXJmYWNlSGVpZ2h0LCAwKSAvIDIpOworCQl9CisKKwkJJGJveC5jc3Moe3RvcDogb2Zmc2V0LnRvcCwgbGVmdDogb2Zmc2V0LmxlZnR9KTsKKworCQkvLyBzZXR0aW5nIHRoZSBzcGVlZCB0byAwIHRvIHJlZHVjZSB0aGUgZGVsYXkgYmV0d2VlbiBzYW1lLXNpemVkIGNvbnRlbnQuCisJCXNwZWVkID0gKCRib3gud2lkdGgoKSA9PT0gc2V0dGluZ3MudyArIGxvYWRlZFdpZHRoICYmICRib3guaGVpZ2h0KCkgPT09IHNldHRpbmdzLmggKyBsb2FkZWRIZWlnaHQpID8gMCA6IHNwZWVkIHx8IDA7CisJCQorCQkvLyB0aGlzIGdpdmVzIHRoZSB3cmFwcGVyIHBsZW50eSBvZiBicmVhdGhpbmcgcm9vbSBzbyBpdCdzIGZsb2F0ZWQgY29udGVudHMgY2FuIG1vdmUgYXJvdW5kIHNtb290aGx5LAorCQkvLyBidXQgaXQgaGFzIHRvIGJlIHNocmFuayBkb3duIGFyb3VuZCB0aGUgc2l6ZSBvZiBkaXYjY29sb3Jib3ggd2hlbiBpdCdzIGRvbmUuICBJZiBub3QsCisJCS8vIGl0IGNhbiBpbnZva2UgYW4gb2JzY3VyZSBJRSBidWcgd2hlbiB1c2luZyBpZnJhbWVzLgorCQkkd3JhcFswXS5zdHlsZS53aWR0aCA9ICR3cmFwWzBdLnN0eWxlLmhlaWdodCA9ICI5OTk5cHgiOworCQkKKwkJZnVuY3Rpb24gbW9kYWxEaW1lbnNpb25zKHRoYXQpIHsKKwkJCSR0b3BCb3JkZXJbMF0uc3R5bGUud2lkdGggPSAkYm90dG9tQm9yZGVyWzBdLnN0eWxlLndpZHRoID0gJGNvbnRlbnRbMF0uc3R5bGUud2lkdGggPSB0aGF0LnN0eWxlLndpZHRoOworCQkJJGNvbnRlbnRbMF0uc3R5bGUuaGVpZ2h0ID0gJGxlZnRCb3JkZXJbMF0uc3R5bGUuaGVpZ2h0ID0gJHJpZ2h0Qm9yZGVyWzBdLnN0eWxlLmhlaWdodCA9IHRoYXQuc3R5bGUuaGVpZ2h0OworCQl9CisJCQorCQkkYm94LmRlcXVldWUoKS5hbmltYXRlKHt3aWR0aDogc2V0dGluZ3MudyArIGxvYWRlZFdpZHRoLCBoZWlnaHQ6IHNldHRpbmdzLmggKyBsb2FkZWRIZWlnaHQsIHRvcDogdG9wLCBsZWZ0OiBsZWZ0fSwgeworCQkJZHVyYXRpb246IHNwZWVkLAorCQkJY29tcGxldGU6IGZ1bmN0aW9uICgpIHsKKwkJCQltb2RhbERpbWVuc2lvbnModGhpcyk7CisJCQkJCisJCQkJYWN0aXZlID0gZmFsc2U7CisJCQkJCisJCQkJLy8gc2hyaW5rIHRoZSB3cmFwcGVyIGRvd24gdG8gZXhhY3RseSB0aGUgc2l6ZSBvZiBjb2xvcmJveCB0byBhdm9pZCBhIGJ1ZyBpbiBJRSdzIGlmcmFtZSBpbXBsZW1lbnRhdGlvbi4KKwkJCQkkd3JhcFswXS5zdHlsZS53aWR0aCA9IChzZXR0aW5ncy53ICsgbG9hZGVkV2lkdGggKyBpbnRlcmZhY2VXaWR0aCkgKyAicHgiOworCQkJCSR3cmFwWzBdLnN0eWxlLmhlaWdodCA9IChzZXR0aW5ncy5oICsgbG9hZGVkSGVpZ2h0ICsgaW50ZXJmYWNlSGVpZ2h0KSArICJweCI7CisJCQkJCisJCQkJaWYgKHNldHRpbmdzLnJlcG9zaXRpb24pIHsKKwkJCQkJc2V0VGltZW91dChmdW5jdGlvbiAoKSB7ICAvLyBzbWFsbCBkZWxheSBiZWZvcmUgYmluZGluZyBvbnJlc2l6ZSBkdWUgdG8gYW4gSUU4IGJ1Zy4KKwkJCQkJCSR3aW5kb3cuYmluZCgncmVzaXplLicgKyBwcmVmaXgsIHB1YmxpY01ldGhvZC5wb3NpdGlvbik7CisJCQkJCX0sIDEpOworCQkJCX0KKworCQkJCWlmIChsb2FkZWRDYWxsYmFjaykgeworCQkJCQlsb2FkZWRDYWxsYmFjaygpOworCQkJCX0KKwkJCX0sCisJCQlzdGVwOiBmdW5jdGlvbiAoKSB7CisJCQkJbW9kYWxEaW1lbnNpb25zKHRoaXMpOworCQkJfQorCQl9KTsKKwl9OworCisJcHVibGljTWV0aG9kLnJlc2l6ZSA9IGZ1bmN0aW9uIChvcHRpb25zKSB7CisJCWlmIChvcGVuKSB7CisJCQlvcHRpb25zID0gb3B0aW9ucyB8fCB7fTsKKwkJCQorCQkJaWYgKG9wdGlvbnMud2lkdGgpIHsKKwkJCQlzZXR0aW5ncy53ID0gc2V0U2l6ZShvcHRpb25zLndpZHRoLCAneCcpIC0gbG9hZGVkV2lkdGggLSBpbnRlcmZhY2VXaWR0aDsKKwkJCX0KKwkJCWlmIChvcHRpb25zLmlubmVyV2lkdGgpIHsKKwkJCQlzZXR0aW5ncy53ID0gc2V0U2l6ZShvcHRpb25zLmlubmVyV2lkdGgsICd4Jyk7CisJCQl9CisJCQkkbG9hZGVkLmNzcyh7d2lkdGg6IHNldHRpbmdzLnd9KTsKKwkJCQorCQkJaWYgKG9wdGlvbnMuaGVpZ2h0KSB7CisJCQkJc2V0dGluZ3MuaCA9IHNldFNpemUob3B0aW9ucy5oZWlnaHQsICd5JykgLSBsb2FkZWRIZWlnaHQgLSBpbnRlcmZhY2VIZWlnaHQ7CisJCQl9CisJCQlpZiAob3B0aW9ucy5pbm5lckhlaWdodCkgeworCQkJCXNldHRpbmdzLmggPSBzZXRTaXplKG9wdGlvbnMuaW5uZXJIZWlnaHQsICd5Jyk7CisJCQl9CisJCQlpZiAoIW9wdGlvbnMuaW5uZXJIZWlnaHQgJiYgIW9wdGlvbnMuaGVpZ2h0KSB7CisJCQkJJGxvYWRlZC5jc3Moe2hlaWdodDogImF1dG8ifSk7CisJCQkJc2V0dGluZ3MuaCA9ICRsb2FkZWQuaGVpZ2h0KCk7CisJCQl9CisJCQkkbG9hZGVkLmNzcyh7aGVpZ2h0OiBzZXR0aW5ncy5ofSk7CisJCQkKKwkJCXB1YmxpY01ldGhvZC5wb3NpdGlvbihzZXR0aW5ncy50cmFuc2l0aW9uID09PSAibm9uZSIgPyAwIDogc2V0dGluZ3Muc3BlZWQpOworCQl9CisJfTsKKworCXB1YmxpY01ldGhvZC5wcmVwID0gZnVuY3Rpb24gKG9iamVjdCkgeworCQlpZiAoIW9wZW4pIHsKKwkJCXJldHVybjsKKwkJfQorCQkKKwkJdmFyIGNhbGxiYWNrLCBzcGVlZCA9IHNldHRpbmdzLnRyYW5zaXRpb24gPT09ICJub25lIiA/IDAgOiBzZXR0aW5ncy5zcGVlZDsKKwkJCisJCSRsb2FkZWQucmVtb3ZlKCk7CisJCSRsb2FkZWQgPSAkdGFnKGRpdiwgJ0xvYWRlZENvbnRlbnQnKS5hcHBlbmQob2JqZWN0KTsKKwkJCisJCWZ1bmN0aW9uIGdldFdpZHRoKCkgeworCQkJc2V0dGluZ3MudyA9IHNldHRpbmdzLncgfHwgJGxvYWRlZC53aWR0aCgpOworCQkJc2V0dGluZ3MudyA9IHNldHRpbmdzLm13ICYmIHNldHRpbmdzLm13IDwgc2V0dGluZ3MudyA/IHNldHRpbmdzLm13IDogc2V0dGluZ3MudzsKKwkJCXJldHVybiBzZXR0aW5ncy53OworCQl9CisJCWZ1bmN0aW9uIGdldEhlaWdodCgpIHsKKwkJCXNldHRpbmdzLmggPSBzZXR0aW5ncy5oIHx8ICRsb2FkZWQuaGVpZ2h0KCk7CisJCQlzZXR0aW5ncy5oID0gc2V0dGluZ3MubWggJiYgc2V0dGluZ3MubWggPCBzZXR0aW5ncy5oID8gc2V0dGluZ3MubWggOiBzZXR0aW5ncy5oOworCQkJcmV0dXJuIHNldHRpbmdzLmg7CisJCX0KKwkJCisJCSRsb2FkZWQuaGlkZSgpCisJCS5hcHBlbmRUbygkbG9hZGluZ0JheS5zaG93KCkpLy8gY29udGVudCBoYXMgdG8gYmUgYXBwZW5kZWQgdG8gdGhlIERPTSBmb3IgYWNjdXJhdGUgc2l6ZSBjYWxjdWxhdGlvbnMuCisJCS5jc3Moe3dpZHRoOiBnZXRXaWR0aCgpLCBvdmVyZmxvdzogc2V0dGluZ3Muc2Nyb2xsaW5nID8gJ2F1dG8nIDogJ2hpZGRlbid9KQorCQkuY3NzKHtoZWlnaHQ6IGdldEhlaWdodCgpfSkvLyBzZXRzIHRoZSBoZWlnaHQgaW5kZXBlbmRlbnRseSBmcm9tIHRoZSB3aWR0aCBpbiBjYXNlIHRoZSBuZXcgd2lkdGggaW5mbHVlbmNlcyB0aGUgdmFsdWUgb2YgaGVpZ2h0LgorCQkucHJlcGVuZFRvKCRjb250ZW50KTsKKwkJCisJCSRsb2FkaW5nQmF5LmhpZGUoKTsKKwkJCisJCS8vIGZsb2F0aW5nIHRoZSBJTUcgcmVtb3ZlcyB0aGUgYm90dG9tIGxpbmUtaGVpZ2h0IGFuZCBmaXhlZCBhIHByb2JsZW0gd2hlcmUgSUUgbWlzY2FsY3VsYXRlcyB0aGUgd2lkdGggb2YgdGhlIHBhcmVudCBlbGVtZW50IGFzIDEwMCUgb2YgdGhlIGRvY3VtZW50IHdpZHRoLgorCQkvLyQocGhvdG8pLmNzcyh7J2Zsb2F0JzogJ25vbmUnLCBtYXJnaW5MZWZ0OiAnYXV0bycsIG1hcmdpblJpZ2h0OiAnYXV0byd9KTsKKwkJCisJCSQocGhvdG8pLmNzcyh7J2Zsb2F0JzogJ25vbmUnfSk7CisJCQorCQkvLyBIaWRlcyBTRUxFQ1QgZWxlbWVudHMgaW4gSUU2IGJlY2F1c2UgdGhleSB3b3VsZCBvdGhlcndpc2Ugc2l0IG9uIHRvcCBvZiB0aGUgb3ZlcmxheS4KKwkJaWYgKGlzSUU2KSB7CisJCQkkKCdzZWxlY3QnKS5ub3QoJGJveC5maW5kKCdzZWxlY3QnKSkuZmlsdGVyKGZ1bmN0aW9uICgpIHsKKwkJCQlyZXR1cm4gdGhpcy5zdHlsZS52aXNpYmlsaXR5ICE9PSAnaGlkZGVuJzsKKwkJCX0pLmNzcyh7J3Zpc2liaWxpdHknOiAnaGlkZGVuJ30pLm9uZShldmVudF9jbGVhbnVwLCBmdW5jdGlvbiAoKSB7CisJCQkJdGhpcy5zdHlsZS52aXNpYmlsaXR5ID0gJ2luaGVyaXQnOworCQkJfSk7CisJCX0KKwkJCisJCWNhbGxiYWNrID0gZnVuY3Rpb24gKCkgeworCQkJdmFyIHByZWxvYWQsIAorCQkJCWksIAorCQkJCXRvdGFsID0gJHJlbGF0ZWQubGVuZ3RoLCAKKwkJCQlpZnJhbWUsIAorCQkJCWZyYW1lQm9yZGVyID0gJ2ZyYW1lQm9yZGVyJywgCisJCQkJYWxsb3dUcmFuc3BhcmVuY3kgPSAnYWxsb3dUcmFuc3BhcmVuY3knLCAKKwkJCQljb21wbGV0ZSwgCisJCQkJc3JjLCAKKwkJCQlpbWcsIAorCQkJCWRhdGE7CisJCQkKKwkJCWlmICghb3BlbikgeworCQkJCXJldHVybjsKKwkJCX0KKwkJCQorCQkJZnVuY3Rpb24gcmVtb3ZlRmlsdGVyKCkgeworCQkJCWlmIChpc0lFKSB7CisJCQkJCSRib3hbMF0uc3R5bGUucmVtb3ZlQXR0cmlidXRlKCdmaWx0ZXInKTsKKwkJCQl9CisJCQl9CisJCQkKKwkJCWNvbXBsZXRlID0gZnVuY3Rpb24gKCkgeworCQkJCWNsZWFyVGltZW91dChsb2FkaW5nVGltZXIpOworCQkJCSRsb2FkaW5nT3ZlcmxheS5oaWRlKCk7CisJCQkJdHJpZ2dlcihldmVudF9jb21wbGV0ZSwgc2V0dGluZ3Mub25Db21wbGV0ZSk7CisJCQl9OworCQkJCisJCQlpZiAoaXNJRSkgeworCQkJCS8vVGhpcyBmYWRlSW4gaGVscHMgdGhlIGJpY3ViaWMgcmVzYW1wbGluZyB0byBraWNrLWluLgorCQkJCWlmIChwaG90bykgeworCQkJCQkkbG9hZGVkLmZhZGVJbigxMDApOworCQkJCX0KKwkJCX0KKwkJCQorCQkJJHRpdGxlLmh0bWwoc2V0dGluZ3MudGl0bGUpLmFkZCgkbG9hZGVkKS5zaG93KCk7CisJCQkKKwkJCWlmICh0b3RhbCA+IDEpIHsgLy8gaGFuZGxlIGdyb3VwaW5nCisJCQkJaWYgKHR5cGVvZiBzZXR0aW5ncy5jdXJyZW50ID09PSAic3RyaW5nIikgeworCQkJCQkkY3VycmVudC5odG1sKHNldHRpbmdzLmN1cnJlbnQucmVwbGFjZSgne2N1cnJlbnR9JywgaW5kZXggKyAxKS5yZXBsYWNlKCd7dG90YWx9JywgdG90YWwpKS5zaG93KCk7CisJCQkJfQorCQkJCQorCQkJCSRuZXh0WyhzZXR0aW5ncy5sb29wIHx8IGluZGV4IDwgdG90YWwgLSAxKSA/ICJzaG93IiA6ICJoaWRlIl0oKS5odG1sKHNldHRpbmdzLm5leHQpOworCQkJCSRwcmV2WyhzZXR0aW5ncy5sb29wIHx8IGluZGV4KSA/ICJzaG93IiA6ICJoaWRlIl0oKS5odG1sKHNldHRpbmdzLnByZXZpb3VzKTsKKwkJCQkKKwkJCQlpZiAoc2V0dGluZ3Muc2xpZGVzaG93KSB7CisJCQkJCSRzbGlkZXNob3cuc2hvdygpOworCQkJCX0KKwkJCQkKKwkJCQkvLyBQcmVsb2FkcyBpbWFnZXMgd2l0aGluIGEgcmVsIGdyb3VwCisJCQkJaWYgKHNldHRpbmdzLnByZWxvYWRpbmcpIHsKKwkJCQkJcHJlbG9hZCA9IFsKKwkJCQkJCWdldEluZGV4KC0xKSwKKwkJCQkJCWdldEluZGV4KDEpCisJCQkJCV07CisJCQkJCXdoaWxlIChpID0gJHJlbGF0ZWRbcHJlbG9hZC5wb3AoKV0pIHsKKwkJCQkJCWRhdGEgPSAkLmRhdGEoaSwgY29sb3Jib3gpOworCQkJCQkJCisJCQkJCQlpZiAoZGF0YSAmJiBkYXRhLmhyZWYpIHsKKwkJCQkJCQlzcmMgPSBkYXRhLmhyZWY7CisJCQkJCQkJaWYgKCQuaXNGdW5jdGlvbihzcmMpKSB7CisJCQkJCQkJCXNyYyA9IHNyYy5jYWxsKGkpOworCQkJCQkJCX0KKwkJCQkJCX0gZWxzZSB7CisJCQkJCQkJc3JjID0gaS5ocmVmOworCQkJCQkJfQorCisJCQkJCQlpZiAoaXNJbWFnZShzcmMpKSB7CisJCQkJCQkJaW1nID0gbmV3IEltYWdlKCk7CisJCQkJCQkJaW1nLnNyYyA9IHNyYzsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCX0KKwkJCX0gZWxzZSB7CisJCQkJJGdyb3VwQ29udHJvbHMuaGlkZSgpOworCQkJfQorCQkJCisJCQlpZiAoc2V0dGluZ3MuaWZyYW1lKSB7CisJCQkJaWZyYW1lID0gJHRhZygnaWZyYW1lJylbMF07CisJCQkJCisJCQkJaWYgKGZyYW1lQm9yZGVyIGluIGlmcmFtZSkgeworCQkJCQlpZnJhbWVbZnJhbWVCb3JkZXJdID0gMDsKKwkJCQl9CisJCQkJaWYgKGFsbG93VHJhbnNwYXJlbmN5IGluIGlmcmFtZSkgeworCQkJCQlpZnJhbWVbYWxsb3dUcmFuc3BhcmVuY3ldID0gInRydWUiOworCQkJCX0KKwkJCQkvLyBnaXZlIHRoZSBpZnJhbWUgYSB1bmlxdWUgbmFtZSB0byBwcmV2ZW50IGNhY2hpbmcKKwkJCQlpZnJhbWUubmFtZSA9IHByZWZpeCArICgrbmV3IERhdGUoKSk7CisJCQkJaWYgKHNldHRpbmdzLmZhc3RJZnJhbWUpIHsKKwkJCQkJY29tcGxldGUoKTsKKwkJCQl9IGVsc2UgeworCQkJCQkkKGlmcmFtZSkub25lKCdsb2FkJywgY29tcGxldGUpOworCQkJCX0KKwkJCQlpZnJhbWUuc3JjID0gc2V0dGluZ3MuaHJlZjsKKwkJCQlpZiAoIXNldHRpbmdzLnNjcm9sbGluZykgeworCQkJCQlpZnJhbWUuc2Nyb2xsaW5nID0gIm5vIjsKKwkJCQl9CisJCQkJJChpZnJhbWUpLmFkZENsYXNzKHByZWZpeCArICdJZnJhbWUnKS5hcHBlbmRUbygkbG9hZGVkKS5vbmUoZXZlbnRfcHVyZ2UsIGZ1bmN0aW9uICgpIHsKKwkJCQkJaWZyYW1lLnNyYyA9ICIvL2Fib3V0OmJsYW5rIjsKKwkJCQl9KTsKKwkJCX0gZWxzZSB7CisJCQkJY29tcGxldGUoKTsKKwkJCX0KKwkJCQorCQkJaWYgKHNldHRpbmdzLnRyYW5zaXRpb24gPT09ICdmYWRlJykgeworCQkJCSRib3guZmFkZVRvKHNwZWVkLCAxLCByZW1vdmVGaWx0ZXIpOworCQkJfSBlbHNlIHsKKwkJCQlyZW1vdmVGaWx0ZXIoKTsKKwkJCX0KKwkJfTsKKwkJCisJCWlmIChzZXR0aW5ncy50cmFuc2l0aW9uID09PSAnZmFkZScpIHsKKwkJCSRib3guZmFkZVRvKHNwZWVkLCAwLCBmdW5jdGlvbiAoKSB7CisJCQkJcHVibGljTWV0aG9kLnBvc2l0aW9uKDAsIGNhbGxiYWNrKTsKKwkJCX0pOworCQl9IGVsc2UgeworCQkJcHVibGljTWV0aG9kLnBvc2l0aW9uKHNwZWVkLCBjYWxsYmFjayk7CisJCX0KKwl9OworCisJcHVibGljTWV0aG9kLmxvYWQgPSBmdW5jdGlvbiAobGF1bmNoZWQpIHsKKwkJdmFyIGhyZWYsIHNldFJlc2l6ZSwgcHJlcCA9IHB1YmxpY01ldGhvZC5wcmVwOworCQkKKwkJYWN0aXZlID0gdHJ1ZTsKKwkJCisJCXBob3RvID0gZmFsc2U7CisJCQorCQllbGVtZW50ID0gJHJlbGF0ZWRbaW5kZXhdOworCQkKKwkJaWYgKCFsYXVuY2hlZCkgeworCQkJbWFrZVNldHRpbmdzKCk7CisJCX0KKwkJCisJCXRyaWdnZXIoZXZlbnRfcHVyZ2UpOworCQkKKwkJdHJpZ2dlcihldmVudF9sb2FkLCBzZXR0aW5ncy5vbkxvYWQpOworCQkKKwkJc2V0dGluZ3MuaCA9IHNldHRpbmdzLmhlaWdodCA/CisJCQkJc2V0U2l6ZShzZXR0aW5ncy5oZWlnaHQsICd5JykgLSBsb2FkZWRIZWlnaHQgLSBpbnRlcmZhY2VIZWlnaHQgOgorCQkJCXNldHRpbmdzLmlubmVySGVpZ2h0ICYmIHNldFNpemUoc2V0dGluZ3MuaW5uZXJIZWlnaHQsICd5Jyk7CisJCQorCQlzZXR0aW5ncy53ID0gc2V0dGluZ3Mud2lkdGggPworCQkJCXNldFNpemUoc2V0dGluZ3Mud2lkdGgsICd4JykgLSBsb2FkZWRXaWR0aCAtIGludGVyZmFjZVdpZHRoIDoKKwkJCQlzZXR0aW5ncy5pbm5lcldpZHRoICYmIHNldFNpemUoc2V0dGluZ3MuaW5uZXJXaWR0aCwgJ3gnKTsKKwkJCisJCS8vIFNldHMgdGhlIG1pbmltdW0gZGltZW5zaW9ucyBmb3IgdXNlIGluIGltYWdlIHNjYWxpbmcKKwkJc2V0dGluZ3MubXcgPSBzZXR0aW5ncy53OworCQlzZXR0aW5ncy5taCA9IHNldHRpbmdzLmg7CisJCQorCQkvLyBSZS1ldmFsdWF0ZSB0aGUgbWluaW11bSB3aWR0aCBhbmQgaGVpZ2h0IGJhc2VkIG9uIG1heFdpZHRoIGFuZCBtYXhIZWlnaHQgdmFsdWVzLgorCQkvLyBJZiB0aGUgd2lkdGggb3IgaGVpZ2h0IGV4Y2VlZCB0aGUgbWF4V2lkdGggb3IgbWF4SGVpZ2h0LCB1c2UgdGhlIG1heGltdW0gdmFsdWVzIGluc3RlYWQuCisJCWlmIChzZXR0aW5ncy5tYXhXaWR0aCkgeworCQkJc2V0dGluZ3MubXcgPSBzZXRTaXplKHNldHRpbmdzLm1heFdpZHRoLCAneCcpIC0gbG9hZGVkV2lkdGggLSBpbnRlcmZhY2VXaWR0aDsKKwkJCXNldHRpbmdzLm13ID0gc2V0dGluZ3MudyAmJiBzZXR0aW5ncy53IDwgc2V0dGluZ3MubXcgPyBzZXR0aW5ncy53IDogc2V0dGluZ3MubXc7CisJCX0KKwkJaWYgKHNldHRpbmdzLm1heEhlaWdodCkgeworCQkJc2V0dGluZ3MubWggPSBzZXRTaXplKHNldHRpbmdzLm1heEhlaWdodCwgJ3knKSAtIGxvYWRlZEhlaWdodCAtIGludGVyZmFjZUhlaWdodDsKKwkJCXNldHRpbmdzLm1oID0gc2V0dGluZ3MuaCAmJiBzZXR0aW5ncy5oIDwgc2V0dGluZ3MubWggPyBzZXR0aW5ncy5oIDogc2V0dGluZ3MubWg7CisJCX0KKwkJCisJCWhyZWYgPSBzZXR0aW5ncy5ocmVmOworCQkKKwkJbG9hZGluZ1RpbWVyID0gc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisJCQkkbG9hZGluZ092ZXJsYXkuc2hvdygpOworCQl9LCAxMDApOworCQkKKwkJaWYgKHNldHRpbmdzLmlubGluZSkgeworCQkJLy8gSW5zZXJ0cyBhbiBlbXB0eSBwbGFjZWhvbGRlciB3aGVyZSBpbmxpbmUgY29udGVudCBpcyBiZWluZyBwdWxsZWQgZnJvbS4KKwkJCS8vIEFuIGV2ZW50IGlzIGJvdW5kIHRvIHB1dCBpbmxpbmUgY29udGVudCBiYWNrIHdoZW4gQ29sb3JCb3ggY2xvc2VzIG9yIGxvYWRzIG5ldyBjb250ZW50LgorCQkJJHRhZyhkaXYpLmhpZGUoKS5pbnNlcnRCZWZvcmUoJChocmVmKVswXSkub25lKGV2ZW50X3B1cmdlLCBmdW5jdGlvbiAoKSB7CisJCQkJJCh0aGlzKS5yZXBsYWNlV2l0aCgkbG9hZGVkLmNoaWxkcmVuKCkpOworCQkJfSk7CisJCQlwcmVwKCQoaHJlZikpOworCQl9IGVsc2UgaWYgKHNldHRpbmdzLmlmcmFtZSkgeworCQkJLy8gSUZyYW1lIGVsZW1lbnQgd29uJ3QgYmUgYWRkZWQgdG8gdGhlIERPTSB1bnRpbCBpdCBpcyByZWFkeSB0byBiZSBkaXNwbGF5ZWQsCisJCQkvLyB0byBhdm9pZCBwcm9ibGVtcyB3aXRoIERPTS1yZWFkeSBKUyB0aGF0IG1pZ2h0IGJlIHRyeWluZyB0byBydW4gaW4gdGhhdCBpZnJhbWUuCisJCQlwcmVwKCIgIik7CisJCX0gZWxzZSBpZiAoc2V0dGluZ3MuaHRtbCkgeworCQkJcHJlcChzZXR0aW5ncy5odG1sKTsKKwkJfSBlbHNlIGlmIChpc0ltYWdlKGhyZWYpKSB7CisJCQkkKHBob3RvID0gbmV3IEltYWdlKCkpCisJCQkuYWRkQ2xhc3MocHJlZml4ICsgJ1Bob3RvJykKKwkJCS5lcnJvcihmdW5jdGlvbiAoKSB7CisJCQkJc2V0dGluZ3MudGl0bGUgPSBmYWxzZTsKKwkJCQlwcmVwKCR0YWcoZGl2LCAnRXJyb3InKS5odG1sKHNldHRpbmdzLmltZ0Vycm9yKSk7CisJCQl9KQorCQkJLmxvYWQoZnVuY3Rpb24gKCkgeworCQkJCXZhciBwZXJjZW50OworCQkJCXBob3RvLm9ubG9hZCA9IG51bGw7IC8vc3RvcHMgYW5pbWF0ZWQgZ2lmcyBmcm9tIGZpcmluZyB0aGUgb25sb2FkIHJlcGVhdGVkbHkuCisJCQkJCisJCQkJaWYgKHNldHRpbmdzLnNjYWxlUGhvdG9zKSB7CisJCQkJCXNldFJlc2l6ZSA9IGZ1bmN0aW9uICgpIHsKKwkJCQkJCXBob3RvLmhlaWdodCAtPSBwaG90by5oZWlnaHQgKiBwZXJjZW50OworCQkJCQkJcGhvdG8ud2lkdGggLT0gcGhvdG8ud2lkdGggKiBwZXJjZW50OwkKKwkJCQkJfTsKKwkJCQkJaWYgKHNldHRpbmdzLm13ICYmIHBob3RvLndpZHRoID4gc2V0dGluZ3MubXcpIHsKKwkJCQkJCXBlcmNlbnQgPSAocGhvdG8ud2lkdGggLSBzZXR0aW5ncy5tdykgLyBwaG90by53aWR0aDsKKwkJCQkJCXNldFJlc2l6ZSgpOworCQkJCQl9CisJCQkJCWlmIChzZXR0aW5ncy5taCAmJiBwaG90by5oZWlnaHQgPiBzZXR0aW5ncy5taCkgeworCQkJCQkJcGVyY2VudCA9IChwaG90by5oZWlnaHQgLSBzZXR0aW5ncy5taCkgLyBwaG90by5oZWlnaHQ7CisJCQkJCQlzZXRSZXNpemUoKTsKKwkJCQkJfQorCQkJCX0KKwkJCQkKKwkJCQlpZiAoc2V0dGluZ3MuaCkgeworCQkJCQlwaG90by5zdHlsZS5tYXJnaW5Ub3AgPSBNYXRoLm1heChzZXR0aW5ncy5oIC0gcGhvdG8uaGVpZ2h0LCAwKSAvIDIgKyAncHgnOworCQkJCX0KKwkJCQkKKwkJCQlpZiAoJHJlbGF0ZWRbMV0gJiYgKHNldHRpbmdzLmxvb3AgfHwgJHJlbGF0ZWRbaW5kZXggKyAxXSkpIHsKKwkJCQkJcGhvdG8uc3R5bGUuY3Vyc29yID0gJ3BvaW50ZXInOworCQkJCQlwaG90by5vbmNsaWNrID0gZnVuY3Rpb24gKCkgeworCQkJCQkJcHVibGljTWV0aG9kLm5leHQoKTsKKwkJCQkJfTsKKwkJCQl9CisJCQkJCisJCQkJaWYgKGlzSUUpIHsKKwkJCQkJcGhvdG8uc3R5bGUubXNJbnRlcnBvbGF0aW9uTW9kZSA9ICdiaWN1YmljJzsKKwkJCQl9CisJCQkJCisJCQkJc2V0VGltZW91dChmdW5jdGlvbiAoKSB7IC8vIEEgcGF1c2UgYmVjYXVzZSBDaHJvbWUgd2lsbCBzb21ldGltZXMgcmVwb3J0IGEgMCBieSAwIHNpemUgb3RoZXJ3aXNlLgorCQkJCQlwcmVwKHBob3RvKTsKKwkJCQl9LCAxKTsKKwkJCX0pOworCQkJCisJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsgLy8gQSBwYXVzZSBiZWNhdXNlIE9wZXJhIDEwLjYrIHdpbGwgc29tZXRpbWVzIG5vdCBydW4gdGhlIG9ubG9hZCBmdW5jdGlvbiBvdGhlcndpc2UuCisJCQkJcGhvdG8uc3JjID0gaHJlZjsKKwkJCX0sIDEpOworCQl9IGVsc2UgaWYgKGhyZWYpIHsKKwkJCSRsb2FkaW5nQmF5LmxvYWQoaHJlZiwgc2V0dGluZ3MuZGF0YSwgZnVuY3Rpb24gKGRhdGEsIHN0YXR1cywgeGhyKSB7CisJCQkJcHJlcChzdGF0dXMgPT09ICdlcnJvcicgPyAkdGFnKGRpdiwgJ0Vycm9yJykuaHRtbChzZXR0aW5ncy54aHJFcnJvcikgOiAkKHRoaXMpLmNvbnRlbnRzKCkpOworCQkJfSk7CisJCX0KKwl9OworCQkKKwkvLyBOYXZpZ2F0ZXMgdG8gdGhlIG5leHQgcGFnZS9pbWFnZSBpbiBhIHNldC4KKwlwdWJsaWNNZXRob2QubmV4dCA9IGZ1bmN0aW9uICgpIHsKKwkJaWYgKCFhY3RpdmUgJiYgJHJlbGF0ZWRbMV0gJiYgKHNldHRpbmdzLmxvb3AgfHwgJHJlbGF0ZWRbaW5kZXggKyAxXSkpIHsKKwkJCWluZGV4ID0gZ2V0SW5kZXgoMSk7CisJCQlwdWJsaWNNZXRob2QubG9hZCgpOworCQl9CisJfTsKKwkKKwlwdWJsaWNNZXRob2QucHJldiA9IGZ1bmN0aW9uICgpIHsKKwkJaWYgKCFhY3RpdmUgJiYgJHJlbGF0ZWRbMV0gJiYgKHNldHRpbmdzLmxvb3AgfHwgaW5kZXgpKSB7CisJCQlpbmRleCA9IGdldEluZGV4KC0xKTsKKwkJCXB1YmxpY01ldGhvZC5sb2FkKCk7CisJCX0KKwl9OworCisJLy8gTm90ZTogdG8gdXNlIHRoaXMgd2l0aGluIGFuIGlmcmFtZSB1c2UgdGhlIGZvbGxvd2luZyBmb3JtYXQ6IHBhcmVudC4kLmZuLmNvbG9yYm94LmNsb3NlKCk7CisJcHVibGljTWV0aG9kLmNsb3NlID0gZnVuY3Rpb24gKCkgeworCQlpZiAob3BlbiAmJiAhY2xvc2luZykgeworCQkJCisJCQljbG9zaW5nID0gdHJ1ZTsKKwkJCQorCQkJb3BlbiA9IGZhbHNlOworCQkJCisJCQl0cmlnZ2VyKGV2ZW50X2NsZWFudXAsIHNldHRpbmdzLm9uQ2xlYW51cCk7CisJCQkKKwkJCSR3aW5kb3cudW5iaW5kKCcuJyArIHByZWZpeCArICcgLicgKyBldmVudF9pZTYpOworCQkJCisJCQkkb3ZlcmxheS5mYWRlVG8oMjAwLCAwKTsKKwkJCQorCQkJJGJveC5zdG9wKCkuZmFkZVRvKDMwMCwgMCwgZnVuY3Rpb24gKCkgeworCQkJCSAKKwkJCQkkYm94LmFkZCgkb3ZlcmxheSkuY3NzKHsnb3BhY2l0eSc6IDEsIGN1cnNvcjogJ2F1dG8nfSkuaGlkZSgpOworCQkJCQorCQkJCXRyaWdnZXIoZXZlbnRfcHVyZ2UpOworCQkJCQorCQkJCSRsb2FkZWQucmVtb3ZlKCk7CisJCQkJCisJCQkJc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CisJCQkJCWNsb3NpbmcgPSBmYWxzZTsKKwkJCQkJdHJpZ2dlcihldmVudF9jbG9zZWQsIHNldHRpbmdzLm9uQ2xvc2VkKTsKKwkJCQl9LCAxKTsKKwkJCX0pOworCQl9CisJfTsKKworCS8vIFJlbW92ZXMgY2hhbmdlcyBDb2xvckJveCBtYWRlIHRvIHRoZSBkb2N1bWVudCwgYnV0IGRvZXMgbm90IHJlbW92ZSB0aGUgcGx1Z2luCisJLy8gZnJvbSBqUXVlcnkuCisJcHVibGljTWV0aG9kLnJlbW92ZSA9IGZ1bmN0aW9uICgpIHsKKwkJJChbXSkuYWRkKCRib3gpLmFkZCgkb3ZlcmxheSkucmVtb3ZlKCk7CisJCSRib3ggPSBudWxsOworCQkkKCcuJyArIGJveEVsZW1lbnQpCisJCQkucmVtb3ZlRGF0YShjb2xvcmJveCkKKwkJCS5yZW1vdmVDbGFzcyhib3hFbGVtZW50KQorCQkJLmRpZSgpOworCX07CisKKwkvLyBBIG1ldGhvZCBmb3IgZmV0Y2hpbmcgdGhlIGN1cnJlbnQgZWxlbWVudCBDb2xvckJveCBpcyByZWZlcmVuY2luZy4KKwkvLyByZXR1cm5zIGEgalF1ZXJ5IG9iamVjdC4KKwlwdWJsaWNNZXRob2QuZWxlbWVudCA9IGZ1bmN0aW9uICgpIHsKKwkJcmV0dXJuICQoZWxlbWVudCk7CisJfTsKKworCXB1YmxpY01ldGhvZC5zZXR0aW5ncyA9IGRlZmF1bHRzOworCit9KGpRdWVyeSwgZG9jdW1lbnQsIHRoaXMpKTsKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL2pzL2pxdWVyeS51aS5hY2NvcmRpb24uanMgYi9kb2NzL2pzL2pxdWVyeS51aS5hY2NvcmRpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzEwODBkMwotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvanMvanF1ZXJ5LnVpLmFjY29yZGlvbi5qcwpAQCAtMCwwICsxLDYxMSBAQAorLyoKKyAqIGpRdWVyeSBVSSBBY2NvcmRpb24gMS44LjE2CisgKgorICogQ29weXJpZ2h0IDIwMTEsIEFVVEhPUlMudHh0IChodHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0KQorICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIG9yIEdQTCBWZXJzaW9uIDIgbGljZW5zZXMuCisgKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCisgKgorICogaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9VSS9BY2NvcmRpb24KKyAqCisgKiBEZXBlbmRzOgorICoJanF1ZXJ5LnVpLmNvcmUuanMKKyAqCWpxdWVyeS51aS53aWRnZXQuanMKKyAqLworKGZ1bmN0aW9uKCAkLCB1bmRlZmluZWQgKSB7CisKKyQud2lkZ2V0KCAidWkuYWNjb3JkaW9uIiwgeworCW9wdGlvbnM6IHsKKwkJYWN0aXZlOiAwLAorCQlhbmltYXRlZDogInNsaWRlIiwKKwkJYXV0b0hlaWdodDogdHJ1ZSwKKwkJY2xlYXJTdHlsZTogZmFsc2UsCisJCWNvbGxhcHNpYmxlOiBmYWxzZSwKKwkJZXZlbnQ6ICJjbGljayIsCisJCWZpbGxTcGFjZTogZmFsc2UsCisJCWhlYWRlcjogIj4gbGkgPiA6Zmlyc3QtY2hpbGQsPiA6bm90KGxpKTpldmVuIiwKKwkJaWNvbnM6IHsKKwkJCWhlYWRlcjogInVpLWljb24tdHJpYW5nbGUtMS1lIiwKKwkJCWhlYWRlclNlbGVjdGVkOiAidWktaWNvbi10cmlhbmdsZS0xLXMiCisJCX0sCisJCW5hdmlnYXRpb246IGZhbHNlLAorCQluYXZpZ2F0aW9uRmlsdGVyOiBmdW5jdGlvbigpIHsKKwkJCXJldHVybiB0aGlzLmhyZWYudG9Mb3dlckNhc2UoKSA9PT0gbG9jYXRpb24uaHJlZi50b0xvd2VyQ2FzZSgpOworCQl9CisJfSwKKworCV9jcmVhdGU6IGZ1bmN0aW9uKCkgeworCQl2YXIgc2VsZiA9IHRoaXMsCisJCQlvcHRpb25zID0gc2VsZi5vcHRpb25zOworCisJCXNlbGYucnVubmluZyA9IDA7CisKKwkJc2VsZi5lbGVtZW50CisJCQkuYWRkQ2xhc3MoICJ1aS1hY2NvcmRpb24gdWktd2lkZ2V0IHVpLWhlbHBlci1yZXNldCIgKQorCQkJLy8gaW4gbGFjayBvZiBjaGlsZC1zZWxlY3RvcnMgaW4gQ1NTCisJCQkvLyB3ZSBuZWVkIHRvIG1hcmsgdG9wLUxJcyBpbiBhIFVMLWFjY29yZGlvbiBmb3Igc29tZSBJRS1maXgKKwkJCS5jaGlsZHJlbiggImxpIiApCisJCQkJLmFkZENsYXNzKCAidWktYWNjb3JkaW9uLWxpLWZpeCIgKTsKKworCQlzZWxmLmhlYWRlcnMgPSBzZWxmLmVsZW1lbnQuZmluZCggb3B0aW9ucy5oZWFkZXIgKQorCQkJLmFkZENsYXNzKCAidWktYWNjb3JkaW9uLWhlYWRlciB1aS1oZWxwZXItcmVzZXQgdWktc3RhdGUtZGVmYXVsdCB1aS1jb3JuZXItYWxsIiApCisJCQkuYmluZCggIm1vdXNlZW50ZXIuYWNjb3JkaW9uIiwgZnVuY3Rpb24oKSB7CisJCQkJaWYgKCBvcHRpb25zLmRpc2FibGVkICkgeworCQkJCQlyZXR1cm47CisJCQkJfQorCQkJCSQoIHRoaXMgKS5hZGRDbGFzcyggInVpLXN0YXRlLWhvdmVyIiApOworCQkJfSkKKwkJCS5iaW5kKCAibW91c2VsZWF2ZS5hY2NvcmRpb24iLCBmdW5jdGlvbigpIHsKKwkJCQlpZiAoIG9wdGlvbnMuZGlzYWJsZWQgKSB7CisJCQkJCXJldHVybjsKKwkJCQl9CisJCQkJJCggdGhpcyApLnJlbW92ZUNsYXNzKCAidWktc3RhdGUtaG92ZXIiICk7CisJCQl9KQorCQkJLmJpbmQoICJmb2N1cy5hY2NvcmRpb24iLCBmdW5jdGlvbigpIHsKKwkJCQlpZiAoIG9wdGlvbnMuZGlzYWJsZWQgKSB7CisJCQkJCXJldHVybjsKKwkJCQl9CisJCQkJJCggdGhpcyApLmFkZENsYXNzKCAidWktc3RhdGUtZm9jdXMiICk7CisJCQl9KQorCQkJLmJpbmQoICJibHVyLmFjY29yZGlvbiIsIGZ1bmN0aW9uKCkgeworCQkJCWlmICggb3B0aW9ucy5kaXNhYmxlZCApIHsKKwkJCQkJcmV0dXJuOworCQkJCX0KKwkJCQkkKCB0aGlzICkucmVtb3ZlQ2xhc3MoICJ1aS1zdGF0ZS1mb2N1cyIgKTsKKwkJCX0pOworCisJCXNlbGYuaGVhZGVycy5uZXh0KCkKKwkJCS5hZGRDbGFzcyggInVpLWFjY29yZGlvbi1jb250ZW50IHVpLWhlbHBlci1yZXNldCB1aS13aWRnZXQtY29udGVudCB1aS1jb3JuZXItYm90dG9tIiApOworCisJCWlmICggb3B0aW9ucy5uYXZpZ2F0aW9uICkgeworCQkJdmFyIGN1cnJlbnQgPSBzZWxmLmVsZW1lbnQuZmluZCggImEiICkuZmlsdGVyKCBvcHRpb25zLm5hdmlnYXRpb25GaWx0ZXIgKS5lcSggMCApOworCQkJaWYgKCBjdXJyZW50Lmxlbmd0aCApIHsKKwkJCQl2YXIgaGVhZGVyID0gY3VycmVudC5jbG9zZXN0KCAiLnVpLWFjY29yZGlvbi1oZWFkZXIiICk7CisJCQkJaWYgKCBoZWFkZXIubGVuZ3RoICkgeworCQkJCQkvLyBhbmNob3Igd2l0aGluIGhlYWRlcgorCQkJCQlzZWxmLmFjdGl2ZSA9IGhlYWRlcjsKKwkJCQl9IGVsc2UgeworCQkJCQkvLyBhbmNob3Igd2l0aGluIGNvbnRlbnQKKwkJCQkJc2VsZi5hY3RpdmUgPSBjdXJyZW50LmNsb3Nlc3QoICIudWktYWNjb3JkaW9uLWNvbnRlbnQiICkucHJldigpOworCQkJCX0KKwkJCX0KKwkJfQorCisJCXNlbGYuYWN0aXZlID0gc2VsZi5fZmluZEFjdGl2ZSggc2VsZi5hY3RpdmUgfHwgb3B0aW9ucy5hY3RpdmUgKQorCQkJLmFkZENsYXNzKCAidWktc3RhdGUtZGVmYXVsdCB1aS1zdGF0ZS1hY3RpdmUiICkKKwkJCS50b2dnbGVDbGFzcyggInVpLWNvcm5lci1hbGwiICkKKwkJCS50b2dnbGVDbGFzcyggInVpLWNvcm5lci10b3AiICk7CisJCXNlbGYuYWN0aXZlLm5leHQoKS5hZGRDbGFzcyggInVpLWFjY29yZGlvbi1jb250ZW50LWFjdGl2ZSIgKTsKKworCQlzZWxmLl9jcmVhdGVJY29ucygpOworCQlzZWxmLnJlc2l6ZSgpOworCQkKKwkJLy8gQVJJQQorCQlzZWxmLmVsZW1lbnQuYXR0ciggInJvbGUiLCAidGFibGlzdCIgKTsKKworCQlzZWxmLmhlYWRlcnMKKwkJCS5hdHRyKCAicm9sZSIsICJ0YWIiICkKKwkJCS5iaW5kKCAia2V5ZG93bi5hY2NvcmRpb24iLCBmdW5jdGlvbiggZXZlbnQgKSB7CisJCQkJcmV0dXJuIHNlbGYuX2tleWRvd24oIGV2ZW50ICk7CisJCQl9KQorCQkJLm5leHQoKQorCQkJCS5hdHRyKCAicm9sZSIsICJ0YWJwYW5lbCIgKTsKKworCQlzZWxmLmhlYWRlcnMKKwkJCS5ub3QoIHNlbGYuYWN0aXZlIHx8ICIiICkKKwkJCS5hdHRyKHsKKwkJCQkiYXJpYS1leHBhbmRlZCI6ICJmYWxzZSIsCisJCQkJImFyaWEtc2VsZWN0ZWQiOiAiZmFsc2UiLAorCQkJCXRhYkluZGV4OiAtMQorCQkJfSkKKwkJCS5uZXh0KCkKKwkJCQkuaGlkZSgpOworCisJCS8vIG1ha2Ugc3VyZSBhdCBsZWFzdCBvbmUgaGVhZGVyIGlzIGluIHRoZSB0YWIgb3JkZXIKKwkJaWYgKCAhc2VsZi5hY3RpdmUubGVuZ3RoICkgeworCQkJc2VsZi5oZWFkZXJzLmVxKCAwICkuYXR0ciggInRhYkluZGV4IiwgMCApOworCQl9IGVsc2UgeworCQkJc2VsZi5hY3RpdmUKKwkJCQkuYXR0cih7CisJCQkJCSJhcmlhLWV4cGFuZGVkIjogInRydWUiLAorCQkJCQkiYXJpYS1zZWxlY3RlZCI6ICJ0cnVlIiwKKwkJCQkJdGFiSW5kZXg6IDAKKwkJCQl9KTsKKwkJfQorCisJCS8vIG9ubHkgbmVlZCBsaW5rcyBpbiB0YWIgb3JkZXIgZm9yIFNhZmFyaQorCQlpZiAoICEkLmJyb3dzZXIuc2FmYXJpICkgeworCQkJc2VsZi5oZWFkZXJzLmZpbmQoICJhIiApLmF0dHIoICJ0YWJJbmRleCIsIC0xICk7CisJCX0KKworCQlpZiAoIG9wdGlvbnMuZXZlbnQgKSB7CisJCQlzZWxmLmhlYWRlcnMuYmluZCggb3B0aW9ucy5ldmVudC5zcGxpdCgiICIpLmpvaW4oIi5hY2NvcmRpb24gIikgKyAiLmFjY29yZGlvbiIsIGZ1bmN0aW9uKGV2ZW50KSB7CisJCQkJc2VsZi5fY2xpY2tIYW5kbGVyLmNhbGwoIHNlbGYsIGV2ZW50LCB0aGlzICk7CisJCQkJZXZlbnQucHJldmVudERlZmF1bHQoKTsKKwkJCX0pOworCQl9CisJfSwKKworCV9jcmVhdGVJY29uczogZnVuY3Rpb24oKSB7CisJCXZhciBvcHRpb25zID0gdGhpcy5vcHRpb25zOworCQlpZiAoIG9wdGlvbnMuaWNvbnMgKSB7CisJCQkkKCAiPHNwYW4+PC9zcGFuPiIgKQorCQkJCS5hZGRDbGFzcyggInVpLWljb24gIiArIG9wdGlvbnMuaWNvbnMuaGVhZGVyICkKKwkJCQkucHJlcGVuZFRvKCB0aGlzLmhlYWRlcnMgKTsKKwkJCXRoaXMuYWN0aXZlLmNoaWxkcmVuKCAiLnVpLWljb24iICkKKwkJCQkudG9nZ2xlQ2xhc3Mob3B0aW9ucy5pY29ucy5oZWFkZXIpCisJCQkJLnRvZ2dsZUNsYXNzKG9wdGlvbnMuaWNvbnMuaGVhZGVyU2VsZWN0ZWQpOworCQkJdGhpcy5lbGVtZW50LmFkZENsYXNzKCAidWktYWNjb3JkaW9uLWljb25zIiApOworCQl9CisJfSwKKworCV9kZXN0cm95SWNvbnM6IGZ1bmN0aW9uKCkgeworCQl0aGlzLmhlYWRlcnMuY2hpbGRyZW4oICIudWktaWNvbiIgKS5yZW1vdmUoKTsKKwkJdGhpcy5lbGVtZW50LnJlbW92ZUNsYXNzKCAidWktYWNjb3JkaW9uLWljb25zIiApOworCX0sCisKKwlkZXN0cm95OiBmdW5jdGlvbigpIHsKKwkJdmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7CisKKwkJdGhpcy5lbGVtZW50CisJCQkucmVtb3ZlQ2xhc3MoICJ1aS1hY2NvcmRpb24gdWktd2lkZ2V0IHVpLWhlbHBlci1yZXNldCIgKQorCQkJLnJlbW92ZUF0dHIoICJyb2xlIiApOworCisJCXRoaXMuaGVhZGVycworCQkJLnVuYmluZCggIi5hY2NvcmRpb24iICkKKwkJCS5yZW1vdmVDbGFzcyggInVpLWFjY29yZGlvbi1oZWFkZXIgdWktYWNjb3JkaW9uLWRpc2FibGVkIHVpLWhlbHBlci1yZXNldCB1aS1zdGF0ZS1kZWZhdWx0IHVpLWNvcm5lci1hbGwgdWktc3RhdGUtYWN0aXZlIHVpLXN0YXRlLWRpc2FibGVkIHVpLWNvcm5lci10b3AiICkKKwkJCS5yZW1vdmVBdHRyKCAicm9sZSIgKQorCQkJLnJlbW92ZUF0dHIoICJhcmlhLWV4cGFuZGVkIiApCisJCQkucmVtb3ZlQXR0ciggImFyaWEtc2VsZWN0ZWQiICkKKwkJCS5yZW1vdmVBdHRyKCAidGFiSW5kZXgiICk7CisKKwkJdGhpcy5oZWFkZXJzLmZpbmQoICJhIiApLnJlbW92ZUF0dHIoICJ0YWJJbmRleCIgKTsKKwkJdGhpcy5fZGVzdHJveUljb25zKCk7CisJCXZhciBjb250ZW50cyA9IHRoaXMuaGVhZGVycy5uZXh0KCkKKwkJCS5jc3MoICJkaXNwbGF5IiwgIiIgKQorCQkJLnJlbW92ZUF0dHIoICJyb2xlIiApCisJCQkucmVtb3ZlQ2xhc3MoICJ1aS1oZWxwZXItcmVzZXQgdWktd2lkZ2V0LWNvbnRlbnQgdWktY29ybmVyLWJvdHRvbSB1aS1hY2NvcmRpb24tY29udGVudCB1aS1hY2NvcmRpb24tY29udGVudC1hY3RpdmUgdWktYWNjb3JkaW9uLWRpc2FibGVkIHVpLXN0YXRlLWRpc2FibGVkIiApOworCQlpZiAoIG9wdGlvbnMuYXV0b0hlaWdodCB8fCBvcHRpb25zLmZpbGxIZWlnaHQgKSB7CisJCQljb250ZW50cy5jc3MoICJoZWlnaHQiLCAiIiApOworCQl9CisKKwkJcmV0dXJuICQuV2lkZ2V0LnByb3RvdHlwZS5kZXN0cm95LmNhbGwoIHRoaXMgKTsKKwl9LAorCisJX3NldE9wdGlvbjogZnVuY3Rpb24oIGtleSwgdmFsdWUgKSB7CisJCSQuV2lkZ2V0LnByb3RvdHlwZS5fc2V0T3B0aW9uLmFwcGx5KCB0aGlzLCBhcmd1bWVudHMgKTsKKwkJCQorCQlpZiAoIGtleSA9PSAiYWN0aXZlIiApIHsKKwkJCXRoaXMuYWN0aXZhdGUoIHZhbHVlICk7CisJCX0KKwkJaWYgKCBrZXkgPT0gImljb25zIiApIHsKKwkJCXRoaXMuX2Rlc3Ryb3lJY29ucygpOworCQkJaWYgKCB2YWx1ZSApIHsKKwkJCQl0aGlzLl9jcmVhdGVJY29ucygpOworCQkJfQorCQl9CisJCS8vICM1MzMyIC0gb3BhY2l0eSBkb2Vzbid0IGNhc2NhZGUgdG8gcG9zaXRpb25lZCBlbGVtZW50cyBpbiBJRQorCQkvLyBzbyB3ZSBuZWVkIHRvIGFkZCB0aGUgZGlzYWJsZWQgY2xhc3MgdG8gdGhlIGhlYWRlcnMgYW5kIHBhbmVscworCQlpZiAoIGtleSA9PSAiZGlzYWJsZWQiICkgeworCQkJdGhpcy5oZWFkZXJzLmFkZCh0aGlzLmhlYWRlcnMubmV4dCgpKQorCQkJCVsgdmFsdWUgPyAiYWRkQ2xhc3MiIDogInJlbW92ZUNsYXNzIiBdKAorCQkJCQkidWktYWNjb3JkaW9uLWRpc2FibGVkIHVpLXN0YXRlLWRpc2FibGVkIiApOworCQl9CisJfSwKKworCV9rZXlkb3duOiBmdW5jdGlvbiggZXZlbnQgKSB7CisJCWlmICggdGhpcy5vcHRpb25zLmRpc2FibGVkIHx8IGV2ZW50LmFsdEtleSB8fCBldmVudC5jdHJsS2V5ICkgeworCQkJcmV0dXJuOworCQl9CisKKwkJdmFyIGtleUNvZGUgPSAkLnVpLmtleUNvZGUsCisJCQlsZW5ndGggPSB0aGlzLmhlYWRlcnMubGVuZ3RoLAorCQkJY3VycmVudEluZGV4ID0gdGhpcy5oZWFkZXJzLmluZGV4KCBldmVudC50YXJnZXQgKSwKKwkJCXRvRm9jdXMgPSBmYWxzZTsKKworCQlzd2l0Y2ggKCBldmVudC5rZXlDb2RlICkgeworCQkJY2FzZSBrZXlDb2RlLlJJR0hUOgorCQkJY2FzZSBrZXlDb2RlLkRPV046CisJCQkJdG9Gb2N1cyA9IHRoaXMuaGVhZGVyc1sgKCBjdXJyZW50SW5kZXggKyAxICkgJSBsZW5ndGggXTsKKwkJCQlicmVhazsKKwkJCWNhc2Uga2V5Q29kZS5MRUZUOgorCQkJY2FzZSBrZXlDb2RlLlVQOgorCQkJCXRvRm9jdXMgPSB0aGlzLmhlYWRlcnNbICggY3VycmVudEluZGV4IC0gMSArIGxlbmd0aCApICUgbGVuZ3RoIF07CisJCQkJYnJlYWs7CisJCQljYXNlIGtleUNvZGUuU1BBQ0U6CisJCQljYXNlIGtleUNvZGUuRU5URVI6CisJCQkJdGhpcy5fY2xpY2tIYW5kbGVyKCB7IHRhcmdldDogZXZlbnQudGFyZ2V0IH0sIGV2ZW50LnRhcmdldCApOworCQkJCWV2ZW50LnByZXZlbnREZWZhdWx0KCk7CisJCX0KKworCQlpZiAoIHRvRm9jdXMgKSB7CisJCQkkKCBldmVudC50YXJnZXQgKS5hdHRyKCAidGFiSW5kZXgiLCAtMSApOworCQkJJCggdG9Gb2N1cyApLmF0dHIoICJ0YWJJbmRleCIsIDAgKTsKKwkJCXRvRm9jdXMuZm9jdXMoKTsKKwkJCXJldHVybiBmYWxzZTsKKwkJfQorCisJCXJldHVybiB0cnVlOworCX0sCisKKwlyZXNpemU6IGZ1bmN0aW9uKCkgeworCQl2YXIgb3B0aW9ucyA9IHRoaXMub3B0aW9ucywKKwkJCW1heEhlaWdodDsKKworCQlpZiAoIG9wdGlvbnMuZmlsbFNwYWNlICkgeworCQkJaWYgKCAkLmJyb3dzZXIubXNpZSApIHsKKwkJCQl2YXIgZGVmT3ZlcmZsb3cgPSB0aGlzLmVsZW1lbnQucGFyZW50KCkuY3NzKCAib3ZlcmZsb3ciICk7CisJCQkJdGhpcy5lbGVtZW50LnBhcmVudCgpLmNzcyggIm92ZXJmbG93IiwgImhpZGRlbiIpOworCQkJfQorCQkJbWF4SGVpZ2h0ID0gdGhpcy5lbGVtZW50LnBhcmVudCgpLmhlaWdodCgpOworCQkJaWYgKCQuYnJvd3Nlci5tc2llKSB7CisJCQkJdGhpcy5lbGVtZW50LnBhcmVudCgpLmNzcyggIm92ZXJmbG93IiwgZGVmT3ZlcmZsb3cgKTsKKwkJCX0KKworCQkJdGhpcy5oZWFkZXJzLmVhY2goZnVuY3Rpb24oKSB7CisJCQkJbWF4SGVpZ2h0IC09ICQoIHRoaXMgKS5vdXRlckhlaWdodCggdHJ1ZSApOworCQkJfSk7CisKKwkJCXRoaXMuaGVhZGVycy5uZXh0KCkKKwkJCQkuZWFjaChmdW5jdGlvbigpIHsKKwkJCQkJJCggdGhpcyApLmhlaWdodCggTWF0aC5tYXgoIDAsIG1heEhlaWdodCAtCisJCQkJCQkkKCB0aGlzICkuaW5uZXJIZWlnaHQoKSArICQoIHRoaXMgKS5oZWlnaHQoKSApICk7CisJCQkJfSkKKwkJCQkuY3NzKCAib3ZlcmZsb3ciLCAiYXV0byIgKTsKKwkJfSBlbHNlIGlmICggb3B0aW9ucy5hdXRvSGVpZ2h0ICkgeworCQkJbWF4SGVpZ2h0ID0gMDsKKwkJCXRoaXMuaGVhZGVycy5uZXh0KCkKKwkJCQkuZWFjaChmdW5jdGlvbigpIHsKKwkJCQkJbWF4SGVpZ2h0ID0gTWF0aC5tYXgoIG1heEhlaWdodCwgJCggdGhpcyApLmhlaWdodCggIiIgKS5oZWlnaHQoKSApOworCQkJCX0pCisJCQkJLmhlaWdodCggbWF4SGVpZ2h0ICk7CisJCX0KKworCQlyZXR1cm4gdGhpczsKKwl9LAorCisJYWN0aXZhdGU6IGZ1bmN0aW9uKCBpbmRleCApIHsKKwkJLy8gVE9ETyB0aGlzIGdldHMgY2FsbGVkIG9uIGluaXQsIGNoYW5naW5nIHRoZSBvcHRpb24gd2l0aG91dCBhbiBleHBsaWNpdCBjYWxsIGZvciB0aGF0CisJCXRoaXMub3B0aW9ucy5hY3RpdmUgPSBpbmRleDsKKwkJLy8gY2FsbCBjbGlja0hhbmRsZXIgd2l0aCBjdXN0b20gZXZlbnQKKwkJdmFyIGFjdGl2ZSA9IHRoaXMuX2ZpbmRBY3RpdmUoIGluZGV4IClbIDAgXTsKKwkJdGhpcy5fY2xpY2tIYW5kbGVyKCB7IHRhcmdldDogYWN0aXZlIH0sIGFjdGl2ZSApOworCisJCXJldHVybiB0aGlzOworCX0sCisKKwlfZmluZEFjdGl2ZTogZnVuY3Rpb24oIHNlbGVjdG9yICkgeworCQlyZXR1cm4gc2VsZWN0b3IKKwkJCT8gdHlwZW9mIHNlbGVjdG9yID09PSAibnVtYmVyIgorCQkJCT8gdGhpcy5oZWFkZXJzLmZpbHRlciggIjplcSgiICsgc2VsZWN0b3IgKyAiKSIgKQorCQkJCTogdGhpcy5oZWFkZXJzLm5vdCggdGhpcy5oZWFkZXJzLm5vdCggc2VsZWN0b3IgKSApCisJCQk6IHNlbGVjdG9yID09PSBmYWxzZQorCQkJCT8gJCggW10gKQorCQkJCTogdGhpcy5oZWFkZXJzLmZpbHRlciggIjplcSgwKSIgKTsKKwl9LAorCisJLy8gVE9ETyBpc24ndCBldmVudC50YXJnZXQgZW5vdWdoPyB3aHkgdGhlIHNlcGFyYXRlIHRhcmdldCBhcmd1bWVudD8KKwlfY2xpY2tIYW5kbGVyOiBmdW5jdGlvbiggZXZlbnQsIHRhcmdldCApIHsKKwkJdmFyIG9wdGlvbnMgPSB0aGlzLm9wdGlvbnM7CisJCWlmICggb3B0aW9ucy5kaXNhYmxlZCApIHsKKwkJCXJldHVybjsKKwkJfQorCisJCS8vIGNhbGxlZCBvbmx5IHdoZW4gdXNpbmcgYWN0aXZhdGUoZmFsc2UpIHRvIGNsb3NlIGFsbCBwYXJ0cyBwcm9ncmFtbWF0aWNhbGx5CisJCWlmICggIWV2ZW50LnRhcmdldCApIHsKKwkJCWlmICggIW9wdGlvbnMuY29sbGFwc2libGUgKSB7CisJCQkJcmV0dXJuOworCQkJfQorCQkJdGhpcy5hY3RpdmUKKwkJCQkucmVtb3ZlQ2xhc3MoICJ1aS1zdGF0ZS1hY3RpdmUgdWktY29ybmVyLXRvcCIgKQorCQkJCS5hZGRDbGFzcyggInVpLXN0YXRlLWRlZmF1bHQgdWktY29ybmVyLWFsbCIgKQorCQkJCS5jaGlsZHJlbiggIi51aS1pY29uIiApCisJCQkJCS5yZW1vdmVDbGFzcyggb3B0aW9ucy5pY29ucy5oZWFkZXJTZWxlY3RlZCApCisJCQkJCS5hZGRDbGFzcyggb3B0aW9ucy5pY29ucy5oZWFkZXIgKTsKKwkJCXRoaXMuYWN0aXZlLm5leHQoKS5hZGRDbGFzcyggInVpLWFjY29yZGlvbi1jb250ZW50LWFjdGl2ZSIgKTsKKwkJCXZhciB0b0hpZGUgPSB0aGlzLmFjdGl2ZS5uZXh0KCksCisJCQkJZGF0YSA9IHsKKwkJCQkJb3B0aW9uczogb3B0aW9ucywKKwkJCQkJbmV3SGVhZGVyOiAkKCBbXSApLAorCQkJCQlvbGRIZWFkZXI6IG9wdGlvbnMuYWN0aXZlLAorCQkJCQluZXdDb250ZW50OiAkKCBbXSApLAorCQkJCQlvbGRDb250ZW50OiB0b0hpZGUKKwkJCQl9LAorCQkJCXRvU2hvdyA9ICggdGhpcy5hY3RpdmUgPSAkKCBbXSApICk7CisJCQl0aGlzLl90b2dnbGUoIHRvU2hvdywgdG9IaWRlLCBkYXRhICk7CisJCQlyZXR1cm47CisJCX0KKworCQkvLyBnZXQgdGhlIGNsaWNrIHRhcmdldAorCQl2YXIgY2xpY2tlZCA9ICQoIGV2ZW50LmN1cnJlbnRUYXJnZXQgfHwgdGFyZ2V0ICksCisJCQljbGlja2VkSXNBY3RpdmUgPSBjbGlja2VkWzBdID09PSB0aGlzLmFjdGl2ZVswXTsKKworCQkvLyBUT0RPIHRoZSBvcHRpb24gaXMgY2hhbmdlZCwgaXMgdGhhdCBjb3JyZWN0PworCQkvLyBUT0RPIGlmIGl0IGlzIGNvcnJlY3QsIHNob3VsZG4ndCB0aGF0IGhhcHBlbiBhZnRlciBkZXRlcm1pbmluZyB0aGF0IHRoZSBjbGljayBpcyB2YWxpZD8KKwkJb3B0aW9ucy5hY3RpdmUgPSBvcHRpb25zLmNvbGxhcHNpYmxlICYmIGNsaWNrZWRJc0FjdGl2ZSA/CisJCQlmYWxzZSA6CisJCQl0aGlzLmhlYWRlcnMuaW5kZXgoIGNsaWNrZWQgKTsKKworCQkvLyBpZiBhbmltYXRpb25zIGFyZSBzdGlsbCBhY3RpdmUsIG9yIHRoZSBhY3RpdmUgaGVhZGVyIGlzIHRoZSB0YXJnZXQsIGlnbm9yZSBjbGljaworCQlpZiAoIHRoaXMucnVubmluZyB8fCAoICFvcHRpb25zLmNvbGxhcHNpYmxlICYmIGNsaWNrZWRJc0FjdGl2ZSApICkgeworCQkJcmV0dXJuOworCQl9CisKKwkJLy8gZmluZCBlbGVtZW50cyB0byBzaG93IGFuZCBoaWRlCisJCXZhciBhY3RpdmUgPSB0aGlzLmFjdGl2ZSwKKwkJCXRvU2hvdyA9IGNsaWNrZWQubmV4dCgpLAorCQkJdG9IaWRlID0gdGhpcy5hY3RpdmUubmV4dCgpLAorCQkJZGF0YSA9IHsKKwkJCQlvcHRpb25zOiBvcHRpb25zLAorCQkJCW5ld0hlYWRlcjogY2xpY2tlZElzQWN0aXZlICYmIG9wdGlvbnMuY29sbGFwc2libGUgPyAkKFtdKSA6IGNsaWNrZWQsCisJCQkJb2xkSGVhZGVyOiB0aGlzLmFjdGl2ZSwKKwkJCQluZXdDb250ZW50OiBjbGlja2VkSXNBY3RpdmUgJiYgb3B0aW9ucy5jb2xsYXBzaWJsZSA/ICQoW10pIDogdG9TaG93LAorCQkJCW9sZENvbnRlbnQ6IHRvSGlkZQorCQkJfSwKKwkJCWRvd24gPSB0aGlzLmhlYWRlcnMuaW5kZXgoIHRoaXMuYWN0aXZlWzBdICkgPiB0aGlzLmhlYWRlcnMuaW5kZXgoIGNsaWNrZWRbMF0gKTsKKworCQkvLyB3aGVuIHRoZSBjYWxsIHRvIC5fdG9nZ2xlKCkgY29tZXMgYWZ0ZXIgdGhlIGNsYXNzIGNoYW5nZXMKKwkJLy8gaXQgY2F1c2VzIGEgdmVyeSBvZGQgYnVnIGluIElFIDggKHNlZSAjNjcyMCkKKwkJdGhpcy5hY3RpdmUgPSBjbGlja2VkSXNBY3RpdmUgPyAkKFtdKSA6IGNsaWNrZWQ7CisJCXRoaXMuX3RvZ2dsZSggdG9TaG93LCB0b0hpZGUsIGRhdGEsIGNsaWNrZWRJc0FjdGl2ZSwgZG93biApOworCisJCS8vIHN3aXRjaCBjbGFzc2VzCisJCWFjdGl2ZQorCQkJLnJlbW92ZUNsYXNzKCAidWktc3RhdGUtYWN0aXZlIHVpLWNvcm5lci10b3AiICkKKwkJCS5hZGRDbGFzcyggInVpLXN0YXRlLWRlZmF1bHQgdWktY29ybmVyLWFsbCIgKQorCQkJLmNoaWxkcmVuKCAiLnVpLWljb24iICkKKwkJCQkucmVtb3ZlQ2xhc3MoIG9wdGlvbnMuaWNvbnMuaGVhZGVyU2VsZWN0ZWQgKQorCQkJCS5hZGRDbGFzcyggb3B0aW9ucy5pY29ucy5oZWFkZXIgKTsKKwkJaWYgKCAhY2xpY2tlZElzQWN0aXZlICkgeworCQkJY2xpY2tlZAorCQkJCS5yZW1vdmVDbGFzcyggInVpLXN0YXRlLWRlZmF1bHQgdWktY29ybmVyLWFsbCIgKQorCQkJCS5hZGRDbGFzcyggInVpLXN0YXRlLWFjdGl2ZSB1aS1jb3JuZXItdG9wIiApCisJCQkJLmNoaWxkcmVuKCAiLnVpLWljb24iICkKKwkJCQkJLnJlbW92ZUNsYXNzKCBvcHRpb25zLmljb25zLmhlYWRlciApCisJCQkJCS5hZGRDbGFzcyggb3B0aW9ucy5pY29ucy5oZWFkZXJTZWxlY3RlZCApOworCQkJY2xpY2tlZAorCQkJCS5uZXh0KCkKKwkJCQkuYWRkQ2xhc3MoICJ1aS1hY2NvcmRpb24tY29udGVudC1hY3RpdmUiICk7CisJCX0KKworCQlyZXR1cm47CisJfSwKKworCV90b2dnbGU6IGZ1bmN0aW9uKCB0b1Nob3csIHRvSGlkZSwgZGF0YSwgY2xpY2tlZElzQWN0aXZlLCBkb3duICkgeworCQl2YXIgc2VsZiA9IHRoaXMsCisJCQlvcHRpb25zID0gc2VsZi5vcHRpb25zOworCisJCXNlbGYudG9TaG93ID0gdG9TaG93OworCQlzZWxmLnRvSGlkZSA9IHRvSGlkZTsKKwkJc2VsZi5kYXRhID0gZGF0YTsKKworCQl2YXIgY29tcGxldGUgPSBmdW5jdGlvbigpIHsKKwkJCWlmICggIXNlbGYgKSB7CisJCQkJcmV0dXJuOworCQkJfQorCQkJcmV0dXJuIHNlbGYuX2NvbXBsZXRlZC5hcHBseSggc2VsZiwgYXJndW1lbnRzICk7CisJCX07CisKKwkJLy8gdHJpZ2dlciBjaGFuZ2VzdGFydCBldmVudAorCQlzZWxmLl90cmlnZ2VyKCAiY2hhbmdlc3RhcnQiLCBudWxsLCBzZWxmLmRhdGEgKTsKKworCQkvLyBjb3VudCBlbGVtZW50cyB0byBhbmltYXRlCisJCXNlbGYucnVubmluZyA9IHRvSGlkZS5zaXplKCkgPT09IDAgPyB0b1Nob3cuc2l6ZSgpIDogdG9IaWRlLnNpemUoKTsKKworCQlpZiAoIG9wdGlvbnMuYW5pbWF0ZWQgKSB7CisJCQl2YXIgYW5pbU9wdGlvbnMgPSB7fTsKKworCQkJaWYgKCBvcHRpb25zLmNvbGxhcHNpYmxlICYmIGNsaWNrZWRJc0FjdGl2ZSApIHsKKwkJCQlhbmltT3B0aW9ucyA9IHsKKwkJCQkJdG9TaG93OiAkKCBbXSApLAorCQkJCQl0b0hpZGU6IHRvSGlkZSwKKwkJCQkJY29tcGxldGU6IGNvbXBsZXRlLAorCQkJCQlkb3duOiBkb3duLAorCQkJCQlhdXRvSGVpZ2h0OiBvcHRpb25zLmF1dG9IZWlnaHQgfHwgb3B0aW9ucy5maWxsU3BhY2UKKwkJCQl9OworCQkJfSBlbHNlIHsKKwkJCQlhbmltT3B0aW9ucyA9IHsKKwkJCQkJdG9TaG93OiB0b1Nob3csCisJCQkJCXRvSGlkZTogdG9IaWRlLAorCQkJCQljb21wbGV0ZTogY29tcGxldGUsCisJCQkJCWRvd246IGRvd24sCisJCQkJCWF1dG9IZWlnaHQ6IG9wdGlvbnMuYXV0b0hlaWdodCB8fCBvcHRpb25zLmZpbGxTcGFjZQorCQkJCX07CisJCQl9CisKKwkJCWlmICggIW9wdGlvbnMucHJveGllZCApIHsKKwkJCQlvcHRpb25zLnByb3hpZWQgPSBvcHRpb25zLmFuaW1hdGVkOworCQkJfQorCisJCQlpZiAoICFvcHRpb25zLnByb3hpZWREdXJhdGlvbiApIHsKKwkJCQlvcHRpb25zLnByb3hpZWREdXJhdGlvbiA9IG9wdGlvbnMuZHVyYXRpb247CisJCQl9CisKKwkJCW9wdGlvbnMuYW5pbWF0ZWQgPSAkLmlzRnVuY3Rpb24oIG9wdGlvbnMucHJveGllZCApID8KKwkJCQlvcHRpb25zLnByb3hpZWQoIGFuaW1PcHRpb25zICkgOgorCQkJCW9wdGlvbnMucHJveGllZDsKKworCQkJb3B0aW9ucy5kdXJhdGlvbiA9ICQuaXNGdW5jdGlvbiggb3B0aW9ucy5wcm94aWVkRHVyYXRpb24gKSA/CisJCQkJb3B0aW9ucy5wcm94aWVkRHVyYXRpb24oIGFuaW1PcHRpb25zICkgOgorCQkJCW9wdGlvbnMucHJveGllZER1cmF0aW9uOworCisJCQl2YXIgYW5pbWF0aW9ucyA9ICQudWkuYWNjb3JkaW9uLmFuaW1hdGlvbnMsCisJCQkJZHVyYXRpb24gPSBvcHRpb25zLmR1cmF0aW9uLAorCQkJCWVhc2luZyA9IG9wdGlvbnMuYW5pbWF0ZWQ7CisKKwkJCWlmICggZWFzaW5nICYmICFhbmltYXRpb25zWyBlYXNpbmcgXSAmJiAhJC5lYXNpbmdbIGVhc2luZyBdICkgeworCQkJCWVhc2luZyA9ICJzbGlkZSI7CisJCQl9CisJCQlpZiAoICFhbmltYXRpb25zWyBlYXNpbmcgXSApIHsKKwkJCQlhbmltYXRpb25zWyBlYXNpbmcgXSA9IGZ1bmN0aW9uKCBvcHRpb25zICkgeworCQkJCQl0aGlzLnNsaWRlKCBvcHRpb25zLCB7CisJCQkJCQllYXNpbmc6IGVhc2luZywKKwkJCQkJCWR1cmF0aW9uOiBkdXJhdGlvbiB8fCA3MDAKKwkJCQkJfSk7CisJCQkJfTsKKwkJCX0KKworCQkJYW5pbWF0aW9uc1sgZWFzaW5nIF0oIGFuaW1PcHRpb25zICk7CisJCX0gZWxzZSB7CisJCQlpZiAoIG9wdGlvbnMuY29sbGFwc2libGUgJiYgY2xpY2tlZElzQWN0aXZlICkgeworCQkJCXRvU2hvdy50b2dnbGUoKTsKKwkJCX0gZWxzZSB7CisJCQkJdG9IaWRlLmhpZGUoKTsKKwkJCQl0b1Nob3cuc2hvdygpOworCQkJfQorCisJCQljb21wbGV0ZSggdHJ1ZSApOworCQl9CisKKwkJLy8gVE9ETyBhc3NlcnQgdGhhdCB0aGUgYmx1ciBhbmQgZm9jdXMgdHJpZ2dlcnMgYXJlIHJlYWxseSBuZWNlc3NhcnksIHJlbW92ZSBvdGhlcndpc2UKKwkJdG9IaWRlLnByZXYoKQorCQkJLmF0dHIoeworCQkJCSJhcmlhLWV4cGFuZGVkIjogImZhbHNlIiwKKwkJCQkiYXJpYS1zZWxlY3RlZCI6ICJmYWxzZSIsCisJCQkJdGFiSW5kZXg6IC0xCisJCQl9KQorCQkJLmJsdXIoKTsKKwkJdG9TaG93LnByZXYoKQorCQkJLmF0dHIoeworCQkJCSJhcmlhLWV4cGFuZGVkIjogInRydWUiLAorCQkJCSJhcmlhLXNlbGVjdGVkIjogInRydWUiLAorCQkJCXRhYkluZGV4OiAwCisJCQl9KQorCQkJLmZvY3VzKCk7CisJfSwKKworCV9jb21wbGV0ZWQ6IGZ1bmN0aW9uKCBjYW5jZWwgKSB7CisJCXRoaXMucnVubmluZyA9IGNhbmNlbCA/IDAgOiAtLXRoaXMucnVubmluZzsKKwkJaWYgKCB0aGlzLnJ1bm5pbmcgKSB7CisJCQlyZXR1cm47CisJCX0KKworCQlpZiAoIHRoaXMub3B0aW9ucy5jbGVhclN0eWxlICkgeworCQkJdGhpcy50b1Nob3cuYWRkKCB0aGlzLnRvSGlkZSApLmNzcyh7CisJCQkJaGVpZ2h0OiAiIiwKKwkJCQlvdmVyZmxvdzogIiIKKwkJCX0pOworCQl9CisKKwkJLy8gb3RoZXIgY2xhc3NlcyBhcmUgcmVtb3ZlZCBiZWZvcmUgdGhlIGFuaW1hdGlvbjsgdGhpcyBvbmUgbmVlZHMgdG8gc3RheSB1bnRpbCBjb21wbGV0ZWQKKwkJdGhpcy50b0hpZGUucmVtb3ZlQ2xhc3MoICJ1aS1hY2NvcmRpb24tY29udGVudC1hY3RpdmUiICk7CisJCS8vIFdvcmsgYXJvdW5kIGZvciByZW5kZXJpbmcgYnVnIGluIElFICgjNTQyMSkKKwkJaWYgKCB0aGlzLnRvSGlkZS5sZW5ndGggKSB7CisJCQl0aGlzLnRvSGlkZS5wYXJlbnQoKVswXS5jbGFzc05hbWUgPSB0aGlzLnRvSGlkZS5wYXJlbnQoKVswXS5jbGFzc05hbWU7CisJCX0KKworCQl0aGlzLl90cmlnZ2VyKCAiY2hhbmdlIiwgbnVsbCwgdGhpcy5kYXRhICk7CisJfQorfSk7CisKKyQuZXh0ZW5kKCAkLnVpLmFjY29yZGlvbiwgeworCXZlcnNpb246ICIxLjguMTYiLAorCWFuaW1hdGlvbnM6IHsKKwkJc2xpZGU6IGZ1bmN0aW9uKCBvcHRpb25zLCBhZGRpdGlvbnMgKSB7CisJCQlvcHRpb25zID0gJC5leHRlbmQoeworCQkJCWVhc2luZzogInN3aW5nIiwKKwkJCQlkdXJhdGlvbjogMzAwCisJCQl9LCBvcHRpb25zLCBhZGRpdGlvbnMgKTsKKwkJCWlmICggIW9wdGlvbnMudG9IaWRlLnNpemUoKSApIHsKKwkJCQlvcHRpb25zLnRvU2hvdy5hbmltYXRlKHsKKwkJCQkJaGVpZ2h0OiAic2hvdyIsCisJCQkJCXBhZGRpbmdUb3A6ICJzaG93IiwKKwkJCQkJcGFkZGluZ0JvdHRvbTogInNob3ciCisJCQkJfSwgb3B0aW9ucyApOworCQkJCXJldHVybjsKKwkJCX0KKwkJCWlmICggIW9wdGlvbnMudG9TaG93LnNpemUoKSApIHsKKwkJCQlvcHRpb25zLnRvSGlkZS5hbmltYXRlKHsKKwkJCQkJaGVpZ2h0OiAiaGlkZSIsCisJCQkJCXBhZGRpbmdUb3A6ICJoaWRlIiwKKwkJCQkJcGFkZGluZ0JvdHRvbTogImhpZGUiCisJCQkJfSwgb3B0aW9ucyApOworCQkJCXJldHVybjsKKwkJCX0KKwkJCXZhciBvdmVyZmxvdyA9IG9wdGlvbnMudG9TaG93LmNzcyggIm92ZXJmbG93IiApLAorCQkJCXBlcmNlbnREb25lID0gMCwKKwkJCQlzaG93UHJvcHMgPSB7fSwKKwkJCQloaWRlUHJvcHMgPSB7fSwKKwkJCQlmeEF0dHJzID0gWyAiaGVpZ2h0IiwgInBhZGRpbmdUb3AiLCAicGFkZGluZ0JvdHRvbSIgXSwKKwkJCQlvcmlnaW5hbFdpZHRoOworCQkJLy8gZml4IHdpZHRoIGJlZm9yZSBjYWxjdWxhdGluZyBoZWlnaHQgb2YgaGlkZGVuIGVsZW1lbnQKKwkJCXZhciBzID0gb3B0aW9ucy50b1Nob3c7CisJCQlvcmlnaW5hbFdpZHRoID0gc1swXS5zdHlsZS53aWR0aDsKKwkJCXMud2lkdGgoIHBhcnNlSW50KCBzLnBhcmVudCgpLndpZHRoKCksIDEwICkKKwkJCQktIHBhcnNlSW50KCBzLmNzcyggInBhZGRpbmdMZWZ0IiApLCAxMCApCisJCQkJLSBwYXJzZUludCggcy5jc3MoICJwYWRkaW5nUmlnaHQiICksIDEwICkKKwkJCQktICggcGFyc2VJbnQoIHMuY3NzKCAiYm9yZGVyTGVmdFdpZHRoIiApLCAxMCApIHx8IDAgKQorCQkJCS0gKCBwYXJzZUludCggcy5jc3MoICJib3JkZXJSaWdodFdpZHRoIiApLCAxMCkgfHwgMCApICk7CisKKwkJCSQuZWFjaCggZnhBdHRycywgZnVuY3Rpb24oIGksIHByb3AgKSB7CisJCQkJaGlkZVByb3BzWyBwcm9wIF0gPSAiaGlkZSI7CisKKwkJCQl2YXIgcGFydHMgPSAoICIiICsgJC5jc3MoIG9wdGlvbnMudG9TaG93WzBdLCBwcm9wICkgKS5tYXRjaCggL14oW1xkKy0uXSspKC4qKSQvICk7CisJCQkJc2hvd1Byb3BzWyBwcm9wIF0gPSB7CisJCQkJCXZhbHVlOiBwYXJ0c1sgMSBdLAorCQkJCQl1bml0OiBwYXJ0c1sgMiBdIHx8ICJweCIKKwkJCQl9OworCQkJfSk7CisJCQlvcHRpb25zLnRvU2hvdy5jc3MoeyBoZWlnaHQ6IDAsIG92ZXJmbG93OiAiaGlkZGVuIiB9KS5zaG93KCk7CisJCQlvcHRpb25zLnRvSGlkZQorCQkJCS5maWx0ZXIoICI6aGlkZGVuIiApCisJCQkJCS5lYWNoKCBvcHRpb25zLmNvbXBsZXRlICkKKwkJCQkuZW5kKCkKKwkJCQkuZmlsdGVyKCAiOnZpc2libGUiICkKKwkJCQkuYW5pbWF0ZSggaGlkZVByb3BzLCB7CisJCQkJc3RlcDogZnVuY3Rpb24oIG5vdywgc2V0dGluZ3MgKSB7CisJCQkJCS8vIG9ubHkgY2FsY3VsYXRlIHRoZSBwZXJjZW50IHdoZW4gYW5pbWF0aW5nIGhlaWdodAorCQkJCQkvLyBJRSBnZXRzIHZlcnkgaW5jb25zaXN0ZW50IHJlc3VsdHMgd2hlbiBhbmltYXRpbmcgZWxlbWVudHMKKwkJCQkJLy8gd2l0aCBzbWFsbCB2YWx1ZXMsIHdoaWNoIGlzIGNvbW1vbiBmb3IgcGFkZGluZworCQkJCQlpZiAoIHNldHRpbmdzLnByb3AgPT0gImhlaWdodCIgKSB7CisJCQkJCQlwZXJjZW50RG9uZSA9ICggc2V0dGluZ3MuZW5kIC0gc2V0dGluZ3Muc3RhcnQgPT09IDAgKSA/IDAgOgorCQkJCQkJCSggc2V0dGluZ3Mubm93IC0gc2V0dGluZ3Muc3RhcnQgKSAvICggc2V0dGluZ3MuZW5kIC0gc2V0dGluZ3Muc3RhcnQgKTsKKwkJCQkJfQorCisJCQkJCW9wdGlvbnMudG9TaG93WyAwIF0uc3R5bGVbIHNldHRpbmdzLnByb3AgXSA9CisJCQkJCQkoIHBlcmNlbnREb25lICogc2hvd1Byb3BzWyBzZXR0aW5ncy5wcm9wIF0udmFsdWUgKQorCQkJCQkJKyBzaG93UHJvcHNbIHNldHRpbmdzLnByb3AgXS51bml0OworCQkJCX0sCisJCQkJZHVyYXRpb246IG9wdGlvbnMuZHVyYXRpb24sCisJCQkJZWFzaW5nOiBvcHRpb25zLmVhc2luZywKKwkJCQljb21wbGV0ZTogZnVuY3Rpb24oKSB7CisJCQkJCWlmICggIW9wdGlvbnMuYXV0b0hlaWdodCApIHsKKwkJCQkJCW9wdGlvbnMudG9TaG93LmNzcyggImhlaWdodCIsICIiICk7CisJCQkJCX0KKwkJCQkJb3B0aW9ucy50b1Nob3cuY3NzKHsKKwkJCQkJCXdpZHRoOiBvcmlnaW5hbFdpZHRoLAorCQkJCQkJb3ZlcmZsb3c6IG92ZXJmbG93CisJCQkJCX0pOworCQkJCQlvcHRpb25zLmNvbXBsZXRlKCk7CisJCQkJfQorCQkJfSk7CisJCX0sCisJCWJvdW5jZXNsaWRlOiBmdW5jdGlvbiggb3B0aW9ucyApIHsKKwkJCXRoaXMuc2xpZGUoIG9wdGlvbnMsIHsKKwkJCQllYXNpbmc6IG9wdGlvbnMuZG93biA/ICJlYXNlT3V0Qm91bmNlIiA6ICJzd2luZyIsCisJCQkJZHVyYXRpb246IG9wdGlvbnMuZG93biA/IDEwMDAgOiAyMDAKKwkJCX0pOworCQl9CisJfQorfSk7CisKK30pKCBqUXVlcnkgKTsKZGlmZiAtLWdpdCBhL2RvY3MvanMvanF1ZXJ5LnVpLmNvcmUuanMgYi9kb2NzL2pzL2pxdWVyeS51aS5jb3JlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjYWZiMDcKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2pzL2pxdWVyeS51aS5jb3JlLmpzCkBAIC0wLDAgKzEsMzE0IEBACisvKiEKKyAqIGpRdWVyeSBVSSAxLjguMTYKKyAqCisgKiBDb3B5cmlnaHQgMjAxMSwgQVVUSE9SUy50eHQgKGh0dHA6Ly9qcXVlcnl1aS5jb20vYWJvdXQpCisgKiBEdWFsIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgb3IgR1BMIFZlcnNpb24gMiBsaWNlbnNlcy4KKyAqIGh0dHA6Ly9qcXVlcnkub3JnL2xpY2Vuc2UKKyAqCisgKiBodHRwOi8vZG9jcy5qcXVlcnkuY29tL1VJCisgKi8KKyhmdW5jdGlvbiggJCwgdW5kZWZpbmVkICkgeworCisvLyBwcmV2ZW50IGR1cGxpY2F0ZSBsb2FkaW5nCisvLyB0aGlzIGlzIG9ubHkgYSBwcm9ibGVtIGJlY2F1c2Ugd2UgcHJveHkgZXhpc3RpbmcgZnVuY3Rpb25zCisvLyBhbmQgd2UgZG9uJ3Qgd2FudCB0byBkb3VibGUgcHJveHkgdGhlbQorJC51aSA9ICQudWkgfHwge307CitpZiAoICQudWkudmVyc2lvbiApIHsKKwlyZXR1cm47Cit9CisKKyQuZXh0ZW5kKCAkLnVpLCB7CisJdmVyc2lvbjogIjEuOC4xNiIsCisKKwlrZXlDb2RlOiB7CisJCUFMVDogMTgsCisJCUJBQ0tTUEFDRTogOCwKKwkJQ0FQU19MT0NLOiAyMCwKKwkJQ09NTUE6IDE4OCwKKwkJQ09NTUFORDogOTEsCisJCUNPTU1BTkRfTEVGVDogOTEsIC8vIENPTU1BTkQKKwkJQ09NTUFORF9SSUdIVDogOTMsCisJCUNPTlRST0w6IDE3LAorCQlERUxFVEU6IDQ2LAorCQlET1dOOiA0MCwKKwkJRU5EOiAzNSwKKwkJRU5URVI6IDEzLAorCQlFU0NBUEU6IDI3LAorCQlIT01FOiAzNiwKKwkJSU5TRVJUOiA0NSwKKwkJTEVGVDogMzcsCisJCU1FTlU6IDkzLCAvLyBDT01NQU5EX1JJR0hUCisJCU5VTVBBRF9BREQ6IDEwNywKKwkJTlVNUEFEX0RFQ0lNQUw6IDExMCwKKwkJTlVNUEFEX0RJVklERTogMTExLAorCQlOVU1QQURfRU5URVI6IDEwOCwKKwkJTlVNUEFEX01VTFRJUExZOiAxMDYsCisJCU5VTVBBRF9TVUJUUkFDVDogMTA5LAorCQlQQUdFX0RPV046IDM0LAorCQlQQUdFX1VQOiAzMywKKwkJUEVSSU9EOiAxOTAsCisJCVJJR0hUOiAzOSwKKwkJU0hJRlQ6IDE2LAorCQlTUEFDRTogMzIsCisJCVRBQjogOSwKKwkJVVA6IDM4LAorCQlXSU5ET1dTOiA5MSAvLyBDT01NQU5ECisJfQorfSk7CisKKy8vIHBsdWdpbnMKKyQuZm4uZXh0ZW5kKHsKKwlwcm9wQXR0cjogJC5mbi5wcm9wIHx8ICQuZm4uYXR0ciwKKworCV9mb2N1czogJC5mbi5mb2N1cywKKwlmb2N1czogZnVuY3Rpb24oIGRlbGF5LCBmbiApIHsKKwkJcmV0dXJuIHR5cGVvZiBkZWxheSA9PT0gIm51bWJlciIgPworCQkJdGhpcy5lYWNoKGZ1bmN0aW9uKCkgeworCQkJCXZhciBlbGVtID0gdGhpczsKKwkJCQlzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgeworCQkJCQkkKCBlbGVtICkuZm9jdXMoKTsKKwkJCQkJaWYgKCBmbiApIHsKKwkJCQkJCWZuLmNhbGwoIGVsZW0gKTsKKwkJCQkJfQorCQkJCX0sIGRlbGF5ICk7CisJCQl9KSA6CisJCQl0aGlzLl9mb2N1cy5hcHBseSggdGhpcywgYXJndW1lbnRzICk7CisJfSwKKworCXNjcm9sbFBhcmVudDogZnVuY3Rpb24oKSB7CisJCXZhciBzY3JvbGxQYXJlbnQ7CisJCWlmICgoJC5icm93c2VyLm1zaWUgJiYgKC8oc3RhdGljfHJlbGF0aXZlKS8pLnRlc3QodGhpcy5jc3MoJ3Bvc2l0aW9uJykpKSB8fCAoL2Fic29sdXRlLykudGVzdCh0aGlzLmNzcygncG9zaXRpb24nKSkpIHsKKwkJCXNjcm9sbFBhcmVudCA9IHRoaXMucGFyZW50cygpLmZpbHRlcihmdW5jdGlvbigpIHsKKwkJCQlyZXR1cm4gKC8ocmVsYXRpdmV8YWJzb2x1dGV8Zml4ZWQpLykudGVzdCgkLmN1ckNTUyh0aGlzLCdwb3NpdGlvbicsMSkpICYmICgvKGF1dG98c2Nyb2xsKS8pLnRlc3QoJC5jdXJDU1ModGhpcywnb3ZlcmZsb3cnLDEpKyQuY3VyQ1NTKHRoaXMsJ292ZXJmbG93LXknLDEpKyQuY3VyQ1NTKHRoaXMsJ292ZXJmbG93LXgnLDEpKTsKKwkJCX0pLmVxKDApOworCQl9IGVsc2UgeworCQkJc2Nyb2xsUGFyZW50ID0gdGhpcy5wYXJlbnRzKCkuZmlsdGVyKGZ1bmN0aW9uKCkgeworCQkJCXJldHVybiAoLyhhdXRvfHNjcm9sbCkvKS50ZXN0KCQuY3VyQ1NTKHRoaXMsJ292ZXJmbG93JywxKSskLmN1ckNTUyh0aGlzLCdvdmVyZmxvdy15JywxKSskLmN1ckNTUyh0aGlzLCdvdmVyZmxvdy14JywxKSk7CisJCQl9KS5lcSgwKTsKKwkJfQorCisJCXJldHVybiAoL2ZpeGVkLykudGVzdCh0aGlzLmNzcygncG9zaXRpb24nKSkgfHwgIXNjcm9sbFBhcmVudC5sZW5ndGggPyAkKGRvY3VtZW50KSA6IHNjcm9sbFBhcmVudDsKKwl9LAorCisJekluZGV4OiBmdW5jdGlvbiggekluZGV4ICkgeworCQlpZiAoIHpJbmRleCAhPT0gdW5kZWZpbmVkICkgeworCQkJcmV0dXJuIHRoaXMuY3NzKCAiekluZGV4IiwgekluZGV4ICk7CisJCX0KKworCQlpZiAoIHRoaXMubGVuZ3RoICkgeworCQkJdmFyIGVsZW0gPSAkKCB0aGlzWyAwIF0gKSwgcG9zaXRpb24sIHZhbHVlOworCQkJd2hpbGUgKCBlbGVtLmxlbmd0aCAmJiBlbGVtWyAwIF0gIT09IGRvY3VtZW50ICkgeworCQkJCS8vIElnbm9yZSB6LWluZGV4IGlmIHBvc2l0aW9uIGlzIHNldCB0byBhIHZhbHVlIHdoZXJlIHotaW5kZXggaXMgaWdub3JlZCBieSB0aGUgYnJvd3NlcgorCQkJCS8vIFRoaXMgbWFrZXMgYmVoYXZpb3Igb2YgdGhpcyBmdW5jdGlvbiBjb25zaXN0ZW50IGFjcm9zcyBicm93c2VycworCQkJCS8vIFdlYktpdCBhbHdheXMgcmV0dXJucyBhdXRvIGlmIHRoZSBlbGVtZW50IGlzIHBvc2l0aW9uZWQKKwkJCQlwb3NpdGlvbiA9IGVsZW0uY3NzKCAicG9zaXRpb24iICk7CisJCQkJaWYgKCBwb3NpdGlvbiA9PT0gImFic29sdXRlIiB8fCBwb3NpdGlvbiA9PT0gInJlbGF0aXZlIiB8fCBwb3NpdGlvbiA9PT0gImZpeGVkIiApIHsKKwkJCQkJLy8gSUUgcmV0dXJucyAwIHdoZW4gekluZGV4IGlzIG5vdCBzcGVjaWZpZWQKKwkJCQkJLy8gb3RoZXIgYnJvd3NlcnMgcmV0dXJuIGEgc3RyaW5nCisJCQkJCS8vIHdlIGlnbm9yZSB0aGUgY2FzZSBvZiBuZXN0ZWQgZWxlbWVudHMgd2l0aCBhbiBleHBsaWNpdCB2YWx1ZSBvZiAwCisJCQkJCS8vIDxkaXYgc3R5bGU9InotaW5kZXg6IC0xMDsiPjxkaXYgc3R5bGU9InotaW5kZXg6IDA7Ij48L2Rpdj48L2Rpdj4KKwkJCQkJdmFsdWUgPSBwYXJzZUludCggZWxlbS5jc3MoICJ6SW5kZXgiICksIDEwICk7CisJCQkJCWlmICggIWlzTmFOKCB2YWx1ZSApICYmIHZhbHVlICE9PSAwICkgeworCQkJCQkJcmV0dXJuIHZhbHVlOworCQkJCQl9CisJCQkJfQorCQkJCWVsZW0gPSBlbGVtLnBhcmVudCgpOworCQkJfQorCQl9CisKKwkJcmV0dXJuIDA7CisJfSwKKworCWRpc2FibGVTZWxlY3Rpb246IGZ1bmN0aW9uKCkgeworCQlyZXR1cm4gdGhpcy5iaW5kKCAoICQuc3VwcG9ydC5zZWxlY3RzdGFydCA/ICJzZWxlY3RzdGFydCIgOiAibW91c2Vkb3duIiApICsKKwkJCSIudWktZGlzYWJsZVNlbGVjdGlvbiIsIGZ1bmN0aW9uKCBldmVudCApIHsKKwkJCQlldmVudC5wcmV2ZW50RGVmYXVsdCgpOworCQkJfSk7CisJfSwKKworCWVuYWJsZVNlbGVjdGlvbjogZnVuY3Rpb24oKSB7CisJCXJldHVybiB0aGlzLnVuYmluZCggIi51aS1kaXNhYmxlU2VsZWN0aW9uIiApOworCX0KK30pOworCiskLmVhY2goIFsgIldpZHRoIiwgIkhlaWdodCIgXSwgZnVuY3Rpb24oIGksIG5hbWUgKSB7CisJdmFyIHNpZGUgPSBuYW1lID09PSAiV2lkdGgiID8gWyAiTGVmdCIsICJSaWdodCIgXSA6IFsgIlRvcCIsICJCb3R0b20iIF0sCisJCXR5cGUgPSBuYW1lLnRvTG93ZXJDYXNlKCksCisJCW9yaWcgPSB7CisJCQlpbm5lcldpZHRoOiAkLmZuLmlubmVyV2lkdGgsCisJCQlpbm5lckhlaWdodDogJC5mbi5pbm5lckhlaWdodCwKKwkJCW91dGVyV2lkdGg6ICQuZm4ub3V0ZXJXaWR0aCwKKwkJCW91dGVySGVpZ2h0OiAkLmZuLm91dGVySGVpZ2h0CisJCX07CisKKwlmdW5jdGlvbiByZWR1Y2UoIGVsZW0sIHNpemUsIGJvcmRlciwgbWFyZ2luICkgeworCQkkLmVhY2goIHNpZGUsIGZ1bmN0aW9uKCkgeworCQkJc2l6ZSAtPSBwYXJzZUZsb2F0KCAkLmN1ckNTUyggZWxlbSwgInBhZGRpbmciICsgdGhpcywgdHJ1ZSkgKSB8fCAwOworCQkJaWYgKCBib3JkZXIgKSB7CisJCQkJc2l6ZSAtPSBwYXJzZUZsb2F0KCAkLmN1ckNTUyggZWxlbSwgImJvcmRlciIgKyB0aGlzICsgIldpZHRoIiwgdHJ1ZSkgKSB8fCAwOworCQkJfQorCQkJaWYgKCBtYXJnaW4gKSB7CisJCQkJc2l6ZSAtPSBwYXJzZUZsb2F0KCAkLmN1ckNTUyggZWxlbSwgIm1hcmdpbiIgKyB0aGlzLCB0cnVlKSApIHx8IDA7CisJCQl9CisJCX0pOworCQlyZXR1cm4gc2l6ZTsKKwl9CisKKwkkLmZuWyAiaW5uZXIiICsgbmFtZSBdID0gZnVuY3Rpb24oIHNpemUgKSB7CisJCWlmICggc2l6ZSA9PT0gdW5kZWZpbmVkICkgeworCQkJcmV0dXJuIG9yaWdbICJpbm5lciIgKyBuYW1lIF0uY2FsbCggdGhpcyApOworCQl9CisKKwkJcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpIHsKKwkJCSQoIHRoaXMgKS5jc3MoIHR5cGUsIHJlZHVjZSggdGhpcywgc2l6ZSApICsgInB4IiApOworCQl9KTsKKwl9OworCisJJC5mblsgIm91dGVyIiArIG5hbWVdID0gZnVuY3Rpb24oIHNpemUsIG1hcmdpbiApIHsKKwkJaWYgKCB0eXBlb2Ygc2l6ZSAhPT0gIm51bWJlciIgKSB7CisJCQlyZXR1cm4gb3JpZ1sgIm91dGVyIiArIG5hbWUgXS5jYWxsKCB0aGlzLCBzaXplICk7CisJCX0KKworCQlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgeworCQkJJCggdGhpcykuY3NzKCB0eXBlLCByZWR1Y2UoIHRoaXMsIHNpemUsIHRydWUsIG1hcmdpbiApICsgInB4IiApOworCQl9KTsKKwl9OworfSk7CisKKy8vIHNlbGVjdG9ycworZnVuY3Rpb24gZm9jdXNhYmxlKCBlbGVtZW50LCBpc1RhYkluZGV4Tm90TmFOICkgeworCXZhciBub2RlTmFtZSA9IGVsZW1lbnQubm9kZU5hbWUudG9Mb3dlckNhc2UoKTsKKwlpZiAoICJhcmVhIiA9PT0gbm9kZU5hbWUgKSB7CisJCXZhciBtYXAgPSBlbGVtZW50LnBhcmVudE5vZGUsCisJCQltYXBOYW1lID0gbWFwLm5hbWUsCisJCQlpbWc7CisJCWlmICggIWVsZW1lbnQuaHJlZiB8fCAhbWFwTmFtZSB8fCBtYXAubm9kZU5hbWUudG9Mb3dlckNhc2UoKSAhPT0gIm1hcCIgKSB7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KKwkJaW1nID0gJCggImltZ1t1c2VtYXA9IyIgKyBtYXBOYW1lICsgIl0iIClbMF07CisJCXJldHVybiAhIWltZyAmJiB2aXNpYmxlKCBpbWcgKTsKKwl9CisJcmV0dXJuICggL2lucHV0fHNlbGVjdHx0ZXh0YXJlYXxidXR0b258b2JqZWN0Ly50ZXN0KCBub2RlTmFtZSApCisJCT8gIWVsZW1lbnQuZGlzYWJsZWQKKwkJOiAiYSIgPT0gbm9kZU5hbWUKKwkJCT8gZWxlbWVudC5ocmVmIHx8IGlzVGFiSW5kZXhOb3ROYU4KKwkJCTogaXNUYWJJbmRleE5vdE5hTikKKwkJLy8gdGhlIGVsZW1lbnQgYW5kIGFsbCBvZiBpdHMgYW5jZXN0b3JzIG11c3QgYmUgdmlzaWJsZQorCQkmJiB2aXNpYmxlKCBlbGVtZW50ICk7Cit9CisKK2Z1bmN0aW9uIHZpc2libGUoIGVsZW1lbnQgKSB7CisJcmV0dXJuICEkKCBlbGVtZW50ICkucGFyZW50cygpLmFuZFNlbGYoKS5maWx0ZXIoZnVuY3Rpb24oKSB7CisJCXJldHVybiAkLmN1ckNTUyggdGhpcywgInZpc2liaWxpdHkiICkgPT09ICJoaWRkZW4iIHx8CisJCQkkLmV4cHIuZmlsdGVycy5oaWRkZW4oIHRoaXMgKTsKKwl9KS5sZW5ndGg7Cit9CisKKyQuZXh0ZW5kKCAkLmV4cHJbICI6IiBdLCB7CisJZGF0YTogZnVuY3Rpb24oIGVsZW0sIGksIG1hdGNoICkgeworCQlyZXR1cm4gISEkLmRhdGEoIGVsZW0sIG1hdGNoWyAzIF0gKTsKKwl9LAorCisJZm9jdXNhYmxlOiBmdW5jdGlvbiggZWxlbWVudCApIHsKKwkJcmV0dXJuIGZvY3VzYWJsZSggZWxlbWVudCwgIWlzTmFOKCAkLmF0dHIoIGVsZW1lbnQsICJ0YWJpbmRleCIgKSApICk7CisJfSwKKworCXRhYmJhYmxlOiBmdW5jdGlvbiggZWxlbWVudCApIHsKKwkJdmFyIHRhYkluZGV4ID0gJC5hdHRyKCBlbGVtZW50LCAidGFiaW5kZXgiICksCisJCQlpc1RhYkluZGV4TmFOID0gaXNOYU4oIHRhYkluZGV4ICk7CisJCXJldHVybiAoIGlzVGFiSW5kZXhOYU4gfHwgdGFiSW5kZXggPj0gMCApICYmIGZvY3VzYWJsZSggZWxlbWVudCwgIWlzVGFiSW5kZXhOYU4gKTsKKwl9Cit9KTsKKworLy8gc3VwcG9ydAorJChmdW5jdGlvbigpIHsKKwl2YXIgYm9keSA9IGRvY3VtZW50LmJvZHksCisJCWRpdiA9IGJvZHkuYXBwZW5kQ2hpbGQoIGRpdiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoICJkaXYiICkgKTsKKworCSQuZXh0ZW5kKCBkaXYuc3R5bGUsIHsKKwkJbWluSGVpZ2h0OiAiMTAwcHgiLAorCQloZWlnaHQ6ICJhdXRvIiwKKwkJcGFkZGluZzogMCwKKwkJYm9yZGVyV2lkdGg6IDAKKwl9KTsKKworCSQuc3VwcG9ydC5taW5IZWlnaHQgPSBkaXYub2Zmc2V0SGVpZ2h0ID09PSAxMDA7CisJJC5zdXBwb3J0LnNlbGVjdHN0YXJ0ID0gIm9uc2VsZWN0c3RhcnQiIGluIGRpdjsKKworCS8vIHNldCBkaXNwbGF5IHRvIG5vbmUgdG8gYXZvaWQgYSBsYXlvdXQgYnVnIGluIElFCisJLy8gaHR0cDovL2Rldi5qcXVlcnkuY29tL3RpY2tldC80MDE0CisJYm9keS5yZW1vdmVDaGlsZCggZGl2ICkuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKK30pOworCisKKworCisKKy8vIGRlcHJlY2F0ZWQKKyQuZXh0ZW5kKCAkLnVpLCB7CisJLy8gJC51aS5wbHVnaW4gaXMgZGVwcmVjYXRlZC4gIFVzZSB0aGUgcHJveHkgcGF0dGVybiBpbnN0ZWFkLgorCXBsdWdpbjogeworCQlhZGQ6IGZ1bmN0aW9uKCBtb2R1bGUsIG9wdGlvbiwgc2V0ICkgeworCQkJdmFyIHByb3RvID0gJC51aVsgbW9kdWxlIF0ucHJvdG90eXBlOworCQkJZm9yICggdmFyIGkgaW4gc2V0ICkgeworCQkJCXByb3RvLnBsdWdpbnNbIGkgXSA9IHByb3RvLnBsdWdpbnNbIGkgXSB8fCBbXTsKKwkJCQlwcm90by5wbHVnaW5zWyBpIF0ucHVzaCggWyBvcHRpb24sIHNldFsgaSBdIF0gKTsKKwkJCX0KKwkJfSwKKwkJY2FsbDogZnVuY3Rpb24oIGluc3RhbmNlLCBuYW1lLCBhcmdzICkgeworCQkJdmFyIHNldCA9IGluc3RhbmNlLnBsdWdpbnNbIG5hbWUgXTsKKwkJCWlmICggIXNldCB8fCAhaW5zdGFuY2UuZWxlbWVudFsgMCBdLnBhcmVudE5vZGUgKSB7CisJCQkJcmV0dXJuOworCQkJfQorCQorCQkJZm9yICggdmFyIGkgPSAwOyBpIDwgc2V0Lmxlbmd0aDsgaSsrICkgeworCQkJCWlmICggaW5zdGFuY2Uub3B0aW9uc1sgc2V0WyBpIF1bIDAgXSBdICkgeworCQkJCQlzZXRbIGkgXVsgMSBdLmFwcGx5KCBpbnN0YW5jZS5lbGVtZW50LCBhcmdzICk7CisJCQkJfQorCQkJfQorCQl9CisJfSwKKwkKKwkvLyB3aWxsIGJlIGRlcHJlY2F0ZWQgd2hlbiB3ZSBzd2l0Y2ggdG8galF1ZXJ5IDEuNCAtIHVzZSBqUXVlcnkuY29udGFpbnMoKQorCWNvbnRhaW5zOiBmdW5jdGlvbiggYSwgYiApIHsKKwkJcmV0dXJuIGRvY3VtZW50LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uID8KKwkJCWEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oIGIgKSAmIDE2IDoKKwkJCWEgIT09IGIgJiYgYS5jb250YWlucyggYiApOworCX0sCisJCisJLy8gb25seSB1c2VkIGJ5IHJlc2l6YWJsZQorCWhhc1Njcm9sbDogZnVuY3Rpb24oIGVsLCBhICkgeworCQorCQkvL0lmIG92ZXJmbG93IGlzIGhpZGRlbiwgdGhlIGVsZW1lbnQgbWlnaHQgaGF2ZSBleHRyYSBjb250ZW50LCBidXQgdGhlIHVzZXIgd2FudHMgdG8gaGlkZSBpdAorCQlpZiAoICQoIGVsICkuY3NzKCAib3ZlcmZsb3ciICkgPT09ICJoaWRkZW4iKSB7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KKwkKKwkJdmFyIHNjcm9sbCA9ICggYSAmJiBhID09PSAibGVmdCIgKSA/ICJzY3JvbGxMZWZ0IiA6ICJzY3JvbGxUb3AiLAorCQkJaGFzID0gZmFsc2U7CisJCisJCWlmICggZWxbIHNjcm9sbCBdID4gMCApIHsKKwkJCXJldHVybiB0cnVlOworCQl9CisJCisJCS8vIFRPRE86IGRldGVybWluZSB3aGljaCBjYXNlcyBhY3R1YWxseSBjYXVzZSB0aGlzIHRvIGhhcHBlbgorCQkvLyBpZiB0aGUgZWxlbWVudCBkb2Vzbid0IGhhdmUgdGhlIHNjcm9sbCBzZXQsIHNlZSBpZiBpdCdzIHBvc3NpYmxlIHRvCisJCS8vIHNldCB0aGUgc2Nyb2xsCisJCWVsWyBzY3JvbGwgXSA9IDE7CisJCWhhcyA9ICggZWxbIHNjcm9sbCBdID4gMCApOworCQllbFsgc2Nyb2xsIF0gPSAwOworCQlyZXR1cm4gaGFzOworCX0sCisJCisJLy8gdGhlc2UgYXJlIG9kZCBmdW5jdGlvbnMsIGZpeCB0aGUgQVBJIG9yIG1vdmUgaW50byBpbmRpdmlkdWFsIHBsdWdpbnMKKwlpc092ZXJBeGlzOiBmdW5jdGlvbiggeCwgcmVmZXJlbmNlLCBzaXplICkgeworCQkvL0RldGVybWluZXMgd2hlbiB4IGNvb3JkaW5hdGUgaXMgb3ZlciAiYiIgZWxlbWVudCBheGlzCisJCXJldHVybiAoIHggPiByZWZlcmVuY2UgKSAmJiAoIHggPCAoIHJlZmVyZW5jZSArIHNpemUgKSApOworCX0sCisJaXNPdmVyOiBmdW5jdGlvbiggeSwgeCwgdG9wLCBsZWZ0LCBoZWlnaHQsIHdpZHRoICkgeworCQkvL0RldGVybWluZXMgd2hlbiB4LCB5IGNvb3JkaW5hdGVzIGlzIG92ZXIgImIiIGVsZW1lbnQKKwkJcmV0dXJuICQudWkuaXNPdmVyQXhpcyggeSwgdG9wLCBoZWlnaHQgKSAmJiAkLnVpLmlzT3ZlckF4aXMoIHgsIGxlZnQsIHdpZHRoICk7CisJfQorfSk7CisKK30pKCBqUXVlcnkgKTsKZGlmZiAtLWdpdCBhL2RvY3MvanMvanF1ZXJ5LnVpLndpZGdldC5qcyBiL2RvY3MvanMvanF1ZXJ5LnVpLndpZGdldC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzQwZjkxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9qcy9qcXVlcnkudWkud2lkZ2V0LmpzCkBAIC0wLDAgKzEsMjY4IEBACisvKiEKKyAqIGpRdWVyeSBVSSBXaWRnZXQgMS44LjE2CisgKgorICogQ29weXJpZ2h0IDIwMTEsIEFVVEhPUlMudHh0IChodHRwOi8vanF1ZXJ5dWkuY29tL2Fib3V0KQorICogRHVhbCBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIG9yIEdQTCBWZXJzaW9uIDIgbGljZW5zZXMuCisgKiBodHRwOi8vanF1ZXJ5Lm9yZy9saWNlbnNlCisgKgorICogaHR0cDovL2RvY3MuanF1ZXJ5LmNvbS9VSS9XaWRnZXQKKyAqLworKGZ1bmN0aW9uKCAkLCB1bmRlZmluZWQgKSB7CisKKy8vIGpRdWVyeSAxLjQrCitpZiAoICQuY2xlYW5EYXRhICkgeworCXZhciBfY2xlYW5EYXRhID0gJC5jbGVhbkRhdGE7CisJJC5jbGVhbkRhdGEgPSBmdW5jdGlvbiggZWxlbXMgKSB7CisJCWZvciAoIHZhciBpID0gMCwgZWxlbTsgKGVsZW0gPSBlbGVtc1tpXSkgIT0gbnVsbDsgaSsrICkgeworCQkJdHJ5IHsKKwkJCQkkKCBlbGVtICkudHJpZ2dlckhhbmRsZXIoICJyZW1vdmUiICk7CisJCQkvLyBodHRwOi8vYnVncy5qcXVlcnkuY29tL3RpY2tldC84MjM1CisJCQl9IGNhdGNoKCBlICkge30KKwkJfQorCQlfY2xlYW5EYXRhKCBlbGVtcyApOworCX07Cit9IGVsc2UgeworCXZhciBfcmVtb3ZlID0gJC5mbi5yZW1vdmU7CisJJC5mbi5yZW1vdmUgPSBmdW5jdGlvbiggc2VsZWN0b3IsIGtlZXBEYXRhICkgeworCQlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCkgeworCQkJaWYgKCAha2VlcERhdGEgKSB7CisJCQkJaWYgKCAhc2VsZWN0b3IgfHwgJC5maWx0ZXIoIHNlbGVjdG9yLCBbIHRoaXMgXSApLmxlbmd0aCApIHsKKwkJCQkJJCggIioiLCB0aGlzICkuYWRkKCBbIHRoaXMgXSApLmVhY2goZnVuY3Rpb24oKSB7CisJCQkJCQl0cnkgeworCQkJCQkJCSQoIHRoaXMgKS50cmlnZ2VySGFuZGxlciggInJlbW92ZSIgKTsKKwkJCQkJCS8vIGh0dHA6Ly9idWdzLmpxdWVyeS5jb20vdGlja2V0LzgyMzUKKwkJCQkJCX0gY2F0Y2goIGUgKSB7fQorCQkJCQl9KTsKKwkJCQl9CisJCQl9CisJCQlyZXR1cm4gX3JlbW92ZS5jYWxsKCAkKHRoaXMpLCBzZWxlY3Rvciwga2VlcERhdGEgKTsKKwkJfSk7CisJfTsKK30KKworJC53aWRnZXQgPSBmdW5jdGlvbiggbmFtZSwgYmFzZSwgcHJvdG90eXBlICkgeworCXZhciBuYW1lc3BhY2UgPSBuYW1lLnNwbGl0KCAiLiIgKVsgMCBdLAorCQlmdWxsTmFtZTsKKwluYW1lID0gbmFtZS5zcGxpdCggIi4iIClbIDEgXTsKKwlmdWxsTmFtZSA9IG5hbWVzcGFjZSArICItIiArIG5hbWU7CisKKwlpZiAoICFwcm90b3R5cGUgKSB7CisJCXByb3RvdHlwZSA9IGJhc2U7CisJCWJhc2UgPSAkLldpZGdldDsKKwl9CisKKwkvLyBjcmVhdGUgc2VsZWN0b3IgZm9yIHBsdWdpbgorCSQuZXhwclsgIjoiIF1bIGZ1bGxOYW1lIF0gPSBmdW5jdGlvbiggZWxlbSApIHsKKwkJcmV0dXJuICEhJC5kYXRhKCBlbGVtLCBuYW1lICk7CisJfTsKKworCSRbIG5hbWVzcGFjZSBdID0gJFsgbmFtZXNwYWNlIF0gfHwge307CisJJFsgbmFtZXNwYWNlIF1bIG5hbWUgXSA9IGZ1bmN0aW9uKCBvcHRpb25zLCBlbGVtZW50ICkgeworCQkvLyBhbGxvdyBpbnN0YW50aWF0aW9uIHdpdGhvdXQgaW5pdGlhbGl6aW5nIGZvciBzaW1wbGUgaW5oZXJpdGFuY2UKKwkJaWYgKCBhcmd1bWVudHMubGVuZ3RoICkgeworCQkJdGhpcy5fY3JlYXRlV2lkZ2V0KCBvcHRpb25zLCBlbGVtZW50ICk7CisJCX0KKwl9OworCisJdmFyIGJhc2VQcm90b3R5cGUgPSBuZXcgYmFzZSgpOworCS8vIHdlIG5lZWQgdG8gbWFrZSB0aGUgb3B0aW9ucyBoYXNoIGEgcHJvcGVydHkgZGlyZWN0bHkgb24gdGhlIG5ldyBpbnN0YW5jZQorCS8vIG90aGVyd2lzZSB3ZSdsbCBtb2RpZnkgdGhlIG9wdGlvbnMgaGFzaCBvbiB0aGUgcHJvdG90eXBlIHRoYXQgd2UncmUKKwkvLyBpbmhlcml0aW5nIGZyb20KKy8vCSQuZWFjaCggYmFzZVByb3RvdHlwZSwgZnVuY3Rpb24oIGtleSwgdmFsICkgeworLy8JCWlmICggJC5pc1BsYWluT2JqZWN0KHZhbCkgKSB7CisvLwkJCWJhc2VQcm90b3R5cGVbIGtleSBdID0gJC5leHRlbmQoIHt9LCB2YWwgKTsKKy8vCQl9CisvLwl9KTsKKwliYXNlUHJvdG90eXBlLm9wdGlvbnMgPSAkLmV4dGVuZCggdHJ1ZSwge30sIGJhc2VQcm90b3R5cGUub3B0aW9ucyApOworCSRbIG5hbWVzcGFjZSBdWyBuYW1lIF0ucHJvdG90eXBlID0gJC5leHRlbmQoIHRydWUsIGJhc2VQcm90b3R5cGUsIHsKKwkJbmFtZXNwYWNlOiBuYW1lc3BhY2UsCisJCXdpZGdldE5hbWU6IG5hbWUsCisJCXdpZGdldEV2ZW50UHJlZml4OiAkWyBuYW1lc3BhY2UgXVsgbmFtZSBdLnByb3RvdHlwZS53aWRnZXRFdmVudFByZWZpeCB8fCBuYW1lLAorCQl3aWRnZXRCYXNlQ2xhc3M6IGZ1bGxOYW1lCisJfSwgcHJvdG90eXBlICk7CisKKwkkLndpZGdldC5icmlkZ2UoIG5hbWUsICRbIG5hbWVzcGFjZSBdWyBuYW1lIF0gKTsKK307CisKKyQud2lkZ2V0LmJyaWRnZSA9IGZ1bmN0aW9uKCBuYW1lLCBvYmplY3QgKSB7CisJJC5mblsgbmFtZSBdID0gZnVuY3Rpb24oIG9wdGlvbnMgKSB7CisJCXZhciBpc01ldGhvZENhbGwgPSB0eXBlb2Ygb3B0aW9ucyA9PT0gInN0cmluZyIsCisJCQlhcmdzID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoIGFyZ3VtZW50cywgMSApLAorCQkJcmV0dXJuVmFsdWUgPSB0aGlzOworCisJCS8vIGFsbG93IG11bHRpcGxlIGhhc2hlcyB0byBiZSBwYXNzZWQgb24gaW5pdAorCQlvcHRpb25zID0gIWlzTWV0aG9kQ2FsbCAmJiBhcmdzLmxlbmd0aCA/CisJCQkkLmV4dGVuZC5hcHBseSggbnVsbCwgWyB0cnVlLCBvcHRpb25zIF0uY29uY2F0KGFyZ3MpICkgOgorCQkJb3B0aW9uczsKKworCQkvLyBwcmV2ZW50IGNhbGxzIHRvIGludGVybmFsIG1ldGhvZHMKKwkJaWYgKCBpc01ldGhvZENhbGwgJiYgb3B0aW9ucy5jaGFyQXQoIDAgKSA9PT0gIl8iICkgeworCQkJcmV0dXJuIHJldHVyblZhbHVlOworCQl9CisKKwkJaWYgKCBpc01ldGhvZENhbGwgKSB7CisJCQl0aGlzLmVhY2goZnVuY3Rpb24oKSB7CisJCQkJdmFyIGluc3RhbmNlID0gJC5kYXRhKCB0aGlzLCBuYW1lICksCisJCQkJCW1ldGhvZFZhbHVlID0gaW5zdGFuY2UgJiYgJC5pc0Z1bmN0aW9uKCBpbnN0YW5jZVtvcHRpb25zXSApID8KKwkJCQkJCWluc3RhbmNlWyBvcHRpb25zIF0uYXBwbHkoIGluc3RhbmNlLCBhcmdzICkgOgorCQkJCQkJaW5zdGFuY2U7CisJCQkJLy8gVE9ETzogYWRkIHRoaXMgYmFjayBpbiAxLjkgYW5kIHVzZSAkLmVycm9yKCkgKHNlZSAjNTk3MikKKy8vCQkJCWlmICggIWluc3RhbmNlICkgeworLy8JCQkJCXRocm93ICJjYW5ub3QgY2FsbCBtZXRob2RzIG9uICIgKyBuYW1lICsgIiBwcmlvciB0byBpbml0aWFsaXphdGlvbjsgIiArCisvLwkJCQkJCSJhdHRlbXB0ZWQgdG8gY2FsbCBtZXRob2QgJyIgKyBvcHRpb25zICsgIiciOworLy8JCQkJfQorLy8JCQkJaWYgKCAhJC5pc0Z1bmN0aW9uKCBpbnN0YW5jZVtvcHRpb25zXSApICkgeworLy8JCQkJCXRocm93ICJubyBzdWNoIG1ldGhvZCAnIiArIG9wdGlvbnMgKyAiJyBmb3IgIiArIG5hbWUgKyAiIHdpZGdldCBpbnN0YW5jZSI7CisvLwkJCQl9CisvLwkJCQl2YXIgbWV0aG9kVmFsdWUgPSBpbnN0YW5jZVsgb3B0aW9ucyBdLmFwcGx5KCBpbnN0YW5jZSwgYXJncyApOworCQkJCWlmICggbWV0aG9kVmFsdWUgIT09IGluc3RhbmNlICYmIG1ldGhvZFZhbHVlICE9PSB1bmRlZmluZWQgKSB7CisJCQkJCXJldHVyblZhbHVlID0gbWV0aG9kVmFsdWU7CisJCQkJCXJldHVybiBmYWxzZTsKKwkJCQl9CisJCQl9KTsKKwkJfSBlbHNlIHsKKwkJCXRoaXMuZWFjaChmdW5jdGlvbigpIHsKKwkJCQl2YXIgaW5zdGFuY2UgPSAkLmRhdGEoIHRoaXMsIG5hbWUgKTsKKwkJCQlpZiAoIGluc3RhbmNlICkgeworCQkJCQlpbnN0YW5jZS5vcHRpb24oIG9wdGlvbnMgfHwge30gKS5faW5pdCgpOworCQkJCX0gZWxzZSB7CisJCQkJCSQuZGF0YSggdGhpcywgbmFtZSwgbmV3IG9iamVjdCggb3B0aW9ucywgdGhpcyApICk7CisJCQkJfQorCQkJfSk7CisJCX0KKworCQlyZXR1cm4gcmV0dXJuVmFsdWU7CisJfTsKK307CisKKyQuV2lkZ2V0ID0gZnVuY3Rpb24oIG9wdGlvbnMsIGVsZW1lbnQgKSB7CisJLy8gYWxsb3cgaW5zdGFudGlhdGlvbiB3aXRob3V0IGluaXRpYWxpemluZyBmb3Igc2ltcGxlIGluaGVyaXRhbmNlCisJaWYgKCBhcmd1bWVudHMubGVuZ3RoICkgeworCQl0aGlzLl9jcmVhdGVXaWRnZXQoIG9wdGlvbnMsIGVsZW1lbnQgKTsKKwl9Cit9OworCiskLldpZGdldC5wcm90b3R5cGUgPSB7CisJd2lkZ2V0TmFtZTogIndpZGdldCIsCisJd2lkZ2V0RXZlbnRQcmVmaXg6ICIiLAorCW9wdGlvbnM6IHsKKwkJZGlzYWJsZWQ6IGZhbHNlCisJfSwKKwlfY3JlYXRlV2lkZ2V0OiBmdW5jdGlvbiggb3B0aW9ucywgZWxlbWVudCApIHsKKwkJLy8gJC53aWRnZXQuYnJpZGdlIHN0b3JlcyB0aGUgcGx1Z2luIGluc3RhbmNlLCBidXQgd2UgZG8gaXQgYW55d2F5CisJCS8vIHNvIHRoYXQgaXQncyBzdG9yZWQgZXZlbiBiZWZvcmUgdGhlIF9jcmVhdGUgZnVuY3Rpb24gcnVucworCQkkLmRhdGEoIGVsZW1lbnQsIHRoaXMud2lkZ2V0TmFtZSwgdGhpcyApOworCQl0aGlzLmVsZW1lbnQgPSAkKCBlbGVtZW50ICk7CisJCXRoaXMub3B0aW9ucyA9ICQuZXh0ZW5kKCB0cnVlLCB7fSwKKwkJCXRoaXMub3B0aW9ucywKKwkJCXRoaXMuX2dldENyZWF0ZU9wdGlvbnMoKSwKKwkJCW9wdGlvbnMgKTsKKworCQl2YXIgc2VsZiA9IHRoaXM7CisJCXRoaXMuZWxlbWVudC5iaW5kKCAicmVtb3ZlLiIgKyB0aGlzLndpZGdldE5hbWUsIGZ1bmN0aW9uKCkgeworCQkJc2VsZi5kZXN0cm95KCk7CisJCX0pOworCisJCXRoaXMuX2NyZWF0ZSgpOworCQl0aGlzLl90cmlnZ2VyKCAiY3JlYXRlIiApOworCQl0aGlzLl9pbml0KCk7CisJfSwKKwlfZ2V0Q3JlYXRlT3B0aW9uczogZnVuY3Rpb24oKSB7CisJCXJldHVybiAkLm1ldGFkYXRhICYmICQubWV0YWRhdGEuZ2V0KCB0aGlzLmVsZW1lbnRbMF0gKVsgdGhpcy53aWRnZXROYW1lIF07CisJfSwKKwlfY3JlYXRlOiBmdW5jdGlvbigpIHt9LAorCV9pbml0OiBmdW5jdGlvbigpIHt9LAorCisJZGVzdHJveTogZnVuY3Rpb24oKSB7CisJCXRoaXMuZWxlbWVudAorCQkJLnVuYmluZCggIi4iICsgdGhpcy53aWRnZXROYW1lICkKKwkJCS5yZW1vdmVEYXRhKCB0aGlzLndpZGdldE5hbWUgKTsKKwkJdGhpcy53aWRnZXQoKQorCQkJLnVuYmluZCggIi4iICsgdGhpcy53aWRnZXROYW1lICkKKwkJCS5yZW1vdmVBdHRyKCAiYXJpYS1kaXNhYmxlZCIgKQorCQkJLnJlbW92ZUNsYXNzKAorCQkJCXRoaXMud2lkZ2V0QmFzZUNsYXNzICsgIi1kaXNhYmxlZCAiICsKKwkJCQkidWktc3RhdGUtZGlzYWJsZWQiICk7CisJfSwKKworCXdpZGdldDogZnVuY3Rpb24oKSB7CisJCXJldHVybiB0aGlzLmVsZW1lbnQ7CisJfSwKKworCW9wdGlvbjogZnVuY3Rpb24oIGtleSwgdmFsdWUgKSB7CisJCXZhciBvcHRpb25zID0ga2V5OworCisJCWlmICggYXJndW1lbnRzLmxlbmd0aCA9PT0gMCApIHsKKwkJCS8vIGRvbid0IHJldHVybiBhIHJlZmVyZW5jZSB0byB0aGUgaW50ZXJuYWwgaGFzaAorCQkJcmV0dXJuICQuZXh0ZW5kKCB7fSwgdGhpcy5vcHRpb25zICk7CisJCX0KKworCQlpZiAgKHR5cGVvZiBrZXkgPT09ICJzdHJpbmciICkgeworCQkJaWYgKCB2YWx1ZSA9PT0gdW5kZWZpbmVkICkgeworCQkJCXJldHVybiB0aGlzLm9wdGlvbnNbIGtleSBdOworCQkJfQorCQkJb3B0aW9ucyA9IHt9OworCQkJb3B0aW9uc1sga2V5IF0gPSB2YWx1ZTsKKwkJfQorCisJCXRoaXMuX3NldE9wdGlvbnMoIG9wdGlvbnMgKTsKKworCQlyZXR1cm4gdGhpczsKKwl9LAorCV9zZXRPcHRpb25zOiBmdW5jdGlvbiggb3B0aW9ucyApIHsKKwkJdmFyIHNlbGYgPSB0aGlzOworCQkkLmVhY2goIG9wdGlvbnMsIGZ1bmN0aW9uKCBrZXksIHZhbHVlICkgeworCQkJc2VsZi5fc2V0T3B0aW9uKCBrZXksIHZhbHVlICk7CisJCX0pOworCisJCXJldHVybiB0aGlzOworCX0sCisJX3NldE9wdGlvbjogZnVuY3Rpb24oIGtleSwgdmFsdWUgKSB7CisJCXRoaXMub3B0aW9uc1sga2V5IF0gPSB2YWx1ZTsKKworCQlpZiAoIGtleSA9PT0gImRpc2FibGVkIiApIHsKKwkJCXRoaXMud2lkZ2V0KCkKKwkJCQlbIHZhbHVlID8gImFkZENsYXNzIiA6ICJyZW1vdmVDbGFzcyJdKAorCQkJCQl0aGlzLndpZGdldEJhc2VDbGFzcyArICItZGlzYWJsZWQiICsgIiAiICsKKwkJCQkJInVpLXN0YXRlLWRpc2FibGVkIiApCisJCQkJLmF0dHIoICJhcmlhLWRpc2FibGVkIiwgdmFsdWUgKTsKKwkJfQorCisJCXJldHVybiB0aGlzOworCX0sCisKKwllbmFibGU6IGZ1bmN0aW9uKCkgeworCQlyZXR1cm4gdGhpcy5fc2V0T3B0aW9uKCAiZGlzYWJsZWQiLCBmYWxzZSApOworCX0sCisJZGlzYWJsZTogZnVuY3Rpb24oKSB7CisJCXJldHVybiB0aGlzLl9zZXRPcHRpb24oICJkaXNhYmxlZCIsIHRydWUgKTsKKwl9LAorCisJX3RyaWdnZXI6IGZ1bmN0aW9uKCB0eXBlLCBldmVudCwgZGF0YSApIHsKKwkJdmFyIGNhbGxiYWNrID0gdGhpcy5vcHRpb25zWyB0eXBlIF07CisKKwkJZXZlbnQgPSAkLkV2ZW50KCBldmVudCApOworCQlldmVudC50eXBlID0gKCB0eXBlID09PSB0aGlzLndpZGdldEV2ZW50UHJlZml4ID8KKwkJCXR5cGUgOgorCQkJdGhpcy53aWRnZXRFdmVudFByZWZpeCArIHR5cGUgKS50b0xvd2VyQ2FzZSgpOworCQlkYXRhID0gZGF0YSB8fCB7fTsKKworCQkvLyBjb3B5IG9yaWdpbmFsIGV2ZW50IHByb3BlcnRpZXMgb3ZlciB0byB0aGUgbmV3IGV2ZW50CisJCS8vIHRoaXMgd291bGQgaGFwcGVuIGlmIHdlIGNvdWxkIGNhbGwgJC5ldmVudC5maXggaW5zdGVhZCBvZiAkLkV2ZW50CisJCS8vIGJ1dCB3ZSBkb24ndCBoYXZlIGEgd2F5IHRvIGZvcmNlIGFuIGV2ZW50IHRvIGJlIGZpeGVkIG11bHRpcGxlIHRpbWVzCisJCWlmICggZXZlbnQub3JpZ2luYWxFdmVudCApIHsKKwkJCWZvciAoIHZhciBpID0gJC5ldmVudC5wcm9wcy5sZW5ndGgsIHByb3A7IGk7ICkgeworCQkJCXByb3AgPSAkLmV2ZW50LnByb3BzWyAtLWkgXTsKKwkJCQlldmVudFsgcHJvcCBdID0gZXZlbnQub3JpZ2luYWxFdmVudFsgcHJvcCBdOworCQkJfQorCQl9CisKKwkJdGhpcy5lbGVtZW50LnRyaWdnZXIoIGV2ZW50LCBkYXRhICk7CisKKwkJcmV0dXJuICEoICQuaXNGdW5jdGlvbihjYWxsYmFjaykgJiYKKwkJCWNhbGxiYWNrLmNhbGwoIHRoaXMuZWxlbWVudFswXSwgZXZlbnQsIGRhdGEgKSA9PT0gZmFsc2UgfHwKKwkJCWV2ZW50LmlzRGVmYXVsdFByZXZlbnRlZCgpICk7CisJfQorfTsKKworfSkoIGpRdWVyeSApOwpkaWZmIC0tZ2l0IGEvZG9jcy9saWNlbnNlLmh0bWwgYi9kb2NzL2xpY2Vuc2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTcxYTUxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWNlbnNlLmh0bWwKQEAgLTAsMCArMSw5MDcgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgorCis8IS0tCitDb3B5cmlnaHQgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKworPCEtLSBDb250ZW50IFN0eWxlc2hlZXQgZm9yIFNpdGUgLS0+CisKKyAgICAgICAgCis8IS0tIHN0YXJ0IHRoZSBwcm9jZXNzaW5nIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8IS0tIEdFTkVSQVRFRCBGSUxFLCBETyBOT1QgRURJVCwgRURJVCBUSEUgWE1MIEZJTEUgSU4geGRvY3MgSU5TVEVBRCEgLS0+CisgICAgPCEtLSBNYWluIFBhZ2UgU2VjdGlvbiAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGh0bWw+CisgICAgICAgIDxoZWFkPgorICAgICAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiLz4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iCisgUG9kbGluZyBEb2N1bWVudGF0aW9uIFRlYW0iPgorICAgICAgICAgICAgPG1ldGEgbmFtZT0iZW1haWwiIGNvbnRlbnQ9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+CisgICAgICAgICAgICAKKyAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgPHRpdGxlPkFwYWNoZSBPcGVuTWVldGluZ3MgLSBMaWNlbnNlPC90aXRsZT4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9vcGVubWVldGluZ3MuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9qcXVlcnktdWkuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2luLXNsaWRlci1zdHlsZXMuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2xvcmJveC5jc3MiIC8+CisgICAgICAgICAgICAKKwkJCTwhLS0gQWRkIGpRdWVyeSBsaWJyYXJ5IC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LTEuNy4xLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPCEtLSBBZGQgY29pbnNsaWRlciBwbHVnaW5zIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvY29pbi1zbGlkZXIubWluLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPCEtLSBBZGQgY29sb3Jib3ggcGx1Z2luIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LmNvbG9yYm94LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmNvcmUuanMiPjwvc2NyaXB0PgorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS53aWRnZXQuanMiPjwvc2NyaXB0PgorCQkKKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkuYWNjb3JkaW9uLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdD4KKwkJCSQoZnVuY3Rpb24oKSB7CisJCQkJJCggIiNhY2NvcmRpb24iICkuYWNjb3JkaW9uKHsKKwkJCQkJYXV0b0hlaWdodDogZmFsc2UsCisJCQkJCW5hdmlnYXRpb246IHRydWUsCisJCQkJCW5hdmlnYXRpb25GaWx0ZXI6IGZ1bmN0aW9uICgpIHsKKwkJCQkJCXZhciBzaWRlYmFySHJlZkFycmF5ID0gdGhpcy5ocmVmLnNwbGl0KCIvIik7CisgICAgCQkJCQl2YXIgc2lkZUJhckxhc3RTdHJpbmcgPSBzaWRlYmFySHJlZkFycmF5W3NpZGViYXJIcmVmQXJyYXkubGVuZ3RoIC0gMV0udG9Mb3dlckNhc2UoKTsKKwkJCQkJCQorCQkJCQkJaWYgKHNpZGVCYXJMYXN0U3RyaW5nLmluZGV4T2YoIiMiKSA9PSAtMSkgeworCQkJCQkJCXJldHVybiBmYWxzZTsKKwkJCQkJCX0KKwkJCQkJCQorCQkJCQkJCQkJCQkJLyogZG9jdW1lbnQubG9jYXRpb24uaHJlZiAqLworCQkJCQkJdmFyIGN1cnJlbnRTZWN0aW9uID0gIiI7CisJCQkJCQkKKwkJCQkJCXZhciBjdXJyZW50TG9jYXRpb24gPSAiIjsKKwkJCQkJCXZhciBjdXJyZW50TGluayA9ICIiOworCQkJCQkJaWYgKGZhbHNlKSB7CisJCQkJCQkKKwkJCQkJCX0KKyAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5kZXguaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5kZXguaHRtbCIuc3Vic3RyKDEsICIvaW5kZXguaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9saWNlbnNlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2xpY2Vuc2UuaHRtbCIuc3Vic3RyKDEsICIvbGljZW5zZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5zdWJzdHIoMSwgImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZG93bmxvYWRzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2Rvd25sb2Fkcy5odG1sIi5zdWJzdHIoMSwgIi9kb3dubG9hZHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiLnN1YnN0cigxLCAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9pbnN0YWxsYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5zdGFsbGF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL2luc3RhbGxhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1VwZ3JhZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvVXBncmFkZS5odG1sIi5zdWJzdHIoMSwgIi9VcGdyYWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIuc3Vic3RyKDEsICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db21tYW5kTGluZUFkbWluLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIuc3Vic3RyKDEsICIvQ29tbWFuZExpbmVBZG1pbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9nZXQtaW52b2x2ZWQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9nZXQtaW52b2x2ZWQuaHRtbCIuc3Vic3RyKDEsICIvZ2V0LWludm9sdmVkLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGVhbS1saXN0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdGVhbS1saXN0Lmh0bWwiLnN1YnN0cigxLCAiL3RlYW0tbGlzdC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL21haWwtbGlzdHMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9tYWlsLWxpc3RzLmh0bWwiLnN1YnN0cigxLCAiL21haWwtbGlzdHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLnN1YnN0cigxLCAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3N2bi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvc3ZuLmh0bWwiLnN1YnN0cigxLCAiL3N2bi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIuc3Vic3RyKDEsICJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2RlcGVuZGVuY2llcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZGVwZW5kZW5jaWVzLmh0bWwiLnN1YnN0cigxLCAiL2RlcGVuZGVuY2llcy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pVbml0VGVzdGluZy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSlVuaXRUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL0pVbml0VGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01hbnVhbFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01hbnVhbFRlc3RpbmcuaHRtbCIuc3Vic3RyKDEsICIvTWFudWFsVGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlbGVhc2VHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVsZWFzZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1JlbGVhc2VHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYnNpdGVHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvV2Vic2l0ZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1dlYnNpdGVHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Tb2FwUmVzdEFQSS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU29hcFJlc3RBUEkuaHRtbCIuc3Vic3RyKDEsICIvU29hcFJlc3RBUEkuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZXN0QVBJU2FtcGxlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZXN0QVBJU2FtcGxlLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RBUElTYW1wbGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MZGFwQW5kQURTLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9MZGFwQW5kQURTLmh0bWwiLnN1YnN0cigxLCAiL0xkYXBBbmRBRFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FcnJvcnNUYWJsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRXJyb3JzVGFibGUuaHRtbCIuc3Vic3RyKDEsICIvRXJyb3JzVGFibGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTW9vZGxlUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01vb2RsZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Nb29kbGVQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TYWthaVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TYWthaVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TYWthaVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ppcmFQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSmlyYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9KaXJhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSm9vbWxhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pvb21sYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Kb29tbGFQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EcnVwYWxQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRHJ1cGFsUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0RydXBhbFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0JpdHJpeFBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CaXRyaXhQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvQml0cml4UGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TdWdhckNSTVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TdWdhckNSTVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TdWdhckNSTVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlZG1pbmVQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVkbWluZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9SZWRtaW5lUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSUJNREIyQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSUJNREIyQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL0lCTURCMkNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3JhY2xlQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3JhY2xlQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL09yYWNsZUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTXlTUUxDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9NeVNRTENvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9NeVNRTENvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUG9zdGdyZXNDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MYW5ndWFnZUVkaXRvci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLnN1YnN0cigxLCAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5zdWJzdHIoMSwgIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FZGl0VGVtcGxhdGVzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRWRpdFRlbXBsYXRlcy5odG1sIi5zdWJzdHIoMSwgIi9FZGl0VGVtcGxhdGVzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1BvcnRTZXR0aW5ncy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1BvcnRTZXR0aW5ncy5odG1sIi5zdWJzdHIoMSwgIi9Qb3J0U2V0dGluZ3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5zdWJzdHIoMSwgIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5zdWJzdHIoMSwgIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EYXNoYm9hcmQuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9EYXNoYm9hcmQuaHRtbCIuc3Vic3RyKDEsICIvRGFzaGJvYXJkLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLnN1YnN0cigxLCAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Ib3RLZXlzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSG90S2V5cy5odG1sIi5zdWJzdHIoMSwgIi9Ib3RLZXlzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYmFwcE5hbWVQYXRoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvV2ViYXBwTmFtZVBhdGguaHRtbCIuc3Vic3RyKDEsICIvV2ViYXBwTmFtZVBhdGguaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL05hdmlnYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9OYXZpZ2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL05hdmlnYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLnN1YnN0cigxLCAiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIuc3Vic3RyKDEsICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIuc3Vic3RyKDEsICIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUlRNUFNBbmRIVFRQUy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1JUTVBTQW5kSFRUUFMuaHRtbCIuc3Vic3RyKDEsICIvUlRNUFNBbmRIVFRQUy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5zdWJzdHIoMSwgIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5zdWJzdHIoMSwgIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NsdXN0ZXJpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DbHVzdGVyaW5nLmh0bWwiLnN1YnN0cigxLCAiL0NsdXN0ZXJpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvR2V0VmVyc2lvbkluZm8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9HZXRWZXJzaW9uSW5mby5odG1sIi5zdWJzdHIoMSwgIi9HZXRWZXJzaW9uSW5mby5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkgICAgCQkJCQkKKyAgICAJCQkJCWN1cnJlbnRMaW5rID0gY3VycmVudExpbmsudG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCWN1cnJlbnRMb2NhdGlvbiA9IGN1cnJlbnRMb2NhdGlvbi50b0xvd2VyQ2FzZSgpOworICAgIAkJCQkJCisJCQkJCQlyZXR1cm4gc2lkZUJhckxhc3RTdHJpbmcgPT0gY3VycmVudExpbmsrIiMiK2N1cnJlbnRMb2NhdGlvbjsKKwkJCQkJfQorCQkJCX0pOworCQkJfSk7CisJCQk8L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCQkJCSQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgeworCQkJCQkkKCcuZmFuY3lib3gtYnV0dG9ucycpLmNvbG9yYm94KHtyZWw6J2ZhbmN5Ym94LWJ1dHRvbnMnLHdpZHRoOiI3NSUiLCBoZWlnaHQ6Ijc1JSJ9KTsKKwkJCQkJJCgnI2FjY29yZGlvbiBhJykuZWFjaChmdW5jdGlvbigpIHsKKwkJCQkgICAgICB2YXIgYSA9ICQodGhpcyk7CisJCQkJICAgICAgdmFyIGhyZWYgPSBhLmF0dHIoImhyZWYiKTsKKwkJCQkgICAgICBpZiAoaHJlZi5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkgICAgICAJICB2YXIgY29tcGFyZUl0ID0gaHJlZi5zdWJzdHIoMiwgaHJlZi5sZW5ndGgpOworCQkJCQkgICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKGNvbXBhcmVJdCkhPSAtMSkgeworCQkJCQkgICAgICAgYS5hZGRDbGFzcygnYWN0aXZlJyk7CisJCQkJCSAgICAgIH0KKwkJCQkgICAgICB9CisJCQkJICAgIH0pOworCQkJCQkkKCcjY29pbi1zbGlkZXInKS5jb2luc2xpZGVyKHsgd2lkdGg6IDY0MCxoZWlnaHQ6IDQwMCwgZGVsYXk6IDQwMDAgIH0pOwkJCQkJCisJCQkJfSk7CisJCQk8L3NjcmlwdD4JCisJCQkJCQkKKwkJCTxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisJCQkJLmZhbmN5Ym94LWN1c3RvbSAuZmFuY3lib3gtb3V0ZXIgeworCQkJCQlib3gtc2hhZG93OiAwIDAgNTBweCAjMjIyOworCQkJCX0KKwkJCTwvc3R5bGU+CisgICAgICAgIDwvaGVhZD4KKworICAgICAgICA8Ym9keSBiZ2NvbG9yPSIjZmZmZmZmIiB0ZXh0PSIjMDAwMDAwIiBsaW5rPSIjMTIzNDY1IiB2bGluaz0iIzEyMzQ2NSIgYWxpbms9IiMwMDAwMDAiPiAgCisgICAgICAgIAk8ZGl2IGNsYXNzPSJtYWluYm9keSIgc3R5bGU9IndpZHRoOiAxMDAlOyI+CisgICAgICAgIAk8ZGl2IGNsYXNzPSJzdXBlcmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIj4KKyAgICAgICAgICAgICAgICA8IS0tIFRPUCBJTUFHRSAtLT4KKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCI+Cis8YSBocmVmPSJodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvIj48aW1nIHNyYz0iLi9pbWFnZXMvbG9nby0yLmpwZyIgYWx0PSJBcGFjaGUgT3Blbk1lZXRpbmdzIiBib3JkZXI9IjAiLz48L2E+Cis8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCIgPgorCTxhIGhyZWY9ImRlbW8uaHRtbCI+RGVtbzwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJkb3dubG9hZHMuaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5Eb3dubG9hZDwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJpbnN0YWxsYXRpb24uaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5JbnN0YWxsYXRpb248L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MiIHRhcmdldD0iX0JMQU5LIj5XaWtpPC9hPgorCTxzcGFuPiZuYnNwOzwvc3Bhbj4KKzwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjQiPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8IS0tIExFRlQgU0lERSBOQVZJR0FUSU9OIC0tPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiIG5vd3JhcD0ibm93cmFwIj4KKworICAgICAgICAgICAgICAgICAgICA8IS0tIHNwZWNpYWwgQUNvbiBMb2dvIC0gbGVhdmUgaGVyZSBmb3IgbmV4dCB0aW1lCisgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9hcGFjaGVjb24uY29tLzIwMDUvVVMvIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vYXBhY2hlLm9yZy9pbWFnZXMvYWMyMDA1dXNfYmx1ZV8xMjV4MTI1LmpwZyIgaGVpZ2h0PSIxMjUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPSIxMjUiIGJvcmRlcj0iMCIgYWx0PSJBcGFjaGVDb24gVVMgMjAwNSIgLz4KKyAgICAgICAgICAgICAgICAgICAgPC9hPiAgLS0+CisKKyAgICAgICAgICAgICAgICAgICA8IS0tIHJlZ3VsYXIgbWVudSAtLT4KKworICAgICAgICAgICAgICAgICAgICAKKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8ZGl2IGlkPSJhY2NvcmRpb24iIHN0eWxlPSJ3aWR0aDogMTAwJSI+CisgICAgCisgICAgICAgICAgICAJPGgzPjxhIGhyZWY9IiNHZW5lcmFsIj5HZW5lcmFsPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9pbmRleC5odG1sIj5Ib21lPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9saWNlbnNlLmh0bWwiPkxpY2Vuc2U8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5BU0Y8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2Rvd25sb2Fkcy5odG1sIj5Eb3dubG9hZHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIj5Db21tZXJjaWFsIFN1cHBvcnQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0luc3RhbGxhdGlvbmFuZFVwZ3JhZGUiPkluc3RhbGxhdGlvbiBhbmQgVXBncmFkZTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5zdGFsbGF0aW9uLmh0bWwiPkluc3RhbGxhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vVXBncmFkZS5odG1sIj5VcGdyYWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLmh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIj5UdXRvcmlhbHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCI+Q29tbWFuZCBMaW5lIEFkbWluPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb21tdW5pdHkiPkNvbW11bml0eTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZ2V0LWludm9sdmVkLmh0bWwiPkdldCBJbnZvbHZlZDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdGVhbS1saXN0Lmh0bWwiPkNvbW1pdHRlcnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL21haWwtbGlzdHMuaHRtbCI+TWFpbGluZyBMaXN0czwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIj5XaWtpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNEZXZlbG9wbWVudCI+RGV2ZWxvcG1lbnQ8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3N2bi5odG1sIj5Tb3VyY2UgQ29kZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiPkJ1Z3MgLyBJc3N1ZXMgKEpJUkEpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kZXBlbmRlbmNpZXMuaHRtbCI+RGVwZW5kZW5jaWVzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CdWlsZEluc3RydWN0aW9ucy5odG1sIj5CdWlsZCBJbnN0cnVjdGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pVbml0VGVzdGluZy5odG1sIj5KVW5pdCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9NYW51YWxUZXN0aW5nLmh0bWwiPk1hbnVhbCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWxlYXNlR3VpZGUuaHRtbCI+UmVsZWFzZSBHdWlkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vV2Vic2l0ZUd1aWRlLmh0bWwiPldlYnNpdGUgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0ludGVncmF0aW9uIj5JbnRlZ3JhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU29hcFJlc3RBUEkuaHRtbCI+U09BUC9SRVNUIEFQSTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVzdEFQSVNhbXBsZS5odG1sIj5SRVNUIEFQSSBTYW1wbGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0xkYXBBbmRBRFMuaHRtbCI+TGRhcCBhbmQgQURTPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIj5Wb0lQIGFuZCBTSVA8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0Vycm9yc1RhYmxlLmh0bWwiPkVycm9ycyB0YWJsZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjUGx1Z2lucyI+UGx1Z2luczwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTW9vZGxlUGx1Z2luLmh0bWwiPk1vb2RsZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Nha2FpUGx1Z2luLmh0bWwiPlNha2FpIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSmlyYVBsdWdpbi5odG1sIj5KaXJhIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSm9vbWxhUGx1Z2luLmh0bWwiPkpvb21sYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0RydXBhbFBsdWdpbi5odG1sIj5EcnVwYWwgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CaXRyaXhQbHVnaW4uaHRtbCI+Qml0cml4IFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQ29uZmx1ZW5jZVBsdWdpbi5odG1sIj5Db25mbHVlbmNlIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU3VnYXJDUk1QbHVnaW4uaHRtbCI+U3VnYXJDUk0gUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWRtaW5lUGx1Z2luLmh0bWwiPlJlZG1pbmUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb25maWd1cmF0aW9uIj5Db25maWd1cmF0aW9uPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5EQiBTYW1wbGUgQ29uZmlndXJhdGlvbnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIj5BcGFjaGUgRGVyYnk8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0lCTURCMkNvbmZpZy5odG1sIj5JQk0gREIyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcmFjbGVDb25maWcuaHRtbCI+T3JhY2xlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9NeVNRTENvbmZpZy5odG1sIj5NeVNRTDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9zdGdyZXNDb25maWcuaHRtbCI+UG9zdGdyZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkxvY2FsaXphdGlvbiBhbmQgbGFuZ3VhZ2VzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCI+SW50ZXJuYXRpb25hbGlzYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0xhbmd1YWdlRWRpdG9yLmh0bWwiPkxhbmd1YWdlRWRpdG9yPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiPlRpbWVab25lSGFuZGxpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0VkaXRUZW1wbGF0ZXMuaHRtbCI+RWRpdFRlbXBsYXRlczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TkFUIFBvcnQgU2V0dGluZ3M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Qb3J0U2V0dGluZ3MuaHRtbCI+UG9ydCBzZXR0aW5nczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+UGVyZm9ybWFuY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIj5KVk0gcGVyZm9ybWFuY2UgdHVuaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Vc2VyIEludGVyZmFjZTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCI+VGhlbWVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9EYXNoYm9hcmQuaHRtbCI+RGFzaGJvYXJkPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIj5XZWJjYW0gcmVzb2x1dGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIj5Sb29tIGxheW91dCBvcHRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Ib3RLZXlzLmh0bWwiPkhvdCBLZXlzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5DdXN0b21pemF0aW9uPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViYXBwTmFtZVBhdGguaHRtbCI+V2ViYXBwIG5hbWUvcGF0aDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTmF2aWdhdGlvbi5odG1sIj5OYXZpZ2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiPkNhbGVuZGFyIGFuZCB0aW1lem9uZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIj5DdXN0b20gcm9vbSB0eXBlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIj5DdXN0b20gY3R5cHQgbWVjaGFuaXNtPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIj5HZW5lcmFsIENvbmZpZ3VyYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlNlY3VyaXR5PC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUmVzdHJpY3RlZEFjY2Vzcy5odG1sIj5SZXN0cmljdGVkIEFjY2VzczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUlRNUFNBbmRIVFRQUy5odG1sIj5SVE1QUyBhbmQgSFRUUFM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNvbnZlcnRlcnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiPk9wZW5PZmZpY2UgQ29udmVydGVyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiPkZGTVBFRyBWZXJzaW9uIFN3aXRjaDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q2x1c3RlcmluZzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NsdXN0ZXJpbmcuaHRtbCI+Q2x1c3RlcmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TWlzYzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0dldFZlcnNpb25JbmZvLmh0bWwiPkdldCB2ZXJzaW9uIGluZm88L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAorICAgIDwvZGl2PgorICAgICAKKyAgICA8YnIvPgorICAgIAorICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJBcGFjaGUgTGljZW5zZSB2Mi4wIj48c3Ryb25nPkFwYWNoZSBMaWNlbnNlIHYyLjA8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGFsaWduPSJsZWZ0Ij4KKyAgICA8dGFibGUgc3R5bGU9ImJvcmRlcjogc29saWQgMXB4ICMwMjMyNjQ7IHBhZGRpbmc6IDVweDsiPgorICAgIDx0cj4KKyAgICAgIDx0ZCBiZ2NvbG9yPSIjZmZmZmZmIj48cHJlPg0KKw0KKw0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFwYWNoZSBMaWNlbnNlDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyc2lvbiAyLjAsIEphbnVhcnkgMjAwNA0KKyAgICAgICAgICAgICAgICAgICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy8NCisNCisgICBURVJNUyBBTkQgQ09ORElUSU9OUyBGT1IgVVNFLCBSRVBST0RVQ1RJT04sIEFORCBESVNUUklCVVRJT04NCisNCisgICAxLiBEZWZpbml0aW9ucy4NCisNCisgICAgICAmcXVvdDtMaWNlbnNlJnF1b3Q7IHNoYWxsIG1lYW4gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciB1c2UsIHJlcHJvZHVjdGlvbiwNCisgICAgICBhbmQgZGlzdHJpYnV0aW9uIGFzIGRlZmluZWQgYnkgU2VjdGlvbnMgMSB0aHJvdWdoIDkgb2YgdGhpcyBkb2N1bWVudC4NCisNCisgICAgICAmcXVvdDtMaWNlbnNvciZxdW90OyBzaGFsbCBtZWFuIHRoZSBjb3B5cmlnaHQgb3duZXIgb3IgZW50aXR5IGF1dGhvcml6ZWQgYnkNCisgICAgICB0aGUgY29weXJpZ2h0IG93bmVyIHRoYXQgaXMgZ3JhbnRpbmcgdGhlIExpY2Vuc2UuDQorDQorICAgICAgJnF1b3Q7TGVnYWwgRW50aXR5JnF1b3Q7IHNoYWxsIG1lYW4gdGhlIHVuaW9uIG9mIHRoZSBhY3RpbmcgZW50aXR5IGFuZCBhbGwNCisgICAgICBvdGhlciBlbnRpdGllcyB0aGF0IGNvbnRyb2wsIGFyZSBjb250cm9sbGVkIGJ5LCBvciBhcmUgdW5kZXIgY29tbW9uDQorICAgICAgY29udHJvbCB3aXRoIHRoYXQgZW50aXR5LiBGb3IgdGhlIHB1cnBvc2VzIG9mIHRoaXMgZGVmaW5pdGlvbiwNCisgICAgICAmcXVvdDtjb250cm9sJnF1b3Q7IG1lYW5zIChpKSB0aGUgcG93ZXIsIGRpcmVjdCBvciBpbmRpcmVjdCwgdG8gY2F1c2UgdGhlDQorICAgICAgZGlyZWN0aW9uIG9yIG1hbmFnZW1lbnQgb2Ygc3VjaCBlbnRpdHksIHdoZXRoZXIgYnkgY29udHJhY3Qgb3INCisgICAgICBvdGhlcndpc2UsIG9yIChpaSkgb3duZXJzaGlwIG9mIGZpZnR5IHBlcmNlbnQgKDUwJSkgb3IgbW9yZSBvZiB0aGUNCisgICAgICBvdXRzdGFuZGluZyBzaGFyZXMsIG9yIChpaWkpIGJlbmVmaWNpYWwgb3duZXJzaGlwIG9mIHN1Y2ggZW50aXR5Lg0KKw0KKyAgICAgICZxdW90O1lvdSZxdW90OyAob3IgJnF1b3Q7WW91ciZxdW90Oykgc2hhbGwgbWVhbiBhbiBpbmRpdmlkdWFsIG9yIExlZ2FsIEVudGl0eQ0KKyAgICAgIGV4ZXJjaXNpbmcgcGVybWlzc2lvbnMgZ3JhbnRlZCBieSB0aGlzIExpY2Vuc2UuDQorDQorICAgICAgJnF1b3Q7U291cmNlJnF1b3Q7IGZvcm0gc2hhbGwgbWVhbiB0aGUgcHJlZmVycmVkIGZvcm0gZm9yIG1ha2luZyBtb2RpZmljYXRpb25zLA0KKyAgICAgIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gc29mdHdhcmUgc291cmNlIGNvZGUsIGRvY3VtZW50YXRpb24NCisgICAgICBzb3VyY2UsIGFuZCBjb25maWd1cmF0aW9uIGZpbGVzLg0KKw0KKyAgICAgICZxdW90O09iamVjdCZxdW90OyBmb3JtIHNoYWxsIG1lYW4gYW55IGZvcm0gcmVzdWx0aW5nIGZyb20gbWVjaGFuaWNhbA0KKyAgICAgIHRyYW5zZm9ybWF0aW9uIG9yIHRyYW5zbGF0aW9uIG9mIGEgU291cmNlIGZvcm0sIGluY2x1ZGluZyBidXQNCisgICAgICBub3QgbGltaXRlZCB0byBjb21waWxlZCBvYmplY3QgY29kZSwgZ2VuZXJhdGVkIGRvY3VtZW50YXRpb24sDQorICAgICAgYW5kIGNvbnZlcnNpb25zIHRvIG90aGVyIG1lZGlhIHR5cGVzLg0KKw0KKyAgICAgICZxdW90O1dvcmsmcXVvdDsgc2hhbGwgbWVhbiB0aGUgd29yayBvZiBhdXRob3JzaGlwLCB3aGV0aGVyIGluIFNvdXJjZSBvcg0KKyAgICAgIE9iamVjdCBmb3JtLCBtYWRlIGF2YWlsYWJsZSB1bmRlciB0aGUgTGljZW5zZSwgYXMgaW5kaWNhdGVkIGJ5IGENCisgICAgICBjb3B5cmlnaHQgbm90aWNlIHRoYXQgaXMgaW5jbHVkZWQgaW4gb3IgYXR0YWNoZWQgdG8gdGhlIHdvcmsNCisgICAgICAoYW4gZXhhbXBsZSBpcyBwcm92aWRlZCBpbiB0aGUgQXBwZW5kaXggYmVsb3cpLg0KKw0KKyAgICAgICZxdW90O0Rlcml2YXRpdmUgV29ya3MmcXVvdDsgc2hhbGwgbWVhbiBhbnkgd29yaywgd2hldGhlciBpbiBTb3VyY2Ugb3IgT2JqZWN0DQorICAgICAgZm9ybSwgdGhhdCBpcyBiYXNlZCBvbiAob3IgZGVyaXZlZCBmcm9tKSB0aGUgV29yayBhbmQgZm9yIHdoaWNoIHRoZQ0KKyAgICAgIGVkaXRvcmlhbCByZXZpc2lvbnMsIGFubm90YXRpb25zLCBlbGFib3JhdGlvbnMsIG9yIG90aGVyIG1vZGlmaWNhdGlvbnMNCisgICAgICByZXByZXNlbnQsIGFzIGEgd2hvbGUsIGFuIG9yaWdpbmFsIHdvcmsgb2YgYXV0aG9yc2hpcC4gRm9yIHRoZSBwdXJwb3Nlcw0KKyAgICAgIG9mIHRoaXMgTGljZW5zZSwgRGVyaXZhdGl2ZSBXb3JrcyBzaGFsbCBub3QgaW5jbHVkZSB3b3JrcyB0aGF0IHJlbWFpbg0KKyAgICAgIHNlcGFyYWJsZSBmcm9tLCBvciBtZXJlbHkgbGluayAob3IgYmluZCBieSBuYW1lKSB0byB0aGUgaW50ZXJmYWNlcyBvZiwNCisgICAgICB0aGUgV29yayBhbmQgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mLg0KKw0KKyAgICAgICZxdW90O0NvbnRyaWJ1dGlvbiZxdW90OyBzaGFsbCBtZWFuIGFueSB3b3JrIG9mIGF1dGhvcnNoaXAsIGluY2x1ZGluZw0KKyAgICAgIHRoZSBvcmlnaW5hbCB2ZXJzaW9uIG9mIHRoZSBXb3JrIGFuZCBhbnkgbW9kaWZpY2F0aW9ucyBvciBhZGRpdGlvbnMNCisgICAgICB0byB0aGF0IFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mLCB0aGF0IGlzIGludGVudGlvbmFsbHkNCisgICAgICBzdWJtaXR0ZWQgdG8gTGljZW5zb3IgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yayBieSB0aGUgY29weXJpZ2h0IG93bmVyDQorICAgICAgb3IgYnkgYW4gaW5kaXZpZHVhbCBvciBMZWdhbCBFbnRpdHkgYXV0aG9yaXplZCB0byBzdWJtaXQgb24gYmVoYWxmIG9mDQorICAgICAgdGhlIGNvcHlyaWdodCBvd25lci4gRm9yIHRoZSBwdXJwb3NlcyBvZiB0aGlzIGRlZmluaXRpb24sICZxdW90O3N1Ym1pdHRlZCZxdW90Ow0KKyAgICAgIG1lYW5zIGFueSBmb3JtIG9mIGVsZWN0cm9uaWMsIHZlcmJhbCwgb3Igd3JpdHRlbiBjb21tdW5pY2F0aW9uIHNlbnQNCisgICAgICB0byB0aGUgTGljZW5zb3Igb3IgaXRzIHJlcHJlc2VudGF0aXZlcywgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0bw0KKyAgICAgIGNvbW11bmljYXRpb24gb24gZWxlY3Ryb25pYyBtYWlsaW5nIGxpc3RzLCBzb3VyY2UgY29kZSBjb250cm9sIHN5c3RlbXMsDQorICAgICAgYW5kIGlzc3VlIHRyYWNraW5nIHN5c3RlbXMgdGhhdCBhcmUgbWFuYWdlZCBieSwgb3Igb24gYmVoYWxmIG9mLCB0aGUNCisgICAgICBMaWNlbnNvciBmb3IgdGhlIHB1cnBvc2Ugb2YgZGlzY3Vzc2luZyBhbmQgaW1wcm92aW5nIHRoZSBXb3JrLCBidXQNCisgICAgICBleGNsdWRpbmcgY29tbXVuaWNhdGlvbiB0aGF0IGlzIGNvbnNwaWN1b3VzbHkgbWFya2VkIG9yIG90aGVyd2lzZQ0KKyAgICAgIGRlc2lnbmF0ZWQgaW4gd3JpdGluZyBieSB0aGUgY29weXJpZ2h0IG93bmVyIGFzICZxdW90O05vdCBhIENvbnRyaWJ1dGlvbi4mcXVvdDsNCisNCisgICAgICAmcXVvdDtDb250cmlidXRvciZxdW90OyBzaGFsbCBtZWFuIExpY2Vuc29yIGFuZCBhbnkgaW5kaXZpZHVhbCBvciBMZWdhbCBFbnRpdHkNCisgICAgICBvbiBiZWhhbGYgb2Ygd2hvbSBhIENvbnRyaWJ1dGlvbiBoYXMgYmVlbiByZWNlaXZlZCBieSBMaWNlbnNvciBhbmQNCisgICAgICBzdWJzZXF1ZW50bHkgaW5jb3Jwb3JhdGVkIHdpdGhpbiB0aGUgV29yay4NCisNCisgICAyLiBHcmFudCBvZiBDb3B5cmlnaHQgTGljZW5zZS4gU3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YNCisgICAgICB0aGlzIExpY2Vuc2UsIGVhY2ggQ29udHJpYnV0b3IgaGVyZWJ5IGdyYW50cyB0byBZb3UgYSBwZXJwZXR1YWwsDQorICAgICAgd29ybGR3aWRlLCBub24tZXhjbHVzaXZlLCBuby1jaGFyZ2UsIHJveWFsdHktZnJlZSwgaXJyZXZvY2FibGUNCisgICAgICBjb3B5cmlnaHQgbGljZW5zZSB0byByZXByb2R1Y2UsIHByZXBhcmUgRGVyaXZhdGl2ZSBXb3JrcyBvZiwNCisgICAgICBwdWJsaWNseSBkaXNwbGF5LCBwdWJsaWNseSBwZXJmb3JtLCBzdWJsaWNlbnNlLCBhbmQgZGlzdHJpYnV0ZSB0aGUNCisgICAgICBXb3JrIGFuZCBzdWNoIERlcml2YXRpdmUgV29ya3MgaW4gU291cmNlIG9yIE9iamVjdCBmb3JtLg0KKw0KKyAgIDMuIEdyYW50IG9mIFBhdGVudCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZg0KKyAgICAgIHRoaXMgTGljZW5zZSwgZWFjaCBDb250cmlidXRvciBoZXJlYnkgZ3JhbnRzIHRvIFlvdSBhIHBlcnBldHVhbCwNCisgICAgICB3b3JsZHdpZGUsIG5vbi1leGNsdXNpdmUsIG5vLWNoYXJnZSwgcm95YWx0eS1mcmVlLCBpcnJldm9jYWJsZQ0KKyAgICAgIChleGNlcHQgYXMgc3RhdGVkIGluIHRoaXMgc2VjdGlvbikgcGF0ZW50IGxpY2Vuc2UgdG8gbWFrZSwgaGF2ZSBtYWRlLA0KKyAgICAgIHVzZSwgb2ZmZXIgdG8gc2VsbCwgc2VsbCwgaW1wb3J0LCBhbmQgb3RoZXJ3aXNlIHRyYW5zZmVyIHRoZSBXb3JrLA0KKyAgICAgIHdoZXJlIHN1Y2ggbGljZW5zZSBhcHBsaWVzIG9ubHkgdG8gdGhvc2UgcGF0ZW50IGNsYWltcyBsaWNlbnNhYmxlDQorICAgICAgYnkgc3VjaCBDb250cmlidXRvciB0aGF0IGFyZSBuZWNlc3NhcmlseSBpbmZyaW5nZWQgYnkgdGhlaXINCisgICAgICBDb250cmlidXRpb24ocykgYWxvbmUgb3IgYnkgY29tYmluYXRpb24gb2YgdGhlaXIgQ29udHJpYnV0aW9uKHMpDQorICAgICAgd2l0aCB0aGUgV29yayB0byB3aGljaCBzdWNoIENvbnRyaWJ1dGlvbihzKSB3YXMgc3VibWl0dGVkLiBJZiBZb3UNCisgICAgICBpbnN0aXR1dGUgcGF0ZW50IGxpdGlnYXRpb24gYWdhaW5zdCBhbnkgZW50aXR5IChpbmNsdWRpbmcgYQ0KKyAgICAgIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1aXQpIGFsbGVnaW5nIHRoYXQgdGhlIFdvcmsNCisgICAgICBvciBhIENvbnRyaWJ1dGlvbiBpbmNvcnBvcmF0ZWQgd2l0aGluIHRoZSBXb3JrIGNvbnN0aXR1dGVzIGRpcmVjdA0KKyAgICAgIG9yIGNvbnRyaWJ1dG9yeSBwYXRlbnQgaW5mcmluZ2VtZW50LCB0aGVuIGFueSBwYXRlbnQgbGljZW5zZXMNCisgICAgICBncmFudGVkIHRvIFlvdSB1bmRlciB0aGlzIExpY2Vuc2UgZm9yIHRoYXQgV29yayBzaGFsbCB0ZXJtaW5hdGUNCisgICAgICBhcyBvZiB0aGUgZGF0ZSBzdWNoIGxpdGlnYXRpb24gaXMgZmlsZWQuDQorDQorICAgNC4gUmVkaXN0cmlidXRpb24uIFlvdSBtYXkgcmVwcm9kdWNlIGFuZCBkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUNCisgICAgICBXb3JrIG9yIERlcml2YXRpdmUgV29ya3MgdGhlcmVvZiBpbiBhbnkgbWVkaXVtLCB3aXRoIG9yIHdpdGhvdXQNCisgICAgICBtb2RpZmljYXRpb25zLCBhbmQgaW4gU291cmNlIG9yIE9iamVjdCBmb3JtLCBwcm92aWRlZCB0aGF0IFlvdQ0KKyAgICAgIG1lZXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOg0KKw0KKyAgICAgIChhKSBZb3UgbXVzdCBnaXZlIGFueSBvdGhlciByZWNpcGllbnRzIG9mIHRoZSBXb3JrIG9yDQorICAgICAgICAgIERlcml2YXRpdmUgV29ya3MgYSBjb3B5IG9mIHRoaXMgTGljZW5zZTsgYW5kDQorDQorICAgICAgKGIpIFlvdSBtdXN0IGNhdXNlIGFueSBtb2RpZmllZCBmaWxlcyB0byBjYXJyeSBwcm9taW5lbnQgbm90aWNlcw0KKyAgICAgICAgICBzdGF0aW5nIHRoYXQgWW91IGNoYW5nZWQgdGhlIGZpbGVzOyBhbmQNCisNCisgICAgICAoYykgWW91IG11c3QgcmV0YWluLCBpbiB0aGUgU291cmNlIGZvcm0gb2YgYW55IERlcml2YXRpdmUgV29ya3MNCisgICAgICAgICAgdGhhdCBZb3UgZGlzdHJpYnV0ZSwgYWxsIGNvcHlyaWdodCwgcGF0ZW50LCB0cmFkZW1hcmssIGFuZA0KKyAgICAgICAgICBhdHRyaWJ1dGlvbiBub3RpY2VzIGZyb20gdGhlIFNvdXJjZSBmb3JtIG9mIHRoZSBXb3JrLA0KKyAgICAgICAgICBleGNsdWRpbmcgdGhvc2Ugbm90aWNlcyB0aGF0IGRvIG5vdCBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mDQorICAgICAgICAgIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyBhbmQNCisNCisgICAgICAoZCkgSWYgdGhlIFdvcmsgaW5jbHVkZXMgYSAmcXVvdDtOT1RJQ0UmcXVvdDsgdGV4dCBmaWxlIGFzIHBhcnQgb2YgaXRzDQorICAgICAgICAgIGRpc3RyaWJ1dGlvbiwgdGhlbiBhbnkgRGVyaXZhdGl2ZSBXb3JrcyB0aGF0IFlvdSBkaXN0cmlidXRlIG11c3QNCisgICAgICAgICAgaW5jbHVkZSBhIHJlYWRhYmxlIGNvcHkgb2YgdGhlIGF0dHJpYnV0aW9uIG5vdGljZXMgY29udGFpbmVkDQorICAgICAgICAgIHdpdGhpbiBzdWNoIE5PVElDRSBmaWxlLCBleGNsdWRpbmcgdGhvc2Ugbm90aWNlcyB0aGF0IGRvIG5vdA0KKyAgICAgICAgICBwZXJ0YWluIHRvIGFueSBwYXJ0IG9mIHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpbiBhdCBsZWFzdCBvbmUNCisgICAgICAgICAgb2YgdGhlIGZvbGxvd2luZyBwbGFjZXM6IHdpdGhpbiBhIE5PVElDRSB0ZXh0IGZpbGUgZGlzdHJpYnV0ZWQNCisgICAgICAgICAgYXMgcGFydCBvZiB0aGUgRGVyaXZhdGl2ZSBXb3Jrczsgd2l0aGluIHRoZSBTb3VyY2UgZm9ybSBvcg0KKyAgICAgICAgICBkb2N1bWVudGF0aW9uLCBpZiBwcm92aWRlZCBhbG9uZyB3aXRoIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyBvciwNCisgICAgICAgICAgd2l0aGluIGEgZGlzcGxheSBnZW5lcmF0ZWQgYnkgdGhlIERlcml2YXRpdmUgV29ya3MsIGlmIGFuZA0KKyAgICAgICAgICB3aGVyZXZlciBzdWNoIHRoaXJkLXBhcnR5IG5vdGljZXMgbm9ybWFsbHkgYXBwZWFyLiBUaGUgY29udGVudHMNCisgICAgICAgICAgb2YgdGhlIE5PVElDRSBmaWxlIGFyZSBmb3IgaW5mb3JtYXRpb25hbCBwdXJwb3NlcyBvbmx5IGFuZA0KKyAgICAgICAgICBkbyBub3QgbW9kaWZ5IHRoZSBMaWNlbnNlLiBZb3UgbWF5IGFkZCBZb3VyIG93biBhdHRyaWJ1dGlvbg0KKyAgICAgICAgICBub3RpY2VzIHdpdGhpbiBEZXJpdmF0aXZlIFdvcmtzIHRoYXQgWW91IGRpc3RyaWJ1dGUsIGFsb25nc2lkZQ0KKyAgICAgICAgICBvciBhcyBhbiBhZGRlbmR1bSB0byB0aGUgTk9USUNFIHRleHQgZnJvbSB0aGUgV29yaywgcHJvdmlkZWQNCisgICAgICAgICAgdGhhdCBzdWNoIGFkZGl0aW9uYWwgYXR0cmlidXRpb24gbm90aWNlcyBjYW5ub3QgYmUgY29uc3RydWVkDQorICAgICAgICAgIGFzIG1vZGlmeWluZyB0aGUgTGljZW5zZS4NCisNCisgICAgICBZb3UgbWF5IGFkZCBZb3VyIG93biBjb3B5cmlnaHQgc3RhdGVtZW50IHRvIFlvdXIgbW9kaWZpY2F0aW9ucyBhbmQNCisgICAgICBtYXkgcHJvdmlkZSBhZGRpdGlvbmFsIG9yIGRpZmZlcmVudCBsaWNlbnNlIHRlcm1zIGFuZCBjb25kaXRpb25zDQorICAgICAgZm9yIHVzZSwgcmVwcm9kdWN0aW9uLCBvciBkaXN0cmlidXRpb24gb2YgWW91ciBtb2RpZmljYXRpb25zLCBvcg0KKyAgICAgIGZvciBhbnkgc3VjaCBEZXJpdmF0aXZlIFdvcmtzIGFzIGEgd2hvbGUsIHByb3ZpZGVkIFlvdXIgdXNlLA0KKyAgICAgIHJlcHJvZHVjdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGUgV29yayBvdGhlcndpc2UgY29tcGxpZXMgd2l0aA0KKyAgICAgIHRoZSBjb25kaXRpb25zIHN0YXRlZCBpbiB0aGlzIExpY2Vuc2UuDQorDQorICAgNS4gU3VibWlzc2lvbiBvZiBDb250cmlidXRpb25zLiBVbmxlc3MgWW91IGV4cGxpY2l0bHkgc3RhdGUgb3RoZXJ3aXNlLA0KKyAgICAgIGFueSBDb250cmlidXRpb24gaW50ZW50aW9uYWxseSBzdWJtaXR0ZWQgZm9yIGluY2x1c2lvbiBpbiB0aGUgV29yaw0KKyAgICAgIGJ5IFlvdSB0byB0aGUgTGljZW5zb3Igc2hhbGwgYmUgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mDQorICAgICAgdGhpcyBMaWNlbnNlLCB3aXRob3V0IGFueSBhZGRpdGlvbmFsIHRlcm1zIG9yIGNvbmRpdGlvbnMuDQorICAgICAgTm90d2l0aHN0YW5kaW5nIHRoZSBhYm92ZSwgbm90aGluZyBoZXJlaW4gc2hhbGwgc3VwZXJzZWRlIG9yIG1vZGlmeQ0KKyAgICAgIHRoZSB0ZXJtcyBvZiBhbnkgc2VwYXJhdGUgbGljZW5zZSBhZ3JlZW1lbnQgeW91IG1heSBoYXZlIGV4ZWN1dGVkDQorICAgICAgd2l0aCBMaWNlbnNvciByZWdhcmRpbmcgc3VjaCBDb250cmlidXRpb25zLg0KKw0KKyAgIDYuIFRyYWRlbWFya3MuIFRoaXMgTGljZW5zZSBkb2VzIG5vdCBncmFudCBwZXJtaXNzaW9uIHRvIHVzZSB0aGUgdHJhZGUNCisgICAgICBuYW1lcywgdHJhZGVtYXJrcywgc2VydmljZSBtYXJrcywgb3IgcHJvZHVjdCBuYW1lcyBvZiB0aGUgTGljZW5zb3IsDQorICAgICAgZXhjZXB0IGFzIHJlcXVpcmVkIGZvciByZWFzb25hYmxlIGFuZCBjdXN0b21hcnkgdXNlIGluIGRlc2NyaWJpbmcgdGhlDQorICAgICAgb3JpZ2luIG9mIHRoZSBXb3JrIGFuZCByZXByb2R1Y2luZyB0aGUgY29udGVudCBvZiB0aGUgTk9USUNFIGZpbGUuDQorDQorICAgNy4gRGlzY2xhaW1lciBvZiBXYXJyYW50eS4gVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yDQorICAgICAgYWdyZWVkIHRvIGluIHdyaXRpbmcsIExpY2Vuc29yIHByb3ZpZGVzIHRoZSBXb3JrIChhbmQgZWFjaA0KKyAgICAgIENvbnRyaWJ1dG9yIHByb3ZpZGVzIGl0cyBDb250cmlidXRpb25zKSBvbiBhbiAmcXVvdDtBUyBJUyZxdW90OyBCQVNJUywNCisgICAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3INCisgICAgICBpbXBsaWVkLCBpbmNsdWRpbmcsIHdpdGhvdXQgbGltaXRhdGlvbiwgYW55IHdhcnJhbnRpZXMgb3IgY29uZGl0aW9ucw0KKyAgICAgIG9mIFRJVExFLCBOT04tSU5GUklOR0VNRU5ULCBNRVJDSEFOVEFCSUxJVFksIG9yIEZJVE5FU1MgRk9SIEENCisgICAgICBQQVJUSUNVTEFSIFBVUlBPU0UuIFlvdSBhcmUgc29sZWx5IHJlc3BvbnNpYmxlIGZvciBkZXRlcm1pbmluZyB0aGUNCisgICAgICBhcHByb3ByaWF0ZW5lc3Mgb2YgdXNpbmcgb3IgcmVkaXN0cmlidXRpbmcgdGhlIFdvcmsgYW5kIGFzc3VtZSBhbnkNCisgICAgICByaXNrcyBhc3NvY2lhdGVkIHdpdGggWW91ciBleGVyY2lzZSBvZiBwZXJtaXNzaW9ucyB1bmRlciB0aGlzIExpY2Vuc2UuDQorDQorICAgOC4gTGltaXRhdGlvbiBvZiBMaWFiaWxpdHkuIEluIG5vIGV2ZW50IGFuZCB1bmRlciBubyBsZWdhbCB0aGVvcnksDQorICAgICAgd2hldGhlciBpbiB0b3J0IChpbmNsdWRpbmcgbmVnbGlnZW5jZSksIGNvbnRyYWN0LCBvciBvdGhlcndpc2UsDQorICAgICAgdW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IChzdWNoIGFzIGRlbGliZXJhdGUgYW5kIGdyb3NzbHkNCisgICAgICBuZWdsaWdlbnQgYWN0cykgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNoYWxsIGFueSBDb250cmlidXRvciBiZQ0KKyAgICAgIGxpYWJsZSB0byBZb3UgZm9yIGRhbWFnZXMsIGluY2x1ZGluZyBhbnkgZGlyZWN0LCBpbmRpcmVjdCwgc3BlY2lhbCwNCisgICAgICBpbmNpZGVudGFsLCBvciBjb25zZXF1ZW50aWFsIGRhbWFnZXMgb2YgYW55IGNoYXJhY3RlciBhcmlzaW5nIGFzIGENCisgICAgICByZXN1bHQgb2YgdGhpcyBMaWNlbnNlIG9yIG91dCBvZiB0aGUgdXNlIG9yIGluYWJpbGl0eSB0byB1c2UgdGhlDQorICAgICAgV29yayAoaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0byBkYW1hZ2VzIGZvciBsb3NzIG9mIGdvb2R3aWxsLA0KKyAgICAgIHdvcmsgc3RvcHBhZ2UsIGNvbXB1dGVyIGZhaWx1cmUgb3IgbWFsZnVuY3Rpb24sIG9yIGFueSBhbmQgYWxsDQorICAgICAgb3RoZXIgY29tbWVyY2lhbCBkYW1hZ2VzIG9yIGxvc3NlcyksIGV2ZW4gaWYgc3VjaCBDb250cmlidXRvcg0KKyAgICAgIGhhcyBiZWVuIGFkdmlzZWQgb2YgdGhlIHBvc3NpYmlsaXR5IG9mIHN1Y2ggZGFtYWdlcy4NCisNCisgICA5LiBBY2NlcHRpbmcgV2FycmFudHkgb3IgQWRkaXRpb25hbCBMaWFiaWxpdHkuIFdoaWxlIHJlZGlzdHJpYnV0aW5nDQorICAgICAgdGhlIFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mLCBZb3UgbWF5IGNob29zZSB0byBvZmZlciwNCisgICAgICBhbmQgY2hhcmdlIGEgZmVlIGZvciwgYWNjZXB0YW5jZSBvZiBzdXBwb3J0LCB3YXJyYW50eSwgaW5kZW1uaXR5LA0KKyAgICAgIG9yIG90aGVyIGxpYWJpbGl0eSBvYmxpZ2F0aW9ucyBhbmQvb3IgcmlnaHRzIGNvbnNpc3RlbnQgd2l0aCB0aGlzDQorICAgICAgTGljZW5zZS4gSG93ZXZlciwgaW4gYWNjZXB0aW5nIHN1Y2ggb2JsaWdhdGlvbnMsIFlvdSBtYXkgYWN0IG9ubHkNCisgICAgICBvbiBZb3VyIG93biBiZWhhbGYgYW5kIG9uIFlvdXIgc29sZSByZXNwb25zaWJpbGl0eSwgbm90IG9uIGJlaGFsZg0KKyAgICAgIG9mIGFueSBvdGhlciBDb250cmlidXRvciwgYW5kIG9ubHkgaWYgWW91IGFncmVlIHRvIGluZGVtbmlmeSwNCisgICAgICBkZWZlbmQsIGFuZCBob2xkIGVhY2ggQ29udHJpYnV0b3IgaGFybWxlc3MgZm9yIGFueSBsaWFiaWxpdHkNCisgICAgICBpbmN1cnJlZCBieSwgb3IgY2xhaW1zIGFzc2VydGVkIGFnYWluc3QsIHN1Y2ggQ29udHJpYnV0b3IgYnkgcmVhc29uDQorICAgICAgb2YgeW91ciBhY2NlcHRpbmcgYW55IHN1Y2ggd2FycmFudHkgb3IgYWRkaXRpb25hbCBsaWFiaWxpdHkuDQorDQorICAgRU5EIE9GIFRFUk1TIEFORCBDT05ESVRJT05TDQorDQorICAgQVBQRU5ESVg6IEhvdyB0byBhcHBseSB0aGUgQXBhY2hlIExpY2Vuc2UgdG8geW91ciB3b3JrLg0KKw0KKyAgICAgIFRvIGFwcGx5IHRoZSBBcGFjaGUgTGljZW5zZSB0byB5b3VyIHdvcmssIGF0dGFjaCB0aGUgZm9sbG93aW5nDQorICAgICAgYm9pbGVycGxhdGUgbm90aWNlLCB3aXRoIHRoZSBmaWVsZHMgZW5jbG9zZWQgYnkgYnJhY2tldHMgJnF1b3Q7W10mcXVvdDsNCisgICAgICByZXBsYWNlZCB3aXRoIHlvdXIgb3duIGlkZW50aWZ5aW5nIGluZm9ybWF0aW9uLiAoRG9uJ3QgaW5jbHVkZQ0KKyAgICAgIHRoZSBicmFja2V0cyEpICBUaGUgdGV4dCBzaG91bGQgYmUgZW5jbG9zZWQgaW4gdGhlIGFwcHJvcHJpYXRlDQorICAgICAgY29tbWVudCBzeW50YXggZm9yIHRoZSBmaWxlIGZvcm1hdC4gV2UgYWxzbyByZWNvbW1lbmQgdGhhdCBhDQorICAgICAgZmlsZSBvciBjbGFzcyBuYW1lIGFuZCBkZXNjcmlwdGlvbiBvZiBwdXJwb3NlIGJlIGluY2x1ZGVkIG9uIHRoZQ0KKyAgICAgIHNhbWUgJnF1b3Q7cHJpbnRlZCBwYWdlJnF1b3Q7IGFzIHRoZSBjb3B5cmlnaHQgbm90aWNlIGZvciBlYXNpZXINCisgICAgICBpZGVudGlmaWNhdGlvbiB3aXRoaW4gdGhpcmQtcGFydHkgYXJjaGl2ZXMuDQorDQorICAgQ29weXJpZ2h0IFt5eXl5XSBbbmFtZSBvZiBjb3B5cmlnaHQgb3duZXJdDQorDQorICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICZxdW90O0xpY2Vuc2UmcXVvdDspOw0KKyAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisNCisgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorDQorICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICZxdW90O0FTIElTJnF1b3Q7IEJBU0lTLA0KKyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisNCisNCisgPC9wcmU+PC90ZD4KKyAgICA8L3RyPgorICAgIDwvdGFibGU+CisgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDwhLS0gRk9PVEVSIC0tPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgYWxpZ249ImNlbnRlciI+PGZvbnQgY29sb3I9IiMxMjM0NjUiIHNpemU9Ii0xIj48ZW0+CisgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAmIzE2OTsgMjAwMy0yMDEzLCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyAgICAgICAgICAgICAgICAgICAgPC9lbT48L2ZvbnQ+PC9kaXY+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvYm9keT4KKyAgICA8L2h0bWw+Cis8IS0tIGVuZCB0aGUgcHJvY2Vzc2luZyAtLT4KKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKwpkaWZmIC0tZ2l0IGEvZG9jcy9tYWlsLWxpc3RzLmh0bWwgYi9kb2NzL21haWwtbGlzdHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTY2MmFhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9tYWlsLWxpc3RzLmh0bWwKQEAgLTAsMCArMSw4ODAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgorCis8IS0tCitDb3B5cmlnaHQgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKworPCEtLSBDb250ZW50IFN0eWxlc2hlZXQgZm9yIFNpdGUgLS0+CisKKyAgICAgICAgCis8IS0tIHN0YXJ0IHRoZSBwcm9jZXNzaW5nIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8IS0tIEdFTkVSQVRFRCBGSUxFLCBETyBOT1QgRURJVCwgRURJVCBUSEUgWE1MIEZJTEUgSU4geGRvY3MgSU5TVEVBRCEgLS0+CisgICAgPCEtLSBNYWluIFBhZ2UgU2VjdGlvbiAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGh0bWw+CisgICAgICAgIDxoZWFkPgorICAgICAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiLz4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iCisJCQlTZWJhc3RpYW4gV2FnbmVyCisJCSI+CisgICAgICAgICAgICA8bWV0YSBuYW1lPSJlbWFpbCIgY29udGVudD0ic2ViYXdhZ25lckBhcGFjaGUub3JnIj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICA8dGl0bGU+QXBhY2hlIE9wZW5NZWV0aW5ncyAtIE1haWxpbmcgTGlzdHM8L3RpdGxlPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL29wZW5tZWV0aW5ncy5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2pxdWVyeS11aS5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2NvaW4tc2xpZGVyLXN0eWxlcy5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2NvbG9yYm94LmNzcyIgLz4KKyAgICAgICAgICAgIAorCQkJPCEtLSBBZGQgalF1ZXJ5IGxpYnJhcnkgLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9qcXVlcnktMS43LjEubWluLmpzIj48L3NjcmlwdD4KKwkJCisJCQk8IS0tIEFkZCBjb2luc2xpZGVyIHBsdWdpbnMgLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9jb2luLXNsaWRlci5taW4uanMiPjwvc2NyaXB0PgorCQkJCisJCQk8IS0tIEFkZCBjb2xvcmJveCBwbHVnaW4gLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9qcXVlcnkuY29sb3Jib3guanMiPjwvc2NyaXB0PgorCQkKKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkuY29yZS5qcyI+PC9zY3JpcHQ+CisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLndpZGdldC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5hY2NvcmRpb24uanMiPjwvc2NyaXB0PgorCQkJCisJCQk8c2NyaXB0PgorCQkJJChmdW5jdGlvbigpIHsKKwkJCQkkKCAiI2FjY29yZGlvbiIgKS5hY2NvcmRpb24oeworCQkJCQlhdXRvSGVpZ2h0OiBmYWxzZSwKKwkJCQkJbmF2aWdhdGlvbjogdHJ1ZSwKKwkJCQkJbmF2aWdhdGlvbkZpbHRlcjogZnVuY3Rpb24gKCkgeworCQkJCQkJdmFyIHNpZGViYXJIcmVmQXJyYXkgPSB0aGlzLmhyZWYuc3BsaXQoIi8iKTsKKyAgICAJCQkJCXZhciBzaWRlQmFyTGFzdFN0cmluZyA9IHNpZGViYXJIcmVmQXJyYXlbc2lkZWJhckhyZWZBcnJheS5sZW5ndGggLSAxXS50b0xvd2VyQ2FzZSgpOworCQkJCQkJCisJCQkJCQlpZiAoc2lkZUJhckxhc3RTdHJpbmcuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJCQkJcmV0dXJuIGZhbHNlOworCQkJCQkJfQorCQkJCQkJCisJCQkJCQkJCQkJCQkvKiBkb2N1bWVudC5sb2NhdGlvbi5ocmVmICovCisJCQkJCQl2YXIgY3VycmVudFNlY3Rpb24gPSAiIjsKKwkJCQkJCQorCQkJCQkJdmFyIGN1cnJlbnRMb2NhdGlvbiA9ICIiOworCQkJCQkJdmFyIGN1cnJlbnRMaW5rID0gIiI7CisJCQkJCQlpZiAoZmFsc2UpIHsKKwkJCQkJCQorCQkJCQkJfQorICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9pbmRleC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9pbmRleC5odG1sIi5zdWJzdHIoMSwgIi9pbmRleC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2xpY2Vuc2UuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbGljZW5zZS5odG1sIi5zdWJzdHIoMSwgIi9saWNlbnNlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iLnN1YnN0cigxLCAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kb3dubG9hZHMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZG93bmxvYWRzLmh0bWwiLnN1YnN0cigxLCAiL2Rvd25sb2Fkcy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIuc3Vic3RyKDEsICIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luc3RhbGxhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9pbnN0YWxsYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvaW5zdGFsbGF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVXBncmFkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9VcGdyYWRlLmh0bWwiLnN1YnN0cigxLCAiL1VwZ3JhZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIi5zdWJzdHIoMSwgImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29tbWFuZExpbmVBZG1pbi5odG1sIi5zdWJzdHIoMSwgIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2dldC1pbnZvbHZlZC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2dldC1pbnZvbHZlZC5odG1sIi5zdWJzdHIoMSwgIi9nZXQtaW52b2x2ZWQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi90ZWFtLWxpc3QuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi90ZWFtLWxpc3QuaHRtbCIuc3Vic3RyKDEsICIvdGVhbS1saXN0Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbWFpbC1saXN0cy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL21haWwtbGlzdHMuaHRtbCIuc3Vic3RyKDEsICIvbWFpbC1saXN0cy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIuc3Vic3RyKDEsICJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvc3ZuLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9zdm4uaHRtbCIuc3Vic3RyKDEsICIvc3ZuLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIi5zdWJzdHIoMSwgImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZGVwZW5kZW5jaWVzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kZXBlbmRlbmNpZXMuaHRtbCIuc3Vic3RyKDEsICIvZGVwZW5kZW5jaWVzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiLnN1YnN0cigxLCAiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSlVuaXRUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9KVW5pdFRlc3RpbmcuaHRtbCIuc3Vic3RyKDEsICIvSlVuaXRUZXN0aW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTWFudWFsVGVzdGluZy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTWFudWFsVGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9NYW51YWxUZXN0aW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVsZWFzZUd1aWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZWxlYXNlR3VpZGUuaHRtbCIuc3Vic3RyKDEsICIvUmVsZWFzZUd1aWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2Vic2l0ZUd1aWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9XZWJzaXRlR3VpZGUuaHRtbCIuc3Vic3RyKDEsICIvV2Vic2l0ZUd1aWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1NvYXBSZXN0QVBJLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Tb2FwUmVzdEFQSS5odG1sIi5zdWJzdHIoMSwgIi9Tb2FwUmVzdEFQSS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RBUElTYW1wbGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1Jlc3RBUElTYW1wbGUuaHRtbCIuc3Vic3RyKDEsICIvUmVzdEFQSVNhbXBsZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0xkYXBBbmRBRFMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0xkYXBBbmRBRFMuaHRtbCIuc3Vic3RyKDEsICIvTGRhcEFuZEFEUy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0Vycm9yc1RhYmxlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9FcnJvcnNUYWJsZS5odG1sIi5zdWJzdHIoMSwgIi9FcnJvcnNUYWJsZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Nb29kbGVQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTW9vZGxlUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL01vb2RsZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Nha2FpUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1Nha2FpUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1Nha2FpUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSmlyYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9KaXJhUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0ppcmFQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Kb29tbGFQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSm9vbWxhUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0pvb21sYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0RydXBhbFBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9EcnVwYWxQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvRHJ1cGFsUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQml0cml4UGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0JpdHJpeFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9CaXRyaXhQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVkbWluZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZWRtaW5lUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1JlZG1pbmVQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9JQk1EQjJDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JQk1EQjJDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvSUJNREIyQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9PcmFjbGVDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9PcmFjbGVDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvT3JhY2xlQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NeVNRTENvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL015U1FMQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL015U1FMQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1Bvc3RncmVzQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL1Bvc3RncmVzQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0xhbmd1YWdlRWRpdG9yLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIuc3Vic3RyKDEsICIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiLnN1YnN0cigxLCAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0VkaXRUZW1wbGF0ZXMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9FZGl0VGVtcGxhdGVzLmh0bWwiLnN1YnN0cigxLCAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUG9ydFNldHRpbmdzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9ydFNldHRpbmdzLmh0bWwiLnN1YnN0cigxLCAiL1BvcnRTZXR0aW5ncy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiLnN1YnN0cigxLCAiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiLnN1YnN0cigxLCAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0Rhc2hib2FyZC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0Rhc2hib2FyZC5odG1sIi5zdWJzdHIoMSwgIi9EYXNoYm9hcmQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0hvdEtleXMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Ib3RLZXlzLmh0bWwiLnN1YnN0cigxLCAiL0hvdEtleXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViYXBwTmFtZVBhdGguaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJhcHBOYW1lUGF0aC5odG1sIi5zdWJzdHIoMSwgIi9XZWJhcHBOYW1lUGF0aC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTmF2aWdhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL05hdmlnYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvTmF2aWdhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIuc3Vic3RyKDEsICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIuc3Vic3RyKDEsICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIi5zdWJzdHIoMSwgIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SVE1QU0FuZEhUVFBTLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUlRNUFNBbmRIVFRQUy5odG1sIi5zdWJzdHIoMSwgIi9SVE1QU0FuZEhUVFBTLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiLnN1YnN0cigxLCAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiLnN1YnN0cigxLCAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ2x1c3RlcmluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NsdXN0ZXJpbmcuaHRtbCIuc3Vic3RyKDEsICIvQ2x1c3RlcmluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZXRWZXJzaW9uSW5mby5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dldFZlcnNpb25JbmZvLmh0bWwiLnN1YnN0cigxLCAiL0dldFZlcnNpb25JbmZvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCSAgICAJCQkJCQorICAgIAkJCQkJY3VycmVudExpbmsgPSBjdXJyZW50TGluay50b0xvd2VyQ2FzZSgpOworICAgIAkJCQkJY3VycmVudExvY2F0aW9uID0gY3VycmVudExvY2F0aW9uLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQkKKwkJCQkJCXJldHVybiBzaWRlQmFyTGFzdFN0cmluZyA9PSBjdXJyZW50TGluaysiIyIrY3VycmVudExvY2F0aW9uOworCQkJCQl9CisJCQkJfSk7CisJCQl9KTsKKwkJCTwvc2NyaXB0PgorCQkJCisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisJCQkJJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CisJCQkJCSQoJy5mYW5jeWJveC1idXR0b25zJykuY29sb3Jib3goe3JlbDonZmFuY3lib3gtYnV0dG9ucycsd2lkdGg6Ijc1JSIsIGhlaWdodDoiNzUlIn0pOworCQkJCQkkKCcjYWNjb3JkaW9uIGEnKS5lYWNoKGZ1bmN0aW9uKCkgeworCQkJCSAgICAgIHZhciBhID0gJCh0aGlzKTsKKwkJCQkgICAgICB2YXIgaHJlZiA9IGEuYXR0cigiaHJlZiIpOworCQkJCSAgICAgIGlmIChocmVmLmluZGV4T2YoIiMiKSA9PSAtMSkgeworCQkJCSAgICAgIAkgIHZhciBjb21wYXJlSXQgPSBocmVmLnN1YnN0cigyLCBocmVmLmxlbmd0aCk7CisJCQkJCSAgICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoY29tcGFyZUl0KSE9IC0xKSB7CisJCQkJCSAgICAgICBhLmFkZENsYXNzKCdhY3RpdmUnKTsKKwkJCQkJICAgICAgfQorCQkJCSAgICAgIH0KKwkJCQkgICAgfSk7CisJCQkJCSQoJyNjb2luLXNsaWRlcicpLmNvaW5zbGlkZXIoeyB3aWR0aDogNjQwLGhlaWdodDogNDAwLCBkZWxheTogNDAwMCAgfSk7CQkJCQkKKwkJCQl9KTsKKwkJCTwvc2NyaXB0PgkKKwkJCQkJCQorCQkJPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKwkJCQkuZmFuY3lib3gtY3VzdG9tIC5mYW5jeWJveC1vdXRlciB7CisJCQkJCWJveC1zaGFkb3c6IDAgMCA1MHB4ICMyMjI7CisJCQkJfQorCQkJPC9zdHlsZT4KKyAgICAgICAgPC9oZWFkPgorCisgICAgICAgIDxib2R5IGJnY29sb3I9IiNmZmZmZmYiIHRleHQ9IiMwMDAwMDAiIGxpbms9IiMxMjM0NjUiIHZsaW5rPSIjMTIzNDY1IiBhbGluaz0iIzAwMDAwMCI+ICAKKyAgICAgICAgCTxkaXYgY2xhc3M9Im1haW5ib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgCTxkaXYgY2xhc3M9InN1cGVyYm9keSIgc3R5bGU9IndpZHRoOiAxMDAlOyI+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiPgorICAgICAgICAgICAgICAgIDwhLS0gVE9QIElNQUdFIC0tPgorICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0Ij4KKzxhIGhyZWY9Imh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy8iPjxpbWcgc3JjPSIuL2ltYWdlcy9sb2dvLTIuanBnIiBhbHQ9IkFwYWNoZSBPcGVuTWVldGluZ3MiIGJvcmRlcj0iMCIvPjwvYT4KKzwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODAlIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIiA+CisJPGEgaHJlZj0iZGVtby5odG1sIj5EZW1vPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9ImRvd25sb2Fkcy5odG1sIiB0YXJnZXQ9Il9QQVJFTlQiPkRvd25sb2FkPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imluc3RhbGxhdGlvbi5odG1sIiB0YXJnZXQ9Il9QQVJFTlQiPkluc3RhbGxhdGlvbjwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUyIgdGFyZ2V0PSJfQkxBTksiPldpa2k8L2E+CisJPHNwYW4+Jm5ic3A7PC9zcGFuPgorPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iNCI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGhyIG5vc2hhZGU9Im5vc2hhZGUiIHNpemU9IjEiLz4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDwhLS0gTEVGVCBTSURFIE5BVklHQVRJT04gLS0+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCIgbm93cmFwPSJub3dyYXAiPgorCisgICAgICAgICAgICAgICAgICAgIDwhLS0gc3BlY2lhbCBBQ29uIExvZ28gLSBsZWF2ZSBoZXJlIGZvciBuZXh0IHRpbWUKKyAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL2FwYWNoZWNvbi5jb20vMjAwNS9VUy8iPgorICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHA6Ly9hcGFjaGUub3JnL2ltYWdlcy9hYzIwMDV1c19ibHVlXzEyNXgxMjUuanBnIiBoZWlnaHQ9IjEyNSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjEyNSIgYm9yZGVyPSIwIiBhbHQ9IkFwYWNoZUNvbiBVUyAyMDA1IiAvPgorICAgICAgICAgICAgICAgICAgICA8L2E+ICAtLT4KKworICAgICAgICAgICAgICAgICAgIDwhLS0gcmVndWxhciBtZW51IC0tPgorCisgICAgICAgICAgICAgICAgICAgIAorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDxkaXYgaWQ9ImFjY29yZGlvbiIgc3R5bGU9IndpZHRoOiAxMDAlIj4KKyAgICAKKyAgICAgICAgICAgIAk8aDM+PGEgaHJlZj0iI0dlbmVyYWwiPkdlbmVyYWw8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luZGV4Lmh0bWwiPkhvbWU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2xpY2Vuc2UuaHRtbCI+TGljZW5zZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iPkFTRjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZG93bmxvYWRzLmh0bWwiPkRvd25sb2FkczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiPkNvbW1lcmNpYWwgU3VwcG9ydDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI+SW5zdGFsbGF0aW9uIGFuZCBVcGdyYWRlPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9pbnN0YWxsYXRpb24uaHRtbCI+SW5zdGFsbGF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9VcGdyYWRlLmh0bWwiPlVwZ3JhZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiPlR1dG9yaWFsczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQ29tbWFuZExpbmVBZG1pbi5odG1sIj5Db21tYW5kIExpbmUgQWRtaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0NvbW11bml0eSI+Q29tbXVuaXR5PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9nZXQtaW52b2x2ZWQuaHRtbCI+R2V0IEludm9sdmVkPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi90ZWFtLWxpc3QuaHRtbCI+Q29tbWl0dGVyczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbWFpbC1saXN0cy5odG1sIj5NYWlsaW5nIExpc3RzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iPldpa2k8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0RldmVsb3BtZW50Ij5EZXZlbG9wbWVudDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vc3ZuLmh0bWwiPlNvdXJjZSBDb2RlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyI+QnVncyAvIElzc3VlcyAoSklSQSk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2RlcGVuZGVuY2llcy5odG1sIj5EZXBlbmRlbmNpZXM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiPkJ1aWxkIEluc3RydWN0aW9uczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSlVuaXRUZXN0aW5nLmh0bWwiPkpVbml0IFRlc3Rpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01hbnVhbFRlc3RpbmcuaHRtbCI+TWFudWFsIFRlc3Rpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1JlbGVhc2VHdWlkZS5odG1sIj5SZWxlYXNlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9XZWJzaXRlR3VpZGUuaHRtbCI+V2Vic2l0ZSBHdWlkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjSW50ZWdyYXRpb24iPkludGVncmF0aW9uPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Tb2FwUmVzdEFQSS5odG1sIj5TT0FQL1JFU1QgQVBJPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZXN0QVBJU2FtcGxlLmh0bWwiPlJFU1QgQVBJIFNhbXBsZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTGRhcEFuZEFEUy5odG1sIj5MZGFwIGFuZCBBRFM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiPlZvSVAgYW5kIFNJUDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vRXJyb3JzVGFibGUuaHRtbCI+RXJyb3JzIHRhYmxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNQbHVnaW5zIj5QbHVnaW5zPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Nb29kbGVQbHVnaW4uaHRtbCI+TW9vZGxlIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU2FrYWlQbHVnaW4uaHRtbCI+U2FrYWkgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KaXJhUGx1Z2luLmh0bWwiPkppcmEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Kb29tbGFQbHVnaW4uaHRtbCI+Sm9vbWxhIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vRHJ1cGFsUGx1Z2luLmh0bWwiPkRydXBhbCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0JpdHJpeFBsdWdpbi5odG1sIj5CaXRyaXggUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiPkNvbmZsdWVuY2UgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TdWdhckNSTVBsdWdpbi5odG1sIj5TdWdhckNSTSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1JlZG1pbmVQbHVnaW4uaHRtbCI+UmVkbWluZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0NvbmZpZ3VyYXRpb24iPkNvbmZpZ3VyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkRCIFNhbXBsZSBDb25maWd1cmF0aW9uczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiPkFwYWNoZSBEZXJieTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSUJNREIyQ29uZmlnLmh0bWwiPklCTSBEQjI8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL09yYWNsZUNvbmZpZy5odG1sIj5PcmFjbGU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL015U1FMQ29uZmlnLmh0bWwiPk15U1FMPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIj5Qb3N0Z3JlczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TG9jYWxpemF0aW9uIGFuZCBsYW5ndWFnZXM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIj5JbnRlcm5hdGlvbmFsaXNhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTGFuZ3VhZ2VFZGl0b3IuaHRtbCI+TGFuZ3VhZ2VFZGl0b3I8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1RpbWVab25lSGFuZGxpbmcuaHRtbCI+VGltZVpvbmVIYW5kbGluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRWRpdFRlbXBsYXRlcy5odG1sIj5FZGl0VGVtcGxhdGVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5OQVQgUG9ydCBTZXR0aW5nczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1BvcnRTZXR0aW5ncy5odG1sIj5Qb3J0IHNldHRpbmdzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5QZXJmb3JtYW5jZTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiPkpWTSBwZXJmb3JtYW5jZSB0dW5pbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlVzZXIgSW50ZXJmYWNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIj5UaGVtZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0Rhc2hib2FyZC5odG1sIj5EYXNoYm9hcmQ8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiPldlYmNhbSByZXNvbHV0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiPlJvb20gbGF5b3V0IG9wdGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0hvdEtleXMuaHRtbCI+SG90IEtleXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkN1c3RvbWl6YXRpb248L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9XZWJhcHBOYW1lUGF0aC5odG1sIj5XZWJhcHAgbmFtZS9wYXRoPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9OYXZpZ2F0aW9uLmh0bWwiPk5hdmlnYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCI+Q2FsZW5kYXIgYW5kIHRpbWV6b25lPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiPkN1c3RvbSByb29tIHR5cGU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiPkN1c3RvbSBjdHlwdCBtZWNoYW5pc208L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiPkdlbmVyYWwgQ29uZmlndXJhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+U2VjdXJpdHk8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiPlJlc3RyaWN0ZWQgQWNjZXNzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9SVE1QU0FuZEhUVFBTLmh0bWwiPlJUTVBTIGFuZCBIVFRQUzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q29udmVydGVyczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCI+T3Blbk9mZmljZSBDb252ZXJ0ZXI8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCI+RkZNUEVHIFZlcnNpb24gU3dpdGNoPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5DbHVzdGVyaW5nPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2x1c3RlcmluZy5odG1sIj5DbHVzdGVyaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5NaXNjPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2V0VmVyc2lvbkluZm8uaHRtbCI+R2V0IHZlcnNpb24gaW5mbzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCisgICAgPC9kaXY+CisgICAgIAorICAgIDxici8+CisgICAgCisgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODAlIiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkID48IS0tIGJnY29sb3I9IiNFRUVFRUUiIC0tPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0idmVyZGFuYSxhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IkFwYWNoZSBPcGVuTWVldGluZ3MgTWFpbGluZyBMaXN0cyI+PHN0cm9uZz5BcGFjaGUgT3Blbk1lZXRpbmdzIE1haWxpbmcgTGlzdHM8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQlUaGVyZSBhcmUgY3VycmVudGx5IDQgcHVibGljbHkgYXZhaWxhYmxlIG1haWxpbmcgbGlzdHMgZm9yIE9wZW5NZWV0aW5ncy4NCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJVGhlIGNvbW1pdHMgbGlzdCBpcyBmb3Igbm90aWZpY2F0aW9uIG9mIGNvbW1pdHMgdG8gdGhlIE9wZW5NZWV0aW5ncw0KKwkJCQlyZXBvc2l0b3J5Lg0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQlUaGUgZGV2IGxpc3QgaXMgZm9yIGludGVybmFsIGRpc2N1c3Npb24gYW1vbmcgdGhlIE9wZW5NZWV0aW5ncw0KKwkJCQlkZXZlbG9wZXJzLiBJdCBpcw0KKwkJCQlvcGVuIHRvIHRoZSBwdWJsaWMgaWYgeW91IGFyZSBpbnRlcmVzdGVkIGluIHNlZWluZyBob3cgdGhlIHNhdXNhZ2UgaXMNCisJCQkJbWFkZS4NCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJPGI+Tm90ZTogPC9iPklmIHlvdXIgZW1haWwgYm91bmNlcyB3aXRoIHN0YXR1cyBtZXNzYWdlcyBsaWtlICJEZWxpdmVyeSBTdGF0dXMgTm90aWZpY2F0aW9uIiBpdCBpcyANCisJCQkJbGlrZWx5IHRoYXQgeW91IGhhdmUgc2VuZCB5b3VyIG1haWwgYXMgSFRNTCBtYWlsLiBBcGFjaGUgZG9lcyBub3QgbGlrZSBzZW5kaW5nIEhUTUwgZW1haWxzLCBzZWU6DQorCQkJCTxiciAvPiANCisJCQkJPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2Rldi9jb250cmliLWVtYWlsLXRpcHMuaHRtbCNkby1ub3Qtc2VuZC1odG1sLW1haWwiIHRhcmdldD0iX0JMQU5LIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vd3d3LmFwYWNoZS5vcmcvZGV2L2NvbnRyaWItZW1haWwtdGlwcy5odG1sI2RvLW5vdC1zZW5kLWh0bWwtbWFpbDwvYT4NCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJWW91IGNhbiBzZWFyY2ggdGhlIGVudGlyZSBtYWlsaW5nIGxpc3QgdmVyeSBlYXN5IGJ5IHVzaW5nIG1hcmttYWlsLmNvbSwgYnkgdXNpbmcgdGhlIHRlcm0gDQorCQkJCSJvcGVubWVldGluZ3MiIHBsdXMgeW91ciBzZWFyY2guIFRyeSB5b3Vyc2VsZjogPGJyIC8+DQorCQkJCTxhIGhyZWY9Imh0dHA6Ly9tYXJrbWFpbC5vcmcvc2VhcmNoLz9xPW9wZW5tZWV0aW5ncyIgdGFyZ2V0PSJfQkxBTksiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9tYXJrbWFpbC5vcmcvc2VhcmNoLz9xPW9wZW5tZWV0aW5nczwvYT4NCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIA0KKwkJCQkJCTxwPg0KKwkJCQkJCQk8c3Ryb25nPlVzZXIgTGlzdDwvc3Ryb25nPg0KKwkJCQkJCQk6DQorCQkJCQkJCTxhIGhyZWY9Im1haWx0bzp1c2VyQG9wZW5tZWV0aW5ncy5hcGFjaGUub3JnIj4NCisJCQkJCQkJCXVzZXJAb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcNCisJCQkJCQkJPC9hPg0KKwkJCQkJCTwvcD4NCisJCQkJCQorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgDQorCQkJCQkJPHA+DQorCQkJCQkJCTxhIGNsYXNzPSJleHRlcm5hbCIgcmVsPSJub2ZvbGxvdyIgaHJlZj0ibWFpbHRvOnVzZXItc3Vic2NyaWJlQG9wZW5tZWV0aW5ncy5hcGFjaGUub3JnIj4NCisJCQkJCQkJCVN1YnNjcmliZQ0KKwkJCQkJCQk8L2E+DQorCQkJCQkJPC9wPg0KKwkJCQkJCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICANCisJCQkJCQk8cD4NCisJCQkJCQkJPGEgY2xhc3M9ImV4dGVybmFsIiByZWw9Im5vZm9sbG93IiBocmVmPSJtYWlsdG86dXNlci11bnN1YnNjcmliZUBvcGVubWVldGluZ3MuYXBhY2hlLm9yZyI+DQorCQkJCQkJCQlVbnN1YnNjcmliZQ0KKwkJCQkJCQk8L2E+DQorCQkJCQkJPC9wPg0KKwkJCQkJCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICANCisJCQkJCQk8cD4NCisJCQkJCQkJPGEgaHJlZj0iaHR0cDovL21haWwtYXJjaGl2ZXMuYXBhY2hlLm9yZy9tb2RfbWJveC9vcGVubWVldGluZ3MtdXNlci8iPg0KKwkJCQkJCQkJQXJjaGl2ZQ0KKwkJCQkJCQk8L2E+DQorCQkJCQkJPC9wPg0KKwkJCQkJCisgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgDQorCQkJCQkJPHA+DQorCQkJCQkJCTxzdHJvbmc+U3BhbmlzaCBVc2VyIExpc3Q8L3N0cm9uZz4NCisJCQkJCQkJOg0KKwkJCQkJCQk8YSBocmVmPSJtYWlsdG86dXNlci1lc3Bhbm9sQG9wZW5tZWV0aW5ncy5hcGFjaGUub3JnIj4NCisJCQkJCQkJCXVzZXItZXNwYW5vbEBvcGVubWVldGluZ3MuYXBhY2hlLm9yZw0KKwkJCQkJCQk8L2E+DQorCQkJCQkJPC9wPg0KKwkJCQkJCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICANCisJCQkJCQk8cD4NCisJCQkJCQkJPGEgY2xhc3M9ImV4dGVybmFsIiByZWw9Im5vZm9sbG93IiBocmVmPSJtYWlsdG86dXNlci1lc3Bhbm9sLXN1YnNjcmliZUBvcGVubWVldGluZ3MuYXBhY2hlLm9yZyI+DQorCQkJCQkJCQlTdWJzY3JpYmUNCisJCQkJCQkJPC9hPg0KKwkJCQkJCTwvcD4NCisJCQkJCQorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgDQorCQkJCQkJPHA+DQorCQkJCQkJCTxhIGNsYXNzPSJleHRlcm5hbCIgcmVsPSJub2ZvbGxvdyIgaHJlZj0ibWFpbHRvOnVzZXItZXNwYW5vbC11bnN1YnNjcmliZUBvcGVubWVldGluZ3MuYXBhY2hlLm9yZyI+DQorCQkJCQkJCQlVbnN1YnNjcmliZQ0KKwkJCQkJCQk8L2E+DQorCQkJCQkJPC9wPg0KKwkJCQkJCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICANCisJCQkJCQk8cD4NCisJCQkJCQkJPGEgaHJlZj0iaHR0cDovL21haWwtYXJjaGl2ZXMuYXBhY2hlLm9yZy9tb2RfbWJveC9vcGVubWVldGluZ3MtdXNlci1lc3Bhbm9sLyI+DQorCQkJCQkJCQlBcmNoaXZlDQorCQkJCQkJCTwvYT4NCisJCQkJCQk8L3A+DQorCQkJCQkKKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICANCisJCQkJCQk8cD4NCisJCQkJCQkJPHN0cm9uZz5Db21taXRzIExpc3Q8L3N0cm9uZz4NCisJCQkJCQkJOg0KKwkJCQkJCQk8YSBocmVmPSJtYWlsdG86Y29tbWl0c0BvcGVubWVldGluZ3MuYXBhY2hlLm9yZyI+DQorCQkJCQkJCQljb21taXRzQG9wZW5tZWV0aW5ncy5hcGFjaGUub3JnDQorCQkJCQkJCTwvYT4NCisJCQkJCQk8L3A+DQorCQkJCQkKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIA0KKwkJCQkJCTxwPg0KKwkJCQkJCQk8YSBjbGFzcz0iZXh0ZXJuYWwiIHJlbD0ibm9mb2xsb3ciIGhyZWY9Im1haWx0bzpjb21taXRzLXN1YnNjcmliZUBvcGVubWVldGluZ3MuYXBhY2hlLm9yZyI+DQorCQkJCQkJCQlTdWJzY3JpYmUNCisJCQkJCQkJPC9hPg0KKwkJCQkJCTwvcD4NCisJCQkJCQorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgDQorCQkJCQkJPHA+DQorCQkJCQkJCTxhIGNsYXNzPSJleHRlcm5hbCIgcmVsPSJub2ZvbGxvdyIgaHJlZj0ibWFpbHRvOmNvbW1pdHMtdW5zdWJzY3JpYmVAb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmciPg0KKwkJCQkJCQkJVW5zdWJzY3JpYmUNCisJCQkJCQkJPC9hPg0KKwkJCQkJCTwvcD4NCisJCQkJCQorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgDQorCQkJCQkJPHA+DQorCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9tYWlsLWFyY2hpdmVzLmFwYWNoZS5vcmcvbW9kX21ib3gvb3Blbm1lZXRpbmdzLWNvbW1pdHMvIj4NCisJCQkJCQkJCUFyY2hpdmUNCisJCQkJCQkJPC9hPg0KKwkJCQkJCTwvcD4NCisJCQkJCQorICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIA0KKwkJCQkJCTxwPg0KKwkJCQkJCQk8c3Ryb25nPkRldmVsb3BlciBMaXN0PC9zdHJvbmc+DQorCQkJCQkJCToNCisJCQkJCQkJPGEgaHJlZj0ibWFpbHRvOmRldkBvcGVubWVldGluZ3MuYXBhY2hlLm9yZyI+DQorCQkJCQkJCQlkZXZAb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcNCisJCQkJCQkJPC9hPg0KKwkJCQkJCTwvcD4NCisJCQkJCQorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgDQorCQkJCQkJPHA+DQorCQkJCQkJCTxhIGNsYXNzPSJleHRlcm5hbCIgcmVsPSJub2ZvbGxvdyIgaHJlZj0ibWFpbHRvOmRldi1zdWJzY3JpYmVAb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmciPg0KKwkJCQkJCQkJU3Vic2NyaWJlDQorCQkJCQkJCTwvYT4NCisJCQkJCQk8L3A+DQorCQkJCQkKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIA0KKwkJCQkJCTxwPg0KKwkJCQkJCQk8YSBjbGFzcz0iZXh0ZXJuYWwiIHJlbD0ibm9mb2xsb3ciIGhyZWY9Im1haWx0bzpkZXYtdW5zdWJzY3JpYmVAb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmciPg0KKwkJCQkJCQkJVW5zdWJzY3JpYmUNCisJCQkJCQkJPC9hPg0KKwkJCQkJCTwvcD4NCisJCQkJCQorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgDQorCQkJCQkJPHA+DQorCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9tYWlsLWFyY2hpdmVzLmFwYWNoZS5vcmcvbW9kX21ib3gvb3Blbm1lZXRpbmdzLWRldiI+DQorCQkJCQkJCQlBcmNoaXZlDQorCQkJCQkJCTwvYT4NCisJCQkJCQk8L3A+DQorCQkJCQkKKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDwhLS0gRk9PVEVSIC0tPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgYWxpZ249ImNlbnRlciI+PGZvbnQgY29sb3I9IiMxMjM0NjUiIHNpemU9Ii0xIj48ZW0+CisgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAmIzE2OTsgMjAwMy0yMDEzLCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyAgICAgICAgICAgICAgICAgICAgPC9lbT48L2ZvbnQ+PC9kaXY+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvYm9keT4KKyAgICA8L2h0bWw+Cis8IS0tIGVuZCB0aGUgcHJvY2Vzc2luZyAtLT4KKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKwpkaWZmIC0tZ2l0IGEvZG9jcy9vcGVubWVldGluZ3NfZG9jcy5jc3MgYi9kb2NzL29wZW5tZWV0aW5nc19kb2NzLmNzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTA5NTI0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9vcGVubWVldGluZ3NfZG9jcy5jc3MKQEAgLTAsMCArMSw0NSBAQAorLyoNCisqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUgb3IgbW9yZQ0KKyogY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZSBkaXN0cmlidXRlZCB3aXRoDQorKiB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuDQorKiBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZSB0byBZb3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMA0KKyogKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgNCisqIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorKg0KKyogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyoNCisqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyovDQorYm9keSB7DQorICAgIGZvbnQ6IDEwcHQgVmVyZGFuYSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsNCit9DQordGFibGUgew0KKwltYXJnaW4tbGVmdDogMjBweDsNCisJYm9yZGVyLWNvbG9yOiAjMDAwMDAwOw0KK30NCit0aCB7DQorICAgIGJhY2tncm91bmQtY29sb3I6ICNkZGRkZGQ7DQorfQ0KKy5tZXRob2Qgew0KKwltYXJnaW4tdG9wOiAyMHB4Ow0KKwl3aWR0aDogMTAwJTsNCit9DQorLm1ldGhvZF9oZWFkZXIgew0KKwliYWNrZ3JvdW5kLWNvbG9yOiAjY2NjY2NjOw0KKwl3aWR0aDogMTAwJTsNCisJYm9yZGVyLXN0eWxlOiBzb2xpZDsNCisJYm9yZGVyLWNvbG9yOiAjNjY2NjY2Ow0KKwlib3JkZXItd2lkdGg6IDJweDsNCisJZm9udC1zaXplOiAxMXB0Ow0KKwljb2xvcjogIzAwMDBGRjsNCit9DQorLm5hdmlnYXRpb24gew0KKwltYXJnaW4tbGVmdDogNDBweDsNCit9DQorLm5hdmlnYXRpb25fY29tbWVudCB7DQorCW1hcmdpbi1sZWZ0OiAyMHB4Ow0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL3JlZDVzaXAtaW50ZWdyYXRpb25fMi4wLmh0bWwgYi9kb2NzL3JlZDVzaXAtaW50ZWdyYXRpb25fMi4wLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjkzZTE5YwotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvcmVkNXNpcC1pbnRlZ3JhdGlvbl8yLjAuaHRtbApAQCAtMCwwICsxLDg3NyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CisKKzwhLS0KK0NvcHlyaWdodCAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK3lvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCitodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworCis8IS0tIENvbnRlbnQgU3R5bGVzaGVldCBmb3IgU2l0ZSAtLT4KKworICAgICAgICAKKzwhLS0gc3RhcnQgdGhlIHByb2Nlc3NpbmcgLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDwhLS0gR0VORVJBVEVEIEZJTEUsIERPIE5PVCBFRElULCBFRElUIFRIRSBYTUwgRklMRSBJTiB4ZG9jcyBJTlNURUFEISAtLT4KKyAgICA8IS0tIE1haW4gUGFnZSBTZWN0aW9uIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8aHRtbD4KKyAgICAgICAgPGhlYWQ+CisgICAgICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIvPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSIKKwkJCU9wZW5NZWV0aW5ncyBUZWFtCisJCSI+CisgICAgICAgICAgICA8bWV0YSBuYW1lPSJlbWFpbCIgY29udGVudD0idGltdXJAYXBhY2hlLm9yZyI+CisgICAgICAgICAgICAKKyAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgPHRpdGxlPkFwYWNoZSBPcGVuTWVldGluZ3MgLSBTSVAtVHJhbnNwb3J0IEludGVncmF0aW9uPC90aXRsZT4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9vcGVubWVldGluZ3MuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9qcXVlcnktdWkuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2luLXNsaWRlci1zdHlsZXMuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2xvcmJveC5jc3MiIC8+CisgICAgICAgICAgICAKKwkJCTwhLS0gQWRkIGpRdWVyeSBsaWJyYXJ5IC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LTEuNy4xLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPCEtLSBBZGQgY29pbnNsaWRlciBwbHVnaW5zIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvY29pbi1zbGlkZXIubWluLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPCEtLSBBZGQgY29sb3Jib3ggcGx1Z2luIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LmNvbG9yYm94LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmNvcmUuanMiPjwvc2NyaXB0PgorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS53aWRnZXQuanMiPjwvc2NyaXB0PgorCQkKKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkuYWNjb3JkaW9uLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdD4KKwkJCSQoZnVuY3Rpb24oKSB7CisJCQkJJCggIiNhY2NvcmRpb24iICkuYWNjb3JkaW9uKHsKKwkJCQkJYXV0b0hlaWdodDogZmFsc2UsCisJCQkJCW5hdmlnYXRpb246IHRydWUsCisJCQkJCW5hdmlnYXRpb25GaWx0ZXI6IGZ1bmN0aW9uICgpIHsKKwkJCQkJCXZhciBzaWRlYmFySHJlZkFycmF5ID0gdGhpcy5ocmVmLnNwbGl0KCIvIik7CisgICAgCQkJCQl2YXIgc2lkZUJhckxhc3RTdHJpbmcgPSBzaWRlYmFySHJlZkFycmF5W3NpZGViYXJIcmVmQXJyYXkubGVuZ3RoIC0gMV0udG9Mb3dlckNhc2UoKTsKKwkJCQkJCQorCQkJCQkJaWYgKHNpZGVCYXJMYXN0U3RyaW5nLmluZGV4T2YoIiMiKSA9PSAtMSkgeworCQkJCQkJCXJldHVybiBmYWxzZTsKKwkJCQkJCX0KKwkJCQkJCQorCQkJCQkJCQkJCQkJLyogZG9jdW1lbnQubG9jYXRpb24uaHJlZiAqLworCQkJCQkJdmFyIGN1cnJlbnRTZWN0aW9uID0gIiI7CisJCQkJCQkKKwkJCQkJCXZhciBjdXJyZW50TG9jYXRpb24gPSAiIjsKKwkJCQkJCXZhciBjdXJyZW50TGluayA9ICIiOworCQkJCQkJaWYgKGZhbHNlKSB7CisJCQkJCQkKKwkJCQkJCX0KKyAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5kZXguaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5kZXguaHRtbCIuc3Vic3RyKDEsICIvaW5kZXguaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9saWNlbnNlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2xpY2Vuc2UuaHRtbCIuc3Vic3RyKDEsICIvbGljZW5zZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5zdWJzdHIoMSwgImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZG93bmxvYWRzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2Rvd25sb2Fkcy5odG1sIi5zdWJzdHIoMSwgIi9kb3dubG9hZHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiLnN1YnN0cigxLCAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9pbnN0YWxsYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5zdGFsbGF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL2luc3RhbGxhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1VwZ3JhZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvVXBncmFkZS5odG1sIi5zdWJzdHIoMSwgIi9VcGdyYWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIuc3Vic3RyKDEsICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db21tYW5kTGluZUFkbWluLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIuc3Vic3RyKDEsICIvQ29tbWFuZExpbmVBZG1pbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9nZXQtaW52b2x2ZWQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9nZXQtaW52b2x2ZWQuaHRtbCIuc3Vic3RyKDEsICIvZ2V0LWludm9sdmVkLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGVhbS1saXN0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdGVhbS1saXN0Lmh0bWwiLnN1YnN0cigxLCAiL3RlYW0tbGlzdC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL21haWwtbGlzdHMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9tYWlsLWxpc3RzLmh0bWwiLnN1YnN0cigxLCAiL21haWwtbGlzdHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLnN1YnN0cigxLCAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3N2bi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvc3ZuLmh0bWwiLnN1YnN0cigxLCAiL3N2bi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIuc3Vic3RyKDEsICJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2RlcGVuZGVuY2llcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZGVwZW5kZW5jaWVzLmh0bWwiLnN1YnN0cigxLCAiL2RlcGVuZGVuY2llcy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pVbml0VGVzdGluZy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSlVuaXRUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL0pVbml0VGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01hbnVhbFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01hbnVhbFRlc3RpbmcuaHRtbCIuc3Vic3RyKDEsICIvTWFudWFsVGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlbGVhc2VHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVsZWFzZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1JlbGVhc2VHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYnNpdGVHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvV2Vic2l0ZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1dlYnNpdGVHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Tb2FwUmVzdEFQSS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU29hcFJlc3RBUEkuaHRtbCIuc3Vic3RyKDEsICIvU29hcFJlc3RBUEkuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZXN0QVBJU2FtcGxlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZXN0QVBJU2FtcGxlLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RBUElTYW1wbGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MZGFwQW5kQURTLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9MZGFwQW5kQURTLmh0bWwiLnN1YnN0cigxLCAiL0xkYXBBbmRBRFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FcnJvcnNUYWJsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRXJyb3JzVGFibGUuaHRtbCIuc3Vic3RyKDEsICIvRXJyb3JzVGFibGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTW9vZGxlUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01vb2RsZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Nb29kbGVQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TYWthaVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TYWthaVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TYWthaVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ppcmFQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSmlyYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9KaXJhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSm9vbWxhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pvb21sYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Kb29tbGFQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EcnVwYWxQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRHJ1cGFsUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0RydXBhbFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0JpdHJpeFBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CaXRyaXhQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvQml0cml4UGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TdWdhckNSTVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TdWdhckNSTVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TdWdhckNSTVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlZG1pbmVQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVkbWluZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9SZWRtaW5lUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSUJNREIyQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSUJNREIyQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL0lCTURCMkNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3JhY2xlQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3JhY2xlQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL09yYWNsZUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTXlTUUxDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9NeVNRTENvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9NeVNRTENvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUG9zdGdyZXNDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MYW5ndWFnZUVkaXRvci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLnN1YnN0cigxLCAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5zdWJzdHIoMSwgIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FZGl0VGVtcGxhdGVzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRWRpdFRlbXBsYXRlcy5odG1sIi5zdWJzdHIoMSwgIi9FZGl0VGVtcGxhdGVzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1BvcnRTZXR0aW5ncy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1BvcnRTZXR0aW5ncy5odG1sIi5zdWJzdHIoMSwgIi9Qb3J0U2V0dGluZ3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5zdWJzdHIoMSwgIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5zdWJzdHIoMSwgIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EYXNoYm9hcmQuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9EYXNoYm9hcmQuaHRtbCIuc3Vic3RyKDEsICIvRGFzaGJvYXJkLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLnN1YnN0cigxLCAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Ib3RLZXlzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSG90S2V5cy5odG1sIi5zdWJzdHIoMSwgIi9Ib3RLZXlzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYmFwcE5hbWVQYXRoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvV2ViYXBwTmFtZVBhdGguaHRtbCIuc3Vic3RyKDEsICIvV2ViYXBwTmFtZVBhdGguaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL05hdmlnYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9OYXZpZ2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL05hdmlnYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLnN1YnN0cigxLCAiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIuc3Vic3RyKDEsICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIuc3Vic3RyKDEsICIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUlRNUFNBbmRIVFRQUy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1JUTVBTQW5kSFRUUFMuaHRtbCIuc3Vic3RyKDEsICIvUlRNUFNBbmRIVFRQUy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5zdWJzdHIoMSwgIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5zdWJzdHIoMSwgIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NsdXN0ZXJpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DbHVzdGVyaW5nLmh0bWwiLnN1YnN0cigxLCAiL0NsdXN0ZXJpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvR2V0VmVyc2lvbkluZm8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9HZXRWZXJzaW9uSW5mby5odG1sIi5zdWJzdHIoMSwgIi9HZXRWZXJzaW9uSW5mby5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkgICAgCQkJCQkKKyAgICAJCQkJCWN1cnJlbnRMaW5rID0gY3VycmVudExpbmsudG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCWN1cnJlbnRMb2NhdGlvbiA9IGN1cnJlbnRMb2NhdGlvbi50b0xvd2VyQ2FzZSgpOworICAgIAkJCQkJCisJCQkJCQlyZXR1cm4gc2lkZUJhckxhc3RTdHJpbmcgPT0gY3VycmVudExpbmsrIiMiK2N1cnJlbnRMb2NhdGlvbjsKKwkJCQkJfQorCQkJCX0pOworCQkJfSk7CisJCQk8L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCQkJCSQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgeworCQkJCQkkKCcuZmFuY3lib3gtYnV0dG9ucycpLmNvbG9yYm94KHtyZWw6J2ZhbmN5Ym94LWJ1dHRvbnMnLHdpZHRoOiI3NSUiLCBoZWlnaHQ6Ijc1JSJ9KTsKKwkJCQkJJCgnI2FjY29yZGlvbiBhJykuZWFjaChmdW5jdGlvbigpIHsKKwkJCQkgICAgICB2YXIgYSA9ICQodGhpcyk7CisJCQkJICAgICAgdmFyIGhyZWYgPSBhLmF0dHIoImhyZWYiKTsKKwkJCQkgICAgICBpZiAoaHJlZi5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkgICAgICAJICB2YXIgY29tcGFyZUl0ID0gaHJlZi5zdWJzdHIoMiwgaHJlZi5sZW5ndGgpOworCQkJCQkgICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKGNvbXBhcmVJdCkhPSAtMSkgeworCQkJCQkgICAgICAgYS5hZGRDbGFzcygnYWN0aXZlJyk7CisJCQkJCSAgICAgIH0KKwkJCQkgICAgICB9CisJCQkJICAgIH0pOworCQkJCQkkKCcjY29pbi1zbGlkZXInKS5jb2luc2xpZGVyKHsgd2lkdGg6IDY0MCxoZWlnaHQ6IDQwMCwgZGVsYXk6IDQwMDAgIH0pOwkJCQkJCisJCQkJfSk7CisJCQk8L3NjcmlwdD4JCisJCQkJCQkKKwkJCTxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisJCQkJLmZhbmN5Ym94LWN1c3RvbSAuZmFuY3lib3gtb3V0ZXIgeworCQkJCQlib3gtc2hhZG93OiAwIDAgNTBweCAjMjIyOworCQkJCX0KKwkJCTwvc3R5bGU+CisgICAgICAgIDwvaGVhZD4KKworICAgICAgICA8Ym9keSBiZ2NvbG9yPSIjZmZmZmZmIiB0ZXh0PSIjMDAwMDAwIiBsaW5rPSIjMTIzNDY1IiB2bGluaz0iIzEyMzQ2NSIgYWxpbms9IiMwMDAwMDAiPiAgCisgICAgICAgIAk8ZGl2IGNsYXNzPSJtYWluYm9keSIgc3R5bGU9IndpZHRoOiAxMDAlOyI+CisgICAgICAgIAk8ZGl2IGNsYXNzPSJzdXBlcmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIj4KKyAgICAgICAgICAgICAgICA8IS0tIFRPUCBJTUFHRSAtLT4KKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCI+Cis8YSBocmVmPSJodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvIj48aW1nIHNyYz0iLi9pbWFnZXMvbG9nby0yLmpwZyIgYWx0PSJBcGFjaGUgT3Blbk1lZXRpbmdzIiBib3JkZXI9IjAiLz48L2E+Cis8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCIgPgorCTxhIGhyZWY9ImRlbW8uaHRtbCI+RGVtbzwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJkb3dubG9hZHMuaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5Eb3dubG9hZDwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJpbnN0YWxsYXRpb24uaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5JbnN0YWxsYXRpb248L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MiIHRhcmdldD0iX0JMQU5LIj5XaWtpPC9hPgorCTxzcGFuPiZuYnNwOzwvc3Bhbj4KKzwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjQiPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8IS0tIExFRlQgU0lERSBOQVZJR0FUSU9OIC0tPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiIG5vd3JhcD0ibm93cmFwIj4KKworICAgICAgICAgICAgICAgICAgICA8IS0tIHNwZWNpYWwgQUNvbiBMb2dvIC0gbGVhdmUgaGVyZSBmb3IgbmV4dCB0aW1lCisgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9hcGFjaGVjb24uY29tLzIwMDUvVVMvIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vYXBhY2hlLm9yZy9pbWFnZXMvYWMyMDA1dXNfYmx1ZV8xMjV4MTI1LmpwZyIgaGVpZ2h0PSIxMjUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPSIxMjUiIGJvcmRlcj0iMCIgYWx0PSJBcGFjaGVDb24gVVMgMjAwNSIgLz4KKyAgICAgICAgICAgICAgICAgICAgPC9hPiAgLS0+CisKKyAgICAgICAgICAgICAgICAgICA8IS0tIHJlZ3VsYXIgbWVudSAtLT4KKworICAgICAgICAgICAgICAgICAgICAKKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8ZGl2IGlkPSJhY2NvcmRpb24iIHN0eWxlPSJ3aWR0aDogMTAwJSI+CisgICAgCisgICAgICAgICAgICAJPGgzPjxhIGhyZWY9IiNHZW5lcmFsIj5HZW5lcmFsPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9pbmRleC5odG1sIj5Ib21lPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9saWNlbnNlLmh0bWwiPkxpY2Vuc2U8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5BU0Y8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2Rvd25sb2Fkcy5odG1sIj5Eb3dubG9hZHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIj5Db21tZXJjaWFsIFN1cHBvcnQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0luc3RhbGxhdGlvbmFuZFVwZ3JhZGUiPkluc3RhbGxhdGlvbiBhbmQgVXBncmFkZTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5zdGFsbGF0aW9uLmh0bWwiPkluc3RhbGxhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vVXBncmFkZS5odG1sIj5VcGdyYWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLmh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIj5UdXRvcmlhbHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCI+Q29tbWFuZCBMaW5lIEFkbWluPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb21tdW5pdHkiPkNvbW11bml0eTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZ2V0LWludm9sdmVkLmh0bWwiPkdldCBJbnZvbHZlZDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdGVhbS1saXN0Lmh0bWwiPkNvbW1pdHRlcnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL21haWwtbGlzdHMuaHRtbCI+TWFpbGluZyBMaXN0czwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIj5XaWtpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNEZXZlbG9wbWVudCI+RGV2ZWxvcG1lbnQ8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3N2bi5odG1sIj5Tb3VyY2UgQ29kZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiPkJ1Z3MgLyBJc3N1ZXMgKEpJUkEpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kZXBlbmRlbmNpZXMuaHRtbCI+RGVwZW5kZW5jaWVzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CdWlsZEluc3RydWN0aW9ucy5odG1sIj5CdWlsZCBJbnN0cnVjdGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pVbml0VGVzdGluZy5odG1sIj5KVW5pdCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9NYW51YWxUZXN0aW5nLmh0bWwiPk1hbnVhbCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWxlYXNlR3VpZGUuaHRtbCI+UmVsZWFzZSBHdWlkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vV2Vic2l0ZUd1aWRlLmh0bWwiPldlYnNpdGUgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0ludGVncmF0aW9uIj5JbnRlZ3JhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU29hcFJlc3RBUEkuaHRtbCI+U09BUC9SRVNUIEFQSTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVzdEFQSVNhbXBsZS5odG1sIj5SRVNUIEFQSSBTYW1wbGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0xkYXBBbmRBRFMuaHRtbCI+TGRhcCBhbmQgQURTPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIj5Wb0lQIGFuZCBTSVA8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0Vycm9yc1RhYmxlLmh0bWwiPkVycm9ycyB0YWJsZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjUGx1Z2lucyI+UGx1Z2luczwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTW9vZGxlUGx1Z2luLmh0bWwiPk1vb2RsZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Nha2FpUGx1Z2luLmh0bWwiPlNha2FpIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSmlyYVBsdWdpbi5odG1sIj5KaXJhIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSm9vbWxhUGx1Z2luLmh0bWwiPkpvb21sYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0RydXBhbFBsdWdpbi5odG1sIj5EcnVwYWwgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CaXRyaXhQbHVnaW4uaHRtbCI+Qml0cml4IFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQ29uZmx1ZW5jZVBsdWdpbi5odG1sIj5Db25mbHVlbmNlIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU3VnYXJDUk1QbHVnaW4uaHRtbCI+U3VnYXJDUk0gUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWRtaW5lUGx1Z2luLmh0bWwiPlJlZG1pbmUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb25maWd1cmF0aW9uIj5Db25maWd1cmF0aW9uPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5EQiBTYW1wbGUgQ29uZmlndXJhdGlvbnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIj5BcGFjaGUgRGVyYnk8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0lCTURCMkNvbmZpZy5odG1sIj5JQk0gREIyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcmFjbGVDb25maWcuaHRtbCI+T3JhY2xlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9NeVNRTENvbmZpZy5odG1sIj5NeVNRTDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9zdGdyZXNDb25maWcuaHRtbCI+UG9zdGdyZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkxvY2FsaXphdGlvbiBhbmQgbGFuZ3VhZ2VzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCI+SW50ZXJuYXRpb25hbGlzYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0xhbmd1YWdlRWRpdG9yLmh0bWwiPkxhbmd1YWdlRWRpdG9yPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiPlRpbWVab25lSGFuZGxpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0VkaXRUZW1wbGF0ZXMuaHRtbCI+RWRpdFRlbXBsYXRlczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TkFUIFBvcnQgU2V0dGluZ3M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Qb3J0U2V0dGluZ3MuaHRtbCI+UG9ydCBzZXR0aW5nczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+UGVyZm9ybWFuY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIj5KVk0gcGVyZm9ybWFuY2UgdHVuaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Vc2VyIEludGVyZmFjZTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCI+VGhlbWVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9EYXNoYm9hcmQuaHRtbCI+RGFzaGJvYXJkPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIj5XZWJjYW0gcmVzb2x1dGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIj5Sb29tIGxheW91dCBvcHRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Ib3RLZXlzLmh0bWwiPkhvdCBLZXlzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5DdXN0b21pemF0aW9uPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViYXBwTmFtZVBhdGguaHRtbCI+V2ViYXBwIG5hbWUvcGF0aDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTmF2aWdhdGlvbi5odG1sIj5OYXZpZ2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiPkNhbGVuZGFyIGFuZCB0aW1lem9uZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIj5DdXN0b20gcm9vbSB0eXBlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIj5DdXN0b20gY3R5cHQgbWVjaGFuaXNtPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIj5HZW5lcmFsIENvbmZpZ3VyYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlNlY3VyaXR5PC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUmVzdHJpY3RlZEFjY2Vzcy5odG1sIj5SZXN0cmljdGVkIEFjY2VzczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUlRNUFNBbmRIVFRQUy5odG1sIj5SVE1QUyBhbmQgSFRUUFM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNvbnZlcnRlcnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiPk9wZW5PZmZpY2UgQ29udmVydGVyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiPkZGTVBFRyBWZXJzaW9uIFN3aXRjaDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q2x1c3RlcmluZzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NsdXN0ZXJpbmcuaHRtbCI+Q2x1c3RlcmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TWlzYzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0dldFZlcnNpb25JbmZvLmh0bWwiPkdldCB2ZXJzaW9uIGluZm88L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAorICAgIDwvZGl2PgorICAgICAKKyAgICA8YnIvPgorICAgIAorICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJTSVAtVHJhbnNwb3J0IEludGVncmF0aW9uIj48c3Ryb25nPlNJUC1UcmFuc3BvcnQgSW50ZWdyYXRpb248L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQlZb3UgbmVlZCBtaW5pbXVtIHZlcnNpb24gMi4wIG9mIEFwYWNoZSBPcGVuTWVldGluZ3MgdG8gYXBwbHkgdGhpcyBndWlkZSENCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJSGVyZSBpcyBpbnN0cnVjdGlvbiBob3ctdG8gc2V0IHVwIHJlZDVzaXAgdHJhbnNwb3J0IGludGVncmF0aW9uIHdpdGggT3Blbk1lZXRpbmdzIG9uIFVidW50dSAxMC4wNC4NCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJTZXR1cCBBc3RlcmlzayI+PHN0cm9uZz5TZXR1cCBBc3Rlcmlzazwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgICA8aHIgc3R5bGU9IndpZHRoOjEwMCU7IGNvbG9yOiM5OTk5OTk7IGJhY2tncm91bmQtY29sb3I6Izk5OTk5OTsgaGVpZ2h0OjFweDsgYm9yZGVyOjBweDsiLz4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICAgICAgUnVuIHRoZSBjb21tYW5kcw0KKyAgICAgICAgICAgICAgICA8YmxvY2txdW90ZT4NCisgICAgICAgICAgICAgICAgICAgIDxpPg0KKyAgICAgICAgICAgICAgICAgICAgc3VkbyBhcHQtZ2V0IHVwZGF0ZTxiciAvPg0KKyAgICAgICAgICAgICAgICAgICAgc3VkbyBhcHQtZ2V0IGluc3RhbGwgYXN0ZXJpc2sgYXN0ZXJpc2stbXlzcWwNCisgICAgICAgICAgICAgICAgICAgIDwvaT4NCisgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPg0KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICAgICAgVWJ1bnR1IDEwLjA0IGhhcyBicm9rZW4gYXN0ZXJpc2stbXlzcWwgdmVyc2lvbi4gRm9yIG90aGVyIGRpc3RyaWJ1dGlvbiBuZXh0IGNvbW1hbmRzIG5vdCBuZWVkZWQ6DQorICAgICAgICAgICAgICAgIDxibG9ja3F1b3RlPg0KKyAgICAgICAgICAgICAgICAgICAgPGk+DQorICAgICAgICAgICAgICAgICAgICAgICAgYXB0aXR1ZGUgcHVyZ2UgYXN0ZXJpc2stbXlzcWwNCisgICAgICAgICAgICAgICAgICAgICAgICA8YnIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICBjZCAvdG1wDQorICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgYXB0LWdldCBidWlsZC1kZXAgYXN0ZXJpc2stbXlzcWwNCisgICAgICAgICAgICAgICAgICAgICAgICA8YnIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICBhcHQtZ2V0IC1iIHNvdXJjZSBhc3Rlcmlzay1teXNxbA0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGRwa2cgLWkgYXN0ZXJpc2stbXlzcWxfMS42LjIuMC0xX2kzODYuZGViDQorICAgICAgICAgICAgICAgICAgICA8L2k+DQorDQorICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4NCisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorICAgICAgICAgICAgICAgIEVuYWJsZSBhc3RlcmlzayBteXNxbCByZWFsdGltZSBtb2R1bGU6PGJyIC8+PGJyIC8+DQorICAgICAgICAgICAgICAgIEFkZCBzdHJpbmcNCisgICAgICAgICAgICAgICAgPGJsb2NrcXVvdGU+DQorICAgICAgICAgICAgICAgICAgICA8aT5sb2FkID0mZ3Q7IHJlc19jb25maWdfbXlzcWwuc288L2k+DQorICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4NCisgICAgICAgICAgICAgICAgdG8gdGhlIC9ldGMvYXN0ZXJpc2svbW9kdWxlcy5jb25mIGludG8gdGhlICJtb2R1bGVzIiBzZWN0aW9uLg0KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICAgICAgQ29uZmlndXJlIG15c3FsIHJlYWx0aW1lIG1vZHVsZTo8YnIgLz48YnIgLz4NCisNCisgICAgICAgICAgICAgICAgQ3JlYXRlIGZpbGUgL2V0Yy9hc3Rlcmlzay9yZXNfbXlzcWwuY29uZiBhbmQgYWRkIGxpbmVzOg0KKyAgICAgICAgICAgICAgICA8YmxvY2txdW90ZT4NCisgICAgICAgICAgICAgICAgICAgIDxpPltnZW5lcmFsXQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGRiaG9zdD0xMjcuMC4wLjENCisgICAgICAgICAgICAgICAgICAgICAgICA8YnIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICBkYm5hbWU9b3Blbm1lZXRpbmdzDQorICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgZGJ1c2VyPXJvb3QNCisgICAgICAgICAgICAgICAgICAgICAgICA8YnIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICBkYnBhc3M9DQorICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgZGJwb3J0PTMzMDYNCisgICAgICAgICAgICAgICAgICAgIDwvaT4NCisNCisgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPg0KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICAgICAgQWRkIG5leHQgbGluZXMgaW50byB0aGUgL2V0Yy9hc3Rlcmlzay9leHRjb25maWcuY29uZjoNCisgICAgICAgICAgICAgICAgPGJsb2NrcXVvdGU+DQorICAgICAgICAgICAgICAgICAgICA8aT5bc2V0dGluZ3NdDQorICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgc2lwdXNlcnMgPSZndDsgbXlzcWwsZ2VuZXJhbCxzaXB1c2Vycw0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNpcHBlZXJzID0mZ3Q7IG15c3FsLGdlbmVyYWwsc2lwdXNlcnMNCisgICAgICAgICAgICAgICAgICAgICAgICA8YnIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25zID0mZ3Q7IG15c3FsLGdlbmVyYWwsZXh0ZW5zaW9ucw0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIG1lZXRtZSA9Jmd0OyBteXNxbCxnZW5lcmFsLG1lZXRtZQ0KKyAgICAgICAgICAgICAgICAgICAgPC9pPg0KKw0KKyAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+DQorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICBBZGQgbmV4dCBsaW5lcyBpbnRvIHRoZSAvZXRjL2FzdGVyaXNrL2V4dGVuc2lvbnMuY29uZjoNCisgICAgICAgICAgICAgICAgPGJsb2NrcXVvdGU+DQorICAgICAgICAgICAgICAgICAgICA8aT5bcm9vbXNdDQorICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoID0mZ3Q7IFJlYWx0aW1lL0ANCisgICAgICAgICAgICAgICAgICAgIDwvaT4NCisNCisgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPg0KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICAgICAgUmVzdGFydCBhc3RlcmlzazoNCisgICAgICAgICAgICAgICAgPGJsb2NrcXVvdGU+DQorICAgICAgICAgICAgICAgICAgICA8aT5zZXJ2aWNlIGFzdGVyaXNrIHJlc3RhcnQ8L2k+DQorICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4NCisgICAgICAgICAgICAgICAgSW5zZXJ0LCBmb3IgZXhhbXBsZSwgU0lQIHVzZXIgd2l0aCBuYW1lICd0ZXN0JzoNCisgICAgICAgICAgICAgICAgPGJsb2NrcXVvdGU+DQorICAgICAgICAgICAgICAgICAgICA8aT4NCisgICAgICAgICAgICAgICAgICAgICAgICBJTlNFUlQgSU5UTyBzaXB1c2VycyAoYWxsb3csIGNvbnRleHQsIGRpc2FsbG93LCBob3N0LCBuYW1lLCBzZWNyZXQpIFZBTFVFUyAoJ3VsYXcnICwgJ3Jvb21zJywgTlVMTCwgJ2R5bmFtaWMnICwgJ3Rlc3QnLCAnMTIzNDUnKTsNCisgICAgICAgICAgICAgICAgICAgIDwvaT4NCisgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPg0KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iU2V0dXAgcmVkNXNpcCB0cmFuc3BvcnQiPjxzdHJvbmc+U2V0dXAgcmVkNXNpcCB0cmFuc3BvcnQ8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorICAgICAgICAgICAgICAgIERvd25sb2FkIHJlZDVzaXAgZnJvbTxibG9ja3F1b3RlPmh0dHA6Ly9yZWQ1cGhvbmUuZ29vZ2xlY29kZS5jb20vc3ZuL2JyYW5jaGVzL3JlZDVzaXA8L2Jsb2NrcXVvdGU+DQorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisgICAgICAgICAgICAgICAgQnVpbGQgd2l0aCBBcGFjaGUgQW50DQorICAgICAgICAgICAgPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICAgICAgSW5zdGFsbCBqc3ZjOg0KKyAgICAgICAgICAgICAgICA8YmxvY2txdW90ZT4NCisgICAgICAgICAgICAgICAgICAgIDxpPmFwdC1nZXQgaW5zdGFsbCBqc3ZjPC9pPg0KKyAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+DQorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICBJbnNlcnQgcHJvcGVyIHZhbHVlcyB0byB0aGUgL29wdC9yZWQ1c2lwL3NldHRpbmdzLnByb3BlcnRpZXMNCisNCisgICAgICAgICAgICAgICAgPGJsb2NrcXVvdGU+DQorICAgICAgICAgICAgICAgICAgICA8aT5yZWQ1Lmhvc3QgLSByZWQ1IHNlcnZlciBhZGRyZXNzICgxMjcuMC4wLjEpDQorICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgc2lwLm9icHJveHkgLSBhc3RlcmlzayBhZGRlcnNzICgxMjcuMC4wLjEpDQorICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgc2lwLnBob25lIC0gc2lwIHBob25lIG51bWJlciAodGVzdCkNCisgICAgICAgICAgICAgICAgICAgICAgICA8YnIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICBzaXAuYXV0aGlkIC0gc2lwIGF1dGggaWQgKHRlc3QpDQorICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgc2lwLnNlY3JldCAtIHNpcCBwYXNzd29yZCAoMTIzNDUpDQorICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgc2lwLnJlYWxtIC0gc2lwIHJlYWxtLCAiYXN0ZXJpc2siIGJ5IGRlZmF1bHQNCisgICAgICAgICAgICAgICAgICAgICAgICA8YnIgLz4NCisgICAgICAgICAgICAgICAgICAgICAgICBzaXAucHJveHkgLQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHJvb21zIC0gaWRzIG9mIG9wZW5tZWV0aW5ncyByb29tcywgY2FuIGJlLCBmb3IgZXhhbXBsZSwgMiwzLDUsNg0KKyAgICAgICAgICAgICAgICAgICAgPC9pPg0KKw0KKyAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+DQorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICBBZGQgcmVkNXNpcCB0byBhdXRvc3RhcnQ6DQorICAgICAgICAgICAgICAgIDxibG9ja3F1b3RlPg0KKyAgICAgICAgICAgICAgICAgICAgPGk+bG4gLXMgL29wdC9yZWQ1c2lwL3JlZDVzaXAuc2ggL2V0Yy9pbml0LmQvcmVkNXNpcA0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNobW9kIGEreCAvZXRjL2luaXQuZC9yZWQ1c2lwDQorICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+DQorICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlLXJjLmQgL2V0Yy9pbml0LmQvcmVkNXNpcCBkZWZhdWx0cw0KKyAgICAgICAgICAgICAgICAgICAgPC9pPg0KKw0KKyAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+DQorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICBTdGFydCBvcGVubWVldGluZ3MNCisgICAgICAgICAgICAgICAgPGJsb2NrcXVvdGU+DQorICAgICAgICAgICAgICAgICAgICA8aT5zZXJ2aWNlIHJlZDUgc3RhcnQ8L2k+DQorICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4NCisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorICAgICAgICAgICAgICAgIFN0YXJ0IHJlZDVzaXANCisgICAgICAgICAgICAgICAgPGJsb2NrcXVvdGU+DQorICAgICAgICAgICAgICAgICAgICA8aT5zZXJ2aWNlIHJlZDVzaXAgc3RhcnQ8L2k+DQorICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4NCisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPCEtLSBGT09URVIgLS0+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGhyIG5vc2hhZGU9Im5vc2hhZGUiIHNpemU9IjEiLz4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBhbGlnbj0iY2VudGVyIj48Zm9udCBjb2xvcj0iIzEyMzQ2NSIgc2l6ZT0iLTEiPjxlbT4KKyAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0ICYjMTY5OyAyMDAzLTIwMTMsIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorICAgICAgICAgICAgICAgICAgICA8L2VtPjwvZm9udD48L2Rpdj4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9ib2R5PgorICAgIDwvaHRtbD4KKzwhLS0gZW5kIHRoZSBwcm9jZXNzaW5nIC0tPgorCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCmRpZmYgLS1naXQgYS9kb2NzL3JlZDVzaXAtaW50ZWdyYXRpb25fMi4xLmh0bWwgYi9kb2NzL3JlZDVzaXAtaW50ZWdyYXRpb25fMi4xLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2RiNTc4YQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvcmVkNXNpcC1pbnRlZ3JhdGlvbl8yLjEuaHRtbApAQCAtMCwwICsxLDEwMzUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgorCis8IS0tCitDb3B5cmlnaHQgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKworPCEtLSBDb250ZW50IFN0eWxlc2hlZXQgZm9yIFNpdGUgLS0+CisKKyAgICAgICAgCis8IS0tIHN0YXJ0IHRoZSBwcm9jZXNzaW5nIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8IS0tIEdFTkVSQVRFRCBGSUxFLCBETyBOT1QgRURJVCwgRURJVCBUSEUgWE1MIEZJTEUgSU4geGRvY3MgSU5TVEVBRCEgLS0+CisgICAgPCEtLSBNYWluIFBhZ2UgU2VjdGlvbiAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGh0bWw+CisgICAgICAgIDxoZWFkPgorICAgICAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiLz4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iT3Blbk1lZXRpbmdzIFRlYW0iPgorICAgICAgICAgICAgPG1ldGEgbmFtZT0iZW1haWwiIGNvbnRlbnQ9InNvbG9tYXhAYXBhY2hlLm9yZyI+CisgICAgICAgICAgICAKKyAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgPHRpdGxlPkFwYWNoZSBPcGVuTWVldGluZ3MgLSBTSVAtVHJhbnNwb3J0IEludGVncmF0aW9uPC90aXRsZT4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9vcGVubWVldGluZ3MuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9qcXVlcnktdWkuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2luLXNsaWRlci1zdHlsZXMuY3NzIj4KKyAgICAgICAgICAgIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9ImNzcy9jb2xvcmJveC5jc3MiIC8+CisgICAgICAgICAgICAKKwkJCTwhLS0gQWRkIGpRdWVyeSBsaWJyYXJ5IC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LTEuNy4xLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPCEtLSBBZGQgY29pbnNsaWRlciBwbHVnaW5zIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvY29pbi1zbGlkZXIubWluLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPCEtLSBBZGQgY29sb3Jib3ggcGx1Z2luIC0tPgorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LmNvbG9yYm94LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmNvcmUuanMiPjwvc2NyaXB0PgorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS53aWRnZXQuanMiPjwvc2NyaXB0PgorCQkKKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkuYWNjb3JkaW9uLmpzIj48L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdD4KKwkJCSQoZnVuY3Rpb24oKSB7CisJCQkJJCggIiNhY2NvcmRpb24iICkuYWNjb3JkaW9uKHsKKwkJCQkJYXV0b0hlaWdodDogZmFsc2UsCisJCQkJCW5hdmlnYXRpb246IHRydWUsCisJCQkJCW5hdmlnYXRpb25GaWx0ZXI6IGZ1bmN0aW9uICgpIHsKKwkJCQkJCXZhciBzaWRlYmFySHJlZkFycmF5ID0gdGhpcy5ocmVmLnNwbGl0KCIvIik7CisgICAgCQkJCQl2YXIgc2lkZUJhckxhc3RTdHJpbmcgPSBzaWRlYmFySHJlZkFycmF5W3NpZGViYXJIcmVmQXJyYXkubGVuZ3RoIC0gMV0udG9Mb3dlckNhc2UoKTsKKwkJCQkJCQorCQkJCQkJaWYgKHNpZGVCYXJMYXN0U3RyaW5nLmluZGV4T2YoIiMiKSA9PSAtMSkgeworCQkJCQkJCXJldHVybiBmYWxzZTsKKwkJCQkJCX0KKwkJCQkJCQorCQkJCQkJCQkJCQkJLyogZG9jdW1lbnQubG9jYXRpb24uaHJlZiAqLworCQkJCQkJdmFyIGN1cnJlbnRTZWN0aW9uID0gIiI7CisJCQkJCQkKKwkJCQkJCXZhciBjdXJyZW50TG9jYXRpb24gPSAiIjsKKwkJCQkJCXZhciBjdXJyZW50TGluayA9ICIiOworCQkJCQkJaWYgKGZhbHNlKSB7CisJCQkJCQkKKwkJCQkJCX0KKyAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5kZXguaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5kZXguaHRtbCIuc3Vic3RyKDEsICIvaW5kZXguaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9saWNlbnNlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2xpY2Vuc2UuaHRtbCIuc3Vic3RyKDEsICIvbGljZW5zZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5zdWJzdHIoMSwgImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZG93bmxvYWRzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2Rvd25sb2Fkcy5odG1sIi5zdWJzdHIoMSwgIi9kb3dubG9hZHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiLnN1YnN0cigxLCAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9pbnN0YWxsYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvaW5zdGFsbGF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL2luc3RhbGxhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1VwZ3JhZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvVXBncmFkZS5odG1sIi5zdWJzdHIoMSwgIi9VcGdyYWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIuc3Vic3RyKDEsICJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db21tYW5kTGluZUFkbWluLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIuc3Vic3RyKDEsICIvQ29tbWFuZExpbmVBZG1pbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9nZXQtaW52b2x2ZWQuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9nZXQtaW52b2x2ZWQuaHRtbCIuc3Vic3RyKDEsICIvZ2V0LWludm9sdmVkLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGVhbS1saXN0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdGVhbS1saXN0Lmh0bWwiLnN1YnN0cigxLCAiL3RlYW0tbGlzdC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL21haWwtbGlzdHMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9tYWlsLWxpc3RzLmh0bWwiLnN1YnN0cigxLCAiL21haWwtbGlzdHMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLnN1YnN0cigxLCAiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3N2bi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvc3ZuLmh0bWwiLnN1YnN0cigxLCAiL3N2bi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIuc3Vic3RyKDEsICJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2RlcGVuZGVuY2llcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZGVwZW5kZW5jaWVzLmh0bWwiLnN1YnN0cigxLCAiL2RlcGVuZGVuY2llcy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pVbml0VGVzdGluZy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSlVuaXRUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL0pVbml0VGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01hbnVhbFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01hbnVhbFRlc3RpbmcuaHRtbCIuc3Vic3RyKDEsICIvTWFudWFsVGVzdGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlbGVhc2VHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVsZWFzZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1JlbGVhc2VHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYnNpdGVHdWlkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvV2Vic2l0ZUd1aWRlLmh0bWwiLnN1YnN0cigxLCAiL1dlYnNpdGVHdWlkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Tb2FwUmVzdEFQSS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU29hcFJlc3RBUEkuaHRtbCIuc3Vic3RyKDEsICIvU29hcFJlc3RBUEkuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZXN0QVBJU2FtcGxlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZXN0QVBJU2FtcGxlLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RBUElTYW1wbGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MZGFwQW5kQURTLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9MZGFwQW5kQURTLmh0bWwiLnN1YnN0cigxLCAiL0xkYXBBbmRBRFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FcnJvcnNUYWJsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRXJyb3JzVGFibGUuaHRtbCIuc3Vic3RyKDEsICIvRXJyb3JzVGFibGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTW9vZGxlUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL01vb2RsZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Nb29kbGVQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TYWthaVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TYWthaVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TYWthaVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ppcmFQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSmlyYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9KaXJhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSm9vbWxhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pvb21sYVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Kb29tbGFQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EcnVwYWxQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvRHJ1cGFsUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0RydXBhbFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0JpdHJpeFBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9CaXRyaXhQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvQml0cml4UGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9TdWdhckNSTVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9TdWdhckNSTVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9TdWdhckNSTVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JlZG1pbmVQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVkbWluZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9SZWRtaW5lUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSUJNREIyQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSUJNREIyQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL0lCTURCMkNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3JhY2xlQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3JhY2xlQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL09yYWNsZUNvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTXlTUUxDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9NeVNRTENvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9NeVNRTENvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUG9zdGdyZXNDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9MYW5ndWFnZUVkaXRvci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLnN1YnN0cigxLCAiL0xhbmd1YWdlRWRpdG9yLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5zdWJzdHIoMSwgIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9FZGl0VGVtcGxhdGVzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRWRpdFRlbXBsYXRlcy5odG1sIi5zdWJzdHIoMSwgIi9FZGl0VGVtcGxhdGVzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1BvcnRTZXR0aW5ncy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1BvcnRTZXR0aW5ncy5odG1sIi5zdWJzdHIoMSwgIi9Qb3J0U2V0dGluZ3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5zdWJzdHIoMSwgIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5zdWJzdHIoMSwgIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9EYXNoYm9hcmQuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9EYXNoYm9hcmQuaHRtbCIuc3Vic3RyKDEsICIvRGFzaGJvYXJkLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLnN1YnN0cigxLCAiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Ib3RLZXlzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSG90S2V5cy5odG1sIi5zdWJzdHIoMSwgIi9Ib3RLZXlzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYmFwcE5hbWVQYXRoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvV2ViYXBwTmFtZVBhdGguaHRtbCIuc3Vic3RyKDEsICIvV2ViYXBwTmFtZVBhdGguaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL05hdmlnYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9OYXZpZ2F0aW9uLmh0bWwiLnN1YnN0cigxLCAiL05hdmlnYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLnN1YnN0cigxLCAiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIuc3Vic3RyKDEsICIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIuc3Vic3RyKDEsICIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUlRNUFNBbmRIVFRQUy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1JUTVBTQW5kSFRUUFMuaHRtbCIuc3Vic3RyKDEsICIvUlRNUFNBbmRIVFRQUy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5zdWJzdHIoMSwgIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5zdWJzdHIoMSwgIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NsdXN0ZXJpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DbHVzdGVyaW5nLmh0bWwiLnN1YnN0cigxLCAiL0NsdXN0ZXJpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvR2V0VmVyc2lvbkluZm8uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9HZXRWZXJzaW9uSW5mby5odG1sIi5zdWJzdHIoMSwgIi9HZXRWZXJzaW9uSW5mby5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkgICAgCQkJCQkKKyAgICAJCQkJCWN1cnJlbnRMaW5rID0gY3VycmVudExpbmsudG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCWN1cnJlbnRMb2NhdGlvbiA9IGN1cnJlbnRMb2NhdGlvbi50b0xvd2VyQ2FzZSgpOworICAgIAkJCQkJCisJCQkJCQlyZXR1cm4gc2lkZUJhckxhc3RTdHJpbmcgPT0gY3VycmVudExpbmsrIiMiK2N1cnJlbnRMb2NhdGlvbjsKKwkJCQkJfQorCQkJCX0pOworCQkJfSk7CisJCQk8L3NjcmlwdD4KKwkJCQorCQkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCQkJCSQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgeworCQkJCQkkKCcuZmFuY3lib3gtYnV0dG9ucycpLmNvbG9yYm94KHtyZWw6J2ZhbmN5Ym94LWJ1dHRvbnMnLHdpZHRoOiI3NSUiLCBoZWlnaHQ6Ijc1JSJ9KTsKKwkJCQkJJCgnI2FjY29yZGlvbiBhJykuZWFjaChmdW5jdGlvbigpIHsKKwkJCQkgICAgICB2YXIgYSA9ICQodGhpcyk7CisJCQkJICAgICAgdmFyIGhyZWYgPSBhLmF0dHIoImhyZWYiKTsKKwkJCQkgICAgICBpZiAoaHJlZi5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkgICAgICAJICB2YXIgY29tcGFyZUl0ID0gaHJlZi5zdWJzdHIoMiwgaHJlZi5sZW5ndGgpOworCQkJCQkgICAgICBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKGNvbXBhcmVJdCkhPSAtMSkgeworCQkJCQkgICAgICAgYS5hZGRDbGFzcygnYWN0aXZlJyk7CisJCQkJCSAgICAgIH0KKwkJCQkgICAgICB9CisJCQkJICAgIH0pOworCQkJCQkkKCcjY29pbi1zbGlkZXInKS5jb2luc2xpZGVyKHsgd2lkdGg6IDY0MCxoZWlnaHQ6IDQwMCwgZGVsYXk6IDQwMDAgIH0pOwkJCQkJCisJCQkJfSk7CisJCQk8L3NjcmlwdD4JCisJCQkJCQkKKwkJCTxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+CisJCQkJLmZhbmN5Ym94LWN1c3RvbSAuZmFuY3lib3gtb3V0ZXIgeworCQkJCQlib3gtc2hhZG93OiAwIDAgNTBweCAjMjIyOworCQkJCX0KKwkJCTwvc3R5bGU+CisgICAgICAgIDwvaGVhZD4KKworICAgICAgICA8Ym9keSBiZ2NvbG9yPSIjZmZmZmZmIiB0ZXh0PSIjMDAwMDAwIiBsaW5rPSIjMTIzNDY1IiB2bGluaz0iIzEyMzQ2NSIgYWxpbms9IiMwMDAwMDAiPiAgCisgICAgICAgIAk8ZGl2IGNsYXNzPSJtYWluYm9keSIgc3R5bGU9IndpZHRoOiAxMDAlOyI+CisgICAgICAgIAk8ZGl2IGNsYXNzPSJzdXBlcmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSIwIj4KKyAgICAgICAgICAgICAgICA8IS0tIFRPUCBJTUFHRSAtLT4KKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDx0ZCBhbGlnbj0ibGVmdCI+Cis8YSBocmVmPSJodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvIj48aW1nIHNyYz0iLi9pbWFnZXMvbG9nby0yLmpwZyIgYWx0PSJBcGFjaGUgT3Blbk1lZXRpbmdzIiBib3JkZXI9IjAiLz48L2E+Cis8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCIgPgorCTxhIGhyZWY9ImRlbW8uaHRtbCI+RGVtbzwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJkb3dubG9hZHMuaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5Eb3dubG9hZDwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJpbnN0YWxsYXRpb24uaHRtbCIgdGFyZ2V0PSJfUEFSRU5UIj5JbnN0YWxsYXRpb248L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MiIHRhcmdldD0iX0JMQU5LIj5XaWtpPC9hPgorCTxzcGFuPiZuYnNwOzwvc3Bhbj4KKzwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjQiPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8IS0tIExFRlQgU0lERSBOQVZJR0FUSU9OIC0tPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiIG5vd3JhcD0ibm93cmFwIj4KKworICAgICAgICAgICAgICAgICAgICA8IS0tIHNwZWNpYWwgQUNvbiBMb2dvIC0gbGVhdmUgaGVyZSBmb3IgbmV4dCB0aW1lCisgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9hcGFjaGVjb24uY29tLzIwMDUvVVMvIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vYXBhY2hlLm9yZy9pbWFnZXMvYWMyMDA1dXNfYmx1ZV8xMjV4MTI1LmpwZyIgaGVpZ2h0PSIxMjUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPSIxMjUiIGJvcmRlcj0iMCIgYWx0PSJBcGFjaGVDb24gVVMgMjAwNSIgLz4KKyAgICAgICAgICAgICAgICAgICAgPC9hPiAgLS0+CisKKyAgICAgICAgICAgICAgICAgICA8IS0tIHJlZ3VsYXIgbWVudSAtLT4KKworICAgICAgICAgICAgICAgICAgICAKKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8ZGl2IGlkPSJhY2NvcmRpb24iIHN0eWxlPSJ3aWR0aDogMTAwJSI+CisgICAgCisgICAgICAgICAgICAJPGgzPjxhIGhyZWY9IiNHZW5lcmFsIj5HZW5lcmFsPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9pbmRleC5odG1sIj5Ib21lPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9saWNlbnNlLmh0bWwiPkxpY2Vuc2U8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIj5BU0Y8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2Rvd25sb2Fkcy5odG1sIj5Eb3dubG9hZHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIj5Db21tZXJjaWFsIFN1cHBvcnQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0luc3RhbGxhdGlvbmFuZFVwZ3JhZGUiPkluc3RhbGxhdGlvbiBhbmQgVXBncmFkZTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5zdGFsbGF0aW9uLmh0bWwiPkluc3RhbGxhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vVXBncmFkZS5odG1sIj5VcGdyYWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLmh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIj5UdXRvcmlhbHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCI+Q29tbWFuZCBMaW5lIEFkbWluPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb21tdW5pdHkiPkNvbW11bml0eTwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZ2V0LWludm9sdmVkLmh0bWwiPkdldCBJbnZvbHZlZDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdGVhbS1saXN0Lmh0bWwiPkNvbW1pdHRlcnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL21haWwtbGlzdHMuaHRtbCI+TWFpbGluZyBMaXN0czwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIj5XaWtpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNEZXZlbG9wbWVudCI+RGV2ZWxvcG1lbnQ8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3N2bi5odG1sIj5Tb3VyY2UgQ29kZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiPkJ1Z3MgLyBJc3N1ZXMgKEpJUkEpPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kZXBlbmRlbmNpZXMuaHRtbCI+RGVwZW5kZW5jaWVzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CdWlsZEluc3RydWN0aW9ucy5odG1sIj5CdWlsZCBJbnN0cnVjdGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pVbml0VGVzdGluZy5odG1sIj5KVW5pdCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9NYW51YWxUZXN0aW5nLmh0bWwiPk1hbnVhbCBUZXN0aW5nPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWxlYXNlR3VpZGUuaHRtbCI+UmVsZWFzZSBHdWlkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vV2Vic2l0ZUd1aWRlLmh0bWwiPldlYnNpdGUgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0ludGVncmF0aW9uIj5JbnRlZ3JhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU29hcFJlc3RBUEkuaHRtbCI+U09BUC9SRVNUIEFQSTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVzdEFQSVNhbXBsZS5odG1sIj5SRVNUIEFQSSBTYW1wbGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0xkYXBBbmRBRFMuaHRtbCI+TGRhcCBhbmQgQURTPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIj5Wb0lQIGFuZCBTSVA8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0Vycm9yc1RhYmxlLmh0bWwiPkVycm9ycyB0YWJsZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjUGx1Z2lucyI+UGx1Z2luczwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTW9vZGxlUGx1Z2luLmh0bWwiPk1vb2RsZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Nha2FpUGx1Z2luLmh0bWwiPlNha2FpIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSmlyYVBsdWdpbi5odG1sIj5KaXJhIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSm9vbWxhUGx1Z2luLmh0bWwiPkpvb21sYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0RydXBhbFBsdWdpbi5odG1sIj5EcnVwYWwgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9CaXRyaXhQbHVnaW4uaHRtbCI+Qml0cml4IFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQ29uZmx1ZW5jZVBsdWdpbi5odG1sIj5Db25mbHVlbmNlIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU3VnYXJDUk1QbHVnaW4uaHRtbCI+U3VnYXJDUk0gUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZWRtaW5lUGx1Z2luLmh0bWwiPlJlZG1pbmUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNDb25maWd1cmF0aW9uIj5Db25maWd1cmF0aW9uPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5EQiBTYW1wbGUgQ29uZmlndXJhdGlvbnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIj5BcGFjaGUgRGVyYnk8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0lCTURCMkNvbmZpZy5odG1sIj5JQk0gREIyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcmFjbGVDb25maWcuaHRtbCI+T3JhY2xlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9NeVNRTENvbmZpZy5odG1sIj5NeVNRTDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9zdGdyZXNDb25maWcuaHRtbCI+UG9zdGdyZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkxvY2FsaXphdGlvbiBhbmQgbGFuZ3VhZ2VzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCI+SW50ZXJuYXRpb25hbGlzYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0xhbmd1YWdlRWRpdG9yLmh0bWwiPkxhbmd1YWdlRWRpdG9yPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiPlRpbWVab25lSGFuZGxpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0VkaXRUZW1wbGF0ZXMuaHRtbCI+RWRpdFRlbXBsYXRlczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TkFUIFBvcnQgU2V0dGluZ3M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Qb3J0U2V0dGluZ3MuaHRtbCI+UG9ydCBzZXR0aW5nczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+UGVyZm9ybWFuY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIj5KVk0gcGVyZm9ybWFuY2UgdHVuaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Vc2VyIEludGVyZmFjZTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCI+VGhlbWVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9EYXNoYm9hcmQuaHRtbCI+RGFzaGJvYXJkPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIj5XZWJjYW0gcmVzb2x1dGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIj5Sb29tIGxheW91dCBvcHRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Ib3RLZXlzLmh0bWwiPkhvdCBLZXlzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5DdXN0b21pemF0aW9uPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViYXBwTmFtZVBhdGguaHRtbCI+V2ViYXBwIG5hbWUvcGF0aDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTmF2aWdhdGlvbi5odG1sIj5OYXZpZ2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiPkNhbGVuZGFyIGFuZCB0aW1lem9uZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIj5DdXN0b20gcm9vbSB0eXBlPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIj5DdXN0b20gY3R5cHQgbWVjaGFuaXNtPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIj5HZW5lcmFsIENvbmZpZ3VyYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlNlY3VyaXR5PC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUmVzdHJpY3RlZEFjY2Vzcy5odG1sIj5SZXN0cmljdGVkIEFjY2VzczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUlRNUFNBbmRIVFRQUy5odG1sIj5SVE1QUyBhbmQgSFRUUFM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNvbnZlcnRlcnM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiPk9wZW5PZmZpY2UgQ29udmVydGVyPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiPkZGTVBFRyBWZXJzaW9uIFN3aXRjaDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q2x1c3RlcmluZzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NsdXN0ZXJpbmcuaHRtbCI+Q2x1c3RlcmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TWlzYzwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0dldFZlcnNpb25JbmZvLmh0bWwiPkdldCB2ZXJzaW9uIGluZm88L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAorICAgIDwvZGl2PgorICAgICAKKyAgICA8YnIvPgorICAgIAorICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJTSVAtVHJhbnNwb3J0IEludGVncmF0aW9uIj48c3Ryb25nPlNJUC1UcmFuc3BvcnQgSW50ZWdyYXRpb248L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPllvdSBuZWVkIEFwYWNoZSBPcGVuTWVldGluZ3MgPHN0cm9uZz52ZXJzaW9uIDIuMTwvc3Ryb25nPiB0byBhcHBseSB0aGlzIGd1aWRlITwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPllvdSBuZWVkIEFzdGVyaXNrIDxzdHJvbmc+dmVyc2lvbiAxMTwvc3Ryb25nPiB0byBhcHBseSB0aGlzIGd1aWRlITwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPkhlcmUgaXMgaW5zdHJ1Y3Rpb24gaG93LXRvIHNldCB1cCByZWQ1c2lwIHRyYW5zcG9ydCBpbnRlZ3JhdGlvbiB3aXRoIE9wZW5NZWV0aW5ncyBvbiBVYnVudHUgMTIuMTAuPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iUHJlcmVxdWlzaXRlcyI+PHN0cm9uZz5QcmVyZXF1aXNpdGVzPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKwkJCQlSdW4gdGhlIGNvbW1hbmRzDQorCQkJCTxibG9ja3F1b3RlPg0KKwkJCQkJPGk+DQorCQkJCQkJc3VkbyBhcHQtZ2V0IHVwZGF0ZSAmYW1wOyZhbXA7IHN1ZG8gYXB0LWdldCB1cGdyYWRlPGJyIC8+DQorCQkJCQkJc3VkbyBhcHQtZ2V0IGluc3RhbGwgYnVpbGQtZXNzZW50aWFsIGxpbnV4LWhlYWRlcnMtYHVuYW1lIC1yYCBsaWJ4bWwyLWRldiBsaWJuY3Vyc2VzNS1kZXYgbGlic3FsaXRlMy1kZXYgc3FsaXRlMyBvcGVuc3NsIGxpYnNzbC1kZXY8YnIgLz4NCisJCQkJCTwvaT4NCisJCQkJPC9ibG9ja3F1b3RlPg0KKwkJCTwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iT0RCQyBTZXR1cCI+PHN0cm9uZz5PREJDIFNldHVwPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKwkJCQlSdW4gdGhlIGNvbW1hbmRzDQorCQkJCTxibG9ja3F1b3RlPg0KKwkJCQkJPGk+DQorCQkJCQkJc3VkbyBhcHQtZ2V0IHVwZGF0ZTxiciAvPg0KKwkJCQkJCXN1ZG8gYXB0LWdldCBpbnN0YWxsIHVuaXhPREJDIHVuaXhPREJDLWRldiBsaWJteW9kYmMNCisJCQkJCTwvaT4NCisJCQkJPC9ibG9ja3F1b3RlPg0KKwkJCTwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisJCQkJU2V0IHVwIEFzdGVyaXNrIGNvbm5lY3Rvcjo8YnIgLz48YnIgLz4NCisJCQkJTW9kaWZ5IGZpbGUgPHR0Pi9ldGMvb2RiYy5pbmk8L3R0PiBhcyBmb2xsb3dzOiAocmVwbGFjZSBVU0VSLCBQQVNTV09SRCBhbmQgU29ja2V0IHdpdGggdmFsdWVzIHJlbGF0aXZlIHRvIHlvdXIgc3lzdGVtKQ0KKwkJCQk8YmxvY2txdW90ZT4NCisJCQkJCTxpPg0KKwkJCQkJCVthc3Rlcmlzay1jb25uZWN0b3JdPGJyIC8+DQorCQkJCQkJRGVzY3JpcHRpb24gPSBNeVNRTCBjb25uZWN0aW9uIHRvICdvcGVubWVldGluZ3MnIGRhdGFiYXNlPGJyIC8+DQorCQkJCQkJRHJpdmVyID0gTXlTUUw8YnIgLz4NCisJCQkJCQlEYXRhYmFzZSA9IG9wZW5tZWV0aW5nczxiciAvPg0KKwkJCQkJCVNlcnZlciA9IGxvY2FsaG9zdDxiciAvPg0KKwkJCQkJCVVTRVIgPSByb290PGJyIC8+DQorCQkJCQkJUEFTU1dPUkQgPTxiciAvPg0KKwkJCQkJCVBvcnQgPSAzMzA2PGJyIC8+DQorCQkJCQkJU29ja2V0ID0gL3Zhci9ydW4vbXlzcWxkL215c3FsZC5zb2NrPGJyIC8+DQorCQkJCQk8L2k+DQorCQkJCTwvYmxvY2txdW90ZT48YnIgLz48YnIgLz4NCisJCQkJTW9kaWZ5IGZpbGUgPHR0Pi9ldGMvb2RiY2luc3QuaW5pPC90dD4gYXMgZm9sbG93czogKHJlcGxhY2UgdGhlIHBhdGggdG8gdGhlICouc28gZmlsZXMgYmVsb3cgd2l0aCB0aGUgcmVhbCBwYXRocyBvbiB5b3VyIHN5c3RlbSkNCisJCQkJPGJsb2NrcXVvdGU+DQorCQkJCQkoVGhlIHBhdGggYmVsb3cgaXMgZm9yIHgzMiBzZXJ2ZXIsIHg2NCB2ZXJzaW9uIGlzIG1vc3QgcHJvYmFibHkgbG9jYXRlZCBhdCA8dHQ+L3Vzci9saWIveDg2XzY0LWxpbnV4LWdudS9vZGJjPC90dD4pPGJyIC8+DQorCQkJCQk8aT4NCisJCQkJCQlbTXlTUUxdPGJyIC8+DQorCQkJCQkJRGVzY3JpcHRpb24gPSBPREJDIGZvciBNeVNRTDxiciAvPg0KKwkJCQkJCURyaXZlciA9IC91c3IvbGliL2kzODYtbGludXgtZ251L29kYmMvbGlibXlvZGJjLnNvPGJyIC8+DQorCQkJCQkJU2V0dXAgPSAvdXNyL2xpYi9pMzg2LWxpbnV4LWdudS9vZGJjL2xpYm9kYmNteVMuc288YnIgLz4NCisJCQkJCQlGaWxlVXNhZ2UgPSAxPGJyIC8+DQorCQkJCQk8L2k+DQorCQkJCTwvYmxvY2txdW90ZT48YnIgLz48YnIgLz4NCisJCQkJUnVuIHRoZSBmb2xsb3dpbmcgY29tbWFuZCB0byBlbnN1cmUgZXZlcnl0aGluZyB3b3JrcyBhcyBleHBlY3RlZDoNCisJCQkJPGJsb2NrcXVvdGU+DQorCQkJCQk8aT5lY2hvICJzZWxlY3QgMSIgfCBpc3FsIC12IGFzdGVyaXNrLWNvbm5lY3RvcjwvaT4NCisJCQkJPC9ibG9ja3F1b3RlPg0KKwkJCTwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iQnVpbGRpbmcgYW5kIHNldHRpbmcgdXAgQXN0ZXJpc2siPjxzdHJvbmc+QnVpbGRpbmcgYW5kIHNldHRpbmcgdXAgQXN0ZXJpc2s8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorCQkJCVJ1biB0aGUgY29tbWFuZHMNCisJCQkJPGJsb2NrcXVvdGU+DQorCQkJCQk8aT4NCisJCQkJCQlzdWRvIG1rZGlyIC91c3Ivc3JjL2FzdGVyaXNrICZhbXA7JmFtcDsgY2QgL3Vzci9zcmMvYXN0ZXJpc2s8YnIgLz4NCisJCQkJCQlzdWRvIHdnZXQgaHR0cDovL2Rvd25sb2Fkcy5hc3Rlcmlzay5vcmcvcHViL3RlbGVwaG9ueS9hc3Rlcmlzay9yZWxlYXNlcy9hc3Rlcmlzay0xMS4yLjEudGFyLmd6PGJyIC8+DQorCQkJCQkJc3VkbyB0YXIgLXh2emYgYXN0ZXJpc2stMTEuMi4xLnRhci5nejxiciAvPg0KKwkJCQkJCWNkIC4vYXN0ZXJpc2stMTEuMi4xPGJyIC8+DQorCQkJCQkJc3VkbyBtYWtlIGNsZWFuPGJyIC8+DQorCQkJCQkJc3VkbyAuL2NvbmZpZ3VyZTxiciAvPg0KKwkJCQkJCXN1ZG8gbWFrZTxiciAvPg0KKwkJCQkJCXN1ZG8gbWFrZSBpbnN0YWxsPGJyIC8+DQorCQkJCQkJc3VkbyBtYWtlIHNhbXBsZXM8YnIgLz4NCisJCQkJCQlzdWRvIG1ha2UgY29uZmlnPGJyIC8+DQorCQkJCQkJc3VkbyBzZXJ2aWNlIGFzdGVyaXNrIHN0YXJ0PGJyIC8+DQorCQkJCQk8L2k+DQorCQkJCTwvYmxvY2txdW90ZT4NCisJCQk8L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkID48IS0tIGJnY29sb3I9IiNFRUVFRUUiIC0tPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0idmVyZGFuYSxhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IkNvbmZpZ3VyZSBBc3RlcmlzayI+PHN0cm9uZz5Db25maWd1cmUgQXN0ZXJpc2s8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorCQkJCUVuYWJsZSBhc3RlcmlzayBPREJDIG1vZHVsZTo8YnIgLz48YnIgLz4NCisJCQkJTW9kaWZ5ICJbbW9kdWxlc10iIHNlY3Rpb24gb2YgPHR0Pi9ldGMvYXN0ZXJpc2svbW9kdWxlcy5jb25mPC90dD4gYXMgZm9sbG93czo8YnIgLz4NCisJCQkJPHN0cm9uZz5BZGQvdW5jb21tZW50IHRoZSBmb2xsb3dpbmcgbGluZXM8L3N0cm9uZz4NCisJCQkJPGJsb2NrcXVvdGU+DQorCQkJCQk8aT4NCisJCQkJCQlwcmVsb2FkID0mZ3Q7IHJlc19vZGJjLnNvPGJyIC8+DQorCQkJCQkJcHJlbG9hZCA9Jmd0OyByZXNfY29uZmlnX29kYmMuc288YnIgLz4NCisJCQkJCTwvaT4NCisJCQkJPC9ibG9ja3F1b3RlPg0KKwkJCTwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKwkJCQlDcmVhdGUvdXBkYXRlICJbYXN0ZXJpc2tdIiBzZWN0aW9uIGluIDx0dD4vZXRjL2FzdGVyaXNrL3Jlc19vZGJjLmNvbmY8L3R0PjoNCisJCQkJPGJsb2NrcXVvdGU+DQorCQkJCQk8aT4NCisJCQkJCQlbYXN0ZXJpc2tdPGJyIC8+DQorCQkJCQkJZW5hYmxlZCA9Jmd0OyB5ZXM8YnIgLz4NCisJCQkJCQlkc24gPSZndDsgYXN0ZXJpc2stY29ubmVjdG9yPGJyIC8+DQorCQkJCQkJcHJlLWNvbm5lY3QgPSZndDsgeWVzDQorCQkJCQk8L2k+DQorCQkJCTwvYmxvY2txdW90ZT4NCisJCQk8L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisJCQkJTW9kaWZ5IDx0dD4vZXRjL2FzdGVyaXNrL3NpcC5jb25mPC90dD48YnIgLz4NCisJCQkJPHN0cm9uZz5BZGQvdW5jb21tZW50IHRoZSBmb2xsb3dpbmcgbGluZTwvc3Ryb25nPjo8YnIgLz4NCisJCQkJPGJsb2NrcXVvdGU+DQorCQkJCQk8aT4NCisJCQkJCQl2aWRlb3N1cHBvcnQ9eWVzPGJyIC8+DQorCQkJCQkJcnRjYWNoZWZyaWVuZHM9eWVzPGJyIC8+DQorCQkJCQk8L2k+DQorCQkJCTwvYmxvY2txdW90ZT4NCisJCQkJPHN0cm9uZz5BZGQgdXNlciBmb3IgdGhlICJTSVAgVHJhbnNwb3J0Ijwvc3Ryb25nPjo8YnIgLz4NCisJCQkJPGJsb2NrcXVvdGU+DQorCQkJCQk8aT4NCisJCQkJCQlbcmVkNXNpcF91c2VyXTxiciAvPg0KKwkJCQkJCXR5cGU9ZnJpZW5kPGJyIC8+DQorCQkJCQkJc2VjcmV0PTEyMzQ1PGJyIC8+DQorCQkJCQkJZGlzYWxsb3c9YWxsPGJyIC8+DQorCQkJCQkJYWxsb3c9dWxhdzxiciAvPg0KKwkJCQkJCWFsbG93PWgyNjQ8YnIgLz4NCisJCQkJCQlob3N0PWR5bmFtaWM8YnIgLz4NCisJCQkJCQluYXQ9Zm9yY2VfcnBvcnQsY29tZWRpYTxiciAvPg0KKwkJCQkJCWNvbnRleHQ9cm9vbXMtcmVkNXNpcDxiciAvPg0KKwkJCQkJPC9pPg0KKwkJCQk8L2Jsb2NrcXVvdGU+DQorCQkJPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIgLz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorCQkJCUFkZCBuZXh0IGxpbmVzIGludG8gdGhlIDx0dD4vZXRjL2FzdGVyaXNrL2V4dGNvbmZpZy5jb25mPC90dD46DQorCQkJCTxibG9ja3F1b3RlPg0KKwkJCQkJPGk+DQorCQkJCQkJW3NldHRpbmdzXTxiciAvPg0KKwkJCQkJCXNpcHBlZXJzID0mZ3Q7IG9kYmMsYXN0ZXJpc2ssc2lwdXNlcnM8YnIgLz4NCisJCQkJCTwvaT4NCisJCQkJPC9ibG9ja3F1b3RlPg0KKwkJCTwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyIC8+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKwkJCQlNb2RpZnkgPHR0Pi9ldGMvYXN0ZXJpc2svZXh0ZW5zaW9ucy5jb25mPC90dD48YnIgLz4NCisJCQkJPHN0cm9uZz5BZGQgdGhlIGZvbGxvd2luZyBzZWN0aW9uPC9zdHJvbmc+OjxiciAvPg0KKwkJCQk8YmxvY2txdW90ZT4NCisJCQkJCTxpPg0KKwkJCQkJCVtyb29tc108YnIgLz4NCisJCQkJCQlleHRlbiA9Jmd0OyBfNDAwWCEsMSxHb3RvSWYoJFske0RCX0VYSVNUUyhvcGVubWVldGluZ3Mvcm9vbXMvJHtFWFRFTn0pfV0/b2s6bm90YXZhaWwpPGJyIC8+DQorCQkJCQkJZXh0ZW4gPSZndDsgXzQwMFghLG4ob2spLFNFVChQSU49JHtEQihvcGVubWVldGluZ3Mvcm9vbXMvJHtFWFRFTn0pfSk8YnIgLz4NCisJCQkJCQlleHRlbiA9Jmd0OyBfNDAwWCEsbixTZXQoQ09ORkJSSURHRSh1c2VyLHRlbXBsYXRlKT1zaXBfdXNlcik8YnIgLz4NCisJCQkJCQlleHRlbiA9Jmd0OyBfNDAwWCEsbixTZXQoQ09ORkJSSURHRSh1c2VyLHBpbik9JHtQSU59KTxiciAvPg0KKwkJCQkJCWV4dGVuID0mZ3Q7IF80MDBYISxuKG9rKSxDb25mYnJpZGdlKCR7RVhURU59LGRlZmF1bHRfYnJpZGdlLCk8YnIgLz4NCisJCQkJCQlleHRlbiA9Jmd0OyBfNDAwWCEsbixIYW5ndXA8YnIgLz4NCisJCQkJCQlleHRlbiA9Jmd0OyBfNDAwWCEsbihub3RhdmFpbCksQW5zd2VyKCk8YnIgLz4NCisJCQkJCQlleHRlbiA9Jmd0OyBfNDAwWCEsbixQbGF5YmFjayhpbnZhbGlkKTxiciAvPg0KKwkJCQkJCWV4dGVuID0mZ3Q7IF80MDBYISxuLEhhbmd1cDxiciAvPg0KKwkJCQkJCTxiciAvPg0KKwkJCQkJCVtyb29tcy1vcmlnaW5hdGVdPGJyIC8+DQorCQkJCQkJZXh0ZW4gPSZndDsgXzQwMFghLDEsQ29uZmJyaWRnZSgke0VYVEVOfSxkZWZhdWx0X2JyaWRnZSxzaXBfdXNlcik8YnIgLz4NCisJCQkJCQlleHRlbiA9Jmd0OyBfNDAwWCEsbixIYW5ndXA8YnIgLz4NCisJCQkJCQk8YnIgLz4NCisJCQkJCQlbcm9vbXMtb3V0XTxiciAvPg0KKwkJCQkJCTsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKio8YnIgLz4NCisJCQkJCQk7IEV4dGVuc2lvbnMgZm9yIG91dGdvaW5nIGNhbGxzIGZyb20gT3Blbm1lZXRpbmdzIHJvb20uPGJyIC8+DQorCQkJCQkJOyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKjxiciAvPg0KKwkJCQkJCTxiciAvPg0KKwkJCQkJCVtyb29tcy1yZWQ1c2lwXTxiciAvPg0KKwkJCQkJCWV4dGVuID0mZ3Q7IF80MDBYISwxLEdvdG9JZigkWyR7REJfRVhJU1RTKG9wZW5tZWV0aW5ncy9yb29tcy8ke0VYVEVOfSl9XT9vazpub3RhdmlsKTxiciAvPg0KKwkJCQkJCWV4dGVuID0mZ3Q7IF80MDBYISxuKG9rKSxDb25mYnJpZGdlKCR7RVhURU59LGRlZmF1bHRfYnJpZGdlLHJlZDVzaXBfdXNlcik8YnIgLz4NCisJCQkJCQlleHRlbiA9Jmd0OyBfNDAwWCEsbihub3RhdmFpbCksSGFuZ3VwIDxiciAvPg0KKwkJCQkJPC9pPg0KKwkJCQk8L2Jsb2NrcXVvdGU+DQorCQkJPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIgLz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorCQkJCU1vZGlmeSA8dHQ+L2V0Yy9hc3Rlcmlzay9jb25mYnJpZGdlLmNvbmY8L3R0PjxiciAvPg0KKwkJCQk8c3Ryb25nPkFkZC9Nb2RpZnkgdGhlIGZvbGxvd2luZyBzZWNpb25zPC9zdHJvbmc+OjxiciAvPg0KKwkJCQk8YmxvY2txdW90ZT4NCisJCQkJCTxpPg0KKwkJCQkJCVtnZW5lcmFsXTxiciAvPg0KKwkJCQkJCTxiciAvPg0KKwkJCQkJCVtyZWQ1c2lwX3VzZXJdPGJyIC8+DQorCQkJCQkJdHlwZT11c2VyPGJyIC8+DQorCQkJCQkJbWFya2VkPXllczxiciAvPg0KKwkJCQkJCTxiciAvPg0KKwkJCQkJCVtzaXBfdXNlcl08YnIgLz4NCisJCQkJCQl0eXBlPXVzZXI8YnIgLz4NCisJCQkJCQllbmRfbWFya2VkPXllczxiciAvPg0KKwkJCQkJCXdhaXRfbWFya2VkPXllczxiciAvPg0KKwkJCQkJCW11c2ljX29uX2hvbGRfd2hlbl9lbXB0eT15ZXM8YnIgLz4NCisJCQkJCQk8YnIgLz4NCisJCQkJCQlbZGVmYXVsdF9icmlkZ2VdPGJyIC8+DQorCQkJCQkJdHlwZT1icmlkZ2U8YnIgLz4NCisJCQkJCQl2aWRlb19tb2RlPWZvbGxvd190YWxrZXI8YnIgLz4gDQorCQkJCQk8L2k+DQorCQkJCTwvYmxvY2txdW90ZT4NCisJCQk8L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxiciAvPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisJCQkJVG8gZW5hYmxlIEFzdGVyaXNrIE1hbmFnZXIgQVBJIG1vZGlmeSA8dHQ+L2V0Yy9hc3Rlcmlzay9tYW5hZ2VyLmNvbmY8L3R0PjxiciAvPg0KKwkJCQk8c3Ryb25nPkFkZC9Nb2RpZnkgdGhlIGZvbGxvd2luZyBzZWN0aW9uczwvc3Ryb25nPjo8YnIgLz4NCisJCQkJPGJsb2NrcXVvdGU+DQorCQkJCQk8aT4NCisJCQkJCQlbZ2VuZXJhbF08YnIgLz4NCisJCQkJCQllbmFibGVkID0geWVzPGJyIC8+DQorCQkJCQkJd2ViZW5hYmxlZCA9IG5vPGJyIC8+DQorCQkJCQkJcG9ydCA9IDUwMzg8YnIgLz4NCisJCQkJCQliaW5kYWRkciA9IDEyNy4wLjAuMTxiciAvPg0KKwkJCQkJCTxiciAvPg0KKwkJCQkJCVtvcGVubWVldGluZ3NdPGJyIC8+DQorCQkJCQkJc2VjcmV0ID0gMTIzNDU8YnIgLz4NCisJCQkJCQlkZW55PTAuMC4wLjAvMC4wLjAuMDxiciAvPg0KKwkJCQkJCXBlcm1pdD0xMjcuMC4wLjEvMjU1LjI1NS4yNTUuMDxiciAvPg0KKwkJCQkJCXJlYWQgPSBhbGw8YnIgLz4NCisJCQkJCQl3cml0ZSA9IGFsbDxiciAvPg0KKwkJCQkJPC9pPg0KKwkJCQk8L2Jsb2NrcXVvdGU+DQorCQkJPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIgLz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorCQkJCVVwZGF0ZSBPcGVubWVldGluZ3Mgd2l0aCBjcmVhZGVudGlhbHMgZm9yIEFzdGVyaXNrIG1hbmFnZXIuIA0KKwkJCQlNb2RpZnkgPHR0Pi9vcHQvcmVkNS93ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL29wZW5tZWV0aW5ncy1hcHBsaWNhdGlvbkNvbnRleHQueG1sPC90dD48YnIgLz4NCisJCQkJZmluZCA8c3Ryb25nPiZsdDtiZWFuIGlkPSJzaXBEYW8iIGNsYXNzPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNvbmZlcmVuY2UuZGFvLlNpcERhbyImZ3Q7PC9zdHJvbmc+DQorCQkJCXVuY29tbWVudCBpdHMgcGFyYW1ldGVycyBhbmQgc2V0IGl0IHRvIHlvdXIgY3VzdG9tIHZhbHVlcy4NCisJCQkJPHAgc3R5bGU9ImZvbnQtc2l6ZTogbGFyZ2VyOyBjb2xvcjogYmx1ZTsiPg0KKwkJCQkJSU1QT1JUQU5UOiB0aGlzIHN0ZXAgc2hvdWxkIGJlIGRvbmUgPHN0cm9uZz5CRUZPUkU8L3N0cm9uZz4gc3lzdGVtIGluc3RhbGwvcmVzdG9yZQ0KKwkJCQkJb3RoZXJ3aXNlIGFsbCBTSVAgcmVsYXRlZCByb29tIGluZm9ybWF0aW9uIHdpbGwgYmUgbG9zdA0KKwkJCQk8L3A+ICAgDQorCQkJPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIgLz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorCQkJCVJlc3RhcnQgYXN0ZXJpc2s6DQorCQkJCTxibG9ja3F1b3RlPg0KKwkJCQkJPGk+c2VydmljZSBhc3RlcmlzayByZXN0YXJ0PC9pPg0KKwkJCQk8L2Jsb2NrcXVvdGU+DQorCQkJPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIgLz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkID48IS0tIGJnY29sb3I9IiNFRUVFRUUiIC0tPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0idmVyZGFuYSxhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IlNldHVwIHJlZDVzaXAgdHJhbnNwb3J0Ij48c3Ryb25nPlNldHVwIHJlZDVzaXAgdHJhbnNwb3J0PC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKwkJCQlEb3dubG9hZCByZWQ1c2lwIGZyb20NCisJCQkJPGJsb2NrcXVvdGU+aHR0cDovL3JlZDVwaG9uZS5nb29nbGVjb2RlLmNvbS9zdm4vYnJhbmNoZXMvcmVkNXNpcDwvYmxvY2txdW90ZT4NCisJCQk8L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorCQkJCUJ1aWxkIHdpdGggQXBhY2hlIEFudA0KKwkJCQk8YmxvY2txdW90ZT4NCisJCQkJCTxpPmFudDwvaT4NCisJCQkJPC9ibG9ja3F1b3RlPg0KKwkJCTwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisJCQkJSW5zZXJ0IHByb3BlciB2YWx1ZXMgdG8gdGhlIDx0dD4vb3B0L3JlZDVzaXAvc2V0dGluZ3MucHJvcGVydGllczwvdHQ+DQorDQorCQkJCTxibG9ja3F1b3RlPg0KKwkJCQkJPGk+DQorCQkJCQkJcmVkNS5ob3N0PTEyNy4wLjAuMSAjIHJlZDUgc2VydmVyIGFkZHJlc3M8YnIgLz4NCisJCQkJCQlvbS5jb250ZXh0PW9wZW5tZWV0aW5ncyAjIE9wZW5tZWV0aW5ncyBjb250ZXh0PGJyIC8+IA0KKwkJCQkJCXJlZDUuY29kZWM9YXNhbzxiciAvPg0KKwkJCQkJCXJlZDUuY29kZWMucmF0ZT0yMiAjIHNob3VsZCBjb3JyZWxhdGUgd2l0aCBtaWMgc2V0dGluZ3MgaW4gY29uZmlnLnhtbDxiciAvPg0KKwkJCQkJCXNpcC5vYnByb3h5PTEyNy4wLjAuMSAjIGFzdGVyaXNrIGFkZGVyc3M8YnIgLz4NCisJCQkJCQlzaXAucGhvbmU9cmVkNXNpcF91c2VyICMgc2lwIHBob25lIG51bWJlcjxiciAvPg0KKwkJCQkJCXNpcC5hdXRoaWQ9cmVkNXNpcF91c2VyICMgc2lwIGF1dGggaWQ8YnIgLz4NCisJCQkJCQlzaXAuc2VjcmV0PTEyMzQ1ICMgc2lwIHBhc3N3b3JkPGJyIC8+DQorCQkJCQkJc2lwLnJlYWxtPWFzdGVyaXNrICMgc2lwIHJlYWxtPGJyIC8+DQorCQkJCQkJc2lwLnByb3h5PTEyNy4wLjAuMSAjIGFkZHJlc3Mgb2Ygc2lwIHByb3h5IDxiciAvPg0KKwkJCQkJCXJvb21zLmZvcmNlU3RhcnQ9bm8gIyBUQkQgPGJyIC8+DQorCQkJCQkJcm9vbXM9MSAjIFRCRCAobm90IGluIHVzZSkgPGJyIC8+DQorCQkJCQk8L2k+DQorCQkJCTwvYmxvY2txdW90ZT4NCisJCQk8L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+DQorCQkJCUFkZCByZWQ1c2lwIHRvIGF1dG9zdGFydDoNCisJCQkJPGJsb2NrcXVvdGU+DQorCQkJCQk8aT4NCisJCQkJCQlzdWRvIGNwIC9vcHQvcmVkNXNpcC9yZWQ1c2lwIC9ldGMvaW5pdC5kLzxiciAvPg0KKwkJCQkJCXN1ZG8gY2htb2QgYSt4IC9ldGMvaW5pdC5kL3JlZDVzaXA8YnIgLz4NCisJCQkJCQlzdWRvIHVwZGF0ZS1yYy5kIHJlZDVzaXAgZGVmYXVsdHMNCisJCQkJCTwvaT4NCisJCQkJPC9ibG9ja3F1b3RlPg0KKwkJCTwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdj4NCisJCQkJU3RhcnQgb3Blbm1lZXRpbmdzDQorCQkJCTxibG9ja3F1b3RlPg0KKwkJCQkJPGk+c2VydmljZSByZWQ1IHN0YXJ0PC9pPg0KKwkJCQk8L2Jsb2NrcXVvdGU+DQorCQkJPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2Pg0KKwkJCQlTdGFydCByZWQ1c2lwDQorCQkJCTxibG9ja3F1b3RlPg0KKwkJCQkJPGk+c2VydmljZSByZWQ1c2lwIHN0YXJ0PC9pPg0KKwkJCQk8L2Jsb2NrcXVvdGU+DQorCQkJPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDwhLS0gRk9PVEVSIC0tPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgYWxpZ249ImNlbnRlciI+PGZvbnQgY29sb3I9IiMxMjM0NjUiIHNpemU9Ii0xIj48ZW0+CisgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAmIzE2OTsgMjAwMy0yMDEzLCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyAgICAgICAgICAgICAgICAgICAgPC9lbT48L2ZvbnQ+PC9kaXY+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvYm9keT4KKyAgICA8L2h0bWw+Cis8IS0tIGVuZCB0aGUgcHJvY2Vzc2luZyAtLT4KKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKwpkaWZmIC0tZ2l0IGEvZG9jcy9zdm4uaHRtbCBiL2RvY3Mvc3ZuLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2ZlMzhjYQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3Mvc3ZuLmh0bWwKQEAgLTAsMCArMSwxMTIyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KKworPCEtLQorQ29weXJpZ2h0IDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KK0xpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKK2h0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCitVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCitkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCitTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCitsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorCisKKzwhLS0gQ29udGVudCBTdHlsZXNoZWV0IGZvciBTaXRlIC0tPgorCisgICAgICAgIAorPCEtLSBzdGFydCB0aGUgcHJvY2Vzc2luZyAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPCEtLSBHRU5FUkFURUQgRklMRSwgRE8gTk9UIEVESVQsIEVESVQgVEhFIFhNTCBGSUxFIElOIHhkb2NzIElOU1RFQUQhIC0tPgorICAgIDwhLS0gTWFpbiBQYWdlIFNlY3Rpb24gLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDxodG1sPgorICAgICAgICA8aGVhZD4KKyAgICAgICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ii8+CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9IgorCQkJU2ViYXN0aWFuIFdhZ25lcgorCQkiPgorICAgICAgICAgICAgPG1ldGEgbmFtZT0iZW1haWwiIGNvbnRlbnQ9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+CisgICAgICAgICAgICAKKyAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgPHRpdGxlPkFwYWNoZSBPcGVuTWVldGluZ3MgLSBTb3VyY2UgQ29kZTwvdGl0bGU+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3Mvb3Blbm1lZXRpbmdzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvanF1ZXJ5LXVpLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29pbi1zbGlkZXItc3R5bGVzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29sb3Jib3guY3NzIiAvPgorICAgICAgICAgICAgCisJCQk8IS0tIEFkZCBqUXVlcnkgbGlicmFyeSAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS0xLjcuMS5taW4uanMiPjwvc2NyaXB0PgorCQkKKwkJCTwhLS0gQWRkIGNvaW5zbGlkZXIgcGx1Z2lucyAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2NvaW4tc2xpZGVyLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTwhLS0gQWRkIGNvbG9yYm94IHBsdWdpbiAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS5jb2xvcmJveC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5jb3JlLmpzIj48L3NjcmlwdD4KKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkud2lkZ2V0LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmFjY29yZGlvbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQ+CisJCQkkKGZ1bmN0aW9uKCkgeworCQkJCSQoICIjYWNjb3JkaW9uIiApLmFjY29yZGlvbih7CisJCQkJCWF1dG9IZWlnaHQ6IGZhbHNlLAorCQkJCQluYXZpZ2F0aW9uOiB0cnVlLAorCQkJCQluYXZpZ2F0aW9uRmlsdGVyOiBmdW5jdGlvbiAoKSB7CisJCQkJCQl2YXIgc2lkZWJhckhyZWZBcnJheSA9IHRoaXMuaHJlZi5zcGxpdCgiLyIpOworICAgIAkJCQkJdmFyIHNpZGVCYXJMYXN0U3RyaW5nID0gc2lkZWJhckhyZWZBcnJheVtzaWRlYmFySHJlZkFycmF5Lmxlbmd0aCAtIDFdLnRvTG93ZXJDYXNlKCk7CisJCQkJCQkKKwkJCQkJCWlmIChzaWRlQmFyTGFzdFN0cmluZy5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJCQl9CisJCQkJCQkKKwkJCQkJCQkJCQkJCS8qIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgKi8KKwkJCQkJCXZhciBjdXJyZW50U2VjdGlvbiA9ICIiOworCQkJCQkJCisJCQkJCQl2YXIgY3VycmVudExvY2F0aW9uID0gIiI7CisJCQkJCQl2YXIgY3VycmVudExpbmsgPSAiIjsKKwkJCQkJCWlmIChmYWxzZSkgeworCQkJCQkJCisJCQkJCQl9CisgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luZGV4Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luZGV4Lmh0bWwiLnN1YnN0cigxLCAiL2luZGV4Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbGljZW5zZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9saWNlbnNlLmh0bWwiLnN1YnN0cigxLCAiL2xpY2Vuc2UuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIuc3Vic3RyKDEsICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2Rvd25sb2Fkcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kb3dubG9hZHMuaHRtbCIuc3Vic3RyKDEsICIvZG93bmxvYWRzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5zdWJzdHIoMSwgIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5zdGFsbGF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luc3RhbGxhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9pbnN0YWxsYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9VcGdyYWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1VwZ3JhZGUuaHRtbCIuc3Vic3RyKDEsICIvVXBncmFkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLnN1YnN0cigxLCAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29tbWFuZExpbmVBZG1pbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLnN1YnN0cigxLCAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZ2V0LWludm9sdmVkLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZ2V0LWludm9sdmVkLmh0bWwiLnN1YnN0cigxLCAiL2dldC1pbnZvbHZlZC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RlYW0tbGlzdC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3RlYW0tbGlzdC5odG1sIi5zdWJzdHIoMSwgIi90ZWFtLWxpc3QuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9tYWlsLWxpc3RzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbWFpbC1saXN0cy5odG1sIi5zdWJzdHIoMSwgIi9tYWlsLWxpc3RzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5zdWJzdHIoMSwgImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9zdm4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3N2bi5odG1sIi5zdWJzdHIoMSwgIi9zdm4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLnN1YnN0cigxLCAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kZXBlbmRlbmNpZXMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2RlcGVuZGVuY2llcy5odG1sIi5zdWJzdHIoMSwgIi9kZXBlbmRlbmNpZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVW5pdFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pVbml0VGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9KVW5pdFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NYW51YWxUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9NYW51YWxUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL01hbnVhbFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWxlYXNlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlbGVhc2VHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9SZWxlYXNlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJzaXRlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1dlYnNpdGVHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9XZWJzaXRlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU29hcFJlc3RBUEkuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1NvYXBSZXN0QVBJLmh0bWwiLnN1YnN0cigxLCAiL1NvYXBSZXN0QVBJLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdEFQSVNhbXBsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVzdEFQSVNhbXBsZS5odG1sIi5zdWJzdHIoMSwgIi9SZXN0QVBJU2FtcGxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGRhcEFuZEFEUy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTGRhcEFuZEFEUy5odG1sIi5zdWJzdHIoMSwgIi9MZGFwQW5kQURTLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRXJyb3JzVGFibGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0Vycm9yc1RhYmxlLmh0bWwiLnN1YnN0cigxLCAiL0Vycm9yc1RhYmxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01vb2RsZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Nb29kbGVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvTW9vZGxlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU2FrYWlQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU2FrYWlQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU2FrYWlQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KaXJhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0ppcmFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSmlyYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pvb21sYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Kb29tbGFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSm9vbWxhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRHJ1cGFsUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0RydXBhbFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9EcnVwYWxQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CaXRyaXhQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQml0cml4UGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0JpdHJpeFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU3VnYXJDUk1QbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWRtaW5lUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlZG1pbmVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvUmVkbWluZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0lCTURCMkNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0lCTURCMkNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9JQk1EQjJDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09yYWNsZUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09yYWNsZUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9PcmFjbGVDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL015U1FMQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTXlTUUxDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvTXlTUUxDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Bvc3RncmVzQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9zdGdyZXNDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvUG9zdGdyZXNDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9MYW5ndWFnZUVkaXRvci5odG1sIi5zdWJzdHIoMSwgIi9MYW5ndWFnZUVkaXRvci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVGltZVpvbmVIYW5kbGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIuc3Vic3RyKDEsICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRWRpdFRlbXBsYXRlcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIuc3Vic3RyKDEsICIvRWRpdFRlbXBsYXRlcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3J0U2V0dGluZ3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3J0U2V0dGluZ3MuaHRtbCIuc3Vic3RyKDEsICIvUG9ydFNldHRpbmdzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIuc3Vic3RyKDEsICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIuc3Vic3RyKDEsICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRGFzaGJvYXJkLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRGFzaGJvYXJkLmh0bWwiLnN1YnN0cigxLCAiL0Rhc2hib2FyZC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSG90S2V5cy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0hvdEtleXMuaHRtbCIuc3Vic3RyKDEsICIvSG90S2V5cy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJhcHBOYW1lUGF0aC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLnN1YnN0cigxLCAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9OYXZpZ2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTmF2aWdhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9OYXZpZ2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5zdWJzdHIoMSwgIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JUTVBTQW5kSFRUUFMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SVE1QU0FuZEhUVFBTLmh0bWwiLnN1YnN0cigxLCAiL1JUTVBTQW5kSFRUUFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIuc3Vic3RyKDEsICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIuc3Vic3RyKDEsICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DbHVzdGVyaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2x1c3RlcmluZy5odG1sIi5zdWJzdHIoMSwgIi9DbHVzdGVyaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dldFZlcnNpb25JbmZvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2V0VmVyc2lvbkluZm8uaHRtbCIuc3Vic3RyKDEsICIvR2V0VmVyc2lvbkluZm8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJICAgIAkJCQkJCisgICAgCQkJCQljdXJyZW50TGluayA9IGN1cnJlbnRMaW5rLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQljdXJyZW50TG9jYXRpb24gPSBjdXJyZW50TG9jYXRpb24udG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCQorCQkJCQkJcmV0dXJuIHNpZGVCYXJMYXN0U3RyaW5nID09IGN1cnJlbnRMaW5rKyIjIitjdXJyZW50TG9jYXRpb247CisJCQkJCX0KKwkJCQl9KTsKKwkJCX0pOworCQkJPC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwkJCQkkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsKKwkJCQkJJCgnLmZhbmN5Ym94LWJ1dHRvbnMnKS5jb2xvcmJveCh7cmVsOidmYW5jeWJveC1idXR0b25zJyx3aWR0aDoiNzUlIiwgaGVpZ2h0OiI3NSUifSk7CisJCQkJCSQoJyNhY2NvcmRpb24gYScpLmVhY2goZnVuY3Rpb24oKSB7CisJCQkJICAgICAgdmFyIGEgPSAkKHRoaXMpOworCQkJCSAgICAgIHZhciBocmVmID0gYS5hdHRyKCJocmVmIik7CisJCQkJICAgICAgaWYgKGhyZWYuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJICAgICAgCSAgdmFyIGNvbXBhcmVJdCA9IGhyZWYuc3Vic3RyKDIsIGhyZWYubGVuZ3RoKTsKKwkJCQkJICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZihjb21wYXJlSXQpIT0gLTEpIHsKKwkJCQkJICAgICAgIGEuYWRkQ2xhc3MoJ2FjdGl2ZScpOworCQkJCQkgICAgICB9CisJCQkJICAgICAgfQorCQkJCSAgICB9KTsKKwkJCQkJJCgnI2NvaW4tc2xpZGVyJykuY29pbnNsaWRlcih7IHdpZHRoOiA2NDAsaGVpZ2h0OiA0MDAsIGRlbGF5OiA0MDAwICB9KTsJCQkJCQorCQkJCX0pOworCQkJPC9zY3JpcHQ+CQorCQkJCQkJCisJCQk8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorCQkJCS5mYW5jeWJveC1jdXN0b20gLmZhbmN5Ym94LW91dGVyIHsKKwkJCQkJYm94LXNoYWRvdzogMCAwIDUwcHggIzIyMjsKKwkJCQl9CisJCQk8L3N0eWxlPgorICAgICAgICA8L2hlYWQ+CisKKyAgICAgICAgPGJvZHkgYmdjb2xvcj0iI2ZmZmZmZiIgdGV4dD0iIzAwMDAwMCIgbGluaz0iIzEyMzQ2NSIgdmxpbms9IiMxMjM0NjUiIGFsaW5rPSIjMDAwMDAwIj4gIAorICAgICAgICAJPGRpdiBjbGFzcz0ibWFpbmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAJPGRpdiBjbGFzcz0ic3VwZXJib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCI+CisgICAgICAgICAgICAgICAgPCEtLSBUT1AgSU1BR0UgLS0+CisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPgorPGEgaHJlZj0iaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnLyI+PGltZyBzcmM9Ii4vaW1hZ2VzL2xvZ28tMi5qcGciIGFsdD0iQXBhY2hlIE9wZW5NZWV0aW5ncyIgYm9yZGVyPSIwIi8+PC9hPgorPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiID4KKwk8YSBocmVmPSJkZW1vLmh0bWwiPkRlbW88L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iZG93bmxvYWRzLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+RG93bmxvYWQ8L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaW5zdGFsbGF0aW9uLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+SW5zdGFsbGF0aW9uPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTIiB0YXJnZXQ9Il9CTEFOSyI+V2lraTwvYT4KKwk8c3Bhbj4mbmJzcDs8L3NwYW4+Cis8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSI0Ij4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPCEtLSBMRUZUIFNJREUgTkFWSUdBVElPTiAtLT4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIiBub3dyYXA9Im5vd3JhcCI+CisKKyAgICAgICAgICAgICAgICAgICAgPCEtLSBzcGVjaWFsIEFDb24gTG9nbyAtIGxlYXZlIGhlcmUgZm9yIG5leHQgdGltZQorICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vYXBhY2hlY29uLmNvbS8yMDA1L1VTLyI+CisgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2FwYWNoZS5vcmcvaW1hZ2VzL2FjMjAwNXVzX2JsdWVfMTI1eDEyNS5qcGciIGhlaWdodD0iMTI1IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTI1IiBib3JkZXI9IjAiIGFsdD0iQXBhY2hlQ29uIFVTIDIwMDUiIC8+CisgICAgICAgICAgICAgICAgICAgIDwvYT4gIC0tPgorCisgICAgICAgICAgICAgICAgICAgPCEtLSByZWd1bGFyIG1lbnUgLS0+CisKKyAgICAgICAgICAgICAgICAgICAgCisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGRpdiBpZD0iYWNjb3JkaW9uIiBzdHlsZT0id2lkdGg6IDEwMCUiPgorICAgIAorICAgICAgICAgICAgCTxoMz48YSBocmVmPSIjR2VuZXJhbCI+R2VuZXJhbDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5kZXguaHRtbCI+SG9tZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbGljZW5zZS5odG1sIj5MaWNlbnNlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyI+QVNGPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kb3dubG9hZHMuaHRtbCI+RG93bmxvYWRzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCI+Q29tbWVyY2lhbCBTdXBwb3J0PC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnN0YWxsYXRpb25hbmRVcGdyYWRlIj5JbnN0YWxsYXRpb24gYW5kIFVwZ3JhZGU8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luc3RhbGxhdGlvbi5odG1sIj5JbnN0YWxsYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1VwZ3JhZGUuaHRtbCI+VXBncmFkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii5odHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyI+VHV0b3JpYWxzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db21tYW5kTGluZUFkbWluLmh0bWwiPkNvbW1hbmQgTGluZSBBZG1pbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29tbXVuaXR5Ij5Db21tdW5pdHk8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2dldC1pbnZvbHZlZC5odG1sIj5HZXQgSW52b2x2ZWQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3RlYW0tbGlzdC5odG1sIj5Db21taXR0ZXJzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9tYWlsLWxpc3RzLmh0bWwiPk1haWxpbmcgTGlzdHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyI+V2lraTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjRGV2ZWxvcG1lbnQiPkRldmVsb3BtZW50PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9zdm4uaHRtbCI+U291cmNlIENvZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIj5CdWdzIC8gSXNzdWVzIChKSVJBKTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZGVwZW5kZW5jaWVzLmh0bWwiPkRlcGVuZGVuY2llczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCI+QnVpbGQgSW5zdHJ1Y3Rpb25zPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KVW5pdFRlc3RpbmcuaHRtbCI+SlVuaXQgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTWFudWFsVGVzdGluZy5odG1sIj5NYW51YWwgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVsZWFzZUd1aWRlLmh0bWwiPlJlbGVhc2UgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1dlYnNpdGVHdWlkZS5odG1sIj5XZWJzaXRlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnRlZ3JhdGlvbiI+SW50ZWdyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1NvYXBSZXN0QVBJLmh0bWwiPlNPQVAvUkVTVCBBUEk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Jlc3RBUElTYW1wbGUuaHRtbCI+UkVTVCBBUEkgU2FtcGxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9MZGFwQW5kQURTLmh0bWwiPkxkYXAgYW5kIEFEUzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCI+Vm9JUCBhbmQgU0lQPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9FcnJvcnNUYWJsZS5odG1sIj5FcnJvcnMgdGFibGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI1BsdWdpbnMiPlBsdWdpbnM8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01vb2RsZVBsdWdpbi5odG1sIj5Nb29kbGUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TYWthaVBsdWdpbi5odG1sIj5TYWthaSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0ppcmFQbHVnaW4uaHRtbCI+SmlyYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pvb21sYVBsdWdpbi5odG1sIj5Kb29tbGEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9EcnVwYWxQbHVnaW4uaHRtbCI+RHJ1cGFsIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQml0cml4UGx1Z2luLmh0bWwiPkJpdHJpeCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCI+Q29uZmx1ZW5jZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiPlN1Z2FyQ1JNIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVkbWluZVBsdWdpbi5odG1sIj5SZWRtaW5lIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29uZmlndXJhdGlvbiI+Q29uZmlndXJhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+REIgU2FtcGxlIENvbmZpZ3VyYXRpb25zPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQXBhY2hlRGVyYnlDb25maWcuaHRtbCI+QXBhY2hlIERlcmJ5PC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JQk1EQjJDb25maWcuaHRtbCI+SUJNIERCMjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3JhY2xlQ29uZmlnLmh0bWwiPk9yYWNsZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTXlTUUxDb25maWcuaHRtbCI+TXlTUUw8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Bvc3RncmVzQ29uZmlnLmh0bWwiPlBvc3RncmVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Mb2NhbGl6YXRpb24gYW5kIGxhbmd1YWdlczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiPkludGVybmF0aW9uYWxpc2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9MYW5ndWFnZUVkaXRvci5odG1sIj5MYW5ndWFnZUVkaXRvcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vVGltZVpvbmVIYW5kbGluZy5odG1sIj5UaW1lWm9uZUhhbmRsaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9FZGl0VGVtcGxhdGVzLmh0bWwiPkVkaXRUZW1wbGF0ZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk5BVCBQb3J0IFNldHRpbmdzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9ydFNldHRpbmdzLmh0bWwiPlBvcnQgc2V0dGluZ3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlBlcmZvcm1hbmNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCI+SlZNIHBlcmZvcm1hbmNlIHR1bmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+VXNlciBJbnRlcmZhY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiPlRoZW1lczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRGFzaGJvYXJkLmh0bWwiPkRhc2hib2FyZDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCI+V2ViY2FtIHJlc29sdXRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCI+Um9vbSBsYXlvdXQgb3B0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSG90S2V5cy5odG1sIj5Ib3QgS2V5czwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q3VzdG9taXphdGlvbjwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmFwcE5hbWVQYXRoLmh0bWwiPldlYmFwcCBuYW1lL3BhdGg8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL05hdmlnYXRpb24uaHRtbCI+TmF2aWdhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIj5DYWxlbmRhciBhbmQgdGltZXpvbmU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCI+Q3VzdG9tIHJvb20gdHlwZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCI+Q3VzdG9tIGN0eXB0IG1lY2hhbmlzbTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCI+R2VuZXJhbCBDb25maWd1cmF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5TZWN1cml0eTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCI+UmVzdHJpY3RlZCBBY2Nlc3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1JUTVBTQW5kSFRUUFMuaHRtbCI+UlRNUFMgYW5kIEhUVFBTPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Db252ZXJ0ZXJzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIj5PcGVuT2ZmaWNlIENvbnZlcnRlcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIj5GRk1QRUcgVmVyc2lvbiBTd2l0Y2g8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNsdXN0ZXJpbmc8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DbHVzdGVyaW5nLmh0bWwiPkNsdXN0ZXJpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk1pc2M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZXRWZXJzaW9uSW5mby5odG1sIj5HZXQgdmVyc2lvbiBpbmZvPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAKKyAgICA8L2Rpdj4KKyAgICAgCisgICAgPGJyLz4KKyAgICAKKyAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iT3Blbk1lZXRpbmdzIFNvdXJjZSBDb2RlIj48c3Ryb25nPk9wZW5NZWV0aW5ncyBTb3VyY2UgQ29kZTwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgICA8aHIgc3R5bGU9IndpZHRoOjEwMCU7IGNvbG9yOiM5OTk5OTk7IGJhY2tncm91bmQtY29sb3I6Izk5OTk5OTsgaGVpZ2h0OjFweDsgYm9yZGVyOjBweDsiLz4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQorCQkJCU9wZW5NZWV0aW5ncyB1c2VzDQorCQkJCTxhIGNsYXNzPSJleHRlcm5hbCIgcmVsPSJub2ZvbGxvdyIgaHJlZj0iaHR0cDovL3N1YnZlcnNpb24udGlncmlzLm9yZyI+DQorCQkJCQlTdWJ2ZXJzaW9uDQorCQkJCTwvYT4NCisJCQkJdG8gbWFuYWdlIGl0cyBzb3VyY2UgY29kZS4NCisJCQkJSWYgeW91J3JlIG5ldyB0byBTdWJ2ZXJzaW9uLCB5b3UgY2FuIGNoZWNrIG91dCB0aGUNCisJCQkJPGEgaHJlZj0iaHR0cDovL3N2bmJvb2sucmVkLWJlYW4uY29tLyI+b25saW5lIGJvb2s8L2E+DQorCQkJCWFib3V0IFN1YnZlcnNpb24uDQorCQkJCU5vdGUgdGhhdCB3ZSBhcmUgY3VycmVudGx5IHVzaW5nIFN1YnZlcnNpb24gMS4xLnggKHRoZXJlIGFyZSBzZXBhcmF0ZQ0KKwkJCQl2ZXJzaW9ucyBvZiB0aGUgYm9vayBjb3ZlcmluZyAxLjAgYW5kIDEuMSkuDQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQorCQkJCVRvIHJlY2VpdmUgbm90aWNlIG9mIGNvbW1pdHMgdG8gdGhlIHJlcG9zaXRvcnkgc3Vic2NyaWJlIHRvDQorCQkJCTxhIGhyZWY9Im1haWx0bzpjb21taXRzQG9wZW5tZWV0aW5ncy5hcGFjaGUub3JnIj4NCisJCQkJCWNvbW1pdHNAb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcNCisJCQkJPC9hPg0KKwkJCQlieSBzZW5kaW5nIGVtYWlsIHRvDQorCQkJCTxhIGhyZWY9Im1haWx0bzpjb21taXRzLXN1YnNjcmliZUBvcGVubWVldGluZ3MuYXBhY2hlLm9yZyI+DQorCQkJCQljb21taXRzLXN1YnNjcmliZUBvcGVubWVldGluZ3MuYXBhY2hlLm9yZw0KKwkJCQk8L2E+DQorCQkJCS4NCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJXZWIgQWNjZXNzIHRvIFN1YnZlcnNpb24iPjxzdHJvbmc+V2ViIEFjY2VzcyB0byBTdWJ2ZXJzaW9uPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJSWYgeW91IGp1c3Qgd2FudCB0byBicm93c2UgdGhlIHNvdXJjZSBjb2RlLCB5b3UgY2FuIHVzZSB0aGUNCisJCQkJPGEgY2xhc3M9ImV4dGVybmFsIiByZWw9Im5vZm9sbG93IiBocmVmPSJodHRwOi8vc3ZuLmFwYWNoZS5vcmcvdmlld2N2cy9vcGVubWVldGluZ3MiPg0KKwkJCQkJVmlld0NWUyB3ZWIgaW50ZXJmYWNlDQorCQkJCTwvYT4NCisJCQkJdG8gU3VidmVyc2lvbi4gVGhpcyBpcyBjdXJyZW50IGF0IGFsbCB0aW1lcy4NCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJDaGVja2luZyBPdXQgQ29kZSBVc2luZyBTdWJ2ZXJzaW9uIj48c3Ryb25nPkNoZWNraW5nIE91dCBDb2RlIFVzaW5nIFN1YnZlcnNpb248L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPkFueW9uZSBjYW4gY2hlY2sgY29kZSBvdXQgb2YgU3VidmVyc2lvbi4gWW91IG9ubHkgbmVlZCB0byBzcGVjaWZ5DQorCQkJCWENCisJCQkJdXNlcm5hbWUgYW5kIHBhc3N3b3JkIHRvIHVwZGF0ZSB0aGUgU3VidmVyc2lvbiByZXBvc2l0b3J5LCBhbmQgb25seQ0KKwkJCQlPcGVuTWVldGluZ3MgY29tbWl0dGVycyBjYW4gZG8gdGhhdC4NCisJCQkJSWYgeW91IGFyZSBhIGNvbW1pdHRlciwgYXJlIHdvcmtpbmcgZnJvbSBiZWhpbmQgYSBmaXJld2FsbCwgb3IgYXJlDQorCQkJCWNvbm5lY3RlZCB0byB0aGUgaW50ZXJuZXQgdGhyb3VnaCBhIHByb3h5IHNlcnZlciwgcGxlYXNlIHNlZSB0aGUNCisJCQkJc2VjdGlvbnMNCisJCQkJYmVsb3cgZm9yIG1vcmUgaW5mb3JtYXRpb24uDQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCBiZ2NvbG9yPSIjRUZFRkVGIj4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9ImFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iQW5vbnltb3VzIGNoZWNrIG91dCBmcm9tIFN1YnZlcnNpb24iPjxzdHJvbmc+QW5vbnltb3VzIGNoZWNrIG91dCBmcm9tIFN1YnZlcnNpb248L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+VXNlIGEgY29tbWFuZCBsaWtlOjwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+JSBzdm4gY2hlY2tvdXQNCisJCQkJCWh0dHA6Ly9zdm4uYXBhY2hlLm9yZy9yZXBvcy9hc2Yvb3Blbm1lZXRpbmdzIDwvcHJlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+T25jZSB5b3UgaGF2ZSBPcGVuTWVldGluZ3MgY2hlY2tlZCBvdXQgeW91IGNhbiB1cGRhdGUgdGhlIHNvdXJjZQ0KKwkJCQkJYnkgZXhlY3V0aW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBmcm9tIHdpdGhpbiB0aGUgb3Blbm1lZXRpbmdzDQorCQkJCQlkaXJlY3RvcnkuDQorCQkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+DQorCQkJCQklIHN2biB1cGRhdGUNCisJCQkJPC9wcmU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCBiZ2NvbG9yPSIjRUZFRkVGIj4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9ImFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iQWNjZXNzIGZyb20gYmVoaW5kIGEgZmlyZXdhbGwiPjxzdHJvbmc+QWNjZXNzIGZyb20gYmVoaW5kIGEgZmlyZXdhbGw8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+Rm9yIHRob3NlIHVzZXJzIHdobyBhcmUgc3R1Y2sgYmVoaW5kIGEgY29ycG9yYXRlIGZpcmV3YWxsIHdoaWNoDQorCQkJCQlpcw0KKwkJCQkJYmxvY2tpbmcgaHR0cCBhY2Nlc3MgdG8gdGhlIFN1YnZlcnNpb24gcmVwb3NpdG9yeSwgeW91IGNhbiB0cnkgdG8gYWNjZXNzIGl0DQorCQkJCQl2aWEgSFRUUFM6DQorCQkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+DQorCQkJCQklIHN2biBjaGVja291dA0KKwkJCQkJaHR0cHM6Ly9zdm4uYXBhY2hlLm9yZy9yZXBvcy9hc2Yvb3Blbm1lZXRpbmdzDQorCQkJCTwvcHJlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgYmdjb2xvcj0iI0VGRUZFRiI+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IkFjY2VzcyB0aHJvdWdoIGEgcHJveHkiPjxzdHJvbmc+QWNjZXNzIHRocm91Z2ggYSBwcm94eTwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5UaGUgU3VidmVyc2lvbiBjbGllbnQgY2FuIGdvIHRocm91Z2ggYSBwcm94eSwgaWYgeW91IGNvbmZpZ3VyZSBpdA0KKwkJCQkJdG8gZG8gc28uIEZpcnN0LCBlZGl0IHlvdXIgInNlcnZlcnMiIGNvbmZpZ3VyYXRpb24gZmlsZSB0byBpbmRpY2F0ZQ0KKwkJCQkJd2hpY2gNCisJCQkJCXByb3h5IHRvIHVzZS4gVGhlIGZpbGVzIGxvY2F0aW9uIGRlcGVuZHMgb24geW91ciBvcGVyYXRpbmcgc3lzdGVtLg0KKwkJCQkJT24gTGludXggb3IgVW5peCBpdCBpcyBsb2NhdGVkIGluIHRoZSBkaXJlY3RvcnkgIn4vLnN1YnZlcnNpb24iLg0KKwkJCQkJT24gV2luZG93cyBpdCBpcyBpbiAiJUFQUERBVEElXFN1YnZlcnNpb24iLiAoVHJ5ICJlY2hvICVBUFBEQVRBJSIsDQorCQkJCQlub3RlIHRoaXMgaXMgYSBoaWRkZW4gZGlyZWN0b3J5LikNCisJCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+VGhlcmUgYXJlIGNvbW1lbnRzIGluIHRoZSBmaWxlIGV4cGxhaW5pbmcgd2hhdCB0byBkby4gSWYgeW91DQorCQkJCQlkb24ndCBoYXZlDQorCQkJCQl0aGF0IGZpbGUsIGdldCB0aGUgbGF0ZXN0IFN1YnZlcnNpb24gY2xpZW50IGFuZCBydW4gYW55IGNvbW1hbmQ7IHRoaXMNCisJCQkJCXdpbGwNCisJCQkJCWNhdXNlIHRoZSBjb25maWd1cmF0aW9uIGRpcmVjdG9yeSBhbmQgdGVtcGxhdGUgZmlsZXMgdG8gYmUgY3JlYXRlZC4NCisJCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+RXhhbXBsZSA6IEVkaXQgdGhlICdzZXJ2ZXJzJyBmaWxlIGFuZCBhZGQgc29tZXRoaW5nIGxpa2UgOg0KKwkJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJlPg0KKwkJCQkJW2dsb2JhbF0NCisJCQkJCWh0dHAtcHJveHktaG9zdCA9IHlvdXIucHJveHkubmFtZQ0KKwkJCQkJaHR0cC1wcm94eS1wb3J0ID0gMzEyOA0KKwkJCQk8L3ByZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkIGJnY29sb3I9IiNFRkVGRUYiPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0iYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJDb21taXR0ZXIgYWNjZXNzIj48c3Ryb25nPkNvbW1pdHRlciBhY2Nlc3M8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+RXZlcnlvbmUgY2FuIGFjY2VzcyB0aGUgQXBhY2hlIFBvZGxpbmcgU3VidmVyc2lvbiByZXBvc2l0b3J5IHZpYQ0KKwkJCQkJSFRUUFMsDQorCQkJCQlidXQgT3Blbk1lZXRpbmdzIENvbW1pdHRlcnMgbXVzdCBjaGVja291dCB0aGUgU3VidmVyc2lvbiByZXBvc2l0b3J5DQorCQkJCQl2aWEgSFRUUFMuDQorCQkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+DQorCQkJCQklIHN2biBjaGVja291dA0KKwkJCQkJaHR0cHM6Ly9zdm4uYXBhY2hlLm9yZy9yZXBvcy9hc2Yvb3Blbm1lZXRpbmdzDQorCQkJCTwvcHJlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkID48IS0tIGJnY29sb3I9IiNFRUVFRUUiIC0tPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0idmVyZGFuYSxhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IlN1Ym1pdHRpbmcgQ29kZSBDaGFuZ2VzIj48c3Ryb25nPlN1Ym1pdHRpbmcgQ29kZSBDaGFuZ2VzPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkIGJnY29sb3I9IiNFRkVGRUYiPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0iYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJTdWJtaXR0aW5nIGEgcGF0Y2giPjxzdHJvbmc+U3VibWl0dGluZyBhIHBhdGNoPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPklmIHlvdSBtYWtlIGNoYW5nZXMgdG8gT3Blbk1lZXRpbmdzLCBhbmQgd291bGQgbGlrZSB0byBjb250cmlidXRlDQorCQkJCQlpdCB0byB0aGUgcHJvamVjdCwgeW91IHNob3VsZCBvcGVuIGEgSklSQSBpc3N1ZSBhbmQgZGlzY3VzcyB0aGUNCisJCQkJCW1lcml0cw0KKwkJCQkJb2YgdGhlIHByb3Bvc2FsIHdpdGggdGhlIGRldmVsb3BlciBjb21tdW5pdHkuIElmIHRoZXJlIGlzIGFncmVlbWVudCwNCisJCQkJCWNyZWF0ZSBhIHBhdGNoIGFuZCBhdHRhY2ggaXQgdG8gdGhlIEpJUkEgaXNzdWUuDQorCQkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQkJVG8gY3JlYXRlIGEgcGF0Y2gsIGV4ZWN1dGUgdGhlIHN2biBkaWZmIGNvbW1hbmQuIFRoaXMgY3JlYXRlcyBhIHBhdGNoDQorCQkJCQl0aGF0DQorCQkJCQljYW4gZWFzaWx5IGJlIHVwbG9hZGVkIHRvIGEgSklSQSBpc3N1ZS4gQSBnb29kIG5hbWUgZm9yIHRoZSBwYXRjaA0KKwkJCQkJaW5jbHVkZXMNCisJCQkJCXRoZSBKSVJBIGlzc3VlIG5hbWUsIGUuZy4gT1BFTk1FRVRJTkdTLTEwNC5wYXRjaC4gSWYgdGhlcmUgYXJlIHNldmVyYWwNCisJCQkJCXBhdGNoZXMNCisJCQkJCWZvciB0aGUgc2FtZSBKSVJBIGlzc3VlLCB5b3UgbWlnaHQgaW5jbHVkZSB5b3VyIGluaXRpYWxzLCBlLmcuDQorCQkJCQlPUEVOTUVFVElOR1MtMTA0LmNsci5wYXRjaA0KKwkJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJlPg0KKwkJCQkJJSBzdm4gZGlmZiAmZ3Q7IE9QRU5NRUVUSU5HUy0xMDQuY2xyLnBhdGNoDQorCQkJCTwvcHJlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgYmdjb2xvcj0iI0VGRUZFRiI+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IkNvbW1pdHRpbmcgY2hhbmdlcyB0byBzdWJ2ZXJzaW9uIj48c3Ryb25nPkNvbW1pdHRpbmcgY2hhbmdlcyB0byBzdWJ2ZXJzaW9uPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQkJVG8gY29tbWl0IGNoYW5nZXMgdG8gdGhlIHN1YnZlcnNpb24gcmVwb3NpdG9yeSwgeW91IG11c3QgYmUgYW4NCisJCQkJCU9wZW5NZWV0aW5ncyBjb21taXR0ZXIuIFNlZQ0KKwkJCQkJPGEgaHJlZj0iZ2V0LWludm9sdmVkLmh0bWwiPmdldCBpbnZvbHZlZDwvYT4NCisJCQkJCWZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gYmVjb21lIGEgY29tbWl0dGVyIGFuZCBob3cgdG8gc2V0IHVwIHlvdXINCisJCQkJCXBhc3N3b3JkIG9uY2UgeW91IGJlY29tZSBhIGNvbW1pdHRlci4NCisJCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQorCQkJCQlPbmNlIHlvdXIgcGFzc3dvcmQgaXMgc2V0LCB5b3UgY2FuIHVzZSBhIGNvbW1hbmQgbGlrZSB0aGlzIHRvIGNvbW1pdDoNCisJCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByZT4NCisJCQkJCSQmZ3Q7IHN2biBjb21taXQgLS11c2VybmFtZSB5b3VyLXVzZXJuYW1lDQorCQkJCQlBdXRoZW50aWNhdGlvbiByZWFsbTogJmx0O2h0dHBzOi8vc3ZuLmFwYWNoZS5vcmc6NDQzJmd0OyBBU0YgQ29tbWl0dGVycw0KKwkJCQkJUGFzc3dvcmQgZm9yICd5b3VyLXVzZXJuYW1lJzogeW91ci1wYXNzd29yZA0KKwkJCQk8L3ByZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPllvdSBjYW4gYWxzbyBwYXNzIHlvdXIgcGFzc3dvcmQgb24gdGhlIGNvbW1hbmQgbGluZSBkaXJlY3RseSwgYnV0DQorCQkJCQl0aGlzIGlzIGEgc2VjdXJpdHkgcHJvYmxlbSBvbiBtdWx0aXVzZXIgdW5peCBjb21wdXRlcnMgKHRoZSBjb21tYW5kDQorCQkJCQlsaW5lDQorCQkJCQlhcmd1bWVudHMgYXJlIGF2YWlsYWJsZSB2aWEgdGhlIHBzIGNvbW1hbmQpLiBIZXJlIGlzIHRoZSBjb21tYW5kIGlmIHlvdQ0KKwkJCQkJYXJlIFdpbmRvd3Mgb3IgYSBzaW5nbGUgdXNlciB1bml4IGNvbXB1dGVyOg0KKwkJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJlPg0KKwkJCQkJJCZndDsgc3ZuIGNvbW1pdCAtLXVzZXJuYW1lIHlvdXItdXNlcm5hbWUgLS1wYXNzd29yZCB5b3VyLXBhc3N3b3JkDQorCQkJCTwvcHJlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+UmVtZW1iZXIgdG8gcmVwbGFjZSAneW91ci11c2VybmFtZScgYW5kICd5b3VyLXBhc3N3b3JkJyB3aXRoDQorCQkJCQl5b3VyIGFjdHVhbCB1c2VybmFtZSBhbmQgcGFzc3dvcmQgb24gc3ZuLmFwYWNoZS5vcmcuDQorCQkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJCdWlsZGluZyBQb2RsaW5nIGZyb20gU291cmNlIj48c3Ryb25nPkJ1aWxkaW5nIFBvZGxpbmcgZnJvbSBTb3VyY2U8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQk8IS0tICoqKioqKioqKioqKioqKioqIFRCRCAqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT4NCisJCQkJPCEtLSAqKioqKioqKioqKioqKioqKiBUQkQgKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+DQorCQkJCTwhLS0gKioqKioqKioqKioqKioqKiogVEJEICoqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPg0KKwkJCQk8IS0tICoqKioqKioqKioqKioqKioqIFRCRCAqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT4NCisJCQkJPCEtLSAqKioqKioqKioqKioqKioqKiBUQkQgKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+DQorCQkJCTwhLS0gKioqKioqKioqKioqKioqKiogVEJEICoqKioqKioqKioqKioqKioqKioqKioqKioqIC0tPg0KKwkJCQk8IS0tICoqKioqKioqKioqKioqKioqIFRCRCAqKioqKioqKioqKioqKioqKioqKioqKioqKiAtLT4NCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCA+PCEtLSBiZ2NvbG9yPSIjRUVFRUVFIiAtLT4KKyAgICAgICAgPGZvbnQgY29sb3I9IiMwMDAwMDAiIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSJVc2luZyBTdWJ2ZXJzaW9uIG9uIFdpbmRvd3Mgd2l0aCBjeWd3aW4iPjxzdHJvbmc+VXNpbmcgU3VidmVyc2lvbiBvbiBXaW5kb3dzIHdpdGggY3lnd2luPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJSWYgeW91IHVzZSBTdWJ2ZXJzaW9uIG9uIFdpbmRvd3MgdW5kZXIgY3lnd2luLCB5b3UgbWF5IGZpbmQgdGhhdCB0aGUNCisJCQkJU3VidmVyc2lvbiBjbGllbnQgYXV0b21hdGljYWxseSBhc3NpZ25zIHRoZSBleGVjdXRhYmxlIHByb3BlcnR5IHRvDQorCQkJCW5vbi1leGVjdXRhYmxlIGZpbGVzLiBJbiB0aGF0IGNhc2UsIHlvdSB3b3VsZCBzZWUgdGhpcyBhdCB0aGUgYm90dG9tDQorCQkJCW9mDQorCQkJCWFuDQorCQkJCTxlbT5zdm4gZGlmZjwvZW0+DQorCQkJCW9mIHRoZSBmaWxlOg0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcmU+DQorCQkJCVByb3BlcnR5IGNoYW5nZXMgb246IHRlc3Qvc3FsL2RlcmJ5L2RhdGFzdG9yZWlkZW50aXR5L3NjaGVtYTEuc3FsDQorCQkJCV9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCisJCQkJTmFtZTogc3ZuOmV4ZWN1dGFibGUNCisJCQkJKyAqDQorCQkJPC9wcmU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5UaGlzIHNlY3Rpb24gZXhwbGFpbnMgdGhlIHNvdXJjZSBvZiB0aGUgcHJvYmxlbSBhbmQgc3VnZ2VzdHMgc29tZQ0KKwkJCQlhY3Rpb25zIHRvIGF2b2lkIGl0Lg0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgYmdjb2xvcj0iI0VGRUZFRiI+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IkJhY2tncm91bmQiPjxzdHJvbmc+QmFja2dyb3VuZDwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5TdWJ2ZXJzaW9uIGNhcnJpZXMgZXhlY3V0YWJsZSBpbmZvcm1hdGlvbiBpbiB0aGUgYnVpbHQtaW4NCisJCQkJCXByb3BlcnR5DQorCQkJCQljYWxsZWQgc3ZuOmV4ZWN1dGFibGUuIFRoaXMgcHJvcGVydHksIHVubGlrZSBvdGhlcnMsIG1heSBiZSBwcmVzZW50DQorCQkJCQlvciBhYnNlbnQsIGJ1dCBpdCBoYXMgbm8gdmFsdWUuIFlvdSBjYW4gYWRkIGl0IG9yIGRlbGV0ZSBpdCwgYnV0IHlvdQ0KKwkJCQkJY2Fubm90IGNoYW5nZSBpdHMgdmFsdWUuDQorCQkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPkluIHRoZW9yeSwgU3VidmVyc2lvbiBpZ25vcmVzIFdpbmRvd3MgZmlsZSBwZXJtaXNzaW9ucyBhbmQgYnkNCisJCQkJCWRlZmF1bHQNCisJCQkJCWRvZXMgbm90IHNldCBzdm46ZXhlY3V0YWJsZS4gSG93ZXZlciwgY3lnd2luIHN2biBhY3RzIGxpa2UgVW5peCBzdm4gYW5kDQorCQkJCQlkZXRlcm1pbmVzIHRoZSBzdm46ZXhlY3V0YWJsZSBwcm9wZXJ0eSBiYXNlZCBvbiBmaWxlIHBlcm1pc3Npb25zLg0KKwkJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJCUlmIHlvdSBjcmVhdGUgYSBmaWxlIGZyb20gdGhlIGN5Z3dpbiBjb21tYW5kIGxpbmUsIGJ5IGRlZmF1bHQgaXQgaXMNCisJCQkJCWV4ZWN1dGFibGUgb25seSBpZiB0aGUgZmlsZW5hbWUgZW5kcyB3aXRoIC5iYXQsIC5jb20gb3IgLmV4ZSwgb3IgaWYNCisJCQkJCWl0cw0KKwkJCQkJY29udGVudCBzdGFydHMgd2l0aCAjIS4gW1RoaXMgaXMgd2hhdCB0aGUgZG9jIHNheXMsIGJ1dCB5b3UgbWF5IHNlZSAteA0KKwkJCQkJZm9yIGFsbCBmaWxlcy5dIElmIHlvdSBjcmVhdGUgYSBmaWxlIHVzaW5nIGEgV2luZG93cyB0b29sLCBieSBkZWZhdWx0DQorCQkJCQlpdHMgV2luZG93cyBwZXJtaXNzaW9ucyBhcmUgZXhlY3V0YWJsZSBieSBhbGwuIEN5Z3dpbiBpbnRlcnByZXRzDQorCQkJCQl0aGUNCisJCQkJCVVuaXgtc3R5bGUgcGVybWlzc2lvbnMgdGhpcyB3YXkgYXMgd2VsbC4gSWYgdGhlIGZpbGUgaXMgZXhlY3V0YWJsZSBieSBhbGwsDQorCQkJCQljeWd3aW4gc3ZuIHNldHMgdGhlIHN2bjpleGVjdXRhYmxlIHByb3BlcnR5IG9uIHRoZSBmaWxlIHdoZW4geW91DQorCQkJCQlpbnZva2UNCisJCQkJCTxlbT5zdm4gYWRkPC9lbT4NCisJCQkJCS4NCisJCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgYmdjb2xvcj0iI0VGRUZFRiI+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IlJlbW92aW5nIGV4aXN0aW5nIGV4ZWN1dGFibGUgcHJvcGVydGllcyBmcm9tIHRoZSByZXBvc2l0b3J5Ij48c3Ryb25nPlJlbW92aW5nIGV4aXN0aW5nIGV4ZWN1dGFibGUgcHJvcGVydGllcyBmcm9tIHRoZSByZXBvc2l0b3J5PC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPllvdSBjYW4gdXNlIHN2biBwcm9wZGVsIHRvIHJlbW92ZSB0aGUgc3ZuOmV4ZWN1dGFibGUgcHJvcGVydHkNCisJCQkJCWZyb20geW91cg0KKwkJCQkJd29ya2luZyBjb3B5Lg0KKwkJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJlPg0KKwkJCQkJc3ZuIHByb3BkZWwgLVIgc3ZuOmV4ZWN1dGFibGUgLg0KKwkJCQk8L3ByZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPndpbGwgcmVjdXJzaXZlbHkgcmVtb3ZlIHRoZSBzdm46ZXhlY3V0YWJsZSBwcm9wZXJ0eSBmcm9tIGFsbCBvZg0KKwkJCQkJdGhlDQorCQkJCQlmaWxlcyBiZWxvdyB0aGUgY3VycmVudCBkaXJlY3RvcnkuIFlvdSBjYW4gdXNlIHRoaXMgYW5kIGNvbW1pdCB0aGUNCisJCQkJCWZpbGVzIHRvIGNsZWFuIHRoZSByZXBvc2l0b3J5IGlmIG5lY2Vzc2FyeS4NCisJCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgYmdjb2xvcj0iI0VGRUZFRiI+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IlByZXZlbnRpbmcgU3VidmVyc2lvbiBmcm9tIGFkZGluZyB1bndhbnRlZCBleGVjdXRhYmxlICBwcm9wZXJ0aWVzIj48c3Ryb25nPlByZXZlbnRpbmcgU3VidmVyc2lvbiBmcm9tIGFkZGluZyB1bndhbnRlZCBleGVjdXRhYmxlICBwcm9wZXJ0aWVzPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQkJV2luZG93cy9jeWd3aW4gdXNlcnMgd2hvIGRvbid0IHdhbnQgdG8gaGF2ZSB0byB0aGluayBhYm91dCB1c2luZw0KKwkJCQkJPGVtPnN2bg0KKwkJCQkJCXByb3BkZWwNCisJCQkJCTwvZW0+DQorCQkJCQlvcg0KKwkJCQkJPGVtPmNobW9kPC9lbT4NCisJCQkJCW9uIGVhY2ggYWRkZWQgZmlsZSBjYW4gdXNlIGEgbm9uLWN5Z3dpbg0KKwkJCQkJdmVyc2lvbiBvZiBzdm4uIFRoZSBTdWJ2ZXJzaW9uIDEuMi4zIFdpbjMyIGJpbmFyaWVzLCBkb3dubG9hZGFibGUgZnJvbSB0aGUNCisJCQkJCWxpbmsgYXQgdGhlIGJvdHRvbSBvZg0KKwkJCQkJPGEgcmVsPSJub2ZvbGxvdyIgaHJlZj0iaHR0cDovL3N1YnZlcnNpb24udGlncmlzLm9yZy9wcm9qZWN0X3BhY2thZ2VzLmh0bWwiPg0KKwkJCQkJCWh0dHA6Ly9zdWJ2ZXJzaW9uLnRpZ3Jpcy5vcmcvcHJvamVjdF9wYWNrYWdlcy5odG1sDQorCQkJCQk8L2E+DQorCQkJCQksIGFwcGVhciB0byB3b3JrDQorCQkJCQl3ZWxsLiBBZnRlciBpbnN0YWxsYXRpb24gYWRkIHRoZSBzdm4uZXhlIGxvY2F0aW9uIHRvIHlvdXIgV2luZG93cyBQQVRIDQorCQkJCQl2YXJpYWJsZS4gSWYgeW91IGFyZSBzd2l0Y2hpbmcgZnJvbSBjeWd3aW4gc3ZuIHRvIFdpbjMyIHN2bg0KKwkJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b2wgdHlwZT0iMSI+DQorCQkJCQk8bGk+DQorCQkJCQkJPHA+UmVtb3ZlIHRoZSBzdWJ2ZXJzaW9uIGNvbXBvbmVudCBmcm9tIHlvdXIgY3lnd2luIGluc3RhbGxhdGlvbg0KKwkJCQkJCQliZWNhdXNlIHdoZW4gc3ZuIGlzIGludm9rZWQgZnJvbSBhIGN5Z3dpbiB3aW5kb3csIHRoZSBjeWd3aW4NCisJCQkJCQkJdmVyc2lvbiBpcw0KKwkJCQkJCQlmb3VuZCBldmVuIGlmIHlvdXIgY3lnd2luL2JpbiBkaXJlY3RvcnkgaXMgbGF0ZXIgb24gdGhlIHBhdGguIChJbiB0aGUNCisJCQkJCQkJU2VsZWN0IFBhY2thZ2VzIHdpbmRvdyBvZiB0aGUgc2V0dXAgd2l6YXJkLCBuYXZpZ2F0ZSB0byB0aGUNCisJCQkJCQkJc3VidmVyc2lvbg0KKwkJCQkJCQlwYWNrYWdlIGluIHRoZSBEZXZlbC4gY2F0ZWdvcnkuIENsaWNrIG9uIHRoZSBzdGF0dXMgaWNvbiB1bnRpbCBVbmluc3RhbGwNCisJCQkJCQkJaXMgZGlzcGxheWVkLiBDbGljayBuZXh0IGFuZCBjb250aW51ZSB0aHJvdWdoIHRoZSB3aXphcmQgdW50aWwNCisJCQkJCQkJaW5zdGFsbGF0aW9uDQorCQkJCQkJCWlzIGNvbXBsZXRlLikNCisJCQkJCQk8L3A+DQorCQkJCQk8L2xpPg0KKwkJCQkJPGxpPg0KKwkJCQkJCTxwPkNvcHkgdGhlIHNlcnZlcnMgZmlsZSBhbmQgdGhlIGF1dGggZm9sZGVyIGZyb20gdGhlIHN5Z3dpbg0KKwkJCQkJCQl+Ly5zdWJ2ZXJzaW9uDQorCQkJCQkJCWRpcmVjdG9yeSB0byBDOlxEb2N1bWVudHMgYW5kDQorCQkJCQkJCVNldHRpbmdzXCZsdDt1c2VyJmd0O1xBcHBsaWNhdGlvbiBEYXRhXFN1YnZlcnNpb24gdXNlZCBieSBXaW4zMg0KKwkJCQkJCQlzdWJ2ZXJzaW9uLg0KKwkJCQkJCTwvcD4NCisJCQkJCTwvbGk+DQorCQkJCTwvb2w+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5Ob3RlIHRoYXQgd2luZG93cyBzdm4gdXNlcyBiYWNrc2xhc2ggYXMgdGhlIHBhdGggc2VwYXJhdG9yIHdoZW4NCisJCQkJCWRpc3BsYXlpbmcgZmlsZSBuYW1lcy4gWW91IGNhbm5vdCBqdXN0IGNvcHkgYW5kIHBhc3RlIHRoaXMgZmlsZQ0KKwkJCQkJbmFtZQ0KKwkJCQkJdG8gYW5vdGhlciBzdm4gY29tbWFuZCB3aGVuIHJ1bm5pbmcgZnJvbSB3aXRoaW4gYSBjeWd3aW4gc2hlbGwuDQorCQkJCQlZb3UgbmVlZCB0byBlbmNsb3NlIHRoZSBmaWxlIG5hbWUgaW50byBkb3VibGUgcXVvdGVzLg0KKwkJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5BbHRlcm5hdGl2ZWx5LCBXaW5kb3dzIHVzZXJzIGNhbiBzZXQgZmlsZSBwZXJtaXNzaW9ucyBpbiBXaW5kb3dzDQorCQkJCQlFeHBsb3Jlci4gKFJpZ2h0LWNsaWNrIG9uIHRoZSB0b3AtbGV2ZWwgZm9sZGVyICZhbXA7IHNlbGVjdA0KKwkJCQkJUHJvcGVydGllcy4NCisJCQkJCVNlbGVjdCB0aGUgU2VjdXJpdHkgdGFiLiBDbGljayBBZHZhbmNlZC4gUmVtb3ZlIGFsbCBpbnN0YW5jZXMgb2YNCisJCQkJCVJlYWQgJmFtcDsgRXhlY3V0ZSBmcm9tIHRoZSBQZXJtaXNzaW9uIEVudHJpZXMuIENsaWNrICJSZXNldA0KKwkJCQkJcGVybWlzc2lvbnMNCisJCQkJCW9uIGFsbCBjaGlsZCBvYmplY3RzIGFuZCBlbmFibGUgcHJvcG9nYXRpb25zIG9mIGluaGVyaXRhYmxlDQorCQkJCQlwZXJtaXNzaW9ucyIuDQorCQkJCQlDbGljayBBcHBseS4gT0suIE9LLikgWW91IHdpbGwgaGF2ZSB0byBkbyB0aGlzIGFnYWluIHdoZW4geW91IGRvIGEgY2xlYW4NCisJCQkJCWNoZWNrb3V0IHRvIGEgbmV3IGRpcmVjdG9yeS4NCisJCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPCEtLSBGT09URVIgLS0+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGhyIG5vc2hhZGU9Im5vc2hhZGUiIHNpemU9IjEiLz4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBhbGlnbj0iY2VudGVyIj48Zm9udCBjb2xvcj0iIzEyMzQ2NSIgc2l6ZT0iLTEiPjxlbT4KKyAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0ICYjMTY5OyAyMDAzLTIwMTMsIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorICAgICAgICAgICAgICAgICAgICA8L2VtPjwvZm9udD48L2Rpdj4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9ib2R5PgorICAgIDwvaHRtbD4KKzwhLS0gZW5kIHRoZSBwcm9jZXNzaW5nIC0tPgorCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCmRpZmYgLS1naXQgYS9kb2NzL3RlYW0tbGlzdC1ydS5odG1sIGIvZG9jcy90ZWFtLWxpc3QtcnUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZmE4YjU0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy90ZWFtLWxpc3QtcnUuaHRtbApAQCAtMCwwICsxLDc4MSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CisKKzwhLS0KK0NvcHlyaWdodCAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK3lvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCitodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworCis8IS0tIENvbnRlbnQgU3R5bGVzaGVldCBmb3IgU2l0ZSAtLT4KKworICAgICAgICAKKzwhLS0gc3RhcnQgdGhlIHByb2Nlc3NpbmcgLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDwhLS0gR0VORVJBVEVEIEZJTEUsIERPIE5PVCBFRElULCBFRElUIFRIRSBYTUwgRklMRSBJTiB4ZG9jcyBJTlNURUFEISAtLT4KKyAgICA8IS0tIE1haW4gUGFnZSBTZWN0aW9uIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8aHRtbD4KKyAgICAgICAgPGhlYWQ+CisgICAgICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIvPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSIKKwkJCVNlYmFzdGlhbiBXYWduZXIKKwkJIj4KKyAgICAgICAgICAgIDxtZXRhIG5hbWU9ImVtYWlsIiBjb250ZW50PSJzZWJhd2FnbmVyQGFwYWNoZS5vcmciPgorICAgICAgICAgICAgCisgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgIDx0aXRsZT5BcGFjaGUgT3Blbk1lZXRpbmdzIC0g0JrQvtC80LDQvdC00LAg0L/RgNC+0LXQutGC0LA8L3RpdGxlPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL29wZW5tZWV0aW5ncy5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2pxdWVyeS11aS5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2NvaW4tc2xpZGVyLXN0eWxlcy5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2NvbG9yYm94LmNzcyIgLz4KKyAgICAgICAgICAgIAorCQkJPCEtLSBBZGQgalF1ZXJ5IGxpYnJhcnkgLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9qcXVlcnktMS43LjEubWluLmpzIj48L3NjcmlwdD4KKwkJCisJCQk8IS0tIEFkZCBjb2luc2xpZGVyIHBsdWdpbnMgLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9jb2luLXNsaWRlci5taW4uanMiPjwvc2NyaXB0PgorCQkJCisJCQk8IS0tIEFkZCBjb2xvcmJveCBwbHVnaW4gLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9qcXVlcnkuY29sb3Jib3guanMiPjwvc2NyaXB0PgorCQkKKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkuY29yZS5qcyI+PC9zY3JpcHQ+CisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLndpZGdldC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5hY2NvcmRpb24uanMiPjwvc2NyaXB0PgorCQkJCisJCQk8c2NyaXB0PgorCQkJJChmdW5jdGlvbigpIHsKKwkJCQkkKCAiI2FjY29yZGlvbiIgKS5hY2NvcmRpb24oeworCQkJCQlhdXRvSGVpZ2h0OiBmYWxzZSwKKwkJCQkJbmF2aWdhdGlvbjogdHJ1ZSwKKwkJCQkJbmF2aWdhdGlvbkZpbHRlcjogZnVuY3Rpb24gKCkgeworCQkJCQkJdmFyIHNpZGViYXJIcmVmQXJyYXkgPSB0aGlzLmhyZWYuc3BsaXQoIi8iKTsKKyAgICAJCQkJCXZhciBzaWRlQmFyTGFzdFN0cmluZyA9IHNpZGViYXJIcmVmQXJyYXlbc2lkZWJhckhyZWZBcnJheS5sZW5ndGggLSAxXS50b0xvd2VyQ2FzZSgpOworCQkJCQkJCisJCQkJCQlpZiAoc2lkZUJhckxhc3RTdHJpbmcuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJCQkJcmV0dXJuIGZhbHNlOworCQkJCQkJfQorCQkJCQkJCisJCQkJCQkJCQkJCQkvKiBkb2N1bWVudC5sb2NhdGlvbi5ocmVmICovCisJCQkJCQl2YXIgY3VycmVudFNlY3Rpb24gPSAiIjsKKwkJCQkJCQorCQkJCQkJdmFyIGN1cnJlbnRMb2NhdGlvbiA9ICIiOworCQkJCQkJdmFyIGN1cnJlbnRMaW5rID0gIiI7CisJCQkJCQlpZiAoZmFsc2UpIHsKKwkJCQkJCQorCQkJCQkJfQorICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9pbmRleC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9pbmRleC5odG1sIi5zdWJzdHIoMSwgIi9pbmRleC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2xpY2Vuc2UuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbGljZW5zZS5odG1sIi5zdWJzdHIoMSwgIi9saWNlbnNlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iLnN1YnN0cigxLCAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kb3dubG9hZHMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZG93bmxvYWRzLmh0bWwiLnN1YnN0cigxLCAiL2Rvd25sb2Fkcy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIuc3Vic3RyKDEsICIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luc3RhbGxhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9pbnN0YWxsYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvaW5zdGFsbGF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVXBncmFkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9VcGdyYWRlLmh0bWwiLnN1YnN0cigxLCAiL1VwZ3JhZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIi5zdWJzdHIoMSwgImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29tbWFuZExpbmVBZG1pbi5odG1sIi5zdWJzdHIoMSwgIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2dldC1pbnZvbHZlZC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2dldC1pbnZvbHZlZC5odG1sIi5zdWJzdHIoMSwgIi9nZXQtaW52b2x2ZWQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi90ZWFtLWxpc3QuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi90ZWFtLWxpc3QuaHRtbCIuc3Vic3RyKDEsICIvdGVhbS1saXN0Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbWFpbC1saXN0cy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL21haWwtbGlzdHMuaHRtbCIuc3Vic3RyKDEsICIvbWFpbC1saXN0cy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIuc3Vic3RyKDEsICJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvc3ZuLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9zdm4uaHRtbCIuc3Vic3RyKDEsICIvc3ZuLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIi5zdWJzdHIoMSwgImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZGVwZW5kZW5jaWVzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kZXBlbmRlbmNpZXMuaHRtbCIuc3Vic3RyKDEsICIvZGVwZW5kZW5jaWVzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiLnN1YnN0cigxLCAiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSlVuaXRUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9KVW5pdFRlc3RpbmcuaHRtbCIuc3Vic3RyKDEsICIvSlVuaXRUZXN0aW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTWFudWFsVGVzdGluZy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTWFudWFsVGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9NYW51YWxUZXN0aW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVsZWFzZUd1aWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZWxlYXNlR3VpZGUuaHRtbCIuc3Vic3RyKDEsICIvUmVsZWFzZUd1aWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2Vic2l0ZUd1aWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9XZWJzaXRlR3VpZGUuaHRtbCIuc3Vic3RyKDEsICIvV2Vic2l0ZUd1aWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1NvYXBSZXN0QVBJLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Tb2FwUmVzdEFQSS5odG1sIi5zdWJzdHIoMSwgIi9Tb2FwUmVzdEFQSS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RBUElTYW1wbGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1Jlc3RBUElTYW1wbGUuaHRtbCIuc3Vic3RyKDEsICIvUmVzdEFQSVNhbXBsZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0xkYXBBbmRBRFMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0xkYXBBbmRBRFMuaHRtbCIuc3Vic3RyKDEsICIvTGRhcEFuZEFEUy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0Vycm9yc1RhYmxlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9FcnJvcnNUYWJsZS5odG1sIi5zdWJzdHIoMSwgIi9FcnJvcnNUYWJsZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Nb29kbGVQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTW9vZGxlUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL01vb2RsZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Nha2FpUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1Nha2FpUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1Nha2FpUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSmlyYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9KaXJhUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0ppcmFQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Kb29tbGFQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSm9vbWxhUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0pvb21sYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0RydXBhbFBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9EcnVwYWxQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvRHJ1cGFsUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQml0cml4UGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0JpdHJpeFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9CaXRyaXhQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVkbWluZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZWRtaW5lUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1JlZG1pbmVQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9JQk1EQjJDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JQk1EQjJDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvSUJNREIyQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9PcmFjbGVDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9PcmFjbGVDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvT3JhY2xlQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NeVNRTENvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL015U1FMQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL015U1FMQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1Bvc3RncmVzQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL1Bvc3RncmVzQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0xhbmd1YWdlRWRpdG9yLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIuc3Vic3RyKDEsICIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiLnN1YnN0cigxLCAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0VkaXRUZW1wbGF0ZXMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9FZGl0VGVtcGxhdGVzLmh0bWwiLnN1YnN0cigxLCAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUG9ydFNldHRpbmdzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9ydFNldHRpbmdzLmh0bWwiLnN1YnN0cigxLCAiL1BvcnRTZXR0aW5ncy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiLnN1YnN0cigxLCAiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiLnN1YnN0cigxLCAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0Rhc2hib2FyZC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0Rhc2hib2FyZC5odG1sIi5zdWJzdHIoMSwgIi9EYXNoYm9hcmQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0hvdEtleXMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Ib3RLZXlzLmh0bWwiLnN1YnN0cigxLCAiL0hvdEtleXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViYXBwTmFtZVBhdGguaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJhcHBOYW1lUGF0aC5odG1sIi5zdWJzdHIoMSwgIi9XZWJhcHBOYW1lUGF0aC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTmF2aWdhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL05hdmlnYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvTmF2aWdhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIuc3Vic3RyKDEsICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIuc3Vic3RyKDEsICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIi5zdWJzdHIoMSwgIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SVE1QU0FuZEhUVFBTLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUlRNUFNBbmRIVFRQUy5odG1sIi5zdWJzdHIoMSwgIi9SVE1QU0FuZEhUVFBTLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiLnN1YnN0cigxLCAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiLnN1YnN0cigxLCAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ2x1c3RlcmluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NsdXN0ZXJpbmcuaHRtbCIuc3Vic3RyKDEsICIvQ2x1c3RlcmluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZXRWZXJzaW9uSW5mby5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dldFZlcnNpb25JbmZvLmh0bWwiLnN1YnN0cigxLCAiL0dldFZlcnNpb25JbmZvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCSAgICAJCQkJCQorICAgIAkJCQkJY3VycmVudExpbmsgPSBjdXJyZW50TGluay50b0xvd2VyQ2FzZSgpOworICAgIAkJCQkJY3VycmVudExvY2F0aW9uID0gY3VycmVudExvY2F0aW9uLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQkKKwkJCQkJCXJldHVybiBzaWRlQmFyTGFzdFN0cmluZyA9PSBjdXJyZW50TGluaysiIyIrY3VycmVudExvY2F0aW9uOworCQkJCQl9CisJCQkJfSk7CisJCQl9KTsKKwkJCTwvc2NyaXB0PgorCQkJCisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisJCQkJJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CisJCQkJCSQoJy5mYW5jeWJveC1idXR0b25zJykuY29sb3Jib3goe3JlbDonZmFuY3lib3gtYnV0dG9ucycsd2lkdGg6Ijc1JSIsIGhlaWdodDoiNzUlIn0pOworCQkJCQkkKCcjYWNjb3JkaW9uIGEnKS5lYWNoKGZ1bmN0aW9uKCkgeworCQkJCSAgICAgIHZhciBhID0gJCh0aGlzKTsKKwkJCQkgICAgICB2YXIgaHJlZiA9IGEuYXR0cigiaHJlZiIpOworCQkJCSAgICAgIGlmIChocmVmLmluZGV4T2YoIiMiKSA9PSAtMSkgeworCQkJCSAgICAgIAkgIHZhciBjb21wYXJlSXQgPSBocmVmLnN1YnN0cigyLCBocmVmLmxlbmd0aCk7CisJCQkJCSAgICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoY29tcGFyZUl0KSE9IC0xKSB7CisJCQkJCSAgICAgICBhLmFkZENsYXNzKCdhY3RpdmUnKTsKKwkJCQkJICAgICAgfQorCQkJCSAgICAgIH0KKwkJCQkgICAgfSk7CisJCQkJCSQoJyNjb2luLXNsaWRlcicpLmNvaW5zbGlkZXIoeyB3aWR0aDogNjQwLGhlaWdodDogNDAwLCBkZWxheTogNDAwMCAgfSk7CQkJCQkKKwkJCQl9KTsKKwkJCTwvc2NyaXB0PgkKKwkJCQkJCQorCQkJPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKwkJCQkuZmFuY3lib3gtY3VzdG9tIC5mYW5jeWJveC1vdXRlciB7CisJCQkJCWJveC1zaGFkb3c6IDAgMCA1MHB4ICMyMjI7CisJCQkJfQorCQkJPC9zdHlsZT4KKyAgICAgICAgPC9oZWFkPgorCisgICAgICAgIDxib2R5IGJnY29sb3I9IiNmZmZmZmYiIHRleHQ9IiMwMDAwMDAiIGxpbms9IiMxMjM0NjUiIHZsaW5rPSIjMTIzNDY1IiBhbGluaz0iIzAwMDAwMCI+ICAKKyAgICAgICAgCTxkaXYgY2xhc3M9Im1haW5ib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgCTxkaXYgY2xhc3M9InN1cGVyYm9keSIgc3R5bGU9IndpZHRoOiAxMDAlOyI+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiPgorICAgICAgICAgICAgICAgIDwhLS0gVE9QIElNQUdFIC0tPgorICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0Ij4KKzxhIGhyZWY9Imh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy8iPjxpbWcgc3JjPSIuL2ltYWdlcy9sb2dvLTIuanBnIiBhbHQ9IkFwYWNoZSBPcGVuTWVldGluZ3MiIGJvcmRlcj0iMCIvPjwvYT4KKzwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODAlIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIiA+CisJPGEgaHJlZj0iZGVtby5odG1sIj5EZW1vPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9ImRvd25sb2Fkcy5odG1sIiB0YXJnZXQ9Il9QQVJFTlQiPkRvd25sb2FkPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imluc3RhbGxhdGlvbi5odG1sIiB0YXJnZXQ9Il9QQVJFTlQiPkluc3RhbGxhdGlvbjwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUyIgdGFyZ2V0PSJfQkxBTksiPldpa2k8L2E+CisJPHNwYW4+Jm5ic3A7PC9zcGFuPgorPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iNCI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGhyIG5vc2hhZGU9Im5vc2hhZGUiIHNpemU9IjEiLz4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDwhLS0gTEVGVCBTSURFIE5BVklHQVRJT04gLS0+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCIgbm93cmFwPSJub3dyYXAiPgorCisgICAgICAgICAgICAgICAgICAgIDwhLS0gc3BlY2lhbCBBQ29uIExvZ28gLSBsZWF2ZSBoZXJlIGZvciBuZXh0IHRpbWUKKyAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL2FwYWNoZWNvbi5jb20vMjAwNS9VUy8iPgorICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHA6Ly9hcGFjaGUub3JnL2ltYWdlcy9hYzIwMDV1c19ibHVlXzEyNXgxMjUuanBnIiBoZWlnaHQ9IjEyNSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjEyNSIgYm9yZGVyPSIwIiBhbHQ9IkFwYWNoZUNvbiBVUyAyMDA1IiAvPgorICAgICAgICAgICAgICAgICAgICA8L2E+ICAtLT4KKworICAgICAgICAgICAgICAgICAgIDwhLS0gcmVndWxhciBtZW51IC0tPgorCisgICAgICAgICAgICAgICAgICAgIAorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDxkaXYgaWQ9ImFjY29yZGlvbiIgc3R5bGU9IndpZHRoOiAxMDAlIj4KKyAgICAKKyAgICAgICAgICAgIAk8aDM+PGEgaHJlZj0iI0dlbmVyYWwiPkdlbmVyYWw8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luZGV4Lmh0bWwiPkhvbWU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2xpY2Vuc2UuaHRtbCI+TGljZW5zZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iPkFTRjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZG93bmxvYWRzLmh0bWwiPkRvd25sb2FkczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiPkNvbW1lcmNpYWwgU3VwcG9ydDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI+SW5zdGFsbGF0aW9uIGFuZCBVcGdyYWRlPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9pbnN0YWxsYXRpb24uaHRtbCI+SW5zdGFsbGF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9VcGdyYWRlLmh0bWwiPlVwZ3JhZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiPlR1dG9yaWFsczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQ29tbWFuZExpbmVBZG1pbi5odG1sIj5Db21tYW5kIExpbmUgQWRtaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0NvbW11bml0eSI+Q29tbXVuaXR5PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9nZXQtaW52b2x2ZWQuaHRtbCI+R2V0IEludm9sdmVkPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi90ZWFtLWxpc3QuaHRtbCI+Q29tbWl0dGVyczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbWFpbC1saXN0cy5odG1sIj5NYWlsaW5nIExpc3RzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iPldpa2k8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0RldmVsb3BtZW50Ij5EZXZlbG9wbWVudDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vc3ZuLmh0bWwiPlNvdXJjZSBDb2RlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyI+QnVncyAvIElzc3VlcyAoSklSQSk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2RlcGVuZGVuY2llcy5odG1sIj5EZXBlbmRlbmNpZXM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiPkJ1aWxkIEluc3RydWN0aW9uczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSlVuaXRUZXN0aW5nLmh0bWwiPkpVbml0IFRlc3Rpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01hbnVhbFRlc3RpbmcuaHRtbCI+TWFudWFsIFRlc3Rpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1JlbGVhc2VHdWlkZS5odG1sIj5SZWxlYXNlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9XZWJzaXRlR3VpZGUuaHRtbCI+V2Vic2l0ZSBHdWlkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjSW50ZWdyYXRpb24iPkludGVncmF0aW9uPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Tb2FwUmVzdEFQSS5odG1sIj5TT0FQL1JFU1QgQVBJPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZXN0QVBJU2FtcGxlLmh0bWwiPlJFU1QgQVBJIFNhbXBsZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTGRhcEFuZEFEUy5odG1sIj5MZGFwIGFuZCBBRFM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiPlZvSVAgYW5kIFNJUDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vRXJyb3JzVGFibGUuaHRtbCI+RXJyb3JzIHRhYmxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNQbHVnaW5zIj5QbHVnaW5zPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Nb29kbGVQbHVnaW4uaHRtbCI+TW9vZGxlIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU2FrYWlQbHVnaW4uaHRtbCI+U2FrYWkgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KaXJhUGx1Z2luLmh0bWwiPkppcmEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Kb29tbGFQbHVnaW4uaHRtbCI+Sm9vbWxhIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vRHJ1cGFsUGx1Z2luLmh0bWwiPkRydXBhbCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0JpdHJpeFBsdWdpbi5odG1sIj5CaXRyaXggUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiPkNvbmZsdWVuY2UgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TdWdhckNSTVBsdWdpbi5odG1sIj5TdWdhckNSTSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1JlZG1pbmVQbHVnaW4uaHRtbCI+UmVkbWluZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0NvbmZpZ3VyYXRpb24iPkNvbmZpZ3VyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkRCIFNhbXBsZSBDb25maWd1cmF0aW9uczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiPkFwYWNoZSBEZXJieTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSUJNREIyQ29uZmlnLmh0bWwiPklCTSBEQjI8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL09yYWNsZUNvbmZpZy5odG1sIj5PcmFjbGU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL015U1FMQ29uZmlnLmh0bWwiPk15U1FMPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIj5Qb3N0Z3JlczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TG9jYWxpemF0aW9uIGFuZCBsYW5ndWFnZXM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIj5JbnRlcm5hdGlvbmFsaXNhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTGFuZ3VhZ2VFZGl0b3IuaHRtbCI+TGFuZ3VhZ2VFZGl0b3I8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1RpbWVab25lSGFuZGxpbmcuaHRtbCI+VGltZVpvbmVIYW5kbGluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRWRpdFRlbXBsYXRlcy5odG1sIj5FZGl0VGVtcGxhdGVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5OQVQgUG9ydCBTZXR0aW5nczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1BvcnRTZXR0aW5ncy5odG1sIj5Qb3J0IHNldHRpbmdzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5QZXJmb3JtYW5jZTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiPkpWTSBwZXJmb3JtYW5jZSB0dW5pbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlVzZXIgSW50ZXJmYWNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIj5UaGVtZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0Rhc2hib2FyZC5odG1sIj5EYXNoYm9hcmQ8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiPldlYmNhbSByZXNvbHV0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiPlJvb20gbGF5b3V0IG9wdGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0hvdEtleXMuaHRtbCI+SG90IEtleXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkN1c3RvbWl6YXRpb248L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9XZWJhcHBOYW1lUGF0aC5odG1sIj5XZWJhcHAgbmFtZS9wYXRoPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9OYXZpZ2F0aW9uLmh0bWwiPk5hdmlnYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCI+Q2FsZW5kYXIgYW5kIHRpbWV6b25lPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiPkN1c3RvbSByb29tIHR5cGU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiPkN1c3RvbSBjdHlwdCBtZWNoYW5pc208L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiPkdlbmVyYWwgQ29uZmlndXJhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+U2VjdXJpdHk8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiPlJlc3RyaWN0ZWQgQWNjZXNzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9SVE1QU0FuZEhUVFBTLmh0bWwiPlJUTVBTIGFuZCBIVFRQUzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q29udmVydGVyczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCI+T3Blbk9mZmljZSBDb252ZXJ0ZXI8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCI+RkZNUEVHIFZlcnNpb24gU3dpdGNoPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5DbHVzdGVyaW5nPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2x1c3RlcmluZy5odG1sIj5DbHVzdGVyaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5NaXNjPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2V0VmVyc2lvbkluZm8uaHRtbCI+R2V0IHZlcnNpb24gaW5mbzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCisgICAgPC9kaXY+CisgICAgIAorICAgIDxici8+CisgICAgCisgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODAlIiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkID48IS0tIGJnY29sb3I9IiNFRUVFRUUiIC0tPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0idmVyZGFuYSxhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9Ik9wZW5NZWV0aW5ncyBDb21taXR0ZXJzIj48c3Ryb25nPk9wZW5NZWV0aW5ncyBDb21taXR0ZXJzPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJ0JvRjtC00LgsINC+0YLQvNC10YfQtdC90L3Ri9C1INC90LAg0Y3RgtC+0Lkg0YHRgtGA0LDQvdC40YbQtSwg0LjQvNC10Y7RgiDQtNC+0YHRgtGD0L8g0Log0YDQtdC/0L7Qt9C40YLQvtGA0LjRjiDQuNGB0YXQvtC00L3QvtCz0L4g0LrQvtC00LAgQXBhY2hlIE9wZW5tZWV0aW5ncy4gDQorCQkJCdCU0LDQvdC90LDRjyDRgdGC0YDQsNC90LjRhtCwINC/0YDQtdC00L3QsNC30L3QsNGH0LXQvdCwINC00LvRjyDRgtC+0LPQviwg0YfRgtC+0LHRiyDRgdC70YPQttC40YLRjCDQvtGB0L3QvtCy0L7QuSDQutCy0LDQu9C40YTQuNC60LDRhtC40L7QvdC90L7Qs9C+INC+0YLQsdC+0YDQsA0KKwkJCQnQv9C+INC/0YDQvtC10LrRgtCw0LwsINGC0YDQtdCx0YPRjtGJ0LjQvCDQvNC+0LTQuNGE0LjQutCw0YbQuNC4INC40YHRhdC+0LTQvdC+0LPQviDQutC+0LTQsCBPcGVubWVldGluZ3MuDQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRoIGJnY29sb3I9IiMwMzlhY2MiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICDQmNC80Y8KKyAgICA8L3RoPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICDQodC10LHQsNGB0YLRjNGP0L0g0JLQsNCz0L3QtdGACisgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAg0JDQu9C10LrRgdC10Lkg0KTQtdC00L7RgtC+0LIKKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICDQldCy0LPQtdC90LjQuSDQoNC+0LLQuNC90YHQutC40LkKKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICDQnNCw0LrRgdC40Lwg0KHQvtC70L7QtNC+0LLQvdC40LoKKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBPbGl2ZXIgQmVjaGVyZXIKKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBFdWdlbiBTY2h3ZXJ0CisgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgU2FzY2hhIFhhbmRlcgorICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIEpvaG5ueSBTdHJvbQorICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgINCT0LXRgNC80LDQvSDQk9GA0LXRhdC+0LIKKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICDQotC40LzRg9GAINCi0LvQtdGD0LrQtdC90L7QsgorICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIEFsdmFybyBCdXN0b3MKKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBHZW9yZ2UgS2lya2hhbQorICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIFN0ZXBoZW4gQ290dGhhbQorICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgINCY0YDQuNC90LAg0JDRgNGF0LjQv9C10YYKKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICDQktCw0YHQuNC70LjQuSDQlNC10LPRgtGP0YDQtdCyCisgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8IS0tIEZPT1RFUiAtLT4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGFsaWduPSJjZW50ZXIiPjxmb250IGNvbG9yPSIjMTIzNDY1IiBzaXplPSItMSI+PGVtPgorICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgJiMxNjk7IDIwMDMtMjAxMywgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisgICAgICAgICAgICAgICAgICAgIDwvZW0+PC9mb250PjwvZGl2PgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2JvZHk+CisgICAgPC9odG1sPgorPCEtLSBlbmQgdGhlIHByb2Nlc3NpbmcgLS0+CisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKZGlmZiAtLWdpdCBhL2RvY3MvdGVhbS1saXN0Lmh0bWwgYi9kb2NzL3RlYW0tbGlzdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzOGNiYjgKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL3RlYW0tbGlzdC5odG1sCkBAIC0wLDAgKzEsODkxIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KKworPCEtLQorQ29weXJpZ2h0IDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KK0xpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKK2h0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCitVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCitkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCitTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCitsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorCisKKzwhLS0gQ29udGVudCBTdHlsZXNoZWV0IGZvciBTaXRlIC0tPgorCisgICAgICAgIAorPCEtLSBzdGFydCB0aGUgcHJvY2Vzc2luZyAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPCEtLSBHRU5FUkFURUQgRklMRSwgRE8gTk9UIEVESVQsIEVESVQgVEhFIFhNTCBGSUxFIElOIHhkb2NzIElOU1RFQUQhIC0tPgorICAgIDwhLS0gTWFpbiBQYWdlIFNlY3Rpb24gLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDxodG1sPgorICAgICAgICA8aGVhZD4KKyAgICAgICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ii8+CisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9IgorCQkJU2ViYXN0aWFuIFdhZ25lcgorCQkiPgorICAgICAgICAgICAgPG1ldGEgbmFtZT0iZW1haWwiIGNvbnRlbnQ9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+CisgICAgICAgICAgICAKKyAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgPHRpdGxlPkFwYWNoZSBPcGVuTWVldGluZ3MgLSBQcm9qZWN0IFRlYW08L3RpdGxlPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL29wZW5tZWV0aW5ncy5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2pxdWVyeS11aS5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2NvaW4tc2xpZGVyLXN0eWxlcy5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2NvbG9yYm94LmNzcyIgLz4KKyAgICAgICAgICAgIAorCQkJPCEtLSBBZGQgalF1ZXJ5IGxpYnJhcnkgLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9qcXVlcnktMS43LjEubWluLmpzIj48L3NjcmlwdD4KKwkJCisJCQk8IS0tIEFkZCBjb2luc2xpZGVyIHBsdWdpbnMgLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9jb2luLXNsaWRlci5taW4uanMiPjwvc2NyaXB0PgorCQkJCisJCQk8IS0tIEFkZCBjb2xvcmJveCBwbHVnaW4gLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9qcXVlcnkuY29sb3Jib3guanMiPjwvc2NyaXB0PgorCQkKKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkuY29yZS5qcyI+PC9zY3JpcHQ+CisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLndpZGdldC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5hY2NvcmRpb24uanMiPjwvc2NyaXB0PgorCQkJCisJCQk8c2NyaXB0PgorCQkJJChmdW5jdGlvbigpIHsKKwkJCQkkKCAiI2FjY29yZGlvbiIgKS5hY2NvcmRpb24oeworCQkJCQlhdXRvSGVpZ2h0OiBmYWxzZSwKKwkJCQkJbmF2aWdhdGlvbjogdHJ1ZSwKKwkJCQkJbmF2aWdhdGlvbkZpbHRlcjogZnVuY3Rpb24gKCkgeworCQkJCQkJdmFyIHNpZGViYXJIcmVmQXJyYXkgPSB0aGlzLmhyZWYuc3BsaXQoIi8iKTsKKyAgICAJCQkJCXZhciBzaWRlQmFyTGFzdFN0cmluZyA9IHNpZGViYXJIcmVmQXJyYXlbc2lkZWJhckhyZWZBcnJheS5sZW5ndGggLSAxXS50b0xvd2VyQ2FzZSgpOworCQkJCQkJCisJCQkJCQlpZiAoc2lkZUJhckxhc3RTdHJpbmcuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJCQkJcmV0dXJuIGZhbHNlOworCQkJCQkJfQorCQkJCQkJCisJCQkJCQkJCQkJCQkvKiBkb2N1bWVudC5sb2NhdGlvbi5ocmVmICovCisJCQkJCQl2YXIgY3VycmVudFNlY3Rpb24gPSAiIjsKKwkJCQkJCQorCQkJCQkJdmFyIGN1cnJlbnRMb2NhdGlvbiA9ICIiOworCQkJCQkJdmFyIGN1cnJlbnRMaW5rID0gIiI7CisJCQkJCQlpZiAoZmFsc2UpIHsKKwkJCQkJCQorCQkJCQkJfQorICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9pbmRleC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9pbmRleC5odG1sIi5zdWJzdHIoMSwgIi9pbmRleC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2xpY2Vuc2UuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbGljZW5zZS5odG1sIi5zdWJzdHIoMSwgIi9saWNlbnNlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iLnN1YnN0cigxLCAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kb3dubG9hZHMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZG93bmxvYWRzLmh0bWwiLnN1YnN0cigxLCAiL2Rvd25sb2Fkcy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIuc3Vic3RyKDEsICIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luc3RhbGxhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9pbnN0YWxsYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvaW5zdGFsbGF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVXBncmFkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9VcGdyYWRlLmh0bWwiLnN1YnN0cigxLCAiL1VwZ3JhZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIi5zdWJzdHIoMSwgImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29tbWFuZExpbmVBZG1pbi5odG1sIi5zdWJzdHIoMSwgIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2dldC1pbnZvbHZlZC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2dldC1pbnZvbHZlZC5odG1sIi5zdWJzdHIoMSwgIi9nZXQtaW52b2x2ZWQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi90ZWFtLWxpc3QuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi90ZWFtLWxpc3QuaHRtbCIuc3Vic3RyKDEsICIvdGVhbS1saXN0Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbWFpbC1saXN0cy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL21haWwtbGlzdHMuaHRtbCIuc3Vic3RyKDEsICIvbWFpbC1saXN0cy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIuc3Vic3RyKDEsICJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvc3ZuLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9zdm4uaHRtbCIuc3Vic3RyKDEsICIvc3ZuLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIi5zdWJzdHIoMSwgImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZGVwZW5kZW5jaWVzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kZXBlbmRlbmNpZXMuaHRtbCIuc3Vic3RyKDEsICIvZGVwZW5kZW5jaWVzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiLnN1YnN0cigxLCAiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSlVuaXRUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9KVW5pdFRlc3RpbmcuaHRtbCIuc3Vic3RyKDEsICIvSlVuaXRUZXN0aW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTWFudWFsVGVzdGluZy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTWFudWFsVGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9NYW51YWxUZXN0aW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVsZWFzZUd1aWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZWxlYXNlR3VpZGUuaHRtbCIuc3Vic3RyKDEsICIvUmVsZWFzZUd1aWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2Vic2l0ZUd1aWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9XZWJzaXRlR3VpZGUuaHRtbCIuc3Vic3RyKDEsICIvV2Vic2l0ZUd1aWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1NvYXBSZXN0QVBJLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Tb2FwUmVzdEFQSS5odG1sIi5zdWJzdHIoMSwgIi9Tb2FwUmVzdEFQSS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RBUElTYW1wbGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1Jlc3RBUElTYW1wbGUuaHRtbCIuc3Vic3RyKDEsICIvUmVzdEFQSVNhbXBsZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0xkYXBBbmRBRFMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0xkYXBBbmRBRFMuaHRtbCIuc3Vic3RyKDEsICIvTGRhcEFuZEFEUy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0Vycm9yc1RhYmxlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9FcnJvcnNUYWJsZS5odG1sIi5zdWJzdHIoMSwgIi9FcnJvcnNUYWJsZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Nb29kbGVQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTW9vZGxlUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL01vb2RsZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Nha2FpUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1Nha2FpUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1Nha2FpUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSmlyYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9KaXJhUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0ppcmFQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Kb29tbGFQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSm9vbWxhUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0pvb21sYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0RydXBhbFBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9EcnVwYWxQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvRHJ1cGFsUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQml0cml4UGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0JpdHJpeFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9CaXRyaXhQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVkbWluZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZWRtaW5lUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1JlZG1pbmVQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9JQk1EQjJDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JQk1EQjJDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvSUJNREIyQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9PcmFjbGVDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9PcmFjbGVDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvT3JhY2xlQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NeVNRTENvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL015U1FMQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL015U1FMQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1Bvc3RncmVzQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL1Bvc3RncmVzQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0xhbmd1YWdlRWRpdG9yLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIuc3Vic3RyKDEsICIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiLnN1YnN0cigxLCAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0VkaXRUZW1wbGF0ZXMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9FZGl0VGVtcGxhdGVzLmh0bWwiLnN1YnN0cigxLCAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUG9ydFNldHRpbmdzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9ydFNldHRpbmdzLmh0bWwiLnN1YnN0cigxLCAiL1BvcnRTZXR0aW5ncy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiLnN1YnN0cigxLCAiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiLnN1YnN0cigxLCAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0Rhc2hib2FyZC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0Rhc2hib2FyZC5odG1sIi5zdWJzdHIoMSwgIi9EYXNoYm9hcmQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0hvdEtleXMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Ib3RLZXlzLmh0bWwiLnN1YnN0cigxLCAiL0hvdEtleXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViYXBwTmFtZVBhdGguaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJhcHBOYW1lUGF0aC5odG1sIi5zdWJzdHIoMSwgIi9XZWJhcHBOYW1lUGF0aC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTmF2aWdhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL05hdmlnYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvTmF2aWdhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIuc3Vic3RyKDEsICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIuc3Vic3RyKDEsICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIi5zdWJzdHIoMSwgIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SVE1QU0FuZEhUVFBTLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUlRNUFNBbmRIVFRQUy5odG1sIi5zdWJzdHIoMSwgIi9SVE1QU0FuZEhUVFBTLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiLnN1YnN0cigxLCAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiLnN1YnN0cigxLCAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ2x1c3RlcmluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NsdXN0ZXJpbmcuaHRtbCIuc3Vic3RyKDEsICIvQ2x1c3RlcmluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZXRWZXJzaW9uSW5mby5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dldFZlcnNpb25JbmZvLmh0bWwiLnN1YnN0cigxLCAiL0dldFZlcnNpb25JbmZvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCSAgICAJCQkJCQorICAgIAkJCQkJY3VycmVudExpbmsgPSBjdXJyZW50TGluay50b0xvd2VyQ2FzZSgpOworICAgIAkJCQkJY3VycmVudExvY2F0aW9uID0gY3VycmVudExvY2F0aW9uLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQkKKwkJCQkJCXJldHVybiBzaWRlQmFyTGFzdFN0cmluZyA9PSBjdXJyZW50TGluaysiIyIrY3VycmVudExvY2F0aW9uOworCQkJCQl9CisJCQkJfSk7CisJCQl9KTsKKwkJCTwvc2NyaXB0PgorCQkJCisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisJCQkJJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CisJCQkJCSQoJy5mYW5jeWJveC1idXR0b25zJykuY29sb3Jib3goe3JlbDonZmFuY3lib3gtYnV0dG9ucycsd2lkdGg6Ijc1JSIsIGhlaWdodDoiNzUlIn0pOworCQkJCQkkKCcjYWNjb3JkaW9uIGEnKS5lYWNoKGZ1bmN0aW9uKCkgeworCQkJCSAgICAgIHZhciBhID0gJCh0aGlzKTsKKwkJCQkgICAgICB2YXIgaHJlZiA9IGEuYXR0cigiaHJlZiIpOworCQkJCSAgICAgIGlmIChocmVmLmluZGV4T2YoIiMiKSA9PSAtMSkgeworCQkJCSAgICAgIAkgIHZhciBjb21wYXJlSXQgPSBocmVmLnN1YnN0cigyLCBocmVmLmxlbmd0aCk7CisJCQkJCSAgICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoY29tcGFyZUl0KSE9IC0xKSB7CisJCQkJCSAgICAgICBhLmFkZENsYXNzKCdhY3RpdmUnKTsKKwkJCQkJICAgICAgfQorCQkJCSAgICAgIH0KKwkJCQkgICAgfSk7CisJCQkJCSQoJyNjb2luLXNsaWRlcicpLmNvaW5zbGlkZXIoeyB3aWR0aDogNjQwLGhlaWdodDogNDAwLCBkZWxheTogNDAwMCAgfSk7CQkJCQkKKwkJCQl9KTsKKwkJCTwvc2NyaXB0PgkKKwkJCQkJCQorCQkJPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKwkJCQkuZmFuY3lib3gtY3VzdG9tIC5mYW5jeWJveC1vdXRlciB7CisJCQkJCWJveC1zaGFkb3c6IDAgMCA1MHB4ICMyMjI7CisJCQkJfQorCQkJPC9zdHlsZT4KKyAgICAgICAgPC9oZWFkPgorCisgICAgICAgIDxib2R5IGJnY29sb3I9IiNmZmZmZmYiIHRleHQ9IiMwMDAwMDAiIGxpbms9IiMxMjM0NjUiIHZsaW5rPSIjMTIzNDY1IiBhbGluaz0iIzAwMDAwMCI+ICAKKyAgICAgICAgCTxkaXYgY2xhc3M9Im1haW5ib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgCTxkaXYgY2xhc3M9InN1cGVyYm9keSIgc3R5bGU9IndpZHRoOiAxMDAlOyI+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiPgorICAgICAgICAgICAgICAgIDwhLS0gVE9QIElNQUdFIC0tPgorICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0Ij4KKzxhIGhyZWY9Imh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy8iPjxpbWcgc3JjPSIuL2ltYWdlcy9sb2dvLTIuanBnIiBhbHQ9IkFwYWNoZSBPcGVuTWVldGluZ3MiIGJvcmRlcj0iMCIvPjwvYT4KKzwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODAlIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIiA+CisJPGEgaHJlZj0iZGVtby5odG1sIj5EZW1vPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9ImRvd25sb2Fkcy5odG1sIiB0YXJnZXQ9Il9QQVJFTlQiPkRvd25sb2FkPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imluc3RhbGxhdGlvbi5odG1sIiB0YXJnZXQ9Il9QQVJFTlQiPkluc3RhbGxhdGlvbjwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUyIgdGFyZ2V0PSJfQkxBTksiPldpa2k8L2E+CisJPHNwYW4+Jm5ic3A7PC9zcGFuPgorPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iNCI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGhyIG5vc2hhZGU9Im5vc2hhZGUiIHNpemU9IjEiLz4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDwhLS0gTEVGVCBTSURFIE5BVklHQVRJT04gLS0+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCIgbm93cmFwPSJub3dyYXAiPgorCisgICAgICAgICAgICAgICAgICAgIDwhLS0gc3BlY2lhbCBBQ29uIExvZ28gLSBsZWF2ZSBoZXJlIGZvciBuZXh0IHRpbWUKKyAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL2FwYWNoZWNvbi5jb20vMjAwNS9VUy8iPgorICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHA6Ly9hcGFjaGUub3JnL2ltYWdlcy9hYzIwMDV1c19ibHVlXzEyNXgxMjUuanBnIiBoZWlnaHQ9IjEyNSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjEyNSIgYm9yZGVyPSIwIiBhbHQ9IkFwYWNoZUNvbiBVUyAyMDA1IiAvPgorICAgICAgICAgICAgICAgICAgICA8L2E+ICAtLT4KKworICAgICAgICAgICAgICAgICAgIDwhLS0gcmVndWxhciBtZW51IC0tPgorCisgICAgICAgICAgICAgICAgICAgIAorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDxkaXYgaWQ9ImFjY29yZGlvbiIgc3R5bGU9IndpZHRoOiAxMDAlIj4KKyAgICAKKyAgICAgICAgICAgIAk8aDM+PGEgaHJlZj0iI0dlbmVyYWwiPkdlbmVyYWw8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luZGV4Lmh0bWwiPkhvbWU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2xpY2Vuc2UuaHRtbCI+TGljZW5zZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iPkFTRjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZG93bmxvYWRzLmh0bWwiPkRvd25sb2FkczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiPkNvbW1lcmNpYWwgU3VwcG9ydDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI+SW5zdGFsbGF0aW9uIGFuZCBVcGdyYWRlPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9pbnN0YWxsYXRpb24uaHRtbCI+SW5zdGFsbGF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9VcGdyYWRlLmh0bWwiPlVwZ3JhZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiPlR1dG9yaWFsczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQ29tbWFuZExpbmVBZG1pbi5odG1sIj5Db21tYW5kIExpbmUgQWRtaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0NvbW11bml0eSI+Q29tbXVuaXR5PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9nZXQtaW52b2x2ZWQuaHRtbCI+R2V0IEludm9sdmVkPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi90ZWFtLWxpc3QuaHRtbCI+Q29tbWl0dGVyczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbWFpbC1saXN0cy5odG1sIj5NYWlsaW5nIExpc3RzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iPldpa2k8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0RldmVsb3BtZW50Ij5EZXZlbG9wbWVudDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vc3ZuLmh0bWwiPlNvdXJjZSBDb2RlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyI+QnVncyAvIElzc3VlcyAoSklSQSk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2RlcGVuZGVuY2llcy5odG1sIj5EZXBlbmRlbmNpZXM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiPkJ1aWxkIEluc3RydWN0aW9uczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSlVuaXRUZXN0aW5nLmh0bWwiPkpVbml0IFRlc3Rpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01hbnVhbFRlc3RpbmcuaHRtbCI+TWFudWFsIFRlc3Rpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1JlbGVhc2VHdWlkZS5odG1sIj5SZWxlYXNlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9XZWJzaXRlR3VpZGUuaHRtbCI+V2Vic2l0ZSBHdWlkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjSW50ZWdyYXRpb24iPkludGVncmF0aW9uPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Tb2FwUmVzdEFQSS5odG1sIj5TT0FQL1JFU1QgQVBJPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZXN0QVBJU2FtcGxlLmh0bWwiPlJFU1QgQVBJIFNhbXBsZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTGRhcEFuZEFEUy5odG1sIj5MZGFwIGFuZCBBRFM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiPlZvSVAgYW5kIFNJUDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vRXJyb3JzVGFibGUuaHRtbCI+RXJyb3JzIHRhYmxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNQbHVnaW5zIj5QbHVnaW5zPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Nb29kbGVQbHVnaW4uaHRtbCI+TW9vZGxlIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU2FrYWlQbHVnaW4uaHRtbCI+U2FrYWkgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KaXJhUGx1Z2luLmh0bWwiPkppcmEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Kb29tbGFQbHVnaW4uaHRtbCI+Sm9vbWxhIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vRHJ1cGFsUGx1Z2luLmh0bWwiPkRydXBhbCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0JpdHJpeFBsdWdpbi5odG1sIj5CaXRyaXggUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiPkNvbmZsdWVuY2UgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TdWdhckNSTVBsdWdpbi5odG1sIj5TdWdhckNSTSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1JlZG1pbmVQbHVnaW4uaHRtbCI+UmVkbWluZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0NvbmZpZ3VyYXRpb24iPkNvbmZpZ3VyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkRCIFNhbXBsZSBDb25maWd1cmF0aW9uczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiPkFwYWNoZSBEZXJieTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSUJNREIyQ29uZmlnLmh0bWwiPklCTSBEQjI8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL09yYWNsZUNvbmZpZy5odG1sIj5PcmFjbGU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL015U1FMQ29uZmlnLmh0bWwiPk15U1FMPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIj5Qb3N0Z3JlczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TG9jYWxpemF0aW9uIGFuZCBsYW5ndWFnZXM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIj5JbnRlcm5hdGlvbmFsaXNhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTGFuZ3VhZ2VFZGl0b3IuaHRtbCI+TGFuZ3VhZ2VFZGl0b3I8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1RpbWVab25lSGFuZGxpbmcuaHRtbCI+VGltZVpvbmVIYW5kbGluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRWRpdFRlbXBsYXRlcy5odG1sIj5FZGl0VGVtcGxhdGVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5OQVQgUG9ydCBTZXR0aW5nczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1BvcnRTZXR0aW5ncy5odG1sIj5Qb3J0IHNldHRpbmdzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5QZXJmb3JtYW5jZTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiPkpWTSBwZXJmb3JtYW5jZSB0dW5pbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlVzZXIgSW50ZXJmYWNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIj5UaGVtZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0Rhc2hib2FyZC5odG1sIj5EYXNoYm9hcmQ8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiPldlYmNhbSByZXNvbHV0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiPlJvb20gbGF5b3V0IG9wdGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0hvdEtleXMuaHRtbCI+SG90IEtleXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkN1c3RvbWl6YXRpb248L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9XZWJhcHBOYW1lUGF0aC5odG1sIj5XZWJhcHAgbmFtZS9wYXRoPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9OYXZpZ2F0aW9uLmh0bWwiPk5hdmlnYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCI+Q2FsZW5kYXIgYW5kIHRpbWV6b25lPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiPkN1c3RvbSByb29tIHR5cGU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiPkN1c3RvbSBjdHlwdCBtZWNoYW5pc208L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiPkdlbmVyYWwgQ29uZmlndXJhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+U2VjdXJpdHk8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiPlJlc3RyaWN0ZWQgQWNjZXNzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9SVE1QU0FuZEhUVFBTLmh0bWwiPlJUTVBTIGFuZCBIVFRQUzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q29udmVydGVyczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCI+T3Blbk9mZmljZSBDb252ZXJ0ZXI8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCI+RkZNUEVHIFZlcnNpb24gU3dpdGNoPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5DbHVzdGVyaW5nPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2x1c3RlcmluZy5odG1sIj5DbHVzdGVyaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5NaXNjPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2V0VmVyc2lvbkluZm8uaHRtbCI+R2V0IHZlcnNpb24gaW5mbzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCisgICAgPC9kaXY+CisgICAgIAorICAgIDxici8+CisgICAgCisgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODAlIiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkID48IS0tIGJnY29sb3I9IiNFRUVFRUUiIC0tPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0idmVyZGFuYSxhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9Ik9wZW5NZWV0aW5ncyBDb21taXR0ZXJzIj48c3Ryb25nPk9wZW5NZWV0aW5ncyBDb21taXR0ZXJzPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJVGhlIHBlb3BsZSBsaXN0ZWQgYmVsb3cgaGF2ZSBtYWRlIHNpZ25pZmljYW50IGNvbnRyaWJ1dGlvbnMgdG8NCisJCQkJUG9kbGluZw0KKwkJCQlieQ0KKwkJCQl3b3JraW5nIGxvbmcgYW5kIGhhcmQgdG8gbWFrZSBxdWFsaXR5IHNvZnR3YXJlIGZvciB0aGUgcmVzdA0KKwkJCQlvZiB0aGUgd29ybGQgdG8NCisJCQkJdXNlLg0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQlJZiB5b3Ugd291bGQgbGlrZSB0byBjb250cmlidXRlIHRvIFBvZGxpbmcsIHBsZWFzZSBzZWUgdGhlDQorCQkJCTxhIGhyZWY9Imh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL05ldytjb21taXR0ZXJzK2FuZCtkZXZlbG9wZXJzK3Rhc2sraWRlYStsaXN0IiB0YXJnZXQ9Il9CTEFOSyI+aHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvTmV3K2NvbW1pdHRlcnMrYW5kK2RldmVsb3BlcnMrdGFzaytpZGVhK2xpc3QNCisJCQkJPC9hPg0KKwkJCQl0byBmaW5kIGFyZWFzIHdoZXJlIHlvdSBjYW4gY29udHJpYnV0ZS4NCisJCQkJSWYgdGhlcmUgaXMgbm90aGluZyBpbiB0aGVyZQ0KKwkJCQl0aGF0IHN1aXRzIHlvdXIgaW50ZXJlc3QsIGJ1dCB5b3Ugc3RpbGwNCisJCQkJaGF2ZQ0KKwkJCQlpZGVhcywgcGxlYXNlIGZlZWwgZnJlZQ0KKwkJCQl0byBzdWdnZXN0IHRoZW0gb24gdGhlIG1haWxpbmcgbGlzdC4NCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJSWYgeW91IHdvdWxkIGxpa2UgdG8gYmVjb21lIGEgY29tbWl0dGVyLCBwbGVhc2Ugc2VlDQorCQkJCTxhIGhyZWY9ImdldC1pbnZvbHZlZC5odG1sIj5HZXQgSW52b2x2ZWQ8L2E+DQorCQkJCS4NCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGggYmdjb2xvcj0iIzAzOWFjYyIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIE5hbWUKKyAgICA8L3RoPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggYmdjb2xvcj0iIzAzOWFjYyIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIE9yZ2FuaXphdGlvbgorICAgIDwvdGg+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0aCBiZ2NvbG9yPSIjMDM5YWNjIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgQ29udGFjdC9XZWJzaXRlCisgICAgPC90aD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgU2ViYXN0aWFuIFdhZ25lcgorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgSW5kZXBlbmRlbnQKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIA0KKwkJCQkJCTxhIGhyZWY9Imh0dHBzOi8vdHdpdHRlci5jb20vIyEvZGVhZF9sb2NrIiB0YXJnZXQ9Il9CTEFOSyIgcmVsPSJub2ZvbGxvdyI+aHR0cHM6Ly90d2l0dGVyLmNvbS8jIS9kZWFkX2xvY2sNCisJCQkJCQk8L2E+DQorCQkJCQkKKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBBbGV4ZWkgRmVkb3RvdgorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgSW5kZXBlbmRlbnQKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICZuYnNwOworICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIEV2Z2VueSBSb3ZpbnNreQorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgSW5kZXBlbmRlbnQKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICZuYnNwOworICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIE1heGltIFNvbG9kb3ZuaWsKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIEluZGVwZW5kZW50CisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAmbmJzcDsKKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBPbGl2ZXIgQmVjaGVyZXIKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIEluZGVwZW5kZW50CisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAmbmJzcDsKKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBFdWdlbiBTY2h3ZXJ0CisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBJbmRlcGVuZGVudAorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgZXVnZW4uc2Nod2VydEBnbWFpbC5jb20KKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBTYXNjaGEgWGFuZGVyCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBJbmRlcGVuZGVudAorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgJm5ic3A7CisgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgSm9obm55IFN0cm9tCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBJbmRlcGVuZGVudAorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgJm5ic3A7CisgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgVGltdXIgVGxldWtlbm92CisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBJbmRlcGVuZGVudAorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgJm5ic3A7CisgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgQWx2YXJvIEJ1c3RvcworICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgSW5kZXBlbmRlbnQKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgICZuYnNwOworICAgIDwvdGQ+CisgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIEdlb3JnZSBLaXJraGFtCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBJbmRlcGVuZGVudAorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgJm5ic3A7CisgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgU3RlcGhlbiBDb3R0aGFtCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBJbmRlcGVuZGVudAorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgJm5ic3A7CisgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgSXJpbmEgQXJraGlwZXRzCisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICBJbmRlcGVuZGVudAorICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgJm5ic3A7CisgICAgPC90ZD4KKyAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBiZ2NvbG9yPSIjYTBkZGYwIiBjb2xzcGFuPSIiIHJvd3NwYW49IiIgdmFsaWduPSJ0b3AiIGFsaWduPSJsZWZ0IiBzdHlsZT0iY29sb3I6IGJsYWNrOyBmb250LXNpemU6IHNtYWxsOyBmb250LWZhbWlseTogYXJpYWwsIGhlbHZldGljYSwgc2Fuc2VyaWY7Ij4KKyAgICAgICAgVmFzaWxpeSBEZWd0eWFyZXYKKyAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgYmdjb2xvcj0iI2EwZGRmMCIgY29sc3Bhbj0iIiByb3dzcGFuPSIiIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgICAgIEluZGVwZW5kZW50CisgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIGJnY29sb3I9IiNhMGRkZjAiIGNvbHNwYW49IiIgcm93c3Bhbj0iIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICAgICAmbmJzcDsKKyAgICA8L3RkPgorICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQk8YSBocmVmPSJ0ZWFtLWxpc3QtcnUueG1sIj5IZXJlPC9hPiBpcyB0aGUgUnVzc2lhbiB2ZXJzaW9uIG9mIHRoaXMgcGFnZS4NCisJCQk8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD48YnIvPjwvdGQ+PC90cj4KKyAgICA8L3RhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgPC90cj4KKworICAgICAgICAgICAgICAgIDwhLS0gRk9PVEVSIC0tPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxkaXYgYWxpZ249ImNlbnRlciI+PGZvbnQgY29sb3I9IiMxMjM0NjUiIHNpemU9Ii0xIj48ZW0+CisgICAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAmIzE2OTsgMjAwMy0yMDEzLCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyAgICAgICAgICAgICAgICAgICAgPC9lbT48L2ZvbnQ+PC9kaXY+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgIDwvYm9keT4KKyAgICA8L2h0bWw+Cis8IS0tIGVuZCB0aGUgcHJvY2Vzc2luZyAtLT4KKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKwpkaWZmIC0tZ2l0IGEvZG9jcy90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwgYi9kb2NzL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMmY2YjljCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwKQEAgLTAsMCArMSw3MzAgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgorCis8IS0tCitDb3B5cmlnaHQgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKworPCEtLSBDb250ZW50IFN0eWxlc2hlZXQgZm9yIFNpdGUgLS0+CisKKyAgICAgICAgCis8IS0tIHN0YXJ0IHRoZSBwcm9jZXNzaW5nIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8IS0tIEdFTkVSQVRFRCBGSUxFLCBETyBOT1QgRURJVCwgRURJVCBUSEUgWE1MIEZJTEUgSU4geGRvY3MgSU5TVEVBRCEgLS0+CisgICAgPCEtLSBNYWluIFBhZ2UgU2VjdGlvbiAtLT4KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGh0bWw+CisgICAgICAgIDxoZWFkPgorICAgICAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiLz4KKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxtZXRhIG5hbWU9ImF1dGhvciIgY29udGVudD0iCisJCQlPcGVuTWVldGluZ3MgVGVhbQorCQkiPgorICAgICAgICAgICAgPG1ldGEgbmFtZT0iZW1haWwiIGNvbnRlbnQ9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+CisgICAgICAgICAgICAKKyAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgPHRpdGxlPkFwYWNoZSBPcGVuTWVldGluZ3MgLSBUaGVtZSBhbmQgY29sb3I8L3RpdGxlPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL29wZW5tZWV0aW5ncy5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2pxdWVyeS11aS5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2NvaW4tc2xpZGVyLXN0eWxlcy5jc3MiPgorICAgICAgICAgICAgPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iY3NzL2NvbG9yYm94LmNzcyIgLz4KKyAgICAgICAgICAgIAorCQkJPCEtLSBBZGQgalF1ZXJ5IGxpYnJhcnkgLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9qcXVlcnktMS43LjEubWluLmpzIj48L3NjcmlwdD4KKwkJCisJCQk8IS0tIEFkZCBjb2luc2xpZGVyIHBsdWdpbnMgLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9jb2luLXNsaWRlci5taW4uanMiPjwvc2NyaXB0PgorCQkJCisJCQk8IS0tIEFkZCBjb2xvcmJveCBwbHVnaW4gLS0+CisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9qcXVlcnkuY29sb3Jib3guanMiPjwvc2NyaXB0PgorCQkKKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkuY29yZS5qcyI+PC9zY3JpcHQ+CisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLndpZGdldC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5hY2NvcmRpb24uanMiPjwvc2NyaXB0PgorCQkJCisJCQk8c2NyaXB0PgorCQkJJChmdW5jdGlvbigpIHsKKwkJCQkkKCAiI2FjY29yZGlvbiIgKS5hY2NvcmRpb24oeworCQkJCQlhdXRvSGVpZ2h0OiBmYWxzZSwKKwkJCQkJbmF2aWdhdGlvbjogdHJ1ZSwKKwkJCQkJbmF2aWdhdGlvbkZpbHRlcjogZnVuY3Rpb24gKCkgeworCQkJCQkJdmFyIHNpZGViYXJIcmVmQXJyYXkgPSB0aGlzLmhyZWYuc3BsaXQoIi8iKTsKKyAgICAJCQkJCXZhciBzaWRlQmFyTGFzdFN0cmluZyA9IHNpZGViYXJIcmVmQXJyYXlbc2lkZWJhckhyZWZBcnJheS5sZW5ndGggLSAxXS50b0xvd2VyQ2FzZSgpOworCQkJCQkJCisJCQkJCQlpZiAoc2lkZUJhckxhc3RTdHJpbmcuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJCQkJcmV0dXJuIGZhbHNlOworCQkJCQkJfQorCQkJCQkJCisJCQkJCQkJCQkJCQkvKiBkb2N1bWVudC5sb2NhdGlvbi5ocmVmICovCisJCQkJCQl2YXIgY3VycmVudFNlY3Rpb24gPSAiIjsKKwkJCQkJCQorCQkJCQkJdmFyIGN1cnJlbnRMb2NhdGlvbiA9ICIiOworCQkJCQkJdmFyIGN1cnJlbnRMaW5rID0gIiI7CisJCQkJCQlpZiAoZmFsc2UpIHsKKwkJCQkJCQorCQkJCQkJfQorICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9pbmRleC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9pbmRleC5odG1sIi5zdWJzdHIoMSwgIi9pbmRleC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2xpY2Vuc2UuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbGljZW5zZS5odG1sIi5zdWJzdHIoMSwgIi9saWNlbnNlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iLnN1YnN0cigxLCAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kb3dubG9hZHMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJHZW5lcmFsIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZG93bmxvYWRzLmh0bWwiLnN1YnN0cigxLCAiL2Rvd25sb2Fkcy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIuc3Vic3RyKDEsICIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luc3RhbGxhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9pbnN0YWxsYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvaW5zdGFsbGF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVXBncmFkZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9VcGdyYWRlLmh0bWwiLnN1YnN0cigxLCAiL1VwZ3JhZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIi5zdWJzdHIoMSwgImh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnN0YWxsYXRpb25hbmRVcGdyYWRlIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29tbWFuZExpbmVBZG1pbi5odG1sIi5zdWJzdHIoMSwgIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2dldC1pbnZvbHZlZC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2dldC1pbnZvbHZlZC5odG1sIi5zdWJzdHIoMSwgIi9nZXQtaW52b2x2ZWQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi90ZWFtLWxpc3QuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi90ZWFtLWxpc3QuaHRtbCIuc3Vic3RyKDEsICIvdGVhbS1saXN0Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbWFpbC1saXN0cy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL21haWwtbGlzdHMuaHRtbCIuc3Vic3RyKDEsICIvbWFpbC1saXN0cy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIuc3Vic3RyKDEsICJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvc3ZuLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9zdm4uaHRtbCIuc3Vic3RyKDEsICIvc3ZuLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIi5zdWJzdHIoMSwgImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZGVwZW5kZW5jaWVzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kZXBlbmRlbmNpZXMuaHRtbCIuc3Vic3RyKDEsICIvZGVwZW5kZW5jaWVzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiLnN1YnN0cigxLCAiL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSlVuaXRUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9KVW5pdFRlc3RpbmcuaHRtbCIuc3Vic3RyKDEsICIvSlVuaXRUZXN0aW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTWFudWFsVGVzdGluZy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTWFudWFsVGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9NYW51YWxUZXN0aW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVsZWFzZUd1aWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZWxlYXNlR3VpZGUuaHRtbCIuc3Vic3RyKDEsICIvUmVsZWFzZUd1aWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2Vic2l0ZUd1aWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9XZWJzaXRlR3VpZGUuaHRtbCIuc3Vic3RyKDEsICIvV2Vic2l0ZUd1aWRlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1NvYXBSZXN0QVBJLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Tb2FwUmVzdEFQSS5odG1sIi5zdWJzdHIoMSwgIi9Tb2FwUmVzdEFQSS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RBUElTYW1wbGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1Jlc3RBUElTYW1wbGUuaHRtbCIuc3Vic3RyKDEsICIvUmVzdEFQSVNhbXBsZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0xkYXBBbmRBRFMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0xkYXBBbmRBRFMuaHRtbCIuc3Vic3RyKDEsICIvTGRhcEFuZEFEUy5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi92b2lwLXNpcC1pbnRlZ3JhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0Vycm9yc1RhYmxlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW50ZWdyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9FcnJvcnNUYWJsZS5odG1sIi5zdWJzdHIoMSwgIi9FcnJvcnNUYWJsZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Nb29kbGVQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTW9vZGxlUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL01vb2RsZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Nha2FpUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1Nha2FpUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1Nha2FpUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSmlyYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9KaXJhUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0ppcmFQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Kb29tbGFQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvSm9vbWxhUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0pvb21sYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0RydXBhbFBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9EcnVwYWxQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvRHJ1cGFsUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQml0cml4UGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0JpdHJpeFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9CaXRyaXhQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVkbWluZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9SZWRtaW5lUGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL1JlZG1pbmVQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9BcGFjaGVEZXJieUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9JQk1EQjJDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JQk1EQjJDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvSUJNREIyQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9PcmFjbGVDb25maWcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9PcmFjbGVDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvT3JhY2xlQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NeVNRTENvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL015U1FMQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL015U1FMQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1Bvc3RncmVzQ29uZmlnLmh0bWwiLnN1YnN0cigxLCAiL1Bvc3RncmVzQ29uZmlnLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0xhbmd1YWdlRWRpdG9yLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIuc3Vic3RyKDEsICIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9UaW1lWm9uZUhhbmRsaW5nLmh0bWwiLnN1YnN0cigxLCAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0VkaXRUZW1wbGF0ZXMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9FZGl0VGVtcGxhdGVzLmh0bWwiLnN1YnN0cigxLCAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUG9ydFNldHRpbmdzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9ydFNldHRpbmdzLmh0bWwiLnN1YnN0cigxLCAiL1BvcnRTZXR0aW5ncy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVk1QZXJmb3JtYW5jZVR1bmluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiLnN1YnN0cigxLCAiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiLnN1YnN0cigxLCAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0Rhc2hib2FyZC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0Rhc2hib2FyZC5odG1sIi5zdWJzdHIoMSwgIi9EYXNoYm9hcmQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0hvdEtleXMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Ib3RLZXlzLmh0bWwiLnN1YnN0cigxLCAiL0hvdEtleXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViYXBwTmFtZVBhdGguaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJhcHBOYW1lUGF0aC5odG1sIi5zdWJzdHIoMSwgIi9XZWJhcHBOYW1lUGF0aC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTmF2aWdhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL05hdmlnYXRpb24uaHRtbCIuc3Vic3RyKDEsICIvTmF2aWdhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCIuc3Vic3RyKDEsICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIuc3Vic3RyKDEsICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUmVzdHJpY3RlZEFjY2Vzcy5odG1sIi5zdWJzdHIoMSwgIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SVE1QU0FuZEhUVFBTLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUlRNUFNBbmRIVFRQUy5odG1sIi5zdWJzdHIoMSwgIi9SVE1QU0FuZEhUVFBTLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiLnN1YnN0cigxLCAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiLnN1YnN0cigxLCAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ2x1c3RlcmluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0NsdXN0ZXJpbmcuaHRtbCIuc3Vic3RyKDEsICIvQ2x1c3RlcmluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZXRWZXJzaW9uSW5mby5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dldFZlcnNpb25JbmZvLmh0bWwiLnN1YnN0cigxLCAiL0dldFZlcnNpb25JbmZvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCSAgICAJCQkJCQorICAgIAkJCQkJY3VycmVudExpbmsgPSBjdXJyZW50TGluay50b0xvd2VyQ2FzZSgpOworICAgIAkJCQkJY3VycmVudExvY2F0aW9uID0gY3VycmVudExvY2F0aW9uLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQkKKwkJCQkJCXJldHVybiBzaWRlQmFyTGFzdFN0cmluZyA9PSBjdXJyZW50TGluaysiIyIrY3VycmVudExvY2F0aW9uOworCQkJCQl9CisJCQkJfSk7CisJCQl9KTsKKwkJCTwvc2NyaXB0PgorCQkJCisJCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisJCQkJJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7CisJCQkJCSQoJy5mYW5jeWJveC1idXR0b25zJykuY29sb3Jib3goe3JlbDonZmFuY3lib3gtYnV0dG9ucycsd2lkdGg6Ijc1JSIsIGhlaWdodDoiNzUlIn0pOworCQkJCQkkKCcjYWNjb3JkaW9uIGEnKS5lYWNoKGZ1bmN0aW9uKCkgeworCQkJCSAgICAgIHZhciBhID0gJCh0aGlzKTsKKwkJCQkgICAgICB2YXIgaHJlZiA9IGEuYXR0cigiaHJlZiIpOworCQkJCSAgICAgIGlmIChocmVmLmluZGV4T2YoIiMiKSA9PSAtMSkgeworCQkJCSAgICAgIAkgIHZhciBjb21wYXJlSXQgPSBocmVmLnN1YnN0cigyLCBocmVmLmxlbmd0aCk7CisJCQkJCSAgICAgIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoY29tcGFyZUl0KSE9IC0xKSB7CisJCQkJCSAgICAgICBhLmFkZENsYXNzKCdhY3RpdmUnKTsKKwkJCQkJICAgICAgfQorCQkJCSAgICAgIH0KKwkJCQkgICAgfSk7CisJCQkJCSQoJyNjb2luLXNsaWRlcicpLmNvaW5zbGlkZXIoeyB3aWR0aDogNjQwLGhlaWdodDogNDAwLCBkZWxheTogNDAwMCAgfSk7CQkJCQkKKwkJCQl9KTsKKwkJCTwvc2NyaXB0PgkKKwkJCQkJCQorCQkJPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKwkJCQkuZmFuY3lib3gtY3VzdG9tIC5mYW5jeWJveC1vdXRlciB7CisJCQkJCWJveC1zaGFkb3c6IDAgMCA1MHB4ICMyMjI7CisJCQkJfQorCQkJPC9zdHlsZT4KKyAgICAgICAgPC9oZWFkPgorCisgICAgICAgIDxib2R5IGJnY29sb3I9IiNmZmZmZmYiIHRleHQ9IiMwMDAwMDAiIGxpbms9IiMxMjM0NjUiIHZsaW5rPSIjMTIzNDY1IiBhbGluaz0iIzAwMDAwMCI+ICAKKyAgICAgICAgCTxkaXYgY2xhc3M9Im1haW5ib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgCTxkaXYgY2xhc3M9InN1cGVyYm9keSIgc3R5bGU9IndpZHRoOiAxMDAlOyI+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiPgorICAgICAgICAgICAgICAgIDwhLS0gVE9QIElNQUdFIC0tPgorICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPHRkIGFsaWduPSJsZWZ0Ij4KKzxhIGhyZWY9Imh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy8iPjxpbWcgc3JjPSIuL2ltYWdlcy9sb2dvLTIuanBnIiBhbHQ9IkFwYWNoZSBPcGVuTWVldGluZ3MiIGJvcmRlcj0iMCIvPjwvYT4KKzwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODAlIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIiA+CisJPGEgaHJlZj0iZGVtby5odG1sIj5EZW1vPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9ImRvd25sb2Fkcy5odG1sIiB0YXJnZXQ9Il9QQVJFTlQiPkRvd25sb2FkPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imluc3RhbGxhdGlvbi5odG1sIiB0YXJnZXQ9Il9QQVJFTlQiPkluc3RhbGxhdGlvbjwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUyIgdGFyZ2V0PSJfQkxBTksiPldpa2k8L2E+CisJPHNwYW4+Jm5ic3A7PC9zcGFuPgorPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorICAgICAgICAgICAgPC90YWJsZT4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iNCI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGhyIG5vc2hhZGU9Im5vc2hhZGUiIHNpemU9IjEiLz4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisKKyAgICAgICAgICAgICAgICA8dHI+CisgICAgICAgICAgICAgICAgICAgIDwhLS0gTEVGVCBTSURFIE5BVklHQVRJT04gLS0+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iMjAlIiB2YWxpZ249InRvcCIgbm93cmFwPSJub3dyYXAiPgorCisgICAgICAgICAgICAgICAgICAgIDwhLS0gc3BlY2lhbCBBQ29uIExvZ28gLSBsZWF2ZSBoZXJlIGZvciBuZXh0IHRpbWUKKyAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL2FwYWNoZWNvbi5jb20vMjAwNS9VUy8iPgorICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9Imh0dHA6Ly9hcGFjaGUub3JnL2ltYWdlcy9hYzIwMDV1c19ibHVlXzEyNXgxMjUuanBnIiBoZWlnaHQ9IjEyNSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9IjEyNSIgYm9yZGVyPSIwIiBhbHQ9IkFwYWNoZUNvbiBVUyAyMDA1IiAvPgorICAgICAgICAgICAgICAgICAgICA8L2E+ICAtLT4KKworICAgICAgICAgICAgICAgICAgIDwhLS0gcmVndWxhciBtZW51IC0tPgorCisgICAgICAgICAgICAgICAgICAgIAorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDxkaXYgaWQ9ImFjY29yZGlvbiIgc3R5bGU9IndpZHRoOiAxMDAlIj4KKyAgICAKKyAgICAgICAgICAgIAk8aDM+PGEgaHJlZj0iI0dlbmVyYWwiPkdlbmVyYWw8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luZGV4Lmh0bWwiPkhvbWU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2xpY2Vuc2UuaHRtbCI+TGljZW5zZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iPkFTRjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZG93bmxvYWRzLmh0bWwiPkRvd25sb2FkczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiPkNvbW1lcmNpYWwgU3VwcG9ydDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI+SW5zdGFsbGF0aW9uIGFuZCBVcGdyYWRlPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9pbnN0YWxsYXRpb24uaHRtbCI+SW5zdGFsbGF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9VcGdyYWRlLmh0bWwiPlVwZ3JhZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiPlR1dG9yaWFsczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQ29tbWFuZExpbmVBZG1pbi5odG1sIj5Db21tYW5kIExpbmUgQWRtaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0NvbW11bml0eSI+Q29tbXVuaXR5PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9nZXQtaW52b2x2ZWQuaHRtbCI+R2V0IEludm9sdmVkPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi90ZWFtLWxpc3QuaHRtbCI+Q29tbWl0dGVyczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbWFpbC1saXN0cy5odG1sIj5NYWlsaW5nIExpc3RzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iPldpa2k8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0RldmVsb3BtZW50Ij5EZXZlbG9wbWVudDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vc3ZuLmh0bWwiPlNvdXJjZSBDb2RlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyI+QnVncyAvIElzc3VlcyAoSklSQSk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2RlcGVuZGVuY2llcy5odG1sIj5EZXBlbmRlbmNpZXM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiPkJ1aWxkIEluc3RydWN0aW9uczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vSlVuaXRUZXN0aW5nLmh0bWwiPkpVbml0IFRlc3Rpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01hbnVhbFRlc3RpbmcuaHRtbCI+TWFudWFsIFRlc3Rpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1JlbGVhc2VHdWlkZS5odG1sIj5SZWxlYXNlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9XZWJzaXRlR3VpZGUuaHRtbCI+V2Vic2l0ZSBHdWlkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjSW50ZWdyYXRpb24iPkludGVncmF0aW9uPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Tb2FwUmVzdEFQSS5odG1sIj5TT0FQL1JFU1QgQVBJPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9SZXN0QVBJU2FtcGxlLmh0bWwiPlJFU1QgQVBJIFNhbXBsZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTGRhcEFuZEFEUy5odG1sIj5MZGFwIGFuZCBBRFM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiPlZvSVAgYW5kIFNJUDwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vRXJyb3JzVGFibGUuaHRtbCI+RXJyb3JzIHRhYmxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNQbHVnaW5zIj5QbHVnaW5zPC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Nb29kbGVQbHVnaW4uaHRtbCI+TW9vZGxlIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vU2FrYWlQbHVnaW4uaHRtbCI+U2FrYWkgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KaXJhUGx1Z2luLmh0bWwiPkppcmEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Kb29tbGFQbHVnaW4uaHRtbCI+Sm9vbWxhIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vRHJ1cGFsUGx1Z2luLmh0bWwiPkRydXBhbCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0JpdHJpeFBsdWdpbi5odG1sIj5CaXRyaXggUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiPkNvbmZsdWVuY2UgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TdWdhckNSTVBsdWdpbi5odG1sIj5TdWdhckNSTSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1JlZG1pbmVQbHVnaW4uaHRtbCI+UmVkbWluZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI0NvbmZpZ3VyYXRpb24iPkNvbmZpZ3VyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkRCIFNhbXBsZSBDb25maWd1cmF0aW9uczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiPkFwYWNoZSBEZXJieTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSUJNREIyQ29uZmlnLmh0bWwiPklCTSBEQjI8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL09yYWNsZUNvbmZpZy5odG1sIj5PcmFjbGU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL015U1FMQ29uZmlnLmh0bWwiPk15U1FMPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Qb3N0Z3Jlc0NvbmZpZy5odG1sIj5Qb3N0Z3JlczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+TG9jYWxpemF0aW9uIGFuZCBsYW5ndWFnZXM8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIj5JbnRlcm5hdGlvbmFsaXNhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTGFuZ3VhZ2VFZGl0b3IuaHRtbCI+TGFuZ3VhZ2VFZGl0b3I8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1RpbWVab25lSGFuZGxpbmcuaHRtbCI+VGltZVpvbmVIYW5kbGluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRWRpdFRlbXBsYXRlcy5odG1sIj5FZGl0VGVtcGxhdGVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5OQVQgUG9ydCBTZXR0aW5nczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1BvcnRTZXR0aW5ncy5odG1sIj5Qb3J0IHNldHRpbmdzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5QZXJmb3JtYW5jZTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiPkpWTSBwZXJmb3JtYW5jZSB0dW5pbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlVzZXIgSW50ZXJmYWNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIj5UaGVtZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0Rhc2hib2FyZC5odG1sIj5EYXNoYm9hcmQ8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmNhbVJlc29sdXRpb25zLmh0bWwiPldlYmNhbSByZXNvbHV0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiPlJvb20gbGF5b3V0IG9wdGlvbnM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0hvdEtleXMuaHRtbCI+SG90IEtleXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkN1c3RvbWl6YXRpb248L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9XZWJhcHBOYW1lUGF0aC5odG1sIj5XZWJhcHAgbmFtZS9wYXRoPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9OYXZpZ2F0aW9uLmh0bWwiPk5hdmlnYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0NhbGVuZGFyQW5kVGltZXpvbmUuaHRtbCI+Q2FsZW5kYXIgYW5kIHRpbWV6b25lPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiPkN1c3RvbSByb29tIHR5cGU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiPkN1c3RvbSBjdHlwdCBtZWNoYW5pc208L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiPkdlbmVyYWwgQ29uZmlndXJhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+U2VjdXJpdHk8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiPlJlc3RyaWN0ZWQgQWNjZXNzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9SVE1QU0FuZEhUVFBTLmh0bWwiPlJUTVBTIGFuZCBIVFRQUzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q29udmVydGVyczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCI+T3Blbk9mZmljZSBDb252ZXJ0ZXI8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCI+RkZNUEVHIFZlcnNpb24gU3dpdGNoPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5DbHVzdGVyaW5nPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2x1c3RlcmluZy5odG1sIj5DbHVzdGVyaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5NaXNjPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2V0VmVyc2lvbkluZm8uaHRtbCI+R2V0IHZlcnNpb24gaW5mbzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCisgICAgPC9kaXY+CisgICAgIAorICAgIDxici8+CisgICAgCisgICAgICAgICAgICAgICAgICAgIDwvdGQ+CisgICAgICAgICAgICAgICAgICAgIDx0ZCB3aWR0aD0iODAlIiBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkID48IS0tIGJnY29sb3I9IiNFRUVFRUUiIC0tPgorICAgICAgICA8Zm9udCBjb2xvcj0iIzAwMDAwMCIgZmFjZT0idmVyZGFuYSxhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IkF2YWlsYWJsZSB3aXRoIEFwYWNoZSBPcGVuTWVldGluZ3MgMi4wIj48c3Ryb25nPkF2YWlsYWJsZSB3aXRoIEFwYWNoZSBPcGVuTWVldGluZ3MgMi4wPC9zdHJvbmc+PC9hPgorICAgICAgICA8L2ZvbnQ+CisgICAgICAgIDxociBzdHlsZT0id2lkdGg6MTAwJTsgY29sb3I6Izk5OTk5OTsgYmFja2dyb3VuZC1jb2xvcjojOTk5OTk5OyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJVGhlbWVzIGFyZSBvbmx5IGF2YWlsYWJsZSBzdGFydGluZyB3aXRoIE9wZW5tZWV0aW5ncyAyLnguDQorCQkJCTxiciAvPg0KKwkJCQlUaGVyZSBhcmUgYWxzbyBtb3JlIGdlbmVyYWwgY2xpZW50IHNpZGUgY29uZmlndXJhdGlvbiBsaWtlIHBvcnQNCisJCQkJY29uZmlndXJhdGlvbi4gVGhvc2UgY29uZmlncyBhcmUgc3RvcmVkIGluIHRoZSBjb25maWcueG1sDQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iRWRpdGluZyB0aGUgdGhlbWUiPjxzdHJvbmc+RWRpdGluZyB0aGUgdGhlbWU8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjojOTk5OTk5OyBiYWNrZ3JvdW5kLWNvbG9yOiM5OTk5OTk7IGhlaWdodDoxcHg7IGJvcmRlcjowcHg7Ii8+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPgorICAgICAgICA8YmxvY2txdW90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPllvdSBjYW4gZmluZCB0aGUgZGVmYXVsdCB0aGVtZSBpbiB0aGUgU1ZOOiA8L3A+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD4NCisJCQkJPGEgaHJlZj0iaHR0cHM6Ly9zdm4uYXBhY2hlLm9yZy9yZXBvcy9hc2Yvb3Blbm1lZXRpbmdzL3RydW5rL3NpbmdsZXdlYmFwcC9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9kZWZhdWx0LXRoZW1lLnhtbCIgdGFyZ2V0PSJfQkxBTksiIHJlbD0ibm9mb2xsb3ciPmh0dHBzOi8vc3ZuLmFwYWNoZS5vcmcvcmVwb3MvYXNmL29wZW5tZWV0aW5ncy90cnVuay9zaW5nbGV3ZWJhcHAvV2ViQ29udGVudC9vcGVubWVldGluZ3MvZGVmYXVsdC10aGVtZS54bWwNCisJCQkJPC9hPg0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwPg0KKwkJCQlPciBpZiB5b3UgYWxyZWFkeSBpbnN0YWxsZWQgT3Blbk1lZXRpbmdzIG9uIHlvdXIgbWFjaGluZSBhdDoNCisJCQkJPGJyIC8+DQorCQkJCTx0dD4vd2ViYXBwcy9vcGVubWVldGluZ3MvZGVmYXVsdC10aGVtZS54bWw8L3R0Pg0KKwkJCQk8YnIgLz4NCisJCQkJVGhlIGZpbGUgY29udGFpbnMgYm9yZGVyLCBiYWNrZ3JvdW5kIGFuZCBmb250IGNvbG9yIGRlZmluaXRpb25zIGFzDQorCQkJCXdlbGwgYXMgcGF0aHMgdG8gaWNvbnMgdGhhdCBhcmUgbG9hZGVkIGF0IHJ1bnRpbWUuDQorCQkJCTxiciAvPg0KKwkJCQlZb3UgY2FuIGNoYW5nZSB0aGUgdGhlbWUgYXQgcnVudGltZSBhbmQganVzdCByZWxvYWQgdGhlIGJyb3dzZXINCisJCQkJKGV2ZW50dWFsbHkgY2xlYXIgdGhlIGJyb3dzZXIgY2FjaGUpIHRvIHNlZSB1cGRhdGVzIGJhc2VkIG9uDQorCQkJCW1vZGlmaWNhdGlvbiBpbiB5b3VyIHRoZW1lLg0KKwkJCTwvcD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+CisgICAgICA8L3RkPjwvdHI+CisgICAgICA8dHI+PHRkPjxici8+PC90ZD48L3RyPgorICAgIDwvdGFibGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPCEtLSBGT09URVIgLS0+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGhyIG5vc2hhZGU9Im5vc2hhZGUiIHNpemU9IjEiLz4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBhbGlnbj0iY2VudGVyIj48Zm9udCBjb2xvcj0iIzEyMzQ2NSIgc2l6ZT0iLTEiPjxlbT4KKyAgICAgICAgICAgICAgICAgICAgQ29weXJpZ2h0ICYjMTY5OyAyMDAzLTIwMTMsIFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorICAgICAgICAgICAgICAgICAgICA8L2VtPjwvZm9udD48L2Rpdj4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgPC9ib2R5PgorICAgIDwvaHRtbD4KKzwhLS0gZW5kIHRoZSBwcm9jZXNzaW5nIC0tPgorCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCmRpZmYgLS1naXQgYS9kb2NzL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwgYi9kb2NzL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTFlZmZlYQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3Mvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbApAQCAtMCwwICsxLDcyNiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CisKKzwhLS0KK0NvcHlyaWdodCAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK3lvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCitodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworCis8IS0tIENvbnRlbnQgU3R5bGVzaGVldCBmb3IgU2l0ZSAtLT4KKworICAgICAgICAKKzwhLS0gc3RhcnQgdGhlIHByb2Nlc3NpbmcgLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDwhLS0gR0VORVJBVEVEIEZJTEUsIERPIE5PVCBFRElULCBFRElUIFRIRSBYTUwgRklMRSBJTiB4ZG9jcyBJTlNURUFEISAtLT4KKyAgICA8IS0tIE1haW4gUGFnZSBTZWN0aW9uIC0tPgorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4KKyAgICA8aHRtbD4KKyAgICAgICAgPGhlYWQ+CisgICAgICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCIvPgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSIKKwkJCU9wZW5NZWV0aW5ncyBUZWFtCisJCSI+CisgICAgICAgICAgICA8bWV0YSBuYW1lPSJlbWFpbCIgY29udGVudD0ic2ViYXdhZ25lckBhcGFjaGUub3JnIj4KKyAgICAgICAgICAgIAorICAgICAgICAgICAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICA8dGl0bGU+QXBhY2hlIE9wZW5NZWV0aW5ncyAtIFZvSVAgYW5kIFNJUCBJbnRlZ3JhdGlvbjwvdGl0bGU+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3Mvb3Blbm1lZXRpbmdzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvanF1ZXJ5LXVpLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29pbi1zbGlkZXItc3R5bGVzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29sb3Jib3guY3NzIiAvPgorICAgICAgICAgICAgCisJCQk8IS0tIEFkZCBqUXVlcnkgbGlicmFyeSAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS0xLjcuMS5taW4uanMiPjwvc2NyaXB0PgorCQkKKwkJCTwhLS0gQWRkIGNvaW5zbGlkZXIgcGx1Z2lucyAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2NvaW4tc2xpZGVyLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTwhLS0gQWRkIGNvbG9yYm94IHBsdWdpbiAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS5jb2xvcmJveC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5jb3JlLmpzIj48L3NjcmlwdD4KKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkud2lkZ2V0LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmFjY29yZGlvbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQ+CisJCQkkKGZ1bmN0aW9uKCkgeworCQkJCSQoICIjYWNjb3JkaW9uIiApLmFjY29yZGlvbih7CisJCQkJCWF1dG9IZWlnaHQ6IGZhbHNlLAorCQkJCQluYXZpZ2F0aW9uOiB0cnVlLAorCQkJCQluYXZpZ2F0aW9uRmlsdGVyOiBmdW5jdGlvbiAoKSB7CisJCQkJCQl2YXIgc2lkZWJhckhyZWZBcnJheSA9IHRoaXMuaHJlZi5zcGxpdCgiLyIpOworICAgIAkJCQkJdmFyIHNpZGVCYXJMYXN0U3RyaW5nID0gc2lkZWJhckhyZWZBcnJheVtzaWRlYmFySHJlZkFycmF5Lmxlbmd0aCAtIDFdLnRvTG93ZXJDYXNlKCk7CisJCQkJCQkKKwkJCQkJCWlmIChzaWRlQmFyTGFzdFN0cmluZy5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJCQl9CisJCQkJCQkKKwkJCQkJCQkJCQkJCS8qIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgKi8KKwkJCQkJCXZhciBjdXJyZW50U2VjdGlvbiA9ICIiOworCQkJCQkJCisJCQkJCQl2YXIgY3VycmVudExvY2F0aW9uID0gIiI7CisJCQkJCQl2YXIgY3VycmVudExpbmsgPSAiIjsKKwkJCQkJCWlmIChmYWxzZSkgeworCQkJCQkJCisJCQkJCQl9CisgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2luZGV4Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luZGV4Lmh0bWwiLnN1YnN0cigxLCAiL2luZGV4Lmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvbGljZW5zZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9saWNlbnNlLmh0bWwiLnN1YnN0cigxLCAiL2xpY2Vuc2UuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly93d3cuYXBhY2hlLm9yZy8iKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cDovL3d3dy5hcGFjaGUub3JnLyIuc3Vic3RyKDEsICJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL2Rvd25sb2Fkcy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkdlbmVyYWwiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9kb3dubG9hZHMuaHRtbCIuc3Vic3RyKDEsICIvZG93bmxvYWRzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiR2VuZXJhbCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIi5zdWJzdHIoMSwgIi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvaW5zdGFsbGF0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2luc3RhbGxhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9pbnN0YWxsYXRpb24uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9VcGdyYWRlLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1VwZ3JhZGUuaHRtbCIuc3Vic3RyKDEsICIvVXBncmFkZS5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiSW5zdGFsbGF0aW9uYW5kVXBncmFkZSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLnN1YnN0cigxLCAiaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvVHV0b3JpYWxzK2ZvcitpbnN0YWxsaW5nK09wZW5NZWV0aW5ncythbmQrVG9vbHMiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29tbWFuZExpbmVBZG1pbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkluc3RhbGxhdGlvbmFuZFVwZ3JhZGUiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Db21tYW5kTGluZUFkbWluLmh0bWwiLnN1YnN0cigxLCAiL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvZ2V0LWludm9sdmVkLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvZ2V0LWludm9sdmVkLmh0bWwiLnN1YnN0cigxLCAiL2dldC1pbnZvbHZlZC5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL3RlYW0tbGlzdC5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkNvbW11bml0eSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3RlYW0tbGlzdC5odG1sIi5zdWJzdHIoMSwgIi90ZWFtLWxpc3QuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9tYWlsLWxpc3RzLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiQ29tbXVuaXR5IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvbWFpbC1saXN0cy5odG1sIi5zdWJzdHIoMSwgIi9tYWlsLWxpc3RzLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb21tdW5pdHkiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5zdWJzdHIoMSwgImh0dHA6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9zdm4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3N2bi5odG1sIi5zdWJzdHIoMSwgIi9zdm4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gImh0dHA6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MiLnN1YnN0cigxLCAiaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9kZXBlbmRlbmNpZXMuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL2RlcGVuZGVuY2llcy5odG1sIi5zdWJzdHIoMSwgIi9kZXBlbmRlbmNpZXMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CdWlsZEluc3RydWN0aW9ucy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkRldmVsb3BtZW50IjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIuc3Vic3RyKDEsICIvQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KVW5pdFRlc3RpbmcuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0pVbml0VGVzdGluZy5odG1sIi5zdWJzdHIoMSwgIi9KVW5pdFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9NYW51YWxUZXN0aW5nLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiRGV2ZWxvcG1lbnQiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9NYW51YWxUZXN0aW5nLmh0bWwiLnN1YnN0cigxLCAiL01hbnVhbFRlc3RpbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWxlYXNlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlbGVhc2VHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9SZWxlYXNlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJzaXRlR3VpZGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJEZXZlbG9wbWVudCI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1dlYnNpdGVHdWlkZS5odG1sIi5zdWJzdHIoMSwgIi9XZWJzaXRlR3VpZGUuaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCSAgICAJCQkJCQkJCQkJICAgICAgICAJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU29hcFJlc3RBUEkuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1NvYXBSZXN0QVBJLmh0bWwiLnN1YnN0cigxLCAiL1NvYXBSZXN0QVBJLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvUmVzdEFQSVNhbXBsZS5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvUmVzdEFQSVNhbXBsZS5odG1sIi5zdWJzdHIoMSwgIi9SZXN0QVBJU2FtcGxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGRhcEFuZEFEUy5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIkludGVncmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvTGRhcEFuZEFEUy5odG1sIi5zdWJzdHIoMSwgIi9MZGFwQW5kQURTLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL3ZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRXJyb3JzVGFibGUuaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJJbnRlZ3JhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0Vycm9yc1RhYmxlLmh0bWwiLnN1YnN0cigxLCAiL0Vycm9yc1RhYmxlLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkgICAgCQkJCQkJCQkJCSAgICAgICAgCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL01vb2RsZVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Nb29kbGVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvTW9vZGxlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU2FrYWlQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU2FrYWlQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU2FrYWlQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9KaXJhUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0ppcmFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSmlyYVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pvb21sYVBsdWdpbi5odG1sIikgPiAwKSB7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExvY2F0aW9uID0gIlBsdWdpbnMiOworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMaW5rID0gIi9Kb29tbGFQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvSm9vbWxhUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRHJ1cGFsUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL0RydXBhbFBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9EcnVwYWxQbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9CaXRyaXhQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQml0cml4UGx1Z2luLmh0bWwiLnN1YnN0cigxLCAiL0JpdHJpeFBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvQ29uZmx1ZW5jZVBsdWdpbi5odG1sIi5zdWJzdHIoMSwgIi9Db25mbHVlbmNlUGx1Z2luLmh0bWwiLmxlbmd0aCk7CisJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgICAgICAJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvU3VnYXJDUk1QbHVnaW4uaHRtbCIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICJQbHVnaW5zIjsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TGluayA9ICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvU3VnYXJDUk1QbHVnaW4uaHRtbCIubGVuZ3RoKTsKKwkJCQkJICAgICAgICAgICAgCX0gCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCQkgICAgICAgICAgICAJCisJCQkJCSAgICAgICAgICAgIAllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9SZWRtaW5lUGx1Z2luLmh0bWwiKSA+IDApIHsKKwkJCQkJICAgICAgICAgICAgCQljdXJyZW50TG9jYXRpb24gPSAiUGx1Z2lucyI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiL1JlZG1pbmVQbHVnaW4uaHRtbCIuc3Vic3RyKDEsICIvUmVkbWluZVBsdWdpbi5odG1sIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJCQkJCQkgICAgICAgIAkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvQXBhY2hlRGVyYnlDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0lCTURCMkNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0lCTURCMkNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9JQk1EQjJDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL09yYWNsZUNvbmZpZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09yYWNsZUNvbmZpZy5odG1sIi5zdWJzdHIoMSwgIi9PcmFjbGVDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL015U1FMQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTXlTUUxDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvTXlTUUxDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Bvc3RncmVzQ29uZmlnLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvUG9zdGdyZXNDb25maWcuaHRtbCIuc3Vic3RyKDEsICIvUG9zdGdyZXNDb25maWcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSW50ZXJuYXRpb25hbGlzYXRpb24uaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvTGFuZ3VhZ2VFZGl0b3IuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9MYW5ndWFnZUVkaXRvci5odG1sIi5zdWJzdHIoMSwgIi9MYW5ndWFnZUVkaXRvci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvVGltZVpvbmVIYW5kbGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1RpbWVab25lSGFuZGxpbmcuaHRtbCIuc3Vic3RyKDEsICIvVGltZVpvbmVIYW5kbGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRWRpdFRlbXBsYXRlcy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0VkaXRUZW1wbGF0ZXMuaHRtbCIuc3Vic3RyKDEsICIvRWRpdFRlbXBsYXRlcy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9Qb3J0U2V0dGluZ3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9Qb3J0U2V0dGluZ3MuaHRtbCIuc3Vic3RyKDEsICIvUG9ydFNldHRpbmdzLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIuc3Vic3RyKDEsICIvSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL3RoZW1lcy1hbmQtYnJhbmRpbmcuaHRtbCIuc3Vic3RyKDEsICIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRGFzaGJvYXJkLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvRGFzaGJvYXJkLmh0bWwiLnN1YnN0cigxLCAiL0Rhc2hib2FyZC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5zdWJzdHIoMSwgIi9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLmh0bWwiLnN1YnN0cigxLCAiL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvSG90S2V5cy5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0hvdEtleXMuaHRtbCIuc3Vic3RyKDEsICIvSG90S2V5cy5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9XZWJhcHBOYW1lUGF0aC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLnN1YnN0cigxLCAiL1dlYmFwcE5hbWVQYXRoLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9OYXZpZ2F0aW9uLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvTmF2aWdhdGlvbi5odG1sIi5zdWJzdHIoMSwgIi9OYXZpZ2F0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIi5zdWJzdHIoMSwgIi9DYWxlbmRhckFuZFRpbWV6b25lLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ3VzdG9tUm9vbVR5cGVIb3dUby5odG1sIi5zdWJzdHIoMSwgIi9DdXN0b21Sb29tVHlwZUhvd1RvLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLnN1YnN0cigxLCAiL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9HZW5lcmFsQ29uZmlndXJhdGlvbi5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLnN1YnN0cigxLCAiL0dlbmVyYWxDb25maWd1cmF0aW9uLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SZXN0cmljdGVkQWNjZXNzLmh0bWwiLnN1YnN0cigxLCAiL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL1JUTVBTQW5kSFRUUFMuaHRtbCIpID4gMCkgeworCQkJCSAgICAgICAgICAgIAkJCQljdXJyZW50TG9jYXRpb24gPSAiQ29uZmlndXJhdGlvbiI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIi9SVE1QU0FuZEhUVFBTLmh0bWwiLnN1YnN0cigxLCAiL1JUTVBTQW5kSFRUUFMuaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJCQkJCQkgICAgICAgICAgICAJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL09wZW5PZmZpY2VDb252ZXJ0ZXIuaHRtbCIuc3Vic3RyKDEsICIvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICJDb25maWd1cmF0aW9uIjsKKwkJCQkJICAgICAgICAgICAgCQkJY3VycmVudExpbmsgPSAiL0ZGTVBFR1ZlcnNpb25Td2l0Y2guaHRtbCIuc3Vic3RyKDEsICIvRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIi5sZW5ndGgpOworCQkJCQkJICAgICAgICAgICAgCX0gCisJCQkJICAgICAgICAgICAgCQkJCQkJCSAgICAgICAgCQkJCSAgICAgICAgCQkJCQkJCSAgICAgICAgICAgIAkJCQkgICAgICAgICAgICAJCQkJCQkgICAgICAgICAgICAJCQllbHNlIGlmIChkb2N1bWVudC5sb2NhdGlvbi5ocmVmLmluZGV4T2YoIi9DbHVzdGVyaW5nLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvQ2x1c3RlcmluZy5odG1sIi5zdWJzdHIoMSwgIi9DbHVzdGVyaW5nLmh0bWwiLmxlbmd0aCk7CisJCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkgICAgICAgICAgICAJCQkJCQkJICAgICAgICAJCQkJICAgICAgICAJCQkJCQkJICAgICAgICAgICAgCQkJCSAgICAgICAgICAgIAkJCQkJCSAgICAgICAgICAgIAkJCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiL0dldFZlcnNpb25JbmZvLmh0bWwiKSA+IDApIHsKKwkJCQkgICAgICAgICAgICAJCQkJY3VycmVudExvY2F0aW9uID0gIkNvbmZpZ3VyYXRpb24iOworCQkJCQkgICAgICAgICAgICAJCQljdXJyZW50TGluayA9ICIvR2V0VmVyc2lvbkluZm8uaHRtbCIuc3Vic3RyKDEsICIvR2V0VmVyc2lvbkluZm8uaHRtbCIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJCQkJCQkgICAgICAgIAkJCQkgICAgICAgIAkJICAgIAkJCQkJICAgIAkJCQkJCisgICAgCQkJCQljdXJyZW50TGluayA9IGN1cnJlbnRMaW5rLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQljdXJyZW50TG9jYXRpb24gPSBjdXJyZW50TG9jYXRpb24udG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCQorCQkJCQkJcmV0dXJuIHNpZGVCYXJMYXN0U3RyaW5nID09IGN1cnJlbnRMaW5rKyIjIitjdXJyZW50TG9jYXRpb247CisJCQkJCX0KKwkJCQl9KTsKKwkJCX0pOworCQkJPC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwkJCQkkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsKKwkJCQkJJCgnLmZhbmN5Ym94LWJ1dHRvbnMnKS5jb2xvcmJveCh7cmVsOidmYW5jeWJveC1idXR0b25zJyx3aWR0aDoiNzUlIiwgaGVpZ2h0OiI3NSUifSk7CisJCQkJCSQoJyNhY2NvcmRpb24gYScpLmVhY2goZnVuY3Rpb24oKSB7CisJCQkJICAgICAgdmFyIGEgPSAkKHRoaXMpOworCQkJCSAgICAgIHZhciBocmVmID0gYS5hdHRyKCJocmVmIik7CisJCQkJICAgICAgaWYgKGhyZWYuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJICAgICAgCSAgdmFyIGNvbXBhcmVJdCA9IGhyZWYuc3Vic3RyKDIsIGhyZWYubGVuZ3RoKTsKKwkJCQkJICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZihjb21wYXJlSXQpIT0gLTEpIHsKKwkJCQkJICAgICAgIGEuYWRkQ2xhc3MoJ2FjdGl2ZScpOworCQkJCQkgICAgICB9CisJCQkJICAgICAgfQorCQkJCSAgICB9KTsKKwkJCQkJJCgnI2NvaW4tc2xpZGVyJykuY29pbnNsaWRlcih7IHdpZHRoOiA2NDAsaGVpZ2h0OiA0MDAsIGRlbGF5OiA0MDAwICB9KTsJCQkJCQorCQkJCX0pOworCQkJPC9zY3JpcHQ+CQorCQkJCQkJCisJCQk8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorCQkJCS5mYW5jeWJveC1jdXN0b20gLmZhbmN5Ym94LW91dGVyIHsKKwkJCQkJYm94LXNoYWRvdzogMCAwIDUwcHggIzIyMjsKKwkJCQl9CisJCQk8L3N0eWxlPgorICAgICAgICA8L2hlYWQ+CisKKyAgICAgICAgPGJvZHkgYmdjb2xvcj0iI2ZmZmZmZiIgdGV4dD0iIzAwMDAwMCIgbGluaz0iIzEyMzQ2NSIgdmxpbms9IiMxMjM0NjUiIGFsaW5rPSIjMDAwMDAwIj4gIAorICAgICAgICAJPGRpdiBjbGFzcz0ibWFpbmJvZHkiIHN0eWxlPSJ3aWR0aDogMTAwJTsiPgorICAgICAgICAJPGRpdiBjbGFzcz0ic3VwZXJib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSIxMDAlIiBjZWxsc3BhY2luZz0iMCI+CisgICAgICAgICAgICAgICAgPCEtLSBUT1AgSU1BR0UgLS0+CisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8dGQgYWxpZ249ImxlZnQiPgorPGEgaHJlZj0iaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnLyI+PGltZyBzcmM9Ii4vaW1hZ2VzL2xvZ28tMi5qcGciIGFsdD0iQXBhY2hlIE9wZW5NZWV0aW5ncyIgYm9yZGVyPSIwIi8+PC9hPgorPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiID4KKwk8YSBocmVmPSJkZW1vLmh0bWwiPkRlbW88L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iZG93bmxvYWRzLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+RG93bmxvYWQ8L2E+CisJPHNwYW4+fDwvc3Bhbj4gCisJPGEgaHJlZj0iaW5zdGFsbGF0aW9uLmh0bWwiIHRhcmdldD0iX1BBUkVOVCI+SW5zdGFsbGF0aW9uPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTIiB0YXJnZXQ9Il9CTEFOSyI+V2lraTwvYT4KKwk8c3Bhbj4mbmJzcDs8L3NwYW4+Cis8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisgICAgICAgICAgICA8L3RhYmxlPgorICAgICAgICAgICAgPHRhYmxlIGJvcmRlcj0iMCIgd2lkdGg9IjEwMCUiIGNlbGxzcGFjaW5nPSI0Ij4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKworICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgPCEtLSBMRUZUIFNJREUgTkFWSUdBVElPTiAtLT4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSIyMCUiIHZhbGlnbj0idG9wIiBub3dyYXA9Im5vd3JhcCI+CisKKyAgICAgICAgICAgICAgICAgICAgPCEtLSBzcGVjaWFsIEFDb24gTG9nbyAtIGxlYXZlIGhlcmUgZm9yIG5leHQgdGltZQorICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwOi8vYXBhY2hlY29uLmNvbS8yMDA1L1VTLyI+CisgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cDovL2FwYWNoZS5vcmcvaW1hZ2VzL2FjMjAwNXVzX2JsdWVfMTI1eDEyNS5qcGciIGhlaWdodD0iMTI1IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0iMTI1IiBib3JkZXI9IjAiIGFsdD0iQXBhY2hlQ29uIFVTIDIwMDUiIC8+CisgICAgICAgICAgICAgICAgICAgIDwvYT4gIC0tPgorCisgICAgICAgICAgICAgICAgICAgPCEtLSByZWd1bGFyIG1lbnUgLS0+CisKKyAgICAgICAgICAgICAgICAgICAgCisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGRpdiBpZD0iYWNjb3JkaW9uIiBzdHlsZT0id2lkdGg6IDEwMCUiPgorICAgIAorICAgICAgICAgICAgCTxoMz48YSBocmVmPSIjR2VuZXJhbCI+R2VuZXJhbDwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vaW5kZXguaHRtbCI+SG9tZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vbGljZW5zZS5odG1sIj5MaWNlbnNlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnLyI+QVNGPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9kb3dubG9hZHMuaHRtbCI+RG93bmxvYWRzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9jb21tZXJjaWFsLXN1cHBvcnQuaHRtbCI+Q29tbWVyY2lhbCBTdXBwb3J0PC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnN0YWxsYXRpb25hbmRVcGdyYWRlIj5JbnN0YWxsYXRpb24gYW5kIFVwZ3JhZGU8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2luc3RhbGxhdGlvbi5odG1sIj5JbnN0YWxsYXRpb248L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1VwZ3JhZGUuaHRtbCI+VXBncmFkZTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii5odHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyI+VHV0b3JpYWxzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9Db21tYW5kTGluZUFkbWluLmh0bWwiPkNvbW1hbmQgTGluZSBBZG1pbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29tbXVuaXR5Ij5Db21tdW5pdHk8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL2dldC1pbnZvbHZlZC5odG1sIj5HZXQgSW52b2x2ZWQ8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL3RlYW0tbGlzdC5odG1sIj5Db21taXR0ZXJzPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9tYWlsLWxpc3RzLmh0bWwiPk1haWxpbmcgTGlzdHM8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTLyI+V2lraTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjRGV2ZWxvcG1lbnQiPkRldmVsb3BtZW50PC9hPjwvaDM+CisgICAgCTxkaXY+CisJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9zdm4uaHRtbCI+U291cmNlIENvZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSJodHRwOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIj5CdWdzIC8gSXNzdWVzIChKSVJBKTwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vZGVwZW5kZW5jaWVzLmh0bWwiPkRlcGVuZGVuY2llczwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQnVpbGRJbnN0cnVjdGlvbnMuaHRtbCI+QnVpbGQgSW5zdHJ1Y3Rpb25zPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9KVW5pdFRlc3RpbmcuaHRtbCI+SlVuaXQgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vTWFudWFsVGVzdGluZy5odG1sIj5NYW51YWwgVGVzdGluZzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVsZWFzZUd1aWRlLmh0bWwiPlJlbGVhc2UgR3VpZGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1dlYnNpdGVHdWlkZS5odG1sIj5XZWJzaXRlIEd1aWRlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAJPGgzPjxhIGhyZWY9IiNJbnRlZ3JhdGlvbiI+SW50ZWdyYXRpb248L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1NvYXBSZXN0QVBJLmh0bWwiPlNPQVAvUkVTVCBBUEk8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1Jlc3RBUElTYW1wbGUuaHRtbCI+UkVTVCBBUEkgU2FtcGxlPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9MZGFwQW5kQURTLmh0bWwiPkxkYXAgYW5kIEFEUzwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCI+Vm9JUCBhbmQgU0lQPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9FcnJvcnNUYWJsZS5odG1sIj5FcnJvcnMgdGFibGU8L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgICAgICAJPC9kaXY+CisgICAgICAgIAk8aDM+PGEgaHJlZj0iI1BsdWdpbnMiPlBsdWdpbnM8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL01vb2RsZVBsdWdpbi5odG1sIj5Nb29kbGUgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9TYWthaVBsdWdpbi5odG1sIj5TYWthaSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0ppcmFQbHVnaW4uaHRtbCI+SmlyYSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0pvb21sYVBsdWdpbi5odG1sIj5Kb29tbGEgUGx1Z2luPC9hPgorPGJyLz4KKwkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAkgICAgPGEgaHJlZj0iLi9EcnVwYWxQbHVnaW4uaHRtbCI+RHJ1cGFsIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vQml0cml4UGx1Z2luLmh0bWwiPkJpdHJpeCBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCI+Q29uZmx1ZW5jZSBQbHVnaW48L2E+Cis8YnIvPgorCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCSAgICA8YSBocmVmPSIuL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiPlN1Z2FyQ1JNIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJICAgIDxhIGhyZWY9Ii4vUmVkbWluZVBsdWdpbi5odG1sIj5SZWRtaW5lIFBsdWdpbjwvYT4KKzxici8+CisJICAgICAgICAJCSAgICAgICAgICAgIAk8L2Rpdj4KKyAgICAgICAgCTxoMz48YSBocmVmPSIjQ29uZmlndXJhdGlvbiI+Q29uZmlndXJhdGlvbjwvYT48L2gzPgorICAgIAk8ZGl2PgorCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+REIgU2FtcGxlIENvbmZpZ3VyYXRpb25zPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQXBhY2hlRGVyYnlDb25maWcuaHRtbCI+QXBhY2hlIERlcmJ5PC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9JQk1EQjJDb25maWcuaHRtbCI+SUJNIERCMjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3JhY2xlQ29uZmlnLmh0bWwiPk9yYWNsZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vTXlTUUxDb25maWcuaHRtbCI+TXlTUUw8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Bvc3RncmVzQ29uZmlnLmh0bWwiPlBvc3RncmVzPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Mb2NhbGl6YXRpb24gYW5kIGxhbmd1YWdlczwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0ludGVybmF0aW9uYWxpc2F0aW9uLmh0bWwiPkludGVybmF0aW9uYWxpc2F0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9MYW5ndWFnZUVkaXRvci5odG1sIj5MYW5ndWFnZUVkaXRvcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vVGltZVpvbmVIYW5kbGluZy5odG1sIj5UaW1lWm9uZUhhbmRsaW5nPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9FZGl0VGVtcGxhdGVzLmh0bWwiPkVkaXRUZW1wbGF0ZXM8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk5BVCBQb3J0IFNldHRpbmdzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vUG9ydFNldHRpbmdzLmh0bWwiPlBvcnQgc2V0dGluZ3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPlBlcmZvcm1hbmNlPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSlZNUGVyZm9ybWFuY2VUdW5pbmcuaHRtbCI+SlZNIHBlcmZvcm1hbmNlIHR1bmluZzwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+VXNlciBJbnRlcmZhY2U8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi90aGVtZXMtYW5kLWJyYW5kaW5nLmh0bWwiPlRoZW1lczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRGFzaGJvYXJkLmh0bWwiPkRhc2hib2FyZDwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vV2ViY2FtUmVzb2x1dGlvbnMuaHRtbCI+V2ViY2FtIHJlc29sdXRpb25zPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMuaHRtbCI+Um9vbSBsYXlvdXQgb3B0aW9uczwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vSG90S2V5cy5odG1sIj5Ib3QgS2V5czwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAJCSAgICAgICAgCSAgICAgICAgICAgIAkgICAgICAgICAgICAJPGI+Q3VzdG9taXphdGlvbjwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1dlYmFwcE5hbWVQYXRoLmh0bWwiPldlYmFwcCBuYW1lL3BhdGg8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL05hdmlnYXRpb24uaHRtbCI+TmF2aWdhdGlvbjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIj5DYWxlbmRhciBhbmQgdGltZXpvbmU8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCI+Q3VzdG9tIHJvb20gdHlwZTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vQ3VzdG9tQ3J5cHRNZWNoYW5pc20uaHRtbCI+Q3VzdG9tIGN0eXB0IG1lY2hhbmlzbTwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCI+R2VuZXJhbCBDb25maWd1cmF0aW9uPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5TZWN1cml0eTwvYj48YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1Jlc3RyaWN0ZWRBY2Nlc3MuaHRtbCI+UmVzdHJpY3RlZCBBY2Nlc3M8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgICAgIAkJCSAgICA8YSBocmVmPSIuL1JUTVBTQW5kSFRUUFMuaHRtbCI+UlRNUFMgYW5kIEhUVFBTPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAJICAgICAgICAgICAgCSAgICAgICAgICAgIAk8Yj5Db252ZXJ0ZXJzPC9iPjxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIj5PcGVuT2ZmaWNlIENvbnZlcnRlcjwvYT4KKzxici8+CisJICAgICAgICAgICAgCQkJICAgICAgICAgICAgCQkJICAgIDxhIGhyZWY9Ii4vRkZNUEVHVmVyc2lvblN3aXRjaC5odG1sIj5GRk1QRUcgVmVyc2lvbiBTd2l0Y2g8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPkNsdXN0ZXJpbmc8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9DbHVzdGVyaW5nLmh0bWwiPkNsdXN0ZXJpbmc8L2E+Cis8YnIvPgorCSAgICAgICAgICAgIAkJCSAgICAgICAgCQkgICAgICAgIAkgICAgICAgICAgICAJICAgICAgICAgICAgCTxiPk1pc2M8L2I+PGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgICAgICAJCQkgICAgPGEgaHJlZj0iLi9HZXRWZXJzaW9uSW5mby5odG1sIj5HZXQgdmVyc2lvbiBpbmZvPC9hPgorPGJyLz4KKwkgICAgICAgICAgICAJCQkgICAgICAgIAkJICAgICAgICAgICAgCTwvZGl2PgorICAgICAgICAKKyAgICA8L2Rpdj4KKyAgICAgCisgICAgPGJyLz4KKyAgICAKKyAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICAgICAgPHRkIHdpZHRoPSI4MCUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiIHdpZHRoPSIxMDAlIj4KKyAgICAgIDx0cj48dGQgPjwhLS0gYmdjb2xvcj0iI0VFRUVFRSIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIjMDAwMDAwIiBmYWNlPSJ2ZXJkYW5hLGFyaWFsLGhlbHZldGljYSxzYW5zZXJpZiI+CisgICAgICAgICAgPGEgbmFtZT0iVm9JUCBhbmQgU0lQIEludGVncmF0aW9uIj48c3Ryb25nPlZvSVAgYW5kIFNJUCBJbnRlZ3JhdGlvbjwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgICA8aHIgc3R5bGU9IndpZHRoOjEwMCU7IGNvbG9yOiM5OTk5OTk7IGJhY2tncm91bmQtY29sb3I6Izk5OTk5OTsgaGVpZ2h0OjFweDsgYm9yZGVyOjBweDsiLz4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+CisgICAgICAgIDxibG9ja3F1b3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+DQorCQkJCVRoZXJlIGFyZSBtdWx0aXBsZSB3YXlzIHRvIGludGVncmF0ZSB3aXRoIFZvSVAgYW5kIG9yIFNJUC4NCisJCQkJT3Blbk1lZXRpbmdzIGRvZXMgbm90IHByb3ZpZGUgb3V0IG9mIHRoZSBib3ggYSByZWFkeSB0byBydW4gVm9JUA0KKwkJCQlpbnRlZ3JhdGlvbiAvIGludGVncmF0aW9uIHRvIGNlbGwgcGhvbmUgb3IgdXN1YWwgbGFuZCBsYW5lLg0KKwkJCQlUaGUNCisJCQkJbmF0dXJlIG9mIHN1Y2ggaW50ZWdyYXRpb25zIGlzIHRoYXQgaXQgZGVwZW5kcyBoZWF2aWx5IG9uIHRoZQ0KKwkJCQlpbmZyYXN0cnVjdHVyZSB0aGF0IHlvdSBhcmUgdXNpbmcgYW5kIHdoZXJlIHlvdSB3b3VsZCBsaWtlIHRvDQorCQkJCWludGVncmF0ZSBPcGVuTWVldGluZ3MgaW50by4NCisJCQkJPGJyIC8+DQorCQkJCTxiciAvPg0KKwkJCQlJdCBhbHNvIGRlcGVuZHMgb24gYSBudW1iZXIgb2YgZmFjdG9ycyBvZiB3aGljaCBPcGVuTWVldGluZ3MgaXMNCisJCQkJaW1wb3NzaWJsZSB0byBzZXQgdXAgZm9yIHlvdSwgZm9yIGV4YW1wbGUgc2V0dGluZyB1cCB5b3VyIFZvSVANCisJCQkJc2VydmVyIG9yIHByb3ZpZGUgeW91IHdpdGggYSByYW5nZSBvZiB0ZWxlcGhvbmUgbnVtYmVycyByZXNlcnZlZCBmb3INCisJCQkJY29uZmVyZW5jZSBjYWxscyBpbiB5b3VyIG5hdGlvbmFsIHBob25lIG5ldHdvcmsuDQorCQkJCVN1Y2ggYW4gaW50ZWdyYXRpb24NCisJCQkJcHJvamVjdCBpcyBsaWtlbHkgdG8gYmVjb21lIGEgY29uc3VsdGluZyBqb2IgZm9yIGENCisJCQkJdGVsZWNvbW11bmljYXRpb25zIGNvbnN1bHRhbnQuDQorCQkJCTxiciAvPg0KKwkJCQk8YnIgLz4NCisJCQkJVG8gZ2V0IGhlbHAgb24gdGhlIGludGVncmF0aW9uIHlvdSBjYW4gY29udGFjdCB0aGUNCisJCQkJPGEgaHJlZj0ibWFpbC1saXN0cy5odG1sIj5tYWlsaW5nIGxpc3RzPC9hPg0KKwkJCQlvciBmb3IgZXhhbXBsZSBzb21lYm9keSBmcm9tIHRoZSBsaXN0IG9mDQorCQkJCTxhIGhyZWY9ImNvbW1lcmNpYWwtc3VwcG9ydC5odG1sIj5jb21tZXJjaWFsIHN1cHBvcnQ8L2E+DQorCQkJCS4NCisgICAgICAgICAgICAgICAgPGJyIC8+PGJyIC8+DQorICAgICAgICAgICAgICAgIDxhIGhyZWY9InJlZDVzaXAtaW50ZWdyYXRpb25fMi4wLmh0bWwiPg0KKyAgICAgICAgICAgICAgICBJbnN0cnVjdGlvbiBob3ctdG8gc2V0IHVwIE9wZW5NZWV0aW5ncyBTSVAtVHJhbnNwb3J0IGludGVncmF0aW9uIGZvciBPcGVubWVldGluZ3MgMi4wDQorICAgICAgICAgICAgICAgIDwvYT4uPGJyIC8+DQorICAgICAgICAgICAgICAgIDxhIGhyZWY9InJlZDVzaXAtaW50ZWdyYXRpb25fMi4xLmh0bWwiPg0KKyAgICAgICAgICAgICAgICBJbnN0cnVjdGlvbiBob3ctdG8gc2V0IHVwIE9wZW5NZWV0aW5ncyBTSVAtVHJhbnNwb3J0IGludGVncmF0aW9uIGZvciBPcGVubWVldGluZ3MgMi4xDQorICAgICAgICAgICAgICAgIDwvYT4uPGJyIC8+DQorCQkJPC9wPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgIDwvdHI+CisKKyAgICAgICAgICAgICAgICA8IS0tIEZPT1RFUiAtLT4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8aHIgbm9zaGFkZT0ibm9zaGFkZSIgc2l6ZT0iMSIvPgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKyAgICAgICAgICAgICAgICA8dHI+PHRkIGNvbHNwYW49IjIiPgorICAgICAgICAgICAgICAgICAgICA8ZGl2IGFsaWduPSJjZW50ZXIiPjxmb250IGNvbG9yPSIjMTIzNDY1IiBzaXplPSItMSI+PGVtPgorICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgJiMxNjk7IDIwMDMtMjAxMywgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisgICAgICAgICAgICAgICAgICAgIDwvZW0+PC9mb250PjwvZGl2PgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2JvZHk+CisgICAgPC9odG1sPgorPCEtLSBlbmQgdGhlIHByb2Nlc3NpbmcgLS0+CisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKKworCisKZGlmZiAtLWdpdCBhL2l2eS54bWwgYi9pdnkueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiNDM1M2EKLS0tIC9kZXYvbnVsbAorKysgYi9pdnkueG1sCkBAIC0wLDAgKzEsMzYzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLQorICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAtLT4KKzxpdnktbW9kdWxlIHZlcnNpb249IjIuMCIKKwl4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgorCXhzaTpub05hbWVzcGFjZVNjaGVtYUxvY2F0aW9uPSJodHRwOi8vYW50LmFwYWNoZS5vcmcvaXZ5L3NjaGVtYXMvaXZ5LnhzZCI+CisJPGluZm8gb3JnYW5pc2F0aW9uPSJhcGFjaGUiIG1vZHVsZT0ib3Blbm1lZXRpbmdzIiAvPgorCTxjb25maWd1cmF0aW9ucyBkZWZhdWx0Y29uZm1hcHBpbmc9ImRlZmF1bHQiPgorCQk8Y29uZiBuYW1lPSJkZWZhdWx0IiAvPgorCQk8Y29uZiBuYW1lPSJtYWlubGliIiBleHRlbmRzPSJkZWZhdWx0IiBkZXNjcmlwdGlvbj0iVG9wIGxldmVsIGxpYnJhcmllcyIgLz4KKwkJPGNvbmYgbmFtZT0ibWFpbmxpYi5leHQiIGV4dGVuZHM9Im1haW5saWIiIGRlc2NyaXB0aW9uPSJUb3AgbGV2ZWwgbGlicmFyaWVzIHdpdGggZGlmZmVyZW50IHBhdHRlcm4iIC8+CisJCTxjb25mIG5hbWU9Im9wZW5tZWV0aW5ncyIgZGVzY3JpcHRpb249Ik9wZW5tZWV0aW5ncyByZXF1aXJlZCBsaWJyYXJpZXMiIC8+CisJCTxjb25mIG5hbWU9Im9wZW5tZWV0aW5ncy5leHQiIGV4dGVuZHM9Im9wZW5tZWV0aW5ncyIgZGVzY3JpcHRpb249Ik9wZW5tZWV0aW5ncyByZXF1aXJlZCBsaWJyYXJpZXMgd2l0aCBkaWZmZXJlbnQgcGF0dGVybiIgLz4KKwkJPGNvbmYgbmFtZT0ib3Blbm1lZXRpbmdzLmF4aXMyIiBleHRlbmRzPSJvcGVubWVldGluZ3MuZXh0IiBkZXNjcmlwdGlvbj0iQXhpcyByZXF1aXJlZCBsaWJyYXJpZXMgd2l0aCBkZXBlbmRlbmNpZXMiIC8+CisJCTxjb25mIG5hbWU9ImFuYWtpYSIgZGVzY3JpcHRpb249Ik9wZW5tZWV0aW5ncyByZXF1aXJlZCBsaWJyYXJpZXMiIC8+CisJCTxjb25mIG5hbWU9Imp1bml0IiBkZXNjcmlwdGlvbj0iVW5pdCB0ZXN0aW5nIGRlcGVuZGVuY2llcyIgLz4KKwkJPGNvbmYgbmFtZT0iY21kYWRtaW4iIGRlc2NyaXB0aW9uPSJDb21tYW5kIExpbmUgQWRtaW4gZGVwZW5kZW5jaWVzIiAvPgorCQk8Y29uZiBuYW1lPSJyYXQiIGV4dGVuZHM9ImNtZGFkbWluIiBkZXNjcmlwdGlvbj0iQXBhY2hlIFJhdCBkZXBlbmRlbmNpZXMiIC8+CisJCTxjb25mIG5hbWU9ImR0ZCIgZGVzY3JpcHRpb249IkR0ZC1nZW5lcmF0b3IgZGVwZW5kZW5jaWVzIiAvPgorCQk8Y29uZiBuYW1lPSJzdm50YXNrIiBkZXNjcmlwdGlvbj0iU3ZuIHRhc2sgZGVwZW5kZW5jaWVzIiAvPgorCQk8Y29uZiBuYW1lPSJvcGVubGFzemxvIiBkZXNjcmlwdGlvbj0iT3Blbmxhc3psbyBkZXBlbmRlbmNpZXMiIC8+CisJCTxjb25mIG5hbWU9Im9wZW5sYXN6bG80NiIgZGVzY3JpcHRpb249Ik9wZW5sYXN6bG8gd2l0aCBGbGV4IDQuNiBkZXBlbmRlbmNpZXMiIC8+CisJCTxjb25mIG5hbWU9Im15c3FsIiBkZXNjcmlwdGlvbj0iTXlTUUwgSkRCQyBkcml2ZXIiIC8+CisJCTxjb25mIG5hbWU9InRvbWNhdDciIGRlc2NyaXB0aW9uPSJMaWJyYXJpZXMgbmVjZXNzYXJ5IGZvciBwYXRjaGluZyBSZWQ1IHRvIHVzZSBUb21jYXQ3IiAvPgorCTwvY29uZmlndXJhdGlvbnM+CisJPGRlcGVuZGVuY2llcz4KKwkJPCEtLSAgU1RBUlQgT0YgbWFpbmxpYiAtLT4KKwkJPGRlcGVuZGVuY3kgb3JnPSJjb21tb25zLWZpbGV1cGxvYWQiIG5hbWU9ImNvbW1vbnMtZmlsZXVwbG9hZCIgcmV2PSIxLjIuMiIgdHJhbnNpdGl2ZT0iZmFsc2UiPgorCQkJPGluY2x1ZGUgdHlwZT0iamFyIiAvPgorCQk8L2RlcGVuZGVuY3k+CisJCTxkZXBlbmRlbmN5IG9yZz0iY29tbW9ucy1pbyIgbmFtZT0iY29tbW9ucy1pbyIgcmV2PSIyLjEiIHRyYW5zaXRpdmU9ImZhbHNlIj4KKwkJCTxpbmNsdWRlIHR5cGU9ImphciIgLz4KKwkJPC9kZXBlbmRlbmN5PgorCQk8ZGVwZW5kZW5jeSBvcmc9Im9yZy5zcHJpbmdmcmFtZXdvcmsiIG5hbWU9Im9yZy5zcHJpbmdmcmFtZXdvcmsuYXNwZWN0cyIgcmV2PSIzLjEuMS5SRUxFQVNFIiB0cmFuc2l0aXZlPSJmYWxzZSI+CisJCQk8aW5jbHVkZSB0eXBlPSJqYXIiIC8+CisJCTwvZGVwZW5kZW5jeT4KKwkJPGRlcGVuZGVuY3kgb3JnPSJvcmcuc3ByaW5nZnJhbWV3b3JrIiBuYW1lPSJvcmcuc3ByaW5nZnJhbWV3b3JrLmpkYmMiIHJldj0iMy4xLjEuUkVMRUFTRSIgdHJhbnNpdGl2ZT0iZmFsc2UiPgorCQkJPGluY2x1ZGUgdHlwZT0iamFyIiAvPgorCQk8L2RlcGVuZGVuY3k+CisJCTxkZXBlbmRlbmN5IG9yZz0ib3JnLnNwcmluZ2ZyYW1ld29yayIgbmFtZT0ib3JnLnNwcmluZ2ZyYW1ld29yay5vcm0iIHJldj0iMy4xLjEuUkVMRUFTRSIgdHJhbnNpdGl2ZT0iZmFsc2UiPgorCQkJPGluY2x1ZGUgdHlwZT0iamFyIiAvPgorCQk8L2RlcGVuZGVuY3k+CisJCTxkZXBlbmRlbmN5IG9yZz0ib3JnLnNwcmluZ2ZyYW1ld29yayIgbmFtZT0ib3JnLnNwcmluZ2ZyYW1ld29yay50cmFuc2FjdGlvbiIgcmV2PSIzLjEuMS5SRUxFQVNFIiB0cmFuc2l0aXZlPSJmYWxzZSI+CisJCQk8aW5jbHVkZSB0eXBlPSJqYXIiIC8+CisJCTwvZGVwZW5kZW5jeT4KKwkJPGRlcGVuZGVuY3kgb3JnPSJvcmcuc3ByaW5nZnJhbWV3b3JrIiBuYW1lPSJvcmcuc3ByaW5nZnJhbWV3b3JrLndlYi5zZXJ2bGV0IiByZXY9IjMuMS4xLlJFTEVBU0UiIHRyYW5zaXRpdmU9ImZhbHNlIj4KKwkJCTxpbmNsdWRlIHR5cGU9ImphciIgLz4KKwkJPC9kZXBlbmRlbmN5PgorCQk8ZGVwZW5kZW5jeSBvcmc9ImNnbGliIiBuYW1lPSJjZ2xpYiIgcmV2PSIyLjIuMiIgdHJhbnNpdGl2ZT0iZmFsc2UiPgorCQkJPGluY2x1ZGUgdHlwZT0iamFyIiAvPgorCQk8L2RlcGVuZGVuY3k+CisJCTwhLS0gaW5jbHVkZSB0eXBlPSJidW5kbGUiIC8gRklYTUUgdW5hYmxlIHRvIGdldCBvcGVuanBhIHdpdGhvdXQgIHNvdXJjZXMgLS0+CisJCTxkZXBlbmRlbmN5IG9yZz0ib3JnLmFwYWNoZS5nZXJvbmltby5zcGVjcyIgbmFtZT0iZ2Vyb25pbW8tanBhXzIuMF9zcGVjIiByZXY9IjEuMSIgY29uZj0ibWFpbmxpYi5leHQtPioiIHRyYW5zaXRpdmU9ImZhbHNlIi8+CisJCTwhLS0gIEVORCBPRiBtYWlubGliIC0tPgorCQkKKwkJPCEtLSAgU1RBUlQgT0YgQU5BS0lBIC0tPgorCQk8ZGVwZW5kZW5jeSBvcmc9Im9yZy5qZG9tIiBuYW1lPSJqZG9tIiByZXY9IjEuMSIgY29uZj0iYW5ha2lhLT4qIiB0cmFuc2l0aXZlPSJmYWxzZSI+CisJCQk8aW5jbHVkZSB0eXBlPSJqYXIiIC8+CisJCTwvZGVwZW5kZW5jeT4KKwkJPGRlcGVuZGVuY3kgb3JnPSJsb2draXQiIG5hbWU9ImxvZ2tpdCIgcmV2PSIxLjAuMSIgY29uZj0iYW5ha2lhLT4qIiB0cmFuc2l0aXZlPSJmYWxzZSI+CisJCQk8aW5jbHVkZSB0eXBlPSJqYXIiIC8+CisJCTwvZGVwZW5kZW5jeT4KKwkJPGRlcGVuZGVuY3kgb3JnPSJvcm8iIG5hbWU9Im9ybyIgcmV2PSIyLjAuOCIgY29uZj0iYW5ha2lhLT4qIiB0cmFuc2l0aXZlPSJmYWxzZSI+CisJCQk8aW5jbHVkZSB0eXBlPSJqYXIiIC8+CisJCTwvZGVwZW5kZW5jeT4KKwkJPCEtLSAgRU5EIE9GIEFOQUtJQSAtLT4KKworCQk8IS0tICBTVEFSVCBPRiBPUEVOTUVFVElOR1MgLS0+CisJCTxkZXBlbmRlbmN5IG9yZz0ib3JnLmFwYWNoZS5heGlzMiIgbmFtZT0iYXhpczIiIHJldj0iMS43LjAtU05BUFNIT1QiIGNvbmY9Im9wZW5tZWV0aW5ncy0+KiIgdHJhbnNpdGl2ZT0iZmFsc2UiPgorCQkJPGluY2x1ZGUgdHlwZT0iamFyIiAvPgorCQk8L2RlcGVuZGVuY3k+CisJCTxkZXBlbmRlbmN5IG9yZz0ib3JnLmFwYWNoZS54bWxncmFwaGljcyIgbmFtZT0iYmF0aWstYW5pbSIgcmV2PSIxLjciIGNvbmY9Im9wZW5tZWV0aW5ncy0+KiIgdHJhbnNpdGl2ZT0iZmFsc2UiPgorCQkJPGluY2x1ZGUgdHlwZT0iamFyIiAvPgorCQk8L2RlcGVuZGVuY3k+CisJCTxkZXBlbmRlbmN5IG9yZz0ib3JnLmFwYWNoZS54bWxncmFwaGljcyIgbmFtZT0iYmF0aWstYXd0LXV0aWwiIHJldj0iMS43IiBjb25mPSJvcGVubWVldGluZ3MtPioiIHRyYW5zaXRpdmU9ImZhbHNlIj4KKwkJCTxpbmNsdWRlIHR5cGU9ImphciIgLz4KKwkJPC9kZXBlbmRlbmN5PgorCQk8ZGVwZW5kZW5jeSBvcmc9Im9yZy5hcGFjaGUueG1sZ3JhcGhpY3MiIG5hbWU9ImJhdGlrLWJyaWRnZSIgcmV2PSIxLjciIGNvbmY9Im9wZW5tZWV0aW5ncy0+KiIgdHJhbnNpdGl2ZT0iZmFsc2UiPgorCQkJPGluY2x1ZGUgdHlwZT0iamFyIiAvPgorCQk8L2RlcGVuZGVuY3k+CisJCTxkZXBlbmRlbmN5IG9yZz0ib3JnLmFwYWNoZS54bWxncmFwaGljcyIgbmFtZT0iYmF0aWstY29kZWMiIHJldj0iMS43IiBjb25mPSJvcGVubWVldGluZ3MtPioiIHRyYW5zaXRpdmU9ImZhbHNlIj4KKwkJCTxpbmNsdWRlIHR5cGU9ImphciIgLz4KKwkJPC9kZXBlbmRlbmN5PgorCQk8ZGVwZW5kZW5jeSBvcmc9Im9yZy5hcGFjaGUueG1sZ3JhcGhpY3MiIG5hbWU9ImJhdGlrLWNzcyIgcmV2PSIxLjciIGNvbmY9Im9wZW5tZWV0aW5ncy0+KiIgdHJhbnNpdGl2ZT0iZmFsc2UiPgorCQkJPGluY2x1ZGUgdHlwZT0iamFyIiAvPgorCQk8L2RlcGVuZGVuY3k+CisJCTxkZXBlbmRlbmN5IG9yZz0ib3JnLmFwYWNoZS54bWxncmFwaGljcyIgbmFtZT0iYmF0aWstZG9tIiByZXY9IjEuNyIgY29uZj0ib3Blbm1lZXRpbmdzLT4qIiB0cmFuc2l0aXZlPSJmYWxzZSI+CisJCQk8aW5jbHVkZSB0eXBlPSJqYXIiIC8+CisJCTwvZGVwZW5kZW5jeT4KKwkJPGRlcGVuZGVuY3kgb3JnPSJvcmcuYXBhY2hlLnhtbGdyYXBoaWNzIiBuYW1lPSJiYXRpay1leHQiIHJldj0iMS43IiBjb25mPSJvcGVubWVldGluZ3MtPioiIHRyYW5zaXRpdmU9ImZhbHNlIj4KKwkJCTxpbmNsdWRlIHR5cGU9ImphciIgLz4KKwkJPC9kZXBlbmRlbmN5PgorCQk8ZGVwZW5kZW5jeSBvcmc9Im9yZy5hcGFjaGUueG1sZ3JhcGhpY3MiIG5hbWU9ImJhdGlrLWV4dGVuc2lvbiIgcmV2PSIxLjciIGNvbmY9Im9wZW5tZWV0aW5ncy0+KiIgdHJhbnNpdGl2ZT0iZmFsc2UiPgorCQkJPGluY2x1ZGUgdHlwZT0iamFyIiAvPgorCQk8L2RlcGVuZGVuY3k+CisJCTxkZXBlbmRlbmN5IG9yZz0ib3JnLmFwYWNoZS54bWxncmFwaGljcyIgbmFtZT0iYmF0aWstZ3VpLXV0aWwiIHJldj0iMS43IiBjb25mPSJvcGVubWVldGluZ3MtPioiIHRyYW5zaXRpdmU9ImZhbHNlIj4KKwkJCTxpbmNsdWRlIHR5cGU9ImphciIgLz4KKwkJPC9kZXBlbmRlbmN5PgorCQk8ZGVwZW5kZW5jeSBvcmc9Im9yZy5hcGFjaGUueG1sZ3JhcGhpY3MiIG5hbWU9ImJhdGlrLWd2dCIgcmV2PSIxLjciIGNvbmY9Im9wZW5tZWV0aW5ncy0+KiIgdHJhbnNpdGl2ZT0iZmFsc2UiPgorCQkJPGluY2x1ZGUgdHlwZT0iamFyIiAvPgorCQk8L2RlcGVuZGVuY3k+CisJCTxkZXBlbmRlbmN5IG9yZz0ib3JnLmFwYWNoZS54bWxncmFwaGljcyIgbmFtZT0iYmF0aWstcGFyc2VyIiByZXY9IjEuNyIgY29uZj0ib3Blbm1lZXRpbmdzLT4qIiB0cmFuc2l0aXZlPSJmYWxzZSI+CisJCQk8aW5jbHVkZSB0eXBlPSJqYXIiIC8+CisJCTwvZGVwZW5kZW5jeT4KKwkJPGRlcGVuZGVuY3kgb3JnPSJvcmcuYXBhY2hlLnhtbGdyYXBoaWNzIiBuYW1lPSJiYXRpay1yYXN0ZXJpemVyIiByZXY9IjEuNyIgY29uZj0ib3Blbm1lZXRpbmdzLT4qIiB0cmFuc2l0aXZlPSJmYWxzZSI+CisJCQk8aW5jbHVkZSB0eXBlPSJqYXIiIC8+CisJCTwvZGVwZW5kZW5jeT4KKwkJPGRlcGVuZGVuY3kgb3JnPSJvcmcuYXBhY2hlLnhtbGdyYXBoaWNzIiBuYW1lPSJiYXRpay1zY3JpcHQiIHJldj0iMS43IiBjb25mPSJvcGVubWVldGluZ3MtPioiIHRyYW5zaXRpdmU9ImZhbHNlIj4KKwkJCTxpbmNsdWRlIHR5cGU9ImphciIgLz4KKwkJPC9kZXBlbmRlbmN5PgorCQk8ZGVwZW5kZW5jeSBvcmc9Im9yZy5hcGFjaGUueG1sZ3JhcGhpY3MiIG5hbWU9ImJhdGlrLXNsaWRlc2hvdyIgcmV2PSIxLjciIGNvbmY9Im9wZW5tZWV0aW5ncy0+KiIgdHJhbnNpdGl2ZT0iZmFsc2UiPgorCQkJPGluY2x1ZGUgdHlwZT0iamFyIiAvPgorCQk8L2RlcGVuZGVuY3k+CisJCTxkZXBlbmRlbmN5IG9yZz0ib3JnLmFwYWNoZS54bWxncmFwaGljcyIgbmFtZT0iYmF0aWstc3F1aWdnbGUiIHJldj0iMS43IiBjb25mPSJvcGVubWVldGluZ3MtPioiIHRyYW5zaXRpdmU9ImZhbHNlIj4KKwkJCTxpbmNsdWRlIHR5cGU9ImphciIgLz4KKwkJPC9kZXBlbmRlbmN5PgorCQk8ZGVwZW5kZW5jeSBvcmc9Im9yZy5hcGFjaGUueG1sZ3JhcGhpY3MiIG5hbWU9ImJhdGlrLXN2Zy1kb20iIHJldj0iMS43IiBjb25mPSJvcGVubWVldGluZ3MtPioiIHRyYW5zaXRpdmU9ImZhbHNlIj4KKwkJCTxpbmNsdWRlIHR5cGU9ImphciIgLz4KKwkJPC9kZXBlbmRlbmN5PgorCQk8ZGVwZW5kZW5jeSBvcmc9Im9yZy5hcGFjaGUueG1sZ3JhcGhpY3MiIG5hbWU9ImJhdGlrLXN2Z2dlbiIgcmV2PSIxLjciIGNvbmY9Im9wZW5tZWV0aW5ncy0+KiIgdHJhbnNpdGl2ZT0iZmFsc2UiPgorCQkJPGluY2x1ZGUgdHlwZT0iamFyIiAvPgorCQk8L2RlcGVuZGVuY3k+CisJCTxkZXBlbmRlbmN5IG9yZz0ib3JnLmFwYWNoZS54bWxncmFwaGljcyIgbmFtZT0iYmF0aWstc3ZncHAiIHJldj0iMS43IiBjb25mPSJvcGVubWVldGluZ3MtPioiIHRyYW5zaXRpdmU9ImZhbHNlIj4KKwkJCTxpbmNsdWRlIHR5cGU9ImphciIgLz4KKwkJPC9kZXBlbmRlbmN5PgorCQk8ZGVwZW5kZW5jeSBvcmc9Im9yZy5hcGFjaGUueG1sZ3JhcGhpY3MiIG5hbWU9ImJhdGlrLXN3aW5nIiByZXY9IjEuNyIgY29uZj0ib3Blbm1lZXRpbmdzLT4qIiB0cmFuc2l0aXZlPSJmYWxzZSI+CisJCQk8aW5jbHVkZSB0eXBlPSJqYXIiIC8+CisJCTwvZGVwZW5kZW5jeT4KKwkJPGRlcGVuZGVuY3kgb3JnPSJvcmcuYXBhY2hlLnhtbGdyYXBoaWNzIiBuYW1lPSJiYXRpay10cmFuc2NvZGVyIiByZXY9IjEuNyIgY29uZj0ib3Blbm1lZXRpbmdzLT4qIiB0cmFuc2l0aXZlPSJmYWxzZSI+CisJCQk8aW5jbHVkZSB0eXBlPSJqYXIiIC8+CisJCTwvZGVwZW5kZW5jeT4KKwkJPGRlcGVuZGVuY3kgb3JnPSJvcmcuYXBhY2hlLnhtbGdyYXBoaWNzIiBuYW1lPSJiYXRpay10dGYyc3ZnIiByZXY9IjEuNyIgY29uZj0ib3Blbm1lZXRpbmdzLT4qIiB0cmFuc2l0aXZlPSJmYWxzZSI+CisJCQk8aW5jbHVkZSB0eXBlPSJqYXIiIC8+CisJCTwvZGVwZW5kZW5jeT4KKwkJPGRlcGVuZGVuY3kgb3JnPSJvcmcuYXBhY2hlLnhtbGdyYXBoaWNzIiBuYW1lPSJiYXRpay11dGlsIiByZXY9IjEuNyIgY29uZj0ib3Blbm1lZXRpbmdzLT4qIiB0cmFuc2l0aXZlPSJmYWxzZSI+CisJCQk8aW5jbHVkZSB0eXBlPSJqYXIiIC8+CisJCTwvZGVwZW5kZW5jeT4KKwkJPGRlcGVuZGVuY3kgb3JnPSJvcmcuYXBhY2hlLnhtbGdyYXBoaWNzIiBuYW1lPSJiYXRpay14bWwiIHJldj0iMS43IiBjb25mPSJvcGVubWVldGluZ3MtPioiIHRyYW5zaXRpdmU9ImZhbHNlIj4KKwkJCTxpbmNsdWRlIHR5cGU9ImphciIgLz4KKwkJPC9kZXBlbmRlbmN5PgorCQk8ZGVwZW5kZW5jeSBvcmc9Im9yZy5hcGFjaGUueG1sZ3JhcGhpY3MiIG5hbWU9ImZvcCIgcmV2PSIxLjAiIGNvbmY9Im9wZW5tZWV0aW5ncy0+KiIgdHJhbnNpdGl2ZT0iZmFsc2UiPgorCQkJPGluY2x1ZGUgdHlwZT0iamFyIiAvPgorCQk8L2RlcGVuZGVuY3k+CisJCTxkZXBlbmRlbmN5IG9yZz0ib3JnLmFwYWNoZS54bWxncmFwaGljcyIgbmFtZT0ieG1sZ3JhcGhpY3MtY29tbW9ucyIgcmV2PSIxLjQiIGNvbmY9Im9wZW5tZWV0aW5ncy0+KiIgdHJhbnNpdGl2ZT0iZmFsc2UiPgorCQkJPGluY2x1ZGUgdHlwZT0iamFyIiAvPgorCQk8L2RlcGVuZGVuY3k+CisJCTxkZXBlbmRlbmN5IG9yZz0ieG1sLWFwaXMiIG5hbWU9InhtbC1hcGlzLWV4dCIgcmV2PSIxLjMuMDQiIGNvbmY9Im9wZW5tZWV0aW5ncy0+KiIgdHJhbnNpdGl2ZT0iZmFsc2UiPgorCQkJPGluY2x1ZGUgdHlwZT0iamFyIiAvPgorCQk8L2RlcGVuZGVuY3k+CisJCTxkZXBlbmRlbmN5IG9yZz0ib3JnLmFwYWNoZS5kZXJieSIgbmFtZT0iZGVyYnkiIHJldj0iMTAuOC4yLjIiIGNvbmY9Im9wZW5tZWV0aW5ncy0+KiIgdHJhbnNpdGl2ZT0iZmFsc2UiPgorCQkJPGluY2x1ZGUgdHlwZT0iamFyIiAvPgorCQk8L2RlcGVuZGVuY3k+CisJCTxkZXBlbmRlbmN5IG9yZz0ib3JnLmFwYWNoZS5kZXJieSIgbmFtZT0iZGVyYnljbGllbnQiIHJldj0iMTAuOC4yLjIiIGNvbmY9Im9wZW5tZWV0aW5ncy0+KiIgdHJhbnNpdGl2ZT0iZmFsc2UiPgorCQkJPGluY2x1ZGUgdHlwZT0iamFyIiAvPgorCQk8L2RlcGVuZGVuY3k+CisJCTxkZXBlbmRlbmN5IG9yZz0icG9zdGdyZXNxbCIgbmFtZT0icG9zdGdyZXNxbCIgcmV2PSI5LjEtOTAxLmpkYmM0IiBjb25mPSJvcGVubWVldGluZ3MtPioiIHRyYW5zaXRpdmU9ImZhbHNlIj4KKwkJCTxpbmNsdWRlIHR5cGU9ImphciIgLz4KKwkJPC9kZXBlbmRlbmN5PgorCQk8ZGVwZW5kZW5jeSBvcmc9ImRvbTRqIiBuYW1lPSJkb200aiIgcmV2PSIxLjYuMSIgY29uZj0ib3Blbm1lZXRpbmdzLT4qIiB0cmFuc2l0aXZlPSJmYWxzZSI+CisJCQk8aW5jbHVkZSB0eXBlPSJqYXIiIC8+CisJCTwvZGVwZW5kZW5jeT4KKwkJPGRlcGVuZGVuY3kgb3JnPSJvcmcuYXBhY2hlLnZlbG9jaXR5IiBuYW1lPSJ2ZWxvY2l0eSIgcmV2PSIxLjciIGNvbmY9Im9wZW5tZWV0aW5ncy0+KiIgdHJhbnNpdGl2ZT0iZmFsc2UiPgorCQkJPGluY2x1ZGUgdHlwZT0iamFyIiAvPgorCQk8L2RlcGVuZGVuY3k+CisJCTxkZXBlbmRlbmN5IG9yZz0ib3JnLmFwYWNoZS52ZWxvY2l0eSIgbmFtZT0idmVsb2NpdHktdG9vbHMiIHJldj0iMi4wIiBjb25mPSJvcGVubWVldGluZ3MtPioiIHRyYW5zaXRpdmU9ImZhbHNlIj4KKwkJCTxpbmNsdWRlIHR5cGU9ImphciIgLz4KKwkJPC9kZXBlbmRlbmN5PgorCQk8ZGVwZW5kZW5jeSBvcmc9ImNvbW1vbnMtbGFuZyIgbmFtZT0iY29tbW9ucy1sYW5nIiByZXY9IjIuNiIgY29uZj0ib3Blbm1lZXRpbmdzLT4qIiB0cmFuc2l0aXZlPSJmYWxzZSI+CisJCQk8aW5jbHVkZSB0eXBlPSJqYXIiIC8+CisJCTwvZGVwZW5kZW5jeT4KKwkJPCEtLSAgYWRkZWQgdG8gYXZvaWQgZG93bmxvYWRpbmcgdmVyc2lvbiAxLjMgd2l0aCBBeGlzMiAtLT4KKwkJPGRlcGVuZGVuY3kgb3JnPSJjb21tb25zLWNvZGVjIiBuYW1lPSJjb21tb25zLWNvZGVjIiByZXY9IjEuNiIgY29uZj0ib3Blbm1lZXRpbmdzLT4qIiB0cmFuc2l0aXZlPSJmYWxzZSI+CisJCQk8aW5jbHVkZSB0eXBlPSJqYXIiIC8+CisJCTwvZGVwZW5kZW5jeT4KKwkJPGRlcGVuZGVuY3kgb3JnPSJjb20udGhvdWdodHdvcmtzLnhzdHJlYW0iIG5hbWU9InhzdHJlYW0iIHJldj0iMS40LjIiIGNvbmY9Im9wZW5tZWV0aW5ncy0+KiIgdHJhbnNpdGl2ZT0iZmFsc2UiPgorCQkJPGluY2x1ZGUgdHlwZT0iamFyIiAvPgorCQk8L2RlcGVuZGVuY3k+CisJCTxkZXBlbmRlbmN5IG9yZz0ib3JnLmFwYWNoZS53cy5jb21tb25zLnV0aWwiIG5hbWU9IndzLWNvbW1vbnMtdXRpbCIgcmV2PSIxLjAuMiIgY29uZj0ib3Blbm1lZXRpbmdzLT4qIiB0cmFuc2l0aXZlPSJmYWxzZSI+CisJCQk8aW5jbHVkZSB0eXBlPSJqYXIiIC8+CisJCTwvZGVwZW5kZW5jeT4KKwkJPGRlcGVuZGVuY3kgb3JnPSJvcmcuYXBhY2hlLnhtbHJwYyIgbmFtZT0ieG1scnBjLWNvbW1vbiIgcmV2PSIzLjEuMyIgY29uZj0ib3Blbm1lZXRpbmdzLT4qIiB0cmFuc2l0aXZlPSJmYWxzZSI+CisJCQk8aW5jbHVkZSB0eXBlPSJqYXIiIC8+CisJCTwvZGVwZW5kZW5jeT4KKwkJPGRlcGVuZGVuY3kgb3JnPSJvcmcuYXBhY2hlLnhtbHJwYyIgbmFtZT0ieG1scnBjLWNsaWVudCIgcmV2PSIzLjEuMyIgY29uZj0ib3Blbm1lZXRpbmdzLT4qIiB0cmFuc2l0aXZlPSJmYWxzZSI+CisJCQk8aW5jbHVkZSB0eXBlPSJqYXIiIC8+CisJCTwvZGVwZW5kZW5jeT4KKwkJPGRlcGVuZGVuY3kgb3JnPSJjb21tb25zLXRyYW5zYWN0aW9uIiBuYW1lPSJjb21tb25zLXRyYW5zYWN0aW9uIiByZXY9IjEuMiIgY29uZj0ib3Blbm1lZXRpbmdzLT4qIiB0cmFuc2l0aXZlPSJmYWxzZSI+CisJCQk8aW5jbHVkZSB0eXBlPSJqYXIiIC8+CisJCTwvZGVwZW5kZW5jeT4KKwkJPGRlcGVuZGVuY3kgb3JnPSJuZXQuc291cmNlZm9yZ2Uuc2VycCIgbmFtZT0ic2VycCIgcmV2PSIxLjEzLjEiIGNvbmY9Im9wZW5tZWV0aW5ncy0+KiIgdHJhbnNpdGl2ZT0iZmFsc2UiPgorCQkJPGluY2x1ZGUgdHlwZT0iamFyIiAvPgorCQk8L2RlcGVuZGVuY3k+CisJCTxkZXBlbmRlbmN5IG9yZz0iY29tbW9ucy1kYmNwIiBuYW1lPSJjb21tb25zLWRiY3AiIHJldj0iMS40IiBjb25mPSJvcGVubWVldGluZ3MtPioiIHRyYW5zaXRpdmU9ImZhbHNlIj4KKwkJCTxpbmNsdWRlIHR5cGU9ImphciIgLz4KKwkJPC9kZXBlbmRlbmN5PgorCQk8ZGVwZW5kZW5jeSBvcmc9ImNvbW1vbnMtZGlnZXN0ZXIiIG5hbWU9ImNvbW1vbnMtZGlnZXN0ZXIiIHJldj0iMi4xIiBjb25mPSJvcGVubWVldGluZ3MtPioiIHRyYW5zaXRpdmU9ImZhbHNlIj4KKwkJCTxpbmNsdWRlIHR5cGU9ImphciIgLz4KKwkJPC9kZXBlbmRlbmN5PgorCQk8ZGVwZW5kZW5jeSBvcmc9InhwcDMiIG5hbWU9InhwcDMiIHJldj0iMS4xLjRjIiBjb25mPSJvcGVubWVldGluZ3MtPioiIHRyYW5zaXRpdmU9ImZhbHNlIj4KKwkJCTxpbmNsdWRlIHR5cGU9ImphciIgLz4KKwkJPC9kZXBlbmRlbmN5PgorCQk8ZGVwZW5kZW5jeSBvcmc9ImphdmF4Lm1haWwiIG5hbWU9Im1haWwiIHJldj0iMS40LjQiIGNvbmY9Im9wZW5tZWV0aW5ncy0+KiIgdHJhbnNpdGl2ZT0iZmFsc2UiPgorCQkJPGluY2x1ZGUgdHlwZT0iamFyIiAvPgorCQk8L2RlcGVuZGVuY3k+CisJCTxkZXBlbmRlbmN5IG9yZz0ib3JnLnNpbXBsZWZyYW1ld29yayIgbmFtZT0ic2ltcGxlLXhtbCIgcmV2PSIyLjYuOSIgY29uZj0ib3Blbm1lZXRpbmdzLT4qIiB0cmFuc2l0aXZlPSJmYWxzZSI+CisJCQk8aW5jbHVkZSB0eXBlPSJqYXIiIC8+CisJCTwvZGVwZW5kZW5jeT4KKwkJPGRlcGVuZGVuY3kgb3JnPSJvcmcuYXBhY2hlLndpY2tldCIgbmFtZT0id2lja2V0LXJlcXVlc3QiIHJldj0iNi42LjAiIGNvbmY9Im9wZW5tZWV0aW5ncy0+KiIgdHJhbnNpdGl2ZT0iZmFsc2UiPgorCQkJPGluY2x1ZGUgdHlwZT0iamFyIiAvPgorCQk8L2RlcGVuZGVuY3k+CisJCTxkZXBlbmRlbmN5IG9yZz0ib3JnLmFwYWNoZS53aWNrZXQiIG5hbWU9IndpY2tldC11dGlsIiByZXY9IjYuNi4wIiBjb25mPSJvcGVubWVldGluZ3MtPioiIHRyYW5zaXRpdmU9ImZhbHNlIj4KKwkJCTxpbmNsdWRlIHR5cGU9ImphciIgLz4KKwkJPC9kZXBlbmRlbmN5PgorCQk8ZGVwZW5kZW5jeSBvcmc9Im9yZy5hcGFjaGUud2lja2V0IiBuYW1lPSJ3aWNrZXQtY29yZSIgcmV2PSI2LjYuMCIgY29uZj0ib3Blbm1lZXRpbmdzLT4qIiB0cmFuc2l0aXZlPSJmYWxzZSI+CisJCQk8aW5jbHVkZSB0eXBlPSJqYXIiIC8+CisJCTwvZGVwZW5kZW5jeT4KKwkJPGRlcGVuZGVuY3kgb3JnPSJvcmcuYXBhY2hlLndpY2tldCIgbmFtZT0id2lja2V0LWF1dGgtcm9sZXMiIHJldj0iNi42LjAiIGNvbmY9Im9wZW5tZWV0aW5ncy0+KiIgdHJhbnNpdGl2ZT0iZmFsc2UiPgorCQkJPGluY2x1ZGUgdHlwZT0iamFyIiAvPgorCQk8L2RlcGVuZGVuY3k+CisJCTxkZXBlbmRlbmN5IG9yZz0ib3JnLmFwYWNoZS53aWNrZXQiIG5hbWU9IndpY2tldC1pb2MiIHJldj0iNi42LjAiIGNvbmY9Im9wZW5tZWV0aW5ncy0+KiIgdHJhbnNpdGl2ZT0iZmFsc2UiPgorCQkJPGluY2x1ZGUgdHlwZT0iamFyIiAvPgorCQk8L2RlcGVuZGVuY3k+CisJCTxkZXBlbmRlbmN5IG9yZz0ib3JnLmFwYWNoZS53aWNrZXQiIG5hbWU9IndpY2tldC1leHRlbnNpb25zIiByZXY9IjYuNi4wIiBjb25mPSJvcGVubWVldGluZ3MtPioiIHRyYW5zaXRpdmU9ImZhbHNlIj4KKwkJCTxpbmNsdWRlIHR5cGU9ImphciIgLz4KKwkJPC9kZXBlbmRlbmN5PgorCQk8ZGVwZW5kZW5jeSBvcmc9Im9yZy5hcGFjaGUud2lja2V0IiBuYW1lPSJ3aWNrZXQtZGF0ZXRpbWUiIHJldj0iNi42LjAiIGNvbmY9Im9wZW5tZWV0aW5ncy0+KiIgdHJhbnNpdGl2ZT0iZmFsc2UiPgorCQkJPGluY2x1ZGUgdHlwZT0iamFyIiAvPgorCQk8L2RlcGVuZGVuY3k+CisJCTxkZXBlbmRlbmN5IG9yZz0ib3JnLmFwYWNoZS53aWNrZXQiIG5hbWU9IndpY2tldC1uYXRpdmUtd2Vic29ja2V0LWNvcmUiIHJldj0iMC43IiBjb25mPSJvcGVubWVldGluZ3MtPioiIHRyYW5zaXRpdmU9ImZhbHNlIj4KKwkJCTxpbmNsdWRlIHR5cGU9ImphciIgLz4KKwkJPC9kZXBlbmRlbmN5PgorCQk8ZGVwZW5kZW5jeSBvcmc9Im9yZy5hcGFjaGUud2lja2V0IiBuYW1lPSJ3aWNrZXQtbmF0aXZlLXdlYnNvY2tldC10b21jYXQiIHJldj0iMC43IiBjb25mPSJvcGVubWVldGluZ3MtPioiIHRyYW5zaXRpdmU9ImZhbHNlIj4KKwkJCTxpbmNsdWRlIHR5cGU9ImphciIgLz4KKwkJPC9kZXBlbmRlbmN5PgorCQkKKwkJPCEtLSBpQ2FsNGogc2VlbXMgdG8gbmVlZCB0aGlzIEpBUiAtLT4KKwkJPGRlcGVuZGVuY3kgb3JnPSJlZHUuZW1vcnkubWF0aGNzIiBuYW1lPSJiYWNrcG9ydC11dGlsLWNvbmN1cnJlbnQiIHJldj0iMy4xIiBjb25mPSJvcGVubWVldGluZ3MtPioiLz4KKworCQk8ZGVwZW5kZW5jeSBvcmc9ImNvbW1vbnMtbmV0IiBuYW1lPSJjb21tb25zLW5ldCIgcmV2PSIzLjEiIGNvbmY9Im9wZW5tZWV0aW5ncy0+KiIgdHJhbnNpdGl2ZT0iZmFsc2UiPgorCQkJPGluY2x1ZGUgdHlwZT0iamFyIiAvPgorCQk8L2RlcGVuZGVuY3k+CisJCTxkZXBlbmRlbmN5IG9yZz0iY29tLmdvb2dsZWNvZGUuanNtcHAiIG5hbWU9ImpzbXBwIiByZXY9IjIuMS4wIiBjb25mPSJvcGVubWVldGluZ3MtPioiIHRyYW5zaXRpdmU9ImZhbHNlIj4KKwkJCTxpbmNsdWRlIHR5cGU9ImphciIgLz4KKwkJPC9kZXBlbmRlbmN5PgorCQk8ZGVwZW5kZW5jeSBvcmc9Im9yZy5zbXNsaWIiIG5hbWU9InNtc2xpYiIgcmV2PSIzLjUuMyIgY29uZj0ib3Blbm1lZXRpbmdzLT4qIiB0cmFuc2l0aXZlPSJmYWxzZSI+CisJCQk8aW5jbHVkZSB0eXBlPSJqYXIiIC8+CisJCTwvZGVwZW5kZW5jeT4KKwkJPGRlcGVuZGVuY3kgb3JnPSJvcmcuYXN0ZXJpc2tqYXZhIiBuYW1lPSJhc3Rlcmlzay1qYXZhIiByZXY9IjEuMC4wLkNJLTIwMTMwMTAyLjIxNDUyOC0xMTM0IiBjb25mPSJvcGVubWVldGluZ3MtPioiIHRyYW5zaXRpdmU9ImZhbHNlIj4KKwkJCTxpbmNsdWRlIHR5cGU9ImphciIgLz4KKwkJPC9kZXBlbmRlbmN5PgorCisJCTwhLS0gaW5jbHVkZSB0eXBlPSJidW5kbGUiIC8gRklYTUUgdW5hYmxlIHRvIGdldCBvcGVuanBhIHdpdGhvdXQgIHNvdXJjZXMgLS0+CisJCTxkZXBlbmRlbmN5IG9yZz0ib3JnLm1ub2RlLmljYWw0aiIgbmFtZT0iaWNhbDRqIiByZXY9IjEuMC4zIiBjb25mPSJvcGVubWVldGluZ3MuZXh0LT4qIiB0cmFuc2l0aXZlPSJmYWxzZSIvPgorCQk8ZGVwZW5kZW5jeSBvcmc9Im9yZy5hcGFjaGUub3BlbmpwYSIgbmFtZT0ib3BlbmpwYSIgcmV2PSIyLjIuMSIgY29uZj0ib3Blbm1lZXRpbmdzLmV4dC0+KiIgdHJhbnNpdGl2ZT0iZmFsc2UiLz4KKwkJCisJCTxkZXBlbmRlbmN5IG9yZz0ib3JnLmFwYWNoZS53cy5jb21tb25zLmF4aW9tIiBuYW1lPSJheGlvbS1pbXBsIiByZXY9IjEuMi4xNCIgY29uZj0ib3Blbm1lZXRpbmdzLmF4aXMyLT4qIiB0cmFuc2l0aXZlPSJ0cnVlIj4KKwkJCTxleGNsdWRlIG5hbWU9J2NvbW1vbnMtaW8nIC8+CisJCQk8ZXhjbHVkZSBuYW1lPSdjb21tb25zLWxvZ2dpbmcnIC8+CisJCTwvZGVwZW5kZW5jeT4KKwkJPGRlcGVuZGVuY3kgb3JnPSJvcmcuYXBhY2hlLndzLmNvbW1vbnMuYXhpb20iIG5hbWU9ImF4aW9tLWRvbSIgcmV2PSIxLjIuMTQiIGNvbmY9Im9wZW5tZWV0aW5ncy5heGlzMi0+KiIgdHJhbnNpdGl2ZT0iZmFsc2UiIC8+CisJCTxkZXBlbmRlbmN5IG9yZz0ib3JnLmFwYWNoZS5heGlzMiIgbmFtZT0iYXhpczItdHJhbnNwb3J0LWh0dHAiIHJldj0iMS43LjAtU05BUFNIT1QiIGNvbmY9Im9wZW5tZWV0aW5ncy5heGlzMi0+KiIvPgorCQk8ZGVwZW5kZW5jeSBvcmc9Im9yZy5hcGFjaGUuYXhpczIiIG5hbWU9ImF4aXMyLXRyYW5zcG9ydC1sb2NhbCIgcmV2PSIxLjcuMC1TTkFQU0hPVCIgY29uZj0ib3Blbm1lZXRpbmdzLmF4aXMyLT4qIi8+CisJCTxkZXBlbmRlbmN5IG9yZz0ib3JnLmFwYWNoZS5heGlzMiIgbmFtZT0ibWV4IiByZXY9IjEuNy4wLVNOQVBTSE9UIiBjb25mPSJvcGVubWVldGluZ3MuYXhpczItPioiLz4KKwkJPGRlcGVuZGVuY3kgb3JnPSJvcmcuYXBhY2hlLmF4aXMyIiBuYW1lPSJheGlzMi1qYXh3cyIgcmV2PSIxLjcuMC1TTkFQU0hPVCIgY29uZj0ib3Blbm1lZXRpbmdzLmF4aXMyLT4qIi8+CisJCTwhLS0gIEVORCBPRiBPUEVOTUVFVElOR1MgLS0+CisKKwkJPCEtLSAgU1RBUlQgT0YgSlVOSVQgLS0+CisJCTxkZXBlbmRlbmN5IG9yZz0ianVuaXQiIG5hbWU9Imp1bml0IiByZXY9IjQuOSIgY29uZj0ianVuaXQtPioiIHRyYW5zaXRpdmU9ImZhbHNlIj4KKwkJCTxpbmNsdWRlIHR5cGU9ImphciIgLz4KKwkJPC9kZXBlbmRlbmN5PgorCQk8ZGVwZW5kZW5jeSBvcmc9Im9yZy5zcHJpbmdmcmFtZXdvcmsiIG5hbWU9Im9yZy5zcHJpbmdmcmFtZXdvcmsudGVzdCIgcmV2PSIzLjEuMS5SRUxFQVNFIiBjb25mPSJqdW5pdC0+KiIgdHJhbnNpdGl2ZT0iZmFsc2UiPgorCQkJPGluY2x1ZGUgdHlwZT0iamFyIiAvPgorCQk8L2RlcGVuZGVuY3k+CisJCTxkZXBlbmRlbmN5IG9yZz0iYW50LWNvbnRyaWIiIG5hbWU9ImFudC1jb250cmliIiByZXY9IjEuMGIzIiBjb25mPSJqdW5pdC0+KiIgdHJhbnNpdGl2ZT0iZmFsc2UiPgorCQkJPGluY2x1ZGUgdHlwZT0iamFyIiAvPgorCQk8L2RlcGVuZGVuY3k+CisJCTwhLS0gIEVORCBPRiBKVU5JVCAtLT4KKwkJCisJCTwhLS0gIFNUQVJUIE9GIFJBVCAtLT4KKwkJPGRlcGVuZGVuY3kgb3JnPSJvcmcuYXBhY2hlLnJhdCIgbmFtZT0iYXBhY2hlLXJhdC1jb3JlIiByZXY9IjAuOCIgY29uZj0icmF0LT4qIiB0cmFuc2l0aXZlPSJmYWxzZSI+CisJCQk8aW5jbHVkZSB0eXBlPSJqYXIiIC8+CisJCTwvZGVwZW5kZW5jeT4KKwkJPGRlcGVuZGVuY3kgb3JnPSJvcmcuYXBhY2hlLnJhdCIgbmFtZT0iYXBhY2hlLXJhdC10YXNrcyIgcmV2PSIwLjgiIGNvbmY9InJhdC0+KiIgdHJhbnNpdGl2ZT0iZmFsc2UiPgorCQkJPGluY2x1ZGUgdHlwZT0iamFyIiAvPgorCQk8L2RlcGVuZGVuY3k+CisJCTwhLS0gIEVORCBPRiBSQVQgLS0+CisJCQorCQk8IS0tICBTVEFSVCBPRiBEVEQgLS0+CisJCTxkZXBlbmRlbmN5IG9yZz0iY29tLnRoYWlvcGVuc291cmNlIiBuYW1lPSJ0cmFuZyIgcmV2PSIyMDA5MTExMSIgY29uZj0iZHRkLT4qIiB0cmFuc2l0aXZlPSJmYWxzZSI+CisJCQk8aW5jbHVkZSB0eXBlPSJqYXIiIC8+CisJCTwvZGVwZW5kZW5jeT4KKwkJPCEtLSAgRU5EIE9GIERURCAtLT4KKwkJCisJCTwhLS0gIFNUQVJUIE9GIHN2bnRhc2sgLS0+CisJCTxkZXBlbmRlbmN5IG9yZz0ib3JnLnRtYXRlc29mdC5zdm5raXQiIG5hbWU9InN2bmtpdCIgcmV2PSIxLjcuOCIgY29uZj0ic3ZudGFzay0+KiIgdHJhbnNpdGl2ZT0idHJ1ZSI+CisJCQk8aW5jbHVkZSB0eXBlPSJqYXIiIC8+CisJCTwvZGVwZW5kZW5jeT4KKwkJPGRlcGVuZGVuY3kgb3JnPSJzdm5hbnQiIG5hbWU9InN2bmFudCIgcmV2PSIxLjMuMSIgY29uZj0ic3ZudGFzay0+KiIgdHJhbnNpdGl2ZT0iZmFsc2UiPgorCQkJPGluY2x1ZGUgdHlwZT0iamFyIiAvPgorCQk8L2RlcGVuZGVuY3k+CisJCTxkZXBlbmRlbmN5IG9yZz0ic3ZuQ2xpZW50QWRhcHRlciIgbmFtZT0ic3ZuQ2xpZW50QWRhcHRlciIgcmV2PSIxLjMuMSIgY29uZj0ic3ZudGFzay0+KiIgdHJhbnNpdGl2ZT0iZmFsc2UiPgorCQkJPGluY2x1ZGUgdHlwZT0iamFyIiAvPgorCQk8L2RlcGVuZGVuY3k+CisJCTwhLS0gIEVORCBPRiBzdm50YXNrIC0tPgorCQkKKwkJPCEtLSAgU1RBUlQgT0Ygb3Blbmxhc3psbyAtLT4KKwkJPGRlcGVuZGVuY3kgb3JnPSJvcGVubGFzemxvIiBuYW1lPSJvcGVubGFzemxvIiByZXY9IjQuOSIgY29uZj0ib3Blbmxhc3psby0+KiIgdHJhbnNpdGl2ZT0iZmFsc2UiPgorCQkJPGFydGlmYWN0IG5hbWU9Im9wZW5sYXN6bG8iIHR5cGU9InRneiIvPgorCQkJPGluY2x1ZGUgdHlwZT0idGd6IiAvPgorCQk8L2RlcGVuZGVuY3k+CisJCTwhLS0gIEVORCBPRiBvcGVubGFzemxvIC0tPgorCQkKKwkJPCEtLSAgU1RBUlQgT0Ygb3Blbmxhc3psbzQ2IC0tPgorCQk8ZGVwZW5kZW5jeSBvcmc9Im9wZW5sYXN6bG8iIG5hbWU9Im9wZW5sYXN6bG8iIHJldj0iNC45LjUiIGNvbmY9Im9wZW5sYXN6bG80Ni0+KiIgdHJhbnNpdGl2ZT0iZmFsc2UiPgorCQkJPGFydGlmYWN0IG5hbWU9Im9wZW5sYXN6bG8iIHR5cGU9InRneiIvPgorCQkJPGluY2x1ZGUgdHlwZT0idGd6IiAvPgorCQk8L2RlcGVuZGVuY3k+CisJCTwhLS0gIEVORCBPRiBvcGVubGFzemxvNDYgLS0+CisJCQorCQk8IS0tICBTVEFSVCBPRiBDb21tYW5kIExpbmUgQWRtaW4gLS0+CisJCTxkZXBlbmRlbmN5IG9yZz0iY29tbW9ucy1jbGkiIG5hbWU9ImNvbW1vbnMtY2xpIiByZXY9IjEuMiIgY29uZj0iY21kYWRtaW4tPioiIHRyYW5zaXRpdmU9ImZhbHNlIj4KKwkJCTxpbmNsdWRlIHR5cGU9ImphciIgLz4KKwkJPC9kZXBlbmRlbmN5PgorCQk8IS0tICBFTkQgT0YgQ29tbWFuZCBMaW5lIEFkbWluIC0tPgorCQkKKwkJPCEtLSAgU1RBUlQgT0YgTXlTUUwgRHJpdmVyIC0tPgorCQk8ZGVwZW5kZW5jeSBvcmc9Im15c3FsIiBuYW1lPSJteXNxbC1jb25uZWN0b3ItamF2YSIgcmV2PSI1LjEuMjIiIGNvbmY9Im15c3FsLT4qIiB0cmFuc2l0aXZlPSJmYWxzZSI+CisJCQk8aW5jbHVkZSB0eXBlPSJqYXIiIC8+CisJCTwvZGVwZW5kZW5jeT4KKwkJPCEtLSAgRU5EIE9GIE15U1FMIERyaXZlciAtLT4KKworCQk8IS0tIFRvbWNhdCA3IC0tPiANCisJCTxkZXBlbmRlbmN5IG9yZz0ib3JnLmFwYWNoZS50b21jYXQuZW1iZWQiIG5hbWU9InRvbWNhdC1lbWJlZC1jb3JlIiBjb25mPSJ0b21jYXQ3LT4qIiByZXY9IjcuMC4zNCIgdHJhbnNpdGl2ZT0iZmFsc2UiID4KKwkJCTxpbmNsdWRlIHR5cGU9ImphciIgLz4KKwkJPC9kZXBlbmRlbmN5Pg0KKwkJPGRlcGVuZGVuY3kgb3JnPSJvcmcuYXBhY2hlLnRvbWNhdC5lbWJlZCIgbmFtZT0idG9tY2F0LWVtYmVkLWphc3BlciIgY29uZj0idG9tY2F0Ny0+KiIgcmV2PSI3LjAuMzQiIHRyYW5zaXRpdmU9ImZhbHNlIiA+CisJCQk8aW5jbHVkZSB0eXBlPSJqYXIiIC8+CisJCTwvZGVwZW5kZW5jeT4NCisJCTxkZXBlbmRlbmN5IG9yZz0ib3JnLmFwYWNoZS50b21jYXQuZW1iZWQiIG5hbWU9InRvbWNhdC1lbWJlZC1sb2dnaW5nLWp1bGkiIGNvbmY9InRvbWNhdDctPioiIHJldj0iNy4wLjM0IiB0cmFuc2l0aXZlPSJmYWxzZSIgPgorCQkJPGluY2x1ZGUgdHlwZT0iamFyIiAvPgorCQk8L2RlcGVuZGVuY3k+DQorCQk8ZGVwZW5kZW5jeSBvcmc9Im9yZy5hcGFjaGUudG9tY2F0LmVtYmVkIiBuYW1lPSJ0b21jYXQtZW1iZWQtbG9nZ2luZy1sb2c0aiIgY29uZj0idG9tY2F0Ny0+KiIgcmV2PSI3LjAuMzQiIHRyYW5zaXRpdmU9ImZhbHNlIiA+CisJCQk8aW5jbHVkZSB0eXBlPSJqYXIiIC8+CisJCTwvZGVwZW5kZW5jeT4NCisJCTxkZXBlbmRlbmN5IG9yZz0idG9tY2F0cGx1Z2luIiBuYW1lPSJ0b21jYXRwbHVnaW4iIHJldj0iMS40IiBjb25mPSJ0b21jYXQ3LT4qIiB0cmFuc2l0aXZlPSJmYWxzZSI+CisJCQk8aW5jbHVkZSB0eXBlPSJqYXIiIC8+CisJCTwvZGVwZW5kZW5jeT4KKwkJCisJCTxleGNsdWRlIG9yZz0iamF2YXguc2VydmxldCIgbW9kdWxlPSJzZXJ2bGV0LWFwaSIgdHlwZT0iKiIgZXh0PSIqIiBjb25mPSIqIiBtYXRjaGVyPSJleGFjdCIvPgkJCisJPC9kZXBlbmRlbmNpZXM+Cis8L2l2eS1tb2R1bGU+CisKZGlmZiAtLWdpdCBhL2l2eXNldHRpbmdzLnhtbCBiL2l2eXNldHRpbmdzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNWJhMWU2Ci0tLSAvZGV2L251bGwKKysrIGIvaXZ5c2V0dGluZ3MueG1sCkBAIC0wLDAgKzEsNDUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorIC0tPgorPGl2eXNldHRpbmdzIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIA0KKyAgICB4c2k6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbj0iaXZ5c2V0dGluZ3MueHNkIj4KKwk8c2V0dGluZ3MgZGVmYXVsdFJlc29sdmVyPSJjaGFpbiIvPgorCTxyZXNvbHZlcnM+CisJCTxjaGFpbiBuYW1lPSJjaGFpbiI+CisJCQk8aWJpYmxpbyBuYW1lPSJjZW50cmFsIiBtMmNvbXBhdGlibGU9InRydWUiLz4KKwkJCTxpYmlibGlvIG5hbWU9InNwcmluZ3NvdXJjZS1leHRlcm5hbCIgbTJjb21wYXRpYmxlPSJ0cnVlIiByb290PSJodHRwOi8vcmVwb3NpdG9yeS5zcHJpbmdzb3VyY2UuY29tL21hdmVuL2J1bmRsZXMvZXh0ZXJuYWwiLz4KKwkJCTxpYmlibGlvIG5hbWU9InNwcmluZ3NvdXJjZS1yZWxlYXNlIiBtMmNvbXBhdGlibGU9InRydWUiIHJvb3Q9Imh0dHA6Ly9yZXBvc2l0b3J5LnNwcmluZ3NvdXJjZS5jb20vbWF2ZW4vYnVuZGxlcy9yZWxlYXNlIi8+CisJCQk8aWJpYmxpbyBuYW1lPSJhcGFjaGUtcHVibGljIiBtMmNvbXBhdGlibGU9InRydWUiIHJvb3Q9Imh0dHBzOi8vcmVwb3NpdG9yeS5hcGFjaGUub3JnL2NvbnRlbnQvZ3JvdXBzL3B1YmxpYyIgLz4KKwkJCTx1cmwgbmFtZT0ibWF2ZW5jZW50cmFsIj4KKwkJCQk8YXJ0aWZhY3QgcGF0dGVybj0iaHR0cDovL3JlcG8xLm1hdmVuLm9yZy9tYXZlbjIvW29yZ2FuaXNhdGlvbl0vW2FydGlmYWN0XS1bcmV2aXNpb25dLltleHRdIiAvPgorCQkJPC91cmw+CisJCQk8dXJsIG5hbWU9InNvbmF0eXBlIj4KKwkJCQk8YXJ0aWZhY3QgcGF0dGVybj0iaHR0cDovL29zcy5zb25hdHlwZS5vcmcvY29udGVudC9yZXBvc2l0b3JpZXMvc291cmNlZm9yZ2UtcmVsZWFzZXMvW29yZ2FuaXNhdGlvbl0vW2FydGlmYWN0XS1bcmV2aXNpb25dLltleHRdIiAvPgorCQkJCTxhcnRpZmFjdCBwYXR0ZXJuPSJodHRwOi8vb3NzLnNvbmF0eXBlLm9yZy9jb250ZW50L3JlcG9zaXRvcmllcy9jZW50cmFsL1thcnRpZmFjdF0vW2FydGlmYWN0XS9bcmV2aXNpb25dL1thcnRpZmFjdF0tW3JldmlzaW9uXS5bZXh0XSIgLz4KKwkJCTwvdXJsPgorCQkJPHVybCBuYW1lPSJnb29nbGVjb2RlIj4KKwkJCQk8YXJ0aWZhY3QgcGF0dGVybj0iaHR0cDovL29wZW5sYXN6bG8tb3Blbm1lZXRpbmdzLWludGVncmF0aW9uLmdvb2dsZWNvZGUuY29tL3N2bi9yZXBvc2l0b3J5L1thcnRpZmFjdF0oLVtyZXZpc2lvbl0pLltleHRdIiAvPgorCQkJCTxhcnRpZmFjdCBwYXR0ZXJuPSJodHRwOi8vb3Blbm1lZXRpbmdzLmdvb2dsZWNvZGUuY29tL3N2bi9yZXBvc2l0b3J5L1thcnRpZmFjdF0oLVtyZXZpc2lvbl0pLltleHRdIiAvPgorCQkJCTxhcnRpZmFjdCBwYXR0ZXJuPSJodHRwOi8vcmVkNS5nb29nbGVjb2RlLmNvbS9zdm4vcmVwb3NpdG9yeS9bb3JnYW5pc2F0aW9uXS9bYXJ0aWZhY3RdL1tyZXZpc2lvbl0vW2FydGlmYWN0XSgtW3JldmlzaW9uXSkuW2V4dF0iIC8+CisJCQk8L3VybD4KKwkJCTx1cmwgbmFtZT0ic21zbGliIiBtMmNvbXBhdGlibGU9InRydWUiPgorCQkJCTxhcnRpZmFjdCBwYXR0ZXJuPSJodHRwOi8vc21zbGliLm9yZy9tYXZlbjIvdjMvW29yZ2FuaXNhdGlvbl0vW2FydGlmYWN0XS9bcmV2aXNpb25dL1thcnRpZmFjdF0tW3JldmlzaW9uXS5bZXh0XSIgLz4KKwkJCTwvdXJsPgorCQk8L2NoYWluPgorCTwvcmVzb2x2ZXJzPgorCTx0cmlnZ2Vycz4KKwkJPGFudC1jYWxsIHRhcmdldD0iLWV4dHJhY3QtdGd6IiBwcmVmaXg9ImRlcCIgZXZlbnQ9InBvc3QtZG93bmxvYWQtYXJ0aWZhY3QiIGZpbHRlcj0idHlwZT10Z3oiLz4KKwk8L3RyaWdnZXJzPgorPC9pdnlzZXR0aW5ncz4KKwpkaWZmIC0tZ2l0IGEvaXZ5c2V0dGluZ3MueHNkIGIvaXZ5c2V0dGluZ3MueHNkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxNjEzMTMKLS0tIC9kZXYvbnVsbAorKysgYi9pdnlzZXR0aW5ncy54c2QKQEAgLTAsMCArMSw4OCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPHhzOnNjaGVtYSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIj4NCisgIDx4czplbGVtZW50IG5hbWU9Iml2eXNldHRpbmdzIj4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czpzZXF1ZW5jZT4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0ic2V0dGluZ3MiLz4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0icmVzb2x2ZXJzIi8+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9InRyaWdnZXJzIiBtaW5PY2N1cnM9IjAiLz4NCisgICAgICA8L3hzOnNlcXVlbmNlPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0ic2V0dGluZ3MiPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkZWZhdWx0UmVzb2x2ZXIiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOk5DTmFtZSIvPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0icmVzb2x2ZXJzIj4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czpzZXF1ZW5jZT4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0iY2hhaW4iLz4NCisgICAgICA8L3hzOnNlcXVlbmNlPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0iY2hhaW4iPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOnNlcXVlbmNlPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0iaWJpYmxpbyIvPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0idXJsIi8+DQorICAgICAgPC94czpzZXF1ZW5jZT4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOk5DTmFtZSIvPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0iaWJpYmxpbyI+DQorICAgIDx4czpjb21wbGV4VHlwZT4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im0yY29tcGF0aWJsZSIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6Ym9vbGVhbiIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6TkNOYW1lIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyb290IiB0eXBlPSJ4czphbnlVUkkiLz4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9InVybCI+DQorICAgIDx4czpjb21wbGV4VHlwZT4NCisgICAgICA8eHM6c2VxdWVuY2U+DQorICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJhcnRpZmFjdCIvPg0KKyAgICAgIDwveHM6c2VxdWVuY2U+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czpOQ05hbWUiLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im0yY29tcGF0aWJsZSIgdXNlPSJvcHRpb25hbCIgdHlwZT0ieHM6TkNOYW1lIi8+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJhcnRpZmFjdCI+DQorICAgIDx4czpjb21wbGV4VHlwZT4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBhdHRlcm4iIHVzZT0icmVxdWlyZWQiLz4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9InRyaWdnZXJzIj4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czpzZXF1ZW5jZT4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0iYW50LWNhbGwiLz4NCisgICAgICA8L3hzOnNlcXVlbmNlPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0iYW50LWNhbGwiPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJldmVudCIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6TkNOYW1lIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmaWx0ZXIiIHVzZT0icmVxdWlyZWQiLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InByZWZpeCIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6TkNOYW1lIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0YXJnZXQiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOk5NVE9LRU4iLz4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCis8L3hzOnNjaGVtYT4NCmRpZmYgLS1naXQgYS9zcmMvTUVUQS1JTkYvZGIyX3BlcnNpc3RlbmNlLnhtbCBiL3NyYy9NRVRBLUlORi9kYjJfcGVyc2lzdGVuY2UueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlNDM4MWMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvTUVUQS1JTkYvZGIyX3BlcnNpc3RlbmNlLnhtbApAQCAtMCwwICsxLDk3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPCEtLSBwZXJzaXN0ZW5jZS54bWwgc2NoZW1hIC0tPgorPHBlcnNpc3RlbmNlIHhtbG5zPSJodHRwOi8vamF2YS5zdW4uY29tL3htbC9ucy9wZXJzaXN0ZW5jZSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKKwl4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly9qYXZhLnN1bi5jb20veG1sL25zL3BlcnNpc3RlbmNlIGh0dHA6Ly9qYXZhLnN1bi5jb20veG1sL25zL3BlcnNpc3RlbmNlL3BlcnNpc3RlbmNlXzJfMC54c2QiCisJdmVyc2lvbj0iMi4wIj4KKwk8cGVyc2lzdGVuY2UtdW5pdCBuYW1lPSJvcGVubWVldGluZ3MiIHRyYW5zYWN0aW9uLXR5cGU9IlJFU09VUkNFX0xPQ0FMIj4KKwkJPHByb3ZpZGVyPm9yZy5hcGFjaGUub3BlbmpwYS5wZXJzaXN0ZW5jZS5QZXJzaXN0ZW5jZVByb3ZpZGVySW1wbDwvcHJvdmlkZXI+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5Db25maWd1cmF0aW9uPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLkVycm9yVHlwZTwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5FcnJvclZhbHVlPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLkxkYXBDb25maWc8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuTWFpbE1lc3NhZ2U8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuTmF2aWdsb2JhbDwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5OYXZpbWFpbjwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5PbVRpbWVab25lPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLlNlc3Npb25kYXRhPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLlNPQVBMb2dpbjwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5TZXJ2ZXI8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuY2FsZW5kYXIuQXBwb2ludG1lbnQ8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuY2FsZW5kYXIuQXBwb2ludG1lbnRDYXRlZ29yeTwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5jYWxlbmRhci5BcHBvaW50bWVudFJlbWluZGVyVHlwczwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5jYWxlbmRhci5NZWV0aW5nTWVtYmVyPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmNoYXQuQ2hhdE1lc3NhZ2U8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuZG9tYWluLk9yZ2FuaXNhdGlvbjwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5kb21haW4uT3JnYW5pc2F0aW9uX1VzZXJzPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmZsdnJlY29yZC5GbHZSZWNvcmRpbmc8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuZmx2cmVjb3JkLkZsdlJlY29yZGluZ0xvZzwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5mbHZyZWNvcmQuRmx2UmVjb3JkaW5nTWV0YURhdGE8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuZmx2cmVjb3JkLkZsdlJlY29yZGluZ01ldGFEZWx0YTwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5pbnZpdGF0aW9uLkludml0YXRpb25zPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmxhbmcuRmllbGRMYW5ndWFnZTwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5sYW5nLkZpZWxkbGFuZ3VhZ2VzdmFsdWVzPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmxhbmcuRmllbGR2YWx1ZXM8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMubG9ncy5Db25mZXJlbmNlTG9nPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmxvZ3MuQ29uZmVyZW5jZUxvZ1R5cGU8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucG9sbC5Qb2xsVHlwZTwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5wb2xsLlJvb21Qb2xsPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnBvbGwuUm9vbVBvbGxBbnN3ZXJzPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnJvb20uQ2xpZW50PC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnJvb20uUm9vbU1vZGVyYXRvcjwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tLlJvb208L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbS5Sb29tVHlwZTwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tLlJvb21PcmdhbmlzYXRpb248L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbS5XaGl0ZWJvYXJkPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnJvb20uV2hpdGVib2FyZEl0ZW08L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlci5BZGRyZXNzPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuU3RhdGU8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlci5Qcml2YXRlTWVzc2FnZTwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlByaXZhdGVNZXNzYWdlRm9sZGVyPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuU2FsdXRhdGlvbjwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlVzZXJDb250YWN0PC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuVXNlcmRhdGE8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlci5Vc2VybGV2ZWw8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlci5Vc2VyPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmZpbGVzLkZpbGVFeHBsb3Jlckl0ZW08L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuc2lwLmFzdGVyaXNrLkFzdGVyaXNrU2lwVXNlcjwvY2xhc3M+CisJCTxleGNsdWRlLXVubGlzdGVkLWNsYXNzZXM+ZmFsc2U8L2V4Y2x1ZGUtdW5saXN0ZWQtY2xhc3Nlcz4KKwkJPHByb3BlcnRpZXM+CisJCQk8cHJvcGVydHkgbmFtZT0ib3BlbmpwYS5SdW50aW1lVW5lbmhhbmNlZENsYXNzZXMiIHZhbHVlPSJ1bnN1cHBvcnRlZCIgLz4KKwkJCTxwcm9wZXJ0eSBuYW1lPSJvcGVuanBhLkNvbm5lY3Rpb25Ecml2ZXJOYW1lIiB2YWx1ZT0ib3JnLmFwYWNoZS5jb21tb25zLmRiY3AuQmFzaWNEYXRhU291cmNlIiAvPgorCQkJPHByb3BlcnR5IG5hbWU9Im9wZW5qcGEuQ29ubmVjdGlvblByb3BlcnRpZXMiCisJCQkJdmFsdWU9IkRyaXZlckNsYXNzTmFtZT1jb20uaWJtLmRiMi5qY2MuREIyRHJpdmVyCisJCQkJCSwgVXJsPWpkYmM6ZGIyOi8vbG9jYWxob3N0OjUwMDAwL29wZW5tZWV0CisJCQkJCSwgTWF4QWN0aXZlPTEwMAorCQkJCQksIE1heFdhaXQ9MTAwMDAKKwkJCQkJLCBUZXN0T25Cb3Jyb3c9dHJ1ZQorCQkJCQksIHBvb2xQcmVwYXJlZFN0YXRlbWVudHM9dHJ1ZQorCQkJCQksIFVzZXJuYW1lPWRiMmFkbWluCisJCQkJCSwgUGFzc3dvcmQ9YWRtaW4iIC8+CisJCQk8cHJvcGVydHkgbmFtZT0ib3BlbmpwYS5qZGJjLlN5bmNocm9uaXplTWFwcGluZ3MiIHZhbHVlPSJidWlsZFNjaGVtYSIgLz4KKwkJCTxwcm9wZXJ0eSBuYW1lPSJvcGVuanBhLkxvZyIgdmFsdWU9IkRlZmF1bHRMZXZlbD1XQVJOLCBUb29sPUlORk8iIC8+CisJCQk8cHJvcGVydHkgbmFtZT0ib3BlbmpwYS5EYXRhQ2FjaGUiIHZhbHVlPSJ0cnVlIiAvPgorCQkJPHByb3BlcnR5IG5hbWU9Im9wZW5qcGEuUXVlcnlDYWNoZSIgdmFsdWU9InRydWUiIC8+CisJCQk8cHJvcGVydHkgbmFtZT0ib3BlbmpwYS5qZGJjLkRCRGljdGlvbmFyeSIgdmFsdWU9ImJhdGNoTGltaXQ9MTAwIiAvPgorCQkJPHByb3BlcnR5IG5hbWU9Im9wZW5qcGEuamRiYy5RdWVyeVNRTENhY2hlIiB2YWx1ZT0iZmFsc2UiIC8+CisJCTwvcHJvcGVydGllcz4KKwk8L3BlcnNpc3RlbmNlLXVuaXQ+Cis8L3BlcnNpc3RlbmNlPgpkaWZmIC0tZ2l0IGEvc3JjL01FVEEtSU5GL2RlcmJ5X3BlcnNpc3RlbmNlLnhtbCBiL3NyYy9NRVRBLUlORi9kZXJieV9wZXJzaXN0ZW5jZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTc5ZmY1MwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9NRVRBLUlORi9kZXJieV9wZXJzaXN0ZW5jZS54bWwKQEAgLTAsMCArMSw5NyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzwhLS0gcGVyc2lzdGVuY2UueG1sIHNjaGVtYSAtLT4KKzxwZXJzaXN0ZW5jZSB4bWxucz0iaHR0cDovL2phdmEuc3VuLmNvbS94bWwvbnMvcGVyc2lzdGVuY2UiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCisJeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vamF2YS5zdW4uY29tL3htbC9ucy9wZXJzaXN0ZW5jZSBodHRwOi8vamF2YS5zdW4uY29tL3htbC9ucy9wZXJzaXN0ZW5jZS9wZXJzaXN0ZW5jZV8yXzAueHNkIgorCXZlcnNpb249IjIuMCI+CisJPHBlcnNpc3RlbmNlLXVuaXQgbmFtZT0ib3Blbm1lZXRpbmdzIiB0cmFuc2FjdGlvbi10eXBlPSJSRVNPVVJDRV9MT0NBTCI+CisJCTxwcm92aWRlcj5vcmcuYXBhY2hlLm9wZW5qcGEucGVyc2lzdGVuY2UuUGVyc2lzdGVuY2VQcm92aWRlckltcGw8L3Byb3ZpZGVyPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuQ29uZmlndXJhdGlvbjwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5FcnJvclR5cGU8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuRXJyb3JWYWx1ZTwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5MZGFwQ29uZmlnPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLk1haWxNZXNzYWdlPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLk5hdmlnbG9iYWw8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuTmF2aW1haW48L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuT21UaW1lWm9uZTwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5TZXNzaW9uZGF0YTwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5TT0FQTG9naW48L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuU2VydmVyPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmNhbGVuZGFyLkFwcG9pbnRtZW50PC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmNhbGVuZGFyLkFwcG9pbnRtZW50Q2F0ZWdvcnk8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuY2FsZW5kYXIuQXBwb2ludG1lbnRSZW1pbmRlclR5cHM8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuY2FsZW5kYXIuTWVldGluZ01lbWJlcjwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5jaGF0LkNoYXRNZXNzYWdlPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmRvbWFpbi5PcmdhbmlzYXRpb248L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuZG9tYWluLk9yZ2FuaXNhdGlvbl9Vc2VyczwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5mbHZyZWNvcmQuRmx2UmVjb3JkaW5nPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmZsdnJlY29yZC5GbHZSZWNvcmRpbmdMb2c8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuZmx2cmVjb3JkLkZsdlJlY29yZGluZ01ldGFEYXRhPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmZsdnJlY29yZC5GbHZSZWNvcmRpbmdNZXRhRGVsdGE8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuaW52aXRhdGlvbi5JbnZpdGF0aW9uczwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5sYW5nLkZpZWxkTGFuZ3VhZ2U8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMubGFuZy5GaWVsZGxhbmd1YWdlc3ZhbHVlczwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5sYW5nLkZpZWxkdmFsdWVzPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmxvZ3MuQ29uZmVyZW5jZUxvZzwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5sb2dzLkNvbmZlcmVuY2VMb2dUeXBlPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnBvbGwuUG9sbFR5cGU8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucG9sbC5Sb29tUG9sbDwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5wb2xsLlJvb21Qb2xsQW5zd2VyczwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tLkNsaWVudDwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tLlJvb21Nb2RlcmF0b3I8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbS5Sb29tPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnJvb20uUm9vbVR5cGU8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbS5Sb29tT3JnYW5pc2F0aW9uPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnJvb20uV2hpdGVib2FyZDwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tLldoaXRlYm9hcmRJdGVtPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuQWRkcmVzczwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlN0YXRlPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuUHJpdmF0ZU1lc3NhZ2U8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlci5Qcml2YXRlTWVzc2FnZUZvbGRlcjwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlNhbHV0YXRpb248L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlci5Vc2VyQ29udGFjdDwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlVzZXJkYXRhPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuVXNlcmxldmVsPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuVXNlcjwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5maWxlcy5GaWxlRXhwbG9yZXJJdGVtPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnNpcC5hc3Rlcmlzay5Bc3Rlcmlza1NpcFVzZXI8L2NsYXNzPgorCQk8ZXhjbHVkZS11bmxpc3RlZC1jbGFzc2VzPmZhbHNlPC9leGNsdWRlLXVubGlzdGVkLWNsYXNzZXM+CisJCTxwcm9wZXJ0aWVzPgorCQkJPHByb3BlcnR5IG5hbWU9Im9wZW5qcGEuUnVudGltZVVuZW5oYW5jZWRDbGFzc2VzIiB2YWx1ZT0idW5zdXBwb3J0ZWQiIC8+CisJCQk8cHJvcGVydHkgbmFtZT0ib3BlbmpwYS5Db25uZWN0aW9uRHJpdmVyTmFtZSIgdmFsdWU9Im9yZy5hcGFjaGUuY29tbW9ucy5kYmNwLkJhc2ljRGF0YVNvdXJjZSIgLz4KKwkJCTxwcm9wZXJ0eSBuYW1lPSJvcGVuanBhLkNvbm5lY3Rpb25Qcm9wZXJ0aWVzIgorCQkJCXZhbHVlPSJEcml2ZXJDbGFzc05hbWU9b3JnLmFwYWNoZS5kZXJieS5qZGJjLkNsaWVudERyaXZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVcmw9amRiYzpkZXJieTpvcGVubWVldGluZ3M7Y3JlYXRlPXRydWUsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZT10cnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1heEFjdGl2ZT0xMDAsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1heFdhaXQ9MTAwMDAsIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3RPbkJvcnJvdz10cnVlLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VybmFtZT11c2VyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzd29yZD1zZWNyZXQiIC8+CisJCQk8cHJvcGVydHkgbmFtZT0ib3BlbmpwYS5qZGJjLlN5bmNocm9uaXplTWFwcGluZ3MiIHZhbHVlPSJidWlsZFNjaGVtYSIgLz4KKwkJCTxwcm9wZXJ0eSBuYW1lPSJvcGVuanBhLkxvZyIgdmFsdWU9IkRlZmF1bHRMZXZlbD1XQVJOLCBUb29sPUlORk8iIC8+CisJCQk8cHJvcGVydHkgbmFtZT0ib3BlbmpwYS5EYXRhQ2FjaGUiIHZhbHVlPSJ0cnVlIiAvPgorCQkJPHByb3BlcnR5IG5hbWU9Im9wZW5qcGEuUXVlcnlDYWNoZSIgdmFsdWU9InRydWUiIC8+CisJCQk8cHJvcGVydHkgbmFtZT0ib3BlbmpwYS5qZGJjLkRCRGljdGlvbmFyeSIgdmFsdWU9ImJhdGNoTGltaXQ9MTAwIiAvPgorCQkJPHByb3BlcnR5IG5hbWU9Im9wZW5qcGEuamRiYy5RdWVyeVNRTENhY2hlIiB2YWx1ZT0iZmFsc2UiIC8+CisJCTwvcHJvcGVydGllcz4KKwk8L3BlcnNpc3RlbmNlLXVuaXQ+Cis8L3BlcnNpc3RlbmNlPgpkaWZmIC0tZ2l0IGEvc3JjL01FVEEtSU5GL215c3FsX3BlcnNpc3RlbmNlLnhtbCBiL3NyYy9NRVRBLUlORi9teXNxbF9wZXJzaXN0ZW5jZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjc1Y2Y3NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9NRVRBLUlORi9teXNxbF9wZXJzaXN0ZW5jZS54bWwKQEAgLTAsMCArMSw5OCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzwhLS0gcGVyc2lzdGVuY2UueG1sIHNjaGVtYSAtLT4KKzxwZXJzaXN0ZW5jZSB4bWxucz0iaHR0cDovL2phdmEuc3VuLmNvbS94bWwvbnMvcGVyc2lzdGVuY2UiIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiCisJeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vamF2YS5zdW4uY29tL3htbC9ucy9wZXJzaXN0ZW5jZSBodHRwOi8vamF2YS5zdW4uY29tL3htbC9ucy9wZXJzaXN0ZW5jZS9wZXJzaXN0ZW5jZV8yXzAueHNkIgorCXZlcnNpb249IjIuMCI+CisJPHBlcnNpc3RlbmNlLXVuaXQgbmFtZT0ib3Blbm1lZXRpbmdzIiB0cmFuc2FjdGlvbi10eXBlPSJSRVNPVVJDRV9MT0NBTCI+CisJCTxwcm92aWRlcj5vcmcuYXBhY2hlLm9wZW5qcGEucGVyc2lzdGVuY2UuUGVyc2lzdGVuY2VQcm92aWRlckltcGw8L3Byb3ZpZGVyPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuQ29uZmlndXJhdGlvbjwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5FcnJvclR5cGU8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuRXJyb3JWYWx1ZTwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5MZGFwQ29uZmlnPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLk1haWxNZXNzYWdlPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLk5hdmlnbG9iYWw8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuTmF2aW1haW48L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuT21UaW1lWm9uZTwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5TZXNzaW9uZGF0YTwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5TT0FQTG9naW48L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuU2VydmVyPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmNhbGVuZGFyLkFwcG9pbnRtZW50PC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmNhbGVuZGFyLkFwcG9pbnRtZW50Q2F0ZWdvcnk8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuY2FsZW5kYXIuQXBwb2ludG1lbnRSZW1pbmRlclR5cHM8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuY2FsZW5kYXIuTWVldGluZ01lbWJlcjwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5jaGF0LkNoYXRNZXNzYWdlPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmRvbWFpbi5PcmdhbmlzYXRpb248L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuZG9tYWluLk9yZ2FuaXNhdGlvbl9Vc2VyczwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5mbHZyZWNvcmQuRmx2UmVjb3JkaW5nPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmZsdnJlY29yZC5GbHZSZWNvcmRpbmdMb2c8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuZmx2cmVjb3JkLkZsdlJlY29yZGluZ01ldGFEYXRhPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmZsdnJlY29yZC5GbHZSZWNvcmRpbmdNZXRhRGVsdGE8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuaW52aXRhdGlvbi5JbnZpdGF0aW9uczwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5sYW5nLkZpZWxkTGFuZ3VhZ2U8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMubGFuZy5GaWVsZGxhbmd1YWdlc3ZhbHVlczwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5sYW5nLkZpZWxkdmFsdWVzPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmxvZ3MuQ29uZmVyZW5jZUxvZzwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5sb2dzLkNvbmZlcmVuY2VMb2dUeXBlPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnBvbGwuUG9sbFR5cGU8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucG9sbC5Sb29tUG9sbDwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5wb2xsLlJvb21Qb2xsQW5zd2VyczwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tLkNsaWVudDwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tLlJvb21Nb2RlcmF0b3I8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbS5Sb29tPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnJvb20uUm9vbVR5cGU8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbS5XaGl0ZWJvYXJkPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnJvb20uV2hpdGVib2FyZEl0ZW08L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbS5Sb29tT3JnYW5pc2F0aW9uPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuQWRkcmVzczwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlN0YXRlPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuUHJpdmF0ZU1lc3NhZ2U8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlci5Qcml2YXRlTWVzc2FnZUZvbGRlcjwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlNhbHV0YXRpb248L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlci5Vc2VyQ29udGFjdDwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlVzZXJkYXRhPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuVXNlcmxldmVsPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuVXNlcjwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5maWxlcy5GaWxlRXhwbG9yZXJJdGVtPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnNpcC5hc3Rlcmlzay5Bc3Rlcmlza1NpcFVzZXI8L2NsYXNzPgorCQk8ZXhjbHVkZS11bmxpc3RlZC1jbGFzc2VzPmZhbHNlPC9leGNsdWRlLXVubGlzdGVkLWNsYXNzZXM+CisJCTxwcm9wZXJ0aWVzPgorCQkJPHByb3BlcnR5IG5hbWU9Im9wZW5qcGEuUnVudGltZVVuZW5oYW5jZWRDbGFzc2VzIiB2YWx1ZT0idW5zdXBwb3J0ZWQiIC8+CisJCQk8cHJvcGVydHkgbmFtZT0ib3BlbmpwYS5Db25uZWN0aW9uRHJpdmVyTmFtZSIgdmFsdWU9Im9yZy5hcGFjaGUuY29tbW9ucy5kYmNwLkJhc2ljRGF0YVNvdXJjZSIgLz4KKwkJCTxwcm9wZXJ0eSBuYW1lPSJvcGVuanBhLkNvbm5lY3Rpb25Qcm9wZXJ0aWVzIgorCQkJCXZhbHVlPSJEcml2ZXJDbGFzc05hbWU9Y29tLm15c3FsLmpkYmMuRHJpdmVyCisJCQkJCSwgVXJsPWpkYmM6bXlzcWw6Ly9sb2NhbGhvc3Q6MzMwNi9vcGVubWVldGluZ3M/YXV0b1JlY29ubmVjdD10cnVlJmFtcDt1c2VVbmljb2RlPXRydWUmYW1wO2NyZWF0ZURhdGFiYXNlSWZOb3RFeGlzdD10cnVlJmFtcDtjaGFyYWN0ZXJFbmNvZGluZz11dGYtOCZhbXA7Y29ubmVjdGlvbkNvbGxhdGlvbj11dGY4X2dlbmVyYWxfY2kmYW1wO2NhY2hlUHJlcFN0bXRzPXRydWUmYW1wO2NhY2hlQ2FsbGFibGVTdGF0ZW1lbnRzPXRydWUmYW1wO2NhY2hlU2VydmVyQ29uZmlndXJhdGlvbj10cnVlJmFtcDt1c2VMb2NhbFNlc3Npb25TdGF0ZT10cnVlJmFtcDtlbGlkZVNldEF1dG9Db21taXRzPXRydWUmYW1wO2Fsd2F5c1NlbmRTZXRJc29sYXRpb249ZmFsc2UmYW1wO2VuYWJsZVF1ZXJ5VGltZW91dHM9ZmFsc2UmYW1wO3ByZXBTdG10Q2FjaGVTaXplPTMwMDAmYW1wO3ByZXBTdG10Q2FjaGVTcWxMaW1pdD0xMDAwCisJCQkJCSwgTWF4QWN0aXZlPTEwMAorCQkJCQksIE1heFdhaXQ9MTAwMDAKKwkJCQkJLCBUZXN0T25Cb3Jyb3c9dHJ1ZQorCQkJCQksIHBvb2xQcmVwYXJlZFN0YXRlbWVudHM9dHJ1ZQorCQkJCQksIFVzZXJuYW1lPXJvb3QKKwkJCQkJLCBQYXNzd29yZD0iIC8+CisJCQk8cHJvcGVydHkgbmFtZT0ib3BlbmpwYS5qZGJjLlN5bmNocm9uaXplTWFwcGluZ3MiIHZhbHVlPSJidWlsZFNjaGVtYSIgLz4KKwkJCTxwcm9wZXJ0eSBuYW1lPSJvcGVuanBhLkxvZyIgdmFsdWU9IkRlZmF1bHRMZXZlbD1XQVJOLCBSdW50aW1lPUlORk8iIC8+CisJCQk8cHJvcGVydHkgbmFtZT0ib3BlbmpwYS5EYXRhQ2FjaGUiIHZhbHVlPSJ0cnVlIiAvPgorCQkJPCEtLSBRdWVyeUNhY2hlIGRpc2FibGVkIGR1ZSB0byBjaGFuZ2VzIG91dHNpZGUgb2YgSlBBIGRvZXNuJ3QgdGFrZSBlZmZlY3Qgd2l0aCBjYWNoaW5nIC0tPgorCQkJPHByb3BlcnR5IG5hbWU9Im9wZW5qcGEuUXVlcnlDYWNoZSIgdmFsdWU9ImZhbHNlIiAvPgorCQkJPHByb3BlcnR5IG5hbWU9Im9wZW5qcGEuamRiYy5EQkRpY3Rpb25hcnkiIHZhbHVlPSJiYXRjaExpbWl0PTEwMCIgLz4KKwkJCTxwcm9wZXJ0eSBuYW1lPSJvcGVuanBhLmpkYmMuUXVlcnlTUUxDYWNoZSIgdmFsdWU9ImZhbHNlIiAvPgorCQk8L3Byb3BlcnRpZXM+CisJPC9wZXJzaXN0ZW5jZS11bml0PgorPC9wZXJzaXN0ZW5jZT4KZGlmZiAtLWdpdCBhL3NyYy9NRVRBLUlORi9vcmFjbGVfcGVyc2lzdGVuY2UueG1sIGIvc3JjL01FVEEtSU5GL29yYWNsZV9wZXJzaXN0ZW5jZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzg3MGIzOQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9NRVRBLUlORi9vcmFjbGVfcGVyc2lzdGVuY2UueG1sCkBAIC0wLDAgKzEsOTcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8IS0tIHBlcnNpc3RlbmNlLnhtbCBzY2hlbWEgLS0+Cis8cGVyc2lzdGVuY2UgeG1sbnM9Imh0dHA6Ly9qYXZhLnN1bi5jb20veG1sL25zL3BlcnNpc3RlbmNlIiB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIgorCXhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL2phdmEuc3VuLmNvbS94bWwvbnMvcGVyc2lzdGVuY2UgaHR0cDovL2phdmEuc3VuLmNvbS94bWwvbnMvcGVyc2lzdGVuY2UvcGVyc2lzdGVuY2VfMl8wLnhzZCIKKwl2ZXJzaW9uPSIyLjAiPgorCTxwZXJzaXN0ZW5jZS11bml0IG5hbWU9Im9wZW5tZWV0aW5ncyIgdHJhbnNhY3Rpb24tdHlwZT0iUkVTT1VSQ0VfTE9DQUwiPgorCQk8cHJvdmlkZXI+b3JnLmFwYWNoZS5vcGVuanBhLnBlcnNpc3RlbmNlLlBlcnNpc3RlbmNlUHJvdmlkZXJJbXBsPC9wcm92aWRlcj4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLkNvbmZpZ3VyYXRpb248L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuRXJyb3JUeXBlPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLkVycm9yVmFsdWU8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuTGRhcENvbmZpZzwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5NYWlsTWVzc2FnZTwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5OYXZpZ2xvYmFsPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLk5hdmltYWluPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLk9tVGltZVpvbmU8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuU2Vzc2lvbmRhdGE8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuU09BUExvZ2luPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLlNlcnZlcjwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5jYWxlbmRhci5BcHBvaW50bWVudDwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5jYWxlbmRhci5BcHBvaW50bWVudENhdGVnb3J5PC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmNhbGVuZGFyLkFwcG9pbnRtZW50UmVtaW5kZXJUeXBzPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmNhbGVuZGFyLk1lZXRpbmdNZW1iZXI8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuY2hhdC5DaGF0TWVzc2FnZTwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5kb21haW4uT3JnYW5pc2F0aW9uPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmRvbWFpbi5PcmdhbmlzYXRpb25fVXNlcnM8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuZmx2cmVjb3JkLkZsdlJlY29yZGluZzwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5mbHZyZWNvcmQuRmx2UmVjb3JkaW5nTG9nPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmZsdnJlY29yZC5GbHZSZWNvcmRpbmdNZXRhRGF0YTwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5mbHZyZWNvcmQuRmx2UmVjb3JkaW5nTWV0YURlbHRhPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmludml0YXRpb24uSW52aXRhdGlvbnM8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMubGFuZy5GaWVsZExhbmd1YWdlPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmxhbmcuRmllbGRsYW5ndWFnZXN2YWx1ZXM8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMubGFuZy5GaWVsZHZhbHVlczwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5sb2dzLkNvbmZlcmVuY2VMb2c8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMubG9ncy5Db25mZXJlbmNlTG9nVHlwZTwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5wb2xsLlBvbGxUeXBlPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnBvbGwuUm9vbVBvbGw8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucG9sbC5Sb29tUG9sbEFuc3dlcnM8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbS5DbGllbnQ8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbS5Sb29tTW9kZXJhdG9yPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnJvb20uUm9vbTwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tLlJvb21UeXBlPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnJvb20uUm9vbU9yZ2FuaXNhdGlvbjwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tLldoaXRlYm9hcmQ8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbS5XaGl0ZWJvYXJkSXRlbTwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLkFkZHJlc3M8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlci5TdGF0ZTwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlByaXZhdGVNZXNzYWdlPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuUHJpdmF0ZU1lc3NhZ2VGb2xkZXI8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlci5TYWx1dGF0aW9uPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuVXNlckNvbnRhY3Q8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlci5Vc2VyZGF0YTwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlVzZXJsZXZlbDwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlVzZXI8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuZmlsZXMuRmlsZUV4cGxvcmVySXRlbTwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5zaXAuYXN0ZXJpc2suQXN0ZXJpc2tTaXBVc2VyPC9jbGFzcz4KKwkJPGV4Y2x1ZGUtdW5saXN0ZWQtY2xhc3Nlcz5mYWxzZTwvZXhjbHVkZS11bmxpc3RlZC1jbGFzc2VzPgorCQk8cHJvcGVydGllcz4KKwkJCTxwcm9wZXJ0eSBuYW1lPSJvcGVuanBhLlJ1bnRpbWVVbmVuaGFuY2VkQ2xhc3NlcyIgdmFsdWU9InVuc3VwcG9ydGVkIiAvPgorCQkJPHByb3BlcnR5IG5hbWU9Im9wZW5qcGEuQ29ubmVjdGlvbkRyaXZlck5hbWUiIHZhbHVlPSJvcmcuYXBhY2hlLmNvbW1vbnMuZGJjcC5CYXNpY0RhdGFTb3VyY2UiIC8+CisJCQk8cHJvcGVydHkgbmFtZT0ib3BlbmpwYS5Db25uZWN0aW9uUHJvcGVydGllcyIKKwkJCQl2YWx1ZT0iRHJpdmVyQ2xhc3NOYW1lPW9yYWNsZS5qZGJjLmRyaXZlci5PcmFjbGVEcml2ZXIKKwkJCQkJCQksIFVybD1qZGJjOm9yYWNsZTp0aGluOkBsb2NhbGhvc3Q6MTUyMTpvcGVubWVldGluZ3MgCisJCQkJCQkJLCBjcmVhdGU9dHJ1ZQorCQkJCQkJCSwgTWF4QWN0aXZlPTEwMCAKKwkJCQkJCQksIE1heFdhaXQ9MTAwMDAgCisJCQkJCQkJLCBUZXN0T25Cb3Jyb3c9dHJ1ZSAKKwkJCQkJCQksIFVzZXJuYW1lPVNZU1RFTSAKKwkJCQkJCQksIFBhc3N3b3JkPWFkbWluIiAvPgorCQkJPHByb3BlcnR5IG5hbWU9Im9wZW5qcGEuamRiYy5TeW5jaHJvbml6ZU1hcHBpbmdzIiB2YWx1ZT0iYnVpbGRTY2hlbWEiIC8+CisJCQk8cHJvcGVydHkgbmFtZT0ib3BlbmpwYS5Mb2ciIHZhbHVlPSJEZWZhdWx0TGV2ZWw9V0FSTiwgVG9vbD1JTkZPIiAvPgorCQkJPHByb3BlcnR5IG5hbWU9Im9wZW5qcGEuRGF0YUNhY2hlIiB2YWx1ZT0idHJ1ZSIgLz4KKwkJCTxwcm9wZXJ0eSBuYW1lPSJvcGVuanBhLlF1ZXJ5Q2FjaGUiIHZhbHVlPSJ0cnVlIiAvPgorCQkJPHByb3BlcnR5IG5hbWU9Im9wZW5qcGEuamRiYy5EQkRpY3Rpb25hcnkiIHZhbHVlPSJvcmFjbGUoVXNlVHJpZ2dlcnNGb3JBdXRvQXNzaWduPXRydWUsIE1heEF1dG9Bc3NpZ25OYW1lTGVuZ3RoPTI4LCBCYXRjaExpbWl0PTEwMCkiIC8+CisJCQk8cHJvcGVydHkgbmFtZT0ib3BlbmpwYS5qZGJjLlF1ZXJ5U1FMQ2FjaGUiIHZhbHVlPSJmYWxzZSIgLz4KKwkJPC9wcm9wZXJ0aWVzPgorCTwvcGVyc2lzdGVuY2UtdW5pdD4KKzwvcGVyc2lzdGVuY2U+CmRpZmYgLS1naXQgYS9zcmMvTUVUQS1JTkYvcG9zdGdyZXNfcGVyc2lzdGVuY2UueG1sIGIvc3JjL01FVEEtSU5GL3Bvc3RncmVzX3BlcnNpc3RlbmNlLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTYyMWFjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL01FVEEtSU5GL3Bvc3RncmVzX3BlcnNpc3RlbmNlLnhtbApAQCAtMCwwICsxLDk2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPCEtLSBwZXJzaXN0ZW5jZS54bWwgc2NoZW1hIC0tPgorPHBlcnNpc3RlbmNlIHhtbG5zPSJodHRwOi8vamF2YS5zdW4uY29tL3htbC9ucy9wZXJzaXN0ZW5jZSIgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIKKwl4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly9qYXZhLnN1bi5jb20veG1sL25zL3BlcnNpc3RlbmNlIGh0dHA6Ly9qYXZhLnN1bi5jb20veG1sL25zL3BlcnNpc3RlbmNlL3BlcnNpc3RlbmNlXzJfMC54c2QiCisJdmVyc2lvbj0iMi4wIj4KKwk8cGVyc2lzdGVuY2UtdW5pdCBuYW1lPSJvcGVubWVldGluZ3MiIHRyYW5zYWN0aW9uLXR5cGU9IlJFU09VUkNFX0xPQ0FMIj4KKwkJPHByb3ZpZGVyPm9yZy5hcGFjaGUub3BlbmpwYS5wZXJzaXN0ZW5jZS5QZXJzaXN0ZW5jZVByb3ZpZGVySW1wbDwvcHJvdmlkZXI+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5Db25maWd1cmF0aW9uPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLkVycm9yVHlwZTwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5FcnJvclZhbHVlPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLkxkYXBDb25maWc8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuTWFpbE1lc3NhZ2U8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuTmF2aWdsb2JhbDwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5OYXZpbWFpbjwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5PbVRpbWVab25lPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLlNlc3Npb25kYXRhPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLlNPQVBMb2dpbjwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5TZXJ2ZXI8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuY2FsZW5kYXIuQXBwb2ludG1lbnQ8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuY2FsZW5kYXIuQXBwb2ludG1lbnRDYXRlZ29yeTwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5jYWxlbmRhci5BcHBvaW50bWVudFJlbWluZGVyVHlwczwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5jYWxlbmRhci5NZWV0aW5nTWVtYmVyPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmNoYXQuQ2hhdE1lc3NhZ2U8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuZG9tYWluLk9yZ2FuaXNhdGlvbjwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5kb21haW4uT3JnYW5pc2F0aW9uX1VzZXJzPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmZsdnJlY29yZC5GbHZSZWNvcmRpbmc8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuZmx2cmVjb3JkLkZsdlJlY29yZGluZ0xvZzwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5mbHZyZWNvcmQuRmx2UmVjb3JkaW5nTWV0YURhdGE8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuZmx2cmVjb3JkLkZsdlJlY29yZGluZ01ldGFEZWx0YTwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5pbnZpdGF0aW9uLkludml0YXRpb25zPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmxhbmcuRmllbGRMYW5ndWFnZTwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5sYW5nLkZpZWxkbGFuZ3VhZ2VzdmFsdWVzPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmxhbmcuRmllbGR2YWx1ZXM8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMubG9ncy5Db25mZXJlbmNlTG9nPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmxvZ3MuQ29uZmVyZW5jZUxvZ1R5cGU8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucG9sbC5Qb2xsVHlwZTwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5wb2xsLlJvb21Qb2xsPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnBvbGwuUm9vbVBvbGxBbnN3ZXJzPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnJvb20uQ2xpZW50PC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnJvb20uUm9vbU1vZGVyYXRvcjwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tLlJvb208L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbS5Sb29tVHlwZTwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tLlJvb21PcmdhbmlzYXRpb248L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbS5XaGl0ZWJvYXJkPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnJvb20uV2hpdGVib2FyZEl0ZW08L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlci5BZGRyZXNzPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuU3RhdGU8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlci5Qcml2YXRlTWVzc2FnZTwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlByaXZhdGVNZXNzYWdlRm9sZGVyPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuU2FsdXRhdGlvbjwvY2xhc3M+CisJCTxjbGFzcz5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlVzZXJDb250YWN0PC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuVXNlcmRhdGE8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlci5Vc2VybGV2ZWw8L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlci5Vc2VyPC9jbGFzcz4KKwkJPGNsYXNzPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmZpbGVzLkZpbGVFeHBsb3Jlckl0ZW08L2NsYXNzPgorCQk8Y2xhc3M+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuc2lwLmFzdGVyaXNrLkFzdGVyaXNrU2lwVXNlcjwvY2xhc3M+CisJCTxleGNsdWRlLXVubGlzdGVkLWNsYXNzZXM+ZmFsc2U8L2V4Y2x1ZGUtdW5saXN0ZWQtY2xhc3Nlcz4KKwkJPHByb3BlcnRpZXM+CisJCQk8cHJvcGVydHkgbmFtZT0ib3BlbmpwYS5SdW50aW1lVW5lbmhhbmNlZENsYXNzZXMiIHZhbHVlPSJ1bnN1cHBvcnRlZCIgLz4KKwkJCTxwcm9wZXJ0eSBuYW1lPSJvcGVuanBhLkNvbm5lY3Rpb25Ecml2ZXJOYW1lIiB2YWx1ZT0ib3JnLmFwYWNoZS5jb21tb25zLmRiY3AuQmFzaWNEYXRhU291cmNlIiAvPgorCQkJPHByb3BlcnR5IG5hbWU9Im9wZW5qcGEuQ29ubmVjdGlvblByb3BlcnRpZXMiCisJCQkJdmFsdWU9IkRyaXZlckNsYXNzTmFtZT1vcmcucG9zdGdyZXNxbC5Ecml2ZXIKKwkJCQkJLCBVcmw9amRiYzpwb3N0Z3Jlc3FsOi8vbG9jYWxob3N0OjU0MzIvb3Blbm1lZXRpbmdzCisJCQkJCSwgTWF4QWN0aXZlPTEwMAorCQkJCQksIE1heFdhaXQ9MTAwMDAKKwkJCQkJLCBUZXN0T25Cb3Jyb3c9dHJ1ZQorCQkJCQksIHBvb2xQcmVwYXJlZFN0YXRlbWVudHM9dHJ1ZQorCQkJCQksIFVzZXJuYW1lPXBvc3RncmVzCisJCQkJCSwgUGFzc3dvcmQ9MSIgLz4KKwkJCTxwcm9wZXJ0eSBuYW1lPSJvcGVuanBhLmpkYmMuU3luY2hyb25pemVNYXBwaW5ncyIgdmFsdWU9ImJ1aWxkU2NoZW1hIiAvPgorCQkJPHByb3BlcnR5IG5hbWU9Im9wZW5qcGEuTG9nIiB2YWx1ZT0iRGVmYXVsdExldmVsPVdBUk4sIFRvb2w9SU5GTyIgLz4KKwkJCTxwcm9wZXJ0eSBuYW1lPSJvcGVuanBhLkRhdGFDYWNoZSIgdmFsdWU9InRydWUiIC8+CisJCQk8cHJvcGVydHkgbmFtZT0ib3BlbmpwYS5RdWVyeUNhY2hlIiB2YWx1ZT0idHJ1ZSIgLz4KKwkJCTxwcm9wZXJ0eSBuYW1lPSJvcGVuanBhLmpkYmMuUXVlcnlTUUxDYWNoZSIgdmFsdWU9ImZhbHNlIiAvPgorCQk8L3Byb3BlcnRpZXM+CisJPC9wZXJzaXN0ZW5jZS11bml0PgorPC9wZXJzaXN0ZW5jZT4KZGlmZiAtLWdpdCBhL3NyYy9NRVRBLUlORi9zZXJ2aWNlcy54bWwgYi9zcmMvTUVUQS1JTkYvc2VydmljZXMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhYmE3MWYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvTUVUQS1JTkYvc2VydmljZXMueG1sCkBAIC0wLDAgKzEsODkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorIC0tPgorPHNlcnZpY2VHcm91cCB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiAKKyAgICB4c2k6bm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbj0ic2VydmljZXMueHNkIj4KKyAgPHNlcnZpY2UgbmFtZT0iVXNlclNlcnZpY2UiPgorCTxkZXNjcmlwdGlvbj5Vc2VyIFNlcnZpY2U8L2Rlc2NyaXB0aW9uPgorCTxtZXNzYWdlUmVjZWl2ZXJzPgorICAgICAgICA8bWVzc2FnZVJlY2VpdmVyIAorICAgICAgICAgICAgbWVwPSJodHRwOi8vd3d3LnczLm9yZy9ucy93c2RsL2luLW9ubHkiCisJCQljbGFzcz0ib3JnLmFwYWNoZS5heGlzMi5ycGMucmVjZWl2ZXJzLlJQQ0luT25seU1lc3NhZ2VSZWNlaXZlciIvPgorICAgICAgICA8bWVzc2FnZVJlY2VpdmVyCisgICAgICAgICAgICBtZXA9Imh0dHA6Ly93d3cudzMub3JnL25zL3dzZGwvaW4tb3V0IgorCQkJY2xhc3M9Im9yZy5hcGFjaGUuYXhpczIucnBjLnJlY2VpdmVycy5SUENNZXNzYWdlUmVjZWl2ZXIiLz4KKyAgICA8L21lc3NhZ2VSZWNlaXZlcnM+CisgICAgPHBhcmFtZXRlciBuYW1lPSJTZXJ2aWNlQ2xhc3MiIGxvY2tlZD0ieHNkOmZhbHNlIj5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5heGlzLnNlcnZpY2VzLlVzZXJXZWJTZXJ2aWNlRmFjYWRlPC9wYXJhbWV0ZXI+CisgIDwvc2VydmljZT4KKyAgPHNlcnZpY2UgbmFtZT0iUm9vbVNlcnZpY2UiPgorCTxkZXNjcmlwdGlvbj5Sb29tIFNlcnZpY2U8L2Rlc2NyaXB0aW9uPgorCTxtZXNzYWdlUmVjZWl2ZXJzPgorICAgICAgICA8bWVzc2FnZVJlY2VpdmVyIAorICAgICAgICAgICAgbWVwPSJodHRwOi8vd3d3LnczLm9yZy9ucy93c2RsL2luLW9ubHkiCisJCQljbGFzcz0ib3JnLmFwYWNoZS5heGlzMi5ycGMucmVjZWl2ZXJzLlJQQ0luT25seU1lc3NhZ2VSZWNlaXZlciIvPgorICAgICAgICA8bWVzc2FnZVJlY2VpdmVyCisgICAgICAgICAgICBtZXA9Imh0dHA6Ly93d3cudzMub3JnL25zL3dzZGwvaW4tb3V0IgorCQkJY2xhc3M9Im9yZy5hcGFjaGUuYXhpczIucnBjLnJlY2VpdmVycy5SUENNZXNzYWdlUmVjZWl2ZXIiLz4KKyAgICA8L21lc3NhZ2VSZWNlaXZlcnM+CisgICAgPHBhcmFtZXRlciBuYW1lPSJTZXJ2aWNlQ2xhc3MiIGxvY2tlZD0ieHNkOmZhbHNlIj5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5heGlzLnNlcnZpY2VzLlJvb21XZWJTZXJ2aWNlRmFjYWRlPC9wYXJhbWV0ZXI+CisgIDwvc2VydmljZT4KKyAgPHNlcnZpY2UgbmFtZT0iRmlsZVNlcnZpY2UiPgorCTxkZXNjcmlwdGlvbj5GaWxlIFNlcnZpY2U8L2Rlc2NyaXB0aW9uPgorCTxtZXNzYWdlUmVjZWl2ZXJzPgorICAgICAgICA8bWVzc2FnZVJlY2VpdmVyIAorICAgICAgICAgICAgbWVwPSJodHRwOi8vd3d3LnczLm9yZy9ucy93c2RsL2luLW9ubHkiCisJCQljbGFzcz0ib3JnLmFwYWNoZS5heGlzMi5ycGMucmVjZWl2ZXJzLlJQQ0luT25seU1lc3NhZ2VSZWNlaXZlciIvPgorICAgICAgICA8bWVzc2FnZVJlY2VpdmVyCisgICAgICAgICAgICBtZXA9Imh0dHA6Ly93d3cudzMub3JnL25zL3dzZGwvaW4tb3V0IgorCQkJY2xhc3M9Im9yZy5hcGFjaGUuYXhpczIucnBjLnJlY2VpdmVycy5SUENNZXNzYWdlUmVjZWl2ZXIiLz4KKyAgICA8L21lc3NhZ2VSZWNlaXZlcnM+CisgICAgPHBhcmFtZXRlciBuYW1lPSJTZXJ2aWNlQ2xhc3MiIGxvY2tlZD0ieHNkOmZhbHNlIj5vcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5heGlzLnNlcnZpY2VzLkZpbGVXZWJTZXJ2aWNlRmFjYWRlPC9wYXJhbWV0ZXI+CisgIDwvc2VydmljZT4KKyAgPHNlcnZpY2UgbmFtZT0iQ2FsZW5kYXJTZXJ2aWNlIj4KKwk8ZGVzY3JpcHRpb24+Q2FsZW5kYXIgU2VydmljZTwvZGVzY3JpcHRpb24+CisJPG1lc3NhZ2VSZWNlaXZlcnM+CisgICAgICAgIDxtZXNzYWdlUmVjZWl2ZXIgCisgICAgICAgICAgICBtZXA9Imh0dHA6Ly93d3cudzMub3JnL25zL3dzZGwvaW4tb25seSIKKwkJCWNsYXNzPSJvcmcuYXBhY2hlLmF4aXMyLnJwYy5yZWNlaXZlcnMuUlBDSW5Pbmx5TWVzc2FnZVJlY2VpdmVyIi8+CisgICAgICAgIDxtZXNzYWdlUmVjZWl2ZXIKKyAgICAgICAgICAgIG1lcD0iaHR0cDovL3d3dy53My5vcmcvbnMvd3NkbC9pbi1vdXQiCisJCQljbGFzcz0ib3JnLmFwYWNoZS5heGlzMi5ycGMucmVjZWl2ZXJzLlJQQ01lc3NhZ2VSZWNlaXZlciIvPgorICAgIDwvbWVzc2FnZVJlY2VpdmVycz4KKyAgICA8cGFyYW1ldGVyIG5hbWU9IlNlcnZpY2VDbGFzcyIgbG9ja2VkPSJ4c2Q6ZmFsc2UiPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmF4aXMuc2VydmljZXMuQ2FsZW5kYXJXZWJTZXJ2aWNlRmFjYWRlPC9wYXJhbWV0ZXI+CisgIDwvc2VydmljZT4KKyAgPHNlcnZpY2UgbmFtZT0iSmFiYmVyU2VydmljZSI+CisJPGRlc2NyaXB0aW9uPkphYmJlciBTZXJ2aWNlPC9kZXNjcmlwdGlvbj4KKwk8bWVzc2FnZVJlY2VpdmVycz4KKyAgICAgICAgPG1lc3NhZ2VSZWNlaXZlciAKKyAgICAgICAgICAgIG1lcD0iaHR0cDovL3d3dy53My5vcmcvbnMvd3NkbC9pbi1vbmx5IgorCQkJY2xhc3M9Im9yZy5hcGFjaGUuYXhpczIucnBjLnJlY2VpdmVycy5SUENJbk9ubHlNZXNzYWdlUmVjZWl2ZXIiLz4KKyAgICAgICAgPG1lc3NhZ2VSZWNlaXZlcgorICAgICAgICAgICAgbWVwPSJodHRwOi8vd3d3LnczLm9yZy9ucy93c2RsL2luLW91dCIKKwkJCWNsYXNzPSJvcmcuYXBhY2hlLmF4aXMyLnJwYy5yZWNlaXZlcnMuUlBDTWVzc2FnZVJlY2VpdmVyIi8+CisgICAgPC9tZXNzYWdlUmVjZWl2ZXJzPgorICAgIDxwYXJhbWV0ZXIgbmFtZT0iU2VydmljZUNsYXNzIiBsb2NrZWQ9InhzZDpmYWxzZSI+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MuYXhpcy5zZXJ2aWNlcy5KYWJiZXJXZWJTZXJ2aWNlRmFjYWRlPC9wYXJhbWV0ZXI+CisgIDwvc2VydmljZT4KKyAgPHNlcnZpY2UgbmFtZT0iU2VydmVyU2VydmljZSI+CisJPGRlc2NyaXB0aW9uPlNlcnZlciBTZXJ2aWNlPC9kZXNjcmlwdGlvbj4KKwk8bWVzc2FnZVJlY2VpdmVycz4KKyAgICAgICAgPG1lc3NhZ2VSZWNlaXZlciAKKyAgICAgICAgICAgIG1lcD0iaHR0cDovL3d3dy53My5vcmcvbnMvd3NkbC9pbi1vbmx5IgorCQkJY2xhc3M9Im9yZy5hcGFjaGUuYXhpczIucnBjLnJlY2VpdmVycy5SUENJbk9ubHlNZXNzYWdlUmVjZWl2ZXIiLz4KKyAgICAgICAgPG1lc3NhZ2VSZWNlaXZlcgorICAgICAgICAgICAgbWVwPSJodHRwOi8vd3d3LnczLm9yZy9ucy93c2RsL2luLW91dCIKKwkJCWNsYXNzPSJvcmcuYXBhY2hlLmF4aXMyLnJwYy5yZWNlaXZlcnMuUlBDTWVzc2FnZVJlY2VpdmVyIi8+CisgICAgPC9tZXNzYWdlUmVjZWl2ZXJzPgorICAgIDxwYXJhbWV0ZXIgbmFtZT0iU2VydmljZUNsYXNzIiBsb2NrZWQ9InhzZDpmYWxzZSI+b3JnLmFwYWNoZS5vcGVubWVldGluZ3MuYXhpcy5zZXJ2aWNlcy5TZXJ2ZXJXZWJTZXJ2aWNlRmFjYWRlPC9wYXJhbWV0ZXI+CisgIDwvc2VydmljZT4KKzwvc2VydmljZUdyb3VwPgpkaWZmIC0tZ2l0IGEvc3JjL01FVEEtSU5GL3NlcnZpY2VzLnhzZCBiL3NyYy9NRVRBLUlORi9zZXJ2aWNlcy54c2QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTcxYjkyYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9NRVRBLUlORi9zZXJ2aWNlcy54c2QKQEAgLTAsMCArMSw1OSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPHhzOnNjaGVtYSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIj4NCisgIDx4czplbGVtZW50IG5hbWU9InNlcnZpY2VHcm91cCI+DQorICAgIDx4czpjb21wbGV4VHlwZT4NCisgICAgICA8eHM6c2VxdWVuY2U+DQorICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzZXJ2aWNlIi8+DQorICAgICAgPC94czpzZXF1ZW5jZT4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9InNlcnZpY2UiPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOnNlcXVlbmNlPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJkZXNjcmlwdGlvbiIvPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJtZXNzYWdlUmVjZWl2ZXJzIi8+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9InBhcmFtZXRlciIvPg0KKyAgICAgIDwveHM6c2VxdWVuY2U+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czpOQ05hbWUiLz4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9ImRlc2NyaXB0aW9uIiB0eXBlPSJ4czpzdHJpbmciLz4NCisgIDx4czplbGVtZW50IG5hbWU9Im1lc3NhZ2VSZWNlaXZlcnMiPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOnNlcXVlbmNlPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibWVzc2FnZVJlY2VpdmVyIi8+DQorICAgICAgPC94czpzZXF1ZW5jZT4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9Im1lc3NhZ2VSZWNlaXZlciI+DQorICAgIDx4czpjb21wbGV4VHlwZT4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIiB1c2U9InJlcXVpcmVkIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtZXAiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOmFueVVSSSIvPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0icGFyYW1ldGVyIj4NCisgICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxvY2tlZCIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6Tk1UT0tFTiIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6TkNOYW1lIi8+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorPC94czpzY2hlbWE+DQpkaWZmIC0tZ2l0IGEvc3JjL2FjdGl2YXRpb25fdGVtcGxhdGUudm0gYi9zcmMvYWN0aXZhdGlvbl90ZW1wbGF0ZS52bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNGVjYjQ3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL2FjdGl2YXRpb25fdGVtcGxhdGUudm0KQEAgLTAsMCArMSwyOSBAQAorIyMgT3Blbk1lZXRpbmdzCisjIyBhdXRob3Igc3dhZ25lcgorIyMgMjEuMDcuMjAwOQorPCFET0NUWVBFIGh0bWwgUFVCTElDICctLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTicgJ2h0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQnPgorPCEtLQorQ29weXJpZ2h0IDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KK0xpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKK2h0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCitVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCitkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCitTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCitsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorPGh0bWwgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnIHhtbDpsYW5nPSdkZScgbGFuZz0nZGUnPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSdDb250ZW50LVR5cGUnIGNvbnRlbnQ9J3RleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xJyAvPgorPC9oZWFkPgorPGJvZHk+Cis8SDE+JG1lc3NhZ2U8L2gxPgorPGJyLz4KKzxici8+CiskbGluaworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvc3JjL2Jvb3Rpbmcudm0gYi9zcmMvYm9vdGluZy52bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTc2NTlhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL2Jvb3Rpbmcudm0KQEAgLTAsMCArMSwyOCBAQAorIyMgT3Blbk1lZXRpbmdzCisjIyBhdXRob3Igc3dhZ25lcgorIyMgMTYuMDUuMjAwNworPCFET0NUWVBFIGh0bWwgUFVCTElDICctLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTicgJ2h0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQnPgorPCEtLQorQ29weXJpZ2h0IDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KK0xpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKK2h0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCitVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCitkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCitTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCitsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorPGh0bWwgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnIHhtbDpsYW5nPSdkZScgbGFuZz0nZGUnPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSdDb250ZW50LVR5cGUnIGNvbnRlbnQ9J3RleHQvaHRtbDsgY2hhcnNldD11dGYtOCcgLz4KKzwvaGVhZD4KKzxib2R5PgorPGI+T3Blbk1lZXRpbmdzIC0gTG9hZGluZyAuLi48L2I+PGJyIC8+CitUaGUgc2VydmVyIGlzIG5vdCB5ZXQgY29tcGxldGVseSBpbml0aWFsaXplZC4gUGxlYXNlIHRyeSBhZ2FpbiBpbiBhIGNvdXBsZSBvZiBzZWNvbmRzLjxici8+CitJZiB0aGlzIG1lc3NhZ2UgcGVyc2lzdHMgZm9yIHNldmVyYWwgbWludXRlcyBjb250YWN0IHlvdXIgU3lzLUFkbWluaXN0cmF0aW9uLgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvc3JjL2Jvb3RpbmdfaW5zdGFsbC52bSBiL3NyYy9ib290aW5nX2luc3RhbGwudm0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDIwZjYyOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9ib290aW5nX2luc3RhbGwudm0KQEAgLTAsMCArMSwzMCBAQAorIyMgT3Blbk1lZXRpbmdzCisjIyBhdXRob3Igc3dhZ25lcgorIyMgMTYuMDUuMjAwNworPCFET0NUWVBFIGh0bWwgUFVCTElDICctLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTicgJ2h0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQnPgorPCEtLQorQ29weXJpZ2h0IDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KK0xpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKK2h0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCitVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCitkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCitTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCitsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorPGh0bWwgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnIHhtbDpsYW5nPSdkZScgbGFuZz0nZGUnPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSdDb250ZW50LVR5cGUnIGNvbnRlbnQ9J3RleHQvaHRtbDsgY2hhcnNldD11dGYtOCcgLz4KKzwvaGVhZD4KKzxib2R5PgorPGI+T3Blbk1lZXRpbmdzIC0gTG9hZGluZyAuLi48L2I+PGJyIC8+CitUaGUgc2VydmVyIGlzIG5vdCB5ZXQgY29tcGxldGVseSBpbml0aWFsaXplZC4gUGxlYXNlIHRyeSBhZ2FpbiBpbiBhIGNvdXBsZSBvZiBzZWNvbmRzLjxici8+CitJZiB0aGlzIG1lc3NhZ2UgcGVyc2lzdHMgZm9yIHNldmVyYWwgbWludXRlcyBjb250YWN0IHlvdXIgU3lzLUFkbWluaXN0cmF0aW9uLjxici8+CitJZiB0aGF0IG1lc3NhZ2Ugc3RheXMgZm9yZXZlciB5b3Ugc2hvdWxkIGNoZWNrIHRoZSBsb2dzIGxvY2F0ZWQgaW4gCis8cHJlPm9wZW5tZWV0aW5nc19pbnN0YWxsX2Rpci9sb2c8L3ByZT4gZm9sZGVyLCBwcm9iYWJseSB5b3VyIGRhdGFiYXNlIHVzZXIvcHdkL2hvc3QgaXMgd3JvbmchCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9zcmMvZmVlZGJhY2sudm0gYi9zcmMvZmVlZGJhY2sudm0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjFhZDNhZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9mZWVkYmFjay52bQpAQCAtMCwwICsxLDMxIEBACisjIyBPcGVuTWVldGluZ3MKKyMjIGF1dGhvciBzd2FnbmVyCisjIyAxNi4wNS4yMDA3Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgJy0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOJyAnaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCc+Cis8IS0tCitDb3B5cmlnaHQgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+Cis8aHRtbCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcgeG1sOmxhbmc9J2RlJyBsYW5nPSdkZSc+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9J0NvbnRlbnQtVHlwZScgY29udGVudD0ndGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04JyAvPgorPC9oZWFkPgorPGJvZHk+Cis8Yj5PcGVuTWVldGluZ3MgLSBGZWVkYmFjazwvYj48YnIgLz4KK01lc3NhZ2UgZnJvbSBVc2VyOiAkdXNlcm5hbWU8YnIvPgorTWFpbDogJGVtYWlsPGJyLz4KK01lc3NhZ2U6ICRtZXNzYWdlPGJyLz48YnIvPgorPGI+Q2xpY2sgb24gdGhpcyBsaW5rIHRvIHBhcnRpY2lwYXRlIGluIHRoZSBNZWV0aW5nOjwvYj48YnIvPgorPEEgSFJFRj0iJGludml0YXRpb25fbGluayI+Q2xpY2sgaGVyZSB0byBlbnRlciByb29tPC9BPjxCUi8+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9zcmMvaW5zdGFsbF9jb21wbGV0ZV9FTi52bSBiL3NyYy9pbnN0YWxsX2NvbXBsZXRlX0VOLnZtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwNjVhMDQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5zdGFsbF9jb21wbGV0ZV9FTi52bQpAQCAtMCwwICsxLDMwIEBACisjIyBPcGVuTWVldGluZ3MKKyMjIGF1dGhvciBzd2FnbmVyCisjIyAxMC4wNS4yMDA3Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgJy0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOJyAnaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCc+Cis8IS0tCitDb3B5cmlnaHQgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+Cis8aHRtbCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcgeG1sOmxhbmc9J2RlJyBsYW5nPSdkZSc+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9J0NvbnRlbnQtVHlwZScgY29udGVudD0ndGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEnIC8+Cis8L2hlYWQ+Cis8Ym9keT4KKzxiPk9wZW5NZWV0aW5ncyAtIEluc3RhbGxhdGlvbjwvYj48YnIgLz4KK1RoZSBJbnN0YWxsYXRpb24gcHJvY2VzcyBpcyBjb21wbGV0ZS48QlIgLz4KK1lvdSBjYW4gbG9naW4gaW50byB0aGUgYXBwbGljYXRpb24gdXNpbmc6PGJyLz4KK1VzZXI6IHN3YWduZXI8QlIvPgorUGFzczogdGVzdDxCUi8+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9zcmMvaW5zdGFsbF9lcnJvcl9FTi52bSBiL3NyYy9pbnN0YWxsX2Vycm9yX0VOLnZtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyYTA1YWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5zdGFsbF9lcnJvcl9FTi52bQpAQCAtMCwwICsxLDI5IEBACisjIyBPcGVuTWVldGluZ3MKKyMjIGF1dGhvciBzd2FnbmVyCisjIyAxMC4wNS4yMDA3Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgJy0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOJyAnaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCc+Cis8IS0tCitDb3B5cmlnaHQgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+Cis8aHRtbCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcgeG1sOmxhbmc9J2RlJyBsYW5nPSdkZSc+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9J0NvbnRlbnQtVHlwZScgY29udGVudD0ndGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEnIC8+Cis8L2hlYWQ+Cis8Ym9keT4KKzxiPk9wZW5NZWV0aW5ncyAtIEluc3RhbGxhdGlvbjwvYj48YnIgLz4KKzxoPkVycm9yOjwvaD48YnIvPgorJGVycm9yCiskcGF0aAorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvc3JjL2luc3RhbGxfZXhjZXB0aW9uX0VOLnZtIGIvc3JjL2luc3RhbGxfZXhjZXB0aW9uX0VOLnZtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1YjU3Y2QKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5zdGFsbF9leGNlcHRpb25fRU4udm0KQEAgLTAsMCArMSwyOSBAQAorIyMgT3Blbk1lZXRpbmdzCisjIyBhdXRob3Igc3dhZ25lcgorIyMgMTEuMDUuMjAwNworPCFET0NUWVBFIGh0bWwgUFVCTElDICctLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTicgJ2h0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQnPgorPCEtLQorQ29weXJpZ2h0IDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KK0xpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKK2h0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCitVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCitkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCitTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCitsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorPGh0bWwgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnIHhtbDpsYW5nPSdkZScgbGFuZz0nZGUnPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSdDb250ZW50LVR5cGUnIGNvbnRlbnQ9J3RleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xJyAvPgorPC9oZWFkPgorPGJvZHk+Cis8Yj5PcGVuTWVldGluZ3MgLSBJbnN0YWxsYXRpb248L2I+PGJyIC8+Cis8aD5FcnJvcjo8L2g+PGJyLz4KKyRlcnJvcgorJHBhdGgKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL3NyYy9pbnN0YWxsX3N0ZXAxX0VOLnZtIGIvc3JjL2luc3RhbGxfc3RlcDFfRU4udm0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTA1MTZmOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbnN0YWxsX3N0ZXAxX0VOLnZtCkBAIC0wLDAgKzEsMzg0IEBACisjIyBPcGVuTWVldGluZ3MKKyMjIGF1dGhvciBzd2FnbmVyCisjIyAxMS4wNS4yMDA3Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgJy0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOJyAnaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCc+Cis8IS0tCitDb3B5cmlnaHQgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+Cis8aHRtbCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcgeG1sOmxhbmc9J2RlJyBsYW5nPSdkZSc+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9J0NvbnRlbnQtVHlwZScgY29udGVudD0ndGV4dC9odG1sOyBjaGFyc2V0PVVURi04JyAvPgorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKworZm9ybSwgZmllbGRzZXQgeworCW1hcmdpbjogMDsKKwlwYWRkaW5nOiAwOworCX0KKwkKK2ZpZWxkc2V0IHsgYm9yZGVyOiAxcHggc29saWQgIzAwMDsgfQorCitsZWdlbmQgeworCXBhZGRpbmc6IDA7CisJY29sb3I6ICMwMDA7Cit9CisKK2lucHV0OmZvY3VzLCB0ZXh0YXJlYTpmb2N1cyB7CisJY29sb3I6ICMwMDA7IAorCWJhY2tncm91bmQ6ICNmZmY7CisJb3V0bGluZTogMXB4IHNvbGlkIGJsYWNrOworfQorCisKK2lucHV0LCB0ZXh0YXJlYSwgc2VsZWN0IHsKKwltYXJnaW46IDA7CisJcGFkZGluZzogMXB4OworCXBvc2l0aW9uOmFic29sdXRlOworCWxlZnQ6NDQwcHg7CisJYmFja2dyb3VuZDogI2RkZDsKKwlmb250LXNpemU6IDEwMCU7CisJZm9udC1mYW1pbHk6IGluaGVyaXQ7Cit9CisKK3NlbGVjdCB7IHBhZGRpbmc6IDA7IH0KKworZm9ybS5jbXhmb3JtIHsKKwl3aWR0aDogMTAyNHB4OworCWZvbnQtc2l6ZTogMS4xZW07CisJY29sb3I6ICMzMzM7CisJfQorCQorZm9ybS5jbXhmb3JtIGxlZ2VuZCB7IHBhZGRpbmctbGVmdDogMDsgfQorCQorZm9ybS5jbXhmb3JtIGxlZ2VuZCwKK2Zvcm0uY214Zm9ybSBsYWJlbCB7IGNvbG9yOiAjMzMzOyB9CisKK2Zvcm0uY214Zm9ybSBmaWVsZHNldCB7CisJYm9yZGVyOiBub25lOworCWJvcmRlci10b3A6IDFweCBzb2xpZCAjQzlEQ0E2OworCX0KKwkKK2Zvcm0uY214Zm9ybSBmaWVsZHNldCBmaWVsZHNldCB7IGJhY2tncm91bmQ6IG5vbmU7IH0KKwkKK2Zvcm0uY214Zm9ybSBmaWVsZHNldCBsaSB7CisJcGFkZGluZzogNXB4IDEwcHggN3B4OworCX0KKwkKK2Zvcm0uY214Zm9ybSBmaWVsZHNldCB7CisgIG1hcmdpbi1ib3R0b206IDEwcHg7Cit9Citmb3JtLmNteGZvcm0gbGVnZW5kIHsKKyAgcGFkZGluZzogMCAycHg7CisgIGZvbnQtd2VpZ2h0OiBib2xkOworfQorZm9ybS5jbXhmb3JtIGxhYmVsIHsKKyAgZGlzcGxheTogaW5saW5lLWJsb2NrOworICBsaW5lLWhlaWdodDogMS44OworICB2ZXJ0aWNhbC1hbGlnbjogdG9wOworfQorZm9ybS5jbXhmb3JtIGZpZWxkc2V0IG9sIHsKKyAgbWFyZ2luOiAwOworICBwYWRkaW5nOiAwOworfQorZm9ybS5jbXhmb3JtIGZpZWxkc2V0IGxpIHsKKyAgbGlzdC1zdHlsZTogbm9uZTsKKyAgcGFkZGluZzogNXB4OworICBtYXJnaW46IDA7Cit9Citmb3JtLmNteGZvcm0gZmllbGRzZXQgZmllbGRzZXQgeworICBib3JkZXI6IG5vbmU7CisgIG1hcmdpbjogM3B4IDAgMDsKK30KK2Zvcm0uY214Zm9ybSBmaWVsZHNldCBmaWVsZHNldCBsZWdlbmQgeworICBwYWRkaW5nOiAwIDAgNXB4OworICBmb250LXdlaWdodDogbm9ybWFsOworfQorZm9ybS5jbXhmb3JtIGZpZWxkc2V0IGZpZWxkc2V0IGxhYmVsIHsKKyAgZGlzcGxheTogYmxvY2s7CisgIHdpZHRoOiBhdXRvOworfQorZm9ybS5jbXhmb3JtIGVtIHsKKyAgZm9udC13ZWlnaHQ6IGJvbGQ7CisgIGZvbnQtc3R5bGU6IG5vcm1hbDsKKyAgY29sb3I6ICNmMDA7Cit9Citmb3JtLmNteGZvcm0gbGFiZWwgeworICB3aWR0aDogNDIwcHg7IC8qIFdpZHRoIG9mIGxhYmVscyAqLworfQorZm9ybS5jbXhmb3JtIGZpZWxkc2V0IGZpZWxkc2V0IGxhYmVsIHsKKyAgbWFyZ2luLWxlZnQ6IDEyM3B4OyAvKiBXaWR0aCBwbHVzIDMgKGh0bWwgc3BhY2UpICovCit9CisKKzwvc3R5bGU+Cis8L2hlYWQ+Cis8Ym9keT4KKworPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCI+IAorIAorZnVuY3Rpb24gY2hlY2tFbWFpbCgpIAoreworICAgIC8vYWxlcnQoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInVzZXJlbWFpbCIpLnZhbHVlKTsKKyAgICAKKwlpZgkoL15bX2EtekEtWjAtOS1dKyguW19hLXpBLVowLTktXSspKkAoW2EtekEtWjAtOS1dKy4pKyhbYS16QS1aXXsxLDN9KSQvLnRlc3QoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInVzZXJlbWFpbCIpLnZhbHVlKSkKKwl7CisJCWRvY3VtZW50LmZvcm1zWzBdLnN1Ym1pdCgpOworCX0KKwllbHNlCisJeworCQlhbGVydCgiUGxlYXNlIGVudGVyIGEgdmFsaWQgRU1haWwsIGZvciBleGFtcGxlIG5hbWVAbWFpbC5jb20iKTsKKwl9Cit9Cis8L3NjcmlwdD4KKworPGgxPiRBUFBfTkFNRSAtIEluc3RhbGxhdGlvbjwvaDE+CisKKzxmb3JtIG5hbWU9ImNteGZvcm0iIGlkPSJmb3JtMSIgY2xhc3M9ImNteGZvcm0iIG1ldGhvZD0icG9zdCIgYWN0aW9uPSI/Y29tbWFuZD1zdGVwMiI+CisKKyAgICA8ZmllbGRzZXQgaWQ9InVzZXJEYXRhIj4KKyAgICAKKwkJPGxlZ2VuZD5Vc2VyZGF0YTwvbGVnZW5kPiAgICAKKwkJPGxpPgorICAgICAgICA8bGFiZWwgZm9yPSJ1c2VybmFtZSI+VXNlcm5hbWU8L2xhYmVsPgorICAgIAk8aW5wdXQgbmFtZT0idXNlcm5hbWUiIGlkPSJ1c2VybmFtZSIgc2l6ZT0iMjciIAorICAgIAkJdGl0bGU9IkVudGVyIGEgdXNlcm5hbWUiIHR5cGU9InRleHQiIC8+PGJyIC8+CisJCTwvbGk+PGxpPgorICAgICAgICA8bGFiZWwgZm9yPSJ1c2VycGFzcyI+VXNlcnBhc3M8L2xhYmVsPgorICAgIAk8aW5wdXQgbmFtZT0idXNlcnBhc3MiIGlkPSJ1c2VycGFzcyIgc2l6ZT0iMjciIAorICAgIAkJdGl0bGU9IkVudGVyIGEgcGFzc3dvcmQiIHR5cGU9InBhc3N3b3JkIiAvPjxiciAvPgorCQk8L2xpPjxsaT4KKyAgICAgICAgPGxhYmVsIGZvcj0idXNlcmVtYWlsIj5FTWFpbDwvbGFiZWw+CisgICAgCTxpbnB1dCBuYW1lPSJ1c2VyZW1haWwiIGlkPSJ1c2VyZW1haWwiIHNpemU9IjI3IiAKKyAgICAJCXRpdGxlPSJFbnRlciBhIEVNYWlsIiB0eXBlPSJ0ZXh0IiAvPjxici8+CisJCTwvbGk+PGxpPiAKKyAgICAJPGxhYmVsIGZvcj0idGltZVpvbmUiPlVzZXIgVGltZSBab25lPC9sYWJlbD4KKyAgICAJPHNlbGVjdCBuYW1lPSJ0aW1lWm9uZSIgaWQ9InRpbWVab25lIiAKKyAgICAJCXNpemU9IjEiPgorCQkJI2ZvcmVhY2goICRrZXkgaW4gJGFsbFRpbWVab25lcy5rZXlTZXQoKSApCisJCQkgICAgPG9wdGlvbiB2YWx1ZT0iJGtleSI+JGFsbFRpbWVab25lcy5nZXQoJGtleSk8L29wdGlvbj4KKwkJCSNlbmQJCisJICAgIDwvc2VsZWN0Pjxici8+CisJICAgIDwvbGk+IAorICAgIDwvZmllbGRzZXQ+CisgICAgCisgICAgPGZpZWxkc2V0IGlkPSJ1c2VyT3JnYSIgPgorICAgIAorCQk8bGVnZW5kPk9yZ2FuaXNhdGlvbihEb21haW5zKTwvbGVnZW5kPiAgICAKKwkJPGxpPgorICAgICAgICA8bGFiZWwgZm9yPSJvcmduYW1lIj5OYW1lPC9sYWJlbD4KKyAgICAJPGlucHV0IG5hbWU9Im9yZ25hbWUiIGlkPSJvcmduYW1lIiBzaXplPSIyNyIgCisgICAgCQl0aXRsZT0iRW50ZXIgYSBkZWZhdWx0IE9yZ2FuaXNhdGlvbiIgdHlwZT0idGV4dCIgLz4gICAJCisgICAgCTwvbGk+ICAgIAkKKyAgICA8L2ZpZWxkc2V0PiAgICAKKyAgICAKKyAgICA8ZmllbGRzZXQgaWQ9InVzZXJDb25mIj4KKyAgICAKKwkJPGxlZ2VuZD5Db25maWd1cmF0aW9uPC9sZWdlbmQ+ICAgIAorCQk8bGk+CisgICAgICAgIDxsYWJlbCBmb3I9ImNvbmZpZ2RlZmF1bHQiPkFsbG93IHNlbGYtcmVnaXN0ZXJpbmcgKGFsbG93X2Zyb250ZW5kX3JlZ2lzdGVyKTwvbGFiZWw+CisgICAgCTxzZWxlY3QgbmFtZT0iY29uZmlnZGVmYXVsdCIgaWQ9ImNvbmZpZ2RlZmF1bHQiIHNpemU9IjEiIAorICAgIAkJPgorCSAgICAgIAk8b3B0aW9uIHZhbHVlPSIxIiBzZWxlY3RlZD5ZZXM8L29wdGlvbj4KKwkgICAgICAgIDxvcHRpb24gdmFsdWU9IjAiPk5vPC9vcHRpb24+CisJICAgIDwvc2VsZWN0PjxiciAvPgorCSAgICA8L2xpPjxsaT4KKyAgICAgICAgPGxhYmVsIGZvcj0ic2VuZEVtYWlsQXRSZWdpc3RlciI+U2VuZCBFbWFpbCB0byBuZXcgcmVnaXN0ZXJlZCBVc2VycyAoc2VuZEVtYWlsQXRSZWdpc3Rlcik8L2xhYmVsPgorICAgIAk8c2VsZWN0IG5hbWU9InNlbmRFbWFpbEF0UmVnaXN0ZXIiIGlkPSJzZW5kRW1haWxBdFJlZ2lzdGVyIiBzaXplPSIxIgorICAgIAkJPgorCSAgICAgIAk8b3B0aW9uIHZhbHVlPSIxIiBzZWxlY3RlZD5ZZXM8L29wdGlvbj4KKwkgICAgICAgIDxvcHRpb24gdmFsdWU9IjAiPk5vPC9vcHRpb24+CisJICAgIDwvc2VsZWN0PjxiciAvPgkgCisJCTwvbGk+PGxpPgorICAgICAgICA8bGFiZWwgZm9yPSJzZW5kRW1haWxXaXRoVmVyZmljYXRpb25Db2RlIj5OZXcgVXNlcnMgbmVlZCB0byB2ZXJpZnkgdGhlaXIgRU1haWwgKHNlbmRFbWFpbFdpdGhWZXJmaWNhdGlvbkNvZGUpPC9sYWJlbD4KKyAgICAJPHNlbGVjdCBuYW1lPSJzZW5kRW1haWxXaXRoVmVyZmljYXRpb25Db2RlIiBpZD0ic2VuZEVtYWlsV2l0aFZlcmZpY2F0aW9uQ29kZSIgCisgICAgCQlzaXplPSIxIj4KKwkgICAgICAJPG9wdGlvbiB2YWx1ZT0iMSIgc2VsZWN0ZWQ+WWVzPC9vcHRpb24+CisJICAgICAgICA8b3B0aW9uIHZhbHVlPSIwIj5Obzwvb3B0aW9uPgorCSAgICA8L3NlbGVjdD48YnIgLz4JIAkgICAgICAgCisJCTwvbGk+PGxpPgorICAgICAgICA8bGFiZWwgZm9yPSJjcmVhdGVEZWZhdWx0Um9vbXMiPkRlZmF1bHQgUm9vbXMgb2YgYWxsIHR5cGVzIHdpbGwgYmUgY3JlYXRlZDwvbGFiZWw+CisgICAgCTxzZWxlY3QgbmFtZT0iY3JlYXRlRGVmYXVsdFJvb21zIiBpZD0iY3JlYXRlRGVmYXVsdFJvb21zIgorICAgIAkJc2l6ZT0iMSI+CisJICAgICAgCTxvcHRpb24gdmFsdWU9IjEiIHNlbGVjdGVkPlllczwvb3B0aW9uPgorCSAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMCI+Tm88L29wdGlvbj4KKwkgICAgPC9zZWxlY3Q+PGJyIC8+CSAJICAgICAgIAorCSAgICA8L2xpPjxsaT4KKwkgICAgPGxhYmVsIGZvcj0iY29uZmlncmVmZXJlciI+TWFpbC1SZWZlcmVyIChzeXN0ZW1fZW1haWxfYWRkcik8L2xhYmVsPgorICAgIAk8aW5wdXQgbmFtZT0iY29uZmlncmVmZXJlciIgaWQ9ImNvbmZpZ3JlZmVyZXIiIHNpemU9IjI3IiAKKyAgICAJCXRpdGxlPSJFbnRlciBhIFJlZmVyZXIiIHR5cGU9InRleHQiIHZhbHVlPSJub3JlcGx5QGxvY2FsaG9zdCIgLz48YnIgLz4KKyAgICAJPC9saT48bGk+CisgICAgICAgIDxsYWJlbCBmb3I9ImNvbmZpZ3NtdHAiPlNNVFAtU2VydmVyIChzbXRwX3NlcnZlcik8L2xhYmVsPgorICAgIAk8aW5wdXQgbmFtZT0iY29uZmlnc210cCIgaWQ9ImNvbmZpZ3NtdHAiIHNpemU9IjI3IiAKKyAgICAJCXRpdGxlPSJFbnRlciBhIFNNVFAtU2VydmVyIiB0eXBlPSJ0ZXh0IiB2YWx1ZT0ibG9jYWxob3N0IiAvPjxici8+CisgICAgCTwvbGk+PGxpPgorICAgIAk8bGFiZWwgZm9yPSJjb25maWdzbXRwIj5TTVRQLVNlcnZlciBQb3J0KGRlZmF1bHQgU210cC1TZXJ2ZXIgUG9ydCBpcyAyNSkgKHNtdHBfcG9ydCk8L2xhYmVsPgorICAgIAk8aW5wdXQgbmFtZT0iY29uZmlnc210cHBvcnQiIGlkPSJjb25maWdzbXRwcG9ydCIgc2l6ZT0iMjciIAorICAgIAkJdGl0bGU9IkVudGVyIGEgU01UUC1TZXJ2ZXIuUG9ydCBub3JtYWxseSAyNSIgdHlwZT0idGV4dCIgdmFsdWU9IjI1IiAvPjxici8+CisgICAgCTwvbGk+PGxpPgorICAgIAk8bGFiZWwgZm9yPSJjb25maWdtYWlsdXNlciI+U01UUC1Vc2VybmFtZSAoZW1haWxfdXNlcnBhc3MpPC9sYWJlbD4KKyAgICAJPGlucHV0IG5hbWU9ImNvbmZpZ21haWx1c2VyIiBpZD0iY29uZmlnbWFpbHVzZXIiIHNpemU9IjI3IiAKKyAgICAJCXRpdGxlPSJFbnRlciB0aGUgbWFpbC11c2VybmFtZSIgdHlwZT0idGV4dCIgLz48YnIgLz4KKyAgICAJPC9saT48bGk+CisgICAgCTxsYWJlbCBmb3I9ImNvbmZpZ21haWxwYXNzIj5TTVRQLVVzZXJwYXNzIChlbWFpbF91c2VycGFzcyk8L2xhYmVsPgorICAgIAk8aW5wdXQgbmFtZT0iY29uZmlnbWFpbHBhc3MiIGlkPSJjb25maWdtYWlscGFzcyIgc2l6ZT0iMjciIAorICAgIAkJdGl0bGU9IkVudGVyIHRoZSBtYWlsLXVzZXJwYXNzIiB0eXBlPSJwYXNzd29yZCIgLz48YnIvPgorICAgIAk8L2xpPjxsaT4KKyAgICAgICAgPGxhYmVsIGZvcj0ibWFpbHVzZXRscyI+RW5hYmxlIFRMUyBpbiBNYWlsIFNlcnZlciBBdXRoPC9sYWJlbD4KKyAgICAJPHNlbGVjdCBuYW1lPSJtYWlsdXNldGxzIiBpZD0ibWFpbHVzZXRscyIgCisgICAgCQlzaXplPSIxIj4KKwkgICAgICAJPG9wdGlvbiB2YWx1ZT0iMSI+WWVzPC9vcHRpb24+CisJICAgICAgICA8b3B0aW9uIHZhbHVlPSIwIiBzZWxlY3RlZD5Obzwvb3B0aW9uPgorCSAgICA8L3NlbGVjdD48YnIgLz4JIAkgICAgICAgCisJICAgIDwvbGk+PGxpPgorICAgICAgICA8bGFiZWwgZm9yPSJyZXBseVRvT3JnYW5pemVyIj5TZXQgaW52aXRlcidzIGVtYWlsIGFkZHJlc3MgYXMgUmVwbHlUbyBpbiBlbWFpbCBpbnZpdGF0aW9ucyAoaW52aXRlci5lbWFpbC5hcy5yZXBseXRvKTwvbGFiZWw+CisgICAgCTxzZWxlY3QgbmFtZT0icmVwbHlUb09yZ2FuaXplciIgaWQ9InJlcGx5VG9Pcmdhbml6ZXIiIHNpemU9IjEiCisgICAgCQk+CisJICAgICAgCTxvcHRpb24gdmFsdWU9IjEiIHNlbGVjdGVkPlllczwvb3B0aW9uPgorCSAgICAgICAgPG9wdGlvbiB2YWx1ZT0iMCI+Tm88L29wdGlvbj4KKwkgICAgPC9zZWxlY3Q+PGJyIC8+CSAKKwkgICAgPC9saT48bGk+IAorICAgIAk8bGFiZWwgZm9yPSJjb25maWdkZWZhdWx0TGFuZyI+RGVmYXVsdCBMYW5ndWFnZTwvbGFiZWw+CisgICAgCTxzZWxlY3QgbmFtZT0iY29uZmlnZGVmYXVsdExhbmciIGlkPSJjb25maWdkZWZhdWx0TGFuZyIgCisgICAgCQlzaXplPSIxIj4KKwkJCSNmb3JlYWNoKCAka2V5IGluICRhbGxMYW5ndWFnZXMua2V5U2V0KCkgKQorCQkJICAgIDxvcHRpb24gdmFsdWU9IiRrZXkiPiRhbGxMYW5ndWFnZXMuZ2V0KCRrZXkpPC9vcHRpb24+CisJCQkjZW5kCQorCSAgICA8L3NlbGVjdD48YnIvPgorCSAgICA8L2xpPiAKKwkgICAgPGxpPiAKKyAgICAJPGxhYmVsIGZvcj0iZGVmYXVsdF9leHBvcnRfZm9udCI+RGVmYXVsdCBGb250IGZvciBFeHBvcnQgW2RlZmF1bHRfZXhwb3J0X2ZvbnRdPC9sYWJlbD4KKyAgICAJPHNlbGVjdCBuYW1lPSJkZWZhdWx0X2V4cG9ydF9mb250IiBpZD0iZGVmYXVsdF9leHBvcnRfZm9udCIgCisgICAgCQlzaXplPSIxIj4KKwkJCSNmb3JlYWNoKCAka2V5MSBpbiAkYWxsRm9udHMua2V5U2V0KCkgKQorCQkJICAgIDxvcHRpb24gdmFsdWU9IiRrZXkxIj4kYWxsRm9udHMuZ2V0KCRrZXkxKTwvb3B0aW9uPgorCQkJI2VuZAkKKwkgICAgPC9zZWxlY3Q+PGJyLz4KKwkgICAgPC9saT4gICAgICAJCisgICAgPC9maWVsZHNldD4gIAorICAgIAorICAgIDxmaWVsZHNldCBpZD0idXNlckNvbmYxIj4KKwkJPGxlZ2VuZD5Db252ZXJ0ZXJzPC9sZWdlbmQ+CisJPGxpPgorCSAgICAgICAgPGxhYmVsIGZvcj0ic3dmdG9vbHNfem9vbSI+U1dGVG9vbHMgWm9vbTwvbGFiZWw+CisJICAgIAk8aW5wdXQgbmFtZT0ic3dmdG9vbHNfem9vbSIgaWQ9InN3ZnRvb2xzX3pvb20iIHNpemU9IjQiICB2YWx1ZT0iNzIiCisJCXRpdGxlPSJFbnRlciB0aGUgZHBpIHRoYXQgc3dmdG9vbHMgd2lsbCB1c2UgZm9yIFBERiB0byBTV0YgY29udmVyc2lvbiIgdHlwZT0idGV4dCIgCSAvPiAgIAkKKwkgICAgCTxwPjxpPllvdSBjYW4gdGVzdCBpZiBzd2Z0b29scyBpcyBpbnN0YWxsZWQgaW50byBzeXN0ZW0gcGF0aCBieSBvcGVuaW5nIGEgc2hlbGwgb3IgY21kLXByb21wdCBhbmQgdHlwZSBwZGYyc3dmPGJyLz4KKwkgICAgCQlFbnRlciB0aGUgZHBpIHRoYXQgc3dmdG9vbHMgd2lsbCB1c2UgZm9yIFBERiB0byBTV0YgY29udmVyc2lvbi4gRGVmYXVsdCBpcyA3MiBkcGkuPGJyLz4KKwkgICAgCQlzZWUgYWxzbyA8YSBocmVmPSJodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvaW5zdGFsbGF0aW9uLmh0bWwiIHRhcmdldD0iX2JsYW5rIj5JbnN0YWxsYXRpb248L2E+PC9pPjwvcD4KKwkJCisgICAgICAgIDwvbGk+CisJPGxpPgorCSAgICAgICAgPGxhYmVsIGZvcj0ic3dmdG9vbHNfanBlZ3F1YWxpdHkiPlNXRlRvb2xzIEpQRUcgUXVhbGl0eTwvbGFiZWw+CisJICAgIAk8aW5wdXQgbmFtZT0ic3dmdG9vbHNfanBlZ3F1YWxpdHkiIGlkPSJzd2Z0b29sc19qcGVncXVhbGl0eSIgc2l6ZT0iMyIgdmFsdWU9Ijg1IiAKKwkJdGl0bGU9IkVudGVyIHRoZSBxdWFsaXR5IG9mIGVtYmVkZGVkIGpwZWcgcGljdHVyZXMgdG8gcXVhbGl0eS4gMCBpcyB3b3JzdCAoc21hbGwpLCAxMDAgaXMgYmVzdCAoYmlnKS4gKGRlZmF1bHQ6ODUpIiAgdHlwZT0idGV4dCIgLz4gICAJCisJICAgIAk8cD4KKwkJPGk+WW91IGNhbiB0ZXN0IGlmIHN3ZnRvb2xzIGlzIGluc3RhbGxlZCBpbnRvIHN5c3RlbSBwYXRoIGJ5IG9wZW5pbmcgYSBzaGVsbCBvciBjbWQtcHJvbXB0IGFuZCB0eXBlIHBkZjJzd2Y8YnIvPgorCSAgICAJCUVudGVyIHRoZSBxdWFsaXR5IG9mIGVtYmVkZGVkIGpwZWcgcGljdHVyZXMgdG8gcXVhbGl0eS4gMCBpcyB3b3JzdCAoc21hbGwpLCAxMDAgaXMgYmVzdCAoYmlnKS4gKGRlZmF1bHQ6ODUpPGJyLz4KKwkgICAgCQlzZWUgYWxzbyA8YSBocmVmPSJodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvaW5zdGFsbGF0aW9uLmh0bWwiIHRhcmdldD0iX2JsYW5rIj5JbnN0YWxsYXRpb248L2E+PC9pPgorCQk8L3A+CisgICAgICAgIDwvbGk+CisgICAgCisJCTxsaT4KKwkgICAgICAgIDxsYWJlbCBmb3I9InN3ZnRvb2xzX3BhdGgiPlNXRlRvb2xzIFBhdGg8L2xhYmVsPgorCSAgICAJPGlucHV0IG5hbWU9InN3ZnRvb2xzX3BhdGgiIGlkPSJzd2Z0b29sc19wYXRoIiBzaXplPSIyNyIgdGl0bGU9IkVudGVyIHRoZSBwYXRoIHRvIHN3ZnRvb2xzIGZvciBleGFtcGxlIEM6L3N3ZnRvb2xzIChXaW5kb3dzKSBvciBsZWF2ZSBibGFuayBpZiBzd2Z0b29scyBpcyBhIGtub3duIHRvIHlvdXIgc3lzdGVtIHBhdGgiIHR5cGU9InRleHQiIC8+ICAgCQorCSAgICAJPHA+PGk+WW91IGNhbiB0ZXN0IGlmIHN3ZnRvb2xzIGlzIGluc3RhbGxlZCBpbnRvIHN5c3RlbSBwYXRoIGJ5IG9wZW5pbmcgYSBzaGVsbCBvciBjbWQtcHJvbXB0IGFuZCB0eXBlIHBkZjJzd2Y8YnIvPgorCSAgICAJCUlmIHRoaXMgc2hvd3MgYSBsaXN0IG9mIG9wdGlvbnMgbGVhdmUgdGhpcyBmaWVsZCBibGFuayBvdGhlcndpc2UgeW91IGhhdmUgdG8gc3BlY2lmeSB0aGUgcGF0aCB0byBwZGYyc3dmIG9uIHlvdXIgc3lzdGVtPGJyLz4KKwkgICAgCQlzZWUgYWxzbyA8YSBocmVmPSJodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvaW5zdGFsbGF0aW9uLmh0bWwiIHRhcmdldD0iX2JsYW5rIj5JbnN0YWxsYXRpb248L2E+PC9pPjwvcD4KKyAgICAgICAgPC9saT4KKyAgICAgICAgPGxpPgorCSAgICAgICAgPGxhYmVsIGZvcj0iaW1hZ2VtYWdpY2tfcGF0aCI+SW1hZ2VNYWdpY2sgUGF0aDwvbGFiZWw+CisJICAgIAk8aW5wdXQgbmFtZT0iaW1hZ2VtYWdpY2tfcGF0aCIgaWQ9ImltYWdlbWFnaWNrX3BhdGgiIHNpemU9IjI3IiB0aXRsZT0iRW50ZXIgdGhlIHBhdGggdG8gSW1hZ2VNYWdpY2ssIGxlYXZlIGJsYW5rIGlmIEltYWdlTWFnaWNrIGlzIHN1Y2Nlc3NmdWxseSBpbnN0YWxsZWQgdG8gc3lzdGVtLXBhdGgiIHR5cGU9InRleHQiIC8+ICAgCQorCSAgICAJPHA+PGk+c2VlIGFsc28gPGEgaHJlZj0iaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnL2luc3RhbGxhdGlvbi5odG1sIiB0YXJnZXQ9Il9ibGFuayI+SW5zdGFsbGF0aW9uPC9hPjwvaT48L3A+CQorICAgIAk8L2xpPgorICAgIAk8bGk+CisJICAgICAgICA8bGFiZWwgZm9yPSJmZm1wZWdfcGF0aCI+RkZNUEVHIFBhdGg8L2xhYmVsPgorCSAgICAgICAgPGlucHV0IG5hbWU9ImZmbXBlZ19wYXRoIiBpZD0iZmZtcGVnX3BhdGgiIHNpemU9IjI3IiB0aXRsZT0iRW50ZXIgdGhlIHBhdGggdG8gRkZNUEVHLCBsZWF2ZSBibGFuayBpZiBGRk1QRUcgaXMgc3VjY2Vzc2Z1bGx5IGluc3RhbGxlZCB0byBzeXN0ZW0tcGF0aCIgdHlwZT0idGV4dCIgLz4gICAgCisJICAgICAgICA8cD48aT5zZWUgYWxzbyA8YSBocmVmPSJodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvaW5zdGFsbGF0aW9uLmh0bWwiIHRhcmdldD0iX2JsYW5rIj5JbnN0YWxsYXRpb248L2E+PC9pPjwvcD4gIAorICAgICAgICA8L2xpPgorICAgICAgICA8bGk+CisgICAgICAgIDxsYWJlbCBmb3I9InNveF9wYXRoIj5Tb1ggUGF0aDwvbGFiZWw+CisJICAgICAgICA8aW5wdXQgbmFtZT0ic294X3BhdGgiIGlkPSJzb3hfcGF0aCIgc2l6ZT0iMjciIHRpdGxlPSJFbnRlciB0aGUgcGF0aCB0byBTb1gsIGxlYXZlIGJsYW5rIGlmIFNvWCBpcyBzdWNjZXNzZnVsbHkgaW5zdGFsbGVkIHRvIHN5c3RlbS1wYXRoIiB0eXBlPSJ0ZXh0IiAvPiAgICAKKwkgICAgICAgIDxwPjxpPnNlZSBhbHNvIDxhIGhyZWY9Imh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9pbnN0YWxsYXRpb24uaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPkluc3RhbGxhdGlvbjwvYT48L2k+PC9wPiAgCisgICAgICAgIDwvbGk+CisJCTxsaT4KKwkgICAgICAgIDxsYWJlbCBmb3I9ImpvZF9wYXRoIj5KT0QgUGF0aDwvbGFiZWw+CisJICAgICAgICA8aW5wdXQgbmFtZT0iam9kX3BhdGgiIGlkPSJqb2RfcGF0aCIgc2l6ZT0iMjciIHZhbHVlPSIuL2pvZGNvbnZlcnRlci1jb3JlLTMuMC1iZXRhLTQvbGliIiAKKwkJCXRpdGxlPSJUaGUgcGF0aCB0byBKT0QgbGlicmFyeSAoaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2pvZGNvbnZlcnRlciksIGNvbmZpZ3VyZSB0aGUgcGF0aCB0byBwb2ludCB0byB0aGUgbGliIGRpcmVjdG9yeSBvZiBKT0QgdGhhdCBjb250YWlucyBhbHNvIHRoZSBqb2Rjb252ZXJ0ZXItY29yZS12ZXJzaW9uLmphciIgdHlwZT0idGV4dCIgLz4gICAgCisJICAgICAgICA8cD48aT5zZWUgYWxzbyA8YSBocmVmPSJodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvaW5zdGFsbGF0aW9uLmh0bWwiIHRhcmdldD0iX2JsYW5rIj5JbnN0YWxsYXRpb248L2E+PC9pPjwvcD4gIAorICAgICAgICA8L2xpPgorCQk8bGk+CisJICAgICAgICA8bGFiZWwgZm9yPSJvZmZpY2VfcGF0aCI+T3Blbk9mZmljZS9MaWJyZU9mZmljZSBQYXRoIGZvciBqb2Rjb252ZXJ0ZXI8L2xhYmVsPgorCSAgICAgICAgPGlucHV0IG5hbWU9Im9mZmljZV9wYXRoIiBpZD0ib2ZmaWNlX3BhdGgiIHNpemU9IjI3IiB2YWx1ZT0iIiAKKwkJCXRpdGxlPSJUaGUgcGF0aCB0byBPcGVuT2ZmaWNlL0xpYnJlT2ZmaWNlIChvcHRpb25hbCkgcGxlYXNlIHNldCB0aGlzIHRvIHRoZSByZWFsIHBhdGggaW4gY2FzZSBqb2Rjb252ZXJ0ZXIgaXMgdW5hYmxlIHRvIGZpbmQgT3Blbk9mZmljZS9MaWJyZU9mZmljZSBpbnN0YWxsYXRpb24gYXV0b21hdGljYWxseSIgdHlwZT0idGV4dCIgLz4gICAgCisJICAgICAgICA8cD5UaGUgcGF0aCB0byBPcGVuT2ZmaWNlL0xpYnJlT2ZmaWNlIChvcHRpb25hbCkgcGxlYXNlIHNldCB0aGlzIHRvIHRoZSByZWFsIHBhdGggaW4gY2FzZSBqb2Rjb252ZXJ0ZXIgaXMgdW5hYmxlIHRvIGZpbmQgT3Blbk9mZmljZS9MaWJyZU9mZmljZSBpbnN0YWxsYXRpb248L3A+ICAKKyAgICAgICAgPC9saT4KKyAgICA8L2ZpZWxkc2V0PiAgICAgIAorICAgIAorICAgIDxmaWVsZHNldCBpZD0idXNlckNvbmYyIj4KKyAgICAKKwkJPGxlZ2VuZD5DcnlwdCBUeXBlPC9sZWdlbmQ+ICAgIAorCQk8bGk+CisgICAgICAgIDxsYWJlbCBmb3I9ImNyeXB0X0NsYXNzTmFtZSI+Q3J5cHQgQ2xhc3M8L2xhYmVsPgorICAgIAk8aW5wdXQgbmFtZT0iY3J5cHRfQ2xhc3NOYW1lIiBpZD0iY3J5cHRfQ2xhc3NOYW1lIiBzaXplPSIyNyIgCisgICAgCQl0eXBlPSJ0ZXh0IiAKKyAgICAJCXRpdGxlPSJFbnRlciB0aGUgQ2xhc3MgbmFtZSBvZiB0aGUgRW5jcnlwdGlvbiBDbGFzcy4gRE8gTk9UIEFMVEVSIFRISVMgSUYgWU9VIEFSRSBOT1QgU1VSRSIKKyAgICAJCXZhbHVlPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5jcnlwdC5NRDVJbXBsZW1lbnRhdGlvbiIgLz4gIAkKKwkJPC9saT4KKyAgICAJPHA+PGk+CisJICAgIAlZb3UgY2FuIHVzZSB0aGlzIGRlZmF1bHQgY3J5cHQgdHlwZSB3aGljaCBpcyBlcXVhbCB0byBQSFAtTUQ1IGZ1bmN0aW9uIG9yIEJTRC1TdHlsZTxCUi8+CisJICAgIAllbmNyeXB0aW9uIGJ5IHVzaW5nOjxiPm9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLmNyeXB0Lk1ENUNyeXB0SW1wbGVtZW50YXRpb248L2I+PEJSLz4KKwkgICAgCWZvciBtb3JlIGluZm9ybWF0aW9uIG9yIHRvIHdyaXRlIHlvdXIgb3duIENyeXB0LVN0eWxlIHNlZTo8QlIvPgorCQkJPGEgaHJlZj0iaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiIHRhcmdldD0iX2JsYW5rIj5DdXN0b20gQ3J5cHQgTWVjaGFuaXNtPC9hPjxCUi8+CisJCQlZb3UgY2FuIGVkaXQgdGhpcyB2YWx1ZSBsYXRlciBCVVQgcHJldmlvdXMgY3JlYXRlZCBVc2VycyBhbmQgU2Vzc2lvbnMgbWlnaHQgYmUgbm90IHVzYWJsZSBhbnltb3JlPEJSLz4KKyAgICAJPC9pPjwvcD4KKyAgICAgICAgCisgICAgPC9maWVsZHNldD4KKyAgICAKKyAgICA8ZmllbGRzZXQgaWQ9InJlZDVzaXAiPgorICAgICAgICA8bGVnZW5kPnJlZDVTSVAgQ29uZmlndXJhdGlvbjwvbGVnZW5kPgorCisgICAgICAgIDxsaT4KKyAgICAgICAgPGxhYmVsIGZvcj0icmVkNXNpcF9lbmFibGUiPkVuYWJsZSBTSVA8L2xhYmVsPgorICAgIAk8c2VsZWN0IG5hbWU9InJlZDVzaXBfZW5hYmxlIiBpZD0icmVkNXNpcF9lbmFibGUiIHNpemU9IjEiPgorICAgIAkJPG9wdGlvbiB2YWx1ZT0ieWVzIj5ZZXM8L29wdGlvbj4KKwkgICAgICAJPG9wdGlvbiB2YWx1ZT0ibm8iIHNlbGVjdGVkPk5vPC9vcHRpb24+CisJICAgIDwvc2VsZWN0PjxiciAvPgorCSAgICA8L2xpPgorCQk8cD48aT4KKyAgICAgICAgICAgIEVuYWJsZSByZWQ1U0lQIGludGVncmF0aW9uCisgICAgICAgIDwvaT48L3A+CisgICAgICAgIDxiciAvPgorCisgICAgICAgIDxsaT4KKyAgICAgICAgPGxhYmVsIGZvcj0icmVkNXNpcF9yb29tX3ByZWZpeCI+U0lQIHJvb21zIHByZWZpeDwvbGFiZWw+CisgICAgICAgIDxpbnB1dCBuYW1lPSJyZWQ1c2lwX3Jvb21fcHJlZml4IiBpZD0icmVkNXNpcF9yb29tX3ByZWZpeCIgc2l6ZT0iMjciIHRpdGxlPSIiIHR5cGU9InRleHQiIHZhbHVlPSI0MDAiIC8+CisgICAgICAgIDxwPjxpPlByZWZpeCBmb3IgcGhvbmUgbnVtYmVyIG9mIGNvbmZlcmVuY2Ugcm9vbXM8L2k+PC9wPgorICAgICAgICA8L2xpPgorCisgICAgICAgIDxsaT4KKyAgICAgICAgPGxhYmVsIGZvcj0icmVkNXNpcF9leHRlbl9jb250ZXh0Ij5TSVAgZXh0ZW5zaW9ucyBjb250ZXh0PC9sYWJlbD4KKyAgICAgICAgPGlucHV0IG5hbWU9InJlZDVzaXBfZXh0ZW5fY29udGV4dCIgaWQ9InJlZDVzaXBfZXh0ZW5fY29udGV4dCIgc2l6ZT0iMjciIHRpdGxlPSIiIHR5cGU9InRleHQiIHZhbHVlPSJyb29tcyIgLz4KKyAgICAgICAgPHA+PGk+Q29udGV4dCBvZiBBc3RlcmlzayBleHRlbnNpb25zPC9pPjwvcD4KKyAgICAgICAgPC9saT4KKworICAgIDwvZmllbGRzZXQ+CisKKyAgICA8ZmllbGRzZXQ+CisgICAgICAgIDxsZWdlbmQ+U3VibWl0PC9sZWdlbmQ+IAorICAgICAgICA8aW5wdXQgbmFtZT0iU3VibWl0IiB2YWx1ZT0iSU5TVEFMTCIgCisgICAgCQl0aXRsZT0iU3VibWl0IiB0eXBlPSJidXR0b24iICBvbmNsaWNrPSJjaGVja0VtYWlsKCk7Ii8+CisgICAgPC9maWVsZHNldD4JCisJCis8L2Zvcm0+CisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL3NyYy9pbnN0YWxsX3N0ZXAyX0VOLnZtIGIvc3JjL2luc3RhbGxfc3RlcDJfRU4udm0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzU0M2VlNAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9pbnN0YWxsX3N0ZXAyX0VOLnZtCkBAIC0wLDAgKzEsNDMgQEAKKyMjIE9wZW5NZWV0aW5ncworIyMgYXV0aG9yIHN3YWduZXIKKyMjIDExLjA1LjIwMDcKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAnLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4nICdodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkJz4KKzwhLS0KK0NvcHlyaWdodCAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK3lvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCitodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKzxodG1sIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJyB4bWw6bGFuZz0nZW4nIGxhbmc9J2VuJz4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMScgLz4KKzwvaGVhZD4KKzxib2R5PgorPEgxPiRBUFBfTkFNRSAtIEluc3RhbGxhdGlvbiBDb21wbGV0ZSE8L2gxPgorPGgyPjxhIGhyZWY9Ii8kQVBQX1JPT1QvIj5FbnRlciB0aGUgQXBwbGljYXRpb248L2E+PC9oMj4KKzxici8+Cis8YnIvPgorSWYgeW91ciBSZWQ1LVNlcnZlciBydW5zIG9uIGEgZGlmZmVyZW50IFBvcnQgb3Igb24gYSBkaWZmZXJlbnQgZG9tYWluPGJyLz4KKzxhIGhyZWY9ImNvbmZpZy54bWwiPmFsdGVyIHRoZSBjb25maWcgdmFsdWVzIG9mIHRoZSBjbGllbnQ8L2E+Cis8YnIvPjxici8+PGJyLz4KKworPGI+IDxzcGFuIHN0eWxlPSJmb250LXNpemU6MS40ZW0iPk1haWxpbmcgbGlzdDwvc3Bhbj48L2I+PGJyLz48YnIvPgorCis8c3BhbiBzdHlsZT0iZm9udC1zaXplOjEuM2VtIj48YSBocmVmPSJodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvbWFpbC1saXN0cy5odG1sIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnL21haWwtbGlzdHMuaHRtbDwvYT48L3NwYW4+PGJyLz48YnIvPgorCisKKzxiPiA8c3BhbiBzdHlsZT0iZm9udC1zaXplOjEuNGVtIj5UaGVyZSBhcmUgc29tZSBjb21wYW5pZXMgdGhhdCBhbHNvIG9mZmVyIGNvbW1lcmNpYWwgc3VwcG9ydCBmb3IgQXBhY2hlIE9wZW5NZWV0aW5nczo8L3NwYW4+PC9iPjxici8+PGJyLz4KKworPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxLjNlbSI+PGEgaHJlZj0iaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnL2NvbW1lcmNpYWwtc3VwcG9ydC5odG1sPC9hPjwvc3Bhbj48YnIvPgorCisKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL3NyYy9pbnN0YWxsX3dlbGNvbWVfRU4udm0gYi9zcmMvaW5zdGFsbF93ZWxjb21lX0VOLnZtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3YWFjODUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5zdGFsbF93ZWxjb21lX0VOLnZtCkBAIC0wLDAgKzEsNTIgQEAKKyMjIE9wZW5NZWV0aW5ncworIyMgYXV0aG9yIHN3YWduZXIKKyMjIDEwLjA0LjIwMDcKKyMjIHJldmlzZWQgSC5LdXplKG1pbmFtb3Rvbm9hc29uKSAyMDA4LkFwci4yCis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgJy0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOJyAnaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCc+Cis8IS0tCitDb3B5cmlnaHQgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+Cis8aHRtbCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcgeG1sOmxhbmc9J2VuJyBsYW5nPSdlbic+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9J0NvbnRlbnQtVHlwZScgY29udGVudD0ndGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEnIC8+Cis8L2hlYWQ+Cis8Ym9keT4KKzxoMz4kQVBQX05BTUUgLSBJbnN0YWxsYXRpb248L2gzPgorCis8aDM+PEEgSFJFRj0iP2NvbW1hbmQ9c3RlcDEiPkNvbnRpbnVlIHdpdGggU1RFUCAxPC9BPjwvaDM+CisKKzxvbD48bGk+Cis8aDQ+PGEgbmFtZT0iUmVjb21tZW5kYXRpb25fZm9yX3Byb2R1Y3Rpb25fZW52aXJvbm1lbnQiPjwvYT5SZWNvbW1lbmRhdGlvbiBmb3IgcHJvZHVjdGlvbiBlbnZpcm9ubWVudDxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSIjUmVjb21tZW5kYXRpb25fZm9yX3Byb2R1Y3Rpb25fZW52aXJvbm1lbnQiIGNsYXNzPSJzZWN0aW9uX2FuY2hvciI+PC9hPjwvaDQ+Cis8L2xpPjxibG9ja3F1b3RlPkJ5IGRlZmF1bHQgJEFQUF9OQU1FIHVzZXMgdGhlIGludGVncmF0ZWQgQXBhY2hlIERlcmJ5IGRhdGFiYXNlLiBGb3IgcHJvZHVjdGlvbiBlbnZpcm9ubWVudCB5b3Ugc2hvdWxkIGNvbnNpZGVyIHVzaW5nIDxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvTXlTUUxDb25maWcuaHRtbCI+TXlTUUw8L2E+LCA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnL1Bvc3RncmVzQ29uZmlnLmh0bWwiPlBvc3RncmVzPC9hPiBvciBmb3IgZXhhbXBsZSA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnL0lCTURCMkNvbmZpZy5odG1sIj5JQk0gREIyPC9hPiBvciA8YSBocmVmPSJodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvT3JhY2xlQ29uZmlnLmh0bWwiIHRhcmdldD0iX2JsYW5rIj5PcmFjbGU8L2E+Cis8L2Jsb2NrcXVvdGU+PGxpPjxoND48YSBuYW1lPSJFbmFibGluZ19JbWFnZV9VcGxvYWRfYW5kX2ltcG9ydF90b193aGl0ZWJvYXJkIj48L2E+RW5hYmxpbmcgSW1hZ2UgVXBsb2FkIGFuZCBpbXBvcnQgdG8gd2hpdGVib2FyZDxhIGhyZWY9IiNFbmFibGluZ19JbWFnZV9VcGxvYWRfYW5kX2ltcG9ydF90b193aGl0ZWJvYXJkIiBjbGFzcz0ic2VjdGlvbl9hbmNob3IiPjwvYT48L2g0PjwvbGk+PHVsPjxsaT5JbnN0YWxsIDxzdHJvbmc+SW1hZ2VNYWdpY2s8L3N0cm9uZz4gb24gdGhlIHNlcnZlciwgeW91IGNhbiBnZXQgbW9yZSBpbmZvcm1hdGlvbiBvbiA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL3d3dy5pbWFnZW1hZ2ljay5vcmciIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly93d3cuaW1hZ2VtYWdpY2sub3JnPC9hPiByZWdhcmRpbmcgaW5zdGFsbGF0aW9uLiBUaGUgaW5zdHJ1Y3Rpb25zIGZvciBpbnN0YWxsYXRpb24gY2FuIGJlIGZvdW5kIHRoZXJlIDxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwOi8vd3d3LmltYWdlbWFnaWNrLm9yZy9zY3JpcHQvYmluYXJ5LXJlbGVhc2VzLnBocCIgcmVsPSJub2ZvbGxvdyI+aHR0cDovL3d3dy5pbWFnZW1hZ2ljay5vcmcvc2NyaXB0L2JpbmFyeS1yZWxlYXNlcy5waHA8L2E+LCBob3dldmVyIG9uIG1vc3QgbGludXggc3lzdGVtcyB5b3UgY2FuIGdldCBpdCB2aWEgeW91ciBmYXZvcml0ZSBwYWNrYWdlIG1hbmFnZXJzIChhcHQtZ2V0IGl0KSA8L2xpPjwvdWw+PGxpPjxoND48YSBuYW1lPSJFbmFibGluZ19pbXBvcnRfb2ZfUERGc19pbnRvX3doaXRlYm9hcmQiPjwvYT5FbmFibGluZyBpbXBvcnQgb2YgUERGcyBpbnRvIHdoaXRlYm9hcmQ8YSBocmVmPSIjRW5hYmxpbmdfaW1wb3J0X29mX1BERnNfaW50b193aGl0ZWJvYXJkIiBjbGFzcz0ic2VjdGlvbl9hbmNob3IiPjwvYT48L2g0PjwvbGk+PHVsPjxsaT5JbnN0YWxsIDxzdHJvbmc+R2hvc3RTY3JpcHQ8L3N0cm9uZz4gb24gdGhlIHNlcnZlciwgeW91IGNhbiBnZXQgbW9yZSBpbmZvcm1hdGlvbiBvbiA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL3BhZ2VzLmNzLndpc2MuZWR1LyU3RWdob3N0LyIgcmVsPSJub2ZvbGxvdyI+aHR0cDovL3BhZ2VzLmNzLndpc2MuZWR1L35naG9zdC88L2E+IHJlZ2FyZGluZyBpbnN0YWxsYXRpb24uIFRoZSBpbnN0cnVjdGlvbnMgZm9yIGluc3RhbGxhdGlvbiBjYW4gYmUgZm91bmQgdGhlcmUsIGhvd2V2ZXIgb24gbW9zdCBsaW51eCBzeXN0ZW1zIHlvdSBjYW4gZ2V0IGl0IHZpYSB5b3VyIGZhdm9yaXRlIHBhY2thZ2UgbWFuYWdlcnMgKGFwdC1nZXQgaXQpLiA8L2xpPjxsaT5JbnN0YWxsIDxzdHJvbmc+U1dGVG9vbHM8L3N0cm9uZz4gb24gdGhlIHNlcnZlciwgeW91IGNhbiBnZXQgbW9yZSBpbmZvcm1hdGlvbiBvbiA8YSB0YXJnZXQ9Il9ibGFuayIgaHJlZj0iaHR0cDovL3d3dy5zd2Z0b29scy5vcmcvIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vd3d3LnN3ZnRvb2xzLm9yZy88L2E+IHJlZ2FyZGluZyBpbnN0YWxsYXRpb24uIFNvbWUgb2YgdGhlIExpbnV4IGRpc3RyaWJ1dGlvbnMgYWxyZWFkeSBoYXZlIGl0IGluIHRoZXJlIHBhY2thZ2UgbWFuYWdlciBzZWUgPGEgdGFyZ2V0PSJfYmxhbmsiIGhyZWY9Imh0dHA6Ly9wYWNrYWdlcy5kZWJpYW4ub3JnL3Vuc3RhYmxlL3V0aWxzL3N3ZnRvb2xzIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vcGFja2FnZXMuZGViaWFuLm9yZy91bnN0YWJsZS91dGlscy9zd2Z0b29sczwvYT4pLCB0aGUgcmVjb21tZW5kZWQgdmVyc2lvbiBvZiA8c3Ryb25nPlNXRlRvb2xzPC9zdHJvbmc+IGlzIDAuOSBhcyBwcmlvciB2ZXJzaW9uIGhhdmUgYSBidWcgdGhhdCBkb2VzIGxlYWQgdG8gd3Jvbmcgb2JqZWN0IGRpbWVuc2lvbnMgaW4gdGhlIFdoaXRlYm9hcmQgPC9saT48L3VsPjxsaT48aDQ+PGEgbmFtZT0iRW5hYmxpbmdfaW1wb3J0X29mXy5kb2MsXy5kb2N4LF8ucHB0LF8ucHB0eCxfLi4uX2FsbF9PZmZpY2VfRG9jdSI+PC9hPkVuYWJsaW5nIGltcG9ydCBvZiAuZG9jLCAuZG9jeCwgLnBwdCwgLnBwdHgsIC4uLiBhbGwgT2ZmaWNlIERvY3VtZW50cyBpbnRvIHdoaXRlYmFvcmQ8YSBocmVmPSIjRW5hYmxpbmdfaW1wb3J0X29mXy5kb2MsXy5kb2N4LF8ucHB0LF8ucHB0eCxfLi4uX2FsbF9PZmZpY2VfRG9jdSIgY2xhc3M9InNlY3Rpb25fYW5jaG9yIj48L2E+PC9oND48L2xpPjx1bD48bGk+PHN0cm9uZz5PcGVuT2ZmaWNlLVNlcnZpY2U8L3N0cm9uZz4gc3RhcnRlZCBhbmQgbGlzdGVuaW5nIG9uIHBvcnQgODEwMCwgc2VlIDxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvT3Blbk9mZmljZUNvbnZlcnRlci5odG1sIj5PcGVuT2ZmaWNlQ29udmVydGVyPC9hPiBmb3IgZGV0YWlscyA8L2xpPjwvdWw+PGxpPjxoND48YSBuYW1lPSJFbmFibGluZ19SZWNvcmRpbmdfYW5kX2ltcG9ydF9vZl8uYXZpLF8uZmx2LF8ubW92X2FuZF8ubXA0X2ludG8iPjwvYT5FbmFibGluZyBSZWNvcmRpbmcgYW5kIGltcG9ydCBvZiAuYXZpLCAuZmx2LCAubW92IGFuZCAubXA0IGludG8gd2hpdGVib2FyZDxhIGhyZWY9IiNFbmFibGluZ19SZWNvcmRpbmdfYW5kX2ltcG9ydF9vZl8uYXZpLF8uZmx2LF8ubW92X2FuZF8ubXA0X2ludG8iIGNsYXNzPSJzZWN0aW9uX2FuY2hvciI+PC9hPjwvaDQ+PC9saT48dWw+PGxpPkluc3RhbGwgPHN0cm9uZz5GRk1wZWc8L3N0cm9uZz4uIFlvdSBzaG91bGQgZ2V0IEZGTVBFRyBpbiBhbiB1cCB0byBkYXRlIGNvcHkhIEZvciBXaW5kb3dzIHlvdSBjYW4gZG93bmxvYWQgYSBCdWlsZCBmb3IgZXhhbXBsZSBmcm9tIDxhIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwOi8vZmZtcGVnLmFycm96Y3J1Lm9yZy9idWlsZHMvIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vZmZtcGVnLmFycm96Y3J1Lm9yZy9idWlsZHMvPC9hPiBMaW51eCBvciBPU3ggVXNlcnMgc2hvdWxkIGJlIGFibGUgdG8gdXNlIG9uZSBvZiB0aGUgdmFyaW91cyBJbnN0YWxsYXRpb24gSW5zdHJ1Y3Rpb25zIG9uIHRoZSBXZWIuIFlvdSBuZWVkIHRvIGVuYWJsZSBsaWJtcDNsYW1lISA8L2xpPjxsaT5JbnN0YWxsIDxzdHJvbmc+U29YPC9zdHJvbmc+IDxhIGhyZWY9Imh0dHA6Ly9zb3guc291cmNlZm9yZ2UubmV0LyIgdGFyZ2V0PSJfQkxBTksiPmh0dHA6Ly9zb3guc291cmNlZm9yZ2UubmV0LzwvYT4uIFlvdSBzaG91bGQgaW5zdGFsbCBTb1ggaW4gYSB1cCB0byBkYXRlIGNvcHkhIFNvWCAxMi54eCB3aWxsIE5PVCB3b3JrISA8L2xpPjwvdWw+PC9vbD4KKworPGgzPjxBIEhSRUY9Ij9jb21tYW5kPXN0ZXAxIj5Db250aW51ZSB3aXRoIFNURVAgMTwvQT48L2gzPgorCis8YnIvPgorPGI+IDxzcGFuIHN0eWxlPSJmb250LXNpemU6MS4yZW0iPklmIHlvdSBoYXZlIGZ1cnRoZXIgcXVlc3Rpb25zIG9yIG5lZWQgc3VwcG9ydCBpbiBpbnN0YWxsYXRpb24gb3IgaG9zdGluZzo8L3NwYW4+PC9iPjxici8+PGJyLz4KKworPGI+IDxzcGFuIHN0eWxlPSJmb250LXNpemU6MS4yZW0iPkNvbW1lcmNpYWwtU3VwcG9ydDo8L3NwYW4+PC9iPjxici8+PGJyLz4KKworPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxLjFlbSI+PGI+QnkgcGhvbmU8L2I+PC9zcGFuPjxici8+Cis8c3BhbiBzdHlsZT0iZm9udC1zaXplOjEuMWVtIj4rKzQ5IDcyMSA0NjcgMjczMjc8L3NwYW4+PGJyLz4KKzxzcGFuIHN0eWxlPSJmb250LXNpemU6MS4xZW0iPjxiPkJ5IGVtYWlsPC9iPjwvc3Bhbj48YnIvPgorPHNwYW4gc3R5bGU9ImZvbnQtc2l6ZToxLjFlbSI+PGEgaHJlZj0ibWFpbHRvOnNlcnZpY2VAb3Blbm1lZXRpbmdzLmRlIj5zZXJ2aWNlQG9wZW5tZWV0aW5ncy5kZTwvYT48L3NwYW4+IDxici8+Cis8YnIvPjxici8+Cis8Yj48c3BhbiBzdHlsZT0iZm9udC1zaXplOjEuMmVtIj5Db21tdW5pdHktU3VwcG9ydDo8L3NwYW4+PC9iPjxici8+PGJyLz4KKzxzcGFuIHN0eWxlPSJmb250LXNpemU6MS4xZW0iPjxhIGhyZWY9Imh0dHBzOi8vZ3JvdXBzLmdvb2dsZS5jb20vZm9ydW0vIyFmb3J1bS9vcGVubWVldGluZ3MtdXNlciIgdGFyZ2V0PSJfYmxhbmsiPlVzZXItRm9ydW1zPC9hPjwvc3Bhbj4gPGJyLz4KKzxzcGFuIHN0eWxlPSJmb250LXNpemU6MS4xZW0iPjxhIGhyZWY9Imh0dHBzOi8vZ3JvdXBzLmdvb2dsZS5jb20vZm9ydW0vIyFmb3J1bS9vcGVubWVldGluZ3MtZGV2IiB0YXJnZXQ9Il9ibGFuayI+RGV2ZWxvcGVyLUZvcnVtczwvYT48L3NwYW4+PGJyLz4KKworCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9zcmMvaW52aXRhdGlvbi52bSBiL3NyYy9pbnZpdGF0aW9uLnZtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5ZTc3MjcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW52aXRhdGlvbi52bQpAQCAtMCwwICsxLDM0IEBACisjIyBPcGVuTWVldGluZ3MKKyMjIGF1dGhvciBzd2FnbmVyCisjIyAxNi4wNS4yMDA3Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgJy0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOJyAnaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCc+Cis8IS0tCitDb3B5cmlnaHQgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+Cis8aHRtbCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCc+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9J0NvbnRlbnQtVHlwZScgY29udGVudD0ndGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04JyAvPgorPC9oZWFkPgorPGJvZHk+Cis8Yj4kbGFiZWxpZDUwMDwvYj48YnIgLz4KKyRsYWJlbGlkNTAxICR1c2VyPGJyLz4KKyRsYWJlbGlkNTAyICRtZXNzYWdlPGJyLz4KKworPGI+JGxhYmVsaWQ1MDM8L2I+PGJyLz4KKzxBIEhSRUY9IiRpbnZpdGF0aW9uX2xpbmsiPiRsYWJlbGlkNTA0PC9BPjxCUi8+Cis8QlIvPjxCUi8+CiskbGFiZWxpZDUwNTxCUi8+CiskaW52aXRhdGlvbl9saW5rMgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL09wZW5tZWV0aW5nc1ZhcmlhYmxlcy5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL09wZW5tZWV0aW5nc1ZhcmlhYmxlcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5ZmJlNTMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvT3Blbm1lZXRpbmdzVmFyaWFibGVzLmphdmEKQEAgLTAsMCArMSwyNCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5nczsKKworcHVibGljIGNsYXNzIE9wZW5tZWV0aW5nc1ZhcmlhYmxlcyB7CisJcHVibGljIHN0YXRpYyBTdHJpbmcgd2ViQXBwUm9vdEtleSA9IG51bGw7CisJcHVibGljIHN0YXRpYyBTdHJpbmcgd2ViQXBwUm9vdFBhdGggPSBudWxsOworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL1ZlcnNpb24uamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9WZXJzaW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODZiY2U1YQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9WZXJzaW9uLmphdmEKQEAgLTAsMCArMSw5OCBAQAorLyoNCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICogdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5nczsNCisNCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsNCitpbXBvcnQgamF2YS5uZXQuTWFsZm9ybWVkVVJMRXhjZXB0aW9uOw0KK2ltcG9ydCBqYXZhLm5ldC5VUkw7DQoraW1wb3J0IGphdmEudXRpbC5qYXIuQXR0cmlidXRlczsNCitpbXBvcnQgamF2YS51dGlsLmphci5NYW5pZmVzdDsNCisNCitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsNCitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsNCisNCitwdWJsaWMgY2xhc3MgVmVyc2lvbiB7DQorCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoVmVyc2lvbi5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOw0KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgc3RhcnRlZFN0cmluZ0xlbmd0aCA9IDQ4Ow0KKwlwcml2YXRlIHN0YXRpYyBTdHJpbmcgdmVyc2lvbiA9IG51bGw7DQorCXByaXZhdGUgc3RhdGljIFN0cmluZyByZXZpc2lvbiA9IG51bGw7DQorCXByaXZhdGUgc3RhdGljIFN0cmluZyBidWlsZERhdGUgPSBudWxsOw0KKwkNCisJcHJpdmF0ZSBzdGF0aWMgQXR0cmlidXRlcyBnZXRBdHRyaWJ1dGVzKCkgdGhyb3dzIE1hbGZvcm1lZFVSTEV4Y2VwdGlvbiwgSU9FeGNlcHRpb24gew0KKwkJU3RyaW5nIGphclVybCA9IFZlcnNpb24uY2xhc3MuZ2V0UmVzb3VyY2UoVmVyc2lvbi5jbGFzcy5nZXRTaW1wbGVOYW1lKCkgKyAiLmNsYXNzIikudG9TdHJpbmcoKTsNCisJCXJldHVybiBuZXcgTWFuaWZlc3QobmV3IFVSTChqYXJVcmwuc3Vic3RyaW5nKDAsIGphclVybC5pbmRleE9mKCchJykpICsgIiEvTUVUQS1JTkYvTUFOSUZFU1QuTUYiKS5vcGVuU3RyZWFtKCkpLmdldE1haW5BdHRyaWJ1dGVzKCk7DQorCX0NCisJDQorCXB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldFZlcnNpb24oKSB7DQorCQlpZiAodmVyc2lvbiA9PSBudWxsKSB7DQorCQkJdHJ5IHsNCisJCQkJdmVyc2lvbiA9IGdldEF0dHJpYnV0ZXMoKS5nZXRWYWx1ZSgiUHJvZHVjdC1WZXJzaW9uIik7DQorCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsNCisJCQkJbG9nLmVycm9yKCJbZ2V0VmVyc2lvbl0iLCBlKTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gdmVyc2lvbjsNCisJfQ0KKwkNCisJcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0UmV2aXNpb24oKSB7DQorCQlpZiAocmV2aXNpb24gPT0gbnVsbCkgew0KKwkJCXRyeSB7DQorCQkJCXJldmlzaW9uID0gZ2V0QXR0cmlidXRlcygpLmdldFZhbHVlKCJTdm4tUmV2aXNpb24iKTsNCisJCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgew0KKwkJCQlsb2cuZXJyb3IoIltnZXRSZXZpc2lvbl0iLCBlKTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gcmV2aXNpb247DQorCX0NCisJDQorCXB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldEJ1aWxkRGF0ZSgpIHsNCisJCWlmIChidWlsZERhdGUgPT0gbnVsbCkgew0KKwkJCXRyeSB7DQorCQkJCWJ1aWxkRGF0ZSA9IGdldEF0dHJpYnV0ZXMoKS5nZXRWYWx1ZSgiQnVpbHQtT24iKTsNCisJCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgew0KKwkJCQlsb2cuZXJyb3IoIltnZXRCdWlsZERhdGVdIiwgZSk7DQorCQkJfQ0KKwkJfQ0KKwkJcmV0dXJuIGJ1aWxkRGF0ZTsNCisJfQ0KKw0KKwlwcml2YXRlIHN0YXRpYyB2b2lkIGdldExpbmUoU3RyaW5nQnVpbGRlciBzYiwgU3RyaW5nIHRleHQsIGNoYXIgZmlsbCkgew0KKwkJc2IuYXBwZW5kKCcjJyk7DQorCQlpbnQgbCA9IHRleHQubGVuZ3RoKCk7DQorCQlpbnQgaGVhZExlbmd0aCA9IChzdGFydGVkU3RyaW5nTGVuZ3RoIC0gbCkgLyAyOw0KKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBoZWFkTGVuZ3RoOyArK2kpIHsNCisJCQlzYi5hcHBlbmQoZmlsbCk7DQorCQl9DQorCQlzYi5hcHBlbmQodGV4dCk7DQorCQlmb3IgKGludCBpID0gMDsgaSA8IChzdGFydGVkU3RyaW5nTGVuZ3RoIC0gbCAtIGhlYWRMZW5ndGgpOyArK2kpIHsNCisJCQlzYi5hcHBlbmQoZmlsbCk7DQorCQl9DQorCQlzYi5hcHBlbmQoIiNcbiIpOw0KKwl9DQorCQ0KKwlwdWJsaWMgc3RhdGljIHZvaWQgbG9nT01TdGFydGVkKCkgew0KKwkJU3RyaW5nQnVpbGRlciBzYiA9IG5ldyBTdHJpbmdCdWlsZGVyKCJcbiIpOw0KKwkJZ2V0TGluZShzYiwgIiIsICcjJyk7DQorCQlnZXRMaW5lKHNiLCAiT3Blbm1lZXRpbmdzIGlzIHVwIiwgJyAnKTsNCisJCWdldExpbmUoc2IsIGdldFZlcnNpb24oKSArICIgIiArIGdldFJldmlzaW9uKCkgKyAiICIgKyBnZXRCdWlsZERhdGUoKSwgJyAnKTsNCisJCWdldExpbmUoc2IsICJhbmQgcmVhZHkgdG8gdXNlIiwgJyAnKTsNCisJCWdldExpbmUoc2IsICIiLCAnIycpOw0KKwkJbG9nLmRlYnVnKHNiLnRvU3RyaW5nKCkpOw0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9heGlzL3NlcnZpY2VzL0Jhc2VXZWJTZXJ2aWNlLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvYXhpcy9zZXJ2aWNlcy9CYXNlV2ViU2VydmljZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4NmVjNTkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvYXhpcy9zZXJ2aWNlcy9CYXNlV2ViU2VydmljZS5qYXZhCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuYXhpcy5zZXJ2aWNlczsKKworaW1wb3J0IGphdmF4LnNlcnZsZXQuU2VydmxldENvbnRleHQ7CisKK2ltcG9ydCBvcmcuYXBhY2hlLmF4aXMyLkF4aXNGYXVsdDsKK2ltcG9ydCBvcmcuYXBhY2hlLmF4aXMyLmNvbnRleHQuTWVzc2FnZUNvbnRleHQ7CitpbXBvcnQgb3JnLmFwYWNoZS5heGlzMi50cmFuc3BvcnQuaHR0cC5IVFRQQ29uc3RhbnRzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnNlcnZsZXQuQmVhblV0aWw7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2VydmxldC5TZXJ2ZXJOb3RJbml0aWFsaXplZEV4Y2VwdGlvbjsKKworcHVibGljIGFic3RyYWN0IGNsYXNzIEJhc2VXZWJTZXJ2aWNlIHsKKwlwcml2YXRlIEJlYW5VdGlsIGJlYW5VdGlsID0gbmV3IEJlYW5VdGlsKCk7CisJCisJcHJpdmF0ZSBTZXJ2bGV0Q29udGV4dCBnZXRTZXJ2bGV0Q29udGV4dCgpIHRocm93cyBBeGlzRmF1bHQgeworCQl0cnkgeworCQkJTWVzc2FnZUNvbnRleHQgbWMgPSBNZXNzYWdlQ29udGV4dC5nZXRDdXJyZW50TWVzc2FnZUNvbnRleHQoKTsKKwkJCXJldHVybiAoU2VydmxldENvbnRleHQpIG1jCisJCQkJCS5nZXRQcm9wZXJ0eShIVFRQQ29uc3RhbnRzLk1DX0hUVFBfU0VSVkxFVENPTlRFWFQpOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQl0aHJvdyBuZXcgQXhpc0ZhdWx0KCJTZXJ2bGV0IGNvbnRleHQgaXMgbm90IGF2YWlsYWJsZSB5ZXQsIHJldHJ5IGluIGNvdXBsZSBvZiBzZWNvbmRzIik7CisJCX0KKwl9CisJCisJLy8gcGFja2FnZSBhY2Nlc3MKKwk8VD4gVCBnZXRCZWFuKENsYXNzPD8gZXh0ZW5kcyBUPiBjbGF6eikgdGhyb3dzIEF4aXNGYXVsdCB7CisJCXRyeSB7CisJCQlyZXR1cm4gYmVhblV0aWwuZ2V0QmVhbihjbGF6eiwgZ2V0U2VydmxldENvbnRleHQoKSk7CisJCX0gY2F0Y2ggKFNlcnZlck5vdEluaXRpYWxpemVkRXhjZXB0aW9uIGUpIHsKKwkJCXRocm93IG5ldyBBeGlzRmF1bHQoZS5nZXRNZXNzYWdlKCkpOworCQl9CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2F4aXMvc2VydmljZXMvQ2FsZW5kYXJXZWJTZXJ2aWNlLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvYXhpcy9zZXJ2aWNlcy9DYWxlbmRhcldlYlNlcnZpY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmIzYmVmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2F4aXMvc2VydmljZXMvQ2FsZW5kYXJXZWJTZXJ2aWNlLmphdmEKQEAgLTAsMCArMSw4MzIgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuYXhpcy5zZXJ2aWNlczsKKworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkNhbGVuZGFyOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5NYXA7CitpbXBvcnQgamF2YS51dGlsLlRpbWVab25lOworCitpbXBvcnQgb3JnLmFwYWNoZS5heGlzMi5BeGlzRmF1bHQ7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuQXV0aExldmVsVXRpbDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLlNlc3Npb25kYXRhRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY2FsZW5kYXIuYmVhbnMuQXBwb2ludG1lbnREVE87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jYWxlbmRhci5iZWFucy5EYXk7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jYWxlbmRhci5iZWFucy5XZWVrOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY2FsZW5kYXIuZGFvcy5BcHBvaW50bWVudENhdGVnb3J5RGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY2FsZW5kYXIuZGFvcy5BcHBvaW50bWVudERhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNhbGVuZGFyLmRhb3MuQXBwb2ludG1lbnRSZW1pbmRlclR5cERhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNhbGVuZGFyLm1hbmFnZW1lbnQuQXBwb2ludG1lbnRMb2dpYzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNvbmZlcmVuY2UuUm9vbU1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jb25mZXJlbmNlLmRhby5Sb29tRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEudXNlci5Vc2VyTWFuYWdlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuZGFvLlVzZXJDb250YWN0c0RhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5jYWxlbmRhci5BcHBvaW50bWVudDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5jYWxlbmRhci5BcHBvaW50bWVudENhdGVnb3J5OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmNhbGVuZGFyLkFwcG9pbnRtZW50UmVtaW5kZXJUeXBzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnJvb20uUm9vbVR5cGU7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbS5Sb29tOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuVXNlckNvbnRhY3Q7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlci5Vc2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLm1hdGguVGltZXpvbmVVdGlsOworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5BdXRvd2lyZWQ7CisKKy8qKgorICogQ2FsZW5kYXJTZXJ2aWNlIGNvbnRhaW5zIG1ldGhvZHMgdG8gY3JlYXRlLCBlZGl0IGRlbGV0ZSBjYWxlbmRhciBtZWV0aW5ncworICogCisgKiBAYXV0aG9yIHNlYmF3YWduZXIKKyAqIEB3ZWJzZXJ2aWNlIENhbGVuZGFyU2VydmljZQorICogCisgKi8KK3B1YmxpYyBjbGFzcyBDYWxlbmRhcldlYlNlcnZpY2UgeworCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcigKKwkJCUNhbGVuZGFyV2ViU2VydmljZS5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCisJQEF1dG93aXJlZAorCXByaXZhdGUgQXBwb2ludG1lbnREYW8gYXBwb2ludG1lbnREYW87CisJQEF1dG93aXJlZAorCXByaXZhdGUgQXBwb2ludG1lbnRMb2dpYyBhcHBvaW50bWVudExvZ2ljOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFNlc3Npb25kYXRhRGFvIHNlc3Npb25kYXRhRGFvOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFVzZXJNYW5hZ2VyIHVzZXJNYW5hZ2VyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFJvb21NYW5hZ2VyIHJvb21NYW5hZ2VyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFJvb21EYW8gcm9vbURhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBBdXRoTGV2ZWxVdGlsIGF1dGhMZXZlbFV0aWw7CisJQEF1dG93aXJlZAorCXByaXZhdGUgQXBwb2ludG1lbnRDYXRlZ29yeURhbyBhcHBvaW50bWVudENhdGVnb3J5RGFvSW1wbDsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBBcHBvaW50bWVudFJlbWluZGVyVHlwRGFvIGFwcG9pbnRtZW50UmVtaW5kZXJUeXBEYW9JbXBsOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFRpbWV6b25lVXRpbCB0aW1lem9uZVV0aWw7CisJQEF1dG93aXJlZAorCXByaXZhdGUgVXNlckNvbnRhY3RzRGFvIHVzZXJDb250YWN0c0Rhb0ltcGw7CisKKwkvKioKKwkgKiBMb2FkIGFwcG9pbnRtZW50cyBieSBhIHN0YXJ0IC8gZW5kIHJhbmdlIGZvciB0aGUgY3VycmVudCBTSUQKKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogICAgICAgICAgICBUaGUgU0lEIG9mIHRoZSBVc2VyLiBUaGlzIFNJRCBtdXN0IGJlIG1hcmtlZCBhcyBMb2dnZWRpbgorCSAqIEBwYXJhbSBzdGFydHRpbWUKKwkgKiAgICAgICAgICAgIHN0YXJ0IHRpbWUsIHl5eXktbW0tZGQKKwkgKiBAcGFyYW0gZW5kdGltZQorCSAqICAgICAgICAgICAgZW5kIHRpbWUsIHl5eXktbW0tZGQKKwkgKiAgICAgICAgICAgIAorCSAqIEByZXR1cm4gLSBsaXN0IG9mIGFwcG9pbnRtZW50cyBpbiByYW5nZQorCSAqLworCXB1YmxpYyBMaXN0PEFwcG9pbnRtZW50PiBnZXRBcHBvaW50bWVudEJ5UmFuZ2UoU3RyaW5nIFNJRCwgRGF0ZSBzdGFydHRpbWUsCisJCQlEYXRlIGVuZHRpbWUpIHsKKwkJbG9nLmRlYnVnKCJnZXRBcHBvaW50bWVudEJ5UmFuZ2UgOiBzdGFydGRhdGUgLSAiICsgc3RhcnR0aW1lCisJCQkJKyAiLCBlbmRkYXRlIC0gIiArIGVuZHRpbWUpOworCQl0cnkgeworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1VzZXJMZXZlbCh1c2VyX2xldmVsKSkgeworCisJCQkJcmV0dXJuIGFwcG9pbnRtZW50TG9naWMuZ2V0QXBwb2ludG1lbnRCeVJhbmdlKHVzZXJzX2lkLAorCQkJCQkJc3RhcnR0aW1lLCBlbmR0aW1lKTsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbZ2V0QXBwb2ludG1lbnRCeVJhbmdlXSIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLyoqCisJICogTG9hZCBhcHBvaW50bWVudHMgYnkgYSBzdGFydCAvIGVuZCByYW5nZSBmb3IgdGhlIHVzZXJJZAorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiAgICAgICAgICAgIFRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIExvZ2dlZGluCisJICogQHBhcmFtIHVzZXJJZAorCSAqICAgICAgICAgICAgdGhlIHVzZXJJZCB0aGUgY2FsZW5kYXIgZXZlbnRzIHNob3VsZCBiZSBsb2FkZWQKKwkgKiBAcGFyYW0gc3RhcnR0aW1lCisJICogICAgICAgICAgICBzdGFydCB0aW1lLCB5eXl5LW1tLWRkCisJICogQHBhcmFtIGVuZHRpbWUKKwkgKiAgICAgICAgICAgIGVuZCB0aW1lLCB5eXl5LW1tLWRkCisJICogICAgICAgICAgICAKKwkgKiBAcmV0dXJuIC0gbGlzdCBvZiBhcHBvaW50bWVudHMgaW4gcmFuZ2UKKwkgKi8KKwlwdWJsaWMgTGlzdDxBcHBvaW50bWVudD4gZ2V0QXBwb2ludG1lbnRCeVJhbmdlRm9yVXNlcklkKFN0cmluZyBTSUQsCisJCQlsb25nIHVzZXJJZCwgRGF0ZSBzdGFydHRpbWUsIERhdGUgZW5kdGltZSkgeworCQlsb2cuZGVidWcoImdldEFwcG9pbnRtZW50QnlSYW5nZSA6IHN0YXJ0ZGF0ZSAtICIgKyBzdGFydHRpbWUKKwkJCQkrICIsIGVuZGRhdGUgLSAiICsgZW5kdGltZSk7CisJCXRyeSB7CisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrV2ViU2VydmljZUxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlyZXR1cm4gYXBwb2ludG1lbnRMb2dpYy5nZXRBcHBvaW50bWVudEJ5UmFuZ2UodXNlcklkLAorCQkJCQkJc3RhcnR0aW1lLCBlbmR0aW1lKTsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbZ2V0QXBwb2ludG1lbnRCeVJhbmdlRm9yVXNlcklkXSIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLyoqCisJICogR2V0IHRoZSBuZXh0IENhbGVuZGFyIGV2ZW50IGZvciB0aGUgY3VycmVudCB1c2VyIG9mIHRoZSBTSUQKKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogICAgICAgICAgICBUaGUgU0lEIG9mIHRoZSBVc2VyLiBUaGlzIFNJRCBtdXN0IGJlIG1hcmtlZCBhcyBMb2dnZWRpbgorCSAqIEByZXR1cm4gLSBuZXh0IENhbGVuZGFyIGV2ZW50CisJICovCisJcHVibGljIEFwcG9pbnRtZW50IGdldE5leHRBcHBvaW50bWVudChTdHJpbmcgU0lEKSB7CisKKwkJdHJ5IHsKKworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1VzZXJMZXZlbCh1c2VyX2xldmVsKSkgeworCisJCQkJcmV0dXJuIGFwcG9pbnRtZW50TG9naWMuZ2V0TmV4dEFwcG9pbnRtZW50KCk7CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2dldE5leHRBcHBvaW50bWVudEJ5SWRdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKworCX0KKworCS8qKgorCSAqIEdldCB0aGUgbmV4dCBDYWxlbmRhciBldmVudCBmb3IgdXNlcklkCisJICogCisJICogQHBhcmFtIFNJRAorCSAqICAgICAgICAgICAgVGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgTG9nZ2VkaW4KKwkgKiAgICAgICAgICAgIAorCSAqIEByZXR1cm4gLSBuZXh0IENhbGVuZGFyIGV2ZW50CisJICovCisJcHVibGljIEFwcG9pbnRtZW50IGdldE5leHRBcHBvaW50bWVudEZvclVzZXJJZChTdHJpbmcgU0lELCBsb25nIHVzZXJJZCkgeworCisJCXRyeSB7CisKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tVc2VyTGV2ZWwodXNlcl9sZXZlbCkpIHsKKworCQkJCXJldHVybiBhcHBvaW50bWVudExvZ2ljLmdldE5leHRBcHBvaW50bWVudCgpOworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltnZXROZXh0QXBwb2ludG1lbnRCeUlkXSIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisKKwl9CisKKwkvKioKKwkgKiBTZWFyY2ggYSBjYWxlbmRhciBldmVudCBmb3IgdGhlIGN1cnJlbnQgU0lECisJICogCisJICogQHBhcmFtIFNJRAorCSAqICAgICAgICAgICAgVGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgTG9nZ2VkaW4KKwkgKiBAcGFyYW0gYXBwb2ludG1lbnROYW1lCisJICogICAgICAgICAgICB0aGUgc2VhcmNoIHN0cmluZworCSAqICAgICAgICAgICAgCisJICogQHJldHVybiAtIGNhbGVuZGFyIGV2ZW50IGxpc3QKKwkgKi8KKwlwdWJsaWMgTGlzdDxBcHBvaW50bWVudD4gc2VhcmNoQXBwb2ludG1lbnRCeU5hbWUoU3RyaW5nIFNJRCwKKwkJCVN0cmluZyBhcHBvaW50bWVudE5hbWUpIHsKKworCQl0cnkgeworCisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrVXNlckxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlyZXR1cm4gYXBwb2ludG1lbnRMb2dpYworCQkJCQkJLnNlYXJjaEFwcG9pbnRtZW50QnlOYW1lKGFwcG9pbnRtZW50TmFtZSk7CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW3NlYXJjaEFwcG9pbnRtZW50QnlOYW1lXSIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisKKwl9CisKKwkvKioKKwkgKiBTYXZlIGFuIGFwcG9pbnRtZW50CisJICogCisJICogQHBhcmFtIFNJRAorCSAqICAgICAgICAgICAgVGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgTG9nZ2VkaW4KKwkgKiBAcGFyYW0gYXBwb2ludG1lbnROYW1lCisJICogICAgICAgICAgICBuYW1lIG9mIHRoZSBjYWxlbmRhciBldmVudAorCSAqIEBwYXJhbSBhcHBvaW50bWVudExvY2F0aW9uCisJICogICAgICAgICAgICBsb2NhdGlvbiBpbmZvIHRleHQgb2YgdGhlIGNhbGVuZGFyIGV2ZW50CisJICogQHBhcmFtIGFwcG9pbnRtZW50RGVzY3JpcHRpb24KKwkgKiAgICAgICAgICAgIGRlc2NyaXB0aW9uIHRlc3Qgb2YgdGhlIGNhbGVuZGFyIGV2ZW50CisJICogQHBhcmFtIGFwcG9pbnRtZW50c3RhcnQKKwkgKiAgICAgICAgICAgIHN0YXJ0IGFzIERhdGUgeXl5eS1tbS1kZFRoaDptbTpzcworCSAqIEBwYXJhbSBhcHBvaW50bWVudGVuZAorCSAqICAgICAgICAgICAgZW5kIGFzIERhdGUgeXl5eS1tbS1kZFRoaDptbTpzcworCSAqIEBwYXJhbSBpc0RhaWx5CisJICogICAgICAgICAgICBpZiB0aGUgY2FsZW5kYXIgZXZlbnQgc2hvdWxkIGJlIHJlcGVhdGVkIGRhaWx5IChub3QKKwkgKiAgICAgICAgICAgIGltcGxlbWVudGVkKQorCSAqIEBwYXJhbSBpc1dlZWtseQorCSAqICAgICAgICAgICAgaWYgdGhlIGNhbGVuZGFyIGV2ZW50IHNob3VsZCBiZSByZXBlYXRlZCB3ZWVrbHkgKG5vdAorCSAqICAgICAgICAgICAgaW1wbGVtZW50ZWQpCisJICogQHBhcmFtIGlzTW9udGhseQorCSAqICAgICAgICAgICAgaWYgdGhlIGNhbGVuZGFyIGV2ZW50IHNob3VsZCBiZSByZXBlYXRlZCBtb250aGx5IChub3QKKwkgKiAgICAgICAgICAgIGltcGxlbWVudGVkKQorCSAqIEBwYXJhbSBpc1llYXJseQorCSAqICAgICAgICAgICAgaWYgdGhlIGNhbGVuZGFyIGV2ZW50IHNob3VsZCBiZSByZXBlYXRlZCB5ZWFybHkgKG5vdAorCSAqICAgICAgICAgICAgaW1wbGVtZW50ZWQpCisJICogQHBhcmFtIGNhdGVnb3J5SWQKKwkgKiAgICAgICAgICAgIHRoZSBjYXRlZ29yeSBpZCBvZiB0aGUgY2FsZW5kYXIgZXZlbnQKKwkgKiBAcGFyYW0gcmVtaW5kCisJICogICAgICAgICAgICB0aGUgcmVtaW5kZXIgdHlwZSBvZiB0aGUgY2FsZW5kYXIgZXZlbnQKKwkgKiBAcGFyYW0gbW1DbGllbnQKKwkgKiAgICAgICAgICAgIExpc3Qgb2YgY2xpZW50cywgY29tbWEgc2VwYXJhdGVkIHN0cmluZywgPGJyLz4KKwkgKiAgICAgICAgICAgIHNhbXBsZTogMSxmaXJzdG5hbWUsbGFzdG5hbWUsaGFucy50aWVyQGdtYWlsLmNvbSwxLEV0Yy9HTVQrMQorCSAqICAgICAgICAgICAgdG8gYWRkIG11bHRpcGxlIGNsaWVudHMgeW91IGNhbiB1c2UgdGhlIHNhbWUgR0VUIHBhcmFtZXRlciBpbgorCSAqICAgICAgICAgICAgdGhlIFVSTCBtdWx0aXBsZSB0aW1lcywgZm9yIGV4YW1wbGU6CisJICogICAgICAgICAgICAmYW1wO21tQ2xpZW50PTEsZmlyc3RuYW1lLGxhc3RuYW1lLGhhbnMKKwkgKiAgICAgICAgICAgIC50aWVyQGdtYWlsLmNvbSwxLEV0Yy9HTVQrMSZhbXA7bW1DbGllbnQKKwkgKiAgICAgICAgICAgID0yLGZpcnN0bmFtZSxsYXN0bmFtZSxoYW5zLnRpZXJAZ21haWwuY29tLDEsRXRjL0dNVCsxCisJICogQHBhcmFtIHJvb21UeXBlCisJICogICAgICAgICAgICB0aGUgcm9vbSB0eXBlIGZvciB0aGUgY2FsZW5kYXIgZXZlbnQKKwkgKiBAcGFyYW0gYmFzZVVybAorCSAqICAgICAgICAgICAgdGhlIGJhc2UgVVJMIGZvciB0aGUgaW52aXRhdGlvbnMKKwkgKiBAcGFyYW0gbGFuZ3VhZ2VJZAorCSAqICAgICAgICAgICAgdGhlIGxhbmd1YWdlIGlkIG9mIHRoZSBjYWxlbmRhciBldmVudCwgbm90aWZpY2F0aW9uIGVtYWlscworCSAqICAgICAgICAgICAgd2lsbCBiZSBzZW5kIGluIHRoaXMgbGFuZ3VhZ2UKKwkgKiBAcGFyYW0gaXNQYXNzd29yZFByb3RlY3RlZAorCSAqICAgICAgICAgICAgaWYgdGhlIHJvb20gaXMgcGFzc3dvcmQgcHJvdGVjdGVkCisJICogQHBhcmFtIHBhc3N3b3JkCisJICogICAgICAgICAgICB0aGUgcGFzc3dvcmQgZm9yIHRoZSByb29tCisJICogICAgICAgICAgICAKKwkgKiBAcmV0dXJuIC0gaWQgb2YgYXBwb2ludG1lbnQgc2F2ZWQKKwkgKi8KKwlwdWJsaWMgTG9uZyBzYXZlQXBwb2ludG1lbnQoU3RyaW5nIFNJRCwgU3RyaW5nIGFwcG9pbnRtZW50TmFtZSwKKwkJCVN0cmluZyBhcHBvaW50bWVudExvY2F0aW9uLCBTdHJpbmcgYXBwb2ludG1lbnREZXNjcmlwdGlvbiwKKwkJCUNhbGVuZGFyIGFwcG9pbnRtZW50c3RhcnQsIENhbGVuZGFyIGFwcG9pbnRtZW50ZW5kLAorCQkJQm9vbGVhbiBpc0RhaWx5LCBCb29sZWFuIGlzV2Vla2x5LCBCb29sZWFuIGlzTW9udGhseSwKKwkJCUJvb2xlYW4gaXNZZWFybHksIExvbmcgY2F0ZWdvcnlJZCwgTG9uZyByZW1pbmQsIFN0cmluZ1tdIG1tQ2xpZW50LAorCQkJTG9uZyByb29tVHlwZSwgU3RyaW5nIGJhc2VVcmwsIExvbmcgbGFuZ3VhZ2VJZCwKKwkJCUJvb2xlYW4gaXNQYXNzd29yZFByb3RlY3RlZCwgU3RyaW5nIHBhc3N3b3JkLCBsb25nIHJvb21JZCkgeworCisJCWxvZy5kZWJ1Zygic2F2ZUFwcG9pbnRNZW50IFNJRDoiICsgU0lEICsgIiwgYmFzZVVybCA6ICIgKyBiYXNlVXJsKTsKKworCQl0cnkgeworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJbG9nLmRlYnVnKCJzYXZlQXBwb2ludE1lbnQgdXNlcnNfaWQ6IiArIHVzZXJzX2lkKTsKKworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrVXNlckxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlMaXN0PE1hcDxTdHJpbmcsIFN0cmluZz4+IG5ld0xpc3QgPSBuZXcgQXJyYXlMaXN0PE1hcDxTdHJpbmcsIFN0cmluZz4+KCk7CisKKwkJCQlmb3IgKFN0cmluZyBzaW5nbGVDbGllbnQgOiBtbUNsaWVudCkgeworCQkJCQlTdHJpbmdbXSBwYXJhbXMgPSBzaW5nbGVDbGllbnQuc3BsaXQoIiwiKTsKKwkJCQkJTWFwPFN0cmluZywgU3RyaW5nPiBtYXAgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4oKTsKKwkJCQkJbWFwLnB1dCgibWVldGluZ01lbWJlcklkIiwgcGFyYW1zWzBdKTsKKwkJCQkJbWFwLnB1dCgiZmlyc3RuYW1lIiwgcGFyYW1zWzFdKTsKKwkJCQkJbWFwLnB1dCgibGFzdG5hbWUiLCBwYXJhbXNbMl0pOworCQkJCQltYXAucHV0KCJlbWFpbCIsIHBhcmFtc1szXSk7CisJCQkJCW1hcC5wdXQoInVzZXJJZCIsIHBhcmFtc1s0XSk7CisJCQkJCW1hcC5wdXQoImpOYW1lVGltZVpvbmUiLCBwYXJhbXNbNV0pOworCQkJCQluZXdMaXN0LmFkZChtYXApOworCQkJCX0KKworCQkJCUxvbmcgaWQgPSBhcHBvaW50bWVudExvZ2ljLnNhdmVBcHBvaW50bWVudChhcHBvaW50bWVudE5hbWUsCisJCQkJCQl1c2Vyc19pZCwgYXBwb2ludG1lbnRMb2NhdGlvbiwgYXBwb2ludG1lbnREZXNjcmlwdGlvbiwKKwkJCQkJCWFwcG9pbnRtZW50c3RhcnQuZ2V0VGltZSgpLCBhcHBvaW50bWVudGVuZC5nZXRUaW1lKCksCisJCQkJCQlpc0RhaWx5LCBpc1dlZWtseSwgaXNNb250aGx5LCBpc1llYXJseSwgY2F0ZWdvcnlJZCwKKwkJCQkJCXJlbWluZCwgbmV3TGlzdCwgcm9vbVR5cGUsIGJhc2VVcmwsIGxhbmd1YWdlSWQsCisJCQkJCQlpc1Bhc3N3b3JkUHJvdGVjdGVkLCBwYXNzd29yZCwgcm9vbUlkKTsKKworCQkJCXJldHVybiBpZDsKKwkJCX0gZWxzZSB7CisJCQkJbG9nLmVycm9yKCJzYXZlQXBwb2ludG1lbnQgOiB3cm9uZyB1c2VyIGxldmVsIik7CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW3NhdmVBcHBvaW50bWVudF0iLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCisJfQorCisJLyoqCisJICogVXBkYXRlIGFuIGNhbGVuZGFyIGV2ZW50IHRpbWUgb25seQorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiAgICAgICAgICAgIFRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIExvZ2dlZGluCisJICogQHBhcmFtIGFwcG9pbnRtZW50SWQKKwkgKiAgICAgICAgICAgIHRoZSBjYWxlbmRhciBldmVudCB0aGF0IHNob3VsZCBiZSB1cGRhdGVkCisJICogQHBhcmFtIGFwcG9pbnRtZW50c3RhcnQKKwkgKiAgICAgICAgICAgIHN0YXJ0IHl5eXktbW0tZGQKKwkgKiBAcGFyYW0gYXBwb2ludG1lbnRlbmQKKwkgKiAgICAgICAgICAgIGVuZCB5eXl5LW1tLWRkCisJICogQHBhcmFtIGJhc2V1cmwKKwkgKiAgICAgICAgICAgIHRoZSBiYXNlIFVSTCBmb3IgdGhlIGludml0YXRpb25zIHRoYXQgd2lsbCBiZSBzZW5kIGJ5IGVtYWlsCisJICogQHBhcmFtIGxhbmd1YWdlSWQKKwkgKiAgICAgICAgICAgIHRoZSBsYW5ndWFnZSBpZAorCSAqICAgICAgICAgICAgCisJICogQHJldHVybiAtIGlkIG9mIGFwcG9pbnRtZW50IHVwZGF0ZWQKKwkgKi8KKwlwdWJsaWMgTG9uZyB1cGRhdGVBcHBvaW50bWVudFRpbWVPbmx5KFN0cmluZyBTSUQsIExvbmcgYXBwb2ludG1lbnRJZCwKKwkJCURhdGUgYXBwb2ludG1lbnRzdGFydCwgRGF0ZSBhcHBvaW50bWVudGVuZCwgU3RyaW5nIGJhc2V1cmwsCisJCQlMb25nIGxhbmd1YWdlSWQpIHsKKwkJdHJ5IHsKKworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1VzZXJMZXZlbCh1c2VyX2xldmVsKSkgeworCisJCQkJbG9nLmRlYnVnKCJhcHBvaW50bWVudElkICIgKyBhcHBvaW50bWVudElkKTsKKworCQkJCWFwcG9pbnRtZW50TG9naWMuZ2V0QXBwb2ludE1lbnRCeUlkKGFwcG9pbnRtZW50SWQpOworCisJCQkJVXNlciB1c2VyID0gdXNlck1hbmFnZXIuZ2V0VXNlckJ5SWQodXNlcnNfaWQpOworCisJCQkJcmV0dXJuIGFwcG9pbnRtZW50RGFvLnVwZGF0ZUFwcG9pbnRtZW50QnlUaW1lKGFwcG9pbnRtZW50SWQsCisJCQkJCQlhcHBvaW50bWVudHN0YXJ0LCBhcHBvaW50bWVudGVuZCwgdXNlcnNfaWQsIGJhc2V1cmwsCisJCQkJCQlsYW5ndWFnZUlkLCB1c2VyLmdldE9tVGltZVpvbmUoKS5nZXRJY2FsKCkpOworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIlt1cGRhdGVBcHBvaW50bWVudF0iLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCisJfQorCisJLyoqCisJICogU2F2ZSBhbiBhcHBvaW50bWVudAorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiAgICAgICAgICAgIFRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIExvZ2dlZGluCisJICogQHBhcmFtIGFwcG9pbnRtZW50SWQKKwkgKiAgICAgICAgICAgIHRoZSBpZCB0byB1cGRhdGUKKwkgKiBAcGFyYW0gYXBwb2ludG1lbnROYW1lCisJICogICAgICAgICAgICBuYW1lIG9mIHRoZSBjYWxlbmRhciBldmVudAorCSAqIEBwYXJhbSBhcHBvaW50bWVudExvY2F0aW9uCisJICogICAgICAgICAgICBsb2NhdGlvbiBpbmZvIHRleHQgb2YgdGhlIGNhbGVuZGFyIGV2ZW50CisJICogQHBhcmFtIGFwcG9pbnRtZW50RGVzY3JpcHRpb24KKwkgKiAgICAgICAgICAgIGRlc2NyaXB0aW9uIHRlc3Qgb2YgdGhlIGNhbGVuZGFyIGV2ZW50CisJICogQHBhcmFtIGFwcG9pbnRtZW50c3RhcnQKKwkgKiAgICAgICAgICAgIHN0YXJ0IGFzIERhdGUgeXl5eS1tbS1kZFRoaDptbTpzcworCSAqIEBwYXJhbSBhcHBvaW50bWVudGVuZAorCSAqICAgICAgICAgICAgZW5kIGFzIERhdGUgeXl5eS1tbS1kZFRoaDptbTpzcworCSAqIEBwYXJhbSBpc0RhaWx5CisJICogICAgICAgICAgICBpZiB0aGUgY2FsZW5kYXIgZXZlbnQgc2hvdWxkIGJlIHJlcGVhdGVkIGRhaWx5IChub3QKKwkgKiAgICAgICAgICAgIGltcGxlbWVudGVkKQorCSAqIEBwYXJhbSBpc1dlZWtseQorCSAqICAgICAgICAgICAgaWYgdGhlIGNhbGVuZGFyIGV2ZW50IHNob3VsZCBiZSByZXBlYXRlZCB3ZWVrbHkgKG5vdAorCSAqICAgICAgICAgICAgaW1wbGVtZW50ZWQpCisJICogQHBhcmFtIGlzTW9udGhseQorCSAqICAgICAgICAgICAgaWYgdGhlIGNhbGVuZGFyIGV2ZW50IHNob3VsZCBiZSByZXBlYXRlZCBtb250aGx5IChub3QKKwkgKiAgICAgICAgICAgIGltcGxlbWVudGVkKQorCSAqIEBwYXJhbSBpc1llYXJseQorCSAqICAgICAgICAgICAgaWYgdGhlIGNhbGVuZGFyIGV2ZW50IHNob3VsZCBiZSByZXBlYXRlZCB5ZWFybHkgKG5vdAorCSAqICAgICAgICAgICAgaW1wbGVtZW50ZWQpCisJICogQHBhcmFtIGNhdGVnb3J5SWQKKwkgKiAgICAgICAgICAgIHRoZSBjYXRlZ29yeSBpZCBvZiB0aGUgY2FsZW5kYXIgZXZlbnQKKwkgKiBAcGFyYW0gcmVtaW5kCisJICogICAgICAgICAgICB0aGUgcmVtaW5kZXIgdHlwZSBvZiB0aGUgY2FsZW5kYXIgZXZlbnQKKwkgKiBAcGFyYW0gbW1DbGllbnQKKwkgKiAgICAgICAgICAgIExpc3Qgb2YgY2xpZW50cywgY29tbWEgc2VwYXJhdGVkIHN0cmluZywgPGJyLz4KKwkgKiAgICAgICAgICAgIHNhbXBsZTogMSxmaXJzdG5hbWUsbGFzdG5hbWUsaGFucy50aWVyQGdtYWlsLmNvbSwxLEV0Yy9HTVQrMQorCSAqICAgICAgICAgICAgdG8gYWRkIG11bHRpcGxlIGNsaWVudHMgeW91IGNhbiB1c2UgdGhlIHNhbWUgR0VUIHBhcmFtZXRlciBpbgorCSAqICAgICAgICAgICAgdGhlIFVSTCBtdWx0aXBsZSB0aW1lcywgZm9yIGV4YW1wbGU6CisJICogICAgICAgICAgICAmYW1wO21tQ2xpZW50PTEsZmlyc3RuYW1lLGxhc3RuYW1lLGhhbnMKKwkgKiAgICAgICAgICAgIC50aWVyQGdtYWlsLmNvbSwxLEV0Yy9HTVQrMSZhbXA7bW1DbGllbnQKKwkgKiAgICAgICAgICAgID0yLGZpcnN0bmFtZSxsYXN0bmFtZSxoYW5zLnRpZXJAZ21haWwuY29tLDEsRXRjL0dNVCsxCisJICogQHBhcmFtIHJvb21UeXBlCisJICogICAgICAgICAgICB0aGUgcm9vbSB0eXBlIGZvciB0aGUgY2FsZW5kYXIgZXZlbnQKKwkgKiBAcGFyYW0gYmFzZVVybAorCSAqICAgICAgICAgICAgdGhlIGJhc2UgVVJMIGZvciB0aGUgaW52aXRhdGlvbnMKKwkgKiBAcGFyYW0gbGFuZ3VhZ2VJZAorCSAqICAgICAgICAgICAgdGhlIGxhbmd1YWdlIGlkIG9mIHRoZSBjYWxlbmRhciBldmVudCwgbm90aWZpY2F0aW9uIGVtYWlscworCSAqICAgICAgICAgICAgd2lsbCBiZSBzZW5kIGluIHRoaXMgbGFuZ3VhZ2UKKwkgKiBAcGFyYW0gaXNQYXNzd29yZFByb3RlY3RlZAorCSAqICAgICAgICAgICAgaWYgdGhlIHJvb20gaXMgcGFzc3dvcmQgcHJvdGVjdGVkCisJICogQHBhcmFtIHBhc3N3b3JkCisJICogICAgICAgICAgICB0aGUgcGFzc3dvcmQgZm9yIHRoZSByb29tCisJICogICAgICAgICAgICAKKwkgKiBAcmV0dXJuIC0gaWQgb2YgYXBwb2ludG1lbnQgdXBkYXRlZAorCSAqLworCXB1YmxpYyBMb25nIHVwZGF0ZUFwcG9pbnRtZW50KFN0cmluZyBTSUQsIExvbmcgYXBwb2ludG1lbnRJZCwKKwkJCVN0cmluZyBhcHBvaW50bWVudE5hbWUsIFN0cmluZyBhcHBvaW50bWVudExvY2F0aW9uLAorCQkJU3RyaW5nIGFwcG9pbnRtZW50RGVzY3JpcHRpb24sIENhbGVuZGFyIGFwcG9pbnRtZW50c3RhcnQsCisJCQlDYWxlbmRhciBhcHBvaW50bWVudGVuZCwgQm9vbGVhbiBpc0RhaWx5LCBCb29sZWFuIGlzV2Vla2x5LAorCQkJQm9vbGVhbiBpc01vbnRobHksIEJvb2xlYW4gaXNZZWFybHksIExvbmcgY2F0ZWdvcnlJZCwgTG9uZyByZW1pbmQsCisJCQlTdHJpbmdbXSBtbUNsaWVudCwgTG9uZyByb29tVHlwZSwgU3RyaW5nIGJhc2V1cmwsIExvbmcgbGFuZ3VhZ2VJZCwKKwkJCUJvb2xlYW4gaXNQYXNzd29yZFByb3RlY3RlZCwgU3RyaW5nIHBhc3N3b3JkKSB0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJdHJ5IHsKKworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrVXNlckxldmVsKHVzZXJfbGV2ZWwpKSB7CisJCQkJLy8gY2hlY2sgaWYgdGhlIGFwcG9pbnRtZW50IGJlbG9uZ3MgdG8gdGhlIGN1cnJlbnQgdXNlcgorCQkJCUFwcG9pbnRtZW50IGFwcG9pbnRtZW50ID0gYXBwb2ludG1lbnRMb2dpYworCQkJCQkJLmdldEFwcG9pbnRNZW50QnlJZChhcHBvaW50bWVudElkKTsKKwkJCQlpZiAoIWFwcG9pbnRtZW50LmdldFVzZXJJZCgpLmdldFVzZXJfaWQoKS5lcXVhbHModXNlcnNfaWQpKSB7CisJCQkJCXRocm93IG5ldyBBeGlzRmF1bHQoCisJCQkJCQkJIlRoZSBBcHBvaW50bWVudCBjYW5ub3QgYmUgdXBkYXRlZCBieSB0aGUgZ2l2ZW4gdXNlciIpOworCQkJCX0KKwkJCX0gZWxzZSBpZiAoYXV0aExldmVsVXRpbC5jaGVja1VzZXJMZXZlbCh1c2VyX2xldmVsKSkgeworCQkJCS8vIGZpbmUKKwkJCX0gZWxzZSB7CisJCQkJdGhyb3cgbmV3IEF4aXNGYXVsdCgKKwkJCQkJCSJOb3QgYWxsb3dlZCB0byBwcmVmb3JtIHRoYXQgYWN0aW9uLCBBdXRoZW50aWNhdGUgdGhlIFNJRCBmaXJzdCIpOworCQkJfQorCisJCQlMaXN0PE1hcDxTdHJpbmcsIFN0cmluZz4+IG5ld0xpc3QgPSBuZXcgQXJyYXlMaXN0PE1hcDxTdHJpbmcsIFN0cmluZz4+KCk7CisKKwkJCWZvciAoU3RyaW5nIHNpbmdsZUNsaWVudCA6IG1tQ2xpZW50KSB7CisJCQkJU3RyaW5nW10gcGFyYW1zID0gc2luZ2xlQ2xpZW50LnNwbGl0KCIsIik7CisJCQkJTWFwPFN0cmluZywgU3RyaW5nPiBtYXAgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4oKTsKKwkJCQltYXAucHV0KCJtZWV0aW5nTWVtYmVySWQiLCBwYXJhbXNbMF0pOworCQkJCW1hcC5wdXQoImZpcnN0bmFtZSIsIHBhcmFtc1sxXSk7CisJCQkJbWFwLnB1dCgibGFzdG5hbWUiLCBwYXJhbXNbMl0pOworCQkJCW1hcC5wdXQoImVtYWlsIiwgcGFyYW1zWzNdKTsKKwkJCQltYXAucHV0KCJ1c2VySWQiLCBwYXJhbXNbNF0pOworCQkJCW1hcC5wdXQoImpOYW1lVGltZVpvbmUiLCBwYXJhbXNbNV0pOworCQkJCW5ld0xpc3QuYWRkKG1hcCk7CisJCQl9CisKKwkJCWxvZy5kZWJ1ZygidXBkYXRlQXBwb2ludG1lbnQiKTsKKworCQkJUm9vbVR5cGUgcnQgPSByb29tTWFuYWdlci5nZXRSb29tVHlwZXNCeUlkKHJvb21UeXBlKTsKKworCQkJQXBwb2ludG1lbnQgYXBwID0gYXBwb2ludG1lbnRMb2dpYworCQkJCQkuZ2V0QXBwb2ludE1lbnRCeUlkKGFwcG9pbnRtZW50SWQpOworCisJCQlSb29tIHJvb20gPSBhcHAuZ2V0Um9vbSgpOworCQkJaWYgKHJvb20gIT0gbnVsbCkgeworCisJCQkJcm9vbS5zZXRDb21tZW50KGFwcG9pbnRtZW50RGVzY3JpcHRpb24pOworCQkJCXJvb20uc2V0TmFtZShhcHBvaW50bWVudE5hbWUpOworCQkJCXJvb20uc2V0Um9vbXR5cGUocnQpOworCisJCQkJcm9vbURhby51cGRhdGUocm9vbSwgdXNlcnNfaWQpOworCQkJfQorCisJCQlVc2VyIHVzZXIgPSB1c2VyTWFuYWdlci5nZXRVc2VyQnlJZCh1c2Vyc19pZCk7CisKKwkJCXJldHVybiBhcHBvaW50bWVudERhby51cGRhdGVBcHBvaW50bWVudChhcHBvaW50bWVudElkLAorCQkJCQlhcHBvaW50bWVudE5hbWUsIGFwcG9pbnRtZW50RGVzY3JpcHRpb24sIGFwcG9pbnRtZW50c3RhcnQKKwkJCQkJCQkuZ2V0VGltZSgpLCBhcHBvaW50bWVudGVuZC5nZXRUaW1lKCksIGlzRGFpbHksCisJCQkJCWlzV2Vla2x5LCBpc01vbnRobHksIGlzWWVhcmx5LCBjYXRlZ29yeUlkLCByZW1pbmQsIG5ld0xpc3QsCisJCQkJCXVzZXJzX2lkLCBiYXNldXJsLCBsYW5ndWFnZUlkLCBpc1Bhc3N3b3JkUHJvdGVjdGVkLAorCQkJCQlwYXNzd29yZCwgdXNlci5nZXRPbVRpbWVab25lKCkuZ2V0SWNhbCgpLAorCQkJCQlhcHBvaW50bWVudExvY2F0aW9uKTsKKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIlt1cGRhdGVBcHBvaW50bWVudF0iLCBlcnIpOworCQkJdGhyb3cgbmV3IEF4aXNGYXVsdChlcnIuZ2V0TWVzc2FnZSgpKTsKKwkJfQorCX0KKworCS8qKgorCSAqIAorCSAqIGRlbGV0ZSBhIGNhbGVuZGFyIGV2ZW50CisJICogCisJICogSWYgdGhlIGdpdmVuIFNJRCBpcyBmcm9tIGFuIEFkbWluaXN0cmF0b3Igb3IgV2ViLVNlcnZpY2UgdXNlciwgdGhlIHVzZXIKKwkgKiBjYW4gZGVsZXRlIGFueSBhcHBvaW50bWVudC48YnIvPgorCSAqIElmIHRoZSBTSUQgaXMgYXNzaWduZWQgdG8gYSBzaW1wbGUgdXNlciwgaGUgY2FuIG9ubHkgZGVsZXRlIGFwcG9pbnRtZW50cworCSAqIHdoZXJlIGhlIGlzIGFsc28gdGhlIG93bmVyL2NyZWF0b3Igb2YgdGhlIGFwcG9pbnRtZW50CisJICogCisJICogQHBhcmFtIFNJRAorCSAqICAgICAgICAgICAgYW4gYXV0aGVudGljYXRlZCBTSUQKKwkgKiBAcGFyYW0gYXBwb2ludG1lbnRJZAorCSAqICAgICAgICAgICAgdGhlIGlkIHRvIGRlbGV0ZQorCSAqIEBwYXJhbSBsYW5ndWFnZV9pZAorCSAqICAgICAgICAgICAgdGhlIGxhbmd1YWdlIGlkIGluIHdoaWNoIHRoZSBub3RpZmljYXRpb25zIGZvciB0aGUgZGVsZXRlZAorCSAqICAgICAgICAgICAgYXBwb2ludG1lbnQgYXJlIHNlbmQKKwkgKiBAcmV0dXJuIC0gaWQgb2YgYXBwb2ludG1lbnQgZGVsZXRlZAorCSAqLworCXB1YmxpYyBMb25nIGRlbGV0ZUFwcG9pbnRtZW50KFN0cmluZyBTSUQsIExvbmcgYXBwb2ludG1lbnRJZCwKKwkJCUxvbmcgbGFuZ3VhZ2VfaWQpIHRocm93cyBBeGlzRmF1bHQgeworCQl0cnkgeworCisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tXZWJTZXJ2aWNlTGV2ZWwodXNlcl9sZXZlbCkpIHsKKworCQkJCXJldHVybiBhcHBvaW50bWVudExvZ2ljLmRlbGV0ZUFwcG9pbnRtZW50KGFwcG9pbnRtZW50SWQsCisJCQkJCQl1c2Vyc19pZCwgbGFuZ3VhZ2VfaWQpOworCisJCQl9IGVsc2UgaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tVc2VyTGV2ZWwodXNlcl9sZXZlbCkpIHsKKworCQkJCUFwcG9pbnRtZW50IGFwcG9pbnRtZW50ID0gYXBwb2ludG1lbnRMb2dpYworCQkJCQkJLmdldEFwcG9pbnRNZW50QnlJZChhcHBvaW50bWVudElkKTsKKworCQkJCWlmICghYXBwb2ludG1lbnQuZ2V0VXNlcklkKCkuZ2V0VXNlcl9pZCgpLmVxdWFscyh1c2Vyc19pZCkpIHsKKwkJCQkJdGhyb3cgbmV3IEF4aXNGYXVsdCgKKwkJCQkJCQkiVGhlIEFwcG9pbnRtZW50IGNhbm5vdCBiZSBkZWxldGVkIGJ5IHRoZSBnaXZlbiB1c2VyIik7CisJCQkJfQorCisJCQkJcmV0dXJuIGFwcG9pbnRtZW50TG9naWMuZGVsZXRlQXBwb2ludG1lbnQoYXBwb2ludG1lbnRJZCwKKwkJCQkJCXVzZXJzX2lkLCBsYW5ndWFnZV9pZCk7CisKKwkJCX0KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltkZWxldGVBcHBvaW50bWVudF0iLCBlcnIpOworCQkJdGhyb3cgbmV3IEF4aXNGYXVsdChlcnIuZ2V0TWVzc2FnZSgpKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvKioKKwkgKiAKKwkgKiBMb2FkIGEgY2FsZW5kYXIgZXZlbnQgYnkgaXRzIHJvb20gaWQKKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogQHBhcmFtIHJvb21faWQKKwkgKiBAcmV0dXJuIC0gY2FsZW5kYXIgZXZlbnQgYnkgaXRzIHJvb20gaWQKKwkgKi8KKwlwdWJsaWMgQXBwb2ludG1lbnQgZ2V0QXBwb2ludG1lbnRCeVJvb21JZChTdHJpbmcgU0lELCBMb25nIHJvb21faWQpIHsKKwkJdHJ5IHsKKworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1VzZXJMZXZlbCh1c2VyX2xldmVsKSkgeworCisJCQkJQXBwb2ludG1lbnQgYXBwb2ludG1lbnQgPSBuZXcgQXBwb2ludG1lbnQoKTsKKworCQkJCUFwcG9pbnRtZW50IGFwcFN0b3JlZCA9IGFwcG9pbnRtZW50RGFvLmdldEFwcG9pbnRtZW50QnlSb29tSWQoCisJCQkJCQl1c2Vyc19pZCwgcm9vbV9pZCk7CisKKwkJCQlhcHBvaW50bWVudC5zZXRBcHBvaW50bWVudFN0YXJ0dGltZShhcHBTdG9yZWQKKwkJCQkJCS5nZXRBcHBvaW50bWVudFN0YXJ0dGltZSgpKTsKKwkJCQlhcHBvaW50bWVudC5zZXRBcHBvaW50bWVudEVuZHRpbWUoYXBwU3RvcmVkCisJCQkJCQkuZ2V0QXBwb2ludG1lbnRFbmR0aW1lKCkpOworCisJCQkJcmV0dXJuIGFwcG9pbnRtZW50OworCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2dldEFwcG9pbnRtZW50QnlSb29tSWRdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvKioKKwkgKiBHZXQgYWxsIGNhdGVnb3JpZXMgb2YgY2FsZW5kYXIgZXZlbnRzCisJICogCisJICogQHBhcmFtIFNJRAorCSAqIEByZXR1cm4gLSBhbGwgY2F0ZWdvcmllcyBvZiBjYWxlbmRhciBldmVudHMKKwkgKi8KKwlwdWJsaWMgTGlzdDxBcHBvaW50bWVudENhdGVnb3J5PiBnZXRBcHBvaW50bWVudENhdGVnb3J5TGlzdChTdHJpbmcgU0lEKSB7CisJCWxvZy5kZWJ1ZygiQXBwb2ludG1lbmV0Q2F0ZWdvcnlTZXJ2aWNlLmdldEFwcG9pbnRtZW50Q2F0ZWdvcnlMaXN0IFNJRCA6ICIKKwkJCQkrIFNJRCk7CisKKwkJdHJ5IHsKKworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrVXNlckxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlMaXN0PEFwcG9pbnRtZW50Q2F0ZWdvcnk+IHJlcyA9IGFwcG9pbnRtZW50Q2F0ZWdvcnlEYW9JbXBsCisJCQkJCQkuZ2V0QXBwb2ludG1lbnRDYXRlZ29yeUxpc3QoKTsKKworCQkJCWlmIChyZXMgPT0gbnVsbCB8fCByZXMuc2l6ZSgpIDwgMSkKKwkJCQkJbG9nLmRlYnVnKCJubyBBcHBvaW50bWVudENhdGVnb3JpZXMgZm91bmQiKTsKKwkJCQllbHNlIHsKKwkJCQkJZm9yIChpbnQgaSA9IDA7IGkgPCByZXMuc2l6ZSgpOyBpKyspIHsKKwkJCQkJCUFwcG9pbnRtZW50Q2F0ZWdvcnkgYWMgPSByZXMuZ2V0KGkpOworCQkJCQkJbG9nLmRlYnVnKCJmb3VuZCBhcHBDYXRlZ29yeSA6ICIgKyBhYy5nZXROYW1lKCkpOworCQkJCQl9CisJCQkJfQorCisJCQkJcmV0dXJuIHJlczsKKwkJCX0gZWxzZSB7CisJCQkJbG9nLmVycm9yKCJBcHBvaW50bWVuZXRDYXRlZ29yeVNlcnZpY2UuZ2V0QXBwb2ludG1lbnRDYXRlZ29yeUxpc3QgOiBVc2VyTGV2ZWwgRXJyb3IiKTsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbZ2V0QXBwb2ludG1lbnRDYXRlZ29yeV0iLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCisJfQorCisJLyoqCisJICogR2V0IGFsbCByZW1pbmRlciB0eXBlcyBmb3IgY2FsZW5kYXIgZXZlbnRzCisJICogCisJICogQHBhcmFtIFNJRAorCSAqIEByZXR1cm4gLSBhbGwgcmVtaW5kZXIgdHlwZXMgZm9yIGNhbGVuZGFyIGV2ZW50cworCSAqLworCXB1YmxpYyBMaXN0PEFwcG9pbnRtZW50UmVtaW5kZXJUeXBzPiBnZXRBcHBvaW50bWVudFJlbWluZGVyVHlwTGlzdCgKKwkJCVN0cmluZyBTSUQpIHsKKwkJbG9nLmRlYnVnKCJnZXRBcHBvaW50bWVudFJlbWluZGVyVHlwTGlzdCIpOworCisJCXRyeSB7CisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrVXNlckxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlMaXN0PEFwcG9pbnRtZW50UmVtaW5kZXJUeXBzPiByZXMgPSBhcHBvaW50bWVudFJlbWluZGVyVHlwRGFvSW1wbAorCQkJCQkJLmdldEFwcG9pbnRtZW50UmVtaW5kZXJUeXBMaXN0KCk7CisKKwkJCQlpZiAocmVzID09IG51bGwgfHwgcmVzLnNpemUoKSA8IDEpIHsKKwkJCQkJbG9nLmRlYnVnKCJubyByZW1pbmRlcnR5cHMgZm91bmQhIik7CisJCQkJfSBlbHNlIHsKKwkJCQkJZm9yIChpbnQgaSA9IDA7IGkgPCByZXMuc2l6ZSgpOyBpKyspIHsKKwkJCQkJCWxvZy5kZWJ1ZygiZm91bmQgcmVtaW5kZXIgIiArIHJlcy5nZXQoaSkuZ2V0TmFtZSgpKTsKKwkJCQkJfQorCQkJCX0KKworCQkJCXJldHVybiByZXM7CisJCQl9IGVsc2UKKwkJCQlsb2cuZGVidWcoImdldEFwcG9pbnRtZW50UmVtaW5kZXJUeXBMaXN0ICA6ZXJyb3IgLSB3cm9uZyBhdXRobGV2ZWwhIik7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2dldEFwcG9pbnRtZW50UmVtaW5kZXJUeXBMaXN0XSIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLyoqCisJICogR2V0IHRoZSBhcHBvaW50bWVudHMgKGNhbGVuZGFyIGV2ZW50cykgZm9yIHRoZSBnaXZlbiByZXF1ZXN0VXNlcklkIDxici8+CisJICogVGhlIFRpbWVab25lIGNhbiBiZSBlaXRoZXIgZ2l2ZW4gYnkgdGhlIElkIG9mIHRoZSB0aW1lem9uZSBpbiB0aGUgdGFibGUKKwkgKiAib21fdGltZXpvbmUiIHdpdGggdGhlIHBhcmFtIHRpbWVab25lSWRBIDxici8+CisJICogT3Igd2l0aCB0aGUgamF2YSBuYW1lIG9mIHRoZSBUaW1lWm9uZSBpbiB0aGUgcGFyYW0gamF2YVRpbWVab25lTmFtZQorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiAgICAgICAgICAgIGEgdmFsaWQgdXNlciBpZAorCSAqIEBwYXJhbSBmaXJzdERheUluV2VlaworCSAqICAgICAgICAgICAgdGhlIGZpcnN0IGRheWluIHdlZWssIDA9U3VuZGF5LCAxPU1vbmRheSwgLi4uCisJICogQHBhcmFtIHN0YXJ0RGF0ZQorCSAqICAgICAgICAgICAgdGhlIGRhdGUgaXQgc2hvdWxkIHN0YXJ0IHdpdGgKKwkgKiBAcGFyYW0gcmVxdWVzdFVzZXJJZAorCSAqICAgICAgICAgICAgdGhlIHVzZXIgaWQgdGhlIGNhbGVuZGFyIGV2ZW50cyBhcmUgcmVxdWVzdGVkLCBpZiBpdCBpcyBub3QKKwkgKiAgICAgICAgICAgIHRoZSB1c2VyIGlkIG9mIHRoZSBTSUQgdGhlbiB0aGUgU0lEJ3MgdXNlciBuZWVkcyB0byBoYXZlIHRoZQorCSAqICAgICAgICAgICAgcmlnaHQgdG8gd2F0Y2ggdGhvc2UgZXZlbnRzCisJICogQHBhcmFtIG9tVGltZVpvbmVJZAorCSAqICAgICAgICAgICAgdGhlIGlkIG9mIHRoZSB0aW1lem9uZSAoYWx0ZXJuYXRpdmx5IHVzZSBqYXZhVGltZVpvbmVOYW1lKQorCSAqIEBwYXJhbSBqYXZhVGltZVpvbmVOYW1lCisJICogICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgamF2YSB0aW1lIHpvbmUsIHNlZSA8YQorCSAqICAgICAgICAgICAgaHJlZj0iaHR0cDovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9UaW1lX3pvbmUjSmF2YSIKKwkgKiAgICAgICAgICAgIHRhcmdldD0iX2JsYW5rIgorCSAqICAgICAgICAgICAgPmh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvVGltZV96b25lI0phdmE8L2E+CisJICogICAgICAgICAgICAKKwkgKiBAcmV0dXJuIC0gYXBwb2ludG1lbnRzIGdyb3VwZWQgYnkgd2Vla3MKKwkgKiBAdGhyb3dzIEF4aXNGYXVsdAorCSAqLworCXB1YmxpYyBMaXN0PFdlZWs+IGdldEFwcG9pbnRtZW50c0J5V2Vla0NhbGVuZGFyKFN0cmluZyBTSUQsCisJCQlpbnQgZmlyc3REYXlJbldlZWssIERhdGUgc3RhcnREYXRlLCBMb25nIHJlcXVlc3RVc2VySWQsCisJCQlMb25nIG9tVGltZVpvbmVJZCwgU3RyaW5nIGphdmFUaW1lWm9uZU5hbWUpIHRocm93cyBBeGlzRmF1bHQgeworCQl0cnkgeworCisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrVXNlckxldmVsKHVzZXJfbGV2ZWwpKSB7CisJCQkJCisJCQkJaWYgKCFyZXF1ZXN0VXNlcklkLmVxdWFscyh1c2Vyc19pZCkpIHsKKwkJCQkJVXNlckNvbnRhY3QgdXNlckNvbnRhY3RzID0gdXNlckNvbnRhY3RzRGFvSW1wbAorCQkJCQkJCS5nZXRVc2VyQ29udGFjdEJ5U2hhcmVDYWxlbmRhcihyZXF1ZXN0VXNlcklkLCB0cnVlLAorCQkJCQkJCQkJdXNlcnNfaWQpOworCQkJCQlpZiAodXNlckNvbnRhY3RzID09IG51bGwpIHsKKwkJCQkJCXRocm93IG5ldyBFeGNlcHRpb24oCisJCQkJCQkJCSJZb3VyIGFyZSBub3QgYWxsb3dlZCB0byBzZWUgdGhpcyBjYWxlbmRhciIpOworCQkJCQl9CisJCQkJfQorCisJCQkJVGltZVpvbmUgdGltZXpvbmUgPSBudWxsOworCisJCQkJaWYgKGphdmFUaW1lWm9uZU5hbWUgIT0gbnVsbCAmJiAhamF2YVRpbWVab25lTmFtZS5pc0VtcHR5KCkpIHsKKwkJCQkJdGltZXpvbmUgPSBUaW1lWm9uZS5nZXRUaW1lWm9uZShqYXZhVGltZVpvbmVOYW1lKTsKKwkJCQkJaWYgKHRpbWV6b25lID09IG51bGwpIHsKKwkJCQkJCXRocm93IG5ldyBFeGNlcHRpb24oIkludmFsaWQgamF2YVRpbWVab25lTmFtZSBnaXZlbiIpOworCQkJCQl9CisJCQkJfQorCisJCQkJaWYgKG9tVGltZVpvbmVJZCA+IDApIHsKKwkJCQkJdGltZXpvbmUgPSB0aW1lem9uZVV0aWwKKwkJCQkJCQkuZ2V0VGltZXpvbmVCeU9tVGltZVpvbmVJZChvbVRpbWVab25lSWQpOworCQkJCX0KKwkJCQkKKwkJCQlpZiAodGltZXpvbmUgPT0gbnVsbCkgeworCQkJCQl0aHJvdyBuZXcgRXhjZXB0aW9uKCJObyB0aW1lWm9uZSBnaXZlbiIpOworCQkJCX0KKworCQkJCS8vIENhbGN1bGF0ZSB0aGUgZmlyc3QgZGF5IG9mIGEgY2FsZW5kYXIgYmFzZWQgb24gdGhlIGZpcnN0CisJCQkJLy8gc2hvd2luZyBkYXkgb2YgdGhlIHdlZWsKKwkJCQlMaXN0PFdlZWs+IHdlZWtzID0gbmV3IEFycmF5TGlzdDxXZWVrPig2KTsKKwkJCQlDYWxlbmRhciBjdXJyZW50RGF0ZSA9IENhbGVuZGFyLmdldEluc3RhbmNlKCk7CisJCQkJY3VycmVudERhdGUuc2V0VGltZShzdGFydERhdGUpOworCQkJCWN1cnJlbnREYXRlLnNldChDYWxlbmRhci5IT1VSX09GX0RBWSwgMTIpOyAvLyBzZXQgdG8gMTIgdG8gcHJldmVudCB0aW1lem9uZSBpc3N1ZXMKKwkJCQljdXJyZW50RGF0ZS5zZXQoQ2FsZW5kYXIuREFURSwgMSk7CisKKwkJCQlpbnQgY3VycmVudFdlZWtEYXkgPSBjdXJyZW50RGF0ZS5nZXQoQ2FsZW5kYXIuREFZX09GX1dFRUspOworCisJCQkJQ2FsZW5kYXIgc3RhcnRXZWVrRGF5ID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTsKKworCQkJCWxvZy5kZWJ1ZygiY3VycmVudFdlZWtEYXkgLS0gIiArIGN1cnJlbnRXZWVrRGF5KTsKKwkJCQlsb2cuZGVidWcoImZpcnN0RGF5SW5XZWVrIC0tICIgKyBmaXJzdERheUluV2Vlayk7CisKKwkJCQlpZiAoY3VycmVudFdlZWtEYXkgPT0gZmlyc3REYXlJbldlZWspIHsKKworCQkJCQlsb2cuZGVidWcoIkFSRSBlcXVhbCBjdXJyZW50V2Vla0RheSAtLSAiKTsKKworCQkJCQlzdGFydFdlZWtEYXkuc2V0VGltZShjdXJyZW50RGF0ZS5nZXRUaW1lKCkpOworCisJCQkJfSBlbHNlIHsKKworCQkJCQlzdGFydFdlZWtEYXkKKwkJCQkJCQkuc2V0VGltZUluTWlsbGlzKChjdXJyZW50RGF0ZS5nZXRUaW1lSW5NaWxsaXMoKSAtICgoY3VycmVudFdlZWtEYXkgLSAxKSAqIDg2NDAwMDAwKSkpOworCisJCQkJCWlmIChjdXJyZW50V2Vla0RheSA+IGZpcnN0RGF5SW5XZWVrKSB7CisJCQkJCQlzdGFydFdlZWtEYXkuc2V0VGltZUluTWlsbGlzKHN0YXJ0V2Vla0RheQorCQkJCQkJCQkuZ2V0VGltZUluTWlsbGlzKCkKKwkJCQkJCQkJKyAoZmlyc3REYXlJbldlZWsgKiA4NjQwMDAwMCkpOworCQkJCQl9IGVsc2UgeworCQkJCQkJc3RhcnRXZWVrRGF5LnNldFRpbWVJbk1pbGxpcyhzdGFydFdlZWtEYXkKKwkJCQkJCQkJLmdldFRpbWVJbk1pbGxpcygpCisJCQkJCQkJCS0gKGZpcnN0RGF5SW5XZWVrICogODY0MDAwMDApKTsKKwkJCQkJfQorCisJCQkJfQorCisJCQkJQ2FsZW5kYXIgY2FsU3RhcnQgPSBDYWxlbmRhci5nZXRJbnN0YW5jZSh0aW1lem9uZSk7CisJCQkJY2FsU3RhcnQuc2V0VGltZShzdGFydFdlZWtEYXkuZ2V0VGltZSgpKTsKKworCQkJCUNhbGVuZGFyIGNhbEVuZCA9IENhbGVuZGFyLmdldEluc3RhbmNlKHRpbWV6b25lKTsKKwkJCQkvLyBldmVyeSBtb250aCBwYWdlIGluIG91ciBjYWxlbmRhciBzaG93cyA0MiBkYXlzCisJCQkJY2FsRW5kLnNldFRpbWUobmV3IERhdGUoc3RhcnRXZWVrRGF5LmdldFRpbWUoKS5nZXRUaW1lKCkKKwkJCQkJCSsgKDQyTCAqIDg2NDAwMDAwTCkpKTsKKworCQkJCUxpc3Q8QXBwb2ludG1lbnQ+IGFwcG9pbnRtZW50cyA9IGFwcG9pbnRtZW50RGFvCisJCQkJCQkuZ2V0QXBwb2ludG1lbnRzQnlSYW5nZShyZXF1ZXN0VXNlcklkLAorCQkJCQkJCQljYWxTdGFydC5nZXRUaW1lKCksIGNhbEVuZC5nZXRUaW1lKCkpOworCisJCQkJbG9nLmRlYnVnKCJzdGFydFdlZWtEYXkgMiIgKyBzdGFydFdlZWtEYXkuZ2V0VGltZSgpKTsKKwkJCQlsb2cuZGVidWcoInN0YXJ0V2Vla0RheSBOdW1iZXIgb2YgYXBwb2ludG1lbnRzICIKKwkJCQkJCSsgYXBwb2ludG1lbnRzLnNpemUoKSk7CisKKwkJCQlsb25nIHogPSAwOworCisJCQkJZm9yIChpbnQgayA9IDA7IGsgPCA2OyBrKyspIHsgLy8gNiB3ZWVrcyBwZXIgbW9udGhseSBzdW1tYXJ5CisKKwkJCQkJV2VlayB3ZWVrID0gbmV3IFdlZWsoKTsKKworCQkJCQlmb3IgKGludCBpID0gMDsgaSA8IDc7IGkrKykgeyAvLyA3IGRheXMgYSB3ZWVrCisKKwkJCQkJCUNhbGVuZGFyIHRDYWwgPSBDYWxlbmRhci5nZXRJbnN0YW5jZSh0aW1lem9uZSk7CisJCQkJCQl0Q2FsLnNldFRpbWVJbk1pbGxpcyhzdGFydFdlZWtEYXkuZ2V0VGltZUluTWlsbGlzKCkKKwkJCQkJCQkJKyAoeiAqIDg2NDAwMDAwTCkpOworCQkJCQkJCisJCQkJCQlEYXkgZGF5ID0gbmV3IERheSh0Q2FsLmdldFRpbWUoKSk7CisJCQkJCQkKKwkJCQkJCWZvciAoQXBwb2ludG1lbnQgYXBwb2ludG1lbnQgOiBhcHBvaW50bWVudHMpIHsKKwkJCQkJCQlpZiAoYXBwb2ludG1lbnQKKwkJCQkJCQkJCS5hcHBvaW50bWVudFN0YXJ0QXNDYWxlbmRhcih0aW1lem9uZSkuZ2V0KAorCQkJCQkJCQkJCQlDYWxlbmRhci5NT05USCkgPT0gdENhbAorCQkJCQkJCQkJLmdldChDYWxlbmRhci5NT05USCkKKwkJCQkJCQkJCSYmIGFwcG9pbnRtZW50LmFwcG9pbnRtZW50U3RhcnRBc0NhbGVuZGFyKAorCQkJCQkJCQkJCQl0aW1lem9uZSkuZ2V0KENhbGVuZGFyLkRBVEUpID09IHRDYWwKKwkJCQkJCQkJCQkJLmdldChDYWxlbmRhci5EQVRFKSkgeworCQkJCQkJCQlkYXkuZ2V0QXBwb2ludG1lbnRzKCkuYWRkKAorCQkJCQkJCQkJCW5ldyBBcHBvaW50bWVudERUTyhhcHBvaW50bWVudCwKKwkJCQkJCQkJCQkJCXRpbWV6b25lKSk7CisJCQkJCQkJfQorCQkJCQkJfQorCisJCQkJCQl3ZWVrLmdldERheXMoKS5hZGQoZGF5KTsKKwkJCQkJCXorKzsKKwkJCQkJfQorCisJCQkJCXdlZWtzLmFkZCh3ZWVrKTsKKwkJCQl9CisKKwkJCQlyZXR1cm4gd2Vla3M7CisKKwkJCX0KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRBcHBvaW50bWVudFJlbWluZGVyVHlwTGlzdF0iLCBlcnIpOworCQkJdGhyb3cgbmV3IEF4aXNGYXVsdChlcnIuZ2V0TWVzc2FnZSgpKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9heGlzL3NlcnZpY2VzL0NhbGVuZGFyV2ViU2VydmljZUZhY2FkZS5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2F4aXMvc2VydmljZXMvQ2FsZW5kYXJXZWJTZXJ2aWNlRmFjYWRlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjJlN2Q4ZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9heGlzL3NlcnZpY2VzL0NhbGVuZGFyV2ViU2VydmljZUZhY2FkZS5qYXZhCkBAIC0wLDAgKzEsMTI2IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmF4aXMuc2VydmljZXM7CisKK2ltcG9ydCBqYXZhLnV0aWwuQ2FsZW5kYXI7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2ltcG9ydCBvcmcuYXBhY2hlLmF4aXMyLkF4aXNGYXVsdDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNhbGVuZGFyLmJlYW5zLldlZWs7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuY2FsZW5kYXIuQXBwb2ludG1lbnQ7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuY2FsZW5kYXIuQXBwb2ludG1lbnRDYXRlZ29yeTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5jYWxlbmRhci5BcHBvaW50bWVudFJlbWluZGVyVHlwczsKKworcHVibGljIGNsYXNzIENhbGVuZGFyV2ViU2VydmljZUZhY2FkZSBleHRlbmRzIEJhc2VXZWJTZXJ2aWNlIHsKKwkKKwlwdWJsaWMgTGlzdDxBcHBvaW50bWVudD4gZ2V0QXBwb2ludG1lbnRCeVJhbmdlKFN0cmluZyBTSUQsIERhdGUgc3RhcnR0aW1lLAorCQkJRGF0ZSBlbmR0aW1lKSB0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJcmV0dXJuIGdldEJlYW4oQ2FsZW5kYXJXZWJTZXJ2aWNlLmNsYXNzKS5nZXRBcHBvaW50bWVudEJ5UmFuZ2UoU0lELCBzdGFydHRpbWUsCisJCQkJZW5kdGltZSk7CisJfQorCisJcHVibGljIExpc3Q8QXBwb2ludG1lbnQ+IGdldEFwcG9pbnRtZW50QnlSYW5nZUZvclVzZXJJZChTdHJpbmcgU0lELAorCQkJbG9uZyB1c2VySWQsIERhdGUgc3RhcnR0aW1lLCBEYXRlIGVuZHRpbWUpIHRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihDYWxlbmRhcldlYlNlcnZpY2UuY2xhc3MpLmdldEFwcG9pbnRtZW50QnlSYW5nZUZvclVzZXJJZChTSUQsCisJCQkJdXNlcklkLCBzdGFydHRpbWUsIGVuZHRpbWUpOworCX0KKworCXB1YmxpYyBBcHBvaW50bWVudCBnZXROZXh0QXBwb2ludG1lbnQoU3RyaW5nIFNJRCkgdGhyb3dzIEF4aXNGYXVsdCB7CisJCXJldHVybiBnZXRCZWFuKENhbGVuZGFyV2ViU2VydmljZS5jbGFzcykuZ2V0TmV4dEFwcG9pbnRtZW50KFNJRCk7CisJfQorCisJcHVibGljIEFwcG9pbnRtZW50IGdldE5leHRBcHBvaW50bWVudEZvclVzZXJJZChTdHJpbmcgU0lELCBsb25nIHVzZXJJZCkKKwkJCXRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihDYWxlbmRhcldlYlNlcnZpY2UuY2xhc3MpLmdldE5leHRBcHBvaW50bWVudEZvclVzZXJJZChTSUQsCisJCQkJdXNlcklkKTsKKwl9CisKKwlwdWJsaWMgTGlzdDxBcHBvaW50bWVudD4gc2VhcmNoQXBwb2ludG1lbnRCeU5hbWUoU3RyaW5nIFNJRCwKKwkJCVN0cmluZyBhcHBvaW50bWVudE5hbWUpIHRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihDYWxlbmRhcldlYlNlcnZpY2UuY2xhc3MpLnNlYXJjaEFwcG9pbnRtZW50QnlOYW1lKFNJRCwKKwkJCQlhcHBvaW50bWVudE5hbWUpOworCX0KKworCXB1YmxpYyBMb25nIHNhdmVBcHBvaW50bWVudChTdHJpbmcgU0lELCBTdHJpbmcgYXBwb2ludG1lbnROYW1lLAorCQkJU3RyaW5nIGFwcG9pbnRtZW50TG9jYXRpb24sIFN0cmluZyBhcHBvaW50bWVudERlc2NyaXB0aW9uLAorCQkJQ2FsZW5kYXIgYXBwb2ludG1lbnRzdGFydCwgQ2FsZW5kYXIgYXBwb2ludG1lbnRlbmQsCisJCQlCb29sZWFuIGlzRGFpbHksIEJvb2xlYW4gaXNXZWVrbHksIEJvb2xlYW4gaXNNb250aGx5LAorCQkJQm9vbGVhbiBpc1llYXJseSwgTG9uZyBjYXRlZ29yeUlkLCBMb25nIHJlbWluZCwgU3RyaW5nW10gbW1DbGllbnQsCisJCQlMb25nIHJvb21UeXBlLCBTdHJpbmcgYmFzZVVybCwgTG9uZyBsYW5ndWFnZUlkLAorCQkJQm9vbGVhbiBpc1Bhc3N3b3JkUHJvdGVjdGVkLCBTdHJpbmcgcGFzc3dvcmQsIGxvbmcgcm9vbUlkKSB0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJcmV0dXJuIGdldEJlYW4oQ2FsZW5kYXJXZWJTZXJ2aWNlLmNsYXNzKS5zYXZlQXBwb2ludG1lbnQoU0lELCBhcHBvaW50bWVudE5hbWUsCisJCQkJYXBwb2ludG1lbnRMb2NhdGlvbiwgYXBwb2ludG1lbnREZXNjcmlwdGlvbiwgYXBwb2ludG1lbnRzdGFydCwKKwkJCQlhcHBvaW50bWVudGVuZCwgaXNEYWlseSwgaXNXZWVrbHksIGlzTW9udGhseSwgaXNZZWFybHksCisJCQkJY2F0ZWdvcnlJZCwgcmVtaW5kLCBtbUNsaWVudCwgcm9vbVR5cGUsIGJhc2VVcmwsIGxhbmd1YWdlSWQsCisJCQkJaXNQYXNzd29yZFByb3RlY3RlZCwgcGFzc3dvcmQsIHJvb21JZCk7CisJfQorCisJcHVibGljIExvbmcgdXBkYXRlQXBwb2ludG1lbnRUaW1lT25seShTdHJpbmcgU0lELCBMb25nIGFwcG9pbnRtZW50SWQsCisJCQlEYXRlIGFwcG9pbnRtZW50c3RhcnQsIERhdGUgYXBwb2ludG1lbnRlbmQsIFN0cmluZyBiYXNldXJsLAorCQkJTG9uZyBsYW5ndWFnZUlkKSB0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJcmV0dXJuIGdldEJlYW4oQ2FsZW5kYXJXZWJTZXJ2aWNlLmNsYXNzKS51cGRhdGVBcHBvaW50bWVudFRpbWVPbmx5KFNJRCwKKwkJCQlhcHBvaW50bWVudElkLCBhcHBvaW50bWVudHN0YXJ0LCBhcHBvaW50bWVudGVuZCwgYmFzZXVybCwKKwkJCQlsYW5ndWFnZUlkKTsKKwl9CisKKwlwdWJsaWMgTG9uZyB1cGRhdGVBcHBvaW50bWVudChTdHJpbmcgU0lELCBMb25nIGFwcG9pbnRtZW50SWQsCisJCQlTdHJpbmcgYXBwb2ludG1lbnROYW1lLCBTdHJpbmcgYXBwb2ludG1lbnRMb2NhdGlvbiwKKwkJCVN0cmluZyBhcHBvaW50bWVudERlc2NyaXB0aW9uLCBDYWxlbmRhciBhcHBvaW50bWVudHN0YXJ0LAorCQkJQ2FsZW5kYXIgYXBwb2ludG1lbnRlbmQsIEJvb2xlYW4gaXNEYWlseSwgQm9vbGVhbiBpc1dlZWtseSwKKwkJCUJvb2xlYW4gaXNNb250aGx5LCBCb29sZWFuIGlzWWVhcmx5LCBMb25nIGNhdGVnb3J5SWQsIExvbmcgcmVtaW5kLAorCQkJU3RyaW5nW10gbW1DbGllbnQsIExvbmcgcm9vbVR5cGUsIFN0cmluZyBiYXNldXJsLCBMb25nIGxhbmd1YWdlSWQsCisJCQlCb29sZWFuIGlzUGFzc3dvcmRQcm90ZWN0ZWQsIFN0cmluZyBwYXNzd29yZCkgdGhyb3dzIEF4aXNGYXVsdCB7CisJCXJldHVybiBnZXRCZWFuKENhbGVuZGFyV2ViU2VydmljZS5jbGFzcykudXBkYXRlQXBwb2ludG1lbnQoU0lELCBhcHBvaW50bWVudElkLAorCQkJCWFwcG9pbnRtZW50TmFtZSwgYXBwb2ludG1lbnRMb2NhdGlvbiwgYXBwb2ludG1lbnREZXNjcmlwdGlvbiwKKwkJCQlhcHBvaW50bWVudHN0YXJ0LCBhcHBvaW50bWVudGVuZCwgaXNEYWlseSwgaXNXZWVrbHksIGlzTW9udGhseSwKKwkJCQlpc1llYXJseSwgY2F0ZWdvcnlJZCwgcmVtaW5kLCBtbUNsaWVudCwgcm9vbVR5cGUsIGJhc2V1cmwsCisJCQkJbGFuZ3VhZ2VJZCwgaXNQYXNzd29yZFByb3RlY3RlZCwgcGFzc3dvcmQpOworCX0KKworCXB1YmxpYyBMb25nIGRlbGV0ZUFwcG9pbnRtZW50KFN0cmluZyBTSUQsIExvbmcgYXBwb2ludG1lbnRJZCwKKwkJCUxvbmcgbGFuZ3VhZ2VfaWQpIHRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihDYWxlbmRhcldlYlNlcnZpY2UuY2xhc3MpLmRlbGV0ZUFwcG9pbnRtZW50KFNJRCwgYXBwb2ludG1lbnRJZCwKKwkJCQlsYW5ndWFnZV9pZCk7CisJfQorCisJcHVibGljIEFwcG9pbnRtZW50IGdldEFwcG9pbnRtZW50QnlSb29tSWQoU3RyaW5nIFNJRCwgTG9uZyByb29tX2lkKQorCQkJdGhyb3dzIEF4aXNGYXVsdCB7CisJCXJldHVybiBnZXRCZWFuKENhbGVuZGFyV2ViU2VydmljZS5jbGFzcykuZ2V0QXBwb2ludG1lbnRCeVJvb21JZChTSUQsIHJvb21faWQpOworCX0KKworCXB1YmxpYyBMaXN0PEFwcG9pbnRtZW50Q2F0ZWdvcnk+IGdldEFwcG9pbnRtZW50Q2F0ZWdvcnlMaXN0KFN0cmluZyBTSUQpCisJCQl0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJcmV0dXJuIGdldEJlYW4oQ2FsZW5kYXJXZWJTZXJ2aWNlLmNsYXNzKS5nZXRBcHBvaW50bWVudENhdGVnb3J5TGlzdChTSUQpOworCX0KKworCXB1YmxpYyBMaXN0PEFwcG9pbnRtZW50UmVtaW5kZXJUeXBzPiBnZXRBcHBvaW50bWVudFJlbWluZGVyVHlwTGlzdCgKKwkJCVN0cmluZyBTSUQpIHRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihDYWxlbmRhcldlYlNlcnZpY2UuY2xhc3MpLmdldEFwcG9pbnRtZW50UmVtaW5kZXJUeXBMaXN0KFNJRCk7CisJfQorCisJcHVibGljIExpc3Q8V2Vlaz4gZ2V0QXBwb2ludG1lbnRzQnlXZWVrQ2FsZW5kYXIoU3RyaW5nIFNJRCwKKwkJCWludCBmaXJzdERheUluV2VlaywgRGF0ZSBzdGFydERhdGUsIExvbmcgcmVxdWVzdFVzZXJJZCwKKwkJCUxvbmcgb21UaW1lWm9uZUlkLCBTdHJpbmcgamF2YVRpbWVab25lTmFtZSkgdGhyb3dzIEF4aXNGYXVsdCB7CisJCXJldHVybiBnZXRCZWFuKENhbGVuZGFyV2ViU2VydmljZS5jbGFzcykuZ2V0QXBwb2ludG1lbnRzQnlXZWVrQ2FsZW5kYXIoU0lELAorCQkJCWZpcnN0RGF5SW5XZWVrLCBzdGFydERhdGUsIHJlcXVlc3RVc2VySWQsIG9tVGltZVpvbmVJZCwKKwkJCQlqYXZhVGltZVpvbmVOYW1lKTsKKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9heGlzL3NlcnZpY2VzL0ZMVlJlY29yZGluZ1JldHVybi5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2F4aXMvc2VydmljZXMvRkxWUmVjb3JkaW5nUmV0dXJuLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2Y2ZDM3ZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9heGlzL3NlcnZpY2VzL0ZMVlJlY29yZGluZ1JldHVybi5qYXZhCkBAIC0wLDAgKzEsMzQzIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmF4aXMuc2VydmljZXM7CisKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmZsdnJlY29yZC5GbHZSZWNvcmRpbmc7CisKKworcHVibGljIGNsYXNzIEZMVlJlY29yZGluZ1JldHVybiB7CisKKwlwcml2YXRlIGxvbmcgZmx2UmVjb3JkaW5nSWQ7CisJCisJcHJpdmF0ZSBTdHJpbmcgZmlsZU5hbWU7CisJcHJpdmF0ZSBTdHJpbmcgYWx0ZXJuYXRlRG93bmxvYWQ7CisJcHJpdmF0ZSBTdHJpbmcgZmlsZUhhc2g7CisJcHJpdmF0ZSBTdHJpbmcgY29tbWVudDsKKwkKKwlwcml2YXRlIExvbmcgcGFyZW50RmlsZUV4cGxvcmVySXRlbUlkOworCXByaXZhdGUgTG9uZyByb29tX2lkOworCXByaXZhdGUgTG9uZyBvd25lcklkOy8vT3duZXJJRCA9PiBvbmx5IHNldCBpZiBpdHMgZGlyZWN0bHkgcm9vdCBpbiBPd25lciBEaXJlY3RvcnksIG90aGVyIEZvbGRlcnMgYW5kIEZpbGVzCisJLy9tYXliZSBhcmUgYWxzbyBpbiBhIEhvbWUgZGlyZWN0b3J5IGJ1dCBqdXN0IGJlY2F1c2UgdGhlaXIgcGFyZW50IGlzCisJCisJcHJpdmF0ZSBCb29sZWFuIGlzRm9sZGVyOworCXByaXZhdGUgQm9vbGVhbiBpc0ltYWdlOworCXByaXZhdGUgQm9vbGVhbiBpc1ByZXNlbnRhdGlvbjsKKwlwcml2YXRlIEJvb2xlYW4gaXNSZWNvcmRpbmc7CisJCisJcHJpdmF0ZSBEYXRlIHJlY29yZFN0YXJ0OworCXByaXZhdGUgRGF0ZSByZWNvcmRFbmQ7CisJCisJcHJpdmF0ZSBMb25nIGluc2VydGVkQnk7CisJcHJpdmF0ZSBEYXRlIGluc2VydGVkOworCXByaXZhdGUgRGF0ZSB1cGRhdGVkOworCXByaXZhdGUgYm9vbGVhbiBkZWxldGVkOworCQorCXByaXZhdGUgSW50ZWdlciB3aWR0aDsKKwlwcml2YXRlIEludGVnZXIgaGVpZ2h0OworCQorCXByaXZhdGUgSW50ZWdlciBmbHZXaWR0aDsKKwlwcml2YXRlIEludGVnZXIgZmx2SGVpZ2h0OworCXByaXZhdGUgU3RyaW5nIHByZXZpZXdJbWFnZTsKKwkKKwlwcml2YXRlIExvbmcgZmlsZVNpemU7CisJCisJcHJpdmF0ZSBTdHJpbmcgcmVjb3JkZXJTdHJlYW1JZDsKKwlwcml2YXRlIExvbmcgb3JnYW5pemF0aW9uX2lkOworCQorCXByaXZhdGUgQm9vbGVhbiBpc0ludGVydmlldzsKKwlwcml2YXRlIEludGVnZXIgcHJvZ3Jlc3NQb3N0UHJvY2Vzc2luZzsKKwkKKwlwdWJsaWMgc3RhdGljIEZMVlJlY29yZGluZ1JldHVybiBpbml0T2JqZWN0KEZsdlJlY29yZGluZyBjdXN0b21PYmplY3QpIHsKKwkJCisJCUZMVlJlY29yZGluZ1JldHVybiBmbHZSZWNvcmRpbmdSZXR1cm4gPSBuZXcgRkxWUmVjb3JkaW5nUmV0dXJuKCk7CisJCQorCQlmbHZSZWNvcmRpbmdSZXR1cm4uZmx2UmVjb3JkaW5nSWQgPSBjdXN0b21PYmplY3QuZ2V0Rmx2UmVjb3JkaW5nSWQoKTsKKwkJCisJCWZsdlJlY29yZGluZ1JldHVybi5maWxlTmFtZSA9IGN1c3RvbU9iamVjdC5nZXRGaWxlTmFtZSgpOworCQlmbHZSZWNvcmRpbmdSZXR1cm4uYWx0ZXJuYXRlRG93bmxvYWQgPSBjdXN0b21PYmplY3QuZ2V0QWx0ZXJuYXRlRG93bmxvYWQoKTsKKwkJZmx2UmVjb3JkaW5nUmV0dXJuLmZpbGVIYXNoID0gY3VzdG9tT2JqZWN0LmdldEZpbGVIYXNoKCk7CisJCWZsdlJlY29yZGluZ1JldHVybi5jb21tZW50ID0gY3VzdG9tT2JqZWN0LmdldENvbW1lbnQoKTsKKwkJCisJCWZsdlJlY29yZGluZ1JldHVybi5wYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQgPSBjdXN0b21PYmplY3QuZ2V0UGFyZW50RmlsZUV4cGxvcmVySXRlbUlkKCk7CisJCWZsdlJlY29yZGluZ1JldHVybi5yb29tX2lkID0gY3VzdG9tT2JqZWN0LmdldFJvb21faWQoKTsKKwkJZmx2UmVjb3JkaW5nUmV0dXJuLm93bmVySWQgPSBjdXN0b21PYmplY3QuZ2V0T3duZXJJZCgpOy8vT3duZXJJRCA9PiBvbmx5IHNldCBpZiBpdHMgZGlyZWN0bHkgcm9vdCBpbiBPd25lciBEaXJlY3RvcnksIG90aGVyIEZvbGRlcnMgYW5kIEZpbGVzCisJCS8vbWF5YmUgYXJlIGFsc28gaW4gYSBIb21lIGRpcmVjdG9yeSBidXQganVzdCBiZWNhdXNlIHRoZWlyIHBhcmVudCBpcworCQkKKwkJZmx2UmVjb3JkaW5nUmV0dXJuLmlzRm9sZGVyID0gY3VzdG9tT2JqZWN0LmdldElzRm9sZGVyKCk7CisJCWZsdlJlY29yZGluZ1JldHVybi5pc0ltYWdlID0gY3VzdG9tT2JqZWN0LmdldElzSW1hZ2UoKTsKKwkJZmx2UmVjb3JkaW5nUmV0dXJuLmlzUHJlc2VudGF0aW9uID0gY3VzdG9tT2JqZWN0LmdldElzUHJlc2VudGF0aW9uKCk7CisJCWZsdlJlY29yZGluZ1JldHVybi5pc1JlY29yZGluZyA9IGN1c3RvbU9iamVjdC5nZXRJc1JlY29yZGluZygpOworCQkKKwkJZmx2UmVjb3JkaW5nUmV0dXJuLnJlY29yZFN0YXJ0ID0gY3VzdG9tT2JqZWN0LmdldFJlY29yZFN0YXJ0KCk7CisJCWZsdlJlY29yZGluZ1JldHVybi5yZWNvcmRFbmQgPSBjdXN0b21PYmplY3QuZ2V0UmVjb3JkRW5kKCk7CisJCQorCQlmbHZSZWNvcmRpbmdSZXR1cm4uaW5zZXJ0ZWRCeSA9IGN1c3RvbU9iamVjdC5nZXRJbnNlcnRlZEJ5KCk7CisJCWZsdlJlY29yZGluZ1JldHVybi5pbnNlcnRlZCA9IGN1c3RvbU9iamVjdC5nZXRJbnNlcnRlZCgpOworCQlmbHZSZWNvcmRpbmdSZXR1cm4udXBkYXRlZCA9IGN1c3RvbU9iamVjdC5nZXRVcGRhdGVkKCk7CisJCWZsdlJlY29yZGluZ1JldHVybi5kZWxldGVkID0gY3VzdG9tT2JqZWN0LmdldERlbGV0ZWQoKTsKKwkJCisJCWZsdlJlY29yZGluZ1JldHVybi53aWR0aCA9IGN1c3RvbU9iamVjdC5nZXRXaWR0aCgpOworCQlmbHZSZWNvcmRpbmdSZXR1cm4uaGVpZ2h0ID0gY3VzdG9tT2JqZWN0LmdldEhlaWdodCgpOworCQkKKwkJZmx2UmVjb3JkaW5nUmV0dXJuLmZsdldpZHRoID0gY3VzdG9tT2JqZWN0LmdldEZsdldpZHRoKCk7CisJCWZsdlJlY29yZGluZ1JldHVybi5mbHZIZWlnaHQgPSBjdXN0b21PYmplY3QuZ2V0Rmx2SGVpZ2h0KCk7CisJCWZsdlJlY29yZGluZ1JldHVybi5wcmV2aWV3SW1hZ2UgPSBjdXN0b21PYmplY3QuZ2V0UHJldmlld0ltYWdlKCk7CisJCQorCQlmbHZSZWNvcmRpbmdSZXR1cm4uZmlsZVNpemUgPSBjdXN0b21PYmplY3QuZ2V0RmlsZVNpemUoKTsKKwkJCisJCWZsdlJlY29yZGluZ1JldHVybi5yZWNvcmRlclN0cmVhbUlkID0gY3VzdG9tT2JqZWN0LmdldFJlY29yZGVyU3RyZWFtSWQoKTsKKwkJZmx2UmVjb3JkaW5nUmV0dXJuLm9yZ2FuaXphdGlvbl9pZCA9IGN1c3RvbU9iamVjdC5nZXRPcmdhbml6YXRpb25faWQoKTsKKwkJCisJCWZsdlJlY29yZGluZ1JldHVybi5pc0ludGVydmlldyA9IGN1c3RvbU9iamVjdC5nZXRJc0ludGVydmlldygpOworCQlmbHZSZWNvcmRpbmdSZXR1cm4ucHJvZ3Jlc3NQb3N0UHJvY2Vzc2luZyA9IGN1c3RvbU9iamVjdC5nZXRQcm9ncmVzc1Bvc3RQcm9jZXNzaW5nKCk7CisJCQorCQlyZXR1cm4gZmx2UmVjb3JkaW5nUmV0dXJuOworCX0KKworCXB1YmxpYyBsb25nIGdldEZsdlJlY29yZGluZ0lkKCkgeworCQlyZXR1cm4gZmx2UmVjb3JkaW5nSWQ7CisJfQorCisJcHVibGljIHZvaWQgc2V0Rmx2UmVjb3JkaW5nSWQobG9uZyBmbHZSZWNvcmRpbmdJZCkgeworCQl0aGlzLmZsdlJlY29yZGluZ0lkID0gZmx2UmVjb3JkaW5nSWQ7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRGaWxlTmFtZSgpIHsKKwkJcmV0dXJuIGZpbGVOYW1lOworCX0KKworCXB1YmxpYyB2b2lkIHNldEZpbGVOYW1lKFN0cmluZyBmaWxlTmFtZSkgeworCQl0aGlzLmZpbGVOYW1lID0gZmlsZU5hbWU7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRBbHRlcm5hdGVEb3dubG9hZCgpIHsKKwkJcmV0dXJuIGFsdGVybmF0ZURvd25sb2FkOworCX0KKworCXB1YmxpYyB2b2lkIHNldEFsdGVybmF0ZURvd25sb2FkKFN0cmluZyBhbHRlcm5hdGVEb3dubG9hZCkgeworCQl0aGlzLmFsdGVybmF0ZURvd25sb2FkID0gYWx0ZXJuYXRlRG93bmxvYWQ7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRGaWxlSGFzaCgpIHsKKwkJcmV0dXJuIGZpbGVIYXNoOworCX0KKworCXB1YmxpYyB2b2lkIHNldEZpbGVIYXNoKFN0cmluZyBmaWxlSGFzaCkgeworCQl0aGlzLmZpbGVIYXNoID0gZmlsZUhhc2g7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRDb21tZW50KCkgeworCQlyZXR1cm4gY29tbWVudDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRDb21tZW50KFN0cmluZyBjb21tZW50KSB7CisJCXRoaXMuY29tbWVudCA9IGNvbW1lbnQ7CisJfQorCisJcHVibGljIExvbmcgZ2V0UGFyZW50RmlsZUV4cGxvcmVySXRlbUlkKCkgeworCQlyZXR1cm4gcGFyZW50RmlsZUV4cGxvcmVySXRlbUlkOworCX0KKworCXB1YmxpYyB2b2lkIHNldFBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZChMb25nIHBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCkgeworCQl0aGlzLnBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCA9IHBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZDsKKwl9CisKKwlwdWJsaWMgTG9uZyBnZXRSb29tX2lkKCkgeworCQlyZXR1cm4gcm9vbV9pZDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRSb29tX2lkKExvbmcgcm9vbUlkKSB7CisJCXJvb21faWQgPSByb29tSWQ7CisJfQorCisJcHVibGljIExvbmcgZ2V0T3duZXJJZCgpIHsKKwkJcmV0dXJuIG93bmVySWQ7CisJfQorCisJcHVibGljIHZvaWQgc2V0T3duZXJJZChMb25nIG93bmVySWQpIHsKKwkJdGhpcy5vd25lcklkID0gb3duZXJJZDsKKwl9CisKKwlwdWJsaWMgQm9vbGVhbiBnZXRJc0ZvbGRlcigpIHsKKwkJcmV0dXJuIGlzRm9sZGVyOworCX0KKworCXB1YmxpYyB2b2lkIHNldElzRm9sZGVyKEJvb2xlYW4gaXNGb2xkZXIpIHsKKwkJdGhpcy5pc0ZvbGRlciA9IGlzRm9sZGVyOworCX0KKworCXB1YmxpYyBCb29sZWFuIGdldElzSW1hZ2UoKSB7CisJCXJldHVybiBpc0ltYWdlOworCX0KKworCXB1YmxpYyB2b2lkIHNldElzSW1hZ2UoQm9vbGVhbiBpc0ltYWdlKSB7CisJCXRoaXMuaXNJbWFnZSA9IGlzSW1hZ2U7CisJfQorCisJcHVibGljIEJvb2xlYW4gZ2V0SXNQcmVzZW50YXRpb24oKSB7CisJCXJldHVybiBpc1ByZXNlbnRhdGlvbjsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRJc1ByZXNlbnRhdGlvbihCb29sZWFuIGlzUHJlc2VudGF0aW9uKSB7CisJCXRoaXMuaXNQcmVzZW50YXRpb24gPSBpc1ByZXNlbnRhdGlvbjsKKwl9CisKKwlwdWJsaWMgQm9vbGVhbiBnZXRJc1JlY29yZGluZygpIHsKKwkJcmV0dXJuIGlzUmVjb3JkaW5nOworCX0KKworCXB1YmxpYyB2b2lkIHNldElzUmVjb3JkaW5nKEJvb2xlYW4gaXNSZWNvcmRpbmcpIHsKKwkJdGhpcy5pc1JlY29yZGluZyA9IGlzUmVjb3JkaW5nOworCX0KKworCXB1YmxpYyBEYXRlIGdldFJlY29yZFN0YXJ0KCkgeworCQlyZXR1cm4gcmVjb3JkU3RhcnQ7CisJfQorCisJcHVibGljIHZvaWQgc2V0UmVjb3JkU3RhcnQoRGF0ZSByZWNvcmRTdGFydCkgeworCQl0aGlzLnJlY29yZFN0YXJ0ID0gcmVjb3JkU3RhcnQ7CisJfQorCisJcHVibGljIERhdGUgZ2V0UmVjb3JkRW5kKCkgeworCQlyZXR1cm4gcmVjb3JkRW5kOworCX0KKworCXB1YmxpYyB2b2lkIHNldFJlY29yZEVuZChEYXRlIHJlY29yZEVuZCkgeworCQl0aGlzLnJlY29yZEVuZCA9IHJlY29yZEVuZDsKKwl9CisKKwlwdWJsaWMgTG9uZyBnZXRJbnNlcnRlZEJ5KCkgeworCQlyZXR1cm4gaW5zZXJ0ZWRCeTsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRJbnNlcnRlZEJ5KExvbmcgaW5zZXJ0ZWRCeSkgeworCQl0aGlzLmluc2VydGVkQnkgPSBpbnNlcnRlZEJ5OworCX0KKworCXB1YmxpYyBEYXRlIGdldEluc2VydGVkKCkgeworCQlyZXR1cm4gaW5zZXJ0ZWQ7CisJfQorCisJcHVibGljIHZvaWQgc2V0SW5zZXJ0ZWQoRGF0ZSBpbnNlcnRlZCkgeworCQl0aGlzLmluc2VydGVkID0gaW5zZXJ0ZWQ7CisJfQorCisJcHVibGljIERhdGUgZ2V0VXBkYXRlZCgpIHsKKwkJcmV0dXJuIHVwZGF0ZWQ7CisJfQorCisJcHVibGljIHZvaWQgc2V0VXBkYXRlZChEYXRlIHVwZGF0ZWQpIHsKKwkJdGhpcy51cGRhdGVkID0gdXBkYXRlZDsKKwl9CisKKwlwdWJsaWMgYm9vbGVhbiBnZXREZWxldGVkKCkgeworCQlyZXR1cm4gZGVsZXRlZDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXREZWxldGVkKGJvb2xlYW4gZGVsZXRlZCkgeworCQl0aGlzLmRlbGV0ZWQgPSBkZWxldGVkOworCX0KKworCXB1YmxpYyBJbnRlZ2VyIGdldFdpZHRoKCkgeworCQlyZXR1cm4gd2lkdGg7CisJfQorCisJcHVibGljIHZvaWQgc2V0V2lkdGgoSW50ZWdlciB3aWR0aCkgeworCQl0aGlzLndpZHRoID0gd2lkdGg7CisJfQorCisJcHVibGljIEludGVnZXIgZ2V0SGVpZ2h0KCkgeworCQlyZXR1cm4gaGVpZ2h0OworCX0KKworCXB1YmxpYyB2b2lkIHNldEhlaWdodChJbnRlZ2VyIGhlaWdodCkgeworCQl0aGlzLmhlaWdodCA9IGhlaWdodDsKKwl9CisKKwlwdWJsaWMgSW50ZWdlciBnZXRGbHZXaWR0aCgpIHsKKwkJcmV0dXJuIGZsdldpZHRoOworCX0KKworCXB1YmxpYyB2b2lkIHNldEZsdldpZHRoKEludGVnZXIgZmx2V2lkdGgpIHsKKwkJdGhpcy5mbHZXaWR0aCA9IGZsdldpZHRoOworCX0KKworCXB1YmxpYyBJbnRlZ2VyIGdldEZsdkhlaWdodCgpIHsKKwkJcmV0dXJuIGZsdkhlaWdodDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRGbHZIZWlnaHQoSW50ZWdlciBmbHZIZWlnaHQpIHsKKwkJdGhpcy5mbHZIZWlnaHQgPSBmbHZIZWlnaHQ7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRQcmV2aWV3SW1hZ2UoKSB7CisJCXJldHVybiBwcmV2aWV3SW1hZ2U7CisJfQorCisJcHVibGljIHZvaWQgc2V0UHJldmlld0ltYWdlKFN0cmluZyBwcmV2aWV3SW1hZ2UpIHsKKwkJdGhpcy5wcmV2aWV3SW1hZ2UgPSBwcmV2aWV3SW1hZ2U7CisJfQorCisJcHVibGljIExvbmcgZ2V0RmlsZVNpemUoKSB7CisJCXJldHVybiBmaWxlU2l6ZTsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRGaWxlU2l6ZShMb25nIGZpbGVTaXplKSB7CisJCXRoaXMuZmlsZVNpemUgPSBmaWxlU2l6ZTsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGdldFJlY29yZGVyU3RyZWFtSWQoKSB7CisJCXJldHVybiByZWNvcmRlclN0cmVhbUlkOworCX0KKworCXB1YmxpYyB2b2lkIHNldFJlY29yZGVyU3RyZWFtSWQoU3RyaW5nIHJlY29yZGVyU3RyZWFtSWQpIHsKKwkJdGhpcy5yZWNvcmRlclN0cmVhbUlkID0gcmVjb3JkZXJTdHJlYW1JZDsKKwl9CisKKwlwdWJsaWMgTG9uZyBnZXRPcmdhbml6YXRpb25faWQoKSB7CisJCXJldHVybiBvcmdhbml6YXRpb25faWQ7CisJfQorCisJcHVibGljIHZvaWQgc2V0T3JnYW5pemF0aW9uX2lkKExvbmcgb3JnYW5pemF0aW9uSWQpIHsKKwkJb3JnYW5pemF0aW9uX2lkID0gb3JnYW5pemF0aW9uSWQ7CisJfQorCisJcHVibGljIEJvb2xlYW4gZ2V0SXNJbnRlcnZpZXcoKSB7CisJCXJldHVybiBpc0ludGVydmlldzsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRJc0ludGVydmlldyhCb29sZWFuIGlzSW50ZXJ2aWV3KSB7CisJCXRoaXMuaXNJbnRlcnZpZXcgPSBpc0ludGVydmlldzsKKwl9CisKKwlwdWJsaWMgSW50ZWdlciBnZXRQcm9ncmVzc1Bvc3RQcm9jZXNzaW5nKCkgeworCQlyZXR1cm4gcHJvZ3Jlc3NQb3N0UHJvY2Vzc2luZzsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRQcm9ncmVzc1Bvc3RQcm9jZXNzaW5nKEludGVnZXIgcHJvZ3Jlc3NQb3N0UHJvY2Vzc2luZykgeworCQl0aGlzLnByb2dyZXNzUG9zdFByb2Nlc3NpbmcgPSBwcm9ncmVzc1Bvc3RQcm9jZXNzaW5nOworCX0KKwkKKwkKKwkKKwkKKwkKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9heGlzL3NlcnZpY2VzL0ZpbGVJbXBvcnRFcnJvci5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2F4aXMvc2VydmljZXMvRmlsZUltcG9ydEVycm9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGJjMDljNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9heGlzL3NlcnZpY2VzL0ZpbGVJbXBvcnRFcnJvci5qYXZhCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuYXhpcy5zZXJ2aWNlczsKKworcHVibGljIGNsYXNzIEZpbGVJbXBvcnRFcnJvciB7CisJCisJcHJpdmF0ZSBpbnQgZXhpdFZhbHVlID0gMDsKKwlwcml2YXRlIFN0cmluZyBlcnJvciA9ICIiOworCXByaXZhdGUgU3RyaW5nIHByb2Nlc3MgPSAiIjsKKwlwcml2YXRlIFN0cmluZyBjb21tYW5kID0gIiI7CisJCisJcHVibGljIGludCBnZXRFeGl0VmFsdWUoKSB7CisJCXJldHVybiBleGl0VmFsdWU7CisJfQorCXB1YmxpYyB2b2lkIHNldEV4aXRWYWx1ZShpbnQgZXhpdFZhbHVlKSB7CisJCXRoaXMuZXhpdFZhbHVlID0gZXhpdFZhbHVlOworCX0KKwlwdWJsaWMgU3RyaW5nIGdldEVycm9yKCkgeworCQlyZXR1cm4gZXJyb3I7CisJfQorCXB1YmxpYyB2b2lkIHNldEVycm9yKFN0cmluZyBlcnJvcikgeworCQl0aGlzLmVycm9yID0gZXJyb3I7CisJfQorCXB1YmxpYyBTdHJpbmcgZ2V0UHJvY2VzcygpIHsKKwkJcmV0dXJuIHByb2Nlc3M7CisJfQorCXB1YmxpYyB2b2lkIHNldFByb2Nlc3MoU3RyaW5nIHByb2Nlc3MpIHsKKwkJdGhpcy5wcm9jZXNzID0gcHJvY2VzczsKKwl9CisJcHVibGljIFN0cmluZyBnZXRDb21tYW5kKCkgeworCQlyZXR1cm4gY29tbWFuZDsKKwl9CisJcHVibGljIHZvaWQgc2V0Q29tbWFuZChTdHJpbmcgY29tbWFuZCkgeworCQl0aGlzLmNvbW1hbmQgPSBjb21tYW5kOworCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2F4aXMvc2VydmljZXMvRmlsZVdlYlNlcnZpY2UuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9heGlzL3NlcnZpY2VzL0ZpbGVXZWJTZXJ2aWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTAwMjdjMQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9heGlzL3NlcnZpY2VzL0ZpbGVXZWJTZXJ2aWNlLmphdmEKQEAgLTAsMCArMSwxMDQyIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmF4aXMuc2VydmljZXM7CisKK2ltcG9ydCBqYXZhLmlvLkJ1ZmZlcmVkSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5uZXQuVVJMOworaW1wb3J0IGphdmEubmV0LlVSTENvbm5lY3Rpb247CitpbXBvcnQgamF2YS51dGlsLkxpbmtlZEhhc2hNYXA7CisKK2ltcG9ydCBvcmcuYXBhY2hlLmF4aXMyLkF4aXNGYXVsdDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5BdXRoTGV2ZWxVdGlsOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuU2Vzc2lvbmRhdGFEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5maWxlLkZpbGVQcm9jZXNzb3I7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5maWxlLkZpbGVVdGlsczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmZpbGUuZGFvLkZpbGVFeHBsb3Jlckl0ZW1EYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5maWxlLmR0by5GaWxlRXhwbG9yZXJPYmplY3Q7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5maWxlLmR0by5MaWJyYXJ5UHJlc2VudGF0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEudXNlci5Vc2VyTWFuYWdlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kb2N1bWVudHMuTG9hZExpYnJhcnlQcmVzZW50YXRpb247CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZG9jdW1lbnRzLmJlYW5zLkNvbnZlcnRlclByb2Nlc3NSZXN1bHRMaXN0OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmZpbGVzLkZpbGVFeHBsb3Jlckl0ZW07CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlci5Vc2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLk9tRmlsZUhlbHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5TdG9yZWRGaWxlOworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5BdXRvd2lyZWQ7CisKKy8qKgorICogCisgKiBDb250YWlucyBtZXRob2RzIHRvIGltcG9ydCBhbmQgdXBsb2FkIGZpbGVzIGludG8gdGhlIEZpbGVzIHNlY3Rpb24gb2YgdGhlCisgKiBjb25mZXJlbmNlIHJvb20gYW5kIHRoZSBwZXJzb25hbCBkcml2ZSBvZiBhbnkgdXNlcgorICogCisgKiBAYXV0aG9yIHNlYmF3YWduZXIKKyAqIEB3ZWJzZXJ2aWNlIEZpbGVTZXJ2aWNlCisgKiAKKyAqLworcHVibGljIGNsYXNzIEZpbGVXZWJTZXJ2aWNlIHsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoCisJCQlGaWxlV2ViU2VydmljZS5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFNlc3Npb25kYXRhRGFvIHNlc3Npb25kYXRhRGFvOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFVzZXJNYW5hZ2VyIHVzZXJNYW5hZ2VyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEZpbGVFeHBsb3Jlckl0ZW1EYW8gZmlsZUV4cGxvcmVySXRlbURhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBBdXRoTGV2ZWxVdGlsIGF1dGhMZXZlbFV0aWw7CisJQEF1dG93aXJlZAorCXByaXZhdGUgRmlsZVByb2Nlc3NvciBmaWxlUHJvY2Vzc29yOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEZpbGVVdGlscyBmaWxlVXRpbHM7CisKKwkvKioKKwkgKiAKKwkgKiBJbXBvcnQgZmlsZSBmcm9tIGV4dGVybmFsIHNvdXJjZQorCSAqIAorCSAqIHRvIHVwbG9hZCBhIGZpbGUgdG8gYSByb29tLWRyaXZlIHlvdSBzcGVjaWZ5OiBleHRlcm5hbFVzZXJJZCwgdXNlciBpZiBvZgorCSAqIG9wZW5tZWV0aW5ncyB1c2VyIGZvciB3aGljaCB3ZSB1cGxvYWQgdGhlIGZpbGUgcm9vbV9pZCA9IG9wZW5tZWV0aW5ncworCSAqIHJvb20gaWQgaXNPd25lciA9IDAgcGFyZW50Rm9sZGVySWQgPSAwCisJICogCisJICogdG8gdXBsb2FkIGEgZmlsZSB0byBhIHByaXZhdGUtZHJpdmUgeW91IHNwZWNpZnk6IGV4dGVybmFsVXNlcklkLCB1c2VyIGlmCisJICogb2Ygb3Blbm1lZXRpbmdzIHVzZXIgZm9yIHdoaWNoIHdlIHVwbG9hZCB0aGUgZmlsZSByb29tX2lkID0gb3Blbm1lZXRpbmdzCisJICogcm9vbSBpZCBpc093bmVyID0gMSBwYXJlbnRGb2xkZXJJZCA9IC0yCisJICogCisJICogQHBhcmFtIFNJRCBUaGUgbG9nZ2VkIGluIHNlc3Npb24gaWQgd2l0aCBtaW5pbXVtIHdlYnNlcnZpY2UgbGV2ZWwKKwkgKiBAcGFyYW0gZXh0ZXJuYWxVc2VySWQKKwkgKiAgICAgICAgICAgIHRoZSBleHRlcm5hbCB1c2VyIGlkID0mZ3Q7IElmIHRoZSBmaWxlIHNob3VsZCBnb3RvIGEgcHJpdmF0ZQorCSAqICAgICAgICAgICAgc2VjdGlvbiBvZiBhbnkgdXNlciwgdGhpcyBudW1iZXIgbmVlZHMgdG8gYmUgc2V0CisJICogQHBhcmFtIGV4dGVybmFsRmlsZUlkCisJICogICAgICAgICAgICB0aGUgZXh0ZXJuYWwgZmlsZS10eXBlIHRvIGlkZW50aWZ5IHRoZSBmaWxlIGxhdGVyCisJICogQHBhcmFtIGV4dGVybmFsVHlwZQorCSAqICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIGV4dGVybmFsIHN5c3RlbQorCSAqIEBwYXJhbSByb29tX2lkCisJICogICAgICAgICAgICB0aGUgcm9vbSBJZCwgaWYgdGhlIGZpbGUgZ29lcyB0byB0aGUgcHJpdmF0ZSBmb2xkZXIgb2YgYW4KKwkgKiAgICAgICAgICAgIHVzZXIsIHlvdSBjYW4gc2V0IGEgcmFuZG9tIG51bWJlciBoZXJlCisJICogQHBhcmFtIGlzT3duZXIKKwkgKiAgICAgICAgICAgIHNwZWNpZnkgYSAxL3RydWUgQU5EIHBhcmVudEZvbGRlcklkPT0tMiB0byBtYWtlIHRoZSBmaWxlIGdvdG8KKwkgKiAgICAgICAgICAgIHRoZSBwcml2YXRlIHNlY3Rpb24KKwkgKiBAcGFyYW0gcGF0aAorCSAqICAgICAgICAgICAgaHR0cC1wYXRoIHdoZXJlIHdlIGNhbiBncmFiIHRoZSBmaWxlIGZyb20sIHRoZSBmaWxlIGhhcyB0byBiZQorCSAqICAgICAgICAgICAgYWNjZXNzaWJsZSBmcm9tIHRoZSBPcGVuTWVldGluZ3Mgc2VydmVyCisJICogQHBhcmFtIHBhcmVudEZvbGRlcklkCisJICogICAgICAgICAgICBzcGVjaWZ5IGEgcGFyZW50Rm9sZGVySWQ9PS0yIEFORCBpc093bmVyID09IDEvdHJ1ZSBBTkQgdG8gbWFrZQorCSAqICAgICAgICAgICAgdGhlIGZpbGUgZ290byB0aGUgcHJpdmF0ZSBzZWN0aW9uCisJICogQHBhcmFtIGZpbGVTeXN0ZW1OYW1lCisJICogICAgICAgICAgICB0aGUgZmlsZW5hbWUgPSZndDsgSW1wb3J0YW50IFdJVEggZmlsZSBleHRlbnNpb24hCisJICogICAgICAgICAgICAKKwkgKiBAcmV0dXJuIC0gYXJyYXkgb2YgZmlsZSBpbXBvcnQgZXJyb3JzCisJICogQHRocm93cyBBeGlzRmF1bHQKKwkgKi8KKwlwdWJsaWMgRmlsZUltcG9ydEVycm9yW10gaW1wb3J0RmlsZShTdHJpbmcgU0lELCBTdHJpbmcgZXh0ZXJuYWxVc2VySWQsCisJCQlMb25nIGV4dGVybmFsRmlsZUlkLCBTdHJpbmcgZXh0ZXJuYWxUeXBlLCBMb25nIHJvb21faWQsCisJCQlib29sZWFuIGlzT3duZXIsIFN0cmluZyBwYXRoLCBMb25nIHBhcmVudEZvbGRlcklkLAorCQkJU3RyaW5nIGZpbGVTeXN0ZW1OYW1lKSB0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJdHJ5IHsKKworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyBVc2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrV2ViU2VydmljZUxldmVsKFVzZXJfbGV2ZWwpKSB7CisKKwkJCQlVUkwgdXJsID0gbmV3IFVSTChwYXRoKTsKKwkJCQlVUkxDb25uZWN0aW9uIHVjID0gdXJsLm9wZW5Db25uZWN0aW9uKCk7CisJCQkJSW5wdXRTdHJlYW0gaW5wdXRzdHJlYW0gPSBuZXcgQnVmZmVyZWRJbnB1dFN0cmVhbSgKKwkJCQkJCXVjLmdldElucHV0U3RyZWFtKCkpOworCisJCQkJVXNlciBleHRlcm5hbFVzZXIgPSB1c2VyTWFuYWdlci5nZXRVc2VyQnlFeHRlcm5hbElkQW5kVHlwZSgKKwkJCQkJCWV4dGVybmFsVXNlcklkLCBleHRlcm5hbFR5cGUpOworCisJCQkJTGlua2VkSGFzaE1hcDxTdHJpbmcsIE9iamVjdD4gaHMgPSBuZXcgTGlua2VkSGFzaE1hcDxTdHJpbmcsIE9iamVjdD4oKTsKKwkJCQlocy5wdXQoInVzZXIiLCBleHRlcm5hbFVzZXIpOworCisJCQkJQ29udmVydGVyUHJvY2Vzc1Jlc3VsdExpc3QgcmV0dXJuRXJyb3IgPSBmaWxlUHJvY2Vzc29yCisJCQkJCQkucHJvY2Vzc0ZpbGUoZXh0ZXJuYWxVc2VyLmdldFVzZXJfaWQoKSwgcm9vbV9pZCwKKwkJCQkJCQkJaXNPd25lciwgaW5wdXRzdHJlYW0sIHBhcmVudEZvbGRlcklkLAorCQkJCQkJCQlmaWxlU3lzdGVtTmFtZSwKKwkJCQkJCQkJZXh0ZXJuYWxGaWxlSWQsIGV4dGVybmFsVHlwZSk7CisKKwkJCQkvLyBGbGFzaCBjYW5ub3QgcmVhZCB0aGUgcmVzcG9uc2Ugb2YgYW4gdXBsb2FkCisJCQkJLy8gaHR0cFNlcnZsZXRSZXNwb25zZS5nZXRXcml0ZXIoKS5wcmludChyZXR1cm5FcnJvcik7CisJCQkJaHMucHV0KCJtZXNzYWdlIiwgImxpYnJhcnkiKTsKKwkJCQlocy5wdXQoImFjdGlvbiIsICJuZXdGaWxlIik7CisJCQkJaHMucHV0KCJmaWxlRXhwbG9yZXJJdGVtIiwgZmlsZUV4cGxvcmVySXRlbURhbworCQkJCQkJLmdldEZpbGVFeHBsb3Jlckl0ZW1zQnlJZChyZXR1cm5FcnJvci5nZXRGaWxlRXhwbG9yZXJJdGVtSWQoKSkpOworCQkJCWhzLnB1dCgiZXJyb3IiLCByZXR1cm5FcnJvci5nZXRMb2dNZXNzYWdlKCkpOworCQkJCWhzLnB1dCgiZmlsZU5hbWUiLCByZXR1cm5FcnJvci5nZXRDb21wbGV0ZU5hbWUoKSk7CisJCQkJCisJCQkJLy9GSVhNRTogU2VuZCBldmVudCB0byBVSSB0aGF0IHRoZXJlIGlzIGEgbmV3IGZpbGUKKworCQkJCXJldHVybiByZXR1cm5FcnJvci5jb252ZXJ0VG9GaWxlSW1wb3J0RXJyb3JzKCk7CisKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbaW1wb3J0RmlsZV0iLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCS8qKgorCSAqIEltcG9ydCBmaWxlIGZyb20gZXh0ZXJuYWwgc291cmNlCisJICogCisJICogdG8gdXBsb2FkIGEgZmlsZSB0byBhIHJvb20tZHJpdmUgeW91IHNwZWNpZnk6IGludGVybmFsVXNlcklkLCB1c2VyIGlmIG9mCisJICogb3Blbm1lZXRpbmdzIHVzZXIgZm9yIHdoaWNoIHdlIHVwbG9hZCB0aGUgZmlsZSByb29tX2lkID0gb3Blbm1lZXRpbmdzCisJICogcm9vbSBpZCBpc093bmVyID0gMCBwYXJlbnRGb2xkZXJJZCA9IDAKKwkgKiAKKwkgKiB0byB1cGxvYWQgYSBmaWxlIHRvIGEgcHJpdmF0ZS1kcml2ZSB5b3Ugc3BlY2lmeTogaW50ZXJuYWxVc2VySWQsIHVzZXIgaWYKKwkgKiBvZiBvcGVubWVldGluZ3MgdXNlciBmb3Igd2hpY2ggd2UgdXBsb2FkIHRoZSBmaWxlIHJvb21faWQgPSBvcGVubWVldGluZ3MKKwkgKiByb29tIGlkIGlzT3duZXIgPSAxIHBhcmVudEZvbGRlcklkID0gLTIKKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogICAgICAgICAgICBUaGUgU0lEIG9mIHRoZSBVc2VyLiBUaGlzIFNJRCBtdXN0IGJlIG1hcmtlZCBhcyBsb2dnZWQgaW4KKwkgKiBAcGFyYW0gaW50ZXJuYWxVc2VySWQKKwkgKiAgICAgICAgICAgIHRoZSBvcGVubWVldGluZ3MgdXNlciBpZCA9Jmd0OyBJZiB0aGUgZmlsZSBzaG91bGQgZ290byBhIHByaXZhdGUKKwkgKiAgICAgICAgICAgIHNlY3Rpb24gb2YgYW55IHVzZXIsIHRoaXMgbnVtYmVyIG5lZWRzIHRvIGJlIHNlCisJICogQHBhcmFtIGV4dGVybmFsRmlsZUlkCisJICogICAgICAgICAgICB0aGUgZXh0ZXJuYWwgZmlsZS10eXBlIHRvIGlkZW50aWZ5IHRoZSBmaWxlIGxhdGVyCisJICogQHBhcmFtIGV4dGVybmFsVHlwZQorCSAqICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIGV4dGVybmFsIHN5c3RlbQorCSAqIEBwYXJhbSByb29tX2lkCisJICogICAgICAgICAgICB0aGUgcm9vbSBJZCwgaWYgdGhlIGZpbGUgZ29lcyB0byB0aGUgcHJpdmF0ZSBmb2xkZXIgb2YgYW4KKwkgKiAgICAgICAgICAgIHVzZXIsIHlvdSBjYW4gc2V0IGEgcmFuZG9tIG51bWJlciBoZXJlCisJICogQHBhcmFtIGlzT3duZXIKKwkgKiAgICAgICAgICAgIHNwZWNpZnkgYSAxL3RydWUgQU5EIHBhcmVudEZvbGRlcklkPT0tMiB0byBtYWtlIHRoZSBmaWxlIGdvdG8KKwkgKiAgICAgICAgICAgIHRoZSBwcml2YXRlIHNlY3Rpb24KKwkgKiBAcGFyYW0gcGF0aAorCSAqICAgICAgICAgICAgaHR0cC1wYXRoIHdoZXJlIHdlIGNhbiBncmFiIHRoZSBmaWxlIGZyb20sIHRoZSBmaWxlIGhhcyB0byBiZQorCSAqICAgICAgICAgICAgYWNjZXNzaWJsZSBmcm9tIHRoZSBPcGVuTWVldGluZ3Mgc2VydmVyCisJICogQHBhcmFtIHBhcmVudEZvbGRlcklkCisJICogICAgICAgICAgICBzcGVjaWZ5IGEgcGFyZW50Rm9sZGVySWQ9PS0yIEFORCBpc093bmVyID09IDEvdHJ1ZSBBTkQgdG8gbWFrZQorCSAqICAgICAgICAgICAgdGhlIGZpbGUgZ290byB0aGUgcHJpdmF0ZSBzZWN0aW9uCisJICogQHBhcmFtIGZpbGVTeXN0ZW1OYW1lCisJICogICAgICAgICAgICB0aGUgZmlsZW5hbWUgPSZndDsgSW1wb3J0YW50IFdJVEggZmlsZSBleHRlbnNpb24hCisJICogICAgICAgICAgICAKKwkgKiBAcmV0dXJuIC0gYXJyYXkgb2YgZmlsZSBpbXBvcnQgZXJyb3JzCisJICogQHRocm93cyBBeGlzRmF1bHQKKwkgKi8KKwlwdWJsaWMgRmlsZUltcG9ydEVycm9yW10gaW1wb3J0RmlsZUJ5SW50ZXJuYWxVc2VySWQoU3RyaW5nIFNJRCwKKwkJCUxvbmcgaW50ZXJuYWxVc2VySWQsIExvbmcgZXh0ZXJuYWxGaWxlSWQsIFN0cmluZyBleHRlcm5hbFR5cGUsCisJCQlMb25nIHJvb21faWQsIGJvb2xlYW4gaXNPd25lciwgU3RyaW5nIHBhdGgsIExvbmcgcGFyZW50Rm9sZGVySWQsCisJCQlTdHJpbmcgZmlsZVN5c3RlbU5hbWUpIHRocm93cyBBeGlzRmF1bHQgeworCQl0cnkgeworCisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIFVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tXZWJTZXJ2aWNlTGV2ZWwoVXNlcl9sZXZlbCkpIHsKKworCQkJCVVSTCB1cmwgPSBuZXcgVVJMKHBhdGgpOworCQkJCVVSTENvbm5lY3Rpb24gdWMgPSB1cmwub3BlbkNvbm5lY3Rpb24oKTsKKwkJCQlJbnB1dFN0cmVhbSBpbnB1dHN0cmVhbSA9IG5ldyBCdWZmZXJlZElucHV0U3RyZWFtKAorCQkJCQkJdWMuZ2V0SW5wdXRTdHJlYW0oKSk7CisKKwkJCQlVc2VyIGludGVybmFsVXNlciA9IHVzZXJNYW5hZ2VyLmdldFVzZXJCeUlkKGludGVybmFsVXNlcklkKTsKKworCQkJCUxpbmtlZEhhc2hNYXA8U3RyaW5nLCBPYmplY3Q+IGhzID0gbmV3IExpbmtlZEhhc2hNYXA8U3RyaW5nLCBPYmplY3Q+KCk7CisJCQkJaHMucHV0KCJ1c2VyIiwgaW50ZXJuYWxVc2VyKTsKKworCQkJCUNvbnZlcnRlclByb2Nlc3NSZXN1bHRMaXN0IHJldHVybkVycm9yID0gZmlsZVByb2Nlc3NvcgorCQkJCQkJLnByb2Nlc3NGaWxlKGludGVybmFsVXNlci5nZXRVc2VyX2lkKCksIHJvb21faWQsCisJCQkJCQkJCWlzT3duZXIsIGlucHV0c3RyZWFtLCBwYXJlbnRGb2xkZXJJZCwKKwkJCQkJCQkJZmlsZVN5c3RlbU5hbWUsIAorCQkJCQkJCQlleHRlcm5hbEZpbGVJZCwgZXh0ZXJuYWxUeXBlKTsKKworCQkJCS8vIEZsYXNoIGNhbm5vdCByZWFkIHRoZSByZXNwb25zZSBvZiBhbiB1cGxvYWQKKwkJCQkvLyBodHRwU2VydmxldFJlc3BvbnNlLmdldFdyaXRlcigpLnByaW50KHJldHVybkVycm9yKTsKKwkJCQlocy5wdXQoIm1lc3NhZ2UiLCAibGlicmFyeSIpOworCQkJCWhzLnB1dCgiYWN0aW9uIiwgIm5ld0ZpbGUiKTsKKwkJCQlocy5wdXQoImZpbGVFeHBsb3Jlckl0ZW0iLCBmaWxlRXhwbG9yZXJJdGVtRGFvCisJCQkJCQkuZ2V0RmlsZUV4cGxvcmVySXRlbXNCeUlkKHJldHVybkVycm9yLmdldEZpbGVFeHBsb3Jlckl0ZW1JZCgpKSk7CisJCQkJaHMucHV0KCJlcnJvciIsIHJldHVybkVycm9yKTsKKwkJCQlocy5wdXQoImZpbGVOYW1lIiwgcmV0dXJuRXJyb3IuZ2V0Q29tcGxldGVOYW1lKCkpOworCQkJCQorCQkJCS8vRklYTUU6IE5vdGlmaWNhdGUgVUkgb2YgY2xpZW50cyBvZiBuZXcgZmlsZQorCisJCQkJcmV0dXJuIHJldHVybkVycm9yLmNvbnZlcnRUb0ZpbGVJbXBvcnRFcnJvcnMoKTsKKworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltpbXBvcnRGaWxlQnlJbnRlcm5hbFVzZXJJZF0iLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCS8qKgorCSAqIHRvIGFkZCBhIGZvbGRlciB0byB0aGUgcHJpdmF0ZSBkcml2ZSwgc2V0IHBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCA9IDAKKwkgKiBhbmQgaXNPd25lciB0byAxL3RydWUgYW5kIGV4dGVybmFsVXNlcklkL2V4dGVybmFsVXNlclR5cGUgdG8gYSB2YWxpZCB1c2VyCisJICogCisJICogQHBhcmFtIFNJRAorCSAqICAgICAgICAgICAgVGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgbG9nZ2VkIGluCisJICogQHBhcmFtIGV4dGVybmFsVXNlcklkCisJICogICAgICAgICAgICB0aGUgZXh0ZXJuYWwgZmlsZS10eXBlIHRvIGlkZW50aWZ5IHRoZSBmaWxlIGxhdGVyCisJICogQHBhcmFtIHBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZAorCSAqIEBwYXJhbSBmb2xkZXJOYW1lCisJICogICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgZm9sZGVyCisJICogQHBhcmFtIHJvb21faWQKKwkgKiAgICAgICAgICAgIHRoZSByb29tIElkLCBpZiB0aGUgZmlsZSBnb2VzIHRvIHRoZSBwcml2YXRlIGZvbGRlciBvZiBhbgorCSAqICAgICAgICAgICAgdXNlciwgeW91IGNhbiBzZXQgYSByYW5kb20gbnVtYmVyIGhlcmUKKwkgKiBAcGFyYW0gaXNPd25lcgorCSAqICAgICAgICAgICAgc3BlY2lmeSBhIDEvdHJ1ZSBBTkQgcGFyZW50Rm9sZGVySWQ9PS0yIHRvIG1ha2UgdGhlIGZpbGUgZ290bworCSAqICAgICAgICAgICAgdGhlIHByaXZhdGUgc2VjdGlvbgorCSAqIEBwYXJhbSBleHRlcm5hbEZpbGVzaWQKKwkgKiAgICAgICAgICAgIHRoZSBleHRlcm5hbCBmaWxlLXR5cGUgdG8gaWRlbnRpZnkgdGhlIGZpbGUgbGF0ZXIKKwkgKiBAcGFyYW0gZXh0ZXJuYWxUeXBlCisJICogICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgZXh0ZXJuYWwgc3lzdGVtCisJICogICAgICAgICAgICAKKwkgKiBAcmV0dXJuIC0gaWQgb2YgZm9sZGVyIGFkZGVkCisJICogQHRocm93cyBBeGlzRmF1bHQKKwkgKi8KKwlwdWJsaWMgTG9uZyBhZGRGb2xkZXJCeUV4dGVybmFsVXNlcklkQW5kVHlwZShTdHJpbmcgU0lELAorCQkJU3RyaW5nIGV4dGVybmFsVXNlcklkLCBMb25nIHBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCwKKwkJCVN0cmluZyBmb2xkZXJOYW1lLCBMb25nIHJvb21faWQsIEJvb2xlYW4gaXNPd25lciwKKwkJCUxvbmcgZXh0ZXJuYWxGaWxlc2lkLCBTdHJpbmcgZXh0ZXJuYWxUeXBlKSB0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJdHJ5IHsKKworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyBVc2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrV2ViU2VydmljZUxldmVsKFVzZXJfbGV2ZWwpKSB7CisKKwkJCQlVc2VyIHVzZXJFeHRlcm5hbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJCeUV4dGVybmFsSWRBbmRUeXBlKAorCQkJCQkJZXh0ZXJuYWxVc2VySWQsIGV4dGVybmFsVHlwZSk7CisKKwkJCQlMb25nIHVzZXJJZCA9IHVzZXJFeHRlcm5hbC5nZXRVc2VyX2lkKCk7CisKKwkJCQlsb2cuZGVidWcoImFkZEZvbGRlciAiICsgcGFyZW50RmlsZUV4cGxvcmVySXRlbUlkKTsKKworCQkJCWlmIChwYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQgPT0gLTIgJiYgaXNPd25lcikgeworCQkJCQkvLyB1c2Vyc19pZCAoT3duZXJJRCkgPT4gb25seSBzZXQgaWYgaXRzIGRpcmVjdGx5IHJvb3QgaW4KKwkJCQkJLy8gT3duZXIgRGlyZWN0b3J5LAorCQkJCQkvLyBvdGhlciBGb2xkZXJzIGFuZCBGaWxlcyBtYXliZSBhcmUgYWxzbyBpbiBhIEhvbWUKKwkJCQkJLy8gZGlyZWN0b3J5CisJCQkJCS8vIGJ1dCBqdXN0IGJlY2F1c2UgdGhlaXIgcGFyZW50IGlzCisJCQkJCXJldHVybiBmaWxlRXhwbG9yZXJJdGVtRGFvLmFkZChmb2xkZXJOYW1lLCAiIiwgMEwsIHVzZXJJZCwKKwkJCQkJCQlyb29tX2lkLCB1c2VySWQsIHRydWUsIC8vIGlzRm9sZGVyCisJCQkJCQkJZmFsc2UsIC8vIGlzSW1hZ2UKKwkJCQkJCQlmYWxzZSwgLy8gaXNQcmVzZW50YXRpb24KKwkJCQkJCQkiIiwgLy8gV01MIFBhdGgKKwkJCQkJCQlmYWxzZSwgLy8gaXNTdG9yZWRXTUwgZmlsZQorCQkJCQkJCWZhbHNlLCAvLyBpc1htbEZpbGUKKwkJCQkJCQlleHRlcm5hbEZpbGVzaWQsIGV4dGVybmFsVHlwZSk7CisJCQkJfSBlbHNlIHsKKwkJCQkJcmV0dXJuIGZpbGVFeHBsb3Jlckl0ZW1EYW8uYWRkKGZvbGRlck5hbWUsICIiLAorCQkJCQkJCXBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCwgbnVsbCwgcm9vbV9pZCwgdXNlcklkLAorCQkJCQkJCXRydWUsIC8vIGlzRm9sZGVyCisJCQkJCQkJZmFsc2UsIC8vIGlzSW1hZ2UKKwkJCQkJCQlmYWxzZSwgLy8gaXNQcmVzZW50YXRpb24KKwkJCQkJCQkiIiwgLy8gV01MIFBhdGgKKwkJCQkJCQlmYWxzZSwgLy8gaXNTdG9yZWRXTUwgZmlsZQorCQkJCQkJCWZhbHNlLCAvLyBpc1htbEZpbGUKKwkJCQkJCQlleHRlcm5hbEZpbGVzaWQsIGV4dGVybmFsVHlwZSk7CisJCQkJfQorCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2FkZEZvbGRlckJ5RXh0ZXJuYWxVc2VySWRBbmRUeXBlXSIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLyoqCisJICogdG8gYWRkIGEgZm9sZGVyIHRvIHRoZSBwcml2YXRlIGRyaXZlLCBzZXQgcGFyZW50RmlsZUV4cGxvcmVySXRlbUlkID0gMAorCSAqIGFuZCBpc093bmVyIHRvIDEvdHJ1ZSBhbmQgdXNlcklkIHRvIGEgdmFsaWQgdXNlcgorCSAqIAorCSAqIEBwYXJhbSBTSUQgVGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgbG9nZ2VkIGluCisJICogQHBhcmFtIHVzZXJJZCB0aGUgb3Blbm1lZXRpbmdzIHVzZXIgaWQgCisJICogQHBhcmFtIHBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCBzcGVjaWZ5IGEgcGFyZW50Rm9sZGVySWQ9PS0yIEFORCBpc093bmVyID09IDEvdHJ1ZSBBTkQgdG8gbWFrZSB0aGUgZmlsZSBnb3RvIHRoZSBwcml2YXRlIHNlY3Rpb24gIAorCSAqIEBwYXJhbSBmb2xkZXJOYW1lIHRoZSBuYW1lIG9mIHRoZSBmb2xkZXIgCisJICogQHBhcmFtIHJvb21faWQgdGhlIHJvb20gSWQsIGlmIHRoZSBmaWxlIGdvZXMgdG8gdGhlIHByaXZhdGUgZm9sZGVyIG9mIGFuIHVzZXIsIHlvdSBjYW4gc2V0IGEgcmFuZG9tIG51bWJlciBoZXJlIAorCSAqIEBwYXJhbSBpc093bmVyIHNwZWNpZnkgYSAxL3RydWUgQU5EIHBhcmVudEZvbGRlcklkPT0tMiB0byBtYWtlIHRoZSBmaWxlIGdvdG8gdGhlIHByaXZhdGUgc2VjdGlvbiAKKwkgKiBAcGFyYW0gZXh0ZXJuYWxGaWxlc2lkIHRoZSBleHRlcm5hbCBmaWxlLXR5cGUgdG8gaWRlbnRpZnkgdGhlIGZpbGUgbGF0ZXIgCisJICogQHBhcmFtIGV4dGVybmFsVHlwZSB0aGUgbmFtZSBvZiB0aGUgZXh0ZXJuYWwgc3lzdGVtCisJICogIAorCSAqIEByZXR1cm4gLSBpZCBvZiB0aGUgZm9sZGVyCisJICogQHRocm93cyBBeGlzRmF1bHQKKwkgKi8KKwlwdWJsaWMgTG9uZyBhZGRGb2xkZXJCeVVzZXJJZChTdHJpbmcgU0lELCBMb25nIHVzZXJJZCwKKwkJCUxvbmcgcGFyZW50RmlsZUV4cGxvcmVySXRlbUlkLCBTdHJpbmcgZm9sZGVyTmFtZSwgTG9uZyByb29tX2lkLAorCQkJQm9vbGVhbiBpc093bmVyLCBMb25nIGV4dGVybmFsRmlsZXNpZCwgU3RyaW5nIGV4dGVybmFsVHlwZSkKKwkJCXRocm93cyBBeGlzRmF1bHQgeworCQl0cnkgeworCisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIFVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tXZWJTZXJ2aWNlTGV2ZWwoVXNlcl9sZXZlbCkpIHsKKworCQkJCWxvZy5kZWJ1ZygiYWRkRm9sZGVyICIgKyBwYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQpOworCisJCQkJaWYgKHBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCA9PSAtMiAmJiBpc093bmVyKSB7CisJCQkJCS8vIHVzZXJzX2lkIChPd25lcklEKSA9PiBvbmx5IHNldCBpZiBpdHMgZGlyZWN0bHkgcm9vdCBpbgorCQkJCQkvLyBPd25lciBEaXJlY3RvcnksCisJCQkJCS8vIG90aGVyIEZvbGRlcnMgYW5kIEZpbGVzIG1heWJlIGFyZSBhbHNvIGluIGEgSG9tZQorCQkJCQkvLyBkaXJlY3RvcnkKKwkJCQkJLy8gYnV0IGp1c3QgYmVjYXVzZSB0aGVpciBwYXJlbnQgaXMKKwkJCQkJcmV0dXJuIGZpbGVFeHBsb3Jlckl0ZW1EYW8uYWRkKGZvbGRlck5hbWUsICIiLCAwTCwgdXNlcklkLAorCQkJCQkJCXJvb21faWQsIHVzZXJJZCwgdHJ1ZSwgLy8gaXNGb2xkZXIKKwkJCQkJCQlmYWxzZSwgLy8gaXNJbWFnZQorCQkJCQkJCWZhbHNlLCAvLyBpc1ByZXNlbnRhdGlvbgorCQkJCQkJCSIiLCAvLyBXTUwgUGF0aAorCQkJCQkJCWZhbHNlLCAvLyBpc1N0b3JlZFdNTCBmaWxlCisJCQkJCQkJZmFsc2UsIC8vIGlzWG1sRmlsZQorCQkJCQkJCWV4dGVybmFsRmlsZXNpZCwgZXh0ZXJuYWxUeXBlKTsKKwkJCQl9IGVsc2UgeworCQkJCQlyZXR1cm4gZmlsZUV4cGxvcmVySXRlbURhby5hZGQoZm9sZGVyTmFtZSwgIiIsCisJCQkJCQkJcGFyZW50RmlsZUV4cGxvcmVySXRlbUlkLCBudWxsLCByb29tX2lkLCB1c2VySWQsCisJCQkJCQkJdHJ1ZSwgLy8gaXNGb2xkZXIKKwkJCQkJCQlmYWxzZSwgLy8gaXNJbWFnZQorCQkJCQkJCWZhbHNlLCAvLyBpc1ByZXNlbnRhdGlvbgorCQkJCQkJCSIiLCAvLyBXTUwgUGF0aAorCQkJCQkJCWZhbHNlLCAvLyBpc1N0b3JlZFdNTCBmaWxlCisJCQkJCQkJZmFsc2UsIC8vIGlzWG1sRmlsZQorCQkJCQkJCWV4dGVybmFsRmlsZXNpZCwgZXh0ZXJuYWxUeXBlKTsKKwkJCQl9CisJCQl9CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbYWRkRm9sZGVyQnlVc2VySWRdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvKioKKwkgKiAKKwkgKiBBZGQgYSBmb2xkZXIgYnkgdGhlIGN1cnJlbnQgdXNlciAtIHNpbWlsYXIgdG8gUlRNUCBDYWxsCisJICogCisJICogQHBhcmFtIFNJRAorCSAqICAgICAgICAgICAgVGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgbG9nZ2VkIGluCisJICogQHBhcmFtIHBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZAorCSAqICAgICAgICAgICAgcGFyZW50IGZvbGRlciBpZAorCSAqIEBwYXJhbSBmaWxlTmFtZQorCSAqICAgICAgICAgICAgdGhlIGZpbGUgbmFtZQorCSAqIEBwYXJhbSByb29tX2lkCisJICogICAgICAgICAgICB0aGUgcm9vbSBpZAorCSAqIEBwYXJhbSBpc093bmVyCisJICogQHJldHVybiAtIGlkIG9mIHRoZSBmb2xkZXIKKwkgKi8KKwlwdWJsaWMgTG9uZyBhZGRGb2xkZXJTZWxmKFN0cmluZyBTSUQsIExvbmcgcGFyZW50RmlsZUV4cGxvcmVySXRlbUlkLAorCQkJU3RyaW5nIGZpbGVOYW1lLCBMb25nIHJvb21faWQsIEJvb2xlYW4gaXNPd25lcikgdGhyb3dzIEF4aXNGYXVsdCB7CisJCXRyeSB7CisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrVXNlckxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlsb2cuZGVidWcoImFkZEZvbGRlciAiICsgcGFyZW50RmlsZUV4cGxvcmVySXRlbUlkKTsKKworCQkJCWlmIChwYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQgPT0gMCAmJiBpc093bmVyKSB7CisJCQkJCS8vIHVzZXJzX2lkIChPd25lcklEKSA9PiBvbmx5IHNldCBpZiBpdHMgZGlyZWN0bHkgcm9vdCBpbgorCQkJCQkvLyBPd25lciBEaXJlY3RvcnksCisJCQkJCS8vIG90aGVyIEZvbGRlcnMgYW5kIEZpbGVzIG1heWJlIGFyZSBhbHNvIGluIGEgSG9tZQorCQkJCQkvLyBkaXJlY3RvcnkKKwkJCQkJLy8gYnV0IGp1c3QgYmVjYXVzZSB0aGVpciBwYXJlbnQgaXMKKwkJCQkJcmV0dXJuIGZpbGVFeHBsb3Jlckl0ZW1EYW8uYWRkKGZpbGVOYW1lLCAiIiwKKwkJCQkJCQlwYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQsIHVzZXJzX2lkLCByb29tX2lkLAorCQkJCQkJCXVzZXJzX2lkLCB0cnVlLCAvLyBpc0ZvbGRlcgorCQkJCQkJCWZhbHNlLCAvLyBpc0ltYWdlCisJCQkJCQkJZmFsc2UsIC8vIGlzUHJlc2VudGF0aW9uCisJCQkJCQkJIiIsIC8vIFdNTCBQYXRoCisJCQkJCQkJZmFsc2UsIC8vIGlzU3RvcmVkV01MIGZpbGUKKwkJCQkJCQlmYWxzZSAvLyBpc1htbEZpbGUKKwkJCQkJCQksIDBMLCAiIik7CisJCQkJfSBlbHNlIHsKKwkJCQkJcmV0dXJuIGZpbGVFeHBsb3Jlckl0ZW1EYW8uYWRkKGZpbGVOYW1lLCAiIiwKKwkJCQkJCQlwYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQsIG51bGwsIHJvb21faWQsIHVzZXJzX2lkLAorCQkJCQkJCXRydWUsIC8vIGlzRm9sZGVyCisJCQkJCQkJZmFsc2UsIC8vIGlzSW1hZ2UKKwkJCQkJCQlmYWxzZSwgLy8gaXNQcmVzZW50YXRpb24KKwkJCQkJCQkiIiwgLy8gV01MIFBhaHQKKwkJCQkJCQlmYWxzZSwgLy8gaXNTdG9yZWRXTUwgZmlsZQorCQkJCQkJCWZhbHNlIC8vIGlzWG1sRmlsZQorCQkJCQkJCSwgMEwsICIiKTsKKwkJCQl9CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2dldEZpbGVFeHBsb3JlckJ5UGFyZW50XSAiLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCS8qKgorCSAqIAorCSAqIGRlbGV0ZXMgYSBmaWxlIGJ5IGl0cyBleHRlcm5hbCBJZCBhbmQgdHlwZQorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiAgICAgICAgICAgIFRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIGxvZ2dlZCBpbgorCSAqIEBwYXJhbSBleHRlcm5hbEZpbGVzaWQKKwkgKiAgICAgICAgICAgIHRoZSBvZCBvZiB0aGUgZmlsZSBvciBmb2xkZXIKKwkgKiBAcGFyYW0gZXh0ZXJuYWxUeXBlCisJICogICAgICAgICAgICB0aGUgZXh0ZXJuYWxUeXBlCisJICogQHJldHVybiAtIG51bGwKKwkgKi8KKwlwdWJsaWMgTG9uZyBkZWxldGVGaWxlT3JGb2xkZXJCeUV4dGVybmFsSWRBbmRUeXBlKFN0cmluZyBTSUQsCisJCQlMb25nIGV4dGVybmFsRmlsZXNpZCwgU3RyaW5nIGV4dGVybmFsVHlwZSkgdGhyb3dzIEF4aXNGYXVsdCB7CisKKwkJdHJ5IHsKKworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyBVc2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrV2ViU2VydmljZUxldmVsKFVzZXJfbGV2ZWwpKSB7CisKKwkJCQlmaWxlRXhwbG9yZXJJdGVtRGFvLmRlbGV0ZUZpbGVFeHBsb3Jlckl0ZW1CeUV4dGVybmFsSWRBbmRUeXBlKAorCQkJCQkJZXh0ZXJuYWxGaWxlc2lkLCBleHRlcm5hbFR5cGUpOworCisJCQl9CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbZGVsZXRlRmlsZU9yRm9sZGVyQnlFeHRlcm5hbElkQW5kVHlwZV0iLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCS8qKgorCSAqIAorCSAqIGRlbGV0ZXMgZmlsZXMgb3IgZm9sZGVycyBiYXNlZCBvbiBpdCBpZAorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiAgICAgICAgICAgIFRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIGxvZ2dlZCBpbgorCSAqIEBwYXJhbSBmaWxlRXhwbG9yZXJJdGVtSWQKKwkgKiAgICAgICAgICAgIHRoZSBpZCBvZiB0aGUgZmlsZSBvciBmb2xkZXIKKwkgKiBAcmV0dXJuIC0gbnVsbAorCSAqLworCXB1YmxpYyBMb25nIGRlbGV0ZUZpbGVPckZvbGRlcihTdHJpbmcgU0lELCBMb25nIGZpbGVFeHBsb3Jlckl0ZW1JZCkKKwkJCXRocm93cyBBeGlzRmF1bHQgeworCisJCXRyeSB7CisKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgVXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1dlYlNlcnZpY2VMZXZlbChVc2VyX2xldmVsKSkgeworCisJCQkJZmlsZUV4cGxvcmVySXRlbURhby5kZWxldGVGaWxlRXhwbG9yZXJJdGVtKGZpbGVFeHBsb3Jlckl0ZW1JZCk7CisKKwkJCX0KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltkZWxldGVGaWxlT3JGb2xkZXJdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvKioKKwkgKiAKKwkgKiBkZWxldGVzIGZpbGVzIG9yIGZvbGRlcnMgYmFzZWQgb24gaXQgaWQKKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogICAgICAgICAgICBUaGUgU0lEIG9mIHRoZSBVc2VyLiBUaGlzIFNJRCBtdXN0IGJlIG1hcmtlZCBhcyBsb2dnZWQgaW4KKwkgKiBAcGFyYW0gZmlsZUV4cGxvcmVySXRlbUlkCisJICogICAgICAgICAgICB0aGUgaWQgb2YgdGhlIGZpbGUgb3IgZm9sZGVyCisJICogQHJldHVybiAtIG51bGwKKwkgKi8KKwlwdWJsaWMgTG9uZyBkZWxldGVGaWxlT3JGb2xkZXJTZWxmKFN0cmluZyBTSUQsIExvbmcgZmlsZUV4cGxvcmVySXRlbUlkKQorCQkJdGhyb3dzIEF4aXNGYXVsdCB7CisKKwkJdHJ5IHsKKworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyBVc2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrVXNlckxldmVsKFVzZXJfbGV2ZWwpKSB7CisKKwkJCQkvLyBUT0RPOiBDaGVjayBpZiB1c2VyIGhhcyBhY2Nlc3Mgb3Igbm90IHRvIHRoZSBmaWxlCisKKwkJCQlmaWxlRXhwbG9yZXJJdGVtRGFvLmRlbGV0ZUZpbGVFeHBsb3Jlckl0ZW0oZmlsZUV4cGxvcmVySXRlbUlkKTsKKworCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2RlbGV0ZUZpbGVPckZvbGRlcl0iLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCS8qKgorCSAqIEdldCBhdmFpbGFibGUgaW1wb3J0IEZpbGUgRXh0ZW5zaW9uIGFsbG93ZWQgZHVyaW5nIGltcG9ydAorCSAqIAorCSAqIEByZXR1cm4gdGhlIGFycmF5IG9mIHRoZSBpbXBvcnQgZmlsZSBleHRlbnNpb25zCisJICogQHRocm93cyBBeGlzRmF1bHQKKwkgKi8KKwlwdWJsaWMgU3RyaW5nW10gZ2V0SW1wb3J0RmlsZUV4dGVuc2lvbnMoKSB0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJdHJ5IHsKKworCQkJcmV0dXJuIFN0b3JlZEZpbGUuZ2V0RXh0ZW5zaW9ucygpOworCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2dldEltcG9ydEZpbGVFeHRlbnNpb25zXSIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLyoqCisJICogR2V0IGEgTGlicmFyeVByZXNlbnRhdGlvbi1PYmplY3QgZm9yIGEgY2VydGFpbiBmaWxlCisJICogCisJICogQHBhcmFtIFNJRAorCSAqIEBwYXJhbSBwYXJlbnRGb2xkZXIKKwkgKiAKKwkgKiBAcmV0dXJuIC0gTGlicmFyeVByZXNlbnRhdGlvbi1PYmplY3QgZm9yIGEgY2VydGFpbiBmaWxlCisJICogQHRocm93cyBBeGlzRmF1bHQKKwkgKi8KKwlwdWJsaWMgTGlicmFyeVByZXNlbnRhdGlvbiBnZXRQcmVzZW50YXRpb25QcmV2aWV3RmlsZUV4cGxvcmVyKFN0cmluZyBTSUQsCisJCQlTdHJpbmcgcGFyZW50Rm9sZGVyKSB0aHJvd3MgQXhpc0ZhdWx0IHsKKworCQl0cnkgeworCisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tXZWJTZXJ2aWNlTGV2ZWwodXNlcl9sZXZlbCkpIHsKKworCQkJCUZpbGUgd29ya2luZ19kaXIgPSBuZXcgRmlsZShPbUZpbGVIZWxwZXIuZ2V0VXBsb2FkUHJvZmlsZXNEaXIoKSwgcGFyZW50Rm9sZGVyKTsKKwkJCQlsb2cuZGVidWcoIiMjIyMjIyMjIyMjIyMgd29ya2luZ19kaXIgOiAiICsgd29ya2luZ19kaXIpOworCisJCQkJRmlsZSBmaWxlID0gbmV3IEZpbGUod29ya2luZ19kaXIsIE9tRmlsZUhlbHBlci5saWJyYXJ5RmlsZU5hbWUpOworCisJCQkJaWYgKCFmaWxlLmV4aXN0cygpKSB7CisJCQkJCXRocm93IG5ldyBFeGNlcHRpb24oZmlsZS5nZXRDYW5vbmljYWxQYXRoKCkgKyAiOiBkb2VzIG5vdCBleGlzdCAiKTsKKwkJCQl9CisKKwkJCQlyZXR1cm4gTG9hZExpYnJhcnlQcmVzZW50YXRpb24ucGFyc2VMaWJyYXJ5RmlsZVRvT2JqZWN0KGZpbGUpOworCisJCQl9IGVsc2UgeworCisJCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbigibm90IEF1dGhlbnRpY2F0ZWQiKTsKKworCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCQlsb2cuZXJyb3IoIltnZXRMaXN0T2ZGaWxlc0J5QWJzb2x1dGVQYXRoXSIsIGUpOworCQkJcmV0dXJuIG51bGw7CisJCX0KKworCX0KKworCS8qKgorCSAqIEdldCBhIEZpbGUgRXhwbG9yZXIgT2JqZWN0IGJ5IGEgZ2l2ZW4gUm9vbSBhbmQgb3duZXIgaWQKKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogICAgICAgICAgICBUaGUgU0lEIG9mIHRoZSBVc2VyLiBUaGlzIFNJRCBtdXN0IGJlIG1hcmtlZCBhcyBsb2dnZWQgaW4KKwkgKiBAcGFyYW0gcm9vbV9pZAorCSAqICAgICAgICAgICAgUm9vbSBpZAorCSAqIEBwYXJhbSBvd25lcl9pZAorCSAqICAgICAgICAgICAgT3duZXIgaWQKKwkgKiBAcmV0dXJuIC0gRmlsZSBFeHBsb3JlciBPYmplY3QgYnkgYSBnaXZlbiBSb29tIGFuZCBvd25lciBpZAorCSAqIEB0aHJvd3MgQXhpc0ZhdWx0CisJICovCisJcHVibGljIEZpbGVFeHBsb3Jlck9iamVjdCBnZXRGaWxlRXhwbG9yZXJCeVJvb20oU3RyaW5nIFNJRCwgTG9uZyByb29tX2lkLAorCQkJTG9uZyBvd25lcl9pZCkgdGhyb3dzIEF4aXNGYXVsdCB7CisKKwkJdHJ5IHsKKworCQkJTG9uZyB3ZWJzZXJ2aWNlX3VzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlcgorCQkJCQkuZ2V0VXNlckxldmVsQnlJRCh3ZWJzZXJ2aWNlX3VzZXJzX2lkKTsKKworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tXZWJTZXJ2aWNlTGV2ZWwodXNlcl9sZXZlbCkpIHsKKworCQkJCWxvZy5kZWJ1Zygicm9vbV9pZCAiICsgcm9vbV9pZCk7CisKKwkJCQlGaWxlRXhwbG9yZXJPYmplY3QgZmlsZUV4cGxvcmVyT2JqZWN0ID0gbmV3IEZpbGVFeHBsb3Jlck9iamVjdCgpOworCisJCQkJLy8gSG9tZSBGaWxlIExpc3QKKwkJCQlGaWxlRXhwbG9yZXJJdGVtW10gZkxpc3QgPSBmaWxlRXhwbG9yZXJJdGVtRGFvCisJCQkJCQkuZ2V0RmlsZUV4cGxvcmVySXRlbXNCeU93bmVyKG93bmVyX2lkLCAwTCk7CisKKwkJCQlsb25nIGhvbWVGaWxlU2l6ZSA9IDA7CisKKwkJCQlmb3IgKEZpbGVFeHBsb3Jlckl0ZW0gaG9tZUNoaWxkRXhwbG9yZXJJdGVtIDogZkxpc3QpIHsKKwkJCQkJbG9nLmRlYnVnKCJGaWxlRXhwbG9yZXJJdGVtIGZMaXN0ICIKKwkJCQkJCQkrIGhvbWVDaGlsZEV4cGxvcmVySXRlbS5nZXRGaWxlTmFtZSgpKTsKKwkJCQkJaG9tZUZpbGVTaXplICs9IGZpbGVVdGlscworCQkJCQkJCS5nZXRTaXplT2ZEaXJlY3RvcnlBbmRTdWJzKGhvbWVDaGlsZEV4cGxvcmVySXRlbSk7CisJCQkJfQorCisJCQkJZmlsZUV4cGxvcmVyT2JqZWN0LnNldFVzZXJIb21lKGZMaXN0KTsKKwkJCQlmaWxlRXhwbG9yZXJPYmplY3Quc2V0VXNlckhvbWVTaXplKGhvbWVGaWxlU2l6ZSk7CisKKwkJCQkvLyBQdWJsaWMgRmlsZSBMaXN0CisJCQkJRmlsZUV4cGxvcmVySXRlbVtdIHJMaXN0ID0gZmlsZUV4cGxvcmVySXRlbURhbworCQkJCQkJLmdldEZpbGVFeHBsb3Jlckl0ZW1zQnlSb29tKHJvb21faWQsIDBMKTsKKworCQkJCWxvbmcgcm9vbUZpbGVTaXplID0gMDsKKworCQkJCWZvciAoRmlsZUV4cGxvcmVySXRlbSBob21lQ2hpbGRFeHBsb3Jlckl0ZW0gOiByTGlzdCkgeworCQkJCQlsb2cuZGVidWcoIkZpbGVFeHBsb3Jlckl0ZW0gckxpc3QgIgorCQkJCQkJCSsgaG9tZUNoaWxkRXhwbG9yZXJJdGVtLmdldEZpbGVOYW1lKCkpOworCQkJCQlyb29tRmlsZVNpemUgKz0gZmlsZVV0aWxzCisJCQkJCQkJLmdldFNpemVPZkRpcmVjdG9yeUFuZFN1YnMoaG9tZUNoaWxkRXhwbG9yZXJJdGVtKTsKKwkJCQl9CisKKwkJCQlmaWxlRXhwbG9yZXJPYmplY3Quc2V0Um9vbUhvbWUockxpc3QpOworCQkJCWZpbGVFeHBsb3Jlck9iamVjdC5zZXRSb29tSG9tZVNpemUocm9vbUZpbGVTaXplKTsKKworCQkJCXJldHVybiBmaWxlRXhwbG9yZXJPYmplY3Q7CisKKwkJCX0gZWxzZSB7CisKKwkJCQl0aHJvdyBuZXcgRXhjZXB0aW9uKCJub3QgQXV0aGVudGljYXRlZCIpOworCisJCQl9CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCWxvZy5lcnJvcigiW2dldEZpbGVFeHBsb3JlckJ5Um9vbV0iLCBlKTsKKwkJCXJldHVybiBudWxsOworCQl9CisJfQorCisJLyoqCisJICogR2V0IGEgRmlsZSBFeHBsb3JlciBPYmplY3QgYnkgYSBnaXZlbiBSb29tCisJICogCisJICogQHBhcmFtIFNJRAorCSAqICAgICAgICAgICAgVGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgbG9nZ2VkIGluCisJICogQHBhcmFtIHJvb21faWQKKwkgKiAgICAgICAgICAgIFJvb20gSWQKKwkgKiBAcmV0dXJuIC0gRmlsZSBFeHBsb3JlciBPYmplY3QgYnkgYSBnaXZlbiBSb29tCisJICogQHRocm93cyBBeGlzRmF1bHQKKwkgKi8KKwlwdWJsaWMgRmlsZUV4cGxvcmVyT2JqZWN0IGdldEZpbGVFeHBsb3JlckJ5Um9vbVNlbGYoU3RyaW5nIFNJRCwgTG9uZyByb29tX2lkKQorCQkJdGhyb3dzIEF4aXNGYXVsdCB7CisKKwkJdHJ5IHsKKworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrVXNlckxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlsb2cuZGVidWcoInJvb21faWQgIiArIHJvb21faWQpOworCisJCQkJRmlsZUV4cGxvcmVyT2JqZWN0IGZpbGVFeHBsb3Jlck9iamVjdCA9IG5ldyBGaWxlRXhwbG9yZXJPYmplY3QoKTsKKworCQkJCS8vIEhvbWUgRmlsZSBMaXN0CisJCQkJRmlsZUV4cGxvcmVySXRlbVtdIGZMaXN0ID0gZmlsZUV4cGxvcmVySXRlbURhbworCQkJCQkJLmdldEZpbGVFeHBsb3Jlckl0ZW1zQnlPd25lcih1c2Vyc19pZCwgMEwpOworCisJCQkJbG9uZyBob21lRmlsZVNpemUgPSAwOworCisJCQkJZm9yIChGaWxlRXhwbG9yZXJJdGVtIGhvbWVDaGlsZEV4cGxvcmVySXRlbSA6IGZMaXN0KSB7CisJCQkJCWxvZy5kZWJ1ZygiRmlsZUV4cGxvcmVySXRlbSBmTGlzdCAiCisJCQkJCQkJKyBob21lQ2hpbGRFeHBsb3Jlckl0ZW0uZ2V0RmlsZU5hbWUoKSk7CisJCQkJCWhvbWVGaWxlU2l6ZSArPSBmaWxlVXRpbHMKKwkJCQkJCQkuZ2V0U2l6ZU9mRGlyZWN0b3J5QW5kU3Vicyhob21lQ2hpbGRFeHBsb3Jlckl0ZW0pOworCQkJCX0KKworCQkJCWZpbGVFeHBsb3Jlck9iamVjdC5zZXRVc2VySG9tZShmTGlzdCk7CisJCQkJZmlsZUV4cGxvcmVyT2JqZWN0LnNldFVzZXJIb21lU2l6ZShob21lRmlsZVNpemUpOworCisJCQkJLy8gUHVibGljIEZpbGUgTGlzdAorCQkJCUZpbGVFeHBsb3Jlckl0ZW1bXSByTGlzdCA9IGZpbGVFeHBsb3Jlckl0ZW1EYW8KKwkJCQkJCS5nZXRGaWxlRXhwbG9yZXJJdGVtc0J5Um9vbShyb29tX2lkLCAwTCk7CisKKwkJCQlsb25nIHJvb21GaWxlU2l6ZSA9IDA7CisKKwkJCQlmb3IgKEZpbGVFeHBsb3Jlckl0ZW0gaG9tZUNoaWxkRXhwbG9yZXJJdGVtIDogckxpc3QpIHsKKwkJCQkJbG9nLmRlYnVnKCJGaWxlRXhwbG9yZXJJdGVtIHJMaXN0ICIKKwkJCQkJCQkrIGhvbWVDaGlsZEV4cGxvcmVySXRlbS5nZXRGaWxlTmFtZSgpKTsKKwkJCQkJcm9vbUZpbGVTaXplICs9IGZpbGVVdGlscworCQkJCQkJCS5nZXRTaXplT2ZEaXJlY3RvcnlBbmRTdWJzKGhvbWVDaGlsZEV4cGxvcmVySXRlbSk7CisJCQkJfQorCisJCQkJZmlsZUV4cGxvcmVyT2JqZWN0LnNldFJvb21Ib21lKHJMaXN0KTsKKwkJCQlmaWxlRXhwbG9yZXJPYmplY3Quc2V0Um9vbUhvbWVTaXplKHJvb21GaWxlU2l6ZSk7CisKKwkJCQlyZXR1cm4gZmlsZUV4cGxvcmVyT2JqZWN0OworCisJCQl9IGVsc2UgeworCisJCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbigibm90IEF1dGhlbnRpY2F0ZWQiKTsKKworCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCQlsb2cuZXJyb3IoIltnZXRGaWxlRXhwbG9yZXJCeVJvb21TZWxmXSIsIGUpOworCQkJcmV0dXJuIG51bGw7CisJCX0KKwl9CisKKwkvKioKKwkgKiBHZXQgRmlsZUV4cGxvcmVySXRlbSBsaXN0IGJ5IHBhcmVudCBmb2xkZXIKKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogICAgICAgICAgICBUaGUgU0lEIG9mIHRoZSBVc2VyLiBUaGlzIFNJRCBtdXN0IGJlIG1hcmtlZCBhcyBsb2dnZWQgaW4KKwkgKiBAcGFyYW0gcGFyZW50RmlsZUV4cGxvcmVySXRlbUlkCisJICogICAgICAgICAgICB0aGUgcGFyZW50IGZvbGRlciBpZAorCSAqIEBwYXJhbSByb29tX2lkCisJICogICAgICAgICAgICB0aGUgcm9vbSBpZAorCSAqIEBwYXJhbSBpc093bmVyCisJICogICAgICAgICAgICB0cnVlIGlmIGl0cyBhIHByaXZhdGUgZHJpdmUKKwkgKiBAcGFyYW0gb3duZXJfaWQKKwkgKiAgICAgICAgICAgIHRoZSBvd25lciBpZAorCSAqIEByZXR1cm4gLSBGaWxlRXhwbG9yZXJJdGVtIGxpc3QgYnkgcGFyZW50IGZvbGRlcgorCSAqIEB0aHJvd3MgQXhpc0ZhdWx0CisJICovCisJcHVibGljIEZpbGVFeHBsb3Jlckl0ZW1bXSBnZXRGaWxlRXhwbG9yZXJCeVBhcmVudChTdHJpbmcgU0lELAorCQkJTG9uZyBwYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQsIExvbmcgcm9vbV9pZCwgQm9vbGVhbiBpc093bmVyLAorCQkJTG9uZyBvd25lcl9pZCkgdGhyb3dzIEF4aXNGYXVsdCB7CisKKwkJdHJ5IHsKKworCQkJTG9uZyB3ZWJzZXJ2aWNlX3VzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlcgorCQkJCQkuZ2V0VXNlckxldmVsQnlJRCh3ZWJzZXJ2aWNlX3VzZXJzX2lkKTsKKworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tXZWJTZXJ2aWNlTGV2ZWwodXNlcl9sZXZlbCkpIHsKKworCQkJCWxvZy5kZWJ1ZygicGFyZW50RmlsZUV4cGxvcmVySXRlbUlkICIKKwkJCQkJCSsgcGFyZW50RmlsZUV4cGxvcmVySXRlbUlkKTsKKworCQkJCWlmIChwYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQgPT0gMCkgeworCQkJCQlpZiAoaXNPd25lcikgeworCQkJCQkJcmV0dXJuIGZpbGVFeHBsb3Jlckl0ZW1EYW8uZ2V0RmlsZUV4cGxvcmVySXRlbXNCeU93bmVyKAorCQkJCQkJCQlvd25lcl9pZCwgcGFyZW50RmlsZUV4cGxvcmVySXRlbUlkKTsKKwkJCQkJfSBlbHNlIHsKKwkJCQkJCXJldHVybiBmaWxlRXhwbG9yZXJJdGVtRGFvLmdldEZpbGVFeHBsb3Jlckl0ZW1zQnlSb29tKAorCQkJCQkJCQlyb29tX2lkLCBwYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQpOworCQkJCQl9CisJCQkJfSBlbHNlIHsKKwkJCQkJcmV0dXJuIGZpbGVFeHBsb3Jlckl0ZW1EYW8KKwkJCQkJCQkuZ2V0RmlsZUV4cGxvcmVySXRlbXNCeVBhcmVudChwYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQpOworCQkJCX0KKworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRGaWxlRXhwbG9yZXJCeVBhcmVudF0gIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvKioKKwkgKiAKKwkgKiBHZXQgRmlsZUV4cGxvcmVySXRlbVtdIGJ5IHBhcmVudCBhbmQgb3duZXIgaWQKKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogICAgICAgICAgICBTSUQgVGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgbG9nZ2VkIGluCisJICogQHBhcmFtIHBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZAorCSAqICAgICAgICAgICAgdGhlIHBhcmVudCBmb2xkZXIgaWQKKwkgKiBAcGFyYW0gcm9vbV9pZAorCSAqICAgICAgICAgICAgdGhlIHJvb20gaWQKKwkgKiBAcGFyYW0gaXNPd25lcgorCSAqICAgICAgICAgICAgdHJ1ZSB0byByZXF1ZXN0IHByaXZhdGUgZHJpdmUKKwkgKiBAcmV0dXJuIC0gbGlzdCBvZiBmaWxlIGV4cGxvcmVyIGl0ZW1zCisJICogQHRocm93cyBBeGlzRmF1bHQKKwkgKi8KKwlwdWJsaWMgRmlsZUV4cGxvcmVySXRlbVtdIGdldEZpbGVFeHBsb3JlckJ5UGFyZW50U2VsZihTdHJpbmcgU0lELAorCQkJTG9uZyBwYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQsIExvbmcgcm9vbV9pZCwgQm9vbGVhbiBpc093bmVyKQorCQkJdGhyb3dzIEF4aXNGYXVsdCB7CisKKwkJdHJ5IHsKKworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrVXNlckxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlsb2cuZGVidWcoInBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCAiCisJCQkJCQkrIHBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCk7CisKKwkJCQlpZiAocGFyZW50RmlsZUV4cGxvcmVySXRlbUlkID09IDApIHsKKwkJCQkJaWYgKGlzT3duZXIpIHsKKwkJCQkJCXJldHVybiBmaWxlRXhwbG9yZXJJdGVtRGFvLmdldEZpbGVFeHBsb3Jlckl0ZW1zQnlPd25lcigKKwkJCQkJCQkJdXNlcnNfaWQsIHBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCk7CisJCQkJCX0gZWxzZSB7CisJCQkJCQlyZXR1cm4gZmlsZUV4cGxvcmVySXRlbURhby5nZXRGaWxlRXhwbG9yZXJJdGVtc0J5Um9vbSgKKwkJCQkJCQkJcm9vbV9pZCwgcGFyZW50RmlsZUV4cGxvcmVySXRlbUlkKTsKKwkJCQkJfQorCQkJCX0gZWxzZSB7CisJCQkJCXJldHVybiBmaWxlRXhwbG9yZXJJdGVtRGFvCisJCQkJCQkJLmdldEZpbGVFeHBsb3Jlckl0ZW1zQnlQYXJlbnQocGFyZW50RmlsZUV4cGxvcmVySXRlbUlkKTsKKwkJCQl9CisKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbZ2V0RmlsZUV4cGxvcmVyQnlQYXJlbnRTZWxmXSAiLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCS8qKgorCSAqIHVwZGF0ZSBhIGZpbGUgb3IgZm9sZGVyIG5hbWUKKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogICAgICAgICAgICBTSUQgVGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgbG9nZ2VkIGluCisJICogQHBhcmFtIGZpbGVFeHBsb3Jlckl0ZW1JZAorCSAqICAgICAgICAgICAgZmlsZSBvciBmb2xkZXIgaWQKKwkgKiBAcGFyYW0gZmlsZU5hbWUKKwkgKiAgICAgICAgICAgIG5ldyBmaWxlIG9yIGZvbGRlciBuYW1lCisJICogQHJldHVybiAtIG51bGwKKwkgKiBAdGhyb3dzIEF4aXNGYXVsdAorCSAqLworCXB1YmxpYyBMb25nIHVwZGF0ZUZpbGVPckZvbGRlck5hbWUoU3RyaW5nIFNJRCwgTG9uZyBmaWxlRXhwbG9yZXJJdGVtSWQsCisJCQlTdHJpbmcgZmlsZU5hbWUpIHRocm93cyBBeGlzRmF1bHQgeworCisJCXRyeSB7CisKKwkJCUxvbmcgd2Vic2VydmljZV91c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIKKwkJCQkJLmdldFVzZXJMZXZlbEJ5SUQod2Vic2VydmljZV91c2Vyc19pZCk7CisKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrV2ViU2VydmljZUxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlsb2cuZGVidWcoImRlbGV0ZUZpbGVPckZvbGRlciAiICsgZmlsZUV4cGxvcmVySXRlbUlkKTsKKworCQkJCWZpbGVFeHBsb3Jlckl0ZW1EYW8udXBkYXRlRmlsZU9yRm9sZGVyTmFtZShmaWxlRXhwbG9yZXJJdGVtSWQsCisJCQkJCQlmaWxlTmFtZSk7CisKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbdXBkYXRlRmlsZU9yRm9sZGVyTmFtZV0gIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvKioKKwkgKiAKKwkgKiB1cGRhdGUgYSBmaWxlIG9yIGZvbGRlciBuYW1lCisJICogCisJICogQHBhcmFtIFNJRAorCSAqICAgICAgICAgICAgU0lEIFRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIGxvZ2dlZCBpbgorCSAqIEBwYXJhbSBmaWxlRXhwbG9yZXJJdGVtSWQKKwkgKiAgICAgICAgICAgIGZpbGUgb3IgZm9sZGVyIGlkCisJICogQHBhcmFtIGZpbGVOYW1lCisJICogICAgICAgICAgICBuZXcgZmlsZSBvciBmb2xkZXIgbmFtZQorCSAqIEByZXR1cm4gLSBudWxsCisJICogQHRocm93cyBBeGlzRmF1bHQKKwkgKi8KKwlwdWJsaWMgTG9uZyB1cGRhdGVGaWxlT3JGb2xkZXJOYW1lU2VsZihTdHJpbmcgU0lELCBMb25nIGZpbGVFeHBsb3Jlckl0ZW1JZCwKKwkJCVN0cmluZyBmaWxlTmFtZSkgdGhyb3dzIEF4aXNGYXVsdCB7CisKKwkJdHJ5IHsKKworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrVXNlckxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQkvLyBUT0RPOiBjaGVjayBpZiB0aGlzIHVzZXIgaXMgYWxsb3dlZCB0byBjaGFuZ2UgdGhpcyBmaWxlCisJCQkJLyoKKwkJCQkgKiBGaWxlRXhwbG9yZXJJdGVtIGZpbGVFeEl0ZW0gPQorCQkJCSAqIGZpbGVFeHBsb3Jlckl0ZW1EYW8uZ2V0RmlsZUV4cGxvcmVySXRlbXNCeUlkCisJCQkJICogKGZpbGVFeHBsb3Jlckl0ZW1JZCk7CisJCQkJICogCisJCQkJICogaWYgKGZpbGVFeEl0ZW0uZ2V0T3duZXJJZCgpICE9IG51bGwgJiYKKwkJCQkgKiAhZmlsZUV4SXRlbS5nZXRPd25lcklkKCkuZXF1YWxzKHVzZXJzX2lkKSkgeyB0aHJvdyBuZXcKKwkJCQkgKiBFeGNlcHRpb24oCisJCQkJICogIlRoaXMgdXNlciBpcyBub3QgdGhlIG93bmVyIG9mIHRoZSBmaWxlIGFuZCBub3QgYWxsb3dlZCB0byBlZGl0IGl0cyBuYW1lIgorCQkJCSAqICk7IH0KKwkJCQkgKi8KKworCQkJCWxvZy5kZWJ1ZygiZGVsZXRlRmlsZU9yRm9sZGVyICIgKyBmaWxlRXhwbG9yZXJJdGVtSWQpOworCisJCQkJZmlsZUV4cGxvcmVySXRlbURhby51cGRhdGVGaWxlT3JGb2xkZXJOYW1lKGZpbGVFeHBsb3Jlckl0ZW1JZCwKKwkJCQkJCWZpbGVOYW1lKTsKKworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIlt1cGRhdGVGaWxlT3JGb2xkZXJOYW1lU2VsZl0gIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvKioKKwkgKiBtb3ZlIGEgZmlsZSBvciBmb2xkZXIKKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogICAgICAgICAgICBTSUQgVGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgbG9nZ2VkIGluCisJICogQHBhcmFtIGZpbGVFeHBsb3Jlckl0ZW1JZAorCSAqICAgICAgICAgICAgY3VycmVudCBmaWxlIG9yIGZvbGRlciBpZCB0byBiZSBtb3ZlZAorCSAqIEBwYXJhbSBuZXdQYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQKKwkgKiAgICAgICAgICAgIG5ldyBwYXJlbnQgZm9sZGVyIGlkCisJICogQHBhcmFtIHJvb21faWQKKwkgKiAgICAgICAgICAgIHJvb20gaWQKKwkgKiBAcGFyYW0gaXNPd25lcgorCSAqICAgICAgICAgICAgaWYgdHJ1ZSBvd25lciBpZCB3aWxsIGJlIHNldAorCSAqIEBwYXJhbSBtb3ZlVG9Ib21lCisJICogICAgICAgICAgICBpZiB0cnVlIG1vdmUgdG8gcHJpdmF0ZSBkcml2ZQorCSAqIEBwYXJhbSBvd25lcl9pZAorCSAqICAgICAgICAgICAgb3duZXIgaWQKKwkgKiBAcmV0dXJuIC0gbnVsbAorCSAqIEB0aHJvd3MgQXhpc0ZhdWx0CisJICovCisJcHVibGljIExvbmcgbW92ZUZpbGUoU3RyaW5nIFNJRCwgTG9uZyBmaWxlRXhwbG9yZXJJdGVtSWQsCisJCQlMb25nIG5ld1BhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCwgTG9uZyByb29tX2lkLCBCb29sZWFuIGlzT3duZXIsCisJCQlCb29sZWFuIG1vdmVUb0hvbWUsIExvbmcgb3duZXJfaWQpIHRocm93cyBBeGlzRmF1bHQgeworCisJCXRyeSB7CisKKwkJCUxvbmcgd2Vic2VydmljZV91c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIKKwkJCQkJLmdldFVzZXJMZXZlbEJ5SUQod2Vic2VydmljZV91c2Vyc19pZCk7CisKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrV2ViU2VydmljZUxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlsb2cuZGVidWcoImRlbGV0ZUZpbGVPckZvbGRlciAiICsgZmlsZUV4cGxvcmVySXRlbUlkKTsKKworCQkJCWZpbGVFeHBsb3Jlckl0ZW1EYW8KKwkJCQkJCS5tb3ZlRmlsZShmaWxlRXhwbG9yZXJJdGVtSWQsCisJCQkJCQkJCW5ld1BhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCwgcm9vbV9pZCwgaXNPd25lciwKKwkJCQkJCQkJb3duZXJfaWQpOworCisJCQkJRmlsZUV4cGxvcmVySXRlbSBmaWxlRXhwbG9yZXJJdGVtID0gZmlsZUV4cGxvcmVySXRlbURhbworCQkJCQkJLmdldEZpbGVFeHBsb3Jlckl0ZW1zQnlJZChmaWxlRXhwbG9yZXJJdGVtSWQpOworCisJCQkJaWYgKG1vdmVUb0hvbWUpIHsKKwkJCQkJLy8gc2V0IHRoaXMgZmlsZSBhbmQgYWxsIHN1YmZpbGVzIGFuZCBmb2xkZXJzIHRoZSBvd25lcklkCisJCQkJCWZpbGVVdGlscy5zZXRGaWxlVG9Pd25lck9yUm9vbUJ5UGFyZW50KGZpbGVFeHBsb3Jlckl0ZW0sCisJCQkJCQkJb3duZXJfaWQsIG51bGwpOworCisJCQkJfSBlbHNlIHsKKwkJCQkJLy8gc2V0IHRoaXMgZmlsZSBhbmQgYWxsIHN1YmZpbGVzIGFuZCBmb2xkZXJzIHRoZSByb29tX2lkCisJCQkJCWZpbGVVdGlscy5zZXRGaWxlVG9Pd25lck9yUm9vbUJ5UGFyZW50KGZpbGVFeHBsb3Jlckl0ZW0sCisJCQkJCQkJbnVsbCwgcm9vbV9pZCk7CisKKwkJCQl9CisKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbbW92ZUZpbGVdICIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLyoqCisJICogbW92ZSBhIGZpbGUgb3IgZm9sZGVyCisJICogCisJICogQHBhcmFtIFNJRAorCSAqICAgICAgICAgICAgU0lEIFRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIGxvZ2dlZCBpbgorCSAqIEBwYXJhbSBmaWxlRXhwbG9yZXJJdGVtSWQKKwkgKiAgICAgICAgICAgIGN1cnJlbnQgZmlsZSBvciBmb2xkZXIgaWQgdG8gYmUgbW92ZWQKKwkgKiBAcGFyYW0gbmV3UGFyZW50RmlsZUV4cGxvcmVySXRlbUlkCisJICogICAgICAgICAgICBuZXcgcGFyZW50IGZvbGRlciBpZAorCSAqIEBwYXJhbSByb29tX2lkCisJICogICAgICAgICAgICByb29tIGlkCisJICogQHBhcmFtIGlzT3duZXIKKwkgKiAgICAgICAgICAgIGlmIHRydWUgb3duZXIgaWQgd2lsbCBiZSBzZXQKKwkgKiBAcGFyYW0gbW92ZVRvSG9tZQorCSAqICAgICAgICAgICAgbW92ZSB0byBwcml2YXRlIGRyaXZlCisJICogQHJldHVybiAtIG51bGwKKwkgKiBAdGhyb3dzIEF4aXNGYXVsdAorCSAqLworCXB1YmxpYyBMb25nIG1vdmVGaWxlU2VsZihTdHJpbmcgU0lELCBMb25nIGZpbGVFeHBsb3Jlckl0ZW1JZCwKKwkJCUxvbmcgbmV3UGFyZW50RmlsZUV4cGxvcmVySXRlbUlkLCBMb25nIHJvb21faWQsIEJvb2xlYW4gaXNPd25lciwKKwkJCUJvb2xlYW4gbW92ZVRvSG9tZSkgdGhyb3dzIEF4aXNGYXVsdCB7CisKKwkJdHJ5IHsKKworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrVXNlckxldmVsKHVzZXJfbGV2ZWwpKSB7CisJCQkJCisJCQkJLy8gQSB0ZXN0IGlzIHJlcXVpcmVkIHRoYXQgY2hlY2tzIGlmIHRoZSB1c2VyIGlzIGFsbG93ZWQgdG8gbW92ZSB0aGUgZmlsZQorCisJCQkJbG9nLmRlYnVnKCJtb3ZlRmlsZVNlbGYgIiArIGZpbGVFeHBsb3Jlckl0ZW1JZCk7CisKKwkJCQlmaWxlRXhwbG9yZXJJdGVtRGFvCisJCQkJCQkubW92ZUZpbGUoZmlsZUV4cGxvcmVySXRlbUlkLAorCQkJCQkJCQluZXdQYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQsIHJvb21faWQsIGlzT3duZXIsCisJCQkJCQkJCXVzZXJzX2lkKTsKKworCQkJCUZpbGVFeHBsb3Jlckl0ZW0gZmlsZUV4cGxvcmVySXRlbSA9IGZpbGVFeHBsb3Jlckl0ZW1EYW8KKwkJCQkJCS5nZXRGaWxlRXhwbG9yZXJJdGVtc0J5SWQoZmlsZUV4cGxvcmVySXRlbUlkKTsKKworCQkJCWlmIChtb3ZlVG9Ib21lKSB7CisJCQkJCS8vIHNldCB0aGlzIGZpbGUgYW5kIGFsbCBzdWJmaWxlcyBhbmQgZm9sZGVycyB0aGUgb3duZXJJZAorCQkJCQlmaWxlVXRpbHMuc2V0RmlsZVRvT3duZXJPclJvb21CeVBhcmVudChmaWxlRXhwbG9yZXJJdGVtLAorCQkJCQkJCXVzZXJzX2lkLCBudWxsKTsKKworCQkJCX0gZWxzZSB7CisJCQkJCS8vIHNldCB0aGlzIGZpbGUgYW5kIGFsbCBzdWJmaWxlcyBhbmQgZm9sZGVycyB0aGUgcm9vbV9pZAorCQkJCQlmaWxlVXRpbHMuc2V0RmlsZVRvT3duZXJPclJvb21CeVBhcmVudChmaWxlRXhwbG9yZXJJdGVtLAorCQkJCQkJCW51bGwsIHJvb21faWQpOworCisJCQkJfQorCisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW21vdmVGaWxlXSAiLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2F4aXMvc2VydmljZXMvRmlsZVdlYlNlcnZpY2VGYWNhZGUuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9heGlzL3NlcnZpY2VzL0ZpbGVXZWJTZXJ2aWNlRmFjYWRlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWQxMzczZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9heGlzL3NlcnZpY2VzL0ZpbGVXZWJTZXJ2aWNlRmFjYWRlLmphdmEKQEAgLTAsMCArMSwzMjIgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuYXhpcy5zZXJ2aWNlczsKKworaW1wb3J0IG9yZy5hcGFjaGUuYXhpczIuQXhpc0ZhdWx0OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuZmlsZS5kdG8uRmlsZUV4cGxvcmVyT2JqZWN0OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuZmlsZS5kdG8uTGlicmFyeVByZXNlbnRhdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5maWxlcy5GaWxlRXhwbG9yZXJJdGVtOworCitwdWJsaWMgY2xhc3MgRmlsZVdlYlNlcnZpY2VGYWNhZGUgZXh0ZW5kcyBCYXNlV2ViU2VydmljZSB7CisKKwkvKioKKwkgKiAKKwkgKiBJbXBvcnQgZmlsZSBmcm9tIGV4dGVybmFsIHNvdXJjZQorCSAqIAorCSAqIHRvIHVwbG9hZCBhIGZpbGUgdG8gYSByb29tLWRyaXZlIHlvdSBzcGVjaWZ5OiBleHRlcm5hbFVzZXJJZCwgdXNlciBpZiBvZgorCSAqIG9wZW5tZWV0aW5ncyB1c2VyIGZvciB3aGljaCB3ZSB1cGxvYWQgdGhlIGZpbGUgcm9vbV9pZCA9IG9wZW5tZWV0aW5ncworCSAqIHJvb20gaWQgaXNPd25lciA9IDAgcGFyZW50Rm9sZGVySWQgPSAwCisJICogCisJICogdG8gdXBsb2FkIGEgZmlsZSB0byBhIHByaXZhdGUtZHJpdmUgeW91IHNwZWNpZnk6IGV4dGVybmFsVXNlcklkLCB1c2VyIGlmCisJICogb2Ygb3Blbm1lZXRpbmdzIHVzZXIgZm9yIHdoaWNoIHdlIHVwbG9hZCB0aGUgZmlsZSByb29tX2lkID0gb3Blbm1lZXRpbmdzCisJICogcm9vbSBpZCBpc093bmVyID0gMSBwYXJlbnRGb2xkZXJJZCA9IC0yCisJICogCisJICogQHBhcmFtIFNJRAorCSAqIEBwYXJhbSBleHRlcm5hbFVzZXJJZAorCSAqICAgICAgICAgICAgdGhlIGV4dGVybmFsIHVzZXIgaWQgPSZndDsgSWYgdGhlIGZpbGUgc2hvdWxkIGdvdG8gYSBwcml2YXRlCisJICogICAgICAgICAgICBzZWN0aW9uIG9mIGFueSB1c2VyLCB0aGlzIG51bWJlciBuZWVkcyB0byBiZSBzZXQKKwkgKiBAcGFyYW0gZXh0ZXJuYWxGaWxlSWQKKwkgKiAgICAgICAgICAgIHRoZSBleHRlcm5hbCBmaWxlLXR5cGUgdG8gaWRlbnRpZnkgdGhlIGZpbGUgbGF0ZXIKKwkgKiBAcGFyYW0gZXh0ZXJuYWxUeXBlCisJICogICAgICAgICAgICB0aGUgbmFtZSBvZiB0aGUgZXh0ZXJuYWwgc3lzdGVtCisJICogQHBhcmFtIHJvb21faWQKKwkgKiAgICAgICAgICAgIHRoZSByb29tIElkLCBpZiB0aGUgZmlsZSBnb2VzIHRvIHRoZSBwcml2YXRlIGZvbGRlciBvZiBhbgorCSAqICAgICAgICAgICAgdXNlciwgeW91IGNhbiBzZXQgYSByYW5kb20gbnVtYmVyIGhlcmUKKwkgKiBAcGFyYW0gaXNPd25lcgorCSAqICAgICAgICAgICAgc3BlY2lmeSBhIDEvdHJ1ZSBBTkQgcGFyZW50Rm9sZGVySWQ9PS0yIHRvIG1ha2UgdGhlIGZpbGUgZ290bworCSAqICAgICAgICAgICAgdGhlIHByaXZhdGUgc2VjdGlvbgorCSAqIEBwYXJhbSBwYXRoCisJICogICAgICAgICAgICBodHRwLXBhdGggd2hlcmUgd2UgY2FuIGdyYWIgdGhlIGZpbGUgZnJvbSwgdGhlIGZpbGUgaGFzIHRvIGJlCisJICogICAgICAgICAgICBhY2Nlc3NpYmxlIGZyb20gdGhlIE9wZW5NZWV0aW5ncyBzZXJ2ZXIKKwkgKiBAcGFyYW0gcGFyZW50Rm9sZGVySWQKKwkgKiAgICAgICAgICAgIHNwZWNpZnkgYSBwYXJlbnRGb2xkZXJJZD09LTIgQU5EIGlzT3duZXIgPT0gMS90cnVlIEFORCB0byBtYWtlCisJICogICAgICAgICAgICB0aGUgZmlsZSBnb3RvIHRoZSBwcml2YXRlIHNlY3Rpb24KKwkgKiBAcGFyYW0gZmlsZVN5c3RlbU5hbWUKKwkgKiAgICAgICAgICAgIHRoZSBmaWxlbmFtZSA9Jmd0OyBJbXBvcnRhbnQgV0lUSCBmaWxlIGV4dGVuc2lvbiEKKwkgKiBAcmV0dXJuCisJICogQHRocm93cyBBeGlzRmF1bHQKKwkgKi8KKwlwdWJsaWMgRmlsZUltcG9ydEVycm9yW10gaW1wb3J0RmlsZShTdHJpbmcgU0lELCBTdHJpbmcgZXh0ZXJuYWxVc2VySWQsCisJCQlMb25nIGV4dGVybmFsRmlsZUlkLCBTdHJpbmcgZXh0ZXJuYWxUeXBlLCBMb25nIHJvb21faWQsCisJCQlib29sZWFuIGlzT3duZXIsIFN0cmluZyBwYXRoLCBMb25nIHBhcmVudEZvbGRlcklkLAorCQkJU3RyaW5nIGZpbGVTeXN0ZW1OYW1lKSB0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJcmV0dXJuIGdldEJlYW4oRmlsZVdlYlNlcnZpY2UuY2xhc3MpLmltcG9ydEZpbGUoU0lELCBleHRlcm5hbFVzZXJJZCwKKwkJCQlleHRlcm5hbEZpbGVJZCwgZXh0ZXJuYWxUeXBlLCByb29tX2lkLCBpc093bmVyLCBwYXRoLAorCQkJCXBhcmVudEZvbGRlcklkLCBmaWxlU3lzdGVtTmFtZSk7CisJfQorCisJLyoqCisJICogCisJICogSW1wb3J0IGZpbGUgZnJvbSBleHRlcm5hbCBzb3VyY2UKKwkgKiAKKwkgKiB0byB1cGxvYWQgYSBmaWxlIHRvIGEgcm9vbS1kcml2ZSB5b3Ugc3BlY2lmeTogaW50ZXJuYWxVc2VySWQsIHVzZXIgaWYgb2YKKwkgKiBvcGVubWVldGluZ3MgdXNlciBmb3Igd2hpY2ggd2UgdXBsb2FkIHRoZSBmaWxlIHJvb21faWQgPSBvcGVubWVldGluZ3MKKwkgKiByb29tIGlkIGlzT3duZXIgPSAwIHBhcmVudEZvbGRlcklkID0gMAorCSAqIAorCSAqIHRvIHVwbG9hZCBhIGZpbGUgdG8gYSBwcml2YXRlLWRyaXZlIHlvdSBzcGVjaWZ5OiBpbnRlcm5hbFVzZXJJZCwgdXNlciBpZgorCSAqIG9mIG9wZW5tZWV0aW5ncyB1c2VyIGZvciB3aGljaCB3ZSB1cGxvYWQgdGhlIGZpbGUgcm9vbV9pZCA9IG9wZW5tZWV0aW5ncworCSAqIHJvb20gaWQgaXNPd25lciA9IDEgcGFyZW50Rm9sZGVySWQgPSAtMgorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiBAcGFyYW0gaW50ZXJuYWxVc2VySWQKKwkgKiAgICAgICAgICAgIHRoZSBvcGVubWVldGluZ3MgdXNlciBpZCA9Jmd0OyBJZiB0aGUgZmlsZSBzaG91bGQgZ290byBhIHByaXZhdGUKKwkgKiAgICAgICAgICAgIHNlY3Rpb24gb2YgYW55IHVzZXIsIHRoaXMgbnVtYmVyIG5lZWRzIHRvIGJlIHNldAorCSAqIEBwYXJhbSBleHRlcm5hbEZpbGVJZAorCSAqICAgICAgICAgICAgdGhlIGV4dGVybmFsIGZpbGUtdHlwZSB0byBpZGVudGlmeSB0aGUgZmlsZSBsYXRlcgorCSAqIEBwYXJhbSBleHRlcm5hbFR5cGUKKwkgKiAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSBleHRlcm5hbCBzeXN0ZW0KKwkgKiBAcGFyYW0gcm9vbV9pZAorCSAqICAgICAgICAgICAgdGhlIHJvb20gSWQsIGlmIHRoZSBmaWxlIGdvZXMgdG8gdGhlIHByaXZhdGUgZm9sZGVyIG9mIGFuCisJICogICAgICAgICAgICB1c2VyLCB5b3UgY2FuIHNldCBhIHJhbmRvbSBudW1iZXIgaGVyZQorCSAqIEBwYXJhbSBpc093bmVyCisJICogICAgICAgICAgICBzcGVjaWZ5IGEgMS90cnVlIEFORCBwYXJlbnRGb2xkZXJJZD09LTIgdG8gbWFrZSB0aGUgZmlsZSBnb3RvCisJICogICAgICAgICAgICB0aGUgcHJpdmF0ZSBzZWN0aW9uCisJICogQHBhcmFtIHBhdGgKKwkgKiAgICAgICAgICAgIGh0dHAtcGF0aCB3aGVyZSB3ZSBjYW4gZ3JhYiB0aGUgZmlsZSBmcm9tLCB0aGUgZmlsZSBoYXMgdG8gYmUKKwkgKiAgICAgICAgICAgIGFjY2Vzc2libGUgZnJvbSB0aGUgT3Blbk1lZXRpbmdzIHNlcnZlcgorCSAqIEBwYXJhbSBwYXJlbnRGb2xkZXJJZAorCSAqICAgICAgICAgICAgc3BlY2lmeSBhIHBhcmVudEZvbGRlcklkPT0tMiBBTkQgaXNPd25lciA9PSAxL3RydWUgQU5EIHRvIG1ha2UKKwkgKiAgICAgICAgICAgIHRoZSBmaWxlIGdvdG8gdGhlIHByaXZhdGUgc2VjdGlvbgorCSAqIEBwYXJhbSBmaWxlU3lzdGVtTmFtZQorCSAqICAgICAgICAgICAgdGhlIGZpbGVuYW1lID0mZ3Q7IEltcG9ydGFudCBXSVRIIGZpbGUgZXh0ZW5zaW9uIQorCSAqIEByZXR1cm4KKwkgKiBAdGhyb3dzIEF4aXNGYXVsdAorCSAqLworCXB1YmxpYyBGaWxlSW1wb3J0RXJyb3JbXSBpbXBvcnRGaWxlQnlJbnRlcm5hbFVzZXJJZChTdHJpbmcgU0lELAorCQkJTG9uZyBpbnRlcm5hbFVzZXJJZCwgTG9uZyBleHRlcm5hbEZpbGVJZCwgU3RyaW5nIGV4dGVybmFsVHlwZSwKKwkJCUxvbmcgcm9vbV9pZCwgYm9vbGVhbiBpc093bmVyLCBTdHJpbmcgcGF0aCwgTG9uZyBwYXJlbnRGb2xkZXJJZCwKKwkJCVN0cmluZyBmaWxlU3lzdGVtTmFtZSkgdGhyb3dzIEF4aXNGYXVsdCB7CisJCXJldHVybiBnZXRCZWFuKEZpbGVXZWJTZXJ2aWNlLmNsYXNzKS5pbXBvcnRGaWxlQnlJbnRlcm5hbFVzZXJJZChTSUQsCisJCQkJaW50ZXJuYWxVc2VySWQsIGV4dGVybmFsRmlsZUlkLCBleHRlcm5hbFR5cGUsIHJvb21faWQsIGlzT3duZXIsCisJCQkJcGF0aCwgcGFyZW50Rm9sZGVySWQsIGZpbGVTeXN0ZW1OYW1lKTsKKwl9CisKKwkvKioKKwkgKiAKKwkgKiB0byBhZGQgYSBmb2xkZXIgdG8gdGhlIHByaXZhdGUgZHJpdmUsIHNldCBwYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQgPSAwCisJICogYW5kIGlzT3duZXIgdG8gMS90cnVlIGFuZCBleHRlcm5hbFVzZXJJZC9leHRlcm5hbFVzZXJUeXBlIHRvIGEgdmFsaWQgdXNlcgorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiBAcGFyYW0gZXh0ZXJuYWxVc2VySWQKKwkgKiBAcGFyYW0gZXh0ZXJuYWxVc2VyVHlwZQorCSAqIEBwYXJhbSBwYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQKKwkgKiBAcGFyYW0gZmlsZU5hbWUKKwkgKiBAcGFyYW0gcm9vbV9pZAorCSAqIEBwYXJhbSBpc093bmVyCisJICogQHBhcmFtIGV4dGVybmFsRmlsZXNpZAorCSAqIEBwYXJhbSBleHRlcm5hbFR5cGUKKwkgKiBAcmV0dXJuCisJICogQHRocm93cyBBeGlzRmF1bHQKKwkgKi8KKwlwdWJsaWMgTG9uZyBhZGRGb2xkZXJCeUV4dGVybmFsVXNlcklkQW5kVHlwZShTdHJpbmcgU0lELAorCQkJU3RyaW5nIGV4dGVybmFsVXNlcklkLCBMb25nIHBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCwKKwkJCVN0cmluZyBmb2xkZXJOYW1lLCBMb25nIHJvb21faWQsIEJvb2xlYW4gaXNPd25lciwKKwkJCUxvbmcgZXh0ZXJuYWxGaWxlc2lkLCBTdHJpbmcgZXh0ZXJuYWxUeXBlKSB0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJcmV0dXJuIGdldEJlYW4oRmlsZVdlYlNlcnZpY2UuY2xhc3MpLmFkZEZvbGRlckJ5RXh0ZXJuYWxVc2VySWRBbmRUeXBlKFNJRCwKKwkJCQlleHRlcm5hbFVzZXJJZCwgcGFyZW50RmlsZUV4cGxvcmVySXRlbUlkLCBmb2xkZXJOYW1lLCByb29tX2lkLAorCQkJCWlzT3duZXIsIGV4dGVybmFsRmlsZXNpZCwgZXh0ZXJuYWxUeXBlKTsKKworCX0KKworCS8qKgorCSAqIAorCSAqIHRvIGFkZCBhIGZvbGRlciB0byB0aGUgcHJpdmF0ZSBkcml2ZSwgc2V0IHBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCA9IDAKKwkgKiBhbmQgaXNPd25lciB0byAxL3RydWUgYW5kIHVzZXJJZCB0byBhIHZhbGlkIHVzZXIKKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogQHBhcmFtIHVzZXJJZAorCSAqIEBwYXJhbSBwYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQKKwkgKiBAcGFyYW0gZmlsZU5hbWUKKwkgKiBAcGFyYW0gcm9vbV9pZAorCSAqIEBwYXJhbSBpc093bmVyCisJICogQHBhcmFtIGV4dGVybmFsRmlsZXNpZAorCSAqIEBwYXJhbSBleHRlcm5hbFR5cGUKKwkgKiBAcmV0dXJuCisJICogQHRocm93cyBBeGlzRmF1bHQKKwkgKi8KKwlwdWJsaWMgTG9uZyBhZGRGb2xkZXJCeVVzZXJJZChTdHJpbmcgU0lELCBMb25nIHVzZXJJZCwKKwkJCUxvbmcgcGFyZW50RmlsZUV4cGxvcmVySXRlbUlkLCBTdHJpbmcgZm9sZGVyTmFtZSwgTG9uZyByb29tX2lkLAorCQkJQm9vbGVhbiBpc093bmVyLCBMb25nIGV4dGVybmFsRmlsZXNpZCwgU3RyaW5nIGV4dGVybmFsVHlwZSkKKwkJCXRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihGaWxlV2ViU2VydmljZS5jbGFzcykuYWRkRm9sZGVyQnlVc2VySWQoU0lELCB1c2VySWQsCisJCQkJcGFyZW50RmlsZUV4cGxvcmVySXRlbUlkLCBmb2xkZXJOYW1lLCByb29tX2lkLCBpc093bmVyLAorCQkJCWV4dGVybmFsRmlsZXNpZCwgZXh0ZXJuYWxUeXBlKTsKKwl9CisKKwkvKioKKwkgKiAKKwkgKiBBZGQgYSBmb2xkZXIgYnkgdGhlIGN1cnJlbnQgdXNlciAtIHNpbWlsYXIgdG8gUlRNUCBDYWxsCisJICogCisJICogQHBhcmFtIFNJRAorCSAqIEBwYXJhbSBwYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQKKwkgKiBAcGFyYW0gZmlsZU5hbWUKKwkgKiBAcGFyYW0gcm9vbV9pZAorCSAqIEBwYXJhbSBpc093bmVyCisJICogQHJldHVybgorCSAqLworCXB1YmxpYyBMb25nIGFkZEZvbGRlclNlbGYoU3RyaW5nIFNJRCwgTG9uZyBwYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQsCisJCQlTdHJpbmcgZmlsZU5hbWUsIExvbmcgcm9vbV9pZCwgQm9vbGVhbiBpc093bmVyKSB0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJcmV0dXJuIGdldEJlYW4oRmlsZVdlYlNlcnZpY2UuY2xhc3MpLmFkZEZvbGRlclNlbGYoU0lELAorCQkJCXBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCwgZmlsZU5hbWUsIHJvb21faWQsIGlzT3duZXIpOworCX0KKwkKKwlwdWJsaWMgTG9uZyBhZGRGb2xkZXJTZWxmSW50ZXJuYWwoU3RyaW5nIFNJRCwgTG9uZyBwYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQsCisJCQlTdHJpbmcgZmlsZU5hbWUsIExvbmcgcm9vbUlkLCBCb29sZWFuIGlzT3duZXIpIHRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihGaWxlV2ViU2VydmljZS5jbGFzcykuYWRkRm9sZGVyU2VsZihTSUQsCisJCQkJcGFyZW50RmlsZUV4cGxvcmVySXRlbUlkLCBmaWxlTmFtZSwgcm9vbUlkLCBpc093bmVyKTsKKwl9CisJCisKKwkvKioKKwkgKiAKKwkgKiBkZWxldGVzIGEgZmlsZSBieSBpdHMgZXh0ZXJuYWwgSWQgYW5kIHR5cGUKKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogQHBhcmFtIGV4dGVybmFsRmlsZXNpZAorCSAqIEBwYXJhbSBleHRlcm5hbFR5cGUKKwkgKiBAcmV0dXJuCisJICovCisJcHVibGljIExvbmcgZGVsZXRlRmlsZU9yRm9sZGVyQnlFeHRlcm5hbElkQW5kVHlwZShTdHJpbmcgU0lELAorCQkJTG9uZyBleHRlcm5hbEZpbGVzaWQsIFN0cmluZyBleHRlcm5hbFR5cGUpIHRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihGaWxlV2ViU2VydmljZS5jbGFzcykuZGVsZXRlRmlsZU9yRm9sZGVyQnlFeHRlcm5hbElkQW5kVHlwZSgKKwkJCQlTSUQsIGV4dGVybmFsRmlsZXNpZCwgZXh0ZXJuYWxUeXBlKTsKKwl9CisKKwkvKioKKwkgKiAKKwkgKiBkZWxldGVzIGZpbGVzIG9yIGZvbGRlcnMgYmFzZWQgb24gaXQgaWQKKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogQHBhcmFtIGZpbGVFeHBsb3Jlckl0ZW1JZAorCSAqIEByZXR1cm4KKwkgKi8KKwlwdWJsaWMgTG9uZyBkZWxldGVGaWxlT3JGb2xkZXIoU3RyaW5nIFNJRCwgTG9uZyBmaWxlRXhwbG9yZXJJdGVtSWQpCisJCQl0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJcmV0dXJuIGdldEJlYW4oRmlsZVdlYlNlcnZpY2UuY2xhc3MpLmRlbGV0ZUZpbGVPckZvbGRlcihTSUQsCisJCQkJZmlsZUV4cGxvcmVySXRlbUlkKTsKKwl9CisKKwkvKioKKwkgKiAKKwkgKiBkZWxldGVzIGZpbGVzIG9yIGZvbGRlcnMgYmFzZWQgb24gaXQgaWQKKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogQHBhcmFtIGZpbGVFeHBsb3Jlckl0ZW1JZAorCSAqIEByZXR1cm4KKwkgKi8KKwlwdWJsaWMgTG9uZyBkZWxldGVGaWxlT3JGb2xkZXJTZWxmKFN0cmluZyBTSUQsIExvbmcgZmlsZUV4cGxvcmVySXRlbUlkKQorCQkJdGhyb3dzIEF4aXNGYXVsdCB7CisJCXJldHVybiBnZXRCZWFuKEZpbGVXZWJTZXJ2aWNlLmNsYXNzKS5kZWxldGVGaWxlT3JGb2xkZXJTZWxmKFNJRCwKKwkJCQlmaWxlRXhwbG9yZXJJdGVtSWQpOworCX0KKworCXB1YmxpYyBTdHJpbmdbXSBnZXRJbXBvcnRGaWxlRXh0ZW5zaW9ucygpIHRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihGaWxlV2ViU2VydmljZS5jbGFzcykuZ2V0SW1wb3J0RmlsZUV4dGVuc2lvbnMoKTsKKwl9CisKKwlwdWJsaWMgTGlicmFyeVByZXNlbnRhdGlvbiBnZXRQcmVzZW50YXRpb25QcmV2aWV3RmlsZUV4cGxvcmVyKFN0cmluZyBTSUQsCisJCQlTdHJpbmcgcGFyZW50Rm9sZGVyKSB0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJcmV0dXJuIGdldEJlYW4oRmlsZVdlYlNlcnZpY2UuY2xhc3MpLmdldFByZXNlbnRhdGlvblByZXZpZXdGaWxlRXhwbG9yZXIoCisJCQkJU0lELCBwYXJlbnRGb2xkZXIpOworCX0KKworCXB1YmxpYyBGaWxlRXhwbG9yZXJPYmplY3QgZ2V0RmlsZUV4cGxvcmVyQnlSb29tKFN0cmluZyBTSUQsIExvbmcgcm9vbV9pZCwKKwkJCUxvbmcgb3duZXJfaWQpIHRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihGaWxlV2ViU2VydmljZS5jbGFzcykuZ2V0RmlsZUV4cGxvcmVyQnlSb29tKFNJRCwgcm9vbV9pZCwKKwkJCQlvd25lcl9pZCk7CisJfQorCisJcHVibGljIEZpbGVFeHBsb3Jlck9iamVjdCBnZXRGaWxlRXhwbG9yZXJCeVJvb21TZWxmKFN0cmluZyBTSUQsIExvbmcgcm9vbV9pZCkKKwkJCXRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihGaWxlV2ViU2VydmljZS5jbGFzcykKKwkJCQkuZ2V0RmlsZUV4cGxvcmVyQnlSb29tU2VsZihTSUQsIHJvb21faWQpOworCX0KKwkKKwlwdWJsaWMgRmlsZUV4cGxvcmVyT2JqZWN0IGdldEZpbGVFeHBsb3JlckJ5Um9vbVNlbGZJbnRlcm5hbChTdHJpbmcgU0lELCBMb25nIHJvb21JZCkKKwkJCXRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihGaWxlV2ViU2VydmljZS5jbGFzcykKKwkJCQkuZ2V0RmlsZUV4cGxvcmVyQnlSb29tU2VsZihTSUQsIHJvb21JZCk7CisJfQorCisJcHVibGljIEZpbGVFeHBsb3Jlckl0ZW1bXSBnZXRGaWxlRXhwbG9yZXJCeVBhcmVudChTdHJpbmcgU0lELAorCQkJTG9uZyBwYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQsIExvbmcgcm9vbV9pZCwgQm9vbGVhbiBpc093bmVyLAorCQkJTG9uZyBvd25lcl9pZCkgdGhyb3dzIEF4aXNGYXVsdCB7CisJCXJldHVybiBnZXRCZWFuKEZpbGVXZWJTZXJ2aWNlLmNsYXNzKS5nZXRGaWxlRXhwbG9yZXJCeVBhcmVudChTSUQsCisJCQkJcGFyZW50RmlsZUV4cGxvcmVySXRlbUlkLCByb29tX2lkLCBpc093bmVyLCBvd25lcl9pZCk7CisJfQorCisJcHVibGljIEZpbGVFeHBsb3Jlckl0ZW1bXSBnZXRGaWxlRXhwbG9yZXJCeVBhcmVudFNlbGYoU3RyaW5nIFNJRCwKKwkJCUxvbmcgcGFyZW50RmlsZUV4cGxvcmVySXRlbUlkLCBMb25nIHJvb21faWQsIEJvb2xlYW4gaXNPd25lcikKKwkJCXRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihGaWxlV2ViU2VydmljZS5jbGFzcykuZ2V0RmlsZUV4cGxvcmVyQnlQYXJlbnRTZWxmKFNJRCwKKwkJCQlwYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQsIHJvb21faWQsIGlzT3duZXIpOworCX0KKwkKKwlwdWJsaWMgRmlsZUV4cGxvcmVySXRlbVtdIGdldEZpbGVFeHBsb3JlckJ5UGFyZW50U2VsZkludGVybmFsKFN0cmluZyBTSUQsCisJCQlMb25nIHBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCwgTG9uZyByb29tSWQsIEJvb2xlYW4gaXNPd25lcikKKwkJCXRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihGaWxlV2ViU2VydmljZS5jbGFzcykuZ2V0RmlsZUV4cGxvcmVyQnlQYXJlbnRTZWxmKFNJRCwKKwkJCQlwYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQsIHJvb21JZCwgaXNPd25lcik7CisJfQorCisJcHVibGljIExvbmcgdXBkYXRlRmlsZU9yRm9sZGVyTmFtZShTdHJpbmcgU0lELCBMb25nIGZpbGVFeHBsb3Jlckl0ZW1JZCwKKwkJCVN0cmluZyBmaWxlTmFtZSkgdGhyb3dzIEF4aXNGYXVsdCB7CisJCXJldHVybiBnZXRCZWFuKEZpbGVXZWJTZXJ2aWNlLmNsYXNzKS51cGRhdGVGaWxlT3JGb2xkZXJOYW1lKFNJRCwKKwkJCQlmaWxlRXhwbG9yZXJJdGVtSWQsIGZpbGVOYW1lKTsKKwl9CisKKwlwdWJsaWMgTG9uZyB1cGRhdGVGaWxlT3JGb2xkZXJOYW1lU2VsZihTdHJpbmcgU0lELCBMb25nIGZpbGVFeHBsb3Jlckl0ZW1JZCwKKwkJCVN0cmluZyBmaWxlTmFtZSkgdGhyb3dzIEF4aXNGYXVsdCB7CisJCXJldHVybiBnZXRCZWFuKEZpbGVXZWJTZXJ2aWNlLmNsYXNzKS51cGRhdGVGaWxlT3JGb2xkZXJOYW1lU2VsZihTSUQsCisJCQkJZmlsZUV4cGxvcmVySXRlbUlkLCBmaWxlTmFtZSk7CisJfQorCisJcHVibGljIExvbmcgbW92ZUZpbGUoU3RyaW5nIFNJRCwgTG9uZyBmaWxlRXhwbG9yZXJJdGVtSWQsCisJCQlMb25nIG5ld1BhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCwgTG9uZyByb29tX2lkLCBCb29sZWFuIGlzT3duZXIsCisJCQlCb29sZWFuIG1vdmVUb0hvbWUsIExvbmcgb3duZXJfaWQpIHRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihGaWxlV2ViU2VydmljZS5jbGFzcykubW92ZUZpbGUoU0lELCBmaWxlRXhwbG9yZXJJdGVtSWQsCisJCQkJbmV3UGFyZW50RmlsZUV4cGxvcmVySXRlbUlkLCByb29tX2lkLCBpc093bmVyLCBtb3ZlVG9Ib21lLAorCQkJCW93bmVyX2lkKTsKKwl9CisKKwlwdWJsaWMgTG9uZyBtb3ZlRmlsZVNlbGYoU3RyaW5nIFNJRCwgTG9uZyBmaWxlRXhwbG9yZXJJdGVtSWQsCisJCQlMb25nIG5ld1BhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCwgTG9uZyByb29tX2lkLCBCb29sZWFuIGlzT3duZXIsCisJCQlCb29sZWFuIG1vdmVUb0hvbWUpIHRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihGaWxlV2ViU2VydmljZS5jbGFzcykubW92ZUZpbGVTZWxmKFNJRCwgZmlsZUV4cGxvcmVySXRlbUlkLAorCQkJCW5ld1BhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCwgcm9vbV9pZCwgaXNPd25lciwgbW92ZVRvSG9tZSk7CisJfQorCQorCXB1YmxpYyBMb25nIG1vdmVGaWxlU2VsZkludGVybmFsKFN0cmluZyBTSUQsIExvbmcgZmlsZUV4cGxvcmVySXRlbUlkLAorCQkJTG9uZyBuZXdQYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQsIExvbmcgcm9vbUlkLCBCb29sZWFuIGlzT3duZXIsCisJCQlCb29sZWFuIG1vdmVUb0hvbWUpIHRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihGaWxlV2ViU2VydmljZS5jbGFzcykubW92ZUZpbGVTZWxmKFNJRCwgZmlsZUV4cGxvcmVySXRlbUlkLAorCQkJCW5ld1BhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCwgcm9vbUlkLCBpc093bmVyLCBtb3ZlVG9Ib21lKTsKKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9heGlzL3NlcnZpY2VzL0phYmJlcldlYlNlcnZpY2UuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9heGlzL3NlcnZpY2VzL0phYmJlcldlYlNlcnZpY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMWU3YWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2F4aXMvc2VydmljZXMvSmFiYmVyV2ViU2VydmljZS5qYXZhCkBAIC0wLDAgKzEsMTQxIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmF4aXMuc2VydmljZXM7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLkF1dGhMZXZlbFV0aWw7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5TZXNzaW9uZGF0YURhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLmRhby5Db25maWd1cmF0aW9uRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuZGFvLk9tVGltZVpvbmVEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jb25mZXJlbmNlLkludml0YXRpb25NYW5hZ2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEudXNlci5Vc2VyTWFuYWdlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5kb21haW4uT3JnYW5pc2F0aW9uX1VzZXJzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmludml0YXRpb24uSW52aXRhdGlvbnM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbS5Sb29tOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnJvb20uUm9vbU9yZ2FuaXNhdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlVzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucmVtb3RlLkNvbmZlcmVuY2VTZXJ2aWNlOworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5BdXRvd2lyZWQ7CisKKy8qKgorICogVGhpcyBjbGFzcyBwcm92aWRlcyBtZXRob2QgaW1wbGVtZW50YXRpb25zIG5lY2Vzc2FyeSBmb3IgT00gdG8gSmFiYmVyIGludGVncmF0aW9uLgorICogCisgKiBAYXV0aG9yIHNvbG9tYXgKKyAqIEB3ZWJzZXJ2aWNlIEphYmJlclNlcnZpY2UKKyAqCisgKi8KK3B1YmxpYyBjbGFzcyBKYWJiZXJXZWJTZXJ2aWNlIHsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKAorCQkJSmFiYmVyV2ViU2VydmljZS5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCisJQEF1dG93aXJlZAorCXByaXZhdGUgQXV0aExldmVsVXRpbCBhdXRoTGV2ZWxVdGlsOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFVzZXJNYW5hZ2VyIHVzZXJNYW5hZ2VyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFNlc3Npb25kYXRhRGFvIHNlc3Npb25kYXRhRGFvOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIENvbmZlcmVuY2VTZXJ2aWNlIGNvbmZlcmVuY2VTZXJ2aWNlOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEludml0YXRpb25NYW5hZ2VyIGludml0YXRpb25NYW5hZ2VyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIE9tVGltZVpvbmVEYW8gb21UaW1lWm9uZURhb0ltcGw7CisJQEF1dG93aXJlZAorCXByaXZhdGUgQ29uZmlndXJhdGlvbkRhbyBjb25maWd1cmF0aW9uRGFvOworCisJLyoqCisJICogR2V0IExpc3QmbHQ7Um9vbXMmZ3Q7IG9mIGFsbCByb29tcyBhdmFpbGFibGUgdG8gdGhlIHVzZXIuCisJICogTm8gYWRtaW4gcmlnaHRzIGFyZSBuZWNlc3NhcnkgZm9yIHRoaXMgY2FsbAorCSAqIAorCSAqIEBwYXJhbSBTSUQgVGhlIFNJRCBmcm9tIFVzZXJTZXJ2aWNlLmdldFNlc3Npb24KKwkgKiBAcmV0dXJuIExpc3QmbHQ7Um9vbXMmZ3Q7IG9mIFJvb21zCisJICovCisJcHVibGljIExpc3Q8Um9vbT4gZ2V0QXZhaWxhYmxlUm9vbXMoU3RyaW5nIFNJRCkgeworCQlsb2cuZGVidWcoImdldEF2YWlsYWJsZVJvb21zIGVudGVyIik7CisKKwkJTGlzdDxSb29tPiByZXN1bHQgPSB0aGlzLmNvbmZlcmVuY2VTZXJ2aWNlCisJCQkJLmdldEFwcG9pbnRlZE1lZXRpbmdSb29tc1dpdGhvdXRUeXBlKFNJRCk7CisKKwkJTGlzdDxSb29tPiBwYmwgPSB0aGlzLmNvbmZlcmVuY2VTZXJ2aWNlLmdldFJvb21zUHVibGljV2l0aG91dFR5cGUoU0lEKTsKKwkJaWYgKHBibCAhPSBudWxsKSB7CisJCQlyZXN1bHQuYWRkQWxsKHBibCk7CisJCX0KKworCQlMb25nIHVzZXJzX2lkID0gdGhpcy5zZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJVXNlciB1ID0gdGhpcy51c2VyTWFuYWdlci5nZXRVc2VyQnlJZCh1c2Vyc19pZCk7CisJCWZvciAoT3JnYW5pc2F0aW9uX1VzZXJzIG91IDogdS5nZXRPcmdhbmlzYXRpb25fdXNlcnMoKSkgeworCQkJTGlzdDxSb29tT3JnYW5pc2F0aW9uPiByb2wgPSB0aGlzLmNvbmZlcmVuY2VTZXJ2aWNlCisJCQkJCS5nZXRSb29tc0J5T3JnYW5pc2F0aW9uV2l0aG91dFR5cGUoU0lELCBvdQorCQkJCQkJCS5nZXRPcmdhbmlzYXRpb24oKS5nZXRPcmdhbmlzYXRpb25faWQoKS5sb25nVmFsdWUoKSk7CisJCQlpZiAocm9sICE9IG51bGwpIHsKKwkJCQlmb3IgKFJvb21PcmdhbmlzYXRpb24gcm8gOiByb2wpIHsKKwkJCQkJcmVzdWx0LmFkZChyby5nZXRSb29tKCkpOworCQkJCX0KKwkJCX0KKwkJfQorCQlmb3IgKFJvb20gciA6IHJlc3VsdCkgeworCQkJci5zZXRDdXJyZW50dXNlcnMobnVsbCk7CisJCX0KKwkJcmV0dXJuIHJlc3VsdDsKKwl9CisKKwkvKioKKwkgKiBSZXR1cm5zIHRoZSBjb3VudCBvZiB1c2VycyBjdXJyZW50bHkgaW4gdGhlIFJvb20gd2l0aCBnaXZlbiBpZAorCSAqIE5vIGFkbWluIHJpZ2h0cyBhcmUgbmVjZXNzYXJ5IGZvciB0aGlzIGNhbGwKKwkgKiAKKwkgKiBAcGFyYW0gU0lEIFRoZSBTSUQgZnJvbSBVc2VyU2VydmljZS5nZXRTZXNzaW9uCisJICogQHBhcmFtIHJvb21JZCBpZCBvZiB0aGUgcm9vbSB0byBnZXQgdXNlcnMKKwkgKiBAcmV0dXJuIG51bWJlciBvZiB1c2VycyBhcyBpbnQKKwkgKi8KKwlwdWJsaWMgaW50IGdldFVzZXJDb3VudChTdHJpbmcgU0lELCBMb25nIHJvb21JZCkgeworCQlMb25nIHVzZXJzX2lkID0gdGhpcy5zZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJTG9uZyB1c2VyX2xldmVsID0gdGhpcy51c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKworCQlpZiAodGhpcy5hdXRoTGV2ZWxVdGlsLmNoZWNrVXNlckxldmVsKHVzZXJfbGV2ZWwpKSB7CisJCQlyZXR1cm4gY29uZmVyZW5jZVNlcnZpY2UuZ2V0Um9vbUNsaWVudHNMaXN0QnlSb29tSWQocm9vbUlkKS5zaXplKCk7CisJCX0KKwkJcmV0dXJuIC0xOworCX0KKworCS8qKgorCSAqIEdldCBpbnZpdGF0aW9uIGhhc2ggZm9yIHRoZSByb29tIHdpdGggZ2l2ZW4gaWQKKwkgKiBObyBhZG1pbiByaWdodHMgYXJlIG5lY2Vzc2FyeSBmb3IgdGhpcyBjYWxsCisJICogCisJICogQHBhcmFtIFNJRCBUaGUgU0lEIGZyb20gVXNlclNlcnZpY2UuZ2V0U2Vzc2lvbgorCSAqIEBwYXJhbSB1c2VybmFtZSBUaGUgbmFtZSBvZiBpbnZpdGVkIHVzZXIsIHdpbGwgYmUgZGlzcGxheWVkIGluIHRoZSByb29tcyB1c2VyIGxpc3QKKwkgKiBAcGFyYW0gcm9vbV9pZCBpZCBvZiB0aGUgcm9vbSB0byBnZXQgdXNlcnMKKwkgKiBAcmV0dXJuIGhhc2ggdG8gZW50ZXIgdGhlIHJvb20KKwkgKi8KKwlwdWJsaWMgU3RyaW5nIGdldEludml0YXRpb25IYXNoKFN0cmluZyBTSUQsIFN0cmluZyB1c2VybmFtZSwgTG9uZyByb29tX2lkKSB7CisJCUxvbmcgdXNlcnNfaWQgPSB0aGlzLnNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQlMb25nIHVzZXJfbGV2ZWwgPSB0aGlzLnVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQlJbnZpdGF0aW9ucyBpbnZpdGF0aW9uID0gdGhpcy5pbnZpdGF0aW9uTWFuYWdlci5hZGRJbnZpdGF0aW9uTGluaygKKwkJCQl1c2VyX2xldmVsLCB1c2VybmFtZSwgdXNlcm5hbWUsIHVzZXJuYW1lLCB1c2VybmFtZSwgdXNlcm5hbWUsCisJCQkJcm9vbV9pZCwgIiIsIEJvb2xlYW4udmFsdWVPZihmYWxzZSksIG51bGwsIEludGVnZXIudmFsdWVPZigzKSwKKwkJCQludWxsLCBudWxsLCB1c2Vyc19pZCwgIiIsIExvbmcudmFsdWVPZigxTCksCisJCQkJQm9vbGVhbi52YWx1ZU9mKGZhbHNlKSwgbnVsbCwgbnVsbCwgbnVsbCwgdXNlcm5hbWUKKwkJCQksIG9tVGltZVpvbmVEYW9JbXBsLmdldE9tVGltZVpvbmUoY29uZmlndXJhdGlvbkRhby5nZXRDb25mVmFsdWUoImRlZmF1bHQudGltZXpvbmUiLCBTdHJpbmcuY2xhc3MsICJFdXJvcGUvQmVybGluIikpKTsKKworCQlyZXR1cm4gKChpbnZpdGF0aW9uID09IG51bGwpID8gbnVsbCA6IGludml0YXRpb24uZ2V0SGFzaCgpKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvYXhpcy9zZXJ2aWNlcy9KYWJiZXJXZWJTZXJ2aWNlRmFjYWRlLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvYXhpcy9zZXJ2aWNlcy9KYWJiZXJXZWJTZXJ2aWNlRmFjYWRlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTk2ODQwMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9heGlzL3NlcnZpY2VzL0phYmJlcldlYlNlcnZpY2VGYWNhZGUuamF2YQpAQCAtMCwwICsxLDcxIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmF4aXMuc2VydmljZXM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLmF4aXMyLkF4aXNGYXVsdDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tLlJvb207CisKKy8qKgorICogVGhpcyBjbGFzcyBwcm92aWRlcyBtZXRob2QgZW50cnkgcG9pbnRzIG5lY2Vzc2FyeSBmb3IgT00gdG8gSmFiYmVyIGludGVncmF0aW9uLgorICogCisgKiBAYXV0aG9yIHNvbG9tYXgKKyAqCisgKi8KK3B1YmxpYyBjbGFzcyBKYWJiZXJXZWJTZXJ2aWNlRmFjYWRlIGV4dGVuZHMgQmFzZVdlYlNlcnZpY2UgeworCQorCS8qKgorCSAqIEdldCBhcnJheSBvZiBhbGwgcm9vbXMgYXZhaWxhYmxlIHRvIHRoZSB1c2VyLgorCSAqIE5vIGFkbWluIHJpZ2h0cyBhcmUgbmVjZXNzYXJ5IGZvciB0aGlzIGNhbGwKKwkgKiAKKwkgKiBAcGFyYW0gU0lEIFRoZSBTSUQgZnJvbSB7QGxpbmsgVXNlcldlYlNlcnZpY2UuZ2V0U2Vzc2lvbn0KKwkgKiBAcmV0dXJuIGFycmF5IG9mIFJvb21zCisJICogQHRocm93cyBBeGlzRmF1bHQgCisJICovCisJcHVibGljIFJvb21bXSBnZXRBdmFpbGFibGVSb29tcyhTdHJpbmcgU0lEKSB0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJcmV0dXJuIGdldEJlYW4oSmFiYmVyV2ViU2VydmljZS5jbGFzcykuZ2V0QXZhaWxhYmxlUm9vbXMoU0lEKS50b0FycmF5KG5ldyBSb29tWzBdKTsKKwl9CisKKwkvKioKKwkgKiBSZXR1cm5zIHRoZSBjb3VudCBvZiB1c2VycyBjdXJyZW50bHkgaW4gdGhlIFJvb20gd2l0aCBnaXZlbiBpZAorCSAqIE5vIGFkbWluIHJpZ2h0cyBhcmUgbmVjZXNzYXJ5IGZvciB0aGlzIGNhbGwKKwkgKiAKKwkgKiBAcGFyYW0gU0lEIFRoZSBTSUQgZnJvbSB7QGxpbmsgVXNlcldlYlNlcnZpY2UuZ2V0U2Vzc2lvbn0KKwkgKiBAcGFyYW0gcm9vbUlkIGlkIG9mIHRoZSByb29tIHRvIGdldCB1c2VycworCSAqIEByZXR1cm4gbnVtYmVyIG9mIHVzZXJzIGFzIGludAorCSAqIEB0aHJvd3MgQXhpc0ZhdWx0IAorCSAqLworCXB1YmxpYyBpbnQgZ2V0VXNlckNvdW50KFN0cmluZyBTSUQsIExvbmcgcm9vbUlkKSB0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJcmV0dXJuIGdldEJlYW4oSmFiYmVyV2ViU2VydmljZS5jbGFzcykuZ2V0VXNlckNvdW50KFNJRCwgcm9vbUlkKTsKKwl9CisKKwkvKioKKwkgKiBHZXQgaW52aXRhdGlvbiBoYXNoIGZvciB0aGUgcm9vbSB3aXRoIGdpdmVuIGlkCisJICogTm8gYWRtaW4gcmlnaHRzIGFyZSBuZWNlc3NhcnkgZm9yIHRoaXMgY2FsbAorCSAqIAorCSAqIEBwYXJhbSBTSUQgVGhlIFNJRCBmcm9tIHtAbGluayBVc2VyV2ViU2VydmljZS5nZXRTZXNzaW9ufQorCSAqIEBwYXJhbSB1c2VybmFtZSBUaGUgbmFtZSBvZiBpbnZpdGVkIHVzZXIsIHdpbGwgYmUgZGlzcGxheWVkIGluIHRoZSByb29tcyB1c2VyIGxpc3QKKwkgKiBAcGFyYW0gcm9vbV9pZCBpZCBvZiB0aGUgcm9vbSB0byBnZXQgdXNlcnMKKwkgKiBAcmV0dXJuIGhhc2ggdG8gZW50ZXIgdGhlIHJvb20KKwkgKiBAdGhyb3dzIEF4aXNGYXVsdCAKKwkgKi8KKwlwdWJsaWMgU3RyaW5nIGdldEludml0YXRpb25IYXNoKFN0cmluZyBTSUQsIFN0cmluZyB1c2VybmFtZSwgTG9uZyByb29tX2lkKSB0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJcmV0dXJuIGdldEJlYW4oSmFiYmVyV2ViU2VydmljZS5jbGFzcykKKwkJCQkuZ2V0SW52aXRhdGlvbkhhc2goU0lELCB1c2VybmFtZSwgcm9vbV9pZCk7CisJfQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9heGlzL3NlcnZpY2VzL1Jvb21Db3VudEJlYW4uamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9heGlzL3NlcnZpY2VzL1Jvb21Db3VudEJlYW4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYWY1NThhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2F4aXMvc2VydmljZXMvUm9vbUNvdW50QmVhbi5qYXZhCkBAIC0wLDAgKzEsNTQgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuYXhpcy5zZXJ2aWNlczsKKworcHVibGljIGNsYXNzIFJvb21Db3VudEJlYW4geworCQorCXByaXZhdGUgbG9uZyByb29tSWQ7CisJcHJpdmF0ZSBTdHJpbmcgcm9vbU5hbWU7CisJcHJpdmF0ZSBJbnRlZ2VyIHJvb21Db3VudDsKKwlwcml2YXRlIEludGVnZXIgbWF4VXNlcjsKKwkKKwlwdWJsaWMgbG9uZyBnZXRSb29tSWQoKSB7CisJCXJldHVybiByb29tSWQ7CisJfQorCXB1YmxpYyB2b2lkIHNldFJvb21JZChsb25nIHJvb21JZCkgeworCQl0aGlzLnJvb21JZCA9IHJvb21JZDsKKwl9CisJcHVibGljIFN0cmluZyBnZXRSb29tTmFtZSgpIHsKKwkJcmV0dXJuIHJvb21OYW1lOworCX0KKwlwdWJsaWMgdm9pZCBzZXRSb29tTmFtZShTdHJpbmcgcm9vbU5hbWUpIHsKKwkJdGhpcy5yb29tTmFtZSA9IHJvb21OYW1lOworCX0KKwlwdWJsaWMgSW50ZWdlciBnZXRSb29tQ291bnQoKSB7CisJCXJldHVybiByb29tQ291bnQ7CisJfQorCXB1YmxpYyB2b2lkIHNldFJvb21Db3VudChJbnRlZ2VyIHJvb21Db3VudCkgeworCQl0aGlzLnJvb21Db3VudCA9IHJvb21Db3VudDsKKwl9CisJcHVibGljIEludGVnZXIgZ2V0TWF4VXNlcigpIHsKKwkJcmV0dXJuIG1heFVzZXI7CisJfQorCXB1YmxpYyB2b2lkIHNldE1heFVzZXIoSW50ZWdlciBtYXhVc2VyKSB7CisJCXRoaXMubWF4VXNlciA9IG1heFVzZXI7CisJfQorCQorCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvYXhpcy9zZXJ2aWNlcy9Sb29tUmV0dXJuLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvYXhpcy9zZXJ2aWNlcy9Sb29tUmV0dXJuLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg2ZjRmNwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9heGlzL3NlcnZpY2VzL1Jvb21SZXR1cm4uamF2YQpAQCAtMCwwICsxLDcxIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmF4aXMuc2VydmljZXM7CisKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKKworcHVibGljIGNsYXNzIFJvb21SZXR1cm4geworCisJcHJpdmF0ZSBMb25nIHJvb21faWQ7CisJcHJpdmF0ZSBTdHJpbmcgbmFtZTsKKwlwcml2YXRlIFN0cmluZyBjcmVhdG9yOworCXByaXZhdGUgRGF0ZSBjcmVhdGVkOworCXByaXZhdGUgUm9vbVVzZXJbXSByb29tVXNlcjsKKworCXB1YmxpYyBMb25nIGdldFJvb21faWQoKSB7CisJCXJldHVybiByb29tX2lkOworCX0KKworCXB1YmxpYyB2b2lkIHNldFJvb21faWQoTG9uZyByb29tSWQpIHsKKwkJcm9vbV9pZCA9IHJvb21JZDsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7CisJCXJldHVybiBuYW1lOworCX0KKworCXB1YmxpYyB2b2lkIHNldE5hbWUoU3RyaW5nIG5hbWUpIHsKKwkJdGhpcy5uYW1lID0gbmFtZTsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGdldENyZWF0b3IoKSB7CisJCXJldHVybiBjcmVhdG9yOworCX0KKworCXB1YmxpYyB2b2lkIHNldENyZWF0b3IoU3RyaW5nIGNyZWF0b3IpIHsKKwkJdGhpcy5jcmVhdG9yID0gY3JlYXRvcjsKKwl9CisKKwlwdWJsaWMgRGF0ZSBnZXRDcmVhdGVkKCkgeworCQlyZXR1cm4gY3JlYXRlZDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRDcmVhdGVkKERhdGUgY3JlYXRlZCkgeworCQl0aGlzLmNyZWF0ZWQgPSBjcmVhdGVkOworCX0KKworCXB1YmxpYyBSb29tVXNlcltdIGdldFJvb21Vc2VyKCkgeworCQlyZXR1cm4gcm9vbVVzZXI7CisJfQorCisJcHVibGljIHZvaWQgc2V0Um9vbVVzZXIoUm9vbVVzZXJbXSByb29tVXNlcikgeworCQl0aGlzLnJvb21Vc2VyID0gcm9vbVVzZXI7CisJfQorCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvYXhpcy9zZXJ2aWNlcy9Sb29tVXNlci5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2F4aXMvc2VydmljZXMvUm9vbVVzZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNDJiZTBhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2F4aXMvc2VydmljZXMvUm9vbVVzZXIuamF2YQpAQCAtMCwwICsxLDY3IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmF4aXMuc2VydmljZXM7CisKK3B1YmxpYyBjbGFzcyBSb29tVXNlciB7CisJCisJcHJpdmF0ZSBTdHJpbmcgZmlyc3RuYW1lOworCXByaXZhdGUgU3RyaW5nIGxhc3RuYW1lOworCXByaXZhdGUgU3RyaW5nIHB1YmxpY1NJRDsKKwlwcml2YXRlIGxvbmcgYnJvYWRjYXN0SWQ7CisJcHJpdmF0ZSBCb29sZWFuIGlzQnJvYWRDYXN0aW5nOworCXByaXZhdGUgU3RyaW5nIGF2c2V0dGluZ3M7CisJCisJcHVibGljIFN0cmluZyBnZXRGaXJzdG5hbWUoKSB7CisJCXJldHVybiBmaXJzdG5hbWU7CisJfQorCXB1YmxpYyB2b2lkIHNldEZpcnN0bmFtZShTdHJpbmcgZmlyc3RuYW1lKSB7CisJCXRoaXMuZmlyc3RuYW1lID0gZmlyc3RuYW1lOworCX0KKwlwdWJsaWMgU3RyaW5nIGdldExhc3RuYW1lKCkgeworCQlyZXR1cm4gbGFzdG5hbWU7CisJfQorCXB1YmxpYyB2b2lkIHNldExhc3RuYW1lKFN0cmluZyBsYXN0bmFtZSkgeworCQl0aGlzLmxhc3RuYW1lID0gbGFzdG5hbWU7CisJfQorCXB1YmxpYyBCb29sZWFuIGdldElzQnJvYWRDYXN0aW5nKCkgeworCQlyZXR1cm4gaXNCcm9hZENhc3Rpbmc7CisJfQorCXB1YmxpYyB2b2lkIHNldElzQnJvYWRDYXN0aW5nKEJvb2xlYW4gaXNCcm9hZENhc3RpbmcpIHsKKwkJdGhpcy5pc0Jyb2FkQ2FzdGluZyA9IGlzQnJvYWRDYXN0aW5nOworCX0KKwlwdWJsaWMgU3RyaW5nIGdldEF2c2V0dGluZ3MoKSB7CisJCXJldHVybiBhdnNldHRpbmdzOworCX0KKwlwdWJsaWMgdm9pZCBzZXRBdnNldHRpbmdzKFN0cmluZyBhdnNldHRpbmdzKSB7CisJCXRoaXMuYXZzZXR0aW5ncyA9IGF2c2V0dGluZ3M7CisJfQorCXB1YmxpYyBTdHJpbmcgZ2V0UHVibGljU0lEKCkgeworCQlyZXR1cm4gcHVibGljU0lEOworCX0KKwlwdWJsaWMgdm9pZCBzZXRQdWJsaWNTSUQoU3RyaW5nIHB1YmxpY1NJRCkgeworCQl0aGlzLnB1YmxpY1NJRCA9IHB1YmxpY1NJRDsKKwl9CisJcHVibGljIGxvbmcgZ2V0QnJvYWRjYXN0SWQoKSB7CisJCXJldHVybiBicm9hZGNhc3RJZDsKKwl9CisJcHVibGljIHZvaWQgc2V0QnJvYWRjYXN0SWQobG9uZyBicm9hZGNhc3RJZCkgeworCQl0aGlzLmJyb2FkY2FzdElkID0gYnJvYWRjYXN0SWQ7CisJfQorCQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2F4aXMvc2VydmljZXMvUm9vbVdlYlNlcnZpY2UuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9heGlzL3NlcnZpY2VzL1Jvb21XZWJTZXJ2aWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTZjMzk3MAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9heGlzL3NlcnZpY2VzL1Jvb21XZWJTZXJ2aWNlLmphdmEKQEAgLTAsMCArMSwyNTE3IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmF4aXMuc2VydmljZXM7CisKK2ltcG9ydCBqYXZhLnV0aWwuQ2FsZW5kYXI7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworaW1wb3J0IGphdmEudXRpbC5MaW5rZWRMaXN0OworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5NYXA7CisKK2ltcG9ydCBvcmcuYXBhY2hlLmF4aXMyLkF4aXNGYXVsdDsKK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuYmVhbnV0aWxzLlByb3BlcnR5VXRpbHM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuQXV0aExldmVsVXRpbDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLlNlc3Npb25kYXRhRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmVhbnMuYmFzaWMuU2VhcmNoUmVzdWx0OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY2FsZW5kYXIuZGFvcy5BcHBvaW50bWVudERhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNhbGVuZGFyLm1hbmFnZW1lbnQuTWVldGluZ01lbWJlckxvZ2ljOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY29uZmVyZW5jZS5JbnZpdGF0aW9uTWFuYWdlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNvbmZlcmVuY2UuUm9vbU1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jb25mZXJlbmNlLmRhby5Sb29tRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuZmx2cmVjb3JkLkZsdlJlY29yZGluZ0RhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuVXNlck1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuY2FsZW5kYXIuQXBwb2ludG1lbnQ7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuZmx2cmVjb3JkLkZsdlJlY29yZGluZzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5pbnZpdGF0aW9uLkludml0YXRpb25zOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnJvb20uQ2xpZW50OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnJvb20uUm9vbTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tLlJvb21UeXBlOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuVXNlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5yZW1vdGUuQ29uZmVyZW5jZVNlcnZpY2U7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucmVtb3RlLnJlZDUuU2NvcGVBcHBsaWNhdGlvbkFkYXB0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2Vzc2lvbi5JU2Vzc2lvbk1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMubWF0aC5DYWxlbmRhclBhdHRlcm5zOworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5BdXRvd2lyZWQ7CisKKy8qKgorICogUm9vbVNlcnZpY2UgY29udGFpbnMgbWV0aG9kcyB0byBtYW5pcHVsYXRlIHJvb21zIGFuZCBjcmVhdGUgaW52aXRhdGlvbiBoYXNoCisgKiAKKyAqIEBhdXRob3Igc2ViYXdhZ25lcgorICogQHdlYnNlcnZpY2UgUm9vbVNlcnZpY2UKKyAqIAorICovCitwdWJsaWMgY2xhc3MgUm9vbVdlYlNlcnZpY2UgeworCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcigKKwkJCVJvb21XZWJTZXJ2aWNlLmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBBcHBvaW50bWVudERhbyBhcHBvaW50bWVudERhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBTZXNzaW9uZGF0YURhbyBzZXNzaW9uZGF0YURhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBVc2VyTWFuYWdlciB1c2VyTWFuYWdlcjsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBSb29tTWFuYWdlciByb29tTWFuYWdlcjsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBGbHZSZWNvcmRpbmdEYW8gZmx2UmVjb3JkaW5nRGFvOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEludml0YXRpb25NYW5hZ2VyIGludml0YXRpb25NYW5hZ2VyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFNjb3BlQXBwbGljYXRpb25BZGFwdGVyIHNjb3BlQXBwbGljYXRpb25BZGFwdGVyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEF1dGhMZXZlbFV0aWwgYXV0aExldmVsVXRpbDsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBDb25mZXJlbmNlU2VydmljZSBjb25mZXJlbmNlU2VydmljZTsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBJU2Vzc2lvbk1hbmFnZXIgc2Vzc2lvbk1hbmFnZXI7CisJQEF1dG93aXJlZAorCXByaXZhdGUgTWVldGluZ01lbWJlckxvZ2ljIG1lZXRpbmdNZW1iZXJMb2dpYzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBSb29tRGFvIHJvb21EYW87CisKKwkvKioKKwkgKiBSZXR1cm5zIGFuIE9iamVjdCBvZiBUeXBlIFJvb21zTGlzdCB3aGljaCBjb250YWlucyBhIGxpc3Qgb2YKKwkgKiBSb29tLU9iamVjdHMuIEV2ZXJ5IFJvb20tT2JqZWN0IGNvbnRhaW5zIGEgUm9vbXR5cGUgYW5kIGFsbCBpbmZvcm1hdGlvbnMKKwkgKiBhYm91dCB0aGF0IFJvb20uIFRoZSBMaXN0IG9mIGN1cnJlbnQtdXNlcnMgaW4gdGhlIHJvb20gaXMgTnVsbCBpZiB5b3UgZ2V0CisJICogdGhlbSB2aWEgU09BUC4gVGhlIFJvb210eXBlIGNhbiBiZSAxIGZvciBjb25mZXJlbmNlIHJvb21zIG9yIDIgZm9yCisJICogYXVkaWVuY2Ugcm9vbXMuCisJICogCisJICogQHBhcmFtIFNJRAorCSAqICAgICAgICAgICAgVGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgTG9nZ2VkaW4KKwkgKiBAcGFyYW0gcm9vbXR5cGVzX2lkCisJICogQHJldHVybiAtIGxpc3Qgb2YgcHVibGljIHJvb21zCisJICogQHRocm93cyBBeGlzRmF1bHQKKwkgKi8KKwlwdWJsaWMgUm9vbVtdIGdldFJvb21zUHVibGljKFN0cmluZyBTSUQsIExvbmcgcm9vbXR5cGVzX2lkKQorCQkJdGhyb3dzIEF4aXNGYXVsdCB7CisJCXRyeSB7CisKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgVXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1dlYlNlcnZpY2VMZXZlbChVc2VyX2xldmVsKSkgeworCisJCQkJTGlzdDxSb29tPiByb29tTGlzdCA9IHJvb21NYW5hZ2VyLmdldFB1YmxpY1Jvb21zKAorCQkJCQkJVXNlcl9sZXZlbCwgcm9vbXR5cGVzX2lkKTsKKwkJCQkvLyBXZSBuZWVkIHRvIHJlLW1hcnNoYWwgdGhlIFJvb21zIG9iamVjdCBjYXVzZSBBeGlzMiBjYW5ub3QgdXNlCisJCQkJLy8gb3VyIG9iamVjdHMKKwkJCQlpZiAocm9vbUxpc3QgIT0gbnVsbCAmJiByb29tTGlzdC5zaXplKCkgIT0gMCkgeworCQkJCQkvLyByb29tc0xpc3RPYmplY3Quc2V0Um9vbUxpc3Qocm9vbUxpc3QpOworCQkJCQlSb29tW10gcm9vbUl0ZW1zID0gbmV3IFJvb21bcm9vbUxpc3Quc2l6ZSgpXTsKKwkJCQkJaW50IGNvdW50ID0gMDsKKwkJCQkJZm9yIChJdGVyYXRvcjxSb29tPiBpdCA9IHJvb21MaXN0Lml0ZXJhdG9yKCk7IGl0Lmhhc05leHQoKTspIHsKKwkJCQkJCVJvb20gcm9vbSA9IGl0Lm5leHQoKTsKKwkJCQkJCXJvb20uc2V0Q3VycmVudHVzZXJzKG51bGwpOworCQkJCQkJcm9vbUl0ZW1zW2NvdW50XSA9IHJvb207CisJCQkJCQljb3VudCsrOworCQkJCQl9CisKKwkJCQkJcmV0dXJuIHJvb21JdGVtczsKKwkJCQl9CisJCQkJbG9nLmRlYnVnKCJyb29tTGlzdCBTSVpFOiAiICsgcm9vbUxpc3Quc2l6ZSgpKTsKKworCQkJfQorCQkJcmV0dXJuIG51bGw7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2dldFJvb21zUHVibGljXSAiLCBlcnIpOworCQkJdGhyb3cgbmV3IEF4aXNGYXVsdChlcnIuZ2V0TWVzc2FnZSgpKTsKKwkJfQorCX0KKworCS8qKgorCSAqIERlbGV0ZXMgYSBmbHYgcmVjb3JkaW5nCisJICogCisJICogQHBhcmFtIFNJRAorCSAqICAgICAgICAgICAgVGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgTG9nZ2VkaW4KKwkgKiBAcGFyYW0gZmx2UmVjb3JkaW5nSWQKKwkgKiAgICAgICAgICAgIHRoZSBpZCBvZiB0aGUgcmVjb3JkaW5nCisJICogICAgICAgICAgICAKKwkgKiBAcmV0dXJuIC0gdHJ1ZSBpZiByZWNvcmRpbmcgd2FzIGRlbGV0ZWQKKwkgKiBAdGhyb3dzIEF4aXNGYXVsdAorCSAqLworCXB1YmxpYyBib29sZWFuIGRlbGV0ZUZsdlJlY29yZGluZyhTdHJpbmcgU0lELCBMb25nIGZsdlJlY29yZGluZ0lkKQorCQkJdGhyb3dzIEF4aXNGYXVsdCB7CisJCXRyeSB7CisKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1dlYlNlcnZpY2VMZXZlbCh1c2VyX2xldmVsKSkgeworCQkJCXJldHVybiBmbHZSZWNvcmRpbmdEYW8uZGVsZXRlRmx2UmVjb3JkaW5nKGZsdlJlY29yZGluZ0lkKTsKKwkJCX0KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltkZWxldGVGbHZSZWNvcmRpbmddICIsIGVycik7CisJCQl0aHJvdyBuZXcgQXhpc0ZhdWx0KGVyci5nZXRNZXNzYWdlKCkpOworCQl9CisKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCS8qKgorCSAqIEdldHMgYSBsaXN0IG9mIGZsdiByZWNvcmRpbmdzCisJICogCisJICogQHBhcmFtIFNJRAorCSAqICAgICAgICAgICAgVGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgTG9nZ2VkaW4KKwkgKiBAcGFyYW0gZXh0ZXJuYWxVc2VySWQKKwkgKiAgICAgICAgICAgIHRoZSBleHRlcm5hbFVzZXJJZAorCSAqICAgICAgICAgICAgCisJICogQHJldHVybiAtIGxpc3Qgb2YgZmx2IHJlY29yZGluZ3MKKwkgKiBAdGhyb3dzIEF4aXNGYXVsdAorCSAqLworCXB1YmxpYyBGTFZSZWNvcmRpbmdSZXR1cm5bXSBnZXRGbHZSZWNvcmRpbmdCeUV4dGVybmFsVXNlcklkKFN0cmluZyBTSUQsCisJCQlTdHJpbmcgZXh0ZXJuYWxVc2VySWQpIHRocm93cyBBeGlzRmF1bHQgeworCQl0cnkgeworCisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tXZWJTZXJ2aWNlTGV2ZWwodXNlcl9sZXZlbCkpIHsKKwkJCQlMaXN0PEZsdlJlY29yZGluZz4gcmVjb3JkaW5nTGlzdCA9IGZsdlJlY29yZGluZ0RhbworCQkJCQkJLmdldEZsdlJlY29yZGluZ0J5RXh0ZXJuYWxVc2VySWQoZXh0ZXJuYWxVc2VySWQpOworCisJCQkJLy8gV2UgbmVlZCB0byByZS1tYXJzaGFsIHRoZSBSb29tcyBvYmplY3QgY2F1c2UgQXhpczIgY2Fubm90IHVzZQorCQkJCS8vIG91ciBvYmplY3RzCisJCQkJaWYgKHJlY29yZGluZ0xpc3QgIT0gbnVsbCAmJiByZWNvcmRpbmdMaXN0LnNpemUoKSAhPSAwKSB7CisJCQkJCS8vIHJvb21zTGlzdE9iamVjdC5zZXRSb29tTGlzdChyb29tTGlzdCk7CisJCQkJCUZMVlJlY29yZGluZ1JldHVybltdIHJlY29yZGluZ0xpc3RJdGVtcyA9IG5ldyBGTFZSZWNvcmRpbmdSZXR1cm5bcmVjb3JkaW5nTGlzdAorCQkJCQkJCS5zaXplKCldOworCQkJCQlpbnQgY291bnQgPSAwOworCQkJCQlmb3IgKEl0ZXJhdG9yPEZsdlJlY29yZGluZz4gaXQgPSByZWNvcmRpbmdMaXN0Lml0ZXJhdG9yKCk7IGl0CisJCQkJCQkJLmhhc05leHQoKTspIHsKKwkJCQkJCUZsdlJlY29yZGluZyBmbHZSZWNvcmRpbmcgPSBpdC5uZXh0KCk7CisJCQkJCQlyZWNvcmRpbmdMaXN0SXRlbXNbY291bnRdID0gRkxWUmVjb3JkaW5nUmV0dXJuCisJCQkJCQkJCS5pbml0T2JqZWN0KGZsdlJlY29yZGluZyk7CisJCQkJCQljb3VudCsrOworCQkJCQl9CisKKwkJCQkJcmV0dXJuIHJlY29yZGluZ0xpc3RJdGVtczsKKwkJCQl9CisKKwkJCQlyZXR1cm4gbnVsbDsKKwkJCX0KKworCQkJcmV0dXJuIG51bGw7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2dldEZsdlJlY29yZGluZ0J5RXh0ZXJuYWxSb29tVHlwZV0gIiwgZXJyKTsKKwkJCXRocm93IG5ldyBBeGlzRmF1bHQoZXJyLmdldE1lc3NhZ2UoKSk7CisJCX0KKwl9CisKKwkvKioKKwkgKiBHZXRzIGEgbGlzdCBvZiBmbHYgcmVjb3JkaW5ncworCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiAgICAgICAgICAgIFRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIExvZ2dlZGluCisJICogQHBhcmFtIGV4dGVybmFsUm9vbVR5cGUKKwkgKiAgICAgICAgICAgIGV4dGVybmFsUm9vbVR5cGUgc3BlY2lmaWVkIHdoZW4gY3JlYXRpbmcgdGhlIHJvb20KKwkgKiBAcGFyYW0gaW5zZXJ0ZWRCeQorCSAqICAgICAgICAgICAgdGhlIHVzZXJJZCB0aGF0IGNyZWF0ZWQgdGhlIHJlY29yZGluZworCSAqIEByZXR1cm4gLSBsaXN0IG9mIGZsdiByZWNvcmRpbmdzCisJICogQHRocm93cyBBeGlzRmF1bHQKKwkgKi8KKwlwdWJsaWMgRkxWUmVjb3JkaW5nUmV0dXJuW10gZ2V0Rmx2UmVjb3JkaW5nQnlFeHRlcm5hbFJvb21UeXBlQW5kQ3JlYXRvcigKKwkJCVN0cmluZyBTSUQsIFN0cmluZyBleHRlcm5hbFJvb21UeXBlLCBMb25nIGluc2VydGVkQnkpCisJCQl0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJdHJ5IHsKKworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrV2ViU2VydmljZUxldmVsKHVzZXJfbGV2ZWwpKSB7CisJCQkJTGlzdDxGbHZSZWNvcmRpbmc+IHJlY29yZGluZ0xpc3QgPSBmbHZSZWNvcmRpbmdEYW8KKwkJCQkJCS5nZXRGbHZSZWNvcmRpbmdCeUV4dGVybmFsUm9vbVR5cGVBbmRDcmVhdG9yKAorCQkJCQkJCQlleHRlcm5hbFJvb21UeXBlLCBpbnNlcnRlZEJ5KTsKKworCQkJCS8vIFdlIG5lZWQgdG8gcmUtbWFyc2hhbCB0aGUgUm9vbXMgb2JqZWN0IGNhdXNlIEF4aXMyIGNhbm5vdCB1c2UKKwkJCQkvLyBvdXIgb2JqZWN0cworCQkJCWlmIChyZWNvcmRpbmdMaXN0ICE9IG51bGwgJiYgcmVjb3JkaW5nTGlzdC5zaXplKCkgIT0gMCkgeworCQkJCQkvLyByb29tc0xpc3RPYmplY3Quc2V0Um9vbUxpc3Qocm9vbUxpc3QpOworCQkJCQlGTFZSZWNvcmRpbmdSZXR1cm5bXSByZWNvcmRpbmdMaXN0SXRlbXMgPSBuZXcgRkxWUmVjb3JkaW5nUmV0dXJuW3JlY29yZGluZ0xpc3QKKwkJCQkJCQkuc2l6ZSgpXTsKKwkJCQkJaW50IGNvdW50ID0gMDsKKwkJCQkJZm9yIChJdGVyYXRvcjxGbHZSZWNvcmRpbmc+IGl0ID0gcmVjb3JkaW5nTGlzdC5pdGVyYXRvcigpOyBpdAorCQkJCQkJCS5oYXNOZXh0KCk7KSB7CisJCQkJCQlGbHZSZWNvcmRpbmcgZmx2UmVjb3JkaW5nID0gaXQubmV4dCgpOworCQkJCQkJcmVjb3JkaW5nTGlzdEl0ZW1zW2NvdW50XSA9IEZMVlJlY29yZGluZ1JldHVybgorCQkJCQkJCQkuaW5pdE9iamVjdChmbHZSZWNvcmRpbmcpOworCQkJCQkJY291bnQrKzsKKwkJCQkJfQorCisJCQkJCXJldHVybiByZWNvcmRpbmdMaXN0SXRlbXM7CisJCQkJfQorCisJCQkJcmV0dXJuIG51bGw7CisJCQl9CisKKwkJCXJldHVybiBudWxsOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRGbHZSZWNvcmRpbmdCeUV4dGVybmFsUm9vbVR5cGVdICIsIGVycik7CisJCQl0aHJvdyBuZXcgQXhpc0ZhdWx0KGVyci5nZXRNZXNzYWdlKCkpOworCQl9CisJfQorCisJLyoqCisJICogR2V0cyBhIGxpc3Qgb2YgZmx2IHJlY29yZGluZ3MKKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogICAgICAgICAgICBUaGUgU0lEIG9mIHRoZSBVc2VyLiBUaGlzIFNJRCBtdXN0IGJlIG1hcmtlZCBhcyBMb2dnZWRpbgorCSAqIEBwYXJhbSBleHRlcm5hbFJvb21UeXBlCisJICogICAgICAgICAgICBleHRlcm5hbFJvb21UeXBlIHNwZWNpZmllZCB3aGVuIGNyZWF0aW5nIHRoZSByb29tCisJICogQHJldHVybiAtIGxpc3Qgb2YgZmx2IHJlY29yZGluZ3MKKwkgKiBAdGhyb3dzIEF4aXNGYXVsdAorCSAqLworCXB1YmxpYyBMaXN0PEZsdlJlY29yZGluZz4gZ2V0Rmx2UmVjb3JkaW5nQnlFeHRlcm5hbFJvb21UeXBlQnlMaXN0KAorCQkJU3RyaW5nIFNJRCwgU3RyaW5nIGV4dGVybmFsUm9vbVR5cGUpIHRocm93cyBBeGlzRmF1bHQgeworCQl0cnkgeworCisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tXZWJTZXJ2aWNlTGV2ZWwodXNlcl9sZXZlbCkpIHsKKwkJCQlyZXR1cm4gZmx2UmVjb3JkaW5nRGFvCisJCQkJCQkuZ2V0Rmx2UmVjb3JkaW5nQnlFeHRlcm5hbFJvb21UeXBlKGV4dGVybmFsUm9vbVR5cGUpOworCisJCQl9CisKKwkJCXJldHVybiBudWxsOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRGbHZSZWNvcmRpbmdCeUV4dGVybmFsUm9vbVR5cGVdICIsIGVycik7CisJCQl0aHJvdyBuZXcgQXhpc0ZhdWx0KGVyci5nZXRNZXNzYWdlKCkpOworCQl9CisJfQorCisJLyoqCisJICogR2V0cyBhIGxpc3Qgb2YgZmx2IHJlY29yZGluZ3MKKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogICAgICAgICAgICBUaGUgU0lEIG9mIHRoZSBVc2VyLiBUaGlzIFNJRCBtdXN0IGJlIG1hcmtlZCBhcyBMb2dnZWRpbgorCSAqIEBwYXJhbSBleHRlcm5hbFJvb21UeXBlCisJICogICAgICAgICAgICBleHRlcm5hbFJvb21UeXBlIHNwZWNpZmllZCB3aGVuIGNyZWF0aW5nIHRoZSByb29tCisJICogQHJldHVybiAtIGxpc3Qgb2YgZmx2IHJlY29yZGluZ3MKKwkgKiBAdGhyb3dzIEF4aXNGYXVsdAorCSAqLworCXB1YmxpYyBGbHZSZWNvcmRpbmdbXSBnZXRGbHZSZWNvcmRpbmdCeUV4dGVybmFsUm9vbVR5cGUoU3RyaW5nIFNJRCwKKwkJCVN0cmluZyBleHRlcm5hbFJvb21UeXBlKSB0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJdHJ5IHsKKworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrV2ViU2VydmljZUxldmVsKHVzZXJfbGV2ZWwpKSB7CisJCQkJTGlzdDxGbHZSZWNvcmRpbmc+IHJlY29yZGluZ0xpc3QgPSBmbHZSZWNvcmRpbmdEYW8KKwkJCQkJCS5nZXRGbHZSZWNvcmRpbmdCeUV4dGVybmFsUm9vbVR5cGUoZXh0ZXJuYWxSb29tVHlwZSk7CisKKwkJCQkvLyBXZSBuZWVkIHRvIHJlLW1hcnNoYWwgdGhlIFJvb21zIG9iamVjdCBjYXVzZSBBeGlzMiBjYW5ub3QgdXNlCisJCQkJLy8gb3VyIG9iamVjdHMKKwkJCQlpZiAocmVjb3JkaW5nTGlzdCAhPSBudWxsICYmIHJlY29yZGluZ0xpc3Quc2l6ZSgpICE9IDApIHsKKwkJCQkJLy8gcm9vbXNMaXN0T2JqZWN0LnNldFJvb21MaXN0KHJvb21MaXN0KTsKKwkJCQkJRmx2UmVjb3JkaW5nW10gcmVjb3JkaW5nTGlzdEl0ZW1zID0gbmV3IEZsdlJlY29yZGluZ1tyZWNvcmRpbmdMaXN0CisJCQkJCQkJLnNpemUoKV07CisJCQkJCWludCBjb3VudCA9IDA7CisJCQkJCWZvciAoSXRlcmF0b3I8Rmx2UmVjb3JkaW5nPiBpdCA9IHJlY29yZGluZ0xpc3QuaXRlcmF0b3IoKTsgaXQKKwkJCQkJCQkuaGFzTmV4dCgpOykgeworCQkJCQkJRmx2UmVjb3JkaW5nIGZsdlJlY29yZGluZyA9IGl0Lm5leHQoKTsKKwkJCQkJCXJlY29yZGluZ0xpc3RJdGVtc1tjb3VudF0gPSBmbHZSZWNvcmRpbmc7CisJCQkJCQljb3VudCsrOworCQkJCQl9CisKKwkJCQkJcmV0dXJuIHJlY29yZGluZ0xpc3RJdGVtczsKKwkJCQl9CisKKwkJCQlyZXR1cm4gbnVsbDsKKwkJCX0KKworCQkJcmV0dXJuIG51bGw7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2dldEZsdlJlY29yZGluZ0J5RXh0ZXJuYWxSb29tVHlwZV0gIiwgZXJyKTsKKwkJCXRocm93IG5ldyBBeGlzRmF1bHQoZXJyLmdldE1lc3NhZ2UoKSk7CisJCX0KKwl9CisKKwkvKioKKwkgKiBHZXQgbGlzdCBvZiByZWNvcmRpbmdzCisJICogCisJICogQHBhcmFtIFNJRAorCSAqICAgICAgICAgICAgVGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgTG9nZ2VkaW4KKwkgKiBAcGFyYW0gcm9vbUlkCisJICogICAgICAgICAgICB0aGUgcm9vbSBpZAorCSAqIEByZXR1cm4gLSBsaXN0IG9mIHJlY29yZGluZ3MKKwkgKiBAdGhyb3dzIEF4aXNGYXVsdAorCSAqLworCXB1YmxpYyBGbHZSZWNvcmRpbmdbXSBnZXRGbHZSZWNvcmRpbmdCeVJvb21JZChTdHJpbmcgU0lELCBMb25nIHJvb21JZCkKKwkJCXRocm93cyBBeGlzRmF1bHQgeworCQl0cnkgeworCisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tXZWJTZXJ2aWNlTGV2ZWwodXNlcl9sZXZlbCkpIHsKKworCQkJCUxpc3Q8Rmx2UmVjb3JkaW5nPiByZWNvcmRpbmdMaXN0ID0gZmx2UmVjb3JkaW5nRGFvCisJCQkJCQkuZ2V0Rmx2UmVjb3JkaW5nQnlSb29tSWQocm9vbUlkKTsKKworCQkJCS8vIFdlIG5lZWQgdG8gcmUtbWFyc2hhbCB0aGUgUm9vbXMgb2JqZWN0IGNhdXNlIEF4aXMyIGNhbm5vdCB1c2UKKwkJCQkvLyBvdXIgb2JqZWN0cworCQkJCWlmIChyZWNvcmRpbmdMaXN0ICE9IG51bGwgJiYgcmVjb3JkaW5nTGlzdC5zaXplKCkgIT0gMCkgeworCQkJCQkvLyByb29tc0xpc3RPYmplY3Quc2V0Um9vbUxpc3Qocm9vbUxpc3QpOworCQkJCQlGbHZSZWNvcmRpbmdbXSByZWNvcmRpbmdMaXN0SXRlbXMgPSBuZXcgRmx2UmVjb3JkaW5nW3JlY29yZGluZ0xpc3QKKwkJCQkJCQkuc2l6ZSgpXTsKKwkJCQkJaW50IGNvdW50ID0gMDsKKwkJCQkJZm9yIChJdGVyYXRvcjxGbHZSZWNvcmRpbmc+IGl0ID0gcmVjb3JkaW5nTGlzdC5pdGVyYXRvcigpOyBpdAorCQkJCQkJCS5oYXNOZXh0KCk7KSB7CisJCQkJCQlGbHZSZWNvcmRpbmcgZmx2UmVjb3JkaW5nID0gaXQubmV4dCgpOworCQkJCQkJcmVjb3JkaW5nTGlzdEl0ZW1zW2NvdW50XSA9IGZsdlJlY29yZGluZzsKKwkJCQkJCWNvdW50Kys7CisJCQkJCX0KKworCQkJCQlyZXR1cm4gcmVjb3JkaW5nTGlzdEl0ZW1zOworCQkJCX0KKworCQkJCXJldHVybiBudWxsOworCQkJfQorCisJCQlyZXR1cm4gbnVsbDsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbZ2V0Rmx2UmVjb3JkaW5nQnlFeHRlcm5hbFJvb21UeXBlXSAiLCBlcnIpOworCQkJdGhyb3cgbmV3IEF4aXNGYXVsdChlcnIuZ2V0TWVzc2FnZSgpKTsKKwkJfQorCX0KKworCS8qKgorCSAqIExpc3Qgb2YgYXZhaWxhYmxlIHJvb20gdHlwZXMKKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogICAgICAgICAgICBUaGUgU0lEIG9mIHRoZSBVc2VyLiBUaGlzIFNJRCBtdXN0IGJlIG1hcmtlZCBhcyBMb2dnZWRpbgorCSAqIEByZXR1cm4gLSBMaXN0IG9mIGF2YWlsYWJsZSByb29tIHR5cGVzCisJICogQHRocm93cyBBeGlzRmF1bHQKKwkgKi8KKwlwdWJsaWMgUm9vbVR5cGVbXSBnZXRSb29tVHlwZXMoU3RyaW5nIFNJRCkgdGhyb3dzIEF4aXNGYXVsdCB7CisJCXRyeSB7CisJCQlMaXN0PFJvb21UeXBlPiByb21tVHlwZXNMaXN0ID0gY29uZmVyZW5jZVNlcnZpY2UuZ2V0Um9vbVR5cGVzKFNJRCk7CisJCQlSb29tVHlwZVtdIHJvb21UeXBlc0FycmF5ID0gbmV3IFJvb21UeXBlW3JvbW1UeXBlc0xpc3Quc2l6ZSgpXTsKKworCQkJaW50IGNvdW50ID0gMDsKKwkJCWZvciAoSXRlcmF0b3I8Um9vbVR5cGU+IGl0ID0gcm9tbVR5cGVzTGlzdC5pdGVyYXRvcigpOyBpdAorCQkJCQkuaGFzTmV4dCgpOykgeworCQkJCVJvb21UeXBlIHJvb21UeXBlID0gaXQubmV4dCgpOworCQkJCXJvb21UeXBlc0FycmF5W2NvdW50XSA9IHJvb21UeXBlOworCQkJCWNvdW50Kys7CisJCQl9CisKKwkJCXJldHVybiByb29tVHlwZXNBcnJheTsKKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRSb29tVHlwZXNdIiwgZXJyKTsKKwkJCXRocm93IG5ldyBBeGlzRmF1bHQoZXJyLmdldE1lc3NhZ2UoKSk7CisJCX0KKwl9CisKKwkvKioKKwkgKiBSZXR1cm5zIGN1cnJlbnQgdXNlcnMgZm9yIHJvb21zIGlkcworCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiAgICAgICAgICAgIFRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIExvZ2dlZGluCisJICogQHBhcmFtIHJvb21JZDEKKwkgKiBAcGFyYW0gcm9vbUlkMgorCSAqIEBwYXJhbSByb29tSWQzCisJICogQHBhcmFtIHJvb21JZDQKKwkgKiBAcGFyYW0gcm9vbUlkNQorCSAqIEBwYXJhbSByb29tSWQ2CisJICogQHBhcmFtIHJvb21JZDcKKwkgKiBAcGFyYW0gcm9vbUlkOAorCSAqIEBwYXJhbSByb29tSWQ5CisJICogQHBhcmFtIHJvb21JZDEwCisJICogQHJldHVybiAtIGN1cnJlbnQgdXNlcnMgZm9yIHJvb21zIGlkcworCSAqIEB0aHJvd3MgQXhpc0ZhdWx0CisJICovCisJcHVibGljIFJvb21Db3VudEJlYW5bXSBnZXRSb29tQ291bnRlcnMoU3RyaW5nIFNJRCwgSW50ZWdlciByb29tSWQxLAorCQkJSW50ZWdlciByb29tSWQyLCBJbnRlZ2VyIHJvb21JZDMsIEludGVnZXIgcm9vbUlkNCwgSW50ZWdlciByb29tSWQ1LAorCQkJSW50ZWdlciByb29tSWQ2LCBJbnRlZ2VyIHJvb21JZDcsIEludGVnZXIgcm9vbUlkOCwgSW50ZWdlciByb29tSWQ5LAorCQkJSW50ZWdlciByb29tSWQxMCkgdGhyb3dzIEF4aXNGYXVsdCB7CisJCXRyeSB7CisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tXZWJTZXJ2aWNlTGV2ZWwodXNlcl9sZXZlbCkpIHsKKworCQkJCUxpbmtlZExpc3Q8SW50ZWdlcj4gcm9vbUlkcyA9IG5ldyBMaW5rZWRMaXN0PEludGVnZXI+KCk7CisKKwkJCQlpZiAocm9vbUlkMSAhPSBudWxsICYmIHJvb21JZDEgPiAwKSB7CisJCQkJCXJvb21JZHMucHVzaChyb29tSWQxKTsKKwkJCQl9CisJCQkJaWYgKHJvb21JZDIgIT0gbnVsbCAmJiByb29tSWQyID4gMCkgeworCQkJCQlsb2cuZGVidWcoInJvb21JZDIgOjogIiArIHJvb21JZDIpOworCQkJCQlyb29tSWRzLnB1c2gocm9vbUlkMik7CisJCQkJfQorCQkJCWlmIChyb29tSWQzICE9IG51bGwgJiYgcm9vbUlkMyA+IDApIHsKKwkJCQkJcm9vbUlkcy5wdXNoKHJvb21JZDMpOworCQkJCX0KKwkJCQlpZiAocm9vbUlkNCAhPSBudWxsICYmIHJvb21JZDQgPiAwKSB7CisJCQkJCXJvb21JZHMucHVzaChyb29tSWQ0KTsKKwkJCQl9CisJCQkJaWYgKHJvb21JZDUgIT0gbnVsbCAmJiByb29tSWQ1ID4gMCkgeworCQkJCQlyb29tSWRzLnB1c2gocm9vbUlkNSk7CisJCQkJfQorCQkJCWlmIChyb29tSWQ2ICE9IG51bGwgJiYgcm9vbUlkNiA+IDApIHsKKwkJCQkJcm9vbUlkcy5wdXNoKHJvb21JZDYpOworCQkJCX0KKwkJCQlpZiAocm9vbUlkNyAhPSBudWxsICYmIHJvb21JZDcgPiAwKSB7CisJCQkJCXJvb21JZHMucHVzaChyb29tSWQ3KTsKKwkJCQl9CisJCQkJaWYgKHJvb21JZDggIT0gbnVsbCAmJiByb29tSWQ4ID4gMCkgeworCQkJCQlyb29tSWRzLnB1c2gocm9vbUlkOCk7CisJCQkJfQorCQkJCWlmIChyb29tSWQ5ICE9IG51bGwgJiYgcm9vbUlkOSA+IDApIHsKKwkJCQkJcm9vbUlkcy5wdXNoKHJvb21JZDkpOworCQkJCX0KKwkJCQlpZiAocm9vbUlkMTAgIT0gbnVsbCAmJiByb29tSWQxMCA+IDApIHsKKwkJCQkJcm9vbUlkcy5wdXNoKHJvb21JZDEwKTsKKwkJCQl9CisKKwkJCQlMaXN0PFJvb20+IHJvb21zID0gcm9vbU1hbmFnZXIuZ2V0Um9vbXNCeUlkcyhyb29tSWRzKTsKKworCQkJCVJvb21Db3VudEJlYW5bXSByb29tc0FycmF5ID0gbmV3IFJvb21Db3VudEJlYW5bcm9vbXMuc2l6ZSgpXTsKKworCQkJCWludCBpID0gMDsKKwkJCQlmb3IgKFJvb20gcm9vbSA6IHJvb21zKSB7CisJCQkJCVJvb21Db3VudEJlYW4gckNvdW50QmVhbiA9IG5ldyBSb29tQ291bnRCZWFuKCk7CisJCQkJCXJDb3VudEJlYW4uc2V0Um9vbUlkKHJvb20uZ2V0Um9vbXNfaWQoKSk7CisJCQkJCXJDb3VudEJlYW4uc2V0Um9vbU5hbWUocm9vbS5nZXROYW1lKCkpOworCQkJCQlyQ291bnRCZWFuLnNldE1heFVzZXIocm9vbS5nZXROdW1iZXJPZlBhcnRpemlwYW50cygpCisJCQkJCQkJLmludFZhbHVlKCkpOworCQkJCQlyQ291bnRCZWFuLnNldFJvb21Db3VudChzZXNzaW9uTWFuYWdlcgorCQkJCQkJCS5nZXRDbGllbnRMaXN0QnlSb29tKHJvb20uZ2V0Um9vbXNfaWQoKSkuc2l6ZSgpKTsKKworCQkJCQlyb29tc0FycmF5W2ldID0gckNvdW50QmVhbjsKKwkJCQkJaSsrOworCQkJCX0KKworCQkJCXJldHVybiByb29tc0FycmF5OworCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2dldFJvb21UeXBlc10iLCBlcnIpOworCQkJdGhyb3cgbmV3IEF4aXNGYXVsdChlcnIuZ2V0TWVzc2FnZSgpKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvKioKKwkgKiByZXR1cm5zIGEgY29uZmVyZW5jZSByb29tIG9iamVjdAorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiAgICAgICAgICAgIFRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIExvZ2dlZGluCisJICogQHBhcmFtIHJvb21zX2lkCisJICogICAgICAgICAgICB0aGUgcm9vbSBpZAorCSAqIEByZXR1cm4gLSByb29tIHdpdGggdGhlIGlkIGdpdmVuCisJICovCisJcHVibGljIFJvb20gZ2V0Um9vbUJ5SWQoU3RyaW5nIFNJRCwgbG9uZyByb29tc19pZCkgeworCQlyZXR1cm4gY29uZmVyZW5jZVNlcnZpY2UuZ2V0Um9vbUJ5SWQoU0lELCByb29tc19pZCk7CisJfQorCisJLyoqCisJICogQGRlcHJlY2F0ZWQgdGhpcyBmdW5jdGlvbiBpcyBpbnRlbmQgdG8gYmUgZGVsZXRlZAorCSAqIEBwYXJhbSBTSUQKKwkgKiAgICAgICAgICAgIFRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIExvZ2dlZGluCisJICogQHBhcmFtIHJvb21zX2lkCisJICogQHJldHVybiAtIHJvb20gd2l0aCB0aGUgaWQgZ2l2ZW4KKwkgKi8KKwlARGVwcmVjYXRlZAorCXB1YmxpYyBSb29tIGdldFJvb21XaXRoQ3VycmVudFVzZXJzQnlJZChTdHJpbmcgU0lELCBsb25nIHJvb21zX2lkKSB7CisJCXJldHVybiBjb25mZXJlbmNlU2VydmljZS5nZXRSb29tV2l0aEN1cnJlbnRVc2Vyc0J5SWQoU0lELCByb29tc19pZCk7CisJfQorCisJLyoqCisJICogUmV0dXJucyBhIG9iamVjdCBvZiB0eXBlIFJvb21SZXR1cm4KKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogICAgICAgICAgICBUaGUgU0lEIG9mIHRoZSBVc2VyLiBUaGlzIFNJRCBtdXN0IGJlIG1hcmtlZCBhcyBMb2dnZWRpbgorCSAqIEBwYXJhbSByb29tc19pZAorCSAqIEByZXR1cm4gLSBvYmplY3Qgb2YgdHlwZSBSb29tUmV0dXJuCisJICogQHRocm93cyBBeGlzRmF1bHQKKwkgKi8KKwlwdWJsaWMgUm9vbVJldHVybiBnZXRSb29tV2l0aENsaWVudE9iamVjdHNCeUlkKFN0cmluZyBTSUQsIGxvbmcgcm9vbXNfaWQpCisJCQl0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJdHJ5IHsKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1dlYlNlcnZpY2VMZXZlbCh1c2VyX2xldmVsKSkgeworCisJCQkJUm9vbSByb29tID0gcm9vbU1hbmFnZXIuZ2V0Um9vbUJ5SWQodXNlcl9sZXZlbCwgcm9vbXNfaWQpOworCisJCQkJUm9vbVJldHVybiByb29tUmV0dXJuID0gbmV3IFJvb21SZXR1cm4oKTsKKworCQkJCXJvb21SZXR1cm4uc2V0Q3JlYXRlZChyb29tLmdldFN0YXJ0dGltZSgpKTsKKwkJCQlyb29tUmV0dXJuLnNldENyZWF0b3IobnVsbCk7CisJCQkJcm9vbVJldHVybi5zZXROYW1lKHJvb20uZ2V0TmFtZSgpKTsKKwkJCQlyb29tUmV0dXJuLnNldFJvb21faWQocm9vbS5nZXRSb29tc19pZCgpKTsKKworCQkJCUxpc3Q8Q2xpZW50PiBtYXAgPSBzZXNzaW9uTWFuYWdlcgorCQkJCQkJLmdldENsaWVudExpc3RCeVJvb20ocm9vbS5nZXRSb29tc19pZCgpKTsKKworCQkJCVJvb21Vc2VyW10gcm9vbVVzZXJzID0gbmV3IFJvb21Vc2VyW21hcC5zaXplKCldOworCisJCQkJaW50IGkgPSAwOworCQkJCWZvciAoQ2xpZW50IHJjbCA6IG1hcCkgeworCQkJCQlSb29tVXNlciByb29tVXNlciA9IG5ldyBSb29tVXNlcigpOworCQkJCQlyb29tVXNlci5zZXRGaXJzdG5hbWUocmNsLmdldEZpcnN0bmFtZSgpKTsKKwkJCQkJcm9vbVVzZXIuc2V0TGFzdG5hbWUocmNsLmdldExhc3RuYW1lKCkpOworCQkJCQlyb29tVXNlci5zZXRCcm9hZGNhc3RJZChyY2wuZ2V0QnJvYWRDYXN0SUQoKSk7CisJCQkJCXJvb21Vc2VyLnNldFB1YmxpY1NJRChyY2wuZ2V0UHVibGljU0lEKCkpOworCQkJCQlyb29tVXNlci5zZXRJc0Jyb2FkQ2FzdGluZyhyY2wuZ2V0SXNCcm9hZGNhc3RpbmcoKSk7CisJCQkJCXJvb21Vc2VyLnNldEF2c2V0dGluZ3MocmNsLmdldEF2c2V0dGluZ3MoKSk7CisKKwkJCQkJcm9vbVVzZXJzW2krK10gPSByb29tVXNlcjsKKwkJCQl9CisKKwkJCQlyb29tUmV0dXJuLnNldFJvb21Vc2VyKHJvb21Vc2Vycyk7CisKKwkJCQlyZXR1cm4gcm9vbVJldHVybjsKKwkJCX0KKworCQkJcmV0dXJuIG51bGw7CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbZ2V0Um9vbVdpdGhDbGllbnRPYmplY3RzQnlJZF0iLCBlcnIpOworCQkJdGhyb3cgbmV3IEF4aXNGYXVsdChlcnIuZ2V0TWVzc2FnZSgpKTsKKwkJfQorCisJfQorCisJLyoqCisJICogUmV0dXJucyBhIExpc3Qgb2YgT2JqZWN0cyBvZiBSb29tcyBZb3UgY2FuIHVzZSAibmFtZSIgYXMgdmFsdWUgZm9yCisJICogb3JkZXJieSBvciByb29tc19pZAorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiAgICAgICAgICAgIFRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIExvZ2dlZGluCisJICogQHBhcmFtIHN0YXJ0CisJICogICAgICAgICAgICBUaGUgaWQgeW91IHdhbnQgdG8gc3RhcnQKKwkgKiBAcGFyYW0gbWF4CisJICogICAgICAgICAgICBUaGUgbWF4aW11bSB5b3Ugd2FudCB0byBnZXQKKwkgKiBAcGFyYW0gb3JkZXJieQorCSAqICAgICAgICAgICAgVGhlIGNvbHVtbiBpdCB3aWxsIGJlIG9yZGVyZWQKKwkgKiBAcGFyYW0gYXNjCisJICogICAgICAgICAgICBBc2Mgb3IgRGVzYyBzb3J0IG9yZGVyaW5nCisJICogICAgICAgICAgICAKKwkgKiBAcmV0dXJuIC0gTGlzdCBvZiBPYmplY3RzIG9mIFJvb21zCisJICovCisJcHVibGljIFNlYXJjaFJlc3VsdDxSb29tPiBnZXRSb29tcyhTdHJpbmcgU0lELCBpbnQgc3RhcnQsIGludCBtYXgsCisJCQlTdHJpbmcgb3JkZXJieSwgYm9vbGVhbiBhc2MpIHsKKwkJcmV0dXJuIGNvbmZlcmVuY2VTZXJ2aWNlLmdldFJvb21zKFNJRCwgc3RhcnQsIG1heCwgb3JkZXJieSwgYXNjLCAiIik7CisJfQorCisJLyoqCisJICogUmV0dXJucyBhIExpc3Qgb2YgT2JqZWN0cyBvZiBSb29tcyBZb3UgY2FuIHVzZSAibmFtZSIgYXMgdmFsdWUgZm9yCisJICogb3JkZXJieSBvciByb29tc19pZC4gSXQgYWxzbyBmaWxscyB0aGUgYXR0cmlidXRlIGN1cnJlbnRVc2VycyBpbiB0aGUKKwkgKiBSb29tLU9iamVjdAorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiAgICAgICAgICAgIFRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIExvZ2dlZGluCisJICogQHBhcmFtIHN0YXJ0CisJICogICAgICAgICAgICBUaGUgaWQgeW91IHdhbnQgdG8gc3RhcnQKKwkgKiBAcGFyYW0gbWF4CisJICogICAgICAgICAgICBUaGUgbWF4aW11bSB5b3Ugd2FudCB0byBnZXQKKwkgKiBAcGFyYW0gb3JkZXJieQorCSAqICAgICAgICAgICAgVGhlIGNvbHVtbiBpdCB3aWxsIGJlIG9yZGVyZWQKKwkgKiBAcGFyYW0gYXNjCisJICogICAgICAgICAgICBBc2Mgb3IgRGVzYyBzb3J0IG9yZGVyaW5nCisJICogICAgICAgICAgICAKKwkgKiBAcmV0dXJuIC0gTGlzdCBvZiBPYmplY3RzIG9mIFJvb21zCisJICovCisJcHVibGljIFNlYXJjaFJlc3VsdDxSb29tPiBnZXRSb29tc1dpdGhDdXJyZW50VXNlcnMoU3RyaW5nIFNJRCwgaW50IHN0YXJ0LAorCQkJaW50IG1heCwgU3RyaW5nIG9yZGVyYnksIGJvb2xlYW4gYXNjKSB7CisJCXJldHVybiBjb25mZXJlbmNlU2VydmljZS5nZXRSb29tc1dpdGhDdXJyZW50VXNlcnMoU0lELCBzdGFydCwgbWF4LAorCQkJCW9yZGVyYnksIGFzYyk7CisJfQorCisJLy8gVE9ETzogQWRkIGZ1bmN0aW9ucyB0byBnZXQgVXNlcnMgb2YgYSBSb29tCisKKwkvKioKKwkgKiBUT0RPOiBGaXggT3JnYW5pemF0aW9uIElzc3VlCisJICogCisJICogZGVwcmVjYXRlZCB1c2UgYWRkUm9vbVdpdGhNb2RlcmF0aW9uIGluc3RlYWQKKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogICAgICAgICAgICBUaGUgU0lEIG9mIHRoZSBVc2VyLiBUaGlzIFNJRCBtdXN0IGJlIG1hcmtlZCBhcyBMb2dnZWRpbgorCSAqIEBwYXJhbSBuYW1lCisJICogQHBhcmFtIHJvb210eXBlc19pZAorCSAqIEBwYXJhbSBjb21tZW50CisJICogQHBhcmFtIG51bWJlck9mUGFydGl6aXBhbnRzCisJICogQHBhcmFtIGlzcHVibGljCisJICogQHBhcmFtIHZpZGVvUG9kV2lkdGgKKwkgKiBAcGFyYW0gdmlkZW9Qb2RIZWlnaHQKKwkgKiBAcGFyYW0gdmlkZW9Qb2RYUG9zaXRpb24KKwkgKiBAcGFyYW0gdmlkZW9Qb2RZUG9zaXRpb24KKwkgKiBAcGFyYW0gbW9kZXJhdGlvblBhbmVsWFBvc2l0aW9uCisJICogQHBhcmFtIHNob3dXaGl0ZUJvYXJkCisJICogQHBhcmFtIHdoaXRlQm9hcmRQYW5lbFhQb3NpdGlvbgorCSAqIEBwYXJhbSB3aGl0ZUJvYXJkUGFuZWxZUG9zaXRpb24KKwkgKiBAcGFyYW0gd2hpdGVCb2FyZFBhbmVsSGVpZ2h0CisJICogQHBhcmFtIHdoaXRlQm9hcmRQYW5lbFdpZHRoCisJICogQHBhcmFtIHNob3dGaWxlc1BhbmVsCisJICogQHBhcmFtIGZpbGVzUGFuZWxYUG9zaXRpb24KKwkgKiBAcGFyYW0gZmlsZXNQYW5lbFlQb3NpdGlvbgorCSAqIEBwYXJhbSBmaWxlc1BhbmVsSGVpZ2h0CisJICogQHBhcmFtIGZpbGVzUGFuZWxXaWR0aAorCSAqIEByZXR1cm4gLSBpZCBvZiB0aGUgcm9vbSBvciBlcnJvciBjb2RlCisJICovCisJQERlcHJlY2F0ZWQKKwlwdWJsaWMgTG9uZyBhZGRSb29tKFN0cmluZyBTSUQsIFN0cmluZyBuYW1lLCBMb25nIHJvb210eXBlc19pZCwKKwkJCVN0cmluZyBjb21tZW50LCBMb25nIG51bWJlck9mUGFydGl6aXBhbnRzLCBCb29sZWFuIGlzcHVibGljLAorCQkJSW50ZWdlciB2aWRlb1BvZFdpZHRoLCBJbnRlZ2VyIHZpZGVvUG9kSGVpZ2h0LAorCQkJSW50ZWdlciB2aWRlb1BvZFhQb3NpdGlvbiwgSW50ZWdlciB2aWRlb1BvZFlQb3NpdGlvbiwKKwkJCUludGVnZXIgbW9kZXJhdGlvblBhbmVsWFBvc2l0aW9uLCBCb29sZWFuIHNob3dXaGl0ZUJvYXJkLAorCQkJSW50ZWdlciB3aGl0ZUJvYXJkUGFuZWxYUG9zaXRpb24sIEludGVnZXIgd2hpdGVCb2FyZFBhbmVsWVBvc2l0aW9uLAorCQkJSW50ZWdlciB3aGl0ZUJvYXJkUGFuZWxIZWlnaHQsIEludGVnZXIgd2hpdGVCb2FyZFBhbmVsV2lkdGgsCisJCQlCb29sZWFuIHNob3dGaWxlc1BhbmVsLCBJbnRlZ2VyIGZpbGVzUGFuZWxYUG9zaXRpb24sCisJCQlJbnRlZ2VyIGZpbGVzUGFuZWxZUG9zaXRpb24sIEludGVnZXIgZmlsZXNQYW5lbEhlaWdodCwKKwkJCUludGVnZXIgZmlsZXNQYW5lbFdpZHRoKSB7CisJCXRyeSB7CisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrV2ViU2VydmljZUxldmVsKHVzZXJfbGV2ZWwpKSB7CisJCQkJcmV0dXJuIHJvb21NYW5hZ2VyLmFkZFJvb20oM0wsIG5hbWUsIHJvb210eXBlc19pZCwgY29tbWVudCwKKwkJCQkJCW51bWJlck9mUGFydGl6aXBhbnRzLCBpc3B1YmxpYywgbnVsbCwgZmFsc2UsIGZhbHNlLAorCQkJCQkJbnVsbCwgZmFsc2UsIG51bGwsIHRydWUsIGZhbHNlLCBmYWxzZSwgdHJ1ZSwgIiIsICIiLAorCQkJCQkJbnVsbCwgbnVsbCwgbnVsbCwgZmFsc2UsIC8vIGhpZGVUb3BCYXIKKwkJCQkJCWZhbHNlLCAvLyBoaWRlQ2hhdAorCQkJCQkJZmFsc2UsIC8vIGhpZGVBY3Rpdml0aWVzQW5kQWN0aW9ucworCQkJCQkJZmFsc2UsIC8vIGhpZGVGaWxlc0V4cGxvcmVyCisJCQkJCQlmYWxzZSwgLy8gaGlkZUFjdGlvbnNNZW51CisJCQkJCQlmYWxzZSwgLy8gaGlkZVNjcmVlblNoYXJpbmcKKwkJCQkJCWZhbHNlLCAvLyBoaWRlV2hpdGVib2FyZAorCQkJCQkJZmFsc2UsIC8vIHNob3dNaWNyb3Bob25lU3RhdHVzCisJCQkJCQlmYWxzZSwgLy8gY2hhdE1vZGVyYXRlZAorCQkJCQkJZmFsc2UsIC8vIGNoYXRPcGVuZWQKKwkJCQkJCWZhbHNlLCAvLyBmaWxlc09wZW5lZAorCQkJCQkJZmFsc2UsIC8vIGF1dG9WaWRlb1NlbGVjdAorCQkJCQkJZmFsc2UgLy9zaXBFbmFibGVkCisJCQkJCQkpOworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIlthZGRSb29tXSAiLCBlcnIpOworCQl9CisJCXJldHVybiBuZXcgTG9uZygtMSk7CisJfQorCisJLyoqCisJICogQ3JlYXRlIGEgY29uZmVyZW5jZSByb29tCisJICogCisJICogQHBhcmFtIFNJRAorCSAqICAgICAgICAgICAgVGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgTG9nZ2VkaW4KKwkgKiBAcGFyYW0gbmFtZQorCSAqICAgICAgICAgICAgTmFtZSBvZiB0aGUgUm9vbQorCSAqIEBwYXJhbSByb29tdHlwZXNfaWQKKwkgKiAgICAgICAgICAgIFR5cGUgb2YgdGhhdCByb29tICgxID0gQ29uZmVyZW5jZSwgMiA9IEF1ZGllbmNlLCAzID0KKwkgKiAgICAgICAgICAgIFJlc3RyaWN0ZWQsIDQgPSBJbnRlcnZpZXcpCisJICogQHBhcmFtIGNvbW1lbnQKKwkgKiAgICAgICAgICAgIGFueSBjb21tZW50CisJICogQHBhcmFtIG51bWJlck9mUGFydGl6aXBhbnRzCisJICogICAgICAgICAgICB0aGUgbWF4aW11bSB1c2VycyBhbGxvd2VkIGluIHRoaXMgcm9vbQorCSAqIEBwYXJhbSBpc3B1YmxpYworCSAqICAgICAgICAgICAgSWYgdGhpcyByb29tIGlzIHB1YmxpYyAodXNlIHRydWUgaWYgeW91IGRvbid0IGRlYWwgd2l0aAorCSAqICAgICAgICAgICAgZGlmZmVyZW50IE9yZ2FuaXphdGlvbnMpCisJICogQHBhcmFtIGFwcG9pbnRtZW50CisJICogICAgICAgICAgICBpcyBpdCBhIENhbGVuZGFyIFJvb20gKHVzZSBmYWxzZSBieSBkZWZhdWx0KQorCSAqIEBwYXJhbSBpc0RlbW9Sb29tCisJICogICAgICAgICAgICBpcyBpdCBhIERlbW8gUm9vbSB3aXRoIGxpbWl0ZWQgdGltZSAodXNlIGZhbHNlIGJ5IGRlZmF1bHQpCisJICogQHBhcmFtIGRlbW9UaW1lCisJICogICAgICAgICAgICB0aW1lIGluIHNlY29uZHMgYWZ0ZXIgdGhlIHVzZXIgd2lsbCBiZSBsb2dnZWQgb3V0IChvbmx5CisJICogICAgICAgICAgICBlbmFibGVkIGlmIGlzRGVtb1Jvb20gaXMgdHJ1ZSkKKwkgKiBAcGFyYW0gaXNNb2RlcmF0ZWRSb29tCisJICogICAgICAgICAgICBVc2VycyBoYXZlIHRvIHdhaXQgdW50aWxsIGEgTW9kZXJhdG9yIGFycml2ZXMuIFVzZSB0aGUKKwkgKiAgICAgICAgICAgIGJlY29tZU1vZGVyYXRvciBwYXJhbSBpbiBzZXRVc2VyT2JqZWN0QW5kR2VuZXJhdGVSb29tSGFzaCB0bworCSAqICAgICAgICAgICAgc2V0IGEgdXNlciBhcyBkZWZhdWx0IE1vZGVyYXRvcgorCSAqICAgICAgICAgICAgCisJICogQHJldHVybiAtIGlkIG9mIHRoZSByb29tIG9yIGVycm9yIGNvZGUKKwkgKi8KKwlwdWJsaWMgTG9uZyBhZGRSb29tV2l0aE1vZGVyYXRpb24oU3RyaW5nIFNJRCwgU3RyaW5nIG5hbWUsCisJCQlMb25nIHJvb210eXBlc19pZCwgU3RyaW5nIGNvbW1lbnQsIExvbmcgbnVtYmVyT2ZQYXJ0aXppcGFudHMsCisJCQlCb29sZWFuIGlzcHVibGljLCBCb29sZWFuIGFwcG9pbnRtZW50LCBCb29sZWFuIGlzRGVtb1Jvb20sCisJCQlJbnRlZ2VyIGRlbW9UaW1lLCBCb29sZWFuIGlzTW9kZXJhdGVkUm9vbSkgeworCQl0cnkgeworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1dlYlNlcnZpY2VMZXZlbCh1c2VyX2xldmVsKSkgeworCQkJCXJldHVybiByb29tTWFuYWdlci5hZGRSb29tKDNMLCBuYW1lLCByb29tdHlwZXNfaWQsIGNvbW1lbnQsCisJCQkJCQludW1iZXJPZlBhcnRpemlwYW50cywgaXNwdWJsaWMsIG51bGwsIGFwcG9pbnRtZW50LAorCQkJCQkJaXNEZW1vUm9vbSwgZGVtb1RpbWUsIGlzTW9kZXJhdGVkUm9vbSwgbnVsbCwgdHJ1ZSwKKwkJCQkJCWZhbHNlLCBmYWxzZSwgdHJ1ZSwgIiIsICIiLCBudWxsLCBudWxsLCBudWxsLCBmYWxzZSwgLy8gaGlkZVRvcEJhcgorCQkJCQkJZmFsc2UsIC8vIGhpZGVDaGF0CisJCQkJCQlmYWxzZSwgLy8gaGlkZUFjdGl2aXRpZXNBbmRBY3Rpb25zCisJCQkJCQlmYWxzZSwgLy8gaGlkZUZpbGVzRXhwbG9yZXIKKwkJCQkJCWZhbHNlLCAvLyBoaWRlQWN0aW9uc01lbnUKKwkJCQkJCWZhbHNlLCAvLyBoaWRlU2NyZWVuU2hhcmluZworCQkJCQkJZmFsc2UsIC8vIGhpZGVXaGl0ZWJvYXJkCisJCQkJCQlmYWxzZSwgLy8gc2hvd01pY3JvcGhvbmVTdGF0dXMKKwkJCQkJCWZhbHNlLCAvLyBjaGF0TW9kZXJhdGVkCisJCQkJCQlmYWxzZSwgLy8gY2hhdE9wZW5lZAorCQkJCQkJZmFsc2UsIC8vIGZpbGVzT3BlbmVkCisJCQkJCQlmYWxzZSwgLy8gYXV0b1ZpZGVvU2VsZWN0CisJCQkJCQlmYWxzZSAvL3NpcEVuYWJsZWQKKwkJCQkJCSk7CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2FkZFJvb21XaXRoTW9kZXJhdGlvbl0gIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbmV3IExvbmcoLTEpOworCX0KKworCS8qKgorCSAqIHRoaXMgU09BUCBNZXRob2QgaGFzIGFuIGFkZGl0aW9uYWwgcGFyYW0gdG8gZW5hYmxlIG9yIGRpc2FibGUgdGhlIGJ1dHRvbnMKKwkgKiB0byBhcHBseSBmb3IgbW9kZXJhdGlvbiB0aGlzIGRvZXMgb25seSB3b3JrIGluIGNvbWJpbmF0aW9uIHdpdGggdGhlCisJICogcm9vbS10eXBlIHJlc3RyaWN0ZWQKKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogICAgICAgICAgICBUaGUgU0lEIG9mIHRoZSBVc2VyLiBUaGlzIFNJRCBtdXN0IGJlIG1hcmtlZCBhcyBMb2dnZWRpbgorCSAqIEBwYXJhbSBuYW1lCisJICogICAgICAgICAgICBOYW1lIG9mIHRoZSBSb29tCisJICogQHBhcmFtIHJvb210eXBlc19pZAorCSAqICAgICAgICAgICAgVHlwZSBvZiB0aGF0IHJvb20gKDEgPSBDb25mZXJlbmNlLCAyID0gQXVkaWVuY2UsIDMgPQorCSAqICAgICAgICAgICAgUmVzdHJpY3RlZCwgNCA9IEludGVydmlldykKKwkgKiBAcGFyYW0gY29tbWVudAorCSAqICAgICAgICAgICAgYW55IGNvbW1lbnQKKwkgKiBAcGFyYW0gbnVtYmVyT2ZQYXJ0aXppcGFudHMKKwkgKiAgICAgICAgICAgIHRoZSBtYXhpbXVtIHVzZXJzIGFsbG93ZWQgaW4gdGhpcyByb29tCisJICogQHBhcmFtIGlzcHVibGljCisJICogICAgICAgICAgICBJZiB0aGlzIHJvb20gaXMgcHVibGljICh1c2UgdHJ1ZSBpZiB5b3UgZG9uJ3QgZGVhbCB3aXRoCisJICogICAgICAgICAgICBkaWZmZXJlbnQgT3JnYW5pemF0aW9ucykKKwkgKiBAcGFyYW0gYXBwb2ludG1lbnQKKwkgKiAgICAgICAgICAgIGlzIGl0IGEgQ2FsZW5kYXIgUm9vbSAodXNlIGZhbHNlIGJ5IGRlZmF1bHQpCisJICogQHBhcmFtIGlzRGVtb1Jvb20KKwkgKiAgICAgICAgICAgIGlzIGl0IGEgRGVtbyBSb29tIHdpdGggbGltaXRlZCB0aW1lICh1c2UgZmFsc2UgYnkgZGVmYXVsdCkKKwkgKiBAcGFyYW0gZGVtb1RpbWUKKwkgKiAgICAgICAgICAgIHRpbWUgaW4gc2Vjb25kcyBhZnRlciB0aGUgdXNlciB3aWxsIGJlIGxvZ2dlZCBvdXQgKG9ubHkKKwkgKiAgICAgICAgICAgIGVuYWJsZWQgaWYgaXNEZW1vUm9vbSBpcyB0cnVlKQorCSAqIEBwYXJhbSBpc01vZGVyYXRlZFJvb20KKwkgKiAgICAgICAgICAgIFVzZXJzIGhhdmUgdG8gd2FpdCB1bnRpbGwgYSBNb2RlcmF0b3IgYXJyaXZlcy4gVXNlIHRoZQorCSAqICAgICAgICAgICAgYmVjb21lTW9kZXJhdG9yIHBhcmFtIGluIHNldFVzZXJPYmplY3RBbmRHZW5lcmF0ZVJvb21IYXNoIHRvCisJICogICAgICAgICAgICBzZXQgYSB1c2VyIGFzIGRlZmF1bHQgTW9kZXJhdG9yCisJICogQHBhcmFtIGFsbG93VXNlclF1ZXN0aW9ucworCSAqICAgICAgICAgICAgZW5hYmxlIG9yIGRpc2FibGUgdGhlIGJ1dHRvbiB0byBhbGxvdyB1c2VycyB0byBhcHBseSBmb3IKKwkgKiAgICAgICAgICAgIG1vZGVyYXRpb24KKwkgKiAgICAgICAgICAgIAorCSAqIEByZXR1cm4gLSBpZCBvZiB0aGUgcm9vbSBvciBlcnJvciBjb2RlCisJICovCisJcHVibGljIExvbmcgYWRkUm9vbVdpdGhNb2RlcmF0aW9uQW5kUXVlc3Rpb25zKFN0cmluZyBTSUQsIFN0cmluZyBuYW1lLAorCQkJTG9uZyByb29tdHlwZXNfaWQsIFN0cmluZyBjb21tZW50LCBMb25nIG51bWJlck9mUGFydGl6aXBhbnRzLAorCQkJQm9vbGVhbiBpc3B1YmxpYywgQm9vbGVhbiBhcHBvaW50bWVudCwgQm9vbGVhbiBpc0RlbW9Sb29tLAorCQkJSW50ZWdlciBkZW1vVGltZSwgQm9vbGVhbiBpc01vZGVyYXRlZFJvb20sCisJCQlCb29sZWFuIGFsbG93VXNlclF1ZXN0aW9ucykgeworCQl0cnkgeworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1dlYlNlcnZpY2VMZXZlbCh1c2VyX2xldmVsKSkgeworCQkJCXJldHVybiByb29tTWFuYWdlci5hZGRSb29tKDNMLCBuYW1lLCByb29tdHlwZXNfaWQsIGNvbW1lbnQsCisJCQkJCQludW1iZXJPZlBhcnRpemlwYW50cywgaXNwdWJsaWMsIG51bGwsIGFwcG9pbnRtZW50LAorCQkJCQkJaXNEZW1vUm9vbSwgZGVtb1RpbWUsIGlzTW9kZXJhdGVkUm9vbSwgbnVsbCwKKwkJCQkJCWFsbG93VXNlclF1ZXN0aW9ucywgZmFsc2UsIHRydWUsIGZhbHNlLCAiIiwgIiIsIG51bGwsCisJCQkJCQludWxsLCBudWxsLCBmYWxzZSwgLy8gaGlkZVRvcEJhcgorCQkJCQkJZmFsc2UsIC8vIGhpZGVDaGF0CisJCQkJCQlmYWxzZSwgLy8gaGlkZUFjdGl2aXRpZXNBbmRBY3Rpb25zCisJCQkJCQlmYWxzZSwgLy8gaGlkZUZpbGVzRXhwbG9yZXIKKwkJCQkJCWZhbHNlLCAvLyBoaWRlQWN0aW9uc01lbnUKKwkJCQkJCWZhbHNlLCAvLyBoaWRlU2NyZWVuU2hhcmluZworCQkJCQkJZmFsc2UsIC8vIGhpZGVXaGl0ZWJvYXJkCisJCQkJCQlmYWxzZSwgLy8gc2hvd01pY3JvcGhvbmVTdGF0dXMKKwkJCQkJCWZhbHNlLCAvLyBjaGF0TW9kZXJhdGVkCisJCQkJCQlmYWxzZSwgLy8gY2hhdE9wZW5lZAorCQkJCQkJZmFsc2UsIC8vIGZpbGVzT3BlbmVkCisJCQkJCQlmYWxzZSwgLy8gYXV0b1ZpZGVvU2VsZWN0CisJCQkJCQlmYWxzZSAvL3NpcEVuYWJsZWQKKwkJCQkJCSk7CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2FkZFJvb21XaXRoTW9kZXJhdGlvbkFuZFF1ZXN0aW9uc10gIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbmV3IExvbmcoLTEpOworCX0KKworCS8qKgorCSAqIAorCSAqIGFkZHMgYSBuZXcgcm9vbSB3aXRoIG9wdGlvbnMgZm9yIHVzZXIgcXVlc3Rpb25zIGFuZCBhdWRpbyBvbmx5CisJICogCisJICogQHBhcmFtIFNJRAorCSAqICAgICAgICAgICAgVGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgTG9nZ2VkaW4KKwkgKiBAcGFyYW0gbmFtZQorCSAqICAgICAgICAgICAgTmFtZSBvZiB0aGUgUm9vbQorCSAqIEBwYXJhbSByb29tdHlwZXNfaWQKKwkgKiAgICAgICAgICAgIFR5cGUgb2YgdGhhdCByb29tICgxID0gQ29uZmVyZW5jZSwgMiA9IEF1ZGllbmNlLCAzID0KKwkgKiAgICAgICAgICAgIFJlc3RyaWN0ZWQsIDQgPSBJbnRlcnZpZXcpCisJICogQHBhcmFtIGNvbW1lbnQKKwkgKiAgICAgICAgICAgIGFueSBjb21tZW50CisJICogQHBhcmFtIG51bWJlck9mUGFydGl6aXBhbnRzCisJICogICAgICAgICAgICB0aGUgbWF4aW11bSB1c2VycyBhbGxvd2VkIGluIHRoaXMgcm9vbQorCSAqIEBwYXJhbSBpc3B1YmxpYworCSAqICAgICAgICAgICAgSWYgdGhpcyByb29tIGlzIHB1YmxpYyAodXNlIHRydWUgaWYgeW91IGRvbid0IGRlYWwgd2l0aAorCSAqICAgICAgICAgICAgZGlmZmVyZW50IE9yZ2FuaXphdGlvbnMpCisJICogQHBhcmFtIGFwcG9pbnRtZW50CisJICogICAgICAgICAgICBpcyBpdCBhIENhbGVuZGFyIFJvb20gKHVzZSBmYWxzZSBieSBkZWZhdWx0KQorCSAqIEBwYXJhbSBpc0RlbW9Sb29tCisJICogICAgICAgICAgICBpcyBpdCBhIERlbW8gUm9vbSB3aXRoIGxpbWl0ZWQgdGltZSAodXNlIGZhbHNlIGJ5IGRlZmF1bHQpCisJICogQHBhcmFtIGRlbW9UaW1lCisJICogICAgICAgICAgICB0aW1lIGluIHNlY29uZHMgYWZ0ZXIgdGhlIHVzZXIgd2lsbCBiZSBsb2dnZWQgb3V0IChvbmx5CisJICogICAgICAgICAgICBlbmFibGVkIGlmIGlzRGVtb1Jvb20gaXMgdHJ1ZSkKKwkgKiBAcGFyYW0gaXNNb2RlcmF0ZWRSb29tCisJICogICAgICAgICAgICBVc2VycyBoYXZlIHRvIHdhaXQgdW50aWwgYSBNb2RlcmF0b3IgYXJyaXZlcy4gVXNlIHRoZQorCSAqICAgICAgICAgICAgYmVjb21lTW9kZXJhdG9yIHBhcmFtIGluIHNldFVzZXJPYmplY3RBbmRHZW5lcmF0ZVJvb21IYXNoIHRvCisJICogICAgICAgICAgICBzZXQgYSB1c2VyIGFzIGRlZmF1bHQgTW9kZXJhdG9yCisJICogQHBhcmFtIGFsbG93VXNlclF1ZXN0aW9ucworCSAqICAgICAgICAgICAgZW5hYmxlIG9yIGRpc2FibGUgdGhlIGJ1dHRvbiB0byBhbGxvdyB1c2VycyB0byBhcHBseSBmb3IKKwkgKiAgICAgICAgICAgIG1vZGVyYXRpb24KKwkgKiBAcGFyYW0gaXNBdWRpb09ubHkKKwkgKiAgICAgICAgICAgIGVuYWJsZSBvciBkaXNhYmxlIHRoZSB2aWRlbyAvIG9yIGF1ZGlvLW9ubHkKKwkgKiAKKwkgKiBAcmV0dXJuIC0gaWQgb2YgdGhlIHJvb20gb3IgZXJyb3IgY29kZQorCSAqIEB0aHJvd3MgQXhpc0ZhdWx0CisJICovCisJcHVibGljIExvbmcgYWRkUm9vbVdpdGhNb2RlcmF0aW9uUXVlc3Rpb25zQW5kQXVkaW9UeXBlKFN0cmluZyBTSUQsCisJCQlTdHJpbmcgbmFtZSwgTG9uZyByb29tdHlwZXNfaWQsIFN0cmluZyBjb21tZW50LAorCQkJTG9uZyBudW1iZXJPZlBhcnRpemlwYW50cywgQm9vbGVhbiBpc3B1YmxpYywgQm9vbGVhbiBhcHBvaW50bWVudCwKKwkJCUJvb2xlYW4gaXNEZW1vUm9vbSwgSW50ZWdlciBkZW1vVGltZSwgQm9vbGVhbiBpc01vZGVyYXRlZFJvb20sCisJCQlCb29sZWFuIGFsbG93VXNlclF1ZXN0aW9ucywgQm9vbGVhbiBpc0F1ZGlvT25seSkgdGhyb3dzIEF4aXNGYXVsdCB7CisJCXRyeSB7CisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrV2ViU2VydmljZUxldmVsKHVzZXJfbGV2ZWwpKSB7CisJCQkJcmV0dXJuIHJvb21NYW5hZ2VyLmFkZFJvb20oM0wsIG5hbWUsIHJvb210eXBlc19pZCwgY29tbWVudCwKKwkJCQkJCW51bWJlck9mUGFydGl6aXBhbnRzLCBpc3B1YmxpYywgbnVsbCwgYXBwb2ludG1lbnQsCisJCQkJCQlpc0RlbW9Sb29tLCBkZW1vVGltZSwgaXNNb2RlcmF0ZWRSb29tLCBudWxsLAorCQkJCQkJYWxsb3dVc2VyUXVlc3Rpb25zLCBpc0F1ZGlvT25seSwgdHJ1ZSwgZmFsc2UsICIiLCAiIiwKKwkJCQkJCW51bGwsIG51bGwsIG51bGwsIGZhbHNlLCAvLyBoaWRlVG9wQmFyCisJCQkJCQlmYWxzZSwgLy8gaGlkZUNoYXQKKwkJCQkJCWZhbHNlLCAvLyBoaWRlQWN0aXZpdGllc0FuZEFjdGlvbnMKKwkJCQkJCWZhbHNlLCAvLyBoaWRlRmlsZXNFeHBsb3JlcgorCQkJCQkJZmFsc2UsIC8vIGhpZGVBY3Rpb25zTWVudQorCQkJCQkJZmFsc2UsIC8vIGhpZGVTY3JlZW5TaGFyaW5nCisJCQkJCQlmYWxzZSwgLy8gaGlkZVdoaXRlYm9hcmQKKwkJCQkJCWZhbHNlLCAvLyBzaG93TWljcm9waG9uZVN0YXR1cworCQkJCQkJZmFsc2UsIC8vIGNoYXRNb2RlcmF0ZWQKKwkJCQkJCWZhbHNlLCAvLyBjaGF0T3BlbmVkCisJCQkJCQlmYWxzZSwgLy8gZmlsZXNPcGVuZWQKKwkJCQkJCWZhbHNlLCAvLyBhdXRvVmlkZW9TZWxlY3QKKwkJCQkJCWZhbHNlIC8vc2lwRW5hYmxlZAorCQkJCQkJKTsKKwkJCX0KKwkJCXJldHVybiAtMUw7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2FkZFJvb21XaXRoTW9kZXJhdGlvblF1ZXN0aW9uc0FuZEF1ZGlvVHlwZV0gIiwgZXJyKTsKKwkJCXRocm93IG5ldyBBeGlzRmF1bHQoZXJyLmdldE1lc3NhZ2UoKSk7CisJCX0KKwl9CisKKwkvKioKKwkgKiAKKwkgKiBhZGRzIGEgbmV3IHJvb20gd2l0aCBvcHRpb25zIGZvciB1c2VyIHF1ZXN0aW9ucywgYXVkaW8gb25seSBhbmQgaGlkZQorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiAgICAgICAgICAgIFRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIExvZ2dlZGluCisJICogQHBhcmFtIG5hbWUKKwkgKiAgICAgICAgICAgIE5hbWUgb2YgdGhlIFJvb20KKwkgKiBAcGFyYW0gcm9vbXR5cGVzX2lkCisJICogICAgICAgICAgICBUeXBlIG9mIHRoYXQgcm9vbSAoMSA9IENvbmZlcmVuY2UsIDIgPSBBdWRpZW5jZSwgMyA9CisJICogICAgICAgICAgICBSZXN0cmljdGVkLCA0ID0gSW50ZXJ2aWV3KQorCSAqIEBwYXJhbSBjb21tZW50CisJICogICAgICAgICAgICBhbnkgY29tbWVudAorCSAqIEBwYXJhbSBudW1iZXJPZlBhcnRpemlwYW50cworCSAqICAgICAgICAgICAgdGhlIG1heGltdW0gdXNlcnMgYWxsb3dlZCBpbiB0aGlzIHJvb20KKwkgKiBAcGFyYW0gaXNwdWJsaWMKKwkgKiAgICAgICAgICAgIElmIHRoaXMgcm9vbSBpcyBwdWJsaWMgKHVzZSB0cnVlIGlmIHlvdSBkb24ndCBkZWFsIHdpdGgKKwkgKiAgICAgICAgICAgIGRpZmZlcmVudCBPcmdhbml6YXRpb25zKQorCSAqIEBwYXJhbSBhcHBvaW50bWVudAorCSAqICAgICAgICAgICAgaXMgaXQgYSBDYWxlbmRhciBSb29tICh1c2UgZmFsc2UgYnkgZGVmYXVsdCkKKwkgKiBAcGFyYW0gaXNEZW1vUm9vbQorCSAqICAgICAgICAgICAgaXMgaXQgYSBEZW1vIFJvb20gd2l0aCBsaW1pdGVkIHRpbWUgKHVzZSBmYWxzZSBieSBkZWZhdWx0KQorCSAqIEBwYXJhbSBkZW1vVGltZQorCSAqICAgICAgICAgICAgdGltZSBpbiBzZWNvbmRzIGFmdGVyIHRoZSB1c2VyIHdpbGwgYmUgbG9nZ2VkIG91dCAob25seQorCSAqICAgICAgICAgICAgZW5hYmxlZCBpZiBpc0RlbW9Sb29tIGlzIHRydWUpCisJICogQHBhcmFtIGlzTW9kZXJhdGVkUm9vbQorCSAqICAgICAgICAgICAgVXNlcnMgaGF2ZSB0byB3YWl0IHVudGlsIGEgTW9kZXJhdG9yIGFycml2ZXMuIFVzZSB0aGUKKwkgKiAgICAgICAgICAgIGJlY29tZU1vZGVyYXRvciBwYXJhbSBpbiBzZXRVc2VyT2JqZWN0QW5kR2VuZXJhdGVSb29tSGFzaCB0bworCSAqICAgICAgICAgICAgc2V0IGEgdXNlciBhcyBkZWZhdWx0IE1vZGVyYXRvcgorCSAqIEBwYXJhbSBhbGxvd1VzZXJRdWVzdGlvbnMKKwkgKiAgICAgICAgICAgIGVuYWJsZSBvciBkaXNhYmxlIHRoZSBidXR0b24gdG8gYWxsb3cgdXNlcnMgdG8gYXBwbHkgZm9yCisJICogICAgICAgICAgICBtb2RlcmF0aW9uCisJICogQHBhcmFtIGlzQXVkaW9Pbmx5CisJICogICAgICAgICAgICBlbmFibGUgb3IgZGlzYWJsZSB0aGUgdmlkZW8gLyBvciBhdWRpby1vbmx5CisJICogQHBhcmFtIGhpZGVUb3BCYXIKKwkgKiAgICAgICAgICAgIGhpZGUgb3Igc2hvdyBUb3BCYXIKKwkgKiBAcGFyYW0gaGlkZUNoYXQKKwkgKiAgICAgICAgICAgIGhpZGUgb3Igc2hvdyBDaGF0CisJICogQHBhcmFtIGhpZGVBY3Rpdml0aWVzQW5kQWN0aW9ucworCSAqICAgICAgICAgICAgaGlkZSBvciBzaG93IEFjdGl2aXRpZXMgQW5kIEFjdGlvbnMKKwkgKiBAcGFyYW0gaGlkZUZpbGVzRXhwbG9yZXIKKwkgKiAgICAgICAgICAgIGhpZGUgb3Igc2hvdyBGaWxlcyBFeHBsb3JlcgorCSAqIEBwYXJhbSBoaWRlQWN0aW9uc01lbnUKKwkgKiAgICAgICAgICAgIGhpZGUgb3Igc2hvdyBBY3Rpb25zIE1lbnUKKwkgKiBAcGFyYW0gaGlkZVNjcmVlblNoYXJpbmcKKwkgKiAgICAgICAgICAgIGhpZGUgb3Igc2hvdyBTY3JlZW4gU2hhcmluZworCSAqIEBwYXJhbSBoaWRlV2hpdGVib2FyZAorCSAqICAgICAgICAgICAgaGlkZSBvciBzaG93IFdoaXRlYm9hcmQuIElmIHdoaXRib2FyZCBpcyBoaWRkZW4sIHZpZGVvIHBvZHMKKwkgKiAgICAgICAgICAgIGFuZCBzY3JvbGxiYXIgYXBwZWFyIGluc3RlYWQuCisJICogICAgICAgICAgICAKKwkgKiBAcmV0dXJuIC0gaWQgb2YgdGhlIHJvb20gb3IgZXJyb3IgY29kZQorCSAqIEB0aHJvd3MgQXhpc0ZhdWx0CisJICovCisJcHVibGljIExvbmcgYWRkUm9vbVdpdGhNb2RlcmF0aW9uUXVlc3Rpb25zQXVkaW9UeXBlQW5kSGlkZU9wdGlvbnMoCisJCQlTdHJpbmcgU0lELCBTdHJpbmcgbmFtZSwgTG9uZyByb29tdHlwZXNfaWQsIFN0cmluZyBjb21tZW50LAorCQkJTG9uZyBudW1iZXJPZlBhcnRpemlwYW50cywgQm9vbGVhbiBpc3B1YmxpYywgQm9vbGVhbiBhcHBvaW50bWVudCwKKwkJCUJvb2xlYW4gaXNEZW1vUm9vbSwgSW50ZWdlciBkZW1vVGltZSwgQm9vbGVhbiBpc01vZGVyYXRlZFJvb20sCisJCQlCb29sZWFuIGFsbG93VXNlclF1ZXN0aW9ucywgQm9vbGVhbiBpc0F1ZGlvT25seSwKKwkJCUJvb2xlYW4gaGlkZVRvcEJhciwgQm9vbGVhbiBoaWRlQ2hhdCwKKwkJCUJvb2xlYW4gaGlkZUFjdGl2aXRpZXNBbmRBY3Rpb25zLCBCb29sZWFuIGhpZGVGaWxlc0V4cGxvcmVyLAorCQkJQm9vbGVhbiBoaWRlQWN0aW9uc01lbnUsIEJvb2xlYW4gaGlkZVNjcmVlblNoYXJpbmcsCisJCQlCb29sZWFuIGhpZGVXaGl0ZWJvYXJkKSB0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJdHJ5IHsKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tXZWJTZXJ2aWNlTGV2ZWwodXNlcl9sZXZlbCkpIHsKKwkJCQlyZXR1cm4gcm9vbU1hbmFnZXIuYWRkUm9vbSgzTCwgbmFtZSwgcm9vbXR5cGVzX2lkLCBjb21tZW50LAorCQkJCQkJbnVtYmVyT2ZQYXJ0aXppcGFudHMsIGlzcHVibGljLCBudWxsLCBhcHBvaW50bWVudCwKKwkJCQkJCWlzRGVtb1Jvb20sIGRlbW9UaW1lLCBpc01vZGVyYXRlZFJvb20sIG51bGwsCisJCQkJCQlhbGxvd1VzZXJRdWVzdGlvbnMsIGlzQXVkaW9Pbmx5LCB0cnVlLCBmYWxzZSwgIiIsICIiLAorCQkJCQkJbnVsbCwgbnVsbCwgbnVsbCwgaGlkZVRvcEJhciwgaGlkZUNoYXQsCisJCQkJCQloaWRlQWN0aXZpdGllc0FuZEFjdGlvbnMsIGhpZGVGaWxlc0V4cGxvcmVyLAorCQkJCQkJaGlkZUFjdGlvbnNNZW51LCBoaWRlU2NyZWVuU2hhcmluZywgaGlkZVdoaXRlYm9hcmQsCisJCQkJCQlmYWxzZSwgZmFsc2UsIAorCQkJCQkJZmFsc2UsIC8vIGNoYXRPcGVuZWQKKwkJCQkJCWZhbHNlLCAvLyBmaWxlc09wZW5lZAorCQkJCQkJZmFsc2UsIC8vIGF1dG9WaWRlb1NlbGVjdAorCQkJCQkJZmFsc2UgLy9zaXBFbmFibGVkCisJCQkJCQkpOworCQkJfQorCQkJcmV0dXJuIC0xTDsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKAorCQkJCQkiW2FkZFJvb21XaXRoTW9kZXJhdGlvblF1ZXN0aW9uc0F1ZGlvVHlwZUFuZEhpZGVPcHRpb25zXSAiLAorCQkJCQllcnIpOworCQkJdGhyb3cgbmV3IEF4aXNGYXVsdChlcnIuZ2V0TWVzc2FnZSgpKTsKKwkJfQorCX0KKworCS8qKgorCSAqIENoZWNrcyBpZiBhIHJvb20gd2l0aCB0aGlzIGV4dGVyYWxSb29tSWQgKyBleHRlcm5hbFJvb21UeXBlIGRvZXMgZXhpc3QsCisJICogaWYgeWVzIGl0IHJldHVybnMgdGhlIHJvb20gaWQgaWYgbm90LCBpdCB3aWxsIGNyZWF0ZSB0aGUgcm9vbSBhbmQgdGhlbgorCSAqIHJldHVybiB0aGUgcm9vbSBpZCBvZiB0aGUgbmV3bHkgY3JlYXRlZCByb29tCisJICogCisJICogQHBhcmFtIFNJRAorCSAqICAgICAgICAgICAgVGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgTG9nZ2VkaW4KKwkgKiBAcGFyYW0gbmFtZQorCSAqICAgICAgICAgICAgTmFtZSBvZiB0aGUgcm9vbQorCSAqIEBwYXJhbSByb29tdHlwZXNfaWQKKwkgKiAgICAgICAgICAgIFR5cGUgb2YgdGhhdCByb29tICgxID0gQ29uZmVyZW5jZSwgMiA9IEF1ZGllbmNlLCAzID0KKwkgKiAgICAgICAgICAgIFJlc3RyaWN0ZWQsIDQgPSBJbnRlcnZpZXcpCisJICogQHBhcmFtIGNvbW1lbnQKKwkgKiAgICAgICAgICAgIGFueSBjb21tZW50CisJICogQHBhcmFtIG51bWJlck9mUGFydGl6aXBhbnRzCisJICogICAgICAgICAgICB0aGUgbWF4aW11bSB1c2VycyBhbGxvd2VkIGluIHRoaXMgcm9vbQorCSAqIEBwYXJhbSBpc3B1YmxpYworCSAqICAgICAgICAgICAgSWYgdGhpcyByb29tIGlzIHB1YmxpYyAodXNlIHRydWUgaWYgeW91IGRvbid0IGRlYWwgd2l0aAorCSAqICAgICAgICAgICAgZGlmZmVyZW50IE9yZ2FuaXphdGlvbnMpCisJICogQHBhcmFtIGFwcG9pbnRtZW50CisJICogICAgICAgICAgICBpcyBpdCBhIENhbGVuZGFyIFJvb20/ICh1c2UgZmFsc2UgaWYgbm90IHN1cmUgd2hhdCB0aGF0IG1lYW5zKQorCSAqIEBwYXJhbSBpc0RlbW9Sb29tCisJICogICAgICAgICAgICBpcyBpdCBhIERlbW8gUm9vbSB3aXRoIGxpbWl0ZWQgdGltZT8gKHVzZSBmYWxzZSBpZiBub3Qgc3VyZQorCSAqICAgICAgICAgICAgd2hhdCB0aGF0IG1lYW5zKQorCSAqIEBwYXJhbSBkZW1vVGltZQorCSAqICAgICAgICAgICAgdGltZSBpbiBzZWNvbmRzIGFmdGVyIHRoZSB1c2VyIHdpbGwgYmUgbG9nZ2VkIG91dCAob25seQorCSAqICAgICAgICAgICAgZW5hYmxlZCBpZiBpc0RlbW9Sb29tIGlzIHRydWUpCisJICogQHBhcmFtIGlzTW9kZXJhdGVkUm9vbQorCSAqICAgICAgICAgICAgVXNlcnMgaGF2ZSB0byB3YWl0IHVudGlsbCBhIE1vZGVyYXRvciBhcnJpdmVzLiBVc2UgdGhlCisJICogICAgICAgICAgICBiZWNvbWVNb2RlcmF0b3IgcGFyYW0gaW4gc2V0VXNlck9iamVjdEFuZEdlbmVyYXRlUm9vbUhhc2ggdG8KKwkgKiAgICAgICAgICAgIHNldCBhIHVzZXIgYXMgZGVmYXVsdCBNb2RlcmF0b3IKKwkgKiBAcGFyYW0gZXh0ZXJuYWxSb29tSWQKKwkgKiAgICAgICAgICAgIHlvdXIgZXh0ZXJuYWwgcm9vbSBpZCBtYXkgc2V0IGhlcmUKKwkgKiBAcGFyYW0gZXh0ZXJuYWxSb29tVHlwZQorCSAqICAgICAgICAgICAgeW91IGNhbiBzcGVjaWZ5IHlvdXIgc3lzdGVtLW5hbWUgb3IgdHlwZSBvZiByb29tIGhlcmUsIGZvcgorCSAqICAgICAgICAgICAgZXhhbXBsZSAibW9vZGxlIgorCSAqICAgICAgICAgICAgCisJICogQHJldHVybiAtIGlkIG9mIHRoZSByb29tIG9yIGVycm9yIGNvZGUKKwkgKiBAdGhyb3dzIEF4aXNGYXVsdAorCSAqLworCXB1YmxpYyBMb25nIGdldFJvb21JZEJ5RXh0ZXJuYWxJZChTdHJpbmcgU0lELCBTdHJpbmcgbmFtZSwKKwkJCUxvbmcgcm9vbXR5cGVzX2lkLCBTdHJpbmcgY29tbWVudCwgTG9uZyBudW1iZXJPZlBhcnRpemlwYW50cywKKwkJCUJvb2xlYW4gaXNwdWJsaWMsIEJvb2xlYW4gYXBwb2ludG1lbnQsIEJvb2xlYW4gaXNEZW1vUm9vbSwKKwkJCUludGVnZXIgZGVtb1RpbWUsIEJvb2xlYW4gaXNNb2RlcmF0ZWRSb29tLCBMb25nIGV4dGVybmFsUm9vbUlkLAorCQkJU3RyaW5nIGV4dGVybmFsUm9vbVR5cGUpIHRocm93cyBBeGlzRmF1bHQgeworCQl0cnkgeworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1dlYlNlcnZpY2VMZXZlbCh1c2VyX2xldmVsKSkgeworCQkJCVJvb20gcm9vbSA9IGNvbmZlcmVuY2VTZXJ2aWNlLmdldFJvb21CeUV4dGVybmFsSWQoU0lELAorCQkJCQkJZXh0ZXJuYWxSb29tSWQsIGV4dGVybmFsUm9vbVR5cGUsIHJvb210eXBlc19pZCk7CisJCQkJTG9uZyByb29tSWQgPSBudWxsOworCQkJCWlmIChyb29tID09IG51bGwpIHsKKwkJCQkJcm9vbUlkID0gcm9vbU1hbmFnZXIuYWRkRXh0ZXJuYWxSb29tKG5hbWUsIHJvb210eXBlc19pZCwKKwkJCQkJCQljb21tZW50LCBudW1iZXJPZlBhcnRpemlwYW50cywgaXNwdWJsaWMsIG51bGwsCisJCQkJCQkJYXBwb2ludG1lbnQsIGlzRGVtb1Jvb20sIGRlbW9UaW1lLCBpc01vZGVyYXRlZFJvb20sCisJCQkJCQkJbnVsbCwgZXh0ZXJuYWxSb29tSWQsIGV4dGVybmFsUm9vbVR5cGUsIHRydWUsCisJCQkJCQkJZmFsc2UsIHRydWUsIGZhbHNlLCAiIiwgZmFsc2UsIHRydWUsIGZhbHNlKTsKKwkJCQl9IGVsc2UgeworCQkJCQlyb29tSWQgPSByb29tLmdldFJvb21zX2lkKCk7CisJCQkJfQorCQkJCXJldHVybiByb29tSWQ7CisJCQl9CisKKwkJCXJldHVybiAtMjZMOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIlthZGRSb29tV2l0aE1vZGVyYXRpb25dICIsIGVycik7CisJCQl0aHJvdyBuZXcgQXhpc0ZhdWx0KGVyci5nZXRNZXNzYWdlKCkpOworCQl9CisJCS8vIHJldHVybiBuZXcgTG9uZyAoLTEpOworCX0KKworCS8qKgorCSAqIFRPRE86IEZpeCBPcmdhbml6YXRpb24gSXNzdWUgZGVwcmVjYXRlZCB1c2UgdXBkYXRlUm9vbVdpdGhNb2RlcmF0aW9uCisJICogCisJICogQHBhcmFtIFNJRAorCSAqICAgICAgICAgICAgVGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgTG9nZ2VkaW4KKwkgKiBAcGFyYW0gcm9vbXNfaWQKKwkgKiBAcGFyYW0gbmFtZQorCSAqIEBwYXJhbSByb29tdHlwZXNfaWQKKwkgKiBAcGFyYW0gY29tbWVudAorCSAqIEBwYXJhbSBudW1iZXJPZlBhcnRpemlwYW50cworCSAqIEBwYXJhbSBpc3B1YmxpYworCSAqIEBwYXJhbSB2aWRlb1BvZFdpZHRoCisJICogQHBhcmFtIHZpZGVvUG9kSGVpZ2h0CisJICogQHBhcmFtIHZpZGVvUG9kWFBvc2l0aW9uCisJICogQHBhcmFtIHZpZGVvUG9kWVBvc2l0aW9uCisJICogQHBhcmFtIG1vZGVyYXRpb25QYW5lbFhQb3NpdGlvbgorCSAqIEBwYXJhbSBzaG93V2hpdGVCb2FyZAorCSAqIEBwYXJhbSB3aGl0ZUJvYXJkUGFuZWxYUG9zaXRpb24KKwkgKiBAcGFyYW0gd2hpdGVCb2FyZFBhbmVsWVBvc2l0aW9uCisJICogQHBhcmFtIHdoaXRlQm9hcmRQYW5lbEhlaWdodAorCSAqIEBwYXJhbSB3aGl0ZUJvYXJkUGFuZWxXaWR0aAorCSAqIEBwYXJhbSBzaG93RmlsZXNQYW5lbAorCSAqIEBwYXJhbSBmaWxlc1BhbmVsWFBvc2l0aW9uCisJICogQHBhcmFtIGZpbGVzUGFuZWxZUG9zaXRpb24KKwkgKiBAcGFyYW0gZmlsZXNQYW5lbEhlaWdodAorCSAqIEBwYXJhbSBmaWxlc1BhbmVsV2lkdGgKKwkgKiAKKwkgKiBAcmV0dXJuIC0gaWQgb2YgdGhlIHJvb20gdXBkYXRlZCBvciBlcnJvciBjb2RlCisJICovCisJQERlcHJlY2F0ZWQKKwlwdWJsaWMgTG9uZyB1cGRhdGVSb29tKFN0cmluZyBTSUQsIExvbmcgcm9vbXNfaWQsIFN0cmluZyBuYW1lLAorCQkJTG9uZyByb29tdHlwZXNfaWQsIFN0cmluZyBjb21tZW50LCBMb25nIG51bWJlck9mUGFydGl6aXBhbnRzLAorCQkJQm9vbGVhbiBpc3B1YmxpYywgSW50ZWdlciB2aWRlb1BvZFdpZHRoLCBJbnRlZ2VyIHZpZGVvUG9kSGVpZ2h0LAorCQkJSW50ZWdlciB2aWRlb1BvZFhQb3NpdGlvbiwgSW50ZWdlciB2aWRlb1BvZFlQb3NpdGlvbiwKKwkJCUludGVnZXIgbW9kZXJhdGlvblBhbmVsWFBvc2l0aW9uLCBCb29sZWFuIHNob3dXaGl0ZUJvYXJkLAorCQkJSW50ZWdlciB3aGl0ZUJvYXJkUGFuZWxYUG9zaXRpb24sIEludGVnZXIgd2hpdGVCb2FyZFBhbmVsWVBvc2l0aW9uLAorCQkJSW50ZWdlciB3aGl0ZUJvYXJkUGFuZWxIZWlnaHQsIEludGVnZXIgd2hpdGVCb2FyZFBhbmVsV2lkdGgsCisJCQlCb29sZWFuIHNob3dGaWxlc1BhbmVsLCBJbnRlZ2VyIGZpbGVzUGFuZWxYUG9zaXRpb24sCisJCQlJbnRlZ2VyIGZpbGVzUGFuZWxZUG9zaXRpb24sIEludGVnZXIgZmlsZXNQYW5lbEhlaWdodCwKKwkJCUludGVnZXIgZmlsZXNQYW5lbFdpZHRoLCBCb29sZWFuIGFwcG9pbnRtZW50KSB7CisJCXRyeSB7CisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrV2ViU2VydmljZUxldmVsKHVzZXJfbGV2ZWwpKSB7CisJCQkJcmV0dXJuIHJvb21NYW5hZ2VyLnVwZGF0ZVJvb21JbnRlcm5hbChyb29tc19pZCwKKwkJCQkJCXJvb210eXBlc19pZCwgbmFtZSwgaXNwdWJsaWMsIGNvbW1lbnQsCisJCQkJCQludW1iZXJPZlBhcnRpemlwYW50cywgbnVsbCwgYXBwb2ludG1lbnQsIGZhbHNlLCBudWxsLAorCQkJCQkJZmFsc2UsIG51bGwsIHRydWUsIGZhbHNlLCB0cnVlLCBmYWxzZSwgIiIsICIiLCBudWxsLAorCQkJCQkJbnVsbCwgbnVsbCwgZmFsc2UsIC8vIGhpZGVUb3BCYXIKKwkJCQkJCWZhbHNlLCAvLyBoaWRlQ2hhdAorCQkJCQkJZmFsc2UsIC8vIGhpZGVBY3Rpdml0aWVzQW5kQWN0aW9ucworCQkJCQkJZmFsc2UsIC8vIGhpZGVGaWxlc0V4cGxvcmVyCisJCQkJCQlmYWxzZSwgLy8gaGlkZUFjdGlvbnNNZW51CisJCQkJCQlmYWxzZSwgLy8gaGlkZVNjcmVlblNoYXJpbmcKKwkJCQkJCWZhbHNlLCAvLyBoaWRlV2hpdGVib2FyZAorCQkJCQkJZmFsc2UsIC8vIHNob3dNaWNyb3Bob25lU3RhdHVzCisJCQkJCQlmYWxzZSwgLy8gY2hhdE1vZGVyYXRlZAorCQkJCQkJZmFsc2UsIC8vIGNoYXRPcGVuZWQKKwkJCQkJCWZhbHNlLCAvLyBmaWxlc09wZW5lZAorCQkJCQkJZmFsc2UsIC8vIGF1dG9WaWRlb1NlbGVjdAorCQkJCQkJZmFsc2UgLy9zaXBFbmFibGVkCisJCQkJCQkpOworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIlthZGRSb29tXSAiLCBlcnIpOworCQl9CisJCXJldHVybiBuZXcgTG9uZygtMSk7CisJfQorCisJLyoqCisJICogVXBkYXRlcyBhIGNvbmZlcmVuY2Ugcm9vbSBieSBpdHMgcm9vbSBpZAorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiAgICAgICAgICAgIFRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIExvZ2dlZGluCisJICogQHBhcmFtIHJvb21faWQKKwkgKiAgICAgICAgICAgIHRoZSByb29tIGlkIHRvIHVwZGF0ZQorCSAqIEBwYXJhbSBuYW1lCisJICogICAgICAgICAgICBuZXcgbmFtZSBvZiB0aGUgcm9vbQorCSAqIEBwYXJhbSByb29tdHlwZXNfaWQKKwkgKiAgICAgICAgICAgIG5ldyB0eXBlIG9mIHJvb20gKDEgPSBDb25mZXJlbmNlLCAyID0gQXVkaWVuY2UsIDMgPQorCSAqICAgICAgICAgICAgUmVzdHJpY3RlZCwgNCA9IEludGVydmlldykKKwkgKiBAcGFyYW0gY29tbWVudAorCSAqICAgICAgICAgICAgbmV3IGNvbW1lbnQKKwkgKiBAcGFyYW0gbnVtYmVyT2ZQYXJ0aXppcGFudHMKKwkgKiAgICAgICAgICAgIG5ldyBudW1iZXJPZlBhcnRpY2lwYW50cworCSAqIEBwYXJhbSBpc3B1YmxpYworCSAqICAgICAgICAgICAgaXMgcHVibGljCisJICogQHBhcmFtIGFwcG9pbnRtZW50CisJICogICAgICAgICAgICBpZiB0aGUgcm9vbSBpcyBhbiBhcHBvaW50bWVudAorCSAqIEBwYXJhbSBpc0RlbW9Sb29tCisJICogICAgICAgICAgICBpcyBpdCBhIERlbW8gUm9vbSB3aXRoIGxpbWl0ZWQgdGltZT8gKHVzZSBmYWxzZSBpZiBub3Qgc3VyZQorCSAqICAgICAgICAgICAgd2hhdCB0aGF0IG1lYW5zKQorCSAqIEBwYXJhbSBkZW1vVGltZQorCSAqICAgICAgICAgICAgdGltZSBpbiBzZWNvbmRzIGFmdGVyIHRoZSB1c2VyIHdpbGwgYmUgbG9nZ2VkIG91dCAob25seQorCSAqICAgICAgICAgICAgZW5hYmxlZCBpZiBpc0RlbW9Sb29tIGlzIHRydWUpCisJICogQHBhcmFtIGlzTW9kZXJhdGVkUm9vbQorCSAqICAgICAgICAgICAgVXNlcnMgaGF2ZSB0byB3YWl0IHVudGlsIGEgTW9kZXJhdG9yIGFycml2ZXMuIFVzZSB0aGUKKwkgKiAgICAgICAgICAgIGJlY29tZU1vZGVyYXRvciBwYXJhbWV0ZXIgaW4gc2V0VXNlck9iamVjdEFuZEdlbmVyYXRlUm9vbUhhc2gKKwkgKiAgICAgICAgICAgIHRvIHNldCBhIHVzZXIgYXMgZGVmYXVsdCBNb2RlcmF0b3IKKwkgKiAgICAgICAgICAgIAorCSAqIEByZXR1cm4gLSBpZCBvZiB0aGUgcm9vbSB1cGRhdGVkIG9yIGVycm9yIGNvZGUKKwkgKi8KKwlwdWJsaWMgTG9uZyB1cGRhdGVSb29tV2l0aE1vZGVyYXRpb24oU3RyaW5nIFNJRCwgTG9uZyByb29tX2lkLCBTdHJpbmcgbmFtZSwKKwkJCUxvbmcgcm9vbXR5cGVzX2lkLCBTdHJpbmcgY29tbWVudCwgTG9uZyBudW1iZXJPZlBhcnRpemlwYW50cywKKwkJCUJvb2xlYW4gaXNwdWJsaWMsIEJvb2xlYW4gYXBwb2ludG1lbnQsIEJvb2xlYW4gaXNEZW1vUm9vbSwKKwkJCUludGVnZXIgZGVtb1RpbWUsIEJvb2xlYW4gaXNNb2RlcmF0ZWRSb29tKSB7CisJCXRyeSB7CisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrV2ViU2VydmljZUxldmVsKHVzZXJfbGV2ZWwpKSB7CisJCQkJcmV0dXJuIHJvb21NYW5hZ2VyLnVwZGF0ZVJvb21JbnRlcm5hbChyb29tX2lkLCByb29tdHlwZXNfaWQsCisJCQkJCQluYW1lLCBpc3B1YmxpYywgY29tbWVudCwgbnVtYmVyT2ZQYXJ0aXppcGFudHMsIG51bGwsCisJCQkJCQlhcHBvaW50bWVudCwgaXNEZW1vUm9vbSwgZGVtb1RpbWUsIGlzTW9kZXJhdGVkUm9vbSwKKwkJCQkJCW51bGwsIHRydWUsIGZhbHNlLCB0cnVlLCBmYWxzZSwgIiIsICIiLCBudWxsLCBudWxsLCBudWxsLAorCQkJCQkJZmFsc2UsIC8vIGhpZGVUb3BCYXIKKwkJCQkJCWZhbHNlLCAvLyBoaWRlQ2hhdAorCQkJCQkJZmFsc2UsIC8vIGhpZGVBY3Rpdml0aWVzQW5kQWN0aW9ucworCQkJCQkJZmFsc2UsIC8vIGhpZGVGaWxlc0V4cGxvcmVyCisJCQkJCQlmYWxzZSwgLy8gaGlkZUFjdGlvbnNNZW51CisJCQkJCQlmYWxzZSwgLy8gaGlkZVNjcmVlblNoYXJpbmcKKwkJCQkJCWZhbHNlLCAvLyBoaWRlV2hpdGVib2FyZAorCQkJCQkJZmFsc2UsIC8vIHNob3dNaWNyb3Bob25lU3RhdHVzCisJCQkJCQlmYWxzZSwgLy8gY2hhdE1vZGVyYXRlZAorCQkJCQkJZmFsc2UsIC8vIGNoYXRPcGVuZWQKKwkJCQkJCWZhbHNlLCAvLyBmaWxlc09wZW5lZAorCQkJCQkJZmFsc2UsIC8vIGF1dG9WaWRlb1NlbGVjdAorCQkJCQkJZmFsc2UgLy9zaXBFbmFibGVkCisJCQkJCQkpOworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIlt1cGRhdGVSb29tV2l0aE1vZGVyYXRpb25dICIsIGVycik7CisJCX0KKwkJcmV0dXJuIG5ldyBMb25nKC0xKTsKKwl9CisKKwkvKioKKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogICAgICAgICAgICBUaGUgU0lEIG9mIHRoZSBVc2VyLiBUaGlzIFNJRCBtdXN0IGJlIG1hcmtlZCBhcyBMb2dnZWRpbgorCSAqIEBwYXJhbSByb29tX2lkCisJICogICAgICAgICAgICB0aGUgcm9vbSBpZCB0byB1cGRhdGUKKwkgKiBAcGFyYW0gbmFtZQorCSAqICAgICAgICAgICAgbmV3IG5hbWUgb2YgdGhlIHJvb20KKwkgKiBAcGFyYW0gcm9vbXR5cGVzX2lkCisJICogICAgICAgICAgICBuZXcgdHlwZSBvZiByb29tICgxID0gQ29uZmVyZW5jZSwgMiA9IEF1ZGllbmNlLCAzID0KKwkgKiAgICAgICAgICAgIFJlc3RyaWN0ZWQsIDQgPSBJbnRlcnZpZXcpCisJICogQHBhcmFtIGNvbW1lbnQKKwkgKiAgICAgICAgICAgIG5ldyBjb21tZW50CisJICogQHBhcmFtIG51bWJlck9mUGFydGl6aXBhbnRzCisJICogICAgICAgICAgICBuZXcgbnVtYmVyT2ZQYXJ0aWNpcGFudHMKKwkgKiBAcGFyYW0gaXNwdWJsaWMKKwkgKiAgICAgICAgICAgIGlzIHB1YmxpYworCSAqIEBwYXJhbSBhcHBvaW50bWVudAorCSAqICAgICAgICAgICAgaWYgdGhlIHJvb20gaXMgYW4gYXBwb2ludG1lbnQKKwkgKiBAcGFyYW0gaXNEZW1vUm9vbQorCSAqICAgICAgICAgICAgaXMgaXQgYSBEZW1vIFJvb20gd2l0aCBsaW1pdGVkIHRpbWU/ICh1c2UgZmFsc2UgaWYgbm90IHN1cmUKKwkgKiAgICAgICAgICAgIHdoYXQgdGhhdCBtZWFucykKKwkgKiBAcGFyYW0gZGVtb1RpbWUKKwkgKiAgICAgICAgICAgIHRpbWUgaW4gc2Vjb25kcyBhZnRlciB0aGUgdXNlciB3aWxsIGJlIGxvZ2dlZCBvdXQgKG9ubHkKKwkgKiAgICAgICAgICAgIGVuYWJsZWQgaWYgaXNEZW1vUm9vbSBpcyB0cnVlKQorCSAqIEBwYXJhbSBpc01vZGVyYXRlZFJvb20KKwkgKiAgICAgICAgICAgIFVzZXJzIGhhdmUgdG8gd2FpdCB1bnRpbCBhIE1vZGVyYXRvciBhcnJpdmVzLiBVc2UgdGhlCisJICogICAgICAgICAgICBiZWNvbWVNb2RlcmF0b3IgcGFyYW1ldGVyIGluIHNldFVzZXJPYmplY3RBbmRHZW5lcmF0ZVJvb21IYXNoCisJICogICAgICAgICAgICB0byBzZXQgYSB1c2VyIGFzIGRlZmF1bHQgTW9kZXJhdG9yCisJICogQHBhcmFtIGFsbG93VXNlclF1ZXN0aW9ucworCSAqICAgICAgICAgICAgZW5hYmxlIG9yIGRpc2FibGUgdGhlIGJ1dHRvbiB0byBhbGxvdyB1c2VycyB0byBhcHBseSBmb3IKKwkgKiAgICAgICAgICAgIG1vZGVyYXRpb24KKwkgKiAgICAgICAgICAgIAorCSAqIEByZXR1cm4gLSBpZCBvZiB0aGUgcm9vbSB1cGRhdGVkIG9yIGVycm9yIGNvZGUKKwkgKi8KKwlwdWJsaWMgTG9uZyB1cGRhdGVSb29tV2l0aE1vZGVyYXRpb25BbmRRdWVzdGlvbnMoU3RyaW5nIFNJRCwgTG9uZyByb29tX2lkLAorCQkJU3RyaW5nIG5hbWUsIExvbmcgcm9vbXR5cGVzX2lkLCBTdHJpbmcgY29tbWVudCwKKwkJCUxvbmcgbnVtYmVyT2ZQYXJ0aXppcGFudHMsIEJvb2xlYW4gaXNwdWJsaWMsIEJvb2xlYW4gYXBwb2ludG1lbnQsCisJCQlCb29sZWFuIGlzRGVtb1Jvb20sIEludGVnZXIgZGVtb1RpbWUsIEJvb2xlYW4gaXNNb2RlcmF0ZWRSb29tLAorCQkJQm9vbGVhbiBhbGxvd1VzZXJRdWVzdGlvbnMpIHsKKwkJdHJ5IHsKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tXZWJTZXJ2aWNlTGV2ZWwodXNlcl9sZXZlbCkpIHsKKwkJCQlyZXR1cm4gcm9vbU1hbmFnZXIudXBkYXRlUm9vbUludGVybmFsKHJvb21faWQsIHJvb210eXBlc19pZCwKKwkJCQkJCW5hbWUsIGlzcHVibGljLCBjb21tZW50LCBudW1iZXJPZlBhcnRpemlwYW50cywgbnVsbCwKKwkJCQkJCWFwcG9pbnRtZW50LCBpc0RlbW9Sb29tLCBkZW1vVGltZSwgaXNNb2RlcmF0ZWRSb29tLAorCQkJCQkJbnVsbCwgYWxsb3dVc2VyUXVlc3Rpb25zLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsICIiLCAiIiwKKwkJCQkJCW51bGwsIG51bGwsIG51bGwsIGZhbHNlLCAvLyBoaWRlVG9wQmFyCisJCQkJCQlmYWxzZSwgLy8gaGlkZUNoYXQKKwkJCQkJCWZhbHNlLCAvLyBoaWRlQWN0aXZpdGllc0FuZEFjdGlvbnMKKwkJCQkJCWZhbHNlLCAvLyBoaWRlRmlsZXNFeHBsb3JlcgorCQkJCQkJZmFsc2UsIC8vIGhpZGVBY3Rpb25zTWVudQorCQkJCQkJZmFsc2UsIC8vIGhpZGVTY3JlZW5TaGFyaW5nCisJCQkJCQlmYWxzZSwgLy8gaGlkZVdoaXRlYm9hcmQKKwkJCQkJCWZhbHNlLCAvLyBzaG93TWljcm9waG9uZVN0YXR1cworCQkJCQkJZmFsc2UsIC8vIGNoYXRNb2RlcmF0ZWQKKwkJCQkJCWZhbHNlLCAvLyBjaGF0T3BlbmVkCisJCQkJCQlmYWxzZSwgLy8gZmlsZXNPcGVuZWQKKwkJCQkJCWZhbHNlLCAvLyBhdXRvVmlkZW9TZWxlY3QKKwkJCQkJCWZhbHNlIC8vc2lwRW5hYmxlZAorCQkJCQkJKTsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbdXBkYXRlUm9vbVdpdGhNb2RlcmF0aW9uQW5kUXVlc3Rpb25zXSAiLCBlcnIpOworCQl9CisJCXJldHVybiBuZXcgTG9uZygtMSk7CisJfQorCisJLyoqCisJICogdXBkYXRlIHJvb20gd2l0aCBvcHRpb25zIGZvciB1c2VyIHF1ZXN0aW9ucywgYXVkaW8gb25seSBhbmQgaGlkZQorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiAgICAgICAgICAgIFRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIExvZ2dlZGluCisJICogQHBhcmFtIHJvb21faWQKKwkgKiAgICAgICAgICAgIHRoZSByb29tIGlkIHRvIHVwZGF0ZQorCSAqIEBwYXJhbSBuYW1lCisJICogICAgICAgICAgICBuZXcgbmFtZSBvZiB0aGUgcm9vbQorCSAqIEBwYXJhbSByb29tdHlwZXNfaWQKKwkgKiAgICAgICAgICAgIG5ldyB0eXBlIG9mIHJvb20gKDEgPSBDb25mZXJlbmNlLCAyID0gQXVkaWVuY2UsIDMgPQorCSAqICAgICAgICAgICAgUmVzdHJpY3RlZCwgNCA9IEludGVydmlldykKKwkgKiBAcGFyYW0gY29tbWVudAorCSAqICAgICAgICAgICAgbmV3IGNvbW1lbnQKKwkgKiBAcGFyYW0gbnVtYmVyT2ZQYXJ0aXppcGFudHMKKwkgKiAgICAgICAgICAgIG51bWJlciBvZiBwYXJ0aWNpcGFudHMKKwkgKiBAcGFyYW0gaXNwdWJsaWMKKwkgKiAgICAgICAgICAgIGlzIHB1YmxpYworCSAqIEBwYXJhbSBhcHBvaW50bWVudAorCSAqICAgICAgICAgICAgaWYgdGhlIHJvb20gaXMgYW4gYXBwb2ludG1lbnQgKHVzZSBmYWxzZSBpZiBub3Qgc3VyZSB3aGF0IHRoYXQKKwkgKiAgICAgICAgICAgIG1lYW5zKQorCSAqIEBwYXJhbSBpc0RlbW9Sb29tCisJICogICAgICAgICAgICBpcyBpdCBhIERlbW8gUm9vbSB3aXRoIGxpbWl0ZWQgdGltZT8gKHVzZSBmYWxzZSBpZiBub3Qgc3VyZQorCSAqICAgICAgICAgICAgd2hhdCB0aGF0IG1lYW5zKQorCSAqIEBwYXJhbSBkZW1vVGltZQorCSAqICAgICAgICAgICAgdGltZSBpbiBzZWNvbmRzIGFmdGVyIHRoZSB1c2VyIHdpbGwgYmUgbG9nZ2VkIG91dCAob25seQorCSAqICAgICAgICAgICAgZW5hYmxlZCBpZiBpc0RlbW9Sb29tIGlzIHRydWUpCisJICogQHBhcmFtIGlzTW9kZXJhdGVkUm9vbQorCSAqICAgICAgICAgICAgVXNlcnMgaGF2ZSB0byB3YWl0IHVudGlsIGEgTW9kZXJhdG9yIGFycml2ZXMuIFVzZSB0aGUKKwkgKiAgICAgICAgICAgIGJlY29tZU1vZGVyYXRvciBwYXJhbWV0ZXIgaW4gc2V0VXNlck9iamVjdEFuZEdlbmVyYXRlUm9vbUhhc2gKKwkgKiAgICAgICAgICAgIHRvIHNldCBhIHVzZXIgYXMgZGVmYXVsdCBNb2RlcmF0b3IKKwkgKiBAcGFyYW0gYWxsb3dVc2VyUXVlc3Rpb25zCisJICogICAgICAgICAgICBlbmFibGUgb3IgZGlzYWJsZSB0aGUgYnV0dG9uIHRvIGFsbG93IHVzZXJzIHRvIGFwcGx5IGZvcgorCSAqICAgICAgICAgICAgbW9kZXJhdGlvbgorCSAqIEBwYXJhbSBpc0F1ZGlvT25seQorCSAqICAgICAgICAgICAgZW5hYmxlIG9yIGRpc2FibGUgdGhlIHZpZGVvIC8gb3IgYXVkaW8tb25seQorCSAqIEBwYXJhbSBoaWRlVG9wQmFyCisJICogICAgICAgICAgICBoaWRlIG9yIHNob3cgVG9wQmFyCisJICogQHBhcmFtIGhpZGVDaGF0CisJICogICAgICAgICAgICBoaWRlIG9yIHNob3cgQ2hhdAorCSAqIEBwYXJhbSBoaWRlQWN0aXZpdGllc0FuZEFjdGlvbnMKKwkgKiAgICAgICAgICAgIGhpZGUgb3Igc2hvdyBBY3Rpdml0aWVzIEFuZCBBY3Rpb25zCisJICogQHBhcmFtIGhpZGVGaWxlc0V4cGxvcmVyCisJICogICAgICAgICAgICBoaWRlIG9yIHNob3cgRmlsZXMgRXhwbG9yZXIKKwkgKiBAcGFyYW0gaGlkZUFjdGlvbnNNZW51CisJICogICAgICAgICAgICBoaWRlIG9yIHNob3cgQWN0aW9ucyBNZW51CisJICogQHBhcmFtIGhpZGVTY3JlZW5TaGFyaW5nCisJICogICAgICAgICAgICBoaWRlIG9yIHNob3cgU2NyZWVuIFNoYXJpbmcKKwkgKiBAcGFyYW0gaGlkZVdoaXRlYm9hcmQKKwkgKiAgICAgICAgICAgIGhpZGUgb3Igc2hvdyBXaGl0ZWJvYXJkLiBJZiB3aGl0Ym9hcmQgaXMgaGlkZGVuLCB2aWRlbyBwb2RzCisJICogICAgICAgICAgICBhbmQgc2Nyb2xsYmFyIGFwcGVhciBpbnN0ZWFkLgorCSAqICAgICAgICAgICAgCisJICogQHJldHVybiAtIGlkIG9mIHRoZSByb29tIHVwZGF0ZWQgb3IgZXJyb3IgY29kZQorCSAqLworCXB1YmxpYyBMb25nIHVwZGF0ZVJvb21XaXRoTW9kZXJhdGlvblF1ZXN0aW9uc0F1ZGlvVHlwZUFuZEhpZGVPcHRpb25zKAorCQkJU3RyaW5nIFNJRCwgTG9uZyByb29tX2lkLCBTdHJpbmcgbmFtZSwgTG9uZyByb29tdHlwZXNfaWQsCisJCQlTdHJpbmcgY29tbWVudCwgTG9uZyBudW1iZXJPZlBhcnRpemlwYW50cywgQm9vbGVhbiBpc3B1YmxpYywKKwkJCUJvb2xlYW4gYXBwb2ludG1lbnQsIEJvb2xlYW4gaXNEZW1vUm9vbSwgSW50ZWdlciBkZW1vVGltZSwKKwkJCUJvb2xlYW4gaXNNb2RlcmF0ZWRSb29tLCBCb29sZWFuIGFsbG93VXNlclF1ZXN0aW9ucywKKwkJCUJvb2xlYW4gaXNBdWRpb09ubHksIEJvb2xlYW4gaGlkZVRvcEJhciwgQm9vbGVhbiBoaWRlQ2hhdCwKKwkJCUJvb2xlYW4gaGlkZUFjdGl2aXRpZXNBbmRBY3Rpb25zLCBCb29sZWFuIGhpZGVGaWxlc0V4cGxvcmVyLAorCQkJQm9vbGVhbiBoaWRlQWN0aW9uc01lbnUsIEJvb2xlYW4gaGlkZVNjcmVlblNoYXJpbmcsCisJCQlCb29sZWFuIGhpZGVXaGl0ZWJvYXJkKSB7CisJCXRyeSB7CisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrV2ViU2VydmljZUxldmVsKHVzZXJfbGV2ZWwpKSB7CisJCQkJcmV0dXJuIHJvb21NYW5hZ2VyLnVwZGF0ZVJvb21JbnRlcm5hbChyb29tX2lkLCByb29tdHlwZXNfaWQsCisJCQkJCQluYW1lLCBpc3B1YmxpYywgY29tbWVudCwgbnVtYmVyT2ZQYXJ0aXppcGFudHMsIG51bGwsCisJCQkJCQlhcHBvaW50bWVudCwgaXNEZW1vUm9vbSwgZGVtb1RpbWUsIGlzTW9kZXJhdGVkUm9vbSwKKwkJCQkJCW51bGwsIGFsbG93VXNlclF1ZXN0aW9ucywgdHJ1ZSwgdHJ1ZSwgZmFsc2UsICIiLCAiIiwKKwkJCQkJCW51bGwsIG51bGwsIG51bGwsIGhpZGVUb3BCYXIsIGhpZGVDaGF0LAorCQkJCQkJaGlkZUFjdGl2aXRpZXNBbmRBY3Rpb25zLCBoaWRlRmlsZXNFeHBsb3JlciwKKwkJCQkJCWhpZGVBY3Rpb25zTWVudSwgaGlkZVNjcmVlblNoYXJpbmcsIGhpZGVXaGl0ZWJvYXJkLAorCQkJCQkJZmFsc2UsIC8vIHNob3dNaWNyb3Bob25lU3RhdHVzCisJCQkJCQlmYWxzZSwgLy8gY2hhdE1vZGVyYXRlZAorCQkJCQkJZmFsc2UsIC8vIGNoYXRPcGVuZWQKKwkJCQkJCWZhbHNlLCAvLyBmaWxlc09wZW5lZAorCQkJCQkJZmFsc2UsIC8vIGF1dG9WaWRlb1NlbGVjdAorCQkJCQkJZmFsc2UgLy9zaXBFbmFibGVkCisJCQkJCQkpOworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIlt1cGRhdGVSb29tV2l0aE1vZGVyYXRpb25BbmRRdWVzdGlvbnNdICIsIGVycik7CisJCX0KKwkJcmV0dXJuIG5ldyBMb25nKC0xKTsKKwl9CisKKwkvKioKKwkgKiBEZWxldGUgYSByb29tIGJ5IGl0cyByb29tIGlkCisJICogCisJICogQHBhcmFtIFNJRAorCSAqICAgICAgICAgICAgVGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgTG9nZ2VkaW4KKwkgKiBAcGFyYW0gcm9vbXNfaWQKKwkgKiAKKwkgKiBAcmV0dXJuIC0gaWQgb2YgdGhlIHJvb20gZGVsZXRlZAorCSAqLworCXB1YmxpYyBMb25nIGRlbGV0ZVJvb20oU3RyaW5nIFNJRCwgbG9uZyByb29tc19pZCkgeworCQlyZXR1cm4gY29uZmVyZW5jZVNlcnZpY2UuZGVsZXRlUm9vbShTSUQsIHJvb21zX2lkKTsKKwl9CisKKwkvKioKKwkgKiBraWNrIGFsbCB1c2VzIG9mIGEgY2VydGFpbiByb29tCisJICogCisJICogQHBhcmFtIFNJRAorCSAqICAgICAgICAgICAgVGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgTG9nZ2VkaW4KKwkgKiAgICAgICAgICAgIF9BZG1pbgorCSAqIEBwYXJhbSByb29tX2lkCisJICogICAgICAgICAgICB0aGUgcm9vbSBpZAorCSAqICAgICAgICAgICAgCisJICogQHJldHVybiAtIHRydWUgaWYgdXNlciB3YXMga2lja2VkLCBmYWxzZSBvdGhlcndpc2UKKwkgKi8KKwlwdWJsaWMgQm9vbGVhbiBraWNrVXNlcihTdHJpbmcgU0lEX0FkbWluLCBMb25nIHJvb21faWQpIHsKKwkJdHJ5IHsKKwkJCUJvb2xlYW4gc2FsaWRhID0gZmFsc2U7CisKKwkJCXNhbGlkYSA9IHVzZXJNYW5hZ2VyLmtpY2tVc2VyQnlTdHJlYW1JZChTSURfQWRtaW4sIHJvb21faWQpOworCisJCQlpZiAoc2FsaWRhID09IG51bGwpCisJCQkJc2FsaWRhID0gZmFsc2U7CisKKwkJCXJldHVybiBzYWxpZGE7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2tpY2tVc2VyXSIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLyoqCisJICogQWRkIGEgbmV3IGNvbmZlcmVuY2Ugcm9vbSB3aXRoIG9wdGlvbiB0byBzZXQgdGhlIGV4dGVybmFsIHJvb20gdHlwZSwgdGhlCisJICogZXh0ZXJuYWwgcm9vbSB0eXBlIHNob3VsZCBiZSBzZXQgaWYgbXVsdGlwbGUgYXBwbGljYXRpb25zIHVzZSB0aGUgc2FtZQorCSAqIE9wZW5NZWV0aW5ncyBpbnN0YW5jZQorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiAgICAgICAgICAgIFRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIExvZ2dlZGluCisJICogQHBhcmFtIG5hbWUKKwkgKiAgICAgICAgICAgIG5ldyBuYW1lIG9mIHRoZSByb29tCisJICogQHBhcmFtIHJvb210eXBlc19pZAorCSAqICAgICAgICAgICAgbmV3IHR5cGUgb2Ygcm9vbSAoMSA9IENvbmZlcmVuY2UsIDIgPSBBdWRpZW5jZSwgMyA9CisJICogICAgICAgICAgICBSZXN0cmljdGVkLCA0ID0gSW50ZXJ2aWV3KQorCSAqIEBwYXJhbSBjb21tZW50CisJICogICAgICAgICAgICBuZXcgY29tbWVudAorCSAqIEBwYXJhbSBudW1iZXJPZlBhcnRpemlwYW50cworCSAqICAgICAgICAgICAgbmV3IG51bWJlck9mUGFydGljaXBhbnRzCisJICogQHBhcmFtIGlzcHVibGljCisJICogICAgICAgICAgICBpcyBwdWJsaWMKKwkgKiBAcGFyYW0gYXBwb2ludG1lbnQKKwkgKiAgICAgICAgICAgIGlmIHRoZSByb29tIGlzIGFuIGFwcG9pbnRtZW50CisJICogQHBhcmFtIGlzRGVtb1Jvb20KKwkgKiAgICAgICAgICAgIGlzIGl0IGEgRGVtbyBSb29tIHdpdGggbGltaXRlZCB0aW1lPyAodXNlIGZhbHNlIGlmIG5vdCBzdXJlCisJICogICAgICAgICAgICB3aGF0IHRoYXQgbWVhbnMpCisJICogQHBhcmFtIGRlbW9UaW1lCisJICogICAgICAgICAgICB0aW1lIGluIHNlY29uZHMgYWZ0ZXIgdGhlIHVzZXIgd2lsbCBiZSBsb2dnZWQgb3V0IChvbmx5CisJICogICAgICAgICAgICBlbmFibGVkIGlmIGlzRGVtb1Jvb20gaXMgdHJ1ZSkKKwkgKiBAcGFyYW0gaXNNb2RlcmF0ZWRSb29tCisJICogICAgICAgICAgICBVc2VycyBoYXZlIHRvIHdhaXQgdW50aWwgYSBNb2RlcmF0b3IgYXJyaXZlcy4gVXNlIHRoZQorCSAqICAgICAgICAgICAgYmVjb21lTW9kZXJhdG9yIHBhcmFtZXRlciBpbiBzZXRVc2VyT2JqZWN0QW5kR2VuZXJhdGVSb29tSGFzaAorCSAqICAgICAgICAgICAgdG8gc2V0IGEgdXNlciBhcyBkZWZhdWx0IE1vZGVyYXRvcgorCSAqIEBwYXJhbSBleHRlcm5hbFJvb21UeXBlCisJICogICAgICAgICAgICB0aGUgZXh0ZXJuYWwgcm9vbSB0eXBlIChjYW4gYmUgdXNlZCB0byBpZGVudGlmeSBkaWZmZXJlbnQKKwkgKiAgICAgICAgICAgIGV4dGVybmFsIHN5c3RlbXMgdXNpbmcgc2FtZSBPcGVuTWVldGluZ3MgaW5zdGFuY2UpCisJICogICAgICAgICAgICAKKwkgKiBAcmV0dXJuIC0gaWQgb2YgdGhlIHJvb20gYWRkZWQgb3IgZXJyb3IgY29kZQorCSAqLworCXB1YmxpYyBMb25nIGFkZFJvb21XaXRoTW9kZXJhdGlvbkFuZEV4dGVybmFsVHlwZShTdHJpbmcgU0lELCBTdHJpbmcgbmFtZSwKKwkJCUxvbmcgcm9vbXR5cGVzX2lkLCBTdHJpbmcgY29tbWVudCwgTG9uZyBudW1iZXJPZlBhcnRpemlwYW50cywKKwkJCUJvb2xlYW4gaXNwdWJsaWMsIEJvb2xlYW4gYXBwb2ludG1lbnQsIEJvb2xlYW4gaXNEZW1vUm9vbSwKKwkJCUludGVnZXIgZGVtb1RpbWUsIEJvb2xlYW4gaXNNb2RlcmF0ZWRSb29tLCBTdHJpbmcgZXh0ZXJuYWxSb29tVHlwZSkgeworCQl0cnkgeworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1dlYlNlcnZpY2VMZXZlbCh1c2VyX2xldmVsKSkgeworCQkJCXJldHVybiByb29tTWFuYWdlci5hZGRFeHRlcm5hbFJvb20obmFtZSwgcm9vbXR5cGVzX2lkLAorCQkJCQkJY29tbWVudCwgbnVtYmVyT2ZQYXJ0aXppcGFudHMsIGlzcHVibGljLCBudWxsLAorCQkJCQkJYXBwb2ludG1lbnQsIGlzRGVtb1Jvb20sIGRlbW9UaW1lLCBpc01vZGVyYXRlZFJvb20sCisJCQkJCQludWxsLCBudWxsLCBleHRlcm5hbFJvb21UeXBlLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsICIiLAorCQkJCQkJZmFsc2UsIHRydWUsIGZhbHNlKTsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbYWRkUm9vbVdpdGhNb2RlcmF0aW9uXSAiLCBlcnIpOworCQl9CisJCXJldHVybiBuZXcgTG9uZygtMSk7CisJfQorCisJLyoqCisJICogQWRkcyBhIG5ldyByb29tIHdpdGggb3B0aW9ucyBmb3IgYXVkaW8gb25seQorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiAgICAgICAgICAgIFRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIExvZ2dlZGluCisJICogQHBhcmFtIG5hbWUKKwkgKiAgICAgICAgICAgIG5ldyBuYW1lIG9mIHRoZSByb29tCisJICogQHBhcmFtIHJvb210eXBlc19pZAorCSAqICAgICAgICAgICAgbmV3IHR5cGUgb2Ygcm9vbSAoMSA9IENvbmZlcmVuY2UsIDIgPSBBdWRpZW5jZSwgMyA9CisJICogICAgICAgICAgICBSZXN0cmljdGVkLCA0ID0gSW50ZXJ2aWV3KQorCSAqIEBwYXJhbSBjb21tZW50CisJICogICAgICAgICAgICBuZXcgY29tbWVudAorCSAqIEBwYXJhbSBudW1iZXJPZlBhcnRpemlwYW50cworCSAqICAgICAgICAgICAgbmV3IG51bWJlck9mUGFydGljaXBhbnRzCisJICogQHBhcmFtIGlzcHVibGljCisJICogICAgICAgICAgICBpcyBwdWJsaWMKKwkgKiBAcGFyYW0gYXBwb2ludG1lbnQKKwkgKiAgICAgICAgICAgIGlmIHRoZSByb29tIGlzIGFuIGFwcG9pbnRtZW50CisJICogQHBhcmFtIGlzRGVtb1Jvb20KKwkgKiAgICAgICAgICAgIGlzIGl0IGEgRGVtbyBSb29tIHdpdGggbGltaXRlZCB0aW1lPyAodXNlIGZhbHNlIGlmIG5vdCBzdXJlCisJICogICAgICAgICAgICB3aGF0IHRoYXQgbWVhbnMpCisJICogQHBhcmFtIGRlbW9UaW1lCisJICogICAgICAgICAgICB0aW1lIGluIHNlY29uZHMgYWZ0ZXIgdGhlIHVzZXIgd2lsbCBiZSBsb2dnZWQgb3V0IChvbmx5CisJICogICAgICAgICAgICBlbmFibGVkIGlmIGlzRGVtb1Jvb20gaXMgdHJ1ZSkKKwkgKiBAcGFyYW0gaXNNb2RlcmF0ZWRSb29tCisJICogICAgICAgICAgICBVc2VycyBoYXZlIHRvIHdhaXQgdW50aWwgYSBNb2RlcmF0b3IgYXJyaXZlcy4gVXNlIHRoZQorCSAqICAgICAgICAgICAgYmVjb21lTW9kZXJhdG9yIHBhcmFtZXRlciBpbiBzZXRVc2VyT2JqZWN0QW5kR2VuZXJhdGVSb29tSGFzaAorCSAqICAgICAgICAgICAgdG8gc2V0IGEgdXNlciBhcyBkZWZhdWx0IE1vZGVyYXRvcgorCSAqIEBwYXJhbSBleHRlcm5hbFJvb21UeXBlCisJICogICAgICAgICAgICB0aGUgZXh0ZXJuYWwgcm9vbSB0eXBlIChjYW4gYmUgdXNlZCB0byBpZGVudGlmeSBkaWZmZXJlbnQKKwkgKiAgICAgICAgICAgIGV4dGVybmFsIHN5c3RlbXMgdXNpbmcgc2FtZSBPcGVuTWVldGluZ3MgaW5zdGFuY2UpCisJICogQHBhcmFtIGFsbG93VXNlclF1ZXN0aW9ucworCSAqICAgICAgICAgICAgZW5hYmxlIG9yIGRpc2FibGUgdGhlIGJ1dHRvbiB0byBhbGxvdyB1c2VycyB0byBhcHBseSBmb3IKKwkgKiAgICAgICAgICAgIG1vZGVyYXRpb24KKwkgKiBAcGFyYW0gaXNBdWRpb09ubHkKKwkgKiAgICAgICAgICAgIGVuYWJsZSBvciBkaXNhYmxlIHRoZSB2aWRlbyAvIG9yIGF1ZGlvLW9ubHkKKwkgKiAgICAgICAgICAgIAorCSAqIEByZXR1cm4gLSBpZCBvZiB0aGUgcm9vbSBhZGRlZCBvciBlcnJvciBjb2RlCisJICovCisJcHVibGljIExvbmcgYWRkUm9vbVdpdGhNb2RlcmF0aW9uRXh0ZXJuYWxUeXBlQW5kQXVkaW9UeXBlKFN0cmluZyBTSUQsCisJCQlTdHJpbmcgbmFtZSwgTG9uZyByb29tdHlwZXNfaWQsIFN0cmluZyBjb21tZW50LAorCQkJTG9uZyBudW1iZXJPZlBhcnRpemlwYW50cywgQm9vbGVhbiBpc3B1YmxpYywgQm9vbGVhbiBhcHBvaW50bWVudCwKKwkJCUJvb2xlYW4gaXNEZW1vUm9vbSwgSW50ZWdlciBkZW1vVGltZSwgQm9vbGVhbiBpc01vZGVyYXRlZFJvb20sCisJCQlTdHJpbmcgZXh0ZXJuYWxSb29tVHlwZSwgQm9vbGVhbiBhbGxvd1VzZXJRdWVzdGlvbnMsCisJCQlCb29sZWFuIGlzQXVkaW9Pbmx5KSB7CisJCXRyeSB7CisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrV2ViU2VydmljZUxldmVsKHVzZXJfbGV2ZWwpKSB7CisJCQkJcmV0dXJuIHJvb21NYW5hZ2VyLmFkZEV4dGVybmFsUm9vbShuYW1lLCByb29tdHlwZXNfaWQsCisJCQkJCQljb21tZW50LCBudW1iZXJPZlBhcnRpemlwYW50cywgaXNwdWJsaWMsIG51bGwsCisJCQkJCQlhcHBvaW50bWVudCwgaXNEZW1vUm9vbSwgZGVtb1RpbWUsIGlzTW9kZXJhdGVkUm9vbSwKKwkJCQkJCW51bGwsIG51bGwsIGV4dGVybmFsUm9vbVR5cGUsIGFsbG93VXNlclF1ZXN0aW9ucywKKwkJCQkJCWlzQXVkaW9Pbmx5LCB0cnVlLCBmYWxzZSwgIiIsIGZhbHNlLCB0cnVlLCBmYWxzZSk7CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2FkZFJvb21XaXRoTW9kZXJhdGlvbl0gIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbmV3IExvbmcoLTEpOworCX0KKworCS8qKgorCSAqIEFkZHMgYSBuZXcgcm9vbSB3aXRoIG9wdGlvbnMgZm9yIHJlY29yZGluZworCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiAgICAgICAgICAgIFRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIExvZ2dlZGluCisJICogQHBhcmFtIG5hbWUKKwkgKiAgICAgICAgICAgIG5ldyBuYW1lIG9mIHRoZSByb29tCisJICogQHBhcmFtIHJvb210eXBlc19pZAorCSAqICAgICAgICAgICAgbmV3IHR5cGUgb2Ygcm9vbSAoMSA9IENvbmZlcmVuY2UsIDIgPSBBdWRpZW5jZSwgMyA9CisJICogICAgICAgICAgICBSZXN0cmljdGVkLCA0ID0gSW50ZXJ2aWV3KQorCSAqIEBwYXJhbSBjb21tZW50CisJICogICAgICAgICAgICBuZXcgY29tbWVudAorCSAqIEBwYXJhbSBudW1iZXJPZlBhcnRpemlwYW50cworCSAqICAgICAgICAgICAgbmV3IG51bWJlck9mUGFydGljaXBhbnRzCisJICogQHBhcmFtIGlzcHVibGljCisJICogICAgICAgICAgICBpcyBwdWJsaWMKKwkgKiBAcGFyYW0gYXBwb2ludG1lbnQKKwkgKiAgICAgICAgICAgIGlmIHRoZSByb29tIGlzIGFuIGFwcG9pbnRtZW50CisJICogQHBhcmFtIGlzRGVtb1Jvb20KKwkgKiAgICAgICAgICAgIGlzIGl0IGEgRGVtbyBSb29tIHdpdGggbGltaXRlZCB0aW1lPyAodXNlIGZhbHNlIGlmIG5vdCBzdXJlCisJICogICAgICAgICAgICB3aGF0IHRoYXQgbWVhbnMpCisJICogQHBhcmFtIGRlbW9UaW1lCisJICogICAgICAgICAgICB0aW1lIGluIHNlY29uZHMgYWZ0ZXIgdGhlIHVzZXIgd2lsbCBiZSBsb2dnZWQgb3V0IChvbmx5CisJICogICAgICAgICAgICBlbmFibGVkIGlmIGlzRGVtb1Jvb20gaXMgdHJ1ZSkKKwkgKiBAcGFyYW0gaXNNb2RlcmF0ZWRSb29tCisJICogICAgICAgICAgICBVc2VycyBoYXZlIHRvIHdhaXQgdW50aWwgYSBNb2RlcmF0b3IgYXJyaXZlcy4gVXNlIHRoZQorCSAqICAgICAgICAgICAgYmVjb21lTW9kZXJhdG9yIHBhcmFtZXRlciBpbiBzZXRVc2VyT2JqZWN0QW5kR2VuZXJhdGVSb29tSGFzaAorCSAqICAgICAgICAgICAgdG8gc2V0IGEgdXNlciBhcyBkZWZhdWx0IE1vZGVyYXRvcgorCSAqIEBwYXJhbSBleHRlcm5hbFJvb21UeXBlCisJICogICAgICAgICAgICB0aGUgZXh0ZXJuYWwgcm9vbSB0eXBlIChjYW4gYmUgdXNlZCB0byBpZGVudGlmeSBkaWZmZXJlbnQKKwkgKiAgICAgICAgICAgIGV4dGVybmFsIHN5c3RlbXMgdXNpbmcgc2FtZSBPcGVuTWVldGluZ3MgaW5zdGFuY2UpCisJICogQHBhcmFtIGFsbG93VXNlclF1ZXN0aW9ucworCSAqICAgICAgICAgICAgZW5hYmxlIG9yIGRpc2FibGUgdGhlIGJ1dHRvbiB0byBhbGxvdyB1c2VycyB0byBhcHBseSBmb3IKKwkgKiAgICAgICAgICAgIG1vZGVyYXRpb24KKwkgKiBAcGFyYW0gaXNBdWRpb09ubHkKKwkgKiAgICAgICAgICAgIGVuYWJsZSBvciBkaXNhYmxlIHRoZSB2aWRlbyAvIG9yIGF1ZGlvLW9ubHkKKwkgKiBAcGFyYW0gd2FpdEZvclJlY29yZGluZworCSAqICAgICAgICAgICAgaWYgdGhlIHVzZXJzIGluIHRoZSByb29tIHdpbGwgZ2V0IGEgbm90aWZpY2F0aW9uIHRoYXQgdGhleQorCSAqICAgICAgICAgICAgc2hvdWxkIHN0YXJ0IHJlY29yZGluZyBiZWZvcmUgdGhleSBkbyBhIGNvbmZlcmVuY2UKKwkgKiBAcGFyYW0gYWxsb3dSZWNvcmRpbmcKKwkgKiAgICAgICAgICAgIGlmIHRoZSByZWNvcmRpbmcgb3B0aW9uIGlzIGF2YWlsYWJsZSBvciBub3QKKwkgKiAgICAgICAgICAgIAorCSAqIEByZXR1cm4gLSBpZCBvZiB0aGUgcm9vbSBhZGRlZCBvciBlcnJvciBjb2RlCisJICovCisJcHVibGljIExvbmcgYWRkUm9vbVdpdGhNb2RlcmF0aW9uQW5kUmVjb3JkaW5nRmxhZ3MoU3RyaW5nIFNJRCwgU3RyaW5nIG5hbWUsCisJCQlMb25nIHJvb210eXBlc19pZCwgU3RyaW5nIGNvbW1lbnQsIExvbmcgbnVtYmVyT2ZQYXJ0aXppcGFudHMsCisJCQlCb29sZWFuIGlzcHVibGljLCBCb29sZWFuIGFwcG9pbnRtZW50LCBCb29sZWFuIGlzRGVtb1Jvb20sCisJCQlJbnRlZ2VyIGRlbW9UaW1lLCBCb29sZWFuIGlzTW9kZXJhdGVkUm9vbSwgU3RyaW5nIGV4dGVybmFsUm9vbVR5cGUsCisJCQlCb29sZWFuIGFsbG93VXNlclF1ZXN0aW9ucywgQm9vbGVhbiBpc0F1ZGlvT25seSwKKwkJCUJvb2xlYW4gd2FpdEZvclJlY29yZGluZywgQm9vbGVhbiBhbGxvd1JlY29yZGluZykgeworCQl0cnkgeworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1dlYlNlcnZpY2VMZXZlbCh1c2VyX2xldmVsKSkgeworCQkJCXJldHVybiByb29tTWFuYWdlci5hZGRFeHRlcm5hbFJvb20obmFtZSwgcm9vbXR5cGVzX2lkLAorCQkJCQkJY29tbWVudCwgbnVtYmVyT2ZQYXJ0aXppcGFudHMsIGlzcHVibGljLCBudWxsLAorCQkJCQkJYXBwb2ludG1lbnQsIGlzRGVtb1Jvb20sIGRlbW9UaW1lLCBpc01vZGVyYXRlZFJvb20sCisJCQkJCQludWxsLCBudWxsLCBleHRlcm5hbFJvb21UeXBlLCBhbGxvd1VzZXJRdWVzdGlvbnMsCisJCQkJCQlpc0F1ZGlvT25seSwgdHJ1ZSwgZmFsc2UsICIiLCB3YWl0Rm9yUmVjb3JkaW5nLAorCQkJCQkJYWxsb3dSZWNvcmRpbmcsIGZhbHNlKTsKKwkJCX0gZWxzZSB7CisJCQkJcmV0dXJuIC0yNkw7CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2FkZFJvb21XaXRoTW9kZXJhdGlvbl0gIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbmV3IExvbmcoLTEpOworCX0KKworCS8qKgorCSAqIEFkZCBhIGNvbmZlcmVuY2Ugcm9vbSB3aXRoIG9wdGlvbnMgdG8gZGlzYWJsZSB0aGUgdG9wIG1lbnUgYmFyIGluIHRoZQorCSAqIGNvbmZlcmVuY2Ugcm9vbQorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiAgICAgICAgICAgIFRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIExvZ2dlZGluCisJICogQHBhcmFtIG5hbWUKKwkgKiAgICAgICAgICAgIG5ldyBuYW1lIG9mIHRoZSByb29tCisJICogQHBhcmFtIHJvb210eXBlc19pZAorCSAqICAgICAgICAgICAgbmV3IHR5cGUgb2Ygcm9vbSAoMSA9IENvbmZlcmVuY2UsIDIgPSBBdWRpZW5jZSwgMyA9CisJICogICAgICAgICAgICBSZXN0cmljdGVkLCA0ID0gSW50ZXJ2aWV3KQorCSAqIEBwYXJhbSBjb21tZW50CisJICogICAgICAgICAgICBuZXcgY29tbWVudAorCSAqIEBwYXJhbSBudW1iZXJPZlBhcnRpemlwYW50cworCSAqICAgICAgICAgICAgbmV3IG51bWJlck9mUGFydGljaXBhbnRzCisJICogQHBhcmFtIGlzcHVibGljCisJICogICAgICAgICAgICBpcyBwdWJsaWMKKwkgKiBAcGFyYW0gYXBwb2ludG1lbnQKKwkgKiAgICAgICAgICAgIGlmIHRoZSByb29tIGlzIGFuIGFwcG9pbnRtZW50CisJICogQHBhcmFtIGlzRGVtb1Jvb20KKwkgKiAgICAgICAgICAgIGlzIGl0IGEgRGVtbyBSb29tIHdpdGggbGltaXRlZCB0aW1lPyAodXNlIGZhbHNlIGlmIG5vdCBzdXJlCisJICogICAgICAgICAgICB3aGF0IHRoYXQgbWVhbnMpCisJICogQHBhcmFtIGRlbW9UaW1lCisJICogICAgICAgICAgICB0aW1lIGluIHNlY29uZHMgYWZ0ZXIgdGhlIHVzZXIgd2lsbCBiZSBsb2dnZWQgb3V0IChvbmx5CisJICogICAgICAgICAgICBlbmFibGVkIGlmIGlzRGVtb1Jvb20gaXMgdHJ1ZSkKKwkgKiBAcGFyYW0gaXNNb2RlcmF0ZWRSb29tCisJICogICAgICAgICAgICBVc2VycyBoYXZlIHRvIHdhaXQgdW50aWwgYSBNb2RlcmF0b3IgYXJyaXZlcy4gVXNlIHRoZQorCSAqICAgICAgICAgICAgYmVjb21lTW9kZXJhdG9yIHBhcmFtZXRlciBpbiBzZXRVc2VyT2JqZWN0QW5kR2VuZXJhdGVSb29tSGFzaAorCSAqICAgICAgICAgICAgdG8gc2V0IGEgdXNlciBhcyBkZWZhdWx0IE1vZGVyYXRvcgorCSAqIEBwYXJhbSBleHRlcm5hbFJvb21UeXBlCisJICogICAgICAgICAgICB0aGUgZXh0ZXJuYWwgcm9vbSB0eXBlIChjYW4gYmUgdXNlZCB0byBpZGVudGlmeSBkaWZmZXJlbnQKKwkgKiAgICAgICAgICAgIGV4dGVybmFsIHN5c3RlbXMgdXNpbmcgc2FtZSBPcGVuTWVldGluZ3MgaW5zdGFuY2UpCisJICogQHBhcmFtIGFsbG93VXNlclF1ZXN0aW9ucworCSAqICAgICAgICAgICAgZW5hYmxlIG9yIGRpc2FibGUgdGhlIGJ1dHRvbiB0byBhbGxvdyB1c2VycyB0byBhcHBseSBmb3IKKwkgKiAgICAgICAgICAgIG1vZGVyYXRpb24KKwkgKiBAcGFyYW0gaXNBdWRpb09ubHkKKwkgKiAgICAgICAgICAgIGVuYWJsZSBvciBkaXNhYmxlIHRoZSB2aWRlbyAvIG9yIGF1ZGlvLW9ubHkKKwkgKiBAcGFyYW0gd2FpdEZvclJlY29yZGluZworCSAqICAgICAgICAgICAgaWYgdGhlIHVzZXJzIGluIHRoZSByb29tIHdpbGwgZ2V0IGEgbm90aWZpY2F0aW9uIHRoYXQgdGhleQorCSAqICAgICAgICAgICAgc2hvdWxkIHN0YXJ0IHJlY29yZGluZyBiZWZvcmUgdGhleSBkbyBhIGNvbmZlcmVuY2UKKwkgKiBAcGFyYW0gYWxsb3dSZWNvcmRpbmcKKwkgKiAgICAgICAgICAgIGlmIHRoZSByZWNvcmRpbmcgb3B0aW9uIGlzIGF2YWlsYWJsZSBvciBub3QKKwkgKiBAcGFyYW0gaGlkZVRvcEJhcgorCSAqICAgICAgICAgICAgaWYgdGhlIHRvcCBiYXIgaW4gdGhlIGNvbmZlcmVuY2Ugcm9vbSBpcyB2aXNpYmxlIG9yIG5vdAorCSAqICAgICAgICAgICAgCisJICogQHJldHVybiAtIGlkIG9mIHRoZSByb29tIGFkZGVkIG9yIGVycm9yIGNvZGUKKwkgKi8KKwlwdWJsaWMgTG9uZyBhZGRSb29tV2l0aE1vZGVyYXRpb25FeHRlcm5hbFR5cGVBbmRUb3BCYXJPcHRpb24oU3RyaW5nIFNJRCwKKwkJCVN0cmluZyBuYW1lLCBMb25nIHJvb210eXBlc19pZCwgU3RyaW5nIGNvbW1lbnQsCisJCQlMb25nIG51bWJlck9mUGFydGl6aXBhbnRzLCBCb29sZWFuIGlzcHVibGljLCBCb29sZWFuIGFwcG9pbnRtZW50LAorCQkJQm9vbGVhbiBpc0RlbW9Sb29tLCBJbnRlZ2VyIGRlbW9UaW1lLCBCb29sZWFuIGlzTW9kZXJhdGVkUm9vbSwKKwkJCVN0cmluZyBleHRlcm5hbFJvb21UeXBlLCBCb29sZWFuIGFsbG93VXNlclF1ZXN0aW9ucywKKwkJCUJvb2xlYW4gaXNBdWRpb09ubHksIEJvb2xlYW4gd2FpdEZvclJlY29yZGluZywKKwkJCUJvb2xlYW4gYWxsb3dSZWNvcmRpbmcsIEJvb2xlYW4gaGlkZVRvcEJhcikgeworCQl0cnkgeworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1dlYlNlcnZpY2VMZXZlbCh1c2VyX2xldmVsKSkgeworCQkJCXJldHVybiByb29tTWFuYWdlci5hZGRFeHRlcm5hbFJvb20obmFtZSwgcm9vbXR5cGVzX2lkLAorCQkJCQkJY29tbWVudCwgbnVtYmVyT2ZQYXJ0aXppcGFudHMsIGlzcHVibGljLCBudWxsLAorCQkJCQkJYXBwb2ludG1lbnQsIGlzRGVtb1Jvb20sIGRlbW9UaW1lLCBpc01vZGVyYXRlZFJvb20sCisJCQkJCQludWxsLCBudWxsLCBleHRlcm5hbFJvb21UeXBlLCBhbGxvd1VzZXJRdWVzdGlvbnMsCisJCQkJCQlpc0F1ZGlvT25seSwgdHJ1ZSwgZmFsc2UsICIiLCB3YWl0Rm9yUmVjb3JkaW5nLAorCQkJCQkJYWxsb3dSZWNvcmRpbmcsIGhpZGVUb3BCYXIpOworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIlthZGRSb29tV2l0aE1vZGVyYXRpb25dICIsIGVycik7CisJCX0KKwkJcmV0dXJuIG5ldyBMb25nKC0xKTsKKwl9CisKKwkvKioKKwkgKiAKKwkgKiBDcmVhdGUgYSBJbnZpdGF0aW9uIGhhc2ggYW5kIG9wdGlvbmFsbHkgc2VuZCBpdCBieSBtYWlsIHRoZSBGcm9tIHRvIERhdGUKKwkgKiBpcyBhcyBTdHJpbmcgYXMgc29tZSBTT0FQIGxpYnJhcmllcyBkbyBub3QgYWNjZXB0IERhdGUgT2JqZWN0cyBpbiBTT0FQCisJICogQ2FsbHMgRGF0ZSBpcyBwYXJzZWQgYXMgZGQubW0ueXl5eSwgdGltZSBhcyBoaDptbSAoZG9uJ3QgZm9yZ2V0IHRoZQorCSAqIGxlYWRpbmcgemVybydzKQorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiAgICAgICAgICAgIFRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIExvZ2dlZGluIGEKKwkgKiAgICAgICAgICAgIHZhbGlkIFNlc3Npb24gVG9rZW4KKwkgKiBAcGFyYW0gdXNlcm5hbWUKKwkgKiAgICAgICAgICAgIHRoZSB1c2VybmFtZSBvZiB0aGUgVXNlciB0aGF0IGhlIHdpbGwgZ2V0CisJICogQHBhcmFtIHJvb21faWQKKwkgKiAgICAgICAgICAgIHRoZSBjb25mZXJlbmNlIHJvb20gaWQgb2YgdGhlIGludml0YXRpb24KKwkgKiBAcGFyYW0gaXNQYXNzd29yZFByb3RlY3RlZAorCSAqICAgICAgICAgICAgaWYgdGhlIGludml0YXRpb24gaXMgcGFzc3dvcmQgcHJvdGVjdGVkCisJICogQHBhcmFtIGludml0YXRpb25wYXNzCisJICogICAgICAgICAgICB0aGUgcGFzc3dvcmQgZm9yIGFjY2Vzc2luZyB0aGUgY29uZmVyZW5jZSByb29tIHZpYSB0aGUKKwkgKiAgICAgICAgICAgIGludml0YXRpb24gaGFzaAorCSAqIEBwYXJhbSB2YWxpZAorCSAqICAgICAgICAgICAgdGhlIHR5cGUgb2YgdmFsaWRhdGlvbiBmb3IgdGhlIGhhc2ggMTogZW5kbGVzcywgMjogZnJvbS10bworCSAqICAgICAgICAgICAgcGVyaW9kLCAzOiBvbmUtdGltZQorCSAqIEBwYXJhbSB2YWxpZEZyb21EYXRlCisJICogICAgICAgICAgICBEYXRlIGluIEZvcm1hdCBvZiBkZC5tbS55eXl5IG9ubHkgb2YgaW50ZXJlc3QgaWYgdmFsaWQgaXMgdHlwZQorCSAqICAgICAgICAgICAgMgorCSAqIEBwYXJhbSB2YWxpZEZyb21UaW1lCisJICogICAgICAgICAgICB0aW1lIGluIEZvcm1hdCBvZiBoaDptbSBvbmx5IG9mIGludGVyZXN0IGlmIHZhbGlkIGlzIHR5cGUgMgorCSAqIEBwYXJhbSB2YWxpZFRvRGF0ZQorCSAqICAgICAgICAgICAgRGF0ZSBpbiBGb3JtYXQgb2YgZGQubW0ueXl5eSBvbmx5IG9mIGludGVyZXN0IGlmIHZhbGlkIGlzIHR5cGUKKwkgKiAgICAgICAgICAgIDIKKwkgKiBAcGFyYW0gdmFsaWRUb1RpbWUKKwkgKiAgICAgICAgICAgIHRpbWUgaW4gRm9ybWF0IG9mIGhoOm1tIG9ubHkgb2YgaW50ZXJlc3QgaWYgdmFsaWQgaXMgdHlwZSAyCisJICogQHJldHVybiBhIEhBU0ggdmFsdWUgdGhhdCBjYW4gYmUgbWFkZSBpbnRvIGEgVVJMIHdpdGgKKwkgKiAgICAgICAgIGh0dHA6Ly8kT1BFTk1FRVRJTkdTX0hPU1QKKwkgKiAgICAgICAgIDokUE9SVC9vcGVubWVldGluZ3MvP2ludml0YXRpb25IYXNoPSIraW52aXRhdGlvbnNIYXNoOworCSAqIEB0aHJvd3MgQXhpc0ZhdWx0CisJICovCisJcHVibGljIFN0cmluZyBnZXRJbnZpdGF0aW9uSGFzaChTdHJpbmcgU0lELCBTdHJpbmcgdXNlcm5hbWUsIExvbmcgcm9vbV9pZCwKKwkJCUJvb2xlYW4gaXNQYXNzd29yZFByb3RlY3RlZCwgU3RyaW5nIGludml0YXRpb25wYXNzLCBJbnRlZ2VyIHZhbGlkLAorCQkJU3RyaW5nIHZhbGlkRnJvbURhdGUsIFN0cmluZyB2YWxpZEZyb21UaW1lLCBTdHJpbmcgdmFsaWRUb0RhdGUsCisJCQlTdHJpbmcgdmFsaWRUb1RpbWUpIHRocm93cyBBeGlzRmF1bHQgeworCQl0cnkgeworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrV2ViU2VydmljZUxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlEYXRlIGRGcm9tID0gbnVsbDsKKwkJCQlEYXRlIGRUbyA9IG51bGw7CisKKwkJCQlpZiAodmFsaWQgPT0gMikgeworCQkJCQlJbnRlZ2VyIHZhbGlkRnJvbUhvdXIgPSBJbnRlZ2VyLnZhbHVlT2YoCisJCQkJCQkJdmFsaWRGcm9tVGltZS5zdWJzdHJpbmcoMCwgMikpLmludFZhbHVlKCk7CisJCQkJCUludGVnZXIgdmFsaWRGcm9tTWludXRlID0gSW50ZWdlci52YWx1ZU9mKAorCQkJCQkJCXZhbGlkRnJvbVRpbWUuc3Vic3RyaW5nKDMsIDUpKS5pbnRWYWx1ZSgpOworCisJCQkJCUludGVnZXIgdmFsaWRUb0hvdXIgPSBJbnRlZ2VyLnZhbHVlT2YoCisJCQkJCQkJdmFsaWRUb1RpbWUuc3Vic3RyaW5nKDAsIDIpKS5pbnRWYWx1ZSgpOworCQkJCQlJbnRlZ2VyIHZhbGlkVG9NaW51dGUgPSBJbnRlZ2VyLnZhbHVlT2YoCisJCQkJCQkJdmFsaWRUb1RpbWUuc3Vic3RyaW5nKDMsIDUpKS5pbnRWYWx1ZSgpOworCisJCQkJCWxvZy5pbmZvKCJ2YWxpZEZyb21Ib3VyOiAiICsgdmFsaWRGcm9tSG91cik7CisJCQkJCWxvZy5pbmZvKCJ2YWxpZEZyb21NaW51dGU6ICIgKyB2YWxpZEZyb21NaW51dGUpOworCisJCQkJCURhdGUgZnJvbURhdGUgPSBDYWxlbmRhclBhdHRlcm5zLnBhcnNlRGF0ZSh2YWxpZEZyb21EYXRlKTsgLy8gZGQuTU0ueXl5eQorCQkJCQlEYXRlIHRvRGF0ZSA9IENhbGVuZGFyUGF0dGVybnMucGFyc2VEYXRlKHZhbGlkVG9EYXRlKTsgLy8gZGQuTU0ueXl5eQorCisJCQkJCUNhbGVuZGFyIGNhbEZyb20gPSBDYWxlbmRhci5nZXRJbnN0YW5jZSgpOworCQkJCQljYWxGcm9tLnNldFRpbWUoZnJvbURhdGUpOworCQkJCQljYWxGcm9tLnNldChjYWxGcm9tLmdldChDYWxlbmRhci5ZRUFSKSwKKwkJCQkJCQljYWxGcm9tLmdldChDYWxlbmRhci5NT05USCksCisJCQkJCQkJY2FsRnJvbS5nZXQoQ2FsZW5kYXIuREFURSksIHZhbGlkRnJvbUhvdXIsCisJCQkJCQkJdmFsaWRGcm9tTWludXRlLCAwKTsKKworCQkJCQlDYWxlbmRhciBjYWxUbyA9IENhbGVuZGFyLmdldEluc3RhbmNlKCk7CisJCQkJCWNhbFRvLnNldFRpbWUodG9EYXRlKTsKKwkJCQkJY2FsVG8uc2V0KGNhbFRvLmdldChDYWxlbmRhci5ZRUFSKSwKKwkJCQkJCQljYWxUby5nZXQoQ2FsZW5kYXIuTU9OVEgpLAorCQkJCQkJCWNhbFRvLmdldChDYWxlbmRhci5EQVRFKSwgdmFsaWRUb0hvdXIsCisJCQkJCQkJdmFsaWRUb01pbnV0ZSwgMCk7CisKKwkJCQkJZEZyb20gPSBjYWxGcm9tLmdldFRpbWUoKTsKKwkJCQkJZFRvID0gY2FsVG8uZ2V0VGltZSgpOworCisJCQkJCWxvZy5pbmZvKCJ2YWxpZEZyb21EYXRlOiAiCisJCQkJCQkJKyBDYWxlbmRhclBhdHRlcm5zCisJCQkJCQkJCQkuZ2V0RGF0ZVdpdGhUaW1lQnlNaWxpU2Vjb25kcyhkRnJvbSkpOworCQkJCQlsb2cuaW5mbygidmFsaWRUb0RhdGU6ICIKKwkJCQkJCQkrIENhbGVuZGFyUGF0dGVybnMKKwkJCQkJCQkJCS5nZXREYXRlV2l0aFRpbWVCeU1pbGlTZWNvbmRzKGRUbykpOworCQkJCX0KKwkJCQlJbnZpdGF0aW9ucyBpbnZpdGF0aW9uID0gaW52aXRhdGlvbk1hbmFnZXIKKwkJCQkJCS5hZGRJbnZpdGF0aW9uTGluayh1c2VyX2xldmVsLCB1c2VybmFtZSwgdXNlcm5hbWUsCisJCQkJCQkJCXVzZXJuYW1lLCB1c2VybmFtZSwgdXNlcm5hbWUsIHJvb21faWQsICIiLAorCQkJCQkJCQlpc1Bhc3N3b3JkUHJvdGVjdGVkLCBpbnZpdGF0aW9ucGFzcywgdmFsaWQsCisJCQkJCQkJCWRGcm9tLCBkVG8sIHVzZXJzX2lkLCAiIiwgMUwsIGZhbHNlLCBkRnJvbSwKKwkJCQkJCQkJZFRvLCBudWxsLCB1c2VybmFtZSwgdXNlck1hbmFnZXIuZ2V0VXNlckJ5SWQodXNlcnNfaWQpLmdldE9tVGltZVpvbmUoKSk7CisKKwkJCQlpZiAoaW52aXRhdGlvbiAhPSBudWxsKSB7CisKKwkJCQkJcmV0dXJuIGludml0YXRpb24uZ2V0SGFzaCgpOworCisJCQkJfSBlbHNlIHsKKworCQkJCQlyZXR1cm4gIlN5cyAtIEVycm9yIjsKKworCQkJCX0KKworCQkJfSBlbHNlIHsKKwkJCQlyZXR1cm4gIk5lZWQgQWRtaW4gUHJpdmlsZWdlcyB0byBwZXJmb20gdGhlIEFjdGlvbiI7CisJCQl9CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbc2VuZEludml0YXRpb25IYXNoXSAiLCBlcnIpOworCQkJdGhyb3cgbmV3IEF4aXNGYXVsdChlcnIuZ2V0TWVzc2FnZSgpKTsKKwkJfQorCX0KKworCS8qKgorCSAqIENyZWF0ZSBhIEludml0YXRpb24gaGFzaCBhbmQgb3B0aW9uYWxseSBzZW5kIGl0IGJ5IG1haWwgdGhlIEZyb20gdG8gRGF0ZQorCSAqIGlzIGFzIFN0cmluZyBhcyBzb21lIFNPQVAgbGlicmFyaWVzIGRvIG5vdCBhY2NlcHQgRGF0ZSBPYmplY3RzIGluIFNPQVAKKwkgKiBDYWxscyBEYXRlIGlzIHBhcnNlZCBhcyBkZC5tbS55eXl5LCB0aW1lIGFzIGhoOm1tIChkb24ndCBmb3JnZXQgdGhlCisJICogbGVhZGluZyB6ZXJvJ3MpCisJICogCisJICogQHBhcmFtIFNJRAorCSAqICAgICAgICAgICAgVGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgTG9nZ2VkaW4gYQorCSAqICAgICAgICAgICAgdmFsaWQgU2Vzc2lvbiBUb2tlbgorCSAqIEBwYXJhbSB1c2VybmFtZQorCSAqICAgICAgICAgICAgdGhlIFVzZXJuYW1lIG9mIHRoZSBVc2VyIHRoYXQgaGUgd2lsbCBnZXQKKwkgKiBAcGFyYW0gbWVzc2FnZQorCSAqICAgICAgICAgICAgdGhlIE1lc3NhZ2UgaW4gdGhlIEVtYWlsIEJvZHkgc2VuZCB3aXRoIHRoZSBpbnZpdGF0aW9uIGlmCisJICogICAgICAgICAgICBzZW5kTWFpbCBpcyB0cnVlCisJICogQHBhcmFtIGJhc2V1cmwKKwkgKiAgICAgICAgICAgIHRoZSBiYXNlVVJMIGZvciB0aGUgSW5maXZhdGlvbnMgbGluayBpbiB0aGUgTWFpbCBCb2R5IGlmCisJICogICAgICAgICAgICBzZW5kTWFpbCBpcyB0cnVlCisJICogQHBhcmFtIGVtYWlsCisJICogICAgICAgICAgICB0aGUgRW1haWwgdG8gc2VuZCB0aGUgaW52aXRhdGlvbiB0byBpZiBzZW5kTWFpbCBpcyB0cnVlCisJICogQHBhcmFtIHN1YmplY3QKKwkgKiAgICAgICAgICAgIHRoZSBzdWJqZWN0IG9mIHRoZSBFbWFpbCBzZW5kIHdpdGggdGhlIGludml0YXRpb24gaWYgc2VuZE1haWwKKwkgKiAgICAgICAgICAgIGlzIHRydWUKKwkgKiBAcGFyYW0gcm9vbV9pZAorCSAqICAgICAgICAgICAgdGhlIGNvbmZlcmVuY2Ugcm9vbSBpZCBvZiB0aGUgaW52aXRhdGlvbgorCSAqIEBwYXJhbSBjb25mZXJlbmNlZG9tYWluCisJICogICAgICAgICAgICB0aGUgZG9tYWluIG9mIHRoZSByb29tIChrZWVwIGVtcHR5KQorCSAqIEBwYXJhbSBpc1Bhc3N3b3JkUHJvdGVjdGVkCisJICogICAgICAgICAgICBpZiB0aGUgaW52aXRhdGlvbiBpcyBwYXNzd29yZCBwcm90ZWN0ZWQKKwkgKiBAcGFyYW0gaW52aXRhdGlvbnBhc3MKKwkgKiAgICAgICAgICAgIHRoZSBwYXNzd29yZCBmb3IgYWNjZXNzaW5nIHRoZSBjb25mZXJlbmNlIHJvb20gdmlhIHRoZQorCSAqICAgICAgICAgICAgaW52aXRhdGlvbiBoYXNoCisJICogQHBhcmFtIHZhbGlkCisJICogICAgICAgICAgICB0aGUgdHlwZSBvZiB2YWxpZGF0aW9uIGZvciB0aGUgaGFzaCAxOiBlbmRsZXNzLCAyOiBmcm9tLXRvCisJICogICAgICAgICAgICBwZXJpb2QsIDM6IG9uZS10aW1lCisJICogQHBhcmFtIHZhbGlkRnJvbURhdGUKKwkgKiAgICAgICAgICAgIERhdGUgaW4gRm9ybWF0IG9mIGRkLm1tLnl5eXkgb25seSBvZiBpbnRlcmVzdCBpZiB2YWxpZCBpcyB0eXBlCisJICogICAgICAgICAgICAyCisJICogQHBhcmFtIHZhbGlkRnJvbVRpbWUKKwkgKiAgICAgICAgICAgIHRpbWUgaW4gRm9ybWF0IG9mIGhoOm1tIG9ubHkgb2YgaW50ZXJlc3QgaWYgdmFsaWQgaXMgdHlwZSAyCisJICogQHBhcmFtIHZhbGlkVG9EYXRlCisJICogICAgICAgICAgICBEYXRlIGluIEZvcm1hdCBvZiBkZC5tbS55eXl5IG9ubHkgb2YgaW50ZXJlc3QgaWYgdmFsaWQgaXMgdHlwZQorCSAqICAgICAgICAgICAgMgorCSAqIEBwYXJhbSB2YWxpZFRvVGltZQorCSAqICAgICAgICAgICAgdGltZSBpbiBGb3JtYXQgb2YgaGg6bW0gb25seSBvZiBpbnRlcmVzdCBpZiB2YWxpZCBpcyB0eXBlIDIKKwkgKiBAcGFyYW0gbGFuZ3VhZ2VfaWQKKwkgKiAgICAgICAgICAgIHRoZSBsYW5ndWFnZSBpZCBvZiB0aGUgRU1haWwgdGhhdCBpcyBzZW5kIHdpdGggdGhlIGludml0YXRpb24KKwkgKiAgICAgICAgICAgIGlmIHNlbmRNYWlsIGlzIHRydWUKKwkgKiBAcGFyYW0gc2VuZE1haWwKKwkgKiAgICAgICAgICAgIGlmIHNlbmRNYWlsIGlzIHRydWUgdGhlbiB0aGUgUlBDLUNhbGwgd2lsbCBzZW5kIHRoZSBpbnZpdGF0aW9uCisJICogICAgICAgICAgICB0byB0aGUgZW1haWwKKwkgKiBAcmV0dXJuIGEgSEFTSCB2YWx1ZSB0aGF0IGNhbiBiZSBtYWRlIGludG8gYSBVUkwgd2l0aAorCSAqICAgICAgICAgaHR0cDovLyRPUEVOTUVFVElOR1NfSE9TVAorCSAqICAgICAgICAgOiRQT1JUL29wZW5tZWV0aW5ncy8/aW52aXRhdGlvbkhhc2g9IitpbnZpdGF0aW9uc0hhc2g7CisJICogQHRocm93cyBBeGlzRmF1bHQKKwkgKi8KKwlwdWJsaWMgU3RyaW5nIHNlbmRJbnZpdGF0aW9uSGFzaChTdHJpbmcgU0lELCBTdHJpbmcgdXNlcm5hbWUsCisJCQlTdHJpbmcgbWVzc2FnZSwgU3RyaW5nIGJhc2V1cmwsIFN0cmluZyBlbWFpbCwgU3RyaW5nIHN1YmplY3QsCisJCQlMb25nIHJvb21faWQsIFN0cmluZyBjb25mZXJlbmNlZG9tYWluLCBCb29sZWFuIGlzUGFzc3dvcmRQcm90ZWN0ZWQsCisJCQlTdHJpbmcgaW52aXRhdGlvbnBhc3MsIEludGVnZXIgdmFsaWQsIFN0cmluZyB2YWxpZEZyb21EYXRlLAorCQkJU3RyaW5nIHZhbGlkRnJvbVRpbWUsIFN0cmluZyB2YWxpZFRvRGF0ZSwgU3RyaW5nIHZhbGlkVG9UaW1lLAorCQkJTG9uZyBsYW5ndWFnZV9pZCwgQm9vbGVhbiBzZW5kTWFpbCkgdGhyb3dzIEF4aXNGYXVsdCB7CisJCXRyeSB7CisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tXZWJTZXJ2aWNlTGV2ZWwodXNlcl9sZXZlbCkpIHsKKworCQkJCURhdGUgZEZyb20gPSBudWxsOworCQkJCURhdGUgZFRvID0gbnVsbDsKKworCQkJCWlmICh2YWxpZCA9PSAyKSB7CisJCQkJCUludGVnZXIgdmFsaWRGcm9tSG91ciA9IEludGVnZXIudmFsdWVPZigKKwkJCQkJCQl2YWxpZEZyb21UaW1lLnN1YnN0cmluZygwLCAyKSkuaW50VmFsdWUoKTsKKwkJCQkJSW50ZWdlciB2YWxpZEZyb21NaW51dGUgPSBJbnRlZ2VyLnZhbHVlT2YoCisJCQkJCQkJdmFsaWRGcm9tVGltZS5zdWJzdHJpbmcoMywgNSkpLmludFZhbHVlKCk7CisKKwkJCQkJSW50ZWdlciB2YWxpZFRvSG91ciA9IEludGVnZXIudmFsdWVPZigKKwkJCQkJCQl2YWxpZFRvVGltZS5zdWJzdHJpbmcoMCwgMikpLmludFZhbHVlKCk7CisJCQkJCUludGVnZXIgdmFsaWRUb01pbnV0ZSA9IEludGVnZXIudmFsdWVPZigKKwkJCQkJCQl2YWxpZFRvVGltZS5zdWJzdHJpbmcoMywgNSkpLmludFZhbHVlKCk7CisKKwkJCQkJbG9nLmluZm8oInZhbGlkRnJvbUhvdXI6ICIgKyB2YWxpZEZyb21Ib3VyKTsKKwkJCQkJbG9nLmluZm8oInZhbGlkRnJvbU1pbnV0ZTogIiArIHZhbGlkRnJvbU1pbnV0ZSk7CisKKwkJCQkJRGF0ZSBmcm9tRGF0ZSA9IENhbGVuZGFyUGF0dGVybnMucGFyc2VEYXRlKHZhbGlkRnJvbURhdGUpOyAvLyBkZC5NTS55eXl5CisJCQkJCURhdGUgdG9EYXRlID0gQ2FsZW5kYXJQYXR0ZXJucy5wYXJzZURhdGUodmFsaWRUb0RhdGUpOyAvLyBkZC5NTS55eXl5CisKKwkJCQkJQ2FsZW5kYXIgY2FsRnJvbSA9IENhbGVuZGFyLmdldEluc3RhbmNlKCk7CisJCQkJCWNhbEZyb20uc2V0VGltZShmcm9tRGF0ZSk7CisJCQkJCWNhbEZyb20uc2V0KGNhbEZyb20uZ2V0KENhbGVuZGFyLllFQVIpLAorCQkJCQkJCWNhbEZyb20uZ2V0KENhbGVuZGFyLk1PTlRIKSwKKwkJCQkJCQljYWxGcm9tLmdldChDYWxlbmRhci5EQVRFKSwgdmFsaWRGcm9tSG91ciwKKwkJCQkJCQl2YWxpZEZyb21NaW51dGUsIDApOworCisJCQkJCUNhbGVuZGFyIGNhbFRvID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTsKKwkJCQkJY2FsVG8uc2V0VGltZSh0b0RhdGUpOworCQkJCQljYWxUby5zZXQoY2FsVG8uZ2V0KENhbGVuZGFyLllFQVIpLAorCQkJCQkJCWNhbFRvLmdldChDYWxlbmRhci5NT05USCksCisJCQkJCQkJY2FsVG8uZ2V0KENhbGVuZGFyLkRBVEUpLCB2YWxpZFRvSG91ciwKKwkJCQkJCQl2YWxpZFRvTWludXRlLCAwKTsKKworCQkJCQlkRnJvbSA9IGNhbEZyb20uZ2V0VGltZSgpOworCQkJCQlkVG8gPSBjYWxUby5nZXRUaW1lKCk7CisKKwkJCQkJbG9nLmluZm8oInZhbGlkRnJvbURhdGU6ICIKKwkJCQkJCQkrIENhbGVuZGFyUGF0dGVybnMKKwkJCQkJCQkJCS5nZXREYXRlV2l0aFRpbWVCeU1pbGlTZWNvbmRzKGRGcm9tKSk7CisJCQkJCWxvZy5pbmZvKCJ2YWxpZFRvRGF0ZTogIgorCQkJCQkJCSsgQ2FsZW5kYXJQYXR0ZXJucworCQkJCQkJCQkJLmdldERhdGVXaXRoVGltZUJ5TWlsaVNlY29uZHMoZFRvKSk7CisJCQkJfQorCisJCQkJSW52aXRhdGlvbnMgaW52aXRhdGlvbiA9IGludml0YXRpb25NYW5hZ2VyCisJCQkJCQkuYWRkSW52aXRhdGlvbkxpbmsodXNlcl9sZXZlbCwgdXNlcm5hbWUsIG1lc3NhZ2UsCisJCQkJCQkJCWJhc2V1cmwsIGVtYWlsLCBzdWJqZWN0LCByb29tX2lkLCAiIiwKKwkJCQkJCQkJaXNQYXNzd29yZFByb3RlY3RlZCwgaW52aXRhdGlvbnBhc3MsIHZhbGlkLAorCQkJCQkJCQlkRnJvbSwgZFRvLCB1c2Vyc19pZCwgYmFzZXVybCwgbGFuZ3VhZ2VfaWQsCisJCQkJCQkJCXNlbmRNYWlsLCBkRnJvbSwgZFRvLCBudWxsLCB1c2VybmFtZSwgdXNlck1hbmFnZXIuZ2V0VXNlckJ5SWQodXNlcnNfaWQpLmdldE9tVGltZVpvbmUoKSk7CisKKwkJCQlpZiAoaW52aXRhdGlvbiAhPSBudWxsKSB7CisKKwkJCQkJcmV0dXJuIGludml0YXRpb24uZ2V0SGFzaCgpOworCisJCQkJfSBlbHNlIHsKKworCQkJCQlyZXR1cm4gIlN5cyAtIEVycm9yIjsKKworCQkJCX0KKworCQkJfSBlbHNlIHsKKwkJCQlyZXR1cm4gIk5lZWQgQWRtaW4gUHJpdmlsZWdlcyB0byBwZXJmb20gdGhlIEFjdGlvbiI7CisJCQl9CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbc2VuZEludml0YXRpb25IYXNoXSAiLCBlcnIpOworCQkJdGhyb3cgbmV3IEF4aXNGYXVsdChlcnIuZ2V0TWVzc2FnZSgpKTsKKwkJfQorCX0KKworCS8qKgorCSAqIENyZWF0ZSBhIEludml0YXRpb24gaGFzaCBhbmQgb3B0aW9uYWxseSBzZW5kIGl0IGJ5IG1haWwgdGhlIEZyb20gdG8gRGF0ZQorCSAqIGlzIGFzIFN0cmluZyBhcyBzb21lIFNPQVAgbGlicmFyaWVzIGRvIG5vdCBhY2NlcHQgRGF0ZSBPYmplY3RzIGluIFNPQVAKKwkgKiBDYWxscyBEYXRlIGlzIHBhcnNlZCBhcyBkZC5tbS55eXl5LCB0aW1lIGFzIGhoOm1tIChkb24ndCBmb3JnZXQgdGhlCisJICogbGVhZGluZyB6ZXJvJ3MpCisJICogCisJICogQHBhcmFtIFNJRAorCSAqICAgICAgICAgICAgVGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgTG9nZ2VkaW4gYQorCSAqICAgICAgICAgICAgdmFsaWQgU2Vzc2lvbiBUb2tlbgorCSAqIEBwYXJhbSB1c2VybmFtZQorCSAqICAgICAgICAgICAgdGhlIFVzZXJuYW1lIG9mIHRoZSBVc2VyIHRoYXQgaGUgd2lsbCBnZXQKKwkgKiBAcGFyYW0gbWVzc2FnZQorCSAqICAgICAgICAgICAgdGhlIE1lc3NhZ2UgaW4gdGhlIEVtYWlsIEJvZHkgc2VuZCB3aXRoIHRoZSBpbnZpdGF0aW9uIGlmCisJICogICAgICAgICAgICBzZW5kTWFpbCBpcyB0cnVlCisJICogQHBhcmFtIGJhc2V1cmwKKwkgKiAgICAgICAgICAgIHRoZSBiYXNlVVJMIGZvciB0aGUgSW5maXZhdGlvbnMgbGluayBpbiB0aGUgTWFpbCBCb2R5IGlmCisJICogICAgICAgICAgICBzZW5kTWFpbCBpcyB0cnVlCisJICogQHBhcmFtIGVtYWlsCisJICogICAgICAgICAgICB0aGUgRW1haWwgdG8gc2VuZCB0aGUgaW52aXRhdGlvbiB0byBpZiBzZW5kTWFpbCBpcyB0cnVlCisJICogQHBhcmFtIHN1YmplY3QKKwkgKiAgICAgICAgICAgIHRoZSBzdWJqZWN0IG9mIHRoZSBFbWFpbCBzZW5kIHdpdGggdGhlIGludml0YXRpb24gaWYgc2VuZE1haWwKKwkgKiAgICAgICAgICAgIGlzIHRydWUKKwkgKiBAcGFyYW0gcm9vbV9pZAorCSAqICAgICAgICAgICAgdGhlIGNvbmZlcmVuY2Ugcm9vbSBpZCBvZiB0aGUgaW52aXRhdGlvbgorCSAqIEBwYXJhbSBjb25mZXJlbmNlZG9tYWluCisJICogICAgICAgICAgICB0aGUgZG9tYWluIG9mIHRoZSByb29tIChrZWVwIGVtcHR5KQorCSAqIEBwYXJhbSBpc1Bhc3N3b3JkUHJvdGVjdGVkCisJICogICAgICAgICAgICBpZiB0aGUgaW52aXRhdGlvbiBpcyBwYXNzd29yZCBwcm90ZWN0ZWQKKwkgKiBAcGFyYW0gaW52aXRhdGlvbnBhc3MKKwkgKiAgICAgICAgICAgIHRoZSBwYXNzd29yZCBmb3IgYWNjZXNzaW5nIHRoZSBjb25mZXJlbmNlIHJvb20gdmlhIHRoZQorCSAqICAgICAgICAgICAgaW52aXRhdGlvbiBoYXNoCisJICogQHBhcmFtIHZhbGlkCisJICogICAgICAgICAgICB0aGUgdHlwZSBvZiB2YWxpZGF0aW9uIGZvciB0aGUgaGFzaCAxOiBlbmRsZXNzLCAyOiBmcm9tLXRvCisJICogICAgICAgICAgICBwZXJpb2QsIDM6IG9uZS10aW1lCisJICogQHBhcmFtIGZyb21EYXRlCisJICogICAgICAgICAgICBEYXRlIGFzIERhdGUgT2JqZWN0IG9ubHkgb2YgaW50ZXJlc3QgaWYgdmFsaWQgaXMgdHlwZSAyCisJICogQHBhcmFtIHRvRGF0ZQorCSAqICAgICAgICAgICAgRGF0ZSBhcyBEYXRlIE9iamVjdCBvbmx5IG9mIGludGVyZXN0IGlmIHZhbGlkIGlzIHR5cGUgMgorCSAqIEBwYXJhbSBsYW5ndWFnZV9pZAorCSAqICAgICAgICAgICAgdGhlIGxhbmd1YWdlIGlkIG9mIHRoZSBFTWFpbCB0aGF0IGlzIHNlbmQgd2l0aCB0aGUgaW52aXRhdGlvbgorCSAqICAgICAgICAgICAgaWYgc2VuZE1haWwgaXMgdHJ1ZQorCSAqIEBwYXJhbSBzZW5kTWFpbAorCSAqICAgICAgICAgICAgaWYgc2VuZE1haWwgaXMgdHJ1ZSB0aGVuIHRoZSBSUEMtQ2FsbCB3aWxsIHNlbmQgdGhlIGludml0YXRpb24KKwkgKiAgICAgICAgICAgIHRvIHRoZSBlbWFpbAorCSAqIEByZXR1cm4gYSBIQVNIIHZhbHVlIHRoYXQgY2FuIGJlIG1hZGUgaW50byBhIFVSTCB3aXRoCisJICogICAgICAgICBodHRwOi8vJE9QRU5NRUVUSU5HU19IT1NUCisJICogICAgICAgICA6JFBPUlQvb3Blbm1lZXRpbmdzLz9pbnZpdGF0aW9uSGFzaD0iK2ludml0YXRpb25zSGFzaDsKKwkgKiBAdGhyb3dzIEF4aXNGYXVsdAorCSAqLworCXB1YmxpYyBTdHJpbmcgc2VuZEludml0YXRpb25IYXNoV2l0aERhdGVPYmplY3QoU3RyaW5nIFNJRCwgU3RyaW5nIHVzZXJuYW1lLAorCQkJU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBiYXNldXJsLCBTdHJpbmcgZW1haWwsIFN0cmluZyBzdWJqZWN0LAorCQkJTG9uZyByb29tX2lkLCBTdHJpbmcgY29uZmVyZW5jZWRvbWFpbiwgQm9vbGVhbiBpc1Bhc3N3b3JkUHJvdGVjdGVkLAorCQkJU3RyaW5nIGludml0YXRpb25wYXNzLCBJbnRlZ2VyIHZhbGlkLCBEYXRlIGZyb21EYXRlLCBEYXRlIHRvRGF0ZSwKKwkJCUxvbmcgbGFuZ3VhZ2VfaWQsIEJvb2xlYW4gc2VuZE1haWwpIHRocm93cyBBeGlzRmF1bHQgeworCQl0cnkgeworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrV2ViU2VydmljZUxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlDYWxlbmRhciBjYWxGcm9tID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTsKKwkJCQljYWxGcm9tLnNldFRpbWUoZnJvbURhdGUpOworCisJCQkJQ2FsZW5kYXIgY2FsVG8gPSBDYWxlbmRhci5nZXRJbnN0YW5jZSgpOworCQkJCWNhbFRvLnNldFRpbWUodG9EYXRlKTsKKworCQkJCURhdGUgZEZyb20gPSBjYWxGcm9tLmdldFRpbWUoKTsKKwkJCQlEYXRlIGRUbyA9IGNhbFRvLmdldFRpbWUoKTsKKworCQkJCWxvZy5pbmZvKCJ2YWxpZEZyb21EYXRlOiAiCisJCQkJCQkrIENhbGVuZGFyUGF0dGVybnMuZ2V0RGF0ZVdpdGhUaW1lQnlNaWxpU2Vjb25kcyhkRnJvbSkpOworCQkJCWxvZy5pbmZvKCJ2YWxpZFRvRGF0ZTogIgorCQkJCQkJKyBDYWxlbmRhclBhdHRlcm5zLmdldERhdGVXaXRoVGltZUJ5TWlsaVNlY29uZHMoZFRvKSk7CisKKwkJCQlJbnZpdGF0aW9ucyBpbnZpdGF0aW9uID0gaW52aXRhdGlvbk1hbmFnZXIKKwkJCQkJCS5hZGRJbnZpdGF0aW9uTGluayh1c2VyX2xldmVsLCB1c2VybmFtZSwgbWVzc2FnZSwKKwkJCQkJCQkJYmFzZXVybCwgZW1haWwsIHN1YmplY3QsIHJvb21faWQsICIiLAorCQkJCQkJCQlpc1Bhc3N3b3JkUHJvdGVjdGVkLCBpbnZpdGF0aW9ucGFzcywgdmFsaWQsCisJCQkJCQkJCWRGcm9tLCBkVG8sIHVzZXJzX2lkLCBiYXNldXJsLCBsYW5ndWFnZV9pZCwKKwkJCQkJCQkJc2VuZE1haWwsIGRGcm9tLCBkVG8sIG51bGwsIHVzZXJuYW1lLCB1c2VyTWFuYWdlci5nZXRVc2VyQnlJZCh1c2Vyc19pZCkuZ2V0T21UaW1lWm9uZSgpKTsKKworCQkJCWlmIChpbnZpdGF0aW9uICE9IG51bGwpIHsKKworCQkJCQlyZXR1cm4gaW52aXRhdGlvbi5nZXRIYXNoKCk7CisKKwkJCQl9IGVsc2UgeworCisJCQkJCXJldHVybiAiU3lzIC0gRXJyb3IiOworCisJCQkJfQorCisJCQl9IGVsc2UgeworCQkJCXJldHVybiAiTmVlZCBBZG1pbiBQcml2aWxlZ2VzIHRvIHBlcmZvbSB0aGUgQWN0aW9uIjsKKwkJCX0KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltzZW5kSW52aXRhdGlvbkhhc2hdICIsIGVycik7CisJCQl0aHJvdyBuZXcgQXhpc0ZhdWx0KGVyci5nZXRNZXNzYWdlKCkpOworCQl9CisJfQorCisJLyoqCisJICogUmV0dXJuIGEgUm9vbVJldHVybiBPYmplY3Qgd2l0aCBpbmZvcm1hdGlvbiBvZiB0aGUgY3VycmVudCB1c2VycyBvZiBhCisJICogY29uZmVyZW5jZSByb29tCisJICogCisJICogQHBhcmFtIFNJRAorCSAqICAgICAgICAgICAgVGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgTG9nZ2VkaW4KKwkgKiBAcGFyYW0gc3RhcnQKKwkgKiAgICAgICAgICAgIFRoZSBpZCB5b3Ugd2FudCB0byBzdGFydAorCSAqIEBwYXJhbSBtYXgKKwkgKiAgICAgICAgICAgIFRoZSBtYXhpbXVtIHlvdSB3YW50IHRvIGdldAorCSAqIEBwYXJhbSBvcmRlcmJ5CisJICogICAgICAgICAgICBUaGUgY29sdW1uIGl0IHdpbGwgYmUgb3JkZXJlZAorCSAqIEBwYXJhbSBhc2MKKwkgKiAgICAgICAgICAgIEFzYyBvciBEZXNjIHNvcnQgb3JkZXJpbmcKKwkgKiAgICAgICAgICAgIAorCSAqIEByZXR1cm4gLSBSb29tUmV0dXJuIE9iamVjdHMgd2l0aCBpbmZvcm1hdGlvbiBvZiB0aGUgY3VycmVudCB1c2VycworCSAqIEB0aHJvd3MgQXhpc0ZhdWx0CisJICovCisJcHVibGljIExpc3Q8Um9vbVJldHVybj4gZ2V0Um9vbXNXaXRoQ3VycmVudFVzZXJzQnlMaXN0KFN0cmluZyBTSUQsCisJCQlpbnQgc3RhcnQsIGludCBtYXgsIFN0cmluZyBvcmRlcmJ5LCBib29sZWFuIGFzYykgdGhyb3dzIEF4aXNGYXVsdCB7CisJCXRyeSB7CisJCQlMaXN0PFJvb20+IHJvb21zID0gY29uZmVyZW5jZVNlcnZpY2UKKwkJCQkJLmdldFJvb21zV2l0aEN1cnJlbnRVc2Vyc0J5TGlzdChTSUQsIHN0YXJ0LCBtYXgsIG9yZGVyYnksCisJCQkJCQkJYXNjKTsKKworCQkJTGlzdDxSb29tUmV0dXJuPiByZXR1cm5PYmpMaXN0ID0gbmV3IExpbmtlZExpc3Q8Um9vbVJldHVybj4oKTsKKworCQkJZm9yIChSb29tIHJvb20gOiByb29tcykgeworCisJCQkJUm9vbVJldHVybiByb29tUmV0dXJuID0gbmV3IFJvb21SZXR1cm4oKTsKKworCQkJCXJvb21SZXR1cm4uc2V0Um9vbV9pZChyb29tLmdldFJvb21zX2lkKCkpOworCQkJCXJvb21SZXR1cm4uc2V0TmFtZShyb29tLmdldE5hbWUoKSk7CisKKwkJCQlyb29tUmV0dXJuLnNldENyZWF0b3IoIlNPQVAiKTsKKwkJCQlyb29tUmV0dXJuLnNldENyZWF0ZWQocm9vbS5nZXRTdGFydHRpbWUoKSk7CisKKwkJCQlSb29tVXNlcltdIHJVc2VyID0gbmV3IFJvb21Vc2VyW3Jvb20uZ2V0Q3VycmVudHVzZXJzKCkuc2l6ZSgpXTsKKworCQkJCWludCBpID0gMDsKKwkJCQlmb3IgKENsaWVudCByY2wgOiByb29tLmdldEN1cnJlbnR1c2VycygpKSB7CisKKwkJCQkJUm9vbVVzZXIgcnUgPSBuZXcgUm9vbVVzZXIoKTsKKwkJCQkJcnUuc2V0Rmlyc3RuYW1lKHJjbC5nZXRGaXJzdG5hbWUoKSk7CisJCQkJCXJ1LnNldExhc3RuYW1lKHJjbC5nZXRMYXN0bmFtZSgpKTsKKworCQkJCQlyVXNlcltpXSA9IHJ1OworCisJCQkJCWkrKzsKKwkJCQl9CisKKwkJCQlyb29tUmV0dXJuLnNldFJvb21Vc2VyKHJVc2VyKTsKKworCQkJCXJldHVybk9iakxpc3QuYWRkKHJvb21SZXR1cm4pOworCisJCQl9CisKKwkJCXJldHVybiByZXR1cm5PYmpMaXN0OworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoInNldFVzZXJPYmplY3RXaXRoRXh0ZXJuYWxVc2VyIiwgZXJyKTsKKwkJCXRocm93IG5ldyBBeGlzRmF1bHQoZXJyLmdldE1lc3NhZ2UoKSk7CisJCX0KKwl9CisKKwkvKioKKwkgKiBSZXR1cm4gYSBSb29tUmV0dXJuIE9iamVjdCB3aXRoIGluZm9ybWF0aW9uIG9mIHRoZSBjdXJyZW50IHVzZXJzIG9mIGEKKwkgKiBjb25mZXJlbmNlIHJvb20gd2l0aCBvcHRpb24gdG8gc2VhcmNoIGZvciBzcGVjaWFsIGV4dGVybmFsIHJvb20gdHlwZXMKKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogICAgICAgICAgICBUaGUgU0lEIG9mIHRoZSBVc2VyLiBUaGlzIFNJRCBtdXN0IGJlIG1hcmtlZCBhcyBMb2dnZWRpbgorCSAqIEBwYXJhbSBzdGFydAorCSAqICAgICAgICAgICAgVGhlIGlkIHlvdSB3YW50IHRvIHN0YXJ0CisJICogQHBhcmFtIG1heAorCSAqICAgICAgICAgICAgVGhlIG1heGltdW0geW91IHdhbnQgdG8gZ2V0CisJICogQHBhcmFtIG9yZGVyYnkKKwkgKiAgICAgICAgICAgIFRoZSBjb2x1bW4gaXQgd2lsbCBiZSBvcmRlcmVkCisJICogQHBhcmFtIGFzYworCSAqICAgICAgICAgICAgQXNjIG9yIERlc2Mgc29ydCBvcmRlcmluZworCSAqIEBwYXJhbSBleHRlcm5hbFJvb21UeXBlCisJICogICAgICAgICAgICB0aGUgZXh0ZXJuYWwgcm9vbSB0eXBlCisJICogICAgICAgICAgICAKKwkgKiBAcmV0dXJuIC0gbGlzdCBvZiByb29tIHJldHVybiBvYmplY3RzCisJICogQHRocm93cyBBeGlzRmF1bHQKKwkgKi8KKwlwdWJsaWMgTGlzdDxSb29tUmV0dXJuPiBnZXRSb29tc1dpdGhDdXJyZW50VXNlcnNCeUxpc3RBbmRUeXBlKFN0cmluZyBTSUQsCisJCQlpbnQgc3RhcnQsIGludCBtYXgsIFN0cmluZyBvcmRlcmJ5LCBib29sZWFuIGFzYywKKwkJCVN0cmluZyBleHRlcm5hbFJvb21UeXBlKSB0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJdHJ5IHsKKwkJCUxpc3Q8Um9vbT4gcm9vbXMgPSBjb25mZXJlbmNlU2VydmljZQorCQkJCQkuZ2V0Um9vbXNXaXRoQ3VycmVudFVzZXJzQnlMaXN0QW5kVHlwZShTSUQsIHN0YXJ0LCBtYXgsCisJCQkJCQkJb3JkZXJieSwgYXNjLCBleHRlcm5hbFJvb21UeXBlKTsKKworCQkJTGlzdDxSb29tUmV0dXJuPiByZXR1cm5PYmpMaXN0ID0gbmV3IExpbmtlZExpc3Q8Um9vbVJldHVybj4oKTsKKworCQkJZm9yIChSb29tIHJvb20gOiByb29tcykgeworCisJCQkJUm9vbVJldHVybiByb29tUmV0dXJuID0gbmV3IFJvb21SZXR1cm4oKTsKKworCQkJCXJvb21SZXR1cm4uc2V0Um9vbV9pZChyb29tLmdldFJvb21zX2lkKCkpOworCQkJCXJvb21SZXR1cm4uc2V0TmFtZShyb29tLmdldE5hbWUoKSk7CisKKwkJCQlyb29tUmV0dXJuLnNldENyZWF0b3IoIlNPQVAiKTsKKwkJCQlyb29tUmV0dXJuLnNldENyZWF0ZWQocm9vbS5nZXRTdGFydHRpbWUoKSk7CisKKwkJCQlSb29tVXNlcltdIHJVc2VyID0gbmV3IFJvb21Vc2VyW3Jvb20uZ2V0Q3VycmVudHVzZXJzKCkuc2l6ZSgpXTsKKworCQkJCWludCBpID0gMDsKKwkJCQlmb3IgKENsaWVudCByY2wgOiByb29tLmdldEN1cnJlbnR1c2VycygpKSB7CisKKwkJCQkJUm9vbVVzZXIgcnUgPSBuZXcgUm9vbVVzZXIoKTsKKwkJCQkJcnUuc2V0Rmlyc3RuYW1lKHJjbC5nZXRGaXJzdG5hbWUoKSk7CisJCQkJCXJ1LnNldExhc3RuYW1lKHJjbC5nZXRMYXN0bmFtZSgpKTsKKworCQkJCQlyVXNlcltpXSA9IHJ1OworCisJCQkJCWkrKzsKKwkJCQl9CisKKwkJCQlyb29tUmV0dXJuLnNldFJvb21Vc2VyKHJVc2VyKTsKKworCQkJCXJldHVybk9iakxpc3QuYWRkKHJvb21SZXR1cm4pOworCisJCQl9CisKKwkJCXJldHVybiByZXR1cm5PYmpMaXN0OworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoInNldFVzZXJPYmplY3RXaXRoRXh0ZXJuYWxVc2VyIiwgZXJyKTsKKwkJCXRocm93IG5ldyBBeGlzRmF1bHQoZXJyLmdldE1lc3NhZ2UoKSk7CisJCX0KKwl9CisKKwkvKioKKwkgKiBBZGRzIGEgY29uZmVyZW5jZSByb29tIHRoYXQgaXMgb25seSBhdmFpbGFibGUgZm9yIGEgcGVyaW9kIG9mIHRpbWUKKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogICAgICAgICAgICBUaGUgU0lEIG9mIHRoZSBVc2VyLiBUaGlzIFNJRCBtdXN0IGJlIG1hcmtlZCBhcyBMb2dnZWRpbgorCSAqIEBwYXJhbSBuYW1lCisJICogICAgICAgICAgICBuZXcgbmFtZSBvZiB0aGUgcm9vbQorCSAqIEBwYXJhbSByb29tdHlwZXNfaWQKKwkgKiAgICAgICAgICAgIG5ldyB0eXBlIG9mIHJvb20gKDEgPSBDb25mZXJlbmNlLCAyID0gQXVkaWVuY2UsIDMgPQorCSAqICAgICAgICAgICAgUmVzdHJpY3RlZCwgNCA9IEludGVydmlldykKKwkgKiBAcGFyYW0gY29tbWVudAorCSAqICAgICAgICAgICAgbmV3IGNvbW1lbnQKKwkgKiBAcGFyYW0gbnVtYmVyT2ZQYXJ0aXppcGFudHMKKwkgKiAgICAgICAgICAgIG5ldyBudW1iZXJPZlBhcnRpY2lwYW50cworCSAqIEBwYXJhbSBpc3B1YmxpYworCSAqICAgICAgICAgICAgaXMgcHVibGljCisJICogQHBhcmFtIGFwcG9pbnRtZW50CisJICogICAgICAgICAgICBpZiB0aGUgcm9vbSBpcyBhbiBhcHBvaW50bWVudAorCSAqIEBwYXJhbSBpc0RlbW9Sb29tCisJICogICAgICAgICAgICBpcyBpdCBhIERlbW8gUm9vbSB3aXRoIGxpbWl0ZWQgdGltZT8gKHVzZSBmYWxzZSBpZiBub3Qgc3VyZQorCSAqICAgICAgICAgICAgd2hhdCB0aGF0IG1lYW5zKQorCSAqIEBwYXJhbSBkZW1vVGltZQorCSAqICAgICAgICAgICAgdGltZSBpbiBzZWNvbmRzIGFmdGVyIHRoZSB1c2VyIHdpbGwgYmUgbG9nZ2VkIG91dCAob25seQorCSAqICAgICAgICAgICAgZW5hYmxlZCBpZiBpc0RlbW9Sb29tIGlzIHRydWUpCisJICogQHBhcmFtIGlzTW9kZXJhdGVkUm9vbQorCSAqICAgICAgICAgICAgVXNlcnMgaGF2ZSB0byB3YWl0IHVudGlsIGEgTW9kZXJhdG9yIGFycml2ZXMuIFVzZSB0aGUKKwkgKiAgICAgICAgICAgIGJlY29tZU1vZGVyYXRvciBwYXJhbWV0ZXIgaW4gc2V0VXNlck9iamVjdEFuZEdlbmVyYXRlUm9vbUhhc2gKKwkgKiAgICAgICAgICAgIHRvIHNldCBhIHVzZXIgYXMgZGVmYXVsdCBNb2RlcmF0b3IKKwkgKiBAcGFyYW0gZXh0ZXJuYWxSb29tVHlwZQorCSAqICAgICAgICAgICAgdGhlIGV4dGVybmFsIHJvb20gdHlwZSAoY2FuIGJlIHVzZWQgdG8gaWRlbnRpZnkgZGlmZmVyZW50CisJICogICAgICAgICAgICBleHRlcm5hbCBzeXN0ZW1zIHVzaW5nIHNhbWUgT3Blbk1lZXRpbmdzIGluc3RhbmNlKQorCSAqIEBwYXJhbSB2YWxpZEZyb21EYXRlCisJICogICAgICAgICAgICB2YWxpZCBmcm9tIGFzIERhdGUgZm9ybWF0OiBkZC5NTS55eXl5CisJICogQHBhcmFtIHZhbGlkRnJvbVRpbWUKKwkgKiAgICAgICAgICAgIHZhbGlkIHRvIGFzIHRpbWUgZm9ybWF0OiBtbTpoaAorCSAqIEBwYXJhbSB2YWxpZFRvRGF0ZQorCSAqICAgICAgICAgICAgdmFsaWQgdG8gRGF0ZSBmb3JtYXQ6IGRkLk1NLnl5eXkKKwkgKiBAcGFyYW0gdmFsaWRUb1RpbWUKKwkgKiAgICAgICAgICAgIHZhbGlkIHRvIHRpbWUgZm9ybWF0OiBtbTpoaAorCSAqIEBwYXJhbSBpc1Bhc3N3b3JkUHJvdGVjdGVkCisJICogICAgICAgICAgICBJZiB0aGUgbGlua3Mgc2VuZCB2aWEgRU1haWwgdG8gaW52aXRlZCBwZW9wbGUgaXMgcGFzc3dvcmQKKwkgKiAgICAgICAgICAgIHByb3RlY3RlZAorCSAqIEBwYXJhbSBwYXNzd29yZAorCSAqICAgICAgICAgICAgUGFzc3dvcmQgZm9yIEludml0YXRpb25zIHNlbmQgdmlhIE1haWwKKwkgKiBAcGFyYW0gcmVtaW5kZXJUeXBlSWQKKwkgKiAgICAgICAgICAgIDE9bm9uZSwgMj1zaW1wbGUgbWFpbCwgMz1JQ0FMCisJICogQHBhcmFtIHJlZGlyZWN0VVJMCisJICogICAgICAgICAgICBVUkwgVXNlcnMgd2lsbCBiZSBsZWFkIHRvIGlmIHRoZSBDb25mZXJlbmNlIFRpbWUgaXMgZWxhcHNlZAorCSAqICAgICAgICAgICAgCisJICogQHJldHVybiAtIGlkIG9mIHRoZSByb29tIGluIGNhc2Ugb2Ygc3VjY2VzcywgZXJyb3IgY29kZSBvdGhlcndpc2UKKwkgKiBAdGhyb3dzIEF4aXNGYXVsdAorCSAqLworCXB1YmxpYyBMb25nIGFkZFJvb21XaXRoTW9kZXJhdGlvbkFuZEV4dGVybmFsVHlwZUFuZFN0YXJ0RW5kKFN0cmluZyBTSUQsCisJCQlTdHJpbmcgbmFtZSwgTG9uZyByb29tdHlwZXNfaWQsIFN0cmluZyBjb21tZW50LAorCQkJTG9uZyBudW1iZXJPZlBhcnRpemlwYW50cywgQm9vbGVhbiBpc3B1YmxpYywgQm9vbGVhbiBhcHBvaW50bWVudCwKKwkJCUJvb2xlYW4gaXNEZW1vUm9vbSwgSW50ZWdlciBkZW1vVGltZSwgQm9vbGVhbiBpc01vZGVyYXRlZFJvb20sCisJCQlTdHJpbmcgZXh0ZXJuYWxSb29tVHlwZSwgU3RyaW5nIHZhbGlkRnJvbURhdGUsCisJCQlTdHJpbmcgdmFsaWRGcm9tVGltZSwgU3RyaW5nIHZhbGlkVG9EYXRlLCBTdHJpbmcgdmFsaWRUb1RpbWUsCisJCQlCb29sZWFuIGlzUGFzc3dvcmRQcm90ZWN0ZWQsIFN0cmluZyBwYXNzd29yZCwgTG9uZyByZW1pbmRlclR5cGVJZCwKKwkJCVN0cmluZyByZWRpcmVjdFVSTCkgdGhyb3dzIEF4aXNGYXVsdCB7CisJCXRyeSB7CisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tXZWJTZXJ2aWNlTGV2ZWwodXNlcl9sZXZlbCkpIHsKKworCQkJCURhdGUgZEZyb20gPSBudWxsOworCQkJCURhdGUgZFRvID0gbnVsbDsKKworCQkJCUludGVnZXIgdmFsaWRGcm9tSG91ciA9IEludGVnZXIudmFsdWVPZigKKwkJCQkJCXZhbGlkRnJvbVRpbWUuc3Vic3RyaW5nKDAsIDIpKS5pbnRWYWx1ZSgpOworCQkJCUludGVnZXIgdmFsaWRGcm9tTWludXRlID0gSW50ZWdlci52YWx1ZU9mKAorCQkJCQkJdmFsaWRGcm9tVGltZS5zdWJzdHJpbmcoMywgNSkpLmludFZhbHVlKCk7CisKKwkJCQlJbnRlZ2VyIHZhbGlkVG9Ib3VyID0gSW50ZWdlci52YWx1ZU9mKAorCQkJCQkJdmFsaWRUb1RpbWUuc3Vic3RyaW5nKDAsIDIpKS5pbnRWYWx1ZSgpOworCQkJCUludGVnZXIgdmFsaWRUb01pbnV0ZSA9IEludGVnZXIudmFsdWVPZigKKwkJCQkJCXZhbGlkVG9UaW1lLnN1YnN0cmluZygzLCA1KSkuaW50VmFsdWUoKTsKKworCQkJCWxvZy5pbmZvKCJ2YWxpZEZyb21Ib3VyOiAiICsgdmFsaWRGcm9tSG91cik7CisJCQkJbG9nLmluZm8oInZhbGlkRnJvbU1pbnV0ZTogIiArIHZhbGlkRnJvbU1pbnV0ZSk7CisKKwkJCQlEYXRlIGZyb21EYXRlID0gQ2FsZW5kYXJQYXR0ZXJucworCQkJCQkJLnBhcnNlRGF0ZUJ5U2VwYXJhdG9yKHZhbGlkRnJvbURhdGUpOyAvLyBkZC5NTS55eXl5CisJCQkJRGF0ZSB0b0RhdGUgPSBDYWxlbmRhclBhdHRlcm5zCisJCQkJCQkucGFyc2VEYXRlQnlTZXBhcmF0b3IodmFsaWRUb0RhdGUpOyAvLyBkZC5NTS55eXl5CisKKwkJCQlDYWxlbmRhciBjYWxGcm9tID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTsKKwkJCQljYWxGcm9tLnNldFRpbWUoZnJvbURhdGUpOworCQkJCWNhbEZyb20uc2V0KGNhbEZyb20uZ2V0KENhbGVuZGFyLllFQVIpLAorCQkJCQkJY2FsRnJvbS5nZXQoQ2FsZW5kYXIuTU9OVEgpLAorCQkJCQkJY2FsRnJvbS5nZXQoQ2FsZW5kYXIuREFURSksIHZhbGlkRnJvbUhvdXIsCisJCQkJCQl2YWxpZEZyb21NaW51dGUsIDApOworCisJCQkJQ2FsZW5kYXIgY2FsVG8gPSBDYWxlbmRhci5nZXRJbnN0YW5jZSgpOworCQkJCWNhbFRvLnNldFRpbWUodG9EYXRlKTsKKwkJCQljYWxUby5zZXQoY2FsVG8uZ2V0KENhbGVuZGFyLllFQVIpLCBjYWxUby5nZXQoQ2FsZW5kYXIuTU9OVEgpLAorCQkJCQkJY2FsVG8uZ2V0KENhbGVuZGFyLkRBVEUpLCB2YWxpZFRvSG91ciwgdmFsaWRUb01pbnV0ZSwgMCk7CisKKwkJCQlkRnJvbSA9IGNhbEZyb20uZ2V0VGltZSgpOworCQkJCWRUbyA9IGNhbFRvLmdldFRpbWUoKTsKKworCQkJCWxvZy5pbmZvKCJ2YWxpZEZyb21EYXRlOiAiCisJCQkJCQkrIENhbGVuZGFyUGF0dGVybnMuZ2V0RGF0ZVdpdGhUaW1lQnlNaWxpU2Vjb25kcyhkRnJvbSkpOworCQkJCWxvZy5pbmZvKCJ2YWxpZFRvRGF0ZTogIgorCQkJCQkJKyBDYWxlbmRhclBhdHRlcm5zLmdldERhdGVXaXRoVGltZUJ5TWlsaVNlY29uZHMoZFRvKSk7CisKKwkJCQlMb25nIHJvb21zX2lkID0gcm9vbU1hbmFnZXIuYWRkRXh0ZXJuYWxSb29tKG5hbWUsCisJCQkJCQlyb29tdHlwZXNfaWQsIGNvbW1lbnQsIG51bWJlck9mUGFydGl6aXBhbnRzLCBpc3B1YmxpYywKKwkJCQkJCW51bGwsIGFwcG9pbnRtZW50LCBpc0RlbW9Sb29tLCBkZW1vVGltZSwKKwkJCQkJCWlzTW9kZXJhdGVkUm9vbSwgbnVsbCwgbnVsbCwgZXh0ZXJuYWxSb29tVHlwZSwgZmFsc2UsIC8vIGFsbG93VXNlclF1ZXN0aW9ucworCQkJCQkJZmFsc2UsIC8vIGlzQXVkaW9Pbmx5CisJCQkJCQl0cnVlLCAgLy8gYWxsb3dGb250U3R5bGVzCisJCQkJCQlmYWxzZSwgLy8gaXNDbG9zZWQKKwkJCQkJCXJlZGlyZWN0VVJMLCBmYWxzZSwgdHJ1ZSwgZmFsc2UpOworCisJCQkJaWYgKHJvb21zX2lkIDw9IDApIHsKKwkJCQkJcmV0dXJuIHJvb21zX2lkOworCQkJCX0KKworCQkJCVVzZXIgdXMgPSB1c2VyTWFuYWdlci5nZXRVc2VyQnlJZCh1c2Vyc19pZCk7CisKKwkJCQlhcHBvaW50bWVudERhby5hZGRBcHBvaW50bWVudCgiYXBwb2ludG1lbnROYW1lIiwgdXNlcnNfaWQsCisJCQkJCQkiYXBwb2ludG1lbnRMb2NhdGlvbiIsICJhcHBvaW50bWVudERlc2NyaXB0aW9uIiwgZEZyb20sCisJCQkJCQlkVG8sIC8vIGFwcG9pbnRtZW50c3RhcnQsIGFwcG9pbnRtZW50ZW5kLAorCQkJCQkJZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIC8vIGlzRGFpbHksIGlzV2Vla2x5LAorCQkJCQkJCQkJCQkJCS8vIGlzTW9udGhseSwgaXNZZWFybHksCisJCQkJCQkxTCwgLy8gY2F0ZWdvcnlJZAorCQkJCQkJcmVtaW5kZXJUeXBlSWQsIC8vIDE9bm9uZSwgMj1zaW1wbGUgbWFpbCwgMz1JQ0FMCisJCQkJCQlyb29tRGFvLmdldChyb29tc19pZCksIDFMLCAvLyBsYW5ndWFnZV9pZAorCQkJCQkJaXNQYXNzd29yZFByb3RlY3RlZCwgLy8gaXNQYXNzd29yZFByb3RlY3RlZAorCQkJCQkJcGFzc3dvcmQsIC8vIHBhc3N3b3JkCisJCQkJCQlmYWxzZSwgdXMuZ2V0T21UaW1lWm9uZSgpLmdldEpuYW1lKCkpOworCisJCQkJcmV0dXJuIHJvb21zX2lkOworCisJCQl9IGVsc2UgeworCQkJCXJldHVybiAtMkw7CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2FkZFJvb21XaXRoTW9kZXJhdGlvbl0gIiwgZXJyKTsKKworCQkJdGhyb3cgbmV3IEF4aXNGYXVsdChlcnIuZ2V0TWVzc2FnZSgpKTsKKwkJfQorCQkvLyByZXR1cm4gbmV3IExvbmcoLTEpOworCQkvLyByZXR1cm4gbnVtYmVyT2ZQYXJ0aXppcGFudHM7CisJfQorCisJLyoqCisJICogQWRkIGEgbWVldGluZyBtZW1iZXIgdG8gYSBjZXJ0YWluIHJvb20uIFRoaXMgaXMgdGhlIHNhbWUgYXMgYWRkaW5nIGFuCisJICogZXh0ZXJuYWwgdXNlciB0byBhIGV2ZW50IGluIHRoZSBjYWxlbmRhci4KKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogICAgICAgICAgICBUaGUgU0lEIG9mIHRoZSBVc2VyLiBUaGlzIFNJRCBtdXN0IGJlIG1hcmtlZCBhcyBMb2dnZWRpbgorCSAqIEBwYXJhbSByb29tX2lkCisJICogICAgICAgICAgICBUaGUgUm9vbSBJZCB0aGUgbWVldGluZyBtZW1iZXIgaXMgZ29pbmcgdG8gYmUgYWRkZWQKKwkgKiBAcGFyYW0gZmlyc3RuYW1lCisJICogICAgICAgICAgICBUaGUgZmlyc3QgbmFtZSBvZiB0aGUgbWVldGluZyBtZW1iZXIKKwkgKiBAcGFyYW0gbGFzdG5hbWUKKwkgKiAgICAgICAgICAgIFRoZSBsYXN0IG5hbWUgb2YgdGhlIG1lZXRpbmcgbWVtYmVyCisJICogQHBhcmFtIGVtYWlsCisJICogICAgICAgICAgICBUaGUgZW1haWwgb2YgdGhlIE1lZXRpbmcgbWVtYmVyCisJICogQHBhcmFtIGJhc2VVcmwKKwkgKiAgICAgICAgICAgIFRoZSBiYXNlVXJsLCB0aGlzIGlzIGltcG9ydGFudCB0byBzZW5kIHRoZSBjb3JyZWN0IGxpbmsgaW4gdGhlCisJICogICAgICAgICAgICBpbnZpdGF0aW9uIHRvIHRoZSBtZWV0aW5nIG1lbWJlcgorCSAqIEBwYXJhbSBsYW5ndWFnZV9pZAorCSAqICAgICAgICAgICAgVGhlIElEIG9mIHRoZSBsYW5ndWFnZSwgZm9yIHRoZSBlbWFpbCB0aGF0IGlzIHNlbmQgdG8gdGhlCisJICogICAgICAgICAgICBtZWV0aW5nIG1lbWJlcgorCSAqICAgICAgICAgICAgCisJICogQHJldHVybiAtIGlkIG9mIHRoZSBtZW1iZXIgaW4gY2FzZSBvZiBzdWNjZXNzLCBlcnJvciBjb2RlIG90aGVyd2lzZQorCSAqIEB0aHJvd3MgQXhpc0ZhdWx0CisJICovCisJcHVibGljIExvbmcgYWRkTWVldGluZ01lbWJlclJlbWluZFRvUm9vbShTdHJpbmcgU0lELCBMb25nIHJvb21faWQsCisJCQlTdHJpbmcgZmlyc3RuYW1lLCBTdHJpbmcgbGFzdG5hbWUsIFN0cmluZyBlbWFpbCwgU3RyaW5nIGJhc2VVcmwsCisJCQlMb25nIGxhbmd1YWdlX2lkKSB0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJdHJ5IHsKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1dlYlNlcnZpY2VMZXZlbCh1c2VyX2xldmVsKSkgeworCisJCQkJQXBwb2ludG1lbnQgYXBwb2ludG1lbnQgPSBhcHBvaW50bWVudERhbworCQkJCQkJLmdldEFwcG9pbnRtZW50QnlSb29tKHJvb21faWQpOworCisJCQkJaWYgKGFwcG9pbnRtZW50ID09IG51bGwpIHsKKwkJCQkJcmV0dXJuIC0xTDsKKwkJCQl9CisJCQkJLy8gTm90IEluIFJlbW90ZSBMaXN0IGF2YWlsYWJsZSAtIGV4dGVybiB1c2VyCisJCQkJTG9uZyBtZW1iZXJJZCA9IG1lZXRpbmdNZW1iZXJMb2dpYy5hZGRNZWV0aW5nTWVtYmVyKGZpcnN0bmFtZSwKKwkJCQkJCWxhc3RuYW1lLCAiMCIsICIwIiwgYXBwb2ludG1lbnQuZ2V0QXBwb2ludG1lbnRJZCgpLAorCQkJCQkJbnVsbCwgZW1haWwsIG51bGwsIGJhc2VVcmwsIG51bGwsIG5ldyBCb29sZWFuKGZhbHNlKSwKKwkJCQkJCWxhbmd1YWdlX2lkLCBmYWxzZSwgIiIsIG51bGwsIG51bGwsICIiKTsKKworCQkJCXJldHVybiBtZW1iZXJJZDsKKworCQkJfSBlbHNlIHsKKwkJCQlyZXR1cm4gLTJMOworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIlthZGRSb29tV2l0aE1vZGVyYXRpb25dICIsIGVycik7CisKKwkJCXRocm93IG5ldyBBeGlzRmF1bHQoZXJyLmdldE1lc3NhZ2UoKSk7CisJCX0KKworCX0KKworCS8qKgorCSAqIEFkZCBhIG1lZXRpbmcgbWVtYmVyIHRvIGEgY2VydGFpbiByb29tLiBUaGlzIGlzIHRoZSBzYW1lIGFzIGFkZGluZyBhbgorCSAqIGV4dGVybmFsIHVzZXIgdG8gYSBldmVudCBpbiB0aGUgY2FsZW5kYXIuIHdpdGggYSBjZXJ0YWluIHRpbWUgem9uZQorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiAgICAgICAgICAgIFRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIExvZ2dlZGluCisJICogQHBhcmFtIHJvb21faWQKKwkgKiAgICAgICAgICAgIFRoZSBSb29tIElkIHRoZSBtZWV0aW5nIG1lbWJlciBpcyBnb2luZyB0byBiZSBhZGRlZAorCSAqIEBwYXJhbSBmaXJzdG5hbWUKKwkgKiAgICAgICAgICAgIFRoZSBmaXJzdCBuYW1lIG9mIHRoZSBtZWV0aW5nIG1lbWJlcgorCSAqIEBwYXJhbSBsYXN0bmFtZQorCSAqICAgICAgICAgICAgVGhlIGxhc3QgbmFtZSBvZiB0aGUgbWVldGluZyBtZW1iZXIKKwkgKiBAcGFyYW0gZW1haWwKKwkgKiAgICAgICAgICAgIFRoZSBlbWFpbCBvZiB0aGUgTWVldGluZyBtZW1iZXIKKwkgKiBAcGFyYW0gYmFzZVVybAorCSAqICAgICAgICAgICAgVGhlIGJhc2VVcmwsIHRoaXMgaXMgaW1wb3J0YW50IHRvIHNlbmQgdGhlIGNvcnJlY3QgbGluayBpbiB0aGUKKwkgKiAgICAgICAgICAgIGludml0YXRpb24gdG8gdGhlIG1lZXRpbmcgbWVtYmVyCisJICogQHBhcmFtIGxhbmd1YWdlX2lkCisJICogICAgICAgICAgICBUaGUgSUQgb2YgdGhlIGxhbmd1YWdlLCBmb3IgdGhlIGVtYWlsIHRoYXQgaXMgc2VuZCB0byB0aGUKKwkgKiAgICAgICAgICAgIG1lZXRpbmcgbWVtYmVyCisJICogQHBhcmFtIGpOYW1lVGltZVpvbmUKKwkgKiAgICAgICAgICAgIG5hbWUgb2YgdGhlIHRpbWV6b25lCisJICogQHBhcmFtIGludml0b3JOYW1lCisJICogICAgICAgICAgICBuYW1lIG9mIGludml0YXRpb24gY3JlYXRvcnMKKwkgKiAgICAgICAgICAgIAorCSAqIEByZXR1cm4gLSBpZCBvZiB0aGUgbWVtYmVyIGluIGNhc2Ugb2Ygc3VjY2VzcywgZXJyb3IgY29kZSBvdGhlcndpc2UKKwkgKiBAdGhyb3dzIEF4aXNGYXVsdAorCSAqLworCXB1YmxpYyBMb25nIGFkZEV4dGVybmFsTWVldGluZ01lbWJlclJlbWluZFRvUm9vbShTdHJpbmcgU0lELCBMb25nIHJvb21faWQsCisJCQlTdHJpbmcgZmlyc3RuYW1lLCBTdHJpbmcgbGFzdG5hbWUsIFN0cmluZyBlbWFpbCwgU3RyaW5nIGJhc2VVcmwsCisJCQlMb25nIGxhbmd1YWdlX2lkLCBTdHJpbmcgak5hbWVUaW1lWm9uZSwgU3RyaW5nIGludml0b3JOYW1lKQorCQkJdGhyb3dzIEF4aXNGYXVsdCB7CisJCXRyeSB7CisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tXZWJTZXJ2aWNlTGV2ZWwodXNlcl9sZXZlbCkpIHsKKworCQkJCUFwcG9pbnRtZW50IGFwcG9pbnRtZW50ID0gYXBwb2ludG1lbnREYW8KKwkJCQkJCS5nZXRBcHBvaW50bWVudEJ5Um9vbShyb29tX2lkKTsKKworCQkJCWlmIChhcHBvaW50bWVudCA9PSBudWxsKSB7CisJCQkJCXJldHVybiAtMUw7CisJCQkJfQorCisJCQkJLy8gTm90IEluIFJlbW90ZSBMaXN0IGF2YWlsYWJsZSAtIGV4dGVybiB1c2VyCisJCQkJTG9uZyBtZW1iZXJJZCA9IG1lZXRpbmdNZW1iZXJMb2dpYy5hZGRNZWV0aW5nTWVtYmVyKGZpcnN0bmFtZSwKKwkJCQkJCWxhc3RuYW1lLCAiMCIsICIwIiwgYXBwb2ludG1lbnQuZ2V0QXBwb2ludG1lbnRJZCgpLAorCQkJCQkJbnVsbCwgZW1haWwsICIiLCBiYXNlVXJsLCBudWxsLCBuZXcgQm9vbGVhbihmYWxzZSksCisJCQkJCQlsYW5ndWFnZV9pZCwgZmFsc2UsICIiLCBudWxsLCBudWxsLCBpbnZpdG9yTmFtZSk7CisKKwkJCQlyZXR1cm4gbWVtYmVySWQ7CisKKwkJCX0gZWxzZSB7CisJCQkJcmV0dXJuIC0yTDsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbYWRkRXh0ZXJuYWxNZWV0aW5nTWVtYmVyUmVtaW5kVG9Sb29tXSAiLCBlcnIpOworCisJCQl0aHJvdyBuZXcgQXhpc0ZhdWx0KGVyci5nZXRNZXNzYWdlKCkpOworCQl9CisKKwl9CisKKwkvKioKKwkgKiBNZXRob2QgdG8gcmVtb3RlbHkgY2xvc2Ugb3Igb3BlbiByb29tcy4gSWYgYSByb29tIGlzIGNsb3NlZCBhbGwgdXNlcnMKKwkgKiBpbnNpZGUgdGhlIHJvb20gYW5kIGFsbCB1c2VycyB0aGF0IHRyeSB0byBlbnRlciBpdCB3aWxsIGJlIHJlZGlyZWN0ZWQgdG8KKwkgKiB0aGUgcmVkaXJlY3RVUkwgdGhhdCBpcyBkZWZpbmVkIGluIHRoZSBSb29tLU9iamVjdC4KKwkgKiAKKwkgKiBSZXR1cm5zIHBvc2l0aXZlIHZhbHVlIGlmIGF1dGhlbnRpY2F0aW9uIHdhcyBzdWNjZXNzZnVsLgorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiAgICAgICAgICAgIFRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIExvZ2dlZGluCisJICogQHBhcmFtIHJvb21faWQKKwkgKiAgICAgICAgICAgIHRoZSByb29tIGlkCisJICogQHBhcmFtIHN0YXR1cworCSAqICAgICAgICAgICAgZmFsc2UgPSBjbG9zZSwgdHJ1ZSA9IG9wZW4KKwkgKiAgICAgICAgICAgIAorCSAqIEByZXR1cm4gLSAxIGluIGNhc2Ugb2Ygc3VjY2VzcywgLTIgb3RoZXJ3aXNlCisJICogQHRocm93cyBBeGlzRmF1bHQKKwkgKi8KKwlwdWJsaWMgaW50IGNsb3NlUm9vbShTdHJpbmcgU0lELCBMb25nIHJvb21faWQsIEJvb2xlYW4gc3RhdHVzKQorCQkJdGhyb3dzIEF4aXNGYXVsdCB7CisJCXRyeSB7CisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKworCQkJbG9nLmRlYnVnKCJjbG9zZVJvb20gMSAiICsgcm9vbV9pZCk7CisKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrV2ViU2VydmljZUxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlsb2cuZGVidWcoImNsb3NlUm9vbSAyICIgKyBzdGF0dXMpOworCisJCQkJcm9vbU1hbmFnZXIuY2xvc2VSb29tKHJvb21faWQsIHN0YXR1cyk7CisKKwkJCQlpZiAoc3RhdHVzKSB7CisJCQkJCU1hcDxTdHJpbmcsIFN0cmluZz4gbWVzc2FnZSA9IG5ldyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPigpOworCQkJCQltZXNzYWdlLnB1dCgibWVzc2FnZSIsICJyb29tQ2xvc2VkIik7CisJCQkJCXNjb3BlQXBwbGljYXRpb25BZGFwdGVyLnNlbmRNZXNzYWdlQnlSb29tQW5kRG9tYWluKHJvb21faWQsCisJCQkJCQkJbWVzc2FnZSk7CisJCQkJfQorCQkJCXJldHVybiAxOworCisJCQl9IGVsc2UgeworCQkJCXJldHVybiAtMjsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbY2xvc2VSb29tXSAiLCBlcnIpOworCisJCQl0aHJvdyBuZXcgQXhpc0ZhdWx0KGVyci5nZXRNZXNzYWdlKCkpOworCQl9CisKKwl9CisKKwkvKioKKwkgKiBNZXRob2QgdG8gdXBkYXRlIGFyYml0cmFyeSByb29tIHBhcmFtZXRlci4KKwkgKiAKKwkgKiBAcGFyYW0gU0lEIFRoZSBTSUQgb2YgdGhlIFVzZXIuIFRoaXMgU0lEIG11c3QgYmUgbWFya2VkIGFzIExvZ2dlZGluCisJICogQHBhcmFtIHJvb21faWQgdGhlIHJvb20gaWQKKwkgKiBAcGFyYW0gcGFyYW1OYW1lCisJICogQHBhcmFtIHBhcmFtVmFsdWUKKwkgKiBAcmV0dXJuIDEgaW4gY2FzZSBvZiBzdWNjZXNzLCAtMiBpZiBwZXJtaXNzaW9ucyBhcmUgaW5zdWZmaWNpZW50CisJICogQHRocm93cyBBeGlzRmF1bHQgaWYgYW55IGVycm9yIG9jY3VycmVkCisJICovCisJcHVibGljIGludCBtb2RpZnlSb29tUGFyYW1ldGVyKFN0cmluZyBTSUQsIExvbmcgcm9vbV9pZCwgU3RyaW5nIHBhcmFtTmFtZSwgU3RyaW5nIHBhcmFtVmFsdWUpCisJCQl0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJdHJ5IHsKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tXZWJTZXJ2aWNlTGV2ZWwodXNlcl9sZXZlbCkpIHsKKwkJCQlsb2cuZGVidWcoImNsb3NlUm9vbSAxICIgKyByb29tX2lkKTsKKwkJCQlSb29tIHIgPSByb29tRGFvLmdldChyb29tX2lkKTsKKwkJCQlQcm9wZXJ0eVV0aWxzLnNldFNpbXBsZVByb3BlcnR5KHIsIHBhcmFtTmFtZSwgcGFyYW1WYWx1ZSk7CisJCQkJcm9vbURhby51cGRhdGUociwgdXNlcnNfaWQpOworCQkJfSBlbHNlIHsKKwkJCQlyZXR1cm4gLTI7CisJCQl9CisJCQlyZXR1cm4gMTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbbW9kaWZ5Um9vbVBhcmFtZXRlcl0gIiwgZXJyKTsKKworCQkJdGhyb3cgbmV3IEF4aXNGYXVsdChlcnIuZ2V0TWVzc2FnZSgpKTsKKwkJfQorCX0KKwkKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9heGlzL3NlcnZpY2VzL1Jvb21XZWJTZXJ2aWNlRmFjYWRlLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvYXhpcy9zZXJ2aWNlcy9Sb29tV2ViU2VydmljZUZhY2FkZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhiYzNhNmQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvYXhpcy9zZXJ2aWNlcy9Sb29tV2ViU2VydmljZUZhY2FkZS5qYXZhCkBAIC0wLDAgKzEsNjU3IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmF4aXMuc2VydmljZXM7CisKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworaW1wb3J0IG9yZy5hcGFjaGUuYXhpczIuQXhpc0ZhdWx0OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmVhbnMuYmFzaWMuU2VhcmNoUmVzdWx0OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmZsdnJlY29yZC5GbHZSZWNvcmRpbmc7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbS5Sb29tOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnJvb20uUm9vbVR5cGU7CisKK3B1YmxpYyBjbGFzcyBSb29tV2ViU2VydmljZUZhY2FkZSBleHRlbmRzIEJhc2VXZWJTZXJ2aWNlIHsKKworCS8vIFRPRE86IE5vdCBpbXBsZW1lbnRlZCB5ZXQKKwkvLyBwdWJsaWMgTGlzdDxSb29tc19PcmdhbmlzYXRpb24+IGdldFJvb21zQnlPcmdhbmlzYXRpb25BbmRUeXBlKFN0cmluZyBTSUQsCisJLy8gbG9uZyBvcmdhbmlzYXRpb25faWQsIGxvbmcgcm9vbXR5cGVzX2lkKSB7CisJLy8gcmV0dXJuIGNvbmZlcmVuY2VTZXJ2aWNlLmdldFJvb21zQnlPcmdhbmlzYXRpb25BbmRUeXBlKFNJRCwKKwkvLyBvcmdhbmlzYXRpb25faWQsIHJvb210eXBlc19pZCk7CisJLy8gfQorCisJcHVibGljIFJvb21bXSBnZXRSb29tc1B1YmxpYyhTdHJpbmcgU0lELCBMb25nIHJvb210eXBlc19pZCkKKwkJCXRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihSb29tV2ViU2VydmljZS5jbGFzcykuZ2V0Um9vbXNQdWJsaWMoU0lELCByb29tdHlwZXNfaWQpOworCX0KKworCS8qKgorCSAqIERlbGV0ZXMgYSBmbHYgcmVjb3JkaW5nCisJICogCisJICogQHBhcmFtIFNJRAorCSAqICAgICAgICAgICAgVGhlIFNJRCBvZiB0aGUgVXNlci4gVGhpcyBTSUQgbXVzdCBiZSBtYXJrZWQgYXMgTG9nZ2VkaW4KKwkgKiBAcGFyYW0gZmx2UmVjb3JkaW5nSWQKKwkgKiAgICAgICAgICAgIHRoZSBpZCBvZiB0aGUgcmVjb3JkaW5nCisJICogQHJldHVybgorCSAqIEB0aHJvd3MgQXhpc0ZhdWx0CisJICovCisJcHVibGljIGJvb2xlYW4gZGVsZXRlRmx2UmVjb3JkaW5nKFN0cmluZyBTSUQsIExvbmcgZmx2UmVjb3JkaW5nSWQpCisJCQl0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJcmV0dXJuIGdldEJlYW4oUm9vbVdlYlNlcnZpY2UuY2xhc3MpLmRlbGV0ZUZsdlJlY29yZGluZyhTSUQsCisJCQkJZmx2UmVjb3JkaW5nSWQpOworCX0KKworCXB1YmxpYyBGTFZSZWNvcmRpbmdSZXR1cm5bXSBnZXRGbHZSZWNvcmRpbmdCeUV4dGVybmFsVXNlcklkKFN0cmluZyBTSUQsCisJCQlTdHJpbmcgZXh0ZXJuYWxVc2VySWQpIHRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihSb29tV2ViU2VydmljZS5jbGFzcykuZ2V0Rmx2UmVjb3JkaW5nQnlFeHRlcm5hbFVzZXJJZChTSUQsCisJCQkJZXh0ZXJuYWxVc2VySWQpOworCX0KKworCXB1YmxpYyBGTFZSZWNvcmRpbmdSZXR1cm5bXSBnZXRGbHZSZWNvcmRpbmdCeUV4dGVybmFsUm9vbVR5cGVBbmRDcmVhdG9yKAorCQkJU3RyaW5nIFNJRCwgU3RyaW5nIGV4dGVybmFsUm9vbVR5cGUsIExvbmcgaW5zZXJ0ZWRCeSkKKwkJCXRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihSb29tV2ViU2VydmljZS5jbGFzcykKKwkJCQkuZ2V0Rmx2UmVjb3JkaW5nQnlFeHRlcm5hbFJvb21UeXBlQW5kQ3JlYXRvcihTSUQsCisJCQkJCQlleHRlcm5hbFJvb21UeXBlLCBpbnNlcnRlZEJ5KTsKKwl9CisKKwlwdWJsaWMgTGlzdDxGbHZSZWNvcmRpbmc+IGdldEZsdlJlY29yZGluZ0J5RXh0ZXJuYWxSb29tVHlwZUJ5TGlzdCgKKwkJCVN0cmluZyBTSUQsIFN0cmluZyBleHRlcm5hbFJvb21UeXBlKSB0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJcmV0dXJuIGdldEJlYW4oUm9vbVdlYlNlcnZpY2UuY2xhc3MpCisJCQkJLmdldEZsdlJlY29yZGluZ0J5RXh0ZXJuYWxSb29tVHlwZUJ5TGlzdChTSUQsIGV4dGVybmFsUm9vbVR5cGUpOworCX0KKworCXB1YmxpYyBGbHZSZWNvcmRpbmdbXSBnZXRGbHZSZWNvcmRpbmdCeUV4dGVybmFsUm9vbVR5cGUoU3RyaW5nIFNJRCwKKwkJCVN0cmluZyBleHRlcm5hbFJvb21UeXBlKSB0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJcmV0dXJuIGdldEJlYW4oUm9vbVdlYlNlcnZpY2UuY2xhc3MpLmdldEZsdlJlY29yZGluZ0J5RXh0ZXJuYWxSb29tVHlwZSgKKwkJCQlTSUQsIGV4dGVybmFsUm9vbVR5cGUpOworCX0KKworCXB1YmxpYyBGbHZSZWNvcmRpbmdbXSBnZXRGbHZSZWNvcmRpbmdCeVJvb21JZChTdHJpbmcgU0lELCBMb25nIHJvb21JZCkKKwkJCXRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihSb29tV2ViU2VydmljZS5jbGFzcykuZ2V0Rmx2UmVjb3JkaW5nQnlSb29tSWQoU0lELCByb29tSWQpOworCX0KKworCXB1YmxpYyBSb29tVHlwZVtdIGdldFJvb21UeXBlcyhTdHJpbmcgU0lEKSB0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJcmV0dXJuIGdldEJlYW4oUm9vbVdlYlNlcnZpY2UuY2xhc3MpLmdldFJvb21UeXBlcyhTSUQpOworCX0KKworCXB1YmxpYyBSb29tQ291bnRCZWFuW10gZ2V0Um9vbUNvdW50ZXJzKFN0cmluZyBTSUQsIEludGVnZXIgcm9vbUlkMSwKKwkJCUludGVnZXIgcm9vbUlkMiwgSW50ZWdlciByb29tSWQzLCBJbnRlZ2VyIHJvb21JZDQsIEludGVnZXIgcm9vbUlkNSwKKwkJCUludGVnZXIgcm9vbUlkNiwgSW50ZWdlciByb29tSWQ3LCBJbnRlZ2VyIHJvb21JZDgsIEludGVnZXIgcm9vbUlkOSwKKwkJCUludGVnZXIgcm9vbUlkMTApIHRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihSb29tV2ViU2VydmljZS5jbGFzcykuZ2V0Um9vbUNvdW50ZXJzKFNJRCwgcm9vbUlkMSwKKwkJCQlyb29tSWQyLCByb29tSWQzLCByb29tSWQ0LCByb29tSWQ1LCByb29tSWQ2LCByb29tSWQ3LCByb29tSWQ4LAorCQkJCXJvb21JZDksIHJvb21JZDEwKTsKKwl9CisKKwlwdWJsaWMgUm9vbSBnZXRSb29tQnlJZChTdHJpbmcgU0lELCBsb25nIHJvb21zX2lkKSB0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJcmV0dXJuIGdldEJlYW4oUm9vbVdlYlNlcnZpY2UuY2xhc3MpLmdldFJvb21CeUlkKFNJRCwgcm9vbXNfaWQpOworCX0KKworCS8qKgorCSAqIEBkZXByZWNhdGVkIHRoaXMgZnVuY3Rpb24gaXMgaW50ZW5kIHRvIGJlIGRlbGV0ZWQKKwkgKiBAcGFyYW0gU0lECisJICogQHBhcmFtIHJvb21zX2lkCisJICogQHJldHVybgorCSAqLworCUBEZXByZWNhdGVkCisJcHVibGljIFJvb20gZ2V0Um9vbVdpdGhDdXJyZW50VXNlcnNCeUlkKFN0cmluZyBTSUQsIGxvbmcgcm9vbXNfaWQpCisJCQl0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJcmV0dXJuIGdldEJlYW4oUm9vbVdlYlNlcnZpY2UuY2xhc3MpLmdldFJvb21XaXRoQ3VycmVudFVzZXJzQnlJZChTSUQsCisJCQkJcm9vbXNfaWQpOworCX0KKworCXB1YmxpYyBSb29tUmV0dXJuIGdldFJvb21XaXRoQ2xpZW50T2JqZWN0c0J5SWQoU3RyaW5nIFNJRCwgbG9uZyByb29tc19pZCkKKwkJCXRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihSb29tV2ViU2VydmljZS5jbGFzcykuZ2V0Um9vbVdpdGhDbGllbnRPYmplY3RzQnlJZChTSUQsCisJCQkJcm9vbXNfaWQpOworCX0KKworCXB1YmxpYyBTZWFyY2hSZXN1bHQ8Um9vbT4gZ2V0Um9vbXMoU3RyaW5nIFNJRCwgaW50IHN0YXJ0LCBpbnQgbWF4LAorCQkJU3RyaW5nIG9yZGVyYnksIGJvb2xlYW4gYXNjKSB0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJcmV0dXJuIGdldEJlYW4oUm9vbVdlYlNlcnZpY2UuY2xhc3MpLmdldFJvb21zKFNJRCwgc3RhcnQsIG1heCwgb3JkZXJieSwKKwkJCQlhc2MpOworCX0KKworCXB1YmxpYyBTZWFyY2hSZXN1bHQ8Um9vbT4gZ2V0Um9vbXNXaXRoQ3VycmVudFVzZXJzKFN0cmluZyBTSUQsIGludCBzdGFydCwKKwkJCWludCBtYXgsIFN0cmluZyBvcmRlcmJ5LCBib29sZWFuIGFzYykgdGhyb3dzIEF4aXNGYXVsdCB7CisJCXJldHVybiBnZXRCZWFuKFJvb21XZWJTZXJ2aWNlLmNsYXNzKS5nZXRSb29tc1dpdGhDdXJyZW50VXNlcnMoU0lELCBzdGFydCwKKwkJCQltYXgsIG9yZGVyYnksIGFzYyk7CisJfQorCisJLyoqCisJICogVE9ETzogRml4IE9yZ2FuaXphdGlvbiBJc3N1ZQorCSAqIAorCSAqIEBkZXByZWNhdGVkIHVzZSBhZGRSb29tV2l0aE1vZGVyYXRpb24gaW5zdGVhZAorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiBAcGFyYW0gbmFtZQorCSAqIEBwYXJhbSByb29tdHlwZXNfaWQKKwkgKiBAcGFyYW0gY29tbWVudAorCSAqIEBwYXJhbSBudW1iZXJPZlBhcnRpemlwYW50cworCSAqIEBwYXJhbSBpc3B1YmxpYworCSAqIEBwYXJhbSB2aWRlb1BvZFdpZHRoCisJICogQHBhcmFtIHZpZGVvUG9kSGVpZ2h0CisJICogQHBhcmFtIHZpZGVvUG9kWFBvc2l0aW9uCisJICogQHBhcmFtIHZpZGVvUG9kWVBvc2l0aW9uCisJICogQHBhcmFtIG1vZGVyYXRpb25QYW5lbFhQb3NpdGlvbgorCSAqIEBwYXJhbSBzaG93V2hpdGVCb2FyZAorCSAqIEBwYXJhbSB3aGl0ZUJvYXJkUGFuZWxYUG9zaXRpb24KKwkgKiBAcGFyYW0gd2hpdGVCb2FyZFBhbmVsWVBvc2l0aW9uCisJICogQHBhcmFtIHdoaXRlQm9hcmRQYW5lbEhlaWdodAorCSAqIEBwYXJhbSB3aGl0ZUJvYXJkUGFuZWxXaWR0aAorCSAqIEBwYXJhbSBzaG93RmlsZXNQYW5lbAorCSAqIEBwYXJhbSBmaWxlc1BhbmVsWFBvc2l0aW9uCisJICogQHBhcmFtIGZpbGVzUGFuZWxZUG9zaXRpb24KKwkgKiBAcGFyYW0gZmlsZXNQYW5lbEhlaWdodAorCSAqIEBwYXJhbSBmaWxlc1BhbmVsV2lkdGgKKwkgKiBAcmV0dXJuCisJICovCisJQERlcHJlY2F0ZWQKKwlwdWJsaWMgTG9uZyBhZGRSb29tKFN0cmluZyBTSUQsIFN0cmluZyBuYW1lLCBMb25nIHJvb210eXBlc19pZCwKKwkJCVN0cmluZyBjb21tZW50LCBMb25nIG51bWJlck9mUGFydGl6aXBhbnRzLCBCb29sZWFuIGlzcHVibGljLAorCQkJSW50ZWdlciB2aWRlb1BvZFdpZHRoLCBJbnRlZ2VyIHZpZGVvUG9kSGVpZ2h0LAorCQkJSW50ZWdlciB2aWRlb1BvZFhQb3NpdGlvbiwgSW50ZWdlciB2aWRlb1BvZFlQb3NpdGlvbiwKKwkJCUludGVnZXIgbW9kZXJhdGlvblBhbmVsWFBvc2l0aW9uLCBCb29sZWFuIHNob3dXaGl0ZUJvYXJkLAorCQkJSW50ZWdlciB3aGl0ZUJvYXJkUGFuZWxYUG9zaXRpb24sIEludGVnZXIgd2hpdGVCb2FyZFBhbmVsWVBvc2l0aW9uLAorCQkJSW50ZWdlciB3aGl0ZUJvYXJkUGFuZWxIZWlnaHQsIEludGVnZXIgd2hpdGVCb2FyZFBhbmVsV2lkdGgsCisJCQlCb29sZWFuIHNob3dGaWxlc1BhbmVsLCBJbnRlZ2VyIGZpbGVzUGFuZWxYUG9zaXRpb24sCisJCQlJbnRlZ2VyIGZpbGVzUGFuZWxZUG9zaXRpb24sIEludGVnZXIgZmlsZXNQYW5lbEhlaWdodCwKKwkJCUludGVnZXIgZmlsZXNQYW5lbFdpZHRoKSB0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJcmV0dXJuIGdldEJlYW4oUm9vbVdlYlNlcnZpY2UuY2xhc3MpLmFkZFJvb20oU0lELCBuYW1lLCByb29tdHlwZXNfaWQsCisJCQkJY29tbWVudCwgbnVtYmVyT2ZQYXJ0aXppcGFudHMsIGlzcHVibGljLCB2aWRlb1BvZFdpZHRoLAorCQkJCXZpZGVvUG9kSGVpZ2h0LCB2aWRlb1BvZFhQb3NpdGlvbiwgdmlkZW9Qb2RZUG9zaXRpb24sCisJCQkJbW9kZXJhdGlvblBhbmVsWFBvc2l0aW9uLCBzaG93V2hpdGVCb2FyZCwKKwkJCQl3aGl0ZUJvYXJkUGFuZWxYUG9zaXRpb24sIHdoaXRlQm9hcmRQYW5lbFlQb3NpdGlvbiwKKwkJCQl3aGl0ZUJvYXJkUGFuZWxIZWlnaHQsIHdoaXRlQm9hcmRQYW5lbFdpZHRoLCBzaG93RmlsZXNQYW5lbCwKKwkJCQlmaWxlc1BhbmVsWFBvc2l0aW9uLCBmaWxlc1BhbmVsWVBvc2l0aW9uLCBmaWxlc1BhbmVsSGVpZ2h0LAorCQkJCWZpbGVzUGFuZWxXaWR0aCk7CisJfQorCisJcHVibGljIExvbmcgYWRkUm9vbVdpdGhNb2RlcmF0aW9uKFN0cmluZyBTSUQsIFN0cmluZyBuYW1lLAorCQkJTG9uZyByb29tdHlwZXNfaWQsIFN0cmluZyBjb21tZW50LCBMb25nIG51bWJlck9mUGFydGl6aXBhbnRzLAorCQkJQm9vbGVhbiBpc3B1YmxpYywgQm9vbGVhbiBhcHBvaW50bWVudCwgQm9vbGVhbiBpc0RlbW9Sb29tLAorCQkJSW50ZWdlciBkZW1vVGltZSwgQm9vbGVhbiBpc01vZGVyYXRlZFJvb20pIHRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihSb29tV2ViU2VydmljZS5jbGFzcykuYWRkUm9vbVdpdGhNb2RlcmF0aW9uKFNJRCwgbmFtZSwKKwkJCQlyb29tdHlwZXNfaWQsIGNvbW1lbnQsIG51bWJlck9mUGFydGl6aXBhbnRzLCBpc3B1YmxpYywKKwkJCQlhcHBvaW50bWVudCwgaXNEZW1vUm9vbSwgZGVtb1RpbWUsIGlzTW9kZXJhdGVkUm9vbSk7CisJfQorCisJLyoqCisJICogdGhpcyBTT0FQIE1ldGhvZCBoYXMgYW4gYWRkaXRpb25hbCBwYXJhbSB0byBlbmFibGUgb3IgZGlzYWJsZSB0aGUgYnV0dG9ucworCSAqIHRvIGFwcGx5IGZvciBtb2RlcmF0aW9uIHRoaXMgZG9lcyBvbmx5IHdvcmsgaW4gY29tYmluYXRpb24gd2l0aCB0aGUKKwkgKiByb29tLXR5cGUgcmVzdHJpY3RlZAorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiBAcGFyYW0gbmFtZQorCSAqIEBwYXJhbSByb29tdHlwZXNfaWQKKwkgKiBAcGFyYW0gY29tbWVudAorCSAqIEBwYXJhbSBudW1iZXJPZlBhcnRpemlwYW50cworCSAqIEBwYXJhbSBpc3B1YmxpYworCSAqIEBwYXJhbSBhcHBvaW50bWVudAorCSAqIEBwYXJhbSBpc0RlbW9Sb29tCisJICogQHBhcmFtIGRlbW9UaW1lCisJICogQHBhcmFtIGlzTW9kZXJhdGVkUm9vbQorCSAqIEBwYXJhbSBhbGxvd1VzZXJRdWVzdGlvbnMKKwkgKiBAcmV0dXJuCisJICovCisJcHVibGljIExvbmcgYWRkUm9vbVdpdGhNb2RlcmF0aW9uQW5kUXVlc3Rpb25zKFN0cmluZyBTSUQsIFN0cmluZyBuYW1lLAorCQkJTG9uZyByb29tdHlwZXNfaWQsIFN0cmluZyBjb21tZW50LCBMb25nIG51bWJlck9mUGFydGl6aXBhbnRzLAorCQkJQm9vbGVhbiBpc3B1YmxpYywgQm9vbGVhbiBhcHBvaW50bWVudCwgQm9vbGVhbiBpc0RlbW9Sb29tLAorCQkJSW50ZWdlciBkZW1vVGltZSwgQm9vbGVhbiBpc01vZGVyYXRlZFJvb20sCisJCQlCb29sZWFuIGFsbG93VXNlclF1ZXN0aW9ucykgdGhyb3dzIEF4aXNGYXVsdCB7CisJCXJldHVybiBnZXRCZWFuKFJvb21XZWJTZXJ2aWNlLmNsYXNzKS5hZGRSb29tV2l0aE1vZGVyYXRpb25BbmRRdWVzdGlvbnMoCisJCQkJU0lELCBuYW1lLCByb29tdHlwZXNfaWQsIGNvbW1lbnQsIG51bWJlck9mUGFydGl6aXBhbnRzLAorCQkJCWlzcHVibGljLCBhcHBvaW50bWVudCwgaXNEZW1vUm9vbSwgZGVtb1RpbWUsIGlzTW9kZXJhdGVkUm9vbSwKKwkJCQlhbGxvd1VzZXJRdWVzdGlvbnMpOworCX0KKworCXB1YmxpYyBMb25nIGFkZFJvb21XaXRoTW9kZXJhdGlvblF1ZXN0aW9uc0FuZEF1ZGlvVHlwZShTdHJpbmcgU0lELAorCQkJU3RyaW5nIG5hbWUsIExvbmcgcm9vbXR5cGVzX2lkLCBTdHJpbmcgY29tbWVudCwKKwkJCUxvbmcgbnVtYmVyT2ZQYXJ0aXppcGFudHMsIEJvb2xlYW4gaXNwdWJsaWMsIEJvb2xlYW4gYXBwb2ludG1lbnQsCisJCQlCb29sZWFuIGlzRGVtb1Jvb20sIEludGVnZXIgZGVtb1RpbWUsIEJvb2xlYW4gaXNNb2RlcmF0ZWRSb29tLAorCQkJQm9vbGVhbiBhbGxvd1VzZXJRdWVzdGlvbnMsIEJvb2xlYW4gaXNBdWRpb09ubHkpIHRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihSb29tV2ViU2VydmljZS5jbGFzcykKKwkJCQkuYWRkUm9vbVdpdGhNb2RlcmF0aW9uUXVlc3Rpb25zQW5kQXVkaW9UeXBlKFNJRCwgbmFtZSwKKwkJCQkJCXJvb210eXBlc19pZCwgY29tbWVudCwgbnVtYmVyT2ZQYXJ0aXppcGFudHMsIGlzcHVibGljLAorCQkJCQkJYXBwb2ludG1lbnQsIGlzRGVtb1Jvb20sIGRlbW9UaW1lLCBpc01vZGVyYXRlZFJvb20sCisJCQkJCQlhbGxvd1VzZXJRdWVzdGlvbnMsIGlzQXVkaW9Pbmx5KTsKKwl9CisKKwkvKioKKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogQHBhcmFtIG5hbWUKKwkgKiBAcGFyYW0gcm9vbXR5cGVzX2lkCisJICogQHBhcmFtIGNvbW1lbnQKKwkgKiBAcGFyYW0gbnVtYmVyT2ZQYXJ0aXppcGFudHMKKwkgKiBAcGFyYW0gaXNwdWJsaWMKKwkgKiBAcGFyYW0gYXBwb2ludG1lbnQKKwkgKiBAcGFyYW0gaXNEZW1vUm9vbQorCSAqIEBwYXJhbSBkZW1vVGltZQorCSAqIEBwYXJhbSBpc01vZGVyYXRlZFJvb20KKwkgKiBAcGFyYW0gZXh0ZXJuYWxSb29tSWQKKwkgKiBAcGFyYW0gZXh0ZXJuYWxVc2VyVHlwZQorCSAqIEByZXR1cm4KKwkgKi8KKwlwdWJsaWMgTG9uZyBnZXRSb29tSWRCeUV4dGVybmFsSWQoU3RyaW5nIFNJRCwgU3RyaW5nIG5hbWUsCisJCQlMb25nIHJvb210eXBlc19pZCwgU3RyaW5nIGNvbW1lbnQsIExvbmcgbnVtYmVyT2ZQYXJ0aXppcGFudHMsCisJCQlCb29sZWFuIGlzcHVibGljLCBCb29sZWFuIGFwcG9pbnRtZW50LCBCb29sZWFuIGlzRGVtb1Jvb20sCisJCQlJbnRlZ2VyIGRlbW9UaW1lLCBCb29sZWFuIGlzTW9kZXJhdGVkUm9vbSwgTG9uZyBleHRlcm5hbFJvb21JZCwKKwkJCVN0cmluZyBleHRlcm5hbFJvb21UeXBlKSB0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJcmV0dXJuIGdldEJlYW4oUm9vbVdlYlNlcnZpY2UuY2xhc3MpLmdldFJvb21JZEJ5RXh0ZXJuYWxJZChTSUQsIG5hbWUsCisJCQkJcm9vbXR5cGVzX2lkLCBjb21tZW50LCBudW1iZXJPZlBhcnRpemlwYW50cywgaXNwdWJsaWMsCisJCQkJYXBwb2ludG1lbnQsIGlzRGVtb1Jvb20sIGRlbW9UaW1lLCBpc01vZGVyYXRlZFJvb20sCisJCQkJZXh0ZXJuYWxSb29tSWQsIGV4dGVybmFsUm9vbVR5cGUpOworCX0KKworCS8qKgorCSAqIFRPRE86IEZpeCBPcmdhbml6YXRpb24gSXNzdWUKKwkgKiAKKwkgKiBAZGVwcmVjYXRlZCB1c2UgdXBkYXRlUm9vbVdpdGhNb2RlcmF0aW9uCisJICogCisJICogQHBhcmFtIFNJRAorCSAqIEBwYXJhbSByb29tc19pZAorCSAqIEBwYXJhbSBuYW1lCisJICogQHBhcmFtIHJvb210eXBlc19pZAorCSAqIEBwYXJhbSBjb21tZW50CisJICogQHBhcmFtIG51bWJlck9mUGFydGl6aXBhbnRzCisJICogQHBhcmFtIGlzcHVibGljCisJICogQHBhcmFtIHZpZGVvUG9kV2lkdGgKKwkgKiBAcGFyYW0gdmlkZW9Qb2RIZWlnaHQKKwkgKiBAcGFyYW0gdmlkZW9Qb2RYUG9zaXRpb24KKwkgKiBAcGFyYW0gdmlkZW9Qb2RZUG9zaXRpb24KKwkgKiBAcGFyYW0gbW9kZXJhdGlvblBhbmVsWFBvc2l0aW9uCisJICogQHBhcmFtIHNob3dXaGl0ZUJvYXJkCisJICogQHBhcmFtIHdoaXRlQm9hcmRQYW5lbFhQb3NpdGlvbgorCSAqIEBwYXJhbSB3aGl0ZUJvYXJkUGFuZWxZUG9zaXRpb24KKwkgKiBAcGFyYW0gd2hpdGVCb2FyZFBhbmVsSGVpZ2h0CisJICogQHBhcmFtIHdoaXRlQm9hcmRQYW5lbFdpZHRoCisJICogQHBhcmFtIHNob3dGaWxlc1BhbmVsCisJICogQHBhcmFtIGZpbGVzUGFuZWxYUG9zaXRpb24KKwkgKiBAcGFyYW0gZmlsZXNQYW5lbFlQb3NpdGlvbgorCSAqIEBwYXJhbSBmaWxlc1BhbmVsSGVpZ2h0CisJICogQHBhcmFtIGZpbGVzUGFuZWxXaWR0aAorCSAqIEByZXR1cm4KKwkgKi8KKwlARGVwcmVjYXRlZAorCXB1YmxpYyBMb25nIHVwZGF0ZVJvb20oU3RyaW5nIFNJRCwgTG9uZyByb29tc19pZCwgU3RyaW5nIG5hbWUsCisJCQlMb25nIHJvb210eXBlc19pZCwgU3RyaW5nIGNvbW1lbnQsIExvbmcgbnVtYmVyT2ZQYXJ0aXppcGFudHMsCisJCQlCb29sZWFuIGlzcHVibGljLCBJbnRlZ2VyIHZpZGVvUG9kV2lkdGgsIEludGVnZXIgdmlkZW9Qb2RIZWlnaHQsCisJCQlJbnRlZ2VyIHZpZGVvUG9kWFBvc2l0aW9uLCBJbnRlZ2VyIHZpZGVvUG9kWVBvc2l0aW9uLAorCQkJSW50ZWdlciBtb2RlcmF0aW9uUGFuZWxYUG9zaXRpb24sIEJvb2xlYW4gc2hvd1doaXRlQm9hcmQsCisJCQlJbnRlZ2VyIHdoaXRlQm9hcmRQYW5lbFhQb3NpdGlvbiwgSW50ZWdlciB3aGl0ZUJvYXJkUGFuZWxZUG9zaXRpb24sCisJCQlJbnRlZ2VyIHdoaXRlQm9hcmRQYW5lbEhlaWdodCwgSW50ZWdlciB3aGl0ZUJvYXJkUGFuZWxXaWR0aCwKKwkJCUJvb2xlYW4gc2hvd0ZpbGVzUGFuZWwsIEludGVnZXIgZmlsZXNQYW5lbFhQb3NpdGlvbiwKKwkJCUludGVnZXIgZmlsZXNQYW5lbFlQb3NpdGlvbiwgSW50ZWdlciBmaWxlc1BhbmVsSGVpZ2h0LAorCQkJSW50ZWdlciBmaWxlc1BhbmVsV2lkdGgsIEJvb2xlYW4gYXBwb2ludG1lbnQpIHRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihSb29tV2ViU2VydmljZS5jbGFzcykudXBkYXRlUm9vbShTSUQsIHJvb21zX2lkLCBuYW1lLAorCQkJCXJvb210eXBlc19pZCwgY29tbWVudCwgbnVtYmVyT2ZQYXJ0aXppcGFudHMsIGlzcHVibGljLAorCQkJCXZpZGVvUG9kV2lkdGgsIHZpZGVvUG9kSGVpZ2h0LCB2aWRlb1BvZFhQb3NpdGlvbiwKKwkJCQl2aWRlb1BvZFlQb3NpdGlvbiwgbW9kZXJhdGlvblBhbmVsWFBvc2l0aW9uLCBzaG93V2hpdGVCb2FyZCwKKwkJCQl3aGl0ZUJvYXJkUGFuZWxYUG9zaXRpb24sIHdoaXRlQm9hcmRQYW5lbFlQb3NpdGlvbiwKKwkJCQl3aGl0ZUJvYXJkUGFuZWxIZWlnaHQsIHdoaXRlQm9hcmRQYW5lbFdpZHRoLCBzaG93RmlsZXNQYW5lbCwKKwkJCQlmaWxlc1BhbmVsWFBvc2l0aW9uLCBmaWxlc1BhbmVsWVBvc2l0aW9uLCBmaWxlc1BhbmVsSGVpZ2h0LAorCQkJCWZpbGVzUGFuZWxXaWR0aCwgYXBwb2ludG1lbnQpOworCX0KKworCXB1YmxpYyBMb25nIHVwZGF0ZVJvb21XaXRoTW9kZXJhdGlvbihTdHJpbmcgU0lELCBMb25nIHJvb21faWQsIFN0cmluZyBuYW1lLAorCQkJTG9uZyByb29tdHlwZXNfaWQsIFN0cmluZyBjb21tZW50LCBMb25nIG51bWJlck9mUGFydGl6aXBhbnRzLAorCQkJQm9vbGVhbiBpc3B1YmxpYywgQm9vbGVhbiBhcHBvaW50bWVudCwgQm9vbGVhbiBpc0RlbW9Sb29tLAorCQkJSW50ZWdlciBkZW1vVGltZSwgQm9vbGVhbiBpc01vZGVyYXRlZFJvb20pIHRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihSb29tV2ViU2VydmljZS5jbGFzcykudXBkYXRlUm9vbVdpdGhNb2RlcmF0aW9uKFNJRCwKKwkJCQlyb29tX2lkLCBuYW1lLCByb29tdHlwZXNfaWQsIGNvbW1lbnQsIG51bWJlck9mUGFydGl6aXBhbnRzLAorCQkJCWlzcHVibGljLCBhcHBvaW50bWVudCwgaXNEZW1vUm9vbSwgZGVtb1RpbWUsIGlzTW9kZXJhdGVkUm9vbSk7CisJfQorCisJcHVibGljIExvbmcgdXBkYXRlUm9vbVdpdGhNb2RlcmF0aW9uQW5kUXVlc3Rpb25zKFN0cmluZyBTSUQsIExvbmcgcm9vbV9pZCwKKwkJCVN0cmluZyBuYW1lLCBMb25nIHJvb210eXBlc19pZCwgU3RyaW5nIGNvbW1lbnQsCisJCQlMb25nIG51bWJlck9mUGFydGl6aXBhbnRzLCBCb29sZWFuIGlzcHVibGljLCBCb29sZWFuIGFwcG9pbnRtZW50LAorCQkJQm9vbGVhbiBpc0RlbW9Sb29tLCBJbnRlZ2VyIGRlbW9UaW1lLCBCb29sZWFuIGlzTW9kZXJhdGVkUm9vbSwKKwkJCUJvb2xlYW4gYWxsb3dVc2VyUXVlc3Rpb25zKSB0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJcmV0dXJuIGdldEJlYW4oUm9vbVdlYlNlcnZpY2UuY2xhc3MpLnVwZGF0ZVJvb21XaXRoTW9kZXJhdGlvbkFuZFF1ZXN0aW9ucygKKwkJCQlTSUQsIHJvb21faWQsIG5hbWUsIHJvb210eXBlc19pZCwgY29tbWVudCwKKwkJCQludW1iZXJPZlBhcnRpemlwYW50cywgaXNwdWJsaWMsIGFwcG9pbnRtZW50LCBpc0RlbW9Sb29tLAorCQkJCWRlbW9UaW1lLCBpc01vZGVyYXRlZFJvb20sIGFsbG93VXNlclF1ZXN0aW9ucyk7CisJfQorCisJcHVibGljIExvbmcgdXBkYXRlUm9vbVdpdGhNb2RlcmF0aW9uUXVlc3Rpb25zQXVkaW9UeXBlQW5kSGlkZU9wdGlvbnMoCisJCQlTdHJpbmcgU0lELCBMb25nIHJvb21faWQsIFN0cmluZyBuYW1lLCBMb25nIHJvb210eXBlc19pZCwKKwkJCVN0cmluZyBjb21tZW50LCBMb25nIG51bWJlck9mUGFydGl6aXBhbnRzLCBCb29sZWFuIGlzcHVibGljLAorCQkJQm9vbGVhbiBhcHBvaW50bWVudCwgQm9vbGVhbiBpc0RlbW9Sb29tLCBJbnRlZ2VyIGRlbW9UaW1lLAorCQkJQm9vbGVhbiBpc01vZGVyYXRlZFJvb20sIEJvb2xlYW4gYWxsb3dVc2VyUXVlc3Rpb25zLAorCQkJQm9vbGVhbiBpc0F1ZGlvT25seSwgQm9vbGVhbiBoaWRlVG9wQmFyLCBCb29sZWFuIGhpZGVDaGF0LAorCQkJQm9vbGVhbiBoaWRlQWN0aXZpdGllc0FuZEFjdGlvbnMsIEJvb2xlYW4gaGlkZUZpbGVzRXhwbG9yZXIsCisJCQlCb29sZWFuIGhpZGVBY3Rpb25zTWVudSwgQm9vbGVhbiBoaWRlU2NyZWVuU2hhcmluZywKKwkJCUJvb2xlYW4gaGlkZVdoaXRlYm9hcmQpIHRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihSb29tV2ViU2VydmljZS5jbGFzcykKKwkJCQkudXBkYXRlUm9vbVdpdGhNb2RlcmF0aW9uUXVlc3Rpb25zQXVkaW9UeXBlQW5kSGlkZU9wdGlvbnMoU0lELAorCQkJCQkJcm9vbV9pZCwgbmFtZSwgcm9vbXR5cGVzX2lkLCBjb21tZW50LAorCQkJCQkJbnVtYmVyT2ZQYXJ0aXppcGFudHMsIGlzcHVibGljLCBhcHBvaW50bWVudCwKKwkJCQkJCWlzRGVtb1Jvb20sIGRlbW9UaW1lLCBpc01vZGVyYXRlZFJvb20sCisJCQkJCQlhbGxvd1VzZXJRdWVzdGlvbnMsIGlzQXVkaW9Pbmx5LCBoaWRlVG9wQmFyLCBoaWRlQ2hhdCwKKwkJCQkJCWhpZGVBY3Rpdml0aWVzQW5kQWN0aW9ucywgaGlkZUZpbGVzRXhwbG9yZXIsCisJCQkJCQloaWRlQWN0aW9uc01lbnUsIGhpZGVTY3JlZW5TaGFyaW5nLCBoaWRlV2hpdGVib2FyZCk7CisKKwl9CisKKwlwdWJsaWMgTG9uZyBkZWxldGVSb29tKFN0cmluZyBTSUQsIGxvbmcgcm9vbXNfaWQpIHRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihSb29tV2ViU2VydmljZS5jbGFzcykuZGVsZXRlUm9vbShTSUQsIHJvb21zX2lkKTsKKwl9CisKKwlwdWJsaWMgQm9vbGVhbiBraWNrVXNlcihTdHJpbmcgU0lEX0FkbWluLCBMb25nIHJvb21faWQpIHRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihSb29tV2ViU2VydmljZS5jbGFzcykua2lja1VzZXIoU0lEX0FkbWluLCByb29tX2lkKTsKKwl9CisKKwlwdWJsaWMgTG9uZyBhZGRSb29tV2l0aE1vZGVyYXRpb25BbmRFeHRlcm5hbFR5cGUoU3RyaW5nIFNJRCwgU3RyaW5nIG5hbWUsCisJCQlMb25nIHJvb210eXBlc19pZCwgU3RyaW5nIGNvbW1lbnQsIExvbmcgbnVtYmVyT2ZQYXJ0aXppcGFudHMsCisJCQlCb29sZWFuIGlzcHVibGljLCBCb29sZWFuIGFwcG9pbnRtZW50LCBCb29sZWFuIGlzRGVtb1Jvb20sCisJCQlJbnRlZ2VyIGRlbW9UaW1lLCBCb29sZWFuIGlzTW9kZXJhdGVkUm9vbSwgU3RyaW5nIGV4dGVybmFsUm9vbVR5cGUpCisJCQl0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJcmV0dXJuIGdldEJlYW4oUm9vbVdlYlNlcnZpY2UuY2xhc3MpLmFkZFJvb21XaXRoTW9kZXJhdGlvbkFuZEV4dGVybmFsVHlwZSgKKwkJCQlTSUQsIG5hbWUsIHJvb210eXBlc19pZCwgY29tbWVudCwgbnVtYmVyT2ZQYXJ0aXppcGFudHMsCisJCQkJaXNwdWJsaWMsIGFwcG9pbnRtZW50LCBpc0RlbW9Sb29tLCBkZW1vVGltZSwgaXNNb2RlcmF0ZWRSb29tLAorCQkJCWV4dGVybmFsUm9vbVR5cGUpOworCX0KKworCXB1YmxpYyBMb25nIGFkZFJvb21XaXRoTW9kZXJhdGlvbkV4dGVybmFsVHlwZUFuZEF1ZGlvVHlwZShTdHJpbmcgU0lELAorCQkJU3RyaW5nIG5hbWUsIExvbmcgcm9vbXR5cGVzX2lkLCBTdHJpbmcgY29tbWVudCwKKwkJCUxvbmcgbnVtYmVyT2ZQYXJ0aXppcGFudHMsIEJvb2xlYW4gaXNwdWJsaWMsIEJvb2xlYW4gYXBwb2ludG1lbnQsCisJCQlCb29sZWFuIGlzRGVtb1Jvb20sIEludGVnZXIgZGVtb1RpbWUsIEJvb2xlYW4gaXNNb2RlcmF0ZWRSb29tLAorCQkJU3RyaW5nIGV4dGVybmFsUm9vbVR5cGUsIEJvb2xlYW4gYWxsb3dVc2VyUXVlc3Rpb25zLAorCQkJQm9vbGVhbiBpc0F1ZGlvT25seSkgdGhyb3dzIEF4aXNGYXVsdCB7CisJCXJldHVybiBnZXRCZWFuKFJvb21XZWJTZXJ2aWNlLmNsYXNzKQorCQkJCS5hZGRSb29tV2l0aE1vZGVyYXRpb25FeHRlcm5hbFR5cGVBbmRBdWRpb1R5cGUoU0lELCBuYW1lLAorCQkJCQkJcm9vbXR5cGVzX2lkLCBjb21tZW50LCBudW1iZXJPZlBhcnRpemlwYW50cywgaXNwdWJsaWMsCisJCQkJCQlhcHBvaW50bWVudCwgaXNEZW1vUm9vbSwgZGVtb1RpbWUsIGlzTW9kZXJhdGVkUm9vbSwKKwkJCQkJCWV4dGVybmFsUm9vbVR5cGUsIGFsbG93VXNlclF1ZXN0aW9ucywgaXNBdWRpb09ubHkpOworCX0KKworCXB1YmxpYyBMb25nIGFkZFJvb21XaXRoTW9kZXJhdGlvbkFuZFJlY29yZGluZ0ZsYWdzKFN0cmluZyBTSUQsIFN0cmluZyBuYW1lLAorCQkJTG9uZyByb29tdHlwZXNfaWQsIFN0cmluZyBjb21tZW50LCBMb25nIG51bWJlck9mUGFydGl6aXBhbnRzLAorCQkJQm9vbGVhbiBpc3B1YmxpYywgQm9vbGVhbiBhcHBvaW50bWVudCwgQm9vbGVhbiBpc0RlbW9Sb29tLAorCQkJSW50ZWdlciBkZW1vVGltZSwgQm9vbGVhbiBpc01vZGVyYXRlZFJvb20sIFN0cmluZyBleHRlcm5hbFJvb21UeXBlLAorCQkJQm9vbGVhbiBhbGxvd1VzZXJRdWVzdGlvbnMsIEJvb2xlYW4gaXNBdWRpb09ubHksCisJCQlCb29sZWFuIHdhaXRGb3JSZWNvcmRpbmcsIEJvb2xlYW4gYWxsb3dSZWNvcmRpbmcpIHRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihSb29tV2ViU2VydmljZS5jbGFzcykKKwkJCQkuYWRkUm9vbVdpdGhNb2RlcmF0aW9uQW5kUmVjb3JkaW5nRmxhZ3MoU0lELCBuYW1lLAorCQkJCQkJcm9vbXR5cGVzX2lkLCBjb21tZW50LCBudW1iZXJPZlBhcnRpemlwYW50cywgaXNwdWJsaWMsCisJCQkJCQlhcHBvaW50bWVudCwgaXNEZW1vUm9vbSwgZGVtb1RpbWUsIGlzTW9kZXJhdGVkUm9vbSwKKwkJCQkJCWV4dGVybmFsUm9vbVR5cGUsIGFsbG93VXNlclF1ZXN0aW9ucywgaXNBdWRpb09ubHksCisJCQkJCQl3YWl0Rm9yUmVjb3JkaW5nLCBhbGxvd1JlY29yZGluZyk7CisJfQorCisJcHVibGljIExvbmcgYWRkUm9vbVdpdGhNb2RlcmF0aW9uRXh0ZXJuYWxUeXBlQW5kVG9wQmFyT3B0aW9uKFN0cmluZyBTSUQsCisJCQlTdHJpbmcgbmFtZSwgTG9uZyByb29tdHlwZXNfaWQsIFN0cmluZyBjb21tZW50LAorCQkJTG9uZyBudW1iZXJPZlBhcnRpemlwYW50cywgQm9vbGVhbiBpc3B1YmxpYywgQm9vbGVhbiBhcHBvaW50bWVudCwKKwkJCUJvb2xlYW4gaXNEZW1vUm9vbSwgSW50ZWdlciBkZW1vVGltZSwgQm9vbGVhbiBpc01vZGVyYXRlZFJvb20sCisJCQlTdHJpbmcgZXh0ZXJuYWxSb29tVHlwZSwgQm9vbGVhbiBhbGxvd1VzZXJRdWVzdGlvbnMsCisJCQlCb29sZWFuIGlzQXVkaW9Pbmx5LCBCb29sZWFuIHdhaXRGb3JSZWNvcmRpbmcsCisJCQlCb29sZWFuIGFsbG93UmVjb3JkaW5nLCBCb29sZWFuIGhpZGVUb3BCYXIpIHRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihSb29tV2ViU2VydmljZS5jbGFzcykKKwkJCQkuYWRkUm9vbVdpdGhNb2RlcmF0aW9uRXh0ZXJuYWxUeXBlQW5kVG9wQmFyT3B0aW9uKFNJRCwgbmFtZSwKKwkJCQkJCXJvb210eXBlc19pZCwgY29tbWVudCwgbnVtYmVyT2ZQYXJ0aXppcGFudHMsIGlzcHVibGljLAorCQkJCQkJYXBwb2ludG1lbnQsIGlzRGVtb1Jvb20sIGRlbW9UaW1lLCBpc01vZGVyYXRlZFJvb20sCisJCQkJCQlleHRlcm5hbFJvb21UeXBlLCBhbGxvd1VzZXJRdWVzdGlvbnMsIGlzQXVkaW9Pbmx5LAorCQkJCQkJd2FpdEZvclJlY29yZGluZywgYWxsb3dSZWNvcmRpbmcsIGhpZGVUb3BCYXIpOworCX0KKworCXB1YmxpYyBMb25nIGFkZFJvb21XaXRoTW9kZXJhdGlvblF1ZXN0aW9uc0F1ZGlvVHlwZUFuZEhpZGVPcHRpb25zKAorCQkJU3RyaW5nIFNJRCwgU3RyaW5nIG5hbWUsIExvbmcgcm9vbXR5cGVzX2lkLCBTdHJpbmcgY29tbWVudCwKKwkJCUxvbmcgbnVtYmVyT2ZQYXJ0aXppcGFudHMsIEJvb2xlYW4gaXNwdWJsaWMsIEJvb2xlYW4gYXBwb2ludG1lbnQsCisJCQlCb29sZWFuIGlzRGVtb1Jvb20sIEludGVnZXIgZGVtb1RpbWUsIEJvb2xlYW4gaXNNb2RlcmF0ZWRSb29tLAorCQkJQm9vbGVhbiBhbGxvd1VzZXJRdWVzdGlvbnMsIEJvb2xlYW4gaXNBdWRpb09ubHksCisJCQlCb29sZWFuIGhpZGVUb3BCYXIsIEJvb2xlYW4gaGlkZUNoYXQsCisJCQlCb29sZWFuIGhpZGVBY3Rpdml0aWVzQW5kQWN0aW9ucywgQm9vbGVhbiBoaWRlRmlsZXNFeHBsb3JlciwKKwkJCUJvb2xlYW4gaGlkZUFjdGlvbnNNZW51LCBCb29sZWFuIGhpZGVTY3JlZW5TaGFyaW5nLAorCQkJQm9vbGVhbiBoaWRlV2hpdGVib2FyZCkgdGhyb3dzIEF4aXNGYXVsdCB7CisJCXJldHVybiBnZXRCZWFuKFJvb21XZWJTZXJ2aWNlLmNsYXNzKS5hZGRSb29tV2l0aE1vZGVyYXRpb25RdWVzdGlvbnNBdWRpb1R5cGVBbmRIaWRlT3B0aW9ucyhTSUQsIG5hbWUsIHJvb210eXBlc19pZCwgY29tbWVudCwgbnVtYmVyT2ZQYXJ0aXppcGFudHMsIGlzcHVibGljLCBhcHBvaW50bWVudCwgaXNEZW1vUm9vbSwgZGVtb1RpbWUsIGlzTW9kZXJhdGVkUm9vbSwgYWxsb3dVc2VyUXVlc3Rpb25zLCBpc0F1ZGlvT25seSwgaGlkZVRvcEJhciwgaGlkZUNoYXQsIGhpZGVBY3Rpdml0aWVzQW5kQWN0aW9ucywgaGlkZUZpbGVzRXhwbG9yZXIsIGhpZGVBY3Rpb25zTWVudSwgaGlkZVNjcmVlblNoYXJpbmcsIGhpZGVXaGl0ZWJvYXJkKTsKKwl9CisJCisJLyoqCisJICogCisJICogQ3JlYXRlIGEgSW52aXRhdGlvbiBoYXNoIGFuZCBvcHRpb25hbGx5IHNlbmQgaXQgYnkgbWFpbCB0aGUgRnJvbSB0byBEYXRlCisJICogaXMgYXMgU3RyaW5nIGFzIHNvbWUgU09BUCBsaWJyYXJpZXMgZG8gbm90IGFjY2VwdCBEYXRlIE9iamVjdHMgaW4gU09BUAorCSAqIENhbGxzIERhdGUgaXMgcGFyc2VkIGFzIGRkLm1tLnl5eXksIHRpbWUgYXMgaGg6bW0gKGRvbid0IGZvcmdldCB0aGUKKwkgKiBsZWFkaW5nIHplcm8ncykKKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogICAgICAgICAgICBhIHZhbGlkIFNlc3Npb24gVG9rZW4KKwkgKiBAcGFyYW0gdXNlcm5hbWUKKwkgKiAgICAgICAgICAgIHRoZSB1c2VybmFtZSBvZiB0aGUgVXNlciB0aGF0IGhlIHdpbGwgZ2V0CisJICogQHBhcmFtIHJvb21faWQKKwkgKiAgICAgICAgICAgIHRoZSBjb25mZXJlbmNlIHJvb20gaWQgb2YgdGhlIGludml0YXRpb24KKwkgKiBAcGFyYW0gaXNQYXNzd29yZFByb3RlY3RlZAorCSAqICAgICAgICAgICAgaWYgdGhlIGludml0YXRpb24gaXMgcGFzc3dvcmQgcHJvdGVjdGVkCisJICogQHBhcmFtIGludml0YXRpb25wYXNzCisJICogICAgICAgICAgICB0aGUgcGFzc3dvcmQgZm9yIGFjY2Vzc2luZyB0aGUgY29uZmVyZW5jZSByb29tIHZpYSB0aGUKKwkgKiAgICAgICAgICAgIGludml0YXRpb24gaGFzaAorCSAqIEBwYXJhbSB2YWxpZAorCSAqICAgICAgICAgICAgdGhlIHR5cGUgb2YgdmFsaWRhdGlvbiBmb3IgdGhlIGhhc2ggMTogZW5kbGVzcywgMjogZnJvbS10bworCSAqICAgICAgICAgICAgcGVyaW9kLCAzOiBvbmUtdGltZQorCSAqIEBwYXJhbSB2YWxpZEZyb21EYXRlCisJICogICAgICAgICAgICBEYXRlIGluIEZvcm1hdCBvZiBkZC5tbS55eXl5IG9ubHkgb2YgaW50ZXJlc3QgaWYgdmFsaWQgaXMgdHlwZQorCSAqICAgICAgICAgICAgMgorCSAqIEBwYXJhbSB2YWxpZEZyb21UaW1lCisJICogICAgICAgICAgICB0aW1lIGluIEZvcm1hdCBvZiBoaDptbSBvbmx5IG9mIGludGVyZXN0IGlmIHZhbGlkIGlzIHR5cGUgMgorCSAqIEBwYXJhbSB2YWxpZFRvRGF0ZQorCSAqICAgICAgICAgICAgRGF0ZSBpbiBGb3JtYXQgb2YgZGQubW0ueXl5eSBvbmx5IG9mIGludGVyZXN0IGlmIHZhbGlkIGlzIHR5cGUKKwkgKiAgICAgICAgICAgIDIKKwkgKiBAcGFyYW0gdmFsaWRUb1RpbWUKKwkgKiAgICAgICAgICAgIHRpbWUgaW4gRm9ybWF0IG9mIGhoOm1tIG9ubHkgb2YgaW50ZXJlc3QgaWYgdmFsaWQgaXMgdHlwZSAyCisJICogQHJldHVybiBhIEhBU0ggdmFsdWUgdGhhdCBjYW4gYmUgbWFkZSBpbnRvIGEgVVJMIHdpdGgKKwkgKiAgICAgICAgIGh0dHA6Ly8kT1BFTk1FRVRJTkdTX0hPU1QKKwkgKiAgICAgICAgIDokUE9SVC9vcGVubWVldGluZ3MvP2ludml0YXRpb25IYXNoPSIraW52aXRhdGlvbnNIYXNoOworCSAqIEB0aHJvd3MgQXhpc0ZhdWx0CisJICovCisJcHVibGljIFN0cmluZyBnZXRJbnZpdGF0aW9uSGFzaChTdHJpbmcgU0lELCBTdHJpbmcgdXNlcm5hbWUsIExvbmcgcm9vbV9pZCwKKwkJCUJvb2xlYW4gaXNQYXNzd29yZFByb3RlY3RlZCwgU3RyaW5nIGludml0YXRpb25wYXNzLCBJbnRlZ2VyIHZhbGlkLAorCQkJU3RyaW5nIHZhbGlkRnJvbURhdGUsIFN0cmluZyB2YWxpZEZyb21UaW1lLCBTdHJpbmcgdmFsaWRUb0RhdGUsCisJCQlTdHJpbmcgdmFsaWRUb1RpbWUpIHRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihSb29tV2ViU2VydmljZS5jbGFzcykuZ2V0SW52aXRhdGlvbkhhc2goU0lELCB1c2VybmFtZSwKKwkJCQlyb29tX2lkLCBpc1Bhc3N3b3JkUHJvdGVjdGVkLCBpbnZpdGF0aW9ucGFzcywgdmFsaWQsCisJCQkJdmFsaWRGcm9tRGF0ZSwgdmFsaWRGcm9tVGltZSwgdmFsaWRUb0RhdGUsIHZhbGlkVG9UaW1lKTsKKworCX0KKworCS8qKgorCSAqIENyZWF0ZSBhIEludml0YXRpb24gaGFzaCBhbmQgb3B0aW9uYWxseSBzZW5kIGl0IGJ5IG1haWwgdGhlIEZyb20gdG8gRGF0ZQorCSAqIGlzIGFzIFN0cmluZyBhcyBzb21lIFNPQVAgbGlicmFyaWVzIGRvIG5vdCBhY2NlcHQgRGF0ZSBPYmplY3RzIGluIFNPQVAKKwkgKiBDYWxscyBEYXRlIGlzIHBhcnNlZCBhcyBkZC5tbS55eXl5LCB0aW1lIGFzIGhoOm1tIChkb24ndCBmb3JnZXQgdGhlCisJICogbGVhZGluZyB6ZXJvJ3MpCisJICogCisJICogQHBhcmFtIFNJRAorCSAqICAgICAgICAgICAgYSB2YWxpZCBTZXNzaW9uIFRva2VuCisJICogQHBhcmFtIHVzZXJuYW1lCisJICogICAgICAgICAgICB0aGUgVXNlcm5hbWUgb2YgdGhlIFVzZXIgdGhhdCBoZSB3aWxsIGdldAorCSAqIEBwYXJhbSBtZXNzYWdlCisJICogICAgICAgICAgICB0aGUgTWVzc2FnZSBpbiB0aGUgRW1haWwgQm9keSBzZW5kIHdpdGggdGhlIGludml0YXRpb24gaWYKKwkgKiAgICAgICAgICAgIHNlbmRNYWlsIGlzIHRydWUKKwkgKiBAcGFyYW0gYmFzZXVybAorCSAqICAgICAgICAgICAgdGhlIGJhc2VVUkwgZm9yIHRoZSBJbmZpdmF0aW9ucyBsaW5rIGluIHRoZSBNYWlsIEJvZHkgaWYKKwkgKiAgICAgICAgICAgIHNlbmRNYWlsIGlzIHRydWUKKwkgKiBAcGFyYW0gZW1haWwKKwkgKiAgICAgICAgICAgIHRoZSBFbWFpbCB0byBzZW5kIHRoZSBpbnZpdGF0aW9uIHRvIGlmIHNlbmRNYWlsIGlzIHRydWUKKwkgKiBAcGFyYW0gc3ViamVjdAorCSAqICAgICAgICAgICAgdGhlIHN1YmplY3Qgb2YgdGhlIEVtYWlsIHNlbmQgd2l0aCB0aGUgaW52aXRhdGlvbiBpZiBzZW5kTWFpbAorCSAqICAgICAgICAgICAgaXMgdHJ1ZQorCSAqIEBwYXJhbSByb29tX2lkCisJICogICAgICAgICAgICB0aGUgY29uZmVyZW5jZSByb29tIGlkIG9mIHRoZSBpbnZpdGF0aW9uCisJICogQHBhcmFtIGNvbmZlcmVuY2Vkb21haW4KKwkgKiAgICAgICAgICAgIHRoZSBkb21haW4gb2YgdGhlIHJvb20gKGtlZXAgZW1wdHkpCisJICogQHBhcmFtIGlzUGFzc3dvcmRQcm90ZWN0ZWQKKwkgKiAgICAgICAgICAgIGlmIHRoZSBpbnZpdGF0aW9uIGlzIHBhc3N3b3JkIHByb3RlY3RlZAorCSAqIEBwYXJhbSBpbnZpdGF0aW9ucGFzcworCSAqICAgICAgICAgICAgdGhlIHBhc3N3b3JkIGZvciBhY2Nlc3NpbmcgdGhlIGNvbmZlcmVuY2Ugcm9vbSB2aWEgdGhlCisJICogICAgICAgICAgICBpbnZpdGF0aW9uIGhhc2gKKwkgKiBAcGFyYW0gdmFsaWQKKwkgKiAgICAgICAgICAgIHRoZSB0eXBlIG9mIHZhbGlkYXRpb24gZm9yIHRoZSBoYXNoIDE6IGVuZGxlc3MsIDI6IGZyb20tdG8KKwkgKiAgICAgICAgICAgIHBlcmlvZCwgMzogb25lLXRpbWUKKwkgKiBAcGFyYW0gdmFsaWRGcm9tRGF0ZQorCSAqICAgICAgICAgICAgRGF0ZSBpbiBGb3JtYXQgb2YgZGQubW0ueXl5eSBvbmx5IG9mIGludGVyZXN0IGlmIHZhbGlkIGlzIHR5cGUKKwkgKiAgICAgICAgICAgIDIKKwkgKiBAcGFyYW0gdmFsaWRGcm9tVGltZQorCSAqICAgICAgICAgICAgdGltZSBpbiBGb3JtYXQgb2YgaGg6bW0gb25seSBvZiBpbnRlcmVzdCBpZiB2YWxpZCBpcyB0eXBlIDIKKwkgKiBAcGFyYW0gdmFsaWRUb0RhdGUKKwkgKiAgICAgICAgICAgIERhdGUgaW4gRm9ybWF0IG9mIGRkLm1tLnl5eXkgb25seSBvZiBpbnRlcmVzdCBpZiB2YWxpZCBpcyB0eXBlCisJICogICAgICAgICAgICAyCisJICogQHBhcmFtIHZhbGlkVG9UaW1lCisJICogICAgICAgICAgICB0aW1lIGluIEZvcm1hdCBvZiBoaDptbSBvbmx5IG9mIGludGVyZXN0IGlmIHZhbGlkIGlzIHR5cGUgMgorCSAqIEBwYXJhbSBsYW5ndWFnZV9pZAorCSAqICAgICAgICAgICAgdGhlIGxhbmd1YWdlIGlkIG9mIHRoZSBFTWFpbCB0aGF0IGlzIHNlbmQgd2l0aCB0aGUgaW52aXRhdGlvbgorCSAqICAgICAgICAgICAgaWYgc2VuZE1haWwgaXMgdHJ1ZQorCSAqIEBwYXJhbSBzZW5kTWFpbAorCSAqICAgICAgICAgICAgaWYgc2VuZE1haWwgaXMgdHJ1ZSB0aGVuIHRoZSBSUEMtQ2FsbCB3aWxsIHNlbmQgdGhlIGludml0YXRpb24KKwkgKiAgICAgICAgICAgIHRvIHRoZSBlbWFpbAorCSAqIEByZXR1cm4gYSBIQVNIIHZhbHVlIHRoYXQgY2FuIGJlIG1hZGUgaW50byBhIFVSTCB3aXRoCisJICogICAgICAgICBodHRwOi8vJE9QRU5NRUVUSU5HU19IT1NUCisJICogICAgICAgICA6JFBPUlQvb3Blbm1lZXRpbmdzLz9pbnZpdGF0aW9uSGFzaD0iK2ludml0YXRpb25zSGFzaDsKKwkgKiBAdGhyb3dzIEF4aXNGYXVsdAorCSAqLworCXB1YmxpYyBTdHJpbmcgc2VuZEludml0YXRpb25IYXNoKFN0cmluZyBTSUQsIFN0cmluZyB1c2VybmFtZSwKKwkJCVN0cmluZyBtZXNzYWdlLCBTdHJpbmcgYmFzZXVybCwgU3RyaW5nIGVtYWlsLCBTdHJpbmcgc3ViamVjdCwKKwkJCUxvbmcgcm9vbV9pZCwgU3RyaW5nIGNvbmZlcmVuY2Vkb21haW4sIEJvb2xlYW4gaXNQYXNzd29yZFByb3RlY3RlZCwKKwkJCVN0cmluZyBpbnZpdGF0aW9ucGFzcywgSW50ZWdlciB2YWxpZCwgU3RyaW5nIHZhbGlkRnJvbURhdGUsCisJCQlTdHJpbmcgdmFsaWRGcm9tVGltZSwgU3RyaW5nIHZhbGlkVG9EYXRlLCBTdHJpbmcgdmFsaWRUb1RpbWUsCisJCQlMb25nIGxhbmd1YWdlX2lkLCBCb29sZWFuIHNlbmRNYWlsKSB0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJcmV0dXJuIGdldEJlYW4oUm9vbVdlYlNlcnZpY2UuY2xhc3MpLnNlbmRJbnZpdGF0aW9uSGFzaChTSUQsIHVzZXJuYW1lLAorCQkJCW1lc3NhZ2UsIGJhc2V1cmwsIGVtYWlsLCBzdWJqZWN0LCByb29tX2lkLCBjb25mZXJlbmNlZG9tYWluLAorCQkJCWlzUGFzc3dvcmRQcm90ZWN0ZWQsIGludml0YXRpb25wYXNzLCB2YWxpZCwgdmFsaWRGcm9tRGF0ZSwKKwkJCQl2YWxpZEZyb21UaW1lLCB2YWxpZFRvRGF0ZSwgdmFsaWRUb1RpbWUsIGxhbmd1YWdlX2lkLCBzZW5kTWFpbCk7CisJfQorCisJLyoqCisJICogQ3JlYXRlIGEgSW52aXRhdGlvbiBoYXNoIGFuZCBvcHRpb25hbGx5IHNlbmQgaXQgYnkgbWFpbCB0aGUgRnJvbSB0byBEYXRlCisJICogaXMgYXMgU3RyaW5nIGFzIHNvbWUgU09BUCBsaWJyYXJpZXMgZG8gbm90IGFjY2VwdCBEYXRlIE9iamVjdHMgaW4gU09BUAorCSAqIENhbGxzIERhdGUgaXMgcGFyc2VkIGFzIGRkLm1tLnl5eXksIHRpbWUgYXMgaGg6bW0gKGRvbid0IGZvcmdldCB0aGUKKwkgKiBsZWFkaW5nIHplcm8ncykKKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogICAgICAgICAgICBhIHZhbGlkIFNlc3Npb24gVG9rZW4KKwkgKiBAcGFyYW0gdXNlcm5hbWUKKwkgKiAgICAgICAgICAgIHRoZSBVc2VybmFtZSBvZiB0aGUgVXNlciB0aGF0IGhlIHdpbGwgZ2V0CisJICogQHBhcmFtIG1lc3NhZ2UKKwkgKiAgICAgICAgICAgIHRoZSBNZXNzYWdlIGluIHRoZSBFbWFpbCBCb2R5IHNlbmQgd2l0aCB0aGUgaW52aXRhdGlvbiBpZgorCSAqICAgICAgICAgICAgc2VuZE1haWwgaXMgdHJ1ZQorCSAqIEBwYXJhbSBiYXNldXJsCisJICogICAgICAgICAgICB0aGUgYmFzZVVSTCBmb3IgdGhlIEluZml2YXRpb25zIGxpbmsgaW4gdGhlIE1haWwgQm9keSBpZgorCSAqICAgICAgICAgICAgc2VuZE1haWwgaXMgdHJ1ZQorCSAqIEBwYXJhbSBlbWFpbAorCSAqICAgICAgICAgICAgdGhlIEVtYWlsIHRvIHNlbmQgdGhlIGludml0YXRpb24gdG8gaWYgc2VuZE1haWwgaXMgdHJ1ZQorCSAqIEBwYXJhbSBzdWJqZWN0CisJICogICAgICAgICAgICB0aGUgc3ViamVjdCBvZiB0aGUgRW1haWwgc2VuZCB3aXRoIHRoZSBpbnZpdGF0aW9uIGlmIHNlbmRNYWlsCisJICogICAgICAgICAgICBpcyB0cnVlCisJICogQHBhcmFtIHJvb21faWQKKwkgKiAgICAgICAgICAgIHRoZSBjb25mZXJlbmNlIHJvb20gaWQgb2YgdGhlIGludml0YXRpb24KKwkgKiBAcGFyYW0gY29uZmVyZW5jZWRvbWFpbgorCSAqICAgICAgICAgICAgdGhlIGRvbWFpbiBvZiB0aGUgcm9vbSAoa2VlcCBlbXB0eSkKKwkgKiBAcGFyYW0gaXNQYXNzd29yZFByb3RlY3RlZAorCSAqICAgICAgICAgICAgaWYgdGhlIGludml0YXRpb24gaXMgcGFzc3dvcmQgcHJvdGVjdGVkCisJICogQHBhcmFtIGludml0YXRpb25wYXNzCisJICogICAgICAgICAgICB0aGUgcGFzc3dvcmQgZm9yIGFjY2Vzc2luZyB0aGUgY29uZmVyZW5jZSByb29tIHZpYSB0aGUKKwkgKiAgICAgICAgICAgIGludml0YXRpb24gaGFzaAorCSAqIEBwYXJhbSB2YWxpZAorCSAqICAgICAgICAgICAgdGhlIHR5cGUgb2YgdmFsaWRhdGlvbiBmb3IgdGhlIGhhc2ggMTogZW5kbGVzcywgMjogZnJvbS10bworCSAqICAgICAgICAgICAgcGVyaW9kLCAzOiBvbmUtdGltZQorCSAqIEBwYXJhbSBmcm9tRGF0ZQorCSAqICAgICAgICAgICAgRGF0ZSBhcyBEYXRlIE9iamVjdCBvbmx5IG9mIGludGVyZXN0IGlmIHZhbGlkIGlzIHR5cGUgMgorCSAqIEBwYXJhbSB0b0RhdGUKKwkgKiAgICAgICAgICAgIERhdGUgYXMgRGF0ZSBPYmplY3Qgb25seSBvZiBpbnRlcmVzdCBpZiB2YWxpZCBpcyB0eXBlIDIKKwkgKiBAcGFyYW0gbGFuZ3VhZ2VfaWQKKwkgKiAgICAgICAgICAgIHRoZSBsYW5ndWFnZSBpZCBvZiB0aGUgRU1haWwgdGhhdCBpcyBzZW5kIHdpdGggdGhlIGludml0YXRpb24KKwkgKiAgICAgICAgICAgIGlmIHNlbmRNYWlsIGlzIHRydWUKKwkgKiBAcGFyYW0gc2VuZE1haWwKKwkgKiAgICAgICAgICAgIGlmIHNlbmRNYWlsIGlzIHRydWUgdGhlbiB0aGUgUlBDLUNhbGwgd2lsbCBzZW5kIHRoZSBpbnZpdGF0aW9uCisJICogICAgICAgICAgICB0byB0aGUgZW1haWwKKwkgKiBAcmV0dXJuIGEgSEFTSCB2YWx1ZSB0aGF0IGNhbiBiZSBtYWRlIGludG8gYSBVUkwgd2l0aAorCSAqICAgICAgICAgaHR0cDovLyRPUEVOTUVFVElOR1NfSE9TVAorCSAqICAgICAgICAgOiRQT1JUL29wZW5tZWV0aW5ncy8/aW52aXRhdGlvbkhhc2g9IitpbnZpdGF0aW9uc0hhc2g7CisJICogQHRocm93cyBBeGlzRmF1bHQKKwkgKi8KKwlwdWJsaWMgU3RyaW5nIHNlbmRJbnZpdGF0aW9uSGFzaFdpdGhEYXRlT2JqZWN0KFN0cmluZyBTSUQsIFN0cmluZyB1c2VybmFtZSwKKwkJCVN0cmluZyBtZXNzYWdlLCBTdHJpbmcgYmFzZXVybCwgU3RyaW5nIGVtYWlsLCBTdHJpbmcgc3ViamVjdCwKKwkJCUxvbmcgcm9vbV9pZCwgU3RyaW5nIGNvbmZlcmVuY2Vkb21haW4sIEJvb2xlYW4gaXNQYXNzd29yZFByb3RlY3RlZCwKKwkJCVN0cmluZyBpbnZpdGF0aW9ucGFzcywgSW50ZWdlciB2YWxpZCwgRGF0ZSBmcm9tRGF0ZSwgRGF0ZSB0b0RhdGUsCisJCQlMb25nIGxhbmd1YWdlX2lkLCBCb29sZWFuIHNlbmRNYWlsKSB0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJcmV0dXJuIGdldEJlYW4oUm9vbVdlYlNlcnZpY2UuY2xhc3MpLnNlbmRJbnZpdGF0aW9uSGFzaFdpdGhEYXRlT2JqZWN0KFNJRCwKKwkJCQl1c2VybmFtZSwgbWVzc2FnZSwgYmFzZXVybCwgZW1haWwsIHN1YmplY3QsIHJvb21faWQsCisJCQkJY29uZmVyZW5jZWRvbWFpbiwgaXNQYXNzd29yZFByb3RlY3RlZCwgaW52aXRhdGlvbnBhc3MsIHZhbGlkLAorCQkJCWZyb21EYXRlLCB0b0RhdGUsIGxhbmd1YWdlX2lkLCBzZW5kTWFpbCk7CisJfQorCisJcHVibGljIExpc3Q8Um9vbVJldHVybj4gZ2V0Um9vbXNXaXRoQ3VycmVudFVzZXJzQnlMaXN0KFN0cmluZyBTSUQsCisJCQlpbnQgc3RhcnQsIGludCBtYXgsIFN0cmluZyBvcmRlcmJ5LCBib29sZWFuIGFzYykgdGhyb3dzIEF4aXNGYXVsdCB7CisJCXJldHVybiBnZXRCZWFuKFJvb21XZWJTZXJ2aWNlLmNsYXNzKS5nZXRSb29tc1dpdGhDdXJyZW50VXNlcnNCeUxpc3QoU0lELAorCQkJCXN0YXJ0LCBtYXgsIG9yZGVyYnksIGFzYyk7CisJfQorCisJcHVibGljIExpc3Q8Um9vbVJldHVybj4gZ2V0Um9vbXNXaXRoQ3VycmVudFVzZXJzQnlMaXN0QW5kVHlwZShTdHJpbmcgU0lELAorCQkJaW50IHN0YXJ0LCBpbnQgbWF4LCBTdHJpbmcgb3JkZXJieSwgYm9vbGVhbiBhc2MsCisJCQlTdHJpbmcgZXh0ZXJuYWxSb29tVHlwZSkgdGhyb3dzIEF4aXNGYXVsdCB7CisJCXJldHVybiBnZXRCZWFuKFJvb21XZWJTZXJ2aWNlLmNsYXNzKQorCQkJCS5nZXRSb29tc1dpdGhDdXJyZW50VXNlcnNCeUxpc3RBbmRUeXBlKFNJRCwgc3RhcnQsIG1heCwKKwkJCQkJCW9yZGVyYnksIGFzYywgZXh0ZXJuYWxSb29tVHlwZSk7CisJfQorCisJcHVibGljIExvbmcgYWRkUm9vbVdpdGhNb2RlcmF0aW9uQW5kRXh0ZXJuYWxUeXBlQW5kU3RhcnRFbmQoU3RyaW5nIFNJRCwKKwkJCVN0cmluZyBuYW1lLCBMb25nIHJvb210eXBlc19pZCwgU3RyaW5nIGNvbW1lbnQsCisJCQlMb25nIG51bWJlck9mUGFydGl6aXBhbnRzLCBCb29sZWFuIGlzcHVibGljLCBCb29sZWFuIGFwcG9pbnRtZW50LAorCQkJQm9vbGVhbiBpc0RlbW9Sb29tLCBJbnRlZ2VyIGRlbW9UaW1lLCBCb29sZWFuIGlzTW9kZXJhdGVkUm9vbSwKKwkJCVN0cmluZyBleHRlcm5hbFJvb21UeXBlLCBTdHJpbmcgdmFsaWRGcm9tRGF0ZSwKKwkJCVN0cmluZyB2YWxpZEZyb21UaW1lLCBTdHJpbmcgdmFsaWRUb0RhdGUsIFN0cmluZyB2YWxpZFRvVGltZSwKKwkJCUJvb2xlYW4gaXNQYXNzd29yZFByb3RlY3RlZCwgU3RyaW5nIHBhc3N3b3JkLCBMb25nIHJlbWluZGVyVHlwZUlkLAorCQkJU3RyaW5nIHJlZGlyZWN0VVJMKSB0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJcmV0dXJuIGdldEJlYW4oUm9vbVdlYlNlcnZpY2UuY2xhc3MpCisJCQkJLmFkZFJvb21XaXRoTW9kZXJhdGlvbkFuZEV4dGVybmFsVHlwZUFuZFN0YXJ0RW5kKFNJRCwgbmFtZSwKKwkJCQkJCXJvb210eXBlc19pZCwgY29tbWVudCwgbnVtYmVyT2ZQYXJ0aXppcGFudHMsIGlzcHVibGljLAorCQkJCQkJYXBwb2ludG1lbnQsIGlzRGVtb1Jvb20sIGRlbW9UaW1lLCBpc01vZGVyYXRlZFJvb20sCisJCQkJCQlleHRlcm5hbFJvb21UeXBlLCB2YWxpZEZyb21EYXRlLCB2YWxpZEZyb21UaW1lLAorCQkJCQkJdmFsaWRUb0RhdGUsIHZhbGlkVG9UaW1lLCBpc1Bhc3N3b3JkUHJvdGVjdGVkLAorCQkJCQkJcGFzc3dvcmQsIHJlbWluZGVyVHlwZUlkLCByZWRpcmVjdFVSTCk7CisJfQorCisJcHVibGljIExvbmcgYWRkTWVldGluZ01lbWJlclJlbWluZFRvUm9vbShTdHJpbmcgU0lELCBMb25nIHJvb21faWQsCisJCQlTdHJpbmcgZmlyc3RuYW1lLCBTdHJpbmcgbGFzdG5hbWUsIFN0cmluZyBlbWFpbCwgU3RyaW5nIHBob25lLAorCQkJU3RyaW5nIGJhc2VVcmwsIExvbmcgbGFuZ3VhZ2VfaWQpIHRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihSb29tV2ViU2VydmljZS5jbGFzcykuYWRkTWVldGluZ01lbWJlclJlbWluZFRvUm9vbShTSUQsCisJCQkJcm9vbV9pZCwgZmlyc3RuYW1lLCBsYXN0bmFtZSwgZW1haWwsIHBob25lLCBsYW5ndWFnZV9pZCk7CisJfQorCisJcHVibGljIExvbmcgYWRkRXh0ZXJuYWxNZWV0aW5nTWVtYmVyUmVtaW5kVG9Sb29tKFN0cmluZyBTSUQsIExvbmcgcm9vbV9pZCwKKwkJCVN0cmluZyBmaXJzdG5hbWUsIFN0cmluZyBsYXN0bmFtZSwgU3RyaW5nIGVtYWlsLCBTdHJpbmcgYmFzZVVybCwKKwkJCUxvbmcgbGFuZ3VhZ2VfaWQsIFN0cmluZyBqTmFtZVRpbWVab25lLCBTdHJpbmcgaW52aXRvck5hbWUpCisJCQl0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJcmV0dXJuIGdldEJlYW4oUm9vbVdlYlNlcnZpY2UuY2xhc3MpLmFkZEV4dGVybmFsTWVldGluZ01lbWJlclJlbWluZFRvUm9vbSgKKwkJCQlTSUQsIHJvb21faWQsIGZpcnN0bmFtZSwgbGFzdG5hbWUsIGVtYWlsLCBiYXNlVXJsLCBsYW5ndWFnZV9pZCwKKwkJCQlqTmFtZVRpbWVab25lLCBpbnZpdG9yTmFtZSk7CisJfQorCisJcHVibGljIGludCBjbG9zZVJvb20oU3RyaW5nIFNJRCwgTG9uZyByb29tX2lkLCBCb29sZWFuIHN0YXR1cykKKwkJCXRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihSb29tV2ViU2VydmljZS5jbGFzcykuY2xvc2VSb29tKFNJRCwgcm9vbV9pZCwgc3RhdHVzKTsKKwl9CisKKwlwdWJsaWMgaW50IG1vZGlmeVJvb21QYXJhbWV0ZXIoU3RyaW5nIFNJRCwgTG9uZyByb29tX2lkLCBTdHJpbmcgcGFyYW1OYW1lLAorCQkJU3RyaW5nIHBhcmFtVmFsdWUpIHRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihSb29tV2ViU2VydmljZS5jbGFzcykubW9kaWZ5Um9vbVBhcmFtZXRlcihTSUQsIHJvb21faWQsCisJCQkJcGFyYW1OYW1lLCBwYXJhbVZhbHVlKTsKKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9heGlzL3NlcnZpY2VzL1NlcnZlcldlYlNlcnZpY2UuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9heGlzL3NlcnZpY2VzL1NlcnZlcldlYlNlcnZpY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjE4NTk5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2F4aXMvc2VydmljZXMvU2VydmVyV2ViU2VydmljZS5qYXZhCkBAIC0wLDAgKzEsMTc5IEBACisvKg0KKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgKiB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmF4aXMuc2VydmljZXM7DQorDQoraW1wb3J0IG9yZy5hcGFjaGUuYXhpczIuQXhpc0ZhdWx0Ow0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuQXV0aExldmVsVXRpbDsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5TZXNzaW9uZGF0YURhbzsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5kYW8uU2VydmVyRGFvOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuVXNlck1hbmFnZXI7DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLlNlcnZlcjsNCitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsNCitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uQXV0b3dpcmVkOw0KKw0KKy8qKg0KKyAqIFRoaXMgY2xhc3MgcHJvdmlkZXMgbWV0aG9kIGltcGxlbWVudGF0aW9ucyBuZWNlc3NhcnkgZm9yIE9NIHRvIG1hbmFnZSBzZXJ2ZXJzDQorICogcGFydGljaXBhdGluZyBpbiBjbHVzdGVyLg0KKyAqIA0KKyAqIEBhdXRob3Igc29sb21heCwgc2ViYXdhZ25lcg0KKyAqIEB3ZWJzZXJ2aWNlIFNlcnZlclNlcnZpY2UNCisgKiANCisgKi8NCitwdWJsaWMgY2xhc3MgU2VydmVyV2ViU2VydmljZSB7DQorCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoDQorCQkJU2VydmVyV2ViU2VydmljZS5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOw0KKw0KKwlAQXV0b3dpcmVkDQorCXByaXZhdGUgU2Vzc2lvbmRhdGFEYW8gc2Vzc2lvbmRhdGFEYW87DQorCUBBdXRvd2lyZWQNCisJcHJpdmF0ZSBVc2VyTWFuYWdlciB1c2VyTWFuYWdlcjsNCisJQEF1dG93aXJlZA0KKwlwcml2YXRlIEF1dGhMZXZlbFV0aWwgYXV0aExldmVsVXRpbDsNCisJQEF1dG93aXJlZA0KKwlwcml2YXRlIFNlcnZlckRhbyBzZXJ2ZXJzRGFvOw0KKw0KKwkvKioNCisJICogTWV0aG9kIHRvIHJldHJpZXZlIHRoZSBsaXN0IG9mIHRoZSBzZXJ2ZXJzIHBhcnRpY2lwYXRpbmcgaW4gY2x1c3Rlcg0KKwkgKiANCisJICogQHBhcmFtIFNJRA0KKwkgKiAgICAgICAgICAgIC0gc2Vzc2lvbiBpZCB0byBpZGVudGlmeSB0aGUgdXNlciBtYWtpbmcgcmVxdWVzdA0KKwkgKiBAcGFyYW0gc3RhcnQNCisJICogICAgICAgICAgICAtIHNlcnZlciBpbmRleCB0byBzdGFydCB3aXRoDQorCSAqIEBwYXJhbSBtYXgNCisJICogICAgICAgICAgICAtIE1heGltdW0gc2VydmVyIGNvdW50DQorCSAqIEByZXR1cm4gVGhlIGxpc3Qgb2Ygc2VydmVycyBwYXJ0aWNpcGF0aW5nIGluIGNsdXN0ZXINCisJICovDQorCXB1YmxpYyBTZXJ2ZXJbXSBnZXRTZXJ2ZXJzKFN0cmluZyBTSUQsIGludCBzdGFydCwgaW50IG1heCkgdGhyb3dzIEF4aXNGYXVsdCB7DQorCQlsb2cuZGVidWcoImdldFNlcnZlcnMgZW50ZXIiKTsNCisJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsNCisJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOw0KKw0KKwkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tXZWJTZXJ2aWNlTGV2ZWwodXNlcl9sZXZlbCkpIHsNCisJCQlyZXR1cm4gc2VydmVyc0Rhby5nZXQoc3RhcnQsIG1heCkudG9BcnJheShuZXcgU2VydmVyWzBdKTsNCisJCX0gZWxzZSB7DQorCQkJbG9nLndhcm4oIkluc3VmZmlzaWVudCBwZXJtaXNzaW9ucyIpOw0KKwkJCXJldHVybiBudWxsOw0KKwkJfQ0KKwl9DQorDQorCS8qKg0KKwkgKiBNZXRob2QgdG8gcmV0cmlldmUgdGhlIHRvdGFsIGNvdW50IG9mIHRoZSBzZXJ2ZXJzIHBhcnRpY2lwYXRpbmcgaW4NCisJICogY2x1c3Rlcg0KKwkgKiANCisJICogQHBhcmFtIFNJRA0KKwkgKiAgICAgICAgICAgIC0gc2Vzc2lvbiBpZCB0byBpZGVudGlmeSB0aGUgdXNlciBtYWtpbmcgcmVxdWVzdA0KKwkgKiBAcmV0dXJuIHRvdGFsIGNvdW50IG9mIHRoZSBzZXJ2ZXJzIHBhcnRpY2lwYXRpbmcgaW4gY2x1c3Rlcg0KKwkgKi8NCisJcHVibGljIGludCBnZXRTZXJ2ZXJDb3VudChTdHJpbmcgU0lEKSB0aHJvd3MgQXhpc0ZhdWx0IHsNCisJCWxvZy5kZWJ1ZygiZ2V0U2VydmVyQ291bnQgZW50ZXIiKTsNCisJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsNCisJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOw0KKw0KKwkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tXZWJTZXJ2aWNlTGV2ZWwodXNlcl9sZXZlbCkpIHsNCisJCQlyZXR1cm4gKGludCkgc2VydmVyc0Rhby5jb3VudCgpOw0KKwkJfSBlbHNlIHsNCisJCQlsb2cud2FybigiSW5zdWZmaXNpZW50IHBlcm1pc3Npb25zIik7DQorCQkJcmV0dXJuIC0xOw0KKwkJfQ0KKwl9DQorDQorCS8qKg0KKwkgKiBNZXRob2QgdG8gYWRkL3VwZGF0ZSBzZXJ2ZXINCisJICogDQorCSAqIEBwYXJhbSBTSUQNCisJICogICAgICAgICAgICAtIHNlc3Npb24gaWQgdG8gaWRlbnRpZnkgdGhlIHVzZXIgbWFraW5nIHJlcXVlc3QNCisJICogQHBhcmFtIGlkDQorCSAqICAgICAgICAgICAgLSB0aGUgaWQgb2YgdGhlIHNlcnZlciB0byBzYXZlDQorCSAqIEBwYXJhbSBuYW1lDQorCSAqICAgICAgICAgICAgLSB0aGUgbmFtZSBvZiB0aGUgc2VydmVyIHRvIHNhdmUNCisJICogQHBhcmFtIGFkZHJlc3MNCisJICogICAgICAgICAgICAtIHRoZSBhZGRyZXNzKEROUyBuYW1lIG9yIElQKSBvZiB0aGUgc2VydmVyIHRvIHNhdmUNCisJICogQHBhcmFtIHBvcnQNCisJICogICAgICAgICAgICAtIHRoZSBodHRwIHBvcnQgb2YgdGhlIHNsYXZlDQorCSAqIEBwYXJhbSB1c2VyDQorCSAqICAgICAgICAgICAgLSBSRVNUIHVzZXIgdG8gYWNjZXNzIHRoZSBzbGF2ZQ0KKwkgKiBAcGFyYW0gcGFzcw0KKwkgKiAgICAgICAgICAgIC0gUkVTVCBwYXNzIHRvIGFjY2VzcyB0aGUgc2xhdmUNCisJICogQHBhcmFtIHdlYmFwcA0KKwkgKiAgICAgICAgICAgIC0gd2ViYXBwIG5hbWUgb2YgdGhlIE9wZW5NZWV0aW5ncyBpbnN0YW5jZQ0KKwkgKiBAcGFyYW0gcHJvdG9jb2wNCisJICogICAgICAgICAgICAtIHByb3RvY29sIHRvIGFjY2VzcyB0aGUgT3Blbk1lZXRpbmdzIGluc3RhbmNlDQorCSAqIEBwYXJhbSBhY3RpdmUNCisJICogICAgICAgICAgICAtIGlmIHRoZSBzZXJ2ZXIgY3VycmVudGx5IHBhcnRpY2lwYXRlcyBpbiB0aGUgY2x1c3RlciBvciBub3QNCisJICogQHBhcmFtIGNvbW1lbnQNCisJICogICAgICAgICAgICAtIGNvbW1lbnQgZm9yIHRoZSBzZXJ2ZXINCisJICogQHJldHVybiB0aGUgaWQgb2Ygc2F2ZWQgc2VydmVyDQorCSAqLw0KKwlwdWJsaWMgbG9uZyBzYXZlU2VydmVyKFN0cmluZyBTSUQsIGxvbmcgaWQsIFN0cmluZyBuYW1lLCBTdHJpbmcgYWRkcmVzcywNCisJCQlpbnQgcG9ydCwgU3RyaW5nIHVzZXIsIFN0cmluZyBwYXNzLCBTdHJpbmcgd2ViYXBwLCBTdHJpbmcgcHJvdG9jb2wsDQorCQkJQm9vbGVhbiBhY3RpdmUsIFN0cmluZyBjb21tZW50KSB0aHJvd3MgQXhpc0ZhdWx0IHsNCisJCWxvZy5kZWJ1Zygic2F2ZVNlcnZlckNvdW50IGVudGVyIik7DQorCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7DQorCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsNCisNCisJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrV2ViU2VydmljZUxldmVsKHVzZXJfbGV2ZWwpKSB7DQorCQkJU2VydmVyIHMgPSBzZXJ2ZXJzRGFvLmdldChpZCk7DQorCQkJaWYgKHMgPT0gbnVsbCkgew0KKwkJCQlzID0gbmV3IFNlcnZlcigpOw0KKwkJCX0NCisJCQlzLnNldE5hbWUobmFtZSk7DQorCQkJcy5zZXRBZGRyZXNzKGFkZHJlc3MpOw0KKwkJCXMuc2V0UG9ydChwb3J0KTsNCisJCQlzLnNldFVzZXIodXNlcik7DQorCQkJcy5zZXRQYXNzKHBhc3MpOw0KKwkJCXMuc2V0V2ViYXBwKHdlYmFwcCk7DQorCQkJcy5zZXRQcm90b2NvbChwcm90b2NvbCk7DQorCQkJcy5zZXRBY3RpdmUoYWN0aXZlKTsNCisJCQlzLnNldENvbW1lbnQoY29tbWVudCk7DQorCQkJcmV0dXJuIHNlcnZlcnNEYW8udXBkYXRlKHMsIHVzZXJzX2lkKS5nZXRJZCgpOw0KKwkJfSBlbHNlIHsNCisJCQlsb2cud2FybigiSW5zdWZmaXNpZW50IHBlcm1pc3Npb25zIik7DQorCQkJcmV0dXJuIC0xOw0KKwkJfQ0KKwl9DQorDQorCS8qKg0KKwkgKiBNZXRob2QgdG8gZGVsZXRlIHNlcnZlcg0KKwkgKiANCisJICogQHBhcmFtIFNJRA0KKwkgKiAgICAgICAgICAgIC0gc2Vzc2lvbiBpZCB0byBpZGVudGlmeSB0aGUgdXNlciBtYWtpbmcgcmVxdWVzdA0KKwkgKiBAcGFyYW0gaWQNCisJICogICAgICAgICAgICAtIHRoZSBpZCBvZiB0aGUgc2VydmVyIHRvIGRlbGV0ZQ0KKwkgKiBAcmV0dXJuIHRydWUgaWYgdGhlIHNlcnZlciB3YXMgZGVsZXRlZCwgZmFsc2Ugb3RoZXJ3aXNlDQorCSAqLw0KKwlwdWJsaWMgYm9vbGVhbiBkZWxldGVTZXJ2ZXIoU3RyaW5nIFNJRCwgbG9uZyBpZCkgdGhyb3dzIEF4aXNGYXVsdCB7DQorCQlsb2cuZGVidWcoInNhdmVTZXJ2ZXJDb3VudCBlbnRlciIpOw0KKwkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOw0KKwkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7DQorDQorCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1dlYlNlcnZpY2VMZXZlbCh1c2VyX2xldmVsKSkgew0KKwkJCVNlcnZlciBzID0gc2VydmVyc0Rhby5nZXQoaWQpOw0KKwkJCWlmIChzICE9IG51bGwpIHsNCisJCQkJc2VydmVyc0Rhby5kZWxldGUocywgdXNlcnNfaWQpOw0KKwkJCQlyZXR1cm4gdHJ1ZTsNCisJCQl9DQorCQl9IGVsc2Ugew0KKwkJCWxvZy53YXJuKCJJbnN1ZmZpc2llbnQgcGVybWlzc2lvbnMiKTsNCisJCX0NCisJCXJldHVybiBmYWxzZTsNCisJfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvYXhpcy9zZXJ2aWNlcy9TZXJ2ZXJXZWJTZXJ2aWNlRmFjYWRlLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvYXhpcy9zZXJ2aWNlcy9TZXJ2ZXJXZWJTZXJ2aWNlRmFjYWRlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTU0NDdjMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9heGlzL3NlcnZpY2VzL1NlcnZlcldlYlNlcnZpY2VGYWNhZGUuamF2YQpAQCAtMCwwICsxLDYwIEBACisvKg0KKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgKiB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmF4aXMuc2VydmljZXM7DQorDQoraW1wb3J0IG9yZy5hcGFjaGUuYXhpczIuQXhpc0ZhdWx0Ow0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5TZXJ2ZXI7DQorDQorcHVibGljIGNsYXNzIFNlcnZlcldlYlNlcnZpY2VGYWNhZGUgZXh0ZW5kcyBCYXNlV2ViU2VydmljZSB7DQorDQorCS8qKg0KKwkgKiBQcm94eSBtZXRob2QgcGxlYXNlIHNlZQ0KKwkgKiB7QGxpbmsgU2VydmVyV2ViU2VydmljZSNnZXRTZXJ2ZXJzKFN0cmluZywgaW50LCBpbnQpfQ0KKwkgKi8NCisJcHVibGljIFNlcnZlcltdIGdldFNlcnZlcnMoU3RyaW5nIFNJRCwgaW50IHN0YXJ0LCBpbnQgbWF4KSB0aHJvd3MgQXhpc0ZhdWx0IHsNCisJCXJldHVybiBnZXRCZWFuKFNlcnZlcldlYlNlcnZpY2UuY2xhc3MpLmdldFNlcnZlcnMoU0lELCBzdGFydCwgbWF4KTsNCisJfQ0KKw0KKwkvKioNCisJICogUHJveHkgbWV0aG9kIHBsZWFzZSBzZWUge0BsaW5rIFNlcnZlcldlYlNlcnZpY2UjZ2V0U2VydmVyQ291bnQoU3RyaW5nKX0NCisJICovDQorCXB1YmxpYyBpbnQgZ2V0U2VydmVyQ291bnQoU3RyaW5nIFNJRCkgdGhyb3dzIEF4aXNGYXVsdCB7DQorCQlyZXR1cm4gZ2V0QmVhbihTZXJ2ZXJXZWJTZXJ2aWNlLmNsYXNzKS5nZXRTZXJ2ZXJDb3VudChTSUQpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBQcm94eSBtZXRob2QgcGxlYXNlIHNlZQ0KKwkgKiB7QGxpbmsgU2VydmVyV2ViU2VydmljZSNzYXZlU2VydmVyKFN0cmluZywgbG9uZywgU3RyaW5nLCBTdHJpbmcsIGludCwgU3RyaW5nLCBTdHJpbmcsIFN0cmluZywgU3RyaW5nLCBCb29sZWFuLCBTdHJpbmcpfQ0KKwkgKi8NCisJcHVibGljIGxvbmcgc2F2ZVNlcnZlcihTdHJpbmcgU0lELCBsb25nIGlkLCBTdHJpbmcgbmFtZSwgU3RyaW5nIGFkZHJlc3MsDQorCQkJaW50IHBvcnQsIFN0cmluZyB1c2VyLCBTdHJpbmcgcGFzcywgU3RyaW5nIHdlYmFwcCwgU3RyaW5nIHByb3RvY29sLA0KKwkJCUJvb2xlYW4gYWN0aXZlLCBTdHJpbmcgY29tbWVudCkgdGhyb3dzIEF4aXNGYXVsdCB7DQorCQlyZXR1cm4gZ2V0QmVhbihTZXJ2ZXJXZWJTZXJ2aWNlLmNsYXNzKS5zYXZlU2VydmVyKFNJRCwgaWQsIG5hbWUsIGFkZHJlc3MsIHBvcnQsDQorCQkJCXVzZXIsIHBhc3MsIHdlYmFwcCwgcHJvdG9jb2wsIGFjdGl2ZSwgY29tbWVudCk7DQorCX0NCisNCisJLyoqDQorCSAqIFByb3h5IG1ldGhvZCBwbGVhc2Ugc2VlDQorCSAqIHtAbGluayBTZXJ2ZXJXZWJTZXJ2aWNlI2RlbGV0ZVNlcnZlcihTdHJpbmcsIGxvbmcpfQ0KKwkgKi8NCisJcHVibGljIGJvb2xlYW4gZGVsZXRlU2VydmVyKFN0cmluZyBTSUQsIGxvbmcgaWQpIHRocm93cyBBeGlzRmF1bHQgew0KKwkJcmV0dXJuIGdldEJlYW4oU2VydmVyV2ViU2VydmljZS5jbGFzcykuZGVsZXRlU2VydmVyKFNJRCwgaWQpOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9heGlzL3NlcnZpY2VzL1VzZXJXZWJTZXJ2aWNlLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvYXhpcy9zZXJ2aWNlcy9Vc2VyV2ViU2VydmljZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjYmZjZTMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvYXhpcy9zZXJ2aWNlcy9Vc2VyV2ViU2VydmljZS5qYXZhCkBAIC0wLDAgKzEsMTMyOSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5heGlzLnNlcnZpY2VzOworCitpbXBvcnQgamF2YS51dGlsLkRhdGU7CisKK2ltcG9ydCBvcmcuYXBhY2hlLmF4aXMyLkF4aXNGYXVsdDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5BdXRoTGV2ZWxVdGlsOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuRmllbGRNYW5hZ2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuU2Vzc2lvbmRhdGFEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5kYW8uQ29uZmlndXJhdGlvbkRhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLmRhby5FcnJvckRhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLmRhby5TT0FQTG9naW5EYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iZWFucy5iYXNpYy5FcnJvclJlc3VsdDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJlYW5zLmJhc2ljLlNlYXJjaFJlc3VsdDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuT3JnYW5pc2F0aW9uTWFuYWdlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuVXNlck1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLmRhby5Vc2Vyc0RhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5FcnJvclZhbHVlOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLlJlbW90ZVNlc3Npb25PYmplY3Q7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuU2Vzc2lvbmRhdGE7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMubGFuZy5GaWVsZGxhbmd1YWdlc3ZhbHVlczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlVzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucmVtb3RlLk1haW5TZXJ2aWNlOworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5BdXRvd2lyZWQ7CisKK2ltcG9ydCBjb20udGhvdWdodHdvcmtzLnhzdHJlYW0uWFN0cmVhbTsKK2ltcG9ydCBjb20udGhvdWdodHdvcmtzLnhzdHJlYW0uaW8ueG1sLkRvbURyaXZlcjsKKworLyoqCisgKiAKKyAqIFRoZSBTZXJ2aWNlIGNvbnRhaW5zIG1ldGhvZHMgdG8gbG9naW4gYW5kIGNyZWF0ZSBoYXNoIHRvIGRpcmVjdGx5IGVudGVyCisgKiBjb25mZXJlbmNlIHJvb21zLCByZWNvcmRpbmdzIG9yIHRoZSBhcHBsaWNhdGlvbiBpbiBnZW5lcmFsCisgKiAKKyAqIEBhdXRob3Igc2ViYXdhZ25lcgorICogQHdlYnNlcnZpY2UgVXNlclNlcnZpY2UKKyAqIAorICovCitwdWJsaWMgY2xhc3MgVXNlcldlYlNlcnZpY2UgeworCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcigKKwkJCVVzZXJXZWJTZXJ2aWNlLmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBTZXNzaW9uZGF0YURhbyBzZXNzaW9uZGF0YURhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBDb25maWd1cmF0aW9uRGFvIGNvbmZpZ3VyYXRpb25EYW87CisJQEF1dG93aXJlZAorCXByaXZhdGUgVXNlck1hbmFnZXIgdXNlck1hbmFnZW1lbnQ7CisJQEF1dG93aXJlZAorCXByaXZhdGUgRmllbGRNYW5hZ2VyIGZpZWxkTWFuYWdlcjsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBFcnJvckRhbyBlcnJvck1hbmFnZW1lbnQ7CisJQEF1dG93aXJlZAorCXByaXZhdGUgT3JnYW5pc2F0aW9uTWFuYWdlciBvcmdhbmlzYXRpb25NYW5hZ2VyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFNPQVBMb2dpbkRhbyBzb2FwTG9naW5EYW87CisJQEF1dG93aXJlZAorCXByaXZhdGUgVXNlcnNEYW8gdXNlcnNEYW87CisJQEF1dG93aXJlZAorCXByaXZhdGUgTWFpblNlcnZpY2UgbWFpblNlcnZpY2U7CisJQEF1dG93aXJlZAorCXByaXZhdGUgQXV0aExldmVsVXRpbCBhdXRoTGV2ZWxVdGlsOworCisJLyoqCisJICogbG9hZCB0aGlzIHNlc3Npb24gaWQgYmVmb3JlIGRvaW5nIGFueXRoaW5nIGVsc2UgUmV0dXJucyBhbiBPYmplY3Qgb2YgVHlwZQorCSAqIFNlc3Npb25kYXRhLCB0aGlzIGNvbnRhaW5zIGEgc2Vzc2lvbklkLCB1c2UgdGhhdCBzZXNzaW9uSWQgaW4gYWxsIE1ldGhvZHMKKwkgKiAKKwkgKiBAcmV0dXJuIC0gY3JlYXRlcyBuZXcgc2Vzc2lvbgorCSAqLworCXB1YmxpYyBTZXNzaW9uZGF0YSBnZXRTZXNzaW9uKCkgeworCQlsb2cuZGVidWcoIlNQUklORyBMT0FERUQgZ2V0U2Vzc2lvbiAtLSAiKTsKKwkJcmV0dXJuIG1haW5TZXJ2aWNlLmdldHNlc3Npb25kYXRhKCk7CisJfQorCisJLyoqCisJICogdXRoIGZ1bmN0aW9uLCB1c2UgdGhlIFNJRCB5b3UgZ2V0IGJ5IGdldFNlc3Npb24sIHJldHVybiBwb3NpdGl2ZSBtZWFucworCSAqIGxvZ2dlZC1pbiwgaWYgbmVnYXRpdmUgaXRzIGFuIEVycm9yQ29kZSwgeW91IGhhdmUgdG8gaW52b2tlIHRoZSBNZXRob2QKKwkgKiBnZXRFcnJvckJ5Q29kZSB0byBnZXQgdGhlIFRleHQtRGVzY3JpcHRpb24gb2YgdGhhdCBFcnJvckNvZGUKKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogICAgICAgICAgICBUaGUgU0lEIGZyb20gZ2V0U2Vzc2lvbgorCSAqIEBwYXJhbSB1c2VybmFtZQorCSAqICAgICAgICAgICAgVXNlcm5hbWUgZnJvbSBPcGVuTWVldGluZ3MsIHRoZSB1c2VyIGhhcyB0byBoYXZlIEFkbWluLXJpZ2h0cworCSAqIEBwYXJhbSB1c2VycGFzcworCSAqICAgICAgICAgICAgVXNlcnBhc3MgZnJvbSBPcGVuTWVldGluZ3MKKwkgKiAgICAgICAgICAgIAorCSAqIEByZXR1cm4gLSBpZCBvZiB0aGUgbG9nZ2VkIGluIHVzZXIsIC0xIGluIGNhc2Ugb2YgdGhlIGVycm9yCisJICovCisJcHVibGljIExvbmcgbG9naW5Vc2VyKFN0cmluZyBTSUQsIFN0cmluZyB1c2VybmFtZSwgU3RyaW5nIHVzZXJwYXNzKQorCQkJdGhyb3dzIEF4aXNGYXVsdCB7CisJCXRyeSB7CisJCQlPYmplY3Qgb2JqID0gdXNlck1hbmFnZW1lbnQubG9naW5Vc2VyKFNJRCwgdXNlcm5hbWUsIHVzZXJwYXNzLAorCQkJCQludWxsLCBudWxsLCBmYWxzZSk7CisJCQlpZiAob2JqID09IG51bGwpIHsKKwkJCQlyZXR1cm4gbmV3IExvbmcoLTEpOworCQkJfQorCQkJU3RyaW5nIG9iak5hbWUgPSBvYmouZ2V0Q2xhc3MoKS5nZXROYW1lKCk7CisJCQlpZiAob2JqTmFtZS5lcXVhbHMoImphdmEubGFuZy5Mb25nIikpIHsKKwkJCQlyZXR1cm4gKExvbmcpIG9iajsKKwkJCX0gZWxzZSB7CisJCQkJcmV0dXJuIG5ldyBMb25nKDEpOworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltsb2dpblVzZXJdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbmV3IExvbmcoLTEpOworCX0KKworCS8qKgorCSAqIGxvYWRzIGFuIEVycm9yLU9iamVjdC4gSWYgYSBNZXRob2QgcmV0dXJucyBhIG5lZ2F0aXZlIFJlc3VsdCwgaXRzIGFuCisJICogRXJyb3ItaWQsIGl0IG5lZWRzIGEgbGFuZ3VhZ2VfaWQgdG8gc3BlY2lmeSBpbiB3aGljaCBsYW5ndWFnZSB5b3Ugd2FudCB0bworCSAqIGRpc3BsYXkvcmVhZCB0aGUgZXJyb3ItbWVzc2FnZS4gRW5nbGlzaCBoYXMgdGhlIExhbmd1YWdlLUlEIG9uZSwgZm9yCisJICogZGlmZmVyZW50IG9uZSBzZWUgdGhlIGxpc3Qgb2YgbGFuZ3VhZ2VzCisJICogCisJICogQHBhcmFtIFNJRAorCSAqICAgICAgICAgICAgVGhlIFNJRCBmcm9tIGdldFNlc3Npb24KKwkgKiBAcGFyYW0gZXJyb3JpZAorCSAqICAgICAgICAgICAgdGhlIGVycm9yIGlkIChuZWdhdGl2ZSBWYWx1ZSBoZXJlISkKKwkgKiBAcGFyYW0gbGFuZ3VhZ2VfaWQKKwkgKiAgICAgICAgICAgIFRoZSBpZCBvZiB0aGUgbGFuZ3VhZ2UKKwkgKiAgICAgICAgICAgIAorCSAqIEByZXR1cm4gLSBlcnJvciB3aXRoIHRoZSBjb2RlIGdpdmVuCisJICovCisJcHVibGljIEVycm9yUmVzdWx0IGdldEVycm9yQnlDb2RlKFN0cmluZyBTSUQsIGxvbmcgZXJyb3JpZCwgbG9uZyBsYW5ndWFnZV9pZCkgeworCQl0cnkgeworCQkJaWYgKGVycm9yaWQgPCAwKSB7CisJCQkJRXJyb3JWYWx1ZSBlVmFsdWVzID0gZXJyb3JNYW5hZ2VtZW50CisJCQkJCQkuZ2V0RXJyb3JWYWx1ZXNCeUlkKGVycm9yaWQgKiAoLTEpKTsKKwkJCQlpZiAoZVZhbHVlcyAhPSBudWxsKSB7CisJCQkJCUZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGVycm9yVmFsdWUgPSBmaWVsZE1hbmFnZXIKKwkJCQkJCQkuZ2V0RmllbGRCeUlkQW5kTGFuZ3VhZ2UoCisJCQkJCQkJCQllVmFsdWVzLmdldEZpZWxkdmFsdWVzX2lkKCksIGxhbmd1YWdlX2lkKTsKKwkJCQkJRmllbGRsYW5ndWFnZXN2YWx1ZXMgdHlwZVZhbHVlID0gZmllbGRNYW5hZ2VyCisJCQkJCQkJLmdldEZpZWxkQnlJZEFuZExhbmd1YWdlKGVycm9yTWFuYWdlbWVudAorCQkJCQkJCQkJLmdldEVycm9yVHlwZShlVmFsdWVzLmdldEVycm9ydHlwZV9pZCgpKQorCQkJCQkJCQkJLmdldEZpZWxkdmFsdWVzX2lkKCksIGxhbmd1YWdlX2lkKTsKKwkJCQkJaWYgKGVycm9yVmFsdWUgIT0gbnVsbCkgeworCQkJCQkJcmV0dXJuIG5ldyBFcnJvclJlc3VsdChlcnJvcmlkLCBlcnJvclZhbHVlLmdldFZhbHVlKCksCisJCQkJCQkJCXR5cGVWYWx1ZS5nZXRWYWx1ZSgpKTsKKwkJCQkJfQorCQkJCX0KKwkJCX0gZWxzZSB7CisJCQkJcmV0dXJuIG5ldyBFcnJvclJlc3VsdChlcnJvcmlkLAorCQkJCQkJIkVycm9yIC4uLiBwbGVhc2UgY2hlY2sgeW91ciBpbnB1dCIsICJFcnJvciIpOworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRFcnJvckJ5Q29kZV0gIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvKioKKwkgKiBBZGRzIGEgbmV3IFVzcmUgbGlrZSB0aHJvdWdoIHRoZSBGcm9udGVuZCwgYnV0IGFsc28gZG9lcyBhY3RpdmF0ZXMgdGhlCisJICogQWNjb3VudCBUbyBkbyBTU08gc2VlIHRoZSBtZXRob2RzIHRvIGNyZWF0ZSBhIGhhc2ggYW5kIHVzZSB0aG9zZSBvbmVzIQorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiAgICAgICAgICAgIFRoZSBTSUQgZnJvbSBnZXRTZXNzaW9uCisJICogQHBhcmFtIHVzZXJuYW1lCisJICogICAgICAgICAgICBhbnkgdXNlcm5hbWUKKwkgKiBAcGFyYW0gdXNlcnBhc3MKKwkgKiAgICAgICAgICAgIGFueSB1c2VycGFzcworCSAqIEBwYXJhbSBsYXN0bmFtZQorCSAqICAgICAgICAgICAgYW55IGxhc3RuYW1lCisJICogQHBhcmFtIGZpcnN0bmFtZQorCSAqICAgICAgICAgICAgYW55IGZpcnN0bmFtZQorCSAqIEBwYXJhbSBlbWFpbAorCSAqICAgICAgICAgICAgYW55IGVtYWlsCisJICogQHBhcmFtIGFkZGl0aW9uYWxuYW1lCisJICogICAgICAgICAgICBhbnkgYWRkaXRpb25hbG5hbWUKKwkgKiBAcGFyYW0gc3RyZWV0CisJICogICAgICAgICAgICBhbnkgc3RyZWV0CisJICogQHBhcmFtIHppcAorCSAqICAgICAgICAgICAgYW55IHppcAorCSAqIEBwYXJhbSBmYXgKKwkgKiAgICAgICAgICAgIGFueSBmYXgKKwkgKiBAcGFyYW0gc3RhdGVzX2lkCisJICogICAgICAgICAgICBhIHZhbGlkIHN0YXRlc19pZAorCSAqIEBwYXJhbSB0b3duCisJICogICAgICAgICAgICBhbnkgdG93bgorCSAqIEBwYXJhbSBsYW5ndWFnZV9pZAorCSAqICAgICAgICAgICAgdGhlIGxhbmd1YWdlX2lkCisJICogQHBhcmFtIGJhc2VVUkwKKwkgKiAgICAgICAgICAgIHRoZSBiYXNlVVJMIGlzIG5lZWRlZCB0byBzZW5kIHRoZSBJbml0aWFsIEVtYWlsIGNvcnJlY3RseSB0bworCSAqICAgICAgICAgICAgdGhhdCBVc2VyLCBvdGhlcndpc2UgdGhlIExpbmsgaW4gdGhlIEVNYWlsIHRoYXQgdGhlIG5ldyBVc2VyCisJICogICAgICAgICAgICB3aWxsIHJldmVpdmUgaXMgbm90IHZhbGlkCisJICogICAgICAgICAgICAKKwkgKiBAcmV0dXJuIC0gaWQgb2YgdGhlIHVzZXIgYWRkZWQgb3IgZXJyb3IgY29kZQorCSAqIEB0aHJvd3MgQXhpc0ZhdWx0CisJICovCisJcHVibGljIExvbmcgYWRkTmV3VXNlcihTdHJpbmcgU0lELCBTdHJpbmcgdXNlcm5hbWUsIFN0cmluZyB1c2VycGFzcywKKwkJCVN0cmluZyBsYXN0bmFtZSwgU3RyaW5nIGZpcnN0bmFtZSwgU3RyaW5nIGVtYWlsLAorCQkJU3RyaW5nIGFkZGl0aW9uYWxuYW1lLCBTdHJpbmcgc3RyZWV0LCBTdHJpbmcgemlwLCBTdHJpbmcgZmF4LAorCQkJbG9uZyBzdGF0ZXNfaWQsIFN0cmluZyB0b3duLCBsb25nIGxhbmd1YWdlX2lkLCBTdHJpbmcgYmFzZVVSTCkKKwkJCXRocm93cyBBeGlzRmF1bHQgeworCQl0cnkgeworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZW1lbnQuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrV2ViU2VydmljZUxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlTdHJpbmcgak5hbWVfdGltZVpvbmUgPSBjb25maWd1cmF0aW9uRGFvLmdldENvbmZWYWx1ZSgiZGVmYXVsdC50aW1lem9uZSIsIFN0cmluZy5jbGFzcywgIiIpOworCisJCQkJTG9uZyB1c2VyX2lkID0gdXNlck1hbmFnZW1lbnQucmVnaXN0ZXJVc2VyKHVzZXJuYW1lLCB1c2VycGFzcywKKwkJCQkJCWxhc3RuYW1lLCBmaXJzdG5hbWUsIGVtYWlsLCBuZXcgRGF0ZSgpLCBzdHJlZXQsCisJCQkJCQlhZGRpdGlvbmFsbmFtZSwgZmF4LCB6aXAsIHN0YXRlc19pZCwgdG93biwgbGFuZ3VhZ2VfaWQsCisJCQkJCQkiIiwgZmFsc2UsIGJhc2VVUkwsIHRydWUsIC8vIGdlbmVyYXRlIFNJUCBEYXRhIGlmIHRoZSBjb25maWcgaXMgZW5hYmxlZAorCQkJCQkJak5hbWVfdGltZVpvbmUpOworCisJCQkJaWYgKHVzZXJfaWQgPT0gbnVsbCB8fCB1c2VyX2lkIDwgMCkgeworCQkJCQlyZXR1cm4gdXNlcl9pZDsKKwkJCQl9CisKKwkJCQlVc2VyIHVzZXIgPSB1c2VyTWFuYWdlbWVudC5nZXRVc2VyQnlJZCh1c2VyX2lkKTsKKworCQkJCS8vIGFjdGl2YXRlIHRoZSBVc2VyCisJCQkJdXNlci5zZXRTdGF0dXMoMSk7CisJCQkJdXNlci5zZXRVcGRhdGV0aW1lKG5ldyBEYXRlKCkpOworCisJCQkJdXNlck1hbmFnZW1lbnQudXBkYXRlVXNlcih1c2VyKTsKKworCQkJCXJldHVybiB1c2VyX2lkOworCisJCQl9IGVsc2UgeworCQkJCXJldHVybiBuZXcgTG9uZygtMjYpOworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoInNldFVzZXJPYmplY3QiLCBlcnIpOworCQkJdGhyb3cgbmV3IEF4aXNGYXVsdChlcnIuZ2V0TWVzc2FnZSgpKTsKKwkJfQorCX0KKworCS8qKgorCSAqIEFkZHMgYSBuZXcgVXNlciBsaWtlIHRocm91Z2ggdGhlIEZyb250ZW5kLCBidXQgYWxzbyBkb2VzIGFjdGl2YXRlcyB0aGUKKwkgKiBBY2NvdW50CisJICogCisJICogQHBhcmFtIFNJRAorCSAqICAgICAgICAgICAgVGhlIFNJRCBmcm9tIGdldFNlc3Npb24KKwkgKiBAcGFyYW0gdXNlcm5hbWUKKwkgKiAgICAgICAgICAgIGFueSB1c2VybmFtZQorCSAqIEBwYXJhbSB1c2VycGFzcworCSAqICAgICAgICAgICAgYW55IHVzZXJwYXNzCisJICogQHBhcmFtIGxhc3RuYW1lCisJICogICAgICAgICAgICBhbnkgbGFzdG5hbWUKKwkgKiBAcGFyYW0gZmlyc3RuYW1lCisJICogICAgICAgICAgICBhbnkgZmlyc3RuYW1lCisJICogQHBhcmFtIGVtYWlsCisJICogICAgICAgICAgICBhbnkgZW1haWwKKwkgKiBAcGFyYW0gYWRkaXRpb25hbG5hbWUKKwkgKiAgICAgICAgICAgIGFueSBhZGRpdGlvbmFsbmFtZQorCSAqIEBwYXJhbSBzdHJlZXQKKwkgKiAgICAgICAgICAgIGFueSBzdHJlZXQKKwkgKiBAcGFyYW0gemlwCisJICogICAgICAgICAgICBhbnkgemlwCisJICogQHBhcmFtIGZheAorCSAqICAgICAgICAgICAgYW55IGZheAorCSAqIEBwYXJhbSBzdGF0ZXNfaWQKKwkgKiAgICAgICAgICAgIGEgdmFsaWQgc3RhdGVzX2lkCisJICogQHBhcmFtIHRvd24KKwkgKiAgICAgICAgICAgIGFueSB0b3duCisJICogQHBhcmFtIGxhbmd1YWdlX2lkCisJICogICAgICAgICAgICB0aGUgbGFuZ3VhZ2VfaWQKKwkgKiBAcGFyYW0gYmFzZVVSTAorCSAqICAgICAgICAgICAgdGhlIGJhc2VVUkwgaXMgbmVlZGVkIHRvIHNlbmQgdGhlIEluaXRpYWwgRW1haWwgY29ycmVjdGx5IHRvCisJICogICAgICAgICAgICB0aGF0IFVzZXIsIG90aGVyd2lzZSB0aGUgTGluayBpbiB0aGUgRU1haWwgdGhhdCB0aGUgbmV3IFVzZXIKKwkgKiAgICAgICAgICAgIHdpbGwgcmV2ZWl2ZSBpcyBub3QgdmFsaWQKKwkgKiBAcGFyYW0gak5hbWVUaW1lWm9uZQorCSAqICAgICAgICAgICAgdGhlIG5hbWUgb2YgdGhlIHRpbWV6b25lIGZvciB0aGUgdXNlcgorCSAqICAgICAgICAgICAgCisJICogQHJldHVybiAtIGlkIG9mIHRoZSB1c2VyIGFkZGVkIG9yIHRoZSBlcnJvciBjb2RlCisJICogQHRocm93cyBBeGlzRmF1bHQKKwkgKi8KKwlwdWJsaWMgTG9uZyBhZGROZXdVc2VyV2l0aFRpbWVab25lKFN0cmluZyBTSUQsIFN0cmluZyB1c2VybmFtZSwKKwkJCVN0cmluZyB1c2VycGFzcywgU3RyaW5nIGxhc3RuYW1lLCBTdHJpbmcgZmlyc3RuYW1lLCBTdHJpbmcgZW1haWwsCisJCQlTdHJpbmcgYWRkaXRpb25hbG5hbWUsIFN0cmluZyBzdHJlZXQsIFN0cmluZyB6aXAsIFN0cmluZyBmYXgsCisJCQlsb25nIHN0YXRlc19pZCwgU3RyaW5nIHRvd24sIGxvbmcgbGFuZ3VhZ2VfaWQsIFN0cmluZyBiYXNlVVJMLAorCQkJU3RyaW5nIGpOYW1lVGltZVpvbmUpIHRocm93cyBBeGlzRmF1bHQgeworCQl0cnkgeworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZW1lbnQuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrV2ViU2VydmljZUxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlMb25nIHVzZXJfaWQgPSB1c2VyTWFuYWdlbWVudC5yZWdpc3RlclVzZXIodXNlcm5hbWUsIHVzZXJwYXNzLAorCQkJCQkJbGFzdG5hbWUsIGZpcnN0bmFtZSwgZW1haWwsIG5ldyBEYXRlKCksIHN0cmVldCwKKwkJCQkJCWFkZGl0aW9uYWxuYW1lLCBmYXgsIHppcCwgc3RhdGVzX2lkLCB0b3duLCBsYW5ndWFnZV9pZCwKKwkJCQkJCSIiLCBmYWxzZSwgYmFzZVVSTCwgdHJ1ZSwgLy8gZ2VuZXJhdGUKKwkJCQkJCQkJCQkJLy8gU0lQCisJCQkJCQkJCQkJCS8vIERhdGEKKwkJCQkJCQkJCQkJLy8gaWYKKwkJCQkJCQkJCQkJLy8gdGhlCisJCQkJCQkJCQkJCS8vIGNvbmZpZworCQkJCQkJCQkJCQkvLyBpcworCQkJCQkJCQkJCQkvLyBlbmFibGVkCisJCQkJCQlqTmFtZVRpbWVab25lKTsgCisKKwkJCQlpZiAodXNlcl9pZCA8IDApIHsKKwkJCQkJcmV0dXJuIHVzZXJfaWQ7CisJCQkJfQorCisJCQkJVXNlciB1c2VyID0gdXNlck1hbmFnZW1lbnQuZ2V0VXNlckJ5SWQodXNlcl9pZCk7CisKKwkJCQkvLyBhY3RpdmF0ZSB0aGUgVXNlcgorCQkJCXVzZXIuc2V0U3RhdHVzKDEpOworCQkJCXVzZXIuc2V0VXBkYXRldGltZShuZXcgRGF0ZSgpKTsKKworCQkJCXVzZXJNYW5hZ2VtZW50LnVwZGF0ZVVzZXIodXNlcik7CisKKwkJCQlyZXR1cm4gdXNlcl9pZDsKKworCQkJfSBlbHNlIHsKKwkJCQlyZXR1cm4gbmV3IExvbmcoLTI2KTsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJzZXRVc2VyT2JqZWN0IiwgZXJyKTsKKwkJCXRocm93IG5ldyBBeGlzRmF1bHQoZXJyLmdldE1lc3NhZ2UoKSk7CisJCX0KKwl9CisKKwkvKioKKwkgKiBBZGRzIGEgbmV3IFVzZXIgbGlrZSB0aHJvdWdoIHRoZSBGcm9udGVuZCwgYnV0IGFsc28gZG9lcyBhY3RpdmF0ZXMgdGhlCisJICogQWNjb3VudCwgc2VuZHMgTk8gZW1haWwgKG5vIG1hdHRlciB3aGF0IHlvdSBjb25maWd1cmVkKSBhbmQgc2V0cyB0aGUKKwkgKiB1c2VycyBleHRlcm5hbCB1c2VyIGlkIGFuZCB0eXBlCisJICogCisJICogVXNlIHRoZSBtZXRob2RzIHRvIGNyZWF0ZSBhIGhhc2ggZm9yIFNTTywgY3JlYXRpbmcgdXNlcnMgaXMgbm90IHJlcXVpcmVkCisJICogZm9yIFNTTworCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiAgICAgICAgICAgIFRoZSBTSUQgZnJvbSBnZXRTZXNzaW9uCisJICogQHBhcmFtIHVzZXJuYW1lCisJICogICAgICAgICAgICBhbnkgdXNlcm5hbWUKKwkgKiBAcGFyYW0gdXNlcnBhc3MKKwkgKiAgICAgICAgICAgIGFueSB1c2VycGFzcworCSAqIEBwYXJhbSBsYXN0bmFtZQorCSAqICAgICAgICAgICAgYW55IGxhc3RuYW1lCisJICogQHBhcmFtIGZpcnN0bmFtZQorCSAqICAgICAgICAgICAgYW55IGZpcnN0bmFtZQorCSAqIEBwYXJhbSBlbWFpbAorCSAqICAgICAgICAgICAgYW55IGVtYWlsCisJICogQHBhcmFtIGFkZGl0aW9uYWxuYW1lCisJICogICAgICAgICAgICBhbnkgYWRkaXRpb25hbG5hbWUKKwkgKiBAcGFyYW0gc3RyZWV0CisJICogICAgICAgICAgICBhbnkgc3RyZWV0CisJICogQHBhcmFtIHppcAorCSAqICAgICAgICAgICAgYW55IHppcAorCSAqIEBwYXJhbSBmYXgKKwkgKiAgICAgICAgICAgIGFueSBmYXgKKwkgKiBAcGFyYW0gc3RhdGVzX2lkCisJICogICAgICAgICAgICBhIHZhbGlkIHN0YXRlc19pZAorCSAqIEBwYXJhbSB0b3duCisJICogICAgICAgICAgICBhbnkgdG93bgorCSAqIEBwYXJhbSBsYW5ndWFnZV9pZAorCSAqICAgICAgICAgICAgdGhlIGxhbmd1YWdlX2lkCisJICogQHBhcmFtIGpOYW1lVGltZVpvbmUKKwkgKiAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSB0aW1lem9uZSBmb3IgdGhlIHVzZXIKKwkgKiBAcGFyYW0gZXh0ZXJuYWxVc2VySWQKKwkgKiAgICAgICAgICAgIGV4dGVybmFsVXNlcklkCisJICogQHBhcmFtIGV4dGVybmFsVXNlclR5cGUKKwkgKiAgICAgICAgICAgIGV4dGVybmFsVXNlclR5cGUKKwkgKiAgICAgICAgICAgIAorCSAqIEByZXR1cm4gLSBpZCBvZiB1c2VyIGFkZGVkIG9yIGVycm9yIGNvZGUKKwkgKiBAdGhyb3dzIEF4aXNGYXVsdAorCSAqLworCXB1YmxpYyBMb25nIGFkZE5ld1VzZXJXaXRoRXh0ZXJuYWxUeXBlKFN0cmluZyBTSUQsIFN0cmluZyB1c2VybmFtZSwKKwkJCVN0cmluZyB1c2VycGFzcywgU3RyaW5nIGxhc3RuYW1lLCBTdHJpbmcgZmlyc3RuYW1lLCBTdHJpbmcgZW1haWwsCisJCQlTdHJpbmcgYWRkaXRpb25hbG5hbWUsIFN0cmluZyBzdHJlZXQsIFN0cmluZyB6aXAsIFN0cmluZyBmYXgsCisJCQlsb25nIHN0YXRlc19pZCwgU3RyaW5nIHRvd24sIGxvbmcgbGFuZ3VhZ2VfaWQsCisJCQlTdHJpbmcgak5hbWVUaW1lWm9uZSwgU3RyaW5nIGV4dGVybmFsVXNlcklkLCBTdHJpbmcgZXh0ZXJuYWxVc2VyVHlwZSkKKwkJCXRocm93cyBBeGlzRmF1bHQgeworCQl0cnkgeworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZW1lbnQuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrQWRtaW5MZXZlbCh1c2VyX2xldmVsKSkgeworCisJCQkJVXNlciB0ZXN0VXNlciA9IHVzZXJNYW5hZ2VtZW50LmdldFVzZXJCeUV4dGVybmFsSWRBbmRUeXBlKAorCQkJCQkJZXh0ZXJuYWxVc2VySWQsIGV4dGVybmFsVXNlclR5cGUpOworCisJCQkJaWYgKHRlc3RVc2VyICE9IG51bGwpIHsKKwkJCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbigiVXNlciBkb2VzIGFscmVhZHkgZXhpc3QhIik7CisJCQkJfQorCisJCQkJLy8gVGhpcyB3aWxsIHNlbmQgbm8gZW1haWwgdG8gdGhlIHVzZXJzCisJCQkJTG9uZyB1c2VyX2lkID0gdXNlck1hbmFnZW1lbnQucmVnaXN0ZXJVc2VyTm9FbWFpbCh1c2VybmFtZSwKKwkJCQkJCXVzZXJwYXNzLCBsYXN0bmFtZSwgZmlyc3RuYW1lLCBlbWFpbCwgbmV3IERhdGUoKSwKKwkJCQkJCXN0cmVldCwgYWRkaXRpb25hbG5hbWUsIGZheCwgemlwLCBzdGF0ZXNfaWQsIHRvd24sCisJCQkJCQlsYW5ndWFnZV9pZCwgIiIsIGZhbHNlLCB0cnVlLCAvLyBnZW5lcmF0ZSBTSVAgRGF0YSBpZiB0aGUgY29uZmlnIGlzIGVuYWJsZWQKKwkJCQkJCWpOYW1lVGltZVpvbmUpOworCisJCQkJaWYgKHVzZXJfaWQgPCAwKSB7CisJCQkJCXJldHVybiB1c2VyX2lkOworCQkJCX0KKworCQkJCVVzZXIgdXNlciA9IHVzZXJNYW5hZ2VtZW50LmdldFVzZXJCeUlkKHVzZXJfaWQpOworCisJCQkJLy8gYWN0aXZhdGUgdGhlIFVzZXIKKwkJCQl1c2VyLnNldFN0YXR1cygxKTsKKwkJCQl1c2VyLnNldFVwZGF0ZXRpbWUobmV3IERhdGUoKSk7CisJCQkJdXNlci5zZXRFeHRlcm5hbFVzZXJJZChleHRlcm5hbFVzZXJJZCk7CisJCQkJdXNlci5zZXRFeHRlcm5hbFVzZXJUeXBlKGV4dGVybmFsVXNlclR5cGUpOworCisJCQkJdXNlck1hbmFnZW1lbnQudXBkYXRlVXNlcih1c2VyKTsKKworCQkJCXJldHVybiB1c2VyX2lkOworCisJCQl9IGVsc2UgeworCQkJCXJldHVybiBuZXcgTG9uZygtMjYpOworCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiYWRkTmV3VXNlcldpdGhFeHRlcm5hbFR5cGUiLCBlcnIpOworCQkJdGhyb3cgbmV3IEF4aXNGYXVsdChlcnIuZ2V0TWVzc2FnZSgpKTsKKwkJfQorCX0KKworCS8qKgorCSAqIAorCSAqIERlbGV0ZSBhIGNlcnRhaW4gdXNlciBieSBpdHMgaWQKKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogICAgICAgICAgICBUaGUgU0lEIGZyb20gZ2V0U2Vzc2lvbgorCSAqIEBwYXJhbSB1c2VySWQKKwkgKiAgICAgICAgICAgIHRoZSBvcGVubWVldGluZ3MgdXNlciBpZAorCSAqICAgICAgICAgICAgCisJICogQHJldHVybiAtIGlkIG9mIHRoZSB1c2VyIGRlbGV0ZWQsIGVycm9yIGNvZGUgb3RoZXJ3aXNlCisJICogQHRocm93cyBBeGlzRmF1bHQKKwkgKi8KKwlwdWJsaWMgTG9uZyBkZWxldGVVc2VyQnlJZChTdHJpbmcgU0lELCBMb25nIHVzZXJJZCkgdGhyb3dzIEF4aXNGYXVsdCB7CisJCXRyeSB7CisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlbWVudC5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tBZG1pbkxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQkvLyBTZXR0aW5nIHVzZXIgZGVsZXRlZAorCQkJCXVzZXJzRGFvLmRlbGV0ZVVzZXJJRCh1c2VySWQpOworCisJCQkJcmV0dXJuIHVzZXJJZDsKKworCQkJfSBlbHNlIHsKKwkJCQlyZXR1cm4gbmV3IExvbmcoLTI2KTsKKwkJCX0KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoImRlbGV0ZVVzZXJCeUlkIiwgZXJyKTsKKwkJCXRocm93IG5ldyBBeGlzRmF1bHQoZXJyLmdldE1lc3NhZ2UoKSk7CisJCX0KKwl9CisKKwkvKioKKwkgKiAKKwkgKiBEZWxldGUgYSBjZXJ0YWluIHVzZXIgYnkgaXRzIGV4dGVybmFsIHVzZXIgaWQKKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogICAgICAgICAgICBUaGUgU0lEIGZyb20gZ2V0U2Vzc2lvbgorCSAqIEBwYXJhbSBleHRlcm5hbFVzZXJJZAorCSAqICAgICAgICAgICAgZXh0ZXJuYWxVc2VySWQKKwkgKiBAcGFyYW0gZXh0ZXJuYWxVc2VyVHlwZQorCSAqICAgICAgICAgICAgZXh0ZXJuYWxVc2VySWQKKwkgKiAgICAgICAgICAgIAorCSAqIEByZXR1cm4gLSBpZCBvZiB1c2VyIGRlbGV0ZWQsIG9yIGVycm9yIGNvZGUKKwkgKiBAdGhyb3dzIEF4aXNGYXVsdAorCSAqLworCXB1YmxpYyBMb25nIGRlbGV0ZVVzZXJCeUV4dGVybmFsVXNlcklkQW5kVHlwZShTdHJpbmcgU0lELAorCQkJU3RyaW5nIGV4dGVybmFsVXNlcklkLCBTdHJpbmcgZXh0ZXJuYWxVc2VyVHlwZSkgdGhyb3dzIEF4aXNGYXVsdCB7CisJCXRyeSB7CisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlbWVudC5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tBZG1pbkxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlVc2VyIHVzZXJFeHRlcm5hbCA9IHVzZXJNYW5hZ2VtZW50LmdldFVzZXJCeUV4dGVybmFsSWRBbmRUeXBlKAorCQkJCQkJZXh0ZXJuYWxVc2VySWQsIGV4dGVybmFsVXNlclR5cGUpOworCisJCQkJTG9uZyB1c2VySWQgPSB1c2VyRXh0ZXJuYWwuZ2V0VXNlcl9pZCgpOworCisJCQkJLy8gU2V0dGluZyB1c2VyIGRlbGV0ZWQKKwkJCQl1c2Vyc0Rhby5kZWxldGVVc2VySUQodXNlcklkKTsKKworCQkJCXJldHVybiB1c2VySWQ7CisKKwkJCX0gZWxzZSB7CisJCQkJcmV0dXJuIG5ldyBMb25nKC0yNik7CisJCQl9CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJkZWxldGVVc2VyQnlJZCIsIGVycik7CisJCQl0aHJvdyBuZXcgQXhpc0ZhdWx0KGVyci5nZXRNZXNzYWdlKCkpOworCQl9CisJfQorCisJLyoqCisJICogZGVwcmVjYXRlZCB1c2Ugc2V0VXNlck9iamVjdEFuZEdlbmVyYXRlUm9vbUhhc2gKKwkgKiAKKwkgKiBEZXNjcmlwdGlvbjogc2V0cyB0aGUgU2Vzc2lvbk9iamVjdCBmb3IgYSBjZXJ0YWluIFNJRCwgYWZ0ZXIgc2V0dGluZyB0aGlzCisJICogU2Vzc2lvbi1PYmplY3QgeW91IGNhbiB1c2UgdGhlIFNJRCArIGEgUm9vbUlkIHRvIGVudGVyIGFueSBSb29tLgorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiAgICAgICAgICAgIFRoZSBTSUQgZnJvbSBnZXRTZXNzaW9uCisJICogQHBhcmFtIHVzZXJuYW1lCisJICogICAgICAgICAgICBhbnkgdXNlcm5hbWUKKwkgKiBAcGFyYW0gZmlyc3RuYW1lCisJICogICAgICAgICAgICBhbnkgZmlyc3RuYW1lCisJICogQHBhcmFtIGxhc3RuYW1lCisJICogICAgICAgICAgICBhbnkgbGFzdG5hbWUKKwkgKiBAcGFyYW0gcHJvZmlsZVBpY3R1cmVVcmwKKwkgKiAgICAgICAgICAgIGFueSBwcm9maWxlUGljdHVyZVVybAorCSAqIEBwYXJhbSBlbWFpbAorCSAqICAgICAgICAgICAgYW55IGVtYWlsCisJICogICAgICAgICAgICAKKwkgKiBAcmV0dXJuIC0gMSBpbiBjYXNlIG9mIHN1Y2Nlc3MsIC0xIG90aGVyd2lzZQorCSAqIEB0aHJvd3MgQXhpc0ZhdWx0CisJICovCisJQERlcHJlY2F0ZWQKKwlwdWJsaWMgTG9uZyBzZXRVc2VyT2JqZWN0KFN0cmluZyBTSUQsIFN0cmluZyB1c2VybmFtZSwgU3RyaW5nIGZpcnN0bmFtZSwKKwkJCVN0cmluZyBsYXN0bmFtZSwgU3RyaW5nIHByb2ZpbGVQaWN0dXJlVXJsLCBTdHJpbmcgZW1haWwpCisJCQl0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJbG9nLmRlYnVnKCJVc2VyU2VydmljZS5zZXRVc2VyT2JqZWN0Iik7CisKKwkJdHJ5IHsKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VtZW50LmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tXZWJTZXJ2aWNlTGV2ZWwodXNlcl9sZXZlbCkpIHsKKworCQkJCVJlbW90ZVNlc3Npb25PYmplY3QgcmVtb3RlU2Vzc2lvbk9iamVjdCA9IG5ldyBSZW1vdGVTZXNzaW9uT2JqZWN0KAorCQkJCQkJdXNlcm5hbWUsIGZpcnN0bmFtZSwgbGFzdG5hbWUsIHByb2ZpbGVQaWN0dXJlVXJsLCBlbWFpbCk7CisKKwkJCQlsb2cuZGVidWcoInVzZXJuYW1lICIgKyB1c2VybmFtZSk7CisJCQkJbG9nLmRlYnVnKCJmaXJzdG5hbWUgIiArIGZpcnN0bmFtZSk7CisJCQkJbG9nLmRlYnVnKCJsYXN0bmFtZSAiICsgbGFzdG5hbWUpOworCQkJCWxvZy5kZWJ1ZygicHJvZmlsZVBpY3R1cmVVcmwgIiArIHByb2ZpbGVQaWN0dXJlVXJsKTsKKwkJCQlsb2cuZGVidWcoImVtYWlsICIgKyBlbWFpbCk7CisKKwkJCQkvLyBYU3RyZWFtIHhTdHJlYW0gPSBuZXcgWFN0cmVhbShuZXcgWHBwRHJpdmVyKCkpOworCQkJCVhTdHJlYW0geFN0cmVhbSA9IG5ldyBYU3RyZWFtKG5ldyBEb21Ecml2ZXIoIlVURi04IikpOworCQkJCXhTdHJlYW0uc2V0TW9kZShYU3RyZWFtLk5PX1JFRkVSRU5DRVMpOworCQkJCVN0cmluZyB4bWxTdHJpbmcgPSB4U3RyZWFtLnRvWE1MKHJlbW90ZVNlc3Npb25PYmplY3QpOworCisJCQkJbG9nLmRlYnVnKCJ4bWxTdHJpbmcgIiArIHhtbFN0cmluZyk7CisKKwkJCQlzZXNzaW9uZGF0YURhby51cGRhdGVVc2VyUmVtb3RlU2Vzc2lvbihTSUQsIHhtbFN0cmluZyk7CisKKwkJCQlyZXR1cm4gbmV3IExvbmcoMSk7CisJCQl9IGVsc2UgeworCQkJCXJldHVybiBuZXcgTG9uZygtMjYpOworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoInNldFVzZXJPYmplY3QiLCBlcnIpOworCQkJdGhyb3cgbmV3IEF4aXNGYXVsdChlcnIuZ2V0TWVzc2FnZSgpKTsKKwkJfQorCQkvLyByZXR1cm4gbmV3IExvbmcoLTEpOworCX0KKworCS8qKgorCSAqIGRlcHJlY2F0ZWQgdXNlIHNldFVzZXJPYmplY3RBbmRHZW5lcmF0ZVJvb21IYXNoCisJICogCisJICogRGVzY3JpcHRpb246IHNldHMgdGhlIFNlc3Npb25PYmplY3QgZm9yIGEgY2VydGFpbiBTSUQsIGFmdGVyIHNldHRpbmcgdGhpcworCSAqIFNlc3Npb24tT2JqZWN0IHlvdSBjYW4gdXNlIHRoZSBTSUQgKyBhIFJvb21JZCB0byBlbnRlciBhbnkgUm9vbS4KKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogICAgICAgICAgICBUaGUgU0lEIGZyb20gZ2V0U2Vzc2lvbgorCSAqIEBwYXJhbSB1c2VybmFtZQorCSAqICAgICAgICAgICAgYW55IHVzZXJuYW1lCisJICogQHBhcmFtIGZpcnN0bmFtZQorCSAqICAgICAgICAgICAgYW55IGZpcnN0bmFtZQorCSAqIEBwYXJhbSBsYXN0bmFtZQorCSAqICAgICAgICAgICAgYW55IGxhc3RuYW1lCisJICogQHBhcmFtIHByb2ZpbGVQaWN0dXJlVXJsCisJICogICAgICAgICAgICBhbnkgcHJvZmlsZVBpY3R1cmVVcmwKKwkgKiBAcGFyYW0gZW1haWwKKwkgKiAgICAgICAgICAgIGFueSBlbWFpbAorCSAqIEBwYXJhbSBleHRlcm5hbFVzZXJJZAorCSAqICAgICAgICAgICAgaWYgeW91IGhhdmUgYW55IGV4dGVybmFsIHVzZXIgSWQgeW91IG1heSBzZXQgaXQgaGVyZQorCSAqIEBwYXJhbSBleHRlcm5hbFVzZXJUeXBlCisJICogICAgICAgICAgICB5b3UgY2FuIHNwZWNpZnkgeW91ciBzeXN0ZW0tbmFtZSBoZXJlLCBmb3IgZXhhbXBsZSAibW9vZGxlIgorCSAqICAgICAgICAgICAgCisJICogQHJldHVybiAtIDEgaW4gY2FzZSBvZiBzdWNjZXNzLCAtMSBvdGhlcndpc2UKKwkgKiBAdGhyb3dzIEF4aXNGYXVsdAorCSAqLworCUBEZXByZWNhdGVkCisJcHVibGljIExvbmcgc2V0VXNlck9iamVjdFdpdGhFeHRlcm5hbFVzZXIoU3RyaW5nIFNJRCwgU3RyaW5nIHVzZXJuYW1lLAorCQkJU3RyaW5nIGZpcnN0bmFtZSwgU3RyaW5nIGxhc3RuYW1lLCBTdHJpbmcgcHJvZmlsZVBpY3R1cmVVcmwsCisJCQlTdHJpbmcgZW1haWwsIFN0cmluZyBleHRlcm5hbFVzZXJJZCwgU3RyaW5nIGV4dGVybmFsVXNlclR5cGUpCisJCQl0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJbG9nLmRlYnVnKCJVc2VyU2VydmljZS5zZXRVc2VyT2JqZWN0Iik7CisKKwkJdHJ5IHsKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VtZW50LmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tXZWJTZXJ2aWNlTGV2ZWwodXNlcl9sZXZlbCkpIHsKKworCQkJCVJlbW90ZVNlc3Npb25PYmplY3QgcmVtb3RlU2Vzc2lvbk9iamVjdCA9IG5ldyBSZW1vdGVTZXNzaW9uT2JqZWN0KAorCQkJCQkJdXNlcm5hbWUsIGZpcnN0bmFtZSwgbGFzdG5hbWUsIHByb2ZpbGVQaWN0dXJlVXJsLAorCQkJCQkJZW1haWwsIGV4dGVybmFsVXNlcklkLCBleHRlcm5hbFVzZXJUeXBlKTsKKworCQkJCWxvZy5kZWJ1ZygidXNlcm5hbWUgIiArIHVzZXJuYW1lKTsKKwkJCQlsb2cuZGVidWcoImZpcnN0bmFtZSAiICsgZmlyc3RuYW1lKTsKKwkJCQlsb2cuZGVidWcoImxhc3RuYW1lICIgKyBsYXN0bmFtZSk7CisJCQkJbG9nLmRlYnVnKCJwcm9maWxlUGljdHVyZVVybCAiICsgcHJvZmlsZVBpY3R1cmVVcmwpOworCQkJCWxvZy5kZWJ1ZygiZW1haWwgIiArIGVtYWlsKTsKKwkJCQlsb2cuZGVidWcoImV4dGVybmFsVXNlcklkICIgKyBleHRlcm5hbFVzZXJJZCk7CisJCQkJbG9nLmRlYnVnKCJleHRlcm5hbFVzZXJUeXBlICIgKyBleHRlcm5hbFVzZXJUeXBlKTsKKworCQkJCS8vIFhTdHJlYW0geFN0cmVhbSA9IG5ldyBYU3RyZWFtKG5ldyBYcHBEcml2ZXIoKSk7CisJCQkJWFN0cmVhbSB4U3RyZWFtID0gbmV3IFhTdHJlYW0obmV3IERvbURyaXZlcigiVVRGLTgiKSk7CisJCQkJeFN0cmVhbS5zZXRNb2RlKFhTdHJlYW0uTk9fUkVGRVJFTkNFUyk7CisJCQkJU3RyaW5nIHhtbFN0cmluZyA9IHhTdHJlYW0udG9YTUwocmVtb3RlU2Vzc2lvbk9iamVjdCk7CisKKwkJCQlsb2cuZGVidWcoInhtbFN0cmluZyAiICsgeG1sU3RyaW5nKTsKKworCQkJCXNlc3Npb25kYXRhRGFvLnVwZGF0ZVVzZXJSZW1vdGVTZXNzaW9uKFNJRCwgeG1sU3RyaW5nKTsKKworCQkJCXJldHVybiBuZXcgTG9uZygxKTsKKwkJCX0gZWxzZSB7CisJCQkJcmV0dXJuIG5ldyBMb25nKC0yNik7CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigic2V0VXNlck9iamVjdFdpdGhFeHRlcm5hbFVzZXIiLCBlcnIpOworCQkJdGhyb3cgbmV3IEF4aXNGYXVsdChlcnIuZ2V0TWVzc2FnZSgpKTsKKwkJfQorCX0KKworCS8qKgorCSAqIERlc2NyaXB0aW9uOiBzZXRzIHRoZSBTZXNzaW9uT2JqZWN0IGZvciBhIGNlcnRhaW4gU0lELCBhZnRlciBzZXR0aW5nIHRoaXMKKwkgKiBTZXNzaW9uLU9iamVjdCB5b3UgY2FuIHVzZSB0aGUgU0lEICsgYSBSb29tSWQgdG8gZW50ZXIgYW55IFJvb20uIC4uLgorCSAqIFNlc3Npb24tSGFzaHMgYXJlIGRlbGV0ZWQgMTUgbWludXRlcyBhZnRlciB0aGUgY3JlYXRpb24gaWYgbm90IHVzZWQuCisJICogCisJICogQHBhcmFtIFNJRAorCSAqICAgICAgICAgICAgVGhlIFNJRCBmcm9tIGdldFNlc3Npb24KKwkgKiBAcGFyYW0gdXNlcm5hbWUKKwkgKiAgICAgICAgICAgIGFueSB1c2VybmFtZQorCSAqIEBwYXJhbSBmaXJzdG5hbWUKKwkgKiAgICAgICAgICAgIGFueSBmaXJzdG5hbWUKKwkgKiBAcGFyYW0gbGFzdG5hbWUKKwkgKiAgICAgICAgICAgIGFueSBsYXN0bmFtZQorCSAqIEBwYXJhbSBwcm9maWxlUGljdHVyZVVybAorCSAqICAgICAgICAgICAgYW55IHByb2ZpbGVQaWN0dXJlVXJsCisJICogQHBhcmFtIGVtYWlsCisJICogICAgICAgICAgICBhbnkgZW1haWwKKwkgKiBAcGFyYW0gZXh0ZXJuYWxVc2VySWQKKwkgKiAgICAgICAgICAgIGlmIHlvdSBoYXZlIGFueSBleHRlcm5hbCB1c2VyIElkIHlvdSBtYXkgc2V0IGl0IGhlcmUKKwkgKiBAcGFyYW0gZXh0ZXJuYWxVc2VyVHlwZQorCSAqICAgICAgICAgICAgeW91IGNhbiBzcGVjaWZ5IHlvdXIgc3lzdGVtLW5hbWUgaGVyZSwgZm9yIGV4YW1wbGUgIm1vb2RsZSIKKwkgKiBAcGFyYW0gcm9vbV9pZAorCSAqICAgICAgICAgICAgdGhlIHJvb20gaWQgdGhlIHVzZXIgc2hvdWxkIGJlIGxvZ2dlZCBpbgorCSAqIEBwYXJhbSBiZWNvbWVNb2RlcmF0b3JBc0ludAorCSAqICAgICAgICAgICAgMCBtZWFucyBubyBNb2RlcmF0b3IsIDEgbWVhbnMgTW9kZXJhdG9yCisJICogQHBhcmFtIHNob3dBdWRpb1ZpZGVvVGVzdEFzSW50CisJICogICAgICAgICAgICAwIG1lYW5zIGRvbid0IHNob3cgQXVkaW8vVmlkZW8gVGVzdCwgMSBtZWFucyBzaG93IEF1ZGlvL1ZpZGVvCisJICogICAgICAgICAgICBUZXN0IEFwcGxpY2F0aW9uIGJlZm9yZSB0aGUgdXNlciBpcyBsb2dnZWQgaW50byB0aGUgcm9vbQorCSAqICAgICAgICAgICAgCisJICogQHJldHVybiAtIHNlY3VyZSBoYXNoIG9yIGVycm9yIGNvZGUKKwkgKiBAdGhyb3dzIEF4aXNGYXVsdAorCSAqLworCXB1YmxpYyBTdHJpbmcgc2V0VXNlck9iamVjdEFuZEdlbmVyYXRlUm9vbUhhc2goU3RyaW5nIFNJRCwgU3RyaW5nIHVzZXJuYW1lLAorCQkJU3RyaW5nIGZpcnN0bmFtZSwgU3RyaW5nIGxhc3RuYW1lLCBTdHJpbmcgcHJvZmlsZVBpY3R1cmVVcmwsCisJCQlTdHJpbmcgZW1haWwsIFN0cmluZyBleHRlcm5hbFVzZXJJZCwgU3RyaW5nIGV4dGVybmFsVXNlclR5cGUsCisJCQlMb25nIHJvb21faWQsIGludCBiZWNvbWVNb2RlcmF0b3JBc0ludCwgaW50IHNob3dBdWRpb1ZpZGVvVGVzdEFzSW50KQorCQkJdGhyb3dzIEF4aXNGYXVsdCB7CisJCXRyeSB7CisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlbWVudC5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrV2ViU2VydmljZUxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlSZW1vdGVTZXNzaW9uT2JqZWN0IHJlbW90ZVNlc3Npb25PYmplY3QgPSBuZXcgUmVtb3RlU2Vzc2lvbk9iamVjdCgKKwkJCQkJCXVzZXJuYW1lLCBmaXJzdG5hbWUsIGxhc3RuYW1lLCBwcm9maWxlUGljdHVyZVVybCwKKwkJCQkJCWVtYWlsLCBleHRlcm5hbFVzZXJJZCwgZXh0ZXJuYWxVc2VyVHlwZSk7CisKKwkJCQlsb2cuZGVidWcoInVzZXJuYW1lICIgKyB1c2VybmFtZSk7CisJCQkJbG9nLmRlYnVnKCJmaXJzdG5hbWUgIiArIGZpcnN0bmFtZSk7CisJCQkJbG9nLmRlYnVnKCJsYXN0bmFtZSAiICsgbGFzdG5hbWUpOworCQkJCWxvZy5kZWJ1ZygicHJvZmlsZVBpY3R1cmVVcmwgIiArIHByb2ZpbGVQaWN0dXJlVXJsKTsKKwkJCQlsb2cuZGVidWcoImVtYWlsICIgKyBlbWFpbCk7CisJCQkJbG9nLmRlYnVnKCJleHRlcm5hbFVzZXJJZCAiICsgZXh0ZXJuYWxVc2VySWQpOworCQkJCWxvZy5kZWJ1ZygiZXh0ZXJuYWxVc2VyVHlwZSAiICsgZXh0ZXJuYWxVc2VyVHlwZSk7CisKKwkJCQkvLyBYU3RyZWFtIHhTdHJlYW0gPSBuZXcgWFN0cmVhbShuZXcgWHBwRHJpdmVyKCkpOworCQkJCVhTdHJlYW0geFN0cmVhbSA9IG5ldyBYU3RyZWFtKG5ldyBEb21Ecml2ZXIoIlVURi04IikpOworCQkJCXhTdHJlYW0uc2V0TW9kZShYU3RyZWFtLk5PX1JFRkVSRU5DRVMpOworCQkJCVN0cmluZyB4bWxTdHJpbmcgPSB4U3RyZWFtLnRvWE1MKHJlbW90ZVNlc3Npb25PYmplY3QpOworCisJCQkJbG9nLmRlYnVnKCJ4bWxTdHJpbmcgIiArIHhtbFN0cmluZyk7CisKKwkJCQlzZXNzaW9uZGF0YURhby51cGRhdGVVc2VyUmVtb3RlU2Vzc2lvbihTSUQsIHhtbFN0cmluZyk7CisKKwkJCQlib29sZWFuIGJlY29tZU1vZGVyYXRvciA9IGZhbHNlOworCQkJCWlmIChiZWNvbWVNb2RlcmF0b3JBc0ludCAhPSAwKSB7CisJCQkJCWJlY29tZU1vZGVyYXRvciA9IHRydWU7CisJCQkJfQorCisJCQkJYm9vbGVhbiBzaG93QXVkaW9WaWRlb1Rlc3QgPSBmYWxzZTsKKwkJCQlpZiAoc2hvd0F1ZGlvVmlkZW9UZXN0QXNJbnQgIT0gMCkgeworCQkJCQlzaG93QXVkaW9WaWRlb1Rlc3QgPSB0cnVlOworCQkJCX0KKworCQkJCVN0cmluZyBoYXNoID0gc29hcExvZ2luRGFvLmFkZFNPQVBMb2dpbihTSUQsIHJvb21faWQsCisJCQkJCQliZWNvbWVNb2RlcmF0b3IsIHNob3dBdWRpb1ZpZGVvVGVzdCwgZmFsc2UsIC8vIGFsbG93U2FtZVVSTE11bHRpcGxlVGltZXMKKwkJCQkJCW51bGwsIC8vIHJlY29yZGluZ19pZAorCQkJCQkJZmFsc2UsIC8vIHNob3dOaWNrTmFtZURpYWxvZ0FzSW50CisJCQkJCQkicm9vbSIsIC8vIExhbmRpbmdab25lLAorCQkJCQkJdHJ1ZSAvLyBhbGxvd1JlY29yZGluZworCQkJCQkJKTsKKworCQkJCWlmIChoYXNoICE9IG51bGwpIHsKKwkJCQkJcmV0dXJuIGhhc2g7CisJCQkJfQorCisJCQl9IGVsc2UgeworCQkJCXJldHVybiAiIiArIG5ldyBMb25nKC0yNik7CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigic2V0VXNlck9iamVjdFdpdGhBbmRHZW5lcmF0ZVJvb21IYXNoIiwgZXJyKTsKKwkJCXRocm93IG5ldyBBeGlzRmF1bHQoZXJyLmdldE1lc3NhZ2UoKSk7CisJCX0KKwkJcmV0dXJuICIiICsgbmV3IExvbmcoLTEpOworCX0KKworCS8qKgorCSAqIAorCSAqIERlc2NyaXB0aW9uOiBzZXRzIHRoZSBTZXNzaW9uT2JqZWN0IGZvciBhIGNlcnRhaW4gU0lELCBhZnRlciBzZXR0aW5nIHRoaXMKKwkgKiBTZXNzaW9uLU9iamVjdCB5b3UgY2FuIHVzZSB0aGUgU0lEICsgYSBSb29tSWQgdG8gZW50ZXIgYW55IFJvb20uCisJICogCisJICogKysgdGhlIHVzZXIgY2FuIHByZXNzIGY1IHRvIHJlbG9hZCB0aGUgcGFnZSAvIHVzZSB0aGUgbGluayBzZXZlcmFsIHRpbWVzLAorCSAqIHRoZSBTT0FQIEdhdGV3YXkgZG9lcyByZW1lbWJlciB0aGUgSVAgb2YgdGhlIHVzZXIgYW5kIHRoZSB3aWxsIG9ubHkgdGhlCisJICogZmlyc3QgdXNlciB0aGF0IGVudGVycyB0aGUgcm9vbSBhbGxvdyB0byByZS1lbnRlci4gLi4uIFNlc3Npb24tSGFzaHMgYXJlCisJICogZGVsZXRlZCAxNSBtaW51dGVzIGFmdGVyIHRoZSBjcmVhdGlvbiBpZiBub3QgdXNlZC4KKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogICAgICAgICAgICBUaGUgU0lEIGZyb20gZ2V0U2Vzc2lvbgorCSAqIEBwYXJhbSB1c2VybmFtZQorCSAqICAgICAgICAgICAgYW55IHVzZXJuYW1lCisJICogQHBhcmFtIGZpcnN0bmFtZQorCSAqICAgICAgICAgICAgYW55IGZpcnN0bmFtZQorCSAqIEBwYXJhbSBsYXN0bmFtZQorCSAqICAgICAgICAgICAgYW55IGxhc3RuYW1lCisJICogQHBhcmFtIHByb2ZpbGVQaWN0dXJlVXJsCisJICogICAgICAgICAgICBhbnkgcHJvZmlsZVBpY3R1cmVVcmwKKwkgKiBAcGFyYW0gZW1haWwKKwkgKiAgICAgICAgICAgIGFueSBlbWFpbCBhbnkgZW1haWwKKwkgKiBAcGFyYW0gZXh0ZXJuYWxVc2VySWQKKwkgKiAgICAgICAgICAgIGlmIHlvdSBoYXZlIGFueSBleHRlcm5hbCB1c2VyIElkIHlvdSBtYXkgc2V0IGl0IGhlcmUKKwkgKiBAcGFyYW0gZXh0ZXJuYWxVc2VyVHlwZQorCSAqICAgICAgICAgICAgeW91IGNhbiBzcGVjaWZ5IHlvdXIgc3lzdGVtLW5hbWUgaGVyZSwgZm9yIGV4YW1wbGUgIm1vb2RsZSIKKwkgKiBAcGFyYW0gcm9vbV9pZAorCSAqICAgICAgICAgICAgdGhlIHJvb20gaWQgdGhlIHVzZXIgc2hvdWxkIGJlIGxvZ2dlZCBpbgorCSAqIEBwYXJhbSBiZWNvbWVNb2RlcmF0b3JBc0ludAorCSAqICAgICAgICAgICAgMCBtZWFucyBubyBNb2RlcmF0b3IsIDEgbWVhbnMgTW9kZXJhdG9yCisJICogQHBhcmFtIHNob3dBdWRpb1ZpZGVvVGVzdEFzSW50CisJICogICAgICAgICAgICAwIG1lYW5zIGRvbid0IHNob3cgQXVkaW8vVmlkZW8gVGVzdCwgMSBtZWFucyBzaG93IEF1ZGlvL1ZpZGVvCisJICogICAgICAgICAgICBUZXN0IEFwcGxpY2F0aW9uIGJlZm9yZSB0aGUgdXNlciBpcyBsb2dnZWQgaW50byB0aGUgcm9vbQorCSAqICAgICAgICAgICAgCisJICogQHJldHVybiAtIHNlY3VyZSBoYXNoIG9yIGVycm9yIGNvZGUKKwkgKi8KKwlwdWJsaWMgU3RyaW5nIHNldFVzZXJPYmplY3RBbmRHZW5lcmF0ZVJvb21IYXNoQnlVUkwoU3RyaW5nIFNJRCwKKwkJCVN0cmluZyB1c2VybmFtZSwgU3RyaW5nIGZpcnN0bmFtZSwgU3RyaW5nIGxhc3RuYW1lLAorCQkJU3RyaW5nIHByb2ZpbGVQaWN0dXJlVXJsLCBTdHJpbmcgZW1haWwsIFN0cmluZyBleHRlcm5hbFVzZXJJZCwKKwkJCVN0cmluZyBleHRlcm5hbFVzZXJUeXBlLCBMb25nIHJvb21faWQsIGludCBiZWNvbWVNb2RlcmF0b3JBc0ludCwKKwkJCWludCBzaG93QXVkaW9WaWRlb1Rlc3RBc0ludCkgeworCQlsb2cuZGVidWcoIlVzZXJTZXJ2aWNlLnNldFVzZXJPYmplY3QiKTsKKworCQl0cnkgeworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZW1lbnQuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1dlYlNlcnZpY2VMZXZlbCh1c2VyX2xldmVsKSkgeworCisJCQkJUmVtb3RlU2Vzc2lvbk9iamVjdCByZW1vdGVTZXNzaW9uT2JqZWN0ID0gbmV3IFJlbW90ZVNlc3Npb25PYmplY3QoCisJCQkJCQl1c2VybmFtZSwgZmlyc3RuYW1lLCBsYXN0bmFtZSwgcHJvZmlsZVBpY3R1cmVVcmwsCisJCQkJCQllbWFpbCwgZXh0ZXJuYWxVc2VySWQsIGV4dGVybmFsVXNlclR5cGUpOworCisJCQkJbG9nLmRlYnVnKCJ1c2VybmFtZSAiICsgdXNlcm5hbWUpOworCQkJCWxvZy5kZWJ1ZygiZmlyc3RuYW1lICIgKyBmaXJzdG5hbWUpOworCQkJCWxvZy5kZWJ1ZygibGFzdG5hbWUgIiArIGxhc3RuYW1lKTsKKwkJCQlsb2cuZGVidWcoInByb2ZpbGVQaWN0dXJlVXJsICIgKyBwcm9maWxlUGljdHVyZVVybCk7CisJCQkJbG9nLmRlYnVnKCJlbWFpbCAiICsgZW1haWwpOworCQkJCWxvZy5kZWJ1ZygiZXh0ZXJuYWxVc2VySWQgIiArIGV4dGVybmFsVXNlcklkKTsKKwkJCQlsb2cuZGVidWcoImV4dGVybmFsVXNlclR5cGUgIiArIGV4dGVybmFsVXNlclR5cGUpOworCisJCQkJLy8gWFN0cmVhbSB4U3RyZWFtID0gbmV3IFhTdHJlYW0obmV3IFhwcERyaXZlcigpKTsKKwkJCQlYU3RyZWFtIHhTdHJlYW0gPSBuZXcgWFN0cmVhbShuZXcgRG9tRHJpdmVyKCJVVEYtOCIpKTsKKwkJCQl4U3RyZWFtLnNldE1vZGUoWFN0cmVhbS5OT19SRUZFUkVOQ0VTKTsKKwkJCQlTdHJpbmcgeG1sU3RyaW5nID0geFN0cmVhbS50b1hNTChyZW1vdGVTZXNzaW9uT2JqZWN0KTsKKworCQkJCWxvZy5kZWJ1ZygieG1sU3RyaW5nICIgKyB4bWxTdHJpbmcpOworCisJCQkJc2Vzc2lvbmRhdGFEYW8udXBkYXRlVXNlclJlbW90ZVNlc3Npb24oU0lELCB4bWxTdHJpbmcpOworCisJCQkJYm9vbGVhbiBiZWNvbWVNb2RlcmF0b3IgPSBmYWxzZTsKKwkJCQlpZiAoYmVjb21lTW9kZXJhdG9yQXNJbnQgIT0gMCkgeworCQkJCQliZWNvbWVNb2RlcmF0b3IgPSB0cnVlOworCQkJCX0KKworCQkJCWJvb2xlYW4gc2hvd0F1ZGlvVmlkZW9UZXN0ID0gZmFsc2U7CisJCQkJaWYgKHNob3dBdWRpb1ZpZGVvVGVzdEFzSW50ICE9IDApIHsKKwkJCQkJc2hvd0F1ZGlvVmlkZW9UZXN0ID0gdHJ1ZTsKKwkJCQl9CisKKwkJCQlTdHJpbmcgaGFzaCA9IHNvYXBMb2dpbkRhby5hZGRTT0FQTG9naW4oU0lELCByb29tX2lkLAorCQkJCQkJYmVjb21lTW9kZXJhdG9yLCBzaG93QXVkaW9WaWRlb1Rlc3QsIHRydWUsIC8vIGFsbG93U2FtZVVSTE11bHRpcGxlVGltZXMKKwkJCQkJCW51bGwsIC8vIHJlY29yZGluZ19pZAorCQkJCQkJZmFsc2UsIC8vIHNob3dOaWNrTmFtZURpYWxvZ0FzSW50CisJCQkJCQkicm9vbSIsIC8vIExhbmRpbmdab25lLAorCQkJCQkJdHJ1ZSAvLyBhbGxvd1JlY29yZGluZworCQkJCQkJKTsKKworCQkJCWlmIChoYXNoICE9IG51bGwpIHsKKwkJCQkJcmV0dXJuIGhhc2g7CisJCQkJfQorCisJCQl9IGVsc2UgeworCQkJCXJldHVybiAiIiArIG5ldyBMb25nKC0yNik7CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigic2V0VXNlck9iamVjdFdpdGhBbmRHZW5lcmF0ZVJvb21IYXNoIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gIiIgKyBuZXcgTG9uZygtMSk7CisJfQorCisJLyoqCisJICogCisJICogRGVzY3JpcHRpb246IHNldHMgdGhlIFNlc3Npb25PYmplY3QgZm9yIGEgY2VydGFpbiBTSUQsIGFmdGVyIHNldHRpbmcgdGhpcworCSAqIFNlc3Npb24tT2JqZWN0IHlvdSBjYW4gdXNlIHRoZSBTSUQgKyBhIFJvb21JZCB0byBlbnRlciBhbnkgUm9vbS4KKwkgKiAKKwkgKiArKyB0aGUgdXNlciBjYW4gcHJlc3MgZjUgdG8gcmVsb2FkIHRoZSBwYWdlIC8gdXNlIHRoZSBsaW5rIHNldmVyYWwgdGltZXMsCisJICogdGhlIFNPQVAgR2F0ZXdheSBkb2VzIHJlbWVtYmVyIHRoZSBJUCBvZiB0aGUgdXNlciBhbmQgdGhlIHdpbGwgb25seSB0aGUKKwkgKiBmaXJzdCB1c2VyIHRoYXQgZW50ZXJzIHRoZSByb29tIGFsbG93IHRvIHJlLWVudGVyLiAuLi4gU2Vzc2lvbi1IYXNocyBhcmUKKwkgKiBkZWxldGVkIDE1IG1pbnV0ZXMgYWZ0ZXIgdGhlIGNyZWF0aW9uIGlmIG5vdCB1c2VkLgorCSAqIAorCSAqICsrIHNldHMgdGhlIGZsYWcgaWYgdGhlIHVzZXIgY2FuIGRvIHJlY29yZGluZyBpbiB0aGUgY29uZmVyZW5jZSByb29tCisJICogCisJICogQHBhcmFtIFNJRAorCSAqICAgICAgICAgICAgVGhlIFNJRCBmcm9tIGdldFNlc3Npb24KKwkgKiBAcGFyYW0gdXNlcm5hbWUKKwkgKiAgICAgICAgICAgIGFueSB1c2VybmFtZQorCSAqIEBwYXJhbSBmaXJzdG5hbWUKKwkgKiAgICAgICAgICAgIGFueSBmaXJzdG5hbWUKKwkgKiBAcGFyYW0gbGFzdG5hbWUKKwkgKiAgICAgICAgICAgIGFueSBsYXN0bmFtZQorCSAqIEBwYXJhbSBwcm9maWxlUGljdHVyZVVybAorCSAqICAgICAgICAgICAgYW55IHByb2ZpbGVQaWN0dXJlVXJsCisJICogQHBhcmFtIGVtYWlsCisJICogICAgICAgICAgICBhbnkgZW1haWwKKwkgKiBAcGFyYW0gZXh0ZXJuYWxVc2VySWQKKwkgKiAgICAgICAgICAgIGlmIHlvdSBoYXZlIGFueSBleHRlcm5hbCB1c2VyIElkIHlvdSBtYXkgc2V0IGl0IGhlcmUKKwkgKiBAcGFyYW0gZXh0ZXJuYWxVc2VyVHlwZQorCSAqICAgICAgICAgICAgeW91IGNhbiBzcGVjaWZ5IHlvdXIgc3lzdGVtLW5hbWUgaGVyZSwgZm9yIGV4YW1wbGUgIm1vb2RsZSIKKwkgKiBAcGFyYW0gcm9vbV9pZAorCSAqICAgICAgICAgICAgdGhlIHJvb20gaWQgdGhlIHVzZXIgc2hvdWxkIGJlIGxvZ2dlZCBpbgorCSAqIEBwYXJhbSBiZWNvbWVNb2RlcmF0b3JBc0ludAorCSAqICAgICAgICAgICAgMCBtZWFucyBubyBNb2RlcmF0b3IsIDEgbWVhbnMgTW9kZXJhdG9yCisJICogQHBhcmFtIHNob3dBdWRpb1ZpZGVvVGVzdEFzSW50CisJICogICAgICAgICAgICAwIG1lYW5zIGRvbid0IHNob3cgQXVkaW8vVmlkZW8gVGVzdCwgMSBtZWFucyBzaG93IEF1ZGlvL1ZpZGVvCisJICogICAgICAgICAgICBUZXN0IEFwcGxpY2F0aW9uIGJlZm9yZSB0aGUgdXNlciBpcyBsb2dnZWQgaW50byB0aGUgcm9vbQorCSAqIEBwYXJhbSBhbGxvd1JlY29yZGluZworCSAqICAgICAgICAgICAgMCBtZWFucyBkb24ndCBhbGxvdyBSZWNvcmRpbmcsIDEgbWVhbnMgYWxsb3cgUmVjb3JkaW5nCisJICogICAgICAgICAgICAKKwkgKiBAcmV0dXJuIC0gc2VjdXJlIGhhc2ggb3IgZXJyb3IgY29kZQorCSAqLworCXB1YmxpYyBTdHJpbmcgc2V0VXNlck9iamVjdEFuZEdlbmVyYXRlUm9vbUhhc2hCeVVSTEFuZFJlY0ZsYWcoU3RyaW5nIFNJRCwKKwkJCVN0cmluZyB1c2VybmFtZSwgU3RyaW5nIGZpcnN0bmFtZSwgU3RyaW5nIGxhc3RuYW1lLAorCQkJU3RyaW5nIHByb2ZpbGVQaWN0dXJlVXJsLCBTdHJpbmcgZW1haWwsIFN0cmluZyBleHRlcm5hbFVzZXJJZCwKKwkJCVN0cmluZyBleHRlcm5hbFVzZXJUeXBlLCBMb25nIHJvb21faWQsIGludCBiZWNvbWVNb2RlcmF0b3JBc0ludCwKKwkJCWludCBzaG93QXVkaW9WaWRlb1Rlc3RBc0ludCwgaW50IGFsbG93UmVjb3JkaW5nKSB7CisJCXRyeSB7CisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlbWVudC5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrV2ViU2VydmljZUxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlSZW1vdGVTZXNzaW9uT2JqZWN0IHJlbW90ZVNlc3Npb25PYmplY3QgPSBuZXcgUmVtb3RlU2Vzc2lvbk9iamVjdCgKKwkJCQkJCXVzZXJuYW1lLCBmaXJzdG5hbWUsIGxhc3RuYW1lLCBwcm9maWxlUGljdHVyZVVybCwKKwkJCQkJCWVtYWlsLCBleHRlcm5hbFVzZXJJZCwgZXh0ZXJuYWxVc2VyVHlwZSk7CisKKwkJCQlsb2cuZGVidWcoInVzZXJuYW1lICIgKyB1c2VybmFtZSk7CisJCQkJbG9nLmRlYnVnKCJmaXJzdG5hbWUgIiArIGZpcnN0bmFtZSk7CisJCQkJbG9nLmRlYnVnKCJsYXN0bmFtZSAiICsgbGFzdG5hbWUpOworCQkJCWxvZy5kZWJ1ZygicHJvZmlsZVBpY3R1cmVVcmwgIiArIHByb2ZpbGVQaWN0dXJlVXJsKTsKKwkJCQlsb2cuZGVidWcoImVtYWlsICIgKyBlbWFpbCk7CisJCQkJbG9nLmRlYnVnKCJleHRlcm5hbFVzZXJJZCAiICsgZXh0ZXJuYWxVc2VySWQpOworCQkJCWxvZy5kZWJ1ZygiZXh0ZXJuYWxVc2VyVHlwZSAiICsgZXh0ZXJuYWxVc2VyVHlwZSk7CisJCQkJbG9nLmRlYnVnKCJhbGxvd1JlY29yZGluZyAiICsgYWxsb3dSZWNvcmRpbmcpOworCisJCQkJLy8gWFN0cmVhbSB4U3RyZWFtID0gbmV3IFhTdHJlYW0obmV3IFhwcERyaXZlcigpKTsKKwkJCQlYU3RyZWFtIHhTdHJlYW0gPSBuZXcgWFN0cmVhbShuZXcgRG9tRHJpdmVyKCJVVEYtOCIpKTsKKwkJCQl4U3RyZWFtLnNldE1vZGUoWFN0cmVhbS5OT19SRUZFUkVOQ0VTKTsKKwkJCQlTdHJpbmcgeG1sU3RyaW5nID0geFN0cmVhbS50b1hNTChyZW1vdGVTZXNzaW9uT2JqZWN0KTsKKworCQkJCWxvZy5kZWJ1ZygieG1sU3RyaW5nICIgKyB4bWxTdHJpbmcpOworCisJCQkJc2Vzc2lvbmRhdGFEYW8udXBkYXRlVXNlclJlbW90ZVNlc3Npb24oU0lELCB4bWxTdHJpbmcpOworCisJCQkJYm9vbGVhbiBiZWNvbWVNb2RlcmF0b3IgPSBmYWxzZTsKKwkJCQlpZiAoYmVjb21lTW9kZXJhdG9yQXNJbnQgIT0gMCkgeworCQkJCQliZWNvbWVNb2RlcmF0b3IgPSB0cnVlOworCQkJCX0KKworCQkJCWJvb2xlYW4gc2hvd0F1ZGlvVmlkZW9UZXN0ID0gZmFsc2U7CisJCQkJaWYgKHNob3dBdWRpb1ZpZGVvVGVzdEFzSW50ICE9IDApIHsKKwkJCQkJc2hvd0F1ZGlvVmlkZW9UZXN0ID0gdHJ1ZTsKKwkJCQl9CisKKwkJCQlib29sZWFuIGFsbG93UmVjb3JkaW5nQm9vbCA9IGZhbHNlOworCQkJCWlmIChhbGxvd1JlY29yZGluZyAhPSAwKSB7CisJCQkJCWFsbG93UmVjb3JkaW5nQm9vbCA9IHRydWU7CisJCQkJfQorCisJCQkJU3RyaW5nIGhhc2ggPSBzb2FwTG9naW5EYW8uYWRkU09BUExvZ2luKFNJRCwgcm9vbV9pZCwKKwkJCQkJCWJlY29tZU1vZGVyYXRvciwgc2hvd0F1ZGlvVmlkZW9UZXN0LCB0cnVlLCAvLyBhbGxvd1NhbWVVUkxNdWx0aXBsZVRpbWVzCisJCQkJCQludWxsLCAvLyByZWNvcmRpbmdfaWQKKwkJCQkJCWZhbHNlLCAvLyBzaG93Tmlja05hbWVEaWFsb2dBc0ludAorCQkJCQkJInJvb20iLCAvLyBMYW5kaW5nWm9uZSwKKwkJCQkJCWFsbG93UmVjb3JkaW5nQm9vbCAvLyBhbGxvd1JlY29yZGluZworCQkJCQkJKTsKKworCQkJCWlmIChoYXNoICE9IG51bGwpIHsKKwkJCQkJcmV0dXJuIGhhc2g7CisJCQkJfQorCisJCQl9IGVsc2UgeworCQkJCXJldHVybiAiIiArIG5ldyBMb25nKC0yNik7CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigic2V0VXNlck9iamVjdFdpdGhBbmRHZW5lcmF0ZVJvb21IYXNoIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gIiIgKyBuZXcgTG9uZygtMSk7CisJfQorCisJLyoqCisJICogCisJICogRGVzY3JpcHRpb246IHNldHMgdGhlIFNlc3Npb25PYmplY3QgZm9yIGEgY2VydGFpbiBTSUQsIGFmdGVyIHNldHRpbmcgdGhpcworCSAqIFNlc3Npb24tT2JqZWN0IHlvdSBjYW4gdXNlIHRoZSBTSUQgYW5kIGRpcmVjdGx5IGxvZ2luIGludG8gdGhlIGRhc2hib2FyZAorCSAqIAorCSAqICsrIHRoZSB1c2VyIGNhbiBwcmVzcyBmNSB0byByZWxvYWQgdGhlIHBhZ2UgLyB1c2UgdGhlIGxpbmsgc2V2ZXJhbCB0aW1lcywKKwkgKiB0aGUgU09BUCBHYXRld2F5IGRvZXMgcmVtZW1iZXIgdGhlIElQIG9mIHRoZSB1c2VyIGFuZCB0aGUgd2lsbCBvbmx5IHRoZQorCSAqIGZpcnN0IHVzZXIgdGhhdCBlbnRlcnMgdGhlIHJvb20gYWxsb3cgdG8gcmUtZW50ZXIuIC4uLiBTZXNzaW9uLUhhc2hzIGFyZQorCSAqIGRlbGV0ZWQgMTUgbWludXRlcyBhZnRlciB0aGUgY3JlYXRpb24gaWYgbm90IHVzZWQuCisJICogCisJICogQHBhcmFtIFNJRAorCSAqICAgICAgICAgICAgVGhlIFNJRCBmcm9tIGdldFNlc3Npb24KKwkgKiBAcGFyYW0gdXNlcm5hbWUKKwkgKiAgICAgICAgICAgIGFueSB1c2VybmFtZQorCSAqIEBwYXJhbSBmaXJzdG5hbWUKKwkgKiAgICAgICAgICAgIGFueSBmaXJzdG5hbWUKKwkgKiBAcGFyYW0gbGFzdG5hbWUKKwkgKiAgICAgICAgICAgIGFueSBsYXN0bmFtZQorCSAqIEBwYXJhbSBwcm9maWxlUGljdHVyZVVybAorCSAqICAgICAgICAgICAgYW55IGFic29sdXRlIHByb2ZpbGVQaWN0dXJlVXJsCisJICogQHBhcmFtIGVtYWlsCisJICogICAgICAgICAgICBhbnkgZW1haWwKKwkgKiBAcGFyYW0gZXh0ZXJuYWxVc2VySWQKKwkgKiAgICAgICAgICAgIGlmIHlvdSBoYXZlIGFueSBleHRlcm5hbCB1c2VyIElkIHlvdSBtYXkgc2V0IGl0IGhlcmUKKwkgKiBAcGFyYW0gZXh0ZXJuYWxVc2VyVHlwZQorCSAqICAgICAgICAgICAgeW91IGNhbiBzcGVjaWZ5IHlvdXIgc3lzdGVtLW5hbWUgaGVyZSwgZm9yIGV4YW1wbGUgIm1vb2RsZSIKKwkgKiAgICAgICAgICAgIAorCSAqIEByZXR1cm4gLSBzZWN1cmUgaGFzaCBvciBlcnJvciBjb2RlCisJICovCisJcHVibGljIFN0cmluZyBzZXRVc2VyT2JqZWN0TWFpbkxhbmRpbmdab25lKFN0cmluZyBTSUQsIFN0cmluZyB1c2VybmFtZSwKKwkJCVN0cmluZyBmaXJzdG5hbWUsIFN0cmluZyBsYXN0bmFtZSwgU3RyaW5nIHByb2ZpbGVQaWN0dXJlVXJsLAorCQkJU3RyaW5nIGVtYWlsLCBTdHJpbmcgZXh0ZXJuYWxVc2VySWQsIFN0cmluZyBleHRlcm5hbFVzZXJUeXBlKSB7CisJCWxvZy5kZWJ1ZygiVXNlclNlcnZpY2Uuc2V0VXNlck9iamVjdE1haW5MYW5kaW5nWm9uZSIpOworCisJCXRyeSB7CisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlbWVudC5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrV2ViU2VydmljZUxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlSZW1vdGVTZXNzaW9uT2JqZWN0IHJlbW90ZVNlc3Npb25PYmplY3QgPSBuZXcgUmVtb3RlU2Vzc2lvbk9iamVjdCgKKwkJCQkJCXVzZXJuYW1lLCBmaXJzdG5hbWUsIGxhc3RuYW1lLCBwcm9maWxlUGljdHVyZVVybCwKKwkJCQkJCWVtYWlsLCBleHRlcm5hbFVzZXJJZCwgZXh0ZXJuYWxVc2VyVHlwZSk7CisKKwkJCQlsb2cuZGVidWcoInVzZXJuYW1lICIgKyB1c2VybmFtZSk7CisJCQkJbG9nLmRlYnVnKCJmaXJzdG5hbWUgIiArIGZpcnN0bmFtZSk7CisJCQkJbG9nLmRlYnVnKCJsYXN0bmFtZSAiICsgbGFzdG5hbWUpOworCQkJCWxvZy5kZWJ1ZygicHJvZmlsZVBpY3R1cmVVcmwgIiArIHByb2ZpbGVQaWN0dXJlVXJsKTsKKwkJCQlsb2cuZGVidWcoImVtYWlsICIgKyBlbWFpbCk7CisJCQkJbG9nLmRlYnVnKCJleHRlcm5hbFVzZXJJZCAiICsgZXh0ZXJuYWxVc2VySWQpOworCQkJCWxvZy5kZWJ1ZygiZXh0ZXJuYWxVc2VyVHlwZSAiICsgZXh0ZXJuYWxVc2VyVHlwZSk7CisKKwkJCQkvLyBYU3RyZWFtIHhTdHJlYW0gPSBuZXcgWFN0cmVhbShuZXcgWHBwRHJpdmVyKCkpOworCQkJCVhTdHJlYW0geFN0cmVhbSA9IG5ldyBYU3RyZWFtKG5ldyBEb21Ecml2ZXIoIlVURi04IikpOworCQkJCXhTdHJlYW0uc2V0TW9kZShYU3RyZWFtLk5PX1JFRkVSRU5DRVMpOworCQkJCVN0cmluZyB4bWxTdHJpbmcgPSB4U3RyZWFtLnRvWE1MKHJlbW90ZVNlc3Npb25PYmplY3QpOworCisJCQkJbG9nLmRlYnVnKCJ4bWxTdHJpbmcgIiArIHhtbFN0cmluZyk7CisKKwkJCQlzZXNzaW9uZGF0YURhby51cGRhdGVVc2VyUmVtb3RlU2Vzc2lvbihTSUQsIHhtbFN0cmluZyk7CisKKwkJCQlTdHJpbmcgaGFzaCA9IHNvYXBMb2dpbkRhby5hZGRTT0FQTG9naW4oU0lELCBudWxsLCBmYWxzZSwgdHJ1ZSwKKwkJCQkJCXRydWUsIC8vIGFsbG93U2FtZVVSTE11bHRpcGxlVGltZXMKKwkJCQkJCW51bGwsIC8vIHJlY29yZGluZ19pZAorCQkJCQkJZmFsc2UsIC8vIHNob3dOaWNrTmFtZURpYWxvZ0FzSW50CisJCQkJCQkiZGFzaGJvYXJkIiwgLy8gTGFuZGluZ1pvbmUsCisJCQkJCQl0cnVlIC8vIGFsbG93UmVjb3JkaW5nCisJCQkJCQkpOworCisJCQkJaWYgKGhhc2ggIT0gbnVsbCkgeworCQkJCQlyZXR1cm4gaGFzaDsKKwkJCQl9CisKKwkJCX0gZWxzZSB7CisKKwkJCQlsb2cuZGVidWcoIkludmFsaWQgYWNjZXNzIHZpYSBTT0FQICIgKyBTSUQgKyAiIFVzZXJEIgorCQkJCQkJKyB1c2Vyc19pZCArICIgIiArIHVzZXJfbGV2ZWwpOworCisJCQkJcmV0dXJuICIiICsgbmV3IExvbmcoLTI2KTsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJzZXRVc2VyT2JqZWN0V2l0aEFuZEdlbmVyYXRlUm9vbUhhc2giLCBlcnIpOworCQl9CisJCXJldHVybiAiIiArIG5ldyBMb25nKC0xKTsKKwl9CisKKwkvKioKKwkgKiAKKwkgKiBEZXNjcmlwdGlvbjogc2V0cyB0aGUgU2Vzc2lvbk9iamVjdCBmb3IgYSBjZXJ0YWluIFNJRCwgYWZ0ZXIgc2V0dGluZyB0aGlzCisJICogU2Vzc2lvbi1PYmplY3QgeW91IGNhbiB1c2UgdGhlIFNJRCArIGEgUm9vbUlkIHRvIGVudGVyIGFueSBSb29tLgorCSAqIAorCSAqICsrIHRoZSB1c2VyIGNhbiBwcmVzcyBmNSB0byByZWxvYWQgdGhlIHBhZ2UgLyB1c2UgdGhlIGxpbmsgc2V2ZXJhbCB0aW1lcywKKwkgKiB0aGUgU09BUCBHYXRld2F5IGRvZXMgcmVtZW1iZXIgdGhlIElQIG9mIHRoZSB1c2VyIGFuZCB0aGUgd2lsbCBvbmx5IHRoZQorCSAqIGZpcnN0IHVzZXIgdGhhdCBlbnRlcnMgdGhlIHJvb20gYWxsb3cgdG8gcmUtZW50ZXIuIC4uLiBTZXNzaW9uLUhhc2hzIGFyZQorCSAqIGRlbGV0ZWQgMTUgbWludXRlcyBhZnRlciB0aGUgY3JlYXRpb24gaWYgbm90IHVzZWQuCisJICogCisJICogKysgQWRkaXRpb25hbGx5IHlvdSBjYW4gc2V0IGEgcGFyYW0gc2hvd05pY2tOYW1lRGlhbG9nQXNJbnQsIHRoZSBlZmZlY3QKKwkgKiBpZiB0aGF0IHBhcmFtIGlzIDEgaXMsIHRoYXQgdGhlIHVzZXIgZ2V0cyBhIHBvcHVwIHdoZXJlIGhlIGNhbiBlbnRlciBoaXMKKwkgKiBuaWNrbmFtZSByaWdodCBiZWZvcmUgaGUgZW50ZXJzIHRoZSBjb25mZXJlbmNlIHJvb20uIEFsbCBuaWNrbmFtZXMgYW5kCisJICogZW1haWxzIHVzZXJzIGVudGVyIGFyZSBsb2dnZWQgaW4gdGhlIGNvbmZlcmVuY2Vsb2cgdGFibGUuCisJICogCisJICogQHBhcmFtIFNJRAorCSAqICAgICAgICAgICAgVGhlIFNJRCBmcm9tIGdldFNlc3Npb24KKwkgKiBAcGFyYW0gdXNlcm5hbWUKKwkgKiAgICAgICAgICAgIGFueSB1c2VybmFtZQorCSAqIEBwYXJhbSBmaXJzdG5hbWUKKwkgKiAgICAgICAgICAgIGFueSBmaXJzdG5hbWUKKwkgKiBAcGFyYW0gbGFzdG5hbWUKKwkgKiAgICAgICAgICAgIGFueSBsYXN0bmFtZQorCSAqIEBwYXJhbSBwcm9maWxlUGljdHVyZVVybAorCSAqICAgICAgICAgICAgYW55IHByb2ZpbGVQaWN0dXJlVXJsCisJICogQHBhcmFtIGVtYWlsCisJICogICAgICAgICAgICBhbnkgZW1haWwKKwkgKiBAcGFyYW0gZXh0ZXJuYWxVc2VySWQKKwkgKiAgICAgICAgICAgIGlmIHlvdSBoYXZlIGFueSBleHRlcm5hbCB1c2VyIElkIHlvdSBtYXkgc2V0IGl0IGhlcmUKKwkgKiBAcGFyYW0gZXh0ZXJuYWxVc2VyVHlwZQorCSAqICAgICAgICAgICAgeW91IGNhbiBzcGVjaWZ5IHlvdXIgc3lzdGVtLW5hbWUgaGVyZSwgZm9yIGV4YW1wbGUgIm1vb2RsZSIKKwkgKiBAcGFyYW0gcm9vbV9pZAorCSAqICAgICAgICAgICAgdGhlIHJvb20gaWQgdGhlIHVzZXIgc2hvdWxkIGJlIGxvZ2dlZCBpbgorCSAqIEBwYXJhbSBiZWNvbWVNb2RlcmF0b3JBc0ludAorCSAqICAgICAgICAgICAgMCBtZWFucyBubyBNb2RlcmF0b3IsIDEgbWVhbnMgTW9kZXJhdG9yCisJICogQHBhcmFtIHNob3dBdWRpb1ZpZGVvVGVzdEFzSW50CisJICogICAgICAgICAgICAwIG1lYW5zIGRvbid0IHNob3cgQXVkaW8vVmlkZW8gVGVzdCwgMSBtZWFucyBzaG93IEF1ZGlvL1ZpZGVvCisJICogICAgICAgICAgICBUZXN0IEFwcGxpY2F0aW9uIGJlZm9yZSB0aGUgdXNlciBpcyBsb2dnZWQgaW50byB0aGUgcm9vbQorCSAqIEBwYXJhbSBzaG93Tmlja05hbWVEaWFsb2dBc0ludAorCSAqICAgICAgICAgICAgMCBtZWFucyBkbyBub3Qgc2hvdyB0aGUgcG9wdXAgdG8gZW50ZXIgYSBuaWNobmFtZSwgMSBtZWFucworCSAqICAgICAgICAgICAgdGhhdCB0aGVyZSBpcyBhIHBvcHVwIHRvIGVudGVyIHRoZSBuaWNrbmFtZSBmb3IgdGhlIGNvbmZlcmVuY2UKKwkgKiAgICAgICAgICAgIAorCSAqIEByZXR1cm4gLSBzZWN1cmUgaGFzaCwgb3IgZXJyb3IgY29kZSAKKwkgKi8KKwlwdWJsaWMgU3RyaW5nIHNldFVzZXJBbmROaWNrTmFtZShTdHJpbmcgU0lELCBTdHJpbmcgdXNlcm5hbWUsCisJCQlTdHJpbmcgZmlyc3RuYW1lLCBTdHJpbmcgbGFzdG5hbWUsIFN0cmluZyBwcm9maWxlUGljdHVyZVVybCwKKwkJCVN0cmluZyBlbWFpbCwgU3RyaW5nIGV4dGVybmFsVXNlcklkLCBTdHJpbmcgZXh0ZXJuYWxVc2VyVHlwZSwKKwkJCUxvbmcgcm9vbV9pZCwgaW50IGJlY29tZU1vZGVyYXRvckFzSW50LAorCQkJaW50IHNob3dBdWRpb1ZpZGVvVGVzdEFzSW50LCBpbnQgc2hvd05pY2tOYW1lRGlhbG9nQXNJbnQpIHsKKwkJdHJ5IHsKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VtZW50LmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tXZWJTZXJ2aWNlTGV2ZWwodXNlcl9sZXZlbCkpIHsKKworCQkJCVJlbW90ZVNlc3Npb25PYmplY3QgcmVtb3RlU2Vzc2lvbk9iamVjdCA9IG5ldyBSZW1vdGVTZXNzaW9uT2JqZWN0KAorCQkJCQkJdXNlcm5hbWUsIGZpcnN0bmFtZSwgbGFzdG5hbWUsIHByb2ZpbGVQaWN0dXJlVXJsLAorCQkJCQkJZW1haWwsIGV4dGVybmFsVXNlcklkLCBleHRlcm5hbFVzZXJUeXBlKTsKKworCQkJCWxvZy5kZWJ1ZygidXNlcm5hbWUgIiArIHVzZXJuYW1lKTsKKwkJCQlsb2cuZGVidWcoImZpcnN0bmFtZSAiICsgZmlyc3RuYW1lKTsKKwkJCQlsb2cuZGVidWcoImxhc3RuYW1lICIgKyBsYXN0bmFtZSk7CisJCQkJbG9nLmRlYnVnKCJwcm9maWxlUGljdHVyZVVybCAiICsgcHJvZmlsZVBpY3R1cmVVcmwpOworCQkJCWxvZy5kZWJ1ZygiZW1haWwgIiArIGVtYWlsKTsKKwkJCQlsb2cuZGVidWcoImV4dGVybmFsVXNlcklkICIgKyBleHRlcm5hbFVzZXJJZCk7CisJCQkJbG9nLmRlYnVnKCJleHRlcm5hbFVzZXJUeXBlICIgKyBleHRlcm5hbFVzZXJUeXBlKTsKKwkJCQlsb2cuZGVidWcoInNob3dOaWNrTmFtZURpYWxvZ0FzSW50IiArIHNob3dOaWNrTmFtZURpYWxvZ0FzSW50KTsKKworCQkJCS8vIFhTdHJlYW0geFN0cmVhbSA9IG5ldyBYU3RyZWFtKG5ldyBYcHBEcml2ZXIoKSk7CisJCQkJWFN0cmVhbSB4U3RyZWFtID0gbmV3IFhTdHJlYW0obmV3IERvbURyaXZlcigiVVRGLTgiKSk7CisJCQkJeFN0cmVhbS5zZXRNb2RlKFhTdHJlYW0uTk9fUkVGRVJFTkNFUyk7CisJCQkJU3RyaW5nIHhtbFN0cmluZyA9IHhTdHJlYW0udG9YTUwocmVtb3RlU2Vzc2lvbk9iamVjdCk7CisKKwkJCQlsb2cuZGVidWcoInhtbFN0cmluZyAiICsgeG1sU3RyaW5nKTsKKworCQkJCXNlc3Npb25kYXRhRGFvLnVwZGF0ZVVzZXJSZW1vdGVTZXNzaW9uKFNJRCwgeG1sU3RyaW5nKTsKKworCQkJCWJvb2xlYW4gYmVjb21lTW9kZXJhdG9yID0gZmFsc2U7CisJCQkJaWYgKGJlY29tZU1vZGVyYXRvckFzSW50ICE9IDApIHsKKwkJCQkJYmVjb21lTW9kZXJhdG9yID0gdHJ1ZTsKKwkJCQl9CisKKwkJCQlib29sZWFuIHNob3dBdWRpb1ZpZGVvVGVzdCA9IGZhbHNlOworCQkJCWlmIChzaG93QXVkaW9WaWRlb1Rlc3RBc0ludCAhPSAwKSB7CisJCQkJCXNob3dBdWRpb1ZpZGVvVGVzdCA9IHRydWU7CisJCQkJfQorCisJCQkJYm9vbGVhbiBzaG93Tmlja05hbWVEaWFsb2cgPSBmYWxzZTsKKwkJCQlpZiAoc2hvd05pY2tOYW1lRGlhbG9nQXNJbnQgIT0gMCkgeworCQkJCQlzaG93Tmlja05hbWVEaWFsb2cgPSB0cnVlOworCQkJCX0KKworCQkJCVN0cmluZyBoYXNoID0gc29hcExvZ2luRGFvLmFkZFNPQVBMb2dpbihTSUQsIHJvb21faWQsCisJCQkJCQliZWNvbWVNb2RlcmF0b3IsIHNob3dBdWRpb1ZpZGVvVGVzdCwgdHJ1ZSwgbnVsbCwKKwkJCQkJCXNob3dOaWNrTmFtZURpYWxvZywgInJvb20iLCAvLyBMYW5kaW5nWm9uZSwKKwkJCQkJCXRydWUgLy8gYWxsb3dSZWNvcmRpbmcKKwkJCQkJCSk7CisKKwkJCQlpZiAoaGFzaCAhPSBudWxsKSB7CisJCQkJCXJldHVybiBoYXNoOworCQkJCX0KKworCQkJfSBlbHNlIHsKKwkJCQlyZXR1cm4gIiIgKyBuZXcgTG9uZygtMjYpOworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoInNldFVzZXJPYmplY3RXaXRoQW5kR2VuZXJhdGVSb29tSGFzaCIsIGVycik7CisJCX0KKwkJcmV0dXJuICIiICsgbmV3IExvbmcoLTEpOworCX0KKworCS8qKgorCSAqIFVzZSB0aGlzIG1ldGhvZCB0byBhY2Nlc3MgYSBSZWNvcmRpbmcgaW5zdGVhZCBvZiBSb29tCisJICogCisJICogQHBhcmFtIFNJRAorCSAqICAgICAgICAgICAgVGhlIFNJRCBmcm9tIGdldFNlc3Npb24KKwkgKiBAcGFyYW0gdXNlcm5hbWUKKwkgKiAgICAgICAgICAgIGFueSB1c2VybmFtZQorCSAqIEBwYXJhbSBmaXJzdG5hbWUKKwkgKiAgICAgICAgICAgIGFueSBmaXJzdG5hbWUKKwkgKiBAcGFyYW0gbGFzdG5hbWUKKwkgKiAgICAgICAgICAgIGFueSBsYXN0bmFtZQorCSAqIEBwYXJhbSBleHRlcm5hbFVzZXJJZAorCSAqICAgICAgICAgICAgaWYgeW91IGhhdmUgYW55IGV4dGVybmFsIHVzZXIgSWQgeW91IG1heSBzZXQgaXQgaGVyZQorCSAqIEBwYXJhbSBleHRlcm5hbFVzZXJUeXBlCisJICogICAgICAgICAgICB5b3UgY2FuIHNwZWNpZnkgeW91ciBzeXN0ZW0tbmFtZSBoZXJlLCBmb3IgZXhhbXBsZSAibW9vZGxlIgorCSAqIEBwYXJhbSByZWNvcmRpbmdfaWQKKwkgKiAgICAgICAgICAgIHRoZSBpZCBvZiB0aGUgcmVjb3JkaW5nLCBnZXQgYSBMaXN0IG9mIGFsbCBSZWNvcmRpbmdzIHdpdGgKKwkgKiAgICAgICAgICAgIFJvb21TZXJ2aWNlOjpnZXRGbHZSZWNvcmRpbmdCeUV4dGVybmFsUm9vbVR5cGUKKwkgKiAgICAgICAgICAgIAorCSAqIEByZXR1cm4gLSBoYXNoIG9mIHRoZSByZWNvcmRpbmcsIG9yIGVycm9yIGlkCisJICovCisJcHVibGljIFN0cmluZyBzZXRVc2VyT2JqZWN0QW5kR2VuZXJhdGVSZWNvcmRpbmdIYXNoQnlVUkwoU3RyaW5nIFNJRCwKKwkJCVN0cmluZyB1c2VybmFtZSwgU3RyaW5nIGZpcnN0bmFtZSwgU3RyaW5nIGxhc3RuYW1lLAorCQkJU3RyaW5nIGV4dGVybmFsVXNlcklkLCBTdHJpbmcgZXh0ZXJuYWxVc2VyVHlwZSwgTG9uZyByZWNvcmRpbmdfaWQpIHsKKwkJdHJ5IHsKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VtZW50LmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tXZWJTZXJ2aWNlTGV2ZWwodXNlcl9sZXZlbCkpIHsKKworCQkJCVJlbW90ZVNlc3Npb25PYmplY3QgcmVtb3RlU2Vzc2lvbk9iamVjdCA9IG5ldyBSZW1vdGVTZXNzaW9uT2JqZWN0KAorCQkJCQkJdXNlcm5hbWUsIGZpcnN0bmFtZSwgIiIsICIiLCAiIiwgZXh0ZXJuYWxVc2VySWQsCisJCQkJCQlleHRlcm5hbFVzZXJUeXBlKTsKKworCQkJCWxvZy5kZWJ1ZygidXNlcm5hbWUgIiArIHVzZXJuYW1lKTsKKwkJCQlsb2cuZGVidWcoImZpcnN0bmFtZSAiICsgZmlyc3RuYW1lKTsKKwkJCQlsb2cuZGVidWcoImxhc3RuYW1lICIgKyBsYXN0bmFtZSk7CisJCQkJbG9nLmRlYnVnKCJwcm9maWxlUGljdHVyZVVybCAiICsgIiIpOworCQkJCWxvZy5kZWJ1ZygiZW1haWwgIiArICIiKTsKKwkJCQlsb2cuZGVidWcoImV4dGVybmFsVXNlcklkICIgKyBleHRlcm5hbFVzZXJJZCk7CisJCQkJbG9nLmRlYnVnKCJleHRlcm5hbFVzZXJUeXBlICIgKyBleHRlcm5hbFVzZXJUeXBlKTsKKworCQkJCS8vIFhTdHJlYW0geFN0cmVhbSA9IG5ldyBYU3RyZWFtKG5ldyBYcHBEcml2ZXIoKSk7CisJCQkJWFN0cmVhbSB4U3RyZWFtID0gbmV3IFhTdHJlYW0obmV3IERvbURyaXZlcigiVVRGLTgiKSk7CisJCQkJeFN0cmVhbS5zZXRNb2RlKFhTdHJlYW0uTk9fUkVGRVJFTkNFUyk7CisJCQkJU3RyaW5nIHhtbFN0cmluZyA9IHhTdHJlYW0udG9YTUwocmVtb3RlU2Vzc2lvbk9iamVjdCk7CisKKwkJCQlsb2cuZGVidWcoInhtbFN0cmluZyAiICsgeG1sU3RyaW5nKTsKKworCQkJCXNlc3Npb25kYXRhRGFvLnVwZGF0ZVVzZXJSZW1vdGVTZXNzaW9uKFNJRCwgeG1sU3RyaW5nKTsKKworCQkJCVN0cmluZyBoYXNoID0gc29hcExvZ2luRGFvLmFkZFNPQVBMb2dpbihTSUQsIG51bGwsIGZhbHNlLAorCQkJCQkJZmFsc2UsIHRydWUsIC8vIGFsbG93U2FtZVVSTE11bHRpcGxlVGltZXMKKwkJCQkJCXJlY29yZGluZ19pZCwgLy8gcmVjb3JkaW5nX2lkCisJCQkJCQlmYWxzZSwgLy8gc2hvd05pY2tOYW1lRGlhbG9nQXNJbnQKKwkJCQkJCSJyb29tIiwgLy8gTGFuZGluZ1pvbmUsCisJCQkJCQl0cnVlIC8vIGFsbG93UmVjb3JkaW5nCisJCQkJCQkpOworCisJCQkJaWYgKGhhc2ggIT0gbnVsbCkgeworCQkJCQlyZXR1cm4gaGFzaDsKKwkJCQl9CisKKwkJCX0gZWxzZSB7CisJCQkJcmV0dXJuICIiICsgbmV3IExvbmcoLTI2KTsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJzZXRVc2VyT2JqZWN0V2l0aEFuZEdlbmVyYXRlUm9vbUhhc2giLCBlcnIpOworCQl9CisJCXJldHVybiAiIiArIG5ldyBMb25nKC0xKTsKKwl9CisKKwkvKioKKwkgKiAKKwkgKiBBZGQgYSB1c2VyIHRvIGEgY2VydGFpbiBvcmdhbml6YXRpb24KKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogICAgICAgICAgICBUaGUgU0lEIGZyb20gZ2V0U2Vzc2lvbgorCSAqIEBwYXJhbSB1c2VyX2lkCisJICogICAgICAgICAgICB0aGUgdXNlciBpZAorCSAqIEBwYXJhbSBvcmdhbmlzYXRpb25faWQKKwkgKiAgICAgICAgICAgIHRoZSBvcmdhbml6YXRpb24gaWQKKwkgKiBAcGFyYW0gaW5zZXJ0ZWRieQorCSAqICAgICAgICAgICAgdXNlciBpZCBvZiB0aGUgb3BlcmF0aW5nIHVzZXIKKwkgKiBAcmV0dXJuIC0gaWQgb2YgdGhlIHVzZXIgYWRkZWQsIG9yIGVycm9yIGlkIGluIGNhc2Ugb2YgdGhlIGVycm9yCisJICovCisJcHVibGljIExvbmcgYWRkVXNlclRvT3JnYW5pc2F0aW9uKFN0cmluZyBTSUQsIExvbmcgdXNlcl9pZCwKKwkJCUxvbmcgb3JnYW5pc2F0aW9uX2lkLCBMb25nIGluc2VydGVkYnkpIHsKKwkJdHJ5IHsKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VtZW50LmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tXZWJTZXJ2aWNlTGV2ZWwodXNlcl9sZXZlbCkpIHsKKworCQkJCXJldHVybiBvcmdhbmlzYXRpb25NYW5hZ2VyLmFkZFVzZXJUb09yZ2FuaXNhdGlvbih1c2VyX2lkLAorCQkJCQkJb3JnYW5pc2F0aW9uX2lkLCB1c2Vyc19pZCk7CisKKwkJCX0gZWxzZSB7CisJCQkJcmV0dXJuIG5ldyBMb25nKC0yNik7CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiYWRkVXNlclRvT3JnYW5pc2F0aW9uIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbmV3IExvbmcoLTEpOworCX0KKworCS8qKgorCSAqIFNlYXJjaCB1c2VycyBhbmQgcmV0dXJuIHRoZW0KKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogICAgICAgICAgICBUaGUgU0lEIGZyb20gZ2V0U2Vzc2lvbgorCSAqIEBwYXJhbSBvcmdhbmlzYXRpb25faWQKKwkgKiAgICAgICAgICAgIHRoZSBvcmdhbml6YXRpb24gaWQKKwkgKiBAcGFyYW0gc3RhcnQKKwkgKiAgICAgICAgICAgIGZpcnN0IHJlY29yZAorCSAqIEBwYXJhbSBtYXgKKwkgKiAgICAgICAgICAgIG1heCByZWNvcmRzCisJICogQHBhcmFtIG9yZGVyYnkKKwkgKiAgICAgICAgICAgIG9yZGVyYnkgY2xhdXNlCisJICogQHBhcmFtIGFzYworCSAqICAgICAgICAgICAgYXNjIG9yIGRlc2MKKwkgKiBAcmV0dXJuIC0gdXNlcnMgZm91bmQKKwkgKi8KKwlwdWJsaWMgU2VhcmNoUmVzdWx0PFVzZXI+IGdldFVzZXJzQnlPcmdhbmlzYXRpb24oU3RyaW5nIFNJRCwKKwkJCWxvbmcgb3JnYW5pc2F0aW9uX2lkLCBpbnQgc3RhcnQsIGludCBtYXgsIFN0cmluZyBvcmRlcmJ5LAorCQkJYm9vbGVhbiBhc2MpIHsKKwkJdHJ5IHsKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VtZW50LmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tXZWJTZXJ2aWNlTGV2ZWwodXNlcl9sZXZlbCkpIHsKKwkJCQlyZXR1cm4gb3JnYW5pc2F0aW9uTWFuYWdlcgorCQkJCQkJLmdldFVzZXJzU2VhcmNoUmVzdWx0QnlPcmdhbmlzYXRpb25JZChvcmdhbmlzYXRpb25faWQsCisJCQkJCQkJCXN0YXJ0LCBtYXgsIG9yZGVyYnksIGFzYyk7CisJCQl9IGVsc2UgeworCQkJCWxvZy5lcnJvcigiTmVlZCBBZG1pbmlzdHJhdGlvbiBBY2NvdW50Iik7CisJCQkJU2VhcmNoUmVzdWx0PFVzZXI+IHNSZXN1bHQgPSBuZXcgU2VhcmNoUmVzdWx0PFVzZXI+KCk7CisJCQkJc1Jlc3VsdC5zZXRFcnJvcklkKC0yNkwpOworCQkJCXJldHVybiBzUmVzdWx0OworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoImdldFVzZXJzQnlPcmdhbmlzYXRpb24iLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCS8qKgorCSAqIEtpY2sgYSB1c2VyIGJ5IGl0cyBwdWJsaWMgU0lECisJICogCisJICogQHBhcmFtIFNJRAorCSAqICAgICAgICAgICAgVGhlIFNJRCBmcm9tIGdldFNlc3Npb24KKwkgKiBAcGFyYW0gcHVibGljU0lECisJICogICAgICAgICAgICB0aGUgcHVibGljU0lEICh5b3UgY2FuIGdldCBpdCBmcm9tIHRoZSBjYWxsIHRvIGdldCB1c2VycyBpbiBhCisJICogICAgICAgICAgICByb29tKQorCSAqIEByZXR1cm4gLSA8Y29kZT50cnVlPC9jb2RlPiBpZiB1c2VyIHdhcyBraWNrZWQKKwkgKi8KKwlwdWJsaWMgQm9vbGVhbiBraWNrVXNlckJ5UHVibGljU0lEKFN0cmluZyBTSUQsIFN0cmluZyBwdWJsaWNTSUQpIHsKKwkJdHJ5IHsKKwkJCUJvb2xlYW4gc3VjY2VzcyA9IGZhbHNlOworCisJCQlzdWNjZXNzID0gdXNlck1hbmFnZW1lbnQua2lja1VzZXJCeVB1YmxpY1NJRChTSUQsIHB1YmxpY1NJRCk7CisKKwkJCWlmIChzdWNjZXNzID09IG51bGwpCisJCQkJc3VjY2VzcyA9IGZhbHNlOworCisJCQlyZXR1cm4gc3VjY2VzczsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJba2lja1VzZXJdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisJCisJLyoqCisJICogYWRkIGEgbmV3IG9yZ2FuaXNhdGlvbgorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiAgICAgICAgICAgIFRoZSBTSUQgZnJvbSBnZXRTZXNzaW9uCisJICogQHBhcmFtIG5hbWUKKwkgKiAgICAgICAgICAgIHRoZSBuYW1lIG9mIHRoZSBvcmcKKwkgKiBAcmV0dXJuIHRoZSBuZXcgaWQgb2YgdGhlIG9yZyBvciAtMSBpbiBjYXNlIGFuIGVycm9yIGhhcHBlbmVkCisJICogQHRocm93cyBBeGlzRmF1bHQKKwkgKi8KKwlwdWJsaWMgTG9uZyBhZGRPcmdhbmlzYXRpb24oU3RyaW5nIFNJRCwgU3RyaW5nIG5hbWUpIHRocm93cyBBeGlzRmF1bHQgeworCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VtZW50LmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1dlYlNlcnZpY2VMZXZlbCh1c2VyX2xldmVsKSkgeworCQkJcmV0dXJuIG9yZ2FuaXNhdGlvbk1hbmFnZXIuYWRkT3JnYW5pc2F0aW9uKG5hbWUsIHVzZXJzX2lkKTsKKwkJfQorCQlsb2cuZXJyb3IoIkNvdWxkIG5vdCBjcmVhdGUgb3JnYW5pemF0aW9uIik7CisJCXJldHVybiAtMUw7CisJfQorCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvYXhpcy9zZXJ2aWNlcy9Vc2VyV2ViU2VydmljZUZhY2FkZS5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2F4aXMvc2VydmljZXMvVXNlcldlYlNlcnZpY2VGYWNhZGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZGEzYWVlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2F4aXMvc2VydmljZXMvVXNlcldlYlNlcnZpY2VGYWNhZGUuamF2YQpAQCAtMCwwICsxLDI4OSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5heGlzLnNlcnZpY2VzOworCitpbXBvcnQgb3JnLmFwYWNoZS5heGlzMi5BeGlzRmF1bHQ7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iZWFucy5iYXNpYy5FcnJvclJlc3VsdDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJlYW5zLmJhc2ljLlNlYXJjaFJlc3VsdDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5TZXNzaW9uZGF0YTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlVzZXI7CisKK3B1YmxpYyBjbGFzcyBVc2VyV2ViU2VydmljZUZhY2FkZSBleHRlbmRzIEJhc2VXZWJTZXJ2aWNlIHsKKworCS8qKgorCSAqIGxvYWQgdGhpcyBzZXNzaW9uIGlkIGJlZm9yZSBkb2luZyBhbnl0aGluZyBlbHNlCisJICogCisJICogQHJldHVybiBTZXNzaW9uZGF0YS1PYmplY3QKKwkgKi8KKwlwdWJsaWMgU2Vzc2lvbmRhdGEgZ2V0U2Vzc2lvbigpIHRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihVc2VyV2ViU2VydmljZS5jbGFzcykuZ2V0U2Vzc2lvbigpOworCX0KKworCS8qKgorCSAqIGF1dGggZnVuY3Rpb24sIHVzZSB0aGUgU0lEIHlvdSBnZXQgYnkgZ2V0U2Vzc2lvbgorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiBAcGFyYW0gVXNlcm5hbWUKKwkgKiBAcGFyYW0gVXNlcnBhc3MKKwkgKiBAcmV0dXJuIHBvc2l0aXZlIG1lYW5zIExvZ2dlZGluLCBpZiBuZWdhdGl2IGl0cyBhbiBFcnJvckNvZGUsIHlvdSBoYXZlIHRvCisJICogICAgICAgICBpbnZva2UgdGhlIE1ldGhvZCBnZXRFcnJvckJ5Q29kZSB0byBnZXQgdGhlIFRleHQtRGVzY3JpcHRpb24gb2YKKwkgKiAgICAgICAgIHRoYXQgRXJyb3JDb2RlCisJICovCisJcHVibGljIExvbmcgbG9naW5Vc2VyKFN0cmluZyBTSUQsIFN0cmluZyB1c2VybmFtZSwgU3RyaW5nIHVzZXJwYXNzKQorCQkJdGhyb3dzIEF4aXNGYXVsdCB7CisJCXJldHVybiBnZXRCZWFuKFVzZXJXZWJTZXJ2aWNlLmNsYXNzKS5sb2dpblVzZXIoU0lELCB1c2VybmFtZSwgdXNlcnBhc3MpOworCX0KKworCS8qKgorCSAqIEdldHMgdGhlIEVycm9yLU9iamVjdAorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiBAcGFyYW0gZXJyb3JpZAorCSAqIEBwYXJhbSBsYW5ndWFnZV9pZAorCSAqIEByZXR1cm4KKwkgKiBAdGhyb3dzIEF4aXNGYXVsdCAKKwkgKi8KKwlwdWJsaWMgRXJyb3JSZXN1bHQgZ2V0RXJyb3JCeUNvZGUoU3RyaW5nIFNJRCwgTG9uZyBlcnJvcmlkLCBMb25nIGxhbmd1YWdlX2lkKSB0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJcmV0dXJuIGdldEJlYW4oVXNlcldlYlNlcnZpY2UuY2xhc3MpLmdldEVycm9yQnlDb2RlKFNJRCwgZXJyb3JpZCwgbGFuZ3VhZ2VfaWQpOworCX0KKworCXB1YmxpYyBMb25nIGFkZE5ld1VzZXIoU3RyaW5nIFNJRCwgU3RyaW5nIHVzZXJuYW1lLCBTdHJpbmcgdXNlcnBhc3MsCisJCQlTdHJpbmcgbGFzdG5hbWUsIFN0cmluZyBmaXJzdG5hbWUsIFN0cmluZyBlbWFpbCwKKwkJCVN0cmluZyBhZGRpdGlvbmFsbmFtZSwgU3RyaW5nIHN0cmVldCwgU3RyaW5nIHppcCwgU3RyaW5nIGZheCwKKwkJCWxvbmcgc3RhdGVzX2lkLCBTdHJpbmcgdG93biwgbG9uZyBsYW5ndWFnZV9pZCwgU3RyaW5nIGJhc2VVUkwpCisJCQl0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJcmV0dXJuIGdldEJlYW4oVXNlcldlYlNlcnZpY2UuY2xhc3MpLmFkZE5ld1VzZXIoU0lELCB1c2VybmFtZSwgdXNlcnBhc3MsCisJCQkJbGFzdG5hbWUsIGZpcnN0bmFtZSwgZW1haWwsIGFkZGl0aW9uYWxuYW1lLCBzdHJlZXQsIHppcCwgZmF4LAorCQkJCXN0YXRlc19pZCwgdG93biwgbGFuZ3VhZ2VfaWQsIGJhc2VVUkwpOworCX0KKworCXB1YmxpYyBMb25nIGFkZE5ld1VzZXJXaXRoVGltZVpvbmUoU3RyaW5nIFNJRCwgU3RyaW5nIHVzZXJuYW1lLAorCQkJU3RyaW5nIHVzZXJwYXNzLCBTdHJpbmcgbGFzdG5hbWUsIFN0cmluZyBmaXJzdG5hbWUsIFN0cmluZyBlbWFpbCwKKwkJCVN0cmluZyBhZGRpdGlvbmFsbmFtZSwgU3RyaW5nIHN0cmVldCwgU3RyaW5nIHppcCwgU3RyaW5nIGZheCwKKwkJCWxvbmcgc3RhdGVzX2lkLCBTdHJpbmcgdG93biwgbG9uZyBsYW5ndWFnZV9pZCwgU3RyaW5nIGJhc2VVUkwsCisJCQlTdHJpbmcgak5hbWVUaW1lWm9uZSkgdGhyb3dzIEF4aXNGYXVsdCB7CisJCXJldHVybiBnZXRCZWFuKFVzZXJXZWJTZXJ2aWNlLmNsYXNzKS5hZGROZXdVc2VyV2l0aFRpbWVab25lKFNJRCwgdXNlcm5hbWUsCisJCQkJdXNlcnBhc3MsIGxhc3RuYW1lLCBmaXJzdG5hbWUsIGVtYWlsLCBhZGRpdGlvbmFsbmFtZSwgc3RyZWV0LAorCQkJCXppcCwgZmF4LCBzdGF0ZXNfaWQsIHRvd24sIGxhbmd1YWdlX2lkLCBiYXNlVVJMLCBqTmFtZVRpbWVab25lKTsKKworCX0KKworCS8qKgorCSAqIAorCSAqIEFkZHMgYSB1c2VyIHdpdGggYW4gZXh0ZXJuYWxVc2VySWQgYW5kIHR5cGUsIGJ1dCBjaGVja3MgaWYgdGhlIHVzZXIvdHlwZQorCSAqIGRvZXMgYWxyZWFkeSBleGlzdAorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiBAcGFyYW0gdXNlcm5hbWUKKwkgKiBAcGFyYW0gdXNlcnBhc3MKKwkgKiBAcGFyYW0gbGFzdG5hbWUKKwkgKiBAcGFyYW0gZmlyc3RuYW1lCisJICogQHBhcmFtIGVtYWlsCisJICogQHBhcmFtIGFkZGl0aW9uYWxuYW1lCisJICogQHBhcmFtIHN0cmVldAorCSAqIEBwYXJhbSB6aXAKKwkgKiBAcGFyYW0gZmF4CisJICogQHBhcmFtIHN0YXRlc19pZAorCSAqIEBwYXJhbSB0b3duCisJICogQHBhcmFtIGxhbmd1YWdlX2lkCisJICogQHBhcmFtIGpOYW1lVGltZVpvbmUKKwkgKiBAcGFyYW0gZXh0ZXJuYWxVc2VySWQKKwkgKiBAcGFyYW0gZXh0ZXJuYWxVc2VyVHlwZQorCSAqIEByZXR1cm4KKwkgKiBAdGhyb3dzIEF4aXNGYXVsdAorCSAqLworCXB1YmxpYyBMb25nIGFkZE5ld1VzZXJXaXRoRXh0ZXJuYWxUeXBlKFN0cmluZyBTSUQsIFN0cmluZyB1c2VybmFtZSwKKwkJCVN0cmluZyB1c2VycGFzcywgU3RyaW5nIGxhc3RuYW1lLCBTdHJpbmcgZmlyc3RuYW1lLCBTdHJpbmcgZW1haWwsCisJCQlTdHJpbmcgYWRkaXRpb25hbG5hbWUsIFN0cmluZyBzdHJlZXQsIFN0cmluZyB6aXAsIFN0cmluZyBmYXgsCisJCQlsb25nIHN0YXRlc19pZCwgU3RyaW5nIHRvd24sIGxvbmcgbGFuZ3VhZ2VfaWQsCisJCQlTdHJpbmcgak5hbWVUaW1lWm9uZSwgU3RyaW5nIGV4dGVybmFsVXNlcklkLCBTdHJpbmcgZXh0ZXJuYWxVc2VyVHlwZSkKKwkJCXRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihVc2VyV2ViU2VydmljZS5jbGFzcykuYWRkTmV3VXNlcldpdGhFeHRlcm5hbFR5cGUoU0lELCB1c2VybmFtZSwKKwkJCQl1c2VycGFzcywgbGFzdG5hbWUsIGZpcnN0bmFtZSwgZW1haWwsIGFkZGl0aW9uYWxuYW1lLCBzdHJlZXQsCisJCQkJemlwLCBmYXgsIHN0YXRlc19pZCwgdG93biwgbGFuZ3VhZ2VfaWQsIGpOYW1lVGltZVpvbmUsCisJCQkJZXh0ZXJuYWxVc2VySWQsIGV4dGVybmFsVXNlclR5cGUpOworCisJfQorCisJLyoqCisJICogCisJICogZGVsZXRlIGEgdXNlciBieSBpdHMgaWQKKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogQHBhcmFtIHVzZXJJZAorCSAqIEByZXR1cm4KKwkgKiBAdGhyb3dzIEF4aXNGYXVsdAorCSAqLworCXB1YmxpYyBMb25nIGRlbGV0ZVVzZXJCeUlkKFN0cmluZyBTSUQsIExvbmcgdXNlcklkKSB0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJcmV0dXJuIGdldEJlYW4oVXNlcldlYlNlcnZpY2UuY2xhc3MpLmRlbGV0ZVVzZXJCeUlkKFNJRCwgdXNlcklkKTsKKwl9CisKKwkvKioKKwkgKiAKKwkgKiBkZWxldGUgYSB1c2VyIGJ5IGl0cyBleHRlcm5hbCB1c2VyIGlkIGFuZCB0eXBlCisJICogCisJICogQHBhcmFtIFNJRAorCSAqIEBwYXJhbSBleHRlcm5hbFVzZXJJZAorCSAqIEBwYXJhbSBleHRlcm5hbFVzZXJUeXBlCisJICogQHJldHVybgorCSAqIEB0aHJvd3MgQXhpc0ZhdWx0CisJICovCisJcHVibGljIExvbmcgZGVsZXRlVXNlckJ5RXh0ZXJuYWxVc2VySWRBbmRUeXBlKFN0cmluZyBTSUQsCisJCQlTdHJpbmcgZXh0ZXJuYWxVc2VySWQsIFN0cmluZyBleHRlcm5hbFVzZXJUeXBlKSB0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJcmV0dXJuIGdldEJlYW4oVXNlcldlYlNlcnZpY2UuY2xhc3MpLmRlbGV0ZVVzZXJCeUV4dGVybmFsVXNlcklkQW5kVHlwZShTSUQsCisJCQkJZXh0ZXJuYWxVc2VySWQsIGV4dGVybmFsVXNlclR5cGUpOworCX0KKworCS8qKgorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiBAcGFyYW0gZmlyc3RuYW1lCisJICogQHBhcmFtIGxhc3RuYW1lCisJICogQHBhcmFtIHByb2ZpbGVQaWN0dXJlVXJsCisJICogQHBhcmFtIGVtYWlsCisJICogQHJldHVybgorCSAqIEB0aHJvd3MgQXhpc0ZhdWx0CisJICovCisJQERlcHJlY2F0ZWQKKwlwdWJsaWMgTG9uZyBzZXRVc2VyT2JqZWN0KFN0cmluZyBTSUQsIFN0cmluZyB1c2VybmFtZSwgU3RyaW5nIGZpcnN0bmFtZSwKKwkJCVN0cmluZyBsYXN0bmFtZSwgU3RyaW5nIHByb2ZpbGVQaWN0dXJlVXJsLCBTdHJpbmcgZW1haWwpCisJCQl0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJcmV0dXJuIGdldEJlYW4oVXNlcldlYlNlcnZpY2UuY2xhc3MpLnNldFVzZXJPYmplY3QoU0lELCB1c2VybmFtZSwgZmlyc3RuYW1lLAorCQkJCWxhc3RuYW1lLCBwcm9maWxlUGljdHVyZVVybCwgZW1haWwpOworCX0KKworCS8qKgorCSAqIFRoaXMgaXMgdGhlIGFkdmFuY2VkIHRlY2huaXF1ZSB0byBzZXQgdGhlIFVzZXIgT2JqZWN0ICsgc2ltdWxhdGUgYSBVc2VyCisJICogZnJvbSB0aGUgZXh0ZXJuYWwgc3lzdGVtLCB0aGlzIGlzIG5lZWRlZCBjYXVzZSB5b3UgY2FuIHRoYXQgYWx3YXlzCisJICogc2ltdWxhdGUgdG8gc2FtZSB1c2VyIGluIG9wZW5tZWV0aW5ncworCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiBAcGFyYW0gdXNlcm5hbWUKKwkgKiBAcGFyYW0gZmlyc3RuYW1lCisJICogQHBhcmFtIGxhc3RuYW1lCisJICogQHBhcmFtIHByb2ZpbGVQaWN0dXJlVXJsCisJICogQHBhcmFtIGVtYWlsCisJICogQHBhcmFtIGV4dGVybmFsVXNlcklkCisJICogICAgICAgICAgICB0aGUgVXNlciBJZCBvZiB0aGUgZXh0ZXJuYWwgU3lzdGVtCisJICogQHBhcmFtIGV4dGVybmFsVXNlclR5cGUKKwkgKiAgICAgICAgICAgIHRoZSBOYW1lIG9mIHRoZSBleHRlcm5hbCBzeXN0ZW0sIGZvciBleGFtcGxlIHlvdSBjYW4gcnVuCisJICogICAgICAgICAgICBzZXZlcmFsIGV4dGVybmFsIHN5c3RlbSBhbmQgb25lIG1lZXRpbmcgc2VydmVyCisJICogQHJldHVybgorCSAqIEB0aHJvd3MgQXhpc0ZhdWx0CisJICovCisJQERlcHJlY2F0ZWQKKwlwdWJsaWMgTG9uZyBzZXRVc2VyT2JqZWN0V2l0aEV4dGVybmFsVXNlcihTdHJpbmcgU0lELCBTdHJpbmcgdXNlcm5hbWUsCisJCQlTdHJpbmcgZmlyc3RuYW1lLCBTdHJpbmcgbGFzdG5hbWUsIFN0cmluZyBwcm9maWxlUGljdHVyZVVybCwKKwkJCVN0cmluZyBlbWFpbCwgU3RyaW5nIGV4dGVybmFsVXNlcklkLCBTdHJpbmcgZXh0ZXJuYWxVc2VyVHlwZSkKKwkJCXRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihVc2VyV2ViU2VydmljZS5jbGFzcykuc2V0VXNlck9iamVjdFdpdGhFeHRlcm5hbFVzZXIoU0lELAorCQkJCXVzZXJuYW1lLCBmaXJzdG5hbWUsIGxhc3RuYW1lLCBwcm9maWxlUGljdHVyZVVybCwgZW1haWwsCisJCQkJZXh0ZXJuYWxVc2VySWQsIGV4dGVybmFsVXNlclR5cGUpOworCX0KKworCXB1YmxpYyBTdHJpbmcgc2V0VXNlck9iamVjdEFuZEdlbmVyYXRlUm9vbUhhc2goU3RyaW5nIFNJRCwgU3RyaW5nIHVzZXJuYW1lLAorCQkJU3RyaW5nIGZpcnN0bmFtZSwgU3RyaW5nIGxhc3RuYW1lLCBTdHJpbmcgcHJvZmlsZVBpY3R1cmVVcmwsCisJCQlTdHJpbmcgZW1haWwsIFN0cmluZyBleHRlcm5hbFVzZXJJZCwgU3RyaW5nIGV4dGVybmFsVXNlclR5cGUsCisJCQlMb25nIHJvb21faWQsIGludCBiZWNvbWVNb2RlcmF0b3JBc0ludCwgaW50IHNob3dBdWRpb1ZpZGVvVGVzdEFzSW50KQorCQkJdGhyb3dzIEF4aXNGYXVsdCB7CisJCXJldHVybiBnZXRCZWFuKFVzZXJXZWJTZXJ2aWNlLmNsYXNzKS5zZXRVc2VyT2JqZWN0QW5kR2VuZXJhdGVSb29tSGFzaChTSUQsCisJCQkJdXNlcm5hbWUsIGZpcnN0bmFtZSwgbGFzdG5hbWUsIHByb2ZpbGVQaWN0dXJlVXJsLCBlbWFpbCwKKwkJCQlleHRlcm5hbFVzZXJJZCwgZXh0ZXJuYWxVc2VyVHlwZSwgcm9vbV9pZCwKKwkJCQliZWNvbWVNb2RlcmF0b3JBc0ludCwgc2hvd0F1ZGlvVmlkZW9UZXN0QXNJbnQpOworCX0KKworCXB1YmxpYyBTdHJpbmcgc2V0VXNlck9iamVjdEFuZEdlbmVyYXRlUm9vbUhhc2hCeVVSTChTdHJpbmcgU0lELAorCQkJU3RyaW5nIHVzZXJuYW1lLCBTdHJpbmcgZmlyc3RuYW1lLCBTdHJpbmcgbGFzdG5hbWUsCisJCQlTdHJpbmcgcHJvZmlsZVBpY3R1cmVVcmwsIFN0cmluZyBlbWFpbCwgU3RyaW5nIGV4dGVybmFsVXNlcklkLAorCQkJU3RyaW5nIGV4dGVybmFsVXNlclR5cGUsIExvbmcgcm9vbV9pZCwgaW50IGJlY29tZU1vZGVyYXRvckFzSW50LAorCQkJaW50IHNob3dBdWRpb1ZpZGVvVGVzdEFzSW50KSB0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJcmV0dXJuIGdldEJlYW4oVXNlcldlYlNlcnZpY2UuY2xhc3MpLnNldFVzZXJPYmplY3RBbmRHZW5lcmF0ZVJvb21IYXNoQnlVUkwoU0lELAorCQkJCXVzZXJuYW1lLCBmaXJzdG5hbWUsIGxhc3RuYW1lLCBwcm9maWxlUGljdHVyZVVybCwgZW1haWwsCisJCQkJZXh0ZXJuYWxVc2VySWQsIGV4dGVybmFsVXNlclR5cGUsIHJvb21faWQsCisJCQkJYmVjb21lTW9kZXJhdG9yQXNJbnQsIHNob3dBdWRpb1ZpZGVvVGVzdEFzSW50KTsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIHNldFVzZXJPYmplY3RBbmRHZW5lcmF0ZVJvb21IYXNoQnlVUkxBbmRSZWNGbGFnKFN0cmluZyBTSUQsCisJCQlTdHJpbmcgdXNlcm5hbWUsIFN0cmluZyBmaXJzdG5hbWUsIFN0cmluZyBsYXN0bmFtZSwKKwkJCVN0cmluZyBwcm9maWxlUGljdHVyZVVybCwgU3RyaW5nIGVtYWlsLCBTdHJpbmcgZXh0ZXJuYWxVc2VySWQsCisJCQlTdHJpbmcgZXh0ZXJuYWxVc2VyVHlwZSwgTG9uZyByb29tX2lkLCBpbnQgYmVjb21lTW9kZXJhdG9yQXNJbnQsCisJCQlpbnQgc2hvd0F1ZGlvVmlkZW9UZXN0QXNJbnQsIGludCBhbGxvd1JlY29yZGluZykgdGhyb3dzIEF4aXNGYXVsdCB7CisJCXJldHVybiBnZXRCZWFuKFVzZXJXZWJTZXJ2aWNlLmNsYXNzKQorCQkJCS5zZXRVc2VyT2JqZWN0QW5kR2VuZXJhdGVSb29tSGFzaEJ5VVJMQW5kUmVjRmxhZyhTSUQsIHVzZXJuYW1lLAorCQkJCQkJZmlyc3RuYW1lLCBsYXN0bmFtZSwgcHJvZmlsZVBpY3R1cmVVcmwsIGVtYWlsLAorCQkJCQkJZXh0ZXJuYWxVc2VySWQsIGV4dGVybmFsVXNlclR5cGUsIHJvb21faWQsCisJCQkJCQliZWNvbWVNb2RlcmF0b3JBc0ludCwgc2hvd0F1ZGlvVmlkZW9UZXN0QXNJbnQsCisJCQkJCQlhbGxvd1JlY29yZGluZyk7CisJfQorCisJcHVibGljIFN0cmluZyBzZXRVc2VyT2JqZWN0TWFpbkxhbmRpbmdab25lKFN0cmluZyBTSUQsIFN0cmluZyB1c2VybmFtZSwKKwkJCVN0cmluZyBmaXJzdG5hbWUsIFN0cmluZyBsYXN0bmFtZSwgU3RyaW5nIHByb2ZpbGVQaWN0dXJlVXJsLAorCQkJU3RyaW5nIGVtYWlsLCBTdHJpbmcgZXh0ZXJuYWxVc2VySWQsIFN0cmluZyBleHRlcm5hbFVzZXJUeXBlKQorCQkJdGhyb3dzIEF4aXNGYXVsdCB7CisJCXJldHVybiBnZXRCZWFuKFVzZXJXZWJTZXJ2aWNlLmNsYXNzKS5zZXRVc2VyT2JqZWN0TWFpbkxhbmRpbmdab25lKFNJRCwKKwkJCQl1c2VybmFtZSwgZmlyc3RuYW1lLCBsYXN0bmFtZSwgcHJvZmlsZVBpY3R1cmVVcmwsIGVtYWlsLAorCQkJCWV4dGVybmFsVXNlcklkLCBleHRlcm5hbFVzZXJUeXBlKTsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIHNldFVzZXJBbmROaWNrTmFtZShTdHJpbmcgU0lELCBTdHJpbmcgdXNlcm5hbWUsCisJCQlTdHJpbmcgZmlyc3RuYW1lLCBTdHJpbmcgbGFzdG5hbWUsIFN0cmluZyBwcm9maWxlUGljdHVyZVVybCwKKwkJCVN0cmluZyBlbWFpbCwgU3RyaW5nIGV4dGVybmFsVXNlcklkLCBTdHJpbmcgZXh0ZXJuYWxVc2VyVHlwZSwKKwkJCUxvbmcgcm9vbV9pZCwgaW50IGJlY29tZU1vZGVyYXRvckFzSW50LAorCQkJaW50IHNob3dBdWRpb1ZpZGVvVGVzdEFzSW50LCBpbnQgc2hvd05pY2tOYW1lRGlhbG9nQXNJbnQpCisJCQl0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJcmV0dXJuIGdldEJlYW4oVXNlcldlYlNlcnZpY2UuY2xhc3MpLnNldFVzZXJBbmROaWNrTmFtZShTSUQsIHVzZXJuYW1lLAorCQkJCWZpcnN0bmFtZSwgbGFzdG5hbWUsIHByb2ZpbGVQaWN0dXJlVXJsLCBlbWFpbCwgZXh0ZXJuYWxVc2VySWQsCisJCQkJZXh0ZXJuYWxVc2VyVHlwZSwgcm9vbV9pZCwgYmVjb21lTW9kZXJhdG9yQXNJbnQsCisJCQkJc2hvd0F1ZGlvVmlkZW9UZXN0QXNJbnQsIHNob3dOaWNrTmFtZURpYWxvZ0FzSW50KTsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIHNldFVzZXJPYmplY3RBbmRHZW5lcmF0ZVJlY29yZGluZ0hhc2hCeVVSTChTdHJpbmcgU0lELAorCQkJU3RyaW5nIHVzZXJuYW1lLCBTdHJpbmcgZmlyc3RuYW1lLCBTdHJpbmcgbGFzdG5hbWUsCisJCQlTdHJpbmcgZXh0ZXJuYWxVc2VySWQsIFN0cmluZyBleHRlcm5hbFVzZXJUeXBlLCBMb25nIHJlY29yZGluZ19pZCkKKwkJCXRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihVc2VyV2ViU2VydmljZS5jbGFzcykKKwkJCQkuc2V0VXNlck9iamVjdEFuZEdlbmVyYXRlUmVjb3JkaW5nSGFzaEJ5VVJMKFNJRCwgdXNlcm5hbWUsCisJCQkJCQlmaXJzdG5hbWUsIGxhc3RuYW1lLCBleHRlcm5hbFVzZXJJZCwgZXh0ZXJuYWxVc2VyVHlwZSwKKwkJCQkJCXJlY29yZGluZ19pZCk7CisJfQorCisJcHVibGljIExvbmcgYWRkVXNlclRvT3JnYW5pc2F0aW9uKFN0cmluZyBTSUQsIExvbmcgdXNlcl9pZCwKKwkJCUxvbmcgb3JnYW5pc2F0aW9uX2lkLCBMb25nIGluc2VydGVkYnkpCisJCQl0aHJvd3MgQXhpc0ZhdWx0IHsKKwkJcmV0dXJuIGdldEJlYW4oVXNlcldlYlNlcnZpY2UuY2xhc3MpLmFkZFVzZXJUb09yZ2FuaXNhdGlvbihTSUQsIHVzZXJfaWQsCisJCQkJb3JnYW5pc2F0aW9uX2lkLCBpbnNlcnRlZGJ5KTsKKwl9CisKKwlwdWJsaWMgU2VhcmNoUmVzdWx0PFVzZXI+IGdldFVzZXJzQnlPcmdhbmlzYXRpb24oU3RyaW5nIFNJRCwKKwkJCWxvbmcgb3JnYW5pc2F0aW9uX2lkLCBpbnQgc3RhcnQsIGludCBtYXgsIFN0cmluZyBvcmRlcmJ5LAorCQkJYm9vbGVhbiBhc2MpIHRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihVc2VyV2ViU2VydmljZS5jbGFzcykuZ2V0VXNlcnNCeU9yZ2FuaXNhdGlvbihTSUQsCisJCQkJb3JnYW5pc2F0aW9uX2lkLCBzdGFydCwgbWF4LCBvcmRlcmJ5LCBhc2MpOworCX0KKworCXB1YmxpYyBCb29sZWFuIGtpY2tVc2VyQnlQdWJsaWNTSUQoU3RyaW5nIFNJRCwgU3RyaW5nIHB1YmxpY1NJRCkKKwkJCXRocm93cyBBeGlzRmF1bHQgeworCQlyZXR1cm4gZ2V0QmVhbihVc2VyV2ViU2VydmljZS5jbGFzcykua2lja1VzZXJCeVB1YmxpY1NJRChTSUQsIHB1YmxpY1NJRCk7CisJfQorCQorCXB1YmxpYyBMb25nIGFkZE9yZ2FuaXNhdGlvbihTdHJpbmcgU0lELCBTdHJpbmcgbmFtZSkgdGhyb3dzIEF4aXNGYXVsdCB7CisJCXJldHVybiBnZXRCZWFuKFVzZXJXZWJTZXJ2aWNlLmNsYXNzKS5hZGRPcmdhbmlzYXRpb24oU0lELCBuYW1lKTsKKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9iYWNrdXAvQXBwb2ludG1lbnRDYXRlZ29yeUNvbnZlcnRlci5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2JhY2t1cC9BcHBvaW50bWVudENhdGVnb3J5Q29udmVydGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2I3NDdlNAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9iYWNrdXAvQXBwb2ludG1lbnRDYXRlZ29yeUNvbnZlcnRlci5qYXZhCkBAIC0wLDAgKzEsNDYgQEAKKy8qDQorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAqIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuYmFja3VwOw0KKw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNhbGVuZGFyLmRhb3MuQXBwb2ludG1lbnRDYXRlZ29yeURhbzsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuY2FsZW5kYXIuQXBwb2ludG1lbnRDYXRlZ29yeTsNCitpbXBvcnQgb3JnLnNpbXBsZWZyYW1ld29yay54bWwuc3RyZWFtLklucHV0Tm9kZTsNCitpbXBvcnQgb3JnLnNpbXBsZWZyYW1ld29yay54bWwuc3RyZWFtLk91dHB1dE5vZGU7DQorDQorcHVibGljIGNsYXNzIEFwcG9pbnRtZW50Q2F0ZWdvcnlDb252ZXJ0ZXIgIGV4dGVuZHMgT21Db252ZXJ0ZXI8QXBwb2ludG1lbnRDYXRlZ29yeT4gew0KKwlwcml2YXRlIEFwcG9pbnRtZW50Q2F0ZWdvcnlEYW8gYXBwb2ludG1lbnRDYXRlZ29yeURhb0ltcGw7DQorCQ0KKwlwdWJsaWMgQXBwb2ludG1lbnRDYXRlZ29yeUNvbnZlcnRlcigpIHsNCisJCS8vZGVmYXVsdCBjb25zdHJ1Y3RvciBpcyBmb3IgZXhwb3J0DQorCX0NCisJDQorCXB1YmxpYyBBcHBvaW50bWVudENhdGVnb3J5Q29udmVydGVyKEFwcG9pbnRtZW50Q2F0ZWdvcnlEYW8gYXBwb2ludG1lbnRDYXRlZ29yeURhb0ltcGwpIHsNCisJCXRoaXMuYXBwb2ludG1lbnRDYXRlZ29yeURhb0ltcGwgPSBhcHBvaW50bWVudENhdGVnb3J5RGFvSW1wbDsNCisJfQ0KKwkNCisJcHVibGljIEFwcG9pbnRtZW50Q2F0ZWdvcnkgcmVhZChJbnB1dE5vZGUgbm9kZSkgdGhyb3dzIEV4Y2VwdGlvbiB7DQorCQlyZXR1cm4gYXBwb2ludG1lbnRDYXRlZ29yeURhb0ltcGwuZ2V0QXBwb2ludG1lbnRDYXRlZ29yeUJ5SWQoZ2V0bG9uZ1ZhbHVlKG5vZGUpKTsNCisJfQ0KKw0KKwlwdWJsaWMgdm9pZCB3cml0ZShPdXRwdXROb2RlIG5vZGUsIEFwcG9pbnRtZW50Q2F0ZWdvcnkgdmFsdWUpDQorCQkJdGhyb3dzIEV4Y2VwdGlvbiB7DQorCQlub2RlLnNldERhdGEodHJ1ZSk7DQorCQlub2RlLnNldFZhbHVlKHZhbHVlID09IG51bGwgPyAiMCIgOiAiIiArIHZhbHVlLmdldENhdGVnb3J5SWQoKSk7DQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2JhY2t1cC9BcHBvaW50bWVudENvbnZlcnRlci5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2JhY2t1cC9BcHBvaW50bWVudENvbnZlcnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlNTY1NDEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvYmFja3VwL0FwcG9pbnRtZW50Q29udmVydGVyLmphdmEKQEAgLTAsMCArMSw1MyBAQAorLyoNCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICogdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5iYWNrdXA7DQorDQoraW1wb3J0IGphdmEudXRpbC5NYXA7DQorDQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY2FsZW5kYXIuZGFvcy5BcHBvaW50bWVudERhbzsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuY2FsZW5kYXIuQXBwb2ludG1lbnQ7DQoraW1wb3J0IG9yZy5zaW1wbGVmcmFtZXdvcmsueG1sLnN0cmVhbS5JbnB1dE5vZGU7DQoraW1wb3J0IG9yZy5zaW1wbGVmcmFtZXdvcmsueG1sLnN0cmVhbS5PdXRwdXROb2RlOw0KKw0KK3B1YmxpYyBjbGFzcyBBcHBvaW50bWVudENvbnZlcnRlciBleHRlbmRzIE9tQ29udmVydGVyPEFwcG9pbnRtZW50PiB7DQorCXByaXZhdGUgQXBwb2ludG1lbnREYW8gYXBwb2ludG1lbnREYW87DQorCXByaXZhdGUgTWFwPExvbmcsIExvbmc+IGlkTWFwOw0KKwkNCisJcHVibGljIEFwcG9pbnRtZW50Q29udmVydGVyKCkgew0KKwkJLy9kZWZhdWx0IGNvbnN0cnVjdG9yIGlzIGZvciBleHBvcnQNCisJfQ0KKwkNCisJcHVibGljIEFwcG9pbnRtZW50Q29udmVydGVyKEFwcG9pbnRtZW50RGFvIGFwcG9pbnRtZW50RGFvLCBNYXA8TG9uZywgTG9uZz4gaWRNYXApIHsNCisJCXRoaXMuYXBwb2ludG1lbnREYW8gPSBhcHBvaW50bWVudERhbzsNCisJCXRoaXMuaWRNYXAgPSBpZE1hcDsNCisJfQ0KKwkNCisJcHVibGljIEFwcG9pbnRtZW50IHJlYWQoSW5wdXROb2RlIG5vZGUpIHRocm93cyBFeGNlcHRpb24gew0KKwkJbG9uZyBvbGRJZCA9IGdldGxvbmdWYWx1ZShub2RlKTsNCisJCWxvbmcgbmV3SWQgPSBpZE1hcC5jb250YWluc0tleShvbGRJZCkgPyBpZE1hcC5nZXQob2xkSWQpIDogb2xkSWQ7DQorCQkNCisJCUFwcG9pbnRtZW50IGEgPSBhcHBvaW50bWVudERhby5nZXRBcHBvaW50bWVudEJ5SWRCYWNrdXAobmV3SWQpOw0KKwkJcmV0dXJuIGEgPT0gbnVsbCA/IG5ldyBBcHBvaW50bWVudCgpIDogYTsNCisJfQ0KKw0KKwlwdWJsaWMgdm9pZCB3cml0ZShPdXRwdXROb2RlIG5vZGUsIEFwcG9pbnRtZW50IHZhbHVlKSB0aHJvd3MgRXhjZXB0aW9uIHsNCisJCW5vZGUuc2V0RGF0YSh0cnVlKTsNCisJCW5vZGUuc2V0VmFsdWUodmFsdWUgPT0gbnVsbCA/ICIwIiA6ICIiICsgdmFsdWUuZ2V0QXBwb2ludG1lbnRJZCgpKTsNCisJfQ0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvYmFja3VwL0FwcG9pbnRtZW50UmVtaW5kZXJUeXBlQ29udmVydGVyLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvYmFja3VwL0FwcG9pbnRtZW50UmVtaW5kZXJUeXBlQ29udmVydGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjlkNGUxOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9iYWNrdXAvQXBwb2ludG1lbnRSZW1pbmRlclR5cGVDb252ZXJ0ZXIuamF2YQpAQCAtMCwwICsxLDQ1IEBACisvKg0KKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgKiB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmJhY2t1cDsNCisNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jYWxlbmRhci5kYW9zLkFwcG9pbnRtZW50UmVtaW5kZXJUeXBEYW87DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmNhbGVuZGFyLkFwcG9pbnRtZW50UmVtaW5kZXJUeXBzOw0KK2ltcG9ydCBvcmcuc2ltcGxlZnJhbWV3b3JrLnhtbC5zdHJlYW0uSW5wdXROb2RlOw0KK2ltcG9ydCBvcmcuc2ltcGxlZnJhbWV3b3JrLnhtbC5zdHJlYW0uT3V0cHV0Tm9kZTsNCisNCitwdWJsaWMgY2xhc3MgQXBwb2ludG1lbnRSZW1pbmRlclR5cGVDb252ZXJ0ZXIgZXh0ZW5kcyBPbUNvbnZlcnRlcjxBcHBvaW50bWVudFJlbWluZGVyVHlwcz4gew0KKwlwcml2YXRlIEFwcG9pbnRtZW50UmVtaW5kZXJUeXBEYW8gYXBwb2ludG1lbnRSZW1pbmRlclR5cERhb0ltcGw7DQorCQ0KKwlwdWJsaWMgQXBwb2ludG1lbnRSZW1pbmRlclR5cGVDb252ZXJ0ZXIoKSB7DQorCQkvL2RlZmF1bHQgY29uc3RydWN0b3IgaXMgZm9yIGV4cG9ydA0KKwl9DQorCQ0KKwlwdWJsaWMgQXBwb2ludG1lbnRSZW1pbmRlclR5cGVDb252ZXJ0ZXIoQXBwb2ludG1lbnRSZW1pbmRlclR5cERhbyBhcHBvaW50bWVudFJlbWluZGVyVHlwRGFvSW1wbCkgew0KKwkJdGhpcy5hcHBvaW50bWVudFJlbWluZGVyVHlwRGFvSW1wbCA9IGFwcG9pbnRtZW50UmVtaW5kZXJUeXBEYW9JbXBsOw0KKwl9DQorCQ0KKwlwdWJsaWMgQXBwb2ludG1lbnRSZW1pbmRlclR5cHMgcmVhZChJbnB1dE5vZGUgbm9kZSkgdGhyb3dzIEV4Y2VwdGlvbiB7DQorCQlyZXR1cm4gYXBwb2ludG1lbnRSZW1pbmRlclR5cERhb0ltcGwuZ2V0QXBwb2ludG1lbnRSZW1pbmRlclR5cEJ5SWQoZ2V0bG9uZ1ZhbHVlKG5vZGUpKTsNCisJfQ0KKw0KKwlwdWJsaWMgdm9pZCB3cml0ZShPdXRwdXROb2RlIG5vZGUsIEFwcG9pbnRtZW50UmVtaW5kZXJUeXBzIHZhbHVlKSB0aHJvd3MgRXhjZXB0aW9uIHsNCisJCW5vZGUuc2V0RGF0YSh0cnVlKTsNCisJCW5vZGUuc2V0VmFsdWUodmFsdWUgPT0gbnVsbCA/ICIwIiA6ICIiICsgdmFsdWUuZ2V0VHlwSWQoKSk7DQorCX0NCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2JhY2t1cC9EYXRlQ29udmVydGVyLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvYmFja3VwL0RhdGVDb252ZXJ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjliNmYwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2JhY2t1cC9EYXRlQ29udmVydGVyLmphdmEKQEAgLTAsMCArMSwzOSBAQAorLyoNCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICogdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5iYWNrdXA7DQorDQoraW1wb3J0IGphdmEudXRpbC5EYXRlOw0KKw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5tYXRoLkNhbGVuZGFyUGF0dGVybnM7DQoraW1wb3J0IG9yZy5zaW1wbGVmcmFtZXdvcmsueG1sLmNvbnZlcnQuQ29udmVydGVyOw0KK2ltcG9ydCBvcmcuc2ltcGxlZnJhbWV3b3JrLnhtbC5zdHJlYW0uSW5wdXROb2RlOw0KK2ltcG9ydCBvcmcuc2ltcGxlZnJhbWV3b3JrLnhtbC5zdHJlYW0uT3V0cHV0Tm9kZTsNCisNCitwdWJsaWMgY2xhc3MgRGF0ZUNvbnZlcnRlciBpbXBsZW1lbnRzIENvbnZlcnRlcjxEYXRlPiB7DQorCXB1YmxpYyBEYXRlIHJlYWQoSW5wdXROb2RlIG5vZGUpIHRocm93cyBFeGNlcHRpb24gew0KKwkJU3RyaW5nIHZhbCA9IG5vZGUuZ2V0VmFsdWUoKTsNCisJCXJldHVybiB2YWwgPT0gbnVsbCB8fCAibnVsbCIuZXF1YWxzKHZhbCkgPyBuZXcgRGF0ZSgpIDogQ2FsZW5kYXJQYXR0ZXJucy5wYXJzZUltcG9ydERhdGUodmFsKTsNCisJfQ0KKw0KKwlwdWJsaWMgdm9pZCB3cml0ZShPdXRwdXROb2RlIG5vZGUsIERhdGUgdmFsdWUpIHRocm93cyBFeGNlcHRpb24gew0KKwkJbm9kZS5zZXRBdHRyaWJ1dGUoImNsYXNzIiwgImphdmEudXRpbC5EYXRlIik7DQorCQlub2RlLnNldERhdGEodHJ1ZSk7DQorCQlub2RlLnNldFZhbHVlKHZhbHVlID09IG51bGwgPyAiMCIgOiBDYWxlbmRhclBhdHRlcm5zLmdldEV4cG9ydERhdGUodmFsdWUpKTsNCisJfQ0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvYmFja3VwL0lubGluZUNvbnZlcnRlci5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2JhY2t1cC9JbmxpbmVDb252ZXJ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YWI5ZjI0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2JhY2t1cC9JbmxpbmVDb252ZXJ0ZXIuamF2YQpAQCAtMCwwICsxLDI5IEBACisvKg0KKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgKiB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmJhY2t1cDsNCisNCitpbXBvcnQgb3JnLnNpbXBsZWZyYW1ld29yay54bWwuc3RyZWFtLklucHV0Tm9kZTsNCisNCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgSW5saW5lQ29udmVydGVyPFQ+IGV4dGVuZHMgT21Db252ZXJ0ZXI8VD4gew0KKwkNCisJU3RyaW5nIGdldE5leHRWYWx1ZShJbnB1dE5vZGUgcGFyZW50LCBTdHJpbmcgbmFtZSkgdGhyb3dzIEV4Y2VwdGlvbiB7DQorCQlJbnB1dE5vZGUgbm9kZSA9IHBhcmVudC5nZXROZXh0KG5hbWUpOw0KKwkJcmV0dXJuIG5vZGUgIT0gbnVsbCA/IG5vZGUuZ2V0VmFsdWUoKSA6IG51bGw7DQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2JhY2t1cC9JbnRlZ2VyVHJhbnNmb3JtLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvYmFja3VwL0ludGVnZXJUcmFuc2Zvcm0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzFjMjJmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2JhY2t1cC9JbnRlZ2VyVHJhbnNmb3JtLmphdmEKQEAgLTAsMCArMSwzMiBAQAorLyoNCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICogdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5iYWNrdXA7DQorDQoraW1wb3J0IG9yZy5zaW1wbGVmcmFtZXdvcmsueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm07DQorDQorcHVibGljIGNsYXNzIEludGVnZXJUcmFuc2Zvcm0gaW1wbGVtZW50cyBUcmFuc2Zvcm08SW50ZWdlcj57DQorCXB1YmxpYyBJbnRlZ2VyIHJlYWQoU3RyaW5nIHZhbHVlKSB0aHJvd3MgRXhjZXB0aW9uIHsNCisJCXJldHVybiBPbUNvbnZlcnRlci5nZXRpbnRWYWx1ZSh2YWx1ZSwgMCk7DQorCX0NCisNCisJcHVibGljIFN0cmluZyB3cml0ZShJbnRlZ2VyIHZhbHVlKSB0aHJvd3MgRXhjZXB0aW9uIHsNCisJCXJldHVybiAiIiArIHZhbHVlOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9iYWNrdXAvTG9uZ1RyYW5zZm9ybS5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2JhY2t1cC9Mb25nVHJhbnNmb3JtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjMyMzhhOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9iYWNrdXAvTG9uZ1RyYW5zZm9ybS5qYXZhCkBAIC0wLDAgKzEsMzIgQEAKKy8qDQorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAqIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuYmFja3VwOw0KKw0KK2ltcG9ydCBvcmcuc2ltcGxlZnJhbWV3b3JrLnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtOw0KKw0KK3B1YmxpYyBjbGFzcyBMb25nVHJhbnNmb3JtIGltcGxlbWVudHMgVHJhbnNmb3JtPExvbmc+ew0KKwlwdWJsaWMgTG9uZyByZWFkKFN0cmluZyB2YWx1ZSkgdGhyb3dzIEV4Y2VwdGlvbiB7DQorCQlyZXR1cm4gT21Db252ZXJ0ZXIuZ2V0bG9uZ1ZhbHVlKHZhbHVlKTsNCisJfQ0KKw0KKwlwdWJsaWMgU3RyaW5nIHdyaXRlKExvbmcgdmFsdWUpIHRocm93cyBFeGNlcHRpb24gew0KKwkJcmV0dXJuICIiICsgdmFsdWU7DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2JhY2t1cC9PbUNvbnZlcnRlci5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2JhY2t1cC9PbUNvbnZlcnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3YTNkNGMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvYmFja3VwL09tQ29udmVydGVyLmphdmEKQEAgLTAsMCArMSw1MiBAQAorLyoNCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICogdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5iYWNrdXA7DQorDQoraW1wb3J0IG9yZy5zaW1wbGVmcmFtZXdvcmsueG1sLmNvbnZlcnQuQ29udmVydGVyOw0KK2ltcG9ydCBvcmcuc2ltcGxlZnJhbWV3b3JrLnhtbC5zdHJlYW0uSW5wdXROb2RlOw0KKw0KK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBPbUNvbnZlcnRlcjxUPiBpbXBsZW1lbnRzIENvbnZlcnRlcjxUPiB7DQorCXN0YXRpYyBsb25nIGdldGxvbmdWYWx1ZShJbnB1dE5vZGUgbm9kZSkgdGhyb3dzIEV4Y2VwdGlvbiB7DQorCQlyZXR1cm4gZ2V0bG9uZ1ZhbHVlKG5vZGUuZ2V0VmFsdWUoKSk7DQorCX0NCisNCisJc3RhdGljIGxvbmcgZ2V0bG9uZ1ZhbHVlKFN0cmluZyB2YWx1ZSkgew0KKwkJcmV0dXJuIGdldGxvbmdWYWx1ZSh2YWx1ZSwgMCk7DQorCX0NCisJDQorCXN0YXRpYyBsb25nIGdldGxvbmdWYWx1ZShTdHJpbmcgdmFsdWUsIGxvbmcgZGVmKSB7DQorCQlsb25nIHJlc3VsdCA9IGRlZjsNCisJCXRyeSB7DQorCQkJcmVzdWx0ID0gTG9uZy52YWx1ZU9mKHZhbHVlKS5sb25nVmFsdWUoKTsNCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7DQorCQkJLy9ubyBvcA0KKwkJfQ0KKwkJcmV0dXJuIHJlc3VsdDsNCisJfQ0KKw0KKwlzdGF0aWMgaW50IGdldGludFZhbHVlKFN0cmluZyB2YWx1ZSwgaW50IGRlZikgew0KKwkJaW50IHJlc3VsdCA9IGRlZjsNCisJCXRyeSB7DQorCQkJcmVzdWx0ID0gSW50ZWdlci52YWx1ZU9mKHZhbHVlKS5pbnRWYWx1ZSgpOw0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsNCisJCQkvL25vIG9wDQorCQl9DQorCQlyZXR1cm4gcmVzdWx0Ow0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9iYWNrdXAvT21UaW1lWm9uZUNvbnZlcnRlci5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2JhY2t1cC9PbVRpbWVab25lQ29udmVydGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDE4OTdlZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9iYWNrdXAvT21UaW1lWm9uZUNvbnZlcnRlci5qYXZhCkBAIC0wLDAgKzEsNTMgQEAKKy8qDQorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAqIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuYmFja3VwOw0KKw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLmRhby5PbVRpbWVab25lRGFvOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5PbVRpbWVab25lOw0KK2ltcG9ydCBvcmcuc2ltcGxlZnJhbWV3b3JrLnhtbC5jb252ZXJ0LkNvbnZlcnRlcjsNCitpbXBvcnQgb3JnLnNpbXBsZWZyYW1ld29yay54bWwuc3RyZWFtLklucHV0Tm9kZTsNCitpbXBvcnQgb3JnLnNpbXBsZWZyYW1ld29yay54bWwuc3RyZWFtLk91dHB1dE5vZGU7DQorDQorcHVibGljIGNsYXNzIE9tVGltZVpvbmVDb252ZXJ0ZXIgaW1wbGVtZW50cyBDb252ZXJ0ZXI8T21UaW1lWm9uZT4gew0KKwlwcml2YXRlIE9tVGltZVpvbmVEYW8gb21UaW1lWm9uZURhb0ltcGw7DQorCQ0KKwlwdWJsaWMgT21UaW1lWm9uZUNvbnZlcnRlcigpIHsNCisJCS8vZGVmYXVsdCBjb25zdHJ1Y3RvciBpcyBmb3IgZXhwb3J0DQorCX0NCisJDQorCXB1YmxpYyBPbVRpbWVab25lQ29udmVydGVyKE9tVGltZVpvbmVEYW8gb21UaW1lWm9uZURhb0ltcGwpIHsNCisJCXRoaXMub21UaW1lWm9uZURhb0ltcGwgPSBvbVRpbWVab25lRGFvSW1wbDsNCisJfQ0KKwkNCisJcHVibGljIE9tVGltZVpvbmUgcmVhZChJbnB1dE5vZGUgbm9kZSkgdGhyb3dzIEV4Y2VwdGlvbiB7DQorCQlPbVRpbWVab25lIG9tVGltZVpvbmU7DQorCQl0cnkgew0KKwkJCW9tVGltZVpvbmUgPSBvbVRpbWVab25lRGFvSW1wbC5nZXRPbVRpbWVab25lKG5vZGUuZ2V0VmFsdWUoKSk7DQorCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgew0KKwkJCW9tVGltZVpvbmUgPSBuZXcgT21UaW1lWm9uZSgpOw0KKwkJfQ0KKw0KKwkJcmV0dXJuIG9tVGltZVpvbmU7DQorCX0NCisNCisJcHVibGljIHZvaWQgd3JpdGUoT3V0cHV0Tm9kZSBub2RlLCBPbVRpbWVab25lIHZhbHVlKSB0aHJvd3MgRXhjZXB0aW9uIHsNCisJCW5vZGUuc2V0RGF0YSh0cnVlKTsNCisJCW5vZGUuc2V0VmFsdWUodmFsdWUgPT0gbnVsbCA/ICIwIiA6ICIiICsgdmFsdWUuZ2V0Sm5hbWUoKSk7DQorCX0NCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2JhY2t1cC9PcmdhbmlzYXRpb25Db252ZXJ0ZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9iYWNrdXAvT3JnYW5pc2F0aW9uQ29udmVydGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGE1ZGVmYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9iYWNrdXAvT3JnYW5pc2F0aW9uQ29udmVydGVyLmphdmEKQEAgLTAsMCArMSw1MyBAQAorLyoNCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICogdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5iYWNrdXA7DQorDQoraW1wb3J0IGphdmEudXRpbC5NYXA7DQorDQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEudXNlci5kYW8uT3JnYW5pc2F0aW9uRGFvOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5kb21haW4uT3JnYW5pc2F0aW9uOw0KK2ltcG9ydCBvcmcuc2ltcGxlZnJhbWV3b3JrLnhtbC5zdHJlYW0uSW5wdXROb2RlOw0KK2ltcG9ydCBvcmcuc2ltcGxlZnJhbWV3b3JrLnhtbC5zdHJlYW0uT3V0cHV0Tm9kZTsNCisNCitwdWJsaWMgY2xhc3MgT3JnYW5pc2F0aW9uQ29udmVydGVyIGV4dGVuZHMgT21Db252ZXJ0ZXI8T3JnYW5pc2F0aW9uPiB7DQorCXByaXZhdGUgT3JnYW5pc2F0aW9uRGFvIG9yZ0RhbzsNCisJcHJpdmF0ZSBNYXA8TG9uZywgTG9uZz4gaWRNYXA7DQorCQ0KKwlwdWJsaWMgT3JnYW5pc2F0aW9uQ29udmVydGVyKCkgew0KKwkJLy9kZWZhdWx0IGNvbnN0cnVjdG9yIGlzIGZvciBleHBvcnQNCisJfQ0KKwkNCisJcHVibGljIE9yZ2FuaXNhdGlvbkNvbnZlcnRlcihPcmdhbmlzYXRpb25EYW8gb3JnRGFvLCBNYXA8TG9uZywgTG9uZz4gaWRNYXApIHsNCisJCXRoaXMub3JnRGFvID0gb3JnRGFvOw0KKwkJdGhpcy5pZE1hcCA9IGlkTWFwOw0KKwl9DQorCQ0KKwlwdWJsaWMgT3JnYW5pc2F0aW9uIHJlYWQoSW5wdXROb2RlIG5vZGUpIHRocm93cyBFeGNlcHRpb24gew0KKwkJbG9uZyBvbGRJZCA9IGdldGxvbmdWYWx1ZShub2RlKTsNCisJCWxvbmcgbmV3SWQgPSBpZE1hcC5jb250YWluc0tleShvbGRJZCkgPyBpZE1hcC5nZXQob2xkSWQpIDogb2xkSWQ7DQorCQkNCisJCU9yZ2FuaXNhdGlvbiBvID0gb3JnRGFvLmdldChuZXdJZCk7DQorCQlyZXR1cm4gbyA9PSBudWxsID8gbmV3IE9yZ2FuaXNhdGlvbigpIDogbzsNCisJfQ0KKw0KKwlwdWJsaWMgdm9pZCB3cml0ZShPdXRwdXROb2RlIG5vZGUsIE9yZ2FuaXNhdGlvbiB2YWx1ZSkgdGhyb3dzIEV4Y2VwdGlvbiB7DQorCQlub2RlLnNldERhdGEodHJ1ZSk7DQorCQlub2RlLnNldFZhbHVlKHZhbHVlID09IG51bGwgPyAiMCIgOiAiIiArIHZhbHVlLmdldE9yZ2FuaXNhdGlvbl9pZCgpKTsNCisJfQ0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvYmFja3VwL1BvbGxUeXBlQ29udmVydGVyLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvYmFja3VwL1BvbGxUeXBlQ29udmVydGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjYxNTNkYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9iYWNrdXAvUG9sbFR5cGVDb252ZXJ0ZXIuamF2YQpAQCAtMCwwICsxLDQ1IEBACisvKg0KKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgKiB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmJhY2t1cDsNCisNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jb25mZXJlbmNlLlBvbGxNYW5hZ2VyOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5wb2xsLlBvbGxUeXBlOw0KK2ltcG9ydCBvcmcuc2ltcGxlZnJhbWV3b3JrLnhtbC5zdHJlYW0uSW5wdXROb2RlOw0KK2ltcG9ydCBvcmcuc2ltcGxlZnJhbWV3b3JrLnhtbC5zdHJlYW0uT3V0cHV0Tm9kZTsNCisNCitwdWJsaWMgY2xhc3MgUG9sbFR5cGVDb252ZXJ0ZXIgZXh0ZW5kcyBPbUNvbnZlcnRlcjxQb2xsVHlwZT4gew0KKwlwcml2YXRlIFBvbGxNYW5hZ2VyIHBvbGxNYW5hZ2VyOw0KKwkNCisJcHVibGljIFBvbGxUeXBlQ29udmVydGVyKCkgew0KKwkJLy9kZWZhdWx0IGNvbnN0cnVjdG9yIGlzIGZvciBleHBvcnQNCisJfQ0KKwkNCisJcHVibGljIFBvbGxUeXBlQ29udmVydGVyKFBvbGxNYW5hZ2VyIHBvbGxNYW5hZ2VtZW50KSB7DQorCQl0aGlzLnBvbGxNYW5hZ2VyID0gcG9sbE1hbmFnZW1lbnQ7DQorCX0NCisJDQorCXB1YmxpYyBQb2xsVHlwZSByZWFkKElucHV0Tm9kZSBub2RlKSB0aHJvd3MgRXhjZXB0aW9uIHsNCisJCXJldHVybiBwb2xsTWFuYWdlci5nZXRQb2xsVHlwZShnZXRsb25nVmFsdWUobm9kZSkpOw0KKwl9DQorDQorCXB1YmxpYyB2b2lkIHdyaXRlKE91dHB1dE5vZGUgbm9kZSwgUG9sbFR5cGUgdmFsdWUpIHRocm93cyBFeGNlcHRpb24gew0KKwkJbm9kZS5zZXREYXRhKHRydWUpOw0KKwkJbm9kZS5zZXRWYWx1ZSh2YWx1ZSA9PSBudWxsID8gIjAiIDogIiIgKyB2YWx1ZS5nZXRQb2xsVHlwZXNJZCgpKTsNCisJfQ0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvYmFja3VwL1Jvb21Db252ZXJ0ZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9iYWNrdXAvUm9vbUNvbnZlcnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyMDA2NDQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvYmFja3VwL1Jvb21Db252ZXJ0ZXIuamF2YQpAQCAtMCwwICsxLDUzIEBACisvKg0KKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgKiB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmJhY2t1cDsNCisNCitpbXBvcnQgamF2YS51dGlsLk1hcDsNCisNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jb25mZXJlbmNlLmRhby5Sb29tRGFvOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tLlJvb207DQoraW1wb3J0IG9yZy5zaW1wbGVmcmFtZXdvcmsueG1sLnN0cmVhbS5JbnB1dE5vZGU7DQoraW1wb3J0IG9yZy5zaW1wbGVmcmFtZXdvcmsueG1sLnN0cmVhbS5PdXRwdXROb2RlOw0KKw0KK3B1YmxpYyBjbGFzcyBSb29tQ29udmVydGVyIGV4dGVuZHMgT21Db252ZXJ0ZXI8Um9vbT4gew0KKwlwcml2YXRlIFJvb21EYW8gcm9vbURhbzsNCisJcHJpdmF0ZSBNYXA8TG9uZywgTG9uZz4gaWRNYXA7DQorCQ0KKwlwdWJsaWMgUm9vbUNvbnZlcnRlcigpIHsNCisJCS8vZGVmYXVsdCBjb25zdHJ1Y3RvciBpcyBmb3IgZXhwb3J0DQorCX0NCisJDQorCXB1YmxpYyBSb29tQ29udmVydGVyKFJvb21EYW8gcm9vbURhbywgTWFwPExvbmcsIExvbmc+IGlkTWFwKSB7DQorCQl0aGlzLnJvb21EYW8gPSByb29tRGFvOw0KKwkJdGhpcy5pZE1hcCA9IGlkTWFwOw0KKwl9DQorCQ0KKwlwdWJsaWMgUm9vbSByZWFkKElucHV0Tm9kZSBub2RlKSB0aHJvd3MgRXhjZXB0aW9uIHsNCisJCWxvbmcgb2xkSWQgPSBnZXRsb25nVmFsdWUobm9kZSk7DQorCQlsb25nIG5ld0lkID0gaWRNYXAuY29udGFpbnNLZXkob2xkSWQpID8gaWRNYXAuZ2V0KG9sZElkKSA6IG9sZElkOw0KKw0KKwkJUm9vbSByID0gcm9vbURhby5nZXQobmV3SWQpOw0KKwkJcmV0dXJuIHIgPT0gbnVsbCA/IG5ldyBSb29tKCkgOiByOw0KKwl9DQorDQorCXB1YmxpYyB2b2lkIHdyaXRlKE91dHB1dE5vZGUgbm9kZSwgUm9vbSB2YWx1ZSkgdGhyb3dzIEV4Y2VwdGlvbiB7DQorCQlub2RlLnNldERhdGEodHJ1ZSk7DQorCQlub2RlLnNldFZhbHVlKHZhbHVlID09IG51bGwgPyAiMCIgOiAiIiArIHZhbHVlLmdldFJvb21zX2lkKCkpOw0KKwl9DQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9iYWNrdXAvUm9vbVR5cGVDb252ZXJ0ZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9iYWNrdXAvUm9vbVR5cGVDb252ZXJ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDZhNGNkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2JhY2t1cC9Sb29tVHlwZUNvbnZlcnRlci5qYXZhCkBAIC0wLDAgKzEsNDYgQEAKKy8qDQorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAqIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuYmFja3VwOw0KKw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNvbmZlcmVuY2UuUm9vbU1hbmFnZXI7DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnJvb20uUm9vbVR5cGU7DQoraW1wb3J0IG9yZy5zaW1wbGVmcmFtZXdvcmsueG1sLnN0cmVhbS5JbnB1dE5vZGU7DQoraW1wb3J0IG9yZy5zaW1wbGVmcmFtZXdvcmsueG1sLnN0cmVhbS5PdXRwdXROb2RlOw0KKw0KK3B1YmxpYyBjbGFzcyBSb29tVHlwZUNvbnZlcnRlciBleHRlbmRzIE9tQ29udmVydGVyPFJvb21UeXBlPiB7DQorCXByaXZhdGUgUm9vbU1hbmFnZXIgcm9vbU1hbmFnZXI7DQorCQ0KKwlwdWJsaWMgUm9vbVR5cGVDb252ZXJ0ZXIoKSB7DQorCQkvL2RlZmF1bHQgY29uc3RydWN0b3IgaXMgZm9yIGV4cG9ydA0KKwl9DQorCQ0KKwlwdWJsaWMgUm9vbVR5cGVDb252ZXJ0ZXIoUm9vbU1hbmFnZXIgcm9vbW1hbmFnZW1lbnQpIHsNCisJCXRoaXMucm9vbU1hbmFnZXIgPSByb29tbWFuYWdlbWVudDsNCisJfQ0KKwkNCisJcHVibGljIFJvb21UeXBlIHJlYWQoSW5wdXROb2RlIG5vZGUpIHRocm93cyBFeGNlcHRpb24gew0KKwkJUm9vbVR5cGUgcnQgPSByb29tTWFuYWdlci5nZXRSb29tVHlwZXNCeUlkKGdldGxvbmdWYWx1ZShub2RlKSk7DQorCQlyZXR1cm4gcnQgIT0gbnVsbCA/IHJ0IDogcm9vbU1hbmFnZXIuZ2V0Um9vbVR5cGVzQnlJZCgxKTsgLy8gY29uZmVyZW5jZSB0eXBlIHdpbGwgYmUgdXNlZCBpbiBjYXNlIG9mIGJhZCB0eXBlDQorCX0NCisNCisJcHVibGljIHZvaWQgd3JpdGUoT3V0cHV0Tm9kZSBub2RlLCBSb29tVHlwZSB2YWx1ZSkgdGhyb3dzIEV4Y2VwdGlvbiB7DQorCQlub2RlLnNldERhdGEodHJ1ZSk7DQorCQlub2RlLnNldFZhbHVlKHZhbHVlID09IG51bGwgPyAiMCIgOiAiIiArIHZhbHVlLmdldFJvb210eXBlc19pZCgpKTsNCisJfQ0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvYmFja3VwL1N0YXRlQ29udmVydGVyLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvYmFja3VwL1N0YXRlQ29udmVydGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGRlNGRmOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9iYWNrdXAvU3RhdGVDb252ZXJ0ZXIuamF2YQpAQCAtMCwwICsxLDQ1IEBACisvKg0KKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgKiB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmJhY2t1cDsNCisNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLmRhby5TdGF0ZURhbzsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlci5TdGF0ZTsNCitpbXBvcnQgb3JnLnNpbXBsZWZyYW1ld29yay54bWwuc3RyZWFtLklucHV0Tm9kZTsNCitpbXBvcnQgb3JnLnNpbXBsZWZyYW1ld29yay54bWwuc3RyZWFtLk91dHB1dE5vZGU7DQorDQorcHVibGljIGNsYXNzIFN0YXRlQ29udmVydGVyIGV4dGVuZHMgT21Db252ZXJ0ZXI8U3RhdGU+IHsNCisJcHJpdmF0ZSBTdGF0ZURhbyBzdGF0ZW1hbmFnZW1lbnQ7DQorCQ0KKwlwdWJsaWMgU3RhdGVDb252ZXJ0ZXIoKSB7DQorCQkvL2RlZmF1bHQgY29uc3RydWN0b3IgaXMgZm9yIGV4cG9ydA0KKwl9DQorCQ0KKwlwdWJsaWMgU3RhdGVDb252ZXJ0ZXIoU3RhdGVEYW8gc3RhdGVtYW5hZ2VtZW50KSB7DQorCQl0aGlzLnN0YXRlbWFuYWdlbWVudCA9IHN0YXRlbWFuYWdlbWVudDsNCisJfQ0KKwkNCisJcHVibGljIFN0YXRlIHJlYWQoSW5wdXROb2RlIG5vZGUpIHRocm93cyBFeGNlcHRpb24gew0KKwkJcmV0dXJuIHN0YXRlbWFuYWdlbWVudC5nZXRTdGF0ZUJ5SWQoZ2V0bG9uZ1ZhbHVlKG5vZGUpKTsNCisJfQ0KKw0KKwlwdWJsaWMgdm9pZCB3cml0ZShPdXRwdXROb2RlIG5vZGUsIFN0YXRlIHZhbHVlKSB0aHJvd3MgRXhjZXB0aW9uIHsNCisJCW5vZGUuc2V0RGF0YSh0cnVlKTsNCisJCW5vZGUuc2V0VmFsdWUodmFsdWUgPT0gbnVsbCA/ICIwIiA6ICIiICsgdmFsdWUuZ2V0U3RhdGVfaWQoKSk7DQorCX0NCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2JhY2t1cC9Vc2VyQ29udmVydGVyLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvYmFja3VwL1VzZXJDb252ZXJ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZTY3OWViCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2JhY2t1cC9Vc2VyQ29udmVydGVyLmphdmEKQEAgLTAsMCArMSw1MyBAQAorLyoNCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICogdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5iYWNrdXA7DQorDQoraW1wb3J0IGphdmEudXRpbC5NYXA7DQorDQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEudXNlci5kYW8uVXNlcnNEYW87DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuVXNlcjsNCitpbXBvcnQgb3JnLnNpbXBsZWZyYW1ld29yay54bWwuc3RyZWFtLklucHV0Tm9kZTsNCitpbXBvcnQgb3JnLnNpbXBsZWZyYW1ld29yay54bWwuc3RyZWFtLk91dHB1dE5vZGU7DQorDQorcHVibGljIGNsYXNzIFVzZXJDb252ZXJ0ZXIgZXh0ZW5kcyBPbUNvbnZlcnRlcjxVc2VyPiB7DQorCXByaXZhdGUgVXNlcnNEYW8gdXNlckRhbzsNCisJcHJpdmF0ZSBNYXA8TG9uZywgTG9uZz4gaWRNYXA7DQorCQ0KKwlwdWJsaWMgVXNlckNvbnZlcnRlcigpIHsNCisJCS8vZGVmYXVsdCBjb25zdHJ1Y3RvciBpcyBmb3IgZXhwb3J0DQorCX0NCisJDQorCXB1YmxpYyBVc2VyQ29udmVydGVyKFVzZXJzRGFvIHVzZXJEYW8sIE1hcDxMb25nLCBMb25nPiBpZE1hcCkgew0KKwkJdGhpcy51c2VyRGFvID0gdXNlckRhbzsNCisJCXRoaXMuaWRNYXAgPSBpZE1hcDsNCisJfQ0KKwkNCisJcHVibGljIFVzZXIgcmVhZChJbnB1dE5vZGUgbm9kZSkgdGhyb3dzIEV4Y2VwdGlvbiB7DQorCQlsb25nIG9sZElkID0gZ2V0bG9uZ1ZhbHVlKG5vZGUpOw0KKwkJbG9uZyBuZXdJZCA9IGlkTWFwLmNvbnRhaW5zS2V5KG9sZElkKSA/IGlkTWFwLmdldChvbGRJZCkgOiBvbGRJZDsNCisJCQ0KKwkJVXNlciB1ID0gdXNlckRhby5nZXQobmV3SWQpOw0KKwkJcmV0dXJuIHUgPT0gbnVsbCA/IG5ldyBVc2VyKCkgOiB1Ow0KKwl9DQorDQorCXB1YmxpYyB2b2lkIHdyaXRlKE91dHB1dE5vZGUgbm9kZSwgVXNlciB2YWx1ZSkgdGhyb3dzIEV4Y2VwdGlvbiB7DQorCQlub2RlLnNldERhdGEodHJ1ZSk7DQorCQlub2RlLnNldFZhbHVlKHZhbHVlID09IG51bGwgPyAiMCIgOiAiIiArIHZhbHVlLmdldFVzZXJfaWQoKSk7DQorCX0NCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2JhdGlrL2JlYW5zL1ByaW50QmVhbi5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2JhdGlrL2JlYW5zL1ByaW50QmVhbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzYjQyZjYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvYmF0aWsvYmVhbnMvUHJpbnRCZWFuLmphdmEKQEAgLTAsMCArMSw3NCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5iYXRpay5iZWFuczsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitwdWJsaWMgY2xhc3MgUHJpbnRCZWFuIHsKKworCXB1YmxpYyBTdHJpbmcgaGFzaDsKKwlAU3VwcHJlc3NXYXJuaW5ncygicmF3dHlwZXMiKQorCXB1YmxpYyBMaXN0IG1hcDsKKwlwdWJsaWMgaW50IHdpZHRoOworCXB1YmxpYyBpbnQgaGVpZ2h0OworCisJcHVibGljIFByaW50QmVhbihTdHJpbmcgaGFzaCwgQFN1cHByZXNzV2FybmluZ3MoInJhd3R5cGVzIikgTGlzdCBtYXAsCisJCQlpbnQgd2lkdGgsIGludCBoZWlnaHQpIHsKKwkJc3VwZXIoKTsKKwkJdGhpcy5oYXNoID0gaGFzaDsKKwkJdGhpcy5oZWlnaHQgPSBoZWlnaHQ7CisJCXRoaXMubWFwID0gbWFwOworCQl0aGlzLndpZHRoID0gd2lkdGg7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRIYXNoKCkgeworCQlyZXR1cm4gaGFzaDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRIYXNoKFN0cmluZyBoYXNoKSB7CisJCXRoaXMuaGFzaCA9IGhhc2g7CisJfQorCisJQFN1cHByZXNzV2FybmluZ3MoInJhd3R5cGVzIikKKwlwdWJsaWMgTGlzdCBnZXRNYXAoKSB7CisJCXJldHVybiBtYXA7CisJfQorCisJQFN1cHByZXNzV2FybmluZ3MoInJhd3R5cGVzIikKKwlwdWJsaWMgdm9pZCBzZXRNYXAoTGlzdCBtYXApIHsKKwkJdGhpcy5tYXAgPSBtYXA7CisJfQorCisJcHVibGljIGludCBnZXRXaWR0aCgpIHsKKwkJcmV0dXJuIHdpZHRoOworCX0KKworCXB1YmxpYyB2b2lkIHNldFdpZHRoKGludCB3aWR0aCkgeworCQl0aGlzLndpZHRoID0gd2lkdGg7CisJfQorCisJcHVibGljIGludCBnZXRIZWlnaHQoKSB7CisJCXJldHVybiBoZWlnaHQ7CisJfQorCisJcHVibGljIHZvaWQgc2V0SGVpZ2h0KGludCBoZWlnaHQpIHsKKwkJdGhpcy5oZWlnaHQgPSBoZWlnaHQ7CisJfQorCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvY2xpL0FkbWluLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvY2xpL0FkbWluLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVhNGRhNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9jbGkvQWRtaW4uamF2YQpAQCAtMCwwICsxLDYyNSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5jbGk7CisKK2ltcG9ydCBqYXZhLmlvLkJ1ZmZlcmVkUmVhZGVyOworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLmlvLkZpbGVJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtUmVhZGVyOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5NYXA7CisKK2ltcG9ydCBqYXZheC5tYWlsLmludGVybmV0LkFkZHJlc3NFeGNlcHRpb247CitpbXBvcnQgamF2YXgubWFpbC5pbnRlcm5ldC5JbnRlcm5ldEFkZHJlc3M7CitpbXBvcnQgamF2YXguc2VydmxldC5TZXJ2bGV0Q29udGV4dEV2ZW50OworCitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmNsaS5Db21tYW5kTGluZTsKK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY2xpLk9wdGlvbkdyb3VwOworaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jbGkuT3B0aW9uczsKK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY2xpLlBhcnNlRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jbGkuUGFyc2VyOworaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jbGkuUG9zaXhQYXJzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLnRyYW5zYWN0aW9uLnV0aWwuRmlsZUhlbHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5qcGEuamRiYy5tZXRhLk1hcHBpbmdUb29sOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuZmlsZS5kYW8uRmlsZUV4cGxvcmVySXRlbURhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmZsdnJlY29yZC5GbHZSZWNvcmRpbmdEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLmRhby5Vc2Vyc0RhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kb2N1bWVudHMuSW5zdGFsbGF0aW9uRG9jdW1lbnRIYW5kbGVyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmluc3RhbGxhdGlvbi5JbXBvcnRJbml0dmFsdWVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmluc3RhbGxhdGlvbi5JbnN0YWxsYXRpb25Db25maWc7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuZmlsZXMuRmlsZUV4cGxvcmVySXRlbTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5mbHZyZWNvcmQuRmx2UmVjb3JkaW5nOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuVXNlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5zZXJ2bGV0Lm91dHB1dGhhbmRsZXIuQmFja3VwRXhwb3J0OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnNlcnZsZXQub3V0cHV0aGFuZGxlci5CYWNrdXBJbXBvcnRDb250cm9sbGVyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLkltcG9ydEhlbHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5PTUNvbnRleHRMaXN0ZW5lcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5PbUZpbGVIZWxwZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMubWFpbC5NYWlsVXRpbDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5tYXRoLkNhbGVuZGFyUGF0dGVybnM7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuY29udGV4dC5zdXBwb3J0LkNsYXNzUGF0aFhtbEFwcGxpY2F0aW9uQ29udGV4dDsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLnNjaGVkdWxpbmcucXVhcnR6LlNjaGVkdWxlckZhY3RvcnlCZWFuOworCitwdWJsaWMgY2xhc3MgQWRtaW4geworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoQWRtaW4uY2xhc3MpOworCQorCXByaXZhdGUgYm9vbGVhbiB2ZXJib3NlID0gZmFsc2U7CisJcHJpdmF0ZSBJbnN0YWxsYXRpb25Db25maWcgY2ZnID0gbnVsbDsKKwlwcml2YXRlIE9wdGlvbnMgb3B0cyA9IG51bGw7CisJcHJpdmF0ZSBDb21tYW5kTGluZSBjbWRsID0gbnVsbDsKKwlwcml2YXRlIENsYXNzUGF0aFhtbEFwcGxpY2F0aW9uQ29udGV4dCBjdHggPSBudWxsOworCXByaXZhdGUgZmluYWwgc3RhdGljIFN0cmluZyBQRVJTSVNURU5DRV9OQU1FID0gImNsYXNzZXMvTUVUQS1JTkYvcGVyc2lzdGVuY2UueG1sIjsKKworCXByaXZhdGUgQWRtaW4oKSB7CisJCWNmZyA9IG5ldyBJbnN0YWxsYXRpb25Db25maWcoKTsKKwkJb3B0cyA9IGJ1aWxkT3B0aW9ucygpOworCX0KKwkKKwlwcml2YXRlIE9wdGlvbnMgYnVpbGRPcHRpb25zKCkgeworCQlPcHRpb25zIG9wdGlvbnMgPSBuZXcgT3B0aW9ucygpOworCQlPcHRpb25Hcm91cCBncm91cCA9IG5ldyBPcHRpb25Hcm91cCgpCisJCQkuYWRkT3B0aW9uKG5ldyBPbU9wdGlvbigiaCIsIDAsICJoIiwgImhlbHAiLCBmYWxzZSwgInByaW50cyB0aGlzIG1lc3NhZ2UiKSkKKwkJCS5hZGRPcHRpb24obmV3IE9tT3B0aW9uKCJiIiwgMSwgImIiLCAiYmFja3VwIiwgZmFsc2UsICJCYWNrdXBzIE9NIikpCisJCQkuYWRkT3B0aW9uKG5ldyBPbU9wdGlvbigiciIsIDIsICJyIiwgInJlc3RvcmUiLCBmYWxzZSwgIlJlc3RvcmVzIE9NIikpCisJCQkuYWRkT3B0aW9uKG5ldyBPbU9wdGlvbigiaSIsIDMsICJpIiwgImluc3RhbGwiLCBmYWxzZSwgIkZpbGwgREIgdGFibGUsIGFuZCBtYWtlIE9NIHVzYWJsZSIpKQorCQkJLmFkZE9wdGlvbihuZXcgT21PcHRpb24oImwiLCAzLCAibCIsICJsYW5ndWFnZXMiLCBmYWxzZSwgIlJlaW1wb3J0IEFsbCBsYW5ndWFnZSBmaWxlcyBpbnRvIERCIikpCisJCQkuYWRkT3B0aW9uKG5ldyBPbU9wdGlvbigiZiIsIDQsICJmIiwgImZpbGVzIiwgZmFsc2UsICJGaWxlIG9wZXJhdGlvbnMgLSBzdGF0aWN0aWNzL2NsZWFudXAiKSk7CisJCWdyb3VwLnNldFJlcXVpcmVkKHRydWUpOyAKKwkJb3B0aW9ucy5hZGRPcHRpb25Hcm91cChncm91cCk7CisJCS8vZ2VuZXJhbAorCQlvcHRpb25zLmFkZE9wdGlvbihuZXcgT21PcHRpb24obnVsbCwgInYiLCAidmVyYm9zZSIsIGZhbHNlLCAidmVyYm9zZSBlcnJvciBtZXNzYWdlcyIpKTsKKwkJLy9iYWNrdXAvcmVzdG9yZQorCQlvcHRpb25zLmFkZE9wdGlvbihuZXcgT21PcHRpb24oImIiLCBudWxsLCAiZXhjbHVkZS1maWxlcyIsIGZhbHNlLCAic2hvdWxkIGJhY2t1cCBleGNsdWRlIGZpbGVzIFtkZWZhdWx0OiBpbmNsdWRlXSIsIHRydWUpKTsKKwkJb3B0aW9ucy5hZGRPcHRpb24obmV3IE9tT3B0aW9uKCJiLHIsaSIsICJmaWxlIiwgbnVsbCwgdHJ1ZSwgImZpbGUgdXNlZCBmb3IgYmFja3VwL3Jlc3RvcmUvaW5zdGFsbCIsICJiIikpOworCQkvL2luc3RhbGwKKwkJb3B0aW9ucy5hZGRPcHRpb24obmV3IE9tT3B0aW9uKCJpIiwgInVzZXIiLCBudWxsLCB0cnVlLCAiTG9naW4gbmFtZSBvZiB0aGUgZGVmYXVsdCB1c2VyLCBtaW5pbXVtICIgKyBJbnN0YWxsYXRpb25Db25maWcuVVNFUl9MT0dJTl9NSU5JTVVNX0xFTkdUSCArICIgY2hhcmFjdGVycyAobXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggJ2ZpbGUnKSIpKTsKKwkJb3B0aW9ucy5hZGRPcHRpb24obmV3IE9tT3B0aW9uKCJpIiwgImVtYWlsIiwgbnVsbCwgdHJ1ZSwgIkVtYWlsIG9mIHRoZSBkZWZhdWx0IHVzZXIgKG11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoICdmaWxlJykiKSk7CisJCW9wdGlvbnMuYWRkT3B0aW9uKG5ldyBPbU9wdGlvbigiaSIsICJncm91cCIsIG51bGwsIHRydWUsICJUaGUgbmFtZSBvZiB0aGUgZGVmYXVsdCB1c2VyIGdyb3VwIChtdXR1YWxseSBleGNsdXNpdmUgd2l0aCAnZmlsZScpIikpOworCQlvcHRpb25zLmFkZE9wdGlvbihuZXcgT21PcHRpb24oImkiLCAidHoiLCBudWxsLCB0cnVlLCAiRGVmYXVsdCBzZXJ2ZXIgdGltZSB6b25lLCBhbmQgdGltZSB6b25lIGZvciB0aGUgc2VsZWN0ZWQgdXNlciAobXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggJ2ZpbGUnKSIpKTsKKwkJb3B0aW9ucy5hZGRPcHRpb24obmV3IE9tT3B0aW9uKCJpIiwgbnVsbCwgInBhc3N3b3JkIiwgdHJ1ZSwgIlBhc3N3b3JkIG9mIHRoZSBkZWZhdWx0IHVzZXIsIG1pbmltdW0gIiArIEluc3RhbGxhdGlvbkNvbmZpZy5VU0VSX0xPR0lOX01JTklNVU1fTEVOR1RIICsgIiBjaGFyYWN0ZXJzICh3aWxsIGJlIHByb21wdGVkIGlmIG5vdCBzZXQpIiwgdHJ1ZSkpOworCQlvcHRpb25zLmFkZE9wdGlvbihuZXcgT21PcHRpb24oImkiLCBudWxsLCAic3lzdGVtLWVtYWlsLWFkZHJlc3MiLCB0cnVlLCAiU3lzdGVtIGUtbWFpbCBhZGRyZXNzIFtkZWZhdWx0OiAiICsgY2ZnLm1haWxSZWZlcmVyICsgIl0iLCB0cnVlKSk7CisJCW9wdGlvbnMuYWRkT3B0aW9uKG5ldyBPbU9wdGlvbigiaSIsIG51bGwsICJzbXRwLXNlcnZlciIsIHRydWUsICJTTVRQIHNlcnZlciBmb3Igb3V0Z29pbmcgZS1tYWlscyBbZGVmYXVsdDogIiArIGNmZy5zbXRwU2VydmVyICsgIl0iLCB0cnVlKSk7CisJCW9wdGlvbnMuYWRkT3B0aW9uKG5ldyBPbU9wdGlvbigiaSIsIG51bGwsICJzbXRwLXBvcnQiLCB0cnVlLCAiU01UUCBzZXJ2ZXIgZm9yIG91dGdvaW5nIGUtbWFpbHMgW2RlZmF1bHQ6ICIgKyBjZmcuc210cFBvcnQgKyAiXSIsIHRydWUpKTsKKwkJb3B0aW9ucy5hZGRPcHRpb24obmV3IE9tT3B0aW9uKCJpIiwgbnVsbCwgImVtYWlsLWF1dGgtdXNlciIsIHRydWUsICJFbWFpbCBhdXRoIHVzZXJuYW1lIChhbm9ueW1vdXMgY29ubmVjdGlvbiB3aWxsIGJlIHVzZWQgaWYgbm90IHNldCkiLCB0cnVlKSk7CisJCW9wdGlvbnMuYWRkT3B0aW9uKG5ldyBPbU9wdGlvbigiaSIsIG51bGwsICJlbWFpbC1hdXRoLXBhc3MiLCB0cnVlLCAiRW1haWwgYXV0aCBwYXNzd29yZCAoYW5vbnltb3VzIGNvbm5lY3Rpb24gd2lsbCBiZSB1c2VkIGlmIG5vdCBzZXQpIiwgdHJ1ZSkpOworCQlvcHRpb25zLmFkZE9wdGlvbihuZXcgT21PcHRpb24oImkiLCBudWxsLCAiZW1haWwtdXNlLXRscyIsIGZhbHNlLCAiSXMgc2VjdXJlIGUtbWFpbCBjb25uZWN0aW9uIFtkZWZhdWx0OiBub10iLCB0cnVlKSk7CisJCW9wdGlvbnMuYWRkT3B0aW9uKG5ldyBPbU9wdGlvbigiaSIsIG51bGwsICJza2lwLWRlZmF1bHQtcm9vbXMiLCBmYWxzZSwgIkRvIG5vdCBjcmVhdGUgZGVmYXVsdCByb29tcyBbY3JlYXRlZCBieSBkZWZhdWx0XSIsIHRydWUpKTsKKwkJb3B0aW9ucy5hZGRPcHRpb24obmV3IE9tT3B0aW9uKCJpIiwgbnVsbCwgImRpc2FibGUtZnJvbnRlbmQtcmVnaXN0ZXIiLCBmYWxzZSwgIkRvIG5vdCBhbGxvdyBmcm9udCBlbmQgcmVnaXN0ZXIgW2FsbG93ZWQgYnkgZGVmYXVsdF0iLCB0cnVlKSk7CisKKwkJb3B0aW9ucy5hZGRPcHRpb24obmV3IE9tT3B0aW9uKCJpIiwgbnVsbCwgImRiLXR5cGUiLCB0cnVlLCAiVGhlIHR5cGUgb2YgdGhlIERCIHRvIGJlIHVzZWQiLCB0cnVlKSk7CisJCW9wdGlvbnMuYWRkT3B0aW9uKG5ldyBPbU9wdGlvbigiaSIsIG51bGwsICJkYi1ob3N0IiwgdHJ1ZSwgIkROUyBuYW1lIG9yIElQIGFkZHJlc3Mgb2YgZGF0YWJhc2UiLCB0cnVlKSk7CisJCW9wdGlvbnMuYWRkT3B0aW9uKG5ldyBPbU9wdGlvbigiaSIsIG51bGwsICJkYi1wb3J0IiwgdHJ1ZSwgIkRhdGFiYXNlIHBvcnQiLCB0cnVlKSk7CisJCW9wdGlvbnMuYWRkT3B0aW9uKG5ldyBPbU9wdGlvbigiaSIsIG51bGwsICJkYi1uYW1lIiwgdHJ1ZSwgIlRoZSBuYW1lIG9mIE9wZW5tZWV0aW5ncyBkYXRhYmFzZSIsIHRydWUpKTsKKwkJb3B0aW9ucy5hZGRPcHRpb24obmV3IE9tT3B0aW9uKCJpIiwgbnVsbCwgImRiLXVzZXIiLCB0cnVlLCAiVXNlciB3aXRoIHdyaXRlIGFjY2VzcyB0byB0aGUgREIgc3BlY2lmaWVkIiwgdHJ1ZSkpOworCQlvcHRpb25zLmFkZE9wdGlvbihuZXcgT21PcHRpb24oImkiLCBudWxsLCAiZGItcGFzcyIsIHRydWUsICJQYXNzd29yZCBvZiB0aGUgdXNlciB3aXRoIHdyaXRlIGFjY2VzcyB0byB0aGUgREIgc3BlY2lmaWVkIiwgdHJ1ZSkpOworCQlvcHRpb25zLmFkZE9wdGlvbihuZXcgT21PcHRpb24oImkiLCBudWxsLCAiZHJvcCIsIGZhbHNlLCAiRHJvcCBkYXRhYmFzZSBiZWZvcmUgaW5zdGFsbGF0aW9uIiwgdHJ1ZSkpOworCQlvcHRpb25zLmFkZE9wdGlvbihuZXcgT21PcHRpb24oImkiLCBudWxsLCAiZm9yY2UiLCBmYWxzZSwgIkluc3RhbGwgd2l0aG91dCBjaGVja2luZyB0aGUgZXhpc3RlbmNlIG9mIG9sZCBkYXRhIGluIHRoZSBkYXRhYmFzZS4iLCB0cnVlKSk7CisJCS8vbGFuZ3VhZ2VzCisJCW9wdGlvbnMuYWRkT3B0aW9uKG5ldyBPbU9wdGlvbigibCIsICJsYW5nIiwgImxhbmd1YWdlIiwgdHJ1ZSwgIlNpbmdsZSBsYW5ndWFnZSB0byBiZSBpbXBvcnRlZCAoaWQgb3IgbmFtZSkiLCB0cnVlKSk7CisJCS8vZmlsZXMKKwkJb3B0aW9ucy5hZGRPcHRpb24obmV3IE9tT3B0aW9uKCJmIiwgbnVsbCwgImNsZWFudXAiLCBmYWxzZSwgIlNob3VsZCBpbnRlcm1lZGlhdGUgZmlsZXMgYmUgY2xlYW4gdXAiLCB0cnVlKSk7CisJCQorCQlyZXR1cm4gb3B0aW9uczsKKwl9CisJCisJcHJpdmF0ZSBlbnVtIENvbW1hbmQgeworCQlpbnN0YWxsCisJCSwgYmFja3VwCisJCSwgcmVzdG9yZQorCQksIGxhbmd1YWdlcworCQksIGZpbGVzCisJCSwgdXNhZ2UKKwl9CisJCisJcHJpdmF0ZSB2b2lkIHVzYWdlKCkgeworCQlPbUhlbHBGb3JtYXR0ZXIgZm9ybWF0dGVyID0gbmV3IE9tSGVscEZvcm1hdHRlcigpOworCQlmb3JtYXR0ZXIuc2V0V2lkdGgoMTAwKTsKKwkJZm9ybWF0dGVyLnByaW50SGVscCgiYWRtaW4iLCAiUGxlYXNlIHNwZWNpZnkgb25lIG9mIHRoZSByZXF1aXJlZCBwYXJhbWV0ZXJzLiIsIG9wdHMsICJFeGFtcGxlczpcbiIgKworCQkJCSJcdC4vYWRtaW4uc2ggLWJcbiIgKworCQkJCSJcdC4vYWRtaW4uc2ggLWkgLXYgLWZpbGUgYmFja3VwXzMxXzA3XzIwMTJfMTJfMDdfNTEuemlwIC0tZHJvcFxuIiArCisJCQkJIlx0Li9hZG1pbi5zaCAtaSAtdiAtdXNlciBhZG1pbiAtZW1haWwgc29tZWVtYWlsQGdtYWlsLmNvbSAtdHogXCJBc2lhL1RlaHJhblwiIC1ncm91cCBcInlvdXJncm91cFwiIC0tZGItdHlwZSBteXNxbCAtLWRiLWhvc3QgbG9jYWxob3N0Iik7CisJfQorCQorCXByaXZhdGUgdm9pZCBoYW5kbGVFcnJvcihTdHJpbmcgbXNnLCBFeGNlcHRpb24gZSkgeworCQloYW5kbGVFcnJvcihtc2csIGUsIGZhbHNlKTsKKwl9CisJCisJcHJpdmF0ZSB2b2lkIGhhbmRsZUVycm9yKFN0cmluZyBtc2csIEV4Y2VwdGlvbiBlLCBib29sZWFuIHByaW50VXNhZ2UpIHsKKwkJaWYgKHByaW50VXNhZ2UpIHsKKwkJCXVzYWdlKCk7CisJCX0KKwkJaWYgKHZlcmJvc2UpIHsKKwkJCWxvZy5lcnJvcihtc2csIGUpOworCQl9IGVsc2UgeworCQkJbG9nLmVycm9yKG1zZyArICIgIiArIGUuZ2V0TWVzc2FnZSgpKTsKKwkJfQorCQlTeXN0ZW0uZXhpdCgxKTsKKwl9CisJCisJcHJpdmF0ZSBDbGFzc1BhdGhYbWxBcHBsaWNhdGlvbkNvbnRleHQgZ2V0QXBwbGljYXRpb25Db250ZXh0KGZpbmFsIFN0cmluZyBjdHhOYW1lKSB7CisJCWlmIChjdHggPT0gbnVsbCkgeworCQkJT01Db250ZXh0TGlzdGVuZXIgb21jbCA9IG5ldyBPTUNvbnRleHRMaXN0ZW5lcigpOworCQkJb21jbC5jb250ZXh0SW5pdGlhbGl6ZWQobmV3IFNlcnZsZXRDb250ZXh0RXZlbnQobmV3IER1bW15U2VydmxldENvbnRleHQoY3R4TmFtZSkpKTsKKwkJCXRyeSB7CisJCQkJY3R4ID0gbmV3IENsYXNzUGF0aFhtbEFwcGxpY2F0aW9uQ29udGV4dCgib3Blbm1lZXRpbmdzLWFwcGxpY2F0aW9uQ29udGV4dC54bWwiKTsKKwkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCQkJaGFuZGxlRXJyb3IoIlVuYWJsZSB0byBvYnRhaW4gYXBwbGljYXRpb24gY29udGV4dCIsIGUpOworCQkJfQorCQkJU2NoZWR1bGVyRmFjdG9yeUJlYW4gc2ZiID0gY3R4LmdldEJlYW4oU2NoZWR1bGVyRmFjdG9yeUJlYW4uY2xhc3MpOworCQkJdHJ5IHsKKwkJCQlzZmIuZ2V0U2NoZWR1bGVyKCkuc2h1dGRvd24oZmFsc2UpOworCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCQloYW5kbGVFcnJvcigiVW5hYmxlIHRvIHNodXRkb3duIHNjaGVkdWxlcnMiLCBlKTsKKwkJCX0KKwkJfQorCQlyZXR1cm4gY3R4OworCX0KKwkKKwlwcml2YXRlIHZvaWQgcHJvY2VzcyhTdHJpbmdbXSBhcmdzKSB7CisJCVN0cmluZyBjdHhOYW1lID0gU3lzdGVtLmdldFByb3BlcnR5KCJjb250ZXh0IiwgIm9wZW5tZWV0aW5ncyIpOworCQlGaWxlIGhvbWUgPSBuZXcgRmlsZShTeXN0ZW0uZ2V0ZW52KCJSRUQ1X0hPTUUiKSk7CisJCU9tRmlsZUhlbHBlci5zZXRPbUhvbWUobmV3IEZpbGUobmV3IEZpbGUoaG9tZSwgIndlYmFwcHMiKSwgY3R4TmFtZSkpOworCQkKKwkJUGFyc2VyIHBhcnNlciA9IG5ldyBQb3NpeFBhcnNlcigpOworCQl0cnkgeworCQkJY21kbCA9IHBhcnNlci5wYXJzZShvcHRzLCBhcmdzKTsKKwkJfSBjYXRjaCAoUGFyc2VFeGNlcHRpb24gZSkgeworCQkJU3lzdGVtLm91dC5wcmludGxuKGUuZ2V0TWVzc2FnZSgpKTsKKwkJCXVzYWdlKCk7CisJCQlTeXN0ZW0uZXhpdCgxKTsKKwkJfQorCQl2ZXJib3NlID0gY21kbC5oYXNPcHRpb24oJ3YnKTsKKworCQlDb21tYW5kIGNtZCA9IENvbW1hbmQudXNhZ2U7CisJCWlmIChjbWRsLmhhc09wdGlvbignaScpKSB7CisJCQljbWQgPSBDb21tYW5kLmluc3RhbGw7CisJCX0gZWxzZSBpZiAoY21kbC5oYXNPcHRpb24oJ2InKSkgeworCQkJY21kID0gQ29tbWFuZC5iYWNrdXA7CisJCX0gZWxzZSBpZiAoY21kbC5oYXNPcHRpb24oJ3InKSkgeworCQkJY21kID0gQ29tbWFuZC5yZXN0b3JlOworCQl9IGVsc2UgaWYgKGNtZGwuaGFzT3B0aW9uKCdsJykpIHsKKwkJCWNtZCA9IENvbW1hbmQubGFuZ3VhZ2VzOworCQl9IGVsc2UgaWYgKGNtZGwuaGFzT3B0aW9uKCdmJykpIHsKKwkJCWNtZCA9IENvbW1hbmQuZmlsZXM7CisJCX0KKworCQlTdHJpbmcgZmlsZSA9IGNtZGwuZ2V0T3B0aW9uVmFsdWUoImZpbGUiLCAiIik7CisJCXN3aXRjaChjbWQpIHsKKwkJCWNhc2UgaW5zdGFsbDoKKwkJCQl0cnkgeworCQkJCQlpZiAoY21kbC5oYXNPcHRpb24oImZpbGUiKSAmJiAoY21kbC5oYXNPcHRpb24oInVzZXIiKSB8fCBjbWRsLmhhc09wdGlvbigiZW1haWwiKSB8fCBjbWRsLmhhc09wdGlvbigiZ3JvdXAiKSkpIHsKKwkJCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiUGxlYXNlIHNwZWNpZnkgZXZlbiAnZmlsZScgb3B0aW9uIG9yICdhZG1pbiB1c2VyJy4iKTsKKwkJCQkJCVN5c3RlbS5leGl0KDEpOworCQkJCQl9CisJCQkJCWJvb2xlYW4gZm9yY2UgPSBjbWRsLmhhc09wdGlvbigiZm9yY2UiKTsKKwkJCQkJaWYgKGNtZGwuaGFzT3B0aW9uKCJza2lwLWRlZmF1bHQtcm9vbXMiKSkgeworCQkJCQkJY2ZnLmNyZWF0ZURlZmF1bHRSb29tcyA9ICIwIjsKKwkJCQkJfQorCQkJCQlpZiAoY21kbC5oYXNPcHRpb24oImRpc2FibGUtZnJvbnRlbmQtcmVnaXN0ZXIiKSkgeworCQkJCQkJY2ZnLmFsbG93RnJvbnRlbmRSZWdpc3RlciA9ICIwIjsKKwkJCQkJfQorCQkJCQlpZiAoY21kbC5oYXNPcHRpb24oInN5c3RlbS1lbWFpbC1hZGRyZXNzIikpIHsKKwkJCQkJCWNmZy5tYWlsUmVmZXJlciA9IGNtZGwuZ2V0T3B0aW9uVmFsdWUoInN5c3RlbS1lbWFpbC1hZGRyZXNzIik7CisJCQkJCX0KKwkJCQkJaWYgKGNtZGwuaGFzT3B0aW9uKCJzbXRwLXNlcnZlciIpKSB7CisJCQkJCQljZmcuc210cFNlcnZlciA9IGNtZGwuZ2V0T3B0aW9uVmFsdWUoInNtdHAtc2VydmVyIik7CisJCQkJCX0KKwkJCQkJaWYgKGNtZGwuaGFzT3B0aW9uKCJzbXRwLXBvcnQiKSkgeworCQkJCQkJY2ZnLnNtdHBQb3J0ID0gY21kbC5nZXRPcHRpb25WYWx1ZSgic210cC1wb3J0Iik7CisJCQkJCX0KKwkJCQkJaWYgKGNtZGwuaGFzT3B0aW9uKCJlbWFpbC1hdXRoLXVzZXIiKSkgeworCQkJCQkJY2ZnLm1haWxBdXRoTmFtZSA9IGNtZGwuZ2V0T3B0aW9uVmFsdWUoImVtYWlsLWF1dGgtdXNlciIpOworCQkJCQl9CisJCQkJCWlmIChjbWRsLmhhc09wdGlvbigiZW1haWwtYXV0aC1wYXNzIikpIHsKKwkJCQkJCWNmZy5tYWlsQXV0aFBhc3MgPSBjbWRsLmdldE9wdGlvblZhbHVlKCJlbWFpbC1hdXRoLXBhc3MiKTsKKwkJCQkJfQorCQkJCQlpZiAoY21kbC5oYXNPcHRpb24oImVtYWlsLXVzZS10bHMiKSkgeworCQkJCQkJY2ZnLm1haWxVc2VUbHMgPSAiMSI7CisJCQkJCX0KKwkJCQkJQ29ubmVjdGlvblByb3BlcnRpZXMgY29ubmVjdGlvblByb3BlcnRpZXMgPSBuZXcgQ29ubmVjdGlvblByb3BlcnRpZXMoKTsKKwkJCQkJRmlsZSBjb25mID0gbmV3IEZpbGUoT21GaWxlSGVscGVyLmdldFdlYmluZkRpcigpLCBQRVJTSVNURU5DRV9OQU1FKTsKKwkJCQkJaWYgKCFjb25mLmV4aXN0cygpIHx8IGNtZGwuaGFzT3B0aW9uKCJkYi10eXBlIikgfHwgY21kbC5oYXNPcHRpb24oImRiLWhvc3QiKSB8fCBjbWRsLmhhc09wdGlvbigiZGItcG9ydCIpIHx8IGNtZGwuaGFzT3B0aW9uKCJkYi1uYW1lIikgfHwgY21kbC5oYXNPcHRpb24oImRiLXVzZXIiKSB8fCBjbWRsLmhhc09wdGlvbigiZGItcGFzcyIpKSB7CisJCQkJCQlTdHJpbmcgZGJUeXBlID0gY21kbC5nZXRPcHRpb25WYWx1ZSgiZGItdHlwZSIsICJkZXJieSIpOworCQkJCQkJRmlsZSBzcmNDb25mID0gbmV3IEZpbGUoT21GaWxlSGVscGVyLmdldFdlYmluZkRpcigpLCAiY2xhc3Nlcy9NRVRBLUlORi8iICsgZGJUeXBlICsgIl9wZXJzaXN0ZW5jZS54bWwiKTsKKwkJCQkJCUNvbm5lY3Rpb25Qcm9wZXJ0aWVzUGF0Y2hlci5nZXRQYXRjaGVyKGRiVHlwZSkucGF0Y2goCisJCQkJCQkJCXNyY0NvbmYKKwkJCQkJCQkJLCBjb25mCisJCQkJCQkJCSwgY21kbC5nZXRPcHRpb25WYWx1ZSgiZGItaG9zdCIsICJsb2NhbGhvc3QiKQorCQkJCQkJCQksIGNtZGwuZ2V0T3B0aW9uVmFsdWUoImRiLXBvcnQiLCBudWxsKQorCQkJCQkJCQksIGNtZGwuZ2V0T3B0aW9uVmFsdWUoImRiLW5hbWUiLCBudWxsKQorCQkJCQkJCQksIGNtZGwuZ2V0T3B0aW9uVmFsdWUoImRiLXVzZXIiLCBudWxsKQorCQkJCQkJCQksIGNtZGwuZ2V0T3B0aW9uVmFsdWUoImRiLXBhc3MiLCBudWxsKQorCQkJCQkJCQksIGNvbm5lY3Rpb25Qcm9wZXJ0aWVzCisJCQkJCQkJCSk7CisJCQkJCX0gZWxzZSB7CisJCQkJCQkvL2dldCBwcm9wZXJ0aWVzIGZyb20gZXhpc3RlbnQgcGVyc2lzdGVuY2UueG1sCisJCQkJCQljb25uZWN0aW9uUHJvcGVydGllcyA9IENvbm5lY3Rpb25Qcm9wZXJ0aWVzUGF0Y2hlci5nZXRDb25uZWN0aW9uUHJvcGVydGllcyhjb25mKTsKKwkJCQkJfQorCQkJCQlpZiAoY21kbC5oYXNPcHRpb24oImZpbGUiKSkgeworCQkJCQkJRmlsZSBiYWNrdXAgPSBjaGVja1Jlc3RvcmVGaWxlKGZpbGUpOworCQkJCQkJZHJvcERCKGNvbm5lY3Rpb25Qcm9wZXJ0aWVzKTsKKwkJCQkJCQorCQkJCQkJSW1wb3J0SW5pdHZhbHVlcyBpbXBvcnRJbml0ID0gZ2V0QXBwbGljYXRpb25Db250ZXh0KGN0eE5hbWUpLmdldEJlYW4oSW1wb3J0SW5pdHZhbHVlcy5jbGFzcyk7CisJCQkJCQlpbXBvcnRJbml0LmxvYWRTeXN0ZW0oY2ZnLCBmb3JjZSk7IAorCQkJCQkJcmVzdG9yZU9tKGN0eE5hbWUsIGJhY2t1cCk7CisJCQkJCX0gZWxzZSB7CisJCQkJCQlBZG1pblVzZXJEZXRhaWxzIGFkbWluID0gY2hlY2tBZG1pbkRldGFpbHMoY3R4TmFtZSk7CisJCQkJCQlkcm9wREIoY29ubmVjdGlvblByb3BlcnRpZXMpOworCQkJCQkJCisJCQkJCQlJbXBvcnRJbml0dmFsdWVzIGltcG9ydEluaXQgPSBnZXRBcHBsaWNhdGlvbkNvbnRleHQoY3R4TmFtZSkuZ2V0QmVhbihJbXBvcnRJbml0dmFsdWVzLmNsYXNzKTsKKwkJCQkJCWltcG9ydEluaXQubG9hZEFsbChjZmcsIGFkbWluLmxvZ2luLCBhZG1pbi5wYXNzLCBhZG1pbi5lbWFpbCwgYWRtaW4uZ3JvdXAsIGFkbWluLnR6LCBmb3JjZSk7CisJCQkJCX0JCQkJCQorCQkJCQkKKwkJCQkJSW5zdGFsbGF0aW9uRG9jdW1lbnRIYW5kbGVyLmNyZWF0ZURvY3VtZW50KDMpOworCQkJCX0gY2F0Y2goRXhjZXB0aW9uIGUpIHsKKwkJCQkJaGFuZGxlRXJyb3IoIkluc3RhbGwgZmFpbGVkIiwgZSk7CisJCQkJfQorCQkJCWJyZWFrOworCQkJY2FzZSBiYWNrdXA6CisJCQkJdHJ5IHsKKwkJCQkJRmlsZSBmOworCQkJCQlpZiAoIWNtZGwuaGFzT3B0aW9uKCJmaWxlIikpIHsKKwkJCQkJCWZpbGUgPSAiYmFja3VwXyIgKyBDYWxlbmRhclBhdHRlcm5zLmdldFRpbWVGb3JTdHJlYW1JZChuZXcgRGF0ZSgpKSArICIuemlwIjsKKwkJCQkJCWYgPSBuZXcgRmlsZShob21lLCBmaWxlKTsKKwkJCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiRmlsZSBuYW1lIHdhcyBub3Qgc3BlY2lmaWVkLCAnIiArIGZpbGUgKyAiJyB3aWxsIGJlIHVzZWQiKTsKKwkJCQkJfSBlbHNlIHsKKwkJCQkJCWYgPSBuZXcgRmlsZShmaWxlKTsKKwkJCQkJfQorCQkJCQlib29sZWFuIGluY2x1ZGVGaWxlcyA9IEJvb2xlYW4ucGFyc2VCb29sZWFuKGNtZGwuZ2V0T3B0aW9uVmFsdWUoImV4Y2x1ZGUtZmlsZXMiLCAidHJ1ZSIpKTsKKwkJCQkJRmlsZSBiYWNrdXBfZGlyID0gbmV3IEZpbGUoT21GaWxlSGVscGVyLmdldFVwbG9hZFRlbXBEaXIoKSwgIiIgKyBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSk7CisJCQkJCWJhY2t1cF9kaXIubWtkaXJzKCk7CisJCQkJCQorCQkJCQlCYWNrdXBFeHBvcnQgZXhwb3J0ID0gZ2V0QXBwbGljYXRpb25Db250ZXh0KGN0eE5hbWUpLmdldEJlYW4oQmFja3VwRXhwb3J0LmNsYXNzKTsKKwkJCQkJZXhwb3J0LnBlcmZvcm1FeHBvcnQoZiwgYmFja3VwX2RpciwgaW5jbHVkZUZpbGVzKTsKKwkJCQkJRmlsZUhlbHBlci5yZW1vdmVSZWMoYmFja3VwX2Rpcik7CisJCQkJCWJhY2t1cF9kaXIuZGVsZXRlKCk7CisJCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCQkJaGFuZGxlRXJyb3IoIkJhY2t1cCBmYWlsZWQiLCBlKTsKKwkJCQl9CisJCQkJYnJlYWs7CisJCQljYXNlIHJlc3RvcmU6CisJCQkJdHJ5IHsKKwkJCQkJcmVzdG9yZU9tKGN0eE5hbWUsIGNoZWNrUmVzdG9yZUZpbGUoZmlsZSkpOworCQkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCQkJCWhhbmRsZUVycm9yKCJSZXN0b3JlIGZhaWxlZCIsIGUpOworCQkJCX0KKwkJCQlicmVhazsKKwkJCWNhc2UgbGFuZ3VhZ2VzOgorCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiQWxsIGxhbmd1YWdlIGZpbGVzIHdpbGwgYmUgcmVpbXBvcnRlZCIpOworCQkJCXRyeSB7CisJCQkJCUltcG9ydEluaXR2YWx1ZXMgaW1wb3J0SW5pdCA9IGdldEFwcGxpY2F0aW9uQ29udGV4dChjdHhOYW1lKS5nZXRCZWFuKEltcG9ydEluaXR2YWx1ZXMuY2xhc3MpOworCQkJCQlpZiAoY21kbC5oYXNPcHRpb24oImxhbmciKSkgeworCQkJCQkJU3RyaW5nIGxhbmcgPSBjbWRsLmdldE9wdGlvblZhbHVlKCJsYW5nIik7CisJCQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIk9ubHkgJyIgKyBsYW5nICsgIicgbGFuZ3VhZ2Ugd2lsbCBiZSByZWltcG9ydGVkIik7CisJCQkJCQl0cnkgeworCQkJCQkJCWludCBpZCA9IEludGVnZXIucGFyc2VJbnQobGFuZyk7CisJCQkJCQkJaW1wb3J0SW5pdC5sb2FkTGFuZ3VhZ2VzRmlsZShpZCk7CisJCQkJCQl9IGNhdGNoIChOdW1iZXJGb3JtYXRFeGNlcHRpb24gZSkgeworCQkJCQkJCWltcG9ydEluaXQubG9hZExhbmd1YWdlc0ZpbGUobGFuZyk7CisJCQkJCQl9CisJCQkJCX0gZWxzZSB7CisJCQkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIkFsbCBsYW5ndWFnZSBmaWxlcyB3aWxsIGJlIHJlaW1wb3J0ZWQiKTsKKwkJCQkJCWltcG9ydEluaXQubG9hZExhbmd1YWdlc0ZpbGVzKCk7CisJCQkJCX0KKwkJCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJCQloYW5kbGVFcnJvcigiTGFuZ3VhZ2UgcmVpbXBvcnQgZmFpbGVkIiwgZSk7CisJCQkJfQorCQkJCWJyZWFrOworCQkJY2FzZSBmaWxlczoKKwkJCQl0cnkgeworCQkJCQlib29sZWFuIGNsZWFudXAgPSBjbWRsLmhhc09wdGlvbigiY2xlYW51cCIpOworCQkJCQlpZiAoY2xlYW51cCkgeworCQkJCQkJU3lzdGVtLm91dC5wcmludGxuKCJXQVJOSU5HOiBhbGwgaW50ZXJtYWRpYXRlIGZpbGVzIHdpbGwgYmUgY2xlYW4gdXAhIik7CisJCQkJCX0KKwkJCQkJU3RyaW5nQnVpbGRlciByZXBvcnQgPSBuZXcgU3RyaW5nQnVpbGRlcigpOworCQkJCQlyZXBvcnQuYXBwZW5kKCJUZW1wb3JhcnkgZmlsZXMgYWxsb2NhdGVzOiAiKS5hcHBlbmQoT21GaWxlSGVscGVyLmdldEh1bWFuU2l6ZShPbUZpbGVIZWxwZXIuZ2V0VXBsb2FkVGVtcERpcigpKSkuYXBwZW5kKCJcbiIpOworCQkJCQl7IC8vVVBMT0FECisJCQkJCQlsb25nIHNlY3Rpb25TaXplID0gT21GaWxlSGVscGVyLmdldFNpemUoT21GaWxlSGVscGVyLmdldFVwbG9hZERpcigpKTsKKwkJCQkJCXJlcG9ydC5hcHBlbmQoIlVwbG9hZCB0b3RhbGx5IGFsbG9jYXRlczogIikuYXBwZW5kKE9tRmlsZUhlbHBlci5nZXRIdW1hblNpemUoc2VjdGlvblNpemUpKS5hcHBlbmQoIlxuIik7CisJCQkJCQkvL1Byb2ZpbGVzCisJCQkJCQlGaWxlIHByb2ZpbGVzID0gT21GaWxlSGVscGVyLmdldFVwbG9hZFByb2ZpbGVzRGlyKCk7CisJCQkJCQlsb25nIGludmFsaWQgPSAwOworCQkJCQkJbG9uZyBkZWxldGVkID0gMDsKKwkJCQkJCUNsYXNzUGF0aFhtbEFwcGxpY2F0aW9uQ29udGV4dCBjdHggPSBnZXRBcHBsaWNhdGlvbkNvbnRleHQoY3R4TmFtZSk7CisJCQkJCQlVc2Vyc0RhbyB1ZGFvID0gY3R4LmdldEJlYW4oVXNlcnNEYW8uY2xhc3MpOworCQkJCQkJZm9yIChGaWxlIHByb2ZpbGUgOiBwcm9maWxlcy5saXN0RmlsZXMoKSkgeworCQkJCQkJCWxvbmcgcFNpemUgPSBPbUZpbGVIZWxwZXIuZ2V0U2l6ZShwcm9maWxlKTsKKwkJCQkJCQlsb25nIHVzZXJJZCA9IGdldFVzZXJJZEJ5UHJvZmlsZShwcm9maWxlLmdldE5hbWUoKSk7CisJCQkJCQkJVXNlciB1ID0gdWRhby5nZXQodXNlcklkKTsKKwkJCQkJCQlpZiAocHJvZmlsZS5pc0ZpbGUoKSB8fCB1c2VySWQgPCAwIHx8IHUgPT0gbnVsbCkgeworCQkJCQkJCQlpZiAoY2xlYW51cCkgeworCQkJCQkJCQkJRmlsZUhlbHBlci5yZW1vdmVSZWMocHJvZmlsZSk7CisJCQkJCQkJCX0gZWxzZSB7CisJCQkJCQkJCQlpbnZhbGlkICs9IHBTaXplOworCQkJCQkJCQl9CisJCQkJCQkJfSBlbHNlIGlmICh1LmdldERlbGV0ZWQoKSkgeworCQkJCQkJCQlpZiAoY2xlYW51cCkgeworCQkJCQkJCQkJRmlsZUhlbHBlci5yZW1vdmVSZWMocHJvZmlsZSk7CisJCQkJCQkJCX0gZWxzZSB7CisJCQkJCQkJCQlkZWxldGVkICs9IHBTaXplOworCQkJCQkJCQl9CisJCQkJCQkJfQorCQkJCQkJfQorCQkJCQkJbG9uZyBtaXNzaW5nID0gMDsKKwkJCQkJCWZvciAoVXNlciB1IDogdWRhby5nZXRBbGxVc2Vyc0RlbGV0ZWQoKSkgeworCQkJCQkJCWlmICghdS5nZXREZWxldGVkKCkgJiYgIW5ldyBGaWxlKE9tRmlsZUhlbHBlci5nZXRVcGxvYWRQcm9maWxlc1VzZXJEaXIodS5nZXRVc2VyX2lkKCkpLCB1LmdldFBpY3R1cmV1cmkoKSkuZXhpc3RzKCkpIHsKKwkJCQkJCQkJbWlzc2luZysrOworCQkJCQkJCX0KKwkJCQkJCX0KKwkJCQkJCWxvbmcgc2l6ZSA9IE9tRmlsZUhlbHBlci5nZXRTaXplKHByb2ZpbGVzKTsKKwkJCQkJCWxvbmcgcmVzdFNpemUgPSBzZWN0aW9uU2l6ZSAtIHNpemU7CisJCQkJCQlyZXBvcnQuYXBwZW5kKCJcdFx0cHJvZmlsZXM6ICIpLmFwcGVuZChPbUZpbGVIZWxwZXIuZ2V0SHVtYW5TaXplKHNpemUpKS5hcHBlbmQoIlxuIik7CisJCQkJCQlyZXBvcnQuYXBwZW5kKCJcdFx0XHRpbnZhbGlkOiAiKS5hcHBlbmQoT21GaWxlSGVscGVyLmdldEh1bWFuU2l6ZShpbnZhbGlkKSkuYXBwZW5kKCJcbiIpOworCQkJCQkJcmVwb3J0LmFwcGVuZCgiXHRcdFx0ZGVsZXRlZDogIikuYXBwZW5kKE9tRmlsZUhlbHBlci5nZXRIdW1hblNpemUoZGVsZXRlZCkpLmFwcGVuZCgiXG4iKTsKKwkJCQkJCXJlcG9ydC5hcHBlbmQoIlx0XHRcdG1pc3NpbmcgY291bnQ6ICIpLmFwcGVuZChtaXNzaW5nKS5hcHBlbmQoIlxuIik7CisJCQkJCQlzaXplID0gT21GaWxlSGVscGVyLmdldFNpemUoT21GaWxlSGVscGVyLmdldFVwbG9hZEltcG9ydERpcigpKTsKKwkJCQkJCXJlc3RTaXplIC09IHNpemU7CisJCQkJCQlyZXBvcnQuYXBwZW5kKCJcdFx0aW1wb3J0OiAiKS5hcHBlbmQoT21GaWxlSGVscGVyLmdldEh1bWFuU2l6ZShzaXplKSkuYXBwZW5kKCJcbiIpOworCQkJCQkJc2l6ZSA9IE9tRmlsZUhlbHBlci5nZXRTaXplKE9tRmlsZUhlbHBlci5nZXRVcGxvYWRCYWNrdXBEaXIoKSk7CisJCQkJCQlyZXN0U2l6ZSAtPSBzaXplOworCQkJCQkJcmVwb3J0LmFwcGVuZCgiXHRcdGJhY2t1cDogIikuYXBwZW5kKE9tRmlsZUhlbHBlci5nZXRIdW1hblNpemUoc2l6ZSkpLmFwcGVuZCgiXG4iKTsKKwkJCQkJCS8vRmlsZXMKKwkJCQkJCUZpbGUgZmlsZXMgPSBPbUZpbGVIZWxwZXIuZ2V0VXBsb2FkRmlsZXNEaXIoKTsKKwkJCQkJCXNpemUgPSBPbUZpbGVIZWxwZXIuZ2V0U2l6ZShmaWxlcyk7CisJCQkJCQlyZXN0U2l6ZSAtPSBzaXplOworCQkJCQkJRmlsZUV4cGxvcmVySXRlbURhbyBmaWxlRGFvID0gY3R4LmdldEJlYW4oRmlsZUV4cGxvcmVySXRlbURhby5jbGFzcyk7CisJCQkJCQlpbnZhbGlkID0gMDsKKwkJCQkJCWRlbGV0ZWQgPSAwOworCQkJCQkJZm9yIChGaWxlIGYgOiBmaWxlcy5saXN0RmlsZXMoKSkgeworCQkJCQkJCWxvbmcgZlNpemUgPSBPbUZpbGVIZWxwZXIuZ2V0U2l6ZShmKTsKKwkJCQkJCQlGaWxlRXhwbG9yZXJJdGVtIGl0ZW0gPSBmaWxlRGFvLmdldEZpbGVFeHBsb3Jlckl0ZW1zQnlIYXNoKGYuZ2V0TmFtZSgpKTsKKwkJCQkJCQlpZiAoaXRlbSA9PSBudWxsKSB7CisJCQkJCQkJCWlmIChjbGVhbnVwKSB7CisJCQkJCQkJCQlGaWxlSGVscGVyLnJlbW92ZVJlYyhmKTsKKwkJCQkJCQkJfSBlbHNlIHsKKwkJCQkJCQkJCWludmFsaWQgKz0gZlNpemU7CisJCQkJCQkJCX0KKwkJCQkJCQl9IGVsc2UgaWYgKGl0ZW0uZ2V0RGVsZXRlZCgpKSB7CisJCQkJCQkJCWlmIChjbGVhbnVwKSB7CisJCQkJCQkJCQlGaWxlSGVscGVyLnJlbW92ZVJlYyhmKTsKKwkJCQkJCQkJfSBlbHNlIHsKKwkJCQkJCQkJCWRlbGV0ZWQgKz0gZlNpemU7CisJCQkJCQkJCX0KKwkJCQkJCQl9CisJCQkJCQl9CisJCQkJCQltaXNzaW5nID0gMDsKKwkJCQkJCWZvciAoRmlsZUV4cGxvcmVySXRlbSBpdGVtIDogZmlsZURhby5nZXRGaWxlRXhwbG9yZXJJdGVtcygpKSB7CisJCQkJCQkJaWYgKCFpdGVtLmdldERlbGV0ZWQoKSAmJiAhbmV3IEZpbGUoZmlsZXMsIGl0ZW0uZ2V0RmlsZUhhc2goKSkuZXhpc3RzKCkpIHsKKwkJCQkJCQkJbWlzc2luZysrOworCQkJCQkJCX0KKwkJCQkJCX0KKwkJCQkJCXJlcG9ydC5hcHBlbmQoIlx0XHRmaWxlczogIikuYXBwZW5kKE9tRmlsZUhlbHBlci5nZXRIdW1hblNpemUoc2l6ZSkpLmFwcGVuZCgiXG4iKTsKKwkJCQkJCXJlcG9ydC5hcHBlbmQoIlx0XHRcdGludmFsaWQ6ICIpLmFwcGVuZChPbUZpbGVIZWxwZXIuZ2V0SHVtYW5TaXplKGludmFsaWQpKS5hcHBlbmQoIlxuIik7CisJCQkJCQlyZXBvcnQuYXBwZW5kKCJcdFx0XHRkZWxldGVkOiAiKS5hcHBlbmQoT21GaWxlSGVscGVyLmdldEh1bWFuU2l6ZShkZWxldGVkKSkuYXBwZW5kKCJcbiIpOworCQkJCQkJcmVwb3J0LmFwcGVuZCgiXHRcdFx0bWlzc2luZyBjb3VudDogIikuYXBwZW5kKG1pc3NpbmcpLmFwcGVuZCgiXG4iKTsKKwkJCQkJCXJlcG9ydC5hcHBlbmQoIlx0XHRyZXN0OiAiKS5hcHBlbmQoT21GaWxlSGVscGVyLmdldEh1bWFuU2l6ZShyZXN0U2l6ZSkpLmFwcGVuZCgiXG4iKTsKKwkJCQkJfQorCQkJCQl7IC8vU1RSRUFNUworCQkJCQkJRmlsZSBzdHJlYW1zRGlyID0gT21GaWxlSGVscGVyLmdldFN0cmVhbXNEaXIoKTsKKwkJCQkJCUZpbGUgaGliZXJuYXRlRGlyID0gT21GaWxlSGVscGVyLmdldFN0cmVhbXNIaWJlcm5hdGVEaXIoKTsKKwkJCQkJCWlmIChjbGVhbnVwKSB7CisJCQkJCQkJU3RyaW5nIGhpYmVyUGF0aCA9IGhpYmVybmF0ZURpci5nZXRDYW5vbmljYWxQYXRoKCk7CisJCQkJCQkJZm9yIChGaWxlIGYgOiBzdHJlYW1zRGlyLmxpc3RGaWxlcygpKSB7CisJCQkJCQkJCWlmICghZi5nZXRDYW5vbmljYWxQYXRoKCkuZXF1YWxzKGhpYmVyUGF0aCkpIHsKKwkJCQkJCQkJCUZpbGVIZWxwZXIucmVtb3ZlUmVjKGYpOworCQkJCQkJCQl9CisJCQkJCQkJfQorCQkJCQkJfQorCQkJCQkJbG9uZyBzZWN0aW9uU2l6ZSA9IE9tRmlsZUhlbHBlci5nZXRTaXplKHN0cmVhbXNEaXIpOworCQkJCQkJcmVwb3J0LmFwcGVuZCgiUmVjb3JkaW5ncyBhbGxvY2F0ZXM6ICIpLmFwcGVuZChPbUZpbGVIZWxwZXIuZ2V0SHVtYW5TaXplKHNlY3Rpb25TaXplKSkuYXBwZW5kKCJcbiIpOworCQkJCQkJbG9uZyBzaXplID0gT21GaWxlSGVscGVyLmdldFNpemUoaGliZXJuYXRlRGlyKTsKKwkJCQkJCWxvbmcgcmVzdFNpemUgPSBzZWN0aW9uU2l6ZSAtIHNpemU7CisJCQkJCQlGbHZSZWNvcmRpbmdEYW8gcmVjb3JkRGFvID0gY3R4LmdldEJlYW4oRmx2UmVjb3JkaW5nRGFvLmNsYXNzKTsKKwkJCQkJCWxvbmdbXSBwYXJhbXMgPSB7MCwgMH07IC8vIFswXSA9PSBkZWxldGVkIFsxXSA9PSBtaXNzaW5nCisJCQkJCQlmb3IgKEZsdlJlY29yZGluZyByZWMgOiByZWNvcmREYW8uZ2V0QWxsRmx2UmVjb3JkaW5ncygpKSB7CisJCQkJCQkJY2hlY2tSZWNvcmRpbmdGaWxlKGhpYmVybmF0ZURpciwgcmVjLmdldEZpbGVIYXNoKCksIHJlYy5nZXREZWxldGVkKCksIHBhcmFtcywgY2xlYW51cCk7CisJCQkJCQkJY2hlY2tSZWNvcmRpbmdGaWxlKGhpYmVybmF0ZURpciwgcmVjLmdldEFsdGVybmF0ZURvd25sb2FkKCksIHJlYy5nZXREZWxldGVkKCksIHBhcmFtcywgY2xlYW51cCk7CisJCQkJCQkJY2hlY2tSZWNvcmRpbmdGaWxlKGhpYmVybmF0ZURpciwgcmVjLmdldFByZXZpZXdJbWFnZSgpLCByZWMuZ2V0RGVsZXRlZCgpLCBwYXJhbXMsIGNsZWFudXApOworCQkJCQkJfQorCQkJCQkJbG9uZyBpbnZhbGlkID0gMDsKKwkJCQkJCWZvciAoRmlsZSBmIDogaGliZXJuYXRlRGlyLmxpc3RGaWxlcygpKSB7CisJCQkJCQkJaWYgKGYuaXNGaWxlKCkgJiYgZi5nZXROYW1lKCkuZW5kc1dpdGgoIi5mbHYiKSkgeworCQkJCQkJCQlGbHZSZWNvcmRpbmcgcmVjID0gcmVjb3JkRGFvLmdldFJlY29yZGluZ0J5SGFzaChmLmdldE5hbWUoKSk7CisJCQkJCQkJCWlmIChyZWMgPT0gbnVsbCkgeworCQkJCQkJCQkJaWYgKGNsZWFudXApIHsKKwkJCQkJCQkJCQlGaWxlSGVscGVyLnJlbW92ZVJlYyhmKTsKKwkJCQkJCQkJCX0gZWxzZSB7CisJCQkJCQkJCQkJaW52YWxpZCArPSBmLmxlbmd0aCgpOworCQkJCQkJCQkJfQorCQkJCQkJCQkJU3RyaW5nIG5hbWUgPSBmLmdldE5hbWUoKS5zdWJzdHJpbmcoMCwgZi5nZXROYW1lKCkubGVuZ3RoKCkgLSA1KTsKKwkJCQkJCQkJCUZpbGUgcmZhID0gbmV3IEZpbGUoaGliZXJuYXRlRGlyLCBuYW1lICsgIi5hdmkiKTsKKwkJCQkJCQkJCWlmIChyZmEuZXhpc3RzKCkpIHsKKwkJCQkJCQkJCQlpZiAoY2xlYW51cCkgeworCQkJCQkJCQkJCQlGaWxlSGVscGVyLnJlbW92ZVJlYyhyZmEpOworCQkJCQkJCQkJCX0gZWxzZSB7CisJCQkJCQkJCQkJCWludmFsaWQgKz0gcmZhLmxlbmd0aCgpOworCQkJCQkJCQkJCX0KKwkJCQkJCQkJCX0KKwkJCQkJCQkJCUZpbGUgcmZqID0gbmV3IEZpbGUoaGliZXJuYXRlRGlyLCBuYW1lICsgIi5qcGciKTsKKwkJCQkJCQkJCWlmIChyZmouZXhpc3RzKCkpIHsKKwkJCQkJCQkJCQlpZiAoY2xlYW51cCkgeworCQkJCQkJCQkJCQlGaWxlSGVscGVyLnJlbW92ZVJlYyhyZmopOworCQkJCQkJCQkJCX0gZWxzZSB7CisJCQkJCQkJCQkJCWludmFsaWQgKz0gcmZqLmxlbmd0aCgpOworCQkJCQkJCQkJCX0KKwkJCQkJCQkJCX0KKwkJCQkJCQkJfQorCQkJCQkJCX0KKwkJCQkJCX0KKwkJCQkJCXJlcG9ydC5hcHBlbmQoIlx0XHRmaW5hbDogIikuYXBwZW5kKE9tRmlsZUhlbHBlci5nZXRIdW1hblNpemUoc2l6ZSkpLmFwcGVuZCgiXG4iKTsKKwkJCQkJCXJlcG9ydC5hcHBlbmQoIlx0XHRcdGludmFsaWQ6ICIpLmFwcGVuZChPbUZpbGVIZWxwZXIuZ2V0SHVtYW5TaXplKGludmFsaWQpKS5hcHBlbmQoIlxuIik7CisJCQkJCQlyZXBvcnQuYXBwZW5kKCJcdFx0XHRkZWxldGVkOiAiKS5hcHBlbmQoT21GaWxlSGVscGVyLmdldEh1bWFuU2l6ZShwYXJhbXNbMF0pKS5hcHBlbmQoIlxuIik7CisJCQkJCQlyZXBvcnQuYXBwZW5kKCJcdFx0XHRtaXNzaW5nIGNvdW50OiAiKS5hcHBlbmQocGFyYW1zWzFdKS5hcHBlbmQoIlxuIik7CisJCQkJCQlyZXBvcnQuYXBwZW5kKCJcdFx0cmVzdDogIikuYXBwZW5kKE9tRmlsZUhlbHBlci5nZXRIdW1hblNpemUocmVzdFNpemUpKS5hcHBlbmQoIlxuIik7CisJCQkJCX0KKwkJCQkJU3lzdGVtLm91dC5wcmludGxuKHJlcG9ydCk7CisJCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCQkJaGFuZGxlRXJyb3IoIkZpbGVzIGZhaWxlZCIsIGUpOworCQkJCX0KKwkJCQlicmVhazsKKwkJCWNhc2UgdXNhZ2U6CisJCQlkZWZhdWx0OgorCQkJCXVzYWdlKCk7CisJCQkJYnJlYWs7CisJCX0KKwkJCisJCVN5c3RlbS5vdXQucHJpbnRsbigiLi4uIERvbmUiKTsKKwkJU3lzdGVtLmV4aXQoMCk7CisJfQorCQorCXByaXZhdGUgdm9pZCBjaGVja1JlY29yZGluZ0ZpbGUoRmlsZSBoaWJlcm5hdGVEaXIsIFN0cmluZyBuYW1lLCBib29sZWFuIGRlbGV0ZWQsIGxvbmdbXSBwYXJhbXMsIGJvb2xlYW4gY2xlYW51cCkgeworCQlGaWxlIGZsdiA9IG5hbWUgIT0gbnVsbCA/IG5ldyBGaWxlKGhpYmVybmF0ZURpciwgbmFtZSkgOiBudWxsOworCQlpZiAoZmx2ICE9IG51bGwpIHsKKwkJCWlmIChmbHYuZXhpc3RzKCkgJiYgZmx2LmlzRmlsZSgpKSB7CisJCQkJaWYgKGRlbGV0ZWQpIHsKKwkJCQkJcGFyYW1zWzBdICs9IGZsdi5sZW5ndGgoKTsKKwkJCQkJaWYgKGNsZWFudXApIHsKKwkJCQkJCUZpbGVIZWxwZXIucmVtb3ZlUmVjKGZsdik7CisJCQkJCX0KKwkJCQl9CisJCQl9IGVsc2UgeworCQkJCXBhcmFtc1sxXSsrOworCQkJfQorCQl9CisJfQorCQorCXByaXZhdGUgbG9uZyBnZXRVc2VySWRCeVByb2ZpbGUoU3RyaW5nIG5hbWUpIHsKKwkJbG9uZyByZXN1bHQgPSAtMTsKKwkJaWYgKG5hbWUuc3RhcnRzV2l0aChPbUZpbGVIZWxwZXIucHJvZmlsZXNQcmVmaXgpKSB7CisJCQl0cnkgeworCQkJCXJlc3VsdCA9IExvbmcucGFyc2VMb25nKG5hbWUuc3Vic3RyaW5nKE9tRmlsZUhlbHBlci5wcm9maWxlc1ByZWZpeC5sZW5ndGgoKSkpOworCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCQkvL25vb3AKKwkJCX0KKwkJfQorCQlyZXR1cm4gcmVzdWx0OworCX0KKwkKKwlwcml2YXRlIGNsYXNzIEFkbWluVXNlckRldGFpbHMgeworCQlTdHJpbmcgbG9naW4gPSBudWxsOworCQlTdHJpbmcgZW1haWwgPSBudWxsOworCQlTdHJpbmcgZ3JvdXAgPSBudWxsOworCQlTdHJpbmcgcGFzcyA9IG51bGw7CisJCVN0cmluZyB0eiA9IG51bGw7CisJfQorCQorCXByaXZhdGUgQWRtaW5Vc2VyRGV0YWlscyBjaGVja0FkbWluRGV0YWlscyhTdHJpbmcgY3R4TmFtZSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCUFkbWluVXNlckRldGFpbHMgYWRtaW4gPSBuZXcgQWRtaW5Vc2VyRGV0YWlscygpOworCQlhZG1pbi5sb2dpbiA9IGNtZGwuZ2V0T3B0aW9uVmFsdWUoInVzZXIiKTsKKwkJYWRtaW4uZW1haWwgPSBjbWRsLmdldE9wdGlvblZhbHVlKCJlbWFpbCIpOworCQlhZG1pbi5ncm91cCA9IGNtZGwuZ2V0T3B0aW9uVmFsdWUoImdyb3VwIik7CisJCWlmIChhZG1pbi5sb2dpbiA9PSBudWxsIHx8IGFkbWluLmxvZ2luLmxlbmd0aCgpIDwgSW5zdGFsbGF0aW9uQ29uZmlnLlVTRVJfTE9HSU5fTUlOSU1VTV9MRU5HVEgpIHsKKwkJCVN5c3RlbS5vdXQucHJpbnRsbigiVXNlciBsb2dpbiB3YXMgbm90IHByb3ZpZGVkLCBvciB0b28gc2hvcnQsIHNob3VsZCBiZSBhdCBsZWFzdCAiICsgSW5zdGFsbGF0aW9uQ29uZmlnLlVTRVJfTE9HSU5fTUlOSU1VTV9MRU5HVEggKyAiIGNoYXJhY3RlciBsb25nLiIpOworCQkJU3lzdGVtLmV4aXQoMSk7CisJCX0KKwkJCisJCXRyeSB7CisJCQlpZiAoIU1haWxVdGlsLm1hdGNoZXMoYWRtaW4uZW1haWwpKSB7CisJCQkgICAgdGhyb3cgbmV3IEFkZHJlc3NFeGNlcHRpb24oIkludmFsaWQgYWRkcmVzcyIpOworCQkJfQorCQkJbmV3IEludGVybmV0QWRkcmVzcyhhZG1pbi5lbWFpbCwgdHJ1ZSk7CisJCX0gY2F0Y2ggKEFkZHJlc3NFeGNlcHRpb24gYWUpIHsKKwkJCVN5c3RlbS5vdXQucHJpbnRsbigiUGxlYXNlIHByb3ZpZGUgbm9uLWVtcHR5IHZhbGlkIGVtYWlsOiAnIiArIGFkbWluLmVtYWlsICsgIicgaXMgbm90IHZhbGlkLiIpOworCQkJU3lzdGVtLmV4aXQoMSk7CisJCX0KKwkJaWYgKGFkbWluLmdyb3VwID09IG51bGwgfHwgYWRtaW4uZ3JvdXAubGVuZ3RoKCkgPCAxKSB7CisJCQlTeXN0ZW0ub3V0LnByaW50bG4oIlVzZXIgZ3JvdXAgd2FzIG5vdCBwcm92aWRlZCwgb3IgdG9vIHNob3J0LCBzaG91bGQgYmUgYXQgbGVhc3QgMSBjaGFyYWN0ZXIgbG9uZzogIiArIGFkbWluLmdyb3VwKTsKKwkJCVN5c3RlbS5leGl0KDEpOworCQl9CisJCWFkbWluLnBhc3MgPSBjbWRsLmdldE9wdGlvblZhbHVlKCJwYXNzd29yZCIpOworCQlpZiAoY2hlY2tQYXNzd29yZChhZG1pbi5wYXNzKSkgeworCQkJU3lzdGVtLm91dC5wcmludCgiUGxlYXNlIGVudGVyIHBhc3N3b3JkIGZvciB0aGUgdXNlciAnIiArIGFkbWluLmxvZ2luICsgIic6Iik7CisJCQlhZG1pbi5wYXNzID0gbmV3IEJ1ZmZlcmVkUmVhZGVyKG5ldyBJbnB1dFN0cmVhbVJlYWRlcihTeXN0ZW0uaW4pKS5yZWFkTGluZSgpOworCQkJaWYgKGNoZWNrUGFzc3dvcmQoYWRtaW4ucGFzcykpIHsKKwkJCQlTeXN0ZW0ub3V0LnByaW50bG4oIlBhc3N3b3JkIHdhcyBub3QgcHJvdmlkZWQsIG9yIHRvbyBzaG9ydCwgc2hvdWxkIGJlIGF0IGxlYXN0ICIgKyBJbnN0YWxsYXRpb25Db25maWcuVVNFUl9QQVNTV09SRF9NSU5JTVVNX0xFTkdUSCArICIgY2hhcmFjdGVyIGxvbmcuIik7CisJCQkJU3lzdGVtLmV4aXQoMSk7CisJCQl9CisJCX0KKwkJSW1wb3J0SW5pdHZhbHVlcyBpbXBvcnRJbml0ID0gZ2V0QXBwbGljYXRpb25Db250ZXh0KGN0eE5hbWUpLmdldEJlYW4oSW1wb3J0SW5pdHZhbHVlcy5jbGFzcyk7CisJCU1hcDxTdHJpbmcsIFN0cmluZz4gdHpNYXAgPSBJbXBvcnRIZWxwZXIuZ2V0QWxsVGltZVpvbmVzKGltcG9ydEluaXQuZ2V0VGltZVpvbmVzKCkpOworCQlhZG1pbi50eiA9IG51bGw7CisJCWlmIChjbWRsLmhhc09wdGlvbigidHoiKSkgeworCQkJYWRtaW4udHogPSBjbWRsLmdldE9wdGlvblZhbHVlKCJ0eiIpOworCQkJYWRtaW4udHogPSB0ek1hcC5jb250YWluc0tleShhZG1pbi50eikgPyBhZG1pbi50eiA6IG51bGw7CisJCX0KKwkJaWYgKGFkbWluLnR6ID09IG51bGwpIHsKKwkJCVN5c3RlbS5vdXQucHJpbnRsbigiUGxlYXNlIGVudGVyIHRpbWV6b25lLCBQb3NzaWJsZSB0aW1lem9uZXMgYXJlOiIpOworCQkJCisJCQlmb3IgKFN0cmluZyB0ekljYWwgOiB0ek1hcC5rZXlTZXQoKSkgeworCQkJCVN5c3RlbS5vdXQucHJpbnRsbihTdHJpbmcuZm9ybWF0KCIlMSQtMjVzJTIkcyIsICJcIiIgKyB0ekljYWwgKyAiXCIiLCB0ek1hcC5nZXQodHpJY2FsKSkpOworCQkJfQorCQkJU3lzdGVtLmV4aXQoMSk7CisJCX0KKwkJcmV0dXJuIGFkbWluOworCX0KKwkKKwlwcml2YXRlIGJvb2xlYW4gY2hlY2tQYXNzd29yZChTdHJpbmcgcGFzcykgeworCQlyZXR1cm4gKHBhc3MgPT0gbnVsbCB8fCBwYXNzLmxlbmd0aCgpIDwgSW5zdGFsbGF0aW9uQ29uZmlnLlVTRVJfUEFTU1dPUkRfTUlOSU1VTV9MRU5HVEgpOworCX0KKwkKKwlwdWJsaWMgc3RhdGljIHZvaWQgZHJvcERCKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCUZpbGUgY29uZiA9IG5ldyBGaWxlKE9tRmlsZUhlbHBlci5nZXRXZWJpbmZEaXIoKSwgUEVSU0lTVEVOQ0VfTkFNRSk7CisJCUNvbm5lY3Rpb25Qcm9wZXJ0aWVzIGNvbm5lY3Rpb25Qcm9wZXJ0aWVzID0gQ29ubmVjdGlvblByb3BlcnRpZXNQYXRjaGVyLmdldENvbm5lY3Rpb25Qcm9wZXJ0aWVzKGNvbmYpOworCQlpbW1lZGlhdGVEcm9wREIoY29ubmVjdGlvblByb3BlcnRpZXMpOworCX0KKwkKKwlwcml2YXRlIHZvaWQgZHJvcERCKENvbm5lY3Rpb25Qcm9wZXJ0aWVzIHByb3BzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkJaWYoY21kbC5oYXNPcHRpb24oImRyb3AiKSkgeworCQkJaW1tZWRpYXRlRHJvcERCKHByb3BzKTsKKwkJfQorCX0KKwkKKwlwcml2YXRlIHN0YXRpYyB2b2lkIGltbWVkaWF0ZURyb3BEQihDb25uZWN0aW9uUHJvcGVydGllcyBwcm9wcykgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCVN0cmluZ1tdIGFyZ3MgPSB7CisJCQkJIi1zY2hlbWFBY3Rpb24iLCAicmV0YWluLGRyb3AiCisJCQkJLCAiLXByb3BlcnRpZXMiLCBuZXcgRmlsZShPbUZpbGVIZWxwZXIuZ2V0V2ViaW5mRGlyKCksIFBFUlNJU1RFTkNFX05BTUUpLmdldENhbm9uaWNhbFBhdGgoKQorCQkJCSwgIi1jb25uZWN0aW9uRHJpdmVyTmFtZSIsIHByb3BzLmdldERyaXZlcigpCisJCQkJLCAiLWNvbm5lY3Rpb25VUkwiLCBwcm9wcy5nZXRVUkwoKQorCQkJCSwgIi1jb25uZWN0aW9uVXNlck5hbWUiLCBwcm9wcy5nZXRMb2dpbigpCisJCQkJLCAiLWNvbm5lY3Rpb25QYXNzd29yZCIsIHByb3BzLmdldFBhc3N3b3JkKCkKKwkJCQksICItaWdub3JlRXJyb3JzIiwgInRydWUifTsKKwkJTWFwcGluZ1Rvb2wubWFpbihhcmdzKTsKKwl9CisJCisJcHJpdmF0ZSBGaWxlIGNoZWNrUmVzdG9yZUZpbGUoU3RyaW5nIGZpbGUpIHsKKwkJRmlsZSBiYWNrdXAgPSBuZXcgRmlsZShmaWxlKTsKKwkJaWYgKCFjbWRsLmhhc09wdGlvbigiZmlsZSIpIHx8ICFiYWNrdXAuZXhpc3RzKCkgfHwgIWJhY2t1cC5pc0ZpbGUoKSkgeworCQkJU3lzdGVtLm91dC5wcmludGxuKCJGaWxlIHNob3VsZCBiZSBzcGVjaWZpZWQsIGFuZCBwb2ludCB0aGUgZXhpc3RlbnQgemlwIGZpbGUiKTsKKwkJCXVzYWdlKCk7CisJCQlTeXN0ZW0uZXhpdCgxKTsKKwkJfQorCQkKKwkJcmV0dXJuIGJhY2t1cDsKKwl9CisJCisJcHJpdmF0ZSB2b2lkIHJlc3RvcmVPbShTdHJpbmcgY3R4TmFtZSwgRmlsZSBiYWNrdXApIHsKKwkJdHJ5IHsKKwkJCUJhY2t1cEltcG9ydENvbnRyb2xsZXIgaW1wb3J0Q3RybCA9IGdldEFwcGxpY2F0aW9uQ29udGV4dChjdHhOYW1lKS5nZXRCZWFuKEJhY2t1cEltcG9ydENvbnRyb2xsZXIuY2xhc3MpOworCQkJaW1wb3J0Q3RybC5wZXJmb3JtSW1wb3J0KG5ldyBGaWxlSW5wdXRTdHJlYW0oYmFja3VwKSk7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCQloYW5kbGVFcnJvcigiUmVzdG9yZSBmYWlsZWQiLCBlKTsKKwkJfQorCX0KKwkKKwlwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisJCW5ldyBBZG1pbigpLnByb2Nlc3MoYXJncyk7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2NsaS9Db25uZWN0aW9uUHJvcGVydGllcy5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2NsaS9Db25uZWN0aW9uUHJvcGVydGllcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjZDc4ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvY2xpL0Nvbm5lY3Rpb25Qcm9wZXJ0aWVzLmphdmEKQEAgLTAsMCArMSw2NSBAQAorLyoNCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICogdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5jbGk7DQorDQorcHVibGljIGNsYXNzIENvbm5lY3Rpb25Qcm9wZXJ0aWVzIHsNCisNCisJcHJpdmF0ZSBTdHJpbmcgZHJpdmVyID0gIm9yZy5hcGFjaGUuZGVyYnkuamRiYy5DbGllbnREcml2ZXIiOw0KKwlwcml2YXRlIFN0cmluZyB1cmwgPSAiamRiYzpkZXJieTpvcGVubWVldGluZ3MiOw0KKwlwcml2YXRlIFN0cmluZyBsb2dpbiA9ICJ1c2VyIjsNCisJcHJpdmF0ZSBTdHJpbmcgcGFzc3dvcmQgPSAic2VjcmV0IjsNCisNCisJcHVibGljIFN0cmluZyBnZXREcml2ZXIoKSB7DQorCQlyZXR1cm4gZHJpdmVyOw0KKwl9DQorDQorCXB1YmxpYyB2b2lkIHNldERyaXZlcihTdHJpbmcgZHJpdmVyTmFtZSkgew0KKwkJdGhpcy5kcml2ZXIgPSBkcml2ZXJOYW1lOw0KKwl9DQorDQorCXB1YmxpYyBTdHJpbmcgZ2V0VVJMKCkgew0KKwkJcmV0dXJuIHVybDsNCisJfQ0KKw0KKwlwdWJsaWMgdm9pZCBzZXRVUkwoU3RyaW5nIGNvbm5lY3Rpb25VUkwpIHsNCisJCXRoaXMudXJsID0gY29ubmVjdGlvblVSTDsNCisJfQ0KKw0KKwlwdWJsaWMgU3RyaW5nIGdldExvZ2luKCkgew0KKwkJcmV0dXJuIGxvZ2luOw0KKwl9DQorDQorCXB1YmxpYyB2b2lkIHNldExvZ2luKFN0cmluZyBjb25uZWN0aW9uTG9naW4pIHsNCisJCXRoaXMubG9naW4gPSBjb25uZWN0aW9uTG9naW47DQorCX0NCisNCisJcHVibGljIFN0cmluZyBnZXRQYXNzd29yZCgpIHsNCisJCXJldHVybiBwYXNzd29yZDsNCisJfQ0KKw0KKwlwdWJsaWMgdm9pZCBzZXRQYXNzd29yZChTdHJpbmcgY29ubmVjdGlvblBhc3MpIHsNCisJCXRoaXMucGFzc3dvcmQgPSBjb25uZWN0aW9uUGFzczsNCisJfQ0KKw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsNCisJCXJldHVybiAiQ29ubmVjdGlvblByb3BlcnRpZXMgW2RyaXZlcj0iICsgZHJpdmVyICsgIiwgdXJsPSIgKyB1cmwNCisJCQkJKyAiLCBsb2dpbj0iICsgbG9naW4gKyAiLCBwYXNzd29yZD0iICsgcGFzc3dvcmQgKyAiXSI7DQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2NsaS9Db25uZWN0aW9uUHJvcGVydGllc1BhdGNoZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9jbGkvQ29ubmVjdGlvblByb3BlcnRpZXNQYXRjaGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFiNTM0MgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9jbGkvQ29ubmVjdGlvblByb3BlcnRpZXNQYXRjaGVyLmphdmEKQEAgLTAsMCArMSwxODcgQEAKKy8qDQorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAqIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuY2xpOw0KKw0KK2ltcG9ydCBqYXZhLmlvLkZpbGU7DQorDQoraW1wb3J0IGphdmF4LnhtbC5wYXJzZXJzLkRvY3VtZW50QnVpbGRlcjsNCitpbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeTsNCitpbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lcjsNCitpbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5UcmFuc2Zvcm1lckZhY3Rvcnk7DQoraW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uZG9tLkRPTVNvdXJjZTsNCitpbXBvcnQgamF2YXgueG1sLnRyYW5zZm9ybS5zdHJlYW0uU3RyZWFtUmVzdWx0Ow0KK2ltcG9ydCBqYXZheC54bWwueHBhdGguWFBhdGg7DQoraW1wb3J0IGphdmF4LnhtbC54cGF0aC5YUGF0aENvbnN0YW50czsNCitpbXBvcnQgamF2YXgueG1sLnhwYXRoLlhQYXRoRXhwcmVzc2lvbjsNCitpbXBvcnQgamF2YXgueG1sLnhwYXRoLlhQYXRoRmFjdG9yeTsNCisNCitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmxhbmczLlN0cmluZ0VzY2FwZVV0aWxzOw0KK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMubGFuZzMuU3RyaW5nVXRpbHM7DQoraW1wb3J0IG9yZy53M2MuZG9tLkF0dHI7DQoraW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50Ow0KK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50Ow0KKw0KK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBDb25uZWN0aW9uUHJvcGVydGllc1BhdGNoZXIgew0KKwlwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyBVUkxfUFJFRklYID0gIlVybD0iOw0KKwlwcm90ZWN0ZWQgQ29ubmVjdGlvblByb3BlcnRpZXMgY29ubmVjdGlvblByb3BlcnRpZXM7DQorCQ0KKwlwdWJsaWMgZW51bSBQYXRjaGVyVHlwZSB7DQorCQlkYjINCisJCSwgZGVyYnkNCisJCSwgbXlzcWwNCisJCSwgb3JhY2xlDQorCQksIHBvc3RncmVzDQorCX0NCisJDQorCXN0YXRpYyBDb25uZWN0aW9uUHJvcGVydGllc1BhdGNoZXIgZ2V0UGF0Y2hlcihTdHJpbmcgX2RiVHlwZSkgew0KKwkJUGF0Y2hlclR5cGUgZGJUeXBlID0gUGF0Y2hlclR5cGUudmFsdWVPZihfZGJUeXBlKTsNCisJCUNvbm5lY3Rpb25Qcm9wZXJ0aWVzUGF0Y2hlciBwYXRjaGVyID0gbnVsbDsNCisJCXN3aXRjaCAoZGJUeXBlKSB7DQorCQkJY2FzZSBkYjI6DQorCQkJCXBhdGNoZXIgPSBuZXcgRGIyUGF0Y2hlcigpOw0KKwkJCQlicmVhazsNCisJCQljYXNlIG15c3FsOg0KKwkJCQlwYXRjaGVyID0gbmV3IE15c3FsUGF0Y2hlcigpOw0KKwkJCQlicmVhazsNCisJCQljYXNlIG9yYWNsZToNCisJCQkJcGF0Y2hlciA9IG5ldyBPcmFjbGVQYXRjaGVyKCk7DQorCQkJCWJyZWFrOw0KKwkJCWNhc2UgcG9zdGdyZXM6DQorCQkJCXBhdGNoZXIgPSBuZXcgUG9zdGdyZXNQYXRjaGVyKCk7DQorCQkJCWJyZWFrOw0KKwkJCWNhc2UgZGVyYnk6DQorCQkJZGVmYXVsdDoNCisJCQkJcGF0Y2hlciA9IG5ldyBEZXJieVBhdGNoZXIoKTsNCisJCQkJYnJlYWs7DQorCQl9DQorCQlyZXR1cm4gcGF0Y2hlcjsNCisJfQ0KKwkNCisJc3RhdGljIENvbm5lY3Rpb25Qcm9wZXJ0aWVzIGdldENvbm5lY3Rpb25Qcm9wZXJ0aWVzKEZpbGUgY29uZikgdGhyb3dzIEV4Y2VwdGlvbiB7DQorCQlDb25uZWN0aW9uUHJvcGVydGllcyBjb25uZWN0aW9uUHJvcGVydGllcyA9IG5ldyBDb25uZWN0aW9uUHJvcGVydGllcygpOw0KKwkJRG9jdW1lbnQgZG9jID0gZ2V0RG9jdW1lbnQoY29uZik7DQorCQlBdHRyIGF0dHIgPSBnZXRDb25uZWN0aW9uUHJvcGVydGllcyhkb2MpOw0KKwkJU3RyaW5nW10gdG9rZW5zID0gYXR0ci5nZXRWYWx1ZSgpLnNwbGl0KCIsIik7DQorCQlwcm9jZXNzQmFzaWNQcm9wZXJ0aWVzKHRva2VucywgbnVsbCwgbnVsbCwgY29ubmVjdGlvblByb3BlcnRpZXMpOw0KKwkJDQorCQlyZXR1cm4gY29ubmVjdGlvblByb3BlcnRpZXM7DQorCX0NCisJDQorCXByaXZhdGUgc3RhdGljIERvY3VtZW50IGdldERvY3VtZW50KEZpbGUgeG1sKSB0aHJvd3MgRXhjZXB0aW9uIHsNCisJCURvY3VtZW50QnVpbGRlckZhY3RvcnkgZGJGYWN0b3J5ID0gRG9jdW1lbnRCdWlsZGVyRmFjdG9yeS5uZXdJbnN0YW5jZSgpOw0KKwkJLy9kYkZhY3Rvcnkuc2V0TmFtZXNwYWNlQXdhcmUodHJ1ZSk7DQorCQlEb2N1bWVudEJ1aWxkZXIgZEJ1aWxkZXIgPSBkYkZhY3RvcnkubmV3RG9jdW1lbnRCdWlsZGVyKCk7DQorCQlyZXR1cm4gZEJ1aWxkZXIucGFyc2UoeG1sKTsNCisJfQ0KKwkNCisJcHJpdmF0ZSBzdGF0aWMgQXR0ciBnZXRDb25uZWN0aW9uUHJvcGVydGllcyhEb2N1bWVudCBkb2MpIHRocm93cyBFeGNlcHRpb24gew0KKwkJWFBhdGggeFBhdGggPSBYUGF0aEZhY3RvcnkubmV3SW5zdGFuY2UoKS5uZXdYUGF0aCgpOw0KKwkJWFBhdGhFeHByZXNzaW9uIGV4cHIgPSB4UGF0aC5jb21waWxlKCIvcGVyc2lzdGVuY2UvcGVyc2lzdGVuY2UtdW5pdC9wcm9wZXJ0aWVzL3Byb3BlcnR5W0BuYW1lPSdvcGVuanBhLkNvbm5lY3Rpb25Qcm9wZXJ0aWVzJ10iKTsNCisNCisJCUVsZW1lbnQgZWxlbWVudCA9IChFbGVtZW50KWV4cHIuZXZhbHVhdGUoZG9jLCBYUGF0aENvbnN0YW50cy5OT0RFKTsNCisJCXJldHVybiBlbGVtZW50LmdldEF0dHJpYnV0ZU5vZGUoInZhbHVlIik7DQorCX0NCisJDQorCXB1YmxpYyB2b2lkIHBhdGNoKEZpbGUgc3JjWG1sLCBGaWxlIGRlc3RYbWwsIFN0cmluZyBob3N0LCBTdHJpbmcgcG9ydCwgU3RyaW5nIGRiLCBTdHJpbmcgdXNlciwgU3RyaW5nIHBhc3MsIENvbm5lY3Rpb25Qcm9wZXJ0aWVzIGNvbm5lY3Rpb25Qcm9wZXJ0aWVzKSB0aHJvd3MgRXhjZXB0aW9uIHsNCisJCXRoaXMuY29ubmVjdGlvblByb3BlcnRpZXMgPSBjb25uZWN0aW9uUHJvcGVydGllczsNCisJCURvY3VtZW50IGRvYyA9IGdldERvY3VtZW50KHNyY1htbCk7DQorCQkNCisJCUF0dHIgdmFsID0gZ2V0Q29ubmVjdGlvblByb3BlcnRpZXMoZG9jKTsNCisJCXZhbCA9IHBhdGNoQXR0cmlidXRlKHZhbCwgaG9zdCwgcG9ydCwgZGIsIHVzZXIsIHBhc3MpOw0KKwkJDQorCQlUcmFuc2Zvcm1lckZhY3RvcnkgdHJhbnNmb3JtZXJGYWN0b3J5ID0gVHJhbnNmb3JtZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCk7DQorCQlUcmFuc2Zvcm1lciB0cmFuc2Zvcm1lciA9IHRyYW5zZm9ybWVyRmFjdG9yeS5uZXdUcmFuc2Zvcm1lcigpOw0KKwkJRE9NU291cmNlIHNvdXJjZSA9IG5ldyBET01Tb3VyY2UoZG9jKTsNCisJCXRyYW5zZm9ybWVyLnRyYW5zZm9ybShzb3VyY2UsIG5ldyBTdHJlYW1SZXN1bHQoZGVzdFhtbCkpOw0KKwl9DQorCQ0KKwlwcm90ZWN0ZWQgQXR0ciBwYXRjaEF0dHJpYnV0ZShBdHRyIGF0dHIsIFN0cmluZyBob3N0LCBTdHJpbmcgcG9ydCwgU3RyaW5nIGRiLCBTdHJpbmcgdXNlciwgU3RyaW5nIHBhc3MpIHsNCisJCVN0cmluZ1tdIHRva2VucyA9IGF0dHIuZ2V0VmFsdWUoKS5zcGxpdCgiLCIpOw0KKwkJcHJvY2Vzc0Jhc2ljUHJvcGVydGllcyh0b2tlbnMsIHVzZXIsIHBhc3MsIGNvbm5lY3Rpb25Qcm9wZXJ0aWVzKTsNCisJCXBhdGNoRGIodG9rZW5zLCBob3N0LCBwb3J0LCBkYik7DQorCQlhdHRyLnNldFZhbHVlKFN0cmluZ1V0aWxzLmpvaW4odG9rZW5zLCAiLCIpKTsNCisJCXJldHVybiBhdHRyOw0KKwl9DQorDQorCXByb3RlY3RlZCBzdGF0aWMgdm9pZCBwYXRjaFByb3AoU3RyaW5nW10gdG9rZW5zLCBpbnQgaWR4LCBTdHJpbmcgbmFtZSwgU3RyaW5nIHZhbHVlKSB7DQorCQlTdHJpbmcgcHJvcCA9IHRva2Vuc1tpZHhdLnRyaW0oKTsNCisJCWlmIChwcm9wLnN0YXJ0c1dpdGgobmFtZSkpIHsNCisJCQlwcm9wID0gbmFtZSArICI9IiArIFN0cmluZ0VzY2FwZVV0aWxzLmVzY2FwZVhtbCh2YWx1ZSk7DQorCQkJdG9rZW5zW2lkeF0gPSBwcm9wOw0KKwkJfQ0KKwl9DQorCQ0KKwlwcml2YXRlIHN0YXRpYyB2b2lkIHByb2Nlc3NCYXNpY1Byb3BlcnRpZXMoU3RyaW5nW10gdG9rZW5zLCBTdHJpbmcgdXNlciwNCisJCQlTdHJpbmcgcGFzcywgQ29ubmVjdGlvblByb3BlcnRpZXMgY29ubmVjdGlvblByb3BlcnRpZXMpIHsNCisJCVN0cmluZyBwcm9wOw0KKwkJZm9yIChpbnQgaSA9IDA7IGkgPCB0b2tlbnMubGVuZ3RoOyArK2kpIHsNCisJCQlwcm9wID0gZ2V0UHJvcEZyb21QZXJzaXN0ZW5jZSh0b2tlbnMsIGksICJEcml2ZXJDbGFzc05hbWUiKTsNCisJCQlpZiAocHJvcCAhPSBudWxsKSB7DQorCQkJCWNvbm5lY3Rpb25Qcm9wZXJ0aWVzLnNldERyaXZlcihwcm9wKTsNCisJCQl9DQorCQkJDQorCQkJaWYgKHVzZXIgIT0gbnVsbCkgew0KKwkJCQlwYXRjaFByb3AodG9rZW5zLCBpLCAiVXNlcm5hbWUiLCB1c2VyKTsNCisJCQkJY29ubmVjdGlvblByb3BlcnRpZXMuc2V0TG9naW4odXNlcik7DQorCQkJfSBlbHNlIHsNCisJCQkJcHJvcCA9IGdldFByb3BGcm9tUGVyc2lzdGVuY2UodG9rZW5zLCBpLCAiVXNlcm5hbWUiKTsNCisJCQkJaWYgKHByb3AgIT0gbnVsbCkgew0KKwkJCQkJY29ubmVjdGlvblByb3BlcnRpZXMuc2V0TG9naW4ocHJvcCk7DQorCQkJCX0NCisJCQl9DQorCQkJDQorCQkJaWYgKHBhc3MgIT0gbnVsbCkgew0KKwkJCQlwYXRjaFByb3AodG9rZW5zLCBpLCAiUGFzc3dvcmQiLCBwYXNzKTsNCisJCQkJY29ubmVjdGlvblByb3BlcnRpZXMuc2V0UGFzc3dvcmQocGFzcyk7DQorCQkJfSBlbHNlIHsNCisJCQkJcHJvcCA9IGdldFByb3BGcm9tUGVyc2lzdGVuY2UodG9rZW5zLCBpLCAiUGFzc3dvcmQiKTsNCisJCQkJaWYgKHByb3AgIT0gbnVsbCkgew0KKwkJCQkJY29ubmVjdGlvblByb3BlcnRpZXMuc2V0UGFzc3dvcmQocHJvcCk7DQorCQkJCX0NCisJCQl9DQorCQkJcHJvcCA9IGdldFByb3BGcm9tUGVyc2lzdGVuY2UodG9rZW5zLCBpLCAiVXJsIik7DQorCQkJaWYgKHByb3AgIT0gbnVsbCkgew0KKwkJCQljb25uZWN0aW9uUHJvcGVydGllcy5zZXRVUkwocHJvcCk7DQorCQkJfQ0KKwkJfQ0KKwl9DQorCQ0KKwlwcm90ZWN0ZWQgc3RhdGljIFN0cmluZyBnZXRQcm9wRnJvbVBlcnNpc3RlbmNlKFN0cmluZ1tdIHRva2VucywgaW50IGlkeCwgU3RyaW5nIG5hbWUpew0KKwkJU3RyaW5nIHByb3AgPSB0b2tlbnNbaWR4XS50cmltKCk7DQorCQlpZiAocHJvcC5zdGFydHNXaXRoKG5hbWUpKSB7DQorCQkJLy9Gcm9tICJVc2VybmFtZT1yb290IiBnZXR0aW5nIG9ubHkgInJvb3QiDQorCQkJcmV0dXJuIHByb3Auc3Vic3RyaW5nKHByb3AuaW5kZXhPZigiPSIpICsgMSk7DQorCQl9DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKwkNCisJcHJpdmF0ZSB2b2lkIHBhdGNoRGIoU3RyaW5nW10gdG9rZW5zLCBTdHJpbmcgaG9zdCwgU3RyaW5nIF9wb3J0LCBTdHJpbmcgX2RiKSB7DQorCQlmb3IgKGludCBpID0gMDsgaSA8IHRva2Vucy5sZW5ndGg7ICsraSkgew0KKwkJCVN0cmluZyBwcm9wID0gdG9rZW5zW2ldLnRyaW0oKTsNCisJCQlpZiAocHJvcC5zdGFydHNXaXRoKFVSTF9QUkVGSVgpKSB7DQorCQkJCVN0cmluZyB1cmwgPSBnZXRVcmwocHJvcC5zdWJzdHJpbmcoVVJMX1BSRUZJWC5sZW5ndGgoKSksIGhvc3QsIF9wb3J0LCBfZGIpOw0KKwkJCQljb25uZWN0aW9uUHJvcGVydGllcy5zZXRVUkwodXJsKTsNCisJCQkJdG9rZW5zW2ldID0gVVJMX1BSRUZJWCArIHVybDsNCisJCQkJYnJlYWs7DQorCQkJfQ0KKwkJfQ0KKwl9DQorCQ0KKwlwcm90ZWN0ZWQgYWJzdHJhY3QgU3RyaW5nIGdldFVybChTdHJpbmcgdXJsLCBTdHJpbmcgaG9zdCwgU3RyaW5nIHBvcnQsIFN0cmluZyBkYik7DQorfQ0KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9jbGkvRGIyUGF0Y2hlci5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2NsaS9EYjJQYXRjaGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjY4MTk3OQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9jbGkvRGIyUGF0Y2hlci5qYXZhCkBAIC0wLDAgKzEsMjggQEAKKy8qDQorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAqIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuY2xpOw0KKw0KK3B1YmxpYyBjbGFzcyBEYjJQYXRjaGVyIGV4dGVuZHMgQ29ubmVjdGlvblByb3BlcnRpZXNQYXRjaGVyIHsNCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCBTdHJpbmcgZ2V0VXJsKFN0cmluZyBfdXJsLCBTdHJpbmcgaG9zdCwgU3RyaW5nIF9wb3J0LCBTdHJpbmcgX2RiKSB7DQorCQlTdHJpbmcgcG9ydCA9IChfcG9ydCA9PSBudWxsKSA/ICI1MDAwMCIgOiBfcG9ydDsNCisJCVN0cmluZyBkYiA9IChfZGIgPT0gbnVsbCkgPyAib3Blbm1lZXQiIDogX2RiOw0KKwkJcmV0dXJuICJqZGJjOmRiMjovLyIgKyBob3N0ICsgIjoiICsgcG9ydCArICIvIiArIGRiOyANCisJfQ0KK30NCmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvY2xpL0RlcmJ5UGF0Y2hlci5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2NsaS9EZXJieVBhdGNoZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzEzYzU0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2NsaS9EZXJieVBhdGNoZXIuamF2YQpAQCAtMCwwICsxLDI4IEBACisvKg0KKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgKiB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmNsaTsNCisNCitwdWJsaWMgY2xhc3MgRGVyYnlQYXRjaGVyIGV4dGVuZHMgQ29ubmVjdGlvblByb3BlcnRpZXNQYXRjaGVyIHsNCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCBTdHJpbmcgZ2V0VXJsKFN0cmluZyBfdXJsLCBTdHJpbmcgaG9zdCwgU3RyaW5nIF9wb3J0LCBTdHJpbmcgX2RiKSB7DQorCQlTdHJpbmcgZGIgPSAoX2RiID09IG51bGwpID8gIm9wZW5tZWV0aW5ncyIgOiBfZGI7DQorCQlTdHJpbmcgc3VmZml4ID0gX3VybC5zdWJzdHJpbmcoX3VybC5pbmRleE9mKCc7JykpOw0KKwkJcmV0dXJuICJqZGJjOmRlcmJ5IiArICI6IiArIGRiICsgc3VmZml4OyANCisJfQ0KK30NCmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvY2xpL0R1bW15U2VydmxldENvbnRleHQuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9jbGkvRHVtbXlTZXJ2bGV0Q29udGV4dC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlNTE3ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvY2xpL0R1bW15U2VydmxldENvbnRleHQuamF2YQpAQCAtMCwwICsxLDMwNCBAQAorLyoNCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICogdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5jbGk7DQorDQoraW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07DQoraW1wb3J0IGphdmEubmV0Lk1hbGZvcm1lZFVSTEV4Y2VwdGlvbjsNCitpbXBvcnQgamF2YS5uZXQuVVJMOw0KK2ltcG9ydCBqYXZhLnV0aWwuRW51bWVyYXRpb247DQoraW1wb3J0IGphdmEudXRpbC5FdmVudExpc3RlbmVyOw0KK2ltcG9ydCBqYXZhLnV0aWwuTWFwOw0KK2ltcG9ydCBqYXZhLnV0aWwuU2V0Ow0KKw0KK2ltcG9ydCBqYXZheC5zZXJ2bGV0LkZpbHRlcjsNCitpbXBvcnQgamF2YXguc2VydmxldC5GaWx0ZXJSZWdpc3RyYXRpb247DQoraW1wb3J0IGphdmF4LnNlcnZsZXQuUmVxdWVzdERpc3BhdGNoZXI7DQoraW1wb3J0IGphdmF4LnNlcnZsZXQuU2VydmxldDsNCitpbXBvcnQgamF2YXguc2VydmxldC5TZXJ2bGV0Q29udGV4dDsNCitpbXBvcnQgamF2YXguc2VydmxldC5TZXJ2bGV0RXhjZXB0aW9uOw0KK2ltcG9ydCBqYXZheC5zZXJ2bGV0LlNlcnZsZXRSZWdpc3RyYXRpb247DQoraW1wb3J0IGphdmF4LnNlcnZsZXQuU2Vzc2lvbkNvb2tpZUNvbmZpZzsNCitpbXBvcnQgamF2YXguc2VydmxldC5TZXNzaW9uVHJhY2tpbmdNb2RlOw0KK2ltcG9ydCBqYXZheC5zZXJ2bGV0LlNlcnZsZXRSZWdpc3RyYXRpb24uRHluYW1pYzsNCitpbXBvcnQgamF2YXguc2VydmxldC5kZXNjcmlwdG9yLkpzcENvbmZpZ0Rlc2NyaXB0b3I7DQorDQorcHVibGljIGNsYXNzIER1bW15U2VydmxldENvbnRleHQgaW1wbGVtZW50cyBTZXJ2bGV0Q29udGV4dCB7DQorCXByaXZhdGUgU3RyaW5nIGN0eDsNCisJDQorCXB1YmxpYyBEdW1teVNlcnZsZXRDb250ZXh0KFN0cmluZyBjdHgpIHsNCisJCXRoaXMuY3R4ID0gY3R4Ow0KKwl9DQorCQ0KKwlwdWJsaWMgU2VydmxldENvbnRleHQgZ2V0Q29udGV4dChTdHJpbmcgdXJpcGF0aCkgew0KKwkJLy8gc3RhYg0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJcHVibGljIFN0cmluZyBnZXRDb250ZXh0UGF0aCgpIHsNCisJCXJldHVybiBjdHg7DQorCX0NCisNCisJcHVibGljIGludCBnZXRNYWpvclZlcnNpb24oKSB7DQorCQkvLyBzdGFiDQorCQlyZXR1cm4gMDsNCisJfQ0KKw0KKwlwdWJsaWMgaW50IGdldE1pbm9yVmVyc2lvbigpIHsNCisJCS8vIHN0YWINCisJCXJldHVybiAwOw0KKwl9DQorDQorCXB1YmxpYyBpbnQgZ2V0RWZmZWN0aXZlTWFqb3JWZXJzaW9uKCkgew0KKwkJLy8gc3RhYg0KKwkJcmV0dXJuIDA7DQorCX0NCisNCisJcHVibGljIGludCBnZXRFZmZlY3RpdmVNaW5vclZlcnNpb24oKSB7DQorCQkvLyBzdGFiDQorCQlyZXR1cm4gMDsNCisJfQ0KKw0KKwlwdWJsaWMgU3RyaW5nIGdldE1pbWVUeXBlKFN0cmluZyBmaWxlKSB7DQorCQkvLyBzdGFiDQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwlwdWJsaWMgU2V0PFN0cmluZz4gZ2V0UmVzb3VyY2VQYXRocyhTdHJpbmcgcGF0aCkgew0KKwkJLy8gc3RhYg0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJcHVibGljIFVSTCBnZXRSZXNvdXJjZShTdHJpbmcgcGF0aCkNCisJCQl0aHJvd3MgTWFsZm9ybWVkVVJMRXhjZXB0aW9uIHsNCisJCS8vIHN0YWINCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCXB1YmxpYyBJbnB1dFN0cmVhbSBnZXRSZXNvdXJjZUFzU3RyZWFtKFN0cmluZyBwYXRoKSB7DQorCQkvLyBzdGFiDQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwlwdWJsaWMgUmVxdWVzdERpc3BhdGNoZXIgZ2V0UmVxdWVzdERpc3BhdGNoZXIoU3RyaW5nIHBhdGgpIHsNCisJCS8vIHN0YWINCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCXB1YmxpYyBSZXF1ZXN0RGlzcGF0Y2hlciBnZXROYW1lZERpc3BhdGNoZXIoU3RyaW5nIG5hbWUpIHsNCisJCS8vIHN0YWINCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCXB1YmxpYyBTZXJ2bGV0IGdldFNlcnZsZXQoU3RyaW5nIG5hbWUpIHRocm93cyBTZXJ2bGV0RXhjZXB0aW9uIHsNCisJCS8vIHN0YWINCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCXB1YmxpYyBFbnVtZXJhdGlvbjxTZXJ2bGV0PiBnZXRTZXJ2bGV0cygpIHsNCisJCS8vIHN0YWINCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCXB1YmxpYyBFbnVtZXJhdGlvbjxTdHJpbmc+IGdldFNlcnZsZXROYW1lcygpIHsNCisJCS8vIHN0YWINCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCXB1YmxpYyB2b2lkIGxvZyhTdHJpbmcgbXNnKSB7DQorCQkvLyBzdGFiDQorCX0NCisNCisJcHVibGljIHZvaWQgbG9nKEV4Y2VwdGlvbiBleGNlcHRpb24sIFN0cmluZyBtc2cpIHsNCisJCS8vIHN0YWINCisJfQ0KKw0KKwlwdWJsaWMgdm9pZCBsb2coU3RyaW5nIG1lc3NhZ2UsIFRocm93YWJsZSB0aHJvd2FibGUpIHsNCisJCS8vIHN0YWINCisJfQ0KKw0KKwlwdWJsaWMgU3RyaW5nIGdldFJlYWxQYXRoKFN0cmluZyBwYXRoKSB7DQorCQkvLyBzdGFiDQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwlwdWJsaWMgU3RyaW5nIGdldFNlcnZlckluZm8oKSB7DQorCQkvLyBzdGFiDQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwlwdWJsaWMgU3RyaW5nIGdldEluaXRQYXJhbWV0ZXIoU3RyaW5nIG5hbWUpIHsNCisJCS8vIHN0YWINCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCXB1YmxpYyBFbnVtZXJhdGlvbjxTdHJpbmc+IGdldEluaXRQYXJhbWV0ZXJOYW1lcygpIHsNCisJCS8vIHN0YWINCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCXB1YmxpYyBib29sZWFuIHNldEluaXRQYXJhbWV0ZXIoU3RyaW5nIG5hbWUsIFN0cmluZyB2YWx1ZSkgew0KKwkJLy8gc3RhYg0KKwkJcmV0dXJuIGZhbHNlOw0KKwl9DQorDQorCXB1YmxpYyBPYmplY3QgZ2V0QXR0cmlidXRlKFN0cmluZyBuYW1lKSB7DQorCQkvLyBzdGFiDQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwlwdWJsaWMgRW51bWVyYXRpb248U3RyaW5nPiBnZXRBdHRyaWJ1dGVOYW1lcygpIHsNCisJCS8vIHN0YWINCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCXB1YmxpYyB2b2lkIHNldEF0dHJpYnV0ZShTdHJpbmcgbmFtZSwgT2JqZWN0IG9iamVjdCkgew0KKwkJLy8gc3RhYg0KKwl9DQorDQorCXB1YmxpYyB2b2lkIHJlbW92ZUF0dHJpYnV0ZShTdHJpbmcgbmFtZSkgew0KKwkJLy8gc3RhYg0KKwl9DQorDQorCXB1YmxpYyBTdHJpbmcgZ2V0U2VydmxldENvbnRleHROYW1lKCkgew0KKwkJLy8gc3RhYg0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJcHVibGljIER5bmFtaWMgYWRkU2VydmxldChTdHJpbmcgc2VydmxldE5hbWUsIFN0cmluZyBjbGFzc05hbWUpIHsNCisJCS8vIHN0YWINCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCXB1YmxpYyBEeW5hbWljIGFkZFNlcnZsZXQoU3RyaW5nIHNlcnZsZXROYW1lLCBTZXJ2bGV0IHNlcnZsZXQpIHsNCisJCS8vIHN0YWINCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCXB1YmxpYyBEeW5hbWljIGFkZFNlcnZsZXQoU3RyaW5nIHNlcnZsZXROYW1lLA0KKwkJCUNsYXNzPD8gZXh0ZW5kcyBTZXJ2bGV0PiBzZXJ2bGV0Q2xhc3MpIHsNCisJCS8vIHN0YWINCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCXB1YmxpYyA8VCBleHRlbmRzIFNlcnZsZXQ+IFQgY3JlYXRlU2VydmxldChDbGFzczxUPiBjKQ0KKwkJCXRocm93cyBTZXJ2bGV0RXhjZXB0aW9uIHsNCisJCS8vIHN0YWINCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCXB1YmxpYyBTZXJ2bGV0UmVnaXN0cmF0aW9uIGdldFNlcnZsZXRSZWdpc3RyYXRpb24oDQorCQkJU3RyaW5nIHNlcnZsZXROYW1lKSB7DQorCQkvLyBzdGFiDQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwlwdWJsaWMgTWFwPFN0cmluZywgPyBleHRlbmRzIFNlcnZsZXRSZWdpc3RyYXRpb24+IGdldFNlcnZsZXRSZWdpc3RyYXRpb25zKCkgew0KKwkJLy8gc3RhYg0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJcHVibGljIGphdmF4LnNlcnZsZXQuRmlsdGVyUmVnaXN0cmF0aW9uLkR5bmFtaWMgYWRkRmlsdGVyKA0KKwkJCVN0cmluZyBmaWx0ZXJOYW1lLCBTdHJpbmcgY2xhc3NOYW1lKSB7DQorCQkvLyBzdGFiDQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwlwdWJsaWMgamF2YXguc2VydmxldC5GaWx0ZXJSZWdpc3RyYXRpb24uRHluYW1pYyBhZGRGaWx0ZXIoDQorCQkJU3RyaW5nIGZpbHRlck5hbWUsIEZpbHRlciBmaWx0ZXIpIHsNCisJCS8vIHN0YWINCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCXB1YmxpYyBqYXZheC5zZXJ2bGV0LkZpbHRlclJlZ2lzdHJhdGlvbi5EeW5hbWljIGFkZEZpbHRlcigNCisJCQlTdHJpbmcgZmlsdGVyTmFtZSwgQ2xhc3M8PyBleHRlbmRzIEZpbHRlcj4gZmlsdGVyQ2xhc3MpIHsNCisJCS8vIHN0YWINCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCXB1YmxpYyA8VCBleHRlbmRzIEZpbHRlcj4gVCBjcmVhdGVGaWx0ZXIoQ2xhc3M8VD4gYykNCisJCQl0aHJvd3MgU2VydmxldEV4Y2VwdGlvbiB7DQorCQkvLyBzdGFiDQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwlwdWJsaWMgRmlsdGVyUmVnaXN0cmF0aW9uIGdldEZpbHRlclJlZ2lzdHJhdGlvbigNCisJCQlTdHJpbmcgZmlsdGVyTmFtZSkgew0KKwkJLy8gc3RhYg0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJcHVibGljIE1hcDxTdHJpbmcsID8gZXh0ZW5kcyBGaWx0ZXJSZWdpc3RyYXRpb24+IGdldEZpbHRlclJlZ2lzdHJhdGlvbnMoKSB7DQorCQkvLyBzdGFiDQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwlwdWJsaWMgU2Vzc2lvbkNvb2tpZUNvbmZpZyBnZXRTZXNzaW9uQ29va2llQ29uZmlnKCkgew0KKwkJLy8gc3RhYg0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJcHVibGljIHZvaWQgc2V0U2Vzc2lvblRyYWNraW5nTW9kZXMoDQorCQkJU2V0PFNlc3Npb25UcmFja2luZ01vZGU+IHNlc3Npb25UcmFja2luZ01vZGVzKQ0KKwkJCXRocm93cyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24sIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiB7DQorCQkvLyBzdGFiDQorCX0NCisNCisJcHVibGljIFNldDxTZXNzaW9uVHJhY2tpbmdNb2RlPiBnZXREZWZhdWx0U2Vzc2lvblRyYWNraW5nTW9kZXMoKSB7DQorCQkvLyBzdGFiDQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwlwdWJsaWMgU2V0PFNlc3Npb25UcmFja2luZ01vZGU+IGdldEVmZmVjdGl2ZVNlc3Npb25UcmFja2luZ01vZGVzKCkgew0KKwkJLy8gc3RhYg0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJcHVibGljIHZvaWQgYWRkTGlzdGVuZXIoDQorCQkJQ2xhc3M8PyBleHRlbmRzIEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyQ2xhc3MpIHsNCisJCS8vIHN0YWINCisJfQ0KKw0KKwlwdWJsaWMgdm9pZCBhZGRMaXN0ZW5lcihTdHJpbmcgY2xhc3NOYW1lKSB7DQorCQkvLyBzdGFiDQorCX0NCisNCisJcHVibGljIDxUIGV4dGVuZHMgRXZlbnRMaXN0ZW5lcj4gdm9pZCBhZGRMaXN0ZW5lcihUIHQpIHsNCisJCS8vIHN0YWINCisJfQ0KKw0KKwlwdWJsaWMgPFQgZXh0ZW5kcyBFdmVudExpc3RlbmVyPiBUIGNyZWF0ZUxpc3RlbmVyKENsYXNzPFQ+IGMpDQorCQkJdGhyb3dzIFNlcnZsZXRFeGNlcHRpb24gew0KKwkJLy8gc3RhYg0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisNCisJcHVibGljIHZvaWQgZGVjbGFyZVJvbGVzKFN0cmluZy4uLiByb2xlTmFtZXMpIHsNCisJCS8vIHN0YWINCisJfQ0KKw0KKwlwdWJsaWMgQ2xhc3NMb2FkZXIgZ2V0Q2xhc3NMb2FkZXIoKSB7DQorCQkvLyBzdGFiDQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwlwdWJsaWMgSnNwQ29uZmlnRGVzY3JpcHRvciBnZXRKc3BDb25maWdEZXNjcmlwdG9yKCkgew0KKwkJLy8gc3RhYg0KKwkJcmV0dXJuIG51bGw7DQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2NsaS9NeXNxbFBhdGNoZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9jbGkvTXlzcWxQYXRjaGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTYzZTcxMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9jbGkvTXlzcWxQYXRjaGVyLmphdmEKQEAgLTAsMCArMSwyOSBAQAorLyoNCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICogdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5jbGk7DQorDQorcHVibGljIGNsYXNzIE15c3FsUGF0Y2hlciBleHRlbmRzIENvbm5lY3Rpb25Qcm9wZXJ0aWVzUGF0Y2hlciB7DQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgU3RyaW5nIGdldFVybChTdHJpbmcgX3VybCwgU3RyaW5nIGhvc3QsIFN0cmluZyBfcG9ydCwgU3RyaW5nIF9kYikgew0KKwkJU3RyaW5nIHBvcnQgPSAoX3BvcnQgPT0gbnVsbCkgPyAiMzMwNiIgOiBfcG9ydDsNCisJCVN0cmluZyBkYiA9IChfZGIgPT0gbnVsbCkgPyAib3Blbm1lZXRpbmdzIiA6IF9kYjsNCisJCVN0cmluZyBzdWZmaXggPSBfdXJsLnN1YnN0cmluZyhfdXJsLmluZGV4T2YoJz8nKSk7DQorCQlyZXR1cm4gImpkYmM6bXlzcWw6Ly8iICsgaG9zdCArICI6IiArIHBvcnQgKyAiLyIgKyBkYiArIHN1ZmZpeDsNCisJfQ0KK30NCmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvY2xpL09tSGVscEZvcm1hdHRlci5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2NsaS9PbUhlbHBGb3JtYXR0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZmZhZTUzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2NsaS9PbUhlbHBGb3JtYXR0ZXIuamF2YQpAQCAtMCwwICsxLDIwNiBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5jbGk7CisKK2ltcG9ydCBqYXZhLmlvLlByaW50V3JpdGVyOworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkFycmF5czsKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbnM7CitpbXBvcnQgamF2YS51dGlsLkNvbXBhcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLkxpbmtlZEhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY2xpLkhlbHBGb3JtYXR0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmNsaS5PcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmNsaS5PcHRpb25Hcm91cDsKK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY2xpLk9wdGlvbnM7CisKK3B1YmxpYyBjbGFzcyBPbUhlbHBGb3JtYXR0ZXIgZXh0ZW5kcyBIZWxwRm9ybWF0dGVyIHsKKwlwcml2YXRlIHN0YXRpYyBTdHJpbmcgR0VORVJBTF9PUFRJT05fR1JPVVAgPSAiIjsKKwlwcml2YXRlIGludCBtYXhQcmVmaXhMZW5ndGggPSAwOworCQorCUBTdXBwcmVzc1dhcm5pbmdzKCJ1bmNoZWNrZWQiKQorCXByaXZhdGUgTGlzdDxPbU9wdGlvbj4gZ2V0UmVxT3B0aW9ucyhPcHRpb25zIG9wdHMpIHsKKwkJLy9zdXBwb3NlIHdlIGhhdmUgb25seSAxIGdyb3VwIChmb3Igbm93KQorCQlPcHRpb25Hcm91cCBnID0gKChMaXN0PE9wdGlvbkdyb3VwPilvcHRzLmdldFJlcXVpcmVkT3B0aW9ucygpKS5nZXQoMCk7CisJCUxpc3Q8T21PcHRpb24+IHJlc3VsdCA9IG5ldyBBcnJheUxpc3Q8T21PcHRpb24+KGcuZ2V0T3B0aW9ucygpKTsKKwkJQ29sbGVjdGlvbnMuc29ydChyZXN1bHQsIG5ldyBDb21wYXJhdG9yPE9tT3B0aW9uPigpIHsKKwkJCXB1YmxpYyBpbnQgY29tcGFyZShPbU9wdGlvbiBvMSwgT21PcHRpb24gbzIpIHsKKwkJCQlyZXR1cm4gbzEuZ2V0T3JkZXIoKSAtIG8yLmdldE9yZGVyKCk7CisJCQl9CisJCX0pOworCQlyZXR1cm4gcmVzdWx0OworCX0KKwkKKwlAU3VwcHJlc3NXYXJuaW5ncygidW5jaGVja2VkIikKKwlwcml2YXRlIExpbmtlZEhhc2hNYXA8U3RyaW5nLCBMaXN0PE9tT3B0aW9uPj4gZ2V0T3B0aW9ucyhPcHRpb25zIG9wdHMsIGludCBsZWZ0UGFkKSB7CisJCWZpbmFsIFN0cmluZyBsb25nT3B0U2VwYXJhdG9yID0gIiAiOworCQlmaW5hbCBTdHJpbmcgbHBhZCA9IGNyZWF0ZVBhZGRpbmcobGVmdFBhZCk7CisJCWZpbmFsIFN0cmluZyBscGFkUGFyYW0gPSBjcmVhdGVQYWRkaW5nKGxlZnRQYWQgKyAyKTsKKwkJTGlzdDxPbU9wdGlvbj4gcmVxT3B0aW9ucyA9IGdldFJlcU9wdGlvbnMob3B0cyk7CisJCUxpbmtlZEhhc2hNYXA8U3RyaW5nLCBMaXN0PE9tT3B0aW9uPj4gbWFwID0gbmV3IExpbmtlZEhhc2hNYXA8U3RyaW5nLCBMaXN0PE9tT3B0aW9uPj4ocmVxT3B0aW9ucy5zaXplKCkpOworCQltYXAucHV0KEdFTkVSQUxfT1BUSU9OX0dST1VQLCBuZXcgQXJyYXlMaXN0PE9tT3B0aW9uPigpKTsKKwkJZm9yIChPbU9wdGlvbiBvIDogcmVxT3B0aW9ucykgeworCQkJbWFwLnB1dChvLmdldE9wdCgpLCBuZXcgQXJyYXlMaXN0PE9tT3B0aW9uPigpKTsKKwkJfQorCQlmb3IgKE9tT3B0aW9uIG8gOiAoQ29sbGVjdGlvbjxPbU9wdGlvbj4pb3B0cy5nZXRPcHRpb25zKCkpIHsKKwkJCS8vVE9ETyBuZWVkIGJldHRlciBjaGVjayAocmVxdWlyZWQgb3B0aW9uIHNob3VsZCBnbyBmaXJzdCBhbmQgc2hvdWxkIG5vdCBiZSBkdXBsaWNhdGVkCisJCQlib29sZWFuIHNraXBPcHRpb24gPSBtYXAuY29udGFpbnNLZXkoby5nZXRPcHQoKSk7CisJCQlib29sZWFuIG1haW5PcHRpb24gPSBza2lwT3B0aW9uIHx8IG8uZ2V0R3JvdXAoKSA9PSBudWxsOworCQkJCisJCQkvLyBmaXJzdCBjcmVhdGUgbGlzdCBjb250YWluaW5nIG9ubHkgPGxwYWQ+LWEsLS1hYWEgd2hlcmUKKwkJCS8vIC1hIGlzIG9wdCBhbmQgLS1hYWEgaXMgbG9uZyBvcHQ7IGluIHBhcmFsbGVsIGxvb2sgZm9yCisJCQkvLyB0aGUgbG9uZ2VzdCBvcHQgc3RyaW5nIHRoaXMgbGlzdCB3aWxsIGJlIHRoZW4gdXNlZCB0bworCQkJLy8gc29ydCBvcHRpb25zIGFzY2VuZGluZworCQkJU3RyaW5nQnVpbGRlciBvcHRCdWYgPSBuZXcgU3RyaW5nQnVpbGRlcigpOworCQkJaWYgKG8uZ2V0T3B0KCkgPT0gbnVsbCkgeworCQkJCW9wdEJ1Zi5hcHBlbmQobWFpbk9wdGlvbiA/IGxwYWQgOiBscGFkUGFyYW0pLmFwcGVuZCgiICAgIikuYXBwZW5kKGdldExvbmdPcHRQcmVmaXgoKSkKKwkJCQkJCS5hcHBlbmQoby5nZXRMb25nT3B0KCkpOworCQkJfSBlbHNlIHsKKwkJCQlvcHRCdWYuYXBwZW5kKG1haW5PcHRpb24gPyBscGFkIDogbHBhZFBhcmFtKS5hcHBlbmQoZ2V0T3B0UHJlZml4KCkpCisJCQkJCQkuYXBwZW5kKG8uZ2V0T3B0KCkpOworCisJCQkJaWYgKG8uaGFzTG9uZ09wdCgpKSB7CisJCQkJCW9wdEJ1Zi5hcHBlbmQoJywnKS5hcHBlbmQoZ2V0TG9uZ09wdFByZWZpeCgpKQorCQkJCQkJCS5hcHBlbmQoby5nZXRMb25nT3B0KCkpOworCQkJCX0KKwkJCX0KKworCQkJaWYgKG8uaGFzQXJnKCkpIHsKKwkJCQlTdHJpbmcgYXJnTmFtZSA9IG8uZ2V0QXJnTmFtZSgpOworCQkJCWlmIChhcmdOYW1lICE9IG51bGwgJiYgYXJnTmFtZS5sZW5ndGgoKSA9PSAwKSB7CisJCQkJCS8vIGlmIHRoZSBvcHRpb24gaGFzIGEgYmxhbmsgYXJnbmFtZQorCQkJCQlvcHRCdWYuYXBwZW5kKCcgJyk7CisJCQkJfSBlbHNlIHsKKwkJCQkJb3B0QnVmLmFwcGVuZChvLmhhc0xvbmdPcHQoKSA/IGxvbmdPcHRTZXBhcmF0b3IgOiAiICIpOworCQkJCQlvcHRCdWYuYXBwZW5kKCI8IikKKwkJCQkJCQkuYXBwZW5kKGFyZ05hbWUgIT0gbnVsbCA/IG8uZ2V0QXJnTmFtZSgpCisJCQkJCQkJCQk6IGdldEFyZ05hbWUoKSkuYXBwZW5kKCI+Iik7CisJCQkJfQorCQkJfQorCisJCQlvLnNldEhlbHBQcmVmaXgob3B0QnVmKTsKKwkJCW1heFByZWZpeExlbmd0aCA9IE1hdGgubWF4KG9wdEJ1Zi5sZW5ndGgoKSwgbWF4UHJlZml4TGVuZ3RoKTsKKwkJCQorCQkJaWYgKHNraXBPcHRpb24pIHsKKwkJCQkvL1RPRE8gbmVlZCBiZXR0ZXIgY2hlY2sgKHJlcXVpcmVkIG9wdGlvbiBzaG91bGQgZ28gZmlyc3QgYW5kIHNob3VsZCBub3QgYmUgZHVwbGljYXRlZAorCQkJCWNvbnRpbnVlOworCQkJfQorCQkJU3RyaW5nIGdycCA9IG8uZ2V0R3JvdXAoKTsKKwkJCWdycCA9IGdycCA9PSBudWxsID8gR0VORVJBTF9PUFRJT05fR1JPVVAgOiBncnA7CisJCQlTdHJpbmdbXSBncnBzID0gZ3JwLnNwbGl0KCIsIik7CisJCQlmb3IoU3RyaW5nIGcgOiBncnBzKSB7CisJCQkJbWFwLmdldChnKS5hZGQobyk7CisJCQl9CisJCX0KKwkJZm9yIChTdHJpbmcgX2tleSA6IG1hcC5rZXlTZXQoKSkgeworCQkJZmluYWwgU3RyaW5nIGtleSA9IF9rZXk7CisJCQlMaXN0PE9tT3B0aW9uPiBvcHRpb25zID0gbWFwLmdldChrZXkpOworCQkJQ29sbGVjdGlvbnMuc29ydChvcHRpb25zLCBuZXcgQ29tcGFyYXRvcjxPbU9wdGlvbj4oKXsKKwkJCQlwdWJsaWMgaW50IGNvbXBhcmUoT21PcHRpb24gbzEsIE9tT3B0aW9uIG8yKSB7CisJCQkJCWJvb2xlYW4gbzFvcHQgPSAhbzEuaXNPcHRpb25hbChrZXkpOworCQkJCQlib29sZWFuIG8yb3B0ID0gIW8yLmlzT3B0aW9uYWwoa2V5KTsKKwkJCQkJcmV0dXJuIChvMW9wdCAmJiBvMm9wdCB8fCAhbzFvcHQgJiYgIW8yb3B0KSA/IChvMS5nZXRPcHQoKSA9PSBudWxsID8gMSA6IC0xKSA6IChvMW9wdCA/IC0xIDogMSk7CisJCQkJfQorCQkJCQorCQkJfSk7CisJCQlpZiAob3B0cy5oYXNPcHRpb24oa2V5KSkgeworCQkJCW9wdGlvbnMuYWRkKDAsIChPbU9wdGlvbilvcHRzLmdldE9wdGlvbihrZXkpKTsKKwkJCX0KKwkJfQorCQlyZXR1cm4gbWFwOworCX0KKwkKKwlwcml2YXRlIFN0cmluZ0J1aWxkZXIgZ2V0UmVxT3B0aW9uc1N0cmluZyhPcHRpb25zIG9wdHMpIHsKKwkJU3RyaW5nIGRlbGltID0gIiI7CisJCVN0cmluZ0J1aWxkZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1aWxkZXIoKTsKKwkJZm9yIChPcHRpb24gbyA6IGdldFJlcU9wdGlvbnMob3B0cykpIHsKKwkJCXJlc3VsdC5hcHBlbmQoZGVsaW0pLmFwcGVuZCgiLSIpLmFwcGVuZChvLmdldE9wdCgpKTsKKwkJCWRlbGltID0gInwiOworCQl9CisJCXJldHVybiByZXN1bHQ7CisJfQorCQorCUBPdmVycmlkZQorCXByb3RlY3RlZCBTdHJpbmdCdWZmZXIgcmVuZGVyT3B0aW9ucyhTdHJpbmdCdWZmZXIgc2IsIGludCB3aWR0aCwgT3B0aW9ucyBvcHRpb25zLCBpbnQgbGVmdFBhZCwgaW50IGRlc2NQYWQpIHsKKwkJZmluYWwgU3RyaW5nIGRwYWQgPSBjcmVhdGVQYWRkaW5nKGRlc2NQYWQpOworCQlmaW5hbCBTdHJpbmcgb3B0aW9uYWwgPSAiKG9wdGlvbmFsKSAiOworCisJCUxpbmtlZEhhc2hNYXA8U3RyaW5nLCBMaXN0PE9tT3B0aW9uPj4gb3B0TGlzdCA9IGdldE9wdGlvbnMob3B0aW9ucywgbGVmdFBhZCk7CisKKwkJY2hhcltdIGRlbGltaXRlciA9IG5ldyBjaGFyW3dpZHRoIC0gMl07CisJCUFycmF5cy5maWxsKGRlbGltaXRlciwgJy0nKTsKKworCQlmb3IgKFN0cmluZyBrZXkgOiBvcHRMaXN0LmtleVNldCgpKSB7CisJCQlpZiAoR0VORVJBTF9PUFRJT05fR1JPVVAuZXF1YWxzKGtleSkpIHsKKwkJCQlzYi5hcHBlbmQoIkdlbmVyYWwgb3B0aW9uczoiKS5hcHBlbmQoZ2V0TmV3TGluZSgpKTsKKwkJCX0KKwkJCWZvciAoT21PcHRpb24gb3B0aW9uIDogb3B0TGlzdC5nZXQoa2V5KSkgeworCQkJCVN0cmluZ0J1aWxkZXIgb3B0QnVmID0gbmV3IFN0cmluZ0J1aWxkZXIob3B0aW9uLmdldEhlbHBQcmVmaXgoKSk7CisKKwkJCQlpZiAob3B0QnVmLmxlbmd0aCgpIDwgbWF4UHJlZml4TGVuZ3RoKSB7CisJCQkJCW9wdEJ1Zi5hcHBlbmQoY3JlYXRlUGFkZGluZyhtYXhQcmVmaXhMZW5ndGggLSBvcHRCdWYubGVuZ3RoKCkpKTsKKwkJCQl9CisKKwkJCQlvcHRCdWYuYXBwZW5kKGRwYWQpOworCisJCQkJaW50IG5leHRMaW5lVGFiU3RvcCA9IG1heFByZWZpeExlbmd0aCArIGRlc2NQYWQ7CisKKwkJCQlpZiAob3B0aW9uLmlzT3B0aW9uYWwoa2V5KSkgeworCQkJCQlvcHRCdWYuYXBwZW5kKG9wdGlvbmFsKTsKKwkJCQl9CisJCQkJaWYgKG9wdGlvbi5nZXREZXNjcmlwdGlvbigpICE9IG51bGwpIHsKKwkJCQkJb3B0QnVmLmFwcGVuZChvcHRpb24uZ2V0RGVzY3JpcHRpb24oKSk7CisJCQkJfQorCisJCQkJcmVuZGVyV3JhcHBlZFRleHQoc2IsIHdpZHRoLCBuZXh0TGluZVRhYlN0b3AsIG9wdEJ1Zi50b1N0cmluZygpKTsKKworCQkJCXNiLmFwcGVuZChnZXROZXdMaW5lKCkpOworCQkJfQorCQkJc2IuYXBwZW5kKGRlbGltaXRlcikuYXBwZW5kKGdldE5ld0xpbmUoKSk7CisJCX0KKwkJcmV0dXJuIHNiOworCX0KKworCUBPdmVycmlkZQorCXB1YmxpYyB2b2lkIHByaW50SGVscChQcmludFdyaXRlciBwdywgaW50IHdpZHRoLCBTdHJpbmcgY21kTGluZVN5bnRheCwKKwkJCVN0cmluZyBoZWFkZXIsIE9wdGlvbnMgb3B0aW9ucywgaW50IGxlZnRQYWQsIGludCBkZXNjUGFkLAorCQkJU3RyaW5nIGZvb3RlciwgYm9vbGVhbiBhdXRvVXNhZ2UpIHsKKwkJaWYgKChjbWRMaW5lU3ludGF4ID09IG51bGwpIHx8IChjbWRMaW5lU3ludGF4Lmxlbmd0aCgpID09IDApKSB7CisJCQl0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJjbWRMaW5lU3ludGF4IG5vdCBwcm92aWRlZCIpOworCQl9CisKKwkJcHJpbnRVc2FnZShwdywgd2lkdGgsIGNtZExpbmVTeW50YXgsIG9wdGlvbnMpOworCisJCWlmICgoaGVhZGVyICE9IG51bGwpICYmIChoZWFkZXIudHJpbSgpLmxlbmd0aCgpID4gMCkpIHsKKwkJCXByaW50V3JhcHBlZChwdywgd2lkdGgsIGhlYWRlcik7CisJCX0KKworCQlwcmludE9wdGlvbnMocHcsIHdpZHRoLCBvcHRpb25zLCBsZWZ0UGFkLCBkZXNjUGFkKTsKKworCQlpZiAoKGZvb3RlciAhPSBudWxsKSAmJiAoZm9vdGVyLnRyaW0oKS5sZW5ndGgoKSA+IDApKSB7CisJCQlwcmludFdyYXBwZWQocHcsIHdpZHRoLCBmb290ZXIpOworCQl9CisJfQorICAgIAorCXB1YmxpYyB2b2lkIHByaW50VXNhZ2UoUHJpbnRXcml0ZXIgcHcsIGludCB3aWR0aCwgU3RyaW5nIGFwcCwgT3B0aW9ucyBvcHRzKSB7CisJCXB3LnByaW50bG4oU3RyaW5nLmZvcm1hdCgidXNhZ2U6ICUxJHMgWyUyJHNdIFtvcHRpb25zXSIsIGFwcCwgZ2V0UmVxT3B0aW9uc1N0cmluZyhvcHRzKSkpOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9jbGkvT21PcHRpb24uamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9jbGkvT21PcHRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jOWExNWQwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2NsaS9PbU9wdGlvbi5qYXZhCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmNsaTsKKworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5NYXA7CisKK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY2xpLk9wdGlvbjsKKworcHVibGljIGNsYXNzIE9tT3B0aW9uIGV4dGVuZHMgT3B0aW9uIHsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAtNTQ0NDI2NzY5ODk4OTE1NTczTDsKKwlwcml2YXRlIFN0cmluZyBncm91cCA9IG51bGw7CisJcHJpdmF0ZSBNYXA8U3RyaW5nLCBCb29sZWFuPiBvcHRpb25hbCA9IG51bGw7CisJcHJpdmF0ZSBpbnQgb3JkZXIgPSAwOworCXByaXZhdGUgU3RyaW5nIGhlbHBQcmVmaXggPSAiIjsKKworCXB1YmxpYyBPbU9wdGlvbihTdHJpbmcgZ3JvdXAsIFN0cmluZyBvcHQsIFN0cmluZyBsb25nT3B0LCBib29sZWFuIGhhc0FyZywKKwkJCVN0cmluZyBkZXNjcmlwdGlvbiwgYm9vbGVhbiBvcHRpb25hbCkgdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiB7CisJCXRoaXMoZ3JvdXAsIDAsIG9wdCwgbG9uZ09wdCwgaGFzQXJnLCBkZXNjcmlwdGlvbik7CisJCXNldE9wdGlvbmFsKG9wdGlvbmFsKTsKKwl9CisKKwlwdWJsaWMgT21PcHRpb24oU3RyaW5nIGdyb3VwLCBTdHJpbmcgb3B0LCBTdHJpbmcgbG9uZ09wdCwgYm9vbGVhbiBoYXNBcmcsCisJCQlTdHJpbmcgZGVzY3JpcHRpb24sIFN0cmluZyBvcHRpb25hbCkgdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiB7CisJCXRoaXMoZ3JvdXAsIDAsIG9wdCwgbG9uZ09wdCwgaGFzQXJnLCBkZXNjcmlwdGlvbik7CisJCXNldE9wdGlvbmFsKG9wdGlvbmFsKTsKKwl9CisKKwlwdWJsaWMgT21PcHRpb24oU3RyaW5nIGdyb3VwLCBpbnQgb3JkZXIsIFN0cmluZyBvcHQsIFN0cmluZyBsb25nT3B0LCBib29sZWFuIGhhc0FyZywKKwkJCVN0cmluZyBkZXNjcmlwdGlvbikgdGhyb3dzIElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbiB7CisJCXN1cGVyKG9wdCwgbG9uZ09wdCwgaGFzQXJnLCBkZXNjcmlwdGlvbik7CisJCXRoaXMuZ3JvdXAgPSBncm91cDsKKwkJdGhpcy5zZXRPcmRlcihvcmRlcik7CisJfQorCisJcHVibGljIE9tT3B0aW9uKFN0cmluZyBncm91cCwgU3RyaW5nIG9wdCwgU3RyaW5nIGxvbmdPcHQsIGJvb2xlYW4gaGFzQXJnLAorCQkJU3RyaW5nIGRlc2NyaXB0aW9uKSB0aHJvd3MgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uIHsKKwkJdGhpcyhncm91cCwgMCwgb3B0LCBsb25nT3B0LCBoYXNBcmcsIGRlc2NyaXB0aW9uKTsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGdldEdyb3VwKCkgeworCQlyZXR1cm4gZ3JvdXA7CisJfQorCisJcHVibGljIHZvaWQgc2V0R3JvdXAoU3RyaW5nIGdyb3VwKSB7CisJCXRoaXMuZ3JvdXAgPSBncm91cDsKKwl9CisKKwlwdWJsaWMgYm9vbGVhbiBpc09wdGlvbmFsKFN0cmluZyBncm91cCkgeworCQlib29sZWFuIHJlc3VsdCA9IGZhbHNlOworCQlpZiAob3B0aW9uYWwgIT0gbnVsbCkgeworCQkJU3RyaW5nW10gZ3JwcyA9IGdyb3VwLnNwbGl0KCIsIik7CisJCQlmb3IoU3RyaW5nIGcgOiBncnBzKSB7CisJCQkJcmVzdWx0IHw9IG9wdGlvbmFsLmNvbnRhaW5zS2V5KGcpID8gb3B0aW9uYWwuZ2V0KGcpIDogZmFsc2U7CisJCQl9CisJCX0KKwkJcmV0dXJuIHJlc3VsdDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRPcHRpb25hbChib29sZWFuIHZhbCkgeworCQlzZXRPcHRpb25hbChncm91cCk7CisJfQorCQorCXB1YmxpYyB2b2lkIHNldE9wdGlvbmFsKFN0cmluZyBncm91cCkgeworCQlTdHJpbmdbXSBncnBzID0gZ3JvdXAuc3BsaXQoIiwiKTsKKwkJb3B0aW9uYWwgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIEJvb2xlYW4+KGdycHMubGVuZ3RoKTsKKwkJZm9yKFN0cmluZyBnIDogZ3JwcykgeworCQkJb3B0aW9uYWwucHV0KGcsIHRydWUpOworCQl9CisJfQorCisJcHVibGljIGludCBnZXRPcmRlcigpIHsKKwkJcmV0dXJuIG9yZGVyOworCX0KKworCXB1YmxpYyB2b2lkIHNldE9yZGVyKGludCBvcmRlcikgeworCQl0aGlzLm9yZGVyID0gb3JkZXI7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRIZWxwUHJlZml4KCkgeworCQlyZXR1cm4gaGVscFByZWZpeDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRIZWxwUHJlZml4KFN0cmluZ0J1aWxkZXIgaGVscFByZWZpeCkgeworCQl0aGlzLmhlbHBQcmVmaXggPSBoZWxwUHJlZml4LnRvU3RyaW5nKCk7CisJfQorCisJcHVibGljIHZvaWQgc2V0SGVscFByZWZpeChTdHJpbmcgaGVscFByZWZpeCkgeworCQl0aGlzLmhlbHBQcmVmaXggPSBoZWxwUHJlZml4OworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9jbGkvT3JhY2xlUGF0Y2hlci5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2NsaS9PcmFjbGVQYXRjaGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmNjOTQyOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9jbGkvT3JhY2xlUGF0Y2hlci5qYXZhCkBAIC0wLDAgKzEsMjggQEAKKy8qDQorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAqIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuY2xpOw0KKw0KK3B1YmxpYyBjbGFzcyBPcmFjbGVQYXRjaGVyIGV4dGVuZHMgQ29ubmVjdGlvblByb3BlcnRpZXNQYXRjaGVyIHsNCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCBTdHJpbmcgZ2V0VXJsKFN0cmluZyBfdXJsLCBTdHJpbmcgaG9zdCwgU3RyaW5nIF9wb3J0LCBTdHJpbmcgX2RiKSB7DQorCQlTdHJpbmcgcG9ydCA9IChfcG9ydCA9PSBudWxsKSA/ICIxNTIxIiA6IF9wb3J0Ow0KKwkJU3RyaW5nIGRiID0gKF9kYiA9PSBudWxsKSA/ICJvcGVubWVldGluZ3MiIDogX2RiOw0KKwkJcmV0dXJuICJqZGJjOm9yYWNsZTp0aGluOkAiICsgaG9zdCArICI6IiArIHBvcnQgKyAiOiIgKyBkYjsgDQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2NsaS9Qb3N0Z3Jlc1BhdGNoZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9jbGkvUG9zdGdyZXNQYXRjaGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTFiODg1YwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9jbGkvUG9zdGdyZXNQYXRjaGVyLmphdmEKQEAgLTAsMCArMSwyOCBAQAorLyoNCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICogdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5jbGk7DQorDQorcHVibGljIGNsYXNzIFBvc3RncmVzUGF0Y2hlciBleHRlbmRzIENvbm5lY3Rpb25Qcm9wZXJ0aWVzUGF0Y2hlciB7DQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgU3RyaW5nIGdldFVybChTdHJpbmcgX3VybCwgU3RyaW5nIGhvc3QsIFN0cmluZyBfcG9ydCwgU3RyaW5nIF9kYikgew0KKwkJU3RyaW5nIHBvcnQgPSAoX3BvcnQgPT0gbnVsbCkgPyAiNTQzMiIgOiBfcG9ydDsNCisJCVN0cmluZyBkYiA9IChfZGIgPT0gbnVsbCkgPyAib3Blbm1lZXRpbmdzIiA6IF9kYjsNCisJCXJldHVybiAiamRiYzpwb3N0Z3Jlc3FsOi8vIiArIGhvc3QgKyAiOiIgKyBwb3J0ICsgIi8iICsgZGI7IA0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9jbHVzdGVyL1NsYXZlSFRUUENvbm5lY3Rpb25NYW5hZ2VyLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvY2x1c3Rlci9TbGF2ZUhUVFBDb25uZWN0aW9uTWFuYWdlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3YWRkY2YKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvY2x1c3Rlci9TbGF2ZUhUVFBDb25uZWN0aW9uTWFuYWdlci5qYXZhCkBAIC0wLDAgKzEsMTAyIEBACisvKg0KKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgKiB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmNsdXN0ZXI7DQorDQoraW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOw0KK2ltcG9ydCBqYXZhLnV0aWwuTWFwOw0KKw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmNsdXN0ZXIuc3luYy5SZXN0Q2xpZW50Ow0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5TZXJ2ZXI7DQoraW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7DQorDQorLyoqDQorICogTWFuYWdlcyBjb25uZWN0aW9ucyB0byB0aGUgb3RoZXIgbm9kZXMgb2YgdGhlIGNsdXN0ZXIuDQorICogDQorICogVXNlLWNhc2U6IFdoZW4geW91IGtpY2sgYSB1c2VyIHZpYSB0aGUgYWRtaW4tcGFuZWwsIGl0IGlzIHByb2JhYmx5IG9uIGFudGhlciBzZXJ2ZXIuDQorICogU28geW91IG5lZWQgdG8gcGVyZm9ybSBhIFJFU1QgY2FsbCB0byB0aGUgbm9kZSBhbmQgbGV0IHRoYXQgbm9kZSBkbyB0aGUgYWN0dWFsIGRpc2Nvbm5lY3QuDQorICogDQorICogQGF1dGhvciBzZWJhd2FnbmVyDQorICoNCisgKi8NCitwdWJsaWMgY2xhc3MgU2xhdmVIVFRQQ29ubmVjdGlvbk1hbmFnZXIgew0KKw0KKwlwcml2YXRlIHN0YXRpYyBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKA0KKwkJCVNsYXZlSFRUUENvbm5lY3Rpb25NYW5hZ2VyLmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7DQorDQorCS8qKg0KKwkgKiBXZSBzdG9yZSB0aGUgbGlzdCBvZiBSZXN0Q2xpZW50cyBpbiB0aGUgbWVtb3J5LCBzbyB0aGF0IHdlIGNhbiBzaW1wbHkNCisJICogY2FsbCBwaW5nIHRvIGdldCB0aGUgbG9hZCwgd2l0aG91dCB0aGUgbmVlZCB0byBnZXQgYSBuZXcgc2Vzc2lvbiBIYXNoIGFuZA0KKwkgKiB0byBsb2dpbiBhZ2Fpbi4gPGJyLz4NCisJICogVGhlcmUgY2FuIGJlIG9ubHkgb25lIFJlc3RDbGllbnQgcGVyIHNlcnZlciwgc28gd2UgdXNlIHRoZSBwcmltYXJ5IGtleSBvZg0KKwkgKiB0aGUgc2VydmVyIHRvIHN0b3JlIHRoZSBSZXN0Q2xpZW50Lg0KKwkgKi8NCisJcHJpdmF0ZSBzdGF0aWMgTWFwPExvbmcsIFJlc3RDbGllbnQ+IHJlc3RDbGllbnRzU2Vzc2lvblN0b3JlID0gbmV3IEhhc2hNYXA8TG9uZywgUmVzdENsaWVudD4oKTsNCisNCisJLyoqDQorCSAqIFN5bmNocm9uaXplZCwgY2F1c2Ugbm9ib2R5IHNob3VsZCBtYW5pcHVsYXRlIHRoZSBvYmplY3Qgd2hpbGUgYW5vdGhlcg0KKwkgKiBwcm9jZXNzIHJlcXVlc3RzIGl0LCB0aGUgc2NoZWR1bGVyIGNvdWxkIHJ1biBzZXZlcmFsIHRpbWVzIGFuZCByZXF1ZXN0DQorCSAqIHRoZSBzYW1lIG9iamVjdCwgYWRkIG9yIHJlbW92ZSBpdC48YnIvPg0KKwkgKiBJZiB0aGVyZSBpcyBubyBvYmplY3QgeWV0LCBjcmVhdGUgb25lLg0KKwkgKiANCisJICogQHBhcmFtIHNlcnZlcg0KKwkgKi8NCisJcHJpdmF0ZSBzeW5jaHJvbml6ZWQgUmVzdENsaWVudCBnZXRSZXN0Q2xpZW50KFNlcnZlciBzZXJ2ZXIpIHsNCisJCVJlc3RDbGllbnQgcmVzdENsaWVudCA9IHJlc3RDbGllbnRzU2Vzc2lvblN0b3JlLmdldChzZXJ2ZXIuZ2V0SWQoKSk7DQorDQorCQkvLyBjaGVjayBpZiBhbnkgdmFsdWVzIG9mIHRoZSBzZXJ2ZXIgaGF2ZSBiZWVuIGNoYW5nZWQsDQorCQkvLyBpZiB5ZXMsIHdlIG5lZWQgYSBuZXcgUmVzdENsaWVudCB0byBtYWtlIHN1cmUgaXQgd2lsbCByZS1sb2dpbiB0byB0aGUNCisJCS8vIGNoYW5nZWQgc2VydmVyIGRldGFpbHMNCisJCWlmIChyZXN0Q2xpZW50ICE9IG51bGwgJiYgcmVzdENsaWVudC5oYXNTZXJ2ZXJEZXRhaWxzQ2hhbmdlZChzZXJ2ZXIpKSB7DQorCQkJbG9nLmRlYnVnKCJTZXJ2ZXIgZGV0YWlscyBjaGFuZ2VkLCBnZXQgbmV3IHJlc3QgY2xpZW50Iik7DQorCQkJcmVzdENsaWVudCA9IG51bGw7DQorCQl9DQorDQorCQlpZiAocmVzdENsaWVudCA9PSBudWxsKSB7DQorCQkJcmVzdENsaWVudCA9IG5ldyBSZXN0Q2xpZW50KHNlcnZlcik7DQorCQkJcmVzdENsaWVudHNTZXNzaW9uU3RvcmUucHV0KHNlcnZlci5nZXRJZCgpLCByZXN0Q2xpZW50KTsNCisJCX0NCisJCXJldHVybiByZXN0Q2xpZW50Ow0KKwl9DQorDQorCS8qKg0KKwkgKiBHZXRzIHRoZSBjdXJyZW50IHtAbGluayBSZXN0Q2xpZW50fSBmcm9tIHRoZSBzZXNzaW9uIHN0b3JlIGFuZCB0aGVuDQorCSAqIHBlcmZvcm1zIGEga2lja1VzZXIgb24gdGhhdC4gSXQgaXMgbm90IHBvc3NpYmxlIHRoYXQgdGhlcmUgaXMgbm8NCisJICoge0BsaW5rIFJlc3RDbGllbnR9LCBiZWNhdXNlIGlmIHlvdSB3YW50IHRvIGtpY2sgYSB1c2VyIGZyb20gYSBzbGF2ZSwgdGhlDQorCSAqIG1hc3RlciA8aT5tdXN0PC9pPiBhbHJlYWR5IGhhdmUgbG9hZGVkIHRoZSBzZXNzaW9ucyBmcm9tIHRoZSBzbGF2ZSwgc28NCisJICogdGhlcmUgbG9naWNhbGx5IDxpPm11c3Q8L2k+IGJ5IGEge0BsaW5rIFJlc3RDbGllbnR9IGF2YWlsYWJsZSB0aGF0IGhhcyBhbiANCisJICogb3BlbiBjb25uZWN0aW9uIHRvIHRoYXQgc2xhdmUgLyB7QGxpbmsgU2VydmVyfQ0KKwkgKiANCisJICogQHBhcmFtIHNlcnZlcklkDQorCSAqIEBwYXJhbSBwdWJsaWNTSUQNCisJICovDQorCXB1YmxpYyB2b2lkIGtpY2tTbGF2ZVVzZXIoU2VydmVyIHNlcnZlciwgU3RyaW5nIHB1YmxpY1NJRCkgdGhyb3dzIEV4Y2VwdGlvbiB7DQorCQkNCisJCVJlc3RDbGllbnQgckNsaWVudCA9IGdldFJlc3RDbGllbnQoc2VydmVyKTsNCisJCQ0KKwkJaWYgKHJDbGllbnQgPT0gbnVsbCkgew0KKwkJCXRocm93IG5ldyBFeGNlcHRpb24oIk5vIFJlc3RDbGllbnQgZm91bmQgZm9yIHNlcnZlciAiICsgc2VydmVyKTsNCisJCX0NCisJCQ0KKwkJckNsaWVudC5raWNrVXNlcihwdWJsaWNTSUQpOw0KKwkJDQorCX0NCisJDQorfQ0KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9jbHVzdGVyL2JlYW5zL1NlcnZlckRUTy5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2NsdXN0ZXIvYmVhbnMvU2VydmVyRFRPLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWY4NmJhZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9jbHVzdGVyL2JlYW5zL1NlcnZlckRUTy5qYXZhCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuY2x1c3Rlci5iZWFuczsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLlNlcnZlcjsKKworLyoqCisgKiAKKyAqIEJlYW4gc2VuZCB0byB0aGUgY2xpZW50IGFib3V0IHRoZSBzZXJ2ZXIgaGUgaXMgZ29pbmcgdG8gdXNlIGZvciB0aGUgY29uZmVyZW5jZSAKKyAqIHNlc3Npb24KKyAqIAorICogQGF1dGhvciBzZWJhd2FnbmVyCisgKgorICovCitwdWJsaWMgY2xhc3MgU2VydmVyRFRPIHsKKworCXByaXZhdGUgTG9uZyBpZDsKKwlwcml2YXRlIFN0cmluZyBhZGRyZXNzOworCXByaXZhdGUgaW50IHBvcnQ7CisJcHJpdmF0ZSBTdHJpbmcgcHJvdG9jb2w7CisJcHJpdmF0ZSBTdHJpbmcgd2ViYXBwOworCisJcHVibGljIFNlcnZlckRUTyhTZXJ2ZXIgc2VydmVyKSB7CisJCWlmIChzZXJ2ZXIgPT0gbnVsbCkgeworCQkJcmV0dXJuOworCQl9CisJCWlkID0gc2VydmVyLmdldElkKCk7CisJCWFkZHJlc3MgPSBzZXJ2ZXIuZ2V0QWRkcmVzcygpOworCQlwb3J0ID0gc2VydmVyLmdldFBvcnQoKTsKKwkJcHJvdG9jb2wgPSBzZXJ2ZXIuZ2V0UHJvdG9jb2woKTsKKwkJd2ViYXBwID0gc2VydmVyLmdldFdlYmFwcCgpOworCX0KKworCXB1YmxpYyBMb25nIGdldElkKCkgeworCQlyZXR1cm4gaWQ7CisJfQorCisJcHVibGljIHZvaWQgc2V0SWQoTG9uZyBpZCkgeworCQl0aGlzLmlkID0gaWQ7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRBZGRyZXNzKCkgeworCQlyZXR1cm4gYWRkcmVzczsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRBZGRyZXNzKFN0cmluZyBhZGRyZXNzKSB7CisJCXRoaXMuYWRkcmVzcyA9IGFkZHJlc3M7CisJfQorCisJcHVibGljIGludCBnZXRQb3J0KCkgeworCQlyZXR1cm4gcG9ydDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRQb3J0KGludCBwb3J0KSB7CisJCXRoaXMucG9ydCA9IHBvcnQ7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRQcm90b2NvbCgpIHsKKwkJcmV0dXJuIHByb3RvY29sOworCX0KKworCXB1YmxpYyB2b2lkIHNldFByb3RvY29sKFN0cmluZyBwcm90b2NvbCkgeworCQl0aGlzLnByb3RvY29sID0gcHJvdG9jb2w7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRXZWJhcHAoKSB7CisJCXJldHVybiB3ZWJhcHA7CisJfQorCisJcHVibGljIHZvaWQgc2V0V2ViYXBwKFN0cmluZyB3ZWJhcHApIHsKKwkJdGhpcy53ZWJhcHAgPSB3ZWJhcHA7CisJfQorCQorCUBPdmVycmlkZQorCXB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisJCXJldHVybiAiaWQgIitpZCsiIGFkZHJlc3MgIithZGRyZXNzKyIgcG9ydCAiK3BvcnQrIiBwcm90b2NvbCAiK3Byb3RvY29sOworCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2NsdXN0ZXIvc3luYy9SZXN0Q2xpZW50LmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvY2x1c3Rlci9zeW5jL1Jlc3RDbGllbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDBlY2M3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2NsdXN0ZXIvc3luYy9SZXN0Q2xpZW50LmphdmEKQEAgLTAsMCArMSwzOTUgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuY2x1c3Rlci5zeW5jOworCitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworCitpbXBvcnQgamF2YXgueG1sLm5hbWVzcGFjZS5RTmFtZTsKKworaW1wb3J0IG9yZy5hcGFjaGUuYXhpb20ub20uT01BYnN0cmFjdEZhY3Rvcnk7CitpbXBvcnQgb3JnLmFwYWNoZS5heGlvbS5vbS5PTUVsZW1lbnQ7CitpbXBvcnQgb3JnLmFwYWNoZS5heGlvbS5vbS5PTUZhY3Rvcnk7CitpbXBvcnQgb3JnLmFwYWNoZS5heGlvbS5vbS5PTU5hbWVzcGFjZTsKK2ltcG9ydCBvcmcuYXBhY2hlLmF4aXMyLkNvbnN0YW50czsKK2ltcG9ydCBvcmcuYXBhY2hlLmF4aXMyLmFkZHJlc3NpbmcuRW5kcG9pbnRSZWZlcmVuY2U7CitpbXBvcnQgb3JnLmFwYWNoZS5heGlzMi5jbGllbnQuT3B0aW9uczsKK2ltcG9ydCBvcmcuYXBhY2hlLmF4aXMyLmNsaWVudC5TZXJ2aWNlQ2xpZW50OworaW1wb3J0IG9yZy5hcGFjaGUuYXhpczIudHJhbnNwb3J0Lmh0dHAuSFRUUENvbnN0YW50czsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuU2VydmVyOworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKKworLyoqCisgKiAKKyAqIFBlcmZvcm1zIGNhbGwgdG8gdGhlIFdlYlNlcnZpY2UgR2F0ZXdheSB0byBsb2FkIHRoZSBzZXJ2ZXIgbG9hZCBmcm9tIHRoZQorICogc2xhdmUncyBvZiB0aGUgY2x1c3RlcgorICogCisgKiBAYXV0aG9yIHNlYmF3YWduZXIKKyAqIAorICovCitwdWJsaWMgY2xhc3MgUmVzdENsaWVudCB7CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKAorCQkJUmVzdENsaWVudC5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCQorCXByaXZhdGUgZW51bSBBY3Rpb24geworCQkvL2tpY2sgdGhlIHVzZXIgZnJvbSB0aGUgc2VydmVyCisJCUtJQ0tfVVNFUiwKKwl9CisKKwlwcml2YXRlIGZpbmFsIFN0cmluZyBob3N0OworCXByaXZhdGUgZmluYWwgaW50IHBvcnQ7CisJcHJpdmF0ZSBmaW5hbCBTdHJpbmcgcHJvdG9jb2w7CisJcHJpdmF0ZSBmaW5hbCBTdHJpbmcgd2ViYXBwOworCXByaXZhdGUgZmluYWwgU3RyaW5nIHVzZXI7CisJcHJpdmF0ZSBmaW5hbCBTdHJpbmcgcGFzczsKKworCXByaXZhdGUgYm9vbGVhbiBsb2dpblN1Y2Nlc3MgPSBmYWxzZTsKKwlwcml2YXRlIFN0cmluZyBzZXNzaW9uSWQ7CisJCisJcHJpdmF0ZSBTdHJpbmcgcHVibGljU0lEOworCisvLwlwcml2YXRlIHN0YXRpYyBTdHJpbmcgbmFtZVNwYWNlRm9yU2xhdmVEdG8gPSAiaHR0cDovL3Jvb20uY29uZmVyZW5jZS5vcGVubWVldGluZ3MuYXBhY2hlLm9yZy94c2QiOworCQorCXByaXZhdGUgc3RhdGljIFN0cmluZyBOQU1FU1BBQ0VfUFJFRklYID0gImh0dHA6Ly9zZXJ2aWNlcy5heGlzLm9wZW5tZWV0aW5ncy5hcGFjaGUub3JnIjsKKworCXByaXZhdGUgU3RyaW5nIGdldFVzZXJTZXJ2aWNlRW5kUG9pbnQoKSB7CisJCXJldHVybiBwcm90b2NvbCArICI6Ly8iICsgaG9zdCArICI6IiArIHBvcnQgKyAiLyIgKyB3ZWJhcHAKKwkJCQkrICIvc2VydmljZXMvVXNlclNlcnZpY2UiOworCX0KKy8vCisvLwlwcml2YXRlIFN0cmluZyBnZXRSb29tU2VydmljZUVuZFBvaW50KCkgeworLy8JCXJldHVybiBwcm90b2NvbCArICI6Ly8iICsgaG9zdCArICI6IiArIHBvcnQgKyAiLyIgKyB3ZWJhcHAKKy8vCQkJCSsgIi9zZXJ2aWNlcy9Sb29tU2VydmljZSI7CisvLwl9CisKKwkvKioKKwkgKiBUaGUgb2JzZXJ2ZXJJbnN0YW5jZSB3aWxsIGJlIG5vdGlmaWVkIHdoZW5ldmVyIGEgcGluZyB3YXMgY29tcGxldGVkCisJICogCisJICogQHBhcmFtIG9ic2VydmVySW5zdGFuY2UKKwkgKiBAcGFyYW0gaG9zdAorCSAqIEBwYXJhbSBwb3J0CisJICogQHBhcmFtIHByb3RvY29sCisJICogQHBhcmFtIHdlYmFwcAorCSAqIEBwYXJhbSB1c2VyCisJICogQHBhcmFtIHBhc3MKKwkgKi8KKwlwdWJsaWMgUmVzdENsaWVudChTZXJ2ZXIgc2VydmVyKSB7CisJCS8vdGhpcy5zZXJ2ZXIgPSBzZXJ2ZXI7CisJCXRoaXMuaG9zdCA9IHNlcnZlci5nZXRBZGRyZXNzKCk7CisJCXRoaXMucG9ydCA9IHNlcnZlci5nZXRQb3J0KCk7CisJCXRoaXMucHJvdG9jb2wgPSBzZXJ2ZXIuZ2V0UHJvdG9jb2woKTsKKwkJdGhpcy53ZWJhcHAgPSBzZXJ2ZXIuZ2V0V2ViYXBwKCk7CisJCXRoaXMudXNlciA9IHNlcnZlci5nZXRVc2VyKCk7CisJCXRoaXMucGFzcyA9IHNlcnZlci5nZXRQYXNzKCk7CisJfQorCQorCS8qKgorCSAqIE1haW4gbWV0aG9kIHRvIHBlcmZvcm0gdGVzdHMKKwkgKiAKKwkgKiBAcGFyYW0gc3RyaW5ncworCSAqLworCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZy4uLiBzdHJpbmdzKSB7CisJCVJlc3RDbGllbnQgckNsaWVudCA9IG5ldyBSZXN0Q2xpZW50KCIxMjcuMC4wLjEiLCA1MDgwLCAiaHR0cCIsCisJCQkJIm9wZW5tZWV0aW5ncyIsICJzd2FnbmVyIiwgInF3ZXF3ZSIpOworCQl0cnkgeworCQkJckNsaWVudC5sb2dpblVzZXIoQWN0aW9uLktJQ0tfVVNFUik7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCQllLnByaW50U3RhY2tUcmFjZSgpOworCQl9CisJfQorCisJLyoqCisJICogZm9yIHNpbXBsZSB0ZXN0aW5nIHRoaXMgbWV0aG9kIHByb3ZpZGVzIGEgdmVyc2lvbiBvZiB0aGUgY29uc3RydWN0b3IKKwkgKiB3aXRob3V0IG5lZWQgZm9yIGEgc2VydmVyIGVudGl0eS48YnIvPgorCSAqIDxici8+CisJICogVGhlcmUgaXMgbm8gc3ByaW5nIG9yIEpQQSBlbmhhbmNlZCBjbGFzcyBpbiB1c2UgaGVyZS4gVGhpcyBPYmplY3QgaXMKKwkgKiBzdG9yZWQgaW4gc2Vzc2lvbi9tZW1vcnkKKwkgKiAKKwkgKiBAcGFyYW0gaG9zdAorCSAqIEBwYXJhbSBwb3J0CisJICogQHBhcmFtIHByb3RvY29sCisJICogQHBhcmFtIHdlYmFwcAorCSAqIEBwYXJhbSB1c2VyCisJICogQHBhcmFtIHBhc3MKKwkgKi8KKwlwcml2YXRlIFJlc3RDbGllbnQoU3RyaW5nIGhvc3QsIGludCBwb3J0LCBTdHJpbmcgcHJvdG9jb2wsIFN0cmluZyB3ZWJhcHAsCisJCQlTdHJpbmcgdXNlciwgU3RyaW5nIHBhc3MpIHsKKwkJdGhpcy5ob3N0ID0gaG9zdDsKKwkJdGhpcy5wb3J0ID0gcG9ydDsKKwkJdGhpcy5wcm90b2NvbCA9IHByb3RvY29sOworCQl0aGlzLndlYmFwcCA9IHdlYmFwcDsKKwkJdGhpcy51c2VyID0gdXNlcjsKKwkJdGhpcy5wYXNzID0gcGFzczsKKwl9CisKKwkvKioKKwkgKiBjb21wYXJlIGlmIHRoZSBkZXRhaWxzIGhlcmUgYW5kIHRoZSBvbmUgc3RvcmVkIGFyZSBzdGlsbCB0aGUgc2FtZQorCSAqIAorCSAqIEBwYXJhbSBzZXJ2ZXIyCisJICogQHJldHVybgorCSAqLworCXB1YmxpYyBib29sZWFuIGhhc1NlcnZlckRldGFpbHNDaGFuZ2VkKFNlcnZlciBzZXJ2ZXIyKSB7CisKKwkJaWYgKCFob3N0LmVxdWFscyhzZXJ2ZXIyLmdldEFkZHJlc3MoKSkpIHsKKwkJCXJldHVybiB0cnVlOworCQl9CisJCWlmIChwb3J0ICE9IHNlcnZlcjIuZ2V0UG9ydCgpKSB7CisJCQlyZXR1cm4gdHJ1ZTsKKwkJfQorCQlpZiAoIXVzZXIuZXF1YWxzKHNlcnZlcjIuZ2V0VXNlcigpKSkgeworCQkJcmV0dXJuIHRydWU7CisJCX0KKwkJaWYgKCFwYXNzLmVxdWFscyhzZXJ2ZXIyLmdldFBhc3MoKSkpIHsKKwkJCXJldHVybiB0cnVlOworCQl9CisJCWlmICghd2ViYXBwLmVxdWFscyhzZXJ2ZXIyLmdldFdlYmFwcCgpKSkgeworCQkJcmV0dXJuIHRydWU7CisJCX0KKwkJaWYgKCFwcm90b2NvbC5lcXVhbHMoc2VydmVyMi5nZXRQcm90b2NvbCgpKSkgeworCQkJcmV0dXJuIHRydWU7CisJCX0KKworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJLyoqCisJICogTG9naW4gdGhlIHVzZXIgdmlhIFJFU1QKKwkgKiAKKwkgKiBAdGhyb3dzIEV4Y2VwdGlvbgorCSAqLworCXB1YmxpYyB2b2lkIGxvZ2luVXNlcihBY3Rpb24gYWN0aW9uKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworCQlTZXJ2aWNlQ2xpZW50IHNlbmRlciA9IGNyZWF0ZVNlcnZpY2VDbGllbnQoZ2V0VXNlclNlcnZpY2VFbmRQb2ludCgpKTsKKwkJCisJCU9NRWxlbWVudCBnZXRTZXNzaW9uUmVzdWx0ID0gc2VuZGVyCisJCQkJLnNlbmRSZWNlaXZlKGdldFBheWxvYWRNZXRob2RHZXRTZXNzaW9uKCkpOworCQlzZXNzaW9uSWQgPSBnZXRTZXNzaW9uSWRGcm9tUmVzdWx0KGdldFNlc3Npb25SZXN1bHQpOworCisJCU9NRWxlbWVudCBsb2dpblVzZXJSZXN1bHQgPSBzZW5kZXIKKwkJCQkuc2VuZFJlY2VpdmUoZ2V0UGF5bG9hZE1ldGhvZExvZ2luVXNlcigpKTsKKworCQlsb2dpblN1Y2Nlc3MgPSBsb2dpblN1Y2Nlc3NGcm9tUmVzdWx0KGxvZ2luVXNlclJlc3VsdCk7CisKKwkJc3dpdGNoIChhY3Rpb24pIHsKKwkJCWNhc2UgS0lDS19VU0VSOgorCQkJCWtpY2tVc2VySW50ZXJubCgpOworCQkJCWJyZWFrOworCQkJZGVmYXVsdDoKKwkJCQl0aHJvdyBuZXcgRXhjZXB0aW9uKCJObyBhY3Rpb24gZGVmaW5lZCIpOworCQl9CisKKwl9CisJCisJcHJpdmF0ZSBTZXJ2aWNlQ2xpZW50IGNyZWF0ZVNlcnZpY2VDbGllbnQoU3RyaW5nIHNlcnZpY2VFbmRQb2ludCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCVNlcnZpY2VDbGllbnQgc2VuZGVyID0gbmV3IFNlcnZpY2VDbGllbnQoKTsKKwkJc2VuZGVyLmVuZ2FnZU1vZHVsZShuZXcgUU5hbWUoQ29uc3RhbnRzLk1PRFVMRV9BRERSRVNTSU5HKQorCQkJCS5nZXRMb2NhbFBhcnQoKSk7CisJCU9wdGlvbnMgb3B0aW9ucyA9IG5ldyBPcHRpb25zKCk7CisJCW9wdGlvbnMuc2V0VG8obmV3IEVuZHBvaW50UmVmZXJlbmNlKHNlcnZpY2VFbmRQb2ludCkpOworCQlvcHRpb25zLnNldFByb3BlcnR5KENvbnN0YW50cy5Db25maWd1cmF0aW9uLkVOQUJMRV9SRVNULAorCQkJCUNvbnN0YW50cy5WQUxVRV9UUlVFKTsKKwkJaW50IHRpbWVPdXRJbk1pbGxpU2Vjb25kcyA9IDIwMDA7CisJCS8vIHNldHRpbmcgdGltZW91dCB0byAyIHNlY29uZCBzaG91bGQgYmUgc3VmZmljaWVudCwgaWYgdGhlIHNlcnZlciBpcworCQkvLyBub3QgYXZhaWxhYmxlIHdpdGhpbiB0aGUgMyBzZWNvbmQgaW50ZXJ2YWwgeW91IGdvdCBhIHByb2JsZW0gYW55d2F5CisJCW9wdGlvbnMuc2V0VGltZU91dEluTWlsbGlTZWNvbmRzKHRpbWVPdXRJbk1pbGxpU2Vjb25kcyk7CisJCW9wdGlvbnMuc2V0UHJvcGVydHkoSFRUUENvbnN0YW50cy5TT19USU1FT1VULCB0aW1lT3V0SW5NaWxsaVNlY29uZHMpOworCQlvcHRpb25zLnNldFByb3BlcnR5KEhUVFBDb25zdGFudHMuQ09OTkVDVElPTl9USU1FT1VULCB0aW1lT3V0SW5NaWxsaVNlY29uZHMpOworCQlzZW5kZXIuc2V0T3B0aW9ucyhvcHRpb25zKTsKKwkJCisJCXJldHVybiBzZW5kZXI7CisJfQorCQorCXByaXZhdGUgT01FbGVtZW50IGNyZWF0ZU9NRWxlbWVudChPTUZhY3RvcnkgZmFjLCBPTU5hbWVzcGFjZSBvbU5zLCBTdHJpbmcgbmFtZSwgU3RyaW5nIHZhbHVlKSB7CisJCU9NRWxlbWVudCBvbUVsZW1lbnQgPSBmYWMuY3JlYXRlT01FbGVtZW50KG5hbWUsIG9tTnMpOworCQlvbUVsZW1lbnQuYWRkQ2hpbGQoZmFjLmNyZWF0ZU9NVGV4dChvbUVsZW1lbnQsIHZhbHVlKSk7CisJCXJldHVybiBvbUVsZW1lbnQ7CisJfQorCisJLyoqCisJICogc2V0cyB0aGUgcHVibGljU0lEIGFuZCByZW1vdmVzIGEgdXNlciBmcm9tIGEgc2xhdmUgaG9zdCBieSBjYWxsaW5nIGEgUkVTVCBzZXJ2aWNlCisJICogCisJICogQHBhcmFtIHB1YmxpY1NJRAorCSAqLworCXB1YmxpYyB2b2lkIGtpY2tVc2VyKFN0cmluZyBwdWJsaWNTSUQpIHsKKwkJdGhpcy5wdWJsaWNTSUQgPSBwdWJsaWNTSUQ7CisJCWtpY2tVc2VySW50ZXJubCgpOworCX0KKwkKKwlwcml2YXRlIHZvaWQga2lja1VzZXJJbnRlcm5sKCkgeworCQl0cnkgeworCQkJCisJCQlpZiAoIWxvZ2luU3VjY2VzcykgeworCQkJCWxvZ2luVXNlcihBY3Rpb24uS0lDS19VU0VSKTsKKwkJCX0KKworCQkJU2VydmljZUNsaWVudCBzZW5kZXIgPSBjcmVhdGVTZXJ2aWNlQ2xpZW50KGdldFVzZXJTZXJ2aWNlRW5kUG9pbnQoKSk7CisJCQkKKwkJCU9NRWxlbWVudCBraWNrVXNlckJ5UHVibGljU0lEUmVzdWx0ID0gc2VuZGVyCisJCQkJCS5zZW5kUmVjZWl2ZShnZXRQYXlsb2FkTWV0aG9kS2lja1VzZXJCeVB1YmxpY1NJRCgpKTsKKwkJCUJvb2xlYW4gcmVzdWx0ID0ga2lja1VzZXJCeVB1YmxpY1NJREZyb21SZXN1bHQoa2lja1VzZXJCeVB1YmxpY1NJRFJlc3VsdCk7CisJCQkKKwkJCWlmICghcmVzdWx0KSB7CisJCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbigiQ291bGQgbm90IGRlbGV0ZSB1c2VyIGZyb20gc2xhdmUgaG9zdCIpOworCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2tpY2tVc2VyIGZhaWxlZF0iLCBlcnIpOworCQl9CisJfQorCisJcHJpdmF0ZSBCb29sZWFuIGtpY2tVc2VyQnlQdWJsaWNTSURGcm9tUmVzdWx0KE9NRWxlbWVudCByZXN1bHQpIHRocm93cyBFeGNlcHRpb24geworCQlRTmFtZSBraWNrVXNlclJlc3VsdCA9IG5ldyBRTmFtZShOQU1FU1BBQ0VfUFJFRklYLCAicmV0dXJuIik7CisKKwkJQFN1cHByZXNzV2FybmluZ3MoInVuY2hlY2tlZCIpCisJCUl0ZXJhdG9yPE9NRWxlbWVudD4gZWxlbWVudHMgPSByZXN1bHQuZ2V0Q2hpbGRyZW5XaXRoTmFtZShraWNrVXNlclJlc3VsdCk7CisJCWlmIChlbGVtZW50cy5oYXNOZXh0KCkpIHsKKwkJCU9NRWxlbWVudCByZXN1bHRFbGVtZW50ID0gZWxlbWVudHMubmV4dCgpOworCQkJaWYgKHJlc3VsdEVsZW1lbnQuZ2V0VGV4dCgpLmVxdWFscygidHJ1ZSIpKSB7CisJCQkJcmV0dXJuIHRydWU7CisJCQl9IGVsc2UgeworCQkJCXRocm93IG5ldyBFeGNlcHRpb24oIkNvdWxkIG5vdCBkZWxldGUgdXNlciBmcm9tIHNsYXZlIGhvc3QsIHJldHVybnM6ICIKKwkJCQkJCSsgcmVzdWx0RWxlbWVudC5nZXRUZXh0KCkpOworCQkJfQorCQl9IGVsc2UgeworCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbigiQ291bGQgbm90IHBhcnNlIGtpY2tVc2VyQnlQdWJsaWNTSUQgcmVzdWx0Iik7CisJCX0KKwl9CisKKwlwcml2YXRlIE9NRWxlbWVudCBnZXRQYXlsb2FkTWV0aG9kS2lja1VzZXJCeVB1YmxpY1NJRCgpIHRocm93cyBFeGNlcHRpb24geworCQlPTUZhY3RvcnkgZmFjID0gT01BYnN0cmFjdEZhY3RvcnkuZ2V0T01GYWN0b3J5KCk7CisJCU9NTmFtZXNwYWNlIG9tTnMgPSBmYWMuY3JlYXRlT01OYW1lc3BhY2UoTkFNRVNQQUNFX1BSRUZJWCwgInByZSIpOworCQlPTUVsZW1lbnQgbWV0aG9kID0gZmFjLmNyZWF0ZU9NRWxlbWVudCgia2lja1VzZXJCeVB1YmxpY1NJRCIsIG9tTnMpOworCQltZXRob2QuYWRkQ2hpbGQoY3JlYXRlT01FbGVtZW50KGZhYywgb21OcywgIlNJRCIsIHNlc3Npb25JZCkpOworCQltZXRob2QuYWRkQ2hpbGQoY3JlYXRlT01FbGVtZW50KGZhYywgb21OcywgInB1YmxpY1NJRCIsIHB1YmxpY1NJRCkpOworCQlyZXR1cm4gbWV0aG9kOworCX0KKworCS8qKgorCSAqIENyZWF0ZSB0aGUgUkVTVCByZXF1ZXN0IHRvIGdldCBhIG5ldyBzZXNzaW9uIElkCisJICogCisJICogQHJldHVybgorCSAqLworCXByaXZhdGUgT01FbGVtZW50IGdldFBheWxvYWRNZXRob2RHZXRTZXNzaW9uKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCU9NRmFjdG9yeSBmYWMgPSBPTUFic3RyYWN0RmFjdG9yeS5nZXRPTUZhY3RvcnkoKTsKKwkJT01OYW1lc3BhY2Ugb21OcyA9IGZhYy5jcmVhdGVPTU5hbWVzcGFjZShOQU1FU1BBQ0VfUFJFRklYLCAicHJlIik7CisJCU9NRWxlbWVudCBtZXRob2QgPSBmYWMuY3JlYXRlT01FbGVtZW50KCJnZXRTZXNzaW9uIiwgb21Ocyk7CisJCXJldHVybiBtZXRob2Q7CisJfQorCisJLyoqCisJICogUGFyc2UgdGhlIHNlc3Npb24gSWQgZnJvbSB0aGUgUkVTVCByZXF1ZXN0CisJICogCisJICogQHBhcmFtIHJlc3VsdAorCSAqIEByZXR1cm4KKwkgKiBAdGhyb3dzIEV4Y2VwdGlvbgorCSAqLworCXByaXZhdGUgU3RyaW5nIGdldFNlc3Npb25JZEZyb21SZXN1bHQoT01FbGVtZW50IHJlc3VsdCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCVFOYW1lIHNlc3Npb25FbGVtZW50cyA9IG5ldyBRTmFtZShudWxsLCAic2Vzc2lvbl9pZCIpOworCisJCUBTdXBwcmVzc1dhcm5pbmdzKCJ1bmNoZWNrZWQiKQorCQlJdGVyYXRvcjxPTUVsZW1lbnQ+IGVsZW1lbnRzID0gcmVzdWx0LmdldEZpcnN0RWxlbWVudCgpCisJCQkJLmdldENoaWxkcmVuV2l0aE5hbWUoc2Vzc2lvbkVsZW1lbnRzKTsKKwkJaWYgKGVsZW1lbnRzLmhhc05leHQoKSkgeworCQkJT01FbGVtZW50IHNlc3Npb25FbGVtZW50ID0gZWxlbWVudHMubmV4dCgpOworCQkJcmV0dXJuIHNlc3Npb25FbGVtZW50LmdldFRleHQoKTsKKwkJfSBlbHNlIHsKKwkJCXRocm93IG5ldyBFeGNlcHRpb24oIkNvdWxkIG5vdCBmaW5kIHNlc3Npb24gaWQiKTsKKwkJfQorCX0KKworCS8qKgorCSAqIGNyZWF0ZSB0aGUgcGF5bG9hZCB0byBsb2dpbiB0byBhbm90aGVyIE9wZW5NZWV0aW5ncyBpbnN0YW5jZSB2aWEgUkVTVAorCSAqIAorCSAqIEByZXR1cm4KKwkgKi8KKwlwcml2YXRlIE9NRWxlbWVudCBnZXRQYXlsb2FkTWV0aG9kTG9naW5Vc2VyKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCU9NRmFjdG9yeSBmYWMgPSBPTUFic3RyYWN0RmFjdG9yeS5nZXRPTUZhY3RvcnkoKTsKKwkJT01OYW1lc3BhY2Ugb21OcyA9IGZhYy5jcmVhdGVPTU5hbWVzcGFjZShOQU1FU1BBQ0VfUFJFRklYLCAicHJlIik7CisJCU9NRWxlbWVudCBtZXRob2QgPSBmYWMuY3JlYXRlT01FbGVtZW50KCJsb2dpblVzZXIiLCBvbU5zKTsKKwkJbWV0aG9kLmFkZENoaWxkKGNyZWF0ZU9NRWxlbWVudChmYWMsIG9tTnMsICJTSUQiLCBzZXNzaW9uSWQpKTsKKwkJbWV0aG9kLmFkZENoaWxkKGNyZWF0ZU9NRWxlbWVudChmYWMsIG9tTnMsICJ1c2VybmFtZSIsIHVzZXIpKTsKKwkJbWV0aG9kLmFkZENoaWxkKGNyZWF0ZU9NRWxlbWVudChmYWMsIG9tTnMsICJ1c2VycGFzcyIsIHBhc3MpKTsKKwkJcmV0dXJuIG1ldGhvZDsKKwl9CisKKwkvKioKKwkgKiBjaGVjayB0aGUgcmVzdWx0IG9mIHRoZSBSRVNUIHJlcXVlc3QgaWYgdGhlIGxvZ2luIHdhcyBzdWNjZXNzZnVsCisJICogCisJICogQHBhcmFtIHJlc3VsdAorCSAqIEByZXR1cm4KKwkgKiBAdGhyb3dzIEV4Y2VwdGlvbgorCSAqLworCXByaXZhdGUgYm9vbGVhbiBsb2dpblN1Y2Nlc3NGcm9tUmVzdWx0KE9NRWxlbWVudCByZXN1bHQpIHRocm93cyBFeGNlcHRpb24geworCisJCVFOYW1lIGxvZ2luUmVzdWx0ID0gbmV3IFFOYW1lKE5BTUVTUEFDRV9QUkVGSVgsICJyZXR1cm4iKTsKKworCQlAU3VwcHJlc3NXYXJuaW5ncygidW5jaGVja2VkIikKKwkJSXRlcmF0b3I8T01FbGVtZW50PiBlbGVtZW50cyA9IHJlc3VsdC5nZXRDaGlsZHJlbldpdGhOYW1lKGxvZ2luUmVzdWx0KTsKKwkJaWYgKGVsZW1lbnRzLmhhc05leHQoKSkgeworCQkJT01FbGVtZW50IHJlc3VsdEVsZW1lbnQgPSBlbGVtZW50cy5uZXh0KCk7CisJCQlpZiAocmVzdWx0RWxlbWVudC5nZXRUZXh0KCkuZXF1YWxzKCIxIikpIHsKKwkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0gZWxzZSB7CisJCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbigiQ291bGQgbm90IGxvZ2luIHVzZXIgYXQsIGVycm9yIGNvZGUgaXM6ICIKKwkJCQkJCSsgcmVzdWx0RWxlbWVudC5nZXRUZXh0KCkpOworCQkJfQorCQl9IGVsc2UgeworCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbigiQ291bGQgbm90IHBhcnNlIGxvZ2luIHJlc3VsdCIpOworCQl9CisKKwl9CisKKwkvKioKKwkgKiBHZXQgYW5kIGNhc3QgdGhlIGVsZW1lbnQncyB0ZXh0IChpZiB0aGVyZSBpcyBhbnkpCisJICogCisJICogQHBhcmFtIHJlc3VsdEVsZW1lbnQKKwkgKiBAcGFyYW0gZWxlbWVudE5hbWUKKwkgKiBAcGFyYW0gdHlwZU9iamVjdAorCSAqIEByZXR1cm4KKwkgKi8KKy8vCXByaXZhdGUgPFQ+IFQgZ2V0RWxlbWVudFRleHRCeU5hbWUoT01FbGVtZW50IHJlc3VsdEVsZW1lbnQsIFN0cmluZyBlbGVtZW50TmFtZSwgQ2xhc3M8VD4gdHlwZU9iamVjdCkgeworLy8JCXRyeSB7CisvLwkJCU9NRWxlbWVudCB1c2VySWRFbGVtZW50ID0gcmVzdWx0RWxlbWVudAorLy8JCQkJCS5nZXRGaXJzdENoaWxkV2l0aE5hbWUobmV3IFFOYW1lKG5hbWVTcGFjZUZvclNsYXZlRHRvLCBlbGVtZW50TmFtZSkpOworLy8JCQlpZiAodXNlcklkRWxlbWVudCAhPSBudWxsICYmIHVzZXJJZEVsZW1lbnQuZ2V0VGV4dCgpICE9IG51bGwKKy8vCQkJCQkmJiB1c2VySWRFbGVtZW50LmdldFRleHQoKS5sZW5ndGgoKSA+IDApIHsKKy8vCQkJCQorLy8JCQkJU3RyaW5nIGRlZmF1bHRWYWx1ZSA9IHVzZXJJZEVsZW1lbnQuZ2V0VGV4dCgpOworLy8JCQkJCisvLwkJCQkvLyBFaXRoZXIgdGhpcyBjYW4gYmUgZGlyZWN0bHkgYXNzaWduZWQgb3IgdHJ5IHRvIGZpbmQgYSBjb25zdHJ1Y3RvcgorLy8JCQkJLy8gdGhhdCBoYW5kbGVzIGl0CisvLwkJCQlpZiAodHlwZU9iamVjdC5pc0Fzc2lnbmFibGVGcm9tKGRlZmF1bHRWYWx1ZS5nZXRDbGFzcygpKSkgeworLy8JCQkJCXJldHVybiB0eXBlT2JqZWN0LmNhc3QoZGVmYXVsdFZhbHVlKTsKKy8vCQkJCX0KKy8vCQkJCUNvbnN0cnVjdG9yPFQ+IGMgPSB0eXBlT2JqZWN0LmdldENvbnN0cnVjdG9yKGRlZmF1bHRWYWx1ZQorLy8JCQkJCQkuZ2V0Q2xhc3MoKSk7CisvLwkJCQlyZXR1cm4gYy5uZXdJbnN0YW5jZShkZWZhdWx0VmFsdWUpOworLy8JCQkJCisvLwkJCX0KKy8vCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisvLwkJCS8vQ2F0Y2ggYW55IGNsYXNzIGNhc3QgZXhjZXB0aW9uLCBidXQgbG9nIG9ubHkKKy8vCQkJbG9nLmVycm9yKCJbZ2V0RWxlbWVudFRleHRCeU5hbWVdIiwgZXJyKTsKKy8vCQl9CisvLwkJcmV0dXJuIG51bGw7CisvLwl9CisJCisJCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9JRGF0YVByb3ZpZGVyRGFvLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9JRGF0YVByb3ZpZGVyRGFvLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjdhMWExMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL0lEYXRhUHJvdmlkZXJEYW8uamF2YQpAQCAtMCwwICsxLDkyIEBACisvKg0KKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgKiB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGE7DQorDQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KKw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5JRGF0YVByb3ZpZGVyRW50aXR5Ow0KKw0KKy8qKg0KKyAqIEdlbmVyYWwgaW50ZXJmYWNlIHRvIHBlcmZvcm0gQ1JVRCBvcGVyYXRpb25zIG9uIGVudGl0aWVzDQorICogDQorICogQGF1dGhvciBzb2xvbWF4LCBzd2FnbmVyDQorICogDQorICogQHBhcmFtIDxUPg0KKyAqLw0KK3B1YmxpYyBpbnRlcmZhY2UgSURhdGFQcm92aWRlckRhbzxUIGV4dGVuZHMgSURhdGFQcm92aWRlckVudGl0eT4gew0KKw0KKwkvKioNCisJICogR2V0IGFuIGluc3RhbmNlIG9mIGFuIHtAbGluayBUfQ0KKwkgKiANCisJICogQHBhcmFtIGlkIC0gaWQgb2YgaW5zdGFuY2UgdG8gcmV0cmlldmUNCisJICogQHJldHVybiBpbnN0YW5jZSB3aXRoIHRoZSBpZCBnaXZlZA0KKwkgKi8NCisJVCBnZXQobG9uZyBpZCk7DQorDQorCS8qKg0KKwkgKiBHZXQgYSBsaXN0IG9mIGluc3RhbmNlcyBvZiB7QGxpbmsgVH0NCisJICogDQorCSAqIEBwYXJhbSBzdGFydCAtIHRoZSBzdGFydCB0byByYW5nZSB0byByZXRyaWV2ZQ0KKwkgKiBAcGFyYW0gY291bnQgLSBtYXhpbXVtIGluc3RhbmNlIGNvdW50IHRvIHJldHJpZXZlDQorCSAqIEByZXR1cm4gbGlzdCBvZiBpbnN0YW5jZXMgaW4gdGhlIHJhbmdlIHNwZWNpZmllZA0KKwkgKi8NCisJTGlzdDxUPiBnZXQoaW50IHN0YXJ0LCBpbnQgY291bnQpOw0KKw0KKwkvKioNCisJICogR2V0IGEgbGlzdCBvZiBpbnN0YW5jZXMgb2Yge0BsaW5rIFR9DQorCSAqIA0KKwkgKiBAcGFyYW0gc2VhcmNoIC0gc3RyaW5nIHNlYXJjaCBjcml0ZXJpYSB0byBmaWx0ZXIgZW50aXRpZXMNCisJICogQHBhcmFtIHN0YXJ0IC0gdGhlIHN0YXJ0IHRvIHJhbmdlIHRvIHJldHJpZXZlDQorCSAqIEBwYXJhbSBjb3VudCAtIG1heGltdW0gaW5zdGFuY2UgY291bnQgdG8gcmV0cmlldmUNCisJICogQHBhcmFtIG9yZGVyIC0gY29sdW1uIGFuZCBzb3J0IG9yZGVyDQorCSAqIEByZXR1cm4gbGlzdCBvZiBpbnN0YW5jZXMgaW4gdGhlIHJhbmdlIHNwZWNpZmllZA0KKwkgKi8NCisJTGlzdDxUPiBnZXQoU3RyaW5nIHNlYXJjaCwgaW50IHN0YXJ0LCBpbnQgY291bnQsIFN0cmluZyBvcmRlcik7DQorDQorCS8qKg0KKwkgKiBDb3VudCB0aGUgbnVtYmVyIG9mIGluc3RhbmNlcyBvZiB7QGxpbmsgVH0NCisJICogDQorCSAqIEByZXR1cm4gY291bnQgb2YgaW5zdGFuY2VzDQorCSAqLw0KKwlsb25nIGNvdW50KCk7DQorDQorCS8qKg0KKwkgKiBDb3VudCB0aGUgbnVtYmVyIG9mIGluc3RhbmNlcyBvZiB7QGxpbmsgVH0NCisJICogDQorCSAqIEBwYXJhbSBzZWFyY2ggLSBzdHJpbmcgc2VhcmNoIGNyaXRlcmlhIHRvIGZpbHRlciBlbnRpdGllcw0KKwkgKiBAcmV0dXJuIGNvdW50IG9mIGluc3RhbmNlcyBzYXRpc2Z5aW5nIGdpdmVuIHNlYXJjaCBjcml0ZXJpYQ0KKwkgKi8NCisJbG9uZyBjb3VudChTdHJpbmcgc2VhcmNoKTsNCisNCisJLyoqDQorCSAqIFVwZGF0ZSBhbiBpbnN0YW5jZSBvZiB7QGxpbmsgVH0NCisJICogDQorCSAqIEBwYXJhbSBlbnRpdHkgLSBlbnRpdHkgdG8gYmUgdXBkYXRlZA0KKwkgKiBAcGFyYW0gdXNlcklkIC0gdXNlciBwZXJmb3JtZWQgdXBkYXRlDQorCSAqLw0KKwlUIHVwZGF0ZShUIGVudGl0eSwgTG9uZyB1c2VySWQpOw0KKw0KKwkvKioNCisJICogRGVsZXRlIGFuIGluc3RhbmNlIG9mIHtAbGluayBUfQ0KKwkgKiANCisJICogQHBhcmFtIGVudGl0eSAtIGVudGl0eSB0byBiZSBkZWxldGVkDQorCSAqIEBwYXJhbSB1c2VySWQgLSB1c2VyIHBlcmZvcm1lZCBkZWxldGUNCisJICovDQorCXZvaWQgZGVsZXRlKFQgZW50aXR5LCBMb25nIHVzZXJJZCk7DQorfQ0KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2Jhc2ljL0F1dGhMZXZlbFV0aWwuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2Jhc2ljL0F1dGhMZXZlbFV0aWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lY2MwMTU5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvYmFzaWMvQXV0aExldmVsVXRpbC5qYXZhCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYzsKKworcHVibGljIGNsYXNzIEF1dGhMZXZlbFV0aWwgeworCSAKKwlwdWJsaWMgYm9vbGVhbiBjaGVja1VzZXJMZXZlbChMb25nIHVzZXJfbGV2ZWwpIHsKKwkJcmV0dXJuIHVzZXJfbGV2ZWwgPT0gMSB8fCB1c2VyX2xldmVsID09IDIgfHwgdXNlcl9sZXZlbCA9PSAzOworCX0KKwkKKwlwdWJsaWMgYm9vbGVhbiBjaGVja01vZExldmVsKExvbmcgdXNlcl9sZXZlbCkgeworCQlyZXR1cm4gdXNlcl9sZXZlbCA9PSAyIHx8IHVzZXJfbGV2ZWwgPT0gMzsKKwl9CisJCisJcHVibGljIGJvb2xlYW4gY2hlY2tBZG1pbkxldmVsKExvbmcgdXNlcl9sZXZlbCkgeworCQlyZXR1cm4gdXNlcl9sZXZlbCA9PSAzOworCX0KKwkKKwlwdWJsaWMgYm9vbGVhbiBjaGVja1dlYlNlcnZpY2VMZXZlbChMb25nIHVzZXJfbGV2ZWwpIHsKKwkJcmV0dXJuIHVzZXJfbGV2ZWwgPT0gMyB8fCB1c2VyX2xldmVsID09IDQ7CisJfQorCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9iYXNpYy9GaWVsZExhbmd1YWdlRGFvLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9iYXNpYy9GaWVsZExhbmd1YWdlRGFvLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGExZDJjNwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2Jhc2ljL0ZpZWxkTGFuZ3VhZ2VEYW8uamF2YQpAQCAtMCwwICsxLDE1OCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljOworCitpbXBvcnQgamF2YS5pby5TZXJpYWxpemFibGU7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHlNYW5hZ2VyOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk5vUmVzdWx0RXhjZXB0aW9uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlBlcnNpc3RlbmNlQ29udGV4dDsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UeXBlZFF1ZXJ5OworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmxhbmcuRmllbGRMYW5ndWFnZTsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay50cmFuc2FjdGlvbi5hbm5vdGF0aW9uLlRyYW5zYWN0aW9uYWw7CisKKy8qKgorICogCisgKiBAYXV0aG9yIHNlYmFzdGlhbndhZ25lcgorICogCisgKi8KK0BUcmFuc2FjdGlvbmFsCitwdWJsaWMgY2xhc3MgRmllbGRMYW5ndWFnZURhbyBpbXBsZW1lbnRzIFNlcmlhbGl6YWJsZSB7CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAtMjcxNDQ5MDE2Nzk1NjIzMDMwNUw7CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKAorCQkJRmllbGRMYW5ndWFnZURhby5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCisJQFBlcnNpc3RlbmNlQ29udGV4dAorCXByaXZhdGUgRW50aXR5TWFuYWdlciBlbTsKKworCXB1YmxpYyBsb25nIGdldE5leHRBdmFpbGFibGVJZCgpIHsKKwkJVHlwZWRRdWVyeTxMb25nPiBxID0gZW0uY3JlYXRlUXVlcnkoIlNFTEVDVCBNQVgoZmwubGFuZ3VhZ2VfaWQpIGZyb20gRmllbGRMYW5ndWFnZSBmbCIsIExvbmcuY2xhc3MpOworCQlyZXR1cm4gcS5nZXRTaW5nbGVSZXN1bHQoKSArIDE7CisJfQorCQorCXB1YmxpYyBGaWVsZExhbmd1YWdlIGFkZExhbmd1YWdlKGludCBsYW5nSWQsIFN0cmluZyBsYW5nTmFtZSwgQm9vbGVhbiBsYW5nUnRsLCBTdHJpbmcgY29kZSkgeworCQl0cnkgeworCQkJRmllbGRMYW5ndWFnZSBmbCA9IG5ldyBGaWVsZExhbmd1YWdlKCk7CisJCQlmbC5zZXRMYW5ndWFnZV9pZCgobG9uZylsYW5nSWQpOworCQkJZmwuc2V0U3RhcnR0aW1lKG5ldyBEYXRlKCkpOworCQkJZmwuc2V0RGVsZXRlZChmYWxzZSk7CisJCQlmbC5zZXROYW1lKGxhbmdOYW1lKTsKKwkJCWZsLnNldFJ0bChsYW5nUnRsKTsKKwkJCWZsLnNldENvZGUoY29kZSk7CisKKwkJCWZsID0gZW0ubWVyZ2UoZmwpOworCisJCQkvL0VhZ2VybHkgRkVUQ0ggdmFsdWVzIGxpc3QKKwkJCVR5cGVkUXVlcnk8RmllbGRMYW5ndWFnZT4gcSA9IGVtLmNyZWF0ZVF1ZXJ5KCJzZWxlY3QgZmwgZnJvbSBGaWVsZExhbmd1YWdlIGZsIExFRlQgSk9JTiBGRVRDSCBmbC5sYW5ndWFnZVZhbHVlcyBXSEVSRSBmbC5sYW5ndWFnZV9pZCA9IDpsYW5nSWQiLCBGaWVsZExhbmd1YWdlLmNsYXNzKTsKKwkJCXEuc2V0UGFyYW1ldGVyKCJsYW5nSWQiLCBsYW5nSWQpOworCQkJTGlzdDxGaWVsZExhbmd1YWdlPiByZXN1bHRzID0gcS5nZXRSZXN1bHRMaXN0KCk7CisJCQkKKwkJCXJldHVybiByZXN1bHRzICE9IG51bGwgJiYgIXJlc3VsdHMuaXNFbXB0eSgpID8gcmVzdWx0cy5nZXQoMCkgOiBudWxsOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIlthZGRMYW5ndWFnZV06ICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIHZvaWQgZW1wdHlGaWVsZExhbmd1YWdlKCkgeworCQl0cnkgeworCQkJVHlwZWRRdWVyeTxGaWVsZExhbmd1YWdlPiBxID0gZW0uY3JlYXRlUXVlcnkoImRlbGV0ZSBmcm9tIEZpZWxkTGFuZ3VhZ2UiLCBGaWVsZExhbmd1YWdlLmNsYXNzKTsKKwkJCXEuZXhlY3V0ZVVwZGF0ZSgpOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIltlbXB0eUZpZWxkTGFuZ3VhZ2VdOiAiLCBleDIpOworCQl9CisJfQorCisJcHVibGljIExvbmcgdXBkYXRlRmllbGRMYW5ndWFnZShMb25nIGxhbmd1YWdlX2lkLCBTdHJpbmcgbGFuZ05hbWUsCisJCQlTdHJpbmcgY29kZSwgYm9vbGVhbiBkZWxldGVkKSB7CisJCXRyeSB7CisJCQlGaWVsZExhbmd1YWdlIGZsID0gdGhpcy5nZXRGaWVsZExhbmd1YWdlQnlJZChsYW5ndWFnZV9pZCk7CisJCQlmbC5zZXRVcGRhdGV0aW1lKG5ldyBEYXRlKCkpOworCQkJaWYgKGxhbmdOYW1lLmxlbmd0aCgpID4gMCkKKwkJCQlmbC5zZXROYW1lKGxhbmdOYW1lKTsKKwkJCWlmIChjb2RlLmxlbmd0aCgpID4gMCkKKwkJCQlmbC5zZXRDb2RlKGNvZGUpOworCQkJZmwuc2V0RGVsZXRlZChkZWxldGVkKTsKKwkJCXRoaXMudXBkYXRlTGFuZ3VhZ2UoZmwpOworCQkJcmV0dXJuIGxhbmd1YWdlX2lkOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIlt1cGRhdGVMYW5ndWFnZV06ICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG5ldyBMb25nKC0xKTsKKwl9CisKKwlwdWJsaWMgdm9pZCBkZWxldGUoRmllbGRMYW5ndWFnZSBmbCkgeworCQlmbC5zZXRVcGRhdGV0aW1lKG5ldyBEYXRlKCkpOworCQlmbC5zZXREZWxldGVkKHRydWUpOworCQllbS5tZXJnZShmbCk7CisJfQorCisJcHVibGljIHZvaWQgdXBkYXRlTGFuZ3VhZ2UoRmllbGRMYW5ndWFnZSBmbCkgeworCQlpZiAoZmwuZ2V0TGFuZ3VhZ2VfaWQoKSA9PSBudWxsKSB7CisJCQllbS5wZXJzaXN0KGZsKTsKKwkJfSBlbHNlIHsKKwkJCWlmICghZW0uY29udGFpbnMoZmwpKSB7CisJCQkJZW0ubWVyZ2UoZmwpOworCQkJfQorCQl9CisJfQorCisJcHVibGljIEZpZWxkTGFuZ3VhZ2UgZ2V0RmllbGRMYW5ndWFnZUJ5SWQoTG9uZyBsYW5ndWFnZV9pZCkgeworCQl0cnkgeworCQkJU3RyaW5nIGhxbCA9ICJzZWxlY3QgYyBmcm9tIEZpZWxkTGFuZ3VhZ2UgYXMgYyAiCisJCQkJCSsgIldIRVJFIGMuZGVsZXRlZCA8PiA6ZGVsZXRlZCAiCisJCQkJCSsgIkFORCBjLmxhbmd1YWdlX2lkID0gOmxhbmd1YWdlX2lkIjsKKwkJCVR5cGVkUXVlcnk8RmllbGRMYW5ndWFnZT4gcXVlcnkgPSBlbS5jcmVhdGVRdWVyeShocWwsIEZpZWxkTGFuZ3VhZ2UuY2xhc3MpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJkZWxldGVkIiwgdHJ1ZSk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImxhbmd1YWdlX2lkIiwgbGFuZ3VhZ2VfaWQpOworCQkJRmllbGRMYW5ndWFnZSBmbCA9IG51bGw7CisJCQl0cnkgeworCQkJCWZsID0gcXVlcnkuZ2V0U2luZ2xlUmVzdWx0KCk7CisJCQl9IGNhdGNoIChOb1Jlc3VsdEV4Y2VwdGlvbiBleCkgeworCQkJfQorCQkJcmV0dXJuIGZsOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRMYW5ndWFnZUJ5SWRdOiAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMaXN0PEZpZWxkTGFuZ3VhZ2U+IGdldExhbmd1YWdlcygpIHsKKwkJdHJ5IHsKKwkJCVN0cmluZyBocWwgPSAic2VsZWN0IGMgZnJvbSBGaWVsZExhbmd1YWdlIGFzIGMgIgorCQkJCQkrICJXSEVSRSBjLmRlbGV0ZWQgPD4gOmRlbGV0ZWQgIjsKKwkJCVR5cGVkUXVlcnk8RmllbGRMYW5ndWFnZT4gcXVlcnkgPSBlbS5jcmVhdGVRdWVyeShocWwsIEZpZWxkTGFuZ3VhZ2UuY2xhc3MpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJkZWxldGVkIiwgdHJ1ZSk7CisJCQlMaXN0PEZpZWxkTGFuZ3VhZ2U+IGxsID0gcXVlcnkuZ2V0UmVzdWx0TGlzdCgpOworCQkJcmV0dXJuIGxsOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRMYW5ndWFnZXNdOiAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvYmFzaWMvRmllbGRMYW5ndWFnZXNWYWx1ZXNEYW8uamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2Jhc2ljL0ZpZWxkTGFuZ3VhZ2VzVmFsdWVzRGFvLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGFiNzRhNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2Jhc2ljL0ZpZWxkTGFuZ3VhZ2VzVmFsdWVzRGFvLmphdmEKQEAgLTAsMCArMSwxNjIgQEAKKy8qDQorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAqIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYzsNCisNCitpbXBvcnQgamF2YS51dGlsLkRhdGU7DQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KKw0KK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHlNYW5hZ2VyOw0KK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Ob1Jlc3VsdEV4Y2VwdGlvbjsNCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuUGVyc2lzdGVuY2VDb250ZXh0Ow0KK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UeXBlZFF1ZXJ5Ow0KKw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLklEYXRhUHJvdmlkZXJEYW87DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuZGFvLkNvbmZpZ3VyYXRpb25EYW87DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmxhbmcuRmllbGRsYW5ndWFnZXN2YWx1ZXM7DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay50cmFuc2FjdGlvbi5hbm5vdGF0aW9uLlRyYW5zYWN0aW9uYWw7DQorDQorLyoqDQorICogDQorICogQ1JVRCBvcGVyYXRpb25zIGZvciB7QGxpbmsgRmllbGRsYW5ndWFnZXN2YWx1ZXN9DQorICogDQorICogQGF1dGhvciBzb2xvbWF4LCBzd2FnbmVyDQorICogDQorICovDQorQFRyYW5zYWN0aW9uYWwNCitwdWJsaWMgY2xhc3MgRmllbGRMYW5ndWFnZXNWYWx1ZXNEYW8gaW1wbGVtZW50cyBJRGF0YVByb3ZpZGVyRGFvPEZpZWxkbGFuZ3VhZ2VzdmFsdWVzPiB7DQorCUBQZXJzaXN0ZW5jZUNvbnRleHQNCisJcHJpdmF0ZSBFbnRpdHlNYW5hZ2VyIGVtOw0KKwlAQXV0b3dpcmVkDQorCXByaXZhdGUgQ29uZmlndXJhdGlvbkRhbyBjb25maWd1cmF0aW9uRGFvOw0KKw0KKwkvKg0KKwkgKiAobm9uLUphdmFkb2MpDQorCSAqIA0KKwkgKiBAc2VlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuT21EQU8jZ2V0KGludCwgaW50KQ0KKwkgKi8NCisJcHVibGljIExpc3Q8RmllbGRsYW5ndWFnZXN2YWx1ZXM+IGdldChpbnQgZmlyc3QsIGludCBjb3VudCkgew0KKwkJcmV0dXJuIGdldChjb25maWd1cmF0aW9uRGFvLmdldENvbmZWYWx1ZSgiZGVmYXVsdF9sYW5nX2lkIiwNCisJCQkJTG9uZy5jbGFzcywgIjEiKSwgZmlyc3QsIGNvdW50KTsNCisJfQ0KKw0KKwlwdWJsaWMgTGlzdDxGaWVsZGxhbmd1YWdlc3ZhbHVlcz4gZ2V0KFN0cmluZyBzZWFyY2gsIGludCBzdGFydCwgaW50IGNvdW50LCBTdHJpbmcgc29ydCkgew0KKwkJLy8gVE9ETyBBdXRvLWdlbmVyYXRlZCBtZXRob2Qgc3R1Yg0KKwkJcmV0dXJuIG51bGw7DQorCX0NCisJDQorCXB1YmxpYyBMaXN0PEZpZWxkbGFuZ3VhZ2VzdmFsdWVzPiBnZXQoTG9uZyBsYW5ndWFnZV9pZCwgU3RyaW5nIHNlYXJjaCwgaW50IHN0YXJ0LCBpbnQgY291bnQsIFN0cmluZyBzb3J0KSB7DQorCQkvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIG1ldGhvZCBzdHViDQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKwkNCisJLyoqDQorCSAqIEFkdmFuY2VkIHF1ZXJ5IHRvIHNldCB0aGUgbGFuZ3VhZ2UgaWQNCisJICogDQorCSAqIEBwYXJhbSBsYW5ndWFnZV9pZA0KKwkgKiBAcGFyYW0gZmlyc3QNCisJICogQHBhcmFtIGNvdW50DQorCSAqIEByZXR1cm4NCisJICovDQorCXB1YmxpYyBMaXN0PEZpZWxkbGFuZ3VhZ2VzdmFsdWVzPiBnZXQoTG9uZyBsYW5ndWFnZV9pZCwgaW50IGZpcnN0LCBpbnQgY291bnQpIHsNCisJCS8vIGFsbCBGaWVsZGxhbmd1YWdlc3ZhbHVlcyBpbiBjdXJyZW50IExhbmd1YWdlDQorCQlUeXBlZFF1ZXJ5PEZpZWxkbGFuZ3VhZ2VzdmFsdWVzPiBxID0gZW0uY3JlYXRlTmFtZWRRdWVyeSgNCisJCQkJImFsbEZpZWxkTGFuZ3VhZ2VWYWx1ZXMiLCBGaWVsZGxhbmd1YWdlc3ZhbHVlcy5jbGFzcyk7DQorCQlxLnNldFBhcmFtZXRlcigibGFuZ3VhZ2VfaWQiLCBsYW5ndWFnZV9pZCk7DQorCQlxLnNldEZpcnN0UmVzdWx0KGZpcnN0KTsNCisJCXEuc2V0TWF4UmVzdWx0cyhjb3VudCk7DQorCQlyZXR1cm4gcS5nZXRSZXN1bHRMaXN0KCk7DQorCX0NCisNCisJLyoNCisJICogKG5vbi1KYXZhZG9jKQ0KKwkgKiANCisJICogQHNlZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLk9tREFPI2dldChsb25nKQ0KKwkgKi8NCisJcHVibGljIEZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGdldChsb25nIGlkKSB7DQorCQlUeXBlZFF1ZXJ5PEZpZWxkbGFuZ3VhZ2VzdmFsdWVzPiBxID0gZW0uY3JlYXRlTmFtZWRRdWVyeSgNCisJCQkJImdldEZpZWxkTGFuZ3VhZ2VzVmFsdWVzQnlJZCIsIEZpZWxkbGFuZ3VhZ2VzdmFsdWVzLmNsYXNzKTsNCisJCXEuc2V0UGFyYW1ldGVyKCJpZCIsIGlkKTsNCisJCUZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGZsdiA9IG51bGw7DQorCQl0cnkgew0KKwkJCWZsdiA9IHEuZ2V0U2luZ2xlUmVzdWx0KCk7DQorCQl9IGNhdGNoIChOb1Jlc3VsdEV4Y2VwdGlvbiBlKSB7DQorDQorCQl9DQorCQlyZXR1cm4gZmx2Ow0KKwl9DQorDQorCXB1YmxpYyBGaWVsZGxhbmd1YWdlc3ZhbHVlcyBnZXQobG9uZyBmaWVsZFZhbHVlc0lkLCBsb25nIGxhbmdJZCkgew0KKwkJVHlwZWRRdWVyeTxGaWVsZGxhbmd1YWdlc3ZhbHVlcz4gcSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoDQorCQkJCSJnZXRGaWVsZExhbmd1YWdlc1ZhbHVlc0J5VmFsdWVBbmRMYW5nIiwgRmllbGRsYW5ndWFnZXN2YWx1ZXMuY2xhc3MpOw0KKwkJcS5zZXRQYXJhbWV0ZXIoImZpZWxkVmFsdWVzSWQiLCBmaWVsZFZhbHVlc0lkKTsNCisJCXEuc2V0UGFyYW1ldGVyKCJsYW5nIiwgbGFuZ0lkKTsNCisJCUZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGZsdiA9IG51bGw7DQorCQl0cnkgew0KKwkJCWZsdiA9IHEuZ2V0U2luZ2xlUmVzdWx0KCk7DQorCQl9IGNhdGNoIChOb1Jlc3VsdEV4Y2VwdGlvbiBlKSB7DQorCQl9DQorCQlyZXR1cm4gZmx2Ow0KKwl9DQorDQorCS8qDQorCSAqIChub24tSmF2YWRvYykNCisJICogDQorCSAqIEBzZWUgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5PbURBTyNjb3VudCgpDQorCSAqLw0KKwlwdWJsaWMgbG9uZyBjb3VudCgpIHsNCisJCVR5cGVkUXVlcnk8TG9uZz4gcSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoImdldEZpZWxkQ291bnQiLCBMb25nLmNsYXNzKTsNCisJCXJldHVybiBxLmdldFNpbmdsZVJlc3VsdCgpOw0KKwl9DQorDQorCXB1YmxpYyBsb25nIGNvdW50KFN0cmluZyBzZWFyY2gpIHsNCisJCS8vIFRPRE8gQXV0by1nZW5lcmF0ZWQgbWV0aG9kIHN0dWINCisJCXJldHVybiAwOw0KKwl9DQorCQ0KKwkvKg0KKwkgKiAobm9uLUphdmFkb2MpDQorCSAqIA0KKwkgKiBAc2VlDQorCSAqIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuT21EQU8jdXBkYXRlKG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlDQorCSAqIC5iZWFucy5PbUVudGl0eSwgbG9uZykNCisJICovDQorCXB1YmxpYyBGaWVsZGxhbmd1YWdlc3ZhbHVlcyB1cGRhdGUoRmllbGRsYW5ndWFnZXN2YWx1ZXMgZW50aXR5LCBMb25nIHVzZXJJZCkgew0KKwkJZW50aXR5LnNldFVwZGF0ZXRpbWUobmV3IERhdGUoKSk7DQorCQlpZiAoZW50aXR5LmdldEZpZWxkbGFuZ3VhZ2VzdmFsdWVzX2lkKCkgPT0gbnVsbCkgew0KKwkJCWVtLnBlcnNpc3QoZW50aXR5KTsNCisJCX0gZWxzZSB7DQorCQkJZW50aXR5ID0gZW0ubWVyZ2UoZW50aXR5KTsNCisJCX0NCisJCXJldHVybiBlbnRpdHk7DQorCX0NCisNCisJLyoNCisJICogKG5vbi1KYXZhZG9jKQ0KKwkgKiANCisJICogQHNlZQ0KKwkgKiBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLk9tREFPI2RlbGV0ZShvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZQ0KKwkgKiAuYmVhbnMuT21FbnRpdHksIGxvbmcpDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBkZWxldGUoRmllbGRsYW5ndWFnZXN2YWx1ZXMgZW50aXR5LCBMb25nIHVzZXJJZCkgew0KKwkJZW50aXR5LnNldERlbGV0ZWQodHJ1ZSk7DQorCQllbnRpdHkuc2V0VXBkYXRldGltZShuZXcgRGF0ZSgpKTsNCisJCWVudGl0eSA9IGVtLm1lcmdlKGVudGl0eSk7DQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvYmFzaWMvRmllbGRNYW5hZ2VyLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9iYXNpYy9GaWVsZE1hbmFnZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNmQwMzdiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvYmFzaWMvRmllbGRNYW5hZ2VyLmphdmEKQEAgLTAsMCArMSw2MzAgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYzsKKworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlua2VkTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5TWFuYWdlcjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Ob1Jlc3VsdEV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5QZXJzaXN0ZW5jZUNvbnRleHQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVHlwZWRRdWVyeTsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLmRhby5Db25maWd1cmF0aW9uRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmVhbnMuYmFzaWMuU2VhcmNoUmVzdWx0OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmxhbmcuRmllbGRMYW5ndWFnZTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5sYW5nLkZpZWxkbGFuZ3VhZ2VzdmFsdWVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmxhbmcuRmllbGR2YWx1ZXM7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLnRyYW5zYWN0aW9uLmFubm90YXRpb24uVHJhbnNhY3Rpb25hbDsKKworLyoqCisgKiAKKyAqIEBhdXRob3Igc2ViYXN0aWFud2FnbmVyCisgKiAKKyAqLworQFRyYW5zYWN0aW9uYWwKK3B1YmxpYyBjbGFzcyBGaWVsZE1hbmFnZXIgeworCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcigKKwkJCUZpZWxkTWFuYWdlci5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCisJQFBlcnNpc3RlbmNlQ29udGV4dAorCXByaXZhdGUgRW50aXR5TWFuYWdlciBlbTsKKworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEZpZWxkTGFuZ3VhZ2VEYW8gZmllbGRMYW5ndWFnZURhb0ltcGw7CisKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBGaWVsZExhbmd1YWdlc1ZhbHVlc0RhbyBmaWVsZExhbmd1YWdlc1ZhbHVlc0RBTzsKKworCUBBdXRvd2lyZWQKKwlwcml2YXRlIENvbmZpZ3VyYXRpb25EYW8gY29uZmlndXJhdGlvbkRhb0ltcGw7CisJCisJLy8gUmVmbGVjdCB0aGUgUmV2ZXJzZSBPcmRlciEhCisJcHVibGljIEZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGdldEZpZWxkQnlJZEFuZExhbmd1YWdlQnlOYXZpKAorCQkJTG9uZyBmaWVsZHZhbHVlc19pZCwgTG9uZyBsYW5ndWFnZV9pZCkgeworCQl0cnkgeworCQkJaWYgKGZpZWxkdmFsdWVzX2lkID09IG51bGwpIHsKKwkJCQlyZXR1cm4gbnVsbDsKKwkJCX0KKworCQkJVHlwZWRRdWVyeTxGaWVsZGxhbmd1YWdlc3ZhbHVlcz4gcXVlcnkgPSBlbQorCQkJCQkuY3JlYXRlUXVlcnkoInNlbGVjdCBmIGZyb20gRmllbGRsYW5ndWFnZXN2YWx1ZXMgZiBXSEVSRSBmLmxhbmd1YWdlX2lkID0gOmxhbmd1YWdlX2lkIEFORCBmLmZpZWxkdmFsdWVzX2lkID0gOmZpZWxkdmFsdWVzX2lkIiwgRmllbGRsYW5ndWFnZXN2YWx1ZXMuY2xhc3MpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJmaWVsZHZhbHVlc19pZCIsIGZpZWxkdmFsdWVzX2lkKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigibGFuZ3VhZ2VfaWQiLCBsYW5ndWFnZV9pZCk7CisJCQlGaWVsZGxhbmd1YWdlc3ZhbHVlcyBmbHYgPSBudWxsOworCQkJdHJ5IHsKKwkJCQlmbHYgPSBwZXJmb3JtUmVwbGFjZShxdWVyeS5nZXRTaW5nbGVSZXN1bHQoKSk7CisJCQl9IGNhdGNoIChOb1Jlc3VsdEV4Y2VwdGlvbiBleCkgeworCQkJfQorCisJCQlGaWVsZExhbmd1YWdlIGZpZWxkTGFuZ3VhZ2UgPSBmaWVsZExhbmd1YWdlRGFvSW1wbAorCQkJCQkuZ2V0RmllbGRMYW5ndWFnZUJ5SWQobGFuZ3VhZ2VfaWQpOworCisJCQlsb2cuZGVidWcoIkdldHRpbmcgRmllbGRCeUlkIGZvciBMYW5ndWFnZSAiCisJCQkJCSsgZmllbGRMYW5ndWFnZS5nZXROYW1lKCkpOworCisJCQkvLyBDaGVjayBmb3IgUmlnaHQgVG8gTGVmdCBMYW5ndWFnZXMKKwkJCWlmIChmaWVsZExhbmd1YWdlLmdldFJ0bCgpKSB7CisKKwkJCQlsb2cuZGVidWcoIkxhbmd1YWdlIHJlcXVpZXJlcyBSVEwiKTsKKworCQkJCUZpZWxkbGFuZ3VhZ2VzdmFsdWVzIHJlbW90ZSA9IGZsdjsKKwkJCQlGaWVsZGxhbmd1YWdlc3ZhbHVlcyB0b0FkZCA9IG5ldyBGaWVsZGxhbmd1YWdlc3ZhbHVlcygpOworCQkJCXRvQWRkLnNldEZpZWxkbGFuZ3VhZ2VzdmFsdWVzX2lkKHJlbW90ZQorCQkJCQkJLmdldEZpZWxkbGFuZ3VhZ2VzdmFsdWVzX2lkKCkpOworCQkJCXRvQWRkLnNldEZpZWxkdmFsdWVzX2lkKHJlbW90ZS5nZXRGaWVsZHZhbHVlc19pZCgpKTsKKwkJCQl0b0FkZC5zZXRMYW5ndWFnZV9pZChyZW1vdGUuZ2V0TGFuZ3VhZ2VfaWQoKSk7CisKKwkJCQlTdHJpbmdbXSBzcGxpdHRlZCA9IHJlbW90ZS5nZXRWYWx1ZSgpLnNwbGl0KCIgIik7CisJCQkJU3RyaW5nIHJldmVyc2VPcmRlciA9ICIiOworCQkJCWZvciAoaW50IGkgPSBzcGxpdHRlZC5sZW5ndGggLSAxOyBpID49IDA7IGktLSkgeworCQkJCQlyZXZlcnNlT3JkZXIgKz0gc3BsaXR0ZWRbaV07CisJCQkJCWlmIChzcGxpdHRlZC5sZW5ndGggIT0gMSkgeworCQkJCQkJcmV2ZXJzZU9yZGVyICs9ICIgIjsKKwkJCQkJfQorCQkJCX0KKwkJCQl0b0FkZC5zZXRWYWx1ZShyZXZlcnNlT3JkZXIpOworCisJCQkJcmV0dXJuIHRvQWRkOworCQkJfSBlbHNlIHsKKwkJCQlsb2cuZGVidWcoIkxhbmd1YWdlIGRvZXNudCByZXF1aWVyZSBSVEwiKTsKKworCQkJCXJldHVybiBmbHY7CisJCQl9CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZ2V0RmllbGRCeUlkQW5kTGFuZ3VhZ2VdOiAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0U3RyaW5nKExvbmcgZmllbGR2YWx1ZXNfaWQsIExvbmcgbGFuZ3VhZ2VfaWQpIHsKKwkJU3RyaW5nIHJlc3VsdCA9IG51bGw7CisJCUZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGZsdiA9IGdldEZpZWxkQnlJZEFuZExhbmd1YWdlKGZpZWxkdmFsdWVzX2lkLCBsYW5ndWFnZV9pZCk7CisJCWlmIChmbHYgIT0gbnVsbCkgeworCQkJcmVzdWx0ID0gcGVyZm9ybVJlcGxhY2UoZmx2KS5nZXRWYWx1ZSgpOworCQl9CisJCXJldHVybiByZXN1bHQ7CisJfQorCQorCXB1YmxpYyBGaWVsZGxhbmd1YWdlc3ZhbHVlcyBnZXRGaWVsZEJ5SWRBbmRMYW5ndWFnZShMb25nIGZpZWxkdmFsdWVzX2lkLAorCQkJTG9uZyBsYW5ndWFnZV9pZCkgeworCQl0cnkgeworCisJCQlTdHJpbmcgaHFsID0gInNlbGVjdCBmIGZyb20gRmllbGRsYW5ndWFnZXN2YWx1ZXMgYXMgZiAiCisJCQkJCSsgIldIRVJFIGYubGFuZ3VhZ2VfaWQgPSA6bGFuZ3VhZ2VfaWQgIgorCQkJCQkrICJBTkQgZi5maWVsZHZhbHVlc19pZCA9IDpmaWVsZHZhbHVlc19pZCI7CisKKwkJCUZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGZsdiA9IG51bGw7CisKKwkJCVR5cGVkUXVlcnk8RmllbGRsYW5ndWFnZXN2YWx1ZXM+IHF1ZXJ5ID0gZW0uY3JlYXRlUXVlcnkoaHFsLCBGaWVsZGxhbmd1YWdlc3ZhbHVlcy5jbGFzcyk7CisKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiZmllbGR2YWx1ZXNfaWQiLCBmaWVsZHZhbHVlc19pZCk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImxhbmd1YWdlX2lkIiwgbGFuZ3VhZ2VfaWQpOworCQkJTGlzdDxGaWVsZGxhbmd1YWdlc3ZhbHVlcz4gZkxpc3QgPSBxdWVyeS5nZXRSZXN1bHRMaXN0KCk7CisKKwkJCWlmIChmTGlzdC5zaXplKCkgPiAwKSB7CisJCQkJZmx2ID0gZkxpc3QuZ2V0KDApOyAvL3JlcGxhY2Ugc2hvdWxkIG5vdCBiZSBwZXJmb3JtZWQgaGVyZSB0byBlbmFibGUgc3RyaW5nIGVkaXRpbmcgdmlhIGFkbWluCisJCQl9CisKKwkJCXJldHVybiBmbHY7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldEZpZWxkQnlJZEFuZExhbmd1YWdlXTogIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgTG9uZyBkZWxldGVGaWVsZGxhbmd1YWdlc3ZhbHVlc0J5SWQoTG9uZyBmaWVsZGxhbmd1YWdlc3ZhbHVlc19pZCkgeworCQl0cnkgeworCQkJRmllbGRsYW5ndWFnZXN2YWx1ZXMgZmx2ID0gdGhpcworCQkJCQkuZ2V0RmllbGRsYW5ndWFnZXN2YWx1ZXNCeUlkKGZpZWxkbGFuZ3VhZ2VzdmFsdWVzX2lkKTsKKwkJCWlmIChmbHYgPT0gbnVsbCkgeworCQkJCXJldHVybiBuZXcgTG9uZygtMjcpOworCQkJfQorCisJCQlmbHYgPSBlbS5maW5kKEZpZWxkbGFuZ3VhZ2VzdmFsdWVzLmNsYXNzLCBmaWVsZGxhbmd1YWdlc3ZhbHVlc19pZCk7CisKKwkJCXJldHVybiBuZXcgTG9uZygtMjgpOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRGaWVsZEJ5SWRBbmRMYW5ndWFnZV06ICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG5ldyBMb25nKC0xKTsKKwl9CisKKwlwdWJsaWMgTGlzdDxGaWVsZGxhbmd1YWdlc3ZhbHVlcz4gZ2V0QWxsRmllbGRzQnlMYW5ndWFnZShMb25nIGxhbmd1YWdlX2lkKSB7CisJCXRyeSB7CisKKwkJCVR5cGVkUXVlcnk8RmllbGRsYW5ndWFnZXN2YWx1ZXM+IHF1ZXJ5ID0gZW0KKwkJCQkJLmNyZWF0ZVF1ZXJ5KCJzZWxlY3QgZiBmcm9tIEZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGYgV0hFUkUgZi5sYW5ndWFnZV9pZCA9IDpsYW5ndWFnZV9pZCAiLCBGaWVsZGxhbmd1YWdlc3ZhbHVlcy5jbGFzcyk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImxhbmd1YWdlX2lkIiwgbGFuZ3VhZ2VfaWQpOworCQkJTGlzdDxGaWVsZGxhbmd1YWdlc3ZhbHVlcz4gcmV0dXJuTGlzdCA9IHBlcmZvcm1SZXBsYWNlKHF1ZXJ5LmdldFJlc3VsdExpc3QoKSk7CisKKwkJCXJldHVybiByZXR1cm5MaXN0OworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRDb25mS2V5XTogIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgTGlzdDxNYXA8U3RyaW5nLCBPYmplY3Q+PiBnZXRMYWJlbHNCeUxhbmd1YWdlKExvbmcgbGFuZ3VhZ2VfaWQsCisJCQlpbnQgc3RhcnQsIGludCBtYXgpIHsKKwkJdHJ5IHsKKworCQkJU3RyaW5nIHNxbCA9ICJzZWxlY3QgZi5maWVsZHZhbHVlcy5maWVsZHZhbHVlc19pZCwgZi52YWx1ZSBmcm9tIEZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGFzIGYgIgorCQkJCQkrICJXSEVSRSBmLmxhbmd1YWdlX2lkID0gOmxhbmd1YWdlX2lkICI7CisKKwkJCVR5cGVkUXVlcnk8T2JqZWN0PiBxdWVyeSA9IGVtLmNyZWF0ZVF1ZXJ5KHNxbCwgT2JqZWN0LmNsYXNzKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigibGFuZ3VhZ2VfaWQiLCBsYW5ndWFnZV9pZCk7CisJCQlxdWVyeS5zZXRGaXJzdFJlc3VsdChzdGFydCk7CisJCQlxdWVyeS5zZXRNYXhSZXN1bHRzKG1heCk7CisKKwkJCVN0cmluZyBhcHBOYW1lID0gY29uZmlndXJhdGlvbkRhb0ltcGwuZ2V0QXBwTmFtZSgpOworCQkJTGlzdDxNYXA8U3RyaW5nLCBPYmplY3Q+PiByZXR1cm5MaXN0ID0gbmV3IExpbmtlZExpc3Q8TWFwPFN0cmluZywgT2JqZWN0Pj4oKTsKKwkJCWZvciAoT2JqZWN0IGZsIDogcXVlcnkuZ2V0UmVzdWx0TGlzdCgpKSB7CisJCQkJTWFwPFN0cmluZywgT2JqZWN0PiBtYXAgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIE9iamVjdD4oKTsKKwkJCQlPYmplY3RbXSByb3cgPSAoT2JqZWN0W10pZmw7CisJCQkJbWFwLnB1dCgiaWQiLCByb3dbMF0pOworCQkJCW1hcC5wdXQoInZhbHVlIiwgcGVyZm9ybVJlcGxhY2UoKFN0cmluZylyb3dbMV0sIGFwcE5hbWUpKTsKKwkJCQlyZXR1cm5MaXN0LmFkZChtYXApOworCQkJfQorCQkJRmllbGRMYW5ndWFnZSBmaWVsZExhbmd1YWdlID0gZmllbGRMYW5ndWFnZURhb0ltcGwKKwkJCQkJLmdldEZpZWxkTGFuZ3VhZ2VCeUlkKGxhbmd1YWdlX2lkKTsKKworCQkJbG9nLmRlYnVnKCJHZXR0aW5nIExhYmVscyBmb3IgTGFuZ3VhZ2UgIiArIGZpZWxkTGFuZ3VhZ2UuZ2V0TmFtZSgpKTsKKworCQkJLy8gQ2hlY2sgZm9yIFJpZ2h0IFRvIExlZnQgTGFuZ3VhZ2VzCisJCQlpZiAoZmllbGRMYW5ndWFnZS5nZXRSdGwoKSkgeworCQkJCWxvZy5kZWJ1ZygiTGFuZ3VhZ2UgcmVxdWllcmVzIFJUTCEiKTsKKworCQkJCUxpc3Q8TWFwPFN0cmluZywgT2JqZWN0Pj4gcmV0dXJuUnRsTGlzdCA9IG5ldyBMaW5rZWRMaXN0PE1hcDxTdHJpbmcsIE9iamVjdD4+KCk7CisKKwkJCQlmb3IgKEl0ZXJhdG9yPE1hcDxTdHJpbmcsIE9iamVjdD4+IGl0ZXIgPSByZXR1cm5MaXN0Lml0ZXJhdG9yKCk7IGl0ZXIKKwkJCQkJCS5oYXNOZXh0KCk7KSB7CisJCQkJCU1hcDxTdHJpbmcsIE9iamVjdD4gcmVtb3RlID0gaXRlci5uZXh0KCk7CisKKwkJCQkJTWFwPFN0cmluZywgT2JqZWN0PiB0b0FkZCA9IG5ldyBIYXNoTWFwPFN0cmluZywgT2JqZWN0PigpOworCQkJCQl0b0FkZC5wdXQoImlkIiwgcmVtb3RlLmdldCgiaWQiKSk7CisKKwkJCQkJU3RyaW5nIHZhbHVlID0gcmVtb3RlLmdldCgidmFsdWUiKS50b1N0cmluZygpOworCisJCQkJCVN0cmluZ1tdIHNwbGl0dGVkID0gdmFsdWUuc3BsaXQoIiAiKTsKKwkJCQkJU3RyaW5nIHJldmVyc2VPcmRlciA9ICIiOworCQkJCQlmb3IgKGludCBpID0gc3BsaXR0ZWQubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsKKwkJCQkJCXJldmVyc2VPcmRlciArPSBzcGxpdHRlZFtpXTsKKwkJCQkJCWlmIChzcGxpdHRlZC5sZW5ndGggIT0gMSkgeworCQkJCQkJCXJldmVyc2VPcmRlciArPSAiICI7CisJCQkJCQl9CisJCQkJCX0KKwkJCQkJbG9nLmRlYnVnKCJyZXZlcnNlT3JkZXIgIiArIHJldmVyc2VPcmRlcik7CisJCQkJCXRvQWRkLnB1dCgidmFsdWUiLCB2YWx1ZSk7CisKKwkJCQkJcmV0dXJuUnRsTGlzdC5hZGQodG9BZGQpOworCQkJCX0KKworCQkJCXJldHVybiByZXR1cm5SdGxMaXN0OworCQkJfSBlbHNlIHsKKwkJCQlsb2cuZGVidWcoIkxhbmd1YWdlIGRvZXNudCByZXF1aWVyZSBSVEwhIik7CisKKwkJCQlyZXR1cm4gcmV0dXJuTGlzdDsKKworCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldExhYmVsc0J5TGFuZ3VhZ2VdOiAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMaXN0PEZpZWxkbGFuZ3VhZ2VzdmFsdWVzPiBnZXRBbGxGaWVsZHNCeUxhbmd1YWdlKExvbmcgbGFuZ3VhZ2VfaWQsCisJCQlpbnQgc3RhcnQsIGludCBtYXgpIHsKKwkJdHJ5IHsKKworCQkJU3RyaW5nIHNxbCA9ICJzZWxlY3QgZiBmcm9tIEZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGYgV0hFUkUgZi5sYW5ndWFnZV9pZCA9IDpsYW5ndWFnZV9pZCAiCisJCQkJCSsgIkFORCBmLmZpZWxkdmFsdWVzX2lkID49IDpzdGFydCBBTkQgZi5maWVsZHZhbHVlc19pZCA8ICA6bWF4IjsKKworCQkJVHlwZWRRdWVyeTxGaWVsZGxhbmd1YWdlc3ZhbHVlcz4gcXVlcnkgPSBlbS5jcmVhdGVRdWVyeShzcWwsIEZpZWxkbGFuZ3VhZ2VzdmFsdWVzLmNsYXNzKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigibGFuZ3VhZ2VfaWQiLCBsYW5ndWFnZV9pZCk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInN0YXJ0Iiwgc3RhcnQpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJtYXgiLCBzdGFydCArIG1heCk7CisKKwkJCUxpc3Q8RmllbGRsYW5ndWFnZXN2YWx1ZXM+IHJldHVybkxpc3QgPSBwZXJmb3JtUmVwbGFjZShxdWVyeS5nZXRSZXN1bHRMaXN0KCkpOworCQkJRmllbGRMYW5ndWFnZSBmaWVsZExhbmd1YWdlID0gZmllbGRMYW5ndWFnZURhb0ltcGwKKwkJCQkJLmdldEZpZWxkTGFuZ3VhZ2VCeUlkKGxhbmd1YWdlX2lkKTsKKworCQkJbG9nLmRlYnVnKCJHRXR0aW5nIGFsbCBmaWVsZHMgYnkgbGFuZ3VhZ2UgOiAiCisJCQkJCSsgZmllbGRMYW5ndWFnZS5nZXROYW1lKCkpOworCisJCQkvLyBDaGVjayBmb3IgUmlnaHQgVG8gTGVmdCBMYW5ndWFnZXMKKwkJCWlmIChmaWVsZExhbmd1YWdlLmdldFJ0bCgpKSB7CisJCQkJbG9nLmRlYnVnKCJsYW5ndWFnZSA6ICIgKyBmaWVsZExhbmd1YWdlLmdldE5hbWUoKQorCQkJCQkJKyAiIHJlcXVpZXJlcyBSVEwiKTsKKworCQkJCUxpc3Q8RmllbGRsYW5ndWFnZXN2YWx1ZXM+IHJldHVyblJ0bExpc3QgPSBuZXcgTGlua2VkTGlzdDxGaWVsZGxhbmd1YWdlc3ZhbHVlcz4oKTsKKworCQkJCWZvciAoSXRlcmF0b3I8RmllbGRsYW5ndWFnZXN2YWx1ZXM+IGl0ZXIgPSByZXR1cm5MaXN0CisJCQkJCQkuaXRlcmF0b3IoKTsgaXRlci5oYXNOZXh0KCk7KSB7CisJCQkJCUZpZWxkbGFuZ3VhZ2VzdmFsdWVzIHJlbW90ZSA9IGl0ZXIubmV4dCgpOworCQkJCQlGaWVsZGxhbmd1YWdlc3ZhbHVlcyB0b0FkZCA9IG5ldyBGaWVsZGxhbmd1YWdlc3ZhbHVlcygpOworCQkJCQl0b0FkZC5zZXRGaWVsZGxhbmd1YWdlc3ZhbHVlc19pZChyZW1vdGUKKwkJCQkJCQkuZ2V0RmllbGRsYW5ndWFnZXN2YWx1ZXNfaWQoKSk7CisJCQkJCXRvQWRkLnNldEZpZWxkdmFsdWVzX2lkKHJlbW90ZS5nZXRGaWVsZHZhbHVlc19pZCgpKTsKKwkJCQkJdG9BZGQuc2V0TGFuZ3VhZ2VfaWQocmVtb3RlLmdldExhbmd1YWdlX2lkKCkpOworCisJCQkJCVN0cmluZ1tdIHNwbGl0dGVkID0gcmVtb3RlLmdldFZhbHVlKCkuc3BsaXQoIiAiKTsKKwkJCQkJU3RyaW5nIHJldmVyc2VPcmRlciA9ICIiOworCQkJCQlmb3IgKGludCBpID0gc3BsaXR0ZWQubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIHsKKwkJCQkJCXJldmVyc2VPcmRlciArPSBzcGxpdHRlZFtpXTsKKwkJCQkJCWlmIChzcGxpdHRlZC5sZW5ndGggIT0gMSkgeworCQkJCQkJCXJldmVyc2VPcmRlciArPSAiICI7CisJCQkJCQl9CisJCQkJCX0KKwkJCQkJdG9BZGQuc2V0VmFsdWUocmV2ZXJzZU9yZGVyKTsKKworCQkJCQlyZXR1cm5SdGxMaXN0LmFkZCh0b0FkZCk7CisJCQkJfQorCisJCQkJcmV0dXJuIHJldHVyblJ0bExpc3Q7CisJCQl9IGVsc2UgeworCQkJCWxvZy5kZWJ1ZygibGFuZ3VhZ2UgOiAiICsgZmllbGRMYW5ndWFnZS5nZXROYW1lKCkKKwkJCQkJCSsgIiByZXF1aWVyZXMgTk8gUlRMIik7CisKKwkJCQlyZXR1cm4gcmV0dXJuTGlzdDsKKworCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldENvbmZLZXldOiAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMb25nIGFkZEZpZWxkVmFsdWVCeUZpZWxkQW5kTGFuZ3VhZ2UoRmllbGR2YWx1ZXMgZnYsCisJCQlMb25nIGxhbmd1YWdlX2lkLCBTdHJpbmcgZmllbGR2YWx1ZSkgeworCQl0cnkgeworCisJCQlGaWVsZGxhbmd1YWdlc3ZhbHVlcyBmbHYgPSBuZXcgRmllbGRsYW5ndWFnZXN2YWx1ZXMoKTsKKwkJCWZsdi5zZXRTdGFydHRpbWUobmV3IERhdGUoKSk7CisJCQlmbHYuc2V0VmFsdWUoZmllbGR2YWx1ZSk7CisJCQlmbHYuc2V0TGFuZ3VhZ2VfaWQobGFuZ3VhZ2VfaWQpOworCQkJZmx2LnNldEZpZWxkdmFsdWVzKGZ2KTsKKwkJCWZsdi5zZXREZWxldGVkKGZhbHNlKTsKKworCQkJZmx2ID0gZW0ubWVyZ2UoZmx2KTsKKwkJCUxvbmcgZmllbGRsYW5ndWFnZXN2YWx1ZXNJZCA9IGZsdi5nZXRGaWVsZGxhbmd1YWdlc3ZhbHVlc19pZCgpOworCisJCQlyZXR1cm4gZmllbGRsYW5ndWFnZXN2YWx1ZXNJZDsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZ2V0Q29uZktleV06ICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIHZvaWQgdXBkYXRlRmllbGRWYWx1ZUJ5RmllbGRBbmRMYW5ndWFnZShGaWVsZGxhbmd1YWdlc3ZhbHVlcyBmbHYpIHsKKwkJdHJ5IHsKKworCQkJaWYgKGZsdi5nZXRGaWVsZGxhbmd1YWdlc3ZhbHVlc19pZCgpID09IG51bGwpIHsKKwkJCQllbS5wZXJzaXN0KGZsdik7CisJCQl9IGVsc2UgeworCQkJCWlmICghZW0uY29udGFpbnMoZmx2KSkgeworCQkJCQllbS5tZXJnZShmbHYpOworCQkJCX0KKwkJCX0KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIlt1cGRhdGVGaWVsZFZhbHVlQnlGaWVsZEFuZExhbmd1YWdlXTogIiwgZXgyKTsKKwkJfQorCisJfQorCisJcHVibGljIEZpZWxkdmFsdWVzIGFkZEZpZWxkQnlJZChTdHJpbmcgZmllbGROYW1lLCBMb25nIGZpZWxkdmFsdWVzX2lkKSB7CisJCXRyeSB7CisJCQlGaWVsZHZhbHVlcyBmbCA9IG5ldyBGaWVsZHZhbHVlcygpOworCQkJZmwuc2V0RmllbGR2YWx1ZXNfaWQoZmllbGR2YWx1ZXNfaWQpOworCQkJZmwuc2V0U3RhcnR0aW1lKG5ldyBEYXRlKCkpOworCQkJZmwuc2V0TmFtZShmaWVsZE5hbWUpOworCQkJZmwuc2V0RGVsZXRlZChmYWxzZSk7CisKKwkJCXJldHVybiBlbS5tZXJnZShmbCk7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldENvbmZLZXldOiAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMaXN0PEZpZWxkbGFuZ3VhZ2VzdmFsdWVzPiBnZXRNaXhlZEZpZWxkVmFsdWVzTGlzdChMb25nIGxhbmd1YWdlX2lkKSB7CisJCS8vIGFsbCBGaWVsZGxhbmd1YWdlc3ZhbHVlcyBpbiBjdXJyZW50IExhbmd1YWdlCisJCVR5cGVkUXVlcnk8RmllbGRsYW5ndWFnZXN2YWx1ZXM+IHEgPSBlbS5jcmVhdGVOYW1lZFF1ZXJ5KCJhbGxGaWVsZExhbmd1YWdlVmFsdWVzIiwgRmllbGRsYW5ndWFnZXN2YWx1ZXMuY2xhc3MpOworCQlxLnNldFBhcmFtZXRlcigibGFuZ3VhZ2VfaWQiLCBsYW5ndWFnZV9pZCk7CisJCXJldHVybiBxLmdldFJlc3VsdExpc3QoKTsKKwl9CisKKwlwdWJsaWMgTGlzdDxGaWVsZGxhbmd1YWdlc3ZhbHVlcz4gZ2V0VW50cmFuc2xhdGVkRmllbGRWYWx1ZXNMaXN0KExvbmcgbGFuZ3VhZ2VfaWQpIHsKKwkJLy8gYWxsIEZpZWxkVmFsdWVzSWRzIGluIGN1cnJlbnQgTGFuZ3VhZ2UKKwkJVHlwZWRRdWVyeTxMb25nPiBxMCA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoImFsbEZpZWxkVmFsdWVzSWRzIiwgTG9uZy5jbGFzcyk7CisJCXEwLnNldFBhcmFtZXRlcigibGFuZ3VhZ2VfaWQiLCBsYW5ndWFnZV9pZCk7CisJCUxpc3Q8TG9uZz4gdHJhbnNsYXRlZElkcyA9IHEwLmdldFJlc3VsdExpc3QoKTsKKwkJCisJCS8vIGFsbCBub3QgdHJhbnNsYXRlZCB2YWx1ZXMgZnJvbSBlbmdsaXNoCisJCVR5cGVkUXVlcnk8RmllbGRsYW5ndWFnZXN2YWx1ZXM+IHExID0gZW0uY3JlYXRlTmFtZWRRdWVyeSgiYWxsTm90VHJhbnNsYXRlZFZhbHVlcyIsIEZpZWxkbGFuZ3VhZ2VzdmFsdWVzLmNsYXNzKTsKKwkJcTEuc2V0UGFyYW1ldGVyKCJpZF9saXN0IiwgdHJhbnNsYXRlZElkcyk7CisKKwkJcmV0dXJuIHExLmdldFJlc3VsdExpc3QoKTsKKwl9CisKKwlwdWJsaWMgRmllbGR2YWx1ZXMgZ2V0RmllbGR2YWx1ZXNCeUlkKExvbmcgZmllbGR2YWx1ZXNfaWQsIExvbmcgbGFuZ3VhZ2VfaWQpIHsKKwkJdHJ5IHsKKwkJCS8vIGxvZy5lcnJvcigiTG9uZyBmaWVsZHZhbHVlc19pZCwgTG9uZyBsYW5ndWFnZV9pZCAiK2ZpZWxkdmFsdWVzX2lkKyIgfHwgIitsYW5ndWFnZV9pZCk7CisJCQlGaWVsZHZhbHVlcyBmdiA9IHRoaXMuZ2V0RmllbGR2YWx1ZXNCeUlkKGZpZWxkdmFsdWVzX2lkKTsKKwkJCWZ2LnNldEZpZWxkbGFuZ3VhZ2VzdmFsdWUodGhpcy5nZXRGaWVsZEJ5SWRBbmRMYW5ndWFnZSgKKwkJCQkJZmllbGR2YWx1ZXNfaWQsIGxhbmd1YWdlX2lkKSk7CisJCQlyZXR1cm4gZnY7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCQlsb2cuZXJyb3IoIltnZXRGaWVsZHZhbHVlc0J5SWRdICIsIGUpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCS8qKgorCSAqIHVwZGF0ZSBnaXZlbiBGaWVsZCBhbmQgaXRzIExhYmVsIGJ5IElEcworCSAqIAorCSAqIEBwYXJhbSBmaWVsZHZhbHVlc19pZAorCSAqIEBwYXJhbSBuYW1lCisJICogQHBhcmFtIGZpZWxkbGFuZ3VhZ2VzdmFsdWVzX2lkCisJICogQHBhcmFtIHZhbHVlCisJICogQHJldHVybgorCSAqLworCXB1YmxpYyBMb25nIHVwZGF0ZUxhYmVsKExvbmcgZmllbGR2YWx1ZXNfaWQsIFN0cmluZyBuYW1lLAorCQkJTG9uZyBmaWVsZGxhbmd1YWdlc3ZhbHVlc19pZCwgU3RyaW5nIHZhbHVlKSB7CisJCXRyeSB7CisJCQlGaWVsZHZhbHVlcyBmdiA9IHRoaXMuZ2V0RmllbGR2YWx1ZXNCeUlkKGZpZWxkdmFsdWVzX2lkKTsKKwkJCWlmIChmdiA9PSBudWxsKSB7CisJCQkJcmV0dXJuIG5ldyBMb25nKC0yNCk7CisJCQl9IGVsc2UgeworCQkJCWZ2LnNldE5hbWUobmFtZSk7CisJCQkJZnYuc2V0VXBkYXRldGltZShuZXcgRGF0ZSgpKTsKKwkJCQl0aGlzLnVwZGF0ZUZpZWxkKGZ2KTsKKwkJCX0KKwkJCUZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGZsdiA9IHRoaXMKKwkJCQkJLmdldEZpZWxkbGFuZ3VhZ2VzdmFsdWVzQnlJZChmaWVsZGxhbmd1YWdlc3ZhbHVlc19pZCk7CisJCQlpZiAoZmx2ID09IG51bGwpIHsKKwkJCQlyZXR1cm4gbmV3IExvbmcoLTI1KTsKKwkJCX0gZWxzZSB7CisJCQkJZmx2LnNldFVwZGF0ZXRpbWUobmV3IERhdGUoKSk7CisJCQkJZmx2LnNldFZhbHVlKHZhbHVlKTsKKwkJCQl0aGlzLnVwZGF0ZUZpZWxkTGFuZ3VhZ2VzTGFiZWwoZmx2KTsKKwkJCX0KKwkJCXJldHVybiBmaWVsZHZhbHVlc19pZDsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbdXBkYXRlRmllbGRMYW5ndWFnZXNMYWJlbF06ICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG5ldyBMb25nKC0xKTsKKwl9CisKKwlwdWJsaWMgTG9uZyBhZGRBbmRVcGRhdGVMYWJlbChMb25nIGZpZWxkdmFsdWVzX2lkLCBTdHJpbmcgbmFtZSwKKwkJCVN0cmluZyB2YWx1ZSwgTG9uZyBsYW5ndWFnZV9pZCkgeworCQl0cnkgeworCQkJRmllbGR2YWx1ZXMgZnYgPSB0aGlzLmdldEZpZWxkdmFsdWVzQnlJZChmaWVsZHZhbHVlc19pZCk7CisJCQlpZiAoZnYgPT0gbnVsbCkgeworCQkJCXJldHVybiBuZXcgTG9uZygtMjQpOworCQkJfSBlbHNlIHsKKwkJCQlmdi5zZXROYW1lKG5hbWUpOworCQkJCWZ2LnNldFVwZGF0ZXRpbWUobmV3IERhdGUoKSk7CisJCQkJdGhpcy51cGRhdGVGaWVsZChmdik7CisJCQl9CisJCQl0aGlzLmFkZEZpZWxkVmFsdWVCeUZpZWxkQW5kTGFuZ3VhZ2UoZnYsIGxhbmd1YWdlX2lkLAorCQkJCQl2YWx1ZSk7CisJCQlyZXR1cm4gZmllbGR2YWx1ZXNfaWQ7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW3VwZGF0ZUZpZWxkTGFuZ3VhZ2VzTGFiZWxdOiAiLCBleDIpOworCQl9CisJCXJldHVybiBuZXcgTG9uZygtMSk7CisJfQorCisJcHVibGljIGxvbmcgZ2V0TmV4dEZpZWxkdmFsdWVzSWQoKSB7CisJCXJldHVybiBmaWVsZExhbmd1YWdlc1ZhbHVlc0RBTy5jb3VudCgpICsgMTsKKwl9CisJCisJcHVibGljIExvbmcgYWRkRmllbGRBbmRMYWJlbChTdHJpbmcgbmFtZSwgU3RyaW5nIHZhbHVlLCBMb25nIGxhbmd1YWdlX2lkKSB7CisJCXRyeSB7CisJCQlGaWVsZHZhbHVlcyBmdiA9IGFkZEZpZWxkQnlJZChuYW1lLCBnZXROZXh0RmllbGR2YWx1ZXNJZCgpKTsKKwkJCWlmIChmdi5nZXRGaWVsZHZhbHVlc19pZCgpID4gMCkgeworCQkJCXRoaXMuYWRkRmllbGRWYWx1ZUJ5RmllbGRBbmRMYW5ndWFnZShmdiwKKwkJCQkJCWxhbmd1YWdlX2lkLCB2YWx1ZSk7CisJCQkJcmV0dXJuIGZ2LmdldEZpZWxkdmFsdWVzX2lkKCk7CisJCQl9IGVsc2UgeworCQkJCXJldHVybiAtMUw7CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW3VwZGF0ZUZpZWxkTGFuZ3VhZ2VzTGFiZWxdOiAiLCBleDIpOworCQl9CisJCXJldHVybiAtMUw7CisJfQorCisJcHVibGljIFNlYXJjaFJlc3VsdDxGaWVsZHZhbHVlcz4gZ2V0RmllbGRzQnlMYW5ndWFnZShpbnQgc3RhcnQsIGludCBtYXgsIFN0cmluZyBvcmRlcmJ5LAorCQkJYm9vbGVhbiBhc2MsIExvbmcgbGFuZ3VhZ2VfaWQsIFN0cmluZyBzZWFyY2gpIHsKKwkJdHJ5IHsKKwkJCVNlYXJjaFJlc3VsdDxGaWVsZHZhbHVlcz4gc3Jlc3VsdCA9IG5ldyBTZWFyY2hSZXN1bHQ8RmllbGR2YWx1ZXM+KCk7CisJCQlzcmVzdWx0LnNldE9iamVjdE5hbWUoRmllbGRsYW5ndWFnZXN2YWx1ZXMuY2xhc3MuZ2V0TmFtZSgpKTsKKwkJCXNyZXN1bHQuc2V0UmVjb3Jkcyh0aGlzLnNlbGVjdE1heEZyb21GaWVsZHNWYWx1ZXMoc2VhcmNoKSk7CisJCQlzcmVzdWx0LnNldFJlc3VsdCh0aGlzLmdldE1peGVkRmllbGRWYWx1ZXNMaXN0KHN0YXJ0LCBtYXgsIG9yZGVyYnksCisJCQkJCWFzYywgbGFuZ3VhZ2VfaWQsIHNlYXJjaCkpOworCQkJcmV0dXJuIHNyZXN1bHQ7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldEZpZWxkc0J5TGFuZ3VhZ2VdOiAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXByaXZhdGUgTG9uZyBzZWxlY3RNYXhGcm9tRmllbGRzVmFsdWVzKFN0cmluZyBzZWFyY2gpIHRocm93cyBFeGNlcHRpb24geworCQlTdHJpbmcgcXVlcnlMYW5ndWFnZSA9ICJzZWxlY3QgY291bnQoYy5maWVsZHZhbHVlc19pZCkgZnJvbSBGaWVsZHZhbHVlcyBjIHdoZXJlIGMuZGVsZXRlZCA9IGZhbHNlIjsKKwkJaWYgKHNlYXJjaC5sZW5ndGgoKT4wKSB7CisJCQlxdWVyeUxhbmd1YWdlICs9ICIgQU5EIChjLm5hbWUgTElLRSA6c2VhcmNoU3RyICIgKworCQkJCQkJCSJPUiBjLmZpZWxkdmFsdWVzX2lkID0gOmZpZWxkdmFsdWVzX2lkKSI7CisJCX0KKwkJVHlwZWRRdWVyeTxMb25nPiBxdWVyeSA9IGVtCisJCQkJLmNyZWF0ZVF1ZXJ5KHF1ZXJ5TGFuZ3VhZ2UsIExvbmcuY2xhc3MpOworCQlpZiAoc2VhcmNoLmxlbmd0aCgpPjApIHsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigic2VhcmNoU3RyIiwgIiUiK3NlYXJjaCsiJSIpOworCQkJbG9uZyBpZE51bWJlciA9IDA7CisJCQl0cnkgeworCQkJCWlkTnVtYmVyID0gTG9uZy5wYXJzZUxvbmcoc2VhcmNoKTsKKwkJCX0gY2F0Y2ggKE51bWJlckZvcm1hdEV4Y2VwdGlvbiBuZmUpIHsKKwkJCX0KKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiZmllbGR2YWx1ZXNfaWQiLCBpZE51bWJlcik7CisJCX0KKwkJcmV0dXJuIHF1ZXJ5LmdldFJlc3VsdExpc3QoKS5nZXQoMCk7CisJfQorCisJcHJpdmF0ZSBMaXN0PEZpZWxkdmFsdWVzPiBnZXRNaXhlZEZpZWxkVmFsdWVzTGlzdChpbnQgc3RhcnQsIGludCBtYXgsCisJCQlTdHJpbmcgb3JkZXJieSwgYm9vbGVhbiBhc2MsIExvbmcgbGFuZ3VhZ2VfaWQsIFN0cmluZyBzZWFyY2gpIHRocm93cyBFeGNlcHRpb24geworCQlMaXN0PEZpZWxkdmFsdWVzPiBmdkxpc3QgPSB0aGlzLmdldEZpZWxkc1ZhbHVlcyhzdGFydCwgbWF4LCBvcmRlcmJ5LCBhc2MsIHNlYXJjaCk7CisJCWZvciAoRmllbGR2YWx1ZXMgZnYgOiBmdkxpc3QpIHsKKwkJCWZ2LnNldEZpZWxkbGFuZ3VhZ2VzdmFsdWUodGhpcy5nZXRGaWVsZEJ5SWRBbmRMYW5ndWFnZSgKKwkJCQkJZnYuZ2V0RmllbGR2YWx1ZXNfaWQoKSwgbGFuZ3VhZ2VfaWQpKTsKKwkJfQorCQlyZXR1cm4gZnZMaXN0OworCX0KKworCXByaXZhdGUgTGlzdDxGaWVsZHZhbHVlcz4gZ2V0RmllbGRzVmFsdWVzKGludCBzdGFydCwgaW50IG1heCwKKwkJCVN0cmluZyBvcmRlcmJ5LCBib29sZWFuIGFzYywgU3RyaW5nIHNlYXJjaCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCVN0cmluZyBxdWVyeUxhbmd1YWdlID0gInNlbGVjdCBjIGZyb20gRmllbGR2YWx1ZXMgYyB3aGVyZSBjLmRlbGV0ZWQgPSBmYWxzZSI7CisJCWlmIChzZWFyY2gubGVuZ3RoKCk+MCkgeworCQkJcXVlcnlMYW5ndWFnZSArPSAiIEFORCAoYy5uYW1lIExJS0UgOnNlYXJjaFN0ciAiICsKKwkJCQkJCQkiT1IgYy5maWVsZHZhbHVlc19pZCA9IDpmaWVsZHZhbHVlc19pZCkiOworCQl9CisJCWlmIChhc2MpIHsKKwkJCXF1ZXJ5TGFuZ3VhZ2UgKz0gIiBPUkRFUiBCWSAiK29yZGVyYnkrICIgQVNDIjsKKwkJfSBlbHNlIHsKKwkJCXF1ZXJ5TGFuZ3VhZ2UgKz0gIiBPUkRFUiBCWSAiK29yZGVyYnkgKyAiREVTQyI7CisJCX0KKwkJVHlwZWRRdWVyeTxGaWVsZHZhbHVlcz4gcSA9IGVtCisJCQkJLmNyZWF0ZVF1ZXJ5KHF1ZXJ5TGFuZ3VhZ2UsIEZpZWxkdmFsdWVzLmNsYXNzKTsKKwkJaWYgKHNlYXJjaC5sZW5ndGgoKT4wKSB7CisJCQlxLnNldFBhcmFtZXRlcigic2VhcmNoU3RyIiwgIiUiK3NlYXJjaCsiJSIpOworCQkJbG9uZyBpZE51bWJlciA9IDA7CisJCQl0cnkgeworCQkJCWlkTnVtYmVyID0gTG9uZy5wYXJzZUxvbmcoc2VhcmNoKTsKKwkJCX0gY2F0Y2ggKE51bWJlckZvcm1hdEV4Y2VwdGlvbiBuZmUpIHsKKwkJCX0KKwkJCXEuc2V0UGFyYW1ldGVyKCJmaWVsZHZhbHVlc19pZCIsIGlkTnVtYmVyKTsKKwkJfQorCQlxLnNldEZpcnN0UmVzdWx0KHN0YXJ0KTsKKwkJcS5zZXRNYXhSZXN1bHRzKG1heCk7CisJCXJldHVybiAgcS5nZXRSZXN1bHRMaXN0KCk7CisJfQorCisJcHVibGljIEZpZWxkdmFsdWVzIGdldEZpZWxkdmFsdWVzQnlJZChMb25nIGZpZWxkdmFsdWVzX2lkKSB7CisJCVN0cmluZyBocWwgPSAic2VsZWN0IGYgZnJvbSBGaWVsZHZhbHVlcyBmIFdIRVJFIGYuZmllbGR2YWx1ZXNfaWQgPSA6ZmllbGR2YWx1ZXNfaWQgIjsKKwkJVHlwZWRRdWVyeTxGaWVsZHZhbHVlcz4gcXVlcnkgPSBlbS5jcmVhdGVRdWVyeShocWwsIEZpZWxkdmFsdWVzLmNsYXNzKTsKKwkJcXVlcnkuc2V0UGFyYW1ldGVyKCJmaWVsZHZhbHVlc19pZCIsIGZpZWxkdmFsdWVzX2lkKTsKKwkJRmllbGR2YWx1ZXMgZnYgPSBudWxsOworCQl0cnkgeworCQkJZnYgPSBxdWVyeS5nZXRTaW5nbGVSZXN1bHQoKTsKKwkJfSBjYXRjaCAoTm9SZXN1bHRFeGNlcHRpb24gZXgpIHsKKwkJfQorCQlyZXR1cm4gZnY7CisJfQorCisJcHJpdmF0ZSBGaWVsZGxhbmd1YWdlc3ZhbHVlcyBnZXRGaWVsZGxhbmd1YWdlc3ZhbHVlc0J5SWQoCisJCQlMb25nIGZpZWxkbGFuZ3VhZ2VzdmFsdWVzX2lkKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkJcmV0dXJuIHBlcmZvcm1SZXBsYWNlKGZpZWxkTGFuZ3VhZ2VzVmFsdWVzREFPLmdldChmaWVsZGxhbmd1YWdlc3ZhbHVlc19pZCkpOworCX0KKwkKKwlwcml2YXRlIEZpZWxkbGFuZ3VhZ2VzdmFsdWVzIHBlcmZvcm1SZXBsYWNlKEZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGYpIHsKKwkJU3RyaW5nIGFwcE5hbWUgPSBjb25maWd1cmF0aW9uRGFvSW1wbC5nZXRBcHBOYW1lKCk7CisJCXJldHVybiBwZXJmb3JtUmVwbGFjZShmLCBhcHBOYW1lKTsKKwl9CisJCisJcHJpdmF0ZSBTdHJpbmcgcGVyZm9ybVJlcGxhY2UoU3RyaW5nIHZhbCwgU3RyaW5nIGFwcE5hbWUpIHsKKwkJcmV0dXJuIHZhbCA9PSBudWxsID8gdmFsIDogdmFsLnJlcGxhY2VBbGwoIlxcJEFQUF9OQU1FIiwgYXBwTmFtZSk7CisJfQorCQorCXByaXZhdGUgRmllbGRsYW5ndWFnZXN2YWx1ZXMgcGVyZm9ybVJlcGxhY2UoRmllbGRsYW5ndWFnZXN2YWx1ZXMgZiwgU3RyaW5nIGFwcE5hbWUpIHsKKwkJRmllbGRsYW5ndWFnZXN2YWx1ZXMgciA9IG5ldyBGaWVsZGxhbmd1YWdlc3ZhbHVlcygpOworCQlyLnNldERlbGV0ZWQoZi5nZXREZWxldGVkKCkpOworCQlyLnNldEZpZWxkbGFuZ3VhZ2VzdmFsdWVzX2lkKGYuZ2V0RmllbGRsYW5ndWFnZXN2YWx1ZXNfaWQoKSk7CisJCXIuc2V0RmllbGR2YWx1ZXNfaWQoZi5nZXRGaWVsZHZhbHVlc19pZCgpKTsKKwkJci5zZXRMYW5ndWFnZV9pZChmLmdldExhbmd1YWdlX2lkKCkpOworCQlyLnNldFN0YXJ0dGltZShmLmdldFN0YXJ0dGltZSgpKTsKKwkJci5zZXRVcGRhdGV0aW1lKGYuZ2V0VXBkYXRldGltZSgpKTsKKwkJci5zZXRWYWx1ZShwZXJmb3JtUmVwbGFjZShmLmdldFZhbHVlKCksIGFwcE5hbWUpKTsKKwkJcmV0dXJuIHI7CisJfQorCQorCXByaXZhdGUgPFQgZXh0ZW5kcyBDb2xsZWN0aW9uPEZpZWxkbGFuZ3VhZ2VzdmFsdWVzPj4gVCBwZXJmb3JtUmVwbGFjZShUIGZsdikgeworCQlTdHJpbmcgYXBwTmFtZSA9IGNvbmZpZ3VyYXRpb25EYW9JbXBsLmdldEFwcE5hbWUoKTsKKwkJCisJCWZvciAoRmllbGRsYW5ndWFnZXN2YWx1ZXMgZiA6IGZsdikgeworCQkJcGVyZm9ybVJlcGxhY2UoZiwgYXBwTmFtZSk7CisJCX0KKwkJcmV0dXJuIGZsdjsKKwl9CisJCisJcHJpdmF0ZSB2b2lkIHVwZGF0ZUZpZWxkKEZpZWxkdmFsdWVzIGZ2KSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkJaWYgKGZ2LmdldEZpZWxkdmFsdWVzX2lkKCkgPT0gbnVsbCkgeworCQkJZW0ucGVyc2lzdChmdik7CisJCX0gZWxzZSB7CisJCQlpZiAoIWVtLmNvbnRhaW5zKGZ2KSkgeworCQkJCWVtLm1lcmdlKGZ2KTsKKwkJCX0KKwkJfQorCX0KKworCXByaXZhdGUgdm9pZCB1cGRhdGVGaWVsZExhbmd1YWdlc0xhYmVsKEZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGZsdikKKwkJCXRocm93cyBFeGNlcHRpb24geworCQlpZiAoZmx2LmdldEZpZWxkbGFuZ3VhZ2VzdmFsdWVzX2lkKCkgPT0gbnVsbCkgeworCQkJZW0ucGVyc2lzdChmbHYpOworCQl9IGVsc2UgeworCQkJaWYgKCFlbS5jb250YWlucyhmbHYpKSB7CisJCQkJZW0ubWVyZ2UoZmx2KTsKKwkJCX0KKwkJfQorCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvYmFzaWMvRmllbGRWYWx1ZURhby5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvYmFzaWMvRmllbGRWYWx1ZURhby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5NTI4ZGYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9iYXNpYy9GaWVsZFZhbHVlRGFvLmphdmEKQEAgLTAsMCArMSwxNTggQEAKKy8qDQorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAqIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYzsNCisNCitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsNCitpbXBvcnQgamF2YS51dGlsLkRhdGU7DQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KKw0KK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHlNYW5hZ2VyOw0KK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5QZXJzaXN0ZW5jZUNvbnRleHQ7DQoraW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlR5cGVkUXVlcnk7DQorDQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuSURhdGFQcm92aWRlckRhbzsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5kYW8uQ29uZmlndXJhdGlvbkRhbzsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMubGFuZy5GaWVsZGxhbmd1YWdlc3ZhbHVlczsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMubGFuZy5GaWVsZHZhbHVlczsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMuRGFvSGVscGVyOw0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5BdXRvd2lyZWQ7DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsudHJhbnNhY3Rpb24uYW5ub3RhdGlvbi5UcmFuc2FjdGlvbmFsOw0KKw0KK0BUcmFuc2FjdGlvbmFsDQorcHVibGljIGNsYXNzIEZpZWxkVmFsdWVEYW8gaW1wbGVtZW50cyBJRGF0YVByb3ZpZGVyRGFvPEZpZWxkdmFsdWVzPiB7DQorCXB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nW10gc2VhcmNoRmllbGRzID0geyJ2YWx1ZSIsICJmaWVsZHZhbHVlcy5uYW1lIn07DQorCQ0KKwlAUGVyc2lzdGVuY2VDb250ZXh0DQorCXByaXZhdGUgRW50aXR5TWFuYWdlciBlbTsNCisJQEF1dG93aXJlZA0KKwlwcml2YXRlIENvbmZpZ3VyYXRpb25EYW8gY29uZmlndXJhdGlvbkRhbzsNCisJQEF1dG93aXJlZA0KKwlwcml2YXRlIEZpZWxkTGFuZ3VhZ2VzVmFsdWVzRGFvIGZsdkRhb0ltcGw7DQorDQorCXByaXZhdGUgTG9uZyBnZXREZWZhdWx0TGFuZ3VhZ2UoKSB7DQorCQlyZXR1cm4gY29uZmlndXJhdGlvbkRhby5nZXRDb25mVmFsdWUoImRlZmF1bHRfbGFuZ19pZCIsIExvbmcuY2xhc3MsICIxIik7DQorCX0NCisJDQorCXB1YmxpYyBGaWVsZHZhbHVlcyBnZXQobG9uZyBpZCkgew0KKwkJcmV0dXJuIGdldChnZXREZWZhdWx0TGFuZ3VhZ2UoKSwgaWQpOw0KKwl9DQorDQorCXB1YmxpYyBGaWVsZHZhbHVlcyBnZXQoTG9uZyBsYW5ndWFnZV9pZCwgbG9uZyBpZCkgew0KKwkJVHlwZWRRdWVyeTxGaWVsZHZhbHVlcz4gcSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoImdldEZpZWxkQnlJZEFuZExhbmd1YWdlIiwgRmllbGR2YWx1ZXMuY2xhc3MpOw0KKwkJcS5zZXRQYXJhbWV0ZXIoImlkIiwgaWQpOw0KKwkJcS5zZXRQYXJhbWV0ZXIoImxhbmciLCBsYW5ndWFnZV9pZCk7DQorCQlMaXN0PEZpZWxkdmFsdWVzPiBsID0gcS5nZXRSZXN1bHRMaXN0KCk7DQorCQlyZXR1cm4gbCA9PSBudWxsIHx8IGwuaXNFbXB0eSgpID8gbnVsbCA6IGwuZ2V0KDApOw0KKwl9DQorDQorCXB1YmxpYyBMaXN0PEZpZWxkdmFsdWVzPiBnZXQoaW50IHN0YXJ0LCBpbnQgY291bnQpIHsNCisJCXJldHVybiBnZXQoZ2V0RGVmYXVsdExhbmd1YWdlKCksIHN0YXJ0LCBjb3VudCk7DQorCX0NCisNCisJcHVibGljIExpc3Q8RmllbGR2YWx1ZXM+IGdldChTdHJpbmcgc2VhcmNoLCBpbnQgc3RhcnQsIGludCBjb3VudCwgU3RyaW5nIHNvcnQpIHsNCisJCXJldHVybiBnZXQoZ2V0RGVmYXVsdExhbmd1YWdlKCksIHNlYXJjaCwgc3RhcnQsIGNvdW50LCBzb3J0KTsNCisJfQ0KKwkNCisJcHVibGljIExpc3Q8RmllbGR2YWx1ZXM+IGdldChMb25nIGxhbmd1YWdlX2lkLCBTdHJpbmcgc2VhcmNoLCBpbnQgc3RhcnQsIGludCBjb3VudCwgU3RyaW5nIHNvcnQpIHsNCisJCVN0cmluZyBzcWwgPSBEYW9IZWxwZXIuZ2V0U2VhcmNoUXVlcnkoDQorCQkJCSJGaWVsZGxhbmd1YWdlc3ZhbHVlcyINCisJCQkJLCAiZmx2Ig0KKwkJCQksIHNlYXJjaA0KKwkJCQksIHRydWUNCisJCQkJLCBmYWxzZQ0KKwkJCQksICJmbHYuZmllbGR2YWx1ZXMuZGVsZXRlZCA9IGZhbHNlIEFORCBmbHYubGFuZ3VhZ2VfaWQgPSA6bGFuZyINCisJCQkJLCBzb3J0DQorCQkJCSwgc2VhcmNoRmllbGRzKTsNCisJCVR5cGVkUXVlcnk8RmllbGRsYW5ndWFnZXN2YWx1ZXM+IHEgPSBlbS5jcmVhdGVRdWVyeShzcWwsIEZpZWxkbGFuZ3VhZ2VzdmFsdWVzLmNsYXNzKTsNCisJCXEuc2V0UGFyYW1ldGVyKCJsYW5nIiwgbGFuZ3VhZ2VfaWQpOw0KKwkJcS5zZXRGaXJzdFJlc3VsdChzdGFydCk7DQorCQlxLnNldE1heFJlc3VsdHMoY291bnQpOw0KKwkJDQorCQkvL25vdyBsZXRzIGNyZWF0ZSB0aGUgbGlzdCBvZiBGaWVsZHZhbHVlcw0KKwkJTGlzdDxGaWVsZGxhbmd1YWdlc3ZhbHVlcz4gZmx2TGlzdCA9IHEuZ2V0UmVzdWx0TGlzdCgpOw0KKwkJTGlzdDxGaWVsZHZhbHVlcz4gciA9IG5ldyBBcnJheUxpc3Q8RmllbGR2YWx1ZXM+KGZsdkxpc3Quc2l6ZSgpKTsNCisJCWZvciAoRmllbGRsYW5ndWFnZXN2YWx1ZXMgZmx2IDogZmx2TGlzdCkgew0KKwkJCUZpZWxkdmFsdWVzIGZ2ID0gZmx2LmdldEZpZWxkdmFsdWVzKCk7DQorCQkJZnYuc2V0RmllbGRsYW5ndWFnZXN2YWx1ZShmbHYpOw0KKwkJCXIuYWRkKGZ2KTsNCisJCX0NCisJCXJldHVybiByOw0KKwl9DQorCQ0KKwlwdWJsaWMgTGlzdDxGaWVsZHZhbHVlcz4gZ2V0KExvbmcgbGFuZ3VhZ2VfaWQsIGludCBzdGFydCwgaW50IGNvdW50KSB7DQorCQlUeXBlZFF1ZXJ5PEZpZWxkdmFsdWVzPiBxID0gZW0uY3JlYXRlTmFtZWRRdWVyeSgiZ2V0RmllbGRCeUxhbmd1YWdlIiwgRmllbGR2YWx1ZXMuY2xhc3MpOw0KKwkJLy9xLnNldFBhcmFtZXRlcigibGFuZyIsIGxhbmd1YWdlX2lkKTsgLy9GSVhNRSBjb21tZW50ZWQgZm9yIG5vdw0KKwkJcS5zZXRGaXJzdFJlc3VsdChzdGFydCk7DQorCQlxLnNldE1heFJlc3VsdHMoY291bnQpOw0KKwkJTGlzdDxGaWVsZHZhbHVlcz4gcmVzdWx0ID0gcS5nZXRSZXN1bHRMaXN0KCk7DQorCQlmb3IgKEZpZWxkdmFsdWVzIGZ2IDogcmVzdWx0KSB7DQorCQkJLy9GSVhNRSBpbmVmZmVjdGl2ZSAhISEhISEhISEhISEhISEhISEhIQ0KKwkJCUZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGZsdiA9IGZsdkRhb0ltcGwuZ2V0KGZ2LmdldEZpZWxkdmFsdWVzX2lkKCksIGxhbmd1YWdlX2lkKTsNCisJCQlpZiAoZmx2ID09IG51bGwpIHsNCisJCQkJZmx2ID0gbmV3IEZpZWxkbGFuZ3VhZ2VzdmFsdWVzKCk7DQorCQkJCWZsdi5zZXRMYW5ndWFnZV9pZChsYW5ndWFnZV9pZCk7DQorCQkJCWZsdi5zZXRGaWVsZHZhbHVlcyhmdik7DQorCQkJfQ0KKwkJCWZ2LnNldEZpZWxkbGFuZ3VhZ2VzdmFsdWUoZmx2KTsNCisJCX0NCisJCXJldHVybiByZXN1bHQ7DQorCX0NCisNCisJcHVibGljIGxvbmcgY291bnQoKSB7DQorCQlUeXBlZFF1ZXJ5PExvbmc+IHEgPSBlbS5jcmVhdGVOYW1lZFF1ZXJ5KCJnZXRGaWVsZENvdW50IiwgTG9uZy5jbGFzcyk7DQorCQlyZXR1cm4gcS5nZXRTaW5nbGVSZXN1bHQoKTsNCisJfQ0KKw0KKwlwdWJsaWMgbG9uZyBjb3VudChTdHJpbmcgc2VhcmNoKSB7DQorCQlyZXR1cm4gY291bnQoZ2V0RGVmYXVsdExhbmd1YWdlKCksIHNlYXJjaCk7DQorCX0NCisJDQorCXB1YmxpYyBsb25nIGNvdW50KExvbmcgbGFuZ3VhZ2VfaWQsIFN0cmluZyBzZWFyY2gpIHsNCisJCVN0cmluZyBzcWwgPSBEYW9IZWxwZXIuZ2V0U2VhcmNoUXVlcnkoDQorCQkJCSJGaWVsZGxhbmd1YWdlc3ZhbHVlcyINCisJCQkJLCAiZmx2Ig0KKwkJCQksIHNlYXJjaA0KKwkJCQksIHRydWUNCisJCQkJLCB0cnVlDQorCQkJCSwgImZsdi5maWVsZHZhbHVlcy5kZWxldGVkID0gZmFsc2UgQU5EIGZsdi5sYW5ndWFnZV9pZCA9IDpsYW5nIg0KKwkJCQksIG51bGwNCisJCQkJLCBzZWFyY2hGaWVsZHMpOw0KKwkJVHlwZWRRdWVyeTxMb25nPiBxID0gZW0uY3JlYXRlUXVlcnkoc3FsLCBMb25nLmNsYXNzKTsNCisJCXEuc2V0UGFyYW1ldGVyKCJsYW5nIiwgbGFuZ3VhZ2VfaWQpOw0KKwkJcmV0dXJuIHEuZ2V0U2luZ2xlUmVzdWx0KCk7DQorCX0NCisJDQorCXB1YmxpYyBGaWVsZHZhbHVlcyB1cGRhdGUoRmllbGR2YWx1ZXMgZW50aXR5LCBMb25nIHVzZXJJZCkgew0KKwkJZW50aXR5LnNldERlbGV0ZWQoZmFsc2UpOw0KKwkJaWYgKGVudGl0eS5nZXRGaWVsZHZhbHVlc19pZCgpID09IG51bGwpIHsNCisJCQllbnRpdHkuc2V0RmllbGR2YWx1ZXNfaWQoY291bnQoKSArIDEpOw0KKwkJCWVudGl0eS5zZXRTdGFydHRpbWUobmV3IERhdGUoKSk7DQorCQkJZW0ucGVyc2lzdChlbnRpdHkpOw0KKwkJfSBlbHNlIHsNCisJCQllbnRpdHkgPSBlbS5tZXJnZShlbnRpdHkpOw0KKwkJfQ0KKwkJcmV0dXJuIGVudGl0eTsNCisJfQ0KKw0KKwlwdWJsaWMgdm9pZCBkZWxldGUoRmllbGR2YWx1ZXMgZW50aXR5LCBMb25nIHVzZXJJZCkgew0KKwkJLy8gVE9ETyBBdXRvLWdlbmVyYXRlZCBtZXRob2Qgc3R1Yg0KKwkJDQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvYmFzaWMvTmF2aUJ1aWxkZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2Jhc2ljL05hdmlCdWlsZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGY3YzQ5NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2Jhc2ljL05hdmlCdWlsZGVyLmphdmEKQEAgLTAsMCArMSwxNTEgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYzsKKworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHlNYW5hZ2VyOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlBlcnNpc3RlbmNlQ29udGV4dDsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UeXBlZFF1ZXJ5OworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLk5hdmlnbG9iYWw7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuTmF2aW1haW47CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLnRyYW5zYWN0aW9uLmFubm90YXRpb24uVHJhbnNhY3Rpb25hbDsKKworQFRyYW5zYWN0aW9uYWwKK3B1YmxpYyBjbGFzcyBOYXZpQnVpbGRlciB7CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKAorCQkJTmF2aUJ1aWxkZXIuY2xhc3MsIE9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKworCUBQZXJzaXN0ZW5jZUNvbnRleHQKKwlwcml2YXRlIEVudGl0eU1hbmFnZXIgZW07CisKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBGaWVsZE1hbmFnZXIgZmllbGRNYW5hZ2VyOworCisJcHVibGljIE5hdmlnbG9iYWwgZ2V0R2xvYmFsTWVudUVudHJ5KGxvbmcgZ2xvYmFsSWQpIHsKKwkJdHJ5IHsKKwkJCVR5cGVkUXVlcnk8TmF2aWdsb2JhbD4gcXVlcnkgPSBlbS5jcmVhdGVOYW1lZFF1ZXJ5KCJnZXROYXZpZ2F0aW9uQnlJZCIsIE5hdmlnbG9iYWwuY2xhc3MpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJnbG9iYWxfaWQiLCBnbG9iYWxJZCk7CisJCQlyZXR1cm4gcXVlcnkuZ2V0U2luZ2xlUmVzdWx0KCk7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiZ2V0R2xvYmFsTWVudUVudHJ5IiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwkJCisJfQorCQorCXB1YmxpYyBMaXN0PE5hdmlnbG9iYWw+IGdldE1haW5NZW51KGxvbmcgdXNlcl9sZXZlbCwgbG9uZyBVU0VSX0lELCBsb25nIGxhbmd1YWdlX2lkKSB7CisJCUxpc3Q8TmF2aWdsb2JhbD4gbGwgPSBnZXRNYWluTWVudSh1c2VyX2xldmVsLCBVU0VSX0lEKTsKKwkJZm9yIChOYXZpZ2xvYmFsIG5hdmlnbCA6IGxsKSB7CisJCQluYXZpZ2wuc2V0TGFiZWwoZmllbGRNYW5hZ2VyLmdldEZpZWxkQnlJZEFuZExhbmd1YWdlQnlOYXZpKAorCQkJCQluYXZpZ2wuZ2V0RmllbGR2YWx1ZXNfaWQoKSwgbGFuZ3VhZ2VfaWQpKTsKKwkJCW5hdmlnbC5zZXRUb29sdGlwKGZpZWxkTWFuYWdlci5nZXRGaWVsZEJ5SWRBbmRMYW5ndWFnZUJ5TmF2aSgKKwkJCQkJbmF2aWdsLmdldFRvb2x0aXBfZmllbGR2YWx1ZXNfaWQoKSwgbGFuZ3VhZ2VfaWQpKTsKKwkJCWZvciAoTmF2aW1haW4gbmF2aW0gOiBuYXZpZ2wuZ2V0TWFpbm5hdmkoKSkgeworCQkJCW5hdmltLnNldExhYmVsKGZpZWxkTWFuYWdlci5nZXRGaWVsZEJ5SWRBbmRMYW5ndWFnZUJ5TmF2aSgKKwkJCQkJCW5hdmltLmdldEZpZWxkdmFsdWVzX2lkKCksIGxhbmd1YWdlX2lkKSk7CisJCQkJbmF2aW0uc2V0VG9vbHRpcChmaWVsZE1hbmFnZXIuZ2V0RmllbGRCeUlkQW5kTGFuZ3VhZ2VCeU5hdmkoCisJCQkJCQluYXZpbS5nZXRUb29sdGlwX2ZpZWxkdmFsdWVzX2lkKCksIGxhbmd1YWdlX2lkKSk7CisJCQl9CisJCX0KKwkJcmV0dXJuIGxsOworCX0KKworCXB1YmxpYyBMaXN0PE5hdmlnbG9iYWw+IGdldE1haW5NZW51KGxvbmcgdXNlcl9sZXZlbCwgbG9uZyBVU0VSX0lEKSB7CisJCXRyeSB7CisJCQlUeXBlZFF1ZXJ5PE5hdmlnbG9iYWw+IHF1ZXJ5ID0gZW0uY3JlYXRlTmFtZWRRdWVyeSgiZ2V0TmF2aWdhdGlvbiIsIE5hdmlnbG9iYWwuY2xhc3MpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJsZXZlbF9pZCIsIHVzZXJfbGV2ZWwpOworCQkJTGlzdDxOYXZpZ2xvYmFsPiBuYXZpID0gcXVlcnkuZ2V0UmVzdWx0TGlzdCgpOworCQkJcmV0dXJuIG5hdmk7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiZ2V0TWFpbk1lbnUiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyB2b2lkIGFkZEdsb2JhbFN0cnVjdHVyZShTdHJpbmcgYWN0aW9uLCBpbnQgbmF2aW9yZGVyLAorCQkJbG9uZyBmaWVsZHZhbHVlc19pZCwgYm9vbGVhbiBpc2xlYWYsIGJvb2xlYW4gaXNvcGVuLCBsb25nIGxldmVsX2lkLAorCQkJU3RyaW5nIG5hbWUsIGJvb2xlYW4gZGVsZXRlZCwgTG9uZyB0b29sdGlwX2ZpZWxkdmFsdWVzX2lkKSB7CisJCXRyeSB7CisJCQlOYXZpZ2xvYmFsIG5nID0gbmV3IE5hdmlnbG9iYWwoKTsKKwkJCW5nLnNldEFjdGlvbihhY3Rpb24pOworCQkJbmcuc2V0Q29tbWVudCgiIik7CisJCQluZy5zZXRJY29uKCIiKTsKKwkJCW5nLnNldE5hdmlvcmRlcihuYXZpb3JkZXIpOworCQkJbmcuc2V0RmllbGR2YWx1ZXNfaWQoZmllbGR2YWx1ZXNfaWQpOworCQkJbmcuc2V0SXNsZWFmKGlzbGVhZik7CisJCQluZy5zZXRJc29wZW4oaXNvcGVuKTsKKwkJCW5nLnNldERlbGV0ZWQoZGVsZXRlZCk7CisJCQluZy5zZXRMZXZlbF9pZChsZXZlbF9pZCk7CisJCQluZy5zZXROYW1lKG5hbWUpOworCQkJbmcuc2V0U3RhcnR0aW1lKG5ldyBEYXRlKCkpOworCQkJbmcuc2V0VG9vbHRpcF9maWVsZHZhbHVlc19pZCh0b29sdGlwX2ZpZWxkdmFsdWVzX2lkKTsKKwkJCS8vIENyaXRlcmlhQnVpbGRlciBjcml0ID0gZW0uZ2V0Q3JpdGVyaWFCdWlsZGVyKCk7CisKKwkJCWVtLm1lcmdlKG5nKTsKKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoImFkZEdsb2JhbFN0cnVjdHVyZSIsIGV4Mik7CisJCX0KKwl9CisKKwlwdWJsaWMgdm9pZCBhZGRNYWluU3RydWN0dXJlKFN0cmluZyBhY3Rpb24sIFN0cmluZyBwYXJhbXMsIGludCBuYXZpb3JkZXIsCisJCQlsb25nIGZpZWxkdmFsdWVzX2lkLCBib29sZWFuIGlzbGVhZiwgYm9vbGVhbiBpc29wZW4sIGxvbmcgbGV2ZWxfaWQsCisJCQlTdHJpbmcgbmFtZSwgbG9uZyBnbG9iYWxfaWQsIGJvb2xlYW4gZGVsZXRlZCwKKwkJCUxvbmcgdG9vbHRpcF9maWVsZHZhbHVlc19pZCkgeworCQl0cnkgeworCQkJTmF2aWdsb2JhbCBuZyA9IGdldEdsb2JhbE1lbnVFbnRyeShnbG9iYWxfaWQpOworCQkJTGlzdDxOYXZpbWFpbj4gbWFpbkVudHJpZXMgPSBuZy5nZXRNYWlubmF2aSgpOworCQkJbWFpbkVudHJpZXMgPSAobWFpbkVudHJpZXMgPT0gbnVsbCkgPyBuZXcgQXJyYXlMaXN0PE5hdmltYWluPigpIDogbWFpbkVudHJpZXM7CisJCQkKKwkJCU5hdmltYWluIG5tID0gbmV3IE5hdmltYWluKCk7CisJCQlubS5zZXRBY3Rpb24oYWN0aW9uKTsKKwkJCW5tLnNldFBhcmFtcyhwYXJhbXMpOworCQkJbm0uc2V0Q29tbWVudCgiIik7CisJCQlubS5zZXRJY29uKCIiKTsKKwkJCW5tLnNldEZpZWxkdmFsdWVzX2lkKGZpZWxkdmFsdWVzX2lkKTsKKwkJCW5tLnNldElzbGVhZihpc2xlYWYpOworCQkJbm0uc2V0TmF2aW9yZGVyKG5hdmlvcmRlcik7CisJCQlubS5zZXRJc29wZW4oaXNvcGVuKTsKKwkJCW5tLnNldExldmVsX2lkKGxldmVsX2lkKTsKKwkJCW5tLnNldE5hbWUobmFtZSk7CisJCQlubS5zZXREZWxldGVkKGRlbGV0ZWQpOworCQkJbm0uc2V0R2xvYmFsX2lkKGdsb2JhbF9pZCk7CisJCQlubS5zZXRTdGFydHRpbWUobmV3IERhdGUoKSk7CisJCQlubS5zZXRUb29sdGlwX2ZpZWxkdmFsdWVzX2lkKHRvb2x0aXBfZmllbGR2YWx1ZXNfaWQpOworCQkJCisJCQltYWluRW50cmllcy5hZGQobm0pOworCQkJbmcuc2V0TWFpbm5hdmkobWFpbkVudHJpZXMpOworCQkJCisJCQllbS5tZXJnZShuZyk7CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJhZGRNYWluU3RydWN0dXJlIiwgZXgyKTsKKwkJfQorCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvYmFzaWMvU2Vzc2lvbmRhdGFEYW8uamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2Jhc2ljL1Nlc3Npb25kYXRhRGFvLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjE4MzU4YgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2Jhc2ljL1Nlc3Npb25kYXRhRGFvLmphdmEKQEAgLTAsMCArMSw0NDkgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYzsKKworaW1wb3J0IGphdmEudXRpbC5DYWxlbmRhcjsKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHlNYW5hZ2VyOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlBlcnNpc3RlbmNlQ29udGV4dDsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UeXBlZFF1ZXJ5OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLmNyaXRlcmlhLkNyaXRlcmlhQnVpbGRlcjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5jcml0ZXJpYS5Dcml0ZXJpYVF1ZXJ5OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLmNyaXRlcmlhLlByZWRpY2F0ZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5jcml0ZXJpYS5Sb290OworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLlNlc3Npb25kYXRhOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnJvb20uQ2xpZW50OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnNlc3Npb24uSVNlc3Npb25NYW5hZ2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLmNyeXB0Lk1hbmFnZUNyeXB0U3R5bGU7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLnRyYW5zYWN0aW9uLmFubm90YXRpb24uVHJhbnNhY3Rpb25hbDsKKworLyoqCisgKiAKKyAqIEBhdXRob3Igc3dhZ25lciBUaGlzIENsYXNzIGhhbmRsZXMgYWxsIHNlc3Npb24gbWFuYWdlbWVudAorICogCisgKiAgICAgICAgIFRPRE86IERlbGV0ZSBhbGwgaW5hY3RpdmUgc2Vzc2lvbiBieSBhIHNjaGVkdWxlcgorICogCisgKi8KK0BUcmFuc2FjdGlvbmFsCitwdWJsaWMgY2xhc3MgU2Vzc2lvbmRhdGFEYW8geworCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcigKKwkJCVNlc3Npb25kYXRhRGFvLmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisJQFBlcnNpc3RlbmNlQ29udGV4dAorCXByaXZhdGUgRW50aXR5TWFuYWdlciBlbTsKKworCUBBdXRvd2lyZWQKKwlwcml2YXRlIE1hbmFnZUNyeXB0U3R5bGUgbWFuYWdlQ3J5cHRTdHlsZTsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBJU2Vzc2lvbk1hbmFnZXIgc2Vzc2lvbk1hbmFnZXI7CisKKwkvKioKKwkgKiBjcmVhdGVzIGEgbmV3IHNlc3Npb24tb2JqZWN0IGluIHRoZSBkYXRhYmFzZQorCSAqIAorCSAqIEByZXR1cm4KKwkgKi8KKwlwdWJsaWMgU2Vzc2lvbmRhdGEgc3RhcnRzZXNzaW9uKCkgeworCQl0cnkgeworCisJCQlsb2cuZGVidWcoInN0YXJ0c2Vzc2lvbiA6OiBzdGFydHNlc3Npb24iKTsKKworCQkJbG9uZyB0aGlzdGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpOworCQkJU2Vzc2lvbmRhdGEgc2Vzc2lvbmRhdGEgPSBuZXcgU2Vzc2lvbmRhdGEoKTsKKwkJCXNlc3Npb25kYXRhLnNldFNlc3Npb25faWQobWFuYWdlQ3J5cHRTdHlsZS5nZXRJbnN0YW5jZU9mQ3J5cHQoKQorCQkJCQkuY3JlYXRlUGFzc1BocmFzZShTdHJpbmcudmFsdWVPZih0aGlzdGltZSkudG9TdHJpbmcoKSkpOworCQkJc2Vzc2lvbmRhdGEuc2V0UmVmcmVzaF90aW1lKG5ldyBEYXRlKCkpOworCQkJc2Vzc2lvbmRhdGEuc2V0U3RhcnR0ZXJtaW5fdGltZShuZXcgRGF0ZSgpKTsKKwkJCXNlc3Npb25kYXRhLnNldFVzZXJfaWQobnVsbCk7CisKKwkJCXNlc3Npb25kYXRhID0gZW0ubWVyZ2Uoc2Vzc2lvbmRhdGEpOworCisJCQlyZXR1cm4gc2Vzc2lvbmRhdGE7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW3N0YXJ0c2Vzc2lvbl06ICIsIGV4Mik7CisJCX0KKworCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgU2Vzc2lvbmRhdGEgZ2V0U2Vzc2lvbkJ5SGFzaChTdHJpbmcgU0lEKSB7CisJCXRyeSB7CisJCQlsb2cuZGVidWcoInVwZGF0ZVVzZXIgVXNlciBTSUQ6ICIgKyBTSUQpOworCisJCQlDcml0ZXJpYUJ1aWxkZXIgY2IgPSBlbS5nZXRDcml0ZXJpYUJ1aWxkZXIoKTsKKwkJCUNyaXRlcmlhUXVlcnk8U2Vzc2lvbmRhdGE+IGNxID0gY2IuY3JlYXRlUXVlcnkoU2Vzc2lvbmRhdGEuY2xhc3MpOworCQkJUm9vdDxTZXNzaW9uZGF0YT4gYyA9IGNxLmZyb20oU2Vzc2lvbmRhdGEuY2xhc3MpOworCQkJUHJlZGljYXRlIGNvbmRpdGlvbiA9IGNiLmVxdWFsKGMuZ2V0KCJzZXNzaW9uX2lkIiksIFNJRCk7CisJCQljcS53aGVyZShjb25kaXRpb24pOworCisJCQlUeXBlZFF1ZXJ5PFNlc3Npb25kYXRhPiBxID0gZW0uY3JlYXRlUXVlcnkoY3EpOworCisJCQlMaXN0PFNlc3Npb25kYXRhPiBmdWxsTGlzdCA9IHEuZ2V0UmVzdWx0TGlzdCgpOworCQkJaWYgKGZ1bGxMaXN0LnNpemUoKSA9PSAwKSB7CisJCQkJbG9nLmVycm9yKCJDb3VsZCBub3QgZmluZCBzZXNzaW9uIHRvIHVwZGF0ZTogIiArIFNJRCk7CisJCQkJcmV0dXJuIG51bGw7CisJCQl9CisKKwkJCVNlc3Npb25kYXRhIHNkID0gZnVsbExpc3QuZ2V0KDApOworCisJCQlyZXR1cm4gc2Q7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW3VwZGF0ZVVzZXJdOiAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCS8qKgorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiBAcmV0dXJuCisJICovCisJcHVibGljIExvbmcgY2hlY2tTZXNzaW9uKFN0cmluZyBTSUQpIHsKKwkJdHJ5IHsKKwkJCVR5cGVkUXVlcnk8U2Vzc2lvbmRhdGE+IHF1ZXJ5ID0gZW0uY3JlYXRlTmFtZWRRdWVyeSgiZ2V0U2Vzc2lvbkJ5SWQiLCBTZXNzaW9uZGF0YS5jbGFzcyk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInNlc3Npb25faWQiLCBTSUQpOworCQkJTGlzdDxTZXNzaW9uZGF0YT4gc2Vzc2lvbnMgPSBxdWVyeS5nZXRSZXN1bHRMaXN0KCk7CisKKwkJCVNlc3Npb25kYXRhIHNlc3Npb25kYXRhID0gbnVsbDsKKwkJCWlmIChzZXNzaW9ucyAhPSBudWxsICYmIHNlc3Npb25zLnNpemUoKSA+IDApIHsKKwkJCQlzZXNzaW9uZGF0YSA9IHNlc3Npb25zLmdldCgwKTsKKwkJCX0KKworCQkJLy8gVXBkYXRlIHRoZSBTZXNzaW9uIE9iamVjdAorCQkJaWYgKHNlc3Npb25kYXRhICE9IG51bGwpCisJCQkJdXBkYXRlc2Vzc2lvbihTSUQpOworCisJCQkvLyBDaGVja3MgaWYgd2V0aGVyIHRoZSBTZXNzaW9uIG9yIHRoZSBVc2VyIE9iamVjdCBvZiB0aGF0IFNlc3Npb24KKwkJCS8vIGlzIHNldCB5ZXQKKwkJCWlmIChzZXNzaW9uZGF0YSA9PSBudWxsIHx8IHNlc3Npb25kYXRhLmdldFVzZXJfaWQoKSA9PSBudWxsCisJCQkJCXx8IHNlc3Npb25kYXRhLmdldFVzZXJfaWQoKS5lcXVhbHMobmV3IExvbmcoMCkpKSB7CisJCQkJcmV0dXJuIG5ldyBMb25nKDApOworCQkJfSBlbHNlIHsKKwkJCQlyZXR1cm4gc2Vzc2lvbmRhdGEuZ2V0VXNlcl9pZCgpOworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIltjaGVja1Nlc3Npb25dOiAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCS8qKgorCSAqIHVwZGF0ZSB0aGUgc2Vzc2lvbiBvZiBhIHVzZXIgd2l0aCBhIG5ldyB1c2VyIGlkIHRoaXMgaXMgbmVlZGVkIHRvIHNlZSBpZgorCSAqIHRoZSBzZXNzaW9uIGlzIGxvZ2dlZGluCisJICogCisJICogQHBhcmFtIFNJRAorCSAqIEBwYXJhbSBVU0VSX0lECisJICovCisJcHVibGljIEJvb2xlYW4gdXBkYXRlVXNlcihTdHJpbmcgU0lELCBsb25nIFVTRVJfSUQpIHsKKwkJdHJ5IHsKKwkJCWxvZy5kZWJ1ZygidXBkYXRlVXNlciBVc2VyOiAiICsgVVNFUl9JRCArICIgfHwgIiArIFNJRCk7CisKKwkJCVR5cGVkUXVlcnk8U2Vzc2lvbmRhdGE+IHF1ZXJ5ID0gZW0uY3JlYXRlTmFtZWRRdWVyeSgiZ2V0U2Vzc2lvbkJ5SWQiLCBTZXNzaW9uZGF0YS5jbGFzcyk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInNlc3Npb25faWQiLCBTSUQpOworCisJCQlMaXN0PFNlc3Npb25kYXRhPiBzZXNzaW9ucyA9IHF1ZXJ5LmdldFJlc3VsdExpc3QoKTsKKworCQkJU2Vzc2lvbmRhdGEgc2Vzc2lvbmRhdGEgPSBudWxsOworCQkJaWYgKHNlc3Npb25zICE9IG51bGwgJiYgc2Vzc2lvbnMuc2l6ZSgpID4gMCkgeworCQkJCXNlc3Npb25kYXRhID0gc2Vzc2lvbnMuZ2V0KDApOworCQkJfQorCisJCQlpZiAoc2Vzc2lvbmRhdGEgPT0gbnVsbCkgeworCQkJCWxvZy5lcnJvcigiQ291bGQgbm90IGZpbmQgc2Vzc2lvbiB0byBVcGRhdGUiKTsKKwkJCQlyZXR1cm4gZmFsc2U7CisJCQl9CisJCQlsb2cuZGVidWcoIkZvdW5kIHNlc3Npb24gdG8gdXBkYXRlOiAiICsgc2Vzc2lvbmRhdGEuZ2V0U2Vzc2lvbl9pZCgpCisJCQkJCSsgIiB1c2VySWQ6ICIgKyBVU0VSX0lEKTsKKworCQkJc2Vzc2lvbmRhdGEuc2V0UmVmcmVzaF90aW1lKG5ldyBEYXRlKCkpOworCQkJc2Vzc2lvbmRhdGEuc2V0VXNlcl9pZChVU0VSX0lEKTsKKwkJCWlmIChzZXNzaW9uZGF0YS5nZXRJZCgpID09IG51bGwpIHsKKwkJCQllbS5wZXJzaXN0KHNlc3Npb25kYXRhKTsKKwkJCX0gZWxzZSB7CisJCQkJaWYgKCFlbS5jb250YWlucyhzZXNzaW9uZGF0YSkpIHsKKwkJCQkJZW0ubWVyZ2Uoc2Vzc2lvbmRhdGEpOworCQkJCX0KKwkJCX0KKwkJCXJldHVybiB0cnVlOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIlt1cGRhdGVVc2VyXTogIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgQm9vbGVhbiB1cGRhdGVVc2VyKFN0cmluZyBTSUQsIGxvbmcgVVNFUl9JRCwgYm9vbGVhbiBzdG9yZVBlcm1hbmVudCwKKwkJCUxvbmcgbGFuZ3VhZ2VfaWQpIHsKKwkJdHJ5IHsKKwkJCWxvZy5kZWJ1ZygidXBkYXRlVXNlciBVc2VyOiAiICsgVVNFUl9JRCArICIgfHwgIiArIFNJRCk7CisJCQlUeXBlZFF1ZXJ5PFNlc3Npb25kYXRhPiBxdWVyeSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoImdldFNlc3Npb25CeUlkIiwgU2Vzc2lvbmRhdGEuY2xhc3MpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJzZXNzaW9uX2lkIiwgU0lEKTsKKworCQkJTGlzdDxTZXNzaW9uZGF0YT4gc2Vzc2lvbnMgPSBxdWVyeS5nZXRSZXN1bHRMaXN0KCk7CisKKwkJCVNlc3Npb25kYXRhIHNlc3Npb25kYXRhID0gbnVsbDsKKwkJCWlmIChzZXNzaW9ucyAhPSBudWxsICYmIHNlc3Npb25zLnNpemUoKSA+IDApIHsKKwkJCQlzZXNzaW9uZGF0YSA9IHNlc3Npb25zLmdldCgwKTsKKwkJCX0KKworCQkJaWYgKHNlc3Npb25kYXRhID09IG51bGwpIHsKKwkJCQlsb2cuZXJyb3IoIkNvdWxkIG5vdCBmaW5kIHNlc3Npb24gdG8gVXBkYXRlIik7CisJCQkJcmV0dXJuIGZhbHNlOworCQkJfQorCQkJbG9nLmRlYnVnKCJGb3VuZCBzZXNzaW9uIHRvIHVwZGF0ZTogIiArIHNlc3Npb25kYXRhLmdldFNlc3Npb25faWQoKQorCQkJCQkrICIgdXNlcklkOiAiICsgVVNFUl9JRCk7CisKKwkJCXNlc3Npb25kYXRhLnNldFJlZnJlc2hfdGltZShuZXcgRGF0ZSgpKTsKKwkJCXNlc3Npb25kYXRhLnNldFVzZXJfaWQoVVNFUl9JRCk7CisJCQlpZiAoc3RvcmVQZXJtYW5lbnQpIHsKKwkJCQlzZXNzaW9uZGF0YS5zZXRTdG9yZVBlcm1hbmVudChzdG9yZVBlcm1hbmVudCk7CisJCQl9CisJCQlzZXNzaW9uZGF0YS5zZXRMYW5ndWFnZV9pZChsYW5ndWFnZV9pZCk7CisJCQlpZiAoc2Vzc2lvbmRhdGEuZ2V0SWQoKSA9PSBudWxsKSB7CisJCQkJZW0ucGVyc2lzdChzZXNzaW9uZGF0YSk7CisJCQl9IGVsc2UgeworCQkJCWlmICghZW0uY29udGFpbnMoc2Vzc2lvbmRhdGEpKSB7CisJCQkJCWVtLm1lcmdlKHNlc3Npb25kYXRhKTsKKwkJCQl9CisJCQl9CisKKwkJCS8vIGxvZy5kZWJ1Zygic2Vzc2lvbiB1cGRhdGVkIFVzZXI6ICIrVVNFUl9JRCk7CisJCQlyZXR1cm4gdHJ1ZTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbdXBkYXRlVXNlcl06ICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIEJvb2xlYW4gdXBkYXRlVXNlck9yZyhTdHJpbmcgU0lELCBMb25nIG9yZ2FuaXphdGlvbl9pZCkgeworCQl0cnkgeworCQkJbG9nLmRlYnVnKCJ1cGRhdGVVc2VyT3JnIFVzZXI6ICIgKyBvcmdhbml6YXRpb25faWQgKyAiIHx8ICIgKyBTSUQpOworCQkJVHlwZWRRdWVyeTxTZXNzaW9uZGF0YT4gcXVlcnkgPSBlbS5jcmVhdGVOYW1lZFF1ZXJ5KCJnZXRTZXNzaW9uQnlJZCIsIFNlc3Npb25kYXRhLmNsYXNzKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigic2Vzc2lvbl9pZCIsIFNJRCk7CisKKwkJCUxpc3Q8U2Vzc2lvbmRhdGE+IHNlc3Npb25zID0gcXVlcnkuZ2V0UmVzdWx0TGlzdCgpOworCisJCQlTZXNzaW9uZGF0YSBzZXNzaW9uZGF0YSA9IG51bGw7CisJCQlpZiAoc2Vzc2lvbnMgIT0gbnVsbCAmJiBzZXNzaW9ucy5zaXplKCkgPiAwKSB7CisJCQkJc2Vzc2lvbmRhdGEgPSBzZXNzaW9ucy5nZXQoMCk7CisJCQl9CisKKwkJCWlmIChzZXNzaW9uZGF0YSA9PSBudWxsKSB7CisJCQkJbG9nLmVycm9yKCJDb3VsZCBub3QgZmluZCBzZXNzaW9uIHRvIFVwZGF0ZSIpOworCQkJCXJldHVybiBmYWxzZTsKKwkJCX0KKwkJCWxvZy5kZWJ1ZygiRm91bmQgc2Vzc2lvbiB0byB1cGRhdGU6ICIgKyBzZXNzaW9uZGF0YS5nZXRTZXNzaW9uX2lkKCkKKwkJCQkJKyAiIG9yZ2FuaXNhdGlvbl9pZDogIiArIG9yZ2FuaXphdGlvbl9pZCk7CisKKwkJCXNlc3Npb25kYXRhLnNldFJlZnJlc2hfdGltZShuZXcgRGF0ZSgpKTsKKwkJCXNlc3Npb25kYXRhLnNldE9yZ2FuaXphdGlvbl9pZChvcmdhbml6YXRpb25faWQpOworCQkJaWYgKHNlc3Npb25kYXRhLmdldElkKCkgPT0gbnVsbCkgeworCQkJCWVtLnBlcnNpc3Qoc2Vzc2lvbmRhdGEpOworCQkJfSBlbHNlIHsKKwkJCQlpZiAoIWVtLmNvbnRhaW5zKHNlc3Npb25kYXRhKSkgeworCQkJCQllbS5tZXJnZShzZXNzaW9uZGF0YSk7CisJCQkJfQorCQkJfQorCQkJcmV0dXJuIHRydWU7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW3VwZGF0ZVVzZXJdOiAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBCb29sZWFuIHVwZGF0ZVVzZXJXaXRob3V0U2Vzc2lvbihTdHJpbmcgU0lELCBMb25nIFVTRVJfSUQpIHsKKwkJdHJ5IHsKKwkJCWxvZy5kZWJ1ZygidXBkYXRlVXNlciBVc2VyOiAiICsgVVNFUl9JRCArICIgfHwgIiArIFNJRCk7CisJCQlUeXBlZFF1ZXJ5PFNlc3Npb25kYXRhPiBxdWVyeSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoImdldFNlc3Npb25CeUlkIiwgU2Vzc2lvbmRhdGEuY2xhc3MpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJzZXNzaW9uX2lkIiwgU0lEKTsKKworCQkJTGlzdDxTZXNzaW9uZGF0YT4gc2Vzc2lvbnMgPSBxdWVyeS5nZXRSZXN1bHRMaXN0KCk7CisKKwkJCVNlc3Npb25kYXRhIHNlc3Npb25kYXRhID0gbnVsbDsKKwkJCWlmIChzZXNzaW9ucyAhPSBudWxsICYmIHNlc3Npb25zLnNpemUoKSA+IDApIHsKKwkJCQlzZXNzaW9uZGF0YSA9IHNlc3Npb25zLmdldCgwKTsKKwkJCX0KKworCQkJaWYgKHNlc3Npb25kYXRhID09IG51bGwpIHsKKwkJCQlsb2cuZXJyb3IoIkNvdWxkIG5vdCBmaW5kIHNlc3Npb24gdG8gVXBkYXRlIik7CisJCQkJcmV0dXJuIGZhbHNlOworCQkJfQorCQkJbG9nLmRlYnVnKCJGb3VuZCBzZXNzaW9uIHRvIHVwZGF0ZTogIiArIHNlc3Npb25kYXRhLmdldFNlc3Npb25faWQoKQorCQkJCQkrICIgdXNlcklkOiAiICsgVVNFUl9JRCk7CisKKwkJCXNlc3Npb25kYXRhLnNldFJlZnJlc2hfdGltZShuZXcgRGF0ZSgpKTsKKwkJCXNlc3Npb25kYXRhLnNldFVzZXJfaWQoVVNFUl9JRCk7CisJCQlpZiAoc2Vzc2lvbmRhdGEuZ2V0SWQoKSA9PSBudWxsKSB7CisJCQkJZW0ucGVyc2lzdChzZXNzaW9uZGF0YSk7CisJCQl9IGVsc2UgeworCQkJCWlmICghZW0uY29udGFpbnMoc2Vzc2lvbmRhdGEpKSB7CisJCQkJCWVtLm1lcmdlKHNlc3Npb25kYXRhKTsKKwkJCQl9CisJCQl9CisJCQlyZXR1cm4gdHJ1ZTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbdXBkYXRlVXNlcl06ICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIEJvb2xlYW4gdXBkYXRlVXNlclJlbW90ZVNlc3Npb24oU3RyaW5nIFNJRCwgU3RyaW5nIHNlc3Npb25YbWwpIHsKKwkJdHJ5IHsKKwkJCWxvZy5kZWJ1ZygidXBkYXRlVXNlciBVc2VyIFNJRDogIiArIFNJRCk7CisKKwkJCUNyaXRlcmlhQnVpbGRlciBjYiA9IGVtLmdldENyaXRlcmlhQnVpbGRlcigpOworCQkJQ3JpdGVyaWFRdWVyeTxTZXNzaW9uZGF0YT4gY3EgPSBjYi5jcmVhdGVRdWVyeShTZXNzaW9uZGF0YS5jbGFzcyk7CisJCQlSb290PFNlc3Npb25kYXRhPiBjID0gY3EuZnJvbShTZXNzaW9uZGF0YS5jbGFzcyk7CisJCQlQcmVkaWNhdGUgY29uZGl0aW9uID0gY2IuZXF1YWwoYy5nZXQoInNlc3Npb25faWQiKSwgU0lEKTsKKwkJCWNxLndoZXJlKGNvbmRpdGlvbik7CisKKwkJCVR5cGVkUXVlcnk8U2Vzc2lvbmRhdGE+IHEgPSBlbS5jcmVhdGVRdWVyeShjcSk7CisJCQlMaXN0PFNlc3Npb25kYXRhPiBmdWxsTGlzdCA9IHEuZ2V0UmVzdWx0TGlzdCgpOworCisJCQlpZiAoZnVsbExpc3Quc2l6ZSgpID09IDApIHsKKwkJCQlsb2cuZXJyb3IoIkNvdWxkIG5vdCBmaW5kIHNlc3Npb24gdG8gdXBkYXRlOiAiICsgU0lEKTsKKwkJCQlyZXR1cm4gZmFsc2U7CisJCQl9IGVsc2UgeworCQkJCS8vIGxvZy5lcnJvcigiRm91bmQgc2Vzc2lvbiB0byB1cGRhdGU6ICIrU0lEKTsKKwkJCX0KKwkJCVNlc3Npb25kYXRhIHNkID0gZnVsbExpc3QuZ2V0KDApOworCQkJc2Quc2V0UmVmcmVzaF90aW1lKG5ldyBEYXRlKCkpOworCQkJc2Quc2V0U2Vzc2lvblhtbChzZXNzaW9uWG1sKTsKKworCQkJaWYgKHNkLmdldElkKCkgPT0gbnVsbCkgeworCQkJCWVtLnBlcnNpc3Qoc2QpOworCQkJfSBlbHNlIHsKKwkJCQlpZiAoIWVtLmNvbnRhaW5zKHNkKSkgeworCQkJCQllbS5tZXJnZShzZCk7CisJCQkJfQorCQkJfQorCQkJcmV0dXJuIHRydWU7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW3VwZGF0ZVVzZXJSZW1vdGVTZXNzaW9uXTogIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvKioKKwkgKiB1cGRhdGUgdGhlIHNlc3Npb24gZXZlcnkgdGltZSBhIHVzZXIgbWFrZXMgYSByZXF1ZXN0CisJICogCisJICogQHBhcmFtIFNJRAorCSAqLworCXByaXZhdGUgdm9pZCB1cGRhdGVzZXNzaW9uKFN0cmluZyBTSUQpIHsKKwkJdHJ5IHsKKwkJCUNyaXRlcmlhQnVpbGRlciBjYiA9IGVtLmdldENyaXRlcmlhQnVpbGRlcigpOworCQkJQ3JpdGVyaWFRdWVyeTxTZXNzaW9uZGF0YT4gY3EgPSBjYi5jcmVhdGVRdWVyeShTZXNzaW9uZGF0YS5jbGFzcyk7CisJCQlSb290PFNlc3Npb25kYXRhPiBjID0gY3EuZnJvbShTZXNzaW9uZGF0YS5jbGFzcyk7CisJCQlQcmVkaWNhdGUgY29uZGl0aW9uID0gY2IuZXF1YWwoYy5nZXQoInNlc3Npb25faWQiKSwgU0lEKTsKKwkJCWNxLndoZXJlKGNvbmRpdGlvbik7CisKKwkJCVR5cGVkUXVlcnk8U2Vzc2lvbmRhdGE+IHEgPSBlbS5jcmVhdGVRdWVyeShjcSk7CisKKwkJCUxpc3Q8U2Vzc2lvbmRhdGE+IGZ1bGxMaXN0ID0gcS5nZXRSZXN1bHRMaXN0KCk7CisJCQlpZiAoZnVsbExpc3Quc2l6ZSgpID09IDApIHsKKwkJCQlsb2cuZXJyb3IoIkZvdW5kIE5PIHNlc3Npb24gdG8gdXBkYXRlU2Vzc2lvbjogIik7CisKKwkJCX0gZWxzZSB7CisJCQkJLy8gbG9nLmRlYnVnKCJGb3VuZCBzZXNzaW9uIHRvIHVwZGF0ZVNlc3Npb246ICIpOworCQkJCVNlc3Npb25kYXRhIHNkID0gZnVsbExpc3QuaXRlcmF0b3IoKS5uZXh0KCk7CisJCQkJLy8gbG9nLmRlYnVnKCJGb3VuZCBzZXNzaW9uIHRvIHVwZGF0ZVNlc3Npb24gc2QgIitzZC5nZXRVc2VyX2lkKCkrIiAiK3NkLmdldFNlc3Npb25faWQoKSk7CisJCQkJc2Quc2V0UmVmcmVzaF90aW1lKG5ldyBEYXRlKCkpOworCisJCQkJaWYgKHNkLmdldElkKCkgPT0gbnVsbCkgeworCQkJCQllbS5wZXJzaXN0KHNkKTsKKwkJCQl9IGVsc2UgeworCQkJCQlpZiAoIWVtLmNvbnRhaW5zKHNkKSkgeworCQkJCQkJZW0ubWVyZ2Uoc2QpOworCQkJCQl9CisJCQkJfQorCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW3VwZGF0ZXNlc3Npb25dOiAiLCBleDIpOworCQl9CisJfQorCisJLyoqCisJICogCisJICogQHBhcmFtIGRhdGUKKwkgKiBAcmV0dXJuCisJICovCisJcHJpdmF0ZSBMaXN0PFNlc3Npb25kYXRhPiBnZXRTZXNzaW9uVG9EZWxldGUoRGF0ZSByZWZyZXNoX3RpbWUpIHsKKwkJdHJ5IHsKKwkJCVR5cGVkUXVlcnk8U2Vzc2lvbmRhdGE+IHF1ZXJ5ID0gZW0uY3JlYXRlTmFtZWRRdWVyeSgiZ2V0U2Vzc2lvblRvRGVsZXRlIiwgU2Vzc2lvbmRhdGEuY2xhc3MpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJyZWZyZXNoX3RpbWUiLCByZWZyZXNoX3RpbWUpOworCQkJcmV0dXJuIHF1ZXJ5LmdldFJlc3VsdExpc3QoKTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZ2V0U2Vzc2lvblRvRGVsZXRlXTogIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvKioKKwkgKiAKKwkgKgorCSAqLworCXB1YmxpYyB2b2lkIGNsZWFyU2Vzc2lvblRhYmxlKCkgeworCQl0cnkgeworCQkJbG9nLmRlYnVnKCIqKioqKiogY2xlYXJTZXNzaW9uVGFibGU6ICIpOworCQkJQ2FsZW5kYXIgcmlnaHROb3cgPSBDYWxlbmRhci5nZXRJbnN0YW5jZSgpOworCQkJcmlnaHROb3cuc2V0VGltZUluTWlsbGlzKHJpZ2h0Tm93LmdldFRpbWVJbk1pbGxpcygpIC0gMTgwMDAwMCk7CisJCQlMaXN0PFNlc3Npb25kYXRhPiBsID0gdGhpcy5nZXRTZXNzaW9uVG9EZWxldGUocmlnaHROb3cuZ2V0VGltZSgpKTsKKwkJCWxvZy5kZWJ1ZygiY2xlYXJTZXNzaW9uVGFibGU6ICIgKyBsLnNpemUoKSk7CisJCQlmb3IgKEl0ZXJhdG9yPFNlc3Npb25kYXRhPiBpdCA9IGwuaXRlcmF0b3IoKTsgaXQuaGFzTmV4dCgpOykgeworCQkJCVNlc3Npb25kYXRhIHNEYXRhID0gaXQubmV4dCgpOworCQkJCXNEYXRhID0gZW0uZmluZChTZXNzaW9uZGF0YS5jbGFzcywgc0RhdGEuZ2V0SWQoKSk7CisJCQkJZW0ucmVtb3ZlKHNEYXRhKTsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJjbGVhclNlc3Npb25UYWJsZSIsIGVycik7CisJCX0KKwl9CisKKwkvKioKKwkgKiBAcGFyYW0gcm9vbV9pZAorCSAqLworCXB1YmxpYyB2b2lkIGNsZWFyU2Vzc2lvbkJ5Um9vbUlkKExvbmcgcm9vbV9pZCkgeworCQl0cnkgeworCQkJZm9yIChDbGllbnQgcmNsIDogc2Vzc2lvbk1hbmFnZXIuZ2V0Q2xpZW50TGlzdEJ5Um9vbShyb29tX2lkKSkgeworCQkJCVN0cmluZyBhdXggPSByY2wuZ2V0U3dmdXJsKCk7CisKKwkJCQlpbnQgaW5pdF9wb3MgPSBhdXguaW5kZXhPZigic2lkPSIpICsgNDsKKwkJCQlpbnQgZW5kX3BvcyA9IGluaXRfcG9zICsgMzI7CisJCQkJaWYgKGVuZF9wb3MgPiBhdXgubGVuZ3RoKCkpCisJCQkJCWVuZF9wb3MgPSBhdXgubGVuZ3RoKCk7CisJCQkJU3RyaW5nIFNJRCA9IGF1eC5zdWJzdHJpbmcoaW5pdF9wb3MsIGVuZF9wb3MpOworCisJCQkJU2Vzc2lvbmRhdGEgc0RhdGEgPSB0aGlzLmdldFNlc3Npb25CeUhhc2goU0lEKTsKKworCQkJCXNEYXRhID0gZW0uZmluZChTZXNzaW9uZGF0YS5jbGFzcywgc0RhdGEuZ2V0SWQoKSk7CisJCQkJZW0ucmVtb3ZlKHNEYXRhKTsKKwkJCX0KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoImNsZWFyU2Vzc2lvbkJ5Um9vbUlkIiwgZXJyKTsKKwkJfQorCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2Jhc2ljL2Rhby9Db25maWd1cmF0aW9uRGFvLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9iYXNpYy9kYW8vQ29uZmlndXJhdGlvbkRhby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllNDUxNzAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9iYXNpYy9kYW8vQ29uZmlndXJhdGlvbkRhby5qYXZhCkBAIC0wLDAgKzEsNDA1IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuZGFvOworCitpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuQ29uc3RydWN0b3I7CitpbXBvcnQgamF2YS51dGlsLkFycmF5czsKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuTGlua2VkSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworaW1wb3J0IGphdmF4LmFubm90YXRpb24uUmVzb3VyY2U7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5TWFuYWdlcjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5QZXJzaXN0ZW5jZUNvbnRleHQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuUGVyc2lzdGVuY2VFeGNlcHRpb247CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVHlwZWRRdWVyeTsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLklEYXRhUHJvdmlkZXJEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iZWFucy5iYXNpYy5TZWFyY2hSZXN1bHQ7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLmRhby5Vc2Vyc0RhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5Db25maWd1cmF0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnJlbW90ZS5yZWQ1LlNjb3BlQXBwbGljYXRpb25BZGFwdGVyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLkRhb0hlbHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5tYXBwaW5ncy5DYXN0TWFwVG9PYmplY3Q7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsudHJhbnNhY3Rpb24uYW5ub3RhdGlvbi5UcmFuc2FjdGlvbmFsOworCisvKioKKyAqIEluc2VydC91cGRhdGUvRGVsZXRlIG9uIHtAbGluayBDb25maWd1cmF0aW9ufTxici8+CisgKiA8YnIvPgorICogSXQgcHJvdmlkZXMgYmFzaWMgbWVjaGFuaXNtIHRvIGdldCBhIENvbmYgS2V5Ojxici8+CisgKiB7QGxpbmsgI2dldENvbmZWYWx1ZShTdHJpbmcsIENsYXNzLCBTdHJpbmcpfSA8YnIvPgorICogPGJyLz4KKyAqIDxiPiB7QGxpbmsgI2dldChTdHJpbmcpfSBpcyBkZXByZWNhdGVkITwvYj4KKyAqIAorICogQGF1dGhvciBzd2FnbmVyCisgKiAKKyAqLworQFRyYW5zYWN0aW9uYWwKK3B1YmxpYyBjbGFzcyBDb25maWd1cmF0aW9uRGFvIGltcGxlbWVudHMgSURhdGFQcm92aWRlckRhbzxDb25maWd1cmF0aW9uPiB7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcigKKwkJCUNvbmZpZ3VyYXRpb25EYW8uY2xhc3MsIE9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBERUZBVUxUX0FQUF9OQU1FID0gIk9wZW5NZWV0aW5ncyI7CisJcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmdbXSBzZWFyY2hGaWVsZHMgPSB7ImNvbmZfa2V5IiwgImNvbmZfdmFsdWUifTsKKworCUBQZXJzaXN0ZW5jZUNvbnRleHQKKwlwcml2YXRlIEVudGl0eU1hbmFnZXIgZW07CisKKwlAUmVzb3VyY2UobmFtZSA9ICJ1c2Vyc0RhbyIpCisJcHJpdmF0ZSBVc2Vyc0RhbyB1c2Vyc0RhbzsKKworCS8qKgorCSAqIEBkZXByZWNhdGVkIERhbydzIGFyZSBub3QgdGhlIHBsYWNlIHRvIHN0b3JlIHNlc3Npb24gdmFyaWFibGVzLCBhbHNvCisJICogICAgICAgICAgICAgdXBkYXRlcyB0byB0aGUga2V5IHdvbid0IHVwZGF0ZSB0aGlzIHZhcmlhYmxlCisJICovCisJQERlcHJlY2F0ZWQKKwlwcml2YXRlIFN0cmluZyBhcHBOYW1lID0gbnVsbDsKKworCS8qKgorCSAqIEBwYXJhbSBjb25mS2V5CisJICogQHJldHVybgorCSAqLworCXB1YmxpYyBDb25maWd1cmF0aW9uIGdldChTdHJpbmcgY29uZktleSkgeworCQl0cnkgeworCQkJVHlwZWRRdWVyeTxDb25maWd1cmF0aW9uPiBxdWVyeSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoCisJCQkJCSJnZXRDb25maWd1cmF0aW9uQnlLZXkiLCBDb25maWd1cmF0aW9uLmNsYXNzKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiY29uZl9rZXkiLCBjb25mS2V5KTsKKworCQkJTGlzdDxDb25maWd1cmF0aW9uPiBjb25maWdzID0gcXVlcnkuZ2V0UmVzdWx0TGlzdCgpOworCisJCQlpZiAoY29uZmlncyAhPSBudWxsICYmIGNvbmZpZ3Muc2l6ZSgpID4gMCkgeworCQkJCXJldHVybiBjb25maWdzLmdldCgwKTsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZ2V0Q29uZktleV06ICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIExpc3Q8Q29uZmlndXJhdGlvbj4gZ2V0Q29uZktleXMoU3RyaW5nLi4uIGtleXMpIHsKKwkJdHJ5IHsKKwkJCVR5cGVkUXVlcnk8Q29uZmlndXJhdGlvbj4gcXVlcnkgPSBlbS5jcmVhdGVOYW1lZFF1ZXJ5KAorCQkJCQkiZ2V0Q29uZmlndXJhdGlvbnNCeUtleXMiLCBDb25maWd1cmF0aW9uLmNsYXNzKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiY29uZl9rZXlzIiwgQXJyYXlzLmFzTGlzdChrZXlzKSk7CisKKwkJCXJldHVybiBxdWVyeS5nZXRSZXN1bHRMaXN0KCk7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldENvbmZLZXldOiAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCS8qKgorCSAqIFJldHVybiBhIG9iamVjdCB1c2luZyBhIGN1c3RvbSB0eXBlIGFuZCBhIGRlZmF1bHQgdmFsdWUgaWYgdGhlIGtleSBpcyBub3QKKwkgKiBwcmVzZW50CisJICogCisJICogRXhhbXBsZTogSW50ZWdlciBteV9rZXkgPSBnZXRDb25mVmFsdWUoIm15X2tleSIsIEludGVnZXIuY2xhc3MsICIxNSIpOworCSAqIAorCSAqIEBwYXJhbSBjb25mS2V5CisJICogQHBhcmFtIHR5cGVPYmplY3QKKwkgKiBAcGFyYW0gZGVmYXVsdFZhbHVlCisJICogQHJldHVybgorCSAqLworCXB1YmxpYyA8VD4gVCBnZXRDb25mVmFsdWUoU3RyaW5nIGNvbmZLZXksIENsYXNzPFQ+IHR5cGVPYmplY3QsCisJCQlTdHJpbmcgZGVmYXVsdFZhbHVlKSB7CisJCXRyeSB7CisJCQlDb25maWd1cmF0aW9uIGNvbmZfcmVtaW5kZXIgPSBnZXQoY29uZktleSk7CisKKwkJCWlmIChjb25mX3JlbWluZGVyID09IG51bGwpIHsKKwkJCQlsb2cud2FybigiQ291bGQgbm90IGZpbmQga2V5IGluIGNvbmZpZ3VyYXRpb24gQ09ORl9LRVk6ICIgKyBjb25mS2V5KTsKKwkJCQlpZiAoZGVmYXVsdFZhbHVlID09IG51bGwpIHsKKwkJCQkJcmV0dXJuIG51bGw7CisJCQkJfQorCQkJfSBlbHNlIHsKKwkJCQkvLyBVc2UgdGhlIGN1c3RvbSB2YWx1ZSBhcyBkZWZhdWx0IHZhbHVlCisJCQkJZGVmYXVsdFZhbHVlID0gY29uZl9yZW1pbmRlci5nZXRDb25mX3ZhbHVlKCk7CisJCQl9CisKKwkJCS8vIEVpdGhlciB0aGlzIGNhbiBiZSBkaXJlY3RseSBhc3NpZ25lZCBvciB0cnkgdG8gZmluZCBhIGNvbnN0cnVjdG9yCisJCQkvLyB0aGF0IGhhbmRsZXMgaXQKKwkJCWlmICh0eXBlT2JqZWN0LmlzQXNzaWduYWJsZUZyb20oZGVmYXVsdFZhbHVlLmdldENsYXNzKCkpKSB7CisJCQkJcmV0dXJuIHR5cGVPYmplY3QuY2FzdChkZWZhdWx0VmFsdWUpOworCQkJfQorCQkJQ29uc3RydWN0b3I8VD4gYyA9IHR5cGVPYmplY3QuZ2V0Q29uc3RydWN0b3IoZGVmYXVsdFZhbHVlCisJCQkJCS5nZXRDbGFzcygpKTsKKwkJCXJldHVybiBjLm5ld0luc3RhbmNlKGRlZmF1bHRWYWx1ZSk7CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKAorCQkJCQkiY2Fubm90IGJlIGNhc3QgdG8gcmV0dXJuIHR5cGUsIHlvdSBoYXZlIG1pc2NvbmZpZ3VyZWQgeW91ciBjb25maWd1cmF0aW9uIENPTkZfS0VZOiAiCisJCQkJCQkJKyBjb25mS2V5LCBlcnIpOworCQkJcmV0dXJuIG51bGw7CisJCX0KKwl9CisKKwlwdWJsaWMgU2VhcmNoUmVzdWx0PENvbmZpZ3VyYXRpb24+IGdldEFsbENvbmYoaW50IHN0YXJ0LCBpbnQgbWF4LAorCQkJU3RyaW5nIG9yZGVyYnksIGJvb2xlYW4gYXNjKSB7CisJCXRyeSB7CisJCQlTZWFyY2hSZXN1bHQ8Q29uZmlndXJhdGlvbj4gc3Jlc3VsdCA9IG5ldyBTZWFyY2hSZXN1bHQ8Q29uZmlndXJhdGlvbj4oKTsKKwkJCXNyZXN1bHQuc2V0UmVjb3Jkcyh0aGlzLnNlbGVjdE1heEZyb21Db25maWd1cmF0aW9ucygpKTsKKwkJCXNyZXN1bHQuc2V0UmVzdWx0KHRoaXMuZ2V0Q29uZmlndXJhdGlvbnMoc3RhcnQsIG1heCwgb3JkZXJieSwgYXNjKSk7CisJCQlzcmVzdWx0LnNldE9iamVjdE5hbWUoQ29uZmlndXJhdGlvbi5jbGFzcy5nZXROYW1lKCkpOworCQkJcmV0dXJuIHNyZXN1bHQ7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldEFsbENvbmZdOiAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMaXN0PENvbmZpZ3VyYXRpb24+IGdldENvbmZpZ3VyYXRpb25zKGludCBzdGFydCwgaW50IG1heCwKKwkJCVN0cmluZyBvcmRlcmJ5LCBib29sZWFuIGFzYykgeworCQl0cnkgeworCisJCQlTdHJpbmcgcXVlcnkgPSAiU0VMRUNUIGMgRlJPTSBDb25maWd1cmF0aW9uIGMgIiAvLworCQkJCQkrICJMRUZUIEpPSU4gRkVUQ0ggYy51c2VyICIgLy8KKwkJCQkJKyAiV0hFUkUgYy5kZWxldGVkID0gZmFsc2UgIiAvLworCQkJCQkrICJPUkRFUiBCWSAiICsgb3JkZXJieTsKKworCQkJaWYgKGFzYykgeworCQkJCXF1ZXJ5ICs9ICIgQVNDIjsKKwkJCX0gZWxzZSB7CisJCQkJcXVlcnkgKz0gIiBERVNDIjsKKwkJCX0KKworCQkJVHlwZWRRdWVyeTxDb25maWd1cmF0aW9uPiBxID0gZW0uY3JlYXRlUXVlcnkocXVlcnksCisJCQkJCUNvbmZpZ3VyYXRpb24uY2xhc3MpOworCQkJcS5zZXRGaXJzdFJlc3VsdChzdGFydCk7CisJCQlxLnNldE1heFJlc3VsdHMobWF4KTsKKwkJCXJldHVybiBxLmdldFJlc3VsdExpc3QoKTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZ2V0Q29uZmlndXJhdGlvbnNdIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvKioKKwkgKiAKKwkgKiBAcmV0dXJuCisJICovCisJcHVibGljIExvbmcgc2VsZWN0TWF4RnJvbUNvbmZpZ3VyYXRpb25zKCkgeworCQl0cnkgeworCQkJbG9nLmRlYnVnKCJzZWxlY3RNYXhGcm9tQ29uZmlndXJhdGlvbnMgIik7CisJCQkvLyBnZXQgYWxsIHVzZXJzCisJCQlUeXBlZFF1ZXJ5PExvbmc+IHF1ZXJ5ID0gZW0KKwkJCQkJLmNyZWF0ZVF1ZXJ5KAorCQkJCQkJCSJzZWxlY3QgY291bnQoYy5jb25maWd1cmF0aW9uX2lkKSBmcm9tIENvbmZpZ3VyYXRpb24gYyB3aGVyZSBjLmRlbGV0ZWQgPSBmYWxzZSIsCisJCQkJCQkJTG9uZy5jbGFzcyk7CisJCQlMaXN0PExvbmc+IGxsID0gcXVlcnkuZ2V0UmVzdWx0TGlzdCgpOworCQkJbG9nLmRlYnVnKCJzZWxlY3RNYXhGcm9tQ29uZmlndXJhdGlvbnMiICsgbGwuZ2V0KDApKTsKKwkJCXJldHVybiBsbC5nZXQoMCk7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW3NlbGVjdE1heEZyb21Db25maWd1cmF0aW9uc10gIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGFkZENvbmZCeUtleShTdHJpbmcgY29uZktleSwgU3RyaW5nIGNvbmZWYWx1ZSwgTG9uZyB1c2VySWQsCisJCQlTdHJpbmcgY29tbWVudCkgeworCQlTdHJpbmcgcmV0ID0gIkFkZCBDb25maWd1cmF0aW9uIjsKKwkJQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uID0gbmV3IENvbmZpZ3VyYXRpb24oKTsKKwkJY29uZmlndXJhdGlvbi5zZXRDb25mX2tleShjb25mS2V5KTsKKwkJY29uZmlndXJhdGlvbi5zZXRDb25mX3ZhbHVlKGNvbmZWYWx1ZSk7CisJCWNvbmZpZ3VyYXRpb24uc2V0U3RhcnR0aW1lKG5ldyBEYXRlKCkpOworCQljb25maWd1cmF0aW9uLnNldERlbGV0ZWQoZmFsc2UpOworCQljb25maWd1cmF0aW9uLnNldENvbW1lbnQoY29tbWVudCk7CisJCWlmICh1c2VySWQgIT0gbnVsbCkKKwkJCWNvbmZpZ3VyYXRpb24uc2V0VXNlcih1c2Vyc0Rhby5nZXQodXNlcklkKSk7CisJCXRyeSB7CisJCQljb25maWd1cmF0aW9uID0gZW0ubWVyZ2UoY29uZmlndXJhdGlvbik7CisJCQlyZXQgPSAiRXJmb2xncmVpY2giOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIlthZGRDb25mQnlLZXldOiAiLCBleDIpOworCQl9CisJCXJldHVybiByZXQ7CisJfQorCisJcHVibGljIExvbmcgc2F2ZU9yVXBkYXRlQ29uZmlndXJhdGlvbihMaW5rZWRIYXNoTWFwPFN0cmluZywgPz4gdmFsdWVzLAorCQkJTG9uZyB1c2VySWQpIHsKKwkJdHJ5IHsKKwkJCUNvbmZpZ3VyYXRpb24gY29uZiA9IChDb25maWd1cmF0aW9uKSBDYXN0TWFwVG9PYmplY3QuZ2V0SW5zdGFuY2UoKQorCQkJCQkuY2FzdEJ5R2l2ZW5PYmplY3QodmFsdWVzLCBDb25maWd1cmF0aW9uLmNsYXNzKTsKKwkJCWlmIChjb25mLmdldENvbmZpZ3VyYXRpb25faWQoKS5lcXVhbHMobnVsbCkKKwkJCQkJfHwgY29uZi5nZXRDb25maWd1cmF0aW9uX2lkKCkgPT0gMAorCQkJCQl8fCBjb25mLmdldENvbmZpZ3VyYXRpb25faWQoKSA9PSAwTCkgeworCQkJCWNvbmYuc2V0Q29uZmlndXJhdGlvbl9pZChudWxsKTsKKwkJCQljb25mLnNldFN0YXJ0dGltZShuZXcgRGF0ZSgpKTsKKwkJCQljb25mLnNldERlbGV0ZWQoZmFsc2UpOworCQkJCXJldHVybiB0aGlzLmFkZENvbmZpZyhjb25mKTsKKwkJCX0gZWxzZSB7CisJCQkJQ29uZmlndXJhdGlvbiBjb25mMiA9IHRoaXMuZ2V0KGNvbmYuZ2V0Q29uZmlndXJhdGlvbl9pZCgpKTsKKwkJCQljb25mMi5zZXRDb21tZW50KGNvbmYuZ2V0Q29tbWVudCgpKTsKKwkJCQljb25mMi5zZXRDb25mX2tleShjb25mLmdldENvbmZfa2V5KCkpOworCQkJCWNvbmYyLnNldENvbmZfdmFsdWUoY29uZi5nZXRDb25mX3ZhbHVlKCkpOworCQkJCWNvbmYyLnNldFVzZXIodXNlcnNEYW8uZ2V0KHVzZXJJZCkpOworCQkJCWNvbmYyLnNldERlbGV0ZWQoZmFsc2UpOworCQkJCWNvbmYyLnNldFVwZGF0ZXRpbWUobmV3IERhdGUoKSk7CisJCQkJcmV0dXJuIHRoaXMudXBkYXRlQ29uZmlnKGNvbmYyKTsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbdXBkYXRlQ29uZkJ5VUlEXTogIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbmV3IExvbmcoLTEpOworCX0KKworCXB1YmxpYyBMb25nIGFkZENvbmZpZyhDb25maWd1cmF0aW9uIGNvbmYpIHsKKwkJdHJ5IHsKKwkJCWNvbmYgPSBlbS5tZXJnZShjb25mKTsKKwkJCUxvbmcgY29uZmlndXJhdGlvbl9pZCA9IGNvbmYuZ2V0Q29uZmlndXJhdGlvbl9pZCgpOworCQkJcmV0dXJuIGNvbmZpZ3VyYXRpb25faWQ7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW3VwZGF0ZUNvbmZCeVVJRF06ICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG5ldyBMb25nKC0xKTsKKwl9CisKKwlwdWJsaWMgTG9uZyB1cGRhdGVDb25maWcoQ29uZmlndXJhdGlvbiBjb25mKSB7CisJCXRyeSB7CisJCQlpZiAoY29uZi5nZXRDb25maWd1cmF0aW9uX2lkKCkgPT0gbnVsbAorCQkJCQl8fCBjb25mLmdldENvbmZpZ3VyYXRpb25faWQoKSA9PSAwCisJCQkJCXx8IGNvbmYuZ2V0Q29uZmlndXJhdGlvbl9pZCgpID09IDBMKSB7CisJCQkJZW0ucGVyc2lzdChjb25mKTsKKwkJCX0gZWxzZSB7CisJCQkJaWYgKCFlbS5jb250YWlucyhjb25mKSkgeworCQkJCQljb25mID0gZW0ubWVyZ2UoY29uZik7CisJCQkJfQorCQkJfQorCQkJaWYgKCJjcnlwdF9DbGFzc05hbWUiLmVxdWFscyhjb25mLmdldENvbmZfa2V5KCkpKSB7CisJCQkJU2NvcGVBcHBsaWNhdGlvbkFkYXB0ZXIuY29uZmlnS2V5Q3J5cHRDbGFzc05hbWUgPSBjb25mCisJCQkJCQkuZ2V0Q29uZl92YWx1ZSgpOworCQkJfSBlbHNlIGlmICgic2hvdy53aGl0ZWJvYXJkLmRyYXcuc3RhdHVzIi5lcXVhbHMoY29uZi5nZXRDb25mX2tleSgpKSkgeworCQkJCVNjb3BlQXBwbGljYXRpb25BZGFwdGVyLndoaXRlYm9hcmREcmF3U3RhdHVzID0gIjEiLmVxdWFscyhjb25mCisJCQkJCQkuZ2V0Q29uZl92YWx1ZSgpKTsKKwkJCX0KKwkJCXJldHVybiBjb25mLmdldENvbmZpZ3VyYXRpb25faWQoKTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbdXBkYXRlQ29uZkJ5VUlEXTogIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbmV3IExvbmcoLTEpOworCX0KKworCXB1YmxpYyBMb25nIGRlbGV0ZUNvbmZCeUNvbmZpZ3VyYXRpb24oTGlua2VkSGFzaE1hcDxTdHJpbmcsID8+IHZhbHVlcywKKwkJCUxvbmcgdXNlcnNfaWQpIHsKKwkJdHJ5IHsKKwkJCUNvbmZpZ3VyYXRpb24gY29uZiA9IChDb25maWd1cmF0aW9uKSBDYXN0TWFwVG9PYmplY3QuZ2V0SW5zdGFuY2UoKQorCQkJCQkuY2FzdEJ5R2l2ZW5PYmplY3QodmFsdWVzLCBDb25maWd1cmF0aW9uLmNsYXNzKTsKKwkJCWNvbmYuc2V0VXNlcih1c2Vyc0Rhby5nZXQodXNlcnNfaWQpKTsKKwkJCWNvbmYuc2V0VXBkYXRldGltZShuZXcgRGF0ZSgpKTsKKwkJCWNvbmYuc2V0RGVsZXRlZCh0cnVlKTsKKworCQkJQ29uZmlndXJhdGlvbiBjb25mMiA9IHRoaXMuZ2V0KGNvbmYuZ2V0Q29uZmlndXJhdGlvbl9pZCgpKTsKKwkJCWNvbmYyLnNldENvbW1lbnQoY29uZi5nZXRDb21tZW50KCkpOworCQkJY29uZjIuc2V0Q29uZl9rZXkoY29uZi5nZXRDb25mX2tleSgpKTsKKwkJCWNvbmYyLnNldENvbmZfdmFsdWUoY29uZi5nZXRDb25mX3ZhbHVlKCkpOworCQkJY29uZjIuc2V0VXNlcih1c2Vyc0Rhby5nZXQodXNlcnNfaWQpKTsKKwkJCWNvbmYyLnNldERlbGV0ZWQodHJ1ZSk7CisJCQljb25mMi5zZXRVcGRhdGV0aW1lKG5ldyBEYXRlKCkpOworCisJCQl0aGlzLnVwZGF0ZUNvbmZpZyhjb25mMik7CisJCQlyZXR1cm4gbmV3IExvbmcoMSk7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2RlbGV0ZUNvbmZCeVVJRF06ICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG5ldyBMb25nKC0xKTsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGdldEFwcE5hbWUoKSB7CisJCWlmIChhcHBOYW1lID09IG51bGwpIHsKKwkJCWFwcE5hbWUgPSBnZXRDb25mVmFsdWUoImFwcGxpY2F0aW9uLm5hbWUiLCBTdHJpbmcuY2xhc3MsCisJCQkJCUNvbmZpZ3VyYXRpb25EYW8uREVGQVVMVF9BUFBfTkFNRSk7CisJCX0KKwkJcmV0dXJuIGFwcE5hbWU7CisJfQorCisJcHVibGljIENvbmZpZ3VyYXRpb24gZ2V0KGxvbmcgaWQpIHsKKwkJdHJ5IHsKKwkJCWlmIChpZCA8PSAwKSB7CisJCQkJcmV0dXJuIG51bGw7CisJCQl9CisJCQlyZXR1cm4gZW0KKwkJCQkJLmNyZWF0ZU5hbWVkUXVlcnkoImdldENvbmZpZ3VyYXRpb25CeUlkIiwKKwkJCQkJCQlDb25maWd1cmF0aW9uLmNsYXNzKQorCQkJCQkuc2V0UGFyYW1ldGVyKCJjb25maWd1cmF0aW9uX2lkIiwgaWQpLmdldFNpbmdsZVJlc3VsdCgpOworCQl9IGNhdGNoIChQZXJzaXN0ZW5jZUV4Y2VwdGlvbiBleCkgeworCQkJbG9nLmVycm9yKCJDb3VsZCBub3QgZmluZCBpZCAiICsgaWQsIGV4KTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgTGlzdDxDb25maWd1cmF0aW9uPiBnZXQoaW50IHN0YXJ0LCBpbnQgY291bnQpIHsKKwkJVHlwZWRRdWVyeTxDb25maWd1cmF0aW9uPiBxID0gZW0uY3JlYXRlTmFtZWRRdWVyeSgKKwkJCQkiZ2V0Tm9uZGVsZXRlZENvbmZpZ3VyYXRpb24iLCBDb25maWd1cmF0aW9uLmNsYXNzKTsKKwkJcS5zZXRGaXJzdFJlc3VsdChzdGFydCk7CisJCXEuc2V0TWF4UmVzdWx0cyhjb3VudCk7CisJCXJldHVybiBxLmdldFJlc3VsdExpc3QoKTsKKwl9CisKKwlwdWJsaWMgTGlzdDxDb25maWd1cmF0aW9uPiBnZXQoU3RyaW5nIHNlYXJjaCwgaW50IHN0YXJ0LCBpbnQgY291bnQsIFN0cmluZyBzb3J0KSB7CisJCVR5cGVkUXVlcnk8Q29uZmlndXJhdGlvbj4gcSA9IGVtLmNyZWF0ZVF1ZXJ5KERhb0hlbHBlci5nZXRTZWFyY2hRdWVyeSgiQ29uZmlndXJhdGlvbiIsICJjIiwgc2VhcmNoLCB0cnVlLCBmYWxzZSwgc29ydCwgc2VhcmNoRmllbGRzKSwgQ29uZmlndXJhdGlvbi5jbGFzcyk7CisJCXEuc2V0Rmlyc3RSZXN1bHQoc3RhcnQpOworCQlxLnNldE1heFJlc3VsdHMoY291bnQpOworCQlyZXR1cm4gcS5nZXRSZXN1bHRMaXN0KCk7CisJfQorCQorCXB1YmxpYyBsb25nIGNvdW50KCkgeworCQlyZXR1cm4gc2VsZWN0TWF4RnJvbUNvbmZpZ3VyYXRpb25zKCk7CisJfQorCisJcHVibGljIGxvbmcgY291bnQoU3RyaW5nIHNlYXJjaCkgeworCQlUeXBlZFF1ZXJ5PExvbmc+IHEgPSBlbS5jcmVhdGVRdWVyeShEYW9IZWxwZXIuZ2V0U2VhcmNoUXVlcnkoIkNvbmZpZ3VyYXRpb24iLCAiYyIsIHNlYXJjaCwgdHJ1ZSwgdHJ1ZSwgbnVsbCwgc2VhcmNoRmllbGRzKSwgTG9uZy5jbGFzcyk7CisJCXJldHVybiBxLmdldFNpbmdsZVJlc3VsdCgpOworCX0KKwkKKwlwdWJsaWMgQ29uZmlndXJhdGlvbiB1cGRhdGUoQ29uZmlndXJhdGlvbiBlbnRpdHksIExvbmcgdXNlcklkKSB7CisJCVN0cmluZyBrZXkgPSBlbnRpdHkuZ2V0Q29uZl9rZXkoKTsKKwkJU3RyaW5nIHZhbHVlID0gZW50aXR5LmdldENvbmZfdmFsdWUoKTsKKwkJaWYgKGVudGl0eS5nZXRDb25maWd1cmF0aW9uX2lkKCkgPT0gbnVsbAorCQkJCXx8IGVudGl0eS5nZXRDb25maWd1cmF0aW9uX2lkKCkgPD0gMCkgeworCQkJZW50aXR5LnNldFN0YXJ0dGltZShuZXcgRGF0ZSgpKTsKKwkJCWVudGl0eS5zZXREZWxldGVkKGZhbHNlKTsKKwkJCXRoaXMudXBkYXRlQ29uZmlnKGVudGl0eSk7CisJCX0gZWxzZSB7CisJCQlpZiAodXNlcklkICE9IG51bGwpIHsKKwkJCQllbnRpdHkuc2V0VXNlcih1c2Vyc0Rhby5nZXQodXNlcklkKSk7CisJCQl9CisJCQllbnRpdHkuc2V0RGVsZXRlZChmYWxzZSk7CisJCQllbnRpdHkuc2V0VXBkYXRldGltZShuZXcgRGF0ZSgpKTsKKwkJCXRoaXMudXBkYXRlQ29uZmlnKGVudGl0eSk7CisJCX0KKwkJaWYgKCJjcnlwdF9DbGFzc05hbWUiLmVxdWFscyhrZXkpKSB7CisJCQlTY29wZUFwcGxpY2F0aW9uQWRhcHRlci5jb25maWdLZXlDcnlwdENsYXNzTmFtZSA9IHZhbHVlOworCQl9IGVsc2UgaWYgKCJzaG93LndoaXRlYm9hcmQuZHJhdy5zdGF0dXMiLmVxdWFscyhrZXkpKSB7CisJCQlTY29wZUFwcGxpY2F0aW9uQWRhcHRlci53aGl0ZWJvYXJkRHJhd1N0YXR1cyA9ICIxIi5lcXVhbHModmFsdWUpOworCQl9IGVsc2UgaWYgKCJhcHBsaWNhdGlvbi5uYW1lIi5lcXVhbHMoa2V5KSkgeworCQkJYXBwTmFtZSA9IHZhbHVlOworCQl9CisJCS8vVE9ETyBlbnN1cmUgZW50aXR5IHJldHVybmVkIGlzIHVwZGF0ZWQKKwkJcmV0dXJuIGVudGl0eTsKKwl9CisKKwlwdWJsaWMgdm9pZCBkZWxldGUoQ29uZmlndXJhdGlvbiBlbnRpdHksIExvbmcgdXNlcklkKSB7CisJCWlmICh1c2VySWQgIT0gbnVsbCkgeworCQkJZW50aXR5LnNldFVzZXIodXNlcnNEYW8uZ2V0KHVzZXJJZCkpOworCQl9CisJCWVudGl0eS5zZXREZWxldGVkKHRydWUpOworCQllbnRpdHkuc2V0VXBkYXRldGltZShuZXcgRGF0ZSgpKTsKKwkJdGhpcy51cGRhdGVDb25maWcoZW50aXR5KTsKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9iYXNpYy9kYW8vRXJyb3JEYW8uamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2Jhc2ljL2Rhby9FcnJvckRhby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1MDNjMjIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9iYXNpYy9kYW8vRXJyb3JEYW8uamF2YQpAQCAtMCwwICsxLDE0NyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLmRhbzsKKworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5TWFuYWdlcjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Ob1Jlc3VsdEV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5QZXJzaXN0ZW5jZUNvbnRleHQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVHlwZWRRdWVyeTsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5FcnJvclR5cGU7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuRXJyb3JWYWx1ZTsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay50cmFuc2FjdGlvbi5hbm5vdGF0aW9uLlRyYW5zYWN0aW9uYWw7CisKK0BUcmFuc2FjdGlvbmFsCitwdWJsaWMgY2xhc3MgRXJyb3JEYW8geworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoCisJCQlFcnJvckRhby5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCisJQFBlcnNpc3RlbmNlQ29udGV4dAorCXByaXZhdGUgRW50aXR5TWFuYWdlciBlbTsKKworCXB1YmxpYyBMb25nIGFkZEVycm9yVHlwZShMb25nIGVycm9ydHlwZV9pZCwgTG9uZyBmaWVsZHZhbHVlc19pZCkgeworCQl0cnkgeworCQkJRXJyb3JUeXBlIGVUeXBlID0gbmV3IEVycm9yVHlwZSgpOworCQkJZVR5cGUuc2V0RXJyb3J0eXBlX2lkKGVycm9ydHlwZV9pZCk7CisJCQllVHlwZS5zZXRTdGFydHRpbWUobmV3IERhdGUoKSk7CisJCQllVHlwZS5zZXREZWxldGVkKGZhbHNlKTsKKwkJCWVUeXBlLnNldEZpZWxkdmFsdWVzX2lkKGZpZWxkdmFsdWVzX2lkKTsKKwkJCWVUeXBlID0gZW0ubWVyZ2UoZVR5cGUpOworCQkJTG9uZyBuZXdlcnJvcnR5cGVfaWQgPSBlVHlwZS5nZXRFcnJvcnR5cGVfaWQoKTsKKwkJCXJldHVybiBuZXdlcnJvcnR5cGVfaWQ7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2FkZEVycm9yVHlwZV06ICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIExpc3Q8RXJyb3JUeXBlPiBnZXRFcnJvclR5cGVzKCkgeworCQl0cnkgeworCQkJVHlwZWRRdWVyeTxFcnJvclR5cGU+IHF1ZXJ5ID0gZW0uY3JlYXRlTmFtZWRRdWVyeSgiZ2V0RXJyb3JUeXBlcyIsIEVycm9yVHlwZS5jbGFzcyk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImRlbGV0ZWQiLCB0cnVlKTsKKwkJCUxpc3Q8RXJyb3JUeXBlPiBsbCA9IHF1ZXJ5LmdldFJlc3VsdExpc3QoKTsKKwkJCXJldHVybiBsbDsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZ2V0RXJyb3JUeXBlc106ICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIEVycm9yVHlwZSBnZXRFcnJvclR5cGUoTG9uZyBlcnJvcnR5cGVfaWQpIHsKKwkJdHJ5IHsKKwkJCVR5cGVkUXVlcnk8RXJyb3JUeXBlPiBxdWVyeSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoImdldEVycm9yVHlwZSIsIEVycm9yVHlwZS5jbGFzcyk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImRlbGV0ZWQiLCB0cnVlKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiZXJyb3J0eXBlX2lkIiwgZXJyb3J0eXBlX2lkKTsKKwkJCXJldHVybiBxdWVyeS5nZXRTaW5nbGVSZXN1bHQoKTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZ2V0RXJyb3JUeXBlKCIgKyBlcnJvcnR5cGVfaWQgKyAiKV0iLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMb25nIGFkZEVycm9yVmFsdWVzKExvbmcgZXJyb3J2YWx1ZXNfaWQsIExvbmcgZXJyb3J0eXBlX2lkLAorCQkJTG9uZyBmaWVsZHZhbHVlc19pZCkgeworCQl0cnkgeworCQkJRXJyb3JWYWx1ZSBlVmFsdWUgPSBuZXcgRXJyb3JWYWx1ZSgpOworCQkJZVZhbHVlLnNldEVycm9ydmFsdWVzX2lkKGVycm9ydmFsdWVzX2lkKTsKKwkJCWVWYWx1ZS5zZXRFcnJvcnR5cGVfaWQoZXJyb3J0eXBlX2lkKTsKKwkJCWVWYWx1ZS5zZXREZWxldGVkKGZhbHNlKTsKKwkJCWVWYWx1ZS5zZXRTdGFydHRpbWUobmV3IERhdGUoKSk7CisJCQllVmFsdWUuc2V0RmllbGR2YWx1ZXNfaWQoZmllbGR2YWx1ZXNfaWQpOworCQkJZVZhbHVlID0gZW0ubWVyZ2UoZVZhbHVlKTsKKwkJCXJldHVybiBlVmFsdWUuZ2V0RXJyb3J2YWx1ZXNfaWQoKTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbYWRkRXJyb3JWYWx1ZXNdOiAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMb25nIGdldEVycm9yVmFsdWVCeUlkKExvbmcgZXJyb3J0eXBlX2lkLCBMb25nIGZpZWxkdmFsdWVzX2lkKSB7CisJCXRyeSB7CisJCQlFcnJvclZhbHVlIGVWYWx1ZSA9IG5ldyBFcnJvclZhbHVlKCk7CisJCQllVmFsdWUuc2V0RXJyb3J0eXBlX2lkKGVycm9ydHlwZV9pZCk7CisJCQllVmFsdWUuc2V0U3RhcnR0aW1lKG5ldyBEYXRlKCkpOworCQkJZVZhbHVlLnNldEZpZWxkdmFsdWVzX2lkKGZpZWxkdmFsdWVzX2lkKTsKKwkJCWVWYWx1ZSA9IGVtLm1lcmdlKGVWYWx1ZSk7CisJCQlMb25nIG5ld2Vycm9ydmFsdWVzX2lkID0gZVZhbHVlLmdldEVycm9ydmFsdWVzX2lkKCk7CisJCQlyZXR1cm4gbmV3ZXJyb3J2YWx1ZXNfaWQ7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldEVycm9yVmFsdWVCeUlkXTogIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgTG9uZyB1cGRhdGVFcnJvclZhbHVlcyhMb25nIGVycm9ydHlwZV9pZCwgTG9uZyBmaWVsZHZhbHVlc19pZCkgeworCQl0cnkgeworCQkJRXJyb3JWYWx1ZSBlVmFsdWUgPSBuZXcgRXJyb3JWYWx1ZSgpOworCQkJZVZhbHVlLnNldEVycm9ydHlwZV9pZChlcnJvcnR5cGVfaWQpOworCQkJZVZhbHVlLnNldFN0YXJ0dGltZShuZXcgRGF0ZSgpKTsKKwkJCWVWYWx1ZS5zZXRGaWVsZHZhbHVlc19pZChmaWVsZHZhbHVlc19pZCk7CisJCQllVmFsdWUgPSBlbS5tZXJnZShlVmFsdWUpOworCQkJTG9uZyBuZXdlcnJvcnZhbHVlc19pZCA9IGVWYWx1ZS5nZXRFcnJvcnZhbHVlc19pZCgpOworCQkJcmV0dXJuIG5ld2Vycm9ydmFsdWVzX2lkOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIlthZGRFcnJvclR5cGVdOiAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBFcnJvclZhbHVlIGdldEVycm9yVmFsdWVzQnlJZChMb25nIGVycm9ydmFsdWVzX2lkKSB7CisJCXRyeSB7CisJCQlUeXBlZFF1ZXJ5PEVycm9yVmFsdWU+IHF1ZXJ5ID0gZW0uY3JlYXRlTmFtZWRRdWVyeSgiZ2V0RXJyb3JWYWx1ZXNCeUlkIiwgRXJyb3JWYWx1ZS5jbGFzcyk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImVycm9ydmFsdWVzX2lkIiwgZXJyb3J2YWx1ZXNfaWQpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJkZWxldGVkIiwgdHJ1ZSk7CisJCQlFcnJvclZhbHVlIGUgPSBudWxsOworCQkJdHJ5IHsKKwkJCQllID0gcXVlcnkuZ2V0U2luZ2xlUmVzdWx0KCk7CisJCQl9IGNhdGNoIChOb1Jlc3VsdEV4Y2VwdGlvbiBleCkgeworCQkJfQorCQkJcmV0dXJuIGU7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldEVycm9yVmFsdWVzQnlJZF0iLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2Jhc2ljL2Rhby9MZGFwQ29uZmlnRGFvLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9iYXNpYy9kYW8vTGRhcENvbmZpZ0Rhby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0NzhjNjYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9iYXNpYy9kYW8vTGRhcENvbmZpZ0Rhby5qYXZhCkBAIC0wLDAgKzEsMzQyIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuZGFvOworCitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHlNYW5hZ2VyOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk5vUmVzdWx0RXhjZXB0aW9uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlBlcnNpc3RlbmNlQ29udGV4dDsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5QZXJzaXN0ZW5jZUV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UeXBlZFF1ZXJ5OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLmNyaXRlcmlhLkNyaXRlcmlhQnVpbGRlcjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5jcml0ZXJpYS5Dcml0ZXJpYVF1ZXJ5OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLmNyaXRlcmlhLlByZWRpY2F0ZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5jcml0ZXJpYS5Sb290OworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuSURhdGFQcm92aWRlckRhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuZGFvLlVzZXJzRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLkxkYXBDb25maWc7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMuRGFvSGVscGVyOworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5BdXRvd2lyZWQ7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay50cmFuc2FjdGlvbi5hbm5vdGF0aW9uLlRyYW5zYWN0aW9uYWw7CisKKy8qKgorICogSW5zZXJ0L1VwZGF0ZS9EZWxldGUge0BsaW5rIExkYXBDb25maWd9CisgKiAKKyAqIAorICogQGF1dGhvciBzd2FnbmVyCisgKiAKKyAqLworQFRyYW5zYWN0aW9uYWwKK3B1YmxpYyBjbGFzcyBMZGFwQ29uZmlnRGFvIGltcGxlbWVudHMgSURhdGFQcm92aWRlckRhbzxMZGFwQ29uZmlnPiB7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcigKKwkJCUxkYXBDb25maWdEYW8uY2xhc3MsIE9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKwlwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZ1tdIHNlYXJjaEZpZWxkcyA9IHsibmFtZSIsICJjb25maWdGaWxlTmFtZSIsICJkb21haW4iLCAiY29tbWVudCJ9OworCisJQFBlcnNpc3RlbmNlQ29udGV4dAorCXByaXZhdGUgRW50aXR5TWFuYWdlciBlbTsKKworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFVzZXJzRGFvIHVzZXJzRGFvOworCisJcHVibGljIExvbmcgYWRkTGRhcENvbmZpZyhTdHJpbmcgbmFtZSwgQm9vbGVhbiBhZGREb21haW5Ub1VzZXJOYW1lLAorCQkJU3RyaW5nIGNvbmZpZ0ZpbGVOYW1lLCBTdHJpbmcgZG9tYWluLCBMb25nIGluc2VydGVkYnksCisJCQlCb29sZWFuIGlzQWN0aXZlKSB7CisJCXRyeSB7CisKKwkJCUxkYXBDb25maWcgbGRhcENvbmZpZyA9IG5ldyBMZGFwQ29uZmlnKCk7CisJCQlsZGFwQ29uZmlnLnNldEFkZERvbWFpblRvVXNlck5hbWUoYWRkRG9tYWluVG9Vc2VyTmFtZSk7CisJCQlsZGFwQ29uZmlnLnNldENvbmZpZ0ZpbGVOYW1lKGNvbmZpZ0ZpbGVOYW1lKTsKKwkJCWxkYXBDb25maWcuc2V0RGVsZXRlZChmYWxzZSk7CisJCQlsZGFwQ29uZmlnLnNldERvbWFpbihkb21haW4pOworCQkJbGRhcENvbmZpZy5zZXRJc0FjdGl2ZShpc0FjdGl2ZSk7CisJCQlsZGFwQ29uZmlnLnNldE5hbWUobmFtZSk7CisJCQlsZGFwQ29uZmlnLnNldEluc2VydGVkKG5ldyBEYXRlKCkpOworCQkJaWYgKGluc2VydGVkYnkgIT0gbnVsbCkgeworCQkJCWxvZy5kZWJ1ZygiYWRkTGRhcENvbmZpZyA6MTogIiArIHVzZXJzRGFvLmdldChpbnNlcnRlZGJ5KSk7CisJCQkJbGRhcENvbmZpZy5zZXRJbnNlcnRlZGJ5KHVzZXJzRGFvLmdldChpbnNlcnRlZGJ5KSk7CisJCQl9CisKKwkJCWxvZy5kZWJ1ZygiYWRkTGRhcENvbmZpZyA6MjogIiArIGluc2VydGVkYnkpOworCisJCQlsZGFwQ29uZmlnID0gZW0ubWVyZ2UobGRhcENvbmZpZyk7CisJCQlMb25nIGxkYXBDb25maWdJZCA9IGxkYXBDb25maWcuZ2V0TGRhcENvbmZpZ0lkKCk7CisKKwkJCWlmIChsZGFwQ29uZmlnSWQgPiAwKSB7CisJCQkJcmV0dXJuIGxkYXBDb25maWdJZDsKKwkJCX0gZWxzZSB7CisJCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbigiQ291bGQgbm90IHN0b3JlIFNPQVBMb2dpbiIpOworCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2FkZExkYXBDb25maWddOiAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMb25nIGFkZExkYXBDb25maWdCeU9iamVjdChMZGFwQ29uZmlnIGxkYXBDb25maWcpIHsKKwkJdHJ5IHsKKworCQkJbGRhcENvbmZpZy5zZXREZWxldGVkKGZhbHNlKTsKKwkJCWxkYXBDb25maWcuc2V0SW5zZXJ0ZWQobmV3IERhdGUoKSk7CisKKwkJCWxkYXBDb25maWcgPSBlbS5tZXJnZShsZGFwQ29uZmlnKTsKKwkJCUxvbmcgbGRhcENvbmZpZ0lkID0gbGRhcENvbmZpZy5nZXRMZGFwQ29uZmlnSWQoKTsKKworCQkJaWYgKGxkYXBDb25maWdJZCA+IDApIHsKKwkJCQlyZXR1cm4gbGRhcENvbmZpZ0lkOworCQkJfSBlbHNlIHsKKwkJCQl0aHJvdyBuZXcgRXhjZXB0aW9uKCJDb3VsZCBub3Qgc3RvcmUgU09BUExvZ2luIik7CisJCQl9CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbYWRkTGRhcENvbmZpZ106ICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIExvbmcgdXBkYXRlTGRhcENvbmZpZyhMb25nIGxkYXBDb25maWdJZCwgU3RyaW5nIG5hbWUsCisJCQlCb29sZWFuIGFkZERvbWFpblRvVXNlck5hbWUsIFN0cmluZyBjb25maWdGaWxlTmFtZSwgU3RyaW5nIGRvbWFpbiwKKwkJCUxvbmcgdXBkYXRlZGJ5LCBCb29sZWFuIGlzQWN0aXZlKSB7CisJCXRyeSB7CisKKwkJCUxkYXBDb25maWcgbGRhcENvbmZpZyA9IHRoaXMuZ2V0KGxkYXBDb25maWdJZCk7CisKKwkJCWlmIChsZGFwQ29uZmlnID09IG51bGwpIHsKKwkJCQlyZXR1cm4gLTFMOworCQkJfQorCisJCQlsZGFwQ29uZmlnLnNldEFkZERvbWFpblRvVXNlck5hbWUoYWRkRG9tYWluVG9Vc2VyTmFtZSk7CisJCQlsZGFwQ29uZmlnLnNldENvbmZpZ0ZpbGVOYW1lKGNvbmZpZ0ZpbGVOYW1lKTsKKwkJCWxkYXBDb25maWcuc2V0RGVsZXRlZChmYWxzZSk7CisJCQlsZGFwQ29uZmlnLnNldERvbWFpbihkb21haW4pOworCQkJbGRhcENvbmZpZy5zZXRJc0FjdGl2ZShpc0FjdGl2ZSk7CisJCQlsZGFwQ29uZmlnLnNldE5hbWUobmFtZSk7CisJCQlsZGFwQ29uZmlnLnNldFVwZGF0ZWQobmV3IERhdGUoKSk7CisJCQlpZiAodXBkYXRlZGJ5ICE9IG51bGwpIHsKKwkJCQlsb2cuZGVidWcoInVwZGF0ZUxkYXBDb25maWcgOjE6ICIgKyB1c2Vyc0Rhby5nZXQodXBkYXRlZGJ5KSk7CisJCQkJbGRhcENvbmZpZy5zZXRVcGRhdGVkYnkodXNlcnNEYW8uZ2V0KHVwZGF0ZWRieSkpOworCQkJfQorCisJCQlsb2cuZGVidWcoInVwZGF0ZUxkYXBDb25maWcgOjI6ICIgKyB1cGRhdGVkYnkpOworCisJCQlsZGFwQ29uZmlnID0gZW0ubWVyZ2UobGRhcENvbmZpZyk7CisJCQlsZGFwQ29uZmlnSWQgPSBsZGFwQ29uZmlnLmdldExkYXBDb25maWdJZCgpOworCisJCQlyZXR1cm4gbGRhcENvbmZpZ0lkOworCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW3VwZGF0ZUxkYXBDb25maWddOiAiLCBleDIpOworCQl9CisJCXJldHVybiAtMUw7CisJfQorCisJcHVibGljIExkYXBDb25maWcgZ2V0KGxvbmcgbGRhcENvbmZpZ0lkKSB7CisJCXRyeSB7CisKKwkJCVN0cmluZyBocWwgPSAic2VsZWN0IGMgZnJvbSBMZGFwQ29uZmlnIGMgIgorCQkJCQkrICJXSEVSRSBjLmxkYXBDb25maWdJZCA9IDpsZGFwQ29uZmlnSWQgIgorCQkJCQkrICJBTkQgYy5kZWxldGVkID0gOmRlbGV0ZWQiOworCisJCQlUeXBlZFF1ZXJ5PExkYXBDb25maWc+IHF1ZXJ5ID0gZW0KKwkJCQkJLmNyZWF0ZVF1ZXJ5KGhxbCwgTGRhcENvbmZpZy5jbGFzcyk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImxkYXBDb25maWdJZCIsIGxkYXBDb25maWdJZCk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImRlbGV0ZWQiLCBmYWxzZSk7CisKKwkJCUxkYXBDb25maWcgbGRhcENvbmZpZyA9IG51bGw7CisJCQl0cnkgeworCQkJCWxkYXBDb25maWcgPSBxdWVyeS5nZXRTaW5nbGVSZXN1bHQoKTsKKwkJCX0gY2F0Y2ggKE5vUmVzdWx0RXhjZXB0aW9uIGV4KSB7CisJCQl9CisKKwkJCXJldHVybiBsZGFwQ29uZmlnOworCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldExkYXBDb25maWdCeUlkXTogIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgTGlzdDxMZGFwQ29uZmlnPiBnZXRMZGFwQ29uZmlncyhpbnQgc3RhcnQsIGludCBtYXgsIFN0cmluZyBvcmRlcmJ5LAorCQkJYm9vbGVhbiBhc2MpIHsKKwkJdHJ5IHsKKwkJCUNyaXRlcmlhQnVpbGRlciBjYiA9IGVtLmdldENyaXRlcmlhQnVpbGRlcigpOworCQkJQ3JpdGVyaWFRdWVyeTxMZGFwQ29uZmlnPiBjcSA9IGNiLmNyZWF0ZVF1ZXJ5KExkYXBDb25maWcuY2xhc3MpOworCQkJUm9vdDxMZGFwQ29uZmlnPiBjID0gY3EuZnJvbShMZGFwQ29uZmlnLmNsYXNzKTsKKwkJCVByZWRpY2F0ZSBjb25kaXRpb24gPSBjYi5lcXVhbChjLmdldCgiZGVsZXRlZCIpLCBmYWxzZSk7CisJCQljcS53aGVyZShjb25kaXRpb24pOworCQkJY3EuZGlzdGluY3QoYXNjKTsKKwkJCWlmIChhc2MpIHsKKwkJCQljcS5vcmRlckJ5KGNiLmFzYyhjLmdldChvcmRlcmJ5KSkpOworCQkJfSBlbHNlIHsKKwkJCQljcS5vcmRlckJ5KGNiLmRlc2MoYy5nZXQob3JkZXJieSkpKTsKKwkJCX0KKwkJCVR5cGVkUXVlcnk8TGRhcENvbmZpZz4gcSA9IGVtLmNyZWF0ZVF1ZXJ5KGNxKTsKKwkJCXEuc2V0Rmlyc3RSZXN1bHQoc3RhcnQpOworCQkJcS5zZXRNYXhSZXN1bHRzKG1heCk7CisJCQlMaXN0PExkYXBDb25maWc+IGxsID0gcS5nZXRSZXN1bHRMaXN0KCk7CisJCQlyZXR1cm4gbGw7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldExkYXBDb25maWdzXSIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIExvbmcgc2VsZWN0TWF4RnJvbUxkYXBDb25maWcoKSB7CisJCXRyeSB7CisJCQlsb2cuZGVidWcoInNlbGVjdE1heEZyb21Db25maWd1cmF0aW9ucyAiKTsKKwkJCS8vIGdldCBhbGwgdXNlcnMKKwkJCVR5cGVkUXVlcnk8TG9uZz4gcXVlcnkgPSBlbQorCQkJCQkuY3JlYXRlUXVlcnkoCisJCQkJCQkJInNlbGVjdCBjb3VudChjLmxkYXBDb25maWdJZCkgZnJvbSBMZGFwQ29uZmlnIGMgd2hlcmUgYy5kZWxldGVkID0gZmFsc2UiLAorCQkJCQkJCUxvbmcuY2xhc3MpOworCQkJTGlzdDxMb25nPiBsbCA9IHF1ZXJ5LmdldFJlc3VsdExpc3QoKTsKKwkJCWxvZy5kZWJ1Zygic2VsZWN0TWF4RnJvbUxkYXBDb25maWciICsgbGwuZ2V0KDApKTsKKwkJCXJldHVybiBsbC5nZXQoMCk7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW3NlbGVjdE1heEZyb21MZGFwQ29uZmlnXSAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMb25nIGRlbGV0ZUxkYXBDb25maWdCeUlkKExvbmcgbGRhcENvbmZpZ0lkKSB7CisJCXRyeSB7CisKKwkJCUxkYXBDb25maWcgbGRhcENvbmZpZyA9IHRoaXMuZ2V0KGxkYXBDb25maWdJZCk7CisKKwkJCWlmIChsZGFwQ29uZmlnID09IG51bGwpIHsKKwkJCQlyZXR1cm4gbnVsbDsKKwkJCX0KKworCQkJbGRhcENvbmZpZyA9IGVtCisJCQkJCS5maW5kKExkYXBDb25maWcuY2xhc3MsIGxkYXBDb25maWcuZ2V0TGRhcENvbmZpZ0lkKCkpOworCQkJZW0ucmVtb3ZlKGxkYXBDb25maWcpOworCisJCQlyZXR1cm4gbGRhcENvbmZpZ0lkOworCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2RlbGV0ZUxkYXBDb25maWdCeUlkXTogIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgTGlzdDxMZGFwQ29uZmlnPiBnZXRBY3RpdmVMZGFwQ29uZmlncygpIHsKKwkJdHJ5IHsKKwkJCWxvZy5kZWJ1Zygic2VsZWN0TWF4RnJvbUNvbmZpZ3VyYXRpb25zICIpOworCisJCQlTdHJpbmcgaHFsID0gInNlbGVjdCBjIGZyb20gTGRhcENvbmZpZyBjICIKKwkJCQkJKyAid2hlcmUgYy5kZWxldGVkID0gZmFsc2UgIgorCQkJCQkrICJBTkQgYy5pc0FjdGl2ZSA9IDppc0FjdGl2ZSAiOworCisJCQkvLyBnZXQgYWxsIHVzZXJzCisJCQlUeXBlZFF1ZXJ5PExkYXBDb25maWc+IHF1ZXJ5ID0gZW0KKwkJCQkJLmNyZWF0ZVF1ZXJ5KGhxbCwgTGRhcENvbmZpZy5jbGFzcyk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImlzQWN0aXZlIiwgdHJ1ZSk7CisJCQlMaXN0PExkYXBDb25maWc+IGxsID0gcXVlcnkuZ2V0UmVzdWx0TGlzdCgpOworCisJCQlyZXR1cm4gbGw7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldEFjdGl2ZUxkYXBDb25maWdzXSAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMaXN0PExkYXBDb25maWc+IGdldExkYXBDb25maWdzKCkgeworCQl0cnkgeworCQkJbG9nLmRlYnVnKCJzZWxlY3RNYXhGcm9tQ29uZmlndXJhdGlvbnMgIik7CisKKwkJCVN0cmluZyBocWwgPSAic2VsZWN0IGMgZnJvbSBMZGFwQ29uZmlnIGMgIgorCQkJCQkrICJ3aGVyZSBjLmRlbGV0ZWQgPSBmYWxzZSAiOworCisJCQkvLyBnZXQgYWxsIHVzZXJzCisJCQlUeXBlZFF1ZXJ5PExkYXBDb25maWc+IHF1ZXJ5ID0gZW0KKwkJCQkJLmNyZWF0ZVF1ZXJ5KGhxbCwgTGRhcENvbmZpZy5jbGFzcyk7CisJCQlMaXN0PExkYXBDb25maWc+IGxsID0gcXVlcnkuZ2V0UmVzdWx0TGlzdCgpOworCisJCQlyZXR1cm4gbGw7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldEFjdGl2ZUxkYXBDb25maWdzXSAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMaXN0PExkYXBDb25maWc+IGdldChpbnQgc3RhcnQsIGludCBjb3VudCkgeworCQlUeXBlZFF1ZXJ5PExkYXBDb25maWc+IHEgPSBlbS5jcmVhdGVOYW1lZFF1ZXJ5KAorCQkJCSJnZXROb25kZWxldGVkTGRhcENvbmZpZ3MiLCBMZGFwQ29uZmlnLmNsYXNzKTsKKwkJcS5zZXRGaXJzdFJlc3VsdChzdGFydCk7CisJCXEuc2V0TWF4UmVzdWx0cyhjb3VudCk7CisJCXJldHVybiBxLmdldFJlc3VsdExpc3QoKTsKKwl9CisKKwlwdWJsaWMgTGlzdDxMZGFwQ29uZmlnPiBnZXQoU3RyaW5nIHNlYXJjaCwgaW50IHN0YXJ0LCBpbnQgY291bnQsIFN0cmluZyBzb3J0KSB7CisJCVR5cGVkUXVlcnk8TGRhcENvbmZpZz4gcSA9IGVtLmNyZWF0ZVF1ZXJ5KERhb0hlbHBlci5nZXRTZWFyY2hRdWVyeSgiTGRhcENvbmZpZyIsICJsYyIsIHNlYXJjaCwgdHJ1ZSwgZmFsc2UsIHNvcnQsIHNlYXJjaEZpZWxkcyksIExkYXBDb25maWcuY2xhc3MpOworCQlxLnNldEZpcnN0UmVzdWx0KHN0YXJ0KTsKKwkJcS5zZXRNYXhSZXN1bHRzKGNvdW50KTsKKwkJcmV0dXJuIHEuZ2V0UmVzdWx0TGlzdCgpOworCX0KKwkKKwlwdWJsaWMgbG9uZyBjb3VudCgpIHsKKwkJcmV0dXJuIHNlbGVjdE1heEZyb21MZGFwQ29uZmlnKCk7CisJfQorCisJcHVibGljIGxvbmcgY291bnQoU3RyaW5nIHNlYXJjaCkgeworCQlUeXBlZFF1ZXJ5PExvbmc+IHEgPSBlbS5jcmVhdGVRdWVyeShEYW9IZWxwZXIuZ2V0U2VhcmNoUXVlcnkoIkxkYXBDb25maWciLCAibGMiLCBzZWFyY2gsIHRydWUsIHRydWUsIG51bGwsIHNlYXJjaEZpZWxkcyksIExvbmcuY2xhc3MpOworCQlyZXR1cm4gcS5nZXRTaW5nbGVSZXN1bHQoKTsKKwl9CisJCisJcHVibGljIExkYXBDb25maWcgdXBkYXRlKExkYXBDb25maWcgZW50aXR5LCBMb25nIHVzZXJJZCkgeworCQl0cnkgeworCQkJaWYgKGVudGl0eS5nZXRMZGFwQ29uZmlnSWQoKSA8PSAwKSB7CisJCQkJZW50aXR5LnNldEluc2VydGVkKG5ldyBEYXRlKCkpOworCQkJCWlmICh1c2VySWQgIT0gbnVsbCkgeworCQkJCQllbnRpdHkuc2V0SW5zZXJ0ZWRieSh1c2Vyc0Rhby5nZXQodXNlcklkKSk7CisJCQkJfQorCQkJCWVudGl0eS5zZXREZWxldGVkKGZhbHNlKTsKKwkJCQllbS5wZXJzaXN0KGVudGl0eSk7CisJCQl9IGVsc2UgeworCQkJCWVudGl0eS5zZXRVcGRhdGVkKG5ldyBEYXRlKCkpOworCQkJCWlmICh1c2VySWQgIT0gbnVsbCkgeworCQkJCQllbnRpdHkuc2V0VXBkYXRlZGJ5KHVzZXJzRGFvLmdldCh1c2VySWQpKTsKKwkJCQl9CisJCQkJZW50aXR5LnNldERlbGV0ZWQoZmFsc2UpOworCQkJCWVtLm1lcmdlKGVudGl0eSk7CisJCQl9CisJCX0gY2F0Y2ggKFBlcnNpc3RlbmNlRXhjZXB0aW9uIGV4KSB7CisJCQlsb2cuZXJyb3IoIlt1cGRhdGUgTGRhcENvbmZpZ10iLCBleCk7CisJCX0KKwkJcmV0dXJuIGVudGl0eTsKKwl9CisKKwlwdWJsaWMgdm9pZCBkZWxldGUoTGRhcENvbmZpZyBlbnRpdHksIExvbmcgdXNlcklkKSB7CisJCWlmIChlbnRpdHkuZ2V0TGRhcENvbmZpZ0lkKCkgPj0gMCkgeworCQkJZW50aXR5LnNldFVwZGF0ZWQobmV3IERhdGUoKSk7CisJCQlpZiAodXNlcklkICE9IG51bGwpIHsKKwkJCQllbnRpdHkuc2V0VXBkYXRlZGJ5KHVzZXJzRGFvLmdldCh1c2VySWQpKTsKKwkJCX0KKwkJCWVudGl0eS5zZXREZWxldGVkKHRydWUpOworCQkJZW0ubWVyZ2UoZW50aXR5KTsKKwkJfQorCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvYmFzaWMvZGFvL01haWxNZXNzYWdlRGFvLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9iYXNpYy9kYW8vTWFpbE1lc3NhZ2VEYW8uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZGFmNWMyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvYmFzaWMvZGFvL01haWxNZXNzYWdlRGFvLmphdmEKQEAgLTAsMCArMSw4MiBAQAorLyoNCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICogdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLmRhbzsNCisNCitpbXBvcnQgamF2YS51dGlsLkNhbGVuZGFyOw0KK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCisNCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5TWFuYWdlcjsNCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuUGVyc2lzdGVuY2VDb250ZXh0Ow0KKw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLklEYXRhUHJvdmlkZXJEYW87DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLk1haWxNZXNzYWdlOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5NYWlsTWVzc2FnZS5TdGF0dXM7DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsudHJhbnNhY3Rpb24uYW5ub3RhdGlvbi5UcmFuc2FjdGlvbmFsOw0KKw0KK0BUcmFuc2FjdGlvbmFsDQorcHVibGljIGNsYXNzIE1haWxNZXNzYWdlRGFvICBpbXBsZW1lbnRzIElEYXRhUHJvdmlkZXJEYW88TWFpbE1lc3NhZ2U+IHsNCisJQFBlcnNpc3RlbmNlQ29udGV4dA0KKwlwcml2YXRlIEVudGl0eU1hbmFnZXIgZW07DQorCQ0KKwlwdWJsaWMgTWFpbE1lc3NhZ2UgZ2V0KGxvbmcgaWQpIHsNCisJCXJldHVybiBlbS5jcmVhdGVOYW1lZFF1ZXJ5KCJnZXRNYWlsTWVzc2FnZUJ5SWQiLCBNYWlsTWVzc2FnZS5jbGFzcykuc2V0UGFyYW1ldGVyKCJpZCIsIGlkKS5nZXRTaW5nbGVSZXN1bHQoKTsNCisJfQ0KKw0KKwlwdWJsaWMgTGlzdDxNYWlsTWVzc2FnZT4gZ2V0KGludCBzdGFydCwgaW50IGNvdW50KSB7DQorCQlyZXR1cm4gZW0uY3JlYXRlTmFtZWRRdWVyeSgiZ2V0TWFpbE1lc3NhZ2VzIiwgTWFpbE1lc3NhZ2UuY2xhc3MpLnNldFBhcmFtZXRlcigic3RhdHVzIiwgU3RhdHVzLk5PTkUpDQorCQkJCS5zZXRGaXJzdFJlc3VsdChzdGFydCkuc2V0TWF4UmVzdWx0cyhjb3VudCkuZ2V0UmVzdWx0TGlzdCgpOw0KKwl9DQorDQorCXB1YmxpYyBMaXN0PE1haWxNZXNzYWdlPiBnZXQoU3RyaW5nIHNlYXJjaCwgaW50IHN0YXJ0LCBpbnQgY291bnQsIFN0cmluZyBvcmRlcikgew0KKwkJcmV0dXJuIGdldChzdGFydCwgY291bnQpOw0KKwl9DQorDQorCXB1YmxpYyBsb25nIGNvdW50KCkgew0KKwkJcmV0dXJuIGVtLmNyZWF0ZU5hbWVkUXVlcnkoImNvdW50TWFpbE1lc3NhZ2VzIiwgTG9uZy5jbGFzcykuc2V0UGFyYW1ldGVyKCJzdGF0dXMiLCBTdGF0dXMuTk9ORSkNCisJCQkJLmdldFNpbmdsZVJlc3VsdCgpOw0KKwl9DQorDQorCXB1YmxpYyBsb25nIGNvdW50KFN0cmluZyBzZWFyY2gpIHsNCisJCXJldHVybiBjb3VudCgpOw0KKwl9DQorDQorCXB1YmxpYyB2b2lkIHJlc2V0U2VuZGluZ1N0YXR1cyhDYWxlbmRhciBkYXRlKSB7DQorCQllbS5jcmVhdGVRdWVyeSgiVVBEQVRFIE1haWxNZXNzYWdlIG0gU0VUIG0uc3RhdHVzID0gOm5vbmVTdGF0dXMgV0hFUkUgbS5zdGF0dXMgPSA6c2VuZGluZ1N0YXR1cyAiICsNCisJCQkJIglBTkQgbS51cGRhdGVkIDwgOmRhdGUiKQ0KKwkJCS5zZXRQYXJhbWV0ZXIoIm5vbmVTdGF0dXMiLCBTdGF0dXMuTk9ORSkNCisJCQkuc2V0UGFyYW1ldGVyKCJzZW5kaW5nU3RhdHVzIiwgU3RhdHVzLlNFTkRJTkcpDQorCQkJLnNldFBhcmFtZXRlcigiZGF0ZSIsIGRhdGUpDQorCQkJLmV4ZWN1dGVVcGRhdGUoKTsNCisJfQ0KKwkNCisJcHVibGljIE1haWxNZXNzYWdlIHVwZGF0ZShNYWlsTWVzc2FnZSBtLCBMb25nIHVzZXJJZCkgew0KKwkJaWYgKG0uZ2V0SWQoKSA9PSBudWxsKSB7DQorCQkJbS5zZXRJbnNlcnRlZChDYWxlbmRhci5nZXRJbnN0YW5jZSgpKTsNCisJCQllbS5wZXJzaXN0KG0pOw0KKwkJfSBlbHNlIHsNCisJCQltLnNldFVwZGF0ZWQoQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKSk7DQorCQkJbSA9CWVtLm1lcmdlKG0pOw0KKwkJfQ0KKwkJcmV0dXJuIG07DQorCX0NCisNCisJcHVibGljIHZvaWQgZGVsZXRlKE1haWxNZXNzYWdlIG0sIExvbmcgdXNlcklkKSB7DQorCQllbS5yZW1vdmUobSk7DQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvYmFzaWMvZGFvL09tVGltZVpvbmVEYW8uamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2Jhc2ljL2Rhby9PbVRpbWVab25lRGFvLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTU2MTQ5MwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2Jhc2ljL2Rhby9PbVRpbWVab25lRGFvLmphdmEKQEAgLTAsMCArMSwxNzIgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5kYW87CisKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eU1hbmFnZXI7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuUGVyc2lzdGVuY2VDb250ZXh0OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlR5cGVkUXVlcnk7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuT21UaW1lWm9uZTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlVzZXI7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLnRyYW5zYWN0aW9uLmFubm90YXRpb24uVHJhbnNhY3Rpb25hbDsKKworQFRyYW5zYWN0aW9uYWwKK3B1YmxpYyBjbGFzcyBPbVRpbWVab25lRGFvIHsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoCisJCQlPbVRpbWVab25lRGFvLmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisKKwlAUGVyc2lzdGVuY2VDb250ZXh0CisJcHJpdmF0ZSBFbnRpdHlNYW5hZ2VyIGVtOworCisJQEF1dG93aXJlZAorCXByaXZhdGUgQ29uZmlndXJhdGlvbkRhbyBjb25maWd1cmF0aW9uRGFvOworCisJLyoqCisJICogR2V0IGEgZGVmYXVsdCB7QGxpbmsgT21UaW1lWm9uZX0sIGlmIHVzZXIgaXMgc2V0LCBpdCB3aWxsIHJldHVybiB0aGUKKwkgKiB7QGxpbmsgT21UaW1lWm9uZX0gb2YgdGhlIHVzZXIsIGlmIG5vdCBpdCB3aWxsIHRyeSB0byBsb2FkIGl0IGZyb20gdGhlCisJICogc2VydmVyJ3MgY29uZmlnCisJICogCisJICogQHBhcmFtIHVzZXIKKwkgKiAgICAgICAgICAgIGNhbiBiZSBudWxsCisJICogQHJldHVybgorCSAqLworCXB1YmxpYyBPbVRpbWVab25lIGdldERlZmF1bHRPbVRpbWVab25lKFVzZXIgdXNlcikgeworCQkKKwkJaWYgKHVzZXIgIT0gbnVsbCAmJiB1c2VyLmdldE9tVGltZVpvbmUoKSAhPSBudWxsKSB7CisJCQlyZXR1cm4gdXNlci5nZXRPbVRpbWVab25lKCk7CisJCX0KKwkJCisJCVN0cmluZyBqTmFtZVRpbWVab25lID0gY29uZmlndXJhdGlvbkRhby5nZXRDb25mVmFsdWUoCisJCQkJImRlZmF1bHQudGltZXpvbmUiLCBTdHJpbmcuY2xhc3MsICJFdXJvcGUvQmVybGluIik7CisJCQorCQlPbVRpbWVab25lIG9tVGltZVpvbmUgPSB0aGlzLmdldE9tVGltZVpvbmUoak5hbWVUaW1lWm9uZSk7CisJCWlmIChvbVRpbWVab25lID09IG51bGwpIHsKKwkJCXRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJDb3VsZCBub3QgZmluZCBkZWZhdWx0LnRpbWV6b25lLCBtaXNjb25maWd1cmF0aW9uIG9mIGRhdGFiYXNlIik7CisJCX0KKwkJcmV0dXJuIG9tVGltZVpvbmU7CisJfQorCisJcHVibGljIExvbmcgYWRkT21UaW1lWm9uZShTdHJpbmcgbmFtZSwgU3RyaW5nIGxhYmVsLCBTdHJpbmcgaUNhbCwKKwkJCUludGVnZXIgb3JkZXJJZCkgeworCQl0cnkgeworCisJCQlPbVRpbWVab25lIG9tVGltZVpvbmUgPSBuZXcgT21UaW1lWm9uZSgpOworCisJCQlvbVRpbWVab25lLnNldEpuYW1lKG5hbWUpOworCQkJb21UaW1lWm9uZS5zZXRMYWJlbChsYWJlbCk7CisJCQlvbVRpbWVab25lLnNldEljYWwoaUNhbCk7CisJCQlvbVRpbWVab25lLnNldE9yZGVySWQob3JkZXJJZCk7CisJCQlvbVRpbWVab25lLnNldEluc2VydGVkKG5ldyBEYXRlKCkpOworCisJCQlvbVRpbWVab25lID0gZW0ubWVyZ2Uob21UaW1lWm9uZSk7CisJCQlMb25nIG9tVGltZVpvbmVJZCA9IG9tVGltZVpvbmUuZ2V0T210aW1lem9uZUlkKCk7CisKKwkJCXJldHVybiBvbVRpbWVab25lSWQ7CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisJCQlsb2cuZXJyb3IoIlthZGRPbVRpbWVab25lXSIsIGV4KTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgTGlzdDxPbVRpbWVab25lPiBnZXRPbVRpbWVab25lcygpIHsKKwkJdHJ5IHsKKwkJCVN0cmluZyBocWwgPSAic2VsZWN0IHNsIGZyb20gT21UaW1lWm9uZSBhcyBzbCAiCisJCQkJCSsgIk9SREVSIEJZIHNsLm9yZGVySWQiOworCisJCQlUeXBlZFF1ZXJ5PE9tVGltZVpvbmU+IHF1ZXJ5ID0gZW0uY3JlYXRlUXVlcnkoaHFsLCBPbVRpbWVab25lLmNsYXNzKTsKKwkJCUxpc3Q8T21UaW1lWm9uZT4gc0xpc3QgPSBxdWVyeS5nZXRSZXN1bHRMaXN0KCk7CisKKwkJCWZvciAoT21UaW1lWm9uZSBvbVRpbWVab25lIDogc0xpc3QpIHsKKwkJCQlvbVRpbWVab25lLnNldEZyb250RW5kTGFiZWwob21UaW1lWm9uZS5nZXRKbmFtZSgpICsgIiAoIgorCQkJCQkJKyBvbVRpbWVab25lLmdldExhYmVsKCkgKyAiKSIpOworCQkJfQorCisJCQlyZXR1cm4gc0xpc3Q7CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZ2V0T21UaW1lWm9uZXNdOiAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBPbVRpbWVab25lIGdldE9tVGltZVpvbmUoU3RyaW5nIGpuYW1lKSB7CisJCXRyeSB7CisJCQlTdHJpbmcgaHFsID0gInNlbGVjdCBzbCBmcm9tIE9tVGltZVpvbmUgYXMgc2wgIgorCQkJCQkrICJXSEVSRSBzbC5qbmFtZSBMSUtFIDpqbmFtZSAiCisJCQkJCSsgIk9SIHNsLmljYWwgTElLRSA6am5hbWUiOworCQkJVHlwZWRRdWVyeTxPbVRpbWVab25lPiBxdWVyeSA9IGVtLmNyZWF0ZVF1ZXJ5KGhxbCwgT21UaW1lWm9uZS5jbGFzcyk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImpuYW1lIiwgam5hbWUpOworCQkJTGlzdDxPbVRpbWVab25lPiBzTGlzdCA9IHF1ZXJ5LmdldFJlc3VsdExpc3QoKTsKKworCQkJaWYgKHNMaXN0LnNpemUoKSA+IDApIHsKKwkJCQlyZXR1cm4gc0xpc3QuZ2V0KDApOworCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldE9tVGltZVpvbmVdOiAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBPbVRpbWVab25lIGdldE9tVGltZVpvbmVCeUljYWwoU3RyaW5nIGljYWwpIHsKKwkJdHJ5IHsKKwkJCVN0cmluZyBocWwgPSAic2VsZWN0IHNsIGZyb20gT21UaW1lWm9uZSBhcyBzbCAiCisJCQkJCSsgIldIRVJFIHNsLmljYWwgTElLRSA6aWNhbCI7CisJCQlUeXBlZFF1ZXJ5PE9tVGltZVpvbmU+IHF1ZXJ5ID0gZW0uY3JlYXRlUXVlcnkoaHFsLCBPbVRpbWVab25lLmNsYXNzKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiaWNhbCIsIGljYWwpOworCQkJTGlzdDxPbVRpbWVab25lPiBzTGlzdCA9IHF1ZXJ5LmdldFJlc3VsdExpc3QoKTsKKworCQkJaWYgKHNMaXN0LnNpemUoKSA+IDApIHsKKwkJCQlyZXR1cm4gc0xpc3QuZ2V0KDApOworCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldE9tVGltZVpvbmVCeUljYWxdOiAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBPbVRpbWVab25lIGdldE9tVGltZVpvbmVCeUlkKExvbmcgb210aW1lem9uZUlkKSB7CisJCXRyeSB7CisJCQlTdHJpbmcgaHFsID0gInNlbGVjdCBzbCBmcm9tIE9tVGltZVpvbmUgYXMgc2wgIgorCQkJCQkrICJXSEVSRSBzbC5vbXRpbWV6b25lSWQgPSA6b210aW1lem9uZUlkIjsKKwkJCVR5cGVkUXVlcnk8T21UaW1lWm9uZT4gcXVlcnkgPSBlbS5jcmVhdGVRdWVyeShocWwsIE9tVGltZVpvbmUuY2xhc3MpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJvbXRpbWV6b25lSWQiLCBvbXRpbWV6b25lSWQpOworCQkJTGlzdDxPbVRpbWVab25lPiBzTGlzdCA9IHF1ZXJ5LmdldFJlc3VsdExpc3QoKTsKKworCQkJaWYgKHNMaXN0LnNpemUoKSA+IDApIHsKKwkJCQlyZXR1cm4gc0xpc3QuZ2V0KDApOworCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldE9tVGltZVpvbmVCeUlkXTogIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2Jhc2ljL2Rhby9TT0FQTG9naW5EYW8uamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2Jhc2ljL2Rhby9TT0FQTG9naW5EYW8uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTU5ZTVkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvYmFzaWMvZGFvL1NPQVBMb2dpbkRhby5qYXZhCkBAIC0wLDAgKzEsMTI2IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuZGFvOworCitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHlNYW5hZ2VyOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlBlcnNpc3RlbmNlQ29udGV4dDsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UeXBlZFF1ZXJ5OworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLlNPQVBMb2dpbjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5jcnlwdC5NYW5hZ2VDcnlwdFN0eWxlOworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5BdXRvd2lyZWQ7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay50cmFuc2FjdGlvbi5hbm5vdGF0aW9uLlRyYW5zYWN0aW9uYWw7CisKK0BUcmFuc2FjdGlvbmFsCitwdWJsaWMgY2xhc3MgU09BUExvZ2luRGFvIHsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoCisJCQlTT0FQTG9naW5EYW8uY2xhc3MsIE9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKworCUBQZXJzaXN0ZW5jZUNvbnRleHQKKwlwcml2YXRlIEVudGl0eU1hbmFnZXIgZW07CisJQEF1dG93aXJlZAorCXByaXZhdGUgTWFuYWdlQ3J5cHRTdHlsZSBtYW5hZ2VDcnlwdFN0eWxlOworCisJcHVibGljIFN0cmluZyBhZGRTT0FQTG9naW4oU3RyaW5nIHNlc3Npb25IYXNoLCBMb25nIHJvb21faWQsCisJCQlib29sZWFuIGJlY29tZW1vZGVyYXRvciwgYm9vbGVhbiBzaG93QXVkaW9WaWRlb1Rlc3QsCisJCQlib29sZWFuIGFsbG93U2FtZVVSTE11bHRpcGxlVGltZXMsIExvbmcgcmVjb3JkaW5nX2lkLAorCQkJYm9vbGVhbiBzaG93Tmlja05hbWVEaWFsb2csIFN0cmluZyBsYW5kaW5nWm9uZSwKKwkJCWJvb2xlYW4gYWxsb3dSZWNvcmRpbmcpIHsKKwkJdHJ5IHsKKworCQkJU3RyaW5nIHRoaXN0aW1lID0gIlRJTUVfIiArIChuZXcgRGF0ZSgpLmdldFRpbWUoKSk7CisKKwkJCVN0cmluZyBoYXNoID0gbWFuYWdlQ3J5cHRTdHlsZS5nZXRJbnN0YW5jZU9mQ3J5cHQoKQorCQkJCQkuY3JlYXRlUGFzc1BocmFzZSh0aGlzdGltZSk7CisKKwkJCVNPQVBMb2dpbiBzb2FwTG9naW4gPSBuZXcgU09BUExvZ2luKCk7CisJCQlzb2FwTG9naW4uc2V0Q3JlYXRlZChuZXcgRGF0ZSgpKTsKKwkJCXNvYXBMb2dpbi5zZXRVc2VkKGZhbHNlKTsKKwkJCXNvYXBMb2dpbi5zZXRSb29tX2lkKHJvb21faWQpOworCQkJc29hcExvZ2luLnNldEFsbG93U2FtZVVSTE11bHRpcGxlVGltZXMoYWxsb3dTYW1lVVJMTXVsdGlwbGVUaW1lcyk7CisJCQlzb2FwTG9naW4uc2V0SGFzaChoYXNoKTsKKwkJCXNvYXBMb2dpbi5zZXRSb29tUmVjb3JkaW5nSWQocmVjb3JkaW5nX2lkKTsKKwkJCXNvYXBMb2dpbi5zZXRTZXNzaW9uSGFzaChzZXNzaW9uSGFzaCk7CisJCQlzb2FwTG9naW4uc2V0QmVjb21lbW9kZXJhdG9yKGJlY29tZW1vZGVyYXRvcik7CisJCQlzb2FwTG9naW4uc2V0U2hvd0F1ZGlvVmlkZW9UZXN0KHNob3dBdWRpb1ZpZGVvVGVzdCk7CisJCQlzb2FwTG9naW4uc2V0U2hvd05pY2tOYW1lRGlhbG9nKHNob3dOaWNrTmFtZURpYWxvZyk7CisJCQlzb2FwTG9naW4uc2V0TGFuZGluZ1pvbmUobGFuZGluZ1pvbmUpOworCQkJc29hcExvZ2luLnNldEFsbG93UmVjb3JkaW5nKGFsbG93UmVjb3JkaW5nKTsKKworCQkJc29hcExvZ2luID0gZW0ubWVyZ2Uoc29hcExvZ2luKTsKKwkJCUxvbmcgc29hcExvZ2luSWQgPSBzb2FwTG9naW4uZ2V0U29hcExvZ2luSWQoKTsKKworCQkJaWYgKHNvYXBMb2dpbklkID4gMCkgeworCQkJCXJldHVybiBoYXNoOworCQkJfSBlbHNlIHsKKwkJCQl0aHJvdyBuZXcgRXhjZXB0aW9uKCJDb3VsZCBub3Qgc3RvcmUgU09BUExvZ2luIik7CisJCQl9CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbYWRkU09BUExvZ2luXTogIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgU09BUExvZ2luIGdldFNPQVBMb2dpbkJ5SGFzaChTdHJpbmcgaGFzaCkgeworCQl0cnkgeworCQkJU3RyaW5nIGhxbCA9ICJzZWxlY3Qgc2wgZnJvbSBTT0FQTG9naW4gYXMgc2wgIgorCQkJCQkrICJXSEVSRSBzbC5oYXNoIExJS0UgOmhhc2giOworCQkJVHlwZWRRdWVyeTxTT0FQTG9naW4+IHF1ZXJ5ID0gZW0uY3JlYXRlUXVlcnkoaHFsLCBTT0FQTG9naW4uY2xhc3MpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJoYXNoIiwgaGFzaCk7CisJCQlMaXN0PFNPQVBMb2dpbj4gc0xpc3QgPSBxdWVyeS5nZXRSZXN1bHRMaXN0KCk7CisKKwkJCWlmIChzTGlzdC5zaXplKCkgPiAxKSB7CisJCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbigKKwkJCQkJCSJ0aGVyZSBhcmUgbW9yZSB0aGVuIG9uZSBTT0FQTG9naW4gd2l0aCBpZGVudGljYWwgaGFzaCEgIgorCQkJCQkJCQkrIGhhc2gpOworCQkJfQorCisJCQlpZiAoc0xpc3Quc2l6ZSgpID09IDEpIHsKKwkJCQlyZXR1cm4gc0xpc3QuZ2V0KDApOworCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldFNPQVBMb2dpbkJ5SGFzaF06ICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIHZvaWQgdXBkYXRlU09BUExvZ2luKFNPQVBMb2dpbiBzb2FwTG9naW4pIHsKKwkJdHJ5IHsKKwkJCWlmIChzb2FwTG9naW4uZ2V0U29hcExvZ2luSWQoKSA9PSAwKSB7CisJCQkJZW0ucGVyc2lzdChzb2FwTG9naW4pOworCQkJfSBlbHNlIHsKKwkJCQlpZiAoIWVtLmNvbnRhaW5zKHNvYXBMb2dpbikpIHsKKwkJCQkJZW0ubWVyZ2Uoc29hcExvZ2luKTsKKwkJCQl9CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW3VwZGF0ZVNPQVBMb2dpbl06ICIsIGV4Mik7CisJCX0KKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2Jhc2ljL2Rhby9TZXJ2ZXJEYW8uamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2Jhc2ljL2Rhby9TZXJ2ZXJEYW8uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Mjg1NzM0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvYmFzaWMvZGFvL1NlcnZlckRhby5qYXZhCkBAIC0wLDAgKzEsMjExIEBACisvKg0KKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgKiB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuZGFvOw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQorDQoraW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eU1hbmFnZXI7DQoraW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk5vUmVzdWx0RXhjZXB0aW9uOw0KK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5QZXJzaXN0ZW5jZUNvbnRleHQ7DQoraW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlR5cGVkUXVlcnk7DQorDQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5JRGF0YVByb3ZpZGVyRGFvOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuZGFvLlVzZXJzRGFvOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5TZXJ2ZXI7DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLkRhb0hlbHBlcjsNCitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsNCitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uQXV0b3dpcmVkOw0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLnRyYW5zYWN0aW9uLmFubm90YXRpb24uVHJhbnNhY3Rpb25hbDsNCisNCisvKioNCisgKiANCisgKiBDUlVEIGZvciB7QGxpbmsgU2VydmVyfQ0KKyAqIA0KKyAqIEBhdXRob3Igc29sb21heCwgc2ViYXdhZ25lcg0KKyAqIA0KKyAqLw0KK0BUcmFuc2FjdGlvbmFsDQorcHVibGljIGNsYXNzIFNlcnZlckRhbyBpbXBsZW1lbnRzIElEYXRhUHJvdmlkZXJEYW88U2VydmVyPiB7DQorCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoDQorCQkJU2VydmVyRGFvLmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7DQorCXB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nW10gc2VhcmNoRmllbGRzID0geyAibmFtZSIsICJhZGRyZXNzIiwgImNvbW1lbnQiIH07DQorDQorCUBQZXJzaXN0ZW5jZUNvbnRleHQNCisJcHJpdmF0ZSBFbnRpdHlNYW5hZ2VyIGVtOw0KKw0KKwlAQXV0b3dpcmVkDQorCXByaXZhdGUgVXNlcnNEYW8gdXNlcnNEYW87DQorCQ0KKwkvKioNCisJICogR2V0IGEgbGlzdCBvZiBhbGwgYXZhaWxhYmxlIHNlcnZlcnMNCisJICogDQorCSAqIEByZXR1cm4NCisJICovDQorCXB1YmxpYyBMaXN0PFNlcnZlcj4gZ2V0U2VydmVyTGlzdCgpIHsNCisJCWxvZy5kZWJ1ZygiZ2V0U2VydmVyTGlzdCBlbnRlciIpOw0KKwkJVHlwZWRRdWVyeTxTZXJ2ZXI+IHEgPSBlbS5jcmVhdGVOYW1lZFF1ZXJ5KCJnZXRBbGxTZXJ2ZXJzIiwNCisJCQkJU2VydmVyLmNsYXNzKTsNCisJCXJldHVybiBxLmdldFJlc3VsdExpc3QoKTsNCisJfQ0KKw0KKwkvKg0KKwkgKiAobm9uLUphdmFkb2MpDQorCSAqIA0KKwkgKiBAc2VlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuT21EQU8jZ2V0KGludCwgaW50KQ0KKwkgKi8NCisJcHVibGljIExpc3Q8U2VydmVyPiBnZXQoaW50IHN0YXJ0LCBpbnQgbWF4KSB7DQorCQlUeXBlZFF1ZXJ5PFNlcnZlcj4gcSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoImdldEFsbFNlcnZlcnMiLA0KKwkJCQlTZXJ2ZXIuY2xhc3MpOw0KKwkJcS5zZXRGaXJzdFJlc3VsdChzdGFydCk7DQorCQlxLnNldE1heFJlc3VsdHMobWF4KTsNCisJCXJldHVybiBxLmdldFJlc3VsdExpc3QoKTsNCisJfQ0KKw0KKwlwdWJsaWMgTGlzdDxTZXJ2ZXI+IGdldChTdHJpbmcgc2VhcmNoLCBpbnQgc3RhcnQsIGludCBjb3VudCwgU3RyaW5nIG9yZGVyKSB7DQorCQlUeXBlZFF1ZXJ5PFNlcnZlcj4gcSA9IGVtLmNyZWF0ZVF1ZXJ5KERhb0hlbHBlci5nZXRTZWFyY2hRdWVyeSgNCisJCQkJIlNlcnZlciIsICJzIiwgc2VhcmNoLCB0cnVlLCBmYWxzZSwgb3JkZXIsIHNlYXJjaEZpZWxkcyksDQorCQkJCVNlcnZlci5jbGFzcyk7DQorCQlxLnNldEZpcnN0UmVzdWx0KHN0YXJ0KTsNCisJCXEuc2V0TWF4UmVzdWx0cyhjb3VudCk7DQorCQlyZXR1cm4gcS5nZXRSZXN1bHRMaXN0KCk7DQorCX0NCisNCisJLyoqDQorCSAqIGdldCB0aGUgbGlzdCBvZiBhbGwgc2VydmVycyBpbiB0aGUgY2x1c3RlciB0aGF0IGFyZSByZWFkeSB0byByZWNlaXZlIGENCisJICogcGluZyAoYWN0aXZlID0gdHJ1ZSkNCisJICogDQorCSAqIEByZXR1cm4NCisJICovDQorCXB1YmxpYyBMaXN0PFNlcnZlcj4gZ2V0QWN0aXZlU2VydmVycygpIHsNCisJCXJldHVybiBlbS5jcmVhdGVOYW1lZFF1ZXJ5KCJnZXRBY3RpdmVTZXJ2ZXJzIiwgU2VydmVyLmNsYXNzKQ0KKwkJCQkuZ2V0UmVzdWx0TGlzdCgpOw0KKwl9DQorDQorCS8qDQorCSAqIChub24tSmF2YWRvYykNCisJICogDQorCSAqIEBzZWUgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5PbURBTyNjb3VudCgpDQorCSAqLw0KKwlwdWJsaWMgbG9uZyBjb3VudCgpIHsNCisJCWxvZy5kZWJ1ZygiZ2V0U2VydmVyQ291bnQgZW50ZXIiKTsNCisJCVR5cGVkUXVlcnk8TG9uZz4gcSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoImdldFNlcnZlckNvdW50IiwgTG9uZy5jbGFzcyk7DQorDQorCQlyZXR1cm4gcS5nZXRTaW5nbGVSZXN1bHQoKTsNCisJfQ0KKw0KKwlwdWJsaWMgbG9uZyBjb3VudChTdHJpbmcgc2VhcmNoKSB7DQorCQlUeXBlZFF1ZXJ5PExvbmc+IHEgPSBlbS5jcmVhdGVRdWVyeShEYW9IZWxwZXIuZ2V0U2VhcmNoUXVlcnkoIlNlcnZlciIsDQorCQkJCSJzIiwgc2VhcmNoLCB0cnVlLCB0cnVlLCBudWxsLCBzZWFyY2hGaWVsZHMpLCBMb25nLmNsYXNzKTsNCisJCXJldHVybiBxLmdldFNpbmdsZVJlc3VsdCgpOw0KKwl9DQorDQorCS8qDQorCSAqIChub24tSmF2YWRvYykNCisJICogDQorCSAqIEBzZWUgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5PbURBTyNnZXQobG9uZykNCisJICovDQorCXB1YmxpYyBTZXJ2ZXIgZ2V0KGxvbmcgaWQpIHsNCisJCVNlcnZlciByZXN1bHQgPSBudWxsOw0KKwkJbG9nLmRlYnVnKCJnZXRTZXJ2ZXIgZW50ZXIsIGlkID0gIiArIGlkKTsNCisJCVR5cGVkUXVlcnk8U2VydmVyPiBxID0gZW0uY3JlYXRlTmFtZWRRdWVyeSgiZ2V0U2VydmVyQnlJZCIsDQorCQkJCVNlcnZlci5jbGFzcyk7DQorCQlxLnNldFBhcmFtZXRlcigiaWQiLCBpZCk7DQorCQl0cnkgew0KKwkJCXJlc3VsdCA9IHEuZ2V0U2luZ2xlUmVzdWx0KCk7DQorCQl9IGNhdGNoIChOb1Jlc3VsdEV4Y2VwdGlvbiBlKSB7DQorCQkJLy8gbm9vcA0KKwkJfQ0KKwkJcmV0dXJuIHJlc3VsdDsNCisJfQ0KKw0KKwkvKioNCisJICogR2V0IHNlcnZlciBieSBpdHMgYWRkcmVzcw0KKwkgKiANCisJICogQHBhcmFtIGFkZHJlc3MNCisJICogQHJldHVybg0KKwkgKi8NCisJcHVibGljIFNlcnZlciBnZXRTZXJ2ZXJCeUFkZHJlc3MoU3RyaW5nIGFkZHJlc3MpIHsNCisJCWxvZy5kZWJ1ZygiZ2V0U2VydmVyIGVudGVyLCBhZGRyZXNzID0gIiArIGFkZHJlc3MpOw0KKwkJVHlwZWRRdWVyeTxTZXJ2ZXI+IHEgPSBlbS5jcmVhdGVOYW1lZFF1ZXJ5KCJnZXRTZXJ2ZXJCeUFkZHJlc3MiLA0KKwkJCQlTZXJ2ZXIuY2xhc3MpOw0KKwkJcS5zZXRQYXJhbWV0ZXIoImFkZHJlc3MiLCBhZGRyZXNzKTsNCisJCUxpc3Q8U2VydmVyPiBsaXN0ID0gcS5nZXRSZXN1bHRMaXN0KCk7DQorCQlyZXR1cm4gbGlzdC5zaXplKCkgPiAwID8gbGlzdC5nZXQoMCkgOiBudWxsOw0KKwl9DQorDQorCS8qDQorCSAqIChub24tSmF2YWRvYykNCisJICogDQorCSAqIEBzZWUNCisJICogb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5PbURBTyN1cGRhdGUob3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UNCisJICogLmJlYW5zLk9tRW50aXR5LCBsb25nKQ0KKwkgKi8NCisJcHVibGljIFNlcnZlciB1cGRhdGUoU2VydmVyIGVudGl0eSwgTG9uZyB1c2VySWQpIHsNCisJCWVudGl0eS5zZXREZWxldGVkKGZhbHNlKTsNCisJCWlmIChlbnRpdHkuZ2V0SWQoKSA+IDApIHsNCisJCQllbnRpdHkuc2V0VXBkYXRlZChuZXcgRGF0ZSgpKTsNCisJCQlpZiAodXNlcklkICE9IG51bGwpIHsNCisJCQkJZW50aXR5LnNldFVwZGF0ZWRieSh1c2Vyc0Rhby5nZXQodXNlcklkKSk7DQorCQkJfQ0KKwkJCWVtLm1lcmdlKGVudGl0eSk7DQorCQl9IGVsc2Ugew0KKwkJCWVudGl0eS5zZXRJbnNlcnRlZChuZXcgRGF0ZSgpKTsNCisJCQlpZiAodXNlcklkICE9IG51bGwpIHsNCisJCQkJZW50aXR5LnNldEluc2VydGVkYnkodXNlcnNEYW8uZ2V0KHVzZXJJZCkpOw0KKwkJCX0NCisJCQllbS5wZXJzaXN0KGVudGl0eSk7DQorCQl9DQorCQlyZXR1cm4gZW50aXR5Ow0KKwl9DQorDQorCS8qDQorCSAqIChub24tSmF2YWRvYykNCisJICogDQorCSAqIEBzZWUNCisJICogb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5PbURBTyNkZWxldGUob3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UNCisJICogLmJlYW5zLk9tRW50aXR5LCBsb25nKQ0KKwkgKi8NCisJcHVibGljIHZvaWQgZGVsZXRlKFNlcnZlciBlbnRpdHksIExvbmcgdXNlcklkKSB7DQorCQlpZiAoZW50aXR5LmdldElkKCkgPiAwKSB7DQorCQkJZW50aXR5LnNldFVwZGF0ZWQobmV3IERhdGUoKSk7DQorCQkJaWYgKHVzZXJJZCAhPSBudWxsKSB7DQorCQkJCWVudGl0eS5zZXRVcGRhdGVkYnkodXNlcnNEYW8uZ2V0KHVzZXJJZCkpOw0KKwkJCX0NCisJCQllbnRpdHkuc2V0RGVsZXRlZCh0cnVlKTsNCisJCQllbS5tZXJnZShlbnRpdHkpOw0KKwkJfQ0KKwl9DQorDQorCS8qKg0KKwkgKiBnZXQge0BsaW5rIFNlcnZlcn0gYnkgbmFtZQ0KKwkgKiANCisJICogQHBhcmFtIG5hbWUNCisJICogQHJldHVybg0KKwkgKi8NCisJcHVibGljIExpc3Q8U2VydmVyPiBnZXRTZXJ2ZXJzQnlOYW1lKFN0cmluZyBuYW1lKSB7DQorCQlUeXBlZFF1ZXJ5PFNlcnZlcj4gcSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoImdldFNlcnZlckJ5TmFtZSIsDQorCQkJCVNlcnZlci5jbGFzcyk7DQorCQlxLnNldFBhcmFtZXRlcigibmFtZSIsIG5hbWUpOw0KKwkJcmV0dXJuIHEuZ2V0UmVzdWx0TGlzdCgpOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2JlYW5zL2Jhc2ljL0Vycm9yUmVzdWx0LmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9iZWFucy9iYXNpYy9FcnJvclJlc3VsdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjNzU0OWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9iZWFucy9iYXNpYy9FcnJvclJlc3VsdC5qYXZhCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iZWFucy5iYXNpYzsKKworcHVibGljIGNsYXNzIEVycm9yUmVzdWx0IHsKKwkKKwlwcml2YXRlIExvbmcgZXJyb3JJZDsKKwlwcml2YXRlIFN0cmluZyBlcnJtZXNzYWdlOworCXByaXZhdGUgU3RyaW5nIGVycm9ydHlwZTsKKworCXB1YmxpYyBFcnJvclJlc3VsdChMb25nIGVycm9ySWQsIFN0cmluZyBlcnJtZXNzYWdlLCBTdHJpbmcgZXJyb3J0eXBlKSB7CisJCXN1cGVyKCk7CisJCXRoaXMuZXJyb3JJZCA9IGVycm9ySWQ7CisJCXRoaXMuZXJybWVzc2FnZSA9IGVycm1lc3NhZ2U7CisJCXRoaXMuZXJyb3J0eXBlID0gZXJyb3J0eXBlOworCX0KKworCXB1YmxpYyBMb25nIGdldEVycm9ySWQoKSB7CisJCXJldHVybiBlcnJvcklkOworCX0KKworCXB1YmxpYyB2b2lkIHNldEVycm9ySWQoTG9uZyBlcnJvcklkKSB7CisJCXRoaXMuZXJyb3JJZCA9IGVycm9ySWQ7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRFcnJtZXNzYWdlKCkgeworCQlyZXR1cm4gZXJybWVzc2FnZTsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRFcnJtZXNzYWdlKFN0cmluZyBlcnJtZXNzYWdlKSB7CisJCXRoaXMuZXJybWVzc2FnZSA9IGVycm1lc3NhZ2U7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRFcnJvcnR5cGUoKSB7CisJCXJldHVybiBlcnJvcnR5cGU7CisJfQorCisJcHVibGljIHZvaWQgc2V0RXJyb3J0eXBlKFN0cmluZyBlcnJvcnR5cGUpIHsKKwkJdGhpcy5lcnJvcnR5cGUgPSBlcnJvcnR5cGU7CisJfQorCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9iZWFucy9iYXNpYy9TZWFyY2hSZXN1bHQuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2JlYW5zL2Jhc2ljL1NlYXJjaFJlc3VsdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjNzI5MTEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9iZWFucy9iYXNpYy9TZWFyY2hSZXN1bHQuamF2YQpAQCAtMCwwICsxLDU0IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmVhbnMuYmFzaWM7CisKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKKworCitwdWJsaWMgY2xhc3MgU2VhcmNoUmVzdWx0PFQ+IHsKKwlwcml2YXRlIFN0cmluZyBvYmplY3ROYW1lOworCXByaXZhdGUgTG9uZyByZWNvcmRzOworCXByaXZhdGUgQ29sbGVjdGlvbjxUPiByZXN1bHQ7CisJcHJpdmF0ZSBMb25nIGVycm9ySWQ7CisJCisJcHVibGljIFN0cmluZyBnZXRPYmplY3ROYW1lKCkgeworCQlyZXR1cm4gb2JqZWN0TmFtZTsKKwl9CisJcHVibGljIHZvaWQgc2V0T2JqZWN0TmFtZShTdHJpbmcgb2JqZWN0TmFtZSkgeworCQl0aGlzLm9iamVjdE5hbWUgPSBvYmplY3ROYW1lOworCX0KKwlwdWJsaWMgTG9uZyBnZXRSZWNvcmRzKCkgeworCQlyZXR1cm4gcmVjb3JkczsKKwl9CisJcHVibGljIHZvaWQgc2V0UmVjb3JkcyhMb25nIHJlY29yZHMpIHsKKwkJdGhpcy5yZWNvcmRzID0gcmVjb3JkczsKKwl9CisJcHVibGljIENvbGxlY3Rpb248VD4gZ2V0UmVzdWx0KCkgeworCQlyZXR1cm4gcmVzdWx0OworCX0KKwlwdWJsaWMgdm9pZCBzZXRSZXN1bHQoQ29sbGVjdGlvbjxUPiByZXN1bHQpIHsKKwkJdGhpcy5yZXN1bHQgPSByZXN1bHQ7CisJfQorCXB1YmxpYyBMb25nIGdldEVycm9ySWQoKSB7CisJCXJldHVybiBlcnJvcklkOworCX0KKwlwdWJsaWMgdm9pZCBzZXRFcnJvcklkKExvbmcgZXJyb3JJZCkgeworCQl0aGlzLmVycm9ySWQgPSBlcnJvcklkOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2JlYW5zL2ZpbGVzL0ZpbGVzT2JqZWN0LmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9iZWFucy9maWxlcy9GaWxlc09iamVjdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyNGU0NzUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9iZWFucy9maWxlcy9GaWxlc09iamVjdC5qYXZhCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iZWFucy5maWxlczsKKworLyoqCisgKiBUaGlzIE9iamVjdCB3aWxsIHJlcHJlc2VudCBhIEZpbGUgb24gdGhlIEZpbGUtU3lzdGVtCisgKiBAYXV0aG9yIHNlYmFzdGlhbndhZ25lcgorICoKKyAqLworcHVibGljIGNsYXNzIEZpbGVzT2JqZWN0IHsKKwkKKwlwcml2YXRlIFN0cmluZyBmaWxlTmFtZTsKKwlwcml2YXRlIFN0cmluZyBmaWxlTmFtZVB1cmU7CisJcHJpdmF0ZSBTdHJpbmcgZmlsZU5hbWVFeHQ7CisJcHJpdmF0ZSBTdHJpbmcgbGFzdE1vZGlmaWVkOworCXByaXZhdGUgU3RyaW5nIGZpbGVCeXRlczsKKwlwcml2YXRlIFN0cmluZyBpc2ltYWdlOworCXB1YmxpYyBTdHJpbmcgZ2V0RmlsZU5hbWUoKSB7CisJCXJldHVybiBmaWxlTmFtZTsKKwl9CisJcHVibGljIHZvaWQgc2V0RmlsZU5hbWUoU3RyaW5nIGZpbGVOYW1lKSB7CisJCXRoaXMuZmlsZU5hbWUgPSBmaWxlTmFtZTsKKwl9CisJcHVibGljIFN0cmluZyBnZXRGaWxlTmFtZVB1cmUoKSB7CisJCXJldHVybiBmaWxlTmFtZVB1cmU7CisJfQorCXB1YmxpYyB2b2lkIHNldEZpbGVOYW1lUHVyZShTdHJpbmcgZmlsZU5hbWVQdXJlKSB7CisJCXRoaXMuZmlsZU5hbWVQdXJlID0gZmlsZU5hbWVQdXJlOworCX0KKwlwdWJsaWMgU3RyaW5nIGdldEZpbGVOYW1lRXh0KCkgeworCQlyZXR1cm4gZmlsZU5hbWVFeHQ7CisJfQorCXB1YmxpYyB2b2lkIHNldEZpbGVOYW1lRXh0KFN0cmluZyBmaWxlTmFtZUV4dCkgeworCQl0aGlzLmZpbGVOYW1lRXh0ID0gZmlsZU5hbWVFeHQ7CisJfQorCXB1YmxpYyBTdHJpbmcgZ2V0TGFzdE1vZGlmaWVkKCkgeworCQlyZXR1cm4gbGFzdE1vZGlmaWVkOworCX0KKwlwdWJsaWMgdm9pZCBzZXRMYXN0TW9kaWZpZWQoU3RyaW5nIGxhc3RNb2RpZmllZCkgeworCQl0aGlzLmxhc3RNb2RpZmllZCA9IGxhc3RNb2RpZmllZDsKKwl9CisJcHVibGljIFN0cmluZyBnZXRGaWxlQnl0ZXMoKSB7CisJCXJldHVybiBmaWxlQnl0ZXM7CisJfQorCXB1YmxpYyB2b2lkIHNldEZpbGVCeXRlcyhTdHJpbmcgZmlsZUJ5dGVzKSB7CisJCXRoaXMuZmlsZUJ5dGVzID0gZmlsZUJ5dGVzOworCX0KKwlwdWJsaWMgU3RyaW5nIGdldElzaW1hZ2UoKSB7CisJCXJldHVybiBpc2ltYWdlOworCX0KKwlwdWJsaWMgdm9pZCBzZXRJc2ltYWdlKFN0cmluZyBpc2ltYWdlKSB7CisJCXRoaXMuaXNpbWFnZSA9IGlzaW1hZ2U7CisJfQorCQorCQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvYmVhbnMvZmlsZXMvRm9sZGVyc09iamVjdC5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvYmVhbnMvZmlsZXMvRm9sZGVyc09iamVjdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3MzY4NzAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9iZWFucy9maWxlcy9Gb2xkZXJzT2JqZWN0LmphdmEKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJlYW5zLmZpbGVzOworLyoqCisgKiBSZXByZXNlbnRzIGEgRm9sZGVyIGluIHRoZSBGaWxlIFN5c3RlbQorICogQGF1dGhvciBzZWJhc3RpYW53YWduZXIKKyAqCisgKi8KK3B1YmxpYyBjbGFzcyBGb2xkZXJzT2JqZWN0IHsKKwkKKwlwcml2YXRlIFN0cmluZyBmb2xkZXJOYW1lOworCXByaXZhdGUgU3RyaW5nIGxhc3RNb2RpZmllZDsKKwkKKwlwdWJsaWMgU3RyaW5nIGdldEZvbGRlck5hbWUoKSB7CisJCXJldHVybiBmb2xkZXJOYW1lOworCX0KKwlwdWJsaWMgdm9pZCBzZXRGb2xkZXJOYW1lKFN0cmluZyBmb2xkZXJOYW1lKSB7CisJCXRoaXMuZm9sZGVyTmFtZSA9IGZvbGRlck5hbWU7CisJfQorCXB1YmxpYyBTdHJpbmcgZ2V0TGFzdE1vZGlmaWVkKCkgeworCQlyZXR1cm4gbGFzdE1vZGlmaWVkOworCX0KKwlwdWJsaWMgdm9pZCBzZXRMYXN0TW9kaWZpZWQoU3RyaW5nIGxhc3RNb2RpZmllZCkgeworCQl0aGlzLmxhc3RNb2RpZmllZCA9IGxhc3RNb2RpZmllZDsKKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2JlYW5zL2ZpbGVzL0xpYmVyYXJ5T2JqZWN0LmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9iZWFucy9maWxlcy9MaWJlcmFyeU9iamVjdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3YTA3MzcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9iZWFucy9maWxlcy9MaWJlcmFyeU9iamVjdC5qYXZhCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iZWFucy5maWxlczsKKy8qKgorICogUmVzcG9uc2Ugb2Ygb25lIExpYnJhcnktRmlsZXMtUmVxdWVzdAorICogQGF1dGhvciBzZWJhc3RpYW53YWduZXIKKyAqCisgKi8KK2ltcG9ydCBqYXZhLnV0aWwuTGlua2VkTGlzdDsKKworcHVibGljIGNsYXNzIExpYmVyYXJ5T2JqZWN0IHsKKwkKKwkvL1RoZXNlIE9iamVjdHMgaGVyZSBzaG91bGQgb25seSBiZSBpbml0aWFsaXplZCBpZiBuZWVkZWQsIAorCS8vYW4gZW1wdHkgTGlua2VkTGlzdCB0aG9yd3MgYSBTZXJ2aWNlSW52b2thdGlvblRhcmdldC1FeGNlcHRpb24gKG1ha2VzIG5vIHNlbnNlIHRvIG1lIGJ1dCBpdAorCS8vaXMgdGhlIHdheSBpbiBBeGlzMiAxLjMKKwlwcml2YXRlIExpbmtlZExpc3Q8RmlsZXNPYmplY3Q+IGZpbGVzTGlzdDsKKwlwcml2YXRlIExpbmtlZExpc3Q8Rm9sZGVyc09iamVjdD4gZm9sZGVyc0xpc3Q7CisJcHJpdmF0ZSBQcmVzZW50YXRpb25PYmplY3QgcHJlc2VudGF0aW9uT2JqZWN0OworCXByaXZhdGUgU3RyaW5nIGVycm9yOworCXB1YmxpYyBMaW5rZWRMaXN0PEZpbGVzT2JqZWN0PiBnZXRGaWxlc0xpc3QoKSB7CisJCXJldHVybiBmaWxlc0xpc3Q7CisJfQorCXB1YmxpYyB2b2lkIHNldEZpbGVzTGlzdChMaW5rZWRMaXN0PEZpbGVzT2JqZWN0PiBmaWxlc0xpc3QpIHsKKwkJdGhpcy5maWxlc0xpc3QgPSBmaWxlc0xpc3Q7CisJfQorCXB1YmxpYyBMaW5rZWRMaXN0PEZvbGRlcnNPYmplY3Q+IGdldEZvbGRlcnNMaXN0KCkgeworCQlyZXR1cm4gZm9sZGVyc0xpc3Q7CisJfQorCXB1YmxpYyB2b2lkIHNldEZvbGRlcnNMaXN0KExpbmtlZExpc3Q8Rm9sZGVyc09iamVjdD4gZm9sZGVyc0xpc3QpIHsKKwkJdGhpcy5mb2xkZXJzTGlzdCA9IGZvbGRlcnNMaXN0OworCX0KKwlwdWJsaWMgUHJlc2VudGF0aW9uT2JqZWN0IGdldFByZXNlbnRhdGlvbk9iamVjdCgpIHsKKwkJcmV0dXJuIHByZXNlbnRhdGlvbk9iamVjdDsKKwl9CisJcHVibGljIHZvaWQgc2V0UHJlc2VudGF0aW9uT2JqZWN0KFByZXNlbnRhdGlvbk9iamVjdCBwcmVzZW50YXRpb25PYmplY3QpIHsKKwkJdGhpcy5wcmVzZW50YXRpb25PYmplY3QgPSBwcmVzZW50YXRpb25PYmplY3Q7CisJfQorCXB1YmxpYyBTdHJpbmcgZ2V0RXJyb3IoKSB7CisJCXJldHVybiBlcnJvcjsKKwl9CisJcHVibGljIHZvaWQgc2V0RXJyb3IoU3RyaW5nIGVycm9yKSB7CisJCXRoaXMuZXJyb3IgPSBlcnJvcjsKKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2JlYW5zL2ZpbGVzL1ByZXNlbnRhdGlvbk9iamVjdC5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvYmVhbnMvZmlsZXMvUHJlc2VudGF0aW9uT2JqZWN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Y5YTY5NgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2JlYW5zL2ZpbGVzL1ByZXNlbnRhdGlvbk9iamVjdC5qYXZhCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iZWFucy5maWxlczsKKworaW1wb3J0IGphdmEudXRpbC5MaW5rZWRMaXN0OworLyoqCisgKiBSZXByZXNlbnRzIGEgUGFyc2VkIFZlcnNpb24gb2YgYSBMaWJyYXJ5LUZpbGUtQ29udmVydGVkIE9iamVjdAorICogQGF1dGhvciBzZWJhc3RpYW53YWduZXIKKyAqCisgKi8KK3B1YmxpYyBjbGFzcyBQcmVzZW50YXRpb25PYmplY3QgeworCQorCXByaXZhdGUgRmlsZXNPYmplY3Qgb3JpZ2luYWxEb2N1bWVudDsKKwlwcml2YXRlIEZpbGVzT2JqZWN0IHBkZkRvY3VtZW50OworCXByaXZhdGUgRmlsZXNPYmplY3Qgc3dmRG9jdW1lbnQ7CisJTGlua2VkTGlzdDxGaWxlc09iamVjdD4gdGh1bWJzOworCisJcHVibGljIEZpbGVzT2JqZWN0IGdldE9yaWdpbmFsRG9jdW1lbnQoKSB7CisJCXJldHVybiBvcmlnaW5hbERvY3VtZW50OworCX0KKwlwdWJsaWMgdm9pZCBzZXRPcmlnaW5hbERvY3VtZW50KEZpbGVzT2JqZWN0IG9yaWdpbmFsRG9jdW1lbnQpIHsKKwkJdGhpcy5vcmlnaW5hbERvY3VtZW50ID0gb3JpZ2luYWxEb2N1bWVudDsKKwl9CisJcHVibGljIEZpbGVzT2JqZWN0IGdldFBkZkRvY3VtZW50KCkgeworCQlyZXR1cm4gcGRmRG9jdW1lbnQ7CisJfQorCXB1YmxpYyB2b2lkIHNldFBkZkRvY3VtZW50KEZpbGVzT2JqZWN0IHBkZkRvY3VtZW50KSB7CisJCXRoaXMucGRmRG9jdW1lbnQgPSBwZGZEb2N1bWVudDsKKwl9CisJcHVibGljIEZpbGVzT2JqZWN0IGdldFN3ZkRvY3VtZW50KCkgeworCQlyZXR1cm4gc3dmRG9jdW1lbnQ7CisJfQorCXB1YmxpYyB2b2lkIHNldFN3ZkRvY3VtZW50KEZpbGVzT2JqZWN0IHN3ZkRvY3VtZW50KSB7CisJCXRoaXMuc3dmRG9jdW1lbnQgPSBzd2ZEb2N1bWVudDsKKwl9CisJcHVibGljIExpbmtlZExpc3Q8RmlsZXNPYmplY3Q+IGdldFRodW1icygpIHsKKwkJcmV0dXJuIHRodW1iczsKKwl9CisJcHVibGljIHZvaWQgc2V0VGh1bWJzKExpbmtlZExpc3Q8RmlsZXNPYmplY3Q+IHRodW1icykgeworCQl0aGlzLnRodW1icyA9IHRodW1iczsKKwl9CisJCisJCisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2JlYW5zL2ZpbGVzL1Rlc3RPYmplY3QuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2JlYW5zL2ZpbGVzL1Rlc3RPYmplY3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43M2ZmZGNkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvYmVhbnMvZmlsZXMvVGVzdE9iamVjdC5qYXZhCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iZWFucy5maWxlczsKKworaW1wb3J0IGphdmEudXRpbC5MaW5rZWRMaXN0OworCitwdWJsaWMgY2xhc3MgVGVzdE9iamVjdCB7CisJCisJcHJpdmF0ZSBMaW5rZWRMaXN0PFN0cmluZz4gbGlzdDEgPSBudWxsOworCXByaXZhdGUgTGlua2VkTGlzdDxTdHJpbmc+IGxpc3QyID0gbnVsbDsKKwlwdWJsaWMgTGlua2VkTGlzdDxTdHJpbmc+IGdldExpc3QxKCkgeworCQlyZXR1cm4gbGlzdDE7CisJfQorCXB1YmxpYyB2b2lkIHNldExpc3QxKExpbmtlZExpc3Q8U3RyaW5nPiBsaXN0MSkgeworCQl0aGlzLmxpc3QxID0gbGlzdDE7CisJfQorCXB1YmxpYyBMaW5rZWRMaXN0PFN0cmluZz4gZ2V0TGlzdDIoKSB7CisJCXJldHVybiBsaXN0MjsKKwl9CisJcHVibGljIHZvaWQgc2V0TGlzdDIoTGlua2VkTGlzdDxTdHJpbmc+IGxpc3QyKSB7CisJCXRoaXMubGlzdDIgPSBsaXN0MjsKKwl9CisJCisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2JlYW5zL3Jvb21zL1Jvb21zTGlzdC5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvYmVhbnMvcm9vbXMvUm9vbXNMaXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjVmZDkwOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2JlYW5zL3Jvb21zL1Jvb21zTGlzdC5qYXZhCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iZWFucy5yb29tczsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnJvb20uUm9vbTsKKworcHVibGljIGNsYXNzIFJvb21zTGlzdCB7CisJCisJUm9vbVtdIHJvb21MaXN0ID0gbnVsbDsKKworCXB1YmxpYyBSb29tW10gZ2V0Um9vbUxpc3QoKSB7CisJCXJldHVybiByb29tTGlzdDsKKwl9CisJcHVibGljIHZvaWQgc2V0Um9vbUxpc3QoUm9vbVtdIHJvb21MaXN0KSB7CisJCXRoaXMucm9vbUxpc3QgPSByb29tTGlzdDsKKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2NhbGVuZGFyL2JlYW5zL0FwcG9pbnRtZW50RFRPLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9jYWxlbmRhci9iZWFucy9BcHBvaW50bWVudERUTy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlZmEwNzcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9jYWxlbmRhci9iZWFucy9BcHBvaW50bWVudERUTy5qYXZhCkBAIC0wLDAgKzEsMTcyIEBACisvKg0KKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgKiB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY2FsZW5kYXIuYmVhbnM7DQorDQoraW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7DQoraW1wb3J0IGphdmEudXRpbC5DYWxlbmRhcjsNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQoraW1wb3J0IGphdmEudXRpbC5UaW1lWm9uZTsNCisNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuY2FsZW5kYXIuQXBwb2ludG1lbnQ7DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmNhbGVuZGFyLk1lZXRpbmdNZW1iZXI7DQorDQorcHVibGljIGNsYXNzIEFwcG9pbnRtZW50RFRPIHsNCisNCisJcHJpdmF0ZSBsb25nIGFwcG9pbnRtZW50SWQ7DQorCXByaXZhdGUgTG9uZyBjYXRlZ29yeUlkOw0KKwlwcml2YXRlIExvbmcgcmVtaW5kZXJJZDsNCisJcHJpdmF0ZSBMb25nIHJvb21JZDsNCisJcHJpdmF0ZSBMb25nIHJvb21UeXBlSWQ7DQorCXByaXZhdGUgU3RyaW5nIHRpdGxlOw0KKwlwcml2YXRlIFN0cmluZyBsb2NhdGlvbjsNCisJcHJpdmF0ZSBTdHJpbmcgY29tbWVudDsNCisJcHJpdmF0ZSBDYWxlbmRhciBzdGFydDsNCisJcHJpdmF0ZSBDYWxlbmRhciBlbmQ7DQorCXByaXZhdGUgQm9vbGVhbiBpc1Bhc3N3b3JkUHJvdGVjdGVkOw0KKwlwcml2YXRlIExpc3Q8TWVldGluZ01lbWJlckRUTz4gbWVldGluZ01lbWJlciA9IG5ldyBBcnJheUxpc3Q8TWVldGluZ01lbWJlckRUTz4oKTsNCisJcHJpdmF0ZSBMb25nIG9yZ2FuaXplcklkOw0KKw0KKwlwdWJsaWMgQXBwb2ludG1lbnREVE8oQXBwb2ludG1lbnQgYXBwb2ludG1lbnQsIFRpbWVab25lIHRpbWV6b25lKSB7DQorCQlhcHBvaW50bWVudElkID0gYXBwb2ludG1lbnQuZ2V0QXBwb2ludG1lbnRJZCgpOw0KKwkJY2F0ZWdvcnlJZCA9IChhcHBvaW50bWVudC5nZXRBcHBvaW50bWVudENhdGVnb3J5KCkgIT0gbnVsbCkgPyBhcHBvaW50bWVudA0KKwkJCQkuZ2V0QXBwb2ludG1lbnRDYXRlZ29yeSgpLmdldENhdGVnb3J5SWQoKSA6IG51bGw7DQorCQlyZW1pbmRlcklkID0gKGFwcG9pbnRtZW50LmdldFJlbWluZCgpICE9IG51bGwpID8gYXBwb2ludG1lbnQNCisJCQkJLmdldFJlbWluZCgpLmdldFR5cElkKCkgOiBudWxsOw0KKwkJcm9vbUlkID0gKGFwcG9pbnRtZW50LmdldFJvb20oKSAhPSBudWxsKSA/IGFwcG9pbnRtZW50LmdldFJvb20oKQ0KKwkJCQkuZ2V0Um9vbXNfaWQoKSA6IG51bGw7DQorCQlyb29tVHlwZUlkID0gKHJvb21JZCAhPSBudWxsICYmIGFwcG9pbnRtZW50LmdldFJvb20oKS5nZXRSb29tdHlwZSgpICE9IG51bGwpID8gYXBwb2ludG1lbnQNCisJCQkJLmdldFJvb20oKS5nZXRSb29tdHlwZSgpLmdldFJvb210eXBlc19pZCgpDQorCQkJCTogbnVsbDsNCisJCXRpdGxlID0gYXBwb2ludG1lbnQuZ2V0QXBwb2ludG1lbnROYW1lKCk7DQorCQlsb2NhdGlvbiA9IGFwcG9pbnRtZW50LmdldEFwcG9pbnRtZW50TG9jYXRpb24oKTsNCisJCWNvbW1lbnQgPSBhcHBvaW50bWVudC5nZXRBcHBvaW50bWVudERlc2NyaXB0aW9uKCk7DQorCQlzdGFydCA9IGFwcG9pbnRtZW50LmFwcG9pbnRtZW50U3RhcnRBc0NhbGVuZGFyKHRpbWV6b25lKTsNCisJCWVuZCA9IGFwcG9pbnRtZW50LmFwcG9pbnRtZW50RW5kQXNDYWxlbmRhcih0aW1lem9uZSk7DQorCQlpc1Bhc3N3b3JkUHJvdGVjdGVkID0gYXBwb2ludG1lbnQuZ2V0SXNQYXNzd29yZFByb3RlY3RlZCgpOw0KKwkJb3JnYW5pemVySWQgPSBhcHBvaW50bWVudC5nZXRVc2VySWQoKS5nZXRVc2VyX2lkKCk7DQorCQlmb3IgKE1lZXRpbmdNZW1iZXIgbWVldGluZ01lbWJlckl0ZW0gOiBhcHBvaW50bWVudC5nZXRNZWV0aW5nTWVtYmVyKCkpIHsNCisJCQltZWV0aW5nTWVtYmVyLmFkZChuZXcgTWVldGluZ01lbWJlckRUTyhtZWV0aW5nTWVtYmVySXRlbSkpOw0KKwkJfQ0KKwl9DQorDQorCXB1YmxpYyBsb25nIGdldEFwcG9pbnRtZW50SWQoKSB7DQorCQlyZXR1cm4gYXBwb2ludG1lbnRJZDsNCisJfQ0KKw0KKwlwdWJsaWMgdm9pZCBzZXRBcHBvaW50bWVudElkKGxvbmcgYXBwb2ludG1lbnRJZCkgew0KKwkJdGhpcy5hcHBvaW50bWVudElkID0gYXBwb2ludG1lbnRJZDsNCisJfQ0KKw0KKwlwdWJsaWMgTG9uZyBnZXRDYXRlZ29yeUlkKCkgew0KKwkJcmV0dXJuIGNhdGVnb3J5SWQ7DQorCX0NCisNCisJcHVibGljIHZvaWQgc2V0Q2F0ZWdvcnlJZChMb25nIGNhdGVnb3J5SWQpIHsNCisJCXRoaXMuY2F0ZWdvcnlJZCA9IGNhdGVnb3J5SWQ7DQorCX0NCisNCisJcHVibGljIExvbmcgZ2V0UmVtaW5kZXJJZCgpIHsNCisJCXJldHVybiByZW1pbmRlcklkOw0KKwl9DQorDQorCXB1YmxpYyB2b2lkIHNldFJlbWluZGVySWQoTG9uZyByZW1pbmRlcklkKSB7DQorCQl0aGlzLnJlbWluZGVySWQgPSByZW1pbmRlcklkOw0KKwl9DQorDQorCXB1YmxpYyBMb25nIGdldFJvb21JZCgpIHsNCisJCXJldHVybiByb29tSWQ7DQorCX0NCisNCisJcHVibGljIHZvaWQgc2V0Um9vbUlkKExvbmcgcm9vbUlkKSB7DQorCQl0aGlzLnJvb21JZCA9IHJvb21JZDsNCisJfQ0KKw0KKwlwdWJsaWMgU3RyaW5nIGdldFRpdGxlKCkgew0KKwkJcmV0dXJuIHRpdGxlOw0KKwl9DQorDQorCXB1YmxpYyB2b2lkIHNldFRpdGxlKFN0cmluZyB0aXRsZSkgew0KKwkJdGhpcy50aXRsZSA9IHRpdGxlOw0KKwl9DQorDQorCXB1YmxpYyBTdHJpbmcgZ2V0TG9jYXRpb24oKSB7DQorCQlyZXR1cm4gbG9jYXRpb247DQorCX0NCisNCisJcHVibGljIHZvaWQgc2V0TG9jYXRpb24oU3RyaW5nIGxvY2F0aW9uKSB7DQorCQl0aGlzLmxvY2F0aW9uID0gbG9jYXRpb247DQorCX0NCisNCisJcHVibGljIFN0cmluZyBnZXRDb21tZW50KCkgew0KKwkJcmV0dXJuIGNvbW1lbnQ7DQorCX0NCisNCisJcHVibGljIHZvaWQgc2V0Q29tbWVudChTdHJpbmcgY29tbWVudCkgew0KKwkJdGhpcy5jb21tZW50ID0gY29tbWVudDsNCisJfQ0KKw0KKwlwdWJsaWMgQ2FsZW5kYXIgZ2V0U3RhcnQoKSB7DQorCQlyZXR1cm4gc3RhcnQ7DQorCX0NCisNCisJcHVibGljIHZvaWQgc2V0U3RhcnQoQ2FsZW5kYXIgc3RhcnQpIHsNCisJCXRoaXMuc3RhcnQgPSBzdGFydDsNCisJfQ0KKw0KKwlwdWJsaWMgQ2FsZW5kYXIgZ2V0RW5kKCkgew0KKwkJcmV0dXJuIGVuZDsNCisJfQ0KKw0KKwlwdWJsaWMgdm9pZCBzZXRFbmQoQ2FsZW5kYXIgZW5kKSB7DQorCQl0aGlzLmVuZCA9IGVuZDsNCisJfQ0KKw0KKwlwdWJsaWMgQm9vbGVhbiBnZXRJc1Bhc3N3b3JkUHJvdGVjdGVkKCkgew0KKwkJcmV0dXJuIGlzUGFzc3dvcmRQcm90ZWN0ZWQ7DQorCX0NCisNCisJcHVibGljIHZvaWQgc2V0SXNQYXNzd29yZFByb3RlY3RlZChCb29sZWFuIGlzUGFzc3dvcmRQcm90ZWN0ZWQpIHsNCisJCXRoaXMuaXNQYXNzd29yZFByb3RlY3RlZCA9IGlzUGFzc3dvcmRQcm90ZWN0ZWQ7DQorCX0NCisNCisJcHVibGljIExpc3Q8TWVldGluZ01lbWJlckRUTz4gZ2V0TWVldGluZ01lbWJlcigpIHsNCisJCXJldHVybiBtZWV0aW5nTWVtYmVyOw0KKwl9DQorDQorCXB1YmxpYyB2b2lkIHNldE1lZXRpbmdNZW1iZXIoTGlzdDxNZWV0aW5nTWVtYmVyRFRPPiBtZWV0aW5nTWVtYmVyKSB7DQorCQl0aGlzLm1lZXRpbmdNZW1iZXIgPSBtZWV0aW5nTWVtYmVyOw0KKwl9DQorDQorCXB1YmxpYyBMb25nIGdldFJvb21UeXBlSWQoKSB7DQorCQlyZXR1cm4gcm9vbVR5cGVJZDsNCisJfQ0KKw0KKwlwdWJsaWMgdm9pZCBzZXRSb29tVHlwZUlkKExvbmcgcm9vbVR5cGVJZCkgew0KKwkJdGhpcy5yb29tVHlwZUlkID0gcm9vbVR5cGVJZDsNCisJfQ0KKw0KKwlwdWJsaWMgTG9uZyBnZXRPcmdhbml6ZXJJZCgpIHsNCisJCXJldHVybiBvcmdhbml6ZXJJZDsNCisJfQ0KKw0KKwlwdWJsaWMgdm9pZCBzZXRPcmdhbml6ZXJJZChMb25nIG9yZ2FuaXplcklkKSB7DQorCQl0aGlzLm9yZ2FuaXplcklkID0gb3JnYW5pemVySWQ7DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvY2FsZW5kYXIvYmVhbnMvRGF5LmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9jYWxlbmRhci9iZWFucy9EYXkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MzdhNjFiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvY2FsZW5kYXIvYmVhbnMvRGF5LmphdmEKQEAgLTAsMCArMSw1MiBAQAorLyoNCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICogdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNhbGVuZGFyLmJlYW5zOw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0Ow0KK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQorDQorcHVibGljIGNsYXNzIERheSB7DQorCQ0KKwlwcml2YXRlIERhdGUgdERhdGU7DQorCXByaXZhdGUgTGlzdDxBcHBvaW50bWVudERUTz4gYXBwb2ludG1lbnRzID0gbmV3IEFycmF5TGlzdDxBcHBvaW50bWVudERUTz4oKTsNCisNCisJcHVibGljIERheShEYXRlIHREYXRlKSB7DQorCQlzdXBlcigpOw0KKwkJdGhpcy50RGF0ZSA9IHREYXRlOw0KKwl9DQorDQorCXB1YmxpYyBEYXRlIGdldHREYXRlKCkgew0KKwkJcmV0dXJuIHREYXRlOw0KKwl9DQorDQorCXB1YmxpYyB2b2lkIHNldHREYXRlKERhdGUgdERhdGUpIHsNCisJCXRoaXMudERhdGUgPSB0RGF0ZTsNCisJfQ0KKw0KKw0KKwlwdWJsaWMgTGlzdDxBcHBvaW50bWVudERUTz4gZ2V0QXBwb2ludG1lbnRzKCkgew0KKwkJcmV0dXJuIGFwcG9pbnRtZW50czsNCisJfQ0KKw0KKwlwdWJsaWMgdm9pZCBzZXRBcHBvaW50bWVudHMoTGlzdDxBcHBvaW50bWVudERUTz4gYXBwb2ludG1lbnRzKSB7DQorCQl0aGlzLmFwcG9pbnRtZW50cyA9IGFwcG9pbnRtZW50czsNCisJfQ0KKwkNCit9DQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvY2FsZW5kYXIvYmVhbnMvTWVldGluZ01lbWJlckRUTy5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvY2FsZW5kYXIvYmVhbnMvTWVldGluZ01lbWJlckRUTy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmYWFlOGEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9jYWxlbmRhci9iZWFucy9NZWV0aW5nTWVtYmVyRFRPLmphdmEKQEAgLTAsMCArMSwxMTEgQEAKKy8qDQorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAqIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jYWxlbmRhci5iZWFuczsNCisNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuY2FsZW5kYXIuTWVldGluZ01lbWJlcjsNCisNCitwdWJsaWMgY2xhc3MgTWVldGluZ01lbWJlckRUTyB7DQorDQorCXByaXZhdGUgbG9uZyBtZWV0aW5nTWVtYmVySWQ7DQorCXByaXZhdGUgQm9vbGVhbiBpbnZpdG9yOw0KKwlwcml2YXRlIFN0cmluZyBlbWFpbDsNCisJcHJpdmF0ZSBTdHJpbmcgbWVtYmVyU3RhdHVzOw0KKwlwcml2YXRlIFN0cmluZyBmaXJzdG5hbWU7DQorCXByaXZhdGUgU3RyaW5nIGxhc3RuYW1lOw0KKwlwcml2YXRlIExvbmcgdXNlcmlkOw0KKwlwcml2YXRlIFN0cmluZyBqTmFtZVRpbWVab25lOw0KKw0KKwlwdWJsaWMgTWVldGluZ01lbWJlckRUTyhNZWV0aW5nTWVtYmVyIG1lZXRpbmdNZW1iZXJJdGVtKSB7DQorCQltZWV0aW5nTWVtYmVySWQgPSBtZWV0aW5nTWVtYmVySXRlbS5nZXRNZWV0aW5nTWVtYmVySWQoKTsNCisJCWludml0b3IgPSBtZWV0aW5nTWVtYmVySXRlbS5nZXRJbnZpdG9yKCk7DQorCQllbWFpbCA9IG1lZXRpbmdNZW1iZXJJdGVtLmdldEVtYWlsKCk7DQorCQltZW1iZXJTdGF0dXMgPSBtZWV0aW5nTWVtYmVySXRlbS5nZXRNZW1iZXJTdGF0dXMoKTsNCisJCWZpcnN0bmFtZSA9IG1lZXRpbmdNZW1iZXJJdGVtLmdldEZpcnN0bmFtZSgpOw0KKwkJbGFzdG5hbWUgPSBtZWV0aW5nTWVtYmVySXRlbS5nZXRMYXN0bmFtZSgpOw0KKwkJdXNlcmlkID0gKG1lZXRpbmdNZW1iZXJJdGVtLmdldFVzZXJpZCgpICE9IG51bGwpID8gbWVldGluZ01lbWJlckl0ZW0NCisJCQkJLmdldFVzZXJpZCgpLmdldFVzZXJfaWQoKSA6IDA7DQorCQlqTmFtZVRpbWVab25lID0gKG1lZXRpbmdNZW1iZXJJdGVtLmdldE9tVGltZVpvbmUoKSAhPSBudWxsKSA/IG1lZXRpbmdNZW1iZXJJdGVtDQorCQkJCS5nZXRPbVRpbWVab25lKCkuZ2V0Sm5hbWUoKSA6ICIiOw0KKwl9DQorDQorCXB1YmxpYyBsb25nIGdldE1lZXRpbmdNZW1iZXJJZCgpIHsNCisJCXJldHVybiBtZWV0aW5nTWVtYmVySWQ7DQorCX0NCisNCisJcHVibGljIHZvaWQgc2V0TWVldGluZ01lbWJlcklkKGxvbmcgbWVldGluZ01lbWJlcklkKSB7DQorCQl0aGlzLm1lZXRpbmdNZW1iZXJJZCA9IG1lZXRpbmdNZW1iZXJJZDsNCisJfQ0KKw0KKwlwdWJsaWMgQm9vbGVhbiBnZXRJbnZpdG9yKCkgew0KKwkJcmV0dXJuIGludml0b3I7DQorCX0NCisNCisJcHVibGljIHZvaWQgc2V0SW52aXRvcihCb29sZWFuIGludml0b3IpIHsNCisJCXRoaXMuaW52aXRvciA9IGludml0b3I7DQorCX0NCisNCisJcHVibGljIFN0cmluZyBnZXRFbWFpbCgpIHsNCisJCXJldHVybiBlbWFpbDsNCisJfQ0KKw0KKwlwdWJsaWMgdm9pZCBzZXRFbWFpbChTdHJpbmcgZW1haWwpIHsNCisJCXRoaXMuZW1haWwgPSBlbWFpbDsNCisJfQ0KKw0KKwlwdWJsaWMgU3RyaW5nIGdldE1lbWJlclN0YXR1cygpIHsNCisJCXJldHVybiBtZW1iZXJTdGF0dXM7DQorCX0NCisNCisJcHVibGljIHZvaWQgc2V0TWVtYmVyU3RhdHVzKFN0cmluZyBtZW1iZXJTdGF0dXMpIHsNCisJCXRoaXMubWVtYmVyU3RhdHVzID0gbWVtYmVyU3RhdHVzOw0KKwl9DQorDQorCXB1YmxpYyBTdHJpbmcgZ2V0Rmlyc3RuYW1lKCkgew0KKwkJcmV0dXJuIGZpcnN0bmFtZTsNCisJfQ0KKw0KKwlwdWJsaWMgdm9pZCBzZXRGaXJzdG5hbWUoU3RyaW5nIGZpcnN0bmFtZSkgew0KKwkJdGhpcy5maXJzdG5hbWUgPSBmaXJzdG5hbWU7DQorCX0NCisNCisJcHVibGljIFN0cmluZyBnZXRMYXN0bmFtZSgpIHsNCisJCXJldHVybiBsYXN0bmFtZTsNCisJfQ0KKw0KKwlwdWJsaWMgdm9pZCBzZXRMYXN0bmFtZShTdHJpbmcgbGFzdG5hbWUpIHsNCisJCXRoaXMubGFzdG5hbWUgPSBsYXN0bmFtZTsNCisJfQ0KKw0KKwlwdWJsaWMgTG9uZyBnZXRVc2VyaWQoKSB7DQorCQlyZXR1cm4gdXNlcmlkOw0KKwl9DQorDQorCXB1YmxpYyB2b2lkIHNldFVzZXJpZChMb25nIHVzZXJpZCkgew0KKwkJdGhpcy51c2VyaWQgPSB1c2VyaWQ7DQorCX0NCisNCisJcHVibGljIFN0cmluZyBnZXRqTmFtZVRpbWVab25lKCkgew0KKwkJcmV0dXJuIGpOYW1lVGltZVpvbmU7DQorCX0NCisNCisJcHVibGljIHZvaWQgc2V0ak5hbWVUaW1lWm9uZShTdHJpbmcgak5hbWVUaW1lWm9uZSkgew0KKwkJdGhpcy5qTmFtZVRpbWVab25lID0gak5hbWVUaW1lWm9uZTsNCisJfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9jYWxlbmRhci9iZWFucy9XZWVrLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9jYWxlbmRhci9iZWFucy9XZWVrLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWIzZTdmYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2NhbGVuZGFyL2JlYW5zL1dlZWsuamF2YQpAQCAtMCwwICsxLDM3IEBACisvKg0KKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgKiB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY2FsZW5kYXIuYmVhbnM7DQorDQoraW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7DQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KKw0KK3B1YmxpYyBjbGFzcyBXZWVrIHsNCisJDQorCXByaXZhdGUgTGlzdDxEYXk+IGRheXMgPSBuZXcgQXJyYXlMaXN0PERheT4oNyk7DQorDQorCXB1YmxpYyBMaXN0PERheT4gZ2V0RGF5cygpIHsNCisJCXJldHVybiBkYXlzOw0KKwl9DQorDQorCXB1YmxpYyB2b2lkIHNldERheXMoTGlzdDxEYXk+IGRheXMpIHsNCisJCXRoaXMuZGF5cyA9IGRheXM7DQorCX0NCisJDQorDQorfQ0KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2NhbGVuZGFyL2Rhb3MvQXBwb2ludG1lbnRDYXRlZ29yeURhby5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvY2FsZW5kYXIvZGFvcy9BcHBvaW50bWVudENhdGVnb3J5RGFvLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDk4OGIzNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2NhbGVuZGFyL2Rhb3MvQXBwb2ludG1lbnRDYXRlZ29yeURhby5qYXZhCkBAIC0wLDAgKzEsMTY2IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY2FsZW5kYXIuZGFvczsKKworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5TWFuYWdlcjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Ob1Jlc3VsdEV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5QZXJzaXN0ZW5jZUNvbnRleHQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVHlwZWRRdWVyeTsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLmRhby5Db25maWd1cmF0aW9uRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEudXNlci5kYW8uVXNlcnNEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuY2FsZW5kYXIuQXBwb2ludG1lbnRDYXRlZ29yeTsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uQXV0b3dpcmVkOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsudHJhbnNhY3Rpb24uYW5ub3RhdGlvbi5UcmFuc2FjdGlvbmFsOworCitAVHJhbnNhY3Rpb25hbAorcHVibGljIGNsYXNzIEFwcG9pbnRtZW50Q2F0ZWdvcnlEYW8geworCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcigKKwkJCUNvbmZpZ3VyYXRpb25EYW8uY2xhc3MsCisJCQlPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisKKwlAUGVyc2lzdGVuY2VDb250ZXh0CisJcHJpdmF0ZSBFbnRpdHlNYW5hZ2VyIGVtOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFVzZXJzRGFvIHVzZXJzRGFvOworCisJcHVibGljIEFwcG9pbnRtZW50Q2F0ZWdvcnkgZ2V0QXBwb2ludG1lbnRDYXRlZ29yeUJ5SWQoTG9uZyBjYXRlZ29yeUlkKSB7CisJCXRyeSB7CisJCQlsb2cuZGVidWcoImdldEFwcG9pbnRtZW50Q2F0ZWdvcnlCeUlkOiAiICsgY2F0ZWdvcnlJZCk7CisKKwkJCVN0cmluZyBocWwgPSAic2VsZWN0IGFwcCBmcm9tIEFwcG9pbnRtZW50Q2F0ZWdvcnkgYXBwICIKKwkJCQkJKyAiV0hFUkUgYXBwLmRlbGV0ZWQgPD4gOmRlbGV0ZWQgIgorCQkJCQkrICJBTkQgYXBwLmNhdGVnb3J5SWQgPSA6Y2F0ZWdvcnlJZCI7CisKKwkJCVR5cGVkUXVlcnk8QXBwb2ludG1lbnRDYXRlZ29yeT4gcXVlcnkgPSBlbS5jcmVhdGVRdWVyeShocWwsIEFwcG9pbnRtZW50Q2F0ZWdvcnkuY2xhc3MpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJkZWxldGVkIiwgdHJ1ZSk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImNhdGVnb3J5SWQiLCBjYXRlZ29yeUlkKTsKKworCQkJQXBwb2ludG1lbnRDYXRlZ29yeSBhcHBvaW50Q2F0ZWdvcnkgPSBudWxsOworCQkJdHJ5IHsKKwkJCQlhcHBvaW50Q2F0ZWdvcnkgPSBxdWVyeS5nZXRTaW5nbGVSZXN1bHQoKTsKKwkJCX0gY2F0Y2ggKE5vUmVzdWx0RXhjZXB0aW9uIGV4KSB7CisJCQl9CisKKwkJCXJldHVybiBhcHBvaW50Q2F0ZWdvcnk7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldEFwcG9pbnRtZW50Q2F0ZWdvcnlCeUlkXTogIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgTG9uZyB1cGRhdGVBcHBvaW50bWVudENhdGVnb3J5KExvbmcgY2F0ZWdvcnlJZCwgU3RyaW5nIG5hbWUpIHsKKwkJdHJ5IHsKKworCQkJQXBwb2ludG1lbnRDYXRlZ29yeSBhYyA9IHRoaXMKKwkJCQkJLmdldEFwcG9pbnRtZW50Q2F0ZWdvcnlCeUlkKGNhdGVnb3J5SWQpOworCisJCQlhYy5zZXROYW1lKG5hbWUpOworCQkJYWMuc2V0VXBkYXRldGltZShuZXcgRGF0ZSgpKTsKKworCQkJaWYgKGFjLmdldENhdGVnb3J5SWQoKSA9PSBudWxsKSB7CisJCQkJZW0ucGVyc2lzdChhYyk7CisJCQl9IGVsc2UgeworCQkJCWlmICghZW0uY29udGFpbnMoYWMpKSB7CisJCQkJCWVtLm1lcmdlKGFjKTsKKwkJCQl9CisJCQl9CisKKwkJCXJldHVybiBjYXRlZ29yeUlkOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIlt1cGRhdGVBcHBvaW50bWVudENhdGVnb3J5XTogIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgTG9uZyBhZGRBcHBvaW50bWVudENhdGVnb3J5KExvbmcgdXNlcl9pZCwgU3RyaW5nIG5hbWUsIFN0cmluZyBjb21tZW50KSB7CisJCXRyeSB7CisKKwkJCUFwcG9pbnRtZW50Q2F0ZWdvcnkgYWMgPSBuZXcgQXBwb2ludG1lbnRDYXRlZ29yeSgpOworCisJCQlhYy5zZXROYW1lKG5hbWUpOworCQkJYWMuc2V0U3RhcnR0aW1lKG5ldyBEYXRlKCkpOworCQkJYWMuc2V0RGVsZXRlZChmYWxzZSk7CisJCQlhYy5zZXRVc2VyKHVzZXJzRGFvLmdldCh1c2VyX2lkKSk7CisJCQlhYy5zZXRDb21tZW50KGNvbW1lbnQpOworCisJCQlhYyA9IGVtLm1lcmdlKGFjKTsKKwkJCUxvbmcgY2F0ZWdvcnlfaWQgPSBhYy5nZXRDYXRlZ29yeUlkKCk7CisKKwkJCXJldHVybiBjYXRlZ29yeV9pZDsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbYWRkQXBwb2ludG1lbnRDYXRlZ29yeV06ICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIExvbmcgZGVsZXRlQXBwb2ludG1lbnRDYXRlZ29yeShMb25nIGNhdGVnb3J5SWQpIHsKKwkJdHJ5IHsKKworCQkJQXBwb2ludG1lbnRDYXRlZ29yeSBhYyA9IHRoaXMKKwkJCQkJLmdldEFwcG9pbnRtZW50Q2F0ZWdvcnlCeUlkKGNhdGVnb3J5SWQpOworCisJCQlsb2cuZGVidWcoImFjOiAiICsgYWMpOworCisJCQlpZiAoYWMgPT0gbnVsbCkgeworCQkJCWxvZy5kZWJ1ZygiQWxyZWFkeSBkZWxldGVkIC8gQ291bGQgbm90IGZpbmQ6ICIgKyBjYXRlZ29yeUlkKTsKKwkJCQlyZXR1cm4gY2F0ZWdvcnlJZDsKKwkJCX0KKwkJCWFjLnNldFVwZGF0ZXRpbWUobmV3IERhdGUoKSk7CisJCQlhYy5zZXREZWxldGVkKHRydWUpOworCQkJaWYgKGFjLmdldENhdGVnb3J5SWQoKSA9PSBudWxsKSB7CisJCQkJZW0ucGVyc2lzdChhYyk7CisJCQl9IGVsc2UgeworCQkJCWlmICghZW0uY29udGFpbnMoYWMpKSB7CisJCQkJCWVtLm1lcmdlKGFjKTsKKwkJCQl9CisJCQl9CisJCQlyZXR1cm4gY2F0ZWdvcnlJZDsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZGVsZXRlQXBwb2ludG1lbnRDYXRlZ29yeV06ICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIExpc3Q8QXBwb2ludG1lbnRDYXRlZ29yeT4gZ2V0QXBwb2ludG1lbnRDYXRlZ29yeUxpc3QoKSB7CisJCXRyeSB7CisKKwkJCVN0cmluZyBocWwgPSAic2VsZWN0IGEgZnJvbSBBcHBvaW50bWVudENhdGVnb3J5IGEgIgorCQkJCQkrICJXSEVSRSBhLmRlbGV0ZWQgPD4gOmRlbGV0ZWQgIjsKKworCQkJVHlwZWRRdWVyeTxBcHBvaW50bWVudENhdGVnb3J5PiBxdWVyeSA9IGVtLmNyZWF0ZVF1ZXJ5KGhxbCwgQXBwb2ludG1lbnRDYXRlZ29yeS5jbGFzcyk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImRlbGV0ZWQiLCB0cnVlKTsKKworCQkJTGlzdDxBcHBvaW50bWVudENhdGVnb3J5PiBsaXN0QXBwb2ludG1lbnRDYXRlZ29yeSA9IHF1ZXJ5CisJCQkJCS5nZXRSZXN1bHRMaXN0KCk7CisKKwkJCXJldHVybiBsaXN0QXBwb2ludG1lbnRDYXRlZ29yeTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbQXBwb2ludG1lbnRDYXRlZ29yeV06ICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvY2FsZW5kYXIvZGFvcy9BcHBvaW50bWVudERhby5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvY2FsZW5kYXIvZGFvcy9BcHBvaW50bWVudERhby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5YTZmNzcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9jYWxlbmRhci9kYW9zL0FwcG9pbnRtZW50RGFvLmphdmEKQEAgLTAsMCArMSw5ODAgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jYWxlbmRhci5kYW9zOworCitpbXBvcnQgamF2YS5zcWwuVGltZXN0YW1wOworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkNhbGVuZGFyOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5NYXA7CitpbXBvcnQgamF2YS51dGlsLlRpbWVab25lOworCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5TWFuYWdlcjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Ob1Jlc3VsdEV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5QZXJzaXN0ZW5jZUNvbnRleHQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVHlwZWRRdWVyeTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5jcml0ZXJpYS5Dcml0ZXJpYUJ1aWxkZXI7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuY3JpdGVyaWEuQ3JpdGVyaWFRdWVyeTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5jcml0ZXJpYS5QcmVkaWNhdGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuY3JpdGVyaWEuUm9vdDsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLmRhby5PbVRpbWVab25lRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY2FsZW5kYXIubWFuYWdlbWVudC5NZWV0aW5nTWVtYmVyTG9naWM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jb25mZXJlbmNlLkludml0YXRpb25NYW5hZ2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEudXNlci5Vc2VyTWFuYWdlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuZGFvLlVzZXJzRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLk9tVGltZVpvbmU7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuY2FsZW5kYXIuQXBwb2ludG1lbnQ7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuY2FsZW5kYXIuQXBwb2ludG1lbnRDYXRlZ29yeTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5jYWxlbmRhci5BcHBvaW50bWVudFJlbWluZGVyVHlwczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5jYWxlbmRhci5NZWV0aW5nTWVtYmVyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnJvb20uUm9vbTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlVzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMubWF0aC5DYWxlbmRhclBhdHRlcm5zOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLm1hdGguVGltZXpvbmVVdGlsOworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5BdXRvd2lyZWQ7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay50cmFuc2FjdGlvbi5hbm5vdGF0aW9uLlRyYW5zYWN0aW9uYWw7CisKK0BUcmFuc2FjdGlvbmFsCitwdWJsaWMgY2xhc3MgQXBwb2ludG1lbnREYW8geworCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcigKKwkJCUFwcG9pbnRtZW50RGFvLmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisJQFBlcnNpc3RlbmNlQ29udGV4dAorCXByaXZhdGUgRW50aXR5TWFuYWdlciBlbTsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBVc2VyTWFuYWdlciB1c2VyTWFuYWdlcjsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBPbVRpbWVab25lRGFvIG9tVGltZVpvbmVEYW9JbXBsOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEFwcG9pbnRtZW50Q2F0ZWdvcnlEYW8gYXBwb2ludG1lbnRDYXRlZ29yeURhb0ltcGw7CisJQEF1dG93aXJlZAorCXByaXZhdGUgQXBwb2ludG1lbnRSZW1pbmRlclR5cERhbyBhcHBvaW50bWVudFJlbWluZGVyVHlwRGFvSW1wbDsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBNZWV0aW5nTWVtYmVyRGFvIG1lZXRpbmdNZW1iZXJEYW87CisJQEF1dG93aXJlZAorCXByaXZhdGUgVXNlcnNEYW8gdXNlcnNEYW87CisJQEF1dG93aXJlZAorCXByaXZhdGUgSW52aXRhdGlvbk1hbmFnZXIgaW52aXRhdGlvbk1hbmFnZXI7CisJQEF1dG93aXJlZAorCXByaXZhdGUgTWVldGluZ01lbWJlckxvZ2ljIG1lZXRpbmdNZW1iZXJMb2dpYzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBUaW1lem9uZVV0aWwgdGltZXpvbmVVdGlsOworCisJLyoKKwkgKiBpbnNlcnQsIHVwZGF0ZSwgZGVsZXRlLCBzZWxlY3QKKwkgKi8KKworCS8qKgorCSAqIEBhdXRob3Igby5iZWNoZXJlciBSZXRyaWV2bWVudCBvZiBBcHBvaW50bWVudCBmb3Igcm9vbQorCSAqLworCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJcHVibGljIEFwcG9pbnRtZW50IGdldEFwcG9pbnRtZW50QnlSb29tKExvbmcgcm9vbV9pZCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCWxvZy5kZWJ1ZygiQXBwb2ludE1lbnREYW9JbXBsLmdldEFwcG9pbnRtZW50QnlSb29tIik7CisKKwkJU3RyaW5nIGhxbCA9ICJzZWxlY3QgYSBmcm9tIEFwcG9pbnRtZW50IGEgIgorCQkJCSsgIldIRVJFIGEuZGVsZXRlZCA8PiA6ZGVsZXRlZCAiCisJCQkJKyAiQU5EIGEucm9vbS5yb29tc19pZCA9IDpyb29tX2lkICI7CisKKwkJVHlwZWRRdWVyeTxBcHBvaW50bWVudD4gcXVlcnkgPSBlbS5jcmVhdGVRdWVyeShocWwsIEFwcG9pbnRtZW50LmNsYXNzKTsKKwkJcXVlcnkuc2V0UGFyYW1ldGVyKCJkZWxldGVkIiwgdHJ1ZSk7CisJCXF1ZXJ5LnNldFBhcmFtZXRlcigicm9vbV9pZCIsIHJvb21faWQpOworCisJCUxpc3Q8QXBwb2ludG1lbnQ+IGFwcG9pbnQgPSBxdWVyeS5nZXRSZXN1bHRMaXN0KCk7CisKKwkJaWYgKGFwcG9pbnQuc2l6ZSgpID4gMCkgeworCQkJcmV0dXJuIGFwcG9pbnQuZ2V0KDApOworCQl9CisKKwkJcmV0dXJuIG51bGw7CisJfQorCisJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCXB1YmxpYyBBcHBvaW50bWVudCBnZXRBcHBvaW50bWVudEJ5SWQoTG9uZyBhcHBvaW50bWVudElkKSB7CisJCXRyeSB7CisKKwkJCVN0cmluZyBocWwgPSAic2VsZWN0IGEgZnJvbSBBcHBvaW50bWVudCBhICIKKwkJCQkJKyAiV0hFUkUgYS5kZWxldGVkIDw+IDpkZWxldGVkICIKKwkJCQkJKyAiQU5EIGEuYXBwb2ludG1lbnRJZCA9IDphcHBvaW50bWVudElkICI7CisKKwkJCVR5cGVkUXVlcnk8QXBwb2ludG1lbnQ+IHF1ZXJ5ID0gZW0uY3JlYXRlUXVlcnkoaHFsLCBBcHBvaW50bWVudC5jbGFzcyk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImRlbGV0ZWQiLCB0cnVlKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiYXBwb2ludG1lbnRJZCIsIGFwcG9pbnRtZW50SWQpOworCisJCQlBcHBvaW50bWVudCBhcHBvaW50ID0gbnVsbDsKKwkJCXRyeSB7CisJCQkJYXBwb2ludCA9IHF1ZXJ5LmdldFNpbmdsZVJlc3VsdCgpOworCQkJfSBjYXRjaCAoTm9SZXN1bHRFeGNlcHRpb24gZXgpIHsKKwkJCX0KKwkJCXJldHVybiBhcHBvaW50OworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRBcHBvaW50bWVudEJ5SWRdOiAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBBcHBvaW50bWVudCBnZXRBcHBvaW50bWVudEJ5SWRCYWNrdXAoTG9uZyBhcHBvaW50bWVudElkKSB7CisJCXRyeSB7CisKKwkJCVN0cmluZyBocWwgPSAic2VsZWN0IGEgZnJvbSBBcHBvaW50bWVudCBhICIKKwkJCQkJKyAiV0hFUkUgYS5hcHBvaW50bWVudElkID0gOmFwcG9pbnRtZW50SWQgIjsKKworCQkJVHlwZWRRdWVyeTxBcHBvaW50bWVudD4gcXVlcnkgPSBlbS5jcmVhdGVRdWVyeShocWwsIEFwcG9pbnRtZW50LmNsYXNzKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiYXBwb2ludG1lbnRJZCIsIGFwcG9pbnRtZW50SWQpOworCisJCQlBcHBvaW50bWVudCBhcHBvaW50ID0gbnVsbDsKKwkJCXRyeSB7CisJCQkJYXBwb2ludCA9IHF1ZXJ5LmdldFNpbmdsZVJlc3VsdCgpOworCQkJfSBjYXRjaCAoTm9SZXN1bHRFeGNlcHRpb24gZXgpIHsKKwkJCX0KKworCQkJcmV0dXJuIGFwcG9pbnQ7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldEFwcG9pbnRtZW50QnlJZF06ICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIExpc3Q8QXBwb2ludG1lbnQ+IGdldEFwcG9pbnRtZW50cygpIHsKKwkJdHJ5IHsKKwkJCVR5cGVkUXVlcnk8QXBwb2ludG1lbnQ+IHF1ZXJ5ID0gZW0uY3JlYXRlUXVlcnkoCisJCQkJIlNFTEVDVCBhIEZST00gQXBwb2ludG1lbnQgYSBMRUZUIEpPSU4gRkVUQ0ggYS5tZWV0aW5nTWVtYmVyIFdIRVJFIGEuZGVsZXRlZCA8PiA6ZGVsZXRlZCAiCisJCQkJLCBBcHBvaW50bWVudC5jbGFzcyk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImRlbGV0ZWQiLCB0cnVlKTsKKworCQkJcmV0dXJuIHF1ZXJ5LmdldFJlc3VsdExpc3QoKTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZ2V0QXBwb2ludG1lbnRCeUlkXTogIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvKioKKwkgKiAKKwkgKiBAcGFyYW0gYXBwb2ludG1lbnROYW1lCisJICogQHBhcmFtIHVzZXJJZAorCSAqIEBwYXJhbSBhcHBvaW50bWVudExvY2F0aW9uCisJICogQHBhcmFtIGFwcG9pbnRtZW50RGVzY3JpcHRpb24KKwkgKiBAcGFyYW0gYXBwb2ludG1lbnRzdGFydAorCSAqIEBwYXJhbSBhcHBvaW50bWVudGVuZAorCSAqIEBwYXJhbSBpc0RhaWx5CisJICogQHBhcmFtIGlzV2Vla2x5CisJICogQHBhcmFtIGlzTW9udGhseQorCSAqIEBwYXJhbSBpc1llYXJseQorCSAqIEBwYXJhbSBjYXRlZ29yeUlkCisJICogQHBhcmFtIHJlbWluZAorCSAqIEBwYXJhbSByb29tCisJICogQHJldHVybgorCSAqLworCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlwdWJsaWMgTG9uZyBhZGRBcHBvaW50bWVudChTdHJpbmcgYXBwb2ludG1lbnROYW1lLCBMb25nIHVzZXJJZCwKKwkJCVN0cmluZyBhcHBvaW50bWVudExvY2F0aW9uLCBTdHJpbmcgYXBwb2ludG1lbnREZXNjcmlwdGlvbiwKKwkJCURhdGUgYXBwb2ludG1lbnRzdGFydCwgRGF0ZSBhcHBvaW50bWVudGVuZCwgQm9vbGVhbiBpc0RhaWx5LAorCQkJQm9vbGVhbiBpc1dlZWtseSwgQm9vbGVhbiBpc01vbnRobHksIEJvb2xlYW4gaXNZZWFybHksCisJCQlMb25nIGNhdGVnb3J5SWQsIExvbmcgcmVtaW5kLCBSb29tIHJvb20sIExvbmcgbGFuZ3VhZ2VfaWQsCisJCQlCb29sZWFuIGlzUGFzc3dvcmRQcm90ZWN0ZWQsIFN0cmluZyBwYXNzd29yZCwKKwkJCUJvb2xlYW4gaXNDb25uZWN0ZWRFdmVudCwgU3RyaW5nIGpOYW1lVGltZVpvbmUpIHsKKwkJdHJ5IHsKKworCQkJQXBwb2ludG1lbnQgYXAgPSBuZXcgQXBwb2ludG1lbnQoKTsKKworCQkJYXAuc2V0QXBwb2ludG1lbnROYW1lKGFwcG9pbnRtZW50TmFtZSk7CisJCQlhcC5zZXRBcHBvaW50bWVudExvY2F0aW9uKGFwcG9pbnRtZW50TG9jYXRpb24pOworCisJCQlsb2cuZGVidWcoImFkZEFwcG9pbnRtZW50IGFwcG9pbnRtZW50c3RhcnQgOjE6ICIKKwkJCQkJKyBDYWxlbmRhclBhdHRlcm5zCisJCQkJCQkJLmdldERhdGVXaXRoVGltZUJ5TWlsaVNlY29uZHNXaXRoWm9uZShhcHBvaW50bWVudHN0YXJ0KSk7CisJCQlsb2cuZGVidWcoImFkZEFwcG9pbnRtZW50IGFwcG9pbnRtZW50ZW5kIDoxOiAiCisJCQkJCSsgQ2FsZW5kYXJQYXR0ZXJucworCQkJCQkJCS5nZXREYXRlV2l0aFRpbWVCeU1pbGlTZWNvbmRzV2l0aFpvbmUoYXBwb2ludG1lbnRlbmQpKTsKKworCQkJYXAuc2V0QXBwb2ludG1lbnRTdGFydHRpbWUoYXBwb2ludG1lbnRzdGFydCk7CisJCQlhcC5zZXRBcHBvaW50bWVudEVuZHRpbWUoYXBwb2ludG1lbnRlbmQpOworCQkJYXAuc2V0QXBwb2ludG1lbnREZXNjcmlwdGlvbihhcHBvaW50bWVudERlc2NyaXB0aW9uKTsKKwkJCWFwLnNldFJlbWluZChhcHBvaW50bWVudFJlbWluZGVyVHlwRGFvSW1wbAorCQkJCQkuZ2V0QXBwb2ludG1lbnRSZW1pbmRlclR5cEJ5SWQocmVtaW5kKSk7CisJCQlhcC5zZXRTdGFydHRpbWUobmV3IERhdGUoKSk7CisJCQlhcC5zZXRJc1JlbWluZGVyRW1haWxTZW5kKGZhbHNlKTsKKwkJCWFwLnNldERlbGV0ZWQoZmFsc2UpOworCQkJYXAuc2V0SXNEYWlseShpc0RhaWx5KTsKKwkJCWFwLnNldElzV2Vla2x5KGlzV2Vla2x5KTsKKwkJCWFwLnNldElzTW9udGhseShpc01vbnRobHkpOworCQkJYXAuc2V0SXNZZWFybHkoaXNZZWFybHkpOworCQkJYXAuc2V0TGFuZ3VhZ2VfaWQobGFuZ3VhZ2VfaWQpOworCQkJYXAuc2V0SXNQYXNzd29yZFByb3RlY3RlZChpc1Bhc3N3b3JkUHJvdGVjdGVkKTsKKwkJCWFwLnNldFBhc3N3b3JkKHBhc3N3b3JkKTsKKwkJCWFwLnNldFVzZXJJZCh1c2Vyc0Rhby5nZXQodXNlcklkKSk7CisJCQlhcC5zZXRBcHBvaW50bWVudENhdGVnb3J5KGFwcG9pbnRtZW50Q2F0ZWdvcnlEYW9JbXBsCisJCQkJCS5nZXRBcHBvaW50bWVudENhdGVnb3J5QnlJZChjYXRlZ29yeUlkKSk7CisJCQlhcC5zZXRSb29tKHJvb20pOworCQkJYXAuc2V0SXNDb25uZWN0ZWRFdmVudChpc0Nvbm5lY3RlZEV2ZW50KTsKKworCQkJYXAgPSBlbS5tZXJnZShhcCk7CisKKwkJCXJldHVybiBhcC5nZXRBcHBvaW50bWVudElkKCk7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2FkZEFwcG9pbnRtZW50XTogIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgTG9uZyBhZGRBcHBvaW50bWVudE9iaihBcHBvaW50bWVudCBhcCkgeworCQl0cnkgeworCisJCQlhcC5zZXRTdGFydHRpbWUobmV3IERhdGUoKSk7CisKKwkJCWFwID0gZW0ubWVyZ2UoYXApOworCisJCQlyZXR1cm4gYXAuZ2V0QXBwb2ludG1lbnRJZCgpOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIlthZGRBcHBvaW50bWVudE9ial06ICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJcHVibGljIExvbmcgdXBkYXRlQXBwb2ludG1lbnQoQXBwb2ludG1lbnQgYXBwb2ludG1lbnQpIHsKKwkJaWYgKGFwcG9pbnRtZW50LmdldEFwcG9pbnRtZW50SWQoKSA+IDApIHsKKwkJCXRyeSB7CisJCQkJaWYgKGFwcG9pbnRtZW50LmdldEFwcG9pbnRtZW50SWQoKSA9PSBudWxsKSB7CisJCQkJCWVtLnBlcnNpc3QoYXBwb2ludG1lbnQpOworCQkJCX0gZWxzZSB7CisJCQkJCWlmICghZW0uY29udGFpbnMoYXBwb2ludG1lbnQpKSB7CisJCQkJCQllbS5tZXJnZShhcHBvaW50bWVudCk7CisJCQkJCX0KKwkJCQl9CisJCQkJcmV0dXJuIGFwcG9pbnRtZW50LmdldEFwcG9pbnRtZW50SWQoKTsKKwkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCQlsb2cuZXJyb3IoIlt1cGRhdGVBcHBvaW50bWVudF0gIiwgZXgyKTsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCWxvZy5lcnJvcigiW3VwZGF0ZUFwcG9pbnRtZW50XSAiICsgIkVycm9yOiBObyBBcHBvaW50bWVudElkIGdpdmVuIik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIExpc3Q8QXBwb2ludG1lbnQ+IGdldEFwcG9pbnRtZW50c0J5Um9vbUlkKExvbmcgcm9vbUlkKSB7CisJCXRyeSB7CisKKwkJCVN0cmluZyBocWwgPSAic2VsZWN0IGEgZnJvbSBBcHBvaW50bWVudCBhICIKKwkJCQkJKyAiV0hFUkUgYS5yb29tLnJvb21zX2lkID0gOnJvb21JZCAiOworCisJCQlUeXBlZFF1ZXJ5PEFwcG9pbnRtZW50PiBxdWVyeSA9IGVtLmNyZWF0ZVF1ZXJ5KGhxbCwKKwkJCQkJQXBwb2ludG1lbnQuY2xhc3MpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJyb29tSWQiLCByb29tSWQpOworCQkJTGlzdDxBcHBvaW50bWVudD4gbGwgPSBxdWVyeS5nZXRSZXN1bHRMaXN0KCk7CisKKwkJCXJldHVybiBsbDsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCWxvZy5lcnJvcigiW2dldEFwcG9pbnRtZW50c0J5Um9vbUlkXSIsIGUpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXByaXZhdGUgdm9pZCB1cGRhdGVDb25uZWN0ZWRFdmVudHNUaW1lT25seShBcHBvaW50bWVudCBhcCwKKwkJCURhdGUgYXBwb2ludG1lbnRzdGFydCwgRGF0ZSBhcHBvaW50bWVudGVuZCkgeworCQl0cnkgeworCisJCQlpZiAoYXAuZ2V0Um9vbSgpID09IG51bGwpIHsKKwkJCQlyZXR1cm47CisJCQl9CisKKwkJCUxpc3Q8QXBwb2ludG1lbnQ+IGFwcG9pbnRtZW50cyA9IHRoaXMuZ2V0QXBwb2ludG1lbnRzQnlSb29tSWQoYXAKKwkJCQkJLmdldFJvb20oKS5nZXRSb29tc19pZCgpKTsKKworCQkJZm9yIChBcHBvaW50bWVudCBhcHBvaW50bWVudCA6IGFwcG9pbnRtZW50cykgeworCisJCQkJaWYgKCFhcC5nZXRBcHBvaW50bWVudElkKCkuZXF1YWxzKAorCQkJCQkJYXBwb2ludG1lbnQuZ2V0QXBwb2ludG1lbnRJZCgpKSkgeworCisJCQkJCWFwLnNldEFwcG9pbnRtZW50U3RhcnR0aW1lKGFwcG9pbnRtZW50c3RhcnQpOworCQkJCQlhcC5zZXRBcHBvaW50bWVudEVuZHRpbWUoYXBwb2ludG1lbnRlbmQpOworCQkJCQlhcC5zZXRVcGRhdGV0aW1lKG5ldyBEYXRlKCkpOworCQkJCQlpZiAoYXAuZ2V0QXBwb2ludG1lbnRJZCgpID09IG51bGwpIHsKKwkJCQkJCWVtLnBlcnNpc3QoYXApOworCQkJCQl9IGVsc2UgeworCQkJCQkJaWYgKCFlbS5jb250YWlucyhhcCkpIHsKKwkJCQkJCQllbS5tZXJnZShhcCk7CisJCQkJCQl9CisJCQkJCX0KKworCQkJCX0KKworCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW3VwZGF0ZUNvbm5lY3RlZEV2ZW50c10iLCBlcnIpOworCQl9CisJfQorCisJcHJpdmF0ZSB2b2lkIHVwZGF0ZUNvbm5lY3RlZEV2ZW50cyhBcHBvaW50bWVudCBhcCwgU3RyaW5nIGFwcG9pbnRtZW50TmFtZSwKKwkJCVN0cmluZyBhcHBvaW50bWVudERlc2NyaXB0aW9uLCBEYXRlIGFwcG9pbnRtZW50c3RhcnQsCisJCQlEYXRlIGFwcG9pbnRtZW50ZW5kLCBCb29sZWFuIGlzRGFpbHksIEJvb2xlYW4gaXNXZWVrbHksCisJCQlCb29sZWFuIGlzTW9udGhseSwgQm9vbGVhbiBpc1llYXJseSwKKwkJCUFwcG9pbnRtZW50Q2F0ZWdvcnkgYXBwb2ludG1lbnRDYXRlZ29yeSwKKwkJCUFwcG9pbnRtZW50UmVtaW5kZXJUeXBzIGFwcG9pbnRtZW50UmVtaW5kZXJUeXBzLCBAU3VwcHJlc3NXYXJuaW5ncygicmF3dHlwZXMiKSBMaXN0IG1tQ2xpZW50LAorCQkJTG9uZyB1c2Vyc19pZCwgU3RyaW5nIGJhc2VVcmwsIExvbmcgbGFuZ3VhZ2VfaWQsCisJCQlCb29sZWFuIGlzUGFzc3dvcmRQcm90ZWN0ZWQsIFN0cmluZyBwYXNzd29yZCkgeworCQl0cnkgeworCisJCQlpZiAoYXAuZ2V0Um9vbSgpID09IG51bGwpIHsKKwkJCQlyZXR1cm47CisJCQl9CisKKwkJCUxpc3Q8QXBwb2ludG1lbnQ+IGFwcG9pbnRtZW50cyA9IHRoaXMuZ2V0QXBwb2ludG1lbnRzQnlSb29tSWQoYXAKKwkJCQkJLmdldFJvb20oKS5nZXRSb29tc19pZCgpKTsKKworCQkJZm9yIChBcHBvaW50bWVudCBhcHBvaW50bWVudCA6IGFwcG9pbnRtZW50cykgeworCisJCQkJaWYgKCFhcC5nZXRBcHBvaW50bWVudElkKCkuZXF1YWxzKAorCQkJCQkJYXBwb2ludG1lbnQuZ2V0QXBwb2ludG1lbnRJZCgpKSkgeworCisJCQkJCWFwcG9pbnRtZW50LnNldEFwcG9pbnRtZW50TmFtZShhcHBvaW50bWVudE5hbWUpOworCQkJCQlhcHBvaW50bWVudC5zZXRBcHBvaW50bWVudFN0YXJ0dGltZShhcHBvaW50bWVudHN0YXJ0KTsKKwkJCQkJYXBwb2ludG1lbnQuc2V0QXBwb2ludG1lbnRFbmR0aW1lKGFwcG9pbnRtZW50ZW5kKTsKKwkJCQkJYXBwb2ludG1lbnQKKwkJCQkJCQkuc2V0QXBwb2ludG1lbnREZXNjcmlwdGlvbihhcHBvaW50bWVudERlc2NyaXB0aW9uKTsKKwkJCQkJYXBwb2ludG1lbnQuc2V0VXBkYXRldGltZShuZXcgRGF0ZSgpKTsKKwkJCQkJYXBwb2ludG1lbnQuc2V0UmVtaW5kKGFwcG9pbnRtZW50UmVtaW5kZXJUeXBzKTsKKwkJCQkJYXBwb2ludG1lbnQuc2V0SXNEYWlseShpc0RhaWx5KTsKKwkJCQkJYXBwb2ludG1lbnQuc2V0SXNXZWVrbHkoaXNXZWVrbHkpOworCQkJCQlhcHBvaW50bWVudC5zZXRJc01vbnRobHkoaXNNb250aGx5KTsKKwkJCQkJYXBwb2ludG1lbnQuc2V0SXNZZWFybHkoaXNZZWFybHkpOworCQkJCQlhcHBvaW50bWVudC5zZXRMYW5ndWFnZV9pZChsYW5ndWFnZV9pZCk7CisJCQkJCWFwcG9pbnRtZW50LnNldElzUGFzc3dvcmRQcm90ZWN0ZWQoaXNQYXNzd29yZFByb3RlY3RlZCk7CisJCQkJCWFwcG9pbnRtZW50LnNldFBhc3N3b3JkKHBhc3N3b3JkKTsKKwkJCQkJLy8gYXAuc2V0VXNlcklkKHVzZXJzRGFvLmdldFVzZXIodXNlcklkKSk7CisJCQkJCWFwcG9pbnRtZW50LnNldEFwcG9pbnRtZW50Q2F0ZWdvcnkoYXBwb2ludG1lbnRDYXRlZ29yeSk7CisKKwkJCQkJaWYgKGFwcG9pbnRtZW50LmdldEFwcG9pbnRtZW50SWQoKSA9PSBudWxsKSB7CisJCQkJCQllbS5wZXJzaXN0KGFwcG9pbnRtZW50KTsKKwkJCQkJfSBlbHNlIHsKKwkJCQkJCWlmICghZW0uY29udGFpbnMoYXBwb2ludG1lbnQpKSB7CisJCQkJCQkJZW0ubWVyZ2UoYXBwb2ludG1lbnQpOworCQkJCQkJfQorCQkJCQl9CisKKwkJCQl9CisKKwkJCX0KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIlt1cGRhdGVDb25uZWN0ZWRFdmVudHNdIiwgZXJyKTsKKwkJfQorCX0KKworCS8qKgorCSAqIAorCSAqIEBwYXJhbSBhcHBvaW50bWVudElkCisJICogQHBhcmFtIGFwcG9pbnRtZW50TmFtZQorCSAqIEBwYXJhbSBhcHBvaW50bWVudERlc2NyaXB0aW9uCisJICogQHBhcmFtIGFwcG9pbnRtZW50c3RhcnQKKwkgKiBAcGFyYW0gYXBwb2ludG1lbnRlbmQKKwkgKiBAcGFyYW0gaXNEYWlseQorCSAqIEBwYXJhbSBpc1dlZWtseQorCSAqIEBwYXJhbSBpc01vbnRobHkKKwkgKiBAcGFyYW0gaXNZZWFybHkKKwkgKiBAcGFyYW0gY2F0ZWdvcnlJZAorCSAqIEBwYXJhbSByZW1pbmQKKwkgKiBAcGFyYW0gbW1DbGllbnQKKwkgKiBAcGFyYW0gdXNlcnNfaWQKKwkgKiBAcmV0dXJuCisJICovCisJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCXB1YmxpYyBMb25nIHVwZGF0ZUFwcG9pbnRtZW50KExvbmcgYXBwb2ludG1lbnRJZCwgU3RyaW5nIGFwcG9pbnRtZW50TmFtZSwKKwkJCVN0cmluZyBhcHBvaW50bWVudERlc2NyaXB0aW9uLCBEYXRlIGFwcG9pbnRtZW50c3RhcnQsCisJCQlEYXRlIGFwcG9pbnRtZW50ZW5kLCBCb29sZWFuIGlzRGFpbHksIEJvb2xlYW4gaXNXZWVrbHksCisJCQlCb29sZWFuIGlzTW9udGhseSwgQm9vbGVhbiBpc1llYXJseSwgTG9uZyBjYXRlZ29yeUlkLCBMb25nIHJlbWluZCwKKwkJCUBTdXBwcmVzc1dhcm5pbmdzKCJyYXd0eXBlcyIpIExpc3QgbW1DbGllbnQsIExvbmcgdXNlcnNfaWQsIFN0cmluZyBiYXNlVXJsLCBMb25nIGxhbmd1YWdlX2lkLAorCQkJQm9vbGVhbiBpc1Bhc3N3b3JkUHJvdGVjdGVkLCBTdHJpbmcgcGFzc3dvcmQsIFN0cmluZyBpQ2FsVGltZVpvbmUsIFN0cmluZyBhcHBvaW50bWVudExvY2F0aW9uKSB7CisKKwkJbG9nLmRlYnVnKCJBcHBvaW50bWVudERBT0ltcGwudXBkYXRlQXBwb2ludG1lbnQiKTsKKwkJdHJ5IHsKKworCQkJQXBwb2ludG1lbnQgYXAgPSB0aGlzLmdldEFwcG9pbnRtZW50QnlJZChhcHBvaW50bWVudElkKTsKKworCQkJQXBwb2ludG1lbnRSZW1pbmRlclR5cHMgYXBwb2ludG1lbnRSZW1pbmRlclR5cHMgPSBhcHBvaW50bWVudFJlbWluZGVyVHlwRGFvSW1wbAorCQkJCQkuZ2V0QXBwb2ludG1lbnRSZW1pbmRlclR5cEJ5SWQocmVtaW5kKTsKKwkJCUFwcG9pbnRtZW50Q2F0ZWdvcnkgYXBwb2ludG1lbnRDYXRlZ29yeSA9IGFwcG9pbnRtZW50Q2F0ZWdvcnlEYW9JbXBsCisJCQkJCS5nZXRBcHBvaW50bWVudENhdGVnb3J5QnlJZChjYXRlZ29yeUlkKTsKKworCQkJYm9vbGVhbiBzZW5kTWFpbCA9ICFhcC5nZXRBcHBvaW50bWVudE5hbWUoKS5lcXVhbHMoYXBwb2ludG1lbnROYW1lKSB8fAorCQkJCQkhYXAuZ2V0QXBwb2ludG1lbnREZXNjcmlwdGlvbigpLmVxdWFscyhhcHBvaW50bWVudERlc2NyaXB0aW9uKSB8fAorCQkJCQkhYXAuZ2V0QXBwb2ludG1lbnRMb2NhdGlvbigpLmVxdWFscyhhcHBvaW50bWVudExvY2F0aW9uKSB8fAorCQkJCQkhYXAuZ2V0QXBwb2ludG1lbnRTdGFydHRpbWUoKS5lcXVhbHMoYXBwb2ludG1lbnRzdGFydCkgfHwKKwkJCQkJIWFwLmdldEFwcG9pbnRtZW50RW5kdGltZSgpLmVxdWFscyhhcHBvaW50bWVudGVuZCk7CisJCQkKKwkJCS8vIGNoYW5nZSBjb25uZWN0ZWQgZXZlbnRzIG9mIG90aGVyIHBhcnRpY2lwYW50cworCQkJaWYgKGFwLmdldElzQ29ubmVjdGVkRXZlbnQoKSAhPSBudWxsICYmIGFwLmdldElzQ29ubmVjdGVkRXZlbnQoKSkgeworCQkJCXRoaXMudXBkYXRlQ29ubmVjdGVkRXZlbnRzKGFwLCBhcHBvaW50bWVudE5hbWUsCisJCQkJCQlhcHBvaW50bWVudERlc2NyaXB0aW9uLCBhcHBvaW50bWVudHN0YXJ0LAorCQkJCQkJYXBwb2ludG1lbnRlbmQsIGlzRGFpbHksIGlzV2Vla2x5LCBpc01vbnRobHksIGlzWWVhcmx5LAorCQkJCQkJYXBwb2ludG1lbnRDYXRlZ29yeSwgYXBwb2ludG1lbnRSZW1pbmRlclR5cHMsIG1tQ2xpZW50LAorCQkJCQkJdXNlcnNfaWQsIGJhc2VVcmwsIGxhbmd1YWdlX2lkLCBpc1Bhc3N3b3JkUHJvdGVjdGVkLAorCQkJCQkJcGFzc3dvcmQpOworCQkJfQorCisJCQkvLyBVcGRhdGUgSW52aXRhdGlvbiBoYXNoIHRvIG5ldyB0aW1lCisJCQlpbnZpdGF0aW9uTWFuYWdlci51cGRhdGVJbnZpdGF0aW9uQnlBcHBvaW50bWVudChhcHBvaW50bWVudElkLAorCQkJCQlhcHBvaW50bWVudHN0YXJ0LCBhcHBvaW50bWVudGVuZCk7CisKKwkJCWFwLnNldEFwcG9pbnRtZW50TmFtZShhcHBvaW50bWVudE5hbWUpOworCQkJYXAuc2V0QXBwb2ludG1lbnRMb2NhdGlvbihhcHBvaW50bWVudExvY2F0aW9uKTsKKwkJCWFwLnNldEFwcG9pbnRtZW50U3RhcnR0aW1lKGFwcG9pbnRtZW50c3RhcnQpOworCQkJYXAuc2V0QXBwb2ludG1lbnRFbmR0aW1lKGFwcG9pbnRtZW50ZW5kKTsKKwkJCWFwLnNldEFwcG9pbnRtZW50RGVzY3JpcHRpb24oYXBwb2ludG1lbnREZXNjcmlwdGlvbik7CisJCQlhcC5zZXRVcGRhdGV0aW1lKG5ldyBEYXRlKCkpOworCQkJYXAuc2V0UmVtaW5kKGFwcG9pbnRtZW50UmVtaW5kZXJUeXBzKTsKKwkJCWFwLnNldElzRGFpbHkoaXNEYWlseSk7CisJCQlhcC5zZXRJc1dlZWtseShpc1dlZWtseSk7CisJCQlhcC5zZXRJc01vbnRobHkoaXNNb250aGx5KTsKKwkJCWFwLnNldElzWWVhcmx5KGlzWWVhcmx5KTsKKwkJCWFwLnNldExhbmd1YWdlX2lkKGxhbmd1YWdlX2lkKTsKKwkJCWFwLnNldElzUGFzc3dvcmRQcm90ZWN0ZWQoaXNQYXNzd29yZFByb3RlY3RlZCk7CisJCQlhcC5zZXRQYXNzd29yZChwYXNzd29yZCk7CisJCQkvLyBhcC5zZXRVc2VySWQodXNlcnNEYW8uZ2V0VXNlcih1c2VySWQpKTsKKwkJCWFwLnNldEFwcG9pbnRtZW50Q2F0ZWdvcnkoYXBwb2ludG1lbnRDYXRlZ29yeSk7CisKKwkJCWlmIChhcC5nZXRBcHBvaW50bWVudElkKCkgPT0gbnVsbCkgeworCQkJCWVtLnBlcnNpc3QoYXApOworCQkJfSBlbHNlIHsKKwkJCQlpZiAoIWVtLmNvbnRhaW5zKGFwKSkgeworCQkJCQllbS5tZXJnZShhcCk7CisJCQkJfQorCQkJfQorCisJCQkvLyBBZGRpbmcgSW52aXRvciBhcyBNZWV0aW5nbWVtYmVyCisJCQlVc2VyIHVzZXIgPSB1c2VyTWFuYWdlci5nZXRVc2VyQnlJZCh1c2Vyc19pZCk7CisKKwkJCVN0cmluZyBpbnZpdG9yTmFtZSA9IHVzZXIuZ2V0Rmlyc3RuYW1lKCkgKyAiICIgKyB1c2VyLmdldExhc3RuYW1lKCkKKwkJCQkJKyAiIFsiICsgdXNlci5nZXRBZHJlc3NlcygpLmdldEVtYWlsKCkgKyAiXSI7CisKKwkJCUxpc3Q8TWVldGluZ01lbWJlcj4gbWVldGluZ3NSZW1vdGVNZW1iZXJzID0gbWVldGluZ01lbWJlckRhbworCQkJCQkuZ2V0TWVldGluZ01lbWJlckJ5QXBwb2ludG1lbnRJZChhcC5nZXRBcHBvaW50bWVudElkKCkpOworCisJCQkvLyB0byByZW1vdmUKKwkJCWZvciAoTWVldGluZ01lbWJlciBtZW1iZXJSZW1vdGUgOiBtZWV0aW5nc1JlbW90ZU1lbWJlcnMpIHsKKworCQkJCWJvb2xlYW4gZm91bmQgPSBmYWxzZTsKKworCQkJCWlmIChtbUNsaWVudCAhPSBudWxsKSB7CisJCQkJCWZvciAoaW50IGkgPSAwOyBpIDwgbW1DbGllbnQuc2l6ZSgpOyBpKyspIHsKKwkJCQkJCQorCQkJCQkJQFN1cHByZXNzV2FybmluZ3MoInJhd3R5cGVzIikKKwkJCQkJCU1hcCBjbGllbnRNZW1lYmVyID0gKE1hcCkgbW1DbGllbnQuZ2V0KGkpOworCQkJCQkJTG9uZyBtZWV0aW5nTWVtYmVySWQgPSBMb25nCisJCQkJCQkJCS52YWx1ZU9mKAorCQkJCQkJCQkJCWNsaWVudE1lbWViZXIuZ2V0KCJtZWV0aW5nTWVtYmVySWQiKQorCQkJCQkJCQkJCQkJLnRvU3RyaW5nKCkpLmxvbmdWYWx1ZSgpOworCQkJCQkJCisJCQkJCQlsb2cuZGVidWcoIkRFTEVURSBuZXdseSBDSEVDSyBtZWV0aW5nTWVtYmVySWQ6IHt9IFZTIHt9IC0tICIsIG1lZXRpbmdNZW1iZXJJZCwgbWVtYmVyUmVtb3RlLmdldE1lZXRpbmdNZW1iZXJJZCgpKTsKKworCQkJCQkJaWYgKG1lbWJlclJlbW90ZS5nZXRNZWV0aW5nTWVtYmVySWQoKS5lcXVhbHMoCisJCQkJCQkJCW1lZXRpbmdNZW1iZXJJZCkpIHsKKwkJCQkJCQlsb2cuZGVidWcoIkFwcG9pbnRNZW50REFPSW1wbC51cGRhdGVBcHBvaW50bWVudCAgLSBtZW1iZXIgIgorCQkJCQkJCQkJKyBtZWV0aW5nTWVtYmVySWQgKyAiIGlzIHRvIGJlIHJlbW92ZWQhIik7CisJCQkJCQkJLy8gTm90aWZ5aW5nIE1lbWJlciBmb3IgVXBkYXRlCisJCQkJCQkJZm91bmQgPSB0cnVlOworCQkJCQkJCWJyZWFrOworCQkJCQkJfQorCisJCQkJCX0KKwkJCQl9CisKKwkJCQlpZiAoIWZvdW5kKSB7CisJCQkJCQorCQkJCQlsb2cuZGVidWcoIkRFTEVURSBnZXRNZWV0aW5nTWVtYmVySWQ6IHt9IC0tICIsIG1lbWJlclJlbW90ZS5nZXRNZWV0aW5nTWVtYmVySWQoKSk7CisKKwkJCQkJLy8gTm90IGluIExpc3QgaW4gY2xpZW50IGRlbGV0ZSBpdAorCQkJCQltZWV0aW5nTWVtYmVyTG9naWMuZGVsZXRlTWVldGluZ01lbWJlcigKKwkJCQkJCQltZW1iZXJSZW1vdGUuZ2V0TWVldGluZ01lbWJlcklkKCksIHVzZXJzX2lkLAorCQkJCQkJCWxhbmd1YWdlX2lkKTsKKwkJCQkJLy8gbWVldGluZ01lbWJlckRhby5kZWxldGVNZWV0aW5nTWVtYmVyKG1lbWJlclJlbW90ZS5nZXRNZWV0aW5nTWVtYmVySWQoKSk7CisJCQkJfSBlbHNlIHsKKwkJCQkJLy8gTm90aWZ5IG1lbWJlciBvZiBjaGFuZ2VzCisJCQkJCWludml0YXRpb25NYW5hZ2VyLnVwZGF0ZUludml0YXRpb24oYXAsIG1lbWJlclJlbW90ZSwKKwkJCQkJCQl1c2Vyc19pZCwgbGFuZ3VhZ2VfaWQsIGludml0b3JOYW1lLCBzZW5kTWFpbCk7CisKKwkJCQl9CisJCQl9CisKKwkJCS8vIGFkZCBpdGVtcworCQkJaWYgKG1tQ2xpZW50ICE9IG51bGwpIHsKKworCQkJCWZvciAoaW50IGkgPSAwOyBpIDwgbW1DbGllbnQuc2l6ZSgpOyBpKyspIHsKKworCQkJCQlAU3VwcHJlc3NXYXJuaW5ncygicmF3dHlwZXMiKQorCQkJCQlNYXAgY2xpZW50TWVtYmVyID0gKE1hcCkgbW1DbGllbnQuZ2V0KGkpOworCisJCQkJCUxvbmcgbWVldGluZ01lbWJlcklkID0gTG9uZy52YWx1ZU9mKAorCQkJCQkJCWNsaWVudE1lbWJlci5nZXQoIm1lZXRpbmdNZW1iZXJJZCIpLnRvU3RyaW5nKCkpCisJCQkJCQkJLmxvbmdWYWx1ZSgpOworCisJCQkJCWJvb2xlYW4gZm91bmQgPSBmYWxzZTsKKworCQkJCQlmb3IgKE1lZXRpbmdNZW1iZXIgbWVtYmVyUmVtb3RlIDogbWVldGluZ3NSZW1vdGVNZW1iZXJzKSB7CisJCQkJCQlpZiAobWVtYmVyUmVtb3RlLmdldE1lZXRpbmdNZW1iZXJJZCgpLmVxdWFscygKKwkJCQkJCQkJbWVldGluZ01lbWJlcklkKSkgeworCQkJCQkJCWZvdW5kID0gdHJ1ZTsKKwkJCQkJCX0KKwkJCQkJfQorCisJCQkJCWlmICghZm91bmQpIHsKKworCQkJCQkJLy8gV2UgbmVlZCB0d28gZGlmZmVyZW50IHRpbWVab25lcywgdGhlIGludGVybmFsIEphdmEKKwkJCQkJCS8vIE9iamVjdAorCQkJCQkJLy8gVGltZVpvbmUsIGFuZAorCQkJCQkJLy8gdGhlIG9uZSBmb3IgdGhlIFVJIGRpc3BsYXkgb2JqZWN0IHRvIG1hcCB0bywgY2F1c2UKKwkJCQkJCS8vIHRoZSBVSQorCQkJCQkJLy8gb25seSBoYXMgYXJvdW5kIDI0IHRpbWV6b25lcworCQkJCQkJLy8gYW5kIEphdmEgYXJvdW5kIDYwMCsrCisJCQkJCQlMb25nIHNlbmRUb1VzZXJJZCA9IDBMOworCQkJCQkJVGltZVpvbmUgdGltZXpvbmVNZW1iZXIgPSBudWxsOworCQkJCQkJT21UaW1lWm9uZSBvbVRpbWVab25lID0gbnVsbDsKKwkJCQkJCWlmIChjbGllbnRNZW1iZXIuZ2V0KCJ1c2VySWQiKSAhPSBudWxsKSB7CisJCQkJCQkJc2VuZFRvVXNlcklkID0gTG9uZy52YWx1ZU9mKAorCQkJCQkJCQkJY2xpZW50TWVtYmVyLmdldCgidXNlcklkIikudG9TdHJpbmcoKSkKKwkJCQkJCQkJCS5sb25nVmFsdWUoKTsKKwkJCQkJCX0KKworCQkJCQkJU3RyaW5nIHBob25lID0gIiI7CisJCQkJCQkvLyBDaGVjayBpZiB0aGlzIGlzIGFuIGludGVybmFsIHVzZXIsIGlmIHllcyB1c2UgdGhlCisJCQkJCQkvLyB0aW1lem9uZSBmcm9tIGhpcyBwcm9maWxlIG90aGVyd2lzZSBnZXQgdGhlIHRpbWV6b25lcworCQkJCQkJLy8gZnJvbSB0aGUgdmFyaWFibGUgak5hbWVUaW1lWm9uZQorCQkJCQkJaWYgKHNlbmRUb1VzZXJJZCA+IDApIHsKKwkJCQkJCQlVc2VyIGludGVyYWxVc2VyID0gdXNlck1hbmFnZXIKKwkJCQkJCQkJCS5nZXRVc2VyQnlJZChzZW5kVG9Vc2VySWQpOworCQkJCQkJCXRpbWV6b25lTWVtYmVyID0gdGltZXpvbmVVdGlsCisJCQkJCQkJCQkuZ2V0VGltZXpvbmVCeVVzZXIoaW50ZXJhbFVzZXIpOworCQkJCQkJCW9tVGltZVpvbmUgPSBpbnRlcmFsVXNlci5nZXRPbVRpbWVab25lKCk7CisJCQkJCQkJcGhvbmUgPSBpbnRlcmFsVXNlci5nZXRQaG9uZUZvclNNUygpOworCQkJCQkJfSBlbHNlIHsKKwkJCQkJCQkvLyBHZXQgdGhlIGludGVybmFsLW5hbWUgb2YgdGhlIHRpbWV6b25lIHNldCBpbiB0aGUKKwkJCQkJCQkvLyBjbGllbnQgb2JqZWN0IGFuZCBjb252ZXJ0IGl0IHRvIGEgcmVhbCBvbmUKKwkJCQkJCQlPYmplY3Qgak5hbWUgPSBjbGllbnRNZW1iZXIuZ2V0KCJqTmFtZVRpbWVab25lIik7CisJCQkJCQkJaWYgKGpOYW1lID09IG51bGwpIHsKKwkJCQkJCQkJbG9nLmVycm9yKCJqTmFtZVRpbWVab25lIG5vdCBzZXQgaW4gdXNlciBvYmplY3QgdmFyaWFibGUiKTsKKwkJCQkJCQkJak5hbWUgPSAiIjsKKwkJCQkJCQl9CisJCQkJCQkJb21UaW1lWm9uZSA9IG9tVGltZVpvbmVEYW9JbXBsLmdldE9tVGltZVpvbmUoak5hbWUKKwkJCQkJCQkJCS50b1N0cmluZygpKTsKKwkJCQkJCQl0aW1lem9uZU1lbWJlciA9IHRpbWV6b25lVXRpbAorCQkJCQkJCQkJLmdldFRpbWV6b25lQnlJbnRlcm5hbEpOYW1lKGpOYW1lCisJCQkJCQkJCQkJCS50b1N0cmluZygpKTsKKwkJCQkJCX0KKworCQkJCQkJLy8gTm90IEluIFJlbW90ZSBMaXN0IGF2YWlsYWJsZSAtIGludGVybiBPUiBleHRlcm4gdXNlcgorCQkJCQkJbWVldGluZ01lbWJlckxvZ2ljLmFkZE1lZXRpbmdNZW1iZXIoCisJCQkJCQkJCWNsaWVudE1lbWJlci5nZXQoImZpcnN0bmFtZSIpID09IG51bGwgPworCQkJCQkJCQkJCWNsaWVudE1lbWJlci5nZXQoImZpcnN0bmFtZSIpLnRvU3RyaW5nKCkgOiAiIiwKKwkJCQkJCQkJY2xpZW50TWVtYmVyLmdldCgibGFzdG5hbWUiKSA9PSBudWxsID8gCisJCQkJCQkJCQkJY2xpZW50TWVtYmVyLmdldCgibGFzdG5hbWUiKS50b1N0cmluZygpIDogIiIsCisJCQkJCQkJCSIwIiwgLy8gbWVtYmVyIC0gU3RhdHVzCisJCQkJCQkJCSIwIiwgLy8gYXBwb2ludGVtZW50IC0gU3RhdHVzCisJCQkJCQkJCWFwcG9pbnRtZW50SWQsCisJCQkJCQkJCW51bGwsIC8vIFVzZXJJZAorCQkJCQkJCQljbGllbnRNZW1iZXIuZ2V0KCJlbWFpbCIpLnRvU3RyaW5nKCksIC8vIEVtYWlsCisJCQkJCQkJCQkJCQkJCQkJCQkvLyB0bworCQkJCQkJCQkJCQkJCQkJCQkJLy8gc2VuZAorCQkJCQkJCQkJCQkJCQkJCQkJLy8gdG8KKwkJCQkJCQkJcGhvbmUsCisJCQkJCQkJCWJhc2VVcmwsIC8vIFVSTCB0byBzZW5kIHRvCisJCQkJCQkJCXNlbmRUb1VzZXJJZCwgLy8gc2VuZGluZyBUbzogRXh0ZXJuYWwgdXNlcnMgaGF2ZQorCQkJCQkJCQkJCQkJLy8gYSAwIGhlcmUKKwkJCQkJCQkJbmV3IEJvb2xlYW4oZmFsc2UpLCAvLyBpbnZpdG9yCisJCQkJCQkJCWxhbmd1YWdlX2lkLCAKKwkJCQkJCQkJaXNQYXNzd29yZFByb3RlY3RlZCwgCisJCQkJCQkJCXBhc3N3b3JkLAorCQkJCQkJCQl0aW1lem9uZU1lbWJlciwgb21UaW1lWm9uZSwgaW52aXRvck5hbWUpOworCisJCQkJCX0KKworCQkJCX0KKwkJCX0KKworCQkJcmV0dXJuIGFwcG9pbnRtZW50SWQ7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW3VwZGF0ZUFwcG9pbnRtZW50XTogIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKworCX0KKworCXB1YmxpYyBMb25nIHVwZGF0ZUFwcG9pbnRtZW50QnlUaW1lKExvbmcgYXBwb2ludG1lbnRJZCwKKwkJCURhdGUgYXBwb2ludG1lbnRzdGFydCwgRGF0ZSBhcHBvaW50bWVudGVuZCwgTG9uZyB1c2Vyc19pZCwKKwkJCVN0cmluZyBiYXNlVXJsLCBMb25nIGxhbmd1YWdlX2lkLCBTdHJpbmcgaUNhbFRpbWVab25lKSB7CisKKwkJbG9nLmRlYnVnKCJBcHBvaW50bWVudERBT0ltcGwudXBkYXRlQXBwb2ludG1lbnQiKTsKKwkJdHJ5IHsKKworCQkJQXBwb2ludG1lbnQgYXAgPSB0aGlzLmdldEFwcG9pbnRtZW50QnlJZChhcHBvaW50bWVudElkKTsKKworCQkJaWYgKCFhcC5nZXRTdGFydHRpbWUoKS5lcXVhbHMoYXBwb2ludG1lbnRzdGFydCkgfHwKKwkJCQkJIWFwLmdldEFwcG9pbnRtZW50RW5kdGltZSgpLmVxdWFscyhhcHBvaW50bWVudGVuZCkpIHsKKworCQkJLy8gY2hhbmdlIGNvbm5lY3RlZCBldmVudHMgb2Ygb3RoZXIgcGFydGljaXBhbnRzCisJCQlpZiAoYXAuZ2V0SXNDb25uZWN0ZWRFdmVudCgpICE9IG51bGwgJiYgYXAuZ2V0SXNDb25uZWN0ZWRFdmVudCgpKSB7CisJCQkJdGhpcy51cGRhdGVDb25uZWN0ZWRFdmVudHNUaW1lT25seShhcCwgYXBwb2ludG1lbnRzdGFydCwKKwkJCQkJCWFwcG9pbnRtZW50ZW5kKTsKKwkJCX0KKworCQkJLy8gVXBkYXRlIEludml0YXRpb24gaGFzaCB0byBuZXcgdGltZQorCQkJaW52aXRhdGlvbk1hbmFnZXIudXBkYXRlSW52aXRhdGlvbkJ5QXBwb2ludG1lbnQoYXBwb2ludG1lbnRJZCwKKwkJCQkJYXBwb2ludG1lbnRzdGFydCwgYXBwb2ludG1lbnRlbmQpOworCisJCQlhcC5zZXRBcHBvaW50bWVudFN0YXJ0dGltZShhcHBvaW50bWVudHN0YXJ0KTsKKwkJCWFwLnNldEFwcG9pbnRtZW50RW5kdGltZShhcHBvaW50bWVudGVuZCk7CisJCQlhcC5zZXRVcGRhdGV0aW1lKG5ldyBEYXRlKCkpOworCisJCQlpZiAoYXAuZ2V0QXBwb2ludG1lbnRJZCgpID09IG51bGwpIHsKKwkJCQllbS5wZXJzaXN0KGFwKTsKKwkJCQl9IGVsc2UgaWYgKCFlbS5jb250YWlucyhhcCkpIHsKKwkJCQkJZW0ubWVyZ2UoYXApOworCQkJCX0KKworCQkJTGlzdDxNZWV0aW5nTWVtYmVyPiBtZWV0aW5nc1JlbW90ZU1lbWJlcnMgPSBtZWV0aW5nTWVtYmVyRGFvCisJCQkJCS5nZXRNZWV0aW5nTWVtYmVyQnlBcHBvaW50bWVudElkKGFwLmdldEFwcG9pbnRtZW50SWQoKSk7CisKKwkJCS8vIEFkZGluZyBJbnZpdG9yIE5hbWUKKwkJCVVzZXIgdXNlciA9IHVzZXJNYW5hZ2VyLmdldFVzZXJCeUlkKHVzZXJzX2lkKTsKKwkJCVN0cmluZyBpbnZpdG9yTmFtZSA9IHVzZXIuZ2V0Rmlyc3RuYW1lKCkgKyAiICIgKyB1c2VyLmdldExhc3RuYW1lKCkKKwkJCQkJKyAiIFsiICsgdXNlci5nZXRBZHJlc3NlcygpLmdldEVtYWlsKCkgKyAiXSI7CisKKwkJCS8vIFNlbmQgbm90aWZpY2F0aW9uIG9mIHVwZGF0ZWQgRXZlbnQKKwkJCWZvciAoTWVldGluZ01lbWJlciBtZW1iZXJSZW1vdGUgOiBtZWV0aW5nc1JlbW90ZU1lbWJlcnMpIHsKKworCQkJCS8vIE5vdGlmeSBtZW1iZXIgb2YgY2hhbmdlcworCQkJCWludml0YXRpb25NYW5hZ2VyLnVwZGF0ZUludml0YXRpb24oYXAsIG1lbWJlclJlbW90ZSwKKwkJCQkJCQl1c2Vyc19pZCwgbGFuZ3VhZ2VfaWQsIGludml0b3JOYW1lLCB0cnVlKTsKKworCQkJfQorCQkJfQorCQkJcmV0dXJuIGFwcG9pbnRtZW50SWQ7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW3VwZGF0ZUFwcG9pbnRtZW50QnlUaW1lXTogIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKworCX0KKworCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCXB1YmxpYyBMb25nIGRlbGV0ZUFwcG9pbnRlbWVudChMb25nIGFwcG9pbnRtZW50SWQpIHsKKwkJbG9nLmRlYnVnKCJkZWxldGVBcHBvaW50TWVudCIpOworCQl0cnkgeworCisJCQlBcHBvaW50bWVudCBhcHAgPSB0aGlzLmdldEFwcG9pbnRtZW50QnlJZChhcHBvaW50bWVudElkKTsKKwkJCWFwcC5zZXRVcGRhdGV0aW1lKG5ldyBEYXRlKCkpOworCQkJYXBwLnNldERlbGV0ZWQodHJ1ZSk7CisKKwkJCWlmIChhcHAuZ2V0QXBwb2ludG1lbnRJZCgpID09IG51bGwpIHsKKwkJCQllbS5wZXJzaXN0KGFwcCk7CisJCQl9IGVsc2UgeworCQkJCWlmICghZW0uY29udGFpbnMoYXBwKSkgeworCQkJCQllbS5tZXJnZShhcHApOworCQkJCX0KKwkJCX0KKwkJCXJldHVybiBhcHBvaW50bWVudElkOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIltkZWxldGVBcHBvaW50ZW1lbnRdOiAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMaXN0PEFwcG9pbnRtZW50PiBnZXRBcHBvaW50bWVudHNCeVJhbmdlKExvbmcgdXNlcklkLAorCQkJRGF0ZSBzdGFydHRpbWUsIERhdGUgZW5kdGltZSkgeworCQl0cnkgeworCisJCQlDYWxlbmRhciBjYWxzdGFydCA9IENhbGVuZGFyLmdldEluc3RhbmNlKCk7CisJCQljYWxzdGFydC5zZXRUaW1lKHN0YXJ0dGltZSk7CisJCQljYWxzdGFydC5zZXQoQ2FsZW5kYXIuSE9VUiwgMCk7CisKKwkJCUNhbGVuZGFyIGNhbGVuZCA9IENhbGVuZGFyLmdldEluc3RhbmNlKCk7CisJCQljYWxlbmQuc2V0VGltZShlbmR0aW1lKTsKKwkJCWNhbGVuZC5zZXQoQ2FsZW5kYXIuSE9VUiwgMjMpOworCQkJY2FsZW5kLnNldChDYWxlbmRhci5NSU5VVEUsIDU5KTsKKwkJCQorCQkJbG9nLmRlYnVnKCJTdGFydCAiICsgY2Fsc3RhcnQuZ2V0VGltZSgpICsgIiBFbmQgIiArIGNhbGVuZC5nZXRUaW1lKCkpOworCisJCQlUeXBlZFF1ZXJ5PEFwcG9pbnRtZW50PiBxdWVyeSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoImFwcG9pbnRtZW50c0luUmFuZ2UiLCBBcHBvaW50bWVudC5jbGFzcyk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImRlbGV0ZWQiLCB0cnVlKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigic3RhcnR0aW1lIiwgY2Fsc3RhcnQuZ2V0VGltZSgpKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiZW5kdGltZSIsIGNhbGVuZC5nZXRUaW1lKCkpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJ1c2VySWQiLCB1c2VySWQpOworCQkJCisJCQlMaXN0PEFwcG9pbnRtZW50PiBsaXN0QXBwb2ludHMgPSBuZXcgQXJyYXlMaXN0PEFwcG9pbnRtZW50PihxdWVyeS5nZXRSZXN1bHRMaXN0KCkpOyAKKwkJCVR5cGVkUXVlcnk8QXBwb2ludG1lbnQ+IHExID0gZW0uY3JlYXRlTmFtZWRRdWVyeSgiam9pbmVkQXBwb2ludG1lbnRzSW5SYW5nZSIsIEFwcG9pbnRtZW50LmNsYXNzKTsKKwkJCXExLnNldFBhcmFtZXRlcigic3RhcnR0aW1lIiwgY2Fsc3RhcnQuZ2V0VGltZSgpKTsKKwkJCXExLnNldFBhcmFtZXRlcigiZW5kdGltZSIsIGNhbGVuZC5nZXRUaW1lKCkpOworCQkJcTEuc2V0UGFyYW1ldGVyKCJ1c2VySWQiLCB1c2VySWQpOworCQkJZm9yIChBcHBvaW50bWVudCBhIDogcTEuZ2V0UmVzdWx0TGlzdCgpKSB7CisJCQkJYS5zZXRJc0Nvbm5lY3RlZEV2ZW50KHRydWUpOyAvL1RPRE8gbmVlZCB0byBiZSByZXZpZXdlZAorCQkJCWxpc3RBcHBvaW50cy5hZGQoYSk7CisJCQl9CisJCQkKKwkJCWZvciAoQXBwb2ludG1lbnQgYXBwb2ludG1lbnQgOiBsaXN0QXBwb2ludHMpIHsKKwkJCQlsb2cuZGVidWcoIiIgKyBhcHBvaW50bWVudCk7CisKKwkJCQlhcHBvaW50bWVudC5zZXRNZWV0aW5nTWVtYmVyKG1lZXRpbmdNZW1iZXJEYW8KKwkJCQkJCS5nZXRNZWV0aW5nTWVtYmVyQnlBcHBvaW50bWVudElkKGFwcG9pbnRtZW50CisJCQkJCQkJCS5nZXRBcHBvaW50bWVudElkKCkpKTsKKworCQkJfQorCisJCQlyZXR1cm4gbGlzdEFwcG9pbnRzOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRBcHBvaW50bWVudHNCeVJhbmdlXTogIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgTGlzdDxBcHBvaW50bWVudD4gZ2V0QXBwb2ludG1lbnRzQnlDYXQoTG9uZyBjYXRlZ29yeUlkKSB7CisJCXRyeSB7CisKKwkJCVN0cmluZyBocWwgPSAic2VsZWN0IGEgZnJvbSBBcHBvaW50bWVudHMgYSAiCisJCQkJCSsgIldIRVJFIGEuZGVsZXRlZCA8PiA6ZGVsZXRlZCAiCisJCQkJCSsgIkFORCBhLmFwcG9pbnRtZW50Q2F0ZWdvcnkuY2F0ZWdvcnlJZCA9IDpjYXRlZ29yeUlkIjsKKworCQkJVHlwZWRRdWVyeTxBcHBvaW50bWVudD4gcXVlcnkgPSBlbS5jcmVhdGVRdWVyeShocWwsCisJCQkJCUFwcG9pbnRtZW50LmNsYXNzKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiZGVsZXRlZCIsIHRydWUpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJjYXRlZ29yeUlkIiwgY2F0ZWdvcnlJZCk7CisKKwkJCUxpc3Q8QXBwb2ludG1lbnQ+IGxpc3RBcHBvaW50cyA9IHF1ZXJ5LmdldFJlc3VsdExpc3QoKTsKKwkJCXJldHVybiBsaXN0QXBwb2ludHM7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldEFwcG9pbnRlbWVudHNdOiAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMaXN0PEFwcG9pbnRtZW50PiBnZXRBcHBvaW50bWVudHNCeUNyaXRBbmRDYXQoTG9uZyBjYXRfaWQpIHsKKwkJdHJ5IHsKKworCQkJQ3JpdGVyaWFCdWlsZGVyIGNiID0gZW0uZ2V0Q3JpdGVyaWFCdWlsZGVyKCk7CisJCQlDcml0ZXJpYVF1ZXJ5PEFwcG9pbnRtZW50PiBjcSA9IGNiLmNyZWF0ZVF1ZXJ5KEFwcG9pbnRtZW50LmNsYXNzKTsKKwkJCVJvb3Q8QXBwb2ludG1lbnQ+IGMgPSBjcS5mcm9tKEFwcG9pbnRtZW50LmNsYXNzKTsKKwkJCVByZWRpY2F0ZSBjb25kaXRpb24gPSBjYi5lcXVhbChjLmdldCgiZGVsZXRlZCIpLCBmYWxzZSk7CisJCQlQcmVkaWNhdGUgc3ViQ29uZGl0aW9uID0gY2IuZXF1YWwoYy5nZXQoImNhdGVnb3J5SWQiKSwgY2F0X2lkKTsKKwkJCWNxLndoZXJlKGNvbmRpdGlvbiwgc3ViQ29uZGl0aW9uKTsKKwkJCVR5cGVkUXVlcnk8QXBwb2ludG1lbnQ+IHEgPSBlbS5jcmVhdGVRdWVyeShjcSk7CisJCQlMaXN0PEFwcG9pbnRtZW50PiBsaXN0QXBwb2ludHMgPSBxLmdldFJlc3VsdExpc3QoKTsKKworCQkJcmV0dXJuIGxpc3RBcHBvaW50czsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZ2V0QXBwb2ludGVtZW50c106ICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLy8gbmV4dCBhcHBvaW50bWVudCB0byBzZWxlY3QgZGF0ZQorCXB1YmxpYyBBcHBvaW50bWVudCBnZXROZXh0QXBwb2ludG1lbnQoRGF0ZSBhcHBvaW50bWVudFN0YXJ0dGltZSkgeworCQl0cnkgeworCisJCQlTdHJpbmcgaHFsID0gInNlbGVjdCBhIGZyb20gQXBwb2ludG1lbnQgYSAiCisJCQkJCSsgIldIRVJFIGEuZGVsZXRlZCA8PiA6ZGVsZXRlZCAiCisJCQkJCSsgIkFORCBhLmFwcG9pbnRtZW50U3RhcnR0aW1lID4gOmFwcG9pbnRtZW50U3RhcnR0aW1lICI7CisKKwkJCVR5cGVkUXVlcnk8QXBwb2ludG1lbnQ+IHF1ZXJ5ID0gZW0uY3JlYXRlUXVlcnkoaHFsLCBBcHBvaW50bWVudC5jbGFzcyk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImRlbGV0ZWQiLCB0cnVlKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiYXBwb2ludG1lbnRTdGFydHRpbWUiLCBhcHBvaW50bWVudFN0YXJ0dGltZSk7CisKKwkJCUFwcG9pbnRtZW50IGFwcG9pbnQgPSBudWxsOworCQkJdHJ5IHsKKwkJCQlhcHBvaW50ID0gcXVlcnkuZ2V0U2luZ2xlUmVzdWx0KCk7CisJCQl9IGNhdGNoIChOb1Jlc3VsdEV4Y2VwdGlvbiBleCkgeworCQkJfQorCisJCQlyZXR1cm4gYXBwb2ludDsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZ2V0TmV4dEFwcG9pbnRtZW50QnlJZF06ICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIExpc3Q8QXBwb2ludG1lbnQ+IHNlYXJjaEFwcG9pbnRtZW50c0J5TmFtZShTdHJpbmcgbmFtZSkgeworCQl0cnkgeworCisJCQlTdHJpbmcgaHFsID0gInNlbGVjdCBhIGZyb20gQXBwb2ludG1lbnQgYSAiCisJCQkJCSsgIldIRVJFIGEuZGVsZXRlZCA8PiA6ZGVsZXRlZCAiCisJCQkJCSsgIkFORCBhLmFwcG9pbnRtZW50TmFtZSBMSUtFIDphcHBvaW50bWVudE5hbWUiOworCisJCQlUeXBlZFF1ZXJ5PEFwcG9pbnRtZW50PiBxdWVyeSA9IGVtLmNyZWF0ZVF1ZXJ5KGhxbCwKKwkJCQkJQXBwb2ludG1lbnQuY2xhc3MpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJkZWxldGVkIiwgdHJ1ZSk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImFwcG9pbnRtZW50TmFtZSIsIG5hbWUpOworCisJCQlMaXN0PEFwcG9pbnRtZW50PiBsaXN0QXBwb2ludHMgPSBxdWVyeS5nZXRSZXN1bHRMaXN0KCk7CisKKwkJCXJldHVybiBsaXN0QXBwb2ludHM7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW3NlYXJjaEFwcG9pbnRtZW50c0J5TmFtZV06ICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLyoqCisJICogQGF1dGhvciBiZWNoZXJlcgorCSAqIEBwYXJhbSB1c2VySWQKKwkgKiBAcmV0dXJuCisJICovCisJcHVibGljIExpc3Q8QXBwb2ludG1lbnQ+IGdldFRvZGF5c0FwcG9pbnRtZW50c2J5UmFuZ2VBbmRNZW1iZXIoTG9uZyB1c2VySWQpIHsKKwkJbG9nLmRlYnVnKCJnZXRBcHBvaXRtZW50YnlSYW5nZUFuZE1lbWJlciA6IFVzZXJJRCAtICIgKyB1c2VySWQpOworCisJCS8vdGhpcyBxdWVyeSByZXR1cm5zIGR1cGxpY2F0ZXMgaWYgdGhlIHVzZXIgYm9va3MgYW4gYXBwb2ludG1lbnQgd2l0aAorCQkvL2hpcyBvd24gdXNlciBhcyBzZWNvbmQgbWVldGluZy1tZW1iZXIsIHN3YWduZXIgMTkuMDIuMjAxMgorCQkKKwkJU3RyaW5nIGhxbCA9ICJTRUxFQ1QgYXBwIGZyb20gTWVldGluZ01lbWJlciBtbSAiCisJCQkJKyAiSk9JTiBtbS5hcHBvaW50bWVudCBhcyBhcHAgIgorCQkJCSsgIldIRVJFIG1tLnVzZXJpZC51c2VyX2lkPSA6dXNlcklkICIKKwkJCQkrICJBTkQgbW0uZGVsZXRlZCA8PiA6bW1fZGVsZXRlZCAiCisJCQkJKyAiQU5EIGFwcC5kZWxldGVkIDw+IDphcHBfZGVsZXRlZCAiICsgIkFORCAgIgorCQkJCSsgImFwcC5hcHBvaW50bWVudFN0YXJ0dGltZSBiZXR3ZWVuIDpzdGFydHRpbWUgIiArICJBTkQgIgorCQkJCSsgIiA6ZW5kdGltZSI7CisJCQorCQlUaW1lWm9uZSB0aW1lWm9uZSA9IHRpbWV6b25lVXRpbC5nZXRUaW1lem9uZUJ5VXNlcih1c2Vyc0Rhby5nZXQodXNlcklkKSk7CisKKwkJQ2FsZW5kYXIgc3RhcnRDYWwgPSBDYWxlbmRhci5nZXRJbnN0YW5jZSh0aW1lWm9uZSk7CisJCXN0YXJ0Q2FsLnNldChDYWxlbmRhci5NSU5VVEUsIDApOworCQlzdGFydENhbC5zZXQoQ2FsZW5kYXIuSE9VUiwgMCk7CisJCXN0YXJ0Q2FsLnNldChDYWxlbmRhci5TRUNPTkQsIDEpOworCisJCUNhbGVuZGFyIGVuZENhbCA9IENhbGVuZGFyLmdldEluc3RhbmNlKHRpbWVab25lKTsKKwkJZW5kQ2FsLnNldChDYWxlbmRhci5NSU5VVEUsIDIzKTsKKwkJZW5kQ2FsLnNldChDYWxlbmRhci5IT1VSLCA1OSk7CisJCWVuZENhbC5zZXQoQ2FsZW5kYXIuU0VDT05ELCA1OSk7CisKKwkJdHJ5IHsKKwkJCVR5cGVkUXVlcnk8QXBwb2ludG1lbnQ+IHF1ZXJ5ID0gZW0uY3JlYXRlUXVlcnkoaHFsLAorCQkJCQlBcHBvaW50bWVudC5jbGFzcyk7CisKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigibW1fZGVsZXRlZCIsIHRydWUpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJhcHBfZGVsZXRlZCIsIHRydWUpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJ1c2VySWQiLCB1c2VySWQpOworCisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInN0YXJ0dGltZSIsIHN0YXJ0Q2FsLmdldFRpbWUoKSk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImVuZHRpbWUiLCBlbmRDYWwuZ2V0VGltZSgpKTsKKworCQkJTGlzdDxBcHBvaW50bWVudD4gbGlzdEFwcG9pbnRzID0gcXVlcnkuZ2V0UmVzdWx0TGlzdCgpOworCQkJcmV0dXJuIGxpc3RBcHBvaW50czsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCWxvZy5lcnJvcigiRXJyb3IgaW4gZ2V0VG9kYXlzQXBwb2l0bWVudHNieVJhbmdlQW5kTWVtYmVyIDogIiwgZSk7CisJCQlyZXR1cm4gbnVsbDsKKwkJfQorCX0KKworCS8qKgorCSAqIEdldCB0aGUgbWVldGluZ3MgYWNjb3JkaW5nIHRvIGEgdGltZSByYW5nZS4gSXQgc3RhcnRzIGJ5IG5vdyB0bworCSAqIENhbGVuZGFyLmdldEluc3RhbmNlKCkuZ2V0VGltZSgpLmdldFRpbWUoKSArIG1pbGxpc2Vjb25kcworCSAqIAorCSAqIEBhdXRob3Igby5iZWNoZXJlcixzZWJhLndhZ25lcgorCSAqIEBwYXJhbSBtaWxsaXNlY29uZHMKKwkgKiAgICAgICAgICAgIHRvIGdldCBldmVudHMgaW4gdGhlIHBhc3QgbWFrZSBtaWxsaXNlY29uZHMgPCAwCisJICogQHBhcmFtIGlzUmVtaW5kZXJFbWFpbFNlbmQKKwkgKiAgICAgICAgICAgIGlmIG51bGwgYWxsIGV2ZW50cyBpbiB0aGUgdGltZSByYW5nZSwgaWYgZmFsc2Ugb3IgdHJ1ZSB0aGUKKwkgKiAgICAgICAgICAgIHBhcmFtIGlzIHNldAorCSAqIEByZXR1cm4KKwkgKi8KKwlwdWJsaWMgTGlzdDxBcHBvaW50bWVudD4gZ2V0QXBwb2ludG1lbnRzRm9yQWxsVXNlcnNCeVRpbWVSYW5nZVN0YXJ0aW5nTm93KAorCQkJbG9uZyBtaWxsaXNlY29uZHMsIEJvb2xlYW4gaXNSZW1pbmRlckVtYWlsU2VuZCkgeworCQl0cnkgeworCisJCQlTdHJpbmcgaHFsID0gIlNFTEVDVCBhcHAgZnJvbSBNZWV0aW5nTWVtYmVyIG1tICIKKwkJCQkJKyAiSk9JTiBtbS5hcHBvaW50bWVudCBhcyBhcHAgIgorCQkJCQkrICJXSEVSRSBtbS5kZWxldGVkIDw+IDptbV9kZWxldGVkICIKKwkJCQkJKyAiQU5EIGFwcC5kZWxldGVkIDw+IDphcHBfZGVsZXRlZCAiCisJCQkJCSsgIkFORCBhcHAuYXBwb2ludG1lbnRTdGFydHRpbWUgYmV0d2VlbiA6c3RhcnR0aW1lIEFORCA6ZW5kdGltZSAiOworCisJCQlpZiAoaXNSZW1pbmRlckVtYWlsU2VuZCAhPSBudWxsKSB7CisJCQkJaHFsICs9ICJBTkQgKCBhcHAuaXNSZW1pbmRlckVtYWlsU2VuZCBJUyBOVUxMIE9SIGFwcC5pc1JlbWluZGVyRW1haWxTZW5kID0gOmlzUmVtaW5kZXJFbWFpbFNlbmQgKSAiOworCQkJfQorCisJCQlDYWxlbmRhciBzdGFydENhbCA9IENhbGVuZGFyLmdldEluc3RhbmNlKCk7CisJCQlpZiAobWlsbGlzZWNvbmRzIDwgMCkgeworCQkJCXN0YXJ0Q2FsLnNldFRpbWVJbk1pbGxpcyhzdGFydENhbC5nZXRUaW1lSW5NaWxsaXMoKSttaWxsaXNlY29uZHMpOworCQkJfQorCQkJQ2FsZW5kYXIgZW5kQ2FsID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTsKKwkJCWlmIChtaWxsaXNlY29uZHMgPiAwKSB7CisJCQkJZW5kQ2FsLnNldFRpbWVJbk1pbGxpcyhlbmRDYWwuZ2V0VGltZUluTWlsbGlzKCkrbWlsbGlzZWNvbmRzKTsKKwkJCX0KKworCQkJVHlwZWRRdWVyeTxBcHBvaW50bWVudD4gcXVlcnkgPSBlbS5jcmVhdGVRdWVyeShocWwsCisJCQkJCUFwcG9pbnRtZW50LmNsYXNzKTsKKwkJCQorCQkJVGltZXN0YW1wIHN0YXJ0U3RhbXAgPSBuZXcgVGltZXN0YW1wKHN0YXJ0Q2FsLmdldFRpbWUoKS5nZXRUaW1lKCkpOworICAgICAgICAgICAgVGltZXN0YW1wIHN0b3BTdGFtcCA9IG5ldyBUaW1lc3RhbXAoZW5kQ2FsLmdldFRpbWUoKS5nZXRUaW1lKCkpOworICAgICAgICAgICAgCisgICAgICAgICAgICBsb2cuZGVidWcoInN0YXJ0U3RhbXAgIitzdGFydFN0YW1wKTsKKyAgICAgICAgICAgIGxvZy5kZWJ1Zygic3RvcFN0YW1wICIrc3RvcFN0YW1wKTsKKworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJtbV9kZWxldGVkIiwgdHJ1ZSk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImFwcF9kZWxldGVkIiwgdHJ1ZSk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInN0YXJ0dGltZSIsIHN0YXJ0U3RhbXApOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJlbmR0aW1lIiwgc3RvcFN0YW1wKTsKKwkJCWlmIChpc1JlbWluZGVyRW1haWxTZW5kICE9IG51bGwpIHsKKwkJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImlzUmVtaW5kZXJFbWFpbFNlbmQiLCBpc1JlbWluZGVyRW1haWxTZW5kKTsKKwkJCX0KKworCQkJTGlzdDxBcHBvaW50bWVudD4gbGlzdEFwcG9pbnRzID0gcXVlcnkuZ2V0UmVzdWx0TGlzdCgpOworCisJCQlyZXR1cm4gbGlzdEFwcG9pbnRzOworCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJbG9nLmVycm9yKCJFcnJvciBpbiBnZXRBcHBvaW50bWVudHNGb3JBbGxVc2Vyc0J5VGltZVJhbmdlU3RhcnRpbmdOb3cgOiAiLCBlKTsKKwkJCXJldHVybiBudWxsOworCQl9CisJfQorCisJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwlwdWJsaWMgQXBwb2ludG1lbnQgZ2V0QXBwb2ludG1lbnRCeVJvb21JZChMb25nIHVzZXJfaWQsIExvbmcgcm9vbXNfaWQpIHsKKwkJdHJ5IHsKKworCQkJU3RyaW5nIGhxbCA9ICJzZWxlY3QgYSBmcm9tIEFwcG9pbnRtZW50IGEgIgorCQkJCQkrICJXSEVSRSBhLmRlbGV0ZWQgPD4gOmRlbGV0ZWQgIgorCQkJCQkrICJBTkQgYS51c2VySWQudXNlcl9pZCA9IDp1c2VyX2lkICIKKwkJCQkJKyAiQU5EIGEucm9vbS5yb29tc19pZCA9IDpyb29tc19pZCAiOworCisJCQlUeXBlZFF1ZXJ5PEFwcG9pbnRtZW50PiBxdWVyeSA9IGVtLmNyZWF0ZVF1ZXJ5KGhxbCwKKwkJCQkJQXBwb2ludG1lbnQuY2xhc3MpOworCisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImRlbGV0ZWQiLCB0cnVlKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigidXNlcl9pZCIsIHVzZXJfaWQpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJyb29tc19pZCIsIHJvb21zX2lkKTsKKworCQkJTGlzdDxBcHBvaW50bWVudD4gbGlzdEFwcG9pbnRzID0gcXVlcnkuZ2V0UmVzdWx0TGlzdCgpOworCisJCQlpZiAobGlzdEFwcG9pbnRzLnNpemUoKSA+IDApIHsKKwkJCQlyZXR1cm4gbGlzdEFwcG9pbnRzLmdldCgwKTsKKwkJCX0KKworCQkJcmV0dXJuIG51bGw7CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCWxvZy5lcnJvcigiW2dldEFwcG9pbnRtZW50QnlSb29tSWRdIiwgZSk7CisJCQlyZXR1cm4gbnVsbDsKKwkJfQorCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvY2FsZW5kYXIvZGFvcy9BcHBvaW50bWVudFJlbWluZGVyVHlwRGFvLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9jYWxlbmRhci9kYW9zL0FwcG9pbnRtZW50UmVtaW5kZXJUeXBEYW8uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iY2Y5OWVhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvY2FsZW5kYXIvZGFvcy9BcHBvaW50bWVudFJlbWluZGVyVHlwRGFvLmphdmEKQEAgLTAsMCArMSwxNjggQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jYWxlbmRhci5kYW9zOworCitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHlNYW5hZ2VyOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk5vUmVzdWx0RXhjZXB0aW9uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlBlcnNpc3RlbmNlQ29udGV4dDsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UeXBlZFF1ZXJ5OworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEudXNlci5kYW8uVXNlcnNEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuY2FsZW5kYXIuQXBwb2ludG1lbnRSZW1pbmRlclR5cHM7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLnRyYW5zYWN0aW9uLmFubm90YXRpb24uVHJhbnNhY3Rpb25hbDsKKworQFRyYW5zYWN0aW9uYWwKK3B1YmxpYyBjbGFzcyBBcHBvaW50bWVudFJlbWluZGVyVHlwRGFvIHsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoCisJCQlBcHBvaW50bWVudFJlbWluZGVyVHlwRGFvLmNsYXNzLAorCQkJT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCisJQFBlcnNpc3RlbmNlQ29udGV4dAorCXByaXZhdGUgRW50aXR5TWFuYWdlciBlbTsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBVc2Vyc0RhbyB1c2Vyc0RhbzsKKworCXB1YmxpYyBBcHBvaW50bWVudFJlbWluZGVyVHlwcyBnZXRBcHBvaW50bWVudFJlbWluZGVyVHlwQnlJZChMb25nIHR5cElkKSB7CisJCXRyeSB7CisJCQlsb2cuZGVidWcoIkFwcG9pbnRtZW50UmVtaW5kZXJUeXBCeUlkOiAiICsgdHlwSWQpOworCisJCQlTdHJpbmcgaHFsID0gInNlbGVjdCBhcHAgZnJvbSBBcHBvaW50bWVudFJlbWluZGVyVHlwcyBhcHAgIgorCQkJCQkrICJXSEVSRSBhcHAuZGVsZXRlZCA8PiA6ZGVsZXRlZCAiCisJCQkJCSsgIkFORCBhcHAudHlwSWQgPSA6dHlwSWQiOworCisJCQlUeXBlZFF1ZXJ5PEFwcG9pbnRtZW50UmVtaW5kZXJUeXBzPiBxdWVyeSA9IGVtLmNyZWF0ZVF1ZXJ5KGhxbCwgQXBwb2ludG1lbnRSZW1pbmRlclR5cHMuY2xhc3MpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJkZWxldGVkIiwgdHJ1ZSk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInR5cElkIiwgdHlwSWQpOworCisJCQlBcHBvaW50bWVudFJlbWluZGVyVHlwcyBhcHBvaW50bWVudFJlbWluZGVyVHlwcyA9IG51bGw7CisJCQl0cnkgeworCQkJCWFwcG9pbnRtZW50UmVtaW5kZXJUeXBzID0gcXVlcnkuZ2V0U2luZ2xlUmVzdWx0KCk7CisJCQl9IGNhdGNoIChOb1Jlc3VsdEV4Y2VwdGlvbiBleCkgeworCQkJfQorCisJCQlyZXR1cm4gYXBwb2ludG1lbnRSZW1pbmRlclR5cHM7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldEFwcG9pbnRtZW50UmVtaW5kZXJUeXBzQnlJZF06ICIgKyBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMb25nIHVwZGF0ZUFwcG9pbnRtZW50UmVtaW5kZXJUeXBzKExvbmcgdHlwSWQsIFN0cmluZyBuYW1lKSB7CisJCXRyeSB7CisKKwkJCUFwcG9pbnRtZW50UmVtaW5kZXJUeXBzIGFjID0gdGhpcworCQkJCQkuZ2V0QXBwb2ludG1lbnRSZW1pbmRlclR5cEJ5SWQodHlwSWQpOworCisJCQlhYy5zZXROYW1lKG5hbWUpOworCQkJYWMuc2V0VXBkYXRldGltZShuZXcgRGF0ZSgpKTsKKworCQkJaWYgKGFjLmdldFR5cElkKCkgPT0gbnVsbCkgeworCQkJCWVtLnBlcnNpc3QoYWMpOworCQkJfSBlbHNlIHsKKwkJCQlpZiAoIWVtLmNvbnRhaW5zKGFjKSkgeworCQkJCQllbS5tZXJnZShhYyk7CisJCQkJfQorCQkJfQorCisJCQlyZXR1cm4gdHlwSWQ7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW3VwZGF0ZUFwcG9pbnRtZW50UmVtaW5kZXJUeXBzXTogIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgTG9uZyBhZGRBcHBvaW50bWVudFJlbWluZGVyVHlwcyhMb25nIHVzZXJfaWQsIFN0cmluZyBuYW1lKSB7CisJCXRyeSB7CisKKwkJCUFwcG9pbnRtZW50UmVtaW5kZXJUeXBzIGFjID0gbmV3IEFwcG9pbnRtZW50UmVtaW5kZXJUeXBzKCk7CisKKwkJCWFjLnNldE5hbWUobmFtZSk7CisJCQlhYy5zZXRTdGFydHRpbWUobmV3IERhdGUoKSk7CisJCQlhYy5zZXREZWxldGVkKGZhbHNlKTsKKwkJCWFjLnNldFVzZXIodXNlcnNEYW8uZ2V0KHVzZXJfaWQpKTsKKworCQkJYWMgPSBlbS5tZXJnZShhYyk7CisJCQlMb25nIGNhdGVnb3J5X2lkID0gYWMuZ2V0VHlwSWQoKTsKKworCQkJcmV0dXJuIGNhdGVnb3J5X2lkOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIlthZGRBcHBvaW50bWVudFJlbWluZGVyVHlwc106ICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIExvbmcgZGVsZXRlQXBwb2ludG1lbnRSZW1pbmRlclR5cChMb25nIHR5cElkKSB7CisJCXRyeSB7CisKKwkJCUFwcG9pbnRtZW50UmVtaW5kZXJUeXBzIGFjID0gdGhpcworCQkJCQkuZ2V0QXBwb2ludG1lbnRSZW1pbmRlclR5cEJ5SWQodHlwSWQpOworCisJCQlsb2cuZGVidWcoImFjOiAiICsgYWMpOworCisJCQlpZiAoYWMgPT0gbnVsbCkgeworCQkJCWxvZy5kZWJ1ZygiQWxyZWFkeSBkZWxldGVkIC8gQ291bGQgbm90IGZpbmQ6ICIgKyB0eXBJZCk7CisJCQkJcmV0dXJuIHR5cElkOworCQkJfQorCQkJYWMuc2V0VXBkYXRldGltZShuZXcgRGF0ZSgpKTsKKwkJCWFjLnNldERlbGV0ZWQodHJ1ZSk7CisKKwkJCWlmIChhYy5nZXRUeXBJZCgpID09IG51bGwpIHsKKwkJCQllbS5wZXJzaXN0KGFjKTsKKwkJCX0gZWxzZSB7CisJCQkJaWYgKCFlbS5jb250YWlucyhhYykpIHsKKwkJCQkJZW0ubWVyZ2UoYWMpOworCQkJCX0KKwkJCX0KKworCQkJcmV0dXJuIHR5cElkOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIltkZWxldGVBcHBvaW50bWVudFJlbWluZGVyVHlwXTogIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgTGlzdDxBcHBvaW50bWVudFJlbWluZGVyVHlwcz4gZ2V0QXBwb2ludG1lbnRSZW1pbmRlclR5cExpc3QoKSB7CisJCWxvZy5kZWJ1ZygiZ2V0QXBwb2ludG1lbmV0UmVtaW5kZXJUeXBMaXN0Iik7CisKKwkJdHJ5IHsKKworCQkJU3RyaW5nIGhxbCA9ICJzZWxlY3QgYSBmcm9tIEFwcG9pbnRtZW50UmVtaW5kZXJUeXBzIGEgIgorCQkJCQkrICJXSEVSRSBhLmRlbGV0ZWQgPD4gOmRlbGV0ZWQgIjsKKworCQkJVHlwZWRRdWVyeTxBcHBvaW50bWVudFJlbWluZGVyVHlwcz4gcXVlcnkgPSBlbS5jcmVhdGVRdWVyeShocWwsIEFwcG9pbnRtZW50UmVtaW5kZXJUeXBzLmNsYXNzKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiZGVsZXRlZCIsIHRydWUpOworCisJCQlMaXN0PEFwcG9pbnRtZW50UmVtaW5kZXJUeXBzPiBsaXN0QXBwb2ludG1lbnRSZW1pbmRlclR5cCA9IHF1ZXJ5CisJCQkJCS5nZXRSZXN1bHRMaXN0KCk7CisKKwkJCXJldHVybiBsaXN0QXBwb2ludG1lbnRSZW1pbmRlclR5cDsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZ2V0QXBwb2ludG1lbnRSZW1pbmRlclR5cExpc3RdOiAiICsgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9jYWxlbmRhci9kYW9zL01lZXRpbmdNZW1iZXJEYW8uamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2NhbGVuZGFyL2Rhb3MvTWVldGluZ01lbWJlckRhby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyZTVkNTQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9jYWxlbmRhci9kYW9zL01lZXRpbmdNZW1iZXJEYW8uamF2YQpAQCAtMCwwICsxLDI1NiBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNhbGVuZGFyLmRhb3M7CisKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eU1hbmFnZXI7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTm9SZXN1bHRFeGNlcHRpb247CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuUGVyc2lzdGVuY2VDb250ZXh0OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlR5cGVkUXVlcnk7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLmRhby5Vc2Vyc0RhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5PbVRpbWVab25lOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmNhbGVuZGFyLk1lZXRpbmdNZW1iZXI7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLnRyYW5zYWN0aW9uLmFubm90YXRpb24uVHJhbnNhY3Rpb25hbDsKKworQFRyYW5zYWN0aW9uYWwKK3B1YmxpYyBjbGFzcyBNZWV0aW5nTWVtYmVyRGFvIHsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoCisJCQlNZWV0aW5nTWVtYmVyRGFvLmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisJQFBlcnNpc3RlbmNlQ29udGV4dAorCXByaXZhdGUgRW50aXR5TWFuYWdlciBlbTsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBBcHBvaW50bWVudERhbyBhcHBvaW50bWVudERhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBVc2Vyc0RhbyB1c2Vyc0RhbzsKKworCXB1YmxpYyBNZWV0aW5nTWVtYmVyIGdldE1lZXRpbmdNZW1iZXJCeUlkKExvbmcgbWVldGluZ01lbWJlcklkKSB7CisJCXRyeSB7CisJCQlsb2cuZGVidWcoImdldE1lZXRpbmdNZW1iZXJCeUlkOiAiICsgbWVldGluZ01lbWJlcklkKTsKKworCQkJU3RyaW5nIGhxbCA9ICJzZWxlY3QgYXBwIGZyb20gTWVldGluZ01lbWJlciBhcHAgIgorCQkJCQkrICJXSEVSRSBhcHAuZGVsZXRlZCA8PiA6ZGVsZXRlZCAiCisJCQkJCSsgIkFORCBhcHAubWVldGluZ01lbWJlcklkID0gOm1lZXRpbmdNZW1iZXJJZCI7CisKKwkJCVR5cGVkUXVlcnk8TWVldGluZ01lbWJlcj4gcXVlcnkgPSBlbS5jcmVhdGVRdWVyeShocWwsIE1lZXRpbmdNZW1iZXIuY2xhc3MpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJkZWxldGVkIiwgdHJ1ZSk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoIm1lZXRpbmdNZW1iZXJJZCIsIG1lZXRpbmdNZW1iZXJJZCk7CisKKwkJCU1lZXRpbmdNZW1iZXIgbWVldGluZ01lbWJlciA9IG51bGw7CisJCQl0cnkgeworCQkJCW1lZXRpbmdNZW1iZXIgPSBxdWVyeS5nZXRTaW5nbGVSZXN1bHQoKTsKKwkJCX0gY2F0Y2ggKE5vUmVzdWx0RXhjZXB0aW9uIGV4KSB7CisJCQl9CisKKwkJCXJldHVybiBtZWV0aW5nTWVtYmVyOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRNZWV0aW5nTWVtYmVyQnlJZF06ICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIExpc3Q8TWVldGluZ01lbWJlcj4gZ2V0TWVldGluZ01lbWJlcnMoKSB7CisJCXRyeSB7CisJCQlTdHJpbmcgaHFsID0gInNlbGVjdCBhcHAgZnJvbSBNZWV0aW5nTWVtYmVyIGFwcCI7CisJCQkKKwkJCVR5cGVkUXVlcnk8TWVldGluZ01lbWJlcj4gcXVlcnkgPSBlbS5jcmVhdGVRdWVyeShocWwsIE1lZXRpbmdNZW1iZXIuY2xhc3MpOworCisJCQlMaXN0PE1lZXRpbmdNZW1iZXI+IG1lZXRpbmdNZW1iZXJzID0gcXVlcnkuZ2V0UmVzdWx0TGlzdCgpOworCisJCQlyZXR1cm4gbWVldGluZ01lbWJlcnM7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldE1lZXRpbmdNZW1iZXJzXTogIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgTGlzdDxNZWV0aW5nTWVtYmVyPiBnZXRNZWV0aW5nTWVtYmVyQnlBcHBvaW50bWVudElkKAorCQkJTG9uZyBhcHBvaW50bWVudElkKSB7CisJCXRyeSB7CisJCQlsb2cuZGVidWcoImdldE1lZXRpbmdNZW1iZXJCeUFwcG9pbnRtZW50SWQ6ICIgKyBhcHBvaW50bWVudElkKTsKKworCQkJU3RyaW5nIGhxbCA9ICJzZWxlY3QgYXBwIGZyb20gTWVldGluZ01lbWJlciBhcHAgIgorCQkJCQkrICJXSEVSRSBhcHAuZGVsZXRlZCA8PiA6ZGVsZXRlZCAiCisJCQkJCSsgIkFORCBhcHAuYXBwb2ludG1lbnQuYXBwb2ludG1lbnRJZCA9IDphcHBvaW50bWVudElkIjsKKworCQkJVHlwZWRRdWVyeTxNZWV0aW5nTWVtYmVyPiBxdWVyeSA9IGVtLmNyZWF0ZVF1ZXJ5KGhxbCwgTWVldGluZ01lbWJlci5jbGFzcyk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImRlbGV0ZWQiLCB0cnVlKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiYXBwb2ludG1lbnRJZCIsIGFwcG9pbnRtZW50SWQpOworCisJCQlMaXN0PE1lZXRpbmdNZW1iZXI+IGxpc3RtZWV0aW5nTWVtYmVyID0gcXVlcnkuZ2V0UmVzdWx0TGlzdCgpOworCisJCQlyZXR1cm4gbGlzdG1lZXRpbmdNZW1iZXI7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldE1lZXRpbmdNZW1iZXJCeUFwcG9pbnRtZW50SWRdOiAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCS8qKgorCSAqIFVwZGF0aW5nIE1lZXRpbmdNZW1iZXIKKwkgKi8KKwkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJcHVibGljIE1lZXRpbmdNZW1iZXIgdXBkYXRlTWVldGluZ01lbWJlcihNZWV0aW5nTWVtYmVyIG1lZXRpbmdNZW1iZXIpIHsKKwkJbG9nLmRlYnVnKCIiKTsKKwkJaWYgKG1lZXRpbmdNZW1iZXIuZ2V0TWVldGluZ01lbWJlcklkKCkgPiAwKSB7CisJCQl0cnkgeworCQkJCWlmIChtZWV0aW5nTWVtYmVyLmdldE1lZXRpbmdNZW1iZXJJZCgpID09IG51bGwpIHsKKwkJCQkJZW0ucGVyc2lzdChtZWV0aW5nTWVtYmVyKTsKKwkJCQl9IGVsc2UgeworCQkJCQlpZiAoIWVtLmNvbnRhaW5zKG1lZXRpbmdNZW1iZXIpKSB7CisJCQkJCQltZWV0aW5nTWVtYmVyID0gZW0ubWVyZ2UobWVldGluZ01lbWJlcik7CisJCQkJCX0KKwkJCQl9CisJCQkJcmV0dXJuIG1lZXRpbmdNZW1iZXI7CisJCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQkJbG9nLmVycm9yKCJbdXBkYXRlTWVldGluZ01lbWJlcl0gIiwgZXgyKTsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCWxvZy5lcnJvcigiW3VwZGF0ZVVzZXJdICIgKyAiRXJyb3I6IE5vIE1lZXRpbmdNZW1iZXJJZCBnaXZlbiIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCXB1YmxpYyBMb25nIHVwZGF0ZU1lZXRpbmdNZW1iZXIoTG9uZyBtZWV0aW5nTWVtYmVySWQsIFN0cmluZyBmaXJzdG5hbWUsCisJCQlTdHJpbmcgbGFzdG5hbWUsIFN0cmluZyBtZW1iZXJTdGF0dXMsIFN0cmluZyBhcHBvaW50bWVudFN0YXR1cywKKwkJCUxvbmcgYXBwb2ludG1lbnRJZCwgTG9uZyB1c2VyaWQsIFN0cmluZyBlbWFpbCwgU3RyaW5nIHBob25lKSB7CisJCXRyeSB7CisKKwkJCU1lZXRpbmdNZW1iZXIgZ20gPSB0aGlzLmdldE1lZXRpbmdNZW1iZXJCeUlkKG1lZXRpbmdNZW1iZXJJZCk7CisJCQkvKgorCQkJICogaWYgKGdtID09IG51bGwpIHsgbG9nLmRlYnVnKCJBTEVSVCBPYmplY3Qgd2l0aCBJRDogIisKKwkJCSAqIE1lZXRpbmdNZW1iZXJJZCArIiBkb2VzIG5vdCBleGlzdCB5ZXQiKTsgcmV0dXJuIG51bGw7IH0KKwkJCSAqLworCisJCQlnbS5zZXRGaXJzdG5hbWUoZmlyc3RuYW1lKTsKKwkJCWdtLnNldExhc3RuYW1lKGxhc3RuYW1lKTsKKworCQkJLy8gZ20uc2V0TGFuZ3VhZ2VJZChMYW5ndWFnZW1hbmFnZW1lbnQuZ2V0SW5zdGFuY2UoKS5nZXRGaWVsZExhbmd1YWdlQnlJZChsYW5ndWFnZUlkKSk7CisJCQlnbS5zZXRNZW1iZXJTdGF0dXMobWVtYmVyU3RhdHVzKTsKKwkJCWdtLnNldEFwcG9pbnRtZW50U3RhdHVzKGFwcG9pbnRtZW50U3RhdHVzKTsKKwkJCWdtLnNldEFwcG9pbnRtZW50KGFwcG9pbnRtZW50RGFvLmdldEFwcG9pbnRtZW50QnlJZChhcHBvaW50bWVudElkKSk7CisJCQlnbS5zZXREZWxldGVkKGZhbHNlKTsKKwkJCWdtLnNldFVwZGF0ZXRpbWUobmV3IERhdGUoKSk7CisJCQlnbS5zZXRVc2VyaWQodXNlcnNEYW8uZ2V0KHVzZXJpZCkpOworCQkJZ20uc2V0RW1haWwoZW1haWwpOworCQkJZ20uc2V0UGhvbmUocGhvbmUpOworCisJCQlpZiAoZ20uZ2V0TWVldGluZ01lbWJlcklkKCkgPT0gbnVsbCkgeworCQkJCWVtLnBlcnNpc3QoZ20pOworCQkJfSBlbHNlIHsKKwkJCQlpZiAoIWVtLmNvbnRhaW5zKGdtKSkgeworCQkJCQlnbSA9IGVtLm1lcmdlKGdtKTsKKwkJCQl9CisJCQl9CisJCQltZWV0aW5nTWVtYmVySWQgPSBnbS5nZXRNZWV0aW5nTWVtYmVySWQoKTsKKwkJCXJldHVybiBtZWV0aW5nTWVtYmVySWQ7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW3VwZGF0ZU1lZXRpbmdNZW1iZXJdOiAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMb25nIGFkZE1lZXRpbmdNZW1iZXIoU3RyaW5nIGZpcnN0bmFtZSwgU3RyaW5nIGxhc3RuYW1lLAorCQkJU3RyaW5nIG1lbWJlclN0YXR1cywgU3RyaW5nIGFwcG9pbnRtZW50U3RhdHVzLCBMb25nIGFwcG9pbnRtZW50SWQsCisJCQlMb25nIHVzZXJpZCwgU3RyaW5nIGVtYWlsLCBTdHJpbmcgcGhvbmUsIEJvb2xlYW4gbW9kZXJhdG9yLCBPbVRpbWVab25lIG9tVGltZVpvbmUsCisJCQlCb29sZWFuIGlzQ29ubmVjdGVkRXZlbnQpIHsKKwkJdHJ5IHsKKworCQkJTWVldGluZ01lbWJlciBnbSA9IG5ldyBNZWV0aW5nTWVtYmVyKCk7CisKKwkJCWdtLnNldEZpcnN0bmFtZShmaXJzdG5hbWUpOworCQkJZ20uc2V0TGFzdG5hbWUobGFzdG5hbWUpOworCQkJZ20uc2V0TWVtYmVyU3RhdHVzKG1lbWJlclN0YXR1cyk7CisJCQlnbS5zZXRBcHBvaW50bWVudFN0YXR1cyhhcHBvaW50bWVudFN0YXR1cyk7CisJCQlnbS5zZXRBcHBvaW50bWVudChhcHBvaW50bWVudERhby5nZXRBcHBvaW50bWVudEJ5SWQoYXBwb2ludG1lbnRJZCkpOworCQkJZ20uc2V0VXNlcmlkKHVzZXJpZCA9PSBudWxsID8gbnVsbCA6IHVzZXJzRGFvLmdldCh1c2VyaWQpKTsKKwkJCWdtLnNldEVtYWlsKGVtYWlsKTsKKwkJCWdtLnNldFBob25lKHBob25lKTsKKworCQkJZ20uc2V0U3RhcnR0aW1lKG5ldyBEYXRlKCkpOworCQkJZ20uc2V0RGVsZXRlZChmYWxzZSk7CisJCQlnbS5zZXRJbnZpdG9yKG1vZGVyYXRvcik7CisJCQlnbS5zZXRJc0Nvbm5lY3RlZEV2ZW50KGlzQ29ubmVjdGVkRXZlbnQpOworCQkJCisJCQlnbS5zZXRPbVRpbWVab25lKG9tVGltZVpvbmUpOworCisJCQlnbSA9IGVtLm1lcmdlKGdtKTsKKwkJCUxvbmcgZ3JvdXBfbWVtYmVyX2lkID0gZ20uZ2V0TWVldGluZ01lbWJlcklkKCk7CisKKwkJCXJldHVybiBncm91cF9tZW1iZXJfaWQ7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2FkZE1lZXRpbmdNZW1iZXJdOiAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMb25nIGFkZE1lZXRpbmdNZW1iZXJCeU9iamVjdChNZWV0aW5nTWVtYmVyIGdtKSB7CisJCXRyeSB7CisJCQlnbSA9IGVtLm1lcmdlKGdtKTsKKwkJCUxvbmcgZ3JvdXBfbWVtYmVyX2lkID0gZ20uZ2V0TWVldGluZ01lbWJlcklkKCk7CisKKwkJCXJldHVybiBncm91cF9tZW1iZXJfaWQ7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2FkZE1lZXRpbmdNZW1iZXJdOiAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMb25nIGRlbGV0ZU1lZXRpbmdNZW1iZXIoTG9uZyBtZWV0aW5nTWVtYmVySWQpIHsKKwkJbG9nLmRlYnVnKCJNZWV0aW5nTWVtbmVyREFvSW1wbC5kZWxldGVNZWV0aW5nTWVtYmVyIDogIgorCQkJCSsgbWVldGluZ01lbWJlcklkKTsKKworCQl0cnkgeworCisJCQlNZWV0aW5nTWVtYmVyIGdtID0gdGhpcy5nZXRNZWV0aW5nTWVtYmVyQnlJZChtZWV0aW5nTWVtYmVySWQpOworCisJCQlsb2cuZGVidWcoImFjOiAiICsgZ20pOworCisJCQlpZiAoZ20gPT0gbnVsbCkgeworCQkJCWxvZy5kZWJ1ZygiQWxyZWFkeSBkZWxldGVkIC8gQ291bGQgbm90IGZpbmQ6ICIKKwkJCQkJCSsgbWVldGluZ01lbWJlcklkKTsKKwkJCQlyZXR1cm4gbnVsbDsKKwkJCX0KKwkJCWdtLnNldFVwZGF0ZXRpbWUobmV3IERhdGUoKSk7CisJCQlnbS5zZXREZWxldGVkKHRydWUpOworCisJCQlpZiAoZ20uZ2V0TWVldGluZ01lbWJlcklkKCkgPT0gbnVsbCkgeworCQkJCWVtLnBlcnNpc3QoZ20pOworCQkJfSBlbHNlIHsKKwkJCQlpZiAoIWVtLmNvbnRhaW5zKGdtKSkgeworCQkJCQllbS5tZXJnZShnbSk7CisJCQkJfQorCQkJfQorCQkJcmV0dXJuIG1lZXRpbmdNZW1iZXJJZDsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZGVsZXRlTWVldGluZ01lbWJlcl06ICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9jYWxlbmRhci9tYW5hZ2VtZW50L0FwcG9pbnRtZW50TG9naWMuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2NhbGVuZGFyL21hbmFnZW1lbnQvQXBwb2ludG1lbnRMb2dpYy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4YjhjZDgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9jYWxlbmRhci9tYW5hZ2VtZW50L0FwcG9pbnRtZW50TG9naWMuamF2YQpAQCAtMCwwICsxLDU4MSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNhbGVuZGFyLm1hbmFnZW1lbnQ7CisKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworaW1wb3J0IGphdmEudXRpbC5UaW1lWm9uZTsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuRmllbGRNYW5hZ2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuZGFvLkNvbmZpZ3VyYXRpb25EYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5kYW8uT21UaW1lWm9uZURhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNhbGVuZGFyLmRhb3MuQXBwb2ludG1lbnREYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jYWxlbmRhci5kYW9zLk1lZXRpbmdNZW1iZXJEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jb25mZXJlbmNlLkludml0YXRpb25NYW5hZ2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY29uZmVyZW5jZS5Sb29tTWFuYWdlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNvbmZlcmVuY2UuZGFvLlJvb21EYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLlVzZXJNYW5hZ2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLk9tVGltZVpvbmU7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuY2FsZW5kYXIuQXBwb2ludG1lbnQ7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuY2FsZW5kYXIuTWVldGluZ01lbWJlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5pbnZpdGF0aW9uLkludml0YXRpb25zOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmxhbmcuRmllbGRsYW5ndWFnZXN2YWx1ZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbS5Sb29tOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuVXNlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5tYXRoLkNhbGVuZGFyUGF0dGVybnM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMubWF0aC5UaW1lem9uZVV0aWw7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKKworcHVibGljIGNsYXNzIEFwcG9pbnRtZW50TG9naWMgeworCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcigKKwkJCUFwcG9pbnRtZW50TG9naWMuY2xhc3MsICJvcGVubWVldGluZ3MiKTsKKworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEFwcG9pbnRtZW50RGFvIGFwcG9pbnRtZW50RGFvOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIENvbmZpZ3VyYXRpb25EYW8gY29uZmlndXJhdGlvbkRhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBVc2VyTWFuYWdlciB1c2VyTWFuYWdlcjsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBGaWVsZE1hbmFnZXIgZmllbGRNYW5hZ2VyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIE9tVGltZVpvbmVEYW8gb21UaW1lWm9uZURhb0ltcGw7CisJQEF1dG93aXJlZAorCXByaXZhdGUgUm9vbU1hbmFnZXIgcm9vbU1hbmFnZXI7CisJQEF1dG93aXJlZAorCXByaXZhdGUgUm9vbURhbyByb29tRGFvOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEludml0YXRpb25NYW5hZ2VyIGludml0YXRpb25NYW5hZ2VyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIE1lZXRpbmdNZW1iZXJEYW8gbWVldGluZ01lbWJlckRhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBNZWV0aW5nTWVtYmVyTG9naWMgbWVldGluZ01lbWJlckxvZ2ljOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFRpbWV6b25lVXRpbCB0aW1lem9uZVV0aWw7CisKKwlwcml2YXRlIHN0YXRpYyBpbnQgREVGQVVMVF9NSU5VVEVTX1JFTUlOREVSX1NFTkQgPSAxNTsKKworCXB1YmxpYyBMaXN0PEFwcG9pbnRtZW50PiBnZXRBcHBvaW50bWVudEJ5UmFuZ2UoTG9uZyB1c2VySWQsIERhdGUgc3RhcnR0aW1lLAorCQkJRGF0ZSBlbmR0aW1lKSB7CisJCXRyeSB7CisJCQlyZXR1cm4gYXBwb2ludG1lbnREYW8uZ2V0QXBwb2ludG1lbnRzQnlSYW5nZSh1c2VySWQsIHN0YXJ0dGltZSwKKwkJCQkJZW5kdGltZSk7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2dldEFwcG9pbnRtZW50QnlSYW5nZV0iLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMaXN0PEFwcG9pbnRtZW50PiBnZXRUb2RheXNBcHBvaW50bWVudHNGb3JVc2VyKExvbmcgdXNlcklkKSB7CisJCWxvZy5kZWJ1ZygiZ2V0VG9kYXlzQXBwb2ludG1lbnRzRm9yVXNlciIpOworCisJCUxpc3Q8QXBwb2ludG1lbnQ+IHBvaW50cyA9IGFwcG9pbnRtZW50RGFvCisJCQkJLmdldFRvZGF5c0FwcG9pbnRtZW50c2J5UmFuZ2VBbmRNZW1iZXIodXNlcklkKTsKKworCQlsb2cuZGVidWcoIkNvdW50IEFwcG9pbnRtZW50cyBmb3IgVG9kYXkgOiAiICsgcG9pbnRzLnNpemUoKSk7CisKKwkJcmV0dXJuIHBvaW50czsKKworCX0KKworCS8qKgorCSAqIEBhdXRob3Igby5iZWNoZXJlcgorCSAqIEBwYXJhbSByb29tX2lkCisJICogQHJldHVybgorCSAqLworCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJcHVibGljIEFwcG9pbnRtZW50IGdldEFwcG9pbnRtZW50QnlSb29tKExvbmcgcm9vbV9pZCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCWxvZy5kZWJ1ZygiZ2V0QXBwb2ludG1lbnRCeVJvb20iKTsKKworCQlSb29tIHJvb20gPSByb29tRGFvLmdldChyb29tX2lkKTsKKworCQlpZiAocm9vbSA9PSBudWxsKQorCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbigiUm9vbSBkb2VzIG5vdCBleGlzdCBpbiBkYXRhYmFzZSEiKTsKKworCQlpZiAoIXJvb20uZ2V0QXBwb2ludG1lbnQoKSkKKwkJCXRocm93IG5ldyBFeGNlcHRpb24oIlJvb20gIiArIHJvb20uZ2V0TmFtZSgpCisJCQkJCSsgIiBpc250IHBhcnQgb2YgYW4gYXBwb2ludGVkIG1lZXRpbmciKTsKKworCQlyZXR1cm4gYXBwb2ludG1lbnREYW8uZ2V0QXBwb2ludG1lbnRCeVJvb20ocm9vbV9pZCk7CisJfQorCisJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCS8vIG5leHQgYXBwb2ludG1lbnQgdG8gY3VycmVudCBkYXRlCisJcHVibGljIEFwcG9pbnRtZW50IGdldE5leHRBcHBvaW50bWVudCgpIHsKKwkJdHJ5IHsKKwkJCXJldHVybiBhcHBvaW50bWVudERhby5nZXROZXh0QXBwb2ludG1lbnQobmV3IERhdGUoKSk7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2dldE5leHRBcHBvaW50bWVudEJ5SWRdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgTGlzdDxBcHBvaW50bWVudD4gc2VhcmNoQXBwb2ludG1lbnRCeU5hbWUoU3RyaW5nIGFwcG9pbnRtZW50TmFtZSkgeworCQl0cnkgeworCQkJcmV0dXJuIGFwcG9pbnRtZW50RGFvLnNlYXJjaEFwcG9pbnRtZW50c0J5TmFtZShhcHBvaW50bWVudE5hbWUpOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltzZWFyY2hBcHBvaW50bWVudEJ5TmFtZV0iLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMb25nIHNhdmVBcHBvaW50bWVudChTdHJpbmcgYXBwb2ludG1lbnROYW1lLCBMb25nIHVzZXJJZCwKKwkJCVN0cmluZyBhcHBvaW50bWVudExvY2F0aW9uLCBTdHJpbmcgYXBwb2ludG1lbnREZXNjcmlwdGlvbiwKKwkJCURhdGUgYXBwb2ludG1lbnRzdGFydCwgRGF0ZSBhcHBvaW50bWVudGVuZCwKKwkJCUJvb2xlYW4gaXNEYWlseSwgQm9vbGVhbiBpc1dlZWtseSwgQm9vbGVhbiBpc01vbnRobHksCisJCQlCb29sZWFuIGlzWWVhcmx5LCBMb25nIGNhdGVnb3J5SWQsIExvbmcgcmVtaW5kLAorCQkJQFN1cHByZXNzV2FybmluZ3MoInJhd3R5cGVzIikgTGlzdCBtbUNsaWVudCwgTG9uZyByb29tVHlwZSwKKwkJCVN0cmluZyBiYXNlVXJsLCBMb25nIGxhbmd1YWdlX2lkLCBCb29sZWFuIGlzUGFzc3dvcmRQcm90ZWN0ZWQsCisJCQlTdHJpbmcgcGFzc3dvcmQsIGxvbmcgcm9vbUlkKSB7CisKKwkJbG9nLmRlYnVnKCJBcHBvaW50bWVudGxvZ2ljLnNhdmVBcHBvaW50bWVudCIpOworCQkKKwkJLy8gVE9ETzpBZGQgdGhpcyB1c2VyIGFzIHRoZSBkZWZhdWx0IE1vZGVyYXRvciBvZiB0aGUgUm9vbQorCisJCUxvbmcgbnVtYmVyT2ZQYXJ0aWNpcGFudHMgPSBjb25maWd1cmF0aW9uRGFvLmdldENvbmZWYWx1ZSgKKwkJCQkiY2FsZW5kYXIuY29uZmVyZW5jZS5yb29tcy5kZWZhdWx0LnNpemUiLCBMb25nLmNsYXNzLCAiNTAiKTsKKworCQl0cnkgeworCisJCQkvLyBBZGRpbmcgY3JlYXRvciBhcyBNZWV0aW5nTWVtYmVyCisJCQlVc2VyIHVzZXIgPSB1c2VyTWFuYWdlci5nZXRVc2VyQnlJZCh1c2VySWQpOworCQkJCisJCQlMb25nIHJvb21faWQgPSByb29tSWQgPiAwID8gcm9vbUlkIDogcm9vbU1hbmFnZXIuYWRkUm9vbSgzLCAvLyB1c2VyIGxldmVsCisJCQkJCWFwcG9pbnRtZW50TmFtZSwgLy8gbmFtZQorCQkJCQlyb29tVHlwZSwgLy8gUm9vbVR5cGUKKwkJCQkJIiIsIC8vIENvbW1lbnQKKwkJCQkJbnVtYmVyT2ZQYXJ0aWNpcGFudHMsIC8vIE51bWJlciBvZiBwYXJ0aWNpcGFudHMKKwkJCQkJdHJ1ZSwgLy8gcHVibGljCisJCQkJCW51bGwsIC8vIG9yZ2FuaXphdGlvbnMKKwkJCQkJdHJ1ZSwgLy8gQXBwb2ludG1lbnQKKwkJCQkJZmFsc2UsIC8vIERlbW8gUm9vbSA9PiBNZWV0aW5nIFRpbWVyCisJCQkJCW51bGwsIC8vIE1lZXRpbmcgVGltZXIgdGltZSBpbiBzZWNvbmRzCisJCQkJCWZhbHNlLCAvLyBJcyBNb2RlcmF0ZWQgUm9vbQorCQkJCQludWxsLCAvLyBNb2RlcmF0aW9uIExpc3QgUm9vbQorCQkJCQl0cnVlLCAvLyBBbGxvdyBVc2VyIFF1ZXN0aW9ucworCQkJCQlmYWxzZSwgLy8gaXNBdWRpb09ubHkKKwkJCQkJdHJ1ZSwgLy8gYWxsb3dGb250U3R5bGVzCisJCQkJCWZhbHNlLCAvLyBpc0Nsb3NlZAorCQkJCQkiIiwgLy8gcmVkaXJlY3RVUkwKKwkJCQkJIiIsIC8vIGNvbmZlcmVuY2VQSU4KKwkJCQkJbnVsbCwgLy8gb3duZXJJRAorCQkJCQludWxsLCBudWxsLCAKKwkJCQkJZmFsc2UsIC8vIGhpZGVUb3BCYXIKKwkJCQkJZmFsc2UsIC8vIGhpZGVDaGF0CisJCQkJCWZhbHNlLCAvLyBoaWRlQWN0aXZpdGllc0FuZEFjdGlvbnMKKwkJCQkJZmFsc2UsIC8vIGhpZGVGaWxlc0V4cGxvcmVyCisJCQkJCWZhbHNlLCAvLyBoaWRlQWN0aW9uc01lbnUKKwkJCQkJZmFsc2UsIC8vIGhpZGVTY3JlZW5TaGFyaW5nIAorCQkJCQlmYWxzZSwgLy8gaGlkZVdoaXRlYm9hcmQKKwkJCQkJZmFsc2UsIC8vc2hvd01pY3JvcGhvbmVTdGF0dXMKKwkJCQkJZmFsc2UsIC8vIGNoYXRNb2RlcmF0ZWQKKwkJCQkJZmFsc2UsIC8vIGNoYXRPcGVuZWQKKwkJCQkJZmFsc2UsIC8vIGZpbGVzT3BlbmVkCisJCQkJCWZhbHNlLCAvLyBhdXRvVmlkZW9TZWxlY3QKKwkJCQkJZmFsc2UgLy9zaXBFbmFibGVkCisJCQkJKTsKKworCQkJbG9nLmRlYnVnKCJBcHBvaW50bWVudGxvZ2ljLnNhdmVBcHBvaW50bWVudCA6IFJvb20gLSAiICsgcm9vbV9pZCk7CisJCQlsb2cuZGVidWcoIkFwcG9pbnRtZW50bG9naWMuc2F2ZUFwcG9pbnRtZW50IDogUmVtaW5kZXIgLSAiICsgcmVtaW5kKTsKKwkKKwkJCVJvb20gcm9vbSA9IHJvb21EYW8uZ2V0KHJvb21faWQpOworCisJCQkvLyBSZS1mYWN0b3IgdGhlIGdpdmVuIHRpbWUgaWdub3JpbmcgdGhlIERhdGUgaXMgYWx3YXlzIFVUQyEKKwkJCVRpbWVab25lIHRpbWV6b25lID0gdGltZXpvbmVVdGlsLmdldFRpbWV6b25lQnlVc2VyKHVzZXIpOworCQkJCisJCQlMb25nIGFwcG9pbnRtZW50SWQgPSBhcHBvaW50bWVudERhby5hZGRBcHBvaW50bWVudChhcHBvaW50bWVudE5hbWUsCisJCQkJCXVzZXJJZCwgYXBwb2ludG1lbnRMb2NhdGlvbiwgYXBwb2ludG1lbnREZXNjcmlwdGlvbiwKKwkJCQkJYXBwb2ludG1lbnRzdGFydCwgYXBwb2ludG1lbnRlbmQsIGlzRGFpbHksIGlzV2Vla2x5LAorCQkJCQlpc01vbnRobHksIGlzWWVhcmx5LCBjYXRlZ29yeUlkLCByZW1pbmQsIHJvb20sIGxhbmd1YWdlX2lkLAorCQkJCQlpc1Bhc3N3b3JkUHJvdGVjdGVkLCBwYXNzd29yZCwgZmFsc2UsIHVzZXIuZ2V0T21UaW1lWm9uZSgpLmdldEpuYW1lKCkpOworCisJCQlTdHJpbmcgaW52aXRvck5hbWUgPSB1c2VyLmdldEZpcnN0bmFtZSgpICsgIiAiICsgdXNlci5nZXRMYXN0bmFtZSgpCisJCQkJCSsgIiBbIiArIHVzZXIuZ2V0QWRyZXNzZXMoKS5nZXRFbWFpbCgpICsgIl0iOworCisJCQkvLyBBZGQgdGhlIGNyZWF0b3Igb2YgdGhlIG1lZXRpbmcgY2FsZW5kYXIgZXZlbnQKKwkJCW1lZXRpbmdNZW1iZXJMb2dpYy5hZGRNZWV0aW5nTWVtYmVyKHVzZXIuZ2V0Rmlyc3RuYW1lKCksIHVzZXIKKwkJCQkJLmdldExhc3RuYW1lKCksICIiLCAiIiwgYXBwb2ludG1lbnRJZCwgdXNlcklkLCB1c2VyCisJCQkJCS5nZXRBZHJlc3NlcygpLmdldEVtYWlsKCksIHVzZXIuZ2V0UGhvbmVGb3JTTVMoKSwgYmFzZVVybCwgdXNlcklkLCB0cnVlLAorCQkJCQlsYW5ndWFnZV9pZCwgaXNQYXNzd29yZFByb3RlY3RlZCwgcGFzc3dvcmQsIHRpbWV6b25lLCB1c2VyLmdldE9tVGltZVpvbmUoKSwKKwkJCQkJaW52aXRvck5hbWUpOworCisJCQkvLyBpdGVyYXRlIHRocm91Z2ggYWxsIG1lbWJlcnMgb2YgdGhpcyBtZWV0aW5nIGFuZCBhZGQgdGhlbSB0byB0aGUKKwkJCS8vIGV2ZW50IGFuZCBzZW5kIGludml0YXRpb24KKwkJCWlmIChtbUNsaWVudCAhPSBudWxsKSB7CisKKwkJCQlmb3IgKGludCBpID0gMDsgaSA8IG1tQ2xpZW50LnNpemUoKTsgaSsrKSB7CisKKwkJCQkJQFN1cHByZXNzV2FybmluZ3MoInJhd3R5cGVzIikKKwkJCQkJTWFwIGNsaWVudE1lbWJlciA9IChNYXApIG1tQ2xpZW50LmdldChpKTsKKworCQkJCQlsb2cuZGVidWcoImNsaWVudE1lbWJlci5nZXQoJ3VzZXJJZCcpICIKKwkJCQkJCQkrIGNsaWVudE1lbWJlci5nZXQoInVzZXJJZCIpKTsKKwkJCQkJCisJCQkJCWZvciAoT2JqZWN0IHRTdHJpbmcgOiBjbGllbnRNZW1iZXIuZW50cnlTZXQoKSkgeworCQkJCQkJbG9nLmRlYnVnKCJ0U3RyaW5nICIgKyB0U3RyaW5nKTsKKwkJCQkJfQorCQkJCQlsb2cuZGVidWcoImNsaWVudE1lbWJlci5nZXQoJ21lZXRpbmdNZW1iZXJJZCcpICIKKwkJCQkJCQkrIGNsaWVudE1lbWJlci5nZXQoIm1lZXRpbmdNZW1iZXJJZCIpKTsKKworCQkJCQkvLyBXZSBuZWVkIHR3byBkaWZmZXJlbnQgdGltZVpvbmVzLCB0aGUgaW50ZXJuYWwgSmF2YSBPYmplY3QKKwkJCQkJLy8gVGltZVpvbmUsIGFuZAorCQkJCQkvLyB0aGUgb25lIGZvciB0aGUgVUkgZGlzcGxheSBvYmplY3QgdG8gbWFwIHRvLCBjYXVzZSB0aGUgVUkKKwkJCQkJLy8gb25seSBoYXMgYXJvdW5kIDI0IHRpbWV6b25lcworCQkJCQkvLyBhbmQgSmF2YSBhcm91bmQgNjAwKysKKwkJCQkJTG9uZyBzZW5kVG9Vc2VySWQgPSAwTDsKKwkJCQkJVGltZVpvbmUgdGltZXpvbmVNZW1iZXIgPSBudWxsOworCQkJCQlPbVRpbWVab25lIG9tVGltZVpvbmUgPSBudWxsOworCQkJCQlpZiAoY2xpZW50TWVtYmVyLmdldCgidXNlcklkIikgIT0gbnVsbCkgeworCQkJCQkJc2VuZFRvVXNlcklkID0gTG9uZy52YWx1ZU9mKAorCQkJCQkJCQljbGllbnRNZW1iZXIuZ2V0KCJ1c2VySWQiKS50b1N0cmluZygpKQorCQkJCQkJCQkubG9uZ1ZhbHVlKCk7CisJCQkJCX0KKworCQkJCQlTdHJpbmcgcGhvbmUgPSAiIjsKKwkJCQkJLy8gQ2hlY2sgaWYgdGhpcyBpcyBhbiBpbnRlcm5hbCB1c2VyLCBpZiB5ZXMgdXNlIHRoZQorCQkJCQkvLyB0aW1lem9uZSBmcm9tIGhpcyBwcm9maWxlIG90aGVyd2lzZSBnZXQgdGhlIHRpbWV6b25lcworCQkJCQkvLyBmcm9tIHRoZSB2YXJpYWJsZSBqTmFtZVRpbWVab25lCisJCQkJCWlmIChzZW5kVG9Vc2VySWQgPiAwKSB7CisJCQkJCQlVc2VyIGludGVyYWxVc2VyID0gdXNlck1hbmFnZXIKKwkJCQkJCQkJLmdldFVzZXJCeUlkKHNlbmRUb1VzZXJJZCk7CisJCQkJCQlwaG9uZSA9IGludGVyYWxVc2VyLmdldFBob25lRm9yU01TKCk7CisJCQkJCQl0aW1lem9uZU1lbWJlciA9IHRpbWV6b25lVXRpbAorCQkJCQkJCQkuZ2V0VGltZXpvbmVCeVVzZXIoaW50ZXJhbFVzZXIpOworCQkJCQkJb21UaW1lWm9uZSA9IGludGVyYWxVc2VyLmdldE9tVGltZVpvbmUoKTsKKwkJCQkJfSBlbHNlIHsKKwkJCQkJCS8vIEdldCB0aGUgaW50ZXJuYWwtbmFtZSBvZiB0aGUgdGltZXpvbmUgc2V0IGluIHRoZQorCQkJCQkJLy8gY2xpZW50IG9iamVjdCBhbmQgY29udmVydCBpdCB0byBhIHJlYWwgb25lCisJCQkJCQlPYmplY3Qgak5hbWUgPSBjbGllbnRNZW1iZXIuZ2V0KCJqTmFtZVRpbWVab25lIik7CisJCQkJCQlpZiAoak5hbWUgPT0gbnVsbCkgeworCQkJCQkJCWxvZy5lcnJvcigiak5hbWVUaW1lWm9uZSBub3Qgc2V0IGluIHVzZXIgb2JqZWN0IHZhcmlhYmxlIik7CisJCQkJCQkJak5hbWUgPSAiIjsKKwkJCQkJCX0KKwkJCQkJCW9tVGltZVpvbmUgPSBvbVRpbWVab25lRGFvSW1wbC5nZXRPbVRpbWVab25lKGpOYW1lCisJCQkJCQkJCS50b1N0cmluZygpKTsKKwkJCQkJCXRpbWV6b25lTWVtYmVyID0gdGltZXpvbmVVdGlsCisJCQkJCQkJCS5nZXRUaW1lem9uZUJ5SW50ZXJuYWxKTmFtZShqTmFtZS50b1N0cmluZygpKTsKKwkJCQkJfQorCisJCQkJCS8vIE5vdCBJbiBSZW1vdGUgTGlzdCBhdmFpbGFibGUgLSBpbnRlcm4gT1IgZXh0ZXJuIHVzZXIKKwkJCQkJbWVldGluZ01lbWJlckxvZ2ljLmFkZE1lZXRpbmdNZW1iZXIoCisJCQkJCQkJY2xpZW50TWVtYmVyLmdldCgiZmlyc3RuYW1lIikudG9TdHJpbmcoKSwKKwkJCQkJCQljbGllbnRNZW1iZXIuZ2V0KCJsYXN0bmFtZSIpLnRvU3RyaW5nKCksCisJCQkJCQkJIjAiLCAvLyBtZW1iZXJTdGF0dXMKKwkJCQkJCQkiMCIsIC8vIGFwcG9pbnRtZW50U3RhdHVzCisJCQkJCQkJYXBwb2ludG1lbnRJZCwKKwkJCQkJCQlzZW5kVG9Vc2VySWQsIC8vIHNlbmRpbmcgVG86IEV4dGVybmFsIHVzZXJzIGhhdmUgYSAwCisJCQkJCQkJCQkJCS8vIGhlcmUKKwkJCQkJCQljbGllbnRNZW1iZXIuZ2V0KCJlbWFpbCIpLnRvU3RyaW5nKCksCisJCQkJCQkJcGhvbmUsCisJCQkJCQkJYmFzZVVybCwKKwkJCQkJCQl1c2VySWQsIC8vIG1lZXRpbmdfb3JnYW5pemVyCisJCQkJCQkJbmV3IEJvb2xlYW4oZmFsc2UpLCAvLyBpbnZpdG9yCisJCQkJCQkJbGFuZ3VhZ2VfaWQsIC8vbGFuZ3VhZ2VfaWQKKwkJCQkJCQlpc1Bhc3N3b3JkUHJvdGVjdGVkLCAvLyBpc1Bhc3N3b3JkUHJvdGVjdGVkCisJCQkJCQkJcGFzc3dvcmQsIC8vIHBhc3N3b3JkCisJCQkJCQkJdGltZXpvbmVNZW1iZXIsIG9tVGltZVpvbmUsIGludml0b3JOYW1lKTsKKworCQkJCX0KKwkJCX0KKworCQkJcmV0dXJuIGFwcG9pbnRtZW50SWQ7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW3NhdmVBcHBvaW50bWVudF0iLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCS8qKgorCSAqIAorCSAqIEBwYXJhbSBhcHBvaW50bWVudElkCisJICogQHJldHVybgorCSAqLworCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlwdWJsaWMgTG9uZyBkZWxldGVBcHBvaW50bWVudChMb25nIGFwcG9pbnRtZW50SWQsIExvbmcgdXNlcnNfaWQsCisJCQlMb25nIGxhbmd1YWdlX2lkKSB7CisJCWxvZy5kZWJ1ZygiZGVsZXRlQXBwb2ludG1lbnQgOiAiICsgYXBwb2ludG1lbnRJZCk7CisKKwkJdHJ5IHsKKworCQkJQXBwb2ludG1lbnQgcG9pbnQgPSBnZXRBcHBvaW50TWVudEJ5SWQoYXBwb2ludG1lbnRJZCk7CisJCQkKKwkJCWlmIChwb2ludCA9PSBudWxsKSB7CisJCQkJbG9nLmVycm9yKCJObyBhcHBvaW50bWVudCBmb3VuZCBmb3IgSUQgIiArIGFwcG9pbnRtZW50SWQpOworCQkJCXJldHVybiBudWxsOworCQkJfQorCisJCQlpZiAocG9pbnQuZ2V0SXNDb25uZWN0ZWRFdmVudCgpICE9IG51bGwKKwkJCQkJJiYgcG9pbnQuZ2V0SXNDb25uZWN0ZWRFdmVudCgpKSB7CisJCQkJTGlzdDxBcHBvaW50bWVudD4gYXBwb2ludG1lbnRzID0gYXBwb2ludG1lbnREYW8KKwkJCQkJCS5nZXRBcHBvaW50bWVudHNCeVJvb21JZChwb2ludC5nZXRSb29tKCkuZ2V0Um9vbXNfaWQoKSk7CisKKwkJCQlmb3IgKEFwcG9pbnRtZW50IGFwcG9pbnRtZW50IDogYXBwb2ludG1lbnRzKSB7CisKKwkJCQkJaWYgKCFhcHBvaW50bWVudC5nZXRBcHBvaW50bWVudElkKCkuZXF1YWxzKGFwcG9pbnRtZW50SWQpKSB7CisKKwkJCQkJCWFwcG9pbnRtZW50RGFvLmRlbGV0ZUFwcG9pbnRlbWVudChhcHBvaW50bWVudAorCQkJCQkJCQkuZ2V0QXBwb2ludG1lbnRJZCgpKTsKKworCQkJCQl9CisKKwkJCQl9CisKKwkJCX0KKworCQkJUm9vbSByb29tID0gcG9pbnQuZ2V0Um9vbSgpOworCisJCQkvLyBEZWxldGluZy9Ob3RpZmluZyBNZWV0aW5nbWVtYmVycworCQkJTGlzdDxNZWV0aW5nTWVtYmVyPiBtZW1iZXJzID0gbWVldGluZ01lbWJlckRhbworCQkJCQkuZ2V0TWVldGluZ01lbWJlckJ5QXBwb2ludG1lbnRJZChhcHBvaW50bWVudElkKTsKKworCQkJaWYgKG1lbWJlcnMgPT0gbnVsbCkKKwkJCQlsb2cuZGVidWcoIkFwcG9pbnRtZW50ICIgKyBwb2ludC5nZXRBcHBvaW50bWVudE5hbWUoKQorCQkJCQkJKyAiIGhhcyBubyBtZWV0aW5nIG1lbWJlcnMiKTsKKworCQkJaWYgKG1lbWJlcnMgIT0gbnVsbCkgeworCQkJCWZvciAoaW50IGkgPSAwOyBpIDwgbWVtYmVycy5zaXplKCk7IGkrKykgeworCQkJCQlsb2cuZGVidWcoImRlbGV0aW5nIG1lbWJlciAiICsgbWVtYmVycy5nZXQoaSkuZ2V0RW1haWwoKSk7CisJCQkJCW1lZXRpbmdNZW1iZXJMb2dpYy5kZWxldGVNZWV0aW5nTWVtYmVyKG1lbWJlcnMuZ2V0KGkpCisJCQkJCQkJLmdldE1lZXRpbmdNZW1iZXJJZCgpLCB1c2Vyc19pZCwgbGFuZ3VhZ2VfaWQpOworCQkJCX0KKwkJCX0KKworCQkJLy8gRGVsZXRpbmcgQXBwb2ludG1lbnQgaXRzZWxmCisJCQlhcHBvaW50bWVudERhby5kZWxldGVBcHBvaW50ZW1lbnQoYXBwb2ludG1lbnRJZCk7CisKKwkJCS8vIERlbGV0aW5nIFJvb20KKwkJCWJvb2xlYW4gaXNBcHBSb29tID0gcm9vbS5nZXRBcHBvaW50bWVudCgpOworCQkJaWYgKGlzQXBwUm9vbSkgeworCQkJCXJvb21EYW8uZGVsZXRlKHJvb20sIHVzZXJzX2lkKTsKKwkJCX0KKworCQkJcmV0dXJuIGFwcG9pbnRtZW50SWQ7CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbZGVsZXRlQXBwb2ludG1lbnRdIiwgZXJyKTsKKwkJfQorCisJCXJldHVybiBudWxsOworCisJfQorCisJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJLyoqCisJICogUmV0cmlldmluZyBBcHBvaW50bWVudCBieSBJRAorCSAqLworCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlwdWJsaWMgQXBwb2ludG1lbnQgZ2V0QXBwb2ludE1lbnRCeUlkKExvbmcgYXBwb2ludG1lbnQpIHsKKwkJbG9nLmRlYnVnKCJnZXRBcHBvaW50TWVudEJ5SWQiKTsKKworCQlyZXR1cm4gYXBwb2ludG1lbnREYW8uZ2V0QXBwb2ludG1lbnRCeUlkKGFwcG9pbnRtZW50KTsKKwl9CisKKwkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwkvKioKKwkgKiBTZW5kaW5nIFJlbWluZGVyIGluIFNpbXBsZSBtYWlsIGZvcm1hdCA1IG1pbnV0ZXMgYmVmb3JlIE1lZXRpbmcgYmVnaW5zCisJICovCisJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCXB1YmxpYyB2b2lkIGRvU2NoZWR1bGVkTWVldGluZ1JlbWluZGVyKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCS8vIGxvZy5kZWJ1ZygiZG9TY2hlZHVsZWRNZWV0aW5nUmVtaW5kZXIiKTsKKworCQlJbnRlZ2VyIG1pbnV0ZXNSZW1pbmRlclNlbmQgPSBjb25maWd1cmF0aW9uRGFvLmdldENvbmZWYWx1ZSgKKwkJCQkibnVtYmVyLm1pbnV0ZXMucmVtaW5kZXIuc2VuZCIsIEludGVnZXIuY2xhc3MsICIiCisJCQkJCQkrIERFRkFVTFRfTUlOVVRFU19SRU1JTkRFUl9TRU5EKTsKKwkJaWYgKG1pbnV0ZXNSZW1pbmRlclNlbmQgPT0gbnVsbCkgeworCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbigibWludXRlc1JlbWluZGVyU2VuZCBpcyBudWxsISIpOworCQl9CisKKwkJaWYgKG1pbnV0ZXNSZW1pbmRlclNlbmQgPT0gMCkgeworCQkJbG9nLndhcm4oIm1pbnV0ZXNSZW1pbmRlclNlbmQgaXMgMCwgZGlzYWJsaW5nIHJlbWluZGVyIHNjaGVkdWxlciIpOworCQkJcmV0dXJuOworCQl9CisKKwkJbG9uZyBtaWxsaXNlY29uZHNUb0NoZWNrID0gKG1pbnV0ZXNSZW1pbmRlclNlbmQgKiA2MCAqIDEwMDApOworCisJCUxpc3Q8QXBwb2ludG1lbnQ+IHBvaW50cyA9IGFwcG9pbnRtZW50RGFvCisJCQkJLmdldEFwcG9pbnRtZW50c0ZvckFsbFVzZXJzQnlUaW1lUmFuZ2VTdGFydGluZ05vdygKKwkJCQkJCW1pbGxpc2Vjb25kc1RvQ2hlY2ssIGZhbHNlKTsKKworCQlpZiAocG9pbnRzID09IG51bGwgfHwgcG9pbnRzLnNpemUoKSA8IDEpIHsKKwkJCWxvZy5kZWJ1ZygiZG9TY2hlZHVsZWRNZWV0aW5nUmVtaW5kZXIgOiBubyBBcHBvaW50bWVudHMgaW4gcmFuZ2UiKTsKKwkJCXJldHVybjsKKwkJfQorCisJCUxvbmcgbGFuZ3VhZ2VfaWQgPSBjb25maWd1cmF0aW9uRGFvLmdldENvbmZWYWx1ZSgiZGVmYXVsdF9sYW5nX2lkIiwgTG9uZy5jbGFzcywgIjEiKTsKKworCQkvLyBHZXQgdGhlIHJlcXVpcmVkIGxhYmVscyBvbmUgdGltZSBmb3IgYWxsIG1lZXRpbmcgbWVtYmVycy4gVGhlCisJCS8vIExhbmd1YWdlIG9mIHRoZSBlbWFpbCB3aWxsIGJlIHRoZSBzeXN0ZW0gZGVmYXVsdCBsYW5ndWFnZQorCQlTdHJpbmcgbGFiZWxpZDExNTggPSBmaWVsZE1hbmFnZXIuZ2V0U3RyaW5nKDExNThMLCBsYW5ndWFnZV9pZCk7CisJCUZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGxhYmVsaWQxMTUzID0gZmllbGRNYW5hZ2VyCisJCQkJLmdldEZpZWxkQnlJZEFuZExhbmd1YWdlKDExNTNMLCBsYW5ndWFnZV9pZCk7CisJCUZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGxhYmVsaWQxMTU0ID0gZmllbGRNYW5hZ2VyCisJCQkJLmdldEZpZWxkQnlJZEFuZExhbmd1YWdlKDExNTRMLCBsYW5ndWFnZV9pZCk7CisKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBwb2ludHMuc2l6ZSgpOyBpKyspIHsKKwkJCUFwcG9pbnRtZW50IG1lbnQgPSBwb2ludHMuZ2V0KGkpOworCisJCQkvLyBQcmV2ZW50IGVtYWlsIGZyb20gYmVpbmcgc2VuZCB0d2ljZSwgZXZlbiBpZiB0aGUgY3ljbGUgdGFrZXMKKwkJCS8vIHZlcnkgbG9uZyB0byBzZW5kIGVhY2gKKwkJCWlmIChtZW50LmdldElzUmVtaW5kZXJFbWFpbFNlbmQoKSAhPSBudWxsCisJCQkJCSYmIG1lbnQuZ2V0SXNSZW1pbmRlckVtYWlsU2VuZCgpKSB7CisJCQkJY29udGludWU7CisJCQl9CisKKwkJCS8vIENoZWNraW5nIFJlbWluZGVyVHlwZSAtIG9ubHkgUmVtaW5kZXJUeXBlIHNpbXBsZSBtYWlsIGlzCisJCQkvLyBjb25jZXJuZWQhCisJCQlpZiAobWVudC5nZXRSZW1pbmQoKS5nZXRUeXBJZCgpID09IDIKKwkJCQkJfHwgbWVudC5nZXRSZW1pbmQoKS5nZXRUeXBJZCgpID09IDMpIHsKKworCQkJCS8vIFVwZGF0ZSBBcHBvaW50bWVudCB0byBub3Qgc2VuZCBpbnZpdGF0aW9uIHR3aWNlCisJCQkJbWVudC5zZXRJc1JlbWluZGVyRW1haWxTZW5kKHRydWUpOworCQkJCWFwcG9pbnRtZW50RGFvLnVwZGF0ZUFwcG9pbnRtZW50KG1lbnQpOworCisJCQkJTGlzdDxNZWV0aW5nTWVtYmVyPiBtZW1iZXJzID0gbWVldGluZ01lbWJlckRhbworCQkJCQkJLmdldE1lZXRpbmdNZW1iZXJCeUFwcG9pbnRtZW50SWQobWVudAorCQkJCQkJCQkuZ2V0QXBwb2ludG1lbnRJZCgpKTsKKworCQkJCWlmIChtZW1iZXJzID09IG51bGwpIHsKKwkJCQkJbG9nLmRlYnVnKCJkb1NjaGVkdWxlZE1lZXRpbmdSZW1pbmRlciA6IG5vIG1lbWJlcnMgaW4gbWVldGluZyEiKTsKKwkJCQkJY29udGludWU7CisJCQkJfQorCisJCQkJLy8gSXRlcmF0ZSB0aHJvdWdoIGFsbCBNZWV0aW5nTWVtYmVycworCQkJCWZvciAoTWVldGluZ01lbWJlciBtbSA6IG1lbWJlcnMpIHsKKworCQkJCQlsb2cuZGVidWcoImRvU2NoZWR1bGVkTWVldGluZ1JlbWluZGVyIDogTWVtYmVyICIKKwkJCQkJCQkrIG1tLmdldEVtYWlsKCkpOworCisJCQkJCUludml0YXRpb25zIGludiA9IG1tLmdldEludml0YXRpb24oKTsKKworCQkJCQlpZiAoaW52ID09IG51bGwpIHsKKwkJCQkJCWxvZy5lcnJvcigiRXJyb3IgcmV0cmlldmluZyBJbnZpdGF0aW9uIGZvciBtZW1iZXIgIgorCQkJCQkJCQkrIG1tLmdldEVtYWlsKCkgKyAiIGluIEFwcG9pbnRtZW50ICIKKwkJCQkJCQkJKyBtZW50LmdldEFwcG9pbnRtZW50TmFtZSgpKTsKKwkJCQkJCWNvbnRpbnVlOworCQkJCQl9CisKKwkJCQkJaWYgKGludi5nZXRCYXNlVXJsKCkgPT0gbnVsbAorCQkJCQkJCXx8IGludi5nZXRCYXNlVXJsKCkubGVuZ3RoKCkgPCAxKSB7CisJCQkJCQlsb2cuZXJyb3IoIkVycm9yIHJldHJpZXZpbmcgYmFzZVVybCBmcm9tIEludml0YXRpb24gSUQgOiAiCisJCQkJCQkJCSsgaW52LmdldEludml0YXRpb25zX2lkKCkpOworCQkJCQkJY29udGludWU7CisJCQkJCX0KKworCQkJCQlUaW1lWm9uZSB0Wm9uZSA9IG51bGw7CisKKwkJCQkJaWYgKG1tLmdldE9tVGltZVpvbmUoKSAhPSBudWxsKSB7CisJCQkJCQl0Wm9uZSA9IHRpbWV6b25lVXRpbC5nZXRUaW1lem9uZUJ5T21UaW1lWm9uZUlkKG1tCisJCQkJCQkJCS5nZXRPbVRpbWVab25lKCkuZ2V0T210aW1lem9uZUlkKCkpOworCQkJCQl9IGVsc2UgeworCQkJCQkJdFpvbmUgPSBUaW1lWm9uZS5nZXREZWZhdWx0KCk7CisJCQkJCX0KKworCQkJCQlTdHJpbmcgc3ViamVjdCA9IGdlbmVyYXRlU3ViamVjdChsYWJlbGlkMTE1OCwgbWVudCwgdFpvbmUpOworCQkJCQlTdHJpbmcgc21zU3ViamVjdCA9IGdlbmVyYXRlU01TU3ViamVjdChsYWJlbGlkMTE1OCwgbWVudCk7CisKKwkJCQkJU3RyaW5nIG1lc3NhZ2UgPSBnZW5lcmF0ZU1lc3NhZ2UobGFiZWxpZDExNTgsIG1lbnQsCisJCQkJCQkJbGFuZ3VhZ2VfaWQsIGxhYmVsaWQxMTUzLCBsYWJlbGlkMTE1NCwgdFpvbmUpOworCisJCQkJCWludml0YXRpb25NYW5hZ2VyLnNlbmRJbnZpdGF0aW9uUmVtaW5kZXJMaW5rKGxhbmd1YWdlX2lkLCBtZXNzYWdlLAorCQkJCQkJCWludi5nZXRCYXNlVXJsKCksIG1tLmdldEVtYWlsKCksIHN1YmplY3QsCisJCQkJCQkJaW52LmdldEhhc2goKSk7CisKKwkJCQkJaW52aXRhdGlvbk1hbmFnZXIuc2VuZEludml0YXRpb25SZW1pbmRlclNNUyhtbS5nZXRQaG9uZSgpLCBzbXNTdWJqZWN0LCBsYW5ndWFnZV9pZCk7CisJCQkJCWludi5zZXRVcGRhdGV0aW1lKG5ldyBEYXRlKCkpOworCQkJCQlpbnZpdGF0aW9uTWFuYWdlci51cGRhdGVJbnZpdGF0aW9uKGludik7CisJCQkJfQorCQkJfQorCQl9CisJfQorCisJcHJpdmF0ZSBTdHJpbmcgZ2VuZXJhdGVTdWJqZWN0KFN0cmluZyBsYWJlbGlkMTE1OCwKKwkJCUFwcG9pbnRtZW50IG1lbnQsIFRpbWVab25lIHRpbWV6b25lKSB7CisKKwkJU3RyaW5nIG1lc3NhZ2UgPSBsYWJlbGlkMTE1OCArICIgIgorCQkJCSsgbWVudC5nZXRBcHBvaW50bWVudE5hbWUoKTsKKworCQltZXNzYWdlICs9ICcgJyArIENhbGVuZGFyUGF0dGVybnMKKwkJCQkuZ2V0RGF0ZVdpdGhUaW1lQnlNaWxpU2Vjb25kc0FuZFRpbWVab25lKAorCQkJCQkJbWVudC5nZXRBcHBvaW50bWVudFN0YXJ0dGltZSgpLCB0aW1lem9uZSk7CisKKwkJbWVzc2FnZSArPSAiIC0gIgorCQkJCSsgQ2FsZW5kYXJQYXR0ZXJucy5nZXREYXRlV2l0aFRpbWVCeU1pbGlTZWNvbmRzQW5kVGltZVpvbmUoCisJCQkJCQltZW50LmdldEFwcG9pbnRtZW50RW5kdGltZSgpLCB0aW1lem9uZSk7CisKKwkJcmV0dXJuIG1lc3NhZ2U7CisKKwl9CisKKwlwcml2YXRlIFN0cmluZyBnZW5lcmF0ZVNNU1N1YmplY3QoU3RyaW5nIGxhYmVsaWQxMTU4LCBBcHBvaW50bWVudCBtZW50KSB7CisJCVN0cmluZyBzdWJqID0gY29uZmlndXJhdGlvbkRhby5nZXRDb25mVmFsdWUoInNtcy5zdWJqZWN0IiwgU3RyaW5nLmNsYXNzLCBudWxsKTsKKwkJcmV0dXJuIHN1YmogPT0gbnVsbCB8fCBzdWJqLmxlbmd0aCgpID09IDAgPyAKKwkJCQlsYWJlbGlkMTE1OCArICIgIiArIG1lbnQuZ2V0QXBwb2ludG1lbnROYW1lKCkgOiBzdWJqOworCX0KKwkKKwkvKioKKwkgKiBHZW5lcmF0ZSBhIGxvY2FsaXplZCBtZXNzYWdlIGluY2x1ZGluZyB0aGUgdGltZSBhbmQgZGF0ZSBvZiB0aGUgbWVldGluZworCSAqIGV2ZW50CisJICogCisJICogQHBhcmFtIGxhYmVsaWQxMTU4CisJICogQHBhcmFtIG1lbnQKKwkgKiBAcGFyYW0gbGFuZ3VhZ2VfaWQKKwkgKiBAcGFyYW0gbGFiZWxpZDExNTMKKwkgKiBAcGFyYW0gak5hbWVUaW1lWm9uZQorCSAqIEBwYXJhbSBsYWJlbGlkMTE1NAorCSAqIEByZXR1cm4KKwkgKi8KKwlwcml2YXRlIFN0cmluZyBnZW5lcmF0ZU1lc3NhZ2UoU3RyaW5nIGxhYmVsaWQxMTU4LAorCQkJQXBwb2ludG1lbnQgbWVudCwgTG9uZyBsYW5ndWFnZV9pZCwKKwkJCUZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGxhYmVsaWQxMTUzLCBGaWVsZGxhbmd1YWdlc3ZhbHVlcyBsYWJlbGlkMTE1NCwKKwkJCVRpbWVab25lIHRpbWV6b25lKSB7CisKKwkJU3RyaW5nIG1lc3NhZ2UgPSBsYWJlbGlkMTE1OCArICIgIgorCQkJCSsgbWVudC5nZXRBcHBvaW50bWVudE5hbWUoKTsKKworCQlpZiAobWVudC5nZXRBcHBvaW50bWVudERlc2NyaXB0aW9uKCkubGVuZ3RoKCkgIT0gMCkgeworCisJCQlGaWVsZGxhbmd1YWdlc3ZhbHVlcyBsYWJlbGlkMTE1MiA9IGZpZWxkTWFuYWdlcgorCQkJCQkuZ2V0RmllbGRCeUlkQW5kTGFuZ3VhZ2UobmV3IExvbmcoMTE1MiksIGxhbmd1YWdlX2lkKTsKKwkJCW1lc3NhZ2UgKz0gbGFiZWxpZDExNTIuZ2V0VmFsdWUoKQorCQkJCQkrIG1lbnQuZ2V0QXBwb2ludG1lbnREZXNjcmlwdGlvbigpOworCisJCX0KKworCQltZXNzYWdlICs9ICI8YnIvPiIKKwkJCQkrIGxhYmVsaWQxMTUzLmdldFZhbHVlKCkKKwkJCQkrICcgJworCQkJCSsgQ2FsZW5kYXJQYXR0ZXJucy5nZXREYXRlV2l0aFRpbWVCeU1pbGlTZWNvbmRzQW5kVGltZVpvbmUoCisJCQkJCQltZW50LmdldEFwcG9pbnRtZW50U3RhcnR0aW1lKCksIHRpbWV6b25lKSArICI8YnIvPiI7CisKKwkJbWVzc2FnZSArPSBsYWJlbGlkMTE1NC5nZXRWYWx1ZSgpCisJCQkJKyAnICcKKwkJCQkrIENhbGVuZGFyUGF0dGVybnMuZ2V0RGF0ZVdpdGhUaW1lQnlNaWxpU2Vjb25kc0FuZFRpbWVab25lKAorCQkJCQkJbWVudC5nZXRBcHBvaW50bWVudEVuZHRpbWUoKSwgdGltZXpvbmUpICsgIjxici8+IjsKKworCQlyZXR1cm4gbWVzc2FnZTsKKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2NhbGVuZGFyL21hbmFnZW1lbnQvTWVldGluZ01lbWJlckxvZ2ljLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9jYWxlbmRhci9tYW5hZ2VtZW50L01lZXRpbmdNZW1iZXJMb2dpYy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI2YmFhMmQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9jYWxlbmRhci9tYW5hZ2VtZW50L01lZXRpbmdNZW1iZXJMb2dpYy5qYXZhCkBAIC0wLDAgKzEsMzY2IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY2FsZW5kYXIubWFuYWdlbWVudDsKKworaW1wb3J0IGphdmEudXRpbC5UaW1lWm9uZTsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLkZpZWxkTWFuYWdlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNhbGVuZGFyLmRhb3MuTWVldGluZ01lbWJlckRhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNvbmZlcmVuY2UuSW52aXRhdGlvbk1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLlVzZXJNYW5hZ2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLk9tVGltZVpvbmU7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuY2FsZW5kYXIuQXBwb2ludG1lbnQ7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuY2FsZW5kYXIuTWVldGluZ01lbWJlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5pbnZpdGF0aW9uLkludml0YXRpb25zOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuVXNlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5tYXRoLkNhbGVuZGFyUGF0dGVybnM7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKKworcHVibGljIGNsYXNzIE1lZXRpbmdNZW1iZXJMb2dpYyB7CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKAorCQkJTWVldGluZ01lbWJlckxvZ2ljLmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBBcHBvaW50bWVudExvZ2ljIGFwcG9pbnRtZW50TG9naWM7CisJQEF1dG93aXJlZAorCXByaXZhdGUgVXNlck1hbmFnZXIgdXNlck1hbmFnZXI7CisJQEF1dG93aXJlZAorCXByaXZhdGUgRmllbGRNYW5hZ2VyIGZpZWxkTWFuYWdlcjsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBJbnZpdGF0aW9uTWFuYWdlciBpbnZpdGF0aW9uTWFuYWdlcjsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBNZWV0aW5nTWVtYmVyRGFvIG1lZXRpbmdNZW1iZXJEYW87CisKKwkvKioKKwkgKiBUaGlzIGNhbiBiZSBlaXRoZXIgYW4gaW50ZXJuYWwgb3IgYW4gZXh0ZXJuYWwgdXNlciwgaW50ZXJuYWwgdXNlcnMgaGF2ZSBhCisJICogdXNlciBpZCAhPSBudWxsICYmID4gMAorCSAqIAorCSAqIGpOYW1lSW50ZXJuYWxUaW1lWm9uZSBpcyBuZWVkZWQgZm9yIHRoZSBtYXBwaW5nIG9mIHRoZSB0aW1lem9uZXMKKwkgKiBhdmFpbGFibGUKKwkgKiAKKwkgKiBAYXV0aG9yIG9iZWNoZXJlcixzZWJhLndhZ25lcgorCSAqIEBwYXJhbSBmaXJzdG5hbWUKKwkgKiBAcGFyYW0gbGFzdG5hbWUKKwkgKiBAcGFyYW0gbWVtYmVyU3RhdHVzCisJICogQHBhcmFtIGFwcG9pbnRtZW50U3RhdHVzCisJICogQHBhcmFtIGFwcG9pbnRtZW50SWQKKwkgKiBAcGFyYW0gdXNlcmlkCisJICogQHBhcmFtIGVtYWlsCisJICogQHBhcmFtIGJhc2VVcmwKKwkgKiBAcGFyYW0gbWVldGluZ19vcmdhbml6ZXIKKwkgKiBAcGFyYW0gaW52aXRvcgorCSAqIEBwYXJhbSBsYW5ndWFnZV9pZAorCSAqIEBwYXJhbSBpc1Bhc3N3b3JkUHJvdGVjdGVkCisJICogQHBhcmFtIHBhc3N3b3JkCisJICogQHBhcmFtIHRpbWV6b25lCisJICogQHBhcmFtIGpOYW1lSW50ZXJuYWxUaW1lWm9uZQorCSAqIEBwYXJhbSBpbnZpdG9yTmFtZQorCSAqICAgICAgICAgICAgY2FuIGJlIGRpZmZlcmVudCBmcm9tIHRoZSBjdXJyZW50IGZpcnN0bmFtZS9sYXN0bmFtZSBvZiBjb3Vyc2UKKwkgKiBAcmV0dXJuCisJICovCisJcHVibGljIExvbmcgYWRkTWVldGluZ01lbWJlcihTdHJpbmcgZmlyc3RuYW1lLCBTdHJpbmcgbGFzdG5hbWUsCisJCQlTdHJpbmcgbWVtYmVyU3RhdHVzLCBTdHJpbmcgYXBwb2ludG1lbnRTdGF0dXMsIExvbmcgYXBwb2ludG1lbnRJZCwKKwkJCUxvbmcgdXNlcmlkLCBTdHJpbmcgZW1haWwsIFN0cmluZyBwaG9uZSwgU3RyaW5nIGJhc2VVcmwsIExvbmcgbWVldGluZ19vcmdhbml6ZXIsCisJCQlCb29sZWFuIGludml0b3IsIExvbmcgbGFuZ3VhZ2VfaWQsIEJvb2xlYW4gaXNQYXNzd29yZFByb3RlY3RlZCwKKwkJCVN0cmluZyBwYXNzd29yZCwgVGltZVpvbmUgdGltZXpvbmUsIE9tVGltZVpvbmUgb21UaW1lWm9uZSwKKwkJCVN0cmluZyBpbnZpdG9yTmFtZSkgeworCisJCXRyeSB7CisJCQlMb25nIG1lbWJlcklkID0gbWVldGluZ01lbWJlckRhby5hZGRNZWV0aW5nTWVtYmVyKGZpcnN0bmFtZSwKKwkJCQkJbGFzdG5hbWUsIG1lbWJlclN0YXR1cywgYXBwb2ludG1lbnRTdGF0dXMsIGFwcG9pbnRtZW50SWQsCisJCQkJCXVzZXJpZCwgZW1haWwsIHBob25lLCBpbnZpdG9yLCBvbVRpbWVab25lLCBmYWxzZSk7CisKKwkJCS8vIERlZmF1bHRJbnZpdGF0aW9uCisJCQlBcHBvaW50bWVudCBwb2ludCA9IGFwcG9pbnRtZW50TG9naWMKKwkJCQkJLmdldEFwcG9pbnRNZW50QnlJZChhcHBvaW50bWVudElkKTsKKworCQkJTWVldGluZ01lbWJlciBtZW1iZXIgPSBnZXRNZW1iZXJCeUlkKG1lbWJlcklkKTsKKwkJCUJvb2xlYW4gaXNJbnZpdG9yID0gbWVtYmVyLmdldEludml0b3IoKTsKKworCQkJTG9uZyBpbnZpdGF0aW9uSWQgPSBudWxsOworCisJCQlpZiAocG9pbnQuZ2V0UmVtaW5kKCkgPT0gbnVsbCkgeworCQkJCWxvZy5lcnJvcigiQXBwb2ludG1lbnQgaGFzIG5vIGFzc2lnbmVkIFJlbWluZGVyVHlwZSEiKTsKKwkJCQlyZXR1cm4gbnVsbDsKKwkJCX0KKworCQkJbG9nLmRlYnVnKCI6Ojo6IGFkZE1lZXRpbmdNZW1iZXIgLi4uLi4gIgorCQkJCQkrIHBvaW50LmdldFJlbWluZCgpLmdldFR5cElkKCkpOworCisJCQlTdHJpbmcgc3ViamVjdCA9IGZvcm1hdFN1YmplY3QobGFuZ3VhZ2VfaWQsIHBvaW50LCB0aW1lem9uZSk7CisKKwkJCVN0cmluZyBtZXNzYWdlID0gZm9ybWF0TWVzc2FnZShsYW5ndWFnZV9pZCwgcG9pbnQsIHRpbWV6b25lLAorCQkJCQlpbnZpdG9yTmFtZSk7CisKKwkJCS8vIHBvaW50LmdldFJlbWluZCgpLmdldFR5cElkKCkgPT0gMSB3aWxsIG5vdCByZWNlaXZlIGVtYWlscworCisJCQlpZiAocG9pbnQuZ2V0UmVtaW5kKCkuZ2V0VHlwSWQoKSA9PSAyKSB7CisJCQkJbG9nLmRlYnVnKCJJbnZpdGF0aW9uIGZvciBBcHBvaW50bWVudCA6IHNpbXBsZSBlbWFpbCIpOworCisJCQkJSW52aXRhdGlvbnMgaW52aXRhdGlvbiA9IGludml0YXRpb25NYW5hZ2VyCisJCQkJCQkuYWRkSW52aXRhdGlvbkxpbmsoCisJCQkJCQkJCW5ldyBMb25nKDIpLCAvLyB1c2VybGV2ZWwKKwkJCQkJCQkJZmlyc3RuYW1lICsgIiAiICsgbGFzdG5hbWUsIC8vIHVzZXJuYW1lCisJCQkJCQkJCW1lc3NhZ2UsCisJCQkJCQkJCWJhc2VVcmwsIC8vIGJhc2VVUmwKKwkJCQkJCQkJZW1haWwsIC8vIGVtYWlsCisJCQkJCQkJCXN1YmplY3QsIC8vIHN1YmplY3QKKwkJCQkJCQkJcG9pbnQuZ2V0Um9vbSgpLmdldFJvb21zX2lkKCksIC8vIHJvb21faWQKKwkJCQkJCQkJInB1YmxpYyIsCisJCQkJCQkJCWlzUGFzc3dvcmRQcm90ZWN0ZWQsIC8vIHBhc3N3b3JkcHJvdGVjdGVkCisJCQkJCQkJCXBhc3N3b3JkLCAvLyBpbnZpdGF0aW9ucGFzcworCQkJCQkJCQkyLCAvLyB2YWxpZCB0eXBlCisJCQkJCQkJCXBvaW50LmdldEFwcG9pbnRtZW50U3RhcnR0aW1lKCksIC8vIHZhbGlkIGZyb20KKwkJCQkJCQkJcG9pbnQuZ2V0QXBwb2ludG1lbnRFbmR0aW1lKCksIC8vIHZhbGlkIHRvCisJCQkJCQkJCW1lZXRpbmdfb3JnYW5pemVyLCAvLyBjcmVhdGVkIGJ5CisJCQkJCQkJCWJhc2VVcmwsCisJCQkJCQkJCWxhbmd1YWdlX2lkLAorCQkJCQkJCQl0cnVlLCAvLyByZWFsbHkgc2VuZCBtYWlsIHNlbmRNYWlsCisJCQkJCQkJCXBvaW50LmdldEFwcG9pbnRtZW50U3RhcnR0aW1lKCksCisJCQkJCQkJCXBvaW50LmdldEFwcG9pbnRtZW50RW5kdGltZSgpLAorCQkJCQkJCQlwb2ludC5nZXRBcHBvaW50bWVudElkKCksCisJCQkJCQkJCWludml0b3JOYW1lLAorCQkJCQkJCQlvbVRpbWVab25lKTsKKworCQkJCWludml0YXRpb25JZCA9IGludml0YXRpb24uZ2V0SW52aXRhdGlvbnNfaWQoKTsKKworCQkJfSBlbHNlIGlmIChwb2ludC5nZXRSZW1pbmQoKS5nZXRUeXBJZCgpID09IDMpIHsKKwkJCQlsb2cuZGVidWcoIlJlbWluZGVyIGZvciBBcHBvaW50bWVudCA6IGlDYWwgbWFpbCIpOworCisJCQkJU3lzdGVtLm91dC5wcmludGxuKCIjIyMgU0VORElORyBpQ0FMIEVNQUlMIik7CisKKwkJCQlpbnZpdGF0aW9uSWQgPSBpbnZpdGF0aW9uTWFuYWdlcgorCQkJCQkJLmFkZEludml0YXRpb25JY2FsTGluaygKKwkJCQkJCQkJbmV3IExvbmcoMiksIC8vIHVzZXJsZXZlbAorCQkJCQkJCQlmaXJzdG5hbWUgKyAiICIgKyBsYXN0bmFtZSwgLy8gdXNlcm5hbWUKKwkJCQkJCQkJbWVzc2FnZSwKKwkJCQkJCQkJYmFzZVVybCwgLy8gYmFzZVVSbAorCQkJCQkJCQllbWFpbCwgLy8gZW1haWwKKwkJCQkJCQkJc3ViamVjdCwgLy8gc3ViamVjdAorCQkJCQkJCQlwb2ludC5nZXRSb29tKCkuZ2V0Um9vbXNfaWQoKSwgLy8gcm9vbV9pZAorCQkJCQkJCQkicHVibGljIiwKKwkJCQkJCQkJaXNQYXNzd29yZFByb3RlY3RlZCwgLy8gcGFzc3dvcmRwcm90ZWN0ZWQKKwkJCQkJCQkJcGFzc3dvcmQsIC8vIGludml0YXRpb25wYXNzCisJCQkJCQkJCTIsIC8vIHZhbGlkCisJCQkJCQkJCXBvaW50LmdldEFwcG9pbnRtZW50U3RhcnR0aW1lKCksIC8vIHZhbGlkIGZyb20KKwkJCQkJCQkJcG9pbnQuZ2V0QXBwb2ludG1lbnRFbmR0aW1lKCksIC8vIHZhbGlkIHRvCisJCQkJCQkJCW1lZXRpbmdfb3JnYW5pemVyLCAvLyBjcmVhdGVkIGJ5CisJCQkJCQkJCXBvaW50LmdldEFwcG9pbnRtZW50SWQoKSwgaXNJbnZpdG9yLAorCQkJCQkJCQlsYW5ndWFnZV9pZCwgdGltZXpvbmUsCisJCQkJCQkJCXBvaW50LmdldEFwcG9pbnRtZW50SWQoKSwKKwkJCQkJCQkJaW52aXRvck5hbWUpOworCisJCQl9CisKKwkJCS8vIFNldHRpbmcgSW52aXRhdGlvbklkIHdpdGhpbiBNZWV0aW5nTWVtYmVyCisKKwkJCWlmIChpbnZpdGF0aW9uSWQgIT0gbnVsbCkgeworCQkJCUludml0YXRpb25zIGludmkgPSBpbnZpdGF0aW9uTWFuYWdlcgorCQkJCQkJLmdldEludml0YXRpb25ieUlkKGludml0YXRpb25JZCk7CisKKwkJCQltZW1iZXIuc2V0SW52aXRhdGlvbihpbnZpKTsKKworCQkJCXVwZGF0ZU1lZXRpbmdNZW1iZXIobWVtYmVyKTsKKworCQkJfQorCisJCQlyZXR1cm4gbWVtYmVySWQ7CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbYWRkTWVldGluZ01lbWJlcl0iLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXByaXZhdGUgU3RyaW5nIGZvcm1hdFN1YmplY3QoTG9uZyBsYW5ndWFnZV9pZCwgQXBwb2ludG1lbnQgcG9pbnQsCisJCQlUaW1lWm9uZSB0aW1lem9uZSkgeworCQl0cnkgeworCQkJU3RyaW5nIG1lc3NhZ2UgPSBmaWVsZE1hbmFnZXIuZ2V0U3RyaW5nKDExNTFMLCBsYW5ndWFnZV9pZCkgKyAiICIKKwkJCQkJKyBwb2ludC5nZXRBcHBvaW50bWVudE5hbWUoKTsKKworCQkJbWVzc2FnZSArPSAiICIKKwkJCQkJKyBDYWxlbmRhclBhdHRlcm5zLmdldERhdGVXaXRoVGltZUJ5TWlsaVNlY29uZHNBbmRUaW1lWm9uZSgKKwkJCQkJCQlwb2ludC5nZXRBcHBvaW50bWVudFN0YXJ0dGltZSgpLCB0aW1lem9uZSk7CisKKwkJCW1lc3NhZ2UgKz0gIiAtICIKKwkJCQkJKyBDYWxlbmRhclBhdHRlcm5zLmdldERhdGVXaXRoVGltZUJ5TWlsaVNlY29uZHNBbmRUaW1lWm9uZSgKKwkJCQkJCQlwb2ludC5nZXRBcHBvaW50bWVudEVuZHRpbWUoKSwgdGltZXpvbmUpOworCisJCQlyZXR1cm4gbWVzc2FnZTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJDb3VsZCBub3QgZm9ybWF0IEVtYWlsIG1lc3NhZ2UiKTsKKwkJCXJldHVybiAiRXJyb3IgZm9ybWF0U3ViamVjdCI7CisJCX0KKworCX0KKworCXByaXZhdGUgU3RyaW5nIGZvcm1hdE1lc3NhZ2UoTG9uZyBsYW5ndWFnZV9pZCwgQXBwb2ludG1lbnQgcG9pbnQsCisJCQlUaW1lWm9uZSB0aW1lem9uZSwgU3RyaW5nIGludml0b3JOYW1lKSB7CisJCXRyeSB7CisJCQlTdHJpbmcgbWVzc2FnZSA9IGZpZWxkTWFuYWdlci5nZXRTdHJpbmcoMTE1MUwsIGxhbmd1YWdlX2lkKSArICIgIgorCQkJCQkrIHBvaW50LmdldEFwcG9pbnRtZW50TmFtZSgpOworCisJCQlpZiAocG9pbnQuZ2V0QXBwb2ludG1lbnREZXNjcmlwdGlvbigpLmxlbmd0aCgpICE9IDApIHsKKwkJCQltZXNzYWdlICs9IGZpZWxkTWFuYWdlci5nZXRTdHJpbmcoMTE1MkwsIGxhbmd1YWdlX2lkKQorCQkJCQkJKyBwb2ludC5nZXRBcHBvaW50bWVudERlc2NyaXB0aW9uKCk7CisJCQl9CisKKwkJCW1lc3NhZ2UgKz0gIjxici8+IgorCQkJCQkrIGZpZWxkTWFuYWdlci5nZXRTdHJpbmcoMTE1M0wsIGxhbmd1YWdlX2lkKQorCQkJCQkrICcgJworCQkJCQkrIENhbGVuZGFyUGF0dGVybnMuZ2V0RGF0ZVdpdGhUaW1lQnlNaWxpU2Vjb25kc0FuZFRpbWVab25lKAorCQkJCQkJCXBvaW50LmdldEFwcG9pbnRtZW50U3RhcnR0aW1lKCksIHRpbWV6b25lKQorCQkJCQkrICI8YnIvPiI7CisKKwkJCW1lc3NhZ2UgKz0gZmllbGRNYW5hZ2VyLmdldFN0cmluZygxMTU0TCwgbGFuZ3VhZ2VfaWQpCisJCQkJCSsgJyAnCisJCQkJCSsgQ2FsZW5kYXJQYXR0ZXJucy5nZXREYXRlV2l0aFRpbWVCeU1pbGlTZWNvbmRzQW5kVGltZVpvbmUoCisJCQkJCQkJcG9pbnQuZ2V0QXBwb2ludG1lbnRFbmR0aW1lKCksIHRpbWV6b25lKSArICI8YnIvPiI7CisKKwkJCW1lc3NhZ2UgKz0gZmllbGRNYW5hZ2VyLmdldFN0cmluZygxMTU2TCwgbGFuZ3VhZ2VfaWQpICsgaW52aXRvck5hbWUgKyAiPGJyLz4iOworCisJCQlyZXR1cm4gbWVzc2FnZTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJDb3VsZCBub3QgZm9ybWF0IEVtYWlsIG1lc3NhZ2UiKTsKKwkJCXJldHVybiAiRXJyb3IgZm9ybWF0TWVzc2FnZSI7CisJCX0KKworCX0KKworCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJLyoqCisJICogCisJICovCisJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJcHVibGljIExvbmcgdXBkYXRlTWVldGluZ01lbWJlcihMb25nIG1lZXRpbmdNZW1iZXJJZCwgU3RyaW5nIGZpcnN0bmFtZSwKKwkJCVN0cmluZyBsYXN0bmFtZSwgU3RyaW5nIG1lbWJlclN0YXR1cywgU3RyaW5nIGFwcG9pbnRtZW50U3RhdHVzLAorCQkJTG9uZyBhcHBvaW50bWVudElkLCBMb25nIHVzZXJpZCwgU3RyaW5nIGVtYWlsLCBTdHJpbmcgcGhvbmUpIHsKKworCQlsb2cuZGVidWcoIk1lZXRpbmdNZW1iZXJMb2dpYy51cGRhdGVNZWV0aW5nTWVtYmVyIik7CisKKwkJTWVldGluZ01lbWJlciBtZW1iZXIgPSBtZWV0aW5nTWVtYmVyRGFvCisJCQkJLmdldE1lZXRpbmdNZW1iZXJCeUlkKG1lZXRpbmdNZW1iZXJJZCk7CisKKwkJaWYgKG1lbWJlciA9PSBudWxsKSB7CisJCQlsb2cuZXJyb3IoIkNvdWxkbnQgcmV0cmlldmUgTWVtYmVyIGZvciBJRCAiICsgbWVldGluZ01lbWJlcklkKTsKKwkJCXJldHVybiBudWxsOworCQl9CisKKwkJdHJ5IHsKKwkJCXJldHVybiBtZWV0aW5nTWVtYmVyRGFvLnVwZGF0ZU1lZXRpbmdNZW1iZXIobWVldGluZ01lbWJlcklkLAorCQkJCQlmaXJzdG5hbWUsIGxhc3RuYW1lLCBtZW1iZXJTdGF0dXMsIGFwcG9pbnRtZW50U3RhdHVzLAorCQkJCQlhcHBvaW50bWVudElkLCB1c2VyaWQsIGVtYWlsLCBwaG9uZSk7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW3VwZGF0ZU1lZXRpbmdNZW1iZXJdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCS8qKgorCSAqIEBhdXRob3IgYmVjaGVyZXIKKwkgKiBAcGFyYW0gbWVtYmVyCisJICogQHJldHVybgorCSAqLworCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJcHVibGljIExvbmcgdXBkYXRlTWVldGluZ01lbWJlcihNZWV0aW5nTWVtYmVyIG1lbWJlcikgeworCQlsb2cuZGVidWcoInVwZGF0ZU1lZXRpbmdNZW1iZXIiKTsKKworCQlyZXR1cm4gbWVldGluZ01lbWJlckRhby51cGRhdGVNZWV0aW5nTWVtYmVyKG1lbWJlcikKKwkJCQkuZ2V0TWVldGluZ01lbWJlcklkKCk7CisJfQorCisJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCS8qKgorCSAqIEBhdXRob3IgYmVjaGVyZXIKKwkgKiBAcGFyYW0gbWVtYmVySWQKKwkgKi8KKwkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCXB1YmxpYyBNZWV0aW5nTWVtYmVyIGdldE1lbWJlckJ5SWQoTG9uZyBtZW1iZXJJZCkgeworCQlsb2cuZGVidWcoImdldE1lbWJlckJ5SWQiKTsKKworCQlyZXR1cm4gbWVldGluZ01lbWJlckRhby5nZXRNZWV0aW5nTWVtYmVyQnlJZChtZW1iZXJJZCk7CisJfQorCisJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCS8qKgorCSAqIAorCSAqIEBwYXJhbSBtZWV0aW5nTWVtYmVySWQKKwkgKiBAcGFyYW0gdXNlcnNfaWQKKwkgKiBAcmV0dXJuCisJICovCisJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlwdWJsaWMgTG9uZyBkZWxldGVNZWV0aW5nTWVtYmVyKExvbmcgbWVldGluZ01lbWJlcklkLCBMb25nIHVzZXJzX2lkLAorCQkJTG9uZyBsYW5ndWFnZV9pZCkgeworCQlsb2cuZGVidWcoIm1lZXRpbmdNZW1iZXJMb2dpYy5kZWxldGVNZWV0aW5nTWVtYmVyIDogIiArIG1lZXRpbmdNZW1iZXJJZCk7CisKKwkJdHJ5IHsKKworCQkJTWVldGluZ01lbWJlciBtZW1iZXIgPSBtZWV0aW5nTWVtYmVyRGFvCisJCQkJCS5nZXRNZWV0aW5nTWVtYmVyQnlJZChtZWV0aW5nTWVtYmVySWQpOworCisJCQlpZiAobWVtYmVyID09IG51bGwpIHsKKwkJCQlsb2cuZXJyb3IoImNvdWxkIG5vdCBmaW5kIG1lZXRpbmcgbWVtYmVyISIpOworCQkJCXJldHVybiBudWxsOworCQkJfQorCisJCQlBcHBvaW50bWVudCBwb2ludCA9IG1lbWJlci5nZXRBcHBvaW50bWVudCgpOworCQkJcG9pbnQgPSBhcHBvaW50bWVudExvZ2ljLmdldEFwcG9pbnRNZW50QnlJZChwb2ludAorCQkJCQkuZ2V0QXBwb2ludG1lbnRJZCgpKTsKKworCQkJaWYgKHBvaW50ID09IG51bGwpIHsKKwkJCQlsb2cuZXJyb3IoImNvdWxkIG5vdCByZXRyaWV2ZSBhcHBvaW50bWVudCEiKTsKKwkJCQlyZXR1cm4gbnVsbDsKKwkJCX0KKworCQkJVXNlciB1c2VyID0gdXNlck1hbmFnZXIuZ2V0VXNlckJ5SWQodXNlcnNfaWQpOworCisJCQlpZiAodXNlciA9PSBudWxsKSB7CisJCQkJbG9nLmVycm9yKCJjb3VsZCBub3QgcmV0cmlldmUgdXNlciEiKTsKKwkJCQlyZXR1cm4gbnVsbDsKKwkJCX0KKworCQkJbG9nLmRlYnVnKCJiZWZvcmUgc2VuZGluZyBjYW5jZWxNYWlsIik7CisKKwkJCS8vIGNhbmNlbCBpbnZpdGF0aW9uCisJCQlpbnZpdGF0aW9uTWFuYWdlci5jYW5jZWxJbnZpdGF0aW9uKHBvaW50LCBtZW1iZXIsIHVzZXJzX2lkLAorCQkJCQlsYW5ndWFnZV9pZCk7CisKKwkJCWxvZy5kZWJ1ZygiYWZ0ZXIgc2VuZGluZyBjYW5jZWxtYWlsIik7CisKKwkJCUxvbmcgcmV0dXJuVmFsdWUgPSBtZWV0aW5nTWVtYmVyRGFvCisJCQkJCS5kZWxldGVNZWV0aW5nTWVtYmVyKG1lZXRpbmdNZW1iZXJJZCk7CisKKwkJCXJldHVybiByZXR1cm5WYWx1ZTsKKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltkZWxldGVNZWV0aW5nTWVtYmVyXSIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9jaGF0L0NoYXREYW8uamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2NoYXQvQ2hhdERhby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzZGJmZWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9jaGF0L0NoYXREYW8uamF2YQpAQCAtMCwwICsxLDcwIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY2hhdDsKKworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5TWFuYWdlcjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5QZXJzaXN0ZW5jZUNvbnRleHQ7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5jaGF0LkNoYXRNZXNzYWdlOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsudHJhbnNhY3Rpb24uYW5ub3RhdGlvbi5UcmFuc2FjdGlvbmFsOworCitAVHJhbnNhY3Rpb25hbAorcHVibGljIGNsYXNzIENoYXREYW8geworCUBQZXJzaXN0ZW5jZUNvbnRleHQKKwlwcml2YXRlIEVudGl0eU1hbmFnZXIgZW07CisKKwlwdWJsaWMgQ2hhdE1lc3NhZ2UgZ2V0KGxvbmcgaWQpIHsKKwkJcmV0dXJuIGVtLmNyZWF0ZU5hbWVkUXVlcnkoImdldENoYXRNZXNzYWdlQnlJZCIsIENoYXRNZXNzYWdlLmNsYXNzKQorCQkJCS5zZXRQYXJhbWV0ZXIoImlkIiwgaWQpCisJCQkJLmdldFNpbmdsZVJlc3VsdCgpOworCX0KKworCS8vVE9ETyBhZGRpdGlvbmFsIG1ldGhvZHMgc2hvdWxkIGJlIGFkZGVkIHRvIGdldCBtZXNzYWdlcyBieSBleHRlcm5hbCBlbWFpbAorCXB1YmxpYyBMaXN0PENoYXRNZXNzYWdlPiBnZXQobG9uZyB1c2VySWQsIGludCBzdGFydCwgaW50IGNvdW50KSB7CisJCXJldHVybiBlbS5jcmVhdGVOYW1lZFF1ZXJ5KCJnZXRDaGF0TWVzc2FnZXNCeVVzZXIiLCBDaGF0TWVzc2FnZS5jbGFzcykKKwkJCQkuc2V0UGFyYW1ldGVyKCJ1c2VySWQiLCB1c2VySWQpCisJCQkJLnNldEZpcnN0UmVzdWx0KHN0YXJ0KQorCQkJCS5zZXRNYXhSZXN1bHRzKGNvdW50KQorCQkJCS5nZXRSZXN1bHRMaXN0KCk7CisJfQorCisJcHVibGljIExpc3Q8Q2hhdE1lc3NhZ2U+IGdldChpbnQgc3RhcnQsIGludCBjb3VudCkgeworCQlyZXR1cm4gZW0uY3JlYXRlTmFtZWRRdWVyeSgiZ2V0R2xvYmFsQ2hhdE1lc3NhZ2VzIiwgQ2hhdE1lc3NhZ2UuY2xhc3MpCisJCQkJLnNldEZpcnN0UmVzdWx0KHN0YXJ0KQorCQkJCS5zZXRNYXhSZXN1bHRzKGNvdW50KQorCQkJCS5nZXRSZXN1bHRMaXN0KCk7CisJfQorCisJcHVibGljIENoYXRNZXNzYWdlIHVwZGF0ZShDaGF0TWVzc2FnZSBlbnRpdHkpIHsKKwkJZW50aXR5LnNldFNlbnQobmV3IERhdGUoKSk7CisJCWlmIChlbnRpdHkuZ2V0SWQoKSA9PSAwKSB7CisJCQllbS5wZXJzaXN0KGVudGl0eSk7CisJCX0KKwkJcmV0dXJuIGVudGl0eTsKKwl9CisKKwlwdWJsaWMgdm9pZCBkZWxldGUoQ2hhdE1lc3NhZ2UgZW50aXR5LCBsb25nIHVzZXJJZCkgeworCQkvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIG1ldGhvZCBzdHViCisJCQorCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvY29uZmVyZW5jZS9GZWVkYmFja01hbmFnZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2NvbmZlcmVuY2UvRmVlZGJhY2tNYW5hZ2VyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjc2NGQ1ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2NvbmZlcmVuY2UvRmVlZGJhY2tNYW5hZ2VyLmphdmEKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNvbmZlcmVuY2U7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5GaWVsZE1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5kYW8uQ29uZmlndXJhdGlvbkRhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy50ZW1wbGF0ZXMuRmVlZGJhY2tUZW1wbGF0ZTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5tYWlsLk1haWxIYW5kbGVyOworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5BdXRvd2lyZWQ7CisKK3B1YmxpYyBjbGFzcyBGZWVkYmFja01hbmFnZXIgeworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoCisJCQlGZWVkYmFja01hbmFnZXIuY2xhc3MsIE9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKworCUBBdXRvd2lyZWQKKwlwcml2YXRlIENvbmZpZ3VyYXRpb25EYW8gY29uZmlndXJhdGlvbkRhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBGaWVsZE1hbmFnZXIgZmllbGRNYW5hZ2VyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIE1haWxIYW5kbGVyIG1haWxIYW5kbGVyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEZlZWRiYWNrVGVtcGxhdGUgZmVlZGJhY2tUZW1wbGF0ZTsKKworCXB1YmxpYyBTdHJpbmcgc2VuZEZlZWRiYWNrKFN0cmluZyB1c2VybmFtZSwgU3RyaW5nIGVtYWlsLCBTdHJpbmcgbWVzc2FnZSkgeworCQl0cnkgeworCQkJTG9uZyBkZWZhdWx0X2xhbmdfaWQgPSBjb25maWd1cmF0aW9uRGFvLmdldENvbmZWYWx1ZSgKKwkJCQkJImRlZmF1bHRfbGFuZ19pZCIsIExvbmcuY2xhc3MsICIxIik7CisKKwkJCVN0cmluZyB0ZW1wbGF0ZSA9IGZlZWRiYWNrVGVtcGxhdGUuZ2V0RmVlZEJhY2tUZW1wbGF0ZSh1c2VybmFtZSwKKwkJCQkJZW1haWwsIG1lc3NhZ2UsIGRlZmF1bHRfbGFuZ19pZCk7CisKKwkJCW1haWxIYW5kbGVyLnNlbmQoInVzZXJAb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmciLAorCQkJCQlmaWVsZE1hbmFnZXIuZ2V0U3RyaW5nKDQ5OUwsIGRlZmF1bHRfbGFuZ19pZCksIHRlbXBsYXRlKTsKKwkJCXJldHVybiAic3VjY2VzcyI7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigic2VuZEZlZWRiYWNrIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9jb25mZXJlbmNlL0ludml0YXRpb25NYW5hZ2VyLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9jb25mZXJlbmNlL0ludml0YXRpb25NYW5hZ2VyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2U5MTkxMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2NvbmZlcmVuY2UvSW52aXRhdGlvbk1hbmFnZXIuamF2YQpAQCAtMCwwICsxLDExOTYgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jb25mZXJlbmNlOworCitpbXBvcnQgamF2YS51dGlsLkNhbGVuZGFyOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5UaW1lWm9uZTsKK2ltcG9ydCBqYXZhLnV0aWwuVmVjdG9yOworCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5TWFuYWdlcjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Ob1Jlc3VsdEV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5QZXJzaXN0ZW5jZUNvbnRleHQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVHlwZWRRdWVyeTsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLkF1dGhMZXZlbFV0aWw7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5GaWVsZE1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5kYW8uQ29uZmlndXJhdGlvbkRhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLmRhby5PbVRpbWVab25lRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY2FsZW5kYXIuZGFvcy5BcHBvaW50bWVudERhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNhbGVuZGFyLm1hbmFnZW1lbnQuQXBwb2ludG1lbnRMb2dpYzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNvbmZlcmVuY2UuZGFvLlJvb21EYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLlVzZXJNYW5hZ2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEudXNlci5kYW8uVXNlcnNEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuTWFpbE1lc3NhZ2U7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuT21UaW1lWm9uZTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5jYWxlbmRhci5BcHBvaW50bWVudDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5jYWxlbmRhci5NZWV0aW5nTWVtYmVyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmludml0YXRpb24uSW52aXRhdGlvbnM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMubGFuZy5GaWVsZGxhbmd1YWdlc3ZhbHVlczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlVzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudGVtcGxhdGVzLkludml0YXRpb25UZW1wbGF0ZTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5jcnlwdC5NRDU7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMuY3J5cHQuTWFuYWdlQ3J5cHRTdHlsZTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5tYWlsLkljYWxIYW5kbGVyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLm1haWwuTWFpbEhhbmRsZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMubWF0aC5DYWxlbmRhclBhdHRlcm5zOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLm1hdGguVGltZXpvbmVVdGlsOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLnNtcy5TTVNIYW5kbGVyOworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5BdXRvd2lyZWQ7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay50cmFuc2FjdGlvbi5hbm5vdGF0aW9uLlRyYW5zYWN0aW9uYWw7CisKKy8qKgorICogCisgKiBAYXV0aG9yIHN3YWduZXIKKyAqIAorICovCitAVHJhbnNhY3Rpb25hbAorcHVibGljIGNsYXNzIEludml0YXRpb25NYW5hZ2VyIHsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoCisJCQlJbnZpdGF0aW9uTWFuYWdlci5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCisJQFBlcnNpc3RlbmNlQ29udGV4dAorCXByaXZhdGUgRW50aXR5TWFuYWdlciBlbTsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBBcHBvaW50bWVudExvZ2ljIGFwcG9pbnRtZW50TG9naWM7CisJQEF1dG93aXJlZAorCXByaXZhdGUgQ29uZmlndXJhdGlvbkRhbyBjb25maWd1cmF0aW9uRGFvOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFVzZXJNYW5hZ2VyIHVzZXJNYW5hZ2VyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEZpZWxkTWFuYWdlciBmaWVsZE1hbmFnZXI7CisJQEF1dG93aXJlZAorCXByaXZhdGUgTWFuYWdlQ3J5cHRTdHlsZSBtYW5hZ2VDcnlwdFN0eWxlOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFJvb21EYW8gcm9vbURhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBVc2Vyc0RhbyB1c2Vyc0RhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBNYWlsSGFuZGxlciBtYWlsSGFuZGxlcjsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBTTVNIYW5kbGVyIHNtc0hhbmRsZXI7CisJQEF1dG93aXJlZAorCXByaXZhdGUgSW52aXRhdGlvblRlbXBsYXRlIGludml0YXRpb25UZW1wbGF0ZTsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBBdXRoTGV2ZWxVdGlsIGF1dGhMZXZlbFV0aWw7CisJQEF1dG93aXJlZAorCXByaXZhdGUgVGltZXpvbmVVdGlsIHRpbWV6b25lVXRpbDsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBBcHBvaW50bWVudERhbyBhcHBvaW50bWVudERhb0ltcGw7CisJQEF1dG93aXJlZAorCXByaXZhdGUgT21UaW1lWm9uZURhbyBvbVRpbWVab25lRGFvSW1wbDsKKworCS8qKgorCSAqIFNlbmRpbmcgaW52aXRhdGlvbiB3aXRoaW4gcGxhaW4gbWFpbAorCSAqIAorCSAqIEBwYXJhbSB1c2VyX2xldmVsCisJICogQHBhcmFtIHVzZXJuYW1lCisJICogQHBhcmFtIG1lc3NhZ2UKKwkgKiBAcGFyYW0gYmFzZXVybAorCSAqIEBwYXJhbSBlbWFpbAorCSAqIEBwYXJhbSBzdWJqZWN0CisJICogQHBhcmFtIHJvb21zX2lkCisJICogQHBhcmFtIGNvbmZlcmVuY2Vkb21haW4KKwkgKiBAcGFyYW0gaXNQYXNzd29yZFByb3RlY3RlZAorCSAqIEBwYXJhbSBpbnZpdGF0aW9ucGFzcworCSAqIEBwYXJhbSB2YWxpZAorCSAqIEBwYXJhbSB2YWxpZEZyb20KKwkgKiBAcGFyYW0gdmFsaWRUbworCSAqIEBwYXJhbSBjcmVhdGVkQnkKKwkgKiBAcmV0dXJuCisJICovCisJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJcHVibGljIEludml0YXRpb25zIGFkZEludml0YXRpb25MaW5rKExvbmcgdXNlcl9sZXZlbCwgU3RyaW5nIHVzZXJuYW1lLAorCQkJU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBiYXNldXJsLCBTdHJpbmcgZW1haWwsIFN0cmluZyBzdWJqZWN0LAorCQkJTG9uZyByb29tc19pZCwgU3RyaW5nIGNvbmZlcmVuY2Vkb21haW4sCisJCQlCb29sZWFuIGlzUGFzc3dvcmRQcm90ZWN0ZWQsIFN0cmluZyBpbnZpdGF0aW9ucGFzcywgSW50ZWdlciB2YWxpZCwKKwkJCURhdGUgdmFsaWRGcm9tLCBEYXRlIHZhbGlkVG8sIExvbmcgY3JlYXRlZEJ5LCBTdHJpbmcgYmFzZVVybCwKKwkJCUxvbmcgbGFuZ3VhZ2VfaWQsIEJvb2xlYW4gc2VuZE1haWwsIERhdGUgZ210VGltZVN0YXJ0LAorCQkJRGF0ZSBnbXRUaW1lRW5kLCBMb25nIGFwcG9pbnRtZW50SWQsIFN0cmluZyBmcm9tVXNlckZpZWxkLCBPbVRpbWVab25lIG9tVGltZVpvbmUpIHsKKwkJdHJ5IHsKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrVXNlckxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlJbnZpdGF0aW9ucyBpbnZpdGF0aW9uID0gbmV3IEludml0YXRpb25zKCk7CisJCQkJaW52aXRhdGlvbi5zZXRJc1Bhc3N3b3JkUHJvdGVjdGVkKGlzUGFzc3dvcmRQcm90ZWN0ZWQpOworCQkJCWlmIChpc1Bhc3N3b3JkUHJvdGVjdGVkKSB7CisJCQkJCWludml0YXRpb24uc2V0SW52aXRhdGlvbnBhc3MobWFuYWdlQ3J5cHRTdHlsZQorCQkJCQkJCS5nZXRJbnN0YW5jZU9mQ3J5cHQoKS5jcmVhdGVQYXNzUGhyYXNlKAorCQkJCQkJCQkJaW52aXRhdGlvbnBhc3MpKTsKKwkJCQl9CisKKwkJCQlpbnZpdGF0aW9uLnNldEludml0YXRpb25XYXNVc2VkKGZhbHNlKTsKKwkJCQlsb2cuZGVidWcoYmFzZVVybCk7CisJCQkJaW52aXRhdGlvbi5zZXRCYXNlVXJsKGJhc2VVcmwpOworCQkJCWludml0YXRpb24uc2V0T21UaW1lWm9uZShvbVRpbWVab25lKTsKKworCQkJCS8vIHZhbGlkIHBlcmlvZCBvZiBJbnZpdGF0aW9uCisJCQkJaWYgKHZhbGlkID09IDEpIHsKKwkJCQkJLy8gZW5kbGVzcworCQkJCQlpbnZpdGF0aW9uLnNldElzVmFsaWRCeVRpbWUoZmFsc2UpOworCQkJCQlpbnZpdGF0aW9uLnNldENhbkJlVXNlZE9ubHlPbmVUaW1lKGZhbHNlKTsKKwkJCQl9IGVsc2UgaWYgKHZhbGlkID09IDIpIHsKKwkJCQkJLy8gcGVyaW9kCisJCQkJCWludml0YXRpb24uc2V0SXNWYWxpZEJ5VGltZSh0cnVlKTsKKwkJCQkJaW52aXRhdGlvbi5zZXRDYW5CZVVzZWRPbmx5T25lVGltZShmYWxzZSk7CisKKwkJCQkJRGF0ZSBnbXRUaW1lU3RhcnRTaGlmdGVkID0gbmV3IERhdGUoZ210VGltZVN0YXJ0LmdldFRpbWUoKQorCQkJCQkJCS0gKDUgKiA2MCAqIDEwMDApKTsKKworCQkJCQlpbnZpdGF0aW9uLnNldFZhbGlkRnJvbShnbXRUaW1lU3RhcnRTaGlmdGVkKTsKKwkJCQkJaW52aXRhdGlvbi5zZXRWYWxpZFRvKGdtdFRpbWVFbmQpOworCisJCQkJCS8vIGludml0YXRpb24uc2V0VmFsaWRGcm9tKHZhbGlkRnJvbSk7CisJCQkJCS8vIGludml0YXRpb24uc2V0VmFsaWRUbyh2YWxpZFRvKTsKKwkJCQl9IGVsc2UgeworCQkJCQkvLyBvbmUtdGltZQorCQkJCQlpbnZpdGF0aW9uLnNldElzVmFsaWRCeVRpbWUoZmFsc2UpOworCQkJCQlpbnZpdGF0aW9uLnNldENhbkJlVXNlZE9ubHlPbmVUaW1lKHRydWUpOworCQkJCQlpbnZpdGF0aW9uLnNldEludml0YXRpb25XYXNVc2VkKGZhbHNlKTsKKwkJCQl9CisKKwkJCQlpbnZpdGF0aW9uLnNldERlbGV0ZWQoZmFsc2UpOworCisJCQkJVXNlciB1cyA9IHVzZXJzRGFvLmdldChjcmVhdGVkQnkpOworCQkJCVN0cmluZyBoYXNoUmF3ID0gIkhBU0giICsgKFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpKTsKKwkJCQlpbnZpdGF0aW9uLnNldEhhc2goTUQ1LmRvX2NoZWNrc3VtKGhhc2hSYXcpKTsKKworCQkJCWludml0YXRpb24uc2V0SW52aXRlZEJ5KHVzKTsKKwkJCQlpbnZpdGF0aW9uLnNldEludml0ZWRuYW1lKHVzZXJuYW1lKTsKKwkJCQlpbnZpdGF0aW9uLnNldEludml0ZWRFTWFpbChlbWFpbCk7CisJCQkJaW52aXRhdGlvbi5zZXRSb29tKHJvb21EYW8uZ2V0KHJvb21zX2lkKSk7CisJCQkJaW52aXRhdGlvbi5zZXRDb25mZXJlbmNlZG9tYWluKGNvbmZlcmVuY2Vkb21haW4pOworCQkJCWludml0YXRpb24uc2V0U3RhcnR0aW1lKG5ldyBEYXRlKCkpOworCQkJCWludml0YXRpb24uc2V0QXBwb2ludG1lbnRJZChhcHBvaW50bWVudElkKTsKKworCQkJCWludml0YXRpb24gPSBlbS5tZXJnZShpbnZpdGF0aW9uKTsKKwkJCQlsb25nIGludml0YXRpb25JZCA9IGludml0YXRpb24uZ2V0SW52aXRhdGlvbnNfaWQoKTsKKworCQkJCWludml0YXRpb24uc2V0SW52aXRhdGlvbnNfaWQoaW52aXRhdGlvbklkKTsKKworCQkJCWlmIChpbnZpdGF0aW9uSWQgPiAwKSB7CisKKwkJCQkJaWYgKHNlbmRNYWlsKSB7CisJCQkJCQl0aGlzLnNlbmRJbnZpdGlvbkxpbmsodXMuZ2V0QWRyZXNzZXMoKS5nZXRFbWFpbCgpLCAKKwkJCQkJCQkJdXNlcm5hbWUsIG1lc3NhZ2UsIGJhc2V1cmwsCisJCQkJCQkJCWVtYWlsLCBzdWJqZWN0LCBpbnZpdGF0aW9uLmdldEhhc2goKSwKKwkJCQkJCQkJdmFsaWRGcm9tLCB2YWxpZFRvLCBsYW5ndWFnZV9pZCwgZnJvbVVzZXJGaWVsZCk7CisJCQkJCX0KKworCQkJCQlyZXR1cm4gaW52aXRhdGlvbjsKKwkJCQl9CisKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJhZGRJbnZpdGF0aW9uTGluayIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJLyoqCisJICogQGF1dGhvciBiZWNoZXJlcgorCSAqIEBwYXJhbSBtZW50CisJICogQHBhcmFtIG1lbWJlcgorCSAqLworCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJcHVibGljIHZvaWQgY2FuY2VsSW52aXRhdGlvbihBcHBvaW50bWVudCBhcHBvaW50bWVudCwgTWVldGluZ01lbWJlciBtZW1iZXIsCisJCQlMb25nIGNhbmNlbGluZ191c2VyX2lkLCBMb25nIGxhbmd1YWdlX2lkKSB7CisKKwkJbG9nLmRlYnVnKCJjYW5jZWxJbnZpdGF0aW9uIik7CisKKwkJVXNlciB1c2VyOworCisJCXRyeSB7CisJCQl1c2VyID0gdXNlck1hbmFnZXIuZ2V0VXNlckJ5SWQoY2FuY2VsaW5nX3VzZXJfaWQpOworCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJbG9nLmVycm9yKCJjYW5jZWxJbnZpdGF0aW9uIENhbmNlbGxpbmcgdXNlciBjYW50IGJlIHJldHJpZXZlZCIsIGUpOworCQkJcmV0dXJuOworCQl9CisKKwkJaWYgKGFwcG9pbnRtZW50LmdldFJlbWluZCgpID09IG51bGwpIHsKKwkJCWxvZy5lcnJvcigiQXBwb2ludG1lbnQgIiArIGFwcG9pbnRtZW50LmdldEFwcG9pbnRtZW50TmFtZSgpCisJCQkJCSsgIiBoYXMgbm8gUmVtaW5kZXJUeXBlISIpOworCQkJcmV0dXJuOworCQl9CisKKwkJVXNlciB1cyA9IG1lbWJlci5nZXRVc2VyaWQoKTsKKwkJVGltZVpvbmUgdGltZXpvbmUgPSBudWxsOworCQkvLyBleHRlcm5hbCB1c2VycyBoYXZlIG5vIHVzZXIgb2JqZWN0IHN0b3JlZCBzbyB3ZSB3aWxsIG5lZWQgdG8gZ2V0IHRoZQorCQkvLyB0aW1lem9uZSBmcm9tIHRoZSBzdG9yZWQgc3RyaW5nCisJCWlmICh1cyAhPSBudWxsKSB7CisJCQl0aW1lem9uZSA9IHRpbWV6b25lVXRpbC5nZXRUaW1lem9uZUJ5VXNlcih1cyk7CisJCX0gZWxzZSB7CisJCQl0aW1lem9uZSA9IHRpbWV6b25lVXRpbC5nZXRUaW1lem9uZUJ5SW50ZXJuYWxKTmFtZShtZW1iZXIKKwkJCQkJLmdldE9tVGltZVpvbmUoKS5nZXRKbmFtZSgpKTsKKwkJfQorCisJCVN0cmluZyBzdWJqZWN0ID0gZm9ybWF0Q2FuY2VsU3ViamVjdChsYW5ndWFnZV9pZCwgYXBwb2ludG1lbnQsIHVzZXIsCisJCQkJdGltZXpvbmUpOworCQlTdHJpbmcgbWVzc2FnZSA9IGZvcm1hdENhbmNlbE1lc3NhZ2UobGFuZ3VhZ2VfaWQsIGFwcG9pbnRtZW50LCB1c2VyLAorCQkJCXRpbWV6b25lKTsKKworCQkvLyBjaGVja2luZyByZW1pbmRlclR5cGUKKwkJaWYgKGFwcG9pbnRtZW50LmdldFJlbWluZCgpLmdldFR5cElkKCkgPT0gMSkgeworCQkJbG9nLmRlYnVnKCJubyByZW1pbmRlcnR5cGUgZGVmaW5lZCAtPiBubyBjYW5jZWwgb2YgaW52aXRhdGlvbiIpOworCQl9IGVsc2UgaWYgKGFwcG9pbnRtZW50LmdldFJlbWluZCgpLmdldFR5cElkKCkgPT0gMikgeworCQkJbG9nLmRlYnVnKCJSZW1pbmRlclR5cGUgc2ltcGxlIG1haWwgLT4gc2VuZGluZyBzaW1wbGUgbWFpbC4uLiIpOworCQkJc2VuZEludml0YXRpb25DYW5jZWxNYWlsKG1lbWJlci5nZXRFbWFpbCgpLAorCQkJCQltZW1iZXIuZ2V0QXBwb2ludG1lbnQoKSwgdXNlci5nZXRBZHJlc3NlcygpLmdldEVtYWlsKCksCisJCQkJCXN1YmplY3QsIG1lc3NhZ2UpOworCQl9IGVsc2UgaWYgKGFwcG9pbnRtZW50LmdldFJlbWluZCgpLmdldFR5cElkKCkgPT0gMykgeworCQkJdHJ5IHsKKwkJCQlzZW5kSW52aXRhdGlvbkljYWxDYW5jZWxNYWlsKG1lbWJlci5nZXRFbWFpbCgpLAorCQkJCQkJbWVtYmVyLmdldEZpcnN0bmFtZSgpICsgIiAiICsgbWVtYmVyLmdldExhc3RuYW1lKCksCisJCQkJCQlhcHBvaW50bWVudCwgY2FuY2VsaW5nX3VzZXJfaWQsIG1lbWJlci5nZXRJbnZpdG9yKCksCisJCQkJCQlhcHBvaW50bWVudC5nZXRBcHBvaW50bWVudFN0YXJ0dGltZSgpLAorCQkJCQkJYXBwb2ludG1lbnQuZ2V0QXBwb2ludG1lbnRFbmR0aW1lKCksIHRpbWV6b25lLCBzdWJqZWN0LAorCQkJCQkJbWVzc2FnZSk7CisJCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJCWxvZy5lcnJvcigiRXJyb3Igc2VuZGluZyBJY2FsQ2FuY2VsTWFpbCBmb3IgVXNlciAiCisJCQkJCQkrIG1lbWJlci5nZXRFbWFpbCgpICsgIiA6ICIgKyBlLmdldE1lc3NhZ2UoKSk7CisJCQkJbG9nLmVycm9yKCJbY2FuY2VsSW52aXRhdGlvbl0iLCBlKTsKKwkJCX0KKwkJfQorCisJCS8vIERlbGV0aW5nIGludml0YXRpb24sIGlmIGV4aXN0cworCQlJbnZpdGF0aW9ucyBpbnYgPSBtZW1iZXIuZ2V0SW52aXRhdGlvbigpOworCisJCWlmIChpbnYgIT0gbnVsbCkgeworCQkJaW52LnNldERlbGV0ZWQodHJ1ZSk7CisJCQl1cGRhdGVJbnZpdGF0aW9uKGludik7CisJCX0KKworCX0KKworCXByaXZhdGUgU3RyaW5nIGZvcm1hdENhbmNlbFN1YmplY3QoTG9uZyBsYW5ndWFnZV9pZCwKKwkJCUFwcG9pbnRtZW50IGFwcG9pbnRtZW50LCBVc2VyIHVzZXIsIFRpbWVab25lIHRpbWV6b25lKSB7CisJCXRyeSB7CisJCQlTdHJpbmcgbWVzc2FnZSA9IGZpZWxkTWFuYWdlci5nZXRTdHJpbmcoMTE1N0wsIGxhbmd1YWdlX2lkKQorCQkJCQkrIGFwcG9pbnRtZW50LmdldEFwcG9pbnRtZW50TmFtZSgpOworCisJCQltZXNzYWdlICs9ICIgIgorCQkJCQkrIENhbGVuZGFyUGF0dGVybnMuZ2V0RGF0ZVdpdGhUaW1lQnlNaWxpU2Vjb25kc0FuZFRpbWVab25lKAorCQkJCQkJCWFwcG9pbnRtZW50LmdldEFwcG9pbnRtZW50U3RhcnR0aW1lKCksIHRpbWV6b25lKQorCQkJCQkrICIgLSAiCisJCQkJCSsgQ2FsZW5kYXJQYXR0ZXJucy5nZXREYXRlV2l0aFRpbWVCeU1pbGlTZWNvbmRzQW5kVGltZVpvbmUoCisJCQkJCQkJYXBwb2ludG1lbnQuZ2V0QXBwb2ludG1lbnRFbmR0aW1lKCksIHRpbWV6b25lKTsKKworCQkJcmV0dXJuIG1lc3NhZ2U7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiQ291bGQgbm90IGZvcm1hdCBjYW5jZWwgbWVzc2FnZSIsIGVycik7CisJCQlyZXR1cm4gIkVycm9yIGZvcm1hdENhbmNlbE1lc3NhZ2UiOworCQl9CisJfQorCisJcHJpdmF0ZSBTdHJpbmcgZm9ybWF0Q2FuY2VsTWVzc2FnZShMb25nIGxhbmd1YWdlX2lkLAorCQkJQXBwb2ludG1lbnQgYXBwb2ludG1lbnQsIFVzZXIgdXNlciwgVGltZVpvbmUgdGltZXpvbmUpIHsKKwkJdHJ5IHsKKwkJCVN0cmluZyBtZXNzYWdlID0gZmllbGRNYW5hZ2VyLmdldFN0cmluZygxMTU3TCwgbGFuZ3VhZ2VfaWQpCisJCQkJCSsgYXBwb2ludG1lbnQuZ2V0QXBwb2ludG1lbnROYW1lKCk7CisKKwkJCWlmIChhcHBvaW50bWVudC5nZXRBcHBvaW50bWVudERlc2NyaXB0aW9uKCkubGVuZ3RoKCkgIT0gMCkgeworCisJCQkJRmllbGRsYW5ndWFnZXN2YWx1ZXMgbGFiZWxpZDExNTIgPSBmaWVsZE1hbmFnZXIKKwkJCQkJCS5nZXRGaWVsZEJ5SWRBbmRMYW5ndWFnZShuZXcgTG9uZygxMTUyKSwgbGFuZ3VhZ2VfaWQpOworCQkJCW1lc3NhZ2UgKz0gbGFiZWxpZDExNTIuZ2V0VmFsdWUoKQorCQkJCQkJKyBhcHBvaW50bWVudC5nZXRBcHBvaW50bWVudERlc2NyaXB0aW9uKCk7CisKKwkJCX0KKworCQkJRmllbGRsYW5ndWFnZXN2YWx1ZXMgbGFiZWxpZDExNTMgPSBmaWVsZE1hbmFnZXIKKwkJCQkJLmdldEZpZWxkQnlJZEFuZExhbmd1YWdlKG5ldyBMb25nKDExNTMpLCBsYW5ndWFnZV9pZCk7CisJCQlGaWVsZGxhbmd1YWdlc3ZhbHVlcyBsYWJlbGlkMTE1NCA9IGZpZWxkTWFuYWdlcgorCQkJCQkuZ2V0RmllbGRCeUlkQW5kTGFuZ3VhZ2UobmV3IExvbmcoMTE1NCksIGxhbmd1YWdlX2lkKTsKKworCQkJbWVzc2FnZSArPSAiPGJyLz4iCisJCQkJCSsgbGFiZWxpZDExNTMuZ2V0VmFsdWUoKQorCQkJCQkrICcgJworCQkJCQkrIENhbGVuZGFyUGF0dGVybnMuZ2V0RGF0ZVdpdGhUaW1lQnlNaWxpU2Vjb25kc0FuZFRpbWVab25lKAorCQkJCQkJCWFwcG9pbnRtZW50LmdldEFwcG9pbnRtZW50U3RhcnR0aW1lKCksIHRpbWV6b25lKQorCQkJCQkrICI8YnIvPiI7CisKKwkJCW1lc3NhZ2UgKz0gbGFiZWxpZDExNTQuZ2V0VmFsdWUoKQorCQkJCQkrICcgJworCQkJCQkrIENhbGVuZGFyUGF0dGVybnMuZ2V0RGF0ZVdpdGhUaW1lQnlNaWxpU2Vjb25kc0FuZFRpbWVab25lKAorCQkJCQkJCWFwcG9pbnRtZW50LmdldEFwcG9pbnRtZW50RW5kdGltZSgpLCB0aW1lem9uZSkKKwkJCQkJKyAiPGJyLz4iOworCisJCQlTdHJpbmcgaW52aXRvck5hbWUgPSB1c2VyLmdldEZpcnN0bmFtZSgpICsgIiAiICsgdXNlci5nZXRMYXN0bmFtZSgpCisJCQkJCSsgIiBbIiArIHVzZXIuZ2V0QWRyZXNzZXMoKS5nZXRFbWFpbCgpICsgIl0iOworCisJCQlGaWVsZGxhbmd1YWdlc3ZhbHVlcyBsYWJlbGlkMTE1NiA9IGZpZWxkTWFuYWdlcgorCQkJCQkuZ2V0RmllbGRCeUlkQW5kTGFuZ3VhZ2UobmV3IExvbmcoMTE1NiksIGxhbmd1YWdlX2lkKTsKKwkJCW1lc3NhZ2UgKz0gbGFiZWxpZDExNTYuZ2V0VmFsdWUoKSArIGludml0b3JOYW1lICsgIjxici8+IjsKKworCQkJcmV0dXJuIG1lc3NhZ2U7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiQ291bGQgbm90IGZvcm1hdCBjYW5jZWwgbWVzc2FnZSIsIGVycik7CisJCQlyZXR1cm4gIkVycm9yIGZvcm1hdENhbmNlbE1lc3NhZ2UiOworCQl9CisJfQorCisJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCS8qKgorCSAqIEBhdXRob3IgYmVjaGVyZXIsIHNlYmEud2FnbmVyCisJICogQHBhcmFtIG1lbnQKKwkgKiBAcGFyYW0gbWVtYmVyCisJICovCisJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlwdWJsaWMgdm9pZCB1cGRhdGVJbnZpdGF0aW9uKEFwcG9pbnRtZW50IGFwcG9pbnRtZW50LCBNZWV0aW5nTWVtYmVyIG1lbWJlciwKKwkJCUxvbmcgY2FuY2VsaW5nX3VzZXJfaWQsIExvbmcgbGFuZ3VhZ2VfaWQsIFN0cmluZyBpbnZpdG9yTmFtZSwgYm9vbGVhbiBzZW5kTWFpbCkgeworCisJCWxvZy5kZWJ1ZygidXBkYXRlSW52aXRhdGlvbiIpOworCisJCVVzZXIgdXNlciA9IHVzZXJNYW5hZ2VyLmdldFVzZXJCeUlkKGNhbmNlbGluZ191c2VyX2lkKTsKKwkJaWYgKHVzZXIgPT0gbnVsbCkgeworCQkJbG9nLmVycm9yKCJDYW5jZWxsaW5nIHVzZXIgY2FudCBiZSByZXRyaWV2ZWQiKTsKKwkJCXJldHVybjsKKwkJfQorCisJCWlmIChhcHBvaW50bWVudC5nZXRSZW1pbmQoKSA9PSBudWxsKSB7CisJCQlsb2cuZXJyb3IoIkFwcG9pbnRtZW50ICIgKyBhcHBvaW50bWVudC5nZXRBcHBvaW50bWVudE5hbWUoKQorCQkJCQkrICIgaGFzIG5vIFJlbWluZGVyVHlwZSEiKTsKKwkJCXJldHVybjsKKwkJfQorCisJCWxvZy5kZWJ1ZygiUmVtaW5kZXJ0eXBlIDogIiArIGFwcG9pbnRtZW50LmdldFJlbWluZCgpLmdldFR5cElkKCkpOworCisJCVVzZXIgdXMgPSBtZW1iZXIuZ2V0VXNlcmlkKCk7CisJCVRpbWVab25lIHRpbWV6b25lID0gbnVsbDsKKwkJLy8gZXh0ZXJuYWwgdXNlcnMgaGF2ZSBubyB1c2VyIG9iamVjdCBzdG9yZWQgc28gd2Ugd2lsbCBuZWVkIHRvIGdldCB0aGUKKwkJLy8gdGltZXpvbmUgZnJvbSB0aGUgc3RvcmVkIHN0cmluZworCQlpZiAodXMgIT0gbnVsbCkgeworCQkJdGltZXpvbmUgPSB0aW1lem9uZVV0aWwuZ2V0VGltZXpvbmVCeVVzZXIodXMpOworCQl9IGVsc2UgeworCQkJdGltZXpvbmUgPSB0aW1lem9uZVV0aWwuZ2V0VGltZXpvbmVCeUludGVybmFsSk5hbWUobWVtYmVyCisJCQkJCS5nZXRPbVRpbWVab25lKCkuZ2V0Sm5hbWUoKSk7CisJCX0KKworCQkvLyBHZXQgdGV4dCBtZXNzYWdlcworCQlTdHJpbmcgc3ViamVjdCA9IGZvcm1hdFVwZGF0ZVN1YmplY3QobGFuZ3VhZ2VfaWQsIGFwcG9pbnRtZW50LCB1c2VyLAorCQkJCXRpbWV6b25lKTsKKworCQlTdHJpbmcgbWVzc2FnZSA9IGZvcm1hdFVwZGF0ZU1lc3NhZ2UobGFuZ3VhZ2VfaWQsIGFwcG9pbnRtZW50LCB1c2VyLAorCQkJCXRpbWV6b25lLCBpbnZpdG9yTmFtZSk7CisKKwkJLy8gY2hlY2tpbmcgcmVtaW5kZXJUeXBlIGFuZCBzZW5kIGVtYWlscywgcmVtaW5kZXIgdHlwZSAxIHJlY2VpdmVzCisJCS8vIG5vdGhpbmcKKwkJaWYgKHNlbmRNYWlsKSB7CisJCWlmIChhcHBvaW50bWVudC5nZXRSZW1pbmQoKS5nZXRUeXBJZCgpID09IDIpIHsKKwkJCXNlbmRJbnZpdGF0aW9uVXBkYXRlTWFpbChtZW1iZXIuZ2V0RW1haWwoKSwgYXBwb2ludG1lbnQsIHVzZXIKKwkJCQkJLmdldEFkcmVzc2VzKCkuZ2V0RW1haWwoKSwgc3ViamVjdCwgbWVzc2FnZSk7CisJCX0gZWxzZSBpZiAoYXBwb2ludG1lbnQuZ2V0UmVtaW5kKCkuZ2V0VHlwSWQoKSA9PSAzKSB7CisJCQl0cnkgeworCQkJCXNlbmRJbnZpdGF0aW9uSWNhbFVwZGF0ZU1haWwobWVtYmVyLmdldEVtYWlsKCksCisJCQkJCQltZW1iZXIuZ2V0Rmlyc3RuYW1lKCkgKyAiICIgKyBtZW1iZXIuZ2V0TGFzdG5hbWUoKSwKKwkJCQkJCWFwcG9pbnRtZW50LCBjYW5jZWxpbmdfdXNlcl9pZCwgbWVtYmVyLmdldEludml0b3IoKSwKKwkJCQkJCWxhbmd1YWdlX2lkLCBhcHBvaW50bWVudC5nZXRBcHBvaW50bWVudFN0YXJ0dGltZSgpLAorCQkJCQkJYXBwb2ludG1lbnQuZ2V0QXBwb2ludG1lbnRFbmR0aW1lKCksIHRpbWV6b25lLCBzdWJqZWN0LAorCQkJCQkJbWVzc2FnZSk7CisJCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJCWxvZy5lcnJvcigiRXJyb3Igc2VuZGluZyBJY2FsVXBkYXRlTWFpbCBmb3IgVXNlciAiCisJCQkJCQkrIG1lbWJlci5nZXRFbWFpbCgpICsgIiA6ICIgKyBlLmdldE1lc3NhZ2UoKSk7CisJCQkJbG9nLmVycm9yKCJbdXBkYXRlSW52aXRhdGlvbl0iLCBlKTsKKwkJCX0KKwkJfQorCQl9CisKKwl9CisKKwlwcml2YXRlIFN0cmluZyBmb3JtYXRVcGRhdGVTdWJqZWN0KExvbmcgbGFuZ3VhZ2VfaWQsCisJCQlBcHBvaW50bWVudCBhcHBvaW50bWVudCwgVXNlciB1c2VyLCBUaW1lWm9uZSB0aW1lem9uZSkgeworCQl0cnkgeworCisJCQlTdHJpbmcgbWVzc2FnZSA9IGZpZWxkTWFuYWdlci5nZXRTdHJpbmcoMTE1NUwsIGxhbmd1YWdlX2lkKSArICIgIgorCQkJCQkrIGFwcG9pbnRtZW50LmdldEFwcG9pbnRtZW50TmFtZSgpOworCisJCQlpZiAoYXBwb2ludG1lbnQuZ2V0QXBwb2ludG1lbnREZXNjcmlwdGlvbigpLmxlbmd0aCgpICE9IDApIHsKKworCQkJCUZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGxhYmVsaWQxMTUyID0gZmllbGRNYW5hZ2VyCisJCQkJCQkuZ2V0RmllbGRCeUlkQW5kTGFuZ3VhZ2UobmV3IExvbmcoMTE1MiksIGxhbmd1YWdlX2lkKTsKKwkJCQltZXNzYWdlICs9IGxhYmVsaWQxMTUyLmdldFZhbHVlKCkKKwkJCQkJCSsgYXBwb2ludG1lbnQuZ2V0QXBwb2ludG1lbnREZXNjcmlwdGlvbigpOworCisJCQl9CisKKwkJCW1lc3NhZ2UgKz0gIiAiCisJCQkJCSsgQ2FsZW5kYXJQYXR0ZXJucy5nZXREYXRlV2l0aFRpbWVCeU1pbGlTZWNvbmRzQW5kVGltZVpvbmUoCisJCQkJCQkJYXBwb2ludG1lbnQuZ2V0QXBwb2ludG1lbnRTdGFydHRpbWUoKSwgdGltZXpvbmUpCisJCQkJCSsgIiAtICIKKwkJCQkJKyBDYWxlbmRhclBhdHRlcm5zLmdldERhdGVXaXRoVGltZUJ5TWlsaVNlY29uZHNBbmRUaW1lWm9uZSgKKwkJCQkJCQlhcHBvaW50bWVudC5nZXRBcHBvaW50bWVudEVuZHRpbWUoKSwgdGltZXpvbmUpOworCisJCQlyZXR1cm4gbWVzc2FnZTsKKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIkNvdWxkIG5vdCBmb3JtYXQgdXBkYXRlIHN1YmplY3QiLCBlcnIpOworCQkJcmV0dXJuICJFcnJvciBmb3JtYXRVcGRhdGVTdWJqZWN0IjsKKwkJfQorCX0KKworCXByaXZhdGUgU3RyaW5nIGZvcm1hdFVwZGF0ZU1lc3NhZ2UoTG9uZyBsYW5ndWFnZV9pZCwKKwkJCUFwcG9pbnRtZW50IGFwcG9pbnRtZW50LCBVc2VyIHVzZXIsIFRpbWVab25lIHRpbWV6b25lLAorCQkJU3RyaW5nIGludml0b3JOYW1lKSB7CisJCXRyeSB7CisKKwkJCVN0cmluZyBtZXNzYWdlID0gZmllbGRNYW5hZ2VyLmdldFN0cmluZygxMTU1TCwgbGFuZ3VhZ2VfaWQpICsgIiAiCisJCQkJCSsgYXBwb2ludG1lbnQuZ2V0QXBwb2ludG1lbnROYW1lKCk7CisKKwkJCWlmIChhcHBvaW50bWVudC5nZXRBcHBvaW50bWVudERlc2NyaXB0aW9uKCkubGVuZ3RoKCkgIT0gMCkgeworCisJCQkJRmllbGRsYW5ndWFnZXN2YWx1ZXMgbGFiZWxpZDExNTIgPSBmaWVsZE1hbmFnZXIKKwkJCQkJCS5nZXRGaWVsZEJ5SWRBbmRMYW5ndWFnZShuZXcgTG9uZygxMTUyKSwgbGFuZ3VhZ2VfaWQpOworCQkJCW1lc3NhZ2UgKz0gbGFiZWxpZDExNTIuZ2V0VmFsdWUoKQorCQkJCQkJKyBhcHBvaW50bWVudC5nZXRBcHBvaW50bWVudERlc2NyaXB0aW9uKCk7CisKKwkJCX0KKworCQkJRmllbGRsYW5ndWFnZXN2YWx1ZXMgbGFiZWxpZDExNTMgPSBmaWVsZE1hbmFnZXIKKwkJCQkJLmdldEZpZWxkQnlJZEFuZExhbmd1YWdlKDExNTNMLCBsYW5ndWFnZV9pZCk7CisJCQlGaWVsZGxhbmd1YWdlc3ZhbHVlcyBsYWJlbGlkMTE1NCA9IGZpZWxkTWFuYWdlcgorCQkJCQkuZ2V0RmllbGRCeUlkQW5kTGFuZ3VhZ2UoMTE1NEwsIGxhbmd1YWdlX2lkKTsKKworCQkJbWVzc2FnZSArPSAiPGJyLz4iCisJCQkJCSsgbGFiZWxpZDExNTMuZ2V0VmFsdWUoKQorCQkJCQkrICcgJworCQkJCQkrIENhbGVuZGFyUGF0dGVybnMuZ2V0RGF0ZVdpdGhUaW1lQnlNaWxpU2Vjb25kc0FuZFRpbWVab25lKAorCQkJCQkJCWFwcG9pbnRtZW50LmdldEFwcG9pbnRtZW50U3RhcnR0aW1lKCksIHRpbWV6b25lKQorCQkJCQkrICI8YnIvPiI7CisKKwkJCW1lc3NhZ2UgKz0gbGFiZWxpZDExNTQuZ2V0VmFsdWUoKQorCQkJCQkrICcgJworCQkJCQkrIENhbGVuZGFyUGF0dGVybnMuZ2V0RGF0ZVdpdGhUaW1lQnlNaWxpU2Vjb25kc0FuZFRpbWVab25lKAorCQkJCQkJCWFwcG9pbnRtZW50LmdldEFwcG9pbnRtZW50RW5kdGltZSgpLCB0aW1lem9uZSkKKwkJCQkJKyAiPGJyLz4iOworCisJCQlGaWVsZGxhbmd1YWdlc3ZhbHVlcyBsYWJlbGlkMTE1NiA9IGZpZWxkTWFuYWdlcgorCQkJCQkuZ2V0RmllbGRCeUlkQW5kTGFuZ3VhZ2UobmV3IExvbmcoMTE1NiksIGxhbmd1YWdlX2lkKTsKKwkJCW1lc3NhZ2UgKz0gbGFiZWxpZDExNTYuZ2V0VmFsdWUoKSArIGludml0b3JOYW1lICsgIjxici8+IjsKKworCQkJcmV0dXJuIG1lc3NhZ2U7CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJDb3VsZCBub3QgZm9ybWF0IHVwZGF0ZSBtZXNzYWdlIiwgZXJyKTsKKwkJCXJldHVybiAiRXJyb3IgZm9ybWF0VXBkYXRlTWVzc2FnZSI7CisJCX0KKwl9CisKKwkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJLyoqCisJICogQGF1dGhvciBvLmJlY2hlcmVyCisJICogQHBhcmFtIHVzZXJfbGV2ZWwKKwkgKiBAcGFyYW0gdXNlcm5hbWUKKwkgKiBAcGFyYW0gbWVzc2FnZQorCSAqIEBwYXJhbSBiYXNldXJsCisJICogQHBhcmFtIGVtYWlsCisJICogQHBhcmFtIHN1YmplY3QKKwkgKiBAcGFyYW0gcm9vbXNfaWQKKwkgKiBAcGFyYW0gY29uZmVyZW5jZWRvbWFpbgorCSAqIEBwYXJhbSBpc1Bhc3N3b3JkUHJvdGVjdGVkCisJICogQHBhcmFtIGludml0YXRpb25wYXNzCisJICogQHBhcmFtIHZhbGlkCisJICogQHBhcmFtIHZhbGlkRnJvbQorCSAqIEBwYXJhbSB2YWxpZFRvCisJICogQHBhcmFtIGNyZWF0ZWRCeQorCSAqIEByZXR1cm4KKwkgKi8KKwkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlwdWJsaWMgTG9uZyBhZGRJbnZpdGF0aW9uSWNhbExpbmsoTG9uZyB1c2VyX2xldmVsLCBTdHJpbmcgdXNlcm5hbWUsCisJCQlTdHJpbmcgbWVzc2FnZSwgU3RyaW5nIGJhc2V1cmwsIFN0cmluZyBlbWFpbCwgU3RyaW5nIHN1YmplY3QsCisJCQlMb25nIHJvb21zX2lkLCBTdHJpbmcgY29uZmVyZW5jZWRvbWFpbiwKKwkJCUJvb2xlYW4gaXNQYXNzd29yZFByb3RlY3RlZCwgU3RyaW5nIGludml0YXRpb25wYXNzLCBJbnRlZ2VyIHZhbGlkLAorCQkJRGF0ZSB2YWxpZEZyb20sIERhdGUgdmFsaWRUbywgTG9uZyBjcmVhdGVkQnksIExvbmcgYXBwb2ludE1lbnRJZCwKKwkJCUJvb2xlYW4gaW52aXRvciwgTG9uZyBsYW5ndWFnZV9pZCwgVGltZVpvbmUgdGltZXpvbmUsCisJCQlMb25nIGFwcG9pbnRtZW50SWQsIFN0cmluZyBmcm9tVXNlckZpZWxkKSB7CisJCWxvZy5kZWJ1ZygiYWRkSW52aXRhdGlvbkljYWxMaW5rIik7CisKKwkJdHJ5IHsKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrVXNlckxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlJbnZpdGF0aW9ucyBpbnZpdGF0aW9uID0gbmV3IEludml0YXRpb25zKCk7CisJCQkJaW52aXRhdGlvbi5zZXRJc1Bhc3N3b3JkUHJvdGVjdGVkKGlzUGFzc3dvcmRQcm90ZWN0ZWQpOworCQkJCWlmIChpc1Bhc3N3b3JkUHJvdGVjdGVkKSB7CisJCQkJCWludml0YXRpb24uc2V0SW52aXRhdGlvbnBhc3MobWFuYWdlQ3J5cHRTdHlsZQorCQkJCQkJCS5nZXRJbnN0YW5jZU9mQ3J5cHQoKS5jcmVhdGVQYXNzUGhyYXNlKAorCQkJCQkJCQkJaW52aXRhdGlvbnBhc3MpKTsKKwkJCQl9CisKKwkJCQlpbnZpdGF0aW9uLnNldEludml0YXRpb25XYXNVc2VkKGZhbHNlKTsKKworCQkJCS8vIHZhbGlkIHBlcmlvZCBvZiBJbnZpdGF0aW9uCisJCQkJaWYgKHZhbGlkID09IDEpIHsKKwkJCQkJLy8gZW5kbGVzcworCQkJCQlpbnZpdGF0aW9uLnNldElzVmFsaWRCeVRpbWUoZmFsc2UpOworCQkJCQlpbnZpdGF0aW9uLnNldENhbkJlVXNlZE9ubHlPbmVUaW1lKGZhbHNlKTsKKwkJCQl9IGVsc2UgaWYgKHZhbGlkID09IDIpIHsKKwkJCQkJLy8gcGVyaW9kCisJCQkJCWludml0YXRpb24uc2V0SXNWYWxpZEJ5VGltZSh0cnVlKTsKKwkJCQkJaW52aXRhdGlvbi5zZXRDYW5CZVVzZWRPbmx5T25lVGltZShmYWxzZSk7CisJCQkJCWludml0YXRpb24uc2V0VmFsaWRGcm9tKHZhbGlkRnJvbSk7CisJCQkJCWludml0YXRpb24uc2V0VmFsaWRUbyh2YWxpZFRvKTsKKwkJCQl9IGVsc2UgeworCQkJCQkvLyBvbmUtdGltZQorCQkJCQlpbnZpdGF0aW9uLnNldElzVmFsaWRCeVRpbWUoZmFsc2UpOworCQkJCQlpbnZpdGF0aW9uLnNldENhbkJlVXNlZE9ubHlPbmVUaW1lKHRydWUpOworCQkJCQlpbnZpdGF0aW9uLnNldEludml0YXRpb25XYXNVc2VkKGZhbHNlKTsKKwkJCQl9CisKKwkJCQlpbnZpdGF0aW9uLnNldERlbGV0ZWQoZmFsc2UpOworCisJCQkJVXNlciB1cyA9IHVzZXJzRGFvLmdldChjcmVhdGVkQnkpOworCQkJCVN0cmluZyBoYXNoUmF3ID0gIkludml0YXRpb25IYXNoIgorCQkJCQkJKyAoU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkpOworCQkJCWxvZy5kZWJ1ZygiYWRkSW52aXRhdGlvbkljYWxMaW5rIDogcmF3SGFzaCA9ICIgKyBoYXNoUmF3KTsKKwkJCQlpbnZpdGF0aW9uLnNldEhhc2goTUQ1LmRvX2NoZWNrc3VtKGhhc2hSYXcpKTsKKworCQkJCWludml0YXRpb24uc2V0SW52aXRlZEJ5KHVzKTsKKwkJCQlpbnZpdGF0aW9uLnNldEJhc2VVcmwoYmFzZXVybCk7CisJCQkJaW52aXRhdGlvbi5zZXRJbnZpdGVkbmFtZSh1c2VybmFtZSk7CisJCQkJaW52aXRhdGlvbi5zZXRJbnZpdGVkRU1haWwoZW1haWwpOworCQkJCWludml0YXRpb24uc2V0Um9vbShyb29tRGFvLmdldChyb29tc19pZCkpOworCQkJCWludml0YXRpb24uc2V0Q29uZmVyZW5jZWRvbWFpbihjb25mZXJlbmNlZG9tYWluKTsKKwkJCQlpbnZpdGF0aW9uLnNldFN0YXJ0dGltZShuZXcgRGF0ZSgpKTsKKwkJCQlpbnZpdGF0aW9uLnNldEFwcG9pbnRtZW50SWQoYXBwb2ludG1lbnRJZCk7CisKKwkJCQlpbnZpdGF0aW9uID0gZW0ubWVyZ2UoaW52aXRhdGlvbik7CisJCQkJbG9uZyBpbnZpdGF0aW9uSWQgPSBpbnZpdGF0aW9uLmdldEludml0YXRpb25zX2lkKCk7CisKKwkJCQlpZiAoaW52aXRhdGlvbklkID4gMCkgeworCQkJCQl0aGlzLnNlbmRJbnZpdGlvbkljYWxMaW5rKHVzZXJuYW1lLCBtZXNzYWdlLCBiYXNldXJsLAorCQkJCQkJCWVtYWlsLCBzdWJqZWN0LCBpbnZpdGF0aW9uLmdldEhhc2goKSwKKwkJCQkJCQlhcHBvaW50TWVudElkLCBjcmVhdGVkQnksIGludml0b3IsIGxhbmd1YWdlX2lkLAorCQkJCQkJCXZhbGlkRnJvbSwgdmFsaWRUbywgdGltZXpvbmUsIGZyb21Vc2VyRmllbGQpOworCQkJCQlyZXR1cm4gaW52aXRhdGlvbklkOworCQkJCX0KKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJhZGRJbnZpdGF0aW9uSWNhbExpbmsiLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCXB1YmxpYyBTdHJpbmcgc2VuZEludml0aW9uTGluayhVc2VyIHVzLCBJbnZpdGF0aW9ucyBpbnYsIFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgYmFzZXVybCwgU3RyaW5nIHN1YmplY3QsIExvbmcgbGFuZ3VhZ2VfaWQpIHsKKwkJcmV0dXJuIHNlbmRJbnZpdGlvbkxpbmsodXMgIT0gbnVsbCA/IHVzLmdldEFkcmVzc2VzKCkuZ2V0RW1haWwoKSA6IGludi5nZXRJbnZpdGVkRU1haWwoKQorCQkJCSwgaW52LmdldEludml0ZWRuYW1lKCkKKwkJCQksIG1lc3NhZ2UsIGJhc2V1cmwsIGludi5nZXRJbnZpdGVkRU1haWwoKSwgc3ViamVjdCwgaW52LmdldEhhc2goKQorCQkJCSwgaW52LmdldFZhbGlkRnJvbSgpLCBpbnYuZ2V0VmFsaWRUbygpLCBsYW5ndWFnZV9pZCwgdXMuZ2V0Rmlyc3RuYW1lKCkgKyAiICIgKyB1cy5nZXRMYXN0bmFtZSgpKTsKKwl9CisKKwkvKioKKyAgICAgKiBAcGFyYW0gdXNlcm5hbWUKKyAgICAgKiBAcGFyYW0gbWVzc2FnZQorICAgICAqIEBwYXJhbSBiYXNldXJsCisgICAgICogQHBhcmFtIGVtYWlsCisgICAgICogQHBhcmFtIHJlcGx5VG8KKyAgICAgKiBAcGFyYW0gc3ViamVjdAorICAgICAqIEBwYXJhbSBpbnZpdGF0aW9uc0hhc2gKKyAgICAgKiBAcGFyYW0gZFN0YXJ0CisgICAgICogQHBhcmFtIGRFbmQKKwkgKiBAcGFyYW0gbGFuZ3VhZ2VfaWQgICBJZiBpdCBpcyA+MCB0aGVuICImbGFuZ3VhZ2U9IiBpcyBhZGRlZCB0byB0aGUgbGluaworCSAqLworCXByaXZhdGUgU3RyaW5nIHNlbmRJbnZpdGlvbkxpbmsoU3RyaW5nIHJlcGx5VG8sIFN0cmluZyB1c2VybmFtZSwgU3RyaW5nIG1lc3NhZ2UsCisJCQlTdHJpbmcgYmFzZXVybCwgU3RyaW5nIGVtYWlsLCBTdHJpbmcgc3ViamVjdCwKKwkJCVN0cmluZyBpbnZpdGF0aW9uc0hhc2gsIERhdGUgZFN0YXJ0LCBEYXRlIGRFbmQsIExvbmcgbGFuZ3VhZ2VfaWQsIFN0cmluZyBmcm9tVXNlckZpZWxkKSB7CisJCXRyeSB7CisKKwkJCVN0cmluZyBpbnZpdGF0aW9uX2xpbmsgPSBiYXNldXJsICsgIj9pbnZpdGF0aW9uSGFzaD0iCisJCQkJCSsgaW52aXRhdGlvbnNIYXNoOworCisgICAgICAgICAgICBpZiAobGFuZ3VhZ2VfaWQgPiAwKSB7CisgICAgICAgICAgICAgICAgaW52aXRhdGlvbl9saW5rICs9ICImbGFuZ3VhZ2U9IiArIGxhbmd1YWdlX2lkLnRvU3RyaW5nKCk7CisgICAgICAgICAgICB9CisKKwkJCS8vIExvbmcgZGVmYXVsdF9sYW5nX2lkID0gTG9uZy52YWx1ZU9mKGNmZ01hbmFnZW1lbnQuCisJCQkvLyBnZXRDb25mS2V5KDMsImRlZmF1bHRfbGFuZ19pZCIpLmdldENvbmZfdmFsdWUoKSkubG9uZ1ZhbHVlKCk7CisKKwkJCVN0cmluZyB0ZW1wbGF0ZSA9IGludml0YXRpb25UZW1wbGF0ZS5nZXRSZWdpc3Rlckludml0YXRpb25UZW1wbGF0ZSgKKwkJCQkJZnJvbVVzZXJGaWVsZCwgbWVzc2FnZSwgaW52aXRhdGlvbl9saW5rLCBsYW5ndWFnZV9pZCwgZFN0YXJ0LAorCQkJCQlkRW5kKTsKKworCQkJbWFpbEhhbmRsZXIuc2VuZChlbWFpbCwgcmVwbHlUbywgc3ViamVjdCwgdGVtcGxhdGUpOworCQkJcmV0dXJuICJzdWNjZXNzIjsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJzZW5kSW52aXRhdGlvbkxpbmsiLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCS8qKgorCSAqIEBhdXRob3Igby5iZWNoZXJlcgorCSAqIEBwYXJhbSB1c2VyTmFtZQorCSAqIEBwYXJhbSBtZXNzYWdlCisJICogQHBhcmFtIGJhc2VVcmwKKwkgKiBAcGFyYW0gZW1haWwKKwkgKiBAcGFyYW0gc3ViamVjdAorCSAqIEBwYXJhbSBpbnZpdGF0aW9uSGFzaAorCSAqIEByZXR1cm4KKwkgKi8KKwkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJcHVibGljIFN0cmluZyBzZW5kSW52aXRhdGlvblJlbWluZGVyTGluayhsb25nIGxhbmdJZCwgU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBiYXNlVXJsLAorCQkJU3RyaW5nIGVtYWlsLCBTdHJpbmcgc3ViamVjdCwgU3RyaW5nIGludml0YXRpb25IYXNoKSB7CisJCWxvZy5kZWJ1Zygic2VuZEludml0YXRpb25SZW1pbmRlckxpbmsiKTsKKworCQl0cnkgeworCQkJU3RyaW5nIGludml0YXRpb25fbGluayA9IGJhc2VVcmwgKyAiP2ludml0YXRpb25IYXNoPSIKKwkJCQkJKyBpbnZpdGF0aW9uSGFzaDsKKworCQkJbWFpbEhhbmRsZXIuc2VuZChuZXcgTWFpbE1lc3NhZ2UoCisJCQkJCWVtYWlsCisJCQkJCSwgbnVsbAorCQkJCQksIHN1YmplY3QKKwkJCQkJLCBtZXNzYWdlICsgIjxici8+PGEgaHJlZj0nIiArIGludml0YXRpb25fbGluayArICInPiIKKwkJCQkJCQkrIGZpZWxkTWFuYWdlci5nZXRGaWVsZEJ5SWRBbmRMYW5ndWFnZSg2MjZMLCBsYW5nSWQpICsgIjwvYT4iKSwgdHJ1ZSk7CisJCQkKKwkJCXJldHVybiAic3VjY2VzcyI7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCQlsb2cuZXJyb3IoInNlbmRJbnZpdGF0aW9uUmVtaW5kZXJMaW5rIiwgZSk7CisJCX0KKworCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvKioKKwkgKiBUaGlzIG1ldGhvZCBzZW5kcyBpbnZpdGF0aW9uIHJlbWluZGVyIFNNUworCSAqIEBwYXJhbSBwaG9uZSB1c2VyJ3MgcGhvbmUKKwkgKiBAcGFyYW0gc3ViamVjdCAKKwkgKiBAcmV0dXJuCisJICovCisJcHVibGljIGJvb2xlYW4gc2VuZEludml0YXRpb25SZW1pbmRlclNNUyhTdHJpbmcgcGhvbmUsIFN0cmluZyBzdWJqZWN0LCBsb25nIGxhbmd1YWdlX2lkKSB7CisJCWlmIChwaG9uZSAhPSBudWxsICYmIHBob25lLmxlbmd0aCgpID4gMCkgeworCQkJbG9nLmRlYnVnKCJzZW5kSW52aXRhdGlvblJlbWluZGVyU01TIHRvICIgKyBwaG9uZSArICI6ICIgKyBzdWJqZWN0KTsKKwkJCXRyeSB7CisJCQkJcmV0dXJuIHNtc0hhbmRsZXIuc2VuZFNNUyhwaG9uZSwgc3ViamVjdCwgbGFuZ3VhZ2VfaWQpOworCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCQlsb2cuZXJyb3IoInNlbmRJbnZpdGF0aW9uUmVtaW5kZXJTTVMiLCBlKTsKKwkJCX0KKwkJfQorCQlyZXR1cm4gZmFsc2U7CisJfQorCisJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJLyoqCisJICogCisJICogQHBhcmFtIGVtYWlsCisJICogQHBhcmFtIHBvaW50CisJICogQHBhcmFtIGNhbmNlbGxpbmdfcGVyc29uCisJICogQHJldHVybgorCSAqLworCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJcHJpdmF0ZSBTdHJpbmcgc2VuZEludml0YXRpb25DYW5jZWxNYWlsKFN0cmluZyBlbWFpbCwgQXBwb2ludG1lbnQgcG9pbnQsCisJCQlTdHJpbmcgY2FuY2VsbGluZ19wZXJzb24sIFN0cmluZyBzdWJqZWN0LCBTdHJpbmcgbWVzc2FnZSkgeworCQlsb2cuZGVidWcoInNlbmRJbnZpdGF0aW9uQ2FuY2VsbWFpbCIpOworCQl0cnkgeworCQkJbWFpbEhhbmRsZXIuc2VuZChlbWFpbCwgc3ViamVjdCwgbWVzc2FnZSk7CisJCQlyZXR1cm4gInN1Y2Nlc3MiOworCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJbG9nLmVycm9yKCJzZW5kSW52aXRhdGlvbkNhbmNlbG1haWwgOiAiICsgZS5nZXRNZXNzYWdlKCkpOworCQkJbG9nLmVycm9yKCJbc2VuZEludml0YXRpb25DYW5jZWxtYWlsXSIsIGUpOworCQl9CisKKwkJcmV0dXJuIG51bGw7CisJfQorCisJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCS8qKgorCSAqIAorCSAqIEBwYXJhbSBlbWFpbAorCSAqIEBwYXJhbSBwb2ludAorCSAqIEBwYXJhbSByZXBseVRvCisJICogQHBhcmFtIHN1YmplY3QKKwkgKiBAcGFyYW0gbWVzYWdlCisJICogQHJldHVybgorCSAqLworCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJcHJpdmF0ZSBTdHJpbmcgc2VuZEludml0YXRpb25VcGRhdGVNYWlsKFN0cmluZyBlbWFpbCwgQXBwb2ludG1lbnQgcG9pbnQsCisJCQlTdHJpbmcgcmVwbHlUbywgU3RyaW5nIHN1YmplY3QsIFN0cmluZyBtZXNzYWdlKSB7CisJCWxvZy5kZWJ1Zygic2VuZEludml0YXRpb25VcGRhdGVNYWlsIik7CisJCXRyeSB7CisJCQltYWlsSGFuZGxlci5zZW5kKGVtYWlsLCByZXBseVRvLCBzdWJqZWN0LCBtZXNzYWdlKTsKKwkJCXJldHVybiAic3VjY2VzcyI7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCQlsb2cuZXJyb3IoInNlbmRJbnZpdGF0aW9uVXBkYXRlTWFpbCA6ICIgKyBlLmdldE1lc3NhZ2UoKSk7CisJCQlsb2cuZXJyb3IoIltzZW5kSW52aXRhdGlvblVwZGF0ZU1haWxdIiwgZSk7CisJCX0KKworCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJLyoqCisJICogCisJICogQHBhcmFtIGVtYWlsCisJICogQHBhcmFtIHBvaW50CisJICogQHBhcmFtIGNhbmNlbGxpbmdfcGVyc29uCisJICogQHJldHVybgorCSAqLworCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJcHJpdmF0ZSBTdHJpbmcgc2VuZEludml0YXRpb25JY2FsQ2FuY2VsTWFpbChTdHJpbmcgZW1haWwsIFN0cmluZyB1c2VyTmFtZSwKKwkJCUFwcG9pbnRtZW50IHBvaW50LCBMb25nIG9yZ2FuaXplcl91c2VySWQsIEJvb2xlYW4gaW52aXRvciwKKwkJCURhdGUgc3RhcnRkYXRlLCBEYXRlIGVuZGRhdGUsIFRpbWVab25lIHRpbWV6b25lLCBTdHJpbmcgc3ViamVjdCwKKwkJCVN0cmluZyBtZXNzYWdlKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkJbG9nLmRlYnVnKCJzZW5kSW52aXRhdGlvbkljYWxDYW5jZWxNYWlsIik7CisKKwkJLy8gRGVmaW5pbmcgT3JnYW5pemVyCisJCVVzZXIgdXNlciA9IHVzZXJNYW5hZ2VyLmdldFVzZXJCeUlkKG9yZ2FuaXplcl91c2VySWQpOworCisJCS8vIFRPRE86IENoZWNrIHRpbWUgem9uZSBoYW5kbGluZyBpbiBpQ2FsIE1haWwKKwkJLy8gT21UaW1lWm9uZSBvbVRpbWVab25lID0gb21UaW1lWm9uZURhb0ltcGwuZ2V0T21UaW1lWm9uZShqTmFtZVRpbWVab25lKTsKKworCQlJY2FsSGFuZGxlciBoYW5kbGVyID0gbmV3IEljYWxIYW5kbGVyKEljYWxIYW5kbGVyLklDQUxfTUVUSE9EX0NBTkNFTCk7CisKKwkJLy8gcmVmcmVzaCBhcHBvaW50bWVudAorCQlwb2ludCA9IGFwcG9pbnRtZW50TG9naWMuZ2V0QXBwb2ludE1lbnRCeUlkKHBvaW50LmdldEFwcG9pbnRtZW50SWQoKSk7CisKKwkJLy8gVHJhbnNmb3JtaW5nIE1lZXRpbmcgTWVtYmVycworCisJCUhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGF0dGVuZGVlSW5EZXJIYXNoTWFwID0gaGFuZGxlci5nZXRBdHRlbmRlZURhdGEoCisJCQkJZW1haWwsIHVzZXJOYW1lLCBpbnZpdG9yKTsKKworCQlWZWN0b3I8SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4+IGF0dHMgPSBuZXcgVmVjdG9yPEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+PigpOworCQlhdHRzLmFkZChhdHRlbmRlZUluRGVySGFzaE1hcCk7CisKKwkJSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gb3JnYW5pemVyID0gaGFuZGxlci5nZXRBdHRlbmRlZURhdGEodXNlcgorCQkJCS5nZXRBZHJlc3NlcygpLmdldEVtYWlsKCksIHVzZXIuZ2V0TG9naW4oKSwgaW52aXRvcik7CisKKwkJaGFuZGxlci5hZGROZXdNZWV0aW5nKHN0YXJ0ZGF0ZSwgZW5kZGF0ZSwgCisJCQkJcG9pbnQuZ2V0QXBwb2ludG1lbnROYW1lKCksIGF0dHMsCisJCQkJc3ViamVjdCwgb3JnYW5pemVyLCBwb2ludC5nZXRJY2FsSWQoKSwgdGltZXpvbmUpOworCisJCWxvZy5kZWJ1ZyhoYW5kbGVyLmdldElDYWxEYXRhQXNTdHJpbmcoKSk7CisKKwkJbWFpbEhhbmRsZXIuc2VuZChuZXcgTWFpbE1lc3NhZ2UoZW1haWwsIHVzZXIuZ2V0QWRyZXNzZXMoKS5nZXRFbWFpbCgpLCBzdWJqZWN0LCBtZXNzYWdlLCBoYW5kbGVyLmdldEljYWxBc0J5dGVBcnJheSgpKSk7CisKKwkJcmV0dXJuIG51bGw7CisJfQorCisJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCS8qKgorCSAqIAorCSAqIEBwYXJhbSBlbWFpbAorCSAqIEBwYXJhbSBwb2ludAorCSAqIEBwYXJhbSBjYW5jZWxsaW5nX3BlcnNvbgorCSAqIEByZXR1cm4KKwkgKi8KKwkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCXByaXZhdGUgU3RyaW5nIHNlbmRJbnZpdGF0aW9uSWNhbFVwZGF0ZU1haWwoU3RyaW5nIGVtYWlsLCBTdHJpbmcgdXNlck5hbWUsCisJCQlBcHBvaW50bWVudCBwb2ludCwgTG9uZyBvcmdhbml6ZXJfdXNlcklkLCBCb29sZWFuIGludml0b3IsCisJCQlMb25nIGxhbmd1YWdlX2lkLCBEYXRlIHN0YXJ0dGltZSwgRGF0ZSBlbmR0aW1lLCBUaW1lWm9uZSB0aW1lWm9uZSwKKwkJCVN0cmluZyBzdWJqZWN0LCBTdHJpbmcgbWVzc2FnZSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCWxvZy5kZWJ1Zygic2VuZEludml0YXRpb25JY2FsVXBkYXRlTWFpbCIpOworCisJCS8vIERlZmluaW5nIE9yZ2FuaXplcgorCQlVc2VyIHVzZXIgPSB1c2VyTWFuYWdlci5nZXRVc2VyQnlJZChvcmdhbml6ZXJfdXNlcklkKTsKKworCQlJY2FsSGFuZGxlciBoYW5kbGVyID0gbmV3IEljYWxIYW5kbGVyKEljYWxIYW5kbGVyLklDQUxfTUVUSE9EX1JFUVVFU1QpOworCisJCS8vIHJlZnJlc2ggYXBwb2ludG1lbnQKKwkJcG9pbnQgPSBhcHBvaW50bWVudExvZ2ljLmdldEFwcG9pbnRNZW50QnlJZChwb2ludC5nZXRBcHBvaW50bWVudElkKCkpOworCisJCS8vIFRyYW5zZm9ybWluZyBNZWV0aW5nIE1lbWJlcnMKKworCQlIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBhdHRlbmRlZUluRGVySGFzaE1hcCA9IGhhbmRsZXIuZ2V0QXR0ZW5kZWVEYXRhKAorCQkJCWVtYWlsLCB1c2VyTmFtZSwgaW52aXRvcik7CisKKwkJVmVjdG9yPEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+PiBhdHRzID0gbmV3IFZlY3RvcjxIYXNoTWFwPFN0cmluZywgU3RyaW5nPj4oKTsKKwkJYXR0cy5hZGQoYXR0ZW5kZWVJbkRlckhhc2hNYXApOworCisJCUhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG9yZ2FuaXplciA9IGhhbmRsZXIuZ2V0QXR0ZW5kZWVEYXRhKHVzZXIKKwkJCQkuZ2V0QWRyZXNzZXMoKS5nZXRFbWFpbCgpLCB1c2VyLmdldExvZ2luKCksIGludml0b3IpOworCisJCWhhbmRsZXIuYWRkTmV3TWVldGluZyhzdGFydHRpbWUsIGVuZHRpbWUsIHBvaW50LmdldEFwcG9pbnRtZW50TmFtZSgpLCBhdHRzLAorCQkJCXN1YmplY3QsIG9yZ2FuaXplciwgcG9pbnQuZ2V0SWNhbElkKCksIHRpbWVab25lKTsKKworCQlsb2cuZGVidWcoaGFuZGxlci5nZXRJQ2FsRGF0YUFzU3RyaW5nKCkpOworCisJCW1haWxIYW5kbGVyLnNlbmQobmV3IE1haWxNZXNzYWdlKGVtYWlsLCB1c2VyLmdldEFkcmVzc2VzKCkuZ2V0RW1haWwoKSwgc3ViamVjdCwgbWVzc2FnZSwgaGFuZGxlci5nZXRJY2FsQXNCeXRlQXJyYXkoKSkpOworCisJCXJldHVybiBudWxsOworCX0KKworCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwkvKioKKwkgKiAKKwkgKiBAcGFyYW0gdXNlcm5hbWUKKwkgKiBAcGFyYW0gbWVzc2FnZQorCSAqIEBwYXJhbSBiYXNldXJsCisJICogQHBhcmFtIGVtYWlsCisJICogQHBhcmFtIHN1YmplY3QKKwkgKiBAcGFyYW0gaW52aXRhdGlvbnNIYXNoCisJICogQHBhcmFtIGFwcG9pbnRNZW50SWQKKyAgICAgKiBAcGFyYW0gb3JnYW5pemVyX3VzZXJJZAorICAgICAqIEBwYXJhbSBpbnZpdG9yCisgICAgICogQHBhcmFtIGxhbmd1YWdlX2lkICAgSWYgaXQgaXMgPjAgdGhlbiAiJmxhbmd1YWdlPSIgaXMgYWRkZWQgdG8gdGhlIGxpbmsKKyAgICAgKiBAcGFyYW0gc3RhcnR0aW1lCisgICAgICogQHBhcmFtIGVuZHRpbWUKKyAgICAgKiBAcGFyYW0gdGltZXpvbmUKKwkgKiBAcmV0dXJuCisJICovCisJcHVibGljIFN0cmluZyBzZW5kSW52aXRpb25JY2FsTGluayhTdHJpbmcgdXNlcm5hbWUsIFN0cmluZyBtZXNzYWdlLAorCQkJU3RyaW5nIGJhc2V1cmwsIFN0cmluZyBlbWFpbCwgU3RyaW5nIHN1YmplY3QsCisJCQlTdHJpbmcgaW52aXRhdGlvbnNIYXNoLCBMb25nIGFwcG9pbnRNZW50SWQsIExvbmcgb3JnYW5pemVyX3VzZXJJZCwKKwkJCUJvb2xlYW4gaW52aXRvciwgTG9uZyBsYW5ndWFnZV9pZCwgRGF0ZSBzdGFydHRpbWUsIERhdGUgZW5kdGltZSwKKwkJCVRpbWVab25lIHRpbWV6b25lLCBTdHJpbmcgZnJvbVVzZXJGaWVsZCkgeworCQl0cnkgeworCisJCQlTdHJpbmcgaW52aXRhdGlvbl9saW5rID0gYmFzZXVybCArICI/aW52aXRhdGlvbkhhc2g9IgorCQkJCQkrIGludml0YXRpb25zSGFzaDsKKworICAgICAgICAgICAgaWYgKGxhbmd1YWdlX2lkID4gMCkgeworICAgICAgICAgICAgICAgIGludml0YXRpb25fbGluayArPSAiJmxhbmd1YWdlPSIgKyBsYW5ndWFnZV9pZC50b1N0cmluZygpOworICAgICAgICAgICAgfQorCisJCQkvLyBMb25nIGRlZmF1bHRfbGFuZ19pZCA9IExvbmcudmFsdWVPZihjZmdNYW5hZ2VtZW50LgorCQkJLy8gZ2V0Q29uZktleSgzLCJkZWZhdWx0X2xhbmdfaWQiKS5nZXRDb25mX3ZhbHVlKCkpLmxvbmdWYWx1ZSgpOworCQkJU3RyaW5nIHRlbXBsYXRlID0gaW52aXRhdGlvblRlbXBsYXRlLmdldFJlZ2lzdGVySW52aXRhdGlvblRlbXBsYXRlKAorCQkJCQlmcm9tVXNlckZpZWxkLCBtZXNzYWdlLCBpbnZpdGF0aW9uX2xpbmssIGxhbmd1YWdlX2lkLCBzdGFydHRpbWUsCisJCQkJCWVuZHRpbWUpOworCisJCQlJY2FsSGFuZGxlciBoYW5kbGVyID0gbmV3IEljYWxIYW5kbGVyKAorCQkJCQlJY2FsSGFuZGxlci5JQ0FMX01FVEhPRF9SRVFVRVNUKTsKKworCQkJQXBwb2ludG1lbnQgcG9pbnQgPSBhcHBvaW50bWVudExvZ2ljCisJCQkJCS5nZXRBcHBvaW50TWVudEJ5SWQoYXBwb2ludE1lbnRJZCk7CisKKwkJCS8vIFRyYW5zZm9ybWluZyBNZWV0aW5nIE1lbWJlcnMKKworCQkJSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gYXR0ZW5kZWVMaXN0ID0gaGFuZGxlci5nZXRBdHRlbmRlZURhdGEoCisJCQkJCWVtYWlsLCB1c2VybmFtZSwgaW52aXRvcik7CisKKwkJCVZlY3RvcjxIYXNoTWFwPFN0cmluZywgU3RyaW5nPj4gYXR0cyA9IG5ldyBWZWN0b3I8SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4+KCk7CisJCQlhdHRzLmFkZChhdHRlbmRlZUxpc3QpOworCisJCQkvLyBEZWZpbmluZyBPcmdhbml6ZXIKKwkJCVVzZXIgdXNlciA9IHVzZXJNYW5hZ2VyLmdldFVzZXJCeUlkKG9yZ2FuaXplcl91c2VySWQpOworCisJCQlIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBvcmdhbml6ZXJBdHRlbmRlZSA9IGhhbmRsZXIKKwkJCQkJLmdldEF0dGVuZGVlRGF0YShlbWFpbCwgdXNlcm5hbWUsIGludml0b3IpOworCQkJU3RyaW5nIHJlcGx5VG9FbWFpbCA9IG51bGw7CisJCQlpZiAodXNlciAhPSBudWxsKSB7CisJCQkJcmVwbHlUb0VtYWlsID0gdXNlci5nZXRBZHJlc3NlcygpLmdldEVtYWlsKCk7CisJCQkJb3JnYW5pemVyQXR0ZW5kZWUgPSBoYW5kbGVyLmdldEF0dGVuZGVlRGF0YShyZXBseVRvRW1haWwsIHVzZXIuZ2V0TG9naW4oKSwgaW52aXRvcik7CisJCQl9CisKKwkJCS8vIENyZWF0ZSBJQ2FsIE1lc3NhZ2UKKwkJCVN0cmluZyBtZWV0aW5nSWQgPSBoYW5kbGVyLmFkZE5ld01lZXRpbmcoc3RhcnR0aW1lLCBlbmR0aW1lLAorCQkJCQlwb2ludC5nZXRBcHBvaW50bWVudE5hbWUoKSwgYXR0cywgaW52aXRhdGlvbl9saW5rLAorCQkJCQlvcmdhbml6ZXJBdHRlbmRlZSwgcG9pbnQuZ2V0SWNhbElkKCksIHRpbWV6b25lKTsKKworCQkJLy8gV3JpdGluZyBiYWNrIG1lZXRpbmdVaWQKKwkJCWlmIChwb2ludC5nZXRJY2FsSWQoKSA9PSBudWxsIHx8IHBvaW50LmdldEljYWxJZCgpLmxlbmd0aCgpIDwgMSkgeworCQkJCXBvaW50LnNldEljYWxJZChtZWV0aW5nSWQpOworCisJCQkJYXBwb2ludG1lbnREYW9JbXBsLnVwZGF0ZUFwcG9pbnRtZW50KHBvaW50KTsKKwkJCX0KKworCQkJbG9nLmRlYnVnKGhhbmRsZXIuZ2V0SUNhbERhdGFBc1N0cmluZygpKTsKKworCQkJbWFpbEhhbmRsZXIuc2VuZChuZXcgTWFpbE1lc3NhZ2UoZW1haWwsIHJlcGx5VG9FbWFpbCwgc3ViamVjdCwgdGVtcGxhdGUsIGhhbmRsZXIuZ2V0SWNhbEFzQnl0ZUFycmF5KCkpKTsKKworCQkJcmV0dXJuICJzdWNjZXNzIjsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJzZW5kSW52aXRpb25JY2FsTGluayIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLyoqCisJICogCisJICogQHBhcmFtIHVzZXJfbGV2ZWwKKwkgKiBAcGFyYW0gdXNlcm5hbWUKKwkgKiBAcGFyYW0gbWVzc2FnZQorCSAqIEBwYXJhbSBkb21haW4KKwkgKiBAcGFyYW0gcm9vbQorCSAqIEBwYXJhbSByb29tdHlwZQorCSAqIEBwYXJhbSBiYXNldXJsCisJICogQHBhcmFtIGVtYWlsCisJICogQHBhcmFtIHN1YmplY3QKKwkgKiBAcGFyYW0gcm9vbV9pZAorCSAqIEByZXR1cm4KKwkgKi8KKwlwdWJsaWMgU3RyaW5nIHNlbmRJbnZpdGlvbkxpbmsoTG9uZyB1c2VyX2xldmVsLCBTdHJpbmcgdXNlcm5hbWUsCisJCQlTdHJpbmcgbWVzc2FnZSwgU3RyaW5nIGRvbWFpbiwgU3RyaW5nIHJvb20sIFN0cmluZyByb29tdHlwZSwKKwkJCVN0cmluZyBiYXNldXJsLCBTdHJpbmcgZW1haWwsIFN0cmluZyByZXBseVRvLCBTdHJpbmcgc3ViamVjdCwgTG9uZyByb29tX2lkLAorCQkJRGF0ZSBzdGFydHRpbWUsIERhdGUgZW5kdGltZSkgeworCQl0cnkgeworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tVc2VyTGV2ZWwodXNlcl9sZXZlbCkpIHsKKworCQkJCVN0cmluZyBpbnZpdGF0aW9uX2xpbmsgPSBiYXNldXJsCisJCQkJCQkrICI/bHpwcm94aWVkPXNvbG8mbHpyPXN3ZjgmbHp0PXN3ZiZkb21haW49IiArIGRvbWFpbgorCQkJCQkJKyAiJnJvb209IiArIHJvb20gKyAiJnJvb210eXBlPSIgKyByb29tdHlwZSArICImZW1haWw9IgorCQkJCQkJKyBlbWFpbCArICImcm9vbWlkPSIgKyByb29tX2lkOworCisJCQkJTG9uZyBkZWZhdWx0X2xhbmdfaWQgPSBjb25maWd1cmF0aW9uRGFvLmdldENvbmZWYWx1ZSgiZGVmYXVsdF9sYW5nX2lkIiwgTG9uZy5jbGFzcywgIjEiKTsKKworCQkJCVN0cmluZyB0ZW1wbGF0ZSA9IGludml0YXRpb25UZW1wbGF0ZQorCQkJCQkJLmdldFJlZ2lzdGVySW52aXRhdGlvblRlbXBsYXRlKHVzZXJuYW1lLCBtZXNzYWdlLAorCQkJCQkJCQlpbnZpdGF0aW9uX2xpbmssIGRlZmF1bHRfbGFuZ19pZCwgc3RhcnR0aW1lLAorCQkJCQkJCQllbmR0aW1lKTsKKworCQkJCW1haWxIYW5kbGVyLnNlbmQoZW1haWwsIHJlcGx5VG8sIHN1YmplY3QsIHRlbXBsYXRlKTsKKwkJCQlyZXR1cm4gInN1Y2Nlc3MiOworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoInNlbmRJbnZpdGF0aW9uTGluayIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLyoqCisJICogQGF1dGhvciBiZWNoZXJlcgorCSAqIEBwYXJhbSBpbnZJZAorCSAqIAorCSAqLworCXB1YmxpYyBJbnZpdGF0aW9ucyBnZXRJbnZpdGF0aW9uYnlJZChMb25nIGludklkKSB7CisJCWxvZy5kZWJ1ZygiZ2V0SW52aXRhdGlvbmJ5SWQiKTsKKworCQl0cnkgeworCQkJU3RyaW5nIGhxbCA9ICJzZWxlY3QgaW52aSBmcm9tIEludml0YXRpb25zIGludmkgIgorCQkJCQkrICJXSEVSRSBpbnZpLmRlbGV0ZWQgPD4gOmRlbGV0ZWQgIgorCQkJCQkrICJBTkQgaW52aS5pbnZpdGF0aW9uc19pZCA9IDppbnZpZCI7CisKKwkJCVR5cGVkUXVlcnk8SW52aXRhdGlvbnM+IHF1ZXJ5ID0gZW0uY3JlYXRlUXVlcnkoaHFsLCBJbnZpdGF0aW9ucy5jbGFzcyk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImRlbGV0ZWQiLCB0cnVlKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiaW52aWQiLCBpbnZJZCk7CisKKwkJCUludml0YXRpb25zIGludiA9IG51bGw7CisJCQl0cnkgeworCQkJCWludiA9IHF1ZXJ5LmdldFNpbmdsZVJlc3VsdCgpOworCQkJfSBjYXRjaCAoTm9SZXN1bHRFeGNlcHRpb24gZXgpIHsKKwkJCX0KKworCQkJcmV0dXJuIGludjsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCWxvZy5lcnJvcigiZ2V0SW52aXRhdGlvbnNieUlkIDogIiwgZSk7CisJCQlyZXR1cm4gbnVsbDsKKwkJfQorCX0KKworCXB1YmxpYyBJbnZpdGF0aW9ucyBnZXRJbnZpdGF0aW9uYnlBcHBvaW50ZW1lbnRJZChMb25nIGludklkKSB7CisJCWxvZy5kZWJ1ZygiZ2V0SW52aXRhdGlvbmJ5SWQiKTsKKworCQl0cnkgeworCQkJU3RyaW5nIGhxbCA9ICJzZWxlY3QgaW52aSBmcm9tIEludml0YXRpb25zIGludmkgIgorCQkJCQkrICJXSEVSRSBpbnZpLmRlbGV0ZWQgPD4gOmRlbGV0ZWQgIgorCQkJCQkrICJBTkQgaW52aS5pbnZpdGF0aW9uc19pZCA9IDppbnZpZCI7CisKKwkJCVR5cGVkUXVlcnk8SW52aXRhdGlvbnM+IHF1ZXJ5ID0gZW0uY3JlYXRlUXVlcnkoaHFsLCBJbnZpdGF0aW9ucy5jbGFzcyk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImRlbGV0ZWQiLCB0cnVlKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiaW52aWQiLCBpbnZJZCk7CisKKwkJCUludml0YXRpb25zIGludiA9IG51bGw7CisJCQl0cnkgeworCQkJCWludiA9IHF1ZXJ5LmdldFNpbmdsZVJlc3VsdCgpOworCQkJfSBjYXRjaCAoTm9SZXN1bHRFeGNlcHRpb24gZXgpIHsKKwkJCX0KKworCQkJcmV0dXJuIGludjsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCWxvZy5lcnJvcigiZ2V0SW52aXRhdGlvbnNieUlkIDogIiwgZSk7CisJCQlyZXR1cm4gbnVsbDsKKwkJfQorCX0KKworCS8qKgorCSAqIAorCSAqIEBwYXJhbSBoYXNoQ29kZQorCSAqIEBwYXJhbSBoaWRlUGFzcworCSAqIEByZXR1cm4KKwkgKi8KKwlwdWJsaWMgT2JqZWN0IGdldEludml0YXRpb25CeUhhc2hDb2RlKFN0cmluZyBoYXNoQ29kZSwgYm9vbGVhbiBoaWRlUGFzcykgeworCQl0cnkgeworCQkJU3RyaW5nIGhxbCA9ICJzZWxlY3QgYyBmcm9tIEludml0YXRpb25zIGFzIGMgIgorCQkJCQkrICJ3aGVyZSBjLmhhc2ggTElLRSA6aGFzaENvZGUgIgorCQkJCQkrICJBTkQgYy5kZWxldGVkID0gOmRlbGV0ZWQiOworCQkJVHlwZWRRdWVyeTxJbnZpdGF0aW9ucz4gcXVlcnkgPSBlbS5jcmVhdGVRdWVyeShocWwsIEludml0YXRpb25zLmNsYXNzKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiaGFzaENvZGUiLCBoYXNoQ29kZSk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImRlbGV0ZWQiLCBmYWxzZSk7CisJCQlJbnZpdGF0aW9ucyBpbnZpdGF0aW9uID0gbnVsbDsKKwkJCXRyeSB7CisJCQkJaW52aXRhdGlvbiA9IHF1ZXJ5LmdldFNpbmdsZVJlc3VsdCgpOworCQkJfSBjYXRjaCAoTm9SZXN1bHRFeGNlcHRpb24gZXgpIHsKKwkJCX0KKworCQkJaWYgKGludml0YXRpb24gPT0gbnVsbCkgeworCQkJCS8vIGFscmVhZHkgZGVsZXRlZCBvciBkb2VzIG5vdCBleGlzdAorCQkJCXJldHVybiBuZXcgTG9uZygtMzEpOworCQkJfSBlbHNlIHsKKwkJCQlpZiAoaW52aXRhdGlvbi5nZXRDYW5CZVVzZWRPbmx5T25lVGltZSgpKSB7CisKKwkJCQkJLy8gZG8gdGhpcyBvbmx5IGlmIHRoZSB1c2VyIHRyaWVzIHRvIGdldCB0aGUgSW52aXRhdGlvbiwgbm90CisJCQkJCS8vIHdoaWxlIGNoZWNraW5nIHRoZSBQV0QKKwkJCQkJaWYgKGhpZGVQYXNzKSB7CisJCQkJCQkvLyBvbmUtdGltZSBpbnZpdGF0aW9uCisJCQkJCQlpZiAoaW52aXRhdGlvbi5nZXRJbnZpdGF0aW9uV2FzVXNlZCgpKSB7CisJCQkJCQkJLy8gSW52aXRhdGlvbiBpcyBvZiB0eXBlICpvbmx5LW9uZS10aW1lKiBhbmQgd2FzCisJCQkJCQkJLy8gYWxyZWFkeSB1c2VkCisJCQkJCQkJcmV0dXJuIG5ldyBMb25nKC0zMik7CisJCQkJCQl9IGVsc2UgeworCQkJCQkJCS8vIHNldCB0byB0cnVlIGlmIHRoaXMgaXMgdGhlIGZpcnN0IHRpbWUgLyBhIG5vcm1hbAorCQkJCQkJCS8vIGdldEludml0YXRpb24tUXVlcnkKKwkJCQkJCQlpbnZpdGF0aW9uLnNldEludml0YXRpb25XYXNVc2VkKHRydWUpOworCQkJCQkJCXRoaXMudXBkYXRlSW52aXRhdGlvbihpbnZpdGF0aW9uKTsKKwkJCQkJCQkvLyBpbnZpdGF0aW9uLnNldEludml0YXRpb25wYXNzKG51bGwpOworCQkJCQkJCWludml0YXRpb24uc2V0QWxsb3dFbnRyeSh0cnVlKTsKKwkJCQkJCQlyZXR1cm4gaW52aXRhdGlvbjsKKwkJCQkJCX0KKwkJCQkJfSBlbHNlIHsKKwkJCQkJCWludml0YXRpb24uc2V0QWxsb3dFbnRyeSh0cnVlKTsKKwkJCQkJCXJldHVybiBpbnZpdGF0aW9uOworCQkJCQl9CisKKwkJCQl9IGVsc2UgaWYgKGludml0YXRpb24uZ2V0SXNWYWxpZEJ5VGltZSgpKSB7CisJCQkJCU9tVGltZVpvbmUgdHogPSBpbnZpdGF0aW9uLmdldE9tVGltZVpvbmUoKSA9PSBudWxsIAorCQkJCQkJCT8gb21UaW1lWm9uZURhb0ltcGwuZ2V0T21UaW1lWm9uZShjb25maWd1cmF0aW9uRGFvLmdldENvbmZWYWx1ZSgiZGVmYXVsdC50aW1lem9uZSIsIFN0cmluZy5jbGFzcywgIkV1cm9wZS9CZXJsaW4iKSkKKwkJCQkJCQk6IGludml0YXRpb24uZ2V0T21UaW1lWm9uZSgpOworCQkJCQlDYWxlbmRhciBub3cgPSBDYWxlbmRhci5nZXRJbnN0YW5jZShUaW1lWm9uZS5nZXRUaW1lWm9uZSh0ei5nZXRJY2FsKCkpKTsKKwkJCQkJQ2FsZW5kYXIgc3RhcnQgPSBDYWxlbmRhci5nZXRJbnN0YW5jZShUaW1lWm9uZS5nZXRUaW1lWm9uZSh0ei5nZXRJY2FsKCkpKTsKKwkJCQkJc3RhcnQuc2V0VGltZShpbnZpdGF0aW9uLmdldFZhbGlkRnJvbSgpKTsKKworCQkJCQlDYWxlbmRhciBlbmQgPSBDYWxlbmRhci5nZXRJbnN0YW5jZShUaW1lWm9uZS5nZXRUaW1lWm9uZSh0ei5nZXRJY2FsKCkpKTsKKwkJCQkJZW5kLnNldFRpbWUoaW52aXRhdGlvbi5nZXRWYWxpZFRvKCkpOworCQkJCQlpZiAobm93LmFmdGVyKHN0YXJ0KSAmJiBub3cuYmVmb3JlKGVuZCkpIHsKKwkJCQkJCXRoaXMudXBkYXRlSW52aXRhdGlvbihpbnZpdGF0aW9uKTsKKwkJCQkJCS8vIGludml0YXRpb24uc2V0SW52aXRhdGlvbnBhc3MobnVsbCk7CisJCQkJCQlpbnZpdGF0aW9uLnNldEFsbG93RW50cnkodHJ1ZSk7CisJCQkJCQlyZXR1cm4gaW52aXRhdGlvbjsKKwkJCQkJfSBlbHNlIHsKKworCQkJCQkJLy8gSW52aXRhdGlvbiBpcyBvZiB0eXBlICpwZXJpb2QqIGFuZCBpcyBub3QgdmFsaWQKKwkJCQkJCS8vIGFueW1vcmUsIHRoaXMgaXMgYW4gZXh0cmEgaG9vayB0byBkaXNwbGF5IHRoZSB0aW1lCisJCQkJCQkvLyBjb3JyZWN0bHkKKwkJCQkJCS8vIGluIHRoZSBtZXRob2Qgd2hlcmUgaXQgc2hvd3MgdGhhdCB0aGUgaGFzaCBjb2RlIGRvZXMKKwkJCQkJCS8vIG5vdCB3b3JrIGFueW1vcmUKKwkJCQkJCWludml0YXRpb24uc2V0QWxsb3dFbnRyeShmYWxzZSk7CisKKwkJCQkJCXJldHVybiBpbnZpdGF0aW9uOworCQkJCQl9CisJCQkJfSBlbHNlIHsKKwkJCQkJLy8gSW52aXRhdGlvbiBpcyBub3QgbGltaXRlZCwgbmVpdGhlciB0aW1lIG5vciBzaW5nbGUtdXNhZ2UKKwkJCQkJdGhpcy51cGRhdGVJbnZpdGF0aW9uKGludml0YXRpb24pOworCisJCQkJCWludml0YXRpb24uc2V0QWxsb3dFbnRyeSh0cnVlKTsKKwkJCQkJLy8gaW52aXRhdGlvbi5zZXRJbnZpdGF0aW9ucGFzcyhudWxsKTsKKwkJCQkJcmV0dXJuIGludml0YXRpb247CisJCQkJfQorCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2dldEludml0YXRpb25CeUhhc2hDb2RlXSIsIGVycik7CisJCX0KKwkJcmV0dXJuIG5ldyBMb25nKC0xKTsKKwl9CisKKwkvKioKKwkgKiAKKwkgKiBAcGFyYW0gaW52aXRhdGlvbgorCSAqLworCXB1YmxpYyB2b2lkIHVwZGF0ZUludml0YXRpb24oSW52aXRhdGlvbnMgaW52aXRhdGlvbikgeworCQl0cnkgeworCQkJaW52aXRhdGlvbi5zZXRVcGRhdGV0aW1lKG5ldyBEYXRlKCkpOworCQkJaWYgKGludml0YXRpb24uZ2V0SW52aXRhdGlvbnNfaWQoKSA9PSBudWxsKSB7CisJCQkJZW0ucGVyc2lzdChpbnZpdGF0aW9uKTsKKwkJCX0gZWxzZSB7CisJCQkJaWYgKCFlbS5jb250YWlucyhpbnZpdGF0aW9uKSkgeworCQkJCQllbS5tZXJnZShpbnZpdGF0aW9uKTsKKwkJCQl9CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW3NlbGVjdE1heEZyb21Vc2Vyc10gIiwgZXgyKTsKKwkJfQorCX0KKworCS8qKgorCSAqIAorCSAqIEBwYXJhbSBoYXNoQ29kZQorCSAqIEBwYXJhbSBwYXNzCisJICogQHJldHVybgorCSAqLworCXB1YmxpYyBPYmplY3QgY2hlY2tJbnZpdGF0aW9uUGFzcyhTdHJpbmcgaGFzaENvZGUsIFN0cmluZyBwYXNzKSB7CisJCXRyeSB7CisJCQlPYmplY3Qgb2JqID0gdGhpcy5nZXRJbnZpdGF0aW9uQnlIYXNoQ29kZShoYXNoQ29kZSwgZmFsc2UpOworCQkJbG9nLmRlYnVnKCJjaGVja0ludml0YXRpb25QYXNzIC0gb2JqOiAiICsgb2JqKTsKKwkJCWlmIChvYmogaW5zdGFuY2VvZiBJbnZpdGF0aW9ucykgeworCQkJCUludml0YXRpb25zIGludml0YXRpb24gPSAoSW52aXRhdGlvbnMpIG9iajsKKworCQkJCS8vIGxvZy5kZWJ1ZygiaW52aXRhdGlvbklkICIraW52aXRhdGlvbi5nZXRJbnZpdGF0aW9uc19pZCgpKTsKKwkJCQkvLyBsb2cuZGVidWcoInBhc3MgIitwYXNzKTsKKwkJCQkvLyBsb2cuZGVidWcoImdldEludml0YXRpb25wYXNzICIraW52aXRhdGlvbi5nZXRJbnZpdGF0aW9ucGFzcygpKTsKKworCQkJCWlmIChtYW5hZ2VDcnlwdFN0eWxlLmdldEluc3RhbmNlT2ZDcnlwdCgpLnZlcmlmeVBhc3N3b3JkKHBhc3MsCisJCQkJCQlpbnZpdGF0aW9uLmdldEludml0YXRpb25wYXNzKCkpKSB7CisJCQkJCXJldHVybiBuZXcgTG9uZygxKTsKKwkJCQl9IGVsc2UgeworCQkJCQlyZXR1cm4gbmV3IExvbmcoLTM0KTsKKwkJCQl9CisJCQl9IGVsc2UgeworCQkJCXJldHVybiBvYmo7CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2NoZWNrSW52aXRhdGlvblBhc3NdICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG5ldyBMb25nKC0xKTsKKwl9CisKKwlwdWJsaWMgdm9pZCB1cGRhdGVJbnZpdGF0aW9uQnlBcHBvaW50bWVudChMb25nIGFwcG9pbnRtZW50SWQsCisJCQlEYXRlIGFwcG9pbnRtZW50c3RhcnQsIERhdGUgYXBwb2ludG1lbnRlbmQpIHsKKwkJdHJ5IHsKKworCQkJRGF0ZSBnbXRUaW1lU3RhcnRTaGlmdGVkID0gbmV3IERhdGUoYXBwb2ludG1lbnRzdGFydC5nZXRUaW1lKCkKKwkJCQkJLSAoNSAqIDYwICogMTAwMCkpOworCisJCQlTdHJpbmcgaHFsID0gInNlbGVjdCBhIGZyb20gSW52aXRhdGlvbnMgYSAiCisJCQkJCSsgIldIRVJFIGEuYXBwb2ludG1lbnRJZCA9IDphcHBvaW50bWVudElkICAiOworCisJCQlUeXBlZFF1ZXJ5PEludml0YXRpb25zPiBxdWVyeSA9IGVtLmNyZWF0ZVF1ZXJ5KGhxbCwgSW52aXRhdGlvbnMuY2xhc3MpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJhcHBvaW50bWVudElkIiwgYXBwb2ludG1lbnRJZCk7CisKKwkJCUxpc3Q8SW52aXRhdGlvbnM+IGxpc3RJbnZpdGF0aW9ucyA9IHF1ZXJ5LmdldFJlc3VsdExpc3QoKTsKKworCQkJZm9yIChJbnZpdGF0aW9ucyBpbnYgOiBsaXN0SW52aXRhdGlvbnMpIHsKKwkJCQlpbnYuc2V0VmFsaWRGcm9tKGdtdFRpbWVTdGFydFNoaWZ0ZWQpOworCQkJCWludi5zZXRWYWxpZFRvKGFwcG9pbnRtZW50ZW5kKTsKKwkJCQlpZiAoaW52LmdldEludml0YXRpb25zX2lkKCkgPT0gbnVsbCkgeworCQkJCQllbS5wZXJzaXN0KGludik7CisJCQkJfSBlbHNlIHsKKwkJCQkJaWYgKCFlbS5jb250YWlucyhpbnYpKSB7CisJCQkJCQllbS5tZXJnZShpbnYpOworCQkJCQl9CisJCQkJfQorCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW3VwZGF0ZUludml0YXRpb25CeUFwcG9pbnRtZW50XSIsIGVycik7CisJCX0KKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9jb25mZXJlbmNlL1BvbGxNYW5hZ2VyLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9jb25mZXJlbmNlL1BvbGxNYW5hZ2VyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2Q1MGY4YwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2NvbmZlcmVuY2UvUG9sbE1hbmFnZXIuamF2YQpAQCAtMCwwICsxLDE5OSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNvbmZlcmVuY2U7CisKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eU1hbmFnZXI7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTm9SZXN1bHRFeGNlcHRpb247CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuUGVyc2lzdGVuY2VDb250ZXh0OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlF1ZXJ5OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlR5cGVkUXVlcnk7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLkZpZWxkTWFuYWdlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNvbmZlcmVuY2UuZGFvLlJvb21EYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLlVzZXJNYW5hZ2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnBvbGwuUG9sbFR5cGU7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucG9sbC5Sb29tUG9sbDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5wb2xsLlJvb21Qb2xsQW5zd2VyczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tLkNsaWVudDsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uQXV0b3dpcmVkOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsudHJhbnNhY3Rpb24uYW5ub3RhdGlvbi5UcmFuc2FjdGlvbmFsOworCitAVHJhbnNhY3Rpb25hbAorcHVibGljIGNsYXNzIFBvbGxNYW5hZ2VyIHsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkKKwkJCS5nZXRMb2dnZXIoUG9sbE1hbmFnZXIuY2xhc3MpOworCisJQFBlcnNpc3RlbmNlQ29udGV4dAorCXByaXZhdGUgRW50aXR5TWFuYWdlciBlbTsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBGaWVsZE1hbmFnZXIgZmllbGRNYW5hZ2VyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFVzZXJNYW5hZ2VyIHVzZXJNYW5hZ2VyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFJvb21EYW8gcm9vbURhbzsKKworCXB1YmxpYyBMb25nIGFkZFBvbGxUeXBlKExvbmcgbGFiZWxJZCwgQm9vbGVhbiBpc051bWVyaWMpIHsKKwkJbG9nLmRlYnVnKCJBZGRpbmcgcG9sbCB0eXBlOiAiICsgbGFiZWxJZCArICIsICIgKyBpc051bWVyaWMpOworCQlQb2xsVHlwZSBwdCA9IG5ldyBQb2xsVHlwZSgpOworCQlwdC5zZXRMYWJlbChmaWVsZE1hbmFnZXIuZ2V0RmllbGR2YWx1ZXNCeUlkKGxhYmVsSWQpKTsKKwkJcHQuc2V0SXNOdW1lcmljQW5zd2VyKGlzTnVtZXJpYyk7CisKKwkJZW0ucGVyc2lzdChwdCk7CisJCQorCQlyZXR1cm4gcHQuZ2V0UG9sbFR5cGVzSWQoKTsKKwl9CisJCisJcHVibGljIExpc3Q8UG9sbFR5cGU+IGdldFBvbGxUeXBlcygpIHsKKwkJcmV0dXJuIGVtLmNyZWF0ZU5hbWVkUXVlcnkoImdldFBvbGxUeXBlcyIsIFBvbGxUeXBlLmNsYXNzKQorCQkJCS5nZXRSZXN1bHRMaXN0KCk7CisJfQorCQorCXB1YmxpYyBQb2xsVHlwZSBnZXRQb2xsVHlwZShMb25nIHR5cGVJZCkgeworCQlUeXBlZFF1ZXJ5PFBvbGxUeXBlPiBxID0gZW0uY3JlYXRlTmFtZWRRdWVyeSgiZ2V0UG9sbFR5cGUiLCBQb2xsVHlwZS5jbGFzcyk7CisJCXEuc2V0UGFyYW1ldGVyKCJwb2xsVHlwZXNJZCIsIHR5cGVJZCk7CisJCXJldHVybiBxLmdldFNpbmdsZVJlc3VsdCgpOworCX0KKwkKKwlwdWJsaWMgUm9vbVBvbGwgY3JlYXRlUG9sbChDbGllbnQgcmMsIFN0cmluZyBwb2xsTmFtZSwgU3RyaW5nIHBvbGxRdWVzdGlvbiwgTG9uZyBwb2xsVHlwZUlkKSB7CisJCVJvb21Qb2xsIHJvb21QID0gbmV3IFJvb21Qb2xsKCk7CisJCQorCQlyb29tUC5zZXRDcmVhdGVkQnkodXNlck1hbmFnZXIuZ2V0VXNlckJ5SWQocmMuZ2V0VXNlcl9pZCgpKSk7CisJCXJvb21QLnNldENyZWF0ZWQobmV3IERhdGUoKSk7CisJCXJvb21QLnNldFBvbGxOYW1lKHBvbGxOYW1lKTsKKwkJcm9vbVAuc2V0UG9sbFF1ZXN0aW9uKHBvbGxRdWVzdGlvbik7CisJCXJvb21QLnNldFBvbGxUeXBlKGdldFBvbGxUeXBlKHBvbGxUeXBlSWQpKTsKKwkJcm9vbVAuc2V0Um9vbShyb29tRGFvLmdldChyYy5nZXRSb29tX2lkKCkpKTsKKwkJCisJCWVtLnBlcnNpc3Qocm9vbVApOworCQlyZXR1cm4gcm9vbVA7CisJfQorCQorCXB1YmxpYyB2b2lkIHNhdmVQb2xsQmFja3VwKFJvb21Qb2xsIHJwKSB7CisJCWVtLnBlcnNpc3QocnApOworCX0KKworCisJcHVibGljIFJvb21Qb2xsIHVwZGF0ZVBvbGwoUm9vbVBvbGwgcnApIHsKKwkJcmV0dXJuIGVtLm1lcmdlKHJwKTsKKwl9CisKKwlwdWJsaWMgYm9vbGVhbiBjbG9zZVBvbGwoTG9uZyByb29tX2lkKXsKKwkJdHJ5IHsKKwkJCWxvZy5kZWJ1ZygiIDo6IGNsb3NlUG9sbCA6OiAiKTsKKwkJCVF1ZXJ5IHEgPSBlbS5jcmVhdGVOYW1lZFF1ZXJ5KCJjbG9zZVBvbGwiKTsKKwkJCXEuc2V0UGFyYW1ldGVyKCJyb29tc19pZCIsIHJvb21faWQpOworCQkJcS5zZXRQYXJhbWV0ZXIoImFyY2hpdmVkIiwgdHJ1ZSk7CisJCQlyZXR1cm4gcS5leGVjdXRlVXBkYXRlKCkgPiAwOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltjbG9zZVBvbGxdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gZmFsc2U7CisJfQorCisJcHVibGljIGJvb2xlYW4gZGVsZXRlUG9sbChMb25nIHBvbGxfaWQpeworCQl0cnkgeworCQkJbG9nLmRlYnVnKCIgOjogZGVsZXRlUG9sbCA6OiAiKTsKKwkJCVF1ZXJ5IHEgPSBlbS5jcmVhdGVOYW1lZFF1ZXJ5KCJkZWxldGVQb2xsIik7CisJCQlxLnNldFBhcmFtZXRlcigicm9vbVBvbGxJZCIsIHBvbGxfaWQpOworCQkJcmV0dXJuIHEuZXhlY3V0ZVVwZGF0ZSgpID4gMDsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbZGVsZXRlUG9sbF0iLCBlcnIpOworCQl9CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwlwdWJsaWMgUm9vbVBvbGwgZ2V0UG9sbChMb25nIHJvb21faWQpIHsKKwkJdHJ5IHsKKwkJCWxvZy5kZWJ1ZygiIDo6IGdldFBvbGwgOjogIiArIHJvb21faWQpOworCQkJVHlwZWRRdWVyeTxSb29tUG9sbD4gcSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoImdldFBvbGwiLCBSb29tUG9sbC5jbGFzcyk7CisJCQlxLnNldFBhcmFtZXRlcigicm9vbV9pZCIsIHJvb21faWQpOworCQkJcS5zZXRQYXJhbWV0ZXIoImFyY2hpdmVkIiwgZmFsc2UpOworCQkJcmV0dXJuIHEuZ2V0U2luZ2xlUmVzdWx0KCk7CisJCX0gY2F0Y2ggKE5vUmVzdWx0RXhjZXB0aW9uIG5yZSkgeworCQkJLy9leHBlY3RlZAorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRQb2xsXSIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCQorCXB1YmxpYyBMaXN0PFJvb21Qb2xsPiBnZXRQb2xsTGlzdEJhY2t1cCgpIHsKKwkJdHJ5IHsKKwkJCVR5cGVkUXVlcnk8Um9vbVBvbGw+IHEgPSBlbS5jcmVhdGVOYW1lZFF1ZXJ5KCJnZXRQb2xsTGlzdEJhY2t1cCIsUm9vbVBvbGwuY2xhc3MpOworCQkJcmV0dXJuIHEuZ2V0UmVzdWx0TGlzdCgpOworCQl9IGNhdGNoIChOb1Jlc3VsdEV4Y2VwdGlvbiBucmUpIHsKKwkJCS8vZXhwZWN0ZWQKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbZ2V0UG9sbF0iLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKwkKKwlwdWJsaWMgTGlzdDxSb29tUG9sbD4gZ2V0QXJjaGl2ZWRQb2xsTGlzdChMb25nIHJvb21faWQpIHsKKwkJdHJ5IHsKKwkJCWxvZy5kZWJ1ZygiIDo6IGdldFBvbGwgOjogIiArIHJvb21faWQpOworCQkJVHlwZWRRdWVyeTxSb29tUG9sbD4gcSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoImdldEFyY2hpdmVkUG9sbExpc3QiLFJvb21Qb2xsLmNsYXNzKTsKKwkJCXEuc2V0UGFyYW1ldGVyKCJyb29tX2lkIiwgcm9vbV9pZCk7CisJCQlxLnNldFBhcmFtZXRlcigiYXJjaGl2ZWQiLCB0cnVlKTsKKwkJCXJldHVybiBxLmdldFJlc3VsdExpc3QoKTsKKwkJfSBjYXRjaCAoTm9SZXN1bHRFeGNlcHRpb24gbnJlKSB7CisJCQkvL2V4cGVjdGVkCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2dldFBvbGxdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisJCisJcHVibGljIGJvb2xlYW4gaGFzUG9sbChMb25nIHJvb21faWQpIHsKKwkJdHJ5IHsKKwkJCWxvZy5kZWJ1ZygiIDo6IGhhc1BvbGwgOjogIiArIHJvb21faWQpOworCQkJVHlwZWRRdWVyeTxMb25nPiBxID0gZW0uY3JlYXRlTmFtZWRRdWVyeSgiaGFzUG9sbCIsIExvbmcuY2xhc3MpOworCQkJcS5zZXRQYXJhbWV0ZXIoInJvb21faWQiLCByb29tX2lkKTsKKwkJCXEuc2V0UGFyYW1ldGVyKCJhcmNoaXZlZCIsIGZhbHNlKTsKKwkJCXJldHVybiBxLmdldFNpbmdsZVJlc3VsdCgpID4gMDsKKwkJfSBjYXRjaCAoTm9SZXN1bHRFeGNlcHRpb24gbnJlKSB7CisJCQkvL2V4cGVjdGVkCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2dldFBvbGxdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gZmFsc2U7CisJfQorCQorCXB1YmxpYyBib29sZWFuIGhhc1ZvdGVkKExvbmcgcm9vbV9pZCwgTG9uZyB1c2VyaWQpIHsKKwkJdHJ5IHsKKwkJCWxvZy5kZWJ1ZygiIDo6IGhhc1ZvdGVkIDo6ICIgKyByb29tX2lkICsgIiwgIiArIHVzZXJpZCk7CisJCQlUeXBlZFF1ZXJ5PFJvb21Qb2xsQW5zd2Vycz4gcSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoImhhc1ZvdGVkIiwgUm9vbVBvbGxBbnN3ZXJzLmNsYXNzKTsKKwkJCXEuc2V0UGFyYW1ldGVyKCJyb29tX2lkIiwgcm9vbV9pZCk7CisJCQlxLnNldFBhcmFtZXRlcigidXNlcmlkIiwgdXNlcmlkKTsKKwkJCXEuc2V0UGFyYW1ldGVyKCJhcmNoaXZlZCIsIGZhbHNlKTsKKwkJCXEuZ2V0U2luZ2xlUmVzdWx0KCk7CisJCQlyZXR1cm4gdHJ1ZTsKKwkJfSBjYXRjaCAoTm9SZXN1bHRFeGNlcHRpb24gbnJlKSB7CisJCQkvL2V4cGVjdGVkCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2dldFBvbGxdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gZmFsc2U7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvY29uZmVyZW5jZS9Sb29tTWFuYWdlci5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvY29uZmVyZW5jZS9Sb29tTWFuYWdlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwMWNkNzEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9jb25mZXJlbmNlL1Jvb21NYW5hZ2VyLmphdmEKQEAgLTAsMCArMSwxNTU3IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY29uZmVyZW5jZTsKKworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlua2VkTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5TWFuYWdlcjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5QZXJzaXN0ZW5jZUNvbnRleHQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVHlwZWRRdWVyeTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5jcml0ZXJpYS5Dcml0ZXJpYUJ1aWxkZXI7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuY3JpdGVyaWEuQ3JpdGVyaWFRdWVyeTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5jcml0ZXJpYS5QcmVkaWNhdGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuY3JpdGVyaWEuUm9vdDsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuQXV0aExldmVsVXRpbDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLmRhby5Db25maWd1cmF0aW9uRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmVhbnMuYmFzaWMuU2VhcmNoUmVzdWx0OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY29uZmVyZW5jZS5kYW8uUm9vbURhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNvbmZlcmVuY2UuZGFvLlJvb21Nb2RlcmF0b3JzRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY29uZmVyZW5jZS5kYW8uU2lwRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEudXNlci5PcmdhbmlzYXRpb25NYW5hZ2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEudXNlci5kYW8uVXNlcnNEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuZG9tYWluLk9yZ2FuaXNhdGlvbl9Vc2VyczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tLlJvb207CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbS5Sb29tT3JnYW5pc2F0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnJvb20uUm9vbVR5cGU7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlci5Vc2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnNlc3Npb24uSVNlc3Npb25NYW5hZ2VyOworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5BdXRvd2lyZWQ7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay50cmFuc2FjdGlvbi5hbm5vdGF0aW9uLlRyYW5zYWN0aW9uYWw7CisKKy8qKgorICogCisgKiBAYXV0aG9yIHN3YWduZXIKKyAqIAorICovCitAVHJhbnNhY3Rpb25hbAorcHVibGljIGNsYXNzIFJvb21NYW5hZ2VyIHsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeQorCQkJLmdldExvZ2dlcihSb29tTWFuYWdlci5jbGFzcyk7CisKKwlAUGVyc2lzdGVuY2VDb250ZXh0CisJcHJpdmF0ZSBFbnRpdHlNYW5hZ2VyIGVtOworCisJQEF1dG93aXJlZAorCXByaXZhdGUgT3JnYW5pc2F0aW9uTWFuYWdlciBvcmdhbmlzYXRpb25NYW5hZ2VyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFJvb21Nb2RlcmF0b3JzRGFvIHJvb21Nb2RlcmF0b3JzRGFvOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFVzZXJzRGFvIHVzZXJzRGFvOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEF1dGhMZXZlbFV0aWwgYXV0aExldmVsVXRpbDsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBJU2Vzc2lvbk1hbmFnZXIgc2Vzc2lvbk1hbmFnZXI7CisgICAgQEF1dG93aXJlZAorCXByaXZhdGUgQ29uZmlndXJhdGlvbkRhbyBjb25maWd1cmF0aW9uRGFvOworICAgIEBBdXRvd2lyZWQKKwlwcml2YXRlIFJvb21EYW8gcm9vbURhbzsKKyAgICBAQXV0b3dpcmVkCisJcHJpdmF0ZSBTaXBEYW8gc2lwRGFvOworCisJLyoqCisJICogYWRkIGEgbmV3IFJlY29yZCB0byB0aGUgdGFibGUgcm9vbXR5cGVzCisJICogCisJICogQHBhcmFtIG5hbWUKKwkgKiBAcmV0dXJuIElEIG9mIG5ldyBjcmVhdGVkIHJvb210eXBlIG9yIG51bGwKKwkgKi8KKwlwdWJsaWMgTG9uZyBhZGRSb29tVHlwZShTdHJpbmcgbmFtZSwgYm9vbGVhbiBkZWxldGVkKSB7CisJCXRyeSB7CisJCQlSb29tVHlwZSBydHlwZSA9IG5ldyBSb29tVHlwZSgpOworCQkJcnR5cGUuc2V0TmFtZShuYW1lKTsKKwkJCXJ0eXBlLnNldFN0YXJ0dGltZShuZXcgRGF0ZSgpKTsKKwkJCXJ0eXBlLnNldERlbGV0ZWQoZGVsZXRlZCk7CisJCQlydHlwZSA9IGVtLm1lcmdlKHJ0eXBlKTsKKwkJCWxvbmcgcmV0dXJuSWQgPSBydHlwZS5nZXRSb29tdHlwZXNfaWQoKTsKKwkJCXJldHVybiByZXR1cm5JZDsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbYWRkUm9vbVR5cGVdICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLyoqCisJICogZ2V0IGFsbCBhdmFpbGlibGUgUm9vbVR5cGVzCisJICogCisJICogQHJldHVybiBMaXN0IG9mIFJvb21UeXBlcworCSAqLworCXB1YmxpYyBMaXN0PFJvb21UeXBlPiBnZXRBbGxSb29tVHlwZXMoKSB7CisJCXRyeSB7CisJCQlUeXBlZFF1ZXJ5PFJvb21UeXBlPiBxdWVyeSA9IGVtCisJCQkJCS5jcmVhdGVOYW1lZFF1ZXJ5KCJnZXRBbGxSb29tVHlwZXMiLCBSb29tVHlwZS5jbGFzcyk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImRlbGV0ZWQiLCB0cnVlKTsKKwkJCXJldHVybiBxdWVyeS5nZXRSZXN1bHRMaXN0KCk7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldEFsbFJvb21UeXBlc10gIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvKioKKwkgKiBHZXQgYSBSb29tVHlwZXMtT2JqZWN0IGJ5IGl0cyBpZAorCSAqIAorCSAqIEBwYXJhbSByb29tdHlwZXNfaWQKKwkgKiBAcmV0dXJuIFJvb21UeXBlcy1PYmplY3Qgb3IgTlVMTAorCSAqLworCXB1YmxpYyBSb29tVHlwZSBnZXRSb29tVHlwZXNCeUlkKGxvbmcgcm9vbXR5cGVzX2lkKSB7CisJCXRyeSB7CisJCQlUeXBlZFF1ZXJ5PFJvb21UeXBlPiBxdWVyeSA9IGVtCisJCQkJCS5jcmVhdGVOYW1lZFF1ZXJ5KCJnZXRSb29tVHlwZXNCeUlkIiwgUm9vbVR5cGUuY2xhc3MpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJyb29tdHlwZXNfaWQiLCByb29tdHlwZXNfaWQpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJkZWxldGVkIiwgdHJ1ZSk7CisJCQlMaXN0PD8+IGxsID0gcXVlcnkuZ2V0UmVzdWx0TGlzdCgpOworCQkJaWYgKGxsLnNpemUoKSA+IDApIHsKKwkJCQlyZXR1cm4gKFJvb21UeXBlKSBsbC5nZXQoMCk7CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldFJvb21UeXBlc0J5SWRdICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLyoqCisJICogZ2V0IGEgcm9vbSBvYmplY3QgaWYgdXNlciBsZXZlbAorCSAqIAorCSAqIEBwYXJhbSB1c2VyX2xldmVsCisJICogQHBhcmFtIHJvb21zX2lkCisJICogQHJldHVybgorCSAqLworCXB1YmxpYyBSb29tIGdldFJvb21CeUlkKGxvbmcgdXNlcl9sZXZlbCwgbG9uZyByb29tc19pZCkgeworCQl0cnkgeworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tVc2VyTGV2ZWwodXNlcl9sZXZlbCkpIHsKKwkJCQlyZXR1cm4gcm9vbURhby5nZXQocm9vbXNfaWQpOworCQkJfSBlbHNlCisJCQkJbG9nLmVycm9yKCJnZXRSb29tYnlJZCA6IFVzZXJsZXZlbCIgKyB1c2VyX2xldmVsCisJCQkJCQkrICIgbm90IGFsbG93ZWQiKTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZ2V0Um9vbUJ5SWRdICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIFJvb20gZ2V0Um9vbVdpdGhDdXJyZW50VXNlcnNCeUlkKGxvbmcgdXNlcl9sZXZlbCwgbG9uZyByb29tc19pZCkgeworCQl0cnkgeworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tVc2VyTGV2ZWwodXNlcl9sZXZlbCkpIHsKKwkJCQlSb29tIHJvb20gPSByb29tRGFvLmdldChyb29tc19pZCk7CisKKwkJCQlpZiAocm9vbSAhPSBudWxsKSB7CisJCQkJCXJvb20uc2V0Q3VycmVudHVzZXJzKHNlc3Npb25NYW5hZ2VyLmdldENsaWVudExpc3RCeVJvb20ocm9vbS5nZXRSb29tc19pZCgpKSk7CisKKwkJCQkJcmV0dXJuIHJvb207CisJCQkJfQorCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRSb29tV2l0aEN1cnJlbnRVc2Vyc0J5SWRdICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLyoqCisJICogR2V0IGEgUm9vbXMtT2JqZWN0IG9yIE5VTEwKKwkgKiAKKwkgKiBAcGFyYW0gZXh0ZXJuYWxSb29tSWQKKwkgKiBAcmV0dXJuIFJvb21zLU9iamVjdCBvciBOVUxMCisJICovCisJcHVibGljIFJvb20gZ2V0Um9vbUJ5RXh0ZXJuYWxJZChMb25nIGV4dGVybmFsUm9vbUlkLAorCQkJU3RyaW5nIGV4dGVybmFsUm9vbVR5cGUsIGxvbmcgcm9vbXR5cGVzX2lkKSB7CisJCWxvZy5kZWJ1ZygiZ2V0Um9vbWJ5RXh0ZXJuYWxJZCA6ICIgKyBleHRlcm5hbFJvb21JZCArICIgLSAiCisJCQkJKyBleHRlcm5hbFJvb21UeXBlICsgIiAtICIgKyByb29tdHlwZXNfaWQpOworCQl0cnkgeworCQkJVHlwZWRRdWVyeTxSb29tPiBxdWVyeSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoImdldFJvb21CeUV4dGVybmFsSWQiLCBSb29tLmNsYXNzKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiZXh0ZXJuYWxSb29tSWQiLCBleHRlcm5hbFJvb21JZCk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImV4dGVybmFsUm9vbVR5cGUiLCBleHRlcm5hbFJvb21UeXBlKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigicm9vbXR5cGVzX2lkIiwgcm9vbXR5cGVzX2lkKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiZGVsZXRlZCIsIHRydWUpOworCQkJTGlzdDw/PiBsbCA9IHF1ZXJ5LmdldFJlc3VsdExpc3QoKTsKKwkJCWlmIChsbC5zaXplKCkgPiAwKSB7CisJCQkJcmV0dXJuIChSb29tKSBsbC5nZXQoMCk7CisJCQl9IGVsc2UgeworCQkJCWxvZy5lcnJvcigiQ291bGQgbm90IGZpbmQgcm9vbSAiICsgZXh0ZXJuYWxSb29tSWQpOworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRSb29tQnlFeHRlcm5hbElkXSAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBSb29tIGdldFJvb21CeUV4dGVybmFsSWQobG9uZyB1c2VyX2xldmVsLCBMb25nIGV4dGVybmFsUm9vbUlkLAorCQkJU3RyaW5nIGV4dGVybmFsUm9vbVR5cGUsIGxvbmcgcm9vbXR5cGVzX2lkKSB7CisJCXRyeSB7CisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1VzZXJMZXZlbCh1c2VyX2xldmVsKSkgeworCQkJCXJldHVybiB0aGlzLmdldFJvb21CeUV4dGVybmFsSWQoZXh0ZXJuYWxSb29tSWQsCisJCQkJCQlleHRlcm5hbFJvb21UeXBlLCByb29tdHlwZXNfaWQpOworCQkJfSBlbHNlCisJCQkJbG9nLmVycm9yKCJnZXRSb29tYnlFeHRlcm5hbElkIDogVXNlcmxldmVsIiArIHVzZXJfbGV2ZWwKKwkJCQkJCSsgIiBub3QgYWxsb3dlZCIpOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRSb29tQnlFeHRlcm5hbElkXSAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBTZWFyY2hSZXN1bHQ8Um9vbT4gZ2V0Um9vbXMobG9uZyB1c2VyX2xldmVsLCBpbnQgc3RhcnQsIGludCBtYXgsCisJCQlTdHJpbmcgb3JkZXJieSwgYm9vbGVhbiBhc2MsIFN0cmluZyBzZWFyY2gpIHsKKwkJdHJ5IHsKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrQWRtaW5MZXZlbCh1c2VyX2xldmVsKSkgeworCQkJCVNlYXJjaFJlc3VsdDxSb29tPiBzUmVzdWx0ID0gbmV3IFNlYXJjaFJlc3VsdDxSb29tPigpOworCQkJCXNSZXN1bHQuc2V0UmVjb3Jkcyh0aGlzLnNlbGVjdE1heEZyb21Sb29tcyhzZWFyY2gpKTsKKwkJCQlzUmVzdWx0LnNldE9iamVjdE5hbWUoUm9vbS5jbGFzcy5nZXROYW1lKCkpOworCQkJCXNSZXN1bHQuc2V0UmVzdWx0KHRoaXMuZ2V0Um9vbXNJbnRlcm5hdGxCeUhRTChzdGFydCwgbWF4LAorCQkJCQkJb3JkZXJieSwgYXNjLCBzZWFyY2gpKTsKKwkJCQlyZXR1cm4gc1Jlc3VsdDsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZ2V0Um9vbXNdICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCQorCXB1YmxpYyBTZWFyY2hSZXN1bHQ8Um9vbT4gZ2V0Um9vbXNXaXRoQ3VycmVudFVzZXJzKGxvbmcgdXNlcl9sZXZlbCwgaW50IHN0YXJ0LAorCQkJaW50IG1heCwgU3RyaW5nIG9yZGVyYnksIGJvb2xlYW4gYXNjKSB7CisJCXRyeSB7CisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja0FkbWluTGV2ZWwodXNlcl9sZXZlbCkpIHsKKwkJCQlTZWFyY2hSZXN1bHQ8Um9vbT4gc1Jlc3VsdCA9IG5ldyBTZWFyY2hSZXN1bHQ8Um9vbT4oKTsKKwkJCQlzUmVzdWx0LnNldFJlY29yZHModGhpcy5zZWxlY3RNYXhGcm9tUm9vbXMoIiIpKTsKKwkJCQlzUmVzdWx0LnNldE9iamVjdE5hbWUoUm9vbS5jbGFzcy5nZXROYW1lKCkpOworCisJCQkJTGlzdDxSb29tPiByb29tcyA9IHRoaXMuZ2V0Um9vbXNJbnRlcm5hdGwoc3RhcnQsIG1heCwgb3JkZXJieSwKKwkJCQkJCWFzYyk7CisKKwkJCQlmb3IgKFJvb20gcm9vbSA6IHJvb21zKSB7CisJCQkJCXJvb20uc2V0Q3VycmVudHVzZXJzKHNlc3Npb25NYW5hZ2VyLmdldENsaWVudExpc3RCeVJvb20ocm9vbS5nZXRSb29tc19pZCgpKSk7CisJCQkJfQorCisJCQkJc1Jlc3VsdC5zZXRSZXN1bHQocm9vbXMpOworCQkJCXJldHVybiBzUmVzdWx0OworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRSb29tc10gIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgTGlzdDxSb29tPiBnZXRSb29tc1dpdGhDdXJyZW50VXNlcnNCeUxpc3QobG9uZyB1c2VyX2xldmVsLAorCQkJaW50IHN0YXJ0LCBpbnQgbWF4LCBTdHJpbmcgb3JkZXJieSwgYm9vbGVhbiBhc2MpIHsKKwkJdHJ5IHsKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrQWRtaW5MZXZlbCh1c2VyX2xldmVsKSkgeworCisJCQkJTGlzdDxSb29tPiByb29tcyA9IHRoaXMuZ2V0Um9vbXNJbnRlcm5hdGwoc3RhcnQsIG1heCwgb3JkZXJieSwKKwkJCQkJCWFzYyk7CisKKwkJCQlmb3IgKFJvb20gcm9vbSA6IHJvb21zKSB7CisJCQkJCXJvb20uc2V0Q3VycmVudHVzZXJzKHNlc3Npb25NYW5hZ2VyLmdldENsaWVudExpc3RCeVJvb20ocm9vbS5nZXRSb29tc19pZCgpKSk7CisJCQkJfQorCisJCQkJcmV0dXJuIHJvb21zOworCisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldFJvb21zXSAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMaXN0PFJvb20+IGdldFJvb21zV2l0aEN1cnJlbnRVc2Vyc0J5TGlzdEFuZFR5cGUobG9uZyB1c2VyX2xldmVsLAorCQkJaW50IHN0YXJ0LCBpbnQgbWF4LCBTdHJpbmcgb3JkZXJieSwgYm9vbGVhbiBhc2MsCisJCQlTdHJpbmcgZXh0ZXJuYWxSb29tVHlwZSkgeworCQl0cnkgeworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tBZG1pbkxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlMaXN0PFJvb20+IHJvb21zID0gdGhpcy5nZXRSb29tc0ludGVybmF0bGJ5VHlwZShzdGFydCwgbWF4LAorCQkJCQkJb3JkZXJieSwgYXNjLCBleHRlcm5hbFJvb21UeXBlKTsKKworCQkJCWZvciAoUm9vbSByb29tIDogcm9vbXMpIHsKKwkJCQkJcm9vbS5zZXRDdXJyZW50dXNlcnMoc2Vzc2lvbk1hbmFnZXIuZ2V0Q2xpZW50TGlzdEJ5Um9vbShyb29tLmdldFJvb21zX2lkKCkpKTsKKwkJCQl9CisKKwkJCQlyZXR1cm4gcm9vbXM7CisKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZ2V0Um9vbXNdICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIExvbmcgc2VsZWN0TWF4RnJvbVJvb21zKFN0cmluZyBzZWFyY2gpIHsKKwkJdHJ5IHsKKwkJCWlmIChzZWFyY2gubGVuZ3RoKCkgPT0gMCkgeworCQkJCXNlYXJjaCA9ICIlIjsKKwkJCX0gZWxzZSB7CisJCQkJc2VhcmNoID0gIiUiICsgc2VhcmNoICsgIiUiOworCQkJfQorCQkJLy8gZ2V0IGFsbCB1c2VycworCQkJVHlwZWRRdWVyeTxMb25nPiBxdWVyeSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoInNlbGVjdE1heEZyb21Sb29tcyIsIExvbmcuY2xhc3MpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJzZWFyY2giLCBzZWFyY2gpOworCQkJTGlzdDxMb25nPiBsbCA9IHF1ZXJ5LmdldFJlc3VsdExpc3QoKTsKKwkJCWxvZy5kZWJ1ZygiTnVtYmVyIG9mIHJlY29yZHMiICsgbGwuZ2V0KDApKTsKKwkJCXJldHVybiBsbC5nZXQoMCk7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW3NlbGVjdE1heEZyb21Sb29tc10gIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvKioKKwkgKiBnZXRzIGEgbGlzdCBvZiBhbGwgYXZhaWxpYmxlIHJvb21zCisJICogCisJICogQHBhcmFtIHVzZXJfbGV2ZWwKKwkgKiBAcGFyYW0gc3RhcnQKKwkgKiBAcGFyYW0gbWF4CisJICogQHBhcmFtIG9yZGVyYnkKKwkgKiBAcGFyYW0gYXNjCisJICogQHJldHVybgorCSAqLworCXB1YmxpYyBMaXN0PFJvb20+IGdldFJvb21zSW50ZXJuYXRsKGludCBzdGFydCwgaW50IG1heCwgU3RyaW5nIG9yZGVyYnksCisJCQlib29sZWFuIGFzYykgeworCQl0cnkgeworCQkJQ3JpdGVyaWFCdWlsZGVyIGNiID0gZW0uZ2V0Q3JpdGVyaWFCdWlsZGVyKCk7CisJCQlDcml0ZXJpYVF1ZXJ5PFJvb20+IGNxID0gY2IuY3JlYXRlUXVlcnkoUm9vbS5jbGFzcyk7CisJCQlSb290PFJvb20+IGMgPSBjcS5mcm9tKFJvb20uY2xhc3MpOworCQkJUHJlZGljYXRlIGNvbmRpdGlvbiA9IGNiLmVxdWFsKGMuZ2V0KCJkZWxldGVkIiksIGZhbHNlKTsKKwkJCWNxLndoZXJlKGNvbmRpdGlvbik7CisJCQljcS5kaXN0aW5jdChhc2MpOworCQkJaWYgKGFzYykgeworCQkJCWNxLm9yZGVyQnkoY2IuYXNjKGMuZ2V0KG9yZGVyYnkpKSk7CisJCQl9IGVsc2UgeworCQkJCWNxLm9yZGVyQnkoY2IuZGVzYyhjLmdldChvcmRlcmJ5KSkpOworCQkJfQorCQkJVHlwZWRRdWVyeTxSb29tPiBxID0gZW0uY3JlYXRlUXVlcnkoY3EpOworCQkJcS5zZXRGaXJzdFJlc3VsdChzdGFydCk7CisJCQlxLnNldE1heFJlc3VsdHMobWF4KTsKKwkJCUxpc3Q8Um9vbT4gbGwgPSBxLmdldFJlc3VsdExpc3QoKTsKKwkJCXJldHVybiBsbDsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZ2V0Um9vbXMgXSAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCS8qKgorCSAqIGdldHMgYSBsaXN0IG9mIGFsbCBhdmFpbGlibGUgcm9vbXMKKwkgKiAKKwkgKiBAcGFyYW0gdXNlcl9sZXZlbAorCSAqIEBwYXJhbSBzdGFydAorCSAqIEBwYXJhbSBtYXgKKwkgKiBAcGFyYW0gb3JkZXJieQorCSAqIEBwYXJhbSBhc2MKKwkgKiBAcmV0dXJuCisJICovCisJcHVibGljIExpc3Q8Um9vbT4gZ2V0Um9vbXNJbnRlcm5hdGxCeUhRTChpbnQgc3RhcnQsIGludCBtYXgsCisJCQlTdHJpbmcgb3JkZXJieSwgYm9vbGVhbiBhc2MsIFN0cmluZyBzZWFyY2gpIHsKKwkJdHJ5IHsKKworCQkJU3RyaW5nIGhxbCA9ICJzZWxlY3QgYyBmcm9tIFJvb20gYyAiCisJCQkJCSsgIndoZXJlIGMuZGVsZXRlZCA8PiB0cnVlIEFORCBjLm5hbWUgTElLRSA6c2VhcmNoICI7CisKKwkJCWlmIChzZWFyY2gubGVuZ3RoKCkgPT0gMCkgeworCQkJCXNlYXJjaCA9ICIlIjsKKwkJCX0gZWxzZSB7CisJCQkJc2VhcmNoID0gIiUiICsgc2VhcmNoICsgIiUiOworCQkJfQorCQkJaWYgKG9yZGVyYnkgIT0gbnVsbCkgeworCQkJCWhxbCArPSAiIE9SREVSIEJZICIgKyAob3JkZXJieS5zdGFydHNXaXRoKCJjLiIpID8gIiIgOiAiYy4iKSArIG9yZGVyYnk7CisJCisJCQkJaWYgKGFzYykgeworCQkJCQlocWwgKz0gIiBBU0MiOworCQkJCX0gZWxzZSB7CisJCQkJCWhxbCArPSAiIERFU0MiOworCQkJCX0KKwkJCX0KKwkJCVR5cGVkUXVlcnk8Um9vbT4gcXVlcnkgPSBlbS5jcmVhdGVRdWVyeShocWwsIFJvb20uY2xhc3MpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJzZWFyY2giLCBzZWFyY2gpOworCQkJcXVlcnkuc2V0Rmlyc3RSZXN1bHQoc3RhcnQpOworCQkJcXVlcnkuc2V0TWF4UmVzdWx0cyhtYXgpOworCisJCQlyZXR1cm4gcXVlcnkuZ2V0UmVzdWx0TGlzdCgpOworCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldFJvb21zIF0gIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgTGlzdDxSb29tPiBnZXRBbGxSb29tcygpIHsKKwkJdHJ5IHsKKwkJCUNyaXRlcmlhQnVpbGRlciBjYiA9IGVtLmdldENyaXRlcmlhQnVpbGRlcigpOworCQkJQ3JpdGVyaWFRdWVyeTxSb29tPiBjcSA9IGNiLmNyZWF0ZVF1ZXJ5KFJvb20uY2xhc3MpOworCQkJUm9vdDxSb29tPiBjID0gY3EuZnJvbShSb29tLmNsYXNzKTsKKwkJCVByZWRpY2F0ZSBjb25kaXRpb24gPSBjYi5lcXVhbChjLmdldCgiZGVsZXRlZCIpLCBmYWxzZSk7CisJCQljcS53aGVyZShjb25kaXRpb24pOworCQkJVHlwZWRRdWVyeTxSb29tPiBxID0gZW0uY3JlYXRlUXVlcnkoY3EpOworCQkJTGlzdDxSb29tPiBsbCA9IHEuZ2V0UmVzdWx0TGlzdCgpOworCQkJcmV0dXJuIGxsOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRBbGxSb29tc10iLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMaXN0PFJvb20+IGdldEJhY2t1cFJvb21zKCkgeworCQl0cnkgeworCQkJcmV0dXJuIGVtLmNyZWF0ZU5hbWVkUXVlcnkoImdldEJhY2t1cFJvb21zIiwgUm9vbS5jbGFzcykKKwkJCQkJLmdldFJlc3VsdExpc3QoKTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCWxvZy5lcnJvcigiW2dldEJhY2t1cFJvb21zXSIsIGUpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMaXN0PFJvb20+IGdldFJvb21zSW50ZXJuYXRsYnlUeXBlKGludCBzdGFydCwgaW50IG1heCwKKwkJCVN0cmluZyBvcmRlcmJ5LCBib29sZWFuIGFzYywgU3RyaW5nIGV4dGVybmFsUm9vbVR5cGUpIHsKKwkJdHJ5IHsKKwkJCUNyaXRlcmlhQnVpbGRlciBjYiA9IGVtLmdldENyaXRlcmlhQnVpbGRlcigpOworCQkJQ3JpdGVyaWFRdWVyeTxSb29tPiBjcSA9IGNiLmNyZWF0ZVF1ZXJ5KFJvb20uY2xhc3MpOworCQkJUm9vdDxSb29tPiBjID0gY3EuZnJvbShSb29tLmNsYXNzKTsKKwkJCVByZWRpY2F0ZSBjb25kaXRpb24gPSBjYi5lcXVhbChjLmdldCgiZGVsZXRlZCIpLCBmYWxzZSk7CisJCQlQcmVkaWNhdGUgc3ViQ29uZGl0aW9uID0gY2IuZXF1YWwoYy5nZXQoImV4dGVybmFsUm9vbVR5cGUiKSwKKwkJCQkJZXh0ZXJuYWxSb29tVHlwZSk7CisJCQljcS53aGVyZShjb25kaXRpb24sIHN1YkNvbmRpdGlvbik7CisJCQljcS5kaXN0aW5jdChhc2MpOworCQkJaWYgKGFzYykgeworCQkJCWNxLm9yZGVyQnkoY2IuYXNjKGMuZ2V0KG9yZGVyYnkpKSk7CisJCQl9IGVsc2UgeworCQkJCWNxLm9yZGVyQnkoY2IuZGVzYyhjLmdldChvcmRlcmJ5KSkpOworCQkJfQorCQkJVHlwZWRRdWVyeTxSb29tPiBxID0gZW0uY3JlYXRlUXVlcnkoY3EpOworCQkJcS5zZXRGaXJzdFJlc3VsdChzdGFydCk7CisJCQlxLnNldE1heFJlc3VsdHMobWF4KTsKKwkJCUxpc3Q8Um9vbT4gbGwgPSBxLmdldFJlc3VsdExpc3QoKTsKKwkJCXJldHVybiBsbDsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZ2V0Um9vbXMgXSAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMaXN0PFJvb21PcmdhbmlzYXRpb24+IGdldE9yZ2FuaXNhdGlvbnNCeVJvb20obG9uZyB1c2VyX2xldmVsLAorCQkJbG9uZyByb29tc19pZCkgeworCQl0cnkgeworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tVc2VyTGV2ZWwodXNlcl9sZXZlbCkpIHsKKwkJCQlTdHJpbmcgaHFsID0gInNlbGVjdCBjIGZyb20gUm9vbU9yZ2FuaXNhdGlvbiBhcyBjICIKKwkJCQkJCSsgIndoZXJlIGMucm9vbS5yb29tc19pZCA9IDpyb29tc19pZCAiCisJCQkJCQkrICJBTkQgYy5kZWxldGVkIDw+IDpkZWxldGVkIjsKKwkJCQlUeXBlZFF1ZXJ5PFJvb21PcmdhbmlzYXRpb24+IHEgPSBlbS5jcmVhdGVRdWVyeShocWwsIFJvb21PcmdhbmlzYXRpb24uY2xhc3MpOworCisJCQkJcS5zZXRQYXJhbWV0ZXIoInJvb21zX2lkIiwgcm9vbXNfaWQpOworCQkJCXEuc2V0UGFyYW1ldGVyKCJkZWxldGVkIiwgdHJ1ZSk7CisJCQkJTGlzdDxSb29tT3JnYW5pc2F0aW9uPiBsbCA9IHEuZ2V0UmVzdWx0TGlzdCgpOworCQkJCXJldHVybiBsbDsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZ2V0T3JnYW5pc2F0aW9uc0J5Um9vbV0gIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvKioKKwkgKiBnZXQgYWxsIHJvb21zIHdoaWNoIGFyZSBhdmFpbGlibGUgZm9yIHB1YmxpYworCSAqIAorCSAqIEBwYXJhbSB1c2VyX2xldmVsCisJICogQHBhcmFtIHJvb210eXBlc19pZAorCSAqIEByZXR1cm4KKwkgKi8KKwlwdWJsaWMgTGlzdDxSb29tPiBnZXRQdWJsaWNSb29tcyhsb25nIHVzZXJfbGV2ZWwsIGxvbmcgcm9vbXR5cGVzX2lkKSB7CisJCXRyeSB7CisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1VzZXJMZXZlbCh1c2VyX2xldmVsKSkgeworCQkJCVR5cGVkUXVlcnk8Um9vbT4gcSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoImdldFB1YmxpY1Jvb21zIiwgUm9vbS5jbGFzcyk7CisJCQkJcS5zZXRQYXJhbWV0ZXIoImlzcHVibGljIiwgdHJ1ZSk7CisJCQkJcS5zZXRQYXJhbWV0ZXIoImRlbGV0ZWQiLCBmYWxzZSk7CisJCQkJcS5zZXRQYXJhbWV0ZXIoInJvb210eXBlc19pZCIsIG5ldyBMb25nKHJvb210eXBlc19pZCkpOworCQkJCUxpc3Q8Um9vbT4gbGwgPSBxLmdldFJlc3VsdExpc3QoKTsKKwkJCQlyZXR1cm4gbGw7CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldFJvb21zQnlPcmdhbmlzYXRpb25dICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIExpc3Q8Um9vbT4gZ2V0Um9vbXNCeUlkcyhMaXN0PEludGVnZXI+IHJvb21JZHMpIHsKKwkJdHJ5IHsKKwkJCWlmIChyb29tSWRzID09IG51bGwgfHwgcm9vbUlkcy5zaXplKCkgPT0gMCkgeworCQkJCXJldHVybiBuZXcgTGlua2VkTGlzdDxSb29tPigpOworCQkJfQorCisJCQlTdHJpbmcgcXVlcnlTdHJpbmcgPSAiU0VMRUNUIHIgZnJvbSBSb29tIHIgIiArICJXSEVSRSAiOworCisJCQlxdWVyeVN0cmluZyArPSAiKCI7CisKKwkJCWludCBpID0gMDsKKwkJCWZvciAoSW50ZWdlciByb29tX2lkIDogcm9vbUlkcykgeworCQkJCWlmIChpICE9IDApIHsKKwkJCQkJcXVlcnlTdHJpbmcgKz0gIiBPUiAiOworCQkJCX0KKwkJCQlxdWVyeVN0cmluZyArPSAiIHIucm9vbXNfaWQgPSAiICsgcm9vbV9pZDsKKwkJCQlpKys7CisJCQl9CisKKwkJCXF1ZXJ5U3RyaW5nICs9ICIpIjsKKworCQkJVHlwZWRRdWVyeTxSb29tPiBxID0gZW0uY3JlYXRlUXVlcnkocXVlcnlTdHJpbmcsIFJvb20uY2xhc3MpOworCisJCQlMaXN0PFJvb20+IGxsID0gcS5nZXRSZXN1bHRMaXN0KCk7CisKKwkJCXJldHVybiBsbDsKKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRSb29tc0J5SWRzXSAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMaXN0PFJvb20+IGdldFB1YmxpY1Jvb21zV2l0aG91dFR5cGUobG9uZyB1c2VyX2xldmVsKSB7CisJCXRyeSB7CisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1VzZXJMZXZlbCh1c2VyX2xldmVsKSkgeworCQkJCVR5cGVkUXVlcnk8Um9vbT4gcSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoImdldFB1YmxpY1Jvb21zV2l0aG91dFR5cGUiLCBSb29tLmNsYXNzKTsKKwkJCQlxLnNldFBhcmFtZXRlcigiaXNwdWJsaWMiLCB0cnVlKTsKKwkJCQlxLnNldFBhcmFtZXRlcigiZGVsZXRlZCIsIHRydWUpOworCQkJCUxpc3Q8Um9vbT4gbGwgPSBxLmdldFJlc3VsdExpc3QoKTsKKwkJCQlyZXR1cm4gbGw7CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldFB1YmxpY1Jvb21zV2l0aG91dFR5cGVdICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLyoqCisJICogR2V0IEFwcG9pbnRlZCBNZWV0aW5ncworCSAqLworCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCXB1YmxpYyBMaXN0PFJvb20+IGdldEFwcG9pbnRlZE1lZXRpbmdzKExvbmcgdXNlcmlkLCBMb25nIHVzZXJfbGV2ZWwpIHsKKwkJbG9nLmRlYnVnKCJSb29tbWFuYWdlbWVudC5nZXRBcHBvaW50ZWRNZWV0aW5ncyIpOworCisJCXRyeSB7CisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1VzZXJMZXZlbCh1c2VyX2xldmVsKSkgeworCQkJCVR5cGVkUXVlcnk8Um9vbT4gcSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoImdldEFwcG9pbnRlZE1lZXRpbmdzIiwgUm9vbS5jbGFzcyk7CisJCQkJcS5zZXRQYXJhbWV0ZXIoImFwcG9pbnRlZCIsIHRydWUpOworCQkJCXEuc2V0UGFyYW1ldGVyKCJkZWxldGVkIiwgZmFsc2UpOworCQkJCXJldHVybiBxLmdldFJlc3VsdExpc3QoKTsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZ2V0QXBwb2ludGVkTWVldGluZ3NdICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisKKwl9CisKKwkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworICAgIC8qKgorICAgICAqIFJldHVybnMgbnVtYmVyIG9mIFNJUCBjb25mZXJlbmNlIHBhcnRpY2lwYW50cworICAgICAqIEBwYXJhbSByb29tc19pZCBpZCBvZiByb29tCisgICAgICogQHJldHVybiBudW1iZXIgb2YgcGFydGljaXBhbnRzCisgICAgICovCisgICAgcHVibGljIEludGVnZXIgZ2V0U2lwQ29uZmVyZW5jZU1lbWJlcnNOdW1iZXIoTG9uZyByb29tc19pZCkgeworICAgIAlSb29tIHIgPSByb29tRGFvLmdldChyb29tc19pZCk7CisgICAgCXJldHVybiByID09IG51bGwgfHwgci5nZXRDb25mbm8oKSA9PSBudWxsID8gbnVsbCA6IHNpcERhby5jb3VudFVzZXJzKHIuZ2V0Q29uZm5vKCkpOworICAgIH0KKworCS8qKgorCSAqIGFkZHMgYSBuZXcgUmVjb3JkIHRvIHRoZSB0YWJsZSByb29tcworCSAqIEBwYXJhbSBuYW1lCisJICogQHBhcmFtIHJvb210eXBlc19pZAorCSAqIEBwYXJhbSBpc3B1YmxpYworCSAqIEBwYXJhbSBoaWRlQWN0aXZpdGllc0FuZEFjdGlvbnMgVE9ETworCSAqIEBwYXJhbSBoaWRlRmlsZXNFeHBsb3JlciBUT0RPCisJICogQHBhcmFtIGhpZGVBY3Rpb25zTWVudSBUT0RPCisJICogQHBhcmFtIGhpZGVTY3JlZW5TaGFyaW5nIFRPRE8KKwkgKiBAcGFyYW0gaGlkZVdoaXRlYm9hcmQgVE9ETworCSAqIEByZXR1cm4gaWQgb2YgdGhlIG5ld2x5IGNyZWF0ZWQgcm9vbSBvciBOVUxMCisJICovCisJcHVibGljIExvbmcgYWRkUm9vbShsb25nIHVzZXJfbGV2ZWwsIFN0cmluZyBuYW1lLCBsb25nIHJvb210eXBlc19pZCwKKwkJCVN0cmluZyBjb21tZW50LCBMb25nIG51bWJlck9mUGFydGl6aXBhbnRzLCBib29sZWFuIGlzcHVibGljLAorCQkJTGlzdDxJbnRlZ2VyPiBvcmdhbmlzYXRpb25zLCBCb29sZWFuIGFwcG9pbnRtZW50LCBCb29sZWFuIGlzRGVtb1Jvb20sCisJCQlJbnRlZ2VyIGRlbW9UaW1lLCBCb29sZWFuIGlzTW9kZXJhdGVkUm9vbSwKKwkJCUxpc3Q8TWFwPFN0cmluZywgT2JqZWN0Pj4gcm9vbU1vZGVyYXRvcnMsCisJCQlCb29sZWFuIGFsbG93VXNlclF1ZXN0aW9ucywgQm9vbGVhbiBpc0F1ZGlvT25seSwgQm9vbGVhbiBhbGxvd0ZvbnRTdHlsZXMsIEJvb2xlYW4gaXNDbG9zZWQsCisJCQlTdHJpbmcgcmVkaXJlY3RVUkwsIFN0cmluZyBjb25mZXJlbmNlUGluLAorCQkJTG9uZyBvd25lcklkLCBCb29sZWFuIHdhaXRGb3JSZWNvcmRpbmcsIEJvb2xlYW4gYWxsb3dSZWNvcmRpbmcsCisJCQlCb29sZWFuIGhpZGVUb3BCYXIsIEJvb2xlYW4gaGlkZUNoYXQsIEJvb2xlYW4gaGlkZUFjdGl2aXRpZXNBbmRBY3Rpb25zLCBCb29sZWFuIGhpZGVGaWxlc0V4cGxvcmVyLCAKKwkJCUJvb2xlYW4gaGlkZUFjdGlvbnNNZW51LCBCb29sZWFuIGhpZGVTY3JlZW5TaGFyaW5nLCBCb29sZWFuIGhpZGVXaGl0ZWJvYXJkLAorCQkJQm9vbGVhbiBzaG93TWljcm9waG9uZVN0YXR1cywgQm9vbGVhbiBjaGF0TW9kZXJhdGVkLCBib29sZWFuIGNoYXRPcGVuZWQKKwkJCSwgYm9vbGVhbiBmaWxlc09wZW5lZCwgYm9vbGVhbiBhdXRvVmlkZW9TZWxlY3QsIGJvb2xlYW4gc2lwRW5hYmxlZCkgeworCisJCXRyeSB7CisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja0FkbWluTGV2ZWwodXNlcl9sZXZlbCkpIHsKKworCQkJCVJvb20gciA9IG5ldyBSb29tKCk7CisJCQkJci5zZXROYW1lKG5hbWUpOworCQkJCXIuc2V0Q29tbWVudChjb21tZW50KTsKKwkJCQlyLnNldFN0YXJ0dGltZShuZXcgRGF0ZSgpKTsKKwkJCQlyLnNldE51bWJlck9mUGFydGl6aXBhbnRzKG51bWJlck9mUGFydGl6aXBhbnRzKTsKKwkJCQlyLnNldFJvb210eXBlKHRoaXMuZ2V0Um9vbVR5cGVzQnlJZChyb29tdHlwZXNfaWQpKTsKKwkJCQlyLnNldElzcHVibGljKGlzcHVibGljKTsKKwkJCQlyLnNldEFsbG93VXNlclF1ZXN0aW9ucyhhbGxvd1VzZXJRdWVzdGlvbnMpOworCQkJCXIuc2V0SXNBdWRpb09ubHkoaXNBdWRpb09ubHkpOworCQkJCXIuc2V0QWxsb3dGb250U3R5bGVzKGFsbG93Rm9udFN0eWxlcyk7CisKKwkJCQlyLnNldEFwcG9pbnRtZW50KGFwcG9pbnRtZW50KTsKKworCQkJCXIuc2V0SXNEZW1vUm9vbShpc0RlbW9Sb29tKTsKKwkJCQlyLnNldERlbW9UaW1lKGRlbW9UaW1lKTsKKworCQkJCXIuc2V0SXNNb2RlcmF0ZWRSb29tKGlzTW9kZXJhdGVkUm9vbSk7CisJCQkJci5zZXRIaWRlVG9wQmFyKGhpZGVUb3BCYXIpOworCisJCQkJci5zZXREZWxldGVkKGZhbHNlKTsKKworCQkJCXIuc2V0SXNDbG9zZWQoaXNDbG9zZWQpOworCQkJCXIuc2V0UmVkaXJlY3RVUkwocmVkaXJlY3RVUkwpOworCisJCQkJci5zZXRPd25lcklkKG93bmVySWQpOworCisJCQkJci5zZXRXYWl0Rm9yUmVjb3JkaW5nKHdhaXRGb3JSZWNvcmRpbmcpOworCQkJCXIuc2V0QWxsb3dSZWNvcmRpbmcoYWxsb3dSZWNvcmRpbmcpOworCQkJCQorCQkJCXIuc2V0SGlkZUNoYXQoaGlkZUNoYXQpOworCQkJCXIuc2V0SGlkZUFjdGl2aXRpZXNBbmRBY3Rpb25zKGhpZGVBY3Rpdml0aWVzQW5kQWN0aW9ucyk7CisJCQkJci5zZXRIaWRlQWN0aW9uc01lbnUoaGlkZUFjdGlvbnNNZW51KTsKKwkJCQlyLnNldEhpZGVGaWxlc0V4cGxvcmVyKGhpZGVGaWxlc0V4cGxvcmVyKTsKKwkJCQlyLnNldEhpZGVTY3JlZW5TaGFyaW5nKGhpZGVTY3JlZW5TaGFyaW5nKTsJCisJCQkJci5zZXRIaWRlV2hpdGVib2FyZChoaWRlV2hpdGVib2FyZCk7CisJCQkJci5zZXRTaG93TWljcm9waG9uZVN0YXR1cyhzaG93TWljcm9waG9uZVN0YXR1cyk7CisJCQkJci5zZXRDaGF0TW9kZXJhdGVkKGNoYXRNb2RlcmF0ZWQpOworCQkJCXIuc2V0Q2hhdE9wZW5lZChjaGF0T3BlbmVkKTsKKwkJCQlyLnNldEZpbGVzT3BlbmVkKGZpbGVzT3BlbmVkKTsKKwkJCQlyLnNldEF1dG9WaWRlb1NlbGVjdChhdXRvVmlkZW9TZWxlY3QpOworCQkJCXIuc2V0U2lwRW5hYmxlZChzaXBFbmFibGVkKTsKKwkJCQlyLnNldFBpbihjb25mZXJlbmNlUGluKTsKKwkJCQkKKwkJCQlyID0gcm9vbURhby51cGRhdGUociwgb3duZXJJZCk7CisKKwkJCQlpZiAob3JnYW5pc2F0aW9ucyAhPSBudWxsKSB7CisJCQkJCUxvbmcgdCA9IHRoaXMudXBkYXRlUm9vbU9yZ2FuaXNhdGlvbnMob3JnYW5pc2F0aW9ucywgcik7CisJCQkJCWlmICh0ID09IG51bGwpCisJCQkJCQlyZXR1cm4gbnVsbDsKKwkJCQl9CisKKwkJCQlpZiAocm9vbU1vZGVyYXRvcnMgIT0gbnVsbCkgeworCQkJCQlyb29tTW9kZXJhdG9yc0Rhby5hZGRSb29tTW9kZXJhdG9yQnlVc2VyTGlzdCgKKwkJCQkJCQlyb29tTW9kZXJhdG9ycywgci5nZXRSb29tc19pZCgpKTsKKwkJCQl9CisKKwkJCQlyZXR1cm4gci5nZXRSb29tc19pZCgpOworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIlthZGRSb29tXSAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMb25nIGFkZFJvb21CeU1vZChsb25nIHVzZXJfbGV2ZWwsIFN0cmluZyBuYW1lLCBsb25nIHJvb210eXBlc19pZCwKKwkJCVN0cmluZyBjb21tZW50LCBMb25nIG51bWJlck9mUGFydGl6aXBhbnRzLCBib29sZWFuIGlzcHVibGljLAorCQkJTG9uZyBvcmdhbmlzYXRpb25faWQsIEJvb2xlYW4gYXBwb2ludG1lbnQsIEJvb2xlYW4gaXNEZW1vUm9vbSwKKwkJCUludGVnZXIgZGVtb1RpbWUsIEJvb2xlYW4gaXNNb2RlcmF0ZWRSb29tLAorCQkJTGlzdDxNYXA8U3RyaW5nLCBPYmplY3Q+PiByb29tTW9kZXJhdG9ycywgQm9vbGVhbiBhbGxvd1VzZXJRdWVzdGlvbnMpIHsKKworCQlsb2cuZGVidWcoImFkZFJvb20iKTsKKworCQl0cnkgeworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tNb2RMZXZlbCh1c2VyX2xldmVsKSkgeworCQkJCVJvb20gciA9IG5ldyBSb29tKCk7CisJCQkJci5zZXROYW1lKG5hbWUpOworCQkJCXIuc2V0Q29tbWVudChjb21tZW50KTsKKwkJCQlyLnNldFN0YXJ0dGltZShuZXcgRGF0ZSgpKTsKKwkJCQlyLnNldE51bWJlck9mUGFydGl6aXBhbnRzKG51bWJlck9mUGFydGl6aXBhbnRzKTsKKwkJCQlyLnNldFJvb210eXBlKHRoaXMuZ2V0Um9vbVR5cGVzQnlJZChyb29tdHlwZXNfaWQpKTsKKwkJCQlyLnNldElzcHVibGljKGlzcHVibGljKTsKKworCQkJCXIuc2V0QWxsb3dVc2VyUXVlc3Rpb25zKGFsbG93VXNlclF1ZXN0aW9ucyk7CisJCQkJci5zZXRBcHBvaW50bWVudChhcHBvaW50bWVudCk7CisKKwkJCQlyLnNldElzRGVtb1Jvb20oaXNEZW1vUm9vbSk7CisJCQkJci5zZXREZW1vVGltZShkZW1vVGltZSk7CisKKwkJCQlyLnNldElzTW9kZXJhdGVkUm9vbShpc01vZGVyYXRlZFJvb20pOworCisJCQkJci5zZXREZWxldGVkKGZhbHNlKTsKKwkJCQlyID0gZW0ubWVyZ2Uocik7CisJCQkJbG9uZyByZXR1cm5JZCA9IHIuZ2V0Um9vbXNfaWQoKTsKKworCQkJCXRoaXMuYWRkUm9vbVRvT3JnYW5pc2F0aW9uKDMsIHJldHVybklkLCBvcmdhbmlzYXRpb25faWQpOworCisJCQkJaWYgKHJvb21Nb2RlcmF0b3JzICE9IG51bGwpIHsKKwkJCQkJcm9vbU1vZGVyYXRvcnNEYW8uYWRkUm9vbU1vZGVyYXRvckJ5VXNlckxpc3QoCisJCQkJCQkJcm9vbU1vZGVyYXRvcnMsIHIuZ2V0Um9vbXNfaWQoKSk7CisJCQkJfQorCisJCQkJcmV0dXJuIHJldHVybklkOworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIlthZGRSb29tXSAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCS8qKgorCSAqIGFkZHMvY2hlY2sgYSBuZXcgUmVjb3JkIHRvIHRoZSB0YWJsZSByb29tcyB3aXRoIGV4dGVybmFsIGZpZWxkcworCSAqIAorCSAqIEBwYXJhbSBuYW1lCisJICogQHBhcmFtIHJvb210eXBlc19pZAorCSAqIEBwYXJhbSBpc3B1YmxpYworCSAqIEByZXR1cm4gaWQgb2YgKHRoZSBuZXdseSBjcmVhdGVkKSByb29tIG9yIE5VTEwKKwkgKi8KKwlwdWJsaWMgTG9uZyBhZGRFeHRlcm5hbFJvb20oU3RyaW5nIG5hbWUsIGxvbmcgcm9vbXR5cGVzX2lkLCBTdHJpbmcgY29tbWVudCwKKwkJCUxvbmcgbnVtYmVyT2ZQYXJ0aXppcGFudHMsIGJvb2xlYW4gaXNwdWJsaWMsIExpc3Q8SW50ZWdlcj4gb3JnYW5pc2F0aW9ucywKKwkJCUJvb2xlYW4gYXBwb2ludG1lbnQsIEJvb2xlYW4gaXNEZW1vUm9vbSwgSW50ZWdlciBkZW1vVGltZSwKKwkJCUJvb2xlYW4gaXNNb2RlcmF0ZWRSb29tLCBMaXN0PE1hcDxTdHJpbmcsIE9iamVjdD4+IHJvb21Nb2RlcmF0b3JzLAorCQkJTG9uZyBleHRlcm5hbFJvb21JZCwgU3RyaW5nIGV4dGVybmFsUm9vbVR5cGUsCisJCQlCb29sZWFuIGFsbG93VXNlclF1ZXN0aW9ucywgQm9vbGVhbiBpc0F1ZGlvT25seSwgQm9vbGVhbiBhbGxvd0ZvbnRTdHlsZXMsIEJvb2xlYW4gaXNDbG9zZWQsCisJCQlTdHJpbmcgcmVkaXJlY3RVUkwsIEJvb2xlYW4gd2FpdEZvclJlY29yZGluZywKKwkJCUJvb2xlYW4gYWxsb3dSZWNvcmRpbmcsIEJvb2xlYW4gaGlkZVRvcEJhcikgeworCisJCWxvZy5kZWJ1ZygiYWRkRXh0ZXJuYWxSb29tIik7CisKKwkJdHJ5IHsKKwkJCVJvb20gciA9IG5ldyBSb29tKCk7CisJCQlyLnNldE5hbWUobmFtZSk7CisJCQlyLnNldENvbW1lbnQoY29tbWVudCk7CisJCQlyLnNldFN0YXJ0dGltZShuZXcgRGF0ZSgpKTsKKwkJCXIuc2V0TnVtYmVyT2ZQYXJ0aXppcGFudHMobnVtYmVyT2ZQYXJ0aXppcGFudHMpOworCQkJci5zZXRSb29tdHlwZSh0aGlzLmdldFJvb21UeXBlc0J5SWQocm9vbXR5cGVzX2lkKSk7CisJCQlyLnNldElzcHVibGljKGlzcHVibGljKTsKKworCQkJci5zZXRBbGxvd1VzZXJRdWVzdGlvbnMoYWxsb3dVc2VyUXVlc3Rpb25zKTsKKwkJCXIuc2V0SXNBdWRpb09ubHkoaXNBdWRpb09ubHkpOworCQkJci5zZXRBbGxvd0ZvbnRTdHlsZXMoYWxsb3dGb250U3R5bGVzKTsKKworCQkJci5zZXRBcHBvaW50bWVudChhcHBvaW50bWVudCk7CisKKwkJCXIuc2V0SXNEZW1vUm9vbShpc0RlbW9Sb29tKTsKKwkJCXIuc2V0RGVtb1RpbWUoZGVtb1RpbWUpOworCisJCQlyLnNldElzTW9kZXJhdGVkUm9vbShpc01vZGVyYXRlZFJvb20pOworCisJCQlyLnNldERlbGV0ZWQoZmFsc2UpOworCisJCQlyLnNldEV4dGVybmFsUm9vbUlkKGV4dGVybmFsUm9vbUlkKTsKKwkJCXIuc2V0RXh0ZXJuYWxSb29tVHlwZShleHRlcm5hbFJvb21UeXBlKTsKKworCQkJci5zZXRJc0Nsb3NlZChpc0Nsb3NlZCk7CisJCQlyLnNldFJlZGlyZWN0VVJMKHJlZGlyZWN0VVJMKTsKKworCQkJci5zZXRXYWl0Rm9yUmVjb3JkaW5nKHdhaXRGb3JSZWNvcmRpbmcpOworCQkJci5zZXRBbGxvd1JlY29yZGluZyhhbGxvd1JlY29yZGluZyk7CisKKwkJCXIuc2V0SGlkZVRvcEJhcihoaWRlVG9wQmFyKTsKKworCQkJciA9IGVtLm1lcmdlKHIpOworCisJCQlsb25nIHJldHVybklkID0gci5nZXRSb29tc19pZCgpOworCisJCQlpZiAob3JnYW5pc2F0aW9ucyAhPSBudWxsKSB7CisJCQkJTG9uZyB0ID0gdGhpcy51cGRhdGVSb29tT3JnYW5pc2F0aW9ucyhvcmdhbmlzYXRpb25zLCByKTsKKwkJCQlpZiAodCA9PSBudWxsKQorCQkJCQlyZXR1cm4gbnVsbDsKKwkJCX0KKworCQkJaWYgKHJvb21Nb2RlcmF0b3JzICE9IG51bGwpIHsKKwkJCQlyb29tTW9kZXJhdG9yc0Rhby5hZGRSb29tTW9kZXJhdG9yQnlVc2VyTGlzdChyb29tTW9kZXJhdG9ycywKKwkJCQkJCXIuZ2V0Um9vbXNfaWQoKSk7CisJCQl9CisKKwkJCXJldHVybiByZXR1cm5JZDsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbYWRkRXh0ZXJuYWxSb29tXSAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCS8qKgorCSAqIGFkZHMgYSBuZXcgcmVjb3JkIHRvIHRoZSB0YWJsZSByb29tc19vcmdhbmlzYXRpb24KKwkgKiAKKwkgKiBAcGFyYW0gcm9vbXNfaWQKKwkgKiBAcGFyYW0gb3JnYW5pc2F0aW9uX2lkCisJICogQHJldHVybiB0aGUgaWQgb2YgdGhlIG5ld2x5IGNyZWF0ZWQgUm9vbXNfT3JnYW5pc2F0aW9uIG9yIE5VTEwKKwkgKi8KKwlwdWJsaWMgTG9uZyBhZGRSb29tVG9PcmdhbmlzYXRpb24obG9uZyB1c2VyX2xldmVsLCBsb25nIHJvb21zX2lkLAorCQkJbG9uZyBvcmdhbmlzYXRpb25faWQpIHsKKwkJdHJ5IHsKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrQWRtaW5MZXZlbCh1c2VyX2xldmVsKSkgeworCQkJCVJvb21PcmdhbmlzYXRpb24gck9yZ2FuaXNhdGlvbiA9IG5ldyBSb29tT3JnYW5pc2F0aW9uKCk7CisJCQkJck9yZ2FuaXNhdGlvbi5zZXRSb29tKHJvb21EYW8uZ2V0KHJvb21zX2lkKSk7CisJCQkJbG9nLmRlYnVnKCJhZGRSb29tVG9PcmdhbmlzYXRpb24gcm9vbXMgJyIKKwkJCQkJCSsgck9yZ2FuaXNhdGlvbi5nZXRSb29tKCkuZ2V0TmFtZSgpICsgIiciKTsKKwkJCQlyT3JnYW5pc2F0aW9uLnNldFN0YXJ0dGltZShuZXcgRGF0ZSgpKTsKKwkJCQlyT3JnYW5pc2F0aW9uLnNldE9yZ2FuaXNhdGlvbihvcmdhbmlzYXRpb25NYW5hZ2VyCisJCQkJCQkuZ2V0T3JnYW5pc2F0aW9uQnlJZChvcmdhbmlzYXRpb25faWQpKTsKKwkJCQlyT3JnYW5pc2F0aW9uLnNldERlbGV0ZWQoZmFsc2UpOworCisJCQkJck9yZ2FuaXNhdGlvbiA9IGVtLm1lcmdlKHJPcmdhbmlzYXRpb24pOworCQkJCWxvbmcgcmV0dXJuSWQgPSByT3JnYW5pc2F0aW9uLmdldFJvb21zX29yZ2FuaXNhdGlvbl9pZCgpOworCQkJCXJldHVybiByZXR1cm5JZDsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbYWRkUm9vbVRvT3JnYW5pc2F0aW9uXSAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMb25nIGFkZFJvb21PcmdhbmlzYXRpb24oUm9vbU9yZ2FuaXNhdGlvbiByT3JnYW5pc2F0aW9uKSB7CisJCXRyeSB7CisKKwkJCXJPcmdhbmlzYXRpb24uc2V0U3RhcnR0aW1lKG5ldyBEYXRlKCkpOworCisJCQlyT3JnYW5pc2F0aW9uID0gZW0ubWVyZ2Uock9yZ2FuaXNhdGlvbik7CisJCQlsb25nIHJldHVybklkID0gck9yZ2FuaXNhdGlvbi5nZXRSb29tc19vcmdhbmlzYXRpb25faWQoKTsKKwkJCXJldHVybiByZXR1cm5JZDsKKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIlthZGRSb29tT3JnYW5pc2F0aW9uXSAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCS8qKgorCSAqIAorCSAqIEBwYXJhbSByb29tc19vcmdhbmlzYXRpb25faWQKKwkgKiBAcmV0dXJuCisJICovCisJcHVibGljIFJvb21PcmdhbmlzYXRpb24gZ2V0Um9vbXNPcmdhbmlzYXRpb25CeUlkKAorCQkJbG9uZyByb29tc19vcmdhbmlzYXRpb25faWQpIHsKKwkJdHJ5IHsKKwkJCUNyaXRlcmlhQnVpbGRlciBjYiA9IGVtLmdldENyaXRlcmlhQnVpbGRlcigpOworCQkJQ3JpdGVyaWFRdWVyeTxSb29tT3JnYW5pc2F0aW9uPiBjcSA9IGNiCisJCQkJCS5jcmVhdGVRdWVyeShSb29tT3JnYW5pc2F0aW9uLmNsYXNzKTsKKwkJCVJvb3Q8Um9vbU9yZ2FuaXNhdGlvbj4gYyA9IGNxLmZyb20oUm9vbU9yZ2FuaXNhdGlvbi5jbGFzcyk7CisJCQlQcmVkaWNhdGUgY29uZGl0aW9uID0gY2IuZXF1YWwoYy5nZXQoInJvb21zX29yZ2FuaXNhdGlvbl9pZCIpLAorCQkJCQlyb29tc19vcmdhbmlzYXRpb25faWQpOworCQkJY3Eud2hlcmUoY29uZGl0aW9uKTsKKwkJCVR5cGVkUXVlcnk8Um9vbU9yZ2FuaXNhdGlvbj4gcSA9IGVtLmNyZWF0ZVF1ZXJ5KGNxKTsKKwkJCUxpc3Q8Um9vbU9yZ2FuaXNhdGlvbj4gbGwgPSBxLmdldFJlc3VsdExpc3QoKTsKKworCQkJaWYgKGxsLnNpemUoKSA+IDApIHsKKwkJCQlyZXR1cm4gbGwuZ2V0KDApOworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRSb29tc0J5T3JnYW5pc2F0aW9uXSAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCS8qKgorCSAqIGdldCBMaXN0IG9mIFJvb21zX09yZ2FuaXNhdGlvbiBieSBvcmdhbmlzYXRpb24gYW5kIHJvb210eXBlCisJICogCisJICogQHBhcmFtIHVzZXJfbGV2ZWwKKwkgKiBAcGFyYW0gb3JnYW5pc2F0aW9uX2lkCisJICogQHBhcmFtIHJvb210eXBlc19pZAorCSAqIEByZXR1cm4KKwkgKi8KKwlwdWJsaWMgTGlzdDxSb29tT3JnYW5pc2F0aW9uPiBnZXRSb29tc09yZ2FuaXNhdGlvbkJ5T3JnYW5pc2F0aW9uSWRBbmRSb29tVHlwZSgKKwkJCWxvbmcgdXNlcl9sZXZlbCwgbG9uZyBvcmdhbmlzYXRpb25faWQsIGxvbmcgcm9vbXR5cGVzX2lkKSB7CisJCXRyeSB7CisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1VzZXJMZXZlbCh1c2VyX2xldmVsKSkgeworCQkJCVR5cGVkUXVlcnk8Um9vbU9yZ2FuaXNhdGlvbj4gcSA9IGVtLgorCQkJCQkJY3JlYXRlTmFtZWRRdWVyeSgiZ2V0Um9vbXNPcmdhbmlzYXRpb25CeU9yZ2FuaXNhdGlvbklkQW5kUm9vbVR5cGUiLCBSb29tT3JnYW5pc2F0aW9uLmNsYXNzKTsKKwkJCQlxLnNldFBhcmFtZXRlcigicm9vbXR5cGVzX2lkIiwgcm9vbXR5cGVzX2lkKTsKKwkJCQlxLnNldFBhcmFtZXRlcigib3JnYW5pc2F0aW9uX2lkIiwgb3JnYW5pc2F0aW9uX2lkKTsKKwkJCQlxLnNldFBhcmFtZXRlcigiZGVsZXRlZCIsIHRydWUpOworCQkJCXJldHVybiBxLmdldFJlc3VsdExpc3QoKTsKKwkJCX0gZWxzZSB7CisJCQkJbG9nLmVycm9yKCJbbm90YXV0aGVudGlmaWNhdGVkXSAiICsgdXNlcl9sZXZlbCk7CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldFJvb21zQnlPcmdhbmlzYXRpb25dICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLyoqCisJICogR2V0cyBhbGwgcm9vbXMgYnkgYW4gb3JnYW5pc2F0aW9uCisJICogCisJICogQHBhcmFtIG9yZ2FuaXNhdGlvbl9pZAorCSAqIEByZXR1cm4gbGlzdCBvZiBSb29tc19PcmdhbmlzYXRpb24gd2l0aCBSb29tcyBhcyBTdWItT2JqZWN0cyBvciBudWxsCisJICovCisJcHVibGljIExpc3Q8Um9vbU9yZ2FuaXNhdGlvbj4gZ2V0Um9vbXNPcmdhbmlzYXRpb25CeU9yZ2FuaXNhdGlvbklkKAorCQkJbG9uZyB1c2VyX2xldmVsLCBsb25nIG9yZ2FuaXNhdGlvbl9pZCkgeworCQl0cnkgeworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tVc2VyTGV2ZWwodXNlcl9sZXZlbCkpIHsKKworCQkJCVR5cGVkUXVlcnk8Um9vbU9yZ2FuaXNhdGlvbj4gcXVlcnkgPSBlbS4KKwkJCQkJCWNyZWF0ZU5hbWVkUXVlcnkoImdldFJvb21zT3JnYW5pc2F0aW9uQnlPcmdhbmlzYXRpb25JZCIsIFJvb21PcmdhbmlzYXRpb24uY2xhc3MpOworCisJCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJvcmdhbmlzYXRpb25faWQiLCBvcmdhbmlzYXRpb25faWQpOworCQkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiZGVsZXRlZCIsIHRydWUpOworCisJCQkJTGlzdDxSb29tT3JnYW5pc2F0aW9uPiBsbCA9IHF1ZXJ5LmdldFJlc3VsdExpc3QoKTsKKworCQkJCXJldHVybiBsbDsKKwkJCX0gZWxzZSB7CisJCQkJbG9nLmVycm9yKCJbbm90YXV0aGVudGlmaWNhdGVkXSAiICsgdXNlcl9sZXZlbCk7CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldFB1YmxpY1Jvb21zV2l0aG91dFR5cGVdICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIFNlYXJjaFJlc3VsdDxSb29tT3JnYW5pc2F0aW9uPiBnZXRSb29tc09yZ2FuaXNhdGlvbkJ5T3JnYW5pc2F0aW9uSWQobG9uZyB1c2VyX2xldmVsLAorCQkJbG9uZyBvcmdhbmlzYXRpb25faWQsIGludCBzdGFydCwgaW50IG1heCwgU3RyaW5nIG9yZGVyYnksCisJCQlib29sZWFuIGFzYykgeworCQl0cnkgeworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tNb2RMZXZlbCh1c2VyX2xldmVsKSkgeworCisJCQkJU2VhcmNoUmVzdWx0PFJvb21PcmdhbmlzYXRpb24+IHNSZXN1bHQgPSBuZXcgU2VhcmNoUmVzdWx0PFJvb21PcmdhbmlzYXRpb24+KCk7CisJCQkJc1Jlc3VsdC5zZXRPYmplY3ROYW1lKFJvb21PcmdhbmlzYXRpb24uY2xhc3MuZ2V0TmFtZSgpKTsKKwkJCQlzUmVzdWx0LnNldFJlY29yZHModGhpcy5zZWxlY3RNYXhGcm9tUm9vbXNCeU9yZ2FuaXNhdGlvbigKKwkJCQkJCW9yZ2FuaXNhdGlvbl9pZCkubG9uZ1ZhbHVlKCkpOworCQkJCXNSZXN1bHQuc2V0UmVzdWx0KHRoaXMuZ2V0Um9vbXNPcmdhbmlzYXRpb25CeU9yZ2FuaXNhdGlvbklkKAorCQkJCQkJb3JnYW5pc2F0aW9uX2lkLCBzdGFydCwgbWF4LCBvcmRlcmJ5LCBhc2MpKTsKKwkJCQlyZXR1cm4gc1Jlc3VsdDsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZ2V0Um9vbXNCeU9yZ2FuaXNhdGlvbl0gIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgSW50ZWdlciBzZWxlY3RNYXhGcm9tUm9vbXNCeU9yZ2FuaXNhdGlvbihsb25nIG9yZ2FuaXNhdGlvbl9pZCkgeworCQl0cnkgeworCQkJLy8gZ2V0IGFsbCB1c2VycworCQkJVHlwZWRRdWVyeTxSb29tT3JnYW5pc2F0aW9uPiBxID0gZW0uY3JlYXRlTmFtZWRRdWVyeSgic2VsZWN0TWF4RnJvbVJvb21zQnlPcmdhbmlzYXRpb24iLCBSb29tT3JnYW5pc2F0aW9uLmNsYXNzKTsKKworCQkJcS5zZXRQYXJhbWV0ZXIoIm9yZ2FuaXNhdGlvbl9pZCIsIG9yZ2FuaXNhdGlvbl9pZCk7CisJCQlxLnNldFBhcmFtZXRlcigiZGVsZXRlZCIsIHRydWUpOworCQkJTGlzdDxSb29tT3JnYW5pc2F0aW9uPiBsbCA9IHEuZ2V0UmVzdWx0TGlzdCgpOworCisJCQlyZXR1cm4gbGwuc2l6ZSgpOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIltzZWxlY3RNYXhGcm9tUm9vbXNdICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLyoqCisJICogCisJICogQHBhcmFtIG9yZ2FuaXNhdGlvbl9pZAorCSAqIEBwYXJhbSBzdGFydAorCSAqIEBwYXJhbSBtYXgKKwkgKiBAcGFyYW0gb3JkZXJieQorCSAqIEBwYXJhbSBhc2MKKwkgKiBAcmV0dXJuCisJICovCisJcHJpdmF0ZSBMaXN0PFJvb21PcmdhbmlzYXRpb24+IGdldFJvb21zT3JnYW5pc2F0aW9uQnlPcmdhbmlzYXRpb25JZCgKKwkJCWxvbmcgb3JnYW5pc2F0aW9uX2lkLCBpbnQgc3RhcnQsIGludCBtYXgsIFN0cmluZyBvcmRlcmJ5LAorCQkJYm9vbGVhbiBhc2MpIHsKKwkJdHJ5IHsKKwkJCVN0cmluZyBocWwgPSAic2VsZWN0IGMgZnJvbSBSb29tT3JnYW5pc2F0aW9uIGFzIGMgIgorCQkJCQkrICJ3aGVyZSBjLm9yZ2FuaXNhdGlvbi5vcmdhbmlzYXRpb25faWQgPSA6b3JnYW5pc2F0aW9uX2lkICIKKwkJCQkJKyAiQU5EIGMuZGVsZXRlZCA8PiA6ZGVsZXRlZCI7CisJCQlpZiAob3JkZXJieS5zdGFydHNXaXRoKCJjLiIpKSB7CisJCQkJaHFsICs9ICJPUkRFUiBCWSAiICsgb3JkZXJieTsKKwkJCX0gZWxzZSB7CisJCQkJaHFsICs9ICJPUkRFUiBCWSAiICsgImMuIiArIG9yZGVyYnk7CisJCQl9CisJCQlpZiAoYXNjKSB7CisJCQkJaHFsICs9ICIgQVNDIjsKKwkJCX0gZWxzZSB7CisJCQkJaHFsICs9ICIgREVTQyI7CisJCQl9CisKKwkJCVR5cGVkUXVlcnk8Um9vbU9yZ2FuaXNhdGlvbj4gcSA9IGVtLmNyZWF0ZVF1ZXJ5KGhxbCwgUm9vbU9yZ2FuaXNhdGlvbi5jbGFzcyk7CisKKwkJCXEuc2V0UGFyYW1ldGVyKCJvcmdhbmlzYXRpb25faWQiLCBvcmdhbmlzYXRpb25faWQpOworCQkJcS5zZXRQYXJhbWV0ZXIoImRlbGV0ZWQiLCB0cnVlKTsKKwkJCXEuc2V0Rmlyc3RSZXN1bHQoc3RhcnQpOworCQkJcS5zZXRNYXhSZXN1bHRzKG1heCk7CisJCQlMaXN0PFJvb21PcmdhbmlzYXRpb24+IGxsID0gcS5nZXRSZXN1bHRMaXN0KCk7CisKKwkJCXJldHVybiBsbDsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZ2V0Um9vbXNCeU9yZ2FuaXNhdGlvbl0gIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwcml2YXRlIFJvb21PcmdhbmlzYXRpb24gZ2V0Um9vbXNPcmdhbmlzYXRpb25CeU9yZ2FuaXNhdGlvbklkQW5kUm9vbUlkKAorCQkJbG9uZyBvcmdhbmlzYXRpb25faWQsIGxvbmcgcm9vbXNfaWQpIHsKKwkJdHJ5IHsKKwkJCVR5cGVkUXVlcnk8Um9vbU9yZ2FuaXNhdGlvbj4gcSA9IGVtLgorCQkJCQljcmVhdGVOYW1lZFF1ZXJ5KCJnZXRSb29tc09yZ2FuaXNhdGlvbkJ5T3JnYW5pc2F0aW9uSWRBbmRSb29tSWQiLCBSb29tT3JnYW5pc2F0aW9uLmNsYXNzKTsKKworCQkJcS5zZXRQYXJhbWV0ZXIoInJvb21zX2lkIiwgcm9vbXNfaWQpOworCQkJcS5zZXRQYXJhbWV0ZXIoIm9yZ2FuaXNhdGlvbl9pZCIsIG9yZ2FuaXNhdGlvbl9pZCk7CisJCQlxLnNldFBhcmFtZXRlcigiZGVsZXRlZCIsIHRydWUpOworCQkJTGlzdDxSb29tT3JnYW5pc2F0aW9uPiBsbCA9IHEuZ2V0UmVzdWx0TGlzdCgpOworCisJCQlpZiAobGwuc2l6ZSgpID4gMCkgeworCQkJCXJldHVybiBsbC5nZXQoMCk7CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldFJvb21zT3JnYW5pc2F0aW9uQnlPcmdhbmlzYXRpb25JZEFuZFJvb21JZF0gIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvKioKKwkgKiAKKwkgKiBAcGFyYW0gb3JnYW5pc2F0aW9uX2lkCisJICogQHJldHVybgorCSAqLworCXB1YmxpYyBMaXN0PFJvb21PcmdhbmlzYXRpb24+IGdldFJvb21zT3JnYW5pc2F0aW9uQnlSb29tc0lkKGxvbmcgcm9vbXNfaWQpIHsKKwkJdHJ5IHsKKwkJCVR5cGVkUXVlcnk8Um9vbU9yZ2FuaXNhdGlvbj4gcSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoImdldFJvb21zT3JnYW5pc2F0aW9uQnlSb29tc0lkIiwgUm9vbU9yZ2FuaXNhdGlvbi5jbGFzcyk7CisJCQlxLnNldFBhcmFtZXRlcigicm9vbXNfaWQiLCByb29tc19pZCk7CisJCQlxLnNldFBhcmFtZXRlcigiZGVsZXRlZCIsIHRydWUpOworCQkJcmV0dXJuIHEuZ2V0UmVzdWx0TGlzdCgpOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRSb29tc0J5T3JnYW5pc2F0aW9uXSAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMaXN0PFJvb21PcmdhbmlzYXRpb24+IGdldFJvb21zT3JnYW5pc2F0aW9ucygpIHsKKwkJdHJ5IHsKKwkJCUNyaXRlcmlhQnVpbGRlciBjYiA9IGVtLmdldENyaXRlcmlhQnVpbGRlcigpOworCQkJQ3JpdGVyaWFRdWVyeTxSb29tT3JnYW5pc2F0aW9uPiBjcSA9IGNiCisJCQkJCS5jcmVhdGVRdWVyeShSb29tT3JnYW5pc2F0aW9uLmNsYXNzKTsKKwkJCWNxLmZyb20oUm9vbU9yZ2FuaXNhdGlvbi5jbGFzcyk7CisJCQlUeXBlZFF1ZXJ5PFJvb21PcmdhbmlzYXRpb24+IHEgPSBlbS5jcmVhdGVRdWVyeShjcSk7CisJCQlMaXN0PFJvb21PcmdhbmlzYXRpb24+IGxsID0gcS5nZXRSZXN1bHRMaXN0KCk7CisJCQlyZXR1cm4gbGw7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldFJvb21zQnlPcmdhbmlzYXRpb25dICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLyoqCisJICogCisJICogQHBhcmFtIHVzZXJfaWQKKwkgKiBAcGFyYW0gcm9vbXNfaWQKKwkgKiBAcmV0dXJuCisJICovCisJcHJpdmF0ZSBib29sZWFuIGNoZWNrVXNlck9yZ1Jvb20obG9uZyB1c2VyX2lkLCBsb25nIHJvb21zX2lkKSB7CisJCXRyeSB7CisKKwkJCVVzZXIgdXMgPSB1c2Vyc0Rhby5nZXQodXNlcl9pZCk7CisJCQlMaXN0PE9yZ2FuaXNhdGlvbl9Vc2Vycz4gcyA9IHVzLmdldE9yZ2FuaXNhdGlvbl91c2VycygpOworCisJCQlmb3IgKEl0ZXJhdG9yPE9yZ2FuaXNhdGlvbl9Vc2Vycz4gaXQgPSBzLml0ZXJhdG9yKCk7IGl0Lmhhc05leHQoKTspIHsKKwkJCQlPcmdhbmlzYXRpb25fVXNlcnMgb3JnVXNlcnMgPSBpdC5uZXh0KCk7CisJCQkJbG9uZyBvcmdhbmlzYXRpb25faWQgPSBvcmdVc2Vycy5nZXRPcmdhbmlzYXRpb24oKQorCQkJCQkJLmdldE9yZ2FuaXNhdGlvbl9pZCgpOworCQkJCUxpc3Q8Um9vbU9yZ2FuaXNhdGlvbj4gbGwgPSB0aGlzCisJCQkJCQkuZ2V0Um9vbXNPcmdhbmlzYXRpb25CeU9yZ2FuaXNhdGlvbklkKDMsCisJCQkJCQkJCW9yZ2FuaXNhdGlvbl9pZCk7CisJCQkJZm9yIChJdGVyYXRvcjxSb29tT3JnYW5pc2F0aW9uPiBpdDIgPSBsbC5pdGVyYXRvcigpOyBpdDIKKwkJCQkJCS5oYXNOZXh0KCk7KSB7CisJCQkJCVJvb21PcmdhbmlzYXRpb24gcm9vbU9yZyA9IGl0Mi5uZXh0KCk7CisJCQkJCWlmIChyb29tT3JnLmdldFJvb20oKS5nZXRSb29tc19pZCgpID09IHJvb21zX2lkKSB7CisJCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQkJfQorCQkJCX0KKwkJCX0KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIltjaGVja1VzZXJPcmdSb29tXSAiLCBleDIpOworCQl9CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwkvKioKKwkgKiAKKwkgKiBAcGFyYW0gdXNlcl9pZAorCSAqIEBwYXJhbSB1c2VyX2xldmVsCisJICogQHBhcmFtIHJvb21zX2lkCisJICogQHBhcmFtIHJvb210eXBlc19pZAorCSAqIEBwYXJhbSBuYW1lCisJICogQHBhcmFtIGlzcHVibGljCisJICogQHBhcmFtIGNvbW1lbnQKKwkgKiBAcmV0dXJuCisJICovCisJcHVibGljIFJvb20gdXBkYXRlUm9vbXNTZWxmKGxvbmcgdXNlcl9pZCwgbG9uZyB1c2VyX2xldmVsLCBsb25nIHJvb21zX2lkLAorCQkJbG9uZyByb29tdHlwZXNfaWQsIFN0cmluZyBuYW1lLCBib29sZWFuIGlzcHVibGljLCBTdHJpbmcgY29tbWVudCkgeworCQl0cnkgeworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tNb2RMZXZlbCh1c2VyX2xldmVsKSkgeworCisJCQkJaWYgKHRoaXMuY2hlY2tVc2VyT3JnUm9vbSh1c2VyX2lkLCByb29tc19pZCkpIHsKKworCQkJCQlSb29tIHIgPSByb29tRGFvLmdldChyb29tc19pZCk7CisJCQkJCXIuc2V0Q29tbWVudChjb21tZW50KTsKKwkJCQkJci5zZXRJc3B1YmxpYyhpc3B1YmxpYyk7CisJCQkJCXIuc2V0TmFtZShuYW1lKTsKKwkJCQkJci5zZXRSb29tdHlwZSh0aGlzLmdldFJvb21UeXBlc0J5SWQocm9vbXR5cGVzX2lkKSk7CisJCQkJCXIuc2V0VXBkYXRldGltZShuZXcgRGF0ZSgpKTsKKworCQkJCQlpZiAoci5nZXRSb29tc19pZCgpID09IG51bGwpIHsKKwkJCQkJCWVtLnBlcnNpc3Qocik7CisJCQkJCX0gZWxzZSB7CisJCQkJCQlpZiAoIWVtLmNvbnRhaW5zKHIpKSB7CisJCQkJCQkJZW0ubWVyZ2Uocik7CisJCQkJCQl9CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW3VwZGF0ZVJvb21dICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLyoqCisJICogVXBkYXRlIGEgUmVjb3JkIGluIHRoZSByb29tcyB0YWJsZQorCSAqIEBwYXJhbSByb29tc19pZAorCSAqIEBwYXJhbSByb29tdHlwZXNfaWQKKwkgKiBAcGFyYW0gbmFtZQorCSAqIEBwYXJhbSBpc3B1YmxpYworCSAqIEBwYXJhbSBjb21tZW50CisJICogQHBhcmFtIGhpZGVBY3Rpdml0aWVzQW5kQWN0aW9ucyBUT0RPCisJICogQHBhcmFtIGhpZGVGaWxlc0V4cGxvcmVyIFRPRE8KKwkgKiBAcGFyYW0gaGlkZUFjdGlvbnNNZW51IFRPRE8KKwkgKiBAcGFyYW0gaGlkZVNjcmVlblNoYXJpbmcgVE9ETworCSAqIEBwYXJhbSBoaWRlV2hpdGVib2FyZCBUT0RPCisJICogQHJldHVybgorCSAqLworCXB1YmxpYyBMb25nIHVwZGF0ZVJvb20obG9uZyB1c2VyX2xldmVsLCBsb25nIHJvb21zX2lkLCBsb25nIHJvb210eXBlc19pZCwKKwkJCVN0cmluZyBuYW1lLCBib29sZWFuIGlzcHVibGljLCBTdHJpbmcgY29tbWVudCwKKwkJCUxvbmcgbnVtYmVyT2ZQYXJ0aXppcGFudHMsIExpc3Q8SW50ZWdlcj4gb3JnYW5pc2F0aW9ucywKKwkJCUJvb2xlYW4gYXBwb2ludG1lbnQsIEJvb2xlYW4gaXNEZW1vUm9vbSwgSW50ZWdlciBkZW1vVGltZSwKKwkJCUJvb2xlYW4gaXNNb2RlcmF0ZWRSb29tLCBMaXN0PE1hcDxTdHJpbmcsIE9iamVjdD4+IHJvb21Nb2RlcmF0b3JzLAorCQkJQm9vbGVhbiBhbGxvd1VzZXJRdWVzdGlvbnMsIEJvb2xlYW4gaXNBdWRpb09ubHksIEJvb2xlYW4gYWxsb3dGb250U3R5bGVzLCBCb29sZWFuIGlzQ2xvc2VkLAorCQkJU3RyaW5nIHJlZGlyZWN0VVJMLCBTdHJpbmcgY29uZmVyZW5jZVBpbiwKKwkJCUxvbmcgb3duZXJJZCwgQm9vbGVhbiB3YWl0Rm9yUmVjb3JkaW5nLCBCb29sZWFuIGFsbG93UmVjb3JkaW5nLAorCQkJQm9vbGVhbiBoaWRlVG9wQmFyLCBCb29sZWFuIGhpZGVDaGF0LCBCb29sZWFuIGhpZGVBY3Rpdml0aWVzQW5kQWN0aW9ucywgCisJCQlCb29sZWFuIGhpZGVGaWxlc0V4cGxvcmVyLCBCb29sZWFuIGhpZGVBY3Rpb25zTWVudSwgQm9vbGVhbiBoaWRlU2NyZWVuU2hhcmluZywgQm9vbGVhbiBoaWRlV2hpdGVib2FyZCwKKwkJCUJvb2xlYW4gc2hvd01pY3JvcGhvbmVTdGF0dXMsIEJvb2xlYW4gY2hhdE1vZGVyYXRlZCwgYm9vbGVhbiBjaGF0T3BlbmVkLCBib29sZWFuIGZpbGVzT3BlbmVkCisJCQksIGJvb2xlYW4gYXV0b1ZpZGVvU2VsZWN0LCBib29sZWFuIHNpcEVuYWJsZWQpIHsKKwkJdHJ5IHsKKworCQkJbG9nLmRlYnVnKCIqKiogdXBkYXRlUm9vbSBudW1iZXJPZlBhcnRpemlwYW50czogIgorCQkJCQkrIG51bWJlck9mUGFydGl6aXBhbnRzKTsKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrQWRtaW5MZXZlbCh1c2VyX2xldmVsKSkgeworCisJCQkJcmV0dXJuIHRoaXMudXBkYXRlUm9vbUludGVybmFsKHJvb21zX2lkLCByb29tdHlwZXNfaWQsIG5hbWUsCisJCQkJCQlpc3B1YmxpYywgY29tbWVudCwgbnVtYmVyT2ZQYXJ0aXppcGFudHMsIG9yZ2FuaXNhdGlvbnMsCisJCQkJCQlhcHBvaW50bWVudCwgaXNEZW1vUm9vbSwgZGVtb1RpbWUsIGlzTW9kZXJhdGVkUm9vbSwKKwkJCQkJCXJvb21Nb2RlcmF0b3JzLCBhbGxvd1VzZXJRdWVzdGlvbnMsIGlzQXVkaW9Pbmx5LCBhbGxvd0ZvbnRTdHlsZXMsCisJCQkJCQlpc0Nsb3NlZCwgcmVkaXJlY3RVUkwsIGNvbmZlcmVuY2VQaW4sCisJCQkJCQlvd25lcklkLCB3YWl0Rm9yUmVjb3JkaW5nLCBhbGxvd1JlY29yZGluZywgaGlkZVRvcEJhciwgaGlkZUNoYXQsIAorCQkJCQkJaGlkZUFjdGl2aXRpZXNBbmRBY3Rpb25zLCBoaWRlRmlsZXNFeHBsb3JlciwgaGlkZUFjdGlvbnNNZW51LCAKKwkJCQkJCWhpZGVTY3JlZW5TaGFyaW5nLCBoaWRlV2hpdGVib2FyZCwgc2hvd01pY3JvcGhvbmVTdGF0dXMsIGNoYXRNb2RlcmF0ZWQKKwkJCQkJCSwgY2hhdE9wZW5lZCwgZmlsZXNPcGVuZWQsIGF1dG9WaWRlb1NlbGVjdCwgc2lwRW5hYmxlZCk7CisKKwkJCX0KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIlt1cGRhdGVSb29tXSAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMb25nIHVwZGF0ZVJvb21JbnRlcm5hbChsb25nIHJvb21zX2lkLCBsb25nIHJvb210eXBlc19pZCwKKwkJCVN0cmluZyBuYW1lLCBib29sZWFuIGlzcHVibGljLCBTdHJpbmcgY29tbWVudCwKKwkJCUxvbmcgbnVtYmVyT2ZQYXJ0aXppcGFudHMsIExpc3Q8SW50ZWdlcj4gb3JnYW5pc2F0aW9ucywKKwkJCUJvb2xlYW4gYXBwb2ludG1lbnQsIEJvb2xlYW4gaXNEZW1vUm9vbSwgSW50ZWdlciBkZW1vVGltZSwKKwkJCUJvb2xlYW4gaXNNb2RlcmF0ZWRSb29tLCBMaXN0PE1hcDxTdHJpbmcsIE9iamVjdD4+IHJvb21Nb2RlcmF0b3JzLAorCQkJQm9vbGVhbiBhbGxvd1VzZXJRdWVzdGlvbnMsIEJvb2xlYW4gaXNBdWRpb09ubHksIEJvb2xlYW4gYWxsb3dGb250U3R5bGVzLCBCb29sZWFuIGlzQ2xvc2VkLAorCQkJU3RyaW5nIHJlZGlyZWN0VVJMLCBTdHJpbmcgY29uZmVyZW5jZVBpbiwKKwkJCUxvbmcgb3duZXJJZCwgQm9vbGVhbiB3YWl0Rm9yUmVjb3JkaW5nLCBCb29sZWFuIGFsbG93UmVjb3JkaW5nLAorCQkJQm9vbGVhbiBoaWRlVG9wQmFyLCBCb29sZWFuIGhpZGVDaGF0LCBCb29sZWFuIGhpZGVBY3Rpdml0aWVzQW5kQWN0aW9ucywgQm9vbGVhbiBoaWRlRmlsZXNFeHBsb3JlciwgCisJCQlCb29sZWFuIGhpZGVBY3Rpb25zTWVudSwgQm9vbGVhbiBoaWRlU2NyZWVuU2hhcmluZywgQm9vbGVhbiBoaWRlV2hpdGVib2FyZCwgCisJCQlCb29sZWFuIHNob3dNaWNyb3Bob25lU3RhdHVzLCBCb29sZWFuIGNoYXRNb2RlcmF0ZWQsIGJvb2xlYW4gY2hhdE9wZW5lZCwgYm9vbGVhbiBmaWxlc09wZW5lZAorCQkJLCBib29sZWFuIGF1dG9WaWRlb1NlbGVjdCwgYm9vbGVhbiBzaXBFbmFibGVkKSB7CisJCXRyeSB7CisJCQlsb2cuZGVidWcoIioqKiB1cGRhdGVSb29tIG51bWJlck9mUGFydGl6aXBhbnRzOiAiCisJCQkJCSsgbnVtYmVyT2ZQYXJ0aXppcGFudHMpOworCQkJUm9vbSByID0gcm9vbURhby5nZXQocm9vbXNfaWQpOworCQkJci5zZXRDb21tZW50KGNvbW1lbnQpOworCisJCQlyLnNldElzcHVibGljKGlzcHVibGljKTsKKwkJCXIuc2V0TnVtYmVyT2ZQYXJ0aXppcGFudHMobnVtYmVyT2ZQYXJ0aXppcGFudHMpOworCQkJci5zZXROYW1lKG5hbWUpOworCQkJci5zZXRSb29tdHlwZSh0aGlzLmdldFJvb21UeXBlc0J5SWQocm9vbXR5cGVzX2lkKSk7CisJCQlyLnNldFVwZGF0ZXRpbWUobmV3IERhdGUoKSk7CisJCQlyLnNldEFsbG93VXNlclF1ZXN0aW9ucyhhbGxvd1VzZXJRdWVzdGlvbnMpOworCQkJci5zZXRJc0F1ZGlvT25seShpc0F1ZGlvT25seSk7CisJCQlyLnNldEFsbG93Rm9udFN0eWxlcyhhbGxvd0ZvbnRTdHlsZXMpOworCisJCQlyLnNldElzRGVtb1Jvb20oaXNEZW1vUm9vbSk7CisJCQlyLnNldERlbW9UaW1lKGRlbW9UaW1lKTsKKworCQkJci5zZXRBcHBvaW50bWVudChhcHBvaW50bWVudCk7CisKKwkJCXIuc2V0SXNNb2RlcmF0ZWRSb29tKGlzTW9kZXJhdGVkUm9vbSk7CisJCQlyLnNldEhpZGVUb3BCYXIoaGlkZVRvcEJhcik7CisKKwkJCXIuc2V0SXNDbG9zZWQoaXNDbG9zZWQpOworCQkJci5zZXRSZWRpcmVjdFVSTChyZWRpcmVjdFVSTCk7CisJCQlyLnNldE93bmVySWQob3duZXJJZCk7CisJCQlyLnNldFdhaXRGb3JSZWNvcmRpbmcod2FpdEZvclJlY29yZGluZyk7CisJCQlyLnNldEFsbG93UmVjb3JkaW5nKGFsbG93UmVjb3JkaW5nKTsKKwkJCQorCQkJci5zZXRIaWRlQ2hhdChoaWRlQ2hhdCk7CisJCQlyLnNldEhpZGVBY3Rpdml0aWVzQW5kQWN0aW9ucyhoaWRlQWN0aXZpdGllc0FuZEFjdGlvbnMpOworCQkJci5zZXRIaWRlQWN0aW9uc01lbnUoaGlkZUFjdGlvbnNNZW51KTsKKwkJCXIuc2V0SGlkZUZpbGVzRXhwbG9yZXIoaGlkZUZpbGVzRXhwbG9yZXIpOworCQkJci5zZXRIaWRlU2NyZWVuU2hhcmluZyhoaWRlU2NyZWVuU2hhcmluZyk7CisJCQlyLnNldEhpZGVXaGl0ZWJvYXJkKGhpZGVXaGl0ZWJvYXJkKTsKKwkJCXIuc2V0U2hvd01pY3JvcGhvbmVTdGF0dXMoc2hvd01pY3JvcGhvbmVTdGF0dXMpOworCQkJci5zZXRDaGF0TW9kZXJhdGVkKGNoYXRNb2RlcmF0ZWQpOworCQkJci5zZXRDaGF0T3BlbmVkKGNoYXRPcGVuZWQpOworCQkJci5zZXRGaWxlc09wZW5lZChmaWxlc09wZW5lZCk7CisJCQlyLnNldEF1dG9WaWRlb1NlbGVjdChhdXRvVmlkZW9TZWxlY3QpOworCQkJci5zZXRQaW4oY29uZmVyZW5jZVBpbik7CisJCQlyLnNldFNpcEVuYWJsZWQoc2lwRW5hYmxlZCk7CisJCQlyb29tRGFvLnVwZGF0ZShyLCBvd25lcklkKTsKKworCQkJaWYgKG9yZ2FuaXNhdGlvbnMgIT0gbnVsbCkgeworCQkJCUxvbmcgdCA9IHRoaXMudXBkYXRlUm9vbU9yZ2FuaXNhdGlvbnMob3JnYW5pc2F0aW9ucywgcik7CisJCQkJaWYgKHQgPT0gbnVsbCkKKwkJCQkJcmV0dXJuIG51bGw7CisJCQl9CisJCQlpZiAocm9vbU1vZGVyYXRvcnMgIT0gbnVsbCkgeworCQkJCXJvb21Nb2RlcmF0b3JzRGFvLnVwZGF0ZVJvb21Nb2RlcmF0b3JCeVVzZXJMaXN0KHJvb21Nb2RlcmF0b3JzLAorCQkJCQkJci5nZXRSb29tc19pZCgpKTsKKwkJCX0KKworCQkJcmV0dXJuIHIuZ2V0Um9vbXNfaWQoKTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbdXBkYXRlUm9vbV0gIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgTG9uZyB1cGRhdGVSb29tQnlNb2QobG9uZyB1c2VyX2xldmVsLCBsb25nIHJvb21zX2lkLAorCQkJbG9uZyByb29tdHlwZXNfaWQsIFN0cmluZyBuYW1lLCBib29sZWFuIGlzcHVibGljLCBTdHJpbmcgY29tbWVudCwKKwkJCUxvbmcgbnVtYmVyT2ZQYXJ0aXppcGFudHMsIExvbmcgb3JnYW5pc2F0aW9ucywgQm9vbGVhbiBhcHBvaW50bWVudCwKKwkJCUJvb2xlYW4gaXNEZW1vUm9vbSwgSW50ZWdlciBkZW1vVGltZSwgQm9vbGVhbiBpc01vZGVyYXRlZFJvb20sCisJCQlMaXN0PE1hcDxTdHJpbmcsIE9iamVjdD4+IHJvb21Nb2RlcmF0b3JzLCBCb29sZWFuIGFsbG93VXNlclF1ZXN0aW9ucykgeworCQl0cnkgeworCQkJbG9nLmRlYnVnKCIqKiogdXBkYXRlUm9vbSBudW1iZXJPZlBhcnRpemlwYW50czogIgorCQkJCQkrIG51bWJlck9mUGFydGl6aXBhbnRzKTsKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrTW9kTGV2ZWwodXNlcl9sZXZlbCkpIHsKKwkJCQlSb29tIHIgPSByb29tRGFvLmdldChyb29tc19pZCk7CisJCQkJci5zZXRDb21tZW50KGNvbW1lbnQpOworCisJCQkJci5zZXRJc3B1YmxpYyhpc3B1YmxpYyk7CisJCQkJci5zZXROdW1iZXJPZlBhcnRpemlwYW50cyhudW1iZXJPZlBhcnRpemlwYW50cyk7CisJCQkJci5zZXROYW1lKG5hbWUpOworCQkJCXIuc2V0Um9vbXR5cGUodGhpcy5nZXRSb29tVHlwZXNCeUlkKHJvb210eXBlc19pZCkpOworCQkJCXIuc2V0VXBkYXRldGltZShuZXcgRGF0ZSgpKTsKKwkJCQlyLnNldEFsbG93VXNlclF1ZXN0aW9ucyhhbGxvd1VzZXJRdWVzdGlvbnMpOworCisJCQkJci5zZXRJc0RlbW9Sb29tKGlzRGVtb1Jvb20pOworCQkJCXIuc2V0RGVtb1RpbWUoZGVtb1RpbWUpOworCisJCQkJci5zZXRBcHBvaW50bWVudChhcHBvaW50bWVudCk7CisKKwkJCQlyLnNldElzTW9kZXJhdGVkUm9vbShpc01vZGVyYXRlZFJvb20pOworCisJCQkJaWYgKHIuZ2V0Um9vbXNfaWQoKSA9PSBudWxsKSB7CisJCQkJCWVtLnBlcnNpc3Qocik7CisJCQkJfSBlbHNlIHsKKwkJCQkJaWYgKCFlbS5jb250YWlucyhyKSkgeworCQkJCQkJZW0ubWVyZ2Uocik7CisJCQkJCX0KKwkJCQl9CisKKwkJCQkvLyBGSVhNRTogT3JnYW5pemF0aW9ucyB3aWxsIG5vdCBiZSBjaGFuZ2VkIHdoZW4geW91IGRvIGFuCisJCQkJLy8gdXBkYXRlIGFzIE1vZGVyYXRvcgorCisJCQkJaWYgKHJvb21Nb2RlcmF0b3JzICE9IG51bGwpIHsKKwkJCQkJcm9vbU1vZGVyYXRvcnNEYW8udXBkYXRlUm9vbU1vZGVyYXRvckJ5VXNlckxpc3QoCisJCQkJCQkJcm9vbU1vZGVyYXRvcnMsIHIuZ2V0Um9vbXNfaWQoKSk7CisJCQkJfQorCisJCQkJcmV0dXJuIHIuZ2V0Um9vbXNfaWQoKTsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbdXBkYXRlUm9vbV0gIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlAU3VwcHJlc3NXYXJuaW5ncygicmF3dHlwZXMiKQorCXByaXZhdGUgYm9vbGVhbiBjaGVja1Jvb21BbHJlYWR5SW5PcmcoTG9uZyBvcmdpZCwgTGlzdCBvcmdhbmlzYXRpb25zKQorCQkJdGhyb3dzIEV4Y2VwdGlvbiB7CisJCWZvciAoSXRlcmF0b3IgaXQgPSBvcmdhbmlzYXRpb25zLml0ZXJhdG9yKCk7IGl0Lmhhc05leHQoKTspIHsKKwkJCVJvb21PcmdhbmlzYXRpb24gck9yZ2FuaXNhdGlvbiA9IChSb29tT3JnYW5pc2F0aW9uKSBpdC5uZXh0KCk7CisJCQlpZiAock9yZ2FuaXNhdGlvbi5nZXRPcmdhbmlzYXRpb24oKS5nZXRPcmdhbmlzYXRpb25faWQoKQorCQkJCQkuZXF1YWxzKG9yZ2lkKSkKKwkJCQlyZXR1cm4gdHJ1ZTsKKwkJfQorCQlyZXR1cm4gZmFsc2U7CisJfQorCisJcHJpdmF0ZSBib29sZWFuIGNoZWNrUm9vbVNob3VsZEJ5RGVsZXRlZChsb25nIG9yZ0lkLCBMaXN0PEludGVnZXI+IG9yZ2FuaXNhdGlvbnMpIHRocm93cyBFeGNlcHRpb24geworCQlmb3IgKEl0ZXJhdG9yPEludGVnZXI+IGl0ID0gb3JnYW5pc2F0aW9ucy5pdGVyYXRvcigpOyBpdC5oYXNOZXh0KCk7KSB7CisJCQlJbnRlZ2VyIGtleSA9IGl0Lm5leHQoKTsKKwkJCUxvbmcgc3RvcmVkT3JnSWQgPSBrZXkubG9uZ1ZhbHVlKCk7CisJCQlpZiAoc3RvcmVkT3JnSWQuZXF1YWxzKG9yZ0lkKSkKKwkJCQlyZXR1cm4gdHJ1ZTsKKwkJfQorCQlyZXR1cm4gZmFsc2U7CisJfQorCisJcHJpdmF0ZSBMb25nIHVwZGF0ZVJvb21PcmdhbmlzYXRpb25zKExpc3Q8SW50ZWdlcj4gb3JnYW5pc2F0aW9ucywgUm9vbSByb29tKQorCQkJdGhyb3dzIEV4Y2VwdGlvbiB7CisJCUxpc3Q8Um9vbU9yZ2FuaXNhdGlvbj4gcm9vbU9yZ2FuaXNhdGlvbnMgPSB0aGlzLmdldE9yZ2FuaXNhdGlvbnNCeVJvb20oMywKKwkJCQlyb29tLmdldFJvb21zX2lkKCkpOworCisJCUxpc3Q8TG9uZz4gcm9vbXNUb0FkZCA9IG5ldyBMaW5rZWRMaXN0PExvbmc+KCk7CisJCUxpc3Q8TG9uZz4gcm9vbXNUb0RlbCA9IG5ldyBMaW5rZWRMaXN0PExvbmc+KCk7CisKKwkJZm9yIChJdGVyYXRvcjxJbnRlZ2VyPiBpdCA9IG9yZ2FuaXNhdGlvbnMuaXRlcmF0b3IoKTsgaXQuaGFzTmV4dCgpOykgeworCQkJSW50ZWdlciBrZXkgPSBpdC5uZXh0KCk7CisJCQlMb25nIG9yZ0lkVG9BZGQgPSBrZXkubG9uZ1ZhbHVlKCk7CisJCQlpZiAoIXRoaXMuY2hlY2tSb29tQWxyZWFkeUluT3JnKG9yZ0lkVG9BZGQsIHJvb21PcmdhbmlzYXRpb25zKSkKKwkJCQlyb29tc1RvQWRkLmFkZChvcmdJZFRvQWRkKTsKKwkJfQorCisJCWZvciAoSXRlcmF0b3I8Um9vbU9yZ2FuaXNhdGlvbj4gaXQgPSByb29tT3JnYW5pc2F0aW9ucy5pdGVyYXRvcigpOyBpdC5oYXNOZXh0KCk7KSB7CisJCQlSb29tT3JnYW5pc2F0aW9uIHJPcmdhbmlzYXRpb24gPSBpdC5uZXh0KCk7CisJCQlMb25nIG9yZ0lkVG9EZWwgPSByT3JnYW5pc2F0aW9uLmdldE9yZ2FuaXNhdGlvbigpCisJCQkJCS5nZXRPcmdhbmlzYXRpb25faWQoKTsKKwkJCWlmICghdGhpcy5jaGVja1Jvb21TaG91bGRCeURlbGV0ZWQob3JnSWRUb0RlbCwgb3JnYW5pc2F0aW9ucykpCisJCQkJcm9vbXNUb0RlbC5hZGQob3JnSWRUb0RlbCk7CisJCX0KKworCQkvLyBsb2cuZXJyb3IoInVwZGF0ZVJvb21PcmdhbmlzYXRpb25zIHJvb21zVG9BZGQ6ICIrcm9vbXNUb0FkZC5zaXplKCkpOworCQkvLyBsb2cuZXJyb3IoInVwZGF0ZVJvb21PcmdhbmlzYXRpb25zIHJvb21zVG9EZWw6ICIrcm9vbXNUb0RlbC5zaXplKCkpOworCisJCWZvciAoSXRlcmF0b3I8TG9uZz4gaXQgPSByb29tc1RvQWRkLml0ZXJhdG9yKCk7IGl0Lmhhc05leHQoKTspIHsKKwkJCUxvbmcgb3JnSWRUb0FkZCA9IGl0Lm5leHQoKTsKKwkJCXRoaXMuYWRkUm9vbVRvT3JnYW5pc2F0aW9uKDMsIHJvb20uZ2V0Um9vbXNfaWQoKSwgb3JnSWRUb0FkZCk7CisJCX0KKwkJZm9yIChJdGVyYXRvcjxMb25nPiBpdCA9IHJvb21zVG9EZWwuaXRlcmF0b3IoKTsgaXQuaGFzTmV4dCgpOykgeworCQkJTG9uZyBvcmdUb0RlbCA9IGl0Lm5leHQoKTsKKwkJCXRoaXMuZGVsZXRlUm9vbUZyb21PcmdhbmlzYXRpb25CeVJvb21BbmRPcmdhbmlzYXRpb24oCisJCQkJCXJvb20uZ2V0Um9vbXNfaWQoKSwgb3JnVG9EZWwpOworCQl9CisKKwkJcmV0dXJuIG5ldyBMb25nKDEpOworCX0KKworCS8qKgorCSAqIGRlbGV0ZSBhbGwgUm9vbXNfT3JnYW5pc2F0aW9ucyBhbmQgUm9vbSBieSBhIGdpdmVuIHJvb21faWQKKwkgKiAKKwkgKiBAcGFyYW0gcm9vbXNfaWQKKwkgKi8KKwlwdWJsaWMgTG9uZyBkZWxldGVSb29tQnlJZChsb25nIHVzZXJfbGV2ZWwsIGxvbmcgcm9vbXNfaWQpIHsKKwkJdHJ5IHsKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrV2ViU2VydmljZUxldmVsKHVzZXJfbGV2ZWwpKSB7CisJCQkJdGhpcy5kZWxldGVBbGxSb29tc09yZ2FuaXNhdGlvbk9mUm9vbShyb29tc19pZCk7CisJCQkJcm9vbURhby5kZWxldGUocm9vbURhby5nZXQocm9vbXNfaWQpLCAtMUwpOworCQkJCXJldHVybiByb29tc19pZDsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZGVsZXRlUm9vbUJ5SWRdICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLyoqCisJICogZGVsZXRlIGFsbCBSb29tc19PcmdhbmlzYXRpb24gYnkgYSByb29tc19pZAorCSAqIAorCSAqIEBwYXJhbSByb29tc19pZAorCSAqLworCUBTdXBwcmVzc1dhcm5pbmdzKCJyYXd0eXBlcyIpCisJcHVibGljIHZvaWQgZGVsZXRlQWxsUm9vbXNPcmdhbmlzYXRpb25PZlJvb20obG9uZyByb29tc19pZCkgeworCQl0cnkgeworCQkJTGlzdCBsbCA9IHRoaXMuZ2V0Um9vbXNPcmdhbmlzYXRpb25CeVJvb21zSWQocm9vbXNfaWQpOworCQkJZm9yIChJdGVyYXRvciBpdCA9IGxsLml0ZXJhdG9yKCk7IGl0Lmhhc05leHQoKTspIHsKKwkJCQlSb29tT3JnYW5pc2F0aW9uIHJPcmcgPSAoUm9vbU9yZ2FuaXNhdGlvbikgaXQubmV4dCgpOworCQkJCXRoaXMuZGVsZXRlUm9vbXNPcmdhbmlzYXRpb24ock9yZyk7CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2RlbGV0ZUFsbFJvb21zT3JnYW5pc2F0aW9uT2ZSb29tXSAiLCBleDIpOworCQl9CisJfQorCisJLyoqCisJICogRGVsZXRlIGFsbCByb29tIG9mIGEgZ2l2ZW4gT3JnYW5pc2F0aW9uCisJICogCisJICogQHBhcmFtIG9yZ2FuaXNhdGlvbl9pZAorCSAqLworCUBTdXBwcmVzc1dhcm5pbmdzKCJyYXd0eXBlcyIpCisJcHVibGljIHZvaWQgZGVsZXRlQWxsUm9vbXNPcmdhbmlzYXRpb25PZk9yZ2FuaXNhdGlvbihsb25nIG9yZ2FuaXNhdGlvbl9pZCkgeworCQl0cnkgeworCQkJTGlzdCBsbCA9IHRoaXMuZ2V0Um9vbXNPcmdhbmlzYXRpb25CeU9yZ2FuaXNhdGlvbklkKDMsCisJCQkJCW9yZ2FuaXNhdGlvbl9pZCk7CisJCQlmb3IgKEl0ZXJhdG9yIGl0ID0gbGwuaXRlcmF0b3IoKTsgaXQuaGFzTmV4dCgpOykgeworCQkJCVJvb21PcmdhbmlzYXRpb24gck9yZyA9IChSb29tT3JnYW5pc2F0aW9uKSBpdC5uZXh0KCk7CisJCQkJdGhpcy5kZWxldGVSb29tc09yZ2FuaXNhdGlvbihyT3JnKTsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZGVsZXRlQWxsUm9vbXNPZk9yZ2FuaXNhdGlvbl0gIiwgZXgyKTsKKwkJfQorCX0KKworCS8qKgorCSAqIERlbGV0ZSBhIFJvb21zX09yZ2FuaXNhdGlvbiBieSBpdHMgaWQKKwkgKiAKKwkgKiBAcGFyYW0gcm9vbXNfb3JnYW5pc2F0aW9uX2lkCisJICovCisJcHVibGljIExvbmcgZGVsZXRlUm9vbXNPcmdhbmlzYXRpb25CeUlEKGxvbmcgcm9vbXNfb3JnYW5pc2F0aW9uX2lkKSB7CisJCXRyeSB7CisJCQlSb29tT3JnYW5pc2F0aW9uIHJPcmcgPSB0aGlzCisJCQkJCS5nZXRSb29tc09yZ2FuaXNhdGlvbkJ5SWQocm9vbXNfb3JnYW5pc2F0aW9uX2lkKTsKKwkJCXJldHVybiB0aGlzLmRlbGV0ZVJvb21zT3JnYW5pc2F0aW9uKHJPcmcpOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIltkZWxldGVSb29tc09yZ2FuaXNhdGlvbkJ5SURdICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHJpdmF0ZSBMb25nIGRlbGV0ZVJvb21Gcm9tT3JnYW5pc2F0aW9uQnlSb29tQW5kT3JnYW5pc2F0aW9uKGxvbmcgcm9vbXNfaWQsCisJCQlsb25nIG9yZ2FuaXNhdGlvbl9pZCkgeworCQl0cnkgeworCQkJUm9vbU9yZ2FuaXNhdGlvbiByT3JnYW5pc2F0aW9uID0gdGhpcworCQkJCQkuZ2V0Um9vbXNPcmdhbmlzYXRpb25CeU9yZ2FuaXNhdGlvbklkQW5kUm9vbUlkKAorCQkJCQkJCW9yZ2FuaXNhdGlvbl9pZCwgcm9vbXNfaWQpOworCQkJcmV0dXJuIHRoaXMuZGVsZXRlUm9vbXNPcmdhbmlzYXRpb24ock9yZ2FuaXNhdGlvbik7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2RlbGV0ZVJvb21Gcm9tT3JnYW5pc2F0aW9uQnlSb29tQW5kT3JnYW5pc2F0aW9uXSAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCS8qKgorCSAqIGRlbGV0ZSBhIFJvb21zX09yZ2FuaXNhdGlvbi1PYmplY3QKKwkgKiAKKwkgKiBAcGFyYW0gck9yZworCSAqLworCXB1YmxpYyBMb25nIGRlbGV0ZVJvb21zT3JnYW5pc2F0aW9uKFJvb21PcmdhbmlzYXRpb24gck9yZykgeworCQl0cnkgeworCQkJck9yZy5zZXREZWxldGVkKHRydWUpOworCQkJck9yZy5zZXRVcGRhdGV0aW1lKG5ldyBEYXRlKCkpOworCQkJaWYgKHJPcmcuZ2V0Um9vbXNfb3JnYW5pc2F0aW9uX2lkKCkgPT0gbnVsbCkgeworCQkJCWVtLnBlcnNpc3Qock9yZyk7CisJCQl9IGVsc2UgeworCQkJCWlmICghZW0uY29udGFpbnMock9yZykpIHsKKwkJCQkJZW0ubWVyZ2Uock9yZyk7CisJCQkJfQorCQkJfQorCQkJcmV0dXJuIHJPcmcuZ2V0Um9vbXNfb3JnYW5pc2F0aW9uX2lkKCk7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2RlbGV0ZVJvb21zT3JnYW5pc2F0aW9uXSAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwlwdWJsaWMgdm9pZCBjbG9zZVJvb20oTG9uZyByb29tc19pZCwgQm9vbGVhbiBzdGF0dXMpIHsKKwkJdHJ5IHsKKworCQkJUm9vbSByb29tID0gcm9vbURhby5nZXQocm9vbXNfaWQpOworCisJCQlyb29tLnNldElzQ2xvc2VkKHN0YXR1cyk7CisKKwkJCXJvb21EYW8udXBkYXRlKHJvb20sIC0xTCk7CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCWxvZy5lcnJvcigiRXJyb3IgdXBkYXRlUm9vbU9iamVjdCA6ICIsIGUpOworCQl9CisJfQorCisJLyoqCisJICogR2V0IGEgUm9vbXMtT2JqZWN0IG9yIE5VTEwKKwkgKiAKKwkgKiBAcGFyYW0gcm9vbXNfaWQKKwkgKiBAcmV0dXJuIFJvb21zLU9iamVjdCBvciBOVUxMCisJICovCisJcHVibGljIFJvb20gZ2V0Um9vbUJ5T3duZXJBbmRUeXBlSWQoTG9uZyBvd25lcklkLCBMb25nIHJvb210eXBlc0lkLAorCQkJU3RyaW5nIHJvb21OYW1lKSB7CisJCXRyeSB7CisKKwkJCWlmIChyb29tdHlwZXNJZCA9PSBudWxsIHx8IHJvb210eXBlc0lkID09IDApIHsKKwkJCQlyZXR1cm4gbnVsbDsKKwkJCX0KKwkJCWxvZy5kZWJ1ZygiZ2V0Um9vbUJ5T3duZXJBbmRUeXBlSWQgOiAiICsgb3duZXJJZCArICIgfHwgIgorCQkJCQkrIHJvb210eXBlc0lkKTsKKwkJCVJvb20gcm9vbSA9IG51bGw7CisJCQlUeXBlZFF1ZXJ5PFJvb20+IHF1ZXJ5ID0gZW0uY3JlYXRlTmFtZWRRdWVyeSgiZ2V0Um9vbUJ5T3duZXJBbmRUeXBlSWQiLCBSb29tLmNsYXNzKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigib3duZXJJZCIsIG93bmVySWQpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJyb29tdHlwZXNJZCIsIHJvb210eXBlc0lkKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiZGVsZXRlZCIsIHRydWUpOworCQkJTGlzdDxSb29tPiBsbCA9IHF1ZXJ5LmdldFJlc3VsdExpc3QoKTsKKwkJCWlmIChsbC5zaXplKCkgPiAwKSB7CisJCQkJcm9vbSA9IGxsLmdldCgwKTsKKwkJCX0KKworCQkJaWYgKHJvb20gIT0gbnVsbCkgeworCQkJCXJldHVybiByb29tOworCQkJfSBlbHNlIHsKKwkJCQlsb2cuZGVidWcoIkNvdWxkIG5vdCBmaW5kIHJvb20gIiArIG93bmVySWQgKyAiIHx8ICIKKwkJCQkJCSsgcm9vbXR5cGVzSWQpOworCQkJCQorCQkJCUxvbmcgcm9vbXNfaWQgPSB0aGlzLmFkZFJvb20oM0wsIHJvb21OYW1lLCByb29tdHlwZXNJZCwKKwkJCQkJCSJNeSBSb29tcyBvZiBvd25lcklkICIgKyBvd25lcklkLAorCQkJCQkJKHJvb210eXBlc0lkID09IDEpID8gMjVMIDogMTUwTCwgLy8gbnVtYmVyT2ZQYXJ0aXppcGFudHMKKwkJCQkJCWZhbHNlLCAvLyBpc3B1YmxpYworCQkJCQkJbnVsbCwgLy8gb3JnYW5pc2F0aW9ucworCQkJCQkJZmFsc2UsIC8vIGFwcG9pbnRtZW50CisJCQkJCQlmYWxzZSwgLy8gaXNEZW1vUm9vbQorCQkJCQkJbnVsbCwgLy8gZGVtb1RpbWUKKwkJCQkJCWZhbHNlLCAvLyBpc01vZGVyYXRlZFJvb20KKwkJCQkJCW51bGwsIC8vIHJvb21Nb2RlcmF0b3JzCisJCQkJCQl0cnVlLCAvLyBhbGxvd1VzZXJRdWVzdGlvbnMKKwkJCQkJCWZhbHNlLCAvLyBpc0F1ZGlvT25seQorCQkJCQkJdHJ1ZSwgLy8gYWxsb3dGb250U3R5bGUKKwkJCQkJCWZhbHNlLCAvLyBpc0Nsb3NlZAorCQkJCQkJIiIsIC8vIHJlZGlyZWN0VVJMCisJCQkJCQkiIiwgLy8gY29uZmVyZW5jZVBpbgorCQkJCQkJb3duZXJJZCwgbnVsbCwgbnVsbCwgCisJCQkJCQlmYWxzZSwgLy8gaGlkZVRvcEJhcgorCQkJCQkJZmFsc2UsIC8vIGhpZGVDaGF0CisJCQkJCQlmYWxzZSwgLy8gaGlkZUFjdGl2aXRpZXNBbmRBY3Rpb25zCisJCQkJCQlmYWxzZSwgLy8gaGlkZUZpbGVzRXhwbG9yZXIKKwkJCQkJCWZhbHNlLCAvLyBoaWRlQWN0aW9uc01lbnUKKwkJCQkJCWZhbHNlLCAvLyBoaWRlU2NyZWVuU2hhcmluZyAKKwkJCQkJCWZhbHNlLCAvLyBoaWRlV2hpdGVib2FyZAorCQkJCQkJZmFsc2UsIC8vc2hvd01pY3JvcGhvbmVTdGF0dXMKKwkJCQkJCWZhbHNlLCAvLyBjaGF0TW9kZXJhdGVkCisJCQkJCQlmYWxzZSwgLy9jaGF0T3BlbmVkCisJCQkJCQlmYWxzZSwgLy9maWxlc09wZW5lZAorCQkJCQkJZmFsc2UsIC8vYXV0b1ZpZGVvU2VsZWN0CisJCQkJCQlmYWxzZSAvL3NpcEVuYWJsZWQKKwkJCQkJCSk7CisKKwkJCQlpZiAocm9vbXNfaWQgIT0gbnVsbCkgeworCQkJCQlyZXR1cm4gcm9vbURhby5nZXQocm9vbXNfaWQpOworCQkJCX0KKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZ2V0Um9vbUJ5T3duZXJBbmRUeXBlSWRdICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9jb25mZXJlbmNlL2Rhby9DbGllbnREYW8uamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2NvbmZlcmVuY2UvZGFvL0NsaWVudERhby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlODgyODQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9jb25mZXJlbmNlL2Rhby9DbGllbnREYW8uamF2YQpAQCAtMCwwICsxLDE3NyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNvbmZlcmVuY2UuZGFvOworCitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eU1hbmFnZXI7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuUGVyc2lzdGVuY2VDb250ZXh0OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlF1ZXJ5OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlR5cGVkUXVlcnk7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5TZXJ2ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbS5DbGllbnQ7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay50cmFuc2FjdGlvbi5hbm5vdGF0aW9uLlRyYW5zYWN0aW9uYWw7CisKKy8qKgorICogUGVyc2lzdGVuY2Ugb2YgY2xpZW50IG9iamVjdHMgdG8gZGF0YWJhc2UgaXMgb25seSBhdmFpbGFibGUgaWYgc28gY29uZmlndXJlZCEKKyAqIAorICogQGF1dGhvciBzZWJhd2FnbmVyCisgKgorICovCitAVHJhbnNhY3Rpb25hbAorcHVibGljIGNsYXNzIENsaWVudERhbyB7CisJCisJQFBlcnNpc3RlbmNlQ29udGV4dAorCXByaXZhdGUgRW50aXR5TWFuYWdlciBlbTsKKwkKKwlwcml2YXRlIHN0YXRpYyBMaXN0PExvbmc+IEVNUFRZX0xJU1QgPSBuZXcgQXJyYXlMaXN0PExvbmc+KDApOworCQorCXB1YmxpYyB2b2lkIGNsZWFuQWxsQ2xpZW50cygpIHsKKwkJZW0uY3JlYXRlTmFtZWRRdWVyeSgiZGVsZXRlQWxsIikuZXhlY3V0ZVVwZGF0ZSgpOworCX0KKworCXB1YmxpYyB2b2lkIGNsZWFuQ2xpZW50c0J5U2VydmVyKFNlcnZlciBzZXJ2ZXIpIHsKKwkJZW0uY3JlYXRlTmFtZWRRdWVyeSgiZGVsZXRlQ2xpZW50c0J5U2VydmVyIikuCisJCQlzZXRQYXJhbWV0ZXIoInNlcnZlciIsIHNlcnZlcikuCisJCQlleGVjdXRlVXBkYXRlKCk7CisJfQorCQorCXB1YmxpYyBDbGllbnQgYWRkKENsaWVudCBlbnRpdHkpIHsKKwkJZW0ucGVyc2lzdChlbnRpdHkpOworCQlyZXR1cm4gZW50aXR5OworCX0KKwkKKwlwdWJsaWMgQ2xpZW50IHVwZGF0ZShDbGllbnQgZW50aXR5KSB7CisJCWVtLm1lcmdlKGVudGl0eSk7CisJCXJldHVybiBlbnRpdHk7CisJfQorCQorCXB1YmxpYyB2b2lkIGRlbGV0ZShDbGllbnQgZW50aXR5KSB7CisJCVF1ZXJ5IHEgPSBlbS5jcmVhdGVOYW1lZFF1ZXJ5KCJkZWxldGVkQnlJZCIpOworCQlxLnNldFBhcmFtZXRlcigiaWQiLCBlbnRpdHkuZ2V0SWQoKSk7CisJCXEuZXhlY3V0ZVVwZGF0ZSgpOworCX0KKwkKKwlwdWJsaWMgdm9pZCByZW1vdmVDbGllbnRCeVNlcnZlckFuZFN0cmVhbUlkKFNlcnZlciBzZXJ2ZXIsIFN0cmluZyBzdHJlYW1JZCkgeworCQlRdWVyeSBxID0gZW0uY3JlYXRlTmFtZWRRdWVyeSgiZGVsZXRlZEJ5U2VydmVyQW5kU3RyZWFtSWQiKTsKKwkJcS5zZXRQYXJhbWV0ZXIoInNlcnZlciIsIHNlcnZlcik7CisJCXEuc2V0UGFyYW1ldGVyKCJzdHJlYW1pZCIsIHN0cmVhbUlkKTsKKwkJcS5leGVjdXRlVXBkYXRlKCk7CisJfQorCQorCXB1YmxpYyBpbnQgY291bnRDbGllbnRzKCkgeworCQlyZXR1cm4gZW0uY3JlYXRlTmFtZWRRdWVyeSgiY291bnRDbGllbnRzIiwgTG9uZy5jbGFzcykuZ2V0U2luZ2xlUmVzdWx0KCkuaW50VmFsdWUoKTsKKwl9CisJCisJcHVibGljIGludCBjb3VudENsaWVudHNCeVNlcnZlcihTZXJ2ZXIgc2VydmVyKSB7CisJCVR5cGVkUXVlcnk8TG9uZz4gcSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoImNvdW50Q2xpZW50c0J5U2VydmVyIiwgTG9uZy5jbGFzcyk7CisJCXEuc2V0UGFyYW1ldGVyKCJzZXJ2ZXIiLCBzZXJ2ZXIpOworCQlyZXR1cm4gcS5nZXRTaW5nbGVSZXN1bHQoKS5pbnRWYWx1ZSgpOworCX0KKworCXB1YmxpYyBsb25nIGNvdW50Q2xpZW50c0J5U2VydmVyQW5kU3RyZWFtSWQoU2VydmVyIHNlcnZlciwgU3RyaW5nIHN0cmVhbUlkKSB7CisJCVR5cGVkUXVlcnk8TG9uZz4gcSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoImNvdW50Q2xpZW50c0J5U2VydmVyQW5kU3RyZWFtSWQiLCBMb25nLmNsYXNzKTsKKwkJcS5zZXRQYXJhbWV0ZXIoInN0cmVhbWlkIiwgc3RyZWFtSWQpOworCQlxLnNldFBhcmFtZXRlcigic2VydmVyIiwgc2VydmVyKTsKKwkJcmV0dXJuIHEuZ2V0U2luZ2xlUmVzdWx0KCk7CisJfQorCisJLyoqCisJICogUXVlcnkuZ2V0U2luZ2xlUmVzdWx0IHdvdWxkIHRocm93IGFuIGVycm9yIGlmIHJlc3VsdCBpcyBudWxsLCAKKwkgKiBzZWU6IGh0dHA6Ly9zdGFja292ZXJmbG93LmNvbS9xdWVzdGlvbnMvMjAwMjk5My9qcGEtZ2V0c2luZ2xlcmVzdWx0LW9yLW51bGwKKwkgKiAKKwkgKiBAcGFyYW0gc2VydmVyCisJICogQHBhcmFtIHN0cmVhbUlkCisJICogQHJldHVybgorCSAqLworCXB1YmxpYyBDbGllbnQgZ2V0Q2xpZW50QnlTZXJ2ZXJBbmRTdHJlYW1JZChTZXJ2ZXIgc2VydmVyLCBTdHJpbmcgc3RyZWFtSWQpIHsKKwkJVHlwZWRRdWVyeTxDbGllbnQ+IHEgPSBlbS5jcmVhdGVOYW1lZFF1ZXJ5KCJnZXRDbGllbnRCeVNlcnZlckFuZFN0cmVhbUlkIiwgQ2xpZW50LmNsYXNzKTsKKwkJcS5zZXRQYXJhbWV0ZXIoInN0cmVhbWlkIiwgc3RyZWFtSWQpOworCQlxLnNldFBhcmFtZXRlcigic2VydmVyIiwgc2VydmVyKTsKKwkJTGlzdDxDbGllbnQ+IGxsID0gcS5nZXRSZXN1bHRMaXN0KCk7CisJCWlmIChsbC5zaXplKCkgPT0gMSkgeworCQkJcmV0dXJuIGxsLmdldCgwKTsKKwkJfSBlbHNlIGlmIChsbC5zaXplKCkgPT0gMCkgeworCQkJcmV0dXJuIG51bGw7CisJCX0KKwkJdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIm1vcmUgdGhlbiBvbmUgY2xpZW50IHdhcyBmb3VuZCBzdHJlYW1JZCAiKyBzdHJlYW1JZCArICIgc2VydmVyICIrc2VydmVyKTsKKwl9CisKKwlwdWJsaWMgTGlzdDxDbGllbnQ+IGdldENsaWVudHNCeVB1YmxpY1NJREFuZFNlcnZlcihTZXJ2ZXIgc2VydmVyLCBTdHJpbmcgcHVibGljU0lEKSB7CisJCVR5cGVkUXVlcnk8Q2xpZW50PiBxID0gZW0uY3JlYXRlTmFtZWRRdWVyeSgiZ2V0Q2xpZW50c0J5UHVibGljU0lEQW5kU2VydmVyIiwgQ2xpZW50LmNsYXNzKTsKKwkJcS5zZXRQYXJhbWV0ZXIoInNlcnZlciIsIHNlcnZlcik7CisJCXEuc2V0UGFyYW1ldGVyKCJwdWJsaWNTSUQiLCBwdWJsaWNTSUQpOworCQlyZXR1cm4gcS5nZXRSZXN1bHRMaXN0KCk7CisJfQorCisJcHVibGljIExpc3Q8Q2xpZW50PiBnZXRDbGllbnRzQnlQdWJsaWNTSUQoU3RyaW5nIHB1YmxpY1NJRCkgeworCQlUeXBlZFF1ZXJ5PENsaWVudD4gcSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoImdldENsaWVudHNCeVB1YmxpY1NJRCIsIENsaWVudC5jbGFzcyk7CisJCXEuc2V0UGFyYW1ldGVyKCJwdWJsaWNTSUQiLCBwdWJsaWNTSUQpOworCQlyZXR1cm4gcS5nZXRSZXN1bHRMaXN0KCk7CisJfQorCisJcHVibGljIExpc3Q8Q2xpZW50PiBnZXRDbGllbnRzQnlTZXJ2ZXIoU2VydmVyIHNlcnZlcikgeworCQlUeXBlZFF1ZXJ5PENsaWVudD4gcSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoImdldENsaWVudHNCeVNlcnZlciIsIENsaWVudC5jbGFzcyk7CisJCXEuc2V0UGFyYW1ldGVyKCJzZXJ2ZXIiLCBzZXJ2ZXIpOwkKKwkJcmV0dXJuIHEuZ2V0UmVzdWx0TGlzdCgpOworCX0KKworCXB1YmxpYyBMaXN0PENsaWVudD4gZ2V0Q2xpZW50cygpIHsKKwkJcmV0dXJuIGVtLmNyZWF0ZU5hbWVkUXVlcnkoImdldENsaWVudHMiLCBDbGllbnQuY2xhc3MpLmdldFJlc3VsdExpc3QoKTsKKwl9CisJCisJcHVibGljIExpc3Q8Q2xpZW50PiBnZXRDbGllbnRzV2l0aFNlcnZlcigpIHsKKwkJcmV0dXJuIGVtLmNyZWF0ZU5hbWVkUXVlcnkoImdldENsaWVudHNXaXRoU2VydmVyIiwgQ2xpZW50LmNsYXNzKS5nZXRSZXN1bHRMaXN0KCk7CisJfQorCisJcHVibGljIExpc3Q8Q2xpZW50PiBnZXRDbGllbnRzQnlVc2VySWQoU2VydmVyIHNlcnZlciwgTG9uZyB1c2VySWQpIHsKKwkJVHlwZWRRdWVyeTxDbGllbnQ+IHEgPSBlbS5jcmVhdGVOYW1lZFF1ZXJ5KCJnZXRDbGllbnRzQnlVc2VySWQiLCBDbGllbnQuY2xhc3MpOworCQlxLnNldFBhcmFtZXRlcigic2VydmVyIiwgc2VydmVyKTsKKwkJcS5zZXRQYXJhbWV0ZXIoInVzZXJfaWQiLCB1c2VySWQpOwkKKwkJcmV0dXJuIHEuZ2V0UmVzdWx0TGlzdCgpOworCX0KKworCXB1YmxpYyBMaXN0PENsaWVudD4gZ2V0Q2xpZW50c0J5Um9vbUlkKExvbmcgcm9vbUlkKSB7CisJCVR5cGVkUXVlcnk8Q2xpZW50PiBxID0gZW0uY3JlYXRlTmFtZWRRdWVyeSgiZ2V0Q2xpZW50c0J5Um9vbUlkIiwgQ2xpZW50LmNsYXNzKTsKKwkJcS5zZXRQYXJhbWV0ZXIoInJvb21faWQiLCByb29tSWQpOwkKKwkJcmV0dXJuIHEuZ2V0UmVzdWx0TGlzdCgpOworCX0KKworCS8qKgorCSAqIHJldHVybnMgYSBsaXN0IG9mIHNlcnZlcnMgb3IgYW4gZW1wdHkgbGlzdCBpbiBjYXNlIG5vIHJvb21JZHMgYXJlIGZvdW5kCisJICogCisJICogQHBhcmFtIHNlcnZlcgorCSAqIEByZXR1cm4KKwkgKi8KKwlwdWJsaWMgTGlzdDxMb25nPiBnZXRSb29tc0lkc0J5U2VydmVyKFNlcnZlciBzZXJ2ZXIpIHsKKwkJUXVlcnkgcSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoImdldFJvb21zSWRzQnlTZXJ2ZXIiKTsKKwkJcS5zZXRQYXJhbWV0ZXIoInNlcnZlciIsIHNlcnZlcik7CisJCUBTdXBwcmVzc1dhcm5pbmdzKCJ1bmNoZWNrZWQiKQorCQlMaXN0PExvbmc+IHJlc3VsdExpc3QgPSBxLmdldFJlc3VsdExpc3QoKTsKKwkJLy9pZiB0aGUgcmVzdWx0IGxpc3QgY29udGFpbnMgb25seSBhIHZhbHVlIG51bGwsIGl0IG1lYW5zIGl0IAorCQkvL3dhcyBlbXB0eSBhbmQgbm8gcm9vbWlkJ3MgaGF2ZSBiZWVuIGZvdW5kCisJCWlmIChyZXN1bHRMaXN0LnNpemUoKSA9PSAxICYmIHJlc3VsdExpc3QuZ2V0KDApID09IG51bGwpIHsKKwkJCXJldHVybiBFTVBUWV9MSVNUOworCQl9CisJCXJldHVybiByZXN1bHRMaXN0OworCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvY29uZmVyZW5jZS9kYW8vUm9vbURhby5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvY29uZmVyZW5jZS9kYW8vUm9vbURhby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljOWY2MTUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9jb25mZXJlbmNlL2Rhby9Sb29tRGFvLmphdmEKQEAgLTAsMCArMSwxNDIgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jb25mZXJlbmNlLmRhbzsKKworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5TWFuYWdlcjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5QZXJzaXN0ZW5jZUNvbnRleHQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVHlwZWRRdWVyeTsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuSURhdGFQcm92aWRlckRhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLmRhby5Db25maWd1cmF0aW9uRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnJvb20uUm9vbTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5EYW9IZWxwZXI7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uQXV0b3dpcmVkOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsudHJhbnNhY3Rpb24uYW5ub3RhdGlvbi5UcmFuc2FjdGlvbmFsOworCitAVHJhbnNhY3Rpb25hbAorcHVibGljIGNsYXNzIFJvb21EYW8gaW1wbGVtZW50cyBJRGF0YVByb3ZpZGVyRGFvPFJvb20+IHsKKwlwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZ1tdIHNlYXJjaEZpZWxkcyA9IHsibmFtZSJ9OworCQorCUBQZXJzaXN0ZW5jZUNvbnRleHQKKwlwcml2YXRlIEVudGl0eU1hbmFnZXIgZW07CisgICAgQEF1dG93aXJlZAorCXByaXZhdGUgQ29uZmlndXJhdGlvbkRhbyBjZmdEYW87CisgICAgQEF1dG93aXJlZAorICAgIHByaXZhdGUgU2lwRGFvIHNpcERhbzsKKworCXB1YmxpYyBSb29tIGdldChsb25nIGlkKSB7CisJCVR5cGVkUXVlcnk8Um9vbT4gcSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoImdldFJvb21CeUlkIiwgUm9vbS5jbGFzcyk7CisJCXEuc2V0UGFyYW1ldGVyKCJpZCIsIGlkKTsKKwkJTGlzdDxSb29tPiBsID0gcS5nZXRSZXN1bHRMaXN0KCk7CisJCXJldHVybiBsLmlzRW1wdHkoKSA/IG51bGwgOiBsLmdldCgwKTsKKwl9CisKKwlwdWJsaWMgTGlzdDxSb29tPiBnZXQoaW50IHN0YXJ0LCBpbnQgY291bnQpIHsKKwkJVHlwZWRRdWVyeTxSb29tPiBxID0gZW0uY3JlYXRlTmFtZWRRdWVyeSgiZ2V0Tm9uZGVsZXRlZFJvb21zIiwgUm9vbS5jbGFzcyk7CisJCXEuc2V0Rmlyc3RSZXN1bHQoc3RhcnQpOworCQlxLnNldE1heFJlc3VsdHMoY291bnQpOworCQlyZXR1cm4gcS5nZXRSZXN1bHRMaXN0KCk7CisJfQorCisJcHVibGljIExpc3Q8Um9vbT4gZ2V0KFN0cmluZyBzZWFyY2gsIGludCBzdGFydCwgaW50IGNvdW50LCBTdHJpbmcgc29ydCkgeworCQlUeXBlZFF1ZXJ5PFJvb20+IHEgPSBlbS5jcmVhdGVRdWVyeShEYW9IZWxwZXIuZ2V0U2VhcmNoUXVlcnkoIlJvb21zIiwgInIiLCBzZWFyY2gsIHRydWUsIGZhbHNlLCBzb3J0LCBzZWFyY2hGaWVsZHMpLCBSb29tLmNsYXNzKTsKKwkJcS5zZXRGaXJzdFJlc3VsdChzdGFydCk7CisJCXEuc2V0TWF4UmVzdWx0cyhjb3VudCk7CisJCXJldHVybiBxLmdldFJlc3VsdExpc3QoKTsKKwl9CisKKwlwdWJsaWMgbG9uZyBjb3VudCgpIHsKKwkJVHlwZWRRdWVyeTxMb25nPiBxID0gZW0uY3JlYXRlTmFtZWRRdWVyeSgiY291bnRSb29tcyIsIExvbmcuY2xhc3MpOworCQlyZXR1cm4gcS5nZXRTaW5nbGVSZXN1bHQoKTsKKwl9CisKKwlwdWJsaWMgbG9uZyBjb3VudChTdHJpbmcgc2VhcmNoKSB7CisJCVR5cGVkUXVlcnk8TG9uZz4gcSA9IGVtLmNyZWF0ZVF1ZXJ5KERhb0hlbHBlci5nZXRTZWFyY2hRdWVyeSgiUm9vbXMiLCAiciIsIHNlYXJjaCwgdHJ1ZSwgdHJ1ZSwgbnVsbCwgc2VhcmNoRmllbGRzKSwgTG9uZy5jbGFzcyk7CisJCXJldHVybiBxLmdldFNpbmdsZVJlc3VsdCgpOworCX0KKworCXB1YmxpYyBMaXN0PFJvb20+IGdldFB1YmxpY1Jvb21zKCkgeworCQlyZXR1cm4gZW0uY3JlYXRlTmFtZWRRdWVyeSgiZ2V0UHVibGljUm9vbXNPcmRlcmVkIiwgUm9vbS5jbGFzcykuZ2V0UmVzdWx0TGlzdCgpOworCX0KKwkKKwlwdWJsaWMgTGlzdDxMb25nPiBnZXRTaXBSb29tcyhMaXN0PExvbmc+IGlkcykgeworCQlUeXBlZFF1ZXJ5PExvbmc+IHEgPSBlbS5jcmVhdGVOYW1lZFF1ZXJ5KCJnZXRTaXBSb29tSWRzQnlJZHMiLCBMb25nLmNsYXNzKTsKKwkJcS5zZXRQYXJhbWV0ZXIoImlkcyIsIGlkcyk7CisJCXJldHVybiBxLmdldFJlc3VsdExpc3QoKTsKKwl9CisKKwlwdWJsaWMgTGlzdDxSb29tPiBnZXRPcmdhbmlzYXRpb25Sb29tcyhsb25nIG9yZ0lkKSB7CisJCVR5cGVkUXVlcnk8Um9vbT4gcSA9IGVtLmNyZWF0ZVF1ZXJ5KAorCQkJCSJTRUxFQ1QgRElTVElOQ1QgYy5yb29tIEZST00gUm9vbU9yZ2FuaXNhdGlvbiBjIExFRlQgSk9JTiBGRVRDSCBjLnJvb20gIgorCQkJCSsgIldIRVJFIGMub3JnYW5pc2F0aW9uLm9yZ2FuaXNhdGlvbl9pZCA9IDpvcmdJZCAiCisJCQkJKyAiQU5EIGMuZGVsZXRlZCA9IGZhbHNlIEFORCBjLnJvb20uZGVsZXRlZCA9IGZhbHNlIEFORCBjLnJvb20uYXBwb2ludG1lbnQgPSBmYWxzZSAiCisJCQkJKyAiQU5EIGMub3JnYW5pc2F0aW9uLmRlbGV0ZWQgPSBmYWxzZSAiCisJCQkJKyAiT1JERVIgQlkgYy5yb29tLm5hbWUgQVNDIiwgUm9vbS5jbGFzcyk7CisJCXEuc2V0UGFyYW1ldGVyKCJvcmdJZCIsIG9yZ0lkKTsKKwkJcmV0dXJuIHEuZ2V0UmVzdWx0TGlzdCgpOworCX0KKworCXB1YmxpYyBMb25nIGdldFJvb21zQ2FwYWNpdHlCeUlkcyhMaXN0PExvbmc+IGlkcykgeworCQlyZXR1cm4gaWRzID09IG51bGwgfHwgaWRzLmlzRW1wdHkoKSA/IDAKKwkJCTogZW0uY3JlYXRlTmFtZWRRdWVyeSgiZ2V0Um9vbXNDYXBhY2l0eUJ5SWRzIiwgTG9uZy5jbGFzcykuc2V0UGFyYW1ldGVyKCJpZHMiLCBpZHMpLmdldFNpbmdsZVJlc3VsdCgpOworCX0KKwkKKwlwcml2YXRlIGJvb2xlYW4gaXNTaXBFbmFibGVkKCkgeworCQlyZXR1cm4gInllcyIuZXF1YWxzKGNmZ0Rhby5nZXRDb25mVmFsdWUoInJlZDVzaXAuZW5hYmxlIiwgU3RyaW5nLmNsYXNzLCAibm8iKSk7CisJfQorCQorCXByaXZhdGUgU3RyaW5nIGdldFNpcE51bWJlcihsb25nIHJvb21JZCkgeworICAgICAgICBpZiAoaXNTaXBFbmFibGVkKCkpIHsKKyAgICAgICAgCXJldHVybiBjZmdEYW8uZ2V0Q29uZlZhbHVlKCJyZWQ1c2lwLnJvb21fcHJlZml4IiwgU3RyaW5nLmNsYXNzLCAiNDAwIikgKyByb29tSWQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGw7CisJfQorCQorCXB1YmxpYyBSb29tIHVwZGF0ZShSb29tIGVudGl0eSwgTG9uZyB1c2VySWQpIHsKKwkJaWYgKGVudGl0eS5nZXRSb29tc19pZCgpID09IG51bGwpIHsKKwkJCWVudGl0eS5zZXRTdGFydHRpbWUobmV3IERhdGUoKSk7CisJCQllbS5wZXJzaXN0KGVudGl0eSk7CisJCX0gZWxzZSB7CisJCQllbnRpdHkuc2V0VXBkYXRldGltZShuZXcgRGF0ZSgpKTsKKwkJfQorCQlpZiAoZW50aXR5LmlzU2lwRW5hYmxlZCgpICYmIGlzU2lwRW5hYmxlZCgpKSB7CisJCQlTdHJpbmcgc2lwTnVtYmVyID0gZ2V0U2lwTnVtYmVyKGVudGl0eS5nZXRSb29tc19pZCgpKTsKKwkJCWlmICghc2lwTnVtYmVyLmVxdWFscyhlbnRpdHkuZ2V0Q29uZm5vKCkpKSB7CisJCQkJZW50aXR5LnNldENvbmZubyhzaXBOdW1iZXIpOworCQkJfQorCQkJc2lwRGFvLnVwZGF0ZShzaXBOdW1iZXIsIGVudGl0eS5nZXRQaW4oKSk7CisJCX0gZWxzZSB7CisJCQlzaXBEYW8uZGVsZXRlKGVudGl0eS5nZXRDb25mbm8oKSk7CisJCQllbnRpdHkuc2V0Q29uZm5vKG51bGwpOworCQkJZW50aXR5LnNldFBpbihudWxsKTsKKwkJfQorCQllbnRpdHkgPSBlbS5tZXJnZShlbnRpdHkpOworCQlyZXR1cm4gZW50aXR5OworCX0KKworCXB1YmxpYyB2b2lkIGRlbGV0ZShSb29tIGVudGl0eSwgTG9uZyB1c2VySWQpIHsKKwkJZW50aXR5LnNldERlbGV0ZWQodHJ1ZSk7CisJCWVudGl0eS5zZXRTaXBFbmFibGVkKGZhbHNlKTsKKwkJdXBkYXRlKGVudGl0eSwgdXNlcklkKTsKKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2NvbmZlcmVuY2UvZGFvL1Jvb21Nb2RlcmF0b3JzRGFvLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9jb25mZXJlbmNlL2Rhby9Sb29tTW9kZXJhdG9yc0Rhby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlMTQ0NGEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9jb25mZXJlbmNlL2Rhby9Sb29tTW9kZXJhdG9yc0Rhby5qYXZhCkBAIC0wLDAgKzEsMjk1IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY29uZmVyZW5jZS5kYW87CisKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLkxpbmtlZExpc3Q7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLk1hcDsKKworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eU1hbmFnZXI7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTm9SZXN1bHRFeGNlcHRpb247CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuUGVyc2lzdGVuY2VDb250ZXh0OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlR5cGVkUXVlcnk7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuVXNlck1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbS5Sb29tTW9kZXJhdG9yOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuVXNlcjsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uQXV0b3dpcmVkOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsudHJhbnNhY3Rpb24uYW5ub3RhdGlvbi5UcmFuc2FjdGlvbmFsOworCitAVHJhbnNhY3Rpb25hbAorcHVibGljIGNsYXNzIFJvb21Nb2RlcmF0b3JzRGFvIHsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeQorCQkJLmdldExvZ2dlcihSb29tTW9kZXJhdG9yc0Rhby5jbGFzcyk7CisJQEF1dG93aXJlZAorCXByaXZhdGUgVXNlck1hbmFnZXIgdXNlck1hbmFnZW1lbnQ7CisJQFBlcnNpc3RlbmNlQ29udGV4dAorCXByaXZhdGUgRW50aXR5TWFuYWdlciBlbTsKKworCS8qKgorCSAqIAorCSAqIEBwYXJhbSB1cworCSAqIEBwYXJhbSBpc1N1cGVyTW9kZXJhdG9yCisJICogQHJldHVybgorCSAqLworCXB1YmxpYyBMb25nIGFkZFJvb21Nb2RlcmF0b3JCeVVzZXJJZChVc2VyIHVzLCBCb29sZWFuIGlzU3VwZXJNb2RlcmF0b3IsCisJCQlMb25nIHJvb21JZCkgeworCQl0cnkgeworCQkJUm9vbU1vZGVyYXRvciByTW9kZXJhdG9yID0gbmV3IFJvb21Nb2RlcmF0b3IoKTsKKwkJCXJNb2RlcmF0b3Iuc2V0VXNlcih1cyk7CisJCQlyTW9kZXJhdG9yLnNldElzU3VwZXJNb2RlcmF0b3IoaXNTdXBlck1vZGVyYXRvcik7CisJCQlyTW9kZXJhdG9yLnNldFN0YXJ0dGltZShuZXcgRGF0ZSgpKTsKKwkJCXJNb2RlcmF0b3Iuc2V0RGVsZXRlZChmYWxzZSk7CisJCQlyTW9kZXJhdG9yLnNldFJvb21JZChyb29tSWQpOworCQkJck1vZGVyYXRvciA9IGVtLm1lcmdlKHJNb2RlcmF0b3IpOworCQkJbG9uZyByTW9kZXJhdG9ySWQgPSByTW9kZXJhdG9yLmdldFJvb21Nb2RlcmF0b3JzSWQoKTsKKwkJCXJldHVybiByTW9kZXJhdG9ySWQ7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2FkZFJvb21Nb2RlcmF0b3JCeVVzZXJJZF0gIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgTG9uZyBhZGRSb29tTW9kZXJhdG9yQnlPYmooUm9vbU1vZGVyYXRvciByTW9kZXJhdG9yKSB7CisJCXRyeSB7CisJCQlyTW9kZXJhdG9yLnNldFN0YXJ0dGltZShuZXcgRGF0ZSgpKTsKKwkJCXJNb2RlcmF0b3IgPSBlbS5tZXJnZShyTW9kZXJhdG9yKTsKKwkJCWxvbmcgck1vZGVyYXRvcklkID0gck1vZGVyYXRvci5nZXRSb29tTW9kZXJhdG9yc0lkKCk7CisJCQlyZXR1cm4gck1vZGVyYXRvcklkOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIlthZGRSb29tTW9kZXJhdG9yQnlVc2VySWRdICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLyoqCisJICogZ2V0IGFsbCBhdmFpbGFibGUgUm9vbVR5cGVzCisJICogCisJICogQHJldHVybiBMaXN0IG9mIFJvb21UeXBlcworCSAqLworCXB1YmxpYyBSb29tTW9kZXJhdG9yIGdldFJvb21Nb2RlcmF0b3JCeUlkKExvbmcgcm9vbU1vZGVyYXRvcnNJZCkgeworCQl0cnkgeworCQkJVHlwZWRRdWVyeTxSb29tTW9kZXJhdG9yPiBxdWVyeSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoImdldFJvb21Nb2RlcmF0b3JCeUlkIiwgUm9vbU1vZGVyYXRvci5jbGFzcyk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInJvb21Nb2RlcmF0b3JzSWQiLCByb29tTW9kZXJhdG9yc0lkKTsKKwkJCVJvb21Nb2RlcmF0b3Igcm9vbU1vZGVyYXRvcnMgPSBudWxsOworCQkJdHJ5IHsKKwkJCQlyb29tTW9kZXJhdG9ycyA9IHF1ZXJ5LmdldFNpbmdsZVJlc3VsdCgpOworCQkJfSBjYXRjaCAoTm9SZXN1bHRFeGNlcHRpb24gZXgpIHsKKwkJCX0KKwkJCXJldHVybiByb29tTW9kZXJhdG9yczsKKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRSb29tTW9kZXJhdG9yQnlJZF0gIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgTGlzdDxSb29tTW9kZXJhdG9yPiBnZXRSb29tTW9kZXJhdG9yQnlSb29tSWQoTG9uZyByb29tSWQpIHsKKwkJdHJ5IHsKKwkJCVR5cGVkUXVlcnk8Um9vbU1vZGVyYXRvcj4gcXVlcnkgPSBlbS5jcmVhdGVOYW1lZFF1ZXJ5KCJnZXRSb29tTW9kZXJhdG9yQnlSb29tSWQiLCBSb29tTW9kZXJhdG9yLmNsYXNzKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiZGVsZXRlZCIsIHRydWUpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJyb29tSWQiLCByb29tSWQpOworCQkJcmV0dXJuIHF1ZXJ5LmdldFJlc3VsdExpc3QoKTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZ2V0Um9vbU1vZGVyYXRvckJ5Um9vbUlkXSAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMaXN0PFJvb21Nb2RlcmF0b3I+IGdldFJvb21Nb2RlcmF0b3JCeVVzZXJBbmRSb29tSWQoTG9uZyByb29tSWQsCisJCQlMb25nIHVzZXJfaWQpIHsKKwkJdHJ5IHsKKwkJCVR5cGVkUXVlcnk8Um9vbU1vZGVyYXRvcj4gcXVlcnkgPSBlbS5jcmVhdGVOYW1lZFF1ZXJ5KCJnZXRSb29tTW9kZXJhdG9yQnlVc2VyQW5kUm9vbUlkIiwgUm9vbU1vZGVyYXRvci5jbGFzcyk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImRlbGV0ZWQiLCB0cnVlKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigicm9vbUlkIiwgcm9vbUlkKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigidXNlcl9pZCIsIHVzZXJfaWQpOworCQkJcmV0dXJuIHF1ZXJ5LmdldFJlc3VsdExpc3QoKTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZ2V0Um9vbU1vZGVyYXRvckJ5VXNlckFuZFJvb21JZF0gIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvKioKKwkgKiAKKwkgKiBAcGFyYW0gcm9vbU1vZGVyYXRvcnNJZAorCSAqLworCXB1YmxpYyB2b2lkIHJlbW92ZVJvb21Nb2RlcmF0b3JCeVVzZXJJZChMb25nIHJvb21Nb2RlcmF0b3JzSWQpIHsKKwkJdHJ5IHsKKwkJCVJvb21Nb2RlcmF0b3Igck1vZGVyYXRvciA9IHRoaXMKKwkJCQkJLmdldFJvb21Nb2RlcmF0b3JCeUlkKHJvb21Nb2RlcmF0b3JzSWQpOworCisJCQlpZiAock1vZGVyYXRvciA9PSBudWxsKSB7CisJCQkJcmV0dXJuOworCQkJfQorCisJCQlyTW9kZXJhdG9yLnNldFVwZGF0ZXRpbWUobmV3IERhdGUoKSk7CisJCQlyTW9kZXJhdG9yLnNldERlbGV0ZWQodHJ1ZSk7CisKKwkJCWlmIChyTW9kZXJhdG9yLmdldFJvb21Nb2RlcmF0b3JzSWQoKSA9PSAwKSB7CisJCQkJZW0ucGVyc2lzdChyTW9kZXJhdG9yKTsKKwkJCX0gZWxzZSB7CisJCQkJaWYgKCFlbS5jb250YWlucyhyTW9kZXJhdG9yKSkgeworCQkJCQllbS5tZXJnZShyTW9kZXJhdG9yKTsKKwkJCQl9CisJCQl9CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbcmVtb3ZlUm9vbU1vZGVyYXRvckJ5VXNlcklkXSAiLCBleDIpOworCQl9CisJfQorCisJcHVibGljIHZvaWQgdXBkYXRlUm9vbU1vZGVyYXRvckJ5VXNlcklkKExvbmcgcm9vbU1vZGVyYXRvcnNJZCwKKwkJCUJvb2xlYW4gaXNTdXBlck1vZGVyYXRvcikgeworCQl0cnkgeworCQkJUm9vbU1vZGVyYXRvciByTW9kZXJhdG9yID0gdGhpcworCQkJCQkuZ2V0Um9vbU1vZGVyYXRvckJ5SWQocm9vbU1vZGVyYXRvcnNJZCk7CisKKwkJCWlmIChyTW9kZXJhdG9yID09IG51bGwpIHsKKwkJCQlyZXR1cm47CisJCQl9CisKKwkJCXJNb2RlcmF0b3Iuc2V0SXNTdXBlck1vZGVyYXRvcihpc1N1cGVyTW9kZXJhdG9yKTsKKwkJCXJNb2RlcmF0b3Iuc2V0VXBkYXRldGltZShuZXcgRGF0ZSgpKTsKKworCQkJaWYgKHJNb2RlcmF0b3IuZ2V0Um9vbU1vZGVyYXRvcnNJZCgpID09IDApIHsKKwkJCQllbS5wZXJzaXN0KHJNb2RlcmF0b3IpOworCQkJfSBlbHNlIHsKKwkJCQlpZiAoIWVtLmNvbnRhaW5zKHJNb2RlcmF0b3IpKSB7CisJCQkJCWVtLm1lcmdlKHJNb2RlcmF0b3IpOworCQkJCX0KKwkJCX0KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIlt1cGRhdGVSb29tTW9kZXJhdG9yQnlVc2VySWRdICIsIGV4Mik7CisJCX0KKwl9CisKKwlwdWJsaWMgdm9pZCBhZGRSb29tTW9kZXJhdG9yQnlVc2VyTGlzdCgKKwkJCUxpc3Q8TWFwPFN0cmluZywgT2JqZWN0Pj4gcm9vbU1vZGVyYXRvcnMsIExvbmcgcm9vbUlkKSB7CisJCXRyeSB7CisKKwkJCWZvciAoSXRlcmF0b3I8TWFwPFN0cmluZywgT2JqZWN0Pj4gaXRlciA9IHJvb21Nb2RlcmF0b3JzLml0ZXJhdG9yKCk7IGl0ZXIKKwkJCQkJLmhhc05leHQoKTspIHsKKworCQkJCU1hcDxTdHJpbmcsIE9iamVjdD4gcm9vbU1vZGVyYXRvck9iaiA9IGl0ZXIubmV4dCgpOworCisJCQkJTG9uZyB1c2VySWQgPSBMb25nLnBhcnNlTG9uZyhyb29tTW9kZXJhdG9yT2JqLmdldCgidXNlcklkIikKKwkJCQkJCS50b1N0cmluZygpKTsKKwkJCQlCb29sZWFuIGlzU3VwZXJNb2RlcmF0b3IgPSBCb29sZWFuCisJCQkJCQkucGFyc2VCb29sZWFuKHJvb21Nb2RlcmF0b3JPYmouZ2V0KCJpc1N1cGVyTW9kZXJhdG9yIikKKwkJCQkJCQkJLnRvU3RyaW5nKCkpOworCisJCQkJdGhpcy5hZGRSb29tTW9kZXJhdG9yQnlVc2VySWQoCisJCQkJCQl1c2VyTWFuYWdlbWVudC5nZXRVc2VyQnlJZCh1c2VySWQpLCBpc1N1cGVyTW9kZXJhdG9yLAorCQkJCQkJcm9vbUlkKTsKKworCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2FkZFJvb21Nb2RlcmF0b3JCeVVzZXJMaXN0XSAiLCBleDIpOworCQl9CisJfQorCisJcHVibGljIHZvaWQgdXBkYXRlUm9vbU1vZGVyYXRvckJ5VXNlckxpc3QoCisJCQlMaXN0PE1hcDxTdHJpbmcsIE9iamVjdD4+IHJvb21Nb2RlcmF0b3JzLCBMb25nIHJvb21JZCkgeworCQl0cnkgeworCisJCQkvLyBnZXRMc2l0IG9mIFJvb21Nb2RlcmF0b3JzIGJlZm9yZSB5b3UgYWRkIG5ldyBvbmVzCisJCQlMaXN0PFJvb21Nb2RlcmF0b3I+IHJlbW90ZVJvb21Nb2RlcmF0b3JMaXN0ID0gdGhpcworCQkJCQkuZ2V0Um9vbU1vZGVyYXRvckJ5Um9vbUlkKHJvb21JZCk7CisKKwkJCWZvciAoSXRlcmF0b3I8TWFwPFN0cmluZywgT2JqZWN0Pj4gaXRlciA9IHJvb21Nb2RlcmF0b3JzLml0ZXJhdG9yKCk7IGl0ZXIKKwkJCQkJLmhhc05leHQoKTspIHsKKworCQkJCU1hcDxTdHJpbmcsIE9iamVjdD4gcm9vbU1vZGVyYXRvck9iaiA9IGl0ZXIubmV4dCgpOworCisJCQkJTG9uZyByb29tTW9kZXJhdG9yc0lkID0gTG9uZy5wYXJzZUxvbmcocm9vbU1vZGVyYXRvck9iai5nZXQoCisJCQkJCQkicm9vbU1vZGVyYXRvcnNJZCIpLnRvU3RyaW5nKCkpOworCQkJCUxvbmcgdXNlcklkID0gTG9uZy5wYXJzZUxvbmcocm9vbU1vZGVyYXRvck9iai5nZXQoInVzZXJJZCIpCisJCQkJCQkudG9TdHJpbmcoKSk7CisJCQkJQm9vbGVhbiBpc1N1cGVyTW9kZXJhdG9yID0gQm9vbGVhbgorCQkJCQkJLnBhcnNlQm9vbGVhbihyb29tTW9kZXJhdG9yT2JqLmdldCgiaXNTdXBlck1vZGVyYXRvciIpCisJCQkJCQkJCS50b1N0cmluZygpKTsKKworCQkJCWlmIChyb29tTW9kZXJhdG9yc0lkID09IG51bGwgfHwgcm9vbU1vZGVyYXRvcnNJZCA9PSAwKSB7CisJCQkJCUxvbmcgbmV3Um9vbU1vZGVyYXRvcklkID0gdGhpcy5hZGRSb29tTW9kZXJhdG9yQnlVc2VySWQoCisJCQkJCQkJdXNlck1hbmFnZW1lbnQuZ2V0VXNlckJ5SWQodXNlcklkKSwKKwkJCQkJCQlpc1N1cGVyTW9kZXJhdG9yLCByb29tSWQpOworCisJCQkJCXJvb21Nb2RlcmF0b3JPYmoKKwkJCQkJCQkucHV0KCJyb29tTW9kZXJhdG9yc0lkIiwgbmV3Um9vbU1vZGVyYXRvcklkKTsKKworCQkJCX0gZWxzZSB7CisJCQkJCXRoaXMudXBkYXRlUm9vbU1vZGVyYXRvckJ5VXNlcklkKHJvb21Nb2RlcmF0b3JzSWQsCisJCQkJCQkJaXNTdXBlck1vZGVyYXRvcik7CisJCQkJfQorCisJCQl9CisKKwkJCS8vIENoZWNrIGZvciBpdGVtcyB0byBkZWxldGUKKwkJCUxpc3Q8Um9vbU1vZGVyYXRvcj4gcm9vbU1vZGVyYXRvcnNUb0RlbGV0ZSA9IG5ldyBMaW5rZWRMaXN0PFJvb21Nb2RlcmF0b3I+KCk7CisKKwkJCWlmIChyZW1vdGVSb29tTW9kZXJhdG9yTGlzdCAhPSBudWxsKSB7CisKKwkJCQlmb3IgKFJvb21Nb2RlcmF0b3Igcm9vbU1vZGVyYXRvciA6IHJlbW90ZVJvb21Nb2RlcmF0b3JMaXN0KSB7CisKKwkJCQkJYm9vbGVhbiBmb3VuZCA9IGZhbHNlOworCisJCQkJCWZvciAoSXRlcmF0b3I8TWFwPFN0cmluZywgT2JqZWN0Pj4gaXRlciA9IHJvb21Nb2RlcmF0b3JzCisJCQkJCQkJLml0ZXJhdG9yKCk7IGl0ZXIuaGFzTmV4dCgpOykgeworCQkJCQkJTWFwPFN0cmluZywgT2JqZWN0PiByb29tTW9kZXJhdG9yT2JqID0gaXRlci5uZXh0KCk7CisKKwkJCQkJCUxvbmcgcm9vbU1vZGVyYXRvcnNJZCA9IExvbmcucGFyc2VMb25nKHJvb21Nb2RlcmF0b3JPYmoKKwkJCQkJCQkJLmdldCgicm9vbU1vZGVyYXRvcnNJZCIpLnRvU3RyaW5nKCkpOworCisJCQkJCQlpZiAocm9vbU1vZGVyYXRvci5nZXRSb29tTW9kZXJhdG9yc0lkKCkgPT0gcm9vbU1vZGVyYXRvcnNJZAorCQkJCQkJCQkubG9uZ1ZhbHVlKCkpIHsKKwkJCQkJCQlmb3VuZCA9IHRydWU7CisJCQkJCQkJYnJlYWs7CisJCQkJCQl9CisKKwkJCQkJfQorCisJCQkJCWlmICghZm91bmQpIHsKKwkJCQkJCXJvb21Nb2RlcmF0b3JzVG9EZWxldGUuYWRkKHJvb21Nb2RlcmF0b3IpOworCQkJCQl9CisKKwkJCQl9CisKKwkJCX0KKworCQkJZm9yIChSb29tTW9kZXJhdG9yIHJNb2RlcmF0b3IgOiByb29tTW9kZXJhdG9yc1RvRGVsZXRlKSB7CisJCQkJU3lzdGVtLm91dC5wcmludGxuKCJSZW1vdmUgTWFwICIKKwkJCQkJCSsgck1vZGVyYXRvci5nZXRSb29tTW9kZXJhdG9yc0lkKCkpOworCQkJCXRoaXMucmVtb3ZlUm9vbU1vZGVyYXRvckJ5VXNlcklkKHJNb2RlcmF0b3IKKwkJCQkJCS5nZXRSb29tTW9kZXJhdG9yc0lkKCkpOworCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW3VwZGF0ZVJvb21Nb2RlcmF0b3JCeVVzZXJMaXN0XSAiLCBleDIpOworCQl9CisJfQorCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9jb25mZXJlbmNlL2Rhby9TaXBEYW8uamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2NvbmZlcmVuY2UvZGFvL1NpcERhby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwYjViMmYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9jb25mZXJlbmNlL2Rhby9TaXBEYW8uamF2YQpAQCAtMCwwICsxLDE0NiBAQAorLyoNCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICogdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNvbmZlcmVuY2UuZGFvOw0KKw0KK2ltcG9ydCBvcmcuYXN0ZXJpc2tqYXZhLm1hbmFnZXIuTWFuYWdlckNvbm5lY3Rpb247DQoraW1wb3J0IG9yZy5hc3Rlcmlza2phdmEubWFuYWdlci5NYW5hZ2VyQ29ubmVjdGlvbkZhY3Rvcnk7DQoraW1wb3J0IG9yZy5hc3Rlcmlza2phdmEubWFuYWdlci5SZXNwb25zZUV2ZW50czsNCitpbXBvcnQgb3JnLmFzdGVyaXNramF2YS5tYW5hZ2VyLmFjdGlvbi5Db25mYnJpZGdlTGlzdEFjdGlvbjsNCitpbXBvcnQgb3JnLmFzdGVyaXNramF2YS5tYW5hZ2VyLmFjdGlvbi5EYkRlbEFjdGlvbjsNCitpbXBvcnQgb3JnLmFzdGVyaXNramF2YS5tYW5hZ2VyLmFjdGlvbi5EYkRlbFRyZWVBY3Rpb247DQoraW1wb3J0IG9yZy5hc3Rlcmlza2phdmEubWFuYWdlci5hY3Rpb24uRGJHZXRBY3Rpb247DQoraW1wb3J0IG9yZy5hc3Rlcmlza2phdmEubWFuYWdlci5hY3Rpb24uRGJQdXRBY3Rpb247DQoraW1wb3J0IG9yZy5hc3Rlcmlza2phdmEubWFuYWdlci5hY3Rpb24uRXZlbnRHZW5lcmF0aW5nQWN0aW9uOw0KK2ltcG9ydCBvcmcuYXN0ZXJpc2tqYXZhLm1hbmFnZXIuYWN0aW9uLk1hbmFnZXJBY3Rpb247DQoraW1wb3J0IG9yZy5hc3Rlcmlza2phdmEubWFuYWdlci5yZXNwb25zZS5NYW5hZ2VyRXJyb3I7DQoraW1wb3J0IG9yZy5hc3Rlcmlza2phdmEubWFuYWdlci5yZXNwb25zZS5NYW5hZ2VyUmVzcG9uc2U7DQoraW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7DQorDQorcHVibGljIGNsYXNzIFNpcERhbyB7DQorCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoU2lwRGFvLmNsYXNzKTsNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQVNURVJJU0tfT01fRkFNSUxZID0gIm9wZW5tZWV0aW5ncyI7DQorCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEFTVEVSSVNLX09NX0tFWSA9ICJyb29tcyI7DQorCXByaXZhdGUgU3RyaW5nIHNpcEhvc3RuYW1lOw0KKwlwcml2YXRlIGludCBzaXBQb3J0Ow0KKwlwcml2YXRlIFN0cmluZyBzaXBVc2VybmFtZTsNCisJcHJpdmF0ZSBTdHJpbmcgc2lwUGFzc3dvcmQ7DQorCXByaXZhdGUgTWFuYWdlckNvbm5lY3Rpb25GYWN0b3J5IGZhY3Rvcnk7DQorCXByaXZhdGUgTWFuYWdlckNvbm5lY3Rpb24gY29ubmVjdGlvbjsNCisNCisJQFN1cHByZXNzV2FybmluZ3MoInVudXNlZCIpDQorCXByaXZhdGUgU2lwRGFvKCkgew0KKwkJLy8gcHJvaGliaXRlZCBkZWZhdWx0IGNvbnN0cnVjdG9yDQorCX0NCisNCisJcHVibGljIFNpcERhbyhTdHJpbmcgc2lwSG9zdG5hbWUsIGludCBzaXBQb3J0LCBTdHJpbmcgc2lwVXNlcm5hbWUsIFN0cmluZyBzaXBQYXNzd29yZCkgew0KKwkJdGhpcy5zaXBIb3N0bmFtZSA9IHNpcEhvc3RuYW1lOw0KKwkJdGhpcy5zaXBQb3J0ID0gc2lwUG9ydDsNCisJCXRoaXMuc2lwVXNlcm5hbWUgPSBzaXBVc2VybmFtZTsNCisJCXRoaXMuc2lwUGFzc3dvcmQgPSBzaXBQYXNzd29yZDsNCisJCWZhY3RvcnkgPSBuZXcgTWFuYWdlckNvbm5lY3Rpb25GYWN0b3J5KHRoaXMuc2lwSG9zdG5hbWUsIHRoaXMuc2lwUG9ydCwgdGhpcy5zaXBVc2VybmFtZSwgdGhpcy5zaXBQYXNzd29yZCk7DQorCQljb25uZWN0aW9uID0gZmFjdG9yeS5jcmVhdGVNYW5hZ2VyQ29ubmVjdGlvbigpOyAvLyBUT0RPIHNlY3VyZQ0KKwl9DQorDQorCXByaXZhdGUgTWFuYWdlclJlc3BvbnNlIGV4ZWMoTWFuYWdlckFjdGlvbiBhY3Rpb24pIHsNCisJCWlmIChjb25uZWN0aW9uID09IG51bGwpIHsNCisJCQlsb2cud2FybigiVGhlcmUgaXMgbm8gQXN0ZXJpc2sgY29uZmlndXJlZCIpOw0KKwkJCXJldHVybiBudWxsOw0KKwkJfQ0KKwkJdHJ5IHsNCisJCQljb25uZWN0aW9uLmxvZ2luKCk7DQorCQkJTWFuYWdlclJlc3BvbnNlIHIgPSBjb25uZWN0aW9uLnNlbmRBY3Rpb24oYWN0aW9uKTsNCisJCQljb25uZWN0aW9uLmxvZ29mZigpOw0KKwkJCWlmIChsb2cuaXNEZWJ1Z0VuYWJsZWQoKSAmJiByICE9IG51bGwpIHsNCisJCQkJbG9nLmRlYnVnKHIudG9TdHJpbmcoKSk7DQorCQkJfQ0KKwkJCXJldHVybiAociBpbnN0YW5jZW9mIE1hbmFnZXJFcnJvcikgPyBudWxsIDogcjsNCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7DQorCQkJaWYgKGxvZy5pc0RlYnVnRW5hYmxlZCgpKSB7DQorCQkJCWxvZy5lcnJvcigiRXJyb3Igd2hpbGUgZXhlY3V0aW5nIE1hbmFnZXJBY3Rpb246ICIgKyBhY3Rpb24sIGUpOw0KKwkJCX0NCisJCX0NCisJCXJldHVybiBudWxsOw0KKwl9DQorDQorCXByaXZhdGUgUmVzcG9uc2VFdmVudHMgZXhlY0V2ZW50KEV2ZW50R2VuZXJhdGluZ0FjdGlvbiBhY3Rpb24pIHsNCisJCWlmIChjb25uZWN0aW9uID09IG51bGwpIHsNCisJCQlsb2cud2FybigiVGhlcmUgaXMgbm8gQXN0ZXJpc2sgY29uZmlndXJlZCIpOw0KKwkJCXJldHVybiBudWxsOw0KKwkJfQ0KKwkJdHJ5IHsNCisJCQljb25uZWN0aW9uLmxvZ2luKCJvbiIpOw0KKwkJCVJlc3BvbnNlRXZlbnRzIHIgPSBjb25uZWN0aW9uLnNlbmRFdmVudEdlbmVyYXRpbmdBY3Rpb24oYWN0aW9uKTsNCisJCQljb25uZWN0aW9uLmxvZ29mZigpOw0KKwkJCWlmIChsb2cuaXNEZWJ1Z0VuYWJsZWQoKSAmJiByICE9IG51bGwpIHsNCisJCQkJbG9nLmRlYnVnKHIuZ2V0UmVzcG9uc2UoKS50b1N0cmluZygpKTsNCisJCQl9DQorCQkJcmV0dXJuIChyID09IG51bGwgfHwgci5nZXRSZXNwb25zZSgpIGluc3RhbmNlb2YgTWFuYWdlckVycm9yKSA/IG51bGwgOiByOw0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsNCisJCQlpZiAobG9nLmlzRGVidWdFbmFibGVkKCkpIHsNCisJCQkJbG9nLmVycm9yKCJFcnJvciB3aGlsZSBleGVjdXRpbmcgRXZlbnRHZW5lcmF0aW5nQWN0aW9uOiAiICsgYWN0aW9uLCBlKTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gbnVsbDsNCisJfQ0KKw0KKwlwcml2YXRlIFN0cmluZyBnZXRLZXkoU3RyaW5nIGNvbmZubykgew0KKwkJcmV0dXJuIEFTVEVSSVNLX09NX0tFWSArICIvIiArIGNvbmZubzsNCisJfQ0KKw0KKwlwdWJsaWMgU3RyaW5nIGdldChTdHJpbmcgY29uZm5vKSB7DQorCQlTdHJpbmcgcGluID0gbnVsbDsNCisJCURiR2V0QWN0aW9uIGRhID0gbmV3IERiR2V0QWN0aW9uKEFTVEVSSVNLX09NX0ZBTUlMWSwgZ2V0S2V5KGNvbmZubykpOw0KKwkJTWFuYWdlclJlc3BvbnNlIHIgPSBleGVjKGRhKTsNCisJCWlmIChyICE9IG51bGwpIHsNCisJCQlwaW4gPSByLmdldFJlc3BvbnNlKCk7DQorCQl9DQorCQlyZXR1cm4gcGluOw0KKwl9DQorDQorCXB1YmxpYyB2b2lkIHVwZGF0ZShTdHJpbmcgY29uZm5vLCBTdHJpbmcgcGluKSB7DQorCQlkZWxldGUoY29uZm5vKTsNCisJCURiUHV0QWN0aW9uIGRhID0gbmV3IERiUHV0QWN0aW9uKEFTVEVSSVNLX09NX0ZBTUlMWSwgZ2V0S2V5KGNvbmZubyksIHBpbik7DQorCQlleGVjKGRhKTsNCisJfQ0KKw0KKwlwdWJsaWMgdm9pZCBkZWxldGUoKSB7DQorCQlEYkRlbFRyZWVBY3Rpb24gZGEgPSBuZXcgRGJEZWxUcmVlQWN0aW9uKEFTVEVSSVNLX09NX0ZBTUlMWSwgQVNURVJJU0tfT01fS0VZKTsNCisJCWV4ZWMoZGEpOw0KKwl9DQorDQorCXB1YmxpYyB2b2lkIGRlbGV0ZShTdHJpbmcgY29uZm5vKSB7DQorCQlEYkRlbEFjdGlvbiBkYSA9IG5ldyBEYkRlbEFjdGlvbihBU1RFUklTS19PTV9GQU1JTFksIGdldEtleShjb25mbm8pKTsNCisJCWV4ZWMoZGEpOw0KKwl9DQorDQorCXB1YmxpYyBJbnRlZ2VyIGNvdW50VXNlcnMoU3RyaW5nIGNvbmZubykgew0KKwkJaWYgKGNvbmZubyA9PSBudWxsKSB7DQorCQkJcmV0dXJuIG51bGw7DQorCQl9DQorCQlDb25mYnJpZGdlTGlzdEFjdGlvbiBkYSA9IG5ldyBDb25mYnJpZGdlTGlzdEFjdGlvbihjb25mbm8pOw0KKwkJUmVzcG9uc2VFdmVudHMgciA9IGV4ZWNFdmVudChkYSk7DQorCQlpZiAociAhPSBudWxsKSB7DQorCQkJbG9nLmRlYnVnKCJTaXBEYW86OmNvdW50VXNlcnMgc2l6ZSA9PSAiICsgci5nZXRFdmVudHMoKS5zaXplKCkpOw0KKwkJCS8vICItIDEiIGhlcmUgbWVhbnM6IExpc3RDb21wbGV0ZSBldmVudCANCisJCQlyZXR1cm4gci5nZXRFdmVudHMoKS5zaXplKCkgLSAxOyAvLyBUT0RPIGNoZWNrIGlmIHdhcyBzdWNjZXNzZnVsbA0KKwkJfQ0KKwkJcmV0dXJuIDA7DQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvZmlsZS9GaWxlUHJvY2Vzc29yLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9maWxlL0ZpbGVQcm9jZXNzb3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OWVmOWRiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvZmlsZS9GaWxlUHJvY2Vzc29yLmphdmEKQEAgLTAsMCArMSwxODAgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5maWxlOworCitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMudHJhbnNhY3Rpb24udXRpbC5GaWxlSGVscGVyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmZpbGUuZGFvLkZpbGVFeHBsb3Jlckl0ZW1EYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5mbHZyZWNvcmQuY29udmVydGVyLkZsdkV4cGxvcmVyQ29udmVydGVyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRvY3VtZW50cy5HZW5lcmF0ZUltYWdlOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRvY3VtZW50cy5HZW5lcmF0ZVBERjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kb2N1bWVudHMuR2VuZXJhdGVUaHVtYnM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZG9jdW1lbnRzLmJlYW5zLkNvbnZlcnRlclByb2Nlc3NSZXN1bHQ7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZG9jdW1lbnRzLmJlYW5zLkNvbnZlcnRlclByb2Nlc3NSZXN1bHRMaXN0OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmZpbGVzLkZpbGVFeHBsb3Jlckl0ZW07CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMuT21GaWxlSGVscGVyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLlN0b3JlZEZpbGU7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMuY3J5cHQuTUQ1OworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5BdXRvd2lyZWQ7CisKK3B1YmxpYyBjbGFzcyBGaWxlUHJvY2Vzc29yIHsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoRmlsZVByb2Nlc3Nvci5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCisJLy9TcHJpbmcgbG9hZGVkIEJlYW5zCisJQEF1dG93aXJlZAorCXByaXZhdGUgRmx2RXhwbG9yZXJDb252ZXJ0ZXIgZmx2RXhwbG9yZXJDb252ZXJ0ZXI7CisJQEF1dG93aXJlZAorCXByaXZhdGUgRmlsZUV4cGxvcmVySXRlbURhbyBmaWxlRXhwbG9yZXJJdGVtRGFvOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEdlbmVyYXRlSW1hZ2UgZ2VuZXJhdGVJbWFnZTsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBHZW5lcmF0ZVRodW1icyBnZW5lcmF0ZVRodW1iczsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBHZW5lcmF0ZVBERiBnZW5lcmF0ZVBERjsKKworCXB1YmxpYyBDb252ZXJ0ZXJQcm9jZXNzUmVzdWx0TGlzdCBwcm9jZXNzRmlsZShMb25nIHVzZXJJZCwgTG9uZyByb29tX2lkLCAKKwkJCWJvb2xlYW4gaXNPd25lciwgSW5wdXRTdHJlYW0gaXMsIExvbmcgcGFyZW50Rm9sZGVySWQsIFN0cmluZyBmaWxlU3lzdGVtTmFtZSwgCisJCQlMb25nIGV4dGVybmFsRmlsZUlkLCBTdHJpbmcgZXh0ZXJuYWxUeXBlKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkJCisJCUNvbnZlcnRlclByb2Nlc3NSZXN1bHRMaXN0IHJldHVybkVycm9yID0gbmV3IENvbnZlcnRlclByb2Nlc3NSZXN1bHRMaXN0KCk7CisJCQorCQlpbnQgZG90aWR4ID0gZmlsZVN5c3RlbU5hbWUubGFzdEluZGV4T2YoJy4nKTsKKworICAgICAgICAvLyBHZW5lcmF0ZSBhIHJhbmRvbSBzdHJpbmcgdG8gcHJldmVudCBhbnkgcHJvYmxlbXMgd2l0aAorICAgICAgICAvLyBmb3JlaWduIGNoYXJhY3RlcnMgYW5kIGR1cGxpY2F0ZXMKKyAgICAgICAgRGF0ZSBkID0gbmV3IERhdGUoKTsKKyAgICAgICAgU3RyaW5nIG5ld0ZpbGVTeXN0ZW1OYW1lID0gTUQ1LmRvX2NoZWNrc3VtKCJGSUxFXyIgKyBkLmdldFRpbWUoKSk7CisKKyAgICAgICAgU3RyaW5nIG5ld0ZpbGVFeHREb3QgPSBmaWxlU3lzdGVtTmFtZS5zdWJzdHJpbmcoZG90aWR4LCBmaWxlU3lzdGVtTmFtZS5sZW5ndGgoKSkudG9Mb3dlckNhc2UoKTsKKyAgICAgICAgU3RyaW5nIG5ld0ZpbGVFeHQgPSBuZXdGaWxlRXh0RG90LnN1YnN0cmluZygxKTsKKyAgICAgICAgbG9nLmRlYnVnKCJuZXdGaWxlRXh0OiAiICsgbmV3RmlsZUV4dCk7CisgICAgICAgIFN0b3JlZEZpbGUgc3RvcmVkRmlsZSA9IG5ldyBTdG9yZWRGaWxlKG5ld0ZpbGVTeXN0ZW1OYW1lLCBuZXdGaWxlRXh0KTsgCisKKyAgICAgICAgLy8gQ2hlY2sgdmFyaWFibGUgdG8gc2VlIGlmIHRoaXMgZmlsZSBpcyBhIHByZXNlbnRhdGlvbgorICAgICAgICAvLyBjaGVjayBpZiB0aGlzIGlzIGEgYSBmaWxlIHRoYXQgY2FuIGJlIGNvbnZlcnRlZCBieQorICAgICAgICAvLyBvcGVub2ZmaWNlLXNlcnZpY2UKKyAgICAgICAgYm9vbGVhbiBjYW5CZUNvbnZlcnRlZCA9IHN0b3JlZEZpbGUuaXNDb252ZXJ0YWJsZSgpOworICAgICAgICBib29sZWFuIGlzUGRmID0gc3RvcmVkRmlsZS5pc1BkZigpOworICAgICAgICBib29sZWFuIGlzSW1hZ2UgPSBzdG9yZWRGaWxlLmlzSW1hZ2UoKTsKKyAgICAgICAgYm9vbGVhbiBpc0NoYXJ0ID0gc3RvcmVkRmlsZS5pc0NoYXJ0KCk7CisgICAgICAgIGJvb2xlYW4gaXNBc0lzID0gc3RvcmVkRmlsZS5pc0FzSXMoKTsKKyAgICAgICAgYm9vbGVhbiBpc1ZpZGVvID0gc3RvcmVkRmlsZS5pc1ZpZGVvKCk7CisKKyAgICAgICAgbG9nLmRlYnVnKCJpc0FzSXM6ICIgKyBpc0FzSXMpOworCisgICAgICAgIC8vIGFkZCBvdXRwdXRmb2xkZXJzIGZvciBwcm9maWxlcworICAgICAgICAvLyBpZiBpdCBpcyBhIHByZXNlbmF0aW9uIGl0IHdpbGwgYmUgY29waWVkIHRvIGFub3RoZXIgcGxhY2UKKyAgICAgICAgaWYgKCEoY2FuQmVDb252ZXJ0ZWQgfHwgaXNQZGYgfHwgaXNJbWFnZSB8fCBpc1ZpZGVvIHx8IGlzQXNJcykpIHsKKyAgICAgICAgCXJldHVybkVycm9yLmFkZEl0ZW0oIndyb25nVHlwZSIsIG5ldyBDb252ZXJ0ZXJQcm9jZXNzUmVzdWx0KCJUaGUgZmlsZSB0eXBlIGNhbm5vdCBiZSBjb252ZXJ0ZWQiKSk7CisgICAgICAgICAgICByZXR1cm4gcmV0dXJuRXJyb3I7CisgICAgICAgIH0KKworICAgICAgICBGaWxlIGNvbXBsZXRlTmFtZSA9IG5ldyBGaWxlKAorICAgICAgICAJaXNBc0lzID8gT21GaWxlSGVscGVyLmdldFVwbG9hZEZpbGVzRGlyKCkgOiBPbUZpbGVIZWxwZXIuZ2V0VXBsb2FkVGVtcEZpbGVzRGlyKCkKKyAgICAgICAgCSwgbmV3RmlsZVN5c3RlbU5hbWUgKyBuZXdGaWxlRXh0RG90KTsKKyAgICAgICAgbG9nLmRlYnVnKCJ3cml0aW5nIGZpbGUgdG86ICIgKyBjb21wbGV0ZU5hbWUpOworICAgICAgICBGaWxlSGVscGVyLmNvcHkoaXMsIGNvbXBsZXRlTmFtZSk7CisgICAgICAgIGlzLmNsb3NlKCk7CisKKyAgICAgICAgTG9uZyBvd25lcklkID0gbnVsbDsKKyAgICAgICAgaWYgKHBhcmVudEZvbGRlcklkID09IC0yKSB7CisgICAgICAgICAgICBwYXJlbnRGb2xkZXJJZCA9IDBMOworICAgICAgICAgICAgb3duZXJJZCA9IHVzZXJJZDsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXNPd25lcikgeworICAgICAgICAgICAgb3duZXJJZCA9IHVzZXJJZDsKKyAgICAgICAgfQorCisgICAgICAgIFN0cmluZyBmaWxlSGFzaE5hbWUgPSBuZXdGaWxlU3lzdGVtTmFtZSArIG5ld0ZpbGVFeHREb3Q7CisgICAgICAgIEJvb2xlYW4gaXNQcmVzZW50YXRpb24gPSBmYWxzZTsKKyAgICAgICAgaWYgKGNhbkJlQ29udmVydGVkIHx8IGlzUGRmKSB7CisgICAgICAgICAgICAvLyBJbiBjYXNlIG9mIGEgcHJlc2VudGF0aW9uIHRoZSBoYXNoIGlzIGEgZm9sZGVyLW5hbWUKKyAgICAgICAgICAgIGZpbGVIYXNoTmFtZSA9IG5ld0ZpbGVTeXN0ZW1OYW1lOworICAgICAgICAgICAgaXNQcmVzZW50YXRpb24gPSB0cnVlOworICAgICAgICB9CisgICAgICAgIGlmIChpc0ltYWdlKSB7CisgICAgICAgICAgICBmaWxlSGFzaE5hbWUgPSBuZXdGaWxlU3lzdGVtTmFtZSArICIuanBnIjsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXNWaWRlbykgeworICAgICAgICAgICAgZmlsZUhhc2hOYW1lID0gbmV3RmlsZVN5c3RlbU5hbWUgKyAiLmZsdiI7CisgICAgICAgIH0KKworICAgICAgICBGaWxlRXhwbG9yZXJJdGVtIGZpbGVFeHBsb3Jlckl0ZW0gPSBmaWxlRXhwbG9yZXJJdGVtRGFvLmdldEZpbGVFeHBsb3Jlckl0ZW1zQnlJZChwYXJlbnRGb2xkZXJJZCk7CisKKyAgICAgICAgaWYgKGZpbGVFeHBsb3Jlckl0ZW0gIT0gbnVsbCkgeworICAgICAgICAgICAgaWYgKGZpbGVFeHBsb3Jlckl0ZW0uZ2V0SXNGb2xkZXIoKSA9PSBudWxsCisgICAgICAgICAgICAgICAgICAgIHx8ICFmaWxlRXhwbG9yZXJJdGVtLmdldElzRm9sZGVyKCkpIHsKKyAgICAgICAgICAgICAgICBwYXJlbnRGb2xkZXJJZCA9IDBMOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgTG9uZyBmaWxlRXhwbG9yZXJJdGVtSWQgPSBmaWxlRXhwbG9yZXJJdGVtRGFvLmFkZCgKKyAgICAgICAgICAgICAgICBmaWxlU3lzdGVtTmFtZSwgZmlsZUhhc2hOYW1lLCAvLyBUaGUgSGFzaG5hbWUgb2YgdGhlIGZpbGUKKyAgICAgICAgICAgICAgICBwYXJlbnRGb2xkZXJJZCwgb3duZXJJZCwgcm9vbV9pZCwgdXNlcklkLCBmYWxzZSwgLy8gaXNGb2xkZXIKKyAgICAgICAgICAgICAgICBpc0ltYWdlLCBpc1ByZXNlbnRhdGlvbiwgIiIsIGZhbHNlLCBpc0NoYXJ0LCAKKyAgICAgICAgICAgICAgICBleHRlcm5hbEZpbGVJZCwgZXh0ZXJuYWxUeXBlKTsKKyAgICAgICAgbG9nLmRlYnVnKCJmaWxlRXhwbG9yZXJJdGVtSWQ6ICIgKyBmaWxlRXhwbG9yZXJJdGVtSWQpOworICAgICAgICAKKyAgICAgICAgCisgICAgICAgIAorICAgICAgICBsb2cuZGVidWcoImNhbkJlQ29udmVydGVkOiAiICsgY2FuQmVDb252ZXJ0ZWQpOworICAgICAgICBpZiAoY2FuQmVDb252ZXJ0ZWQpIHsKKyAgICAgICAgICAgIC8vIGNvbnZlcnQgdG8gcGRmLCB0aHVtYnMsIHN3ZiBhbmQgeG1sLWRlc2NyaXB0aW9uCisgICAgICAgICAgICByZXR1cm5FcnJvciA9IGdlbmVyYXRlUERGLmNvbnZlcnRQREYobmV3RmlsZVN5c3RlbU5hbWUsICJmaWxlcyIsIHRydWUsIGNvbXBsZXRlTmFtZSk7CisgICAgICAgIH0gZWxzZSBpZiAoaXNQZGYpIHsKKyAgICAgICAgICAgIC8vIGNvbnZlcnQgdG8gdGh1bWJzLCBzd2YgYW5kIHhtbC1kZXNjcmlwdGlvbgorICAgICAgICAgICAgcmV0dXJuRXJyb3IgPSBnZW5lcmF0ZVBERi5jb252ZXJ0UERGKG5ld0ZpbGVTeXN0ZW1OYW1lLCAiZmlsZXMiLCBmYWxzZSwgY29tcGxldGVOYW1lKTsKKyAgICAgICAgfSBlbHNlIGlmIChpc0NoYXJ0KSB7CisgICAgICAgICAgICBsb2cuZGVidWcoInVwbG9hZGVkIGNoYXJ0IGZpbGUiKTsKKyAgICAgICAgfSBlbHNlIGlmIChpc0ltYWdlICYmICFpc0FzSXMpIHsKKyAgICAgICAgICAgIC8vIGNvbnZlcnQgaXQgdG8gSlBHCisgICAgICAgICAgICBsb2cuZGVidWcoIiMjIyMjIGNvbnZlcnQgaXQgdG8gSlBHOiAiKTsKKyAgICAgICAgICAgIHJldHVybkVycm9yID0gZ2VuZXJhdGVJbWFnZS5jb252ZXJ0SW1hZ2UobmV3RmlsZVN5c3RlbU5hbWUsIG5ld0ZpbGVFeHREb3QsICJmaWxlcyIsCisgICAgICAgICAgICAgICAgICAgIG5ld0ZpbGVTeXN0ZW1OYW1lLCBmYWxzZSk7CisgICAgICAgIH0gZWxzZSBpZiAoaXNBc0lzKSB7CisgICAgICAgIAlDb252ZXJ0ZXJQcm9jZXNzUmVzdWx0IHByb2Nlc3NUaHVtYiA9IGdlbmVyYXRlVGh1bWJzLmdlbmVyYXRlVGh1bWIoIl90aHVtYl8iLCBjb21wbGV0ZU5hbWUsIDUwKTsKKyAgICAgICAgICAgIHJldHVybkVycm9yLmFkZEl0ZW0oInByb2Nlc3NUaHVtYiIsIHByb2Nlc3NUaHVtYik7CisgICAgICAgIH0gZWxzZSBpZiAoaXNWaWRlbykgeworICAgICAgICAJTGlzdDxDb252ZXJ0ZXJQcm9jZXNzUmVzdWx0PiByZXR1cm5MaXN0ID0gZmx2RXhwbG9yZXJDb252ZXJ0ZXIuc3RhcnRDb252ZXJzaW9uKGZpbGVFeHBsb3Jlckl0ZW1JZCwgY29tcGxldGVOYW1lLmdldENhbm9uaWNhbFBhdGgoKSk7CisgICAgICAgIAkKKyAgICAgICAgCWludCBpPTA7CisgICAgICAgIAlmb3IgKENvbnZlcnRlclByb2Nlc3NSZXN1bHQgcmV0dXJuTWFwIDogcmV0dXJuTGlzdCkgeworICAgICAgICAJCXJldHVybkVycm9yLmFkZEl0ZW0oInByb2Nlc3NGTFYgIitpLCByZXR1cm5NYXApOworICAgICAgICAJfQorICAgICAgICAJCisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIC8vIGhhcyB0byBoYXBwZW4gYXQgdGhlIGVuZCwgb3RoZXJ3aXNlIGl0IHdpbGwgYmUgb3ZlcndyaXR0ZW4KKyAgICAgICAgLy9jYXVzZSB0aGUgdmFyaWFibGUgaXMgbmV3IGluaXRpYWxpemVkCisgICAgICAgIHJldHVybkVycm9yLnNldENvbXBsZXRlTmFtZShjb21wbGV0ZU5hbWUuZ2V0TmFtZSgpKTsKKyAgICAgICAgcmV0dXJuRXJyb3Iuc2V0RmlsZUV4cGxvcmVySXRlbUlkKGZpbGVFeHBsb3Jlckl0ZW1JZCk7CisgICAgICAgIAorCQlyZXR1cm4gcmV0dXJuRXJyb3I7CisJCQorCX0KKwkKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2ZpbGUvRmlsZVV0aWxzLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9maWxlL0ZpbGVVdGlscy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxZTU2YjcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9maWxlL0ZpbGVVdGlscy5qYXZhCkBAIC0wLDAgKzEsMTI2IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuZmlsZTsKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLnRleHQuU2ltcGxlRGF0ZUZvcm1hdDsKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuZmlsZS5kYW8uRmlsZUV4cGxvcmVySXRlbURhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5maWxlcy5GaWxlRXhwbG9yZXJJdGVtOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLk9tRmlsZUhlbHBlcjsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uQXV0b3dpcmVkOworCitwdWJsaWMgY2xhc3MgRmlsZVV0aWxzIHsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKAorCQkJRmlsZVByb2Nlc3Nvci5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCisJQEF1dG93aXJlZAorCXByaXZhdGUgRmlsZUV4cGxvcmVySXRlbURhbyBmaWxlRXhwbG9yZXJJdGVtRGFvOworCisJcHVibGljIGxvbmcgZ2V0U2l6ZU9mRGlyZWN0b3J5QW5kU3VicyhGaWxlRXhwbG9yZXJJdGVtIGZpbGVFeHBsb3Jlckl0ZW0pIHsKKwkJdHJ5IHsKKworCQkJbG9uZyBmaWxlU2l6ZSA9IDA7CisKKwkJCUZpbGUgYmFzZSA9IE9tRmlsZUhlbHBlci5nZXRVcGxvYWRGaWxlc0RpcigpOworCQkJaWYgKGZpbGVFeHBsb3Jlckl0ZW0uZ2V0SXNJbWFnZSgpKSB7CisKKwkJCQlGaWxlIHRGaWxlID0gbmV3IEZpbGUoYmFzZSwgZmlsZUV4cGxvcmVySXRlbS5nZXRGaWxlSGFzaCgpKTsKKwkJCQlpZiAodEZpbGUuZXhpc3RzKCkpIHsKKwkJCQkJZmlsZVNpemUgKz0gdEZpbGUubGVuZ3RoKCk7CisJCQkJfQorCisJCQkJRmlsZSB0aHVtYkZpbGUgPSBuZXcgRmlsZShiYXNlLCAiX3RodW1iXyIKKwkJCQkJCSsgZmlsZUV4cGxvcmVySXRlbS5nZXRGaWxlSGFzaCgpKTsKKwkJCQlpZiAodGh1bWJGaWxlLmV4aXN0cygpKSB7CisJCQkJCWZpbGVTaXplICs9IHRodW1iRmlsZS5sZW5ndGgoKTsKKwkJCQl9CisKKwkJCX0KKworCQkJaWYgKGZpbGVFeHBsb3Jlckl0ZW0uZ2V0SXNQcmVzZW50YXRpb24oKSkgeworCisJCQkJRmlsZSB0Rm9sZGVyID0gbmV3IEZpbGUoYmFzZSwgZmlsZUV4cGxvcmVySXRlbS5nZXRGaWxlSGFzaCgpKTsKKworCQkJCWlmICh0Rm9sZGVyLmV4aXN0cygpKSB7CisJCQkJCWZpbGVTaXplICs9IE9tRmlsZUhlbHBlci5nZXRTaXplKHRGb2xkZXIpOworCQkJCX0KKworCQkJfQorCisJCQlsb2cuZGVidWcoImNhbGxpbmcgWzFdIEZpbGVFeHBsb3Jlckl0ZW1EYW9JbXBsLnVwZGF0ZUZpbGVPckZvbGRlcigpIik7CisJCQlmaWxlRXhwbG9yZXJJdGVtRGFvLnVwZGF0ZUZpbGVPckZvbGRlcihmaWxlRXhwbG9yZXJJdGVtKTsKKworCQkJRmlsZUV4cGxvcmVySXRlbVtdIGNoaWxkRWxlbWVudHMgPSBmaWxlRXhwbG9yZXJJdGVtRGFvCisJCQkJCS5nZXRGaWxlRXhwbG9yZXJJdGVtc0J5UGFyZW50KGZpbGVFeHBsb3Jlckl0ZW0KKwkJCQkJCQkuZ2V0RmlsZUV4cGxvcmVySXRlbUlkKCkpOworCisJCQlmb3IgKEZpbGVFeHBsb3Jlckl0ZW0gY2hpbGRFeHBsb3Jlckl0ZW0gOiBjaGlsZEVsZW1lbnRzKSB7CisKKwkJCQlmaWxlU2l6ZSArPSB0aGlzLmdldFNpemVPZkRpcmVjdG9yeUFuZFN1YnMoY2hpbGRFeHBsb3Jlckl0ZW0pOworCisJCQl9CisKKwkJCXJldHVybiBmaWxlU2l6ZTsKKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRTaXplT2ZEaXJlY3RvcnlBbmRTdWJzXSAiLCBlcnIpOworCQl9CisJCXJldHVybiAwOworCX0KKworCXB1YmxpYyB2b2lkIHNldEZpbGVUb093bmVyT3JSb29tQnlQYXJlbnQoRmlsZUV4cGxvcmVySXRlbSBmaWxlRXhwbG9yZXJJdGVtLAorCQkJTG9uZyB1c2Vyc19pZCwgTG9uZyByb29tX2lkKSB7CisJCXRyeSB7CisKKwkJCWZpbGVFeHBsb3Jlckl0ZW0uc2V0T3duZXJJZCh1c2Vyc19pZCk7CisJCQlmaWxlRXhwbG9yZXJJdGVtLnNldFJvb21faWQocm9vbV9pZCk7CisKKwkJCWxvZy5kZWJ1ZygiY2FsbGluZyBbMl0gRmlsZUV4cGxvcmVySXRlbURhb0ltcGwudXBkYXRlRmlsZU9yRm9sZGVyKCkiKTsKKwkJCWZpbGVFeHBsb3Jlckl0ZW1EYW8udXBkYXRlRmlsZU9yRm9sZGVyKGZpbGVFeHBsb3Jlckl0ZW0pOworCisJCQlGaWxlRXhwbG9yZXJJdGVtW10gY2hpbGRFbGVtZW50cyA9IGZpbGVFeHBsb3Jlckl0ZW1EYW8KKwkJCQkJLmdldEZpbGVFeHBsb3Jlckl0ZW1zQnlQYXJlbnQoZmlsZUV4cGxvcmVySXRlbQorCQkJCQkJCS5nZXRGaWxlRXhwbG9yZXJJdGVtSWQoKSk7CisKKwkJCWZvciAoRmlsZUV4cGxvcmVySXRlbSBjaGlsZEV4cGxvcmVySXRlbSA6IGNoaWxkRWxlbWVudHMpIHsKKworCQkJCXRoaXMuc2V0RmlsZVRvT3duZXJPclJvb21CeVBhcmVudChjaGlsZEV4cGxvcmVySXRlbSwgdXNlcnNfaWQsCisJCQkJCQlyb29tX2lkKTsKKworCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW3NldEZpbGVUb093bmVyT3JSb29tQnlQYXJlbnRdICIsIGVycik7CisJCX0KKwl9CisKKwlwdWJsaWMgU3RyaW5nIGZvcm1hdERhdGUoRGF0ZSBkYXRlKSB7CisJCVNpbXBsZURhdGVGb3JtYXQgZm9ybWF0dGVyOworCQlTdHJpbmcgcGF0dGVybiA9ICJkZC9NTS95eSBIOm1tOnNzIjsKKwkJTG9jYWxlIGxvY2FsZSA9IG5ldyBMb2NhbGUoImVuIiwgIlVTIik7CisJCWZvcm1hdHRlciA9IG5ldyBTaW1wbGVEYXRlRm9ybWF0KHBhdHRlcm4sIGxvY2FsZSk7CisJCXJldHVybiBmb3JtYXR0ZXIuZm9ybWF0KGRhdGUpOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2ZpbGUvZGFvL0ZpbGVFeHBsb3Jlckl0ZW1EYW8uamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2ZpbGUvZGFvL0ZpbGVFeHBsb3Jlckl0ZW1EYW8uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMmM3OTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvZmlsZS9kYW8vRmlsZUV4cGxvcmVySXRlbURhby5qYXZhCkBAIC0wLDAgKzEsNDE1IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuZmlsZS5kYW87CisKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eU1hbmFnZXI7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTm9SZXN1bHRFeGNlcHRpb247CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuUGVyc2lzdGVuY2VDb250ZXh0OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlR5cGVkUXVlcnk7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuZmlsZXMuRmlsZUV4cGxvcmVySXRlbTsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay50cmFuc2FjdGlvbi5hbm5vdGF0aW9uLlRyYW5zYWN0aW9uYWw7CisKKy8qKgorICogQGF1dGhvciBzZWJhc3RpYW53YWduZXIKKyAqIAorICovCitAVHJhbnNhY3Rpb25hbAorcHVibGljIGNsYXNzIEZpbGVFeHBsb3Jlckl0ZW1EYW8geworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcigKKyAgICAgICAgICAgIEZpbGVFeHBsb3Jlckl0ZW1EYW8uY2xhc3MsCisgICAgICAgICAgICBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisJQFBlcnNpc3RlbmNlQ29udGV4dAorCXByaXZhdGUgRW50aXR5TWFuYWdlciBlbTsKKworICAgIHB1YmxpYyBMb25nIGFkZChTdHJpbmcgZmlsZU5hbWUsIFN0cmluZyBmaWxlSGFzaCwKKyAgICAgICAgICAgIExvbmcgcGFyZW50RmlsZUV4cGxvcmVySXRlbUlkLCBMb25nIG93bmVySWQsIExvbmcgcm9vbV9pZCwKKyAgICAgICAgICAgIExvbmcgaW5zZXJ0ZWRCeSwgQm9vbGVhbiBpc0ZvbGRlciwgQm9vbGVhbiBpc0ltYWdlLAorICAgICAgICAgICAgQm9vbGVhbiBpc1ByZXNlbnRhdGlvbiwgU3RyaW5nIHdtbEZpbGVQYXRoLAorICAgICAgICAgICAgQm9vbGVhbiBpc1N0b3JlZFdtbEZpbGUsIEJvb2xlYW4gaXNDaGFydCwKKyAgICAgICAgICAgIExvbmcgZXh0ZXJuYWxGaWxlSWQsIFN0cmluZyBleHRlcm5hbFR5cGUpIHsKKyAgICAgICAgbG9nLmRlYnVnKCIuYWRkKCk6IGFkZGluZyBmaWxlICIgKyBmaWxlTmFtZSsgIiByb29tSUQ6ICIrcm9vbV9pZCk7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBGaWxlRXhwbG9yZXJJdGVtIGZpbGVJdGVtID0gbmV3IEZpbGVFeHBsb3Jlckl0ZW0oKTsKKyAgICAgICAgICAgIGZpbGVJdGVtLnNldEZpbGVOYW1lKGZpbGVOYW1lKTsKKyAgICAgICAgICAgIGZpbGVJdGVtLnNldEZpbGVIYXNoKGZpbGVIYXNoKTsKKyAgICAgICAgICAgIGZpbGVJdGVtLnNldERlbGV0ZWQoZmFsc2UpOworICAgICAgICAgICAgZmlsZUl0ZW0uc2V0UGFyZW50RmlsZUV4cGxvcmVySXRlbUlkKHBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCk7CisgICAgICAgICAgICBmaWxlSXRlbS5zZXRPd25lcklkKG93bmVySWQpOworICAgICAgICAgICAgZmlsZUl0ZW0uc2V0Um9vbV9pZChyb29tX2lkKTsKKyAgICAgICAgICAgIGZpbGVJdGVtLnNldEluc2VydGVkKG5ldyBEYXRlKCkpOworICAgICAgICAgICAgZmlsZUl0ZW0uc2V0SW5zZXJ0ZWRCeShpbnNlcnRlZEJ5KTsKKyAgICAgICAgICAgIGZpbGVJdGVtLnNldElzRm9sZGVyKGlzRm9sZGVyKTsKKyAgICAgICAgICAgIGZpbGVJdGVtLnNldElzSW1hZ2UoaXNJbWFnZSk7CisgICAgICAgICAgICBmaWxlSXRlbS5zZXRJc1ByZXNlbnRhdGlvbihpc1ByZXNlbnRhdGlvbik7CisgICAgICAgICAgICBmaWxlSXRlbS5zZXRVcGRhdGVkKG5ldyBEYXRlKCkpOworICAgICAgICAgICAgZmlsZUl0ZW0uc2V0V21sRmlsZVBhdGgod21sRmlsZVBhdGgpOworICAgICAgICAgICAgZmlsZUl0ZW0uc2V0SXNTdG9yZWRXbWxGaWxlKGlzU3RvcmVkV21sRmlsZSk7CisgICAgICAgICAgICBmaWxlSXRlbS5zZXRJc0NoYXJ0KGlzQ2hhcnQpOworICAgICAgICAgICAgZmlsZUl0ZW0uc2V0RXh0ZXJuYWxGaWxlSWQoZXh0ZXJuYWxGaWxlSWQpOworICAgICAgICAgICAgZmlsZUl0ZW0uc2V0RXh0ZXJuYWxUeXBlKGV4dGVybmFsVHlwZSk7CisKKwkJCWZpbGVJdGVtID0gZW0ubWVyZ2UoZmlsZUl0ZW0pOworCQkJTG9uZyBmaWxlSXRlbUlkID0gZmlsZUl0ZW0uZ2V0RmlsZUV4cGxvcmVySXRlbUlkKCk7CisKKyAgICAgICAgICAgIGxvZy5kZWJ1ZygiLmFkZCgpOiBmaWxlICIgKyBmaWxlTmFtZSArICIgYWRkZWQgYXMgIiArIGZpbGVJdGVtSWQpOworICAgICAgICAgICAgcmV0dXJuIGZpbGVJdGVtSWQ7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKyAgICAgICAgICAgIGxvZy5lcnJvcigiLmFkZCgpOiAiLCBleDIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgTG9uZyBhZGRGaWxlRXhwbG9yZXJJdGVtKEZpbGVFeHBsb3Jlckl0ZW0gZmlsZUl0ZW0pIHsKKyAgICAgICAgdHJ5IHsKKworCQkJZmlsZUl0ZW0gPSBlbS5tZXJnZShmaWxlSXRlbSk7CisJCQlMb25nIGZpbGVJdGVtSWQgPSBmaWxlSXRlbS5nZXRGaWxlRXhwbG9yZXJJdGVtSWQoKTsKKworICAgICAgICAgICAgcmV0dXJuIGZpbGVJdGVtSWQ7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKyAgICAgICAgICAgIGxvZy5lcnJvcigiW2FkZEZpbGVFeHBsb3Jlckl0ZW1dIiwgZXgyKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKwlwdWJsaWMgTGlzdDxGaWxlRXhwbG9yZXJJdGVtPiBnZXRGaWxlRXhwbG9yZXJJdGVtc0J5Um9vbUFuZE93bmVyKAorICAgICAgICAgICAgTG9uZyByb29tX2lkLCBMb25nIG93bmVySWQpIHsKKyAgICAgICAgbG9nLmRlYnVnKCIuZ2V0RmlsZUV4cGxvcmVySXRlbXNCeVJvb21BbmRPd25lcigpIHN0YXJ0ZWQiKTsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIFN0cmluZyBocWwgPSAiU0VMRUNUIGMgRlJPTSBGaWxlRXhwbG9yZXJJdGVtIGMgIgorICAgICAgICAgICAgICAgICAgICArICJXSEVSRSBjLmRlbGV0ZWQgPD4gOmRlbGV0ZWQgIgorICAgICAgICAgICAgICAgICAgICArICJBTkQgYy5yb29tX2lkID0gOnJvb21faWQgIiArICJBTkQgYy5vd25lcklkID0gOm93bmVySWQgIgorICAgICAgICAgICAgICAgICAgICArICJPUkRFUiBCWSBjLmlzRm9sZGVyIERFU0MsIGMuZmlsZU5hbWUgIjsKKworCQkJVHlwZWRRdWVyeTxGaWxlRXhwbG9yZXJJdGVtPiBxdWVyeSA9IGVtLmNyZWF0ZVF1ZXJ5KGhxbCwgRmlsZUV4cGxvcmVySXRlbS5jbGFzcyk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImRlbGV0ZWQiLCB0cnVlKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigicm9vbV9pZCIscm9vbV9pZCk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoIm93bmVySWQiLG93bmVySWQpOworCQkJCisJCQlMaXN0PEZpbGVFeHBsb3Jlckl0ZW0+IGZpbGVFeHBsb3Jlckxpc3QgPSBxdWVyeS5nZXRSZXN1bHRMaXN0KCk7CisKKyAgICAgICAgICAgIHJldHVybiBmaWxlRXhwbG9yZXJMaXN0OworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisgICAgICAgICAgICBsb2cuZXJyb3IoIltnZXRGaWxlRXhwbG9yZXJJdGVtc0J5Um9vbUFuZE93bmVyXTogIiwgZXgyKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBwdWJsaWMgRmlsZUV4cGxvcmVySXRlbVtdIGdldEZpbGVFeHBsb3Jlckl0ZW1zQnlSb29tKExvbmcgcm9vbV9pZCwKKyAgICAgICAgICAgIExvbmcgcGFyZW50RmlsZUV4cGxvcmVySXRlbUlkKSB7CisgICAgICAgIGxvZy5kZWJ1ZygiZ2V0RmlsZUV4cGxvcmVySXRlbXNCeVJvb20gcm9vbV9pZCA6OiAiK3Jvb21faWQpOworICAgICAgICB0cnkgeworCisJCQlTdHJpbmcgaHFsID0gIlNFTEVDVCBjIEZST00gRmlsZUV4cGxvcmVySXRlbSBjICIgKworCQkJCQkiV0hFUkUgYy5kZWxldGVkIDw+IDpkZWxldGVkICIgKworCQkJCQkiQU5EIGMucm9vbV9pZCA9IDpyb29tX2lkICIgKworCQkJCQkiQU5EIGMub3duZXJJZCBJUyBOVUxMICIgKworCQkJCQkiQU5EIGMucGFyZW50RmlsZUV4cGxvcmVySXRlbUlkID0gOnBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCAiICsKKwkJCQkJIk9SREVSIEJZIGMuaXNGb2xkZXIgREVTQywgYy5maWxlTmFtZSAiOworCQkJCisJCQlUeXBlZFF1ZXJ5PEZpbGVFeHBsb3Jlckl0ZW0+IHF1ZXJ5ID0gZW0uY3JlYXRlUXVlcnkoaHFsLCBGaWxlRXhwbG9yZXJJdGVtLmNsYXNzKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiZGVsZXRlZCIsIHRydWUpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJyb29tX2lkIixyb29tX2lkKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigicGFyZW50RmlsZUV4cGxvcmVySXRlbUlkIiwgcGFyZW50RmlsZUV4cGxvcmVySXRlbUlkKTsKKwkJCQorCSAgICAgICAgRmlsZUV4cGxvcmVySXRlbVtdIGZpbGVFeHBsb3Jlckxpc3QgPSBxdWVyeS5nZXRSZXN1bHRMaXN0KCkudG9BcnJheShuZXcgRmlsZUV4cGxvcmVySXRlbVswXSk7CisJCQkKKwkJCXJldHVybiBmaWxlRXhwbG9yZXJMaXN0OworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisgICAgICAgICAgICBsb2cuZXJyb3IoIltnZXRGaWxlRXhwbG9yZXJSb290SXRlbXNCeVJvb21dOiAiLCBleDIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIHB1YmxpYyBGaWxlRXhwbG9yZXJJdGVtW10gZ2V0RmlsZUV4cGxvcmVySXRlbXNCeU93bmVyKExvbmcgb3duZXJJZCwKKyAgICAgICAgICAgIExvbmcgcGFyZW50RmlsZUV4cGxvcmVySXRlbUlkKSB7CisgICAgICAgIGxvZy5kZWJ1ZygiLmdldEZpbGVFeHBsb3Jlckl0ZW1zQnlPd25lcigpIHN0YXJ0ZWQiKTsKKyAgICAgICAgdHJ5IHsKKworICAgICAgICAgICAgU3RyaW5nIGhxbCA9ICJTRUxFQ1QgYyBGUk9NIEZpbGVFeHBsb3Jlckl0ZW0gYyAiCisgICAgICAgICAgICAgICAgICAgICsgIldIRVJFIGMuZGVsZXRlZCA8PiA6ZGVsZXRlZCAiCisgICAgICAgICAgICAgICAgICAgICsgIkFORCBjLm93bmVySWQgPSA6b3duZXJJZCAiCisgICAgICAgICAgICAgICAgICAgICsgIkFORCBjLnBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCA9IDpwYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQgIgorICAgICAgICAgICAgICAgICAgICArICJPUkRFUiBCWSBjLmlzRm9sZGVyIERFU0MsIGMuZmlsZU5hbWUgIjsKKworCQkJVHlwZWRRdWVyeTxGaWxlRXhwbG9yZXJJdGVtPiBxdWVyeSA9IGVtLmNyZWF0ZVF1ZXJ5KGhxbCwgRmlsZUV4cGxvcmVySXRlbS5jbGFzcyk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImRlbGV0ZWQiLCB0cnVlKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigib3duZXJJZCIsb3duZXJJZCk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCIsIHBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCk7CisJCQkKKyAgICAgICAgICAgIEZpbGVFeHBsb3Jlckl0ZW1bXSBmaWxlRXhwbG9yZXJMaXN0ID0gcXVlcnkuZ2V0UmVzdWx0TGlzdCgpLnRvQXJyYXkobmV3IEZpbGVFeHBsb3Jlckl0ZW1bMF0pOworCisgICAgICAgICAgICByZXR1cm4gZmlsZUV4cGxvcmVyTGlzdDsKKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworICAgICAgICAgICAgbG9nLmVycm9yKCJbZ2V0RmlsZUV4cGxvcmVyUm9vdEl0ZW1zQnlPd25lcl06ICIsIGV4Mik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorCisgICAgcHVibGljIEZpbGVFeHBsb3Jlckl0ZW1bXSBnZXRGaWxlRXhwbG9yZXJJdGVtc0J5UGFyZW50KAorICAgICAgICAgICAgTG9uZyBwYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQpIHsKKyAgICAgICAgbG9nLmRlYnVnKCIuZ2V0RmlsZUV4cGxvcmVySXRlbXNCeVBhcmVudCgpIHN0YXJ0ZWQiKTsKKyAgICAgICAgdHJ5IHsKKworICAgICAgICAgICAgU3RyaW5nIGhxbCA9ICJTRUxFQ1QgYyBGUk9NIEZpbGVFeHBsb3Jlckl0ZW0gYyAiCisgICAgICAgICAgICAgICAgICAgICsgIldIRVJFIGMuZGVsZXRlZCA8PiA6ZGVsZXRlZCAiCisgICAgICAgICAgICAgICAgICAgICsgIkFORCBjLnBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCA9IDpwYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQgIgorICAgICAgICAgICAgICAgICAgICArICJPUkRFUiBCWSBjLmlzRm9sZGVyIERFU0MsIGMuZmlsZU5hbWUgIjsKKworCQkJVHlwZWRRdWVyeTxGaWxlRXhwbG9yZXJJdGVtPiBxdWVyeSA9IGVtLmNyZWF0ZVF1ZXJ5KGhxbCwgRmlsZUV4cGxvcmVySXRlbS5jbGFzcyk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImRlbGV0ZWQiLCB0cnVlKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigicGFyZW50RmlsZUV4cGxvcmVySXRlbUlkIiwgcGFyZW50RmlsZUV4cGxvcmVySXRlbUlkKTsKKwkJCQorICAgICAgICAgICAgRmlsZUV4cGxvcmVySXRlbVtdIGZpbGVFeHBsb3Jlckxpc3QgPSBxdWVyeS5nZXRSZXN1bHRMaXN0KCkudG9BcnJheShuZXcgRmlsZUV4cGxvcmVySXRlbVswXSk7CisKKyAgICAgICAgICAgIHJldHVybiBmaWxlRXhwbG9yZXJMaXN0OworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisgICAgICAgICAgICBsb2cuZXJyb3IoIltnZXRGaWxlRXhwbG9yZXJSb290SXRlbXNCeU93bmVyXTogIiwgZXgyKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKyAgICBwdWJsaWMgRmlsZUV4cGxvcmVySXRlbSBnZXRGaWxlRXhwbG9yZXJJdGVtc0J5SGFzaChTdHJpbmcgaGFzaCkgeworICAgICAgICB0cnkgeworCisJCQlUeXBlZFF1ZXJ5PEZpbGVFeHBsb3Jlckl0ZW0+IHF1ZXJ5ID0gZW0uY3JlYXRlTmFtZWRRdWVyeSgiZ2V0QnlIYXNoIiwgRmlsZUV4cGxvcmVySXRlbS5jbGFzcyk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImZpbGVIYXNoIiwgaGFzaCk7CisJCQkKKwkJCUZpbGVFeHBsb3Jlckl0ZW0gZmlsZUV4cGxvcmVyTGlzdCA9IG51bGw7CisJCQl0cnkgeworCQkJCWZpbGVFeHBsb3Jlckxpc3QgPSBxdWVyeS5nZXRTaW5nbGVSZXN1bHQoKTsKKwkJICAgIH0gY2F0Y2ggKE5vUmVzdWx0RXhjZXB0aW9uIGV4KSB7CisJCSAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBmaWxlRXhwbG9yZXJMaXN0OworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisgICAgICAgICAgICBsb2cuZXJyb3IoIltnZXRGaWxlRXhwbG9yZXJJdGVtc0J5SWRdOiAiLCBleDIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgRmlsZUV4cGxvcmVySXRlbSBnZXRGaWxlRXhwbG9yZXJJdGVtc0J5SWQoTG9uZyBmaWxlRXhwbG9yZXJJdGVtSWQpIHsKKyAgICAgICAgdHJ5IHsKKworCQkJVHlwZWRRdWVyeTxGaWxlRXhwbG9yZXJJdGVtPiBxdWVyeSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoImdldEJ5SWQiLCBGaWxlRXhwbG9yZXJJdGVtLmNsYXNzKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiZmlsZUV4cGxvcmVySXRlbUlkIiwgZmlsZUV4cGxvcmVySXRlbUlkKTsKKwkJCQorCQkJRmlsZUV4cGxvcmVySXRlbSBmaWxlRXhwbG9yZXJMaXN0ID0gbnVsbDsKKwkJCXRyeSB7CisJCQkJZmlsZUV4cGxvcmVyTGlzdCA9IHF1ZXJ5LmdldFNpbmdsZVJlc3VsdCgpOworCQkgICAgfSBjYXRjaCAoTm9SZXN1bHRFeGNlcHRpb24gZXgpIHsKKwkJICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIGZpbGVFeHBsb3Jlckxpc3Q7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKyAgICAgICAgICAgIGxvZy5lcnJvcigiW2dldEZpbGVFeHBsb3Jlckl0ZW1zQnlJZF06ICIsIGV4Mik7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGw7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBGaWxlRXhwbG9yZXJJdGVtIGdldEZpbGVFeHBsb3Jlckl0ZW1zQnlFeHRlcm5hbElkQW5kVHlwZShMb25nIGV4dGVybmFsRmlsZUlkLCBTdHJpbmcgZXh0ZXJuYWxUeXBlKSB7CisgICAgICAgIGxvZy5kZWJ1ZygiLmdldEZpbGVFeHBsb3Jlckl0ZW1zQnlFeHRlcm5hbElkQW5kVHlwZSgpIHN0YXJ0ZWQiKTsKKworICAgICAgICB0cnkgeworCisgICAgICAgICAgICBTdHJpbmcgaHFsID0gIlNFTEVDVCBjIEZST00gRmlsZUV4cGxvcmVySXRlbSBjICIKKyAgICAgICAgICAgICAgICAgICAgKyAiV0hFUkUgYy5leHRlcm5hbEZpbGVJZCA9IDpleHRlcm5hbEZpbGVJZCAiICsKKyAgICAgICAgICAgIAkJIkFORCBjLmV4dGVybmFsVHlwZSBMSUtFIDpleHRlcm5hbFR5cGUiOworCisJCQlUeXBlZFF1ZXJ5PEZpbGVFeHBsb3Jlckl0ZW0+IHF1ZXJ5ID0gZW0uY3JlYXRlUXVlcnkoaHFsLCBGaWxlRXhwbG9yZXJJdGVtLmNsYXNzKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiZXh0ZXJuYWxGaWxlSWQiLCBleHRlcm5hbEZpbGVJZCk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImV4dGVybmFsVHlwZSIsIGV4dGVybmFsVHlwZSk7CisJCQkKKwkJCUZpbGVFeHBsb3Jlckl0ZW0gZmlsZUV4cGxvcmVyTGlzdCA9IG51bGw7CisJCQl0cnkgeworCQkJCWZpbGVFeHBsb3Jlckxpc3QgPSBxdWVyeS5nZXRTaW5nbGVSZXN1bHQoKTsKKwkJICAgIH0gY2F0Y2ggKE5vUmVzdWx0RXhjZXB0aW9uIGV4KSB7CisJCSAgICB9CisKKyAgICAgICAgICAgIHJldHVybiBmaWxlRXhwbG9yZXJMaXN0OworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisgICAgICAgICAgICBsb2cuZXJyb3IoIltnZXRGaWxlRXhwbG9yZXJJdGVtc0J5RXh0ZXJuYWxJZEFuZFR5cGVdOiAiLCBleDIpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxsOworICAgIH0KKworICAgIHB1YmxpYyBMaXN0PEZpbGVFeHBsb3Jlckl0ZW0+IGdldEZpbGVFeHBsb3Jlckl0ZW1zKCkgeworICAgICAgICBsb2cuZGVidWcoIi5nZXRGaWxlRXhwbG9yZXJJdGVtcygpIHN0YXJ0ZWQiKTsKKworICAgICAgICB0cnkgeworCQkJVHlwZWRRdWVyeTxGaWxlRXhwbG9yZXJJdGVtPiBxdWVyeSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoImdldEFsbEZpbGVzIiwgRmlsZUV4cGxvcmVySXRlbS5jbGFzcyk7CisKKyAgICAgICAgICAgIExpc3Q8RmlsZUV4cGxvcmVySXRlbT4gZmlsZUV4cGxvcmVyTGlzdCA9IHF1ZXJ5LmdldFJlc3VsdExpc3QoKTsKKworICAgICAgICAgICAgcmV0dXJuIGZpbGVFeHBsb3Jlckxpc3Q7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKyAgICAgICAgICAgIGxvZy5lcnJvcigiW2dldEZpbGVFeHBsb3Jlckl0ZW1zXTogIiwgZXgyKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9ICAgIAorCisgICAgLyoqCisgICAgICogQHBhcmFtIGZpbGVFeHBsb3Jlckl0ZW1JZAorICAgICAqLworICAgIHB1YmxpYyB2b2lkIGRlbGV0ZUZpbGVFeHBsb3Jlckl0ZW0oTG9uZyBmaWxlRXhwbG9yZXJJdGVtSWQpIHsKKyAgICAgICAgbG9nLmRlYnVnKCIuZGVsZXRlRmlsZUV4cGxvcmVySXRlbSgpIHN0YXJ0ZWQiKTsKKworICAgICAgICB0cnkgeworCisgICAgICAgICAgICBGaWxlRXhwbG9yZXJJdGVtIGZJZCA9IHRoaXMKKyAgICAgICAgICAgICAgICAgICAgLmdldEZpbGVFeHBsb3Jlckl0ZW1zQnlJZChmaWxlRXhwbG9yZXJJdGVtSWQpOworCisgICAgICAgICAgICBmSWQuc2V0RGVsZXRlZCh0cnVlKTsKKyAgICAgICAgICAgIGZJZC5zZXRVcGRhdGVkKG5ldyBEYXRlKCkpOworCisJCQlpZiAoZklkLmdldEZpbGVFeHBsb3Jlckl0ZW1JZCgpID09IDApIHsKKwkJCQllbS5wZXJzaXN0KGZJZCk7CisJCSAgICB9IGVsc2UgeworCQkgICAgCWlmICghZW0uY29udGFpbnMoZklkKSkgeworCQkgICAgCQllbS5tZXJnZShmSWQpOworCQkJICAgIH0KKwkJCX0KKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworICAgICAgICAgICAgbG9nLmVycm9yKCJbZGVsZXRlRmlsZUV4cGxvcmVySXRlbV06ICIsIGV4Mik7CisgICAgICAgIH0KKyAgICB9CisgICAgCisgICAgcHVibGljIHZvaWQgZGVsZXRlRmlsZUV4cGxvcmVySXRlbUJ5RXh0ZXJuYWxJZEFuZFR5cGUoTG9uZyBleHRlcm5hbEZpbGVzaWQsIFN0cmluZyBleHRlcm5hbFR5cGUpIHsKKyAgICAgICAgbG9nLmRlYnVnKCIuZGVsZXRlRmlsZUV4cGxvcmVySXRlbUJ5RXh0ZXJuYWxJZEFuZFR5cGUoKSBzdGFydGVkIik7CisKKyAgICAgICAgdHJ5IHsKKworICAgICAgICAgICAgRmlsZUV4cGxvcmVySXRlbSBmSWQgPSB0aGlzCisgICAgICAgICAgICAgICAgICAgIC5nZXRGaWxlRXhwbG9yZXJJdGVtc0J5RXh0ZXJuYWxJZEFuZFR5cGUoZXh0ZXJuYWxGaWxlc2lkLCBleHRlcm5hbFR5cGUpOworCisgICAgICAgICAgICBpZiAoZklkID09IG51bGwpIHsKKyAgICAgICAgICAgIAl0aHJvdyBuZXcgRXhjZXB0aW9uKCJleHRlcm5hbEZpbGVzaWQ6ICIrZXh0ZXJuYWxGaWxlc2lkKyIgYW5kIGV4dGVybmFsVHlwZTogIitleHRlcm5hbFR5cGUrIiBOb3QgZm91bmQiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgZklkLnNldERlbGV0ZWQodHJ1ZSk7CisgICAgICAgICAgICBmSWQuc2V0VXBkYXRlZChuZXcgRGF0ZSgpKTsKKworCQkJaWYgKGZJZC5nZXRGaWxlRXhwbG9yZXJJdGVtSWQoKSA9PSAwKSB7CisJCQkJZW0ucGVyc2lzdChmSWQpOworCQkgICAgfSBlbHNlIHsKKwkJICAgIAlpZiAoIWVtLmNvbnRhaW5zKGZJZCkpIHsKKwkJICAgIAkJZW0ubWVyZ2UoZklkKTsKKwkJCSAgICB9CisJCQl9CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKyAgICAgICAgICAgIGxvZy5lcnJvcigiW2RlbGV0ZUZpbGVFeHBsb3Jlckl0ZW1CeUV4dGVybmFsSWRBbmRUeXBlXTogIiwgZXgyKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qKgorICAgICAqIEBwYXJhbSBmaWxlRXhwbG9yZXJJdGVtSWQKKyAgICAgKiBAcGFyYW0gZmlsZU5hbWUKKyAgICAgKi8KKyAgICBwdWJsaWMgdm9pZCB1cGRhdGVGaWxlT3JGb2xkZXJOYW1lKExvbmcgZmlsZUV4cGxvcmVySXRlbUlkLCBTdHJpbmcgZmlsZU5hbWUpIHsKKyAgICAgICAgbG9nLmRlYnVnKCIudXBkYXRlRmlsZU9yRm9sZGVyTmFtZSgpIHN0YXJ0ZWQiKTsKKworICAgICAgICB0cnkgeworCisgICAgICAgICAgICBGaWxlRXhwbG9yZXJJdGVtIGZJZCA9IHRoaXMKKyAgICAgICAgICAgICAgICAgICAgLmdldEZpbGVFeHBsb3Jlckl0ZW1zQnlJZChmaWxlRXhwbG9yZXJJdGVtSWQpOworCisgICAgICAgICAgICBmSWQuc2V0RmlsZU5hbWUoZmlsZU5hbWUpOworICAgICAgICAgICAgZklkLnNldFVwZGF0ZWQobmV3IERhdGUoKSk7CisKKwkJCWlmIChmSWQuZ2V0RmlsZUV4cGxvcmVySXRlbUlkKCkgPT0gMCkgeworCQkJCWVtLnBlcnNpc3QoZklkKTsKKwkJICAgIH0gZWxzZSB7CisJCSAgICAJaWYgKCFlbS5jb250YWlucyhmSWQpKSB7CisJCSAgICAJCWVtLm1lcmdlKGZJZCk7CisJCQkgICAgfQorCQkJfQorICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisgICAgICAgICAgICBsb2cuZXJyb3IoIlt1cGRhdGVGaWxlT3JGb2xkZXJOYW1lXTogIiwgZXgyKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHVwZGF0ZUZpbGVPckZvbGRlcihGaWxlRXhwbG9yZXJJdGVtIGZJZCkgeworICAgICAgICBsb2cuZGVidWcoIi51cGRhdGVGaWxlT3JGb2xkZXIoKSBzdGFydGVkIik7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICAvLyBmSWQuc2V0VXBkYXRlZChuZXcgRGF0ZSgpKTsKKworCQkJaWYgKGZJZC5nZXRGaWxlRXhwbG9yZXJJdGVtSWQoKSA9PSAwKSB7CisJCQkJZW0ucGVyc2lzdChmSWQpOworCQkgICAgfSBlbHNlIHsKKwkJICAgIAlpZiAoIWVtLmNvbnRhaW5zKGZJZCkpIHsKKwkJICAgIAkJZW0ubWVyZ2UoZklkKTsKKwkJCSAgICB9CisJCQl9CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKyAgICAgICAgICAgIGxvZy5lcnJvcigiW3VwZGF0ZUZpbGVPckZvbGRlcl06ICIsIGV4Mik7CisgICAgICAgIH0KKyAgICB9CisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0gZmlsZUV4cGxvcmVySXRlbUlkCisgICAgICogQHBhcmFtIG5ld1BhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZAorICAgICAqIEBwYXJhbSBpc093bmVyCisgICAgICovCisgICAgcHVibGljIHZvaWQgbW92ZUZpbGUoTG9uZyBmaWxlRXhwbG9yZXJJdGVtSWQsCisgICAgICAgICAgICBMb25nIHBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCwgTG9uZyByb29tX2lkLCBCb29sZWFuIGlzT3duZXIsCisgICAgICAgICAgICBMb25nIG93bmVySWQpIHsKKyAgICAgICAgbG9nLmRlYnVnKCIubW92ZUZpbGUoKSBzdGFydGVkIik7CisgICAgICAgIHRyeSB7CisKKyAgICAgICAgICAgIEZpbGVFeHBsb3Jlckl0ZW0gZklkID0gdGhpcworICAgICAgICAgICAgICAgICAgICAuZ2V0RmlsZUV4cGxvcmVySXRlbXNCeUlkKGZpbGVFeHBsb3Jlckl0ZW1JZCk7CisKKyAgICAgICAgICAgIGZJZC5zZXRQYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQocGFyZW50RmlsZUV4cGxvcmVySXRlbUlkKTsKKworICAgICAgICAgICAgaWYgKHBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCA9PSAwKSB7CisgICAgICAgICAgICAgICAgaWYgKGlzT3duZXIpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gbW92ZSB0byBwZXJzb25hbCBGb2xkZXIKKyAgICAgICAgICAgICAgICAgICAgZklkLnNldE93bmVySWQob3duZXJJZCk7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gbW92ZSB0byBwdWJsaWMgcm9vbSBmb2xkZXIKKyAgICAgICAgICAgICAgICAgICAgZklkLnNldE93bmVySWQobnVsbCk7CisgICAgICAgICAgICAgICAgICAgIGZJZC5zZXRSb29tX2lkKHJvb21faWQpOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZklkLnNldE93bmVySWQobnVsbCk7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGZJZC5zZXRVcGRhdGVkKG5ldyBEYXRlKCkpOworCisJCQlpZiAoZklkLmdldEZpbGVFeHBsb3Jlckl0ZW1JZCgpID09IDApIHsKKwkJCQllbS5wZXJzaXN0KGZJZCk7CisJCSAgICB9IGVsc2UgeworCQkgICAgCWlmICghZW0uY29udGFpbnMoZklkKSkgeworCQkgICAgCQllbS5tZXJnZShmSWQpOworCQkJICAgIH0KKwkJCX0KKyAgICAgICAgfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworICAgICAgICAgICAgbG9nLmVycm9yKCJbdXBkYXRlRmlsZU9yRm9sZGVyTmFtZV06ICIsIGV4Mik7CisgICAgICAgIH0KKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2ZpbGUvZHRvL0ZpbGVFeHBsb3Jlck9iamVjdC5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvZmlsZS9kdG8vRmlsZUV4cGxvcmVyT2JqZWN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDM5MWU5MgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2ZpbGUvZHRvL0ZpbGVFeHBsb3Jlck9iamVjdC5qYXZhCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5maWxlLmR0bzsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmZpbGVzLkZpbGVFeHBsb3Jlckl0ZW07CisKKy8qKgorICogQGF1dGhvciBzZWJhc3RpYW53YWduZXIKKyAqCisgKi8KK3B1YmxpYyBjbGFzcyBGaWxlRXhwbG9yZXJPYmplY3QgeworCisJcHJpdmF0ZSBGaWxlRXhwbG9yZXJJdGVtW10gdXNlckhvbWU7CisJcHJpdmF0ZSBGaWxlRXhwbG9yZXJJdGVtW10gcm9vbUhvbWU7CisJcHJpdmF0ZSBMb25nIHVzZXJIb21lU2l6ZTsKKwlwcml2YXRlIExvbmcgcm9vbUhvbWVTaXplOworCQorCXB1YmxpYyBGaWxlRXhwbG9yZXJJdGVtW10gZ2V0VXNlckhvbWUoKSB7CisJCXJldHVybiB1c2VySG9tZTsKKwl9CisJcHVibGljIHZvaWQgc2V0VXNlckhvbWUoRmlsZUV4cGxvcmVySXRlbVtdIHVzZXJIb21lKSB7CisJCXRoaXMudXNlckhvbWUgPSB1c2VySG9tZTsKKwl9CisJcHVibGljIEZpbGVFeHBsb3Jlckl0ZW1bXSBnZXRSb29tSG9tZSgpIHsKKwkJcmV0dXJuIHJvb21Ib21lOworCX0KKwlwdWJsaWMgdm9pZCBzZXRSb29tSG9tZShGaWxlRXhwbG9yZXJJdGVtW10gcm9vbUhvbWUpIHsKKwkJdGhpcy5yb29tSG9tZSA9IHJvb21Ib21lOworCX0KKwlwdWJsaWMgTG9uZyBnZXRVc2VySG9tZVNpemUoKSB7CisJCXJldHVybiB1c2VySG9tZVNpemU7CisJfQorCXB1YmxpYyB2b2lkIHNldFVzZXJIb21lU2l6ZShMb25nIHVzZXJIb21lU2l6ZSkgeworCQl0aGlzLnVzZXJIb21lU2l6ZSA9IHVzZXJIb21lU2l6ZTsKKwl9CisJcHVibGljIExvbmcgZ2V0Um9vbUhvbWVTaXplKCkgeworCQlyZXR1cm4gcm9vbUhvbWVTaXplOworCX0KKwlwdWJsaWMgdm9pZCBzZXRSb29tSG9tZVNpemUoTG9uZyByb29tSG9tZVNpemUpIHsKKwkJdGhpcy5yb29tSG9tZVNpemUgPSByb29tSG9tZVNpemU7CisJfQorCQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvZmlsZS9kdG8vTGlicmFyeVByZXNlbmF0aW9uVGh1bWJzLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9maWxlL2R0by9MaWJyYXJ5UHJlc2VuYXRpb25UaHVtYnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjA5OTU2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvZmlsZS9kdG8vTGlicmFyeVByZXNlbmF0aW9uVGh1bWJzLmphdmEKQEAgLTAsMCArMSwzOCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmZpbGUuZHRvOworCitwdWJsaWMgY2xhc3MgTGlicmFyeVByZXNlbmF0aW9uVGh1bWJzIHsKKworCXByaXZhdGUgU3RyaW5nIG5hbWUgPSAiIjsKKwlwcml2YXRlIExpYnJhcnlQcmVzZW50YXRpb25UaHVtYltdIHRodW1icyA9IG51bGw7CisJcHVibGljIFN0cmluZyBnZXROYW1lKCkgeworCQlyZXR1cm4gbmFtZTsKKwl9CisJcHVibGljIHZvaWQgc2V0TmFtZShTdHJpbmcgbmFtZSkgeworCQl0aGlzLm5hbWUgPSBuYW1lOworCX0KKwlwdWJsaWMgTGlicmFyeVByZXNlbnRhdGlvblRodW1iW10gZ2V0VGh1bWJzKCkgeworCQlyZXR1cm4gdGh1bWJzOworCX0KKwlwdWJsaWMgdm9pZCBzZXRUaHVtYnMoTGlicmFyeVByZXNlbnRhdGlvblRodW1iW10gdGh1bWJzKSB7CisJCXRoaXMudGh1bWJzID0gdGh1bWJzOworCX0KKwkKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2ZpbGUvZHRvL0xpYnJhcnlQcmVzZW50YXRpb24uamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2ZpbGUvZHRvL0xpYnJhcnlQcmVzZW50YXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOGMwMTYyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvZmlsZS9kdG8vTGlicmFyeVByZXNlbnRhdGlvbi5qYXZhCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5maWxlLmR0bzsKKworcHVibGljIGNsYXNzIExpYnJhcnlQcmVzZW50YXRpb24geworCisJcHJpdmF0ZSBMaWJyYXJ5UHJlc2VudGF0aW9uRmlsZSBvcmlnaW5hbERvY3VtZW50ID0gbnVsbDsKKwlwcml2YXRlIExpYnJhcnlQcmVzZW50YXRpb25GaWxlIHBkZkRvY3VtZW50ID0gbnVsbDsKKwlwcml2YXRlIExpYnJhcnlQcmVzZW50YXRpb25GaWxlIHN3ZkRvY3VtZW50ID0gbnVsbDsKKwlwcml2YXRlIExpYnJhcnlQcmVzZW5hdGlvblRodW1icyB0aHVtYnMgPSBudWxsOworCQorCXB1YmxpYyBMaWJyYXJ5UHJlc2VudGF0aW9uRmlsZSBnZXRPcmlnaW5hbERvY3VtZW50KCkgeworCQlyZXR1cm4gb3JpZ2luYWxEb2N1bWVudDsKKwl9CisJcHVibGljIHZvaWQgc2V0T3JpZ2luYWxEb2N1bWVudChMaWJyYXJ5UHJlc2VudGF0aW9uRmlsZSBvcmlnaW5hbERvY3VtZW50KSB7CisJCXRoaXMub3JpZ2luYWxEb2N1bWVudCA9IG9yaWdpbmFsRG9jdW1lbnQ7CisJfQorCXB1YmxpYyBMaWJyYXJ5UHJlc2VudGF0aW9uRmlsZSBnZXRQZGZEb2N1bWVudCgpIHsKKwkJcmV0dXJuIHBkZkRvY3VtZW50OworCX0KKwlwdWJsaWMgdm9pZCBzZXRQZGZEb2N1bWVudChMaWJyYXJ5UHJlc2VudGF0aW9uRmlsZSBwZGZEb2N1bWVudCkgeworCQl0aGlzLnBkZkRvY3VtZW50ID0gcGRmRG9jdW1lbnQ7CisJfQorCXB1YmxpYyBMaWJyYXJ5UHJlc2VudGF0aW9uRmlsZSBnZXRTd2ZEb2N1bWVudCgpIHsKKwkJcmV0dXJuIHN3ZkRvY3VtZW50OworCX0KKwlwdWJsaWMgdm9pZCBzZXRTd2ZEb2N1bWVudChMaWJyYXJ5UHJlc2VudGF0aW9uRmlsZSBzd2ZEb2N1bWVudCkgeworCQl0aGlzLnN3ZkRvY3VtZW50ID0gc3dmRG9jdW1lbnQ7CisJfQorCXB1YmxpYyBMaWJyYXJ5UHJlc2VuYXRpb25UaHVtYnMgZ2V0VGh1bWJzKCkgeworCQlyZXR1cm4gdGh1bWJzOworCX0KKwlwdWJsaWMgdm9pZCBzZXRUaHVtYnMoTGlicmFyeVByZXNlbmF0aW9uVGh1bWJzIHRodW1icykgeworCQl0aGlzLnRodW1icyA9IHRodW1iczsKKwl9CisJCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9maWxlL2R0by9MaWJyYXJ5UHJlc2VudGF0aW9uRmlsZS5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvZmlsZS9kdG8vTGlicmFyeVByZXNlbnRhdGlvbkZpbGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTNiMWNkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvZmlsZS9kdG8vTGlicmFyeVByZXNlbnRhdGlvbkZpbGUuamF2YQpAQCAtMCwwICsxLDUzIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuZmlsZS5kdG87CisKK3B1YmxpYyBjbGFzcyBMaWJyYXJ5UHJlc2VudGF0aW9uRmlsZSB7CisKKwlwcml2YXRlIFN0cmluZyBuYW1lID0gbnVsbDsKKwlwcml2YXRlIFN0cmluZyBmaWxlbmFtZSA9IG51bGw7CisJcHJpdmF0ZSBTdHJpbmcgbGFzdG1vZCA9IG51bGw7CisJcHJpdmF0ZSBMb25nIHNpemUgPSBudWxsOworCQorCXB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpIHsKKwkJcmV0dXJuIG5hbWU7CisJfQorCXB1YmxpYyB2b2lkIHNldE5hbWUoU3RyaW5nIG5hbWUpIHsKKwkJdGhpcy5uYW1lID0gbmFtZTsKKwl9CisJcHVibGljIFN0cmluZyBnZXRGaWxlbmFtZSgpIHsKKwkJcmV0dXJuIGZpbGVuYW1lOworCX0KKwlwdWJsaWMgdm9pZCBzZXRGaWxlbmFtZShTdHJpbmcgZmlsZW5hbWUpIHsKKwkJdGhpcy5maWxlbmFtZSA9IGZpbGVuYW1lOworCX0KKwlwdWJsaWMgU3RyaW5nIGdldExhc3Rtb2QoKSB7CisJCXJldHVybiBsYXN0bW9kOworCX0KKwlwdWJsaWMgdm9pZCBzZXRMYXN0bW9kKFN0cmluZyBsYXN0bW9kKSB7CisJCXRoaXMubGFzdG1vZCA9IGxhc3Rtb2Q7CisJfQorCXB1YmxpYyBMb25nIGdldFNpemUoKSB7CisJCXJldHVybiBzaXplOworCX0KKwlwdWJsaWMgdm9pZCBzZXRTaXplKExvbmcgc2l6ZSkgeworCQl0aGlzLnNpemUgPSBzaXplOworCX0KKwkKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2ZpbGUvZHRvL0xpYnJhcnlQcmVzZW50YXRpb25UaHVtYi5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvZmlsZS9kdG8vTGlicmFyeVByZXNlbnRhdGlvblRodW1iLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTMwM2RmYwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2ZpbGUvZHRvL0xpYnJhcnlQcmVzZW50YXRpb25UaHVtYi5qYXZhCkBAIC0wLDAgKzEsNTMgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5maWxlLmR0bzsKKworcHVibGljIGNsYXNzIExpYnJhcnlQcmVzZW50YXRpb25UaHVtYiB7CisJCisJcHJpdmF0ZSBTdHJpbmcgbmFtZSA9IG51bGw7CisJcHJpdmF0ZSBTdHJpbmcgZmlsZW5hbWUgPSBudWxsOworCXByaXZhdGUgU3RyaW5nIGxhc3Rtb2QgPSBudWxsOworCXByaXZhdGUgTG9uZyBzaXplID0gbnVsbDsKKwkKKwlwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7CisJCXJldHVybiBuYW1lOworCX0KKwlwdWJsaWMgdm9pZCBzZXROYW1lKFN0cmluZyBuYW1lKSB7CisJCXRoaXMubmFtZSA9IG5hbWU7CisJfQorCXB1YmxpYyBTdHJpbmcgZ2V0RmlsZW5hbWUoKSB7CisJCXJldHVybiBmaWxlbmFtZTsKKwl9CisJcHVibGljIHZvaWQgc2V0RmlsZW5hbWUoU3RyaW5nIGZpbGVuYW1lKSB7CisJCXRoaXMuZmlsZW5hbWUgPSBmaWxlbmFtZTsKKwl9CisJcHVibGljIFN0cmluZyBnZXRMYXN0bW9kKCkgeworCQlyZXR1cm4gbGFzdG1vZDsKKwl9CisJcHVibGljIHZvaWQgc2V0TGFzdG1vZChTdHJpbmcgbGFzdG1vZCkgeworCQl0aGlzLmxhc3Rtb2QgPSBsYXN0bW9kOworCX0KKwlwdWJsaWMgTG9uZyBnZXRTaXplKCkgeworCQlyZXR1cm4gc2l6ZTsKKwl9CisJcHVibGljIHZvaWQgc2V0U2l6ZShMb25nIHNpemUpIHsKKwkJdGhpcy5zaXplID0gc2l6ZTsKKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2ZsdnJlY29yZC9GbHZSZWNvcmRpbmdEYW8uamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2ZsdnJlY29yZC9GbHZSZWNvcmRpbmdEYW8uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjE1MTgyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvZmx2cmVjb3JkL0ZsdlJlY29yZGluZ0Rhby5qYXZhCkBAIC0wLDAgKzEsNTg3IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuZmx2cmVjb3JkOworCitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHlNYW5hZ2VyOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk5vUmVzdWx0RXhjZXB0aW9uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlBlcnNpc3RlbmNlQ29udGV4dDsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UeXBlZFF1ZXJ5OworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmZsdnJlY29yZC5GbHZSZWNvcmRpbmc7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsudHJhbnNhY3Rpb24uYW5ub3RhdGlvbi5UcmFuc2FjdGlvbmFsOworCisvKioKKyAqIEBhdXRob3Igc2ViYXN0aWFud2FnbmVyCisgKgorICovCitAVHJhbnNhY3Rpb25hbAorcHVibGljIGNsYXNzIEZsdlJlY29yZGluZ0RhbyB7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcihGbHZSZWNvcmRpbmdEYW8uY2xhc3MsCisJCQlPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisJQFBlcnNpc3RlbmNlQ29udGV4dAorCXByaXZhdGUgRW50aXR5TWFuYWdlciBlbTsKKwkKKwlwdWJsaWMgRmx2UmVjb3JkaW5nIGdldEZsdlJlY29yZGluZ0J5SWQoTG9uZyBmbHZSZWNvcmRpbmdJZCkgeworCQl0cnkgeyAKKwkJCQorCQkJU3RyaW5nIGhxbCA9ICJTRUxFQ1QgYyBGUk9NIEZsdlJlY29yZGluZyBjICIgKworCQkJCQkiV0hFUkUgYy5mbHZSZWNvcmRpbmdJZCA9IDpmbHZSZWNvcmRpbmdJZCI7CisJCQkKKwkJCVR5cGVkUXVlcnk8Rmx2UmVjb3JkaW5nPiBxdWVyeSA9IGVtLmNyZWF0ZVF1ZXJ5KGhxbCwgRmx2UmVjb3JkaW5nLmNsYXNzKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiZmx2UmVjb3JkaW5nSWQiLCBmbHZSZWNvcmRpbmdJZCk7CisJCQkKKwkJCUZsdlJlY29yZGluZyBmbHZSZWNvcmRpbmcgPSBudWxsOworCQkJdHJ5IHsKKwkJCQlmbHZSZWNvcmRpbmcgPSBxdWVyeS5nZXRTaW5nbGVSZXN1bHQoKTsKKwkJICAgIH0gY2F0Y2ggKE5vUmVzdWx0RXhjZXB0aW9uIGV4KSB7CisJCSAgICB9CisJCQlyZXR1cm4gZmx2UmVjb3JkaW5nOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRGbHZSZWNvcmRpbmdCeUlkXTogIixleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBGbHZSZWNvcmRpbmcgZ2V0UmVjb3JkaW5nQnlIYXNoKFN0cmluZyBoYXNoKSB7CisJCXRyeSB7CisJCQlUeXBlZFF1ZXJ5PEZsdlJlY29yZGluZz4gcXVlcnkgPSBlbS5jcmVhdGVOYW1lZFF1ZXJ5KCJnZXRSZWNvcmRpbmdCeUhhc2giLCBGbHZSZWNvcmRpbmcuY2xhc3MpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJmaWxlSGFzaCIsIGhhc2gpOworCQkJCisJCQl0cnkgeworCQkJCXJldHVybiBxdWVyeS5nZXRTaW5nbGVSZXN1bHQoKTsKKwkJICAgIH0gY2F0Y2ggKE5vUmVzdWx0RXhjZXB0aW9uIGV4KSB7CisJCSAgICAJLy9ub29wCisJCSAgICB9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldFJlY29yZGluZ0J5SGFzaF06ICIsZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgTGlzdDxGbHZSZWNvcmRpbmc+IGdldEZsdlJlY29yZGluZ3MoKSB7CisJCXRyeSB7IAorCQkJCisJCQlTdHJpbmcgaHFsID0gIlNFTEVDVCBjIEZST00gRmx2UmVjb3JkaW5nIGMgIiArCisJCQkJCQkJIldIRVJFIGMuZGVsZXRlZCA8PiA6ZGVsZXRlZCAiOworCQkJCisJCQlUeXBlZFF1ZXJ5PEZsdlJlY29yZGluZz4gcXVlcnkgPSBlbS5jcmVhdGVRdWVyeShocWwsIEZsdlJlY29yZGluZy5jbGFzcyk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImRlbGV0ZWQiLCB0cnVlKTsKKwkJCQorCQkJTGlzdDxGbHZSZWNvcmRpbmc+IGZsdlJlY29yZGluZ3MgPSBxdWVyeS5nZXRSZXN1bHRMaXN0KCk7CisJCQkKKwkJCXJldHVybiBmbHZSZWNvcmRpbmdzOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRGbHZSZWNvcmRpbmdzXTogIixleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKwkKKwkKKwlwdWJsaWMgTGlzdDxGbHZSZWNvcmRpbmc+IGdldEZsdlJlY29yZGluZ0J5RXh0ZXJuYWxVc2VySWQoU3RyaW5nIGV4dGVybmFsVXNlcklkKSB7CisJCXRyeSB7IAorCQkJCisJCQlsb2cuZGVidWcoImdldEZsdlJlY29yZGluZ0J5RXh0ZXJuYWxVc2VySWQgOmV4dGVybmFsVXNlcklkOiAiK2V4dGVybmFsVXNlcklkKTsKKwkJCQorCQkJU3RyaW5nIGhxbCA9ICJTRUxFQ1QgYyBGUk9NIEZsdlJlY29yZGluZyBjLCBSb29tIHIsIFVzZXIgdSAiICsKKwkJCQkJIldIRVJFIGMucm9vbV9pZCA9IHIucm9vbXNfaWQgIiArCisJCQkJCSJBTkQgYy5pbnNlcnRlZEJ5ID0gdS51c2VyX2lkICIgKworCQkJCQkiQU5EIHUuZXh0ZXJuYWxVc2VySWQgTElLRSA6ZXh0ZXJuYWxVc2VySWQgIiArCisJCQkJCSJBTkQgYy5kZWxldGVkIDw+IDpkZWxldGVkICI7CisJCQkKKwkJCVR5cGVkUXVlcnk8Rmx2UmVjb3JkaW5nPiBxdWVyeSA9IGVtLmNyZWF0ZVF1ZXJ5KGhxbCwgRmx2UmVjb3JkaW5nLmNsYXNzKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiZXh0ZXJuYWxVc2VySWQiLCBleHRlcm5hbFVzZXJJZCk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImRlbGV0ZWQiLCB0cnVlKTsKKwkJCQorCQkJTGlzdDxGbHZSZWNvcmRpbmc+IGZsdlJlY29yZGluZ0xpc3QgPSBxdWVyeS5nZXRSZXN1bHRMaXN0KCk7CisJCQkJCQkKKwkJCWxvZy5kZWJ1ZygiZ2V0Rmx2UmVjb3JkaW5nQnlFeHRlcm5hbFJvb21UeXBlIDo6ICIrZmx2UmVjb3JkaW5nTGlzdC5zaXplKCkpOworCQkJCisJCQlyZXR1cm4gZmx2UmVjb3JkaW5nTGlzdDsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZ2V0Rmx2UmVjb3JkaW5nQnlFeHRlcm5hbFJvb21UeXBlXTogIixleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKwkKKwlwdWJsaWMgTGlzdDxGbHZSZWNvcmRpbmc+IGdldEZsdlJlY29yZGluZ0J5RXh0ZXJuYWxSb29tVHlwZUFuZENyZWF0b3IoU3RyaW5nIGV4dGVybmFsUm9vbVR5cGUsIExvbmcgaW5zZXJ0ZWRCeSkgeworCQl0cnkgeyAKKwkJCQorCQkJbG9nLmRlYnVnKCJnZXRGbHZSZWNvcmRpbmdCeUV4dGVybmFsUm9vbVR5cGUgOmV4dGVybmFsUm9vbVR5cGU6ICIrZXh0ZXJuYWxSb29tVHlwZSk7CisJCQkKKwkJCVN0cmluZyBocWwgPSAiU0VMRUNUIGMgRlJPTSBGbHZSZWNvcmRpbmcgYywgUm9vbSByICIgKworCQkJCQkiV0hFUkUgYy5yb29tX2lkID0gci5yb29tc19pZCAiICsKKwkJCQkJIkFORCByLmV4dGVybmFsUm9vbVR5cGUgTElLRSA6ZXh0ZXJuYWxSb29tVHlwZSAiICsKKwkJCQkJIkFORCBjLmluc2VydGVkQnkgTElLRSA6aW5zZXJ0ZWRCeSAiICsKKwkJCQkJIkFORCBjLmRlbGV0ZWQgPD4gOmRlbGV0ZWQgIjsKKwkJCQorCQkJVHlwZWRRdWVyeTxGbHZSZWNvcmRpbmc+IHF1ZXJ5ID0gZW0uY3JlYXRlUXVlcnkoaHFsLCBGbHZSZWNvcmRpbmcuY2xhc3MpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJleHRlcm5hbFJvb21UeXBlIiwgZXh0ZXJuYWxSb29tVHlwZSk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImluc2VydGVkQnkiLCBpbnNlcnRlZEJ5KTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiZGVsZXRlZCIsIHRydWUpOworCQkJCisJCQlMaXN0PEZsdlJlY29yZGluZz4gZmx2UmVjb3JkaW5nTGlzdCA9IHF1ZXJ5LmdldFJlc3VsdExpc3QoKTsKKwkJCQkJCQorCQkJbG9nLmRlYnVnKCJnZXRGbHZSZWNvcmRpbmdCeUV4dGVybmFsUm9vbVR5cGUgOjogIitmbHZSZWNvcmRpbmdMaXN0LnNpemUoKSk7CisJCQkKKwkJCXJldHVybiBmbHZSZWNvcmRpbmdMaXN0OworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRGbHZSZWNvcmRpbmdCeUV4dGVybmFsUm9vbVR5cGVdOiAiLGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCQorCXB1YmxpYyBMaXN0PEZsdlJlY29yZGluZz4gZ2V0QWxsRmx2UmVjb3JkaW5ncygpIHsKKwkJdHJ5IHsgCisJCQlTdHJpbmcgaHFsID0gIlNFTEVDVCBjIEZST00gRmx2UmVjb3JkaW5nIGMgTEVGVCBKT0lOIEZFVENIIGMuZmx2UmVjb3JkaW5nTWV0YURhdGEiOworCQkJCisJCQlUeXBlZFF1ZXJ5PEZsdlJlY29yZGluZz4gcXVlcnkgPSBlbS5jcmVhdGVRdWVyeShocWwsIEZsdlJlY29yZGluZy5jbGFzcyk7CisJCQkKKwkJCXJldHVybiBxdWVyeS5nZXRSZXN1bHRMaXN0KCk7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldEZsdlJlY29yZGluZ3NdOiAiLGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCQorCXB1YmxpYyBMaXN0PEZsdlJlY29yZGluZz4gZ2V0Rmx2UmVjb3JkaW5nQnlFeHRlcm5hbFJvb21UeXBlKFN0cmluZyBleHRlcm5hbFJvb21UeXBlKSB7CisJCXRyeSB7IAorCQkJCisJCQlsb2cuZGVidWcoImdldEZsdlJlY29yZGluZ0J5RXh0ZXJuYWxSb29tVHlwZSA6ZXh0ZXJuYWxSb29tVHlwZTogIitleHRlcm5hbFJvb21UeXBlKTsKKwkJCQorCQkJU3RyaW5nIGhxbCA9ICJTRUxFQ1QgYyBGUk9NIEZsdlJlY29yZGluZyBjLCBSb29tIHIgIiArCisJCQkJCSJXSEVSRSBjLnJvb21faWQgPSByLnJvb21zX2lkICIgKworCQkJCQkiQU5EIHIuZXh0ZXJuYWxSb29tVHlwZSBMSUtFIDpleHRlcm5hbFJvb21UeXBlICIgKworCQkJCQkiQU5EIGMuZGVsZXRlZCA8PiA6ZGVsZXRlZCAiOworCQkJCisJCQlUeXBlZFF1ZXJ5PEZsdlJlY29yZGluZz4gcXVlcnkgPSBlbS5jcmVhdGVRdWVyeShocWwsIEZsdlJlY29yZGluZy5jbGFzcyk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImV4dGVybmFsUm9vbVR5cGUiLCBleHRlcm5hbFJvb21UeXBlKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiZGVsZXRlZCIsIHRydWUpOworCQkJCisJCQlMaXN0PEZsdlJlY29yZGluZz4gZmx2UmVjb3JkaW5nTGlzdCA9IHF1ZXJ5LmdldFJlc3VsdExpc3QoKTsKKwkJCQorCQkJbG9nLmRlYnVnKCJnZXRGbHZSZWNvcmRpbmdCeUV4dGVybmFsUm9vbVR5cGUgOjogIitmbHZSZWNvcmRpbmdMaXN0LnNpemUoKSk7CisJCQkKKwkJCXJldHVybiBmbHZSZWNvcmRpbmdMaXN0OworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRGbHZSZWNvcmRpbmdCeUV4dGVybmFsUm9vbVR5cGVdOiAiLGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCQorCXB1YmxpYyBMaXN0PEZsdlJlY29yZGluZz4gZ2V0Rmx2UmVjb3JkaW5nc1B1YmxpYygpIHsKKwkJdHJ5IHsKKwkJCQorCQkJU3RyaW5nIGhxbCA9ICJTRUxFQ1QgYyBGUk9NIEZsdlJlY29yZGluZyBjICIgKworCQkJCQkiV0hFUkUgYy5kZWxldGVkIDw+IDpkZWxldGVkICIgKworCQkJCQkiQU5EIChjLm93bmVySWQgSVMgTlVMTCBPUiBjLm93bmVySWQgPSAwKSAgIiArCisJCQkJCSJBTkQgKGMucGFyZW50RmlsZUV4cGxvcmVySXRlbUlkIElTIE5VTEwgT1IgYy5wYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQgPSAwKSAiICsKKwkJCQkJIk9SREVSIEJZIGMuaXNGb2xkZXIgREVTQywgYy5maWxlTmFtZSAiOworCQkJCisJCQlUeXBlZFF1ZXJ5PEZsdlJlY29yZGluZz4gcXVlcnkgPSBlbS5jcmVhdGVRdWVyeShocWwsIEZsdlJlY29yZGluZy5jbGFzcyk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImRlbGV0ZWQiLCB0cnVlKTsKKwkJCQorCQkJTGlzdDxGbHZSZWNvcmRpbmc+IGZsdlJlY29yZGluZ0xpc3QgPSBxdWVyeS5nZXRSZXN1bHRMaXN0KCk7CisJCQlyZXR1cm4gZmx2UmVjb3JkaW5nTGlzdDsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZ2V0Rmx2UmVjb3JkaW5nc1B1YmxpY106ICIsZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisJCisJcHVibGljIExpc3Q8Rmx2UmVjb3JkaW5nPiBnZXRGbHZSZWNvcmRpbmdSb290QnlQdWJsaWMoTG9uZyBvcmdhbml6YXRpb25faWQpIHsKKwkJdHJ5IHsKKwkJCQorCQkJU3RyaW5nIGhxbCA9ICJTRUxFQ1QgYyBGUk9NIEZsdlJlY29yZGluZyBjICIgKworCQkJCQkiV0hFUkUgYy5kZWxldGVkIDw+IDpkZWxldGVkICIgKworCQkJCQkiQU5EIGMub3duZXJJZCBJUyBOVUxMICIgKworCQkJCQkiQU5EIGMub3JnYW5pemF0aW9uX2lkID0gOm9yZ2FuaXphdGlvbl9pZCAiICsKKwkJCQkJIkFORCAoYy5wYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQgSVMgTlVMTCBPUiBjLnBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCA9IDApICIgKworCQkJCQkiT1JERVIgQlkgYy5pc0ZvbGRlciBERVNDLCBjLmZpbGVOYW1lICI7CisJCQkKKwkJCVR5cGVkUXVlcnk8Rmx2UmVjb3JkaW5nPiBxdWVyeSA9IGVtLmNyZWF0ZVF1ZXJ5KGhxbCwgRmx2UmVjb3JkaW5nLmNsYXNzKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigib3JnYW5pemF0aW9uX2lkIiwgb3JnYW5pemF0aW9uX2lkKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiZGVsZXRlZCIsIHRydWUpOworCQkJCisJCQlMaXN0PEZsdlJlY29yZGluZz4gZmx2UmVjb3JkaW5nTGlzdCA9IHF1ZXJ5LmdldFJlc3VsdExpc3QoKTsKKwkJCQorCQkJcmV0dXJuIGZsdlJlY29yZGluZ0xpc3Q7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldEZsdlJlY29yZGluZ0J5T3duZXJdOiAiLGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCQorCXB1YmxpYyBMaXN0PEZsdlJlY29yZGluZz4gZ2V0Rmx2UmVjb3JkaW5nUm9vdEJ5T3duZXIoTG9uZyBvd25lcklkKSB7CisJCXRyeSB7CisJCQkKKwkJCVN0cmluZyBocWwgPSAiU0VMRUNUIGMgRlJPTSBGbHZSZWNvcmRpbmcgYyAiICsKKwkJCQkJIldIRVJFIGMuZGVsZXRlZCA8PiA6ZGVsZXRlZCAiICsKKwkJCQkJIkFORCBjLm93bmVySWQgPSA6b3duZXJJZCAiICsKKwkJCQkJIkFORCAoYy5wYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQgSVMgTlVMTCBPUiBjLnBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCA9IDApICIgKworCQkJCQkiT1JERVIgQlkgYy5pc0ZvbGRlciBERVNDLCBjLmZpbGVOYW1lICI7CisJCQkKKwkJCVR5cGVkUXVlcnk8Rmx2UmVjb3JkaW5nPiBxdWVyeSA9IGVtLmNyZWF0ZVF1ZXJ5KGhxbCwgRmx2UmVjb3JkaW5nLmNsYXNzKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiZGVsZXRlZCIsIHRydWUpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJvd25lcklkIixvd25lcklkKTsKKwkJCQorCQkJTGlzdDxGbHZSZWNvcmRpbmc+IGZsdlJlY29yZGluZ0xpc3QgPSBxdWVyeS5nZXRSZXN1bHRMaXN0KCk7CisJCQkKKwkJCXJldHVybiBmbHZSZWNvcmRpbmdMaXN0OworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRGbHZSZWNvcmRpbmdCeU93bmVyXTogIixleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKwkKKwlwdWJsaWMgTGlzdDxGbHZSZWNvcmRpbmc+IGdldEZsdlJlY29yZGluZ0J5T3duZXIoTG9uZyBvd25lcklkLCBMb25nIHBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCkgeworCQl0cnkgeworCQkJCisJCQlTdHJpbmcgaHFsID0gIlNFTEVDVCBjIEZST00gRmx2UmVjb3JkaW5nIGMgIiArCisJCQkJCSJXSEVSRSBjLmRlbGV0ZWQgPD4gOmRlbGV0ZWQgIiArCisJCQkJCSJBTkQgYy5vd25lcklkID0gOm93bmVySWQgIiArCisJCQkJCSJBTkQgKGMucGFyZW50RmlsZUV4cGxvcmVySXRlbUlkIElTIE5VTEwgT1IgYy5wYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQgPSA6cGFyZW50RmlsZUV4cGxvcmVySXRlbUlkKSIgKworCQkJCQkiT1JERVIgQlkgYy5pc0ZvbGRlciBERVNDLCBjLmZpbGVOYW1lICI7CisJCQkKKwkJCVR5cGVkUXVlcnk8Rmx2UmVjb3JkaW5nPiBxdWVyeSA9IGVtLmNyZWF0ZVF1ZXJ5KGhxbCwgRmx2UmVjb3JkaW5nLmNsYXNzKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiZGVsZXRlZCIsIHRydWUpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJvd25lcklkIixvd25lcklkKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigicGFyZW50RmlsZUV4cGxvcmVySXRlbUlkIiwgcGFyZW50RmlsZUV4cGxvcmVySXRlbUlkKTsKKwkJCQorCQkJTGlzdDxGbHZSZWNvcmRpbmc+IGZsdlJlY29yZGluZ0xpc3QgPSBxdWVyeS5nZXRSZXN1bHRMaXN0KCk7CisJCQkKKwkJCXJldHVybiBmbHZSZWNvcmRpbmdMaXN0OworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRGbHZSZWNvcmRpbmdCeU93bmVyXTogIixleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKwkKKwlwdWJsaWMgTGlzdDxGbHZSZWNvcmRpbmc+IGdldEZsdlJlY29yZGluZ0J5Um9vbUlkKExvbmcgcm9vbV9pZCkgeworCQl0cnkgeworCQkJCisJCQlTdHJpbmcgaHFsID0gIlNFTEVDVCBjIEZST00gRmx2UmVjb3JkaW5nIGMgIiArCisJCQkJCSJXSEVSRSBjLmRlbGV0ZWQgPD4gOmRlbGV0ZWQgIiArCisJCQkJCSJBTkQgYy5yb29tX2lkID0gOnJvb21faWQgIiArCisJCQkJCSJPUkRFUiBCWSBjLmlzRm9sZGVyIERFU0MsIGMuZmlsZU5hbWUgIjsKKwkJCQorCQkJVHlwZWRRdWVyeTxGbHZSZWNvcmRpbmc+IHF1ZXJ5ID0gZW0uY3JlYXRlUXVlcnkoaHFsLCBGbHZSZWNvcmRpbmcuY2xhc3MpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJkZWxldGVkIiwgdHJ1ZSk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInJvb21faWQiLHJvb21faWQpOworCQkJCisJCQlMaXN0PEZsdlJlY29yZGluZz4gZmx2UmVjb3JkaW5nTGlzdCA9IHF1ZXJ5LmdldFJlc3VsdExpc3QoKTsKKwkJCQorCQkJcmV0dXJuIGZsdlJlY29yZGluZ0xpc3Q7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldEZsdlJlY29yZGluZ0J5T3duZXJdOiAiLGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIExpc3Q8Rmx2UmVjb3JkaW5nPiBnZXRGbHZSZWNvcmRpbmdCeVBhcmVudChMb25nIHBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCkgeworCQl0cnkgeworCQkJCisJCQlTdHJpbmcgaHFsID0gIlNFTEVDVCBjIEZST00gRmx2UmVjb3JkaW5nIGMgIiArCisJCQkJCSJXSEVSRSBjLmRlbGV0ZWQgPD4gOmRlbGV0ZWQgIiArCisJCQkJCSJBTkQgYy5wYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQgPSA6cGFyZW50RmlsZUV4cGxvcmVySXRlbUlkICIgKworCQkJCQkiT1JERVIgQlkgYy5pc0ZvbGRlciBERVNDLCBjLmZpbGVOYW1lICI7CisJCQkKKwkJCVR5cGVkUXVlcnk8Rmx2UmVjb3JkaW5nPiBxdWVyeSA9IGVtLmNyZWF0ZVF1ZXJ5KGhxbCwgRmx2UmVjb3JkaW5nLmNsYXNzKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiZGVsZXRlZCIsIHRydWUpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJwYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQiLCBwYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQpOworCQkJCisJCQlMaXN0PEZsdlJlY29yZGluZz4gZmx2UmVjb3JkaW5nTGlzdCA9IHF1ZXJ5LmdldFJlc3VsdExpc3QoKTsKKwkJCQorCQkJcmV0dXJuIGZsdlJlY29yZGluZ0xpc3Q7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldEZsdlJlY29yZGluZ0J5UGFyZW50XTogIixleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKwkKKwlwdWJsaWMgTG9uZyBhZGRGbHZGb2xkZXJSZWNvcmRpbmcoU3RyaW5nIGZpbGVIYXNoLCBTdHJpbmcgZmlsZU5hbWUsIExvbmcgZmlsZVNpemUsIExvbmcgdXNlcl9pZCwgCisJCQlMb25nIHJvb21faWQsIERhdGUgcmVjb3JkU3RhcnQsIERhdGUgcmVjb3JkRW5kLCBMb25nIG93bmVySWQsIFN0cmluZyBjb21tZW50LCAKKwkJCUxvbmcgIHBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCwgTG9uZyBvcmdhbml6YXRpb25faWQpIHsKKwkJdHJ5IHsgCisJCQkKKwkJCUZsdlJlY29yZGluZyBmbHZSZWNvcmRpbmcgPSBuZXcgRmx2UmVjb3JkaW5nKCk7CisJCQkKKwkJCWZsdlJlY29yZGluZy5zZXRQYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQocGFyZW50RmlsZUV4cGxvcmVySXRlbUlkKTsKKwkJCQorCQkJZmx2UmVjb3JkaW5nLnNldERlbGV0ZWQoZmFsc2UpOworCQkJZmx2UmVjb3JkaW5nLnNldEZpbGVIYXNoKGZpbGVIYXNoKTsKKwkJCWZsdlJlY29yZGluZy5zZXRGaWxlTmFtZShmaWxlTmFtZSk7CisJCQlmbHZSZWNvcmRpbmcuc2V0RmlsZVNpemUoZmlsZVNpemUpOworCQkJZmx2UmVjb3JkaW5nLnNldEluc2VydGVkKG5ldyBEYXRlKCkpOworCQkJZmx2UmVjb3JkaW5nLnNldEluc2VydGVkQnkodXNlcl9pZCk7CisJCQlmbHZSZWNvcmRpbmcuc2V0SXNGb2xkZXIodHJ1ZSk7CisJCQlmbHZSZWNvcmRpbmcuc2V0SXNJbWFnZShmYWxzZSk7CisJCQlmbHZSZWNvcmRpbmcuc2V0SXNQcmVzZW50YXRpb24oZmFsc2UpOworCQkJZmx2UmVjb3JkaW5nLnNldElzUmVjb3JkaW5nKHRydWUpOworCQkJZmx2UmVjb3JkaW5nLnNldENvbW1lbnQoY29tbWVudCk7CisJCQlmbHZSZWNvcmRpbmcuc2V0T3JnYW5pemF0aW9uX2lkKG9yZ2FuaXphdGlvbl9pZCk7CisJCQkKKwkJCWZsdlJlY29yZGluZy5zZXRSb29tX2lkKHJvb21faWQpOworCQkJZmx2UmVjb3JkaW5nLnNldFJlY29yZFN0YXJ0KHJlY29yZFN0YXJ0KTsKKwkJCWZsdlJlY29yZGluZy5zZXRSZWNvcmRFbmQocmVjb3JkRW5kKTsKKwkJCQorCQkJZmx2UmVjb3JkaW5nLnNldE93bmVySWQob3duZXJJZCk7CisJCQkKKwkJCWZsdlJlY29yZGluZyA9IGVtLm1lcmdlKGZsdlJlY29yZGluZyk7CisJCQlMb25nIGZsdlJlY29yZGluZ0lkID0gZmx2UmVjb3JkaW5nLmdldEZsdlJlY29yZGluZ0lkKCk7CisJCQkKKwkJCXJldHVybiBmbHZSZWNvcmRpbmdJZDsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbYWRkRmx2UmVjb3JkaW5nXTogIixleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKwkKKwlwdWJsaWMgTG9uZyBhZGRGbHZSZWNvcmRpbmcoU3RyaW5nIGZpbGVIYXNoLCBTdHJpbmcgZmlsZU5hbWUsIExvbmcgZmlsZVNpemUsIExvbmcgdXNlcl9pZCwgCisJCQlMb25nIHJvb21faWQsIERhdGUgcmVjb3JkU3RhcnQsIERhdGUgcmVjb3JkRW5kLCBMb25nIG93bmVySWQsIFN0cmluZyBjb21tZW50LCAKKwkJCVN0cmluZyByZWNvcmRlclN0cmVhbUlkLCBJbnRlZ2VyIHdpZHRoLCBJbnRlZ2VyIGhlaWdodCwgQm9vbGVhbiBpc0ludGVydmlldykgeworCQl0cnkgeyAKKwkJCQorCQkJRmx2UmVjb3JkaW5nIGZsdlJlY29yZGluZyA9IG5ldyBGbHZSZWNvcmRpbmcoKTsKKwkJCQorCQkJZmx2UmVjb3JkaW5nLnNldERlbGV0ZWQoZmFsc2UpOworCQkJZmx2UmVjb3JkaW5nLnNldEZpbGVIYXNoKGZpbGVIYXNoKTsKKwkJCWZsdlJlY29yZGluZy5zZXRGaWxlTmFtZShmaWxlTmFtZSk7CisJCQlmbHZSZWNvcmRpbmcuc2V0RmlsZVNpemUoZmlsZVNpemUpOworCQkJZmx2UmVjb3JkaW5nLnNldEluc2VydGVkKG5ldyBEYXRlKCkpOworCQkJZmx2UmVjb3JkaW5nLnNldEluc2VydGVkQnkodXNlcl9pZCk7CisJCQlmbHZSZWNvcmRpbmcuc2V0SXNGb2xkZXIoZmFsc2UpOworCQkJZmx2UmVjb3JkaW5nLnNldElzSW1hZ2UoZmFsc2UpOworCQkJZmx2UmVjb3JkaW5nLnNldElzUHJlc2VudGF0aW9uKGZhbHNlKTsKKwkJCWZsdlJlY29yZGluZy5zZXRJc1JlY29yZGluZyh0cnVlKTsKKwkJCWZsdlJlY29yZGluZy5zZXRDb21tZW50KGNvbW1lbnQpOworCQkJZmx2UmVjb3JkaW5nLnNldElzSW50ZXJ2aWV3KGlzSW50ZXJ2aWV3KTsKKwkJCQorCQkJZmx2UmVjb3JkaW5nLnNldFJvb21faWQocm9vbV9pZCk7CisJCQlmbHZSZWNvcmRpbmcuc2V0UmVjb3JkU3RhcnQocmVjb3JkU3RhcnQpOworCQkJZmx2UmVjb3JkaW5nLnNldFJlY29yZEVuZChyZWNvcmRFbmQpOworCQkJCisJCQlmbHZSZWNvcmRpbmcuc2V0V2lkdGgod2lkdGgpOworCQkJZmx2UmVjb3JkaW5nLnNldEhlaWdodChoZWlnaHQpOworCQkJCisJCQlmbHZSZWNvcmRpbmcuc2V0T3duZXJJZChvd25lcklkKTsKKwkJCQorCQkJZmx2UmVjb3JkaW5nID0gZW0ubWVyZ2UoZmx2UmVjb3JkaW5nKTsKKwkJCUxvbmcgZmx2UmVjb3JkaW5nSWQgPSBmbHZSZWNvcmRpbmcuZ2V0Rmx2UmVjb3JkaW5nSWQoKTsKKwkJCQorCQkJcmV0dXJuIGZsdlJlY29yZGluZ0lkOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIlthZGRGbHZSZWNvcmRpbmddOiAiLGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCQorCXB1YmxpYyBMb25nIGFkZEZsdlJlY29yZGluZ09iaihGbHZSZWNvcmRpbmcgZmx2UmVjb3JkaW5nKSB7CisJCXRyeSB7IAorCQkJCisJCQlmbHZSZWNvcmRpbmcgPSBlbS5tZXJnZShmbHZSZWNvcmRpbmcpOworCQkJTG9uZyBmbHZSZWNvcmRpbmdJZCA9IGZsdlJlY29yZGluZy5nZXRGbHZSZWNvcmRpbmdJZCgpOworCQkJCisJCQlyZXR1cm4gZmx2UmVjb3JkaW5nSWQ7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2FkZEZsdlJlY29yZGluZ106ICIsZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisJCisJcHVibGljIHZvaWQgdXBkYXRlRmx2UmVjb3JkaW5nT3JnYW5pemF0aW9uKExvbmcgZmx2UmVjb3JkaW5nSWQsIExvbmcgb3JnYW5pemF0aW9uX2lkKSB7CisJCXRyeSB7CisJCQkKKwkJCUZsdlJlY29yZGluZyBmSWQgPSB0aGlzLmdldEZsdlJlY29yZGluZ0J5SWQoZmx2UmVjb3JkaW5nSWQpOworCQkJCisJCQlmSWQuc2V0T3JnYW5pemF0aW9uX2lkKG9yZ2FuaXphdGlvbl9pZCk7CisJCQkKKwkJCWlmIChmSWQuZ2V0Rmx2UmVjb3JkaW5nSWQoKSA9PSAwKSB7CisJCQkJZW0ucGVyc2lzdChmSWQpOworCQkgICAgfSBlbHNlIHsKKwkJICAgIAlpZiAoIWVtLmNvbnRhaW5zKGZJZCkpIHsKKwkJICAgIAkJZW0ubWVyZ2UoZklkKTsKKwkJCSAgICB9CisJCQl9CisJCQkKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZGVsZXRlRmlsZUV4cGxvcmVySXRlbV06ICIsZXgyKTsKKwkJfQorCX0KKwkKKwlwdWJsaWMgdm9pZCB1cGRhdGVGbHZSZWNvcmRpbmdFbmRUaW1lKExvbmcgZmx2UmVjb3JkaW5nSWQsIERhdGUgcmVjb3JkRW5kLCBMb25nIG9yZ2FuaXphdGlvbl9pZCkgeworCQl0cnkgeworCQkJCisJCQlGbHZSZWNvcmRpbmcgZklkID0gdGhpcy5nZXRGbHZSZWNvcmRpbmdCeUlkKGZsdlJlY29yZGluZ0lkKTsKKwkJCQorCQkJZklkLnNldFByb2dyZXNzUG9zdFByb2Nlc3NpbmcoMCk7CisJCQlmSWQuc2V0UmVjb3JkRW5kKHJlY29yZEVuZCk7CisJCQlmSWQuc2V0T3JnYW5pemF0aW9uX2lkKG9yZ2FuaXphdGlvbl9pZCk7CisJCQkKKwkJCWlmIChmSWQuZ2V0Rmx2UmVjb3JkaW5nSWQoKSA9PSAwKSB7CisJCQkJZW0ucGVyc2lzdChmSWQpOworCQkgICAgfSBlbHNlIHsKKwkJICAgIAlpZiAoIWVtLmNvbnRhaW5zKGZJZCkpIHsKKwkJICAgIAkJZW0ubWVyZ2UoZklkKTsKKwkJCSAgICB9CisJCQl9CisJCQkKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZGVsZXRlRmlsZUV4cGxvcmVySXRlbV06ICIsZXgyKTsKKwkJfQorCX0KKwkKKwlwdWJsaWMgdm9pZCB1cGRhdGVGbHZSZWNvcmRpbmdQcm9ncmVzcyhMb25nIGZsdlJlY29yZGluZ0lkLCBJbnRlZ2VyIHByb2dyZXNzKSB7CisJCXRyeSB7CisJCQkKKwkJCUZsdlJlY29yZGluZyBmSWQgPSB0aGlzLmdldEZsdlJlY29yZGluZ0J5SWQoZmx2UmVjb3JkaW5nSWQpOworCQkJCisJCQlmSWQuc2V0UHJvZ3Jlc3NQb3N0UHJvY2Vzc2luZyhwcm9ncmVzcyk7CisJCQkKKwkJCWlmIChmSWQuZ2V0Rmx2UmVjb3JkaW5nSWQoKSA9PSAwKSB7CisJCQkJZW0ucGVyc2lzdChmSWQpOworCQkgICAgfSBlbHNlIHsKKwkJICAgIAlpZiAoIWVtLmNvbnRhaW5zKGZJZCkpIHsKKwkJICAgIAkJZW0ubWVyZ2UoZklkKTsKKwkJCSAgICB9CisJCQl9CisJCQkKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZGVsZXRlRmlsZUV4cGxvcmVySXRlbV06ICIsZXgyKTsKKwkJfQorCX0KKwkKKwkvKioKKwkgKiBAcGFyYW0gZmlsZUV4cGxvcmVySXRlbUlkCisJICovCisJcHVibGljIGJvb2xlYW4gZGVsZXRlRmx2UmVjb3JkaW5nKExvbmcgZmx2UmVjb3JkaW5nSWQpIHsKKwkJdHJ5IHsKKwkJCQorCQkJRmx2UmVjb3JkaW5nIGZJZCA9IHRoaXMuZ2V0Rmx2UmVjb3JkaW5nQnlJZChmbHZSZWNvcmRpbmdJZCk7CisJCQkKKwkJCWlmIChmSWQgPT0gbnVsbCkgeworCQkJCXJldHVybiBmYWxzZTsKKwkJCX0KKwkJCQorCQkJZklkLnNldERlbGV0ZWQodHJ1ZSk7CisJCQlmSWQuc2V0VXBkYXRlZChuZXcgRGF0ZSgpKTsKKwkJCQorCQkJaWYgKGZJZC5nZXRGbHZSZWNvcmRpbmdJZCgpID09IDApIHsKKwkJCQllbS5wZXJzaXN0KGZJZCk7CisJCSAgICB9IGVsc2UgeworCQkgICAgCWlmICghZW0uY29udGFpbnMoZklkKSkgeworCQkgICAgCQllbS5tZXJnZShmSWQpOworCQkJICAgIH0KKwkJCX0KKwkJCQorCQkJcmV0dXJuIHRydWU7CisJCQkKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZGVsZXRlRmlsZUV4cGxvcmVySXRlbV06ICIsZXgyKTsKKwkJfQorCQkKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCS8qKgorCSAqIEBwYXJhbSBmaWxlRXhwbG9yZXJJdGVtSWQKKwkgKiBAcGFyYW0gZmlsZU5hbWUKKwkgKi8KKwlwdWJsaWMgdm9pZCB1cGRhdGVGaWxlT3JGb2xkZXJOYW1lKExvbmcgZmx2UmVjb3JkaW5nSWQsIFN0cmluZyBmaWxlTmFtZSkgeworCQl0cnkgeworCQkJCisJCQlGbHZSZWNvcmRpbmcgZklkID0gdGhpcy5nZXRGbHZSZWNvcmRpbmdCeUlkKGZsdlJlY29yZGluZ0lkKTsKKwkJCQorCQkJZklkLnNldEZpbGVOYW1lKGZpbGVOYW1lKTsKKwkJCWZJZC5zZXRVcGRhdGVkKG5ldyBEYXRlKCkpOworCQkJCisJCQlpZiAoZklkLmdldEZsdlJlY29yZGluZ0lkKCkgPT0gMCkgeworCQkJCWVtLnBlcnNpc3QoZklkKTsKKwkJICAgIH0gZWxzZSB7CisJCSAgICAJaWYgKCFlbS5jb250YWlucyhmSWQpKSB7CisJCSAgICAJCWVtLm1lcmdlKGZJZCk7CisJCQkgICAgfQorCQkJfQorCQkJCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW3VwZGF0ZUZpbGVPckZvbGRlck5hbWVdOiAiLGV4Mik7CisJCX0KKwl9CisJCisJcHVibGljIHZvaWQgdXBkYXRlRmx2UmVjb3JkaW5nKEZsdlJlY29yZGluZyBmSWQpIHsKKwkJdHJ5IHsKKwkJCQorCQkJaWYgKGZJZC5nZXRGbHZSZWNvcmRpbmdJZCgpID09IDApIHsKKwkJCQllbS5wZXJzaXN0KGZJZCk7CisJCSAgICB9IGVsc2UgeworCQkgICAgCWlmICghZW0uY29udGFpbnMoZklkKSkgeworCQkgICAgCQllbS5tZXJnZShmSWQpOworCQkJICAgIH0KKwkJCX0KKwkJCQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIlt1cGRhdGVGaWxlT3JGb2xkZXJOYW1lXTogIixleDIpOworCQl9CisJfQorCisJLyoqCisJICogQHBhcmFtIGZpbGVFeHBsb3Jlckl0ZW1JZAorCSAqIEBwYXJhbSBuZXdQYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQKKwkgKiBAcGFyYW0gaXNPd25lcgorCSAqLworCXB1YmxpYyB2b2lkIG1vdmVGaWxlKExvbmcgZmx2UmVjb3JkaW5nSWQsIExvbmcgcGFyZW50RmlsZUV4cGxvcmVySXRlbUlkLCAKKwkJCQlCb29sZWFuIGlzT3duZXIsIExvbmcgb3duZXJJZCkgeworCQl0cnkgeworCQkJCisJCQlGbHZSZWNvcmRpbmcgZklkID0gdGhpcy5nZXRGbHZSZWNvcmRpbmdCeUlkKGZsdlJlY29yZGluZ0lkKTsKKwkJCQorCQkJZklkLnNldFBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZChwYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQpOworCQkJCisJCQlpZiAocGFyZW50RmlsZUV4cGxvcmVySXRlbUlkID09IDApIHsKKwkJCQlpZiAoaXNPd25lcikgeworCQkJCQkvL21vdmUgdG8gcGVyc29uYWwgRm9sZGVyCisJCQkJCWZJZC5zZXRPd25lcklkKG93bmVySWQpOworCQkJCX0gZWxzZSB7CisJCQkJCS8vbW92ZSB0byBwdWJsaWMgcm9vbSBmb2xkZXIKKwkJCQkJZklkLnNldE93bmVySWQobnVsbCk7CisJCQkJfQorCQkJfSBlbHNlIHsKKwkJCQlmSWQuc2V0T3duZXJJZChudWxsKTsKKwkJCX0KKwkJCQorCQkJZklkLnNldFVwZGF0ZWQobmV3IERhdGUoKSk7CisJCQkKKwkJCWlmIChmSWQuZ2V0Rmx2UmVjb3JkaW5nSWQoKSA9PSAwKSB7CisJCQkJZW0ucGVyc2lzdChmSWQpOworCQkgICAgfSBlbHNlIHsKKwkJICAgIAlpZiAoIWVtLmNvbnRhaW5zKGZJZCkpIHsKKwkJICAgIAkJZW0ubWVyZ2UoZklkKTsKKwkJCSAgICB9CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW21vdmVGaWxlXTogIixleDIpOworCQl9CisJfQorCQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvZmx2cmVjb3JkL0ZsdlJlY29yZGluZ0xvZ0Rhby5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvZmx2cmVjb3JkL0ZsdlJlY29yZGluZ0xvZ0Rhby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1NWE3YTEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9mbHZyZWNvcmQvRmx2UmVjb3JkaW5nTG9nRGFvLmphdmEKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmZsdnJlY29yZDsKKworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5TWFuYWdlcjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5QZXJzaXN0ZW5jZUNvbnRleHQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVHlwZWRRdWVyeTsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRvY3VtZW50cy5iZWFucy5Db252ZXJ0ZXJQcm9jZXNzUmVzdWx0OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmZsdnJlY29yZC5GbHZSZWNvcmRpbmc7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuZmx2cmVjb3JkLkZsdlJlY29yZGluZ0xvZzsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay50cmFuc2FjdGlvbi5hbm5vdGF0aW9uLlRyYW5zYWN0aW9uYWw7CisKK0BUcmFuc2FjdGlvbmFsCitwdWJsaWMgY2xhc3MgRmx2UmVjb3JkaW5nTG9nRGFvIHsKKwkKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKEZsdlJlY29yZGluZ0xvZ0Rhby5jbGFzcyk7CisJQFBlcnNpc3RlbmNlQ29udGV4dAorCXByaXZhdGUgRW50aXR5TWFuYWdlciBlbTsKKwkKKwlwdWJsaWMgTGlzdDxGbHZSZWNvcmRpbmdMb2c+IGdldEZMVlJlY29yZGluZ0xvZ0J5UmVjb3JkaW5nSWQoTG9uZyBmbHZSZWNvcmRpbmdJZCl7CisJCXRyeSB7CisJCQlTdHJpbmcgaHFsID0gInNlbGVjdCBjIGZyb20gRmx2UmVjb3JkaW5nTG9nIGFzIGMgd2hlcmUgYy5mbHZSZWNvcmRpbmcuZmx2UmVjb3JkaW5nSWQgPSA6Zmx2UmVjb3JkaW5nSWQiOworCQkJCisJCQlUeXBlZFF1ZXJ5PEZsdlJlY29yZGluZ0xvZz4gcXVlcnkgPSBlbS5jcmVhdGVRdWVyeShocWwsIEZsdlJlY29yZGluZ0xvZy5jbGFzcyk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImZsdlJlY29yZGluZ0lkIiwgZmx2UmVjb3JkaW5nSWQpOworCQkJTGlzdDxGbHZSZWNvcmRpbmdMb2c+IGZsdlJlY29yZGluZ0xpc3QgPSBxdWVyeS5nZXRSZXN1bHRMaXN0KCk7CisJCQkKKwkJCXJldHVybiBmbHZSZWNvcmRpbmdMaXN0OworCQkJCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldEZMVlJlY29yZGluZ0xvZ0J5UmVjb3JkaW5nSWRdICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQkKKwkKKwlwdWJsaWMgdm9pZCBkZWxldGVGTFZSZWNvcmRpbmdMb2dCeVJlY29yZGluZ0lkKExvbmcgZmx2UmVjb3JkaW5nSWQpeworCQl0cnkgeworCQkJTGlzdDxGbHZSZWNvcmRpbmdMb2c+IGZsdlJlY29yZGluZ0xvZ3MgPSB0aGlzLmdldEZMVlJlY29yZGluZ0xvZ0J5UmVjb3JkaW5nSWQoZmx2UmVjb3JkaW5nSWQpOworCQkJCisJCQlmb3IgKEZsdlJlY29yZGluZ0xvZyBmbHZSZWNvcmRpbmdMb2cgOiBmbHZSZWNvcmRpbmdMb2dzKSB7CisJCQkJZmx2UmVjb3JkaW5nTG9nID0gZW0uZmluZChGbHZSZWNvcmRpbmdMb2cuY2xhc3MsIGZsdlJlY29yZGluZ0xvZy5nZXRGbHZSZWNvcmRpbmdMb2dJZCgpKTsKKwkJCQllbS5yZW1vdmUoZmx2UmVjb3JkaW5nTG9nKTsKKwkJCX0KKwkJCQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIltkZWxldGVGTFZSZWNvcmRpbmdMb2dCeVJlY29yZGluZ0lkXSAiLCBleDIpOworCQl9CisJfQorCQorCXB1YmxpYyBMb25nIGFkZEZMVlJlY29yZGluZ0xvZyhTdHJpbmcgbXNnVHlwZSwgRmx2UmVjb3JkaW5nIGZsdlJlY29yZGluZywgQ29udmVydGVyUHJvY2Vzc1Jlc3VsdCByZXR1cm5NYXApIHsKKwkJdHJ5IHsgCisJCQlGbHZSZWNvcmRpbmdMb2cgZmx2UmVjb3JkaW5nTG9nID0gbmV3IEZsdlJlY29yZGluZ0xvZygpOworCQkJZmx2UmVjb3JkaW5nTG9nLnNldEluc2VydGVkKG5ldyBEYXRlKCkpOworCQkJZmx2UmVjb3JkaW5nTG9nLnNldEV4aXRWYWx1ZShyZXR1cm5NYXAuZ2V0RXhpdFZhbHVlKCkpOworCQkJZmx2UmVjb3JkaW5nTG9nLnNldEZsdlJlY29yZGluZyhmbHZSZWNvcmRpbmcpOworCQkJZmx2UmVjb3JkaW5nTG9nLnNldEZ1bGxNZXNzYWdlKHJldHVybk1hcC5idWlsZExvZ01lc3NhZ2UoKSk7CisJCQlmbHZSZWNvcmRpbmdMb2cuc2V0TXNnVHlwZShtc2dUeXBlKTsKKwkJCQorCQkJZmx2UmVjb3JkaW5nTG9nID0gZW0ubWVyZ2UoZmx2UmVjb3JkaW5nTG9nKTsKKwkJCUxvbmcgZmx2UmVjb3JkaW5nTG9nSWQgPSBmbHZSZWNvcmRpbmdMb2cuZ2V0Rmx2UmVjb3JkaW5nTG9nSWQoKTsKKwkJCQorCQkJcmV0dXJuIGZsdlJlY29yZGluZ0xvZ0lkOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIlthZGRGTFZSZWNvcmRpbmdMb2ddOiAiLGV4Mik7CisJCX0KKwkJcmV0dXJuIC0xTDsKKwl9CisJCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9mbHZyZWNvcmQvRmx2UmVjb3JkaW5nTWV0YURhdGFEYW8uamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2ZsdnJlY29yZC9GbHZSZWNvcmRpbmdNZXRhRGF0YURhby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdlNmMyOTAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9mbHZyZWNvcmQvRmx2UmVjb3JkaW5nTWV0YURhdGFEYW8uamF2YQpAQCAtMCwwICsxLDI0MCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmZsdnJlY29yZDsKKworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5TWFuYWdlcjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Ob1Jlc3VsdEV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5QZXJzaXN0ZW5jZUNvbnRleHQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVHlwZWRRdWVyeTsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5mbHZyZWNvcmQuRmx2UmVjb3JkaW5nTWV0YURhdGE7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLnRyYW5zYWN0aW9uLmFubm90YXRpb24uVHJhbnNhY3Rpb25hbDsKKworQFRyYW5zYWN0aW9uYWwKK3B1YmxpYyBjbGFzcyBGbHZSZWNvcmRpbmdNZXRhRGF0YURhbyB7CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKEZsdlJlY29yZGluZ01ldGFEYXRhRGFvLmNsYXNzLAorCQkJT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCUBQZXJzaXN0ZW5jZUNvbnRleHQKKwlwcml2YXRlIEVudGl0eU1hbmFnZXIgZW07CisJQEF1dG93aXJlZAorCXByaXZhdGUgRmx2UmVjb3JkaW5nRGFvIGZsdlJlY29yZGluZ0RhbzsKKwkKKwlwdWJsaWMgRmx2UmVjb3JkaW5nTWV0YURhdGEgZ2V0Rmx2UmVjb3JkaW5nTWV0YURhdGFCeUlkKExvbmcgZmx2UmVjb3JkaW5nTWV0YURhdGFJZCkgeworCQl0cnkgeyAKKwkJCQorCQkJU3RyaW5nIGhxbCA9ICJTRUxFQ1QgYyBGUk9NIEZsdlJlY29yZGluZ01ldGFEYXRhIGMgIiArCisJCQkJCSJXSEVSRSBjLmZsdlJlY29yZGluZ01ldGFEYXRhSWQgPSA6Zmx2UmVjb3JkaW5nTWV0YURhdGFJZCI7CisJCQkKKwkJCVR5cGVkUXVlcnk8Rmx2UmVjb3JkaW5nTWV0YURhdGE+IHF1ZXJ5ID0gZW0uY3JlYXRlUXVlcnkoaHFsLCBGbHZSZWNvcmRpbmdNZXRhRGF0YS5jbGFzcyk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImZsdlJlY29yZGluZ01ldGFEYXRhSWQiLCBmbHZSZWNvcmRpbmdNZXRhRGF0YUlkKTsKKwkJCQorCQkJRmx2UmVjb3JkaW5nTWV0YURhdGEgZmx2UmVjb3JkaW5nTWV0YURhdGEgPSBudWxsOworCQkJdHJ5IHsKKwkJCQlmbHZSZWNvcmRpbmdNZXRhRGF0YSA9IHF1ZXJ5LmdldFNpbmdsZVJlc3VsdCgpOworCQkgICAgfSBjYXRjaCAoTm9SZXN1bHRFeGNlcHRpb24gZXgpIHsKKwkJICAgIH0KKwkJCQorCQkJcmV0dXJuIGZsdlJlY29yZGluZ01ldGFEYXRhOworCQkJCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldEZsdlJlY29yZGluZ01ldGFEYXRhQnlJZF06ICIsZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisJCisJcHVibGljIExpc3Q8Rmx2UmVjb3JkaW5nTWV0YURhdGE+IGdldEZsdlJlY29yZGluZ01ldGFEYXRhQnlSZWNvcmRpbmcoTG9uZyBmbHZSZWNvcmRpbmdJZCkgeworCQl0cnkgeyAKKwkJCQorCQkJU3RyaW5nIGhxbCA9ICJTRUxFQ1QgYyBGUk9NIEZsdlJlY29yZGluZ01ldGFEYXRhIGMgIiArCisJCQkJCSJXSEVSRSBjLmZsdlJlY29yZGluZy5mbHZSZWNvcmRpbmdJZCA9IDpmbHZSZWNvcmRpbmdJZCAiICsKKwkJCQkJIkFORCBjLmRlbGV0ZWQgPD4gOmRlbGV0ZWQgIjsKKwkJCQorCQkJVHlwZWRRdWVyeTxGbHZSZWNvcmRpbmdNZXRhRGF0YT4gcXVlcnkgPSBlbS5jcmVhdGVRdWVyeShocWwsIEZsdlJlY29yZGluZ01ldGFEYXRhLmNsYXNzKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiZmx2UmVjb3JkaW5nSWQiLCBmbHZSZWNvcmRpbmdJZCk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImRlbGV0ZWQiLCB0cnVlKTsKKwkJCQorCQkJTGlzdDxGbHZSZWNvcmRpbmdNZXRhRGF0YT4gZmx2UmVjb3JkaW5nTWV0YURhdGFzID0gcXVlcnkuZ2V0UmVzdWx0TGlzdCgpOworCQkJCisJCQlyZXR1cm4gZmx2UmVjb3JkaW5nTWV0YURhdGFzOworCQkJCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldEZsdlJlY29yZGluZ01ldGFEYXRhQnlSZWNvcmRpbmddOiAiLGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCQorCXB1YmxpYyBMaXN0PEZsdlJlY29yZGluZ01ldGFEYXRhPiBnZXRGbHZSZWNvcmRpbmdNZXRhRGF0YUF1ZGlvRmx2c0J5UmVjb3JkaW5nKExvbmcgZmx2UmVjb3JkaW5nSWQpIHsKKwkJdHJ5IHsgCisJCQkKKwkJCVN0cmluZyBocWwgPSAiU0VMRUNUIGMgRlJPTSBGbHZSZWNvcmRpbmdNZXRhRGF0YSBjICIgKworCQkJCQkiV0hFUkUgYy5mbHZSZWNvcmRpbmcuZmx2UmVjb3JkaW5nSWQgPSA6Zmx2UmVjb3JkaW5nSWQgIiArCisJCQkJCSJBTkQgKCIgKworCQkJCQkJIihjLmlzU2NyZWVuRGF0YSA9IGZhbHNlKSAiICsKKwkJCQkJCQkiIEFORCAiICsKKwkJCQkJCSIoYy5pc0F1ZGlvT25seSA9IHRydWUgT1IgKGMuaXNBdWRpb09ubHkgPSBmYWxzZSBBTkQgYy5pc1ZpZGVvT25seSA9IGZhbHNlKSkiICsKKwkJCQkJIikiOworCQkJCisJCQlUeXBlZFF1ZXJ5PEZsdlJlY29yZGluZ01ldGFEYXRhPiBxdWVyeSA9IGVtLmNyZWF0ZVF1ZXJ5KGhxbCwgRmx2UmVjb3JkaW5nTWV0YURhdGEuY2xhc3MpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJmbHZSZWNvcmRpbmdJZCIsIGZsdlJlY29yZGluZ0lkKTsKKwkJCQorCQkJTGlzdDxGbHZSZWNvcmRpbmdNZXRhRGF0YT4gZmx2UmVjb3JkaW5nTWV0YURhdGFzID0gcXVlcnkuZ2V0UmVzdWx0TGlzdCgpOworCQkJCisJCQlyZXR1cm4gZmx2UmVjb3JkaW5nTWV0YURhdGFzOworCQkJCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldEZsdlJlY29yZGluZ01ldGFEYXRhQXVkaW9GbHZzQnlSZWNvcmRpbmddOiAiLGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCQorCXB1YmxpYyBGbHZSZWNvcmRpbmdNZXRhRGF0YSBnZXRGbHZSZWNvcmRpbmdNZXRhRGF0YVNjcmVlbkZsdkJ5UmVjb3JkaW5nKExvbmcgZmx2UmVjb3JkaW5nSWQpIHsKKwkJdHJ5IHsgCisJCQkKKwkJCVN0cmluZyBocWwgPSAiU0VMRUNUIGMgRlJPTSBGbHZSZWNvcmRpbmdNZXRhRGF0YSBjICIgKworCQkJCQkiV0hFUkUgYy5mbHZSZWNvcmRpbmcuZmx2UmVjb3JkaW5nSWQgPSA6Zmx2UmVjb3JkaW5nSWQgIiArCisJCQkJCSJBTkQgYy5pc1NjcmVlbkRhdGEgPSB0cnVlIjsKKwkJCQorCQkJVHlwZWRRdWVyeTxGbHZSZWNvcmRpbmdNZXRhRGF0YT4gcXVlcnkgPSBlbS5jcmVhdGVRdWVyeShocWwsIEZsdlJlY29yZGluZ01ldGFEYXRhLmNsYXNzKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiZmx2UmVjb3JkaW5nSWQiLCBmbHZSZWNvcmRpbmdJZCk7CisJCQkKKwkJCUxpc3Q8Rmx2UmVjb3JkaW5nTWV0YURhdGE+IGZsdlJlY29yZGluZ01ldGFEYXRhcyA9IHF1ZXJ5LmdldFJlc3VsdExpc3QoKTsKKwkJCQorCQkJaWYgKGZsdlJlY29yZGluZ01ldGFEYXRhcy5zaXplKCkgPiAwKSB7CisJCQkJcmV0dXJuIGZsdlJlY29yZGluZ01ldGFEYXRhcy5nZXQoMCk7CisJCQl9CisJCQkKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZ2V0Rmx2UmVjb3JkaW5nTWV0YURhdGFTY3JlZW5GbHZCeVJlY29yZGluZ106ICIsZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisJCisJcHVibGljIExvbmcgYWRkRmx2UmVjb3JkaW5nTWV0YURhdGEoTG9uZyBmbHZSZWNvcmRpbmdJZCwgU3RyaW5nIGZyZWVUZXh0VXNlck5hbWUsIAorCQkJCQlEYXRlIHJlY29yZFN0YXJ0LCBCb29sZWFuIGlzQXVkaW9Pbmx5LCBCb29sZWFuIGlzVmlkZW9Pbmx5LCAKKwkJCQkJQm9vbGVhbiBpc1NjcmVlbkRhdGEsIFN0cmluZyBzdHJlYW1OYW1lLCBJbnRlZ2VyIGludGVyaWV3UG9kSWQpIHsKKwkJdHJ5IHsgCisJCQkKKwkJCUZsdlJlY29yZGluZ01ldGFEYXRhIGZsdlJlY29yZGluZ01ldGFEYXRhID0gbmV3IEZsdlJlY29yZGluZ01ldGFEYXRhKCk7CisJCQkKKwkJCWZsdlJlY29yZGluZ01ldGFEYXRhLnNldERlbGV0ZWQoZmFsc2UpOworCQkJCisJCQlmbHZSZWNvcmRpbmdNZXRhRGF0YS5zZXRGbHZSZWNvcmRpbmcoZmx2UmVjb3JkaW5nRGFvLmdldEZsdlJlY29yZGluZ0J5SWQoZmx2UmVjb3JkaW5nSWQpKTsKKwkJCWZsdlJlY29yZGluZ01ldGFEYXRhLnNldEZyZWVUZXh0VXNlck5hbWUoZnJlZVRleHRVc2VyTmFtZSk7CisJCQlmbHZSZWNvcmRpbmdNZXRhRGF0YS5zZXRJbnNlcnRlZChuZXcgRGF0ZSgpKTsKKwkJCQorCQkJZmx2UmVjb3JkaW5nTWV0YURhdGEuc2V0UmVjb3JkU3RhcnQocmVjb3JkU3RhcnQpOworCQkJCisJCQlmbHZSZWNvcmRpbmdNZXRhRGF0YS5zZXRJc0F1ZGlvT25seShpc0F1ZGlvT25seSk7CisJCQlmbHZSZWNvcmRpbmdNZXRhRGF0YS5zZXRJc1ZpZGVvT25seShpc1ZpZGVvT25seSk7CisJCQlmbHZSZWNvcmRpbmdNZXRhRGF0YS5zZXRJc1NjcmVlbkRhdGEoaXNTY3JlZW5EYXRhKTsKKwkJCQorCQkJZmx2UmVjb3JkaW5nTWV0YURhdGEuc2V0U3RyZWFtTmFtZShzdHJlYW1OYW1lKTsKKwkJCQorCQkJZmx2UmVjb3JkaW5nTWV0YURhdGEuc2V0SW50ZXJpZXdQb2RJZChpbnRlcmlld1BvZElkKTsKKwkJCQorCQkJZmx2UmVjb3JkaW5nTWV0YURhdGEgPSBlbS5tZXJnZShmbHZSZWNvcmRpbmdNZXRhRGF0YSk7CisJCQlMb25nIGZsdlJlY29yZGluZ01ldGFEYXRhSWQgPSBmbHZSZWNvcmRpbmdNZXRhRGF0YS5nZXRGbHZSZWNvcmRpbmdNZXRhRGF0YUlkKCk7CisJCQkKKwkJCXJldHVybiBmbHZSZWNvcmRpbmdNZXRhRGF0YUlkOworCQkJCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2FkZEZsdlJlY29yZGluZ01ldGFEYXRhXTogIixleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKwkKKwlwdWJsaWMgTG9uZyBhZGRGbHZSZWNvcmRpbmdNZXRhRGF0YU9iaihGbHZSZWNvcmRpbmdNZXRhRGF0YSBmbHZSZWNvcmRpbmdNZXRhRGF0YSkgeworCQl0cnkgeworCisJCQlmbHZSZWNvcmRpbmdNZXRhRGF0YSA9IGVtLm1lcmdlKGZsdlJlY29yZGluZ01ldGFEYXRhKTsKKwkJCUxvbmcgZmx2UmVjb3JkaW5nTWV0YURhdGFJZCA9IGZsdlJlY29yZGluZ01ldGFEYXRhLmdldEZsdlJlY29yZGluZ01ldGFEYXRhSWQoKTsKKworCQkJcmV0dXJuIGZsdlJlY29yZGluZ01ldGFEYXRhSWQ7CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbYWRkRmx2UmVjb3JkaW5nTWV0YURhdGFPYmpdOiAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMb25nIHVwZGF0ZUZsdlJlY29yZGluZ01ldGFEYXRhRW5kRGF0ZShMb25nIGZsdlJlY29yZGluZ01ldGFEYXRhSWQsIAorCQkJCQkJCQkJCURhdGUgcmVjb3JkRW5kKSB7CisJCXRyeSB7IAorCQkJCisJCQlGbHZSZWNvcmRpbmdNZXRhRGF0YSBmbHZSZWNvcmRpbmdNZXRhRGF0YSA9IHRoaXMuZ2V0Rmx2UmVjb3JkaW5nTWV0YURhdGFCeUlkKGZsdlJlY29yZGluZ01ldGFEYXRhSWQpOworCQkJCisJCQlmbHZSZWNvcmRpbmdNZXRhRGF0YS5zZXRSZWNvcmRFbmQocmVjb3JkRW5kKTsKKwkJCQorCQkJbG9nLmRlYnVnKCJ1cGRhdGVGbHZSZWNvcmRpbmdNZXRhRGF0YUVuZERhdGUgOjogU3RhcnQgRGF0ZSA6IitmbHZSZWNvcmRpbmdNZXRhRGF0YS5nZXRSZWNvcmRTdGFydCgpKTsKKwkJCWxvZy5kZWJ1ZygidXBkYXRlRmx2UmVjb3JkaW5nTWV0YURhdGFFbmREYXRlIDo6IEVuZCBEYXRlIDoiK2ZsdlJlY29yZGluZ01ldGFEYXRhLmdldFJlY29yZEVuZCgpKTsKKwkJCQorCQkJdGhpcy51cGRhdGVGbHZSZWNvcmRpbmdNZXRhRGF0YShmbHZSZWNvcmRpbmdNZXRhRGF0YSk7CisJCQkKKwkJCXJldHVybiBmbHZSZWNvcmRpbmdNZXRhRGF0YUlkOworCQkJCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW3VwZGF0ZUZsdlJlY29yZGluZ01ldGFEYXRhRW5kRGF0ZV06ICIsZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgTG9uZyB1cGRhdGVGbHZSZWNvcmRpbmdNZXRhRGF0YUluaXRpYWxHYXAoTG9uZyBmbHZSZWNvcmRpbmdNZXRhRGF0YUlkLCAKKwkJCQkJCQkJCQlsb25nIGluaXRhbEdhcCkgeworCQl0cnkgeyAKKwkJCQorCQkJRmx2UmVjb3JkaW5nTWV0YURhdGEgZmx2UmVjb3JkaW5nTWV0YURhdGEgPSB0aGlzLmdldEZsdlJlY29yZGluZ01ldGFEYXRhQnlJZChmbHZSZWNvcmRpbmdNZXRhRGF0YUlkKTsKKwkJCQorCQkJZmx2UmVjb3JkaW5nTWV0YURhdGEuc2V0SW5pdGlhbEdhcFNlY29uZHMoTG9uZy52YWx1ZU9mKGluaXRhbEdhcCkuaW50VmFsdWUoKSk7CisJCQkKKwkJCXRoaXMudXBkYXRlRmx2UmVjb3JkaW5nTWV0YURhdGEoZmx2UmVjb3JkaW5nTWV0YURhdGEpOworCQkJCisJCQlyZXR1cm4gZmx2UmVjb3JkaW5nTWV0YURhdGFJZDsKKwkJCQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIlt1cGRhdGVGbHZSZWNvcmRpbmdNZXRhRGF0YUVuZERhdGVdOiAiLGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIExvbmcgdXBkYXRlRmx2UmVjb3JkaW5nTWV0YURhdGEoRmx2UmVjb3JkaW5nTWV0YURhdGEgZmx2UmVjb3JkaW5nTWV0YURhdGEpIHsKKwkJdHJ5IHsgCisJCQkKKwkJCWlmIChmbHZSZWNvcmRpbmdNZXRhRGF0YS5nZXRGbHZSZWNvcmRpbmdNZXRhRGF0YUlkKCkgPT0gMCkgeworCQkJCWVtLnBlcnNpc3QoZmx2UmVjb3JkaW5nTWV0YURhdGEpOworCQkgICAgfSBlbHNlIHsKKwkJICAgIAlpZiAoIWVtLmNvbnRhaW5zKGZsdlJlY29yZGluZ01ldGFEYXRhKSkgeworCQkgICAgCQllbS5tZXJnZShmbHZSZWNvcmRpbmdNZXRhRGF0YSk7CisJCQkgICAgfQorCQkJfQorCQkJCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW3VwZGF0ZUZsdlJlY29yZGluZ01ldGFEYXRhXTogIixleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKwkKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2ZsdnJlY29yZC9GbHZSZWNvcmRpbmdNZXRhRGVsdGFEYW8uamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2ZsdnJlY29yZC9GbHZSZWNvcmRpbmdNZXRhRGVsdGFEYW8uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDY4MjA2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvZmx2cmVjb3JkL0ZsdlJlY29yZGluZ01ldGFEZWx0YURhby5qYXZhCkBAIC0wLDAgKzEsOTcgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5mbHZyZWNvcmQ7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eU1hbmFnZXI7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuUGVyc2lzdGVuY2VDb250ZXh0OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlR5cGVkUXVlcnk7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuZmx2cmVjb3JkLkZsdlJlY29yZGluZ01ldGFEZWx0YTsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay50cmFuc2FjdGlvbi5hbm5vdGF0aW9uLlRyYW5zYWN0aW9uYWw7CisKKy8qKgorICogQGF1dGhvciBzZWJhc3RpYW53YWduZXIKKyAqCisgKi8KK0BUcmFuc2FjdGlvbmFsCitwdWJsaWMgY2xhc3MgRmx2UmVjb3JkaW5nTWV0YURlbHRhRGFvIHsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoRmx2UmVjb3JkaW5nTWV0YURlbHRhRGFvLmNsYXNzLAorCQkJT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCUBQZXJzaXN0ZW5jZUNvbnRleHQKKwlwcml2YXRlIEVudGl0eU1hbmFnZXIgZW07CisJCisJcHVibGljIExpc3Q8Rmx2UmVjb3JkaW5nTWV0YURlbHRhPiBnZXRGbHZSZWNvcmRpbmdNZXRhRGVsdGFCeU1ldGFJZChMb25nIGZsdlJlY29yZGluZ01ldGFEYXRhSWQpIHsKKwkJdHJ5IHsgCisJCQkKKwkJCVN0cmluZyBocWwgPSAiU0VMRUNUIGMgRlJPTSBGbHZSZWNvcmRpbmdNZXRhRGVsdGEgYyAiICsKKwkJCQkJIldIRVJFIGMuZmx2UmVjb3JkaW5nTWV0YURhdGFJZCA9IDpmbHZSZWNvcmRpbmdNZXRhRGF0YUlkIjsKKwkJCQorCQkJVHlwZWRRdWVyeTxGbHZSZWNvcmRpbmdNZXRhRGVsdGE+IHF1ZXJ5ID0gZW0uY3JlYXRlUXVlcnkoaHFsLCBGbHZSZWNvcmRpbmdNZXRhRGVsdGEuY2xhc3MpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJmbHZSZWNvcmRpbmdNZXRhRGF0YUlkIiwgZmx2UmVjb3JkaW5nTWV0YURhdGFJZCk7CisJCQkKKwkJCUxpc3Q8Rmx2UmVjb3JkaW5nTWV0YURlbHRhPiBmbHZSZWNvcmRpbmdNZXRhRGVsdGFzID0gcXVlcnkuZ2V0UmVzdWx0TGlzdCgpOworCQkJCisJCQlyZXR1cm4gZmx2UmVjb3JkaW5nTWV0YURlbHRhczsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZ2V0Rmx2UmVjb3JkaW5nTWV0YURlbHRhQnlNZXRhSWRdOiAiLGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCQorCQorCQorCXB1YmxpYyBMb25nIGFkZEZsdlJlY29yZGluZ01ldGFEZWx0YShGbHZSZWNvcmRpbmdNZXRhRGVsdGEgZmx2UmVjb3JkaW5nTWV0YURlbHRhKSB7CisJCXRyeSB7IAorCQkJCisJCQlmbHZSZWNvcmRpbmdNZXRhRGVsdGEgPSBlbS5tZXJnZShmbHZSZWNvcmRpbmdNZXRhRGVsdGEpOworCQkJTG9uZyBmbHZSZWNvcmRpbmdNZXRhRGVsdGFJZCA9IGZsdlJlY29yZGluZ01ldGFEZWx0YS5nZXRGbHZSZWNvcmRpbmdNZXRhRGVsdGFJZCgpOworCQkJCisJCQlsb2cuZGVidWcoImZsdlJlY29yZGluZ01ldGFEZWx0YUlkICIrZmx2UmVjb3JkaW5nTWV0YURlbHRhSWQpOworCQkJCisJCQlyZXR1cm4gZmx2UmVjb3JkaW5nTWV0YURlbHRhSWQ7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2FkZEZsdlJlY29yZGluZ01ldGFEZWx0YV06ICIsZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisJCisJcHVibGljIExvbmcgdXBkYXRlRmx2UmVjb3JkaW5nTWV0YURlbHRhKEZsdlJlY29yZGluZ01ldGFEZWx0YSBmbHZSZWNvcmRpbmdNZXRhRGVsdGEpIHsKKwkJdHJ5IHsgCisJCQlpZiAoZmx2UmVjb3JkaW5nTWV0YURlbHRhLmdldEZsdlJlY29yZGluZ01ldGFEYXRhSWQoKSA9PSAwKSB7CisJCQkJZW0ucGVyc2lzdChmbHZSZWNvcmRpbmdNZXRhRGVsdGEpOworCQkgICAgfSBlbHNlIHsKKwkJICAgIAlpZiAoIWVtLmNvbnRhaW5zKGZsdlJlY29yZGluZ01ldGFEZWx0YSkpIHsKKwkJICAgIAkJZW0ubWVyZ2UoZmx2UmVjb3JkaW5nTWV0YURlbHRhKTsKKwkJCSAgICB9CisJCQl9CisJCQkKKwkJCXJldHVybiBmbHZSZWNvcmRpbmdNZXRhRGVsdGEuZ2V0Rmx2UmVjb3JkaW5nTWV0YURhdGFJZCgpOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIlt1cGRhdGVGbHZSZWNvcmRpbmdNZXRhRGVsdGFdOiAiLGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQkKKwkKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2ZsdnJlY29yZC9iZWFucy9GTFZSZWNvcmRlck9iamVjdC5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvZmx2cmVjb3JkL2JlYW5zL0ZMVlJlY29yZGVyT2JqZWN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzk2YWM3MQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2ZsdnJlY29yZC9iZWFucy9GTFZSZWNvcmRlck9iamVjdC5qYXZhCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5mbHZyZWNvcmQuYmVhbnM7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmZsdnJlY29yZC5GbHZSZWNvcmRpbmc7CisKK3B1YmxpYyBjbGFzcyBGTFZSZWNvcmRlck9iamVjdCB7CisKKwlwcml2YXRlIExpc3Q8Rmx2UmVjb3JkaW5nPiB1c2VySG9tZTsKKwlwcml2YXRlIExpc3Q8Rmx2UmVjb3JkaW5nPiByb29tSG9tZTsKKwlwcml2YXRlIExvbmcgdXNlckhvbWVTaXplOworCXByaXZhdGUgTG9uZyByb29tSG9tZVNpemU7CisJCisJcHVibGljIExpc3Q8Rmx2UmVjb3JkaW5nPiBnZXRVc2VySG9tZSgpIHsKKwkJcmV0dXJuIHVzZXJIb21lOworCX0KKwlwdWJsaWMgdm9pZCBzZXRVc2VySG9tZShMaXN0PEZsdlJlY29yZGluZz4gdXNlckhvbWUpIHsKKwkJdGhpcy51c2VySG9tZSA9IHVzZXJIb21lOworCX0KKwlwdWJsaWMgTGlzdDxGbHZSZWNvcmRpbmc+IGdldFJvb21Ib21lKCkgeworCQlyZXR1cm4gcm9vbUhvbWU7CisJfQorCXB1YmxpYyB2b2lkIHNldFJvb21Ib21lKExpc3Q8Rmx2UmVjb3JkaW5nPiByb29tSG9tZSkgeworCQl0aGlzLnJvb21Ib21lID0gcm9vbUhvbWU7CisJfQorCXB1YmxpYyBMb25nIGdldFVzZXJIb21lU2l6ZSgpIHsKKwkJcmV0dXJuIHVzZXJIb21lU2l6ZTsKKwl9CisJcHVibGljIHZvaWQgc2V0VXNlckhvbWVTaXplKExvbmcgdXNlckhvbWVTaXplKSB7CisJCXRoaXMudXNlckhvbWVTaXplID0gdXNlckhvbWVTaXplOworCX0KKwlwdWJsaWMgTG9uZyBnZXRSb29tSG9tZVNpemUoKSB7CisJCXJldHVybiByb29tSG9tZVNpemU7CisJfQorCXB1YmxpYyB2b2lkIHNldFJvb21Ib21lU2l6ZShMb25nIHJvb21Ib21lU2l6ZSkgeworCQl0aGlzLnJvb21Ib21lU2l6ZSA9IHJvb21Ib21lU2l6ZTsKKwl9CisJCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9mbHZyZWNvcmQvY29udmVydGVyL0Jhc2VDb252ZXJ0ZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2ZsdnJlY29yZC9jb252ZXJ0ZXIvQmFzZUNvbnZlcnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlZmQ0MzUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9mbHZyZWNvcmQvY29udmVydGVyL0Jhc2VDb252ZXJ0ZXIuamF2YQpAQCAtMCwwICsxLDMwMyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmZsdnJlY29yZC5jb252ZXJ0ZXI7CisKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5kYW8uQ29uZmlndXJhdGlvbkRhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmZsdnJlY29yZC5GbHZSZWNvcmRpbmdNZXRhRGF0YURhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmZsdnJlY29yZC5GbHZSZWNvcmRpbmdNZXRhRGVsdGFEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZG9jdW1lbnRzLkdlbmVyYXRlU1dGOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRvY3VtZW50cy5iZWFucy5Db252ZXJ0ZXJQcm9jZXNzUmVzdWx0OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmZsdnJlY29yZC5GbHZSZWNvcmRpbmc7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuZmx2cmVjb3JkLkZsdlJlY29yZGluZ01ldGFEYXRhOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmZsdnJlY29yZC5GbHZSZWNvcmRpbmdNZXRhRGVsdGE7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMuT21GaWxlSGVscGVyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLlByb2Nlc3NIZWxwZXI7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKKworcHVibGljIGFic3RyYWN0IGNsYXNzIEJhc2VDb252ZXJ0ZXIgeworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoCisJCQlCYXNlQ29udmVydGVyLmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBDb25maWd1cmF0aW9uRGFvIGNvbmZpZ3VyYXRpb25EYW87CisJQEF1dG93aXJlZAorCXByaXZhdGUgRmx2UmVjb3JkaW5nTWV0YURhdGFEYW8gZmx2UmVjb3JkaW5nTWV0YURhdGFEYW9JbXBsOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEZsdlJlY29yZGluZ01ldGFEZWx0YURhbyBmbHZSZWNvcmRpbmdNZXRhRGVsdGFEYW9JbXBsOworCisJcHJpdmF0ZSBTdHJpbmcgZ2V0UGF0aChTdHJpbmcga2V5LCBTdHJpbmcgYXBwKSB7CisJCVN0cmluZyBwYXRoID0gY29uZmlndXJhdGlvbkRhby5nZXRDb25mVmFsdWUoa2V5LCBTdHJpbmcuY2xhc3MsICIiKTsKKwkJaWYgKCFwYXRoLmVxdWFscygiIikgJiYgIXBhdGguZW5kc1dpdGgoRmlsZS5zZXBhcmF0b3IpKSB7CisJCQlwYXRoICs9IEZpbGUuc2VwYXJhdG9yOworCQl9CisJCXBhdGggKz0gYXBwOworCQlyZXR1cm4gcGF0aDsKKwl9CisJCisJcHJvdGVjdGVkIFN0cmluZyBnZXRQYXRoVG9GRk1QRUcoKSB7CisJCXJldHVybiBnZXRQYXRoKCJmZm1wZWdfcGF0aCIsICJmZm1wZWciKTsKKwl9CisKKwlwcm90ZWN0ZWQgU3RyaW5nIGdldFBhdGhUb1NvWCgpIHsKKwkJcmV0dXJuIGdldFBhdGgoInNveF9wYXRoIiwgInNveCIpOworCX0KKworCXByb3RlY3RlZCBTdHJpbmcgZ2V0UGF0aFRvSW1hZ2VNYWdpY2soKSB7CisJCXJldHVybiBnZXRQYXRoKCJpbWFnZW1hZ2lja19wYXRoIiwgImNvbnZlcnQiKSArIEdlbmVyYXRlU1dGLmV4ZWNFeHQ7CisJfQorCisJcHJvdGVjdGVkIGJvb2xlYW4gaXNVc2VPbGRTdHlsZUZmbXBlZ01hcCgpIHsKKwkJcmV0dXJuICIxIi5lcXVhbHMoY29uZmlndXJhdGlvbkRhby5nZXRDb25mVmFsdWUoCisJCQkJInVzZS5vbGQuc3R5bGUuZmZtcGVnLm1hcC5vcHRpb24iLCBTdHJpbmcuY2xhc3MsICIwIikpOworCX0KKwkKKwlwcm90ZWN0ZWQgRmlsZSBnZXRTdHJlYW1Gb2xkZXIoKSB7CisJCXJldHVybiBPbUZpbGVIZWxwZXIuZ2V0U3RyZWFtc0hpYmVybmF0ZURpcigpOworCX0KKworCXByb3RlY3RlZCBGaWxlIGdldFN0cmVhbUZvbGRlcihGbHZSZWNvcmRpbmcgZmx2UmVjb3JkaW5nKSB7CisJCXJldHVybiBPbUZpbGVIZWxwZXIuZ2V0U3RyZWFtc1N1YkRpcihmbHZSZWNvcmRpbmcuZ2V0Um9vbV9pZCgpKTsKKwl9CisJCisJcHJvdGVjdGVkIHZvaWQgZGVsZXRlRmlsZUlmRXhpc3RzKFN0cmluZyBuYW1lKSB7CisJCUZpbGUgZiA9IG5ldyBGaWxlKG5hbWUpOworCisJCWlmIChmLmV4aXN0cygpKSB7CisJCQlmLmRlbGV0ZSgpOworCQl9CisJfQorCQorCXByb3RlY3RlZCBTdHJpbmdbXSBtZXJnZUF1ZGlvVG9XYXZlcyhMaXN0PFN0cmluZz4gbGlzdE9mRnVsbFdhdmVGaWxlcywgU3RyaW5nIG91dHB1dEZ1bGxXYXYpIHRocm93cyBFeGNlcHRpb24geworCQlTdHJpbmdbXSBhcmd2X2Z1bGxfc294ID0gbmV3IFN0cmluZ1tsaXN0T2ZGdWxsV2F2ZUZpbGVzLnNpemUoKSArIDNdOworCQkKKwkJbG9nLmRlYnVnKCIgbGlzdE9mRnVsbFdhdmVGaWxlcyAiK2xpc3RPZkZ1bGxXYXZlRmlsZXMuc2l6ZSgpKyIgYXJndl9mdWxsX3NveCBMRU5HVEggIithcmd2X2Z1bGxfc294Lmxlbmd0aCk7CisJCQorCQlhcmd2X2Z1bGxfc294WzBdID0gZ2V0UGF0aFRvU29YKCk7CisJCWFyZ3ZfZnVsbF9zb3hbMV0gPSAiLW0iOworCisJCWludCBpID0gMDsKKwkJZm9yICg7aSA8IGxpc3RPZkZ1bGxXYXZlRmlsZXMuc2l6ZSgpOyBpKyspIHsKKwkJCWxvZy5kZWJ1ZygiIGkgIitpKyIgPSAiK2xpc3RPZkZ1bGxXYXZlRmlsZXMuZ2V0KGkpKTsKKwkJCWFyZ3ZfZnVsbF9zb3hbMiArIGldID0gbGlzdE9mRnVsbFdhdmVGaWxlcy5nZXQoaSk7CisJCX0KKwkJbG9nLmRlYnVnKCIgaSArIDIgIisoaSsyKSsiICIrb3V0cHV0RnVsbFdhdik7CisJCQorCQlhcmd2X2Z1bGxfc294W2kgKyAyXSA9IG91dHB1dEZ1bGxXYXY7CisJCQorCQlyZXR1cm4gYXJndl9mdWxsX3NveDsKKwl9CisJCisJcHJvdGVjdGVkIHZvaWQgc3RyaXBBdWRpb0ZpcnN0UGFzcyhGbHZSZWNvcmRpbmcgZmx2UmVjb3JkaW5nLAorCQkJTGlzdDxDb252ZXJ0ZXJQcm9jZXNzUmVzdWx0PiByZXR1cm5Mb2csCisJCQlMaXN0PFN0cmluZz4gbGlzdE9mRnVsbFdhdmVGaWxlcywgRmlsZSBzdHJlYW1Gb2xkZXIpIHRocm93cyBFeGNlcHRpb24geworCQlMaXN0PEZsdlJlY29yZGluZ01ldGFEYXRhPiBtZXRhRGF0YUxpc3QgPSBmbHZSZWNvcmRpbmdNZXRhRGF0YURhb0ltcGwKKwkJCQkuZ2V0Rmx2UmVjb3JkaW5nTWV0YURhdGFBdWRpb0ZsdnNCeVJlY29yZGluZyhmbHZSZWNvcmRpbmcKKwkJCQkJCS5nZXRGbHZSZWNvcmRpbmdJZCgpKTsKKwkJc3RyaXBBdWRpb0ZpcnN0UGFzcyhmbHZSZWNvcmRpbmcsIHJldHVybkxvZywgbGlzdE9mRnVsbFdhdmVGaWxlcywgc3RyZWFtRm9sZGVyLCBtZXRhRGF0YUxpc3QpOworCX0KKwkKKwlwcml2YXRlIFN0cmluZ1tdIGFkZFNveFBhZChMaXN0PENvbnZlcnRlclByb2Nlc3NSZXN1bHQ+IHJldHVybkxvZywgU3RyaW5nIGpvYiwgZG91YmxlIGxlbmd0aCwgZG91YmxlIHBvc2l0aW9uLCBTdHJpbmcgaW5GaWxlLCBTdHJpbmcgb3V0RmlsZSkgeworCQlpZiAobGVuZ3RoID49IDAgJiYgcG9zaXRpb24gPj0gMCAmJiAobGVuZ3RoID4gMCB8fCBwb3NpdGlvbiA+IDApKSB7CisJCQlTdHJpbmdbXSBhcmd2X3NveCA9IG5ldyBTdHJpbmdbXSB7IGdldFBhdGhUb1NvWCgpLAorCQkJCQlpbkZpbGUsIG91dEZpbGUsICJwYWQiLAorCQkJCQkiIiArIGxlbmd0aCwgIiIgKyBwb3NpdGlvbiB9OworCQorCQkJaWYgKGxvZy5pc0RlYnVnRW5hYmxlZCgpKSB7CisJCQkJbG9nLmRlYnVnKCJTVEFSVCAiICsgam9iICsgIiAjIyMjIyMjIyMjIyMjIyMjIyAiKTsKKwkJCQlTdHJpbmcgcGFkU3RyaW5nID0gIiI7CisJCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBhcmd2X3NveC5sZW5ndGg7IGkrKykgeworCQkJCQlwYWRTdHJpbmcgKz0gIiAiICsgYXJndl9zb3hbaV07CisJCQkJfQorCQkJCWxvZy5kZWJ1ZygicGFkU3RyaW5nIDo6ICIgKyBwYWRTdHJpbmcpOworCQkJCWxvZy5kZWJ1ZygiRU5EICIgKyBqb2IgKyAiICMjIyMjIyMjIyMjIyMjIyMjICIpOworCQkJfQorCQkJcmV0dXJuTG9nLmFkZChQcm9jZXNzSGVscGVyLmV4ZWN1dGVTY3JpcHQoam9iLCBhcmd2X3NveCkpOworCQkJcmV0dXJuIGFyZ3Zfc294OworCQl9IGVsc2UgeworCQkJbG9nLmRlYnVnKCI6OmFkZFNveFBhZCAiICsgam9iICsgIiBJbnZhbGlkIHBhcmFtZXRlcnM6ICIKKwkJCQkrICIgbGVuZ3RoID0gIiArIGxlbmd0aCArICI7IHBvc2l0aW9uID0gIiArIHBvc2l0aW9uICsgIjsgaW5GaWxlID0gIiArIGluRmlsZSk7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCQorCXByb3RlY3RlZCB2b2lkIHN0cmlwQXVkaW9GaXJzdFBhc3MoRmx2UmVjb3JkaW5nIGZsdlJlY29yZGluZywKKwkJCUxpc3Q8Q29udmVydGVyUHJvY2Vzc1Jlc3VsdD4gcmV0dXJuTG9nLAorCQkJTGlzdDxTdHJpbmc+IGxpc3RPZkZ1bGxXYXZlRmlsZXMsIEZpbGUgc3RyZWFtRm9sZGVyLAorCQkJTGlzdDxGbHZSZWNvcmRpbmdNZXRhRGF0YT4gbWV0YURhdGFMaXN0KSB7CisJCXRyeSB7CisJCQkvLyBJbml0IHZhcmlhYmxlcworCQkJbG9nLmRlYnVnKCIjIyMgbWV0YSBEYXRhIE51bWJlciAtICIgKyBtZXRhRGF0YUxpc3Quc2l6ZSgpKTsKKwkJCWxvZy5kZWJ1ZygiIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIik7CisJCisJCQlmb3IgKEZsdlJlY29yZGluZ01ldGFEYXRhIG1ldGFEYXRhIDogbWV0YURhdGFMaXN0KSB7CisJCQkJCisJCQkJaWYgKG1ldGFEYXRhLmdldFN0cmVhbVJlYWRlclRocmVhZENvbXBsZXRlKCkgPT0gbnVsbCkgeworCQkJCQl0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJTdHJlYW1SZWFkZXJUaHJlYWRDb21wbGV0ZSBCaXQgaXMgTlVMTCwgZXJyb3IgaW4gcmVjb3JkaW5nIik7CisJCQkJfQorCQkJCQorCQkJCWlmICghbWV0YURhdGEuZ2V0U3RyZWFtUmVhZGVyVGhyZWFkQ29tcGxldGUoKSkgeworCQkJCQkKKwkJCQkJbG9nLmRlYnVnKCIjIyMgbWV0YSBTdHJlYW0gbm90IHlldCB3cml0dGVuIHRvIGRpc2siICsgbWV0YURhdGEuZ2V0Rmx2UmVjb3JkaW5nTWV0YURhdGFJZCgpKTsKKwkJCQkJYm9vbGVhbiBkb1N0b3AgPSB0cnVlOworCQkJCQl3aGlsZShkb1N0b3ApIHsKKwkJCQkJCQorCQkJCQkJbG9nLmRlYnVnKCIjIyMgU3RyZWFtIG5vdCB5ZXQgd3JpdHRlbiBUaHJlYWQgU2xlZXAgLSAiICsgbWV0YURhdGEuZ2V0Rmx2UmVjb3JkaW5nTWV0YURhdGFJZCgpKTsKKwkJCQkJCQorCQkJCQkJbWV0YURhdGEgPSBmbHZSZWNvcmRpbmdNZXRhRGF0YURhb0ltcGwuZ2V0Rmx2UmVjb3JkaW5nTWV0YURhdGFCeUlkKG1ldGFEYXRhLmdldEZsdlJlY29yZGluZ01ldGFEYXRhSWQoKSk7CisJCQkJCQkKKwkJCQkJCWlmIChtZXRhRGF0YS5nZXRTdHJlYW1SZWFkZXJUaHJlYWRDb21wbGV0ZSgpKSB7CisJCQkJCQkJbG9nLmRlYnVnKCIjIyMgU3RyZWFtIG5vdyB3cml0dGVuIFRocmVhZCBjb250aW51ZSAtICIgKTsKKwkJCQkJCQlkb1N0b3AgPSBmYWxzZTsKKwkJCQkJCX0KKwkJCQkJCQorCQkJCQkJVGhyZWFkLnNsZWVwKDEwMEwpOworCQkJCQl9CisJCQkJfQorCQorCQkJCUZpbGUgaW5wdXRGbHZGaWxlID0gbmV3IEZpbGUoc3RyZWFtRm9sZGVyLCBtZXRhRGF0YS5nZXRTdHJlYW1OYW1lKCkgKyAiLmZsdiIpOworCQorCQkJCVN0cmluZyBoYXNoRmlsZU5hbWUgPSBtZXRhRGF0YS5nZXRTdHJlYW1OYW1lKCkgKyAiX1dBVkUud2F2IjsKKwkJCQlTdHJpbmcgb3V0cHV0V2F2ID0gbmV3IEZpbGUoc3RyZWFtRm9sZGVyLCBoYXNoRmlsZU5hbWUpLmdldENhbm9uaWNhbFBhdGgoKTsgLy9GSVhNRQorCQorCQkJCW1ldGFEYXRhLnNldFdhdkF1ZGlvRGF0YShoYXNoRmlsZU5hbWUpOworCQorCQkJCQorCQkJCWxvZy5kZWJ1ZygiRkxWIEZpbGUgTmFtZToge30gTGVuZ3RoOiB7fSAiLCBpbnB1dEZsdkZpbGUuZ2V0TmFtZSgpLCBpbnB1dEZsdkZpbGUubGVuZ3RoKCkpOworCQorCQkJCW1ldGFEYXRhLnNldEF1ZGlvSXNWYWxpZChmYWxzZSk7CisJCQkJaWYgKGlucHV0Rmx2RmlsZS5leGlzdHMoKSkgeworCQorCQkJCQlTdHJpbmdbXSBhcmd2ID0gbmV3IFN0cmluZ1tdIHsgdGhpcy5nZXRQYXRoVG9GRk1QRUcoKSwKKwkJCQkJCQkiLWFzeW5jIiwgIjEiLCAiLWkiLCBpbnB1dEZsdkZpbGUuZ2V0Q2Fub25pY2FsUGF0aCgpLCBvdXRwdXRXYXYgfTsKKwkKKwkJCQkJbG9nLmRlYnVnKCJTVEFSVCBzdHJpcEF1ZGlvRnJvbUZMVnMgIyMjIyMjIyMjIyMjIyMjIyMgIik7CisJCQkJCWZvciAoaW50IGkgPSAwOyBpIDwgYXJndi5sZW5ndGg7IGkrKykgeworCQkJCQkJbG9nLmRlYnVnKCIgaSAiICsgaSArICIgYXJndi1pICIgKyBhcmd2W2ldKTsKKwkJCQkJfQorCQkJCQlsb2cuZGVidWcoIkVORCBzdHJpcEF1ZGlvRnJvbUZMVnMgIyMjIyMjIyMjIyMjIyMjIyMgIik7CisJCisJCQkJCXJldHVybkxvZy5hZGQoUHJvY2Vzc0hlbHBlci5leGVjdXRlU2NyaXB0KCJnZW5lcmF0ZUZGTVBFRyIsCisJCQkJCQkJYXJndikpOworCQorCQkJCQkvLyBjaGVjayBpZiB0aGUgcmVzdWx0aW5nIEF1ZGlvIGlzIHZhbGlkCisJCQkJCUZpbGUgb3V0cHV0X3dhdiA9IG5ldyBGaWxlKG91dHB1dFdhdik7CisJCisJCQkJCWlmIChvdXRwdXRfd2F2LmV4aXN0cygpICYmIG91dHB1dF93YXYubGVuZ3RoKCkgIT0gMCkgeworCQkJCQkJbWV0YURhdGEuc2V0QXVkaW9Jc1ZhbGlkKHRydWUpOworCQkJCQl9CisJCQkJfQorCQorCQkJCWlmIChtZXRhRGF0YS5nZXRBdWRpb0lzVmFsaWQoKSkgeworCQkJCQkKKwkJCQkJLy8gU3RyaXAgV2F2ZSB0byBGdWxsIExlbmd0aAorCQkJCQlTdHJpbmcgb3V0cHV0R2FwRnVsbFdhdiA9IG91dHB1dFdhdjsKKwkKKwkJCQkJLy8gRml4IFN0YXJ0L0VuZCBpbiBBdWRpbworCQkJCQlMaXN0PEZsdlJlY29yZGluZ01ldGFEZWx0YT4gZmx2UmVjb3JkaW5nTWV0YURlbHRhcyA9IGZsdlJlY29yZGluZ01ldGFEZWx0YURhb0ltcGwKKwkJCQkJCQkuZ2V0Rmx2UmVjb3JkaW5nTWV0YURlbHRhQnlNZXRhSWQobWV0YURhdGEKKwkJCQkJCQkJCS5nZXRGbHZSZWNvcmRpbmdNZXRhRGF0YUlkKCkpOworCQorCQkJCQlpbnQgY291bnRlciA9IDA7CisJCisJCQkJCWZvciAoRmx2UmVjb3JkaW5nTWV0YURlbHRhIG1ldGFEZWx0YSA6IGZsdlJlY29yZGluZ01ldGFEZWx0YXMpIHsKKwkKKwkJCQkJCVN0cmluZyBpbnB1dEZpbGUgPSBvdXRwdXRHYXBGdWxsV2F2OworCQorCQkJCQkJLy8gU3RyaXAgV2F2ZSB0byBGdWxsIExlbmd0aAorCQkJCQkJU3RyaW5nIGhhc2hGaWxlR2Fwc0Z1bGxOYW1lID0gbWV0YURhdGEKKwkJCQkJCQkJLmdldFN0cmVhbU5hbWUoKQorCQkJCQkJCQkrICJfR0FQX0ZVTExfV0FWRV8iCisJCQkJCQkJCSsgY291bnRlcgorCQkJCQkJCQkrICIud2F2IjsKKwkJCQkJCW91dHB1dEdhcEZ1bGxXYXYgPSBuZXcgRmlsZShzdHJlYW1Gb2xkZXIsIGhhc2hGaWxlR2Fwc0Z1bGxOYW1lKS5nZXRDYW5vbmljYWxQYXRoKCk7CisJCisJCQkJCQltZXRhRGVsdGEuc2V0V2F2ZU91dFB1dE5hbWUoaGFzaEZpbGVHYXBzRnVsbE5hbWUpOworCQorCQkJCQkJU3RyaW5nW10gYXJndl9zb3ggPSBudWxsOworCQorCQkJCQkJaWYgKG1ldGFEZWx0YS5nZXREZWx0YVRpbWUoKSAhPSBudWxsKSB7CisJCQkJCQkJaWYgKG1ldGFEZWx0YS5nZXRJc1N0YXJ0UGFkZGluZygpICE9IG51bGwgJiYgbWV0YURlbHRhLmdldElzU3RhcnRQYWRkaW5nKCkpIHsKKwkJCQkJCQkJZG91YmxlIGdhcFNlY29uZHMgPSAoKGRvdWJsZSltZXRhRGVsdGEuZ2V0RGVsdGFUaW1lKCkpIC8gMTAwMDsKKwkJCQkJCQkJYXJndl9zb3ggPSBhZGRTb3hQYWQocmV0dXJuTG9nLCAiZmlsbEdhcCIsIGdhcFNlY29uZHMsIDAsIGlucHV0RmlsZSwgb3V0cHV0R2FwRnVsbFdhdik7CisJCQkJCQkJfSBlbHNlIGlmIChtZXRhRGVsdGEuZ2V0SXNFbmRQYWRkaW5nKCkgIT0gbnVsbCAmJiBtZXRhRGVsdGEuZ2V0SXNFbmRQYWRkaW5nKCkpIHsKKwkJCQkJCQkJZG91YmxlIGdhcFNlY29uZHMgPSAoKGRvdWJsZSltZXRhRGVsdGEuZ2V0RGVsdGFUaW1lKCkpIC8gMTAwMDsKKwkJCQkJCQkJYXJndl9zb3ggPSBhZGRTb3hQYWQocmV0dXJuTG9nLCAiZmlsbEdhcCIsIDAsIGdhcFNlY29uZHMsIGlucHV0RmlsZSwgb3V0cHV0R2FwRnVsbFdhdik7CisJCQkJCQkJfQorCQkJCQkJfQorCQorCQkJCQkJaWYgKGFyZ3Zfc294ICE9IG51bGwpIHsKKwkJCQkJCQlsb2cuZGVidWcoIlNUQVJUIGZpbGxHYXAgIyMjIyMjIyMjIyMjIyMjIyMgRGVsdGEtSUQgOjogIgorCQkJCQkJCQkJKyBtZXRhRGVsdGEuZ2V0Rmx2UmVjb3JkaW5nTWV0YURlbHRhSWQoKSk7CisJCisJCQkJCQkJZmx2UmVjb3JkaW5nTWV0YURlbHRhRGFvSW1wbC51cGRhdGVGbHZSZWNvcmRpbmdNZXRhRGVsdGEobWV0YURlbHRhKTsKKwkJCQkJCQljb3VudGVyKys7CisJCQkJCQl9IGVsc2UgeworCQkJCQkJCW91dHB1dEdhcEZ1bGxXYXYgPSBpbnB1dEZpbGU7CisJCQkJCQl9CisJCQkJCX0KKwkKKwkJCQkJLy8gU3RyaXAgV2F2ZSB0byBGdWxsIExlbmd0aAorCQkJCQlTdHJpbmcgaGFzaEZpbGVGdWxsTmFtZSA9IG1ldGFEYXRhLmdldFN0cmVhbU5hbWUoKSArICJfRlVMTF9XQVZFLndhdiI7CisJCQkJCVN0cmluZyBvdXRwdXRGdWxsV2F2ID0gbmV3IEZpbGUoc3RyZWFtRm9sZGVyLCBoYXNoRmlsZUZ1bGxOYW1lKS5nZXRDYW5vbmljYWxQYXRoKCk7CisJCisJCQkJCS8vIENhbGN1bGF0ZSBkZWx0YSBhdCBiZWdpbm5pbmcKKwkJCQkJbG9uZyBkZWx0YVRpbWVTdGFydE1pbGxpU2Vjb25kcyA9IG1ldGFEYXRhLmdldFJlY29yZFN0YXJ0KCkuZ2V0VGltZSgpCisJCQkJCQkJLSBmbHZSZWNvcmRpbmcuZ2V0UmVjb3JkU3RhcnQoKS5nZXRUaW1lKCk7CisJCisJCQkJCWRvdWJsZSBsZW5ndGggPSAoKGRvdWJsZSlkZWx0YVRpbWVTdGFydE1pbGxpU2Vjb25kcykgLyAxMDAwOworCQorCQkJCQkvLyBDYWxjdWxhdGUgZGVsdGEgYXQgZW5kaW5nCisJCQkJCWxvbmcgZGVsdGFUaW1lRW5kTWlsbGlTZWNvbmRzID0gZmx2UmVjb3JkaW5nLmdldFJlY29yZEVuZCgpLmdldFRpbWUoKQorCQkJCQkJCS0gbWV0YURhdGEuZ2V0UmVjb3JkRW5kKCkuZ2V0VGltZSgpOworCQorCQkJCQlkb3VibGUgZW5kUGFkZGluZyA9ICgoZG91YmxlKWRlbHRhVGltZUVuZE1pbGxpU2Vjb25kcykgLyAxMDAwOworCQorCQkJCQlhZGRTb3hQYWQocmV0dXJuTG9nLCAiYWRkU3RhcnRFbmRUb0F1ZGlvIiwgbGVuZ3RoLCBlbmRQYWRkaW5nLCBvdXRwdXRHYXBGdWxsV2F2LCBvdXRwdXRGdWxsV2F2KTsKKwkKKwkJCQkJLy8gRml4IGZvciBBdWRpbyBMZW5ndGggLSBJbnZhbGlkIEF1ZGlvIExlbmd0aCBpbiBSZWNvcmRlZAorCQkJCQkvLyBGaWxlcworCQkJCQkvLyBBdWRpbyBtdXN0IG1hdGNoIDEwMCUgdGhlIFZpZGVvCisJCQkJCWxvZy5kZWJ1ZygiIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMiKTsKKwkJCQkJbG9nLmRlYnVnKCJUcmltIEF1ZGlvIHRvIEZ1bGwgTGVuZ3RoIC0tIFN0YXJ0Iik7CisJCQkJCUZpbGUgYUZpbGUgPSBuZXcgRmlsZShvdXRwdXRGdWxsV2F2KTsKKwkKKwkJCQkJaWYgKCFhRmlsZS5leGlzdHMoKSkgeworCQkJCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbigKKwkJCQkJCQkJIkF1ZGlvIEZpbGUgZG9lcyBub3QgZXhpc3QgLCBjb3VsZCBub3QgZXh0cmFjdCB0aGUgQXVkaW8gY29ycmVjdGx5Iik7CisJCQkJCX0KKwkJCQkJbWV0YURhdGEuc2V0RnVsbFdhdkF1ZGlvRGF0YShoYXNoRmlsZUZ1bGxOYW1lKTsKKwkKKwkJCQkJLy8gRmluYWxseSBhZGQgaXQgdG8gdGhlIHJvdyEKKwkJCQkJbGlzdE9mRnVsbFdhdmVGaWxlcy5hZGQob3V0cHV0RnVsbFdhdik7CisJCisJCQkJfQorCQorCQkJCWZsdlJlY29yZGluZ01ldGFEYXRhRGFvSW1wbC51cGRhdGVGbHZSZWNvcmRpbmdNZXRhRGF0YShtZXRhRGF0YSk7CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW3N0cmlwQXVkaW9Gcm9tRkxWc10iLCBlcnIpOworCQl9CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvZmx2cmVjb3JkL2NvbnZlcnRlci9GbHZFeHBsb3JlckNvbnZlcnRlci5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvZmx2cmVjb3JkL2NvbnZlcnRlci9GbHZFeHBsb3JlckNvbnZlcnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxNzI5ODUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9mbHZyZWNvcmQvY29udmVydGVyL0ZsdkV4cGxvcmVyQ29udmVydGVyLmphdmEKQEAgLTAsMCArMSwxODIgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5mbHZyZWNvcmQuY29udmVydGVyOworCitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLnJlZ2V4Lk1hdGNoZXI7CitpbXBvcnQgamF2YS51dGlsLnJlZ2V4LlBhdHRlcm47CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5maWxlLmRhby5GaWxlRXhwbG9yZXJJdGVtRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuZmx2cmVjb3JkLkZsdlJlY29yZGluZ0xvZ0RhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kb2N1bWVudHMuYmVhbnMuQ29udmVydGVyUHJvY2Vzc1Jlc3VsdDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5maWxlcy5GaWxlRXhwbG9yZXJJdGVtOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLlByb2Nlc3NIZWxwZXI7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKKworcHVibGljIGNsYXNzIEZsdkV4cGxvcmVyQ29udmVydGVyIGV4dGVuZHMgQmFzZUNvbnZlcnRlciB7CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKAorCQkJRmx2RXhwbG9yZXJDb252ZXJ0ZXIuY2xhc3MsIE9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKworCS8vIFNwcmluZyBsb2FkZWQgQmVhbnMKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBGaWxlRXhwbG9yZXJJdGVtRGFvIGZpbGVFeHBsb3Jlckl0ZW1EYW9JbXBsOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEZsdlJlY29yZGluZ0xvZ0RhbyBmbHZSZWNvcmRpbmdMb2dEYW9JbXBsOworCQorCXByaXZhdGUgY2xhc3MgRmx2RGltZW5zaW9uIHsKKwkJcHVibGljIEZsdkRpbWVuc2lvbihpbnQgd2lkdGgsIGludCBoZWlnaHQpIHsKKwkJCXRoaXMud2lkdGggPSB3aWR0aDsKKwkJCXRoaXMuaGVpZ2h0ID0gaGVpZ2h0OworCQl9CisJCXB1YmxpYyBpbnQgd2lkdGggPSAwOworCQlwdWJsaWMgaW50IGhlaWdodCA9IDA7CisJfQorCisJcHVibGljIExpc3Q8Q29udmVydGVyUHJvY2Vzc1Jlc3VsdD4gc3RhcnRDb252ZXJzaW9uKExvbmcgZmlsZUV4cGxvcmVySXRlbUlkLCBTdHJpbmcgbW92aWVQYXRoKSB7CisJCUxpc3Q8Q29udmVydGVyUHJvY2Vzc1Jlc3VsdD4gcmV0dXJuTG9nID0gbmV3IEFycmF5TGlzdDxDb252ZXJ0ZXJQcm9jZXNzUmVzdWx0PigpOworCQl0cnkgeworCisJCQlGaWxlRXhwbG9yZXJJdGVtIGZpbGVFeHBsb3Jlckl0ZW0gPSB0aGlzLmZpbGVFeHBsb3Jlckl0ZW1EYW9JbXBsCisJCQkJCS5nZXRGaWxlRXhwbG9yZXJJdGVtc0J5SWQoZmlsZUV4cGxvcmVySXRlbUlkKTsKKworCQkJbG9nLmRlYnVnKCJmaWxlRXhwbG9yZXJJdGVtICIKKwkJCQkJKyBmaWxlRXhwbG9yZXJJdGVtLmdldEZpbGVFeHBsb3Jlckl0ZW1JZCgpKTsKKworCQkJLy8gIENvbnZlcnQgdG8gRkxWCisJCQlyZXR1cm4gdGhpcy5jb252ZXJ0VG9GTFYoZmlsZUV4cGxvcmVySXRlbSwgbW92aWVQYXRoKTsKKworCQkJLy8gQWRkIGVtcHR5IHBpZWNlcyBhdCB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2YgdGhlIHdhdgorCQkJLy8gRklYTUU6IElzIHRoaXMgcmVhbGx5IG5lZWRlZCBhbnltb3JlPyEKKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltzdGFydENvbnZlcnNpb25dIiwgZXJyKTsKKwkJCXJldHVybkxvZy5hZGQobmV3IENvbnZlcnRlclByb2Nlc3NSZXN1bHQoInN0YXJ0Q29udmVyc2lvbiIsIGVyci5nZXRNZXNzYWdlKCksIGVycikpOworCQl9CisKKwkJcmV0dXJuIHJldHVybkxvZzsKKworCX0KKworCXByaXZhdGUgTGlzdDxDb252ZXJ0ZXJQcm9jZXNzUmVzdWx0PiBjb252ZXJ0VG9GTFYoRmlsZUV4cGxvcmVySXRlbSBmaWxlRXhwbG9yZXJJdGVtLAorCQkJU3RyaW5nIG1vdmllUGF0aCkgeworCQlMaXN0PENvbnZlcnRlclByb2Nlc3NSZXN1bHQ+IHJldHVybkxvZyA9IG5ldyBBcnJheUxpc3Q8Q29udmVydGVyUHJvY2Vzc1Jlc3VsdD4oKTsKKwkJdHJ5IHsKKwkJCVN0cmluZyBuYW1lID0gIlVQTE9BREZMVl8iICsgZmlsZUV4cGxvcmVySXRlbS5nZXRGaWxlRXhwbG9yZXJJdGVtSWQoKTsKKwkJCUZpbGUgb3V0cHV0RnVsbEZsdiA9IG5ldyBGaWxlKGdldFN0cmVhbUZvbGRlcigpLCBuYW1lICsgIi5mbHYiKTsKKworCQkJZmlsZUV4cGxvcmVySXRlbS5zZXRJc1ZpZGVvKHRydWUpOworCisJCQlTdHJpbmdbXSBhcmd2X2Z1bGxGTFYgPSBudWxsOworCisJCQlhcmd2X2Z1bGxGTFYgPSBuZXcgU3RyaW5nW10geyBnZXRQYXRoVG9GRk1QRUcoKSwgIi1pIiwgbW92aWVQYXRoLAorCQkJCQkiLWFyIiwgIjIyMDUwIiwgIi1hY29kZWMiLCAibGlibXAzbGFtZSIsICItYWIiLCAiMzJrIiwKKwkJCQkJIi12Y29kZWMiLCAiZmx2IiwKKwkJCQkJb3V0cHV0RnVsbEZsdi5nZXRDYW5vbmljYWxQYXRoKCkgfTsKKwkJCS8vICItcyIsIGZsdldpZHRoICsgIngiICsgZmx2SGVpZ2h0LCAKKworCQkJbG9nLmRlYnVnKCJTVEFSVCBnZW5lcmF0ZUZ1bGxGTFYgIyMjIyMjIyMjIyMjIyMjIyMgIik7CisJCQlTdHJpbmcgdFN0cmluZyA9ICIiOworCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBhcmd2X2Z1bGxGTFYubGVuZ3RoOyBpKyspIHsKKwkJCQl0U3RyaW5nICs9IGFyZ3ZfZnVsbEZMVltpXSArICIgIjsKKwkJCQkvLyBsb2cuZGVidWcoIiBpICIgKyBpICsgIiBhcmd2LWkgIiArIGFyZ3ZfZnVsbEZMVltpXSk7CisJCQl9CisJCQlsb2cuZGVidWcodFN0cmluZyk7CisJCQlsb2cuZGVidWcoIkVORCBnZW5lcmF0ZUZ1bGxGTFYgIyMjIyMjIyMjIyMjIyMjIyMgIik7CisJCQkKKwkJCUNvbnZlcnRlclByb2Nlc3NSZXN1bHQgcmV0dXJuTWFwQ29udmVydEZMViA9IFByb2Nlc3NIZWxwZXIuZXhlY3V0ZVNjcmlwdCgidXBsb2FkRkxWIElEIDo6ICIKKwkJCQkJKyBmaWxlRXhwbG9yZXJJdGVtLmdldEZpbGVFeHBsb3Jlckl0ZW1JZCgpLCBhcmd2X2Z1bGxGTFYpOworCQkJCisJCQkvL1BhcnNlIHRoZSB3aWR0aCBoZWlnaHQgZnJvbSB0aGUgRkZNUEVHIG91dHB1dAorCQkJRmx2RGltZW5zaW9uIGZsdkRpbWVuc2lvbiA9IGdldEZsdkRpbWVuc2lvbihyZXR1cm5NYXBDb252ZXJ0RkxWLmdldEVycm9yKCkpOworCQkJaW50IGZsdldpZHRoID0gZmx2RGltZW5zaW9uLndpZHRoOworCQkJaW50IGZsdkhlaWdodCA9IGZsdkRpbWVuc2lvbi5oZWlnaHQ7CisJCQkKKwkJCQorCQkJZmlsZUV4cGxvcmVySXRlbS5zZXRGbHZXaWR0aChmbHZXaWR0aCk7CisJCQlmaWxlRXhwbG9yZXJJdGVtLnNldEZsdkhlaWdodChmbHZIZWlnaHQpOworCisJCQlyZXR1cm5Mb2cuYWRkKHJldHVybk1hcENvbnZlcnRGTFYpOworCisJCQlTdHJpbmcgaGFzaEZpbGVGdWxsTmFtZUpQRUcgPSAiVVBMT0FERkxWXyIKKwkJCQkJKyBmaWxlRXhwbG9yZXJJdGVtLmdldEZpbGVFeHBsb3Jlckl0ZW1JZCgpICsgIi5qcGciOworCQkJRmlsZSBvdXRQdXRKcGVnID0gbmV3IEZpbGUoZ2V0U3RyZWFtRm9sZGVyKCksIG5hbWUgKyAiLmpwZyIpOworCisJCQlmaWxlRXhwbG9yZXJJdGVtLnNldFByZXZpZXdJbWFnZShoYXNoRmlsZUZ1bGxOYW1lSlBFRyk7CisKKwkJCVN0cmluZ1tdIGFyZ3ZfcHJldmlld0ZMViA9IG5ldyBTdHJpbmdbXSB7IGdldFBhdGhUb0ZGTVBFRygpLCAiLWkiLAorCQkJCQlvdXRwdXRGdWxsRmx2LmdldENhbm9uaWNhbFBhdGgoKSwgIi12Y29kZWMiLCAibWpwZWciLCAiLXZmcmFtZXMiLCAiMSIsICItYW4iLAorCQkJCQkiLWYiLCAicmF3dmlkZW8iLCAiLXMiLCBmbHZXaWR0aCArICJ4IiArIGZsdkhlaWdodCwKKwkJCQkJb3V0UHV0SnBlZy5nZXRDYW5vbmljYWxQYXRoKCkgfTsKKworCQkJbG9nLmRlYnVnKCJTVEFSVCBwcmV2aWV3RnVsbEZMViAjIyMjIyMjIyMjIyMjIyMjIyAiKTsKKwkJCWxvZy5kZWJ1Zyhhcmd2X3ByZXZpZXdGTFYudG9TdHJpbmcoKSk7CisJCQlTdHJpbmcga1N0cmluZyA9ICIiOworCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBhcmd2X3ByZXZpZXdGTFYubGVuZ3RoOyBpKyspIHsKKwkJCQlrU3RyaW5nICs9IGFyZ3ZfcHJldmlld0ZMVltpXSArICIgIjsKKwkJCQkvLyBsb2cuZGVidWcoIiBpICIgKyBpICsgIiBhcmd2LWkgIiArIGFyZ3ZfcHJldmlld0ZMVltpXSk7CisJCQl9CisJCQlsb2cuZGVidWcoa1N0cmluZyk7CisJCQlsb2cuZGVidWcoIkVORCBwcmV2aWV3RnVsbEZMViAjIyMjIyMjIyMjIyMjIyMjIyAiKTsKKworCQkJcmV0dXJuTG9nLmFkZChQcm9jZXNzSGVscGVyLmV4ZWN1dGVTY3JpcHQoInByZXZpZXdVcGxvYWQgSUQgOjogIgorCQkJCQkJCSsgZmlsZUV4cGxvcmVySXRlbS5nZXRGaWxlRXhwbG9yZXJJdGVtSWQoKSwKKwkJCQkJCQlhcmd2X3ByZXZpZXdGTFYpKTsKKworCQkJdGhpcy5maWxlRXhwbG9yZXJJdGVtRGFvSW1wbC51cGRhdGVGaWxlT3JGb2xkZXIoZmlsZUV4cGxvcmVySXRlbSk7CisKKwkJCWZvciAoQ29udmVydGVyUHJvY2Vzc1Jlc3VsdCByZXR1cm5NYXAgOiByZXR1cm5Mb2cpIHsKKwkJCQl0aGlzLmZsdlJlY29yZGluZ0xvZ0Rhb0ltcGwuYWRkRkxWUmVjb3JkaW5nTG9nKAorCQkJCQkJImdlbmVyYXRlRkZNUEVHIiwgbnVsbCwgcmV0dXJuTWFwKTsKKwkJCX0KKwkJCQorCQkJCisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbY29udmVydFRvRkxWXSIsIGVycik7CisJCQlyZXR1cm5Mb2cuYWRkKG5ldyBDb252ZXJ0ZXJQcm9jZXNzUmVzdWx0KCJjb252ZXJ0VG9GTFYiLCBlcnIuZ2V0TWVzc2FnZSgpLCBlcnIpKTsKKwkJfQorCisJCXJldHVybiByZXR1cm5Mb2c7CisJfQorCQorCXByaXZhdGUgRmx2RGltZW5zaW9uIGdldEZsdkRpbWVuc2lvbihTdHJpbmcgdHh0KSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkJCisJCVBhdHRlcm4gcCA9IFBhdHRlcm4uY29tcGlsZSgiXFxkezIsNH0oeClcXGR7Miw0fSIpOworCQkKKwkJTWF0Y2hlciBtYXRjaGVyID0gcC5tYXRjaGVyKHR4dCk7CisJCQorCQl3aGlsZSAoIG1hdGNoZXIuZmluZCgpICkgeworCQkJU3RyaW5nIGZvdW5kUmVzb2x1dGlvbiA9IHR4dC5zdWJzdHJpbmcobWF0Y2hlci5zdGFydCgpLCBtYXRjaGVyLmVuZCgpKTsKKwkJCQorCQkJU3RyaW5nW10gcmVzdWx0aW9ucyA9IGZvdW5kUmVzb2x1dGlvbi5zcGxpdCgieCIpOworCQkJCisJCQlyZXR1cm4gbmV3IEZsdkRpbWVuc2lvbihJbnRlZ2VyLnZhbHVlT2YocmVzdWx0aW9uc1swXSkuaW50VmFsdWUoKSwgSW50ZWdlci52YWx1ZU9mKHJlc3VsdGlvbnNbMV0pLmludFZhbHVlKCkpOworCQkJCisJICAgIH0KKwkJCisJCXJldHVybiBudWxsOworCX0KKwkKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2ZsdnJlY29yZC9jb252ZXJ0ZXIvRmx2SW50ZXJ2aWV3Q29udmVydGVyLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9mbHZyZWNvcmQvY29udmVydGVyL0ZsdkludGVydmlld0NvbnZlcnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhYTJhYjYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9mbHZyZWNvcmQvY29udmVydGVyL0ZsdkludGVydmlld0NvbnZlcnRlci5qYXZhCkBAIC0wLDAgKzEsNTgzIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuZmx2cmVjb3JkLmNvbnZlcnRlcjsKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5MaW5rZWRMaXN0OworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLnRyYW5zYWN0aW9uLnV0aWwuRmlsZUhlbHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5mbHZyZWNvcmQuRmx2UmVjb3JkaW5nRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuZmx2cmVjb3JkLkZsdlJlY29yZGluZ0xvZ0RhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmZsdnJlY29yZC5GbHZSZWNvcmRpbmdNZXRhRGF0YURhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kb2N1bWVudHMuR2VuZXJhdGVUaHVtYnM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZG9jdW1lbnRzLmJlYW5zLkNvbnZlcnRlclByb2Nlc3NSZXN1bHQ7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuZmx2cmVjb3JkLkZsdlJlY29yZGluZzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5mbHZyZWNvcmQuRmx2UmVjb3JkaW5nTWV0YURhdGE7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMuUHJvY2Vzc0hlbHBlcjsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uQXV0b3dpcmVkOworCitwdWJsaWMgY2xhc3MgRmx2SW50ZXJ2aWV3Q29udmVydGVyIGV4dGVuZHMgQmFzZUNvbnZlcnRlciB7CisJcHJpdmF0ZSBpbnQgbGVmdFNpZGVMb3VkID0gMTsKKwlwcml2YXRlIGludCByaWdodFNpZGVMb3VkID0gMTsKKwlwcml2YXRlIEludGVnZXIgbGVmdFNpZGVUaW1lID0gMDsKKwlwcml2YXRlIEludGVnZXIgcmlnaHRTaWRlVGltZSA9IDA7CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKAorCQkJRmx2SW50ZXJ2aWV3Q29udmVydGVyLmNsYXNzLAorCQkJT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCisJLy8gU3ByaW5nIGxvYWRlZCBCZWFucworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEZsdlJlY29yZGluZ0RhbyBmbHZSZWNvcmRpbmdEYW9JbXBsID0gbnVsbDsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBGbHZSZWNvcmRpbmdNZXRhRGF0YURhbyBmbHZSZWNvcmRpbmdNZXRhRGF0YURhb0ltcGwgPSBudWxsOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEZsdlJlY29yZGluZ0xvZ0RhbyBmbHZSZWNvcmRpbmdMb2dEYW9JbXBsOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEdlbmVyYXRlVGh1bWJzIGdlbmVyYXRlVGh1bWJzOworCisJcHVibGljIHZvaWQgc3RhcnRSZUNvbnZlcnNpb24oTG9uZyBmbHZSZWNvcmRpbmdJZCwgSW50ZWdlciBsZWZ0U2lkZUxvdWQsCisJCQlJbnRlZ2VyIHJpZ2h0U2lkZUxvdWQsIEludGVnZXIgbGVmdFNpZGVUaW1lLCBJbnRlZ2VyIHJpZ2h0U2lkZVRpbWUpIHsKKworCQlsb2cuZGVidWcoIisrKysrKysrKysrKyBsZWZ0U2lkZUxvdWQgOjogIiArIGxlZnRTaWRlTG91ZCk7CisJCWxvZy5kZWJ1ZygiKysrKysrKysrKysrIHJpZ2h0U2lkZUxvdWQgOjogIiArIHJpZ2h0U2lkZUxvdWQpOworCisJCXRoaXMubGVmdFNpZGVMb3VkICs9IGxlZnRTaWRlTG91ZDsKKwkJdGhpcy5yaWdodFNpZGVMb3VkICs9IHJpZ2h0U2lkZUxvdWQ7CisKKwkJdGhpcy5sZWZ0U2lkZVRpbWUgPSBsZWZ0U2lkZVRpbWU7CisJCXRoaXMucmlnaHRTaWRlVGltZSA9IHJpZ2h0U2lkZVRpbWU7CisKKwkJbG9nLmRlYnVnKCIrKysrKysrKysrKysgdGhpcy5sZWZ0U2lkZUxvdWQgOjogIiArIHRoaXMubGVmdFNpZGVMb3VkKTsKKwkJbG9nLmRlYnVnKCIrKysrKysrKysrKysgdGhpcy5yaWdodFNpZGVMb3VkIDo6ICIgKyB0aGlzLnJpZ2h0U2lkZUxvdWQpOworCQlsb2cuZGVidWcoIisrKysrKysrKysrKyB0aGlzLmxlZnRTaWRlVGltZSA6OiAiICsgdGhpcy5sZWZ0U2lkZVRpbWUpOworCQlsb2cuZGVidWcoIisrKysrKysrKysrKyB0aGlzLnJpZ2h0U2lkZVRpbWUgOjogIiArIHRoaXMucmlnaHRTaWRlVGltZSk7CisJCXN0YXJ0Q29udmVyc2lvbihmbHZSZWNvcmRpbmdJZCwgdHJ1ZSk7CisJfQorCisJcHVibGljIHZvaWQgc3RhcnRDb252ZXJzaW9uKExvbmcgZmx2UmVjb3JkaW5nSWQpIHsKKwkJc3RhcnRDb252ZXJzaW9uKGZsdlJlY29yZGluZ0lkLCBmYWxzZSk7CisJfQorCQorCXB1YmxpYyB2b2lkIHN0YXJ0Q29udmVyc2lvbihMb25nIGZsdlJlY29yZGluZ0lkLCBib29sZWFuIHJlY29udmVyc2lvbikgeworCQl0cnkgeworCisJCQlGbHZSZWNvcmRpbmcgZmx2UmVjb3JkaW5nID0gdGhpcy5mbHZSZWNvcmRpbmdEYW9JbXBsCisJCQkJCS5nZXRGbHZSZWNvcmRpbmdCeUlkKGZsdlJlY29yZGluZ0lkKTsKKwkJCWxvZy5kZWJ1ZygiZmx2UmVjb3JkaW5nICIgKyBmbHZSZWNvcmRpbmcuZ2V0Rmx2UmVjb3JkaW5nSWQoKSk7CisKKwkJCS8vIFN0cmlwIEF1ZGlvIG91dCBvZiBhbGwgQXVkaW8tRkxWcworCQkJc3RyaXBBdWRpb0Zyb21GTFZzKGZsdlJlY29yZGluZywgcmVjb252ZXJzaW9uKTsKKworCQkJLy8gQWRkIGVtcHR5IHBpZWNlcyBhdCB0aGUgYmVnaW5uaW5nIGFuZCBlbmQgb2YgdGhlIHdhdgorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW3N0YXJ0Q29udmVyc2lvbl0iLCBlcnIpOworCQl9CisJfQorCQorCXByaXZhdGUgU3RyaW5nW10gbWVyZ2VBdWRpb1RvV2F2ZXMoTGlzdDxTdHJpbmc+IGxpc3RPZkZ1bGxXYXZlRmlsZXMsIFN0cmluZyBvdXRwdXRGdWxsV2F2LCBMaXN0PEZsdlJlY29yZGluZ01ldGFEYXRhPiBtZXRhRGF0YUxpc3QpIHsKKwkJU3RyaW5nW10gYXJndl9mdWxsX3NveCA9IG5ldyBTdHJpbmdbbGlzdE9mRnVsbFdhdmVGaWxlcy5zaXplKCkgKyA1XTsKKwkJYXJndl9mdWxsX3NveFswXSA9IHRoaXMuZ2V0UGF0aFRvU29YKCk7CisJCWFyZ3ZfZnVsbF9zb3hbMV0gPSAiLW0iOworCisJCWludCBjb3VudGVyID0gMjsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBsaXN0T2ZGdWxsV2F2ZUZpbGVzLnNpemUoKTsgaSsrKSB7CisJCQlmb3IgKEZsdlJlY29yZGluZ01ldGFEYXRhIGZsdlJlY29yZGluZ01ldGFEYXRhIDogbWV0YURhdGFMaXN0KSB7CisJCQkJU3RyaW5nIGhhc2hGaWxlRnVsbE5hbWVTdG9yZWQgPSBmbHZSZWNvcmRpbmdNZXRhRGF0YQorCQkJCQkJLmdldEZ1bGxXYXZBdWRpb0RhdGEoKTsKKworCQkJCVN0cmluZyBmdWxsRmlsZVBhdGggPSBsaXN0T2ZGdWxsV2F2ZUZpbGVzLmdldChpKTsKKwkJCQlTdHJpbmcgZmlsZU5hbWVPbmx5ID0gbmV3IEZpbGUoZnVsbEZpbGVQYXRoKS5nZXROYW1lKCk7CisKKwkJCQlpZiAoaGFzaEZpbGVGdWxsTmFtZVN0b3JlZC5lcXVhbHMoZmlsZU5hbWVPbmx5KSkgeworCQkJCQlpZiAoZmx2UmVjb3JkaW5nTWV0YURhdGEuZ2V0SW50ZXJpZXdQb2RJZCgpID09IDEpIHsKKwkJCQkJCWFyZ3ZfZnVsbF9zb3hbY291bnRlcl0gPSAiLXYgIgorCQkJCQkJCQkrIHRoaXMubGVmdFNpZGVMb3VkOworCQkJCQkJY291bnRlcisrOworCQkJCQl9CisJCQkJCWlmIChmbHZSZWNvcmRpbmdNZXRhRGF0YS5nZXRJbnRlcmlld1BvZElkKCkgPT0gMikgeworCQkJCQkJYXJndl9mdWxsX3NveFtjb3VudGVyXSA9ICItdiAiCisJCQkJCQkJCSsgdGhpcy5yaWdodFNpZGVMb3VkOworCQkJCQkJY291bnRlcisrOworCQkJCQl9CisJCQkJfQorCQkJfQorCQkJYXJndl9mdWxsX3NveFtjb3VudGVyXSA9IGxpc3RPZkZ1bGxXYXZlRmlsZXMuZ2V0KGkpOworCQkJY291bnRlcisrOworCQl9CisKKwkJYXJndl9mdWxsX3NveFtjb3VudGVyXSA9IG91dHB1dEZ1bGxXYXY7CisJCQorCQlyZXR1cm4gYXJndl9mdWxsX3NveDsKKwl9CisJCisJcHVibGljIHZvaWQgc3RyaXBBdWRpb0Zyb21GTFZzKEZsdlJlY29yZGluZyBmbHZSZWNvcmRpbmcsIGJvb2xlYW4gcmVjb252ZXJzaW9uKSB7CisJCUxpc3Q8Q29udmVydGVyUHJvY2Vzc1Jlc3VsdD4gcmV0dXJuTG9nID0gbmV3IEFycmF5TGlzdDxDb252ZXJ0ZXJQcm9jZXNzUmVzdWx0PigpOworCQlMaXN0PFN0cmluZz4gbGlzdE9mRnVsbFdhdmVGaWxlcyA9IG5ldyBMaW5rZWRMaXN0PFN0cmluZz4oKTsKKwkJRmlsZSBzdHJlYW1Gb2xkZXIgPSBnZXRTdHJlYW1Gb2xkZXIoZmx2UmVjb3JkaW5nKTsKKwkJTGlzdDxGbHZSZWNvcmRpbmdNZXRhRGF0YT4gbWV0YURhdGFMaXN0ID0gZmx2UmVjb3JkaW5nTWV0YURhdGFEYW9JbXBsCisJCQkJLmdldEZsdlJlY29yZGluZ01ldGFEYXRhQXVkaW9GbHZzQnlSZWNvcmRpbmcoZmx2UmVjb3JkaW5nCisJCQkJCQkuZ2V0Rmx2UmVjb3JkaW5nSWQoKSk7CisKKwkJc3RyaXBBdWRpb0ZpcnN0UGFzcyhmbHZSZWNvcmRpbmcsIHJldHVybkxvZywgbGlzdE9mRnVsbFdhdmVGaWxlcywKKwkJCQlzdHJlYW1Gb2xkZXIsIG1ldGFEYXRhTGlzdCk7CisJCXRyeSB7CisJCQkvLyBNZXJnZSBXYXZlIHRvIEZ1bGwgTGVuZ3RoCisJCQlGaWxlIHN0cmVhbUZvbGRlckdlbmVyYWwgPSBnZXRTdHJlYW1Gb2xkZXIoKTsKKworCQkJU3RyaW5nIGhhc2hGaWxlRnVsbE5hbWUgPSAiSU5URVJWSUVXXyIKKwkJCQkJKyBmbHZSZWNvcmRpbmcuZ2V0Rmx2UmVjb3JkaW5nSWQoKSArICJfRklOQUxfV0FWRS53YXYiOworCQkJU3RyaW5nIG91dHB1dEZ1bGxXYXYgPSBzdHJlYW1Gb2xkZXIuZ2V0QWJzb2x1dGVQYXRoKCkgKyBGaWxlLnNlcGFyYXRvckNoYXIgKyBoYXNoRmlsZUZ1bGxOYW1lOworCQkJZGVsZXRlRmlsZUlmRXhpc3RzKG91dHB1dEZ1bGxXYXYpOworCisJCQlpZiAobGlzdE9mRnVsbFdhdmVGaWxlcy5zaXplKCkgPT0gMSkgeworCisJCQkJb3V0cHV0RnVsbFdhdiA9IGxpc3RPZkZ1bGxXYXZlRmlsZXMuZ2V0KDApOworCisJCQl9IGVsc2UgaWYgKGxpc3RPZkZ1bGxXYXZlRmlsZXMuc2l6ZSgpID4gMCkgeworCQkJCVN0cmluZ1tdIGFyZ3ZfZnVsbF9zb3g7CisJCQkJaWYgKHJlY29udmVyc2lvbikgeworCQkJCQlhcmd2X2Z1bGxfc294ID0gbWVyZ2VBdWRpb1RvV2F2ZXMobGlzdE9mRnVsbFdhdmVGaWxlcywgb3V0cHV0RnVsbFdhdiwgbWV0YURhdGFMaXN0KTsKKwkJCQl9IGVsc2UgeworCQkJCQlhcmd2X2Z1bGxfc294ID0gbWVyZ2VBdWRpb1RvV2F2ZXMobGlzdE9mRnVsbFdhdmVGaWxlcywgb3V0cHV0RnVsbFdhdik7CisJCQkJfQorCisJCQkJbG9nLmRlYnVnKCJTVEFSVCBtZXJnZUF1ZGlvVG9XYXZlcyAjIyMjIyMjIyMjIyMjIyMjIyAiKTsKKwkJCQlsb2cuZGVidWcoYXJndl9mdWxsX3NveC50b1N0cmluZygpKTsKKwkJCQlTdHJpbmcgaVN0cmluZyA9ICIiOworCQkJCWZvciAoaW50IGkgPSAwOyBpIDwgYXJndl9mdWxsX3NveC5sZW5ndGg7IGkrKykgeworCQkJCQlpU3RyaW5nICs9IGFyZ3ZfZnVsbF9zb3hbaV0gKyAiICI7CisJCQkJfQorCQkJCWxvZy5kZWJ1ZyhpU3RyaW5nKTsKKwkJCQlsb2cuZGVidWcoIkVORCBtZXJnZUF1ZGlvVG9XYXZlcyAjIyMjIyMjIyMjIyMjIyMjIyAiKTsKKworCQkJCXJldHVybkxvZy5hZGQoUHJvY2Vzc0hlbHBlci5leGVjdXRlU2NyaXB0KCJtZXJnZVdhdmUiLAorCQkJCQkJYXJndl9mdWxsX3NveCkpOworCQkJfSBlbHNlIHsKKworCQkJCS8vIGNyZWF0ZSBkZWZhdWx0IEF1ZGlvIHRvIG1lcmdlIGl0LgorCQkJCS8vIHN0cmlwIHRvIGNvbnRlbnQgbGVuZ3RoCisJCQkJRmlsZSBvdXRwdXRXYXYgPSBuZXcgRmlsZShzdHJlYW1Gb2xkZXJHZW5lcmFsLCAib25lX3NlY29uZC53YXYiKTsKKworCQkJCS8vIENhbGN1bGF0ZSBkZWx0YSBhdCBiZWdpbm5pbmcKKwkJCQlMb25nIGRlbHRhVGltZU1pbGxpU2Vjb25kcyA9IGZsdlJlY29yZGluZy5nZXRSZWNvcmRFbmQoKQorCQkJCQkJLmdldFRpbWUoKSAtIGZsdlJlY29yZGluZy5nZXRSZWNvcmRTdGFydCgpLmdldFRpbWUoKTsKKwkJCQlGbG9hdCBkZWx0YVBhZGRpbmcgPSAoRmxvYXQucGFyc2VGbG9hdChkZWx0YVRpbWVNaWxsaVNlY29uZHMKKwkJCQkJCS50b1N0cmluZygpKSAvIDEwMDApIC0gMTsKKworCQkJCVN0cmluZ1tdIGFyZ3ZfZnVsbF9zb3ggPSBuZXcgU3RyaW5nW10geyB0aGlzLmdldFBhdGhUb1NvWCgpLAorCQkJCQkJb3V0cHV0V2F2LmdldENhbm9uaWNhbFBhdGgoKSwgb3V0cHV0RnVsbFdhdiwgInBhZCIsICIwIiwKKwkJCQkJCWRlbHRhUGFkZGluZy50b1N0cmluZygpIH07CisKKwkJCQlsb2cuZGVidWcoIlNUQVJUIGdlbmVyYXRlU2FtcGxlQXVkaW8gIyMjIyMjIyMjIyMjIyMjIyMgIik7CisJCQkJU3RyaW5nIHRTdHJpbmcgPSAiIjsKKwkJCQlmb3IgKGludCBpID0gMDsgaSA8IGFyZ3ZfZnVsbF9zb3gubGVuZ3RoOyBpKyspIHsKKwkJCQkJdFN0cmluZyArPSBhcmd2X2Z1bGxfc294W2ldICsgIiAiOworCQkJCX0KKwkJCQlsb2cuZGVidWcodFN0cmluZyk7CisJCQkJbG9nLmRlYnVnKCJFTkQgZ2VuZXJhdGVTYW1wbGVBdWRpbyAjIyMjIyMjIyMjIyMjIyMjIyAiKTsKKworCQkJCXJldHVybkxvZy5hZGQoUHJvY2Vzc0hlbHBlci5leGVjdXRlU2NyaXB0KCJtZXJnZVdhdmUiLAorCQkJCQkJYXJndl9mdWxsX3NveCkpOworCisJCQl9CisKKwkJCS8vIE1lcmdlIEF1ZGlvIHdpdGggVmlkZW8gLyBDYWxjdWxhdGUgcmVzdWx0aW5nIEZMVgorCisJCQkvLyBTdGFydCBleHRyYWN0aW5nIGltYWdlIHNlcXVlbmNlCisJCQlpbnQgZnJhbWVSYXRlID0gMjU7CisKKwkJCWZvciAoRmx2UmVjb3JkaW5nTWV0YURhdGEgZmx2UmVjb3JkaW5nTWV0YURhdGEgOiBtZXRhRGF0YUxpc3QpIHsKKworCQkJCS8vIEZMViB0byAyNCBGUFMgU2VxdWVuY2UgQVZJCisJCQkJU3RyaW5nIGlucHV0Rmx2ID0gbmV3IEZpbGUoc3RyZWFtRm9sZGVyLCBmbHZSZWNvcmRpbmdNZXRhRGF0YS5nZXRTdHJlYW1OYW1lKCkgKyAiLmZsdiIpLmdldENhbm9uaWNhbFBhdGgoKTsKKworCQkJCUZpbGUgaW5wdXRGbHZGaWxlID0gbmV3IEZpbGUoaW5wdXRGbHYpOworCisJCQkJaWYgKGlucHV0Rmx2RmlsZS5leGlzdHMoKSkgeworCQkJCQkvLyBUTyBJbWFnZSBTZXF1ZW5jZQorCisJCQkJCS8vIEltYWdlIEZvbGRlcgorCQkJCQlGaWxlIGltYWdlU2VxdWVuY2VGb2xkZXIgPSBuZXcgRmlsZShzdHJlYW1Gb2xkZXIKKwkJCQkJCSwgIiIgKyBmbHZSZWNvcmRpbmdNZXRhRGF0YS5nZXRGbHZSZWNvcmRpbmdNZXRhRGF0YUlkKCkpOworCQkJCQlpbWFnZVNlcXVlbmNlRm9sZGVyLm1rZGlyKCk7CisJCQkJCQorCQkJCQlTdHJpbmcgb3V0cHV0SW1hZ2VzID0gbmV3IEZpbGUoaW1hZ2VTZXF1ZW5jZUZvbGRlciwgImltYWdlJWQucG5nIikuZ2V0Q2Fub25pY2FsUGF0aCgpOworCisJCQkJCVN0cmluZ1tdIGFyZ3ZfaW1hZ2VTZXEgPSBuZXcgU3RyaW5nW10geworCQkJCQkJCXRoaXMuZ2V0UGF0aFRvRkZNUEVHKCksICItaSIsIGlucHV0Rmx2LCAiLXIiLAorCQkJCQkJCSIiICsgZnJhbWVSYXRlLCAiLXMiLCAiMzIweDI0MCIsIG91dHB1dEltYWdlcyB9OworCisJCQkJCWxvZy5kZWJ1ZygiU1RBUlQgZ2VuZXJhdGVJbWFnZVNlcXVlbmNlICMjIyMjIyMjIyMjIyMjIyMjICIpOworCQkJCQlTdHJpbmcgaVN0cmluZyA9ICIiOworCQkJCQlmb3IgKGludCBpID0gMDsgaSA8IGFyZ3ZfaW1hZ2VTZXEubGVuZ3RoOyBpKyspIHsKKwkJCQkJCWlTdHJpbmcgKz0gYXJndl9pbWFnZVNlcVtpXSArICIgIjsKKwkJCQkJfQorCQkJCQlsb2cuZGVidWcoaVN0cmluZyk7CisJCQkJCWxvZy5kZWJ1ZygiRU5EIGdlbmVyYXRlSW1hZ2VTZXF1ZW5jZSAjIyMjIyMjIyMjIyMjIyMjIyAiKTsKKworCQkJCQlyZXR1cm5Mb2cuYWRkKFByb2Nlc3NIZWxwZXIuZXhlY3V0ZVNjcmlwdCgKKwkJCQkJCQkiZ2VuZXJhdGVJbWFnZVNlcXVlbmNlIiwgYXJndl9pbWFnZVNlcSkpOworCisJCQkJfQorCisJCQl9CisKKwkJCS8vIERlZmF1bHQgSW1hZ2UgZm9yIGVtcHR5IGludGVydmlldyB2aWRlbyBwb2RzCisJCQlGaWxlIGRlZmF1bHRJbnRlcnZpZXdJbWFnZUZpbGUgPSBuZXcgRmlsZShzdHJlYW1Gb2xkZXJHZW5lcmFsLCAiZGVmYXVsdF9pbnRlcnZpZXdfaW1hZ2UucG5nIik7CisKKwkJCWlmICghZGVmYXVsdEludGVydmlld0ltYWdlRmlsZS5leGlzdHMoKSkgeworCQkJCXRocm93IG5ldyBFeGNlcHRpb24oImRlZmF1bHRJbnRlcnZpZXdJbWFnZUZpbGUgZG9lcyBub3QgZXhpc3QhIik7CisJCQl9CisJCQlTdHJpbmcgZGVmYXVsdEludGVydmlld0ltYWdlID0gZGVmYXVsdEludGVydmlld0ltYWdlRmlsZS5nZXRDYW5vbmljYWxQYXRoKCk7CisKKwkJCS8vIENyZWF0ZSBGb2xkZXIgZm9yIHRoZSBvdXRwdXQgSW1hZ2UgU2VxdWVuY2UKKwkJCVN0cmluZyBvdXRwdXRJbWFnZU1lcmdlZERhdGEgPSBzdHJlYW1Gb2xkZXIuZ2V0QWJzb2x1dGVQYXRoKCkgKyBGaWxlLnNlcGFyYXRvckNoYXIgCisJCQkJCSsgIklOVEVSVklFV18iCSsgZmx2UmVjb3JkaW5nLmdldEZsdlJlY29yZGluZ0lkKCkgCisJCQkJCSsgRmlsZS5zZXBhcmF0b3JDaGFyOworCisJCQkvLyBNZXJnZWQgSW1hZ2UgRm9sZGVyCisJCQlGaWxlIG91dHB1dEltYWdlTWVyZ2VkRGF0ZUZvbGRlciA9IG5ldyBGaWxlKG91dHB1dEltYWdlTWVyZ2VkRGF0YSk7CisJCQlvdXRwdXRJbWFnZU1lcmdlZERhdGVGb2xkZXIubWtkaXIoKTsKKworCQkJLy8gR2VuZXJhdGUgdGhlIFNpbmdsZSBJbWFnZSBieSBzZXF1ZW5jaW5nCisJCQlib29sZWFuIGpvYlJ1bm5pbmcgPSB0cnVlOworCQkJbG9uZyBjdXJyZW50VGltZUluTWlsbGlTZWNvbmRzID0gMDsKKworCQkJbG9uZyBjb21wbGV0ZUxlbmd0aEluU2Vjb25kcyA9IGZsdlJlY29yZGluZy5nZXRSZWNvcmRFbmQoKQorCQkJCQkuZ2V0VGltZSgpIC0gZmx2UmVjb3JkaW5nLmdldFJlY29yZFN0YXJ0KCkuZ2V0VGltZSgpOworCisJCQlsb2cuZGVidWcoImNvbXBsZXRlTGVuZ3RoSW5TZWNvbmRzIDo6ICIgKyBjb21wbGV0ZUxlbmd0aEluU2Vjb25kcyk7CisKKwkJCWludCBzZXF1ZW5jZUNvdW50ZXIgPSAwOworCisJCQl3aGlsZSAoam9iUnVubmluZykgeworCisJCQkJLy8gUHJvY2VzcyBvbmUgU2Vjb25kIG9mIE1vdmllCisJCQkJU3RyaW5nW10gaW50ZXJ2aWV3UG9kMUltYWdlcyA9IG5ldyBTdHJpbmdbZnJhbWVSYXRlXTsKKwkJCQlTdHJpbmdbXSBpbnRlcnZpZXdQb2QySW1hZ2VzID0gbmV3IFN0cmluZ1tmcmFtZVJhdGVdOworCQkJCWludFtdIG91dHB1dEZyYW1lTnVtYmVycyA9IG5ldyBpbnRbZnJhbWVSYXRlXTsKKworCQkJCWZvciAoRmx2UmVjb3JkaW5nTWV0YURhdGEgZmx2UmVjb3JkaW5nTWV0YURhdGEgOiBtZXRhRGF0YUxpc3QpIHsKKworCQkJCQlsb25nIGRlbHRhU3RhcnRSZWNvcmRpbmcgPSBmbHZSZWNvcmRpbmdNZXRhRGF0YQorCQkJCQkJCS5nZXRSZWNvcmRTdGFydCgpLmdldFRpbWUoKQorCQkJCQkJCS0gZmx2UmVjb3JkaW5nLmdldFJlY29yZFN0YXJ0KCkuZ2V0VGltZSgpOworCisJCQkJCWlmIChmbHZSZWNvcmRpbmcuZ2V0UmVjb3JkU3RhcnQoKS5nZXRUaW1lKCkKKwkJCQkJCQkrIGN1cnJlbnRUaW1lSW5NaWxsaVNlY29uZHMgPj0gZmx2UmVjb3JkaW5nTWV0YURhdGEKKwkJCQkJCQkuZ2V0UmVjb3JkU3RhcnQoKS5nZXRUaW1lKCkKKwkJCQkJCQkmJiBmbHZSZWNvcmRpbmcuZ2V0UmVjb3JkU3RhcnQoKS5nZXRUaW1lKCkKKwkJCQkJCQkJCSsgY3VycmVudFRpbWVJbk1pbGxpU2Vjb25kcyA8PSBmbHZSZWNvcmRpbmdNZXRhRGF0YQorCQkJCQkJCQkJLmdldFJlY29yZEVuZCgpLmdldFRpbWUoKSkgeworCisJCQkJCQkvLyBDYWxjdWxhdGUgd2hpY2ggaW1hZ2VzIHNob3VsZCBiZSBpbiBoZXJlCisKKwkJCQkJCS8vIENhbGN1bGF0ZSB0aGUgcmVsYXRpdmUgc3RhcnRpbmcgcG9pbnQKKwkJCQkJCWxvbmcgdGhpc0ltYWdlU2VxdWVuY2VTdGFydGluZ1BvaW50ID0gY3VycmVudFRpbWVJbk1pbGxpU2Vjb25kcworCQkJCQkJCQktIGRlbHRhU3RhcnRSZWNvcmRpbmc7CisKKwkJCQkJCS8vIENhbGN1bGF0ZSB0aGUgZmlyc3QgYW5kIGZvbGxvd2luZyBmcmFtZVJhdGUgRlBTCisJCQkJCQkvLyBOdW1iZXIKKwkJCQkJCWludCBzZWNvbmRUb1N0YXJ0ID0gTG9uZy52YWx1ZU9mKAorCQkJCQkJCQl0aGlzSW1hZ2VTZXF1ZW5jZVN0YXJ0aW5nUG9pbnQgLyAxMDAwKQorCQkJCQkJCQkuaW50VmFsdWUoKTsKKworCQkJCQkJaW50IGZpcnN0RnJhbWUgPSBzZWNvbmRUb1N0YXJ0ICogZnJhbWVSYXRlOworCisJCQkJCQlmb3IgKGludCBpID0gMDsgaSA8IGZyYW1lUmF0ZTsgaSsrKSB7CisKKwkJCQkJCQlpbnQgY3VycmVudEltYWdlTnVtYmVyID0gZmlyc3RGcmFtZSArIGk7CisJCQkJCQkJY3VycmVudEltYWdlTnVtYmVyIC09IChmcmFtZVJhdGUgLyAyKTsgCisJCQkJCQkJLy8gUmVtb3ZlIHRoZSBmaXJzdCBoYWxmIHNlY29uZHMgYW5kIGZpbGwKKwkJCQkJCQkvLyBpdCB1cCB3aXRoIGJsYWNrIHNjcmVlbnMKKworCQkJCQkJCS8vIFJlbW92ZSB0aGUgZmlyc3QgcGVyaW9kIG9mIEltYWdlcywgdGhpcyBpcyB3aGVyZQorCQkJCQkJCS8vIHRoZSB1c2VyIGhhcyBzdGFydGVkCisJCQkJCQkJLy8gdG8gc2hhcmUgaGlzIFZpZGVvIGJ1dCBkb2VzIG5vdCBoYXZlIGFncmVlZCBpbgorCQkJCQkJCS8vIHRoZSBGbGFzaCBTZWN1cml0eSBXYXJuaW5nIERpYWxvZ3VlCisJCQkJCQkJSW50ZWdlciBpbml0aWFsR2FwU2Vjb25kcyA9IGZsdlJlY29yZGluZ01ldGFEYXRhCisJCQkJCQkJCQkuZ2V0SW5pdGlhbEdhcFNlY29uZHMoKTsKKwkJCQkJCQlpZiAoaW5pdGlhbEdhcFNlY29uZHMgIT0gbnVsbCkgeworCQkJCQkJCQlpbnQgaW5pdGlhbE1pc3NpbmdJbWFnZXMgPSBEb3VibGUudmFsdWVPZigKKwkJCQkJCQkJCQlNYXRoLmZsb29yKChpbml0aWFsR2FwU2Vjb25kcyAvIDEwMDApCisJCQkJCQkJCQkJCQkqIGZyYW1lUmF0ZSkpLmludFZhbHVlKCk7CisJCQkJCQkJCWN1cnJlbnRJbWFnZU51bWJlciAtPSBpbml0aWFsTWlzc2luZ0ltYWdlczsKKwkJCQkJCQl9CisKKwkJCQkJCQlTdHJpbmcgaW1hZ2VOYW1lID0gImltYWdlIiArIGN1cnJlbnRJbWFnZU51bWJlciArICIucG5nIjsKKworCQkJCQkJCUZpbGUgb3V0cHV0TWV0YUltYWdlRnVsbERhdGFGaWxlID0gbmV3IEZpbGUoc3RyZWFtRm9sZGVyCisJCQkJCQkJCSwgIiIgKyBmbHZSZWNvcmRpbmdNZXRhRGF0YS5nZXRGbHZSZWNvcmRpbmdNZXRhRGF0YUlkKCkKKwkJCQkJCQkJCSsgRmlsZS5zZXBhcmF0b3JDaGFyICsgaW1hZ2VOYW1lKTsKKwkJCQkJCQkKKwkJCQkJCQlTdHJpbmcgb3V0cHV0TWV0YUltYWdlRnVsbERhdGEgPSAKKwkJCQkJCQkJIW91dHB1dE1ldGFJbWFnZUZ1bGxEYXRhRmlsZS5leGlzdHMoKSA/IGRlZmF1bHRJbnRlcnZpZXdJbWFnZQorCQkJCQkJCQk6IG91dHB1dE1ldGFJbWFnZUZ1bGxEYXRhRmlsZS5nZXRDYW5vbmljYWxQYXRoKCk7CisKKwkJCQkJCQlpZiAoZmx2UmVjb3JkaW5nTWV0YURhdGEuZ2V0SW50ZXJpZXdQb2RJZCgpID09IDEpIHsKKwkJCQkJCQkJaW50ZXJ2aWV3UG9kMUltYWdlc1tpXSA9IG91dHB1dE1ldGFJbWFnZUZ1bGxEYXRhOworCQkJCQkJCX0gZWxzZSBpZiAoZmx2UmVjb3JkaW5nTWV0YURhdGEuZ2V0SW50ZXJpZXdQb2RJZCgpID09IDIpIHsKKwkJCQkJCQkJaW50ZXJ2aWV3UG9kMkltYWdlc1tpXSA9IG91dHB1dE1ldGFJbWFnZUZ1bGxEYXRhOworCQkJCQkJCX0KKworCQkJCQkJfQorCisJCQkJCX0KKworCQkJCX0KKworCQkJCS8vIFVwZGF0ZSBTZXF1ZW5jZSBDb3VudAorCQkJCWZvciAoaW50IGkgPSAwOyBpIDwgZnJhbWVSYXRlOyBpKyspIHsKKwkJCQkJb3V0cHV0RnJhbWVOdW1iZXJzW2ldID0gc2VxdWVuY2VDb3VudGVyOworCQkJCQlzZXF1ZW5jZUNvdW50ZXIrKzsKKwkJCQl9CisKKwkJCQkvLyBOb3cgd2Ugc2hvdWxkIGhhdmUgZm91bmQgdGhlIG5lZWRlZCBJbWFnZXMgdG8gY2FsY3VsYXRlLCBpbgorCQkJCS8vIGNhc2Ugbm90IHdlIGFkZCBhbiBlbXB0eSBibGFjayBzY3JlZW4KKwkJCQlmb3IgKGludCBpID0gMDsgaSA8IGZyYW1lUmF0ZTsgaSsrKSB7CisJCQkJCVN0cmluZyBhZGRaZXJvcyA9ICIiOworCisJCQkJCVN0cmluZyBvdXRwdXRJbWFnZU5hbWUgPSBvdXRwdXRJbWFnZU1lcmdlZERhdGEgKyAiaW1hZ2UiCisJCQkJCQkJKyBhZGRaZXJvcyArIG91dHB1dEZyYW1lTnVtYmVyc1tpXSArICIucG5nIjsKKworCQkJCQlpZiAoaW50ZXJ2aWV3UG9kMUltYWdlc1tpXSA9PSBudWxsKSB7CisJCQkJCQlpbnRlcnZpZXdQb2QxSW1hZ2VzW2ldID0gZGVmYXVsdEludGVydmlld0ltYWdlOworCQkJCQl9CisJCQkJCWlmIChpbnRlcnZpZXdQb2QySW1hZ2VzW2ldID09IG51bGwpIHsKKwkJCQkJCWludGVydmlld1BvZDJJbWFnZXNbaV0gPSBkZWZhdWx0SW50ZXJ2aWV3SW1hZ2U7CisJCQkJCX0KKworCQkJCQlpZiAoU3lzdGVtLmdldFByb3BlcnR5KCJvcy5uYW1lIikudG9VcHBlckNhc2UoKQorCQkJCQkJCS5pbmRleE9mKCJXSU5ET1dTIikgPT0gLTEpIHsKKwkJCQkJCVN0cmluZ1tdIGFyZ3ZfaW1hZ2VNYWdpY2sgPSBuZXcgU3RyaW5nW10geworCQkJCQkJCQl0aGlzLmdldFBhdGhUb0ltYWdlTWFnaWNrKCksICIrYXBwZW5kIiwKKwkJCQkJCQkJaW50ZXJ2aWV3UG9kMUltYWdlc1tpXSwgaW50ZXJ2aWV3UG9kMkltYWdlc1tpXSwKKwkJCQkJCQkJb3V0cHV0SW1hZ2VOYW1lIH07CisJCQkJCQlyZXR1cm5Mb2cuYWRkKFByb2Nlc3NIZWxwZXIuZXhlY3V0ZVNjcmlwdCgKKwkJCQkJCQkJImdlbmVyYXRlSW1hZ2VTZXF1ZW5jZSIsIGFyZ3ZfaW1hZ2VNYWdpY2spKTsKKwkJCQkJfSBlbHNlIHsKKwkJCQkJCXJldHVybkxvZy5hZGQocHJvY2Vzc0ltYWdlV2luZG93cygKKwkJCQkJCQkJaW50ZXJ2aWV3UG9kMUltYWdlc1tpXSwgaW50ZXJ2aWV3UG9kMkltYWdlc1tpXSwKKwkJCQkJCQkJb3V0cHV0SW1hZ2VOYW1lKSk7CisJCQkJCX0KKwkJCQl9CisKKwkJCQljdXJyZW50VGltZUluTWlsbGlTZWNvbmRzICs9IDEwMDA7CisKKwkJCQlkb3VibGUgY0xlbmd0aCA9IDEwMCAqICgoZG91YmxlKSBjdXJyZW50VGltZUluTWlsbGlTZWNvbmRzKQorCQkJCQkJLyBjb21wbGV0ZUxlbmd0aEluU2Vjb25kczsKKworCQkJCWludCBwcm9ncmVzcyA9IERvdWJsZS52YWx1ZU9mKGNMZW5ndGgpLmludFZhbHVlKCk7CisKKwkJCQlsb2cuZGVidWcoImNvbXBsZXRlTGVuZ3RoSW5TZWNvbmRzfGN1cnJlbnRUaW1lSW5NaWxsaVNlY29uZHMgIgorCQkJCQkJKyBjb21wbGV0ZUxlbmd0aEluU2Vjb25kcyArICJ8IgorCQkJCQkJKyBjdXJyZW50VGltZUluTWlsbGlTZWNvbmRzICsgInwiICsgcHJvZ3Jlc3MgKyAifCIKKwkJCQkJCSsgY0xlbmd0aCk7CisKKwkJCQlmbHZSZWNvcmRpbmdEYW9JbXBsLnVwZGF0ZUZsdlJlY29yZGluZ1Byb2dyZXNzKAorCQkJCQkJZmx2UmVjb3JkaW5nLmdldEZsdlJlY29yZGluZ0lkKCksIHByb2dyZXNzKTsKKworCQkJCWlmIChjdXJyZW50VGltZUluTWlsbGlTZWNvbmRzID49IGNvbXBsZXRlTGVuZ3RoSW5TZWNvbmRzKSB7CisKKwkJCQkJam9iUnVubmluZyA9IGZhbHNlOworCisJCQkJfQorCisJCQl9CisKKwkJCS8vIEdlbmVyYXRlIE1vdmllIGJ5IHNlcXVlbmNlIG9mIEltYWdlcworCisJCQlTdHJpbmcgaW1hZ2VzY29tcGxldGUgPSBvdXRwdXRJbWFnZU1lcmdlZERhdGEgKyAiaW1hZ2UlZC5wbmciOworCisJCQlTdHJpbmdbXSBhcmd2X2dlbmVyYXRlZE1vdmlldyA9IG51bGw7CisKKwkJCVN0cmluZyBpbnB1dFNjcmVlbkZ1bGxGbHYgPSBzdHJlYW1Gb2xkZXIuZ2V0QWJzb2x1dGVQYXRoKCkgKyBGaWxlLnNlcGFyYXRvckNoYXIKKwkJCQkJKyAiQ09NUExFVEVfSU5URVJWSUVXXyIgKyBmbHZSZWNvcmRpbmcuZ2V0Rmx2UmVjb3JkaW5nSWQoKQorCQkJCQkrICIuZmx2IjsKKwkJCWRlbGV0ZUZpbGVJZkV4aXN0cyhpbnB1dFNjcmVlbkZ1bGxGbHYpOworCisJCQlhcmd2X2dlbmVyYXRlZE1vdmlldyA9IG5ldyBTdHJpbmdbXSB7IHRoaXMuZ2V0UGF0aFRvRkZNUEVHKCksICItaSIsCisJCQkJCWltYWdlc2NvbXBsZXRlLCAiLXIiLCAiIiArIGZyYW1lUmF0ZSwgIi12Y29kZWMiLCAiZmx2IiwKKwkJCQkJIi1xbWF4IiwgIjEiLCAiLXFtaW4iLCAiMSIsIGlucHV0U2NyZWVuRnVsbEZsdiB9OworCisJCQlsb2cuZGVidWcoIlNUQVJUIGdlbmVyYXRlRnVsbEJ5U2VxdWVuY2VGTFYgIyMjIyMjIyMjIyMjIyMjIyMgIik7CisJCQlTdHJpbmcgdFN0cmluZzIgPSAiIjsKKwkJCWZvciAoaW50IGkgPSAwOyBpIDwgYXJndl9nZW5lcmF0ZWRNb3ZpZXcubGVuZ3RoOyBpKyspIHsKKwkJCQl0U3RyaW5nMiArPSBhcmd2X2dlbmVyYXRlZE1vdmlld1tpXSArICIgIjsKKwkJCX0KKwkJCWxvZy5kZWJ1Zyh0U3RyaW5nMik7CisJCQlsb2cuZGVidWcoIkVORCBnZW5lcmF0ZUZ1bGxCeVNlcXVlbmNlRkxWICMjIyMjIyMjIyMjIyMjIyMjICIpOworCisJCQlyZXR1cm5Mb2cuYWRkKFByb2Nlc3NIZWxwZXIuZXhlY3V0ZVNjcmlwdCgKKwkJCQkJImdlbmVyYXRlRnVsbEJ5U2VxdWVuY2VGTFYiLCBhcmd2X2dlbmVyYXRlZE1vdmlldykpOworCisJCQlTdHJpbmcgaGFzaEZpbGVGdWxsTmFtZUZsdiA9ICJmbHZSZWNvcmRpbmdfIgorCQkJCQkrIGZsdlJlY29yZGluZy5nZXRGbHZSZWNvcmRpbmdJZCgpICsgIi5mbHYiOworCQkJU3RyaW5nIG91dHB1dEZ1bGxGbHYgPSBuZXcgRmlsZShzdHJlYW1Gb2xkZXJHZW5lcmFsLCBoYXNoRmlsZUZ1bGxOYW1lRmx2KS5nZXRDYW5vbmljYWxQYXRoKCk7CisJCQlkZWxldGVGaWxlSWZFeGlzdHMob3V0cHV0RnVsbEZsdik7CisKKwkJCS8vIGZmbXBlZyAtdmNvZGVjIGZsdiAtcXNjYWxlIDkuNSAtciAyNSAtYXIgMjIwNTAgLWFiIDMyayAtcyAzMjB4MjQwCisJCQkvLyAtaQorCQkJLy8gNjUzMThmYjVjNTRiMWJjMWIxYmNhMDc3YjQ5M2E5MTRfMjhfMTJfMjAwOV8yM18zOF8xN19GSU5BTF9XQVZFLndhdgorCQkJLy8gLWkgNjUzMThmYjVjNTRiMWJjMWIxYmNhMDc3YjQ5M2E5MTRfMjhfMTJfMjAwOV8yM18zOF8xNy5mbHYKKwkJCS8vIGZpbmFsMS5mbHYKKworCQkJaW50IGZsdldpZHRoID0gNjQwOworCQkJaW50IGZsdkhlaWdodCA9IDI0MDsKKworCQkJZmx2UmVjb3JkaW5nLnNldEZsdldpZHRoKGZsdldpZHRoKTsKKwkJCWZsdlJlY29yZGluZy5zZXRGbHZIZWlnaHQoZmx2SGVpZ2h0KTsKKworCQkJU3RyaW5nW10gYXJndl9mdWxsRkxWID0gbmV3IFN0cmluZ1tdIHsKKwkJCQkJdGhpcy5nZXRQYXRoVG9GRk1QRUcoKSwgLy8KKwkJCQkJIi1pIiwgaW5wdXRTY3JlZW5GdWxsRmx2LCAiLWkiLCBvdXRwdXRGdWxsV2F2LAorCQkJCQkiLWFyIiwKKwkJCQkJIjIyMDUwIiwgLy8KKwkJCQkJIi1hYiIsCisJCQkJCSIzMmsiLCAvLworCQkJCQkiLXMiLAorCQkJCQlmbHZXaWR0aCArICJ4IiArIGZsdkhlaWdodCwgLy8KKwkJCQkJIi12Y29kZWMiLAorCQkJCQkiZmx2IiwgLy8KKwkJCQkJIi1yIiwgIiIgKyBmcmFtZVJhdGUsICItcW1heCIsICIxIiwgIi1xbWluIiwgIjEiLAorCQkJCQlvdXRwdXRGdWxsRmx2IH07CisKKwkJCWxvZy5kZWJ1ZygiU1RBUlQgZ2VuZXJhdGVGdWxsRkxWICMjIyMjIyMjIyMjIyMjIyMjICIpOworCQkJU3RyaW5nIHRTdHJpbmcgPSAiIjsKKwkJCWZvciAoaW50IGkgPSAwOyBpIDwgYXJndl9mdWxsRkxWLmxlbmd0aDsgaSsrKSB7CisJCQkJdFN0cmluZyArPSBhcmd2X2Z1bGxGTFZbaV0gKyAiICI7CisJCQkJLy8gbG9nLmRlYnVnKCIgaSAiICsgaSArICIgYXJndi1pICIgKyBhcmd2X2Z1bGxGTFZbaV0pOworCQkJfQorCQkJbG9nLmRlYnVnKHRTdHJpbmcpOworCQkJbG9nLmRlYnVnKCJFTkQgZ2VuZXJhdGVGdWxsRkxWICMjIyMjIyMjIyMjIyMjIyMjICIpOworCisJCQlyZXR1cm5Mb2cuYWRkKFByb2Nlc3NIZWxwZXIuZXhlY3V0ZVNjcmlwdCgiZ2VuZXJhdGVGdWxsRkxWIiwKKwkJCQkJYXJndl9mdWxsRkxWKSk7CisKKwkJCWZsdlJlY29yZGluZy5zZXRGaWxlSGFzaChoYXNoRmlsZUZ1bGxOYW1lRmx2KTsKKworCQkJLy8gRXh0cmFjdCBmaXJzdCBJbWFnZSBmb3IgcHJldmlldyBwdXJwb3NlCisJCQkvLyBmZm1wZWcgLWkgbW92aWUuZmx2IC12Y29kZWMgbWpwZWcgLXZmcmFtZXMgMSAtYW4gLWYgcmF3dmlkZW8gLXMKKwkJCS8vIDMyMHgyNDAgbW92aWUuanBnCisKKwkJCVN0cmluZyBoYXNoRmlsZUZ1bGxOYW1lSlBFRyA9ICJmbHZSZWNvcmRpbmdfIgorCQkJCQkrIGZsdlJlY29yZGluZy5nZXRGbHZSZWNvcmRpbmdJZCgpICsgIi5qcGciOworCQkJU3RyaW5nIG91dFB1dEpwZWcgPSBuZXcgRmlsZShzdHJlYW1Gb2xkZXJHZW5lcmFsLCBoYXNoRmlsZUZ1bGxOYW1lSlBFRykuZ2V0Q2Fub25pY2FsUGF0aCgpOworCQkJZGVsZXRlRmlsZUlmRXhpc3RzKG91dFB1dEpwZWcpOworCisJCQlmbHZSZWNvcmRpbmcuc2V0UHJldmlld0ltYWdlKGhhc2hGaWxlRnVsbE5hbWVKUEVHKTsKKworCQkJU3RyaW5nW10gYXJndl9wcmV2aWV3RkxWID0gbmV3IFN0cmluZ1tdIHsgLy8KKwkJCXRoaXMuZ2V0UGF0aFRvRkZNUEVHKCksIC8vCisJCQkJCSItaSIsIG91dHB1dEZ1bGxGbHYsIC8vCisJCQkJCSItdmNvZGVjIiwgIm1qcGVnIiwgLy8KKwkJCQkJIi12ZnJhbWVzIiwgIjEwMCIsICItYW4iLCAvLworCQkJCQkiLWYiLCAicmF3dmlkZW8iLCAvLworCQkJCQkiLXMiLCBmbHZXaWR0aCArICJ4IiArIGZsdkhlaWdodCwgLy8KKwkJCQkJb3V0UHV0SnBlZyB9OworCisJCQlsb2cuZGVidWcoIlNUQVJUIHByZXZpZXdGdWxsRkxWICMjIyMjIyMjIyMjIyMjIyMjICIpOworCQkJbG9nLmRlYnVnKGFyZ3ZfcHJldmlld0ZMVi50b1N0cmluZygpKTsKKwkJCVN0cmluZyBrU3RyaW5nID0gIiI7CisJCQlmb3IgKGludCBpID0gMDsgaSA8IGFyZ3ZfcHJldmlld0ZMVi5sZW5ndGg7IGkrKykgeworCQkJCWtTdHJpbmcgKz0gYXJndl9wcmV2aWV3RkxWW2ldICsgIiAiOworCQkJfQorCQkJbG9nLmRlYnVnKGtTdHJpbmcpOworCQkJbG9nLmRlYnVnKCJFTkQgcHJldmlld0Z1bGxGTFYgIyMjIyMjIyMjIyMjIyMjIyMgIik7CisKKwkJCXJldHVybkxvZy5hZGQoUHJvY2Vzc0hlbHBlci5leGVjdXRlU2NyaXB0KCJnZW5lcmF0ZUZ1bGxGTFYiLAorCQkJCQlhcmd2X3ByZXZpZXdGTFYpKTsKKworCQkJU3RyaW5nIGFsdGVybmF0ZURvd25sb2FkTmFtZSA9ICJmbHZSZWNvcmRpbmdfIgorCQkJCQkrIGZsdlJlY29yZGluZy5nZXRGbHZSZWNvcmRpbmdJZCgpICsgIi5hdmkiOworCQkJU3RyaW5nIGFsdGVybmF0ZURvd25sb2FkRnVsbE5hbWUgPSBuZXcgRmlsZShzdHJlYW1Gb2xkZXJHZW5lcmFsLCBhbHRlcm5hdGVEb3dubG9hZE5hbWUpLmdldENhbm9uaWNhbFBhdGgoKTsKKwkJCWRlbGV0ZUZpbGVJZkV4aXN0cyhhbHRlcm5hdGVEb3dubG9hZEZ1bGxOYW1lKTsKKworCQkJU3RyaW5nW10gYXJndl9hbHRlcm5hdGVEb3dubG9hZCA9IG5ldyBTdHJpbmdbXSB7CisJCQkJCXRoaXMuZ2V0UGF0aFRvRkZNUEVHKCksICItaSIsIG91dHB1dEZ1bGxGbHYsCisJCQkJCWFsdGVybmF0ZURvd25sb2FkRnVsbE5hbWUgfTsKKworCQkJbG9nLmRlYnVnKCJTVEFSVCBhbHRlcm5hdGVEb3duTG9hZCAjIyMjIyMjIyMjIyMjIyMjIyAiKTsKKwkJCWxvZy5kZWJ1Zyhhcmd2X3ByZXZpZXdGTFYudG9TdHJpbmcoKSk7CisJCQlTdHJpbmcgc1N0cmluZyA9ICIiOworCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBhcmd2X2FsdGVybmF0ZURvd25sb2FkLmxlbmd0aDsgaSsrKSB7CisJCQkJc1N0cmluZyArPSBhcmd2X2FsdGVybmF0ZURvd25sb2FkW2ldICsgIiAiOworCQkJfQorCQkJbG9nLmRlYnVnKHNTdHJpbmcpOworCQkJbG9nLmRlYnVnKCJFTkQgYWx0ZXJuYXRlRG93bkxvYWQgIyMjIyMjIyMjIyMjIyMjIyMgIik7CisKKwkJCXJldHVybkxvZy5hZGQoUHJvY2Vzc0hlbHBlci5leGVjdXRlU2NyaXB0KCJhbHRlcm5hdGVEb3dubG9hZCIsCisJCQkJCWFyZ3ZfYWx0ZXJuYXRlRG93bmxvYWQpKTsKKworCQkJZmx2UmVjb3JkaW5nLnNldEFsdGVybmF0ZURvd25sb2FkKGFsdGVybmF0ZURvd25sb2FkTmFtZSk7CisKKwkJCWZsdlJlY29yZGluZ0Rhb0ltcGwudXBkYXRlRmx2UmVjb3JkaW5nKGZsdlJlY29yZGluZyk7CisKKwkJCWZsdlJlY29yZGluZ0xvZ0Rhb0ltcGwKKwkJCQkJLmRlbGV0ZUZMVlJlY29yZGluZ0xvZ0J5UmVjb3JkaW5nSWQoZmx2UmVjb3JkaW5nCisJCQkJCQkJLmdldEZsdlJlY29yZGluZ0lkKCkpOworCisJCQlmb3IgKENvbnZlcnRlclByb2Nlc3NSZXN1bHQgcmV0dXJuTWFwIDogcmV0dXJuTG9nKSB7CisJCQkJZmx2UmVjb3JkaW5nTG9nRGFvSW1wbC5hZGRGTFZSZWNvcmRpbmdMb2coImdlbmVyYXRlRkZNUEVHIiwKKwkJCQkJCWZsdlJlY29yZGluZywgcmV0dXJuTWFwKTsKKwkJCX0KKworCQkJLy8gRGVsZXRlIFdhdmUgRmlsZXMKKwkJCWZvciAoU3RyaW5nIGZpbGVOYW1lIDogbGlzdE9mRnVsbFdhdmVGaWxlcykgeworCQkJCUZpbGUgYXVkaW8gPSBuZXcgRmlsZShmaWxlTmFtZSk7CisJCQkJaWYgKGF1ZGlvLmV4aXN0cygpKSB7CisJCQkJCWF1ZGlvLmRlbGV0ZSgpOworCQkJCX0KKwkJCX0KKworCQkJLy8gRGVsZXRlIGFsbCBJbWFnZSB0ZW1wIGRpcnMKKwkJCWZvciAoRmx2UmVjb3JkaW5nTWV0YURhdGEgZmx2UmVjb3JkaW5nTWV0YURhdGEgOiBtZXRhRGF0YUxpc3QpIHsKKwkJCQlGaWxlSGVscGVyLnJlbW92ZVJlYyhuZXcgRmlsZShzdHJlYW1Gb2xkZXIsICIiICsgZmx2UmVjb3JkaW5nTWV0YURhdGEuZ2V0Rmx2UmVjb3JkaW5nTWV0YURhdGFJZCgpKSk7CisJCQl9CisKKwkJCUZpbGVIZWxwZXIucmVtb3ZlUmVjKG5ldyBGaWxlKG91dHB1dEltYWdlTWVyZ2VkRGF0YSkpOworCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW3N0cmlwQXVkaW9Gcm9tRkxWc10iLCBlcnIpOworCQl9CisJfQorCisJcHVibGljIENvbnZlcnRlclByb2Nlc3NSZXN1bHQgdGh1bWJQcm9jZXNzSW1hZ2VXaW5kb3dzKFN0cmluZyBmaWxlMSwKKwkJCVN0cmluZyBmaWxlMiwgU3RyaW5nIGZpbGUzKSB7CisKKwkJLy8gSW5pdCB2YXJpYWJsZXMKKwkJU3RyaW5nW10gY21kID0geyB0aGlzLmdldFBhdGhUb0ltYWdlTWFnaWNrKCksIGZpbGUxLCBmaWxlMiwgIithcHBlbmQiLAorCQkJCWZpbGUzIH07CisKKwkJcmV0dXJuIGdlbmVyYXRlVGh1bWJzLnByb2Nlc3NJbWFnZVdpbmRvd3MoY21kKTsKKwl9CisKKwlwdWJsaWMgQ29udmVydGVyUHJvY2Vzc1Jlc3VsdCBwcm9jZXNzSW1hZ2VXaW5kb3dzKFN0cmluZyBmaWxlMSwKKwkJCVN0cmluZyBmaWxlMiwgU3RyaW5nIGZpbGUzKSB7CisJCXJldHVybiBQcm9jZXNzSGVscGVyLmV4ZWN1dGVTY3JpcHRXaW5kb3dzKCJwcm9jZXNzSW1hZ2VXaW5kb3dzIgorCQkJLCBuZXcgU3RyaW5nW117Z2V0UGF0aFRvSW1hZ2VNYWdpY2soKSwgZmlsZTEsIGZpbGUyLCAiK2FwcGVuZCIsIGZpbGUzfSk7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvZmx2cmVjb3JkL2NvbnZlcnRlci9GbHZJbnRlcnZpZXdDb252ZXJ0ZXJUYXNrLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9mbHZyZWNvcmQvY29udmVydGVyL0ZsdkludGVydmlld0NvbnZlcnRlclRhc2suamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NGU0MTk3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvZmx2cmVjb3JkL2NvbnZlcnRlci9GbHZJbnRlcnZpZXdDb252ZXJ0ZXJUYXNrLmphdmEKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmZsdnJlY29yZC5jb252ZXJ0ZXI7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmNvcmUudGFzay5UYXNrRXhlY3V0b3I7CisKK3B1YmxpYyBjbGFzcyBGbHZJbnRlcnZpZXdDb252ZXJ0ZXJUYXNrIHsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKEZsdkludGVydmlld0NvbnZlcnRlclRhc2suY2xhc3MsIE9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFRhc2tFeGVjdXRvciB0YXNrRXhlY3V0b3I7CisJQEF1dG93aXJlZAorCXByaXZhdGUgRmx2SW50ZXJ2aWV3Q29udmVydGVyIGZsdkludGVydmlld0NvbnZlcnRlcjsKKworCXB1YmxpYyB2b2lkIHN0YXJ0Q29udmVyc2lvblRocmVhZChmaW5hbCBMb25nIGZsdlJlY29yZGluZ0lkKSB7CisJCXRyeSB7CisJCQkKKwkJCWxvZy5kZWJ1ZygiWy0xLV0iK3RoaXMudGFza0V4ZWN1dG9yKTsKKwkJCQorCQkJdGhpcy50YXNrRXhlY3V0b3IuZXhlY3V0ZShuZXcgUnVubmFibGUoKSB7CisJCQkJcHVibGljIHZvaWQgcnVuKCkgeworCQkJCQkJZmx2SW50ZXJ2aWV3Q29udmVydGVyLnN0YXJ0Q29udmVyc2lvbiggZmx2UmVjb3JkaW5nSWQgKTsKKwkgICAgICAgICAgICAgICB9CisJICAgICAgICAgIH0pOworCQkJCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW3N0YXJ0Q29udmVyc2lvblRocmVhZF0iLGVycik7CisJCX0KKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2ZsdnJlY29yZC9jb252ZXJ0ZXIvRmx2SW50ZXJ2aWV3UmVDb252ZXJ0ZXJUYXNrLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9mbHZyZWNvcmQvY29udmVydGVyL0ZsdkludGVydmlld1JlQ29udmVydGVyVGFzay5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4MWU3NGUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9mbHZyZWNvcmQvY29udmVydGVyL0ZsdkludGVydmlld1JlQ29udmVydGVyVGFzay5qYXZhCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5mbHZyZWNvcmQuY29udmVydGVyOworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5BdXRvd2lyZWQ7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5jb3JlLnRhc2suVGFza0V4ZWN1dG9yOworCitwdWJsaWMgY2xhc3MgRmx2SW50ZXJ2aWV3UmVDb252ZXJ0ZXJUYXNrIHsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKAorCQkJRmx2SW50ZXJ2aWV3UmVDb252ZXJ0ZXJUYXNrLmNsYXNzLAorCQkJT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCisJQEF1dG93aXJlZAorCXByaXZhdGUgVGFza0V4ZWN1dG9yIHRhc2tFeGVjdXRvcjsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBGbHZJbnRlcnZpZXdDb252ZXJ0ZXIgZmx2SW50ZXJ2aWV3Q29udmVydGVyOworCisJcHVibGljIHZvaWQgc3RhcnRDb252ZXJzaW9uVGhyZWFkKGZpbmFsIExvbmcgZmx2UmVjb3JkaW5nSWQsCisJCQlmaW5hbCBJbnRlZ2VyIGxlZnRTaWRlTG91ZCwgZmluYWwgSW50ZWdlciByaWdodFNpZGVMb3VkLAorCQkJZmluYWwgSW50ZWdlciBsZWZ0U2lkZVRpbWUsIGZpbmFsIEludGVnZXIgcmlnaHRTaWRlVGltZSkgeworCQl0cnkgeworCisJCQlsb2cuZGVidWcoIlstMS1dIiArIHRoaXMudGFza0V4ZWN1dG9yKTsKKworCQkJdGhpcy50YXNrRXhlY3V0b3IuZXhlY3V0ZShuZXcgUnVubmFibGUoKSB7CisJCQkJcHVibGljIHZvaWQgcnVuKCkgeworCQkJCQlmbHZJbnRlcnZpZXdDb252ZXJ0ZXIuc3RhcnRSZUNvbnZlcnNpb24oZmx2UmVjb3JkaW5nSWQsCisJCQkJCQkJbGVmdFNpZGVMb3VkLCByaWdodFNpZGVMb3VkLCBsZWZ0U2lkZVRpbWUsCisJCQkJCQkJcmlnaHRTaWRlVGltZSk7CisJCQkJfQorCQkJfSk7CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbc3RhcnRDb252ZXJzaW9uVGhyZWFkXSIsIGVycik7CisJCX0KKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2ZsdnJlY29yZC9jb252ZXJ0ZXIvRmx2UmVjb3JkZXJDb252ZXJ0ZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2ZsdnJlY29yZC9jb252ZXJ0ZXIvRmx2UmVjb3JkZXJDb252ZXJ0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTQxODQ1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvZmx2cmVjb3JkL2NvbnZlcnRlci9GbHZSZWNvcmRlckNvbnZlcnRlci5qYXZhCkBAIC0wLDAgKzEsMzE2IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuZmx2cmVjb3JkLmNvbnZlcnRlcjsKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5MaW5rZWRMaXN0OworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuZmx2cmVjb3JkLkZsdlJlY29yZGluZ0RhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmZsdnJlY29yZC5GbHZSZWNvcmRpbmdMb2dEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5mbHZyZWNvcmQuRmx2UmVjb3JkaW5nTWV0YURhdGFEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZG9jdW1lbnRzLmJlYW5zLkNvbnZlcnRlclByb2Nlc3NSZXN1bHQ7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuZmx2cmVjb3JkLkZsdlJlY29yZGluZzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5mbHZyZWNvcmQuRmx2UmVjb3JkaW5nTWV0YURhdGE7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMuUHJvY2Vzc0hlbHBlcjsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uQXV0b3dpcmVkOworCitwdWJsaWMgY2xhc3MgRmx2UmVjb3JkZXJDb252ZXJ0ZXIgZXh0ZW5kcyBCYXNlQ29udmVydGVyIHsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeQorCQkJLmdldExvZ2dlcihGbHZSZWNvcmRlckNvbnZlcnRlci5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCisJLy8gU3ByaW5nIGxvYWRlZCBCZWFucworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEZsdlJlY29yZGluZ0RhbyBmbHZSZWNvcmRpbmdEYW9JbXBsID0gbnVsbDsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBGbHZSZWNvcmRpbmdNZXRhRGF0YURhbyBmbHZSZWNvcmRpbmdNZXRhRGF0YURhb0ltcGwgPSBudWxsOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEZsdlJlY29yZGluZ0xvZ0RhbyBmbHZSZWNvcmRpbmdMb2dEYW9JbXBsOworCisJcHJpdmF0ZSBTdHJpbmcgRkZNUEVHX01BUF9QQVJBTSA9ICI6IjsKKworCXB1YmxpYyB2b2lkIHN0YXJ0Q29udmVyc2lvbihMb25nIGZsdlJlY29yZGluZ0lkKSB7CisJCXRyeSB7CisJCQlpZiAoaXNVc2VPbGRTdHlsZUZmbXBlZ01hcCgpKSB7CisJCQkJRkZNUEVHX01BUF9QQVJBTSA9ICIuIjsKKwkJCX0KKworCQkJRmx2UmVjb3JkaW5nIGZsdlJlY29yZGluZyA9IHRoaXMuZmx2UmVjb3JkaW5nRGFvSW1wbAorCQkJCQkuZ2V0Rmx2UmVjb3JkaW5nQnlJZChmbHZSZWNvcmRpbmdJZCk7CisJCQlsb2cuZGVidWcoImZsdlJlY29yZGluZyAiICsgZmx2UmVjb3JkaW5nLmdldEZsdlJlY29yZGluZ0lkKCkpOworCisJCQkvLyBTdHJpcCBBdWRpbyBvdXQgb2YgYWxsIEF1ZGlvLUZMVnMKKwkJCXRoaXMuc3RyaXBBdWRpb0Zyb21GTFZzKGZsdlJlY29yZGluZyk7CisKKwkJCS8vIEFkZCBlbXB0eSBwaWVjZXMgYXQgdGhlIGJlZ2lubmluZyBhbmQgZW5kIG9mIHRoZSB3YXYKKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltzdGFydENvbnZlcnNpb25dIiwgZXJyKTsKKwkJfQorCX0KKworCXB1YmxpYyB2b2lkIHN0cmlwQXVkaW9Gcm9tRkxWcyhGbHZSZWNvcmRpbmcgZmx2UmVjb3JkaW5nKSB7CisJCUxpc3Q8Q29udmVydGVyUHJvY2Vzc1Jlc3VsdD4gcmV0dXJuTG9nID0gbmV3IEFycmF5TGlzdDxDb252ZXJ0ZXJQcm9jZXNzUmVzdWx0PigpOworCQlMaXN0PFN0cmluZz4gbGlzdE9mRnVsbFdhdmVGaWxlcyA9IG5ldyBMaW5rZWRMaXN0PFN0cmluZz4oKTsKKwkJRmlsZSBzdHJlYW1Gb2xkZXIgPSBnZXRTdHJlYW1Gb2xkZXIoZmx2UmVjb3JkaW5nKTsKKwkJdHJ5IHsKKwkJCXN0cmlwQXVkaW9GaXJzdFBhc3MoZmx2UmVjb3JkaW5nLCByZXR1cm5Mb2csIGxpc3RPZkZ1bGxXYXZlRmlsZXMsIHN0cmVhbUZvbGRlcik7CisKKwkJCS8vIE1lcmdlIFdhdmUgdG8gRnVsbCBMZW5ndGgKKwkJCVN0cmluZyBzdHJlYW1Gb2xkZXJHZW5lcmFsTmFtZSA9IGdldFN0cmVhbUZvbGRlcigpLmdldENhbm9uaWNhbFBhdGgoKSArIEZpbGUuc2VwYXJhdG9yOyAvL0ZJWE1FCisKKwkJCUZsdlJlY29yZGluZ01ldGFEYXRhIGZsdlJlY29yZGluZ01ldGFEYXRhT2ZTY3JlZW4gPSB0aGlzLmZsdlJlY29yZGluZ01ldGFEYXRhRGFvSW1wbAorCQkJCQkuZ2V0Rmx2UmVjb3JkaW5nTWV0YURhdGFTY3JlZW5GbHZCeVJlY29yZGluZyhmbHZSZWNvcmRpbmcKKwkJCQkJCQkuZ2V0Rmx2UmVjb3JkaW5nSWQoKSk7CisJCQkKKwkJCWlmIChmbHZSZWNvcmRpbmdNZXRhRGF0YU9mU2NyZWVuID09IG51bGwpIHsKKwkJCQl0aHJvdyBuZXcgRXhjZXB0aW9uKCJmbHZSZWNvcmRpbmdNZXRhRGF0YU9mU2NyZWVuIGlzIE51bGwgRmx2UmVjb3JkaW5nSWQgIitmbHZSZWNvcmRpbmcKKwkJCQkJCQkuZ2V0Rmx2UmVjb3JkaW5nSWQoKSk7CisJCQl9CisJCQkKKwkJCWlmIChmbHZSZWNvcmRpbmdNZXRhRGF0YU9mU2NyZWVuLmdldFN0cmVhbVJlYWRlclRocmVhZENvbXBsZXRlKCkgPT0gbnVsbCkgeworCQkJCXRocm93IG5ldyBFeGNlcHRpb24oIlN0cmVhbVJlYWRlclRocmVhZENvbXBsZXRlIEJpdCBpcyBOVUxMLCBlcnJvciBpbiByZWNvcmRpbmciKTsKKwkJCX0KKwkJCQorCQkJaWYgKCFmbHZSZWNvcmRpbmdNZXRhRGF0YU9mU2NyZWVuLmdldFN0cmVhbVJlYWRlclRocmVhZENvbXBsZXRlKCkpIHsKKwkJCQkKKwkJCQlsb2cuZGVidWcoIiMjIyBtZXRhIFNjcmVlblN0cmVhbSBub3QgeWV0IHdyaXR0ZW4gdG8gZGlzayIgKyBmbHZSZWNvcmRpbmdNZXRhRGF0YU9mU2NyZWVuLmdldEZsdlJlY29yZGluZ01ldGFEYXRhSWQoKSk7CisJCQkJYm9vbGVhbiBkb1N0b3AgPSB0cnVlOworCQkJCXdoaWxlKGRvU3RvcCkgeworCQkJCQkKKwkJCQkJbG9nLmRlYnVnKCIjIyMgU3RyZWFtIG5vdCB5ZXQgd3JpdHRlbiBUaHJlYWQgU2xlZXAgLSAiICsgZmx2UmVjb3JkaW5nTWV0YURhdGFPZlNjcmVlbi5nZXRGbHZSZWNvcmRpbmdNZXRhRGF0YUlkKCkpOworCQkJCQkKKwkJCQkJVGhyZWFkLnNsZWVwKDEwMEwpOworCQkJCQkKKwkJCQkJZmx2UmVjb3JkaW5nTWV0YURhdGFPZlNjcmVlbiA9IGZsdlJlY29yZGluZ01ldGFEYXRhRGFvSW1wbC5nZXRGbHZSZWNvcmRpbmdNZXRhRGF0YUJ5SWQoZmx2UmVjb3JkaW5nTWV0YURhdGFPZlNjcmVlbi5nZXRGbHZSZWNvcmRpbmdNZXRhRGF0YUlkKCkpOworCQkJCQkKKwkJCQkJaWYgKGZsdlJlY29yZGluZ01ldGFEYXRhT2ZTY3JlZW4uZ2V0U3RyZWFtUmVhZGVyVGhyZWFkQ29tcGxldGUoKSkgeworCQkJCQkJbG9nLmRlYnVnKCIjIyMgU2NyZWVuIFN0cmVhbSBub3cgd3JpdHRlbiBUaHJlYWQgY29udGludWUgLSAiICk7CisJCQkJCQlkb1N0b3AgPSBmYWxzZTsKKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJCQorCQkJCisJCQlTdHJpbmcgaGFzaEZpbGVGdWxsTmFtZSA9IGZsdlJlY29yZGluZ01ldGFEYXRhT2ZTY3JlZW4KKwkJCQkJLmdldFN0cmVhbU5hbWUoKSArICJfRklOQUxfV0FWRS53YXYiOworCQkJU3RyaW5nIG91dHB1dEZ1bGxXYXYgPSBuZXcgRmlsZShzdHJlYW1Gb2xkZXIsIGhhc2hGaWxlRnVsbE5hbWUpLmdldENhbm9uaWNhbFBhdGgoKTsKKworCQkJaWYgKGxpc3RPZkZ1bGxXYXZlRmlsZXMuc2l6ZSgpID09IDEpIHsKKworCQkJCW91dHB1dEZ1bGxXYXYgPSBsaXN0T2ZGdWxsV2F2ZUZpbGVzLmdldCgwKTsKKworCQkJCWZsdlJlY29yZGluZ01ldGFEYXRhT2ZTY3JlZW4KKwkJCQkJCS5zZXRGdWxsV2F2QXVkaW9EYXRhKGhhc2hGaWxlRnVsbE5hbWUpOworCisJCQl9IGVsc2UgaWYgKGxpc3RPZkZ1bGxXYXZlRmlsZXMuc2l6ZSgpID4gMCkgeworCisJCQkJU3RyaW5nW10gYXJndl9mdWxsX3NveCA9IG1lcmdlQXVkaW9Ub1dhdmVzKGxpc3RPZkZ1bGxXYXZlRmlsZXMsIG91dHB1dEZ1bGxXYXYpOworCisJCQkJbG9nLmRlYnVnKCJTVEFSVCBtZXJnZUF1ZGlvVG9XYXZlcyAjIyMjIyMjIyMjIyMjIyMjIyAiKTsKKwkJCQlsb2cuZGVidWcoYXJndl9mdWxsX3NveC50b1N0cmluZygpKTsKKwkJCQlTdHJpbmcgaVN0cmluZyA9ICIiOworCQkJCWZvciAoaW50IGkgPSAwOyBpIDwgYXJndl9mdWxsX3NveC5sZW5ndGg7IGkrKykgeworCQkJCQlpU3RyaW5nICs9IGFyZ3ZfZnVsbF9zb3hbaV0gKyAiICI7CisJCQkJfQorCQkJCWxvZy5kZWJ1ZyhpU3RyaW5nKTsKKwkJCQlsb2cuZGVidWcoIkVORCBtZXJnZUF1ZGlvVG9XYXZlcyAjIyMjIyMjIyMjIyMjIyMjIyAiKTsKKworCQkJCWZsdlJlY29yZGluZ01ldGFEYXRhT2ZTY3JlZW4KKwkJCQkJCS5zZXRGdWxsV2F2QXVkaW9EYXRhKGhhc2hGaWxlRnVsbE5hbWUpOworCisJCQkJdGhpcy5mbHZSZWNvcmRpbmdNZXRhRGF0YURhb0ltcGwKKwkJCQkJCS51cGRhdGVGbHZSZWNvcmRpbmdNZXRhRGF0YShmbHZSZWNvcmRpbmdNZXRhRGF0YU9mU2NyZWVuKTsKKworCQkJCXJldHVybkxvZy5hZGQoUHJvY2Vzc0hlbHBlci5leGVjdXRlU2NyaXB0KCJtZXJnZVdhdmUiLAorCQkJCQkJYXJndl9mdWxsX3NveCkpOworCQkJfSBlbHNlIHsKKworCQkJCS8vIGNyZWF0ZSBkZWZhdWx0IEF1ZGlvIHRvIG1lcmdlIGl0LgorCQkJCS8vIHN0cmlwIHRvIGNvbnRlbnQgbGVuZ3RoCisJCQkJU3RyaW5nIG91dHB1dFdhdiA9IHN0cmVhbUZvbGRlckdlbmVyYWxOYW1lICsgIm9uZV9zZWNvbmQud2F2IjsKKworCQkJCS8vIENhbGN1bGF0ZSBkZWx0YSBhdCBiZWdpbm5pbmcKKwkJCQlMb25nIGRlbHRhVGltZU1pbGxpU2Vjb25kcyA9IGZsdlJlY29yZGluZy5nZXRSZWNvcmRFbmQoKQorCQkJCQkJLmdldFRpbWUoKSAtIGZsdlJlY29yZGluZy5nZXRSZWNvcmRTdGFydCgpLmdldFRpbWUoKTsKKwkJCQlGbG9hdCBkZWx0YVBhZGRpbmcgPSAoRmxvYXQucGFyc2VGbG9hdChkZWx0YVRpbWVNaWxsaVNlY29uZHMKKwkJCQkJCS50b1N0cmluZygpKSAvIDEwMDApIC0gMTsKKworCQkJCVN0cmluZ1tdIGFyZ3ZfZnVsbF9zb3ggPSBuZXcgU3RyaW5nW10geyB0aGlzLmdldFBhdGhUb1NvWCgpLAorCQkJCQkJb3V0cHV0V2F2LCBvdXRwdXRGdWxsV2F2LCAicGFkIiwgIjAiLAorCQkJCQkJZGVsdGFQYWRkaW5nLnRvU3RyaW5nKCkgfTsKKworCQkJCWxvZy5kZWJ1ZygiU1RBUlQgZ2VuZXJhdGVTYW1wbGVBdWRpbyAjIyMjIyMjIyMjIyMjIyMjIyAiKTsKKwkJCQlTdHJpbmcgdFN0cmluZyA9ICIiOworCQkJCWZvciAoaW50IGkgPSAwOyBpIDwgYXJndl9mdWxsX3NveC5sZW5ndGg7IGkrKykgeworCQkJCQl0U3RyaW5nICs9IGFyZ3ZfZnVsbF9zb3hbaV0gKyAiICI7CisJCQkJfQorCQkJCWxvZy5kZWJ1Zyh0U3RyaW5nKTsKKwkJCQlsb2cuZGVidWcoIkVORCBnZW5lcmF0ZVNhbXBsZUF1ZGlvICMjIyMjIyMjIyMjIyMjIyMjICIpOworCisJCQkJZmx2UmVjb3JkaW5nTWV0YURhdGFPZlNjcmVlbgorCQkJCQkJLnNldEZ1bGxXYXZBdWRpb0RhdGEoaGFzaEZpbGVGdWxsTmFtZSk7CisKKwkJCQl0aGlzLmZsdlJlY29yZGluZ01ldGFEYXRhRGFvSW1wbAorCQkJCQkJLnVwZGF0ZUZsdlJlY29yZGluZ01ldGFEYXRhKGZsdlJlY29yZGluZ01ldGFEYXRhT2ZTY3JlZW4pOworCisJCQkJcmV0dXJuTG9nLmFkZChQcm9jZXNzSGVscGVyLmV4ZWN1dGVTY3JpcHQoIm1lcmdlV2F2ZSIsCisJCQkJCQlhcmd2X2Z1bGxfc294KSk7CisKKwkJCX0KKworCQkJLy8gTWVyZ2UgQXVkaW8gd2l0aCBWaWRlbyAvIENhbGN1bGF0ZSByZXN1bHRpbmcgRkxWCisKKwkJCVN0cmluZyBpbnB1dFNjcmVlbkZ1bGxGbHYgPSBuZXcgRmlsZShzdHJlYW1Gb2xkZXIsIGZsdlJlY29yZGluZ01ldGFEYXRhT2ZTY3JlZW4uZ2V0U3RyZWFtTmFtZSgpICsgIi5mbHYiKS5nZXRDYW5vbmljYWxQYXRoKCk7CisKKwkJCVN0cmluZyBoYXNoRmlsZUZ1bGxOYW1lRmx2ID0gImZsdlJlY29yZGluZ18iCisJCQkJCSsgZmx2UmVjb3JkaW5nLmdldEZsdlJlY29yZGluZ0lkKCkgKyAiLmZsdiI7CisJCQlTdHJpbmcgb3V0cHV0RnVsbEZsdiA9IHN0cmVhbUZvbGRlckdlbmVyYWxOYW1lCisJCQkJCSsgaGFzaEZpbGVGdWxsTmFtZUZsdjsKKworCQkJLy8gZmZtcGVnIC12Y29kZWMgZmx2IC1xc2NhbGUgOS41IC1yIDI1IC1hciAyMjA1MCAtYWIgMzJrIC1zIDMyMHgyNDAKKwkJCS8vIC1pCisJCQkvLyA2NTMxOGZiNWM1NGIxYmMxYjFiY2EwNzdiNDkzYTkxNF8yOF8xMl8yMDA5XzIzXzM4XzE3X0ZJTkFMX1dBVkUud2F2CisJCQkvLyAtaSA2NTMxOGZiNWM1NGIxYmMxYjFiY2EwNzdiNDkzYTkxNF8yOF8xMl8yMDA5XzIzXzM4XzE3LmZsdgorCQkJLy8gZmluYWwxLmZsdgorCisJCQlpbnQgZmx2V2lkdGggPSBmbHZSZWNvcmRpbmcuZ2V0V2lkdGgoKTsKKwkJCWludCBmbHZIZWlnaHQgPSBmbHZSZWNvcmRpbmcuZ2V0SGVpZ2h0KCk7CisKKwkJCWxvZy5kZWJ1ZygiZmx2V2lkdGggLTEtICIgKyBmbHZXaWR0aCk7CisJCQlsb2cuZGVidWcoImZsdkhlaWdodCAtMS0gIiArIGZsdkhlaWdodCk7CisKKwkJCWZsdldpZHRoID0gRG91YmxlLnZhbHVlT2YoKE1hdGguZmxvb3IoZmx2V2lkdGggLyAxNikpICogMTYpCisJCQkJCS5pbnRWYWx1ZSgpOworCQkJZmx2SGVpZ2h0ID0gRG91YmxlLnZhbHVlT2YoKE1hdGguZmxvb3IoZmx2SGVpZ2h0IC8gMTYpKSAqIDE2KQorCQkJCQkuaW50VmFsdWUoKTsKKworCQkJbG9nLmRlYnVnKCJmbHZXaWR0aCAtMi0gIiArIGZsdldpZHRoKTsKKwkJCWxvZy5kZWJ1ZygiZmx2SGVpZ2h0IC0yLSAiICsgZmx2SGVpZ2h0KTsKKworCQkJZmx2UmVjb3JkaW5nLnNldEZsdldpZHRoKGZsdldpZHRoKTsKKwkJCWZsdlJlY29yZGluZy5zZXRGbHZIZWlnaHQoZmx2SGVpZ2h0KTsKKworCQkJU3RyaW5nW10gYXJndl9mdWxsRkxWID0gbmV3IFN0cmluZ1tdIHsKKwkJCQkJdGhpcy5nZXRQYXRoVG9GRk1QRUcoKSwgLy8KKwkJCQkJIi1pIiwgaW5wdXRTY3JlZW5GdWxsRmx2LCAiLWkiLCBvdXRwdXRGdWxsV2F2LCAiLWFyIiwKKwkJCQkJIjIyMDUwIiwgLy8KKwkJCQkJIi1hY29kZWMiLCAibGlibXAzbGFtZSIsIC8vCisJCQkJCSItYWIiLCAiMzJrIiwgLy8KKwkJCQkJIi1zIiwgZmx2V2lkdGggKyAieCIgKyBmbHZIZWlnaHQsIC8vCisJCQkJCSItdmNvZGVjIiwgImZsYXNoc3YiLCAvLworCQkJCQkiLW1hcCIsICIwIiArIEZGTVBFR19NQVBfUEFSQU0gKyAiMCIsIC8vCisJCQkJCSItbWFwIiwgIjEiICsgRkZNUEVHX01BUF9QQVJBTSArICIwIiwgLy8KKwkJCQkJb3V0cHV0RnVsbEZsdiB9OworCisJCQlsb2cuZGVidWcoIlNUQVJUIGdlbmVyYXRlRnVsbEZMViAjIyMjIyMjIyMjIyMjIyMjIyAiKTsKKwkJCVN0cmluZyB0U3RyaW5nID0gIiI7CisJCQlmb3IgKGludCBpID0gMDsgaSA8IGFyZ3ZfZnVsbEZMVi5sZW5ndGg7IGkrKykgeworCQkJCXRTdHJpbmcgKz0gYXJndl9mdWxsRkxWW2ldICsgIiAiOworCQkJCS8vIGxvZy5kZWJ1ZygiIGkgIiArIGkgKyAiIGFyZ3YtaSAiICsgYXJndl9mdWxsRkxWW2ldKTsKKwkJCX0KKwkJCWxvZy5kZWJ1Zyh0U3RyaW5nKTsKKwkJCWxvZy5kZWJ1ZygiRU5EIGdlbmVyYXRlRnVsbEZMViAjIyMjIyMjIyMjIyMjIyMjIyAiKTsKKworCQkJcmV0dXJuTG9nLmFkZChQcm9jZXNzSGVscGVyLmV4ZWN1dGVTY3JpcHQoImdlbmVyYXRlRnVsbEZMViIsCisJCQkJCWFyZ3ZfZnVsbEZMVikpOworCisJCQlmbHZSZWNvcmRpbmcuc2V0RmlsZUhhc2goaGFzaEZpbGVGdWxsTmFtZUZsdik7CisKKwkJCS8vIEV4dHJhY3QgZmlyc3QgSW1hZ2UgZm9yIHByZXZpZXcgcHVycG9zZQorCQkJLy8gZmZtcGVnIC1pIG1vdmllLmZsdiAtdmNvZGVjIG1qcGVnIC12ZnJhbWVzIDEgLWFuIC1mIHJhd3ZpZGVvIC1zCisJCQkvLyAzMjB4MjQwIG1vdmllLmpwZworCisJCQlTdHJpbmcgaGFzaEZpbGVGdWxsTmFtZUpQRUcgPSAiZmx2UmVjb3JkaW5nXyIKKwkJCQkJKyBmbHZSZWNvcmRpbmcuZ2V0Rmx2UmVjb3JkaW5nSWQoKSArICIuanBnIjsKKwkJCVN0cmluZyBvdXRQdXRKcGVnID0gc3RyZWFtRm9sZGVyR2VuZXJhbE5hbWUgKyBoYXNoRmlsZUZ1bGxOYW1lSlBFRzsKKworCQkJZmx2UmVjb3JkaW5nLnNldFByZXZpZXdJbWFnZShoYXNoRmlsZUZ1bGxOYW1lSlBFRyk7CisKKwkJCVN0cmluZ1tdIGFyZ3ZfcHJldmlld0ZMViA9IG5ldyBTdHJpbmdbXSB7IC8vCisJCQkJCXRoaXMuZ2V0UGF0aFRvRkZNUEVHKCksIC8vCisJCQkJCSItaSIsIG91dHB1dEZ1bGxGbHYsIC8vCisJCQkJCSItdmNvZGVjIiwgIm1qcGVnIiwgLy8KKwkJCQkJIi12ZnJhbWVzIiwgIjEiLCAiLWFuIiwgLy8KKwkJCQkJIi1mIiwgInJhd3ZpZGVvIiwgLy8KKwkJCQkJIi1zIiwgZmx2V2lkdGggKyAieCIgKyBmbHZIZWlnaHQsIC8vCisJCQkJCW91dFB1dEpwZWcgfTsKKworCQkJbG9nLmRlYnVnKCJTVEFSVCBwcmV2aWV3RnVsbEZMViAjIyMjIyMjIyMjIyMjIyMjIyAiKTsKKwkJCWxvZy5kZWJ1Zyhhcmd2X3ByZXZpZXdGTFYudG9TdHJpbmcoKSk7CisJCQlTdHJpbmcga1N0cmluZyA9ICIiOworCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBhcmd2X3ByZXZpZXdGTFYubGVuZ3RoOyBpKyspIHsKKwkJCQlrU3RyaW5nICs9IGFyZ3ZfcHJldmlld0ZMVltpXSArICIgIjsKKwkJCX0KKwkJCWxvZy5kZWJ1ZyhrU3RyaW5nKTsKKwkJCWxvZy5kZWJ1ZygiRU5EIHByZXZpZXdGdWxsRkxWICMjIyMjIyMjIyMjIyMjIyMjICIpOworCisJCQlyZXR1cm5Mb2cuYWRkKFByb2Nlc3NIZWxwZXIuZXhlY3V0ZVNjcmlwdCgiZ2VuZXJhdGVGdWxsRkxWIiwKKwkJCQkJYXJndl9wcmV2aWV3RkxWKSk7CisKKwkJCVN0cmluZyBhbHRlcm5hdGVEb3dubG9hZE5hbWUgPSAiZmx2UmVjb3JkaW5nXyIKKwkJCQkJKyBmbHZSZWNvcmRpbmcuZ2V0Rmx2UmVjb3JkaW5nSWQoKSArICIuYXZpIjsKKwkJCVN0cmluZyBhbHRlcm5hdGVEb3dubG9hZEZ1bGxOYW1lID0gc3RyZWFtRm9sZGVyR2VuZXJhbE5hbWUKKwkJCQkJKyBhbHRlcm5hdGVEb3dubG9hZE5hbWU7CisKKwkJCVN0cmluZ1tdIGFyZ3ZfYWx0ZXJuYXRlRG93bmxvYWQgPSBuZXcgU3RyaW5nW10geworCQkJCQl0aGlzLmdldFBhdGhUb0ZGTVBFRygpLCAiLWkiLCBvdXRwdXRGdWxsRmx2LAorCQkJCQkiLXZjb2RlYyIsICJjb3B5IiwKKwkJCQkJYWx0ZXJuYXRlRG93bmxvYWRGdWxsTmFtZSB9OworCisJCQlsb2cuZGVidWcoIlNUQVJUIGFsdGVybmF0ZURvd25Mb2FkICMjIyMjIyMjIyMjIyMjIyMjICIpOworCQkJbG9nLmRlYnVnKGFyZ3ZfcHJldmlld0ZMVi50b1N0cmluZygpKTsKKwkJCVN0cmluZyBzU3RyaW5nID0gIiI7CisJCQlmb3IgKGludCBpID0gMDsgaSA8IGFyZ3ZfYWx0ZXJuYXRlRG93bmxvYWQubGVuZ3RoOyBpKyspIHsKKwkJCQlzU3RyaW5nICs9IGFyZ3ZfYWx0ZXJuYXRlRG93bmxvYWRbaV0gKyAiICI7CisJCQl9CisJCQlsb2cuZGVidWcoc1N0cmluZyk7CisJCQlsb2cuZGVidWcoIkVORCBhbHRlcm5hdGVEb3duTG9hZCAjIyMjIyMjIyMjIyMjIyMjIyAiKTsKKworCQkJcmV0dXJuTG9nLmFkZChQcm9jZXNzSGVscGVyLmV4ZWN1dGVTY3JpcHQoImFsdGVybmF0ZURvd25sb2FkIiwKKwkJCQkJYXJndl9hbHRlcm5hdGVEb3dubG9hZCkpOworCisJCQlmbHZSZWNvcmRpbmcuc2V0QWx0ZXJuYXRlRG93bmxvYWQoYWx0ZXJuYXRlRG93bmxvYWROYW1lKTsKKworCQkJdGhpcy5mbHZSZWNvcmRpbmdEYW9JbXBsLnVwZGF0ZUZsdlJlY29yZGluZyhmbHZSZWNvcmRpbmcpOworCisJCQlmb3IgKENvbnZlcnRlclByb2Nlc3NSZXN1bHQgcmV0dXJuTWFwIDogcmV0dXJuTG9nKSB7CisJCQkJdGhpcy5mbHZSZWNvcmRpbmdMb2dEYW9JbXBsLmFkZEZMVlJlY29yZGluZ0xvZygKKwkJCQkJCSJnZW5lcmF0ZUZGTVBFRyIsIGZsdlJlY29yZGluZywgcmV0dXJuTWFwKTsKKwkJCX0KKworCQkJLy8gRGVsZXRlIFdhdmUgRmlsZXMKKwkJCWZvciAoU3RyaW5nIGZpbGVOYW1lIDogbGlzdE9mRnVsbFdhdmVGaWxlcykgeworCQkJCUZpbGUgYXVkaW8gPSBuZXcgRmlsZShmaWxlTmFtZSk7CisJCQkJaWYgKGF1ZGlvLmV4aXN0cygpKSB7CisJCQkJCWF1ZGlvLmRlbGV0ZSgpOworCQkJCX0KKwkJCX0KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltzdHJpcEF1ZGlvRnJvbUZMVnNdIiwgZXJyKTsKKwkJfQorCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvZmx2cmVjb3JkL2NvbnZlcnRlci9GbHZSZWNvcmRlckNvbnZlcnRlclRhc2suamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2ZsdnJlY29yZC9jb252ZXJ0ZXIvRmx2UmVjb3JkZXJDb252ZXJ0ZXJUYXNrLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODUwMjY2OQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2ZsdnJlY29yZC9jb252ZXJ0ZXIvRmx2UmVjb3JkZXJDb252ZXJ0ZXJUYXNrLmphdmEKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmZsdnJlY29yZC5jb252ZXJ0ZXI7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmNvcmUudGFzay5UYXNrRXhlY3V0b3I7CisKK3B1YmxpYyBjbGFzcyBGbHZSZWNvcmRlckNvbnZlcnRlclRhc2sgeworCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcihGbHZSZWNvcmRlckNvbnZlcnRlclRhc2suY2xhc3MsIE9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFRhc2tFeGVjdXRvciB0YXNrRXhlY3V0b3I7CisJQEF1dG93aXJlZAorCXByaXZhdGUgRmx2UmVjb3JkZXJDb252ZXJ0ZXIgZmx2UmVjb3JkZXJDb252ZXJ0ZXI7CisKKwlwdWJsaWMgdm9pZCBzdGFydENvbnZlcnNpb25UaHJlYWQoZmluYWwgTG9uZyBmbHZSZWNvcmRpbmdJZCkgeworCQl0cnkgeworCQkJCisJCQlsb2cuZGVidWcoIlstMS1dIit0aGlzLnRhc2tFeGVjdXRvcik7CisJCQkKKwkJCXRoaXMudGFza0V4ZWN1dG9yLmV4ZWN1dGUobmV3IFJ1bm5hYmxlKCkgeworCQkJCXB1YmxpYyB2b2lkIHJ1bigpIHsKKwkgICAgICAgICAgICAJICAgZmx2UmVjb3JkZXJDb252ZXJ0ZXIuc3RhcnRDb252ZXJzaW9uKCBmbHZSZWNvcmRpbmdJZCApOworCSAgICAgICAgICAgICAgIH0KKwkgICAgICAgICAgfSk7CisJCQkKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbc3RhcnRDb252ZXJzaW9uVGhyZWFkXSIsZXJyKTsKKwkJfQorCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvZmx2cmVjb3JkL2xpc3RlbmVyL0Jhc2VTdHJlYW1MaXN0ZW5lci5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvZmx2cmVjb3JkL2xpc3RlbmVyL0Jhc2VTdHJlYW1MaXN0ZW5lci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhNzBhZDUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9mbHZyZWNvcmQvbGlzdGVuZXIvQmFzZVN0cmVhbUxpc3RlbmVyLmphdmEKQEAgLTAsMCArMSwyNyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmZsdnJlY29yZC5saXN0ZW5lcjsKKworaW1wb3J0IG9yZy5yZWQ1LnNlcnZlci5hcGkuc3RyZWFtLklTdHJlYW1MaXN0ZW5lcjsKKworcHVibGljIGFic3RyYWN0IGNsYXNzIEJhc2VTdHJlYW1MaXN0ZW5lciBpbXBsZW1lbnRzIElTdHJlYW1MaXN0ZW5lciB7CisJCisJcHVibGljIGFic3RyYWN0IHZvaWQgY2xvc2VTdHJlYW0oKTsKKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvZmx2cmVjb3JkL2xpc3RlbmVyL1N0cmVhbUF1ZGlvTGlzdGVuZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2ZsdnJlY29yZC9saXN0ZW5lci9TdHJlYW1BdWRpb0xpc3RlbmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDE2OTkwYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2ZsdnJlY29yZC9saXN0ZW5lci9TdHJlYW1BdWRpb0xpc3RlbmVyLmphdmEKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmZsdnJlY29yZC5saXN0ZW5lcjsKKworaW1wb3J0IGphdmEudXRpbC5EYXRlOworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuZmx2cmVjb3JkLkZsdlJlY29yZGluZ01ldGFEYXRhRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuZmx2cmVjb3JkLkZsdlJlY29yZGluZ01ldGFEZWx0YURhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmZsdnJlY29yZC5saXN0ZW5lci5hc3luYy5DYWNoZWRFdmVudDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmZsdnJlY29yZC5saXN0ZW5lci5hc3luYy5TdHJlYW1BdWRpb1dyaXRlcjsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5yZWQ1LnNlcnZlci5hcGkuc2NvcGUuSVNjb3BlOworaW1wb3J0IG9yZy5yZWQ1LnNlcnZlci5hcGkuc3RyZWFtLklCcm9hZGNhc3RTdHJlYW07CitpbXBvcnQgb3JnLnJlZDUuc2VydmVyLmFwaS5zdHJlYW0uSVN0cmVhbVBhY2tldDsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworCitwdWJsaWMgY2xhc3MgU3RyZWFtQXVkaW9MaXN0ZW5lciBleHRlbmRzIEJhc2VTdHJlYW1MaXN0ZW5lciB7CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKAorCQkJU3RyZWFtQXVkaW9MaXN0ZW5lci5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCisJcHJpdmF0ZSBmaW5hbCBTdHJlYW1BdWRpb1dyaXRlciBzdHJlYW1BdWRpb1dyaXRlcjsKKwkKKwlwdWJsaWMgU3RyZWFtQXVkaW9MaXN0ZW5lcihTdHJpbmcgc3RyZWFtTmFtZSwgSVNjb3BlIHNjb3BlLAorCQkJTG9uZyBmbHZSZWNvcmRpbmdNZXRhRGF0YUlkLCBib29sZWFuIGlzU2NyZWVuRGF0YSwKKwkJCWJvb2xlYW4gaXNJbnRlcnZpZXcsCisJCQlGbHZSZWNvcmRpbmdNZXRhRGVsdGFEYW8gZmx2UmVjb3JkaW5nTWV0YURlbHRhRGFvLAorCQkJRmx2UmVjb3JkaW5nTWV0YURhdGFEYW8gZmx2UmVjb3JkaW5nTWV0YURhdGFEYW8pIHsKKwkJc3RyZWFtQXVkaW9Xcml0ZXIgPSBuZXcgU3RyZWFtQXVkaW9Xcml0ZXIoc3RyZWFtTmFtZSwgc2NvcGUsCisJCQkJZmx2UmVjb3JkaW5nTWV0YURhdGFJZCwgaXNTY3JlZW5EYXRhLCBpc0ludGVydmlldywKKwkJCQlmbHZSZWNvcmRpbmdNZXRhRGVsdGFEYW8sIGZsdlJlY29yZGluZ01ldGFEYXRhRGFvKTsKKwl9CisKKwlwdWJsaWMgdm9pZCBwYWNrZXRSZWNlaXZlZChJQnJvYWRjYXN0U3RyZWFtIGJyb2FkY2FzdFN0cmVhbSwKKwkJCUlTdHJlYW1QYWNrZXQgc3RyZWFtcGFja2V0KSB7CisJCXRyeSB7CisKKwkJCUNhY2hlZEV2ZW50IGNhY2hlZEV2ZW50ID0gbmV3IENhY2hlZEV2ZW50KCk7CisJCQljYWNoZWRFdmVudC5zZXREYXRhKHN0cmVhbXBhY2tldC5nZXREYXRhKCkuZHVwbGljYXRlKCkpOworCQkJY2FjaGVkRXZlbnQuc2V0RGF0YVR5cGUoc3RyZWFtcGFja2V0LmdldERhdGFUeXBlKCkpOworCQkJY2FjaGVkRXZlbnQuc2V0VGltZXN0YW1wKHN0cmVhbXBhY2tldC5nZXRUaW1lc3RhbXAoKSk7CisJCQljYWNoZWRFdmVudC5zZXRDdXJyZW50VGltZShuZXcgRGF0ZSgpKTsKKworCQkJc3RyZWFtQXVkaW9Xcml0ZXIuYXBwZW5kKGNhY2hlZEV2ZW50KTsKKworCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJbG9nLmVycm9yKCJbcGFja2V0UmVjZWl2ZWRdIiwgZSk7CisJCX0KKwl9CisKKwlAT3ZlcnJpZGUKKwlwdWJsaWMgdm9pZCBjbG9zZVN0cmVhbSgpIHsKKwkJc3RyZWFtQXVkaW9Xcml0ZXIuc3RvcCgpOworCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvZmx2cmVjb3JkL2xpc3RlbmVyL1N0cmVhbVZpZGVvTGlzdGVuZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2ZsdnJlY29yZC9saXN0ZW5lci9TdHJlYW1WaWRlb0xpc3RlbmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzdjZDAxZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2ZsdnJlY29yZC9saXN0ZW5lci9TdHJlYW1WaWRlb0xpc3RlbmVyLmphdmEKQEAgLTAsMCArMSw3MCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmZsdnJlY29yZC5saXN0ZW5lcjsKKworaW1wb3J0IGphdmEudXRpbC5EYXRlOworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuZmx2cmVjb3JkLkZsdlJlY29yZGluZ01ldGFEYXRhRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuZmx2cmVjb3JkLmxpc3RlbmVyLmFzeW5jLkNhY2hlZEV2ZW50OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuZmx2cmVjb3JkLmxpc3RlbmVyLmFzeW5jLlN0cmVhbVZpZGVvV3JpdGVyOworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnJlZDUuc2VydmVyLmFwaS5zY29wZS5JU2NvcGU7CitpbXBvcnQgb3JnLnJlZDUuc2VydmVyLmFwaS5zdHJlYW0uSUJyb2FkY2FzdFN0cmVhbTsKK2ltcG9ydCBvcmcucmVkNS5zZXJ2ZXIuYXBpLnN0cmVhbS5JU3RyZWFtUGFja2V0OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CisKK3B1YmxpYyBjbGFzcyBTdHJlYW1WaWRlb0xpc3RlbmVyIGV4dGVuZHMgQmFzZVN0cmVhbUxpc3RlbmVyIHsKKwkKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKAorCQkJU3RyZWFtVmlkZW9MaXN0ZW5lci5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCisJcHJpdmF0ZSBmaW5hbCBTdHJlYW1WaWRlb1dyaXRlciBzdHJlYW1WaWRlb1dyaXRlcjsKKworCXB1YmxpYyBTdHJlYW1WaWRlb0xpc3RlbmVyKFN0cmluZyBzdHJlYW1OYW1lLCBJU2NvcGUgc2NvcGUsCisJCQlMb25nIGZsdlJlY29yZGluZ01ldGFEYXRhSWQsIGJvb2xlYW4gaXNTY3JlZW5EYXRhLAorCQkJYm9vbGVhbiBpc0ludGVydmlldywKKwkJCUZsdlJlY29yZGluZ01ldGFEYXRhRGFvIGZsdlJlY29yZGluZ01ldGFEYXRhRGFvKSB7CisJCXN0cmVhbVZpZGVvV3JpdGVyID0gbmV3IFN0cmVhbVZpZGVvV3JpdGVyKHN0cmVhbU5hbWUsIHNjb3BlLCBmbHZSZWNvcmRpbmdNZXRhRGF0YUlkLCBpc1NjcmVlbkRhdGEsCisJCQkJaXNJbnRlcnZpZXcsIGZsdlJlY29yZGluZ01ldGFEYXRhRGFvKTsKKwl9CisKKwlwdWJsaWMgdm9pZCBwYWNrZXRSZWNlaXZlZChJQnJvYWRjYXN0U3RyZWFtIGJyb2FkY2FzdFN0cmVhbSwKKwkJCUlTdHJlYW1QYWNrZXQgc3RyZWFtcGFja2V0KSB7CisJCXRyeSB7CisKKwkJCUNhY2hlZEV2ZW50IGNhY2hlZEV2ZW50ID0gbmV3IENhY2hlZEV2ZW50KCk7CisJCQljYWNoZWRFdmVudC5zZXREYXRhKHN0cmVhbXBhY2tldC5nZXREYXRhKCkuZHVwbGljYXRlKCkpOworCQkJY2FjaGVkRXZlbnQuc2V0RGF0YVR5cGUoc3RyZWFtcGFja2V0LmdldERhdGFUeXBlKCkpOworCQkJY2FjaGVkRXZlbnQuc2V0VGltZXN0YW1wKHN0cmVhbXBhY2tldC5nZXRUaW1lc3RhbXAoKSk7CisJCQljYWNoZWRFdmVudC5zZXRDdXJyZW50VGltZShuZXcgRGF0ZSgpKTsKKworCQkJc3RyZWFtVmlkZW9Xcml0ZXIuYXBwZW5kKGNhY2hlZEV2ZW50KTsKKworCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJbG9nLmVycm9yKCJbcGFja2V0UmVjZWl2ZWRdIiwgZSk7CisJCX0KKwl9CisKKwlAT3ZlcnJpZGUKKwlwdWJsaWMgdm9pZCBjbG9zZVN0cmVhbSgpIHsKKwkJc3RyZWFtVmlkZW9Xcml0ZXIuc3RvcCgpOworCX0KKwkKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2ZsdnJlY29yZC9saXN0ZW5lci9hc3luYy9CYXNlU3RyZWFtV3JpdGVyLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9mbHZyZWNvcmQvbGlzdGVuZXIvYXN5bmMvQmFzZVN0cmVhbVdyaXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzNmY1YWEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9mbHZyZWNvcmQvbGlzdGVuZXIvYXN5bmMvQmFzZVN0cmVhbVdyaXRlci5qYXZhCkBAIC0wLDAgKzEsMTY2IEBACisvKg0KKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgKiB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuZmx2cmVjb3JkLmxpc3RlbmVyLmFzeW5jOw0KKw0KK2ltcG9ydCBqYXZhLmlvLkZpbGU7DQoraW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247DQoraW1wb3J0IGphdmEudXRpbC5EYXRlOw0KK2ltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5CbG9ja2luZ1F1ZXVlOw0KK2ltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5MaW5rZWRCbG9ja2luZ1F1ZXVlOw0KK2ltcG9ydCBqYXZhLnV0aWwuY29uY3VycmVudC5UaW1lVW5pdDsNCisNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5PbUZpbGVIZWxwZXI7DQoraW1wb3J0IG9yZy5yZWQ1LmlvLklTdHJlYW1hYmxlRmlsZTsNCitpbXBvcnQgb3JnLnJlZDUuaW8uSVN0cmVhbWFibGVGaWxlRmFjdG9yeTsNCitpbXBvcnQgb3JnLnJlZDUuaW8uSVN0cmVhbWFibGVGaWxlU2VydmljZTsNCitpbXBvcnQgb3JnLnJlZDUuaW8uSVRhZ1dyaXRlcjsNCitpbXBvcnQgb3JnLnJlZDUuaW8uU3RyZWFtYWJsZUZpbGVGYWN0b3J5Ow0KK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcucmVkNS5zZXJ2ZXIuYXBpLnNjb3BlLklTY29wZTsNCitpbXBvcnQgb3JnLnJlZDUuc2VydmVyLnV0aWwuU2NvcGVVdGlsczsNCitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsNCisNCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQmFzZVN0cmVhbVdyaXRlciBpbXBsZW1lbnRzIFJ1bm5hYmxlIHsNCisNCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcigNCisJCQlCYXNlU3RyZWFtV3JpdGVyLmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7DQorDQorCS8vIHRocmVhZCBpcyBydW5uaW5nDQorCXByaXZhdGUgYm9vbGVhbiBydW5uaW5nID0gZmFsc2U7DQorCS8vIHRocmVhZCBpcyBzdG9wcGVkDQorCXByaXZhdGUgYm9vbGVhbiBzdG9wcGluZyA9IGZhbHNlOw0KKwkvLyB0aHJlYWQgd2lsbCBiZSBzdG9wcGVkIGFzIHNvb24gYXMgdGhlIHF1ZXVlIGlzIGVtcHR5DQorCXByaXZhdGUgYm9vbGVhbiBkb3N0b3BwaW5nID0gZmFsc2U7DQorDQorCXByb3RlY3RlZCBJVGFnV3JpdGVyIHdyaXRlciA9IG51bGw7DQorDQorCXByb3RlY3RlZCBMb25nIGZsdlJlY29yZGluZ01ldGFEYXRhSWQgPSBudWxsOw0KKw0KKwlwcm90ZWN0ZWQgRGF0ZSBzdGFydGVkU2Vzc2lvblRpbWVEYXRlID0gbnVsbDsNCisNCisJcHJvdGVjdGVkIEZpbGUgZmlsZTsNCisNCisJcHJvdGVjdGVkIElTY29wZSBzY29wZTsNCisNCisJcHJvdGVjdGVkIGJvb2xlYW4gaXNTY3JlZW5EYXRhID0gZmFsc2U7DQorDQorCXByb3RlY3RlZCBTdHJpbmcgc3RyZWFtTmFtZSA9ICIiOw0KKw0KKw0KKwlwcml2YXRlIGZpbmFsIEJsb2NraW5nUXVldWU8Q2FjaGVkRXZlbnQ+IHF1ZXVlID0gbmV3IExpbmtlZEJsb2NraW5nUXVldWU8Q2FjaGVkRXZlbnQ+KCk7DQorDQorCXB1YmxpYyBCYXNlU3RyZWFtV3JpdGVyKFN0cmluZyBzdHJlYW1OYW1lLCBJU2NvcGUgc2NvcGUsDQorCQkJTG9uZyBmbHZSZWNvcmRpbmdNZXRhRGF0YUlkLCBib29sZWFuIGlzU2NyZWVuRGF0YSkgew0KKwkJdGhpcy5zdGFydGVkU2Vzc2lvblRpbWVEYXRlID0gbmV3IERhdGUoKTsNCisJCXRoaXMuaXNTY3JlZW5EYXRhID0gaXNTY3JlZW5EYXRhOw0KKwkJdGhpcy5zdHJlYW1OYW1lID0gc3RyZWFtTmFtZTsNCisJCXRoaXMuZmx2UmVjb3JkaW5nTWV0YURhdGFJZCA9IGZsdlJlY29yZGluZ01ldGFEYXRhSWQ7DQorCQl0aGlzLnNjb3BlID0gc2NvcGU7DQorCQl0cnkgew0KKwkJCWluaXQoKTsNCisJCX0gY2F0Y2ggKElPRXhjZXB0aW9uIGV4KSB7DQorCQkJbG9nLmVycm9yKCJbU3RyZWFtQXVkaW9Xcml0ZXJdIENvdWxkIG5vdCBzdGFydCBUaHJlYWQiLCBleCk7DQorCQl9DQorCQlvcGVuKCk7DQorCX0NCisNCisJLyoqDQorCSAqIEluaXRpYWxpemF0aW9uDQorCSAqIA0KKwkgKiBAdGhyb3dzIElPRXhjZXB0aW9uDQorCSAqICAgICAgICAgICAgIEkvTyBleGNlcHRpb24NCisJICovDQorCXByaXZhdGUgdm9pZCBpbml0KCkgdGhyb3dzIElPRXhjZXB0aW9uIHsNCisJCWZpbGUgPSBuZXcgRmlsZShPbUZpbGVIZWxwZXIuZ2V0U3RyZWFtc1N1YkRpcih0aGlzLnNjb3BlLmdldE5hbWUoKSksIHRoaXMuc3RyZWFtTmFtZSArICIuZmx2Iik7DQorDQorCQlJU3RyZWFtYWJsZUZpbGVGYWN0b3J5IGZhY3RvcnkgPSAoSVN0cmVhbWFibGVGaWxlRmFjdG9yeSkgU2NvcGVVdGlscw0KKwkJCQkuZ2V0U2NvcGVTZXJ2aWNlKHRoaXMuc2NvcGUsIElTdHJlYW1hYmxlRmlsZUZhY3RvcnkuY2xhc3MsDQorCQkJCQkJU3RyZWFtYWJsZUZpbGVGYWN0b3J5LmNsYXNzKTsNCisNCisJCWlmICghdGhpcy5maWxlLmlzRmlsZSgpKSB7DQorCQkJLy8gTWF5YmUgdGhlIChwcmV2aW91c2x5IGV4aXN0aW5nKSBmaWxlIGhhcyBiZWVuIGRlbGV0ZWQNCisJCQl0aGlzLmZpbGUuY3JlYXRlTmV3RmlsZSgpOw0KKw0KKwkJfSBlbHNlIGlmICghZmlsZS5jYW5Xcml0ZSgpKSB7DQorCQkJdGhyb3cgbmV3IElPRXhjZXB0aW9uKCJUaGUgZmlsZSBpcyByZWFkLW9ubHkiKTsNCisJCX0NCisNCisJCUlTdHJlYW1hYmxlRmlsZVNlcnZpY2Ugc2VydmljZSA9IGZhY3RvcnkuZ2V0U2VydmljZSh0aGlzLmZpbGUpOw0KKwkJSVN0cmVhbWFibGVGaWxlIGZsdiA9IHNlcnZpY2UuZ2V0U3RyZWFtYWJsZUZpbGUodGhpcy5maWxlKTsNCisJCXRoaXMud3JpdGVyID0gZmx2LmdldFdyaXRlcigpOw0KKw0KKwl9DQorDQorCXByaXZhdGUgdm9pZCBvcGVuKCkgew0KKwkJcnVubmluZyA9IHRydWU7DQorCQluZXcgVGhyZWFkKHRoaXMsICJSZWNvcmRpbmcgIiArIGZpbGUuZ2V0TmFtZSgpKS5zdGFydCgpOw0KKwl9DQorDQorCXB1YmxpYyB2b2lkIHN0b3AoKSB7DQorCQlkb3N0b3BwaW5nID0gdHJ1ZTsNCisJfQ0KKw0KKwlwdWJsaWMgdm9pZCBydW4oKSB7DQorCQl3aGlsZSAoIXN0b3BwaW5nKSB7DQorCQkJdHJ5IHsNCisJCQkJQ2FjaGVkRXZlbnQgaXRlbSA9IHF1ZXVlLnBvbGwoMTAwLCBUaW1lVW5pdC5NSUNST1NFQ09ORFMpOw0KKwkJCQlpZiAoaXRlbSAhPSBudWxsKSB7DQorDQorCQkJCQlpZiAoZG9zdG9wcGluZykgew0KKwkJCQkJCWxvZy5kZWJ1ZygiUmVjb3JkaW5nIHN0b3BwZWQgYnV0IHN0aWxsIHBhY2tldHMgdG8gd3JpdGUgdG8gZmlsZSEiKTsNCisJCQkJCX0NCisNCisJCQkJCXBhY2tldFJlY2VpdmVkKGl0ZW0pOw0KKwkJCQl9IGVsc2UgaWYgKGRvc3RvcHBpbmcpIHsNCisJCQkJCXN0b3BwaW5nID0gdHJ1ZTsNCisJCQkJCWNsb3NlU3RyZWFtKCk7DQorCQkJCX0NCisJCQl9IGNhdGNoIChJbnRlcnJ1cHRlZEV4Y2VwdGlvbiBlKSB7DQorCQkJCWxvZy5lcnJvcigiW3J1bl0iLCBlKTsNCisJCQl9DQorCQl9DQorCX0NCisNCisJLyoqDQorCSAqIFdyaXRlIHRoZSBhY3R1YWwgcGFja2V0IGRhdGEgdG8gdGhlIGRpc2sgYW5kIGRvIGNhbGN1bGF0ZSBhbnkgbmVlZGVkDQorCSAqIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisJICogDQorCSAqIEBwYXJhbSBzdHJlYW1wYWNrZXQNCisJICovDQorCXB1YmxpYyBhYnN0cmFjdCB2b2lkIHBhY2tldFJlY2VpdmVkKENhY2hlZEV2ZW50IHN0cmVhbXBhY2tldCk7DQorDQorCS8qKg0KKwkgKiBjYWxsZWQgd2hlbiB0aGUgc3RyZWFtIGlzIGZpbmlzaGVkIHdyaXR0ZW4gb24gdGhlIGRpc2sNCisJICovDQorCXB1YmxpYyBhYnN0cmFjdCB2b2lkIGNsb3NlU3RyZWFtKCk7DQorDQorCXB1YmxpYyB2b2lkIGFwcGVuZChDYWNoZWRFdmVudCBzdHJlYW1wYWNrZXQpIHsNCisJCWlmICghcnVubmluZykgew0KKwkJCXRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oDQorCQkJCQkiQXBwZW5kIGNhbGxlZCBiZWZvcmUgdGhlIFRocmVhZCB3YXMgc3RhcnRlZCEiKTsNCisJCX0NCisJCXRyeSB7DQorCQkJcXVldWUucHV0KHN0cmVhbXBhY2tldCk7DQorCQl9IGNhdGNoIChJbnRlcnJ1cHRlZEV4Y2VwdGlvbiBpZ25vcmVkKSB7DQorCQkJbG9nLmVycm9yKCJbYXBwZW5kXSIsIGlnbm9yZWQpOw0KKwkJfQ0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2ZsdnJlY29yZC9saXN0ZW5lci9hc3luYy9DYWNoZWRFdmVudC5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvZmx2cmVjb3JkL2xpc3RlbmVyL2FzeW5jL0NhY2hlZEV2ZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmVjODhjMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2ZsdnJlY29yZC9saXN0ZW5lci9hc3luYy9DYWNoZWRFdmVudC5qYXZhCkBAIC0wLDAgKzEsNjUgQEAKKy8qDQorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAqIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5mbHZyZWNvcmQubGlzdGVuZXIuYXN5bmM7DQorDQoraW1wb3J0IGphdmEudXRpbC5EYXRlOw0KKw0KK2ltcG9ydCBvcmcuYXBhY2hlLm1pbmEuY29yZS5idWZmZXIuSW9CdWZmZXI7DQoraW1wb3J0IG9yZy5yZWQ1LnNlcnZlci5hcGkuc3RyZWFtLklTdHJlYW1QYWNrZXQ7DQorDQorcHVibGljIGNsYXNzIENhY2hlZEV2ZW50IGltcGxlbWVudHMgSVN0cmVhbVBhY2tldCB7DQorDQorCXByaXZhdGUgYnl0ZSBkYXRhVHlwZTsNCisJcHJpdmF0ZSBpbnQgdGltZXN0YW1wOyAvL3RoaXMgaXMgdGhlIHRpbWVTdGFtcCwgc2hvd2luZyB0aGUgdGltZSBlbGFwc2VkIHNpbmNlIHRoZSBtaWNyb3Bob25lIHdhcyB0dXJuZWQgb24NCisJcHJpdmF0ZSBJb0J1ZmZlciBkYXRhOw0KKwlwcml2YXRlIERhdGUgY3VycmVudFRpbWU7IC8vdGhpcyBpcyB0aGUgYWN0dWFsbHkgY3VycmVudCB0aW1lU3RhbXAgd2hlbiB0aGUgcGFja2V0IHdpdGggYXVkaW8gZGF0YSBkaWQgZW50ZXIgdGhlIHNlcnZlcg0KKw0KKwlwdWJsaWMgRGF0ZSBnZXRDdXJyZW50VGltZSgpIHsNCisJCXJldHVybiBjdXJyZW50VGltZTsNCisJfQ0KKw0KKwlwdWJsaWMgdm9pZCBzZXRDdXJyZW50VGltZShEYXRlIGN1cnJlbnRUaW1lKSB7DQorCQl0aGlzLmN1cnJlbnRUaW1lID0gY3VycmVudFRpbWU7DQorCX0NCisNCisJcHVibGljIHZvaWQgc2V0RGF0YVR5cGUoYnl0ZSBkYXRhVHlwZSkgew0KKwkJdGhpcy5kYXRhVHlwZSA9IGRhdGFUeXBlOw0KKwl9DQorDQorCXB1YmxpYyB2b2lkIHNldFRpbWVzdGFtcChpbnQgdGltZXN0YW1wKSB7DQorCQl0aGlzLnRpbWVzdGFtcCA9IHRpbWVzdGFtcDsNCisJfQ0KKw0KKwlwdWJsaWMgdm9pZCBzZXREYXRhKElvQnVmZmVyIGRhdGEpIHsNCisJCXRoaXMuZGF0YSA9IGRhdGE7DQorCX0NCisNCisJcHVibGljIGJ5dGUgZ2V0RGF0YVR5cGUoKSB7DQorCQlyZXR1cm4gZGF0YVR5cGU7DQorCX0NCisNCisJcHVibGljIGludCBnZXRUaW1lc3RhbXAoKSB7DQorCQlyZXR1cm4gdGltZXN0YW1wOw0KKwl9DQorDQorCXB1YmxpYyBJb0J1ZmZlciBnZXREYXRhKCkgew0KKwkJcmV0dXJuIGRhdGE7DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvZmx2cmVjb3JkL2xpc3RlbmVyL2FzeW5jL1N0cmVhbUF1ZGlvV3JpdGVyLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9mbHZyZWNvcmQvbGlzdGVuZXIvYXN5bmMvU3RyZWFtQXVkaW9Xcml0ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDY1ZDRmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvZmx2cmVjb3JkL2xpc3RlbmVyL2FzeW5jL1N0cmVhbUF1ZGlvV3JpdGVyLmphdmEKQEAgLTAsMCArMSwyODEgQEAKKy8qDQorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAqIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5mbHZyZWNvcmQubGlzdGVuZXIuYXN5bmM7DQorDQoraW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247DQoraW1wb3J0IGphdmEudXRpbC5EYXRlOw0KKw0KK2ltcG9ydCBvcmcuYXBhY2hlLm1pbmEuY29yZS5idWZmZXIuSW9CdWZmZXI7DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5mbHZyZWNvcmQuRmx2UmVjb3JkaW5nTWV0YURhdGFEYW87DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuZmx2cmVjb3JkLkZsdlJlY29yZGluZ01ldGFEZWx0YURhbzsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuZmx2cmVjb3JkLkZsdlJlY29yZGluZ01ldGFEYXRhOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5mbHZyZWNvcmQuRmx2UmVjb3JkaW5nTWV0YURlbHRhOw0KK2ltcG9ydCBvcmcucmVkNS5pby5JVGFnOw0KK2ltcG9ydCBvcmcucmVkNS5pby5mbHYuaW1wbC5UYWc7DQoraW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5yZWQ1LnNlcnZlci5hcGkuc2NvcGUuSVNjb3BlOw0KK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOw0KKw0KK3B1YmxpYyBjbGFzcyBTdHJlYW1BdWRpb1dyaXRlciBleHRlbmRzIEJhc2VTdHJlYW1Xcml0ZXIgew0KKw0KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKA0KKwkJCVN0cmVhbUF1ZGlvV3JpdGVyLmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7DQorDQorCXByaXZhdGUgaW50IGR1cmF0aW9uID0gMDsNCisNCisJcHJpdmF0ZSBpbnQgc3RhcnRUaW1lU3RhbXAgPSAtMTsNCisNCisJcHJpdmF0ZSBsb25nIGluaXRpYWxEZWx0YSA9IDA7DQorDQorCXByaXZhdGUgSW50ZWdlciBsYXN0VGltZVN0YW1wID0gLTE7DQorCXByaXZhdGUgRGF0ZSBsYXN0Y3VycmVudFRpbWUgPSBudWxsOw0KKw0KKwlwcml2YXRlIGludCBsYXN0U3RyZWFtUGFja2V0VGltZVN0YW1wID0gLTE7DQorDQorCXByaXZhdGUgbG9uZyBieXRlQ291bnQgPSAwOw0KKwkNCisJLy8gQXV0b3dpcmUgaXMgbm90IHBvc3NpYmxlDQorCXByb3RlY3RlZCBmaW5hbCBGbHZSZWNvcmRpbmdNZXRhRGVsdGFEYW8gZmx2UmVjb3JkaW5nTWV0YURlbHRhRGFvOw0KKwlwcm90ZWN0ZWQgZmluYWwgRmx2UmVjb3JkaW5nTWV0YURhdGFEYW8gZmx2UmVjb3JkaW5nTWV0YURhdGFEYW87DQorDQorCXByaXZhdGUgYm9vbGVhbiBpc0ludGVydmlldyA9IGZhbHNlOw0KKwkNCisJcHVibGljIFN0cmVhbUF1ZGlvV3JpdGVyKFN0cmluZyBzdHJlYW1OYW1lLCBJU2NvcGUgc2NvcGUsDQorCQkJTG9uZyBmbHZSZWNvcmRpbmdNZXRhRGF0YUlkLCBib29sZWFuIGlzU2NyZWVuRGF0YSwNCisJCQlib29sZWFuIGlzSW50ZXJ2aWV3LA0KKwkJCUZsdlJlY29yZGluZ01ldGFEZWx0YURhbyBmbHZSZWNvcmRpbmdNZXRhRGVsdGFEYW8sDQorCQkJRmx2UmVjb3JkaW5nTWV0YURhdGFEYW8gZmx2UmVjb3JkaW5nTWV0YURhdGFEYW8pIHsNCisJCXN1cGVyKHN0cmVhbU5hbWUsIHNjb3BlLCBmbHZSZWNvcmRpbmdNZXRhRGF0YUlkLCBpc1NjcmVlbkRhdGEpOw0KKwkJDQorCQl0aGlzLmZsdlJlY29yZGluZ01ldGFEZWx0YURhbyA9IGZsdlJlY29yZGluZ01ldGFEZWx0YURhbzsNCisJCXRoaXMuZmx2UmVjb3JkaW5nTWV0YURhdGFEYW8gPSBmbHZSZWNvcmRpbmdNZXRhRGF0YURhbzsNCisJCXRoaXMuaXNJbnRlcnZpZXcgID0gaXNJbnRlcnZpZXc7DQorCQkNCisJCUZsdlJlY29yZGluZ01ldGFEYXRhIGZsdlJlY29yZGluZ01ldGFEYXRhID0gZmx2UmVjb3JkaW5nTWV0YURhdGFEYW8uDQorCQkJCQkJCQlnZXRGbHZSZWNvcmRpbmdNZXRhRGF0YUJ5SWQoZmx2UmVjb3JkaW5nTWV0YURhdGFJZCk7DQorCQlmbHZSZWNvcmRpbmdNZXRhRGF0YS5zZXRTdHJlYW1SZWFkZXJUaHJlYWRDb21wbGV0ZShmYWxzZSk7DQorCQlmbHZSZWNvcmRpbmdNZXRhRGF0YURhby51cGRhdGVGbHZSZWNvcmRpbmdNZXRhRGF0YShmbHZSZWNvcmRpbmdNZXRhRGF0YSk7DQorCQkNCisJfQ0KKw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgcGFja2V0UmVjZWl2ZWQoQ2FjaGVkRXZlbnQgc3RyZWFtcGFja2V0KSB7DQorCQl0cnkgew0KKw0KKwkJCS8vIFdlIG9ubHkgY2FyZSBhYm91dCBhdWRpbyBhdCB0aGlzIG1vbWVudA0KKwkJCWlmICh0aGlzLmlzSW50ZXJ2aWV3IHx8IHN0cmVhbXBhY2tldC5nZXREYXRhVHlwZSgpID09IDgpIHsNCisNCisJCQkJaWYgKHN0cmVhbXBhY2tldC5nZXRUaW1lc3RhbXAoKSA8PSAwKSB7DQorCQkJCQlsb2cud2FybigiTmVnYXRpdmUgVGltZVN0YW1wIik7DQorCQkJCQlyZXR1cm47DQorCQkJCX0NCisNCisJCQkJSW9CdWZmZXIgZGF0YSA9IHN0cmVhbXBhY2tldC5nZXREYXRhKCkuYXNSZWFkT25seUJ1ZmZlcigpOw0KKw0KKwkJCQlpZiAoZGF0YS5saW1pdCgpID09IDApIHsNCisJCQkJCXJldHVybjsNCisJCQkJfQ0KKw0KKwkJCQl0aGlzLmJ5dGVDb3VudCArPSBkYXRhLmxpbWl0KCk7DQorCQkJCQ0KKwkJCQlsYXN0Y3VycmVudFRpbWUgPSBzdHJlYW1wYWNrZXQuZ2V0Q3VycmVudFRpbWUoKTsNCisJCQkJaW50IHRpbWVTdGFtcCA9IHN0cmVhbXBhY2tldC5nZXRUaW1lc3RhbXAoKTsNCisJCQkJRGF0ZSB2aXJ0dWFsVGltZSA9IHN0cmVhbXBhY2tldC5nZXRDdXJyZW50VGltZSgpOw0KKw0KKwkJCQlpZiAoc3RhcnRUaW1lU3RhbXAgPT0gLTEpIHsNCisNCisJCQkJCS8vIENhbGN1bGF0ZSB0aGUgZGVsdGEgYmV0d2VlbiB0aGUgaW5pdGlhbCBzdGFydCBhbmQgdGhlDQorCQkJCQkvLyBmaXJzdCBhdWRpby1wYWNrZXQgZGF0YQ0KKw0KKwkJCQkJdGhpcy5pbml0aWFsRGVsdGEgPSB2aXJ0dWFsVGltZS5nZXRUaW1lKCkNCisJCQkJCQkJLSB0aGlzLnN0YXJ0ZWRTZXNzaW9uVGltZURhdGUuZ2V0VGltZSgpOw0KKw0KKwkJCQkJRmx2UmVjb3JkaW5nTWV0YURlbHRhIGZsdlJlY29yZGluZ01ldGFEZWx0YSA9IG5ldyBGbHZSZWNvcmRpbmdNZXRhRGVsdGEoKTsNCisNCisJCQkJCWZsdlJlY29yZGluZ01ldGFEZWx0YS5zZXREZWx0YVRpbWUodGhpcy5pbml0aWFsRGVsdGEpOw0KKwkJCQkJZmx2UmVjb3JkaW5nTWV0YURlbHRhDQorCQkJCQkJCS5zZXRGbHZSZWNvcmRpbmdNZXRhRGF0YUlkKHRoaXMuZmx2UmVjb3JkaW5nTWV0YURhdGFJZCk7DQorCQkJCQlmbHZSZWNvcmRpbmdNZXRhRGVsdGEuc2V0VGltZVN0YW1wKDApOw0KKwkJCQkJZmx2UmVjb3JkaW5nTWV0YURlbHRhLnNldERlYnVnU3RhdHVzKCJJTklUIEFVRElPIik7DQorCQkJCQlmbHZSZWNvcmRpbmdNZXRhRGVsdGEuc2V0SXNTdGFydFBhZGRpbmcodHJ1ZSk7DQorCQkJCQlmbHZSZWNvcmRpbmdNZXRhRGVsdGEuc2V0SXNFbmRQYWRkaW5nKGZhbHNlKTsNCisJCQkJCWZsdlJlY29yZGluZ01ldGFEZWx0YS5zZXREYXRhTGVuZ3RoUGFja2V0KGRhdGEubGltaXQoKSk7DQorCQkJCQlmbHZSZWNvcmRpbmdNZXRhRGVsdGENCisJCQkJCQkJLnNldFJlY2VpdmVkQXVkaW9EYXRhTGVuZ3RoKHRoaXMuYnl0ZUNvdW50KTsNCisJCQkJCWZsdlJlY29yZGluZ01ldGFEZWx0YQ0KKwkJCQkJCQkuc2V0U3RhcnRUaW1lKHRoaXMuc3RhcnRlZFNlc3Npb25UaW1lRGF0ZSk7DQorCQkJCQlmbHZSZWNvcmRpbmdNZXRhRGVsdGEuc2V0UGFja2V0VGltZVN0YW1wKHN0cmVhbXBhY2tldA0KKwkJCQkJCQkuZ2V0VGltZXN0YW1wKCkpOw0KKw0KKwkJCQkJTG9uZyBkZWx0YVRpbWVTdGFtcCA9IHZpcnR1YWxUaW1lLmdldFRpbWUoKQ0KKwkJCQkJCQktIHRoaXMuc3RhcnRlZFNlc3Npb25UaW1lRGF0ZS5nZXRUaW1lKCk7DQorDQorCQkJCQkvLyB0aGlzLmR1cmF0aW9uID0gTWF0aC5tYXgodGhpcy5kdXJhdGlvbiwgMCArDQorCQkJCQkvLyB0aGlzLndyaXRlci5nZXRPZmZzZXQoKSk7DQorCQkJCQlmbHZSZWNvcmRpbmdNZXRhRGVsdGEuc2V0RHVyYXRpb24oMCk7DQorDQorCQkJCQlMb25nIG1pc3NpbmdUaW1lID0gZGVsdGFUaW1lU3RhbXAgLSAwOw0KKw0KKwkJCQkJZmx2UmVjb3JkaW5nTWV0YURlbHRhLnNldE1pc3NpbmdUaW1lKG1pc3NpbmdUaW1lKTsNCisNCisJCQkJCWZsdlJlY29yZGluZ01ldGFEZWx0YS5zZXRDdXJyZW50VGltZSh2aXJ0dWFsVGltZSk7DQorCQkJCQlmbHZSZWNvcmRpbmdNZXRhRGVsdGEuc2V0RGVsdGFUaW1lU3RhbXAoZGVsdGFUaW1lU3RhbXApOw0KKwkJCQkJZmx2UmVjb3JkaW5nTWV0YURlbHRhLnNldFN0YXJ0VGltZVN0YW1wKHN0YXJ0VGltZVN0YW1wKTsNCisNCisJCQkJCWZsdlJlY29yZGluZ01ldGFEZWx0YURhbw0KKwkJCQkJCQkuYWRkRmx2UmVjb3JkaW5nTWV0YURlbHRhKGZsdlJlY29yZGluZ01ldGFEZWx0YSk7DQorDQorCQkJCQkvLyBUaGF0IHdpbGwgYmUgbm90IGJpZ2dlciB0aGVuIGxvbmcgdmFsdWUNCisJCQkJCXRoaXMuc3RhcnRUaW1lU3RhbXAgPSAoc3RyZWFtcGFja2V0LmdldFRpbWVzdGFtcCgpKTsNCisNCisJCQkJCS8vIFdlIGhhdmUgdG8gc2V0IHRoYXQgdG8gYnlwYXNzIHRoZSBpbml0aWFsIGRlbHRhDQorCQkJCQkvLyBsYXN0VGltZVN0YW1wID0gc3RhcnRUaW1lU3RhbXA7DQorCQkJCX0NCisNCisJCQkJDQorDQorCQkJCXRoaXMubGFzdFN0cmVhbVBhY2tldFRpbWVTdGFtcCA9IHN0cmVhbXBhY2tldC5nZXRUaW1lc3RhbXAoKTsNCisNCisJCQkJdGltZVN0YW1wIC09IHRoaXMuc3RhcnRUaW1lU3RhbXA7DQorDQorCQkJCWxvbmcgZGVsdGFUaW1lID0gMDsNCisJCQkJaWYgKGxhc3RUaW1lU3RhbXAgPT0gLTEpIHsNCisJCQkJCWRlbHRhVGltZSA9IDA7IC8vIE9mZnNldCBhdCB0aGUgYmVnaW5uaW5nIGlzIGNhbGN1bGF0ZWQNCisJCQkJCQkJCQkvLyBhYm92ZQ0KKwkJCQl9IGVsc2Ugew0KKwkJCQkJZGVsdGFUaW1lID0gdGltZVN0YW1wIC0gbGFzdFRpbWVTdGFtcDsNCisJCQkJfQ0KKw0KKwkJCQlMb25nIHByZUxhc3RUaW1lU3RhbXAgPSBMb25nDQorCQkJCQkJLnBhcnNlTG9uZyhsYXN0VGltZVN0YW1wLnRvU3RyaW5nKCkpOw0KKw0KKwkJCQlsYXN0VGltZVN0YW1wID0gdGltZVN0YW1wOw0KKw0KKwkJCQlpZiAoZGVsdGFUaW1lID4gNzUpIHsNCisNCisJCQkJCUZsdlJlY29yZGluZ01ldGFEZWx0YSBmbHZSZWNvcmRpbmdNZXRhRGVsdGEgPSBuZXcgRmx2UmVjb3JkaW5nTWV0YURlbHRhKCk7DQorDQorCQkJCQlmbHZSZWNvcmRpbmdNZXRhRGVsdGEuc2V0RGVsdGFUaW1lKGRlbHRhVGltZSk7DQorCQkJCQlmbHZSZWNvcmRpbmdNZXRhRGVsdGENCisJCQkJCQkJLnNldEZsdlJlY29yZGluZ01ldGFEYXRhSWQodGhpcy5mbHZSZWNvcmRpbmdNZXRhRGF0YUlkKTsNCisJCQkJCWZsdlJlY29yZGluZ01ldGFEZWx0YS5zZXRUaW1lU3RhbXAodGltZVN0YW1wKTsNCisJCQkJCWZsdlJlY29yZGluZ01ldGFEZWx0YS5zZXREZWJ1Z1N0YXR1cygiUlVOIEFVRElPIik7DQorCQkJCQlmbHZSZWNvcmRpbmdNZXRhRGVsdGEuc2V0SXNTdGFydFBhZGRpbmcoZmFsc2UpOw0KKwkJCQkJZmx2UmVjb3JkaW5nTWV0YURlbHRhLnNldExhc3RUaW1lU3RhbXAocHJlTGFzdFRpbWVTdGFtcCk7DQorCQkJCQlmbHZSZWNvcmRpbmdNZXRhRGVsdGEuc2V0SXNFbmRQYWRkaW5nKGZhbHNlKTsNCisJCQkJCWZsdlJlY29yZGluZ01ldGFEZWx0YS5zZXREYXRhTGVuZ3RoUGFja2V0KGRhdGEubGltaXQoKSk7DQorCQkJCQlmbHZSZWNvcmRpbmdNZXRhRGVsdGENCisJCQkJCQkJLnNldFJlY2VpdmVkQXVkaW9EYXRhTGVuZ3RoKHRoaXMuYnl0ZUNvdW50KTsNCisJCQkJCWZsdlJlY29yZGluZ01ldGFEZWx0YQ0KKwkJCQkJCQkuc2V0U3RhcnRUaW1lKHRoaXMuc3RhcnRlZFNlc3Npb25UaW1lRGF0ZSk7DQorCQkJCQlmbHZSZWNvcmRpbmdNZXRhRGVsdGEuc2V0UGFja2V0VGltZVN0YW1wKHN0cmVhbXBhY2tldA0KKwkJCQkJCQkuZ2V0VGltZXN0YW1wKCkpOw0KKw0KKwkJCQkJRGF0ZSBjdXJyZW50X2RhdGUgPSBuZXcgRGF0ZSgpOw0KKwkJCQkJTG9uZyBkZWx0YVRpbWVTdGFtcCA9IGN1cnJlbnRfZGF0ZS5nZXRUaW1lKCkNCisJCQkJCQkJLSB0aGlzLnN0YXJ0ZWRTZXNzaW9uVGltZURhdGUuZ2V0VGltZSgpOw0KKw0KKwkJCQkJdGhpcy5kdXJhdGlvbiA9IE1hdGgubWF4KHRoaXMuZHVyYXRpb24sIHRpbWVTdGFtcA0KKwkJCQkJCQkrIHRoaXMud3JpdGVyLmdldE9mZnNldCgpKTsNCisJCQkJCWZsdlJlY29yZGluZ01ldGFEZWx0YS5zZXREdXJhdGlvbih0aGlzLmR1cmF0aW9uKTsNCisNCisJCQkJCUxvbmcgbWlzc2luZ1RpbWUgPSBkZWx0YVRpbWVTdGFtcCAtIHRpbWVTdGFtcDsNCisNCisJCQkJCWZsdlJlY29yZGluZ01ldGFEZWx0YS5zZXRNaXNzaW5nVGltZShtaXNzaW5nVGltZSk7DQorDQorCQkJCQlmbHZSZWNvcmRpbmdNZXRhRGVsdGEuc2V0Q3VycmVudFRpbWUoY3VycmVudF9kYXRlKTsNCisJCQkJCWZsdlJlY29yZGluZ01ldGFEZWx0YS5zZXREZWx0YVRpbWVTdGFtcChkZWx0YVRpbWVTdGFtcCk7DQorCQkJCQlmbHZSZWNvcmRpbmdNZXRhRGVsdGEuc2V0U3RhcnRUaW1lU3RhbXAoc3RhcnRUaW1lU3RhbXApOw0KKw0KKwkJCQkJZmx2UmVjb3JkaW5nTWV0YURlbHRhRGFvDQorCQkJCQkJCS5hZGRGbHZSZWNvcmRpbmdNZXRhRGVsdGEoZmx2UmVjb3JkaW5nTWV0YURlbHRhKTsNCisNCisJCQkJfQ0KKw0KKwkJCQlJVGFnIHRhZyA9IG5ldyBUYWcoKTsNCisJCQkJdGFnLnNldERhdGFUeXBlKHN0cmVhbXBhY2tldC5nZXREYXRhVHlwZSgpKTsNCisNCisJCQkJLy8gbG9nLmRlYnVnKCJkYXRhLmxpbWl0KCkgOjogIitkYXRhLmxpbWl0KCkpOw0KKwkJCQl0YWcuc2V0Qm9keVNpemUoZGF0YS5saW1pdCgpKTsNCisJCQkJdGFnLnNldFRpbWVzdGFtcCh0aW1lU3RhbXApOw0KKwkJCQl0YWcuc2V0Qm9keShkYXRhKTsNCisNCisJCQkJd3JpdGVyLndyaXRlVGFnKHRhZyk7DQorDQorCQkJfQ0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsNCisJCQlsb2cuZXJyb3IoIltwYWNrZXRSZWNlaXZlZF0iLCBlKTsNCisJCX0NCisJfQ0KKw0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgY2xvc2VTdHJlYW0oKSB7DQorCQl0cnkgew0KKwkJCXdyaXRlci5jbG9zZSgpOw0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgew0KKwkJCWxvZy5lcnJvcigiW2Nsb3NlU3RyZWFtLCBjbG9zZSB3cml0ZXJdIiwgZXJyKTsNCisJCX0NCisNCisJCXRyeSB7DQorCQkJLy8gV2UgZG8gbm90IGFkZCBhbnkgRW5kIFBhZGRpbmcgb3IgY291bnQgdGhlIGdhcHMgZm9yIHRoZQ0KKwkJCS8vIFNjcmVlbiBEYXRhLCBjYXVzZSB0aGVyZSBpcyBubyENCisJCQkNCisJCQlEYXRlIHZpcnR1YWxUaW1lID0gbGFzdGN1cnJlbnRUaW1lOw0KKwkJCWxvZy5kZWJ1ZygidmlydHVhbFRpbWU6ICIgKyB2aXJ0dWFsVGltZSk7DQorCQkJbG9nLmRlYnVnKCJzdGFydGVkU2Vzc2lvblRpbWVEYXRlOiAiICsgc3RhcnRlZFNlc3Npb25UaW1lRGF0ZSk7DQorCQkJDQorCQkJbG9uZyBkZWx0YVJlY29yZGluZ1RpbWUgPSB2aXJ0dWFsVGltZSA9PSBudWxsID8gMCA6IHZpcnR1YWxUaW1lLmdldFRpbWUoKSAtIHN0YXJ0ZWRTZXNzaW9uVGltZURhdGUuZ2V0VGltZSgpOw0KKw0KKwkJCWxvZy5kZWJ1ZygibGFzdFRpbWVTdGFtcCA6Y2xvc2VTdHJlYW06ICIgKyBsYXN0VGltZVN0YW1wKTsNCisJCQlsb2cuZGVidWcoImxhc3RTdHJlYW1QYWNrZXRUaW1lU3RhbXAgOmNsb3NlU3RyZWFtOiAiICsgbGFzdFN0cmVhbVBhY2tldFRpbWVTdGFtcCk7DQorCQkJbG9nLmRlYnVnKCJkZWx0YVJlY29yZGluZ1RpbWUgOmNsb3NlU3RyZWFtOiAiICsgZGVsdGFSZWNvcmRpbmdUaW1lKTsNCisNCisJCQlsb25nIGRlbHRhVGltZVBhZGRpbmdFbmQgPSBkZWx0YVJlY29yZGluZ1RpbWUgLSBsYXN0VGltZVN0YW1wIC0gaW5pdGlhbERlbHRhOw0KKw0KKwkJCWxvZy5kZWJ1ZygiZGVsdGFUaW1lUGFkZGluZ0VuZCA6OiAiICsgZGVsdGFUaW1lUGFkZGluZ0VuZCk7DQorDQorCQkJRmx2UmVjb3JkaW5nTWV0YURlbHRhIGZsdlJlY29yZGluZ01ldGFEZWx0YSA9IG5ldyBGbHZSZWNvcmRpbmdNZXRhRGVsdGEoKTsNCisNCisJCQlmbHZSZWNvcmRpbmdNZXRhRGVsdGEuc2V0RGVsdGFUaW1lKGRlbHRhVGltZVBhZGRpbmdFbmQpOw0KKwkJCWZsdlJlY29yZGluZ01ldGFEZWx0YQ0KKwkJCQkJLnNldEZsdlJlY29yZGluZ01ldGFEYXRhSWQoZmx2UmVjb3JkaW5nTWV0YURhdGFJZCk7DQorCQkJZmx2UmVjb3JkaW5nTWV0YURlbHRhLnNldFRpbWVTdGFtcChsYXN0VGltZVN0YW1wKTsNCisJCQlmbHZSZWNvcmRpbmdNZXRhRGVsdGEuc2V0RGVidWdTdGF0dXMoIkVORCBBVURJTyIpOw0KKwkJCWZsdlJlY29yZGluZ01ldGFEZWx0YS5zZXRJc1N0YXJ0UGFkZGluZyhmYWxzZSk7DQorCQkJZmx2UmVjb3JkaW5nTWV0YURlbHRhLnNldElzRW5kUGFkZGluZyh0cnVlKTsNCisJCQlmbHZSZWNvcmRpbmdNZXRhRGVsdGEuc2V0RGF0YUxlbmd0aFBhY2tldChudWxsKTsNCisJCQlmbHZSZWNvcmRpbmdNZXRhRGVsdGENCisJCQkJCS5zZXRSZWNlaXZlZEF1ZGlvRGF0YUxlbmd0aChieXRlQ291bnQpOw0KKwkJCWZsdlJlY29yZGluZ01ldGFEZWx0YS5zZXRTdGFydFRpbWUoc3RhcnRlZFNlc3Npb25UaW1lRGF0ZSk7DQorCQkJZmx2UmVjb3JkaW5nTWV0YURlbHRhLnNldEN1cnJlbnRUaW1lKG5ldyBEYXRlKCkpOw0KKw0KKwkJCWZsdlJlY29yZGluZ01ldGFEZWx0YURhbw0KKwkJCQkJLmFkZEZsdlJlY29yZGluZ01ldGFEZWx0YShmbHZSZWNvcmRpbmdNZXRhRGVsdGEpOw0KKwkJCQ0KKwkJCS8vV3JpdGUgdGhlIGNvbXBsZXRlIEJpdCB0byB0aGUgbWV0YSBkYXRhLCB0aGUgY29udmVydGVyIHRhc2sgd2lsbCB3YWl0IGZvciB0aGlzIGJpdCENCisJCQlGbHZSZWNvcmRpbmdNZXRhRGF0YSBmbHZSZWNvcmRpbmdNZXRhRGF0YSA9IGZsdlJlY29yZGluZ01ldGFEYXRhRGFvLmdldEZsdlJlY29yZGluZ01ldGFEYXRhQnlJZChmbHZSZWNvcmRpbmdNZXRhRGF0YUlkKTsNCisJCQlmbHZSZWNvcmRpbmdNZXRhRGF0YS5zZXRTdHJlYW1SZWFkZXJUaHJlYWRDb21wbGV0ZSh0cnVlKTsNCisJCQlmbHZSZWNvcmRpbmdNZXRhRGF0YURhby51cGRhdGVGbHZSZWNvcmRpbmdNZXRhRGF0YShmbHZSZWNvcmRpbmdNZXRhRGF0YSk7DQorDQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7DQorCQkJbG9nLmVycm9yKCJbY2xvc2VTdHJlYW1dIiwgZXJyKTsNCisJCX0NCisJfQ0KK30NCmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9mbHZyZWNvcmQvbGlzdGVuZXIvYXN5bmMvU3RyZWFtVmlkZW9Xcml0ZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2ZsdnJlY29yZC9saXN0ZW5lci9hc3luYy9TdHJlYW1WaWRlb1dyaXRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA1MjFhM2UKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9mbHZyZWNvcmQvbGlzdGVuZXIvYXN5bmMvU3RyZWFtVmlkZW9Xcml0ZXIuamF2YQpAQCAtMCwwICsxLDE2MiBAQAorLyoNCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICogdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmZsdnJlY29yZC5saXN0ZW5lci5hc3luYzsNCisNCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsNCitpbXBvcnQgamF2YS51dGlsLkRhdGU7DQorDQoraW1wb3J0IG9yZy5hcGFjaGUubWluYS5jb3JlLmJ1ZmZlci5Jb0J1ZmZlcjsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmZsdnJlY29yZC5GbHZSZWNvcmRpbmdNZXRhRGF0YURhbzsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuZmx2cmVjb3JkLkZsdlJlY29yZGluZ01ldGFEYXRhOw0KK2ltcG9ydCBvcmcucmVkNS5pby5JVGFnOw0KK2ltcG9ydCBvcmcucmVkNS5pby5mbHYuaW1wbC5UYWc7DQoraW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7DQoraW1wb3J0IG9yZy5yZWQ1LnNlcnZlci5hcGkuc2NvcGUuSVNjb3BlOw0KK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOw0KKw0KK3B1YmxpYyBjbGFzcyBTdHJlYW1WaWRlb1dyaXRlciBleHRlbmRzIEJhc2VTdHJlYW1Xcml0ZXIgew0KKwkNCisJcHJpdmF0ZSBpbnQgc3RhcnRUaW1lU3RhbXAgPSAtMTsNCisNCisJcHJpdmF0ZSBEYXRlIHN0YXJ0ZWRTZXNzaW9uU2NyZWVuVGltZURhdGUgPSBudWxsOw0KKw0KKwlwcml2YXRlIGxvbmcgaW5pdGlhbERlbHRhID0gMDsNCisJDQorCXByaXZhdGUgZmluYWwgRmx2UmVjb3JkaW5nTWV0YURhdGFEYW8gZmx2UmVjb3JkaW5nTWV0YURhdGFEYW87DQorDQorCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoDQorCQkJU3RyZWFtVmlkZW9Xcml0ZXIuY2xhc3MsIE9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsNCisJDQorCXB1YmxpYyBTdHJlYW1WaWRlb1dyaXRlcihTdHJpbmcgc3RyZWFtTmFtZSwgSVNjb3BlIHNjb3BlLA0KKwkJCUxvbmcgZmx2UmVjb3JkaW5nTWV0YURhdGFJZCwgYm9vbGVhbiBpc1NjcmVlbkRhdGEsDQorCQkJYm9vbGVhbiBpc0ludGVydmlldywNCisJCQlGbHZSZWNvcmRpbmdNZXRhRGF0YURhbyBmbHZSZWNvcmRpbmdNZXRhRGF0YURhbykgew0KKwkJDQorCQlzdXBlcihzdHJlYW1OYW1lLCBzY29wZSwgZmx2UmVjb3JkaW5nTWV0YURhdGFJZCwgaXNTY3JlZW5EYXRhKTsNCisJCQ0KKwkJdGhpcy5mbHZSZWNvcmRpbmdNZXRhRGF0YURhbyA9IGZsdlJlY29yZGluZ01ldGFEYXRhRGFvOw0KKwkJDQorCQlGbHZSZWNvcmRpbmdNZXRhRGF0YSBmbHZSZWNvcmRpbmdNZXRhRGF0YSA9IGZsdlJlY29yZGluZ01ldGFEYXRhRGFvLg0KKwkJCQlnZXRGbHZSZWNvcmRpbmdNZXRhRGF0YUJ5SWQoZmx2UmVjb3JkaW5nTWV0YURhdGFJZCk7DQorCQlmbHZSZWNvcmRpbmdNZXRhRGF0YS5zZXRTdHJlYW1SZWFkZXJUaHJlYWRDb21wbGV0ZShmYWxzZSk7DQorCQlmbHZSZWNvcmRpbmdNZXRhRGF0YURhby51cGRhdGVGbHZSZWNvcmRpbmdNZXRhRGF0YShmbHZSZWNvcmRpbmdNZXRhRGF0YSk7DQorCX0NCisJDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBwYWNrZXRSZWNlaXZlZChDYWNoZWRFdmVudCBzdHJlYW1wYWNrZXQpIHsNCisJCXRyeSB7DQorDQorCQkJLy8gV2Ugb25seSBhcmUgY29uY2VybmVkIGFib3V0IHZpZGVvIGF0IHRoaXMgbW9tZW50DQorCQkJLy8gaWYgKHN0cmVhbXBhY2tldC5nZXREYXRhVHlwZSgpID09IDkpIHsNCisJCQkNCisJCQlpbnQgdGltZVN0YW1wID0gc3RyZWFtcGFja2V0LmdldFRpbWVzdGFtcCgpOw0KKwkJCURhdGUgdmlydHVhbFRpbWUgPSBzdHJlYW1wYWNrZXQuZ2V0Q3VycmVudFRpbWUoKTsNCisNCisJCQlpZiAodGhpcy5zdGFydGVkU2Vzc2lvblNjcmVlblRpbWVEYXRlID09IG51bGwpIHsNCisNCisJCQkJdGhpcy5zdGFydGVkU2Vzc2lvblNjcmVlblRpbWVEYXRlID0gdmlydHVhbFRpbWU7DQorDQorCQkJCS8vIENhbGN1bGF0ZSB0aGUgZGVsdGEgYmV0d2VlbiB0aGUgaW5pdGlhbCBzdGFydCBhbmQgdGhlIGZpcnN0DQorCQkJCS8vIHBhY2tldCBkYXRhDQorDQorCQkJCXRoaXMuaW5pdGlhbERlbHRhID0gdGhpcy5zdGFydGVkU2Vzc2lvblNjcmVlblRpbWVEYXRlLmdldFRpbWUoKQ0KKwkJCQkJCS0gdGhpcy5zdGFydGVkU2Vzc2lvblRpbWVEYXRlLmdldFRpbWUoKTsNCisNCisJCQkJLy8gVGhpcyBpcyBpbXBvcnRhbnQgZm9yIHRoZSBJbnRlcnZpZXcgUG9zdCBQcm9jZXNzaW5nIHRvIGdldA0KKwkJCQkvLyB0aGUgdGltZSBiZXR3ZWVuIHN0YXJ0aW5nIHRoZSBzdHJlYW0gYW5kIHRoZSBhY3R1YWwgQWNjZXNzIHRvDQorCQkJCS8vIHRoZQ0KKwkJCQkvLyB3ZWJjYW0gYnkgdGhlIEZsYXNoIFNlY3VyaXR5IERpYWxvZw0KKwkJCQlmbHZSZWNvcmRpbmdNZXRhRGF0YURhby51cGRhdGVGbHZSZWNvcmRpbmdNZXRhRGF0YUluaXRpYWxHYXAoDQorCQkJCQkJZmx2UmVjb3JkaW5nTWV0YURhdGFJZCwgdGhpcy5pbml0aWFsRGVsdGEpOw0KKw0KKwkJCX0NCisNCisJCQlpZiAoc3RyZWFtcGFja2V0LmdldFRpbWVzdGFtcCgpIDw9IDApIHsNCisJCQkJbG9nLndhcm4oIk5lZ2F0aXZlIFRpbWVTdGFtcCIpOw0KKwkJCQlyZXR1cm47DQorCQkJfQ0KKw0KKwkJCUlvQnVmZmVyIGRhdGEgPSBzdHJlYW1wYWNrZXQuZ2V0RGF0YSgpLmFzUmVhZE9ubHlCdWZmZXIoKTsNCisNCisJCQlpZiAoZGF0YS5saW1pdCgpID09IDApIHsNCisJCQkJcmV0dXJuOw0KKwkJCX0NCisNCisJCQlpZiAoc3RhcnRUaW1lU3RhbXAgPT0gLTEpIHsNCisJCQkJLy8gVGhhdCB3aWxsIGJlIG5vdCBiaWdnZXIgdGhlbiBsb25nIHZhbHVlDQorCQkJCXN0YXJ0VGltZVN0YW1wID0gc3RyZWFtcGFja2V0LmdldFRpbWVzdGFtcCgpOw0KKwkJCX0NCisNCisJCQl0aW1lU3RhbXAgLT0gc3RhcnRUaW1lU3RhbXA7DQorDQorCQkJSVRhZyB0YWcgPSBuZXcgVGFnKCk7DQorCQkJdGFnLnNldERhdGFUeXBlKHN0cmVhbXBhY2tldC5nZXREYXRhVHlwZSgpKTsNCisNCisJCQkvLyBsb2cuZGVidWcoImRhdGEubGltaXQoKSA6OiAiK2RhdGEubGltaXQoKSk7DQorCQkJdGFnLnNldEJvZHlTaXplKGRhdGEubGltaXQoKSk7DQorCQkJdGFnLnNldFRpbWVzdGFtcCh0aW1lU3RhbXApOw0KKwkJCXRhZy5zZXRCb2R5KGRhdGEpOw0KKw0KKy8vCQkJaWYgKHRoaXMuaXNJbnRlcnZpZXcpIHsNCisvLwkJCQlpZiAodGltZVN0YW1wIDw9IDUwMCkgew0KKy8vCQkJCQkvLyBXZSB3aWxsIGN1dCB0aGUgZmlyc3QgMC41IHNlY29uZHMNCisvLwkJCQkJLy8gVGhlIEZpcnN0IHNlY29uZHMgc2VlbSB0byBicmVhayB0aGUgUmVjb3JkaW5nIFZpZGVvIG9mdGVuDQorLy8JCQkJCXJldHVybjsNCisvLwkJCQl9DQorLy8JCQl9DQorCQkJDQorCQkJd3JpdGVyLndyaXRlVGFnKHRhZyk7DQorDQorCQl9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7DQorCQkJbG9nLmVycm9yKCJbcGFja2V0UmVjZWl2ZWRdIiwgZSk7DQorCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgew0KKwkJCWxvZy5lcnJvcigiW3BhY2tldFJlY2VpdmVkXSIsIGUpOw0KKwkJfQ0KKwl9DQorDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBjbG9zZVN0cmVhbSgpIHsNCisJCXRyeSB7DQorCQkJDQorCQkJd3JpdGVyLmNsb3NlKCk7DQorDQorCQkJLy8gQWRkIERlbHRhIGluIHRoZSBiZWdpbm5pbmcsIHRoaXMgRGVsdGEgaXMgdGhlIEdhcCBiZXR3ZWVuIHRoZQ0KKwkJCS8vIGRldmljZSBjaG9zZW4gYW5kIHdoZW4gdGhlIFVzZXIgaGl0cyB0aGUgYnV0dG9uIGluIHRoZSBGbGFzaA0KKwkJCS8vIFNlY3VyaXR5IFdhcm5pbmcNCisJCQlGbHZSZWNvcmRpbmdNZXRhRGF0YSBmbHZSZWNvcmRpbmdNZXRhRGF0YSA9IGZsdlJlY29yZGluZ01ldGFEYXRhRGFvDQorCQkJCQkuZ2V0Rmx2UmVjb3JkaW5nTWV0YURhdGFCeUlkKHRoaXMuZmx2UmVjb3JkaW5nTWV0YURhdGFJZCk7DQorDQorCQkJZmx2UmVjb3JkaW5nTWV0YURhdGEuc2V0UmVjb3JkU3RhcnQobmV3IERhdGUoDQorCQkJCQlmbHZSZWNvcmRpbmdNZXRhRGF0YS5nZXRSZWNvcmRTdGFydCgpLmdldFRpbWUoKQ0KKwkJCQkJCQkrIHRoaXMuaW5pdGlhbERlbHRhKSk7DQorCQkJDQorCQkJZmx2UmVjb3JkaW5nTWV0YURhdGEuc2V0U3RyZWFtUmVhZGVyVGhyZWFkQ29tcGxldGUodHJ1ZSk7DQorCQkJDQorCQkJZmx2UmVjb3JkaW5nTWV0YURhdGFEYW8NCisJCQkJCS51cGRhdGVGbHZSZWNvcmRpbmdNZXRhRGF0YShmbHZSZWNvcmRpbmdNZXRhRGF0YSk7DQorCQkJDQorCQkJDQorDQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7DQorCQkJbG9nLmVycm9yKCJbY2xvc2VTdHJlYW1dIiwgZXJyKTsNCisJCX0NCisJfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9sb2dzL0NvbmZlcmVuY2VMb2dEYW8uamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2xvZ3MvQ29uZmVyZW5jZUxvZ0Rhby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1YjI3NzEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS9sb2dzL0NvbmZlcmVuY2VMb2dEYW8uamF2YQpAQCAtMCwwICsxLDgwIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEubG9nczsKKworaW1wb3J0IGphdmEudXRpbC5EYXRlOworCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5TWFuYWdlcjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5QZXJzaXN0ZW5jZUNvbnRleHQ7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMubG9ncy5Db25mZXJlbmNlTG9nOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmxvZ3MuQ29uZmVyZW5jZUxvZ1R5cGU7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLnRyYW5zYWN0aW9uLmFubm90YXRpb24uVHJhbnNhY3Rpb25hbDsKKworQFRyYW5zYWN0aW9uYWwKK3B1YmxpYyBjbGFzcyBDb25mZXJlbmNlTG9nRGFvIHsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoQ29uZmVyZW5jZUxvZ0Rhby5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCUBQZXJzaXN0ZW5jZUNvbnRleHQKKwlwcml2YXRlIEVudGl0eU1hbmFnZXIgZW07CisJQEF1dG93aXJlZAorCXByaXZhdGUgQ29uZmVyZW5jZUxvZ1R5cGVEYW8gY29uZmVyZW5jZUxvZ1R5cGVEYW87CisKKwlwdWJsaWMgTG9uZyBhZGRDb25mZXJlbmNlTG9nKFN0cmluZyBldmVudFR5cGUsIExvbmcgdXNlcklkLCBTdHJpbmcgc3RyZWFtaWQsIAorCQkJTG9uZyByb29tX2lkLCBTdHJpbmcgdXNlcmlwLCBTdHJpbmcgc2NvcGVOYW1lLCAKKwkJCVN0cmluZyBleHRlcm5hbFVzZXJJZCwgU3RyaW5nIGV4dGVybmFsVXNlclR5cGUsIFN0cmluZyBlbWFpbCwKKwkJCVN0cmluZyBmaXJzdG5hbWUsIFN0cmluZyBsYXN0bmFtZSkgeworCQl0cnkgeworCQkJCisJCQlDb25mZXJlbmNlTG9nVHlwZSBjb25mTG9nVHlwZSA9IGNvbmZlcmVuY2VMb2dUeXBlRGFvLmdldENvbmZlcmVuY2VMb2dUeXBlQnlFdmVudE5hbWUoZXZlbnRUeXBlKTsKKwkJCWlmIChjb25mTG9nVHlwZSA9PSBudWxsKSB7CisJCQkJY29uZmVyZW5jZUxvZ1R5cGVEYW8uYWRkQ29uZmVyZW5jZUxvZ1R5cGUoZXZlbnRUeXBlKTsKKwkJCQljb25mTG9nVHlwZSA9IGNvbmZlcmVuY2VMb2dUeXBlRGFvLmdldENvbmZlcmVuY2VMb2dUeXBlQnlFdmVudE5hbWUoZXZlbnRUeXBlKTsKKwkJCX0KKwkJCQorCQkJQ29uZmVyZW5jZUxvZyBjb25mTG9nID0gbmV3IENvbmZlcmVuY2VMb2coKTsKKwkJCWNvbmZMb2cuc2V0Q29uZmVyZW5jZUxvZ1R5cGUoY29uZkxvZ1R5cGUpOworCQkJY29uZkxvZy5zZXRJbnNlcnRlZChuZXcgRGF0ZSgpKTsKKwkJCWNvbmZMb2cuc2V0VXNlcklkKHVzZXJJZCk7CisJCQljb25mTG9nLnNldFN0cmVhbWlkKHN0cmVhbWlkKTsKKwkJCWNvbmZMb2cuc2V0U2NvcGVOYW1lKHNjb3BlTmFtZSk7CisJCQljb25mTG9nLnNldFJvb21faWQocm9vbV9pZCk7CisJCQljb25mTG9nLnNldFVzZXJpcCh1c2VyaXApOworCQkJY29uZkxvZy5zZXRFeHRlcm5hbFVzZXJJZChleHRlcm5hbFVzZXJJZCk7CisJCQljb25mTG9nLnNldEV4dGVybmFsVXNlclR5cGUoZXh0ZXJuYWxVc2VyVHlwZSk7CisJCQljb25mTG9nLnNldEZpcnN0bmFtZShmaXJzdG5hbWUpOworCQkJY29uZkxvZy5zZXRMYXN0bmFtZShsYXN0bmFtZSk7CisJCQljb25mTG9nLnNldEVtYWlsKGVtYWlsKTsKKwkJCQorCQkJY29uZkxvZyA9IGVtLm1lcmdlKGNvbmZMb2cpOworCQkJTG9uZyBjb25mTG9nSWQgPSBjb25mTG9nLmdldENvbmZlcmVuY2VMb2dJZCgpOworCisJCQlyZXR1cm4gY29uZkxvZ0lkOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIlthZGRDb25mZXJlbmNlTG9nXTogIixleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKwkKKwkKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2xvZ3MvQ29uZmVyZW5jZUxvZ1R5cGVEYW8uamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL2xvZ3MvQ29uZmVyZW5jZUxvZ1R5cGVEYW8uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZWJkZTlkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvbG9ncy9Db25mZXJlbmNlTG9nVHlwZURhby5qYXZhCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5sb2dzOworCitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHlNYW5hZ2VyOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlBlcnNpc3RlbmNlQ29udGV4dDsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UeXBlZFF1ZXJ5OworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmxvZ3MuQ29uZmVyZW5jZUxvZ1R5cGU7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsudHJhbnNhY3Rpb24uYW5ub3RhdGlvbi5UcmFuc2FjdGlvbmFsOworCitAVHJhbnNhY3Rpb25hbAorcHVibGljIGNsYXNzIENvbmZlcmVuY2VMb2dUeXBlRGFvIHsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoQ29uZmVyZW5jZUxvZ1R5cGVEYW8uY2xhc3MsIE9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKwlAUGVyc2lzdGVuY2VDb250ZXh0CisJcHJpdmF0ZSBFbnRpdHlNYW5hZ2VyIGVtOworCisJcHVibGljIExvbmcgYWRkQ29uZmVyZW5jZUxvZ1R5cGUoU3RyaW5nIGV2ZW50VHlwZSkgeworCQl0cnkgeworCQkJQ29uZmVyZW5jZUxvZ1R5cGUgY29uZkxvZ1R5cGUgPSBuZXcgQ29uZmVyZW5jZUxvZ1R5cGUoKTsKKwkJCWNvbmZMb2dUeXBlLnNldEV2ZW50VHlwZShldmVudFR5cGUpOworCQkJY29uZkxvZ1R5cGUuc2V0SW5zZXJ0ZWQobmV3IERhdGUoKSk7CisJCQljb25mTG9nVHlwZSA9IGVtLm1lcmdlKGNvbmZMb2dUeXBlKTsKKwkJCXJldHVybiBjb25mTG9nVHlwZS5nZXRDb25mZXJlbmNlTG9nVHlwZUlkKCk7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2FkZENvbmZlcmVuY2VMb2dUeXBlXTogIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisJCisJcHVibGljIENvbmZlcmVuY2VMb2dUeXBlIGdldENvbmZlcmVuY2VMb2dUeXBlQnlFdmVudE5hbWUoU3RyaW5nIGV2ZW50VHlwZSkgeworCQl0cnkgeworCQkJVHlwZWRRdWVyeTxDb25mZXJlbmNlTG9nVHlwZT4gcXVlcnkgPSBlbS5jcmVhdGVOYW1lZFF1ZXJ5KCJnZXRDb25mZXJlbmNlTG9nVHlwZUJ5RXZlbnROYW1lIiwgQ29uZmVyZW5jZUxvZ1R5cGUuY2xhc3MpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJldmVudFR5cGUiLGV2ZW50VHlwZSk7CisJCQkKKwkJCS8vU2VlbXMgbGlrZSB0aGlzIGRvZXMgdGhyb3cgYW4gZXJyb3Igc29tZXRpbWVzIGNhdXNlIGl0IGRvZXMgbm90IHJldHVybiBhIHVuaXF1ZSBSZXN1bHQKKwkJCS8vQ29uZmVyZW5jZUxvZ1R5cGUgY29uZkxvZ1R5cGUgPSAoQ29uZmVyZW5jZUxvZ1R5cGUpIHF1ZXJ5LmdldFNpbmdsZVJlc3VsdCgpOworCQkJTGlzdDxDb25mZXJlbmNlTG9nVHlwZT4gY29uZkxvZ1R5cGVzID0gcXVlcnkuZ2V0UmVzdWx0TGlzdCgpOworCQkJaWYgKGNvbmZMb2dUeXBlcyAhPSBudWxsICYmIGNvbmZMb2dUeXBlcy5zaXplKCkgPiAwKSB7CisJCQkJcmV0dXJuIGNvbmZMb2dUeXBlcy5nZXQoMCk7CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldENvbmZlcmVuY2VMb2dUeXBlQnlFdmVudE5hbWVdOiAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKwkKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL3JlY29yZC9CYXRpa01ldGhvZHMuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL3JlY29yZC9CYXRpa01ldGhvZHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MGI1MWU3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvcmVjb3JkL0JhdGlrTWV0aG9kcy5qYXZhCkBAIC0wLDAgKzEsNTI1IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEucmVjb3JkOworCitpbXBvcnQgamF2YS5hd3QuQWxwaGFDb21wb3NpdGU7CitpbXBvcnQgamF2YS5hd3QuQmFzaWNTdHJva2U7CitpbXBvcnQgamF2YS5hd3QuQ29sb3I7CitpbXBvcnQgamF2YS5hd3QuRm9udDsKK2ltcG9ydCBqYXZhLmF3dC5HcmFwaGljczJEOworaW1wb3J0IGphdmEuYXd0Lmdlb20uRWxsaXBzZTJEOworaW1wb3J0IGphdmEuYXd0Lmdlb20uR2VuZXJhbFBhdGg7CitpbXBvcnQgamF2YS5hd3QuZ2VvbS5MaW5lMkQ7CitpbXBvcnQgamF2YS5hd3QuZ2VvbS5SZWN0YW5nbGUyRDsKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2ltcG9ydCBqYXZheC5zd2luZy5KVGV4dEFyZWE7CisKK2ltcG9ydCBvcmcuYXBhY2hlLmJhdGlrLmRvbS5zdmcuU1ZHRE9NSW1wbGVtZW50YXRpb247CitpbXBvcnQgb3JnLmFwYWNoZS5iYXRpay5zdmdnZW4uU1ZHR3JhcGhpY3MyRDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5kYW8uQ29uZmlndXJhdGlvbkRhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5nZW9tLkFycm93U3R5bGU7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMuZ2VvbS5HZW9tUG9pbnQ7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworCitwdWJsaWMgY2xhc3MgQmF0aWtNZXRob2RzIHsKKwkKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKEJhdGlrTWV0aG9kcy5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIENvbmZpZ3VyYXRpb25EYW8gY29uZmlndXJhdGlvbkRhbzsKKworCXB1YmxpYyB2b2lkIHBhaW50VGV4dEJ5V2lkdGhIZWlnaHQoU1ZHR3JhcGhpY3MyRCBnMmQsIGludCB4MSwgaW50IHkxLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsCisJCQlTdHJpbmcgdGV4dCwgaW50IHN0eWxlLCBpbnQgc2l6ZSwgQ29sb3IgZm9udENvbG9yKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworCQkvL1N0cmluZyBkZWZhdWx0X2V4cG9ydF9mb250ID0gQ29uZmlndXJhdGlvbm1hbmFnZW1lbnQuZ2V0SW5zdGFuY2UoKS5nZXRDb25mS2V5KDMsImRlZmF1bHRfZXhwb3J0X2ZvbnQiKS5nZXRDb25mX3ZhbHVlKCk7CisJCQorCQl0aGlzLmRyYXdUZXh0QnlKVGV4dEFyZWEoZzJkLCB4MSwgeTEsIHdpZHRoLCBoZWlnaHQsIHRleHQsICJWZXJkYW5hIiwgc3R5bGUsIHNpemUsIGZvbnRDb2xvcik7CisKKwl9CisJCisJcHVibGljIHZvaWQgX3BhaW50VGV4dEJ5V2lkdGhIZWlnaHQoU1ZHR3JhcGhpY3MyRCBnMmQsIGludCB4MSwgaW50IHkxLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsCisJCQlTdHJpbmcgdGV4dCwgaW50IHN0eWxlLCBpbnQgc2l6ZSwgQ29sb3IgZm9udENvbG9yKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworCQlTdHJpbmcgZGVmYXVsdF9leHBvcnRfZm9udCA9IGNvbmZpZ3VyYXRpb25EYW8uZ2V0Q29uZlZhbHVlKCJkZWZhdWx0X2V4cG9ydF9mb250IiwgU3RyaW5nLmNsYXNzLCAiIik7CisJCQorCQl0aGlzLmRyYXdUZXh0QnlTdHJpbmcoZzJkLCB4MSwgeTEsIHdpZHRoLCBoZWlnaHQsIHRleHQsIGRlZmF1bHRfZXhwb3J0X2ZvbnQsIHN0eWxlLCBzaXplLCBmb250Q29sb3IpOworCisJfQorCQorCUBTdXBwcmVzc1dhcm5pbmdzKCJyYXd0eXBlcyIpCisJcHVibGljIHZvaWQgZHJhd1BvaW50c09iamVjdChHcmFwaGljczJEIGcyZCwgTGlzdCBwb2ludHNMaXN0LCBDb2xvciBsaW5lQ29sb3IsIGludCBzaXplLCAKKwkJCWRvdWJsZSB4T2JqLCBkb3VibGUgeU9iaiwgZmxvYXQgYWxwaGEpIHRocm93cyBFeGNlcHRpb24geworCQkKKwkJZm9yIChJdGVyYXRvciBpdGVyID0gcG9pbnRzTGlzdC5pdGVyYXRvcigpO2l0ZXIuaGFzTmV4dCgpOykgeworCQkJTGlzdCBwb2ludCA9IChMaXN0KSBpdGVyLm5leHQoKTsKKwkJCQorLy8JCQlsb2cuZGVidWcoIlBPSU5UIEZST00gVE8gOiIgKworLy8JCQkJCURvdWJsZS52YWx1ZU9mKHBvaW50LmdldCgxKS50b1N0cmluZygpKS5kb3VibGVWYWx1ZSgpKyIsIisKKy8vCQkJCQlEb3VibGUudmFsdWVPZihwb2ludC5nZXQoMikudG9TdHJpbmcoKSkuZG91YmxlVmFsdWUoKSsiLCIrIAorLy8JCQkJCURvdWJsZS52YWx1ZU9mKHBvaW50LmdldCgzKS50b1N0cmluZygpKS5kb3VibGVWYWx1ZSgpKyIsIisKKy8vCQkJCQlEb3VibGUudmFsdWVPZihwb2ludC5nZXQoNCkudG9TdHJpbmcoKSkuZG91YmxlVmFsdWUoKSk7CisJCQkKKwkJCXRoaXMuZHJhd1RoaWNrTGluZTJEUGFpbnQoZzJkLCBEb3VibGUudmFsdWVPZihwb2ludC5nZXQoMSkudG9TdHJpbmcoKSkuZG91YmxlVmFsdWUoKSwgCisJCQkJCURvdWJsZS52YWx1ZU9mKHBvaW50LmdldCgyKS50b1N0cmluZygpKS5kb3VibGVWYWx1ZSgpLCAKKwkJCQkJRG91YmxlLnZhbHVlT2YocG9pbnQuZ2V0KDMpLnRvU3RyaW5nKCkpLmRvdWJsZVZhbHVlKCksIAorCQkJCQlEb3VibGUudmFsdWVPZihwb2ludC5nZXQoNCkudG9TdHJpbmcoKSkuZG91YmxlVmFsdWUoKSwgIAorCQkJCQlzaXplLCBsaW5lQ29sb3IsIHhPYmosIHlPYmosIGFscGhhKTsKKwkJfQorCQkKKwkJCisJfQorCQorCXB1YmxpYyB2b2lkIGRyYXdMaW5lKEdyYXBoaWNzMkQgZzJkLCBEb3VibGUgeDEsIERvdWJsZSB5MSwgRG91YmxlIHgyLCBEb3VibGUgeTIsIENvbG9yIGxpbmVDb2xvciwgaW50IHNpemUsIAorCQkJZG91YmxlIHhPYmosIGRvdWJsZSB5T2JqLCBmbG9hdCBhbHBoYSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCQorCQl0aGlzLmRyYXdUaGlja0xpbmUyRChnMmQsIHgxLCB5MSwgeDIsIHkyLCAgCisJCQkJc2l6ZSwgbGluZUNvbG9yLCB4T2JqLCB5T2JqLCBhbHBoYSk7CisJCQorCX0KKwkKKwlwdWJsaWMgdm9pZCBwYWludEVsbGlwc2UyRChHcmFwaGljczJEIGcyZCwgZG91YmxlIHgsIGRvdWJsZSB5LCBkb3VibGUgd2lkdGgsIGRvdWJsZSBoZWlnaHQsIAorCQkJQ29sb3IgbGluZWNvbGVyLCBpbnQgdGhpY2tuZXNzLCBDb2xvciBmaWxsQ29sb3IsIGZsb2F0IGFscGhhKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkJCisJCWcyZC5zZXRTdHJva2UobmV3IEJhc2ljU3Ryb2tlKHRoaWNrbmVzcywgQmFzaWNTdHJva2UuQ0FQX1JPVU5ELCBCYXNpY1N0cm9rZS5KT0lOX1JPVU5EKSk7CisJCQorCQlpbnRbXSBydWxlcyA9IG5ldyBpbnRbOF07IAorCQkKKwkJLy9hbGwgcG9zc2libGUgQ29tcG9zaXRpbmcgUnVsZXM6CisJCXJ1bGVzWzBdID0gQWxwaGFDb21wb3NpdGUuU1JDX09WRVI7CisJCXJ1bGVzWzFdID0gQWxwaGFDb21wb3NpdGUuRFNUX09WRVI7CisJCXJ1bGVzWzJdID0gQWxwaGFDb21wb3NpdGUuQ0xFQVI7CisJCXJ1bGVzWzNdID0gQWxwaGFDb21wb3NpdGUuU1JDOworCQlydWxlc1s0XSA9IEFscGhhQ29tcG9zaXRlLlNSQ19JTjsKKwkJcnVsZXNbNV0gPSBBbHBoYUNvbXBvc2l0ZS5EU1RfSU47CisJCXJ1bGVzWzZdID0gQWxwaGFDb21wb3NpdGUuU1JDX09VVDsKKwkJcnVsZXNbN10gPSBBbHBoYUNvbXBvc2l0ZS5EU1RfT1VUOworCQkKKwkJZzJkLnNldENvbXBvc2l0ZSggQWxwaGFDb21wb3NpdGUuZ2V0SW5zdGFuY2UoIEFscGhhQ29tcG9zaXRlLlNSQyxhbHBoYSkpOworCQkKKyAgICAgICAgLy9pbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodAorICAgICAgICAKKyAgICAgICAgaWYgKGxpbmVjb2xlciAhPSBudWxsKSB7CisJICAgICAgICBnMmQuc2V0UGFpbnQobGluZWNvbGVyKTsKKwkgICAgICAgIGcyZC5kcmF3KG5ldyBFbGxpcHNlMkQuRG91YmxlKHgseSx3aWR0aCxoZWlnaHQpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGZpbGxDb2xvciAhPSBudWxsKSB7CisgICAgICAgIAlnMmQuc2V0UGFpbnQoZmlsbENvbG9yKTsKKyAgICAgICAgICAgIGcyZC5maWxsKG5ldyBFbGxpcHNlMkQuRG91YmxlKHgseSx3aWR0aCxoZWlnaHQpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICB9CisJCisJcHVibGljIHZvaWQgcGFpbnRSZWN0MkQoR3JhcGhpY3MyRCBnMmQsIGRvdWJsZSB4LCBkb3VibGUgeSwgZG91YmxlIHdpZHRoLCBkb3VibGUgaGVpZ2h0LCAKKwkJCUNvbG9yIGxpbmVjb2xlciwgaW50IHRoaWNrbmVzcywgQ29sb3IgZmlsbENvbG9yLCBmbG9hdCBhbHBoYSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCQorCQlnMmQuc2V0U3Ryb2tlKG5ldyBCYXNpY1N0cm9rZSh0aGlja25lc3MsIEJhc2ljU3Ryb2tlLkNBUF9ST1VORCwgQmFzaWNTdHJva2UuSk9JTl9ST1VORCkpOworCQkKKwkJaW50W10gcnVsZXMgPSBuZXcgaW50WzhdOyAKKwkJCisJCS8vYWxsIHBvc3NpYmxlIENvbXBvc2l0aW5nIFJ1bGVzOgorCQlydWxlc1swXSA9IEFscGhhQ29tcG9zaXRlLlNSQ19PVkVSOworCQlydWxlc1sxXSA9IEFscGhhQ29tcG9zaXRlLkRTVF9PVkVSOworCQlydWxlc1syXSA9IEFscGhhQ29tcG9zaXRlLkNMRUFSOworCQlydWxlc1szXSA9IEFscGhhQ29tcG9zaXRlLlNSQzsKKwkJcnVsZXNbNF0gPSBBbHBoYUNvbXBvc2l0ZS5TUkNfSU47CisJCXJ1bGVzWzVdID0gQWxwaGFDb21wb3NpdGUuRFNUX0lOOworCQlydWxlc1s2XSA9IEFscGhhQ29tcG9zaXRlLlNSQ19PVVQ7CisJCXJ1bGVzWzddID0gQWxwaGFDb21wb3NpdGUuRFNUX09VVDsKKwkJCisJCWcyZC5zZXRDb21wb3NpdGUoIEFscGhhQ29tcG9zaXRlLmdldEluc3RhbmNlKCBBbHBoYUNvbXBvc2l0ZS5TUkMsYWxwaGEpKTsKKwkJCisgICAgICAgIC8vaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQKKyAgICAgICAgCisgICAgICAgIGlmIChsaW5lY29sZXIgIT0gbnVsbCkgeworCSAgICAgICAgZzJkLnNldFBhaW50KGxpbmVjb2xlcik7CisJICAgICAgICBnMmQuZHJhdyhuZXcgUmVjdGFuZ2xlMkQuRG91YmxlKHgseSx3aWR0aCxoZWlnaHQpKTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGZpbGxDb2xvciAhPSBudWxsKSB7CisgICAgICAgIAlnMmQuc2V0UGFpbnQoZmlsbENvbG9yKTsKKyAgICAgICAgICAgIGcyZC5maWxsKG5ldyBSZWN0YW5nbGUyRC5Eb3VibGUoeCx5LHdpZHRoLGhlaWdodCkpOworICAgICAgICB9CisgICAgICAgIAorICAgIH0KKwkKKwlwdWJsaWMgdm9pZCBwYWludFJlY3QoR3JhcGhpY3MyRCBnMmQsIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCAKKwkJCUNvbG9yIGxpbmVjb2xlciwgaW50IHRoaWNrbmVzcywgQ29sb3IgZmlsbENvbG9yKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkJCisJCS8vaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQKKyAgICAgICAgLy9nMmQuZmlsbChuZXcgUmVjdGFuZ2xlKHgseSx3aWR0aCxoZWlnaHQpKTsKKyAgICAgICAgCisgICAgICAgIGcyZC5zZXRTdHJva2UobmV3IEJhc2ljU3Ryb2tlKHRoaWNrbmVzcykpOworICAgICAgICAKKyAgICAgICAgaWYgKGxpbmVjb2xlciAhPSBudWxsKSB7CisJICAgICAgICBnMmQuc2V0UGFpbnQobGluZWNvbGVyKTsKKwkgICAgICAgIGcyZC5kcmF3UmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICAgICAgaWYgKGZpbGxDb2xvciAhPSBudWxsKSB7CisgICAgICAgIAlnMmQuc2V0UGFpbnQoZmlsbENvbG9yKTsKKwkgICAgICAgIGcyZC5maWxsUmVjdCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKyAgICAgICAgfQorICAgICAgICAKKyAgICB9CisJCisJcHVibGljIHZvaWQgcGFpbnRMaW5lKEdyYXBoaWNzMkQgZzJkLCBpbnQgeDEsIGludCB5MSwgaW50IHgyLCBpbnQgeTIsIENvbG9yIGNvbCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCWcyZC5zZXRQYWludChjb2wpOworCQlnMmQuZHJhd0xpbmUoeDEsIHkxLCB4MiwgeTIpOworCX0KKwkKKwlwdWJsaWMgdm9pZCBkcmF3VGhpY2tMaW5lMkRQYWludChHcmFwaGljczJEIGcyZCwgZG91YmxlIHgxLCBkb3VibGUgeTEsIGRvdWJsZSB4MiwgZG91YmxlIHkyLCAKKwkJCWludCB3aWR0aCwgQ29sb3IgYywgZG91YmxlIHhPYmosIGRvdWJsZSB5T2JqLCBmbG9hdCBhbHBoYSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCWcyZC5zZXRQYWludChjKTsKKwkJCisJCWludFtdIHJ1bGVzID0gbmV3IGludFs4XTsgCisJCQorCQkvL2FsbCBwb3NzaWJsZSBDb21wb3NpdGluZyBSdWxlczoKKwkJcnVsZXNbMF0gPSBBbHBoYUNvbXBvc2l0ZS5TUkNfT1ZFUjsKKwkJcnVsZXNbMV0gPSBBbHBoYUNvbXBvc2l0ZS5EU1RfT1ZFUjsKKwkJcnVsZXNbMl0gPSBBbHBoYUNvbXBvc2l0ZS5DTEVBUjsKKwkJcnVsZXNbM10gPSBBbHBoYUNvbXBvc2l0ZS5TUkM7CisJCXJ1bGVzWzRdID0gQWxwaGFDb21wb3NpdGUuU1JDX0lOOworCQlydWxlc1s1XSA9IEFscGhhQ29tcG9zaXRlLkRTVF9JTjsKKwkJcnVsZXNbNl0gPSBBbHBoYUNvbXBvc2l0ZS5TUkNfT1VUOworCQlydWxlc1s3XSA9IEFscGhhQ29tcG9zaXRlLkRTVF9PVVQ7CisJCQorCQlnMmQuc2V0Q29tcG9zaXRlKCBBbHBoYUNvbXBvc2l0ZS5nZXRJbnN0YW5jZSggQWxwaGFDb21wb3NpdGUuU1JDLGFscGhhKSk7CisJCWcyZC5zZXRTdHJva2UobmV3IEJhc2ljU3Ryb2tlKHdpZHRoLCBCYXNpY1N0cm9rZS5DQVBfUk9VTkQsIEJhc2ljU3Ryb2tlLkpPSU5fQkVWRUwpKTsKKwkJTGluZTJEIGxpbmUgPSBuZXcgTGluZTJELkRvdWJsZSh4MSwgeTEsIHgyLCB5Mik7CisJICAgIGcyZC5kcmF3KGxpbmUpOworCX0KKworCQorCXB1YmxpYyB2b2lkIGRyYXdUaGlja0xpbmUyRChHcmFwaGljczJEIGcyZCwgZG91YmxlIHgxLCBkb3VibGUgeTEsIGRvdWJsZSB4MiwgZG91YmxlIHkyLCAKKwkJCWludCB3aWR0aCwgQ29sb3IgYywgZG91YmxlIHhPYmosIGRvdWJsZSB5T2JqLCBmbG9hdCBhbHBoYSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCWcyZC5zZXRQYWludChjKTsKKwkJCisJCWludFtdIHJ1bGVzID0gbmV3IGludFs4XTsgCisJCQorCQkvL2FsbCBwb3NzaWJsZSBDb21wb3NpdGluZyBSdWxlczoKKwkJcnVsZXNbMF0gPSBBbHBoYUNvbXBvc2l0ZS5TUkNfT1ZFUjsKKwkJcnVsZXNbMV0gPSBBbHBoYUNvbXBvc2l0ZS5EU1RfT1ZFUjsKKwkJcnVsZXNbMl0gPSBBbHBoYUNvbXBvc2l0ZS5DTEVBUjsKKwkJcnVsZXNbM10gPSBBbHBoYUNvbXBvc2l0ZS5TUkM7CisJCXJ1bGVzWzRdID0gQWxwaGFDb21wb3NpdGUuU1JDX0lOOworCQlydWxlc1s1XSA9IEFscGhhQ29tcG9zaXRlLkRTVF9JTjsKKwkJcnVsZXNbNl0gPSBBbHBoYUNvbXBvc2l0ZS5TUkNfT1VUOworCQlydWxlc1s3XSA9IEFscGhhQ29tcG9zaXRlLkRTVF9PVVQ7CisJCQorCQlnMmQuc2V0Q29tcG9zaXRlKCBBbHBoYUNvbXBvc2l0ZS5nZXRJbnN0YW5jZSggQWxwaGFDb21wb3NpdGUuU1JDLGFscGhhKSk7CisJCWcyZC5zZXRTdHJva2UobmV3IEJhc2ljU3Ryb2tlKHdpZHRoLCBCYXNpY1N0cm9rZS5DQVBfUk9VTkQsIEJhc2ljU3Ryb2tlLkpPSU5fQkVWRUwpKTsKKwkJTGluZTJEIGxpbmUgPSBuZXcgTGluZTJELkRvdWJsZSh4MSt4T2JqLCB5MSt5T2JqLCB4Mit4T2JqLCB5Mit5T2JqKTsKKwkgICAgZzJkLmRyYXcobGluZSk7CisJfQorCisJcHVibGljIHZvaWQgZHJhd1RoaWNrTGluZShHcmFwaGljczJEIGcyZCwgaW50IHgxLCBpbnQgeTEsIGludCB4MiwgaW50IHkyLCBpbnQgd2lkdGgsIENvbG9yIGMpIHRocm93cyBFeGNlcHRpb24geworCQlnMmQuc2V0UGFpbnQoYyk7CisJCWcyZC5zZXRTdHJva2UobmV3IEJhc2ljU3Ryb2tlKHdpZHRoLCBCYXNpY1N0cm9rZS5DQVBfUk9VTkQsIEJhc2ljU3Ryb2tlLkpPSU5fQkVWRUwpKTsKKwkgICAgZzJkLmRyYXdMaW5lKHgxLCB5MSwgeDIsIHkyKTsKKwl9CQorCQorCXB1YmxpYyB2b2lkIHBhaW50VGV4dEJ5V2lkdGhIZWlnaHRBbmREb2N1bWVudChTVkdHcmFwaGljczJEIGcyZCwgaW50IHgxLCBpbnQgeTEsIGludCB3aWR0aCwgaW50IGhlaWdodCwKKwkJCVN0cmluZyB0ZXh0LCBpbnQgc3R5bGUsIGludCBzaXplLCBDb2xvciBmb250Q29sb3IsIERvY3VtZW50IGRvY3VtZW50KSB0aHJvd3MgRXhjZXB0aW9uIHsKKworCQkvLyBTdHJpbmcgZGVmYXVsdF9leHBvcnRfZm9udCA9CisJCS8vIENvbmZpZ3VyYXRpb25tYW5hZ2VtZW50LmdldEluc3RhbmNlKCkuZ2V0Q29uZktleSgiZGVmYXVsdF9leHBvcnRfZm9udCIpLmdldENvbmZfdmFsdWUoKTsKKwkJCisJCXRoaXMuZHJhd1RleHQoZzJkLCB4MSwgeTEsIHdpZHRoLCBoZWlnaHQsIHRleHQsICJWZXJkYW5hIiwgc3R5bGUsIHNpemUsIGZvbnRDb2xvciwgZG9jdW1lbnQpOworCisJfQorCisJcHVibGljIHZvaWQgZHJhd1RleHQoU1ZHR3JhcGhpY3MyRCBnMmQsIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCAKKwkJCVN0cmluZyB0ZXh0LCBTdHJpbmcgZGVmYXVsdF9leHBvcnRfZm9udCwgaW50IHN0eWxlLCBpbnQgc2l6ZSwgQ29sb3IgZm9udENvbG9yLAorCQkJRG9jdW1lbnQgZG9jdW1lbnQpIHRocm93cyBFeGNlcHRpb24geworCQkKKy8vCQlnMmQuc2V0Q2xpcCh4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKKy8vCQlnMmQuc2V0Q29sb3IoQ29sb3IuYmxhY2spOworLy8JCWcyZC5kcmF3U3RyaW5nKHRleHQsIHgsIHkrMjApOworCQkKKwkJU3RyaW5nIHN2Z05TID0gU1ZHRE9NSW1wbGVtZW50YXRpb24uU1ZHX05BTUVTUEFDRV9VUkk7CisKKwkJLy8gR2V0IHRoZSByb290IGVsZW1lbnQgKHRoZSAnc3ZnJyBlbGVtZW50KS4KKwkJRWxlbWVudCBzdmdSb290ID0gZG9jdW1lbnQuZ2V0RG9jdW1lbnRFbGVtZW50KCk7CisKKwkJbG9nLmRlYnVnKCJzdmdOUyBERUJVRzogIitzdmdOUyk7CisJCQorCQkvL0VsZW1lbnQgdGV4dEVsZW1lbnQgPSBnMmQuZ2V0RE9NRmFjdG9yeSgpLmNyZWF0ZUVsZW1lbnROUyhzdmdOUywidGV4dCIpOworCQlFbGVtZW50IHJlY3RhbmdsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnROUyhzdmdOUywgInJlY3QiKTsKKwkJcmVjdGFuZ2xlLnNldEF0dHJpYnV0ZU5TKHN2Z05TLCAieCIsICIxMCIpOworCQlyZWN0YW5nbGUuc2V0QXR0cmlidXRlTlMoc3ZnTlMsICJ5IiwgIjIwIik7CisJCXJlY3RhbmdsZS5zZXRBdHRyaWJ1dGVOUyhzdmdOUywgIndpZHRoIiwgIjEwMCIpOworCQlyZWN0YW5nbGUuc2V0QXR0cmlidXRlTlMoc3ZnTlMsICJoZWlnaHQiLCAiNTAiKTsKKwkJcmVjdGFuZ2xlLnNldEF0dHJpYnV0ZU5TKHN2Z05TLCAiZmlsbCIsICJyZWQiKTsKKworCQkvLyBBdHRhY2ggdGhlIHJlY3RhbmdsZSB0byB0aGUgcm9vdCAnc3ZnJyBlbGVtZW50LgorCQlzdmdSb290LmFwcGVuZENoaWxkKHJlY3RhbmdsZSk7CisKKworCX0KKwkKKwlwdWJsaWMgdm9pZCBkcmF3VGV4dEJ5U3RyaW5nKFNWR0dyYXBoaWNzMkQgZzJkLCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgCisJCQlTdHJpbmcgdGV4dCwgU3RyaW5nIGRlZmF1bHRfZXhwb3J0X2ZvbnQsIGludCBzdHlsZSwgaW50IHNpemUsIENvbG9yIGZvbnRDb2xvcikgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCQorCQkvL2cyZC5zZXRDbGlwKHgsIHksIHdpZHRoLCBoZWlnaHQpOworCQlnMmQuc2V0Q29sb3IoQ29sb3IuYmxhY2spOworCQlnMmQuZHJhd1N0cmluZyh0ZXh0LCB4LCB5KTsKKwkJCisJCQorCX0KKworCXB1YmxpYyB2b2lkIGRyYXdUZXh0QnlKVGV4dEFyZWEoR3JhcGhpY3MyRCBnMmQsIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCAKKwkJCVN0cmluZyB0ZXh0LCBTdHJpbmcgZGVmYXVsdF9leHBvcnRfZm9udCwgaW50IHN0eWxlLCBpbnQgc2l6ZSwgQ29sb3IgZm9udENvbG9yKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkJCisvLwkJZzJkLnNldENsaXAoeCwgeSwgd2lkdGgsIGhlaWdodCk7CisvLwkJZzJkLnNldENvbG9yKENvbG9yLmJsYWNrKTsKKy8vCQlnMmQuZHJhd1N0cmluZyh0ZXh0LCB4LCB5KzIwKTsKKwkJCisJCS8vRm9udCBmb250ID0gbmV3IEZvbnQoIlZlcmRhbmEiLCBGb250LlBMQUlOLCAxMSk7CisJCUZvbnQgZm9udCA9IG5ldyBGb250KGRlZmF1bHRfZXhwb3J0X2ZvbnQsIHN0eWxlLCBzaXplKTsKKworCQlTdHJpbmdbXSBzdHJpbmdzVGV4dCA9IHRleHQuc3BsaXQoIlxyIik7CisJCS8vbG9nLmRlYnVnKCJURVhUOiAiK3N0cmluZ3NUZXh0KTsKKwkJLy9sb2cuZGVidWcoIlRFWFQ6ICIrc3RyaW5nc1RleHQubGVuZ3RoKTsKKwkJCisJCVN0cmluZyBuZXdUZXh0ID0gIiI7CisJCQorCQlmb3IgKGludCBpPTA7aTxzdHJpbmdzVGV4dC5sZW5ndGg7aSsrKSB7CisJCQluZXdUZXh0ICs9IHN0cmluZ3NUZXh0W2ldOworCQkJaWYgKGkrMTxzdHJpbmdzVGV4dC5sZW5ndGgpIHsKKwkJCQluZXdUZXh0ICs9ICJcbiI7CisJCQl9CisJCX0KKwkJCisJCUpUZXh0QXJlYSBuID0gbmV3IEpUZXh0QXJlYSggbmV3VGV4dCApOworCQluLnNldEZvbnQoZm9udCk7CisJCW4uc2V0V3JhcFN0eWxlV29yZCggdHJ1ZSApOworCQluLnNldExpbmVXcmFwKCB0cnVlICk7CisJCW4uc2V0Rm9yZWdyb3VuZCggZm9udENvbG9yICk7CisJCQorCQkvL2xvZy5kZWJ1ZygiVGV4dCBhdDogIit4KyIgIit5KTsKKwkJCS8vaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQKKwkJbi5zZXRCb3VuZHMoIHgsIHkgLCB3aWR0aCwgaGVpZ2h0ICk7CisJCW4uc2V0T3BhcXVlKCBmYWxzZSApOworCQkKKwkJLy9UZXh0CisJCVNWR0dyYXBoaWNzMkQgc3ZnR2VuZXJhdG9yMiA9IChTVkdHcmFwaGljczJEKSBnMmQuY3JlYXRlKHgsIHksIHdpZHRoLCBoZWlnaHQpOworCisJCS8vc3ZnR2VuZXJhdG9yMi5jcmVhdGUoeCwgeSwgd2lkdGgsIGhlaWdodCk7CisJCS8vc3ZnR2VuZXJhdG9yMi5kcmF3KC5kcmEpCisJCW4ucGFpbnQoIHN2Z0dlbmVyYXRvcjIgKTsKKwkJCisJfQorCQorCisJcHVibGljIHZvaWQgZHJhd0Fycm93KFNWR0dyYXBoaWNzMkQgZzJkLAorCQkJR2VvbVBvaW50IHN0YXJ0LCBHZW9tUG9pbnQgZW5kLCBmbG9hdCB0aGlja25lc3MsIGZsb2F0IGFscGhhLAorCQkJQ29sb3IgbGluZWNvbGVyLCBDb2xvciBmaWxsQ29sb3IpIHsKKwkJCisJCWlmIChzdGFydC5lcXVhbHMoZW5kKSkgcmV0dXJuOworCQkKKwkJCisvLwkJKGRvdWJsZSBlZGdlQ29udHJvbFBvc2l0aW9uLCBkb3VibGUgZWRnZUNvbnRyb2xTaXplLAorLy8JCQkJZG91YmxlIGhlYWRMZW5ndGgsIGRvdWJsZSBoZWFkV2lkdGgsIGRvdWJsZSBzaGFmdENvbnRyb2xQb3NpdGlvbiwKKy8vCQkJCWRvdWJsZSBzaGFmdENvbnRyb2xTaXplLCBmbG9hdCBzaGFmdFBvc2l0aW9uLCBkb3VibGUgc2hhZnRUaGlja25lc3MpCisJCUFycm93U3R5bGUgYXJyb3dTdHlsZSA9IG5ldyBBcnJvd1N0eWxlKDAuNSwgMC41LCB0aGlja25lc3MqNSwgCisJCQkJdGhpY2tuZXNzKjUsIDAuNSwgMC41LCAwLCB0aGlja25lc3MpOworCQkKKwkJR2VvbVBvaW50IGZ1bGxWZWN0ID0gZW5kLnN1YnRyYWN0KHN0YXJ0KTsKKwkJZG91YmxlIGhhbGZXaWR0aCA9IChhcnJvd1N0eWxlLmhlYWRXaWR0aCAhPSAtMSkgPyBhcnJvd1N0eWxlLmhlYWRXaWR0aC8yIDogYXJyb3dTdHlsZS5oZWFkTGVuZ3RoLzI7IAorCQkKKwkJLy9GaWd1cmUgb3V0IHRoZSBsaW5lIHN0YXJ0L2VuZCBwb2ludHMKKwkJR2VvbVBvaW50IHN0YXJ0Tm9ybSA9IG5ldyBHZW9tUG9pbnQoKTsKKwkJc3RhcnROb3JtLnNldExvY2F0aW9uKGZ1bGxWZWN0LmdldFkoKSwtZnVsbFZlY3QuZ2V0WCgpKTsKKwkJc3RhcnROb3JtLm5vcm1hbGl6ZShhcnJvd1N0eWxlLnNoYWZ0VGhpY2tuZXNzLzIpOworCQlHZW9tUG9pbnQgc3RhcnQxID0gc3RhcnQuYWRkKHN0YXJ0Tm9ybSk7CisJCUdlb21Qb2ludCBzdGFydDIgPSBzdGFydC5zdWJ0cmFjdChzdGFydE5vcm0pOworCQlHZW9tUG9pbnQgZW5kMSA9IGVuZC5hZGQoc3RhcnROb3JtKTsKKwkJR2VvbVBvaW50IGVuZDIgPSBlbmQuc3VidHJhY3Qoc3RhcnROb3JtKTsKKwkJCQkKKwkJLy9sb2cuZGVidWcoInN0YXJ0Tm9ybTogIitzdGFydE5vcm0udG9TdHJpbmcoKSk7CisgICAgICAgIC8vbG9nLmRlYnVnKCJzdGFydDE6ICIrc3RhcnQxLnRvU3RyaW5nKCkpOworICAgICAgICAvL2xvZy5kZWJ1Zygic3RhcnQyOiAiK3N0YXJ0Mi50b1N0cmluZygpKTsKKyAgICAgICAgLy9sb2cuZGVidWcoImVuZDE6ICIrZW5kMS50b1N0cmluZygpKTsKKyAgICAgICAgLy9sb2cuZGVidWcoImVuZDI6ICIrZW5kMi50b1N0cmluZygpKTsKKwkJCisJCS8vZmlndXJlIG91dCB3aGVyZSB0aGUgYXJyb3cgaGVhZCBzdGFydHMKKwkJR2VvbVBvaW50IGhlYWRQbnQgPSBmdWxsVmVjdC5jbG9uZSgpOworCQkvL2xvZy5kZWJ1ZygiaGVhZFBudCAxOiAiK2hlYWRQbnQudG9TdHJpbmcoKSk7CisJCS8vbG9nLmRlYnVnKCJoZWFkUG50Lmxlbmd0aCAxOiAiK2hlYWRQbnQubGVuZ3RoKCkpOworCQkvL2xvZy5kZWJ1ZygiYXJyb3dTdHlsZS5oZWFkTGVuZ3RoIDE6ICIrYXJyb3dTdHlsZS5oZWFkTGVuZ3RoKTsKKwkJaGVhZFBudC5ub3JtYWxpemUoaGVhZFBudC5sZW5ndGgoKS1hcnJvd1N0eWxlLmhlYWRMZW5ndGgpOworCQkvL2xvZy5kZWJ1ZygiaGVhZFBudCAyOiAiK2hlYWRQbnQudG9TdHJpbmcoKSk7CisJCWhlYWRQbnQgPSBoZWFkUG50LmFkZChzdGFydCk7CisJCS8vbG9nLmRlYnVnKCJoZWFkUG50IDM6ICIraGVhZFBudC50b1N0cmluZygpKTsKKwkJCisJCS8vY2FsY3VsYXRlIHRoZSBhcnJvd2hlYWQgY29ybmVycworCQlHZW9tUG9pbnQgaGVhZFBudE5vcm0gPSBzdGFydE5vcm0uY2xvbmUoKTsKKwkJLy9sb2cuZGVidWcoImhlYWRQbnROb3JtIF5eOiAiK2hlYWRQbnROb3JtLnRvU3RyaW5nKCkpOworCQkvL2xvZy5kZWJ1ZygiaGFsZldpZHRoIF5eOiAiK2hhbGZXaWR0aCk7CisJCWhlYWRQbnROb3JtLm5vcm1hbGl6ZShoYWxmV2lkdGgpOworCQkvL2xvZy5kZWJ1ZygiaGVhZFBudE5vcm06ICIraGVhZFBudE5vcm0udG9TdHJpbmcoKSk7CisJCUdlb21Qb2ludCBlZGdlMSA9IGhlYWRQbnQuYWRkKGhlYWRQbnROb3JtKTsKKwkJR2VvbVBvaW50IGVkZ2UyID0gaGVhZFBudC5zdWJ0cmFjdChoZWFkUG50Tm9ybSk7CisJCQorCQkvL2xvZy5kZWJ1ZygiZWRnZTE6ICIrZWRnZTEudG9TdHJpbmcoKSk7CisgICAgICAgIC8vbG9nLmRlYnVnKCJlZGdlMjogIitlZGdlMi50b1N0cmluZygpKTsKKwkJCisJCS8vRmlndXJlIG91dCB3aGVyZSB0aGUgYXJyb3cgY29ubmVjdHMgdGhlIHRoZSBzaGFmdCwgdGhlbiBjYWxjIHRoZSBpbnRlcnNlY3Rpb25zCisJCUdlb21Qb2ludCBzaGFmdENlbnRlciA9IEdlb21Qb2ludC5pbnRlcnBvbGF0ZShlbmQsaGVhZFBudCxhcnJvd1N0eWxlLnNoYWZ0UG9zaXRpb24pOworCQkvL2xvZy5kZWJ1ZygiZW5kIitlbmQudG9TdHJpbmcoKSk7CisJCS8vbG9nLmRlYnVnKCJoZWFkUG50OiAiK2hlYWRQbnQudG9TdHJpbmcoKSk7CisJCS8vbG9nLmRlYnVnKCJhcnJvd1N0eWxlLnNoYWZ0UG9zaXRpb246ICIrYXJyb3dTdHlsZS5zaGFmdFBvc2l0aW9uKTsKKwkJLy9sb2cuZGVidWcoInNoYWZ0Q2VudGVyOiAiK3NoYWZ0Q2VudGVyKTsKKwkJLy9sb2cuZGVidWcoImVkZ2UxOiAiK2VkZ2UxKTsKKwkJLy9zaGFmdENlbnRlci5zZXRMb2NhdGlvbigxODUuODU3ODY0Mzc2MjY5LCAxODUuODU3ODY0Mzc2MjY5KTsKKwkJR2VvbVBvaW50IGludGVyMSA9IEdlb21Qb2ludC5nZXRMaW5lSW50ZXJzZWN0aW9uKHN0YXJ0MSxlbmQxLHNoYWZ0Q2VudGVyLGVkZ2UxKTsKKwkJR2VvbVBvaW50IGludGVyMiA9IEdlb21Qb2ludC5nZXRMaW5lSW50ZXJzZWN0aW9uKHN0YXJ0MixlbmQyLHNoYWZ0Q2VudGVyLGVkZ2UyKTsKKwkJCisJCS8vbG9nLmRlYnVnKCJpbnRlcjE6ICIraW50ZXIxLnRvU3RyaW5nKCkpOworICAgICAgICAvL2xvZy5kZWJ1ZygiaW50ZXIyOiAiK2ludGVyMi50b1N0cmluZygpKTsKKwkJCisJCS8vRmlndXJlIG91dCB0aGUgY29udHJvbCBwb2ludHMKKwkJR2VvbVBvaW50IGVkZ2VDZW50ZXIgPSBHZW9tUG9pbnQuaW50ZXJwb2xhdGUoZW5kLGhlYWRQbnQsKGZsb2F0KSBhcnJvd1N0eWxlLmVkZ2VDb250cm9sUG9zaXRpb24pOworCQlHZW9tUG9pbnQgZWRnZU5vcm0gPSBzdGFydE5vcm0uY2xvbmUoKTsKKwkJZWRnZU5vcm0ubm9ybWFsaXplKGhhbGZXaWR0aCphcnJvd1N0eWxlLmVkZ2VDb250cm9sU2l6ZSk7CisJCS8vbG9nLmRlYnVnKCJoYWxmV2lkdGgqYXJyb3dTdHlsZS5lZGdlQ29udHJvbFNpemU6ICIrKGhhbGZXaWR0aCphcnJvd1N0eWxlLmVkZ2VDb250cm9sU2l6ZSkpOworCQkvL2xvZy5kZWJ1ZygiZWRnZU5vcm06ICIrZWRnZU5vcm0udG9TdHJpbmcoKSk7CisJCUdlb21Qb2ludCBlZGdlQ250cmwxID0gZWRnZUNlbnRlci5hZGQoZWRnZU5vcm0pOworCQlHZW9tUG9pbnQgZWRnZUNudHJsMiA9IGVkZ2VDZW50ZXIuc3VidHJhY3QoZWRnZU5vcm0pOworCQkKKwkJLy9sb2cuZGVidWcoImVkZ2VDbnRybDE6ICIrZWRnZUNudHJsMS50b1N0cmluZygpKTsKKyAgICAgICAgLy9sb2cuZGVidWcoImVkZ2VDbnRybDI6ICIrZWRnZUNudHJsMi50b1N0cmluZygpKTsKKworCQlnMmQuc2V0UGFpbnQobmV3IENvbG9yKDI1NSwwLDApKTsKKwkJCisvLwkJZ3JhcGhpY3MubW92ZVRvKHN0YXJ0MS54LHN0YXJ0MS55KTsKKy8vCQlncmFwaGljcy5saW5lVG8oaW50ZXIxLngsaW50ZXIxLnkpOworLy8JCWdyYXBoaWNzLmxpbmVUbyhlZGdlMS54LGVkZ2UxLnkpOworLy8JCWdyYXBoaWNzLmN1cnZlVG8oZWRnZUNudHJsMS54LGVkZ2VDbnRybDEueSxlbmQueCxlbmQueSk7CisvLwkJZ3JhcGhpY3MuY3VydmVUbyhlZGdlQ250cmwyLngsZWRnZUNudHJsMi55LGVkZ2UyLngsZWRnZTIueSk7CisvLwkJZ3JhcGhpY3MubGluZVRvKGludGVyMi54LGludGVyMi55KTsKKy8vCQlncmFwaGljcy5saW5lVG8oc3RhcnQyLngsc3RhcnQyLnkpOworLy8JCWdyYXBoaWNzLmxpbmVUbyhzdGFydDEueCxzdGFydDEueSk7CisJCQorLy8JCWxvZy5kZWJ1ZygibW92ZVRvIitzdGFydDEueCsiLCIrc3RhcnQxLnkpOworLy8JCWxvZy5kZWJ1ZygibGluZVRvIitpbnRlcjEueCsiLCIraW50ZXIxLnkpOworLy8JCWxvZy5kZWJ1ZygibGluZVRvIitlZGdlMS54KyIsIitlZGdlMS55KTsKKy8vCQlsb2cuZGVidWcoInF1YWRUbyIrZWRnZUNudHJsMS54KyIsIitlZGdlQ250cmwxLnkrIiwiK2VuZC54KyIsIitlbmQueSk7CisvLwkJbG9nLmRlYnVnKCJxdWFkVG8iK2VkZ2VDbnRybDIueCsiLCIrZWRnZUNudHJsMi55KyIsIitlZGdlMi54KyIsIitlZGdlMi55KTsKKy8vCQlsb2cuZGVidWcoImxpbmVUbyIraW50ZXIyLngrIiwiK2ludGVyMi55KTsKKy8vCQlsb2cuZGVidWcoImxpbmVUbyIrc3RhcnQyLngrIiwiK3N0YXJ0Mi55KTsKKy8vCQlsb2cuZGVidWcoImxpbmVUbyIrc3RhcnQxLngrIiwiK3N0YXJ0MS55KTsKKwkJCisJCUdlbmVyYWxQYXRoIGdyYXBoaWNzID0gbmV3IEdlbmVyYWxQYXRoKCk7CisJCWdyYXBoaWNzLm1vdmVUbyhzdGFydDEueCxzdGFydDEueSk7CisJCWdyYXBoaWNzLmxpbmVUbyhpbnRlcjEueCxpbnRlcjEueSk7CisJCWdyYXBoaWNzLmxpbmVUbyhlZGdlMS54LGVkZ2UxLnkpOworCQlncmFwaGljcy5xdWFkVG8oZWRnZUNudHJsMS54LGVkZ2VDbnRybDEueSxlbmQueCxlbmQueSk7CisJCWdyYXBoaWNzLnF1YWRUbyhlZGdlQ250cmwyLngsZWRnZUNudHJsMi55LGVkZ2UyLngsZWRnZTIueSk7CisJCWdyYXBoaWNzLmxpbmVUbyhpbnRlcjIueCxpbnRlcjIueSk7CisJCWdyYXBoaWNzLmxpbmVUbyhzdGFydDIueCxzdGFydDIueSk7CisJCWdyYXBoaWNzLmxpbmVUbyhzdGFydDEueCxzdGFydDEueSk7CisJCWdyYXBoaWNzLmNsb3NlUGF0aCgpOworCQkKKwkJaW50W10gcnVsZXMgPSBuZXcgaW50WzhdOyAKKwkJCisJCS8vYWxsIHBvc3NpYmxlIENvbXBvc2l0aW5nIFJ1bGVzOgorCQlydWxlc1swXSA9IEFscGhhQ29tcG9zaXRlLlNSQ19PVkVSOworCQlydWxlc1sxXSA9IEFscGhhQ29tcG9zaXRlLkRTVF9PVkVSOworCQlydWxlc1syXSA9IEFscGhhQ29tcG9zaXRlLkNMRUFSOworCQlydWxlc1szXSA9IEFscGhhQ29tcG9zaXRlLlNSQzsKKwkJcnVsZXNbNF0gPSBBbHBoYUNvbXBvc2l0ZS5TUkNfSU47CisJCXJ1bGVzWzVdID0gQWxwaGFDb21wb3NpdGUuRFNUX0lOOworCQlydWxlc1s2XSA9IEFscGhhQ29tcG9zaXRlLlNSQ19PVVQ7CisJCXJ1bGVzWzddID0gQWxwaGFDb21wb3NpdGUuRFNUX09VVDsKKwkJCisJCWcyZC5zZXRDb21wb3NpdGUoIEFscGhhQ29tcG9zaXRlLmdldEluc3RhbmNlKCBBbHBoYUNvbXBvc2l0ZS5TUkMsYWxwaGEpKTsKKwkJZzJkLnNldFN0cm9rZShuZXcgQmFzaWNTdHJva2UoMSwgQmFzaWNTdHJva2UuQ0FQX1JPVU5ELCBCYXNpY1N0cm9rZS5KT0lOX0JFVkVMKSk7CisJCQorCQlpZiAobGluZWNvbGVyICE9IG51bGwpIHsKKwkgICAgICAgIGcyZC5zZXRQYWludChsaW5lY29sZXIpOworCSAgICAgICAgZzJkLmRyYXcoZ3JhcGhpY3MpOworICAgICAgICB9CisgICAgICAgIAorICAgICAgICBpZiAoZmlsbENvbG9yICE9IG51bGwpIHsKKyAgICAgICAgCWcyZC5zZXRQYWludChmaWxsQ29sb3IpOworCSAgICAgICAgZzJkLmZpbGwoZ3JhcGhpY3MpOworICAgICAgICB9CisgICAgICAgIAorCX0KKwkKKworCQorCQorCQorCQorCQorCXB1YmxpYyBTdHJpbmcgd29ya0Fyb3VuZFBpeGVsRXJyb3JJblNWRyhTdHJpbmcgeG1sRGVmKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkJU3RyaW5nIHJlc3VsdGluZ1N0cmluZyA9ICIiOworICAgICAgICAKKyAgICAgICAgYm9vbGVhbiBieVBhc3NlZEZpcnN0ID0gZmFsc2U7CisgICAgICAgIAorICAgICAgICB3aGlsZSAoeG1sRGVmLmluZGV4T2YoImZvbnQtc2l6ZToiKSAhPSAtMSkgeworICAgICAgICAJCisgICAgICAgIAlsb2cuZGVidWcoInhtbERlZiAiK3htbERlZik7CisgICAgICAgIAlpbnQgaSA9IHhtbERlZi5pbmRleE9mKCJmb250LXNpemU6Iik7CisgICAgICAgIAkKKyAgICAgICAgCWxvZy5kZWJ1ZygiRm91bmQgaSAiK2kpOworICAgICAgICAJaWYgKGJ5UGFzc2VkRmlyc3QpIHsKKyAgICAgICAgCQlsb2cuZGVidWcoImJ5UGFzc2VkRmlyc3QgRE8gUFJPQ0VTUyAiKTsKKwkgICAgICAgIAlTdHJpbmcgc3RhcnQgPSB4bWxEZWYuc3Vic3RyaW5nKDAsIGkrMTApOworCSAgICAgICAgCXhtbERlZiA9IHhtbERlZi5zdWJzdHJpbmcoaSsxMCwgeG1sRGVmLmxlbmd0aCgpKTsKKwkgICAgICAgIAlsb2cuZGVidWcoImJ5UGFzc2VkRmlyc3QgRklSU1QgUEFSVCBQcm9jZXNzICIrc3RhcnQpOworCSAgICAgICAgCWxvZy5kZWJ1ZygiYnlQYXNzZWRGaXJzdCBFTkQgUEFSVCBQcm9jZXNzICIreG1sRGVmKTsKKwkgICAgICAgIAkKKwkgICAgICAgIAlpbnQgZmlyc3RTZW1pY29sb24gPSB4bWxEZWYuaW5kZXhPZigiOyIpOworCSAgICAgICAgCWxvZy5kZWJ1ZygiZmlyc3RTZW1pY29sb24gIitmaXJzdFNlbWljb2xvbik7CisJICAgICAgICAJU3RyaW5nIGZvbnRTaXplID0geG1sRGVmLnN1YnN0cmluZygwLCBmaXJzdFNlbWljb2xvbik7CisJICAgICAgICAJbG9nLmRlYnVnKCJmb250U2l6ZSAiK2ZvbnRTaXplKTsKKwkgICAgICAgIAkKKwkgICAgICAgIAl4bWxEZWYgPSB4bWxEZWYuc3Vic3RyaW5nKGZpcnN0U2VtaWNvbG9uLCB4bWxEZWYubGVuZ3RoKCkpOworCSAgICAgICAgCQorCSAgICAgICAgCXJlc3VsdGluZ1N0cmluZyArPSBzdGFydCArIGZvbnRTaXplICsgInB4IjsKKyAgICAgICAgCX0gZWxzZSB7CisgICAgICAgIAkJbG9nLmRlYnVnKCJieVBhc3NlZEZpcnN0IERPIE5PVCBQUk9DRVNTICIpOworICAgICAgICAJCVN0cmluZyBzdGFydCA9IHhtbERlZi5zdWJzdHJpbmcoMCwgaSsxMCk7CisgICAgICAgIAkJbG9nLmRlYnVnKCJieVBhc3NlZEZpcnN0IEZJUlNUIFBBUlQgIitzdGFydCk7CisgICAgICAgIAkJeG1sRGVmID0geG1sRGVmLnN1YnN0cmluZyhpKzEwLCB4bWxEZWYubGVuZ3RoKCkpOworICAgICAgICAJCWxvZy5kZWJ1ZygiYnlQYXNzZWRGaXJzdCBFTkQgUEFSVCAiK3htbERlZik7CisgICAgICAgIAkJcmVzdWx0aW5nU3RyaW5nICs9IHN0YXJ0OworICAgICAgICAJCWJ5UGFzc2VkRmlyc3QgPSB0cnVlOworICAgICAgICAJfQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXN1bHRpbmdTdHJpbmcgKz0geG1sRGVmOworICAgICAgICAKKyAgICAgICAgbG9nLmRlYnVnKCIjIyMjIyMjIyMjIyMjIyMjIyMjIyMjICIpOworICAgICAgICBsb2cuZGVidWcoInJlc3VsdGluZ1N0cmluZyAiK3Jlc3VsdGluZ1N0cmluZyk7CisgICAgICAgIAorICAgICAgICByZXR1cm4gcmVzdWx0aW5nU3RyaW5nOworCX0KKwkKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL3JlY29yZC9XaGl0ZWJvYXJkTWFwVG9TVkcuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL3JlY29yZC9XaGl0ZWJvYXJkTWFwVG9TVkcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTJhZTllCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvcmVjb3JkL1doaXRlYm9hcmRNYXBUb1NWRy5qYXZhCkBAIC0wLDAgKzEsMzA1IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEucmVjb3JkOworCitpbXBvcnQgamF2YS5hd3QuQ29sb3I7CitpbXBvcnQgamF2YS5hd3QuRm9udDsKK2ltcG9ydCBqYXZhLmF3dC5JbWFnZTsKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitpbXBvcnQgamF2YXguaW1hZ2Vpby5JbWFnZUlPOworCitpbXBvcnQgb3JnLmFwYWNoZS5iYXRpay5zdmdnZW4uU1ZHR3JhcGhpY3MyRDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMuT21GaWxlSGVscGVyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLmdlb20uR2VvbVBvaW50OworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKKworcHVibGljIGNsYXNzIFdoaXRlYm9hcmRNYXBUb1NWRyBleHRlbmRzIEJhdGlrTWV0aG9kcyB7CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKFdoaXRlYm9hcmRNYXBUb1NWRy5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCisJcHJpdmF0ZSBXaGl0ZWJvYXJkTWFwVG9TVkcoKSB7CisJfQorCisJcHJpdmF0ZSBzdGF0aWMgV2hpdGVib2FyZE1hcFRvU1ZHIGluc3RhbmNlID0gbnVsbDsKKworCXB1YmxpYyBzdGF0aWMgc3luY2hyb25pemVkIFdoaXRlYm9hcmRNYXBUb1NWRyBnZXRJbnN0YW5jZSgpIHsKKwkJaWYgKGluc3RhbmNlID09IG51bGwpIHsKKwkJCWluc3RhbmNlID0gbmV3IFdoaXRlYm9hcmRNYXBUb1NWRygpOworCQl9CisKKwkJcmV0dXJuIGluc3RhbmNlOworCX0KKwkKKwlAU3VwcHJlc3NXYXJuaW5ncygicmF3dHlwZXMiKQorCXB1YmxpYyBTVkdHcmFwaGljczJEIGNvbnZlcnRNYXBUb1NWRyhTVkdHcmFwaGljczJEIHN2Z0dlbmVyYXRvciwgTGlzdCB3aGl0ZUJvYXJkTWFwKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkJCisJCS8vbG9nLmRlYnVnKCJjb252ZXJ0TWFwVG9TVkc6ICIrd2hpdGVCb2FyZE1hcC5zaXplKCkpOworCQkKKyAgICAgICAgZm9yIChJdGVyYXRvciBpdGVyID0gd2hpdGVCb2FyZE1hcC5pdGVyYXRvcigpO2l0ZXIuaGFzTmV4dCgpOykgeworICAgICAgICAJCisgICAgICAgIAlMaXN0IGdyYXBoT2JqZWN0ID0gKExpc3QpIGl0ZXIubmV4dCgpOworICAgICAgICAJCisgICAgICAgIAlTdHJpbmcgZ3JhcGhUeXBlID0gZ3JhcGhPYmplY3QuZ2V0KDApLnRvU3RyaW5nKCk7CisgICAgICAgIAkKKyAgICAgICAgCS8vbG9nLmRlYnVnKCJncmFwaFR5cGU6ICIrZ3JhcGhUeXBlKTsKKyAgICAgICAgCQorICAgICAgICAJaWYgKGdyYXBoVHlwZS5lcXVhbHMoInBhaW50IikpIHsKKyAgICAgICAgCQkKKyAgICAgICAgCQlMaXN0IHBvaW50c0xpc3QgPSAoTGlzdCkgZ3JhcGhPYmplY3QuZ2V0KDEpOworICAgICAgICAJCQorICAgICAgICAJCUludGVnZXIgbGluZVdpZHRoID0gSW50ZWdlci52YWx1ZU9mKGdyYXBoT2JqZWN0LmdldCgzKS50b1N0cmluZygpKS5pbnRWYWx1ZSgpOworICAgICAgICAJCUludGVnZXIgY29sID0gSW50ZWdlci52YWx1ZU9mKGdyYXBoT2JqZWN0LmdldCg0KS50b1N0cmluZygpKS5pbnRWYWx1ZSgpOworICAgICAgICAJCQorICAgICAgICAJCUZsb2F0IGFscGhhID0gRmxvYXQudmFsdWVPZihncmFwaE9iamVjdC5nZXQoNSkudG9TdHJpbmcoKSkuZmxvYXRWYWx1ZSgpOworICAgICAgICAJCQorICAgICAgICAJCURvdWJsZSB4ID0gRG91YmxlLnZhbHVlT2YoZ3JhcGhPYmplY3QuZ2V0KGdyYXBoT2JqZWN0LnNpemUoKS01KS50b1N0cmluZygpKS5kb3VibGVWYWx1ZSgpOworICAgICAgICAJCURvdWJsZSB5ID0gRG91YmxlLnZhbHVlT2YoZ3JhcGhPYmplY3QuZ2V0KGdyYXBoT2JqZWN0LnNpemUoKS00KS50b1N0cmluZygpKS5kb3VibGVWYWx1ZSgpOworICAgICAgICAJCQorICAgICAgICAJCS8vbG9nLmRlYnVnKCJ4LHksd2lkdGgsaGVpZ2h0OiAiK3grIiwiK3krIiwiK3dpZHRoKyIsIitoZWlnaHQpOworICAgICAgICAJCQorICAgICAgICAJCS8vRHJhdyBhIFBhaW50aW5nCisgICAgCSAgICAgICAgU1ZHR3JhcGhpY3MyRCBzdmdHZW5lcmF0b3JfdGVtcCA9IG5ldyBTVkdHcmFwaGljczJEKHN2Z0dlbmVyYXRvcik7CisgICAgCSAgICAgICAgLy9TVkdHcmFwaGljczJEIHN2Z0dlbmVyYXRvcjIgPSBuZXcgU1ZHR3JhcGhpY3MyRChkb2N1bWVudCk7CisgICAgCSAgICAgICAgIAorICAgIAkgICAgICAgIGxvZy5kZWJ1ZygicG9pbnRzTGlzdDogIitwb2ludHNMaXN0KTsKKyAgICAJICAgICAgICB0aGlzLmRyYXdQb2ludHNPYmplY3Qoc3ZnR2VuZXJhdG9yX3RlbXAsIHBvaW50c0xpc3QsIG5ldyBDb2xvcihjb2wpLCBsaW5lV2lkdGgsIHgsIHksIGFscGhhKTsKKyAgICAJICAgICAgICAKKyAgICAgICAgCX0gZWxzZSBpZiAoZ3JhcGhUeXBlLmVxdWFscygicmVjdGFuZ2xlIikpIHsKKyAgICAgICAgCQkKKyAgICAgICAgCQkvKmFjdGlvbk9iamVjdFswXSA9ICdyZWN0YW5nbGUnOworCQkgICAgICAgIGFjdGlvbk9iamVjdFsxXSA9IHN0cm9rZTsKKwkJICAgICAgICBhY3Rpb25PYmplY3RbMl0gPSBsaW5lOworCQkgICAgICAgIGFjdGlvbk9iamVjdFszXSA9IGZpbGw7CisJCSAgICAgICAgYWN0aW9uT2JqZWN0WzRdID0gc3Ryb2tlRGlzOworCQkgICAgICAgIGFjdGlvbk9iamVjdFs1XSA9IGZpbGxEaXM7CisJCSAgICAgICAgYWN0aW9uT2JqZWN0WzZdID0gdGhpcy5jdXJyZW50cmVjdGFuZ2xlT3BhY2l0eTsqLworICAgICAgICAJCQorICAgICAgICAJCUludGVnZXIgbGluZVdpZHRoID0gSW50ZWdlci52YWx1ZU9mKGdyYXBoT2JqZWN0LmdldCgyKS50b1N0cmluZygpKS5pbnRWYWx1ZSgpOworICAgICAgICAJCQorICAgICAgICAJCUludGVnZXIgc3Ryb2tlID0gSW50ZWdlci52YWx1ZU9mKGdyYXBoT2JqZWN0LmdldCgxKS50b1N0cmluZygpKS5pbnRWYWx1ZSgpOworICAgICAgICAJCUludGVnZXIgc3Ryb2tlRGlzPSBJbnRlZ2VyLnZhbHVlT2YoZ3JhcGhPYmplY3QuZ2V0KDQpLnRvU3RyaW5nKCkpLmludFZhbHVlKCk7CisgICAgICAgIAkJCisgICAgICAgIAkJQ29sb3Igc3Ryb2tlQ29sb3IgPSBudWxsOworICAgICAgICAJCWlmIChzdHJva2VEaXMgIT0gLTEpIHsKKyAgICAgICAgCQkJc3Ryb2tlQ29sb3IgPSBuZXcgQ29sb3Ioc3Ryb2tlKTsKKyAgICAgICAgCQl9CisgICAgICAgIAkJCisgICAgICAgIAkJSW50ZWdlciBmaWxsID0gSW50ZWdlci52YWx1ZU9mKGdyYXBoT2JqZWN0LmdldCgzKS50b1N0cmluZygpKS5pbnRWYWx1ZSgpOworICAgICAgICAJCUludGVnZXIgZmlsbERpcz0gSW50ZWdlci52YWx1ZU9mKGdyYXBoT2JqZWN0LmdldCg1KS50b1N0cmluZygpKS5pbnRWYWx1ZSgpOworICAgICAgICAJCQorICAgICAgICAJCUNvbG9yIGZpbGxDb2xvciA9IG51bGw7CisgICAgICAgIAkJaWYgKGZpbGxEaXMgIT0gLTEpIHsKKyAgICAgICAgCQkJZmlsbENvbG9yID0gbmV3IENvbG9yKGZpbGwpOworICAgICAgICAJCX0KKyAgICAgICAgCQkKKyAgICAgICAgCQlGbG9hdCBhbHBoYSA9IEZsb2F0LnZhbHVlT2YoZ3JhcGhPYmplY3QuZ2V0KDYpLnRvU3RyaW5nKCkpLmZsb2F0VmFsdWUoKTsKKyAgICAgICAgCQkKKyAgICAgICAgCQlEb3VibGUgeCA9IERvdWJsZS52YWx1ZU9mKGdyYXBoT2JqZWN0LmdldChncmFwaE9iamVjdC5zaXplKCktNSkudG9TdHJpbmcoKSkuZG91YmxlVmFsdWUoKTsKKyAgICAgICAgCQlEb3VibGUgeSA9IERvdWJsZS52YWx1ZU9mKGdyYXBoT2JqZWN0LmdldChncmFwaE9iamVjdC5zaXplKCktNCkudG9TdHJpbmcoKSkuZG91YmxlVmFsdWUoKTsKKyAgICAgICAgCQlEb3VibGUgd2lkdGggPSBEb3VibGUudmFsdWVPZihncmFwaE9iamVjdC5nZXQoZ3JhcGhPYmplY3Quc2l6ZSgpLTMpLnRvU3RyaW5nKCkpLmRvdWJsZVZhbHVlKCk7CisgICAgICAgIAkJRG91YmxlIGhlaWdodCA9IERvdWJsZS52YWx1ZU9mKGdyYXBoT2JqZWN0LmdldChncmFwaE9iamVjdC5zaXplKCktMikudG9TdHJpbmcoKSkuZG91YmxlVmFsdWUoKTsKKyAgICAgICAgCQorICAgICAgICAJCVNWR0dyYXBoaWNzMkQgc3ZnR2VuZXJhdG9yX3RlbXAgPSBuZXcgU1ZHR3JhcGhpY3MyRChzdmdHZW5lcmF0b3IpOworICAgICAgICAJCXRoaXMucGFpbnRSZWN0MkQoc3ZnR2VuZXJhdG9yX3RlbXAsIHgsIHksIHdpZHRoLCBoZWlnaHQsIHN0cm9rZUNvbG9yLCBsaW5lV2lkdGgsIGZpbGxDb2xvciwgYWxwaGEpOworICAgICAgICAJCQorICAgICAgICAJfSBlbHNlIGlmIChncmFwaFR5cGUuZXF1YWxzKCJlbGxpcHNlIikpIHsKKyAgICAgICAgCQkKKyAgICAgICAgCQlJbnRlZ2VyIGxpbmVXaWR0aCA9IEludGVnZXIudmFsdWVPZihncmFwaE9iamVjdC5nZXQoMikudG9TdHJpbmcoKSkuaW50VmFsdWUoKTsKKyAgICAgICAgCQkKKyAgICAgICAgCQlJbnRlZ2VyIHN0cm9rZSA9IEludGVnZXIudmFsdWVPZihncmFwaE9iamVjdC5nZXQoMSkudG9TdHJpbmcoKSkuaW50VmFsdWUoKTsKKyAgICAgICAgCQlJbnRlZ2VyIHN0cm9rZURpcz0gSW50ZWdlci52YWx1ZU9mKGdyYXBoT2JqZWN0LmdldCg0KS50b1N0cmluZygpKS5pbnRWYWx1ZSgpOworICAgICAgICAJCQorICAgICAgICAJCUNvbG9yIHN0cm9rZUNvbG9yID0gbnVsbDsKKyAgICAgICAgCQlpZiAoc3Ryb2tlRGlzICE9IC0xKSB7CisgICAgICAgIAkJCXN0cm9rZUNvbG9yID0gbmV3IENvbG9yKHN0cm9rZSk7CisgICAgICAgIAkJfQorICAgICAgICAJCQorICAgICAgICAJCUludGVnZXIgZmlsbCA9IEludGVnZXIudmFsdWVPZihncmFwaE9iamVjdC5nZXQoMykudG9TdHJpbmcoKSkuaW50VmFsdWUoKTsKKyAgICAgICAgCQlJbnRlZ2VyIGZpbGxEaXM9IEludGVnZXIudmFsdWVPZihncmFwaE9iamVjdC5nZXQoNSkudG9TdHJpbmcoKSkuaW50VmFsdWUoKTsKKyAgICAgICAgCQkKKyAgICAgICAgCQlDb2xvciBmaWxsQ29sb3IgPSBudWxsOworICAgICAgICAJCWlmIChmaWxsRGlzICE9IC0xKSB7CisgICAgICAgIAkJCWZpbGxDb2xvciA9IG5ldyBDb2xvcihmaWxsKTsKKyAgICAgICAgCQl9CisgICAgICAgIAkJCisgICAgICAgIAkJRmxvYXQgYWxwaGEgPSBGbG9hdC52YWx1ZU9mKGdyYXBoT2JqZWN0LmdldCg2KS50b1N0cmluZygpKS5mbG9hdFZhbHVlKCk7CisgICAgICAgIAkJCisgICAgICAgIAkJRG91YmxlIHggPSBEb3VibGUudmFsdWVPZihncmFwaE9iamVjdC5nZXQoZ3JhcGhPYmplY3Quc2l6ZSgpLTUpLnRvU3RyaW5nKCkpLmRvdWJsZVZhbHVlKCk7CisgICAgICAgIAkJRG91YmxlIHkgPSBEb3VibGUudmFsdWVPZihncmFwaE9iamVjdC5nZXQoZ3JhcGhPYmplY3Quc2l6ZSgpLTQpLnRvU3RyaW5nKCkpLmRvdWJsZVZhbHVlKCk7CisgICAgICAgIAkJRG91YmxlIHdpZHRoID0gRG91YmxlLnZhbHVlT2YoZ3JhcGhPYmplY3QuZ2V0KGdyYXBoT2JqZWN0LnNpemUoKS0zKS50b1N0cmluZygpKS5kb3VibGVWYWx1ZSgpOworICAgICAgICAJCURvdWJsZSBoZWlnaHQgPSBEb3VibGUudmFsdWVPZihncmFwaE9iamVjdC5nZXQoZ3JhcGhPYmplY3Quc2l6ZSgpLTIpLnRvU3RyaW5nKCkpLmRvdWJsZVZhbHVlKCk7CisgICAgICAgIAkKKyAgICAgICAgCQlTVkdHcmFwaGljczJEIHN2Z0dlbmVyYXRvcl90ZW1wID0gbmV3IFNWR0dyYXBoaWNzMkQoc3ZnR2VuZXJhdG9yKTsKKyAgICAgICAgCQl0aGlzLnBhaW50RWxsaXBzZTJEKHN2Z0dlbmVyYXRvcl90ZW1wLCB4LCB5LCB3aWR0aCwgaGVpZ2h0LCBzdHJva2VDb2xvciwgbGluZVdpZHRoLCBmaWxsQ29sb3IsIGFscGhhKTsKKyAgICAgICAgCQkKKyAgICAgICAgCX0gZWxzZSBpZiAoZ3JhcGhUeXBlLmVxdWFscygibGV0dGVyIikpIHsKKyAgICAgICAgCQkKKyAgICAgICAgCQlTdHJpbmcgdGV4dCA9IGdyYXBoT2JqZWN0LmdldCgxKS50b1N0cmluZygpOworICAgICAgICAJCUNvbG9yIGZvbnRDb2xvciA9IG5ldyBDb2xvciAoSW50ZWdlci52YWx1ZU9mKGdyYXBoT2JqZWN0LmdldCgyKS50b1N0cmluZygpKS5pbnRWYWx1ZSgpKTsKKyAgICAgICAgCQlJbnRlZ2VyIGZvbnRTaXplID0gSW50ZWdlci52YWx1ZU9mKGdyYXBoT2JqZWN0LmdldCgzKS50b1N0cmluZygpKS5pbnRWYWx1ZSgpOworICAgICAgICAJCQorICAgICAgICAJCVN0cmluZyBmb250U3R5bGUgPSBncmFwaE9iamVjdC5nZXQoNCkudG9TdHJpbmcoKTsKKyAgICAgICAgCQlJbnRlZ2VyIHN0eWxlID0gbnVsbDsKKyAgICAgICAgCQlpZiAoZm9udFN0eWxlLmVxdWFscygicGxhaW4iKSkgeworICAgICAgICAJCQlzdHlsZSA9IEZvbnQuUExBSU47CisgICAgICAgIAkJfSBlbHNlIGlmIChmb250U3R5bGUuZXF1YWxzKCJib2xkIikpIHsKKyAgICAgICAgCQkJc3R5bGUgPSBGb250LkJPTEQ7CisgICAgICAgIAkJfSBlbHNlIGlmIChmb250U3R5bGUuZXF1YWxzKCJpdGFsaWMiKSkgeworICAgICAgICAJCQlzdHlsZSA9IEZvbnQuSVRBTElDOworICAgICAgICAJCX0gZWxzZSBpZiAoZm9udFN0eWxlLmVxdWFscygiYm9sZGl0YWxpYyIpKSB7CisgICAgICAgIAkJCXN0eWxlID0gRm9udC5JVEFMSUMrRm9udC5CT0xEOworICAgICAgICAJCX0KKyAgICAgICAgCQkKKyAgICAgICAgCQlsb2cuZGVidWcoImZvbnRTdHlsZSxzdHlsZSAiK3N0eWxlKyIgZnM6ICIrZm9udFN0eWxlKTsKKyAgICAgICAgCQkKKyAgICAgICAgCQlEb3VibGUgeCA9IERvdWJsZS52YWx1ZU9mKGdyYXBoT2JqZWN0LmdldChncmFwaE9iamVjdC5zaXplKCktNSkudG9TdHJpbmcoKSkuZG91YmxlVmFsdWUoKTsKKyAgICAgICAgCQlEb3VibGUgeSA9IERvdWJsZS52YWx1ZU9mKGdyYXBoT2JqZWN0LmdldChncmFwaE9iamVjdC5zaXplKCktNCkudG9TdHJpbmcoKSkuZG91YmxlVmFsdWUoKTsKKyAgICAgICAgCQlEb3VibGUgd2lkdGggPSBEb3VibGUudmFsdWVPZihncmFwaE9iamVjdC5nZXQoZ3JhcGhPYmplY3Quc2l6ZSgpLTMpLnRvU3RyaW5nKCkpLmRvdWJsZVZhbHVlKCk7CisgICAgICAgIAkJRG91YmxlIGhlaWdodCA9IERvdWJsZS52YWx1ZU9mKGdyYXBoT2JqZWN0LmdldChncmFwaE9iamVjdC5zaXplKCktMikudG9TdHJpbmcoKSkuZG91YmxlVmFsdWUoKTsKKyAgICAgICAgCQkKKyAgICAgICAgCQlTVkdHcmFwaGljczJEIHN2Z0dlbmVyYXRvcl90ZW1wID0gbmV3IFNWR0dyYXBoaWNzMkQoc3ZnR2VuZXJhdG9yKTsKKyAgICAgICAgCQl0aGlzLnBhaW50VGV4dEJ5V2lkdGhIZWlnaHQoc3ZnR2VuZXJhdG9yX3RlbXAsIChpbnQpIE1hdGgucm91bmQoeCksIChpbnQpIE1hdGgucm91bmQoeSksIChpbnQpIE1hdGgucm91bmQod2lkdGgpLCAKKyAgICAgICAgCQkJCQkoaW50KSBNYXRoLnJvdW5kKGhlaWdodCksIHRleHQsIHN0eWxlLCBmb250U2l6ZSwgZm9udENvbG9yKTsKKyAgICAgICAgCQkKKyAgICAgICAgCX0gZWxzZSBpZiAoZ3JhcGhUeXBlLmVxdWFscygiZHJhd2Fycm93IikpIHsKKyAgICAgICAgCQkKKyAgICAgICAgCQlJbnRlZ2VyIHRoaWNrbmVzcyA9IEludGVnZXIudmFsdWVPZihncmFwaE9iamVjdC5nZXQoMikudG9TdHJpbmcoKSkuaW50VmFsdWUoKTsKKyAgICAgICAgCQkKKyAgICAgICAgCQlJbnRlZ2VyIHN0cm9rZSA9IEludGVnZXIudmFsdWVPZihncmFwaE9iamVjdC5nZXQoMSkudG9TdHJpbmcoKSkuaW50VmFsdWUoKTsKKyAgICAgICAgCQlJbnRlZ2VyIHN0cm9rZURpcz0gSW50ZWdlci52YWx1ZU9mKGdyYXBoT2JqZWN0LmdldCg0KS50b1N0cmluZygpKS5pbnRWYWx1ZSgpOworICAgICAgICAJCQorICAgICAgICAJCUNvbG9yIHN0cm9rZUNvbG9yID0gbnVsbDsKKyAgICAgICAgCQlpZiAoc3Ryb2tlRGlzICE9IC0xKSB7CisgICAgICAgIAkJCXN0cm9rZUNvbG9yID0gbmV3IENvbG9yKHN0cm9rZSk7CisgICAgICAgIAkJfQorICAgICAgICAJCQorICAgICAgICAJCUludGVnZXIgZmlsbCA9IEludGVnZXIudmFsdWVPZihncmFwaE9iamVjdC5nZXQoMykudG9TdHJpbmcoKSkuaW50VmFsdWUoKTsKKyAgICAgICAgCQlJbnRlZ2VyIGZpbGxEaXM9IEludGVnZXIudmFsdWVPZihncmFwaE9iamVjdC5nZXQoNSkudG9TdHJpbmcoKSkuaW50VmFsdWUoKTsKKyAgICAgICAgCQkKKyAgICAgICAgCQlDb2xvciBmaWxsQ29sb3IgPSBudWxsOworICAgICAgICAJCWlmIChmaWxsRGlzICE9IC0xKSB7CisgICAgICAgIAkJCWZpbGxDb2xvciA9IG5ldyBDb2xvcihmaWxsKTsKKyAgICAgICAgCQl9CisgICAgICAgIAkJCisgICAgICAgIAkJRmxvYXQgYWxwaGEgPSBGbG9hdC52YWx1ZU9mKGdyYXBoT2JqZWN0LmdldCg2KS50b1N0cmluZygpKS5mbG9hdFZhbHVlKCk7CisgICAgICAgIAkJCisgICAgICAgIAkJRG91YmxlIHggPSBEb3VibGUudmFsdWVPZihncmFwaE9iamVjdC5nZXQoZ3JhcGhPYmplY3Quc2l6ZSgpLTUpLnRvU3RyaW5nKCkpLmRvdWJsZVZhbHVlKCk7CisgICAgICAgIAkJRG91YmxlIHkgPSBEb3VibGUudmFsdWVPZihncmFwaE9iamVjdC5nZXQoZ3JhcGhPYmplY3Quc2l6ZSgpLTQpLnRvU3RyaW5nKCkpLmRvdWJsZVZhbHVlKCk7CisgICAgICAgIAkJLy9Eb3VibGUgd2lkdGggPSBEb3VibGUudmFsdWVPZihncmFwaE9iamVjdC5nZXQoZ3JhcGhPYmplY3Quc2l6ZSgpLTMpLnRvU3RyaW5nKCkpLmRvdWJsZVZhbHVlKCk7CisgICAgICAgIAkJLy9Eb3VibGUgaGVpZ2h0ID0gRG91YmxlLnZhbHVlT2YoZ3JhcGhPYmplY3QuZ2V0KGdyYXBoT2JqZWN0LnNpemUoKS0yKS50b1N0cmluZygpKS5kb3VibGVWYWx1ZSgpOworICAgICAgICAJCQorICAgICAgICAJCURvdWJsZSB4MSA9IERvdWJsZS52YWx1ZU9mKGdyYXBoT2JqZWN0LmdldCg3KS50b1N0cmluZygpKS5kb3VibGVWYWx1ZSgpOworICAgICAgICAJCURvdWJsZSB5MSA9IERvdWJsZS52YWx1ZU9mKGdyYXBoT2JqZWN0LmdldCg4KS50b1N0cmluZygpKS5kb3VibGVWYWx1ZSgpOworICAgICAgICAJCURvdWJsZSB4MiA9IERvdWJsZS52YWx1ZU9mKGdyYXBoT2JqZWN0LmdldCg5KS50b1N0cmluZygpKS5kb3VibGVWYWx1ZSgpOworICAgICAgICAJCURvdWJsZSB5MiA9IERvdWJsZS52YWx1ZU9mKGdyYXBoT2JqZWN0LmdldCgxMCkudG9TdHJpbmcoKSkuZG91YmxlVmFsdWUoKTsKKyAgICAgICAgCQkKKyAgICAgICAgCQlHZW9tUG9pbnQgc3RhcnQgPSBuZXcgR2VvbVBvaW50KCk7CisgICAgCSAgICAgICAgc3RhcnQuc2V0TG9jYXRpb24oeCt4MSx5K3kxKTsKKyAgICAJICAgICAgICBHZW9tUG9pbnQgZW5kID0gbmV3IEdlb21Qb2ludCgpOworICAgIAkgICAgICAgIGVuZC5zZXRMb2NhdGlvbih4K3gyLHkreTIpOworICAgIAkgICAgICAgIAorICAgIAkgICAgICAgIFNWR0dyYXBoaWNzMkQgc3ZnR2VuZXJhdG9yX3RlbXAgPSBuZXcgU1ZHR3JhcGhpY3MyRChzdmdHZW5lcmF0b3IpOworICAgIAkgICAgICAgIHRoaXMuZHJhd0Fycm93KHN2Z0dlbmVyYXRvcl90ZW1wLCBzdGFydCwgZW5kLCB0aGlja25lc3MsIGFscGhhLCBzdHJva2VDb2xvcixmaWxsQ29sb3IpOworICAgICAgICAJfSBlbHNlIGlmIChncmFwaFR5cGUuZXF1YWxzKCJpbWFnZSIpKSB7CisgICAgICAgIAkJCisgICAgICAgIAkJLy9sb2cuZGVidWcoImdyYXBoT2JqZWN0IGltYWdlICIrZ3JhcGhPYmplY3QpOworICAgICAgICAJCS8vbG9nLmRlYnVnKCIiLGdyYXBoT2JqZWN0KTsKKyAgICAgICAgCQkKKyAgICAgICAgCQlTdHJpbmcgcm9vbSA9IGdyYXBoT2JqZWN0LmdldCg2KS50b1N0cmluZygpOworICAgICAgICAJCVN0cmluZyBwYXJlbnRQYXRoID0gZ3JhcGhPYmplY3QuZ2V0KDUpLnRvU3RyaW5nKCk7CisgICAgICAgIAkJU3RyaW5nIGZpbGVJdGVtTmFtZSA9IGdyYXBoT2JqZWN0LmdldCgzKS50b1N0cmluZygpOworICAgICAgICAJCQorICAgICAgICAJCUZpbGUgaW1hZ2VGaWxlID0gbmV3IEZpbGUoT21GaWxlSGVscGVyLmdldFVwbG9hZERpcigpLCByb29tKTsKKyAgICAgICAgCQkKKyAgICAgICAgCQlpZiAocGFyZW50UGF0aC5sZW5ndGgoKSA+IDEpIHsKKyAgICAgICAgCQkJaW1hZ2VGaWxlID0gbmV3IEZpbGUoaW1hZ2VGaWxlLCBwYXJlbnRQYXRoKTsKKyAgICAgICAgCQl9CisgICAgICAgIAkJCisgICAgICAgIAkJLy9sb2cuZGVidWcoImZpbGVJdGVtTmFtZTogIitmaWxlSXRlbU5hbWUpOworICAgICAgICAJCQorICAgICAgICAJCUZpbGUgbXlGaWxlID0gbmV3IEZpbGUoaW1hZ2VGaWxlLCBmaWxlSXRlbU5hbWUpOworICAgICAgICAJCQorICAgICAgICAJCWlmIChteUZpbGUuZXhpc3RzKCkgJiYgbXlGaWxlLmNhblJlYWQoKSkgeworICAgICAgICAJCQkKKyAgICAgICAgCQkJSW1hZ2UgbXlJbWFnZSA9IEltYWdlSU8ucmVhZChteUZpbGUpOworICAgICAgICAJCQkKKyAgICAgICAgCQkJaW50IHggPSAoaW50KSBNYXRoLnJvdW5kKERvdWJsZS52YWx1ZU9mKGdyYXBoT2JqZWN0LmdldChncmFwaE9iamVjdC5zaXplKCktNSkudG9TdHJpbmcoKSkuZG91YmxlVmFsdWUoKSk7CisgICAgICAgIAkJCWludCB5ID0gKGludCkgTWF0aC5yb3VuZChEb3VibGUudmFsdWVPZihncmFwaE9iamVjdC5nZXQoZ3JhcGhPYmplY3Quc2l6ZSgpLTQpLnRvU3RyaW5nKCkpLmRvdWJsZVZhbHVlKCkpOworICAgICAgICAJCQlpbnQgd2lkdGggPSAoaW50KSBNYXRoLnJvdW5kKERvdWJsZS52YWx1ZU9mKGdyYXBoT2JqZWN0LmdldChncmFwaE9iamVjdC5zaXplKCktMykudG9TdHJpbmcoKSkuZG91YmxlVmFsdWUoKSk7CisgICAgICAgIAkJCWludCBoZWlnaHQgPSAoaW50KSBNYXRoLnJvdW5kKERvdWJsZS52YWx1ZU9mKGdyYXBoT2JqZWN0LmdldChncmFwaE9iamVjdC5zaXplKCktMikudG9TdHJpbmcoKSkuZG91YmxlVmFsdWUoKSk7CisJICAgICAgICAJCQorCSAgICAgICAgCQlTVkdHcmFwaGljczJEIHN2Z0dlbmVyYXRvcl90ZW1wID0gbmV3IFNWR0dyYXBoaWNzMkQoc3ZnR2VuZXJhdG9yKTsKKwkgICAgICAgIAkJc3ZnR2VuZXJhdG9yX3RlbXAuZHJhd0ltYWdlKG15SW1hZ2UsIHgsIHksIHdpZHRoLCBoZWlnaHQsIG51bGwpOworICAgICAgICAJCQkKKyAgICAgICAgCQl9IGVsc2UgeworICAgICAgICAJCQlsb2cuZXJyb3IoInRyaWVkIHRvIGluY3VsZGUgYSBub24gZXhpc3RpbmcgRmlsZSBpbnRvIFNWRy9JbWFnZSBFeHBvcnQgUGF0aDogIiArIG15RmlsZSk7CisgICAgICAgIAkJfQorICAgICAgICAJCQorICAgICAgICAJfSBlbHNlIGlmKGdyYXBoVHlwZS5lcXVhbHMoImxpbmUiKSB8fCBncmFwaFR5cGUuZXF1YWxzKCJ1bGluZSIpKSB7CisgICAgICAgIAkJCisvLyAgICAgICAgCQlhY3Rpb25PYmplY3RbMF0gPSAnbGluZSc7CisvLyAgICAgICAgICAgICAgICBhY3Rpb25PYmplY3RbMV0gPSBzdHJva2U7CisvLyAgICAgICAgICAgICAgICBhY3Rpb25PYmplY3RbMl0gPSBsaW5lOworLy8gICAgICAgICAgICAgICAgYWN0aW9uT2JqZWN0WzNdID0gb3BhY2l0eTsKKy8vICAgICAgICAgICAgICAgIGFjdGlvbk9iamVjdFs0XSA9IHgxICAKKy8vICAgICAgICAgICAgICAgIGFjdGlvbk9iamVjdFs1XSA9IHkxOyAgCisvLyAgICAgICAgICAgICAgICBhY3Rpb25PYmplY3RbNl0gPSB4MjsgICAgCisvLyAgICAgICAgICAgICAgICBhY3Rpb25PYmplY3RbN10gPSB5MjsgICAgCisvLyAgICAgICAgICAgICAgICBhY3Rpb25PYmplY3RbOF0gPSB0aGlzLmNvdW50ZXI7IAorLy8gICAgICAgICAgICAgICAgYWN0aW9uT2JqZWN0WzldID0geDsKKy8vICAgICAgICAgICAgICAgIGFjdGlvbk9iamVjdFsxMF0gPSB5OworLy8gICAgICAgICAgICAgICAgYWN0aW9uT2JqZWN0WzExXSA9IHdpZHRoOworLy8gICAgICAgICAgICAgICAgYWN0aW9uT2JqZWN0WzEyXSA9IGhlaWdodDsgIAorLy8gICAgICAgICAgICAgICAgYWN0aW9uT2JqZWN0WzEzXSA9IG5ld05hbWU7CisgICAgICAgIAkJCisgICAgCQkJSW50ZWdlciBsaW5lV2lkdGggPSBJbnRlZ2VyLnZhbHVlT2YoZ3JhcGhPYmplY3QuZ2V0KDIpLnRvU3RyaW5nKCkpLmludFZhbHVlKCk7CisgICAgICAgIAkJCisgICAgICAgIAkJSW50ZWdlciBzdHJva2UgPSBJbnRlZ2VyLnZhbHVlT2YoZ3JhcGhPYmplY3QuZ2V0KDEpLnRvU3RyaW5nKCkpLmludFZhbHVlKCk7CisgICAgICAgIAkJQ29sb3Igc3Ryb2tlQ29sb3IgPSBuZXcgQ29sb3Ioc3Ryb2tlKTsKKyAgICAgICAgCQkKKyAgICAgICAgCQlGbG9hdCBhbHBoYSA9IEZsb2F0LnZhbHVlT2YoZ3JhcGhPYmplY3QuZ2V0KDMpLnRvU3RyaW5nKCkpLmZsb2F0VmFsdWUoKTsKKyAgICAgICAgCQkKKyAgICAgICAgCQlEb3VibGUgeCA9IERvdWJsZS52YWx1ZU9mKGdyYXBoT2JqZWN0LmdldChncmFwaE9iamVjdC5zaXplKCktNSkudG9TdHJpbmcoKSkuZG91YmxlVmFsdWUoKTsKKyAgICAgICAgCQlEb3VibGUgeSA9IERvdWJsZS52YWx1ZU9mKGdyYXBoT2JqZWN0LmdldChncmFwaE9iamVjdC5zaXplKCktNCkudG9TdHJpbmcoKSkuZG91YmxlVmFsdWUoKTsKKyAgICAgICAgCQkvL0RvdWJsZSB3aWR0aCA9IERvdWJsZS52YWx1ZU9mKGdyYXBoT2JqZWN0LmdldChncmFwaE9iamVjdC5zaXplKCktMykudG9TdHJpbmcoKSkuZG91YmxlVmFsdWUoKTsKKyAgICAgICAgCQkvL0RvdWJsZSBoZWlnaHQgPSBEb3VibGUudmFsdWVPZihncmFwaE9iamVjdC5nZXQoZ3JhcGhPYmplY3Quc2l6ZSgpLTIpLnRvU3RyaW5nKCkpLmRvdWJsZVZhbHVlKCk7CisKKyAgICAgICAgCQlEb3VibGUgeDEgPSBEb3VibGUudmFsdWVPZihncmFwaE9iamVjdC5nZXQoNCkudG9TdHJpbmcoKSkuZG91YmxlVmFsdWUoKTsKKyAgICAgICAgCQlEb3VibGUgeTEgPSBEb3VibGUudmFsdWVPZihncmFwaE9iamVjdC5nZXQoNSkudG9TdHJpbmcoKSkuZG91YmxlVmFsdWUoKTsKKyAgICAgICAgCQlEb3VibGUgeDIgPSBEb3VibGUudmFsdWVPZihncmFwaE9iamVjdC5nZXQoNikudG9TdHJpbmcoKSkuZG91YmxlVmFsdWUoKTsKKyAgICAgICAgCQlEb3VibGUgeTIgPSBEb3VibGUudmFsdWVPZihncmFwaE9iamVjdC5nZXQoNykudG9TdHJpbmcoKSkuZG91YmxlVmFsdWUoKTsKKyAgICAgICAgCQkKKyAgICAgICAgCQlTVkdHcmFwaGljczJEIHN2Z0dlbmVyYXRvcl90ZW1wID0gbmV3IFNWR0dyYXBoaWNzMkQoc3ZnR2VuZXJhdG9yKTsKKyAgICAgICAgCQl0aGlzLmRyYXdMaW5lKHN2Z0dlbmVyYXRvcl90ZW1wLCB4MSwgeTEsIHgyLCB5Miwgc3Ryb2tlQ29sb3IsIGxpbmVXaWR0aCwgeCwgeSwgYWxwaGEpOworICAgICAgICAJCQorICAgICAgICAJfSBlbHNlIHsKKyAgICAgICAgCQlsb2cuZXJyb3IoInRyaWVkIHRvIGluY2x1ZGUgYSBub24gc3VwcG9ydGVkIEdyYXBoLU9iamVjdCBncmFwaFR5cGU6ICIrZ3JhcGhUeXBlKTsKKyAgICAgICAgCX0KKyAgICAgICAgCQorICAgICAgICB9CisgICAgICAgIAorICAgICAgICByZXR1cm4gc3ZnR2VuZXJhdG9yOworCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvdXNlci9FbWFpbE1hbmFnZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL3VzZXIvRW1haWxNYW5hZ2VyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2IzNmZlNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL3VzZXIvRW1haWxNYW5hZ2VyLmphdmEKQEAgLTAsMCArMSwxMjcgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyOworCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5TWFuYWdlcjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5QZXJzaXN0ZW5jZUNvbnRleHQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVHlwZWRRdWVyeTsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLkZpZWxkTWFuYWdlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLmRhby5Db25maWd1cmF0aW9uRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuQWRkcmVzczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy50ZW1wbGF0ZXMuUmVnaXN0ZXJVc2VyVGVtcGxhdGU7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMubWFpbC5NYWlsSGFuZGxlcjsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uQXV0b3dpcmVkOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsudHJhbnNhY3Rpb24uYW5ub3RhdGlvbi5UcmFuc2FjdGlvbmFsOworCisvKioKKyAqIEZJWE1FOiBUaGlzIGNsYXNzIHNob3VsZCBiZSA8aT5ub3Q8L2k+IHtAbGluayBUcmFuc2FjdGlvbmFsfQorICogCisgKiBAYXV0aG9yIHN3YWduZXIKKyAqCisgKi8KK0BUcmFuc2FjdGlvbmFsCitwdWJsaWMgY2xhc3MgRW1haWxNYW5hZ2VyIHsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoCisJCQlFbWFpbE1hbmFnZXIuY2xhc3MsIE9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKworCUBQZXJzaXN0ZW5jZUNvbnRleHQKKwlwcml2YXRlIEVudGl0eU1hbmFnZXIgZW07CisKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBDb25maWd1cmF0aW9uRGFvIGNvbmZpZ3VyYXRpb25EYW87CisJQEF1dG93aXJlZAorCXByaXZhdGUgRmllbGRNYW5hZ2VyIGZpZWxkTWFuYWdlcjsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBNYWlsSGFuZGxlciBtYWlsSGFuZGxlcjsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBSZWdpc3RlclVzZXJUZW1wbGF0ZSByZWdpc3RlclVzZXJUZW1wbGF0ZTsKKworCS8qKgorCSAqIHNlbmRzIGEgbWFpbCBhZHJlc3MgdG8gdGhlIHVzZXIgd2l0aCBoaXMgYWNjb3VudCBkYXRhCisJICogCisJICogQHBhcmFtIFVzZXJuYW1lCisJICogQHBhcmFtIFVzZXJwYXNzCisJICogQHBhcmFtIEVNYWlsCisJICogQHJldHVybgorCSAqIEB0aHJvd3MgRXhjZXB0aW9uCisJICovCisJcHVibGljIFN0cmluZyBzZW5kTWFpbChTdHJpbmcgVXNlcm5hbWUsIFN0cmluZyBVc2VycGFzcywgU3RyaW5nIEVNYWlsLAorCQkJU3RyaW5nIGxpbmssIEJvb2xlYW4gc2VuZEVtYWlsV2l0aFZlcmZpY2F0aW9uQ29kZSkgeworCisJCUludGVnZXIgc2VuZEVtYWlsQXRSZWdpc3RlciA9IGNvbmZpZ3VyYXRpb25EYW8uZ2V0Q29uZlZhbHVlKCJzZW5kRW1haWxBdFJlZ2lzdGVyIiwgSW50ZWdlci5jbGFzcywgIjAiKTsKKworCQlpZiAoc2VuZEVtYWlsQXRSZWdpc3RlciA9PSAxKSB7CisKKwkJCUxvbmcgZGVmYXVsdF9sYW5nX2lkID0gY29uZmlndXJhdGlvbkRhby5nZXRDb25mVmFsdWUoImRlZmF1bHRfbGFuZ19pZCIsIExvbmcuY2xhc3MsICIxIik7CisKKwkJCVN0cmluZyB0ZW1wbGF0ZSA9IG51bGw7CisJCQlpZiAoc2VuZEVtYWlsV2l0aFZlcmZpY2F0aW9uQ29kZSkgeworCQkJCVN0cmluZyB2ZXJpZmljYXRpb25fdXJsID0gbGluazsKKworCQkJCXRlbXBsYXRlID0gcmVnaXN0ZXJVc2VyVGVtcGxhdGUKKwkJCQkJCS5nZXRSZWdpc3RlclVzZXJXaXRoVmVyaWZpY2F0aW9uVGVtcGxhdGUoVXNlcm5hbWUsCisJCQkJCQkJCVVzZXJwYXNzLCBFTWFpbCwgZGVmYXVsdF9sYW5nX2lkLAorCQkJCQkJCQl2ZXJpZmljYXRpb25fdXJsKTsKKwkJCX0gZWxzZSB7CisJCQkJdGVtcGxhdGUgPSByZWdpc3RlclVzZXJUZW1wbGF0ZQorCQkJCQkJLmdldFJlZ2lzdGVyVXNlclRlbXBsYXRlKFVzZXJuYW1lLCBVc2VycGFzcywgRU1haWwsCisJCQkJCQkJCWRlZmF1bHRfbGFuZ19pZCk7CisJCQl9CisJCQltYWlsSGFuZGxlci5zZW5kKEVNYWlsLCBmaWVsZE1hbmFnZXIuZ2V0U3RyaW5nKDUxMkwsIGRlZmF1bHRfbGFuZ19pZCksIHRlbXBsYXRlKTsKKwkJfQorCQlyZXR1cm4gInN1Y2Nlc3MiOworCX0KKworCXB1YmxpYyBTdHJpbmcgYWRkRW1haWxDb24oU3RyaW5nIEVNYWlsLCBpbnQgQ09OVEFDVF9JRCkgeworCQlTdHJpbmcgc3VjYyA9ICJpbnZhbGlkIGVtYWlsIjsKKwkJcmV0dXJuIHN1Y2M7CisJfQorCisJLyoqCisJICogQ2hlY2tzIGlmIGEgbWFpbCBpcyBhbHJlYWR5IHRha2VuIGJ5IHNvbWVvbmUgZWxzZQorCSAqIAorCSAqIEBwYXJhbSBlbWFpbAorCSAqIEByZXR1cm4KKwkgKi8KKwlwdWJsaWMgYm9vbGVhbiBjaGVja1VzZXJFTWFpbChTdHJpbmcgZW1haWwpIHsKKwkJdHJ5IHsKKwkJCWlmIChlbWFpbC5sZW5ndGgoKSA9PSAwKQorCQkJCXJldHVybiB0cnVlOworCQkJbG9nLmRlYnVnKCJjaGVja1VzZXJNYWlsOiAiICsgZW1haWwpOworCQkJVHlwZWRRdWVyeTxBZGRyZXNzPiBxdWVyeSA9IGVtCisJCQkJCS5jcmVhdGVRdWVyeSgic2VsZWN0IGMgZnJvbSBBZGRyZXNzIGFzIGMgd2hlcmUgYy5lbWFpbCBMSUtFIDplbWFpbCBBTkQgYy5kZWxldGVkIDw+IDpkZWxldGVkIiwgQWRkcmVzcy5jbGFzcyk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImVtYWlsIiwgZW1haWwpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJkZWxldGVkIiwgdHJ1ZSk7CisJCQlpbnQgY291bnQgPSBxdWVyeS5nZXRSZXN1bHRMaXN0KCkuc2l6ZSgpOworCQkJbG9nLmRlYnVnKCJzaXplOiAiICsgY291bnQpOworCisJCQlpZiAoY291bnQgPiAwKSB7CisJCQkJcmV0dXJuIGZhbHNlOworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoImNoZWNrVXNlckVNYWlsOiAiLCBleDIpOworCQl9CisJCXJldHVybiB0cnVlOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL3VzZXIvT3JnYW5pc2F0aW9uTWFuYWdlci5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvdXNlci9PcmdhbmlzYXRpb25NYW5hZ2VyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWU5YWMwYwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL3VzZXIvT3JnYW5pc2F0aW9uTWFuYWdlci5qYXZhCkBAIC0wLDAgKzEsNzY4IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEudXNlcjsKKworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uczsKK2ltcG9ydCBqYXZhLnV0aWwuQ29tcGFyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLkxpbmtlZEhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLkxpbmtlZExpc3Q7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHlNYW5hZ2VyOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk5vUmVzdWx0RXhjZXB0aW9uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlBlcnNpc3RlbmNlQ29udGV4dDsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UeXBlZFF1ZXJ5OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLmNyaXRlcmlhLkNyaXRlcmlhQnVpbGRlcjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5jcml0ZXJpYS5Dcml0ZXJpYVF1ZXJ5OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLmNyaXRlcmlhLlByZWRpY2F0ZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5jcml0ZXJpYS5Sb290OworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuQXV0aExldmVsVXRpbDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJlYW5zLmJhc2ljLlNlYXJjaFJlc3VsdDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuZGFvLk9yZ2FuaXNhdGlvbkRhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuZGFvLk9yZ2FuaXNhdGlvblVzZXJEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLmRhby5Vc2Vyc0RhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5kb21haW4uT3JnYW5pc2F0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmRvbWFpbi5PcmdhbmlzYXRpb25fVXNlcnM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlci5Vc2VyOworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5BdXRvd2lyZWQ7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay50cmFuc2FjdGlvbi5hbm5vdGF0aW9uLlRyYW5zYWN0aW9uYWw7CisKKy8qKgorICogCisgKiBAYXV0aG9yIHN3YWduZXIKKyAqIAorICovCitAVHJhbnNhY3Rpb25hbAorcHVibGljIGNsYXNzIE9yZ2FuaXNhdGlvbk1hbmFnZXIgeworCisJcHJpdmF0ZSBzdGF0aWMgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5CisJCQkuZ2V0TG9nZ2VyKE9yZ2FuaXNhdGlvbk1hbmFnZXIuY2xhc3MsCisJCQkJCU9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKworCUBQZXJzaXN0ZW5jZUNvbnRleHQKKwlwcml2YXRlIEVudGl0eU1hbmFnZXIgZW07CisJQEF1dG93aXJlZAorCXByaXZhdGUgVXNlcnNEYW8gdXNlcnNEYW87CisJQEF1dG93aXJlZAorCXByaXZhdGUgT3JnYW5pc2F0aW9uRGFvIG9yZ0RhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBPcmdhbmlzYXRpb25Vc2VyRGFvIG9yZ1VzZXJEYW87CisJQEF1dG93aXJlZAorCXByaXZhdGUgQXV0aExldmVsVXRpbCBhdXRoTGV2ZWxVdGlsOworCisJLyoqCisJICogYWRkcyBhIG5ldyBvcmdhbmlzYXRpb24gaWYgdXNlcmxldmVsIGlzIGFkbWluCisJICogCisJICogQHBhcmFtIHVzZXJfbGV2ZWwKKwkgKiBAcGFyYW0gb3JnbmFtZQorCSAqIEBwYXJhbSB1c2VyX2lkCisJICogQHJldHVybgorCSAqLworCXB1YmxpYyBMb25nIGFkZE9yZ2FuaXNhdGlvbihMb25nIHVzZXJfbGV2ZWwsIFN0cmluZyBvcmduYW1lLCBsb25nIHVzZXJfaWQpIHsKKwkJdHJ5IHsKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrQWRtaW5MZXZlbCh1c2VyX2xldmVsKSkgeworCQkJCUxvbmcgb3JnSWQgPSB0aGlzLmFkZE9yZ2FuaXNhdGlvbihvcmduYW1lLCB1c2VyX2lkKTsKKwkJCQlyZXR1cm4gb3JnSWQ7CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiYWRkT3JnYW5pc2F0aW9uIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvKioKKwkgKiBhZGRzIGEgbmV3IG9yZ2FuaXNhdGlvbiB0byB0aGUgdGFibGUgb3JnYW5pc2F0aW9uCisJICogCisJICogQHBhcmFtIHRpdGVsbmFtZQorCSAqIEBwYXJhbSB1c2VyX2lkCisJICovCisJcHVibGljIExvbmcgYWRkT3JnYW5pc2F0aW9uKFN0cmluZyBvcmduYW1lLCBsb25nIHVzZXJfaWQpIHsKKwkJdHJ5IHsKKwkJCU9yZ2FuaXNhdGlvbiBvcmcgPSBuZXcgT3JnYW5pc2F0aW9uKCk7CisJCQlvcmcuc2V0TmFtZShvcmduYW1lKTsKKwkJCW9yZy5zZXRJbnNlcnRlZGJ5KG5ldyBMb25nKHVzZXJfaWQpKTsKKwkJCW9yZy5zZXREZWxldGVkKGZhbHNlKTsKKwkJCW9yZy5zZXRTdGFydHRpbWUobmV3IERhdGUoKSk7CisJCQlvcmcgPSBlbS5tZXJnZShvcmcpOworCisJCQlsb25nIGlkID0gb3JnLmdldE9yZ2FuaXNhdGlvbl9pZCgpOworCQkJcmV0dXJuIGlkOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIlthZGRPcmdhbmlzYXRpb25dIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgTG9uZyBhZGRPcmdhbmlzYXRpb25PYmooT3JnYW5pc2F0aW9uIG9yZykgeworCQl0cnkgeworCQkJb3JnLnNldFN0YXJ0dGltZShuZXcgRGF0ZSgpKTsKKwkJCW9yZyA9IGVtLm1lcmdlKG9yZyk7CisJCQlsb25nIGlkID0gb3JnLmdldE9yZ2FuaXNhdGlvbl9pZCgpOworCQkJcmV0dXJuIGlkOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIlthZGRPcmdhbmlzYXRpb25PYmpdIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvKioKKwkgKiAKKwkgKiBAcGFyYW0gdXNlcl9sZXZlbAorCSAqIEBwYXJhbSBzdGFydAorCSAqIEBwYXJhbSBtYXgKKwkgKiBAcGFyYW0gb3JkZXJieQorCSAqIEByZXR1cm4KKwkgKi8KKwlwdWJsaWMgU2VhcmNoUmVzdWx0PE9yZ2FuaXNhdGlvbj4gZ2V0T3JnYW5pc2F0aW9ucyhsb25nIHVzZXJfbGV2ZWwsIGludCBzdGFydCwgaW50IG1heCwKKwkJCVN0cmluZyBvcmRlcmJ5LCBib29sZWFuIGFzYykgeworCQl0cnkgeworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tBZG1pbkxldmVsKHVzZXJfbGV2ZWwpKSB7CisJCQkJU2VhcmNoUmVzdWx0PE9yZ2FuaXNhdGlvbj4gc3Jlc3VsdCA9IG5ldyBTZWFyY2hSZXN1bHQ8T3JnYW5pc2F0aW9uPigpOworCQkJCXNyZXN1bHQuc2V0T2JqZWN0TmFtZShPcmdhbmlzYXRpb24uY2xhc3MuZ2V0TmFtZSgpKTsKKwkJCQlzcmVzdWx0LnNldFJlY29yZHMob3JnRGFvLmNvdW50KCkpOworCQkJCXNyZXN1bHQuc2V0UmVzdWx0KHRoaXMuZ2V0T3JnYW5pc2F0aW9ucyhzdGFydCwgbWF4LCBvcmRlcmJ5LAorCQkJCQkJYXNjKSk7CisJCQkJcmV0dXJuIHNyZXN1bHQ7CisJCQl9IGVsc2UgeworCQkJCWxvZy5lcnJvcigiW2dldE9yZ2FuaXNhdGlvbnNdIG5vUHJlbWlzc2lvbiIpOworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRPcmdhbmlzYXRpb25zXSIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLyoqCisJICogCisJICogQHBhcmFtIHVzZXJfbGV2ZWwKKwkgKiBAcmV0dXJuCisJICovCisJcHVibGljIExpc3Q8T3JnYW5pc2F0aW9uPiBnZXRPcmdhbmlzYXRpb25zKGludCBzdGFydCwgaW50IG1heCwKKwkJCVN0cmluZyBvcmRlcmJ5LCBib29sZWFuIGFzYykgeworCQl0cnkgeworCQkJQ3JpdGVyaWFCdWlsZGVyIGNiID0gZW0uZ2V0Q3JpdGVyaWFCdWlsZGVyKCk7CisJCQlDcml0ZXJpYVF1ZXJ5PE9yZ2FuaXNhdGlvbj4gY3EgPSBjYi5jcmVhdGVRdWVyeShPcmdhbmlzYXRpb24uY2xhc3MpOworCQkJUm9vdDxPcmdhbmlzYXRpb24+IGMgPSBjcS5mcm9tKE9yZ2FuaXNhdGlvbi5jbGFzcyk7CisJCQlQcmVkaWNhdGUgY29uZGl0aW9uID0gY2IuZXF1YWwoYy5nZXQoImRlbGV0ZWQiKSwgZmFsc2UpOworCQkJY3Eud2hlcmUoY29uZGl0aW9uKTsKKwkJCWNxLmRpc3RpbmN0KGFzYyk7CisJCQlpZiAoYXNjKSB7CisJCQkJY3Eub3JkZXJCeShjYi5hc2MoYy5nZXQob3JkZXJieSkpKTsKKwkJCX0gZWxzZSB7CisJCQkJY3Eub3JkZXJCeShjYi5kZXNjKGMuZ2V0KG9yZGVyYnkpKSk7CisJCQl9CisJCQlUeXBlZFF1ZXJ5PE9yZ2FuaXNhdGlvbj4gcSA9IGVtLmNyZWF0ZVF1ZXJ5KGNxKTsKKwkJCXEuc2V0Rmlyc3RSZXN1bHQoc3RhcnQpOworCQkJcS5zZXRNYXhSZXN1bHRzKG1heCk7CisJCQlMaXN0PE9yZ2FuaXNhdGlvbj4gbGwgPSBxLmdldFJlc3VsdExpc3QoKTsKKwkJCXJldHVybiBsbDsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZ2V0T3JnYW5pc2F0aW9uc10iLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMaXN0PE9yZ2FuaXNhdGlvbj4gZ2V0T3JnYW5pc2F0aW9ucyhMb25nIHVzZXJfbGV2ZWwpIHsKKwkJdHJ5IHsKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrQWRtaW5MZXZlbCh1c2VyX2xldmVsKSkgeworCQkJCUNyaXRlcmlhQnVpbGRlciBjYiA9IGVtLmdldENyaXRlcmlhQnVpbGRlcigpOworCQkJCUNyaXRlcmlhUXVlcnk8T3JnYW5pc2F0aW9uPiBjcSA9IGNiCisJCQkJCQkuY3JlYXRlUXVlcnkoT3JnYW5pc2F0aW9uLmNsYXNzKTsKKwkJCQlSb290PE9yZ2FuaXNhdGlvbj4gYyA9IGNxLmZyb20oT3JnYW5pc2F0aW9uLmNsYXNzKTsKKwkJCQlQcmVkaWNhdGUgY29uZGl0aW9uID0gY2IuZXF1YWwoYy5nZXQoImRlbGV0ZWQiKSwgZmFsc2UpOworCQkJCWNxLndoZXJlKGNvbmRpdGlvbik7CisJCQkJVHlwZWRRdWVyeTxPcmdhbmlzYXRpb24+IHEgPSBlbS5jcmVhdGVRdWVyeShjcSk7CisJCQkJTGlzdDxPcmdhbmlzYXRpb24+IGxsID0gcS5nZXRSZXN1bHRMaXN0KCk7CisJCQkJcmV0dXJuIGxsOworCQkJfSBlbHNlIHsKKwkJCQlsb2cuZXJyb3IoIltnZXRPcmdhbmlzYXRpb25zXSBub1ByZW1pc3Npb24iKTsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZ2V0T3JnYW5pc2F0aW9uc10iLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCS8qKgorCSAqIHVwZGF0ZXMgYW4gb3JnYW5pc2F0aW9uIGlmIHVzZXJfbGV2ZWwgaXMgYWRtaW4KKwkgKiAKKwkgKiBAcGFyYW0gdXNlcl9sZXZlbAorCSAqIEBwYXJhbSBvcmdhbmlzYXRpb25faWQKKwkgKiBAcGFyYW0gb3JnbmFtZQorCSAqIEBwYXJhbSB1c2Vyc19pZAorCSAqIEByZXR1cm4KKwkgKi8KKwlwdWJsaWMgTG9uZyB1cGRhdGVPcmdhbmlzYXRpb24oTG9uZyB1c2VyX2xldmVsLCBsb25nIG9yZ2FuaXNhdGlvbl9pZCwKKwkJCVN0cmluZyBvcmduYW1lLCBsb25nIHVzZXJzX2lkKSB7CisJCXRyeSB7CisKKwkJCU9yZ2FuaXNhdGlvbiBvcmcgPSBvcmdEYW8uZ2V0KG9yZ2FuaXNhdGlvbl9pZCk7CisJCQlvcmcuc2V0TmFtZShvcmduYW1lKTsKKwkJCW9yZy5zZXRVcGRhdGVkYnkodXNlcnNfaWQpOworCQkJb3JnLnNldFVwZGF0ZXRpbWUobmV3IERhdGUoKSk7CisKKwkJCWVtLm1lcmdlKG9yZyk7CisKKwkJCXJldHVybiBvcmcuZ2V0T3JnYW5pc2F0aW9uX2lkKCk7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigidXBkYXRlT3JnYW5pc2F0aW9uIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvKioKKwkgKiBjaGVja3MgaWYgYSB1c2VyIGlzIGFscmVhZHkgc3RvcmVkCisJICogCisJICogQHBhcmFtIHVzZXJJZFRvQWRkCisJICogQHBhcmFtIHVzZXJzU3RvcmVkCisJICogQHJldHVybgorCSAqIEB0aHJvd3MgRXhjZXB0aW9uCisJICovCisJcHJpdmF0ZSBib29sZWFuIGNoZWNrVXNlckFscmVhZHlTdG9yZWQoTG9uZyB1c2VySWRUb0FkZCwgTGlzdDw/PiB1c2Vyc1N0b3JlZCkKKwkJCXRocm93cyBFeGNlcHRpb24geworCQlmb3IgKEl0ZXJhdG9yPD8+IGl0MiA9IHVzZXJzU3RvcmVkLml0ZXJhdG9yKCk7IGl0Mi5oYXNOZXh0KCk7KSB7CisJCQlVc2VyIHVzID0gKFVzZXIpIGl0Mi5uZXh0KCk7CisJCQlpZiAodXMuZ2V0VXNlcl9pZCgpLmVxdWFscyh1c2VySWRUb0FkZCkpIHsKKwkJCQlsb2cuZGVidWcoInVzZXJJZFRvQWRkIGZvdW5kOiAiICsgdXNlcklkVG9BZGQpOworCQkJCXJldHVybiB0cnVlOworCQkJfQorCQl9CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwkvKioKKwkgKiAKKwkgKiBAcGFyYW0gdXNlcl9pZAorCSAqIEBwYXJhbSB1c2Vyc1RvU3RvcmUKKwkgKiBAcmV0dXJuCisJICogQHRocm93cyBFeGNlcHRpb24KKwkgKi8KKwlwcml2YXRlIGJvb2xlYW4gY2hlY2tVc2VyU2hvdWxkQmVTdG9yZWQoTG9uZyB1c2VyX2lkLAorCQkJQFN1cHByZXNzV2FybmluZ3MoInJhd3R5cGVzIikgTGlua2VkSGFzaE1hcCB1c2Vyc1RvU3RvcmUpCisJCQl0aHJvd3MgRXhjZXB0aW9uIHsKKwkJZm9yIChJdGVyYXRvcjw/PiBpdDIgPSB1c2Vyc1RvU3RvcmUua2V5U2V0KCkuaXRlcmF0b3IoKTsgaXQyLmhhc05leHQoKTspIHsKKwkJCUludGVnZXIga2V5ID0gKEludGVnZXIpIGl0Mi5uZXh0KCk7CisJCQlMb25nIHVzZXJzSWRUb0NoZWNrID0gTG9uZworCQkJCQkudmFsdWVPZih1c2Vyc1RvU3RvcmUuZ2V0KGtleSkudG9TdHJpbmcoKSkubG9uZ1ZhbHVlKCk7CisJCQlsb2cuZGVidWcoInVzZXJzSWRUb0NoZWNrOiAiICsgdXNlcnNJZFRvQ2hlY2spOworCQkJaWYgKHVzZXJfaWQuZXF1YWxzKHVzZXJzSWRUb0NoZWNrKSkgeworCQkJCXJldHVybiB0cnVlOworCQkJfQorCQl9CisJCXJldHVybiBmYWxzZTsKKwl9CisKKwkvKioKKwkgKiBUT0RPCisJICogCisJICogQHBhcmFtIG9yZworCSAqIEBwYXJhbSB1c2VycworCSAqIEByZXR1cm4KKwkgKi8KKwlAU3VwcHJlc3NXYXJuaW5ncyh7ICJ1bnVzZWQiLCAicmF3dHlwZXMiIH0pCisJcHJpdmF0ZSBMb25nIHVwZGF0ZU9yZ2FuaXNhdGlvblVzZXJzQnlIYXNoTWFwKE9yZ2FuaXNhdGlvbiBvcmcsCisJCQlMaW5rZWRIYXNoTWFwIHVzZXJzLCBsb25nIGluc2VydGVkYnkpIHsKKwkJdHJ5IHsKKwkJCUxpbmtlZExpc3Q8TG9uZz4gdXNlcnNUb0FkZCA9IG5ldyBMaW5rZWRMaXN0PExvbmc+KCk7CisJCQlMaW5rZWRMaXN0PExvbmc+IHVzZXJzVG9EZWwgPSBuZXcgTGlua2VkTGlzdDxMb25nPigpOworCisJCQlMaXN0IHVzZXJzU3RvcmVkID0gdGhpcy5nZXRVc2Vyc0J5T3JnYW5pc2F0aW9uSWQob3JnCisJCQkJCS5nZXRPcmdhbmlzYXRpb25faWQoKSk7CisKKwkJCWZvciAoSXRlcmF0b3IgaXQgPSB1c2Vycy5rZXlTZXQoKS5pdGVyYXRvcigpOyBpdC5oYXNOZXh0KCk7KSB7CisJCQkJSW50ZWdlciBrZXkgPSAoSW50ZWdlcikgaXQubmV4dCgpOworCQkJCUxvbmcgdXNlcklkVG9BZGQgPSBMb25nLnZhbHVlT2YodXNlcnMuZ2V0KGtleSkudG9TdHJpbmcoKSkKKwkJCQkJCS5sb25nVmFsdWUoKTsKKwkJCQlsb2cuZGVidWcoInVzZXJJZFRvQWRkOiAiICsgdXNlcklkVG9BZGQpOworCQkJCWlmICghdGhpcy5jaGVja1VzZXJBbHJlYWR5U3RvcmVkKHVzZXJJZFRvQWRkLCB1c2Vyc1N0b3JlZCkpCisJCQkJCXVzZXJzVG9BZGQuYWRkKHVzZXJJZFRvQWRkKTsKKwkJCX0KKworCQkJZm9yIChJdGVyYXRvciBpdCA9IHVzZXJzU3RvcmVkLml0ZXJhdG9yKCk7IGl0Lmhhc05leHQoKTspIHsKKwkJCQlVc2VyIHVzID0gKFVzZXIpIGl0Lm5leHQoKTsKKwkJCQlMb25nIHVzZXJJZFN0b3JlZCA9IHVzLmdldFVzZXJfaWQoKTsKKwkJCQlsb2cuZGVidWcoInVzZXJJZFN0b3JlZDogIiArIHVzZXJJZFN0b3JlZCk7CisJCQkJaWYgKCF0aGlzLmNoZWNrVXNlclNob3VsZEJlU3RvcmVkKHVzZXJJZFN0b3JlZCwgdXNlcnMpKQorCQkJCQl1c2Vyc1RvRGVsLmFkZCh1c2VySWRTdG9yZWQpOworCQkJfQorCisJCQlsb2cuZGVidWcoInVzZXJzVG9BZGQuc2l6ZSAiICsgdXNlcnNUb0FkZC5zaXplKCkpOworCQkJbG9nLmRlYnVnKCJ1c2Vyc1RvRGVsLnNpemUgIiArIHVzZXJzVG9EZWwuc2l6ZSgpKTsKKworCQkJZm9yIChJdGVyYXRvcjxMb25nPiBpdCA9IHVzZXJzVG9BZGQuaXRlcmF0b3IoKTsgaXQuaGFzTmV4dCgpOykgeworCQkJCUxvbmcgdXNlcl9pZCA9IGl0Lm5leHQoKTsKKwkJCQl0aGlzLmFkZFVzZXJUb09yZ2FuaXNhdGlvbih1c2VyX2lkLCBvcmcuZ2V0T3JnYW5pc2F0aW9uX2lkKCksCisJCQkJCQlpbnNlcnRlZGJ5KTsKKwkJCX0KKworCQkJZm9yIChJdGVyYXRvcjxMb25nPiBpdCA9IHVzZXJzVG9EZWwuaXRlcmF0b3IoKTsgaXQuaGFzTmV4dCgpOykgeworCQkJCUxvbmcgdXNlcl9pZCA9IGl0Lm5leHQoKTsKKwkJCQl0aGlzLmRlbGV0ZVVzZXJGcm9tT3JnYW5pc2F0aW9uKG5ldyBMb25nKDMpLCB1c2VyX2lkLAorCQkJCQkJb3JnLmdldE9yZ2FuaXNhdGlvbl9pZCgpKTsKKwkJCX0KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoInVwZGF0ZU9yZ2FuaXNhdGlvblVzZXJzQnlIYXNoTWFwIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvKioKKwkgKiBnZXQgYW4gb3JnYW5pc2F0aW9uIGJ5IGlkIGFuZCBvbmx5IGFzIGFkbWluCisJICogCisJICogQHBhcmFtIHVzZXJfbGV2ZWwKKwkgKiBAcGFyYW0gb3JnYW5pc2F0aW9uX2lkCisJICogQHJldHVybgorCSAqLworCXB1YmxpYyBPcmdhbmlzYXRpb24gZ2V0T3JnYW5pc2F0aW9uQnlJZChsb25nIHVzZXJfbGV2ZWwsCisJCQlsb25nIG9yZ2FuaXNhdGlvbl9pZCkgeworCQl0cnkgeworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tBZG1pbkxldmVsKHVzZXJfbGV2ZWwpKSB7CisJCQkJcmV0dXJuIG9yZ0Rhby5nZXQob3JnYW5pc2F0aW9uX2lkKTsKKwkJCX0gZWxzZSB7CisJCQkJbG9nLmVycm9yKCJbZ2V0T3JnYW5pc2F0aW9uQnlJZF0gYXV0aG9yaXphdGlvbiByZXF1aXJlZCIpOworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRPcmdhbmlzYXRpb25CeUlkXSIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLyoqCisJICogR2V0cyBhbiBvcmdhbmlzYXRpb24gYnkgaXRzIGlkCisJICogCisJICogQHBhcmFtIG9yZ2FuaXNhdGlvbl9pZAorCSAqIEByZXR1cm4KKwkgKi8KKwlwdWJsaWMgT3JnYW5pc2F0aW9uIGdldE9yZ2FuaXNhdGlvbkJ5SWQobG9uZyBvcmdhbmlzYXRpb25faWQpIHsKKwkJcmV0dXJuIG9yZ0Rhby5nZXQob3JnYW5pc2F0aW9uX2lkKTsKKwl9CisKKwlwdWJsaWMgT3JnYW5pc2F0aW9uIGdldE9yZ2FuaXNhdGlvbkJ5SWRCYWNrdXAobG9uZyBvcmdhbmlzYXRpb25faWQpIHsKKwkJdHJ5IHsKKwkJCVR5cGVkUXVlcnk8T3JnYW5pc2F0aW9uPiBxdWVyeSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoImdldEFueU9yZ2FuaXNhdGlvbkJ5SWQiLCBPcmdhbmlzYXRpb24uY2xhc3MpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJvcmdhbmlzYXRpb25faWQiLCBvcmdhbmlzYXRpb25faWQpOworCQkJT3JnYW5pc2F0aW9uIG8gPSBudWxsOworCQkJdHJ5IHsKKwkJCQlvID0gcXVlcnkuZ2V0U2luZ2xlUmVzdWx0KCk7CisJCQl9IGNhdGNoIChOb1Jlc3VsdEV4Y2VwdGlvbiBlKSB7CisJCQkJLy8gbyA9IG51bGw7CisJCQl9CisJCQlyZXR1cm4gbzsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZ2V0T3JnYW5pc2F0aW9uQnlJZF0iLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBPcmdhbmlzYXRpb24gZ2V0T3JnYW5pc2F0aW9uQnlJZEFuZERlbGV0ZWQobG9uZyBvcmdhbmlzYXRpb25faWQpIHsKKwkJcmV0dXJuIGdldE9yZ2FuaXNhdGlvbkJ5SWRCYWNrdXAob3JnYW5pc2F0aW9uX2lkKTsKKwl9CisKKwlwdWJsaWMgTG9uZyBkZWxldGVPcmdhbmlzYXRpb24obG9uZyB1c2VyX2xldmVsLCBsb25nIG9yZ2FuaXNhdGlvbl9pZCwKKwkJCWxvbmcgdXBkYXRlZGJ5KSB7CisJCXRyeSB7CisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja0FkbWluTGV2ZWwodXNlcl9sZXZlbCkpIHsKKwkJCQlyZXR1cm4gdGhpcy5kZWxldGVPcmdhbmlzYXRpb24ob3JnYW5pc2F0aW9uX2lkLCB1cGRhdGVkYnkpOworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIltkZWxldGVPcmdhbmlzYXRpb25dIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvKioKKwkgKiAKKwkgKiBAcGFyYW0gb3JnYW5pc2F0aW9uX2lkCisJICogQHBhcmFtIHVwZGF0ZWRieQorCSAqIEByZXR1cm4KKwkgKi8KKwlwdWJsaWMgTG9uZyBkZWxldGVPcmdhbmlzYXRpb24obG9uZyBvcmdhbmlzYXRpb25faWQsIGxvbmcgdXBkYXRlZGJ5KSB7CisJCXRyeSB7CisJCQlvcmdEYW8uZGVsZXRlKG9yZ0Rhby5nZXQob3JnYW5pc2F0aW9uX2lkKSwgdXBkYXRlZGJ5KTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZGVsZXRlT3JnYW5pc2F0aW9uXSIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG9yZ2FuaXNhdGlvbl9pZDsKKwl9CisKKwkvKioKKwkgKiBBZGRzIGEgdXNlciB0byBhIGdpdmVuIG9yZ2FuaXNhdGlvbi11bml0CisJICogCisJICogQHBhcmFtIHVzZXJfaWQKKwkgKiBAcGFyYW0gb3JnYW5pc2F0aW9uX2lkCisJICogQHBhcmFtIGluc2VydGVkYnkKKwkgKiBAcmV0dXJuCisJICovCisJcHVibGljIExvbmcgYWRkVXNlclRvT3JnYW5pc2F0aW9uKExvbmcgdXNlcl9pZCwgTG9uZyBvcmdhbmlzYXRpb25faWQsCisJCQlMb25nIGluc2VydGVkYnkpIHsKKwkJdHJ5IHsKKwkJCWlmICh0aGlzLmdldE9yZ2FuaXNhdGlvbl9Vc2VyQnlVc2VyQW5kT3JnYW5pc2F0aW9uKHVzZXJfaWQsIG9yZ2FuaXNhdGlvbl9pZCkgPT0gbnVsbCkgeworCQkJCXJldHVybiBhZGRPcmdhbmlzYXRpb25Vc2VyT2JqKHVzZXJfaWQsCisJCQkJCQlnZXRPcmdVc2VyKG9yZ2FuaXNhdGlvbl9pZCwgaW5zZXJ0ZWRieSkpOworCQkJfSBlbHNlIHsKKwkJCQlyZXR1cm4gLTM1TDsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbYWRkVXNlclRvT3JnYW5pc2F0aW9uXSIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCQorCXB1YmxpYyBPcmdhbmlzYXRpb25fVXNlcnMgZ2V0T3JnVXNlcihMb25nIG9yZ2FuaXNhdGlvbl9pZCwgTG9uZyBpbnNlcnRlZGJ5KSB7CisJCQorCQlPcmdhbmlzYXRpb25fVXNlcnMgb3JnVXNlciA9IG5ldyBPcmdhbmlzYXRpb25fVXNlcnMoCisJCQkJb3JnRGFvLmdldChvcmdhbmlzYXRpb25faWQpKTsKKwkJb3JnVXNlci5zZXREZWxldGVkKGZhbHNlKTsKKwkJCisJCXJldHVybiBvcmdVc2VyOworCX0KKwkKKwlwdWJsaWMgTG9uZyBhZGRPcmdhbmlzYXRpb25Vc2VyT2JqKExvbmcgdXNlcl9pZCwgT3JnYW5pc2F0aW9uX1VzZXJzIG9yZ1VzZXIpIHsKKwkJdHJ5IHsKKwkJCVVzZXIgdSA9IHVzZXJzRGFvLmdldCh1c2VyX2lkKTsKKwkJCQorCQkJb3JnVXNlci5zZXRTdGFydHRpbWUobmV3IERhdGUoKSk7CisJCQlvcmdVc2VyID0gZW0ubWVyZ2Uob3JnVXNlcik7CisKKwkJCS8vdXNlciBzaG91bGQgYmUgdXBkYXRlZCB0byBoYXZlIHJlY2VudCBvcmdhbmlzYXRpb25fdXNlcnMgbGlzdAorCQkJTGlzdDxPcmdhbmlzYXRpb25fVXNlcnM+IGwgPSB1LmdldE9yZ2FuaXNhdGlvbl91c2VycygpOworCQkJbC5hZGQob3JnVXNlcik7CisJCQl1LnNldE9yZ2FuaXNhdGlvbl91c2VycyhsKTsKKwkJCXVzZXJzRGFvLnVwZGF0ZSh1LCAtMUwpOworCQkJCisJCQlyZXR1cm4gb3JnVXNlci5nZXRPcmdhbmlzYXRpb25fdXNlcnNfaWQoKTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbYWRkVXNlclRvT3JnYW5pc2F0aW9uXSIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIE9yZ2FuaXNhdGlvbl9Vc2VycyBnZXRPcmdhbmlzYXRpb25fVXNlckJ5VXNlckFuZE9yZ2FuaXNhdGlvbigKKwkJCWxvbmcgdXNlcl9pZCwgbG9uZyBvcmdhbmlzYXRpb25faWQpIHsKKwkJdHJ5IHsKKwkJCWxvZy5kZWJ1ZygiZ2V0T3JnYW5pc2F0aW9uX1VzZXJCeVVzZXJBbmRPcmdhbmlzYXRpb24gIiArIHVzZXJfaWQKKwkJCQkJKyAiICAiICsgb3JnYW5pc2F0aW9uX2lkKTsKKworCQkJVHlwZWRRdWVyeTxPcmdhbmlzYXRpb25fVXNlcnM+IHEgPSBlbS5jcmVhdGVOYW1lZFF1ZXJ5KCJnZXRPcmdhbmlzYXRpb25fVXNlckJ5VXNlckFuZE9yZ2FuaXNhdGlvbiIsIE9yZ2FuaXNhdGlvbl9Vc2Vycy5jbGFzcyk7CisJCQlxLnNldFBhcmFtZXRlcigib3JnYW5pc2F0aW9uX2lkIiwgb3JnYW5pc2F0aW9uX2lkKTsKKwkJCXEuc2V0UGFyYW1ldGVyKCJ1c2VyX2lkIiwgdXNlcl9pZCk7CisJCQlMaXN0PE9yZ2FuaXNhdGlvbl9Vc2Vycz4gb3VsID0gcS5nZXRSZXN1bHRMaXN0KCk7CisJCQlyZXR1cm4gb3VsLnNpemUoKSA+IDAgPyBvdWwuZ2V0KDApIDogbnVsbDsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZ2V0T3JnYW5pc2F0aW9uX1VzZXJCeVVzZXJBbmRPcmdhbmlzYXRpb25dIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgTG9uZyBkZWxldGVVc2VyRnJvbU9yZ2FuaXNhdGlvbihMb25nIHVzZXJfbGV2ZWwsIGxvbmcgdXNlcl9pZCwKKwkJCWxvbmcgb3JnYW5pc2F0aW9uX2lkKSB7CisJCXRyeSB7CisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja0FkbWluTGV2ZWwodXNlcl9sZXZlbCkpIHsKKworCQkJCWxvZy5lcnJvcigiZGVsZXRlVXNlckZyb21PcmdhbmlzYXRpb24gIiArIHVzZXJfaWQgKyAiICAiCisJCQkJCQkrIG9yZ2FuaXNhdGlvbl9pZCk7CisJCQkJLy91c2VyIHNob3VsZCBiZSB1cGRhdGVkIHRvIGhhdmUgcmVjZW50IG9yZ2FuaXNhdGlvbl91c2VycyBsaXN0CisJCQkJTG9uZyBpZCA9IG51bGw7CisJCQkJVXNlciB1ID0gdXNlcnNEYW8uZ2V0KHVzZXJfaWQpOworCQkJCUxpc3Q8T3JnYW5pc2F0aW9uX1VzZXJzPiBsID0gdS5nZXRPcmdhbmlzYXRpb25fdXNlcnMoKTsKKwkJCQlmb3IgKE9yZ2FuaXNhdGlvbl9Vc2VycyBvdSA6IGwpIHsKKwkJCQkJaWYgKG91LmdldE9yZ2FuaXNhdGlvbigpLmdldE9yZ2FuaXNhdGlvbl9pZCgpLmVxdWFscyhvcmdhbmlzYXRpb25faWQpKSB7CisJCQkJCQlsLnJlbW92ZShvdSk7CisJCQkJCQlpZCA9IG91LmdldE9yZ2FuaXNhdGlvbl91c2Vyc19pZCgpOworCQkJCQkJZW0ucmVtb3ZlKG91KTsKKwkJCQkJCWJyZWFrOworCQkJCQl9CisJCQkJfQorCQkJCXUuc2V0T3JnYW5pc2F0aW9uX3VzZXJzKGwpOworCQkJCXVzZXJzRGFvLnVwZGF0ZSh1LCAtMUwpOworCisJCQkJcmV0dXJuIGlkOworCQkJfSBlbHNlIHsKKwkJCQlsb2cuZXJyb3IoIltkZWxldGVVc2VyRnJvbU9yZ2FuaXNhdGlvbl0gYXV0aG9yaXphdGlvbiByZXF1aXJlZCIpOworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIltkZWxldGV1c2VyRnJvbU9yZ2FuaXNhdGlvbl0iLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBTZWFyY2hSZXN1bHQ8VXNlcj4gZ2V0VXNlcnNTZWFyY2hSZXN1bHRCeU9yZ2FuaXNhdGlvbklkKAorCQkJbG9uZyBvcmdhbmlzYXRpb25faWQsIGludCBzdGFydCwgaW50IG1heCwgU3RyaW5nIG9yZGVyYnksCisJCQlib29sZWFuIGFzYykgeworCQl0cnkgeworCisJCQlTZWFyY2hSZXN1bHQ8VXNlcj4gc1Jlc3VsdCA9IG5ldyBTZWFyY2hSZXN1bHQ8VXNlcj4oKTsKKwkJCXNSZXN1bHQuc2V0T2JqZWN0TmFtZShVc2VyLmNsYXNzLmdldE5hbWUoKSk7CisJCQlzUmVzdWx0LnNldFJlY29yZHMob3JnVXNlckRhby5jb3VudChvcmdhbmlzYXRpb25faWQpKTsKKwkJCXNSZXN1bHQuc2V0UmVzdWx0KGdldFVzZXJzQnlPcmdhbmlzYXRpb25JZChvcmdhbmlzYXRpb25faWQsCisJCQkJCXN0YXJ0LCBtYXgsIG9yZGVyYnksIGFzYykpOworCQkJcmV0dXJuIHNSZXN1bHQ7CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZ2V0VXNlcnNTZWFyY2hSZXN1bHRCeU9yZ2FuaXNhdGlvbklkXSIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLyoqCisJICogZ2V0IGEgbGlzdCBvZiBhbGwgdXNlcnMgb2YgYW4gb3JnYW5pc2F0aW9uCisJICogCisJICogQHBhcmFtIHVzZXJfbGV2ZWwKKwkgKiBAcGFyYW0gb3JnYW5pc2F0aW9uX2lkCisJICogQHBhcmFtIHN0YXJ0CisJICogQHBhcmFtIG1heAorCSAqIEBwYXJhbSBvcmRlcmJ5CisJICogQHBhcmFtIGFzYworCSAqIEByZXR1cm4KKwkgKi8KKwlwdWJsaWMgTGlzdDxVc2VyPiBnZXRVc2Vyc0J5T3JnYW5pc2F0aW9uSWQobG9uZyBvcmdhbmlzYXRpb25faWQsIGludCBzdGFydCwKKwkJCWludCBtYXgsIFN0cmluZyBvcmRlcmJ5LCBib29sZWFuIGFzYykgeworCQl0cnkgeworCQkJU3RyaW5nIGhxbCA9CisJCQkJIlNFTEVDVCBjIEZST00gIgorCQkJCSsgIlVzZXIgYyAiCisJCQkJKyAiLCBJTihjLm9yZ2FuaXNhdGlvbl91c2Vycykgb3UgIgorCQkJCSsgIldIRVJFIGMuZGVsZXRlZCA9IGZhbHNlIEFORCBvdS5vcmdhbmlzYXRpb24ub3JnYW5pc2F0aW9uX2lkID0gOm9yZ2FuaXNhdGlvbl9pZCAiOworCQkJaWYgKG9yZGVyYnkuc3RhcnRzV2l0aCgiYy4iKSkgeworCQkJCWhxbCArPSAiT1JERVIgQlkgIiArIG9yZGVyYnk7CisJCQl9IGVsc2UgeworCQkJCWhxbCArPSAiT1JERVIgQlkgIiArICJjLiIgKyBvcmRlcmJ5OworCQkJfQorCQkJaWYgKGFzYykgeworCQkJCWhxbCArPSAiIEFTQyI7CisJCQl9IGVsc2UgeworCQkJCWhxbCArPSAiIERFU0MiOworCQkJfQorCisJCQlUeXBlZFF1ZXJ5PFVzZXI+IHEgPSBlbS5jcmVhdGVRdWVyeShocWwsIFVzZXIuY2xhc3MpOworCQkJcS5zZXRQYXJhbWV0ZXIoIm9yZ2FuaXNhdGlvbl9pZCIsIG9yZ2FuaXNhdGlvbl9pZCk7CisJCQlxLnNldEZpcnN0UmVzdWx0KHN0YXJ0KTsKKwkJCXEuc2V0TWF4UmVzdWx0cyhtYXgpOworCisJCQlMaXN0PFVzZXI+IHVzZXJMID0gcS5nZXRSZXN1bHRMaXN0KCk7CisJCQlyZXR1cm4gdXNlckw7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldFVzZXJzQnlPcmdhbmlzYXRpb25JZF0iLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCS8qKgorCSAqIAorCSAqIEBwYXJhbSBvcmdhbmlzYXRpb25faWQKKwkgKiBAcmV0dXJuCisJICovCisJcHVibGljIExpc3Q8VXNlcj4gZ2V0VXNlcnNCeU9yZ2FuaXNhdGlvbklkKGxvbmcgb3JnYW5pc2F0aW9uX2lkKSB7CisJCXRyeSB7CisKKwkJCS8vIGdldCBhbGwgdXNlcnMKKwkJCVR5cGVkUXVlcnk8VXNlcj4gcSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoImdldFVzZXJzQnlPcmdhbmlzYXRpb25JZCIsIFVzZXIuY2xhc3MpOworCQkJcS5zZXRQYXJhbWV0ZXIoIm9yZ2FuaXNhdGlvbl9pZCIsIG9yZ2FuaXNhdGlvbl9pZCk7CisJCQlMaXN0PFVzZXI+IHVzZXJMID0gcS5nZXRSZXN1bHRMaXN0KCk7CisJCQlDb2xsZWN0aW9ucy5zb3J0KHVzZXJMLCBuZXcgVXNlcnNMb2dpbkNvbXBhcmF0b3IoKSk7CisJCQlyZXR1cm4gdXNlckw7CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZ2V0VXNlcnNCeU9yZ2FuaXNhdGlvbklkXSIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJY2xhc3MgVXNlcnNMb2dpbkNvbXBhcmF0b3IgaW1wbGVtZW50cyBDb21wYXJhdG9yPFVzZXI+IHsKKwkJcHVibGljIGludCBjb21wYXJlKFVzZXIgbzEsIFVzZXIgbzIpIHsKKwkJCWlmIChvMSA9PSBudWxsIHx8IG8yID09IG51bGwpCisJCQkJcmV0dXJuIDA7CisKKwkJCXJldHVybiBvMS5nZXRMb2dpbigpLmNvbXBhcmVUbyhvMi5nZXRMb2dpbigpKTsKKwkJfQorCX0KKworCS8qKgorCSAqIEZpbHRlciBhbGwgT3JnYW5pc2F0aW9ucyBieSB1c2VyIFRPRE86IEFkZCBzb3J0aW5nCisJICogCisJICogQHBhcmFtIHVzZXJfbGV2ZWwKKwkgKiBAcGFyYW0gdXNlcnNfaWQKKwkgKiBAcGFyYW0gc3RhcnQKKwkgKiBAcGFyYW0gbWF4CisJICogQHBhcmFtIG9yZGVyYnkKKwkgKiBAcmV0dXJuCisJICovCisJcHVibGljIExpc3Q8T3JnYW5pc2F0aW9uPiBnZXRPcmdhbmlzYXRpb25zQnlVc2VySWQobG9uZyB1c2VyX2xldmVsLAorCQkJbG9uZyB1c2VyX2lkLCBpbnQgc3RhcnQsIGludCBtYXgsIFN0cmluZyBvcmRlcmJ5LCBib29sZWFuIGFzYykgeworCQl0cnkgeworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tBZG1pbkxldmVsKHVzZXJfbGV2ZWwpKSB7CisJCQkJVHlwZWRRdWVyeTxPcmdhbmlzYXRpb24+IHEgPSBlbS5jcmVhdGVOYW1lZFF1ZXJ5KCJnZXRPcmdhbmlzYXRpb25zQnlVc2VySWQiLCBPcmdhbmlzYXRpb24uY2xhc3MpOworCQkJCXEuc2V0UGFyYW1ldGVyKCJ1c2VyX2lkIiwgdXNlcl9pZCk7CisJCQkJcS5zZXRGaXJzdFJlc3VsdChzdGFydCk7CisJCQkJcS5zZXRNYXhSZXN1bHRzKG1heCk7CisKKwkJCQlMaXN0PE9yZ2FuaXNhdGlvbj4gdXNlck9yZyA9IHEuZ2V0UmVzdWx0TGlzdCgpOworCisJCQkJcmV0dXJuIHVzZXJPcmc7CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldE9yZ2FuaXNhdGlvbnNCeVVzZXJJZF0iLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCS8qKgorCSAqIAorCSAqIEBwYXJhbSB1c2VyX2xldmVsCisJICogQHBhcmFtIHVzZXJfaWQKKwkgKiBAcGFyYW0gc3RhcnQKKwkgKiBAcGFyYW0gbWF4CisJICogQHBhcmFtIG9yZGVyYnkKKwkgKiBAcGFyYW0gYXNjCisJICogQHJldHVybgorCSAqLworCXB1YmxpYyBMaXN0PE9yZ2FuaXNhdGlvbj4gZ2V0UmVzdE9yZ2FuaXNhdGlvbnNCeVVzZXJJZChsb25nIHVzZXJfbGV2ZWwsCisJCQlsb25nIHVzZXJfaWQsIGludCBzdGFydCwgaW50IG1heCwgU3RyaW5nIG9yZGVyYnksIGJvb2xlYW4gYXNjKSB7CisJCXRyeSB7CisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja0FkbWluTGV2ZWwodXNlcl9sZXZlbCkpIHsKKwkJCQlTdHJpbmcgcVNRTCA9CisJCQkJCSJTRUxFQ1QgbyBGUk9NIE9yZ2FuaXNhdGlvbiBBUyBvICIKKwkJCQkJKyAiV0hFUkUgby5vcmdhbmlzYXRpb25faWQgTk9UIElOICgiCisJCQkJCSsgIglTRUxFQ1Qgb3Uub3JnYW5pc2F0aW9uLm9yZ2FuaXNhdGlvbl9pZCAiCisJCQkJCSsgIglGUk9NIFVzZXIgdSwgSU4odS5vcmdhbmlzYXRpb25fdXNlcnMpIG91IFdIRVJFIHUuZGVsZXRlZCA9IGZhbHNlIEFORCB1LnVzZXJfaWQgPSA6dXNlcl9pZCkiOworCQkJCVR5cGVkUXVlcnk8T3JnYW5pc2F0aW9uPiBxID0gZW0uY3JlYXRlUXVlcnkocVNRTCwgT3JnYW5pc2F0aW9uLmNsYXNzKTsKKwkJCQlxLnNldFBhcmFtZXRlcigidXNlcl9pZCIsIHVzZXJfaWQpOworCQkJCXEuc2V0Rmlyc3RSZXN1bHQoc3RhcnQpOworCQkJCXEuc2V0TWF4UmVzdWx0cyhtYXgpOworCQkJCXJldHVybiBxLmdldFJlc3VsdExpc3QoKTsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZ2V0UmVzdE9yZ2FuaXNhdGlvbnNCeVVzZXJJZF0iLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCS8qKgorCSAqIGNoZWNrcyBpZiB0aGUgb3JnSWQgaXMgaW4gdGhlIGxpc3Qgb2Ygb3JnSWRzIHdoaWNoIGhhdmUgYmVlbiBzZW5kIGFzCisJICogb3JnYW5pc2F0aW9ucworCSAqIAorCSAqIEBwYXJhbSBvcmdJZAorCSAqIEBwYXJhbSBvcmcKKwkgKiBAcmV0dXJuCisJICogQHRocm93cyBFeGNlcHRpb24KKwkgKi8KKwlwcml2YXRlIGJvb2xlYW4gY2hlY2tPcmdJbkxpc3QoTG9uZyBvcmdJZCwgTGlzdDxMb25nPiBvcmcpIHRocm93cyBFeGNlcHRpb24geworCQlyZXR1cm4gb3JnICE9IG51bGwgJiYgb3JnLmNvbnRhaW5zKG9yZ0lkKTsKKwl9CisKKwkvKioKKwkgKiBjaGVja3MgaWYgYW4gb3JnSWQgaXMgYWxyZWFkeSBzdG9yZWQgaW4gdGhlIFVzZXJzIE9yZ2FuaXNhdGlvbnMgT2JqZWN0CisJICogCisJICogQHBhcmFtIG9yZ0lkCisJICogQHBhcmFtIG9yZworCSAqIEByZXR1cm4KKwkgKiBAdGhyb3dzIEV4Y2VwdGlvbgorCSAqLworCXByaXZhdGUgYm9vbGVhbiBjaGVja09yZ0luU3RvcmVkTGlzdChsb25nIG9yZ0lkLCBMaXN0PE9yZ2FuaXNhdGlvbl9Vc2Vycz4gb3JnKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkJLy8gbG9nLmRlYnVnKCJjaGVja09yZ0luU3RvcmVkTGlzdCAiK29yZ0lkKTsKKwkJZm9yIChPcmdhbmlzYXRpb25fVXNlcnMgb3JnVXNlcnMgOiBvcmcpIHsKKwkJCS8vIGxvZy5kZWJ1ZygiY2hlY2tPcmdJblN0b3JlZExpc3QgMiAiK29yZ1VzZXJzLmdldE9yZ2FuaXNhdGlvbigpLmdldE9yZ2FuaXNhdGlvbl9pZCgpKTsKKwkJCWlmIChvcmdVc2Vycy5nZXRPcmdhbmlzYXRpb24oKS5nZXRPcmdhbmlzYXRpb25faWQoKS5lcXVhbHMob3JnSWQpKSB7CisJCQkJLy8gbG9nLmRlYnVnKCJjaGVja09yZ0luU3RvcmVkTGlzdCAzIGZvdW5kIik7CisJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJCX0KKwkJcmV0dXJuIGZhbHNlOworCX0KKworCS8qKgorCSAqIHVwZGF0ZXMgdXNlcnMtb3JnYW5pc2F0aW9ucyBieSBhIGdpdmVuIHBhcmFtcworCSAqIAorCSAqIEBwYXJhbSB1cworCSAqIEBwYXJhbSBvcmdhbmlzYXRpb25zCisJICogQHJldHVybgorCSAqLworCS8vRklYTUUgbmVlZCB0byByZWZhY3RvcgorCXB1YmxpYyBMb25nIHVwZGF0ZVVzZXJPcmdhbmlzYXRpb25zQnlVc2VyKFVzZXIgdXMsIExpc3Q8TG9uZz4gb3JnYW5pc2F0aW9ucykgeworCQl0cnkgeworCQkJTGlua2VkTGlzdDxMb25nPiBvcmdJZHNUb0FkZCA9IG5ldyBMaW5rZWRMaXN0PExvbmc+KCk7CisJCQlMaW5rZWRMaXN0PExvbmc+IG9yZ0lkc1RvRGVsZXRlID0gbmV3IExpbmtlZExpc3Q8TG9uZz4oKTsKKworCQkJaWYgKHVzLmdldE9yZ2FuaXNhdGlvbl91c2VycygpICE9IG51bGwpIHsKKwkJCQlmb3IgKExvbmcgb3JnSWRUb0FkZCA6IG9yZ2FuaXNhdGlvbnMpIHsKKwkJCQkJYm9vbGVhbiBpc0FscmVhZHlTdG9yZWQgPSB0aGlzLmNoZWNrT3JnSW5TdG9yZWRMaXN0KAorCQkJCQkJCW9yZ0lkVG9BZGQsIHVzLmdldE9yZ2FuaXNhdGlvbl91c2VycygpKTsKKwkJCQkJaWYgKCFpc0FscmVhZHlTdG9yZWQpCisJCQkJCQlvcmdJZHNUb0FkZC5hZGQob3JnSWRUb0FkZCk7CisJCQkJfQorCisJCQkJZm9yIChPcmdhbmlzYXRpb25fVXNlcnMgb3JnVXNlcnMgOiB1cy5nZXRPcmdhbmlzYXRpb25fdXNlcnMoKSkgeworCQkJCQlMb25nIG9yZ0lkU3RvcmVkID0gb3JnVXNlcnMuZ2V0T3JnYW5pc2F0aW9uKCkKKwkJCQkJCQkuZ2V0T3JnYW5pc2F0aW9uX2lkKCk7CisJCQkJCS8vIGxvZy5lcnJvcigidXBkYXRlVXNlck9yZ2FuaXNhdGlvbnNCeVVzZXIgY2hlY2sxIDogIitvcmdJZFN0b3JlZCk7CisJCQkJCWJvb2xlYW4gc2hvdWxkQmVTdG9yZWQgPSB0aGlzLmNoZWNrT3JnSW5MaXN0KG9yZ0lkU3RvcmVkLAorCQkJCQkJCW9yZ2FuaXNhdGlvbnMpOworCQkJCQlpZiAoIXNob3VsZEJlU3RvcmVkKQorCQkJCQkJb3JnSWRzVG9EZWxldGUuYWRkKG9yZ0lkU3RvcmVkKTsKKwkJCQl9CisKKwkJCQkvLyBsb2cuZXJyb3IoInVwZGF0ZVVzZXJPcmdhbmlzYXRpb25zQnlVc2VyIHNpemUgQUREOiAiK29yZ0lkc1RvQWRkLnNpemUoKSk7CisJCQkJZm9yIChMb25nIG9yZ1RvQWRkIDogb3JnSWRzVG9BZGQpIHsKKwkJCQkJdGhpcy5hZGRVc2VyVG9PcmdhbmlzYXRpb24odXMuZ2V0VXNlcl9pZCgpLCBvcmdUb0FkZCwKKwkJCQkJCQl1cy5nZXRVc2VyX2lkKCkpOworCQkJCX0KKworCQkJCS8vIGxvZy5lcnJvcigidXBkYXRlVXNlck9yZ2FuaXNhdGlvbnNCeVVzZXIgc2l6ZSBERUxFVEU6ICIrb3JnSWRzVG9EZWxldGUuc2l6ZSgpKTsKKwkJCQlmb3IgKExvbmcgb3JnVG9EZWwgOiBvcmdJZHNUb0RlbGV0ZSkgeworCQkJCQl0aGlzLmRlbGV0ZVVzZXJGcm9tT3JnYW5pc2F0aW9uKG5ldyBMb25nKDMpLAorCQkJCQkJCXVzLmdldFVzZXJfaWQoKSwgb3JnVG9EZWwpOworCQkJCX0KKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbdXBkYXRlVXNlck9yZ2FuaXNhdGlvbnNCeVVzZXJdICIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLyoqCisJICogYWRkcyBhbGwgc2VuZCBvcmdhbmlzYXRpb25zIHRvIHRoaXMgVXNlci1PYmplY3QgKGZvciBuZXdseQorCSAqIHJlZ2lzdGVyZWQvY3JlYXRlZCBVc2VycykKKwkgKiAKKwkgKiBAcGFyYW0gdXMKKwkgKiBAcGFyYW0gb3JnCisJICogQHJldHVybgorCSAqLworCUBTdXBwcmVzc1dhcm5pbmdzKCJyYXd0eXBlcyIpCisJcHVibGljIExvbmcgYWRkVXNlck9yZ2FuaXNhdGlvbnNCeUhhc2hNYXAobG9uZyB1cywgTGlzdCBvcmcpIHsKKwkJdHJ5IHsKKwkJCWlmIChvcmcgIT0gbnVsbCkgeworCQkJCWZvciAoSXRlcmF0b3IgaXQgPSBvcmcuaXRlcmF0b3IoKTsgaXQuaGFzTmV4dCgpOykgeworCQkJCQlJbnRlZ2VyIGtleSA9IChJbnRlZ2VyKSBpdC5uZXh0KCk7CisJCQkJCUxvbmcgbmV3T3JnSWQgPSBrZXkubG9uZ1ZhbHVlKCk7CisJCQkJCXRoaXMuYWRkVXNlclRvT3JnYW5pc2F0aW9uKHVzLCBuZXdPcmdJZCwgbmV3IExvbmcoMSkpOworCQkJCX0KKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisJCQlsb2cuZXJyb3IoImFkZFVzZXJPcmdhbmlzYXRpb25zQnlIYXNoTWFwIiwgZXgpOworCQl9CisJCXJldHVybiBudWxsOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL3VzZXIvVXNlck1hbmFnZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL3VzZXIvVXNlck1hbmFnZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NDg2OWUxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvdXNlci9Vc2VyTWFuYWdlci5qYXZhCkBAIC0wLDAgKzEsMTk0OSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXI7CisKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eU1hbmFnZXI7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTm9SZXN1bHRFeGNlcHRpb247CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTm9uVW5pcXVlUmVzdWx0RXhjZXB0aW9uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlBlcnNpc3RlbmNlQ29udGV4dDsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UeXBlZFF1ZXJ5OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLmNyaXRlcmlhLkNyaXRlcmlhQnVpbGRlcjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5jcml0ZXJpYS5Dcml0ZXJpYVF1ZXJ5OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLmNyaXRlcmlhLkV4cHJlc3Npb247CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuY3JpdGVyaWEuUGF0aDsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5jcml0ZXJpYS5QcmVkaWNhdGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuY3JpdGVyaWEuUm9vdDsKKworaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5sYW5nLlN0cmluZ1V0aWxzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLkF1dGhMZXZlbFV0aWw7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5GaWVsZE1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5TZXNzaW9uZGF0YURhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLmRhby5Db25maWd1cmF0aW9uRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuZGFvLk9tVGltZVpvbmVEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iZWFucy5iYXNpYy5TZWFyY2hSZXN1bHQ7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLmRhby5TdGF0ZURhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuZGFvLlVzZXJzRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLk9tVGltZVpvbmU7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuU2Vzc2lvbmRhdGE7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuZG9tYWluLk9yZ2FuaXNhdGlvbl9Vc2VyczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tLkNsaWVudDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLkFkZHJlc3M7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlci5Vc2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuVXNlcmRhdGE7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlci5Vc2VybGV2ZWw7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucmVtb3RlLnJlZDUuU2NvcGVBcHBsaWNhdGlvbkFkYXB0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucmVtb3RlLnV0aWwuU2Vzc2lvblZhcmlhYmxlc1V0aWw7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2Vzc2lvbi5JU2Vzc2lvbk1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudGVtcGxhdGVzLlJlc2V0UGFzc3dvcmRUZW1wbGF0ZTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5EYW9IZWxwZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMuY3J5cHQuTWFuYWdlQ3J5cHRTdHlsZTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5tYWlsLk1haWxIYW5kbGVyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLm1hdGguQ2FsZW5kYXJQYXR0ZXJuczsKK2ltcG9ydCBvcmcucmVkNS5pby51dGlscy5PYmplY3RNYXA7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcucmVkNS5zZXJ2ZXIuYXBpLklDbGllbnQ7CitpbXBvcnQgb3JnLnJlZDUuc2VydmVyLmFwaS5zY29wZS5JU2NvcGU7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5BdXRvd2lyZWQ7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay50cmFuc2FjdGlvbi5hbm5vdGF0aW9uLlRyYW5zYWN0aW9uYWw7CisKKy8qKgorICogCisgKiBAYXV0aG9yIHN3YWduZXIKKyAqIAorICovCitAVHJhbnNhY3Rpb25hbAorcHVibGljIGNsYXNzIFVzZXJNYW5hZ2VyIHsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoCisJCQlVc2VyTWFuYWdlci5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCisJQFBlcnNpc3RlbmNlQ29udGV4dAorCXByaXZhdGUgRW50aXR5TWFuYWdlciBlbTsKKworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFNlc3Npb25kYXRhRGFvIHNlc3Npb25kYXRhRGFvOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIENvbmZpZ3VyYXRpb25EYW8gY29uZmlndXJhdGlvbkRhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBGaWVsZE1hbmFnZXIgZmllbGRNYW5hZ2VyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFN0YXRlRGFvIHN0YXRlbWFuYWdlbWVudDsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBPbVRpbWVab25lRGFvIG9tVGltZVpvbmVEYW9JbXBsOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIE9yZ2FuaXNhdGlvbk1hbmFnZXIgb3JnYW5pc2F0aW9uTWFuYWdlcjsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBNYW5hZ2VDcnlwdFN0eWxlIGNyeXB0TWFuYWdlcjsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBVc2Vyc0RhbyB1c2Vyc0RhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBFbWFpbE1hbmFnZXIgZW1haWxNYW5hZ2VtZW50OworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFNjb3BlQXBwbGljYXRpb25BZGFwdGVyIHNjb3BlQXBwbGljYXRpb25BZGFwdGVyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIE1haWxIYW5kbGVyIG1haWxIYW5kbGVyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFJlc2V0UGFzc3dvcmRUZW1wbGF0ZSByZXNldFBhc3N3b3JkVGVtcGxhdGU7CisJQEF1dG93aXJlZAorCXByaXZhdGUgQXV0aExldmVsVXRpbCBhdXRoTGV2ZWxVdGlsOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIElTZXNzaW9uTWFuYWdlciBzZXNzaW9uTWFuYWdlcjsKKworCS8qKgorCSAqIHF1ZXJ5IGZvciBhIGxpc3Qgb2YgdXNlcnMKKwkgKiAKKwkgKiBAcGFyYW0gdXNlcnNfaWQKKwkgKiBAcGFyYW0gdXNlcl9sZXZlbAorCSAqIEBwYXJhbSBzdGFydAorCSAqIEBwYXJhbSBtYXgKKwkgKiBAcGFyYW0gb3JkZXJieQorCSAqIEByZXR1cm4KKwkgKi8KKwlwdWJsaWMgU2VhcmNoUmVzdWx0PFVzZXI+IGdldFVzZXJzTGlzdChsb25nIHVzZXJfbGV2ZWwsIGludCBzdGFydCwgaW50IG1heCwKKwkJCVN0cmluZyBvcmRlcmJ5LCBib29sZWFuIGFzYykgeworCQl0cnkgeworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tBZG1pbkxldmVsKHVzZXJfbGV2ZWwpKSB7CisJCQkJU2VhcmNoUmVzdWx0PFVzZXI+IHNyZXN1bHQgPSBuZXcgU2VhcmNoUmVzdWx0PFVzZXI+KCk7CisJCQkJc3Jlc3VsdC5zZXRPYmplY3ROYW1lKFVzZXIuY2xhc3MuZ2V0TmFtZSgpKTsKKwkJCQlzcmVzdWx0LnNldFJlY29yZHModXNlcnNEYW8uY291bnQoKSk7CisKKwkJCQkvLyBnZXQgYWxsIHVzZXJzCisJCQkJQ3JpdGVyaWFCdWlsZGVyIGNiID0gZW0uZ2V0Q3JpdGVyaWFCdWlsZGVyKCk7CisJCQkJQ3JpdGVyaWFRdWVyeTxVc2VyPiBjcSA9IGNiLmNyZWF0ZVF1ZXJ5KFVzZXIuY2xhc3MpOworCQkJCVJvb3Q8VXNlcj4gYyA9IGNxLmZyb20oVXNlci5jbGFzcyk7CisJCQkJUHJlZGljYXRlIGNvbmRpdGlvbiA9IGNiLmVxdWFsKGMuZ2V0KCJkZWxldGVkIiksIGZhbHNlKTsKKwkJCQljcS53aGVyZShjb25kaXRpb24pOworCQkJCWNxLmRpc3RpbmN0KGFzYyk7CisJCQkJaWYgKGFzYykgeworCQkJCQljcS5vcmRlckJ5KGNiLmFzYyhjLmdldChvcmRlcmJ5KSkpOworCQkJCX0gZWxzZSB7CisJCQkJCWNxLm9yZGVyQnkoY2IuZGVzYyhjLmdldChvcmRlcmJ5KSkpOworCQkJCX0KKwkJCQlUeXBlZFF1ZXJ5PFVzZXI+IHEgPSBlbS5jcmVhdGVRdWVyeShjcSk7CisJCQkJcS5zZXRGaXJzdFJlc3VsdChzdGFydCk7CisJCQkJcS5zZXRNYXhSZXN1bHRzKG1heCk7CisJCQkJTGlzdDxVc2VyPiBsbCA9IHEuZ2V0UmVzdWx0TGlzdCgpOworCQkJCXNyZXN1bHQuc2V0UmVzdWx0KGxsKTsKKwkJCQlyZXR1cm4gc3Jlc3VsdDsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZ2V0VXNlcnNMaXN0XSAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBTZWFyY2hSZXN1bHQ8VXNlcj4gZ2V0QWxsVXNlckJ5UmFuZ2UoU3RyaW5nIHNlYXJjaCwgaW50IHN0YXJ0LCBpbnQgbWF4LAorCQkJU3RyaW5nIG9yZGVyYnksIGJvb2xlYW4gYXNjKSB7CisJCXRyeSB7CisJCQlTZWFyY2hSZXN1bHQ8VXNlcj4gc3Jlc3VsdCA9IG5ldyBTZWFyY2hSZXN1bHQ8VXNlcj4oKTsKKwkJCXNyZXN1bHQuc2V0T2JqZWN0TmFtZShVc2VyLmNsYXNzLmdldE5hbWUoKSk7CisJCQlzcmVzdWx0LnNldFJlY29yZHModXNlcnNEYW8uY291bnQoc2VhcmNoKSk7CisKKwkJCVN0cmluZyBzb3J0ID0gbnVsbDsKKwkJCWlmIChvcmRlcmJ5ICE9IG51bGwgJiYgb3JkZXJieS5sZW5ndGgoKSA+IDApIHsKKwkJCQlzb3J0ID0gb3JkZXJieTsKKwkJCX0KKwkJCWlmIChhc2MpIHsKKwkJCQlzb3J0ICs9ICIgQVNDICI7CisJCQl9IGVsc2UgeworCQkJCXNvcnQgKz0gIiBERVNDICI7CisJCQl9CisJCQlTdHJpbmcgaHFsID0gRGFvSGVscGVyLmdldFNlYXJjaFF1ZXJ5KCJVc2VyIiwgInUiLCBzZWFyY2gsIHRydWUsIGZhbHNlLCBzb3J0LCBVc2Vyc0Rhby5zZWFyY2hGaWVsZHMpOworCisJCQlsb2cuZGVidWcoIlNob3cgSFFMOiAiICsgaHFsKTsKKworCQkJVHlwZWRRdWVyeTxVc2VyPiBxdWVyeSA9IGVtLmNyZWF0ZVF1ZXJ5KGhxbCwgVXNlci5jbGFzcyk7CisJCQkvLyBxdWVyeS5zZXRQYXJhbWV0ZXIoIm1hY29tVXNlcklkIiwgdXNlcklkKTsKKworCQkJLy8gcXVlcnkKKwkJCS8vIGlmIChhc2MpICgoQ3JpdGVyaWEpIHF1ZXJ5KS5hZGRPcmRlcihPcmRlci5hc2Mob3JkZXJieSkpOworCQkJLy8gZWxzZSAoKENyaXRlcmlhKSBxdWVyeSkuYWRkT3JkZXIoT3JkZXIuZGVzYyhvcmRlcmJ5KSk7CisJCQlxdWVyeS5zZXRGaXJzdFJlc3VsdChzdGFydCk7CisJCQlxdWVyeS5zZXRNYXhSZXN1bHRzKG1heCk7CisJCQlMaXN0PFVzZXI+IGxsID0gcXVlcnkuZ2V0UmVzdWx0TGlzdCgpOworCisJCQlzcmVzdWx0LnNldFJlc3VsdChsbCk7CisKKwkJCXJldHVybiBzcmVzdWx0OworCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldEFsbFVzZXJCeVJhbmdlXSAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCS8qKgorCSAqIAorCSAqIEBwYXJhbSB1c2VyX2xldmVsCisJICogQHBhcmFtIHVzZXJfaWQKKwkgKiBAcmV0dXJuCisJICovCisJcHVibGljIFVzZXIgY2hlY2tBZG1pbmdldFVzZXJCeUlkKGxvbmcgdXNlcl9sZXZlbCwgbG9uZyB1c2VyX2lkKSB7CisJCS8vIEZJWE1FOiBXZSBoYXZlIHRvIGNoZWNrIGhlcmUgZm9yIHRoZSBVc2VyIG9ubHkgY2F1c2UgdGhlCisJCS8vIE9yZy1Nb2RlcmF0b3Igb3RoZXJ3aXNlIGNhbm5vdCBhY2Nlc3MgaXQKKwkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tVc2VyTGV2ZWwodXNlcl9sZXZlbCkpIHsKKwkJCXJldHVybiB1c2Vyc0Rhby5nZXQodXNlcl9pZCk7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIExpc3Q8VXNlcj4gZ2V0VXNlckJ5TW9kKExvbmcgdXNlcl9sZXZlbCwgbG9uZyB1c2VyX2lkKSB7CisJCXJldHVybiBudWxsOworCX0KKworCS8qKgorCSAqIGxvZ2luIGxvZ2ljCisJICogCisJICogQHBhcmFtIFNJRAorCSAqIEBwYXJhbSBVc2VybmFtZQorCSAqIEBwYXJhbSBVc2VycGFzcworCSAqIEByZXR1cm4KKwkgKi8KKwlwdWJsaWMgT2JqZWN0IGxvZ2luVXNlcihTdHJpbmcgU0lELCBTdHJpbmcgdXNlck9yRW1haWwsIFN0cmluZyB1c2VycGFzcywKKwkJCUNsaWVudCBjdXJyZW50Q2xpZW50LCBJQ2xpZW50IGNsaWVudCwgQm9vbGVhbiBzdG9yZVBlcm1hbmVudCkgeworCQl0cnkgeworCQkJbG9nLmRlYnVnKCJMb2dpbiB1c2VyIFNJRCA6ICIgKyBTSUQgKyAiIFN0b3JlZCBQZXJtYW5lbnQgOiIKKwkJCQkJKyBzdG9yZVBlcm1hbmVudCk7CisJCQlTdHJpbmcgaHFsID0gIlNFTEVDVCBjIGZyb20gVXNlciBBUyBjICIKKwkJCQkJKyAiV0hFUkUgIgorCQkJCQkrICIoYy5sb2dpbiBMSUtFIDp1c2VyT3JFbWFpbCBPUiBjLmFkcmVzc2VzLmVtYWlsIExJS0UgOnVzZXJPckVtYWlsICApICIKKwkJCQkJKyAiQU5EIGMuZGVsZXRlZCA8PiA6ZGVsZXRlZCI7CisKKwkJCVR5cGVkUXVlcnk8VXNlcj4gcXVlcnkgPSBlbS5jcmVhdGVRdWVyeShocWwsIFVzZXIuY2xhc3MpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJ1c2VyT3JFbWFpbCIsIHVzZXJPckVtYWlsKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiZGVsZXRlZCIsIHRydWUpOworCisJCQlMaXN0PFVzZXI+IGxsID0gcXVlcnkuZ2V0UmVzdWx0TGlzdCgpOworCisJCQlsb2cuZGVidWcoImRlYnVnIFNJWkU6ICIgKyBsbC5zaXplKCkpOworCisJCQlpZiAobGwuc2l6ZSgpID09IDApIHsKKwkJCQlyZXR1cm4gbmV3IExvbmcoLTEwKTsKKwkJCX0gZWxzZSB7CisJCQkJVXNlciB1c2VycyA9IGxsLmdldCgwKTsKKworCQkJCS8vIFJlZnJlc2ggVXNlciBPYmplY3QKKwkJCQl1c2VycyA9IHRoaXMucmVmcmVzaFVzZXJPYmplY3QodXNlcnMpOworCisJCQkJaWYgKHVzZXJzRGFvLnZlcmlmeVBhc3N3b3JkKHVzZXJzLmdldFVzZXJfaWQoKSwgdXNlcnBhc3MpKSB7CisKKwkJCQkJQm9vbGVhbiBib29sID0gc2Vzc2lvbmRhdGFEYW8udXBkYXRlVXNlcihTSUQsCisJCQkJCQkJdXNlcnMuZ2V0VXNlcl9pZCgpLCBzdG9yZVBlcm1hbmVudCwKKwkJCQkJCQl1c2Vycy5nZXRMYW5ndWFnZV9pZCgpKTsKKwkJCQkJaWYgKGJvb2wgPT0gbnVsbCkgeworCQkJCQkJLy8gRXhjZXB0aW9uCisJCQkJCQlyZXR1cm4gbmV3IExvbmcoLTEpOworCQkJCQl9IGVsc2UgaWYgKCFib29sKSB7CisJCQkJCQkvLyBpbnZhbGlkIFNlc3Npb24tT2JqZWN0CisJCQkJCQlyZXR1cm4gbmV3IExvbmcoLTM1KTsKKwkJCQkJfQorCisJCQkJCS8vIENoZWNrIGlmIGFjdGl2YXRlZAorCQkJCQlpZiAodXNlcnMuZ2V0U3RhdHVzKCkgIT0gbnVsbAorCQkJCQkJCSYmIHVzZXJzLmdldFN0YXR1cygpLmVxdWFscygwKSkgeworCQkJCQkJcmV0dXJuIC00MUw7CisJCQkJCX0KKworCQkJCQl1c2Vycy5zZXRVc2VybGV2ZWwoZ2V0VXNlckxldmVsKHVzZXJzLmdldExldmVsX2lkKCkpKTsKKwkJCQkJdXBkYXRlTGFzdExvZ2luKHVzZXJzKTsKKwkJCQkJLy8gSWYgaW52b2tlZCB2aWEgU09BUCB0aGlzIGlzIE5VTEwKKwkJCQkJaWYgKGN1cnJlbnRDbGllbnQgIT0gbnVsbCkgeworCQkJCQkJY3VycmVudENsaWVudC5zZXRVc2VyX2lkKHVzZXJzLmdldFVzZXJfaWQoKSk7CisJCQkJCQlTZXNzaW9uVmFyaWFibGVzVXRpbC5zZXRVc2VySWQoY2xpZW50LCB1c2Vycy5nZXRVc2VyX2lkKCkpOworCQkJCQl9CisKKwkJCQkJbG9nLmRlYnVnKCJsb2dpblVzZXIgIiArIHVzZXJzLmdldE9yZ2FuaXNhdGlvbl91c2VycygpKTsKKwkJCQkJaWYgKCF1c2Vycy5nZXRPcmdhbmlzYXRpb25fdXNlcnMoKS5pc0VtcHR5KCkpIHsKKwkJCQkJCWxvZy5kZWJ1ZygibG9naW5Vc2VyIHNpemUgIgorCQkJCQkJCQkrIHVzZXJzLmdldE9yZ2FuaXNhdGlvbl91c2VycygpLnNpemUoKSk7CisJCQkJCX0gZWxzZSB7CisJCQkJCQl0aHJvdyBuZXcgRXhjZXB0aW9uKCJObyBPcmdhbml6YXRpb24gYXNzaWduZWQgdG8gdXNlciIpOworCQkJCQl9CisKKwkJCQkJcmV0dXJuIHVzZXJzOworCQkJCX0gZWxzZSB7CisJCQkJCXJldHVybiBuZXcgTG9uZygtMTEpOworCQkJCX0KKwkJCX0KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIltsb2dpblVzZXJdOiAiLCBleDIpOworCQl9CisJCXJldHVybiBuZXcgTG9uZygtMSk7CisJfQorCisJcHVibGljIFVzZXIgcmVmcmVzaFVzZXJPYmplY3QoVXNlciB1cykgeworCQl0cnkgeworCisJCQl1cyA9IGVtLm1lcmdlKHVzKTsKKwkJCXJldHVybiB1czsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbbG9naW5Vc2VyXTogIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgVXNlciBsb2dpblVzZXJCeVJlbW90ZUhhc2goU3RyaW5nIFNJRCwgU3RyaW5nIHJlbW90ZUhhc2gpIHsKKwkJdHJ5IHsKKworCQkJU2Vzc2lvbmRhdGEgc2Vzc2lvbkRhdGEgPSBzZXNzaW9uZGF0YURhbworCQkJCQkuZ2V0U2Vzc2lvbkJ5SGFzaChyZW1vdGVIYXNoKTsKKworCQkJaWYgKHNlc3Npb25EYXRhICE9IG51bGwpIHsKKworCQkJCVVzZXIgdSA9IGdldFVzZXJCeUlkKHNlc3Npb25EYXRhLmdldFVzZXJfaWQoKSk7CisKKwkJCQlzZXNzaW9uZGF0YURhby51cGRhdGVVc2VyV2l0aG91dFNlc3Npb24oU0lELCB1LmdldFVzZXJfaWQoKSk7CisKKwkJCQlyZXR1cm4gdTsKKwkJCX0KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIltsb2dpblVzZXJCeVJlbW90ZUhhc2hdOiAiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMb25nIGxvZ291dChTdHJpbmcgU0lELCBsb25nIFVTRVJfSUQpIHsKKwkJc2Vzc2lvbmRhdGFEYW8udXBkYXRlVXNlcihTSUQsIDAsIGZhbHNlLCBudWxsKTsKKwkJcmV0dXJuIG5ldyBMb25nKC0xMik7CisJfQorCisJcHJpdmF0ZSB2b2lkIHVwZGF0ZUxhc3RMb2dpbihVc2VyIHVzKSB7CisJCXRyeSB7CisJCQl1cy5zZXRMYXN0bG9naW4obmV3IERhdGUoKSk7CisJCQlpZiAodXMuZ2V0VXNlcl9pZCgpID09IG51bGwpIHsKKwkJCQllbS5wZXJzaXN0KHVzKTsKKwkJCX0gZWxzZSB7CisJCQkJaWYgKCFlbS5jb250YWlucyh1cykpIHsKKwkJCQkJZW0ubWVyZ2UodXMpOworCQkJCX0KKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJ1cGRhdGVMYXN0TG9naW4iLCBleDIpOworCQl9CisJfQorCisJLyoqCisJICogc3VjaGUgZWluZXMgQmVudHplcnMKKwkgKiAKKwkgKiBAcGFyYW0gdXNlcl9sZXZlbAorCSAqIEBwYXJhbSBzZWFyY2hzdHJpbmcKKwkgKiBAcGFyYW0gbWF4CisJICogQHBhcmFtIHN0YXJ0CisJICogQHJldHVybgorCSAqLworCXB1YmxpYyBMaXN0PFVzZXI+IHNlYXJjaFVzZXIobG9uZyB1c2VyX2xldmVsLCBTdHJpbmcgc2VhcmNoY3JpdGVyaWEsCisJCQlTdHJpbmcgc2VhcmNoc3RyaW5nLCBpbnQgbWF4LCBpbnQgc3RhcnQsIFN0cmluZyBvcmRlcmJ5LCBib29sZWFuIGFzYykgeworCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja0FkbWluTGV2ZWwodXNlcl9sZXZlbCkpIHsKKwkJCXRyeSB7CisJCQkJQ3JpdGVyaWFCdWlsZGVyIGNiID0gZW0uZ2V0Q3JpdGVyaWFCdWlsZGVyKCk7CisJCQkJQ3JpdGVyaWFRdWVyeTxVc2VyPiBjcSA9IGNiLmNyZWF0ZVF1ZXJ5KFVzZXIuY2xhc3MpOworCQkJCVJvb3Q8VXNlcj4gYyA9IGNxLmZyb20oVXNlci5jbGFzcyk7CisJCQkJRXhwcmVzc2lvbjxTdHJpbmc+IGxpdGVyYWwgPSBjYi5saXRlcmFsKCIlIiArIHNlYXJjaHN0cmluZyArICIlIik7CisJCQkJUGF0aDxTdHJpbmc+IHBhdGggPSBjLmdldChzZWFyY2hjcml0ZXJpYSk7CisJCQkJUHJlZGljYXRlIHByZWRpY2F0ZSA9IGNiLmxpa2UocGF0aCwgbGl0ZXJhbCk7CisJCQkJUHJlZGljYXRlIGNvbmRpdGlvbiA9IGNiLm5vdEVxdWFsKGMuZ2V0KCJkZWxldGVkIiksIHRydWUpOworCQkJCWNxLndoZXJlKGNvbmRpdGlvbiwgcHJlZGljYXRlKTsKKwkJCQljcS5kaXN0aW5jdChhc2MpOworCQkJCWlmIChhc2MpIHsKKwkJCQkJY3Eub3JkZXJCeShjYi5hc2MoYy5nZXQob3JkZXJieSkpKTsKKwkJCQl9IGVsc2UgeworCQkJCQljcS5vcmRlckJ5KGNiLmRlc2MoYy5nZXQob3JkZXJieSkpKTsKKwkJCQl9CisJCQkJVHlwZWRRdWVyeTxVc2VyPiBxID0gZW0uY3JlYXRlUXVlcnkoY3EpOworCQkJCXEuc2V0Rmlyc3RSZXN1bHQoc3RhcnQpOworCQkJCXEuc2V0TWF4UmVzdWx0cyhtYXgpOworCQkJCUxpc3Q8VXNlcj4gY29udGFjdHNaID0gcS5nZXRSZXN1bHRMaXN0KCk7CisJCQkJcmV0dXJuIGNvbnRhY3RzWjsKKwkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCQlsb2cuZXJyb3IoInNlYXJjaFVzZXIiLCBleDIpOworCQkJfQorCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMaXN0PFVzZXJkYXRhPiBnZXRVc2VyZGF0YURhc2hCb2FyZChMb25nIHVzZXJfaWQpIHsKKwkJaWYgKHVzZXJfaWQubG9uZ1ZhbHVlKCkgPiAwKSB7CisJCQl0cnkgeworCQkJCVR5cGVkUXVlcnk8VXNlcmRhdGE+IHF1ZXJ5ID0gZW0KKwkJCQkJCS5jcmVhdGVRdWVyeSgic2VsZWN0IGMgZnJvbSBVc2VyZGF0YSBhcyBjIHdoZXJlIGMudXNlcl9pZCA9IDp1c2VyX2lkIEFORCBjLmRlbGV0ZWQgPD4gOmRlbGV0ZWQiLCBVc2VyZGF0YS5jbGFzcyk7CisJCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJ1c2VyX2lkIiwgdXNlcl9pZC5sb25nVmFsdWUoKSk7CisJCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJkZWxldGVkIiwgdHJ1ZSk7CisJCQkJTGlzdDxVc2VyZGF0YT4gbGwgPSBxdWVyeS5nZXRSZXN1bHRMaXN0KCk7CisJCQkJcmV0dXJuIGxsOworCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJCWxvZy5lcnJvcigiZ2V0VXNlcmRhdGFEYXNoQm9hcmQiLCBleDIpOworCQkJfQorCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBVc2VyZGF0YSBnZXRVc2VyZGF0YUJ5S2V5KExvbmcgdXNlcl9pZCwgU3RyaW5nIERBVEFfS0VZKSB7CisJCVVzZXJkYXRhIHVzZXJkYXRhID0gbmV3IFVzZXJkYXRhKCk7CisJCWlmICh1c2VyX2lkLmxvbmdWYWx1ZSgpID4gMCkgeworCQkJdHJ5IHsKKwkJCQlUeXBlZFF1ZXJ5PFVzZXJkYXRhPiBxdWVyeSA9IGVtCisJCQkJCQkuY3JlYXRlUXVlcnkoInNlbGVjdCBjIGZyb20gVXNlcmRhdGEgYXMgYyB3aGVyZSBjLnVzZXJfaWQgPSA6dXNlcl9pZCBBTkQgYy5kYXRhX2tleSA9IDpkYXRhX2tleSBBTkQgYy5kZWxldGVkIDw+IDpkZWxldGVkIiwgVXNlcmRhdGEuY2xhc3MpOworCQkJCXF1ZXJ5LnNldFBhcmFtZXRlcigidXNlcl9pZCIsIHVzZXJfaWQubG9uZ1ZhbHVlKCkpOworCQkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiZGF0YV9rZXkiLCBEQVRBX0tFWSk7CisJCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJkZWxldGVkIiwgdHJ1ZSk7CisJCQkJZm9yIChJdGVyYXRvcjxVc2VyZGF0YT4gaXQyID0gcXVlcnkuZ2V0UmVzdWx0TGlzdCgpLml0ZXJhdG9yKCk7IGl0MgorCQkJCQkJLmhhc05leHQoKTspIHsKKwkJCQkJdXNlcmRhdGEgPSBpdDIubmV4dCgpOworCQkJCX0KKwkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCQlsb2cuZXJyb3IoImdldFVzZXJkYXRhQnlLZXkiLCBleDIpOworCQkJfQorCQl9IGVsc2UgeworCQkJdXNlcmRhdGEuc2V0Q29tbWVudCgiRXJyb3I6IE5vIFVTRVJfSUQgZ2l2ZW4iKTsKKwkJfQorCQlyZXR1cm4gdXNlcmRhdGE7CisJfQorCisJcHVibGljIExvbmcgdXBkYXRlVXNlcihsb25nIHVzZXJfbGV2ZWwsIExvbmcgdXNlcl9pZCwgTG9uZyBsZXZlbF9pZCwKKwkJCVN0cmluZyBsb2dpbiwgU3RyaW5nIHBhc3N3b3JkLCBTdHJpbmcgbGFzdG5hbWUsIFN0cmluZyBmaXJzdG5hbWUsCisJCQlEYXRlIGFnZSwgU3RyaW5nIHN0cmVldCwgU3RyaW5nIGFkZGl0aW9uYWxuYW1lLCBTdHJpbmcgemlwLAorCQkJbG9uZyBzdGF0ZXNfaWQsIFN0cmluZyB0b3duLCBMb25nIGxhbmd1YWdlX2lkLCBpbnQgYXZhaWxpYmxlLAorCQkJU3RyaW5nIHRlbGVmb24sIFN0cmluZyBmYXgsIFN0cmluZyBtb2JpbCwgU3RyaW5nIGVtYWlsLAorCQkJU3RyaW5nIGNvbW1lbnQsIGludCBzdGF0dXMsIExpc3Q8TG9uZz4gb3JnYW5pc2F0aW9ucywgaW50IHNhbHV0YXRpb25zX2lkLAorCQkJU3RyaW5nIHBob25lLCBib29sZWFuIHNlbmRTTVMsIFN0cmluZyBqTmFtZVRpbWVab25lLAorCQkJQm9vbGVhbiBmb3JjZVRpbWVab25lQ2hlY2ssIFN0cmluZyB1c2VyT2ZmZXJzLCBTdHJpbmcgdXNlclNlYXJjaHMsCisJCQlCb29sZWFuIHNob3dDb250YWN0RGF0YSwgQm9vbGVhbiBzaG93Q29udGFjdERhdGFUb0NvbnRhY3RzKSB7CisKKwkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tVc2VyTGV2ZWwodXNlcl9sZXZlbCkgJiYgdXNlcl9pZCAhPSAwKSB7CisJCQl0cnkgeworCQkJCVVzZXIgdXMgPSB1c2Vyc0Rhby5nZXQodXNlcl9pZCk7CisKKwkJCQkvLyBDaGVjayBmb3IgZHVwbGljYXRlcworCQkJCWJvb2xlYW4gY2hlY2tOYW1lID0gdHJ1ZTsKKworCQkJCWlmICghbG9naW4uZXF1YWxzKHVzLmdldExvZ2luKCkpKSB7CisJCQkJCWNoZWNrTmFtZSA9IHVzZXJzRGFvLmNoZWNrVXNlckxvZ2luKGxvZ2luKTsKKwkJCQl9CisJCQkJYm9vbGVhbiBjaGVja0VtYWlsID0gdHJ1ZTsKKworCQkJCS8vIENvbXBhcmUgb2xkIGFkZHJlc3Mgd2l0aCBuZXcgYWRkcmVzcworCQkJCWlmICghZW1haWwuZXF1YWxzKHVzLmdldEFkcmVzc2VzKCkuZ2V0RW1haWwoKSkpIHsKKworCQkJCQkvLyBJdHMgYSBuZXcgb25lIC0gY2hlY2ssIHdoZXRoZXIgYW5vdGhlciB1c2VyIGFscmVhZHkgdXNlcworCQkJCQkvLyB0aGF0IG9uZS4uLgorCQkJCQljaGVja0VtYWlsID0gZW1haWxNYW5hZ2VtZW50LmNoZWNrVXNlckVNYWlsKGVtYWlsKTsKKwkJCQl9CisKKwkJCQlpZiAoY2hlY2tOYW1lICYmIGNoZWNrRW1haWwpIHsKKwkJCQkJLy8gbG9nLmluZm8oInVzZXJfaWQgIiArIHVzZXJfaWQpOworCisJCQkJCS8vIGFkZCBvciBkZWxldGUgb3JnYW5pc2F0aW9ucyBmcm9tIHRoaXMgdXNlcgorCQkJCQlpZiAob3JnYW5pc2F0aW9ucyAhPSBudWxsKSB7CisJCQkJCQlvcmdhbmlzYXRpb25NYW5hZ2VyLnVwZGF0ZVVzZXJPcmdhbmlzYXRpb25zQnlVc2VyKAorCQkJCQkJCQl1cywgb3JnYW5pc2F0aW9ucyk7CisJCQkJCX0KKwkJCQkJdXMgPSB1c2Vyc0Rhby5nZXQodXNlcl9pZCk7CisKKwkJCQkJdXMuc2V0TGFzdG5hbWUobGFzdG5hbWUpOworCQkJCQl1cy5zZXRGaXJzdG5hbWUoZmlyc3RuYW1lKTsKKwkJCQkJdXMuc2V0QWdlKGFnZSk7CisJCQkJCXVzLnNldExvZ2luKGxvZ2luKTsKKwkJCQkJdXMuc2V0VXBkYXRldGltZShuZXcgRGF0ZSgpKTsKKwkJCQkJdXMuc2V0QXZhaWxpYmxlKGF2YWlsaWJsZSk7CisJCQkJCXVzLnNldFN0YXR1cyhzdGF0dXMpOworCQkJCQl1cy5zZXRTYWx1dGF0aW9uc19pZCgobG9uZylzYWx1dGF0aW9uc19pZCk7CisJCQkJCXVzLnNldE9tVGltZVpvbmUob21UaW1lWm9uZURhb0ltcGwKKwkJCQkJCQkuZ2V0T21UaW1lWm9uZShqTmFtZVRpbWVab25lKSk7CisJCQkJCXVzLnNldExhbmd1YWdlX2lkKGxhbmd1YWdlX2lkKTsKKwkJCQkJdXMuc2V0Rm9yY2VUaW1lWm9uZUNoZWNrKGZvcmNlVGltZVpvbmVDaGVjayk7CisKKwkJCQkJdXMuc2V0U2VuZFNNUyhzZW5kU01TKTsKKwkJCQkJdXMuc2V0VXNlck9mZmVycyh1c2VyT2ZmZXJzKTsKKwkJCQkJdXMuc2V0VXNlclNlYXJjaHModXNlclNlYXJjaHMpOworCQkJCQl1cy5zZXRTaG93Q29udGFjdERhdGEoc2hvd0NvbnRhY3REYXRhKTsKKwkJCQkJdXMuc2V0U2hvd0NvbnRhY3REYXRhVG9Db250YWN0cyhzaG93Q29udGFjdERhdGFUb0NvbnRhY3RzKTsKKworCQkJCQlpZiAobGV2ZWxfaWQgIT0gMCkgeworCQkJCQkJdXMuc2V0TGV2ZWxfaWQobGV2ZWxfaWQpOworCQkJCQl9CisJCQkJCWlmIChwYXNzd29yZC5sZW5ndGgoKSAhPSAwKSB7CisJCQkJCQl0cnkgeworCQkJCQkJCXVzLnVwZGF0ZVBhc3N3b3JkKGNyeXB0TWFuYWdlciwgY29uZmlndXJhdGlvbkRhbywgcGFzc3dvcmQpOworCQkJCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCQkJCQlyZXR1cm4gbmV3IExvbmcoLTcpOworCQkJCQkJfQorCQkJCQl9CisJCQkJCXVzLnNldEFkcmVzc2VzKHN0cmVldCwgemlwLCB0b3duLCBzdGF0ZW1hbmFnZW1lbnQuZ2V0U3RhdGVCeUlkKHN0YXRlc19pZCksCisJCQkJCQkJYWRkaXRpb25hbG5hbWUsIGNvbW1lbnQsIGZheCwgcGhvbmUsIGVtYWlsKTsKKworCQkJCQllbS5tZXJnZSh1cyk7CisKKwkJCQkJcmV0dXJuIHVzLmdldFVzZXJfaWQoKTsKKworCQkJCX0gZWxzZSB7CisJCQkJCWlmICghY2hlY2tOYW1lKSB7CisJCQkJCQlyZXR1cm4gbmV3IExvbmcoLTE1KTsKKwkJCQkJfSBlbHNlIGlmICghY2hlY2tFbWFpbCkgeworCQkJCQkJcmV0dXJuIG5ldyBMb25nKC0xNyk7CisJCQkJCX0KKwkJCQl9CisJCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQkJbG9nLmVycm9yKCJbdXBkYXRlVXNlcl0iLCBleDIpOworCQkJfQorCQl9IGVsc2UgeworCQkJbG9nLmVycm9yKCJFcnJvcjogUGVybWlzc2lvbiBkZW5pZWQiKTsKKwkJCXJldHVybiBuZXcgTG9uZygtMSk7CisJCX0KKwkJcmV0dXJuIG5ldyBMb25nKC0xKTsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIHVwZGF0ZVVzZXJkYXRhKGludCBEQVRBX0lELCBsb25nIFVTRVJfSUQsIFN0cmluZyBEQVRBX0tFWSwKKwkJCVN0cmluZyBEQVRBLCBTdHJpbmcgQ29tbWVudCkgeworCQlTdHJpbmcgcmVzID0gIkZlaGxlciBiZWltIFVwZGF0ZSI7CisJCXRyeSB7CisJCQlTdHJpbmcgaHFsVXBkYXRlID0gInVwZGF0ZSB1c2VyZGF0YSBzZXQgREFUQV9LRVk9IDpEQVRBX0tFWSwgVVNFUl9JRCA9IDpVU0VSX0lELCBEQVRBID0gOkRBVEEsIHVwZGF0ZXRpbWUgPSA6dXBkYXRldGltZSwgY29tbWVudCA9IDpDb21tZW50IHdoZXJlIERBVEFfSUQ9IDpEQVRBX0lEIjsKKwkJCWludCB1cGRhdGVkRW50aXRpZXMgPSBlbS5jcmVhdGVRdWVyeShocWxVcGRhdGUpCisJCQkJCS5zZXRQYXJhbWV0ZXIoIkRBVEFfS0VZIiwgREFUQV9LRVkpCisJCQkJCS5zZXRQYXJhbWV0ZXIoIlVTRVJfSUQiLCBVU0VSX0lEKQorCQkJCQkuc2V0UGFyYW1ldGVyKCJEQVRBIiwgREFUQSkKKwkJCQkJLnNldFBhcmFtZXRlcigidXBkYXRldGltZSIsIG5ldyBMb25nKC0xKSkKKwkJCQkJLnNldFBhcmFtZXRlcigiQ29tbWVudCIsIENvbW1lbnQpCisJCQkJCS5zZXRQYXJhbWV0ZXIoIkRBVEFfSUQiLCBEQVRBX0lEKS5leGVjdXRlVXBkYXRlKCk7CisJCQlyZXMgPSAiU3VjY2VzcyIgKyB1cGRhdGVkRW50aXRpZXM7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigidXBkYXRlVXNlcmRhdGEiLCBleDIpOworCQl9CisJCXJldHVybiByZXM7CisJfQorCisJcHVibGljIFN0cmluZyB1cGRhdGVVc2VyZGF0YUJ5S2V5KExvbmcgVVNFUl9JRCwgU3RyaW5nIERBVEFfS0VZLAorCQkJU3RyaW5nIERBVEEsIFN0cmluZyBDb21tZW50KSB7CisJCVN0cmluZyByZXMgPSAiRmVobGVyIGJlaW0gVXBkYXRlIjsKKwkJdHJ5IHsKKwkJCVN0cmluZyBocWxVcGRhdGUgPSAiVVBEQVRFIFVzZXJkYXRhIHNldCBkYXRhID0gOmRhdGEsIHVwZGF0ZXRpbWUgPSA6dXBkYXRldGltZSwgIgorCQkJCQkrICJjb21tZW50ID0gOmNvbW1lbnQgd2hlcmUgdXNlcl9pZD0gOnVzZXJfaWQgQU5EIGRhdGFfa2V5ID0gOmRhdGFfa2V5IjsKKwkJCWludCB1cGRhdGVkRW50aXRpZXMgPSBlbS5jcmVhdGVRdWVyeShocWxVcGRhdGUpCisJCQkJCS5zZXRQYXJhbWV0ZXIoImRhdGEiLCBEQVRBKQorCQkJCQkuc2V0UGFyYW1ldGVyKCJ1cGRhdGV0aW1lIiwgbmV3IExvbmcoLTEpKQorCQkJCQkuc2V0UGFyYW1ldGVyKCJjb21tZW50IiwgQ29tbWVudCkKKwkJCQkJLnNldFBhcmFtZXRlcigidXNlcl9pZCIsIFVTRVJfSUQubG9uZ1ZhbHVlKCkpCisJCQkJCS5zZXRQYXJhbWV0ZXIoImRhdGFfa2V5IiwgREFUQV9LRVkpLmV4ZWN1dGVVcGRhdGUoKTsKKwkJCXJlcyA9ICJTdWNjZXNzIiArIHVwZGF0ZWRFbnRpdGllczsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJ1cGRhdGVVc2VyZGF0YUJ5S2V5IiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gcmVzOworCX0KKworCXB1YmxpYyBTdHJpbmcgYWRkVXNlcmRhdGEobG9uZyBVU0VSX0lELCBTdHJpbmcgREFUQV9LRVksIFN0cmluZyBEQVRBLAorCQkJU3RyaW5nIENvbW1lbnQpIHsKKwkJU3RyaW5nIHJldCA9ICJGZWhsZXIgYmVpbSBzcGVpY2hlcm4gZGVyIFVzZXJkYXRhIjsKKwkJVXNlcmRhdGEgdXNlcmRhdGEgPSBuZXcgVXNlcmRhdGEoKTsKKwkJdXNlcmRhdGEuc2V0RGF0YV9rZXkoREFUQV9LRVkpOworCQl1c2VyZGF0YS5zZXREYXRhKERBVEEpOworCQl1c2VyZGF0YS5zZXRTdGFydHRpbWUobmV3IERhdGUoKSk7CisJCXVzZXJkYXRhLnNldFVwZGF0ZXRpbWUobnVsbCk7CisJCXVzZXJkYXRhLnNldENvbW1lbnQoQ29tbWVudCk7CisJCXVzZXJkYXRhLnNldFVzZXJfaWQobmV3IExvbmcoVVNFUl9JRCkpOworCQl1c2VyZGF0YS5zZXREZWxldGVkKGZhbHNlKTsKKwkJdHJ5IHsKKwkJCXVzZXJkYXRhID0gZW0ubWVyZ2UodXNlcmRhdGEpOworCQkJcmV0ID0gInN1Y2Nlc3MiOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoImFkZFVzZXJkYXRhIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gcmV0OworCX0KKworCXByaXZhdGUgVXNlcmxldmVsIGdldFVzZXJMZXZlbChMb25nIGxldmVsX2lkKSB7CisJCVVzZXJsZXZlbCB1c2VybGV2ZWwgPSBuZXcgVXNlcmxldmVsKCk7CisJCXRyeSB7CisJCQlUeXBlZFF1ZXJ5PFVzZXJsZXZlbD4gcXVlcnkgPSBlbQorCQkJCQkuY3JlYXRlUXVlcnkoInNlbGVjdCBjIGZyb20gVXNlcmxldmVsIGFzIGMgd2hlcmUgYy5sZXZlbF9pZCA9IDpsZXZlbF9pZCBBTkQgYy5kZWxldGVkIDw+IDpkZWxldGVkIiwgVXNlcmxldmVsLmNsYXNzKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigibGV2ZWxfaWQiLCBsZXZlbF9pZC5sb25nVmFsdWUoKSk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImRlbGV0ZWQiLCB0cnVlKTsKKwkJCWZvcihJdGVyYXRvcjxVc2VybGV2ZWw+IGl0MiA9IHF1ZXJ5LmdldFJlc3VsdExpc3QoKS5pdGVyYXRvcigpOyBpdDIKKwkJCQkJLmhhc05leHQoKTspIHsKKwkJCQl1c2VybGV2ZWwgPSBpdDIubmV4dCgpOworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRVc2VyTGV2ZWxdIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gdXNlcmxldmVsOworCX0KKworCS8qKgorCSAqIGdldCB1c2VyLXJvbGUgMSAtIHVzZXIgMiAtIG1vZGVyYXRvciAzIC0gYWRtaW4KKwkgKiAKKwkgKiBAcGFyYW0gdXNlcl9pZAorCSAqIEByZXR1cm4KKwkgKi8KKwlwdWJsaWMgTG9uZyBnZXRVc2VyTGV2ZWxCeUlEKExvbmcgdXNlcl9pZCkgeworCisJCXRyeSB7CisJCQlpZiAodXNlcl9pZCA9PSBudWxsKQorCQkJCXJldHVybiBuZXcgTG9uZygwKTsKKwkJCS8vIEZvciBkaXJlY3QgYWNjZXNzIG9mIGxpbmtlZCB1c2VycworCQkJaWYgKHVzZXJfaWQgPT0gLTEpIHsKKwkJCQlyZXR1cm4gbmV3IExvbmcoMSk7CisJCQl9CisKKwkJCVR5cGVkUXVlcnk8VXNlcj4gcXVlcnkgPSBlbQorCQkJCQkuY3JlYXRlUXVlcnkoInNlbGVjdCBjIGZyb20gVXNlciBhcyBjIHdoZXJlIGMudXNlcl9pZCA9IDp1c2VyX2lkIEFORCBjLmRlbGV0ZWQgPD4gdHJ1ZSIsIFVzZXIuY2xhc3MpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJ1c2VyX2lkIiwgdXNlcl9pZCk7CisJCQlVc2VyIHVzID0gbnVsbDsKKwkJCXRyeSB7CisJCQkJdXMgPSBxdWVyeS5nZXRTaW5nbGVSZXN1bHQoKTsKKwkJCX0gY2F0Y2ggKE5vUmVzdWx0RXhjZXB0aW9uIGUpIHsKKwkJCQkvLyB1PW51bGx9CisJCQl9CisKKwkJCWlmICh1cyAhPSBudWxsKSB7CisJCQkJcmV0dXJuIHVzLmdldExldmVsX2lkKCk7CisJCQl9IGVsc2UgeworCQkJCXJldHVybiAtMUw7CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldFVzZXJMZXZlbEJ5SURdIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgTG9uZyBnZXRVc2VyTGV2ZWxCeUlkQW5kT3JnKExvbmcgdXNlcl9pZCwgTG9uZyBvcmdhbmlzYXRpb25faWQpIHsKKworCQl0cnkgeworCQkJaWYgKHVzZXJfaWQgPT0gbnVsbCkKKwkJCQlyZXR1cm4gbmV3IExvbmcoMCk7CisJCQkvLyBGb3IgZGlyZWN0IGFjY2VzcyBvZiBsaW5rZWQgdXNlcnMKKwkJCWlmICh1c2VyX2lkID09IC0xKSB7CisJCQkJcmV0dXJuIG5ldyBMb25nKDEpOworCQkJfQorCisJCQlUeXBlZFF1ZXJ5PFVzZXI+IHF1ZXJ5ID0gZW0KKwkJCQkJLmNyZWF0ZVF1ZXJ5KCJzZWxlY3QgYyBmcm9tIFVzZXIgYXMgYyB3aGVyZSBjLnVzZXJfaWQgPSA6dXNlcl9pZCBBTkQgYy5kZWxldGVkIDw+IHRydWUiLCBVc2VyLmNsYXNzKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigidXNlcl9pZCIsIHVzZXJfaWQpOworCQkJVXNlciB1cyA9IG51bGw7CisJCQl0cnkgeworCQkJCXVzID0gcXVlcnkuZ2V0U2luZ2xlUmVzdWx0KCk7CisJCQl9IGNhdGNoIChOb1Jlc3VsdEV4Y2VwdGlvbiBlKSB7CisJCQkJLy8gdT1udWxsfQorCQkJfQorCisJCQlpZiAodXMgIT0gbnVsbCkgeworCisJCQkJaWYgKHVzLmdldExldmVsX2lkKCkgPiAyKSB7CisJCQkJCXJldHVybiB1cy5nZXRMZXZlbF9pZCgpOworCQkJCX0gZWxzZSB7CisKKwkJCQkJbG9nLmRlYnVnKCJ1c2VyX2lkLCBvcmdhbmlzYXRpb25faWQiICsgdXNlcl9pZCArICIsICIKKwkJCQkJCQkrIG9yZ2FuaXNhdGlvbl9pZCk7CisKKwkJCQkJT3JnYW5pc2F0aW9uX1VzZXJzIG91ID0gb3JnYW5pc2F0aW9uTWFuYWdlcgorCQkJCQkJCS5nZXRPcmdhbmlzYXRpb25fVXNlckJ5VXNlckFuZE9yZ2FuaXNhdGlvbih1c2VyX2lkLAorCQkJCQkJCQkJb3JnYW5pc2F0aW9uX2lkKTsKKworCQkJCQlsb2cuZGVidWcoIm91OiAiICsgb3UpOworCisJCQkJCWlmIChvdSAhPSBudWxsKSB7CisJCQkJCQlpZiAob3UuZ2V0SXNNb2RlcmF0b3IoKSAhPSBudWxsICYmIG91LmdldElzTW9kZXJhdG9yKCkpIHsKKwkJCQkJCQlyZXR1cm4gMkw7CisJCQkJCQl9IGVsc2UgeworCQkJCQkJCXJldHVybiB1cy5nZXRMZXZlbF9pZCgpOworCQkJCQkJfQorCQkJCQl9IGVsc2UgeworCQkJCQkJcmV0dXJuIHVzLmdldExldmVsX2lkKCk7CisJCQkJCX0KKwkJCQl9CisKKwkJCX0gZWxzZSB7CisJCQkJcmV0dXJuIC0xTDsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZ2V0VXNlckxldmVsQnlJRF0iLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCS8qKgorCSAqIE1ldGhvZCB0byByZWdpc3RlciBhIG5ldyBVc2VyLCBVc2VyIHdpbGwgYXV0b21hdGljYWxseSBiZSBhZGRlZCB0byB0aGUKKwkgKiBkZWZhdWx0IHVzZXJfbGV2ZWwoMSkgbmV3IHVzZXJzIHdpbGwgYmUgYXV0b21hdGljYWxseSBhZGRlZCB0byB0aGUKKwkgKiBPcmdhbmlzYXRpb24gd2l0aCB0aGUgaWQgc3BlY2lmaWVkIGluIHRoZSBjb25maWd1cmF0aW9uIHZhbHVlCisJICogZGVmYXVsdF9kb21haW5faWQKKwkgKiAKKwkgKiBAcGFyYW0gdXNlcl9sZXZlbAorCSAqIEBwYXJhbSBsZXZlbF9pZAorCSAqIEBwYXJhbSBhdmFpbGlibGUKKwkgKiBAcGFyYW0gc3RhdHVzCisJICogQHBhcmFtIGxvZ2luCisJICogQHBhcmFtIFVzZXJwYXNzCisJICogQHBhcmFtIGxhc3RuYW1lCisJICogQHBhcmFtIGZpcnN0bmFtZQorCSAqIEBwYXJhbSBlbWFpbAorCSAqIEBwYXJhbSBhZ2UKKwkgKiBAcGFyYW0gc3RyZWV0CisJICogQHBhcmFtIGFkZGl0aW9uYWxuYW1lCisJICogQHBhcmFtIGZheAorCSAqIEBwYXJhbSB6aXAKKwkgKiBAcGFyYW0gc3RhdGVzX2lkCisJICogQHBhcmFtIHRvd24KKwkgKiBAcGFyYW0gbGFuZ3VhZ2VfaWQKKwkgKiBAcmV0dXJuCisJICovCisJcHVibGljIExvbmcgcmVnaXN0ZXJVc2VyKFN0cmluZyBsb2dpbiwgU3RyaW5nIFVzZXJwYXNzLCBTdHJpbmcgbGFzdG5hbWUsCisJCQlTdHJpbmcgZmlyc3RuYW1lLCBTdHJpbmcgZW1haWwsIERhdGUgYWdlLCBTdHJpbmcgc3RyZWV0LAorCQkJU3RyaW5nIGFkZGl0aW9uYWxuYW1lLCBTdHJpbmcgZmF4LCBTdHJpbmcgemlwLCBsb25nIHN0YXRlc19pZCwKKwkJCVN0cmluZyB0b3duLCBsb25nIGxhbmd1YWdlX2lkLCBTdHJpbmcgcGhvbmUsIGJvb2xlYW4gc2VuZFNNUywgU3RyaW5nIGJhc2VVUkwsCisJCQlib29sZWFuIGdlbmVyYXRlU2lwVXNlckRhdGEsIFN0cmluZyBqTmFtZVRpbWVab25lKSB7CisJCQorCQlib29sZWFuIHNlbmRDb25maXJtYXRpb24gPSBiYXNlVVJMICE9IG51bGwKKwkJCQkmJiAhYmFzZVVSTC5pc0VtcHR5KCkKKwkJCQkmJiAxID09IGNvbmZpZ3VyYXRpb25EYW8uZ2V0Q29uZlZhbHVlKAorCQkJCQkJInNlbmRFbWFpbFdpdGhWZXJmaWNhdGlvbkNvZGUiLCBJbnRlZ2VyLmNsYXNzLCAiMCIpOworCQkKKwkJcmV0dXJuIHJlZ2lzdGVyVXNlcihsb2dpbiwgVXNlcnBhc3MsIGxhc3RuYW1lLCBmaXJzdG5hbWUsIGVtYWlsLCBhZ2UsCisJCQkJc3RyZWV0LCBhZGRpdGlvbmFsbmFtZSwgZmF4LCB6aXAsIHN0YXRlc19pZCwgdG93biwgbGFuZ3VhZ2VfaWQsCisJCQkJcGhvbmUsIHNlbmRTTVMsIGJhc2VVUkwsIGdlbmVyYXRlU2lwVXNlckRhdGEsIGpOYW1lVGltZVpvbmUsIHNlbmRDb25maXJtYXRpb24pOworCX0KKworCXB1YmxpYyBMb25nIHJlZ2lzdGVyVXNlck5vRW1haWwoU3RyaW5nIGxvZ2luLCBTdHJpbmcgVXNlcnBhc3MsCisJCQlTdHJpbmcgbGFzdG5hbWUsIFN0cmluZyBmaXJzdG5hbWUsIFN0cmluZyBlbWFpbCwgRGF0ZSBhZ2UsCisJCQlTdHJpbmcgc3RyZWV0LCBTdHJpbmcgYWRkaXRpb25hbG5hbWUsIFN0cmluZyBmYXgsIFN0cmluZyB6aXAsCisJCQlsb25nIHN0YXRlc19pZCwgU3RyaW5nIHRvd24sIGxvbmcgbGFuZ3VhZ2VfaWQsIFN0cmluZyBwaG9uZSwgYm9vbGVhbiBzZW5kU01TLCAKKwkJCWJvb2xlYW4gZ2VuZXJhdGVTaXBVc2VyRGF0YSwgU3RyaW5nIGpOYW1lVGltZVpvbmUpIHsKKwkJCisJCXJldHVybiByZWdpc3RlclVzZXIobG9naW4sIFVzZXJwYXNzLCBsYXN0bmFtZSwgZmlyc3RuYW1lLCBlbWFpbCwgYWdlLAorCQkJCXN0cmVldCwgYWRkaXRpb25hbG5hbWUsIGZheCwgemlwLCBzdGF0ZXNfaWQsIHRvd24sIGxhbmd1YWdlX2lkLAorCQkJCXBob25lLCBzZW5kU01TLCAiIiwgZ2VuZXJhdGVTaXBVc2VyRGF0YSwgak5hbWVUaW1lWm9uZSwgZmFsc2UpOworCX0KKworCXByaXZhdGUgTG9uZyByZWdpc3RlclVzZXIoU3RyaW5nIGxvZ2luLCBTdHJpbmcgVXNlcnBhc3MsIFN0cmluZyBsYXN0bmFtZSwKKwkJCVN0cmluZyBmaXJzdG5hbWUsIFN0cmluZyBlbWFpbCwgRGF0ZSBhZ2UsIFN0cmluZyBzdHJlZXQsCisJCQlTdHJpbmcgYWRkaXRpb25hbG5hbWUsIFN0cmluZyBmYXgsIFN0cmluZyB6aXAsIGxvbmcgc3RhdGVzX2lkLAorCQkJU3RyaW5nIHRvd24sIGxvbmcgbGFuZ3VhZ2VfaWQsIFN0cmluZyBwaG9uZSwgYm9vbGVhbiBzZW5kU01TLCBTdHJpbmcgYmFzZVVSTCwKKwkJCWJvb2xlYW4gZ2VuZXJhdGVTaXBVc2VyRGF0YSwgU3RyaW5nIGpOYW1lVGltZVpvbmUsIEJvb2xlYW4gc2VuZENvbmZpcm1hdGlvbikgeworCQl0cnkgeworCQkJLy8gQ2hlY2tzIGlmIEZyb250RW5kVXNlcnMgY2FuIHJlZ2lzdGVyCisJCQlpZiAoIjEiLmVxdWFscyhjb25maWd1cmF0aW9uRGFvLmdldENvbmZWYWx1ZSgKKwkJCQkJImFsbG93X2Zyb250ZW5kX3JlZ2lzdGVyIiwgU3RyaW5nLmNsYXNzLCAiMCIpKSkgeworCQkJCQorCQkJCS8vIFRPRE86IFJlYWQgYW5kIGdlbmVyYXRlIFNJUC1EYXRhIHZpYSBSUEMtSW50ZXJmYWNlIElzc3VlIDEwOTgKKworCQkJCUxvbmcgdXNlcl9pZCA9IHRoaXMucmVnaXN0ZXJVc2VySW5pdCgzLCAxLCAwLCAxLCBsb2dpbiwKKwkJCQkJCVVzZXJwYXNzLCBsYXN0bmFtZSwgZmlyc3RuYW1lLCBlbWFpbCwgYWdlLCBzdHJlZXQsCisJCQkJCQlhZGRpdGlvbmFsbmFtZSwgZmF4LCB6aXAsIHN0YXRlc19pZCwgdG93biwgbGFuZ3VhZ2VfaWQsCisJCQkJCQl0cnVlLCBBcnJheXMuYXNMaXN0KGNvbmZpZ3VyYXRpb25EYW8uZ2V0Q29uZlZhbHVlKAorCQkJCQkJCQkiZGVmYXVsdF9kb21haW5faWQiLCBMb25nLmNsYXNzLCBudWxsKSksIHBob25lLAorCQkJCQkJc2VuZFNNUywgYmFzZVVSTCwKKwkJCQkJCXNlbmRDb25maXJtYXRpb24sIGpOYW1lVGltZVpvbmUsIGZhbHNlLCAiIiwgIiIsIGZhbHNlLCB0cnVlKTsKKworCQkJCWlmIChzZW5kQ29uZmlybWF0aW9uKSB7CisJCQkJCXJldHVybiBuZXcgTG9uZygtNDApOworCQkJCX0KKworCQkJCXJldHVybiB1c2VyX2lkOworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJbG9nLmVycm9yKCJbcmVnaXN0ZXJVc2VyXSIsIGUpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCS8qKgorCSAqIEFkZHMgYSB1c2VyIGluY2x1ZGluZyBoaXMgYWRyZXNzLWRhdGEsYXV0aC1kYXRlLG1haWwtZGF0YQorCSAqIAorCSAqIEBwYXJhbSB1c2VyX2xldmVsCisJICogQHBhcmFtIGxldmVsX2lkCisJICogQHBhcmFtIGF2YWlsaWJsZQorCSAqIEBwYXJhbSBzdGF0dXMKKwkgKiBAcGFyYW0gbG9naW4KKwkgKiBAcGFyYW0gcGFzc3dvcmQKKwkgKiBAcGFyYW0gbGFzdG5hbWUKKwkgKiBAcGFyYW0gZmlyc3RuYW1lCisJICogQHBhcmFtIGVtYWlsCisJICogQHBhcmFtIGFnZQorCSAqIEBwYXJhbSBzdHJlZXQKKwkgKiBAcGFyYW0gYWRkaXRpb25hbG5hbWUKKwkgKiBAcGFyYW0gZmF4CisJICogQHBhcmFtIHppcAorCSAqIEBwYXJhbSBzdGF0ZXNfaWQKKwkgKiBAcGFyYW0gdG93bgorCSAqIEBwYXJhbSBsYW5ndWFnZV9pZAorCSAqIEBwYXJhbSBwaG9uZQorCSAqIEByZXR1cm4gbmV3IHVzZXJzX2lkIE9SIG51bGwgaWYgYW4gZXhjZXB0aW9uLCAtMSBpZiBhbiBlcnJvciwgLTQgaWYgbWFpbAorCSAqICAgICAgICAgYWxyZWFkeSB0YWtlbiwgLTUgaWYgdXNlcm5hbWUgYWxyZWFkeSB0YWtlbiwgLTMgaWYgbG9naW4gb3IgcGFzcworCSAqICAgICAgICAgb3IgbWFpbCBpcyBlbXB0eQorCSAqLworCXB1YmxpYyBMb25nIHJlZ2lzdGVyVXNlckluaXQobG9uZyB1c2VyX2xldmVsLCBsb25nIGxldmVsX2lkLCBpbnQgYXZhaWxpYmxlLAorCQkJaW50IHN0YXR1cywgU3RyaW5nIGxvZ2luLCBTdHJpbmcgcGFzc3dvcmQsIFN0cmluZyBsYXN0bmFtZSwKKwkJCVN0cmluZyBmaXJzdG5hbWUsIFN0cmluZyBlbWFpbCwgRGF0ZSBhZ2UsIFN0cmluZyBzdHJlZXQsCisJCQlTdHJpbmcgYWRkaXRpb25hbG5hbWUsIFN0cmluZyBmYXgsIFN0cmluZyB6aXAsIGxvbmcgc3RhdGVzX2lkLAorCQkJU3RyaW5nIHRvd24sIGxvbmcgbGFuZ3VhZ2VfaWQsIGJvb2xlYW4gc2VuZFdlbGNvbWVNZXNzYWdlLAorCQkJTGlzdDxMb25nPiBvcmdhbmlzYXRpb25zLCBTdHJpbmcgcGhvbmUsIGJvb2xlYW4gc2VuZFNNUywgU3RyaW5nIGJhc2VVUkwsCisJCQlCb29sZWFuIHNlbmRDb25maXJtYXRpb24sIFN0cmluZyBqbmFtZV90aW1lem9uZSwgQm9vbGVhbiBmb3JjZVRpbWVab25lQ2hlY2ssCisJCQlTdHJpbmcgdXNlck9mZmVycywgU3RyaW5nIHVzZXJTZWFyY2hzLCBCb29sZWFuIHNob3dDb250YWN0RGF0YSwKKwkJCUJvb2xlYW4gc2hvd0NvbnRhY3REYXRhVG9Db250YWN0cykgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCXJldHVybiByZWdpc3RlclVzZXJJbml0KHVzZXJfbGV2ZWwsIGxldmVsX2lkLCBhdmFpbGlibGUsCisJCQkJc3RhdHVzLCBsb2dpbiwgcGFzc3dvcmQsIGxhc3RuYW1lLAorCQkJCWZpcnN0bmFtZSwgZW1haWwsIGFnZSwgc3RyZWV0LAorCQkJCWFkZGl0aW9uYWxuYW1lLCBmYXgsIHppcCwgc3RhdGVzX2lkLAorCQkJCXRvd24sIGxhbmd1YWdlX2lkLCBzZW5kV2VsY29tZU1lc3NhZ2UsCisJCQkJb3JnYW5pc2F0aW9ucywgcGhvbmUsIHNlbmRTTVMsIGJhc2VVUkwsCisJCQkJc2VuZENvbmZpcm1hdGlvbiwKKwkJCQlvbVRpbWVab25lRGFvSW1wbC5nZXRPbVRpbWVab25lKGpuYW1lX3RpbWV6b25lKSwgZm9yY2VUaW1lWm9uZUNoZWNrLAorCQkJCXVzZXJPZmZlcnMsIHVzZXJTZWFyY2hzLCBzaG93Q29udGFjdERhdGEsCisJCQkJc2hvd0NvbnRhY3REYXRhVG9Db250YWN0cyk7CisJfQorCQorCS8qKgorCSAqIEBwYXJhbSB1c2VyX2xldmVsCisJICogQHBhcmFtIGxldmVsX2lkCisJICogQHBhcmFtIGF2YWlsaWJsZQorCSAqIEBwYXJhbSBzdGF0dXMKKwkgKiBAcGFyYW0gbG9naW4KKwkgKiBAcGFyYW0gcGFzc3dvcmQKKwkgKiBAcGFyYW0gbGFzdG5hbWUKKwkgKiBAcGFyYW0gZmlyc3RuYW1lCisJICogQHBhcmFtIGVtYWlsCisJICogQHBhcmFtIGFnZQorCSAqIEBwYXJhbSBzdHJlZXQKKwkgKiBAcGFyYW0gYWRkaXRpb25hbG5hbWUKKwkgKiBAcGFyYW0gZmF4CisJICogQHBhcmFtIHppcAorCSAqIEBwYXJhbSBzdGF0ZXNfaWQKKwkgKiBAcGFyYW0gdG93bgorCSAqIEBwYXJhbSBsYW5ndWFnZV9pZAorCSAqIEBwYXJhbSBzZW5kV2VsY29tZU1lc3NhZ2UKKwkgKiBAcGFyYW0gb3JnYW5pc2F0aW9ucworCSAqIEBwYXJhbSBwaG9uZQorCSAqIEBwYXJhbSBzZW5kU01TCisJICogQHBhcmFtIGJhc2VVUkwKKwkgKiBAcGFyYW0gc2VuZENvbmZpcm1hdGlvbgorCSAqIEBwYXJhbSB0aW1lem9uZQorCSAqIEBwYXJhbSBmb3JjZVRpbWVab25lQ2hlY2sKKwkgKiBAcGFyYW0gdXNlck9mZmVycworCSAqIEBwYXJhbSB1c2VyU2VhcmNocworCSAqIEBwYXJhbSBzaG93Q29udGFjdERhdGEKKwkgKiBAcGFyYW0gc2hvd0NvbnRhY3REYXRhVG9Db250YWN0cworCSAqIEByZXR1cm4gbmV3IHVzZXJzX2lkIE9SIG51bGwgaWYgYW4gZXhjZXB0aW9uLCAtMSBpZiBhbiBlcnJvciwgLTQgaWYgbWFpbAorCSAqICAgICAgICAgYWxyZWFkeSB0YWtlbiwgLTUgaWYgdXNlcm5hbWUgYWxyZWFkeSB0YWtlbiwgLTMgaWYgbG9naW4gb3IgcGFzcworCSAqICAgICAgICAgb3IgbWFpbCBpcyBlbXB0eQorCSAqIEB0aHJvd3MgRXhjZXB0aW9uCisJICovCisJcHVibGljIExvbmcgcmVnaXN0ZXJVc2VySW5pdChsb25nIHVzZXJfbGV2ZWwsIGxvbmcgbGV2ZWxfaWQsIGludCBhdmFpbGlibGUsCisJCQlpbnQgc3RhdHVzLCBTdHJpbmcgbG9naW4sIFN0cmluZyBwYXNzd29yZCwgU3RyaW5nIGxhc3RuYW1lLAorCQkJU3RyaW5nIGZpcnN0bmFtZSwgU3RyaW5nIGVtYWlsLCBEYXRlIGFnZSwgU3RyaW5nIHN0cmVldCwKKwkJCVN0cmluZyBhZGRpdGlvbmFsbmFtZSwgU3RyaW5nIGZheCwgU3RyaW5nIHppcCwgbG9uZyBzdGF0ZXNfaWQsCisJCQlTdHJpbmcgdG93biwgbG9uZyBsYW5ndWFnZV9pZCwgYm9vbGVhbiBzZW5kV2VsY29tZU1lc3NhZ2UsCisJCQlMaXN0PExvbmc+IG9yZ2FuaXNhdGlvbnMsIFN0cmluZyBwaG9uZSwgYm9vbGVhbiBzZW5kU01TLCBTdHJpbmcgYmFzZVVSTCwKKwkJCUJvb2xlYW4gc2VuZENvbmZpcm1hdGlvbiwKKwkJCU9tVGltZVpvbmUgdGltZXpvbmUsIEJvb2xlYW4gZm9yY2VUaW1lWm9uZUNoZWNrLAorCQkJU3RyaW5nIHVzZXJPZmZlcnMsIFN0cmluZyB1c2VyU2VhcmNocywgQm9vbGVhbiBzaG93Q29udGFjdERhdGEsCisJCQlCb29sZWFuIHNob3dDb250YWN0RGF0YVRvQ29udGFjdHMpIHRocm93cyBFeGNlcHRpb24geworCQkvLyBUT0RPOiBtYWtlIHBob25lIG51bWJlciBwZXJzaXN0ZW50CisJCS8vIFVzZXIgTGV2ZWwgbXVzdCBiZSBhdCBsZWFzdCBBZG1pbgorCQkvLyBNb2RlcmF0b3JzIHdpbGwgZ2V0IGEgdGVtcCB1cGRhdGUgb2YgdGhlcmUgVXNlckxldmVsIHRvIGFkZCBVc2VycyB0bworCQkvLyB0aGVpciBHcm91cAorCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja01vZExldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCUludGVnZXIgdXNlckxvZ2luTWluaW11bUxlbmd0aCA9IGNvbmZpZ3VyYXRpb25EYW8uZ2V0Q29uZlZhbHVlKAorCQkJCQkidXNlci5sb2dpbi5taW5pbXVtLmxlbmd0aCIsIEludGVnZXIuY2xhc3MsICI0Iik7CisJCQlpZiAodXNlckxvZ2luTWluaW11bUxlbmd0aCA9PSBudWxsKSB7CisJCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbigKKwkJCQkJCSJ1c2VyLmxvZ2luLm1pbmltdW0ubGVuZ3RoIHByb2JsZW0iKTsKKwkJCX0KKworCQkJLy8gQ2hlY2sgZm9yIHJlcXVpcmVkIGRhdGEKKwkJCWlmIChsb2dpbi5sZW5ndGgoKSA+PSB1c2VyTG9naW5NaW5pbXVtTGVuZ3RoLmludFZhbHVlKCkpIHsKKwkJCQkvLyBDaGVjayBmb3IgZHVwbGljYXRlcworCQkJCWJvb2xlYW4gY2hlY2tOYW1lID0gdXNlcnNEYW8uY2hlY2tVc2VyTG9naW4obG9naW4pOworCQkJCWJvb2xlYW4gY2hlY2tFbWFpbCA9IGVtYWlsTWFuYWdlbWVudC5jaGVja1VzZXJFTWFpbChlbWFpbCk7CisJCQkJaWYgKGNoZWNrTmFtZSAmJiBjaGVja0VtYWlsKSB7CisKKwkJCQkJU3RyaW5nIGhhc2ggPSBjcnlwdE1hbmFnZXIKKwkJCQkJCQkuZ2V0SW5zdGFuY2VPZkNyeXB0KCkKKwkJCQkJCQkuY3JlYXRlUGFzc1BocmFzZSgKKwkJCQkJCQkJCWxvZ2luCisJCQkJCQkJCQkJCSsgQ2FsZW5kYXJQYXR0ZXJucworCQkJCQkJCQkJCQkJCS5nZXREYXRlV2l0aFRpbWVCeU1pbGlTZWNvbmRzKG5ldyBEYXRlKCkpKTsKKwkJCQkJU3RyaW5nIGxpbmsgPSBiYXNlVVJMICsgImFjdGl2YXRlVXNlcj91PSIgKyBoYXNoOworCisJCQkJCWlmIChzZW5kV2VsY29tZU1lc3NhZ2UgJiYgZW1haWwubGVuZ3RoKCkgIT0gMCkgeworCQkJCQkJLy8gV2UgbmVlZCB0byBwYXNzIHRoZSBiYXNlVVJMIHRvIGNoZWNrIGlmIHRoaXMgaXMKKwkJCQkJCS8vIHJlYWxseSBzZXQgdG8gYmUgc2VuZAorCQkJCQkJU3RyaW5nIHNlbmRNYWlsID0gZW1haWxNYW5hZ2VtZW50LnNlbmRNYWlsKGxvZ2luLAorCQkJCQkJCQlwYXNzd29yZCwgZW1haWwsIGxpbmssIHNlbmRDb25maXJtYXRpb24pOworCQkJCQkJaWYgKCFzZW5kTWFpbC5lcXVhbHMoInN1Y2Nlc3MiKSkKKwkJCQkJCQlyZXR1cm4gbmV3IExvbmcoLTE5KTsKKwkJCQkJfQorCQkJCQlBZGRyZXNzIGFkciA9ICBuZXcgQWRkcmVzcygpOworCQkJCQlhZHIuc2V0U3RyZWV0KHN0cmVldCk7CisJCQkJCWFkci5zZXRaaXAoemlwKTsKKwkJCQkJYWRyLnNldFRvd24odG93bik7CisJCQkJCWFkci5zZXRTdGF0ZXMoc3RhdGVtYW5hZ2VtZW50LmdldFN0YXRlQnlJZChzdGF0ZXNfaWQpKTsKKwkJCQkJYWRyLnNldEFkZGl0aW9uYWxuYW1lKGFkZGl0aW9uYWxuYW1lKTsKKwkJCQkJYWRyLnNldENvbW1lbnQoIiIpOworCQkJCQlhZHIuc2V0RmF4KGZheCk7CisJCQkJCWFkci5zZXRQaG9uZShwaG9uZSk7CisJCQkJCWFkci5zZXRFbWFpbChlbWFpbCk7CisKKwkJCQkJLy8gSWYgdGhpcyB1c2VyIG5lZWRzIGZpcnN0IHRvIGNsaWNrIGhpcyBFLU1haWwgdmVyaWZpY2F0aW9uCisJCQkJCS8vIGNvZGUgdGhlbiBzZXQgdGhlIHN0YXR1cyB0byAwCisJCQkJCWlmIChzZW5kQ29uZmlybWF0aW9uKSB7CisJCQkJCQlzdGF0dXMgPSAwOworCQkJCQl9CisKKwkJCQkJTG9uZyB1c2VyX2lkID0gYWRkVXNlcihsZXZlbF9pZCwgYXZhaWxpYmxlLCBzdGF0dXMsCisJCQkJCQkJZmlyc3RuYW1lLCBsb2dpbiwgbGFzdG5hbWUsIGxhbmd1YWdlX2lkLCBwYXNzd29yZCwKKwkJCQkJCQlhZHIsIHNlbmRTTVMsIGFnZSwgaGFzaCwgdGltZXpvbmUsCisJCQkJCQkJZm9yY2VUaW1lWm9uZUNoZWNrLCB1c2VyT2ZmZXJzLCB1c2VyU2VhcmNocywKKwkJCQkJCQlzaG93Q29udGFjdERhdGEsIHNob3dDb250YWN0RGF0YVRvQ29udGFjdHMsIG9yZ2FuaXNhdGlvbnMpOworCQkJCQlsb2cuZGVidWcoIkFkZGVkIHVzZXItSWQgIiArIHVzZXJfaWQpOworCQkJCQlpZiAodXNlcl9pZCA9PSBudWxsKSB7CisJCQkJCQlyZXR1cm4gbmV3IExvbmcoLTExMSk7CisJCQkJCX0KKworCQkJCQkvKgorCQkJCQkgKiBMb25nIGFkcmVzc19lbWFpbHNfaWQgPQorCQkJCQkgKiBlbWFpbE1hbmFnZW1lbnQucmVnaXN0ZXJFbWFpbChlbWFpbCwgYWRkcmVzc19pZCwiIik7IGlmCisJCQkJCSAqIChhZHJlc3NfZW1haWxzX2lkPT1udWxsKSB7IHJldHVybiBuZXcgTG9uZygtMTEyKTsgfQorCQkJCQkgKi8KKworCQkJCQlpZiAoYWRyLmdldEFkcmVzc2VzX2lkKCkgPiAwICYmIHVzZXJfaWQgPiAwKSB7CisJCQkJCQlyZXR1cm4gdXNlcl9pZDsKKwkJCQkJfSBlbHNlIHsKKwkJCQkJCXJldHVybiBuZXcgTG9uZygtMTYpOworCQkJCQl9CisJCQkJfSBlbHNlIHsKKwkJCQkJaWYgKCFjaGVja05hbWUpIHsKKwkJCQkJCXJldHVybiBuZXcgTG9uZygtMTUpOworCQkJCQl9IGVsc2UgaWYgKCFjaGVja0VtYWlsKSB7CisJCQkJCQlyZXR1cm4gbmV3IExvbmcoLTE3KTsKKwkJCQkJfQorCQkJCX0KKwkJCX0gZWxzZSB7CisJCQkJcmV0dXJuIG5ldyBMb25nKC0xMyk7CisJCQl9CisJCX0KKwkJcmV0dXJuIG5ldyBMb25nKC0xKTsKKwl9CisKKwkvKioKKwkgKiBAYXV0aG9yIHN3YWduZXIgVGhpcyBNZXRoZG8gYWRkcyBhIFVzZXIgdG8gdGhlIFVzZXItVGFibGUKKwkgKiBAcGFyYW0gbGV2ZWxfaWQKKwkgKiAgICAgICAgICAgIFRoZSBVc2VyIExldmVsLCAxPVVzZXIsIDI9R3JvdXBBZG1pbi9Nb2RlcmF0b3IsCisJICogICAgICAgICAgICAzPVN5c3RlbUFkbWluL0FkbWluCisJICogQHBhcmFtIGF2YWlsaWJsZQorCSAqICAgICAgICAgICAgVGhlIHVzZXIgaXMgYWN0aXZhdGVkCisJICogQHBhcmFtIHN0YXR1cworCSAqICAgICAgICAgICAgVGhlIHVzZXIgaXMgbm90IGJsb2NrZWQgYnkgU3lzdGVtIGFkbWlucworCSAqIEBwYXJhbSBmaXJzdG5hbWUKKwkgKiBAcGFyYW0gbG9naW4KKwkgKiAgICAgICAgICAgIFVzZXJuYW1lIGZvciBsb2dpbgorCSAqIEBwYXJhbSBsYXN0bmFtZQorCSAqIEBwYXJhbSBsYW5ndWFnZV9pZAorCSAqIEBwYXJhbSBVc2VycGFzcworCSAqICAgICAgICAgICAgaXMgTUQ1LWNyeXB0ZWQKKwkgKiBAcGFyYW0gQWRkcmVzcyBhZHJlc3MKKwkgKiBAcmV0dXJuIHVzZXJfaWQgb3IgZXJyb3IgbnVsbAorCSAqLworCXB1YmxpYyBMb25nIGFkZFVzZXIobG9uZyBsZXZlbF9pZCwgaW50IGF2YWlsaWJsZSwgaW50IHN0YXR1cywKKwkJCVN0cmluZyBmaXJzdG5hbWUsIFN0cmluZyBsb2dpbiwgU3RyaW5nIGxhc3RuYW1lLCBsb25nIGxhbmd1YWdlX2lkLAorCQkJU3RyaW5nIHVzZXJwYXNzLCBBZGRyZXNzIGFkcmVzcywgYm9vbGVhbiBzZW5kU01TLCBEYXRlIGFnZSwgU3RyaW5nIGhhc2gsCisJCQlPbVRpbWVab25lIHRpbWV6b25lLAorCQkJQm9vbGVhbiBmb3JjZVRpbWVab25lQ2hlY2ssIFN0cmluZyB1c2VyT2ZmZXJzLCBTdHJpbmcgdXNlclNlYXJjaHMsCisJCQlCb29sZWFuIHNob3dDb250YWN0RGF0YSwgQm9vbGVhbiBzaG93Q29udGFjdERhdGFUb0NvbnRhY3RzLCBMaXN0PExvbmc+IG9yZ0lkcykgeworCQl0cnkgeworCisJCQlVc2VyIHVzZXJzID0gbmV3IFVzZXIoKTsKKwkJCXVzZXJzLnNldEZpcnN0bmFtZShmaXJzdG5hbWUpOworCQkJdXNlcnMuc2V0TG9naW4obG9naW4pOworCQkJdXNlcnMuc2V0TGFzdG5hbWUobGFzdG5hbWUpOworCQkJdXNlcnMuc2V0QWdlKGFnZSk7CisJCQl1c2Vycy5zZXRBZHJlc3NlcyhhZHJlc3MpOworCQkJdXNlcnMuc2V0U2VuZFNNUyhzZW5kU01TKTsKKwkJCXVzZXJzLnNldEF2YWlsaWJsZShhdmFpbGlibGUpOworCQkJdXNlcnMuc2V0TGFzdGxvZ2luKG5ldyBEYXRlKCkpOworCQkJdXNlcnMuc2V0TGFzdHRyYW5zKG5ldyBMb25nKDApKTsKKwkJCXVzZXJzLnNldExldmVsX2lkKGxldmVsX2lkKTsKKwkJCXVzZXJzLnNldFN0YXR1cyhzdGF0dXMpOworCQkJdXNlcnMuc2V0U2FsdXRhdGlvbnNfaWQoMUwpOworCQkJdXNlcnMuc2V0U3RhcnR0aW1lKG5ldyBEYXRlKCkpOworCQkJdXNlcnMuc2V0QWN0aXZhdGVoYXNoKGhhc2gpOworCQkJdXNlcnMuc2V0T21UaW1lWm9uZSh0aW1lem9uZSk7CisJCQl1c2Vycy5zZXRGb3JjZVRpbWVab25lQ2hlY2soZm9yY2VUaW1lWm9uZUNoZWNrKTsKKworCQkJdXNlcnMuc2V0VXNlck9mZmVycyh1c2VyT2ZmZXJzKTsKKwkJCXVzZXJzLnNldFVzZXJTZWFyY2hzKHVzZXJTZWFyY2hzKTsKKwkJCXVzZXJzLnNldFNob3dDb250YWN0RGF0YShzaG93Q29udGFjdERhdGEpOworCQkJdXNlcnMuc2V0U2hvd0NvbnRhY3REYXRhVG9Db250YWN0cyhzaG93Q29udGFjdERhdGFUb0NvbnRhY3RzKTsKKworCQkJLy8gdGhpcyBpcyBuZWVkZWQgY2F1c2UgdGhlIGxhbmd1YWdlIGlzIG5vdCBhIG5lZWRlZCBkYXRhIGF0CisJCQkvLyByZWdpc3RlcmluZworCQkJaWYgKGxhbmd1YWdlX2lkICE9IDApIHsKKwkJCQl1c2Vycy5zZXRMYW5ndWFnZV9pZChuZXcgTG9uZyhsYW5ndWFnZV9pZCkpOworCQkJfSBlbHNlIHsKKwkJCQl1c2Vycy5zZXRMYW5ndWFnZV9pZChudWxsKTsKKwkJCX0KKwkJCXVzZXJzLnVwZGF0ZVBhc3N3b3JkKGNyeXB0TWFuYWdlciwgY29uZmlndXJhdGlvbkRhbywgdXNlcnBhc3MpOworCQkJdXNlcnMuc2V0UmVnZGF0ZShuZXcgRGF0ZSgpKTsKKwkJCXVzZXJzLnNldERlbGV0ZWQoZmFsc2UpOworCQkJCisJCQkvL25ldyB1c2VyIGFkZCBvcmdhbml6YXRpb25zIHdpdGhvdXQgY2hlY2tzCisJCQlpZiAob3JnSWRzICE9IG51bGwpIHsKKwkJCQlMaXN0PE9yZ2FuaXNhdGlvbl9Vc2Vycz4gb3JnTGlzdCA9IHVzZXJzLmdldE9yZ2FuaXNhdGlvbl91c2VycygpOworCQkJCWZvciAoTG9uZyBvcmdJZCA6IG9yZ0lkcykgeworCQkJCQlvcmdMaXN0LmFkZChvcmdhbmlzYXRpb25NYW5hZ2VyLmdldE9yZ1VzZXIob3JnSWQsIG51bGwpKTsKKwkJCQl9CisJCQl9CisJCQlyZXR1cm4gYWRkVXNlcih1c2Vycyk7CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbcmVnaXN0ZXJVc2VyXSIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIFVzZXIgZ2V0VXNlckJ5RXh0ZXJuYWxJZEFuZFR5cGUoU3RyaW5nIGV4dGVybmFsVXNlcklkLAorCQkJU3RyaW5nIGV4dGVybmFsVXNlclR5cGUpIHsKKworCQl0cnkgeworCisJCQlTdHJpbmcgaHFsID0gInNlbGVjdCBjIGZyb20gVXNlciBhcyBjICIKKwkJCQkJKyAid2hlcmUgYy5leHRlcm5hbFVzZXJJZCBMSUtFIDpleHRlcm5hbFVzZXJJZCAiCisJCQkJCSsgIkFORCBjLmV4dGVybmFsVXNlclR5cGUgTElLRSA6ZXh0ZXJuYWxVc2VyVHlwZSAiCisJCQkJCSsgIkFORCBjLmRlbGV0ZWQgPD4gOmRlbGV0ZWQiOworCisJCQlUeXBlZFF1ZXJ5PFVzZXI+IHF1ZXJ5ID0gZW0uY3JlYXRlUXVlcnkoaHFsLCBVc2VyLmNsYXNzKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiZXh0ZXJuYWxVc2VySWQiLCBleHRlcm5hbFVzZXJJZCk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImV4dGVybmFsVXNlclR5cGUiLCBleHRlcm5hbFVzZXJUeXBlKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiZGVsZXRlZCIsIHRydWUpOworCisJCQlMaXN0PFVzZXI+IHVzZXJzID0gcXVlcnkuZ2V0UmVzdWx0TGlzdCgpOworCisJCQlpZiAodXNlcnMuc2l6ZSgpID4gMCkgeworCQkJCXJldHVybiB1c2Vycy5nZXQoMCk7CisJCQl9CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZ2V0VXNlckJ5RXh0ZXJuYWxJZEFuZFR5cGVdIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgTG9uZyBhZGRVc2VyV2l0aEV4dGVybmFsS2V5KGxvbmcgbGV2ZWxfaWQsIGludCBhdmFpbGlibGUsCisJCQlpbnQgc3RhdHVzLCBTdHJpbmcgZmlyc3RuYW1lLCBTdHJpbmcgbG9naW4sIFN0cmluZyBsYXN0bmFtZSwKKwkJCWxvbmcgbGFuZ3VhZ2VfaWQsIGJvb2xlYW4gZW1wdHlQYXNzLCBTdHJpbmcgdXNlcnBhc3MsIEFkZHJlc3MgYWRkcmVzcywgRGF0ZSBhZ2UsCisJCQlTdHJpbmcgaGFzaCwgU3RyaW5nIGV4dGVybmFsVXNlcklkLCBTdHJpbmcgZXh0ZXJuYWxVc2VyVHlwZSwKKwkJCWJvb2xlYW4gZ2VuZXJhdGVTaXBVc2VyRGF0YSwgU3RyaW5nIGVtYWlsLCBTdHJpbmcgak5hbWVUaW1lWm9uZSwKKwkJCVN0cmluZyBwaWN0dXJldXJpKSB7CisJCXRyeSB7CisJCQlVc2VyIHVzZXJzID0gbmV3IFVzZXIoKTsKKwkJCXVzZXJzLnNldEZpcnN0bmFtZShmaXJzdG5hbWUpOworCQkJdXNlcnMuc2V0TG9naW4obG9naW4pOworCQkJdXNlcnMuc2V0TGFzdG5hbWUobGFzdG5hbWUpOworCQkJdXNlcnMuc2V0QWdlKGFnZSk7CisKKwkJCWlmIChhZGRyZXNzICE9IG51bGwpIHsKKwkJCQl1c2Vycy5zZXRBZHJlc3NlcyhhZGRyZXNzKTsKKwkJCX0gZWxzZSB7CisJCQkJdXNlcnMuc2V0QWRyZXNzZXMoIiIsICIiLCAiIiwgc3RhdGVtYW5hZ2VtZW50LmdldFN0YXRlQnlJZCgxTCksICIiLAorCQkJCQkJIiIsICIiLCAiIiwgZW1haWwpOworCQkJfQorCisJCQl1c2Vycy5zZXRBdmFpbGlibGUoYXZhaWxpYmxlKTsKKwkJCXVzZXJzLnNldExhc3Rsb2dpbihuZXcgRGF0ZSgpKTsKKwkJCXVzZXJzLnNldExhc3R0cmFucyhuZXcgTG9uZygwKSk7CisJCQl1c2Vycy5zZXRMZXZlbF9pZChsZXZlbF9pZCk7CisJCQl1c2Vycy5zZXRTdGF0dXMoc3RhdHVzKTsKKwkJCXVzZXJzLnNldFNhbHV0YXRpb25zX2lkKDFMKTsKKwkJCXVzZXJzLnNldFN0YXJ0dGltZShuZXcgRGF0ZSgpKTsKKwkJCXVzZXJzLnNldEFjdGl2YXRlaGFzaChoYXNoKTsKKwkJCXVzZXJzLnNldFBpY3R1cmV1cmkocGljdHVyZXVyaSk7CisJCQl1c2Vycy5zZXRPbVRpbWVab25lKG9tVGltZVpvbmVEYW9JbXBsLmdldE9tVGltZVpvbmUoak5hbWVUaW1lWm9uZSkpOworCisJCQl1c2Vycy5zZXRFeHRlcm5hbFVzZXJJZChleHRlcm5hbFVzZXJJZCk7CisJCQl1c2Vycy5zZXRFeHRlcm5hbFVzZXJUeXBlKGV4dGVybmFsVXNlclR5cGUpOworCisJCQkvLyB0aGlzIGlzIG5lZWRlZCBjYXVzZSB0aGUgbGFuZ3VhZ2UgaXMgbm90IGEgbmVlZGVkIGRhdGEgYXQKKwkJCS8vIHJlZ2lzdGVyaW5nCisJCQlpZiAobGFuZ3VhZ2VfaWQgIT0gMCkgeworCQkJCXVzZXJzLnNldExhbmd1YWdlX2lkKG5ldyBMb25nKGxhbmd1YWdlX2lkKSk7CisJCQl9IGVsc2UgeworCQkJCXVzZXJzLnNldExhbmd1YWdlX2lkKG51bGwpOworCQkJfQorCQkJdXNlcnMudXBkYXRlUGFzc3dvcmQoY3J5cHRNYW5hZ2VyLCBjb25maWd1cmF0aW9uRGFvLCB1c2VycGFzcywgZW1wdHlQYXNzKTsKKwkJCXVzZXJzLnNldFJlZ2RhdGUobmV3IERhdGUoKSk7CisJCQl1c2Vycy5zZXREZWxldGVkKGZhbHNlKTsKKworCQkJZW0ucGVyc2lzdCh1c2Vycyk7CisKKwkJCWVtLnJlZnJlc2godXNlcnMpOworCisJCQkvLyBlbS5mbHVzaCgpOworCisJCQlsb25nIHVzZXJfaWQgPSB1c2Vycy5nZXRVc2VyX2lkKCk7CisKKwkJCXJldHVybiB1c2VyX2lkOworCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW3JlZ2lzdGVyVXNlcl0iLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMb25nIGFkZFVzZXIoVXNlciB1c3IpIHsKKwkJdHJ5IHsKKwkJCWVtLnBlcnNpc3QodXNyKTsKKwkJCS8vZW0ucmVmcmVzaCh1c3IpOworCQkJZW0uZmx1c2goKTsKKworCQkJcmV0dXJuIHVzci5nZXRVc2VyX2lkKCk7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2FkZFVzZXJdIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgdm9pZCBhZGRVc2VyTGV2ZWwoU3RyaW5nIGRlc2NyaXB0aW9uLCBpbnQgbXlTdGF0dXMpIHsKKwkJdHJ5IHsKKwkJCVVzZXJsZXZlbCB1c2xldmVsID0gbmV3IFVzZXJsZXZlbCgpOworCQkJdXNsZXZlbC5zZXRTdGFydHRpbWUobmV3IERhdGUoKSk7CisJCQl1c2xldmVsLnNldERlc2NyaXB0aW9uKGRlc2NyaXB0aW9uKTsKKwkJCXVzbGV2ZWwuc2V0U3RhdHVzY29kZShuZXcgSW50ZWdlcihteVN0YXR1cykpOworCQkJdXNsZXZlbC5zZXREZWxldGVkKGZhbHNlKTsKKwkJCWVtLm1lcmdlKHVzbGV2ZWwpOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIlthZGRVc2VyTGV2ZWxdIiwgZXgyKTsKKwkJfQorCX0KKworCS8qKgorCSAqIFVwZGF0ZSBVc2VyIGJ5IE9iamVjdAorCSAqIAorCSAqIEBwYXJhbSB1c2VyX2xldmVsCisJICogQHBhcmFtIHZhbHVlcworCSAqIEBwYXJhbSB1c2Vyc19pZAorCSAqIEByZXR1cm4KKwkgKi8KKworCXB1YmxpYyBMb25nIHNhdmVPclVwZGF0ZVVzZXIoTG9uZyB1c2VyX2xldmVsLCBPYmplY3RNYXA8PywgPz4gdmFsdWVzLAorCQkJTG9uZyB1c2Vyc19pZCkgeworCQl0cnkgeworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tBZG1pbkxldmVsKHVzZXJfbGV2ZWwpKSB7CisJCQkJTG9uZyByZXR1cm5Mb25nID0gbnVsbDsKKworCQkJCUxvbmcgdXNlcl9pZCA9IExvbmcucGFyc2VMb25nKHZhbHVlcy5nZXQoInVzZXJfaWQiKS50b1N0cmluZygpKTsKKworCQkJCWlmICh1c2VyX2lkICE9IG51bGwgJiYgdXNlcl9pZCA+IDApIHsKKworCQkJCQlyZXR1cm5Mb25nID0gdXNlcl9pZDsKKwkJCQkJVXNlciBzYXZlZFVzZXIgPSB1c2Vyc0Rhby5nZXQodXNlcl9pZCk7CisJCQkJCXNhdmVkVXNlci5zZXRBZ2UoKERhdGUpIHZhbHVlcy5nZXQoImFnZSIpKTsKKwkJCQkJc2F2ZWRVc2VyLnNldEZpcnN0bmFtZSh2YWx1ZXMuZ2V0KCJmaXJzdG5hbWUiKS50b1N0cmluZygpKTsKKwkJCQkJc2F2ZWRVc2VyLnNldExhc3RuYW1lKHZhbHVlcy5nZXQoImxhc3RuYW1lIikudG9TdHJpbmcoKSk7CisJCQkJCXNhdmVkVXNlci5zZXRTYWx1dGF0aW9uc19pZChMb25nLnBhcnNlTG9uZyh2YWx1ZXMuZ2V0KAorCQkJCQkJCSJzYWx1dGF0aW9uc19pZCIpLnRvU3RyaW5nKCkpKTsKKworCQkJCQlzYXZlZFVzZXIuc2V0TGFuZ3VhZ2VfaWQoTG9uZy5wYXJzZUxvbmcodmFsdWVzLmdldCgKKwkJCQkJCQkibGFuZ3VhZ2VzX2lkIikudG9TdHJpbmcoKSkpOworCQkJCQlzYXZlZFVzZXIuc2V0T21UaW1lWm9uZShvbVRpbWVab25lRGFvSW1wbAorCQkJCQkJCS5nZXRPbVRpbWVab25lKCh2YWx1ZXMuZ2V0KCJqbmFtZVRpbWVab25lIikKKwkJCQkJCQkJCS50b1N0cmluZygpKSkpOworCisJCQkJCVN0cmluZyBwYXNzd29yZCA9IHZhbHVlcy5nZXQoInBhc3N3b3JkIikudG9TdHJpbmcoKTsKKwkJCQkJaWYgKHBhc3N3b3JkICE9IG51bGwgJiYgIXBhc3N3b3JkLmlzRW1wdHkoKSkgeworCQkJCQkJc2F2ZWRVc2VyLnVwZGF0ZVBhc3N3b3JkKGNyeXB0TWFuYWdlciwgY29uZmlndXJhdGlvbkRhbywgcGFzc3dvcmQpOworCQkJCQl9CisKKwkJCQkJU3RyaW5nIGVtYWlsID0gdmFsdWVzLmdldCgiZW1haWwiKS50b1N0cmluZygpOworCisJCQkJCWlmICghZW1haWwuZXF1YWxzKHNhdmVkVXNlci5nZXRBZHJlc3NlcygpLmdldEVtYWlsKCkpKSB7CisJCQkJCQlib29sZWFuIGNoZWNrRW1haWwgPSBlbWFpbE1hbmFnZW1lbnQKKwkJCQkJCQkJLmNoZWNrVXNlckVNYWlsKGVtYWlsKTsKKwkJCQkJCWlmICghY2hlY2tFbWFpbCkgeworCQkJCQkJCS8vIG1haWwgYWxyZWFkeSB1c2VkIGJ5IGFub3RoZXIgdXNlciEKKwkJCQkJCQlyZXR1cm5Mb25nID0gbmV3IExvbmcoLTExKTsKKwkJCQkJCX0gZWxzZSB7CisJCQkJCQkJc2F2ZWRVc2VyLmdldEFkcmVzc2VzKCkuc2V0RW1haWwoZW1haWwpOworCQkJCQkJfQorCQkJCQl9CisKKwkJCQkJU3RyaW5nIHBob25lID0gdmFsdWVzLmdldCgicGhvbmUiKS50b1N0cmluZygpOworCQkJCQlzYXZlZFVzZXIuZ2V0QWRyZXNzZXMoKS5zZXRQaG9uZShwaG9uZSk7CisJCQkJCXNhdmVkVXNlci5nZXRBZHJlc3NlcygpLnNldENvbW1lbnQoCisJCQkJCQkJdmFsdWVzLmdldCgiY29tbWVudCIpLnRvU3RyaW5nKCkpOworCQkJCQlzYXZlZFVzZXIuZ2V0QWRyZXNzZXMoKS5zZXRTdHJlZXQoCisJCQkJCQkJdmFsdWVzLmdldCgic3RyZWV0IikudG9TdHJpbmcoKSk7CisJCQkJCXNhdmVkVXNlci5nZXRBZHJlc3NlcygpLnNldFRvd24oCisJCQkJCQkJdmFsdWVzLmdldCgidG93biIpLnRvU3RyaW5nKCkpOworCQkJCQlzYXZlZFVzZXIuZ2V0QWRyZXNzZXMoKS5zZXRBZGRpdGlvbmFsbmFtZSgKKwkJCQkJCQl2YWx1ZXMuZ2V0KCJhZGRpdGlvbmFsbmFtZSIpLnRvU3RyaW5nKCkpOworCQkJCQlzYXZlZFVzZXIuZ2V0QWRyZXNzZXMoKQorCQkJCQkJCS5zZXRaaXAodmFsdWVzLmdldCgiemlwIikudG9TdHJpbmcoKSk7CisJCQkJCXNhdmVkVXNlci5zZXRTZW5kU01TKGZhbHNlKTsKKwkJCQkJc2F2ZWRVc2VyLnNldEZvcmNlVGltZVpvbmVDaGVjayhmYWxzZSk7CisJCQkJCXNhdmVkVXNlci5nZXRBZHJlc3NlcygpLnNldFN0YXRlcygKKwkJCQkJCQlzdGF0ZW1hbmFnZW1lbnQuZ2V0U3RhdGVCeUlkKExvbmcucGFyc2VMb25nKHZhbHVlcworCQkJCQkJCQkJLmdldCgic3RhdGVfaWQiKS50b1N0cmluZygpKSkpOworCisJCQkJCXNhdmVkVXNlci5zZXRTaG93Q29udGFjdERhdGEoQm9vbGVhbi52YWx1ZU9mKHZhbHVlcy5nZXQoCisJCQkJCQkJInNob3dDb250YWN0RGF0YSIpLnRvU3RyaW5nKCkpKTsKKwkJCQkJc2F2ZWRVc2VyLnNldFNob3dDb250YWN0RGF0YVRvQ29udGFjdHMoQm9vbGVhbgorCQkJCQkJCS52YWx1ZU9mKHZhbHVlcy5nZXQoInNob3dDb250YWN0RGF0YVRvQ29udGFjdHMiKQorCQkJCQkJCQkJLnRvU3RyaW5nKCkpKTsKKwkJCQkJc2F2ZWRVc2VyCisJCQkJCQkJLnNldFVzZXJPZmZlcnModmFsdWVzLmdldCgidXNlck9mZmVycyIpLnRvU3RyaW5nKCkpOworCQkJCQlzYXZlZFVzZXIuc2V0VXNlclNlYXJjaHModmFsdWVzLmdldCgidXNlclNlYXJjaHMiKQorCQkJCQkJCS50b1N0cmluZygpKTsKKworCQkJCQkvLyBzYXZlZFVzZXIuc2V0QWRyZXNzZXMoYWRkcmVzc21hbmFnZW1lbnQuZ2V0QWRyZXNzYnlJZCh1c2VyLmdldEFkcmVzc2VzKCkuZ2V0QWRyZXNzZXNfaWQoKSkpOworCisJCQkJCWlmIChzYXZlZFVzZXIuZ2V0VXNlcl9pZCgpID09IG51bGwpIHsKKwkJCQkJCWVtLnBlcnNpc3Qoc2F2ZWRVc2VyKTsKKwkJCQkJfSBlbHNlIHsKKwkJCQkJCWlmICghZW0uY29udGFpbnMoc2F2ZWRVc2VyKSkgeworCQkJCQkJCWVtLm1lcmdlKHNhdmVkVXNlcik7CisJCQkJCQl9CisJCQkJCX0KKworCQkJCQlyZXR1cm4gcmV0dXJuTG9uZzsKKwkJCQl9CisKKwkJCX0gZWxzZSB7CisJCQkJbG9nLmVycm9yKCJbc2F2ZU9yVXBkYXRlVXNlcl0gaW52YWxpZCBhdXRoICIgKyB1c2Vyc19pZCArICIgIgorCQkJCQkJKyBuZXcgRGF0ZSgpKTsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisJCQlsb2cuZXJyb3IoIltzYXZlT3JVcGRhdGVVc2VyXSIsIGV4KTsKKwkJfQorCisJCXJldHVybiBudWxsOworCX0KKworCS8qKgorCSAqIHJlc2V0IGEgdXNlcm5hbWUgYnkgYSBnaXZlbiBtYWlsIG9kZXIgbG9naW4gYnkgc2VuZGluZyBhIG1haWwgdG8gdGhlCisJICogcmVnaXN0ZXJlZCBFTWFpbC1BZGRyZXNzCisJICogCisJICogQHBhcmFtIGVtYWlsCisJICogQHBhcmFtIHVzZXJuYW1lCisJICogQHBhcmFtIGFwcExpbmsKKwkgKiBAcmV0dXJuCisJICovCisJcHVibGljIExvbmcgcmVzZXRVc2VyKFN0cmluZyBlbWFpbCwgU3RyaW5nIHVzZXJuYW1lLCBTdHJpbmcgYXBwTGluaykgeworCQl0cnkgeworCisJCQlsb2cuZGVidWcoInJlc2V0VXNlciAiICsgZW1haWwpOworCisJCQkvLyBjaGVjayBpZiBNYWlsIGdpdmVuCisJCQlpZiAoZW1haWwubGVuZ3RoKCkgPiAwKSB7CisJCQkJLy8gbG9nLmRlYnVnKCJnZXRBZHJlc3Nlc19pZCAiK2FkZHJfZS5nZXRBZHJlc3Nlc19pZCgpKTsKKwkJCQlVc2VyIHVzID0gdXNlcnNEYW8uZ2V0VXNlckJ5RW1haWwoZW1haWwpOworCQkJCWlmICh1cyAhPSBudWxsKSB7CisJCQkJCXRoaXMuc2VuZEhhc2hCeVVzZXIodXMsIGFwcExpbmspOworCQkJCQlyZXR1cm4gbmV3IExvbmcoLTQpOworCQkJCX0gZWxzZSB7CisJCQkJCXJldHVybiBuZXcgTG9uZygtOSk7CisJCQkJfQorCQkJfSBlbHNlIGlmICh1c2VybmFtZS5sZW5ndGgoKSA+IDApIHsKKwkJCQlVc2VyIHVzID0gdXNlcnNEYW8uZ2V0VXNlckJ5TmFtZSh1c2VybmFtZSk7CisJCQkJaWYgKHVzICE9IG51bGwpIHsKKwkJCQkJdGhpcy5zZW5kSGFzaEJ5VXNlcih1cywgYXBwTGluayk7CisJCQkJCXJldHVybiBuZXcgTG9uZygtNCk7CisJCQkJfSBlbHNlIHsKKwkJCQkJcmV0dXJuIG5ldyBMb25nKC0zKTsKKwkJCQl9CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCQlsb2cuZXJyb3IoIltyZXNldFVzZXJdIiwgZSk7CisJCQlyZXR1cm4gbmV3IExvbmcoLTEpOworCQl9CisJCXJldHVybiBuZXcgTG9uZygtMik7CisJfQorCisJcHJpdmF0ZSB2b2lkIHNlbmRIYXNoQnlVc2VyKFVzZXIgdXMsIFN0cmluZyBhcHBMaW5rKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkJU3RyaW5nIGxvZ2luRGF0YSA9IHVzLmdldExvZ2luKCkgKyBuZXcgRGF0ZSgpOworCQlsb2cuZGVidWcoIlVzZXI6ICIgKyB1cy5nZXRMb2dpbigpKTsKKwkJdXMuc2V0UmVzZXRoYXNoKGNyeXB0TWFuYWdlci5nZXRJbnN0YW5jZU9mQ3J5cHQoKS5jcmVhdGVQYXNzUGhyYXNlKAorCQkJCWxvZ2luRGF0YSkpOworCQl1c2Vyc0Rhby51cGRhdGUodXMsIC0xTCk7CisJCVN0cmluZyByZXNldF9saW5rID0gYXBwTGluayArICI/bHpwcm94aWVkPXNvbG8maGFzaD0iCisJCQkJKyB1cy5nZXRSZXNldGhhc2goKTsKKworCQlTdHJpbmcgZW1haWwgPSB1cy5nZXRBZHJlc3NlcygpLmdldEVtYWlsKCk7CisKKwkJTG9uZyBkZWZhdWx0X2xhbmdfaWQgPSBjb25maWd1cmF0aW9uRGFvLmdldENvbmZWYWx1ZSgiZGVmYXVsdF9sYW5nX2lkIiwgTG9uZy5jbGFzcywgIjEiKTsKKworCQlTdHJpbmcgdGVtcGxhdGUgPSByZXNldFBhc3N3b3JkVGVtcGxhdGUuZ2V0UmVzZXRQYXNzd29yZFRlbXBsYXRlKAorCQkJCXJlc2V0X2xpbmssIGRlZmF1bHRfbGFuZ19pZCk7CisKKwkJbWFpbEhhbmRsZXIuc2VuZChlbWFpbCwgZmllbGRNYW5hZ2VyLmdldFN0cmluZyg1MTdMLCBkZWZhdWx0X2xhbmdfaWQpLCB0ZW1wbGF0ZSk7CisJfQorCisJLyoqCisJICogCisJICogRmluZCBVc2VyIGJ5IElkCisJICovCisJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlwdWJsaWMgVXNlciBnZXRVc2VyQnlJZChMb25nIGlkKSB7CisJCWxvZy5kZWJ1ZygiVXNlcm1hbmFnZW1lbnQuZ2V0VXNlckJ5SWQiKTsKKworCQlpZiAoaWQgPT0gbnVsbCB8fCBpZCA8PSAwKSB7CisJCQlyZXR1cm4gbnVsbDsKKwkJfQorCQlDcml0ZXJpYUJ1aWxkZXIgY2IgPSBlbS5nZXRDcml0ZXJpYUJ1aWxkZXIoKTsKKwkJQ3JpdGVyaWFRdWVyeTxVc2VyPiBjcSA9IGNiLmNyZWF0ZVF1ZXJ5KFVzZXIuY2xhc3MpOworCQlSb290PFVzZXI+IGMgPSBjcS5mcm9tKFVzZXIuY2xhc3MpOworCQlQcmVkaWNhdGUgY29uZGl0aW9uID0gY2IuZXF1YWwoYy5nZXQoImRlbGV0ZWQiKSwgZmFsc2UpOworCQlQcmVkaWNhdGUgc3ViQ29uZGl0aW9uID0gY2IuZXF1YWwoYy5nZXQoInVzZXJfaWQiKSwgaWQpOworCQljcS53aGVyZShjb25kaXRpb24sIHN1YkNvbmRpdGlvbik7CisJCVR5cGVkUXVlcnk8VXNlcj4gcSA9IGVtLmNyZWF0ZVF1ZXJ5KGNxKTsKKwkJVXNlciB1ID0gbnVsbDsKKwkJdHJ5IHsKKwkJCXUgPSBxLmdldFNpbmdsZVJlc3VsdCgpOworCQl9IGNhdGNoIChOb1Jlc3VsdEV4Y2VwdGlvbiBlKSB7CisJCQkvLyB1PW51bGx9CisJCX0gY2F0Y2ggKE5vblVuaXF1ZVJlc3VsdEV4Y2VwdGlvbiBleCkgeworCQl9CisKKwkJcmV0dXJuIHU7CisJfQorCisJcHVibGljIFVzZXIgZ2V0VXNlckJ5SWRBbmREZWxldGVkKExvbmcgaWQpIHRocm93cyBFeGNlcHRpb24geworCQlsb2cuZGVidWcoIlVzZXJtYW5hZ2VtZW50LmdldFVzZXJCeUlkIik7CisKKwkJQ3JpdGVyaWFCdWlsZGVyIGNiID0gZW0uZ2V0Q3JpdGVyaWFCdWlsZGVyKCk7CisJCUNyaXRlcmlhUXVlcnk8VXNlcj4gY3EgPSBjYi5jcmVhdGVRdWVyeShVc2VyLmNsYXNzKTsKKwkJUm9vdDxVc2VyPiBjID0gY3EuZnJvbShVc2VyLmNsYXNzKTsKKwkJUHJlZGljYXRlIGNvbmRpdGlvbiA9IGNiLmVxdWFsKGMuZ2V0KCJ1c2VyX2lkIiksIGlkKTsKKwkJY3Eud2hlcmUoY29uZGl0aW9uKTsKKwkJVHlwZWRRdWVyeTxVc2VyPiBxID0gZW0uY3JlYXRlUXVlcnkoY3EpOworCQlVc2VyIHUgPSBudWxsOworCQl0cnkgeworCQkJdSA9IHEuZ2V0U2luZ2xlUmVzdWx0KCk7CisJCX0gY2F0Y2ggKE5vUmVzdWx0RXhjZXB0aW9uIGUpIHsKKwkJCS8vIHU9bnVsbH0KKwkJfQorCisJCXJldHVybiB1OworCisJfQorCisJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCS8qKgorCSAqIEBhdXRob3Igby5iZWNoZXJlciBGaW5kIFVzZXIgYnkgTG9naW5OYW1lICh0ZXN0IGV4aXN0ZW5jZSBvZiBhIGFjdGl2ZQorCSAqICAgICAgICAgdXNlciB3aXRoIGxvZ2luIC0gbmFtZQorCSAqLworCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJcHVibGljIFVzZXIgZ2V0VXNlckJ5TG9naW4oU3RyaW5nIGxvZ2luKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkJbG9nLmRlYnVnKCJVc2VybWFuYWdlbWVudC5nZXRVc2VyQnlMb2dpbiA6ICIgKyBsb2dpbik7CisKKwkJQ3JpdGVyaWFCdWlsZGVyIGNiID0gZW0uZ2V0Q3JpdGVyaWFCdWlsZGVyKCk7CisJCUNyaXRlcmlhUXVlcnk8VXNlcj4gY3EgPSBjYi5jcmVhdGVRdWVyeShVc2VyLmNsYXNzKTsKKwkJUm9vdDxVc2VyPiBjID0gY3EuZnJvbShVc2VyLmNsYXNzKTsKKwkJUHJlZGljYXRlIGNvbmRpdGlvbiA9IGNiLmVxdWFsKGMuZ2V0KCJkZWxldGVkIiksIGZhbHNlKTsKKwkJUHJlZGljYXRlIHN1YkNvbmRpdGlvbiA9IGNiLmVxdWFsKGMuZ2V0KCJsb2dpbiIpLCBsb2dpbik7CisJCWNxLndoZXJlKGNvbmRpdGlvbiwgc3ViQ29uZGl0aW9uKTsKKwkJVHlwZWRRdWVyeTxVc2VyPiBxID0gZW0uY3JlYXRlUXVlcnkoY3EpOworCQlVc2VyIHUgPSBudWxsOworCQl0cnkgeworCQkJdSA9IHEuZ2V0U2luZ2xlUmVzdWx0KCk7CisJCX0gY2F0Y2ggKE5vUmVzdWx0RXhjZXB0aW9uIGUpIHsKKwkJCS8vIHU9bnVsbH0KKwkJfQorCisJCXJldHVybiB1OworCisJfQorCisJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCS8qKgorCSAqIEBhdXRob3Igc3dhZ25lciBGaW5kIFVzZXIgYnkgTG9naW5OYW1lIG9yIEVNYWlsICh0ZXN0IGV4aXN0ZW5jZSBvZiBhCisJICogICAgICAgICBhY3RpdmUgdXNlciB3aXRoIGxvZ2luIC0gbmFtZQorCSAqLworCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJcHVibGljIFVzZXIgZ2V0VXNlckJ5TG9naW5PckVtYWlsKFN0cmluZyB1c2VyT3JFbWFpbCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCS8vIGxvZy5kZWJ1ZygiVXNlcm1hbmFnZW1lbnQuZ2V0VXNlckJ5TG9naW5PckVtYWlsIDogIiArIHVzZXJPckVtYWlsKTsKKworCQlTdHJpbmcgaHFsID0gIlNFTEVDVCBjIGZyb20gVXNlciBBUyBjICIKKwkJCQkrICJXSEVSRSAiCisJCQkJKyAiKGMubG9naW4gTElLRSA6dXNlck9yRW1haWwgT1IgYy5hZHJlc3Nlcy5lbWFpbCBMSUtFIDp1c2VyT3JFbWFpbCAgKSAiCisJCQkJKyAiQU5EIGMuZXh0ZXJuYWxVc2VySWQgSVMgTlVMTCAiICsgIkFORCBjLmRlbGV0ZWQgPD4gOmRlbGV0ZWQiOworCisJCVR5cGVkUXVlcnk8VXNlcj4gcXVlcnkgPSBlbS5jcmVhdGVRdWVyeShocWwsIFVzZXIuY2xhc3MpOworCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInVzZXJPckVtYWlsIiwgdXNlck9yRW1haWwpOworCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImRlbGV0ZWQiLCB0cnVlKTsKKworCQlMaXN0PFVzZXI+IGxsID0gcXVlcnkuZ2V0UmVzdWx0TGlzdCgpOworCisJCWlmIChsbC5zaXplKCkgPiAxKSB7CisJCQlsb2cuZXJyb3IoIkFMRVJUIDo6IFRoZXJlIGFyZSB0d28gdXNlcnMgaW4gdGhlIGRhdGFiYXNlIHRoYXQgaGF2ZSBlaXRoZXIgc2FtZSBsb2dpbiBvciBFbWFpbCAiKTsKKwkJCXJldHVybiBsbC5nZXQoMCk7CisJCQkvLyB0aHJvdyBuZXcKKwkJCS8vIEV4Y2VwdGlvbigiQUxFUlQgOjogVGhlcmUgYXJlIHR3byB1c2VycyBpbiB0aGUgZGF0YWJhc2UgdGhhdCBoYXZlIGVpdGhlciBzYW1lIGxvZ2luIG9yIEVtYWlsICIpOworCQl9IGVsc2UgaWYgKGxsLnNpemUoKSA9PSAxKSB7CisJCQlyZXR1cm4gbGwuZ2V0KDApOworCQl9IGVsc2UgeworCQkJcmV0dXJuIG51bGw7CisJCX0KKworCX0KKworCXB1YmxpYyBVc2VyIGdldFVzZXJCeUVtYWlsKFN0cmluZyB1c2VyT3JFbWFpbCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCWxvZy5kZWJ1ZygiVXNlcm1hbmFnZW1lbnQuZ2V0VXNlckJ5RW1haWwgOiAiICsgdXNlck9yRW1haWwpOworCisJCVN0cmluZyBocWwgPSAiU0VMRUNUIGMgZnJvbSBVc2VyIEFTIGMgIiArICJXSEVSRSAiCisJCQkJKyAiYy5hZHJlc3Nlcy5lbWFpbCBMSUtFIDp1c2VyT3JFbWFpbCI7CisKKwkJVHlwZWRRdWVyeTxVc2VyPiBxdWVyeSA9IGVtLmNyZWF0ZVF1ZXJ5KGhxbCwgVXNlci5jbGFzcyk7CisJCXF1ZXJ5LnNldFBhcmFtZXRlcigidXNlck9yRW1haWwiLCB1c2VyT3JFbWFpbCk7CisKKwkJTGlzdDxVc2VyPiBsbCA9IHF1ZXJ5LmdldFJlc3VsdExpc3QoKTsKKworCQlpZiAobGwuc2l6ZSgpID4gMSkgeworCQkJbG9nLmVycm9yKCJBTEVSVCA6OiBUaGVyZSBhcmUgdHdvIHVzZXJzIGluIHRoZSBkYXRhYmFzZSB0aGF0IGhhdmUgc2FtZSBFbWFpbCAiKTsKKwkJCXJldHVybiBsbC5nZXQoMCk7CisJCQkvLyB0aHJvdyBuZXcKKwkJCS8vIEV4Y2VwdGlvbigiQUxFUlQgOjogVGhlcmUgYXJlIHR3byB1c2VycyBpbiB0aGUgZGF0YWJhc2UgdGhhdCBoYXZlIGVpdGhlciBzYW1lIGxvZ2luIG9yIEVtYWlsICIpOworCQl9IGVsc2UgaWYgKGxsLnNpemUoKSA9PSAxKSB7CisJCQlyZXR1cm4gbGwuZ2V0KDApOworCQl9IGVsc2UgeworCQkJcmV0dXJuIG51bGw7CisJCX0KKworCX0KKworCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwkvKioKKwkgKiBAcGFyYW0gYWRtaW4KKwkgKiBAcGFyYW0gcm9vbV9pZAorCSAqIEByZXR1cm4KKwkgKi8KKwlwdWJsaWMgQm9vbGVhbiBraWNrVXNlckJ5U3RyZWFtSWQoU3RyaW5nIFNJRCwgTG9uZyByb29tX2lkKSB7CisJCXRyeSB7CisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSBnZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKworCQkJLy8gYWRtaW5zIG9ubHkKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrQWRtaW5MZXZlbCh1c2VyX2xldmVsKSkgeworCisJCQkJc2Vzc2lvbmRhdGFEYW8uY2xlYXJTZXNzaW9uQnlSb29tSWQocm9vbV9pZCk7CisKKwkJCQlmb3IgKENsaWVudCByY2wgOiBzZXNzaW9uTWFuYWdlci5nZXRDbGllbnRMaXN0QnlSb29tKHJvb21faWQpKSB7CisJCQkJCWlmIChyY2wgPT0gbnVsbCkgeworCQkJCQkJcmV0dXJuIHRydWU7CisJCQkJCX0KKwkJCQkJU3RyaW5nIHNjb3BlTmFtZSA9ICJoaWJlcm5hdGUiOworCQkJCQlpZiAocmNsLmdldFJvb21faWQoKSAhPSBudWxsKSB7CisJCQkJCQlzY29wZU5hbWUgPSByY2wuZ2V0Um9vbV9pZCgpLnRvU3RyaW5nKCk7CisJCQkJCX0KKwkJCQkJSVNjb3BlIGN1cnJlbnRTY29wZSA9IHNjb3BlQXBwbGljYXRpb25BZGFwdGVyCisJCQkJCQkJLmdldFJvb21TY29wZShzY29wZU5hbWUpOworCQkJCQlzY29wZUFwcGxpY2F0aW9uQWRhcHRlci5yb29tTGVhdmVCeVNjb3BlKHJjbCwgY3VycmVudFNjb3BlLCB0cnVlKTsKKworCQkJCQlIYXNoTWFwPEludGVnZXIsIFN0cmluZz4gbWVzc2FnZU9iaiA9IG5ldyBIYXNoTWFwPEludGVnZXIsIFN0cmluZz4oKTsKKwkJCQkJbWVzc2FnZU9iai5wdXQoMCwgImtpY2siKTsKKwkJCQkJc2NvcGVBcHBsaWNhdGlvbkFkYXB0ZXIuc2VuZE1lc3NhZ2VCeUlkKG1lc3NhZ2VPYmosCisJCQkJCQkJcmNsLmdldFN0cmVhbWlkKCksIGN1cnJlbnRTY29wZSk7CisKKwkJCQl9CisKKwkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltraWNrVXNlckJ5U3RyZWFtSWRdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgQm9vbGVhbiBraWNrVXNlckJ5UHVibGljU0lEKFN0cmluZyBTSUQsIFN0cmluZyBwdWJsaWNTSUQpIHsKKwkJdHJ5IHsKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IGdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCisJCQkvLyBhZG1pbnMgb25seQorCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tXZWJTZXJ2aWNlTGV2ZWwodXNlcl9sZXZlbCkpIHsKKworCQkJCUNsaWVudCByY2wgPSBzZXNzaW9uTWFuYWdlcgorCQkJCQkJLmdldENsaWVudEJ5UHVibGljU0lEKHB1YmxpY1NJRCwgZmFsc2UsIG51bGwpOworCisJCQkJaWYgKHJjbCA9PSBudWxsKSB7CisJCQkJCXJldHVybiB0cnVlOworCQkJCX0KKworCQkJCVN0cmluZyBzY29wZU5hbWUgPSAiaGliZXJuYXRlIjsKKwkJCQlpZiAocmNsLmdldFJvb21faWQoKSAhPSBudWxsKSB7CisJCQkJCXNjb3BlTmFtZSA9IHJjbC5nZXRSb29tX2lkKCkudG9TdHJpbmcoKTsKKwkJCQl9CisJCQkJSVNjb3BlIGN1cnJlbnRTY29wZSA9IHNjb3BlQXBwbGljYXRpb25BZGFwdGVyCisJCQkJCQkuZ2V0Um9vbVNjb3BlKHNjb3BlTmFtZSk7CisKKwkJCQlIYXNoTWFwPEludGVnZXIsIFN0cmluZz4gbWVzc2FnZU9iaiA9IG5ldyBIYXNoTWFwPEludGVnZXIsIFN0cmluZz4oKTsKKwkJCQltZXNzYWdlT2JqLnB1dCgwLCAia2ljayIpOworCQkJCXNjb3BlQXBwbGljYXRpb25BZGFwdGVyLnNlbmRNZXNzYWdlQnlJZChtZXNzYWdlT2JqLAorCQkJCQkJcmNsLmdldFN0cmVhbWlkKCksIGN1cnJlbnRTY29wZSk7CisKKwkJCQlzY29wZUFwcGxpY2F0aW9uQWRhcHRlci5yb29tTGVhdmVCeVNjb3BlKHJjbCwgY3VycmVudFNjb3BlLCB0cnVlKTsKKworCQkJCXJldHVybiB0cnVlOworCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2tpY2tVc2VyQnlTdHJlYW1JZF0iLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCS8qKgorCSAqIEBwYXJhbSBoYXNoCisJICogQHJldHVybgorCSAqLworCXB1YmxpYyBVc2VyIGdldFVzZXJCeUFjdGl2YXRpb25IYXNoKFN0cmluZyBoYXNoKSB7CisJCXRyeSB7CisJCQlTdHJpbmcgaHFsID0gIlNFTEVDVCB1IEZST00gVXNlciBhcyB1ICIKKwkJCQkJKyAiIHdoZXJlIHUuYWN0aXZhdGVoYXNoID0gOmFjdGl2YXRlaGFzaCIKKwkJCQkJKyAiIEFORCB1LmRlbGV0ZWQgPD4gOmRlbGV0ZWQiOworCQkJVHlwZWRRdWVyeTxVc2VyPiBxdWVyeSA9IGVtLmNyZWF0ZVF1ZXJ5KGhxbCwgVXNlci5jbGFzcyk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImFjdGl2YXRlaGFzaCIsIGhhc2gpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJkZWxldGVkIiwgdHJ1ZSk7CisJCQlVc2VyIHUgPSBudWxsOworCQkJdHJ5IHsKKwkJCQl1ID0gcXVlcnkuZ2V0U2luZ2xlUmVzdWx0KCk7CisJCQl9IGNhdGNoIChOb1Jlc3VsdEV4Y2VwdGlvbiBlKSB7CisJCQkJLy8gdT1udWxsfQorCQkJfQorCQkJcmV0dXJuIHU7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCQlsb2cuZXJyb3IoIltnZXRVc2VyQnlBY3RpdmF0aW9uSGFzaF0iLCBlKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKworCX0KKworCXB1YmxpYyB2b2lkIHVwZGF0ZVVzZXIoVXNlciB1c2VyKSB7CisJCXVzZXJzRGFvLnVwZGF0ZSh1c2VyLCBudWxsKTsKKwl9CisKKwkvKioKKwkgKiBAcGFyYW0gdXNlcl9sZXZlbAorCSAqIEBwYXJhbSBzdGFydAorCSAqIEBwYXJhbSBtYXgKKwkgKiBAcGFyYW0gb3JkZXJieQorCSAqIEBwYXJhbSBhc2MKKwkgKiBAcGFyYW0gc2VhcmNoCisJICogQHJldHVybgorCSAqLworCXB1YmxpYyBTZWFyY2hSZXN1bHQ8VXNlcj4gZ2V0VXNlcnNMaXN0V2l0aFNlYXJjaChMb25nIHVzZXJfbGV2ZWwsIGludCBzdGFydCwKKwkJCWludCBtYXgsIFN0cmluZyBvcmRlcmJ5LCBib29sZWFuIGFzYywgU3RyaW5nIHNlYXJjaCkgeworCQl0cnkgeworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tBZG1pbkxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlTdHJpbmcgaHFsID0gInNlbGVjdCBjIGZyb20gVXNlciBjICIKKwkJCQkJCSsgIndoZXJlIGMuZGVsZXRlZCA9IGZhbHNlICIgKyAiQU5EICgiCisJCQkJCQkrICJsb3dlcihjLmxvZ2luKSBMSUtFIDpzZWFyY2ggIgorCQkJCQkJKyAiT1IgbG93ZXIoYy5maXJzdG5hbWUpIExJS0UgOnNlYXJjaCAiCisJCQkJCQkrICJPUiBsb3dlcihjLmxhc3RuYW1lKSBMSUtFIDpzZWFyY2ggIiArICIpIjsKKworCQkJCWlmIChvcmRlcmJ5LnN0YXJ0c1dpdGgoImMuIikpIHsKKwkJCQkJaHFsICs9ICJPUkRFUiBCWSAiICsgb3JkZXJieTsKKwkJCQl9IGVsc2UgeworCQkJCQlocWwgKz0gIk9SREVSIEJZICIgKyAiYy4iICsgb3JkZXJieTsKKwkJCQl9CisKKwkJCQlpZiAoYXNjKSB7CisJCQkJCWhxbCArPSAiIEFTQyI7CisJCQkJfSBlbHNlIHsKKwkJCQkJaHFsICs9ICIgREVTQyI7CisJCQkJfQorCisJCQkJaWYgKHNlYXJjaC5sZW5ndGgoKSA9PSAwKSB7CisJCQkJCXNlYXJjaCA9ICIlIjsKKwkJCQl9IGVsc2UgeworCQkJCQlzZWFyY2ggPSAiJSIgKyBzZWFyY2ggKyAiJSI7CisJCQkJfQorCQkJCWxvZy5kZWJ1ZygiZ2V0VXNlcnNMaXN0IHNlYXJjaDogIiArIHNlYXJjaCk7CisKKwkJCQlTZWFyY2hSZXN1bHQ8VXNlcj4gc3Jlc3VsdCA9IG5ldyBTZWFyY2hSZXN1bHQ8VXNlcj4oKTsKKwkJCQlzcmVzdWx0LnNldE9iamVjdE5hbWUoVXNlci5jbGFzcy5nZXROYW1lKCkpOworCQkJCXNyZXN1bHQuc2V0UmVjb3Jkcyh1c2Vyc0RhbworCQkJCQkJLnNlbGVjdE1heEZyb21Vc2Vyc1dpdGhTZWFyY2goc2VhcmNoKSk7CisKKwkJCQkvLyBnZXQgYWxsIHVzZXJzCisJCQkJVHlwZWRRdWVyeTxVc2VyPiBxdWVyeSA9IGVtLmNyZWF0ZVF1ZXJ5KGhxbCwgVXNlci5jbGFzcyk7CisJCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJzZWFyY2giLCBTdHJpbmdVdGlscy5sb3dlckNhc2Uoc2VhcmNoKSk7CisJCQkJcXVlcnkuc2V0TWF4UmVzdWx0cyhtYXgpOworCQkJCXF1ZXJ5LnNldEZpcnN0UmVzdWx0KHN0YXJ0KTsKKworCQkJCXNyZXN1bHQuc2V0UmVzdWx0KHF1ZXJ5LmdldFJlc3VsdExpc3QoKSk7CisKKwkJCQlyZXR1cm4gc3Jlc3VsdDsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZ2V0VXNlcnNMaXN0XSAiICsgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgTGlzdDxVc2VyPiBzZWFyY2hVc2VyUHJvZmlsZShTdHJpbmcgc2VhcmNoVHh0LCBTdHJpbmcgdXNlck9mZmVycywKKwkJCVN0cmluZyB1c2VyU2VhcmNocywgU3RyaW5nIG9yZGVyQnksIGludCBzdGFydCwgaW50IG1heCwgYm9vbGVhbiBhc2MpIHsKKwkJdHJ5IHsKKworCQkJU3RyaW5nIGhxbCA9ICJzZWxlY3QgYyBmcm9tIFVzZXIgYyAiCisJCQkJCSsgIndoZXJlIGMuZGVsZXRlZCA9IGZhbHNlICI7CisKKwkJCWlmIChzZWFyY2hUeHQubGVuZ3RoKCkgIT0gMCAmJiB1c2VyT2ZmZXJzLmxlbmd0aCgpICE9IDAKKwkJCQkJJiYgdXNlclNlYXJjaHMubGVuZ3RoKCkgIT0gMCkgeworCisJCQkJaHFsICs9ICJBTkQgIiArICIoIiArICIoIiArICJsb3dlcihjLmxvZ2luKSBMSUtFIDpzZWFyY2ggIgorCQkJCQkJKyAiT1IgbG93ZXIoYy5maXJzdG5hbWUpIExJS0UgOnNlYXJjaCAiCisJCQkJCQkrICJPUiBsb3dlcihjLmxhc3RuYW1lKSBMSUtFIDpzZWFyY2ggIgorCQkJCQkJKyAiT1IgbG93ZXIoYy5hZHJlc3Nlcy5lbWFpbCkgTElLRSA6c2VhcmNoICIKKwkJCQkJCSsgIk9SIGxvd2VyKGMuYWRyZXNzZXMudG93bikgTElLRSA6c2VhcmNoICIgKyAiKSIKKwkJCQkJCSsgIkFORCIgKyAiKCIgKyAibG93ZXIoYy51c2VyT2ZmZXJzKSBMSUtFIDp1c2VyT2ZmZXJzICIKKwkJCQkJCSsgIikiICsgIkFORCIgKyAiKCIKKwkJCQkJCSsgImxvd2VyKGMudXNlclNlYXJjaHMpIExJS0UgOnVzZXJTZWFyY2hzICIgKyAiKSIgKyAiKSI7CisKKwkJCX0gZWxzZSBpZiAoc2VhcmNoVHh0Lmxlbmd0aCgpICE9IDAgJiYgdXNlck9mZmVycy5sZW5ndGgoKSAhPSAwKSB7CisKKwkJCQlocWwgKz0gIkFORCAiICsgIigiICsgIigiICsgImxvd2VyKGMubG9naW4pIExJS0UgOnNlYXJjaCAiCisJCQkJCQkrICJPUiBsb3dlcihjLmZpcnN0bmFtZSkgTElLRSA6c2VhcmNoICIKKwkJCQkJCSsgIk9SIGxvd2VyKGMubGFzdG5hbWUpIExJS0UgOnNlYXJjaCAiCisJCQkJCQkrICJPUiBsb3dlcihjLmFkcmVzc2VzLmVtYWlsKSBMSUtFIDpzZWFyY2ggIgorCQkJCQkJKyAiT1IgbG93ZXIoYy5hZHJlc3Nlcy50b3duKSBMSUtFIDpzZWFyY2ggIiArICIpIgorCQkJCQkJKyAiQU5EIiArICIoIiArICJsb3dlcihjLnVzZXJPZmZlcnMpIExJS0UgOnVzZXJPZmZlcnMgIgorCQkJCQkJKyAiKSIgKyAiKSI7CisKKwkJCX0gZWxzZSBpZiAoc2VhcmNoVHh0Lmxlbmd0aCgpICE9IDAgJiYgdXNlclNlYXJjaHMubGVuZ3RoKCkgIT0gMCkgeworCisJCQkJaHFsICs9ICJBTkQgIiArICIoIiArICIoIiArICJsb3dlcihjLmxvZ2luKSBMSUtFIDpzZWFyY2ggIgorCQkJCQkJKyAiT1IgbG93ZXIoYy5maXJzdG5hbWUpIExJS0UgOnNlYXJjaCAiCisJCQkJCQkrICJPUiBsb3dlcihjLmxhc3RuYW1lKSBMSUtFIDpzZWFyY2ggIgorCQkJCQkJKyAiT1IgbG93ZXIoYy5hZHJlc3Nlcy5lbWFpbCkgTElLRSA6c2VhcmNoICIKKwkJCQkJCSsgIk9SIGxvd2VyKGMuYWRyZXNzZXMudG93bikgTElLRSA6c2VhcmNoICIgKyAiKSIKKwkJCQkJCSsgIkFORCIgKyAiKCIKKwkJCQkJCSsgImxvd2VyKGMudXNlclNlYXJjaHMpIExJS0UgOnVzZXJTZWFyY2hzICIgKyAiKSIgKyAiKSI7CisKKwkJCX0gZWxzZSBpZiAodXNlck9mZmVycy5sZW5ndGgoKSAhPSAwICYmIHVzZXJTZWFyY2hzLmxlbmd0aCgpICE9IDApIHsKKworCQkJCWhxbCArPSAiQU5EICIgKyAiKCIgKyAiKCIKKwkJCQkJCSsgImxvd2VyKGMudXNlck9mZmVycykgTElLRSA6dXNlck9mZmVycyAiICsgIikiICsgIkFORCIKKwkJCQkJCSsgIigiICsgImxvd2VyKGMudXNlclNlYXJjaHMpIExJS0UgOnVzZXJTZWFyY2hzICIgKyAiKSIKKwkJCQkJCSsgIikiOworCisJCQl9IGVsc2UgaWYgKHNlYXJjaFR4dC5sZW5ndGgoKSAhPSAwKSB7CisKKwkJCQlocWwgKz0gIkFORCAiICsgIigiICsgIigiICsgImxvd2VyKGMubG9naW4pIExJS0UgOnNlYXJjaCAiCisJCQkJCQkrICJPUiBsb3dlcihjLmZpcnN0bmFtZSkgTElLRSA6c2VhcmNoICIKKwkJCQkJCSsgIk9SIGxvd2VyKGMubGFzdG5hbWUpIExJS0UgOnNlYXJjaCAiCisJCQkJCQkrICJPUiBsb3dlcihjLmFkcmVzc2VzLmVtYWlsKSBMSUtFIDpzZWFyY2ggIgorCQkJCQkJKyAiT1IgbG93ZXIoYy5hZHJlc3Nlcy50b3duKSBMSUtFIDpzZWFyY2ggIiArICIpIiArICIpIjsKKworCQkJfSBlbHNlIGlmICh1c2VyT2ZmZXJzLmxlbmd0aCgpICE9IDApIHsKKworCQkJCWhxbCArPSAiQU5EICIgKyAiKCIgKyAiKCIKKwkJCQkJCSsgImxvd2VyKGMudXNlck9mZmVycykgTElLRSA6dXNlck9mZmVycyAiICsgIikiICsgIikiOworCisJCQl9IGVsc2UgaWYgKHVzZXJTZWFyY2hzLmxlbmd0aCgpICE9IDApIHsKKworCQkJCWhxbCArPSAiQU5EICIgKyAiKCIgKyAiKCIKKwkJCQkJCSsgImxvd2VyKGMudXNlclNlYXJjaHMpIExJS0UgOnVzZXJTZWFyY2hzICIgKyAiKSIgKyAiKSI7CisKKwkJCX0KKworCQkJaHFsICs9ICIgT1JERVIgQlkgIiArIG9yZGVyQnk7CisKKwkJCWlmIChhc2MpIHsKKwkJCQlocWwgKz0gIiBBU0MiOworCQkJfSBlbHNlIHsKKwkJCQlocWwgKz0gIiBERVNDIjsKKwkJCX0KKworCQkJaWYgKHNlYXJjaFR4dC5sZW5ndGgoKSAhPSAwKSB7CisJCQkJc2VhcmNoVHh0ID0gIiUiICsgc2VhcmNoVHh0ICsgIiUiOworCQkJfQorCisJCQlpZiAodXNlck9mZmVycy5sZW5ndGgoKSAhPSAwKSB7CisJCQkJdXNlck9mZmVycyA9ICIlIiArIHVzZXJPZmZlcnMgKyAiJSI7CisJCQl9CisKKwkJCWlmICh1c2VyU2VhcmNocy5sZW5ndGgoKSAhPSAwKSB7CisJCQkJdXNlclNlYXJjaHMgPSAiJSIgKyB1c2VyU2VhcmNocyArICIlIjsKKwkJCX0KKworCQkJbG9nLmRlYnVnKCJocWwgOjogIiArIGhxbCk7CisKKwkJCS8vIGdldCBhbGwgdXNlcnMKKwkJCVR5cGVkUXVlcnk8VXNlcj4gcXVlcnkgPSBlbS5jcmVhdGVRdWVyeShocWwsIFVzZXIuY2xhc3MpOworCisJCQlpZiAoc2VhcmNoVHh0Lmxlbmd0aCgpICE9IDAgJiYgdXNlck9mZmVycy5sZW5ndGgoKSAhPSAwCisJCQkJCSYmIHVzZXJTZWFyY2hzLmxlbmd0aCgpICE9IDApIHsKKworCQkJCXF1ZXJ5LnNldFBhcmFtZXRlcigic2VhcmNoIiwgU3RyaW5nVXRpbHMubG93ZXJDYXNlKHNlYXJjaFR4dCkpOworCQkJCXF1ZXJ5LnNldFBhcmFtZXRlcigidXNlck9mZmVycyIsCisJCQkJCQlTdHJpbmdVdGlscy5sb3dlckNhc2UodXNlck9mZmVycykpOworCQkJCXF1ZXJ5LnNldFBhcmFtZXRlcigidXNlclNlYXJjaHMiLAorCQkJCQkJU3RyaW5nVXRpbHMubG93ZXJDYXNlKHVzZXJTZWFyY2hzKSk7CisKKwkJCX0gZWxzZSBpZiAoc2VhcmNoVHh0Lmxlbmd0aCgpICE9IDAgJiYgdXNlck9mZmVycy5sZW5ndGgoKSAhPSAwKSB7CisKKwkJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInNlYXJjaCIsIFN0cmluZ1V0aWxzLmxvd2VyQ2FzZShzZWFyY2hUeHQpKTsKKwkJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInVzZXJPZmZlcnMiLAorCQkJCQkJU3RyaW5nVXRpbHMubG93ZXJDYXNlKHVzZXJPZmZlcnMpKTsKKworCQkJfSBlbHNlIGlmIChzZWFyY2hUeHQubGVuZ3RoKCkgIT0gMCAmJiB1c2VyU2VhcmNocy5sZW5ndGgoKSAhPSAwKSB7CisKKwkJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInNlYXJjaCIsIFN0cmluZ1V0aWxzLmxvd2VyQ2FzZShzZWFyY2hUeHQpKTsKKwkJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInVzZXJTZWFyY2hzIiwKKwkJCQkJCVN0cmluZ1V0aWxzLmxvd2VyQ2FzZSh1c2VyU2VhcmNocykpOworCisJCQl9IGVsc2UgaWYgKHVzZXJPZmZlcnMubGVuZ3RoKCkgIT0gMCAmJiB1c2VyU2VhcmNocy5sZW5ndGgoKSAhPSAwKSB7CisKKwkJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInVzZXJPZmZlcnMiLAorCQkJCQkJU3RyaW5nVXRpbHMubG93ZXJDYXNlKHVzZXJPZmZlcnMpKTsKKwkJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInVzZXJTZWFyY2hzIiwKKwkJCQkJCVN0cmluZ1V0aWxzLmxvd2VyQ2FzZSh1c2VyU2VhcmNocykpOworCisJCQl9IGVsc2UgaWYgKHNlYXJjaFR4dC5sZW5ndGgoKSAhPSAwKSB7CisKKwkJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInNlYXJjaCIsIFN0cmluZ1V0aWxzLmxvd2VyQ2FzZShzZWFyY2hUeHQpKTsKKworCQkJfSBlbHNlIGlmICh1c2VyT2ZmZXJzLmxlbmd0aCgpICE9IDApIHsKKworCQkJCXF1ZXJ5LnNldFBhcmFtZXRlcigidXNlck9mZmVycyIsCisJCQkJCQlTdHJpbmdVdGlscy5sb3dlckNhc2UodXNlck9mZmVycykpOworCisJCQl9IGVsc2UgaWYgKHVzZXJTZWFyY2hzLmxlbmd0aCgpICE9IDApIHsKKworCQkJCXF1ZXJ5LnNldFBhcmFtZXRlcigidXNlclNlYXJjaHMiLAorCQkJCQkJU3RyaW5nVXRpbHMubG93ZXJDYXNlKHVzZXJTZWFyY2hzKSk7CisKKwkJCX0KKworCQkJcXVlcnkuc2V0TWF4UmVzdWx0cyhtYXgpOworCQkJcXVlcnkuc2V0Rmlyc3RSZXN1bHQoc3RhcnQpOworCisJCQlMaXN0PFVzZXI+IHVzZXJMaXN0ID0gcXVlcnkuZ2V0UmVzdWx0TGlzdCgpOworCisJCQlyZXR1cm4gdXNlckxpc3Q7CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZ2V0VXNlcnNMaXN0XSAiLCBleDIpOworCQl9CisKKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIExvbmcgc2VhcmNoQ291bnRVc2VyUHJvZmlsZShTdHJpbmcgc2VhcmNoVHh0LCBTdHJpbmcgdXNlck9mZmVycywKKwkJCVN0cmluZyB1c2VyU2VhcmNocykgeworCQl0cnkgeworCisJCQlTdHJpbmcgaHFsID0gInNlbGVjdCBjb3VudChjLnVzZXJfaWQpIGZyb20gVXNlciBjICIKKwkJCQkJKyAid2hlcmUgYy5kZWxldGVkID0gZmFsc2UgIjsKKworCQkJaWYgKHNlYXJjaFR4dC5sZW5ndGgoKSAhPSAwICYmIHVzZXJPZmZlcnMubGVuZ3RoKCkgIT0gMAorCQkJCQkmJiB1c2VyU2VhcmNocy5sZW5ndGgoKSAhPSAwKSB7CisKKwkJCQlocWwgKz0gIkFORCAiICsgIigiICsgIigiICsgImxvd2VyKGMubG9naW4pIExJS0UgOnNlYXJjaCAiCisJCQkJCQkrICJPUiBsb3dlcihjLmZpcnN0bmFtZSkgTElLRSA6c2VhcmNoICIKKwkJCQkJCSsgIk9SIGxvd2VyKGMubGFzdG5hbWUpIExJS0UgOnNlYXJjaCAiCisJCQkJCQkrICJPUiBsb3dlcihjLmFkcmVzc2VzLmVtYWlsKSBMSUtFIDpzZWFyY2ggIgorCQkJCQkJKyAiT1IgbG93ZXIoYy5hZHJlc3Nlcy50b3duKSBMSUtFIDpzZWFyY2ggIiArICIpIgorCQkJCQkJKyAiQU5EIiArICIoIiArICJsb3dlcihjLnVzZXJPZmZlcnMpIExJS0UgOnVzZXJPZmZlcnMgIgorCQkJCQkJKyAiKSIgKyAiQU5EIiArICIoIgorCQkJCQkJKyAibG93ZXIoYy51c2VyU2VhcmNocykgTElLRSA6dXNlclNlYXJjaHMgIiArICIpIiArICIpIjsKKworCQkJfSBlbHNlIGlmIChzZWFyY2hUeHQubGVuZ3RoKCkgIT0gMCAmJiB1c2VyT2ZmZXJzLmxlbmd0aCgpICE9IDApIHsKKworCQkJCWhxbCArPSAiQU5EICIgKyAiKCIgKyAiKCIgKyAibG93ZXIoYy5sb2dpbikgTElLRSA6c2VhcmNoICIKKwkJCQkJCSsgIk9SIGxvd2VyKGMuZmlyc3RuYW1lKSBMSUtFIDpzZWFyY2ggIgorCQkJCQkJKyAiT1IgbG93ZXIoYy5sYXN0bmFtZSkgTElLRSA6c2VhcmNoKSAiCisJCQkJCQkrICJPUiBsb3dlcihjLmFkcmVzc2VzLmVtYWlsKSBMSUtFIDpzZWFyY2ggIgorCQkJCQkJKyAiT1IgbG93ZXIoYy5hZHJlc3Nlcy50b3duKSBMSUtFIDpzZWFyY2ggIiArICIpIgorCQkJCQkJKyAiQU5EIiArICIoIiArICJsb3dlcihjLnVzZXJPZmZlcnMpIExJS0UgOnVzZXJPZmZlcnMgIgorCQkJCQkJKyAiKSIgKyAiKSI7CisKKwkJCX0gZWxzZSBpZiAoc2VhcmNoVHh0Lmxlbmd0aCgpICE9IDAgJiYgdXNlclNlYXJjaHMubGVuZ3RoKCkgIT0gMCkgeworCisJCQkJaHFsICs9ICJBTkQgIiArICIoIiArICIoIiArICJsb3dlcihjLmxvZ2luKSBMSUtFIDpzZWFyY2ggIgorCQkJCQkJKyAiT1IgbG93ZXIoYy5maXJzdG5hbWUpIExJS0UgOnNlYXJjaCAiCisJCQkJCQkrICJPUiBsb3dlcihjLmxhc3RuYW1lKSBMSUtFIDpzZWFyY2ggIgorCQkJCQkJKyAiT1IgbG93ZXIoYy5hZHJlc3Nlcy5lbWFpbCkgTElLRSA6c2VhcmNoICIKKwkJCQkJCSsgIk9SIGxvd2VyKGMuYWRyZXNzZXMudG93bikgTElLRSA6c2VhcmNoICIgKyAiKSIKKwkJCQkJCSsgIkFORCIgKyAiKCIKKwkJCQkJCSsgImxvd2VyKGMudXNlclNlYXJjaHMpIExJS0UgOnVzZXJTZWFyY2hzICIgKyAiKSIgKyAiKSI7CisKKwkJCX0gZWxzZSBpZiAodXNlck9mZmVycy5sZW5ndGgoKSAhPSAwICYmIHVzZXJTZWFyY2hzLmxlbmd0aCgpICE9IDApIHsKKworCQkJCWhxbCArPSAiQU5EICIgKyAiKCIgKyAiKCIKKwkJCQkJCSsgImxvd2VyKGMudXNlck9mZmVycykgTElLRSA6dXNlck9mZmVycyAiICsgIikiICsgIkFORCIKKwkJCQkJCSsgIigiICsgImxvd2VyKGMudXNlclNlYXJjaHMpIExJS0UgOnVzZXJTZWFyY2hzICIgKyAiKSIKKwkJCQkJCSsgIikiOworCisJCQl9IGVsc2UgaWYgKHNlYXJjaFR4dC5sZW5ndGgoKSAhPSAwKSB7CisKKwkJCQlocWwgKz0gIkFORCAiICsgIigiICsgIigiICsgImxvd2VyKGMubG9naW4pIExJS0UgOnNlYXJjaCAiCisJCQkJCQkrICJPUiBsb3dlcihjLmZpcnN0bmFtZSkgTElLRSA6c2VhcmNoICIKKwkJCQkJCSsgIk9SIGxvd2VyKGMubGFzdG5hbWUpIExJS0UgOnNlYXJjaCAiCisJCQkJCQkrICJPUiBsb3dlcihjLmFkcmVzc2VzLmVtYWlsKSBMSUtFIDpzZWFyY2ggIgorCQkJCQkJKyAiT1IgbG93ZXIoYy5hZHJlc3Nlcy50b3duKSBMSUtFIDpzZWFyY2ggIiArICIpIiArICIpIjsKKworCQkJfSBlbHNlIGlmICh1c2VyT2ZmZXJzLmxlbmd0aCgpICE9IDApIHsKKworCQkJCWhxbCArPSAiQU5EICIgKyAiKCIgKyAiKCIKKwkJCQkJCSsgImxvd2VyKGMudXNlck9mZmVycykgTElLRSA6dXNlck9mZmVycyAiICsgIikiICsgIikiOworCisJCQl9IGVsc2UgaWYgKHVzZXJTZWFyY2hzLmxlbmd0aCgpICE9IDApIHsKKworCQkJCWhxbCArPSAiQU5EICIgKyAiKCIgKyAiKCIKKwkJCQkJCSsgImxvd2VyKGMudXNlclNlYXJjaHMpIExJS0UgOnVzZXJTZWFyY2hzICIgKyAiKSIgKyAiKSI7CisKKwkJCX0KKworCQkJaWYgKHNlYXJjaFR4dC5sZW5ndGgoKSAhPSAwKSB7CisJCQkJc2VhcmNoVHh0ID0gIiUiICsgc2VhcmNoVHh0ICsgIiUiOworCQkJfQorCisJCQlpZiAodXNlck9mZmVycy5sZW5ndGgoKSAhPSAwKSB7CisJCQkJdXNlck9mZmVycyA9ICIlIiArIHVzZXJPZmZlcnMgKyAiJSI7CisJCQl9CisKKwkJCWlmICh1c2VyU2VhcmNocy5sZW5ndGgoKSAhPSAwKSB7CisJCQkJdXNlclNlYXJjaHMgPSAiJSIgKyB1c2VyU2VhcmNocyArICIlIjsKKwkJCX0KKworCQkJbG9nLmRlYnVnKCJocWwgOjogIiArIGhxbCk7CisKKwkJCS8vIGdldCBhbGwgdXNlcnMKKwkJCVR5cGVkUXVlcnk8TG9uZz4gcXVlcnkgPSBlbS5jcmVhdGVRdWVyeShocWwsIExvbmcuY2xhc3MpOworCisJCQlpZiAoc2VhcmNoVHh0Lmxlbmd0aCgpICE9IDAgJiYgdXNlck9mZmVycy5sZW5ndGgoKSAhPSAwCisJCQkJCSYmIHVzZXJTZWFyY2hzLmxlbmd0aCgpICE9IDApIHsKKworCQkJCXF1ZXJ5LnNldFBhcmFtZXRlcigic2VhcmNoIiwgU3RyaW5nVXRpbHMubG93ZXJDYXNlKHNlYXJjaFR4dCkpOworCQkJCXF1ZXJ5LnNldFBhcmFtZXRlcigidXNlck9mZmVycyIsCisJCQkJCQlTdHJpbmdVdGlscy5sb3dlckNhc2UodXNlck9mZmVycykpOworCQkJCXF1ZXJ5LnNldFBhcmFtZXRlcigidXNlclNlYXJjaHMiLAorCQkJCQkJU3RyaW5nVXRpbHMubG93ZXJDYXNlKHVzZXJTZWFyY2hzKSk7CisKKwkJCX0gZWxzZSBpZiAoc2VhcmNoVHh0Lmxlbmd0aCgpICE9IDAgJiYgdXNlck9mZmVycy5sZW5ndGgoKSAhPSAwKSB7CisKKwkJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInNlYXJjaCIsIFN0cmluZ1V0aWxzLmxvd2VyQ2FzZShzZWFyY2hUeHQpKTsKKwkJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInVzZXJPZmZlcnMiLAorCQkJCQkJU3RyaW5nVXRpbHMubG93ZXJDYXNlKHVzZXJPZmZlcnMpKTsKKworCQkJfSBlbHNlIGlmIChzZWFyY2hUeHQubGVuZ3RoKCkgIT0gMCAmJiB1c2VyU2VhcmNocy5sZW5ndGgoKSAhPSAwKSB7CisKKwkJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInNlYXJjaCIsIFN0cmluZ1V0aWxzLmxvd2VyQ2FzZShzZWFyY2hUeHQpKTsKKwkJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInVzZXJTZWFyY2hzIiwKKwkJCQkJCVN0cmluZ1V0aWxzLmxvd2VyQ2FzZSh1c2VyU2VhcmNocykpOworCisJCQl9IGVsc2UgaWYgKHVzZXJPZmZlcnMubGVuZ3RoKCkgIT0gMCAmJiB1c2VyU2VhcmNocy5sZW5ndGgoKSAhPSAwKSB7CisKKwkJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInVzZXJPZmZlcnMiLAorCQkJCQkJU3RyaW5nVXRpbHMubG93ZXJDYXNlKHVzZXJPZmZlcnMpKTsKKwkJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInVzZXJTZWFyY2hzIiwKKwkJCQkJCVN0cmluZ1V0aWxzLmxvd2VyQ2FzZSh1c2VyU2VhcmNocykpOworCisJCQl9IGVsc2UgaWYgKHNlYXJjaFR4dC5sZW5ndGgoKSAhPSAwKSB7CisKKwkJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInNlYXJjaCIsIFN0cmluZ1V0aWxzLmxvd2VyQ2FzZShzZWFyY2hUeHQpKTsKKworCQkJfSBlbHNlIGlmICh1c2VyT2ZmZXJzLmxlbmd0aCgpICE9IDApIHsKKworCQkJCXF1ZXJ5LnNldFBhcmFtZXRlcigidXNlck9mZmVycyIsCisJCQkJCQlTdHJpbmdVdGlscy5sb3dlckNhc2UodXNlck9mZmVycykpOworCisJCQl9IGVsc2UgaWYgKHVzZXJTZWFyY2hzLmxlbmd0aCgpICE9IDApIHsKKworCQkJCXF1ZXJ5LnNldFBhcmFtZXRlcigidXNlclNlYXJjaHMiLAorCQkJCQkJU3RyaW5nVXRpbHMubG93ZXJDYXNlKHVzZXJTZWFyY2hzKSk7CisKKwkJCX0KKworCQkJTGlzdDxMb25nPiB1c2VyTGlzdCA9IHF1ZXJ5LmdldFJlc3VsdExpc3QoKTsKKworCQkJcmV0dXJuIHVzZXJMaXN0LmdldCgwKTsKKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRVc2Vyc0xpc3RdICIsIGV4Mik7CisJCX0KKworCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgTG9uZyBzZWFyY2hNYXhVc2VyUHJvZmlsZShTdHJpbmcgc2VhcmNoVHh0LCBTdHJpbmcgdXNlck9mZmVycywKKwkJCVN0cmluZyB1c2VyU2VhcmNocykgeworCQl0cnkgeworCisJCQlTdHJpbmcgaHFsID0gInNlbGVjdCBjb3VudChjLnVzZXJfaWQpIGZyb20gVXNlciBjICIKKwkJCQkJKyAid2hlcmUgYy5kZWxldGVkID0gZmFsc2UgIiArICJBTkQgIiArICIoIiArICIoIgorCQkJCQkrICJsb3dlcihjLmxvZ2luKSBMSUtFIDpzZWFyY2ggIgorCQkJCQkrICJPUiBsb3dlcihjLmZpcnN0bmFtZSkgTElLRSA6c2VhcmNoICIKKwkJCQkJKyAiT1IgbG93ZXIoYy5sYXN0bmFtZSkgTElLRSA6c2VhcmNoICIKKwkJCQkJKyAiT1IgbG93ZXIoYy5hZHJlc3Nlcy5lbWFpbCkgTElLRSA6c2VhcmNoICIKKwkJCQkJKyAiT1IgbG93ZXIoYy5hZHJlc3Nlcy50b3duKSBMSUtFIDpzZWFyY2ggIiArICIpIiArICJPUiIKKwkJCQkJKyAiKCIgKyAibG93ZXIoYy51c2VyT2ZmZXJzKSBMSUtFIDp1c2VyT2ZmZXJzICIgKyAiKSIKKwkJCQkJKyAiT1IiICsgIigiICsgImxvd2VyKGMudXNlclNlYXJjaHMpIExJS0UgOnVzZXJTZWFyY2hzICIKKwkJCQkJKyAiKSIgKyAiKSI7CisKKwkJCWlmIChzZWFyY2hUeHQubGVuZ3RoKCkgPT0gMCkgeworCQkJCXNlYXJjaFR4dCA9ICIlIjsKKwkJCX0gZWxzZSB7CisJCQkJc2VhcmNoVHh0ID0gIiUiICsgc2VhcmNoVHh0ICsgIiUiOworCQkJfQorCisJCQlpZiAodXNlck9mZmVycy5sZW5ndGgoKSA9PSAwKSB7CisJCQkJdXNlck9mZmVycyA9ICIlIjsKKwkJCX0gZWxzZSB7CisJCQkJdXNlck9mZmVycyA9ICIlIiArIHVzZXJPZmZlcnMgKyAiJSI7CisJCQl9CisKKwkJCWlmICh1c2VyU2VhcmNocy5sZW5ndGgoKSA9PSAwKSB7CisJCQkJdXNlclNlYXJjaHMgPSAiJSI7CisJCQl9IGVsc2UgeworCQkJCXVzZXJTZWFyY2hzID0gIiUiICsgdXNlclNlYXJjaHMgKyAiJSI7CisJCQl9CisKKwkJCS8vIGdldCBhbGwgdXNlcnMKKwkJCVR5cGVkUXVlcnk8TG9uZz4gcXVlcnkgPSBlbS5jcmVhdGVRdWVyeShocWwsIExvbmcuY2xhc3MpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJzZWFyY2giLCBTdHJpbmdVdGlscy5sb3dlckNhc2Uoc2VhcmNoVHh0KSk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInVzZXJPZmZlcnMiLCBTdHJpbmdVdGlscy5sb3dlckNhc2UodXNlck9mZmVycykpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJ1c2VyU2VhcmNocyIsCisJCQkJCVN0cmluZ1V0aWxzLmxvd2VyQ2FzZSh1c2VyU2VhcmNocykpOworCisJCQlMaXN0PExvbmc+IGxsID0gcXVlcnkuZ2V0UmVzdWx0TGlzdCgpOworCisJCQlyZXR1cm4gbGwuZ2V0KDApOworCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW3NlYXJjaE1heFVzZXJQcm9maWxlXSAiICsgZXgyKTsKKwkJfQorCisJCXJldHVybiBudWxsOworCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvdXNlci9kYW8vT3JnYW5pc2F0aW9uRGFvLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS91c2VyL2Rhby9PcmdhbmlzYXRpb25EYW8uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNzg3NTU4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvdXNlci9kYW8vT3JnYW5pc2F0aW9uRGFvLmphdmEKQEAgLTAsMCArMSwxMDYgQEAKKy8qDQorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAqIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLmRhbzsNCisNCitpbXBvcnQgamF2YS51dGlsLkRhdGU7DQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KKw0KK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHlNYW5hZ2VyOw0KK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Ob1Jlc3VsdEV4Y2VwdGlvbjsNCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuUGVyc2lzdGVuY2VDb250ZXh0Ow0KK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UeXBlZFF1ZXJ5Ow0KKw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLklEYXRhUHJvdmlkZXJEYW87DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmRvbWFpbi5PcmdhbmlzYXRpb247DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLkRhb0hlbHBlcjsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay50cmFuc2FjdGlvbi5hbm5vdGF0aW9uLlRyYW5zYWN0aW9uYWw7DQorDQorQFRyYW5zYWN0aW9uYWwNCitwdWJsaWMgY2xhc3MgT3JnYW5pc2F0aW9uRGFvIGltcGxlbWVudHMgSURhdGFQcm92aWRlckRhbzxPcmdhbmlzYXRpb24+IHsNCisJcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmdbXSBzZWFyY2hGaWVsZHMgPSB7Im5hbWUifTsNCisJQFBlcnNpc3RlbmNlQ29udGV4dA0KKwlwcml2YXRlIEVudGl0eU1hbmFnZXIgZW07DQorDQorCXB1YmxpYyBPcmdhbmlzYXRpb24gZ2V0KGxvbmcgaWQpIHsNCisJCVR5cGVkUXVlcnk8T3JnYW5pc2F0aW9uPiBxdWVyeSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoImdldE9yZ2FuaXNhdGlvbkJ5SWQiLCBPcmdhbmlzYXRpb24uY2xhc3MpOw0KKwkJcXVlcnkuc2V0UGFyYW1ldGVyKCJvcmdhbmlzYXRpb25faWQiLCBpZCk7DQorCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImRlbGV0ZWQiLCBmYWxzZSk7DQorCQlPcmdhbmlzYXRpb24gbyA9IG51bGw7DQorCQl0cnkgew0KKwkJCW8gPSBxdWVyeS5nZXRTaW5nbGVSZXN1bHQoKTsNCisJCX0gY2F0Y2ggKE5vUmVzdWx0RXhjZXB0aW9uIGUpIHsNCisJCQkvLyBvID0gbnVsbDsNCisJCX0NCisJCXJldHVybiBvOw0KKwl9DQorDQorCXB1YmxpYyBMaXN0PE9yZ2FuaXNhdGlvbj4gZ2V0KGludCBzdGFydCwgaW50IGNvdW50KSB7DQorCQlUeXBlZFF1ZXJ5PE9yZ2FuaXNhdGlvbj4gcSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoImdldE5vbmRlbGV0ZWRPcmdhbmlzYXRpb25zIiwgT3JnYW5pc2F0aW9uLmNsYXNzKTsNCisJCXEuc2V0Rmlyc3RSZXN1bHQoc3RhcnQpOw0KKwkJcS5zZXRNYXhSZXN1bHRzKGNvdW50KTsNCisJCXJldHVybiBxLmdldFJlc3VsdExpc3QoKTsNCisJfQ0KKw0KKwlwdWJsaWMgTGlzdDxPcmdhbmlzYXRpb24+IGdldChTdHJpbmcgc2VhcmNoLCBpbnQgc3RhcnQsIGludCBjb3VudCwgU3RyaW5nIHNvcnQpIHsNCisJCVR5cGVkUXVlcnk8T3JnYW5pc2F0aW9uPiBxID0gZW0uY3JlYXRlUXVlcnkoRGFvSGVscGVyLmdldFNlYXJjaFF1ZXJ5KCJPcmdhbmlzYXRpb24iLCAibyIsIHNlYXJjaCwgdHJ1ZSwgZmFsc2UsIHNvcnQsIHNlYXJjaEZpZWxkcyksIE9yZ2FuaXNhdGlvbi5jbGFzcyk7DQorCQlxLnNldEZpcnN0UmVzdWx0KHN0YXJ0KTsNCisJCXEuc2V0TWF4UmVzdWx0cyhjb3VudCk7DQorCQlyZXR1cm4gcS5nZXRSZXN1bHRMaXN0KCk7DQorCX0NCisJDQorCXB1YmxpYyBsb25nIGNvdW50KCkgew0KKwkJVHlwZWRRdWVyeTxMb25nPiBxID0gZW0uY3JlYXRlTmFtZWRRdWVyeSgiY291bnRPcmdhbmlzYXRpb25zIiwgTG9uZy5jbGFzcyk7DQorCQlyZXR1cm4gcS5nZXRTaW5nbGVSZXN1bHQoKTsNCisJfQ0KKw0KKwlwdWJsaWMgbG9uZyBjb3VudChTdHJpbmcgc2VhcmNoKSB7DQorCQlUeXBlZFF1ZXJ5PExvbmc+IHEgPSBlbS5jcmVhdGVRdWVyeShEYW9IZWxwZXIuZ2V0U2VhcmNoUXVlcnkoIk9yZ2FuaXNhdGlvbiIsICJvIiwgc2VhcmNoLCB0cnVlLCB0cnVlLCBudWxsLCBzZWFyY2hGaWVsZHMpLCBMb25nLmNsYXNzKTsNCisJCXJldHVybiBxLmdldFNpbmdsZVJlc3VsdCgpOw0KKwl9DQorCQ0KKwlwdWJsaWMgT3JnYW5pc2F0aW9uIHVwZGF0ZShPcmdhbmlzYXRpb24gZW50aXR5LCBMb25nIHVzZXJJZCkgew0KKwkJaWYgKGVudGl0eS5nZXRPcmdhbmlzYXRpb25faWQoKSA9PSBudWxsKSB7DQorCQkJaWYgKHVzZXJJZCAhPSBudWxsKSB7DQorCQkJCWVudGl0eS5zZXRJbnNlcnRlZGJ5KHVzZXJJZCk7DQorCQkJfQ0KKwkJCWVudGl0eS5zZXRTdGFydHRpbWUobmV3IERhdGUoKSk7DQorCQkJZW0ucGVyc2lzdChlbnRpdHkpOw0KKwkJfSBlbHNlIHsNCisJCQlpZiAodXNlcklkICE9IG51bGwpIHsNCisJCQkJZW50aXR5LnNldFVwZGF0ZWRieSh1c2VySWQpOw0KKwkJCX0NCisJCQllbnRpdHkuc2V0VXBkYXRldGltZShuZXcgRGF0ZSgpKTsNCisJCQllbS5tZXJnZShlbnRpdHkpOw0KKwkJfQ0KKwkJcmV0dXJuIGVudGl0eTsNCisJfQ0KKw0KKwlwdWJsaWMgdm9pZCBkZWxldGUoT3JnYW5pc2F0aW9uIGVudGl0eSwgTG9uZyB1c2VySWQpIHsNCisJCWVtLmNyZWF0ZU5hbWVkUXVlcnkoImRlbGV0ZVVzZXJzRnJvbU9yZ2FuaXNhdGlvbiIpDQorCQkJLnNldFBhcmFtZXRlcigiaWQiLCBlbnRpdHkuZ2V0T3JnYW5pc2F0aW9uX2lkKCkpDQorCQkJLmV4ZWN1dGVVcGRhdGUoKTsNCisNCisJCWVudGl0eS5zZXREZWxldGVkKHRydWUpOw0KKwkJaWYgKHVzZXJJZCAhPSBudWxsKSB7DQorCQkJZW50aXR5LnNldFVwZGF0ZWRieSh1c2VySWQpOw0KKwkJfQ0KKw0KKwkJZW0ubWVyZ2UoZW50aXR5KTsNCisJfQ0KK30NCmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS91c2VyL2Rhby9PcmdhbmlzYXRpb25Vc2VyRGFvLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS91c2VyL2Rhby9PcmdhbmlzYXRpb25Vc2VyRGFvLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTRkNzhmOQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL3VzZXIvZGFvL09yZ2FuaXNhdGlvblVzZXJEYW8uamF2YQpAQCAtMCwwICsxLDExOSBAQAorLyoNCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICogdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuZGFvOw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCisNCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5TWFuYWdlcjsNCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuUGVyc2lzdGVuY2VDb250ZXh0Ow0KK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UeXBlZFF1ZXJ5Ow0KKw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLklEYXRhUHJvdmlkZXJEYW87DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmRvbWFpbi5PcmdhbmlzYXRpb25fVXNlcnM7DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuVXNlcjsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMuRGFvSGVscGVyOw0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5BdXRvd2lyZWQ7DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsudHJhbnNhY3Rpb24uYW5ub3RhdGlvbi5UcmFuc2FjdGlvbmFsOw0KKw0KK0BUcmFuc2FjdGlvbmFsDQorcHVibGljIGNsYXNzIE9yZ2FuaXNhdGlvblVzZXJEYW8gaW1wbGVtZW50cyBJRGF0YVByb3ZpZGVyRGFvPE9yZ2FuaXNhdGlvbl9Vc2Vycz4gew0KKwlAUGVyc2lzdGVuY2VDb250ZXh0DQorCXByaXZhdGUgRW50aXR5TWFuYWdlciBlbTsNCisJQEF1dG93aXJlZA0KKwlwcml2YXRlIFVzZXJzRGFvIHVzZXJzRGFvOw0KKwlwdWJsaWMgZmluYWwgc3RhdGljIFN0cmluZ1tdIHNlYXJjaEZpZWxkcyA9IHsidXNlci5sYXN0bmFtZSIsICJ1c2VyLmZpcnN0bmFtZSIsICJ1c2VyLmxvZ2luIiwgInVzZXIuYWRyZXNzZXMuZW1haWwifTsNCisNCisJcHVibGljIE9yZ2FuaXNhdGlvbl9Vc2VycyBnZXQobG9uZyBpZCkgew0KKwkJVHlwZWRRdWVyeTxPcmdhbmlzYXRpb25fVXNlcnM+IHEgPSBlbS5jcmVhdGVOYW1lZFF1ZXJ5KCJnZXRPcmdhbmlzYXRpb25Vc2Vyc0J5SWQiLCBPcmdhbmlzYXRpb25fVXNlcnMuY2xhc3MpOw0KKwkJcS5zZXRQYXJhbWV0ZXIoImlkIiwgaWQpOw0KKwkJcmV0dXJuIHEuZ2V0U2luZ2xlUmVzdWx0KCk7DQorCX0NCisNCisJcHVibGljIExpc3Q8T3JnYW5pc2F0aW9uX1VzZXJzPiBnZXQoaW50IHN0YXJ0LCBpbnQgY291bnQpIHsNCisJCXRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJTaG91bGQgbm90IGJlIHVzZWQiKTsNCisJfQ0KKw0KKwlwdWJsaWMgTGlzdDxPcmdhbmlzYXRpb25fVXNlcnM+IGdldChTdHJpbmcgc2VhcmNoLCBpbnQgc3RhcnQsIGludCBjb3VudCwgU3RyaW5nIHNvcnQpIHsNCisJCXRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJTaG91bGQgbm90IGJlIHVzZWQiKTsNCisJfQ0KKwkNCisJcHVibGljIExpc3Q8T3JnYW5pc2F0aW9uX1VzZXJzPiBnZXQobG9uZyBvcmdJZCwgU3RyaW5nIHNlYXJjaCwgaW50IHN0YXJ0LCBpbnQgY291bnQsIFN0cmluZyBzb3J0KSB7DQorCQlUeXBlZFF1ZXJ5PE9yZ2FuaXNhdGlvbl9Vc2Vycz4gcSA9IGVtLmNyZWF0ZVF1ZXJ5KERhb0hlbHBlci5nZXRTZWFyY2hRdWVyeSgiT3JnYW5pc2F0aW9uX1VzZXJzIiwgIm91Iiwgc2VhcmNoLCBmYWxzZSwgZmFsc2UsIHNvcnQsIHNlYXJjaEZpZWxkcyksIE9yZ2FuaXNhdGlvbl9Vc2Vycy5jbGFzcyk7DQorCQlxLnNldEZpcnN0UmVzdWx0KHN0YXJ0KTsNCisJCXEuc2V0TWF4UmVzdWx0cyhjb3VudCk7DQorCQlyZXR1cm4gcS5nZXRSZXN1bHRMaXN0KCk7DQorCX0NCisJDQorCXB1YmxpYyBMaXN0PE9yZ2FuaXNhdGlvbl9Vc2Vycz4gZ2V0KGxvbmcgb3JnSWQsIGludCBzdGFydCwgaW50IGNvdW50KSB7DQorCQlUeXBlZFF1ZXJ5PE9yZ2FuaXNhdGlvbl9Vc2Vycz4gcSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoImdldE9yZ2FuaXNhdGlvblVzZXJzQnlPcmdJZCIsIE9yZ2FuaXNhdGlvbl9Vc2Vycy5jbGFzcyk7DQorCQlxLnNldFBhcmFtZXRlcigiaWQiLCBvcmdJZCk7DQorCQlxLnNldEZpcnN0UmVzdWx0KHN0YXJ0KTsNCisJCXEuc2V0TWF4UmVzdWx0cyhjb3VudCk7DQorDQorCQkvLyBUaGlzIHJlZnJlc2ggaXMgbmVjZXNzYXJ5IGJlY2F1c2UgYWZ0ZXIgc2F2aW5nIHRoZSB1c2VyIGVudGl0eSB0aGUNCisJCS8vIHVzZXJfaWQgaXMgc29tZWhvdyBub3QNCisJCS8vIGZpbGxlZCBpbnRvIHRoZSBPcmdhbmlzYXRpb25fVXNlcnMsIHRoaXMgbWlnaHQgYmUgZml4ZWQgYnkNCisJCS8vIGltcGxlbWVudGluZyBhbm90aGVyDQorCQkvLyBKT0lOIG9yIG1hcHBpbmcgc3RyYXRlZ3kNCisJCUxpc3Q8T3JnYW5pc2F0aW9uX1VzZXJzPiBvcmdVc2VyTGlzdCA9IHEuZ2V0UmVzdWx0TGlzdCgpOw0KKwkJZm9yIChPcmdhbmlzYXRpb25fVXNlcnMgb3UgOiBvcmdVc2VyTGlzdCkgew0KKwkJCWVtLnJlZnJlc2gob3UpOw0KKwkJfQ0KKwkJcmV0dXJuIG9yZ1VzZXJMaXN0Ow0KKwl9DQorDQorCXB1YmxpYyBsb25nIGNvdW50KCkgew0KKwkJdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIlNob3VsZCBub3QgYmUgdXNlZCIpOw0KKwl9DQorDQorCXB1YmxpYyBsb25nIGNvdW50KFN0cmluZyBzZWFyY2gpIHsNCisJCXRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJTaG91bGQgbm90IGJlIHVzZWQiKTsNCisJfQ0KKwkNCisJcHVibGljIGxvbmcgY291bnQobG9uZyBvcmdJZCwgU3RyaW5nIHNlYXJjaCkgew0KKwkJVHlwZWRRdWVyeTxMb25nPiBxID0gZW0uY3JlYXRlUXVlcnkoRGFvSGVscGVyLmdldFNlYXJjaFF1ZXJ5KCJPcmdhbmlzYXRpb25fVXNlcnMiLCAib3UiLCBzZWFyY2gsIGZhbHNlLCB0cnVlLCBudWxsLCBzZWFyY2hGaWVsZHMpLCBMb25nLmNsYXNzKTsNCisJCXJldHVybiBxLmdldFNpbmdsZVJlc3VsdCgpOw0KKwl9DQorCQ0KKwlwdWJsaWMgbG9uZyBjb3VudChsb25nIG9yZ0lkKSB7DQorCQlUeXBlZFF1ZXJ5PExvbmc+IHEgPSBlbS5jcmVhdGVOYW1lZFF1ZXJ5KCJjb3VudE9yZ2FuaXNhdGlvblVzZXJzIiwgTG9uZy5jbGFzcyk7DQorCQlxLnNldFBhcmFtZXRlcigiaWQiLCBvcmdJZCk7DQorCQlyZXR1cm4gcS5nZXRTaW5nbGVSZXN1bHQoKTsNCisJfQ0KKw0KKwlwdWJsaWMgT3JnYW5pc2F0aW9uX1VzZXJzIHVwZGF0ZShPcmdhbmlzYXRpb25fVXNlcnMgZW50aXR5LCBMb25nIHVzZXJJZCkgew0KKwkJLy9pZiAoZW50aXR5LmdldE9yZ2FuaXNhdGlvbl91c2Vyc19pZCgpKS8vIFRPRE8gQXV0by1nZW5lcmF0ZWQgbWV0aG9kIHN0dWINCisJCXJldHVybiBlbnRpdHk7DQorCX0NCisNCisJcHVibGljIHZvaWQgZGVsZXRlKE9yZ2FuaXNhdGlvbl9Vc2VycyBlbnRpdHksIExvbmcgdXNlcklkKSB7DQorCQlpZiAoZW50aXR5LmdldE9yZ2FuaXNhdGlvbl91c2Vyc19pZCgpICE9IG51bGwpIHsNCisJCQlVc2VyIHUgPSB1c2Vyc0Rhby5nZXQoZW50aXR5LmdldFVzZXJfaWQoKSk7DQorCQkJaW50IGlkeCA9IHUuZ2V0T3JnYW5pc2F0aW9uX3VzZXJzKCkuaW5kZXhPZihlbnRpdHkpOw0KKwkJCS8vZW50aXR5IGhhcyBiZWVuIGRldGFjaGVkIG5lZWQgdG8gcmUtZmV0Y2gNCisJCQlPcmdhbmlzYXRpb25fVXNlcnMgb3UgPSB1LmdldE9yZ2FuaXNhdGlvbl91c2VycygpLnJlbW92ZShpZHgpOw0KKwkJCWVtLnJlbW92ZShvdSk7DQorCQkJdXNlcnNEYW8udXBkYXRlKHUsIHVzZXJJZCk7DQorCQl9DQorCX0NCisNCisJcHVibGljIHZvaWQgYWRkKCkgew0KKwkJDQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvdXNlci9kYW8vUHJpdmF0ZU1lc3NhZ2VGb2xkZXJEYW8uamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL3VzZXIvZGFvL1ByaXZhdGVNZXNzYWdlRm9sZGVyRGFvLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGI0OTMxZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL3VzZXIvZGFvL1ByaXZhdGVNZXNzYWdlRm9sZGVyRGFvLmphdmEKQEAgLTAsMCArMSwxNTMgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLmRhbzsKKworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5TWFuYWdlcjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Ob1Jlc3VsdEV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5QZXJzaXN0ZW5jZUNvbnRleHQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVHlwZWRRdWVyeTsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlByaXZhdGVNZXNzYWdlRm9sZGVyOworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLnRyYW5zYWN0aW9uLmFubm90YXRpb24uVHJhbnNhY3Rpb25hbDsKKworQFRyYW5zYWN0aW9uYWwKK3B1YmxpYyBjbGFzcyBQcml2YXRlTWVzc2FnZUZvbGRlckRhbyB7CisJCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcihQcml2YXRlTWVzc2FnZUZvbGRlckRhby5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCUBQZXJzaXN0ZW5jZUNvbnRleHQKKwlwcml2YXRlIEVudGl0eU1hbmFnZXIgZW07CisJCisJcHVibGljIExvbmcgYWRkUHJpdmF0ZU1lc3NhZ2VGb2xkZXIoU3RyaW5nIGZvbGRlck5hbWUsIExvbmcgdXNlcklkKSB7CisJCXRyeSB7CisJCQlQcml2YXRlTWVzc2FnZUZvbGRlciBwcml2YXRlTWVzc2FnZUZvbGRlciA9IG5ldyBQcml2YXRlTWVzc2FnZUZvbGRlcigpOworCQkJcHJpdmF0ZU1lc3NhZ2VGb2xkZXIuc2V0Rm9sZGVyTmFtZShmb2xkZXJOYW1lKTsKKwkJCXByaXZhdGVNZXNzYWdlRm9sZGVyLnNldFVzZXJJZCh1c2VySWQpOworCQkJcHJpdmF0ZU1lc3NhZ2VGb2xkZXIuc2V0SW5zZXJ0ZWQobmV3IERhdGUoKSk7CisJCQkKKwkJCXByaXZhdGVNZXNzYWdlRm9sZGVyID0gZW0ubWVyZ2UocHJpdmF0ZU1lc3NhZ2VGb2xkZXIpOworCQkJTG9uZyBwcml2YXRlTWVzc2FnZUZvbGRlcklkID0gcHJpdmF0ZU1lc3NhZ2VGb2xkZXIuZ2V0UHJpdmF0ZU1lc3NhZ2VGb2xkZXJJZCgpOworCQkJCisJCQlyZXR1cm4gcHJpdmF0ZU1lc3NhZ2VGb2xkZXJJZDsJCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCQlsb2cuZXJyb3IoIlthZGRQcml2YXRlTWVzc2FnZUZvbGRlcl0iLGUpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKwkKKwlwdWJsaWMgTG9uZyBhZGRQcml2YXRlTWVzc2FnZUZvbGRlck9iaihQcml2YXRlTWVzc2FnZUZvbGRlciBwcml2YXRlTWVzc2FnZUZvbGRlcikgeworCQl0cnkgeworCQkJcHJpdmF0ZU1lc3NhZ2VGb2xkZXIuc2V0SW5zZXJ0ZWQobmV3IERhdGUoKSk7CisJCQkKKwkJCXByaXZhdGVNZXNzYWdlRm9sZGVyID0gZW0ubWVyZ2UocHJpdmF0ZU1lc3NhZ2VGb2xkZXIpOworCQkJTG9uZyBwcml2YXRlTWVzc2FnZUZvbGRlcklkID0gcHJpdmF0ZU1lc3NhZ2VGb2xkZXIuZ2V0UHJpdmF0ZU1lc3NhZ2VGb2xkZXJJZCgpOworCQkJCisJCQlyZXR1cm4gcHJpdmF0ZU1lc3NhZ2VGb2xkZXJJZDsJCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCQlsb2cuZXJyb3IoIlthZGRQcml2YXRlTWVzc2FnZUZvbGRlcl0iLGUpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKwkKKwlwdWJsaWMgUHJpdmF0ZU1lc3NhZ2VGb2xkZXIgZ2V0UHJpdmF0ZU1lc3NhZ2VGb2xkZXJCeUlkKExvbmcgcHJpdmF0ZU1lc3NhZ2VGb2xkZXJJZCkgeworCQl0cnkgeworCQkJU3RyaW5nIGhxbCA9ICJzZWxlY3QgYyBmcm9tIFByaXZhdGVNZXNzYWdlRm9sZGVyIGMgIiArCisJCQkJCQkid2hlcmUgYy5wcml2YXRlTWVzc2FnZUZvbGRlcklkID0gOnByaXZhdGVNZXNzYWdlRm9sZGVySWQgIjsKKworCQkJVHlwZWRRdWVyeTxQcml2YXRlTWVzc2FnZUZvbGRlcj4gcXVlcnkgPSBlbS5jcmVhdGVRdWVyeShocWwsIFByaXZhdGVNZXNzYWdlRm9sZGVyLmNsYXNzKTsgCisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInByaXZhdGVNZXNzYWdlRm9sZGVySWQiLCBwcml2YXRlTWVzc2FnZUZvbGRlcklkKTsKKwkJCQorCQkJUHJpdmF0ZU1lc3NhZ2VGb2xkZXIgcHJpdmF0ZU1lc3NhZ2VGb2xkZXIgPSBudWxsOworCQkJdHJ5IHsKKwkJCQlwcml2YXRlTWVzc2FnZUZvbGRlciA9IHF1ZXJ5LmdldFNpbmdsZVJlc3VsdCgpOworCQkgICAgfSBjYXRjaCAoTm9SZXN1bHRFeGNlcHRpb24gZXgpIHsKKwkJICAgIH0KKwkJCQorCQkJcmV0dXJuIHByaXZhdGVNZXNzYWdlRm9sZGVyOworCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJbG9nLmVycm9yKCJbZ2V0UHJpdmF0ZU1lc3NhZ2VGb2xkZXJCeUlkXSIsZSk7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIExpc3Q8UHJpdmF0ZU1lc3NhZ2VGb2xkZXI+IGdldFByaXZhdGVNZXNzYWdlRm9sZGVycygpIHsKKwkJdHJ5IHsKKwkJCVN0cmluZyBocWwgPSAic2VsZWN0IGMgZnJvbSBQcml2YXRlTWVzc2FnZUZvbGRlciBjICI7CisKKwkJCVR5cGVkUXVlcnk8UHJpdmF0ZU1lc3NhZ2VGb2xkZXI+IHF1ZXJ5ID0gZW0uY3JlYXRlUXVlcnkoaHFsLCBQcml2YXRlTWVzc2FnZUZvbGRlci5jbGFzcyk7IAorCQkJCisJCQlMaXN0PFByaXZhdGVNZXNzYWdlRm9sZGVyPiBwcml2YXRlTWVzc2FnZUZvbGRlcnMgPSBxdWVyeS5nZXRSZXN1bHRMaXN0KCk7CisJCQkKKwkJCXJldHVybiBwcml2YXRlTWVzc2FnZUZvbGRlcnM7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCQlsb2cuZXJyb3IoIltnZXRQcml2YXRlTWVzc2FnZUZvbGRlckJ5SWRdIixlKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgdm9pZCB1cGRhdGVQcml2YXRlTWVzc2FnZXMoUHJpdmF0ZU1lc3NhZ2VGb2xkZXIgcHJpdmF0ZU1lc3NhZ2VGb2xkZXIpIHsKKwkJdHJ5IHsKKwkJCQorCQkJaWYgKHByaXZhdGVNZXNzYWdlRm9sZGVyLmdldFByaXZhdGVNZXNzYWdlRm9sZGVySWQoKSA9PSAwKSB7CisJCQkJZW0ucGVyc2lzdChwcml2YXRlTWVzc2FnZUZvbGRlcik7CisJCSAgICB9IGVsc2UgeworCQkgICAgCWlmICghZW0uY29udGFpbnMocHJpdmF0ZU1lc3NhZ2VGb2xkZXIpKSB7CisJCSAgICAJCWVtLm1lcmdlKHByaXZhdGVNZXNzYWdlRm9sZGVyKTsKKwkJCSAgICB9CisJCQl9CisJCQkKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCWxvZy5lcnJvcigiW3VwZGF0ZVByaXZhdGVNZXNzYWdlc10iLGUpOworCQl9CisJfQorCQorCXB1YmxpYyBMaXN0PFByaXZhdGVNZXNzYWdlRm9sZGVyPiBnZXRQcml2YXRlTWVzc2FnZUZvbGRlckJ5VXNlcklkKExvbmcgdXNlcklkKSB7CisJCXRyeSB7CisJCQlTdHJpbmcgaHFsID0gInNlbGVjdCBjIGZyb20gUHJpdmF0ZU1lc3NhZ2VGb2xkZXIgYyAiICsKKwkJCQkJCSJ3aGVyZSBjLnVzZXJJZCA9IDp1c2VySWQgIjsKKworCQkJVHlwZWRRdWVyeTxQcml2YXRlTWVzc2FnZUZvbGRlcj4gcXVlcnkgPSBlbS5jcmVhdGVRdWVyeShocWwsIFByaXZhdGVNZXNzYWdlRm9sZGVyLmNsYXNzKTsgCisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInVzZXJJZCIsIHVzZXJJZCk7CisJCQkKKwkJCUxpc3Q8UHJpdmF0ZU1lc3NhZ2VGb2xkZXI+IHByaXZhdGVNZXNzYWdlRm9sZGVycyA9IHF1ZXJ5LmdldFJlc3VsdExpc3QoKTsKKwkJCQorCQkJcmV0dXJuIHByaXZhdGVNZXNzYWdlRm9sZGVyczsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCWxvZy5lcnJvcigiW2dldFByaXZhdGVNZXNzYWdlRm9sZGVyQnlVc2VySWRdIixlKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgdm9pZCBkZWxldGVQcml2YXRlTWVzc2FnZXMoUHJpdmF0ZU1lc3NhZ2VGb2xkZXIgcHJpdmF0ZU1lc3NhZ2VGb2xkZXIpIHsKKwkJdHJ5IHsKKwkJCQorCQkJcHJpdmF0ZU1lc3NhZ2VGb2xkZXIgPSBlbS5maW5kKFByaXZhdGVNZXNzYWdlRm9sZGVyLmNsYXNzLCBwcml2YXRlTWVzc2FnZUZvbGRlci5nZXRQcml2YXRlTWVzc2FnZUZvbGRlcklkKCkpOworCQkJZW0ucmVtb3ZlKHByaXZhdGVNZXNzYWdlRm9sZGVyKTsKKwkJCQorCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJbG9nLmVycm9yKCJbZGVsZXRlUHJpdmF0ZU1lc3NhZ2VzXSIsZSk7CisJCX0KKwl9CQorCQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvdXNlci9kYW8vUHJpdmF0ZU1lc3NhZ2VzRGFvLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS91c2VyL2Rhby9Qcml2YXRlTWVzc2FnZXNEYW8uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MzBkYTZlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvdXNlci9kYW8vUHJpdmF0ZU1lc3NhZ2VzRGFvLmphdmEKQEAgLTAsMCArMSw1NzIgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLmRhbzsKKworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5TWFuYWdlcjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Ob1Jlc3VsdEV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5QZXJzaXN0ZW5jZUNvbnRleHQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuUXVlcnk7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVHlwZWRRdWVyeTsKKworaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5sYW5nLlN0cmluZ1V0aWxzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tLlJvb207CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlci5Qcml2YXRlTWVzc2FnZTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlVzZXI7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsudHJhbnNhY3Rpb24uYW5ub3RhdGlvbi5UcmFuc2FjdGlvbmFsOworCitAVHJhbnNhY3Rpb25hbAorcHVibGljIGNsYXNzIFByaXZhdGVNZXNzYWdlc0RhbyB7CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKFByaXZhdGVNZXNzYWdlc0Rhby5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCUBQZXJzaXN0ZW5jZUNvbnRleHQKKwlwcml2YXRlIEVudGl0eU1hbmFnZXIgZW07CisJCisJcHVibGljIExvbmcgYWRkUHJpdmF0ZU1lc3NhZ2UoU3RyaW5nIHN1YmplY3QsIFN0cmluZyBtZXNzYWdlLCBMb25nIHBhcmVudE1lc3NhZ2VJZCwgCisJCQlVc2VyIGZyb20sIFVzZXIgdG8sIFVzZXIgb3duZXIsIEJvb2xlYW4gYm9va2VkUm9vbSwgUm9vbSByb29tLAorCQkJQm9vbGVhbiBpc0NvbnRhY3RSZXF1ZXN0LCBMb25nIHVzZXJDb250YWN0SWQsIFN0cmluZyBlbWFpbCkgeworCQl0cnkgeworCQkJUHJpdmF0ZU1lc3NhZ2UgcHJpdmF0ZU1lc3NhZ2UgPSBuZXcgUHJpdmF0ZU1lc3NhZ2UoKTsKKwkJCXByaXZhdGVNZXNzYWdlLnNldEluc2VydGVkKG5ldyBEYXRlKCkpOworCQkJcHJpdmF0ZU1lc3NhZ2Uuc2V0U3ViamVjdChzdWJqZWN0KTsKKwkJCXByaXZhdGVNZXNzYWdlLnNldE1lc3NhZ2UobWVzc2FnZSk7CisJCQlwcml2YXRlTWVzc2FnZS5zZXRGcm9tKGZyb20pOworCQkJcHJpdmF0ZU1lc3NhZ2Uuc2V0VG8odG8pOworCQkJcHJpdmF0ZU1lc3NhZ2Uuc2V0T3duZXIob3duZXIpOworCQkJcHJpdmF0ZU1lc3NhZ2Uuc2V0Qm9va2VkUm9vbShib29rZWRSb29tKTsKKwkJCXByaXZhdGVNZXNzYWdlLnNldFJvb20ocm9vbSk7CisJCQlwcml2YXRlTWVzc2FnZS5zZXRQYXJlbnRNZXNzYWdlKHBhcmVudE1lc3NhZ2VJZCk7CisJCQlwcml2YXRlTWVzc2FnZS5zZXRJc1RyYXNoKGZhbHNlKTsKKwkJCXByaXZhdGVNZXNzYWdlLnNldFByaXZhdGVNZXNzYWdlRm9sZGVySWQoMEwpOworCQkJcHJpdmF0ZU1lc3NhZ2Uuc2V0SXNSZWFkKGZhbHNlKTsKKwkJCXByaXZhdGVNZXNzYWdlLnNldElzQ29udGFjdFJlcXVlc3QoaXNDb250YWN0UmVxdWVzdCk7CisJCQlwcml2YXRlTWVzc2FnZS5zZXRVc2VyQ29udGFjdElkKHVzZXJDb250YWN0SWQpOworCQkJcHJpdmF0ZU1lc3NhZ2Uuc2V0RW1haWwoZW1haWwpOworCQkJCisJCQlwcml2YXRlTWVzc2FnZSA9IGVtLm1lcmdlKHByaXZhdGVNZXNzYWdlKTsKKwkJCUxvbmcgcHJpdmF0ZU1lc3NhZ2VJZCA9IHByaXZhdGVNZXNzYWdlLmdldFByaXZhdGVNZXNzYWdlRm9sZGVySWQoKTsKKwkJCQorCQkJcmV0dXJuIHByaXZhdGVNZXNzYWdlSWQ7CQkJCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCQlsb2cuZXJyb3IoIlthZGRQcml2YXRlTWVzc2FnZV0iLGUpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKwkKKwlwdWJsaWMgTG9uZyBhZGRQcml2YXRlTWVzc2FnZU9iaihQcml2YXRlTWVzc2FnZSBwcml2YXRlTWVzc2FnZSkgeworCQl0cnkgeworCQkJCisJCQlwcml2YXRlTWVzc2FnZSA9IGVtLm1lcmdlKHByaXZhdGVNZXNzYWdlKTsKKwkJCUxvbmcgcHJpdmF0ZU1lc3NhZ2VJZCA9IHByaXZhdGVNZXNzYWdlLmdldFByaXZhdGVNZXNzYWdlRm9sZGVySWQoKTsKKwkJCQorCQkJcmV0dXJuIHByaXZhdGVNZXNzYWdlSWQ7CQkJCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCQlsb2cuZXJyb3IoIlthZGRQcml2YXRlTWVzc2FnZV0iLGUpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKwkKKwlwdWJsaWMgTGlzdDxQcml2YXRlTWVzc2FnZT4gZ2V0UHJpdmF0ZU1lc3NhZ2VzKCkgeworCQl0cnkgeworCQkJVHlwZWRRdWVyeTxQcml2YXRlTWVzc2FnZT4gcXVlcnkgPSBlbS5jcmVhdGVOYW1lZFF1ZXJ5KCJnZXRQcml2YXRlTWVzc2FnZXMiLCBQcml2YXRlTWVzc2FnZS5jbGFzcyk7IAorCQkJcmV0dXJuIHF1ZXJ5LmdldFJlc3VsdExpc3QoKTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCWxvZy5lcnJvcigiW2dldFByaXZhdGVNZXNzYWdlc10iLGUpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKwkKKwlwdWJsaWMgUHJpdmF0ZU1lc3NhZ2UgZ2V0UHJpdmF0ZU1lc3NhZ2VzQnlJZChMb25nIHByaXZhdGVNZXNzYWdlSWQpIHsKKwkJdHJ5IHsKKwkJCVR5cGVkUXVlcnk8UHJpdmF0ZU1lc3NhZ2U+IHF1ZXJ5ID0gZW0uY3JlYXRlTmFtZWRRdWVyeSgiZ2V0UHJpdmF0ZU1lc3NhZ2VzQnlJZCIsIFByaXZhdGVNZXNzYWdlLmNsYXNzKTsgCisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInByaXZhdGVNZXNzYWdlSWQiLCBwcml2YXRlTWVzc2FnZUlkKTsKKwkJCVByaXZhdGVNZXNzYWdlIHByaXZhdGVNZXNzYWdlID0gbnVsbDsKKwkJCXRyeSB7CisJCQkJcHJpdmF0ZU1lc3NhZ2UgPSBxdWVyeS5nZXRTaW5nbGVSZXN1bHQoKTsKKwkJICAgIH0gY2F0Y2ggKE5vUmVzdWx0RXhjZXB0aW9uIGV4KSB7CisJCSAgICB9CisJCQlyZXR1cm4gcHJpdmF0ZU1lc3NhZ2U7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCQlsb2cuZXJyb3IoIltjb3VudFByaXZhdGVNZXNzYWdlc0J5VXNlcl0iLGUpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKwkKKwlwdWJsaWMgdm9pZCB1cGRhdGVQcml2YXRlTWVzc2FnZXMoUHJpdmF0ZU1lc3NhZ2UgcHJpdmF0ZU1lc3NhZ2UpIHsKKwkJdHJ5IHsKKwkJCQorCQkJaWYgKHByaXZhdGVNZXNzYWdlLmdldFByaXZhdGVNZXNzYWdlRm9sZGVySWQoKSA9PSBudWxsKSB7CisJCQkJZW0ucGVyc2lzdChwcml2YXRlTWVzc2FnZSk7CisJCSAgICB9IGVsc2UgeworCQkgICAgCWlmICghZW0uY29udGFpbnMocHJpdmF0ZU1lc3NhZ2UpKSB7CisJCSAgICAJCWVtLm1lcmdlKHByaXZhdGVNZXNzYWdlKTsKKwkJCSAgICB9CisJCQl9CisJCQkKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCWxvZy5lcnJvcigiW3VwZGF0ZVByaXZhdGVNZXNzYWdlc10iLGUpOworCQl9CisJfQorCQorCXB1YmxpYyBMb25nIGNvdW50UHJpdmF0ZU1lc3NhZ2VzQnlVc2VyKExvbmcgdG9Vc2VySWQsIFN0cmluZyBzZWFyY2gsIExvbmcgcHJpdmF0ZU1lc3NhZ2VGb2xkZXJJZCkgeworCQl0cnkgeworCQkJCisJCQlTdHJpbmcgaHFsID0gInNlbGVjdCBjb3VudChjLnByaXZhdGVNZXNzYWdlSWQpIGZyb20gUHJpdmF0ZU1lc3NhZ2UgYyAiICsKKwkJCQkJCSJ3aGVyZSBjLnRvLnVzZXJfaWQgPSA6dG9Vc2VySWQgIiArCisJCQkJCQkiQU5EIGMuaXNUcmFzaCA9IGZhbHNlICIgKworCQkJCQkJIkFORCBjLm93bmVyLnVzZXJfaWQgPSA6dG9Vc2VySWQgIiArCisJCQkJCQkiQU5EIGMucHJpdmF0ZU1lc3NhZ2VGb2xkZXJJZCA9IDpwcml2YXRlTWVzc2FnZUZvbGRlcklkICI7CisJCQkKKwkJCWlmIChzZWFyY2gubGVuZ3RoKCkgIT0gMCkgeworCQkJCWhxbCArPSAiQU5EICggIjsKKwkJCQlocWwgKz0gImxvd2VyKGMuc3ViamVjdCkgTElLRSA6c2VhcmNoICI7CisJCQkJaHFsICs9ICJPUiBsb3dlcihjLm1lc3NhZ2UpIExJS0UgOnNlYXJjaCAiOworCQkJCWhxbCArPSAiT1IgbG93ZXIoYy5mcm9tLmZpcnN0bmFtZSkgTElLRSA6c2VhcmNoICI7CisJCQkJaHFsICs9ICJPUiBsb3dlcihjLmZyb20ubGFzdG5hbWUpIExJS0UgOnNlYXJjaCAiOworCQkJCWhxbCArPSAiT1IgbG93ZXIoYy5mcm9tLmxvZ2luKSBMSUtFIDpzZWFyY2ggIjsKKwkJCQlocWwgKz0gIk9SIGxvd2VyKGMuZnJvbS5hZHJlc3Nlcy5lbWFpbCkgTElLRSA6c2VhcmNoICI7CisJCQkJaHFsICs9ICIgKSAiOworCQkJfQorCisJCQlUeXBlZFF1ZXJ5PExvbmc+IHF1ZXJ5ID0gZW0uY3JlYXRlUXVlcnkoaHFsLCBMb25nLmNsYXNzKTsgCisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInRvVXNlcklkIiwgdG9Vc2VySWQpOworCQkJaWYgKHNlYXJjaC5sZW5ndGgoKSAhPSAwKSB7CisJCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJzZWFyY2giLCBTdHJpbmdVdGlscy5sb3dlckNhc2UoIiUiK3NlYXJjaCsiJSIpKTsKKwkJCX0KKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigicHJpdmF0ZU1lc3NhZ2VGb2xkZXJJZCIsIHByaXZhdGVNZXNzYWdlRm9sZGVySWQpOworCQkJTGlzdDxMb25nPiBsbCA9IHF1ZXJ5LmdldFJlc3VsdExpc3QoKTsKKwkJCQorCQkJcmV0dXJuIGxsLmdldCgwKTsKKwkJCQorCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJbG9nLmVycm9yKCJbY291bnRQcml2YXRlTWVzc2FnZXNCeVVzZXJdIixlKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisJCisJcHVibGljIExvbmcgZ2V0TnVtYmVyTWVzc2FnZXMoTG9uZyB0b1VzZXJJZCwgTG9uZyBwcml2YXRlTWVzc2FnZUZvbGRlcklkLCBib29sZWFuIGlzUmVhZCkgeworCQl0cnkgeworCQkJVHlwZWRRdWVyeTxMb25nPiBxdWVyeSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoImdldE51bWJlck1lc3NhZ2VzIiwgTG9uZy5jbGFzcyk7IAorCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJ0b1VzZXJJZCIsIHRvVXNlcklkKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiaXNUcmFzaCIsIGZhbHNlKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiaXNSZWFkIiwgZmFsc2UpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJwcml2YXRlTWVzc2FnZUZvbGRlcklkIiwgcHJpdmF0ZU1lc3NhZ2VGb2xkZXJJZCk7CisJCQlyZXR1cm4gcXVlcnkuZ2V0U2luZ2xlUmVzdWx0KCk7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCQlsb2cuZXJyb3IoIltnZXROdW1iZXJNZXNzYWdlc10iLGUpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKwkKKwlwdWJsaWMgTGlzdDxQcml2YXRlTWVzc2FnZT4gZ2V0UHJpdmF0ZU1lc3NhZ2VzQnlVc2VyKExvbmcgdG9Vc2VySWQsIFN0cmluZyBzZWFyY2gsCisJCQlTdHJpbmcgb3JkZXJCeSwgaW50IHN0YXJ0LCBCb29sZWFuIGFzYywgTG9uZyBwcml2YXRlTWVzc2FnZUZvbGRlcklkLCBpbnQgbWF4KSB7CisJCXRyeSB7CisJCQkKKwkJCVN0cmluZyBocWwgPSAic2VsZWN0IGMgZnJvbSBQcml2YXRlTWVzc2FnZSBjICIgKworCQkJCQkJIndoZXJlIGMudG8udXNlcl9pZCA9IDp0b1VzZXJJZCAiICsKKwkJCQkJCSJBTkQgYy5pc1RyYXNoID0gOmlzVHJhc2ggIiArCisJCQkJCQkiQU5EIGMub3duZXIudXNlcl9pZCA9IDp0b1VzZXJJZCAiICsKKwkJCQkJCSJBTkQgYy5wcml2YXRlTWVzc2FnZUZvbGRlcklkID0gOnByaXZhdGVNZXNzYWdlRm9sZGVySWQgIjsKKwkJCQorCQkJaWYgKHNlYXJjaC5sZW5ndGgoKSAhPSAwKSB7CisJCQkJaHFsICs9ICJBTkQgKCAiOworCQkJCWhxbCArPSAibG93ZXIoYy5zdWJqZWN0KSBMSUtFIDpzZWFyY2ggIjsKKwkJCQlocWwgKz0gIk9SIGxvd2VyKGMubWVzc2FnZSkgTElLRSA6c2VhcmNoICI7CisJCQkJaHFsICs9ICJPUiBsb3dlcihjLmZyb20uZmlyc3RuYW1lKSBMSUtFIDpzZWFyY2ggIjsKKwkJCQlocWwgKz0gIk9SIGxvd2VyKGMuZnJvbS5sYXN0bmFtZSkgTElLRSA6c2VhcmNoICI7CisJCQkJaHFsICs9ICJPUiBsb3dlcihjLmZyb20ubG9naW4pIExJS0UgOnNlYXJjaCAiOworCQkJCWhxbCArPSAiT1IgbG93ZXIoYy5mcm9tLmFkcmVzc2VzLmVtYWlsKSBMSUtFIDpzZWFyY2ggIjsKKwkJCQlocWwgKz0gIiApICI7CisJCQl9CisJCQkKKwkJCWhxbCArPSAiT1JERVIgQlkgIitvcmRlckJ5OworCQkJCisJCQlpZiAoYXNjKSB7CisJCQkJaHFsICs9ICIgQVNDIjsKKwkJCX0gZWxzZSB7CisJCQkJaHFsICs9ICIgREVTQyI7CisJCQl9CisKKwkJCVR5cGVkUXVlcnk8UHJpdmF0ZU1lc3NhZ2U+IHF1ZXJ5ID0gZW0uY3JlYXRlUXVlcnkoaHFsLCBQcml2YXRlTWVzc2FnZS5jbGFzcyk7IAorCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJ0b1VzZXJJZCIsIHRvVXNlcklkKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiaXNUcmFzaCIsIGZhbHNlKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigicHJpdmF0ZU1lc3NhZ2VGb2xkZXJJZCIsIHByaXZhdGVNZXNzYWdlRm9sZGVySWQpOworCQkJaWYgKHNlYXJjaC5sZW5ndGgoKSAhPSAwKSB7CisJCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJzZWFyY2giLCBTdHJpbmdVdGlscy5sb3dlckNhc2UoIiUiK3NlYXJjaCsiJSIpKTsKKwkJCX0KKwkJCXF1ZXJ5LnNldEZpcnN0UmVzdWx0KHN0YXJ0KTsKKwkJCXF1ZXJ5LnNldE1heFJlc3VsdHMobWF4KTsKKwkJCUxpc3Q8UHJpdmF0ZU1lc3NhZ2U+IGxsID0gcXVlcnkuZ2V0UmVzdWx0TGlzdCgpOworCQkJCisJCQlyZXR1cm4gbGw7CQorCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJbG9nLmVycm9yKCJbZ2V0UHJpdmF0ZU1lc3NhZ2VzQnlVc2VyXSIsZSk7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCQorCXB1YmxpYyBMb25nIGNvdW50U2VuZFByaXZhdGVNZXNzYWdlc0J5VXNlcihMb25nIHRvVXNlcklkLCBTdHJpbmcgc2VhcmNoLCAKKwkJCUxvbmcgcHJpdmF0ZU1lc3NhZ2VGb2xkZXJJZCkgeworCQl0cnkgeworCQkJCisJCQlTdHJpbmcgaHFsID0gInNlbGVjdCBjb3VudChjLnByaXZhdGVNZXNzYWdlSWQpIGZyb20gUHJpdmF0ZU1lc3NhZ2UgYyAiICsKKwkJCQkJCSJ3aGVyZSBjLmZyb20udXNlcl9pZCA9IDp0b1VzZXJJZCAiICsKKwkJCQkJCSJBTkQgYy5pc1RyYXNoID0gOmlzVHJhc2ggIiArCisJCQkJCQkiQU5EIGMub3duZXIudXNlcl9pZCA9IDp0b1VzZXJJZCAiICsKKwkJCQkJCSJBTkQgYy5wcml2YXRlTWVzc2FnZUZvbGRlcklkID0gOnByaXZhdGVNZXNzYWdlRm9sZGVySWQgIjsKKwkJCQorCQkJaWYgKHNlYXJjaC5sZW5ndGgoKSAhPSAwKSB7CisJCQkJaHFsICs9ICJBTkQgKCAiOworCQkJCWhxbCArPSAibG93ZXIoYy5zdWJqZWN0KSBMSUtFIDpzZWFyY2ggIjsKKwkJCQlocWwgKz0gIk9SIGxvd2VyKGMubWVzc2FnZSkgTElLRSA6c2VhcmNoICI7CisJCQkJaHFsICs9ICJPUiBsb3dlcihjLmZyb20uZmlyc3RuYW1lKSBMSUtFIDpzZWFyY2ggIjsKKwkJCQlocWwgKz0gIk9SIGxvd2VyKGMuZnJvbS5sYXN0bmFtZSkgTElLRSA6c2VhcmNoICI7CisJCQkJaHFsICs9ICJPUiBsb3dlcihjLmZyb20ubG9naW4pIExJS0UgOnNlYXJjaCAiOworCQkJCWhxbCArPSAiT1IgbG93ZXIoYy5mcm9tLmFkcmVzc2VzLmVtYWlsKSBMSUtFIDpzZWFyY2ggIjsKKwkJCQlocWwgKz0gIiApICI7CisJCQl9CisKKwkJCVR5cGVkUXVlcnk8TG9uZz4gcXVlcnkgPSBlbS5jcmVhdGVRdWVyeShocWwsIExvbmcuY2xhc3MpOyAKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigidG9Vc2VySWQiLCB0b1VzZXJJZCk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImlzVHJhc2giLCBmYWxzZSk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInByaXZhdGVNZXNzYWdlRm9sZGVySWQiLCBwcml2YXRlTWVzc2FnZUZvbGRlcklkKTsKKwkJCWlmIChzZWFyY2gubGVuZ3RoKCkgIT0gMCkgeworCQkJCXF1ZXJ5LnNldFBhcmFtZXRlcigic2VhcmNoIiwgU3RyaW5nVXRpbHMubG93ZXJDYXNlKCIlIitzZWFyY2grIiUiKSk7CisJCQl9CisJCQlMaXN0PExvbmc+IGxsID0gcXVlcnkuZ2V0UmVzdWx0TGlzdCgpOworCQkJCisJCQlyZXR1cm4gbGwuZ2V0KDApOworCQkJCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCQlsb2cuZXJyb3IoIltjb3VudFNlbmRQcml2YXRlTWVzc2FnZXNCeVVzZXJdIixlKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisJCisJcHVibGljIExpc3Q8UHJpdmF0ZU1lc3NhZ2U+IGdldFRyYXNoUHJpdmF0ZU1lc3NhZ2VzQnlVc2VyKExvbmcgdXNlcl9pZCwgU3RyaW5nIHNlYXJjaCwgCisJCQlTdHJpbmcgb3JkZXJCeSwgaW50IHN0YXJ0LCBCb29sZWFuIGFzYywgaW50IG1heCkgeworCQl0cnkgeworCQkJCisJCQlTdHJpbmcgaHFsID0gInNlbGVjdCBjIGZyb20gUHJpdmF0ZU1lc3NhZ2UgYyAiICsKKwkJCQkJCSJ3aGVyZSBjLmlzVHJhc2ggPSB0cnVlICIgKworCQkJCQkJIkFORCBjLm93bmVyLnVzZXJfaWQgPSA6dXNlcl9pZCAiOworCQkJCisJCQlpZiAoc2VhcmNoLmxlbmd0aCgpICE9IDApIHsKKwkJCQlocWwgKz0gIkFORCAoICI7CisJCQkJaHFsICs9ICJsb3dlcihjLnN1YmplY3QpIExJS0UgOnNlYXJjaCAiOworCQkJCWhxbCArPSAiT1IgbG93ZXIoYy5tZXNzYWdlKSBMSUtFIDpzZWFyY2ggIjsKKwkJCQlocWwgKz0gIk9SIGxvd2VyKGMuZnJvbS5maXJzdG5hbWUpIExJS0UgOnNlYXJjaCAiOworCQkJCWhxbCArPSAiT1IgbG93ZXIoYy5mcm9tLmxhc3RuYW1lKSBMSUtFIDpzZWFyY2ggIjsKKwkJCQlocWwgKz0gIk9SIGxvd2VyKGMuZnJvbS5sb2dpbikgTElLRSA6c2VhcmNoICI7CisJCQkJaHFsICs9ICJPUiBsb3dlcihjLmZyb20uYWRyZXNzZXMuZW1haWwpIExJS0UgOnNlYXJjaCAiOworCQkJCWhxbCArPSAiICkgIjsKKwkJCX0KKwkJCQorCQkJaHFsICs9ICJPUkRFUiBCWSAiK29yZGVyQnk7CisJCQkKKwkJCWlmIChhc2MpIHsKKwkJCQlocWwgKz0gIiBBU0MiOworCQkJfSBlbHNlIHsKKwkJCQlocWwgKz0gIiBERVNDIjsKKwkJCX0KKworCQkJVHlwZWRRdWVyeTxQcml2YXRlTWVzc2FnZT4gcXVlcnkgPSBlbS5jcmVhdGVRdWVyeShocWwsIFByaXZhdGVNZXNzYWdlLmNsYXNzKTsgCisJCQlpZiAoc2VhcmNoLmxlbmd0aCgpICE9IDApIHsKKwkJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInNlYXJjaCIsIFN0cmluZ1V0aWxzLmxvd2VyQ2FzZSgiJSIrc2VhcmNoKyIlIikpOworCQkJfQorCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJ1c2VyX2lkIiwgdXNlcl9pZCk7CisJCQlxdWVyeS5zZXRGaXJzdFJlc3VsdChzdGFydCk7CisJCQlxdWVyeS5zZXRNYXhSZXN1bHRzKG1heCk7CisJCQlMaXN0PFByaXZhdGVNZXNzYWdlPiBsbCA9IHF1ZXJ5LmdldFJlc3VsdExpc3QoKTsKKwkJCQorCQkJcmV0dXJuIGxsOwkKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCWxvZy5lcnJvcigiW2dldFRyYXNoUHJpdmF0ZU1lc3NhZ2VzQnlVc2VyXSIsZSk7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCQorCXB1YmxpYyBMb25nIGNvdW50VHJhc2hQcml2YXRlTWVzc2FnZXNCeVVzZXIoTG9uZyB1c2VyX2lkLCBTdHJpbmcgc2VhcmNoKSB7CisJCXRyeSB7CisJCQkKKwkJCVN0cmluZyBocWwgPSAic2VsZWN0IGNvdW50KGMucHJpdmF0ZU1lc3NhZ2VJZCkgZnJvbSBQcml2YXRlTWVzc2FnZSBjICIgKworCQkJCQkJIndoZXJlIGMuaXNUcmFzaCA9IHRydWUgICIgKworCQkJCQkJIkFORCBjLm93bmVyLnVzZXJfaWQgPSA6dXNlcl9pZCAiOworCQkJCisJCQlpZiAoc2VhcmNoLmxlbmd0aCgpICE9IDApIHsKKwkJCQlocWwgKz0gIkFORCAoICI7CisJCQkJaHFsICs9ICJsb3dlcihjLnN1YmplY3QpIExJS0UgOnNlYXJjaCAiOworCQkJCWhxbCArPSAiT1IgbG93ZXIoYy5tZXNzYWdlKSBMSUtFIDpzZWFyY2ggIjsKKwkJCQlocWwgKz0gIk9SIGxvd2VyKGMuZnJvbS5maXJzdG5hbWUpIExJS0UgOnNlYXJjaCAiOworCQkJCWhxbCArPSAiT1IgbG93ZXIoYy5mcm9tLmxhc3RuYW1lKSBMSUtFIDpzZWFyY2ggIjsKKwkJCQlocWwgKz0gIk9SIGxvd2VyKGMuZnJvbS5sb2dpbikgTElLRSA6c2VhcmNoICI7CisJCQkJaHFsICs9ICJPUiBsb3dlcihjLmZyb20uYWRyZXNzZXMuZW1haWwpIExJS0UgOnNlYXJjaCAiOworCQkJCWhxbCArPSAiICkgIjsKKwkJCX0KKwkJCQorCQkJVHlwZWRRdWVyeTxMb25nPiBxdWVyeSA9IGVtLmNyZWF0ZVF1ZXJ5KGhxbCwgTG9uZy5jbGFzcyk7IAorCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJ1c2VyX2lkIiwgdXNlcl9pZCk7CisJCQlpZiAoc2VhcmNoLmxlbmd0aCgpICE9IDApIHsKKwkJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInNlYXJjaCIsIFN0cmluZ1V0aWxzLmxvd2VyQ2FzZSgiJSIrc2VhcmNoKyIlIikpOworCQkJfQorCQkJTGlzdDxMb25nPiBsbCA9IHF1ZXJ5LmdldFJlc3VsdExpc3QoKTsKKwkJCQorCQkJcmV0dXJuIGxsLmdldCgwKTsKKwkJCQorCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJbG9nLmVycm9yKCJbY291bnRUcmFzaFByaXZhdGVNZXNzYWdlc0J5VXNlcl0iLGUpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKwkKKwlwdWJsaWMgTGlzdDxQcml2YXRlTWVzc2FnZT4gZ2V0U2VuZFByaXZhdGVNZXNzYWdlc0J5VXNlcihMb25nIHRvVXNlcklkLCBTdHJpbmcgc2VhcmNoLCAKKwkJCVN0cmluZyBvcmRlckJ5LCBpbnQgc3RhcnQsIEJvb2xlYW4gYXNjLCBMb25nIHByaXZhdGVNZXNzYWdlRm9sZGVySWQsIGludCBtYXgpIHsKKwkJdHJ5IHsKKwkJCQorCQkJU3RyaW5nIGhxbCA9ICJzZWxlY3QgYyBmcm9tIFByaXZhdGVNZXNzYWdlIGMgIiArCisJCQkJCQkid2hlcmUgYy5mcm9tLnVzZXJfaWQgPSA6dG9Vc2VySWQgIiArCisJCQkJCQkiQU5EIGMuaXNUcmFzaCA9IGZhbHNlICIgKworCQkJCQkJIkFORCBjLm93bmVyLnVzZXJfaWQgPSA6dG9Vc2VySWQgIiArCisJCQkJCQkiQU5EIGMucHJpdmF0ZU1lc3NhZ2VGb2xkZXJJZCA9IDpwcml2YXRlTWVzc2FnZUZvbGRlcklkICI7CisJCQkKKwkJCWlmIChzZWFyY2gubGVuZ3RoKCkgIT0gMCkgeworCQkJCWhxbCArPSAiQU5EICggIjsKKwkJCQlocWwgKz0gImxvd2VyKGMuc3ViamVjdCkgTElLRSA6c2VhcmNoICI7CisJCQkJaHFsICs9ICJPUiBsb3dlcihjLm1lc3NhZ2UpIExJS0UgOnNlYXJjaCAiOworCQkJCWhxbCArPSAiT1IgbG93ZXIoYy5mcm9tLmZpcnN0bmFtZSkgTElLRSA6c2VhcmNoICI7CisJCQkJaHFsICs9ICJPUiBsb3dlcihjLmZyb20ubGFzdG5hbWUpIExJS0UgOnNlYXJjaCAiOworCQkJCWhxbCArPSAiT1IgbG93ZXIoYy5mcm9tLmxvZ2luKSBMSUtFIDpzZWFyY2ggIjsKKwkJCQlocWwgKz0gIk9SIGxvd2VyKGMuZnJvbS5hZHJlc3Nlcy5lbWFpbCkgTElLRSA6c2VhcmNoICI7CisJCQkJaHFsICs9ICIgKSAiOworCQkJfQorCQkJCisJCQlocWwgKz0gIk9SREVSIEJZICIrb3JkZXJCeTsKKwkJCQorCQkJaWYgKGFzYykgeworCQkJCWhxbCArPSAiIEFTQyI7CisJCQl9IGVsc2UgeworCQkJCWhxbCArPSAiIERFU0MiOworCQkJfQorCisJCQlUeXBlZFF1ZXJ5PFByaXZhdGVNZXNzYWdlPiBxdWVyeSA9IGVtLmNyZWF0ZVF1ZXJ5KGhxbCwgUHJpdmF0ZU1lc3NhZ2UuY2xhc3MpOyAKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigidG9Vc2VySWQiLCB0b1VzZXJJZCk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInByaXZhdGVNZXNzYWdlRm9sZGVySWQiLCBwcml2YXRlTWVzc2FnZUZvbGRlcklkKTsKKwkJCWlmIChzZWFyY2gubGVuZ3RoKCkgIT0gMCkgeworCQkJCXF1ZXJ5LnNldFBhcmFtZXRlcigic2VhcmNoIiwgU3RyaW5nVXRpbHMubG93ZXJDYXNlKCIlIitzZWFyY2grIiUiKSk7CisJCQl9CisJCQlxdWVyeS5zZXRGaXJzdFJlc3VsdChzdGFydCk7CisJCQlxdWVyeS5zZXRNYXhSZXN1bHRzKG1heCk7CisJCQlMaXN0PFByaXZhdGVNZXNzYWdlPiBsbCA9IHF1ZXJ5LmdldFJlc3VsdExpc3QoKTsKKwkJCQorCQkJcmV0dXJuIGxsOwkKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCWxvZy5lcnJvcigiW2dldFNlbmRQcml2YXRlTWVzc2FnZXNCeVVzZXJdIixlKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisJCisJCisJcHVibGljIExvbmcgY291bnRGb2xkZXJQcml2YXRlTWVzc2FnZXNCeVVzZXIoTG9uZyB0b1VzZXJJZCwgTG9uZyBwcml2YXRlTWVzc2FnZUZvbGRlcklkLCBTdHJpbmcgc2VhcmNoKSB7CisJCXRyeSB7CisJCQkKKwkJCVN0cmluZyBocWwgPSAic2VsZWN0IGNvdW50KGMucHJpdmF0ZU1lc3NhZ2VJZCkgZnJvbSBQcml2YXRlTWVzc2FnZSBjICIgKworCQkJCQkJIndoZXJlIGMuaXNUcmFzaCA9IGZhbHNlICIgKworCQkJCQkJIkFORCBjLm93bmVyLnVzZXJfaWQgPSA6dG9Vc2VySWQgIiArCisJCQkJCQkiQU5EIGMucHJpdmF0ZU1lc3NhZ2VGb2xkZXJJZCA9IDpwcml2YXRlTWVzc2FnZUZvbGRlcklkICI7CisKKwkJCWlmIChzZWFyY2gubGVuZ3RoKCkgIT0gMCkgeworCQkJCWhxbCArPSAiQU5EICggIjsKKwkJCQlocWwgKz0gImxvd2VyKGMuc3ViamVjdCkgTElLRSA6c2VhcmNoICI7CisJCQkJaHFsICs9ICJPUiBsb3dlcihjLm1lc3NhZ2UpIExJS0UgOnNlYXJjaCAiOworCQkJCWhxbCArPSAiT1IgbG93ZXIoYy5mcm9tLmZpcnN0bmFtZSkgTElLRSA6c2VhcmNoICI7CisJCQkJaHFsICs9ICJPUiBsb3dlcihjLmZyb20ubGFzdG5hbWUpIExJS0UgOnNlYXJjaCAiOworCQkJCWhxbCArPSAiT1IgbG93ZXIoYy5mcm9tLmxvZ2luKSBMSUtFIDpzZWFyY2ggIjsKKwkJCQlocWwgKz0gIk9SIGxvd2VyKGMuZnJvbS5hZHJlc3Nlcy5lbWFpbCkgTElLRSA6c2VhcmNoICI7CisJCQkJaHFsICs9ICIgKSAiOworCQkJfQorCQkJCisJCQlUeXBlZFF1ZXJ5PExvbmc+IHF1ZXJ5ID0gZW0uY3JlYXRlUXVlcnkoaHFsLCBMb25nLmNsYXNzKTsgCisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInRvVXNlcklkIiwgdG9Vc2VySWQpOworCQkJaWYgKHNlYXJjaC5sZW5ndGgoKSAhPSAwKSB7CisJCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJzZWFyY2giLCBTdHJpbmdVdGlscy5sb3dlckNhc2UoIiUiK3NlYXJjaCsiJSIpKTsKKwkJCX0KKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigicHJpdmF0ZU1lc3NhZ2VGb2xkZXJJZCIsIHByaXZhdGVNZXNzYWdlRm9sZGVySWQpOworCQkJTGlzdDxMb25nPiBsbCA9IHF1ZXJ5LmdldFJlc3VsdExpc3QoKTsKKwkJCQorCQkJcmV0dXJuIGxsLmdldCgwKTsKKwkJCQorCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJbG9nLmVycm9yKCJbY291bnRGb2xkZXJQcml2YXRlTWVzc2FnZXNCeVVzZXJdIixlKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisJCisJcHVibGljIExpc3Q8UHJpdmF0ZU1lc3NhZ2U+IGdldEZvbGRlclByaXZhdGVNZXNzYWdlc0J5VXNlcihMb25nIHRvVXNlcklkLCBTdHJpbmcgc2VhcmNoLCBTdHJpbmcgb3JkZXJCeSwgCisJCQlpbnQgc3RhcnQsIEJvb2xlYW4gYXNjLCBMb25nIHByaXZhdGVNZXNzYWdlRm9sZGVySWQsIGludCBtYXgpIHsKKwkJdHJ5IHsKKwkJCQorCQkJU3RyaW5nIGhxbCA9ICJzZWxlY3QgYyBmcm9tIFByaXZhdGVNZXNzYWdlIGMgIiArCisJCQkJCQkJIndoZXJlIGMuaXNUcmFzaCA9IDppc1RyYXNoICIgKworCQkJCQkJCSJBTkQgYy5vd25lci51c2VyX2lkID0gOnRvVXNlcklkICIgKworCQkJCQkJCSJBTkQgYy5wcml2YXRlTWVzc2FnZUZvbGRlcklkID0gOnByaXZhdGVNZXNzYWdlRm9sZGVySWQgIjsKKworCQkJaWYgKHNlYXJjaC5sZW5ndGgoKSAhPSAwKSB7CisJCQkJaHFsICs9ICJBTkQgKCAiOworCQkJCWhxbCArPSAibG93ZXIoYy5zdWJqZWN0KSBMSUtFIDpzZWFyY2ggIjsKKwkJCQlocWwgKz0gIk9SIGxvd2VyKGMubWVzc2FnZSkgTElLRSA6c2VhcmNoICI7CisJCQkJaHFsICs9ICJPUiBsb3dlcihjLmZyb20uZmlyc3RuYW1lKSBMSUtFIDpzZWFyY2ggIjsKKwkJCQlocWwgKz0gIk9SIGxvd2VyKGMuZnJvbS5sYXN0bmFtZSkgTElLRSA6c2VhcmNoICI7CisJCQkJaHFsICs9ICJPUiBsb3dlcihjLmZyb20ubG9naW4pIExJS0UgOnNlYXJjaCAiOworCQkJCWhxbCArPSAiT1IgbG93ZXIoYy5mcm9tLmFkcmVzc2VzLmVtYWlsKSBMSUtFIDpzZWFyY2ggIjsKKwkJCQlocWwgKz0gIiApICI7CisJCQl9CisJCQkKKwkJCWhxbCArPSAiT1JERVIgQlkgIitvcmRlckJ5OworCQkJCisJCQlpZiAoYXNjKSB7CisJCQkJaHFsICs9ICIgQVNDIjsKKwkJCX0gZWxzZSB7CisJCQkJaHFsICs9ICIgREVTQyI7CisJCQl9CisJCQkKKwkJCWxvZy5kZWJ1ZygiSFFMICIraHFsKTsKKwkJCQorCQkJbG9nLmRlYnVnKCJwcml2YXRlTWVzc2FnZUZvbGRlcklkICIrcHJpdmF0ZU1lc3NhZ2VGb2xkZXJJZCk7CisJCQkKKwkJCVR5cGVkUXVlcnk8UHJpdmF0ZU1lc3NhZ2U+IHF1ZXJ5ID0gZW0uY3JlYXRlUXVlcnkoaHFsLCBQcml2YXRlTWVzc2FnZS5jbGFzcyk7IAorCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJ0b1VzZXJJZCIsIHRvVXNlcklkKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiaXNUcmFzaCIsIGZhbHNlKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigicHJpdmF0ZU1lc3NhZ2VGb2xkZXJJZCIsIHByaXZhdGVNZXNzYWdlRm9sZGVySWQpOworCQkJaWYgKHNlYXJjaC5sZW5ndGgoKSAhPSAwKSB7CisJCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJzZWFyY2giLCBTdHJpbmdVdGlscy5sb3dlckNhc2UoIiUiK3NlYXJjaCsiJSIpKTsKKwkJCX0KKwkJCXF1ZXJ5LnNldEZpcnN0UmVzdWx0KHN0YXJ0KTsKKwkJCXF1ZXJ5LnNldE1heFJlc3VsdHMobWF4KTsKKwkJCUxpc3Q8UHJpdmF0ZU1lc3NhZ2U+IGxsID0gcXVlcnkuZ2V0UmVzdWx0TGlzdCgpOworCQkJCisJCQlyZXR1cm4gbGw7CisJCQkKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCWxvZy5lcnJvcigiW2dldEZvbGRlclByaXZhdGVNZXNzYWdlc0J5VXNlcl0iLGUpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBpbnQgdXBkYXRlUHJpdmF0ZU1lc3NhZ2VzVG9UcmFzaChMaXN0PExvbmc+IHByaXZhdGVNZXNzYWdlSWRzLCBCb29sZWFuIGlzVHJhc2gsIExvbmcgcHJpdmF0ZU1lc3NhZ2VGb2xkZXJJZCkgeworCQl0cnkgeworCQkJUXVlcnkgcXVlcnkgPSBlbS5jcmVhdGVOYW1lZFF1ZXJ5KCJ1cGRhdGVQcml2YXRlTWVzc2FnZXNUb1RyYXNoIik7IAorCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJpc1RyYXNoIiwgaXNUcmFzaCk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInByaXZhdGVNZXNzYWdlRm9sZGVySWQiLCBwcml2YXRlTWVzc2FnZUZvbGRlcklkKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigicHJpdmF0ZU1lc3NhZ2VJZHMiLCBwcml2YXRlTWVzc2FnZUlkcyk7CisJCQlpbnQgdXBkYXRlZEVudGl0aWVzID0gcXVlcnkuZXhlY3V0ZVVwZGF0ZSgpOworCQkJCisJCQkvL1JlZnJlc2ggdGhlIEVudGl0aWVzIGluIHRoZSBDYWNoZSBhcyBIaWJlcm5hdGUgd2lsbCBub3QgZG8gaXQhCisJCQkvL0ZJWE1FIHdlaXJkIGNvZGUKKwkJCWZvciAoTG9uZyBwcml2YXRlTWVzc2FnZUlkIDogcHJpdmF0ZU1lc3NhZ2VJZHMpIHsKKwkJCQlUeXBlZFF1ZXJ5PFByaXZhdGVNZXNzYWdlPiBxdWVyeVNlbCA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoImdldFByaXZhdGVNZXNzYWdlc0J5SWQiLCBQcml2YXRlTWVzc2FnZS5jbGFzcyk7IAorCQkJCXF1ZXJ5U2VsLnNldFBhcmFtZXRlcigicHJpdmF0ZU1lc3NhZ2VJZCIsIHByaXZhdGVNZXNzYWdlSWQpOworCQkJCXRyeSB7CisJCQkJCXF1ZXJ5U2VsLmdldFNpbmdsZVJlc3VsdCgpOworCQkJICAgIH0gY2F0Y2ggKE5vUmVzdWx0RXhjZXB0aW9uIGV4KSB7CisJCQkgICAgfQorCQkJfQorCQkJCisJCQlyZXR1cm4gdXBkYXRlZEVudGl0aWVzOworCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJbG9nLmVycm9yKCJbdXBkYXRlUHJpdmF0ZU1lc3NhZ2VzVG9UcmFzaF0iLGUpOworCQl9CisJCXJldHVybiAtMTsKKwl9CisJCisJcHVibGljIGludCB1cGRhdGVQcml2YXRlTWVzc2FnZXNSZWFkU3RhdHVzKExpc3Q8TG9uZz4gcHJpdmF0ZU1lc3NhZ2VJZHMsIEJvb2xlYW4gaXNSZWFkKSB7CisJCXRyeSB7CisJCQlRdWVyeSBxdWVyeSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoInVwZGF0ZVByaXZhdGVNZXNzYWdlc1JlYWRTdGF0dXMiKTsgCisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImlzUmVhZCIsIGlzUmVhZCk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInByaXZhdGVNZXNzYWdlSWRzIiwgcHJpdmF0ZU1lc3NhZ2VJZHMpOworCQkJaW50IHVwZGF0ZWRFbnRpdGllcyA9IHF1ZXJ5LmV4ZWN1dGVVcGRhdGUoKTsKKwkJCQorCQkJLy9SZWZyZXNoIHRoZSBFbnRpdGllcyBpbiB0aGUgQ2FjaGUgYXMgSGliZXJuYXRlIHdpbGwgbm90IGRvIGl0IQorCQkJLy9GSVhNRSB3ZWlyZCBjb2RlCisJCQlmb3IgKExvbmcgcHJpdmF0ZU1lc3NhZ2VJZCA6IHByaXZhdGVNZXNzYWdlSWRzKSB7CisJCQkJVHlwZWRRdWVyeTxQcml2YXRlTWVzc2FnZT4gcXVlcnlTZWwgPSBlbS5jcmVhdGVOYW1lZFF1ZXJ5KCJnZXRQcml2YXRlTWVzc2FnZXNCeUlkIiwgUHJpdmF0ZU1lc3NhZ2UuY2xhc3MpOyAKKwkJCQlxdWVyeVNlbC5zZXRQYXJhbWV0ZXIoInByaXZhdGVNZXNzYWdlSWQiLCBwcml2YXRlTWVzc2FnZUlkKTsKKwkJCQl0cnkgeworCQkJCQlxdWVyeVNlbC5nZXRTaW5nbGVSZXN1bHQoKTsKKwkJCSAgICB9IGNhdGNoIChOb1Jlc3VsdEV4Y2VwdGlvbiBleCkgeworCQkJICAgIH0KKwkJCX0KKwkJCXJldHVybiB1cGRhdGVkRW50aXRpZXM7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCQlsb2cuZXJyb3IoIlt1cGRhdGVQcml2YXRlTWVzc2FnZXNSZWFkU3RhdHVzXSIsZSk7CisJCX0KKwkJcmV0dXJuIC0xOworCX0KKworCXB1YmxpYyBJbnRlZ2VyIG1vdmVNYWlsc1RvRm9sZGVyKExpc3Q8TG9uZz4gcHJpdmF0ZU1lc3NhZ2VJZHMsIExvbmcgcHJpdmF0ZU1lc3NhZ2VGb2xkZXJJZCkgeworCQl0cnkgeworCQkJUXVlcnkgcXVlcnkgPSBlbS5jcmVhdGVOYW1lZFF1ZXJ5KCJtb3ZlTWFpbHNUb0ZvbGRlciIpOyAKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigicHJpdmF0ZU1lc3NhZ2VGb2xkZXJJZCIsIHByaXZhdGVNZXNzYWdlRm9sZGVySWQpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJwcml2YXRlTWVzc2FnZUlkcyIsIHByaXZhdGVNZXNzYWdlSWRzKTsKKwkJCWludCB1cGRhdGVkRW50aXRpZXMgPSBxdWVyeS5leGVjdXRlVXBkYXRlKCk7CisJCQkKKwkJCS8vUmVmcmVzaCB0aGUgRW50aXRpZXMgaW4gdGhlIENhY2hlIGFzIEhpYmVybmF0ZSB3aWxsIG5vdCBkbyBpdCEKKwkJCS8vRklYTUUgd2VpcmQgY29kZQorCQkJZm9yIChMb25nIHByaXZhdGVNZXNzYWdlSWQgOiBwcml2YXRlTWVzc2FnZUlkcykgeworCQkJCVR5cGVkUXVlcnk8UHJpdmF0ZU1lc3NhZ2U+IHF1ZXJ5U2VsID0gZW0uY3JlYXRlTmFtZWRRdWVyeSgiZ2V0UHJpdmF0ZU1lc3NhZ2VzQnlJZCIsIFByaXZhdGVNZXNzYWdlLmNsYXNzKTsgCisJCQkJcXVlcnlTZWwuc2V0UGFyYW1ldGVyKCJwcml2YXRlTWVzc2FnZUlkIiwgcHJpdmF0ZU1lc3NhZ2VJZCk7CisJCQkJdHJ5IHsKKwkJCQkJcXVlcnlTZWwuZ2V0U2luZ2xlUmVzdWx0KCk7CisJCQkgICAgfSBjYXRjaCAoTm9SZXN1bHRFeGNlcHRpb24gZXgpIHsKKwkJCSAgICB9CisJCQl9CisJCQlyZXR1cm4gdXBkYXRlZEVudGl0aWVzOworCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJbG9nLmVycm9yKCJbdXBkYXRlUHJpdmF0ZU1lc3NhZ2VzUmVhZFN0YXR1c10iLGUpOworCQl9CisJCXJldHVybiAtMTsKKwl9CisJCisJcHVibGljIGludCBkZWxldGVQcml2YXRlTWVzc2FnZXMoTGlzdDxMb25nPiBwcml2YXRlTWVzc2FnZUlkcykgeworCQl0cnkgeworCQkJUXVlcnkgcXVlcnkgPSBlbS5jcmVhdGVOYW1lZFF1ZXJ5KCJkZWxldGVQcml2YXRlTWVzc2FnZXMiKTsgCisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInByaXZhdGVNZXNzYWdlSWRzIiwgcHJpdmF0ZU1lc3NhZ2VJZHMpOworCQkJcmV0dXJuIHF1ZXJ5LmV4ZWN1dGVVcGRhdGUoKTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCWxvZy5lcnJvcigiW2RlbGV0ZVByaXZhdGVNZXNzYWdlc10iLGUpOworCQl9CisJCXJldHVybiAtMTsKKwl9CisJCisJcHVibGljIExpc3Q8UHJpdmF0ZU1lc3NhZ2U+IGdldFByaXZhdGVNZXNzYWdlc0J5Um9vbShMb25nIHJvb21JZCkgeworCQl0cnkgeworCQkJVHlwZWRRdWVyeTxQcml2YXRlTWVzc2FnZT4gcXVlcnkgPSBlbS5jcmVhdGVOYW1lZFF1ZXJ5KCJnZXRQcml2YXRlTWVzc2FnZXNCeVJvb20iLCBQcml2YXRlTWVzc2FnZS5jbGFzcyk7IAorCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJyb29tSWQiLCByb29tSWQpOworCQkJcmV0dXJuIHF1ZXJ5LmdldFJlc3VsdExpc3QoKTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCWxvZy5lcnJvcigiW2dldFByaXZhdGVNZXNzYWdlc0J5Um9vbV0iLGUpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvdXNlci9kYW8vU2FsdXRhdGlvbkRhby5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvdXNlci9kYW8vU2FsdXRhdGlvbkRhby5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhZDUyYzYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS91c2VyL2Rhby9TYWx1dGF0aW9uRGFvLmphdmEKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLmRhbzsKKworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5TWFuYWdlcjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5QZXJzaXN0ZW5jZUNvbnRleHQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVHlwZWRRdWVyeTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5jcml0ZXJpYS5Dcml0ZXJpYUJ1aWxkZXI7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuY3JpdGVyaWEuQ3JpdGVyaWFRdWVyeTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5jcml0ZXJpYS5Sb290OworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuRmllbGRNYW5hZ2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuU2FsdXRhdGlvbjsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uQXV0b3dpcmVkOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsudHJhbnNhY3Rpb24uYW5ub3RhdGlvbi5UcmFuc2FjdGlvbmFsOworCisvKioKKyAqIENSVUQgb3BlcmF0aW9ucyBmb3Ige0BsaW5rIFNhbHV0YXRpb259CisgKiAKKyAqIEBhdXRob3Igc3dhZ25lcgorICogCisgKi8KK0BUcmFuc2FjdGlvbmFsCitwdWJsaWMgY2xhc3MgU2FsdXRhdGlvbkRhbyB7CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKAorCQkJU2FsdXRhdGlvbkRhby5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCisJQEF1dG93aXJlZAorCXByaXZhdGUgRmllbGRNYW5hZ2VyIGZpZWxkTWFuYWdlcjsKKworCUBQZXJzaXN0ZW5jZUNvbnRleHQKKwlwcml2YXRlIEVudGl0eU1hbmFnZXIgZW07CisKKwkvKioKKwkgKiBBZGRzIGEgbmV3IFNhbHV0YXRpb24gdG8gdGhlIHRhYmxlIFRpdGxlcworCSAqIAorCSAqIEBwYXJhbSB0aXRlbG5hbWUKKwkgKi8KKwlwdWJsaWMgTG9uZyBhZGRVc2VyU2FsdXRhdGlvbihTdHJpbmcgdGl0ZWxuYW1lLCBsb25nIGZpZWxkdmFsdWVzX2lkKSB7CisJCXRyeSB7CisJCQlTYWx1dGF0aW9uIHRpID0gbmV3IFNhbHV0YXRpb24oKTsKKwkJCXRpLnNldE5hbWUodGl0ZWxuYW1lKTsKKwkJCXRpLnNldERlbGV0ZWQoZmFsc2UpOworCQkJdGkuc2V0RmllbGR2YWx1ZXNfaWQoZmllbGR2YWx1ZXNfaWQpOworCQkJdGkuc2V0U3RhcnR0aW1lKG5ldyBEYXRlKCkpOworCQkJdGkgPSBlbS5tZXJnZSh0aSk7CisJCQlMb25nIHNhbHV0YXRpb25zX2lkID0gdGkuZ2V0U2FsdXRhdGlvbnNfaWQoKTsKKwkJCXJldHVybiBzYWx1dGF0aW9uc19pZDsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbYWRkVXNlclNhbHV0YXRpb25dIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvKioKKwkgKiBnZXQgYSBsaXN0IG9mIGFsbCBhdmFpbGlibGUgU2FsdXRhdGlvbnMKKwkgKiAKKwkgKiBAcGFyYW0gdXNlcl9sZXZlbAorCSAqIEByZXR1cm4KKwkgKi8KKwlwdWJsaWMgTGlzdDxTYWx1dGF0aW9uPiBnZXRVc2VyU2FsdXRhdGlvbnMobG9uZyBsYW5ndWFnZV9pZCkgeworCQl0cnkgeworCQkJQ3JpdGVyaWFCdWlsZGVyIGNiID0gZW0uZ2V0Q3JpdGVyaWFCdWlsZGVyKCk7CisJCQlDcml0ZXJpYVF1ZXJ5PFNhbHV0YXRpb24+IGNxID0gY2IuY3JlYXRlUXVlcnkoU2FsdXRhdGlvbi5jbGFzcyk7CisJCQlSb290PFNhbHV0YXRpb24+IGZyb20gPSBjcS5mcm9tKFNhbHV0YXRpb24uY2xhc3MpOworCQkJQ3JpdGVyaWFRdWVyeTxTYWx1dGF0aW9uPiBzZWxlY3QgPSBjcS5zZWxlY3QoZnJvbSk7CisJCQlUeXBlZFF1ZXJ5PFNhbHV0YXRpb24+IHEgPSBlbS5jcmVhdGVRdWVyeShzZWxlY3QpOworCQkJTGlzdDxTYWx1dGF0aW9uPiBsbCA9IHEuZ2V0UmVzdWx0TGlzdCgpOworCQkJZm9yIChTYWx1dGF0aW9uIHRpIDogbGwpIHsKKwkJCQl0aS5zZXRMYWJlbChmaWVsZE1hbmFnZXIuZ2V0RmllbGRCeUlkQW5kTGFuZ3VhZ2UoCisJCQkJCQl0aS5nZXRGaWVsZHZhbHVlc19pZCgpLCBsYW5ndWFnZV9pZCkpOworCQkJfQorCisJCQlyZXR1cm4gbGw7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2FkZFVzZXJTYWx1dGF0aW9uXSIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS91c2VyL2Rhby9TdGF0ZURhby5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvdXNlci9kYW8vU3RhdGVEYW8uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDY5NWNhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvdXNlci9kYW8vU3RhdGVEYW8uamF2YQpAQCAtMCwwICsxLDE1MyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuZGFvOworCitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHlNYW5hZ2VyOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlBlcnNpc3RlbmNlQ29udGV4dDsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UeXBlZFF1ZXJ5OworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuU3RhdGU7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsudHJhbnNhY3Rpb24uYW5ub3RhdGlvbi5UcmFuc2FjdGlvbmFsOworCisvKioKKyAqIENSVUQgb3BlcmF0aW9ucyBmb3Ige0BsaW5rIFN0YXRlfQorICogCisgKiBAYXV0aG9yIHNlYmF3YWduZXIKKyAqIAorICovCitAVHJhbnNhY3Rpb25hbAorcHVibGljIGNsYXNzIFN0YXRlRGFvIHsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKAorCQkJU3RhdGVEYW8uY2xhc3MsIE9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKworCUBQZXJzaXN0ZW5jZUNvbnRleHQKKwlwcml2YXRlIEVudGl0eU1hbmFnZXIgZW07CisKKwkvKioKKwkgKiBhZGRzIGEgbmV3IFN0YXRlIHRvIHRoZSBzdGF0ZXMgdGFibGUgd2l0aCBubyBzaG9ydCBuYW1lIGFuZCBjb2RlCisJICogCisJICogQHBhcmFtIG5hbWUKKwkgKiBAcmV0dXJuIHRoZSBpZCBvZiB0aGUgbmV3IHN0YXRlIG9yIG51bGwgaWYgYW4gZXJyb3Igb2NjdXJyZWQKKwkgKi8KKwlwdWJsaWMgTG9uZyBhZGRTdGF0ZShTdHJpbmcgbmFtZSkgeworCQlyZXR1cm4gYWRkU3RhdGUobmFtZSwgIiIsIDApOworCX0KKwkKKwkvKioKKwkgKiBhZGRzIGEgbmV3IFN0YXRlIHRvIHRoZSBzdGF0ZXMgdGFibGUKKwkgKiAKKwkgKiBAcGFyYW0gbmFtZSB0aGUgbmFtZSBvZiB0aGUgY291bnRyeQorCSAqIEBwYXJhbSBzaG9ydE5hbWUgdGhlIHNob3J0IG5hbWUgb2YgdGhlIGNvdW50cnkKKwkgKiBAcGFyYW0gY29kZSB0aGUgY29kZSBvZiB0aGUgY291bnRyeQorCSAqIEByZXR1cm4gdGhlIGlkIG9mIHRoZSBuZXcgc3RhdGUgb3IgbnVsbCBpZiBhbiBlcnJvciBvY2N1cnJlZAorCSAqLworCXB1YmxpYyBMb25nIGFkZFN0YXRlKFN0cmluZyBuYW1lLCBTdHJpbmcgc2hvcnROYW1lLCBpbnQgY29kZSkgeworCQl0cnkgeworCisJCQlTdGF0ZSBzdCA9IG5ldyBTdGF0ZSgpOworCQkJc3Quc2V0TmFtZShuYW1lKTsKKwkJCXN0LnNldFNob3J0TmFtZShzaG9ydE5hbWUpOworCQkJc3Quc2V0Q29kZShjb2RlKTsKKwkJCXN0LnNldFN0YXJ0dGltZShuZXcgRGF0ZSgpKTsKKwkJCXN0LnNldERlbGV0ZWQoZmFsc2UpOworCisJCQlzdCA9IGVtLm1lcmdlKHN0KTsKKwkJCUxvbmcgaWQgPSBzdC5nZXRTdGF0ZV9pZCgpOworCisJCQlsb2cuZGVidWcoImFkZGVkIGlkICIgKyBpZCk7CisKKwkJCXJldHVybiBpZDsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJhZGRTdGF0ZSIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLyoqCisJICogc2VsZWN0cyBhIHN0YXRlIGJ5IGl0cyBpZAorCSAqIAorCSAqIEBwYXJhbSBzdGF0ZV9pZAorCSAqIEByZXR1cm4gdGhlIHN0YXRlLW9iamVjdCBvciBudWxsCisJICovCisJcHVibGljIFN0YXRlIGdldFN0YXRlQnlJZChsb25nIHN0YXRlX2lkKSB7CisJCXRyeSB7CisJCQlUeXBlZFF1ZXJ5PFN0YXRlPiBxdWVyeSA9IGVtCisJCQkJCS5jcmVhdGVOYW1lZFF1ZXJ5KCJnZXRTdGF0ZUJ5SWQiLCBTdGF0ZS5jbGFzcyk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInN0YXRlX2lkIiwgc3RhdGVfaWQpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJkZWxldGVkIiwgdHJ1ZSk7CisJCQlMaXN0PFN0YXRlPiBsbCA9IHF1ZXJ5LmdldFJlc3VsdExpc3QoKTsKKwkJCWlmIChsbC5zaXplKCkgPiAwKSB7CisJCQkJcmV0dXJuIGxsLmdldCgwKTsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJnZXRTdGF0ZUJ5SWQiLCBleDIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKwkKKwkvKioKKwkgKiBzZWxlY3RzIGEgc3RhdGUgYnkgaXRzIG5hbWUKKwkgKiAKKwkgKiBAcGFyYW0gc3RhdGVfaWQKKwkgKiBAcmV0dXJuIHRoZSBzdGF0ZS1vYmplY3Qgb3IgbnVsbAorCSAqLworCXB1YmxpYyBTdGF0ZSBnZXRTdGF0ZUJ5TmFtZShTdHJpbmcgbmFtZSkgeworCQl0cnkgeworCQkJaWYgKG5hbWUgPT0gbnVsbCkgeworCQkJCXJldHVybiBudWxsOworCQkJfQorCQkJVHlwZWRRdWVyeTxTdGF0ZT4gcXVlcnkgPSBlbQorCQkJCQkuY3JlYXRlTmFtZWRRdWVyeSgiZ2V0U3RhdGVCeU5hbWUiLCBTdGF0ZS5jbGFzcyk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoIm5hbWUiLCBuYW1lLnRvTG93ZXJDYXNlKCkpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJkZWxldGVkIiwgdHJ1ZSk7CisJCQlMaXN0PFN0YXRlPiBsbCA9IHF1ZXJ5LmdldFJlc3VsdExpc3QoKTsKKwkJCWlmIChsbC5zaXplKCkgPiAwKSB7CisJCQkJcmV0dXJuIGxsLmdldCgwKTsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJnZXRTdGF0ZUJ5TmFtZSIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLyoqCisJICogR2V0IGFsbCBzdGF0ZS1PYmplY3QKKwkgKiAKKwkgKiBAcmV0dXJuIExpc3Qgb2YgU3RhdGUgT2JqZWN0cyBvciBudWxsCisJICovCisJcHVibGljIExpc3Q8U3RhdGU+IGdldFN0YXRlcygpIHsKKwkJdHJ5IHsKKwkJCVR5cGVkUXVlcnk8U3RhdGU+IHF1ZXJ5ID0gZW0KKwkJCQkJLmNyZWF0ZU5hbWVkUXVlcnkoImdldFN0YXRlcyIsIFN0YXRlLmNsYXNzKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiZGVsZXRlZCIsIHRydWUpOworCQkJTGlzdDxTdGF0ZT4gbGwgPSBxdWVyeS5nZXRSZXN1bHRMaXN0KCk7CisJCQlyZXR1cm4gbGw7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiZ2V0U3RhdGVzIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL3VzZXIvZGFvL1VzZXJDb250YWN0c0Rhby5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvdXNlci9kYW8vVXNlckNvbnRhY3RzRGFvLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzhlMzQ4YQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL3VzZXIvZGFvL1VzZXJDb250YWN0c0Rhby5qYXZhCkBAIC0wLDAgKzEsMjY3IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEudXNlci5kYW87CisKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eU1hbmFnZXI7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTm9SZXN1bHRFeGNlcHRpb247CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuUGVyc2lzdGVuY2VDb250ZXh0OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlF1ZXJ5OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlR5cGVkUXVlcnk7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLlVzZXJNYW5hZ2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuVXNlckNvbnRhY3Q7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLnRyYW5zYWN0aW9uLmFubm90YXRpb24uVHJhbnNhY3Rpb25hbDsKKworQFRyYW5zYWN0aW9uYWwKK3B1YmxpYyBjbGFzcyBVc2VyQ29udGFjdHNEYW8geworCQorCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoVXNlckNvbnRhY3RzRGFvLmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisJQFBlcnNpc3RlbmNlQ29udGV4dAorCXByaXZhdGUgRW50aXR5TWFuYWdlciBlbTsKKyAgICBAQXV0b3dpcmVkCisgICAgcHJpdmF0ZSBVc2VyTWFuYWdlciB1c2VyTWFuYWdlcjsKKworCXB1YmxpYyBMb25nIGFkZFVzZXJDb250YWN0KExvbmcgdXNlcl9pZCwgTG9uZyBvd25lcklkLCBCb29sZWFuIHBlbmRpbmcsIFN0cmluZyBoYXNoKSB7CisJCXRyeSB7CisJCQkKKwkJCVVzZXJDb250YWN0IHVzZXJDb250YWN0ID0gbmV3IFVzZXJDb250YWN0KCk7CisJCQl1c2VyQ29udGFjdC5zZXRJbnNlcnRlZChuZXcgRGF0ZSgpKTsKKwkJCXVzZXJDb250YWN0LnNldE93bmVyKHVzZXJNYW5hZ2VyLmdldFVzZXJCeUlkKG93bmVySWQpKTsKKwkJCXVzZXJDb250YWN0LnNldENvbnRhY3QodXNlck1hbmFnZXIuZ2V0VXNlckJ5SWQodXNlcl9pZCkpOworCQkJdXNlckNvbnRhY3Quc2V0UGVuZGluZyhwZW5kaW5nKTsKKwkJCXVzZXJDb250YWN0LnNldEhhc2goaGFzaCk7CisJCQkKKwkJCXVzZXJDb250YWN0ID0gZW0ubWVyZ2UodXNlckNvbnRhY3QpOworCQkJTG9uZyB1c2VyQ29udGFjdElkID0gdXNlckNvbnRhY3QuZ2V0VXNlckNvbnRhY3RJZCgpOworCQkJCisJCQlyZXR1cm4gdXNlckNvbnRhY3RJZDsJCQkKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCWxvZy5lcnJvcigiW2FkZFVzZXJDb250YWN0XSIsZSk7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCQorCXB1YmxpYyBMb25nIGFkZFVzZXJDb250YWN0T2JqKFVzZXJDb250YWN0IHVzZXJDb250YWN0KSB7CisJCXRyeSB7CisJCQkKKwkJCXVzZXJDb250YWN0LnNldEluc2VydGVkKG5ldyBEYXRlKCkpOworCQkJCisJCQl1c2VyQ29udGFjdCA9IGVtLm1lcmdlKHVzZXJDb250YWN0KTsKKwkJCUxvbmcgdXNlckNvbnRhY3RJZCA9IHVzZXJDb250YWN0LmdldFVzZXJDb250YWN0SWQoKTsKKwkJCQorCQkJcmV0dXJuIHVzZXJDb250YWN0SWQ7CQkJCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCQlsb2cuZXJyb3IoIlthZGRVc2VyQ29udGFjdF0iLGUpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKwkKKwkvKioKKwkgKiBAcGFyYW0gdXNlckNvbnRhY3REZWxldGVJZAorCSAqIEByZXR1cm4gcm93Y291bnQgb2YgdXBkYXRlCisJICovCisJcHVibGljIEludGVnZXIgZGVsZXRlVXNlckNvbnRhY3QoTG9uZyB1c2VyQ29udGFjdERlbGV0ZUlkKSB7CisJCXRyeSB7CisJCQlRdWVyeSBxdWVyeSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoImRlbGV0ZVVzZXJDb250YWN0Iik7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInVzZXJDb250YWN0RGVsZXRlSWQiLCB1c2VyQ29udGFjdERlbGV0ZUlkKTsKKwkgICAgICAgIHJldHVybiBxdWVyeS5leGVjdXRlVXBkYXRlKCk7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCQlsb2cuZXJyb3IoIltkZWxldGVVc2VyQ29udGFjdF0iLGUpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKwkKKwkvKioKKwkgKiBAcGFyYW0gb3duZXJJZAorCSAqIEByZXR1cm4gcm93Y291bnQgb2YgdXBkYXRlCisJICovCisJcHVibGljIEludGVnZXIgZGVsZXRlQWxsVXNlckNvbnRhY3RzKExvbmcgb3duZXJJZCkgeworCQl0cnkgeworCQkJUXVlcnkgcXVlcnkgPSBlbS5jcmVhdGVOYW1lZFF1ZXJ5KCJkZWxldGVBbGxVc2VyQ29udGFjdHMiKTsKKwkgICAgICAgIHF1ZXJ5LnNldFBhcmFtZXRlcigib3duZXJJZCIsb3duZXJJZCk7CisJICAgICAgICByZXR1cm4gcXVlcnkuZXhlY3V0ZVVwZGF0ZSgpOworCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJbG9nLmVycm9yKCJbZGVsZXRlQWxsVXNlckNvbnRhY3RzXSIsZSk7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCQorCXB1YmxpYyBMb25nIGNoZWNrVXNlckNvbnRhY3RzKExvbmcgdXNlcl9pZCwgTG9uZyBvd25lcklkKSB7CisJCXRyeSB7CisJCQlUeXBlZFF1ZXJ5PExvbmc+IHF1ZXJ5ID0gZW0uY3JlYXRlTmFtZWRRdWVyeSgiY2hlY2tVc2VyQ29udGFjdHMiLCBMb25nLmNsYXNzKTsgCisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInVzZXJfaWQiLCB1c2VyX2lkKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigib3duZXJJZCIsIG93bmVySWQpOworCQkJTGlzdDxMb25nPiBsbCA9IHF1ZXJ5LmdldFJlc3VsdExpc3QoKTsKKwkJCQorCQkJbG9nLmluZm8oImNoZWNrVXNlckNvbnRhY3RzIiArIGxsLmdldCgwKSk7CisJCQkKKwkJCXJldHVybiBsbC5nZXQoMCk7CisJCQkKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCWxvZy5lcnJvcigiW2NoZWNrVXNlckNvbnRhY3RzXSIsZSk7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCQorCXB1YmxpYyBVc2VyQ29udGFjdCBnZXRDb250YWN0c0J5SGFzaChTdHJpbmcgaGFzaCkgeworCQl0cnkgeworCQkJVHlwZWRRdWVyeTxVc2VyQ29udGFjdD4gcXVlcnkgPSBlbS5jcmVhdGVOYW1lZFF1ZXJ5KCJnZXRDb250YWN0c0J5SGFzaCIsIFVzZXJDb250YWN0LmNsYXNzKTsgCisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoImhhc2giLCBoYXNoKTsKKwkJCUxpc3Q8VXNlckNvbnRhY3Q+IGxsID0gcXVlcnkuZ2V0UmVzdWx0TGlzdCgpOworCQkJaWYgKGxsLnNpemUoKSA+IDApIHsKKwkJCQlyZXR1cm4gbGwuZ2V0KDApOworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJbG9nLmVycm9yKCJbZ2V0Q29udGFjdHNCeUhhc2hdIixlKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisJCisJcHVibGljIExpc3Q8VXNlckNvbnRhY3Q+IGdldENvbnRhY3RzQnlVc2VyQW5kU3RhdHVzKExvbmcgb3duZXJJZCwgQm9vbGVhbiBwZW5kaW5nKSB7CisJCXRyeSB7CisJCQlUeXBlZFF1ZXJ5PFVzZXJDb250YWN0PiBxdWVyeSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoImdldENvbnRhY3RzQnlVc2VyQW5kU3RhdHVzIiwgVXNlckNvbnRhY3QuY2xhc3MpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJvd25lcklkIiwgb3duZXJJZCk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInBlbmRpbmciLCBwZW5kaW5nKTsKKwkJCXJldHVybiBxdWVyeS5nZXRSZXN1bHRMaXN0KCk7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCQlsb2cuZXJyb3IoIltnZXRDb250YWN0c0J5VXNlckFuZFN0YXR1c10iLGUpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKwkKKwlwdWJsaWMgVXNlckNvbnRhY3QgZ2V0VXNlckNvbnRhY3RCeVNoYXJlQ2FsZW5kYXIoTG9uZyBjb250YWN0SWQsCisJCQlCb29sZWFuIHNoYXJlQ2FsZW5kYXIsIExvbmcgdXNlcklkKSB7CisJCXRyeSB7CisJCQlUeXBlZFF1ZXJ5PFVzZXJDb250YWN0PiBxdWVyeSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoImdldFVzZXJDb250YWN0QnlTaGFyZUNhbGVuZGFyIiwKKwkJCQkJVXNlckNvbnRhY3QuY2xhc3MpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJjb250YWN0SWQiLCBjb250YWN0SWQpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJ1c2VySWQiLCB1c2VySWQpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJzaGFyZUNhbGVuZGFyIiwgc2hhcmVDYWxlbmRhcik7CisJCQlMaXN0PFVzZXJDb250YWN0PiBsbCA9IHF1ZXJ5LmdldFJlc3VsdExpc3QoKTsKKwkJCWlmIChsbC5zaXplKCkgPiAwKSB7CisJCQkJcmV0dXJuIGxsLmdldCgwKTsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCWxvZy5lcnJvcigiW2dldFVzZXJDb250YWN0QnlTaGFyZUNhbGVuZGFyXSIsIGUpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMaXN0PFVzZXJDb250YWN0PiBnZXRDb250YWN0c0J5U2hhcmVDYWxlbmRhcihMb25nIGNvbnRhY3RJZCwgQm9vbGVhbiBzaGFyZUNhbGVuZGFyKSB7CisJCXRyeSB7CisJCQlUeXBlZFF1ZXJ5PFVzZXJDb250YWN0PiBxdWVyeSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoImdldENvbnRhY3RzQnlTaGFyZUNhbGVuZGFyIiwgVXNlckNvbnRhY3QuY2xhc3MpOyAKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiY29udGFjdElkIiwgY29udGFjdElkKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigic2hhcmVDYWxlbmRhciIsIHNoYXJlQ2FsZW5kYXIpOworCQkJcmV0dXJuIHF1ZXJ5LmdldFJlc3VsdExpc3QoKTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCWxvZy5lcnJvcigiW2dldENvbnRhY3RzQnlTaGFyZUNhbGVuZGFyXSIsZSk7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCQorCXB1YmxpYyBMaXN0PFVzZXJDb250YWN0PiBnZXRDb250YWN0UmVxdWVzdHNCeVVzZXJBbmRTdGF0dXMoTG9uZyB1c2VyX2lkLCBCb29sZWFuIHBlbmRpbmcpIHsKKwkJdHJ5IHsKKwkJCVR5cGVkUXVlcnk8VXNlckNvbnRhY3Q+IHF1ZXJ5ID0gZW0uY3JlYXRlTmFtZWRRdWVyeSgiZ2V0Q29udGFjdFJlcXVlc3RzQnlVc2VyQW5kU3RhdHVzIiwgVXNlckNvbnRhY3QuY2xhc3MpOyAKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigidXNlcl9pZCIsIHVzZXJfaWQpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJwZW5kaW5nIiwgcGVuZGluZyk7CisJCQlyZXR1cm4gcXVlcnkuZ2V0UmVzdWx0TGlzdCgpOworCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJbG9nLmVycm9yKCJbZ2V0Q29udGFjdFJlcXVlc3RzQnlVc2VyQW5kU3RhdHVzXSIsZSk7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCQorCXB1YmxpYyBVc2VyQ29udGFjdCBnZXRVc2VyQ29udGFjdHMoTG9uZyB1c2VyQ29udGFjdElkKSB7CisJCXRyeSB7CisJCQlUeXBlZFF1ZXJ5PFVzZXJDb250YWN0PiBxdWVyeSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoImdldFVzZXJDb250YWN0c0J5SWQiLCBVc2VyQ29udGFjdC5jbGFzcyk7IAorCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJ1c2VyQ29udGFjdElkIiwgdXNlckNvbnRhY3RJZCk7CisJCQlVc2VyQ29udGFjdCB1c2VyQ29udGFjdHMgPSBudWxsOworCQkJdHJ5IHsKKwkJCQl1c2VyQ29udGFjdHMgPSBxdWVyeS5nZXRTaW5nbGVSZXN1bHQoKTsKKwkJICAgIH0gY2F0Y2ggKE5vUmVzdWx0RXhjZXB0aW9uIGV4KSB7CisJCSAgICB9CisJCQlyZXR1cm4gdXNlckNvbnRhY3RzOworCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJbG9nLmVycm9yKCJbZ2V0VXNlckNvbnRhY3RzXSIsZSk7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCQorCXB1YmxpYyBMaXN0PFVzZXJDb250YWN0PiBnZXRVc2VyQ29udGFjdHMoKSB7CisJCXRyeSB7CisJCQlUeXBlZFF1ZXJ5PFVzZXJDb250YWN0PiBxdWVyeSA9IGVtLmNyZWF0ZU5hbWVkUXVlcnkoImdldFVzZXJDb250YWN0cyIsIFVzZXJDb250YWN0LmNsYXNzKTsgCisJCQlyZXR1cm4gcXVlcnkuZ2V0UmVzdWx0TGlzdCgpOworCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJbG9nLmVycm9yKCJbZ2V0VXNlckNvbnRhY3RzXSIsZSk7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCQorCXB1YmxpYyBMb25nIHVwZGF0ZUNvbnRhY3RTdGF0dXMoTG9uZyB1c2VyQ29udGFjdElkLCBCb29sZWFuIHBlbmRpbmcpIHsKKwkJdHJ5IHsKKwkJCQorCQkJVXNlckNvbnRhY3QgdXNlckNvbnRhY3RzID0gdGhpcy5nZXRVc2VyQ29udGFjdHModXNlckNvbnRhY3RJZCk7CisJCQkKKwkJCWlmICh1c2VyQ29udGFjdHMgPT0gbnVsbCkgeworCQkJCXJldHVybiBudWxsOworCQkJfQorCQkJdXNlckNvbnRhY3RzLnNldFBlbmRpbmcocGVuZGluZyk7CisJCQl1c2VyQ29udGFjdHMuc2V0VXBkYXRlZChuZXcgRGF0ZSgpKTsKKwkJCQorCQkJaWYgKHVzZXJDb250YWN0cy5nZXRVc2VyQ29udGFjdElkKCkgPT0gMCkgeworCQkJCWVtLnBlcnNpc3QodXNlckNvbnRhY3RzKTsKKwkJICAgIH0gZWxzZSB7CisJCSAgICAJaWYgKCFlbS5jb250YWlucyh1c2VyQ29udGFjdHMpKSB7CisJCSAgICAJCWVtLm1lcmdlKHVzZXJDb250YWN0cyk7CisJCQkgICAgfQorCQkJfQorCQkJCisJCQlyZXR1cm4gdXNlckNvbnRhY3RJZDsKKwkJCQorCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJbG9nLmVycm9yKCJbdXBkYXRlQ29udGFjdFN0YXR1c10iLGUpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKwkKKwlwdWJsaWMgdm9pZCB1cGRhdGVDb250YWN0KFVzZXJDb250YWN0IHVzZXJDb250YWN0cykgeworCQl0cnkgeworCQkJdXNlckNvbnRhY3RzLnNldFVwZGF0ZWQobmV3IERhdGUoKSk7CisJCQkKKwkJCWlmICh1c2VyQ29udGFjdHMuZ2V0VXNlckNvbnRhY3RJZCgpID09IDApIHsKKwkJCQllbS5wZXJzaXN0KHVzZXJDb250YWN0cyk7CisJCSAgICB9IGVsc2UgeworCQkgICAgCWlmICghZW0uY29udGFpbnModXNlckNvbnRhY3RzKSkgeworCQkgICAgCQllbS5tZXJnZSh1c2VyQ29udGFjdHMpOworCQkJICAgIH0KKwkJCX0KKwkJCQorCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJbG9nLmVycm9yKCJbdXBkYXRlQ29udGFjdF0iLGUpOworCQl9CisJfQorCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS91c2VyL2Rhby9Vc2Vyc0Rhby5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvdXNlci9kYW8vVXNlcnNEYW8uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjY5ZGVhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvdXNlci9kYW8vVXNlcnNEYW8uamF2YQpAQCAtMCwwICsxLDM1MSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuZGFvOworCitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHlNYW5hZ2VyOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk5vUmVzdWx0RXhjZXB0aW9uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlBlcnNpc3RlbmNlQ29udGV4dDsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UeXBlZFF1ZXJ5OworCitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmxhbmcuU3RyaW5nVXRpbHM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVuanBhLnBlcnNpc3RlbmNlLk9wZW5KUEFQZXJzaXN0ZW5jZTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5qcGEucGVyc2lzdGVuY2UuT3BlbkpQQVF1ZXJ5OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLklEYXRhUHJvdmlkZXJEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5kYW8uQ29uZmlndXJhdGlvbkRhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLmRhby5PbVRpbWVab25lRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuQWRkcmVzczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlVzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMuRGFvSGVscGVyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLmNyeXB0Lk1hbmFnZUNyeXB0U3R5bGU7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLnRyYW5zYWN0aW9uLmFubm90YXRpb24uVHJhbnNhY3Rpb25hbDsKKworLyoqCisgKiBDUlVEIG9wZXJhdGlvbnMgZm9yIHtAbGluayBVc2VyfQorICogCisgKiBAYXV0aG9yIHN3YWduZXIsIHNvbG9tYXgKKyAqIAorICovCitAVHJhbnNhY3Rpb25hbAorcHVibGljIGNsYXNzIFVzZXJzRGFvIGltcGxlbWVudHMgSURhdGFQcm92aWRlckRhbzxVc2VyPiB7CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKAorCQkJVXNlcnNEYW8uY2xhc3MsIE9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKworCXB1YmxpYyBmaW5hbCBzdGF0aWMgU3RyaW5nW10gc2VhcmNoRmllbGRzID0geyJsYXN0bmFtZSIsICJmaXJzdG5hbWUiLCAibG9naW4iLCAiYWRyZXNzZXMuZW1haWwifTsKKworCUBQZXJzaXN0ZW5jZUNvbnRleHQKKwlwcml2YXRlIEVudGl0eU1hbmFnZXIgZW07CisKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBNYW5hZ2VDcnlwdFN0eWxlIGNyeXB0TWFuYWdlcjsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBDb25maWd1cmF0aW9uRGFvIGNvbmZpZ3VyYXRpb25EYW87CisJQEF1dG93aXJlZAorCXByaXZhdGUgT21UaW1lWm9uZURhbyBvbVRpbWVab25lRGFvSW1wbDsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBTdGF0ZURhbyBzdGF0ZURhb0ltcGw7CisKKwkvKioKKwkgKiBHZXQgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIHtAbGluayBVc2VyfSBlbnRpdHksIHdpdGggYWxsIGRlZmF1bHQgdmFsdWVzCisJICogc2V0CisJICogCisJICogQHBhcmFtIGN1cnJlbnRVc2VyCisJICogICAgICAgICAgICB0aGUgdGltZXpvbmUgb2YgdGhlIGN1cnJlbnQgdXNlciBpcyBjb3BpZWQgdG8gdGhlIG5ldyBkZWZhdWx0CisJICogICAgICAgICAgICBvbmUgKGlmIHRoZSBjdXJyZW50IHVzZXIgaGFzIG9uZSkKKwkgKiBAcmV0dXJuCisJICovCisJcHVibGljIFVzZXIgZ2V0TmV3VXNlckluc3RhbmNlKFVzZXIgY3VycmVudFVzZXIpIHsKKwkJVXNlciB1c2VyID0gbmV3IFVzZXIoKTsKKwkJdXNlci5zZXRTYWx1dGF0aW9uc19pZCgxTCk7IC8vIFRPRE86IEZpeCBkZWZhdWx0IHNlbGVjdGlvbiB0byBiZQorCQkJCQkJCQkJLy8gY29uZmlndXJhYmxlCisJCXVzZXIuc2V0TGV2ZWxfaWQoMUwpOworCQl1c2VyLnNldExhbmd1YWdlX2lkKGNvbmZpZ3VyYXRpb25EYW8uZ2V0Q29uZlZhbHVlKAorCQkJCSJkZWZhdWx0X2xhbmdfaWQiLCBMb25nLmNsYXNzLCAiMSIpKTsKKwkJdXNlci5zZXRPbVRpbWVab25lKG9tVGltZVpvbmVEYW9JbXBsLmdldERlZmF1bHRPbVRpbWVab25lKGN1cnJlbnRVc2VyKSk7CisJCXVzZXIuc2V0Rm9yY2VUaW1lWm9uZUNoZWNrKGZhbHNlKTsKKwkJdXNlci5zZXRTZW5kU01TKGZhbHNlKTsKKwkJdXNlci5zZXRBZ2UobmV3IERhdGUoKSk7CisJCUFkZHJlc3MgYWRyZXNzZXMgPSBuZXcgQWRkcmVzcygpOworCQlhZHJlc3Nlcy5zZXRTdGF0ZXMoc3RhdGVEYW9JbXBsLmdldFN0YXRlQnlJZCgxTCkpOworCQl1c2VyLnNldEFkcmVzc2VzKGFkcmVzc2VzKTsKKwkJdXNlci5zZXRTdGF0dXMoMSk7CisJCXVzZXIuc2V0U2hvd0NvbnRhY3REYXRhKGZhbHNlKTsKKwkJdXNlci5zZXRTaG93Q29udGFjdERhdGFUb0NvbnRhY3RzKGZhbHNlKTsKKworCQlyZXR1cm4gdXNlcjsKKwl9CisKKwlwdWJsaWMgTGlzdDxVc2VyPiBnZXQoaW50IGZpcnN0LCBpbnQgY291bnQpIHsKKwkJVHlwZWRRdWVyeTxVc2VyPiBxID0gZW0uY3JlYXRlTmFtZWRRdWVyeSgiZ2V0Tm9uZGVsZXRlZFVzZXJzIiwgVXNlci5jbGFzcyk7CisJCXEuc2V0Rmlyc3RSZXN1bHQoZmlyc3QpOworCQlxLnNldE1heFJlc3VsdHMoY291bnQpOworCQlyZXR1cm4gcS5nZXRSZXN1bHRMaXN0KCk7CisJfQorCisJcHVibGljIExpc3Q8VXNlcj4gZ2V0KFN0cmluZyBzZWFyY2gsIGludCBzdGFydCwgaW50IGNvdW50LCBTdHJpbmcgc29ydCkgeworCQlUeXBlZFF1ZXJ5PFVzZXI+IHEgPSBlbS5jcmVhdGVRdWVyeShEYW9IZWxwZXIuZ2V0U2VhcmNoUXVlcnkoIlVzZXIiLCAidSIsIHNlYXJjaCwgdHJ1ZSwgZmFsc2UsIHNvcnQsIHNlYXJjaEZpZWxkcyksIFVzZXIuY2xhc3MpOworCQlxLnNldEZpcnN0UmVzdWx0KHN0YXJ0KTsKKwkJcS5zZXRNYXhSZXN1bHRzKGNvdW50KTsKKwkJcmV0dXJuIHEuZ2V0UmVzdWx0TGlzdCgpOworCX0KKwkKKwlwdWJsaWMgbG9uZyBjb3VudCgpIHsKKwkJLy8gZ2V0IGFsbCB1c2VycworCQlUeXBlZFF1ZXJ5PExvbmc+IHEgPSBlbS5jcmVhdGVOYW1lZFF1ZXJ5KCJjb3VudE5vbmRlbGV0ZWRVc2VycyIsIExvbmcuY2xhc3MpOworCQlyZXR1cm4gcS5nZXRTaW5nbGVSZXN1bHQoKTsKKwl9CisKKwlwdWJsaWMgbG9uZyBjb3VudChTdHJpbmcgc2VhcmNoKSB7CisJCVR5cGVkUXVlcnk8TG9uZz4gcSA9IGVtLmNyZWF0ZVF1ZXJ5KERhb0hlbHBlci5nZXRTZWFyY2hRdWVyeSgiVXNlciIsICJ1Iiwgc2VhcmNoLCB0cnVlLCB0cnVlLCBudWxsLCBzZWFyY2hGaWVsZHMpLCBMb25nLmNsYXNzKTsKKwkJcmV0dXJuIHEuZ2V0U2luZ2xlUmVzdWx0KCk7CisJfQorCQorCXB1YmxpYyBMaXN0PFVzZXI+IGdldChTdHJpbmcgc2VhcmNoKSB7CisJCVR5cGVkUXVlcnk8VXNlcj4gcSA9IGVtLmNyZWF0ZVF1ZXJ5KERhb0hlbHBlci5nZXRTZWFyY2hRdWVyeSgiVXNlciIsICJ1Iiwgc2VhcmNoLCB0cnVlLCBmYWxzZSwgbnVsbCwgc2VhcmNoRmllbGRzKSwgVXNlci5jbGFzcyk7CisJCXJldHVybiBxLmdldFJlc3VsdExpc3QoKTsKKwl9CisKKwlwdWJsaWMgVXNlciB1cGRhdGUoVXNlciB1LCBMb25nIHVzZXJJZCkgeworCQlpZiAodS5nZXRVc2VyX2lkKCkgPT0gbnVsbCkgeworCQkJdS5zZXRTdGFydHRpbWUobmV3IERhdGUoKSk7CisJCQllbS5wZXJzaXN0KHUpOworCQl9IGVsc2UgeworCQkJdS5zZXRVcGRhdGV0aW1lKG5ldyBEYXRlKCkpOworCQkJdSA9CWVtLm1lcmdlKHUpOworCQl9CisJCXJldHVybiB1OworCX0KKwkKKwlwdWJsaWMgdm9pZCBkZWxldGUoVXNlciB1LCBMb25nIHVzZXJJZCkgeworCQlkZWxldGVVc2VySUQodS5nZXRVc2VyX2lkKCkpOworCX0KKworCXB1YmxpYyBVc2VyIGdldChsb25nIHVzZXJfaWQpIHsKKwkJaWYgKHVzZXJfaWQgPiAwKSB7CisJCQl0cnkgeworCQkJCVR5cGVkUXVlcnk8VXNlcj4gcXVlcnkgPSBlbS5jcmVhdGVOYW1lZFF1ZXJ5KCJnZXRVc2VyQnlJZCIsCisJCQkJCQlVc2VyLmNsYXNzKTsKKwkJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInVzZXJfaWQiLCB1c2VyX2lkKTsKKworCQkJCVVzZXIgdXNlcnMgPSBudWxsOworCQkJCXRyeSB7CisJCQkJCXVzZXJzID0gcXVlcnkuZ2V0U2luZ2xlUmVzdWx0KCk7CisJCQkJfSBjYXRjaCAoTm9SZXN1bHRFeGNlcHRpb24gZXgpIHsKKwkJCQl9CisJCQkJcmV0dXJuIHVzZXJzOworCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJCWxvZy5lcnJvcigiZ2V0VXNlciIsIGV4Mik7CisJCQl9CisJCX0gZWxzZSB7CisJCQlsb2cuaW5mbygiW2dldFVzZXJdICIgKyAiSW5mbzogTm8gVVNFUl9JRCBnaXZlbiIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMb25nIGRlbGV0ZVVzZXJJRChsb25nIHVzZXJJZCkgeworCQl0cnkgeworCQkJaWYgKHVzZXJJZCAhPSAwKSB7CisJCQkJVXNlciB1cyA9IGdldCh1c2VySWQpOworCQkJCXVzLnNldERlbGV0ZWQodHJ1ZSk7CisJCQkJdXMuc2V0VXBkYXRldGltZShuZXcgRGF0ZSgpKTsKKwkJCQl1cy5zZXRTaXBVc2VyKG51bGwpOworCQkJCUFkZHJlc3MgYWRyID0gdXMuZ2V0QWRyZXNzZXMoKTsKKwkJCQlpZiAoYWRyICE9IG51bGwpIHsKKwkJCQkJYWRyLnNldERlbGV0ZWQodHJ1ZSk7CisJCQkJfQorCisJCQkJaWYgKHVzLmdldFVzZXJfaWQoKSA9PSBudWxsKSB7CisJCQkJCWVtLnBlcnNpc3QodXMpOworCQkJCX0gZWxzZSB7CisJCQkJCWlmICghZW0uY29udGFpbnModXMpKSB7CisJCQkJCQllbS5tZXJnZSh1cyk7CisJCQkJCX0KKwkJCQl9CisJCQkJcmV0dXJuIHVzLmdldFVzZXJfaWQoKTsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZGVsZXRlVXNlcklEXSIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIExpc3Q8VXNlcj4gZ2V0QWxsVXNlcnMoKSB7CisJCXRyeSB7CisJCQlUeXBlZFF1ZXJ5PFVzZXI+IHEgPSBlbS5jcmVhdGVOYW1lZFF1ZXJ5KCJnZXROb25kZWxldGVkVXNlcnMiLCBVc2VyLmNsYXNzKTsKKwkJCXJldHVybiBxLmdldFJlc3VsdExpc3QoKTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbZ2V0QWxsVXNlcnNdICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIExpc3Q8VXNlcj4gZ2V0QWxsVXNlcnNEZWxldGVkKCkgeworCQl0cnkgeworCQkJVHlwZWRRdWVyeTxVc2VyPiBxID0gZW0uY3JlYXRlTmFtZWRRdWVyeSgiZ2V0QWxsVXNlcnMiLAorCQkJCQlVc2VyLmNsYXNzKTsKKwkJCUBTdXBwcmVzc1dhcm5pbmdzKCJ1bmNoZWNrZWQiKQorCQkJT3BlbkpQQVF1ZXJ5PFVzZXI+IGtxID0gT3BlbkpQQVBlcnNpc3RlbmNlLmNhc3QocSk7CisJCQlrcS5nZXRGZXRjaFBsYW4oKS5hZGRGZXRjaEdyb3VwKCJiYWNrdXBleHBvcnQiKTsKKwkJCXJldHVybiBrcS5nZXRSZXN1bHRMaXN0KCk7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleDIpIHsKKwkJCWxvZy5lcnJvcigiW2dldEFsbFVzZXJzRGVsZXRlZF0gIiwgZXgyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvKioKKwkgKiBjaGVjayBmb3IgZHVwbGljYXRlcworCSAqIAorCSAqIEBwYXJhbSBEYXRhVmFsdWUKKwkgKiBAcmV0dXJuCisJICovCisJcHVibGljIGJvb2xlYW4gY2hlY2tVc2VyTG9naW4oU3RyaW5nIERhdGFWYWx1ZSkgeworCQl0cnkgeworCQkJVHlwZWRRdWVyeTxVc2VyPiBxdWVyeSA9IGVtCisJCQkJCS5jcmVhdGVOYW1lZFF1ZXJ5KCJjaGVja1VzZXJMb2dpbiIsIFVzZXIuY2xhc3MpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJEYXRhVmFsdWUiLCBEYXRhVmFsdWUpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJkZWxldGVkIiwgdHJ1ZSk7CisJCQlpbnQgY291bnQgPSBxdWVyeS5nZXRSZXN1bHRMaXN0KCkuc2l6ZSgpOworCisJCQlpZiAoY291bnQgIT0gMCkgeworCQkJCXJldHVybiBmYWxzZTsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4MikgeworCQkJbG9nLmVycm9yKCJbY2hlY2tVc2VyRGF0YV0iLCBleDIpOworCQl9CisJCXJldHVybiB0cnVlOworCX0KKworCXB1YmxpYyBVc2VyIGdldFVzZXJCeU5hbWUoU3RyaW5nIGxvZ2luKSB7CisJCXRyeSB7CisJCQlUeXBlZFF1ZXJ5PFVzZXI+IHF1ZXJ5ID0gZW0uY3JlYXRlTmFtZWRRdWVyeSgiZ2V0VXNlckJ5TmFtZSIsIFVzZXIuY2xhc3MpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJsb2dpbiIsIGxvZ2luKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiZGVsZXRlZCIsIHRydWUpOworCQkJVXNlciB1cyA9IG51bGw7CisJCQl0cnkgeworCQkJCXVzID0gcXVlcnkuZ2V0U2luZ2xlUmVzdWx0KCk7CisJCQl9IGNhdGNoIChOb1Jlc3VsdEV4Y2VwdGlvbiBleCkgeworCQkJfQorCQkJcmV0dXJuIHVzOworCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJbG9nLmVycm9yKCJbZ2V0VXNlckJ5QWRyZXNzZXNJZF0iLCBlKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgVXNlciBnZXRVc2VyQnlFbWFpbChTdHJpbmcgZW1haWwpIHsKKwkJdHJ5IHsKKwkJCVR5cGVkUXVlcnk8VXNlcj4gcXVlcnkgPSBlbS5jcmVhdGVOYW1lZFF1ZXJ5KCJnZXRVc2VyQnlFbWFpbCIsIFVzZXIuY2xhc3MpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJlbWFpbCIsIGVtYWlsKTsKKwkJCXF1ZXJ5LnNldFBhcmFtZXRlcigiZGVsZXRlZCIsIHRydWUpOworCQkJVXNlciB1cyA9IG51bGw7CisJCQl0cnkgeworCQkJCXVzID0gcXVlcnkuZ2V0U2luZ2xlUmVzdWx0KCk7CisJCQl9IGNhdGNoIChOb1Jlc3VsdEV4Y2VwdGlvbiBleCkgeworCQkJfQorCQkJcmV0dXJuIHVzOworCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJbG9nLmVycm9yKCJbZ2V0VXNlckJ5QWRyZXNzZXNJZF0iLCBlKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgT2JqZWN0IGdldFVzZXJCeUhhc2goU3RyaW5nIGhhc2gpIHsKKwkJdHJ5IHsKKwkJCWlmIChoYXNoLmxlbmd0aCgpID09IDApCisJCQkJcmV0dXJuIG5ldyBMb25nKC01KTsKKwkJCVR5cGVkUXVlcnk8VXNlcj4gcXVlcnkgPSBlbS5jcmVhdGVOYW1lZFF1ZXJ5KCJnZXRVc2VyQnlIYXNoIiwgVXNlci5jbGFzcyk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInJlc2V0aGFzaCIsIGhhc2gpOworCQkJcXVlcnkuc2V0UGFyYW1ldGVyKCJkZWxldGVkIiwgdHJ1ZSk7CisJCQlVc2VyIHVzID0gbnVsbDsKKwkJCXRyeSB7CisJCQkJdXMgPSBxdWVyeS5nZXRTaW5nbGVSZXN1bHQoKTsKKwkJCX0gY2F0Y2ggKE5vUmVzdWx0RXhjZXB0aW9uIGV4KSB7CisJCQl9CisJCQlpZiAodXMgIT0gbnVsbCkgeworCQkJCXJldHVybiB1czsKKwkJCX0gZWxzZSB7CisJCQkJcmV0dXJuIG5ldyBMb25nKC01KTsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCWxvZy5lcnJvcigiW2dldFVzZXJCeUFkcmVzc2VzSWRdIiwgZSk7CisJCX0KKwkJcmV0dXJuIG5ldyBMb25nKC0xKTsKKwl9CisKKwlwdWJsaWMgT2JqZWN0IHJlc2V0UGFzc0J5SGFzaChTdHJpbmcgaGFzaCwgU3RyaW5nIHBhc3MpIHsKKwkJdHJ5IHsKKwkJCU9iamVjdCB1ID0gdGhpcy5nZXRVc2VyQnlIYXNoKGhhc2gpOworCQkJaWYgKHUgaW5zdGFuY2VvZiBVc2VyKSB7CisJCQkJVXNlciB1cyA9IChVc2VyKSB1OworCQkJCXVzLnVwZGF0ZVBhc3N3b3JkKGNyeXB0TWFuYWdlciwgY29uZmlndXJhdGlvbkRhbywgcGFzcyk7CisJCQkJdXMuc2V0UmVzZXRoYXNoKCIiKTsKKwkJCQl1cGRhdGUodXMsIC0xTCk7CisJCQkJcmV0dXJuIG5ldyBMb25nKC04KTsKKwkJCX0gZWxzZSB7CisJCQkJcmV0dXJuIHU7CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCQlsb2cuZXJyb3IoIltnZXRVc2VyQnlBZHJlc3Nlc0lkXSIsIGUpOworCQl9CisJCXJldHVybiBuZXcgTG9uZygtMSk7CisJfQorCisJLyoqCisJICogQHBhcmFtIHNlYXJjaAorCSAqIEByZXR1cm4KKwkgKi8KKwlwdWJsaWMgTG9uZyBzZWxlY3RNYXhGcm9tVXNlcnNXaXRoU2VhcmNoKFN0cmluZyBzZWFyY2gpIHsKKwkJdHJ5IHsKKwkJCS8vIGdldCBhbGwgdXNlcnMKKwkJCVR5cGVkUXVlcnk8TG9uZz4gcXVlcnkgPSBlbS5jcmVhdGVOYW1lZFF1ZXJ5KCJzZWxlY3RNYXhGcm9tVXNlcnNXaXRoU2VhcmNoIiwgTG9uZy5jbGFzcyk7CisJCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInNlYXJjaCIsIFN0cmluZ1V0aWxzLmxvd2VyQ2FzZShzZWFyY2gpKTsKKwkJCUxpc3Q8TG9uZz4gbGwgPSBxdWVyeS5nZXRSZXN1bHRMaXN0KCk7CisJCQlsb2cuaW5mbygic2VsZWN0TWF4RnJvbVVzZXJzIiArIGxsLmdldCgwKSk7CisJCQlyZXR1cm4gbGwuZ2V0KDApOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXgyKSB7CisJCQlsb2cuZXJyb3IoIltzZWxlY3RNYXhGcm9tVXNlcnNdICIsIGV4Mik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLyoqCisJICogUmV0dXJucyB0cnVlIGlmIHRoZSBwYXNzd29yZCBpcyBjb3JyZWN0CisJICogCisJICogQHBhcmFtIHVzZXJJZAorCSAqIEBwYXJhbSBwYXNzd29yZAorCSAqIEByZXR1cm4KKwkgKi8KKwlwdWJsaWMgYm9vbGVhbiB2ZXJpZnlQYXNzd29yZChMb25nIHVzZXJJZCwgU3RyaW5nIHBhc3N3b3JkKSB7CisJCVR5cGVkUXVlcnk8TG9uZz4gcXVlcnkgPSBlbS5jcmVhdGVOYW1lZFF1ZXJ5KCJjaGVja1Bhc3N3b3JkIiwKKwkJCQlMb25nLmNsYXNzKTsKKwkJcXVlcnkuc2V0UGFyYW1ldGVyKCJ1c2VySWQiLCB1c2VySWQpOworCQlxdWVyeS5zZXRQYXJhbWV0ZXIoInBhc3N3b3JkIiwgY3J5cHRNYW5hZ2VyLmdldEluc3RhbmNlT2ZDcnlwdCgpCisJCQkJLmNyZWF0ZVBhc3NQaHJhc2UocGFzc3dvcmQpKTsKKwkJcmV0dXJuIHF1ZXJ5LmdldFJlc3VsdExpc3QoKS5nZXQoMCkgPT0gMTsKKworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL3doaXRlYm9hcmQvRW1vdGljb25zTWFuYWdlci5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvd2hpdGVib2FyZC9FbW90aWNvbnNNYW5hZ2VyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM2MTEzMQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL3doaXRlYm9hcmQvRW1vdGljb25zTWFuYWdlci5qYXZhCkBAIC0wLDAgKzEsNzYgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS53aGl0ZWJvYXJkOworCitpbXBvcnQgamF2YS5pby5CdWZmZXJlZFJlYWRlcjsKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS5pby5GaWxlUmVhZGVyOworaW1wb3J0IGphdmEudXRpbC5MaW5rZWRMaXN0OworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLk9tRmlsZUhlbHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5zdHJpbmdoYW5kbGVycy5DaGF0U3RyaW5nOworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKKworaW1wb3J0IGNvbS50aG91Z2h0d29ya3MueHN0cmVhbS5YU3RyZWFtOworaW1wb3J0IGNvbS50aG91Z2h0d29ya3MueHN0cmVhbS5pby54bWwuWHBwRHJpdmVyOworCisvKioKKyAqIExvYWQgdGhlIGxpc3Qgb2YgYXZhaWxhYmxlIGVtb3RpY29ucyBmcm9tIHRoZSBYTUwgZmlsZSBhbmQgc3RvcmUgdGhlbSBpbgorICogbWVtb3J5IHRvIGxvYWQgZmFzdGVyLCB7QGxpbmsgI2xvYWRFbW90KCl9IGlzIG9ubHkgY2FsbGVkIG9uY2U6IGR1cmluZyBzZXJ2ZXIKKyAqIHN0YXJ0dXAKKyAqIAorICogQGF1dGhvciBzZWJhd2FnbmVyCisgKiAKKyAqLworcHVibGljIGNsYXNzIEVtb3RpY29uc01hbmFnZXIgeworCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcihFbW90aWNvbnNNYW5hZ2VyLmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisJCisJcHJpdmF0ZSBMaW5rZWRMaXN0PExpbmtlZExpc3Q8U3RyaW5nPj4gZW1vdGZpbGVzTGlzdCA9IG5ldyBMaW5rZWRMaXN0PExpbmtlZExpc3Q8U3RyaW5nPj4oKTsKKworCUBTdXBwcmVzc1dhcm5pbmdzKCJ1bmNoZWNrZWQiKQorCXB1YmxpYyB2b2lkIGxvYWRFbW90KCl7CisJCXRyeSB7CisJCQlYU3RyZWFtIHhTdHJlYW0gPSBuZXcgWFN0cmVhbShuZXcgWHBwRHJpdmVyKCkpOworCQkJeFN0cmVhbS5zZXRNb2RlKFhTdHJlYW0uTk9fUkVGRVJFTkNFUyk7CisJCQlCdWZmZXJlZFJlYWRlciByZWFkZXIgPSBuZXcgQnVmZmVyZWRSZWFkZXIobmV3IEZpbGVSZWFkZXIobmV3IEZpbGUoT21GaWxlSGVscGVyLmdldFB1YmxpY0Vtb3Rpb25zRGlyKCksICJlbW90ZXMueG1sIikpKTsKKwkJICAgIFN0cmluZyB4bWxTdHJpbmcgPSAiIjsKKwkJICAgIHdoaWxlIChyZWFkZXIucmVhZHkoKSkgeworCQkgICAgCXhtbFN0cmluZyArPSByZWFkZXIucmVhZExpbmUoKTsKKwkJICAgIH0KKwkJICAgIHJlYWRlci5jbG9zZSgpOworCQkgICAgZW1vdGZpbGVzTGlzdCA9IENoYXRTdHJpbmcucmVwbGFjZUFsbFJlZ0V4cCgoTGlua2VkTGlzdDxMaW5rZWRMaXN0PFN0cmluZz4+KSB4U3RyZWFtLmZyb21YTUwoeG1sU3RyaW5nKSk7CisJCSAgICAKKwkJICAgIGxvZy5kZWJ1ZygiIyMjIyMgbG9hZEVtb3QgY29tcGxldGVkIik7CisJCSAgICAKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbbG9hZEVtb3RdIixlcnIpOworCQl9CisJfQorCQorCXB1YmxpYyBzeW5jaHJvbml6ZWQgTGlua2VkTGlzdDxMaW5rZWRMaXN0PFN0cmluZz4+IGdldEVtb3RmaWxlc0xpc3QoKSB7CisJCXJldHVybiBlbW90ZmlsZXNMaXN0OworCX0KKwkKKwlwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgc2V0RW1vdGZpbGVzTGlzdChMaW5rZWRMaXN0PExpbmtlZExpc3Q8U3RyaW5nPj4gZW1vdGZpbGVzTGlzdE5ldykgeworCQllbW90ZmlsZXNMaXN0ID0gZW1vdGZpbGVzTGlzdE5ldzsKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS93aGl0ZWJvYXJkL1doaXRlQm9hcmRPYmplY3RMaXN0TWFuYWdlckJ5SWQuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL3doaXRlYm9hcmQvV2hpdGVCb2FyZE9iamVjdExpc3RNYW5hZ2VyQnlJZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUzMzMyNjUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS93aGl0ZWJvYXJkL1doaXRlQm9hcmRPYmplY3RMaXN0TWFuYWdlckJ5SWQuamF2YQpAQCAtMCwwICsxLDg2IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEud2hpdGVib2FyZDsKKworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS53aGl0ZWJvYXJkLmR0by5XaGl0ZWJvYXJkT2JqZWN0OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEud2hpdGVib2FyZC5kdG8uV2hpdGVib2FyZE9iamVjdExpc3Q7CisKKy8qKgorICogTWVtb3J5IGJhc2VkIGNhY2hlLCBjb25maWd1cmVkIGFzIHNpbmdsZXRvbiBpbiBzcHJpbmcgY29uZmlndXJhdGlvbgorICogCisgKiBAYXV0aG9yIHNlYmF3YWduZXIKKyAqCisgKi8KK3B1YmxpYyBjbGFzcyBXaGl0ZUJvYXJkT2JqZWN0TGlzdE1hbmFnZXJCeUlkIHsKKwkKKwlwcml2YXRlIEhhc2hNYXA8TG9uZyxXaGl0ZWJvYXJkT2JqZWN0TGlzdD4gd2hpdGVCb2FyZE9iamVjdExpc3QgPSBuZXcgSGFzaE1hcDxMb25nLFdoaXRlYm9hcmRPYmplY3RMaXN0PigpOworCQorCXByaXZhdGUgTG9uZyB3aGl0ZWJvYXJkSWQgPSAwTDsKKwkKKwlwdWJsaWMgTG9uZyBnZXROZXdXaGl0ZWJvYXJkSWQoTG9uZyByb29tX2lkKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkJd2hpdGVib2FyZElkKys7CisJCXRoaXMuc2V0V2hpdGVCb2FyZE9iamVjdExpc3RSb29tT2JqQW5kV2hpdGVib2FyZElkKHJvb21faWQsIG5ldyBXaGl0ZWJvYXJkT2JqZWN0KCksIHdoaXRlYm9hcmRJZCk7CisJCXJldHVybiB3aGl0ZWJvYXJkSWQ7CisJfQorCQorCS8qCisJICogUm9vbSBpdGVtcyBhIFdoaXRlYm9hcmQKKwkgKi8KKwlwdWJsaWMgc3luY2hyb25pemVkIFdoaXRlYm9hcmRPYmplY3RMaXN0IGdldFdoaXRlQm9hcmRPYmplY3RMaXN0QnlSb29tSWQoTG9uZyByb29tX2lkKXsKKwkJV2hpdGVib2FyZE9iamVjdExpc3Qgd2hpdGVib2FyZE9iamVjdExpc3QgPSB3aGl0ZUJvYXJkT2JqZWN0TGlzdC5nZXQocm9vbV9pZCk7CisJCWlmICh3aGl0ZWJvYXJkT2JqZWN0TGlzdCA9PSBudWxsKSB7CisJCQl3aGl0ZWJvYXJkT2JqZWN0TGlzdCA9IG5ldyBXaGl0ZWJvYXJkT2JqZWN0TGlzdCgpOworCQl9CisJCXJldHVybiB3aGl0ZWJvYXJkT2JqZWN0TGlzdDsKKwl9CisJCisJcHVibGljIHN5bmNocm9uaXplZCBXaGl0ZWJvYXJkT2JqZWN0IGdldFdoaXRlQm9hcmRPYmplY3RMaXN0QnlSb29tSWRBbmRXaGl0ZWJvYXJkKExvbmcgcm9vbV9pZCwgTG9uZyB3aGl0ZUJvYXJkSWQpeworCQlXaGl0ZWJvYXJkT2JqZWN0TGlzdCB3aGl0ZWJvYXJkT2JqZWN0TGlzdCA9IHdoaXRlQm9hcmRPYmplY3RMaXN0LmdldChyb29tX2lkKTsKKwkJaWYgKHdoaXRlYm9hcmRPYmplY3RMaXN0ID09IG51bGwpIHsKKwkJCXdoaXRlYm9hcmRPYmplY3RMaXN0ID0gbmV3IFdoaXRlYm9hcmRPYmplY3RMaXN0KCk7CisJCX0KKwkJV2hpdGVib2FyZE9iamVjdCB3aGl0ZWJvYXJkT2JqZWN0cyA9IHdoaXRlYm9hcmRPYmplY3RMaXN0LmdldFdoaXRlYm9hcmRPYmplY3RzKCkuZ2V0KHdoaXRlQm9hcmRJZCk7CisJCWlmICh3aGl0ZWJvYXJkT2JqZWN0cyA9PSBudWxsKSB7CisJCQl3aGl0ZWJvYXJkT2JqZWN0cyA9IG5ldyBXaGl0ZWJvYXJkT2JqZWN0KCk7CisJCX0KKwkJcmV0dXJuIHdoaXRlYm9hcmRPYmplY3RzOworCX0KKwkKKwkvKgorCSAqIFdoaXRlYm9hcmQgT2JqZWN0IExpc3QKKwkgKiAKKwkgKi8KKwkKKwlwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgc2V0V2hpdGVCb2FyZE9iamVjdExpc3RSb29tT2JqKExvbmcgcm9vbV9pZCwgV2hpdGVib2FyZE9iamVjdExpc3Qgd2hpdGVib2FyZE9iamVjdExpc3QpeworCQl3aGl0ZUJvYXJkT2JqZWN0TGlzdC5wdXQocm9vbV9pZCwgd2hpdGVib2FyZE9iamVjdExpc3QpOworCX0KKwkKKwlwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgc2V0V2hpdGVCb2FyZE9iamVjdExpc3RSb29tT2JqQW5kV2hpdGVib2FyZElkKExvbmcgcm9vbV9pZCwgV2hpdGVib2FyZE9iamVjdCB3aGl0ZWJvYXJkT2JqZWN0cywgTG9uZyB3aGl0ZUJvYXJkSWQpeworCQlXaGl0ZWJvYXJkT2JqZWN0TGlzdCB3aGl0ZWJvYXJkT2JqZWN0TGlzdCA9IHdoaXRlQm9hcmRPYmplY3RMaXN0LmdldChyb29tX2lkKTsKKwkJaWYgKHdoaXRlYm9hcmRPYmplY3RMaXN0ID09IG51bGwpIHsKKwkJCXdoaXRlYm9hcmRPYmplY3RMaXN0ID0gbmV3IFdoaXRlYm9hcmRPYmplY3RMaXN0KCk7CisJCQl3aGl0ZWJvYXJkT2JqZWN0TGlzdC5zZXRSb29tX2lkKHJvb21faWQpOworCQl9CisJCXdoaXRlYm9hcmRPYmplY3RzLnNldFdoaXRlQm9hcmRJZCh3aGl0ZUJvYXJkSWQpOworCQl3aGl0ZWJvYXJkT2JqZWN0TGlzdC5nZXRXaGl0ZWJvYXJkT2JqZWN0cygpLnB1dCh3aGl0ZUJvYXJkSWQsIHdoaXRlYm9hcmRPYmplY3RzKTsKKwkJd2hpdGVCb2FyZE9iamVjdExpc3QucHV0KHJvb21faWQsIHdoaXRlYm9hcmRPYmplY3RMaXN0KTsKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS93aGl0ZWJvYXJkL1doaXRlQm9hcmRPYmplY3RTeW5jTWFuYWdlci5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvd2hpdGVib2FyZC9XaGl0ZUJvYXJkT2JqZWN0U3luY01hbmFnZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NGY0MDNjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvd2hpdGVib2FyZC9XaGl0ZUJvYXJkT2JqZWN0U3luY01hbmFnZXIuamF2YQpAQCAtMCwwICsxLDEyMiBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLndoaXRlYm9hcmQ7CisKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEud2hpdGVib2FyZC5kdG8uV2hpdGVib2FyZFN5bmNMb2NrT2JqZWN0OworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKKworLyoqCisgKiBNZW1vcnkgYmFzZWQsIGNvbmZpZ3VyZWQgYXMgc2luZ2xldG9uIGluIHNwcmluZyBjb25maWd1cmF0aW9uCisgKiAKKyAqIEBhdXRob3Igc2ViYXdhZ25lcgorICoKKyAqLworcHVibGljIGNsYXNzIFdoaXRlQm9hcmRPYmplY3RTeW5jTWFuYWdlciB7CisKKwlwcml2YXRlIEhhc2hNYXA8TG9uZywgTWFwPFN0cmluZywgV2hpdGVib2FyZFN5bmNMb2NrT2JqZWN0Pj4gd2hpdGVCb2FyZFN5bmNMaXN0ID0gbmV3IEhhc2hNYXA8TG9uZywgTWFwPFN0cmluZywgV2hpdGVib2FyZFN5bmNMb2NrT2JqZWN0Pj4oKTsKKworCXByaXZhdGUgSGFzaE1hcDxMb25nLCBNYXA8U3RyaW5nLCBNYXA8U3RyaW5nLCBXaGl0ZWJvYXJkU3luY0xvY2tPYmplY3Q+Pj4gd2hpdGVCb2FyZE9iamVjdFN5bmNMaXN0ID0gbmV3IEhhc2hNYXA8TG9uZywgTWFwPFN0cmluZywgTWFwPFN0cmluZywgV2hpdGVib2FyZFN5bmNMb2NrT2JqZWN0Pj4+KCk7CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKAorCQkJV2hpdGVCb2FyZE9iamVjdFN5bmNNYW5hZ2VyLmNsYXNzLAorCQkJT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCisJLyoKKwkgKiBJbml0aWFsIFN5bmMgUHJvY2VzcworCSAqLworCXB1YmxpYyBzeW5jaHJvbml6ZWQgdm9pZCBzZXRXaGl0ZUJvYXJkU3luY0xpc3RCeVJvb21pZChMb25nIHJvb21faWQsCisJCQlNYXA8U3RyaW5nLCBXaGl0ZWJvYXJkU3luY0xvY2tPYmplY3Q+IG1hcE9iamVjdCkgeworCQl3aGl0ZUJvYXJkU3luY0xpc3QucHV0KHJvb21faWQsIG1hcE9iamVjdCk7CisJfQorCisJcHVibGljIHN5bmNocm9uaXplZCBNYXA8U3RyaW5nLCBXaGl0ZWJvYXJkU3luY0xvY2tPYmplY3Q+IGdldFdoaXRlQm9hcmRTeW5jTGlzdEJ5Um9vbWlkKAorCQkJTG9uZyByb29tX2lkKSB7CisJCU1hcDxTdHJpbmcsIFdoaXRlYm9hcmRTeW5jTG9ja09iamVjdD4gcm9vbUxpc3QgPSB3aGl0ZUJvYXJkU3luY0xpc3QKKwkJCQkuZ2V0KHJvb21faWQpOworCQlpZiAocm9vbUxpc3QgPT0gbnVsbCkgeworCQkJcm9vbUxpc3QgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIFdoaXRlYm9hcmRTeW5jTG9ja09iamVjdD4oKTsKKwkJfQorCQlyZXR1cm4gcm9vbUxpc3Q7CisJfQorCisJLyoKKwkgKiBJbWFnZSBTeW5jIFByb2Nlc3MKKwkgKi8KKwlwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgc2V0V2hpdGVCb2FyZEltYWdlc1N5bmNMaXN0QnlSb29taWQoTG9uZyByb29tX2lkLAorCQkJTWFwPFN0cmluZywgTWFwPFN0cmluZywgV2hpdGVib2FyZFN5bmNMb2NrT2JqZWN0Pj4gbWFwT2JqZWN0KSB7CisJCXdoaXRlQm9hcmRPYmplY3RTeW5jTGlzdC5wdXQocm9vbV9pZCwgbWFwT2JqZWN0KTsKKwl9CisKKwlwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgc2V0V2hpdGVCb2FyZEltYWdlc1N5bmNMaXN0QnlSb29tQW5kT2JqZWN0SWQoCisJCQlMb25nIHJvb21faWQsIFN0cmluZyBvYmplY3RfaWQsCisJCQlNYXA8U3RyaW5nLCBXaGl0ZWJvYXJkU3luY0xvY2tPYmplY3Q+IGltYWdlU3luY0xpc3QpIHsKKwkJTWFwPFN0cmluZywgTWFwPFN0cmluZywgV2hpdGVib2FyZFN5bmNMb2NrT2JqZWN0Pj4gcm9vbUxpc3QgPSB3aGl0ZUJvYXJkT2JqZWN0U3luY0xpc3QKKwkJCQkuZ2V0KHJvb21faWQpOworCQlpZiAocm9vbUxpc3QgPT0gbnVsbCkgeworCQkJcm9vbUxpc3QgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIE1hcDxTdHJpbmcsIFdoaXRlYm9hcmRTeW5jTG9ja09iamVjdD4+KCk7CisJCX0KKwkJaWYgKGltYWdlU3luY0xpc3Quc2l6ZSgpID09IDApIHsKKwkJCXJvb21MaXN0LnJlbW92ZShvYmplY3RfaWQpOworCQl9IGVsc2UgeworCQkJcm9vbUxpc3QucHV0KG9iamVjdF9pZCwgaW1hZ2VTeW5jTGlzdCk7CisJCX0KKwkJc2V0V2hpdGVCb2FyZEltYWdlc1N5bmNMaXN0QnlSb29taWQocm9vbV9pZCwgcm9vbUxpc3QpOworCX0KKworCXB1YmxpYyBzeW5jaHJvbml6ZWQgTWFwPFN0cmluZywgTWFwPFN0cmluZywgV2hpdGVib2FyZFN5bmNMb2NrT2JqZWN0Pj4gZ2V0V2hpdGVCb2FyZE9iamVjdFN5bmNMaXN0QnlSb29taWQoCisJCQlMb25nIHJvb21faWQpIHsKKwkJTWFwPFN0cmluZywgTWFwPFN0cmluZywgV2hpdGVib2FyZFN5bmNMb2NrT2JqZWN0Pj4gcm9vbUxpc3QgPSB3aGl0ZUJvYXJkT2JqZWN0U3luY0xpc3QKKwkJCQkuZ2V0KHJvb21faWQpOworCQlpZiAocm9vbUxpc3QgPT0gbnVsbCkgeworCQkJcm9vbUxpc3QgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIE1hcDxTdHJpbmcsIFdoaXRlYm9hcmRTeW5jTG9ja09iamVjdD4+KCk7CisJCX0KKwkJcmV0dXJuIHJvb21MaXN0OworCX0KKworCXB1YmxpYyBzeW5jaHJvbml6ZWQgTWFwPFN0cmluZywgV2hpdGVib2FyZFN5bmNMb2NrT2JqZWN0PiBnZXRXaGl0ZUJvYXJkT2JqZWN0U3luY0xpc3RCeVJvb21BbmRPYmplY3RJZCgKKwkJCUxvbmcgcm9vbV9pZCwgU3RyaW5nIG9iamVjdF9pZCkgeworCQlsb2cuZGVidWcoImdldFdoaXRlQm9hcmRJbWFnZXNTeW5jTGlzdEJ5Um9vbUFuZEltYWdlaWQgcm9vbV9pZDogIgorCQkJCSsgcm9vbV9pZCk7CisJCU1hcDxTdHJpbmcsIE1hcDxTdHJpbmcsIFdoaXRlYm9hcmRTeW5jTG9ja09iamVjdD4+IHJvb21MaXN0ID0gd2hpdGVCb2FyZE9iamVjdFN5bmNMaXN0CisJCQkJLmdldChyb29tX2lkKTsKKwkJaWYgKHJvb21MaXN0ID09IG51bGwpIHsKKwkJCXJvb21MaXN0ID0gbmV3IEhhc2hNYXA8U3RyaW5nLCBNYXA8U3RyaW5nLCBXaGl0ZWJvYXJkU3luY0xvY2tPYmplY3Q+PigpOworCQl9CisJCWxvZy5kZWJ1ZygiZ2V0V2hpdGVCb2FyZEltYWdlc1N5bmNMaXN0QnlSb29tQW5kSW1hZ2VpZCByb29tTGlzdDogIgorCQkJCSsgcm9vbUxpc3QpOworCQlsb2cuZGVidWcoImdldFdoaXRlQm9hcmRJbWFnZXNTeW5jTGlzdEJ5Um9vbUFuZEltYWdlaWQgb2JqZWN0X2lkOiAiCisJCQkJKyBvYmplY3RfaWQpOworCQlpZiAocm9vbUxpc3Quc2l6ZSgpID09IDEpIHsKKwkJCWxvZy5kZWJ1ZygiZ2V0V2hpdGVCb2FyZEltYWdlc1N5bmNMaXN0QnlSb29tQW5kSW1hZ2VpZCByb29tTGlzdCBLZXkgaW1hZ2VfaWQ6ICIKKwkJCQkJKyByb29tTGlzdC5rZXlTZXQoKS5pdGVyYXRvcigpLm5leHQoKSk7CisJCX0KKwkJTWFwPFN0cmluZywgV2hpdGVib2FyZFN5bmNMb2NrT2JqZWN0PiBpbWFnZVN5bmNMaXN0ID0gcm9vbUxpc3QKKwkJCQkuZ2V0KG9iamVjdF9pZCk7CisJCWlmIChpbWFnZVN5bmNMaXN0ID09IG51bGwpIHsKKwkJCWltYWdlU3luY0xpc3QgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIFdoaXRlYm9hcmRTeW5jTG9ja09iamVjdD4oKTsKKwkJfQorCQlyZXR1cm4gaW1hZ2VTeW5jTGlzdDsKKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL3doaXRlYm9hcmQvV2hpdGVib2FyZE1hbmFnZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL3doaXRlYm9hcmQvV2hpdGVib2FyZE1hbmFnZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTYyODBjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvd2hpdGVib2FyZC9XaGl0ZWJvYXJkTWFuYWdlci5qYXZhCkBAIC0wLDAgKzEsMzIzIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEud2hpdGVib2FyZDsKKworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEud2hpdGVib2FyZC5kdG8uV2hpdGVib2FyZE9iamVjdDsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uQXV0b3dpcmVkOworCitwdWJsaWMgY2xhc3MgV2hpdGVib2FyZE1hbmFnZXIgeworCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcigKKwkJCVdoaXRlYm9hcmRNYW5hZ2VyLmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisJCisJQEF1dG93aXJlZAorCXByaXZhdGUgV2hpdGVCb2FyZE9iamVjdExpc3RNYW5hZ2VyQnlJZCB3aGl0ZUJvYXJkT2JqZWN0TGlzdE1hbmFnZXJCeUlkOworCisJQFN1cHByZXNzV2FybmluZ3MoeyAicmF3dHlwZXMiLCAidW5jaGVja2VkIiB9KQorCXB1YmxpYyB2b2lkIGFkZFdoaXRlQm9hcmRPYmplY3RCeUlkKExvbmcgcm9vbV9pZCwgTWFwIHdoaXRlYm9hcmRPYmosCisJCQlMb25nIHdoaXRlQm9hcmRJZCkgeworCQl0cnkgeworCQkJbG9nLmRlYnVnKCJhZGRXaGl0ZUJvYXJkT2JqZWN0QnlJZDogIiwgd2hpdGVib2FyZE9iaik7CisKKwkJCS8vIGxvZy5kZWJ1Zygid2hpdGVib2FyZE9iaiAwOiBFdmVudDogIit3aGl0ZWJvYXJkT2JqLmdldCgwKSk7CisJCQkvLyBsb2cuZGVidWcoIndoaXRlYm9hcmRPYmogMTogRXZlbnQ6ICIrd2hpdGVib2FyZE9iai5nZXQoMSkpOworCQkJLy8gbG9nLmRlYnVnKCJ3aGl0ZWJvYXJkT2JqIDI6IEV2ZW50OiAiK3doaXRlYm9hcmRPYmouZ2V0KDIpKTsKKwkJCS8vIGxvZy5kZWJ1Zygid2hpdGVib2FyZE9iaiAzOiBFdmVudDogIit3aGl0ZWJvYXJkT2JqLmdldCgzKSk7CisKKwkJCS8vIGxvZy5kZWJ1Zygid2hpdGVib2FyZE9iaiBOVU1CMzogRXZlbnQ6ICIrd2hpdGVib2FyZE9iai5nZXQoMykuZ2V0Q2xhc3MoKS5nZXROYW1lKCkpOworCisJCQkvLyBEYXRlIGRhdGVPZkV2ZW50ID0gKERhdGUpIHdoaXRlYm9hcmRPYmouZ2V0KDEpOworCQkJU3RyaW5nIGFjdGlvbiA9IHdoaXRlYm9hcmRPYmouZ2V0KDIpLnRvU3RyaW5nKCk7CisKKwkJCWxvZy5kZWJ1ZygiYWN0aW9uOiAiICsgYWN0aW9uKTsKKwkJCWxvZy5kZWJ1ZygiYWN0aW9uT2JqZWN0OiAiICsgd2hpdGVib2FyZE9iai5nZXQoMykpOworCisJCQlMaXN0IGFjdGlvbk9iamVjdCA9IChMaXN0KSB3aGl0ZWJvYXJkT2JqLmdldCgzKTsKKworCQkJaWYgKGFjdGlvbi5lcXVhbHMoIm1vdmVNYXAiKSkgeworCQkJCVdoaXRlYm9hcmRPYmplY3Qgd2hpdGVib2FyZE9iamVjdCA9IHdoaXRlQm9hcmRPYmplY3RMaXN0TWFuYWdlckJ5SWQKKwkJCQkJCS5nZXRXaGl0ZUJvYXJkT2JqZWN0TGlzdEJ5Um9vbUlkQW5kV2hpdGVib2FyZChyb29tX2lkLAorCQkJCQkJCQl3aGl0ZUJvYXJkSWQpOworCisJCQkJd2hpdGVib2FyZE9iamVjdC5zZXRYKEludGVnZXIudmFsdWVPZigKKwkJCQkJCWFjdGlvbk9iamVjdC5nZXQoMSkudG9TdHJpbmcoKSkuaW50VmFsdWUoKSk7CisJCQkJd2hpdGVib2FyZE9iamVjdC5zZXRZKEludGVnZXIudmFsdWVPZigKKwkJCQkJCWFjdGlvbk9iamVjdC5nZXQoMikudG9TdHJpbmcoKSkuaW50VmFsdWUoKSk7CisKKwkJCQl3aGl0ZUJvYXJkT2JqZWN0TGlzdE1hbmFnZXJCeUlkCisJCQkJCQkuc2V0V2hpdGVCb2FyZE9iamVjdExpc3RSb29tT2JqQW5kV2hpdGVib2FyZElkKHJvb21faWQsCisJCQkJCQkJCXdoaXRlYm9hcmRPYmplY3QsIHdoaXRlQm9hcmRJZCk7CisJCQl9IGVsc2UgaWYgKGFjdGlvbi5lcXVhbHMoImRyYXciKSB8fCBhY3Rpb24uZXF1YWxzKCJyZWRvIikpIHsKKwkJCQlXaGl0ZWJvYXJkT2JqZWN0IHdoaXRlYm9hcmRPYmplY3QgPSB3aGl0ZUJvYXJkT2JqZWN0TGlzdE1hbmFnZXJCeUlkCisJCQkJCQkuZ2V0V2hpdGVCb2FyZE9iamVjdExpc3RCeVJvb21JZEFuZFdoaXRlYm9hcmQocm9vbV9pZCwKKwkJCQkJCQkJd2hpdGVCb2FyZElkKTsKKworCQkJCS8vIGxvZy5kZWJ1ZyhhY3Rpb25PYmplY3QpOworCQkJCS8vIGxvZy5kZWJ1ZyhhY3Rpb25PYmplY3Quc2l6ZSgpLTEpOworCQkJCS8vIGxvZy5kZWJ1ZyhhY3Rpb25PYmplY3QuZ2V0KGFjdGlvbk9iamVjdC5zaXplKCktMSkpOworCQkJCVN0cmluZyBvYmplY3RUeXBlID0gYWN0aW9uT2JqZWN0LmdldCgwKS50b1N0cmluZygpOworCQkJCWlmICghb2JqZWN0VHlwZS5lcXVhbHMoInBvaW50ZXJXaGl0ZUJvYXJkIikpIHsKKwkJCQkJU3RyaW5nIG9iamVjdE9JRCA9IGFjdGlvbk9iamVjdAorCQkJCQkJCS5nZXQoYWN0aW9uT2JqZWN0LnNpemUoKSAtIDEpLnRvU3RyaW5nKCk7CisJCQkJCWxvZy5kZWJ1Zygib2JqZWN0T0lEOiAiICsgb2JqZWN0T0lEKTsKKwkJCQkJd2hpdGVib2FyZE9iamVjdC5nZXRSb29tSXRlbXMoKQorCQkJCQkJCS5wdXQob2JqZWN0T0lELCBhY3Rpb25PYmplY3QpOworCQkJCQl3aGl0ZUJvYXJkT2JqZWN0TGlzdE1hbmFnZXJCeUlkCisJCQkJCQkJLnNldFdoaXRlQm9hcmRPYmplY3RMaXN0Um9vbU9iakFuZFdoaXRlYm9hcmRJZCgKKwkJCQkJCQkJCXJvb21faWQsIHdoaXRlYm9hcmRPYmplY3QsIHdoaXRlQm9hcmRJZCk7CisJCQkJfQorCQkJfSBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKCJjbGVhciIpKSB7CisJCQkJV2hpdGVib2FyZE9iamVjdCB3aGl0ZWJvYXJkT2JqZWN0ID0gd2hpdGVCb2FyZE9iamVjdExpc3RNYW5hZ2VyQnlJZAorCQkJCQkJLmdldFdoaXRlQm9hcmRPYmplY3RMaXN0QnlSb29tSWRBbmRXaGl0ZWJvYXJkKHJvb21faWQsCisJCQkJCQkJCXdoaXRlQm9hcmRJZCk7CisJCQkJd2hpdGVib2FyZE9iamVjdC5zZXRSb29tSXRlbXMobmV3IEhhc2hNYXA8U3RyaW5nLCBMaXN0PigpKTsKKwkJCQl3aGl0ZUJvYXJkT2JqZWN0TGlzdE1hbmFnZXJCeUlkCisJCQkJCQkuc2V0V2hpdGVCb2FyZE9iamVjdExpc3RSb29tT2JqQW5kV2hpdGVib2FyZElkKHJvb21faWQsCisJCQkJCQkJCXdoaXRlYm9hcmRPYmplY3QsIHdoaXRlQm9hcmRJZCk7CisJCQl9IGVsc2UgaWYgKGFjdGlvbi5lcXVhbHMoImRlbGV0ZSIpIHx8IGFjdGlvbi5lcXVhbHMoInVuZG8iKSkgeworCQkJCVdoaXRlYm9hcmRPYmplY3Qgd2hpdGVib2FyZE9iamVjdCA9IHdoaXRlQm9hcmRPYmplY3RMaXN0TWFuYWdlckJ5SWQKKwkJCQkJCS5nZXRXaGl0ZUJvYXJkT2JqZWN0TGlzdEJ5Um9vbUlkQW5kV2hpdGVib2FyZChyb29tX2lkLAorCQkJCQkJCQl3aGl0ZUJvYXJkSWQpOworCQkJCVN0cmluZyBvYmplY3RPSUQgPSBhY3Rpb25PYmplY3QuZ2V0KGFjdGlvbk9iamVjdC5zaXplKCkgLSAxKQorCQkJCQkJLnRvU3RyaW5nKCk7CisJCQkJU3RyaW5nIG9iamVjdFR5cGUgPSBhY3Rpb25PYmplY3QuZ2V0KDApLnRvU3RyaW5nKCk7CisJCQkJbG9nLmRlYnVnKCJyZW1vdmFsIG9mIG9iamVjdE9JRDogIiArIG9iamVjdE9JRCk7CisKKwkJCQlsb2cuZGVidWcoInJlbW92YWwgb2Ygb2JqZWN0T0lEOiAiICsgb2JqZWN0T0lEKTsKKworCQkJCS8vICJlbGxpcHNlIgorCQkJCS8vIHx8IHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbaV1bMF0gPT0gImRyYXdhcnJvdyIKKwkJCQkvLyB8fCB0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2ldWzBdID09ICJsaW5lIgorCQkJCS8vIHx8IHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbaV1bMF0gPT0gInBhaW50IgorCQkJCS8vIHx8IHRoaXMuYmFzZWFjdGlvbm9iamVjdExpc3RbaV1bMF0gPT0gInJlY3RhbmdsZSIKKwkJCQkvLyB8fCB0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2ldWzBdID09ICJ1bGluZSIKKwkJCQkvLyB8fCB0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2ldWzBdID09ICJpbWFnZSIKKwkJCQkvLyB8fCB0aGlzLmJhc2VhY3Rpb25vYmplY3RMaXN0W2ldWzBdID09ICJsZXR0ZXIiCisKKwkJCQkvLyBSZS1JbmRleCBhbGwgaXRlbXMgaW4gaXRzIHpJbmRleAorCQkJCWlmIChvYmplY3RUeXBlLmVxdWFscygiZWxsaXBzZSIpCisJCQkJCQl8fCBvYmplY3RUeXBlLmVxdWFscygiZHJhd2Fycm93IikKKwkJCQkJCXx8IG9iamVjdFR5cGUuZXF1YWxzKCJsaW5lIikKKwkJCQkJCXx8IG9iamVjdFR5cGUuZXF1YWxzKCJwYWludCIpCisJCQkJCQl8fCBvYmplY3RUeXBlLmVxdWFscygicmVjdGFuZ2xlIikKKwkJCQkJCXx8IG9iamVjdFR5cGUuZXF1YWxzKCJ1bGluZSIpCisJCQkJCQl8fCBvYmplY3RUeXBlLmVxdWFscygiaW1hZ2UiKQorCQkJCQkJfHwgb2JqZWN0VHlwZS5lcXVhbHMoImxldHRlciIpCisJCQkJCQl8fCBvYmplY3RUeXBlLmVxdWFscygiY2xpcGFydCIpCisJCQkJCQl8fCBvYmplY3RUeXBlLmVxdWFscygic3dmIikKKwkJCQkJCXx8IG9iamVjdFR5cGUuZXF1YWxzKCJtaW5kbWFwbm9kZSIpCisJCQkJCQl8fCBvYmplY3RUeXBlLmVxdWFscygiZmx2IikpIHsKKworCQkJCQlJbnRlZ2VyIHpJbmRleCA9IEludGVnZXIudmFsdWVPZigKKwkJCQkJCQlhY3Rpb25PYmplY3QuZ2V0KGFjdGlvbk9iamVjdC5zaXplKCkgLSA4KQorCQkJCQkJCQkJLnRvU3RyaW5nKCkpLmludFZhbHVlKCk7CisKKwkJCQkJbG9nLmRlYnVnKCIxfHpJbmRleCAiICsgekluZGV4KTsKKwkJCQkJbG9nLmRlYnVnKCIyfHpJbmRleCAiCisJCQkJCQkJKyBhY3Rpb25PYmplY3QuZ2V0KGFjdGlvbk9iamVjdC5zaXplKCkgLSA4KQorCQkJCQkJCQkJLnRvU3RyaW5nKCkpOworCQkJCQlsb2cuZGVidWcoIjN8ekluZGV4ICIKKwkJCQkJCQkrIGFjdGlvbk9iamVjdC5nZXQoYWN0aW9uT2JqZWN0LnNpemUoKSAtIDgpKTsKKworCQkJCQlpbnQgbCA9IDA7CisJCQkJCWZvciAoSXRlcmF0b3IgZGVidWdJdGVyID0gYWN0aW9uT2JqZWN0Lml0ZXJhdG9yKCk7IGRlYnVnSXRlcgorCQkJCQkJCS5oYXNOZXh0KCk7KSB7CisJCQkJCQlsb2cuZGVidWcoIjR8ekluZGV4ICIgKyBsICsgIiAtLSAiICsgZGVidWdJdGVyLm5leHQoKSk7CisJCQkJCQlsKys7CisJCQkJCX0KKworCQkJCQlmb3IgKEl0ZXJhdG9yPFN0cmluZz4gaXRlciA9IHdoaXRlYm9hcmRPYmplY3QKKwkJCQkJCQkuZ2V0Um9vbUl0ZW1zKCkua2V5U2V0KCkuaXRlcmF0b3IoKTsgaXRlci5oYXNOZXh0KCk7KSB7CisJCQkJCQlTdHJpbmcgd2hpdGVib2FyZE9iaktleSA9IGl0ZXIubmV4dCgpOworCQkJCQkJTGlzdCBhY3Rpb25PYmplY3RTdG9yZWQgPSB3aGl0ZWJvYXJkT2JqZWN0CisJCQkJCQkJCS5nZXRSb29tSXRlbXMoKS5nZXQod2hpdGVib2FyZE9iaktleSk7CisKKwkJCQkJCUludGVnZXIgekluZGV4U3RvcmVkID0gSW50ZWdlci52YWx1ZU9mKAorCQkJCQkJCQlhY3Rpb25PYmplY3RTdG9yZWQuZ2V0KAorCQkJCQkJCQkJCWFjdGlvbk9iamVjdFN0b3JlZC5zaXplKCkgLSA4KQorCQkJCQkJCQkJCS50b1N0cmluZygpKS5pbnRWYWx1ZSgpOworCisJCQkJCQlsb2cuZGVidWcoInpJbmRleFN0b3JlZHx6SW5kZXggIiArIHpJbmRleFN0b3JlZCArICJ8IgorCQkJCQkJCQkrIHpJbmRleCk7CisKKwkJCQkJCWlmICh6SW5kZXhTdG9yZWQgPj0gekluZGV4KSB7CisJCQkJCQkJekluZGV4U3RvcmVkIC09IDE7CisJCQkJCQkJbG9nLmRlYnVnKCJuZXctekluZGV4ICIgKyB6SW5kZXhTdG9yZWQpOworCQkJCQkJfQorCQkJCQkJYWN0aW9uT2JqZWN0U3RvcmVkLnNldChhY3Rpb25PYmplY3RTdG9yZWQuc2l6ZSgpIC0gOCwKKwkJCQkJCQkJekluZGV4U3RvcmVkKTsKKworCQkJCQkJd2hpdGVib2FyZE9iamVjdC5nZXRSb29tSXRlbXMoKS5wdXQod2hpdGVib2FyZE9iaktleSwKKwkJCQkJCQkJYWN0aW9uT2JqZWN0U3RvcmVkKTsKKwkJCQkJfQorCisJCQkJfQorCisJCQkJd2hpdGVib2FyZE9iamVjdC5nZXRSb29tSXRlbXMoKS5yZW1vdmUob2JqZWN0T0lEKTsKKworCQkJCXdoaXRlQm9hcmRPYmplY3RMaXN0TWFuYWdlckJ5SWQKKwkJCQkJCS5zZXRXaGl0ZUJvYXJkT2JqZWN0TGlzdFJvb21PYmpBbmRXaGl0ZWJvYXJkSWQocm9vbV9pZCwKKwkJCQkJCQkJd2hpdGVib2FyZE9iamVjdCwgd2hpdGVCb2FyZElkKTsKKwkJCX0gZWxzZSBpZiAoYWN0aW9uLmVxdWFscygic2l6ZSIpIHx8IGFjdGlvbi5lcXVhbHMoImVkaXRQcm9wIikKKwkJCQkJfHwgYWN0aW9uLmVxdWFscygiZWRpdFRleHRNaW5kTWFwTm9kZSIpCisJCQkJCXx8IGFjdGlvbi5lcXVhbHMoImVkaXRUZXh0IikgfHwgYWN0aW9uLmVxdWFscygic3dmIikKKwkJCQkJfHwgYWN0aW9uLmVxdWFscygiZmx2IikKKwkJCQkJfHwgYWN0aW9uLmVxdWFscygiZWRpdFRleHRNaW5kTWFwQ29sb3IiKQorCQkJCQl8fCBhY3Rpb24uZXF1YWxzKCJlZGl0VGV4dE1pbmRNYXBGb250Q29sb3IiKSkgeworCQkJCVdoaXRlYm9hcmRPYmplY3Qgd2hpdGVib2FyZE9iamVjdCA9IHdoaXRlQm9hcmRPYmplY3RMaXN0TWFuYWdlckJ5SWQKKwkJCQkJCS5nZXRXaGl0ZUJvYXJkT2JqZWN0TGlzdEJ5Um9vbUlkQW5kV2hpdGVib2FyZChyb29tX2lkLAorCQkJCQkJCQl3aGl0ZUJvYXJkSWQpOworCQkJCVN0cmluZyBvYmplY3RPSUQgPSBhY3Rpb25PYmplY3QuZ2V0KGFjdGlvbk9iamVjdC5zaXplKCkgLSAxKQorCQkJCQkJLnRvU3RyaW5nKCk7CisJCQkJLy8gTGlzdCByb29tSXRlbSA9IHJvb21MaXN0LmdldChvYmplY3RPSUQpOworCQkJCUxpc3QgY3VycmVudE9iamVjdCA9IHdoaXRlYm9hcmRPYmplY3QuZ2V0Um9vbUl0ZW1zKCkuZ2V0KAorCQkJCQkJb2JqZWN0T0lEKTsKKwkJCQlpZiAoYWN0aW9uT2JqZWN0LmdldCgwKS5lcXVhbHMoInBhaW50IikpIHsKKwkJCQkJYWN0aW9uT2JqZWN0LnNldCgxLCBjdXJyZW50T2JqZWN0LmdldCgxKSk7CisJCQkJfQorCQkJCXdoaXRlYm9hcmRPYmplY3QuZ2V0Um9vbUl0ZW1zKCkucHV0KG9iamVjdE9JRCwgYWN0aW9uT2JqZWN0KTsKKworCQkJCU1hcCByb29tTGlzdCA9IHdoaXRlYm9hcmRPYmplY3QuZ2V0Um9vbUl0ZW1zKCk7CisKKwkJCQlpZiAoYWN0aW9uLmVxdWFscygic3dmIikpIHsKKworCQkJCQlsb2cuZGVidWcoImFjdGlvbk9iamVjdCAiICsgYWN0aW9uT2JqZWN0KTsKKworCQkJCQlpZiAoYWN0aW9uT2JqZWN0LmdldCgwKS5lcXVhbHMoInN3ZiIpKSB7CisKKwkJCQkJCWlmIChhY3Rpb25PYmplY3QuZ2V0KDgpICE9IGN1cnJlbnRPYmplY3QuZ2V0KDgpKSB7CisKKwkJCQkJCQlTdHJpbmcgYmFzZU9iamVjdE5hbWUgPSBhY3Rpb25PYmplY3QuZ2V0KAorCQkJCQkJCQkJYWN0aW9uT2JqZWN0LnNpemUoKSAtIDEpLnRvU3RyaW5nKCk7CisJCQkJCQkJSW50ZWdlciBzbGlkZXNOdW1iZXIgPSBJbnRlZ2VyLnZhbHVlT2YoCisJCQkJCQkJCQlhY3Rpb25PYmplY3QuZ2V0KDgpLnRvU3RyaW5nKCkpLmludFZhbHVlKCk7CisKKwkJCQkJCQlsb2cuZGVidWcoInVwZGF0ZU9iamVjdHNUb1NsaWRlTnVtYmVyIDo6ICIKKwkJCQkJCQkJCSsgYmFzZU9iamVjdE5hbWUgKyAiLCIgKyBzbGlkZXNOdW1iZXIpOworCisJCQkJCQkJZm9yIChJdGVyYXRvcjxTdHJpbmc+IGl0ZXIgPSByb29tTGlzdC5rZXlTZXQoKQorCQkJCQkJCQkJLml0ZXJhdG9yKCk7IGl0ZXIuaGFzTmV4dCgpOykgeworCQkJCQkJCQlTdHJpbmcgd2hpdGVib2FyZE9iaktleSA9IGl0ZXIubmV4dCgpOworCQkJCQkJCQlMaXN0IGFjdGlvbk9iamVjdFN0b3JlZCA9IChMaXN0KSByb29tTGlzdAorCQkJCQkJCQkJCS5nZXQod2hpdGVib2FyZE9iaktleSk7CisKKwkJCQkJCQkJaWYgKGFjdGlvbk9iamVjdFN0b3JlZC5nZXQoMCkuZXF1YWxzKCJlbGxpcHNlIikKKwkJCQkJCQkJCQl8fCBhY3Rpb25PYmplY3RTdG9yZWQuZ2V0KDApLmVxdWFscygKKwkJCQkJCQkJCQkJCSJkcmF3YXJyb3ciKQorCQkJCQkJCQkJCXx8IGFjdGlvbk9iamVjdFN0b3JlZC5nZXQoMCkuZXF1YWxzKAorCQkJCQkJCQkJCQkJImxpbmUiKQorCQkJCQkJCQkJCXx8IGFjdGlvbk9iamVjdFN0b3JlZC5nZXQoMCkuZXF1YWxzKAorCQkJCQkJCQkJCQkJImNsaXBhcnQiKQorCQkJCQkJCQkJCXx8IGFjdGlvbk9iamVjdFN0b3JlZC5nZXQoMCkuZXF1YWxzKAorCQkJCQkJCQkJCQkJInBhaW50IikKKwkJCQkJCQkJCQl8fCBhY3Rpb25PYmplY3RTdG9yZWQuZ2V0KDApLmVxdWFscygKKwkJCQkJCQkJCQkJCSJyZWN0YW5nbGUiKQorCQkJCQkJCQkJCXx8IGFjdGlvbk9iamVjdFN0b3JlZC5nZXQoMCkuZXF1YWxzKAorCQkJCQkJCQkJCQkJInVsaW5lIikKKwkJCQkJCQkJCQl8fCBhY3Rpb25PYmplY3RTdG9yZWQuZ2V0KDApLmVxdWFscygKKwkJCQkJCQkJCQkJCSJpbWFnZSIpCisJCQkJCQkJCQkJfHwgYWN0aW9uT2JqZWN0U3RvcmVkLmdldCgwKS5lcXVhbHMoCisJCQkJCQkJCQkJCQkibGV0dGVyIikpIHsKKworCQkJCQkJCQkJTWFwIHN3Zk9iaiA9IChNYXApIGFjdGlvbk9iamVjdFN0b3JlZAorCQkJCQkJCQkJCQkuZ2V0KGFjdGlvbk9iamVjdFN0b3JlZC5zaXplKCkgLSA3KTsKKwkJCQkJCQkJCWxvZy5kZWJ1Zygic3dmT2JqIDoxOiAiICsgc3dmT2JqKTsKKworCQkJCQkJCQkJaWYgKHN3Zk9iaiAhPSBudWxsKSB7CisKKwkJCQkJCQkJCQlpZiAoc3dmT2JqLmdldCgibmFtZSIpLmVxdWFscygKKwkJCQkJCQkJCQkJCWJhc2VPYmplY3ROYW1lKSkgeworCisJCQkJCQkJCQkJCWlmIChJbnRlZ2VyLnZhbHVlT2YoCisJCQkJCQkJCQkJCQkJc3dmT2JqLmdldCgic2xpZGUiKQorCQkJCQkJCQkJCQkJCQkJLnRvU3RyaW5nKCkpCisJCQkJCQkJCQkJCQkJLmludFZhbHVlKCkgPT0gc2xpZGVzTnVtYmVyKSB7CisKKwkJCQkJCQkJCQkJCXN3Zk9iai5wdXQoImlzVmlzaWJsZSIsIHRydWUpOworCisJCQkJCQkJCQkJCQlhY3Rpb25PYmplY3RTdG9yZWQuc2V0KAorCQkJCQkJCQkJCQkJCQlhY3Rpb25PYmplY3RTdG9yZWQKKwkJCQkJCQkJCQkJCQkJCQkuc2l6ZSgpIC0gNywKKwkJCQkJCQkJCQkJCQkJc3dmT2JqKTsKKworCQkJCQkJCQkJCQl9IGVsc2UgeworCisJCQkJCQkJCQkJCQlzd2ZPYmoucHV0KCJpc1Zpc2libGUiLCBmYWxzZSk7CisKKwkJCQkJCQkJCQkJCWFjdGlvbk9iamVjdFN0b3JlZC5zZXQoCisJCQkJCQkJCQkJCQkJCWFjdGlvbk9iamVjdFN0b3JlZAorCQkJCQkJCQkJCQkJCQkJCS5zaXplKCkgLSA3LAorCQkJCQkJCQkJCQkJCQlzd2ZPYmopOworCisJCQkJCQkJCQkJCX0KKworCQkJCQkJCQkJCX0KKworCQkJCQkJCQkJfQorCisJCQkJCQkJCQlsb2cuZGVidWcoInN3Zk9iaiA6MTogIiArIHN3Zk9iaik7CisKKwkJCQkJCQkJfQorCisJCQkJCQkJfQorCisJCQkJCQl9CisKKwkJCQkJfQorCQkJCX0KKworCQkJCXdoaXRlQm9hcmRPYmplY3RMaXN0TWFuYWdlckJ5SWQKKwkJCQkJCS5zZXRXaGl0ZUJvYXJkT2JqZWN0TGlzdFJvb21PYmpBbmRXaGl0ZWJvYXJkSWQocm9vbV9pZCwKKwkJCQkJCQkJd2hpdGVib2FyZE9iamVjdCwgd2hpdGVCb2FyZElkKTsKKwkJCX0gZWxzZSBpZiAoYWN0aW9uLmVxdWFscygiY2xlYXJTbGlkZSIpKSB7CisKKwkJCQlXaGl0ZWJvYXJkT2JqZWN0IHdoaXRlYm9hcmRPYmplY3QgPSB3aGl0ZUJvYXJkT2JqZWN0TGlzdE1hbmFnZXJCeUlkCisJCQkJCQkuZ2V0V2hpdGVCb2FyZE9iamVjdExpc3RCeVJvb21JZEFuZFdoaXRlYm9hcmQocm9vbV9pZCwKKwkJCQkJCQkJd2hpdGVCb2FyZElkKTsKKworCQkJCU1hcCByb29tTGlzdCA9IHdoaXRlYm9hcmRPYmplY3QuZ2V0Um9vbUl0ZW1zKCk7CisKKwkJCQlmb3IgKFN0cmluZyBvYmplY3ROYW1lIDogKExpc3Q8U3RyaW5nPikgYWN0aW9uT2JqZWN0KSB7CisKKwkJCQkJcm9vbUxpc3QucmVtb3ZlKG9iamVjdE5hbWUpOworCisJCQkJfQorCisJCQkJd2hpdGVCb2FyZE9iamVjdExpc3RNYW5hZ2VyQnlJZAorCQkJCQkJLnNldFdoaXRlQm9hcmRPYmplY3RMaXN0Um9vbU9iakFuZFdoaXRlYm9hcmRJZChyb29tX2lkLAorCQkJCQkJCQl3aGl0ZWJvYXJkT2JqZWN0LCB3aGl0ZUJvYXJkSWQpOworCQkJfSBlbHNlIHsKKwkJCQlsb2cud2FybigiVW5rb3duIFR5cGU6ICIgKyBhY3Rpb24gKyAiIGFjdGlvbk9iamVjdDogIgorCQkJCQkJKyBhY3Rpb25PYmplY3QpOworCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2FkZFdoaXRlQm9hcmRPYmplY3RdIiwgZXJyKTsKKwkJfQorCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvd2hpdGVib2FyZC9kdG8vQnJvd3NlclN0YXR1cy5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvd2hpdGVib2FyZC9kdG8vQnJvd3NlclN0YXR1cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxMWQ0YzgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZGF0YS93aGl0ZWJvYXJkL2R0by9Ccm93c2VyU3RhdHVzLmphdmEKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLndoaXRlYm9hcmQuZHRvOworCitwdWJsaWMgY2xhc3MgQnJvd3NlclN0YXR1cyB7CisJCisJcHJpdmF0ZSBib29sZWFuIGJyb3dzZXJJbml0ZWQgPSBmYWxzZTsKKwlwcml2YXRlIFN0cmluZyBjdXJyZW50VVJMID0gIiI7CisJCisJcHVibGljIGJvb2xlYW4gaXNCcm93c2VySW5pdGVkKCkgeworCQlyZXR1cm4gYnJvd3NlckluaXRlZDsKKwl9CisJcHVibGljIHZvaWQgc2V0QnJvd3NlckluaXRlZChib29sZWFuIGJyb3dzZXJJbml0ZWQpIHsKKwkJdGhpcy5icm93c2VySW5pdGVkID0gYnJvd3NlckluaXRlZDsKKwl9CisJcHVibGljIFN0cmluZyBnZXRDdXJyZW50VVJMKCkgeworCQlyZXR1cm4gY3VycmVudFVSTDsKKwl9CisJcHVibGljIHZvaWQgc2V0Q3VycmVudFVSTChTdHJpbmcgY3VycmVudFVSTCkgeworCQl0aGlzLmN1cnJlbnRVUkwgPSBjdXJyZW50VVJMOworCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvd2hpdGVib2FyZC9kdG8vQ2xpcGFydHMuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL3doaXRlYm9hcmQvZHRvL0NsaXBhcnRzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWI2MTQzMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL3doaXRlYm9hcmQvZHRvL0NsaXBhcnRzLmphdmEKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLndoaXRlYm9hcmQuZHRvOworCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK3B1YmxpYyBjbGFzcyBDbGlwYXJ0cyB7CisKKwlwcml2YXRlIFN0cmluZyBmb2xkZXJOYW1lOworCXByaXZhdGUgU3RyaW5nW10gZ2VuZXJhbExpc3Q7CisJcHJpdmF0ZSBMaXN0PENsaXBhcnRzPiBzdWJDYXRlZ29yaWVzOworCisJcHVibGljIFN0cmluZ1tdIGdldEdlbmVyYWxMaXN0KCkgeworCQlyZXR1cm4gZ2VuZXJhbExpc3Q7CisJfQorCisJcHVibGljIHZvaWQgc2V0R2VuZXJhbExpc3QoU3RyaW5nW10gZ2VuZXJhbExpc3QpIHsKKwkJdGhpcy5nZW5lcmFsTGlzdCA9IGdlbmVyYWxMaXN0OworCX0KKworCXB1YmxpYyBMaXN0PENsaXBhcnRzPiBnZXRTdWJDYXRlZ29yaWVzKCkgeworCQlyZXR1cm4gc3ViQ2F0ZWdvcmllczsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRTdWJDYXRlZ29yaWVzKExpc3Q8Q2xpcGFydHM+IHN1YkNhdGVnb3JpZXMpIHsKKwkJdGhpcy5zdWJDYXRlZ29yaWVzID0gc3ViQ2F0ZWdvcmllczsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGdldEZvbGRlck5hbWUoKSB7CisJCXJldHVybiBmb2xkZXJOYW1lOworCX0KKworCXB1YmxpYyB2b2lkIHNldEZvbGRlck5hbWUoU3RyaW5nIGZvbGRlck5hbWUpIHsKKwkJdGhpcy5mb2xkZXJOYW1lID0gZm9sZGVyTmFtZTsKKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL3doaXRlYm9hcmQvZHRvL1Jvb21TdGF0dXMuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL3doaXRlYm9hcmQvZHRvL1Jvb21TdGF0dXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Y2E1ZWYzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvd2hpdGVib2FyZC9kdG8vUm9vbVN0YXR1cy5qYXZhCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS53aGl0ZWJvYXJkLmR0bzsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbS5DbGllbnQ7CisKK3B1YmxpYyBjbGFzcyBSb29tU3RhdHVzIHsKKwkKKwlMaXN0PENsaWVudD4gY2xpZW50TGlzdDsKKwlCcm93c2VyU3RhdHVzIGJyb3dzZXJTdGF0dXM7CisJQm9vbGVhbiByb29tRnVsbCA9IGZhbHNlOworCQorCXB1YmxpYyBMaXN0PENsaWVudD4gZ2V0Q2xpZW50TGlzdCgpIHsKKwkJcmV0dXJuIGNsaWVudExpc3Q7CisJfQorCXB1YmxpYyB2b2lkIHNldENsaWVudExpc3QoTGlzdDxDbGllbnQ+IGNsaWVudExpc3QpIHsKKwkJdGhpcy5jbGllbnRMaXN0ID0gY2xpZW50TGlzdDsKKwl9CisJcHVibGljIEJyb3dzZXJTdGF0dXMgZ2V0QnJvd3NlclN0YXR1cygpIHsKKwkJcmV0dXJuIGJyb3dzZXJTdGF0dXM7CisJfQorCXB1YmxpYyB2b2lkIHNldEJyb3dzZXJTdGF0dXMoQnJvd3NlclN0YXR1cyBicm93c2VyU3RhdHVzKSB7CisJCXRoaXMuYnJvd3NlclN0YXR1cyA9IGJyb3dzZXJTdGF0dXM7CisJfQorCXB1YmxpYyBCb29sZWFuIGdldFJvb21GdWxsKCkgeworCQlyZXR1cm4gcm9vbUZ1bGw7CisJfQorCXB1YmxpYyB2b2lkIHNldFJvb21GdWxsKEJvb2xlYW4gcm9vbUZ1bGwpIHsKKwkJdGhpcy5yb29tRnVsbCA9IHJvb21GdWxsOworCX0KKwkKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL3doaXRlYm9hcmQvZHRvL1doaXRlYm9hcmRPYmplY3QuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL3doaXRlYm9hcmQvZHRvL1doaXRlYm9hcmRPYmplY3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NThkNmEyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvd2hpdGVib2FyZC9kdG8vV2hpdGVib2FyZE9iamVjdC5qYXZhCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS53aGl0ZWJvYXJkLmR0bzsKKworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5NYXA7CisKK3B1YmxpYyBjbGFzcyBXaGl0ZWJvYXJkT2JqZWN0IHsKKworCXByaXZhdGUgTG9uZyB3aGl0ZUJvYXJkSWQ7CisJcHJpdmF0ZSBJbnRlZ2VyIHggPSAwOworCXByaXZhdGUgSW50ZWdlciB5ID0gMDsKKwlwcml2YXRlIEludGVnZXIgem9vbSA9IDEwMDsKKwlwcml2YXRlIEJvb2xlYW4gZnVsbEZpdCA9IHRydWU7CisJQFN1cHByZXNzV2FybmluZ3MoInJhd3R5cGVzIikKKwlwcml2YXRlIE1hcDxTdHJpbmcsIExpc3Q+IHJvb21JdGVtcyA9IG5ldyBIYXNoTWFwPFN0cmluZywgTGlzdD4oKTsKKwlwcml2YXRlIERhdGUgY3JlYXRlZCA9IG5ldyBEYXRlKCk7CisKKwlwdWJsaWMgTG9uZyBnZXRXaGl0ZUJvYXJkSWQoKSB7CisJCXJldHVybiB3aGl0ZUJvYXJkSWQ7CisJfQorCisJcHVibGljIHZvaWQgc2V0V2hpdGVCb2FyZElkKExvbmcgd2hpdGVCb2FyZElkKSB7CisJCXRoaXMud2hpdGVCb2FyZElkID0gd2hpdGVCb2FyZElkOworCX0KKworCXB1YmxpYyBJbnRlZ2VyIGdldFgoKSB7CisJCXJldHVybiB4OworCX0KKworCXB1YmxpYyB2b2lkIHNldFgoSW50ZWdlciB4KSB7CisJCXRoaXMueCA9IHg7CisJfQorCisJcHVibGljIEludGVnZXIgZ2V0WSgpIHsKKwkJcmV0dXJuIHk7CisJfQorCisJcHVibGljIHZvaWQgc2V0WShJbnRlZ2VyIHkpIHsKKwkJdGhpcy55ID0geTsKKwl9CisKKwlAU3VwcHJlc3NXYXJuaW5ncygicmF3dHlwZXMiKQorCXB1YmxpYyBNYXA8U3RyaW5nLCBMaXN0PiBnZXRSb29tSXRlbXMoKSB7CisJCXJldHVybiByb29tSXRlbXM7CisJfQorCisJQFN1cHByZXNzV2FybmluZ3MoInJhd3R5cGVzIikKKwlwdWJsaWMgdm9pZCBzZXRSb29tSXRlbXMoTWFwPFN0cmluZywgTGlzdD4gcm9vbUl0ZW1zKSB7CisJCXRoaXMucm9vbUl0ZW1zID0gcm9vbUl0ZW1zOworCX0KKworCXB1YmxpYyBEYXRlIGdldENyZWF0ZWQoKSB7CisJCXJldHVybiBjcmVhdGVkOworCX0KKworCXB1YmxpYyB2b2lkIHNldENyZWF0ZWQoRGF0ZSBjcmVhdGVkKSB7CisJCXRoaXMuY3JlYXRlZCA9IGNyZWF0ZWQ7CisJfQorCisJcHVibGljIEludGVnZXIgZ2V0Wm9vbSgpIHsKKwkJcmV0dXJuIHpvb207CisJfQorCisJcHVibGljIHZvaWQgc2V0Wm9vbShJbnRlZ2VyIHpvb20pIHsKKwkJdGhpcy56b29tID0gem9vbTsKKwl9CisKKwlwdWJsaWMgQm9vbGVhbiBnZXRGdWxsRml0KCkgeworCQlyZXR1cm4gZnVsbEZpdDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRGdWxsRml0KEJvb2xlYW4gZnVsbEZpdCkgeworCQl0aGlzLmZ1bGxGaXQgPSBmdWxsRml0OworCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvd2hpdGVib2FyZC9kdG8vV2hpdGVib2FyZE9iamVjdExpc3QuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL3doaXRlYm9hcmQvZHRvL1doaXRlYm9hcmRPYmplY3RMaXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA5NzU5NgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL3doaXRlYm9hcmQvZHRvL1doaXRlYm9hcmRPYmplY3RMaXN0LmphdmEKQEAgLTAsMCArMSw0MiBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLndoaXRlYm9hcmQuZHRvOworCitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLk1hcDsKKworcHVibGljIGNsYXNzIFdoaXRlYm9hcmRPYmplY3RMaXN0IHsKKworCXByaXZhdGUgTG9uZyByb29tX2lkOworCXByaXZhdGUgTWFwPExvbmcsV2hpdGVib2FyZE9iamVjdD4gd2hpdGVib2FyZE9iamVjdHMgPSBuZXcgSGFzaE1hcDxMb25nLFdoaXRlYm9hcmRPYmplY3Q+KCk7CisJCisJcHVibGljIExvbmcgZ2V0Um9vbV9pZCgpIHsKKwkJcmV0dXJuIHJvb21faWQ7CisJfQorCXB1YmxpYyB2b2lkIHNldFJvb21faWQoTG9uZyByb29tSWQpIHsKKwkJcm9vbV9pZCA9IHJvb21JZDsKKwl9CisJcHVibGljIE1hcDxMb25nLCBXaGl0ZWJvYXJkT2JqZWN0PiBnZXRXaGl0ZWJvYXJkT2JqZWN0cygpIHsKKwkJcmV0dXJuIHdoaXRlYm9hcmRPYmplY3RzOworCX0KKwlwdWJsaWMgdm9pZCBzZXRXaGl0ZWJvYXJkT2JqZWN0cyhNYXA8TG9uZywgV2hpdGVib2FyZE9iamVjdD4gd2hpdGVib2FyZE9iamVjdHMpIHsKKwkJdGhpcy53aGl0ZWJvYXJkT2JqZWN0cyA9IHdoaXRlYm9hcmRPYmplY3RzOworCX0KKwkKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL3doaXRlYm9hcmQvZHRvL1doaXRlYm9hcmRTeW5jTG9ja09iamVjdC5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RhdGEvd2hpdGVib2FyZC9kdG8vV2hpdGVib2FyZFN5bmNMb2NrT2JqZWN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzVhZmUxYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kYXRhL3doaXRlYm9hcmQvZHRvL1doaXRlYm9hcmRTeW5jTG9ja09iamVjdC5qYXZhCkBAIC0wLDAgKzEsNzIgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS53aGl0ZWJvYXJkLmR0bzsKKworaW1wb3J0IGphdmEudXRpbC5EYXRlOworCitwdWJsaWMgY2xhc3MgV2hpdGVib2FyZFN5bmNMb2NrT2JqZWN0IHsKKworCXByaXZhdGUgU3RyaW5nIHB1YmxpY1NJRDsKKwlwcml2YXRlIGJvb2xlYW4gaXNJbml0aWFsTG9hZGVkID0gZmFsc2U7CisJcHJpdmF0ZSBib29sZWFuIGlzQ3VycmVudExvYWRpbmdJdGVtID0gZmFsc2U7CisKKwlwcml2YXRlIERhdGUgYWRkdGltZTsKKwlwcml2YXRlIERhdGUgc3RhcnR0aW1lOworCisJcHVibGljIFN0cmluZyBnZXRQdWJsaWNTSUQoKSB7CisJCXJldHVybiBwdWJsaWNTSUQ7CisJfQorCisJcHVibGljIHZvaWQgc2V0UHVibGljU0lEKFN0cmluZyBwdWJsaWNTSUQpIHsKKwkJdGhpcy5wdWJsaWNTSUQgPSBwdWJsaWNTSUQ7CisJfQorCisJcHVibGljIGJvb2xlYW4gaXNJbml0aWFsTG9hZGVkKCkgeworCQlyZXR1cm4gaXNJbml0aWFsTG9hZGVkOworCX0KKworCXB1YmxpYyB2b2lkIHNldEluaXRpYWxMb2FkZWQoYm9vbGVhbiBpc0luaXRpYWxMb2FkZWQpIHsKKwkJdGhpcy5pc0luaXRpYWxMb2FkZWQgPSBpc0luaXRpYWxMb2FkZWQ7CisJfQorCisJcHVibGljIERhdGUgZ2V0U3RhcnR0aW1lKCkgeworCQlyZXR1cm4gc3RhcnR0aW1lOworCX0KKworCXB1YmxpYyB2b2lkIHNldFN0YXJ0dGltZShEYXRlIHN0YXJ0dGltZSkgeworCQl0aGlzLnN0YXJ0dGltZSA9IHN0YXJ0dGltZTsKKwl9CisKKwlwdWJsaWMgYm9vbGVhbiBpc0N1cnJlbnRMb2FkaW5nSXRlbSgpIHsKKwkJcmV0dXJuIGlzQ3VycmVudExvYWRpbmdJdGVtOworCX0KKworCXB1YmxpYyB2b2lkIHNldEN1cnJlbnRMb2FkaW5nSXRlbShib29sZWFuIGlzQ3VycmVudExvYWRpbmdJdGVtKSB7CisJCXRoaXMuaXNDdXJyZW50TG9hZGluZ0l0ZW0gPSBpc0N1cnJlbnRMb2FkaW5nSXRlbTsKKwl9CisKKwlwdWJsaWMgRGF0ZSBnZXRBZGR0aW1lKCkgeworCQlyZXR1cm4gYWRkdGltZTsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRBZGR0aW1lKERhdGUgYWRkdGltZSkgeworCQl0aGlzLmFkZHRpbWUgPSBhZGR0aW1lOworCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RvYy9XZWJTZXJ2aWNlRG9jbGV0LmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZG9jL1dlYlNlcnZpY2VEb2NsZXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMmJhNDgxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RvYy9XZWJTZXJ2aWNlRG9jbGV0LmphdmEKQEAgLTAsMCArMSwxMTggQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZG9jOworCitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuaW8uRmlsZVdyaXRlcjsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5NYXA7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnZlbG9jaXR5LlZlbG9jaXR5Q29udGV4dDsKK2ltcG9ydCBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC5WZWxvY2l0eTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworCitpbXBvcnQgY29tLnN1bi5qYXZhZG9jLkNsYXNzRG9jOworaW1wb3J0IGNvbS5zdW4uamF2YWRvYy5Sb290RG9jOworaW1wb3J0IGNvbS5zdW4uamF2YWRvYy5UYWc7CisKK3B1YmxpYyBjbGFzcyBXZWJTZXJ2aWNlRG9jbGV0IHsKKwkKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuCisJCQlnZXRMb2dnZXIoV2ViU2VydmljZURvY2xldC5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCQorCXN0YXRpYyBmaW5hbCBTdHJpbmcgYmFzZVRlbXBsYXRlUGF0aCA9ICJ4ZG9jcyI7CisJc3RhdGljIGZpbmFsIFN0cmluZyBiYXNlUGF0aCA9ICJkb2NzIjsKKwlzdGF0aWMgZmluYWwgU3RyaW5nIHRlbXBsYXRlTmFtZSA9ICJBcGlNZXRob2RzVGVtcGxhdGUudm0iOworCXN0YXRpYyBmaW5hbCBTdHJpbmcgdGVtcGxhdGVOYW1lSW5kZXggPSAiQXBpQ2xhc3Nlc1RlbXBsYXRlLnZtIjsKKworCXB1YmxpYyBzdGF0aWMgYm9vbGVhbiBzdGFydChSb290RG9jIHJvb3QpIHsKKworCQl0cnkgeworCQkJCisJCQlWZWxvY2l0eS5pbml0KCk7CisJCQlvdXQoIlN0YXJ0IFdlYlNlcnZpY2VEb2NsZXQgdGVtcGxhdGVOYW1lTmV3ICIgKyB0ZW1wbGF0ZU5hbWUpOworCQkJCisJCQlBcnJheUxpc3Q8TWFwPFN0cmluZyxTdHJpbmc+PiBjbGFzc2VzUGFyc2VkID0gbmV3IEFycmF5TGlzdDxNYXA8U3RyaW5nLFN0cmluZz4+KHJvb3QuY2xhc3NlcygpLmxlbmd0aCk7CisJCQkKKwkJCS8vIGl0ZXJhdGUgb3ZlciBhbGwgY2xhc3Nlcy4KKwkJCUNsYXNzRG9jW10gY2xhc3NlcyA9IHJvb3QuY2xhc3NlcygpOworCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBjbGFzc2VzLmxlbmd0aDsgaSsrKSB7CisJCQkJLy8gaXRlcmF0ZSBvdmVyIGFsbCBtZXRob2RzIGFuZCBwcmludCB0aGVpciBuYW1lcy4KKwkJCQkKKwkJCQlWZWxvY2l0eUNvbnRleHQgdkNvbnRleHQgPSBuZXcgVmVsb2NpdHlDb250ZXh0KCk7CisJCQkJdkNvbnRleHQucHV0KCJjbGFzc05hbWUiLCBjbGFzc2VzW2ldLm5hbWUoKSk7CisJCQkJdkNvbnRleHQucHV0KCJjbGFzc0NvbW1lbnQiLCBjbGFzc2VzW2ldLmNvbW1lbnRUZXh0KCkpOworCQkJCQorCQkJCVN0cmluZyBkZWZhdWx0T3V0cHV0TmFtZSA9IGNsYXNzZXNbaV0ubmFtZSgpOworCQkJCWZvciAoVGFnIHRhZyA6IGNsYXNzZXNbaV0udGFncygpKSB7CisJCQkJCWlmICh0YWcubmFtZSgpLmVxdWFscygiQHdlYnNlcnZpY2UiKSkgeworCQkJCQkJZGVmYXVsdE91dHB1dE5hbWUgPSB0YWcudGV4dCgpOworCQkJCQl9CisJCQkJfQorCQkJCQorCQkJCXZDb250ZXh0LnB1dCgid2ViU2VydmljZU5hbWUiLCBkZWZhdWx0T3V0cHV0TmFtZSk7CisJCQkJCisJCQkJSGFzaE1hcDxTdHJpbmcsU3RyaW5nPiBjbGFzc0l0ZW0gPSBuZXcgSGFzaE1hcDxTdHJpbmcsU3RyaW5nPigpOworCQkJCWNsYXNzSXRlbS5wdXQoIm5hbWUiLGRlZmF1bHRPdXRwdXROYW1lKTsKKwkJCQljbGFzc0l0ZW0ucHV0KCJjb21tZW50IixjbGFzc2VzW2ldLmNvbW1lbnRUZXh0KCkpOworCQkJCWNsYXNzZXNQYXJzZWQuYWRkKGNsYXNzSXRlbSk7CisJCQkJCisJCQkJdkNvbnRleHQucHV0KCJtZXRob2RzIiwgY2xhc3Nlc1tpXS5tZXRob2RzKCkpOworCQkJCQorCQkJCUZpbGVXcml0ZXIgc3RyV3JpdGVyID0gbmV3IEZpbGVXcml0ZXIoYmFzZVBhdGgKKwkJCQkJCSsgRmlsZS5zZXBhcmF0b3JDaGFyICsgZGVmYXVsdE91dHB1dE5hbWUgKyAiLmh0bWwiKTsKKworCQkJCVZlbG9jaXR5Lm1lcmdlVGVtcGxhdGUoYmFzZVRlbXBsYXRlUGF0aCArIEZpbGUuc2VwYXJhdG9yQ2hhcgorCQkJCQkJKyB0ZW1wbGF0ZU5hbWUsICJVVEYtOCIsIHZDb250ZXh0LCBzdHJXcml0ZXIpOworCQkJCQorCQkJCXN0cldyaXRlci5mbHVzaCgpOworCQkJCXN0cldyaXRlci5jbG9zZSgpOworCisJCQl9CisJCQkKKwkJCQorCQkJVmVsb2NpdHlDb250ZXh0IHZJbmRleENvbnRleHQgPSBuZXcgVmVsb2NpdHlDb250ZXh0KCk7CisJCQl2SW5kZXhDb250ZXh0LnB1dCgiY2xhc3NlcyIsIGNsYXNzZXNQYXJzZWQpOworCQkJCisJCQlGaWxlV3JpdGVyIG5ld0ZpbGVJbmRleFdyaXRlciA9IG5ldyBGaWxlV3JpdGVyKGJhc2VQYXRoCisJCQkJCSsgRmlsZS5zZXBhcmF0b3JDaGFyICsgIldlYnNlcnZpY2VJbmRleC5odG1sIik7CisKKwkJCVZlbG9jaXR5Lm1lcmdlVGVtcGxhdGUoYmFzZVRlbXBsYXRlUGF0aCArIEZpbGUuc2VwYXJhdG9yQ2hhcgorCQkJCQkrIHRlbXBsYXRlTmFtZUluZGV4LCAiVVRGLTgiLCB2SW5kZXhDb250ZXh0LCBuZXdGaWxlSW5kZXhXcml0ZXIpOworCQkJCisJCQluZXdGaWxlSW5kZXhXcml0ZXIuZmx1c2goKTsKKwkJCW5ld0ZpbGVJbmRleFdyaXRlci5jbG9zZSgpOworCQkJCisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbc3RhcnRdIiwgZXJyKTsKKwkJfQorCisJCS8vIE5vIGVycm9yIHByb2Nlc3NpbmcgZG9uZSwgc2ltcGx5IHJldHVybiB0cnVlLgorCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwlwcml2YXRlIHN0YXRpYyB2b2lkIG91dChTdHJpbmcgbXNnKSB7CisJCVN5c3RlbS5vdXQucHJpbnRsbihtc2cpOworCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RvY3VtZW50cy9DcmVhdGVMaWJyYXJ5UHJlc2VudGF0aW9uLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZG9jdW1lbnRzL0NyZWF0ZUxpYnJhcnlQcmVzZW50YXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNGFiZjBlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RvY3VtZW50cy9DcmVhdGVMaWJyYXJ5UHJlc2VudGF0aW9uLmphdmEKQEAgLTAsMCArMSwxMTUgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZG9jdW1lbnRzOworCitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuaW8uRmlsZU91dHB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLkZpbGVuYW1lRmlsdGVyOworaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZG9jdW1lbnRzLmJlYW5zLkNvbnZlcnRlclByb2Nlc3NSZXN1bHQ7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMuT21GaWxlSGVscGVyOworaW1wb3J0IG9yZy5kb200ai5Eb2N1bWVudDsKK2ltcG9ydCBvcmcuZG9tNGouRG9jdW1lbnRIZWxwZXI7CitpbXBvcnQgb3JnLmRvbTRqLkVsZW1lbnQ7CitpbXBvcnQgb3JnLmRvbTRqLmlvLlhNTFdyaXRlcjsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CisKK3B1YmxpYyBjbGFzcyBDcmVhdGVMaWJyYXJ5UHJlc2VudGF0aW9uIHsKKwkKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuCisJCQlnZXRMb2dnZXIoQ3JlYXRlTGlicmFyeVByZXNlbnRhdGlvbi5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCQorCXB1YmxpYyBzdGF0aWMgQ29udmVydGVyUHJvY2Vzc1Jlc3VsdCBnZW5lcmF0ZVhNTERvY3VtZW50KEZpbGUgdGFyZ2V0RGlyZWN0b3J5LCBTdHJpbmcgb3JpZ2luYWxEb2N1bWVudCwgCisJCQlTdHJpbmcgcGRmRG9jdW1lbnQsIFN0cmluZyBzd2ZEb2N1bWVudCl7CisJCUNvbnZlcnRlclByb2Nlc3NSZXN1bHQgcmV0dXJuTWFwID0gbmV3IENvbnZlcnRlclByb2Nlc3NSZXN1bHQoKTsKKwkJcmV0dXJuTWFwLnNldFByb2Nlc3MoImdlbmVyYXRlWE1MRG9jdW1lbnQiKTsJCQorCQl0cnkgeworCQkJCisJICAgICAgICBEb2N1bWVudCBkb2N1bWVudCA9IERvY3VtZW50SGVscGVyLmNyZWF0ZURvY3VtZW50KCk7CisJICAgICAgICBFbGVtZW50IHJvb3QgPSBkb2N1bWVudC5hZGRFbGVtZW50KCAicHJlc2VudGF0aW9uIiApOworCisJICAgICAgICBGaWxlIGZpbGUgPSBuZXcgRmlsZSh0YXJnZXREaXJlY3RvcnksIG9yaWdpbmFsRG9jdW1lbnQpOworCSAgICAgICAgcm9vdC5hZGRFbGVtZW50KCAib3JpZ2luYWxEb2N1bWVudCIgKQorCQkJCS5hZGRBdHRyaWJ1dGUoImxhc3Rtb2QiLCAobmV3IExvbmcoZmlsZS5sYXN0TW9kaWZpZWQoKSkpLnRvU3RyaW5nKCkpCisJCQkJLmFkZEF0dHJpYnV0ZSgic2l6ZSIsIChuZXcgTG9uZyhmaWxlLmxlbmd0aCgpKSkudG9TdHJpbmcoKSkJICAgICAgICAKKwkgICAgICAgICAgICAuYWRkVGV4dCggb3JpZ2luYWxEb2N1bWVudCApOworCSAgICAgICAgCisJICAgICAgICBpZiAocGRmRG9jdW1lbnQhPW51bGwpeworCSAgICAgICAgCUZpbGUgcGRmRG9jdW1lbnRGaWxlID0gbmV3IEZpbGUodGFyZ2V0RGlyZWN0b3J5LCBwZGZEb2N1bWVudCk7CisJCSAgICAgICAgcm9vdC5hZGRFbGVtZW50KCAicGRmRG9jdW1lbnQiICkKKwkJCQkJLmFkZEF0dHJpYnV0ZSgibGFzdG1vZCIsIChuZXcgTG9uZyhwZGZEb2N1bWVudEZpbGUubGFzdE1vZGlmaWVkKCkpKS50b1N0cmluZygpKQorCQkJCQkuYWRkQXR0cmlidXRlKCJzaXplIiwgKG5ldyBMb25nKHBkZkRvY3VtZW50RmlsZS5sZW5ndGgoKSkpLnRvU3RyaW5nKCkpCSAgIAkJICAgICAgICAKKwkJICAgICAgICAgICAgLmFkZFRleHQoIHBkZkRvY3VtZW50ICk7CisJICAgICAgICB9CisJICAgICAgICAKKwkgICAgICAgIGlmIChzd2ZEb2N1bWVudCE9bnVsbCl7CisJICAgICAgICAJRmlsZSBzd2ZEb2N1bWVudEZpbGUgPSBuZXcgRmlsZSh0YXJnZXREaXJlY3RvcnksIG9yaWdpbmFsRG9jdW1lbnQpOworCQkgICAgICAgIHJvb3QuYWRkRWxlbWVudCggInN3ZkRvY3VtZW50IiApCisJCQkJCS5hZGRBdHRyaWJ1dGUoImxhc3Rtb2QiLCAobmV3IExvbmcoc3dmRG9jdW1lbnRGaWxlLmxhc3RNb2RpZmllZCgpKSkudG9TdHJpbmcoKSkKKwkJCQkJLmFkZEF0dHJpYnV0ZSgic2l6ZSIsIChuZXcgTG9uZyhzd2ZEb2N1bWVudEZpbGUubGVuZ3RoKCkpKS50b1N0cmluZygpKQkgIAkJICAgICAgICAKKwkgICAgICAgICAgICAJLmFkZFRleHQoIHN3ZkRvY3VtZW50ICk7CSAgCisJICAgICAgICB9CisJICAgICAgICAKKwkgICAgICAgIEVsZW1lbnQgdGh1bWJzID0gcm9vdC5hZGRFbGVtZW50KCAidGh1bWJzIiApOworCSAgICAgICAgCisJCQkvL1NlY29vbmQgZ2V0IGFsbCBGaWxlcyBvZiB0aGlzIEZvbGRlcgorCQkJRmlsZW5hbWVGaWx0ZXIgZmYgPSBuZXcgRmlsZW5hbWVGaWx0ZXIoKSB7CisJCQkgICAgIHB1YmxpYyBib29sZWFuIGFjY2VwdChGaWxlIGIsIFN0cmluZyBuYW1lKSB7CisJCQkgICAgCSAgRmlsZSBmID0gbmV3IEZpbGUoYiwgbmFtZSk7CisJCQkgICAgICAgICAgcmV0dXJuIGYuaXNGaWxlKCk7CisJCQkgICAgIH0KKwkJCX07CQorCQkJCisJCQlTdHJpbmdbXSBhbGxmaWxlcyA9IHRhcmdldERpcmVjdG9yeS5saXN0KGZmKTsJCQkKKwkJCWlmKGFsbGZpbGVzIT1udWxsKXsKKwkJCQlBcnJheXMuc29ydChhbGxmaWxlcyk7CisJCQkJZm9yKGludCBpPTA7IGk8YWxsZmlsZXMubGVuZ3RoOyBpKyspeworCQkJCQlGaWxlIHRodW1iZmlsZSA9IG5ldyBGaWxlKHRhcmdldERpcmVjdG9yeSwgYWxsZmlsZXNbaV0pOworCQkJCQlpZiAoYWxsZmlsZXNbaV0uc3RhcnRzV2l0aCgiX3RodW1iXyIpKXsKKwkJCQkJCXRodW1icy5hZGRFbGVtZW50KCAidGh1bWIiICkKKwkJCQkJCQkuYWRkQXR0cmlidXRlKCJsYXN0bW9kIiwgKG5ldyBMb25nKHRodW1iZmlsZS5sYXN0TW9kaWZpZWQoKSkpLnRvU3RyaW5nKCkpCisJCQkJCQkJLmFkZEF0dHJpYnV0ZSgic2l6ZSIsIChuZXcgTG9uZyh0aHVtYmZpbGUubGVuZ3RoKCkpKS50b1N0cmluZygpKQorCQkJICAgICAgICAgICAgCS5hZGRUZXh0KCBhbGxmaWxlc1tpXSApOworCQkJCQl9CisJCQkJfQorCQkJfQorCSAgICAgICAgCisJICAgICAgICAvLyBsZXRzIHdyaXRlIHRvIGEgZmlsZQorCSAgICAgICAgWE1MV3JpdGVyIHdyaXRlciA9IG5ldyBYTUxXcml0ZXIoCisJICAgICAgICAgICAgbmV3IEZpbGVPdXRwdXRTdHJlYW0obmV3IEZpbGUodGFyZ2V0RGlyZWN0b3J5LCBPbUZpbGVIZWxwZXIubGlicmFyeUZpbGVOYW1lKSkKKwkgICAgICAgICk7CisJICAgICAgICB3cml0ZXIud3JpdGUoIGRvY3VtZW50ICk7CisJICAgICAgICB3cml0ZXIuY2xvc2UoKTsKKwkJCQorCSAgICAgICAgcmV0dXJuTWFwLnNldEV4aXRWYWx1ZSgiMCIpOworCSAgICAgICAgCisJCQlyZXR1cm4gcmV0dXJuTWFwOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltnZW5lcmF0ZVhNTERvY3VtZW50XSIsIGVycik7CisJCQlyZXR1cm5NYXAuc2V0RXJyb3IoZXJyLmdldE1lc3NhZ2UoKSk7CisJCQlyZXR1cm5NYXAuc2V0RXhpdFZhbHVlKCItMSIpOworCQkJcmV0dXJuIHJldHVybk1hcDsKKwkJfQorCX0KKwkKKwkKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kb2N1bWVudHMvR2VuZXJhdGVJbWFnZS5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RvY3VtZW50cy9HZW5lcmF0ZUltYWdlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2QyMmFmMQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kb2N1bWVudHMvR2VuZXJhdGVJbWFnZS5qYXZhCkBAIC0wLDAgKzEsMTQ5IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRvY3VtZW50czsKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuZmx2cmVjb3JkLmNvbnZlcnRlci5CYXNlQ29udmVydGVyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEudXNlci5kYW8uVXNlcnNEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZG9jdW1lbnRzLmJlYW5zLkNvbnZlcnRlclByb2Nlc3NSZXN1bHQ7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZG9jdW1lbnRzLmJlYW5zLkNvbnZlcnRlclByb2Nlc3NSZXN1bHRMaXN0OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuVXNlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5PbUZpbGVIZWxwZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMuUHJvY2Vzc0hlbHBlcjsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uQXV0b3dpcmVkOworCitwdWJsaWMgY2xhc3MgR2VuZXJhdGVJbWFnZSBleHRlbmRzIEJhc2VDb252ZXJ0ZXIgeworCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcigKKwkJCUdlbmVyYXRlSW1hZ2UuY2xhc3MsIE9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFVzZXJzRGFvIHVzZXJzRGFvOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEdlbmVyYXRlVGh1bWJzIGdlbmVyYXRlVGh1bWJzOworCisJcHVibGljIENvbnZlcnRlclByb2Nlc3NSZXN1bHRMaXN0IGNvbnZlcnRJbWFnZShTdHJpbmcgZmlsZU5hbWUsIFN0cmluZyBmaWxlRXh0LAorCQkJU3RyaW5nIHJvb21OYW1lLCBTdHJpbmcgZmlsZU5hbWVTaG9ydCwgYm9vbGVhbiBmdWxsUHJvY2Vzc2luZykKKwkJCXRocm93cyBFeGNlcHRpb24geworCisJCUNvbnZlcnRlclByb2Nlc3NSZXN1bHRMaXN0IHJldHVybk1hcCA9IG5ldyBDb252ZXJ0ZXJQcm9jZXNzUmVzdWx0TGlzdCgpOworCisJCUZpbGUgZmlsZUZ1bGxQYXRoID0gbmV3IEZpbGUoT21GaWxlSGVscGVyLmdldFVwbG9hZFRlbXBSb29tRGlyKHJvb21OYW1lKSwgZmlsZU5hbWUgKyBmaWxlRXh0KTsKKworCQlGaWxlIGRlc3RpbmF0aW9uRmlsZSA9IE9tRmlsZUhlbHBlci5nZXROZXdGaWxlKE9tRmlsZUhlbHBlci5nZXRVcGxvYWRSb29tRGlyKHJvb21OYW1lKSwgZmlsZU5hbWUsICIuanBnIik7CisKKwkJbG9nLmRlYnVnKCIjIyMjIyBjb252ZXJ0SW1hZ2UgZGVzdGluYXRpb25GaWxlOiAiICsgZGVzdGluYXRpb25GaWxlKTsKKworCQlDb252ZXJ0ZXJQcm9jZXNzUmVzdWx0IHByb2Nlc3NKUEcgPSB0aGlzLmNvbnZlcnRTaW5nbGVKcGcoCisJCQkJZmlsZUZ1bGxQYXRoLmdldENhbm9uaWNhbFBhdGgoKSwgZGVzdGluYXRpb25GaWxlKTsKKwkJQ29udmVydGVyUHJvY2Vzc1Jlc3VsdCBwcm9jZXNzVGh1bWIgPSBnZW5lcmF0ZVRodW1icy5nZW5lcmF0ZVRodW1iKAorCQkJCSJfdGh1bWJfIiwgZGVzdGluYXRpb25GaWxlLCA1MCk7CisKKwkJcmV0dXJuTWFwLmFkZEl0ZW0oInByb2Nlc3NKUEciLCBwcm9jZXNzSlBHKTsKKwkJcmV0dXJuTWFwLmFkZEl0ZW0oInByb2Nlc3NUaHVtYiIsIHByb2Nlc3NUaHVtYik7CisKKwkJLy8gRGVsZXRlIG9sZCBvbmUKKwkJZmlsZUZ1bGxQYXRoLmRlbGV0ZSgpOworCisJCXJldHVybiByZXR1cm5NYXA7CisJfQorCisJcHVibGljIENvbnZlcnRlclByb2Nlc3NSZXN1bHRMaXN0IGNvbnZlcnRJbWFnZVVzZXJQcm9maWxlKFN0cmluZyBmaWxlTmFtZSwgU3RyaW5nIGZpbGVFeHQsIExvbmcgdXNlcnNfaWQsCisJCQlTdHJpbmcgZmlsZU5hbWVTaG9ydCwgYm9vbGVhbiBmdWxsUHJvY2Vzc2luZykgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKwkJQ29udmVydGVyUHJvY2Vzc1Jlc3VsdExpc3QgcmV0dXJuTWFwID0gbmV3IENvbnZlcnRlclByb2Nlc3NSZXN1bHRMaXN0KCk7CisKKwkJRmlsZSB3b3JraW5nX3BwdGRpciA9IE9tRmlsZUhlbHBlci5nZXRVcGxvYWRUZW1wUHJvZmlsZXNVc2VyRGlyKHVzZXJzX2lkKTsKKworCQlTdHJpbmcgZmlsZUZ1bGxQYXRoID0gbmV3IEZpbGUod29ya2luZ19wcHRkaXIsIGZpbGVOYW1lICsgZmlsZUV4dCkuZ2V0Q2Fub25pY2FsUGF0aCgpOworCisJCUZpbGUgZGVzdGluYXRpb25GaWxlID0gT21GaWxlSGVscGVyLmdldE5ld0ZpbGUoT21GaWxlSGVscGVyLmdldFVwbG9hZFByb2ZpbGVzVXNlckRpcih1c2Vyc19pZCksIGZpbGVOYW1lLCAiLmpwZyIpOworCQlDb252ZXJ0ZXJQcm9jZXNzUmVzdWx0IHByb2Nlc3NKUEcgPSB0aGlzLmNvbnZlcnRTaW5nbGVKcGcoCisJCQkJZmlsZUZ1bGxQYXRoLCBkZXN0aW5hdGlvbkZpbGUpOworCisJCUNvbnZlcnRlclByb2Nlc3NSZXN1bHQgcHJvY2Vzc1RodW1iMSA9IGdlbmVyYXRlVGh1bWJzLmdlbmVyYXRlVGh1bWIoCisJCQkJIl9jaGF0XyIsIGRlc3RpbmF0aW9uRmlsZSwgNDApOworCQlDb252ZXJ0ZXJQcm9jZXNzUmVzdWx0IHByb2Nlc3NUaHVtYjIgPSBnZW5lcmF0ZVRodW1icy5nZW5lcmF0ZVRodW1iKAorCQkJCSJfcHJvZmlsZV8iLCBkZXN0aW5hdGlvbkZpbGUsIDEyNik7CisJCUNvbnZlcnRlclByb2Nlc3NSZXN1bHQgcHJvY2Vzc1RodW1iMyA9IGdlbmVyYXRlVGh1bWJzLmdlbmVyYXRlVGh1bWIoCisJCQkJIl9iaWdfIiwgZGVzdGluYXRpb25GaWxlLCAyNDApOworCisJCXJldHVybk1hcC5hZGRJdGVtKCJwcm9jZXNzSlBHIiwgcHJvY2Vzc0pQRyk7CisJCXJldHVybk1hcC5hZGRJdGVtKCJwcm9jZXNzVGh1bWIxIiwgcHJvY2Vzc1RodW1iMSk7CisJCXJldHVybk1hcC5hZGRJdGVtKCJwcm9jZXNzVGh1bWIyIiwgcHJvY2Vzc1RodW1iMik7CisJCXJldHVybk1hcC5hZGRJdGVtKCJwcm9jZXNzVGh1bWIzIiwgcHJvY2Vzc1RodW1iMyk7CisKKwkJLy8gRGVsZXRlIG9sZCBvbmUKKwkJRmlsZSBmVG9EZWxldGUgPSBuZXcgRmlsZShmaWxlRnVsbFBhdGgpOworCQlmVG9EZWxldGUuZGVsZXRlKCk7CisKKwkJU3RyaW5nIHBpY3R1cmV1cmkgPSBkZXN0aW5hdGlvbkZpbGUuZ2V0TmFtZSgpOworCQlVc2VyIHVzID0gdXNlcnNEYW8uZ2V0KHVzZXJzX2lkKTsKKwkJdXMuc2V0VXBkYXRldGltZShuZXcgamF2YS51dGlsLkRhdGUoKSk7CisJCXVzLnNldFBpY3R1cmV1cmkocGljdHVyZXVyaSk7CisJCXVzZXJzRGFvLnVwZGF0ZSh1cywgdXNlcnNfaWQpOworCisJCS8vRklYTUU6IEFmdGVyIHVwbG9hZGluZyBhIG5ldyBwaWN0dXJlIGFsbCBvdGhlciBjbGllbnRzIHNob3VsZCByZWZyZXNoCisJCS8vc2NvcGVBcHBsaWNhdGlvbkFkYXB0ZXIudXBkYXRlVXNlclNlc3Npb25PYmplY3QodXNlcnNfaWQsIHBpY3R1cmV1cmkpOworCisJCXJldHVybiByZXR1cm5NYXA7CisJfQorCisJLyoqCisJICogLWRlbnNpdHkgMTUwIC1yZXNpemUgODAwCisJICogQHRocm93cyBJT0V4Y2VwdGlvbiAKKwkgKiAKKwkgKi8KKwlwcml2YXRlIENvbnZlcnRlclByb2Nlc3NSZXN1bHQgY29udmVydFNpbmdsZUpwZyhTdHJpbmcgaW5wdXRGaWxlLCBGaWxlIG91dHB1dGZpbGUpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisJCVN0cmluZ1tdIGFyZ3YgPSBuZXcgU3RyaW5nW10geyBnZXRQYXRoVG9JbWFnZU1hZ2ljaygpLCBpbnB1dEZpbGUsIG91dHB1dGZpbGUuZ2V0Q2Fub25pY2FsUGF0aCgpIH07CisKKwkJLy8gcmV0dXJuIEdlbmVyYXRlU1dGLmV4ZWN1dGVTY3JpcHQoImNvbnZlcnRTaW5nbGVKcGciLCBhcmd2KTsKKworCQlpZiAoU3lzdGVtLmdldFByb3BlcnR5KCJvcy5uYW1lIikudG9VcHBlckNhc2UoKS5pbmRleE9mKCJXSU5ET1dTIikgPT0gLTEpIHsKKwkJCXJldHVybiBQcm9jZXNzSGVscGVyLmV4ZWN1dGVTY3JpcHQoImdlbmVyYXRlQmF0Y2hUaHVtYkJ5V2lkdGgiLCBhcmd2KTsKKwkJfSBlbHNlIHsKKwkJCXJldHVybiBnZW5lcmF0ZVRodW1icy5wcm9jZXNzSW1hZ2VXaW5kb3dzKGFyZ3YpOworCQl9CisKKwl9CisKKwlwdWJsaWMgQ29udmVydGVyUHJvY2Vzc1Jlc3VsdCBjb252ZXJ0SW1hZ2VCeVR5cGVBbmRTaXplKFN0cmluZyBpbnB1dEZpbGUsCisJCQlTdHJpbmcgb3V0cHV0ZmlsZSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSB7CisJCVN0cmluZ1tdIGFyZ3YgPSBuZXcgU3RyaW5nW10geyBnZXRQYXRoVG9JbWFnZU1hZ2ljaygpLCAiLXNpemUiLAorCQkJCXdpZHRoICsgIngiICsgaGVpZ2h0LCBpbnB1dEZpbGUsIG91dHB1dGZpbGUgfTsKKwkJcmV0dXJuIFByb2Nlc3NIZWxwZXIuZXhlY3V0ZVNjcmlwdCgiY29udmVydEltYWdlQnlUeXBlQW5kU2l6ZUFuZERlcHRoIiwKKwkJCQlhcmd2KTsKKwl9CisKKwlwdWJsaWMgQ29udmVydGVyUHJvY2Vzc1Jlc3VsdCBjb252ZXJ0SW1hZ2VCeVR5cGVBbmRTaXplQW5kRGVwdGgoCisJCQlTdHJpbmcgaW5wdXRGaWxlLCBTdHJpbmcgb3V0cHV0ZmlsZSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LAorCQkJaW50IGRlcHRoKSB7CisJCVN0cmluZ1tdIGFyZ3YgPSBuZXcgU3RyaW5nW10geyBnZXRQYXRoVG9JbWFnZU1hZ2ljaygpLCAiLXNpemUiLAorCQkJCXdpZHRoICsgIngiICsgaGVpZ2h0LCAiLWRlcHRoIiwgSW50ZWdlci50b1N0cmluZyhkZXB0aCksCisJCQkJaW5wdXRGaWxlLCBvdXRwdXRmaWxlIH07CisJCXJldHVybiBQcm9jZXNzSGVscGVyLmV4ZWN1dGVTY3JpcHQoImNvbnZlcnRJbWFnZUJ5VHlwZUFuZFNpemVBbmREZXB0aCIsCisJCQkJYXJndik7CisJfQorCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZG9jdW1lbnRzL0dlbmVyYXRlUERGLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZG9jdW1lbnRzL0dlbmVyYXRlUERGLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTgxZWI5ZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kb2N1bWVudHMvR2VuZXJhdGVQREYuamF2YQpAQCAtMCwwICsxLDE1OSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kb2N1bWVudHM7CisKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS5pby5GaWxlbmFtZUZpbHRlcjsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworCitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLnRyYW5zYWN0aW9uLnV0aWwuRmlsZUhlbHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5kYW8uQ29uZmlndXJhdGlvbkRhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kb2N1bWVudHMuYmVhbnMuQ29udmVydGVyUHJvY2Vzc1Jlc3VsdDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kb2N1bWVudHMuYmVhbnMuQ29udmVydGVyUHJvY2Vzc1Jlc3VsdExpc3Q7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMuT21GaWxlSGVscGVyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLlByb2Nlc3NIZWxwZXI7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKKworcHVibGljIGNsYXNzIEdlbmVyYXRlUERGIHsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoCisJCQlHZW5lcmF0ZVBERi5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCisJQEF1dG93aXJlZAorCXByaXZhdGUgR2VuZXJhdGVUaHVtYnMgZ2VuZXJhdGVUaHVtYnM7CisJQEF1dG93aXJlZAorCXByaXZhdGUgR2VuZXJhdGVTV0YgZ2VuZXJhdGVTV0Y7CisJQEF1dG93aXJlZAorCXByaXZhdGUgQ29uZmlndXJhdGlvbkRhbyBjb25maWd1cmF0aW9uRGFvOworCisJcHVibGljIENvbnZlcnRlclByb2Nlc3NSZXN1bHRMaXN0IGNvbnZlcnRQREYoU3RyaW5nIGZpbGVOYW1lLAorCQkJU3RyaW5nIHJvb21OYW1lLCBib29sZWFuIGZ1bGxQcm9jZXNzaW5nLCBGaWxlIGluRmlsZSkKKwkJCXRocm93cyBFeGNlcHRpb24geworCisJCVN0cmluZyBpbkZpbGVOYW1lID0gaW5GaWxlLmdldE5hbWUoKTsKKwkJQ29udmVydGVyUHJvY2Vzc1Jlc3VsdExpc3QgcmV0dXJuRXJyb3IgPSBuZXcgQ29udmVydGVyUHJvY2Vzc1Jlc3VsdExpc3QoKTsKKworCQlGaWxlIGZpbGVGdWxsUGF0aCA9IG5ldyBGaWxlKE9tRmlsZUhlbHBlci5nZXRVcGxvYWRUZW1wUm9vbURpcihyb29tTmFtZSksIGluRmlsZU5hbWUpOworCQlGaWxlIGRlc3RpbmF0aW9uRm9sZGVyID0gT21GaWxlSGVscGVyLmdldE5ld0RpcihPbUZpbGVIZWxwZXIuZ2V0VXBsb2FkUm9vbURpcihyb29tTmFtZSksIGZpbGVOYW1lKTsKKworCQlsb2cuZGVidWcoImZ1bGxQcm9jZXNzaW5nOiAiICsgZnVsbFByb2Nlc3NpbmcpOworCQlpZiAoZnVsbFByb2Nlc3NpbmcpIHsKKwkJCUNvbnZlcnRlclByb2Nlc3NSZXN1bHQgcHJvY2Vzc09wZW5PZmZpY2UgPSBkb0pvZENvbnZlcnQoCisJCQkJCWZpbGVGdWxsUGF0aCwgZGVzdGluYXRpb25Gb2xkZXIsIGZpbGVOYW1lKTsKKwkJCXJldHVybkVycm9yLmFkZEl0ZW0oInByb2Nlc3NPcGVuT2ZmaWNlIiwgcHJvY2Vzc09wZW5PZmZpY2UpOworCQkJQ29udmVydGVyUHJvY2Vzc1Jlc3VsdCBwcm9jZXNzVGh1bWIgPSBnZW5lcmF0ZVRodW1icworCQkJCQkuZ2VuZXJhdGVCYXRjaFRodW1iKG5ldyBGaWxlKGRlc3RpbmF0aW9uRm9sZGVyLCBmaWxlTmFtZSArICIucGRmIiksIGRlc3RpbmF0aW9uRm9sZGVyLCA4MCwgInRodW1iIik7CisJCQlyZXR1cm5FcnJvci5hZGRJdGVtKCJwcm9jZXNzVGh1bWIiLCBwcm9jZXNzVGh1bWIpOworCQkJQ29udmVydGVyUHJvY2Vzc1Jlc3VsdCBwcm9jZXNzU1dGID0gZ2VuZXJhdGVTV0YKKwkJCQkJLmdlbmVyYXRlU3dmKGRlc3RpbmF0aW9uRm9sZGVyLCBkZXN0aW5hdGlvbkZvbGRlciwgZmlsZU5hbWUpOworCQkJcmV0dXJuRXJyb3IuYWRkSXRlbSgicHJvY2Vzc1NXRiIsIHByb2Nlc3NTV0YpOworCQl9IGVsc2UgeworCisJCQlsb2cuZGVidWcoIi0tIGdlbmVyYXRlQmF0Y2hUaHVtYiAtLSIpOworCisJCQlDb252ZXJ0ZXJQcm9jZXNzUmVzdWx0IHByb2Nlc3NUaHVtYiA9IGdlbmVyYXRlVGh1bWJzCisJCQkJCS5nZW5lcmF0ZUJhdGNoVGh1bWIoZmlsZUZ1bGxQYXRoLCBkZXN0aW5hdGlvbkZvbGRlciwgODAsICJ0aHVtYiIpOworCQkJcmV0dXJuRXJyb3IuYWRkSXRlbSgicHJvY2Vzc1RodW1iIiwgcHJvY2Vzc1RodW1iKTsKKworCQkJQ29udmVydGVyUHJvY2Vzc1Jlc3VsdCBwcm9jZXNzU1dGID0gZ2VuZXJhdGVTV0YuZ2VuZXJhdGVTd2YoCisJCQkJCWZpbGVGdWxsUGF0aC5nZXRQYXJlbnRGaWxlKCksIGRlc3RpbmF0aW9uRm9sZGVyLCBmaWxlTmFtZSk7CisJCQlyZXR1cm5FcnJvci5hZGRJdGVtKCJwcm9jZXNzU1dGIiwgcHJvY2Vzc1NXRik7CisJCX0KKworCQkvLyBub3cgaXQgc2hvdWxkIGJlIGNvbXBsZXRlZCBzbyBjb3B5IHRoYXQgZmlsZSB0byB0aGUgZXhwZWN0ZWQgbG9jYXRpb24KKwkJRmlsZSBmaWxlV2hlcmVUb01vdmUgPSBuZXcgRmlsZShkZXN0aW5hdGlvbkZvbGRlciwgaW5GaWxlTmFtZSk7CisJCWZpbGVXaGVyZVRvTW92ZS5jcmVhdGVOZXdGaWxlKCk7CisJCUZpbGVIZWxwZXIubW92ZVJlYyhpbkZpbGUsIGZpbGVXaGVyZVRvTW92ZSk7CisKKwkJaWYgKGZ1bGxQcm9jZXNzaW5nKSB7CisJCQlDb252ZXJ0ZXJQcm9jZXNzUmVzdWx0IHByb2Nlc3NYTUwgPSBDcmVhdGVMaWJyYXJ5UHJlc2VudGF0aW9uCisJCQkJCS5nZW5lcmF0ZVhNTERvY3VtZW50KGRlc3RpbmF0aW9uRm9sZGVyLAorCQkJCQkJCWluRmlsZU5hbWUsIGZpbGVOYW1lICsgIi5wZGYiLAorCQkJCQkJCWZpbGVOYW1lICsgIi5zd2YiKTsKKwkJCXJldHVybkVycm9yLmFkZEl0ZW0oInByb2Nlc3NYTUwiLCBwcm9jZXNzWE1MKTsKKwkJfSBlbHNlIHsKKwkJCUNvbnZlcnRlclByb2Nlc3NSZXN1bHQgcHJvY2Vzc1hNTCA9IENyZWF0ZUxpYnJhcnlQcmVzZW50YXRpb24KKwkJCQkJLmdlbmVyYXRlWE1MRG9jdW1lbnQoZGVzdGluYXRpb25Gb2xkZXIsCisJCQkJCQkJaW5GaWxlTmFtZSwgbnVsbCwgZmlsZU5hbWUgKyAiLnN3ZiIpOworCQkJcmV0dXJuRXJyb3IuYWRkSXRlbSgicHJvY2Vzc1hNTCIsIHByb2Nlc3NYTUwpOworCQl9CisKKwkJcmV0dXJuIHJldHVybkVycm9yOworCX0KKworCS8qKgorCSAqIEdlbmVyYXRlcyBQREYgdXNpbmcgSk9EIExpYnJhcnkgKGV4dGVybmFsIGxpYnJhcnkpCisJICovCisJcHVibGljIENvbnZlcnRlclByb2Nlc3NSZXN1bHQgZG9Kb2RDb252ZXJ0KEZpbGUgZmlsZUZ1bGxQYXRoLCBGaWxlIGRlc3RpbmF0aW9uRm9sZGVyLCBTdHJpbmcgb3V0cHV0ZmlsZSkgeworCQl0cnkgeworCisJCQlTdHJpbmcgam9kUGF0aCA9IGNvbmZpZ3VyYXRpb25EYW8uZ2V0Q29uZlZhbHVlKCJqb2QucGF0aCIsCisJCQkJCVN0cmluZy5jbGFzcywgIi4vam9kIik7CisJCQlTdHJpbmcgb2ZmaWNlUGF0aCA9IGNvbmZpZ3VyYXRpb25EYW8uZ2V0Q29uZlZhbHVlKAorCQkJCQkib2ZmaWNlLnBhdGgiLCBTdHJpbmcuY2xhc3MsICIiKTsKKworCQkJRmlsZSBqb2RGb2xkZXIgPSBuZXcgRmlsZShqb2RQYXRoKTsKKwkJCWlmICgham9kRm9sZGVyLmV4aXN0cygpIHx8ICFqb2RGb2xkZXIuaXNEaXJlY3RvcnkoKSkgeworCQkJCXRocm93IG5ldyBFeGNlcHRpb24oIlBhdGggdG8gSk9EIExpYnJhcnkgZm9sZGVyIGRvZXMgbm90IGV4aXN0Iik7CisJCQl9CisKKwkJCUFycmF5TGlzdDxTdHJpbmc+IGFyZ3YgPSBuZXcgQXJyYXlMaXN0PFN0cmluZz4oKTsKKwkJCWFyZ3YuYWRkKCJqYXZhIik7CisKKwkJCWlmIChvZmZpY2VQYXRoLnRyaW0oKS5sZW5ndGgoKSA+IDApIHsKKwkJCQlhcmd2LmFkZCgiLURvZmZpY2UuaG9tZT0iICsgb2ZmaWNlUGF0aCk7CisJCQl9CisJCQlTdHJpbmcgam9kQ29udmVydGVySmFyID0gIiI7CisKKwkJCWZvciAoU3RyaW5nIGphciA6IGpvZEZvbGRlci5saXN0KG5ldyBGaWxlbmFtZUZpbHRlcigpIHsKKwkJCQlwdWJsaWMgYm9vbGVhbiBhY2NlcHQoRmlsZSBmaWxlMSwgU3RyaW5nIG5hbWUpIHsKKwkJCQkJcmV0dXJuIG5hbWUuZW5kc1dpdGgoIi5qYXIiKTsKKwkJCQl9CisJCQl9KSkgeworCQkJCWFyZ3YuYWRkKCItY3AiKTsKKwkJCQlpZiAoamFyLnN0YXJ0c1dpdGgoImpvZGNvbnZlcnRlciIpKSB7CisJCQkJCWpvZENvbnZlcnRlckphciA9IGphcjsKKwkJCQl9CisJCQkJYXJndi5hZGQobmV3IEZpbGUoam9kRm9sZGVyLCBqYXIpLmdldENhbm9uaWNhbFBhdGgoKSk7CisJCQl9CisJCQlpZiAoam9kQ29udmVydGVySmFyLmxlbmd0aCgpID09IDApIHsKKwkJCQl0aHJvdyBuZXcgRXhjZXB0aW9uKAorCQkJCQkJIkNvdWxkIG5vdCBmaW5kIGpvZENvbnZlcnRlciBKQVIgZmlsZSBpbiBKT0QgZm9sZGVyIik7CisJCQl9CisKKwkJCWFyZ3YuYWRkKCItamFyIik7CisJCQlhcmd2LmFkZChuZXcgRmlsZShqb2RGb2xkZXIsIGpvZENvbnZlcnRlckphcikuZ2V0Q2Fub25pY2FsUGF0aCgpKTsKKwkJCWFyZ3YuYWRkKGZpbGVGdWxsUGF0aC5nZXRDYW5vbmljYWxQYXRoKCkpOworCQkJYXJndi5hZGQobmV3IEZpbGUoZGVzdGluYXRpb25Gb2xkZXIsIG91dHB1dGZpbGUgKyAiLnBkZiIpLmdldENhbm9uaWNhbFBhdGgoKSk7CisKKwkJCXJldHVybiBQcm9jZXNzSGVscGVyLmV4ZWN1dGVTY3JpcHQoImRvSm9kQ29udmVydCIsCisJCQkJCWFyZ3YudG9BcnJheShuZXcgU3RyaW5nW2FyZ3Yuc2l6ZSgpXSkpOworCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworCQkJbG9nLmVycm9yKCJkb0pvZENvbnZlcnQiLCBleCk7CisJCQlyZXR1cm4gbmV3IENvbnZlcnRlclByb2Nlc3NSZXN1bHQoImRvSm9kQ29udmVydCIsIGV4LmdldE1lc3NhZ2UoKSwgZXgpOworCQl9CisJfQorCisJCisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kb2N1bWVudHMvR2VuZXJhdGVTV0YuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kb2N1bWVudHMvR2VuZXJhdGVTV0YuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjViNTE0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RvY3VtZW50cy9HZW5lcmF0ZVNXRi5qYXZhCkBAIC0wLDAgKzEsMTM2IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRvY3VtZW50czsKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5kYW8uQ29uZmlndXJhdGlvbkRhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kb2N1bWVudHMuYmVhbnMuQ29udmVydGVyUHJvY2Vzc1Jlc3VsdDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5Qcm9jZXNzSGVscGVyOworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5BdXRvd2lyZWQ7CisKK3B1YmxpYyBjbGFzcyBHZW5lcmF0ZVNXRiB7CisKKwlwdWJsaWMgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeQorCQkJLmdldExvZ2dlcihHZW5lcmF0ZVNXRi5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCisJQEF1dG93aXJlZAorCXByaXZhdGUgQ29uZmlndXJhdGlvbkRhbyBjb25maWd1cmF0aW9uRGFvOworCisJcHVibGljIGZpbmFsIHN0YXRpYyBib29sZWFuIGlzUG9zaXggPSBTeXN0ZW0uZ2V0UHJvcGVydHkoIm9zLm5hbWUiKQorCQkJLnRvVXBwZXJDYXNlKCkuaW5kZXhPZigiV0lORE9XUyIpID09IC0xOworCisJcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgZXhlY0V4dCA9IGlzUG9zaXggPyAiIiA6ICIuZXhlIjsKKworCXByaXZhdGUgU3RyaW5nIGdldFBhdGhUb1N3ZlRvb2xzKCkgeworCQlTdHJpbmcgcGF0aFRvU1dGVG9vbHMgPSBjb25maWd1cmF0aW9uRGFvLmdldENvbmZWYWx1ZSgKKwkJCQkic3dmdG9vbHNfcGF0aCIsIFN0cmluZy5jbGFzcywgIiIpOworCQkvLyBJZiBTV0ZUb29scyBQYXRoIGlzIG5vdCBibGFuayBhIEZpbGUuc2VwYXJhdG9yIGF0IHRoZSBlbmQgb2YgdGhlIHBhdGgKKwkJLy8gaXMgbmVlZGVkCisJCWlmICghcGF0aFRvU1dGVG9vbHMuZXF1YWxzKCIiKQorCQkJCSYmICFwYXRoVG9TV0ZUb29scy5lbmRzV2l0aChGaWxlLnNlcGFyYXRvcikpIHsKKwkJCXBhdGhUb1NXRlRvb2xzID0gcGF0aFRvU1dGVG9vbHMgKyBGaWxlLnNlcGFyYXRvcjsKKwkJfQorCQlyZXR1cm4gcGF0aFRvU1dGVG9vbHM7CisJfQorCisJcHJpdmF0ZSBTdHJpbmcgZ2V0U3dmWm9vbSgpIHsKKwkJU3RyaW5nIHZhbHVlRm9yU3dmWm9vbSA9IGNvbmZpZ3VyYXRpb25EYW8uZ2V0Q29uZlZhbHVlKAorCQkJCSJzd2Z0b29sc196b29tIiwgU3RyaW5nLmNsYXNzLCAiIik7CisJCS8vIFdBUk5JTkcgQ09ERSBOT1QgQ09NUExFVEU6IElmIFNXRlRvb2xzIHpvb20gKGRwaSkgc2hvdWxkIGJlIGFuIGludGVnZXIgYmV0d2VlbiA1MCBhbmQgIDYwMCB3aXRoIGEgZGVmYXVsdCB2YWx1ZSBvZiAxMDAgZHBpCisJCWlmICh2YWx1ZUZvclN3Zlpvb20uZXF1YWxzKCIiKSkgeworCQkJdmFsdWVGb3JTd2Zab29tID0gIjcyIjsKKwkJfQorCQlyZXR1cm4gdmFsdWVGb3JTd2Zab29tOworCX0KKworCXByaXZhdGUgU3RyaW5nIGdldFN3ZkpwZWdRdWFsaXR5KCkgeworCQlTdHJpbmcgdmFsdWVGb3JTd2ZKcGVnUXVhbGl0eSA9IGNvbmZpZ3VyYXRpb25EYW8uZ2V0Q29uZlZhbHVlKAorCQkJCSJzd2Z0b29sc19qcGVncXVhbGl0eSIsIFN0cmluZy5jbGFzcywgIiIpOworCQkvLyBXQVJOSU5HIENPREUgTk9UIENPTVBMRVRFOiBJZiBTV0ZUb29scyBKUEVHIFF1YWxpdHkgc2hvdWxkIGJlIGFuIGludGVnZXIgYmV0d2VlbiAxIGFuZCAxMDAsIHdpdGggYSBkZWZhdWx0IHZhbHVlIG9mIDg1CisJCWlmICh2YWx1ZUZvclN3ZkpwZWdRdWFsaXR5LmVxdWFscygiIikpIHsKKwkJCXZhbHVlRm9yU3dmSnBlZ1F1YWxpdHkgPSAiODUiOworCQl9CisJCXJldHVybiB2YWx1ZUZvclN3ZkpwZWdRdWFsaXR5OworCX0KKworCXB1YmxpYyBDb252ZXJ0ZXJQcm9jZXNzUmVzdWx0IGdlbmVyYXRlU3dmKEZpbGUgb3JpZ2luYWxGb2xkZXIsIEZpbGUgZGVzdGluYXRpb25Gb2xkZXIsIFN0cmluZyBmaWxlTmFtZVB1cmUpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisJCQorCQkvLyBDcmVhdGUgdGhlIENvbnRlbnQgb2YgdGhlIENvbnZlcnRlciBTY3JpcHQgKC5iYXQgb3IgLnNoIEZpbGUpCisJCVN0cmluZ1tdIGFyZ3YgPSBuZXcgU3RyaW5nW10geworCQkJCWdldFBhdGhUb1N3ZlRvb2xzKCkgKyAicGRmMnN3ZiIgKyBleGVjRXh0LCAiLXMiLAorCQkJCSJpbnNlcnRzdG9wIiwgLy8gaW5zZXJ0IFN0b3AgY29tbWFuZCBpbnRvIGV2ZXJ5IGZyYW1lCisJCQkJIi1zIiwicG9seTJiaXRtYXAiLCAvL2h0dHA6Ly93d3cuc3dmdG9vbHMub3JnL2dmeF90dXRvcmlhbC5odG1sI1JlbmRlcmluZ19wYWdlc190b19TV0ZfZmlsZXMKKwkJCQkiLWkiLCAvLyBjaGFuZ2UgZHJhdyBvcmRlciB0byByZWR1Y2UgcGRmIGNvbXBsZXhpdHkKKwkJCQkiLWoiLCAiIiArIGdldFN3ZkpwZWdRdWFsaXR5KCksIC8vIEpQRUcgUXVhbGl0eSAKKwkJCQkiLXMiLCAiem9vbT0iICsgZ2V0U3dmWm9vbSgpLCAvLyBzZXQgem9vbSBkcGkgCisJCQkJbmV3IEZpbGUob3JpZ2luYWxGb2xkZXIsIGZpbGVOYW1lUHVyZSArICIucGRmIikuZ2V0Q2Fub25pY2FsUGF0aCgpLAorCQkJCW5ldyBGaWxlKGRlc3RpbmF0aW9uRm9sZGVyLCBmaWxlTmFtZVB1cmUgKyAiLnN3ZiIpLmdldENhbm9uaWNhbFBhdGgoKSB9OworCisJCXJldHVybiBQcm9jZXNzSGVscGVyLmV4ZWN1dGVTY3JpcHQoImdlbmVyYXRlU3dmIiwgYXJndik7CisJfQorCisJLyoqCisJICogR2VuZXJhdGVzIGFuIFNXRiBmcm9tIHRoZSBsaXN0IG9mIGZpbGVzLgorCSAqLworCXB1YmxpYyBDb252ZXJ0ZXJQcm9jZXNzUmVzdWx0IGdlbmVyYXRlU3dmQnlJbWFnZXMoTGlzdDxTdHJpbmc+IGltYWdlcywKKwkJCVN0cmluZyBvdXRwdXRmaWxlLCBpbnQgZnBzKSB7CisJCUxpc3Q8U3RyaW5nPiBhcmd2TGlzdCA9IEFycmF5cy5hc0xpc3QobmV3IFN0cmluZ1tdIHsKKwkJCQlnZXRQYXRoVG9Td2ZUb29scygpICsgInBuZzJzd2YiICsgZXhlY0V4dCwgIi1zIiwgCisJCQkJImluc2VydHN0b3AiLCAvLyBJbnNlcnQgU3RvcCBjb21tYW5kIGludG8gZXZlcnkgZnJhbWUKKwkJCQkiLW8iLCBvdXRwdXRmaWxlLCAiLXIiLCBJbnRlZ2VyLnRvU3RyaW5nKGZwcyksICIteiIgfSk7CisKKwkJYXJndkxpc3QuYWRkQWxsKGltYWdlcyk7CisJCXJldHVybiBQcm9jZXNzSGVscGVyLmV4ZWN1dGVTY3JpcHQoImdlbmVyYXRlU3dmQnlJbWFnZXMiLAorCQkJCWFyZ3ZMaXN0LnRvQXJyYXkobmV3IFN0cmluZ1swXSkpOworCX0KKworCS8qKgorCSAqIENvbWJpbmVzIGEgYnVuY2ggb2YgU1dGcyBpbnRvIG9uZSBTV0YgYnkgY29uY2F0ZW5hdGUuCisJICovCisJcHVibGljIENvbnZlcnRlclByb2Nlc3NSZXN1bHQgZ2VuZXJhdGVTV0ZCeUNvbWJpbmUoTGlzdDxTdHJpbmc+IHN3ZnMsCisJCQlTdHJpbmcgb3V0cHV0c3dmLCBpbnQgZnBzKSB7CisJCUxpc3Q8U3RyaW5nPiBhcmd2TGlzdCA9IEFycmF5cy5hc0xpc3QobmV3IFN0cmluZ1tdIHsKKwkJCQlnZXRQYXRoVG9Td2ZUb29scygpICsgInN3ZmNvbWJpbmUiICsgZXhlY0V4dCwgIi1zIiwKKwkJCQkiaW5zZXJ0c3RvcCIsIC8vIEluc2VydCBTdG9wIGNvbW1hbmQgaW50byBldmVyeSBmcmFtZQorCQkJCSItbyIsIG91dHB1dHN3ZiwgIi1yIiwgSW50ZWdlci50b1N0cmluZyhmcHMpLCAiLXoiLCAiLWEiIH0pOworCisJCWFyZ3ZMaXN0LmFkZEFsbChzd2ZzKTsKKwkJcmV0dXJuIFByb2Nlc3NIZWxwZXIuZXhlY3V0ZVNjcmlwdCgiZ2VuZXJhdGVTd2ZCeUltYWdlcyIsCisJCQkJYXJndkxpc3QudG9BcnJheShuZXcgU3RyaW5nWzBdKSk7CisJfQorCisJcHVibGljIENvbnZlcnRlclByb2Nlc3NSZXN1bHQgZ2VuZXJhdGVTV0ZCeUZGTXBlZyhTdHJpbmcgaW5wdXRXaWxkQ2FyZCwKKwkJCVN0cmluZyBvdXRwdXRzd2YsIGludCBmcHMsIGludCB3aWR0aCwgaW50IGhlaWdodCkgeworCQkvLyBGSVhNRTogZmZtcGVnIHNob3VsZCBiZSBvbiB0aGUgc3lzdGVtIHBhdGgKKwkJU3RyaW5nW10gYXJndiA9IG5ldyBTdHJpbmdbXSB7ICJmZm1wZWciICsgZXhlY0V4dCwgIi1yIiwKKwkJCQlJbnRlZ2VyLnRvU3RyaW5nKGZwcyksICItaSIsIGlucHV0V2lsZENhcmQsICItcyIsCisJCQkJd2lkdGggKyAieCIgKyBoZWlnaHQsICItYiIsICI3NTBrIiwgIi1hciIsICI0NDEwMCIsICIteSIsCisJCQkJb3V0cHV0c3dmIH07CisKKwkJcmV0dXJuIFByb2Nlc3NIZWxwZXIuZXhlY3V0ZVNjcmlwdCgiZ2VuZXJhdGVTV0ZCeUZGTXBlZyIsIGFyZ3YpOworCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RvY3VtZW50cy9HZW5lcmF0ZVRodW1icy5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RvY3VtZW50cy9HZW5lcmF0ZVRodW1icy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkZDVlMTQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZG9jdW1lbnRzL0dlbmVyYXRlVGh1bWJzLmphdmEKQEAgLTAsMCArMSwxMjEgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZG9jdW1lbnRzOworCitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5mbHZyZWNvcmQuY29udmVydGVyLkJhc2VDb252ZXJ0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZG9jdW1lbnRzLmJlYW5zLkNvbnZlcnRlclByb2Nlc3NSZXN1bHQ7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMuUHJvY2Vzc0hlbHBlcjsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CisKK3B1YmxpYyBjbGFzcyBHZW5lcmF0ZVRodW1icyBleHRlbmRzIEJhc2VDb252ZXJ0ZXIgeworCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5CisJCQkuZ2V0TG9nZ2VyKEdlbmVyYXRlVGh1bWJzLmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisKKwlwdWJsaWMgQ29udmVydGVyUHJvY2Vzc1Jlc3VsdCBnZW5lcmF0ZVRodW1iKFN0cmluZyBwcmUsIEZpbGUgZiwgSW50ZWdlciB0aHVtYlNpemUpIHRocm93cyBJT0V4Y2VwdGlvbiB7CisJCS8vIEluaXQgdmFyaWFibGVzCisJCVN0cmluZyBuYW1lID0gZi5nZXROYW1lKCk7CisJCUZpbGUgcGFyZW50ID0gZi5nZXRQYXJlbnRGaWxlKCk7CisKKwkJU3RyaW5nW10gYXJndiA9IG5ldyBTdHJpbmdbXSB7CisJCQlnZXRQYXRoVG9JbWFnZU1hZ2ljaygpCisJCQksICItdGh1bWJuYWlsIgorCQkJLCBJbnRlZ2VyLnRvU3RyaW5nKHRodW1iU2l6ZSkgKyAieCIgKyBJbnRlZ2VyLnRvU3RyaW5nKHRodW1iU2l6ZSkKKwkJCSwgZi5nZXRDYW5vbmljYWxQYXRoKCkKKwkJCSwgbmV3IEZpbGUocGFyZW50LCBwcmUgKyBuYW1lKS5nZXRDYW5vbmljYWxQYXRoKCkKKwkJCX07CisKKwkJbG9nLmRlYnVnKCJTVEFSVCBnZW5lcmF0ZVRodW1iICMjIyMjIyMjIyMjIyMjIyMjICIpOworCQlmb3IgKGludCBpID0gMDsgaSA8IGFyZ3YubGVuZ3RoOyBpKyspIHsKKwkJCWxvZy5kZWJ1ZygiIGkgIiArIGkgKyAiIGFyZ3YtaSAiICsgYXJndltpXSk7CisJCX0KKwkJbG9nLmRlYnVnKCJFTkQgZ2VuZXJhdGVUaHVtYiAjIyMjIyMjIyMjIyMjIyMjIyAiKTsKKworCQlpZiAoU3lzdGVtLmdldFByb3BlcnR5KCJvcy5uYW1lIikudG9VcHBlckNhc2UoKS5pbmRleE9mKCJXSU5ET1dTIikgPT0gLTEpIHsKKwkJCXJldHVybiBQcm9jZXNzSGVscGVyLmV4ZWN1dGVTY3JpcHQoImdlbmVyYXRlQmF0Y2hUaHVtYkJ5V2lkdGgiLCBhcmd2KTsKKwkJfSBlbHNlIHsKKwkJCXJldHVybiB0aGlzLnByb2Nlc3NJbWFnZVdpbmRvd3MoYXJndik7CisJCX0KKwl9CisKKwlwdWJsaWMgQ29udmVydGVyUHJvY2Vzc1Jlc3VsdCBkZWNvZGVQREYoU3RyaW5nIGlucHV0ZmlsZSwgU3RyaW5nIG91dHB1dGZpbGUpIHsKKworCQlTdHJpbmdbXSBhcmd2ID0gbmV3IFN0cmluZ1tdIHsgZ2V0UGF0aFRvSW1hZ2VNYWdpY2soKSwKKwkJCQlpbnB1dGZpbGUsIG91dHB1dGZpbGUgfTsKKworCQlpZiAoU3lzdGVtLmdldFByb3BlcnR5KCJvcy5uYW1lIikudG9VcHBlckNhc2UoKS5pbmRleE9mKCJXSU5ET1dTIikgPT0gLTEpIHsKKwkJCXJldHVybiBQcm9jZXNzSGVscGVyLmV4ZWN1dGVTY3JpcHQoImdlbmVyYXRlQmF0Y2hUaHVtYkJ5V2lkdGgiLCBhcmd2KTsKKwkJfSBlbHNlIHsKKwkJCXJldHVybiB0aGlzLnByb2Nlc3NJbWFnZVdpbmRvd3MoYXJndik7CisJCX0KKworCX0KKworCXB1YmxpYyBDb252ZXJ0ZXJQcm9jZXNzUmVzdWx0IGdlbmVyYXRlQmF0Y2hUaHVtYihGaWxlIGlucHV0ZmlsZSwgRmlsZSBvdXRwdXRwYXRoLCBJbnRlZ2VyIHRodW1iU2l6ZSwgU3RyaW5nIHByZSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKworCQlpZiAoU3lzdGVtLmdldFByb3BlcnR5KCJvcy5uYW1lIikudG9VcHBlckNhc2UoKS5pbmRleE9mKCJXSU5ET1dTIikgPT0gLTEpIHsKKwkJCVN0cmluZ1tdIGFyZ3YgPSBuZXcgU3RyaW5nW10geworCQkJCWdldFBhdGhUb0ltYWdlTWFnaWNrKCkKKwkJCQksICItdGh1bWJuYWlsIiAvLyBGSVhNRQorCQkJCSwgSW50ZWdlci50b1N0cmluZyh0aHVtYlNpemUpCisJCQkJLCBpbnB1dGZpbGUuZ2V0Q2Fub25pY2FsUGF0aCgpCisJCQkJLCBuZXcgRmlsZShvdXRwdXRwYXRoLCAiXyIgKyBwcmUgKyAiX3BhZ2UtJTA0ZC5qcGciKS5nZXRDYW5vbmljYWxQYXRoKCkKKwkJCQl9OworCisJCQlyZXR1cm4gUHJvY2Vzc0hlbHBlci5leGVjdXRlU2NyaXB0KCJnZW5lcmF0ZUJhdGNoVGh1bWJCeVdpZHRoIiwgYXJndik7CisJCX0gZWxzZSB7CisKKwkJCVN0cmluZ1tdIGFyZ3YgPSBuZXcgU3RyaW5nW10geworCQkJCWdldFBhdGhUb0ltYWdlTWFnaWNrKCkKKwkJCQksICItdGh1bWJuYWlsIiAvLyBGSVhNRQorCQkJCSwgSW50ZWdlci50b1N0cmluZyh0aHVtYlNpemUpCisJCQkJLCBpbnB1dGZpbGUuZ2V0Q2Fub25pY2FsUGF0aCgpCisJCQkJLCBuZXcgRmlsZShvdXRwdXRwYXRoLCAiXyIgKyBwcmUgKyAiX3BhZ2UtJTA0ZC5qcGciKS5nZXRDYW5vbmljYWxQYXRoKCkKKwkJCQl9OworCisJCQkvLyByZXR1cm4gR2VuZXJhdGVTV0YuZXhlY3V0ZVNjcmlwdCgiZ2VuZXJhdGVCYXRjaFRodW1iQnlXaWR0aCIsCisJCQkvLyBhcmd2KTsKKwkJCXJldHVybiB0aGlzLnByb2Nlc3NJbWFnZVdpbmRvd3MoYXJndik7CisJCX0KKwl9CisKKwlwdWJsaWMgQ29udmVydGVyUHJvY2Vzc1Jlc3VsdCBnZW5lcmF0ZUltYWdlQmF0Y2hCeVdpZHRoKAorCQkJU3RyaW5nIGN1cnJlbnRfZGlyLCBTdHJpbmcgaW5wdXRmaWxlLCBTdHJpbmcgb3V0cHV0cGF0aCwKKwkJCUludGVnZXIgdGh1bWJXaWR0aCwgU3RyaW5nIHByZSkgeworCisJCVN0cmluZ1tdIGFyZ3YgPSBuZXcgU3RyaW5nW10geyBnZXRQYXRoVG9JbWFnZU1hZ2ljaygpLAorCQkJCSItcmVzaXplIiwgSW50ZWdlci50b1N0cmluZyh0aHVtYldpZHRoKSwgaW5wdXRmaWxlLAorCQkJCW91dHB1dHBhdGggKyAiXyIgKyBwcmUgKyAiX3BhZ2UucG5nIiB9OworCisJCWlmIChTeXN0ZW0uZ2V0UHJvcGVydHkoIm9zLm5hbWUiKS50b1VwcGVyQ2FzZSgpLmluZGV4T2YoIldJTkRPV1MiKSA9PSAtMSkgeworCQkJcmV0dXJuIFByb2Nlc3NIZWxwZXIuZXhlY3V0ZVNjcmlwdCgiZ2VuZXJhdGVCYXRjaFRodW1iQnlXaWR0aCIsIGFyZ3YpOworCQl9IGVsc2UgeworCQkJcmV0dXJuIHRoaXMucHJvY2Vzc0ltYWdlV2luZG93cyhhcmd2KTsKKwkJfQorCX0KKworCXB1YmxpYyBDb252ZXJ0ZXJQcm9jZXNzUmVzdWx0IHByb2Nlc3NJbWFnZVdpbmRvd3MoU3RyaW5nW10gYXJncykgeworCQlyZXR1cm4gUHJvY2Vzc0hlbHBlci5leGVjdXRlU2NyaXB0V2luZG93cygicHJvY2Vzc0ltYWdlV2luZG93cyIsIGFyZ3MpOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kb2N1bWVudHMvSW5zdGFsbGF0aW9uRG9jdW1lbnRIYW5kbGVyLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZG9jdW1lbnRzL0luc3RhbGxhdGlvbkRvY3VtZW50SGFuZGxlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5NGJmMDYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZG9jdW1lbnRzL0luc3RhbGxhdGlvbkRvY3VtZW50SGFuZGxlci5qYXZhCkBAIC0wLDAgKzEsNjAgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZG9jdW1lbnRzOworCitpbXBvcnQgamF2YS5pby5GaWxlV3JpdGVyOworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMuT21GaWxlSGVscGVyOworaW1wb3J0IG9yZy5kb200ai5Eb2N1bWVudDsKK2ltcG9ydCBvcmcuZG9tNGouRG9jdW1lbnRIZWxwZXI7CitpbXBvcnQgb3JnLmRvbTRqLkVsZW1lbnQ7CitpbXBvcnQgb3JnLmRvbTRqLk5vZGU7CitpbXBvcnQgb3JnLmRvbTRqLmlvLlNBWFJlYWRlcjsKK2ltcG9ydCBvcmcuZG9tNGouaW8uWE1MV3JpdGVyOworCitwdWJsaWMgY2xhc3MgSW5zdGFsbGF0aW9uRG9jdW1lbnRIYW5kbGVyIHsKKwlwdWJsaWMgc3RhdGljIHZvaWQgY3JlYXRlRG9jdW1lbnQoSW50ZWdlciBzdGVwTm8pIHRocm93cyBFeGNlcHRpb24geworCQkKKwkJRG9jdW1lbnQgZG9jdW1lbnQgPSBEb2N1bWVudEhlbHBlci5jcmVhdGVEb2N1bWVudCgpOworCQkKKwkJRWxlbWVudCByb290ID0gZG9jdW1lbnQuYWRkRWxlbWVudCggImluc3RhbGwiICk7CisJCUVsZW1lbnQgc3RlcCA9IHJvb3QuYWRkRWxlbWVudCgic3RlcCIpOworCQkKKwkJc3RlcC5hZGRFbGVtZW50KCJzdGVwbnVtYmVyIikuYWRkVGV4dChzdGVwTm8udG9TdHJpbmcoKSk7CisJCXN0ZXAuYWRkRWxlbWVudCgic3RlcG5hbWUiKS5hZGRUZXh0KCJTdGVwICIrc3RlcE5vKTsKKwkJCisJCVhNTFdyaXRlciB3cml0ZXIgPSBuZXcgWE1MV3JpdGVyKG5ldyBGaWxlV3JpdGVyKE9tRmlsZUhlbHBlci5nZXRJbnN0YWxsRmlsZSgpKSk7CisgICAgICAgIHdyaXRlci53cml0ZSggZG9jdW1lbnQgKTsKKyAgICAgICAgd3JpdGVyLmNsb3NlKCk7CisJCQorCX0KKwkKKwlwdWJsaWMgc3RhdGljIGludCBnZXRDdXJyZW50U3RlcE51bWJlcigpIHRocm93cyBFeGNlcHRpb257CisJCQorCSAgICBTQVhSZWFkZXIgcmVhZGVyID0gbmV3IFNBWFJlYWRlcigpOworICAgICAgICBEb2N1bWVudCBkb2N1bWVudCA9IHJlYWRlci5yZWFkKE9tRmlsZUhlbHBlci5nZXRJbnN0YWxsRmlsZSgpKTsKKyAgICAgICAgCisgICAgICAgIE5vZGUgbm9kZSA9IGRvY3VtZW50LnNlbGVjdFNpbmdsZU5vZGUoICIvL2luc3RhbGwvc3RlcC9zdGVwbnVtYmVyIiApOworICAgICAgICAKKyAgICAgICAgcmV0dXJuIEludGVnZXIudmFsdWVPZihub2RlLmdldFRleHQoKSkuaW50VmFsdWUoKTsKKyAgICAgICAgCisJfQorCQorCQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RvY3VtZW50cy9MaWJyYXJ5Q2hhcnRMb2FkZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kb2N1bWVudHMvTGlicmFyeUNoYXJ0TG9hZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWE0YjZjMQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kb2N1bWVudHMvTGlicmFyeUNoYXJ0TG9hZGVyLmphdmEKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kb2N1bWVudHM7CisKK2ltcG9ydCBqYXZhLmlvLkJ1ZmZlcmVkUmVhZGVyOworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLmlvLkZpbGVSZWFkZXI7CitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLkxvZ2dlcjsKKworaW1wb3J0IGNvbS50aG91Z2h0d29ya3MueHN0cmVhbS5YU3RyZWFtOworaW1wb3J0IGNvbS50aG91Z2h0d29ya3MueHN0cmVhbS5pby54bWwuWHBwRHJpdmVyOworCitwdWJsaWMgY2xhc3MgTGlicmFyeUNoYXJ0TG9hZGVyIHsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBuZXcgTG9nZ2VyKCk7CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgZmlsZUV4dCA9ICIueGNoYXJ0IjsKKworICAgIHByaXZhdGUgc3RhdGljIExpYnJhcnlDaGFydExvYWRlciBpbnN0YW5jZTsKKworICAgIHByaXZhdGUgTGlicmFyeUNoYXJ0TG9hZGVyKCkgeworICAgIH0KKworICAgIHB1YmxpYyBzdGF0aWMgc3luY2hyb25pemVkIExpYnJhcnlDaGFydExvYWRlciBnZXRJbnN0YW5jZSgpIHsKKyAgICAgICAgaWYgKGluc3RhbmNlID09IG51bGwpIHsKKyAgICAgICAgICAgIGluc3RhbmNlID0gbmV3IExpYnJhcnlDaGFydExvYWRlcigpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBpbnN0YW5jZTsKKyAgICB9CisKKyAgICBAU3VwcHJlc3NXYXJuaW5ncygicmF3dHlwZXMiKQorCXB1YmxpYyBBcnJheUxpc3QgbG9hZENoYXJ0KEZpbGUgZGlyLCBTdHJpbmcgZmlsZU5hbWUpIHsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIEZpbGUgZmlsZSA9IG5ldyBGaWxlKGRpciwgZmlsZU5hbWUgKyBmaWxlRXh0KTsKKworICAgICAgICAgICAgbG9nLmVycm9yKCJmaWxlcGF0aENvbXBsZXRlOiAiICsgZmlsZSk7CisKKyAgICAgICAgICAgIFhTdHJlYW0geFN0cmVhbSA9IG5ldyBYU3RyZWFtKG5ldyBYcHBEcml2ZXIoKSk7CisgICAgICAgICAgICB4U3RyZWFtLnNldE1vZGUoWFN0cmVhbS5OT19SRUZFUkVOQ0VTKTsKKworICAgICAgICAgICAgQnVmZmVyZWRSZWFkZXIgcmVhZGVyID0gbmV3IEJ1ZmZlcmVkUmVhZGVyKG5ldyBGaWxlUmVhZGVyKGZpbGUpKTsKKyAgICAgICAgICAgIFN0cmluZyB4bWxTdHJpbmcgPSAiIjsKKyAgICAgICAgICAgIHdoaWxlIChyZWFkZXIucmVhZHkoKSkgeworICAgICAgICAgICAgICAgIHhtbFN0cmluZyArPSByZWFkZXIucmVhZExpbmUoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJlYWRlci5jbG9zZSgpOworICAgICAgICAgICAgLy8gbE1hcCA9IChMaW5rZWRIYXNoTWFwKSB4U3RyZWFtLmZyb21YTUwoeG1sU3RyaW5nKTsKKyAgICAgICAgICAgIEFycmF5TGlzdCBsTWFwTGlzdCA9IChBcnJheUxpc3QpIHhTdHJlYW0uZnJvbVhNTCh4bWxTdHJpbmcpOworCisgICAgICAgICAgICByZXR1cm4gbE1hcExpc3Q7CisgICAgICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKyAgICAgICAgICAgIGxvZy5lcnJvcihlcnIpOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIG51bGw7CisKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kb2N1bWVudHMvTGlicmFyeURvY3VtZW50Q29udmVydGVyLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZG9jdW1lbnRzL0xpYnJhcnlEb2N1bWVudENvbnZlcnRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiNThmYzEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZG9jdW1lbnRzL0xpYnJhcnlEb2N1bWVudENvbnZlcnRlci5qYXZhCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZG9jdW1lbnRzOworCitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuaW8uRmlsZVdyaXRlcjsKK2ltcG9ydCBqYXZhLmlvLlByaW50V3JpdGVyOworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMuT21GaWxlSGVscGVyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLnN0cmluZ2hhbmRsZXJzLlN0cmluZ0NvbXBhcmVyOworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKKworaW1wb3J0IGNvbS50aG91Z2h0d29ya3MueHN0cmVhbS5YU3RyZWFtOworaW1wb3J0IGNvbS50aG91Z2h0d29ya3MueHN0cmVhbS5pby54bWwuWHBwRHJpdmVyOworCitwdWJsaWMgY2xhc3MgTGlicmFyeURvY3VtZW50Q29udmVydGVyIHsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKExpYnJhcnlEb2N1bWVudENvbnZlcnRlci5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCQorCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBmaWxlRXh0ID0gIi53bWwiOworCQorCXB1YmxpYyBzdGF0aWMgU3RyaW5nIHdyaXRlVG9Mb2NhbEZvbGRlcihTdHJpbmcgZmlsZU5hbWUsIEBTdXBwcmVzc1dhcm5pbmdzKCJyYXd0eXBlcyIpQXJyYXlMaXN0IG9iakxpc3QpIHsKKwkJdHJ5IHsKKwkJCQorCQkJbG9nLmRlYnVnKCJmaWxlUGF0aDogIiArIE9tRmlsZUhlbHBlci5nZXRVcGxvYWRXbWxEaXIoKS5nZXRDYW5vbmljYWxQYXRoKCkpOworCQkJCisJCQlTdHJpbmcgZmlsZU5hbWVFeHROYW1lID0gZmlsZU5hbWUuc3Vic3RyaW5nKGZpbGVOYW1lLmxlbmd0aCgpLTQsZmlsZU5hbWUubGVuZ3RoKCkpOworCQkJaWYgKGZpbGVOYW1lRXh0TmFtZS5lcXVhbHMoZmlsZUV4dCkpeworCQkJCWZpbGVOYW1lID0gU3RyaW5nQ29tcGFyZXIuZ2V0SW5zdGFuY2UoKS5jb21wYXJlRm9yUmVhbFBhdGhzKGZpbGVOYW1lLnN1YnN0cmluZygwLCBmaWxlTmFtZS5sZW5ndGgoKS00KSk7CisJCQl9IGVsc2UgeworCQkJCWZpbGVOYW1lID0gU3RyaW5nQ29tcGFyZXIuZ2V0SW5zdGFuY2UoKS5jb21wYXJlRm9yUmVhbFBhdGhzKGZpbGVOYW1lLnN1YnN0cmluZygwLCBmaWxlTmFtZS5sZW5ndGgoKSkpOworCQkJfQorCQkJCisJCQlpZiAoZmlsZU5hbWUubGVuZ3RoKCk8PTApeworCQkJCS8vcmV0dXJuIG5ldyBMb25nKC0yMSk7CisJCQkJcmV0dXJuICItMjAiOworCQkJfQorCQkJLy9BZGQgdGhlIEZvbGRlciBmb3IgdGhlIHdtbEZpbGVzIGlmIGl0IGRvZXMgbm90IGV4aXN0IHlldAorCQkJRmlsZSBmaWxlUGF0aENvbXBsZXRlID0gbmV3IEZpbGUoT21GaWxlSGVscGVyLmdldFVwbG9hZFdtbERpcigpLCBmaWxlTmFtZSArIGZpbGVFeHQpOworCQkJCisJCQlpZiAoZmlsZVBhdGhDb21wbGV0ZS5leGlzdHMoKSl7CisJCQkJcmV0dXJuICItMjAiOworCQkJfQkJCisJCQkKKwkJCVhTdHJlYW0geFN0cmVhbSA9IG5ldyBYU3RyZWFtKG5ldyBYcHBEcml2ZXIoKSk7CisJCQl4U3RyZWFtLnNldE1vZGUoWFN0cmVhbS5OT19SRUZFUkVOQ0VTKTsKKwkJCVN0cmluZyB4bWxTdHJpbmcgPSB4U3RyZWFtLnRvWE1MKG9iakxpc3QpOwkKKwkJCQorCQkJbG9nLmRlYnVnKCJXcml0ZSB0byAiK2ZpbGVQYXRoQ29tcGxldGUpOworCQkJCisJCQlQcmludFdyaXRlciBwdyA9IG5ldyBQcmludFdyaXRlcihuZXcgRmlsZVdyaXRlcihmaWxlUGF0aENvbXBsZXRlKSk7CisJCSAgICBwdy5wcmludGxuKHhtbFN0cmluZyk7CisJCSAgICBwdy5mbHVzaCgpOworCQkgICAgcHcuY2xvc2UoKTsKKwkgICAgCisJCSAgICAvL3JldHVybiBuZXcgTG9uZygxKTsKKwkJICAgIAorCQkgICAgcmV0dXJuIGZpbGVQYXRoQ29tcGxldGUuZ2V0Q2Fub25pY2FsUGF0aCgpOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKXsKKwkJCWxvZy5lcnJvcigid3JpdGVUb0xvY2FsRm9sZGVyIixlcnIpOworCQl9CisJCQorCQlyZXR1cm4gbnVsbDsKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZG9jdW1lbnRzL0xpYnJhcnlEb2N1bWVudHMuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kb2N1bWVudHMvTGlicmFyeURvY3VtZW50cy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjNmU3ZDQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZG9jdW1lbnRzL0xpYnJhcnlEb2N1bWVudHMuamF2YQpAQCAtMCwwICsxLDQwIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRvY3VtZW50czsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CisKK3B1YmxpYyBjbGFzcyBMaWJyYXJ5RG9jdW1lbnRzIHsKKwkKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKExpYnJhcnlEb2N1bWVudHMuY2xhc3MsIE9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKworCXByaXZhdGUgc3RhdGljIExpYnJhcnlEb2N1bWVudHMgaW5zdGFuY2U7CisKKwlwcml2YXRlIExpYnJhcnlEb2N1bWVudHMoKSB7fQorCisJcHVibGljIHN0YXRpYyBzeW5jaHJvbml6ZWQgTGlicmFyeURvY3VtZW50cyBnZXRJbnN0YW5jZSgpIHsKKwkJaWYgKGluc3RhbmNlID09IG51bGwpIHsKKwkJCWxvZy5kZWJ1ZygiaW5zdGFuY2UgY3JlYXRlZCIpOworCQkJaW5zdGFuY2UgPSBuZXcgTGlicmFyeURvY3VtZW50cygpOworCQl9CisJCXJldHVybiBpbnN0YW5jZTsKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZG9jdW1lbnRzL0xpYnJhcnlXbWxMb2FkZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kb2N1bWVudHMvTGlicmFyeVdtbExvYWRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlZDc1ZDMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZG9jdW1lbnRzL0xpYnJhcnlXbWxMb2FkZXIuamF2YQpAQCAtMCwwICsxLDI1MiBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kb2N1bWVudHM7CisKK2ltcG9ydCBqYXZhLmlvLkJ1ZmZlcmVkUmVhZGVyOworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLmlvLkZpbGVSZWFkZXI7CitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLkxpbmtlZEhhc2hNYXA7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMuT21GaWxlSGVscGVyOworaW1wb3J0IG9yZy5kb200ai5FbGVtZW50OworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKKworaW1wb3J0IGNvbS50aG91Z2h0d29ya3MueHN0cmVhbS5YU3RyZWFtOworaW1wb3J0IGNvbS50aG91Z2h0d29ya3MueHN0cmVhbS5pby54bWwuWHBwRHJpdmVyOworCitwdWJsaWMgY2xhc3MgTGlicmFyeVdtbExvYWRlciB7CisJCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcihMaWJyYXJ5V21sTG9hZGVyLmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisJCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIGZpbGVFeHQgPSAiLndtbCI7CisJCisJQFN1cHByZXNzV2FybmluZ3MoeyAicmF3dHlwZXMiIH0pCisJcHVibGljIEFycmF5TGlzdCBsb2FkV21sRmlsZShTdHJpbmcgZmlsZU5hbWUpeworCQl0cnkgeworCQkJU3RyaW5nIG5hbWUgPSBmaWxlTmFtZTsKKwkJCWlmICghbmFtZS5lbmRzV2l0aChmaWxlRXh0KSkgeworCQkJCW5hbWUgKz0gZmlsZUV4dDsKKwkJCX0KKwkJCUZpbGUgZmlsZXBhdGhDb21wbGV0ZSA9IG5ldyBGaWxlKE9tRmlsZUhlbHBlci5nZXRVcGxvYWRXbWxEaXIoKSwgbmFtZSk7CisJCQlsb2cuZGVidWcoImZpbGVwYXRoQ29tcGxldGU6ICIrZmlsZXBhdGhDb21wbGV0ZSk7CisJCQkKKwkJCVhTdHJlYW0geFN0cmVhbSA9IG5ldyBYU3RyZWFtKG5ldyBYcHBEcml2ZXIoKSk7CisJCQl4U3RyZWFtLnNldE1vZGUoWFN0cmVhbS5OT19SRUZFUkVOQ0VTKTsKKwkJCQorCQkJQnVmZmVyZWRSZWFkZXIgcmVhZGVyID0gbmV3IEJ1ZmZlcmVkUmVhZGVyKG5ldyBGaWxlUmVhZGVyKGZpbGVwYXRoQ29tcGxldGUpKTsKKwkJICAgIFN0cmluZyB4bWxTdHJpbmcgPSAiIjsKKwkJICAgIHdoaWxlIChyZWFkZXIucmVhZHkoKSkgeworCQkgICAgCXhtbFN0cmluZyArPSByZWFkZXIucmVhZExpbmUoKTsKKwkJICAgIH0KKwkJICAgIHJlYWRlci5jbG9zZSgpOworCQkgICAgLy9sTWFwID0gKExpbmtlZEhhc2hNYXApIHhTdHJlYW0uZnJvbVhNTCh4bWxTdHJpbmcpOworCQkgICAgQXJyYXlMaXN0IGxNYXBMaXN0ID0gKEFycmF5TGlzdCkgeFN0cmVhbS5mcm9tWE1MKHhtbFN0cmluZyk7CisJCQkKKwkJCXJldHVybiBsTWFwTGlzdDsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycil7CisJCQlsb2cuZXJyb3IoImxvYWRXbWxGaWxlIixlcnIpOworCQl9CisJCQorCQlyZXR1cm4gbnVsbDsKKwkJCisJfQorCQorCS8qKgorCSAqIEBkZXByZWNhdGVkCisJICogQHBhcmFtIHBhaW50RWxlbWVudAorCSAqIEBwYXJhbSBzdWJNYXAKKwkgKi8KKwlAU3VwcHJlc3NXYXJuaW5ncyh7ICJ1bnVzZWQiLCAicmF3dHlwZXMiIH0pCisJcHJpdmF0ZSB2b2lkIGNyZWF0ZUxpc3RPYmplY3RQYWludEJ5Tm9kZShFbGVtZW50IHBhaW50RWxlbWVudCwgTGlua2VkSGFzaE1hcDxJbnRlZ2VyLE9iamVjdD4gc3ViTWFwKXsKKwkJdHJ5IHsKKwkJCQorCQkJTGlua2VkSGFzaE1hcDxJbnRlZ2VyLExpbmtlZEhhc2hNYXA+IHBvaW50TWFwID0gbmV3IExpbmtlZEhhc2hNYXA8SW50ZWdlcixMaW5rZWRIYXNoTWFwPigpOworCQkJRWxlbWVudCBwb2ludEVsZW1lbnRzID0gcGFpbnRFbGVtZW50LmVsZW1lbnQoInBvaW50cyIpOworCQkJSW50ZWdlciBrID0gMDsKKwkJCQorCQkJZm9yICggSXRlcmF0b3IgaSA9IHBvaW50RWxlbWVudHMuZWxlbWVudEl0ZXJhdG9yKCAicG9pbnQiICk7IGkuaGFzTmV4dCgpOyApIHsKKwkJCQlFbGVtZW50IHBvaW50RWxlbWVudCA9IChFbGVtZW50KSBpLm5leHQoKTsKKwkJCQlMaW5rZWRIYXNoTWFwPEludGVnZXIsT2JqZWN0PiBzaW5nbGVQb2ludCA9IG5ldyBMaW5rZWRIYXNoTWFwPEludGVnZXIsT2JqZWN0PigpOworCQkJCXNpbmdsZVBvaW50LnB1dCgwLCBwb2ludEVsZW1lbnQuZ2V0TmFtZSgpKTsKKwkJCQlzaW5nbGVQb2ludC5wdXQoMSwgSW50ZWdlci52YWx1ZU9mKHBvaW50RWxlbWVudC5hdHRyaWJ1dGUoInZhbDEiKS5nZXRUZXh0KCkpLmludFZhbHVlKCkpOworCQkJCXNpbmdsZVBvaW50LnB1dCgyLCBJbnRlZ2VyLnZhbHVlT2YocG9pbnRFbGVtZW50LmF0dHJpYnV0ZSgidmFsMiIpLmdldFRleHQoKSkuaW50VmFsdWUoKSk7CisJCQkJc2luZ2xlUG9pbnQucHV0KDMsIEludGVnZXIudmFsdWVPZihwb2ludEVsZW1lbnQuYXR0cmlidXRlKCJ2YWwzIikuZ2V0VGV4dCgpKS5pbnRWYWx1ZSgpKTsKKwkJCQlzaW5nbGVQb2ludC5wdXQoNCwgSW50ZWdlci52YWx1ZU9mKHBvaW50RWxlbWVudC5hdHRyaWJ1dGUoInZhbDQiKS5nZXRUZXh0KCkpLmludFZhbHVlKCkpOworCQkJCXBvaW50TWFwLnB1dChrLCBzaW5nbGVQb2ludCk7CisJCQkJbG9nLmRlYnVnKCJjcmVhdGVMaXN0T2JqZWN0UGFpbnRCeU5vZGUiK3NpbmdsZVBvaW50KTsKKwkJCQlrKys7CisJCQl9CisJCQlzdWJNYXAucHV0KDEsIHBvaW50TWFwKTsKKworCQkJc3ViTWFwLnB1dCgyLCBwYWludEVsZW1lbnQuZWxlbWVudCgiZmlsbHN0eWxlIikuZ2V0VGV4dCgpKTsKKwkJCXN1Yk1hcC5wdXQoMywgSW50ZWdlci52YWx1ZU9mKHBhaW50RWxlbWVudC5lbGVtZW50KCJsaW5ld2lkdGgiKS5nZXRUZXh0KCkpLmludFZhbHVlKCkpOworCQkJc3ViTWFwLnB1dCg0LCBJbnRlZ2VyLnZhbHVlT2YocGFpbnRFbGVtZW50LmVsZW1lbnQoInN0cm9rZXN0eWxlIikuZ2V0VGV4dCgpKS5pbnRWYWx1ZSgpKTsKKwkJCXN1Yk1hcC5wdXQoNSwgSW50ZWdlci52YWx1ZU9mKHBhaW50RWxlbWVudC5lbGVtZW50KCJjb3VudGVyIikuZ2V0VGV4dCgpKS5pbnRWYWx1ZSgpKTsKKwkJCXN1Yk1hcC5wdXQoNiwgRmxvYXQudmFsdWVPZihwYWludEVsZW1lbnQuZWxlbWVudCgieCIpLmdldFRleHQoKSkuZmxvYXRWYWx1ZSgpKTsKKwkJCXN1Yk1hcC5wdXQoNywgRmxvYXQudmFsdWVPZihwYWludEVsZW1lbnQuZWxlbWVudCgieSIpLmdldFRleHQoKSkuZmxvYXRWYWx1ZSgpKTsKKwkJCXN1Yk1hcC5wdXQoOCwgRmxvYXQudmFsdWVPZihwYWludEVsZW1lbnQuZWxlbWVudCgid2lkdGgiKS5nZXRUZXh0KCkpLmZsb2F0VmFsdWUoKSk7CisJCQlzdWJNYXAucHV0KDksIEZsb2F0LnZhbHVlT2YocGFpbnRFbGVtZW50LmVsZW1lbnQoImhlaWdodCIpLmdldFRleHQoKSkuZmxvYXRWYWx1ZSgpKTsKKwkJCXN1Yk1hcC5wdXQoMTAsIHBhaW50RWxlbWVudC5lbGVtZW50KCJsYXllcm5hbWUiKS5nZXRUZXh0KCkpOwkJCisJCQkKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJjcmVhdGVMaXN0T2JqZWN0UGFpbnRCeU5vZGUiLGVycik7CisJCX0KKwl9CisJCisJLyoqCisJICogQGRlcHJlY2F0ZWQKKwkgKiBAcGFyYW0gcGFpbnRFbGVtZW50CisJICogQHBhcmFtIHN1Yk1hcAorCSAqLworCXB1YmxpYyB2b2lkIGNyZWF0ZUxpc3RPYmplY3RMZXR0ZXJCeU5vZGUoRWxlbWVudCBwYWludEVsZW1lbnQsIExpbmtlZEhhc2hNYXA8SW50ZWdlcixPYmplY3Q+IHN1Yk1hcCl7CisJCXRyeSB7CisKKwkJCXN1Yk1hcC5wdXQoMSwgcGFpbnRFbGVtZW50LmVsZW1lbnQoInRleHRmb3JmaWVsZCIpLmdldFRleHQoKSk7CisJCQlzdWJNYXAucHV0KDIsIEludGVnZXIudmFsdWVPZihwYWludEVsZW1lbnQuZWxlbWVudCgiZmdjb2xvciIpLmdldFRleHQoKSkuaW50VmFsdWUoKSk7CisJCQlzdWJNYXAucHV0KDMsIEludGVnZXIudmFsdWVPZihwYWludEVsZW1lbnQuZWxlbWVudCgiZm9udHNpemUiKS5nZXRUZXh0KCkpLmludFZhbHVlKCkpOworCQkJc3ViTWFwLnB1dCg0LCBwYWludEVsZW1lbnQuZWxlbWVudCgiZm9udHN0eWxlIikuZ2V0VGV4dCgpKTsKKwkJCXN1Yk1hcC5wdXQoNSwgSW50ZWdlci52YWx1ZU9mKHBhaW50RWxlbWVudC5lbGVtZW50KCJjb3VudGVyIikuZ2V0VGV4dCgpKS5pbnRWYWx1ZSgpKTsKKwkJCXN1Yk1hcC5wdXQoNiwgRmxvYXQudmFsdWVPZihwYWludEVsZW1lbnQuZWxlbWVudCgieCIpLmdldFRleHQoKSkuZmxvYXRWYWx1ZSgpKTsKKwkJCXN1Yk1hcC5wdXQoNywgRmxvYXQudmFsdWVPZihwYWludEVsZW1lbnQuZWxlbWVudCgieSIpLmdldFRleHQoKSkuZmxvYXRWYWx1ZSgpKTsJCQkKKwkJCXN1Yk1hcC5wdXQoOCwgRmxvYXQudmFsdWVPZihwYWludEVsZW1lbnQuZWxlbWVudCgid2lkdGgiKS5nZXRUZXh0KCkpLmZsb2F0VmFsdWUoKSk7CQkKKwkJCXN1Yk1hcC5wdXQoOSwgRmxvYXQudmFsdWVPZihwYWludEVsZW1lbnQuZWxlbWVudCgiaGVpZ2h0IikuZ2V0VGV4dCgpKS5mbG9hdFZhbHVlKCkpOwkJCisJCQlzdWJNYXAucHV0KDEwLCBwYWludEVsZW1lbnQuZWxlbWVudCgibGF5ZXJuYW1lIikuZ2V0VGV4dCgpKTsKKwkJCQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoImNyZWF0ZUxpc3RPYmplY3RMZXR0ZXJCeU5vZGUiLGVycik7CisJCX0KKwl9CQorCQorCS8qKgorCSAqIEBkZXByZWNhdGVkCisJICogQHBhcmFtIHBhaW50RWxlbWVudAorCSAqIEBwYXJhbSBzdWJNYXAKKwkgKi8KKwlwdWJsaWMgdm9pZCBjcmVhdGVMaXN0T2JqZWN0SW1hZ2VCeU5vZGUoRWxlbWVudCBwYWludEVsZW1lbnQsIExpbmtlZEhhc2hNYXA8SW50ZWdlcixPYmplY3Q+IHN1Yk1hcCl7CisJCXRyeSB7CisKKwkJCXN1Yk1hcC5wdXQoMSwgcGFpbnRFbGVtZW50LmVsZW1lbnQoInVybG5hbWUiKS5nZXRUZXh0KCkpOworCQkJc3ViTWFwLnB1dCgyLCBwYWludEVsZW1lbnQuZWxlbWVudCgiYmFzZXVybCIpLmdldFRleHQoKSk7CisJCQlzdWJNYXAucHV0KDMsIHBhaW50RWxlbWVudC5lbGVtZW50KCJmaWxlbmFtZSIpLmdldFRleHQoKSk7CisJCQlzdWJNYXAucHV0KDQsIHBhaW50RWxlbWVudC5lbGVtZW50KCJtb2R1bGVuYW1lIikuZ2V0VGV4dCgpKTsKKwkJCXN1Yk1hcC5wdXQoNSwgcGFpbnRFbGVtZW50LmVsZW1lbnQoInBhcmVudHBhdGgiKS5nZXRUZXh0KCkpOworCQkJc3ViTWFwLnB1dCg2LCBwYWludEVsZW1lbnQuZWxlbWVudCgicm9vbSIpLmdldFRleHQoKSk7CisJCQlzdWJNYXAucHV0KDcsIHBhaW50RWxlbWVudC5lbGVtZW50KCJkb21haW4iKS5nZXRUZXh0KCkpOworCQkJc3ViTWFwLnB1dCg4LCBJbnRlZ2VyLnZhbHVlT2YocGFpbnRFbGVtZW50LmVsZW1lbnQoImNvdW50ZXIiKS5nZXRUZXh0KCkpLmludFZhbHVlKCkpOworCQkJc3ViTWFwLnB1dCg5LCBGbG9hdC52YWx1ZU9mKHBhaW50RWxlbWVudC5lbGVtZW50KCJ4IikuZ2V0VGV4dCgpKS5mbG9hdFZhbHVlKCkpOworCQkJc3ViTWFwLnB1dCgxMCwgRmxvYXQudmFsdWVPZihwYWludEVsZW1lbnQuZWxlbWVudCgieSIpLmdldFRleHQoKSkuZmxvYXRWYWx1ZSgpKTsKKwkJCXN1Yk1hcC5wdXQoMTEsIEZsb2F0LnZhbHVlT2YocGFpbnRFbGVtZW50LmVsZW1lbnQoIndpZHRoIikuZ2V0VGV4dCgpKS5mbG9hdFZhbHVlKCkpOworCQkJc3ViTWFwLnB1dCgxMiwgRmxvYXQudmFsdWVPZihwYWludEVsZW1lbnQuZWxlbWVudCgiaGVpZ2h0IikuZ2V0VGV4dCgpKS5mbG9hdFZhbHVlKCkpOworCQkJc3ViTWFwLnB1dCgxMywgcGFpbnRFbGVtZW50LmVsZW1lbnQoImxheWVybmFtZSIpLmdldFRleHQoKSk7CQkKKwkJCQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoImNyZWF0ZUxpc3RPYmplY3RJbWFnZUJ5Tm9kZSIsZXJyKTsKKwkJfQorCX0JCisJCisJLyoqCisJICogQGRlcHJlY2F0ZWQKKwkgKiBAcGFyYW0gcGFpbnRFbGVtZW50CisJICogQHBhcmFtIHN1Yk1hcAorCSAqLworCXB1YmxpYyB2b2lkIGNyZWF0ZUxpc3RPYmplY3RPYmplY0J5Tm9kZShFbGVtZW50IHBhaW50RWxlbWVudCwgTGlua2VkSGFzaE1hcDxJbnRlZ2VyLE9iamVjdD4gc3ViTWFwKXsKKwkJdHJ5IHsJCisJCQkKKwkJCXN1Yk1hcC5wdXQoMSwgcGFpbnRFbGVtZW50LmVsZW1lbnQoImZpbGxzdHlsZSIpLmdldFRleHQoKSk7CisJCQlzdWJNYXAucHV0KDIsIHBhaW50RWxlbWVudC5lbGVtZW50KCJsaW5ld2lkdGgiKS5nZXRUZXh0KCkpOworCQkJc3ViTWFwLnB1dCgzLCBJbnRlZ2VyLnZhbHVlT2YocGFpbnRFbGVtZW50LmVsZW1lbnQoInN0cm9rZXN0eWxlIikuZ2V0VGV4dCgpKS5pbnRWYWx1ZSgpKTsKKwkJCXN1Yk1hcC5wdXQoNCwgRmxvYXQudmFsdWVPZihwYWludEVsZW1lbnQuZWxlbWVudCgic3RhcnR4IikuZ2V0VGV4dCgpKS5mbG9hdFZhbHVlKCkpOworCQkJc3ViTWFwLnB1dCg1LCBGbG9hdC52YWx1ZU9mKHBhaW50RWxlbWVudC5lbGVtZW50KCJzdGFydHkiKS5nZXRUZXh0KCkpLmZsb2F0VmFsdWUoKSk7CisJCQlzdWJNYXAucHV0KDYsIEZsb2F0LnZhbHVlT2YocGFpbnRFbGVtZW50LmVsZW1lbnQoImVuZHgiKS5nZXRUZXh0KCkpLmZsb2F0VmFsdWUoKSk7CisJCQlzdWJNYXAucHV0KDcsIEZsb2F0LnZhbHVlT2YocGFpbnRFbGVtZW50LmVsZW1lbnQoImVuZHkiKS5nZXRUZXh0KCkpLmZsb2F0VmFsdWUoKSk7CisJCQlzdWJNYXAucHV0KDgsIEludGVnZXIudmFsdWVPZihwYWludEVsZW1lbnQuZWxlbWVudCgiY291bnRlciIpLmdldFRleHQoKSkuaW50VmFsdWUoKSk7CisJCQlzdWJNYXAucHV0KDksIEZsb2F0LnZhbHVlT2YocGFpbnRFbGVtZW50LmVsZW1lbnQoIngiKS5nZXRUZXh0KCkpLmZsb2F0VmFsdWUoKSk7CisJCQlzdWJNYXAucHV0KDEwLCBGbG9hdC52YWx1ZU9mKHBhaW50RWxlbWVudC5lbGVtZW50KCJ5IikuZ2V0VGV4dCgpKS5mbG9hdFZhbHVlKCkpOworCQkJc3ViTWFwLnB1dCgxMSwgRmxvYXQudmFsdWVPZihwYWludEVsZW1lbnQuZWxlbWVudCgid2lkdGgiKS5nZXRUZXh0KCkpLmZsb2F0VmFsdWUoKSk7CisJCQlzdWJNYXAucHV0KDEyLCBGbG9hdC52YWx1ZU9mKHBhaW50RWxlbWVudC5lbGVtZW50KCJoZWlnaHQiKS5nZXRUZXh0KCkpLmZsb2F0VmFsdWUoKSk7CisJCQlzdWJNYXAucHV0KDEzLCBwYWludEVsZW1lbnQuZWxlbWVudCgibGF5ZXJuYW1lIikuZ2V0VGV4dCgpKTsKKwkJCQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoImNyZWF0ZUxpc3RPYmplY3RPYmplY0J5Tm9kZSIsZXJyKTsKKwkJfQorCX0JCQorCQorCS8qKgorCSAqIEBkZXByZWNhdGVkCisJICogQHBhcmFtIHBhaW50RWxlbWVudAorCSAqIEBwYXJhbSBzdWJNYXAKKwkgKi8KKwlwdWJsaWMgdm9pZCBjcmVhdGVMaXN0T2JqZWN0UmVjdEFuZEVsbGlwc2VCeU5vZGUoRWxlbWVudCBwYWludEVsZW1lbnQsIExpbmtlZEhhc2hNYXA8SW50ZWdlcixPYmplY3Q+IHN1Yk1hcCl7CisJCXRyeSB7CQorCQkJCisJCQlzdWJNYXAucHV0KDEsIEludGVnZXIudmFsdWVPZihwYWludEVsZW1lbnQuZWxlbWVudCgic3Ryb2tlIikuZ2V0VGV4dCgpKS5pbnRWYWx1ZSgpKTsKKwkJCXN1Yk1hcC5wdXQoMiwgcGFpbnRFbGVtZW50LmVsZW1lbnQoImxpbmUiKS5nZXRUZXh0KCkpOworCQkJc3ViTWFwLnB1dCgzLCBJbnRlZ2VyLnZhbHVlT2YocGFpbnRFbGVtZW50LmVsZW1lbnQoImNvdW50ZXIiKS5nZXRUZXh0KCkpLmludFZhbHVlKCkpOworCQkJc3ViTWFwLnB1dCg0LCBGbG9hdC52YWx1ZU9mKHBhaW50RWxlbWVudC5lbGVtZW50KCJ4IikuZ2V0VGV4dCgpKS5mbG9hdFZhbHVlKCkpOwkJCisJCQlzdWJNYXAucHV0KDUsIEZsb2F0LnZhbHVlT2YocGFpbnRFbGVtZW50LmVsZW1lbnQoInkiKS5nZXRUZXh0KCkpLmZsb2F0VmFsdWUoKSk7CisJCQlzdWJNYXAucHV0KDYsIEZsb2F0LnZhbHVlT2YocGFpbnRFbGVtZW50LmVsZW1lbnQoIndpZHRoIikuZ2V0VGV4dCgpKS5mbG9hdFZhbHVlKCkpOworCQkJc3ViTWFwLnB1dCg3LCBGbG9hdC52YWx1ZU9mKHBhaW50RWxlbWVudC5lbGVtZW50KCJoZWlnaHQiKS5nZXRUZXh0KCkpLmZsb2F0VmFsdWUoKSk7CisJCQlzdWJNYXAucHV0KDgsIHBhaW50RWxlbWVudC5lbGVtZW50KCJsYXllcm5hbWUiKS5nZXRUZXh0KCkpOworCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiY3JlYXRlTGlzdE9iamVjdE9iamVjQnlOb2RlIixlcnIpOworCQl9CisJfQorCQorCS8qKgorCSAqIEBkZXByZWNhdGVkCisJICogQHBhcmFtIHBhaW50RWxlbWVudAorCSAqIEBwYXJhbSBzdWJNYXAKKwkgKi8KKwlwdWJsaWMgdm9pZCBjcmVhdGVMaXN0T2JqZWN0U1dGQnlOb2RlKEVsZW1lbnQgcGFpbnRFbGVtZW50LCBMaW5rZWRIYXNoTWFwPEludGVnZXIsT2JqZWN0PiBzdWJNYXApeworCQl0cnkgeworCisJCQlzdWJNYXAucHV0KDEsIHBhaW50RWxlbWVudC5lbGVtZW50KCJ1cmxuYW1lIikuZ2V0VGV4dCgpKTsKKwkJCXN1Yk1hcC5wdXQoMiwgcGFpbnRFbGVtZW50LmVsZW1lbnQoImJhc2V1cmwiKS5nZXRUZXh0KCkpOworCQkJc3ViTWFwLnB1dCgzLCBwYWludEVsZW1lbnQuZWxlbWVudCgiZmlsZW5hbWUiKS5nZXRUZXh0KCkpOworCQkJc3ViTWFwLnB1dCg0LCBwYWludEVsZW1lbnQuZWxlbWVudCgibW9kdWxlbmFtZSIpLmdldFRleHQoKSk7CisJCQlzdWJNYXAucHV0KDUsIHBhaW50RWxlbWVudC5lbGVtZW50KCJwYXJlbnRwYXRoIikuZ2V0VGV4dCgpKTsKKwkJCXN1Yk1hcC5wdXQoNiwgcGFpbnRFbGVtZW50LmVsZW1lbnQoInJvb20iKS5nZXRUZXh0KCkpOworCQkJc3ViTWFwLnB1dCg3LCBwYWludEVsZW1lbnQuZWxlbWVudCgiZG9tYWluIikuZ2V0VGV4dCgpKTsKKwkJCXN1Yk1hcC5wdXQoOCwgSW50ZWdlci52YWx1ZU9mKHBhaW50RWxlbWVudC5lbGVtZW50KCJzbGlkZU51bWJlciIpLmdldFRleHQoKSkuaW50VmFsdWUoKSk7CisJCQlzdWJNYXAucHV0KDksIEZsb2F0LnZhbHVlT2YocGFpbnRFbGVtZW50LmVsZW1lbnQoImlubmVyeCIpLmdldFRleHQoKSkuZmxvYXRWYWx1ZSgpKTsKKwkJCXN1Yk1hcC5wdXQoMTAsIEZsb2F0LnZhbHVlT2YocGFpbnRFbGVtZW50LmVsZW1lbnQoImlubmVyeSIpLmdldFRleHQoKSkuZmxvYXRWYWx1ZSgpKTsKKwkJCXN1Yk1hcC5wdXQoMTEsIEZsb2F0LnZhbHVlT2YocGFpbnRFbGVtZW50LmVsZW1lbnQoImlubmVyd2lkdGgiKS5nZXRUZXh0KCkpLmZsb2F0VmFsdWUoKSk7CisJCQlzdWJNYXAucHV0KDEyLCBGbG9hdC52YWx1ZU9mKHBhaW50RWxlbWVudC5lbGVtZW50KCJpbm5lcmhlaWdodCIpLmdldFRleHQoKSkuZmxvYXRWYWx1ZSgpKTsKKwkJCXN1Yk1hcC5wdXQoMTMsIEludGVnZXIudmFsdWVPZihwYWludEVsZW1lbnQuZWxlbWVudCgiem9vbWxldmVsIikuZ2V0VGV4dCgpKS5pbnRWYWx1ZSgpKTsKKwkJCXN1Yk1hcC5wdXQoMTQsIEZsb2F0LnZhbHVlT2YocGFpbnRFbGVtZW50LmVsZW1lbnQoImluaXR3aWR0aCIpLmdldFRleHQoKSkuZmxvYXRWYWx1ZSgpKTsKKwkJCXN1Yk1hcC5wdXQoMTUsIEZsb2F0LnZhbHVlT2YocGFpbnRFbGVtZW50LmVsZW1lbnQoImluaXRoZWlnaHQiKS5nZXRUZXh0KCkpLmZsb2F0VmFsdWUoKSk7CisJCQlzdWJNYXAucHV0KDE2LCBJbnRlZ2VyLnZhbHVlT2YocGFpbnRFbGVtZW50LmVsZW1lbnQoImN1cnJlbnR6b29tIikuZ2V0VGV4dCgpKS5pbnRWYWx1ZSgpKTsKKwkJCXN1Yk1hcC5wdXQoMTcsIEludGVnZXIudmFsdWVPZihwYWludEVsZW1lbnQuZWxlbWVudCgiY291bnRlciIpLmdldFRleHQoKSkuaW50VmFsdWUoKSk7CisJCQlzdWJNYXAucHV0KDE4LCBGbG9hdC52YWx1ZU9mKHBhaW50RWxlbWVudC5lbGVtZW50KCJ4IikuZ2V0VGV4dCgpKS5mbG9hdFZhbHVlKCkpOworCQkJc3ViTWFwLnB1dCgxOSwgRmxvYXQudmFsdWVPZihwYWludEVsZW1lbnQuZWxlbWVudCgieSIpLmdldFRleHQoKSkuZmxvYXRWYWx1ZSgpKTsKKwkJCXN1Yk1hcC5wdXQoMjAsIEZsb2F0LnZhbHVlT2YocGFpbnRFbGVtZW50LmVsZW1lbnQoIndpZHRoIikuZ2V0VGV4dCgpKS5mbG9hdFZhbHVlKCkpOworCQkJc3ViTWFwLnB1dCgyMSwgRmxvYXQudmFsdWVPZihwYWludEVsZW1lbnQuZWxlbWVudCgiaGVpZ2h0IikuZ2V0VGV4dCgpKS5mbG9hdFZhbHVlKCkpOworCQkJc3ViTWFwLnB1dCgyMiwgcGFpbnRFbGVtZW50LmVsZW1lbnQoImxheWVybmFtZSIpLmdldFRleHQoKSk7CQkKKwkJCQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoImNyZWF0ZUxpc3RPYmplY3RJbWFnZUJ5Tm9kZSIsZXJyKTsKKwkJfQorCX0JCQorCQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RvY3VtZW50cy9Mb2FkTGlicmFyeVByZXNlbnRhdGlvbi5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RvY3VtZW50cy9Mb2FkTGlicmFyeVByZXNlbnRhdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1YjYxYTQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZG9jdW1lbnRzL0xvYWRMaWJyYXJ5UHJlc2VudGF0aW9uLmphdmEKQEAgLTAsMCArMSwxNDkgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZG9jdW1lbnRzOworCitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmZpbGUuZHRvLkxpYnJhcnlQcmVzZW5hdGlvblRodW1iczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmZpbGUuZHRvLkxpYnJhcnlQcmVzZW50YXRpb247CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5maWxlLmR0by5MaWJyYXJ5UHJlc2VudGF0aW9uRmlsZTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmZpbGUuZHRvLkxpYnJhcnlQcmVzZW50YXRpb25UaHVtYjsKK2ltcG9ydCBvcmcuZG9tNGouRG9jdW1lbnQ7CitpbXBvcnQgb3JnLmRvbTRqLkVsZW1lbnQ7CitpbXBvcnQgb3JnLmRvbTRqLmlvLlNBWFJlYWRlcjsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CisKK3B1YmxpYyBjbGFzcyBMb2FkTGlicmFyeVByZXNlbnRhdGlvbiB7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcihMb2FkTGlicmFyeVByZXNlbnRhdGlvbi5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCQorCXB1YmxpYyBzdGF0aWMgTGlicmFyeVByZXNlbnRhdGlvbiBwYXJzZUxpYnJhcnlGaWxlVG9PYmplY3QoRmlsZSBmaWxlKXsKKwkJdHJ5IHsKKwkJCUxpYnJhcnlQcmVzZW50YXRpb24gbFByZXNlbnRhdGlvbiA9IG5ldyBMaWJyYXJ5UHJlc2VudGF0aW9uKCk7CisJCQkKKwkgICAgICAgIFNBWFJlYWRlciByZWFkZXIgPSBuZXcgU0FYUmVhZGVyKCk7CisJICAgICAgICBEb2N1bWVudCBkb2N1bWVudCA9IHJlYWRlci5yZWFkKCBuZXcgRmlsZUlucHV0U3RyZWFtKGZpbGUpICk7CisJICAgICAgICAKKwkgICAgICAgIEVsZW1lbnQgcm9vdCA9IGRvY3VtZW50LmdldFJvb3RFbGVtZW50KCk7CisJICAgICAgICAKKwkgICAgICAgIGZvciAoIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bmNoZWNrZWQiKQorCQkJSXRlcmF0b3I8RWxlbWVudD4gaSA9IHJvb3QuZWxlbWVudEl0ZXJhdG9yKCk7IGkuaGFzTmV4dCgpOyApIHsKKwkgICAgICAgIAkKKwkgICAgICAgICAgICBFbGVtZW50IGl0ZW0gPSBpLm5leHQoKTsKKwkgICAgICAgICAgICAKKwkgICAgICAgICAgICBsb2cuZGVidWcoaXRlbS5nZXROYW1lKCkpOworCSAgICAgICAgICAgIAorCSAgICAgICAgICAgIFN0cmluZyBub2RlVmFsID0gaXRlbS5nZXROYW1lKCk7CisJICAgICAgICAgICAgCisJICAgICAgICAgICAgLy9MaW5rZWRIYXNoTWFwPFN0cmluZyxPYmplY3Q+IHN1Yk1hcCA9IG5ldyBMaW5rZWRIYXNoTWFwPFN0cmluZyxPYmplY3Q+KCk7CisJICAgICAgICAgICAgCisJICAgICAgICAgICAgLy9zdWJNYXAucHV0KCJuYW1lIiwgbm9kZVZhbCk7CisKKwkJCQlpZiAobm9kZVZhbC5lcXVhbHMoIm9yaWdpbmFsRG9jdW1lbnQiKSl7CisJCQkJCQorCQkJCQlsUHJlc2VudGF0aW9uLnNldE9yaWdpbmFsRG9jdW1lbnQoY3JlYXRlTGlzdE9iamVjdExpYnJhcnlCeUZpbGVEb2N1bWVudChpdGVtKSk7CisJCQkJCQorCQkJCX0gZWxzZSBpZiAobm9kZVZhbC5lcXVhbHMoInBkZkRvY3VtZW50IikpeworCQkJCQkKKwkJCQkJbFByZXNlbnRhdGlvbi5zZXRQZGZEb2N1bWVudChjcmVhdGVMaXN0T2JqZWN0TGlicmFyeUJ5RmlsZURvY3VtZW50KGl0ZW0pKTsKKwkJCQkJCisJCQkJfSBlbHNlIGlmIChub2RlVmFsLmVxdWFscygic3dmRG9jdW1lbnQiKSl7CisJCQkJCQorCQkJCQlsUHJlc2VudGF0aW9uLnNldFN3ZkRvY3VtZW50KGNyZWF0ZUxpc3RPYmplY3RMaWJyYXJ5QnlGaWxlRG9jdW1lbnQoaXRlbSkpOworCQkJCQkKKwkJCQl9IGVsc2UgaWYgKG5vZGVWYWwuZXF1YWxzKCJ0aHVtYnMiKSkgeworCQkJCQkKKwkJCQkJbFByZXNlbnRhdGlvbi5zZXRUaHVtYnMoY3JlYXRlTGlzdE9iamVjdExpYnJhcnlCeUZpbGVEb2N1bWVudFRodW1icyhpdGVtKSk7CisJCQkJCQorCQkJCX0gZWxzZSB7CisJCQkJCXRocm93IG5ldyBFeGNlcHRpb24oIlVua293biBMaWJyYXJ5IHR5cGU6ICIrbm9kZVZhbCk7CisJCQkJfQorCSAgICAgICAgICAgIAorCSAgICAgICAgfQorCSAgICAgICAgCisJICAgICAgICBsb2cuZGVidWcoIlJldHVybmluZyBwcmVzZW50YXRpb24gZmlsZSBvYmplY3QiKTsKKwkJCQorCQkJcmV0dXJuIGxQcmVzZW50YXRpb247CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigicGFyc2VMaWJyYXJ5RmlsZVRvT2JqZWN0IixlcnIpOworCQkJcmV0dXJuIG51bGw7CisJCX0KKwl9CisJCisJcHVibGljIHN0YXRpYyBMaWJyYXJ5UHJlc2VudGF0aW9uRmlsZSBjcmVhdGVMaXN0T2JqZWN0TGlicmFyeUJ5RmlsZURvY3VtZW50KEVsZW1lbnQgZmlsZUVsZW1lbnQpeworCQl0cnkgeworCQkJCisJCQlsb2cuaW5mbygiY3JlYXRlTGlzdE9iamVjdExpYnJhcnlCeUZpbGVEb2N1bWVudCIrZmlsZUVsZW1lbnQpOworCQkJCisJCQlMaWJyYXJ5UHJlc2VudGF0aW9uRmlsZSBsaWJyYXJ5UHJlc2VudGF0aW9uRmlsZSA9IG5ldyBMaWJyYXJ5UHJlc2VudGF0aW9uRmlsZSgpOworCQkJbGlicmFyeVByZXNlbnRhdGlvbkZpbGUuc2V0TmFtZShmaWxlRWxlbWVudC5nZXROYW1lKCkpOworCQkJbGlicmFyeVByZXNlbnRhdGlvbkZpbGUuc2V0RmlsZW5hbWUoZmlsZUVsZW1lbnQuZ2V0VGV4dCgpKTsKKwkJCWxpYnJhcnlQcmVzZW50YXRpb25GaWxlLnNldExhc3Rtb2QoZmlsZUVsZW1lbnQuYXR0cmlidXRlKCJsYXN0bW9kIikuZ2V0VGV4dCgpKTsKKwkJCWxpYnJhcnlQcmVzZW50YXRpb25GaWxlLnNldFNpemUoTG9uZy52YWx1ZU9mKGZpbGVFbGVtZW50LmF0dHJpYnV0ZSgic2l6ZSIpLmdldFRleHQoKSkubG9uZ1ZhbHVlKCkpOworCQkJCisJCQlyZXR1cm4gbGlicmFyeVByZXNlbnRhdGlvbkZpbGU7CisJCQkKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJjcmVhdGVMaXN0T2JqZWN0TGlicmFyeUJ5RmlsZURvY3VtZW50IixlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0JCQorCQorCXB1YmxpYyBzdGF0aWMgTGlicmFyeVByZXNlbmF0aW9uVGh1bWJzIGNyZWF0ZUxpc3RPYmplY3RMaWJyYXJ5QnlGaWxlRG9jdW1lbnRUaHVtYnMoRWxlbWVudCBmaWxlRWxlbWVudCl7CisJCXRyeSB7CisJCQkKKwkJCUxpYnJhcnlQcmVzZW5hdGlvblRodW1icyB0aHVtYk1hcCA9IG5ldyBMaWJyYXJ5UHJlc2VuYXRpb25UaHVtYnMoKTsKKwkJCXRodW1iTWFwLnNldE5hbWUoZmlsZUVsZW1lbnQuZ2V0TmFtZSgpKTsKKwkJCQorCQkJSW50ZWdlciBrID0gMDsKKwkJCWZvciAoIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bmNoZWNrZWQiKQorCQkJSXRlcmF0b3I8RWxlbWVudD4gaSA9IGZpbGVFbGVtZW50LmVsZW1lbnRJdGVyYXRvcigpOyBpLmhhc05leHQoKTsgaS5uZXh0KCkpIHsKKwkJCQlrKys7CisJCQl9CisJCQkKKwkJCXRodW1iTWFwLnNldFRodW1icyhuZXcgTGlicmFyeVByZXNlbnRhdGlvblRodW1iW2tdKTsKKwkJCQorCQkJCisJCQlrID0gMDsKKwkJCWZvciAoIEBTdXBwcmVzc1dhcm5pbmdzKCJ1bmNoZWNrZWQiKQorCQkJSXRlcmF0b3I8RWxlbWVudD4gaSA9IGZpbGVFbGVtZW50LmVsZW1lbnRJdGVyYXRvcigpOyBpLmhhc05leHQoKTsgKSB7CisJCQkJRWxlbWVudCB0aHVtYkVsZW1lbnQgPSBpLm5leHQoKTsKKwkJCQkvL2xvZy5pbmZvKCJjcmVhdGVMaXN0T2JqZWN0TGlicmFyeUJ5RmlsZURvY3VtZW50VGh1bWJzIit0aHVtYkVsZW1lbnQpOworCQkJCUxpYnJhcnlQcmVzZW50YXRpb25UaHVtYiBzaW5nbGVUaHVtYiA9IG5ldyBMaWJyYXJ5UHJlc2VudGF0aW9uVGh1bWIoKTsKKwkJCQlzaW5nbGVUaHVtYi5zZXROYW1lKHRodW1iRWxlbWVudC5nZXROYW1lKCkpOworCQkJCXNpbmdsZVRodW1iLnNldEZpbGVuYW1lKHRodW1iRWxlbWVudC5nZXRUZXh0KCkpOworCQkJCXNpbmdsZVRodW1iLnNldExhc3Rtb2QodGh1bWJFbGVtZW50LmF0dHJpYnV0ZSgibGFzdG1vZCIpLmdldFRleHQoKSk7CisJCQkJc2luZ2xlVGh1bWIuc2V0U2l6ZShMb25nLnZhbHVlT2YodGh1bWJFbGVtZW50LmF0dHJpYnV0ZSgic2l6ZSIpLmdldFRleHQoKSkubG9uZ1ZhbHVlKCkpOworCQkJCXRodW1iTWFwLmdldFRodW1icygpW2tdID0gc2luZ2xlVGh1bWI7CisJCQkJaysrOworCQkJfQorCQkJCisJCQkKKwkJCXJldHVybiB0aHVtYk1hcDsKKwkJCQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoImNyZWF0ZUxpc3RPYmplY3RMaWJyYXJ5QnlGaWxlRG9jdW1lbnRUaHVtYnMiLGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQkKKwkKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kb2N1bWVudHMvTG9hZExpYnJhcnlQcmVzZW50YXRpb25Ub09iamVjdC5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RvY3VtZW50cy9Mb2FkTGlicmFyeVByZXNlbnRhdGlvblRvT2JqZWN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU1NWUxNwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kb2N1bWVudHMvTG9hZExpYnJhcnlQcmVzZW50YXRpb25Ub09iamVjdC5qYXZhCkBAIC0wLDAgKzEsMTI2IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRvY3VtZW50czsKKworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlua2VkTGlzdDsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJlYW5zLmZpbGVzLkZpbGVzT2JqZWN0OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmVhbnMuZmlsZXMuUHJlc2VudGF0aW9uT2JqZWN0OworaW1wb3J0IG9yZy5kb200ai5Eb2N1bWVudDsKK2ltcG9ydCBvcmcuZG9tNGouRWxlbWVudDsKK2ltcG9ydCBvcmcuZG9tNGouaW8uU0FYUmVhZGVyOworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKKworcHVibGljIGNsYXNzIExvYWRMaWJyYXJ5UHJlc2VudGF0aW9uVG9PYmplY3QgeworCQorCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoTG9hZExpYnJhcnlQcmVzZW50YXRpb25Ub09iamVjdC5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCQorCXByaXZhdGUgc3RhdGljIExvYWRMaWJyYXJ5UHJlc2VudGF0aW9uVG9PYmplY3QgaW5zdGFuY2U7CisKKwlwcml2YXRlIExvYWRMaWJyYXJ5UHJlc2VudGF0aW9uVG9PYmplY3QoKSB7fQorCisJcHVibGljIHN0YXRpYyBzeW5jaHJvbml6ZWQgTG9hZExpYnJhcnlQcmVzZW50YXRpb25Ub09iamVjdCBnZXRJbnN0YW5jZSgpIHsKKwkJaWYgKGluc3RhbmNlID09IG51bGwpIHsKKwkJCWluc3RhbmNlID0gbmV3IExvYWRMaWJyYXJ5UHJlc2VudGF0aW9uVG9PYmplY3QoKTsKKwkJfQorCQlyZXR1cm4gaW5zdGFuY2U7CisJfQkKKwkKKwlwdWJsaWMgUHJlc2VudGF0aW9uT2JqZWN0IHBhcnNlTGlicmFyeUZpbGVUb09iamVjdChTdHJpbmcgZmlsZVBhdGgpeworCQl0cnkgeworCQkJUHJlc2VudGF0aW9uT2JqZWN0IGxNYXAgPSBuZXcgUHJlc2VudGF0aW9uT2JqZWN0KCk7CisJCQkKKwkgICAgICAgIFNBWFJlYWRlciByZWFkZXIgPSBuZXcgU0FYUmVhZGVyKCk7CisJICAgICAgICBEb2N1bWVudCBkb2N1bWVudCA9IHJlYWRlci5yZWFkKGZpbGVQYXRoKTsKKwkgICAgICAgIAorCSAgICAgICAgRWxlbWVudCByb290ID0gZG9jdW1lbnQuZ2V0Um9vdEVsZW1lbnQoKTsKKwkgICAgICAgIEludGVnZXIgayA9IDA7CisJICAgICAgICAKKwkgICAgICAgIGZvciAoQFN1cHByZXNzV2FybmluZ3MoInVuY2hlY2tlZCIpCisJCQlJdGVyYXRvcjxFbGVtZW50PiBpID0gcm9vdC5lbGVtZW50SXRlcmF0b3IoKTsgaS5oYXNOZXh0KCk7ICkgeworCSAgICAgICAgICAgIEVsZW1lbnQgaXRlbSA9IGkubmV4dCgpOworCSAgICAgICAgICAgIGxvZy5lcnJvcihpdGVtLmdldE5hbWUoKSk7CisJICAgICAgICAgICAgCisJICAgICAgICAgICAgU3RyaW5nIG5vZGVWYWwgPSBpdGVtLmdldE5hbWUoKTsKKwkgICAgICAgICAgICAKKwkJCQlpZiAobm9kZVZhbC5lcXVhbHMoIm9yaWdpbmFsRG9jdW1lbnQiKSl7CisJCQkJCWxNYXAuc2V0T3JpZ2luYWxEb2N1bWVudCh0aGlzLmNyZWF0ZUxpc3RPYmplY3RMaWJyYXJ5QnlGaWxlRG9jdW1lbnQoaXRlbSkpOworCQkJCX0gZWxzZSBpZiAobm9kZVZhbC5lcXVhbHMoInBkZkRvY3VtZW50IikpeworCQkJCQlsTWFwLnNldFBkZkRvY3VtZW50KHRoaXMuY3JlYXRlTGlzdE9iamVjdExpYnJhcnlCeUZpbGVEb2N1bWVudChpdGVtKSk7CisJCQkJfSBlbHNlIGlmIChub2RlVmFsLmVxdWFscygic3dmRG9jdW1lbnQiKSkgeworCQkJCQlsTWFwLnNldFN3ZkRvY3VtZW50KHRoaXMuY3JlYXRlTGlzdE9iamVjdExpYnJhcnlCeUZpbGVEb2N1bWVudChpdGVtKSk7CisJCQkJfSBlbHNlIGlmIChub2RlVmFsLmVxdWFscygidGh1bWJzIikpIHsKKwkJCQkJbE1hcC5zZXRUaHVtYnModGhpcy5jcmVhdGVMaXN0T2JqZWN0TGlicmFyeUJ5RmlsZURvY3VtZW50VGh1bWJzKGl0ZW0pKTsKKwkJCQl9CisJICAgICAgICAgICAgCisJICAgICAgICAgICAgaysrOworCisJICAgICAgICB9CisJCQkKKwkJCXJldHVybiBsTWFwOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoInBhcnNlTGlicmFyeUZpbGVUb09iamVjdCIsZXJyKTsKKwkJCXJldHVybiBudWxsOworCQl9CisJfQorCQorCXB1YmxpYyBGaWxlc09iamVjdCBjcmVhdGVMaXN0T2JqZWN0TGlicmFyeUJ5RmlsZURvY3VtZW50KEVsZW1lbnQgZmlsZUVsZW1lbnQpeworCQl0cnkgeworCQkJCisJCQlsb2cuaW5mbygiY3JlYXRlTGlzdE9iamVjdExpYnJhcnlCeUZpbGVEb2N1bWVudCIrZmlsZUVsZW1lbnQpOworCQkJRmlsZXNPYmplY3QgZmlsZU9iamVjdCA9IG5ldyBGaWxlc09iamVjdCgpOworCQkJZmlsZU9iamVjdC5zZXRGaWxlTmFtZShmaWxlRWxlbWVudC5nZXRUZXh0KCkpOworCQkJZmlsZU9iamVjdC5zZXRMYXN0TW9kaWZpZWQoZmlsZUVsZW1lbnQuYXR0cmlidXRlKCJsYXN0bW9kIikuZ2V0VGV4dCgpKTsKKwkJCWZpbGVPYmplY3Quc2V0RmlsZUJ5dGVzKGZpbGVFbGVtZW50LmF0dHJpYnV0ZSgic2l6ZSIpLmdldFRleHQoKSk7CisJCQlyZXR1cm4gZmlsZU9iamVjdDsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJjcmVhdGVMaXN0T2JqZWN0TGlicmFyeUJ5RmlsZURvY3VtZW50IixlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0JCQorCQorCXB1YmxpYyBMaW5rZWRMaXN0PEZpbGVzT2JqZWN0PiBjcmVhdGVMaXN0T2JqZWN0TGlicmFyeUJ5RmlsZURvY3VtZW50VGh1bWJzKEVsZW1lbnQgZmlsZUVsZW1lbnQpeworCQl0cnkgeworCisJCQlMaW5rZWRMaXN0PEZpbGVzT2JqZWN0PiB0aHVtYk1hcCA9IG5ldyBMaW5rZWRMaXN0PEZpbGVzT2JqZWN0PigpOworCQkJCisJCQlmb3IgKEBTdXBwcmVzc1dhcm5pbmdzKCJ1bmNoZWNrZWQiKQorCQkJSXRlcmF0b3I8RWxlbWVudD4gaSA9IGZpbGVFbGVtZW50LmVsZW1lbnRJdGVyYXRvcigpOyBpLmhhc05leHQoKTsgKSB7CisJCQkJRWxlbWVudCB0aHVtYkVsZW1lbnQgPSBpLm5leHQoKTsKKwkJCQlsb2cuaW5mbygiY3JlYXRlTGlzdE9iamVjdExpYnJhcnlCeUZpbGVEb2N1bWVudFRodW1icyIrdGh1bWJFbGVtZW50KTsKKwkJCQlGaWxlc09iamVjdCBzaW5nbGVUaHVtYiA9IG5ldyBGaWxlc09iamVjdCgpOworCQkJCXNpbmdsZVRodW1iLnNldEZpbGVOYW1lKHRodW1iRWxlbWVudC5nZXROYW1lKCkpOworCQkJCXNpbmdsZVRodW1iLnNldEZpbGVOYW1lUHVyZSh0aHVtYkVsZW1lbnQuZ2V0VGV4dCgpKTsKKwkJCQlzaW5nbGVUaHVtYi5zZXRMYXN0TW9kaWZpZWQodGh1bWJFbGVtZW50LmF0dHJpYnV0ZSgibGFzdG1vZCIpLmdldFRleHQoKSk7CisJCQkJc2luZ2xlVGh1bWIuc2V0RmlsZUJ5dGVzKHRodW1iRWxlbWVudC5hdHRyaWJ1dGUoInNpemUiKS5nZXRUZXh0KCkpOworCQkJCXRodW1iTWFwLmFkZChzaW5nbGVUaHVtYik7CisJCQl9CisJCQkKKwkJCXJldHVybiB0aHVtYk1hcDsKKwkJCQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoImNyZWF0ZUxpc3RPYmplY3RMaWJyYXJ5QnlGaWxlRG9jdW1lbnRUaHVtYnMiLGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQkKKwkKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kb2N1bWVudHMvYmVhbnMvQ29udmVydGVyUHJvY2Vzc1Jlc3VsdC5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RvY3VtZW50cy9iZWFucy9Db252ZXJ0ZXJQcm9jZXNzUmVzdWx0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzE5NjQzNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kb2N1bWVudHMvYmVhbnMvQ29udmVydGVyUHJvY2Vzc1Jlc3VsdC5qYXZhCkBAIC0wLDAgKzEsMTE3IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRvY3VtZW50cy5iZWFuczsKKworLyoqCisgKiBPYmplY3QgY3JlYXRlZCBieSBlYWNoIGNvbnZlcnNpb24gc3RlcCwKKyAqIGVhY2ggY29udmVyc2lvbiBzdGVwIHRoYXQgaW52b2tlcyBhbmQgZXh0ZXJuYWwgdG9vbCBsaWtlIEltYWdlTWFnaWNrIGlzIG9uZSBzaW5nbGUgCisgKiBDb252ZXJ0ZXJQcm9jZXNzTWVzc2FnZQorICogCisgKiBpZiBleGl0VmFsdWUgZXF1YWxzICItMSIgdGhlbiB0aGVyZSB3YXMgYW4gaXNzdWUuCisgKiAKKyAqIEBhdXRob3Igc2ViYXdhZ25lcgorICoKKyAqLworcHVibGljIGNsYXNzIENvbnZlcnRlclByb2Nlc3NSZXN1bHQgeworCQorCXByaXZhdGUgU3RyaW5nIHByb2Nlc3M7CisJcHJpdmF0ZSBTdHJpbmcgY29tbWFuZDsKKwlwcml2YXRlIFN0cmluZyBleGNlcHRpb247CisJcHJpdmF0ZSBTdHJpbmcgZXJyb3I7CisJcHJpdmF0ZSBTdHJpbmcgZXhpdFZhbHVlOworCXByaXZhdGUgU3RyaW5nIG91dDsKKwkKKwlwdWJsaWMgQ29udmVydGVyUHJvY2Vzc1Jlc3VsdCgpIHsKKwkJCisJfQorCQorCXB1YmxpYyBDb252ZXJ0ZXJQcm9jZXNzUmVzdWx0IChTdHJpbmcgcHJvY2VzcywKKwkJCVN0cmluZyBlcnJvciwgRXhjZXB0aW9uIGV4KSB7CisJCXNldFByb2Nlc3MocHJvY2Vzcyk7CisJCXNldEV4Y2VwdGlvbihleC50b1N0cmluZygpKTsKKwkJc2V0RXJyb3IoZXJyb3IpOworCQlzZXRFeGl0VmFsdWUoIi0xIik7CisJfQorCQorCXB1YmxpYyBDb252ZXJ0ZXJQcm9jZXNzUmVzdWx0KFN0cmluZyBlcnJvcikgeworCQlzZXRFcnJvcihlcnJvcik7CisJCXNldEV4aXRWYWx1ZSgiLTEiKTsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGdldE91dCgpIHsKKwkJcmV0dXJuIG91dDsKKwl9CisJcHVibGljIHZvaWQgc2V0T3V0KFN0cmluZyBvdXQpIHsKKwkJdGhpcy5vdXQgPSBvdXQ7CisJfQorCXB1YmxpYyBTdHJpbmcgZ2V0Q29tbWFuZCgpIHsKKwkJcmV0dXJuIGNvbW1hbmQ7CisJfQorCXB1YmxpYyB2b2lkIHNldENvbW1hbmQoU3RyaW5nIGNvbW1hbmQpIHsKKwkJdGhpcy5jb21tYW5kID0gY29tbWFuZDsKKwl9CisJcHVibGljIFN0cmluZyBnZXRQcm9jZXNzKCkgeworCQlyZXR1cm4gcHJvY2VzczsKKwl9CisJcHVibGljIHZvaWQgc2V0UHJvY2VzcyhTdHJpbmcgcHJvY2VzcykgeworCQl0aGlzLnByb2Nlc3MgPSBwcm9jZXNzOworCX0KKwlwdWJsaWMgU3RyaW5nIGdldEV4Y2VwdGlvbigpIHsKKwkJcmV0dXJuIGV4Y2VwdGlvbjsKKwl9CisJcHVibGljIHZvaWQgc2V0RXhjZXB0aW9uKFN0cmluZyBleGNlcHRpb24pIHsKKwkJdGhpcy5leGNlcHRpb24gPSBleGNlcHRpb247CisJfQorCXB1YmxpYyBTdHJpbmcgZ2V0RXJyb3IoKSB7CisJCXJldHVybiBlcnJvcjsKKwl9CisJcHVibGljIHZvaWQgc2V0RXJyb3IoU3RyaW5nIGVycm9yKSB7CisJCXRoaXMuZXJyb3IgPSBlcnJvcjsKKwl9CisJcHVibGljIFN0cmluZyBnZXRFeGl0VmFsdWUoKSB7CisJCXJldHVybiBleGl0VmFsdWU7CisJfQorCXB1YmxpYyB2b2lkIHNldEV4aXRWYWx1ZShTdHJpbmcgZXhpdFZhbHVlKSB7CisJCXRoaXMuZXhpdFZhbHVlID0gZXhpdFZhbHVlOworCX0KKwkKKwlwdWJsaWMgU3RyaW5nIGJ1aWxkTG9nTWVzc2FnZSgpIHsKKwkJU3RyaW5nQnVpbGRlciBzdHJCdWlsZGVyID0gbmV3IFN0cmluZ0J1aWxkZXIoKTsKKwkJc3RyQnVpbGRlci5hcHBlbmQoInByb2Nlc3M6ICIpOworCQlzdHJCdWlsZGVyLmFwcGVuZChnZXRQcm9jZXNzKCkpOworCQlzdHJCdWlsZGVyLmFwcGVuZCgiXHJcbiIpOworCQlzdHJCdWlsZGVyLmFwcGVuZCgiY29tbWFuZDsgIik7CisJCXN0ckJ1aWxkZXIuYXBwZW5kKGdldENvbW1hbmQoKSk7CisJCXN0ckJ1aWxkZXIuYXBwZW5kKCJcclxuIik7CisJCXN0ckJ1aWxkZXIuYXBwZW5kKCJleGNlcHRpb246ICIpOworCQlzdHJCdWlsZGVyLmFwcGVuZChnZXRFeGNlcHRpb24oKSk7CisJCXN0ckJ1aWxkZXIuYXBwZW5kKCJcclxuIik7CisJCXN0ckJ1aWxkZXIuYXBwZW5kKCJlcnJvcjogIik7CisJCXN0ckJ1aWxkZXIuYXBwZW5kKGdldEVycm9yKCkpOworCQlzdHJCdWlsZGVyLmFwcGVuZCgiXHJcbiIpOworCQlzdHJCdWlsZGVyLmFwcGVuZCgiZXhpdFZhbHVlOiAiKTsKKwkJc3RyQnVpbGRlci5hcHBlbmQoZ2V0RXhjZXB0aW9uKCkpOworCQlzdHJCdWlsZGVyLmFwcGVuZCgiXHJcbiIpOworCQlzdHJCdWlsZGVyLmFwcGVuZCgib3V0OiAiKTsKKwkJc3RyQnVpbGRlci5hcHBlbmQoZ2V0T3V0KCkpOworCQlzdHJCdWlsZGVyLmFwcGVuZCgiXHJcbiIpOworCQlyZXR1cm4gc3RyQnVpbGRlci50b1N0cmluZygpOworCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RvY3VtZW50cy9iZWFucy9Db252ZXJ0ZXJQcm9jZXNzUmVzdWx0TGlzdC5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RvY3VtZW50cy9iZWFucy9Db252ZXJ0ZXJQcm9jZXNzUmVzdWx0TGlzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3MDc1NjUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvZG9jdW1lbnRzL2JlYW5zL0NvbnZlcnRlclByb2Nlc3NSZXN1bHRMaXN0LmphdmEKQEAgLTAsMCArMSwxNDYgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZG9jdW1lbnRzLmJlYW5zOworCitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworaW1wb3J0IGphdmEudXRpbC5NYXA7CitpbXBvcnQgamF2YS51dGlsLk1hcC5FbnRyeTsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5heGlzLnNlcnZpY2VzLkZpbGVJbXBvcnRFcnJvcjsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CisKKy8qKgorICogCisgKiBDb2xsZWN0cyBhbGwgcmVzdWx0cyBvZiBjb252ZXJzaW9uIGpvYnMKKyAqIAorICogQGF1dGhvciBzZWJhd2FnbmVyCisgKiAKKyAqLworcHVibGljIGNsYXNzIENvbnZlcnRlclByb2Nlc3NSZXN1bHRMaXN0IHsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoCisJCQlDb252ZXJ0ZXJQcm9jZXNzUmVzdWx0TGlzdC5jbGFzcywKKwkJCU9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKworCXByaXZhdGUgTWFwPFN0cmluZywgQ29udmVydGVyUHJvY2Vzc1Jlc3VsdD4gam9ic2xpc3QgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIENvbnZlcnRlclByb2Nlc3NSZXN1bHQ+KCk7CisKKwlwcml2YXRlIExvbmcgZmlsZUV4cGxvcmVySXRlbUlkOworCXByaXZhdGUgU3RyaW5nIGNvbXBsZXRlTmFtZTsKKworCXB1YmxpYyBMb25nIGdldEZpbGVFeHBsb3Jlckl0ZW1JZCgpIHsKKwkJcmV0dXJuIGZpbGVFeHBsb3Jlckl0ZW1JZDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRGaWxlRXhwbG9yZXJJdGVtSWQoTG9uZyBmaWxlRXhwbG9yZXJJdGVtSWQpIHsKKwkJdGhpcy5maWxlRXhwbG9yZXJJdGVtSWQgPSBmaWxlRXhwbG9yZXJJdGVtSWQ7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRDb21wbGV0ZU5hbWUoKSB7CisJCXJldHVybiBjb21wbGV0ZU5hbWU7CisJfQorCisJcHVibGljIHZvaWQgc2V0Q29tcGxldGVOYW1lKFN0cmluZyBjb21wbGV0ZU5hbWUpIHsKKwkJdGhpcy5jb21wbGV0ZU5hbWUgPSBjb21wbGV0ZU5hbWU7CisJfQorCisJcHVibGljIENvbnZlcnRlclByb2Nlc3NSZXN1bHQgYWRkSXRlbShTdHJpbmcgbmFtZSwKKwkJCUNvbnZlcnRlclByb2Nlc3NSZXN1bHQgcHJvY2Vzc1Jlc3VsdCkgeworCQlpZiAoam9ic2xpc3QuY29udGFpbnNLZXkobmFtZSkpIHsKKwkJCWxvZy5lcnJvcigiRHVwbGljYXRlIGtleSBpbiBqb2JzbGlzdCIpOworCQkJcmV0dXJuIG51bGw7CisJCX0KKwkJcmV0dXJuIGpvYnNsaXN0LnB1dChuYW1lLCBwcm9jZXNzUmVzdWx0KTsKKwl9CisKKwkvKioKKwkgKiByZXR1cm5zIHRydWUgaWYgdGhlcmUgd2FzIGFuIGpvYiB3aXRoIGV4aXRWYWx1ZSAiLTEiCisJICogCisJICogQHJldHVybgorCSAqLworCXB1YmxpYyBib29sZWFuIGhhc0Vycm9yKCkgeworCQlmb3IgKEVudHJ5PFN0cmluZywgQ29udmVydGVyUHJvY2Vzc1Jlc3VsdD4gZW50cnkgOiBqb2JzbGlzdC5lbnRyeVNldCgpKSB7CisJCQlpZiAoZW50cnkuZ2V0VmFsdWUoKS5nZXRFeGl0VmFsdWUoKS5lcXVhbHMoIi0xIikpIHsKKwkJCQlyZXR1cm4gdHJ1ZTsKKwkJCX0KKwkJfQorCQlyZXR1cm4gZmFsc2U7CisJfQorCisJLyoqCisJICogY29udmVydHMgYWxsIGpvYiByZXN1bHRzIGludG8gYSBodW1hbiByZWFkYWJsZSBmb3JtYXQKKwkgKiAKKwkgKiBAcmV0dXJuCisJICovCisJcHVibGljIFN0cmluZyBnZXRMb2dNZXNzYWdlKCkgeworCQlTdHJpbmdCdWlsZGVyIGxvZ01lc3NhZ2UgPSBuZXcgU3RyaW5nQnVpbGRlcigpOworCQlmb3IgKEVudHJ5PFN0cmluZywgQ29udmVydGVyUHJvY2Vzc1Jlc3VsdD4gZW50cnkgOiBqb2JzbGlzdC5lbnRyeVNldCgpKSB7CisJCQlsb2dNZXNzYWdlLmFwcGVuZCgia2V5OiAiKTsKKwkJCWxvZ01lc3NhZ2UuYXBwZW5kKGVudHJ5LmdldEtleSgpKTsKKwkJCWxvZ01lc3NhZ2UuYXBwZW5kKCJcclxuIik7CisJCQlsb2dNZXNzYWdlLmFwcGVuZChlbnRyeS5nZXRWYWx1ZSgpLmJ1aWxkTG9nTWVzc2FnZSgpKTsKKwkJfQorCQlyZXR1cm4gbG9nTWVzc2FnZS50b1N0cmluZygpOworCX0KKworCS8qKgorCSAqIEF4aXMgbmVlZCBPYmplY3RzIG9yIGFycmF5IG9mIG9iamVjdHMsIE1hcCB3b24ndCB3b3JrCisJICogCisJICogQHJldHVybgorCSAqLworCXB1YmxpYyBGaWxlSW1wb3J0RXJyb3JbXSBjb252ZXJ0VG9GaWxlSW1wb3J0RXJyb3JzKCkgeworCQlGaWxlSW1wb3J0RXJyb3JbXSBmaWxlSW1wb3J0RXJyb3JzID0gbmV3IEZpbGVJbXBvcnRFcnJvcltqb2JzbGlzdAorCQkJCS5zaXplKCldOworCisJCWludCBpID0gMDsKKwkJLy8gQXhpcyBuZWVkIE9iamVjdHMgb3IgYXJyYXkgb2Ygb2JqZWN0cywgTWFwIHdvbid0IHdvcmsKKwkJZm9yIChJdGVyYXRvcjxTdHJpbmc+IGl0ZXIgPSBqb2JzbGlzdC5rZXlTZXQoKS5pdGVyYXRvcigpOyBpdGVyCisJCQkJLmhhc05leHQoKTspIHsKKworCQkJQ29udmVydGVyUHJvY2Vzc1Jlc3VsdCByZXR1cm5BdHRyaWJ1dGUgPSBqb2JzbGlzdC5nZXQoaXRlcgorCQkJCQkubmV4dCgpKTsKKworCQkJZmlsZUltcG9ydEVycm9yc1tpXSA9IG5ldyBGaWxlSW1wb3J0RXJyb3IoKTsKKwkJCWZpbGVJbXBvcnRFcnJvcnNbaV0KKwkJCQkJLnNldENvbW1hbmQoKHJldHVybkF0dHJpYnV0ZS5nZXRDb21tYW5kKCkgIT0gbnVsbCkgPyByZXR1cm5BdHRyaWJ1dGUKKwkJCQkJCQkuZ2V0Q29tbWFuZCgpLnRvU3RyaW5nKCkgOiAiIik7CisJCQlmaWxlSW1wb3J0RXJyb3JzW2ldCisJCQkJCS5zZXRFcnJvcigocmV0dXJuQXR0cmlidXRlLmdldEVycm9yKCkgIT0gbnVsbCkgPyByZXR1cm5BdHRyaWJ1dGUKKwkJCQkJCQkuZ2V0RXJyb3IoKS50b1N0cmluZygpIDogIiIpOworCQkJZmlsZUltcG9ydEVycm9yc1tpXQorCQkJCQkuc2V0RXhpdFZhbHVlKChyZXR1cm5BdHRyaWJ1dGUuZ2V0RXhpdFZhbHVlKCkgIT0gbnVsbCkgPyBJbnRlZ2VyCisJCQkJCQkJLnZhbHVlT2YocmV0dXJuQXR0cmlidXRlLmdldEV4aXRWYWx1ZSgpLnRvU3RyaW5nKCkpCisJCQkJCQkJLmludFZhbHVlKCkgOiAwKTsKKwkJCWZpbGVJbXBvcnRFcnJvcnNbaV0KKwkJCQkJLnNldFByb2Nlc3MoKHJldHVybkF0dHJpYnV0ZS5nZXRQcm9jZXNzKCkgIT0gbnVsbCkgPyByZXR1cm5BdHRyaWJ1dGUKKwkJCQkJCQkuZ2V0UHJvY2VzcygpLnRvU3RyaW5nKCkgOiAiIik7CisKKwkJCWkrKzsKKwkJfQorCQkKKwkJcmV0dXJuIGZpbGVJbXBvcnRFcnJvcnM7CisJfQorCisJcHVibGljIGludCBzaXplKCkgeworCQlyZXR1cm4gam9ic2xpc3Quc2l6ZSgpOworCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2RvY3VtZW50cy9iZWFucy9VcGxvYWRDb21wbGV0ZU1lc3NhZ2UuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kb2N1bWVudHMvYmVhbnMvVXBsb2FkQ29tcGxldGVNZXNzYWdlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQ3ZTllOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9kb2N1bWVudHMvYmVhbnMvVXBsb2FkQ29tcGxldGVNZXNzYWdlLmphdmEKQEAgLTAsMCArMSwxODAgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZG9jdW1lbnRzLmJlYW5zOworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuZmlsZXMuRmlsZUV4cGxvcmVySXRlbTsKKworCisvKioKKyAqIEhlbHBlciBiZWFuIHRoYXQgaXMgc2VuZCB0byBjbGllbnQocykgb25jZSB0aGUgc2VydmxldCBoYXMgY29tcGxldGVkIHRoZQorICogdXBsb2FkCisgKiAKKyAqIEBhdXRob3Igc2ViYXdhZ25lcgorICogCisgKi8KK3B1YmxpYyBjbGFzcyBVcGxvYWRDb21wbGV0ZU1lc3NhZ2UgeworCisJcHJpdmF0ZSBMb25nIHVzZXJJZDsKKwlwcml2YXRlIFN0cmluZyBtZXNzYWdlOworCXByaXZhdGUgU3RyaW5nIGFjdGlvbjsKKwlwcml2YXRlIFN0cmluZyBlcnJvcjsKKwlwcml2YXRlIGJvb2xlYW4gaGFzRXJyb3IgPSBmYWxzZTsKKwlwcml2YXRlIFN0cmluZyBmaWxlTmFtZTsKKworCS8vIFByb3BlcnRpZXMgZnJvbSB0aGUgZmlsZSBleHBsb3Jlckl0ZW0KKwlwcml2YXRlIFN0cmluZyBmaWxlU3lzdGVtTmFtZTsKKwlwcml2YXRlIEJvb2xlYW4gaXNQcmVzZW50YXRpb24gPSBmYWxzZTsKKwlwcml2YXRlIEJvb2xlYW4gaXNJbWFnZSA9IGZhbHNlOworCXByaXZhdGUgQm9vbGVhbiBpc1ZpZGVvID0gZmFsc2U7CisJcHJpdmF0ZSBTdHJpbmcgZmlsZUhhc2g7CisKKwlwdWJsaWMgVXBsb2FkQ29tcGxldGVNZXNzYWdlKCkgeworCX0KKworCXB1YmxpYyBVcGxvYWRDb21wbGV0ZU1lc3NhZ2UoTG9uZyB1c2VySWQsIFN0cmluZyBtZXNzYWdlLCBTdHJpbmcgYWN0aW9uLAorCQkJU3RyaW5nIGVycm9yLCBTdHJpbmcgZmlsZU5hbWUpIHsKKwkJc3VwZXIoKTsKKwkJdGhpcy51c2VySWQgPSB1c2VySWQ7CisJCXRoaXMubWVzc2FnZSA9IG1lc3NhZ2U7CisJCXRoaXMuYWN0aW9uID0gYWN0aW9uOworCQl0aGlzLmVycm9yID0gZXJyb3I7CisJCXRoaXMuZmlsZU5hbWUgPSBmaWxlTmFtZTsKKwl9CisKKwlwdWJsaWMgVXBsb2FkQ29tcGxldGVNZXNzYWdlKExvbmcgdXNlcklkLCBTdHJpbmcgbWVzc2FnZSwgU3RyaW5nIGFjdGlvbiwKKwkJCVN0cmluZyBlcnJvciwgYm9vbGVhbiBoYXNFcnJvciwgU3RyaW5nIGZpbGVOYW1lLAorCQkJU3RyaW5nIGZpbGVTeXN0ZW1OYW1lLCBib29sZWFuIGlzUHJlc2VudGF0aW9uLCBib29sZWFuIGlzSW1hZ2UsCisJCQlib29sZWFuIGlzVmlkZW8sIFN0cmluZyBmaWxlSGFzaCkgeworCQlzdXBlcigpOworCQl0aGlzLnVzZXJJZCA9IHVzZXJJZDsKKwkJdGhpcy5tZXNzYWdlID0gbWVzc2FnZTsKKwkJdGhpcy5hY3Rpb24gPSBhY3Rpb247CisJCXRoaXMuZXJyb3IgPSBlcnJvcjsKKwkJdGhpcy5oYXNFcnJvciA9IGhhc0Vycm9yOworCQl0aGlzLmZpbGVOYW1lID0gZmlsZU5hbWU7CisJCXRoaXMuZmlsZVN5c3RlbU5hbWUgPSBmaWxlU3lzdGVtTmFtZTsKKwkJdGhpcy5pc1ByZXNlbnRhdGlvbiA9IGlzUHJlc2VudGF0aW9uOworCQl0aGlzLmlzSW1hZ2UgPSBpc0ltYWdlOworCQl0aGlzLmlzVmlkZW8gPSBpc1ZpZGVvOworCQl0aGlzLmZpbGVIYXNoID0gZmlsZUhhc2g7CisJfQorCisJcHVibGljIExvbmcgZ2V0VXNlcklkKCkgeworCQlyZXR1cm4gdXNlcklkOworCX0KKworCXB1YmxpYyB2b2lkIHNldFVzZXJJZChMb25nIHVzZXJJZCkgeworCQl0aGlzLnVzZXJJZCA9IHVzZXJJZDsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGdldE1lc3NhZ2UoKSB7CisJCXJldHVybiBtZXNzYWdlOworCX0KKworCXB1YmxpYyB2b2lkIHNldE1lc3NhZ2UoU3RyaW5nIG1lc3NhZ2UpIHsKKwkJdGhpcy5tZXNzYWdlID0gbWVzc2FnZTsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGdldEFjdGlvbigpIHsKKwkJcmV0dXJuIGFjdGlvbjsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRBY3Rpb24oU3RyaW5nIGFjdGlvbikgeworCQl0aGlzLmFjdGlvbiA9IGFjdGlvbjsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGdldEVycm9yKCkgeworCQlyZXR1cm4gZXJyb3I7CisJfQorCisJcHVibGljIHZvaWQgc2V0RXJyb3IoU3RyaW5nIGVycm9yKSB7CisJCXRoaXMuZXJyb3IgPSBlcnJvcjsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGdldEZpbGVOYW1lKCkgeworCQlyZXR1cm4gZmlsZU5hbWU7CisJfQorCisJcHVibGljIHZvaWQgc2V0RmlsZU5hbWUoU3RyaW5nIGZpbGVOYW1lKSB7CisJCXRoaXMuZmlsZU5hbWUgPSBmaWxlTmFtZTsKKwl9CisKKwlwdWJsaWMgYm9vbGVhbiBpc0hhc0Vycm9yKCkgeworCQlyZXR1cm4gaGFzRXJyb3I7CisJfQorCisJcHVibGljIHZvaWQgc2V0SGFzRXJyb3IoYm9vbGVhbiBoYXNFcnJvcikgeworCQl0aGlzLmhhc0Vycm9yID0gaGFzRXJyb3I7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRGaWxlU3lzdGVtTmFtZSgpIHsKKwkJcmV0dXJuIGZpbGVTeXN0ZW1OYW1lOworCX0KKworCXB1YmxpYyB2b2lkIHNldEZpbGVTeXN0ZW1OYW1lKFN0cmluZyBmaWxlU3lzdGVtTmFtZSkgeworCQl0aGlzLmZpbGVTeXN0ZW1OYW1lID0gZmlsZVN5c3RlbU5hbWU7CisJfQorCisJcHVibGljIEJvb2xlYW4gZ2V0SXNQcmVzZW50YXRpb24oKSB7CisJCXJldHVybiBpc1ByZXNlbnRhdGlvbjsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRJc1ByZXNlbnRhdGlvbihCb29sZWFuIGlzUHJlc2VudGF0aW9uKSB7CisJCXRoaXMuaXNQcmVzZW50YXRpb24gPSBpc1ByZXNlbnRhdGlvbjsKKwl9CisKKwlwdWJsaWMgQm9vbGVhbiBnZXRJc0ltYWdlKCkgeworCQlyZXR1cm4gaXNJbWFnZTsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRJc0ltYWdlKEJvb2xlYW4gaXNJbWFnZSkgeworCQl0aGlzLmlzSW1hZ2UgPSBpc0ltYWdlOworCX0KKworCXB1YmxpYyBCb29sZWFuIGdldElzVmlkZW8oKSB7CisJCXJldHVybiBpc1ZpZGVvOworCX0KKworCXB1YmxpYyB2b2lkIHNldElzVmlkZW8oQm9vbGVhbiBpc1ZpZGVvKSB7CisJCXRoaXMuaXNWaWRlbyA9IGlzVmlkZW87CisJfQorCisJcHVibGljIFN0cmluZyBnZXRGaWxlSGFzaCgpIHsKKwkJcmV0dXJuIGZpbGVIYXNoOworCX0KKworCXB1YmxpYyB2b2lkIHNldEZpbGVIYXNoKFN0cmluZyBmaWxlSGFzaCkgeworCQl0aGlzLmZpbGVIYXNoID0gZmlsZUhhc2g7CisJfQorCisJcHVibGljIHZvaWQgc2V0RmlsZUV4cGxvcmVySXRlbShGaWxlRXhwbG9yZXJJdGVtIGZpbGVFeHBsb3Jlckl0ZW0pIHsKKwkJaWYgKGZpbGVFeHBsb3Jlckl0ZW0uZ2V0SXNJbWFnZSgpICE9IG51bGwpIHsKKwkJCWlzSW1hZ2UgPSBmaWxlRXhwbG9yZXJJdGVtLmdldElzSW1hZ2UoKTsKKwkJfQorCQlpZiAoZmlsZUV4cGxvcmVySXRlbS5nZXRJc1ZpZGVvKCkgIT0gbnVsbCkgeworCQkJaXNWaWRlbyA9IGZpbGVFeHBsb3Jlckl0ZW0uZ2V0SXNWaWRlbygpOworCQl9CisJCWlmIChmaWxlRXhwbG9yZXJJdGVtLmdldElzUHJlc2VudGF0aW9uKCkgIT0gbnVsbCkgeworCQkJaXNQcmVzZW50YXRpb24gPSBmaWxlRXhwbG9yZXJJdGVtLmdldElzUHJlc2VudGF0aW9uKCk7CisJCX0KKwkJZmlsZVN5c3RlbU5hbWUgPSBmaWxlRXhwbG9yZXJJdGVtLmdldEZpbGVOYW1lKCk7CisJCWZpbGVIYXNoID0gZmlsZUV4cGxvcmVySXRlbS5nZXRGaWxlSGFzaCgpOworCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2luc3RhbGxhdGlvbi9JbXBvcnRJbml0dmFsdWVzLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvaW5zdGFsbGF0aW9uL0ltcG9ydEluaXR2YWx1ZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTE0YjZmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2luc3RhbGxhdGlvbi9JbXBvcnRJbml0dmFsdWVzLmphdmEKQEAgLTAsMCArMSwxMDM3IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmluc3RhbGxhdGlvbjsKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7CitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworaW1wb3J0IGphdmEudXRpbC5MaW5rZWRIYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5MaW5rZWRMaXN0OworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5NYXA7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5GaWVsZExhbmd1YWdlRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuRmllbGRNYW5hZ2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuTmF2aUJ1aWxkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5kYW8uQ29uZmlndXJhdGlvbkRhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLmRhby5FcnJvckRhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLmRhby5PbVRpbWVab25lRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY2FsZW5kYXIuZGFvcy5BcHBvaW50bWVudENhdGVnb3J5RGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY2FsZW5kYXIuZGFvcy5BcHBvaW50bWVudFJlbWluZGVyVHlwRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY29uZmVyZW5jZS5Qb2xsTWFuYWdlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNvbmZlcmVuY2UuUm9vbU1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jb25mZXJlbmNlLmRhby5TaXBEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLk9yZ2FuaXNhdGlvbk1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLlVzZXJNYW5hZ2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEudXNlci5kYW8uU2FsdXRhdGlvbkRhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuZGFvLlN0YXRlRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEudXNlci5kYW8uVXNlcnNEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuT21UaW1lWm9uZTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5sYW5nLkZpZWxkTGFuZ3VhZ2U7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMubGFuZy5GaWVsZGxhbmd1YWdlc3ZhbHVlczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5sYW5nLkZpZWxkdmFsdWVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLkltcG9ydEhlbHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5PbUZpbGVIZWxwZXI7CitpbXBvcnQgb3JnLmRvbTRqLkRvY3VtZW50OworaW1wb3J0IG9yZy5kb200ai5FbGVtZW50OworaW1wb3J0IG9yZy5kb200ai5pby5TQVhSZWFkZXI7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKKworcHVibGljIGNsYXNzIEltcG9ydEluaXR2YWx1ZXMgeworCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcigKKwkJCUltcG9ydEluaXR2YWx1ZXMuY2xhc3MsIE9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKworCUBBdXRvd2lyZWQKKwlwcml2YXRlIENvbmZpZ3VyYXRpb25EYW8gY29uZmlndXJhdGlvbkRhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBVc2VyTWFuYWdlciB1c2VyTWFuYWdlcjsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBVc2Vyc0RhbyB1c2Vyc0RhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBGaWVsZE1hbmFnZXIgZmllbGRNYW5hZ2VyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEZpZWxkTGFuZ3VhZ2VEYW8gZmllbGRMYW5ndWFnZURhb0ltcGw7CisJQEF1dG93aXJlZAorCXByaXZhdGUgU3RhdGVEYW8gc3RhdGVtYW5hZ2VtZW50OworCUBBdXRvd2lyZWQKKwlwcml2YXRlIE9tVGltZVpvbmVEYW8gb21UaW1lWm9uZURhb0ltcGw7CisJQEF1dG93aXJlZAorCXByaXZhdGUgTmF2aUJ1aWxkZXIgbmF2aW1hbmFnZW1lbnQ7CisJQEF1dG93aXJlZAorCXByaXZhdGUgRXJyb3JEYW8gZXJyb3JNYW5hZ2VtZW50OworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFNhbHV0YXRpb25EYW8gc2FsdXRhdGlvbm1hbmFnZW1lbnQ7CisJQEF1dG93aXJlZAorCXByaXZhdGUgT3JnYW5pc2F0aW9uTWFuYWdlciBvcmdhbmlzYXRpb25NYW5hZ2VyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFJvb21NYW5hZ2VyIHJvb21NYW5hZ2VyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEFwcG9pbnRtZW50Q2F0ZWdvcnlEYW8gYXBwb2ludG1lbnRDYXRlZ29yeURhb0ltcGw7CisJQEF1dG93aXJlZAorCXByaXZhdGUgQXBwb2ludG1lbnRSZW1pbmRlclR5cERhbyBhcHBvaW50bWVudFJlbWluZGVyVHlwRGFvSW1wbDsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBQb2xsTWFuYWdlciBwb2xsTWFuYWdlcjsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBTaXBEYW8gc2lwRGFvOworCisJcHVibGljIHZvaWQgbG9hZE1haW5NZW51KCkgeworCisJCXVzZXJNYW5hZ2VyLmFkZFVzZXJMZXZlbCgiVXNlciIsIDEpOworCQl1c2VyTWFuYWdlci5hZGRVc2VyTGV2ZWwoIk1vZGVyYXRvciIsIDIpOworCQl1c2VyTWFuYWdlci5hZGRVc2VyTGV2ZWwoIkFkbWluIiwgMyk7CisJCXVzZXJNYW5hZ2VyLmFkZFVzZXJMZXZlbCgiV2ViLVNlcnZpY2UgKG9ubHkgYWNjZXNzIHZpYSBTT0FQKSIsIDQpOworCQlsb2cuZGVidWcoIlVzZXJMZXZlbHMgQURERUQiKTsKKworCQkvKgorCQkgKiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgRGFzaGJvYXJkIE1lbnUgUG9pbnRzCisJCSAqLworCQluYXZpbWFuYWdlbWVudC5hZGRHbG9iYWxTdHJ1Y3R1cmUoImhvbWUiLCAxLCAxMjQsIGZhbHNlLCB0cnVlLCAxLAorCQkJCSJob21lIiwgZmFsc2UsIDU4MkwpOworCQluYXZpbWFuYWdlbWVudC5hZGRNYWluU3RydWN0dXJlKCJkYXNoYm9hcmRNb2R1bGVTdGFydFNjcmVlbiIsIG51bGwsIDEsCisJCQkJMjkwLCB0cnVlLCBmYWxzZSwgMSwgIkRhc2hib2FyZCBNb2R1bGUiLCAxLCBmYWxzZSwgMTQ1MEwpOworCQluYXZpbWFuYWdlbWVudC5hZGRNYWluU3RydWN0dXJlKCJkYXNoYm9hcmRNb2R1bGVDYWxlbmRhciIsIG51bGwsIDIsCisJCQkJMjkxLCB0cnVlLCBmYWxzZSwgMSwgIk1vZHVsZSBDYWxlbmRhciIsIDEsIGZhbHNlLCAxNDUxTCk7CisKKwkJLyoKKwkJICogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIENvbmZlcmVuY2UgTWVudSBQb2ludHMKKwkJICovCisKKwkJbmF2aW1hbmFnZW1lbnQuYWRkR2xvYmFsU3RydWN0dXJlKCJtZWV0aW5ncyIsIDIsIDc5MiwgZmFsc2UsIHRydWUsIDEsCisJCQkJIkxpc3Qgb2YgQ29uZmVyZW5jZSBSb29tcyBHbG9iYWwgTmF2aSIsIGZhbHNlLCA3OTNMKTsKKworCQluYXZpbWFuYWdlbWVudC5hZGRNYWluU3RydWN0dXJlKCJjb25mZXJlbmNlTW9kdWxlUm9vbUxpc3QiLAorCQkJCSJwdWJsaWNUYWJCdXR0b24iLCAxLCA3NzcsIHRydWUsIGZhbHNlLCAxLAorCQkJCSJMaXN0IG9mIENvbmZlcmVuY2UgUm9vbXMgTWFpbiBOYXZpIiwgMiwgZmFsc2UsIDE1MDZMKTsKKworCQluYXZpbWFuYWdlbWVudC5hZGRNYWluU3RydWN0dXJlKCJjb25mZXJlbmNlTW9kdWxlUm9vbUxpc3QiLAorCQkJCSJwcml2YXRlVGFiQnV0dG9uIiwgMiwgNzc5LCB0cnVlLCBmYWxzZSwgMSwKKwkJCQkiTGlzdCBvZiBDb25mZXJlbmNlIFJvb21zIE1haW4gTmF2aSIsIDIsIGZhbHNlLCAxNTA3TCk7CisKKwkJbmF2aW1hbmFnZW1lbnQuYWRkTWFpblN0cnVjdHVyZSgiY29uZmVyZW5jZU1vZHVsZVJvb21MaXN0IiwKKwkJCQkibXlUYWJCdXR0b24iLCAzLCA3ODEsIHRydWUsIGZhbHNlLCAxLAorCQkJCSJMaXN0IG9mIENvbmZlcmVuY2UgUm9vbXMgTWFpbiBOYXZpIiwgMiwgZmFsc2UsIDE1MDhMKTsKKworCQkvKgorCQkgKiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgUmVjb3JkaW5nIE1lbnUgUG9pbnRzIC0gZGlzYWJsZWQgYnkgZGVmYXVsdAorCQkgKi8KKworCQluYXZpbWFuYWdlbWVudC5hZGRHbG9iYWxTdHJ1Y3R1cmUoInJlY29yZCIsIDMsIDM5NSwgZmFsc2UsIHRydWUsIDEsCisJCQkJInJlY29yZCIsIGZhbHNlLCA1ODNMKTsKKwkJbmF2aW1hbmFnZW1lbnQuYWRkTWFpblN0cnVjdHVyZSgicmVjb3JkTW9kdWxlIiwgbnVsbCwgMSwgMzk1LCB0cnVlLAorCQkJCWZhbHNlLCAxLCAiTW9kdWxlIFJlY29yZGluZyBQbGF5ZXIiLCAzLCBmYWxzZSwgMTQ1MkwpOworCisJCS8qCisJCSAqICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyBFdmVudCBNZW51IFBvaW50cworCQkgKi8KKworCQluYXZpbWFuYWdlbWVudC5hZGRHbG9iYWxTdHJ1Y3R1cmUoImV2ZW50cyIsIDQsIDMsIGZhbHNlLCB0cnVlLCAxLAorCQkJCSJMaXN0IG9mIEV2ZW50IFJvb21zIEdsb2JhbCBOYXZpIiwgdHJ1ZSwgNTg1TCk7CisKKwkJbmF2aW1hbmFnZW1lbnQKKwkJCQkuYWRkTWFpblN0cnVjdHVyZSgiZXZlbnRNb2R1bGVSb29tTGlzdCIsIG51bGwsIDEsIDMsIHRydWUsCisJCQkJCQlmYWxzZSwgMSwgIkxpc3Qgb2YgRXZlbnQgUm9vbXMgTWFpbiBOYXZpIiwgNCwgZmFsc2UsCisJCQkJCQludWxsKTsKKworCQkvKgorCQkgKiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgTW9kZXJhdGlvbiBNZW51IFBvaW50cyAtIGRpc2FibGVkIGJ5IGRlZmF1bHQKKwkJICovCisJCW5hdmltYW5hZ2VtZW50LmFkZEdsb2JhbFN0cnVjdHVyZSgibW9kZXJhdGUiLCA1LCA2NDlMLCBmYWxzZSwgdHJ1ZSwgMiwKKwkJCQkiTW9kZXJhdGlvbiBNZW51IiwgdHJ1ZSwgNjYwTCk7CisKKwkJbmF2aW1hbmFnZW1lbnQuYWRkTWFpblN0cnVjdHVyZSgibW9kZXJhdG9yTW9kdWxlVXNlciIsIG51bGwsIDEsIDY1MCwKKwkJCQl0cnVlLCBmYWxzZSwgMSwgIk1vZGVyYXRlIFVzZXJzIiwgNSwgZmFsc2UsIG51bGwpOworCisJCW5hdmltYW5hZ2VtZW50LmFkZE1haW5TdHJ1Y3R1cmUoIm1vZGVyYXRvck1vZHVsZVJvb20iLCBudWxsLCAxLCA2NTEsCisJCQkJdHJ1ZSwgZmFsc2UsIDEsICJNb2RlcmF0ZSBSb29tcyIsIDUsIGZhbHNlLCBudWxsKTsKKworCQkvKgorCQkgKiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMgQWRtaW5pc3RyYXRpb24gTWVudSBQb2ludHMKKwkJICovCisKKwkJbmF2aW1hbmFnZW1lbnQuYWRkR2xvYmFsU3RydWN0dXJlKCJhZG1pbiIsIDYsIDYsIGZhbHNlLCB0cnVlLCAzLAorCQkJCSJBZG1pbmlzdHJhdGlvbiBNZW51IiwgZmFsc2UsIDU4NkwpOworCisJCW5hdmltYW5hZ2VtZW50LmFkZE1haW5TdHJ1Y3R1cmUoImFkbWluTW9kdWxlVXNlciIsIG51bGwsIDE0LCAxMjUsIHRydWUsCisJCQkJZmFsc2UsIDIsICJBZG1pbmlzdHJhdGlvbiBvZiBVc2VycyIsIDYsIGZhbHNlLCAxNDU0TCk7CisKKwkJbmF2aW1hbmFnZW1lbnQuYWRkTWFpblN0cnVjdHVyZSgiYWRtaW5Nb2R1bGVDb25uZWN0aW9ucyIsIG51bGwsIDE1LAorCQkJCTU5NywgdHJ1ZSwgZmFsc2UsIDMsICJBbWluaXN0cmF0aW9uIG9mIENvbm5lY3Rpb25zIiwgNiwgZmFsc2UsCisJCQkJMTQ1NUwpOworCisJCW5hdmltYW5hZ2VtZW50LmFkZE1haW5TdHJ1Y3R1cmUoImFkbWluTW9kdWxlT3JnIiwgbnVsbCwgMTYsIDEyNywgdHJ1ZSwKKwkJCQlmYWxzZSwgMywgIkFkbWluaXN0cmF0aW9uIG9mIE9yZ2FuaXphdGlvbnMiLCA2LCBmYWxzZSwgMTQ1NkwpOworCisJCW5hdmltYW5hZ2VtZW50LmFkZE1haW5TdHJ1Y3R1cmUoImFkbWluTW9kdWxlUm9vbSIsIG51bGwsIDE3LCAxODYsIHRydWUsCisJCQkJZmFsc2UsIDMsICJBZG1pbmlzdHJhdGlvbiBvZiBSb29tcyIsIDYsIGZhbHNlLCAxNDU3TCk7CisKKwkJbmF2aW1hbmFnZW1lbnQuYWRkTWFpblN0cnVjdHVyZSgiYWRtaW5Nb2R1bGVDb25maWd1cmF0aW9uIiwgbnVsbCwgMTgsCisJCQkJMjYzLCB0cnVlLCBmYWxzZSwgMywgIkFkbWluaXN0cmF0aW9uIG9mIENvbmZpZ3VyYXRpb24iLCA2LAorCQkJCWZhbHNlLCAxNDU4TCk7CisKKwkJbmF2aW1hbmFnZW1lbnQuYWRkTWFpblN0cnVjdHVyZSgiYWRtaW5Nb2R1bGVMYW5ndWFnZXMiLCBudWxsLCAxOSwgMzQ4LAorCQkJCXRydWUsIGZhbHNlLCAzLCAiQWRtaW5pc3RyYXRpb24gb2YgTGFuZ3VhZ2VzIiwgNiwgZmFsc2UsIDE0NTlMKTsKKworCQluYXZpbWFuYWdlbWVudC5hZGRNYWluU3RydWN0dXJlKCJhZG1pbk1vZHVsZUxEQVAiLCBudWxsLCAyMCwgMTEwMywKKwkJCQl0cnVlLCBmYWxzZSwgMywgIkFkbWluaXN0cmF0aW9uIG9mIExEQVAgQ29uZmlncyIsIDYsIGZhbHNlLAorCQkJCTE0NjBMKTsKKworCQluYXZpbWFuYWdlbWVudC5hZGRNYWluU3RydWN0dXJlKCJhZG1pbk1vZHVsZUJhY2t1cCIsIG51bGwsIDIxLCAzNjcsCisJCQkJdHJ1ZSwgZmFsc2UsIDMsICJBZG1pbmlzdHJhdGlvbiBvZiBCYWNrdXBzIiwgNiwgZmFsc2UsIDE0NjFMKTsKKworCQluYXZpbWFuYWdlbWVudC5hZGRNYWluU3RydWN0dXJlKCJhZG1pbk1vZHVsZVNlcnZlcnMiLCBudWxsLCAyMiwgMTQ5OCwKKwkJCQl0cnVlLCBmYWxzZSwgMywgIkFkbWluaXN0cmF0aW9uIG9mIFNlcnZlcnMiLCA2LCBmYWxzZSwgMTQ5OUwpOworCQlsb2cuZGVidWcoIk1haW5NZW51IEFEREVEIik7CisKKwkJZXJyb3JNYW5hZ2VtZW50LmFkZEVycm9yVHlwZShuZXcgTG9uZygxKSwgbmV3IExvbmcoMzIyKSk7CisJCWVycm9yTWFuYWdlbWVudC5hZGRFcnJvclR5cGUobmV3IExvbmcoMiksIG5ldyBMb25nKDMyMykpOworCQlsb2cuZGVidWcoIkVycm9yIHR5cGVzIEFEREVEIik7CisJfQorCisJcHVibGljIHZvaWQgbG9hZEVycm9yTWFwcGluZ3NGcm9tWE1MKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKwkJU0FYUmVhZGVyIHJlYWRlciA9IG5ldyBTQVhSZWFkZXIoKTsKKwkJRG9jdW1lbnQgZG9jdW1lbnQgPSByZWFkZXIucmVhZChuZXcgRmlsZSgKKwkJCQlPbUZpbGVIZWxwZXIuZ2V0TGFuZ3VhZ2VzRGlyKCksIE9tRmlsZUhlbHBlci5uYW1lT2ZFcnJvckZpbGUpKTsKKworCQlFbGVtZW50IHJvb3QgPSBkb2N1bWVudC5nZXRSb290RWxlbWVudCgpOworCisJCWZvciAoQFN1cHByZXNzV2FybmluZ3MoInVuY2hlY2tlZCIpCisJCUl0ZXJhdG9yPEVsZW1lbnQ+IGl0ID0gcm9vdC5lbGVtZW50SXRlcmF0b3IoInJvdyIpOyBpdC5oYXNOZXh0KCk7KSB7CisKKwkJCUVsZW1lbnQgcm93ID0gaXQubmV4dCgpOworCisJCQlMb25nIGVycm9ydmFsdWVzX2lkID0gbnVsbDsKKwkJCUxvbmcgZmllbGR2YWx1ZXNfaWQgPSBudWxsOworCQkJTG9uZyBlcnJvcnR5cGVfaWQgPSBudWxsOworCisJCQlmb3IgKEBTdXBwcmVzc1dhcm5pbmdzKCJ1bmNoZWNrZWQiKQorCQkJSXRlcmF0b3I8RWxlbWVudD4gaXRTdWIgPSByb3cuZWxlbWVudEl0ZXJhdG9yKCJmaWVsZCIpOyBpdFN1YgorCQkJCQkuaGFzTmV4dCgpOykgeworCisJCQkJRWxlbWVudCBmaWVsZCA9IGl0U3ViLm5leHQoKTsKKworCQkJCVN0cmluZyBuYW1lID0gZmllbGQuYXR0cmlidXRlVmFsdWUoIm5hbWUiKTsKKwkJCQlTdHJpbmcgdGV4dCA9IGZpZWxkLmdldFRleHQoKTsKKwkJCQkvLyBTeXN0ZW0ub3V0LnByaW50bG4oIk5BTUUgfCBURVhUICIrbmFtZSsiIHwgIit0ZXh0KTsKKwkJCQlpZiAobmFtZS5lcXVhbHMoImVycm9ydmFsdWVzX2lkIikpCisJCQkJCWVycm9ydmFsdWVzX2lkID0gTG9uZy52YWx1ZU9mKHRleHQpLmxvbmdWYWx1ZSgpOworCQkJCWlmIChuYW1lLmVxdWFscygiZmllbGR2YWx1ZXNfaWQiKSkKKwkJCQkJZmllbGR2YWx1ZXNfaWQgPSBMb25nLnZhbHVlT2YodGV4dCkubG9uZ1ZhbHVlKCk7CisJCQkJaWYgKG5hbWUuZXF1YWxzKCJlcnJvcnR5cGVfaWQiKSkKKwkJCQkJZXJyb3J0eXBlX2lkID0gTG9uZy52YWx1ZU9mKHRleHQpLmxvbmdWYWx1ZSgpOworCQkJfQorCisJCQllcnJvck1hbmFnZW1lbnQuYWRkRXJyb3JWYWx1ZXMoZXJyb3J2YWx1ZXNfaWQsIGVycm9ydHlwZV9pZCwKKwkJCQkJZmllbGR2YWx1ZXNfaWQpOworCQl9CisJCWxvZy5kZWJ1ZygiRXJyb3JNYXBwaW5ncyBBRERFRCIpOworCX0KKworCXB1YmxpYyB2b2lkIGxvYWRTYWx1dGF0aW9ucygpIHsKKwkJc2FsdXRhdGlvbm1hbmFnZW1lbnQuYWRkVXNlclNhbHV0YXRpb24oIk1yIiwgMjYxKTsKKwkJc2FsdXRhdGlvbm1hbmFnZW1lbnQuYWRkVXNlclNhbHV0YXRpb24oIk1zIiwgMjYyKTsKKwkJc2FsdXRhdGlvbm1hbmFnZW1lbnQuYWRkVXNlclNhbHV0YXRpb24oIk1ycyIsIDg0MSk7CisJCXNhbHV0YXRpb25tYW5hZ2VtZW50LmFkZFVzZXJTYWx1dGF0aW9uKCJEciIsIDg0Mik7CisJCXNhbHV0YXRpb25tYW5hZ2VtZW50LmFkZFVzZXJTYWx1dGF0aW9uKCJQcm9mIiwgMTQ2NCk7CisJCWxvZy5kZWJ1ZygiU2FsdXRhdGlvbnMgQURERUQiKTsKKwl9CisKKwlwdWJsaWMgdm9pZCBsb2FkQ29uZmlndXJhdGlvbihJbnN0YWxsYXRpb25Db25maWcgY2ZnKSB7CisJCWNvbmZpZ3VyYXRpb25EYW8KKwkJCQkuYWRkQ29uZkJ5S2V5KAorCQkJCQkJImNyeXB0X0NsYXNzTmFtZSIsCisJCQkJCQljZmcuY3J5cHRDbGFzc05hbWUsCisJCQkJCQludWxsLAorCQkJCQkJIlRoaXMgQ2xhc3MgaXMgdXNlZCBmb3IgQXV0aGVudGlmaWNhdGlvbi1DcnlwdGluZy4gIgorCQkJCQkJCQkrICJCZSBjYXJlZnVsbCB3aGF0IHlvdSBkbyBoZXJlISBJZiB5b3UgY2hhbmdlIGl0IHdoaWxlICIKKwkJCQkJCQkJKyAicnVubmluZyBwcmV2aW91cyBQYXNzIG9mIHVzZXJzIHdpbGwgbm90IGJlIHdvcmtpZ24gYW55bW9yZSEgIgorCQkJCQkJCQkrICJmb3IgbW9yZSBJbmZvcm1hdGlvbiBzZWUgaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnL0N1c3RvbUNyeXB0TWVjaGFuaXNtLmh0bWwiKTsKKworCQljb25maWd1cmF0aW9uRGFvLmFkZENvbmZCeUtleSgiYWxsb3dfZnJvbnRlbmRfcmVnaXN0ZXIiLAorCQkJCWNmZy5hbGxvd0Zyb250ZW5kUmVnaXN0ZXIsIG51bGwsICIiKTsKKworCQljb25maWd1cmF0aW9uRGFvLmFkZENvbmZCeUtleSgiZGVmYXVsdF9ncm91cF9pZCIsICIxIiwgbnVsbCwgIiIpOworCisJCS8vIHRoaXMgZG9tYWluX2lkIGlzIHRoZSBPcmdhbmlzYXRpb24gb2YgdXNlcnMgd2hvIHJlZ2lzdGVyIHRocm91Z2ggdGhlCisJCS8vIGZyb250ZW5kCisJCWNvbmZpZ3VyYXRpb25EYW8uYWRkQ29uZkJ5S2V5KCJkZWZhdWx0X2RvbWFpbl9pZCIsICIxIiwgbnVsbCwgIiIpOworCisJCS8vICJzbXRwLnhtbGNybS5vcmciCisJCWNvbmZpZ3VyYXRpb25EYW8uYWRkQ29uZkJ5S2V5KCJzbXRwX3NlcnZlciIsIGNmZy5zbXRwU2VydmVyLCBudWxsLAorCQkJCSJ0aGlzIGlzIHRoZSBzbXRwIHNlcnZlciB0byBzZW5kIG1lc3NhZ2VzIik7CisJCS8vIDI1CisJCWNvbmZpZ3VyYXRpb25EYW8uYWRkQ29uZkJ5S2V5KCJzbXRwX3BvcnQiLCBjZmcuc210cFBvcnQsIG51bGwsCisJCQkJInRoaXMgaXMgdGhlIHNtdHAgc2VydmVyIHBvcnQgbm9ybWFsbHkgMjUiKTsKKwkJLy8gIm9wZW5tZWV0aW5nc0B4bWxjcm0ub3JnIgorCQljb25maWd1cmF0aW9uRGFvLmFkZENvbmZCeUtleSgic3lzdGVtX2VtYWlsX2FkZHIiLCBjZmcubWFpbFJlZmVyZXIsCisJCQkJbnVsbCwgImFsbCBzZW5kIEVNYWlscyBieSB0aGUgc3lzdGVtIHdpbGwgaGF2ZSB0aGlzIGFkZHJlc3MiKTsKKwkJLy8gIm9wZW5tZWV0aW5nc0B4bWxjcm0ub3JnIgorCQljb25maWd1cmF0aW9uRGFvLmFkZENvbmZCeUtleSgiZW1haWxfdXNlcm5hbWUiLCBjZmcubWFpbEF1dGhOYW1lLAorCQkJCW51bGwsICJTeXN0ZW0gYXV0aCBlbWFpbCB1c2VybmFtZSIpOworCQkvLworCQljb25maWd1cmF0aW9uRGFvLmFkZENvbmZCeUtleSgiZW1haWxfdXNlcnBhc3MiLCBjZmcubWFpbEF1dGhQYXNzLAorCQkJCW51bGwsICJTeXN0ZW0gYXV0aCBlbWFpbCBwYXNzd29yZCIpOworCisJCWNvbmZpZ3VyYXRpb25EYW8uYWRkQ29uZkJ5S2V5KCJtYWlsLnNtdHAuc3RhcnR0bHMuZW5hYmxlIiwKKwkJCQljZmcubWFpbFVzZVRscywgbnVsbCwgIkVuYWJsZSBUTFMgMT10cnVlLCAwPWZhbHNlIik7CisKKwkJY29uZmlndXJhdGlvbkRhby5hZGRDb25mQnlLZXkoImFwcGxpY2F0aW9uLm5hbWUiLAorCQkJCUNvbmZpZ3VyYXRpb25EYW8uREVGQVVMVF9BUFBfTkFNRSwgbnVsbCwKKwkJCQkiTmFtZSBvZiB0aGUgQnJvd3NlciBUaXRsZSB3aW5kb3ciKTsKKworCQkvLyAiMSIgPT0gIkVOIgorCQljb25maWd1cmF0aW9uRGFvLmFkZENvbmZCeUtleSgiZGVmYXVsdF9sYW5nX2lkIiwgY2ZnLmRlZmF1bHRMYW5nSWQsCisJCQkJbnVsbCwgIkRlZmF1bHQgU3lzdGVtIExhbmd1YWdlIElEIHNlZSBsYW5ndWFnZXMueG1sIik7CisKKwkJY29uZmlndXJhdGlvbkRhby5hZGRDb25mQnlLZXkoInN3ZnRvb2xzX3pvb20iLCBjZmcuc3dmWm9vbSwgbnVsbCwKKwkJCQkiZHBpIGZvciBjb252ZXJzaW9uIG9mIFBERiB0byBTV0YiKTsKKworCQljb25maWd1cmF0aW9uRGFvLmFkZENvbmZCeUtleSgic3dmdG9vbHNfanBlZ3F1YWxpdHkiLAorCQkJCWNmZy5zd2ZKcGVnUXVhbGl0eSwgbnVsbCwKKwkJCQkiY29tcHJlc3Npb24gcXVhbGl0eSBmb3IgY29udmVyc2lvbiBvZiBQREYgdG8gU1dGIik7CisKKwkJY29uZmlndXJhdGlvbkRhby5hZGRDb25mQnlLZXkoInN3ZnRvb2xzX3BhdGgiLCBjZmcuc3dmUGF0aCwgbnVsbCwKKwkJCQkiUGF0aCBUbyBTV0YtVG9vbHMiKTsKKworCQljb25maWd1cmF0aW9uRGFvLmFkZENvbmZCeUtleSgiaW1hZ2VtYWdpY2tfcGF0aCIsCisJCQkJY2ZnLmltYWdlTWFnaWNQYXRoLCBudWxsLCAiUGF0aCB0byBJbWFnZU1hZ2ljayB0b29scyIpOworCisJCWNvbmZpZ3VyYXRpb25EYW8uYWRkQ29uZkJ5S2V5KCJzb3hfcGF0aCIsIGNmZy5zb3hQYXRoLCBudWxsLAorCQkJCSJQYXRoIFRvIFNvWC1Ub29scyIpOworCisJCWNvbmZpZ3VyYXRpb25EYW8uYWRkQ29uZkJ5S2V5KCJmZm1wZWdfcGF0aCIsIGNmZy5mZm1wZWdQYXRoLCBudWxsLAorCQkJCSJQYXRoIFRvIEZGTVBFRyIpOworCQljb25maWd1cmF0aW9uRGFvCisJCQkJLmFkZENvbmZCeUtleSgKKwkJCQkJCSJvZmZpY2UucGF0aCIsCisJCQkJCQljZmcub2ZmaWNlUGF0aCwKKwkJCQkJCW51bGwsCisJCQkJCQkiVGhlIHBhdGggdG8gT3Blbk9mZmljZS9MaWJyZU9mZmljZSAob3B0aW9uYWwpIHBsZWFzZSBzZXQgdGhpcyB0byB0aGUgcmVhbCBwYXRoIGluIGNhc2Ugam9kY29udmVydGVyIGlzIHVuYWJsZSB0byBmaW5kIE9wZW5PZmZpY2UvTGlicmVPZmZpY2UgaW5zdGFsbGF0aW9uIGF1dG9tYXRpY2FsbHkiKTsKKwkJY29uZmlndXJhdGlvbkRhbworCQkJCS5hZGRDb25mQnlLZXkoCisJCQkJCQkiam9kLnBhdGgiLAorCQkJCQkJY2ZnLmpvZFBhdGgsCisJCQkJCQludWxsLAorCQkJCQkJIlRoZSBwYXRoIHRvIEpPRCBsaWJyYXJ5IChodHRwOi8vY29kZS5nb29nbGUuY29tL3Avam9kY29udmVydGVyKSwgY29uZmlndXJlIHRoZSBwYXRoIHRvIHBvaW50IHRvIHRoZSBsaWIgZGlyZWN0b3J5IG9mIEpPRCB0aGF0IGNvbnRhaW5zIGFsc28gdGhlIGpvZGNvbnZlcnRlci1jb3JlLXZlcnNpb24uamFyIik7CisKKwkJY29uZmlndXJhdGlvbkRhby5hZGRDb25mQnlLZXkoInJzc19mZWVkMSIsIGNmZy51cmxGZWVkLCBudWxsLAorCQkJCSJGZWVkIFVSTCIpOworCisJCWNvbmZpZ3VyYXRpb25EYW8uYWRkQ29uZkJ5S2V5KCJyc3NfZmVlZDIiLCBjZmcudXJsRmVlZDIsIG51bGwsCisJCQkJIkZlZWQgVVJMIDIiKTsKKworCQljb25maWd1cmF0aW9uRGFvCisJCQkJLmFkZENvbmZCeUtleSgic2VuZEVtYWlsQXRSZWdpc3RlciIsIGNmZy5zZW5kRW1haWxBdFJlZ2lzdGVyLAorCQkJCQkJbnVsbCwKKwkJCQkJCSJVc2VyIGdldCBhIEVNYWlsIHdpdGggdGhlaXIgQWNjb3VudCBkYXRhLiBWYWx1ZXM6IDAoTm8pIG9yIDEoWWVzKSIpOworCisJCWNvbmZpZ3VyYXRpb25EYW8KKwkJCQkuYWRkQ29uZkJ5S2V5KAorCQkJCQkJInNlbmRFbWFpbFdpdGhWZXJmaWNhdGlvbkNvZGUiLAorCQkJCQkJY2ZnLnNlbmRFbWFpbFdpdGhWZXJmaWNhdGlvbkNvZGUsCisJCQkJCQludWxsLAorCQkJCQkJIlVzZXIgbXVzdCBhY3RpdmF0ZSB0aGVpciBhY2NvdW50IGJ5IGNsaWNraW5nIG9uIHRoZSAiCisJCQkJCQkJCSsgImFjdGl2YXRpb24tbGluayBpbiB0aGUgcmVnaXN0ZXJpbmcgRW1haWwuIFZhbHVlczogMChObykgb3IgMShZZXMpICIKKwkJCQkJCQkJKyAiSXQgbWFrZXMgbm8gc2Vuc2UgdG8gbWFrZSB0aGlzKHNlbmRFbWFpbFdpdGhWZXJmaWNhdGlvbkNvZGUpIDEoWWVzKSB3aGlsZSAiCisJCQkJCQkJCSsgInNlbmRFbWFpbEF0UmVnaXN0ZXIgaXMgMChObykgY2F1c2UgeW91IG5lZWQiCisJCQkJCQkJCSsgInRvIHNlbmQgYSBFTWFpbC4iKTsKKwkJY29uZmlndXJhdGlvbkRhbworCQkJCS5hZGRDb25mQnlLZXkoCisJCQkJCQkiZGVmYXVsdF9leHBvcnRfZm9udCIsCisJCQkJCQljZmcuZGVmYXVsdEV4cG9ydEZvbnQsCisJCQkJCQludWxsLAorCQkJCQkJIlRoZSBOYW1lIG9mIHRoZSBGb250IHVzZWQgZm9yIGV4cG9ydGluZy9yZW5kZXIgSW1hZ2VzIGZyb20gV2hpdGVib2FyZCIKKwkJCQkJCQkJKyAiVGhlIEZvbnQgaGFzIHRvIGV4aXN0IG9uIHRoZSBTZXJ2ZXIgd2hpY2ggcnVucyBSZWQ1Iik7CisKKwkJY29uZmlndXJhdGlvbkRhby5hZGRDb25mQnlLZXkoImRlZmF1bHQucnBjLnVzZXJpZCIsICIiICsgMSwgbnVsbCwKKwkJCQkiVGhlIFVzZXItSWQgb2YgdGhlIENvbnRyb2wgVXNlciBpbiBPcGVuTWVldGluZ3MiKTsKKworCQkvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKwkJLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisJCS8vIHJlZDVTSVAgSW50ZWdyYXRpb24gQ29uaWd1cmF0aW9uIFZhbHVlcworCQkvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworCQljb25maWd1cmF0aW9uRGFvLmFkZENvbmZCeUtleSgicmVkNXNpcC5lbmFibGUiLCBjZmcucmVkNVNpcEVuYWJsZSwKKwkJCQludWxsLCAiRW5hYmxlIHRvIGVuYWJsZSB0aGUgcmVkNVNJUCBpbnRlZ3JhdGlvbiAiKTsKKwkJY29uZmlndXJhdGlvbkRhby5hZGRDb25mQnlLZXkoInJlZDVzaXAucm9vbV9wcmVmaXgiLAorCQkJCWNmZy5yZWQ1U2lwUm9vbVByZWZpeCwgbnVsbCwKKwkJCQkiTnVtZXJpY2FsIHByZWZpeCBmb3IgT00gcm9vbXMgY3JlYXRlZCBpbnNpZGUgdGhlIFNJUCIpOworCQljb25maWd1cmF0aW9uRGFvLmFkZENvbmZCeUtleSgicmVkNXNpcC5leHRlbl9jb250ZXh0IiwKKwkJCQljZmcucmVkNVNpcEV4dGVuQ29udGV4dCwgbnVsbCwKKwkJCQkiRW5hYmxlIHRvIGVuYWJsZSB0aGUgcmVkNVNJUCBpbnRlZ3JhdGlvbiAiKTsKKworCQkvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKwkJLy8gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCisJCS8vIFRpbWV6b25lIHNldHRpbmdzCisJCS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCisJCWNvbmZpZ3VyYXRpb25EYW8uYWRkQ29uZkJ5S2V5KCJkZWZhdWx0LnRpbWV6b25lIiwKKwkJCQljZmcuaWNhbF90aW1lWm9uZSwgbnVsbCwKKwkJCQkiVGhpcyBpcyB0aGUgZGVmYXVsdCB0aW1lem9uZSBpZiBub3RoaW5nIGlzIHNwZWNpZmllZCIpOworCisJCS8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorCQkvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKwkJLy8gYWRkaXRpb25hbCBzZXR0aW5ncworCQkvLyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKworCQljb25maWd1cmF0aW9uRGFvLmFkZENvbmZCeUtleSgic2hvdy5mYWNlYm9vay5sb2dpbiIsICIiICsgMCwgbnVsbCwKKwkJCQkiU2hvdyBGYWNlYm9vayBMb2dpbiIpOworCisJCWNvbmZpZ3VyYXRpb25EYW8KKwkJCQkuYWRkQ29uZkJ5S2V5KAorCQkJCQkJImRlZmF1bHQucXVhbGl0eS5zY3JlZW5zaGFyaW5nIiwKKwkJCQkJCSIxIiwKKwkJCQkJCW51bGwsCisJCQkJCQkiRGVmYXVsdCBzZWxlY3Rpb24gaW4gU2NyZWVuU2hhcmluZyBRdWFsaXR5OlxuIDAgLSBiaWdnZXIgZnJhbWUgcmF0ZSwgbm8gcmVzaXplXG4gMSAtIG5vIHJlc2l6ZVxuIDIgLSBzaXplID09IDEvMiBvZiBzZWxlY3RlZCBhcmVhXG4gMyAtIHNpemUgPT0gMy84IG9mIHNlbGVjdGVkIGFyZWEiKTsKKworCQljb25maWd1cmF0aW9uRGFvLmFkZENvbmZCeUtleSgiZGVmYXVsdC5kYXNoYm9hcmQudGFiIiwgIjAiLCBudWxsLAorCQkJCSJEZWZhdWx0IHNlbGVjdGlvbiBpbiBEYXNoYm9hcmQgdGFicyBhcyB0YWItaW5kZXgtaWQiKTsKKworCQljb25maWd1cmF0aW9uRGFvLmFkZENvbmZCeUtleSgiZGFzaGJvYXJkLnNob3cubXlyb29tcyIsICIxIiwgbnVsbCwKKwkJCQkiU2hvdyBNeSBSb29tcyBUYWIiKTsKKworCQljb25maWd1cmF0aW9uRGFvLmFkZENvbmZCeUtleSgiZGFzaGJvYXJkLnNob3cuY2hhdCIsICIxIiwgbnVsbCwKKwkJCQkiU2hvdyBDaGF0IFRhYiIpOworCisJCWNvbmZpZ3VyYXRpb25EYW8uYWRkQ29uZkJ5S2V5KCJkYXNoYm9hcmQuc2hvdy5yc3NmZWVkIiwgIjAiLCBudWxsLAorCQkJCSJTaG93IFJTUyBUYWIiKTsKKworCQljb25maWd1cmF0aW9uRGFvCisJCQkJLmFkZENvbmZCeUtleSgKKwkJCQkJCSJzaG93LndoaXRlYm9hcmQuZHJhdy5zdGF0dXMiLAorCQkJCQkJIjAiLAorCQkJCQkJbnVsbCwKKwkJCQkJCSJEaXNwbGF5IG5hbWUgb2YgdGhlIHVzZXIgd2hvIGRyYXcgdGhlIGN1cnJlbnQgb2JqZWN0IChVc2VyIE5hbWUgYXV0by1kaXNhcHBlciBhZnRlciAzIHNlY29uZHMuIik7CisKKwkJY29uZmlndXJhdGlvbkRhby5hZGRDb25mQnlLZXkoIm1heF91cGxvYWRfc2l6ZSIsICIiCisJCQkJKyBJbXBvcnRIZWxwZXIuREVGQVVMVF9NQVhfVVBMT0FEX1NJWkUsIG51bGwsCisJCQkJIk1heGltdW0gc2l6ZSBvZiB1cGxvYWQgZmlsZSAoYnl0ZXMpIik7IC8vIGRlZmF1bHRzIHRvIDFHQgorCisJCWNvbmZpZ3VyYXRpb25EYW8KKwkJCQkuYWRkQ29uZkJ5S2V5KAorCQkJCQkJIm51bWJlci5taW51dGVzLnJlbWluZGVyLnNlbmQiLAorCQkJCQkJIjE1IiwKKwkJCQkJCW51bGwsCisJCQkJCQkiVGhlIG51bWJlciBvZiBtaW51dGVzIGJlZm9yZSByZW1pbmRlciBlbWFpbHMgYXJlIHNlbmQuIFNldCB0byAwIHRvIGRpc2FibGUgcmVtaW5kZXIgZW1haWxzIik7CisKKwkJY29uZmlndXJhdGlvbkRhby5hZGRDb25mQnlLZXkoInVzZXIubG9naW4ubWluaW11bS5sZW5ndGgiLCAiIgorCQkJCSsgSW5zdGFsbGF0aW9uQ29uZmlnLlVTRVJfTE9HSU5fTUlOSU1VTV9MRU5HVEgsIG51bGwsCisJCQkJIk51bWJlciBvZiBjaGFycyBuZWVkZWQgaW4gYSB1c2VyIGxvZ2luIik7CisKKwkJY29uZmlndXJhdGlvbkRhby5hZGRDb25mQnlLZXkoInVzZXIucGFzcy5taW5pbXVtLmxlbmd0aCIsICIiCisJCQkJKyBJbnN0YWxsYXRpb25Db25maWcuVVNFUl9QQVNTV09SRF9NSU5JTVVNX0xFTkdUSCwgbnVsbCwKKwkJCQkiTnVtYmVyIG9mIGNoYXJzIG5lZWRlZCBpbiBhIHVzZXIgbG9naW4iKTsKKworCQljb25maWd1cmF0aW9uRGFvCisJCQkJLmFkZENvbmZCeUtleSgiY2FsZW5kYXIuY29uZmVyZW5jZS5yb29tcy5kZWZhdWx0LnNpemUiLCAiNTAiLAorCQkJCQkJbnVsbCwKKwkJCQkJCSJEZWZhdWx0IG51bWJlciBvZiBwYXJ0aWNpcGFudHMgY29uZmVyZW5jZSByb29tIGNyZWF0ZWQgdmlhIGNhbGVuZGFyIik7CisKKwkJY29uZmlndXJhdGlvbkRhbworCQkJCS5hZGRDb25mQnlLZXkoCisJCQkJCQkidXNlLm9sZC5zdHlsZS5mZm1wZWcubWFwLm9wdGlvbiIsCisJCQkJCQkiMCIsCisJCQkJCQludWxsLAorCQkJCQkJInNwZWNpZnkgYSAxIGlmIHlvdSB3b3VsZCBsaWtlIHRvIHVzZSBvbGQgRkZNUEVHIC1tYXAgb3B0aW9uIHdpdGggMC4wIGluc3RlYWQgb2YgMDowIik7CisKKwkJLy8gZ2l2ZSBleGNsdXNpdmUgYXVkaW8ga2V5IGNvZGUKKwkJY29uZmlndXJhdGlvbkRhbworCQkJCS5hZGRDb25mQnlLZXkoCisJCQkJCQkiZXhjbHVzaXZlLmF1ZGlvLmtleWNvZGUiLAorCQkJCQkJIjEyMyIsCisJCQkJCQludWxsLAorCQkJCQkJIkEgaG90IGtleSBjb2RlIGZvciB0aGUgJ2dpdmUgZXhjbHVzaXZlIGF1ZGlvJyBmdW5jdGlvbmFsaXR5LiBLZXljb2RlIDEyMyBpcyBGMTIiKTsKKwkJLy8gbXV0ZS91bm11dGUgYXVkaW8ga2V5IGNvZGUKKwkJY29uZmlndXJhdGlvbkRhbworCQkJCS5hZGRDb25mQnlLZXkoCisJCQkJCQkibXV0ZS5rZXljb2RlIiwKKwkJCQkJCSIxMTgiLAorCQkJCQkJbnVsbCwKKwkJCQkJCSJBIGhvdCBrZXkgY29kZSBmb3IgdGhlICdtdXRlL3VubXV0ZSBhdWRpbycgZnVuY3Rpb25hbGl0eS4gS2V5Y29kZSAxMTggaXMgRjciKTsKKwkJCisJCS8vIHN5c3RlbS13aWRlIGxkYXAgcGFyYW1zCisJCWNvbmZpZ3VyYXRpb25EYW8uYWRkQ29uZkJ5S2V5KCJsZGFwX2RlZmF1bHRfaWQiLCAiMCIsIG51bGwsCisJCQkJIkxkYXAgZG9tYWluIHNlbGVjdGVkIGJ5IGRlZmF1bHQgaW4gdGhlIGxvZ2luIHNjcmVlbiIpOworCisJCS8vIHNldCBpbnZpdGVyJ3MgZW1haWwgYWRkcmVzcyBhcyBSZXBseVRvIGluIGVtYWlsIGludml0YXRpb25zCisJCWNvbmZpZ3VyYXRpb25EYW8KKwkJCQkuYWRkQ29uZkJ5S2V5KAorCQkJCQkJImludml0ZXIuZW1haWwuYXMucmVwbHl0byIsCisJCQkJCQljZmcucmVwbHlUb09yZ2FuaXplciwKKwkJCQkJCW51bGwsCisJCQkJCQkiU2V0IGludml0ZXIncyBlbWFpbCBhZGRyZXNzIGFzIFJlcGx5VG8gaW4gZW1haWwgaW52aXRhdGlvbnMgKDEgPT0gc2V0LCAwID09IE5PVCBzZXQpIik7CisKKwkJY29uZmlndXJhdGlvbkRhbworCQkJCS5hZGRDb25mQnlLZXkoCisJCQkJCQkiZGVmYXVsdC5sYW5kaW5nLnpvbmUiLAorCQkJCQkJImRhc2hib2FyZC5yb29tcyIsCisJCQkJCQludWxsLAorCQkJCQkJIkFyZWEgdG8gYmUgc2hvd24gdG8gdGhlIHVzZXIgYWZ0ZXIgbG9naW4uIFBvc3NpYmxlIHZhbHVlcyBhcmU6ICIKKwkJCQkJCQkJKyAiZGFzaGJvYXJkLnJvb21zLCBkYXNoYm9hcmQuY2hhdCwgY2FsZW5kYXIsIHJvb21zLnB1YmxpYywgcm9vbXMucHJpdmF0ZSwgcm9vbXMudXNlciIpOworCisJCWxvZy5kZWJ1ZygiQ29uZmlndXJhdGlvbiBBRERFRCIpOworCX0KKworCXB1YmxpYyB2b2lkIGxvYWRSb29tVHlwZXMoKSB7CisJCWxvbmcgY29uZmVyZW5jZV9JZCA9IHJvb21NYW5hZ2VyLmFkZFJvb21UeXBlKAorCQkJCSJjb25mZXJlbmNlICgxLTI1IHVzZXJzKSIsIGZhbHNlKTsKKwkJbG9nLmRlYnVnKCJjb25mZXJlbmNlX0lkOiAiICsgY29uZmVyZW5jZV9JZCk7CisKKwkJLy8gQXVkaWVuY2Ugcm9vbSB0eXBlIGlzIG5vdCBpbiB1c2UgYW55bW9yZQorCQlyb29tTWFuYWdlci5hZGRSb29tVHlwZSgiYXVkaWVuY2UgKDEtNTAgdXNlcnMpIiwgdHJ1ZSk7CisKKwkJbG9uZyByZXN0cmljdGVkX0lkID0gcm9vbU1hbmFnZXIuYWRkUm9vbVR5cGUoCisJCQkJInJlc3RyaWN0ZWQgICgxLTE1MCB1c2VycykiLCBmYWxzZSk7CisJCWxvZy5kZWJ1ZygicmVzdHJpY3RlZF9JZDogIiArIHJlc3RyaWN0ZWRfSWQpOworCisJCWxvbmcgaW50ZXJ2aWV3X0lkID0gcm9vbU1hbmFnZXIuYWRkUm9vbVR5cGUoCisJCQkJImludGVydmlldyAgKDE6MSBtZWV0aW5nIHdpdGggcmVjb3JkaW5nKSIsIGZhbHNlKTsKKwkJbG9nLmRlYnVnKCJpbnRlcnZpZXdfSWQ6ICIgKyBpbnRlcnZpZXdfSWQpOworCisJCS8vIEN1c3RvbSByb29tIHR5cGUgaXMgbm90IGluIHVzZSBhbnltb3JlCisJCXJvb21NYW5hZ2VyLmFkZFJvb21UeXBlKCJjdXN0b20gKGV4dGVuc2lvbiBwb2ludCBmb3IgeW91ciBwbHVnaW4pIiwKKwkJCQl0cnVlKTsKKwkJbG9nLmRlYnVnKCJSb29tVHlwZXMgQURERUQiKTsKKwl9CisKKwlwdWJsaWMgdm9pZCBsb2FkRGVmYXVsdFJvb21zKGJvb2xlYW4gY3JlYXRlUm9vbXMpIHsKKwkJaWYgKGNyZWF0ZVJvb21zKSB7CisJCQkvLyBoYXJkY29kZWQgSURzICh0aGV5IGFyZSBub3QgaW50ZW5kZWQgdG8gYmUgY2hhbmdlZCkKKwkJCWxvbmcgY29uZmVyZW5jZV9JZCA9IDE7CisJCQlsb25nIHJlc3RyaWN0ZWRfSWQgPSAzOworCQkJbG9uZyBpbnRlcnZpZXdfSWQgPSA0OworCisJCQlyb29tTWFuYWdlci5hZGRSb29tKDMsICJwdWJsaWMgSW50ZXJ2aWV3IFJvb20iLCBpbnRlcnZpZXdfSWQsCisJCQkJCSIiLCBuZXcgTG9uZygxNiksIHRydWUsIG51bGwsIGZhbHNlLCBmYWxzZSwgbnVsbCwgZmFsc2UsCisJCQkJCW51bGwsIHRydWUsIGZhbHNlLCB0cnVlLCBmYWxzZSwgIiIsICIiLCBudWxsLCBudWxsLCBudWxsLAorCQkJCQlmYWxzZSwgLy8gaGlkZVRvcEJhcgorCQkJCQlmYWxzZSwgLy8gaGlkZUNoYXQKKwkJCQkJZmFsc2UsIC8vIGhpZGVBY3Rpdml0aWVzQW5kQWN0aW9ucworCQkJCQlmYWxzZSwgLy8gaGlkZUZpbGVzRXhwbG9yZXIKKwkJCQkJZmFsc2UsIC8vIGhpZGVBY3Rpb25zTWVudQorCQkJCQlmYWxzZSwgLy8gaGlkZVNjcmVlblNoYXJpbmcKKwkJCQkJZmFsc2UsIC8vIGhpZGVXaGl0ZWJvYXJkCisJCQkJCWZhbHNlLCAvLyBzaG93TWljcm9waG9uZVN0YXR1cworCQkJCQlmYWxzZSwgLy8gY2hhdE1vZGVyYXRlZAorCQkJCQlmYWxzZSwgLy8gY2hhdE9wZW5lZAorCQkJCQlmYWxzZSwgLy8gZmlsZXNPcGVuZWQKKwkJCQkJZmFsc2UsIC8vIGF1dG9WaWRlb1NlbGVjdAorCQkJCQlmYWxzZSAvL3NpcEVuYWJsZWQKKwkJCQkJKTsKKworCQkJcm9vbU1hbmFnZXIuYWRkUm9vbSgzLCAicHVibGljIENvbmZlcmVuY2UgUm9vbSIsIGNvbmZlcmVuY2VfSWQsCisJCQkJCSIiLCBuZXcgTG9uZygzMiksIHRydWUsIG51bGwsIGZhbHNlLCBmYWxzZSwgbnVsbCwgZmFsc2UsCisJCQkJCW51bGwsIHRydWUsIGZhbHNlLCB0cnVlLCBmYWxzZSwgIiIsICIiLCBudWxsLCBudWxsLCBudWxsLAorCQkJCQlmYWxzZSwgLy8gaGlkZVRvcEJhcgorCQkJCQlmYWxzZSwgLy8gaGlkZUNoYXQKKwkJCQkJZmFsc2UsIC8vIGhpZGVBY3Rpdml0aWVzQW5kQWN0aW9ucworCQkJCQlmYWxzZSwgLy8gaGlkZUZpbGVzRXhwbG9yZXIKKwkJCQkJZmFsc2UsIC8vIGhpZGVBY3Rpb25zTWVudQorCQkJCQlmYWxzZSwgLy8gaGlkZVNjcmVlblNoYXJpbmcKKwkJCQkJZmFsc2UsIC8vIGhpZGVXaGl0ZWJvYXJkCisJCQkJCWZhbHNlLCAvLyBzaG93TWljcm9waG9uZVN0YXR1cworCQkJCQlmYWxzZSwgLy8gY2hhdE1vZGVyYXRlZAorCQkJCQlmYWxzZSwgLy8gY2hhdE9wZW5lZAorCQkJCQlmYWxzZSwgLy8gZmlsZXNPcGVuZWQKKwkJCQkJZmFsc2UsIC8vIGF1dG9WaWRlb1NlbGVjdAorCQkJCQlmYWxzZSAvL3NpcEVuYWJsZWQKKwkJCQkJKTsKKworCQkJcm9vbU1hbmFnZXIuYWRkUm9vbSgzLCAicHVibGljIFZpZGVvIE9ubHkgUm9vbSIsIGNvbmZlcmVuY2VfSWQsCisJCQkJCSIiLCBuZXcgTG9uZygzMiksIHRydWUsIG51bGwsIGZhbHNlLCBmYWxzZSwgbnVsbCwgZmFsc2UsCisJCQkJCW51bGwsIHRydWUsIGZhbHNlLCB0cnVlLCBmYWxzZSwgIiIsICIiLCBudWxsLCBudWxsLCBudWxsLAorCQkJCQlmYWxzZSwgLy8gaGlkZVRvcEJhcgorCQkJCQlmYWxzZSwgLy8gaGlkZUNoYXQKKwkJCQkJZmFsc2UsIC8vIGhpZGVBY3Rpdml0aWVzQW5kQWN0aW9ucworCQkJCQlmYWxzZSwgLy8gaGlkZUZpbGVzRXhwbG9yZXIKKwkJCQkJZmFsc2UsIC8vIGhpZGVBY3Rpb25zTWVudQorCQkJCQlmYWxzZSwgLy8gaGlkZVNjcmVlblNoYXJpbmcKKwkJCQkJdHJ1ZSwgLy8gaGlkZVdoaXRlYm9hcmQKKwkJCQkJZmFsc2UsIC8vIHNob3dNaWNyb3Bob25lU3RhdHVzCisJCQkJCWZhbHNlLCAvLyBjaGF0TW9kZXJhdGVkCisJCQkJCWZhbHNlLCAvLyBjaGF0T3BlbmVkCisJCQkJCWZhbHNlLCAvLyBmaWxlc09wZW5lZAorCQkJCQlmYWxzZSwgLy8gYXV0b1ZpZGVvU2VsZWN0CisJCQkJCWZhbHNlIC8vc2lwRW5hYmxlZAorCQkJCQkpOworCisJCQlyb29tTWFuYWdlci5hZGRSb29tKDMsICJwdWJsaWMgVmlkZW8gQW5kIFdoaXRlYm9hcmQgUm9vbSIsCisJCQkJCWNvbmZlcmVuY2VfSWQsICIiLCBuZXcgTG9uZygzMiksIHRydWUsIG51bGwsIGZhbHNlLCBmYWxzZSwKKwkJCQkJbnVsbCwgZmFsc2UsIG51bGwsIHRydWUsIGZhbHNlLCB0cnVlLCBmYWxzZSwgIiIsICIiLCBudWxsLAorCQkJCQludWxsLCBudWxsLCBmYWxzZSwgLy8gaGlkZVRvcEJhcgorCQkJCQlmYWxzZSwgLy8gaGlkZUNoYXQKKwkJCQkJZmFsc2UsIC8vIGhpZGVBY3Rpdml0aWVzQW5kQWN0aW9ucworCQkJCQlmYWxzZSwgLy8gaGlkZUZpbGVzRXhwbG9yZXIKKwkJCQkJZmFsc2UsIC8vIGhpZGVBY3Rpb25zTWVudQorCQkJCQlmYWxzZSwgLy8gaGlkZVNjcmVlblNoYXJpbmcKKwkJCQkJZmFsc2UsIC8vIGhpZGVXaGl0ZWJvYXJkCisJCQkJCWZhbHNlLCAvLyBzaG93TWljcm9waG9uZVN0YXR1cworCQkJCQlmYWxzZSwgLy8gY2hhdE1vZGVyYXRlZAorCQkJCQlmYWxzZSwgLy8gY2hhdE9wZW5lZAorCQkJCQlmYWxzZSwgLy8gZmlsZXNPcGVuZWQKKwkJCQkJZmFsc2UsIC8vIGF1dG9WaWRlb1NlbGVjdAorCQkJCQlmYWxzZSAvL3NpcEVuYWJsZWQKKwkJCQkJKTsKKworCQkJcm9vbU1hbmFnZXIuYWRkUm9vbSgzLCAicHVibGljIFJlc3RyaWN0ZWQgUm9vbSIsIHJlc3RyaWN0ZWRfSWQsCisJCQkJCSIiLCBuZXcgTG9uZygxMDApLCB0cnVlLCBudWxsLCBmYWxzZSwgZmFsc2UsIG51bGwsIGZhbHNlLAorCQkJCQludWxsLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsICIiLCAiIiwgbnVsbCwgbnVsbCwgbnVsbCwKKwkJCQkJZmFsc2UsIC8vIGhpZGVUb3BCYXIKKwkJCQkJZmFsc2UsIC8vIGhpZGVDaGF0CisJCQkJCWZhbHNlLCAvLyBoaWRlQWN0aXZpdGllc0FuZEFjdGlvbnMKKwkJCQkJZmFsc2UsIC8vIGhpZGVGaWxlc0V4cGxvcmVyCisJCQkJCWZhbHNlLCAvLyBoaWRlQWN0aW9uc01lbnUKKwkJCQkJZmFsc2UsIC8vIGhpZGVTY3JlZW5TaGFyaW5nCisJCQkJCWZhbHNlLCAvLyBoaWRlV2hpdGVib2FyZAorCQkJCQlmYWxzZSwgLy8gc2hvd01pY3JvcGhvbmVTdGF0dXMKKwkJCQkJZmFsc2UsIC8vIGNoYXRNb2RlcmF0ZWQKKwkJCQkJZmFsc2UsIC8vIGNoYXRPcGVuZWQKKwkJCQkJZmFsc2UsIC8vIGZpbGVzT3BlbmVkCisJCQkJCWZhbHNlLCAvLyBhdXRvVmlkZW9TZWxlY3QKKwkJCQkJZmFsc2UgLy9zaXBFbmFibGVkCisJCQkJCSk7CisKKwkJCXJvb21NYW5hZ2VyLmFkZFJvb20oMywgInJlc3RyaWN0ZWQgcm9vbSB3aXRoIG1pY3JvIG9wdGlvbiBzZXQiLAorCQkJCQlyZXN0cmljdGVkX0lkLCAiIiwgbmV3IExvbmcoMTAwKSwgdHJ1ZSwgbnVsbCwgZmFsc2UsIGZhbHNlLAorCQkJCQludWxsLCBmYWxzZSwgbnVsbCwgdHJ1ZSwgZmFsc2UsIHRydWUsIGZhbHNlLCAiIiwgIiIsIG51bGwsCisJCQkJCW51bGwsIG51bGwsIGZhbHNlLCAvLyBoaWRlVG9wQmFyCisJCQkJCWZhbHNlLCAvLyBoaWRlQ2hhdAorCQkJCQlmYWxzZSwgLy8gaGlkZUFjdGl2aXRpZXNBbmRBY3Rpb25zCisJCQkJCWZhbHNlLCAvLyBoaWRlRmlsZXNFeHBsb3JlcgorCQkJCQlmYWxzZSwgLy8gaGlkZUFjdGlvbnNNZW51CisJCQkJCWZhbHNlLCAvLyBoaWRlU2NyZWVuU2hhcmluZworCQkJCQlmYWxzZSwgLy8gaGlkZVdoaXRlYm9hcmQKKwkJCQkJdHJ1ZSwgLy8gc2hvd01pY3JvcGhvbmVTdGF0dXMKKwkJCQkJZmFsc2UsIC8vIGNoYXRNb2RlcmF0ZWQKKwkJCQkJZmFsc2UsIC8vIGNoYXRPcGVuZWQKKwkJCQkJZmFsc2UsIC8vIGZpbGVzT3BlbmVkCisJCQkJCWZhbHNlLCAvLyBhdXRvVmlkZW9TZWxlY3QKKwkJCQkJZmFsc2UgLy9zaXBFbmFibGVkCisJCQkJCSk7CisKKwkJCXJvb21NYW5hZ2VyLmFkZFJvb20oMywgImNvbmZlcmVuY2Ugcm9vbSB3aXRoIG1pY3JvIG9wdGlvbiBzZXQiLAorCQkJCQljb25mZXJlbmNlX0lkLCAiIiwgbmV3IExvbmcoMzIpLCB0cnVlLCBudWxsLCBmYWxzZSwgZmFsc2UsCisJCQkJCW51bGwsIGZhbHNlLCBudWxsLCB0cnVlLCBmYWxzZSwgdHJ1ZSwgZmFsc2UsICIiLCAiIiwgbnVsbCwKKwkJCQkJbnVsbCwgbnVsbCwgZmFsc2UsIC8vIGhpZGVUb3BCYXIKKwkJCQkJZmFsc2UsIC8vIGhpZGVDaGF0CisJCQkJCWZhbHNlLCAvLyBoaWRlQWN0aXZpdGllc0FuZEFjdGlvbnMKKwkJCQkJZmFsc2UsIC8vIGhpZGVGaWxlc0V4cGxvcmVyCisJCQkJCWZhbHNlLCAvLyBoaWRlQWN0aW9uc01lbnUKKwkJCQkJZmFsc2UsIC8vIGhpZGVTY3JlZW5TaGFyaW5nCisJCQkJCWZhbHNlLCAvLyBoaWRlV2hpdGVib2FyZAorCQkJCQl0cnVlLCAvLyBzaG93TWljcm9waG9uZVN0YXR1cworCQkJCQlmYWxzZSwgLy8gY2hhdE1vZGVyYXRlZAorCQkJCQlmYWxzZSwgLy8gY2hhdE9wZW5lZAorCQkJCQlmYWxzZSwgLy8gZmlsZXNPcGVuZWQKKwkJCQkJZmFsc2UsIC8vIGF1dG9WaWRlb1NlbGVjdAorCQkJCQlmYWxzZSAvL3NpcEVuYWJsZWQKKwkJCQkJKTsKKworCQkJbG9uZyByb29tMiA9IHJvb21NYW5hZ2VyLmFkZFJvb20oMywgInByaXZhdGUgQ29uZmVyZW5jZSBSb29tIiwKKwkJCQkJY29uZmVyZW5jZV9JZCwgIiIsIG5ldyBMb25nKDMyKSwgZmFsc2UsIG51bGwsIGZhbHNlLCBmYWxzZSwKKwkJCQkJbnVsbCwgZmFsc2UsIG51bGwsIHRydWUsIGZhbHNlLCB0cnVlLCBmYWxzZSwgIiIsICIiLCBudWxsLAorCQkJCQludWxsLCBudWxsLCBmYWxzZSwgLy8gaGlkZVRvcEJhcgorCQkJCQlmYWxzZSwgLy8gaGlkZUNoYXQKKwkJCQkJZmFsc2UsIC8vIGhpZGVBY3Rpdml0aWVzQW5kQWN0aW9ucworCQkJCQlmYWxzZSwgLy8gaGlkZUZpbGVzRXhwbG9yZXIKKwkJCQkJZmFsc2UsIC8vIGhpZGVBY3Rpb25zTWVudQorCQkJCQlmYWxzZSwgLy8gaGlkZVNjcmVlblNoYXJpbmcKKwkJCQkJZmFsc2UsIC8vIGhpZGVXaGl0ZWJvYXJkCisJCQkJCWZhbHNlLCAvLyBzaG93TWljcm9waG9uZVN0YXR1cworCQkJCQlmYWxzZSwgLy8gY2hhdE1vZGVyYXRlZAorCQkJCQlmYWxzZSwgLy8gY2hhdE9wZW5lZAorCQkJCQlmYWxzZSwgLy8gZmlsZXNPcGVuZWQKKwkJCQkJZmFsc2UsIC8vIGF1dG9WaWRlb1NlbGVjdAorCQkJCQlmYWxzZSAvL3NpcEVuYWJsZWQKKwkJCQkJKTsKKworCQkJcm9vbU1hbmFnZXIuYWRkUm9vbVRvT3JnYW5pc2F0aW9uKDMsIHJvb20yLCAxKTsKKworCQl9CisJfQorCisJcHVibGljIHZvaWQgbG9hZEluaXRVc2VyQW5kT3JnYW5pc2F0aW9uKFN0cmluZyB1c2VybmFtZSwgU3RyaW5nIHVzZXJwYXNzLAorCQkJU3RyaW5nIGVtYWlsLCBTdHJpbmcgZGVmYXVsdE9yZ2FuaXNhdGlvbk5hbWUsIFN0cmluZyBpY2FsX3RpbWVab25lLAorCQkJU3RyaW5nIGNvbmZpZ2RlZmF1bHRMYW5nKSB7CisJCS8vIEFkZCB1c2VyCisJCXRyeSB7CisKKwkJCUxvbmcgZGVmYXVsdF9sYW5nX2lkID0gTG9uZy5wYXJzZUxvbmcoY29uZmlnZGVmYXVsdExhbmcpOworCQkJaWYgKGRlZmF1bHRfbGFuZ19pZCA9PSBudWxsKQorCQkJCWRlZmF1bHRfbGFuZ19pZCA9IDFMOworCisJCQkvLyBBZGQgZGVmYXVsdCBncm91cAorCQkJTG9uZyBvcmdhbmlzYXRpb25faWQgPSBvcmdhbmlzYXRpb25NYW5hZ2VyLmFkZE9yZ2FuaXNhdGlvbigKKwkJCQkJZGVmYXVsdE9yZ2FuaXNhdGlvbk5hbWUsIDEpOworCisJCQkvLyBCYXNlVXJsIGFzIHBhcmFtIGlzIGVtcHR5IGFzIHdlIGRvIG5vdCBzZW5kIGFuIEVNQUlMIGhlcmUKKwkJCUxvbmcgdXNlcl9pZCA9IHVzZXJNYW5hZ2VyLnJlZ2lzdGVyVXNlckluaXQobmV3IExvbmcoMyksIDMsIDEsCisJCQkJCTEsIHVzZXJuYW1lLCB1c2VycGFzcywgImxhc3RuYW1lIiwgImZpcnN0bmFtZSIsIGVtYWlsLAorCQkJCQluZXcgamF2YS51dGlsLkRhdGUoKSwgInN0cmVldCIsICJubyIsICJmYXgiLCAiemlwIiwgMSwKKwkJCQkJInRvd24iLCBkZWZhdWx0X2xhbmdfaWQsIGZhbHNlLAorCQkJCQlBcnJheXMuYXNMaXN0KG9yZ2FuaXNhdGlvbl9pZCksICJwaG9uZSIsIGZhbHNlLCAiIiwgZmFsc2UsCisJCQkJCW9tVGltZVpvbmVEYW9JbXBsLmdldE9tVGltZVpvbmVCeUljYWwoaWNhbF90aW1lWm9uZSksCisJCQkJCWZhbHNlLCAiIiwgIiIsIGZhbHNlLCB0cnVlKTsKKworCQkJbG9nLmRlYnVnKCJJbnN0YWxsYXRpb24gLSBVc2VyIEFkZGVkIHVzZXItSWQgIiArIHVzZXJfaWQpOworCisJCQlpZiAodXNlcl9pZCA8IDApIHsKKwkJCQl0aHJvdyBuZXcgRXhjZXB0aW9uKAorCQkJCQkJIkNvdWxkIG5vdCBhZGQgdXNlciB1c2VyIHJldHVybnMgYSBuZWdhdGl2ZSBlcnJvciBtZXNzYWdlOiAiCisJCQkJCQkJCSsgdXNlcl9pZCk7CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCQlsb2cuZXJyb3IoIltsb2FkSW5pdFVzZXJBbmRPcmdhbmlzYXRpb25dICIsIGUpOworCQl9CisJfQorCisJLyoqCisJICogaW1wb3J0IGFsbCBsYW5ndWFnZSBOYW1lcyBmcm9tIHRoZSB4bWwgZmlsZQorCSAqIAorCSAqIEBwYXJhbSBmaWxlUGF0aAorCSAqIEB0aHJvd3MgRXhjZXB0aW9uCisJICovCisJcHJpdmF0ZSB2b2lkIGxvYWRDb3VudHJpZXNGaWxlcygpIHRocm93cyBFeGNlcHRpb24geworCQlTQVhSZWFkZXIgcmVhZGVyID0gbmV3IFNBWFJlYWRlcigpOworCQlEb2N1bWVudCBkb2N1bWVudCA9IHJlYWRlci5yZWFkKG5ldyBGaWxlKAorCQkJCU9tRmlsZUhlbHBlci5nZXRMYW5ndWFnZXNEaXIoKSwKKwkJCQlPbUZpbGVIZWxwZXIubmFtZU9mQ291bnRyaWVzRmlsZSkpOworCisJCUVsZW1lbnQgcm9vdCA9IGRvY3VtZW50LmdldFJvb3RFbGVtZW50KCk7CisKKwkJZm9yIChAU3VwcHJlc3NXYXJuaW5ncygicmF3dHlwZXMiKQorCQlJdGVyYXRvciBpdCA9IHJvb3QuZWxlbWVudEl0ZXJhdG9yKCJjb3VudHJ5Iik7IGl0Lmhhc05leHQoKTspIHsKKwkJCUVsZW1lbnQgaXRlbSA9IChFbGVtZW50KSBpdC5uZXh0KCk7CisKKwkJCXN0YXRlbWFuYWdlbWVudC5hZGRTdGF0ZShpdGVtLmF0dHJpYnV0ZVZhbHVlKCJuYW1lIiksCisJCQkJCWl0ZW0uYXR0cmlidXRlVmFsdWUoInNob3J0IiksCisJCQkJCUludGVnZXIucGFyc2VJbnQoaXRlbS5hdHRyaWJ1dGVWYWx1ZSgiY29kZSIpKSk7CisJCX0KKwkJbG9nLmRlYnVnKCJDb3VudHJpZXMgQURERUQiKTsKKwl9CisKKwlwcml2YXRlIHZvaWQgbG9hZFRpbWVab25lRmlsZXMoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkJU0FYUmVhZGVyIHJlYWRlciA9IG5ldyBTQVhSZWFkZXIoKTsKKwkJRG9jdW1lbnQgZG9jdW1lbnQgPSByZWFkZXIKKwkJCQkucmVhZChuZXcgRmlsZShPbUZpbGVIZWxwZXIuZ2V0TGFuZ3VhZ2VzRGlyKCksCisJCQkJCQlPbUZpbGVIZWxwZXIubmFtZU9mVGltZVpvbmVGaWxlKSk7CisKKwkJRWxlbWVudCByb290ID0gZG9jdW1lbnQuZ2V0Um9vdEVsZW1lbnQoKTsKKworCQlmb3IgKEBTdXBwcmVzc1dhcm5pbmdzKCJyYXd0eXBlcyIpCisJCUl0ZXJhdG9yIGl0ID0gcm9vdC5lbGVtZW50SXRlcmF0b3IoInRpbWV6b25lIik7IGl0Lmhhc05leHQoKTspIHsKKwkJCUVsZW1lbnQgaXRlbSA9IChFbGVtZW50KSBpdC5uZXh0KCk7CisJCQlTdHJpbmcgdGltZVpvbmVOYW1lID0gaXRlbS5hdHRyaWJ1dGVWYWx1ZSgibmFtZSIpOworCQkJU3RyaW5nIHRpbWVab25lTGFiZWwgPSBpdGVtLmF0dHJpYnV0ZVZhbHVlKCJsYWJlbCIpOworCQkJU3RyaW5nIGlDYWwgPSBpdGVtLmF0dHJpYnV0ZVZhbHVlKCJpQ2FsIik7CisJCQlJbnRlZ2VyIG9yZGVySWQgPSBJbnRlZ2VyLnZhbHVlT2YoaXRlbS5hdHRyaWJ1dGVWYWx1ZSgib3JkZXJJZCIpKTsKKworCQkJb21UaW1lWm9uZURhb0ltcGwuYWRkT21UaW1lWm9uZSh0aW1lWm9uZU5hbWUsIHRpbWVab25lTGFiZWwsIGlDYWwsCisJCQkJCW9yZGVySWQpOworCQl9CisJCWxvZy5kZWJ1ZygiVGltZVpvbmVzIEFEREVEIik7CisJfQorCisJcHVibGljIExpc3Q8T21UaW1lWm9uZT4gZ2V0VGltZVpvbmVzKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCWxvZy5kZWJ1ZygiOjogZ2V0VGltZVpvbmVzIDo6Iik7CisKKwkJTGlzdDxPbVRpbWVab25lPiBvbVRpbWVab25lcyA9IG5ldyBMaW5rZWRMaXN0PE9tVGltZVpvbmU+KCk7CisKKwkJU0FYUmVhZGVyIHJlYWRlciA9IG5ldyBTQVhSZWFkZXIoKTsKKwkJRG9jdW1lbnQgZG9jdW1lbnQgPSByZWFkZXIKKwkJCQkucmVhZChuZXcgRmlsZShPbUZpbGVIZWxwZXIuZ2V0TGFuZ3VhZ2VzRGlyKCksCisJCQkJCQlPbUZpbGVIZWxwZXIubmFtZU9mVGltZVpvbmVGaWxlKSk7CisKKwkJRWxlbWVudCByb290ID0gZG9jdW1lbnQuZ2V0Um9vdEVsZW1lbnQoKTsKKworCQlmb3IgKEBTdXBwcmVzc1dhcm5pbmdzKCJyYXd0eXBlcyIpCisJCUl0ZXJhdG9yIGl0ID0gcm9vdC5lbGVtZW50SXRlcmF0b3IoInRpbWV6b25lIik7IGl0Lmhhc05leHQoKTspIHsKKwkJCUVsZW1lbnQgaXRlbSA9IChFbGVtZW50KSBpdC5uZXh0KCk7CisJCQlTdHJpbmcgdGltZVpvbmVOYW1lID0gaXRlbS5hdHRyaWJ1dGVWYWx1ZSgibmFtZSIpOworCQkJU3RyaW5nIHRpbWVab25lTGFiZWwgPSBpdGVtLmF0dHJpYnV0ZVZhbHVlKCJsYWJlbCIpOworCQkJSW50ZWdlciBvcmRlcklkID0gSW50ZWdlci52YWx1ZU9mKGl0ZW0uYXR0cmlidXRlVmFsdWUoIm9yZGVySWQiKSk7CisJCQlTdHJpbmcgaUNhbCA9IGl0ZW0uYXR0cmlidXRlVmFsdWUoImlDYWwiKTsKKworCQkJT21UaW1lWm9uZSBvbVRpbWVab25lID0gbmV3IE9tVGltZVpvbmUoKTsKKwkJCW9tVGltZVpvbmUuc2V0SWNhbChpQ2FsKTsKKwkJCW9tVGltZVpvbmUuc2V0Sm5hbWUodGltZVpvbmVOYW1lKTsKKwkJCW9tVGltZVpvbmUuc2V0TGFiZWwodGltZVpvbmVMYWJlbCk7CisJCQlvbVRpbWVab25lLnNldE9yZGVySWQob3JkZXJJZCk7CisKKwkJCW9tVGltZVpvbmVzLmFkZChvbVRpbWVab25lKTsKKwkJfQorCisJCXJldHVybiBvbVRpbWVab25lczsKKwl9CisKKwkvKioKKwkgKiBsb2FkIGFsbCBhdmFpbGlibGUgbGFuZ3VhZ2VzIEZpbGUgbmFtZXMgYW5kIGxhbmd1YWdlIG5hbWUncyBmcm9tIHRoZQorCSAqIGNvbmZpZyBmaWxlCisJICogCisJICogQHBhcmFtIGZpbGVQYXRoCisJICogQHJldHVybgorCSAqIEB0aHJvd3MgRXhjZXB0aW9uCisJICovCisJcHVibGljIExpbmtlZEhhc2hNYXA8SW50ZWdlciwgTGlua2VkSGFzaE1hcDxTdHJpbmcsIE9iamVjdD4+IGdldExhbmd1YWdlRmlsZXMoKQorCQkJdGhyb3dzIEV4Y2VwdGlvbiB7CisKKwkJTGlua2VkSGFzaE1hcDxJbnRlZ2VyLCBMaW5rZWRIYXNoTWFwPFN0cmluZywgT2JqZWN0Pj4gbGFuZ3VhZ2VzID0gbmV3IExpbmtlZEhhc2hNYXA8SW50ZWdlciwgTGlua2VkSGFzaE1hcDxTdHJpbmcsIE9iamVjdD4+KCk7CisKKwkJU0FYUmVhZGVyIHJlYWRlciA9IG5ldyBTQVhSZWFkZXIoKTsKKwkJRG9jdW1lbnQgZG9jdW1lbnQgPSByZWFkZXIKKwkJCQkucmVhZChuZXcgRmlsZShPbUZpbGVIZWxwZXIuZ2V0TGFuZ3VhZ2VzRGlyKCksCisJCQkJCQlPbUZpbGVIZWxwZXIubmFtZU9mTGFuZ3VhZ2VGaWxlKSk7CisKKwkJRWxlbWVudCByb290ID0gZG9jdW1lbnQuZ2V0Um9vdEVsZW1lbnQoKTsKKworCQlmb3IgKEBTdXBwcmVzc1dhcm5pbmdzKCJ1bmNoZWNrZWQiKQorCQlJdGVyYXRvcjxFbGVtZW50PiBpdCA9IHJvb3QuZWxlbWVudEl0ZXJhdG9yKCJsYW5nIik7IGl0Lmhhc05leHQoKTspIHsKKwkJCUVsZW1lbnQgaXRlbSA9IGl0Lm5leHQoKTsKKwkJCVN0cmluZyBjb3VudHJ5ID0gaXRlbS5nZXRUZXh0KCk7CisJCQlJbnRlZ2VyIGlkID0gSW50ZWdlci52YWx1ZU9mKGl0ZW0uYXR0cmlidXRlKCJpZCIpLmdldFZhbHVlKCkpCisJCQkJCS5pbnRWYWx1ZSgpOworCisJCQlTdHJpbmcgcnRsID0gaXRlbS5hdHRyaWJ1dGUoInJpZ2h0VG9MZWZ0IikuZ2V0VmFsdWUoKTsKKwkJCVN0cmluZyBjb2RlID0gaXRlbS5hdHRyaWJ1dGUoImNvZGUiKS5nZXRWYWx1ZSgpOworCisJCQlMaW5rZWRIYXNoTWFwPFN0cmluZywgT2JqZWN0PiBsYW5nID0gbmV3IExpbmtlZEhhc2hNYXA8U3RyaW5nLCBPYmplY3Q+KCk7CisJCQlsYW5nLnB1dCgiaWQiLCBpZCk7CisJCQlsYW5nLnB1dCgibmFtZSIsIGNvdW50cnkpOworCQkJbGFuZy5wdXQoInJ0bCIsIHJ0bCk7CisJCQlsYW5nLnB1dCgiY29kZSIsIGNvZGUpOworCQkJLy8gbG9nLmVycm9yKCJnZXRMYW5ndWFnZUZpbGVzICIrY291bnRyeSk7CisJCQlsYW5ndWFnZXMucHV0KGlkLCBsYW5nKTsKKwkJfQorCQlsb2cuZGVidWcoIkxhbmd1YWdlIGZpbGVzIGFyZSBsb2FkZWQiKTsKKwkJcmV0dXJuIGxhbmd1YWdlczsKKwl9CisKKwkvKioKKwkgKiBAYXV0aG9yIG8uYmVjaGVyZXIgaW5pdGlhbCBmaWxsbWVudCBvZiBBcHBvaW50bWVudGNhdGVnb3JpZXMKKwkgKi8KKwkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlwdWJsaWMgdm9pZCBsb2FkSW5pdEFwcG9pbnRtZW50Q2F0ZWdvcmllcygpIHsKKwkJbG9nLmRlYnVnKCJJbXBvcnRJbml0VmFsdWVzLmxvYWRJbml0QXBwb2ludG1lbnRDYXRlZ29yaWVzIik7CisKKwkJdHJ5IHsKKwkJCWFwcG9pbnRtZW50Q2F0ZWdvcnlEYW9JbXBsLmFkZEFwcG9pbnRtZW50Q2F0ZWdvcnkobmV3IExvbmcoLTEpLAorCQkJCQkiZGVmYXVsdCIsICJkZWZhdWx0Iik7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCQlsb2cuZXJyb3IoIkNvdWxkIG5vdCBjcmVhdGUgQXBwb2ludE1lbnRjYXRlZ29yaWVzIiwgZSk7CisJCQlyZXR1cm47CisJCX0KKworCX0KKworCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJLyoqCisJICogQGF1dGhvciBvLmJlY2hlcmVyIGluaXRpYWwgZmlsbG1lbnQgb2YgQXBwb2ludE1lbnRSZW1pbmRlclR5cGVzCisJICovCisJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJcHVibGljIHZvaWQgbG9hZEluaXRBcHBvaW50bWVudFJlbWluZGVyVHlwZXMoKSB7CisKKwkJbG9nLmRlYnVnKCJJbXBvcnRJbml0VmFsdWVzLmxvYWRJbml0QXBwb2ludG1lbnRSZW1pbmRlclR5cGVzIik7CisKKwkJdHJ5IHsKKwkJCWFwcG9pbnRtZW50UmVtaW5kZXJUeXBEYW9JbXBsLmFkZEFwcG9pbnRtZW50UmVtaW5kZXJUeXBzKC0xTCwKKwkJCQkJImRvIG5vdCBzZW5kIG5vdGlmaWNhdGlvbiIpOworCQkJYXBwb2ludG1lbnRSZW1pbmRlclR5cERhb0ltcGwuYWRkQXBwb2ludG1lbnRSZW1pbmRlclR5cHMoLTFMLAorCQkJCQkic2ltcGxlIGVtYWlsIik7CisJCQlhcHBvaW50bWVudFJlbWluZGVyVHlwRGFvSW1wbC5hZGRBcHBvaW50bWVudFJlbWluZGVyVHlwcygtMUwsCisJCQkJCSJpQ2FsIGVtYWlsIik7CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCWxvZy5lcnJvcigiQ291bGQgbm90IGNyZWF0ZSBSZW1pbmRlclR5cGUiLCBlKTsKKwkJCXJldHVybjsKKwkJfQorCX0KKworCXB1YmxpYyB2b2lkIGxvYWRMYW5ndWFnZXNGaWxlKGludCBsYW5nSWQpIHRocm93cyBFeGNlcHRpb24geworCQlMaW5rZWRIYXNoTWFwPEludGVnZXIsIExpbmtlZEhhc2hNYXA8U3RyaW5nLCBPYmplY3Q+PiBsaXN0bGFuZ3VhZ2VzID0gZ2V0TGFuZ3VhZ2VGaWxlcygpOworCQlsb2FkTGFuZ3VhZ2VzRmlsZShsaXN0bGFuZ3VhZ2VzLAorCQkJCW5ldyBIYXNodGFibGU8TG9uZywgRmllbGR2YWx1ZXM+KDMwMDApLCBsYW5nSWQpOworCX0KKworCXB1YmxpYyB2b2lkIGxvYWRMYW5ndWFnZXNGaWxlKFN0cmluZyBsYW5nTmFtZSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCUxpbmtlZEhhc2hNYXA8SW50ZWdlciwgTGlua2VkSGFzaE1hcDxTdHJpbmcsIE9iamVjdD4+IGxpc3RsYW5ndWFnZXMgPSBnZXRMYW5ndWFnZUZpbGVzKCk7CisJCWZvciAoaW50IGxhbmdJZCA6IGxpc3RsYW5ndWFnZXMua2V5U2V0KCkpIHsKKwkJCUxpbmtlZEhhc2hNYXA8U3RyaW5nLCBPYmplY3Q+IGxhbmdNYXAgPSBsaXN0bGFuZ3VhZ2VzLmdldChsYW5nSWQpOworCQkJaWYgKGxhbmdOYW1lLmVxdWFscyhsYW5nTWFwLmdldCgibmFtZSIpKSkgeworCQkJCWxvYWRMYW5ndWFnZXNGaWxlKGxpc3RsYW5ndWFnZXMsCisJCQkJCQluZXcgSGFzaHRhYmxlPExvbmcsIEZpZWxkdmFsdWVzPigzMDAwKSwgbGFuZ0lkKTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCX0KKworCXB1YmxpYyB2b2lkIGxvYWRMYW5ndWFnZXNGaWxlKAorCQkJTGlua2VkSGFzaE1hcDxJbnRlZ2VyLCBMaW5rZWRIYXNoTWFwPFN0cmluZywgT2JqZWN0Pj4gbGlzdGxhbmd1YWdlcywKKwkJCUhhc2h0YWJsZTxMb25nLCBGaWVsZHZhbHVlcz4gZmllbGRDYWNoZSwgaW50IGxhbmdJZCkKKwkJCXRocm93cyBFeGNlcHRpb24geworCQlMaW5rZWRIYXNoTWFwPFN0cmluZywgT2JqZWN0PiBsYW5nTWFwID0gbGlzdGxhbmd1YWdlcy5nZXQobGFuZ0lkKTsKKwkJbG9nLmRlYnVnKCJsb2FkSW5pdExhbmd1YWdlcyBsYW5nOiAiICsgbGFuZ01hcCk7CisKKwkJU3RyaW5nIGxhbmdOYW1lID0gKFN0cmluZykgbGFuZ01hcC5nZXQoIm5hbWUiKTsKKwkJU3RyaW5nIHJ0bCA9IChTdHJpbmcpIGxhbmdNYXAuZ2V0KCJydGwiKTsKKwkJU3RyaW5nIGNvZGUgPSAoU3RyaW5nKSBsYW5nTWFwLmdldCgiY29kZSIpOworCisJCWxvZy5kZWJ1ZygibG9hZEluaXRMYW5ndWFnZXMgcnRsIGZyb20geG1sOiAiICsgcnRsKTsKKworCQlCb29sZWFuIGxhbmdSdGwgPSBmYWxzZTsKKworCQlpZiAocnRsICE9IG51bGwgJiYgcnRsLmVxdWFscygidHJ1ZSIpKQorCQkJbGFuZ1J0bCA9IHRydWU7CisKKwkJbG9uZyB0aWNrcyA9IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOworCQlGaWVsZExhbmd1YWdlIGxhbmcgPSBmaWVsZExhbmd1YWdlRGFvSW1wbC5hZGRMYW5ndWFnZShsYW5nSWQsIGxhbmdOYW1lLAorCQkJCWxhbmdSdGwsIGNvZGUpOworCisJCVNBWFJlYWRlciByZWFkZXIgPSBuZXcgU0FYUmVhZGVyKCk7CisJCURvY3VtZW50IGRvY3VtZW50ID0gcmVhZGVyLnJlYWQobmV3IEZpbGUoCisJCQkJT21GaWxlSGVscGVyLmdldExhbmd1YWdlc0RpcigpLCBsYW5nTmFtZSArICIueG1sIikpOworCisJCUVsZW1lbnQgcm9vdCA9IGRvY3VtZW50LmdldFJvb3RFbGVtZW50KCk7CisKKwkJTWFwPExvbmcsIEZpZWxkbGFuZ3VhZ2VzdmFsdWVzPiBmbHZNYXAgPSBsYW5nLmdldExhbmd1YWdlVmFsdWVzTWFwKCk7CisJCWZvciAoQFN1cHByZXNzV2FybmluZ3MoInJhd3R5cGVzIikKKwkJSXRlcmF0b3IgaXQgPSByb290LmVsZW1lbnRJdGVyYXRvcigic3RyaW5nIik7IGl0Lmhhc05leHQoKTspIHsKKwkJCUVsZW1lbnQgaXRlbSA9IChFbGVtZW50KSBpdC5uZXh0KCk7CisJCQkvLyBsb2cuZXJyb3IoaXRlbS5nZXROYW1lKCkpOworCisJCQlMb25nIGlkID0gTG9uZy52YWx1ZU9mKGl0ZW0uYXR0cmlidXRlVmFsdWUoImlkIikpLmxvbmdWYWx1ZSgpOworCQkJU3RyaW5nIG5hbWUgPSBpdGVtLmF0dHJpYnV0ZVZhbHVlKCJuYW1lIik7CisJCQlTdHJpbmcgdmFsdWUgPSAiIjsKKworCQkJZm9yIChAU3VwcHJlc3NXYXJuaW5ncygicmF3dHlwZXMiKQorCQkJSXRlcmF0b3IgdDIgPSBpdGVtLmVsZW1lbnRJdGVyYXRvcigidmFsdWUiKTsgdDIuaGFzTmV4dCgpOykgeworCQkJCUVsZW1lbnQgdmFsID0gKEVsZW1lbnQpIHQyLm5leHQoKTsKKwkJCQl2YWx1ZSA9IHZhbC5nZXRUZXh0KCk7CisJCQl9CisKKwkJCS8vIGxvZy5lcnJvcigicmVzdWx0OiAiK2xhbmdGaWVsZElkSXNJbml0ZWQrIiAiK2lkKyIgIituYW1lKyIgIit2YWx1ZSk7CisKKwkJCWlmIChmbHZNYXAuY29udGFpbnNLZXkoaWQpKSB7CisJCQkJRmllbGRsYW5ndWFnZXN2YWx1ZXMgZmx2ID0gZmx2TWFwLmdldChpZCk7CisJCQkJZmx2LnNldFVwZGF0ZXRpbWUobmV3IERhdGUoKSk7CisJCQkJZmx2LnNldFZhbHVlKHZhbHVlKTsKKwkJCX0gZWxzZSB7CisJCQkJRmllbGR2YWx1ZXMgZnYgPSBudWxsOworCQkJCS8vIE9ubHkgZG8gdGhhdCBmb3IgdGhlIGZpcnN0IGZpZWxkLXNldAorCQkJCWlmICghZmllbGRDYWNoZS5jb250YWluc0tleShpZCkpIHsKKwkJCQkJZnYgPSBmaWVsZE1hbmFnZXIuYWRkRmllbGRCeUlkKG5hbWUsIGlkKTsKKwkJCQkJZmllbGRDYWNoZS5wdXQoaWQsIGZ2KTsKKwkJCQl9IGVsc2UgeworCQkJCQlmdiA9IGZpZWxkQ2FjaGUuZ2V0KGlkKTsKKwkJCQl9CisJCQkJRmllbGRsYW5ndWFnZXN2YWx1ZXMgZmx2ID0gbmV3IEZpZWxkbGFuZ3VhZ2VzdmFsdWVzKCk7CisJCQkJZmx2LnNldFN0YXJ0dGltZShuZXcgRGF0ZSgpKTsKKwkJCQlmbHYuc2V0VmFsdWUodmFsdWUpOworCQkJCWZsdi5zZXRMYW5ndWFnZV9pZChsYW5nLmdldExhbmd1YWdlX2lkKCkpOworCQkJCWZsdi5zZXRGaWVsZHZhbHVlcyhmdik7CisJCQkJZmx2LnNldERlbGV0ZWQoZmFsc2UpOworCQkJCWZsdk1hcC5wdXQoaWQsIGZsdik7CisJCQl9CisJCX0KKwkJbGFuZy5zZXRMYW5ndWFnZVZhbHVlcyhmbHZNYXAudmFsdWVzKCkpOworCQlmaWVsZExhbmd1YWdlRGFvSW1wbC51cGRhdGVMYW5ndWFnZShsYW5nKTsKKwkJbG9nLmRlYnVnKCJMYW5nIEFEREVEOiAiICsgbGFuZyArICI7IHNlY29uZHMgcGFzc2VkOiAiCisJCQkJKyAoU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkgLSB0aWNrcykgLyAxMDAwKTsKKwl9CisKKwlwdWJsaWMgdm9pZCBsb2FkTGFuZ3VhZ2VzRmlsZXMoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkJTGlua2VkSGFzaE1hcDxJbnRlZ2VyLCBMaW5rZWRIYXNoTWFwPFN0cmluZywgT2JqZWN0Pj4gbGlzdGxhbmd1YWdlcyA9IGdldExhbmd1YWdlRmlsZXMoKTsKKworCQlIYXNodGFibGU8TG9uZywgRmllbGR2YWx1ZXM+IGZpZWxkQ2FjaGUgPSBuZXcgSGFzaHRhYmxlPExvbmcsIEZpZWxkdmFsdWVzPigKKwkJCQkzMDAwKTsKKwkJLyoqIFJlYWQgYWxsIGxhbmd1YWdlcyBmaWxlcyAqLworCQlmb3IgKGludCBsYW5nSWQgOiBsaXN0bGFuZ3VhZ2VzLmtleVNldCgpKSB7CisJCQlsb2FkTGFuZ3VhZ2VzRmlsZShsaXN0bGFuZ3VhZ2VzLCBmaWVsZENhY2hlLCBsYW5nSWQpOworCQl9CisJCWxvZy5kZWJ1ZygiQWxsIGxhbmd1YWdlcyBhcmUgaW1wb3J0ZWQiKTsKKwl9CisKKwkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCS8qKgorCSAqIExvYWRpbmcgaW5pdGlhbCBMYW5ndWFnZSBmcm9tIHhtbCBGaWxlcyBpbnRvIGRhdGFiYXNlCisJICovCisJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJcHVibGljIHZvaWQgbG9hZEluaXRMYW5ndWFnZXMoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkJbG9hZENvdW50cmllc0ZpbGVzKCk7CisJCWxvYWRUaW1lWm9uZUZpbGVzKCk7CisJCWxvYWRMYW5ndWFnZXNGaWxlcygpOworCX0KKworCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJLyoqCisJICogTG9hZGluZyBpbml0aWFsIExhbmd1YWdlIGZyb20geG1sIEZpbGVzIGludG8gZGF0YWJhc2UKKwkgKi8KKwkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlwdWJsaWMgdm9pZCBsb2FkUG9sbFR5cGVzKCkgeworCQlwb2xsTWFuYWdlci5hZGRQb2xsVHlwZSgyNkwsIGZhbHNlKTsKKwkJcG9sbE1hbmFnZXIuYWRkUG9sbFR5cGUoMjdMLCB0cnVlKTsKKwl9CisKKwkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCXB1YmxpYyB2b2lkIGxvYWRTeXN0ZW0oSW5zdGFsbGF0aW9uQ29uZmlnIGNmZywgYm9vbGVhbiBmb3JjZSkKKwkJCXRocm93cyBFeGNlcHRpb24geworCQkvLyBGSVhNRSBkdW1teSBjaGVjayBpZiBpbnN0YWxsYXRpb24gd2FzIHBlcmZvcm1lZCBiZWZvcmUKKwkJaWYgKCFmb3JjZSAmJiB1c2Vyc0Rhby5nZXRBbGxVc2VycygpLnNpemUoKSA+IDApIHsKKwkJCWxvZy5kZWJ1ZygiU3lzdGVtIGNvbnRhaW5zIHVzZXJzLCBubyBuZWVkIHRvIGluc3RhbGwgZGF0YSBvbmUgbW9yZSB0aW1lLiIpOworCQl9CisJCXNpcERhby5kZWxldGUoKTsKKwkJbG9hZE1haW5NZW51KCk7CisJCWxvYWRFcnJvck1hcHBpbmdzRnJvbVhNTCgpOworCQlsb2FkSW5pdExhbmd1YWdlcygpOworCQlsb2FkU2FsdXRhdGlvbnMoKTsKKwkJLy8gQXBwb2ludE1lbnQgQ2F0ZWdvcmllcworCQlsb2FkSW5pdEFwcG9pbnRtZW50Q2F0ZWdvcmllcygpOworCQkvLyBBcHBvaW50bWVudCBSZW1pbmRlciB0eXBlcworCQlsb2FkSW5pdEFwcG9pbnRtZW50UmVtaW5kZXJUeXBlcygpOworCQkvLyBBcHBvaW50bWVudCBwb2xsIHR5cGVzCisJCWxvYWRQb2xsVHlwZXMoKTsKKwkJbG9hZFJvb21UeXBlcygpOworCisJCWxvYWRDb25maWd1cmF0aW9uKGNmZyk7CisJfQorCisJcHVibGljIHZvaWQgbG9hZEFsbChJbnN0YWxsYXRpb25Db25maWcgY2ZnLCBTdHJpbmcgdXNlcm5hbWUsCisJCQlTdHJpbmcgdXNlcnBhc3MsIFN0cmluZyB1c2VyZW1haWwsIFN0cmluZyBncm91cGFtZSwKKwkJCVN0cmluZyB0aW1lWm9uZSwgYm9vbGVhbiBmb3JjZSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCS8vIEZJWE1FIGR1bW15IGNoZWNrIGlmIGluc3RhbGxhdGlvbiB3YXMgcGVyZm9ybWVkIGJlZm9yZQorCQlpZiAoIWZvcmNlICYmIHVzZXJzRGFvLmdldEFsbFVzZXJzKCkuc2l6ZSgpID4gMCkgeworCQkJbG9nLmRlYnVnKCJTeXN0ZW0gY29udGFpbnMgdXNlcnMsIG5vIG5lZWQgdG8gaW5zdGFsbCBkYXRhIG9uZSBtb3JlIHRpbWUuIik7CisJCQlyZXR1cm47CisJCX0KKwkJbG9hZFN5c3RlbShjZmcsIGZvcmNlKTsKKwkJbG9hZEluaXRVc2VyQW5kT3JnYW5pc2F0aW9uKHVzZXJuYW1lLCB1c2VycGFzcywgdXNlcmVtYWlsLCBncm91cGFtZSwKKwkJCQl0aW1lWm9uZSwgY2ZnLmRlZmF1bHRMYW5nSWQpOworCisJCWxvYWREZWZhdWx0Um9vbXMoIjEiLmVxdWFscyhjZmcuY3JlYXRlRGVmYXVsdFJvb21zKSk7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2luc3RhbGxhdGlvbi9JbnN0YWxsYXRpb25Db25maWcuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9pbnN0YWxsYXRpb24vSW5zdGFsbGF0aW9uQ29uZmlnLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTRhMjAzNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9pbnN0YWxsYXRpb24vSW5zdGFsbGF0aW9uQ29uZmlnLmphdmEKQEAgLTAsMCArMSw4MiBAQAorLyoNCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICogdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5pbnN0YWxsYXRpb247DQorDQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLmNyeXB0Lk1ENUltcGxlbWVudGF0aW9uOw0KKw0KK3B1YmxpYyBjbGFzcyBJbnN0YWxsYXRpb25Db25maWcgew0KKwlwdWJsaWMgc3RhdGljIGZpbmFsIGludCBVU0VSX0xPR0lOX01JTklNVU1fTEVOR1RIID0gNDsNCisJcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgVVNFUl9QQVNTV09SRF9NSU5JTVVNX0xFTkdUSCA9IDQ7DQorCXB1YmxpYyBTdHJpbmcgYWxsb3dGcm9udGVuZFJlZ2lzdGVyID0gIjEiOw0KKwlwdWJsaWMgU3RyaW5nIGNyZWF0ZURlZmF1bHRSb29tcyA9ICIxIjsNCisJcHVibGljIFN0cmluZyBpY2FsX3RpbWVab25lID0gIkV1cm9wZS9CZXJsaW4iOw0KKwkNCisJcHVibGljIFN0cmluZyBjcnlwdENsYXNzTmFtZSA9IE1ENUltcGxlbWVudGF0aW9uLmNsYXNzLmdldENhbm9uaWNhbE5hbWUoKTsNCisJLy9lbWFpbA0KKwlwdWJsaWMgU3RyaW5nIHNtdHBQb3J0ID0gIjI1IjsNCisJcHVibGljIFN0cmluZyBzbXRwU2VydmVyID0gImxvY2FsaG9zdCI7DQorCXB1YmxpYyBTdHJpbmcgbWFpbEF1dGhOYW1lID0gIiI7DQorCXB1YmxpYyBTdHJpbmcgbWFpbEF1dGhQYXNzID0gIiI7DQorCXB1YmxpYyBTdHJpbmcgbWFpbFJlZmVyZXIgPSAibm9yZXBseUBvcGVubWVldGluZ3MuYXBhY2hlLm9yZyI7DQorCXB1YmxpYyBTdHJpbmcgbWFpbFVzZVRscyA9ICIwIjsNCisJLy9wYXRocw0KKwlwdWJsaWMgU3RyaW5nIHN3Zlpvb20gPSAiIjsNCisJcHVibGljIFN0cmluZyBzd2ZKcGVnUXVhbGl0eSA9ICIiOw0KKwlwdWJsaWMgU3RyaW5nIHN3ZlBhdGggPSAiIjsNCisJcHVibGljIFN0cmluZyBpbWFnZU1hZ2ljUGF0aCA9ICIiOw0KKwlwdWJsaWMgU3RyaW5nIGZmbXBlZ1BhdGggPSAiIjsNCisJcHVibGljIFN0cmluZyBzb3hQYXRoID0gIiI7DQorCXB1YmxpYyBTdHJpbmcgam9kUGF0aCA9ICIuL2pvZC9saWIiOw0KKwlwdWJsaWMgU3RyaW5nIG9mZmljZVBhdGggPSAiIjsNCisJDQorCXB1YmxpYyBTdHJpbmcgZGVmYXVsdExhbmdJZCA9ICIxIjsNCisJcHVibGljIFN0cmluZyBzZW5kRW1haWxBdFJlZ2lzdGVyID0gIjAiOw0KKwlwdWJsaWMgU3RyaW5nIHVybEZlZWQgPSAiaHR0cDovL21haWwtYXJjaGl2ZXMuYXBhY2hlLm9yZy9tb2RfbWJveC9vcGVubWVldGluZ3MtdXNlci8/Zm9ybWF0PWF0b20iOw0KKwlwdWJsaWMgU3RyaW5nIHVybEZlZWQyID0gImh0dHA6Ly9tYWlsLWFyY2hpdmVzLmFwYWNoZS5vcmcvbW9kX21ib3gvb3Blbm1lZXRpbmdzLWRldi8/Zm9ybWF0PWF0b20iOw0KKwlwdWJsaWMgU3RyaW5nIHNlbmRFbWFpbFdpdGhWZXJmaWNhdGlvbkNvZGUgPSAiMCI7DQorCXB1YmxpYyBTdHJpbmcgZGVmYXVsdEV4cG9ydEZvbnQgPSAiVGltZXNOZXdSb21hbiI7DQorICAgIHB1YmxpYyBTdHJpbmcgcmVkNVNpcEVuYWJsZSA9ICJ5ZXMiOw0KKyAgICBwdWJsaWMgU3RyaW5nIHJlZDVTaXBSb29tUHJlZml4ID0gIjQwMCI7DQorICAgIHB1YmxpYyBTdHJpbmcgcmVkNVNpcEV4dGVuQ29udGV4dCA9ICJyb29tcyI7DQorICAgIHB1YmxpYyBTdHJpbmcgcmVwbHlUb09yZ2FuaXplciA9ICIxIjsNCisgICAgDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgew0KKwkJcmV0dXJuICJJbnN0YWxsYXRpb25Db25maWcgW2FsbG93RnJvbnRlbmRSZWdpc3Rlcj0iDQorCQkJCSsgYWxsb3dGcm9udGVuZFJlZ2lzdGVyICsgIiwgY3JlYXRlRGVmYXVsdFJvb21zPSINCisJCQkJKyBjcmVhdGVEZWZhdWx0Um9vbXMgKyAiLCBjcnlwdENsYXNzTmFtZT0iICsgY3J5cHRDbGFzc05hbWUNCisJCQkJKyAiLCBzbXRwUG9ydD0iICsgc210cFBvcnQgKyAiLCBzbXRwU2VydmVyPSIgKyBzbXRwU2VydmVyDQorCQkJCSsgIiwgbWFpbEF1dGhOYW1lPSIgKyBtYWlsQXV0aE5hbWUgKyAiLCBtYWlsQXV0aFBhc3M9Ig0KKwkJCQkrIG1haWxBdXRoUGFzcyArICIsIG1haWxSZWZlcmVyPSIgKyBtYWlsUmVmZXJlcg0KKwkJCQkrICIsIG1haWxVc2VUbHM9IiArIG1haWxVc2VUbHMgKyAiLCBzd2Zab29tPSIgKyBzd2Zab29tDQorCQkJCSsgIiwgc3dmSnBlZ1F1YWxpdHk9IiArIHN3ZkpwZWdRdWFsaXR5ICArICIsIHN3ZlBhdGg9IiArIHN3ZlBhdGgNCisJCQkJKyAiLCBpbWFnZU1hZ2ljUGF0aD0iICsgaW1hZ2VNYWdpY1BhdGggKyAiLCBmZm1wZWdQYXRoPSINCisJCQkJKyBmZm1wZWdQYXRoICsgIiwgc294UGF0aD0iICsgc294UGF0aCArICIsIGpvZFBhdGg9IiArIGpvZFBhdGgNCisJCQkJKyAiLCBkZWZhdWx0TGFuZ0lkPSIgKyBkZWZhdWx0TGFuZ0lkICsgIiwgc2VuZEVtYWlsQXRSZWdpc3Rlcj0iDQorCQkJCSsgc2VuZEVtYWlsQXRSZWdpc3RlciArICIsIHVybEZlZWQ9IiArIHVybEZlZWQgKyAiLCB1cmxGZWVkMj0iDQorCQkJCSsgdXJsRmVlZDIgKyAiLCBzZW5kRW1haWxXaXRoVmVyZmljYXRpb25Db2RlPSINCisJCQkJKyBzZW5kRW1haWxXaXRoVmVyZmljYXRpb25Db2RlICsgIiwgZGVmYXVsdEV4cG9ydEZvbnQ9Ig0KKwkJCQkrIGRlZmF1bHRFeHBvcnRGb250ICsgIiwgcmVkNVNpcEVuYWJsZT0iDQorCQkJCSsgcmVkNVNpcEVuYWJsZSArICIsIHJlZDVTaXBSb29tUHJlZml4PSIgKyByZWQ1U2lwUm9vbVByZWZpeA0KKwkJCQkrICIsIHJlZDVTaXBFeHRlbkNvbnRleHQ9IiArIHJlZDVTaXBFeHRlbkNvbnRleHQNCisJCQkJKyAiLCByZXBseVRvT3JnYW5pemVyPSIgKyByZXBseVRvT3JnYW5pemVyDQorCQkJCSsgIiwgaWNhbF90aW1lWm9uZT0iICsgaWNhbF90aW1lWm9uZSANCisJCQkJKyAiXSI7DQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2xkYXAvTGRhcEF1dGhCYXNlLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvbGRhcC9MZGFwQXV0aEJhc2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDQwOTIzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2xkYXAvTGRhcEF1dGhCYXNlLmphdmEKQEAgLTAsMCArMSwyNjkgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MubGRhcDsKKworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5IYXNodGFibGU7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLlByb3BlcnRpZXM7CitpbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKKworaW1wb3J0IGphdmF4Lm5hbWluZy5Db250ZXh0OworaW1wb3J0IGphdmF4Lm5hbWluZy5OYW1pbmdFbnVtZXJhdGlvbjsKK2ltcG9ydCBqYXZheC5uYW1pbmcuTmFtaW5nRXhjZXB0aW9uOworaW1wb3J0IGphdmF4Lm5hbWluZy5kaXJlY3RvcnkuQXR0cmlidXRlOworaW1wb3J0IGphdmF4Lm5hbWluZy5kaXJlY3RvcnkuQXR0cmlidXRlczsKK2ltcG9ydCBqYXZheC5uYW1pbmcuZGlyZWN0b3J5LkRpckNvbnRleHQ7CitpbXBvcnQgamF2YXgubmFtaW5nLmRpcmVjdG9yeS5Jbml0aWFsRGlyQ29udGV4dDsKK2ltcG9ydCBqYXZheC5uYW1pbmcuZGlyZWN0b3J5LlNlYXJjaENvbnRyb2xzOworaW1wb3J0IGphdmF4Lm5hbWluZy5kaXJlY3RvcnkuU2VhcmNoUmVzdWx0OworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKKworCisvKioKKyAqIAorICogQGF1dGhvciBvLmJlY2hlcmVyCisgKiAKKyAqIEJhc2VDbGFzcyBmb3Igb3B0aW9uYWwgTERBUCBBdXRoZW50aWZpY2F0aW9uCisgKgorICovCitwdWJsaWMgY2xhc3MgTGRhcEF1dGhCYXNlIHsKKwkvKiogTGRhcENvbm5lY3Rpb25VcmwgKi8KKwlwcml2YXRlIFN0cmluZyBsZGFwX2Nvbm5lY3Rpb25fdXJsID0gIiI7CisJCisJLyoqIExkYXBTZXJ2ZXIgTG9naW4gZGlzdGluZ3Vpc2hlZCBuYW1lICovCisJcHJpdmF0ZSBTdHJpbmcgbGRhcF9hZG1pbl9kbiA9ICIiOworCQorCS8qKiBMZGFwU2VydmVyIFBhc3N3ZCAqLworCXByaXZhdGUgU3RyaW5nIGxkYXBfcGFzc3dkID0gIiI7CisJCQorCS8qKiBTZWN1cml0eSBBdXRoZW50aWZpY2F0aW9uIFR5cGUgKi8KKwlwcml2YXRlIFN0cmluZyBsZGFwX2F1dGhfdHlwZSA9ICJzaW1wbGUiOworCQorCS8qKiBEaXJlY3RvcnkgQ29udGV4dCAqLworCXByaXZhdGUgRGlyQ29udGV4dCBhdXRoQ29udGV4dCA9IG51bGw7CisJCisJLyoqIENvbnRleHRGYWN0b3J5ICovCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIENPTlRFWFRfRkFDVE9SWSA9ICJjb20uc3VuLmpuZGkubGRhcC5MZGFwQ3R4RmFjdG9yeSI7CisJCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTERBUF9BVVRIX1RZUEVfU0lNUExFID0gInNpbXBsZSI7CisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTERBUF9BVVRIX1RZUEVfTk9ORSA9ICJub25lIjsKKwkKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKExkYXBBdXRoQmFzZS5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCisJCisJLyoqCisJICogQ29uZmlndXJpbmcgTGRhcENvbm5lY3Rpb24KKwkgKiBAcGFyYW0gY29ubmVjdGlvblVybAorCSAqIEBwYXJhbSBhZG1pbgorCSAqIEBwYXJhbSBwYXNzd2QKKwkgKiBAcGFyYW0gYmFzZQorCSAqIEBwYXJhbSBhdXRoVHlwZQorCSAqLworCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJcHVibGljIExkYXBBdXRoQmFzZShTdHJpbmcgY29ubmVjdGlvblVybCwgU3RyaW5nIGFkbWluX2RuLCBTdHJpbmcgcGFzc3dkLCBTdHJpbmcgYXV0aFR5cGUpeworCQlsb2cuZGVidWcoIkxkYXBBdXRoQmFzZSIpOworCQkKKwkJdGhpcy5sZGFwX2Nvbm5lY3Rpb25fdXJsID0gY29ubmVjdGlvblVybDsKKwkJdGhpcy5sZGFwX2FkbWluX2RuID0gYWRtaW5fZG47CisJCXRoaXMubGRhcF9wYXNzd2QgPSBwYXNzd2Q7CisJCXRoaXMubGRhcF9hdXRoX3R5cGUgPSBhdXRoVHlwZTsKKwl9CisJLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkKKwkKKwkvKioKKwkgKiBBdXRlbnRpZmljYXRlIFVzZXIKKwkgKiBAcGFyYW0gdXNlcm5hbWUKKwkgKiBAcGFyYW0gcGFzc3dkCisJICovCisJLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJcHVibGljIGJvb2xlYW4gYXV0aGVudGljYXRlVXNlcihTdHJpbmcgdXNlcm5hbWUsIFN0cmluZyBwYXNzd2QpeworCQlsb2cuZGVidWcoImF1dGhlbnRpY2F0ZVVzZXIiKTsKKwkJCisJCVByb3BlcnRpZXMgbGRhcEF1dGhlbnRpY2F0ZVByb3BlcnRpZXMgPSBuZXcgUHJvcGVydGllcygpOworCSAgICBsZGFwQXV0aGVudGljYXRlUHJvcGVydGllcy5wdXQoQ29udGV4dC5QUk9WSURFUl9VUkwsIGxkYXBfY29ubmVjdGlvbl91cmwpOworCSAgICBsZGFwQXV0aGVudGljYXRlUHJvcGVydGllcy5wdXQoQ29udGV4dC5JTklUSUFMX0NPTlRFWFRfRkFDVE9SWSwgQ09OVEVYVF9GQUNUT1JZKTsKKwkgICAgbGRhcEF1dGhlbnRpY2F0ZVByb3BlcnRpZXMucHV0KENvbnRleHQuUkVGRVJSQUwsICJmb2xsb3ciKTsKKwkgICAgbGRhcEF1dGhlbnRpY2F0ZVByb3BlcnRpZXMucHV0KENvbnRleHQuU0VDVVJJVFlfQVVUSEVOVElDQVRJT04sIGxkYXBfYXV0aF90eXBlKTsKKwkgICAgbGRhcEF1dGhlbnRpY2F0ZVByb3BlcnRpZXMucHV0KENvbnRleHQuU0VDVVJJVFlfUFJJTkNJUEFMLCB1c2VybmFtZSk7CisJICAgIGxkYXBBdXRoZW50aWNhdGVQcm9wZXJ0aWVzLnB1dChDb250ZXh0LlNFQ1VSSVRZX0NSRURFTlRJQUxTLCBwYXNzd2QpOworCSAgICBsZGFwQXV0aGVudGljYXRlUHJvcGVydGllcy5wdXQoImphdmEubmFtaW5nLmxkYXAucmVmZXJyYWwuYmluZCIsICJ0cnVlIik7CisJCQorCSAgICAKKwkgICAgaWYobGRhcF9hZG1pbl9kbiA9PSBudWxsKQorCSAgICAJbGRhcF9hZG1pbl9kbiA9ICIiOworCSAgICAKKwkgICAgaWYoIWxkYXBfYXV0aF90eXBlLmVxdWFscyhMREFQX0FVVEhfVFlQRV9OT05FKSAmJiBsZGFwX2FkbWluX2RuLmxlbmd0aCgpID4gMCl7CisJICAgIAlsb2cuZGVidWcoIlxuXG5BdXRoZW50aWZpY2F0aW9uIHRvIExEQVAgLSBTZXJ2ZXIgc3RhcnQiKTsKKwkgICAgCXRyeSB7CisJICAgIAkJbG9naW5Ub0xkYXBTZXJ2ZXIoKTsKKwkgICAgCQorCSAgICAJCWF1dGhDb250ZXh0ID0gbmV3IEluaXRpYWxEaXJDb250ZXh0KGxkYXBBdXRoZW50aWNhdGVQcm9wZXJ0aWVzKTsKKwkgICAgCX0gY2F0Y2ggKEV4Y2VwdGlvbiBhZSl7CisJICAgIAkJbG9nLmVycm9yKCJcblxuQXV0aGVudGlmaWNhdGlvbiBvbiBMREFQIFNlcnZlciBmYWlsZWQgOiAiICsgYWUuZ2V0TWVzc2FnZSgpKTsKKwkgICAgCQlsb2cuZXJyb3IoIltBdXRoZW50aWZpY2F0aW9uIG9uIExEQVAgU2VydmVyIGZhaWxlZF0iLGFlKTsKKwkgICAgCQlyZXR1cm4gZmFsc2U7CisJICAgIAl9CisJICAgIH0KKwkgICAgCisJICAgIGVsc2V7CisJICAgIAlsb2cuZGVidWcoIlxuXG5Db25uZWN0aW9uIHRvIExEQVAgLSBTZXJ2ZXIgc3RhcnQgKHdpdGhvdXQgU2VydmVyIGxvZ2luKSIpOworCSAgICAJdHJ5eworCSAgICAJCWF1dGhDb250ZXh0ID0gbmV3IEluaXRpYWxEaXJDb250ZXh0KGxkYXBBdXRoZW50aWNhdGVQcm9wZXJ0aWVzKTsKKwkgICAgCX1jYXRjaChFeGNlcHRpb24gZSl7CisJICAgIAkJbG9nLmVycm9yKCJcblxuQ29ubmVjdGlvbiB0byBMREFQIFNlcnZlciBmYWlsZWQgOiAiICsgZS5nZXRNZXNzYWdlKCkpOworCSAgICAJCWxvZy5lcnJvcigiW0Nvbm5lY3Rpb24gdG8gTERBUCBTZXJ2ZXIgZmFpbGVkXSIsZSk7CisJICAgIAkJcmV0dXJuIGZhbHNlOworCSAgICAJfQorCSAgICB9CisJICAgIAorCSAgICByZXR1cm4gdHJ1ZTsKKwkJCisJfQorCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCQorCQorCS8qKgorCSAqIExvZ2luIHRvIExkYXBTZXJ2ZXIKKwkgKi8KKwkvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlwcml2YXRlIHZvaWQgbG9naW5Ub0xkYXBTZXJ2ZXIoKSB0aHJvd3MgRXhjZXB0aW9ueworCQlsb2cuZGVidWcoImxvZ2luVG9MZGFwU2VydmVyIik7CisJCQorCQlIYXNodGFibGU8U3RyaW5nLCBTdHJpbmc+IGVudiA9IG5ldyBIYXNodGFibGU8U3RyaW5nLCBTdHJpbmc+KCk7CisJCQorCQllbnYucHV0KENvbnRleHQuSU5JVElBTF9DT05URVhUX0ZBQ1RPUlksIENPTlRFWFRfRkFDVE9SWSk7CisJCWVudi5wdXQoQ29udGV4dC5QUk9WSURFUl9VUkwsIGxkYXBfY29ubmVjdGlvbl91cmwpOworCQllbnYucHV0KENvbnRleHQuU0VDVVJJVFlfQVVUSEVOVElDQVRJT04sIGxkYXBfYXV0aF90eXBlKTsKKwkJZW52LnB1dChDb250ZXh0LlNFQ1VSSVRZX1BSSU5DSVBBTCwgbGRhcF9hZG1pbl9kbik7CisJCWVudi5wdXQoQ29udGV4dC5TRUNVUklUWV9DUkVERU5USUFMUywgbGRhcF9wYXNzd2QpOworCQkKKwkJYXV0aENvbnRleHQgPSBuZXcgSW5pdGlhbERpckNvbnRleHQoZW52KTsKKwkJCisJfQorCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCQorCQorCSAvKioKKwkgICogQHBhcmFtIHNlYXJjaFNjb3BlIExEQVAgVXJsIHRvIHNlYXJjaCB3aXRoaW4KKwkgICogQHBhcmFtIGZpbHRlciBMREFQIEZpbHRlcgorCSAgKiBAcGFyYW0gYXR0cmlidXRlcyBBdHRyaWJ1dGVzIHRvIGV4dHJhY3QgZnJvbSBMREFQIFNlYXJjaAorCSAgKi8KKwkvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlwdWJsaWMgVmVjdG9yPEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+PiBnZXREYXRhKFN0cmluZyBzZWFyY2hTY29wZSwgU3RyaW5nIGZpbHRlciwgTGlzdDxTdHJpbmc+IGF0dHJpYnV0ZXMpeworCQlsb2cuZGVidWcoImdldERhdGEiKTsKKwkJCisJCS8vIFNlYXJjaHBhcmFtcworCQlTZWFyY2hDb250cm9scyBjb25zdHJhaW50cyA9IG5ldyBTZWFyY2hDb250cm9scygpOworCQkgCisJCS8vIFJlY3Vyc2l2ZSBTZWFyY2gKKwkJY29uc3RyYWludHMuc2V0U2VhcmNoU2NvcGUoU2VhcmNoQ29udHJvbHMuU1VCVFJFRV9TQ09QRSk7CisKKwkJLy8gUmVzdWx0CisJCVZlY3RvcjxIYXNoTWFwPFN0cmluZywgU3RyaW5nPj4gIHJlc3VsdCA9IG5ldyBWZWN0b3I8SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4+KCkgOworCQkKKwkJdHJ5eworCQkJLy8gc2VhcmNoCisJCQlOYW1pbmdFbnVtZXJhdGlvbjxTZWFyY2hSZXN1bHQ+IHJlc3VsdHMgPSBhdXRoQ29udGV4dC5zZWFyY2goc2VhcmNoU2NvcGUsIGZpbHRlciwgY29uc3RyYWludHMpOworCQkJCisJCQkvLyBTdGVwcGluZyB0aHJvdWdoIHRoZSBkYXRhCisJCQl3aGlsZSAocmVzdWx0cyAhPSBudWxsICYmIHJlc3VsdHMuaGFzTW9yZSgpKSB7CisJCQkgICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGlubmVyTWFwID0gbmV3IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+KCk7CisJCQkgICAgIAorCQkJCSAvLyBOZXh0IHJlc3VsdAorCQkJICAgICBTZWFyY2hSZXN1bHQgc2kgPSByZXN1bHRzLm5leHQoKTsKKwkJCSAgICAgCisJCQkgICAgIGlmKHNpID09IG51bGwpeworCQkJICAgIAkgY29udGludWU7CisJCQkgICAgIH0KKwkJCSAgICAgCisJCQkgICAgIC8vIEF0dHJpYnV0ZQorCQkJICAgICBqYXZheC5uYW1pbmcuZGlyZWN0b3J5LkF0dHJpYnV0ZXMgYXR0cnMgPSBzaS5nZXRBdHRyaWJ1dGVzKCk7CisJCQkgICAgIAorCQkJICAgICBpZihhdHRycyAhPSBudWxsKXsKKwkJCSAgICAJIGZvcihpbnQgaSA9IDA7IGkgPCBhdHRyaWJ1dGVzLnNpemUoKTsgaSsrKXsKKwkJCSAgICAJCSAKKwkJCSAgICAJCSBTdHJpbmcga2V5ID0gYXR0cmlidXRlcy5nZXQoaSk7CisJCQkgICAgCQkgU3RyaW5nIHZhbCA9ICIiOworCQkJICAgIAkJCisJCQkgICAgCQkgQXR0cmlidXRlIGJ1dCA9IGF0dHJzLmdldChrZXkpOworCQkJICAgIAkJIAorCQkJICAgIAkJIGlmKGJ1dCE9IG51bGwpeworCQkJICAgIAkJIAkgT2JqZWN0IG9iaiA9IGJ1dC5nZXQoKTsKKwkJCQkgICAgCQkgCisJCQkJICAgIAkJIGlmKG9iaiAhPSBudWxsKQorCQkJCSAgICAJCQkgdmFsID0gU3RyaW5nLnZhbHVlT2Yob2JqKTsKKwkJCSAgICAJCSB9CisJCQkgICAgCQkgaW5uZXJNYXAucHV0KGtleSx2YWwgKTsKKwkJCSAgICAJIH0KKwkJCSAgICAgfQorCQkJICAgICAKKwkJCSAgICAgcmVzdWx0LmFkZChpbm5lck1hcCk7CisJCQkgICAgIAorCQkJICAgIAorCQkJICB9CisJCX1jYXRjaChFeGNlcHRpb24gZSl7CisJCQlsb2cuZXJyb3IoIkVycm9yIG9jY3VyZWQgb24gTERBUCBTZWFyY2ggOiAiICwgZSk7CisJCX0KKwkJCisJCXJldHVybiByZXN1bHQ7CisJfQorCQorCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJLyoqCisJICogQHBhcmFtIHNlYXJjaEJhc2UgTGRhcCBiYXNlIHRvIGJlZ2luIGRlIFNVQiBzY29wZSBzZWFyY2ggZm9yIHRoZSB1c2VyRE4KKwkgKiBAcGFyYW0gc2VhcmNoRmlsdGVyIExkYXAgZmlsdGVyIHRvIHNlYXJjaCBvbmx5IGZvciB0aGUgc3BlY2lmaWVkIGxvZ2luYW1lIHdoaWxlIGxvb2tpbmcgZm9yIHRoZSB1c2VyRE4KKwkgKiBAcGFyYW0gbGRhcF9maWVsZG5hbWVfdXNlcl9wcmluY2lwYWwgbGRhcCBzdHRyaWJ1dGUgbmFtZSB0aGF0IGNvbnRhaW5zIHRoZSB1c2VyIGxvZ2luYW1lCisJICogQHJldHVybgorCSAqLworCXB1YmxpYyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBnZXRVaWRDbkhhc2hNYXAoU3RyaW5nIHNlYXJjaEJhc2UsIFN0cmluZyBzZWFyY2hGaWx0ZXIsIFN0cmluZyBsZGFwX2ZpZWxkbmFtZV91c2VyX3ByaW5jaXBhbCkgeworCQlIYXNoTWFwPFN0cmluZywgU3RyaW5nPiB1aWRDbkRpY3Rpb25hcnkgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4oKTsKKworCQlTZWFyY2hDb250cm9scyBzZWFyY2hDdGxzID0gbmV3IFNlYXJjaENvbnRyb2xzKCk7CisJCXNlYXJjaEN0bHMuc2V0U2VhcmNoU2NvcGUoU2VhcmNoQ29udHJvbHMuU1VCVFJFRV9TQ09QRSk7CisJCU5hbWluZ0VudW1lcmF0aW9uPFNlYXJjaFJlc3VsdD4gcmVzdWx0cyA9IG51bGw7CisJCXRyeSB7CisJCQlyZXN1bHRzID0gYXV0aENvbnRleHQuc2VhcmNoKHNlYXJjaEJhc2UsIHNlYXJjaEZpbHRlciwgIHNlYXJjaEN0bHMpOworCQkJd2hpbGUgKHJlc3VsdHMuaGFzTW9yZSgpKSB7CisJCQkJU2VhcmNoUmVzdWx0IHNlYXJjaFJlc3VsdCA9IHJlc3VsdHMubmV4dCgpOworCQkJCS8vICdjbicgZ2V0cyB0aGUgbmFtZSBvZiB0aGUgZW50cnkgcmVsYXRpdmUgdG8gc2VhcmNoYmFzZSBmb3IgaW5zdGFuY2U6ICJ1aWQ9dXNlcixvdT1wZW9wbGUiCisJCQkJLy8gVGhlIGVudHJ5IEROIGlzIGZvdW5kIGJ5IGFwcGVuZGluZyB0aGUgc2VhcmNoYmFzZS4gRm9yIGluc3RhbmNlIGlmIHNlYXJjaGJhc2UgCisJCQkJLy8gaXMgKGRjPW15ZG9tYWluLGRjPW9yZyksIHRoZW4gRE49InVpZD11c2VyLG91PXBlb3BsZSxkYz1teWRvbWFpbixkYz1vcmciCisJCQkJU3RyaW5nIGNuID0gc2VhcmNoUmVzdWx0LmdldE5hbWUoKTsKKwkJCQlBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMgPSBzZWFyY2hSZXN1bHQuZ2V0QXR0cmlidXRlcygpOworCQkJCUF0dHJpYnV0ZSBhdHRyaWIgPSBhdHRyaWJ1dGVzLmdldChsZGFwX2ZpZWxkbmFtZV91c2VyX3ByaW5jaXBhbCk7CisJCQkJCisJCQkJaWYgKGF0dHJpYiAhPSBudWxsKSB7CisJCQkJCVN0cmluZyB1aWQgPSAoU3RyaW5nKSBhdHRyaWIuZ2V0KCk7CisJCQkJCXVpZENuRGljdGlvbmFyeS5wdXQodWlkLCBjbik7CisJCQkJfQorCQkJfQorCQl9IGNhdGNoIChOYW1pbmdFeGNlcHRpb24gZSkgeworCQkJbG9nLmVycm9yKCJFcnJvciBvY2N1cmVkIG9uIExEQVAgU2VhcmNoIDogIiArIGUuZ2V0TWVzc2FnZSgpKTsKKwkJCWxvZy5lcnJvcigiRXJyb3Igb2NjdXJlZCBvbiBMREFQIFNlYXJjaCA6ICIgLCBlKTsKKwkJfQorCQlyZXR1cm4gdWlkQ25EaWN0aW9uYXJ5OworCX0KKwkKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9sZGFwL0xkYXBMb2dpbk1hbmFnZW1lbnQuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9sZGFwL0xkYXBMb2dpbk1hbmFnZW1lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDg1NjBiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2xkYXAvTGRhcExvZ2luTWFuYWdlbWVudC5qYXZhCkBAIC0wLDAgKzEsODM3IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmxkYXA7CisKK2ltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuQ29uZmlndXJhdGlvbi5ERUZBVVRfTEFOR19LRVk7CisKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5SYW5kb207CitpbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLlNlc3Npb25kYXRhRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuZGFvLkNvbmZpZ3VyYXRpb25EYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5kYW8uTGRhcENvbmZpZ0RhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLmRhby5PbVRpbWVab25lRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEudXNlci5Vc2VyTWFuYWdlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuZGFvLlN0YXRlRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEudXNlci5kYW8uVXNlcnNEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MubGRhcC5jb25maWcuQ29uZmlnUmVhZGVyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLkxkYXBDb25maWc7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuT21UaW1lWm9uZTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tLkNsaWVudDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlN0YXRlOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuVXNlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5yZW1vdGUudXRpbC5TZXNzaW9uVmFyaWFibGVzVXRpbDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5PbUZpbGVIZWxwZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMuY3J5cHQuTWFuYWdlQ3J5cHRTdHlsZTsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5yZWQ1LnNlcnZlci5hcGkuSUNsaWVudDsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKKworLyoqCisgKiBNYW5hZ2VtZW50IG9mIG9wdGlvbmFsIExEQVAgTG9naW4KKyAqIAorICogQGF1dGhvciBvLmJlY2hlcmVyCisgKiAKKyAqLworcHVibGljIGNsYXNzIExkYXBMb2dpbk1hbmFnZW1lbnQgeworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoCisJCQlMZGFwTG9naW5NYW5hZ2VtZW50LmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBTZXNzaW9uZGF0YURhbyBzZXNzaW9uZGF0YURhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBDb25maWd1cmF0aW9uRGFvIGNvbmZpZ3VyYXRpb25EYW87CisJQEF1dG93aXJlZAorCXByaXZhdGUgVXNlck1hbmFnZXIgdXNlck1hbmFnZXI7CisJQEF1dG93aXJlZAorCXByaXZhdGUgU3RhdGVEYW8gc3RhdGVtYW5hZ2VtZW50OworCUBBdXRvd2lyZWQKKwlwcml2YXRlIExkYXBDb25maWdEYW8gbGRhcENvbmZpZ0RhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBPbVRpbWVab25lRGFvIG9tVGltZVpvbmVEYW9JbXBsOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIE1hbmFnZUNyeXB0U3R5bGUgY3J5cHRNYW5hZ2VyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFVzZXJzRGFvIHVzZXJzRGFvOworCisJLy8gRXh0ZXJuYWwgVXNlciBUeXBlcworCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVYVEVSTkFMX1VTRVJfVFlQRV9MREFQID0gIkxEQVAiOworCisJLy8gQ29uZmlnQ29uc3RhbnRzCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09ORklHS0VZX0xEQVBfVVJMID0gImxkYXBfY29ubl91cmwiOworCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIENPTkZJR0tFWV9MREFQX0FETUlOX0ROID0gImxkYXBfYWRtaW5fZG4iOworCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIENPTkZJR0tFWV9MREFQX0FETUlOX1BBU1NXRCA9ICJsZGFwX3Bhc3N3ZCI7CisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09ORklHS0VZX0xEQVBfU0VBUkNIX1NDT1BFID0gImxkYXBfc2VhcmNoX2Jhc2UiOworCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIENPTkZJR0tFWV9MREFQX1NFUlZFUl9UWVBFID0gImxkYXBfc2VydmVyX3R5cGUiOyAvLyBmb3IKKwkJCQkJCQkJCQkJCQkJCQkJCQkJLy8gT3BlbkxEQVAKKwkJCQkJCQkJCQkJCQkJCQkJCQkJLy8gdXNlCisJCQkJCQkJCQkJCQkJCQkJCQkJCS8vIG9ubHkKKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBDT05GSUdLRVlfTERBUF9BVVRIX1RZUEUgPSAibGRhcF9hdXRoX3R5cGUiOworCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09ORklHS0VZX0xEQVBfRklFTEROQU1FX1VTRVJfUFJJTkNJUEFMID0gImZpZWxkX3VzZXJfcHJpbmNpcGFsIjsKKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBDT05GSUdLRVlfTERBUF9TWU5DX1BBU1NXRF9PTSA9ICJsZGFwX3N5bmNfcGFzc3dvcmRfdG9fb20iOyAvLyAneWVzJworCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkvLyBvcgorCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkvLyAnbm8nCisKKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBDT05GSUdLRVlfTERBUF9VU0VfTE9XRVJfQ0FTRSA9ICJsZGFwX3VzZV9sb3dlcl9jYXNlIjsKKwkKKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBDT05GSUdLRVlfTERBUF9USU1FWk9ORV9OQU1FID0gImxkYXBfdXNlcl90aW1lem9uZSI7CisJCisJLyoqKgorCSAqIGZvciBmdXR1cmUgdXNlIChsZW1ldXIpIHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nCisJICogQ09ORklHS0VZX0xEQVBfVVNFUl9FWFRSQUZJTFRFUiA9ICJsZGFwX3VzZXJfZXh0cmFmaWx0ZXIiOyBwdWJsaWMgc3RhdGljCisJICogZmluYWwgU3RyaW5nIENPTkZJR0tFWV9MREFQX0dST1VQX0ZJTFRFUl9OVU0gPSAibGRhcF9ncm91cF9maWx0ZXJfbnVtIjsKKwkgKiBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBDT05GSUdLRVlfTERBUF9HUk9VUF9GSUxURVJfTkFNRV9QUkVGSVggPQorCSAqICJsZGFwX2dyb3VwX2ZpbHRlcl9uYW1lXyI7IHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nCisJICogQ09ORklHS0VZX0xEQVBfR1JPVVBfRklMVEVSX0JBU0VfUFJFRklYID0gImxkYXBfZ3JvdXBfZmlsdGVyX2Jhc2VfIjsKKwkgKiBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBDT05GSUdLRVlfTERBUF9HUk9VUF9GSUxURVJfVFlQRV9QUkVGSVggPQorCSAqICJsZGFwX2dyb3VwX2ZpbHRlcl90eXBlXyI7IHB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nCisJICogQ09ORklHS0VZX0xEQVBfR1JPVVBfRklMVEVSX1RFWFRfUFJFRklYID0gImxkYXBfZ3JvdXBfZmlsdGVyX3RleHRfIjsKKwkgKioqLworCisJLy8gTERBUCBkZWZhdWx0IGF0dHJpYnV0ZXMgbWFwcGluZworCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIExEQVBfS0VZX0xBU1ROQU1FID0gInNuIjsKKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBMREFQX0tFWV9GSVJTVE5BTUUgPSAiZ2l2ZW5OYW1lIjsKKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBMREFQX0tFWV9NQUlMID0gIm1haWwiOworCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIExEQVBfS0VZX1NUUkVFVCA9ICJzdHJlZXRBZGRyZXNzIjsKKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBMREFQX0tFWV9BRERJVElPTkFMX05BTUUgPSAiZGVzY3JpcHRpb24iOworCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIExEQVBfS0VZX0ZBWCA9ICJmYWNzaW1pbGVUZWxlcGhvbmVOdW1iZXIiOworCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIExEQVBfS0VZX1pJUCA9ICJwb3N0YWxDb2RlIjsKKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBMREFQX0tFWV9DT1VOVFJZID0gImNvIjsKKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBMREFQX0tFWV9UT1dOID0gImwiOworCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIExEQVBfS0VZX1BIT05FID0gInRlbGVwaG9uZU51bWJlciI7CisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgTERBUF9LRVlfVElNRVpPTkUgPSAidGltZXpvbmUiOworCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIExEQVBfS0VZX1BJQ1RVUkVfVVJJID0gInBpY3R1cmVVcmkiOworCisJLy8gTERBUCBjdXN0b20gYXR0cmlidXRlIG1hcHBpbmcga2V5cworCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIENPTkZJR0tFWV9MREFQX0tFWV9MQVNUTkFNRSA9ICJsZGFwX3VzZXJfYXR0cl9sYXN0bmFtZSI7CisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09ORklHS0VZX0xEQVBfS0VZX0ZJUlNUTkFNRSA9ICJsZGFwX3VzZXJfYXR0cl9maXJzdG5hbWUiOworCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIENPTkZJR0tFWV9MREFQX0tFWV9NQUlMID0gImxkYXBfdXNlcl9hdHRyX21haWwiOworCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIENPTkZJR0tFWV9MREFQX0tFWV9TVFJFRVQgPSAibGRhcF91c2VyX2F0dHJfc3RyZWV0IjsKKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBDT05GSUdLRVlfTERBUF9LRVlfQURESVRJT05BTF9OQU1FID0gImxkYXBfdXNlcl9hdHRyX2FkZGl0aW9uYWxuYW1lIjsKKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBDT05GSUdLRVlfTERBUF9LRVlfRkFYID0gImxkYXBfdXNlcl9hdHRyX2ZheCI7CisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09ORklHS0VZX0xEQVBfS0VZX1pJUCA9ICJsZGFwX3VzZXJfYXR0cl96aXAiOworCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIENPTkZJR0tFWV9MREFQX0tFWV9DT1VOVFJZID0gImxkYXBfdXNlcl9hdHRyX2NvdW50cnkiOworCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIENPTkZJR0tFWV9MREFQX0tFWV9UT1dOID0gImxkYXBfdXNlcl9hdHRyX3Rvd24iOworCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIENPTkZJR0tFWV9MREFQX0tFWV9QSE9ORSA9ICJsZGFwX3VzZXJfYXR0cl9waG9uZSI7CisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09ORklHS0VZX0xEQVBfUElDVFVSRV9VUkkgPSAibGRhcF91c2VyX3BpY3R1cmVfdXJpIjsKKworCS8qKgorCSAqIERldGVybWluZSBpZiBpcyBhIHN1cHBvcnRlZCBBdXRoIFR5cGUKKwkgKiAKKwkgKiBAcGFyYW0gYXV0aFR5cGUKKwkgKi8KKwkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJcHVibGljIHN0YXRpYyBib29sZWFuIGlzVmFsaWRBdXRoVHlwZShTdHJpbmcgYXV0aFR5cGUpIHsKKwkJbG9nLmRlYnVnKCJpc1ZhbGlkQXV0aFR5cGUiKTsKKworCQlpZiAoYXV0aFR5cGUgIT0gbnVsbCkgeworCQkJaWYgKCFhdXRoVHlwZS5pc0VtcHR5KCkpIHsKKwkJCQlpZiAoYXV0aFR5cGUKKwkJCQkJCS5lcXVhbHNJZ25vcmVDYXNlKExkYXBBdXRoQmFzZS5MREFQX0FVVEhfVFlQRV9TSU1QTEUpKQorCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQlpZiAoYXV0aFR5cGUuZXF1YWxzSWdub3JlQ2FzZShMZGFwQXV0aEJhc2UuTERBUF9BVVRIX1RZUEVfTk9ORSkpCisJCQkJCXJldHVybiB0cnVlOworCQkJfQorCQl9CisKKwkJcmV0dXJuIGZhbHNlOworCisJfQorCisJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJLyoqCisJICogTGRhcCBQYXNzd29yZCBTeW5jaCB0byBPTSBEQiBzZXQgYWN0aXZlID8gZGVmYXVsdHMgdG8gdHJ1ZSBpbiBjYXNlIG9mCisJICogZXJyb3Igc28gYXMgdG8ga2VlcCBvbGQgYmVoYXZpb3VyCisJICovCisJcHVibGljIGJvb2xlYW4gZ2V0TGRhcFB3ZFN5bmNoU3RhdHVzKExvbmcgbGRhcENvbmZpZ0lkKSB7IC8vIFRJQk8KKwkJLy8gUmV0cmlldmUgQ29uZmlndXJhdGlvbiBEYXRhCisJCUhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGNvbmZpZ0RhdGE7CisKKwkJTGRhcENvbmZpZyBsZGFwQ29uZmlnID0gbGRhcENvbmZpZ0Rhby5nZXQobGRhcENvbmZpZ0lkKTsKKworCQl0cnkgeworCQkJY29uZmlnRGF0YSA9IGdldExkYXBDb25maWdEYXRhKGxkYXBDb25maWcuZ2V0Q29uZmlnRmlsZU5hbWUoKSk7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCQlsb2cuZXJyb3IoIkVycm9yIG9uIGdldExkYXBQd2RTeW5jaFN0YXR1cyA6ICIgKyBlLmdldE1lc3NhZ2UoKSk7CisJCQlyZXR1cm4gdHJ1ZTsKKwkJfQorCisJCWlmIChjb25maWdEYXRhID09IG51bGwgfHwgY29uZmlnRGF0YS5zaXplKCkgPCAxKSB7CisJCQlsb2cuZXJyb3IoIkVycm9yIG9uIGdldExkYXBQd2RTeW5jaFN0YXR1cyA6IENvbmZpZ3VyYXRpb25kYXRhIGNvdWxkbnQgYmUgcmV0cmlldmVkISIpOworCQkJcmV0dXJuIHRydWU7CisJCX0KKworCQkvLyBDb25uZWN0aW9uIFVSTAorCQlTdHJpbmcgbGRhcF9zeW5jaF9wYXNzd2RfdG9fb20gPSBjb25maWdEYXRhCisJCQkJLmdldChDT05GSUdLRVlfTERBUF9TWU5DX1BBU1NXRF9PTSk7CisJCWlmIChsZGFwX3N5bmNoX3Bhc3N3ZF90b19vbS5lcXVhbHMoIm5vIikpIHsKKwkJCWxvZy5kZWJ1ZygiZ2V0TGRhcFB3ZFN5bmNoU3RhdHVzOiByZXR1cm5zIEZBTFNFICh2YWw9IgorCQkJCQkrIGxkYXBfc3luY2hfcGFzc3dkX3RvX29tICsgIikiKTsKKwkJCXJldHVybiBmYWxzZTsKKwkJfSBlbHNlIHsKKwkJCWxvZy5kZWJ1ZygiZ2V0TGRhcFB3ZFN5bmNoU3RhdHVzOiByZXR1cm5zIFRSVUUgKHZhbD0iCisJCQkJCSsgbGRhcF9zeW5jaF9wYXNzd2RfdG9fb20gKyAiKSIpOworCQkJcmV0dXJuIHRydWU7CisJCX0KKwl9CisKKwkvKioKKwkgKiBSZXRyaWV2aW5nIExkYXBEYXRhIGZyb20gQ29uZmlnCisJICovCisJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCXB1YmxpYyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBnZXRMZGFwQ29uZmlnRGF0YShTdHJpbmcgbGRhcENvbmZpZ2ZpbGVOYW1lKQorCQkJdGhyb3dzIEV4Y2VwdGlvbiB7CisJCWxvZy5kZWJ1ZygiTGRhcExvZ2lubWFuYWdlbWVudC5nZXRMZGFwQ29uZmlnRGF0YSIpOworCisJCXJldHVybiByZWFkQ29uZmlnKG5ldyBGaWxlKE9tRmlsZUhlbHBlci5nZXRDb25mRGlyKCksIGxkYXBDb25maWdmaWxlTmFtZSkpOworCX0KKworCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCS8qKgorCSAqIFJlYWRpbmcgTGRhcCBDb25maWcgdmlhIENvbmZpZ1JlYWRlcgorCSAqLworCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlwcml2YXRlIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IHJlYWRDb25maWcoRmlsZSBjb25maWcpCisJCQl0aHJvd3MgRXhjZXB0aW9uIHsKKwkJbG9nLmRlYnVnKCJMZGFwTG9naW5tYW5hZ2VtZW50LnJlYWRDb25maWcgOiAiICsgY29uZmlnKTsKKworCQlpZiAoIWNvbmZpZy5pc0ZpbGUoKSkKKwkJCXJldHVybiBudWxsOworCisJCUNvbmZpZ1JlYWRlciByZWFkZXIgPSBuZXcgQ29uZmlnUmVhZGVyKCk7CisJCXJlYWRlci5yZWFkQ29uZmlnKGNvbmZpZyk7CisKKwkJcmV0dXJuIHJlYWRlci5nZXRDb25maWdNYXAoKTsKKworCX0KKworCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCS8qKgorCSAqIExkYXAgTG9naW4KKwkgKiAKKwkgKiBDb25uZWN0aW9uIERhdGEgaXMgcmV0cmlldmVkIGZyb20gQ29uZmlndXJhdGlvbkZpbGUKKwkgKiAKKwkgKi8KKwkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJcHVibGljIE9iamVjdCBkb0xkYXBMb2dpbihTdHJpbmcgdXNlciwgU3RyaW5nIHBhc3N3ZCwKKwkJCUNsaWVudCBjdXJyZW50Q2xpZW50LCBJQ2xpZW50IGNsaWVudCwgU3RyaW5nIFNJRCwgU3RyaW5nIGRvbWFpbikgeworCQlsb2cuZGVidWcoIkxkYXBMb2dpbm1hbmFnZW1lbnQuZG9MZGFwTG9naW4iKTsKKworCQkvLyBSZXRyaWV2ZSBDb25maWd1cmF0aW9uIERhdGEKKwkJSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gY29uZmlnRGF0YTsKKworCQl0cnkgeworCQkJY29uZmlnRGF0YSA9IGdldExkYXBDb25maWdEYXRhKGRvbWFpbik7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCQlsb2cuZXJyb3IoIkVycm9yIG9uIExkYXBBdXRoIDogIiArIGUuZ2V0TWVzc2FnZSgpKTsKKwkJCXJldHVybiBudWxsOworCQl9CisKKwkJaWYgKGNvbmZpZ0RhdGEgPT0gbnVsbCB8fCBjb25maWdEYXRhLnNpemUoKSA8IDEpIHsKKwkJCWxvZy5lcnJvcigiRXJyb3Igb24gTGRhcExvZ2luIDogQ29uZmlndXJhdGlvbmRhdGEgY291bGRudCBiZSByZXRyaWV2ZWQhIik7CisJCQlyZXR1cm4gbnVsbDsKKwkJfQorCisJCS8vIENvbm5lY3Rpb24gVVJMCisJCVN0cmluZyBsZGFwX3VybCA9IGNvbmZpZ0RhdGEuZ2V0KENPTkZJR0tFWV9MREFQX1VSTCk7CisKKwkJLy8gZm9yIE9wZW5MREFQIG9ubHkKKwkJLy8gTERBUCBTRVJWRVIgVFlQRSB0byBzZWFyY2ggYWNjb3JkaW5nbHkKKwkJU3RyaW5nIGxkYXBfc2VydmVyX3R5cGUgPSBjb25maWdEYXRhLmdldChDT05GSUdLRVlfTERBUF9TRVJWRVJfVFlQRSk7CisKKwkJLy8gVXNlcm5hbWUgZm9yIExEQVAgU0VSVkVSIGhpbXNlbGYKKwkJU3RyaW5nIGxkYXBfYWRtaW5fZG4gPSBjb25maWdEYXRhLmdldChDT05GSUdLRVlfTERBUF9BRE1JTl9ETik7CisKKwkJLy8gUGFzc3dvcmQgZm9yIExEQVAgU0VSVkVSIGhpbXNlbGYKKwkJU3RyaW5nIGxkYXBfcGFzc3dkID0gY29uZmlnRGF0YS5nZXQoQ09ORklHS0VZX0xEQVBfQURNSU5fUEFTU1dEKTsKKworCQkvLyBTZWFyY2hTY29wZSBmb3IgcmV0cmlldm1lbnQgb2YgdXNlcmRhdGEKKwkJU3RyaW5nIGxkYXBfc2VhcmNoX3Njb3BlID0gY29uZmlnRGF0YS5nZXQoQ09ORklHS0VZX0xEQVBfU0VBUkNIX1NDT1BFKTsKKworCQkvLyBGaWVsZE5hbWUgZm9yIFVzZXJzJ3MgUHJpbmNpcGFsIE5hbWUKKwkJU3RyaW5nIGxkYXBfZmllbGRuYW1lX3VzZXJfcHJpbmNpcGFsID0gY29uZmlnRGF0YQorCQkJCS5nZXQoQ09ORklHS0VZX0xEQVBfRklFTEROQU1FX1VTRVJfUFJJTkNJUEFMKTsKKworCQkvLyBXZXRoZXIgb3Igbm90IHdlJ2xsIHN0b3JlIExkYXAgcGFzc3dkIGludG8gT00gZGIKKwkJYm9vbGVhbiBsZGFwX3N5bmNfcGFzc3dkX3RvX29tID0gIm5vIi5lcXVhbHMoY29uZmlnRGF0YS5nZXQoQ09ORklHS0VZX0xEQVBfU1lOQ19QQVNTV0RfT00pKTsKKworCQkvKioqCisJCSAqIGZvciBmdXR1cmUgdXNlIChsZW1ldXIpIC8vIExkYXAgdXNlciBmaWx0ZXIgdG8gcmVmaW5lIHRoZSBzZWFyY2gKKwkJICogU3RyaW5nIGxkYXBfdXNlcl9leHRyYWZpbHRlciA9CisJCSAqIGNvbmZpZ0RhdGEuZ2V0KENPTkZJR0tFWV9MREFQX1VTRVJfRVhUUkFGSUxURVIpOworCQkgKiAKKwkJICogLy8gQ291bnQgb2YgTGRhcCBncm91cCBmaWx0ZXJzIFN0cmluZyBsZGFwX2dyb3VwX2ZpbHRlcl9udW0gPQorCQkgKiBjb25maWdEYXRhLmdldChDT05GSUdLRVlfTERBUF9HUk9VUF9GSUxURVJfTlVNKTsKKwkJICogCisJCSAqIC8vIFByZWZpeCBuYW1lIG9mIExkYXAgZ3JvdXAgZmlsdGVyIG5hbWUgU3RyaW5nCisJCSAqIGxkYXBfZ3JvdXBfZmlsdGVyX25hbWVfcHJlZml4ID0KKwkJICogY29uZmlnRGF0YS5nZXQoQ09ORklHS0VZX0xEQVBfR1JPVVBfRklMVEVSX05BTUVfUFJFRklYKTsKKwkJICogCisJCSAqIC8vIFByZWZpeCBuYW1lIG9mIExkYXAgZ3JvdXAgZmlsdGVyIGJhc2UgU3RyaW5nCisJCSAqIGxkYXBfZ3JvdXBfZmlsdGVyX2Jhc2VfcHJlZml4ID0KKwkJICogY29uZmlnRGF0YS5nZXQoQ09ORklHS0VZX0xEQVBfR1JPVVBfRklMVEVSX05BTUVfUFJFRklYKTsKKwkJICogCisJCSAqIC8vIFByZWZpeCBuYW1lIG9mIExkYXAgZ3JvdXAgZmlsdGVyIHR5cGUgU3RyaW5nCisJCSAqIGxkYXBfZ3JvdXBfZmlsdGVyX3R5cGVfcHJlZml4ID0KKwkJICogY29uZmlnRGF0YS5nZXQoQ09ORklHS0VZX0xEQVBfR1JPVVBfRklMVEVSX1RZUEVfUFJFRklYKTsKKwkJICogCisJCSAqIC8vIFByZWZpeCBuYW1lIG9mIExkYXAgZ3JvdXAgZmlsdGVyIHRleHQgU3RyaW5nCisJCSAqIGxkYXBfZ3JvdXBfZmlsdGVyX3RleHRfcHJlZml4ID0KKwkJICogY29uZmlnRGF0YS5nZXQoQ09ORklHS0VZX0xEQVBfR1JPVVBfRklMVEVSX1RFWFRfUFJFRklYKTsKKwkJICoqKi8KKworCQkvLyBHZXQgY3VzdG9tIExkYXAgYXR0cmlidXRlcyBtYXBwaW5nCisJCVN0cmluZyBsZGFwX3VzZXJfYXR0cl9sYXN0bmFtZSA9IGNvbmZpZ0RhdGEuZ2V0KENPTkZJR0tFWV9MREFQX0tFWV9MQVNUTkFNRSk7CisJCVN0cmluZyBsZGFwX3VzZXJfYXR0cl9maXJzdG5hbWUgPSBjb25maWdEYXRhLmdldChDT05GSUdLRVlfTERBUF9LRVlfRklSU1ROQU1FKTsKKwkJU3RyaW5nIGxkYXBfdXNlcl9hdHRyX21haWwgPSBjb25maWdEYXRhLmdldChDT05GSUdLRVlfTERBUF9LRVlfTUFJTCk7CisJCVN0cmluZyBsZGFwX3VzZXJfYXR0cl9zdHJlZXQgPSBjb25maWdEYXRhLmdldChDT05GSUdLRVlfTERBUF9LRVlfU1RSRUVUKTsKKwkJU3RyaW5nIGxkYXBfdXNlcl9hdHRyX2FkZGl0aW9uYWxfbmFtZSA9IGNvbmZpZ0RhdGEuZ2V0KENPTkZJR0tFWV9MREFQX0tFWV9BRERJVElPTkFMX05BTUUpOworCQlTdHJpbmcgbGRhcF91c2VyX2F0dHJfZmF4ID0gY29uZmlnRGF0YS5nZXQoQ09ORklHS0VZX0xEQVBfS0VZX0ZBWCk7CisJCVN0cmluZyBsZGFwX3VzZXJfYXR0cl96aXAgPSBjb25maWdEYXRhLmdldChDT05GSUdLRVlfTERBUF9LRVlfWklQKTsKKwkJU3RyaW5nIGxkYXBfdXNlcl9hdHRyX2NvdW50cnkgPSBjb25maWdEYXRhLmdldChDT05GSUdLRVlfTERBUF9LRVlfQ09VTlRSWSk7CisJCVN0cmluZyBsZGFwX3VzZXJfYXR0cl90b3duID0gY29uZmlnRGF0YS5nZXQoQ09ORklHS0VZX0xEQVBfS0VZX1RPV04pOworCQlTdHJpbmcgbGRhcF91c2VyX2F0dHJfcGhvbmUgPSBjb25maWdEYXRhLmdldChDT05GSUdLRVlfTERBUF9LRVlfUEhPTkUpOworCQlTdHJpbmcgbGRhcF91c2VyX2F0dHJfdGltZXpvbmUgPSBjb25maWdEYXRhLmdldChDT05GSUdLRVlfTERBUF9USU1FWk9ORV9OQU1FKTsKKwkJU3RyaW5nIGxkYXBfdXNlcl9waWN0dXJlX3VyaSA9IGNvbmZpZ0RhdGEuZ2V0KENPTkZJR0tFWV9MREFQX1BJQ1RVUkVfVVJJKTsKKwkJU3RyaW5nIGxkYXBfdXNlX2xvd2VyX2Nhc2UgPSBjb25maWdEYXRhLmdldChDT05GSUdLRVlfTERBUF9VU0VfTE9XRVJfQ0FTRSk7CisJCQorCQkKKwkJaWYgKGxkYXBfdXNlX2xvd2VyX2Nhc2UgIT0gbnVsbCAmJiBsZGFwX3VzZV9sb3dlcl9jYXNlLmVxdWFscygidHJ1ZSIpKSB7CisJCQl1c2VyID0gdXNlci50b0xvd2VyQ2FzZSgpOworCQl9CisKKwkJaWYgKGxkYXBfdXNlcl9hdHRyX2xhc3RuYW1lID09IG51bGwpIHsKKwkJCWxkYXBfdXNlcl9hdHRyX2xhc3RuYW1lID0gTERBUF9LRVlfTEFTVE5BTUU7CisJCX0KKwkJaWYgKGxkYXBfdXNlcl9hdHRyX2ZpcnN0bmFtZSA9PSBudWxsKSB7CisJCQlsZGFwX3VzZXJfYXR0cl9maXJzdG5hbWUgPSBMREFQX0tFWV9GSVJTVE5BTUU7CisJCX0KKwkJaWYgKGxkYXBfdXNlcl9hdHRyX21haWwgPT0gbnVsbCkgeworCQkJbGRhcF91c2VyX2F0dHJfbWFpbCA9IExEQVBfS0VZX01BSUw7CisJCX0KKwkJaWYgKGxkYXBfdXNlcl9hdHRyX3N0cmVldCA9PSBudWxsKSB7CisJCQlsZGFwX3VzZXJfYXR0cl9zdHJlZXQgPSBMREFQX0tFWV9TVFJFRVQ7CisJCX0KKwkJaWYgKGxkYXBfdXNlcl9hdHRyX2FkZGl0aW9uYWxfbmFtZSA9PSBudWxsKSB7CisJCQlsZGFwX3VzZXJfYXR0cl9hZGRpdGlvbmFsX25hbWUgPSBMREFQX0tFWV9BRERJVElPTkFMX05BTUU7CisJCX0KKwkJaWYgKGxkYXBfdXNlcl9hdHRyX2ZheCA9PSBudWxsKSB7CisJCQlsZGFwX3VzZXJfYXR0cl9mYXggPSBMREFQX0tFWV9GQVg7CisJCX0KKwkJaWYgKGxkYXBfdXNlcl9hdHRyX3ppcCA9PSBudWxsKSB7CisJCQlsZGFwX3VzZXJfYXR0cl96aXAgPSBMREFQX0tFWV9aSVA7CisJCX0KKwkJaWYgKGxkYXBfdXNlcl9hdHRyX2NvdW50cnkgPT0gbnVsbCkgeworCQkJbGRhcF91c2VyX2F0dHJfY291bnRyeSA9IExEQVBfS0VZX0NPVU5UUlk7CisJCX0KKwkJaWYgKGxkYXBfdXNlcl9hdHRyX3Rvd24gPT0gbnVsbCkgeworCQkJbGRhcF91c2VyX2F0dHJfdG93biA9IExEQVBfS0VZX1RPV047CisJCX0KKwkJaWYgKGxkYXBfdXNlcl9hdHRyX3Bob25lID09IG51bGwpIHsKKwkJCWxkYXBfdXNlcl9hdHRyX3Bob25lID0gTERBUF9LRVlfUEhPTkU7CisJCX0KKwkJaWYgKGxkYXBfdXNlcl9hdHRyX3RpbWV6b25lID09IG51bGwpIHsKKwkJCWxkYXBfdXNlcl9hdHRyX3RpbWV6b25lID0gTERBUF9LRVlfVElNRVpPTkU7CisJCX0KKworCQkvLyBBdXRoIFR5cGUKKwkJU3RyaW5nIGxkYXBfYXV0aF90eXBlID0gY29uZmlnRGF0YS5nZXQoQ09ORklHS0VZX0xEQVBfQVVUSF9UWVBFKTsKKworCQlpZiAobGRhcF9hdXRoX3R5cGUgPT0gbnVsbCkgeworCQkJbGRhcF9hdXRoX3R5cGUgPSAiIjsKKwkJfQorCisJCWlmICghaXNWYWxpZEF1dGhUeXBlKGxkYXBfYXV0aF90eXBlKSkgeworCQkJbG9nLmVycm9yKCJDb25maWdLZXkgaW4gTGRhcCBDb25maWcgY29udGFpbnMgaW52YWxpZCBhdXRoIHR5cGUgOiAnIgorCQkJCQkrIGxkYXBfYXV0aF90eXBlICsgIicgLT4gRGVmYXVsdGluZyB0byAiCisJCQkJCSsgTGRhcEF1dGhCYXNlLkxEQVBfQVVUSF9UWVBFX1NJTVBMRSk7CisJCQlsZGFwX2F1dGhfdHlwZSA9IExkYXBBdXRoQmFzZS5MREFQX0FVVEhfVFlQRV9TSU1QTEU7CisJCX0KKworCQkvLyBGaWx0ZXIgZm9yIFNlYXJjaCBvZiBVc2VyRGF0YQorCQlTdHJpbmcgbGRhcF9zZWFyY2hfZmlsdGVyID0gIigiICsgbGRhcF9maWVsZG5hbWVfdXNlcl9wcmluY2lwYWwgKyAiPSIgKyB1c2VyICsgIikiOworCisJCWxvZy5kZWJ1ZygiU2VhcmNoaW5nIHVzZXJkYXRhIHdpdGggTERBUCBTZWFyY2ggRmlsdGVyIDoiICsgbGRhcF9zZWFyY2hfZmlsdGVyKTsKKworCQkvLyByZXBsYWNlIDogLT4gaW4gY29uZmlnID0gYXJlIHJlcGxhY2VkIGJ5IDogdG8gYmUgYWJsZSB0byBidWlsZCB2YWxpZAorCQkvLyBrZXk9dmFsdWUgcGFpcnMKKwkJbGRhcF9zZWFyY2hfc2NvcGUgPSBsZGFwX3NlYXJjaF9zY29wZS5yZXBsYWNlQWxsKCI6IiwgIj0iKTsKKwkJbGRhcF9hZG1pbl9kbiA9IGxkYXBfYWRtaW5fZG4ucmVwbGFjZUFsbCgiOiIsICI9Iik7CisKKwkJTGRhcEF1dGhCYXNlIGxBdXRoID0gbmV3IExkYXBBdXRoQmFzZShsZGFwX3VybCwgbGRhcF9hZG1pbl9kbiwgbGRhcF9wYXNzd2QsIGxkYXBfYXV0aF90eXBlKTsKKworCQlsb2cuZGVidWcoImF1dGhlbnRpY2F0aW5nIGFkbWluLi4uIik7CisJCWxBdXRoLmF1dGhlbnRpY2F0ZVVzZXIobGRhcF9hZG1pbl9kbiwgbGRhcF9wYXNzd2QpOworCisJCWxvZy5kZWJ1ZygiQ2hlY2tpbmcgc2VydmVyIHR5cGUuLi4iKTsKKwkJLy8gZm9yIE9wZW5MREFQIG9ubHkKKwkJaWYgKGxkYXBfc2VydmVyX3R5cGUuZXF1YWxzSWdub3JlQ2FzZSgiT3BlbkxEQVAiKSkgeworCQkJU3RyaW5nIGxkYXBVc2VyRE4gPSB1c2VyOworCQkJbG9nLmRlYnVnKCJMREFQIHNlcnZlciBpcyBPcGVuTERBUCIpOworCQkJbG9nLmRlYnVnKCJMREFQIHNlYXJjaCBiYXNlOiAiICsgbGRhcF9zZWFyY2hfc2NvcGUpOworCQkJSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gdWlkQ25EaWN0aW9uYXJ5ID0gbEF1dGguZ2V0VWlkQ25IYXNoTWFwKAorCQkJCQlsZGFwX3NlYXJjaF9zY29wZSwgbGRhcF9zZWFyY2hfZmlsdGVyLCBsZGFwX2ZpZWxkbmFtZV91c2VyX3ByaW5jaXBhbCk7CisJCQlpZiAodWlkQ25EaWN0aW9uYXJ5LmdldCh1c2VyKSAhPSBudWxsKSB7CisJCQkJbGRhcFVzZXJETiA9IHVpZENuRGljdGlvbmFyeS5nZXQodXNlcikgKyAiLCIgKyBsZGFwX3NlYXJjaF9zY29wZTsKKwkJCQlsb2cuZGVidWcoIkF1dGhlbnRpY2F0aW9uIHdpdGggRE46ICIgKyBsZGFwVXNlckROKTsKKwkJCX0KKwkJCXRyeSB7CisJCQkJaWYgKCFsQXV0aC5hdXRoZW50aWNhdGVVc2VyKGxkYXBVc2VyRE4sIHBhc3N3ZCkpIHsKKwkJCQkJbG9nLmVycm9yKGxkYXBVc2VyRE4gKyAiIG5vdCBhdXRoZW50aWNhdGVkLiIpOworCQkJCQlyZXR1cm4gbmV3IExvbmcoLTExKTsKKwkJCQl9CisJCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJCWxvZy5lcnJvcigiRXJyb3Igb24gTGRhcEF1dGggOiAiICsgZS5nZXRNZXNzYWdlKCkpOworCQkJCXJldHVybiBudWxsOworCQkJfQorCQl9IGVsc2UgeworCQkJdHJ5IHsKKwkJCQlpZiAoIWxBdXRoLmF1dGhlbnRpY2F0ZVVzZXIodXNlciwgcGFzc3dkKSkgeworCQkJCQlyZXR1cm4gbmV3IExvbmcoLTExKTsKKwkJCQl9CisJCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJCWxvZy5lcnJvcigiRXJyb3Igb24gTGRhcEF1dGggOiAiICsgZS5nZXRNZXNzYWdlKCkpOworCQkJCXJldHVybiBudWxsOworCQkJfQorCQl9CisKKwkJLy8gY2hlY2sgaWYgdXNlciBhbHJlYWR5IGV4aXN0cworCisJCVVzZXIgdSA9IG51bGw7CisKKwkJdHJ5IHsKKwkJCXUgPSB1c2VyTWFuYWdlci5nZXRVc2VyQnlMb2dpbih1c2VyKTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCWxvZy5lcnJvcigiRXJyb3IgcmV0cmlldmluZyBVc2VyZGF0YSA6ICIgKyBlLmdldE1lc3NhZ2UoKSk7CisJCX0KKwkJCisJCS8vIEF0dHJpYnV0ZXMgdG8gcmV0cmlldmUgZnJvbSBsZGFwIHRvIGVpdGhlciBjcmVhdGUgb3IgdXBkYXRlIHRoZSB1c2VyCisJCUxpc3Q8U3RyaW5nPiBhdHRyaWJ1dGVzID0gbmV3IEFycmF5TGlzdDxTdHJpbmc+KCk7CisJCWF0dHJpYnV0ZXMuYWRkKGxkYXBfdXNlcl9hdHRyX2xhc3RuYW1lKTsgLy8gTGFzdG5hbWUKKwkJYXR0cmlidXRlcy5hZGQobGRhcF91c2VyX2F0dHJfZmlyc3RuYW1lKTsgLy8gRmlyc3RuYW1lCisJCWF0dHJpYnV0ZXMuYWRkKGxkYXBfdXNlcl9hdHRyX21haWwpOy8vIG1haWwKKwkJYXR0cmlidXRlcy5hZGQobGRhcF91c2VyX2F0dHJfc3RyZWV0KTsgLy8gU3RyZWV0CisJCWF0dHJpYnV0ZXMuYWRkKGxkYXBfdXNlcl9hdHRyX2FkZGl0aW9uYWxfbmFtZSk7IC8vIEFkZGl0aW9uYWwgbmFtZQorCQlhdHRyaWJ1dGVzLmFkZChsZGFwX3VzZXJfYXR0cl9mYXgpOyAvLyBGYXgKKwkJYXR0cmlidXRlcy5hZGQobGRhcF91c2VyX2F0dHJfemlwKTsgLy8gWklQCisJCWF0dHJpYnV0ZXMuYWRkKGxkYXBfdXNlcl9hdHRyX2NvdW50cnkpOyAvLyBDb3VudHJ5CisJCWF0dHJpYnV0ZXMuYWRkKGxkYXBfdXNlcl9hdHRyX3Rvd24pOyAvLyBUb3duCisJCWF0dHJpYnV0ZXMuYWRkKGxkYXBfdXNlcl9hdHRyX3Bob25lKTsgLy8gUGhvbmUKKwkJYXR0cmlidXRlcy5hZGQobGRhcF91c2VyX2F0dHJfdGltZXpvbmUpOyAvLyB0aW1lem9uZQorCQlpZiAobGRhcF91c2VyX3BpY3R1cmVfdXJpICE9IG51bGwpIHsKKwkJCWF0dHJpYnV0ZXMuYWRkKGxkYXBfdXNlcl9waWN0dXJlX3VyaSk7IC8vcGljdHVyZSB1cmkKKwkJfQorCQkKKwkJSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbGRhcEF0dHJzID0gbmV3IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+KCk7CisJCWxkYXBBdHRycy5wdXQoImxhc3RuYW1lQXR0ciIsIGxkYXBfdXNlcl9hdHRyX2xhc3RuYW1lKTsKKwkJbGRhcEF0dHJzLnB1dCgiZmlyc3RuYW1lQXR0ciIsIGxkYXBfdXNlcl9hdHRyX2ZpcnN0bmFtZSk7CisJCWxkYXBBdHRycy5wdXQoIm1haWxBdHRyIiwgbGRhcF91c2VyX2F0dHJfbWFpbCk7CisJCWxkYXBBdHRycy5wdXQoInN0cmVldEF0dHIiLCBsZGFwX3VzZXJfYXR0cl9zdHJlZXQpOworCQlsZGFwQXR0cnMucHV0KCJhZGRpdGlvbmFsTmFtZUF0dHIiLCBsZGFwX3VzZXJfYXR0cl9hZGRpdGlvbmFsX25hbWUpOworCQlsZGFwQXR0cnMucHV0KCJmYXhBdHRyIiwgbGRhcF91c2VyX2F0dHJfZmF4KTsKKwkJbGRhcEF0dHJzLnB1dCgiemlwQXR0ciIsIGxkYXBfdXNlcl9hdHRyX3ppcCk7CisJCWxkYXBBdHRycy5wdXQoImNvdW50cnlBdHRyIiwgbGRhcF91c2VyX2F0dHJfY291bnRyeSk7CisJCWxkYXBBdHRycy5wdXQoInRvd25BdHRyIiwgbGRhcF91c2VyX2F0dHJfdG93bik7CisJCWxkYXBBdHRycy5wdXQoInBob25lQXR0ciIsIGxkYXBfdXNlcl9hdHRyX3Bob25lKTsKKwkJbGRhcEF0dHJzLnB1dCgidGltZXpvbmVBdHRyIiwgbGRhcF91c2VyX2F0dHJfdGltZXpvbmUpOworCQlpZiAobGRhcF91c2VyX3BpY3R1cmVfdXJpICE9IG51bGwpIHsKKwkJCWxkYXBBdHRycy5wdXQoInBpY3R1cmVVcmkiLCBsZGFwX3VzZXJfcGljdHVyZV91cmkpOworCQl9CisKKwkJVmVjdG9yPEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+PiByZXN1bHQgPSBsQXV0aC5nZXREYXRhKAorCQkJCWxkYXBfc2VhcmNoX3Njb3BlLCBsZGFwX3NlYXJjaF9maWx0ZXIsIGF0dHJpYnV0ZXMpOworCisJCWlmIChyZXN1bHQgPT0gbnVsbCB8fCByZXN1bHQuc2l6ZSgpIDwgMSkgeworCQkJbG9nLmVycm9yKCJFcnJvciBvbiBMZGFwIHJlcXVlc3QgLSBubyByZXN1bHQgZm9yIHVzZXIgIiArIHVzZXIpOworCQkJcmV0dXJuIG5ldyBMb25nKC0xMCk7CisJCX0KKwkJCisJCWlmIChyZXN1bHQuc2l6ZSgpID4gMSkgeworCQkJbG9nLmVycm9yKCJFcnJvciBvbiBMZGFwIHJlcXVlc3QgLSBtb3JlIHRoYW4gb25lIHJlc3VsdCBmb3IgdXNlciAiICsgdXNlcik7CisJCQlyZXR1cm4gbnVsbDsKKwkJfQorCQkKKwkJSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gdXNlckRhdGEgPSByZXN1bHQuZ2V0KDApOworCisKKwkJLy8gVXNlciBub3QgZXhpc3RhbnQgaW4gbG9jYWwgZGF0YWJhc2UgLT4gdGFrZSBvdmVyIGRhdGEgZm9yIHJlZmVyZW50aWFsCisJCS8vIGludGVncml0eQorCQlpZiAodSA9PSBudWxsKSB7CisJCQlsb2cuZGVidWcoInVzZXIgZG9lc250IGV4aXN0IGxvY2FsIC0+IGNyZWF0ZSBuZXciKTsKKworCQkJdHJ5IHsKKwkJCQkvLyBDcmVhdGUgVXNlciB3aXRoIExkYXBEYXRhCisJCQkJTG9uZyB1c2VyaWQ7CisJCQkJaWYgKGxkYXBfc3luY19wYXNzd2RfdG9fb20pIHsKKwkJCQkJUmFuZG9tIHIgPSBuZXcgUmFuZG9tKCk7CisJCQkJCVN0cmluZyB0b2tlbiA9IExvbmcudG9TdHJpbmcoTWF0aC5hYnMoci5uZXh0TG9uZygpKSwgMzYpOworCQkJCQlsb2cuZGVidWcoIlN5bmNoaW5nIExkYXAgdXNlciB0byBPTSBEQiB3aXRoIFJBTkRPTSBwYXNzd29yZDogIgorCQkJCQkJCSsgdG9rZW4pOworCQkJCQl1c2VyaWQgPSBjcmVhdGVVc2VyRnJvbUxkYXBEYXRhKHVzZXJEYXRhLCB0b2tlbiwgdXNlciwgbGRhcEF0dHJzKTsKKwkJCQl9IGVsc2UgeworCQkJCQlsb2cuZGVidWcoIlN5bmNoaW5nIExkYXAgdXNlciB0byBPTSBEQiB3aXRoIHBhc3N3b3JkIik7CisJCQkJCXVzZXJpZCA9IGNyZWF0ZVVzZXJGcm9tTGRhcERhdGEodXNlckRhdGEsIHBhc3N3ZCwgdXNlciwgbGRhcEF0dHJzKTsKKwkJCQl9CisJCQkJbG9nLmRlYnVnKCJOZXcgVXNlciBJRCA6ICIgKyB1c2VyaWQpOworCisJCQkJLy8gSWYgaW52b2tlZCB2aWEgU09BUCB0aGlzIGlzIE5VTEwKKwkJCQlpZiAoY3VycmVudENsaWVudCAhPSBudWxsKSB7CisJCQkJCWN1cnJlbnRDbGllbnQuc2V0VXNlcl9pZCh1c2VyaWQpOworCQkJCQlTZXNzaW9uVmFyaWFibGVzVXRpbC5zZXRVc2VySWQoY2xpZW50LCB1c2VyaWQpOworCQkJCX0KKworCQkJCS8vIFVwZGF0ZSBTZXNzaW9uCisJCQkJQm9vbGVhbiBib29sID0gc2Vzc2lvbmRhdGFEYW8udXBkYXRlVXNlcihTSUQsIHVzZXJpZCk7CisKKwkJCQlpZiAoYm9vbCA9PSBudWxsKSB7CisJCQkJCS8vIEV4Y2VwdGlvbgorCQkJCQlsb2cuZXJyb3IoIkVycm9yIG9uIFVwZGF0aW5nIFNlc3Npb24iKTsKKwkJCQkJcmV0dXJuIG5ldyBMb25nKC0xKTsKKwkJCQl9IGVsc2UgaWYgKCFib29sKSB7CisJCQkJCS8vIGludmFsaWQgU2Vzc2lvbi1PYmplY3QKKwkJCQkJbG9nLmVycm9yKCJJbnZhbGlkIFNlc3Npb24gT2JqZWN0Iik7CisJCQkJCXJldHVybiBuZXcgTG9uZygtMzUpOworCQkJCX0KKworCQkJCS8vIFJldHVybiBVc2VyT2JqZWN0CisJCQkJVXNlciB1MiA9IHVzZXJNYW5hZ2VyLmdldFVzZXJCeUlkKHVzZXJpZCk7CisKKwkJCQlpZiAodTIgPT0gbnVsbCkKKwkJCQkJcmV0dXJuIG5ldyBMb25nKC0xKTsKKworCQkJCXUyLnNldEV4dGVybmFsVXNlclR5cGUoRVhURVJOQUxfVVNFUl9UWVBFX0xEQVApOyAvLyBUSUJPCisKKwkJCQkvLyBpbml0aWFsaXplIGxhenkgY29sbGVjdGlvbgorCQkJCXVzZXJNYW5hZ2VyLnJlZnJlc2hVc2VyT2JqZWN0KHUyKTsKKworCQkJCWxvZy5kZWJ1ZygiZ2V0VXNlcmJ5SWQgOiAiICsgdXNlcmlkICsgIiA6ICIgKyB1Mi5nZXRMb2dpbigpKTsKKworCQkJCXJldHVybiB1MjsKKworCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCQlsb2cuZXJyb3IoIkVycm9yIG9uIFdvcmtpbmcgVXNlcmRhdGEgOiAiLCBlKTsKKwkJCQlyZXR1cm4gbmV3IExvbmcoLTEpOworCQkJfQorCQl9IGVsc2UgeworCQkJLy8gVXNlciBleGlzdHMsIGp1c3QgdXBkYXRlIG5lY2Vzc2FyeSB2YWx1ZXMKKwkJCWxvZy5kZWJ1ZygiVXNlciBhbHJlYWR5IGV4aXN0cyAtPiBVcGRhdGUgb2YgY3VycmVudCBwYXNzd2QiKTsKKworCQkJLy8gSWYgaW52b2tlZCB2aWEgU09BUCB0aGlzIGlzIE5VTEwKKwkJCWlmIChjdXJyZW50Q2xpZW50ICE9IG51bGwpIHsKKwkJCQljdXJyZW50Q2xpZW50LnNldFVzZXJfaWQodS5nZXRVc2VyX2lkKCkpOworCQkJfQorCisJCQkvLyBVcGRhdGUgU2Vzc2lvbgorCQkJQm9vbGVhbiBib29sID0gc2Vzc2lvbmRhdGFEYW8udXBkYXRlVXNlcihTSUQsIHUuZ2V0VXNlcl9pZCgpKTsKKworCQkJaWYgKGJvb2wgPT0gbnVsbCkgeworCQkJCS8vIEV4Y2VwdGlvbgorCQkJCWxvZy5lcnJvcigiRXJyb3Igb24gVXBkYXRpbmcgU2Vzc2lvbiIpOworCQkJCXJldHVybiBuZXcgTG9uZygtMSk7CisJCQl9IGVsc2UgaWYgKCFib29sKSB7CisJCQkJLy8gaW52YWxpZCBTZXNzaW9uLU9iamVjdAorCQkJCWxvZy5lcnJvcigiSW52YWxpZCBTZXNzaW9uIE9iamVjdCIpOworCQkJCXJldHVybiBuZXcgTG9uZygtMzUpOworCQkJfQorCisJCQl0cnkgeworCQkJCS8vIFVwZGF0ZSBwYXNzd29yZCAoY291bGQgaGF2ZSBjaGFuZ2VkIGluIExEQVApCisJCQkJaWYgKGxkYXBfc3luY19wYXNzd2RfdG9fb20pIHsKKwkJCQkJdS51cGRhdGVQYXNzd29yZChjcnlwdE1hbmFnZXIsIGNvbmZpZ3VyYXRpb25EYW8sIHBhc3N3ZCk7CisJCQkJfQorCQkJCQorCQkJCS8vdXBkYXRlIGFsbCBvdGhlciBhdHRyaWJ1dGVzIGluIGNhc2UgbGRhcCBwcm92aWRlcyBzb21lIGFuZCB0aGUgcGFyYW1ldGVyIGlzIGNvbmZpZ3VyZWQKKwkJCQl1cGRhdGVVc2VyRnJvbUxkYXAodXNlckRhdGEsIGxkYXBBdHRycywgdSk7CisKKwkJCQl1c2Vyc0Rhby51cGRhdGUodSwgbnVsbCk7CisJCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJCWxvZy5lcnJvcigiRXJyb3IgdXBkYXRpbmcgdXNlciA6ICIgKyBlLmdldE1lc3NhZ2UoKSk7CisJCQkJcmV0dXJuIG5ldyBMb25nKC0xKTsKKwkJCX0KKworCQkJcmV0dXJuIHU7CisKKwkJfQorCX0KKwkKKwkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwkvKioKKwkgKiBDcmVhdGlvbiBvbiBVc2VyIHdpdGggTERBUCAtIERhdGEgQXV0b0NyZWF0aW9uIG9mIENvdW50cnkgaWYgZG9lcyBub3QgZXhpc3QKKwkgKiBBZGRlZCB0byBkZWZhdWx0IG9yZ2FuaXphdGlvbgorCSAqLworCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlwcml2YXRlIExvbmcgY3JlYXRlVXNlckZyb21MZGFwRGF0YShIYXNoTWFwPFN0cmluZywgU3RyaW5nPiB1c2VyZGF0YSwKKwkJCVN0cmluZyBwYXNzd2QsIFN0cmluZyBsb2dpbiwgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbGRhcEF0dHJzKQorCQkJdGhyb3dzIEV4Y2VwdGlvbiB7CisJCWxvZy5kZWJ1ZygiTGRhcExvZ2lubWFuYWdlbWVudC5jcmVhdGVVc2VyRnJvbUxkYXBEYXRhIik7CisKKwkJLy8gUmV0cmlldmUgRGF0YSBmcm9tIExEQVAgLSBEYXRhCisKKwkJU3RyaW5nIGxhc3RuYW1lID0gImxhc3RuYW1lIjsKKwkJaWYgKHVzZXJkYXRhLmNvbnRhaW5zS2V5KGxkYXBBdHRycy5nZXQoImxhc3RuYW1lQXR0ciIpKQorCQkJCSYmIHVzZXJkYXRhLmdldChsZGFwQXR0cnMuZ2V0KCJsYXN0bmFtZUF0dHIiKSkgIT0gbnVsbCkKKwkJCWxhc3RuYW1lID0gdXNlcmRhdGEuZ2V0KGxkYXBBdHRycy5nZXQoImxhc3RuYW1lQXR0ciIpKTsKKworCQlTdHJpbmcgZmlyc3RuYW1lID0gImZpcnN0bmFtZSI7CisJCWlmICh1c2VyZGF0YS5jb250YWluc0tleShsZGFwQXR0cnMuZ2V0KCJmaXJzdG5hbWVBdHRyIikpCisJCQkJJiYgdXNlcmRhdGEuZ2V0KGxkYXBBdHRycy5nZXQoImZpcnN0bmFtZUF0dHIiKSkgIT0gbnVsbCkKKwkJCWZpcnN0bmFtZSA9IHVzZXJkYXRhLmdldChsZGFwQXR0cnMuZ2V0KCJmaXJzdG5hbWVBdHRyIikpOworCisJCVN0cmluZyBlbWFpbCA9ICJlbWFpbCI7CisJCWlmICh1c2VyZGF0YS5jb250YWluc0tleShsZGFwQXR0cnMuZ2V0KCJtYWlsQXR0ciIpKQorCQkJCSYmIHVzZXJkYXRhLmdldChsZGFwQXR0cnMuZ2V0KCJtYWlsQXR0ciIpKSAhPSBudWxsKQorCQkJZW1haWwgPSB1c2VyZGF0YS5nZXQobGRhcEF0dHJzLmdldCgibWFpbEF0dHIiKSk7CisKKwkJU3RyaW5nIHN0cmVldCA9ICJzdHJlZXQiOworCQlpZiAodXNlcmRhdGEuY29udGFpbnNLZXkobGRhcEF0dHJzLmdldCgic3RyZWV0QXR0ciIpKQorCQkJCSYmIHVzZXJkYXRhLmdldChsZGFwQXR0cnMuZ2V0KCJzdHJlZXRBdHRyIikpICE9IG51bGwpCisJCQlzdHJlZXQgPSB1c2VyZGF0YS5nZXQobGRhcEF0dHJzLmdldCgic3RyZWV0QXR0ciIpKTsKKworCQlTdHJpbmcgYWRkaXRpb25hbG5hbWUgPSAiYWRkaXRpb25hbG5hbWUiOworCQlpZiAodXNlcmRhdGEuY29udGFpbnNLZXkobGRhcEF0dHJzLmdldCgiYWRkaXRpb25hbE5hbWVBdHRyIikpCisJCQkJJiYgdXNlcmRhdGEuZ2V0KGxkYXBBdHRycy5nZXQoImFkZGl0aW9uYWxOYW1lQXR0ciIpKSAhPSBudWxsKQorCQkJYWRkaXRpb25hbG5hbWUgPSB1c2VyZGF0YS5nZXQobGRhcEF0dHJzLmdldCgiYWRkaXRpb25hbE5hbWVBdHRyIikpOworCisJCVN0cmluZyBmYXggPSAiZmF4IjsKKwkJaWYgKHVzZXJkYXRhLmNvbnRhaW5zS2V5KGxkYXBBdHRycy5nZXQoImZheEF0dHIiKSkKKwkJCQkmJiB1c2VyZGF0YS5nZXQobGRhcEF0dHJzLmdldCgiZmF4QXR0ciIpKSAhPSBudWxsKQorCQkJZmF4ID0gdXNlcmRhdGEuZ2V0KGxkYXBBdHRycy5nZXQoImZheEF0dHIiKSk7CisKKwkJU3RyaW5nIHppcCA9ICJ6aXAiOworCQlpZiAodXNlcmRhdGEuY29udGFpbnNLZXkobGRhcEF0dHJzLmdldCgiemlwQXR0ciIpKQorCQkJCSYmIHVzZXJkYXRhLmdldChsZGFwQXR0cnMuZ2V0KCJ6aXBBdHRyIikpICE9IG51bGwpCisJCQl6aXAgPSB1c2VyZGF0YS5nZXQobGRhcEF0dHJzLmdldCgiemlwQXR0ciIpKTsKKworCQlsb25nIHN0YXRlX2lkID0gLTE7CisJCVN0cmluZyBzdGF0ZSA9IG51bGw7CisJCWlmICh1c2VyZGF0YS5jb250YWluc0tleShsZGFwQXR0cnMuZ2V0KCJjb3VudHJ5QXR0ciIpKQorCQkJCSYmIHVzZXJkYXRhLmdldChsZGFwQXR0cnMuZ2V0KCJjb3VudHJ5QXR0ciIpKSAhPSBudWxsKQorCQkJc3RhdGUgPSB1c2VyZGF0YS5nZXQobGRhcEF0dHJzLmdldCgiY291bnRyeUF0dHIiKSk7CisJCQorCQlpZiAoc3RhdGUgIT0gbnVsbCkgeworCQkJLy8gTG9va3VwIGZvciBzdGF0ZXMKKwkJCVN0YXRlIG9uZVN0YXRlID0gc3RhdGVtYW5hZ2VtZW50LmdldFN0YXRlQnlOYW1lKHN0YXRlKTsKKwkJCWlmIChvbmVTdGF0ZSAhPSBudWxsKSB7CisJCQkJc3RhdGVfaWQgPSBvbmVTdGF0ZS5nZXRTdGF0ZV9pZCgpOworCQkJfQorCQl9CisKKwkJLy8gQ3JlYXRlIENvdW50cnkKKwkJaWYgKHN0YXRlX2lkIDwgMCkgeworCQkJTG9uZyBpZCA9IHN0YXRlbWFuYWdlbWVudC5hZGRTdGF0ZShzdGF0ZSk7CisJCQlpZiAoaWQgIT0gbnVsbCkKKwkJCQlzdGF0ZV9pZCA9IGlkOworCisJCX0KKwkJCisKKwkJU3RyaW5nIHBob25lID0gInBob25lIjsKKwkJaWYgKHVzZXJkYXRhLmNvbnRhaW5zS2V5KGxkYXBBdHRycy5nZXQoInBob25lQXR0ciIpKQorCQkJCSYmIHVzZXJkYXRhLmdldChsZGFwQXR0cnMuZ2V0KCJwaG9uZUF0dHIiKSkgIT0gbnVsbCkKKwkJCXBob25lID0gdXNlcmRhdGEuZ2V0KGxkYXBBdHRycy5nZXQoInBob25lQXR0ciIpKTsKKwkJCisJCVN0cmluZyBwaWN0dXJlVXJpID0gInBpY3R1cmVVcmkiOworCQlpZiAodXNlcmRhdGEuY29udGFpbnNLZXkobGRhcEF0dHJzLmdldCgicGljdHVyZVVyaSIpKQorCQkJCSYmIHVzZXJkYXRhLmdldChsZGFwQXR0cnMuZ2V0KCJwaWN0dXJlVXJpIikpICE9IG51bGwpCisJCQlwaWN0dXJlVXJpID0gdXNlcmRhdGEuZ2V0KGxkYXBBdHRycy5nZXQoInBpY3R1cmVVcmkiKSk7CisKKwkJU3RyaW5nIGpOYW1lX3RpbWVab25lID0gIiI7CisJCWlmICh1c2VyZGF0YS5jb250YWluc0tleShsZGFwQXR0cnMuZ2V0KCJ0aW1lem9uZUF0dHIiKSkKKwkJCQkmJiB1c2VyZGF0YS5nZXQobGRhcEF0dHJzLmdldCgidGltZXpvbmVBdHRyIikpICE9IG51bGwpCisJCQlqTmFtZV90aW1lWm9uZSA9IHVzZXJkYXRhLmdldChsZGFwQXR0cnMuZ2V0KCJ0aW1lem9uZUF0dHIiKSk7CisJCQorCQlpZiAob21UaW1lWm9uZURhb0ltcGwuZ2V0T21UaW1lWm9uZShqTmFtZV90aW1lWm9uZSkgPT0gbnVsbCkgeworCQkJak5hbWVfdGltZVpvbmUgPSBjb25maWd1cmF0aW9uRGFvLmdldENvbmZWYWx1ZSgKKwkJCQkJImRlZmF1bHQudGltZXpvbmUiLCBTdHJpbmcuY2xhc3MsICJFdXJvcGUvQmVybGluIik7CisJCX0KKworCQlTdHJpbmcgdG93biA9ICJ0b3duIjsKKwkJaWYgKHVzZXJkYXRhLmNvbnRhaW5zS2V5KGxkYXBBdHRycy5nZXQoInRvd25BdHRyIikpCisJCQkJJiYgdXNlcmRhdGEuZ2V0KGxkYXBBdHRycy5nZXQoInRvd25BdHRyIikpICE9IG51bGwpCisJCQl0b3duID0gdXNlcmRhdGEuZ2V0KGxkYXBBdHRycy5nZXQoInRvd25BdHRyIikpOworCisJCUxvbmcgbmV3VXNlcklkID0gbnVsbDsKKworCQl0cnkgeworCisJCQkvLyBDaGVjayBpZiBMREFQIFVzZXJzIGdldCBhIFNJUCBBY2NvdW50IElzc3VlIDEwOTkKKworCQkJbmV3VXNlcklkID0gdXNlck1hbmFnZXIucmVnaXN0ZXJVc2VySW5pdCgKKwkJCQkJMiwvLyB1c2VyX2xldmVsCisJCQkJCTEsLy8gbGV2ZWxfaWQKKwkJCQkJMSwvLyBhdmFpbGFibGUKKwkJCQkJMSwvLyBzdGF0dXMKKwkJCQkJbG9naW4sLy8gbG9naW5uYW1lCisJCQkJCXBhc3N3ZCwvLyBwYXNzd2QKKwkJCQkJbGFzdG5hbWUsIGZpcnN0bmFtZSwgZW1haWwsIAorCQkJCQluZXcgamF2YS51dGlsLkRhdGUoKSwgLy9hZ2UKKwkJCQkJc3RyZWV0LAorCQkJCQlhZGRpdGlvbmFsbmFtZSwgZmF4LCB6aXAsIHN0YXRlX2lkLCB0b3duLCAKKwkJCQkJY29uZmlndXJhdGlvbkRhby5nZXRDb25mVmFsdWUoREVGQVVUX0xBTkdfS0VZLCBMb25nLmNsYXNzLCAiMSIpLCAvLyBsYW5ndWFnZV9pZAorCQkJCQlmYWxzZSwgLy8gc2VuZFdlbGNvbWVNZXNzYWdlCisJCQkJCUFycmF5cy5hc0xpc3QoY29uZmlndXJhdGlvbkRhby5nZXRDb25mVmFsdWUoCisJCQkJCQkJImRlZmF1bHRfZG9tYWluX2lkIiwgTG9uZy5jbGFzcywgbnVsbCkpLCAvLyBvcmdhbm96YXRpb24KKwkJCQkJCQkJCQkJCQkJCQkJCS8vIElkcworCQkJCQlwaG9uZSwgCisJCQkJCWZhbHNlLAorCQkJCQkiIiwvLyBCYXNlVVJMIGlzIGVtcHR5IGFzIHdlIGRvIG5vdCBzZW5kIGFuIEVtYWlsIGhlcmUKKwkJCQkJZmFsc2UsLy8gc2VuZCB2ZXJpZmljYXRpb24gY29kZQorCQkJCQlqTmFtZV90aW1lWm9uZSwgCisJCQkJCWZhbHNlLCAvLyBmb3JjZVRpbWVab25lQ2hlY2sKKwkJCQkJIiIsIC8vdXNlck9mZmVycworCQkJCQkiIiwgLy91c2VyU2VhcmNocworCQkJCQlmYWxzZSwgLy9zaG93Q29udGFjdERhdGEKKwkJCQkJdHJ1ZSAvL3Nob3dDb250YWN0RGF0YVRvQ29udGFjdHMKKwkJCQkJKTsKKwkJCQorCQkJVXNlciB1c2VyID0gdXNlcnNEYW8uZ2V0KG5ld1VzZXJJZCk7CisJCQl1c2VyLnNldFBpY3R1cmV1cmkocGljdHVyZVVyaSk7CisJCQl1c2Vyc0Rhby51cGRhdGUodXNlciwgbnVsbCk7CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCWxvZy5lcnJvcigiRXJyb3IgY3JlYXRpbmcgdXNlciA6ICIgKyBlLmdldE1lc3NhZ2UoKSk7CisJCX0KKworCQlpZiAobmV3VXNlcklkID09IC0xKSB7CisJCQlsb2cuZXJyb3IoIkVycm9yIG9jY3VyZWQgY3JlYXRpbmcgdXNlciIpOworCQl9IGVsc2UgaWYgKG5ld1VzZXJJZCA9PSAtMTUpIHsKKwkJCWxvZy5lcnJvcigiRXJyb3IgY3JlYXRpbmcgdXNlciA6IHVzZXJuYW1lIGFscmVhZHkgZXhpc3RzISIpOworCQl9IGVsc2UgaWYgKG5ld1VzZXJJZCA9PSAtMTcpIHsKKwkJCWxvZy5lcnJvcigiRXJyb3IgY3JlYXRpbmcgdXNlciA6IGVtYWlsIGFscmVhZHkgZXhpc3RzISIpOworCQl9IGVsc2UgaWYgKG5ld1VzZXJJZCA9PSAtMykgeworCQkJbG9nLmVycm9yKCJFcnJvciBjcmVhdGluZyB1c2VyIDogbWlzc2luZyB2YWx1ZXMiKTsKKwkJfSBlbHNlIHsKKwkJCWxvZy5kZWJ1ZygiVXNlciBDcmVhdGVkISIpOworCQl9CisKKwkJcmV0dXJuIG5ld1VzZXJJZDsKKwl9CisKKwlwdWJsaWMgdm9pZCB1cGRhdGVVc2VyRnJvbUxkYXAoSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gdXNlcmRhdGEsCisJCQkJSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbGRhcEF0dHJzLCBVc2VyIHVzZXIpCisJCQl0aHJvd3MgRXhjZXB0aW9uIHsKKwkJbG9nLmRlYnVnKCJMZGFwTG9naW5tYW5hZ2VtZW50LmNyZWF0ZVVzZXJGcm9tTGRhcERhdGEiKTsKKwkKKwkJLy8gUmV0cmlldmUgRGF0YSBmcm9tIExEQVAgLSBEYXRhCisJCisJCWlmICh1c2VyZGF0YS5jb250YWluc0tleShsZGFwQXR0cnMuZ2V0KCJsYXN0bmFtZUF0dHIiKSkKKwkJCQkmJiB1c2VyZGF0YS5nZXQobGRhcEF0dHJzLmdldCgibGFzdG5hbWVBdHRyIikpICE9IG51bGwpCisJCQl1c2VyLnNldExhc3RuYW1lKHVzZXJkYXRhLmdldChsZGFwQXR0cnMuZ2V0KCJsYXN0bmFtZUF0dHIiKSkpOworCQorCQlpZiAodXNlcmRhdGEuY29udGFpbnNLZXkobGRhcEF0dHJzLmdldCgiZmlyc3RuYW1lQXR0ciIpKQorCQkJCSYmIHVzZXJkYXRhLmdldChsZGFwQXR0cnMuZ2V0KCJmaXJzdG5hbWVBdHRyIikpICE9IG51bGwpCisJCQl1c2VyLnNldEZpcnN0bmFtZSh1c2VyZGF0YS5nZXQobGRhcEF0dHJzLmdldCgiZmlyc3RuYW1lQXR0ciIpKSk7CisJCisJCWlmICh1c2VyZGF0YS5jb250YWluc0tleShsZGFwQXR0cnMuZ2V0KCJtYWlsQXR0ciIpKQorCQkJCSYmIHVzZXJkYXRhLmdldChsZGFwQXR0cnMuZ2V0KCJtYWlsQXR0ciIpKSAhPSBudWxsKSB7CisJCQlpZiAodXNlci5nZXRBZHJlc3NlcygpICE9IG51bGwgKSAKKwkJCQl1c2VyLmdldEFkcmVzc2VzKCkuc2V0RW1haWwodXNlcmRhdGEuZ2V0KGxkYXBBdHRycy5nZXQoIm1haWxBdHRyIikpKTsKKwkJfQorCQkJCisJCWlmICh1c2VyZGF0YS5jb250YWluc0tleShsZGFwQXR0cnMuZ2V0KCJzdHJlZXRBdHRyIikpCisJCQkJJiYgdXNlcmRhdGEuZ2V0KGxkYXBBdHRycy5nZXQoInN0cmVldEF0dHIiKSkgIT0gbnVsbCkgeworCQkJaWYgKHVzZXIuZ2V0QWRyZXNzZXMoKSAhPSBudWxsICkgCisJCQkJdXNlci5nZXRBZHJlc3NlcygpLnNldFN0cmVldCh1c2VyZGF0YS5nZXQobGRhcEF0dHJzLmdldCgic3RyZWV0QXR0ciIpKSk7CisJCX0KKwkJCisJCWlmICh1c2VyZGF0YS5jb250YWluc0tleShsZGFwQXR0cnMuZ2V0KCJhZGRpdGlvbmFsTmFtZUF0dHIiKSkKKwkJCQkmJiB1c2VyZGF0YS5nZXQobGRhcEF0dHJzLmdldCgiYWRkaXRpb25hbE5hbWVBdHRyIikpICE9IG51bGwpIHsKKwkJCWlmICh1c2VyLmdldEFkcmVzc2VzKCkgIT0gbnVsbCApIAorCQkJCXVzZXIuZ2V0QWRyZXNzZXMoKS5zZXRBZGRpdGlvbmFsbmFtZSh1c2VyZGF0YS5nZXQobGRhcEF0dHJzLmdldCgiYWRkaXRpb25hbE5hbWVBdHRyIikpKTsKKwkJfQorCQorCQlpZiAodXNlcmRhdGEuY29udGFpbnNLZXkobGRhcEF0dHJzLmdldCgiZmF4QXR0ciIpKQorCQkJCSYmIHVzZXJkYXRhLmdldChsZGFwQXR0cnMuZ2V0KCJmYXhBdHRyIikpICE9IG51bGwpIHsKKwkJCWlmICh1c2VyLmdldEFkcmVzc2VzKCkgIT0gbnVsbCApIAorCQkJCXVzZXIuZ2V0QWRyZXNzZXMoKS5zZXRGYXgodXNlcmRhdGEuZ2V0KGxkYXBBdHRycy5nZXQoImZheEF0dHIiKSkpOworCQl9CisJCisJCWlmICh1c2VyZGF0YS5jb250YWluc0tleShsZGFwQXR0cnMuZ2V0KCJ6aXBBdHRyIikpCisJCQkJJiYgdXNlcmRhdGEuZ2V0KGxkYXBBdHRycy5nZXQoInppcEF0dHIiKSkgIT0gbnVsbCkgeworCQkJaWYgKHVzZXIuZ2V0QWRyZXNzZXMoKSAhPSBudWxsICkgCisJCQkJdXNlci5nZXRBZHJlc3NlcygpLnNldFppcCh1c2VyZGF0YS5nZXQobGRhcEF0dHJzLmdldCgiemlwQXR0ciIpKSk7CisJCX0KKwkKKwkJbG9uZyBzdGF0ZV9pZCA9IC0xOworCQlTdHJpbmcgc3RhdGUgPSBudWxsOworCQlpZiAodXNlcmRhdGEuY29udGFpbnNLZXkobGRhcEF0dHJzLmdldCgiY291bnRyeUF0dHIiKSkKKwkJCQkmJiB1c2VyZGF0YS5nZXQobGRhcEF0dHJzLmdldCgiY291bnRyeUF0dHIiKSkgIT0gbnVsbCkKKwkJCXN0YXRlID0gdXNlcmRhdGEuZ2V0KGxkYXBBdHRycy5nZXQoImNvdW50cnlBdHRyIikpOworCQkKKwkJaWYgKHN0YXRlICE9IG51bGwpIHsKKwkJCS8vIExvb2t1cCBmb3Igc3RhdGVzCisJCQlTdGF0ZSBvbmVTdGF0ZSA9IHN0YXRlbWFuYWdlbWVudC5nZXRTdGF0ZUJ5TmFtZShzdGF0ZSk7CisJCQlpZiAob25lU3RhdGUgIT0gbnVsbCkgeworCQkJCXN0YXRlX2lkID0gb25lU3RhdGUuZ2V0U3RhdGVfaWQoKTsKKwkJCX0KKwkJfQorCQkvLyBDcmVhdGUgQ291bnRyeSBpZiBub3QgZm91bmQKKwkJaWYgKHN0YXRlX2lkIDwgMCkgeworCQkJTG9uZyBpZCA9IHN0YXRlbWFuYWdlbWVudC5hZGRTdGF0ZShzdGF0ZSk7CisJCQlpZiAoaWQgIT0gbnVsbCkKKwkJCQlzdGF0ZV9pZCA9IGlkOworCisJCX0KKwkJaWYgKHVzZXIuZ2V0QWRyZXNzZXMoKSAhPSBudWxsICYmIHN0YXRlX2lkID4gMCkgeworCQkJdXNlci5nZXRBZHJlc3NlcygpLnNldFN0YXRlcyhzdGF0ZW1hbmFnZW1lbnQuZ2V0U3RhdGVCeUlkKHN0YXRlX2lkKSk7CisJCX0KKwkJCisJCWlmICh1c2VyZGF0YS5jb250YWluc0tleShsZGFwQXR0cnMuZ2V0KCJ0b3duQXR0ciIpKQorCQkJCSYmIHVzZXJkYXRhLmdldChsZGFwQXR0cnMuZ2V0KCJ0b3duQXR0ciIpKSAhPSBudWxsKSB7CisJCQlpZiAodXNlci5nZXRBZHJlc3NlcygpICE9IG51bGwgKQorCQkJCXVzZXIuZ2V0QWRyZXNzZXMoKS5zZXRUb3duKHVzZXJkYXRhLmdldChsZGFwQXR0cnMuZ2V0KCJ0b3duQXR0ciIpKSk7CisJCX0KKworCQlpZiAodXNlcmRhdGEuY29udGFpbnNLZXkobGRhcEF0dHJzLmdldCgicGhvbmVBdHRyIikpCisJCQkJJiYgdXNlcmRhdGEuZ2V0KGxkYXBBdHRycy5nZXQoInBob25lQXR0ciIpKSAhPSBudWxsKSB7CisJCQlpZiAodXNlci5nZXRBZHJlc3NlcygpICE9IG51bGwgKSAKKwkJCQl1c2VyLmdldEFkcmVzc2VzKCkuc2V0UGhvbmUodXNlcmRhdGEuZ2V0KGxkYXBBdHRycy5nZXQoInBob25lQXR0ciIpKSk7CisJCX0KKwkJCisJCWlmICh1c2VyZGF0YS5jb250YWluc0tleShsZGFwQXR0cnMuZ2V0KCJwaWN0dXJlVXJpIikpCisJCQkJJiYgdXNlcmRhdGEuZ2V0KGxkYXBBdHRycy5nZXQoInBpY3R1cmVVcmkiKSkgIT0gbnVsbCkgeworCQkJdXNlci5zZXRQaWN0dXJldXJpKHVzZXJkYXRhLmdldChsZGFwQXR0cnMuZ2V0KCJwaWN0dXJlVXJpIikpKTsKKwkJfQorCQorCQlTdHJpbmcgak5hbWVfdGltZVpvbmUgPSAiIjsKKwkJaWYgKHVzZXJkYXRhLmNvbnRhaW5zS2V5KGxkYXBBdHRycy5nZXQoInRpbWV6b25lQXR0ciIpKQorCQkJCSYmIHVzZXJkYXRhLmdldChsZGFwQXR0cnMuZ2V0KCJ0aW1lem9uZUF0dHIiKSkgIT0gbnVsbCkKKwkJCWpOYW1lX3RpbWVab25lID0gdXNlcmRhdGEuZ2V0KGxkYXBBdHRycy5nZXQoInRpbWV6b25lQXR0ciIpKTsKKwkJCisJCS8vb25seSBjaGFuZ2UgdGhlIHRpbWV6b25lIGlmIHRoZXJlIGNhbiBiZSBmb3VuZCBzb21lIGluIHRoZSBPcGVuTWVldGluZ3MgZGF0YWJhc2UKKwkJT21UaW1lWm9uZSBvbVRpbWVab25lID0gb21UaW1lWm9uZURhb0ltcGwuZ2V0T21UaW1lWm9uZShqTmFtZV90aW1lWm9uZSk7CisJCWlmIChvbVRpbWVab25lICE9IG51bGwpIHsKKwkJCXVzZXIuc2V0T21UaW1lWm9uZShvbVRpbWVab25lKTsKKwkJfQorCQorCX0KKwkKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9sZGFwL2NvbmZpZy9Db25maWdSZWFkZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9sZGFwL2NvbmZpZy9Db25maWdSZWFkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OTNjNjE3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL2xkYXAvY29uZmlnL0NvbmZpZ1JlYWRlci5qYXZhCkBAIC0wLDAgKzEsMjQ2IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmxkYXAuY29uZmlnOworCitpbXBvcnQgamF2YS5pby5CdWZmZXJlZFJlYWRlcjsKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS5pby5GaWxlUmVhZGVyOworaW1wb3J0IGphdmEuc3FsLlRpbWVzdGFtcDsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKKworCisKKy8qKgorICogUmVhZGluZyBDb25maWdGaWxlIChrZXk9dmFsdWUgcGFpcnMpCisgKiAKKyAqIEBhdXRob3Igby5iZWNoZXJlcgorICoKKyAqLworcHVibGljIGNsYXNzIENvbmZpZ1JlYWRlciB7CisJCisJLyoqIERpdmlkZXIgYmV0d2VlbiBrZXkgLSB2YWx1ZSAtIHBhaXJzKi8KKwlwcml2YXRlIFN0cmluZyBfZGl2aWRlciA9ICI9IjsKKwkKKwkvKiogU2lnbiBmb3IgY29tbWVudHMgKi8KKwlwcml2YXRlIFN0cmluZyBfY29tbWVudFNpZ24gPSAiIyI7CisJCisJLyoqIEZpbGVQYXRoKi8KKwlwcml2YXRlIEZpbGUgX2ZpbGU7CisJCisJLyoqIHJlc3VsdCBoYXNobWFwICovCisJcHJpdmF0ZSBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBfY29uZmlnTWFwID0gbmV3IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+KCk7CisJCisJLyoqIFRpbWVzdGFtcCwgY29uZmlnIHdhcyByZWFkKi8KKwlwcml2YXRlIFRpbWVzdGFtcCBfY29uZmlnUmVhZDsKKwkKKwkKKwkvKioKKwkgKiBEZWZhdWx0Y29uc3RydWN0b3IKKwkgKi8KKwlwdWJsaWMgQ29uZmlnUmVhZGVyKCl7CisJCQorCX0KKwkKKwkvKioKKwkgKiBDb25zdHJ1Y3RvciB3aXRoIHBhcmFtcworCSAqIEBwYXJhbSBkaXZpZGVyCisJICogQHBhcmFtIGNvbW1lbnRTaWduCisJICovCisJcHVibGljIENvbmZpZ1JlYWRlcihTdHJpbmcgY29tbWVudCwgU3RyaW5nIGRpdmlkZXIpeworCQl0aGlzLl9jb21tZW50U2lnbiA9IGNvbW1lbnQ7CisJCXRoaXMuX2RpdmlkZXIgPSBkaXZpZGVyOworCX0KKwkKKwkKKwkvKioKKwkgKiBGdW5jdGlvbiBmb3IgcmVhZGluZyBDb25maWdGaWxlCisJICogQHRocm93cyBFeGNlcHRpb24KKwkgKi8KKwkvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCXB1YmxpYyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiByZWFkQ29uZmlnKEZpbGUgY29uZmlnKSB0aHJvd3MgRXhjZXB0aW9ueworCQkKKwkJX2ZpbGUgPSBjb25maWc7CisJCQorCQkvLyBSZWFkaW5nIEZpbGUgaW50byBWZWN0b3IKKwkJVmVjdG9yPFN0cmluZz4gY29udGVudFZlYyA9IHJlYWRGaWxlSW50b1ZlY3Rvcihjb25maWcpOworCQkKKwkJLy8gRmlsdGVyaW5nIENvbW1lbnRzCisJCWNvbnRlbnRWZWMgPSBmaWx0ZXJDb21tZW50c0Zyb21JbnB1dChjb250ZW50VmVjKTsKKwkJCisJCS8vIFNwbGl0dGluZyBkYXRhIGludG8gaGFzaG1hcAorCQlzcGxpdExpbmVzSW50b0hhc2hNYXAoY29udGVudFZlYyk7CisJCQorCQlfY29uZmlnUmVhZCA9IG5ldyBUaW1lc3RhbXAoU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkpOworCQkKKwkJcmV0dXJuIGdldENvbmZpZ01hcCgpOworCQkKKwl9CisJLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkKKwkKKwkvKioKKwkgKiBGaWx0ZXIgQ29tbWVudHMKKwkgKiBAYXV0aG9yIG8uYmVjaGVyZXIKKwkgKi8KKwkvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCXB1YmxpYyBWZWN0b3I8U3RyaW5nPiBmaWx0ZXJDb21tZW50c0Zyb21JbnB1dChWZWN0b3I8U3RyaW5nPiBpbnB1dCl7CisJCQorCQlWZWN0b3I8U3RyaW5nPiBmaWx0ZXJlZCA9IG5ldyBWZWN0b3I8U3RyaW5nPigpOyAKKwkJCisJCWZvcihpbnQgaSA9IDA7IGkgPCBpbnB1dC5zaXplKCk7IGkrKyl7CisJCQlTdHJpbmcgdmFsID0gaW5wdXQuZ2V0KGkpOworCQkJCisJCQlpZih2YWwuc3RhcnRzV2l0aChfY29tbWVudFNpZ24pKQorCQkJCWNvbnRpbnVlOworCQkJCisJCQlmaWx0ZXJlZC5hZGQodmFsKTsKKwkJfQorCQkKKwkJcmV0dXJuIGZpbHRlcmVkOworCQkKKwl9CisJLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkKKwkKKwkvKioKKwkgKiBTcGxpdHRpbmcgbGluZXMgaW50byBoYXNobWFwIGJ5IGRpdmlkZXIKKwkgKiBAYXV0aG9yIG8uYmVjaGVyZXIKKwkgKi8KKwkvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCXB1YmxpYyB2b2lkIHNwbGl0TGluZXNJbnRvSGFzaE1hcChWZWN0b3I8U3RyaW5nPiBjb250ZW50KSB0aHJvd3MgRXhjZXB0aW9ueworCQkKKwkJZm9yKGludCBpID0gMDsgaSA8IGNvbnRlbnQuc2l6ZSgpOyBpKyspeworCQkJU3RyaW5nIGxpbmUgPSBjb250ZW50LmdldChpKTsKKwkJCQorCQkJaWYobGluZT09bnVsbHx8IGxpbmUubGVuZ3RoKCkgPCAxKQorCQkJCWNvbnRpbnVlOworCQkJCisJCQlpZighbGluZS5jb250YWlucyhfZGl2aWRlcikpCisJCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbigiQ29uZmlnUmVhZGVyOiBDb25maWdGaWxlICIgKyBfZmlsZSArICIgY29udGFpbnMgaW52YWxpZCBsaW5lKCIgKyBpKzEgKyAiKSA6ICIgKyBsaW5lICsgIi4gTm8gRGl2aWRlciAiICsgX2RpdmlkZXIgKyAiIGZvdW5kIik7CisJCQkKKwkJCVN0cmluZ1tdIHNwbGl0dGVkID0gIGxpbmUuc3BsaXQoX2RpdmlkZXIpOworCQkJCisJCQlTdHJpbmcga2V5ID0gc3BsaXR0ZWRbMF07CisJCQlTdHJpbmcgdmFsID0gc3BsaXR0ZWRbMV07CisJCQkKKwkJCV9jb25maWdNYXAucHV0KGtleSwgdmFsKTsKKwkJfQorCQkJCisJfQorCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJCisJLyoqCisJICogZ2V0dGluZyBDb25maWdWYWwgZm9yIGtleQorCSAqIEBhdXRob3Igby5iZWNoZXJlcgorCSAqLworCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJcHVibGljIFN0cmluZyBnZXRDb25maWdWYWwoU3RyaW5nIGtleSwgYm9vbGVhbiBmb3JjZXJlbG9hZCkgdGhyb3dzIEV4Y2VwdGlvbnsKKwkJCisJCVN0cmluZyBub3RGb3VuZCA9ICJDb25maWcgIiArIF9maWxlICsgIiggcmVhZCBhdCAiICsgX2NvbmZpZ1JlYWQudG9TdHJpbmcoKSArICIsIFNlcnZlcnRpbWUpIGRvZXNudCBjb250YWluIGtleSAnIiArIGtleSArICInIjsKKwkJCisJCWlmKCFnZXRDb25maWdNYXAoKS5jb250YWluc0tleShrZXkpKXsKKwkJCWlmKCFmb3JjZXJlbG9hZCkKKwkJCQl0aHJvdyBuZXcgRXhjZXB0aW9uKG5vdEZvdW5kKTsKKwkJCWVsc2V7CisJCQkJcmVhZENvbmZpZyhfZmlsZSk7CisJCQkJaWYoIWdldENvbmZpZ01hcCgpLmNvbnRhaW5zS2V5KGtleSkpCisJCQkJCXRocm93IG5ldyBFeGNlcHRpb24obm90Rm91bmQpOworCQkJfQorCQkJCQorCQkKKwkJfQorCQkKKwkJcmV0dXJuIGdldENvbmZpZ01hcCgpLmdldChrZXkpOworCX0KKwkvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCQorCQorCS8qKgorCSAqIER1bXBpbmcgQ29uZmlnIHRvIHN0ZG91dAorCSAqIEBhdXRob3Igby5iZWNoZXJlcgorCSAqLworCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJcHVibGljIHZvaWQgZHVtcENvbmZpZygpeworCQkKKwkJSXRlcmF0b3I8U3RyaW5nPiBtaXRlciA9IGdldENvbmZpZ01hcCgpLmtleVNldCgpLml0ZXJhdG9yKCk7CisJCQorCQlTeXN0ZW0ub3V0LnByaW50bG4oIi0tLUR1bXBpbmcgY29uZmlnRmlsZSAnIiArIF9maWxlICsgIicgd2l0aG91dCBjb21tZW50cy0tLSIpOworCQlTeXN0ZW0ub3V0LnByaW50bG4oIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIpOworCQl3aGlsZShtaXRlci5oYXNOZXh0KCkpeworCQkJU3RyaW5nIGtleSA9IG1pdGVyLm5leHQoKTsKKwkJCVN5c3RlbS5vdXQucHJpbnRsbihrZXkgKyBfZGl2aWRlciArIGdldENvbmZpZ01hcCgpLmdldChrZXkpKTsKKwkJfQorCQkKKworCQlTeXN0ZW0ub3V0LnByaW50bG4oIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIpOworCQkKKwl9CisJLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkKKwkKKwkvKioKKwkgKiByZWFkcyBGaWxlIGludG8gVmVjdG9yCisJICogQGF1dGhvciBiZWNoZXJlcgorCSAqIEBwYXJhbSBmaWxlUGF0aAorCSAqLworCS8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlwdWJsaWMgc3RhdGljIFZlY3RvcjxTdHJpbmc+IHJlYWRGaWxlSW50b1ZlY3RvcihGaWxlIGYpIHRocm93cyBFeGNlcHRpb257CisJCQorCQlWZWN0b3I8U3RyaW5nPiByZXN1bHQgPSBuZXcgVmVjdG9yPFN0cmluZz4oKTsKKwkJCisJCS8vIEZpbGUgZXhpc3RzPworICAgICAgICBpZiAoIWYuZXhpc3RzKCkpCisgICAgICAgIAl0aHJvdyBuZXcgRXhjZXB0aW9uKCJSZWFkZXIgOiBGaWxlIiArIGYuZ2V0Q2Fub25pY2FsUGF0aCgpICsgIiBub3QgdmFsaWQhIik7CisgICAgICAgCisKKyAgICAgICAgQnVmZmVyZWRSZWFkZXIgYnIgPSBuZXcgQnVmZmVyZWRSZWFkZXIobmV3IEZpbGVSZWFkZXIoZikpOworICAgICAgICAKKyAgICAgICAgU3RyaW5nIGxpbmUgPSAiIjsKKyAgICAgICAgCisgICAgICAgIHdoaWxlKChsaW5lID0gYnIucmVhZExpbmUoKSkgIT0gbnVsbCkgeworICAgICAgICAJcmVzdWx0LmFkZChsaW5lKTsKKyAgICAgICAgfQorICAgICAgICBici5jbG9zZSgpOworICAgICAgICByZXR1cm4gcmVzdWx0OworCX0KKwkvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJCisJcHVibGljIFN0cmluZyBnZXREaXZpZGVyKCkgeworCQlyZXR1cm4gX2RpdmlkZXI7CisJfQorCisJcHVibGljIHZvaWQgc2V0RGl2aWRlcihTdHJpbmcgZGl2aWRlcikgeworCQl0aGlzLl9kaXZpZGVyID0gZGl2aWRlcjsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGdldENvbW1lbnRTaWduKCkgeworCQlyZXR1cm4gX2NvbW1lbnRTaWduOworCX0KKworCXB1YmxpYyB2b2lkIHNldENvbW1lbnRTaWduKFN0cmluZyBjb21tZW50U2lnbikgeworCQl0aGlzLl9jb21tZW50U2lnbiA9IGNvbW1lbnRTaWduOworCX0KKwkKKwlwdWJsaWMgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gZ2V0Q29uZmlnTWFwKCl7CisJCXJldHVybiBfY29uZmlnTWFwOworCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL0lEYXRhUHJvdmlkZXJFbnRpdHkuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9JRGF0YVByb3ZpZGVyRW50aXR5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWRmYjRmNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9JRGF0YVByb3ZpZGVyRW50aXR5LmphdmEKQEAgLTAsMCArMSwyMyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFuczsKKworcHVibGljIGludGVyZmFjZSBJRGF0YVByb3ZpZGVyRW50aXR5IHsKKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL2Jhc2ljL0NvbmZpZ3VyYXRpb24uamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9iYXNpYy9Db25maWd1cmF0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVjZGM5OAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9iYXNpYy9Db25maWd1cmF0aW9uLmphdmEKQEAgLTAsMCArMSwxNjEgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWM7CisKK2ltcG9ydCBqYXZhLmlvLlNlcmlhbGl6YWJsZTsKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKKworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHk7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRmV0Y2hUeXBlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkdlbmVyYXRlZFZhbHVlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkdlbmVyYXRpb25UeXBlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLklkOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkpvaW5Db2x1bW47CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTG9iOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk1hbnlUb09uZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5OYW1lZFF1ZXJpZXM7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTmFtZWRRdWVyeTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UYWJsZTsKKworaW1wb3J0IG9yZy5hcGFjaGUub3BlbmpwYS5wZXJzaXN0ZW5jZS5qZGJjLkZvcmVpZ25LZXk7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuSURhdGFQcm92aWRlckVudGl0eTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlVzZXI7CitpbXBvcnQgb3JnLnNpbXBsZWZyYW1ld29yay54bWwuRWxlbWVudDsKK2ltcG9ydCBvcmcuc2ltcGxlZnJhbWV3b3JrLnhtbC5Sb290OworCitARW50aXR5CitATmFtZWRRdWVyaWVzKHsKKwkJQE5hbWVkUXVlcnkobmFtZSA9ICJnZXRDb25maWd1cmF0aW9uQnlLZXkiLCBxdWVyeSA9ICJTRUxFQ1QgYyBGUk9NIENvbmZpZ3VyYXRpb24gYyAiIAorCQkJCSsgIldIRVJFIGMuY29uZl9rZXkgTElLRSA6Y29uZl9rZXkgYW5kIGMuZGVsZXRlZCA9IGZhbHNlIiksCisJCUBOYW1lZFF1ZXJ5KG5hbWUgPSAiZ2V0Q29uZmlndXJhdGlvbnNCeUtleXMiLCBxdWVyeSA9ICJTRUxFQ1QgYyBGUk9NIENvbmZpZ3VyYXRpb24gYyAiCisJCQkJKyAiV0hFUkUgYy5jb25mX2tleSBJTiA6Y29uZl9rZXlzIGFuZCBjLmRlbGV0ZWQgPSBmYWxzZSIpLAorCQlATmFtZWRRdWVyeShuYW1lID0gImdldE5vbmRlbGV0ZWRDb25maWd1cmF0aW9uIiwgcXVlcnkgPSAiU0VMRUNUIGMgRlJPTSBDb25maWd1cmF0aW9uIGMgICIKKwkJCQkrICJMRUZUIEpPSU4gRkVUQ0ggYy51c2VyIFdIRVJFIGMuZGVsZXRlZCA9IGZhbHNlIiksCisJCUBOYW1lZFF1ZXJ5KG5hbWUgPSAiZ2V0Q29uZmlndXJhdGlvbkJ5SWQiLCBxdWVyeSA9ICJTRUxFQ1QgYyBGUk9NIENvbmZpZ3VyYXRpb24gYyAiCisJCQkJKyAiTEVGVCBKT0lOIEZFVENIIGMudXNlciAiCisJCQkJKyAiV0hFUkUgYy5jb25maWd1cmF0aW9uX2lkID0gOmNvbmZpZ3VyYXRpb25faWQgYW5kIGMuZGVsZXRlZCA9IGZhbHNlIikKK30pCitAVGFibGUobmFtZSA9ICJjb25maWd1cmF0aW9uIikKK0BSb290KG5hbWUgPSAiY29uZmlnIikKK3B1YmxpYyBjbGFzcyBDb25maWd1cmF0aW9uIGltcGxlbWVudHMgU2VyaWFsaXphYmxlLCBJRGF0YVByb3ZpZGVyRW50aXR5IHsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAtNjEyOTQ3Mzk0NjUwODk2MzMzOUw7CisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgREVGQVVUX0xBTkdfS0VZID0gImRlZmF1bHRfbGFuZ19pZCI7CisJQElkCisJQEdlbmVyYXRlZFZhbHVlKHN0cmF0ZWd5ID0gR2VuZXJhdGlvblR5cGUuSURFTlRJVFkpCisJQENvbHVtbihuYW1lID0gImlkIikKKwlARWxlbWVudChuYW1lID0gImlkIiwgZGF0YSA9IHRydWUpCisJcHJpdmF0ZSBMb25nIGNvbmZpZ3VyYXRpb25faWQ7CisKKwlAQ29sdW1uKG5hbWUgPSAiY29uZl9rZXkiKQorCUBFbGVtZW50KG5hbWUgPSAia2V5IiwgZGF0YSA9IHRydWUsIHJlcXVpcmVkID0gZmFsc2UpCisJcHJpdmF0ZSBTdHJpbmcgY29uZl9rZXk7CisKKwlAQ29sdW1uKG5hbWUgPSAiY29uZl92YWx1ZSIpCisJQEVsZW1lbnQobmFtZSA9ICJ2YWx1ZSIsIGRhdGEgPSB0cnVlLCByZXF1aXJlZCA9IGZhbHNlKQorCXByaXZhdGUgU3RyaW5nIGNvbmZfdmFsdWU7CisKKwlAQ29sdW1uKG5hbWUgPSAic3RhcnR0aW1lIikKKwlARWxlbWVudChuYW1lID0gImNyZWF0ZWQiLCBkYXRhID0gdHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIERhdGUgc3RhcnR0aW1lOworCisJQENvbHVtbihuYW1lID0gInVwZGF0ZXRpbWUiKQorCUBFbGVtZW50KG5hbWUgPSAidXBkYXRlZCIsIGRhdGEgPSB0cnVlLCByZXF1aXJlZCA9IGZhbHNlKQorCXByaXZhdGUgRGF0ZSB1cGRhdGV0aW1lOworCisJQExvYgorCUBDb2x1bW4obmFtZSA9ICJjb21tZW50X2ZpZWxkIiwgbGVuZ3RoID0gMjA0OCkKKwlARWxlbWVudChkYXRhID0gdHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIFN0cmluZyBjb21tZW50OworCisJQENvbHVtbihuYW1lID0gImRlbGV0ZWQiKQorCUBFbGVtZW50KGRhdGEgPSB0cnVlKQorCXByaXZhdGUgYm9vbGVhbiBkZWxldGVkOworCisJQE1hbnlUb09uZShmZXRjaCA9IEZldGNoVHlwZS5MQVpZKQorCUBKb2luQ29sdW1uKG5hbWUgPSAidXNlcl9pZCIpCisJQEZvcmVpZ25LZXkoZW5hYmxlZCA9IHRydWUpCisJQEVsZW1lbnQobmFtZSA9ICJ1c2VyX2lkIiwgZGF0YSA9IHRydWUsIHJlcXVpcmVkID0gZmFsc2UpCisJcHJpdmF0ZSBVc2VyIHVzZXI7CisKKwlwdWJsaWMgU3RyaW5nIGdldENvbW1lbnQoKSB7CisJCXJldHVybiBjb21tZW50OworCX0KKworCXB1YmxpYyB2b2lkIHNldENvbW1lbnQoU3RyaW5nIGNvbW1lbnQpIHsKKwkJdGhpcy5jb21tZW50ID0gY29tbWVudDsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGdldENvbmZfa2V5KCkgeworCQlyZXR1cm4gY29uZl9rZXk7CisJfQorCisJcHVibGljIHZvaWQgc2V0Q29uZl9rZXkoU3RyaW5nIGNvbmZfa2V5KSB7CisJCXRoaXMuY29uZl9rZXkgPSBjb25mX2tleTsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGdldENvbmZfdmFsdWUoKSB7CisJCXJldHVybiBjb25mX3ZhbHVlOworCX0KKworCXB1YmxpYyB2b2lkIHNldENvbmZfdmFsdWUoU3RyaW5nIGNvbmZfdmFsdWUpIHsKKwkJdGhpcy5jb25mX3ZhbHVlID0gY29uZl92YWx1ZTsKKwl9CisKKwlwdWJsaWMgTG9uZyBnZXRDb25maWd1cmF0aW9uX2lkKCkgeworCQlyZXR1cm4gY29uZmlndXJhdGlvbl9pZDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRDb25maWd1cmF0aW9uX2lkKExvbmcgY29uZmlndXJhdGlvbl9pZCkgeworCQl0aGlzLmNvbmZpZ3VyYXRpb25faWQgPSBjb25maWd1cmF0aW9uX2lkOworCX0KKworCXB1YmxpYyBEYXRlIGdldFN0YXJ0dGltZSgpIHsKKwkJcmV0dXJuIHN0YXJ0dGltZTsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRTdGFydHRpbWUoRGF0ZSBzdGFydHRpbWUpIHsKKwkJdGhpcy5zdGFydHRpbWUgPSBzdGFydHRpbWU7CisJfQorCisJcHVibGljIERhdGUgZ2V0VXBkYXRldGltZSgpIHsKKwkJcmV0dXJuIHVwZGF0ZXRpbWU7CisJfQorCisJcHVibGljIHZvaWQgc2V0VXBkYXRldGltZShEYXRlIHVwZGF0ZXRpbWUpIHsKKwkJdGhpcy51cGRhdGV0aW1lID0gdXBkYXRldGltZTsKKwl9CisKKwlwdWJsaWMgYm9vbGVhbiBnZXREZWxldGVkKCkgeworCQlyZXR1cm4gZGVsZXRlZDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXREZWxldGVkKGJvb2xlYW4gZGVsZXRlZCkgeworCQl0aGlzLmRlbGV0ZWQgPSBkZWxldGVkOworCX0KKworCXB1YmxpYyBVc2VyIGdldFVzZXIoKSB7CisJCXJldHVybiB1c2VyOworCX0KKworCXB1YmxpYyB2b2lkIHNldFVzZXIoVXNlciB1c2VyKSB7CisJCXRoaXMudXNlciA9IHVzZXI7CisJfQorCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvYmFzaWMvRXJyb3JUeXBlLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvYmFzaWMvRXJyb3JUeXBlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDYzMDQ2MwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9iYXNpYy9FcnJvclR5cGUuamF2YQpAQCAtMCwwICsxLDk4IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljOworCitpbXBvcnQgamF2YS5pby5TZXJpYWxpemFibGU7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CisKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLklkOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk5hbWVkUXVlcmllczsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5OYW1lZFF1ZXJ5OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRhYmxlOworCitARW50aXR5CitATmFtZWRRdWVyaWVzKHsKKwlATmFtZWRRdWVyeShuYW1lID0gImdldEVycm9yVHlwZXMiLCBxdWVyeSA9ICJzZWxlY3QgYyBmcm9tIEVycm9yVHlwZSBhcyBjICIKKwkJCQkJKyAiV0hFUkUgYy5kZWxldGVkIDw+IDpkZWxldGVkIiksCisJQE5hbWVkUXVlcnkobmFtZSA9ICJnZXRFcnJvclR5cGUiLCBxdWVyeSA9ICJzZWxlY3QgYyBmcm9tIEVycm9yVHlwZSBhcyBjICIKKwkJCQkJKyAiV0hFUkUgYy5kZWxldGVkIDw+IDpkZWxldGVkIEFORCBjLmVycm9ydHlwZV9pZCA9IDplcnJvcnR5cGVfaWQiKQorfSkKK0BUYWJsZShuYW1lID0gImVycm9ydHlwZXMiKQorcHVibGljIGNsYXNzIEVycm9yVHlwZSBpbXBsZW1lbnRzIFNlcmlhbGl6YWJsZSB7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMTUxOTU3MDQ3MDQ4MzYwNDI1OEw7CisKKwlASWQKKwlAQ29sdW1uKG5hbWUgPSAiaWQiKQorCXByaXZhdGUgTG9uZyBlcnJvcnR5cGVfaWQ7CisKKwlAQ29sdW1uKG5hbWUgPSAiZmllbGR2YWx1ZXNfaWQiKQorCXByaXZhdGUgTG9uZyBmaWVsZHZhbHVlc19pZDsKKworCUBDb2x1bW4obmFtZSA9ICJzdGFydHRpbWUiKQorCXByaXZhdGUgRGF0ZSBzdGFydHRpbWU7CisJCisJQENvbHVtbihuYW1lID0gInVwZGF0ZXRpbWUiKQorCXByaXZhdGUgRGF0ZSB1cGRhdGV0aW1lOworCQorCUBDb2x1bW4obmFtZSA9ICJkZWxldGVkIikKKwlwcml2YXRlIGJvb2xlYW4gZGVsZXRlZDsKKworCXB1YmxpYyBMb25nIGdldEVycm9ydHlwZV9pZCgpIHsKKwkJcmV0dXJuIGVycm9ydHlwZV9pZDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRFcnJvcnR5cGVfaWQoTG9uZyBlcnJvcnR5cGVfaWQpIHsKKwkJdGhpcy5lcnJvcnR5cGVfaWQgPSBlcnJvcnR5cGVfaWQ7CisJfQorCisJcHVibGljIERhdGUgZ2V0U3RhcnR0aW1lKCkgeworCQlyZXR1cm4gc3RhcnR0aW1lOworCX0KKworCXB1YmxpYyB2b2lkIHNldFN0YXJ0dGltZShEYXRlIHN0YXJ0dGltZSkgeworCQl0aGlzLnN0YXJ0dGltZSA9IHN0YXJ0dGltZTsKKwl9CisKKwlwdWJsaWMgRGF0ZSBnZXRVcGRhdGV0aW1lKCkgeworCQlyZXR1cm4gdXBkYXRldGltZTsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRVcGRhdGV0aW1lKERhdGUgdXBkYXRldGltZSkgeworCQl0aGlzLnVwZGF0ZXRpbWUgPSB1cGRhdGV0aW1lOworCX0KKworCXB1YmxpYyBib29sZWFuIGdldERlbGV0ZWQoKSB7CisJCXJldHVybiBkZWxldGVkOworCX0KKworCXB1YmxpYyB2b2lkIHNldERlbGV0ZWQoYm9vbGVhbiBkZWxldGVkKSB7CisJCXRoaXMuZGVsZXRlZCA9IGRlbGV0ZWQ7CisJfQorCisJcHVibGljIExvbmcgZ2V0RmllbGR2YWx1ZXNfaWQoKSB7CisJCXJldHVybiB0aGlzLmZpZWxkdmFsdWVzX2lkOworCX0KKworCXB1YmxpYyB2b2lkIHNldEZpZWxkdmFsdWVzX2lkKExvbmcgZmllbGR2YWx1ZXNfaWQpIHsKKwkJdGhpcy5maWVsZHZhbHVlc19pZCA9IGZpZWxkdmFsdWVzX2lkOworCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL2Jhc2ljL0Vycm9yVmFsdWUuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9iYXNpYy9FcnJvclZhbHVlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ2YTBlNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9iYXNpYy9FcnJvclZhbHVlLmphdmEKQEAgLTAsMCArMSwxMDggQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWM7CisKK2ltcG9ydCBqYXZhLmlvLlNlcmlhbGl6YWJsZTsKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKKworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHk7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSWQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTmFtZWRRdWVyaWVzOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk5hbWVkUXVlcnk7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7CisKK0BFbnRpdHkKK0BOYW1lZFF1ZXJpZXMoeworCUBOYW1lZFF1ZXJ5KG5hbWUgPSAiZ2V0RXJyb3JWYWx1ZXNCeUlkIiwgcXVlcnkgPSAic2VsZWN0IGMgZnJvbSBFcnJvclZhbHVlIGFzIGMgIgorCQkJCQkrICIgd2hlcmUgYy5lcnJvcnZhbHVlc19pZCA9IDplcnJvcnZhbHVlc19pZCAiCisJCQkJCSsgIiBBTkQgYy5kZWxldGVkIDw+IDpkZWxldGVkIikKK30pCitAVGFibGUobmFtZSA9ICJlcnJvcnZhbHVlIikKK3B1YmxpYyBjbGFzcyBFcnJvclZhbHVlIGltcGxlbWVudHMgU2VyaWFsaXphYmxlIHsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAtMTg5MjgxMDQ2MzcwNjk2ODAxOEw7CisKKwlASWQKKwlAQ29sdW1uKG5hbWUgPSAiaWQiKQorCXByaXZhdGUgTG9uZyBlcnJvcnZhbHVlc19pZDsKKwkKKwlAQ29sdW1uKG5hbWUgPSAiZXJyb3J0eXBlX2lkIikKKwlwcml2YXRlIExvbmcgZXJyb3J0eXBlX2lkOworCQorCUBDb2x1bW4obmFtZSA9ICJmaWVsZHZhbHVlc19pZCIpCisJcHJpdmF0ZSBMb25nIGZpZWxkdmFsdWVzX2lkOworCQorCUBDb2x1bW4obmFtZSA9ICJzdGFydHRpbWUiKQorCXByaXZhdGUgRGF0ZSBzdGFydHRpbWU7CisJCisJQENvbHVtbihuYW1lID0gInVwZGF0ZXRpbWUiKQorCXByaXZhdGUgRGF0ZSB1cGRhdGV0aW1lOworCQorCUBDb2x1bW4obmFtZSA9ICJkZWxldGVkIikKKwlwcml2YXRlIGJvb2xlYW4gZGVsZXRlZDsKKworCXB1YmxpYyBMb25nIGdldEVycm9ydmFsdWVzX2lkKCkgeworCQlyZXR1cm4gZXJyb3J2YWx1ZXNfaWQ7CisJfQorCisJcHVibGljIHZvaWQgc2V0RXJyb3J2YWx1ZXNfaWQoTG9uZyBlcnJvcnZhbHVlc19pZCkgeworCQl0aGlzLmVycm9ydmFsdWVzX2lkID0gZXJyb3J2YWx1ZXNfaWQ7CisJfQorCisJcHVibGljIERhdGUgZ2V0U3RhcnR0aW1lKCkgeworCQlyZXR1cm4gc3RhcnR0aW1lOworCX0KKworCXB1YmxpYyB2b2lkIHNldFN0YXJ0dGltZShEYXRlIHN0YXJ0dGltZSkgeworCQl0aGlzLnN0YXJ0dGltZSA9IHN0YXJ0dGltZTsKKwl9CisKKwlwdWJsaWMgRGF0ZSBnZXRVcGRhdGV0aW1lKCkgeworCQlyZXR1cm4gdXBkYXRldGltZTsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRVcGRhdGV0aW1lKERhdGUgdXBkYXRldGltZSkgeworCQl0aGlzLnVwZGF0ZXRpbWUgPSB1cGRhdGV0aW1lOworCX0KKworCXB1YmxpYyBib29sZWFuIGdldERlbGV0ZWQoKSB7CisJCXJldHVybiBkZWxldGVkOworCX0KKworCXB1YmxpYyB2b2lkIHNldERlbGV0ZWQoYm9vbGVhbiBkZWxldGVkKSB7CisJCXRoaXMuZGVsZXRlZCA9IGRlbGV0ZWQ7CisJfQorCQorCXB1YmxpYyBMb25nIGdldEZpZWxkdmFsdWVzX2lkKCkgeworCQlyZXR1cm4gZmllbGR2YWx1ZXNfaWQ7CisJfQorCisJcHVibGljIHZvaWQgc2V0RmllbGR2YWx1ZXNfaWQoTG9uZyBmaWVsZHZhbHVlc19pZCkgeworCQl0aGlzLmZpZWxkdmFsdWVzX2lkID0gZmllbGR2YWx1ZXNfaWQ7CisJfQorCisJcHVibGljIExvbmcgZ2V0RXJyb3J0eXBlX2lkKCkgeworCQkvL3JldHVybiBlcnJvclR5cGUuZ2V0RXJyb3J0eXBlX2lkKCk7CisJCXJldHVybiBlcnJvcnR5cGVfaWQ7CisJfQorCisJcHVibGljIHZvaWQgc2V0RXJyb3J0eXBlX2lkKExvbmcgZXJyb3J0eXBlX2lkKSB7CisJCXRoaXMuZXJyb3J0eXBlX2lkID0gZXJyb3J0eXBlX2lkOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9iYXNpYy9MZGFwQ29uZmlnLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvYmFzaWMvTGRhcENvbmZpZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1NmNhYTcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvYmFzaWMvTGRhcENvbmZpZy5qYXZhCkBAIC0wLDAgKzEsMTg1IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljOworCitpbXBvcnQgamF2YS5pby5TZXJpYWxpemFibGU7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CisKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkZldGNoVHlwZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5HZW5lcmF0ZWRWYWx1ZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5HZW5lcmF0aW9uVHlwZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5JZDsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Kb2luQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkxvYjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5NYW55VG9PbmU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTmFtZWRRdWVyaWVzOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk5hbWVkUXVlcnk7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5qcGEucGVyc2lzdGVuY2UuamRiYy5Gb3JlaWduS2V5OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLklEYXRhUHJvdmlkZXJFbnRpdHk7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlci5Vc2VyOworaW1wb3J0IG9yZy5zaW1wbGVmcmFtZXdvcmsueG1sLkVsZW1lbnQ7CitpbXBvcnQgb3JnLnNpbXBsZWZyYW1ld29yay54bWwuUm9vdDsKKworQEVudGl0eQorQE5hbWVkUXVlcmllcyh7CisJQE5hbWVkUXVlcnkobmFtZT0iZ2V0Tm9uZGVsZXRlZExkYXBDb25maWdzIiwgcXVlcnk9IlNFTEVDVCB1IEZST00gTGRhcENvbmZpZyB1IFdIRVJFIHUuZGVsZXRlZCA9IGZhbHNlIikKK30pCitAVGFibGUobmFtZSA9ICJsZGFwY29uZmlnIikKK0BSb290KG5hbWU9ImxkYXBjb25maWciKQorcHVibGljIGNsYXNzIExkYXBDb25maWcgaW1wbGVtZW50cyBTZXJpYWxpemFibGUsIElEYXRhUHJvdmlkZXJFbnRpdHkgeworCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDI4MzkxNTg1MTk4MDM5OTMwMzVMOworCUBJZAorCUBHZW5lcmF0ZWRWYWx1ZShzdHJhdGVneSA9IEdlbmVyYXRpb25UeXBlLklERU5USVRZKQorCUBDb2x1bW4obmFtZT0iaWQiKQorCXB1YmxpYyBsb25nIGxkYXBDb25maWdJZCA9IDBMOworCQorCUBDb2x1bW4obmFtZT0ibmFtZSIpCisJQEVsZW1lbnQoZGF0YT10cnVlKQorCXB1YmxpYyBTdHJpbmcgbmFtZTsKKwkKKwlAQ29sdW1uKG5hbWU9ImNvbmZpZ19maWxlX25hbWUiKQorCUBFbGVtZW50KGRhdGE9dHJ1ZSkKKwlwdWJsaWMgU3RyaW5nIGNvbmZpZ0ZpbGVOYW1lOworCQorCUBDb2x1bW4obmFtZT0iYWRkX2RvbWFpbl90b191c2VyX25hbWUiKQorCUBFbGVtZW50KGRhdGE9dHJ1ZSkKKwlwdWJsaWMgQm9vbGVhbiBhZGREb21haW5Ub1VzZXJOYW1lOworCQorCUBDb2x1bW4obmFtZT0iZG9tYWluIikKKwlARWxlbWVudChkYXRhPXRydWUpCisJcHVibGljIFN0cmluZyBkb21haW47CisJCisJQENvbHVtbihuYW1lPSJpc19hY3RpdmUiKQorCUBFbGVtZW50KGRhdGE9dHJ1ZSkKKwlwdWJsaWMgQm9vbGVhbiBpc0FjdGl2ZTsKKwkKKwlAQ29sdW1uKG5hbWU9Imluc2VydGVkIikKKwlwdWJsaWMgRGF0ZSBpbnNlcnRlZDsKKwkKKwlAQ29sdW1uKG5hbWU9InVwZGF0ZWQiKQorCXB1YmxpYyBEYXRlIHVwZGF0ZWQ7CisJCisJQE1hbnlUb09uZShmZXRjaCA9IEZldGNoVHlwZS5FQUdFUikKKwlASm9pbkNvbHVtbihuYW1lPSJpbnNlcnRlZGJ5X2lkIiwgdXBkYXRhYmxlPXRydWUsIGluc2VydGFibGU9dHJ1ZSkKKwlARm9yZWlnbktleShlbmFibGVkID0gdHJ1ZSkKKwlwdWJsaWMgVXNlciBpbnNlcnRlZGJ5OworCQorCUBNYW55VG9PbmUoZmV0Y2ggPSBGZXRjaFR5cGUuRUFHRVIpCisJQEpvaW5Db2x1bW4obmFtZT0idXBkYXRlZGJ5X2lkIiwgdXBkYXRhYmxlPXRydWUsIGluc2VydGFibGU9dHJ1ZSkKKwlARm9yZWlnbktleShlbmFibGVkID0gdHJ1ZSkKKwlwdWJsaWMgVXNlciB1cGRhdGVkYnk7CisJCisJQENvbHVtbihuYW1lPSJkZWxldGVkIikKKwlwcml2YXRlIGJvb2xlYW4gZGVsZXRlZDsKKwkKKwlATG9iCisJQENvbHVtbihuYW1lID0gImNvbW1lbnRfZmllbGQiLCBsZW5ndGggPSAyMDQ4KQorCUBFbGVtZW50KGRhdGEgPSB0cnVlLCByZXF1aXJlZCA9IGZhbHNlKQorCXByaXZhdGUgU3RyaW5nIGNvbW1lbnQ7CisKKwlwdWJsaWMgbG9uZyBnZXRMZGFwQ29uZmlnSWQoKSB7CisJCXJldHVybiBsZGFwQ29uZmlnSWQ7CisJfQorCXB1YmxpYyB2b2lkIHNldExkYXBDb25maWdJZChsb25nIGxkYXBDb25maWdJZCkgeworCQl0aGlzLmxkYXBDb25maWdJZCA9IGxkYXBDb25maWdJZDsKKwl9CisgICAgCisJcHVibGljIFN0cmluZyBnZXROYW1lKCkgeworCQlyZXR1cm4gbmFtZTsKKwl9CisJcHVibGljIHZvaWQgc2V0TmFtZShTdHJpbmcgbmFtZSkgeworCQl0aGlzLm5hbWUgPSBuYW1lOworCX0KKyAgICAKKwlwdWJsaWMgU3RyaW5nIGdldENvbmZpZ0ZpbGVOYW1lKCkgeworCQlyZXR1cm4gY29uZmlnRmlsZU5hbWU7CisJfQorCXB1YmxpYyB2b2lkIHNldENvbmZpZ0ZpbGVOYW1lKFN0cmluZyBjb25maWdGaWxlTmFtZSkgeworCQl0aGlzLmNvbmZpZ0ZpbGVOYW1lID0gY29uZmlnRmlsZU5hbWU7CisJfQorICAgIAorCXB1YmxpYyBCb29sZWFuIGdldEFkZERvbWFpblRvVXNlck5hbWUoKSB7CisJCXJldHVybiBhZGREb21haW5Ub1VzZXJOYW1lOworCX0KKwlwdWJsaWMgdm9pZCBzZXRBZGREb21haW5Ub1VzZXJOYW1lKEJvb2xlYW4gYWRkRG9tYWluVG9Vc2VyTmFtZSkgeworCQl0aGlzLmFkZERvbWFpblRvVXNlck5hbWUgPSBhZGREb21haW5Ub1VzZXJOYW1lOworCX0KKyAgICAKKwlwdWJsaWMgU3RyaW5nIGdldERvbWFpbigpIHsKKwkJcmV0dXJuIGRvbWFpbjsKKwl9CisJcHVibGljIHZvaWQgc2V0RG9tYWluKFN0cmluZyBkb21haW4pIHsKKwkJdGhpcy5kb21haW4gPSBkb21haW47CisJfQorICAgIAorCXB1YmxpYyBCb29sZWFuIGdldElzQWN0aXZlKCkgeworCQlyZXR1cm4gaXNBY3RpdmU7CisJfQorCXB1YmxpYyB2b2lkIHNldElzQWN0aXZlKEJvb2xlYW4gaXNBY3RpdmUpIHsKKwkJdGhpcy5pc0FjdGl2ZSA9IGlzQWN0aXZlOworCX0KKwkKKwlwdWJsaWMgRGF0ZSBnZXRJbnNlcnRlZCgpIHsKKwkJcmV0dXJuIGluc2VydGVkOworCX0KKwlwdWJsaWMgdm9pZCBzZXRJbnNlcnRlZChEYXRlIGluc2VydGVkKSB7CisJCXRoaXMuaW5zZXJ0ZWQgPSBpbnNlcnRlZDsKKwl9CisJCisJcHVibGljIERhdGUgZ2V0VXBkYXRlZCgpIHsKKwkJcmV0dXJuIHVwZGF0ZWQ7CisJfQorCXB1YmxpYyB2b2lkIHNldFVwZGF0ZWQoRGF0ZSB1cGRhdGVkKSB7CisJCXRoaXMudXBkYXRlZCA9IHVwZGF0ZWQ7CisJfQorCQorCXB1YmxpYyBVc2VyIGdldEluc2VydGVkYnkoKSB7CisJCXJldHVybiBpbnNlcnRlZGJ5OworCX0KKwlwdWJsaWMgdm9pZCBzZXRJbnNlcnRlZGJ5KFVzZXIgaW5zZXJ0ZWRieSkgeworCQl0aGlzLmluc2VydGVkYnkgPSBpbnNlcnRlZGJ5OworCX0KKwkKKwlwdWJsaWMgVXNlciBnZXRVcGRhdGVkYnkoKSB7CisJCXJldHVybiB1cGRhdGVkYnk7CisJfQorCXB1YmxpYyB2b2lkIHNldFVwZGF0ZWRieShVc2VyIHVwZGF0ZWRieSkgeworCQl0aGlzLnVwZGF0ZWRieSA9IHVwZGF0ZWRieTsKKwl9CisJCisJcHVibGljIGJvb2xlYW4gZ2V0RGVsZXRlZCgpIHsKKwkJcmV0dXJuIGRlbGV0ZWQ7CisJfQorCXB1YmxpYyB2b2lkIHNldERlbGV0ZWQoYm9vbGVhbiBkZWxldGVkKSB7CisJCXRoaXMuZGVsZXRlZCA9IGRlbGV0ZWQ7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRDb21tZW50KCkgeworCQlyZXR1cm4gY29tbWVudDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRDb21tZW50KFN0cmluZyBjb21tZW50KSB7CisJCXRoaXMuY29tbWVudCA9IGNvbW1lbnQ7CisJfQorCQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL2Jhc2ljL01haWxNZXNzYWdlLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvYmFzaWMvTWFpbE1lc3NhZ2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNWIwMDZhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL2Jhc2ljL01haWxNZXNzYWdlLmphdmEKQEAgLTAsMCArMSwxOTYgQEAKKy8qDQorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAqIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWM7DQorDQoraW1wb3J0IGphdmEudXRpbC5DYWxlbmRhcjsNCisNCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOw0KK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHk7DQoraW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudW1UeXBlOw0KK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnVtZXJhdGVkOw0KK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5HZW5lcmF0ZWRWYWx1ZTsNCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuR2VuZXJhdGlvblR5cGU7DQoraW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLklkOw0KK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Mb2I7DQoraW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk5hbWVkUXVlcmllczsNCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTmFtZWRRdWVyeTsNCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7DQorDQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLklEYXRhUHJvdmlkZXJFbnRpdHk7DQorDQorQEVudGl0eQ0KK0BOYW1lZFF1ZXJpZXMoew0KKwlATmFtZWRRdWVyeShuYW1lID0gImdldE1haWxNZXNzYWdlQnlJZCIsIHF1ZXJ5ID0gIlNFTEVDVCBtIEZST00gTWFpbE1lc3NhZ2UgbSBXSEVSRSBtLmlkID0gOmlkIikNCisJLCBATmFtZWRRdWVyeShuYW1lID0gImdldE1haWxNZXNzYWdlcyINCisJCSwgcXVlcnkgPSAiU0VMRUNUIG0gRlJPTSBNYWlsTWVzc2FnZSBtIFdIRVJFIG0uc3RhdHVzID0gOnN0YXR1cyBPUkRFUiBCWSBtLnVwZGF0ZWQsIG0uaW5zZXJ0ZWQiKQ0KKwksIEBOYW1lZFF1ZXJ5KG5hbWUgPSAiY291bnRNYWlsTWVzc2FnZXMiLCBxdWVyeSA9ICJTRUxFQ1QgQ09VTlQobSkgRlJPTSBNYWlsTWVzc2FnZSBtIFdIRVJFIG0uc3RhdHVzID0gOnN0YXR1cyIpDQorfSkNCitAVGFibGUobmFtZSA9ICJlbWFpbF9xdWV1ZSIpDQorcHVibGljIGNsYXNzIE1haWxNZXNzYWdlIGltcGxlbWVudHMgSURhdGFQcm92aWRlckVudGl0eSB7DQorCXB1YmxpYyBlbnVtIFN0YXR1cyB7DQorCQlOT05FDQorCQksIFNFTkRJTkcNCisJCSwgRVJST1INCisJCSwgRE9ORQ0KKwl9DQorCQ0KKwlASWQNCisJQEdlbmVyYXRlZFZhbHVlKHN0cmF0ZWd5ID0gR2VuZXJhdGlvblR5cGUuSURFTlRJVFkpDQorCUBDb2x1bW4obmFtZSA9ICJpZCIpDQorCXByaXZhdGUgTG9uZyBpZDsNCisJDQorCUBMb2INCisJQENvbHVtbihuYW1lID0gInJlY2lwaWVudHMiKQ0KKwlwcml2YXRlIFN0cmluZyByZWNpcGllbnRzOw0KKwkNCisJQENvbHVtbihuYW1lID0gInJlcGx5VG8iKQ0KKwlwcml2YXRlIFN0cmluZyByZXBseVRvOw0KKwkNCisJQENvbHVtbihuYW1lID0gInN1YmplY3QiKQ0KKwlwcml2YXRlIFN0cmluZyBzdWJqZWN0Ow0KKwkNCisJQExvYg0KKwlAQ29sdW1uKG5hbWUgPSAiYm9keSIpDQorCXByaXZhdGUgU3RyaW5nIGJvZHk7DQorDQorCUBMb2INCisJQENvbHVtbihuYW1lID0gImljcyIpDQorCXByaXZhdGUgYnl0ZVtdIGljczsNCisNCisJQENvbHVtbihuYW1lID0gInN0YXR1cyIsIG51bGxhYmxlID0gZmFsc2UpDQorCUBFbnVtZXJhdGVkKEVudW1UeXBlLlNUUklORykNCisJcHJpdmF0ZSBTdGF0dXMgc3RhdHVzID0gU3RhdHVzLk5PTkU7DQorDQorCUBDb2x1bW4obmFtZSA9ICJpbnNlcnRlZCIpDQorCXByaXZhdGUgQ2FsZW5kYXIgaW5zZXJ0ZWQ7DQorCQ0KKwlAQ29sdW1uKG5hbWUgPSAidXBkYXRlZCIpDQorCXByaXZhdGUgQ2FsZW5kYXIgdXBkYXRlZDsNCisJDQorCUBDb2x1bW4obmFtZSA9ICJlcnJvcl9jb3VudCIsIG51bGxhYmxlID0gZmFsc2UpDQorCXByaXZhdGUgaW50IGVycm9yQ291bnQgPSAwOw0KKwkNCisJQExvYg0KKwlAQ29sdW1uKG5hbWUgPSAibGFzdF9lcnJvciIpDQorCXByaXZhdGUgU3RyaW5nIGxhc3RFcnJvcjsNCisNCisJcHVibGljIE1haWxNZXNzYWdlKCkgew0KKwkJdGhpcyhudWxsLCBudWxsLCBudWxsLCBudWxsLCBudWxsKTsNCisJfQ0KKwkNCisJcHVibGljIE1haWxNZXNzYWdlKFN0cmluZyByZWNpcGllbnRzLCBTdHJpbmcgcmVwbHlUbywgU3RyaW5nIHN1YmplY3QsIFN0cmluZyBib2R5KSB7DQorCQl0aGlzKHJlY2lwaWVudHMsIHJlcGx5VG8sIHN1YmplY3QsIGJvZHksIG51bGwpOw0KKwl9DQorCQ0KKwlwdWJsaWMgTWFpbE1lc3NhZ2UoU3RyaW5nIHJlY2lwaWVudHMsIFN0cmluZyByZXBseVRvLCBTdHJpbmcgc3ViamVjdCwgU3RyaW5nIGJvZHksIGJ5dGVbXSBpY3MpIHsNCisJCXRoaXMucmVjaXBpZW50cyA9IHJlY2lwaWVudHM7DQorCQl0aGlzLnJlcGx5VG8gPSByZXBseVRvOw0KKwkJdGhpcy5zdWJqZWN0ID0gc3ViamVjdDsNCisJCXRoaXMuYm9keSA9IGJvZHk7DQorCQl0aGlzLmljcyA9IGljczsNCisJfQ0KKwkNCisJcHVibGljIExvbmcgZ2V0SWQoKSB7DQorCQlyZXR1cm4gaWQ7DQorCX0NCisNCisJcHVibGljIHZvaWQgc2V0SWQoTG9uZyBpZCkgew0KKwkJdGhpcy5pZCA9IGlkOw0KKwl9DQorDQorCXB1YmxpYyBTdHJpbmcgZ2V0UmVjaXBpZW50cygpIHsNCisJCXJldHVybiByZWNpcGllbnRzOw0KKwl9DQorDQorCXB1YmxpYyB2b2lkIHNldFJlY2lwaWVudHMoU3RyaW5nIHJlY2lwaWVudHMpIHsNCisJCXRoaXMucmVjaXBpZW50cyA9IHJlY2lwaWVudHM7DQorCX0NCisNCisJcHVibGljIFN0cmluZyBnZXRSZXBseVRvKCkgew0KKwkJcmV0dXJuIHJlcGx5VG87DQorCX0NCisNCisJcHVibGljIHZvaWQgc2V0UmVwbHlUbyhTdHJpbmcgcmVwbHlUbykgew0KKwkJdGhpcy5yZXBseVRvID0gcmVwbHlUbzsNCisJfQ0KKw0KKwlwdWJsaWMgU3RyaW5nIGdldFN1YmplY3QoKSB7DQorCQlyZXR1cm4gc3ViamVjdDsNCisJfQ0KKw0KKwlwdWJsaWMgdm9pZCBzZXRTdWJqZWN0KFN0cmluZyBzdWJqZWN0KSB7DQorCQl0aGlzLnN1YmplY3QgPSBzdWJqZWN0Ow0KKwl9DQorDQorCXB1YmxpYyBTdHJpbmcgZ2V0Qm9keSgpIHsNCisJCXJldHVybiBib2R5Ow0KKwl9DQorDQorCXB1YmxpYyB2b2lkIHNldEJvZHkoU3RyaW5nIGJvZHkpIHsNCisJCXRoaXMuYm9keSA9IGJvZHk7DQorCX0NCisNCisJcHVibGljIFN0YXR1cyBnZXRTdGF0dXMoKSB7DQorCQlyZXR1cm4gc3RhdHVzOw0KKwl9DQorDQorCXB1YmxpYyB2b2lkIHNldFN0YXR1cyhTdGF0dXMgc3RhdHVzKSB7DQorCQl0aGlzLnN0YXR1cyA9IHN0YXR1czsNCisJfQ0KKw0KKwlwdWJsaWMgQ2FsZW5kYXIgZ2V0SW5zZXJ0ZWQoKSB7DQorCQlyZXR1cm4gaW5zZXJ0ZWQ7DQorCX0NCisNCisJcHVibGljIHZvaWQgc2V0SW5zZXJ0ZWQoQ2FsZW5kYXIgaW5zZXJ0ZWQpIHsNCisJCXRoaXMuaW5zZXJ0ZWQgPSBpbnNlcnRlZDsNCisJfQ0KKw0KKwlwdWJsaWMgQ2FsZW5kYXIgZ2V0VXBkYXRlZCgpIHsNCisJCXJldHVybiB1cGRhdGVkOw0KKwl9DQorDQorCXB1YmxpYyB2b2lkIHNldFVwZGF0ZWQoQ2FsZW5kYXIgdXBkYXRlZCkgew0KKwkJdGhpcy51cGRhdGVkID0gdXBkYXRlZDsNCisJfQ0KKw0KKwlwdWJsaWMgYnl0ZVtdIGdldEljcygpIHsNCisJCXJldHVybiBpY3M7DQorCX0NCisNCisJcHVibGljIHZvaWQgc2V0SWNzKGJ5dGVbXSBpY3MpIHsNCisJCXRoaXMuaWNzID0gaWNzOw0KKwl9DQorDQorCXB1YmxpYyBpbnQgZ2V0RXJyb3JDb3VudCgpIHsNCisJCXJldHVybiBlcnJvckNvdW50Ow0KKwl9DQorDQorCXB1YmxpYyB2b2lkIHNldEVycm9yQ291bnQoaW50IGVycm9yQ291bnQpIHsNCisJCXRoaXMuZXJyb3JDb3VudCA9IGVycm9yQ291bnQ7DQorCX0NCisNCisJcHVibGljIFN0cmluZyBnZXRMYXN0RXJyb3IoKSB7DQorCQlyZXR1cm4gbGFzdEVycm9yOw0KKwl9DQorDQorCXB1YmxpYyB2b2lkIHNldExhc3RFcnJvcihTdHJpbmcgbGFzdEVycm9yKSB7DQorCQl0aGlzLmxhc3RFcnJvciA9IGxhc3RFcnJvcjsNCisJfQ0KK30NCmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvYmFzaWMvTmF2aWdsb2JhbC5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL2Jhc2ljL05hdmlnbG9iYWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZWIwNWFkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL2Jhc2ljL05hdmlnbG9iYWwuamF2YQpAQCAtMCwwICsxLDI0NyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYzsKKworaW1wb3J0IGphdmEuaW8uU2VyaWFsaXphYmxlOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ2FzY2FkZVR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5GZXRjaFR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuR2VuZXJhdGVkVmFsdWU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuR2VuZXJhdGlvblR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSWQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSm9pbkNvbHVtbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5OYW1lZFF1ZXJpZXM7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTmFtZWRRdWVyeTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5PbmVUb01hbnk7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVHJhbnNpZW50OworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVuanBhLnBlcnNpc3RlbmNlLmpkYmMuRm9yZWlnbktleTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5sYW5nLkZpZWxkbGFuZ3VhZ2VzdmFsdWVzOworCitARW50aXR5CitATmFtZWRRdWVyaWVzKHsKKwkJQE5hbWVkUXVlcnkobmFtZSA9ICJnZXROYXZpZ2F0aW9uIiwgcXVlcnkgPSAiU0VMRUNUIERJU1RJTkNUIG5nIGZyb20gTmF2aWdsb2JhbCBuZyAiCisJCQkJKyAiTEVGVCBKT0lOIG5nLm1haW5uYXZpIG5tICIKKwkJCQkrICJXSEVSRSBubS5kZWxldGVkID0gZmFsc2UgIgorCQkJCSsgIkFORCBuZy5sZXZlbF9pZCA8PSA6bGV2ZWxfaWQgIgorCQkJCSsgIkFORCBubS5sZXZlbF9pZCA8PSA6bGV2ZWxfaWQgIgorCQkJCSsgIkFORCBuZy5kZWxldGVkID0gZmFsc2UgIgorCQkJCSsgIm9yZGVyIGJ5IG5nLm5hdmlvcmRlciwgbm0ubmF2aW9yZGVyIiksCisJCUBOYW1lZFF1ZXJ5KG5hbWUgPSAiZ2V0TmF2aWdhdGlvbkJ5SWQiLCBxdWVyeSA9ICJTRUxFQ1QgbmcgZnJvbSBOYXZpZ2xvYmFsIG5nIFdIRVJFIG5nLmdsb2JhbF9pZCA9IDpnbG9iYWxfaWQiKSB9KQorQFRhYmxlKG5hbWUgPSAibmF2aWdsb2JhbCIpCitwdWJsaWMgY2xhc3MgTmF2aWdsb2JhbCBpbXBsZW1lbnRzIFNlcmlhbGl6YWJsZSB7CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSA1MTU4MjgwMzM4MTM3Njc3MTlMOworCUBJZAorCUBHZW5lcmF0ZWRWYWx1ZShzdHJhdGVneSA9IEdlbmVyYXRpb25UeXBlLklERU5USVRZKQorCUBDb2x1bW4obmFtZSA9ICJpZCIpCisJcHJpdmF0ZSBMb25nIGdsb2JhbF9pZDsKKwkKKwlAQ29sdW1uKG5hbWUgPSAibmFtZSIpCisJcHJpdmF0ZSBTdHJpbmcgbmFtZTsKKwkKKwlAQ29sdW1uKG5hbWUgPSAiaWNvbiIpCisJcHJpdmF0ZSBTdHJpbmcgaWNvbjsKKwkKKwlAQ29sdW1uKG5hbWUgPSAiaXNsZWFmIikKKwlwcml2YXRlIEJvb2xlYW4gaXNsZWFmOworCQorCUBDb2x1bW4obmFtZSA9ICJpc29wZW4iKQorCXByaXZhdGUgQm9vbGVhbiBpc29wZW47CisJCisJQENvbHVtbihuYW1lID0gImFjdGlvbiIpCisJcHJpdmF0ZSBTdHJpbmcgYWN0aW9uOworCQorCUBDb2x1bW4obmFtZSA9ICJ1cGRhdGV0aW1lIikKKwlwcml2YXRlIERhdGUgdXBkYXRldGltZTsKKwkKKwlAQ29sdW1uKG5hbWUgPSAic3RhcnR0aW1lIikKKwlwcml2YXRlIERhdGUgc3RhcnR0aW1lOworCQorCUBDb2x1bW4obmFtZSA9ICJjb21tZW50X2ZpZWxkIikKKwlwcml2YXRlIFN0cmluZyBjb21tZW50OworCQorCUBDb2x1bW4obmFtZSA9ICJuYXZpb3JkZXIiKQorCXByaXZhdGUgSW50ZWdlciBuYXZpb3JkZXI7CisJCisJQENvbHVtbihuYW1lID0gImxldmVsX2lkIikKKwlwcml2YXRlIExvbmcgbGV2ZWxfaWQ7CisJCisJQENvbHVtbihuYW1lID0gImRlbGV0ZWQiKQorCXByaXZhdGUgYm9vbGVhbiBkZWxldGVkOworCQorCUBDb2x1bW4obmFtZSA9ICJmaWVsZHZhbHVlc19pZCIpCisJcHJpdmF0ZSBMb25nIGZpZWxkdmFsdWVzX2lkOworCQorCUBDb2x1bW4obmFtZSA9ICJ0b29sdGlwX2ZpZWxkdmFsdWVzX2lkIikKKwlwcml2YXRlIExvbmcgdG9vbHRpcF9maWVsZHZhbHVlc19pZDsKKwkKKwlAT25lVG9NYW55KGZldGNoID0gRmV0Y2hUeXBlLkxBWlksIGNhc2NhZGUgPSBDYXNjYWRlVHlwZS5BTEwpCisJQEpvaW5Db2x1bW4obmFtZSA9ICJnbG9iYWxfaWQiKQorCUBGb3JlaWduS2V5KGVuYWJsZWQgPSB0cnVlKQorCXByaXZhdGUgTGlzdDxOYXZpbWFpbj4gbWFpbm5hdmk7CisJCisJQFRyYW5zaWVudAorCXByaXZhdGUgRmllbGRsYW5ndWFnZXN2YWx1ZXMgbGFiZWw7CisJCisJQFRyYW5zaWVudAorCXByaXZhdGUgRmllbGRsYW5ndWFnZXN2YWx1ZXMgdG9vbHRpcDsKKworCXB1YmxpYyBTdHJpbmcgZ2V0QWN0aW9uKCkgeworCQlyZXR1cm4gYWN0aW9uOworCX0KKworCXB1YmxpYyB2b2lkIHNldEFjdGlvbihTdHJpbmcgYWN0aW9uKSB7CisJCXRoaXMuYWN0aW9uID0gYWN0aW9uOworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0Q29tbWVudCgpIHsKKwkJcmV0dXJuIGNvbW1lbnQ7CisJfQorCisJcHVibGljIHZvaWQgc2V0Q29tbWVudChTdHJpbmcgY29tbWVudCkgeworCQl0aGlzLmNvbW1lbnQgPSBjb21tZW50OworCX0KKworCXB1YmxpYyBMb25nIGdldEdsb2JhbF9pZCgpIHsKKwkJcmV0dXJuIGdsb2JhbF9pZDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRHbG9iYWxfaWQoTG9uZyBnbG9iYWxfaWQpIHsKKwkJdGhpcy5nbG9iYWxfaWQgPSBnbG9iYWxfaWQ7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRJY29uKCkgeworCQlyZXR1cm4gaWNvbjsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRJY29uKFN0cmluZyBpY29uKSB7CisJCXRoaXMuaWNvbiA9IGljb247CisJfQorCisJcHVibGljIEJvb2xlYW4gZ2V0SXNsZWFmKCkgeworCQlyZXR1cm4gaXNsZWFmOworCX0KKworCXB1YmxpYyB2b2lkIHNldElzbGVhZihCb29sZWFuIGlzbGVhZikgeworCQl0aGlzLmlzbGVhZiA9IGlzbGVhZjsKKwl9CisKKwlwdWJsaWMgQm9vbGVhbiBnZXRJc29wZW4oKSB7CisJCXJldHVybiBpc29wZW47CisJfQorCisJcHVibGljIHZvaWQgc2V0SXNvcGVuKEJvb2xlYW4gaXNvcGVuKSB7CisJCXRoaXMuaXNvcGVuID0gaXNvcGVuOworCX0KKworCXB1YmxpYyBEYXRlIGdldFN0YXJ0dGltZSgpIHsKKwkJcmV0dXJuIHN0YXJ0dGltZTsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRTdGFydHRpbWUoRGF0ZSBzdGFydHRpbWUpIHsKKwkJdGhpcy5zdGFydHRpbWUgPSBzdGFydHRpbWU7CisJfQorCisJcHVibGljIERhdGUgZ2V0VXBkYXRldGltZSgpIHsKKwkJcmV0dXJuIHVwZGF0ZXRpbWU7CisJfQorCisJcHVibGljIHZvaWQgc2V0VXBkYXRldGltZShEYXRlIHVwZGF0ZXRpbWUpIHsKKwkJdGhpcy51cGRhdGV0aW1lID0gdXBkYXRldGltZTsKKwl9CisKKwlwdWJsaWMgYm9vbGVhbiBnZXREZWxldGVkKCkgeworCQlyZXR1cm4gZGVsZXRlZDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXREZWxldGVkKGJvb2xlYW4gZGVsZXRlZCkgeworCQl0aGlzLmRlbGV0ZWQgPSBkZWxldGVkOworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpIHsKKwkJcmV0dXJuIG5hbWU7CisJfQorCisJcHVibGljIHZvaWQgc2V0TmFtZShTdHJpbmcgbmFtZSkgeworCQl0aGlzLm5hbWUgPSBuYW1lOworCX0KKworCXB1YmxpYyBJbnRlZ2VyIGdldE5hdmlvcmRlcigpIHsKKwkJcmV0dXJuIG5hdmlvcmRlcjsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXROYXZpb3JkZXIoSW50ZWdlciBuYXZpb3JkZXIpIHsKKwkJdGhpcy5uYXZpb3JkZXIgPSBuYXZpb3JkZXI7CisJfQorCisJcHVibGljIExvbmcgZ2V0TGV2ZWxfaWQoKSB7CisJCXJldHVybiBsZXZlbF9pZDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRMZXZlbF9pZChMb25nIGxldmVsX2lkKSB7CisJCXRoaXMubGV2ZWxfaWQgPSBsZXZlbF9pZDsKKwl9CisKKwlwdWJsaWMgTGlzdDxOYXZpbWFpbj4gZ2V0TWFpbm5hdmkoKSB7CisJCXJldHVybiBtYWlubmF2aTsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRNYWlubmF2aShMaXN0PE5hdmltYWluPiBtYWlubmF2aSkgeworCQl0aGlzLm1haW5uYXZpID0gbWFpbm5hdmk7CisJfQorCisJcHVibGljIExvbmcgZ2V0RmllbGR2YWx1ZXNfaWQoKSB7CisJCXJldHVybiBmaWVsZHZhbHVlc19pZDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRGaWVsZHZhbHVlc19pZChMb25nIGZpZWxkdmFsdWVzX2lkKSB7CisJCXRoaXMuZmllbGR2YWx1ZXNfaWQgPSBmaWVsZHZhbHVlc19pZDsKKwl9CisKKwlwdWJsaWMgRmllbGRsYW5ndWFnZXN2YWx1ZXMgZ2V0TGFiZWwoKSB7CisJCXJldHVybiBsYWJlbDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRMYWJlbChGaWVsZGxhbmd1YWdlc3ZhbHVlcyBsYWJlbCkgeworCQl0aGlzLmxhYmVsID0gbGFiZWw7CisJfQorCisJcHVibGljIExvbmcgZ2V0VG9vbHRpcF9maWVsZHZhbHVlc19pZCgpIHsKKwkJcmV0dXJuIHRvb2x0aXBfZmllbGR2YWx1ZXNfaWQ7CisJfQorCisJcHVibGljIHZvaWQgc2V0VG9vbHRpcF9maWVsZHZhbHVlc19pZChMb25nIHRvb2x0aXBfZmllbGR2YWx1ZXNfaWQpIHsKKwkJdGhpcy50b29sdGlwX2ZpZWxkdmFsdWVzX2lkID0gdG9vbHRpcF9maWVsZHZhbHVlc19pZDsKKwl9CisKKwlwdWJsaWMgRmllbGRsYW5ndWFnZXN2YWx1ZXMgZ2V0VG9vbHRpcCgpIHsKKwkJcmV0dXJuIHRvb2x0aXA7CisJfQorCisJcHVibGljIHZvaWQgc2V0VG9vbHRpcChGaWVsZGxhbmd1YWdlc3ZhbHVlcyB0b29sdGlwKSB7CisJCXRoaXMudG9vbHRpcCA9IHRvb2x0aXA7CisJfQorCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvYmFzaWMvTmF2aW1haW4uamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9iYXNpYy9OYXZpbWFpbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjYWY5OWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvYmFzaWMvTmF2aW1haW4uamF2YQpAQCAtMCwwICsxLDIyOSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYzsKKworaW1wb3J0IGphdmEuaW8uU2VyaWFsaXphYmxlOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5HZW5lcmF0ZWRWYWx1ZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5HZW5lcmF0aW9uVHlwZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5JZDsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UYWJsZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UcmFuc2llbnQ7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5sYW5nLkZpZWxkbGFuZ3VhZ2VzdmFsdWVzOworCitARW50aXR5CitAVGFibGUobmFtZSA9ICJuYXZpbWFpbiIpCitwdWJsaWMgY2xhc3MgTmF2aW1haW4gaW1wbGVtZW50cyBTZXJpYWxpemFibGUgeworCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDE2OTE3ODc4OTYxODM3MDE4NzdMOworCUBJZAorCUBHZW5lcmF0ZWRWYWx1ZShzdHJhdGVneSA9IEdlbmVyYXRpb25UeXBlLklERU5USVRZKQorCUBDb2x1bW4obmFtZT0iaWQiKQorICAgIHByaXZhdGUgTG9uZyBtYWluX2lkOworCQorCUBDb2x1bW4obmFtZT0iZ2xvYmFsX2lkIikKKyAgICBwcml2YXRlIExvbmcgZ2xvYmFsX2lkOworCQorCUBDb2x1bW4obmFtZT0ibmFtZSIpCisgICAgcHJpdmF0ZSBTdHJpbmcgbmFtZTsKKwkKKwlAQ29sdW1uKG5hbWU9Imljb24iKQorICAgIHByaXZhdGUgU3RyaW5nIGljb247CisJCisJQENvbHVtbihuYW1lPSJpc2xlYWYiKQorICAgIHByaXZhdGUgQm9vbGVhbiBpc2xlYWY7CisJCisJQENvbHVtbihuYW1lPSJpc29wZW4iKQorICAgIHByaXZhdGUgQm9vbGVhbiBpc29wZW47CisJCisJQENvbHVtbihuYW1lPSJhY3Rpb24iKQorICAgIHByaXZhdGUgU3RyaW5nIGFjdGlvbjsKKwkKKwlAQ29sdW1uKG5hbWU9InBhcmFtcyIpCisgICAgcHJpdmF0ZSBTdHJpbmcgcGFyYW1zOworCQorCUBDb2x1bW4obmFtZT0idXBkYXRldGltZSIpCisgICAgcHJpdmF0ZSBEYXRlIHVwZGF0ZXRpbWU7CisJCisJQENvbHVtbihuYW1lPSJzdGFydHRpbWUiKQorICAgIHByaXZhdGUgRGF0ZSBzdGFydHRpbWU7CisJCisJQENvbHVtbihuYW1lPSJjb21tZW50X2ZpZWxkIikKKyAgICBwcml2YXRlIFN0cmluZyBjb21tZW50OworCQorCUBDb2x1bW4obmFtZT0ibmF2aW9yZGVyIikKKyAgICBwcml2YXRlIEludGVnZXIgbmF2aW9yZGVyOworCQorCUBDb2x1bW4obmFtZT0ibGV2ZWxfaWQiKQorCXByaXZhdGUgTG9uZyBsZXZlbF9pZDsKKwkKKwlAQ29sdW1uKG5hbWU9ImZpZWxkdmFsdWVzX2lkIikKKwlwcml2YXRlIExvbmcgZmllbGR2YWx1ZXNfaWQ7CisJCisJQENvbHVtbihuYW1lPSJkZWxldGVkIikKKwlwcml2YXRlIGJvb2xlYW4gZGVsZXRlZDsKKwkKKwlAVHJhbnNpZW50CisJcHJpdmF0ZSBGaWVsZGxhbmd1YWdlc3ZhbHVlcyBsYWJlbDsKKwkKKwlAVHJhbnNpZW50CisJcHJpdmF0ZSBGaWVsZGxhbmd1YWdlc3ZhbHVlcyB0b29sdGlwOworCQorCUBDb2x1bW4obmFtZT0idG9vbHRpcF9maWVsZHZhbHVlc19pZCIpCisJcHJpdmF0ZSBMb25nIHRvb2x0aXBfZmllbGR2YWx1ZXNfaWQ7CisKKyAgICBwdWJsaWMgU3RyaW5nIGdldEFjdGlvbigpIHsKKyAgICAgICAgcmV0dXJuIGFjdGlvbjsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRBY3Rpb24oU3RyaW5nIGFjdGlvbikgeworICAgICAgICB0aGlzLmFjdGlvbiA9IGFjdGlvbjsKKyAgICB9CisJCisJcHVibGljIExvbmcgZ2V0TGV2ZWxfaWQoKSB7CisJCXJldHVybiBsZXZlbF9pZDsKKwl9CisJcHVibGljIHZvaWQgc2V0TGV2ZWxfaWQoTG9uZyBsZXZlbF9pZCkgeworCQl0aGlzLmxldmVsX2lkID0gbGV2ZWxfaWQ7CisJfQorCQorCXB1YmxpYyBMb25nIGdldEdsb2JhbF9pZCgpIHsKKwkJcmV0dXJuIGdsb2JhbF9pZDsKKwl9CisJcHVibGljIHZvaWQgc2V0R2xvYmFsX2lkKExvbmcgZ2xvYmFsX2lkKSB7CisJCXRoaXMuZ2xvYmFsX2lkID0gZ2xvYmFsX2lkOworCX0KKyAgICAKKyAgICBwdWJsaWMgU3RyaW5nIGdldENvbW1lbnQoKSB7CisgICAgICAgIHJldHVybiBjb21tZW50OworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIHNldENvbW1lbnQoU3RyaW5nIGNvbW1lbnQpIHsKKyAgICAgICAgdGhpcy5jb21tZW50ID0gY29tbWVudDsKKyAgICB9CisgICAgCisgICAgcHVibGljIExvbmcgZ2V0TWFpbl9pZCgpIHsKKyAgICAgICAgcmV0dXJuIG1haW5faWQ7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0TWFpbl9pZChMb25nIG1haW5faWQpIHsKKyAgICAgICAgdGhpcy5tYWluX2lkID0gbWFpbl9pZDsKKyAgICB9CisgICAgCisgICAgcHVibGljIFN0cmluZyBnZXRJY29uKCkgeworICAgICAgICByZXR1cm4gaWNvbjsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRJY29uKFN0cmluZyBpY29uKSB7CisgICAgICAgIHRoaXMuaWNvbiA9IGljb247CisgICAgfQorICAgIAorICAgIHB1YmxpYyBCb29sZWFuIGdldElzbGVhZigpIHsKKyAgICAgICAgcmV0dXJuIGlzbGVhZjsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRJc2xlYWYoQm9vbGVhbiBpc2xlYWYpIHsKKyAgICAgICAgdGhpcy5pc2xlYWYgPSBpc2xlYWY7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBCb29sZWFuIGdldElzb3BlbigpIHsKKyAgICAgICAgcmV0dXJuIGlzb3BlbjsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBzZXRJc29wZW4oQm9vbGVhbiBpc29wZW4pIHsKKyAgICAgICAgdGhpcy5pc29wZW4gPSBpc29wZW47CisgICAgfQorICAgIAorCXB1YmxpYyBEYXRlIGdldFN0YXJ0dGltZSgpIHsKKwkJcmV0dXJuIHN0YXJ0dGltZTsKKwl9CisJcHVibGljIHZvaWQgc2V0U3RhcnR0aW1lKERhdGUgc3RhcnR0aW1lKSB7CisJCXRoaXMuc3RhcnR0aW1lID0gc3RhcnR0aW1lOworCX0KKyAgICAKKwlwdWJsaWMgRGF0ZSBnZXRVcGRhdGV0aW1lKCkgeworCQlyZXR1cm4gdXBkYXRldGltZTsKKwl9CisJcHVibGljIHZvaWQgc2V0VXBkYXRldGltZShEYXRlIHVwZGF0ZXRpbWUpIHsKKwkJdGhpcy51cGRhdGV0aW1lID0gdXBkYXRldGltZTsKKwl9CisJCisJcHVibGljIGJvb2xlYW4gZ2V0RGVsZXRlZCgpIHsKKwkJcmV0dXJuIGRlbGV0ZWQ7CisJfQorCXB1YmxpYyB2b2lkIHNldERlbGV0ZWQoYm9vbGVhbiBkZWxldGVkKSB7CisJCXRoaXMuZGVsZXRlZCA9IGRlbGV0ZWQ7CisJfQorICAgIAorICAgIHB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpIHsKKyAgICAgICAgcmV0dXJuIG5hbWU7CisgICAgfQorCisgICAgcHVibGljIHZvaWQgc2V0TmFtZShTdHJpbmcgbmFtZSkgeworICAgICAgICB0aGlzLm5hbWUgPSBuYW1lOworICAgIH0KKyAgICAKKyAgICAKKwlwdWJsaWMgSW50ZWdlciBnZXROYXZpb3JkZXIoKSB7CisJCXJldHVybiBuYXZpb3JkZXI7CisJfQorCXB1YmxpYyB2b2lkIHNldE5hdmlvcmRlcihJbnRlZ2VyIG5hdmlvcmRlcikgeworCQl0aGlzLm5hdmlvcmRlciA9IG5hdmlvcmRlcjsKKwl9CisKKwlwdWJsaWMgTG9uZyBnZXRGaWVsZHZhbHVlc19pZCgpIHsKKwkJcmV0dXJuIGZpZWxkdmFsdWVzX2lkOworCX0KKwlwdWJsaWMgdm9pZCBzZXRGaWVsZHZhbHVlc19pZChMb25nIGZpZWxkdmFsdWVzX2lkKSB7CisJCXRoaXMuZmllbGR2YWx1ZXNfaWQgPSBmaWVsZHZhbHVlc19pZDsKKwl9CisKKwlwdWJsaWMgRmllbGRsYW5ndWFnZXN2YWx1ZXMgZ2V0TGFiZWwoKSB7CisJCXJldHVybiBsYWJlbDsKKwl9CisJcHVibGljIHZvaWQgc2V0TGFiZWwoRmllbGRsYW5ndWFnZXN2YWx1ZXMgbGFiZWwpIHsKKwkJdGhpcy5sYWJlbCA9IGxhYmVsOworCX0JCisKKwlwdWJsaWMgTG9uZyBnZXRUb29sdGlwX2ZpZWxkdmFsdWVzX2lkKCkgeworCQlyZXR1cm4gdG9vbHRpcF9maWVsZHZhbHVlc19pZDsKKwl9CisJcHVibGljIHZvaWQgc2V0VG9vbHRpcF9maWVsZHZhbHVlc19pZChMb25nIHRvb2x0aXBfZmllbGR2YWx1ZXNfaWQpIHsKKwkJdGhpcy50b29sdGlwX2ZpZWxkdmFsdWVzX2lkID0gdG9vbHRpcF9maWVsZHZhbHVlc19pZDsKKwl9CisKKwlwdWJsaWMgRmllbGRsYW5ndWFnZXN2YWx1ZXMgZ2V0VG9vbHRpcCgpIHsKKwkJcmV0dXJuIHRvb2x0aXA7CisJfQorCXB1YmxpYyB2b2lkIHNldFRvb2x0aXAoRmllbGRsYW5ndWFnZXN2YWx1ZXMgdG9vbHRpcCkgeworCQl0aGlzLnRvb2x0aXAgPSB0b29sdGlwOworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0UGFyYW1zKCkgeworCQlyZXR1cm4gcGFyYW1zOworCX0KKworCXB1YmxpYyB2b2lkIHNldFBhcmFtcyhTdHJpbmcgcGFyYW1zKSB7CisJCXRoaXMucGFyYW1zID0gcGFyYW1zOworCX0KKwkJCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvYmFzaWMvT21UaW1lWm9uZS5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL2Jhc2ljL09tVGltZVpvbmUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNTVkYTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL2Jhc2ljL09tVGltZVpvbmUuamF2YQpAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYzsKKworaW1wb3J0IGphdmEuaW8uU2VyaWFsaXphYmxlOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworCisKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkdlbmVyYXRlZFZhbHVlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkdlbmVyYXRpb25UeXBlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLklkOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRhYmxlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRyYW5zaWVudDsKKworQEVudGl0eQorQFRhYmxlKG5hbWUgPSAib21fdGltZXpvbmUiKQorcHVibGljIGNsYXNzIE9tVGltZVpvbmUgaW1wbGVtZW50cyBTZXJpYWxpemFibGUgeworCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDY1MjE1NzE2OTU3ODI5MDAxOThMOworCUBJZAorCUBHZW5lcmF0ZWRWYWx1ZShzdHJhdGVneSA9IEdlbmVyYXRpb25UeXBlLklERU5USVRZKQorCUBDb2x1bW4obmFtZT0iaWQiKQorCXByaXZhdGUgTG9uZyBvbXRpbWV6b25lSWQ7CisJCisJQENvbHVtbihuYW1lPSJqbmFtZSIpCisJcHJpdmF0ZSBTdHJpbmcgam5hbWU7CisJCisJQENvbHVtbihuYW1lPSJsYWJlbCIpCisJcHJpdmF0ZSBTdHJpbmcgbGFiZWw7CisJCisJQENvbHVtbihuYW1lPSJpY2FsIikKKwlwcml2YXRlIFN0cmluZyBpY2FsOworCQorCUBDb2x1bW4obmFtZT0iaW5zZXJ0ZWQiKQorCXByaXZhdGUgRGF0ZSBpbnNlcnRlZDsKKwkKKwlAQ29sdW1uKG5hbWU9Im9yZGVyX2lkIikKKwlwdWJsaWMgSW50ZWdlciBvcmRlcklkOworCQorCUBUcmFuc2llbnQKKwlwdWJsaWMgU3RyaW5nIGZyb250RW5kTGFiZWw7CisJCisJcHVibGljIExvbmcgZ2V0T210aW1lem9uZUlkKCkgeworCQlyZXR1cm4gb210aW1lem9uZUlkOworCX0KKwlwdWJsaWMgdm9pZCBzZXRPbXRpbWV6b25lSWQoTG9uZyBvbXRpbWV6b25lSWQpIHsKKwkJdGhpcy5vbXRpbWV6b25lSWQgPSBvbXRpbWV6b25lSWQ7CisJfQorCQorCXB1YmxpYyBTdHJpbmcgZ2V0Sm5hbWUoKSB7CisJCXJldHVybiBqbmFtZTsKKwl9CisJcHVibGljIHZvaWQgc2V0Sm5hbWUoU3RyaW5nIGpuYW1lKSB7CisJCXRoaXMuam5hbWUgPSBqbmFtZTsKKwl9CisJCisJcHVibGljIFN0cmluZyBnZXRMYWJlbCgpIHsKKwkJcmV0dXJuIGxhYmVsOworCX0KKwlwdWJsaWMgdm9pZCBzZXRMYWJlbChTdHJpbmcgbGFiZWwpIHsKKwkJdGhpcy5sYWJlbCA9IGxhYmVsOworCX0KKwkKKwlwdWJsaWMgU3RyaW5nIGdldEljYWwoKSB7CisJCXJldHVybiBpY2FsOworCX0KKwlwdWJsaWMgdm9pZCBzZXRJY2FsKFN0cmluZyBpY2FsKSB7CisJCXRoaXMuaWNhbCA9IGljYWw7CisJfQorCQorCXB1YmxpYyBEYXRlIGdldEluc2VydGVkKCkgeworCQlyZXR1cm4gaW5zZXJ0ZWQ7CisJfQorCQorCXB1YmxpYyB2b2lkIHNldEluc2VydGVkKERhdGUgaW5zZXJ0ZWQpIHsKKwkJdGhpcy5pbnNlcnRlZCA9IGluc2VydGVkOworCX0KKwkKKwlwdWJsaWMgSW50ZWdlciBnZXRPcmRlcklkKCkgeworCQlyZXR1cm4gb3JkZXJJZDsKKwl9CisJcHVibGljIHZvaWQgc2V0T3JkZXJJZChJbnRlZ2VyIG9yZGVySWQpIHsKKwkJdGhpcy5vcmRlcklkID0gb3JkZXJJZDsKKwl9CisJCisJCisJcHVibGljIFN0cmluZyBnZXRGcm9udEVuZExhYmVsKCkgeworCQlyZXR1cm4gZnJvbnRFbmRMYWJlbDsKKwl9CisJCisJcHVibGljIHZvaWQgc2V0RnJvbnRFbmRMYWJlbChTdHJpbmcgZnJvbnRFbmRMYWJlbCkgeworCQl0aGlzLmZyb250RW5kTGFiZWwgPSBmcm9udEVuZExhYmVsOworCX0KKwkKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9iYXNpYy9SZW1vdGVTZXNzaW9uT2JqZWN0LmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvYmFzaWMvUmVtb3RlU2Vzc2lvbk9iamVjdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiYTFlYWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvYmFzaWMvUmVtb3RlU2Vzc2lvbk9iamVjdC5qYXZhCkBAIC0wLDAgKzEsMTE3IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljOworCisvKioKKyAqIFRoaXMgQ2xhc3MgaXMgbWFyc2hhbGVkIGFzIGFuIFhNTC1PYmplY3QgYW5kIHN0b3JlZCBhcyBhIFN0cmluZyBpbiB0aGUgREIgdG8gbWFrZQorICogaXQgbW9yZSBlYXN5IHRvIGV4dGVuZCBpdAorICogCisgKiBAYXV0aG9yIHNlYmFzdGlhbndhZ25lcgorICoKKyAqLworcHVibGljIGNsYXNzIFJlbW90ZVNlc3Npb25PYmplY3QgeworCQorCXByaXZhdGUgU3RyaW5nIHVzZXJuYW1lOworCXByaXZhdGUgU3RyaW5nIGZpcnN0bmFtZTsKKwlwcml2YXRlIFN0cmluZyBsYXN0bmFtZTsKKwlwcml2YXRlIFN0cmluZyBwaWN0dXJlVXJsOworCXByaXZhdGUgU3RyaW5nIGVtYWlsOworCQorCXByaXZhdGUgU3RyaW5nIGV4dGVybmFsVXNlcklkOworCXByaXZhdGUgU3RyaW5nIGV4dGVybmFsVXNlclR5cGU7CisJCisJcHVibGljIFJlbW90ZVNlc3Npb25PYmplY3QoU3RyaW5nIHVzZXJuYW1lLCBTdHJpbmcgZmlyc3RuYW1lLCBTdHJpbmcgbGFzdG5hbWUsCisJCQlTdHJpbmcgcGljdHVyZVVybCwgU3RyaW5nIGVtYWlsKSB7CisJCXRoaXModXNlcm5hbWUsIGZpcnN0bmFtZSwgbGFzdG5hbWUsIHBpY3R1cmVVcmwsIGVtYWlsLCAiMCIsICIiKTsKKwl9CisJCisJCisJLyoqCisJICogQHBhcmFtIHVzZXJuYW1lCisJICogQHBhcmFtIGZpcnN0bmFtZQorCSAqIEBwYXJhbSBsYXN0bmFtZQorCSAqIEBwYXJhbSBwaWN0dXJlVXJsCisJICogQHBhcmFtIGVtYWlsCisJICogQHBhcmFtIGV4dGVybmFsVXNlcklkCisJICogQHBhcmFtIGV4dGVybmFsVXNlclR5cGUKKwkgKgorCSAqIDA2LjA5LjIwMDkgMTc6MDU6NDgKKwkgKiBzZWJhc3RpYW53YWduZXIKKwkgKiAKKwkgKiAKKwkgKi8KKwlwdWJsaWMgUmVtb3RlU2Vzc2lvbk9iamVjdChTdHJpbmcgdXNlcm5hbWUsIFN0cmluZyBmaXJzdG5hbWUsCisJCQlTdHJpbmcgbGFzdG5hbWUsIFN0cmluZyBwaWN0dXJlVXJsLCBTdHJpbmcgZW1haWwsCisJCQlTdHJpbmcgZXh0ZXJuYWxVc2VySWQsIFN0cmluZyBleHRlcm5hbFVzZXJUeXBlKSB7CisJCXN1cGVyKCk7CisJCXRoaXMudXNlcm5hbWUgPSB1c2VybmFtZTsKKwkJdGhpcy5maXJzdG5hbWUgPSBmaXJzdG5hbWU7CisJCXRoaXMubGFzdG5hbWUgPSBsYXN0bmFtZTsKKwkJdGhpcy5waWN0dXJlVXJsID0gcGljdHVyZVVybDsKKwkJdGhpcy5lbWFpbCA9IGVtYWlsOworCQl0aGlzLmV4dGVybmFsVXNlcklkID0gZXh0ZXJuYWxVc2VySWQ7CisJCXRoaXMuZXh0ZXJuYWxVc2VyVHlwZSA9IGV4dGVybmFsVXNlclR5cGU7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRVc2VybmFtZSgpIHsKKwkJcmV0dXJuIHVzZXJuYW1lOworCX0KKwlwdWJsaWMgdm9pZCBzZXRVc2VybmFtZShTdHJpbmcgdXNlcm5hbWUpIHsKKwkJdGhpcy51c2VybmFtZSA9IHVzZXJuYW1lOworCX0KKwlwdWJsaWMgU3RyaW5nIGdldEZpcnN0bmFtZSgpIHsKKwkJcmV0dXJuIGZpcnN0bmFtZTsKKwl9CisJcHVibGljIHZvaWQgc2V0Rmlyc3RuYW1lKFN0cmluZyBmaXJzdG5hbWUpIHsKKwkJdGhpcy5maXJzdG5hbWUgPSBmaXJzdG5hbWU7CisJfQorCXB1YmxpYyBTdHJpbmcgZ2V0TGFzdG5hbWUoKSB7CisJCXJldHVybiBsYXN0bmFtZTsKKwl9CisJcHVibGljIHZvaWQgc2V0TGFzdG5hbWUoU3RyaW5nIGxhc3RuYW1lKSB7CisJCXRoaXMubGFzdG5hbWUgPSBsYXN0bmFtZTsKKwl9CisJcHVibGljIFN0cmluZyBnZXRQaWN0dXJlVXJsKCkgeworCQlyZXR1cm4gcGljdHVyZVVybDsKKwl9CisJcHVibGljIHZvaWQgc2V0UGljdHVyZVVybChTdHJpbmcgcGljdHVyZVVybCkgeworCQl0aGlzLnBpY3R1cmVVcmwgPSBwaWN0dXJlVXJsOworCX0KKwlwdWJsaWMgU3RyaW5nIGdldEVtYWlsKCkgeworCQlyZXR1cm4gZW1haWw7CisJfQorCXB1YmxpYyB2b2lkIHNldEVtYWlsKFN0cmluZyBlbWFpbCkgeworCQl0aGlzLmVtYWlsID0gZW1haWw7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRFeHRlcm5hbFVzZXJJZCgpIHsKKwkJcmV0dXJuIGV4dGVybmFsVXNlcklkOworCX0KKwlwdWJsaWMgdm9pZCBzZXRFeHRlcm5hbFVzZXJJZChTdHJpbmcgZXh0ZXJuYWxVc2VySWQpIHsKKwkJdGhpcy5leHRlcm5hbFVzZXJJZCA9IGV4dGVybmFsVXNlcklkOworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0RXh0ZXJuYWxVc2VyVHlwZSgpIHsKKwkJcmV0dXJuIGV4dGVybmFsVXNlclR5cGU7CisJfQorCXB1YmxpYyB2b2lkIHNldEV4dGVybmFsVXNlclR5cGUoU3RyaW5nIGV4dGVybmFsVXNlclR5cGUpIHsKKwkJdGhpcy5leHRlcm5hbFVzZXJUeXBlID0gZXh0ZXJuYWxVc2VyVHlwZTsKKwl9CisJCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvYmFzaWMvU09BUExvZ2luLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvYmFzaWMvU09BUExvZ2luLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjVmMzYzZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9iYXNpYy9TT0FQTG9naW4uamF2YQpAQCAtMCwwICsxLDE4NyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYzsKKworaW1wb3J0IGphdmEuaW8uU2VyaWFsaXphYmxlOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5HZW5lcmF0ZWRWYWx1ZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5HZW5lcmF0aW9uVHlwZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5JZDsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UYWJsZTsKKworQEVudGl0eQorQFRhYmxlKG5hbWUgPSAic29hcGxvZ2luIikKK3B1YmxpYyBjbGFzcyBTT0FQTG9naW4gaW1wbGVtZW50cyBTZXJpYWxpemFibGUgeworCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDUxMDEwMTA3MDAwMzgyMjE0MzRMOworCUBJZAorCUBHZW5lcmF0ZWRWYWx1ZShzdHJhdGVneSA9IEdlbmVyYXRpb25UeXBlLklERU5USVRZKQorCUBDb2x1bW4obmFtZT0iaWQiKQorCXByaXZhdGUgbG9uZyBzb2FwTG9naW5JZDsKKwkKKwlAQ29sdW1uKG5hbWU9Imhhc2giKQorCXByaXZhdGUgU3RyaW5nIGhhc2g7CisJCisJQENvbHVtbihuYW1lPSJyb29tX2lkIikKKwlwcml2YXRlIExvbmcgcm9vbV9pZDsKKwkKKwlAQ29sdW1uKG5hbWU9InNlc3Npb25faGFzaCIpCisJcHJpdmF0ZSBTdHJpbmcgc2Vzc2lvbkhhc2g7CisJCisJQENvbHVtbihuYW1lPSJjcmVhdGVkIikKKwlwcml2YXRlIERhdGUgY3JlYXRlZDsKKwkKKwlAQ29sdW1uKG5hbWU9InVzZWQiKQorCXByaXZhdGUgQm9vbGVhbiB1c2VkOworCQorCUBDb2x1bW4obmFtZT0idXNlX2RhdGUiKQorCXByaXZhdGUgRGF0ZSB1c2VEYXRlOworCQorCUBDb2x1bW4obmFtZT0iYmVjb21lbW9kZXJhdG9yIikKKwlwcml2YXRlIEJvb2xlYW4gYmVjb21lbW9kZXJhdG9yOworCQorCUBDb2x1bW4obmFtZT0ic2hvd2F1ZGlvdmlkZW90ZXN0IikKKwlwcml2YXRlIEJvb2xlYW4gc2hvd0F1ZGlvVmlkZW9UZXN0OworCQorCUBDb2x1bW4obmFtZT0iYWxsb3dfc2FtZV91cmxfbXVsdGlwbGVfdGltZXMiKQorCXByaXZhdGUgQm9vbGVhbiBhbGxvd1NhbWVVUkxNdWx0aXBsZVRpbWVzOworCQorCUBDb2x1bW4obmFtZT0ic2hvd19uaWNrX25hbWVfZGlhbG9nIikKKwlwcml2YXRlIEJvb2xlYW4gc2hvd05pY2tOYW1lRGlhbG9nOworCQorCUBDb2x1bW4obmFtZT0iY2xpZW50X3VybCIpCisJcHJpdmF0ZSBTdHJpbmcgY2xpZW50VVJMOworCQorCUBDb2x1bW4obmFtZT0icm9vbV9yZWNvcmRpbmdfaWQiKQorCXByaXZhdGUgTG9uZyByb29tUmVjb3JkaW5nSWQ7CisJCisJQENvbHVtbihuYW1lPSJsYW5kaW5nX3pvbmUiKQorCXByaXZhdGUgU3RyaW5nIGxhbmRpbmdab25lOworCQorCUBDb2x1bW4obmFtZT0iYWxsb3dfcmVjb3JkaW5nIikKKwlwcml2YXRlIEJvb2xlYW4gYWxsb3dSZWNvcmRpbmc7CisJCisJcHVibGljIGxvbmcgZ2V0U29hcExvZ2luSWQoKSB7CisJCXJldHVybiBzb2FwTG9naW5JZDsKKwl9CisJcHVibGljIHZvaWQgc2V0U29hcExvZ2luSWQobG9uZyBzb2FwTG9naW5JZCkgeworCQl0aGlzLnNvYXBMb2dpbklkID0gc29hcExvZ2luSWQ7CisJfQorCQorCXB1YmxpYyBTdHJpbmcgZ2V0SGFzaCgpIHsKKwkJcmV0dXJuIGhhc2g7CisJfQorCXB1YmxpYyB2b2lkIHNldEhhc2goU3RyaW5nIGhhc2gpIHsKKwkJdGhpcy5oYXNoID0gaGFzaDsKKwl9CisJCisJcHVibGljIExvbmcgZ2V0Um9vbV9pZCgpIHsKKwkJcmV0dXJuIHJvb21faWQ7CisJfQorCXB1YmxpYyB2b2lkIHNldFJvb21faWQoTG9uZyByb29tX2lkKSB7CisJCXRoaXMucm9vbV9pZCA9IHJvb21faWQ7CisJfQorCQorCXB1YmxpYyBTdHJpbmcgZ2V0U2Vzc2lvbkhhc2goKSB7CisJCXJldHVybiBzZXNzaW9uSGFzaDsKKwl9CisJcHVibGljIHZvaWQgc2V0U2Vzc2lvbkhhc2goU3RyaW5nIHNlc3Npb25IYXNoKSB7CisJCXRoaXMuc2Vzc2lvbkhhc2ggPSBzZXNzaW9uSGFzaDsKKwl9CisJCisJcHVibGljIERhdGUgZ2V0Q3JlYXRlZCgpIHsKKwkJcmV0dXJuIGNyZWF0ZWQ7CisJfQorCXB1YmxpYyB2b2lkIHNldENyZWF0ZWQoRGF0ZSBjcmVhdGVkKSB7CisJCXRoaXMuY3JlYXRlZCA9IGNyZWF0ZWQ7CisJfQorCQorCXB1YmxpYyBCb29sZWFuIGdldFVzZWQoKSB7CisJCXJldHVybiB1c2VkOworCX0KKwlwdWJsaWMgdm9pZCBzZXRVc2VkKEJvb2xlYW4gdXNlZCkgeworCQl0aGlzLnVzZWQgPSB1c2VkOworCX0KKwkKKwlwdWJsaWMgRGF0ZSBnZXRVc2VEYXRlKCkgeworCQlyZXR1cm4gdXNlRGF0ZTsKKwl9CisJcHVibGljIHZvaWQgc2V0VXNlRGF0ZShEYXRlIHVzZURhdGUpIHsKKwkJdGhpcy51c2VEYXRlID0gdXNlRGF0ZTsKKwl9CisJCisJcHVibGljIEJvb2xlYW4gZ2V0QmVjb21lbW9kZXJhdG9yKCkgeworCQlyZXR1cm4gYmVjb21lbW9kZXJhdG9yOworCX0KKwlwdWJsaWMgdm9pZCBzZXRCZWNvbWVtb2RlcmF0b3IoQm9vbGVhbiBiZWNvbWVtb2RlcmF0b3IpIHsKKwkJdGhpcy5iZWNvbWVtb2RlcmF0b3IgPSBiZWNvbWVtb2RlcmF0b3I7CisJfQorCQorCXB1YmxpYyBCb29sZWFuIGdldFNob3dBdWRpb1ZpZGVvVGVzdCgpIHsKKwkJcmV0dXJuIHNob3dBdWRpb1ZpZGVvVGVzdDsKKwl9CisJcHVibGljIHZvaWQgc2V0U2hvd0F1ZGlvVmlkZW9UZXN0KEJvb2xlYW4gc2hvd0F1ZGlvVmlkZW9UZXN0KSB7CisJCXRoaXMuc2hvd0F1ZGlvVmlkZW9UZXN0ID0gc2hvd0F1ZGlvVmlkZW9UZXN0OworCX0KKwkKKwlwdWJsaWMgQm9vbGVhbiBnZXRBbGxvd1NhbWVVUkxNdWx0aXBsZVRpbWVzKCkgeworCQlyZXR1cm4gYWxsb3dTYW1lVVJMTXVsdGlwbGVUaW1lczsKKwl9CisJcHVibGljIHZvaWQgc2V0QWxsb3dTYW1lVVJMTXVsdGlwbGVUaW1lcyhCb29sZWFuIGFsbG93U2FtZVVSTE11bHRpcGxlVGltZXMpIHsKKwkJdGhpcy5hbGxvd1NhbWVVUkxNdWx0aXBsZVRpbWVzID0gYWxsb3dTYW1lVVJMTXVsdGlwbGVUaW1lczsKKwl9CisKKwlwdWJsaWMgQm9vbGVhbiBnZXRTaG93Tmlja05hbWVEaWFsb2coKSB7CisJCXJldHVybiBzaG93Tmlja05hbWVEaWFsb2c7CisJfQorCXB1YmxpYyB2b2lkIHNldFNob3dOaWNrTmFtZURpYWxvZyhCb29sZWFuIHNob3dOaWNrTmFtZURpYWxvZykgeworCQl0aGlzLnNob3dOaWNrTmFtZURpYWxvZyA9IHNob3dOaWNrTmFtZURpYWxvZzsKKwl9CisJCisJcHVibGljIFN0cmluZyBnZXRDbGllbnRVUkwoKSB7CisJCXJldHVybiBjbGllbnRVUkw7CisJfQorCXB1YmxpYyB2b2lkIHNldENsaWVudFVSTChTdHJpbmcgY2xpZW50VVJMKSB7CisJCXRoaXMuY2xpZW50VVJMID0gY2xpZW50VVJMOworCX0KKwkKKwlwdWJsaWMgTG9uZyBnZXRSb29tUmVjb3JkaW5nSWQoKSB7CisJCXJldHVybiByb29tUmVjb3JkaW5nSWQ7CisJfQorCXB1YmxpYyB2b2lkIHNldFJvb21SZWNvcmRpbmdJZChMb25nIHJvb21SZWNvcmRpbmdJZCkgeworCQl0aGlzLnJvb21SZWNvcmRpbmdJZCA9IHJvb21SZWNvcmRpbmdJZDsKKwl9CisJCisJcHVibGljIFN0cmluZyBnZXRMYW5kaW5nWm9uZSgpIHsKKwkJcmV0dXJuIGxhbmRpbmdab25lOworCX0KKwlwdWJsaWMgdm9pZCBzZXRMYW5kaW5nWm9uZShTdHJpbmcgbGFuZGluZ1pvbmUpIHsKKwkJdGhpcy5sYW5kaW5nWm9uZSA9IGxhbmRpbmdab25lOworCX0KKwkKKwlwdWJsaWMgQm9vbGVhbiBnZXRBbGxvd1JlY29yZGluZygpIHsKKwkJcmV0dXJuIGFsbG93UmVjb3JkaW5nOworCX0KKwlwdWJsaWMgdm9pZCBzZXRBbGxvd1JlY29yZGluZyhCb29sZWFuIGFsbG93UmVjb3JkaW5nKSB7CisJCXRoaXMuYWxsb3dSZWNvcmRpbmcgPSBhbGxvd1JlY29yZGluZzsKKwl9CisJCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvYmFzaWMvU2VydmVyLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvYmFzaWMvU2VydmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGFmYTJkOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9iYXNpYy9TZXJ2ZXIuamF2YQpAQCAtMCwwICsxLDI5MCBAQAorLyoNCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICogdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYzsNCisNCitpbXBvcnQgamF2YS5pby5TZXJpYWxpemFibGU7DQoraW1wb3J0IGphdmEudXRpbC5DYWxlbmRhcjsNCitpbXBvcnQgamF2YS51dGlsLkRhdGU7DQorDQoraW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsNCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5Ow0KK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5GZXRjaFR5cGU7DQoraW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkdlbmVyYXRlZFZhbHVlOw0KK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5HZW5lcmF0aW9uVHlwZTsNCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSWQ7DQoraW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkpvaW5Db2x1bW47DQoraW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkxvYjsNCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTWFueVRvT25lOw0KK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5OYW1lZFF1ZXJpZXM7DQoraW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk5hbWVkUXVlcnk7DQoraW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRhYmxlOw0KKw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5qcGEucGVyc2lzdGVuY2UuamRiYy5Gb3JlaWduS2V5Ow0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5JRGF0YVByb3ZpZGVyRW50aXR5Ow0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlVzZXI7DQoraW1wb3J0IG9yZy5zaW1wbGVmcmFtZXdvcmsueG1sLkVsZW1lbnQ7DQoraW1wb3J0IG9yZy5zaW1wbGVmcmFtZXdvcmsueG1sLlJvb3Q7DQorDQorQEVudGl0eQ0KK0BOYW1lZFF1ZXJpZXMoew0KKwkJQE5hbWVkUXVlcnkobmFtZSA9ICJnZXRBbGxTZXJ2ZXJzIiwgcXVlcnkgPSAiU0VMRUNUIHMgRlJPTSBTZXJ2ZXIgcyBXSEVSRSBzLmRlbGV0ZWQgPSBmYWxzZSIpLA0KKwkJQE5hbWVkUXVlcnkobmFtZSA9ICJnZXRTZXJ2ZXJDb3VudCIsIHF1ZXJ5ID0gIlNFTEVDVCBDT1VOVChzKSBGUk9NIFNlcnZlciBzIFdIRVJFIHMuZGVsZXRlZCA9IGZhbHNlIiksDQorCQlATmFtZWRRdWVyeShuYW1lID0gImdldFNlcnZlckJ5SWQiLCBxdWVyeSA9ICJTRUxFQ1QgcyBGUk9NIFNlcnZlciBzIExFRlQgSk9JTiBGRVRDSCBzLmluc2VydGVkYnkgTEVGVCBKT0lOIEZFVENIIHMudXBkYXRlZGJ5IFdIRVJFIHMuZGVsZXRlZCA9IGZhbHNlIEFORCBzLmlkID0gOmlkIiksDQorCQlATmFtZWRRdWVyeShuYW1lID0gImdldFNlcnZlckJ5TmFtZSIsIHF1ZXJ5ID0gIlNFTEVDVCBzIEZST00gU2VydmVyIHMgV0hFUkUgcy5kZWxldGVkID0gZmFsc2UgQU5EIHMubmFtZSBMSUtFIDpuYW1lIiksDQorCQlATmFtZWRRdWVyeShuYW1lID0gImdldFNlcnZlckJ5QWRkcmVzcyIsIHF1ZXJ5ID0gIlNFTEVDVCBzIEZST00gU2VydmVyIHMgV0hFUkUgcy5kZWxldGVkID0gZmFsc2UgQU5EIHMuYWRkcmVzcyBMSUtFIDphZGRyZXNzIiksDQorCQlATmFtZWRRdWVyeShuYW1lID0gImdldFNlcnZlcnNXaXRoTm9Vc2VycyIsIHF1ZXJ5ID0gIlNFTEVDVCBzIEZST00gU2VydmVyIHMgV0hFUkUgcy5kZWxldGVkID0gZmFsc2UgQU5EIHMuaWQgTk9UIElOIChTRUxFQ1QgdS5zZXJ2ZXIuaWQgRlJPTSBVc2VyIHUgd2hlcmUgdS5zZXJ2ZXIuaWQgSVMgTk9UIE5VTEwpIiksDQorCQlATmFtZWRRdWVyeShuYW1lID0gImdldFNlcnZlcldpdGhNaW5pbXVtVXNlcnMiLCBxdWVyeSA9ICJTRUxFQ1Qgcy5pZCwgQ09VTlQodSkgQVMgY250IEZST00gVXNlciB1IEpPSU4gdS5zZXJ2ZXIgcyBXSEVSRSBzLmRlbGV0ZWQgPSBmYWxzZSBHUk9VUCBCWSBzLmlkIE9SREVSIEJZIGNudCIpLA0KKwkJQE5hbWVkUXVlcnkobmFtZSA9ICJnZXRBY3RpdmVTZXJ2ZXJzIiwgcXVlcnkgPSAiU0VMRUNUIHMgRlJPTSBTZXJ2ZXIgcyBXSEVSRSBzLmRlbGV0ZWQgPSBmYWxzZSBBTkQgcy5hY3RpdmUgPSB0cnVlIikgLy8NCit9KQ0KK0BUYWJsZShuYW1lID0gInNlcnZlciIpDQorQFJvb3QNCitwdWJsaWMgY2xhc3MgU2VydmVyIGltcGxlbWVudHMgU2VyaWFsaXphYmxlLCBJRGF0YVByb3ZpZGVyRW50aXR5IHsNCisNCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gLTY4MjI3MzIwNzQ1NDkxNjc3MjdMOw0KKw0KKwlASWQNCisJQEdlbmVyYXRlZFZhbHVlKHN0cmF0ZWd5ID0gR2VuZXJhdGlvblR5cGUuSURFTlRJVFkpDQorCUBDb2x1bW4obmFtZSA9ICJpZCIpDQorCUBFbGVtZW50KGRhdGEgPSB0cnVlKQ0KKwlwcml2YXRlIGxvbmcgaWQgPSAwOw0KKw0KKwlAQ29sdW1uKG5hbWUgPSAibmFtZSIpDQorCUBFbGVtZW50KGRhdGEgPSB0cnVlKQ0KKwlwcml2YXRlIFN0cmluZyBuYW1lOw0KKw0KKwlAQ29sdW1uKG5hbWUgPSAiYWRkcmVzcyIpDQorCUBFbGVtZW50KGRhdGEgPSB0cnVlKQ0KKwlwcml2YXRlIFN0cmluZyBhZGRyZXNzOw0KKw0KKwlAQ29sdW1uKG5hbWUgPSAiaW5zZXJ0ZWQiKQ0KKwlwdWJsaWMgRGF0ZSBpbnNlcnRlZDsNCisNCisJQENvbHVtbihuYW1lID0gInVwZGF0ZWQiKQ0KKwlwdWJsaWMgRGF0ZSB1cGRhdGVkOw0KKw0KKwlATWFueVRvT25lKGZldGNoID0gRmV0Y2hUeXBlLkxBWlkpDQorCUBKb2luQ29sdW1uKG5hbWUgPSAiaW5zZXJ0ZWRieV9pZCIsIHVwZGF0YWJsZSA9IHRydWUsIGluc2VydGFibGUgPSB0cnVlKQ0KKwlARm9yZWlnbktleShlbmFibGVkID0gdHJ1ZSkNCisJcHVibGljIFVzZXIgaW5zZXJ0ZWRieTsNCisNCisJQE1hbnlUb09uZShmZXRjaCA9IEZldGNoVHlwZS5MQVpZKQ0KKwlASm9pbkNvbHVtbihuYW1lID0gInVwZGF0ZWRieV9pZCIsIHVwZGF0YWJsZSA9IHRydWUsIGluc2VydGFibGUgPSB0cnVlKQ0KKwlARm9yZWlnbktleShlbmFibGVkID0gdHJ1ZSkNCisJcHVibGljIFVzZXIgdXBkYXRlZGJ5Ow0KKw0KKwlATG9iDQorCUBDb2x1bW4obmFtZSA9ICJjb21tZW50X2ZpZWxkIiwgbGVuZ3RoID0gMjA0OCkNCisJQEVsZW1lbnQoZGF0YSA9IHRydWUsIHJlcXVpcmVkID0gZmFsc2UpDQorCXByaXZhdGUgU3RyaW5nIGNvbW1lbnQ7DQorDQorCUBDb2x1bW4obmFtZSA9ICJsYXN0X3BpbmciLCBudWxsYWJsZSA9IHRydWUpDQorCUBFbGVtZW50KGRhdGEgPSB0cnVlLCByZXF1aXJlZCA9IGZhbHNlKQ0KKwlwcml2YXRlIENhbGVuZGFyIGxhc3RQaW5nOw0KKwkNCisJQENvbHVtbihuYW1lID0gInBvcnQiLCBudWxsYWJsZSA9IHRydWUpDQorCUBFbGVtZW50KGRhdGEgPSB0cnVlLCByZXF1aXJlZCA9IGZhbHNlKQ0KKwlwcml2YXRlIGludCBwb3J0Ow0KKw0KKwlAQ29sdW1uKG5hbWUgPSAicHJvdG9jb2wiLCBudWxsYWJsZSA9IHRydWUpDQorCUBFbGVtZW50KGRhdGEgPSB0cnVlLCByZXF1aXJlZCA9IGZhbHNlKQ0KKwlwcml2YXRlIFN0cmluZyBwcm90b2NvbDsNCisNCisJQENvbHVtbihuYW1lID0gIndlYmFwcCIsIG51bGxhYmxlID0gdHJ1ZSkNCisJQEVsZW1lbnQoZGF0YSA9IHRydWUsIHJlcXVpcmVkID0gZmFsc2UpDQorCXByaXZhdGUgU3RyaW5nIHdlYmFwcDsNCisNCisJQENvbHVtbihuYW1lID0gInVzZXIiLCBudWxsYWJsZSA9IHRydWUpDQorCUBFbGVtZW50KGRhdGEgPSB0cnVlLCByZXF1aXJlZCA9IGZhbHNlKQ0KKwlwcml2YXRlIFN0cmluZyB1c2VyOw0KKw0KKwlAQ29sdW1uKG5hbWUgPSAicGFzcyIsIG51bGxhYmxlID0gdHJ1ZSkNCisJQEVsZW1lbnQoZGF0YSA9IHRydWUsIHJlcXVpcmVkID0gZmFsc2UpDQorCXByaXZhdGUgU3RyaW5nIHBhc3M7DQorDQorCUBDb2x1bW4obmFtZSA9ICJhY3RpdmUiLCBudWxsYWJsZSA9IHRydWUpDQorCUBFbGVtZW50KGRhdGEgPSB0cnVlLCByZXF1aXJlZCA9IGZhbHNlKQ0KKwlwcml2YXRlIEJvb2xlYW4gYWN0aXZlOw0KKwkNCisJQENvbHVtbihuYW1lID0gImRlbGV0ZWQiLCBudWxsYWJsZSA9IGZhbHNlKQ0KKwlARWxlbWVudChkYXRhID0gdHJ1ZSkNCisJcHJpdmF0ZSBib29sZWFuIGRlbGV0ZWQgPSBmYWxzZTsNCisNCisJcHVibGljIExvbmcgZ2V0SWQoKSB7DQorCQlyZXR1cm4gaWQ7DQorCX0NCisNCisJcHVibGljIHZvaWQgc2V0SWQoTG9uZyBpZCkgew0KKwkJdGhpcy5pZCA9IGlkOw0KKwl9DQorDQorCXB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpIHsNCisJCXJldHVybiBuYW1lOw0KKwl9DQorDQorCXB1YmxpYyB2b2lkIHNldE5hbWUoU3RyaW5nIG5hbWUpIHsNCisJCXRoaXMubmFtZSA9IG5hbWU7DQorCX0NCisNCisJcHVibGljIFN0cmluZyBnZXRBZGRyZXNzKCkgew0KKwkJcmV0dXJuIGFkZHJlc3M7DQorCX0NCisNCisJcHVibGljIHZvaWQgc2V0QWRkcmVzcyhTdHJpbmcgYWRkcmVzcykgew0KKwkJdGhpcy5hZGRyZXNzID0gYWRkcmVzczsNCisJfQ0KKw0KKwlwdWJsaWMgYm9vbGVhbiBpc0RlbGV0ZWQoKSB7DQorCQlyZXR1cm4gZGVsZXRlZDsNCisJfQ0KKw0KKwlwdWJsaWMgdm9pZCBzZXREZWxldGVkKGJvb2xlYW4gZGVsZXRlZCkgew0KKwkJdGhpcy5kZWxldGVkID0gZGVsZXRlZDsNCisJfQ0KKw0KKwlwdWJsaWMgRGF0ZSBnZXRJbnNlcnRlZCgpIHsNCisJCXJldHVybiBpbnNlcnRlZDsNCisJfQ0KKw0KKwlwdWJsaWMgdm9pZCBzZXRJbnNlcnRlZChEYXRlIGluc2VydGVkKSB7DQorCQl0aGlzLmluc2VydGVkID0gaW5zZXJ0ZWQ7DQorCX0NCisNCisJcHVibGljIERhdGUgZ2V0VXBkYXRlZCgpIHsNCisJCXJldHVybiB1cGRhdGVkOw0KKwl9DQorDQorCXB1YmxpYyB2b2lkIHNldFVwZGF0ZWQoRGF0ZSB1cGRhdGVkKSB7DQorCQl0aGlzLnVwZGF0ZWQgPSB1cGRhdGVkOw0KKwl9DQorDQorCXB1YmxpYyBVc2VyIGdldEluc2VydGVkYnkoKSB7DQorCQlyZXR1cm4gaW5zZXJ0ZWRieTsNCisJfQ0KKw0KKwlwdWJsaWMgdm9pZCBzZXRJbnNlcnRlZGJ5KFVzZXIgaW5zZXJ0ZWRieSkgew0KKwkJdGhpcy5pbnNlcnRlZGJ5ID0gaW5zZXJ0ZWRieTsNCisJfQ0KKw0KKwlwdWJsaWMgVXNlciBnZXRVcGRhdGVkYnkoKSB7DQorCQlyZXR1cm4gdXBkYXRlZGJ5Ow0KKwl9DQorDQorCXB1YmxpYyB2b2lkIHNldFVwZGF0ZWRieShVc2VyIHVwZGF0ZWRieSkgew0KKwkJdGhpcy51cGRhdGVkYnkgPSB1cGRhdGVkYnk7DQorCX0NCisNCisJcHVibGljIFN0cmluZyBnZXRDb21tZW50KCkgew0KKwkJcmV0dXJuIGNvbW1lbnQ7DQorCX0NCisNCisJcHVibGljIHZvaWQgc2V0Q29tbWVudChTdHJpbmcgY29tbWVudCkgew0KKwkJdGhpcy5jb21tZW50ID0gY29tbWVudDsNCisJfQ0KKwkNCisJcHVibGljIENhbGVuZGFyIGdldExhc3RQaW5nKCkgew0KKwkJcmV0dXJuIGxhc3RQaW5nOw0KKwl9DQorDQorCXB1YmxpYyB2b2lkIHNldExhc3RQaW5nKENhbGVuZGFyIGxhc3RQaW5nKSB7DQorCQl0aGlzLmxhc3RQaW5nID0gbGFzdFBpbmc7DQorCX0NCisNCisJcHVibGljIGludCBnZXRQb3J0KCkgew0KKwkJcmV0dXJuIHBvcnQ7DQorCX0NCisNCisJcHVibGljIHZvaWQgc2V0UG9ydChpbnQgcG9ydCkgew0KKwkJdGhpcy5wb3J0ID0gcG9ydDsNCisJfQ0KKw0KKwlwdWJsaWMgU3RyaW5nIGdldFByb3RvY29sKCkgew0KKwkJcmV0dXJuIHByb3RvY29sOw0KKwl9DQorDQorCXB1YmxpYyB2b2lkIHNldFByb3RvY29sKFN0cmluZyBwcm90b2NvbCkgew0KKwkJdGhpcy5wcm90b2NvbCA9IHByb3RvY29sOw0KKwl9DQorDQorCXB1YmxpYyBTdHJpbmcgZ2V0V2ViYXBwKCkgew0KKwkJcmV0dXJuIHdlYmFwcDsNCisJfQ0KKw0KKwlwdWJsaWMgdm9pZCBzZXRXZWJhcHAoU3RyaW5nIHdlYmFwcCkgew0KKwkJdGhpcy53ZWJhcHAgPSB3ZWJhcHA7DQorCX0NCisNCisJcHVibGljIFN0cmluZyBnZXRVc2VyKCkgew0KKwkJcmV0dXJuIHVzZXI7DQorCX0NCisNCisJcHVibGljIHZvaWQgc2V0VXNlcihTdHJpbmcgdXNlcikgew0KKwkJdGhpcy51c2VyID0gdXNlcjsNCisJfQ0KKw0KKwlwdWJsaWMgU3RyaW5nIGdldFBhc3MoKSB7DQorCQlyZXR1cm4gcGFzczsNCisJfQ0KKw0KKwlwdWJsaWMgdm9pZCBzZXRQYXNzKFN0cmluZyBwYXNzKSB7DQorCQl0aGlzLnBhc3MgPSBwYXNzOw0KKwl9DQorDQorCXB1YmxpYyB2b2lkIHNldElkKGxvbmcgaWQpIHsNCisJCXRoaXMuaWQgPSBpZDsNCisJfQ0KKw0KKwlwdWJsaWMgQm9vbGVhbiBnZXRBY3RpdmUoKSB7DQorCQlyZXR1cm4gYWN0aXZlOw0KKwl9DQorDQorCXB1YmxpYyB2b2lkIHNldEFjdGl2ZShCb29sZWFuIGFjdGl2ZSkgew0KKwkJdGhpcy5hY3RpdmUgPSBhY3RpdmU7DQorCX0NCisNCisJQE92ZXJyaWRlDQorCXB1YmxpYyBib29sZWFuIGVxdWFscyhPYmplY3Qgb2JqKSB7DQorCQlpZiAob2JqID09IG51bGwpIHsNCisJCQlyZXR1cm4gZmFsc2U7DQorCQl9DQorCQlpZiAoIShvYmogaW5zdGFuY2VvZiBTZXJ2ZXIpKSB7DQorCQkJcmV0dXJuIGZhbHNlOw0KKwkJfSBlbHNlIHsNCisJCQlTZXJ2ZXIgcyA9IChTZXJ2ZXIpb2JqOw0KKwkJCXJldHVybiBzLmlkID09IGlkICYmICgocy5hZGRyZXNzICE9IG51bGwgJiYgcy5hZGRyZXNzLmVxdWFscyhhZGRyZXNzKSkgfHwgKHMuYWRkcmVzcyA9PSBudWxsICYmIHMuYWRkcmVzcyA9PSBhZGRyZXNzKSk7DQorCQl9DQorCX0NCisJDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgaW50IGhhc2hDb2RlKCkgew0KKwkJZmluYWwgaW50IHByaW1lID0gMzE7DQorCQlpbnQgcmVzdWx0ID0gMTsNCisJCXJlc3VsdCA9IHByaW1lICogcmVzdWx0ICsgKGludClpZCArIChhZGRyZXNzID09IG51bGwgPyAwIDogYWRkcmVzcy5oYXNoQ29kZSgpKTsNCisJCXJldHVybiByZXN1bHQ7DQorCX0NCisJDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgU3RyaW5nIHRvU3RyaW5nKCkgew0KKwkJcmV0dXJuICJTZXJ2ZXIgW2lkPSIgKyBpZCArICIsIG5hbWU9IiArIG5hbWUgKyAiLCBhZGRyZXNzPSIgKyBhZGRyZXNzDQorCQkJCSsgIiwgcG9ydD0iICsgcG9ydCArICIsIHVzZXI9IiArIHVzZXIgKyAiLCBwYXNzPSIgKyBwYXNzDQorCQkJCSsgIiwgcHJvdG9jb2w9IiArIHByb3RvY29sIA0KKwkJCQkrICIsIGFjdGl2ZT0iICsgYWN0aXZlICsgIiwgd2ViYXBwPSIgKyB3ZWJhcHAgKyAiLCBkZWxldGVkPSINCisJCQkJKyBkZWxldGVkICsgIl0iOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9iYXNpYy9TZXNzaW9uZGF0YS5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL2Jhc2ljL1Nlc3Npb25kYXRhLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzIzY2Y3YQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9iYXNpYy9TZXNzaW9uZGF0YS5qYXZhCkBAIC0wLDAgKzEsMTQ0IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljOworCitpbXBvcnQgamF2YS5pby5TZXJpYWxpemFibGU7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CisKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkdlbmVyYXRlZFZhbHVlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkdlbmVyYXRpb25UeXBlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLklkOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkxvYjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5OYW1lZFF1ZXJpZXM7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTmFtZWRRdWVyeTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UYWJsZTsKKworQEVudGl0eQorQE5hbWVkUXVlcmllcyh7CisJQE5hbWVkUXVlcnkobmFtZSA9ICJnZXRTZXNzaW9uQnlJZCIsIHF1ZXJ5ID0gInNlbGVjdCBjIGZyb20gU2Vzc2lvbmRhdGEgYXMgYyAiCisJCQkJCSsgIndoZXJlIGMuc2Vzc2lvbl9pZCBMSUtFIDpzZXNzaW9uX2lkIiksCisJQE5hbWVkUXVlcnkobmFtZSA9ICJnZXRTZXNzaW9uVG9EZWxldGUiLCBxdWVyeSA9ICJTZWxlY3QgYyBmcm9tIFNlc3Npb25kYXRhIGMgIgorCQkJCQkrICJXSEVSRSBjLnJlZnJlc2hfdGltZSA8IDpyZWZyZXNoX3RpbWUgIiArICJBTkQgKCAiCisJCQkJCSsgImMuc3RvcmVQZXJtYW5lbnQgSVMgTlVMTCAiICsgIk9SICIKKwkJCQkJKyAiYy5zdG9yZVBlcm1hbmVudCA9IGZhbHNlICIgKyAiKSIpCit9KQorQFRhYmxlKG5hbWUgPSAic2Vzc2lvbmRhdGEiKQorcHVibGljIGNsYXNzIFNlc3Npb25kYXRhIGltcGxlbWVudHMgU2VyaWFsaXphYmxlIHsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAxOTI4MTc3OTE3NDUyODY2NzUwTDsKKwlASWQKKwlAR2VuZXJhdGVkVmFsdWUoc3RyYXRlZ3kgPSBHZW5lcmF0aW9uVHlwZS5JREVOVElUWSkKKwlAQ29sdW1uKG5hbWU9ImlkIikKKwlwcml2YXRlIExvbmcgaWQ7CisJCisJQENvbHVtbihuYW1lPSJ1c2VyX2lkIikKKwlwcml2YXRlIExvbmcgdXNlcl9pZDsKKwkKKwlAQ29sdW1uKG5hbWU9InNlc3Npb25faWQiKQorCXByaXZhdGUgU3RyaW5nIHNlc3Npb25faWQ7CisJCisJQENvbHVtbihuYW1lPSJzdGFydHRlcm1pbl90aW1lIikKKwlwcml2YXRlIERhdGUgc3RhcnR0ZXJtaW5fdGltZTsKKwkKKwlAQ29sdW1uKG5hbWU9InJlZnJlc2hfdGltZSIpCisJcHJpdmF0ZSBEYXRlIHJlZnJlc2hfdGltZTsKKwkKKwlATG9iCisJQENvbHVtbihuYW1lPSJzZXNzaW9uWG1sIikKKwlwcml2YXRlIFN0cmluZyBzZXNzaW9uWG1sOworCQorCUBDb2x1bW4obmFtZT0ic3RvcmVQZXJtYW5lbnQiKQorCXByaXZhdGUgQm9vbGVhbiBzdG9yZVBlcm1hbmVudDsKKwkKKwlAQ29sdW1uKG5hbWU9Imxhbmd1YWdlX2lkIikKKwlwcml2YXRlIExvbmcgbGFuZ3VhZ2VfaWQ7CisJCisJQENvbHVtbihuYW1lPSJvcmdhbml6YXRpb25faWQiKQorCXByaXZhdGUgTG9uZyBvcmdhbml6YXRpb25faWQ7CisJCisJcHVibGljIFNlc3Npb25kYXRhKCkgeworCQlzdXBlcigpOworCQkvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIGNvbnN0cnVjdG9yIHN0dWIKKwl9CisgICAgCisgICAgcHVibGljIExvbmcgZ2V0SWQoKSB7CisgICAgICAgIHJldHVybiBpZDsKKyAgICB9CisgICAgcHVibGljIHZvaWQgc2V0SWQoTG9uZyBpZCkgeworICAgICAgICB0aGlzLmlkID0gaWQ7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBEYXRlIGdldFJlZnJlc2hfdGltZSgpIHsKKyAgICAgICAgcmV0dXJuIHJlZnJlc2hfdGltZTsKKyAgICB9CisgICAgcHVibGljIHZvaWQgc2V0UmVmcmVzaF90aW1lKERhdGUgcmVmcmVzaF90aW1lKSB7CisgICAgICAgIHRoaXMucmVmcmVzaF90aW1lID0gcmVmcmVzaF90aW1lOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgU3RyaW5nIGdldFNlc3Npb25faWQoKSB7CisgICAgICAgIHJldHVybiBzZXNzaW9uX2lkOworICAgIH0KKyAgICBwdWJsaWMgdm9pZCBzZXRTZXNzaW9uX2lkKFN0cmluZyBzZXNzaW9uX2lkKSB7CisgICAgICAgIHRoaXMuc2Vzc2lvbl9pZCA9IHNlc3Npb25faWQ7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBEYXRlIGdldFN0YXJ0dGVybWluX3RpbWUoKSB7CisgICAgICAgIHJldHVybiBzdGFydHRlcm1pbl90aW1lOworICAgIH0KKyAgICBwdWJsaWMgdm9pZCBzZXRTdGFydHRlcm1pbl90aW1lKERhdGUgc3RhcnR0ZXJtaW5fdGltZSkgeworICAgICAgICB0aGlzLnN0YXJ0dGVybWluX3RpbWUgPSBzdGFydHRlcm1pbl90aW1lOworICAgIH0KKyAgICAKKyAgICBwdWJsaWMgTG9uZyBnZXRVc2VyX2lkKCkgeworICAgICAgICByZXR1cm4gdXNlcl9pZDsKKyAgICB9CisgICAgcHVibGljIHZvaWQgc2V0VXNlcl9pZChMb25nIHVzZXJfaWQpIHsKKyAgICAgICAgdGhpcy51c2VyX2lkID0gdXNlcl9pZDsKKyAgICB9CisKKwlwdWJsaWMgU3RyaW5nIGdldFNlc3Npb25YbWwoKSB7CisJCXJldHVybiBzZXNzaW9uWG1sOworCX0KKwlwdWJsaWMgdm9pZCBzZXRTZXNzaW9uWG1sKFN0cmluZyBzZXNzaW9uWG1sKSB7CisJCXRoaXMuc2Vzc2lvblhtbCA9IHNlc3Npb25YbWw7CisJfQorCisJcHVibGljIEJvb2xlYW4gZ2V0U3RvcmVQZXJtYW5lbnQoKSB7CisJCXJldHVybiBzdG9yZVBlcm1hbmVudDsKKwl9CisJcHVibGljIHZvaWQgc2V0U3RvcmVQZXJtYW5lbnQoQm9vbGVhbiBzdG9yZVBlcm1hbmVudCkgeworCQl0aGlzLnN0b3JlUGVybWFuZW50ID0gc3RvcmVQZXJtYW5lbnQ7CisJfQorCisJcHVibGljIExvbmcgZ2V0TGFuZ3VhZ2VfaWQoKSB7CisJCXJldHVybiBsYW5ndWFnZV9pZDsKKwl9CisJcHVibGljIHZvaWQgc2V0TGFuZ3VhZ2VfaWQoTG9uZyBsYW5ndWFnZV9pZCkgeworCQl0aGlzLmxhbmd1YWdlX2lkID0gbGFuZ3VhZ2VfaWQ7CisJfQorCisJcHVibGljIExvbmcgZ2V0T3JnYW5pemF0aW9uX2lkKCkgeworCQlyZXR1cm4gb3JnYW5pemF0aW9uX2lkOworCX0KKwlwdWJsaWMgdm9pZCBzZXRPcmdhbml6YXRpb25faWQoTG9uZyBvcmdhbml6YXRpb25faWQpIHsKKwkJdGhpcy5vcmdhbml6YXRpb25faWQgPSBvcmdhbml6YXRpb25faWQ7CisJfQorCQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL2NhbGVuZGFyL0FwcG9pbnRtZW50LmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvY2FsZW5kYXIvQXBwb2ludG1lbnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YzcyY2RmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL2NhbGVuZGFyL0FwcG9pbnRtZW50LmphdmEKQEAgLTAsMCArMSwzODIgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuY2FsZW5kYXI7CisKK2ltcG9ydCBqYXZhLmlvLlNlcmlhbGl6YWJsZTsKK2ltcG9ydCBqYXZhLnV0aWwuQ2FsZW5kYXI7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLlRpbWVab25lOworCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5GZXRjaFR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuR2VuZXJhdGVkVmFsdWU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuR2VuZXJhdGlvblR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSWQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSm9pbkNvbHVtbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Mb2I7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTWFueVRvT25lOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk5hbWVkUXVlcmllczsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5OYW1lZFF1ZXJ5OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk9uZVRvTWFueTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UYWJsZTsKKworaW1wb3J0IG9yZy5hcGFjaGUub3BlbmpwYS5wZXJzaXN0ZW5jZS5qZGJjLkZvcmVpZ25LZXk7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbS5Sb29tOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuVXNlcjsKK2ltcG9ydCBvcmcuc2ltcGxlZnJhbWV3b3JrLnhtbC5FbGVtZW50OworaW1wb3J0IG9yZy5zaW1wbGVmcmFtZXdvcmsueG1sLlJvb3Q7CisKK0BFbnRpdHkKK0BUYWJsZShuYW1lID0gImFwcG9pbnRtZW50cyIpCitATmFtZWRRdWVyaWVzKHsKKyAgICBATmFtZWRRdWVyeShuYW1lPSJhcHBvaW50bWVudHNJblJhbmdlIiwKKyAgICAgICAgCXF1ZXJ5PSJTRUxFQ1QgYSBGUk9NIEFwcG9pbnRtZW50IGEgIgorICAgIAkJCSsgIldIRVJFIGEuZGVsZXRlZCA8PiA6ZGVsZXRlZCAiCisgICAgCQkJKyAiCUFORCAoICIKKyAgICAJCQkrICIJCShhLmFwcG9pbnRtZW50U3RhcnR0aW1lIEJFVFdFRU4gOnN0YXJ0dGltZSBBTkQgOmVuZHRpbWUpICIKKyAgICAJCQkrICIJCU9SIChhLmFwcG9pbnRtZW50RW5kdGltZSBCRVRXRUVOIDpzdGFydHRpbWUgQU5EIDplbmR0aW1lKSAiCisgICAgCQkJKyAiCQlPUiAoYS5hcHBvaW50bWVudFN0YXJ0dGltZSA8IDpzdGFydHRpbWUgQU5EIGEuYXBwb2ludG1lbnRFbmR0aW1lID4gOmVuZHRpbWUpICIKKyAgICAJCQkrICIJKSIKKyAgICAJCQkrICIJQU5EIGEudXNlcklkLnVzZXJfaWQgPSA6dXNlcklkIgorICAgIAkpCisgICAgLCBATmFtZWRRdWVyeShuYW1lPSJqb2luZWRBcHBvaW50bWVudHNJblJhbmdlIiwKKyAgICAJcXVlcnk9IlNFTEVDVCBhIEZST00gTWVldGluZ01lbWJlciBtbSwgSU4obW0uYXBwb2ludG1lbnQpIGEgIgorCQkJKyAiV0hFUkUgbW0uZGVsZXRlZCA8PiB0cnVlIEFORCBtbS5pbnZpdG9yIDw+IHRydWUgQU5EIG1tLnVzZXJpZC51c2VyX2lkID0gOnVzZXJJZCAiCisJCQkrICIJQU5EIGEuYXBwb2ludG1lbnRJZCBOT1QgSU4gKFNFTEVDVCBhLmFwcG9pbnRtZW50SWQgRlJPTSBBcHBvaW50bWVudCBhIFdIRVJFIGEudXNlcklkLnVzZXJfaWQgPSA6dXNlcklkKSIKKwkJCSsgIglBTkQgbW0uaXNDb25uZWN0ZWRFdmVudCA8PiB0cnVlICIgLy9UT0RPIHJldmlldzogaXNDb25uZWN0ZWRFdmVudCBpcyBzZXQgZm9yIHRoZSBNZWV0aW5nTWVtYmVyIGlmIGV2ZW50IGlzIGNyZWF0ZWQgZnJvbSAiUHJpdmF0ZSBNZXNzYWdlcyIsIGl0IGlzIHdlaXJkCisJCQkrICIJQU5EICggIgorCQkJKyAiCQkoYS5hcHBvaW50bWVudFN0YXJ0dGltZSBCRVRXRUVOIDpzdGFydHRpbWUgQU5EIDplbmR0aW1lKSAiCisJCQkrICIJCU9SIChhLmFwcG9pbnRtZW50RW5kdGltZSBCRVRXRUVOIDpzdGFydHRpbWUgQU5EIDplbmR0aW1lKSAiCisJCQkrICIJCU9SIChhLmFwcG9pbnRtZW50U3RhcnR0aW1lIDwgOnN0YXJ0dGltZSBBTkQgYS5hcHBvaW50bWVudEVuZHRpbWUgPiA6ZW5kdGltZSkgIgorCQkJKyAiCSkiCisJKQorfSkKK0BSb290KG5hbWU9ImFwcG9pbnRtZW50IikKK3B1YmxpYyBjbGFzcyBBcHBvaW50bWVudCBpbXBsZW1lbnRzIFNlcmlhbGl6YWJsZSB7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMjAxNjgwODc3ODg4NTc2MTUyNUw7CisJQElkCisJQEdlbmVyYXRlZFZhbHVlKHN0cmF0ZWd5ID0gR2VuZXJhdGlvblR5cGUuSURFTlRJVFkpCisJQENvbHVtbihuYW1lID0gImlkIikKKwlARWxlbWVudChkYXRhPXRydWUpCisJcHJpdmF0ZSBMb25nIGFwcG9pbnRtZW50SWQ7CisJCisJQENvbHVtbihuYW1lID0gImFwcG9pbnRtZW50bmFtZSIpCisJQEVsZW1lbnQoZGF0YT10cnVlLCByZXF1aXJlZD1mYWxzZSkKKwlwcml2YXRlIFN0cmluZyBhcHBvaW50bWVudE5hbWU7CisJCisJQENvbHVtbihuYW1lID0gImxvY2F0aW9uIikKKwlARWxlbWVudChkYXRhPXRydWUsIHJlcXVpcmVkPWZhbHNlKQorCXByaXZhdGUgU3RyaW5nIGFwcG9pbnRtZW50TG9jYXRpb247CisJCisJQENvbHVtbihuYW1lID0gImFwcG9pbnRtZW50X3N0YXJ0dGltZSIpCisJQEVsZW1lbnQoZGF0YT10cnVlKQorCXByaXZhdGUgRGF0ZSBhcHBvaW50bWVudFN0YXJ0dGltZTsKKwkKKwlAQ29sdW1uKG5hbWUgPSAiYXBwb2ludG1lbnRfZW5kdGltZSIpCisJQEVsZW1lbnQoZGF0YT10cnVlKQorCXByaXZhdGUgRGF0ZSBhcHBvaW50bWVudEVuZHRpbWU7CisJCisJQExvYiAKKwlAQ29sdW1uKG5hbWUgPSAiZGVzY3JpcHRpb24iLCBsZW5ndGg9MjA0OCkKKwlARWxlbWVudChkYXRhPXRydWUsIHJlcXVpcmVkPWZhbHNlKQorCXByaXZhdGUgU3RyaW5nIGFwcG9pbnRtZW50RGVzY3JpcHRpb247CisJCisJQE1hbnlUb09uZShmZXRjaCA9IEZldGNoVHlwZS5FQUdFUikKKwlASm9pbkNvbHVtbihuYW1lID0gImNhdGVnb3J5X2lkIiwgbnVsbGFibGUgPSB0cnVlKQorCUBGb3JlaWduS2V5KGVuYWJsZWQgPSB0cnVlKQorCUBFbGVtZW50KG5hbWU9ImNhdGVnb3J5SWQiLCBkYXRhPXRydWUsIHJlcXVpcmVkPWZhbHNlKQorCXByaXZhdGUgQXBwb2ludG1lbnRDYXRlZ29yeSBhcHBvaW50bWVudENhdGVnb3J5OworCQorCUBNYW55VG9PbmUoZmV0Y2ggPSBGZXRjaFR5cGUuRUFHRVIpCisJQEpvaW5Db2x1bW4obmFtZSA9ICJ1c2VyX2lkIiwgbnVsbGFibGUgPSB0cnVlKQorCUBGb3JlaWduS2V5KGVuYWJsZWQgPSB0cnVlKQorCUBFbGVtZW50KG5hbWU9InVzZXJzX2lkIiwgZGF0YT10cnVlLCByZXF1aXJlZD1mYWxzZSkKKwlwcml2YXRlIFVzZXIgdXNlcklkOworCisJQENvbHVtbihuYW1lID0gInN0YXJ0dGltZSIpCisJcHJpdmF0ZSBEYXRlIHN0YXJ0dGltZTsKKwkKKwlAQ29sdW1uKG5hbWUgPSAidXBkYXRldGltZSIpCisJcHJpdmF0ZSBEYXRlIHVwZGF0ZXRpbWU7CisJCisJQENvbHVtbihuYW1lID0gImRlbGV0ZWQiKQorCUBFbGVtZW50KGRhdGE9dHJ1ZSkKKwlwcml2YXRlIGJvb2xlYW4gZGVsZXRlZDsKKwkKKwlATWFueVRvT25lKGZldGNoID0gRmV0Y2hUeXBlLkVBR0VSKQorCUBKb2luQ29sdW1uKG5hbWUgPSAicmVtaW5kX2lkIiwgbnVsbGFibGUgPSB0cnVlKQorCUBGb3JlaWduS2V5KGVuYWJsZWQgPSB0cnVlKQorCUBFbGVtZW50KG5hbWU9InR5cElkIiwgZGF0YT10cnVlLCByZXF1aXJlZD1mYWxzZSkKKwlwcml2YXRlIEFwcG9pbnRtZW50UmVtaW5kZXJUeXBzIHJlbWluZDsKKworCUBDb2x1bW4obmFtZSA9ICJpc2RhaWx5IikKKwlARWxlbWVudChkYXRhPXRydWUpCisJcHJpdmF0ZSBCb29sZWFuIGlzRGFpbHk7CisJCisJQENvbHVtbihuYW1lID0gImlzd2Vla2x5IikKKwlARWxlbWVudChkYXRhPXRydWUpCisJcHJpdmF0ZSBCb29sZWFuIGlzV2Vla2x5OworCQorCUBDb2x1bW4obmFtZSA9ICJpc21vbnRobHkiKQorCUBFbGVtZW50KGRhdGE9dHJ1ZSkKKwlwcml2YXRlIEJvb2xlYW4gaXNNb250aGx5OworCQorCUBDb2x1bW4obmFtZSA9ICJpc3llYXJseSIpCisJQEVsZW1lbnQoZGF0YT10cnVlKQorCXByaXZhdGUgQm9vbGVhbiBpc1llYXJseTsKKworCUBNYW55VG9PbmUoZmV0Y2ggPSBGZXRjaFR5cGUuRUFHRVIpCisJQEpvaW5Db2x1bW4obmFtZSA9ICJyb29tX2lkIiwgbnVsbGFibGUgPSB0cnVlKQorCUBGb3JlaWduS2V5KGVuYWJsZWQgPSB0cnVlKQorCUBFbGVtZW50KG5hbWU9InJvb21faWQiLCBkYXRhPXRydWUsIHJlcXVpcmVkPWZhbHNlKQorCXByaXZhdGUgUm9vbSByb29tOworCisJQENvbHVtbihuYW1lID0gImljYWxJZCIpCisJQEVsZW1lbnQoZGF0YT10cnVlLCByZXF1aXJlZD1mYWxzZSkKKwlwcml2YXRlIFN0cmluZyBpY2FsSWQ7CisKKwlAT25lVG9NYW55KGZldGNoID0gRmV0Y2hUeXBlLkxBWlkpCisJQEpvaW5Db2x1bW4obmFtZSA9ICJhcHBvaW50bWVudF9pZCIpCisJcHJpdmF0ZSBMaXN0PE1lZXRpbmdNZW1iZXI+IG1lZXRpbmdNZW1iZXI7CisJCisJQENvbHVtbihuYW1lID0gImxhbmd1YWdlX2lkIikKKwlARWxlbWVudChkYXRhPXRydWUsIHJlcXVpcmVkPWZhbHNlKQorCXByaXZhdGUgTG9uZyBsYW5ndWFnZV9pZDsKKwkKKwlAQ29sdW1uKG5hbWUgPSAiaXNfcGFzc3dvcmRfcHJvdGVjdGVkIikKKwlARWxlbWVudChkYXRhPXRydWUsIHJlcXVpcmVkPWZhbHNlKQorCXByaXZhdGUgQm9vbGVhbiBpc1Bhc3N3b3JkUHJvdGVjdGVkOworCQorCUBDb2x1bW4obmFtZSA9ICJwYXNzd29yZCIpCisJQEVsZW1lbnQoZGF0YT10cnVlLCByZXF1aXJlZD1mYWxzZSkKKwlwcml2YXRlIFN0cmluZyBwYXNzd29yZDsKKworCUBDb2x1bW4obmFtZSA9ICJpc19jb25uZWN0ZWRfZXZlbnQiKQorCXByaXZhdGUgQm9vbGVhbiBpc0Nvbm5lY3RlZEV2ZW50OworCisJQENvbHVtbihuYW1lID0gImlzX3JlbWluZGVyX2VtYWlsX3NlbmQiKQorCXByaXZhdGUgQm9vbGVhbiBpc1JlbWluZGVyRW1haWxTZW5kID0gZmFsc2U7IC8vZGVmYXVsdCB0byBmYWxzZQorCisJcHVibGljIExvbmcgZ2V0QXBwb2ludG1lbnRJZCgpIHsKKwkJcmV0dXJuIGFwcG9pbnRtZW50SWQ7CisJfQorCisJcHVibGljIHZvaWQgc2V0QXBwb2ludG1lbnRJZChMb25nIGFwcG9pbnRtZW50SWQpIHsKKwkJdGhpcy5hcHBvaW50bWVudElkID0gYXBwb2ludG1lbnRJZDsKKwl9CisKKwlwdWJsaWMgVXNlciBnZXRVc2VySWQoKSB7CisJCXJldHVybiB1c2VySWQ7CisJfQorCisJcHVibGljIHZvaWQgc2V0VXNlcklkKFVzZXIgdXNlcklkKSB7CisJCXRoaXMudXNlcklkID0gdXNlcklkOworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0QXBwb2ludG1lbnROYW1lKCkgeworCQlyZXR1cm4gYXBwb2ludG1lbnROYW1lOworCX0KKworCXB1YmxpYyB2b2lkIHNldEFwcG9pbnRtZW50TmFtZShTdHJpbmcgYXBwb2ludG1lbnROYW1lKSB7CisJCXRoaXMuYXBwb2ludG1lbnROYW1lID0gYXBwb2ludG1lbnROYW1lOworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0QXBwb2ludG1lbnRMb2NhdGlvbigpIHsKKwkJcmV0dXJuIGFwcG9pbnRtZW50TG9jYXRpb247CisJfQorCisJcHVibGljIHZvaWQgc2V0QXBwb2ludG1lbnRMb2NhdGlvbihTdHJpbmcgYXBwb2ludG1lbnRMb2NhdGlvbikgeworCQl0aGlzLmFwcG9pbnRtZW50TG9jYXRpb24gPSBhcHBvaW50bWVudExvY2F0aW9uOworCX0KKworCXB1YmxpYyBEYXRlIGdldEFwcG9pbnRtZW50U3RhcnR0aW1lKCkgeworCQlyZXR1cm4gYXBwb2ludG1lbnRTdGFydHRpbWU7CisJfQorCisJcHVibGljIENhbGVuZGFyIGFwcG9pbnRtZW50U3RhcnRBc0NhbGVuZGFyKFRpbWVab25lIHRpbWVab25lKSB7CisJCUNhbGVuZGFyIGNhbCA9IENhbGVuZGFyLmdldEluc3RhbmNlKHRpbWVab25lKTsKKwkJY2FsLnNldFRpbWUoYXBwb2ludG1lbnRTdGFydHRpbWUpOworCQlyZXR1cm4gY2FsOworCX0KKworCXB1YmxpYyB2b2lkIHNldEFwcG9pbnRtZW50U3RhcnR0aW1lKERhdGUgYXBwb2ludG1lbnRTdGFydHRpbWUpIHsKKwkJdGhpcy5hcHBvaW50bWVudFN0YXJ0dGltZSA9IGFwcG9pbnRtZW50U3RhcnR0aW1lOworCX0KKworCXB1YmxpYyBEYXRlIGdldEFwcG9pbnRtZW50RW5kdGltZSgpIHsKKwkJcmV0dXJuIGFwcG9pbnRtZW50RW5kdGltZTsKKwl9CisKKwlwdWJsaWMgQ2FsZW5kYXIgYXBwb2ludG1lbnRFbmRBc0NhbGVuZGFyKFRpbWVab25lIHRpbWVab25lKSB7CisJCUNhbGVuZGFyIGNhbCA9IENhbGVuZGFyLmdldEluc3RhbmNlKHRpbWVab25lKTsKKwkJY2FsLnNldFRpbWUoYXBwb2ludG1lbnRFbmR0aW1lKTsKKwkJcmV0dXJuIGNhbDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRBcHBvaW50bWVudEVuZHRpbWUoRGF0ZSBhcHBvaW50bWVudEVuZHRpbWUpIHsKKwkJdGhpcy5hcHBvaW50bWVudEVuZHRpbWUgPSBhcHBvaW50bWVudEVuZHRpbWU7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRBcHBvaW50bWVudERlc2NyaXB0aW9uKCkgeworCQlyZXR1cm4gYXBwb2ludG1lbnREZXNjcmlwdGlvbjsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRBcHBvaW50bWVudERlc2NyaXB0aW9uKFN0cmluZyBhcHBvaW50bWVudERlc2NyaXB0aW9uKSB7CisJCXRoaXMuYXBwb2ludG1lbnREZXNjcmlwdGlvbiA9IGFwcG9pbnRtZW50RGVzY3JpcHRpb247CisJfQorCisJcHVibGljIEFwcG9pbnRtZW50Q2F0ZWdvcnkgZ2V0QXBwb2ludG1lbnRDYXRlZ29yeSgpIHsKKwkJcmV0dXJuIGFwcG9pbnRtZW50Q2F0ZWdvcnk7CisJfQorCisJcHVibGljIHZvaWQgc2V0QXBwb2ludG1lbnRDYXRlZ29yeShBcHBvaW50bWVudENhdGVnb3J5IGFwcG9pbnRtZW50Q2F0ZWdvcnkpIHsKKwkJdGhpcy5hcHBvaW50bWVudENhdGVnb3J5ID0gYXBwb2ludG1lbnRDYXRlZ29yeTsKKwl9CisKKwlwdWJsaWMgQXBwb2ludG1lbnRSZW1pbmRlclR5cHMgZ2V0UmVtaW5kKCkgeworCQlyZXR1cm4gcmVtaW5kOworCX0KKworCXB1YmxpYyB2b2lkIHNldFJlbWluZChBcHBvaW50bWVudFJlbWluZGVyVHlwcyByZW1pbmQpIHsKKwkJdGhpcy5yZW1pbmQgPSByZW1pbmQ7CisJfQorCisJcHVibGljIERhdGUgZ2V0U3RhcnR0aW1lKCkgeworCQlyZXR1cm4gc3RhcnR0aW1lOworCX0KKworCXB1YmxpYyB2b2lkIHNldFN0YXJ0dGltZShEYXRlIHN0YXJ0dGltZSkgeworCQl0aGlzLnN0YXJ0dGltZSA9IHN0YXJ0dGltZTsKKwl9CisKKwlwdWJsaWMgRGF0ZSBnZXRVcGRhdGV0aW1lKCkgeworCQlyZXR1cm4gdXBkYXRldGltZTsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRVcGRhdGV0aW1lKERhdGUgdXBkYXRldGltZSkgeworCQl0aGlzLnVwZGF0ZXRpbWUgPSB1cGRhdGV0aW1lOworCX0KKworCXB1YmxpYyBib29sZWFuIGdldERlbGV0ZWQoKSB7CisJCXJldHVybiBkZWxldGVkOworCX0KKworCXB1YmxpYyB2b2lkIHNldERlbGV0ZWQoYm9vbGVhbiBkZWxldGVkKSB7CisJCXRoaXMuZGVsZXRlZCA9IGRlbGV0ZWQ7CisJfQorCisJcHVibGljIEJvb2xlYW4gZ2V0SXNXZWVrbHkoKSB7CisJCXJldHVybiBpc1dlZWtseTsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRJc1dlZWtseShCb29sZWFuIGlzV2Vla2x5KSB7CisJCXRoaXMuaXNXZWVrbHkgPSBpc1dlZWtseTsKKwl9CisKKwlwdWJsaWMgQm9vbGVhbiBnZXRJc01vbnRobHkoKSB7CisJCXJldHVybiBpc01vbnRobHk7CisJfQorCisJcHVibGljIHZvaWQgc2V0SXNNb250aGx5KEJvb2xlYW4gaXNNb250aGx5KSB7CisJCXRoaXMuaXNNb250aGx5ID0gaXNNb250aGx5OworCX0KKworCXB1YmxpYyBCb29sZWFuIGdldElzWWVhcmx5KCkgeworCQlyZXR1cm4gaXNZZWFybHk7CisJfQorCisJcHVibGljIHZvaWQgc2V0SXNZZWFybHkoQm9vbGVhbiBpc1llYXJseSkgeworCQl0aGlzLmlzWWVhcmx5ID0gaXNZZWFybHk7CisJfQorCisJcHVibGljIEJvb2xlYW4gZ2V0SXNEYWlseSgpIHsKKwkJcmV0dXJuIGlzRGFpbHk7CisJfQorCisJcHVibGljIHZvaWQgc2V0SXNEYWlseShCb29sZWFuIGlzRGFpbHkpIHsKKwkJdGhpcy5pc0RhaWx5ID0gaXNEYWlseTsKKwl9CisKKwlwdWJsaWMgTGlzdDxNZWV0aW5nTWVtYmVyPiBnZXRNZWV0aW5nTWVtYmVyKCkgeworCQlyZXR1cm4gbWVldGluZ01lbWJlcjsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRNZWV0aW5nTWVtYmVyKExpc3Q8TWVldGluZ01lbWJlcj4gbWVldGluZ01lbWJlcikgeworCQl0aGlzLm1lZXRpbmdNZW1iZXIgPSBtZWV0aW5nTWVtYmVyOworCX0KKworCXB1YmxpYyBSb29tIGdldFJvb20oKSB7CisJCXJldHVybiByb29tOworCX0KKworCXB1YmxpYyB2b2lkIHNldFJvb20oUm9vbSByb29tKSB7CisJCXRoaXMucm9vbSA9IHJvb207CisJfQorCisJcHVibGljIFN0cmluZyBnZXRJY2FsSWQoKSB7CisJCXJldHVybiBpY2FsSWQ7CisJfQorCisJcHVibGljIHZvaWQgc2V0SWNhbElkKFN0cmluZyBpY2FsSWQpIHsKKwkJdGhpcy5pY2FsSWQgPSBpY2FsSWQ7CisJfQorCisJcHVibGljIExvbmcgZ2V0TGFuZ3VhZ2VfaWQoKSB7CisJCXJldHVybiBsYW5ndWFnZV9pZDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRMYW5ndWFnZV9pZChMb25nIGxhbmd1YWdlSWQpIHsKKwkJbGFuZ3VhZ2VfaWQgPSBsYW5ndWFnZUlkOworCX0KKworCXB1YmxpYyBCb29sZWFuIGdldElzUGFzc3dvcmRQcm90ZWN0ZWQoKSB7CisJCXJldHVybiBpc1Bhc3N3b3JkUHJvdGVjdGVkOworCX0KKworCXB1YmxpYyB2b2lkIHNldElzUGFzc3dvcmRQcm90ZWN0ZWQoQm9vbGVhbiBpc1Bhc3N3b3JkUHJvdGVjdGVkKSB7CisJCXRoaXMuaXNQYXNzd29yZFByb3RlY3RlZCA9IGlzUGFzc3dvcmRQcm90ZWN0ZWQ7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRQYXNzd29yZCgpIHsKKwkJcmV0dXJuIHBhc3N3b3JkOworCX0KKworCXB1YmxpYyB2b2lkIHNldFBhc3N3b3JkKFN0cmluZyBwYXNzd29yZCkgeworCQl0aGlzLnBhc3N3b3JkID0gcGFzc3dvcmQ7CisJfQorCisJcHVibGljIEJvb2xlYW4gZ2V0SXNDb25uZWN0ZWRFdmVudCgpIHsKKwkJcmV0dXJuIGlzQ29ubmVjdGVkRXZlbnQ7CisJfQorCisJcHVibGljIHZvaWQgc2V0SXNDb25uZWN0ZWRFdmVudChCb29sZWFuIGlzQ29ubmVjdGVkRXZlbnQpIHsKKwkJdGhpcy5pc0Nvbm5lY3RlZEV2ZW50ID0gaXNDb25uZWN0ZWRFdmVudDsKKwl9CisKKwlwdWJsaWMgQm9vbGVhbiBnZXRJc1JlbWluZGVyRW1haWxTZW5kKCkgeworCQlyZXR1cm4gaXNSZW1pbmRlckVtYWlsU2VuZDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRJc1JlbWluZGVyRW1haWxTZW5kKEJvb2xlYW4gaXNSZW1pbmRlckVtYWlsU2VuZCkgeworCQl0aGlzLmlzUmVtaW5kZXJFbWFpbFNlbmQgPSBpc1JlbWluZGVyRW1haWxTZW5kOworCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL2NhbGVuZGFyL0FwcG9pbnRtZW50Q2F0ZWdvcnkuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9jYWxlbmRhci9BcHBvaW50bWVudENhdGVnb3J5LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDE5ZGFiZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9jYWxlbmRhci9BcHBvaW50bWVudENhdGVnb3J5LmphdmEKQEAgLTAsMCArMSwxMTggQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuY2FsZW5kYXI7CisKK2ltcG9ydCBqYXZhLmlvLlNlcmlhbGl6YWJsZTsKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKKworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHk7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRmV0Y2hUeXBlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkdlbmVyYXRlZFZhbHVlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkdlbmVyYXRpb25UeXBlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLklkOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkpvaW5Db2x1bW47CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTG9iOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk1hbnlUb09uZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UYWJsZTsKKworaW1wb3J0IG9yZy5hcGFjaGUub3BlbmpwYS5wZXJzaXN0ZW5jZS5qZGJjLkZvcmVpZ25LZXk7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlci5Vc2VyOworCitARW50aXR5CitAVGFibGUobmFtZSA9ICJhcHBvaW50bWVudGNhdGVnb3J5IikKK3B1YmxpYyBjbGFzcyBBcHBvaW50bWVudENhdGVnb3J5IGltcGxlbWVudHMgU2VyaWFsaXphYmxlIHsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSA1OTU3MTM2NDk5MzM2OTI3NzRMOworCUBJZAorCUBHZW5lcmF0ZWRWYWx1ZShzdHJhdGVneSA9IEdlbmVyYXRpb25UeXBlLklERU5USVRZKQorCUBDb2x1bW4obmFtZT0iaWQiKQorCXByaXZhdGUgTG9uZyBjYXRlZ29yeUlkOworCQorCUBDb2x1bW4obmFtZT0ibmFtZSIpCisJcHJpdmF0ZSBTdHJpbmcgbmFtZTsKKwkKKwlATWFueVRvT25lKGZldGNoID0gRmV0Y2hUeXBlLkVBR0VSKQorCUBKb2luQ29sdW1uKG5hbWU9InVzZXJfaWQiLCBudWxsYWJsZT10cnVlKQorCUBGb3JlaWduS2V5KGVuYWJsZWQgPSB0cnVlKQorCXByaXZhdGUgVXNlciB1c2VyOworCQorCUBDb2x1bW4obmFtZT0ic3RhcnR0aW1lIikKKwlwcml2YXRlIERhdGUgc3RhcnR0aW1lOworCQorCUBDb2x1bW4obmFtZT0idXBkYXRldGltZSIpCisJcHJpdmF0ZSBEYXRlIHVwZGF0ZXRpbWU7CisJCisJQENvbHVtbihuYW1lPSJkZWxldGVkIikKKwlwcml2YXRlIGJvb2xlYW4gZGVsZXRlZDsKKwkKKwlATG9iCisJQENvbHVtbihuYW1lPSJjb21tZW50X2ZpZWxkIiwgbGVuZ3RoPTIwNDgpCisJcHJpdmF0ZSBTdHJpbmcgY29tbWVudDsKKwkKKwlwdWJsaWMgTG9uZyBnZXRDYXRlZ29yeUlkKCkgeworCQlyZXR1cm4gY2F0ZWdvcnlJZDsKKwl9CisJcHVibGljIHZvaWQgc2V0Q2F0ZWdvcnlJZChMb25nIGNhdGVnb3J5SWQpIHsKKwkJdGhpcy5jYXRlZ29yeUlkID0gY2F0ZWdvcnlJZDsKKwl9CisJCisJcHVibGljIFN0cmluZyBnZXROYW1lKCkgeworCQlyZXR1cm4gbmFtZTsKKwl9CisJcHVibGljIHZvaWQgc2V0TmFtZShTdHJpbmcgbmFtZSkgeworCQl0aGlzLm5hbWUgPSBuYW1lOworCX0KKwkKKwlwdWJsaWMgVXNlciBnZXRVc2VyKCkgeworCQlyZXR1cm4gdXNlcjsKKwl9CisJcHVibGljIHZvaWQgc2V0VXNlcihVc2VyIHVzZXIpIHsKKwkJdGhpcy51c2VyID0gdXNlcjsKKwl9CisJCisJcHVibGljIERhdGUgZ2V0U3RhcnR0aW1lKCkgeworCQlyZXR1cm4gc3RhcnR0aW1lOworCX0KKwlwdWJsaWMgdm9pZCBzZXRTdGFydHRpbWUoRGF0ZSBzdGFydHRpbWUpIHsKKwkJdGhpcy5zdGFydHRpbWUgPSBzdGFydHRpbWU7CisJfQorCQorCXB1YmxpYyBEYXRlIGdldFVwZGF0ZXRpbWUoKSB7CisJCXJldHVybiB1cGRhdGV0aW1lOworCX0KKwlwdWJsaWMgdm9pZCBzZXRVcGRhdGV0aW1lKERhdGUgdXBkYXRldGltZSkgeworCQl0aGlzLnVwZGF0ZXRpbWUgPSB1cGRhdGV0aW1lOworCX0KKwkKKwlwdWJsaWMgYm9vbGVhbiBnZXREZWxldGVkKCkgeworCQlyZXR1cm4gZGVsZXRlZDsKKwl9CisJcHVibGljIHZvaWQgc2V0RGVsZXRlZChib29sZWFuIGRlbGV0ZWQpIHsKKwkJdGhpcy5kZWxldGVkID0gZGVsZXRlZDsKKwl9CisJCisJcHVibGljIFN0cmluZyBnZXRDb21tZW50KCkgeworCQlyZXR1cm4gY29tbWVudDsKKwl9CisJcHVibGljIHZvaWQgc2V0Q29tbWVudChTdHJpbmcgY29tbWVudCkgeworCQl0aGlzLmNvbW1lbnQgPSBjb21tZW50OworCX0KKwkKKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL2NhbGVuZGFyL0FwcG9pbnRtZW50UmVtaW5kZXJUeXBzLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvY2FsZW5kYXIvQXBwb2ludG1lbnRSZW1pbmRlclR5cHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDdkNDU2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL2NhbGVuZGFyL0FwcG9pbnRtZW50UmVtaW5kZXJUeXBzLmphdmEKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuY2FsZW5kYXI7CisKK2ltcG9ydCBqYXZhLmlvLlNlcmlhbGl6YWJsZTsKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKKworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHk7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRmV0Y2hUeXBlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkdlbmVyYXRlZFZhbHVlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkdlbmVyYXRpb25UeXBlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLklkOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkpvaW5Db2x1bW47CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTWFueVRvT25lOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRhYmxlOworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVuanBhLnBlcnNpc3RlbmNlLmpkYmMuRm9yZWlnbktleTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlVzZXI7CisKKworQEVudGl0eQorQFRhYmxlKG5hbWUgPSAiYXBwb2ludG1lbnRyZW1pbmRlcnR5cHMiKQorcHVibGljIGNsYXNzIEFwcG9pbnRtZW50UmVtaW5kZXJUeXBzIGltcGxlbWVudHMgU2VyaWFsaXphYmxlIHsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAtNjU0MzU5Mzk5NTcwNjgzOTY2OUw7CisJQElkCisJQEdlbmVyYXRlZFZhbHVlKHN0cmF0ZWd5ID0gR2VuZXJhdGlvblR5cGUuSURFTlRJVFkpCisJQENvbHVtbihuYW1lPSJpZCIpCisJcHJpdmF0ZSBMb25nIHR5cElkOworCQorCUBDb2x1bW4obmFtZT0ibmFtZSIpCisJcHJpdmF0ZSBTdHJpbmcgbmFtZTsKKwkKKwlATWFueVRvT25lKGZldGNoID0gRmV0Y2hUeXBlLkVBR0VSKQorCUBKb2luQ29sdW1uKG5hbWU9InVzZXJfaWQiLCBudWxsYWJsZT10cnVlKQorCUBGb3JlaWduS2V5KGVuYWJsZWQgPSB0cnVlKQorCXByaXZhdGUgVXNlciB1c2VyOworCQorCUBDb2x1bW4obmFtZT0ic3RhcnR0aW1lIikKKwlwcml2YXRlIERhdGUgc3RhcnR0aW1lOworCQorCUBDb2x1bW4obmFtZT0idXBkYXRldGltZSIpCisJcHJpdmF0ZSBEYXRlIHVwZGF0ZXRpbWU7CisJCisJQENvbHVtbihuYW1lPSJkZWxldGVkIikKKwlwcml2YXRlIGJvb2xlYW4gZGVsZXRlZDsKKwkKKwlwdWJsaWMgTG9uZyBnZXRUeXBJZCgpIHsKKwkJcmV0dXJuIHR5cElkOworCX0KKwlwdWJsaWMgdm9pZCBzZXRUeXBJZChMb25nIHR5cElkKSB7CisJCXRoaXMudHlwSWQgPSB0eXBJZDsKKwl9CisJCisJcHVibGljIFN0cmluZyBnZXROYW1lKCkgeworCQlyZXR1cm4gbmFtZTsKKwl9CisJcHVibGljIHZvaWQgc2V0TmFtZShTdHJpbmcgbmFtZSkgeworCQl0aGlzLm5hbWUgPSBuYW1lOworCX0KKwkKKwlwdWJsaWMgVXNlciBnZXRVc2VyKCkgeworCQlyZXR1cm4gdXNlcjsKKwl9CisJcHVibGljIHZvaWQgc2V0VXNlcihVc2VyIHVzZXIpIHsKKwkJdGhpcy51c2VyID0gdXNlcjsKKwl9CisJCisJcHVibGljIERhdGUgZ2V0U3RhcnR0aW1lKCkgeworCQlyZXR1cm4gc3RhcnR0aW1lOworCX0KKwlwdWJsaWMgdm9pZCBzZXRTdGFydHRpbWUoRGF0ZSBzdGFydHRpbWUpIHsKKwkJdGhpcy5zdGFydHRpbWUgPSBzdGFydHRpbWU7CisJfQorCQorCXB1YmxpYyBEYXRlIGdldFVwZGF0ZXRpbWUoKSB7CisJCXJldHVybiB1cGRhdGV0aW1lOworCX0KKwlwdWJsaWMgdm9pZCBzZXRVcGRhdGV0aW1lKERhdGUgdXBkYXRldGltZSkgeworCQl0aGlzLnVwZGF0ZXRpbWUgPSB1cGRhdGV0aW1lOworCX0KKwkKKwlwdWJsaWMgYm9vbGVhbiBnZXREZWxldGVkKCkgeworCQlyZXR1cm4gZGVsZXRlZDsKKwl9CisJcHVibGljIHZvaWQgc2V0RGVsZXRlZChib29sZWFuIGRlbGV0ZWQpIHsKKwkJdGhpcy5kZWxldGVkID0gZGVsZXRlZDsKKwl9CisJCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvY2FsZW5kYXIvTWVldGluZ01lbWJlci5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL2NhbGVuZGFyL01lZXRpbmdNZW1iZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjU2NDZhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL2NhbGVuZGFyL01lZXRpbmdNZW1iZXIuamF2YQpAQCAtMCwwICsxLDIyOSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5jYWxlbmRhcjsKKworaW1wb3J0IGphdmEuaW8uU2VyaWFsaXphYmxlOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5GZXRjaFR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuR2VuZXJhdGVkVmFsdWU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuR2VuZXJhdGlvblR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSWQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSm9pbkNvbHVtbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5NYW55VG9PbmU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5qcGEucGVyc2lzdGVuY2UuamRiYy5Gb3JlaWduS2V5OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLk9tVGltZVpvbmU7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuaW52aXRhdGlvbi5JbnZpdGF0aW9uczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlVzZXI7CitpbXBvcnQgb3JnLnNpbXBsZWZyYW1ld29yay54bWwuRWxlbWVudDsKK2ltcG9ydCBvcmcuc2ltcGxlZnJhbWV3b3JrLnhtbC5Sb290OworCisKK0BFbnRpdHkKK0BUYWJsZShuYW1lID0gIm1lZXRpbmdfbWVtYmVycyIpCitAUm9vdChuYW1lPSJtZWV0aW5nbWVtYmVyIikKK3B1YmxpYyBjbGFzcyBNZWV0aW5nTWVtYmVyIGltcGxlbWVudHMgU2VyaWFsaXphYmxlIHsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAtMzg2NDU3MTMyNTM2ODc4NzUyNEw7CisJQElkCisJQEdlbmVyYXRlZFZhbHVlKHN0cmF0ZWd5ID0gR2VuZXJhdGlvblR5cGUuSURFTlRJVFkpCisJQENvbHVtbihuYW1lPSJpZCIpCisJQEVsZW1lbnQoZGF0YT10cnVlKQorCXByaXZhdGUgTG9uZyBtZWV0aW5nTWVtYmVySWQ7CisJCisJQE1hbnlUb09uZShmZXRjaCA9IEZldGNoVHlwZS5FQUdFUikKKwlASm9pbkNvbHVtbihuYW1lPSJ1c2VyX2lkIiwgbnVsbGFibGU9dHJ1ZSkKKwlARm9yZWlnbktleShlbmFibGVkID0gdHJ1ZSkKKwlARWxlbWVudChuYW1lPSJ1c2VyaWQiLCBkYXRhPXRydWUsIHJlcXVpcmVkPWZhbHNlKQorCXByaXZhdGUgVXNlciB1c2VyaWQ7CisJCisJQE1hbnlUb09uZShmZXRjaCA9IEZldGNoVHlwZS5FQUdFUikKKwlASm9pbkNvbHVtbihuYW1lPSJhcHBvaW50bWVudF9pZCIsIG51bGxhYmxlPXRydWUpCisJQEZvcmVpZ25LZXkoZW5hYmxlZCA9IHRydWUpCisJQEVsZW1lbnQoZGF0YT10cnVlLCByZXF1aXJlZD1mYWxzZSkKKwlwcml2YXRlIEFwcG9pbnRtZW50IGFwcG9pbnRtZW50OworCQorCUBDb2x1bW4obmFtZT0iZmlyc3RuYW1lIikKKwlARWxlbWVudChkYXRhPXRydWUsIHJlcXVpcmVkPWZhbHNlKQorCXByaXZhdGUgU3RyaW5nIGZpcnN0bmFtZTsKKwkKKwlAQ29sdW1uKG5hbWU9Imxhc3RuYW1lIikKKwlARWxlbWVudChkYXRhPXRydWUsIHJlcXVpcmVkPWZhbHNlKQorCXByaXZhdGUgU3RyaW5nIGxhc3RuYW1lOworCQorCUBDb2x1bW4obmFtZT0ibWVtYmVyX3N0YXR1cyIpCisJQEVsZW1lbnQoZGF0YT10cnVlLCByZXF1aXJlZD1mYWxzZSkKKwlwcml2YXRlIFN0cmluZyBtZW1iZXJTdGF0dXM7IC8vIGludGVybmFsLCBleHRlcm5hbC4KKwkKKwlAQ29sdW1uKG5hbWU9ImFwcG9pbnRtZW50X3N0YXR1cyIpCisJQEVsZW1lbnQoZGF0YT10cnVlLCByZXF1aXJlZD1mYWxzZSkKKwlwcml2YXRlIFN0cmluZyBhcHBvaW50bWVudFN0YXR1czsgLy9zdGF0dXMgb2YgdGhlIGFwcG9pbnRtZW50IGRlbmlhbCwgYWNjZXB0YW5jZSwgd2FpdC4KKwkKKwlAQ29sdW1uKG5hbWU9ImVtYWlsIikKKwlARWxlbWVudChkYXRhPXRydWUsIHJlcXVpcmVkPWZhbHNlKQorCXByaXZhdGUgU3RyaW5nIGVtYWlsOworCQorCUBDb2x1bW4obmFtZT0icGhvbmUiKQorCXByaXZhdGUgU3RyaW5nIHBob25lOworCQkJCisJQENvbHVtbihuYW1lPSJzdGFydHRpbWUiKQorCXByaXZhdGUgRGF0ZSBzdGFydHRpbWU7CisJCisJQENvbHVtbihuYW1lPSJ1cGRhdGV0aW1lIikKKwlwcml2YXRlIERhdGUgdXBkYXRldGltZTsKKwkKKwlAQ29sdW1uKG5hbWU9ImRlbGV0ZWQiKQorCUBFbGVtZW50KGRhdGE9dHJ1ZSkKKwlwcml2YXRlIGJvb2xlYW4gZGVsZXRlZDsKKwkKKwlAQ29sdW1uKG5hbWU9Imludml0b3IiKQorCUBFbGVtZW50KGRhdGE9dHJ1ZSkKKwlwcml2YXRlIEJvb2xlYW4gaW52aXRvcjsKKwkKKwkKKwlATWFueVRvT25lKGZldGNoID0gRmV0Y2hUeXBlLkVBR0VSKQorCUBKb2luQ29sdW1uKG5hbWU9Imludml0YXRpb24iLCBudWxsYWJsZT10cnVlLCBpbnNlcnRhYmxlPWZhbHNlKQorCUBGb3JlaWduS2V5KGVuYWJsZWQgPSB0cnVlKQorCXByaXZhdGUgSW52aXRhdGlvbnMgaW52aXRhdGlvbjsKKwlATWFueVRvT25lKGZldGNoID0gRmV0Y2hUeXBlLkVBR0VSKQorCUBKb2luQ29sdW1uKG5hbWU9Im9tdGltZXpvbmVJZCIsIG51bGxhYmxlPXRydWUsIGluc2VydGFibGU9dHJ1ZSkKKwlARm9yZWlnbktleShlbmFibGVkID0gdHJ1ZSkKKwlwcml2YXRlIE9tVGltZVpvbmUgb21UaW1lWm9uZTsKKwkKKwlAQ29sdW1uKG5hbWU9ImlzX2Nvbm5lY3RlZF9ldmVudCIpCisJcHJpdmF0ZSBCb29sZWFuIGlzQ29ubmVjdGVkRXZlbnQ7CisJCisJcHVibGljIExvbmcgZ2V0TWVldGluZ01lbWJlcklkKCkgeworCQlyZXR1cm4gbWVldGluZ01lbWJlcklkOworCX0KKwlwdWJsaWMgdm9pZCBzZXRNZWV0aW5nTWVtYmVySWQoTG9uZyBncm91cE1lbWJlcklkKSB7CisJCXRoaXMubWVldGluZ01lbWJlcklkID0gZ3JvdXBNZW1iZXJJZDsKKwl9CisJCisJcHVibGljIFVzZXIgZ2V0VXNlcmlkKCkgeworCQlyZXR1cm4gdXNlcmlkOworCX0KKwlwdWJsaWMgdm9pZCBzZXRVc2VyaWQoVXNlciB1c2VyaWQpIHsKKwkJdGhpcy51c2VyaWQgPSB1c2VyaWQ7CisJfQorCQorCXB1YmxpYyBTdHJpbmcgZ2V0RW1haWwoKSB7CisJCXJldHVybiBlbWFpbDsKKwl9CisJcHVibGljIHZvaWQgc2V0RW1haWwoU3RyaW5nIGVtYWlsKSB7CisJCXRoaXMuZW1haWwgPSBlbWFpbDsKKwl9CisJCisJcHVibGljIFN0cmluZyBnZXRQaG9uZSgpIHsKKwkJcmV0dXJuIHBob25lOworCX0KKwlwdWJsaWMgdm9pZCBzZXRQaG9uZShTdHJpbmcgcGhvbmUpIHsKKwkJdGhpcy5waG9uZSA9IHBob25lOworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0Rmlyc3RuYW1lKCkgeworCQlyZXR1cm4gZmlyc3RuYW1lOworCX0KKwlwdWJsaWMgdm9pZCBzZXRGaXJzdG5hbWUoU3RyaW5nIGZpcnN0bmFtZSkgeworCQl0aGlzLmZpcnN0bmFtZSA9IGZpcnN0bmFtZTsKKwl9CisJCisJcHVibGljIFN0cmluZyBnZXRMYXN0bmFtZSgpIHsKKwkJcmV0dXJuIGxhc3RuYW1lOworCX0KKwlwdWJsaWMgdm9pZCBzZXRMYXN0bmFtZShTdHJpbmcgbGFzdG5hbWUpIHsKKwkJdGhpcy5sYXN0bmFtZSA9IGxhc3RuYW1lOworCX0KKwkKKwlwdWJsaWMgU3RyaW5nIGdldE1lbWJlclN0YXR1cygpIHsKKwkJcmV0dXJuIG1lbWJlclN0YXR1czsKKwl9CisJcHVibGljIHZvaWQgc2V0TWVtYmVyU3RhdHVzKFN0cmluZyBtZW1iZXJTdGF0dXMpIHsKKwkJdGhpcy5tZW1iZXJTdGF0dXMgPSBtZW1iZXJTdGF0dXM7CisJfQorCQorICAgcHVibGljIFN0cmluZyBnZXRBcHBvaW50bWVudFN0YXR1cygpIHsKKwkJcmV0dXJuIGFwcG9pbnRtZW50U3RhdHVzOworCX0KKwlwdWJsaWMgdm9pZCBzZXRBcHBvaW50bWVudFN0YXR1cyhTdHJpbmcgYXBwb2ludG1lbnRTdGF0dXMpIHsKKwkJdGhpcy5hcHBvaW50bWVudFN0YXR1cyA9IGFwcG9pbnRtZW50U3RhdHVzOworCX0KKwkKKwkKKwlwdWJsaWMgQXBwb2ludG1lbnQgZ2V0QXBwb2ludG1lbnQoKSB7CisJCXJldHVybiBhcHBvaW50bWVudDsKKwl9CisJcHVibGljIHZvaWQgc2V0QXBwb2ludG1lbnQoQXBwb2ludG1lbnQgYXBwb2ludG1lbnQpIHsKKwkJdGhpcy5hcHBvaW50bWVudCA9IGFwcG9pbnRtZW50OworCX0KKwkKKwkKKwlwdWJsaWMgSW52aXRhdGlvbnMgZ2V0SW52aXRhdGlvbigpIHsKKwkJcmV0dXJuIGludml0YXRpb247CisJfQorCXB1YmxpYyB2b2lkIHNldEludml0YXRpb24oSW52aXRhdGlvbnMgaW52aXRhdGlvbikgeworCQl0aGlzLmludml0YXRpb24gPSBpbnZpdGF0aW9uOworCX0KKwlwdWJsaWMgRGF0ZSBnZXRTdGFydHRpbWUoKSB7CisJCXJldHVybiBzdGFydHRpbWU7CisJfQorCXB1YmxpYyB2b2lkIHNldFN0YXJ0dGltZShEYXRlIHN0YXJ0dGltZSkgeworCQl0aGlzLnN0YXJ0dGltZSA9IHN0YXJ0dGltZTsKKwl9CisJCisJcHVibGljIERhdGUgZ2V0VXBkYXRldGltZSgpIHsKKwkJcmV0dXJuIHVwZGF0ZXRpbWU7CisJfQorCXB1YmxpYyB2b2lkIHNldFVwZGF0ZXRpbWUoRGF0ZSB1cGRhdGV0aW1lKSB7CisJCXRoaXMudXBkYXRldGltZSA9IHVwZGF0ZXRpbWU7CisJfQorCQorCXB1YmxpYyBib29sZWFuIGdldERlbGV0ZWQoKSB7CisJCXJldHVybiBkZWxldGVkOworCX0KKwlwdWJsaWMgdm9pZCBzZXREZWxldGVkKGJvb2xlYW4gZGVsZXRlZCkgeworCQl0aGlzLmRlbGV0ZWQgPSBkZWxldGVkOworCX0KKwkKKwlwdWJsaWMgQm9vbGVhbiBnZXRJbnZpdG9yKCkgeworCQlyZXR1cm4gaW52aXRvcjsKKwl9CisJcHVibGljIHZvaWQgc2V0SW52aXRvcihCb29sZWFuIGludml0b3IpIHsKKwkJdGhpcy5pbnZpdG9yID0gaW52aXRvcjsKKwl9CisKKwlwdWJsaWMgT21UaW1lWm9uZSBnZXRPbVRpbWVab25lKCkgeworCQlyZXR1cm4gb21UaW1lWm9uZTsKKwl9CisJcHVibGljIHZvaWQgc2V0T21UaW1lWm9uZShPbVRpbWVab25lIG9tVGltZVpvbmUpIHsKKwkJdGhpcy5vbVRpbWVab25lID0gb21UaW1lWm9uZTsKKwl9CisJCisJcHVibGljIEJvb2xlYW4gZ2V0SXNDb25uZWN0ZWRFdmVudCgpIHsKKwkJcmV0dXJuIGlzQ29ubmVjdGVkRXZlbnQ7CisJfQorCXB1YmxpYyB2b2lkIHNldElzQ29ubmVjdGVkRXZlbnQoQm9vbGVhbiBpc0Nvbm5lY3RlZEV2ZW50KSB7CisJCXRoaXMuaXNDb25uZWN0ZWRFdmVudCA9IGlzQ29ubmVjdGVkRXZlbnQ7CisJfQorCQorCQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL2NoYXQvQ2hhdE1lc3NhZ2UuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9jaGF0L0NoYXRNZXNzYWdlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmM5MmZiOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9jaGF0L0NoYXRNZXNzYWdlLmphdmEKQEAgLTAsMCArMSwxODEgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuY2hhdDsKKworaW1wb3J0IGphdmEuaW8uU2VyaWFsaXphYmxlOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5HZW5lcmF0ZWRWYWx1ZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5HZW5lcmF0aW9uVHlwZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5JZDsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Kb2luQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk1hbnlUb09uZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5OYW1lZFF1ZXJpZXM7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTmFtZWRRdWVyeTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UYWJsZTsKKworaW1wb3J0IG9yZy5hcGFjaGUub3BlbmpwYS5wZXJzaXN0ZW5jZS5qZGJjLkZvcmVpZ25LZXk7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuSURhdGFQcm92aWRlckVudGl0eTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tLlJvb207CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlci5Vc2VyOworaW1wb3J0IG9yZy5zaW1wbGVmcmFtZXdvcmsueG1sLkVsZW1lbnQ7CitpbXBvcnQgb3JnLnNpbXBsZWZyYW1ld29yay54bWwuUm9vdDsKKworQEVudGl0eQorQE5hbWVkUXVlcmllcyh7CisJQE5hbWVkUXVlcnkobmFtZSA9ICJnZXRDaGF0TWVzc2FnZUJ5SWQiLCBxdWVyeSA9ICJTRUxFQ1QgYyBGUk9NIENoYXRNZXNzYWdlIGMgV0hFUkUgYy5pZCA9IDppZCIpCisJLCBATmFtZWRRdWVyeShuYW1lID0gImdldENoYXRNZXNzYWdlc0J5VXNlciIsIHF1ZXJ5ID0gIlNFTEVDVCBESVNUSU5DVCBjIEZST00gQ2hhdE1lc3NhZ2UgYyBXSEVSRSBjLmZyb21Vc2VyLnVzZXJfaWQgPSA6dXNlcklkIE9SIGMudG9Vc2VyLnVzZXJfaWQgPSA6dXNlcklkIE9SREVSIEJZIGMuc2VudCBERVNDIikKKwksIEBOYW1lZFF1ZXJ5KG5hbWUgPSAiZ2V0R2xvYmFsQ2hhdE1lc3NhZ2VzIiwgcXVlcnkgPSAiU0VMRUNUIERJU1RJTkNUIGMgRlJPTSBDaGF0TWVzc2FnZSBjIFdIRVJFIGMudG9Vc2VyIElTIE5VTEwgT1JERVIgQlkgYy5zZW50IERFU0MiKQorfSlAVGFibGUobmFtZSA9ICJjaGF0IikKK0BSb290KG5hbWUgPSAiQ2hhdE1lc3NhZ2UiKQorcHVibGljIGNsYXNzIENoYXRNZXNzYWdlIGltcGxlbWVudHMgU2VyaWFsaXphYmxlLCBJRGF0YVByb3ZpZGVyRW50aXR5IHsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSA0MjQ4MDgxOTk3MzE4ODk3NjA1TDsKKworCUBJZAorCUBHZW5lcmF0ZWRWYWx1ZShzdHJhdGVneSA9IEdlbmVyYXRpb25UeXBlLklERU5USVRZKQorCUBDb2x1bW4obmFtZSA9ICJpZCIpCisJQEVsZW1lbnQobmFtZSA9ICJpZCIsIGRhdGEgPSB0cnVlKQorCXByaXZhdGUgbG9uZyBpZDsKKworCUBNYW55VG9PbmUKKwlASm9pbkNvbHVtbihuYW1lID0gImZyb21fdXNlcl9pZCIpCisJQEVsZW1lbnQobmFtZSA9ICJmcm9tVXNlcklkIiwgZGF0YSA9IHRydWUsIHJlcXVpcmVkID0gZmFsc2UpCisJQEZvcmVpZ25LZXkoZW5hYmxlZCA9IHRydWUpCisJcHJpdmF0ZSBVc2VyIGZyb21Vc2VyOworCQorCS8vIG5lY2Vzc2FyeSB0byBob2xkIG1lc3NhZ2VzIGZyb20gZXh0ZXJuYWwgZ3Vlc3RzIGVudGVycyBieSBpbnZpdGF0aW9uIGhhc2gKKwlAQ29sdW1uKG5hbWUgPSAiZnJvbV9lbWFpbCIpCisJQEVsZW1lbnQobmFtZSA9ICJmcm9tRW1haWwiLCBkYXRhID0gdHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIFN0cmluZyBmcm9tRW1haWw7CisJCisJQENvbHVtbihuYW1lID0gImZyb21fbmFtZSIpCisJQEVsZW1lbnQobmFtZSA9ICJmcm9tTmFtZSIsIGRhdGEgPSB0cnVlLCByZXF1aXJlZCA9IGZhbHNlKQorCXByaXZhdGUgU3RyaW5nIGZyb21OYW1lOworCQorCUBNYW55VG9PbmUKKwlASm9pbkNvbHVtbihuYW1lID0gInRvX3Jvb21faWQiKQorCUBFbGVtZW50KG5hbWUgPSAidG9Sb29tSWQiLCBkYXRhID0gdHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlARm9yZWlnbktleShlbmFibGVkID0gdHJ1ZSkKKwlwcml2YXRlIFJvb20gdG9Sb29tOworCQorCUBNYW55VG9PbmUKKwlASm9pbkNvbHVtbihuYW1lID0gInRvX3VzZXJfaWQiKQorCUBFbGVtZW50KG5hbWUgPSAidG9Vc2VySWQiLCBkYXRhID0gdHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlARm9yZWlnbktleShlbmFibGVkID0gdHJ1ZSkKKwlwcml2YXRlIFVzZXIgdG9Vc2VyOworCisJLy8gbmVjZXNzYXJ5IHRvIGhvbGQgbWVzc2FnZXMgdG8gZXh0ZXJuYWwgZ3Vlc3RzIGVudGVycyBieSBpbnZpdGF0aW9uIGhhc2gKKwlAQ29sdW1uKG5hbWUgPSAidG9fZW1haWwiKQorCUBFbGVtZW50KG5hbWUgPSAidG9FbWFpbCIsIGRhdGEgPSB0cnVlLCByZXF1aXJlZCA9IGZhbHNlKQorCXByaXZhdGUgU3RyaW5nIHRvRW1haWw7CisKKwlAQ29sdW1uKG5hbWUgPSAidG9fbmFtZSIpCisJQEVsZW1lbnQobmFtZSA9ICJ0b05hbWUiLCBkYXRhID0gdHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIFN0cmluZyB0b05hbWU7CisJCisJQENvbHVtbihuYW1lID0gIm1lc3NhZ2UiKQorCUBFbGVtZW50KG5hbWUgPSAibWVzc2FnZSIsIGRhdGEgPSB0cnVlLCByZXF1aXJlZCA9IGZhbHNlKQorCXByaXZhdGUgU3RyaW5nIG1lc3NhZ2U7CisJCisJQENvbHVtbihuYW1lID0gInNlbnQiKQorCUBFbGVtZW50KG5hbWUgPSAic2VudCIsIGRhdGEgPSB0cnVlLCByZXF1aXJlZCA9IGZhbHNlKQorCXByaXZhdGUgRGF0ZSBzZW50OworCisJcHVibGljIGxvbmcgZ2V0SWQoKSB7CisJCXJldHVybiBpZDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRJZChsb25nIGlkKSB7CisJCXRoaXMuaWQgPSBpZDsKKwl9CisKKwlwdWJsaWMgVXNlciBnZXRGcm9tVXNlcigpIHsKKwkJcmV0dXJuIGZyb21Vc2VyOworCX0KKworCXB1YmxpYyB2b2lkIHNldEZyb21Vc2VyKFVzZXIgZnJvbVVzZXIpIHsKKwkJdGhpcy5mcm9tVXNlciA9IGZyb21Vc2VyOworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0RnJvbUVtYWlsKCkgeworCQlyZXR1cm4gZnJvbUVtYWlsOworCX0KKworCXB1YmxpYyB2b2lkIHNldEZyb21FbWFpbChTdHJpbmcgZnJvbUVtYWlsKSB7CisJCXRoaXMuZnJvbUVtYWlsID0gZnJvbUVtYWlsOworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0RnJvbU5hbWUoKSB7CisJCXJldHVybiBmcm9tTmFtZTsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRGcm9tTmFtZShTdHJpbmcgZnJvbU5hbWUpIHsKKwkJdGhpcy5mcm9tTmFtZSA9IGZyb21OYW1lOworCX0KKworCXB1YmxpYyBSb29tIGdldFRvUm9vbSgpIHsKKwkJcmV0dXJuIHRvUm9vbTsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRUb1Jvb20oUm9vbSB0b1Jvb20pIHsKKwkJdGhpcy50b1Jvb20gPSB0b1Jvb207CisJfQorCisJcHVibGljIFVzZXIgZ2V0VG9Vc2VyKCkgeworCQlyZXR1cm4gdG9Vc2VyOworCX0KKworCXB1YmxpYyB2b2lkIHNldFRvVXNlcihVc2VyIHRvVXNlcikgeworCQl0aGlzLnRvVXNlciA9IHRvVXNlcjsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGdldFRvRW1haWwoKSB7CisJCXJldHVybiB0b0VtYWlsOworCX0KKworCXB1YmxpYyB2b2lkIHNldFRvRW1haWwoU3RyaW5nIHRvRW1haWwpIHsKKwkJdGhpcy50b0VtYWlsID0gdG9FbWFpbDsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGdldFRvTmFtZSgpIHsKKwkJcmV0dXJuIHRvTmFtZTsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRUb05hbWUoU3RyaW5nIHRvTmFtZSkgeworCQl0aGlzLnRvTmFtZSA9IHRvTmFtZTsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGdldE1lc3NhZ2UoKSB7CisJCXJldHVybiBtZXNzYWdlOworCX0KKworCXB1YmxpYyB2b2lkIHNldE1lc3NhZ2UoU3RyaW5nIG1lc3NhZ2UpIHsKKwkJdGhpcy5tZXNzYWdlID0gbWVzc2FnZTsKKwl9CisKKwlwdWJsaWMgRGF0ZSBnZXRTZW50KCkgeworCQlyZXR1cm4gc2VudDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRTZW50KERhdGUgc2VudCkgeworCQl0aGlzLnNlbnQgPSBzZW50OworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9kb21haW4vT3JnYW5pc2F0aW9uLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvZG9tYWluL09yZ2FuaXNhdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY1OTJmMzkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvZG9tYWluL09yZ2FuaXNhdGlvbi5qYXZhCkBAIC0wLDAgKzEsMTI5IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmRvbWFpbjsKKworaW1wb3J0IGphdmEuaW8uU2VyaWFsaXphYmxlOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5HZW5lcmF0ZWRWYWx1ZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5HZW5lcmF0aW9uVHlwZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5JZDsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5OYW1lZFF1ZXJpZXM7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTmFtZWRRdWVyeTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UYWJsZTsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLklEYXRhUHJvdmlkZXJFbnRpdHk7CitpbXBvcnQgb3JnLnNpbXBsZWZyYW1ld29yay54bWwuRWxlbWVudDsKK2ltcG9ydCBvcmcuc2ltcGxlZnJhbWV3b3JrLnhtbC5Sb290OworCitARW50aXR5CitATmFtZWRRdWVyaWVzKHsKKwlATmFtZWRRdWVyeShuYW1lPSJnZXRPcmdhbmlzYXRpb25CeUlkIiwKKwkJcXVlcnk9IlNFTEVDVCBjIEZST00gT3JnYW5pc2F0aW9uIEFTIGMgV0hFUkUgYy5vcmdhbmlzYXRpb25faWQgPSA6b3JnYW5pc2F0aW9uX2lkIEFORCBjLmRlbGV0ZWQgPSA6ZGVsZXRlZCIpCisJLCBATmFtZWRRdWVyeShuYW1lPSJnZXRBbnlPcmdhbmlzYXRpb25CeUlkIiwKKwkJcXVlcnk9IlNFTEVDVCBjIEZST00gT3JnYW5pc2F0aW9uIEFTIGMgV0hFUkUgYy5vcmdhbmlzYXRpb25faWQgPSA6b3JnYW5pc2F0aW9uX2lkIikKKwksIEBOYW1lZFF1ZXJ5KG5hbWU9ImdldE9yZ2FuaXNhdGlvbnNCeVVzZXJJZCIsCisJCXF1ZXJ5PSJTRUxFQ1Qgb3Uub3JnYW5pc2F0aW9uIEZST00gVXNlciB1LCBJTih1Lm9yZ2FuaXNhdGlvbl91c2Vycykgb3UgV0hFUkUgdS5kZWxldGVkID0gZmFsc2UgQU5EIHUudXNlcl9pZCA9IDp1c2VyX2lkIikKKwksIEBOYW1lZFF1ZXJ5KG5hbWU9ImdldE5vbmRlbGV0ZWRPcmdhbmlzYXRpb25zIiwgcXVlcnk9IlNFTEVDVCB1IEZST00gT3JnYW5pc2F0aW9uIHUgV0hFUkUgdS5kZWxldGVkID0gZmFsc2UiKQorCSwgQE5hbWVkUXVlcnkobmFtZT0iY291bnRPcmdhbmlzYXRpb25zIiwgcXVlcnk9IlNFTEVDVCBDT1VOVChjKSBGUk9NIE9yZ2FuaXNhdGlvbiBBUyBjIFdIRVJFIGMuZGVsZXRlZCA9IGZhbHNlIikKK30pCitAVGFibGUobmFtZSA9ICJvcmdhbmlzYXRpb24iKQorQFJvb3QobmFtZT0ib3JnYW5pc2F0aW9uIikKK3B1YmxpYyBjbGFzcyBPcmdhbmlzYXRpb24gaW1wbGVtZW50cyBTZXJpYWxpemFibGUsIElEYXRhUHJvdmlkZXJFbnRpdHkgeworCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDk5MTIzNTgwMjY0MDY1NjU0TDsKKwkKKwlASWQKKwlAR2VuZXJhdGVkVmFsdWUoc3RyYXRlZ3kgPSBHZW5lcmF0aW9uVHlwZS5JREVOVElUWSkKKwlAQ29sdW1uKG5hbWU9ImlkIikKKwlARWxlbWVudChkYXRhPXRydWUpCisJcHJpdmF0ZSBMb25nIG9yZ2FuaXNhdGlvbl9pZDsKKwkKKwlAQ29sdW1uKG5hbWU9Im5hbWUiKQorCUBFbGVtZW50KGRhdGE9dHJ1ZSkKKwlwcml2YXRlIFN0cmluZyBuYW1lOworCQorCUBDb2x1bW4obmFtZT0iaW5zZXJ0ZWRieSIpCisJcHJpdmF0ZSBMb25nIGluc2VydGVkYnk7CisJCisJQENvbHVtbihuYW1lPSJ1cGRhdGVkYnkiKQorCXByaXZhdGUgTG9uZyB1cGRhdGVkYnk7CisJCisJQENvbHVtbihuYW1lPSJzdGFydHRpbWUiKQorCXByaXZhdGUgRGF0ZSBzdGFydHRpbWU7CisJCisJQENvbHVtbihuYW1lPSJ1cGRhdGV0aW1lIikKKwlwcml2YXRlIERhdGUgdXBkYXRldGltZTsKKwkKKwlAQ29sdW1uKG5hbWU9ImRlbGV0ZWQiKQorCUBFbGVtZW50KGRhdGE9dHJ1ZSkKKwlwcml2YXRlIGJvb2xlYW4gZGVsZXRlZDsKKwkKKworCXB1YmxpYyBMb25nIGdldEluc2VydGVkYnkoKSB7CisJCXJldHVybiBpbnNlcnRlZGJ5OworCX0KKwlwdWJsaWMgdm9pZCBzZXRJbnNlcnRlZGJ5KExvbmcgaW5zZXJ0ZWRieSkgeworCQl0aGlzLmluc2VydGVkYnkgPSBpbnNlcnRlZGJ5OworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpIHsKKwkJcmV0dXJuIG5hbWU7CisJfQorCXB1YmxpYyB2b2lkIHNldE5hbWUoU3RyaW5nIG5hbWUpIHsKKwkJdGhpcy5uYW1lID0gbmFtZTsKKwl9CisKKwlwdWJsaWMgTG9uZyBnZXRPcmdhbmlzYXRpb25faWQoKSB7CisJCXJldHVybiBvcmdhbmlzYXRpb25faWQ7CisJfQorCXB1YmxpYyB2b2lkIHNldE9yZ2FuaXNhdGlvbl9pZChMb25nIG9yZ2FuaXNhdGlvbl9pZCkgeworCQl0aGlzLm9yZ2FuaXNhdGlvbl9pZCA9IG9yZ2FuaXNhdGlvbl9pZDsKKwl9CisKKwlwdWJsaWMgTG9uZyBnZXRVcGRhdGVkYnkoKSB7CisJCXJldHVybiB1cGRhdGVkYnk7CisJfQorCXB1YmxpYyB2b2lkIHNldFVwZGF0ZWRieShMb25nIHVwZGF0ZWRieSkgeworCQl0aGlzLnVwZGF0ZWRieSA9IHVwZGF0ZWRieTsKKwl9CQorCQorICAgIAorCXB1YmxpYyBEYXRlIGdldFN0YXJ0dGltZSgpIHsKKwkJcmV0dXJuIHN0YXJ0dGltZTsKKwl9CisJcHVibGljIHZvaWQgc2V0U3RhcnR0aW1lKERhdGUgc3RhcnR0aW1lKSB7CisJCXRoaXMuc3RhcnR0aW1lID0gc3RhcnR0aW1lOworCX0KKyAgICAKKwlwdWJsaWMgRGF0ZSBnZXRVcGRhdGV0aW1lKCkgeworCQlyZXR1cm4gdXBkYXRldGltZTsKKwl9CisJcHVibGljIHZvaWQgc2V0VXBkYXRldGltZShEYXRlIHVwZGF0ZXRpbWUpIHsKKwkJdGhpcy51cGRhdGV0aW1lID0gdXBkYXRldGltZTsKKwl9CisJCisJcHVibGljIGJvb2xlYW4gZ2V0RGVsZXRlZCgpIHsKKwkJcmV0dXJuIGRlbGV0ZWQ7CisJfQorCXB1YmxpYyB2b2lkIHNldERlbGV0ZWQoYm9vbGVhbiBkZWxldGVkKSB7CisJCXRoaXMuZGVsZXRlZCA9IGRlbGV0ZWQ7CisJfQkKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9kb21haW4vT3JnYW5pc2F0aW9uX1VzZXJzLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvZG9tYWluL09yZ2FuaXNhdGlvbl9Vc2Vycy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkNDdkOGEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvZG9tYWluL09yZ2FuaXNhdGlvbl9Vc2Vycy5qYXZhCkBAIC0wLDAgKzEsMTkzIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmRvbWFpbjsKKworaW1wb3J0IGphdmEuaW8uU2VyaWFsaXphYmxlOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5GZXRjaFR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuR2VuZXJhdGVkVmFsdWU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuR2VuZXJhdGlvblR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSWQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSm9pbkNvbHVtbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5NYW55VG9PbmU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTmFtZWRRdWVyaWVzOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk5hbWVkUXVlcnk7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5qcGEucGVyc2lzdGVuY2UuamRiYy5Gb3JlaWduS2V5OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLklEYXRhUHJvdmlkZXJFbnRpdHk7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlci5Vc2VyOworaW1wb3J0IG9yZy5zaW1wbGVmcmFtZXdvcmsueG1sLkVsZW1lbnQ7CitpbXBvcnQgb3JnLnNpbXBsZWZyYW1ld29yay54bWwuUm9vdDsKKworQEVudGl0eQorQE5hbWVkUXVlcmllcyh7CisJQE5hbWVkUXVlcnkobmFtZT0iZ2V0T3JnYW5pc2F0aW9uX1VzZXJCeVVzZXJBbmRPcmdhbmlzYXRpb24iLAorCQlxdWVyeT0iU0VMRUNUIG91IEZST00gVXNlciB1LCBJTih1Lm9yZ2FuaXNhdGlvbl91c2Vycykgb3UgV0hFUkUgdS5kZWxldGVkID0gZmFsc2UgQU5EIHUudXNlcl9pZCA9IDp1c2VyX2lkIEFORCBvdS5vcmdhbmlzYXRpb24ub3JnYW5pc2F0aW9uX2lkID0gOm9yZ2FuaXNhdGlvbl9pZCIpCisJLCBATmFtZWRRdWVyeShuYW1lPSJkZWxldGVVc2Vyc0Zyb21PcmdhbmlzYXRpb24iLCBxdWVyeT0iREVMRVRFIEZST00gT3JnYW5pc2F0aW9uX1VzZXJzIGMgV0hFUkUgYy5vcmdhbmlzYXRpb24ub3JnYW5pc2F0aW9uX2lkID0gOmlkIikKKwksIEBOYW1lZFF1ZXJ5KG5hbWU9ImNvdW50T3JnYW5pc2F0aW9uVXNlcnMiLCBxdWVyeT0iU0VMRUNUIENPVU5UKGMpIEZST00gT3JnYW5pc2F0aW9uX1VzZXJzIGMgV0hFUkUgYy5vcmdhbmlzYXRpb24ub3JnYW5pc2F0aW9uX2lkID0gOmlkIikKKwksIEBOYW1lZFF1ZXJ5KG5hbWU9ImdldE9yZ2FuaXNhdGlvblVzZXJzQnlJZCIsIHF1ZXJ5PSJTRUxFQ1QgYyBGUk9NIE9yZ2FuaXNhdGlvbl9Vc2VycyBjIFdIRVJFIGMub3JnYW5pc2F0aW9uX3VzZXJzX2lkID0gOmlkIikKKwksIEBOYW1lZFF1ZXJ5KG5hbWU9ImdldE9yZ2FuaXNhdGlvblVzZXJzQnlPcmdJZCIsIHF1ZXJ5PSJTRUxFQ1QgYyBGUk9NIE9yZ2FuaXNhdGlvbl9Vc2VycyBjIFdIRVJFIGMub3JnYW5pc2F0aW9uLm9yZ2FuaXNhdGlvbl9pZCA9IDppZCIpCit9KQorQFRhYmxlKG5hbWUgPSAib3JnYW5pc2F0aW9uX3VzZXJzIikKK0BSb290KG5hbWU9InVzZXJfb3JnYW5pc2F0aW9uIikKK3B1YmxpYyBjbGFzcyBPcmdhbmlzYXRpb25fVXNlcnMgaW1wbGVtZW50cyBTZXJpYWxpemFibGUsIElEYXRhUHJvdmlkZXJFbnRpdHkgeworCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDcyMDY4NzA0NjU5MDMzNzU4MTdMOworCUBJZAorCUBHZW5lcmF0ZWRWYWx1ZShzdHJhdGVneSA9IEdlbmVyYXRpb25UeXBlLklERU5USVRZKQorCUBDb2x1bW4obmFtZSA9ICJpZCIpCisJcHJpdmF0ZSBMb25nIG9yZ2FuaXNhdGlvbl91c2Vyc19pZDsKKworCUBNYW55VG9PbmUoZmV0Y2ggPSBGZXRjaFR5cGUuRUFHRVIpCisJQEpvaW5Db2x1bW4obmFtZSA9ICJvcmdhbmlzYXRpb25faWQiLCBpbnNlcnRhYmxlID0gdHJ1ZSwgdXBkYXRhYmxlID0gdHJ1ZSkKKwlARm9yZWlnbktleShlbmFibGVkID0gdHJ1ZSkKKwlARWxlbWVudChuYW1lPSJvcmdhbmlzYXRpb25faWQiLCByZXF1aXJlZD1mYWxzZSkKKwlwcml2YXRlIE9yZ2FuaXNhdGlvbiBvcmdhbmlzYXRpb247CisKKwkvLyBGSVhNRTogRG9lcyBub3QgZ2V0IHVwZGF0ZWQgaWYgYSBuZXcgcmVsYXRpb24gaXMgc3RvcmVkIGluIHRoZSB1c2VyCisJQENvbHVtbihuYW1lID0gInVzZXJfaWQiKQorCXByaXZhdGUgTG9uZyB1c2VyX2lkOworCisJQE1hbnlUb09uZShmZXRjaCA9IEZldGNoVHlwZS5FQUdFUikKKwlASm9pbkNvbHVtbihuYW1lID0gInVzZXJfaWQiLCBpbnNlcnRhYmxlID0gdHJ1ZSwgdXBkYXRhYmxlID0gdHJ1ZSkKKwlARm9yZWlnbktleShlbmFibGVkID0gdHJ1ZSkKKwlwcml2YXRlIFVzZXIgdXNlcjsKKwkKKwlAQ29sdW1uKG5hbWUgPSAic3RhcnR0aW1lIikKKwlwcml2YXRlIERhdGUgc3RhcnR0aW1lOworCQorCUBDb2x1bW4obmFtZSA9ICJ1cGRhdGV0aW1lIikKKwlwcml2YXRlIERhdGUgdXBkYXRldGltZTsKKwkKKwlAQ29sdW1uKG5hbWUgPSAiZGVsZXRlZCIpCisJQEVsZW1lbnQoZGF0YT10cnVlKQorCXByaXZhdGUgYm9vbGVhbiBkZWxldGVkOworCQorCUBDb2x1bW4obmFtZSA9ICJpc19tb2RlcmF0b3IiKQorCUBFbGVtZW50KGRhdGE9dHJ1ZSwgcmVxdWlyZWQ9ZmFsc2UpCisJcHJpdmF0ZSBCb29sZWFuIGlzTW9kZXJhdG9yOworCQorCXB1YmxpYyBPcmdhbmlzYXRpb25fVXNlcnMoKSB7CisJfQorCQorCXB1YmxpYyBPcmdhbmlzYXRpb25fVXNlcnMoT3JnYW5pc2F0aW9uIG9yZ2FuaXNhdGlvbikgeworCQl0aGlzLm9yZ2FuaXNhdGlvbiA9IG9yZ2FuaXNhdGlvbjsKKwl9CisJCisJcHVibGljIE9yZ2FuaXNhdGlvbiBnZXRPcmdhbmlzYXRpb24oKSB7CisJCXJldHVybiBvcmdhbmlzYXRpb247CisJfQorCisJcHVibGljIHZvaWQgc2V0T3JnYW5pc2F0aW9uKE9yZ2FuaXNhdGlvbiBvcmdhbmlzYXRpb24pIHsKKwkJdGhpcy5vcmdhbmlzYXRpb24gPSBvcmdhbmlzYXRpb247CisJfQorCisJcHVibGljIExvbmcgZ2V0T3JnYW5pc2F0aW9uX3VzZXJzX2lkKCkgeworCQlyZXR1cm4gb3JnYW5pc2F0aW9uX3VzZXJzX2lkOworCX0KKworCXB1YmxpYyB2b2lkIHNldE9yZ2FuaXNhdGlvbl91c2Vyc19pZChMb25nIG9yZ2FuaXNhdGlvbl91c2Vyc19pZCkgeworCQl0aGlzLm9yZ2FuaXNhdGlvbl91c2Vyc19pZCA9IG9yZ2FuaXNhdGlvbl91c2Vyc19pZDsKKwl9CisKKwlwdWJsaWMgTG9uZyBnZXRVc2VyX2lkKCkgeworCQlyZXR1cm4gdXNlcl9pZDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRVc2VyX2lkKExvbmcgdXNlcl9pZCkgeworCQl0aGlzLnVzZXJfaWQgPSB1c2VyX2lkOworCX0KKworCXB1YmxpYyBEYXRlIGdldFN0YXJ0dGltZSgpIHsKKwkJcmV0dXJuIHN0YXJ0dGltZTsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRTdGFydHRpbWUoRGF0ZSBzdGFydHRpbWUpIHsKKwkJdGhpcy5zdGFydHRpbWUgPSBzdGFydHRpbWU7CisJfQorCisJcHVibGljIERhdGUgZ2V0VXBkYXRldGltZSgpIHsKKwkJcmV0dXJuIHVwZGF0ZXRpbWU7CisJfQorCisJcHVibGljIHZvaWQgc2V0VXBkYXRldGltZShEYXRlIHVwZGF0ZXRpbWUpIHsKKwkJdGhpcy51cGRhdGV0aW1lID0gdXBkYXRldGltZTsKKwl9CisKKwlwdWJsaWMgYm9vbGVhbiBnZXREZWxldGVkKCkgeworCQlyZXR1cm4gZGVsZXRlZDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXREZWxldGVkKGJvb2xlYW4gZGVsZXRlZCkgeworCQl0aGlzLmRlbGV0ZWQgPSBkZWxldGVkOworCX0KKworCXB1YmxpYyBCb29sZWFuIGdldElzTW9kZXJhdG9yKCkgeworCQlyZXR1cm4gaXNNb2RlcmF0b3I7CisJfQorCisJcHVibGljIHZvaWQgc2V0SXNNb2RlcmF0b3IoQm9vbGVhbiBpc01vZGVyYXRvcikgeworCQl0aGlzLmlzTW9kZXJhdG9yID0gaXNNb2RlcmF0b3I7CisJfQorCisJQE92ZXJyaWRlCisJcHVibGljIGludCBoYXNoQ29kZSgpIHsKKwkJZmluYWwgaW50IHByaW1lID0gMzE7CisJCWludCByZXN1bHQgPSAxOworCQlyZXN1bHQgPSBwcmltZQorCQkJCSogcmVzdWx0CisJCQkJKyAoKG9yZ2FuaXNhdGlvbl91c2Vyc19pZCA9PSBudWxsKSA/IDAgOiBvcmdhbmlzYXRpb25fdXNlcnNfaWQKKwkJCQkJCS5oYXNoQ29kZSgpKTsKKwkJcmV0dXJuIHJlc3VsdDsKKwl9CisKKwlAT3ZlcnJpZGUKKwlwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG9iaikgeworCQlpZiAodGhpcyA9PSBvYmopIHsKKwkJCXJldHVybiB0cnVlOworCQl9CisJCWlmIChvYmogPT0gbnVsbCkgeworCQkJcmV0dXJuIGZhbHNlOworCQl9CisJCWlmIChvYmogaW5zdGFuY2VvZiBPcmdhbmlzYXRpb25fVXNlcnMpIHsKKwkJCU9yZ2FuaXNhdGlvbl9Vc2VycyBvdGhlciA9IChPcmdhbmlzYXRpb25fVXNlcnMpIG9iajsKKwkJCWlmIChvcmdhbmlzYXRpb25fdXNlcnNfaWQgPT0gbnVsbCkgeworCQkJCWlmIChvdGhlci5vcmdhbmlzYXRpb25fdXNlcnNfaWQgIT0gbnVsbCkgeworCQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJfQorCQkJfSBlbHNlIGlmICghb3JnYW5pc2F0aW9uX3VzZXJzX2lkLmVxdWFscyhvdGhlci5vcmdhbmlzYXRpb25fdXNlcnNfaWQpKSB7CisJCQkJcmV0dXJuIGZhbHNlOworCQkJfQorCQl9IGVsc2UgeworCQkJcmV0dXJuIGZhbHNlOworCQl9CisJCXJldHVybiB0cnVlOworCX0KKworCXB1YmxpYyBVc2VyIGdldFVzZXIoKSB7CisJCXJldHVybiB1c2VyOworCX0KKworCXB1YmxpYyB2b2lkIHNldFVzZXIoVXNlciB1c2VyKSB7CisJCXRoaXMudXNlciA9IHVzZXI7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL2ZpbGVzL0ZpbGVFeHBsb3Jlckl0ZW0uamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9maWxlcy9GaWxlRXhwbG9yZXJJdGVtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGJmYWZlZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9maWxlcy9GaWxlRXhwbG9yZXJJdGVtLmphdmEKQEAgLTAsMCArMSwzMDEgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuZmlsZXM7CisKK2ltcG9ydCBqYXZhLmlvLlNlcmlhbGl6YWJsZTsKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKKworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHk7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuR2VuZXJhdGVkVmFsdWU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuR2VuZXJhdGlvblR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSWQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTmFtZWRRdWVyaWVzOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk5hbWVkUXVlcnk7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7CisKK2ltcG9ydCBvcmcuc2ltcGxlZnJhbWV3b3JrLnhtbC5FbGVtZW50OworaW1wb3J0IG9yZy5zaW1wbGVmcmFtZXdvcmsueG1sLlJvb3Q7CisKK0BFbnRpdHkKK0BOYW1lZFF1ZXJpZXMoeworCUBOYW1lZFF1ZXJ5KG5hbWU9ImdldEFsbEZpbGVzIiwgcXVlcnk9IlNFTEVDVCBjIEZST00gRmlsZUV4cGxvcmVySXRlbSBjIikKKyAgICAsIEBOYW1lZFF1ZXJ5KG5hbWU9ImdldEJ5SWQiLCBxdWVyeT0iU0VMRUNUIGMgRlJPTSBGaWxlRXhwbG9yZXJJdGVtIGMgV0hFUkUgYy5maWxlRXhwbG9yZXJJdGVtSWQgPSA6ZmlsZUV4cGxvcmVySXRlbUlkIikKKyAgICAsIEBOYW1lZFF1ZXJ5KG5hbWU9ImdldEJ5SGFzaCIsIHF1ZXJ5PSJTRUxFQ1QgYyBGUk9NIEZpbGVFeHBsb3Jlckl0ZW0gYyBXSEVSRSBjLmZpbGVIYXNoID0gOmZpbGVIYXNoIikKK30pCitAVGFibGUobmFtZSA9ICJmaWxlZXhwbG9yZXJpdGVtIikKK0BSb290CitwdWJsaWMgY2xhc3MgRmlsZUV4cGxvcmVySXRlbSBpbXBsZW1lbnRzIFNlcmlhbGl6YWJsZSB7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMjQyODQzNzgyMTQyNjIwNTY2TDsKKwlASWQKKwlAR2VuZXJhdGVkVmFsdWUoc3RyYXRlZ3kgPSBHZW5lcmF0aW9uVHlwZS5JREVOVElUWSkKKwlAQ29sdW1uKG5hbWU9ImlkIikKKwlARWxlbWVudChkYXRhPXRydWUpCisJcHJpdmF0ZSBsb25nIGZpbGVFeHBsb3Jlckl0ZW1JZDsKKwkKKwlAQ29sdW1uKG5hbWU9ImZpbGVuYW1lIikKKwlARWxlbWVudChkYXRhPXRydWUsIHJlcXVpcmVkID0gZmFsc2UpCisJcHJpdmF0ZSBTdHJpbmcgZmlsZU5hbWU7CisJCisJQENvbHVtbihuYW1lPSJmaWxlaGFzaCIpCisJQEVsZW1lbnQoZGF0YT10cnVlLCByZXF1aXJlZCA9IGZhbHNlKQorCXByaXZhdGUgU3RyaW5nIGZpbGVIYXNoOworCQorCUBDb2x1bW4obmFtZT0icGFyZW50X2ZpbGVleHBsb3Jlcml0ZW1faWQiKQorCUBFbGVtZW50KGRhdGE9dHJ1ZSkKKwlwcml2YXRlIExvbmcgcGFyZW50RmlsZUV4cGxvcmVySXRlbUlkOworCQorCUBDb2x1bW4obmFtZT0icm9vbV9pZCIpCisJQEVsZW1lbnQoZGF0YT10cnVlLCByZXF1aXJlZD1mYWxzZSkKKwlwcml2YXRlIExvbmcgcm9vbV9pZDsKKwkKKwlAQ29sdW1uKG5hbWU9Im93bmVyX2lkIikKKwlARWxlbWVudChkYXRhPXRydWUsIHJlcXVpcmVkPWZhbHNlKQorCXByaXZhdGUgTG9uZyBvd25lcklkOy8vT3duZXJJRCA9PiBvbmx5IHNldCBpZiBpdHMgZGlyZWN0bHkgcm9vdCBpbiBPd25lciBEaXJlY3RvcnksIG90aGVyIEZvbGRlcnMgYW5kIEZpbGVzCisJLy9tYXliZSBhcmUgYWxzbyBpbiBhIEhvbWUgZGlyZWN0b3J5IGJ1dCBqdXN0IGJlY2F1c2UgdGhlaXIgcGFyZW50IGlzCisJCisJQENvbHVtbihuYW1lPSJpc19mb2xkZXIiKQorCUBFbGVtZW50KGRhdGE9dHJ1ZSkKKwlwcml2YXRlIEJvb2xlYW4gaXNGb2xkZXI7CisJCisJQENvbHVtbihuYW1lPSJpc19pbWFnZSIpCisJQEVsZW1lbnQoZGF0YT10cnVlKQorCXByaXZhdGUgQm9vbGVhbiBpc0ltYWdlOworCQorCUBDb2x1bW4obmFtZT0iaXNfcHJlc2VudGF0aW9uIikKKwlARWxlbWVudChkYXRhPXRydWUpCisJcHJpdmF0ZSBCb29sZWFuIGlzUHJlc2VudGF0aW9uOworCQorCUBDb2x1bW4obmFtZT0iaXNfdmlkZW8iKQorCUBFbGVtZW50KGRhdGE9dHJ1ZSwgcmVxdWlyZWQ9ZmFsc2UpCisJcHJpdmF0ZSBCb29sZWFuIGlzVmlkZW87CisJCisJQENvbHVtbihuYW1lPSJpbnNlcnRlZF9ieSIpCisJQEVsZW1lbnQoZGF0YT10cnVlKQorCXByaXZhdGUgTG9uZyBpbnNlcnRlZEJ5OworCQorCUBDb2x1bW4obmFtZT0iaW5zZXJ0ZWQiKQorCUBFbGVtZW50KGRhdGE9dHJ1ZSkKKwlwcml2YXRlIERhdGUgaW5zZXJ0ZWQ7CisJCisJQENvbHVtbihuYW1lPSJ1cGRhdGVkIikKKwlARWxlbWVudChkYXRhPXRydWUpCisJcHJpdmF0ZSBEYXRlIHVwZGF0ZWQ7CisJCisJQENvbHVtbihuYW1lPSJkZWxldGVkIikKKwlARWxlbWVudChkYXRhPXRydWUpCisJcHJpdmF0ZSBib29sZWFuIGRlbGV0ZWQ7CisJCisJQENvbHVtbihuYW1lPSJmaWxlc2l6ZSIpCisJQEVsZW1lbnQoZGF0YT10cnVlLCByZXF1aXJlZD1mYWxzZSkKKwlwcml2YXRlIExvbmcgZmlsZVNpemU7CisJCisJQENvbHVtbihuYW1lPSJmbHZfd2lkdGgiKQorCUBFbGVtZW50KGRhdGE9dHJ1ZSwgcmVxdWlyZWQ9ZmFsc2UpCisJcHJpdmF0ZSBJbnRlZ2VyIGZsdldpZHRoOworCQorCUBDb2x1bW4obmFtZT0iZmx2X2hlaWdodCIpCisJQEVsZW1lbnQoZGF0YT10cnVlLCByZXF1aXJlZD1mYWxzZSkKKwlwcml2YXRlIEludGVnZXIgZmx2SGVpZ2h0OworCQorCUBDb2x1bW4obmFtZT0icHJldmlld19pbWFnZSIpCisJQEVsZW1lbnQoZGF0YT10cnVlLCByZXF1aXJlZCA9IGZhbHNlKQorCXByaXZhdGUgU3RyaW5nIHByZXZpZXdJbWFnZTsKKwkKKwlAQ29sdW1uKG5hbWU9IndtbF9maWxlX3BhdGgiKQorCUBFbGVtZW50KGRhdGE9dHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIFN0cmluZyB3bWxGaWxlUGF0aDsKKwkKKwlAQ29sdW1uKG5hbWU9ImlzX3N0b3JlZF93bWxfZmlsZSIpCisJQEVsZW1lbnQoZGF0YT10cnVlLCByZXF1aXJlZCA9IGZhbHNlKQorCXByaXZhdGUgQm9vbGVhbiBpc1N0b3JlZFdtbEZpbGU7CisJCisJQENvbHVtbihuYW1lPSJpc19jaGFydCIpCisJQEVsZW1lbnQoZGF0YT10cnVlLCByZXF1aXJlZCA9IGZhbHNlKQorICAgIHByaXZhdGUgQm9vbGVhbiBpc0NoYXJ0OworICAgIAorCUBDb2x1bW4obmFtZT0iZXh0ZXJuYWxfZmlsZV9pZCIpCisgICAgcHJpdmF0ZSBMb25nIGV4dGVybmFsRmlsZUlkOworCQorCUBDb2x1bW4obmFtZT0iZXh0ZXJuYWxfdHlwZSIpCisgICAgcHJpdmF0ZSBTdHJpbmcgZXh0ZXJuYWxUeXBlOworCisJCQorCXB1YmxpYyBsb25nIGdldEZpbGVFeHBsb3Jlckl0ZW1JZCgpIHsKKwkJcmV0dXJuIGZpbGVFeHBsb3Jlckl0ZW1JZDsKKwl9CisJcHVibGljIHZvaWQgc2V0RmlsZUV4cGxvcmVySXRlbUlkKGxvbmcgZmlsZUV4cGxvcmVySXRlbUlkKSB7CisJCXRoaXMuZmlsZUV4cGxvcmVySXRlbUlkID0gZmlsZUV4cGxvcmVySXRlbUlkOworCX0KKwkKKwlwdWJsaWMgU3RyaW5nIGdldEZpbGVOYW1lKCkgeworCQlyZXR1cm4gZmlsZU5hbWU7CisJfQorCXB1YmxpYyB2b2lkIHNldEZpbGVOYW1lKFN0cmluZyBmaWxlTmFtZSkgeworCQl0aGlzLmZpbGVOYW1lID0gZmlsZU5hbWU7CisJfQorCQorCXB1YmxpYyBTdHJpbmcgZ2V0RmlsZUhhc2goKSB7CisJCXJldHVybiBmaWxlSGFzaDsKKwl9CisJcHVibGljIHZvaWQgc2V0RmlsZUhhc2goU3RyaW5nIGZpbGVIYXNoKSB7CisJCXRoaXMuZmlsZUhhc2ggPSBmaWxlSGFzaDsKKwl9CisJCisJcHVibGljIExvbmcgZ2V0UGFyZW50RmlsZUV4cGxvcmVySXRlbUlkKCkgeworCQlyZXR1cm4gcGFyZW50RmlsZUV4cGxvcmVySXRlbUlkOworCX0KKwlwdWJsaWMgdm9pZCBzZXRQYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQoTG9uZyBwYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQpIHsKKwkJdGhpcy5wYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQgPSBwYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQ7CisJfQorCQorCXB1YmxpYyBMb25nIGdldE93bmVySWQoKSB7CisJCXJldHVybiBvd25lcklkOworCX0KKwlwdWJsaWMgdm9pZCBzZXRPd25lcklkKExvbmcgb3duZXJJZCkgeworCQl0aGlzLm93bmVySWQgPSBvd25lcklkOworCX0KKwkKKwlwdWJsaWMgTG9uZyBnZXRSb29tX2lkKCkgeworCQlyZXR1cm4gcm9vbV9pZDsKKwl9CisJcHVibGljIHZvaWQgc2V0Um9vbV9pZChMb25nIHJvb21faWQpIHsKKwkJdGhpcy5yb29tX2lkID0gcm9vbV9pZDsKKwl9CisJCisJcHVibGljIEJvb2xlYW4gZ2V0SXNGb2xkZXIoKSB7CisJCXJldHVybiBpc0ZvbGRlcjsKKwl9CisJcHVibGljIHZvaWQgc2V0SXNGb2xkZXIoQm9vbGVhbiBpc0ZvbGRlcikgeworCQl0aGlzLmlzRm9sZGVyID0gaXNGb2xkZXI7CisJfQorCQorCXB1YmxpYyBCb29sZWFuIGdldElzSW1hZ2UoKSB7CisJCXJldHVybiBpc0ltYWdlOworCX0KKwlwdWJsaWMgdm9pZCBzZXRJc0ltYWdlKEJvb2xlYW4gaXNJbWFnZSkgeworCQl0aGlzLmlzSW1hZ2UgPSBpc0ltYWdlOworCX0KKwkKKwlwdWJsaWMgQm9vbGVhbiBnZXRJc1ZpZGVvKCkgeworCQlyZXR1cm4gaXNWaWRlbzsKKwl9CisJcHVibGljIHZvaWQgc2V0SXNWaWRlbyhCb29sZWFuIGlzVmlkZW8pIHsKKwkJdGhpcy5pc1ZpZGVvID0gaXNWaWRlbzsKKwl9CisJCisJcHVibGljIEJvb2xlYW4gZ2V0SXNQcmVzZW50YXRpb24oKSB7CisJCXJldHVybiBpc1ByZXNlbnRhdGlvbjsKKwl9CisJcHVibGljIHZvaWQgc2V0SXNQcmVzZW50YXRpb24oQm9vbGVhbiBpc1ByZXNlbnRhdGlvbikgeworCQl0aGlzLmlzUHJlc2VudGF0aW9uID0gaXNQcmVzZW50YXRpb247CisJfQorCQorCXB1YmxpYyBMb25nIGdldEluc2VydGVkQnkoKSB7CisJCXJldHVybiBpbnNlcnRlZEJ5OworCX0KKwlwdWJsaWMgdm9pZCBzZXRJbnNlcnRlZEJ5KExvbmcgaW5zZXJ0ZWRCeSkgeworCQl0aGlzLmluc2VydGVkQnkgPSBpbnNlcnRlZEJ5OworCX0KKwkKKwlwdWJsaWMgRGF0ZSBnZXRJbnNlcnRlZCgpIHsKKwkJcmV0dXJuIGluc2VydGVkOworCX0KKwlwdWJsaWMgdm9pZCBzZXRJbnNlcnRlZChEYXRlIGluc2VydGVkKSB7CisJCXRoaXMuaW5zZXJ0ZWQgPSBpbnNlcnRlZDsKKwl9CisKKwlwdWJsaWMgYm9vbGVhbiBnZXREZWxldGVkKCkgeworCQlyZXR1cm4gZGVsZXRlZDsKKwl9CisJcHVibGljIHZvaWQgc2V0RGVsZXRlZChib29sZWFuIGRlbGV0ZWQpIHsKKwkJdGhpcy5kZWxldGVkID0gZGVsZXRlZDsKKwl9CisJCisJcHVibGljIERhdGUgZ2V0VXBkYXRlZCgpIHsKKwkJcmV0dXJuIHVwZGF0ZWQ7CisJfQorCXB1YmxpYyB2b2lkIHNldFVwZGF0ZWQoRGF0ZSB1cGRhdGVkKSB7CisJCXRoaXMudXBkYXRlZCA9IHVwZGF0ZWQ7CisJfQorCQorCXB1YmxpYyBMb25nIGdldEZpbGVTaXplKCkgeworCQlyZXR1cm4gZmlsZVNpemU7CisJfQorCXB1YmxpYyB2b2lkIHNldEZpbGVTaXplKExvbmcgZmlsZVNpemUpIHsKKwkJdGhpcy5maWxlU2l6ZSA9IGZpbGVTaXplOworCX0KKwkKKwlwdWJsaWMgSW50ZWdlciBnZXRGbHZXaWR0aCgpIHsKKwkJcmV0dXJuIGZsdldpZHRoOworCX0KKwlwdWJsaWMgdm9pZCBzZXRGbHZXaWR0aChJbnRlZ2VyIGZsdldpZHRoKSB7CisJCXRoaXMuZmx2V2lkdGggPSBmbHZXaWR0aDsKKwl9CisKKwlwdWJsaWMgSW50ZWdlciBnZXRGbHZIZWlnaHQoKSB7CisJCXJldHVybiBmbHZIZWlnaHQ7CisJfQorCXB1YmxpYyB2b2lkIHNldEZsdkhlaWdodChJbnRlZ2VyIGZsdkhlaWdodCkgeworCQl0aGlzLmZsdkhlaWdodCA9IGZsdkhlaWdodDsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGdldFByZXZpZXdJbWFnZSgpIHsKKwkJcmV0dXJuIHByZXZpZXdJbWFnZTsKKwl9CQorCXB1YmxpYyB2b2lkIHNldFByZXZpZXdJbWFnZShTdHJpbmcgcHJldmlld0ltYWdlKSB7CisJCXRoaXMucHJldmlld0ltYWdlID0gcHJldmlld0ltYWdlOworCX0KKwkKKwlwdWJsaWMgU3RyaW5nIGdldFdtbEZpbGVQYXRoKCkgeworCQlyZXR1cm4gd21sRmlsZVBhdGg7CisJfQorCXB1YmxpYyB2b2lkIHNldFdtbEZpbGVQYXRoKFN0cmluZyB3bWxGaWxlUGF0aCkgeworCQl0aGlzLndtbEZpbGVQYXRoID0gd21sRmlsZVBhdGg7CisJfQorCQorCXB1YmxpYyBCb29sZWFuIGdldElzU3RvcmVkV21sRmlsZSgpIHsKKwkJcmV0dXJuIGlzU3RvcmVkV21sRmlsZTsKKwl9CisJcHVibGljIHZvaWQgc2V0SXNTdG9yZWRXbWxGaWxlKEJvb2xlYW4gaXNTdG9yZWRXbWxGaWxlKSB7CisJCXRoaXMuaXNTdG9yZWRXbWxGaWxlID0gaXNTdG9yZWRXbWxGaWxlOworCX0KKworCXB1YmxpYyBCb29sZWFuIGdldElzQ2hhcnQoKSB7CisgICAgICAgIHJldHVybiBpc0NoYXJ0OworICAgIH0KKyAgICBwdWJsaWMgdm9pZCBzZXRJc0NoYXJ0KEJvb2xlYW4gaXNDaGFydCkgeworICAgICAgICB0aGlzLmlzQ2hhcnQgPSBpc0NoYXJ0OworICAgIH0KKyAgICAKKwlwdWJsaWMgTG9uZyBnZXRFeHRlcm5hbEZpbGVJZCgpIHsKKwkJcmV0dXJuIGV4dGVybmFsRmlsZUlkOworCX0KKwlwdWJsaWMgdm9pZCBzZXRFeHRlcm5hbEZpbGVJZChMb25nIGV4dGVybmFsRmlsZUlkKSB7CisJCXRoaXMuZXh0ZXJuYWxGaWxlSWQgPSBleHRlcm5hbEZpbGVJZDsKKwl9CisJCisJcHVibGljIFN0cmluZyBnZXRFeHRlcm5hbFR5cGUoKSB7CisJCXJldHVybiBleHRlcm5hbFR5cGU7CisJfQorCXB1YmxpYyB2b2lkIHNldEV4dGVybmFsVHlwZShTdHJpbmcgZXh0ZXJuYWxUeXBlKSB7CisJCXRoaXMuZXh0ZXJuYWxUeXBlID0gZXh0ZXJuYWxUeXBlOworCX0KKwkKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9mbHZyZWNvcmQvRmx2UmVjb3JkaW5nLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvZmx2cmVjb3JkL0ZsdlJlY29yZGluZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI5OTA0ODQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvZmx2cmVjb3JkL0ZsdlJlY29yZGluZy5qYXZhCkBAIC0wLDAgKzEsNDU5IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmZsdnJlY29yZDsKKworaW1wb3J0IGphdmEuaW8uU2VyaWFsaXphYmxlOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ2FzY2FkZVR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5GZXRjaFR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuR2VuZXJhdGVkVmFsdWU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuR2VuZXJhdGlvblR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSWQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSm9pbkNvbHVtbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5OYW1lZFF1ZXJpZXM7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTmFtZWRRdWVyeTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5PbmVUb01hbnk7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVHJhbnNpZW50OworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbS5Sb29tOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuVXNlcjsKK2ltcG9ydCBvcmcuc2ltcGxlZnJhbWV3b3JrLnhtbC5FbGVtZW50OworaW1wb3J0IG9yZy5zaW1wbGVmcmFtZXdvcmsueG1sLkVsZW1lbnRMaXN0OworaW1wb3J0IG9yZy5zaW1wbGVmcmFtZXdvcmsueG1sLlJvb3Q7CisKKy8qKgorICogQW4gaXRlbSBpbiB0aGUgZmlsZSBleHBsb3JlciBpbiB0aGUgcmVjb3JkaW5nIHNlY3Rpb24uIENhbiBiZSBlaXRoZXI6PGJyLz4KKyAqIDx1bD4KKyAqIDxsaT5hIGNvbmZlcmVuY2UgcmVjb3JkaW5nPC9saT4KKyAqIDxsaT5hIGludGVydmlldyByZWNvcmRpbmc8L2xpPgorICogPGxpPmEgZm9sZGVyPC9saT4KKyAqIDwvdWw+CisgKiAKKyAqIFJlY29yZGVkIGZpbGVzIGFyZSBzaXR1YXRlZCBpbjogd2ViYXBwcy9vcGVubWVldGluZ3Mvc3RyZWFtcy9oaWJlcm5hdGUuPGJyLz4KKyAqIFRoZSByYXcgcmVjb3JkZWQgZmlsZXMgYXJlIHNpdHVhdGVkIGluOgorICogd2ViYXBwcy9vcGVubWVldGluZ3Mvc3RyZWFtcy8kUk9PTV9JRC48YnIvPgorICogCisgKiBAYXV0aG9yIHNlYmF3YWduZXIKKyAqIAorICovCitARW50aXR5CitATmFtZWRRdWVyaWVzKHsgCisJQE5hbWVkUXVlcnkobmFtZSA9ICJnZXRSZWNvcmRpbmdCeUhhc2giLCBxdWVyeSA9ICJTRUxFQ1QgZiBGUk9NIEZsdlJlY29yZGluZyBmICIKKwkJKyAiV0hFUkUgZi5maWxlSGFzaCA9IDpmaWxlSGFzaCIpIAorfSkKK0BUYWJsZShuYW1lID0gImZsdnJlY29yZGluZyIpCitAUm9vdChuYW1lID0gImZsdnJlY29yZGluZyIpCitwdWJsaWMgY2xhc3MgRmx2UmVjb3JkaW5nIGltcGxlbWVudHMgU2VyaWFsaXphYmxlIHsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IC0yMjM0ODc0NjYzMzEwNjE3MDcyTDsKKworCUBJZAorCUBHZW5lcmF0ZWRWYWx1ZShzdHJhdGVneSA9IEdlbmVyYXRpb25UeXBlLklERU5USVRZKQorCUBDb2x1bW4obmFtZSA9ICJpZCIpCisJQEVsZW1lbnQoZGF0YSA9IHRydWUpCisJcHJpdmF0ZSBsb25nIGZsdlJlY29yZGluZ0lkOworCisJQENvbHVtbihuYW1lID0gImZpbGVuYW1lIikKKwlARWxlbWVudChkYXRhID0gdHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIFN0cmluZyBmaWxlTmFtZTsKKworCUBDb2x1bW4obmFtZSA9ICJhbHRlcm5hdGVfZG93bmxvYWQiKQorCUBFbGVtZW50KGRhdGEgPSB0cnVlLCByZXF1aXJlZCA9IGZhbHNlKQorCXByaXZhdGUgU3RyaW5nIGFsdGVybmF0ZURvd25sb2FkOworCisJQENvbHVtbihuYW1lID0gImZpbGVoYXNoIikKKwlARWxlbWVudChkYXRhID0gdHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIFN0cmluZyBmaWxlSGFzaDsKKworCUBDb2x1bW4obmFtZSA9ICJjb21tZW50X2ZpZWxkIikKKwlARWxlbWVudChkYXRhID0gdHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIFN0cmluZyBjb21tZW50OworCisJQENvbHVtbihuYW1lID0gInBhcmVudF9maWxlZXhwbG9yZXJpdGVtX2lkIikKKwlARWxlbWVudChkYXRhID0gdHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIExvbmcgcGFyZW50RmlsZUV4cGxvcmVySXRlbUlkOworCisJQENvbHVtbihuYW1lID0gInJvb21faWQiKQorCUBFbGVtZW50KGRhdGEgPSB0cnVlLCByZXF1aXJlZCA9IGZhbHNlKQorCXByaXZhdGUgTG9uZyByb29tX2lkOworCisJQENvbHVtbihuYW1lID0gIm93bmVyX2lkIikKKwlARWxlbWVudChkYXRhID0gdHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIExvbmcgb3duZXJJZDsvLyBPd25lcklEID0+IG9ubHkgc2V0IGlmIGl0cyBkaXJlY3RseSByb290IGluIE93bmVyCisJCQkJCQkJLy8gRGlyZWN0b3J5LCBvdGhlciBGb2xkZXJzIGFuZCBGaWxlcworCQkJCQkJCS8vIG1heWJlIGFyZSBhbHNvIGluIGEgSG9tZSBkaXJlY3RvcnkgYnV0IGp1c3QKKwkJCQkJCQkvLyBiZWNhdXNlIHRoZWlyIHBhcmVudCBpcworCisJQENvbHVtbihuYW1lID0gImlzX2ZvbGRlciIpCisJQEVsZW1lbnQoZGF0YSA9IHRydWUsIHJlcXVpcmVkID0gZmFsc2UpCisJcHJpdmF0ZSBCb29sZWFuIGlzRm9sZGVyOworCisJQENvbHVtbihuYW1lID0gImlzX2ltYWdlIikKKwlARWxlbWVudChkYXRhID0gdHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIEJvb2xlYW4gaXNJbWFnZTsKKworCUBDb2x1bW4obmFtZSA9ICJpc19wcmVzZW50YXRpb24iKQorCUBFbGVtZW50KGRhdGEgPSB0cnVlLCByZXF1aXJlZCA9IGZhbHNlKQorCXByaXZhdGUgQm9vbGVhbiBpc1ByZXNlbnRhdGlvbjsKKworCUBDb2x1bW4obmFtZSA9ICJpc19yZWNvcmRpbmciKQorCUBFbGVtZW50KGRhdGEgPSB0cnVlLCByZXF1aXJlZCA9IGZhbHNlKQorCXByaXZhdGUgQm9vbGVhbiBpc1JlY29yZGluZzsKKworCUBDb2x1bW4obmFtZSA9ICJyZWNvcmRfc3RhcnQiKQorCUBFbGVtZW50KGRhdGEgPSB0cnVlLCByZXF1aXJlZCA9IGZhbHNlKQorCXByaXZhdGUgRGF0ZSByZWNvcmRTdGFydDsKKworCUBDb2x1bW4obmFtZSA9ICJyZWNvcmRfZW5kIikKKwlARWxlbWVudChkYXRhID0gdHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIERhdGUgcmVjb3JkRW5kOworCisJQENvbHVtbihuYW1lID0gImluc2VydGVkX2J5IikKKwlARWxlbWVudChkYXRhID0gdHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIExvbmcgaW5zZXJ0ZWRCeTsKKworCUBDb2x1bW4obmFtZSA9ICJpbnNlcnRlZCIpCisJQEVsZW1lbnQoZGF0YSA9IHRydWUsIHJlcXVpcmVkID0gZmFsc2UpCisJcHJpdmF0ZSBEYXRlIGluc2VydGVkOworCisJQENvbHVtbihuYW1lID0gInVwZGF0ZWQiKQorCXByaXZhdGUgRGF0ZSB1cGRhdGVkOworCisJQENvbHVtbihuYW1lID0gImRlbGV0ZWQiKQorCUBFbGVtZW50KGRhdGEgPSB0cnVlLCByZXF1aXJlZCA9IGZhbHNlKQorCXByaXZhdGUgYm9vbGVhbiBkZWxldGVkOworCisJQENvbHVtbihuYW1lID0gIndpZHRoIikKKwlARWxlbWVudChkYXRhID0gdHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIEludGVnZXIgd2lkdGg7CisKKwlAQ29sdW1uKG5hbWUgPSAiaGVpZ2h0IikKKwlARWxlbWVudChkYXRhID0gdHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIEludGVnZXIgaGVpZ2h0OworCisJQENvbHVtbihuYW1lID0gImZsdl93aWR0aCIpCisJQEVsZW1lbnQoZGF0YSA9IHRydWUsIHJlcXVpcmVkID0gZmFsc2UpCisJcHJpdmF0ZSBJbnRlZ2VyIGZsdldpZHRoOworCisJQENvbHVtbihuYW1lID0gImZsdl9oZWlnaHQiKQorCUBFbGVtZW50KGRhdGEgPSB0cnVlLCByZXF1aXJlZCA9IGZhbHNlKQorCXByaXZhdGUgSW50ZWdlciBmbHZIZWlnaHQ7CisKKwlAQ29sdW1uKG5hbWUgPSAicHJldmlld19pbWFnZSIpCisJQEVsZW1lbnQoZGF0YSA9IHRydWUsIHJlcXVpcmVkID0gZmFsc2UpCisJcHJpdmF0ZSBTdHJpbmcgcHJldmlld0ltYWdlOworCisJQENvbHVtbihuYW1lID0gImZpbGVzaXplIikKKwlARWxlbWVudChkYXRhID0gdHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIExvbmcgZmlsZVNpemU7CisKKwlAQ29sdW1uKG5hbWUgPSAicmVjb3JkZXJfc3RyZWFtX2lkIikKKwlARWxlbWVudChkYXRhID0gdHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIFN0cmluZyByZWNvcmRlclN0cmVhbUlkOworCisJQENvbHVtbihuYW1lID0gIm9yZ2FuaXphdGlvbl9pZCIpCisJQEVsZW1lbnQoZGF0YSA9IHRydWUsIHJlcXVpcmVkID0gZmFsc2UpCisJcHJpdmF0ZSBMb25nIG9yZ2FuaXphdGlvbl9pZDsKKworCUBDb2x1bW4obmFtZSA9ICJpc19pbnRlcnZpZXciKQorCUBFbGVtZW50KGRhdGEgPSB0cnVlLCByZXF1aXJlZCA9IGZhbHNlKQorCXByaXZhdGUgQm9vbGVhbiBpc0ludGVydmlldzsKKworCUBDb2x1bW4obmFtZSA9ICJwcm9ncmVzc19wb3N0X3Byb2Nlc3NpbmciKQorCUBFbGVtZW50KGRhdGEgPSB0cnVlLCByZXF1aXJlZCA9IGZhbHNlKQorCXByaXZhdGUgSW50ZWdlciBwcm9ncmVzc1Bvc3RQcm9jZXNzaW5nOworCisJQE9uZVRvTWFueShmZXRjaCA9IEZldGNoVHlwZS5MQVpZLCBjYXNjYWRlID0gQ2FzY2FkZVR5cGUuQUxMKQorCUBKb2luQ29sdW1uKG5hbWUgPSAiZmx2cmVjb3JkaW5nX2lkIikKKwlARWxlbWVudExpc3QobmFtZSA9ICJmbHZyZWNvcmRpbmdtZXRhZGF0YXMiLCByZXF1aXJlZCA9IGZhbHNlKQorCXByaXZhdGUgTGlzdDxGbHZSZWNvcmRpbmdNZXRhRGF0YT4gZmx2UmVjb3JkaW5nTWV0YURhdGE7CisKKwkvLyBOb3QgTWFwcGVkCisJQFRyYW5zaWVudAorCXByaXZhdGUgVXNlciBjcmVhdG9yOworCisJQFRyYW5zaWVudAorCXByaXZhdGUgUm9vbSByb29tOworCisJQFRyYW5zaWVudAorCXByaXZhdGUgTGlzdDxGbHZSZWNvcmRpbmdMb2c+IGZsdlJlY29yZGluZ0xvZzsKKworCXB1YmxpYyBsb25nIGdldEZsdlJlY29yZGluZ0lkKCkgeworCQlyZXR1cm4gZmx2UmVjb3JkaW5nSWQ7CisJfQorCisJcHVibGljIHZvaWQgc2V0Rmx2UmVjb3JkaW5nSWQobG9uZyBmbHZSZWNvcmRpbmdJZCkgeworCQl0aGlzLmZsdlJlY29yZGluZ0lkID0gZmx2UmVjb3JkaW5nSWQ7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRGaWxlTmFtZSgpIHsKKwkJcmV0dXJuIGZpbGVOYW1lOworCX0KKworCXB1YmxpYyB2b2lkIHNldEZpbGVOYW1lKFN0cmluZyBmaWxlTmFtZSkgeworCQl0aGlzLmZpbGVOYW1lID0gZmlsZU5hbWU7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRDb21tZW50KCkgeworCQlyZXR1cm4gY29tbWVudDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRDb21tZW50KFN0cmluZyBjb21tZW50KSB7CisJCXRoaXMuY29tbWVudCA9IGNvbW1lbnQ7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRGaWxlSGFzaCgpIHsKKwkJcmV0dXJuIGZpbGVIYXNoOworCX0KKworCXB1YmxpYyB2b2lkIHNldEZpbGVIYXNoKFN0cmluZyBmaWxlSGFzaCkgeworCQl0aGlzLmZpbGVIYXNoID0gZmlsZUhhc2g7CisJfQorCisJcHVibGljIExvbmcgZ2V0UGFyZW50RmlsZUV4cGxvcmVySXRlbUlkKCkgeworCQlyZXR1cm4gcGFyZW50RmlsZUV4cGxvcmVySXRlbUlkOworCX0KKworCXB1YmxpYyB2b2lkIHNldFBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZChMb25nIHBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCkgeworCQl0aGlzLnBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCA9IHBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZDsKKwl9CisKKwlwdWJsaWMgTG9uZyBnZXRSb29tX2lkKCkgeworCQlyZXR1cm4gcm9vbV9pZDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRSb29tX2lkKExvbmcgcm9vbV9pZCkgeworCQl0aGlzLnJvb21faWQgPSByb29tX2lkOworCX0KKworCXB1YmxpYyBMb25nIGdldE93bmVySWQoKSB7CisJCXJldHVybiBvd25lcklkOworCX0KKworCXB1YmxpYyB2b2lkIHNldE93bmVySWQoTG9uZyBvd25lcklkKSB7CisJCXRoaXMub3duZXJJZCA9IG93bmVySWQ7CisJfQorCisJcHVibGljIEJvb2xlYW4gZ2V0SXNGb2xkZXIoKSB7CisJCXJldHVybiBpc0ZvbGRlcjsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRJc0ZvbGRlcihCb29sZWFuIGlzRm9sZGVyKSB7CisJCXRoaXMuaXNGb2xkZXIgPSBpc0ZvbGRlcjsKKwl9CisKKwlwdWJsaWMgQm9vbGVhbiBnZXRJc0ltYWdlKCkgeworCQlyZXR1cm4gaXNJbWFnZTsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRJc0ltYWdlKEJvb2xlYW4gaXNJbWFnZSkgeworCQl0aGlzLmlzSW1hZ2UgPSBpc0ltYWdlOworCX0KKworCXB1YmxpYyBCb29sZWFuIGdldElzUHJlc2VudGF0aW9uKCkgeworCQlyZXR1cm4gaXNQcmVzZW50YXRpb247CisJfQorCisJcHVibGljIHZvaWQgc2V0SXNQcmVzZW50YXRpb24oQm9vbGVhbiBpc1ByZXNlbnRhdGlvbikgeworCQl0aGlzLmlzUHJlc2VudGF0aW9uID0gaXNQcmVzZW50YXRpb247CisJfQorCisJcHVibGljIEJvb2xlYW4gZ2V0SXNSZWNvcmRpbmcoKSB7CisJCXJldHVybiBpc1JlY29yZGluZzsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRJc1JlY29yZGluZyhCb29sZWFuIGlzUmVjb3JkaW5nKSB7CisJCXRoaXMuaXNSZWNvcmRpbmcgPSBpc1JlY29yZGluZzsKKwl9CisKKwlwdWJsaWMgTG9uZyBnZXRJbnNlcnRlZEJ5KCkgeworCQlyZXR1cm4gaW5zZXJ0ZWRCeTsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRJbnNlcnRlZEJ5KExvbmcgaW5zZXJ0ZWRCeSkgeworCQl0aGlzLmluc2VydGVkQnkgPSBpbnNlcnRlZEJ5OworCX0KKworCXB1YmxpYyBEYXRlIGdldEluc2VydGVkKCkgeworCQlyZXR1cm4gaW5zZXJ0ZWQ7CisJfQorCisJcHVibGljIHZvaWQgc2V0SW5zZXJ0ZWQoRGF0ZSBpbnNlcnRlZCkgeworCQl0aGlzLmluc2VydGVkID0gaW5zZXJ0ZWQ7CisJfQorCisJcHVibGljIGJvb2xlYW4gZ2V0RGVsZXRlZCgpIHsKKwkJcmV0dXJuIGRlbGV0ZWQ7CisJfQorCisJcHVibGljIHZvaWQgc2V0RGVsZXRlZChib29sZWFuIGRlbGV0ZWQpIHsKKwkJdGhpcy5kZWxldGVkID0gZGVsZXRlZDsKKwl9CisKKwlwdWJsaWMgRGF0ZSBnZXRVcGRhdGVkKCkgeworCQlyZXR1cm4gdXBkYXRlZDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRVcGRhdGVkKERhdGUgdXBkYXRlZCkgeworCQl0aGlzLnVwZGF0ZWQgPSB1cGRhdGVkOworCX0KKworCXB1YmxpYyBMb25nIGdldEZpbGVTaXplKCkgeworCQlyZXR1cm4gZmlsZVNpemU7CisJfQorCisJcHVibGljIHZvaWQgc2V0RmlsZVNpemUoTG9uZyBmaWxlU2l6ZSkgeworCQl0aGlzLmZpbGVTaXplID0gZmlsZVNpemU7CisJfQorCisJcHVibGljIERhdGUgZ2V0UmVjb3JkU3RhcnQoKSB7CisJCXJldHVybiByZWNvcmRTdGFydDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRSZWNvcmRTdGFydChEYXRlIHJlY29yZFN0YXJ0KSB7CisJCXRoaXMucmVjb3JkU3RhcnQgPSByZWNvcmRTdGFydDsKKwl9CisKKwlwdWJsaWMgRGF0ZSBnZXRSZWNvcmRFbmQoKSB7CisJCXJldHVybiByZWNvcmRFbmQ7CisJfQorCisJcHVibGljIHZvaWQgc2V0UmVjb3JkRW5kKERhdGUgcmVjb3JkRW5kKSB7CisJCXRoaXMucmVjb3JkRW5kID0gcmVjb3JkRW5kOworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0UmVjb3JkZXJTdHJlYW1JZCgpIHsKKwkJcmV0dXJuIHJlY29yZGVyU3RyZWFtSWQ7CisJfQorCisJcHVibGljIHZvaWQgc2V0UmVjb3JkZXJTdHJlYW1JZChTdHJpbmcgcmVjb3JkZXJTdHJlYW1JZCkgeworCQl0aGlzLnJlY29yZGVyU3RyZWFtSWQgPSByZWNvcmRlclN0cmVhbUlkOworCX0KKworCXB1YmxpYyBMb25nIGdldE9yZ2FuaXphdGlvbl9pZCgpIHsKKwkJcmV0dXJuIG9yZ2FuaXphdGlvbl9pZDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRPcmdhbml6YXRpb25faWQoTG9uZyBvcmdhbml6YXRpb25faWQpIHsKKwkJdGhpcy5vcmdhbml6YXRpb25faWQgPSBvcmdhbml6YXRpb25faWQ7CisJfQorCisJcHVibGljIExpc3Q8Rmx2UmVjb3JkaW5nTWV0YURhdGE+IGdldEZsdlJlY29yZGluZ01ldGFEYXRhKCkgeworCQlyZXR1cm4gZmx2UmVjb3JkaW5nTWV0YURhdGE7CisJfQorCisJcHVibGljIHZvaWQgc2V0Rmx2UmVjb3JkaW5nTWV0YURhdGEoCisJCQlMaXN0PEZsdlJlY29yZGluZ01ldGFEYXRhPiBmbHZSZWNvcmRpbmdNZXRhRGF0YSkgeworCQl0aGlzLmZsdlJlY29yZGluZ01ldGFEYXRhID0gZmx2UmVjb3JkaW5nTWV0YURhdGE7CisJfQorCisJcHVibGljIFVzZXIgZ2V0Q3JlYXRvcigpIHsKKwkJcmV0dXJuIGNyZWF0b3I7CisJfQorCisJcHVibGljIHZvaWQgc2V0Q3JlYXRvcihVc2VyIGNyZWF0b3IpIHsKKwkJdGhpcy5jcmVhdG9yID0gY3JlYXRvcjsKKwl9CisKKwlwdWJsaWMgUm9vbSBnZXRSb29tKCkgeworCQlyZXR1cm4gcm9vbTsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRSb29tKFJvb20gcm9vbSkgeworCQl0aGlzLnJvb20gPSByb29tOworCX0KKworCXB1YmxpYyBJbnRlZ2VyIGdldFdpZHRoKCkgeworCQlyZXR1cm4gd2lkdGg7CisJfQorCisJcHVibGljIHZvaWQgc2V0V2lkdGgoSW50ZWdlciB3aWR0aCkgeworCQl0aGlzLndpZHRoID0gd2lkdGg7CisJfQorCisJcHVibGljIEludGVnZXIgZ2V0SGVpZ2h0KCkgeworCQlyZXR1cm4gaGVpZ2h0OworCX0KKworCXB1YmxpYyB2b2lkIHNldEhlaWdodChJbnRlZ2VyIGhlaWdodCkgeworCQl0aGlzLmhlaWdodCA9IGhlaWdodDsKKwl9CisKKwlwdWJsaWMgSW50ZWdlciBnZXRGbHZXaWR0aCgpIHsKKwkJcmV0dXJuIGZsdldpZHRoOworCX0KKworCXB1YmxpYyB2b2lkIHNldEZsdldpZHRoKEludGVnZXIgZmx2V2lkdGgpIHsKKwkJdGhpcy5mbHZXaWR0aCA9IGZsdldpZHRoOworCX0KKworCXB1YmxpYyBJbnRlZ2VyIGdldEZsdkhlaWdodCgpIHsKKwkJcmV0dXJuIGZsdkhlaWdodDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRGbHZIZWlnaHQoSW50ZWdlciBmbHZIZWlnaHQpIHsKKwkJdGhpcy5mbHZIZWlnaHQgPSBmbHZIZWlnaHQ7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRQcmV2aWV3SW1hZ2UoKSB7CisJCXJldHVybiBwcmV2aWV3SW1hZ2U7CisJfQorCisJcHVibGljIHZvaWQgc2V0UHJldmlld0ltYWdlKFN0cmluZyBwcmV2aWV3SW1hZ2UpIHsKKwkJdGhpcy5wcmV2aWV3SW1hZ2UgPSBwcmV2aWV3SW1hZ2U7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRBbHRlcm5hdGVEb3dubG9hZCgpIHsKKwkJcmV0dXJuIGFsdGVybmF0ZURvd25sb2FkOworCX0KKworCXB1YmxpYyB2b2lkIHNldEFsdGVybmF0ZURvd25sb2FkKFN0cmluZyBhbHRlcm5hdGVEb3dubG9hZCkgeworCQl0aGlzLmFsdGVybmF0ZURvd25sb2FkID0gYWx0ZXJuYXRlRG93bmxvYWQ7CisJfQorCisJcHVibGljIExpc3Q8Rmx2UmVjb3JkaW5nTG9nPiBnZXRGbHZSZWNvcmRpbmdMb2coKSB7CisJCXJldHVybiBmbHZSZWNvcmRpbmdMb2c7CisJfQorCisJcHVibGljIHZvaWQgc2V0Rmx2UmVjb3JkaW5nTG9nKExpc3Q8Rmx2UmVjb3JkaW5nTG9nPiBmbHZSZWNvcmRpbmdMb2cpIHsKKwkJdGhpcy5mbHZSZWNvcmRpbmdMb2cgPSBmbHZSZWNvcmRpbmdMb2c7CisJfQorCisJcHVibGljIEJvb2xlYW4gZ2V0SXNJbnRlcnZpZXcoKSB7CisJCXJldHVybiBpc0ludGVydmlldzsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRJc0ludGVydmlldyhCb29sZWFuIGlzSW50ZXJ2aWV3KSB7CisJCXRoaXMuaXNJbnRlcnZpZXcgPSBpc0ludGVydmlldzsKKwl9CisKKwlwdWJsaWMgSW50ZWdlciBnZXRQcm9ncmVzc1Bvc3RQcm9jZXNzaW5nKCkgeworCQlyZXR1cm4gcHJvZ3Jlc3NQb3N0UHJvY2Vzc2luZzsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRQcm9ncmVzc1Bvc3RQcm9jZXNzaW5nKEludGVnZXIgcHJvZ3Jlc3NQb3N0UHJvY2Vzc2luZykgeworCQl0aGlzLnByb2dyZXNzUG9zdFByb2Nlc3NpbmcgPSBwcm9ncmVzc1Bvc3RQcm9jZXNzaW5nOworCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL2ZsdnJlY29yZC9GbHZSZWNvcmRpbmdMb2cuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9mbHZyZWNvcmQvRmx2UmVjb3JkaW5nTG9nLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjM3MzcyNwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9mbHZyZWNvcmQvRmx2UmVjb3JkaW5nTG9nLmphdmEKQEAgLTAsMCArMSwxMDMgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuZmx2cmVjb3JkOworCitpbXBvcnQgamF2YS5pby5TZXJpYWxpemFibGU7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CisKKworCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5GZXRjaFR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuR2VuZXJhdGVkVmFsdWU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuR2VuZXJhdGlvblR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSWQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSm9pbkNvbHVtbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Mb2I7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTWFueVRvT25lOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRhYmxlOworQEVudGl0eQorQFRhYmxlKG5hbWUgPSAiZmx2cmVjb3JkaW5nX2xvZyIpCitwdWJsaWMgY2xhc3MgRmx2UmVjb3JkaW5nTG9nIGltcGxlbWVudHMgU2VyaWFsaXphYmxlIHsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAtMjU3NzUzMzYyODY3NTQxNjcwNkw7CisJQElkCisJQEdlbmVyYXRlZFZhbHVlKHN0cmF0ZWd5ID0gR2VuZXJhdGlvblR5cGUuSURFTlRJVFkpCisJQENvbHVtbihuYW1lPSJpZCIpCisJcHJpdmF0ZSBsb25nIGZsdlJlY29yZGluZ0xvZ0lkOworCQorCUBNYW55VG9PbmUoZmV0Y2ggPSBGZXRjaFR5cGUuRUFHRVIpCisJQEpvaW5Db2x1bW4obmFtZT0iZmx2cmVjb3JkaW5nX2lkIiwgbnVsbGFibGU9dHJ1ZSkKKwlwcml2YXRlIEZsdlJlY29yZGluZyBmbHZSZWNvcmRpbmc7CisJCisJQENvbHVtbihuYW1lPSJpbnNlcnRlZCIpCisJcHJpdmF0ZSBEYXRlIGluc2VydGVkOworCQorCUBDb2x1bW4obmFtZT0ibXNnX3R5cGUiKQorCXByaXZhdGUgU3RyaW5nIG1zZ1R5cGU7CisJCisJQExvYgorCUBDb2x1bW4obmFtZT0iZnVsX21lc3NhZ2UiKQorCXByaXZhdGUgU3RyaW5nIGZ1bGxNZXNzYWdlOworCQorCUBDb2x1bW4obmFtZT0iZXhpdF92YWx1ZSIpCisJcHJpdmF0ZSBTdHJpbmcgZXhpdFZhbHVlOworCQorCXB1YmxpYyBsb25nIGdldEZsdlJlY29yZGluZ0xvZ0lkKCkgeworCQlyZXR1cm4gZmx2UmVjb3JkaW5nTG9nSWQ7CisJfQorCXB1YmxpYyB2b2lkIHNldEZsdlJlY29yZGluZ0xvZ0lkKGxvbmcgZmx2UmVjb3JkaW5nTG9nSWQpIHsKKwkJdGhpcy5mbHZSZWNvcmRpbmdMb2dJZCA9IGZsdlJlY29yZGluZ0xvZ0lkOworCX0KKwkKKwlwdWJsaWMgRmx2UmVjb3JkaW5nIGdldEZsdlJlY29yZGluZygpIHsKKwkJcmV0dXJuIGZsdlJlY29yZGluZzsKKwl9CisJcHVibGljIHZvaWQgc2V0Rmx2UmVjb3JkaW5nKEZsdlJlY29yZGluZyBmbHZSZWNvcmRpbmcpIHsKKwkJdGhpcy5mbHZSZWNvcmRpbmcgPSBmbHZSZWNvcmRpbmc7CisJfQorCQorCXB1YmxpYyBEYXRlIGdldEluc2VydGVkKCkgeworCQlyZXR1cm4gaW5zZXJ0ZWQ7CisJfQorCXB1YmxpYyB2b2lkIHNldEluc2VydGVkKERhdGUgaW5zZXJ0ZWQpIHsKKwkJdGhpcy5pbnNlcnRlZCA9IGluc2VydGVkOworCX0KKwkKKwlwdWJsaWMgU3RyaW5nIGdldE1zZ1R5cGUoKSB7CisJCXJldHVybiBtc2dUeXBlOworCX0KKwlwdWJsaWMgdm9pZCBzZXRNc2dUeXBlKFN0cmluZyBtc2dUeXBlKSB7CisJCXRoaXMubXNnVHlwZSA9IG1zZ1R5cGU7CisJfQorCQorCXB1YmxpYyBTdHJpbmcgZ2V0RnVsbE1lc3NhZ2UoKSB7CisJCXJldHVybiBmdWxsTWVzc2FnZTsKKwl9CisJcHVibGljIHZvaWQgc2V0RnVsbE1lc3NhZ2UoU3RyaW5nIGZ1bGxNZXNzYWdlKSB7CisJCXRoaXMuZnVsbE1lc3NhZ2UgPSBmdWxsTWVzc2FnZTsKKwl9CisJCisJcHVibGljIFN0cmluZyBnZXRFeGl0VmFsdWUoKSB7CisJCXJldHVybiBleGl0VmFsdWU7CisJfQorCXB1YmxpYyB2b2lkIHNldEV4aXRWYWx1ZShTdHJpbmcgZXhpdFZhbHVlKSB7CisJCXRoaXMuZXhpdFZhbHVlID0gZXhpdFZhbHVlOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9mbHZyZWNvcmQvRmx2UmVjb3JkaW5nTWV0YURhdGEuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9mbHZyZWNvcmQvRmx2UmVjb3JkaW5nTWV0YURhdGEuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NWIyYzMwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL2ZsdnJlY29yZC9GbHZSZWNvcmRpbmdNZXRhRGF0YS5qYXZhCkBAIC0wLDAgKzEsMjg4IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmZsdnJlY29yZDsKKworaW1wb3J0IGphdmEuaW8uU2VyaWFsaXphYmxlOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5GZXRjaFR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuR2VuZXJhdGVkVmFsdWU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuR2VuZXJhdGlvblR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSWQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSm9pbkNvbHVtbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5NYW55VG9PbmU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5qcGEucGVyc2lzdGVuY2UuamRiYy5Gb3JlaWduS2V5OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuZmx2cmVjb3JkLmxpc3RlbmVyLmFzeW5jLlN0cmVhbUF1ZGlvV3JpdGVyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuZmx2cmVjb3JkLmxpc3RlbmVyLmFzeW5jLlN0cmVhbVZpZGVvV3JpdGVyOworaW1wb3J0IG9yZy5zaW1wbGVmcmFtZXdvcmsueG1sLkVsZW1lbnQ7CitpbXBvcnQgb3JnLnNpbXBsZWZyYW1ld29yay54bWwuUm9vdDsKKworLyoqCisgKiBjb250YWlucyBtZXRhIGRhdGEgYWJvdXQgZWFjaCBzdHJlYW0sIGZvciBleGFtcGxlIGlmIGl0IGlzIGEgc3JlZW4gc2hhcmluZyBvcgorICogYXVkaW8vdmlkZW8gc3RyZWFtLiBUaGVyZSBpcyBhbHNvIGEgYm9vbGVhbiB2YWx1ZQorICoge0BsaW5rICNzdHJlYW1SZWFkZXJUaHJlYWRDb21wbGV0ZX0sIGFzIGxvbmcgYXMgdGhpcyBib29sZWFuIGZsYWcgaXMgbm90IHNldAorICogdG8gdHJ1ZSwgdGhlIHJlY29yZGluZyBwcm9jZXNzIHdpbGwgbm90IHByb2NlZWQgYW5kIHN0YXJ0IHRvIGNvbnZlcnQgYWxsCisgKiBpbnB1dCBzb3VyY2VzIHRvIGEgc2luZ2xlIHJlY29yZGluZyBmaWxlLgorICogCisgKiBAYXV0aG9yIHNlYmF3YWduZXIKKyAqLworQEVudGl0eQorQFRhYmxlKG5hbWUgPSAiZmx2cmVjb3JkaW5nX21ldGFkYXRhIikKK0BSb290KG5hbWUgPSAiZmx2cmVjb3JkaW5nbWV0YWRhdGEiKQorcHVibGljIGNsYXNzIEZsdlJlY29yZGluZ01ldGFEYXRhIGltcGxlbWVudHMgU2VyaWFsaXphYmxlIHsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSA4NDQ0MTc2MTUyMzI0NTEzNzE2TDsKKwlASWQKKwlAR2VuZXJhdGVkVmFsdWUoc3RyYXRlZ3kgPSBHZW5lcmF0aW9uVHlwZS5JREVOVElUWSkKKwlAQ29sdW1uKG5hbWUgPSAiaWQiKQorCUBFbGVtZW50KGRhdGEgPSB0cnVlLCByZXF1aXJlZCA9IGZhbHNlKQorCXByaXZhdGUgbG9uZyBmbHZSZWNvcmRpbmdNZXRhRGF0YUlkOworCisJQE1hbnlUb09uZShmZXRjaCA9IEZldGNoVHlwZS5FQUdFUikKKwlASm9pbkNvbHVtbihuYW1lID0gImZsdnJlY29yZGluZ19pZCIsIG51bGxhYmxlID0gdHJ1ZSkKKwlARm9yZWlnbktleShlbmFibGVkID0gdHJ1ZSkKKwlwcml2YXRlIEZsdlJlY29yZGluZyBmbHZSZWNvcmRpbmc7CisKKwlAQ29sdW1uKG5hbWUgPSAicmVjb3JkX3N0YXJ0IikKKwlARWxlbWVudChkYXRhID0gdHJ1ZSkKKwlwcml2YXRlIERhdGUgcmVjb3JkU3RhcnQ7CisKKwlAQ29sdW1uKG5hbWUgPSAicmVjb3JkX2VuZCIpCisJQEVsZW1lbnQoZGF0YSA9IHRydWUsIHJlcXVpcmVkID0gZmFsc2UpCisJcHJpdmF0ZSBEYXRlIHJlY29yZEVuZDsKKworCUBDb2x1bW4obmFtZSA9ICJzdHJlYW1fbmFtZSIpCisJQEVsZW1lbnQoZGF0YSA9IHRydWUpCisJcHJpdmF0ZSBTdHJpbmcgc3RyZWFtTmFtZTsKKworCUBDb2x1bW4obmFtZSA9ICJmcmVlX3RleHRfdXNlcl9uYW1lIikKKwlARWxlbWVudChkYXRhID0gdHJ1ZSkKKwlwcml2YXRlIFN0cmluZyBmcmVlVGV4dFVzZXJOYW1lOworCisJQENvbHVtbihuYW1lID0gImlzX2F1ZGlvX29ubHkiKQorCUBFbGVtZW50KGRhdGEgPSB0cnVlKQorCXByaXZhdGUgQm9vbGVhbiBpc0F1ZGlvT25seTsKKworCUBDb2x1bW4obmFtZSA9ICJpc192aWRlb19vbmx5IikKKwlARWxlbWVudChkYXRhID0gdHJ1ZSkKKwlwcml2YXRlIEJvb2xlYW4gaXNWaWRlb09ubHk7CisKKwlAQ29sdW1uKG5hbWUgPSAiaXNfc2NyZWVuX2RhdGEiKQorCUBFbGVtZW50KGRhdGEgPSB0cnVlKQorCXByaXZhdGUgQm9vbGVhbiBpc1NjcmVlbkRhdGE7CisKKwlAQ29sdW1uKG5hbWUgPSAiaW5zZXJ0ZWRfYnkiKQorCUBFbGVtZW50KGRhdGEgPSB0cnVlLCByZXF1aXJlZCA9IGZhbHNlKQorCXByaXZhdGUgTG9uZyBpbnNlcnRlZEJ5OworCisJQENvbHVtbihuYW1lID0gImluc2VydGVkIikKKwlARWxlbWVudChkYXRhID0gdHJ1ZSkKKwlwcml2YXRlIERhdGUgaW5zZXJ0ZWQ7CisKKwlAQ29sdW1uKG5hbWUgPSAidXBkYXRlZCIpCisJQEVsZW1lbnQoZGF0YSA9IHRydWUsIHJlcXVpcmVkID0gZmFsc2UpCisJcHJpdmF0ZSBEYXRlIHVwZGF0ZWQ7CisKKwlAQ29sdW1uKG5hbWUgPSAiZGVsZXRlZCIpCisJcHJpdmF0ZSBib29sZWFuIGRlbGV0ZWQ7CisKKwlAQ29sdW1uKG5hbWUgPSAid2F2X2F1ZGlvX2RhdGEiKQorCUBFbGVtZW50KGRhdGEgPSB0cnVlLCByZXF1aXJlZCA9IGZhbHNlKQorCXByaXZhdGUgU3RyaW5nIHdhdkF1ZGlvRGF0YTsKKworCUBDb2x1bW4obmFtZSA9ICJmdWxsX3dhdl9hdWRpb19kYXRhIikKKwlARWxlbWVudChkYXRhID0gdHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIFN0cmluZyBmdWxsV2F2QXVkaW9EYXRhOworCisJQENvbHVtbihuYW1lID0gImF1ZGlvX2lzX3ZhbGlkIikKKwlARWxlbWVudChkYXRhID0gdHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIEJvb2xlYW4gYXVkaW9Jc1ZhbGlkOworCisJQENvbHVtbihuYW1lID0gImludGVyaWV3X3BvZF9pZCIpCisJQEVsZW1lbnQoZGF0YSA9IHRydWUsIHJlcXVpcmVkID0gZmFsc2UpCisJcHJpdmF0ZSBJbnRlZ2VyIGludGVyaWV3UG9kSWQ7CisKKwlAQ29sdW1uKG5hbWUgPSAiaW5pdGlhbF9nYXBfc2Vjb25kcyIpCisJQEVsZW1lbnQoZGF0YSA9IHRydWUsIHJlcXVpcmVkID0gZmFsc2UpCisJcHJpdmF0ZSBJbnRlZ2VyIGluaXRpYWxHYXBTZWNvbmRzOworCisJLyoqCisJICogdGhpcyBpcyBvbmx5IHRydWUgd2hlbiB0aGUgYXN5bmNocm9ub3VzIHN0cmVhbSB3cml0ZXIncyBoYXZlIGNvbXBsZXRlZCB0bworCSAqIHdyaXRlIHBhY2tldHMgdG8gdGhlIGZpbGUuCisJICogQHNlZSBTdHJlYW1WaWRlb1dyaXRlciNjbG9zZVN0cmVhbSgpCisJICogQHNlZSBTdHJlYW1BdWRpb1dyaXRlciNjbG9zZVN0cmVhbSgpCisJICovCisJQENvbHVtbihuYW1lID0gInN0cmVhbV9yZWFkZXJfdGhyZWFkX2NvbXBsZXRlIikKKwlwcml2YXRlIEJvb2xlYW4gc3RyZWFtUmVhZGVyVGhyZWFkQ29tcGxldGU7CisKKwlwdWJsaWMgbG9uZyBnZXRGbHZSZWNvcmRpbmdNZXRhRGF0YUlkKCkgeworCQlyZXR1cm4gZmx2UmVjb3JkaW5nTWV0YURhdGFJZDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRGbHZSZWNvcmRpbmdNZXRhRGF0YUlkKGxvbmcgZmx2UmVjb3JkaW5nTWV0YURhdGFJZCkgeworCQl0aGlzLmZsdlJlY29yZGluZ01ldGFEYXRhSWQgPSBmbHZSZWNvcmRpbmdNZXRhRGF0YUlkOworCX0KKworCXB1YmxpYyBGbHZSZWNvcmRpbmcgZ2V0Rmx2UmVjb3JkaW5nKCkgeworCQlyZXR1cm4gZmx2UmVjb3JkaW5nOworCX0KKworCXB1YmxpYyB2b2lkIHNldEZsdlJlY29yZGluZyhGbHZSZWNvcmRpbmcgZmx2UmVjb3JkaW5nKSB7CisJCXRoaXMuZmx2UmVjb3JkaW5nID0gZmx2UmVjb3JkaW5nOworCX0KKworCXB1YmxpYyBEYXRlIGdldFJlY29yZFN0YXJ0KCkgeworCQlyZXR1cm4gcmVjb3JkU3RhcnQ7CisJfQorCisJcHVibGljIHZvaWQgc2V0UmVjb3JkU3RhcnQoRGF0ZSByZWNvcmRTdGFydCkgeworCQl0aGlzLnJlY29yZFN0YXJ0ID0gcmVjb3JkU3RhcnQ7CisJfQorCisJcHVibGljIERhdGUgZ2V0UmVjb3JkRW5kKCkgeworCQlyZXR1cm4gcmVjb3JkRW5kOworCX0KKworCXB1YmxpYyB2b2lkIHNldFJlY29yZEVuZChEYXRlIHJlY29yZEVuZCkgeworCQl0aGlzLnJlY29yZEVuZCA9IHJlY29yZEVuZDsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGdldEZyZWVUZXh0VXNlck5hbWUoKSB7CisJCXJldHVybiBmcmVlVGV4dFVzZXJOYW1lOworCX0KKworCXB1YmxpYyB2b2lkIHNldEZyZWVUZXh0VXNlck5hbWUoU3RyaW5nIGZyZWVUZXh0VXNlck5hbWUpIHsKKwkJdGhpcy5mcmVlVGV4dFVzZXJOYW1lID0gZnJlZVRleHRVc2VyTmFtZTsKKwl9CisKKwlwdWJsaWMgQm9vbGVhbiBnZXRJc0F1ZGlvT25seSgpIHsKKwkJcmV0dXJuIGlzQXVkaW9Pbmx5OworCX0KKworCXB1YmxpYyB2b2lkIHNldElzQXVkaW9Pbmx5KEJvb2xlYW4gaXNBdWRpb09ubHkpIHsKKwkJdGhpcy5pc0F1ZGlvT25seSA9IGlzQXVkaW9Pbmx5OworCX0KKworCXB1YmxpYyBCb29sZWFuIGdldElzVmlkZW9Pbmx5KCkgeworCQlyZXR1cm4gaXNWaWRlb09ubHk7CisJfQorCisJcHVibGljIHZvaWQgc2V0SXNWaWRlb09ubHkoQm9vbGVhbiBpc1ZpZGVvT25seSkgeworCQl0aGlzLmlzVmlkZW9Pbmx5ID0gaXNWaWRlb09ubHk7CisJfQorCisJcHVibGljIExvbmcgZ2V0SW5zZXJ0ZWRCeSgpIHsKKwkJcmV0dXJuIGluc2VydGVkQnk7CisJfQorCisJcHVibGljIHZvaWQgc2V0SW5zZXJ0ZWRCeShMb25nIGluc2VydGVkQnkpIHsKKwkJdGhpcy5pbnNlcnRlZEJ5ID0gaW5zZXJ0ZWRCeTsKKwl9CisKKwlwdWJsaWMgRGF0ZSBnZXRJbnNlcnRlZCgpIHsKKwkJcmV0dXJuIGluc2VydGVkOworCX0KKworCXB1YmxpYyB2b2lkIHNldEluc2VydGVkKERhdGUgaW5zZXJ0ZWQpIHsKKwkJdGhpcy5pbnNlcnRlZCA9IGluc2VydGVkOworCX0KKworCXB1YmxpYyBib29sZWFuIGdldERlbGV0ZWQoKSB7CisJCXJldHVybiBkZWxldGVkOworCX0KKworCXB1YmxpYyB2b2lkIHNldERlbGV0ZWQoYm9vbGVhbiBkZWxldGVkKSB7CisJCXRoaXMuZGVsZXRlZCA9IGRlbGV0ZWQ7CisJfQorCisJcHVibGljIERhdGUgZ2V0VXBkYXRlZCgpIHsKKwkJcmV0dXJuIHVwZGF0ZWQ7CisJfQorCisJcHVibGljIHZvaWQgc2V0VXBkYXRlZChEYXRlIHVwZGF0ZWQpIHsKKwkJdGhpcy51cGRhdGVkID0gdXBkYXRlZDsKKwl9CisKKwlwdWJsaWMgQm9vbGVhbiBnZXRJc1NjcmVlbkRhdGEoKSB7CisJCXJldHVybiBpc1NjcmVlbkRhdGE7CisJfQorCisJcHVibGljIHZvaWQgc2V0SXNTY3JlZW5EYXRhKEJvb2xlYW4gaXNTY3JlZW5EYXRhKSB7CisJCXRoaXMuaXNTY3JlZW5EYXRhID0gaXNTY3JlZW5EYXRhOworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0U3RyZWFtTmFtZSgpIHsKKwkJcmV0dXJuIHN0cmVhbU5hbWU7CisJfQorCisJcHVibGljIHZvaWQgc2V0U3RyZWFtTmFtZShTdHJpbmcgc3RyZWFtTmFtZSkgeworCQl0aGlzLnN0cmVhbU5hbWUgPSBzdHJlYW1OYW1lOworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0V2F2QXVkaW9EYXRhKCkgeworCQlyZXR1cm4gd2F2QXVkaW9EYXRhOworCX0KKworCXB1YmxpYyB2b2lkIHNldFdhdkF1ZGlvRGF0YShTdHJpbmcgd2F2QXVkaW9EYXRhKSB7CisJCXRoaXMud2F2QXVkaW9EYXRhID0gd2F2QXVkaW9EYXRhOworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0RnVsbFdhdkF1ZGlvRGF0YSgpIHsKKwkJcmV0dXJuIGZ1bGxXYXZBdWRpb0RhdGE7CisJfQorCisJcHVibGljIHZvaWQgc2V0RnVsbFdhdkF1ZGlvRGF0YShTdHJpbmcgZnVsbFdhdkF1ZGlvRGF0YSkgeworCQl0aGlzLmZ1bGxXYXZBdWRpb0RhdGEgPSBmdWxsV2F2QXVkaW9EYXRhOworCX0KKworCXB1YmxpYyBCb29sZWFuIGdldEF1ZGlvSXNWYWxpZCgpIHsKKwkJcmV0dXJuIGF1ZGlvSXNWYWxpZDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRBdWRpb0lzVmFsaWQoQm9vbGVhbiBhdWRpb0lzVmFsaWQpIHsKKwkJdGhpcy5hdWRpb0lzVmFsaWQgPSBhdWRpb0lzVmFsaWQ7CisJfQorCisJcHVibGljIEludGVnZXIgZ2V0SW50ZXJpZXdQb2RJZCgpIHsKKwkJcmV0dXJuIGludGVyaWV3UG9kSWQ7CisJfQorCisJcHVibGljIHZvaWQgc2V0SW50ZXJpZXdQb2RJZChJbnRlZ2VyIGludGVyaWV3UG9kSWQpIHsKKwkJdGhpcy5pbnRlcmlld1BvZElkID0gaW50ZXJpZXdQb2RJZDsKKwl9CisKKwlwdWJsaWMgSW50ZWdlciBnZXRJbml0aWFsR2FwU2Vjb25kcygpIHsKKwkJcmV0dXJuIGluaXRpYWxHYXBTZWNvbmRzOworCX0KKworCXB1YmxpYyB2b2lkIHNldEluaXRpYWxHYXBTZWNvbmRzKEludGVnZXIgaW5pdGlhbEdhcFNlY29uZHMpIHsKKwkJdGhpcy5pbml0aWFsR2FwU2Vjb25kcyA9IGluaXRpYWxHYXBTZWNvbmRzOworCX0KKworCXB1YmxpYyBCb29sZWFuIGdldFN0cmVhbVJlYWRlclRocmVhZENvbXBsZXRlKCkgeworCQlyZXR1cm4gc3RyZWFtUmVhZGVyVGhyZWFkQ29tcGxldGU7CisJfQorCisJcHVibGljIHZvaWQgc2V0U3RyZWFtUmVhZGVyVGhyZWFkQ29tcGxldGUoQm9vbGVhbiBzdHJlYW1SZWFkZXJUaHJlYWRDb21wbGV0ZSkgeworCQl0aGlzLnN0cmVhbVJlYWRlclRocmVhZENvbXBsZXRlID0gc3RyZWFtUmVhZGVyVGhyZWFkQ29tcGxldGU7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL2ZsdnJlY29yZC9GbHZSZWNvcmRpbmdNZXRhRGVsdGEuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9mbHZyZWNvcmQvRmx2UmVjb3JkaW5nTWV0YURlbHRhLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDJmODdlZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9mbHZyZWNvcmQvRmx2UmVjb3JkaW5nTWV0YURlbHRhLmphdmEKQEAgLTAsMCArMSwyMjAgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuZmx2cmVjb3JkOworCitpbXBvcnQgamF2YS5pby5TZXJpYWxpemFibGU7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CisKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkdlbmVyYXRlZFZhbHVlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkdlbmVyYXRpb25UeXBlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLklkOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRhYmxlOworLyoqCisgKiAKKyAqCisgKi8KK0BFbnRpdHkKK0BUYWJsZShuYW1lID0gImZsdnJlY29yZGluZ19tZXRhX2RlbHRhIikKK3B1YmxpYyBjbGFzcyBGbHZSZWNvcmRpbmdNZXRhRGVsdGEgaW1wbGVtZW50cyBTZXJpYWxpemFibGUgeworCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IC03MzM0ODM5NzQ2OTYyMzQxMzdMOworCUBJZAorCUBHZW5lcmF0ZWRWYWx1ZShzdHJhdGVneSA9IEdlbmVyYXRpb25UeXBlLklERU5USVRZKQorCUBDb2x1bW4obmFtZT0iaWQiKQorCXByaXZhdGUgbG9uZyBmbHZSZWNvcmRpbmdNZXRhRGVsdGFJZDsKKwkKKwlAQ29sdW1uKG5hbWU9ImZsdnJlY29yZGluZ19tZXRhZGF0YV9pZCIpCisJcHJpdmF0ZSBMb25nIGZsdlJlY29yZGluZ01ldGFEYXRhSWQ7CisJCisJQENvbHVtbihuYW1lPSJ0aW1lX3N0YW1wIikKKwlwcml2YXRlIEludGVnZXIgdGltZVN0YW1wOworCQorCUBDb2x1bW4obmFtZT0iZGVsdGFfdGltZSIpCisJcHJpdmF0ZSBMb25nIGRlbHRhVGltZTsKKwkKKwlAQ29sdW1uKG5hbWU9Imxhc3RfdGltZV9zdGFtcCIpCisJcHJpdmF0ZSBMb25nIGxhc3RUaW1lU3RhbXA7CisJCisJQENvbHVtbihuYW1lPSJzdGFydF90aW1lIikKKwlwcml2YXRlIERhdGUgc3RhcnRUaW1lOworCQorCUBDb2x1bW4obmFtZT0iY3VycmVudF9ldmVudF90aW1lIikKKwlwcml2YXRlIERhdGUgY3VycmVudFRpbWU7CisJCisJQENvbHVtbihuYW1lPSJkZWx0YV90aW1lX3N0YW1wIikKKwlwcml2YXRlIExvbmcgZGVsdGFUaW1lU3RhbXA7CisJCisJQENvbHVtbihuYW1lPSJtaXNzaW5nX3RpbWUiKQorCXByaXZhdGUgTG9uZyBtaXNzaW5nVGltZTsKKwkKKwlAQ29sdW1uKG5hbWU9ImR1cmF0aW9uIikKKwlwcml2YXRlIEludGVnZXIgZHVyYXRpb247CisJCisJQENvbHVtbihuYW1lPSJzdGFydF90aW1lX3N0YW1wIikKKwlwcml2YXRlIEludGVnZXIgc3RhcnRUaW1lU3RhbXA7CisJCisJQENvbHVtbihuYW1lPSJwYWNrZXRfdGltZV9zdGFtcCIpCisJcHJpdmF0ZSBJbnRlZ2VyIHBhY2tldFRpbWVTdGFtcDsKKwkKKwlAQ29sdW1uKG5hbWU9IndhdmVfb3V0X3B1dF9uYW1lIikKKwlwcml2YXRlIFN0cmluZyB3YXZlT3V0UHV0TmFtZTsKKwkKKwlAQ29sdW1uKG5hbWU9ImRhdGFfbGVuZ3RoX3BhY2tldCIpCisJcHJpdmF0ZSBJbnRlZ2VyIGRhdGFMZW5ndGhQYWNrZXQ7CisJCisJQENvbHVtbihuYW1lPSJyZWNlaXZlZF9hdWRpb19kYXRhX2xlbmd0aCIpCisJcHJpdmF0ZSBMb25nIHJlY2VpdmVkQXVkaW9EYXRhTGVuZ3RoOworCQorCUBDb2x1bW4obmFtZT0iaXNfZW5kX3BhZGRpbmciKQorCXByaXZhdGUgQm9vbGVhbiBpc0VuZFBhZGRpbmc7CisJCisJQENvbHVtbihuYW1lPSJpc19zdGFydF9wYWRkaW5nIikKKwlwcml2YXRlIEJvb2xlYW4gaXNTdGFydFBhZGRpbmc7CisJCisJQENvbHVtbihuYW1lPSJkZWJ1Z19zdGF0dXMiKQorCXByaXZhdGUgU3RyaW5nIGRlYnVnU3RhdHVzOworCQorCXB1YmxpYyBsb25nIGdldEZsdlJlY29yZGluZ01ldGFEZWx0YUlkKCkgeworCQlyZXR1cm4gZmx2UmVjb3JkaW5nTWV0YURlbHRhSWQ7CisJfQorCXB1YmxpYyB2b2lkIHNldEZsdlJlY29yZGluZ01ldGFEZWx0YUlkKGxvbmcgZmx2UmVjb3JkaW5nTWV0YURlbHRhSWQpIHsKKwkJdGhpcy5mbHZSZWNvcmRpbmdNZXRhRGVsdGFJZCA9IGZsdlJlY29yZGluZ01ldGFEZWx0YUlkOworCX0KKwkKKwlwdWJsaWMgTG9uZyBnZXRGbHZSZWNvcmRpbmdNZXRhRGF0YUlkKCkgeworCQlyZXR1cm4gZmx2UmVjb3JkaW5nTWV0YURhdGFJZDsKKwl9CisJcHVibGljIHZvaWQgc2V0Rmx2UmVjb3JkaW5nTWV0YURhdGFJZChMb25nIGZsdlJlY29yZGluZ01ldGFEYXRhSWQpIHsKKwkJdGhpcy5mbHZSZWNvcmRpbmdNZXRhRGF0YUlkID0gZmx2UmVjb3JkaW5nTWV0YURhdGFJZDsKKwl9CisJCisJcHVibGljIEludGVnZXIgZ2V0VGltZVN0YW1wKCkgeworCQlyZXR1cm4gdGltZVN0YW1wOworCX0KKwlwdWJsaWMgdm9pZCBzZXRUaW1lU3RhbXAoSW50ZWdlciB0aW1lU3RhbXApIHsKKwkJdGhpcy50aW1lU3RhbXAgPSB0aW1lU3RhbXA7CisJfQorCQorCXB1YmxpYyBMb25nIGdldERlbHRhVGltZSgpIHsKKwkJcmV0dXJuIGRlbHRhVGltZTsKKwl9CisJcHVibGljIHZvaWQgc2V0RGVsdGFUaW1lKExvbmcgZGVsdGFUaW1lKSB7CisJCXRoaXMuZGVsdGFUaW1lID0gZGVsdGFUaW1lOworCX0KKwkKKwlwdWJsaWMgTG9uZyBnZXRMYXN0VGltZVN0YW1wKCkgeworCQlyZXR1cm4gbGFzdFRpbWVTdGFtcDsKKwl9CisJcHVibGljIHZvaWQgc2V0TGFzdFRpbWVTdGFtcChMb25nIGxhc3RUaW1lU3RhbXApIHsKKwkJdGhpcy5sYXN0VGltZVN0YW1wID0gbGFzdFRpbWVTdGFtcDsKKwl9CisJCisJcHVibGljIExvbmcgZ2V0RGVsdGFUaW1lU3RhbXAoKSB7CisJCXJldHVybiBkZWx0YVRpbWVTdGFtcDsKKwl9CisJcHVibGljIHZvaWQgc2V0RGVsdGFUaW1lU3RhbXAoTG9uZyBkZWx0YVRpbWVTdGFtcCkgeworCQl0aGlzLmRlbHRhVGltZVN0YW1wID0gZGVsdGFUaW1lU3RhbXA7CisJfQorCQorCXB1YmxpYyBJbnRlZ2VyIGdldFBhY2tldFRpbWVTdGFtcCgpIHsKKwkJcmV0dXJuIHBhY2tldFRpbWVTdGFtcDsKKwl9CisJcHVibGljIHZvaWQgc2V0UGFja2V0VGltZVN0YW1wKEludGVnZXIgcGFja2V0VGltZVN0YW1wKSB7CisJCXRoaXMucGFja2V0VGltZVN0YW1wID0gcGFja2V0VGltZVN0YW1wOworCX0KKwkKKwlwdWJsaWMgSW50ZWdlciBnZXRTdGFydFRpbWVTdGFtcCgpIHsKKwkJcmV0dXJuIHN0YXJ0VGltZVN0YW1wOworCX0KKwlwdWJsaWMgdm9pZCBzZXRTdGFydFRpbWVTdGFtcChJbnRlZ2VyIHN0YXJ0VGltZVN0YW1wKSB7CisJCXRoaXMuc3RhcnRUaW1lU3RhbXAgPSBzdGFydFRpbWVTdGFtcDsKKwl9CisJCisJcHVibGljIExvbmcgZ2V0TWlzc2luZ1RpbWUoKSB7CisJCXJldHVybiBtaXNzaW5nVGltZTsKKwl9CisJcHVibGljIHZvaWQgc2V0TWlzc2luZ1RpbWUoTG9uZyBtaXNzaW5nVGltZSkgeworCQl0aGlzLm1pc3NpbmdUaW1lID0gbWlzc2luZ1RpbWU7CisJfQorCQorCXB1YmxpYyBJbnRlZ2VyIGdldER1cmF0aW9uKCkgeworCQlyZXR1cm4gZHVyYXRpb247CisJfQorCXB1YmxpYyB2b2lkIHNldER1cmF0aW9uKEludGVnZXIgZHVyYXRpb24pIHsKKwkJdGhpcy5kdXJhdGlvbiA9IGR1cmF0aW9uOworCX0KKwkKKwlwdWJsaWMgRGF0ZSBnZXRTdGFydFRpbWUoKSB7CisJCXJldHVybiBzdGFydFRpbWU7CisJfQorCXB1YmxpYyB2b2lkIHNldFN0YXJ0VGltZShEYXRlIHN0YXJ0VGltZSkgeworCQl0aGlzLnN0YXJ0VGltZSA9IHN0YXJ0VGltZTsKKwl9CisJCisJcHVibGljIERhdGUgZ2V0Q3VycmVudFRpbWUoKSB7CisJCXJldHVybiBjdXJyZW50VGltZTsKKwl9CisJcHVibGljIHZvaWQgc2V0Q3VycmVudFRpbWUoRGF0ZSBjdXJyZW50VGltZSkgeworCQl0aGlzLmN1cnJlbnRUaW1lID0gY3VycmVudFRpbWU7CisJfQorCQorCXB1YmxpYyBCb29sZWFuIGdldElzRW5kUGFkZGluZygpIHsKKwkJcmV0dXJuIGlzRW5kUGFkZGluZzsKKwl9CisJcHVibGljIHZvaWQgc2V0SXNFbmRQYWRkaW5nKEJvb2xlYW4gaXNFbmRQYWRkaW5nKSB7CisJCXRoaXMuaXNFbmRQYWRkaW5nID0gaXNFbmRQYWRkaW5nOworCX0KKwkKKwlwdWJsaWMgQm9vbGVhbiBnZXRJc1N0YXJ0UGFkZGluZygpIHsKKwkJcmV0dXJuIGlzU3RhcnRQYWRkaW5nOworCX0KKwlwdWJsaWMgdm9pZCBzZXRJc1N0YXJ0UGFkZGluZyhCb29sZWFuIGlzU3RhcnRQYWRkaW5nKSB7CisJCXRoaXMuaXNTdGFydFBhZGRpbmcgPSBpc1N0YXJ0UGFkZGluZzsKKwl9CisJCisJcHVibGljIFN0cmluZyBnZXREZWJ1Z1N0YXR1cygpIHsKKwkJcmV0dXJuIGRlYnVnU3RhdHVzOworCX0KKwlwdWJsaWMgdm9pZCBzZXREZWJ1Z1N0YXR1cyhTdHJpbmcgZGVidWdTdGF0dXMpIHsKKwkJdGhpcy5kZWJ1Z1N0YXR1cyA9IGRlYnVnU3RhdHVzOworCX0KKwkKKwlwdWJsaWMgU3RyaW5nIGdldFdhdmVPdXRQdXROYW1lKCkgeworCQlyZXR1cm4gd2F2ZU91dFB1dE5hbWU7CisJfQorCXB1YmxpYyB2b2lkIHNldFdhdmVPdXRQdXROYW1lKFN0cmluZyB3YXZlT3V0UHV0TmFtZSkgeworCQl0aGlzLndhdmVPdXRQdXROYW1lID0gd2F2ZU91dFB1dE5hbWU7CisJfQorCQorCXB1YmxpYyBJbnRlZ2VyIGdldERhdGFMZW5ndGhQYWNrZXQoKSB7CisJCXJldHVybiBkYXRhTGVuZ3RoUGFja2V0OworCX0KKwlwdWJsaWMgdm9pZCBzZXREYXRhTGVuZ3RoUGFja2V0KEludGVnZXIgZGF0YUxlbmd0aFBhY2tldCkgeworCQl0aGlzLmRhdGFMZW5ndGhQYWNrZXQgPSBkYXRhTGVuZ3RoUGFja2V0OworCX0KKwkKKwlwdWJsaWMgTG9uZyBnZXRSZWNlaXZlZEF1ZGlvRGF0YUxlbmd0aCgpIHsKKwkJcmV0dXJuIHJlY2VpdmVkQXVkaW9EYXRhTGVuZ3RoOworCX0KKwlwdWJsaWMgdm9pZCBzZXRSZWNlaXZlZEF1ZGlvRGF0YUxlbmd0aChMb25nIHJlY2VpdmVkQXVkaW9EYXRhTGVuZ3RoKSB7CisJCXRoaXMucmVjZWl2ZWRBdWRpb0RhdGFMZW5ndGggPSByZWNlaXZlZEF1ZGlvRGF0YUxlbmd0aDsKKwl9CisJCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvaW52aXRhdGlvbi9JbnZpdGF0aW9ucy5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL2ludml0YXRpb24vSW52aXRhdGlvbnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOGY1MTY2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL2ludml0YXRpb24vSW52aXRhdGlvbnMuamF2YQpAQCAtMCwwICsxLDI5NCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5pbnZpdGF0aW9uOworCitpbXBvcnQgamF2YS5pby5TZXJpYWxpemFibGU7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CisKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkZldGNoVHlwZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5HZW5lcmF0ZWRWYWx1ZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5HZW5lcmF0aW9uVHlwZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5JZDsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Kb2luQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk1hbnlUb09uZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UYWJsZTsKKworaW1wb3J0IG9yZy5hcGFjaGUub3BlbmpwYS5wZXJzaXN0ZW5jZS5qZGJjLkZvcmVpZ25LZXk7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuT21UaW1lWm9uZTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tLlJvb207CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlci5Vc2VyOworCitARW50aXR5CitAVGFibGUobmFtZSA9ICJpbnZpdGF0aW9ucyIpCitwdWJsaWMgY2xhc3MgSW52aXRhdGlvbnMgaW1wbGVtZW50cyBTZXJpYWxpemFibGUgeworCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDExNTMzMjEzNDc5NzQ3MDU1MDZMOworCisJQElkCisJQEdlbmVyYXRlZFZhbHVlKHN0cmF0ZWd5ID0gR2VuZXJhdGlvblR5cGUuSURFTlRJVFkpCisJQENvbHVtbihuYW1lID0gImlkIikKKwlwcml2YXRlIExvbmcgaW52aXRhdGlvbnNfaWQ7CisKKwlATWFueVRvT25lKGZldGNoID0gRmV0Y2hUeXBlLkVBR0VSKQorCUBKb2luQ29sdW1uKG5hbWUgPSAiaW52aXRlZEJ5IiwgbnVsbGFibGUgPSB0cnVlKQorCUBGb3JlaWduS2V5KGVuYWJsZWQgPSB0cnVlKQorCXByaXZhdGUgVXNlciBpbnZpdGVkQnk7CisJCisJQENvbHVtbihuYW1lID0gInN0YXJ0dGltZSIpCisJcHJpdmF0ZSBEYXRlIHN0YXJ0dGltZTsKKwkKKwlAQ29sdW1uKG5hbWUgPSAidXBkYXRldGltZSIpCisJcHJpdmF0ZSBEYXRlIHVwZGF0ZXRpbWU7CisJCisJQENvbHVtbihuYW1lID0gImRlbGV0ZWQiKQorCXByaXZhdGUgYm9vbGVhbiBkZWxldGVkOworCisJQE1hbnlUb09uZShmZXRjaCA9IEZldGNoVHlwZS5FQUdFUikKKwlASm9pbkNvbHVtbihuYW1lID0gInJvb21pZCIsIG51bGxhYmxlID0gdHJ1ZSkKKwlARm9yZWlnbktleShlbmFibGVkID0gdHJ1ZSkKKwlwcml2YXRlIFJvb20gcm9vbTsKKworCS8vIHRoZSBoYXNoIGZvciB0aGUgbGluaworCUBDb2x1bW4obmFtZSA9ICJoYXNoIikKKwlwcml2YXRlIFN0cmluZyBoYXNoOworCQorCUBDb2x1bW4obmFtZSA9ICJpbnZpdGVkbmFtZSIpCisJcHJpdmF0ZSBTdHJpbmcgaW52aXRlZG5hbWU7CisJCisJQENvbHVtbihuYW1lID0gImludml0ZWRFTWFpbCIpCisJcHJpdmF0ZSBTdHJpbmcgaW52aXRlZEVNYWlsOworCQorCUBDb2x1bW4obmFtZSA9ICJpc3Bhc3N3b3JkcHJvdGVjdGVkIikKKwlwcml2YXRlIEJvb2xlYW4gaXNQYXNzd29yZFByb3RlY3RlZDsKKwkKKwlAQ29sdW1uKG5hbWUgPSAiaW52aXRhdGlvbnBhc3MiKQorCXByaXZhdGUgU3RyaW5nIGludml0YXRpb25wYXNzOworCisJLy8gdGhpcyBpcyBuZWNlc3NhcnkgYXMgYSByb29tIGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBtdWx0aXBsZSBkb21haW5zCisJLy8gaXMgZWl0aGVyICpwdWJsaWMqIG9yIGFuIG9yZ2FuaXNhdGlvbl9JRAorCUBDb2x1bW4obmFtZSA9ICJjb25mZXJlbmNlZG9tYWluIikKKwlwcml2YXRlIFN0cmluZyBjb25mZXJlbmNlZG9tYWluOworCisJLy8gSW52aXRhdGlvbnMgYnkgVGltZSBhcmUgb25seSB2YWxpZCBiZXR3ZWVuIHRoZSB2YWxpZEZyb20gdmFsaWRUbworCS8vIFRpbWVTdGFtcAorCUBDb2x1bW4obmFtZSA9ICJpc1ZhbGlkQnlUaW1lIikKKwlwcml2YXRlIEJvb2xlYW4gaXNWYWxpZEJ5VGltZSA9IGZhbHNlOworCQorCUBDb2x1bW4obmFtZSA9ICJ2YWxpZEZyb20iKQorCXByaXZhdGUgRGF0ZSB2YWxpZEZyb207CisJCisJQENvbHVtbihuYW1lID0gInZhbGlkVG8iKQorCXByaXZhdGUgRGF0ZSB2YWxpZFRvOworCS8vIEFuIGludml0YXRpb24gd2hpY2ggaXMgY2FuQmVVc2VkT25seU9uZVRpbWUgPSB0cnVlIGNhbiBiZSBvbmx5IHVzZWQKKwkvLyBvbmUtdGltZQorCUBDb2x1bW4obmFtZSA9ICJjYW5CZVVzZWRPbmx5T25lVGltZSIpCisJcHJpdmF0ZSBCb29sZWFuIGNhbkJlVXNlZE9ubHlPbmVUaW1lID0gZmFsc2U7CisJCisJQENvbHVtbihuYW1lID0gImludml0YXRpb25XYXNVc2VkIikKKwlwcml2YXRlIEJvb2xlYW4gaW52aXRhdGlvbldhc1VzZWQgPSBmYWxzZTsKKwkKKworCUBDb2x1bW4obmFtZSA9ICJhcHBvaW50bWVudF9pZCIpCisJcHJpdmF0ZSBMb25nIGFwcG9pbnRtZW50SWQ7CisKKwkvLyBCYXNldVJMIGRlZmluZWQgYXQgY3JlYXRpb24gb2YgSW52aXRhdGlvbkxpbmsgLSB1c2VkIGZvciBjaHJvbm9sb2dpY2FsCisJLy8gcmVtaW5kZXJzIG9uIHNlcnZlcnNpZGUgKHVwZGF0ZXMpCisJQENvbHVtbihuYW1lID0gImJhc2VVcmwiKQorCXByaXZhdGUgU3RyaW5nIGJhc2VVcmw7CisJCisJQE1hbnlUb09uZShmZXRjaCA9IEZldGNoVHlwZS5FQUdFUikKKwlASm9pbkNvbHVtbihuYW1lID0gIm9tdGltZXpvbmVJZCIsIGluc2VydGFibGUgPSB0cnVlLCB1cGRhdGFibGUgPSB0cnVlKQorCUBGb3JlaWduS2V5KGVuYWJsZWQgPSB0cnVlKQorCXByaXZhdGUgT21UaW1lWm9uZSBvbVRpbWVab25lOyAvLyBJbiBVVEMgKy8tIGhvdXJzCisJCisJcHJpdmF0ZSBib29sZWFuIGFsbG93RW50cnkgPSB0cnVlOworCisJcHVibGljIEludml0YXRpb25zKCkgeworCQlzdXBlcigpOworCX0KKworCXB1YmxpYyBMb25nIGdldEludml0YXRpb25zX2lkKCkgeworCQlyZXR1cm4gaW52aXRhdGlvbnNfaWQ7CisJfQorCisJcHVibGljIHZvaWQgc2V0SW52aXRhdGlvbnNfaWQoTG9uZyBpbnZpdGF0aW9uc19pZCkgeworCQl0aGlzLmludml0YXRpb25zX2lkID0gaW52aXRhdGlvbnNfaWQ7CisJfQorCisJcHVibGljIFJvb20gZ2V0Um9vbSgpIHsKKwkJcmV0dXJuIHJvb207CisJfQorCisJcHVibGljIHZvaWQgc2V0Um9vbShSb29tIHJvb20pIHsKKwkJdGhpcy5yb29tID0gcm9vbTsKKwl9CisKKwlwdWJsaWMgVXNlciBnZXRJbnZpdGVkQnkoKSB7CisJCXJldHVybiBpbnZpdGVkQnk7CisJfQorCisJcHVibGljIHZvaWQgc2V0SW52aXRlZEJ5KFVzZXIgaW52aXRlZEJ5KSB7CisJCXRoaXMuaW52aXRlZEJ5ID0gaW52aXRlZEJ5OworCX0KKworCXB1YmxpYyBEYXRlIGdldFN0YXJ0dGltZSgpIHsKKwkJcmV0dXJuIHN0YXJ0dGltZTsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRTdGFydHRpbWUoRGF0ZSBzdGFydHRpbWUpIHsKKwkJdGhpcy5zdGFydHRpbWUgPSBzdGFydHRpbWU7CisJfQorCisJcHVibGljIERhdGUgZ2V0VXBkYXRldGltZSgpIHsKKwkJcmV0dXJuIHVwZGF0ZXRpbWU7CisJfQorCisJcHVibGljIHZvaWQgc2V0VXBkYXRldGltZShEYXRlIHVwZGF0ZXRpbWUpIHsKKwkJdGhpcy51cGRhdGV0aW1lID0gdXBkYXRldGltZTsKKwl9CisKKwlwdWJsaWMgYm9vbGVhbiBnZXREZWxldGVkKCkgeworCQlyZXR1cm4gZGVsZXRlZDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXREZWxldGVkKGJvb2xlYW4gZGVsZXRlZCkgeworCQl0aGlzLmRlbGV0ZWQgPSBkZWxldGVkOworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0SGFzaCgpIHsKKwkJcmV0dXJuIGhhc2g7CisJfQorCisJcHVibGljIHZvaWQgc2V0SGFzaChTdHJpbmcgaGFzaCkgeworCQl0aGlzLmhhc2ggPSBoYXNoOworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0SW52aXRlZG5hbWUoKSB7CisJCXJldHVybiBpbnZpdGVkbmFtZTsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRJbnZpdGVkbmFtZShTdHJpbmcgaW52aXRlZG5hbWUpIHsKKwkJdGhpcy5pbnZpdGVkbmFtZSA9IGludml0ZWRuYW1lOworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0SW52aXRlZEVNYWlsKCkgeworCQlyZXR1cm4gaW52aXRlZEVNYWlsOworCX0KKworCXB1YmxpYyB2b2lkIHNldEludml0ZWRFTWFpbChTdHJpbmcgaW52aXRlZEVNYWlsKSB7CisJCXRoaXMuaW52aXRlZEVNYWlsID0gaW52aXRlZEVNYWlsOworCX0KKworCXB1YmxpYyBCb29sZWFuIGdldElzUGFzc3dvcmRQcm90ZWN0ZWQoKSB7CisJCXJldHVybiBpc1Bhc3N3b3JkUHJvdGVjdGVkOworCX0KKworCXB1YmxpYyB2b2lkIHNldElzUGFzc3dvcmRQcm90ZWN0ZWQoQm9vbGVhbiBpc1Bhc3N3b3JkUHJvdGVjdGVkKSB7CisJCXRoaXMuaXNQYXNzd29yZFByb3RlY3RlZCA9IGlzUGFzc3dvcmRQcm90ZWN0ZWQ7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRJbnZpdGF0aW9ucGFzcygpIHsKKwkJcmV0dXJuIGludml0YXRpb25wYXNzOworCX0KKworCXB1YmxpYyB2b2lkIHNldEludml0YXRpb25wYXNzKFN0cmluZyBpbnZpdGF0aW9ucGFzcykgeworCQl0aGlzLmludml0YXRpb25wYXNzID0gaW52aXRhdGlvbnBhc3M7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRDb25mZXJlbmNlZG9tYWluKCkgeworCQlyZXR1cm4gY29uZmVyZW5jZWRvbWFpbjsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRDb25mZXJlbmNlZG9tYWluKFN0cmluZyBjb25mZXJlbmNlZG9tYWluKSB7CisJCXRoaXMuY29uZmVyZW5jZWRvbWFpbiA9IGNvbmZlcmVuY2Vkb21haW47CisJfQorCisJcHVibGljIERhdGUgZ2V0VmFsaWRGcm9tKCkgeworCQlyZXR1cm4gdmFsaWRGcm9tOworCX0KKworCXB1YmxpYyB2b2lkIHNldFZhbGlkRnJvbShEYXRlIHZhbGlkRnJvbSkgeworCQl0aGlzLnZhbGlkRnJvbSA9IHZhbGlkRnJvbTsKKwl9CisKKwlwdWJsaWMgRGF0ZSBnZXRWYWxpZFRvKCkgeworCQlyZXR1cm4gdmFsaWRUbzsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRWYWxpZFRvKERhdGUgdmFsaWRUbykgeworCQl0aGlzLnZhbGlkVG8gPSB2YWxpZFRvOworCX0KKworCXB1YmxpYyBCb29sZWFuIGdldENhbkJlVXNlZE9ubHlPbmVUaW1lKCkgeworCQlyZXR1cm4gY2FuQmVVc2VkT25seU9uZVRpbWU7CisJfQorCisJcHVibGljIHZvaWQgc2V0Q2FuQmVVc2VkT25seU9uZVRpbWUoQm9vbGVhbiBjYW5CZVVzZWRPbmx5T25lVGltZSkgeworCQl0aGlzLmNhbkJlVXNlZE9ubHlPbmVUaW1lID0gY2FuQmVVc2VkT25seU9uZVRpbWU7CisJfQorCisJcHVibGljIEJvb2xlYW4gZ2V0SW52aXRhdGlvbldhc1VzZWQoKSB7CisJCXJldHVybiBpbnZpdGF0aW9uV2FzVXNlZDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRJbnZpdGF0aW9uV2FzVXNlZChCb29sZWFuIGludml0YXRpb25XYXNVc2VkKSB7CisJCXRoaXMuaW52aXRhdGlvbldhc1VzZWQgPSBpbnZpdGF0aW9uV2FzVXNlZDsKKwl9CisKKwlwdWJsaWMgQm9vbGVhbiBnZXRJc1ZhbGlkQnlUaW1lKCkgeworCQlyZXR1cm4gaXNWYWxpZEJ5VGltZTsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRJc1ZhbGlkQnlUaW1lKEJvb2xlYW4gaXNWYWxpZEJ5VGltZSkgeworCQl0aGlzLmlzVmFsaWRCeVRpbWUgPSBpc1ZhbGlkQnlUaW1lOworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0QmFzZVVybCgpIHsKKwkJcmV0dXJuIGJhc2VVcmw7CisJfQorCisJcHVibGljIHZvaWQgc2V0QmFzZVVybChTdHJpbmcgYmFzZVVybCkgeworCQl0aGlzLmJhc2VVcmwgPSBiYXNlVXJsOworCX0KKworCXB1YmxpYyBMb25nIGdldEFwcG9pbnRtZW50SWQoKSB7CisJCXJldHVybiBhcHBvaW50bWVudElkOworCX0KKworCXB1YmxpYyB2b2lkIHNldEFwcG9pbnRtZW50SWQoTG9uZyBhcHBvaW50bWVudElkKSB7CisJCXRoaXMuYXBwb2ludG1lbnRJZCA9IGFwcG9pbnRtZW50SWQ7CisJfQorCisJcHVibGljIGJvb2xlYW4gaXNBbGxvd0VudHJ5KCkgeworCQlyZXR1cm4gYWxsb3dFbnRyeTsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRBbGxvd0VudHJ5KGJvb2xlYW4gYWxsb3dFbnRyeSkgeworCQl0aGlzLmFsbG93RW50cnkgPSBhbGxvd0VudHJ5OworCX0KKworCXB1YmxpYyBPbVRpbWVab25lIGdldE9tVGltZVpvbmUoKSB7CisJCXJldHVybiBvbVRpbWVab25lOworCX0KKworCXB1YmxpYyB2b2lkIHNldE9tVGltZVpvbmUoT21UaW1lWm9uZSBvbVRpbWVab25lKSB7CisJCXRoaXMub21UaW1lWm9uZSA9IG9tVGltZVpvbmU7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL2xhbmcvRmllbGRMYW5ndWFnZS5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL2xhbmcvRmllbGRMYW5ndWFnZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjMDIzNWQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvbGFuZy9GaWVsZExhbmd1YWdlLmphdmEKQEAgLTAsMCArMSwxMzMgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMubGFuZzsKKworaW1wb3J0IGphdmEuaW8uU2VyaWFsaXphYmxlOworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgamF2YS51dGlsLkhhc2h0YWJsZTsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ2FzY2FkZVR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5GZXRjaFR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSWQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSm9pbkNvbHVtbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5PbmVUb01hbnk7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5JRGF0YVByb3ZpZGVyRW50aXR5OworQEVudGl0eQorQFRhYmxlKG5hbWUgPSAiZmllbGRsYW5ndWFnZSIpCitwdWJsaWMgY2xhc3MgRmllbGRMYW5ndWFnZSBpbXBsZW1lbnRzIFNlcmlhbGl6YWJsZSwgSURhdGFQcm92aWRlckVudGl0eSB7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMzUwMTY0MzIxMjM4ODM5NTQyNUw7CisJQElkCisJQENvbHVtbihuYW1lPSJpZCIpCisJcHJpdmF0ZSBMb25nIGxhbmd1YWdlX2lkOworCQorCUBDb2x1bW4obmFtZT0ibmFtZSIpCisJcHJpdmF0ZSBTdHJpbmcgbmFtZTsKKwkKKwlAQ29sdW1uKG5hbWU9InN0YXJ0dGltZSIpCisJcHJpdmF0ZSBEYXRlIHN0YXJ0dGltZTsKKwkKKwlAQ29sdW1uKG5hbWU9InVwZGF0ZXRpbWUiKQorCXByaXZhdGUgRGF0ZSB1cGRhdGV0aW1lOworCQorCUBDb2x1bW4obmFtZT0iZGVsZXRlZCIpCisJcHJpdmF0ZSBib29sZWFuIGRlbGV0ZWQ7CisJCisJQENvbHVtbihuYW1lPSJydGwiKQorCXByaXZhdGUgQm9vbGVhbiBydGw7CisJCisJQENvbHVtbihuYW1lPSJjb2RlIikKKwlwcml2YXRlIFN0cmluZyBjb2RlOworCQorCUBPbmVUb01hbnkoZmV0Y2ggPSBGZXRjaFR5cGUuTEFaWSwgY2FzY2FkZSA9IENhc2NhZGVUeXBlLkFMTCkKKwlASm9pbkNvbHVtbihuYW1lID0gImxhbmd1YWdlX2lkIiwgaW5zZXJ0YWJsZSA9IHRydWUsIHVwZGF0YWJsZSA9IHRydWUpCisJcHJpdmF0ZSBDb2xsZWN0aW9uPEZpZWxkbGFuZ3VhZ2VzdmFsdWVzPiBsYW5ndWFnZVZhbHVlczsKKwkKKwlwdWJsaWMgTG9uZyBnZXRMYW5ndWFnZV9pZCgpIHsKKwkJcmV0dXJuIGxhbmd1YWdlX2lkOworCX0KKwlwdWJsaWMgdm9pZCBzZXRMYW5ndWFnZV9pZChMb25nIGxhbmd1YWdlX2lkKSB7CisJCXRoaXMubGFuZ3VhZ2VfaWQgPSBsYW5ndWFnZV9pZDsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7CisJCXJldHVybiBuYW1lOworCX0KKwlwdWJsaWMgdm9pZCBzZXROYW1lKFN0cmluZyBuYW1lKSB7CisJCXRoaXMubmFtZSA9IG5hbWU7CisJfQorCisJcHVibGljIERhdGUgZ2V0U3RhcnR0aW1lKCkgeworCQlyZXR1cm4gc3RhcnR0aW1lOworCX0KKwlwdWJsaWMgdm9pZCBzZXRTdGFydHRpbWUoRGF0ZSBzdGFydHRpbWUpIHsKKwkJdGhpcy5zdGFydHRpbWUgPSBzdGFydHRpbWU7CisJfQorICAgIAorCXB1YmxpYyBEYXRlIGdldFVwZGF0ZXRpbWUoKSB7CisJCXJldHVybiB1cGRhdGV0aW1lOworCX0KKwlwdWJsaWMgdm9pZCBzZXRVcGRhdGV0aW1lKERhdGUgdXBkYXRldGltZSkgeworCQl0aGlzLnVwZGF0ZXRpbWUgPSB1cGRhdGV0aW1lOworCX0KKwkKKwlwdWJsaWMgYm9vbGVhbiBnZXREZWxldGVkKCkgeworCQlyZXR1cm4gZGVsZXRlZDsKKwl9CisJcHVibGljIHZvaWQgc2V0RGVsZXRlZChib29sZWFuIGRlbGV0ZWQpIHsKKwkJdGhpcy5kZWxldGVkID0gZGVsZXRlZDsKKwl9CisKKwlwdWJsaWMgQm9vbGVhbiBnZXRSdGwoKSB7CisJCXJldHVybiBydGw7CisJfQorCXB1YmxpYyB2b2lkIHNldFJ0bChCb29sZWFuIHJ0bCkgeworCQl0aGlzLnJ0bCA9IHJ0bDsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGdldENvZGUoKSB7CisJCXJldHVybiBjb2RlOworCX0KKwlwdWJsaWMgdm9pZCBzZXRDb2RlKFN0cmluZyBjb2RlKSB7CisJCXRoaXMuY29kZSA9IGNvZGU7CisJfQorCQorCXB1YmxpYyBDb2xsZWN0aW9uPEZpZWxkbGFuZ3VhZ2VzdmFsdWVzPiBnZXRMYW5ndWFnZVZhbHVlcygpIHsKKwkJcmV0dXJuIGxhbmd1YWdlVmFsdWVzID09IG51bGwgPyBuZXcgQXJyYXlMaXN0PEZpZWxkbGFuZ3VhZ2VzdmFsdWVzPigpIDogbGFuZ3VhZ2VWYWx1ZXM7CisJfQorCXB1YmxpYyB2b2lkIHNldExhbmd1YWdlVmFsdWVzKENvbGxlY3Rpb248RmllbGRsYW5ndWFnZXN2YWx1ZXM+IGxhbmd1YWdlVmFsdWVzKSB7CisJCWlmIChsYW5ndWFnZVZhbHVlcyAhPSBudWxsKSB7CisJCQl0aGlzLmxhbmd1YWdlVmFsdWVzID0gbGFuZ3VhZ2VWYWx1ZXM7CisJCX0KKwl9CisJcHVibGljIE1hcDxMb25nLCBGaWVsZGxhbmd1YWdlc3ZhbHVlcz4gZ2V0TGFuZ3VhZ2VWYWx1ZXNNYXAoKSB7CisJCUNvbGxlY3Rpb248RmllbGRsYW5ndWFnZXN2YWx1ZXM+IGxhbmdWYWxzID0gZ2V0TGFuZ3VhZ2VWYWx1ZXMoKTsKKwkJTWFwPExvbmcsIEZpZWxkbGFuZ3VhZ2VzdmFsdWVzPiByZXN1bHQgPSBuZXcgSGFzaHRhYmxlPExvbmcsIEZpZWxkbGFuZ3VhZ2VzdmFsdWVzPihsYW5nVmFscy5zaXplKCkpOworCQlmb3IgKEZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGZsdiA6IGxhbmdWYWxzKSB7CisJCQlyZXN1bHQucHV0KGZsdi5nZXRGaWVsZHZhbHVlcygpLmdldEZpZWxkdmFsdWVzX2lkKCksIGZsdik7CisJCX0KKwkJcmV0dXJuIHJlc3VsdDsKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvbGFuZy9GaWVsZGxhbmd1YWdlc3ZhbHVlcy5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL2xhbmcvRmllbGRsYW5ndWFnZXN2YWx1ZXMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTc3OThmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL2xhbmcvRmllbGRsYW5ndWFnZXN2YWx1ZXMuamF2YQpAQCAtMCwwICsxLDE1MiBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5sYW5nOworCitpbXBvcnQgamF2YS5pby5TZXJpYWxpemFibGU7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CisKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkZldGNoVHlwZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5HZW5lcmF0ZWRWYWx1ZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5HZW5lcmF0aW9uVHlwZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5JZDsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Kb2luQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkxvYjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5NYW55VG9PbmU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTmFtZWRRdWVyaWVzOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk5hbWVkUXVlcnk7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5qcGEucGVyc2lzdGVuY2UuamRiYy5Gb3JlaWduS2V5OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLklEYXRhUHJvdmlkZXJFbnRpdHk7CisKK0BFbnRpdHkKK0BOYW1lZFF1ZXJpZXMoeworCUBOYW1lZFF1ZXJ5KG5hbWUgPSAiYWxsRmllbGRMYW5ndWFnZVZhbHVlcyIsIHF1ZXJ5ID0gIlNFTEVDVCBmbHYgRlJPTSBGaWVsZGxhbmd1YWdlc3ZhbHVlcyBmbHYgIgorCQkrICJXSEVSRSBmbHYuZGVsZXRlZCA9IGZhbHNlICIKKwkJKyAiCQlBTkQgZmx2LmZpZWxkdmFsdWVzLmRlbGV0ZWQgPSBmYWxzZSAiCisJCSsgIgkJQU5EIGZsdi5sYW5ndWFnZV9pZCA9IDpsYW5ndWFnZV9pZCBPUkRFUiBCWSBmbHYuZmllbGR2YWx1ZXNfaWQgQVNDIikKKwksIEBOYW1lZFF1ZXJ5KG5hbWU9ImFsbEZpZWxkVmFsdWVzSWRzIiwgcXVlcnkgPSAiU0VMRUNUIGZsdi5maWVsZHZhbHVlc19pZCBGUk9NIEZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGZsdiAiCisJCSsgIldIRVJFIGZsdi5kZWxldGVkID0gZmFsc2UgIgorCQkrICIJCUFORCBmbHYuZmllbGR2YWx1ZXMuZGVsZXRlZCA9IGZhbHNlICIKKwkJKyAiCQlBTkQgZmx2Lmxhbmd1YWdlX2lkID0gOmxhbmd1YWdlX2lkIikKKwksIEBOYW1lZFF1ZXJ5KG5hbWU9ImFsbE5vdFRyYW5zbGF0ZWRWYWx1ZXMiLCBxdWVyeSA9ICJTRUxFQ1QgZmx2IEZST00gRmllbGRsYW5ndWFnZXN2YWx1ZXMgZmx2ICIKKwkJKyAiV0hFUkUgZmx2LmRlbGV0ZWQgPSBmYWxzZSAiCisJCSsgIgkJQU5EIGZsdi5maWVsZHZhbHVlcy5kZWxldGVkID0gZmFsc2UgIgorCQkrICIJCUFORCBmbHYubGFuZ3VhZ2VfaWQgPSAxIEFORCBmbHYuZmllbGR2YWx1ZXNfaWQgTk9UIElOICg6aWRfbGlzdCkiKQorCSwgQE5hbWVkUXVlcnkobmFtZT0iZ2V0RmllbGRMYW5ndWFnZXNWYWx1ZXNCeUlkIgorCQksIHF1ZXJ5ID0gIlNFTEVDVCBmIEZST00gRmllbGRsYW5ndWFnZXN2YWx1ZXMgZiBXSEVSRSBmLmZpZWxkbGFuZ3VhZ2VzdmFsdWVzX2lkID0gOmlkIikKKwksIEBOYW1lZFF1ZXJ5KG5hbWU9ImdldEZpZWxkTGFuZ3VhZ2VzVmFsdWVzQnlWYWx1ZUFuZExhbmciCisJCSwgcXVlcnkgPSAiU0VMRUNUIGYgRlJPTSBGaWVsZGxhbmd1YWdlc3ZhbHVlcyBmIFdIRVJFIGYuZmllbGR2YWx1ZXNfaWQgPSA6ZmllbGRWYWx1ZXNJZCBBTkQgZi5sYW5ndWFnZV9pZCA9IDpsYW5nIEFORCBmLmRlbGV0ZWQgPSBmYWxzZSIpCit9KQorQFRhYmxlKG5hbWUgPSAiZmllbGRsYW5ndWFnZXN2YWx1ZXMiKQorcHVibGljIGNsYXNzIEZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGltcGxlbWVudHMgU2VyaWFsaXphYmxlLCBJRGF0YVByb3ZpZGVyRW50aXR5IHsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAxOTY1MDU1MDQ3MTYzNjM5MjEwTDsKKwlASWQKKwlAR2VuZXJhdGVkVmFsdWUoc3RyYXRlZ3kgPSBHZW5lcmF0aW9uVHlwZS5JREVOVElUWSkKKwlAQ29sdW1uKG5hbWU9ImlkIikKKwlwcml2YXRlIExvbmcgZmllbGRsYW5ndWFnZXN2YWx1ZXNfaWQ7CisJCisJQENvbHVtbihuYW1lPSJmaWVsZHZhbHVlc19pZCIpCisJcHJpdmF0ZSBMb25nIGZpZWxkdmFsdWVzX2lkOworCQorCUBDb2x1bW4obmFtZT0ibGFuZ3VhZ2VfaWQiKQorCXByaXZhdGUgTG9uZyBsYW5ndWFnZV9pZDsKKwkKKwlAQ29sdW1uKG5hbWU9InN0YXJ0dGltZSIpCisJcHJpdmF0ZSBEYXRlIHN0YXJ0dGltZTsKKwkKKwlAQ29sdW1uKG5hbWU9InVwZGF0ZXRpbWUiKQorCXByaXZhdGUgRGF0ZSB1cGRhdGV0aW1lOworCQorCUBDb2x1bW4obmFtZT0iZGVsZXRlZCIpCisJcHJpdmF0ZSBib29sZWFuIGRlbGV0ZWQ7CisJCisJQExvYgorCUBDb2x1bW4obmFtZT0idmFsdWUiKQorCXByaXZhdGUgU3RyaW5nIHZhbHVlOworCisJQE1hbnlUb09uZShmZXRjaCA9IEZldGNoVHlwZS5FQUdFUikKKwlASm9pbkNvbHVtbihuYW1lID0gImZpZWxkdmFsdWVzX2lkIikKKwlARm9yZWlnbktleShlbmFibGVkID0gdHJ1ZSkKKwlwcml2YXRlIEZpZWxkdmFsdWVzIGZpZWxkdmFsdWVzOworCQorCXB1YmxpYyBGaWVsZGxhbmd1YWdlc3ZhbHVlcygpIHsKKwkJc3VwZXIoKTsKKwl9CisJCisJcHVibGljIExvbmcgZ2V0RmllbGRsYW5ndWFnZXN2YWx1ZXNfaWQoKSB7CisJCXJldHVybiBmaWVsZGxhbmd1YWdlc3ZhbHVlc19pZDsKKwl9CisJcHVibGljIHZvaWQgc2V0RmllbGRsYW5ndWFnZXN2YWx1ZXNfaWQoTG9uZyBmaWVsZGxhbmd1YWdlc3ZhbHVlc19pZCkgeworCQl0aGlzLmZpZWxkbGFuZ3VhZ2VzdmFsdWVzX2lkID0gZmllbGRsYW5ndWFnZXN2YWx1ZXNfaWQ7CisJfQorCQorCXB1YmxpYyBEYXRlIGdldFN0YXJ0dGltZSgpIHsKKwkJcmV0dXJuIHN0YXJ0dGltZTsKKwl9CisJcHVibGljIHZvaWQgc2V0U3RhcnR0aW1lKERhdGUgc3RhcnR0aW1lKSB7CisJCXRoaXMuc3RhcnR0aW1lID0gc3RhcnR0aW1lOworCX0KKyAgICAKKwlwdWJsaWMgRGF0ZSBnZXRVcGRhdGV0aW1lKCkgeworCQlyZXR1cm4gdXBkYXRldGltZTsKKwl9CisJcHVibGljIHZvaWQgc2V0VXBkYXRldGltZShEYXRlIHVwZGF0ZXRpbWUpIHsKKwkJdGhpcy51cGRhdGV0aW1lID0gdXBkYXRldGltZTsKKwl9CisJCisJcHVibGljIGJvb2xlYW4gZ2V0RGVsZXRlZCgpIHsKKwkJcmV0dXJuIGRlbGV0ZWQ7CisJfQorCXB1YmxpYyB2b2lkIHNldERlbGV0ZWQoYm9vbGVhbiBkZWxldGVkKSB7CisJCXRoaXMuZGVsZXRlZCA9IGRlbGV0ZWQ7CisJfQorCQorCXB1YmxpYyBMb25nIGdldEZpZWxkdmFsdWVzX2lkKCkgeworCQlyZXR1cm4gZmllbGR2YWx1ZXNfaWQ7CisJfQorCXB1YmxpYyB2b2lkIHNldEZpZWxkdmFsdWVzX2lkKExvbmcgZmllbGR2YWx1ZXNfaWQpIHsKKwkJdGhpcy5maWVsZHZhbHVlc19pZCA9IGZpZWxkdmFsdWVzX2lkOworCX0KKworCXB1YmxpYyBMb25nIGdldExhbmd1YWdlX2lkKCkgeworCQlyZXR1cm4gbGFuZ3VhZ2VfaWQ7CisJfQorCXB1YmxpYyB2b2lkIHNldExhbmd1YWdlX2lkKExvbmcgbGFuZ3VhZ2VfaWQpIHsKKwkJdGhpcy5sYW5ndWFnZV9pZCA9IGxhbmd1YWdlX2lkOworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0VmFsdWUoKSB7CisJCXJldHVybiB2YWx1ZTsKKwl9CisJcHVibGljIHZvaWQgc2V0VmFsdWUoU3RyaW5nIHZhbHVlKSB7CisJCXRoaXMudmFsdWUgPSB2YWx1ZTsKKwl9CisKKwlwdWJsaWMgRmllbGR2YWx1ZXMgZ2V0RmllbGR2YWx1ZXMoKSB7CisJCXJldHVybiBmaWVsZHZhbHVlczsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRGaWVsZHZhbHVlcyhGaWVsZHZhbHVlcyBmaWVsZHZhbHVlcykgeworCQl0aGlzLmZpZWxkdmFsdWVzID0gZmllbGR2YWx1ZXM7CisJfQorCQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL2xhbmcvRmllbGR2YWx1ZXMuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9sYW5nL0ZpZWxkdmFsdWVzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTdkNTc2YQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9sYW5nL0ZpZWxkdmFsdWVzLmphdmEKQEAgLTAsMCArMSwxMjQgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMubGFuZzsKKworaW1wb3J0IGphdmEuaW8uU2VyaWFsaXphYmxlOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5TZXQ7CisKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkZldGNoVHlwZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5JZDsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Kb2luQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk5hbWVkUXVlcmllczsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5OYW1lZFF1ZXJ5OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk9uZVRvTWFueTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UYWJsZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UcmFuc2llbnQ7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5JRGF0YVByb3ZpZGVyRW50aXR5OworCitARW50aXR5CitATmFtZWRRdWVyaWVzKHsKKwlATmFtZWRRdWVyeShuYW1lID0gImdldEZpZWxkQ291bnQiLCBxdWVyeSA9ICJTRUxFQ1QgQ09VTlQoZnYpIEZST00gRmllbGR2YWx1ZXMgZnYgV0hFUkUgZnYuZGVsZXRlZCA9IGZhbHNlICIpCisJLCBATmFtZWRRdWVyeShuYW1lID0gImdldEZpZWxkQnlJZEFuZExhbmd1YWdlIiwgcXVlcnkgPSAiU0VMRUNUIGZ2IEZST00gRmllbGR2YWx1ZXMgZnYgIiArCisJCSJMRUZUIE9VVEVSIEpPSU4gRkVUQ0ggZnYuZmllbGRsYW5ndWFnZXN2YWx1ZXMgZmx2IFdIRVJFICIgKworCQkiCWZ2LmZpZWxkdmFsdWVzX2lkID0gOmlkIEFORCBmdi5kZWxldGVkID0gZmFsc2UgQU5EIGZsdi5sYW5ndWFnZV9pZCA9IDpsYW5nIikKKwksIEBOYW1lZFF1ZXJ5KG5hbWUgPSAiZ2V0RmllbGRCeUxhbmd1YWdlIiwgcXVlcnkgPSAiU0VMRUNUIGZ2IEZST00gRmllbGR2YWx1ZXMgZnYgV0hFUkUgZnYuZGVsZXRlZCA9IGZhbHNlIikgLy9GSVhNRSBubyBsYW5ndWFnZSB5ZXQKK30pCitAVGFibGUobmFtZSA9ICJmaWVsZHZhbHVlcyIpCitwdWJsaWMgY2xhc3MgRmllbGR2YWx1ZXMgaW1wbGVtZW50cyBTZXJpYWxpemFibGUsIElEYXRhUHJvdmlkZXJFbnRpdHkgeworCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IC0zNDM5NjE0NTExMjE4MDI4MDg1TDsKKwlASWQKKwlAQ29sdW1uKG5hbWU9ImlkIikKKwlwcml2YXRlIExvbmcgZmllbGR2YWx1ZXNfaWQ7CisJCisJQENvbHVtbihuYW1lPSJuYW1lIikKKwlwcml2YXRlIFN0cmluZyBuYW1lOworCQorCUBDb2x1bW4obmFtZT0ic3RhcnR0aW1lIikKKwlwcml2YXRlIERhdGUgc3RhcnR0aW1lOworCQorCUBDb2x1bW4obmFtZT0idXBkYXRldGltZSIpCisJcHJpdmF0ZSBEYXRlIHVwZGF0ZXRpbWU7CisJCisJQENvbHVtbihuYW1lPSJkZWxldGVkIikKKwlwcml2YXRlIGJvb2xlYW4gZGVsZXRlZDsKKworCUBPbmVUb01hbnkoZmV0Y2ggPSBGZXRjaFR5cGUuTEFaWSkKKwlASm9pbkNvbHVtbihuYW1lPSJmaWVsZHZhbHVlc19pZCIpCisJcHJpdmF0ZSBTZXQ8RmllbGRsYW5ndWFnZXN2YWx1ZXM+IGZpZWxkbGFuZ3VhZ2VzdmFsdWVzOworCQorCUBUcmFuc2llbnQKKwlwcml2YXRlIEZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGZpZWxkbGFuZ3VhZ2VzdmFsdWU7CisJCisJcHVibGljIEZpZWxkdmFsdWVzKCkgeworCQlzdXBlcigpOworCX0KKwkKKwlwdWJsaWMgTG9uZyBnZXRGaWVsZHZhbHVlc19pZCgpIHsKKwkJcmV0dXJuIGZpZWxkdmFsdWVzX2lkOworCX0KKwlwdWJsaWMgdm9pZCBzZXRGaWVsZHZhbHVlc19pZChMb25nIGZpZWxkdmFsdWVzX2lkKSB7CisJCXRoaXMuZmllbGR2YWx1ZXNfaWQgPSBmaWVsZHZhbHVlc19pZDsKKwl9CQorCisJcHVibGljIFN0cmluZyBnZXROYW1lKCkgeworCQlyZXR1cm4gbmFtZTsKKwl9CisJcHVibGljIHZvaWQgc2V0TmFtZShTdHJpbmcgbmFtZSkgeworCQl0aGlzLm5hbWUgPSBuYW1lOworCX0KKworCXB1YmxpYyBEYXRlIGdldFN0YXJ0dGltZSgpIHsKKwkJcmV0dXJuIHN0YXJ0dGltZTsKKwl9CisJcHVibGljIHZvaWQgc2V0U3RhcnR0aW1lKERhdGUgc3RhcnR0aW1lKSB7CisJCXRoaXMuc3RhcnR0aW1lID0gc3RhcnR0aW1lOworCX0KKyAgICAKKwlwdWJsaWMgRGF0ZSBnZXRVcGRhdGV0aW1lKCkgeworCQlyZXR1cm4gdXBkYXRldGltZTsKKwl9CisJcHVibGljIHZvaWQgc2V0VXBkYXRldGltZShEYXRlIHVwZGF0ZXRpbWUpIHsKKwkJdGhpcy51cGRhdGV0aW1lID0gdXBkYXRldGltZTsKKwl9CisJCisJcHVibGljIGJvb2xlYW4gZ2V0RGVsZXRlZCgpIHsKKwkJcmV0dXJuIGRlbGV0ZWQ7CisJfQorCXB1YmxpYyB2b2lkIHNldERlbGV0ZWQoYm9vbGVhbiBkZWxldGVkKSB7CisJCXRoaXMuZGVsZXRlZCA9IGRlbGV0ZWQ7CisJfQorCisJcHVibGljIFNldDxGaWVsZGxhbmd1YWdlc3ZhbHVlcz4gZ2V0RmllbGRsYW5ndWFnZXN2YWx1ZXMoKSB7CisJCXJldHVybiBmaWVsZGxhbmd1YWdlc3ZhbHVlczsKKwl9CisJcHVibGljIHZvaWQgc2V0RmllbGRsYW5ndWFnZXN2YWx1ZXMoU2V0PEZpZWxkbGFuZ3VhZ2VzdmFsdWVzPiBmaWVsZGxhbmd1YWdlc3ZhbHVlcykgeworCQl0aGlzLmZpZWxkbGFuZ3VhZ2VzdmFsdWVzID0gZmllbGRsYW5ndWFnZXN2YWx1ZXM7CisJfQorCisJcHVibGljIEZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGdldEZpZWxkbGFuZ3VhZ2VzdmFsdWUoKSB7CisJCXJldHVybiBmaWVsZGxhbmd1YWdlc3ZhbHVlOworCX0KKwlwdWJsaWMgdm9pZCBzZXRGaWVsZGxhbmd1YWdlc3ZhbHVlKEZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGZpZWxkbGFuZ3VhZ2VzdmFsdWUpIHsKKwkJdGhpcy5maWVsZGxhbmd1YWdlc3ZhbHVlID0gZmllbGRsYW5ndWFnZXN2YWx1ZTsKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvbG9ncy9Db25mZXJlbmNlTG9nLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvbG9ncy9Db25mZXJlbmNlTG9nLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjhmMjA5YwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9sb2dzL0NvbmZlcmVuY2VMb2cuamF2YQpAQCAtMCwwICsxLDE4NyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5sb2dzOworCitpbXBvcnQgamF2YS5pby5TZXJpYWxpemFibGU7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CisKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkZldGNoVHlwZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5HZW5lcmF0ZWRWYWx1ZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5HZW5lcmF0aW9uVHlwZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5JZDsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Kb2luQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk1hbnlUb09uZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UYWJsZTsKKworaW1wb3J0IG9yZy5hcGFjaGUub3BlbmpwYS5wZXJzaXN0ZW5jZS5qZGJjLkZvcmVpZ25LZXk7CisKKworCitARW50aXR5CitAVGFibGUobmFtZSA9ICJjb25mZXJlbmNlbG9nIikKK3B1YmxpYyBjbGFzcyBDb25mZXJlbmNlTG9nIGltcGxlbWVudHMgU2VyaWFsaXphYmxlIHsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAxNDczNDE0OTY5NDM1MTgxNTlMOworCUBJZAorCUBHZW5lcmF0ZWRWYWx1ZShzdHJhdGVneSA9IEdlbmVyYXRpb25UeXBlLklERU5USVRZKQorCUBDb2x1bW4obmFtZT0iaWQiKQorCXByaXZhdGUgbG9uZyBjb25mZXJlbmNlTG9nSWQ7CisJCisJQE1hbnlUb09uZShmZXRjaCA9IEZldGNoVHlwZS5FQUdFUikKKwlASm9pbkNvbHVtbihuYW1lPSJjb25mZXJlbmNlbG9ndHlwZV9pZCIsIHVwZGF0YWJsZT10cnVlLCBpbnNlcnRhYmxlPXRydWUpCisJQEZvcmVpZ25LZXkoZW5hYmxlZCA9IHRydWUpCisJcHJpdmF0ZSBDb25mZXJlbmNlTG9nVHlwZSBjb25mZXJlbmNlTG9nVHlwZTsKKwkKKwlAQ29sdW1uKG5hbWU9Imluc2VydGVkIikKKwlwcml2YXRlIERhdGUgaW5zZXJ0ZWQ7CisJCisJQENvbHVtbihuYW1lPSJpbnNlcnRlZGJ5IikKKwlwcml2YXRlIGxvbmcgaW5zZXJ0ZWRieTsKKwkKKwkvL05VTEwgbWVhbnMgaXRzIGEgR3Vlc3QvSW52aXRlZCBVc2VyCisJQENvbHVtbihuYW1lPSJ1c2VyX2lkIikKKwlwcml2YXRlIExvbmcgdXNlcklkOworCQorCUBDb2x1bW4obmFtZT0iZXh0ZXJuYWxfdXNlcl9pZCIpCisJcHJpdmF0ZSBTdHJpbmcgZXh0ZXJuYWxVc2VySWQ7CisJCisJQENvbHVtbihuYW1lPSJleHRlcm5hbF91c2VyX3R5cGUiKQorCXByaXZhdGUgU3RyaW5nIGV4dGVybmFsVXNlclR5cGU7CisJCisJQENvbHVtbihuYW1lPSJzdHJlYW1pZCIpCisJcHJpdmF0ZSBTdHJpbmcgc3RyZWFtaWQ7CisJCisJQENvbHVtbihuYW1lPSJyb29tX2lkIikKKwlwcml2YXRlIExvbmcgcm9vbV9pZDsKKwkKKwlAQ29sdW1uKG5hbWU9InVzZXJpcCIpCisJcHJpdmF0ZSBTdHJpbmcgdXNlcmlwOworCQorCUBDb2x1bW4obmFtZT0ic2NvcGVuYW1lIikKKwlwcml2YXRlIFN0cmluZyBzY29wZU5hbWU7CisJCisJQENvbHVtbihuYW1lPSJlbWFpbCIpCisJcHJpdmF0ZSBTdHJpbmcgZW1haWw7CisJCisJQENvbHVtbihuYW1lPSJmaXJzdG5hbWUiKQorCXByaXZhdGUgU3RyaW5nIGZpcnN0bmFtZTsKKwkKKwlAQ29sdW1uKG5hbWU9Imxhc3RuYW1lIikKKwlwcml2YXRlIFN0cmluZyBsYXN0bmFtZTsKKwkKKwlwdWJsaWMgbG9uZyBnZXRDb25mZXJlbmNlTG9nSWQoKSB7CisJCXJldHVybiBjb25mZXJlbmNlTG9nSWQ7CisJfQorCXB1YmxpYyB2b2lkIHNldENvbmZlcmVuY2VMb2dJZChsb25nIGNvbmZlcmVuY2VMb2dJZCkgeworCQl0aGlzLmNvbmZlcmVuY2VMb2dJZCA9IGNvbmZlcmVuY2VMb2dJZDsKKwl9CisJCisJcHVibGljIENvbmZlcmVuY2VMb2dUeXBlIGdldENvbmZlcmVuY2VMb2dUeXBlKCkgeworCQlyZXR1cm4gY29uZmVyZW5jZUxvZ1R5cGU7CisJfQorCXB1YmxpYyB2b2lkIHNldENvbmZlcmVuY2VMb2dUeXBlKENvbmZlcmVuY2VMb2dUeXBlIGNvbmZlcmVuY2VMb2dUeXBlKSB7CisJCXRoaXMuY29uZmVyZW5jZUxvZ1R5cGUgPSBjb25mZXJlbmNlTG9nVHlwZTsKKwl9CisJCisJcHVibGljIERhdGUgZ2V0SW5zZXJ0ZWQoKSB7CisJCXJldHVybiBpbnNlcnRlZDsKKwl9CisJcHVibGljIHZvaWQgc2V0SW5zZXJ0ZWQoRGF0ZSBpbnNlcnRlZCkgeworCQl0aGlzLmluc2VydGVkID0gaW5zZXJ0ZWQ7CisJfQorCisJcHVibGljIGxvbmcgZ2V0SW5zZXJ0ZWRieSgpIHsKKwkJcmV0dXJuIGluc2VydGVkYnk7CisJfQorCXB1YmxpYyB2b2lkIHNldEluc2VydGVkYnkobG9uZyBpbnNlcnRlZGJ5KSB7CisJCXRoaXMuaW5zZXJ0ZWRieSA9IGluc2VydGVkYnk7CisJfQorCQorCXB1YmxpYyBMb25nIGdldFVzZXJJZCgpIHsKKwkJcmV0dXJuIHVzZXJJZDsKKwl9CisJcHVibGljIHZvaWQgc2V0VXNlcklkKExvbmcgdXNlcklkKSB7CisJCXRoaXMudXNlcklkID0gdXNlcklkOworCX0KKwkKKwlwdWJsaWMgU3RyaW5nIGdldFN0cmVhbWlkKCkgeworCQlyZXR1cm4gc3RyZWFtaWQ7CisJfQorCXB1YmxpYyB2b2lkIHNldFN0cmVhbWlkKFN0cmluZyBzdHJlYW1pZCkgeworCQl0aGlzLnN0cmVhbWlkID0gc3RyZWFtaWQ7CisJfQorCQorCXB1YmxpYyBMb25nIGdldFJvb21faWQoKSB7CisJCXJldHVybiByb29tX2lkOworCX0KKwlwdWJsaWMgdm9pZCBzZXRSb29tX2lkKExvbmcgcm9vbV9pZCkgeworCQl0aGlzLnJvb21faWQgPSByb29tX2lkOworCX0KKwkKKwlwdWJsaWMgU3RyaW5nIGdldFVzZXJpcCgpIHsKKwkJcmV0dXJuIHVzZXJpcDsKKwl9CisJcHVibGljIHZvaWQgc2V0VXNlcmlwKFN0cmluZyB1c2VyaXApIHsKKwkJdGhpcy51c2VyaXAgPSB1c2VyaXA7CisJfQorCQorCXB1YmxpYyBTdHJpbmcgZ2V0U2NvcGVOYW1lKCkgeworCQlyZXR1cm4gc2NvcGVOYW1lOworCX0KKwlwdWJsaWMgdm9pZCBzZXRTY29wZU5hbWUoU3RyaW5nIHNjb3BlTmFtZSkgeworCQl0aGlzLnNjb3BlTmFtZSA9IHNjb3BlTmFtZTsKKwl9CisJCisJcHVibGljIFN0cmluZyBnZXRFeHRlcm5hbFVzZXJJZCgpIHsKKwkJcmV0dXJuIGV4dGVybmFsVXNlcklkOworCX0KKwlwdWJsaWMgdm9pZCBzZXRFeHRlcm5hbFVzZXJJZChTdHJpbmcgZXh0ZXJuYWxVc2VySWQpIHsKKwkJdGhpcy5leHRlcm5hbFVzZXJJZCA9IGV4dGVybmFsVXNlcklkOworCX0KKwkKKwlwdWJsaWMgU3RyaW5nIGdldEV4dGVybmFsVXNlclR5cGUoKSB7CisJCXJldHVybiBleHRlcm5hbFVzZXJUeXBlOworCX0KKwlwdWJsaWMgdm9pZCBzZXRFeHRlcm5hbFVzZXJUeXBlKFN0cmluZyBleHRlcm5hbFVzZXJUeXBlKSB7CisJCXRoaXMuZXh0ZXJuYWxVc2VyVHlwZSA9IGV4dGVybmFsVXNlclR5cGU7CisJfQorCQorCXB1YmxpYyBTdHJpbmcgZ2V0RW1haWwoKSB7CisJCXJldHVybiBlbWFpbDsKKwl9CisJcHVibGljIHZvaWQgc2V0RW1haWwoU3RyaW5nIGVtYWlsKSB7CisJCXRoaXMuZW1haWwgPSBlbWFpbDsKKwl9CisJCisJcHVibGljIFN0cmluZyBnZXRGaXJzdG5hbWUoKSB7CisJCXJldHVybiBmaXJzdG5hbWU7CisJfQorCXB1YmxpYyB2b2lkIHNldEZpcnN0bmFtZShTdHJpbmcgZmlyc3RuYW1lKSB7CisJCXRoaXMuZmlyc3RuYW1lID0gZmlyc3RuYW1lOworCX0KKwkKKwlwdWJsaWMgU3RyaW5nIGdldExhc3RuYW1lKCkgeworCQlyZXR1cm4gbGFzdG5hbWU7CisJfQorCXB1YmxpYyB2b2lkIHNldExhc3RuYW1lKFN0cmluZyBsYXN0bmFtZSkgeworCQl0aGlzLmxhc3RuYW1lID0gbGFzdG5hbWU7CisJfQorCQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL2xvZ3MvQ29uZmVyZW5jZUxvZ1R5cGUuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9sb2dzL0NvbmZlcmVuY2VMb2dUeXBlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTA1ZWM1YwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9sb2dzL0NvbmZlcmVuY2VMb2dUeXBlLmphdmEKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5sb2dzOworCitpbXBvcnQgamF2YS5pby5TZXJpYWxpemFibGU7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CisKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkdlbmVyYXRlZFZhbHVlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkdlbmVyYXRpb25UeXBlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLklkOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk5hbWVkUXVlcmllczsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5OYW1lZFF1ZXJ5OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRhYmxlOworCitARW50aXR5CitATmFtZWRRdWVyaWVzKHsKKwlATmFtZWRRdWVyeShuYW1lID0gImdldENvbmZlcmVuY2VMb2dUeXBlQnlFdmVudE5hbWUiLCBxdWVyeSA9ICJzZWxlY3QgYSBmcm9tIENvbmZlcmVuY2VMb2dUeXBlIGEgIiArCisJCQkJCSJXSEVSRSBhLmV2ZW50VHlwZSA9IDpldmVudFR5cGUiKQorfSkKK0BUYWJsZShuYW1lID0gImNvbmZlcmVuY2Vsb2d0eXBlIikKK3B1YmxpYyBjbGFzcyBDb25mZXJlbmNlTG9nVHlwZSBpbXBsZW1lbnRzIFNlcmlhbGl6YWJsZSB7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gNDM4ODk1ODU3OTM1MDM1NjI5NEw7CisJQElkCisJQEdlbmVyYXRlZFZhbHVlKHN0cmF0ZWd5ID0gR2VuZXJhdGlvblR5cGUuSURFTlRJVFkpCisJQENvbHVtbihuYW1lPSJpZCIpCisJcHJpdmF0ZSBsb25nIGNvbmZlcmVuY2VMb2dUeXBlSWQ7CisJCisJQENvbHVtbihuYW1lPSJldmVudHR5cGUiKQorCXByaXZhdGUgU3RyaW5nIGV2ZW50VHlwZTsKKwkKKwlAQ29sdW1uKG5hbWU9Imluc2VydGVkIikKKwlwcml2YXRlIERhdGUgaW5zZXJ0ZWQ7CisJCisJQENvbHVtbihuYW1lPSJpbnNlcnRlZGJ5IikKKwlwcml2YXRlIGxvbmcgaW5zZXJ0ZWRieTsKKwkKKwlwdWJsaWMgbG9uZyBnZXRDb25mZXJlbmNlTG9nVHlwZUlkKCkgeworCQlyZXR1cm4gY29uZmVyZW5jZUxvZ1R5cGVJZDsKKwl9CisJcHVibGljIHZvaWQgc2V0Q29uZmVyZW5jZUxvZ1R5cGVJZChsb25nIGNvbmZlcmVuY2VMb2dUeXBlSWQpIHsKKwkJdGhpcy5jb25mZXJlbmNlTG9nVHlwZUlkID0gY29uZmVyZW5jZUxvZ1R5cGVJZDsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGdldEV2ZW50VHlwZSgpIHsKKwkJcmV0dXJuIGV2ZW50VHlwZTsKKwl9CisJcHVibGljIHZvaWQgc2V0RXZlbnRUeXBlKFN0cmluZyBldmVudFR5cGUpIHsKKwkJdGhpcy5ldmVudFR5cGUgPSBldmVudFR5cGU7CisJfQorCQorCXB1YmxpYyBEYXRlIGdldEluc2VydGVkKCkgeworCQlyZXR1cm4gaW5zZXJ0ZWQ7CisJfQorCXB1YmxpYyB2b2lkIHNldEluc2VydGVkKERhdGUgaW5zZXJ0ZWQpIHsKKwkJdGhpcy5pbnNlcnRlZCA9IGluc2VydGVkOworCX0KKwkKKwlwdWJsaWMgbG9uZyBnZXRJbnNlcnRlZGJ5KCkgeworCQlyZXR1cm4gaW5zZXJ0ZWRieTsKKwl9CisJcHVibGljIHZvaWQgc2V0SW5zZXJ0ZWRieShsb25nIGluc2VydGVkYnkpIHsKKwkJdGhpcy5pbnNlcnRlZGJ5ID0gaW5zZXJ0ZWRieTsKKwl9CisJCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvcG9sbC9Qb2xsVHlwZS5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL3BvbGwvUG9sbFR5cGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzhkMjk2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL3BvbGwvUG9sbFR5cGUuamF2YQpAQCAtMCwwICsxLDkzIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnBvbGw7CisKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkZldGNoVHlwZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5HZW5lcmF0ZWRWYWx1ZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5HZW5lcmF0aW9uVHlwZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5JZDsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Kb2luQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk5hbWVkUXVlcmllczsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5OYW1lZFF1ZXJ5OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk9uZVRvT25lOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRhYmxlOworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVuanBhLnBlcnNpc3RlbmNlLmpkYmMuRm9yZWlnbktleTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5sYW5nLkZpZWxkdmFsdWVzOworCitARW50aXR5CitATmFtZWRRdWVyaWVzKHsKKwlATmFtZWRRdWVyeShuYW1lID0gImdldFBvbGxUeXBlcyIsIHF1ZXJ5ID0gIlNFTEVDVCBwdCBGUk9NIFBvbGxUeXBlIHB0IiksCisJQE5hbWVkUXVlcnkobmFtZSA9ICJnZXRQb2xsVHlwZSIsIHF1ZXJ5ID0gIlNFTEVDVCBwdCBGUk9NIFBvbGxUeXBlIHB0ICIgKworCQkJIldIRVJFIHB0LnBvbGxUeXBlc0lkID0gOnBvbGxUeXBlc0lkIikJCQorfSkKK0BUYWJsZShuYW1lID0gInBvbGxfdHlwZXMiKQorcHVibGljIGNsYXNzIFBvbGxUeXBlIHsKKwlASWQKKwlAR2VuZXJhdGVkVmFsdWUoc3RyYXRlZ3kgPSBHZW5lcmF0aW9uVHlwZS5JREVOVElUWSkKKwlAQ29sdW1uKG5hbWUgPSAiaWQiKQorCXByaXZhdGUgTG9uZyBwb2xsVHlwZXNJZDsKKwkKKwlAT25lVG9PbmUoZmV0Y2ggPSBGZXRjaFR5cGUuRUFHRVIpCisJQEpvaW5Db2x1bW4obmFtZSA9ICJmaWVsZHZhbHVlc19pZCIpCisJQEZvcmVpZ25LZXkoZW5hYmxlZCA9IHRydWUpCisJcHJpdmF0ZSBGaWVsZHZhbHVlcyBsYWJlbDsKKwkKKwlAQ29sdW1uKG5hbWUgPSAibnVtZXJpY19hbnN3ZXIiKQorCXByaXZhdGUgQm9vbGVhbiBpc051bWVyaWNBbnN3ZXI7CisJCisJLyoqCisJICogQHJldHVybiB0aGUgcG9sbFR5cGVzSWQKKwkgKi8KKwlwdWJsaWMgTG9uZyBnZXRQb2xsVHlwZXNJZCgpIHsKKwkJcmV0dXJuIHBvbGxUeXBlc0lkOworCX0KKwkvKioKKwkgKiBAcGFyYW0gcG9sbFR5cGVzSWQgdGhlIHBvbGxUeXBlc0lkIHRvIHNldAorCSAqLworCXB1YmxpYyB2b2lkIHNldFBvbGxUeXBlc0lkKExvbmcgcG9sbFR5cGVzSWQpIHsKKwkJdGhpcy5wb2xsVHlwZXNJZCA9IHBvbGxUeXBlc0lkOworCX0KKwkvKioKKwkgKiBAcmV0dXJuIHRoZSBpc051bWVyaWNBbnN3ZXIKKwkgKi8KKwlwdWJsaWMgQm9vbGVhbiBnZXRJc051bWVyaWNBbnN3ZXIoKSB7CisJCXJldHVybiBpc051bWVyaWNBbnN3ZXI7CisJfQorCS8qKgorCSAqIEBwYXJhbSBpc051bWVyaWNBbnN3ZXIgdGhlIGlzTnVtZXJpY0Fuc3dlciB0byBzZXQKKwkgKi8KKwlwdWJsaWMgdm9pZCBzZXRJc051bWVyaWNBbnN3ZXIoQm9vbGVhbiBpc051bWVyaWNBbnN3ZXIpIHsKKwkJdGhpcy5pc051bWVyaWNBbnN3ZXIgPSBpc051bWVyaWNBbnN3ZXI7CisJfQorCS8qKgorCSAqIEByZXR1cm4gdGhlIHBvbGxUeXBlTGFiZWxpZAorCSAqLworCXB1YmxpYyBGaWVsZHZhbHVlcyBnZXRMYWJlbCgpIHsKKwkJcmV0dXJuIGxhYmVsOworCX0KKwkvKioKKwkgKiBAcGFyYW0gcG9sbFR5cGVMYWJlbGlkIHRoZSBwb2xsVHlwZUxhYmVsaWQgdG8gc2V0CisJICovCisJcHVibGljIHZvaWQgc2V0TGFiZWwoRmllbGR2YWx1ZXMgbGFiZWwpIHsKKwkJdGhpcy5sYWJlbCA9IGxhYmVsOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9wb2xsL1Jvb21Qb2xsLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvcG9sbC9Sb29tUG9sbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmZDdhOTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvcG9sbC9Sb29tUG9sbC5qYXZhCkBAIC0wLDAgKzEsMjMxIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnBvbGw7CisKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuTGlua2VkTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkNhc2NhZGVUeXBlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHk7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRmV0Y2hUeXBlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkdlbmVyYXRlZFZhbHVlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkdlbmVyYXRpb25UeXBlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLklkOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkpvaW5Db2x1bW47CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTmFtZWRRdWVyaWVzOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk5hbWVkUXVlcnk7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuT25lVG9NYW55OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk9uZVRvT25lOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRhYmxlOworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVuanBhLnBlcnNpc3RlbmNlLmpkYmMuRm9yZWlnbktleTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tLlJvb207CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlci5Vc2VyOworaW1wb3J0IG9yZy5zaW1wbGVmcmFtZXdvcmsueG1sLkVsZW1lbnQ7CitpbXBvcnQgb3JnLnNpbXBsZWZyYW1ld29yay54bWwuRWxlbWVudExpc3Q7CitpbXBvcnQgb3JnLnNpbXBsZWZyYW1ld29yay54bWwuUm9vdDsKKworQEVudGl0eQorQE5hbWVkUXVlcmllcyh7CisJQE5hbWVkUXVlcnkobmFtZSA9ICJjbG9zZVBvbGwiLCBxdWVyeSA9ICJVUERBVEUgUm9vbVBvbGwgcnAgU0VUIHJwLmFyY2hpdmVkID0gOmFyY2hpdmVkICIgKworCQkJIldIRVJFIHJwLnJvb20ucm9vbXNfaWQgPSA6cm9vbXNfaWQiKSwKKwlATmFtZWRRdWVyeShuYW1lID0gImRlbGV0ZVBvbGwiLCBxdWVyeSA9ICJERUxFVEUgRlJPTSBSb29tUG9sbCBycCBXSEVSRSBycC5yb29tUG9sbElkID0gOnJvb21Qb2xsSWQiKSwKKwlATmFtZWRRdWVyeShuYW1lID0gImdldFBvbGwiLCBxdWVyeSA9ICJTRUxFQ1QgcnAgRlJPTSBSb29tUG9sbCBycCAiICsKKwkJCSJXSEVSRSBycC5yb29tLnJvb21zX2lkID0gOnJvb21faWQgQU5EIHJwLmFyY2hpdmVkID0gOmFyY2hpdmVkIiksCisJQE5hbWVkUXVlcnkobmFtZSA9ICJnZXRQb2xsTGlzdEJhY2t1cCIsIHF1ZXJ5ID0gIlNFTEVDVCBycCBGUk9NIFJvb21Qb2xsIHJwIiksCisJQE5hbWVkUXVlcnkobmFtZSA9ICJnZXRBcmNoaXZlZFBvbGxMaXN0IiwgcXVlcnkgPSAiU0VMRUNUIHJwIEZST00gUm9vbVBvbGwgcnAgIiArCisJCQkiV0hFUkUgcnAucm9vbS5yb29tc19pZCA9IDpyb29tX2lkIEFORCBycC5hcmNoaXZlZCA9IDphcmNoaXZlZCIpLAorCUBOYW1lZFF1ZXJ5KG5hbWUgPSAiaGFzUG9sbCIsIHF1ZXJ5ID0gIlNFTEVDVCBDT1VOVChycCkgRlJPTSBSb29tUG9sbCBycCAiICsKKwkJCSJXSEVSRSBycC5yb29tLnJvb21zX2lkID0gOnJvb21faWQgQU5EIHJwLmFyY2hpdmVkID0gOmFyY2hpdmVkIikKK30pCitAVGFibGUobmFtZSA9ICJyb29tX3BvbGxzIikKK0BSb290KG5hbWU9InJvb21wb2xsIikKK3B1YmxpYyBjbGFzcyBSb29tUG9sbCB7CisJQElkCisJQEdlbmVyYXRlZFZhbHVlKHN0cmF0ZWd5ID0gR2VuZXJhdGlvblR5cGUuSURFTlRJVFkpCisJQENvbHVtbihuYW1lID0gImlkIikKKwlwcml2YXRlIExvbmcgcm9vbVBvbGxJZDsKKwkKKwlAQ29sdW1uKG5hbWUgPSAicG9sbF9uYW1lIikKKwlARWxlbWVudChuYW1lPSJwb2xsbmFtZSIsIGRhdGE9dHJ1ZSwgcmVxdWlyZWQ9ZmFsc2UpCisJcHJpdmF0ZSBTdHJpbmcgcG9sbE5hbWU7CisJCisJQENvbHVtbihuYW1lID0gInBvbGxfcXVlc3Rpb24iKQorCUBFbGVtZW50KG5hbWU9InBvbGxxdWVzdGlvbiIsIGRhdGE9dHJ1ZSwgcmVxdWlyZWQ9ZmFsc2UpCisJcHJpdmF0ZSBTdHJpbmcgcG9sbFF1ZXN0aW9uOworCQorCUBDb2x1bW4obmFtZSA9ICJjcmVhdGVkIikKKwlARWxlbWVudChkYXRhPXRydWUsIHJlcXVpcmVkPWZhbHNlKQorCXByaXZhdGUgRGF0ZSBjcmVhdGVkOworCQorCUBDb2x1bW4obmFtZSA9ICJhcmNoaXZlZCIpCisJQEVsZW1lbnQoZGF0YT10cnVlLCByZXF1aXJlZD1mYWxzZSkKKwlwcml2YXRlIGJvb2xlYW4gYXJjaGl2ZWQ7CisJCisJQE9uZVRvT25lKGZldGNoID0gRmV0Y2hUeXBlLkVBR0VSKQorCUBKb2luQ29sdW1uKG5hbWUgPSAicG9sbF90eXBlX2lkIikKKwlARm9yZWlnbktleShlbmFibGVkID0gdHJ1ZSkKKwlARWxlbWVudChuYW1lPSJwb2xsdHlwZWlkIiwgZGF0YT10cnVlLCByZXF1aXJlZD1mYWxzZSkKKwlwcml2YXRlIFBvbGxUeXBlIHBvbGxUeXBlOworCQorCUBPbmVUb09uZShmZXRjaCA9IEZldGNoVHlwZS5FQUdFUikKKwlASm9pbkNvbHVtbihuYW1lID0gInVzZXJzX2lkIikKKwlARm9yZWlnbktleShlbmFibGVkID0gdHJ1ZSkKKwlARWxlbWVudChuYW1lPSJjcmVhdGVkYnl1c2VyaWQiLCBkYXRhPXRydWUsIHJlcXVpcmVkPWZhbHNlKQorCXByaXZhdGUgVXNlciBjcmVhdGVkQnk7CisJCisJQE9uZVRvT25lKGZldGNoID0gRmV0Y2hUeXBlLkVBR0VSKQorCUBKb2luQ29sdW1uKG5hbWUgPSAicm9vbXNfaWQiKQorCUBGb3JlaWduS2V5KGVuYWJsZWQgPSB0cnVlKQorCUBFbGVtZW50KG5hbWU9InJvb21pZCIsIGRhdGE9dHJ1ZSwgcmVxdWlyZWQ9ZmFsc2UpCisJcHJpdmF0ZSBSb29tIHJvb207CisJCisJQE9uZVRvTWFueShmZXRjaCA9IEZldGNoVHlwZS5FQUdFUiwgY2FzY2FkZT1DYXNjYWRlVHlwZS5BTEwpCisJQEpvaW5Db2x1bW4obmFtZSA9ICJyb29tX3BvbGxfaWQiKQorCUBFbGVtZW50TGlzdChuYW1lPSJyb29tcG9sbGFuc3dlcnMiLCByZXF1aXJlZD1mYWxzZSkKKwlwcml2YXRlIExpc3Q8Um9vbVBvbGxBbnN3ZXJzPiByb29tUG9sbEFuc3dlckxpc3Q7CisKKwkvKioKKwkgKiBAcmV0dXJuIHRoZSBjcmVhdGVkQnkKKwkgKi8KKwlwdWJsaWMgVXNlciBnZXRDcmVhdGVkQnkoKSB7CisJCXJldHVybiBjcmVhdGVkQnk7CisJfQorCisJLyoqCisJICogQHBhcmFtIGNyZWF0ZWRCeQorCSAqICAgICAgICAgICAgdGhlIGNyZWF0ZWRCeSB0byBzZXQKKwkgKi8KKwlwdWJsaWMgdm9pZCBzZXRDcmVhdGVkQnkoVXNlciBjcmVhdGVkQnkpIHsKKwkJdGhpcy5jcmVhdGVkQnkgPSBjcmVhdGVkQnk7CisJfQorCisJLyoqCisJICogQHJldHVybiB0aGUgY3JlYXRlZAorCSAqLworCXB1YmxpYyBEYXRlIGdldENyZWF0ZWQoKSB7CisJCXJldHVybiBjcmVhdGVkOworCX0KKworCS8qKgorCSAqIEBwYXJhbSBjcmVhdGVkCisJICogICAgICAgICAgICB0aGUgY3JlYXRlZCB0byBzZXQKKwkgKi8KKwlwdWJsaWMgdm9pZCBzZXRDcmVhdGVkKERhdGUgY3JlYXRlZCkgeworCQl0aGlzLmNyZWF0ZWQgPSBjcmVhdGVkOworCX0KKworCS8qKgorCSAqIEByZXR1cm4gdGhlIHBvbGxRdWVzdGlvbgorCSAqLworCXB1YmxpYyBTdHJpbmcgZ2V0UG9sbFF1ZXN0aW9uKCkgeworCQlyZXR1cm4gcG9sbFF1ZXN0aW9uOworCX0KKworCS8qKgorCSAqIEBwYXJhbSBwb2xsUXVlc3Rpb24KKwkgKiAgICAgICAgICAgIHRoZSBwb2xsUXVlc3Rpb24gdG8gc2V0CisJICovCisJcHVibGljIHZvaWQgc2V0UG9sbFF1ZXN0aW9uKFN0cmluZyBwb2xsUXVlc3Rpb24pIHsKKwkJdGhpcy5wb2xsUXVlc3Rpb24gPSBwb2xsUXVlc3Rpb247CisJfQorCisJLyoqCisJICogQHJldHVybiB0aGUgcm9vbVBvbGxBbnN3ZXJMaXN0CisJICovCisJcHVibGljIExpc3Q8Um9vbVBvbGxBbnN3ZXJzPiBnZXRSb29tUG9sbEFuc3dlckxpc3QoKSB7CisJCWlmIChyb29tUG9sbEFuc3dlckxpc3QgPT0gbnVsbCkgeworCQkJcm9vbVBvbGxBbnN3ZXJMaXN0ID0gbmV3IExpbmtlZExpc3Q8Um9vbVBvbGxBbnN3ZXJzPigpOworCQl9CisJCXJldHVybiByb29tUG9sbEFuc3dlckxpc3Q7CisJfQorCisJLyoqCisJICogQHBhcmFtIHJvb21Qb2xsQW5zd2VyTGlzdAorCSAqICAgICAgICAgICAgdGhlIHJvb21Qb2xsQW5zd2VyTGlzdCB0byBzZXQKKwkgKi8KKwlwdWJsaWMgdm9pZCBzZXRSb29tUG9sbEFuc3dlckxpc3QoTGlzdDxSb29tUG9sbEFuc3dlcnM+IHJvb21Qb2xsQW5zd2VyTGlzdCkgeworCQl0aGlzLnJvb21Qb2xsQW5zd2VyTGlzdCA9IHJvb21Qb2xsQW5zd2VyTGlzdDsKKwl9CisKKwkvKioKKwkgKiBAcmV0dXJuIHRoZSByb29tUG9sbElkCisJICovCisJcHVibGljIExvbmcgZ2V0Um9vbVBvbGxJZCgpIHsKKwkJcmV0dXJuIHJvb21Qb2xsSWQ7CisJfQorCisJLyoqCisJICogQHBhcmFtIHJvb21Qb2xsSWQKKwkgKiAgICAgICAgICAgIHRoZSByb29tUG9sbElkIHRvIHNldAorCSAqLworCXB1YmxpYyB2b2lkIHNldFJvb21Qb2xsSWQoTG9uZyByb29tUG9sbElkKSB7CisJCXRoaXMucm9vbVBvbGxJZCA9IHJvb21Qb2xsSWQ7CisJfQorCisJLyoqCisJICogQHJldHVybiB0aGUgcG9sbFR5cGVJZAorCSAqLworCXB1YmxpYyBQb2xsVHlwZSBnZXRQb2xsVHlwZSgpIHsKKwkJcmV0dXJuIHBvbGxUeXBlOworCX0KKworCXB1YmxpYyB2b2lkIHNldFBvbGxUeXBlKFBvbGxUeXBlIHBvbGxUeXBlKSB7CisJCXRoaXMucG9sbFR5cGUgPSBwb2xsVHlwZTsKKwl9CisKKwlwdWJsaWMgUm9vbSBnZXRSb29tKCkgeworCQlyZXR1cm4gcm9vbTsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRSb29tKFJvb20gcm9vbSkgeworCQl0aGlzLnJvb20gPSByb29tOworCX0KKworCS8qKgorCSAqIEByZXR1cm4gdGhlIGFyY2hpdmVkCisJICovCisJcHVibGljIGJvb2xlYW4gaXNBcmNoaXZlZCgpIHsKKwkJcmV0dXJuIGFyY2hpdmVkOworCX0KKworCS8qKgorCSAqIEBwYXJhbSBhcmNoaXZlZCB0aGUgYXJjaGl2ZWQgdG8gc2V0CisJICovCisJcHVibGljIHZvaWQgc2V0QXJjaGl2ZWQoYm9vbGVhbiBhcmNoaXZlZCkgeworCQl0aGlzLmFyY2hpdmVkID0gYXJjaGl2ZWQ7CisJfQorCisJLyoqCisJICogQHJldHVybiB0aGUgcG9sbE5hbWUKKwkgKi8KKwlwdWJsaWMgU3RyaW5nIGdldFBvbGxOYW1lKCkgeworCQlyZXR1cm4gcG9sbE5hbWU7CisJfQorCisJLyoqCisJICogQHBhcmFtIHBvbGxOYW1lIHRoZSBwb2xsTmFtZSB0byBzZXQKKwkgKi8KKwlwdWJsaWMgdm9pZCBzZXRQb2xsTmFtZShTdHJpbmcgcG9sbE5hbWUpIHsKKwkJdGhpcy5wb2xsTmFtZSA9IHBvbGxOYW1lOworCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL3BvbGwvUm9vbVBvbGxBbnN3ZXJzLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvcG9sbC9Sb29tUG9sbEFuc3dlcnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OThmOWZkNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9wb2xsL1Jvb21Qb2xsQW5zd2Vycy5qYXZhCkBAIC0wLDAgKzEsMTUzIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnBvbGw7CisKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKKworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHk7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRmV0Y2hUeXBlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkdlbmVyYXRlZFZhbHVlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkdlbmVyYXRpb25UeXBlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLklkOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkpvaW5Db2x1bW47CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTmFtZWRRdWVyaWVzOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk5hbWVkUXVlcnk7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuT25lVG9PbmU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5qcGEucGVyc2lzdGVuY2UuamRiYy5Gb3JlaWduS2V5OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuVXNlcjsKK2ltcG9ydCBvcmcuc2ltcGxlZnJhbWV3b3JrLnhtbC5FbGVtZW50OworaW1wb3J0IG9yZy5zaW1wbGVmcmFtZXdvcmsueG1sLlJvb3Q7CisKK0BFbnRpdHkKK0BOYW1lZFF1ZXJpZXMoeworCUBOYW1lZFF1ZXJ5KG5hbWUgPSAiaGFzVm90ZWQiLCBxdWVyeSA9ICJTRUxFQ1QgcnBhIEZST00gUm9vbVBvbGxBbnN3ZXJzIHJwYSAiCisJCQkJKyAiV0hFUkUgcnBhLnJvb21Qb2xsLnJvb20ucm9vbXNfaWQgPSA6cm9vbV9pZCAiICsKKwkJCQkiQU5EIHJwYS52b3RlZFVzZXIudXNlcl9pZCA9IDp1c2VyaWQgQU5EIHJwYS5yb29tUG9sbC5hcmNoaXZlZCA9IDphcmNoaXZlZCIpCit9KQorQFRhYmxlKG5hbWUgPSAicm9vbV9wb2xsX2Fuc3dlcnMiKQorQFJvb3QobmFtZT0icm9vbXBvbGxhbnN3ZXIiKQorcHVibGljIGNsYXNzIFJvb21Qb2xsQW5zd2VycyB7CisJCisJQElkCisJQEdlbmVyYXRlZFZhbHVlKHN0cmF0ZWd5ID0gR2VuZXJhdGlvblR5cGUuSURFTlRJVFkpCisJQENvbHVtbihuYW1lID0gImlkIikKKwlwcml2YXRlIExvbmcgaWQ7CisJCisJQE9uZVRvT25lKGZldGNoID0gRmV0Y2hUeXBlLkVBR0VSKQorCUBKb2luQ29sdW1uKG5hbWUgPSAidXNlcnNfaWQiKQorCUBGb3JlaWduS2V5KGVuYWJsZWQgPSB0cnVlKQorCUBFbGVtZW50KG5hbWU9InZvdGVkdXNlcmlkIiwgZGF0YT1mYWxzZSwgcmVxdWlyZWQ9ZmFsc2UpCisJcHJpdmF0ZSBVc2VyIHZvdGVkVXNlcjsKKwkKKwlAQ29sdW1uKG5hbWUgPSAiYW5zd2VyIikKKwlARWxlbWVudChkYXRhPWZhbHNlLCByZXF1aXJlZD1mYWxzZSkKKwlwcml2YXRlIEJvb2xlYW4gYW5zd2VyOworCQorCUBDb2x1bW4obmFtZSA9ICJwb2ludExpc3QiKQorCUBFbGVtZW50KG5hbWU9InBvaW50bGlzdCIsIGRhdGE9ZmFsc2UsIHJlcXVpcmVkPWZhbHNlKQorCXByaXZhdGUgSW50ZWdlciBwb2ludExpc3Q7CisJCisJQENvbHVtbihuYW1lID0gInZvdGVEYXRlIikKKwlARWxlbWVudChuYW1lPSJ2b3RlZGF0ZSIsIGRhdGE9ZmFsc2UpCisJcHJpdmF0ZSBEYXRlIHZvdGVEYXRlOworCQorCUBPbmVUb09uZShmZXRjaCA9IEZldGNoVHlwZS5FQUdFUikKKwlASm9pbkNvbHVtbihuYW1lID0gInJvb21fcG9sbF9pZCIpCisJcHJpdmF0ZSBSb29tUG9sbCByb29tUG9sbDsKKwkKKwlwdWJsaWMgTG9uZyBnZXRJZCgpIHsKKwkJcmV0dXJuIGlkOworCX0KKworCXB1YmxpYyB2b2lkIHNldElkKExvbmcgaWQpIHsKKwkJdGhpcy5pZCA9IGlkOworCX0KKworCS8qKgorCSAqIEByZXR1cm4gdGhlIGFuc3dlcgorCSAqLworCXB1YmxpYyBCb29sZWFuIGdldEFuc3dlcigpIHsKKwkJcmV0dXJuIGFuc3dlcjsKKwl9CisKKwkvKioKKwkgKiBAcGFyYW0gYW5zd2VyCisJICogICAgICAgICAgICB0aGUgYW5zd2VyIHRvIHNldAorCSAqLworCXB1YmxpYyB2b2lkIHNldEFuc3dlcihCb29sZWFuIGFuc3dlcikgeworCQl0aGlzLmFuc3dlciA9IGFuc3dlcjsKKwl9CisKKwkvKioKKwkgKiBAcmV0dXJuIHRoZSBwb2ludExpc3QKKwkgKi8KKwlwdWJsaWMgSW50ZWdlciBnZXRQb2ludExpc3QoKSB7CisJCXJldHVybiBwb2ludExpc3Q7CisJfQorCisJLyoqCisJICogQHBhcmFtIHBvaW50TGlzdAorCSAqICAgICAgICAgICAgdGhlIHBvaW50TGlzdCB0byBzZXQKKwkgKi8KKwlwdWJsaWMgdm9pZCBzZXRQb2ludExpc3QoSW50ZWdlciBwb2ludExpc3QpIHsKKwkJdGhpcy5wb2ludExpc3QgPSBwb2ludExpc3Q7CisJfQorCisJLyoqCisJICogQHJldHVybiB0aGUgdm90ZURhdGUKKwkgKi8KKwlwdWJsaWMgRGF0ZSBnZXRWb3RlRGF0ZSgpIHsKKwkJcmV0dXJuIHZvdGVEYXRlOworCX0KKworCS8qKgorCSAqIEBwYXJhbSB2b3RlRGF0ZQorCSAqICAgICAgICAgICAgdGhlIHZvdGVEYXRlIHRvIHNldAorCSAqLworCXB1YmxpYyB2b2lkIHNldFZvdGVEYXRlKERhdGUgdm90ZURhdGUpIHsKKwkJdGhpcy52b3RlRGF0ZSA9IHZvdGVEYXRlOworCX0KKworCS8qKgorCSAqIEByZXR1cm4gdGhlIHZvdGVkQ2xpZW50CisJICovCisJcHVibGljIFVzZXIgZ2V0Vm90ZWRVc2VyKCkgeworCQlyZXR1cm4gdm90ZWRVc2VyOworCX0KKworCS8qKgorCSAqIEBwYXJhbSB2b3RlZENsaWVudAorCSAqICAgICAgICAgICAgdGhlIHZvdGVkQ2xpZW50IHRvIHNldAorCSAqLworCXB1YmxpYyB2b2lkIHNldFZvdGVkVXNlcihVc2VyIHZvdGVkVXNlcikgeworCQl0aGlzLnZvdGVkVXNlciA9IHZvdGVkVXNlcjsKKwl9CisKKwlwdWJsaWMgUm9vbVBvbGwgZ2V0Um9vbVBvbGwoKSB7CisJCXJldHVybiByb29tUG9sbDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRSb29tUG9sbChSb29tUG9sbCByb29tUG9sbCkgeworCQl0aGlzLnJvb21Qb2xsID0gcm9vbVBvbGw7CisJfQorCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvcm9vbS9DbGllbnQuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9yb29tL0NsaWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlMjBiZTIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvcm9vbS9DbGllbnQuamF2YQpAQCAtMCwwICsxLDg4OSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tOworCitpbXBvcnQgamF2YS5pby5TZXJpYWxpemFibGU7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CisKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkZldGNoVHlwZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5HZW5lcmF0ZWRWYWx1ZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5HZW5lcmF0aW9uVHlwZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5JZDsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Kb2luQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk1hbnlUb09uZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5OYW1lZFF1ZXJpZXM7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTmFtZWRRdWVyeTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UYWJsZTsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLlNlcnZlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5tYXRoLkNhbGVuZGFyUGF0dGVybnM7CisKKy8qKgorICogQ2FuIGJlIGNvbmZpZ3VyZWQgdG8gYmUgc3RvcmVkIGluIG1lbW9yeSBvciBpbiBkYXRhYmFzZQorICogCisgKiBAYXV0aG9yIHNlYmF3YWduZXIKKyAqLworQEVudGl0eQorQE5hbWVkUXVlcmllcyh7CisJQE5hbWVkUXVlcnkobmFtZSA9ICJkZWxldGVBbGwiLCBxdWVyeSA9ICJERUxFVEUgRlJPTSBDbGllbnQiKSwKKwlATmFtZWRRdWVyeShuYW1lID0gImRlbGV0ZWRCeUlkIiwgcXVlcnkgPSAiREVMRVRFIEZST00gQ2xpZW50IGMgV0hFUkUgYy5pZCA9IDppZCIpLAorCUBOYW1lZFF1ZXJ5KG5hbWUgPSAiZGVsZXRlQ2xpZW50c0J5U2VydmVyIiwgcXVlcnkgPSAiREVMRVRFIEZST00gQ2xpZW50IGMgV0hFUkUgYy5zZXJ2ZXIgPSA6c2VydmVyIiksCisJQE5hbWVkUXVlcnkobmFtZSA9ICJkZWxldGVkQnlTZXJ2ZXJBbmRTdHJlYW1JZCIsIHF1ZXJ5ID0gIkRFTEVURSBGUk9NIENsaWVudCBjIFdIRVJFIGMuc2VydmVyID0gOnNlcnZlciBBTkQgYy5zdHJlYW1pZCBMSUtFIDpzdHJlYW1pZCIpLAorCUBOYW1lZFF1ZXJ5KG5hbWUgPSAiY291bnRDbGllbnRzIiwgcXVlcnkgPSAiU0VMRUNUIGNvdW50KGMuaWQpIEZST00gQ2xpZW50IGMiKSwKKwlATmFtZWRRdWVyeShuYW1lID0gImNvdW50Q2xpZW50c0J5U2VydmVyIiwgcXVlcnkgPSAiU0VMRUNUIGNvdW50KGMuaWQpIEZST00gQ2xpZW50IGMgV0hFUkUgYy5zZXJ2ZXIgPSA6c2VydmVyIiksCisJQE5hbWVkUXVlcnkobmFtZSA9ICJjb3VudENsaWVudHNCeVNlcnZlckFuZFN0cmVhbUlkIiwgcXVlcnkgPSAiU0VMRUNUIGNvdW50KGMuaWQpIEZST00gQ2xpZW50IGMgV0hFUkUgYy5zdHJlYW1pZCBMSUtFIDpzdHJlYW1pZCBBTkQgYy5zZXJ2ZXIgPSA6c2VydmVyIiksCisJQE5hbWVkUXVlcnkobmFtZSA9ICJnZXRDbGllbnRCeVNlcnZlckFuZFN0cmVhbUlkIiwgcXVlcnkgPSAiU0VMRUNUIGMgRlJPTSBDbGllbnQgYyBXSEVSRSBjLnN0cmVhbWlkIExJS0UgOnN0cmVhbWlkIEFORCBjLnNlcnZlciA9IDpzZXJ2ZXIiKSwKKwlATmFtZWRRdWVyeShuYW1lID0gImdldENsaWVudHNCeVB1YmxpY1NJREFuZFNlcnZlciIsIHF1ZXJ5ID0gIlNFTEVDVCBjIEZST00gQ2xpZW50IGMgV0hFUkUgYy5wdWJsaWNTSUQgTElLRSA6cHVibGljU0lEIEFORCBjLnNlcnZlciA9IDpzZXJ2ZXIiKSwKKwlATmFtZWRRdWVyeShuYW1lID0gImdldENsaWVudHNCeVB1YmxpY1NJRCIsIHF1ZXJ5ID0gIlNFTEVDVCBjIEZST00gQ2xpZW50IGMgV0hFUkUgYy5wdWJsaWNTSUQgTElLRSA6cHVibGljU0lEIiksCisJQE5hbWVkUXVlcnkobmFtZSA9ICJnZXRDbGllbnRzQnlTZXJ2ZXIiLCBxdWVyeSA9ICJTRUxFQ1QgYyBGUk9NIENsaWVudCBjIFdIRVJFIGMuc2VydmVyID0gOnNlcnZlciIpLAorCUBOYW1lZFF1ZXJ5KG5hbWUgPSAiZ2V0Q2xpZW50cyIsIHF1ZXJ5ID0gIlNFTEVDVCBjIEZST00gQ2xpZW50IGMiKSwKKwlATmFtZWRRdWVyeShuYW1lID0gImdldENsaWVudHNXaXRoU2VydmVyIiwgcXVlcnkgPSAiU0VMRUNUIGMgRlJPTSBDbGllbnQgYyBMRUZUIEpPSU4gRkVUQ0ggYy5zZXJ2ZXIiKSwKKwlATmFtZWRRdWVyeShuYW1lID0gImdldENsaWVudHNCeVVzZXJJZCIsIHF1ZXJ5ID0gIlNFTEVDVCBjIEZST00gQ2xpZW50IGMgV0hFUkUgYy5zZXJ2ZXIgPSA6c2VydmVyIEFORCBjLnVzZXJfaWQgPSA6dXNlcl9pZCIpLAorCUBOYW1lZFF1ZXJ5KG5hbWUgPSAiZ2V0Q2xpZW50c0J5Um9vbUlkIiwgcXVlcnkgPSAiU0VMRUNUIGMgRlJPTSBDbGllbnQgYyBXSEVSRSBjLnJvb21faWQgPSA6cm9vbV9pZCIpLAorCUBOYW1lZFF1ZXJ5KG5hbWUgPSAiZ2V0Um9vbXNJZHNCeVNlcnZlciIsIHF1ZXJ5ID0gIlNFTEVDVCBjLnJvb21faWQgRlJPTSBDbGllbnQgYyBXSEVSRSBjLnNlcnZlciA9IDpzZXJ2ZXIgR1JPVVAgQlkgYy5yb29tX2lkIikKK30pCitAVGFibGUobmFtZSA9ICJjbGllbnQiKQorcHVibGljIGNsYXNzIENsaWVudCBpbXBsZW1lbnRzIFNlcmlhbGl6YWJsZSB7CisKKwkvKioKKwkgKiAJCisJICovCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gLTU5ODA2MzY0NDc4NzcwNzc3MzBMOworCQorCUBJZAorCUBHZW5lcmF0ZWRWYWx1ZShzdHJhdGVneSA9IEdlbmVyYXRpb25UeXBlLklERU5USVRZKQorCUBDb2x1bW4obmFtZSA9ICJpZCIpCisJcHJpdmF0ZSBsb25nIGlkOworCQorCS8qKgorCSAqIEBzZWUgQ2xpZW50I2dldFVzZXJuYW1lKCkKKwkgKi8KKwlAQ29sdW1uKG5hbWUgPSAidXNlcm5hbWUiKQorCXByaXZhdGUgU3RyaW5nIHVzZXJuYW1lID0gIiI7CisJCisJLyoqCisJICogQHNlZSBDbGllbnQjZ2V0U3RyZWFtaWQoKQorCSAqLworCUBDb2x1bW4obmFtZSA9ICJzdHJlYW1pZCIpCisJcHJpdmF0ZSBTdHJpbmcgc3RyZWFtaWQgPSAiIjsKKwkKKwkvKioKKwkgKiBAc2VlIENsaWVudCNnZXRTY29wZSgpCisJICovCisJQENvbHVtbihuYW1lID0gInNjb3BlIikKKwlwcml2YXRlIFN0cmluZyBzY29wZSA9ICIiOworCQorCS8qKgorCSAqIEBzZWUgQ2xpZW50I2dldFZXaWR0aCgpCisJICovCisJQENvbHVtbihuYW1lID0gInZ3aWR0aCIpCisJcHJpdmF0ZSBpbnQgdldpZHRoID0gMDsKKwkKKwkvKioKKwkgKiBAc2VlIENsaWVudCNnZXRWSGVpZ2h0KCkKKwkgKi8KKwlAQ29sdW1uKG5hbWUgPSAidmhlaWdodCIpCisJcHJpdmF0ZSBpbnQgdkhlaWdodCA9IDA7CisJCisJLyoqCisJICogQHNlZSBDbGllbnQjZ2V0VlgoKQorCSAqLworCUBDb2x1bW4obmFtZSA9ICJ2eCIpCisJcHJpdmF0ZSBpbnQgdlggPSAwOworCQorCS8qKgorCSAqIEBzZWUgQ2xpZW50I2dldFZZKCkKKwkgKi8KKwlAQ29sdW1uKG5hbWUgPSAidnkiKQorCXByaXZhdGUgaW50IHZZID0gMDsKKwkKKwkvKioKKwkgKiBAc2VlIENsaWVudCNnZXRTdHJlYW1QdWJsaXNoTmFtZSgpCisJICovCisJQENvbHVtbihuYW1lID0gInN0cmVhbV9wdWJsaXNoX25hbWUiKQorCXByaXZhdGUgU3RyaW5nIHN0cmVhbVB1Ymxpc2hOYW1lID0gIiI7CisJCisJLyoqCisJICogQHNlZSBDbGllbnQjZ2V0UHVibGljU0lEKCkKKwkgKi8KKwlAQ29sdW1uKG5hbWUgPSAicHVibGljX3NpZCIpCisJcHJpdmF0ZSBTdHJpbmcgcHVibGljU0lEID0gIiI7CisJCisJLyoqCisJICogQHNlZSBDbGllbnQjZ2V0SXNNb2QoKQorCSAqLworCUBDb2x1bW4obmFtZSA9ICJpc19tb2QiKQorCXByaXZhdGUgQm9vbGVhbiBpc01vZCA9IGZhbHNlOworCQorCS8qKgorCSAqIEBzZWUgQ2xpZW50I2dldElzU3VwZXJNb2RlcmF0b3IoKQorCSAqLworCUBDb2x1bW4obmFtZSA9ICJpc19zdXBlcm1vZGVyYXRvciIpCisJcHJpdmF0ZSBCb29sZWFuIGlzU3VwZXJNb2RlcmF0b3IgPSBmYWxzZTsKKwkKKwkvKioKKwkgKiBAc2VlIENsaWVudCNnZXRDYW5EcmF3KCkKKwkgKi8KKwlAQ29sdW1uKG5hbWUgPSAiY2FuX2RyYXciKQorCXByaXZhdGUgQm9vbGVhbiBjYW5EcmF3ID0gZmFsc2U7CisJCisJLyoqCisJICogQHNlZSBDbGllbnQjZ2V0Q2FuU2hhcmUoKQorCSAqLworCUBDb2x1bW4obmFtZSA9ICJjYW5fc2hhcmUiKQorCXByaXZhdGUgQm9vbGVhbiBjYW5TaGFyZSA9IGZhbHNlOworCQorCS8qKgorCSAqIEBzZWUgQ2xpZW50I2dldENhblJlbW90ZSgpCisJICovCisJQENvbHVtbihuYW1lID0gImNhbl9yZW1vdGUiKQorCXByaXZhdGUgQm9vbGVhbiBjYW5SZW1vdGUgPSBmYWxzZTsKKwkKKwkvKioKKwkgKiBAc2VlIENsaWVudCNnZXRDYW5HaXZlQXVkaW8oKQorCSAqLworCUBDb2x1bW4obmFtZSA9ICJjYW5fZ2l2ZWF1ZGlvIikKKyAgICBwcml2YXRlIEJvb2xlYW4gY2FuR2l2ZUF1ZGlvID0gZmFsc2U7CisJCisgICAgLyoqCisJICogQHNlZSBDbGllbnQjZ2V0Q29ubmVjdGVkU2luY2UoKQorCSAqLworCUBDb2x1bW4obmFtZSA9ICJjb25uZWN0ZWRfc2luY2UiKQorCXByaXZhdGUgRGF0ZSBjb25uZWN0ZWRTaW5jZTsKKwkKKwkvKioKKwkgKiBAc2VlIENsaWVudCNnZXRGb3JtYXRlZERhdGUoKQorCSAqLworCUBDb2x1bW4obmFtZSA9ICJmb3JtYXRlZF9kYXRlIikKKwlwcml2YXRlIFN0cmluZyBmb3JtYXRlZERhdGU7CisJCisJLyoqCisJICogQHNlZSBDbGllbnQjZ2V0SXNTY3JlZW5DbGllbnQoKQorCSAqLworCUBDb2x1bW4obmFtZSA9ICJpc19zY3JlZW5jbGllbnQiKQorCXByaXZhdGUgQm9vbGVhbiBpc1NjcmVlbkNsaWVudCA9IGZhbHNlOworCQorCS8qKgorCSAqIEBzZWUgQ2xpZW50I2dldElzQVZDbGllbnQoKQorCSAqLworCUBDb2x1bW4obmFtZSA9ICJpc19hdmNsaWVudCIpCisJcHJpdmF0ZSBib29sZWFuIGlzQVZDbGllbnQgPSBmYWxzZTsKKwkKKwkvKioKKwkgKiBAc2VlIENsaWVudCNnZXRVc2VyY29sb3IoKQorCSAqLworCUBDb2x1bW4obmFtZSA9ICJ1c2VyY29sb3IiKQorCXByaXZhdGUgU3RyaW5nIHVzZXJjb2xvcjsKKwkKKwkvKioKKwkgKiBAc2VlIENsaWVudCNnZXRVc2VycG9zKCkKKwkgKi8KKwlAQ29sdW1uKG5hbWUgPSAidXNlcnBvcyIpCisJcHJpdmF0ZSBJbnRlZ2VyIHVzZXJwb3M7CisJCisJLyoqCisJICogQHNlZSBDbGllbnQjZ2V0VXNlcmlwKCkKKwkgKi8KKwlAQ29sdW1uKG5hbWUgPSAidXNlcmlwIikKKwlwcml2YXRlIFN0cmluZyB1c2VyaXA7CisJCisJLyoqCisJICogQHNlZSBDbGllbnQjZ2V0VXNlcnBvcnQoKQorCSAqLworCUBDb2x1bW4obmFtZSA9ICJ1c2VycG9ydCIpCisJcHJpdmF0ZSBpbnQgdXNlcnBvcnQ7CisJCisJLyoqCisJICogQHNlZSBDbGllbnQjZ2V0Um9vbV9pZCgpCisJICovCisJQENvbHVtbihuYW1lID0gInJvb21faWQiKQorCXByaXZhdGUgTG9uZyByb29tX2lkOworCQorCS8qKgorCSAqIEBzZWUgQ2xpZW50I2dldFJvb21FbnRlcigpCisJICovCisJQENvbHVtbihuYW1lID0gInJvb21fZW50ZXIiKQorCXByaXZhdGUgRGF0ZSByb29tRW50ZXIgPSBudWxsOworCQorCS8qKgorCSAqIEBzZWUgQ2xpZW50I2dldEJyb2FkQ2FzdElEKCkKKwkgKi8KKwlAQ29sdW1uKG5hbWUgPSAiYnJvYWRjYXN0X2lkIikKKwlwcml2YXRlIGxvbmcgYnJvYWRDYXN0SUQgPSAtMjsKKwkKKwkvKioKKwkgKiBAc2VlIENsaWVudCNnZXRVc2VyX2lkKCkKKwkgKi8KKwlAQ29sdW1uKG5hbWUgPSAidXNlcl9pZCIpCisJcHJpdmF0ZSBMb25nIHVzZXJfaWQgPSBudWxsOworCQorCS8qKgorCSAqIEBzZWUgQ2xpZW50I2dldEZpcnN0bmFtZSgpCisJICovCisJQENvbHVtbihuYW1lID0gImZpcnN0bmFtZSIpCisJcHJpdmF0ZSBTdHJpbmcgZmlyc3RuYW1lID0gIiI7CisJCisJLyoqCisJICogQHNlZSBDbGllbnQjZ2V0TGFzdG5hbWUoKQorCSAqLworCUBDb2x1bW4obmFtZSA9ICJsYXN0bmFtZSIpCisJcHJpdmF0ZSBTdHJpbmcgbGFzdG5hbWUgPSAiIjsKKwkKKwkvKioKKwkgKiBAc2VlIENsaWVudCNnZXRNYWlsKCkKKwkgKi8KKwlAQ29sdW1uKG5hbWUgPSAibWFpbCIpCisJcHJpdmF0ZSBTdHJpbmcgbWFpbDsKKwkKKwkvKioKKwkgKiBAc2VlIENsaWVudCNnZXRMYXN0TG9naW4oKQorCSAqLworCUBDb2x1bW4obmFtZSA9ICJsYXN0X2xvZ2luIikKKwlwcml2YXRlIFN0cmluZyBsYXN0TG9naW47CisJCisJLyoqCisJICogQHNlZSBDbGllbnQjZ2V0T2ZmaWNpYWxfY29kZSgpCisJICovCisJQENvbHVtbihuYW1lID0gIm9mZmljaWFsX2NvZGUiKQorCXByaXZhdGUgU3RyaW5nIG9mZmljaWFsX2NvZGU7CisJCisJLyoqCisJICogQHNlZSBDbGllbnQjZ2V0UGljdHVyZV91cmkoKQorCSAqLworCUBDb2x1bW4obmFtZSA9ICJwaWN0dXJlX3VyaSIpCisJcHJpdmF0ZSBTdHJpbmcgcGljdHVyZV91cmk7CisJCisJLyoqCisJICogQHNlZSBDbGllbnQjZ2V0TGFuZ3VhZ2UoKQorCSAqLworCUBDb2x1bW4obmFtZSA9ICJsYW5ndWFnZSIpCisJcHJpdmF0ZSBTdHJpbmcgbGFuZ3VhZ2UgPSAiIjsKKwkKKwkvKioKKwkgKiBAc2VlIENsaWVudCNnZXRBdnNldHRpbmdzKCkKKwkgKi8KKwlAQ29sdW1uKG5hbWUgPSAiYXZzZXR0aW5ncyIpCisJcHJpdmF0ZSBTdHJpbmcgYXZzZXR0aW5ncyA9ICIiOworCQorCS8qKgorCSAqIEBzZWUgQ2xpZW50I2dldFN3ZnVybCgpCisJICovCisJLy8gRklYTUU6IE1vdmUgdG8ge0BsaW5rIENsaWVudFNlc3Npb259CisJQENvbHVtbihuYW1lID0gInN3ZnVybCIpCisJcHJpdmF0ZSBTdHJpbmcgc3dmdXJsOworCQorCS8qKgorCSAqIEBzZWUgQ2xpZW50I2dldElzUmVjb3JkaW5nKCkKKwkgKi8KKwlAQ29sdW1uKG5hbWUgPSAiaXNfcmVjb3JkaW5nIikKKwlwcml2YXRlIEJvb2xlYW4gaXNSZWNvcmRpbmcgPSBmYWxzZTsKKwkKKwkvKioKKwkgKiBAc2VlIENsaWVudCNnZXRSb29tUmVjb3JkaW5nTmFtZSgpCisJICovCisJQENvbHVtbihuYW1lID0gInJvb21fcmVjb3JkaW5nX25hbWUiKQorCXByaXZhdGUgU3RyaW5nIHJvb21SZWNvcmRpbmdOYW1lOworCQorCS8qKgorCSAqIEBzZWUgQ2xpZW50I2dldEZsdlJlY29yZGluZ0lkKCkKKwkgKi8KKwlAQ29sdW1uKG5hbWUgPSAiZmx2cmVjb3JkaW5nX2lkIikKKwlwcml2YXRlIExvbmcgZmx2UmVjb3JkaW5nSWQ7CisJCisJLyoqCisJICogQHNlZSBDbGllbnQjZ2V0Rmx2UmVjb3JkaW5nTWV0YURhdGFJZCgpCisJICovCisJQENvbHVtbihuYW1lID0gImZsdnJlY29yZGluZ21ldGFkYXRhX2lkIikKKwlwcml2YXRlIExvbmcgZmx2UmVjb3JkaW5nTWV0YURhdGFJZDsKKwkKKwkvKioKKwkgKiBAc2VlIENsaWVudCNnZXRPcmdhbml6YXRpb25faWQoKQorCSAqLworCUBDb2x1bW4obmFtZSA9ICJvcmdhbml6YXRpb25faWQiKQorCXByaXZhdGUgTG9uZyBvcmdhbml6YXRpb25faWQ7CisJCisJLyoqCisJICogQHNlZSBDbGllbnQjaXNTdGFydFJlY29yZGluZygpCisJICovCisJQENvbHVtbihuYW1lID0gInN0YXJ0X3JlY29yZGluZyIpCisJcHJpdmF0ZSBib29sZWFuIHN0YXJ0UmVjb3JkaW5nID0gZmFsc2U7CisJCisJLyoqCisJICogQHNlZSBDbGllbnQjaXNTdGFydFN0cmVhbWluZygpCisJICovCisJQENvbHVtbihuYW1lID0gInN0YXJ0X3N0cmVhbWluZyIpCisJcHJpdmF0ZSBib29sZWFuIHN0YXJ0U3RyZWFtaW5nID0gZmFsc2U7CisJCisJLyoqCisJICogQHNlZSBDbGllbnQjaXNTY3JlZW5QdWJsaXNoU3RhcnRlZCgpCisJICovCisJQENvbHVtbihuYW1lID0gInNjcmVlbl9wdWJsaXNoX3N0YXJ0ZWQiKQorCXByaXZhdGUgYm9vbGVhbiBzY3JlZW5QdWJsaXNoU3RhcnRlZCA9IGZhbHNlOworCQorCS8qKgorCSAqIEBzZWUgQ2xpZW50I2lzU3RyZWFtUHVibGlzaFN0YXJ0ZWQoKQorCSAqLworCUBDb2x1bW4obmFtZSA9ICJzdHJlYW1fcHVibGlzaF9zdGFydGVkIikKKwlwcml2YXRlIGJvb2xlYW4gc3RyZWFtUHVibGlzaFN0YXJ0ZWQgPSBmYWxzZTsKKwkKKwkvKioKKwkgKiBAc2VlIENsaWVudCNnZXRJc0Jyb2FkY2FzdGluZygpCisJICovCisJQENvbHVtbihuYW1lID0gImlzX2Jyb2FkY2FzdGluZyIpCisJcHJpdmF0ZSBCb29sZWFuIGlzQnJvYWRjYXN0aW5nID0gZmFsc2U7CisJCisJLyoqCisJICogQHNlZSBDbGllbnQjZ2V0RXh0ZXJuYWxVc2VySWQoKQorCSAqLworCUBDb2x1bW4obmFtZSA9ICJleHRlcm5hbF91c2VyX2lkIikKKwlwcml2YXRlIFN0cmluZyBleHRlcm5hbFVzZXJJZDsKKwkKKwkvKioKKwkgKiBAc2VlIENsaWVudCNnZXRFeHRlcm5hbFVzZXJUeXBlKCkKKwkgKi8KKwlAQ29sdW1uKG5hbWUgPSAiZXh0ZXJuYWxfdXNlcl90eXBlIikKKyAgICBwcml2YXRlIFN0cmluZyBleHRlcm5hbFVzZXJUeXBlOworCQorICAgIC8qKgorCSAqIEBzZWUgQ2xpZW50I2dldEludGVydmlld1BvZElkKCkKKwkgKi8KKwlAQ29sdW1uKG5hbWUgPSAiaW50ZXJ2aWV3X3BvZF9pZCIpCisgICAgcHJpdmF0ZSBJbnRlZ2VyIGludGVydmlld1BvZElkID0gbnVsbDsKKwkKKyAgICAvKioKKwkgKiBAc2VlIENsaWVudCNnZXRBbGxvd1JlY29yZGluZygpCisJICovCisJQENvbHVtbihuYW1lID0gImFsbG93X3JlY29yZGluZyIpCisgICAgcHJpdmF0ZSBCb29sZWFuIGFsbG93UmVjb3JkaW5nID0gdHJ1ZTsKKwkKKyAgICAvKioKKwkgKiBAc2VlIENsaWVudCNnZXRab21iaWVDaGVja0ZsYWcoKQorCSAqLworCUBDb2x1bW4obmFtZSA9ICJ6b21iaWVfY2hlY2tfZmxhZyIpCisJcHJpdmF0ZSBCb29sZWFuIHpvbWJpZUNoZWNrRmxhZyA9IGZhbHNlOworCQorCS8qKgorCSAqIEBzZWUgQ2xpZW50I2dldE1pY011dGVkKCkKKwkgKi8KKwlAQ29sdW1uKG5hbWUgPSAibWljX211dGVkIikKKyAgICBwcml2YXRlIEJvb2xlYW4gbWljTXV0ZWQgPSBmYWxzZTsKKwkKKyAgICAvKioKKwkgKiBAc2VlIENsaWVudCNpc1NpcFRyYW5zcG9ydCgpCisJICovCisJQENvbHVtbihuYW1lID0gInNpcF90cmFuc3BvcnQiKQorICAgIHByaXZhdGUgYm9vbGVhbiBzaXBUcmFuc3BvcnQgPSBmYWxzZTsKKwkKKwlATWFueVRvT25lKGZldGNoID0gRmV0Y2hUeXBlLkxBWlkpCisJQEpvaW5Db2x1bW4obmFtZSA9ICJzZXJ2ZXJfaWQiKQorCXByaXZhdGUgU2VydmVyIHNlcnZlcjsKKyAgICAKKyAgICBwdWJsaWMgQ2xpZW50KCkgeworICAgIAkKKyAgICB9CisgICAgCisJcHVibGljIENsaWVudChTdHJpbmcgc3RyZWFtaWQsIFN0cmluZyBwdWJsaWNTSUQsIExvbmcgcm9vbV9pZCwKKwkJCUxvbmcgdXNlcl9pZCwgU3RyaW5nIGZpcnN0bmFtZSwgU3RyaW5nIGxhc3RuYW1lLCBib29sZWFuIGlzQVZDbGllbnQsCisJCQlTdHJpbmcgdXNlcm5hbWUsIFN0cmluZyBjb25uZWN0ZWRTaW5jZSwgU3RyaW5nIHNjb3BlKSB7CisJCXN1cGVyKCk7CisJCXRoaXMuc3RyZWFtaWQgPSBzdHJlYW1pZDsKKwkJdGhpcy5wdWJsaWNTSUQgPSBwdWJsaWNTSUQ7CisJCXRoaXMucm9vbV9pZCA9IHJvb21faWQ7CisJCXRoaXMudXNlcl9pZCA9IHVzZXJfaWQ7CisJCXRoaXMuZmlyc3RuYW1lID0gZmlyc3RuYW1lOworCQl0aGlzLmxhc3RuYW1lID0gbGFzdG5hbWU7CisJCXRoaXMuaXNBVkNsaWVudCA9IGlzQVZDbGllbnQ7CisJCXRoaXMudXNlcm5hbWUgPSB1c2VybmFtZTsKKwkJdGhpcy5jb25uZWN0ZWRTaW5jZSA9IENhbGVuZGFyUGF0dGVybnMucGFyc2VEYXRlV2l0aEhvdXIoY29ubmVjdGVkU2luY2UpOworCQl0aGlzLnNjb3BlID0gc2NvcGU7CisJfQorCisJcHVibGljIHZvaWQgc2V0VXNlck9iamVjdChMb25nIHVzZXJfaWQsIFN0cmluZyB1c2VybmFtZSwgU3RyaW5nIGZpcnN0bmFtZSwgU3RyaW5nIGxhc3RuYW1lKSB7CisJCXRoaXMudXNlcl9pZCA9IHVzZXJfaWQ7CisJCXRoaXMudXNlcm5hbWUgPSB1c2VybmFtZTsKKwkJdGhpcy5maXJzdG5hbWUgPSBmaXJzdG5hbWU7CisJCXRoaXMubGFzdG5hbWUgPSBsYXN0bmFtZTsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRVc2VyT2JqZWN0KFN0cmluZyB1c2VybmFtZSwgU3RyaW5nIGZpcnN0bmFtZSwgU3RyaW5nIGxhc3RuYW1lKSB7CisJCXRoaXMudXNlcm5hbWUgPSB1c2VybmFtZTsKKwkJdGhpcy5maXJzdG5hbWUgPSBmaXJzdG5hbWU7CisJCXRoaXMubGFzdG5hbWUgPSBsYXN0bmFtZTsKKwl9CisJCisJcHVibGljIGxvbmcgZ2V0SWQoKSB7CisJCXJldHVybiBpZDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRJZChsb25nIGlkKSB7CisJCXRoaXMuaWQgPSBpZDsKKwl9CisKKwlwdWJsaWMgRGF0ZSBnZXRDb25uZWN0ZWRTaW5jZSgpIHsKKwkJcmV0dXJuIGNvbm5lY3RlZFNpbmNlOworCX0KKworCXB1YmxpYyB2b2lkIHNldENvbm5lY3RlZFNpbmNlKERhdGUgY29ubmVjdGVkU2luY2UpIHsKKwkJdGhpcy5jb25uZWN0ZWRTaW5jZSA9IGNvbm5lY3RlZFNpbmNlOworCX0KKworCXB1YmxpYyBCb29sZWFuIGdldElzTW9kKCkgeworCQlyZXR1cm4gaXNNb2Q7CisJfQorCisJcHVibGljIHZvaWQgc2V0SXNNb2QoQm9vbGVhbiBpc01vZCkgeworCQl0aGlzLmlzTW9kID0gaXNNb2Q7CisJfQorCQorCXB1YmxpYyBTdHJpbmcgZ2V0VXNlcm5hbWUoKSB7CisJCXJldHVybiB1c2VybmFtZTsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRVc2VybmFtZShTdHJpbmcgdXNlcm5hbWUpIHsKKwkJdGhpcy51c2VybmFtZSA9IHVzZXJuYW1lOworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0U3RyZWFtaWQoKSB7CisJCXJldHVybiBzdHJlYW1pZDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRTdHJlYW1pZChTdHJpbmcgc3RyZWFtaWQpIHsKKwkJdGhpcy5zdHJlYW1pZCA9IHN0cmVhbWlkOworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0U2NvcGUoKSB7CisJCXJldHVybiBzY29wZTsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRTY29wZShTdHJpbmcgc2NvcGUpIHsKKwkJdGhpcy5zY29wZSA9IHNjb3BlOworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0Rm9ybWF0ZWREYXRlKCkgeworCQlyZXR1cm4gZm9ybWF0ZWREYXRlOworCX0KKworCXB1YmxpYyB2b2lkIHNldEZvcm1hdGVkRGF0ZShTdHJpbmcgZm9ybWF0ZWREYXRlKSB7CisJCXRoaXMuZm9ybWF0ZWREYXRlID0gZm9ybWF0ZWREYXRlOworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0VXNlcmNvbG9yKCkgeworCQlyZXR1cm4gdXNlcmNvbG9yOworCX0KKworCXB1YmxpYyB2b2lkIHNldFVzZXJjb2xvcihTdHJpbmcgdXNlcmNvbG9yKSB7CisJCXRoaXMudXNlcmNvbG9yID0gdXNlcmNvbG9yOworCX0KKworCXB1YmxpYyBJbnRlZ2VyIGdldFVzZXJwb3MoKSB7CisJCXJldHVybiB1c2VycG9zOworCX0KKworCXB1YmxpYyB2b2lkIHNldFVzZXJwb3MoSW50ZWdlciB1c2VycG9zKSB7CisJCXRoaXMudXNlcnBvcyA9IHVzZXJwb3M7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRVc2VyaXAoKSB7CisJCXJldHVybiB1c2VyaXA7CisJfQorCisJcHVibGljIHZvaWQgc2V0VXNlcmlwKFN0cmluZyB1c2VyaXApIHsKKwkJdGhpcy51c2VyaXAgPSB1c2VyaXA7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRTd2Z1cmwoKSB7CisJCXJldHVybiBzd2Z1cmw7CisJfQorCisJcHVibGljIHZvaWQgc2V0U3dmdXJsKFN0cmluZyBzd2Z1cmwpIHsKKwkJdGhpcy5zd2Z1cmwgPSBzd2Z1cmw7CisJfQorCisJcHVibGljIGludCBnZXRVc2VycG9ydCgpIHsKKwkJcmV0dXJuIHVzZXJwb3J0OworCX0KKworCXB1YmxpYyB2b2lkIHNldFVzZXJwb3J0KGludCB1c2VycG9ydCkgeworCQl0aGlzLnVzZXJwb3J0ID0gdXNlcnBvcnQ7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRGaXJzdG5hbWUoKSB7CisJCXJldHVybiBmaXJzdG5hbWU7CisJfQorCisJcHVibGljIHZvaWQgc2V0Rmlyc3RuYW1lKFN0cmluZyBmaXJzdG5hbWUpIHsKKwkJdGhpcy5maXJzdG5hbWUgPSBmaXJzdG5hbWU7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRMYW5ndWFnZSgpIHsKKwkJcmV0dXJuIGxhbmd1YWdlOworCX0KKworCXB1YmxpYyB2b2lkIHNldExhbmd1YWdlKFN0cmluZyBsYW5ndWFnZSkgeworCQl0aGlzLmxhbmd1YWdlID0gbGFuZ3VhZ2U7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRMYXN0TG9naW4oKSB7CisJCXJldHVybiBsYXN0TG9naW47CisJfQorCisJcHVibGljIHZvaWQgc2V0TGFzdExvZ2luKFN0cmluZyBsYXN0TG9naW4pIHsKKwkJdGhpcy5sYXN0TG9naW4gPSBsYXN0TG9naW47CisJfQorCisJcHVibGljIFN0cmluZyBnZXRMYXN0bmFtZSgpIHsKKwkJcmV0dXJuIGxhc3RuYW1lOworCX0KKworCXB1YmxpYyB2b2lkIHNldExhc3RuYW1lKFN0cmluZyBsYXN0bmFtZSkgeworCQl0aGlzLmxhc3RuYW1lID0gbGFzdG5hbWU7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRNYWlsKCkgeworCQlyZXR1cm4gbWFpbDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRNYWlsKFN0cmluZyBtYWlsKSB7CisJCXRoaXMubWFpbCA9IG1haWw7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRPZmZpY2lhbF9jb2RlKCkgeworCQlyZXR1cm4gb2ZmaWNpYWxfY29kZTsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRPZmZpY2lhbF9jb2RlKFN0cmluZyBvZmZpY2lhbF9jb2RlKSB7CisJCXRoaXMub2ZmaWNpYWxfY29kZSA9IG9mZmljaWFsX2NvZGU7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRQaWN0dXJlX3VyaSgpIHsKKwkJcmV0dXJuIHBpY3R1cmVfdXJpOworCX0KKworCXB1YmxpYyB2b2lkIHNldFBpY3R1cmVfdXJpKFN0cmluZyBwaWN0dXJlX3VyaSkgeworCQl0aGlzLnBpY3R1cmVfdXJpID0gcGljdHVyZV91cmk7CisJfQorCisJcHVibGljIExvbmcgZ2V0VXNlcl9pZCgpIHsKKwkJcmV0dXJuIHVzZXJfaWQ7CisJfQorCisJcHVibGljIHZvaWQgc2V0VXNlcl9pZChMb25nIHVzZXJfaWQpIHsKKwkJdGhpcy51c2VyX2lkID0gdXNlcl9pZDsKKwl9CisKKwlwdWJsaWMgTG9uZyBnZXRSb29tX2lkKCkgeworCQlyZXR1cm4gcm9vbV9pZDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRSb29tX2lkKExvbmcgcm9vbV9pZCkgeworCQl0aGlzLnJvb21faWQgPSByb29tX2lkOworCX0KKworCXB1YmxpYyBEYXRlIGdldFJvb21FbnRlcigpIHsKKwkJcmV0dXJuIHJvb21FbnRlcjsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRSb29tRW50ZXIoRGF0ZSByb29tRW50ZXIpIHsKKwkJdGhpcy5yb29tRW50ZXIgPSByb29tRW50ZXI7CisJfQorCisJcHVibGljIEJvb2xlYW4gZ2V0SXNSZWNvcmRpbmcoKSB7CisJCXJldHVybiBpc1JlY29yZGluZzsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRJc1JlY29yZGluZyhCb29sZWFuIGlzUmVjb3JkaW5nKSB7CisJCXRoaXMuaXNSZWNvcmRpbmcgPSBpc1JlY29yZGluZzsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGdldFJvb21SZWNvcmRpbmdOYW1lKCkgeworCQlyZXR1cm4gcm9vbVJlY29yZGluZ05hbWU7CisJfQorCisJcHVibGljIHZvaWQgc2V0Um9vbVJlY29yZGluZ05hbWUoU3RyaW5nIHJvb21SZWNvcmRpbmdOYW1lKSB7CisJCXRoaXMucm9vbVJlY29yZGluZ05hbWUgPSByb29tUmVjb3JkaW5nTmFtZTsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGdldEF2c2V0dGluZ3MoKSB7CisJCXJldHVybiBhdnNldHRpbmdzOworCX0KKworCXB1YmxpYyB2b2lkIHNldEF2c2V0dGluZ3MoU3RyaW5nIGF2c2V0dGluZ3MpIHsKKwkJdGhpcy5hdnNldHRpbmdzID0gYXZzZXR0aW5nczsKKwl9CisKKwlwdWJsaWMgbG9uZyBnZXRCcm9hZENhc3RJRCgpIHsKKwkJcmV0dXJuIGJyb2FkQ2FzdElEOworCX0KKworCXB1YmxpYyB2b2lkIHNldEJyb2FkQ2FzdElEKGxvbmcgYnJvYWRDYXN0SUQpIHsKKwkJdGhpcy5icm9hZENhc3RJRCA9IGJyb2FkQ2FzdElEOworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0UHVibGljU0lEKCkgeworCQlyZXR1cm4gcHVibGljU0lEOworCX0KKwkKKwlwdWJsaWMgdm9pZCBzZXRQdWJsaWNTSUQoU3RyaW5nIHB1YmxpY1NJRCkgeworCQl0aGlzLnB1YmxpY1NJRCA9IHB1YmxpY1NJRDsKKwl9CisKKwlwdWJsaWMgQm9vbGVhbiBnZXRab21iaWVDaGVja0ZsYWcoKSB7CisJCXJldHVybiB6b21iaWVDaGVja0ZsYWc7CisJfQorCQorCXB1YmxpYyB2b2lkIHNldFpvbWJpZUNoZWNrRmxhZyhCb29sZWFuIHpvbWJpZUNoZWNrRmxhZykgeworCQl0aGlzLnpvbWJpZUNoZWNrRmxhZyA9IHpvbWJpZUNoZWNrRmxhZzsKKwl9CisKKwlwdWJsaWMgQm9vbGVhbiBnZXRNaWNNdXRlZCgpIHsKKwkJcmV0dXJuIG1pY011dGVkOworCX0KKworCXB1YmxpYyB2b2lkIHNldE1pY011dGVkKEJvb2xlYW4gbWljTXV0ZWQpIHsKKwkJdGhpcy5taWNNdXRlZCA9IG1pY011dGVkOworCX0KKworCXB1YmxpYyBCb29sZWFuIGdldENhbkRyYXcoKSB7CisJCXJldHVybiBjYW5EcmF3OworCX0KKworCXB1YmxpYyB2b2lkIHNldENhbkRyYXcoQm9vbGVhbiBjYW5EcmF3KSB7CisJCXRoaXMuY2FuRHJhdyA9IGNhbkRyYXc7CisJfQorCisJcHVibGljIEJvb2xlYW4gZ2V0SXNCcm9hZGNhc3RpbmcoKSB7CisJCXJldHVybiBpc0Jyb2FkY2FzdGluZzsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRJc0Jyb2FkY2FzdGluZyhCb29sZWFuIGlzQnJvYWRjYXN0aW5nKSB7CisJCXRoaXMuaXNCcm9hZGNhc3RpbmcgPSBpc0Jyb2FkY2FzdGluZzsKKwl9CisKKwlwdWJsaWMgQm9vbGVhbiBnZXRDYW5TaGFyZSgpIHsKKwkJcmV0dXJuIGNhblNoYXJlOworCX0KKworCXB1YmxpYyB2b2lkIHNldENhblNoYXJlKEJvb2xlYW4gY2FuU2hhcmUpIHsKKwkJdGhpcy5jYW5TaGFyZSA9IGNhblNoYXJlOworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0RXh0ZXJuYWxVc2VySWQoKSB7CisJCXJldHVybiBleHRlcm5hbFVzZXJJZDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRFeHRlcm5hbFVzZXJJZChTdHJpbmcgZXh0ZXJuYWxVc2VySWQpIHsKKwkJdGhpcy5leHRlcm5hbFVzZXJJZCA9IGV4dGVybmFsVXNlcklkOworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0RXh0ZXJuYWxVc2VyVHlwZSgpIHsKKwkJcmV0dXJuIGV4dGVybmFsVXNlclR5cGU7CisJfQorCisJcHVibGljIHZvaWQgc2V0RXh0ZXJuYWxVc2VyVHlwZShTdHJpbmcgZXh0ZXJuYWxVc2VyVHlwZSkgeworCQl0aGlzLmV4dGVybmFsVXNlclR5cGUgPSBleHRlcm5hbFVzZXJUeXBlOworCX0KKworCXB1YmxpYyBCb29sZWFuIGdldElzU3VwZXJNb2RlcmF0b3IoKSB7CisJCXJldHVybiBpc1N1cGVyTW9kZXJhdG9yOworCX0KKworCXB1YmxpYyB2b2lkIHNldElzU3VwZXJNb2RlcmF0b3IoQm9vbGVhbiBpc1N1cGVyTW9kZXJhdG9yKSB7CisJCXRoaXMuaXNTdXBlck1vZGVyYXRvciA9IGlzU3VwZXJNb2RlcmF0b3I7CisJfQorCisJcHVibGljIEJvb2xlYW4gZ2V0SXNTY3JlZW5DbGllbnQoKSB7CisJCXJldHVybiBpc1NjcmVlbkNsaWVudDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRJc1NjcmVlbkNsaWVudChCb29sZWFuIGlzU2NyZWVuQ2xpZW50KSB7CisJCXRoaXMuaXNTY3JlZW5DbGllbnQgPSBpc1NjcmVlbkNsaWVudDsKKwl9CisKKwlwdWJsaWMgaW50IGdldFZXaWR0aCgpIHsKKwkJcmV0dXJuIHZXaWR0aDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRWV2lkdGgoaW50IHdpZHRoKSB7CisJCXZXaWR0aCA9IHdpZHRoOworCX0KKworCXB1YmxpYyBpbnQgZ2V0VkhlaWdodCgpIHsKKwkJcmV0dXJuIHZIZWlnaHQ7CisJfQorCisJcHVibGljIHZvaWQgc2V0VkhlaWdodChpbnQgaGVpZ2h0KSB7CisJCXZIZWlnaHQgPSBoZWlnaHQ7CisJfQorCisJcHVibGljIGludCBnZXRWWCgpIHsKKwkJcmV0dXJuIHZYOworCX0KKworCXB1YmxpYyB2b2lkIHNldFZYKGludCB2eCkgeworCQl2WCA9IHZ4OworCX0KKworCXB1YmxpYyBpbnQgZ2V0VlkoKSB7CisJCXJldHVybiB2WTsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRWWShpbnQgdnkpIHsKKwkJdlkgPSB2eTsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGdldFN0cmVhbVB1Ymxpc2hOYW1lKCkgeworCQlyZXR1cm4gc3RyZWFtUHVibGlzaE5hbWU7CisJfQorCisJcHVibGljIHZvaWQgc2V0U3RyZWFtUHVibGlzaE5hbWUoU3RyaW5nIHN0cmVhbVB1Ymxpc2hOYW1lKSB7CisJCXRoaXMuc3RyZWFtUHVibGlzaE5hbWUgPSBzdHJlYW1QdWJsaXNoTmFtZTsKKwl9CisKKwlwdWJsaWMgTG9uZyBnZXRGbHZSZWNvcmRpbmdJZCgpIHsKKwkJcmV0dXJuIGZsdlJlY29yZGluZ0lkOworCX0KKworCXB1YmxpYyB2b2lkIHNldEZsdlJlY29yZGluZ0lkKExvbmcgZmx2UmVjb3JkaW5nSWQpIHsKKwkJdGhpcy5mbHZSZWNvcmRpbmdJZCA9IGZsdlJlY29yZGluZ0lkOworCX0KKworCXB1YmxpYyBMb25nIGdldEZsdlJlY29yZGluZ01ldGFEYXRhSWQoKSB7CisJCXJldHVybiBmbHZSZWNvcmRpbmdNZXRhRGF0YUlkOworCX0KKworCXB1YmxpYyB2b2lkIHNldEZsdlJlY29yZGluZ01ldGFEYXRhSWQoTG9uZyBmbHZSZWNvcmRpbmdNZXRhRGF0YUlkKSB7CisJCXRoaXMuZmx2UmVjb3JkaW5nTWV0YURhdGFJZCA9IGZsdlJlY29yZGluZ01ldGFEYXRhSWQ7CisJfQorCisJcHVibGljIGJvb2xlYW4gaXNTY3JlZW5QdWJsaXNoU3RhcnRlZCgpIHsKKwkJcmV0dXJuIHNjcmVlblB1Ymxpc2hTdGFydGVkOworCX0KKworCXB1YmxpYyB2b2lkIHNldFNjcmVlblB1Ymxpc2hTdGFydGVkKGJvb2xlYW4gc2NyZWVuUHVibGlzaFN0YXJ0ZWQpIHsKKwkJdGhpcy5zY3JlZW5QdWJsaXNoU3RhcnRlZCA9IHNjcmVlblB1Ymxpc2hTdGFydGVkOworCX0KKworCXB1YmxpYyBMb25nIGdldE9yZ2FuaXphdGlvbl9pZCgpIHsKKwkJcmV0dXJuIG9yZ2FuaXphdGlvbl9pZDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRPcmdhbml6YXRpb25faWQoTG9uZyBvcmdhbml6YXRpb25faWQpIHsKKwkJdGhpcy5vcmdhbml6YXRpb25faWQgPSBvcmdhbml6YXRpb25faWQ7CisJfQorCisJcHVibGljIGJvb2xlYW4gaXNTdGFydFJlY29yZGluZygpIHsKKwkJcmV0dXJuIHN0YXJ0UmVjb3JkaW5nOworCX0KKworCXB1YmxpYyB2b2lkIHNldFN0YXJ0UmVjb3JkaW5nKGJvb2xlYW4gc3RhcnRSZWNvcmRpbmcpIHsKKwkJdGhpcy5zdGFydFJlY29yZGluZyA9IHN0YXJ0UmVjb3JkaW5nOworCX0KKworCXB1YmxpYyBib29sZWFuIGlzU3RhcnRTdHJlYW1pbmcoKSB7CisJCXJldHVybiBzdGFydFN0cmVhbWluZzsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRTdGFydFN0cmVhbWluZyhib29sZWFuIHN0YXJ0U3RyZWFtaW5nKSB7CisJCXRoaXMuc3RhcnRTdHJlYW1pbmcgPSBzdGFydFN0cmVhbWluZzsKKwl9CisKKwlwdWJsaWMgSW50ZWdlciBnZXRJbnRlcnZpZXdQb2RJZCgpIHsKKwkJcmV0dXJuIGludGVydmlld1BvZElkOworCX0KKworCXB1YmxpYyB2b2lkIHNldEludGVydmlld1BvZElkKEludGVnZXIgaW50ZXJ2aWV3UG9kSWQpIHsKKwkJdGhpcy5pbnRlcnZpZXdQb2RJZCA9IGludGVydmlld1BvZElkOworCX0KKworCXB1YmxpYyBCb29sZWFuIGdldENhblJlbW90ZSgpIHsKKwkJcmV0dXJuIGNhblJlbW90ZTsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRDYW5SZW1vdGUoQm9vbGVhbiBjYW5SZW1vdGUpIHsKKwkJdGhpcy5jYW5SZW1vdGUgPSBjYW5SZW1vdGU7CisJfQorCisgICAgcHVibGljIEJvb2xlYW4gZ2V0Q2FuR2l2ZUF1ZGlvKCkgeworCQlyZXR1cm4gY2FuR2l2ZUF1ZGlvOworCX0KKworCXB1YmxpYyB2b2lkIHNldENhbkdpdmVBdWRpbyhCb29sZWFuIGNhbkdpdmVBdWRpbykgeworCQl0aGlzLmNhbkdpdmVBdWRpbyA9IGNhbkdpdmVBdWRpbzsKKwl9CisKKwlwdWJsaWMgQm9vbGVhbiBnZXRBbGxvd1JlY29yZGluZygpIHsKKwkJcmV0dXJuIGFsbG93UmVjb3JkaW5nOworCX0KKworCXB1YmxpYyB2b2lkIHNldEFsbG93UmVjb3JkaW5nKEJvb2xlYW4gYWxsb3dSZWNvcmRpbmcpIHsKKwkJdGhpcy5hbGxvd1JlY29yZGluZyA9IGFsbG93UmVjb3JkaW5nOworCX0KKworCXB1YmxpYyBib29sZWFuIGdldElzQVZDbGllbnQoKSB7CisJCXJldHVybiBpc0FWQ2xpZW50OworCX0KKworCXB1YmxpYyB2b2lkIHNldElzQVZDbGllbnQoYm9vbGVhbiBpc0FWQ2xpZW50KSB7CisJCXRoaXMuaXNBVkNsaWVudCA9IGlzQVZDbGllbnQ7CisJfQorCisJcHVibGljIGJvb2xlYW4gaXNTdHJlYW1QdWJsaXNoU3RhcnRlZCgpIHsKKwkJcmV0dXJuIHN0cmVhbVB1Ymxpc2hTdGFydGVkOworCX0KKworCXB1YmxpYyB2b2lkIHNldFN0cmVhbVB1Ymxpc2hTdGFydGVkKGJvb2xlYW4gc3RyZWFtUHVibGlzaFN0YXJ0ZWQpIHsKKwkJdGhpcy5zdHJlYW1QdWJsaXNoU3RhcnRlZCA9IHN0cmVhbVB1Ymxpc2hTdGFydGVkOworCX0KKworCXB1YmxpYyBib29sZWFuIGlzU2lwVHJhbnNwb3J0KCkgeworCQlyZXR1cm4gc2lwVHJhbnNwb3J0OworCX0KKworCXB1YmxpYyB2b2lkIHNldFNpcFRyYW5zcG9ydChib29sZWFuIHNpcFRyYW5zcG9ydCkgeworCQl0aGlzLnNpcFRyYW5zcG9ydCA9IHNpcFRyYW5zcG9ydDsKKwl9CisJCisJcHVibGljIFNlcnZlciBnZXRTZXJ2ZXIoKSB7CisJCXJldHVybiBzZXJ2ZXI7CisJfQorCisJcHVibGljIHZvaWQgc2V0U2VydmVyKFNlcnZlciBzZXJ2ZXIpIHsKKwkJdGhpcy5zZXJ2ZXIgPSBzZXJ2ZXI7CisJfQorCisJQE92ZXJyaWRlCisJcHVibGljIFN0cmluZyB0b1N0cmluZygpIHsKKwkJcmV0dXJuIHN1cGVyLnRvU3RyaW5nKCkgLy8KKwkJCQkrICIgU3RyZWFtSWQ6ICIgKyB0aGlzLmdldFN0cmVhbWlkKCkgLy8KKwkJCQkrICIgUHVibGljU0lEOiAiICsgdGhpcy5nZXRQdWJsaWNTSUQoKSAvLworCQkJCSsgIiBVc2VySWQ6ICIgKyB0aGlzLmdldFVzZXJfaWQoKSAvLworCQkJCSsgIiBpc1NjcmVlbkNsaWVudDogIiArIHRoaXMuZ2V0SXNTY3JlZW5DbGllbnQoKSAvLworCQkJCSsgIiBmbHZSZWNvcmRpbmdJZDogIiArIHRoaXMuZ2V0Rmx2UmVjb3JkaW5nSWQoKSAvLworCQkJCSsgIiBzY3JlZW5QdWJsaXNoU3RhcnRlZDogIiArIHRoaXMuaXNTY3JlZW5QdWJsaXNoU3RhcnRlZCgpIC8vCisJCQkJKyAiIGZsdlJlY29yZGluZ01ldGFEYXRhSWQ6ICIgKyB0aGlzLmdldEZsdlJlY29yZGluZ01ldGFEYXRhSWQoKSAvLworCQkJCSsgIiBpc1JlY29yZGluZzogIiArIHRoaXMuZ2V0SXNSZWNvcmRpbmcoKSAvLworCQkJCSsgIiBpc0FWQ2xpZW50OiAiICsgdGhpcy5nZXRJc0FWQ2xpZW50KCkgLy8KKwkJCQkrICIgYnJvYWRDYXN0SUQ6ICIgKyB0aGlzLmdldEJyb2FkQ2FzdElEKCkgLy8KKwkJCQkrICIgYXZzZXR0aW5nczogIiArIHRoaXMuZ2V0QXZzZXR0aW5ncygpIC8vCisJCQkJKyAiIHNlcnZlcjogIiArIHNlcnZlcgorCQkJCTsKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvcm9vbS9Sb29tLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvcm9vbS9Sb29tLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQ3Y2ExZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9yb29tL1Jvb20uamF2YQpAQCAtMCwwICsxLDU4NiBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tOworCitpbXBvcnQgamF2YS5pby5TZXJpYWxpemFibGU7CitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkNhc2NhZGVUeXBlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHk7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRmV0Y2hUeXBlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkdlbmVyYXRlZFZhbHVlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkdlbmVyYXRpb25UeXBlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLklkOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkpvaW5Db2x1bW47CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTG9iOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk1hbnlUb09uZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5OYW1lZFF1ZXJpZXM7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTmFtZWRRdWVyeTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5PbmVUb01hbnk7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVHJhbnNpZW50OworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVuanBhLnBlcnNpc3RlbmNlLkVsZW1lbnREZXBlbmRlbnQ7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVuanBhLnBlcnNpc3RlbmNlLmpkYmMuRm9yZWlnbktleTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5JRGF0YVByb3ZpZGVyRW50aXR5OworaW1wb3J0IG9yZy5zaW1wbGVmcmFtZXdvcmsueG1sLkVsZW1lbnQ7CitpbXBvcnQgb3JnLnNpbXBsZWZyYW1ld29yay54bWwuRWxlbWVudExpc3Q7CitpbXBvcnQgb3JnLnNpbXBsZWZyYW1ld29yay54bWwuUm9vdDsKKworQEVudGl0eQorQE5hbWVkUXVlcmllcyh7CisJQE5hbWVkUXVlcnkobmFtZSA9ICJnZXROb25kZWxldGVkUm9vbXMiLCBxdWVyeSA9ICJTRUxFQ1QgciBGUk9NIFJvb20gciBXSEVSRSByLmRlbGV0ZWQgPSBmYWxzZSIpLAorCUBOYW1lZFF1ZXJ5KG5hbWUgPSAiZ2V0UHVibGljUm9vbXMiLCBxdWVyeSA9ICJTRUxFQ1QgciBmcm9tIFJvb20gciAiCisJCQkrICJKT0lOIHIucm9vbXR5cGUgYXMgcnQgIgorCQkJKyAiV0hFUkUgci5pc3B1YmxpYz06aXNwdWJsaWMgYW5kIHIuZGVsZXRlZD06ZGVsZXRlZCBhbmQgcnQucm9vbXR5cGVzX2lkPTpyb29tdHlwZXNfaWQiKSwKKwlATmFtZWRRdWVyeShuYW1lID0gImdldFB1YmxpY1Jvb21zV2l0aG91dFR5cGUiLCBxdWVyeSA9ICJTRUxFQ1QgciBmcm9tIFJvb20gciAiICsgIldIRVJFICIKKwkJCQkJCSsgInIuaXNwdWJsaWMgPSA6aXNwdWJsaWMgYW5kIHIuZGVsZXRlZCA8PiA6ZGVsZXRlZCAiCisJCQkJCQkrICJPUkRFUiBCWSByLm5hbWUgQVNDIiksCisJQE5hbWVkUXVlcnkobmFtZSA9ICJnZXRBcHBvaW50ZWRNZWV0aW5ncyIsIHF1ZXJ5ID0gIlNFTEVDVCByIGZyb20gUm9vbSByICIKKwkJCSsgIkpPSU4gci5yb29tdHlwZSBhcyBydCAiICsgIldIRVJFICIKKwkJCSsgInIuZGVsZXRlZD06ZGVsZXRlZCBhbmQgci5hcHBvaW50bWVudD06YXBwb2ludGVkIiksCQorCUBOYW1lZFF1ZXJ5KG5hbWUgPSAiZ2V0Um9vbUJ5T3duZXJBbmRUeXBlSWQiLCBxdWVyeSA9ICJzZWxlY3QgYyBmcm9tIFJvb20gYXMgYyAiCisJCQkJCSsgIndoZXJlIGMub3duZXJJZCA9IDpvd25lcklkICIKKwkJCQkJKyAiQU5EIGMucm9vbXR5cGUucm9vbXR5cGVzX2lkID0gOnJvb210eXBlc0lkICIKKwkJCQkJKyAiQU5EIGMuZGVsZXRlZCA8PiA6ZGVsZXRlZCIpLAkKKwkJCQkJCQkJCQkKKwlATmFtZWRRdWVyeShuYW1lID0gInNlbGVjdE1heEZyb21Sb29tcyIsIHF1ZXJ5ID0gInNlbGVjdCBjb3VudChjLnJvb21zX2lkKSBmcm9tIFJvb20gYyAiCisJCQkrICJ3aGVyZSBjLmRlbGV0ZWQgPD4gdHJ1ZSBBTkQgYy5uYW1lIExJS0UgOnNlYXJjaCAiKSwKKwlATmFtZWRRdWVyeShuYW1lID0gImdldFJvb21CeUV4dGVybmFsSWQiLCBxdWVyeSA9ICJzZWxlY3QgYyBmcm9tIFJvb20gYXMgYyBKT0lOIGMucm9vbXR5cGUgYXMgcnQgIgorCQkJKyAid2hlcmUgYy5leHRlcm5hbFJvb21JZCA9IDpleHRlcm5hbFJvb21JZCBBTkQgYy5leHRlcm5hbFJvb21UeXBlID0gOmV4dGVybmFsUm9vbVR5cGUgIgorCQkJKyAiQU5EIHJ0LnJvb210eXBlc19pZCA9IDpyb29tdHlwZXNfaWQgQU5EIGMuZGVsZXRlZCA8PiA6ZGVsZXRlZCIpLAorCUBOYW1lZFF1ZXJ5KG5hbWUgPSAiZ2V0UHVibGljUm9vbXNPcmRlcmVkIiwgcXVlcnkgPSAiU0VMRUNUIHIgZnJvbSBSb29tIHIgV0hFUkUgci5pc3B1YmxpYz0gdHJ1ZSBBTkQgci5kZWxldGVkPSBmYWxzZSBBTkQgci5hcHBvaW50bWVudCA9IGZhbHNlIE9SREVSIEJZIHIubmFtZSBBU0MiKSwKKwlATmFtZWRRdWVyeShuYW1lID0gImdldFJvb21CeUlkIiwgcXVlcnkgPSAiU0VMRUNUIHIgRlJPTSBSb29tIHIgV0hFUkUgci5kZWxldGVkID0gZmFsc2UgQU5EIHIucm9vbXNfaWQgPSA6aWQiKSwKKwlATmFtZWRRdWVyeShuYW1lID0gImdldFNpcFJvb21JZHNCeUlkcyIsIHF1ZXJ5ID0gIlNFTEVDVCByLnJvb21zX2lkIEZST00gUm9vbSByIFdIRVJFIHIuZGVsZXRlZCA9IGZhbHNlIEFORCByLnNpcEVuYWJsZWQgPSB0cnVlIEFORCByLnJvb21zX2lkIElOIDppZHMiKSwKKwlATmFtZWRRdWVyeShuYW1lID0gImNvdW50Um9vbXMiLCBxdWVyeSA9ICJTRUxFQ1QgQ09VTlQocikgRlJPTSBSb29tIHIgV0hFUkUgci5kZWxldGVkID0gZmFsc2UiKSwKKwlATmFtZWRRdWVyeShuYW1lID0gImdldEJhY2t1cFJvb21zIiwgcXVlcnkgPSAiU0VMRUNUIHIgRlJPTSBSb29tIHIgTEVGVCBKT0lOIEZFVENIIHIubW9kZXJhdG9ycyBXSEVSRSByLmRlbGV0ZWQgPSBmYWxzZSAiKSwKKwlATmFtZWRRdWVyeShuYW1lID0gImdldFJvb21zQ2FwYWNpdHlCeUlkcyIsIHF1ZXJ5ID0gIlNFTEVDVCBTVU0oci5udW1iZXJPZlBhcnRpemlwYW50cykgRlJPTSBSb29tIHIgV0hFUkUgci5kZWxldGVkID0gZmFsc2UgQU5EIHIucm9vbXNfaWQgSU4gOmlkcyIpCit9KQorQFRhYmxlKG5hbWUgPSAicm9vbSIpCitAUm9vdChuYW1lID0gInJvb20iKQorcHVibGljIGNsYXNzIFJvb20gaW1wbGVtZW50cyBTZXJpYWxpemFibGUsIElEYXRhUHJvdmlkZXJFbnRpdHkgeworCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IC0yODYwMzEyMjgzMTU5MjUxNTY4TDsKKwlASWQKKwlAR2VuZXJhdGVkVmFsdWUoc3RyYXRlZ3kgPSBHZW5lcmF0aW9uVHlwZS5JREVOVElUWSkKKwlAQ29sdW1uKG5hbWUgPSAiaWQiKQorCUBFbGVtZW50KGRhdGEgPSB0cnVlLCByZXF1aXJlZD1mYWxzZSkKKwlwcml2YXRlIExvbmcgcm9vbXNfaWQ7CisKKwlAQ29sdW1uKG5hbWUgPSAibmFtZSIpCisJQEVsZW1lbnQoZGF0YSA9IHRydWUpCisJcHJpdmF0ZSBTdHJpbmcgbmFtZTsKKworCUBMb2IKKwlAQ29sdW1uKG5hbWUgPSAiY29tbWVudF9maWVsZCIpCisJQEVsZW1lbnQoZGF0YSA9IHRydWUsIHJlcXVpcmVkID0gZmFsc2UpCisJcHJpdmF0ZSBTdHJpbmcgY29tbWVudDsKKworCUBNYW55VG9PbmUoZmV0Y2ggPSBGZXRjaFR5cGUuRUFHRVIpCisJQEpvaW5Db2x1bW4obmFtZSA9ICJyb29tdHlwZXNfaWQiKQorCUBGb3JlaWduS2V5KGVuYWJsZWQgPSB0cnVlKQorCUBFbGVtZW50KG5hbWUgPSAicm9vbXR5cGVJZCIsIGRhdGEgPSB0cnVlLCByZXF1aXJlZCA9IGZhbHNlKQorCXByaXZhdGUgUm9vbVR5cGUgcm9vbXR5cGU7CisKKwlAQ29sdW1uKG5hbWUgPSAic3RhcnR0aW1lIikKKwlwcml2YXRlIERhdGUgc3RhcnR0aW1lOworCisJQENvbHVtbihuYW1lID0gInVwZGF0ZXRpbWUiKQorCXByaXZhdGUgRGF0ZSB1cGRhdGV0aW1lOworCisJQENvbHVtbihuYW1lID0gImRlbGV0ZWQiKQorCUBFbGVtZW50KGRhdGEgPSB0cnVlKQorCXByaXZhdGUgYm9vbGVhbiBkZWxldGVkOworCisJQENvbHVtbihuYW1lID0gImlzcHVibGljIikKKwlARWxlbWVudChkYXRhID0gdHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIGJvb2xlYW4gaXNwdWJsaWM7CisKKwlAQ29sdW1uKG5hbWUgPSAibnVtYmVyT2ZQYXJ0aXppcGFudHMiKQorCUBFbGVtZW50KGRhdGEgPSB0cnVlLCByZXF1aXJlZCA9IGZhbHNlKQorCXByaXZhdGUgTG9uZyBudW1iZXJPZlBhcnRpemlwYW50cyA9IG5ldyBMb25nKDQpOworCisJQENvbHVtbihuYW1lID0gImFwcG9pbnRtZW50IikKKwlARWxlbWVudChkYXRhID0gdHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIGJvb2xlYW4gYXBwb2ludG1lbnQ7CisKKwkvLyBWYXJzIHRvIHNpbXVsYXRlIGV4dGVybmFsIFJvb20KKwlAQ29sdW1uKG5hbWUgPSAiZXh0ZXJuYWxSb29tSWQiKQorCUBFbGVtZW50KGRhdGEgPSB0cnVlLCByZXF1aXJlZCA9IGZhbHNlKQorCXByaXZhdGUgTG9uZyBleHRlcm5hbFJvb21JZDsKKworCUBDb2x1bW4obmFtZSA9ICJleHRlcm5hbFJvb21UeXBlIikKKwlARWxlbWVudChkYXRhID0gdHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIFN0cmluZyBleHRlcm5hbFJvb21UeXBlOworCisJQENvbHVtbihuYW1lID0gImlzZGVtb3Jvb20iKQorCUBFbGVtZW50KGRhdGEgPSB0cnVlLCByZXF1aXJlZCA9IGZhbHNlKQorCXByaXZhdGUgQm9vbGVhbiBpc0RlbW9Sb29tOworCisJQENvbHVtbihuYW1lID0gImRlbW9fdGltZSIpCisJQEVsZW1lbnQoZGF0YSA9IHRydWUsIHJlcXVpcmVkID0gZmFsc2UpCisJcHJpdmF0ZSBJbnRlZ2VyIGRlbW9UaW1lOyAvLyBJbiBTZWNvbmRzCisKKwkvLyBJZiB0aGlzIGlzIHRydWUgYWxsIHBhcnRpY2lwYW50cyBvZiBhIG1lZXRpbmcgaGF2ZSB0byB3YWl0IGZvciB0aGUKKwkvLyBtb2RlcmF0b3IgdG8gY29tZSBpbnRvIHRoZSByb29tCisJQENvbHVtbihuYW1lID0gImlzbW9kZXJhdGVkcm9vbSIpCisJQEVsZW1lbnQoZGF0YSA9IHRydWUsIHJlcXVpcmVkID0gZmFsc2UpCisJcHJpdmF0ZSBCb29sZWFuIGlzTW9kZXJhdGVkUm9vbTsKKworCUBDb2x1bW4obmFtZSA9ICJhbGxvd191c2VyX3F1ZXN0aW9ucyIpCisJQEVsZW1lbnQoZGF0YSA9IHRydWUsIHJlcXVpcmVkID0gZmFsc2UpCisJcHJpdmF0ZSBCb29sZWFuIGFsbG93VXNlclF1ZXN0aW9uczsKKworCUBDb2x1bW4obmFtZSA9ICJpc19hdWRpb19vbmx5IikKKwlARWxlbWVudChkYXRhID0gdHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIEJvb2xlYW4gaXNBdWRpb09ubHk7CisJCisJQENvbHVtbihuYW1lID0gImFsbG93X2ZvbnRfc3R5bGVzIiwgbnVsbGFibGUgPSBmYWxzZSkKKwlARWxlbWVudChkYXRhID0gdHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIGJvb2xlYW4gYWxsb3dGb250U3R5bGVzID0gZmFsc2U7CisKKwlAQ29sdW1uKG5hbWUgPSAiaXNfY2xvc2VkIikKKwlARWxlbWVudChkYXRhID0gdHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIEJvb2xlYW4gaXNDbG9zZWQ7CisKKwlAQ29sdW1uKG5hbWUgPSAicmVkaXJlY3RfdXJsIikKKwlARWxlbWVudChkYXRhID0gdHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIFN0cmluZyByZWRpcmVjdFVSTDsKKworCUBDb2x1bW4obmFtZSA9ICJvd25lcl9pZCIpCisJQEVsZW1lbnQobmFtZSA9ICJvd25lcmlkIiwgZGF0YSA9IHRydWUsIHJlcXVpcmVkID0gZmFsc2UpCisJcHJpdmF0ZSBMb25nIG93bmVySWQ7IC8vIFRob3NlIGFyZSB0aGUgcm9vbXMgZnJvbSB0aGUgbXlyb29tcyBzZWN0aW9uCisKKwlAQ29sdW1uKG5hbWUgPSAid2FpdF9mb3JfcmVjb3JkaW5nIikKKwlARWxlbWVudChkYXRhID0gdHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIEJvb2xlYW4gd2FpdEZvclJlY29yZGluZzsgLy8gU2hvdyB3YXJuaW5nIHRoYXQgdXNlciBoYXMgdG8gc3RhcnQKKwkJCQkJCQkJCQkvLyByZWNvcmRpbmcKKworCUBDb2x1bW4obmFtZSA9ICJhbGxvd19yZWNvcmRpbmciKQorCUBFbGVtZW50KGRhdGEgPSB0cnVlLCByZXF1aXJlZCA9IGZhbHNlKQorCXByaXZhdGUgQm9vbGVhbiBhbGxvd1JlY29yZGluZzsgLy8gU2hvdyBvciBzaG93IG5vdCB0aGUgcmVjb3JkaW5nIG9wdGlvbiBpbgorCQkJCQkJCQkJLy8gYSBjb25mZXJlbmNlIHJvb20KKwkvKioKKwkgKiBMYXlvdXQgb2YgUm9vbQorCSAqLworCUBDb2x1bW4obmFtZSA9ICJoaWRlX3RvcF9iYXIiKQorCUBFbGVtZW50KGRhdGEgPSB0cnVlLCByZXF1aXJlZCA9IGZhbHNlKQorCXByaXZhdGUgQm9vbGVhbiBoaWRlVG9wQmFyID0gZmFsc2U7CisKKwlAQ29sdW1uKG5hbWUgPSAiaGlkZV9jaGF0IikKKwlARWxlbWVudChkYXRhID0gdHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIEJvb2xlYW4gaGlkZUNoYXQgPSBmYWxzZTsKKworCUBDb2x1bW4obmFtZSA9ICJoaWRlX2FjdGl2aXRpZXNfYW5kX2FjdGlvbnMiKQorCUBFbGVtZW50KGRhdGEgPSB0cnVlLCByZXF1aXJlZCA9IGZhbHNlKQorCXByaXZhdGUgQm9vbGVhbiBoaWRlQWN0aXZpdGllc0FuZEFjdGlvbnMgPSBmYWxzZTsKKworCUBDb2x1bW4obmFtZSA9ICJoaWRlX2ZpbGVzX2V4cGxvcmVyIikKKwlARWxlbWVudChkYXRhID0gdHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIEJvb2xlYW4gaGlkZUZpbGVzRXhwbG9yZXIgPSBmYWxzZTsKKworCUBDb2x1bW4obmFtZSA9ICJoaWRlX2FjdGlvbnNfbWVudSIpCisJQEVsZW1lbnQoZGF0YSA9IHRydWUsIHJlcXVpcmVkID0gZmFsc2UpCisJcHJpdmF0ZSBCb29sZWFuIGhpZGVBY3Rpb25zTWVudSA9IGZhbHNlOworCisJQENvbHVtbihuYW1lID0gImhpZGVfc2NyZWVuX3NoYXJpbmciKQorCUBFbGVtZW50KGRhdGEgPSB0cnVlLCByZXF1aXJlZCA9IGZhbHNlKQorCXByaXZhdGUgQm9vbGVhbiBoaWRlU2NyZWVuU2hhcmluZyA9IGZhbHNlOworCisJQENvbHVtbihuYW1lID0gImhpZGVfd2hpdGVib2FyZCIpCisJQEVsZW1lbnQoZGF0YSA9IHRydWUsIHJlcXVpcmVkID0gZmFsc2UpCisJcHJpdmF0ZSBCb29sZWFuIGhpZGVXaGl0ZWJvYXJkID0gZmFsc2U7CisKKwlAQ29sdW1uKG5hbWUgPSAic2hvd19taWNyb3Bob25lX3N0YXR1cyIpCisJQEVsZW1lbnQoZGF0YSA9IHRydWUsIHJlcXVpcmVkID0gZmFsc2UpCisJcHJpdmF0ZSBCb29sZWFuIHNob3dNaWNyb3Bob25lU3RhdHVzID0gZmFsc2U7CisKKwlAQ29sdW1uKG5hbWUgPSAiY2hhdF9tb2RlcmF0ZWQiKQorCUBFbGVtZW50KGRhdGEgPSB0cnVlLCByZXF1aXJlZCA9IGZhbHNlKQorCXByaXZhdGUgQm9vbGVhbiBjaGF0TW9kZXJhdGVkID0gZmFsc2U7CisKKwlAQ29sdW1uKG5hbWUgPSAiY2hhdF9vcGVuZWQiKQorCUBFbGVtZW50KGRhdGEgPSB0cnVlLCByZXF1aXJlZCA9IGZhbHNlKQorCXByaXZhdGUgYm9vbGVhbiBjaGF0T3BlbmVkID0gZmFsc2U7CisKKwlAQ29sdW1uKG5hbWUgPSAiZmlsZXNfb3BlbmVkIikKKwlARWxlbWVudChkYXRhID0gdHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIGJvb2xlYW4gZmlsZXNPcGVuZWQgPSBmYWxzZTsKKworCUBDb2x1bW4obmFtZSA9ICJhdXRvX3ZpZGVvX3NlbGVjdCIpCisJQEVsZW1lbnQoZGF0YSA9IHRydWUsIHJlcXVpcmVkID0gZmFsc2UpCisJcHJpdmF0ZSBib29sZWFuIGF1dG9WaWRlb1NlbGVjdCA9IGZhbHNlOworCisJQE9uZVRvTWFueShmZXRjaCA9IEZldGNoVHlwZS5MQVpZLCBjYXNjYWRlID0gQ2FzY2FkZVR5cGUuQUxMKQorCUBKb2luQ29sdW1uKG5hbWUgPSAicm9vbUlkIikKKwlARm9yZWlnbktleShlbmFibGVkID0gdHJ1ZSkKKwlARWxlbWVudExpc3QobmFtZSA9ICJyb29tX21vZGVyYXRvcnMiLCByZXF1aXJlZD1mYWxzZSkKKwlwcml2YXRlIExpc3Q8Um9vbU1vZGVyYXRvcj4gbW9kZXJhdG9yczsKKworCUBDb2x1bW4obmFtZSA9ICJzaXBfZW5hYmxlZCIpCisJQEVsZW1lbnQoZGF0YSA9IHRydWUsIHJlcXVpcmVkID0gZmFsc2UpCisJcHJpdmF0ZSBib29sZWFuIHNpcEVuYWJsZWQ7CisJCisJQENvbHVtbihuYW1lID0gImNvbmZubyIpCisJQEVsZW1lbnQoZGF0YSA9IHRydWUsIHJlcXVpcmVkID0gZmFsc2UpCisJcHJpdmF0ZSBTdHJpbmcgY29uZm5vOworCQorCUBDb2x1bW4obmFtZSA9ICJwaW4iKQorCUBFbGVtZW50KGRhdGEgPSB0cnVlLCByZXF1aXJlZCA9IGZhbHNlKQorCXByaXZhdGUgU3RyaW5nIHBpbjsKKwkKKwlAT25lVG9NYW55KGZldGNoID0gRmV0Y2hUeXBlLkVBR0VSLCBjYXNjYWRlID0gQ2FzY2FkZVR5cGUuQUxMKQorCUBKb2luQ29sdW1uKG5hbWUgPSAicm9vbXNfaWQiLCBpbnNlcnRhYmxlID0gdHJ1ZSwgdXBkYXRhYmxlID0gdHJ1ZSkKKwlARWxlbWVudERlcGVuZGVudAorCUBvcmcuc2ltcGxlZnJhbWV3b3JrLnhtbC5UcmFuc2llbnQKKwlwcml2YXRlIExpc3Q8Um9vbU9yZ2FuaXNhdGlvbj4gcm9vbU9yZ2FuaXNhdGlvbnMgPSBuZXcgQXJyYXlMaXN0PFJvb21PcmdhbmlzYXRpb24+KCk7CisKKwlAVHJhbnNpZW50CisJcHJpdmF0ZSBMaXN0PENsaWVudD4gY3VycmVudHVzZXJzOworCisJcHVibGljIFN0cmluZyBnZXRDb21tZW50KCkgeworCQlyZXR1cm4gY29tbWVudDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRDb21tZW50KFN0cmluZyBjb21tZW50KSB7CisJCXRoaXMuY29tbWVudCA9IGNvbW1lbnQ7CisJfQorCisJcHVibGljIFN0cmluZyBnZXROYW1lKCkgeworCQlyZXR1cm4gbmFtZTsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXROYW1lKFN0cmluZyBuYW1lKSB7CisJCXRoaXMubmFtZSA9IG5hbWU7CisJfQorCisJcHVibGljIExvbmcgZ2V0Um9vbXNfaWQoKSB7CisJCXJldHVybiByb29tc19pZDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRSb29tc19pZChMb25nIHJvb21zX2lkKSB7CisJCXRoaXMucm9vbXNfaWQgPSByb29tc19pZDsKKwl9CisKKwlwdWJsaWMgUm9vbVR5cGUgZ2V0Um9vbXR5cGUoKSB7CisJCXJldHVybiByb29tdHlwZTsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRSb29tdHlwZShSb29tVHlwZSByb29tdHlwZSkgeworCQl0aGlzLnJvb210eXBlID0gcm9vbXR5cGU7CisJfQorCisJcHVibGljIERhdGUgZ2V0U3RhcnR0aW1lKCkgeworCQlyZXR1cm4gc3RhcnR0aW1lOworCX0KKworCXB1YmxpYyB2b2lkIHNldFN0YXJ0dGltZShEYXRlIHN0YXJ0dGltZSkgeworCQl0aGlzLnN0YXJ0dGltZSA9IHN0YXJ0dGltZTsKKwl9CisKKwlwdWJsaWMgRGF0ZSBnZXRVcGRhdGV0aW1lKCkgeworCQlyZXR1cm4gdXBkYXRldGltZTsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRVcGRhdGV0aW1lKERhdGUgdXBkYXRldGltZSkgeworCQl0aGlzLnVwZGF0ZXRpbWUgPSB1cGRhdGV0aW1lOworCX0KKworCXB1YmxpYyBib29sZWFuIGdldERlbGV0ZWQoKSB7CisJCXJldHVybiBkZWxldGVkOworCX0KKworCXB1YmxpYyB2b2lkIHNldERlbGV0ZWQoYm9vbGVhbiBkZWxldGVkKSB7CisJCXRoaXMuZGVsZXRlZCA9IGRlbGV0ZWQ7CisJfQorCisJcHVibGljIEJvb2xlYW4gZ2V0SXNwdWJsaWMoKSB7CisJCXJldHVybiBpc3B1YmxpYzsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRJc3B1YmxpYyhCb29sZWFuIGlzcHVibGljKSB7CisJCXRoaXMuaXNwdWJsaWMgPSBpc3B1YmxpYzsKKwl9CisKKwlwdWJsaWMgTGlzdDxDbGllbnQ+IGdldEN1cnJlbnR1c2VycygpIHsKKwkJcmV0dXJuIGN1cnJlbnR1c2VyczsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRDdXJyZW50dXNlcnMoTGlzdDxDbGllbnQ+IGN1cnJlbnR1c2VycykgeworCQl0aGlzLmN1cnJlbnR1c2VycyA9IGN1cnJlbnR1c2VyczsKKwl9CisKKwlwdWJsaWMgTG9uZyBnZXROdW1iZXJPZlBhcnRpemlwYW50cygpIHsKKwkJcmV0dXJuIG51bWJlck9mUGFydGl6aXBhbnRzOworCX0KKworCXB1YmxpYyB2b2lkIHNldE51bWJlck9mUGFydGl6aXBhbnRzKExvbmcgbnVtYmVyT2ZQYXJ0aXppcGFudHMpIHsKKwkJdGhpcy5udW1iZXJPZlBhcnRpemlwYW50cyA9IG51bWJlck9mUGFydGl6aXBhbnRzOworCX0KKworCXB1YmxpYyBCb29sZWFuIGdldEFwcG9pbnRtZW50KCkgeworCQlyZXR1cm4gYXBwb2ludG1lbnQ7CisJfQorCisJcHVibGljIHZvaWQgc2V0QXBwb2ludG1lbnQoQm9vbGVhbiBhcHBvaW50bWVudCkgeworCQl0aGlzLmFwcG9pbnRtZW50ID0gYXBwb2ludG1lbnQ7CisJfQorCisJcHVibGljIEJvb2xlYW4gZ2V0SXNEZW1vUm9vbSgpIHsKKwkJcmV0dXJuIGlzRGVtb1Jvb207CisJfQorCisJcHVibGljIHZvaWQgc2V0SXNEZW1vUm9vbShCb29sZWFuIGlzRGVtb1Jvb20pIHsKKwkJdGhpcy5pc0RlbW9Sb29tID0gaXNEZW1vUm9vbTsKKwl9CisKKwlwdWJsaWMgSW50ZWdlciBnZXREZW1vVGltZSgpIHsKKwkJcmV0dXJuIGRlbW9UaW1lOworCX0KKworCXB1YmxpYyB2b2lkIHNldERlbW9UaW1lKEludGVnZXIgZGVtb1RpbWUpIHsKKwkJdGhpcy5kZW1vVGltZSA9IGRlbW9UaW1lOworCX0KKworCXB1YmxpYyBCb29sZWFuIGdldElzTW9kZXJhdGVkUm9vbSgpIHsKKwkJcmV0dXJuIGlzTW9kZXJhdGVkUm9vbTsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRJc01vZGVyYXRlZFJvb20oQm9vbGVhbiBpc01vZGVyYXRlZFJvb20pIHsKKwkJdGhpcy5pc01vZGVyYXRlZFJvb20gPSBpc01vZGVyYXRlZFJvb207CisJfQorCisJcHVibGljIExvbmcgZ2V0RXh0ZXJuYWxSb29tSWQoKSB7CisJCXJldHVybiBleHRlcm5hbFJvb21JZDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRFeHRlcm5hbFJvb21JZChMb25nIGV4dGVybmFsUm9vbUlkKSB7CisJCXRoaXMuZXh0ZXJuYWxSb29tSWQgPSBleHRlcm5hbFJvb21JZDsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGdldEV4dGVybmFsUm9vbVR5cGUoKSB7CisJCXJldHVybiBleHRlcm5hbFJvb21UeXBlOworCX0KKworCXB1YmxpYyB2b2lkIHNldEV4dGVybmFsUm9vbVR5cGUoU3RyaW5nIGV4dGVybmFsUm9vbVR5cGUpIHsKKwkJdGhpcy5leHRlcm5hbFJvb21UeXBlID0gZXh0ZXJuYWxSb29tVHlwZTsKKwl9CisKKwlwdWJsaWMgQm9vbGVhbiBnZXRBbGxvd1VzZXJRdWVzdGlvbnMoKSB7CisJCXJldHVybiBhbGxvd1VzZXJRdWVzdGlvbnM7CisJfQorCisJcHVibGljIHZvaWQgc2V0QWxsb3dVc2VyUXVlc3Rpb25zKEJvb2xlYW4gYWxsb3dVc2VyUXVlc3Rpb25zKSB7CisJCXRoaXMuYWxsb3dVc2VyUXVlc3Rpb25zID0gYWxsb3dVc2VyUXVlc3Rpb25zOworCX0KKworCXB1YmxpYyBCb29sZWFuIGdldElzQXVkaW9Pbmx5KCkgeworCQlyZXR1cm4gaXNBdWRpb09ubHk7CisJfQorCisJcHVibGljIHZvaWQgc2V0SXNBdWRpb09ubHkoQm9vbGVhbiBpc0F1ZGlvT25seSkgeworCQl0aGlzLmlzQXVkaW9Pbmx5ID0gaXNBdWRpb09ubHk7CisJfQorCisJcHVibGljIGJvb2xlYW4gZ2V0QWxsb3dGb250U3R5bGVzKCkgeworCQlyZXR1cm4gYWxsb3dGb250U3R5bGVzOworCX0KKworCXB1YmxpYyB2b2lkIHNldEFsbG93Rm9udFN0eWxlcyhib29sZWFuIGFsbG93Rm9udFN0eWxlcykgeworCQl0aGlzLmFsbG93Rm9udFN0eWxlcyA9IGFsbG93Rm9udFN0eWxlczsKKwl9CisKKwlwdWJsaWMgQm9vbGVhbiBnZXRJc0Nsb3NlZCgpIHsKKwkJcmV0dXJuIGlzQ2xvc2VkOworCX0KKworCXB1YmxpYyB2b2lkIHNldElzQ2xvc2VkKEJvb2xlYW4gaXNDbG9zZWQpIHsKKwkJdGhpcy5pc0Nsb3NlZCA9IGlzQ2xvc2VkOworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0UmVkaXJlY3RVUkwoKSB7CisJCXJldHVybiByZWRpcmVjdFVSTDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRSZWRpcmVjdFVSTChTdHJpbmcgcmVkaXJlY3RVUkwpIHsKKwkJdGhpcy5yZWRpcmVjdFVSTCA9IHJlZGlyZWN0VVJMOworCX0KKworCXB1YmxpYyBMb25nIGdldE93bmVySWQoKSB7CisJCXJldHVybiBvd25lcklkOworCX0KKworCXB1YmxpYyB2b2lkIHNldE93bmVySWQoTG9uZyBvd25lcklkKSB7CisJCXRoaXMub3duZXJJZCA9IG93bmVySWQ7CisJfQorCisJcHVibGljIEJvb2xlYW4gZ2V0V2FpdEZvclJlY29yZGluZygpIHsKKwkJcmV0dXJuIHdhaXRGb3JSZWNvcmRpbmc7CisJfQorCisJcHVibGljIHZvaWQgc2V0V2FpdEZvclJlY29yZGluZyhCb29sZWFuIHdhaXRGb3JSZWNvcmRpbmcpIHsKKwkJdGhpcy53YWl0Rm9yUmVjb3JkaW5nID0gd2FpdEZvclJlY29yZGluZzsKKwl9CisKKwlwdWJsaWMgQm9vbGVhbiBnZXRBbGxvd1JlY29yZGluZygpIHsKKwkJcmV0dXJuIGFsbG93UmVjb3JkaW5nOworCX0KKworCXB1YmxpYyB2b2lkIHNldEFsbG93UmVjb3JkaW5nKEJvb2xlYW4gYWxsb3dSZWNvcmRpbmcpIHsKKwkJdGhpcy5hbGxvd1JlY29yZGluZyA9IGFsbG93UmVjb3JkaW5nOworCX0KKworCXB1YmxpYyBCb29sZWFuIGdldEhpZGVUb3BCYXIoKSB7CisJCXJldHVybiBoaWRlVG9wQmFyOworCX0KKworCXB1YmxpYyB2b2lkIHNldEhpZGVUb3BCYXIoQm9vbGVhbiBoaWRlVG9wQmFyKSB7CisJCXRoaXMuaGlkZVRvcEJhciA9IGhpZGVUb3BCYXI7CisJfQorCisJcHVibGljIEJvb2xlYW4gZ2V0SGlkZUNoYXQoKSB7CisJCXJldHVybiBoaWRlQ2hhdDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRIaWRlQ2hhdChCb29sZWFuIGhpZGVDaGF0KSB7CisJCXRoaXMuaGlkZUNoYXQgPSBoaWRlQ2hhdDsKKwl9CisKKwlwdWJsaWMgQm9vbGVhbiBnZXRIaWRlQWN0aXZpdGllc0FuZEFjdGlvbnMoKSB7CisJCXJldHVybiBoaWRlQWN0aXZpdGllc0FuZEFjdGlvbnM7CisJfQorCisJcHVibGljIHZvaWQgc2V0SGlkZUFjdGl2aXRpZXNBbmRBY3Rpb25zKEJvb2xlYW4gaGlkZUFjdGl2aXRpZXNBbmRBY3Rpb25zKSB7CisJCXRoaXMuaGlkZUFjdGl2aXRpZXNBbmRBY3Rpb25zID0gaGlkZUFjdGl2aXRpZXNBbmRBY3Rpb25zOworCX0KKworCXB1YmxpYyBCb29sZWFuIGdldEhpZGVGaWxlc0V4cGxvcmVyKCkgeworCQlyZXR1cm4gaGlkZUZpbGVzRXhwbG9yZXI7CisJfQorCisJcHVibGljIHZvaWQgc2V0SGlkZUZpbGVzRXhwbG9yZXIoQm9vbGVhbiBoaWRlRmlsZXNFeHBsb3JlcikgeworCQl0aGlzLmhpZGVGaWxlc0V4cGxvcmVyID0gaGlkZUZpbGVzRXhwbG9yZXI7CisJfQorCisJcHVibGljIEJvb2xlYW4gZ2V0SGlkZUFjdGlvbnNNZW51KCkgeworCQlyZXR1cm4gaGlkZUFjdGlvbnNNZW51OworCX0KKworCXB1YmxpYyB2b2lkIHNldEhpZGVBY3Rpb25zTWVudShCb29sZWFuIGhpZGVBY3Rpb25zTWVudSkgeworCQl0aGlzLmhpZGVBY3Rpb25zTWVudSA9IGhpZGVBY3Rpb25zTWVudTsKKwl9CisKKwlwdWJsaWMgQm9vbGVhbiBnZXRIaWRlU2NyZWVuU2hhcmluZygpIHsKKwkJcmV0dXJuIGhpZGVTY3JlZW5TaGFyaW5nOworCX0KKworCXB1YmxpYyB2b2lkIHNldEhpZGVTY3JlZW5TaGFyaW5nKEJvb2xlYW4gaGlkZVNjcmVlblNoYXJpbmcpIHsKKwkJdGhpcy5oaWRlU2NyZWVuU2hhcmluZyA9IGhpZGVTY3JlZW5TaGFyaW5nOworCX0KKworCXB1YmxpYyBCb29sZWFuIGdldEhpZGVXaGl0ZWJvYXJkKCkgeworCQlyZXR1cm4gaGlkZVdoaXRlYm9hcmQ7CisJfQorCisJcHVibGljIHZvaWQgc2V0SGlkZVdoaXRlYm9hcmQoQm9vbGVhbiBoaWRlV2hpdGVib2FyZCkgeworCQl0aGlzLmhpZGVXaGl0ZWJvYXJkID0gaGlkZVdoaXRlYm9hcmQ7CisJfQorCisJcHVibGljIEJvb2xlYW4gZ2V0U2hvd01pY3JvcGhvbmVTdGF0dXMoKSB7CisJCXJldHVybiBzaG93TWljcm9waG9uZVN0YXR1czsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRTaG93TWljcm9waG9uZVN0YXR1cyhCb29sZWFuIHNob3dNaWNyb3Bob25lU3RhdHVzKSB7CisJCXRoaXMuc2hvd01pY3JvcGhvbmVTdGF0dXMgPSBzaG93TWljcm9waG9uZVN0YXR1czsKKwl9CisKKwlwdWJsaWMgTGlzdDxSb29tTW9kZXJhdG9yPiBnZXRNb2RlcmF0b3JzKCkgeworCQlyZXR1cm4gbW9kZXJhdG9yczsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRNb2RlcmF0b3JzKExpc3Q8Um9vbU1vZGVyYXRvcj4gbW9kZXJhdG9ycykgeworCQl0aGlzLm1vZGVyYXRvcnMgPSBtb2RlcmF0b3JzOworCX0KKworCXB1YmxpYyBCb29sZWFuIGdldENoYXRNb2RlcmF0ZWQoKSB7CisJCXJldHVybiBjaGF0TW9kZXJhdGVkOworCX0KKworCXB1YmxpYyB2b2lkIHNldENoYXRNb2RlcmF0ZWQoQm9vbGVhbiBjaGF0TW9kZXJhdGVkKSB7CisJCXRoaXMuY2hhdE1vZGVyYXRlZCA9IGNoYXRNb2RlcmF0ZWQ7CisJfQorCisJcHVibGljIExpc3Q8Um9vbU9yZ2FuaXNhdGlvbj4gZ2V0Um9vbU9yZ2FuaXNhdGlvbnMoKSB7CisJCXJldHVybiByb29tT3JnYW5pc2F0aW9uczsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRSb29tT3JnYW5pc2F0aW9ucyhMaXN0PFJvb21PcmdhbmlzYXRpb24+IHJvb21PcmdhbmlzYXRpb25zKSB7CisJCXRoaXMucm9vbU9yZ2FuaXNhdGlvbnMgPSByb29tT3JnYW5pc2F0aW9uczsKKwl9CisKKwlwdWJsaWMgYm9vbGVhbiBpc0NoYXRPcGVuZWQoKSB7CisJCXJldHVybiBjaGF0T3BlbmVkOworCX0KKworCXB1YmxpYyB2b2lkIHNldENoYXRPcGVuZWQoYm9vbGVhbiBjaGF0T3BlbmVkKSB7CisJCXRoaXMuY2hhdE9wZW5lZCA9IGNoYXRPcGVuZWQ7CisJfQorCisJcHVibGljIGJvb2xlYW4gaXNGaWxlc09wZW5lZCgpIHsKKwkJcmV0dXJuIGZpbGVzT3BlbmVkOworCX0KKworCXB1YmxpYyB2b2lkIHNldEZpbGVzT3BlbmVkKGJvb2xlYW4gZmlsZXNPcGVuZWQpIHsKKwkJdGhpcy5maWxlc09wZW5lZCA9IGZpbGVzT3BlbmVkOworCX0KKworCXB1YmxpYyBib29sZWFuIGlzQXV0b1ZpZGVvU2VsZWN0KCkgeworCQlyZXR1cm4gYXV0b1ZpZGVvU2VsZWN0OworCX0KKworCXB1YmxpYyB2b2lkIHNldEF1dG9WaWRlb1NlbGVjdChib29sZWFuIGF1dG9WaWRlb1NlbGVjdCkgeworCQl0aGlzLmF1dG9WaWRlb1NlbGVjdCA9IGF1dG9WaWRlb1NlbGVjdDsKKwl9CisKKwlwdWJsaWMgYm9vbGVhbiBpc1NpcEVuYWJsZWQoKSB7CisJCXJldHVybiBzaXBFbmFibGVkOworCX0KKworCXB1YmxpYyB2b2lkIHNldFNpcEVuYWJsZWQoYm9vbGVhbiBzaXBFbmFibGVkKSB7CisJCXRoaXMuc2lwRW5hYmxlZCA9IHNpcEVuYWJsZWQ7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRDb25mbm8oKSB7CisJCXJldHVybiBjb25mbm87CisJfQorCisJcHVibGljIHZvaWQgc2V0Q29uZm5vKFN0cmluZyBjb25mbm8pIHsKKwkJdGhpcy5jb25mbm8gPSBjb25mbm87CisJfQorCisJcHVibGljIFN0cmluZyBnZXRQaW4oKSB7CisJCXJldHVybiBwaW47CisJfQorCisJcHVibGljIHZvaWQgc2V0UGluKFN0cmluZyBwaW4pIHsKKwkJdGhpcy5waW4gPSBwaW47CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL3Jvb20vUm9vbU1vZGVyYXRvci5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL3Jvb20vUm9vbU1vZGVyYXRvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhYjliYjUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvcm9vbS9Sb29tTW9kZXJhdG9yLmphdmEKQEAgLTAsMCArMSwxMzQgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbTsKKworaW1wb3J0IGphdmEuaW8uU2VyaWFsaXphYmxlOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5GZXRjaFR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuR2VuZXJhdGVkVmFsdWU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuR2VuZXJhdGlvblR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSWQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSm9pbkNvbHVtbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5NYW55VG9PbmU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTmFtZWRRdWVyaWVzOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk5hbWVkUXVlcnk7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5qcGEucGVyc2lzdGVuY2UuamRiYy5Gb3JlaWduS2V5OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuVXNlcjsKK2ltcG9ydCBvcmcuc2ltcGxlZnJhbWV3b3JrLnhtbC5FbGVtZW50OworaW1wb3J0IG9yZy5zaW1wbGVmcmFtZXdvcmsueG1sLlJvb3Q7CisKK0BFbnRpdHkKK0BOYW1lZFF1ZXJpZXMoeworCUBOYW1lZFF1ZXJ5KG5hbWUgPSAiZ2V0Um9vbU1vZGVyYXRvckJ5SWQiLCBxdWVyeSA9ICJzZWxlY3QgYyBmcm9tIFJvb21Nb2RlcmF0b3IgYXMgYyAiICsKKwkJCSJ3aGVyZSBjLnJvb21Nb2RlcmF0b3JzSWQgPSA6cm9vbU1vZGVyYXRvcnNJZCIpLAorCUBOYW1lZFF1ZXJ5KG5hbWUgPSAiZ2V0Um9vbU1vZGVyYXRvckJ5Um9vbUlkIiwgcXVlcnkgPSAic2VsZWN0IGMgZnJvbSBSb29tTW9kZXJhdG9yIGFzIGMgIgorCQkJKyAid2hlcmUgYy5yb29tSWQgPSA6cm9vbUlkIEFORCBjLmRlbGV0ZWQgPD4gOmRlbGV0ZWQiKSwKKwlATmFtZWRRdWVyeShuYW1lID0gImdldFJvb21Nb2RlcmF0b3JCeVVzZXJBbmRSb29tSWQiLCBxdWVyeSA9ICJzZWxlY3QgYyBmcm9tIFJvb21Nb2RlcmF0b3IgYXMgYyAiCisJCQkrICJ3aGVyZSBjLnJvb21JZCA9IDpyb29tSWQgIgorCQkJKyAiQU5EIGMuZGVsZXRlZCA8PiA6ZGVsZXRlZCAiCisJCQkrICJBTkQgYy51c2VyLnVzZXJfaWQgPSA6dXNlcl9pZCIpCit9KQorQFRhYmxlKG5hbWUgPSAicm9vbXNfbW9kZXJhdG9yIikKK0BSb290KG5hbWUgPSAicm9vbV9tb2RlcmF0b3IiKQorcHVibGljIGNsYXNzIFJvb21Nb2RlcmF0b3IgaW1wbGVtZW50cyBTZXJpYWxpemFibGUgeworCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDU0MDc3NTg2NzM1OTE1MTUwMThMOworCQorCUBJZAorCUBHZW5lcmF0ZWRWYWx1ZShzdHJhdGVneSA9IEdlbmVyYXRpb25UeXBlLklERU5USVRZKQorCUBDb2x1bW4obmFtZT0iaWQiKQorCXByaXZhdGUgbG9uZyByb29tTW9kZXJhdG9yc0lkOworCQorCUBDb2x1bW4obmFtZSA9ICJyb29tSWQiKQorCXByaXZhdGUgTG9uZyByb29tSWQ7CisJCisJQENvbHVtbihuYW1lPSJpc19zdXBlcm1vZGVyYXRvciIpCisJQEVsZW1lbnQobmFtZT0iaXNfc3VwZXJtb2RlcmF0b3IiLCBkYXRhID0gdHJ1ZSkKKwlwcml2YXRlIEJvb2xlYW4gaXNTdXBlck1vZGVyYXRvcjsKKwkKKwlATWFueVRvT25lKGZldGNoID0gRmV0Y2hUeXBlLkVBR0VSKSAKKwlASm9pbkNvbHVtbiAobmFtZT0idXNlcl9pZCIpCisJQEZvcmVpZ25LZXkoZW5hYmxlZCA9IHRydWUpCisJQEVsZW1lbnQobmFtZT0idXNlcl9pZCIsIGRhdGEgPSB0cnVlLCByZXF1aXJlZD1mYWxzZSkKKwlwcml2YXRlIFVzZXIgdXNlcjsKKwkKKwlAQ29sdW1uKG5hbWUgPSAic3RhcnR0aW1lIikKKwlwcml2YXRlIERhdGUgc3RhcnR0aW1lOworCQorCUBDb2x1bW4obmFtZSA9ICJ1cGRhdGV0aW1lIikKKwlwcml2YXRlIERhdGUgdXBkYXRldGltZTsKKwkKKwlAQ29sdW1uKG5hbWUgPSAiZGVsZXRlZCIpCisJcHJpdmF0ZSBib29sZWFuIGRlbGV0ZWQ7CisJCisJcHVibGljIGxvbmcgZ2V0Um9vbU1vZGVyYXRvcnNJZCgpIHsKKwkJcmV0dXJuIHJvb21Nb2RlcmF0b3JzSWQ7CisJfQorCXB1YmxpYyB2b2lkIHNldFJvb21Nb2RlcmF0b3JzSWQobG9uZyByb29tTW9kZXJhdG9yc0lkKSB7CisJCXRoaXMucm9vbU1vZGVyYXRvcnNJZCA9IHJvb21Nb2RlcmF0b3JzSWQ7CisJfQorCQorCXB1YmxpYyBCb29sZWFuIGdldElzU3VwZXJNb2RlcmF0b3IoKSB7CisJCXJldHVybiBpc1N1cGVyTW9kZXJhdG9yOworCX0KKwlwdWJsaWMgdm9pZCBzZXRJc1N1cGVyTW9kZXJhdG9yKEJvb2xlYW4gaXNTdXBlck1vZGVyYXRvcikgeworCQl0aGlzLmlzU3VwZXJNb2RlcmF0b3IgPSBpc1N1cGVyTW9kZXJhdG9yOworCX0KKwkKKwkKKwlwdWJsaWMgVXNlciBnZXRVc2VyKCkgeworCQlyZXR1cm4gdXNlcjsKKwl9CisJcHVibGljIHZvaWQgc2V0VXNlcihVc2VyIHVzZXIpIHsKKwkJdGhpcy51c2VyID0gdXNlcjsKKwl9CisJCisJcHVibGljIERhdGUgZ2V0U3RhcnR0aW1lKCkgeworCQlyZXR1cm4gc3RhcnR0aW1lOworCX0KKwlwdWJsaWMgdm9pZCBzZXRTdGFydHRpbWUoRGF0ZSBzdGFydHRpbWUpIHsKKwkJdGhpcy5zdGFydHRpbWUgPSBzdGFydHRpbWU7CisJfQorCQorCXB1YmxpYyBEYXRlIGdldFVwZGF0ZXRpbWUoKSB7CisJCXJldHVybiB1cGRhdGV0aW1lOworCX0KKwlwdWJsaWMgdm9pZCBzZXRVcGRhdGV0aW1lKERhdGUgdXBkYXRldGltZSkgeworCQl0aGlzLnVwZGF0ZXRpbWUgPSB1cGRhdGV0aW1lOworCX0KKwkKKwlwdWJsaWMgYm9vbGVhbiBnZXREZWxldGVkKCkgeworCQlyZXR1cm4gZGVsZXRlZDsKKwl9CisJcHVibGljIHZvaWQgc2V0RGVsZXRlZChib29sZWFuIGRlbGV0ZWQpIHsKKwkJdGhpcy5kZWxldGVkID0gZGVsZXRlZDsKKwl9CisJCisJcHVibGljIExvbmcgZ2V0Um9vbUlkKCkgeworCQlyZXR1cm4gcm9vbUlkOworCX0KKwlwdWJsaWMgdm9pZCBzZXRSb29tSWQoTG9uZyByb29tSWQpIHsKKwkJdGhpcy5yb29tSWQgPSByb29tSWQ7CisJfQorCQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL3Jvb20vUm9vbU9yZ2FuaXNhdGlvbi5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL3Jvb20vUm9vbU9yZ2FuaXNhdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5OWQyMjgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvcm9vbS9Sb29tT3JnYW5pc2F0aW9uLmphdmEKQEAgLTAsMCArMSwxNDUgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbTsKKworaW1wb3J0IGphdmEuaW8uU2VyaWFsaXphYmxlOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5GZXRjaFR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuR2VuZXJhdGVkVmFsdWU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuR2VuZXJhdGlvblR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSWQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSm9pbkNvbHVtbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5NYW55VG9PbmU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTmFtZWRRdWVyaWVzOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk5hbWVkUXVlcnk7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5qcGEucGVyc2lzdGVuY2UuamRiYy5Gb3JlaWduS2V5OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmRvbWFpbi5PcmdhbmlzYXRpb247CitpbXBvcnQgb3JnLnNpbXBsZWZyYW1ld29yay54bWwuRWxlbWVudDsKK2ltcG9ydCBvcmcuc2ltcGxlZnJhbWV3b3JrLnhtbC5Sb290OworCitARW50aXR5CitATmFtZWRRdWVyaWVzKHsKKwlATmFtZWRRdWVyeShuYW1lID0gImdldFJvb21zT3JnYW5pc2F0aW9uQnlPcmdhbmlzYXRpb25JZEFuZFJvb21UeXBlIiwgcXVlcnkgPSAic2VsZWN0IGMgZnJvbSBSb29tT3JnYW5pc2F0aW9uIGFzIGMgIgorCQkJKyAid2hlcmUgYy5yb29tLnJvb210eXBlc19pZCA9IDpyb29tdHlwZXNfaWQgIgorCQkJKyAiQU5EIGMub3JnYW5pc2F0aW9uLm9yZ2FuaXNhdGlvbl9pZCA9IDpvcmdhbmlzYXRpb25faWQgIgorCQkJKyAiQU5EIGMuZGVsZXRlZCA8PiA6ZGVsZXRlZCIpLAorCUBOYW1lZFF1ZXJ5KG5hbWUgPSAiZ2V0Um9vbXNPcmdhbmlzYXRpb25CeU9yZ2FuaXNhdGlvbklkIiwgcXVlcnkgPSAiU0VMRUNUIGMgRlJPTSBSb29tT3JnYW5pc2F0aW9uIGMgIgorCQkJKyAiTEVGVCBKT0lOIEZFVENIIGMucm9vbSAiCisJCQkrICJXSEVSRSBjLm9yZ2FuaXNhdGlvbi5vcmdhbmlzYXRpb25faWQgPSA6b3JnYW5pc2F0aW9uX2lkICIKKwkJCSsgIkFORCBjLmRlbGV0ZWQgPD4gOmRlbGV0ZWQgQU5EIGMucm9vbS5kZWxldGVkIDw+IDpkZWxldGVkIEFORCBjLnJvb20uYXBwb2ludG1lbnQgPSBmYWxzZSAiCisJCQkrICJBTkQgYy5vcmdhbmlzYXRpb24uZGVsZXRlZCA8PiA6ZGVsZXRlZCAiCisJCQkrICJPUkRFUiBCWSBjLnJvb20ubmFtZSBBU0MiKSwKKwlATmFtZWRRdWVyeShuYW1lID0gInNlbGVjdE1heEZyb21Sb29tc0J5T3JnYW5pc2F0aW9uIiwgcXVlcnkgPSAic2VsZWN0IGMgZnJvbSBSb29tc19PcmdhbmlzYXRpb24gYXMgYyAiCisJCQkrICJ3aGVyZSBjLm9yZ2FuaXNhdGlvbi5vcmdhbmlzYXRpb25faWQgPSA6b3JnYW5pc2F0aW9uX2lkICIKKwkJCSsgIkFORCBjLmRlbGV0ZWQgPD4gOmRlbGV0ZWQiKSwKKwlATmFtZWRRdWVyeShuYW1lID0gImdldFJvb21zT3JnYW5pc2F0aW9uQnlPcmdhbmlzYXRpb25JZEFuZFJvb21JZCIsIHF1ZXJ5ID0gInNlbGVjdCBjIGZyb20gUm9vbU9yZ2FuaXNhdGlvbiBhcyBjICIKKwkJCSsgIndoZXJlIGMucm9vbS5yb29tc19pZCA9IDpyb29tc19pZCAiCisJCQkrICJBTkQgYy5vcmdhbmlzYXRpb24ub3JnYW5pc2F0aW9uX2lkID0gOm9yZ2FuaXNhdGlvbl9pZCAiCisJCQkrICJBTkQgYy5kZWxldGVkIDw+IDpkZWxldGVkIiksCisJQE5hbWVkUXVlcnkobmFtZSA9ICJnZXRSb29tc09yZ2FuaXNhdGlvbkJ5Um9vbXNJZCIsIHF1ZXJ5ID0gInNlbGVjdCBjIGZyb20gUm9vbU9yZ2FuaXNhdGlvbiBhcyBjICIKKwkJCSsgIndoZXJlIGMucm9vbS5yb29tc19pZCA9IDpyb29tc19pZCAiCisJCQkrICJBTkQgYy5kZWxldGVkIDw+IDpkZWxldGVkIikKK30pCitAVGFibGUobmFtZSA9ICJyb29tc19vcmdhbmlzYXRpb24iKQorQFJvb3QobmFtZT0icm9vbV9vcmdhbmlzYXRpb24iKQorcHVibGljIGNsYXNzIFJvb21PcmdhbmlzYXRpb24gaW1wbGVtZW50cyBTZXJpYWxpemFibGUgeworCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDQxNTM5MzUwNDU5NjgxMzg5ODRMOworCUBJZAorCUBHZW5lcmF0ZWRWYWx1ZShzdHJhdGVneSA9IEdlbmVyYXRpb25UeXBlLklERU5USVRZKQorCUBDb2x1bW4obmFtZT0iaWQiKQorCUBFbGVtZW50KGRhdGE9dHJ1ZSkKKwlwcml2YXRlIExvbmcgcm9vbXNfb3JnYW5pc2F0aW9uX2lkOworCQorCUBNYW55VG9PbmUoZmV0Y2ggPSBGZXRjaFR5cGUuTEFaWSkKKwlASm9pbkNvbHVtbihuYW1lPSJyb29tc19pZCIsIG51bGxhYmxlPXRydWUpCisJQEZvcmVpZ25LZXkoZW5hYmxlZCA9IHRydWUpCisJQEVsZW1lbnQobmFtZT0icm9vbXNfaWQiLCBkYXRhPXRydWUsIHJlcXVpcmVkPWZhbHNlKQorCXByaXZhdGUgUm9vbSByb29tOworCQorCUBNYW55VG9PbmUoZmV0Y2ggPSBGZXRjaFR5cGUuRUFHRVIpCisJQEpvaW5Db2x1bW4obmFtZT0ib3JnYW5pc2F0aW9uX2lkIiwgbnVsbGFibGU9dHJ1ZSkKKwlARm9yZWlnbktleShlbmFibGVkID0gdHJ1ZSkKKwlARWxlbWVudChuYW1lPSJvcmdhbmlzYXRpb25faWQiLCBkYXRhPXRydWUsIHJlcXVpcmVkPWZhbHNlKQorCXByaXZhdGUgT3JnYW5pc2F0aW9uIG9yZ2FuaXNhdGlvbjsKKwkKKwlAQ29sdW1uKG5hbWUgPSAic3RhcnR0aW1lIikKKwlwcml2YXRlIERhdGUgc3RhcnR0aW1lOworCQorCUBDb2x1bW4obmFtZSA9ICJ1cGRhdGV0aW1lIikKKwlwcml2YXRlIERhdGUgdXBkYXRldGltZTsKKwkKKwlAQ29sdW1uKG5hbWUgPSAiZGVsZXRlZCIpCisJQEVsZW1lbnQoZGF0YT10cnVlKQorCXByaXZhdGUgYm9vbGVhbiBkZWxldGVkOworCisJcHVibGljIFJvb21PcmdhbmlzYXRpb24oT3JnYW5pc2F0aW9uIG9yZykgeworCQl0aGlzLm9yZ2FuaXNhdGlvbiA9IG9yZzsKKwl9CisKKwlwdWJsaWMgUm9vbU9yZ2FuaXNhdGlvbigpIHsKKwl9CisKKwlwdWJsaWMgT3JnYW5pc2F0aW9uIGdldE9yZ2FuaXNhdGlvbigpIHsKKwkJcmV0dXJuIG9yZ2FuaXNhdGlvbjsKKwl9CisJcHVibGljIHZvaWQgc2V0T3JnYW5pc2F0aW9uKE9yZ2FuaXNhdGlvbiBvcmdhbmlzYXRpb24pIHsKKwkJdGhpcy5vcmdhbmlzYXRpb24gPSBvcmdhbmlzYXRpb247CisJfQorCQorCXB1YmxpYyBSb29tIGdldFJvb20oKSB7CisJCXJldHVybiByb29tOworCX0KKwlwdWJsaWMgdm9pZCBzZXRSb29tKFJvb20gcm9vbSkgeworCQl0aGlzLnJvb20gPSByb29tOworCX0KKworCXB1YmxpYyBMb25nIGdldFJvb21zX29yZ2FuaXNhdGlvbl9pZCgpIHsKKwkJcmV0dXJuIHJvb21zX29yZ2FuaXNhdGlvbl9pZDsKKwl9CisJcHVibGljIHZvaWQgc2V0Um9vbXNfb3JnYW5pc2F0aW9uX2lkKExvbmcgcm9vbXNfb3JnYW5pc2F0aW9uX2lkKSB7CisJCXRoaXMucm9vbXNfb3JnYW5pc2F0aW9uX2lkID0gcm9vbXNfb3JnYW5pc2F0aW9uX2lkOworCX0KKyAgICAKKwlwdWJsaWMgRGF0ZSBnZXRTdGFydHRpbWUoKSB7CisJCXJldHVybiBzdGFydHRpbWU7CisJfQorCXB1YmxpYyB2b2lkIHNldFN0YXJ0dGltZShEYXRlIHN0YXJ0dGltZSkgeworCQl0aGlzLnN0YXJ0dGltZSA9IHN0YXJ0dGltZTsKKwl9CisgICAgCisJcHVibGljIERhdGUgZ2V0VXBkYXRldGltZSgpIHsKKwkJcmV0dXJuIHVwZGF0ZXRpbWU7CisJfQorCXB1YmxpYyB2b2lkIHNldFVwZGF0ZXRpbWUoRGF0ZSB1cGRhdGV0aW1lKSB7CisJCXRoaXMudXBkYXRldGltZSA9IHVwZGF0ZXRpbWU7CisJfQkKKwkKKwlwdWJsaWMgYm9vbGVhbiBnZXREZWxldGVkKCkgeworCQlyZXR1cm4gZGVsZXRlZDsKKwl9CisJcHVibGljIHZvaWQgc2V0RGVsZXRlZChib29sZWFuIGRlbGV0ZWQpIHsKKwkJdGhpcy5kZWxldGVkID0gZGVsZXRlZDsKKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9yb29tL1Jvb21UeXBlLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvcm9vbS9Sb29tVHlwZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgxZTQ1NmEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvcm9vbS9Sb29tVHlwZS5qYXZhCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbTsKKworaW1wb3J0IGphdmEuaW8uU2VyaWFsaXphYmxlOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5HZW5lcmF0ZWRWYWx1ZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5HZW5lcmF0aW9uVHlwZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5JZDsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5OYW1lZFF1ZXJpZXM7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTmFtZWRRdWVyeTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UYWJsZTsKKworQEVudGl0eQorQE5hbWVkUXVlcmllcyh7CisJQE5hbWVkUXVlcnkobmFtZSA9ICJnZXRBbGxSb29tVHlwZXMiLCBxdWVyeSA9ICJzZWxlY3QgYyBmcm9tIFJvb21UeXBlIGFzIGMgd2hlcmUgYy5kZWxldGVkIDw+IDpkZWxldGVkIiksCisJQE5hbWVkUXVlcnkobmFtZSA9ICJnZXRSb29tVHlwZXNCeUlkIiwgcXVlcnkgPSAic2VsZWN0IGMgZnJvbSBSb29tVHlwZSBhcyBjICIgKworCQkJIndoZXJlIGMucm9vbXR5cGVzX2lkID0gOnJvb210eXBlc19pZCBBTkQgYy5kZWxldGVkIDw+IDpkZWxldGVkIikKK30pCitAVGFibGUobmFtZSA9ICJyb29tdHlwZSIpCitwdWJsaWMgY2xhc3MgUm9vbVR5cGUgaW1wbGVtZW50cyBTZXJpYWxpemFibGUgeworCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IC00NDQxMDI5NDI0MzI0NTkxMzU2TDsKKwlASWQKKwlAR2VuZXJhdGVkVmFsdWUoc3RyYXRlZ3kgPSBHZW5lcmF0aW9uVHlwZS5JREVOVElUWSkKKwlAQ29sdW1uKG5hbWU9ImlkIikKKwlwcml2YXRlIExvbmcgcm9vbXR5cGVzX2lkOworCQorCUBDb2x1bW4obmFtZSA9ICJzdGFydHRpbWUiKQorCXByaXZhdGUgRGF0ZSBzdGFydHRpbWU7CisJCisJQENvbHVtbihuYW1lID0gInVwZGF0ZXRpbWUiKQorCXByaXZhdGUgRGF0ZSB1cGRhdGV0aW1lOworCQorCUBDb2x1bW4obmFtZT0ibmFtZSIpCisJcHJpdmF0ZSBTdHJpbmcgbmFtZTsKKwkKKwlAQ29sdW1uKG5hbWUgPSAiZGVsZXRlZCIpCisJcHJpdmF0ZSBib29sZWFuIGRlbGV0ZWQ7CisKKyAgICAKKwlwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7CisJCXJldHVybiBuYW1lOworCX0KKwlwdWJsaWMgdm9pZCBzZXROYW1lKFN0cmluZyBuYW1lKSB7CisJCXRoaXMubmFtZSA9IG5hbWU7CisJfQorICAgIAorCXB1YmxpYyBMb25nIGdldFJvb210eXBlc19pZCgpIHsKKwkJcmV0dXJuIHJvb210eXBlc19pZDsKKwl9CisJcHVibGljIHZvaWQgc2V0Um9vbXR5cGVzX2lkKExvbmcgcm9vbXR5cGVzX2lkKSB7CisJCXRoaXMucm9vbXR5cGVzX2lkID0gcm9vbXR5cGVzX2lkOworCX0KKyAgICAKKwlwdWJsaWMgRGF0ZSBnZXRTdGFydHRpbWUoKSB7CisJCXJldHVybiBzdGFydHRpbWU7CisJfQorCXB1YmxpYyB2b2lkIHNldFN0YXJ0dGltZShEYXRlIHN0YXJ0dGltZSkgeworCQl0aGlzLnN0YXJ0dGltZSA9IHN0YXJ0dGltZTsKKwl9CisgICAgCisJcHVibGljIERhdGUgZ2V0VXBkYXRldGltZSgpIHsKKwkJcmV0dXJuIHVwZGF0ZXRpbWU7CisJfQorCXB1YmxpYyB2b2lkIHNldFVwZGF0ZXRpbWUoRGF0ZSB1cGRhdGV0aW1lKSB7CisJCXRoaXMudXBkYXRldGltZSA9IHVwZGF0ZXRpbWU7CisJfQkKKwkKKwlwdWJsaWMgYm9vbGVhbiBnZXREZWxldGVkKCkgeworCQlyZXR1cm4gZGVsZXRlZDsKKwl9CisJcHVibGljIHZvaWQgc2V0RGVsZXRlZChib29sZWFuIGRlbGV0ZWQpIHsKKwkJdGhpcy5kZWxldGVkID0gZGVsZXRlZDsKKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9yb29tL1doaXRlYm9hcmQuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9yb29tL1doaXRlYm9hcmQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNjI1MjBhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL3Jvb20vV2hpdGVib2FyZC5qYXZhCkBAIC0wLDAgKzEsMTMxIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnJvb207CisKK2ltcG9ydCBqYXZhLnV0aWwuQ2FsZW5kYXI7CitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247CisKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkdlbmVyYXRlZFZhbHVlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkdlbmVyYXRpb25UeXBlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLklkOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk9uZVRvTWFueTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UYWJsZTsKKworaW1wb3J0IG9yZy5hcGFjaGUub3BlbmpwYS5wZXJzaXN0ZW5jZS5qZGJjLkVsZW1lbnRKb2luQ29sdW1uOworaW1wb3J0IG9yZy5hcGFjaGUub3BlbmpwYS5wZXJzaXN0ZW5jZS5qZGJjLkZvcmVpZ25LZXk7CisKK0BFbnRpdHkKK0BUYWJsZShuYW1lID0gIndoaXRlYm9hcmQiKQorcHVibGljIGNsYXNzIFdoaXRlYm9hcmQgeworCisJQElkCisJQEdlbmVyYXRlZFZhbHVlKHN0cmF0ZWd5ID0gR2VuZXJhdGlvblR5cGUuSURFTlRJVFkpCisJQENvbHVtbihuYW1lID0gImlkIikKKwlwcml2YXRlIGxvbmcgaWQ7CisKKwlAQ29sdW1uKG5hbWUgPSAicm9vbV9pZCIpCisJcHJpdmF0ZSBJbnRlZ2VyIHJvb21JZCA9IDA7CisKKwlAQ29sdW1uKG5hbWUgPSAieCIpCisJcHJpdmF0ZSBJbnRlZ2VyIHggPSAwOworCisJQENvbHVtbihuYW1lID0gInkiKQorCXByaXZhdGUgSW50ZWdlciB5ID0gMDsKKworCUBDb2x1bW4obmFtZSA9ICJ6b29tIikKKwlwcml2YXRlIEludGVnZXIgem9vbSA9IDEwMDsKKworCUBDb2x1bW4obmFtZSA9ICJmdWxsX2ZpdCIpCisJcHJpdmF0ZSBCb29sZWFuIGZ1bGxGaXQ7CisKKwlAQ29sdW1uKG5hbWUgPSAiY3JlYXRlZCIpCisJcHJpdmF0ZSBDYWxlbmRhciBjcmVhdGVkOworCisJQE9uZVRvTWFueQorCUBFbGVtZW50Sm9pbkNvbHVtbihuYW1lID0gIndoaXRlYm9hcmRpdGVtX2lkIiwgcmVmZXJlbmNlZENvbHVtbk5hbWUgPSAiaWQiKQorCUBGb3JlaWduS2V5KGVuYWJsZWQgPSB0cnVlKQorCXByaXZhdGUgQ29sbGVjdGlvbjxXaGl0ZWJvYXJkSXRlbT4gcm9vbUl0ZW1zOworCisJcHVibGljIGxvbmcgZ2V0SWQoKSB7CisJCXJldHVybiBpZDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRJZChsb25nIGlkKSB7CisJCXRoaXMuaWQgPSBpZDsKKwl9CisKKwlwdWJsaWMgSW50ZWdlciBnZXRYKCkgeworCQlyZXR1cm4geDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRYKEludGVnZXIgeCkgeworCQl0aGlzLnggPSB4OworCX0KKworCXB1YmxpYyBJbnRlZ2VyIGdldFkoKSB7CisJCXJldHVybiB5OworCX0KKworCXB1YmxpYyB2b2lkIHNldFkoSW50ZWdlciB5KSB7CisJCXRoaXMueSA9IHk7CisJfQorCisJcHVibGljIEludGVnZXIgZ2V0Wm9vbSgpIHsKKwkJcmV0dXJuIHpvb207CisJfQorCisJcHVibGljIHZvaWQgc2V0Wm9vbShJbnRlZ2VyIHpvb20pIHsKKwkJdGhpcy56b29tID0gem9vbTsKKwl9CisKKwlwdWJsaWMgQm9vbGVhbiBnZXRGdWxsRml0KCkgeworCQlyZXR1cm4gZnVsbEZpdDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRGdWxsRml0KEJvb2xlYW4gZnVsbEZpdCkgeworCQl0aGlzLmZ1bGxGaXQgPSBmdWxsRml0OworCX0KKworCXB1YmxpYyBDYWxlbmRhciBnZXRDcmVhdGVkKCkgeworCQlyZXR1cm4gY3JlYXRlZDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRDcmVhdGVkKENhbGVuZGFyIGNyZWF0ZWQpIHsKKwkJdGhpcy5jcmVhdGVkID0gY3JlYXRlZDsKKwl9CisKKwlwdWJsaWMgSW50ZWdlciBnZXRSb29tSWQoKSB7CisJCXJldHVybiByb29tSWQ7CisJfQorCisJcHVibGljIHZvaWQgc2V0Um9vbUlkKEludGVnZXIgcm9vbUlkKSB7CisJCXRoaXMucm9vbUlkID0gcm9vbUlkOworCX0KKworCXB1YmxpYyBDb2xsZWN0aW9uPFdoaXRlYm9hcmRJdGVtPiBnZXRSb29tSXRlbXMoKSB7CisJCXJldHVybiByb29tSXRlbXM7CisJfQorCisJcHVibGljIHZvaWQgc2V0Um9vbUl0ZW1zKENvbGxlY3Rpb248V2hpdGVib2FyZEl0ZW0+IHJvb21JdGVtcykgeworCQl0aGlzLnJvb21JdGVtcyA9IHJvb21JdGVtczsKKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9yb29tL1doaXRlYm9hcmRJdGVtLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvcm9vbS9XaGl0ZWJvYXJkSXRlbS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkNWMyYmIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvcm9vbS9XaGl0ZWJvYXJkSXRlbS5qYXZhCkBAIC0wLDAgKzEsNDMgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbTsKKworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHk7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuR2VuZXJhdGVkVmFsdWU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuR2VuZXJhdGlvblR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSWQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7CisKK0BFbnRpdHkKK0BUYWJsZShuYW1lID0gIndoaXRlYm9hcmRfaXRlbSIpCitwdWJsaWMgY2xhc3MgV2hpdGVib2FyZEl0ZW0geworCQorCUBJZAorCUBHZW5lcmF0ZWRWYWx1ZShzdHJhdGVneSA9IEdlbmVyYXRpb25UeXBlLklERU5USVRZKQorCUBDb2x1bW4obmFtZSA9ICJpZCIpCisJcHJpdmF0ZSBsb25nIGlkOworCQorCUBDb2x1bW4obmFtZSA9ICJrZXl4IikKKwlwcml2YXRlIFN0cmluZyBrZXk7CisJCisJQENvbHVtbihuYW1lID0gInZhbHVlIikKKwlwcml2YXRlIFN0cmluZyB2YWx1ZTsKKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL3NpcC9hc3Rlcmlzay9Bc3Rlcmlza1NpcFVzZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9zaXAvYXN0ZXJpc2svQXN0ZXJpc2tTaXBVc2VyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTMyZDE5MAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy9zaXAvYXN0ZXJpc2svQXN0ZXJpc2tTaXBVc2VyLmphdmEKQEAgLTAsMCArMSwyNjQgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuc2lwLmFzdGVyaXNrOworCitpbXBvcnQgamF2YS5pby5TZXJpYWxpemFibGU7CisKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudW1UeXBlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudW1lcmF0ZWQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuR2VuZXJhdGVkVmFsdWU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuR2VuZXJhdGlvblR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSWQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7CisKK2ltcG9ydCBvcmcuc2ltcGxlZnJhbWV3b3JrLnhtbC5FbGVtZW50OworaW1wb3J0IG9yZy5zaW1wbGVmcmFtZXdvcmsueG1sLlJvb3Q7CisKK0BFbnRpdHkKK0BUYWJsZShuYW1lID0gInNpcHVzZXJzIikKK0BSb290KG5hbWU9ImFzdGVyaXNrc2lwdXNlciIpCitwdWJsaWMgY2xhc3MgQXN0ZXJpc2tTaXBVc2VyIGltcGxlbWVudHMgU2VyaWFsaXphYmxlIHsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAtNTY1ODMxNzYxNTQ2MzY1NjIzTDsKKwlwdWJsaWMgZW51bSBUeXBlIHsKKwkJZnJpZW5kLAorCQl1c2VyLAorCQlwZWVyCisJfQorCisJQElkCisJQENvbHVtbihuYW1lID0gImlkIikKKwlAR2VuZXJhdGVkVmFsdWUoc3RyYXRlZ3kgPSBHZW5lcmF0aW9uVHlwZS5JREVOVElUWSkKKwlARWxlbWVudChkYXRhID0gdHJ1ZSkKKwlwcml2YXRlIGxvbmcgaWQ7CisKKwlAQ29sdW1uKG5hbWUgPSAidHlwZSIsIG51bGxhYmxlID0gZmFsc2UsIGxlbmd0aD02KQorCUBFbnVtZXJhdGVkKEVudW1UeXBlLlNUUklORykKKwlARWxlbWVudChkYXRhPXRydWUsIHJlcXVpcmVkPWZhbHNlKQorCXByaXZhdGUgVHlwZSB0eXBlID0gVHlwZS5mcmllbmQ7CisJCisJQENvbHVtbihuYW1lID0gIm5hbWUiLCBudWxsYWJsZSA9IGZhbHNlLCBsZW5ndGg9MTI4KQorCUBFbGVtZW50KGRhdGE9dHJ1ZSwgcmVxdWlyZWQ9ZmFsc2UpCisJcHJpdmF0ZSBTdHJpbmcgbmFtZSA9ICIiOyAvLwlWYXJjaGFyIDEyOAorCQorCUBDb2x1bW4obmFtZSA9ICJzZWNyZXQiLCBsZW5ndGg9MTI4KQorCUBFbGVtZW50KGRhdGE9dHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIFN0cmluZyBzZWNyZXQ7IC8vCVZhcmNoYXIgMTI4CisJCisJQENvbHVtbihuYW1lID0gImNvbnRleHQiLCBsZW5ndGg9MTI4KQorCUBFbGVtZW50KGRhdGE9dHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIFN0cmluZyBjb250ZXh0OyAvLwlWYXJjaGFyIDEyOAorCQorCUBDb2x1bW4obmFtZSA9ICJob3N0IiwgbnVsbGFibGUgPSBmYWxzZSwgbGVuZ3RoPTEyOCkKKwlARWxlbWVudChkYXRhPXRydWUsIHJlcXVpcmVkID0gZmFsc2UpCisJcHJpdmF0ZSBTdHJpbmcgaG9zdCA9ICJkeW5hbWljIjsgLy8JVmFyY2hhciAxMjgKKwkKKwlAQ29sdW1uKG5hbWUgPSAiaXBhZGRyIiwgbnVsbGFibGUgPSBmYWxzZSwgbGVuZ3RoPTEyOCkKKwlARWxlbWVudChkYXRhPXRydWUsIHJlcXVpcmVkPWZhbHNlKQorCXByaXZhdGUgU3RyaW5nIGlwYWRkciA9ICIiOyAvLwlWYXJjaGFyIDEyOAorCQorCUBDb2x1bW4obmFtZSA9ICJwb3J0IiwgbnVsbGFibGUgPSBmYWxzZSwgbGVuZ3RoPTgpCisJQEVsZW1lbnQoZGF0YT10cnVlLCByZXF1aXJlZD1mYWxzZSkKKwlwcml2YXRlIEludGVnZXIgcG9ydCA9IDA7IC8vCW1lZGl1bWludCg4KQorCQorCUBDb2x1bW4obmFtZSA9ICJyZWdzZWNvbmRzIiwgbnVsbGFibGUgPSBmYWxzZSkKKwlARWxlbWVudChkYXRhPXRydWUsIHJlcXVpcmVkID0gZmFsc2UpCisJcHJpdmF0ZSBMb25nIHJlZ3NlY29uZHMgPSAwTDsgLy8JQmlnaW50CisJCisJQENvbHVtbihuYW1lID0gImRlZmF1bHR1c2VyIiwgbnVsbGFibGUgPSB0cnVlLCBsZW5ndGg9MTI4KQorCUBFbGVtZW50KGRhdGE9dHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIFN0cmluZyBkZWZhdWx0dXNlcjsgLy8JVmFyY2hhciAxMjgKKwkKKwlAQ29sdW1uKG5hbWUgPSAiZnVsbGNvbnRhY3QiLCBsZW5ndGg9MTI4KQorCUBFbGVtZW50KGRhdGE9dHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIFN0cmluZyBmdWxsY29udGFjdDsgLy8JVmFyY2hhciAxMjgKKwkKKwlAQ29sdW1uKG5hbWUgPSAicmVnc2VydmVyIiwgbnVsbGFibGUgPSB0cnVlLCBsZW5ndGg9MTI4KQorCUBFbGVtZW50KGRhdGE9dHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIFN0cmluZyByZWdzZXJ2ZXI7IC8vCVZhcmNoYXIgMTI4CisJCisJQENvbHVtbihuYW1lID0gInVzZXJhZ2VudCIsIG51bGxhYmxlID0gdHJ1ZSwgbGVuZ3RoPTEyOCkKKwlARWxlbWVudChkYXRhPXRydWUsIHJlcXVpcmVkID0gZmFsc2UpCisJcHJpdmF0ZSBTdHJpbmcgdXNlcmFnZW50OyAvLwlWYXJjaGFyIDEyOAorCQorCUBDb2x1bW4obmFtZSA9ICJsYXN0bXMiKQorCUBFbGVtZW50KGRhdGE9dHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIEludGVnZXIgbGFzdG1zOyAvLwlJbnRlZ2VyCisJCisJQENvbHVtbihuYW1lID0gIm1kNXNlY3JldCIpCisJQEVsZW1lbnQoZGF0YT10cnVlLCByZXF1aXJlZCA9IGZhbHNlKQorCXByaXZhdGUgU3RyaW5nIG1kNXNlY3JldDsKKworCUBDb2x1bW4obmFtZSA9ICJuYXQiLCBudWxsYWJsZT1mYWxzZSkKKwlARWxlbWVudChkYXRhPXRydWUsIHJlcXVpcmVkID0gZmFsc2UpCisJcHJpdmF0ZSBTdHJpbmcgbmF0ID0gImZvcmNlX3Jwb3J0LGNvbWVkaWEiOworCQorCUBDb2x1bW4obmFtZSA9ICJjYWxsYmFja2V4dGVuc2lvbiIsIG51bGxhYmxlPXRydWUsIGxlbmd0aD0yNTApCisJQEVsZW1lbnQoZGF0YT10cnVlLCByZXF1aXJlZCA9IGZhbHNlKQorCXByaXZhdGUgU3RyaW5nIGNhbGxiYWNrZXh0ZW5zaW9uOworCisJQENvbHVtbihuYW1lID0gImFsbG93IiwgbnVsbGFibGU9ZmFsc2UsIGxlbmd0aD0xMDApCisJQEVsZW1lbnQoZGF0YT10cnVlLCByZXF1aXJlZCA9IGZhbHNlKQorCXByaXZhdGUgU3RyaW5nIGFsbG93ID0gInVsYXc7YWxhdztoMjY0IjsKKworCXB1YmxpYyBsb25nIGdldElkKCkgeworCQlyZXR1cm4gaWQ7CisJfQorCisJcHVibGljIHZvaWQgc2V0SWQobG9uZyBpZCkgeworCQl0aGlzLmlkID0gaWQ7CisJfQorCisJcHVibGljIFR5cGUgZ2V0VHlwZSgpIHsKKwkJcmV0dXJuIHR5cGU7CisJfQorCisJcHVibGljIHZvaWQgc2V0VHlwZShUeXBlIHR5cGUpIHsKKwkJdGhpcy50eXBlID0gdHlwZTsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7CisJCXJldHVybiBuYW1lOworCX0KKworCXB1YmxpYyB2b2lkIHNldE5hbWUoU3RyaW5nIG5hbWUpIHsKKwkJdGhpcy5uYW1lID0gbmFtZTsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGdldFNlY3JldCgpIHsKKwkJcmV0dXJuIHNlY3JldDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRTZWNyZXQoU3RyaW5nIHNlY3JldCkgeworCQl0aGlzLnNlY3JldCA9IHNlY3JldDsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGdldENvbnRleHQoKSB7CisJCXJldHVybiBjb250ZXh0OworCX0KKworCXB1YmxpYyB2b2lkIHNldENvbnRleHQoU3RyaW5nIGNvbnRleHQpIHsKKwkJdGhpcy5jb250ZXh0ID0gY29udGV4dDsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGdldEhvc3QoKSB7CisJCXJldHVybiBob3N0OworCX0KKworCXB1YmxpYyB2b2lkIHNldEhvc3QoU3RyaW5nIGhvc3QpIHsKKwkJdGhpcy5ob3N0ID0gaG9zdDsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGdldElwYWRkcigpIHsKKwkJcmV0dXJuIGlwYWRkcjsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRJcGFkZHIoU3RyaW5nIGlwYWRkcikgeworCQl0aGlzLmlwYWRkciA9IGlwYWRkcjsKKwl9CisKKwlwdWJsaWMgSW50ZWdlciBnZXRQb3J0KCkgeworCQlyZXR1cm4gcG9ydDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRQb3J0KEludGVnZXIgcG9ydCkgeworCQl0aGlzLnBvcnQgPSBwb3J0OworCX0KKworCXB1YmxpYyBMb25nIGdldFJlZ3NlY29uZHMoKSB7CisJCXJldHVybiByZWdzZWNvbmRzOworCX0KKworCXB1YmxpYyB2b2lkIHNldFJlZ3NlY29uZHMoTG9uZyByZWdzZWNvbmRzKSB7CisJCXRoaXMucmVnc2Vjb25kcyA9IHJlZ3NlY29uZHM7CisJfQorCisJcHVibGljIFN0cmluZyBnZXREZWZhdWx0dXNlcigpIHsKKwkJcmV0dXJuIGRlZmF1bHR1c2VyOworCX0KKworCXB1YmxpYyB2b2lkIHNldERlZmF1bHR1c2VyKFN0cmluZyBkZWZhdWx0dXNlcikgeworCQl0aGlzLmRlZmF1bHR1c2VyID0gZGVmYXVsdHVzZXI7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRGdWxsY29udGFjdCgpIHsKKwkJcmV0dXJuIGZ1bGxjb250YWN0OworCX0KKworCXB1YmxpYyB2b2lkIHNldEZ1bGxjb250YWN0KFN0cmluZyBmdWxsY29udGFjdCkgeworCQl0aGlzLmZ1bGxjb250YWN0ID0gZnVsbGNvbnRhY3Q7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRSZWdzZXJ2ZXIoKSB7CisJCXJldHVybiByZWdzZXJ2ZXI7CisJfQorCisJcHVibGljIHZvaWQgc2V0UmVnc2VydmVyKFN0cmluZyByZWdzZXJ2ZXIpIHsKKwkJdGhpcy5yZWdzZXJ2ZXIgPSByZWdzZXJ2ZXI7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRVc2VyYWdlbnQoKSB7CisJCXJldHVybiB1c2VyYWdlbnQ7CisJfQorCisJcHVibGljIHZvaWQgc2V0VXNlcmFnZW50KFN0cmluZyB1c2VyYWdlbnQpIHsKKwkJdGhpcy51c2VyYWdlbnQgPSB1c2VyYWdlbnQ7CisJfQorCisJcHVibGljIEludGVnZXIgZ2V0TGFzdG1zKCkgeworCQlyZXR1cm4gbGFzdG1zOworCX0KKworCXB1YmxpYyB2b2lkIHNldExhc3RtcyhJbnRlZ2VyIGxhc3RtcykgeworCQl0aGlzLmxhc3RtcyA9IGxhc3RtczsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGdldE1kNXNlY3JldCgpIHsKKwkJcmV0dXJuIG1kNXNlY3JldDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRNZDVzZWNyZXQoU3RyaW5nIG1kNXNlY3JldCkgeworCQl0aGlzLm1kNXNlY3JldCA9IG1kNXNlY3JldDsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGdldE5hdCgpIHsKKwkJcmV0dXJuIG5hdDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXROYXQoU3RyaW5nIG5hdCkgeworCQl0aGlzLm5hdCA9IG5hdDsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGdldENhbGxiYWNrZXh0ZW5zaW9uKCkgeworCQlyZXR1cm4gY2FsbGJhY2tleHRlbnNpb247CisJfQorCisJcHVibGljIHZvaWQgc2V0Q2FsbGJhY2tleHRlbnNpb24oU3RyaW5nIGNhbGxiYWNrZXh0ZW5zaW9uKSB7CisJCXRoaXMuY2FsbGJhY2tleHRlbnNpb24gPSBjYWxsYmFja2V4dGVuc2lvbjsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGdldEFsbG93KCkgeworCQlyZXR1cm4gYWxsb3c7CisJfQorCisJcHVibGljIHZvaWQgc2V0QWxsb3coU3RyaW5nIGFsbG93KSB7CisJCXRoaXMuYWxsb3cgPSBhbGxvdzsKKwl9Cit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL3VzZXIvQWRkcmVzcy5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL3VzZXIvQWRkcmVzcy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1OWRhODIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvdXNlci9BZGRyZXNzLmphdmEKQEAgLTAsMCArMSwyMDEgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlcjsKKworaW1wb3J0IGphdmEuaW8uU2VyaWFsaXphYmxlOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5GZXRjaFR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuR2VuZXJhdGVkVmFsdWU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuR2VuZXJhdGlvblR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSWQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSm9pbkNvbHVtbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Mb2I7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTWFueVRvT25lOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRhYmxlOworCitpbXBvcnQgb3JnLnNpbXBsZWZyYW1ld29yay54bWwuRWxlbWVudDsKK2ltcG9ydCBvcmcuc2ltcGxlZnJhbWV3b3JrLnhtbC5Sb290OworCitARW50aXR5CitAVGFibGUobmFtZSA9ICJhZGRyZXNzIikKK0BSb290KG5hbWU9ImFkZHJlc3MiKQorcHVibGljIGNsYXNzIEFkZHJlc3MgaW1wbGVtZW50cyBTZXJpYWxpemFibGUgeworCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMTM4NzU3NjA0MTkxMjEyODE2MUw7CisJQElkCisJQEdlbmVyYXRlZFZhbHVlKHN0cmF0ZWd5ID0gR2VuZXJhdGlvblR5cGUuSURFTlRJVFkpCisJQENvbHVtbihuYW1lID0gImlkIikKKwlwcml2YXRlIExvbmcgYWRyZXNzZXNfaWQ7CisJCisJQENvbHVtbihuYW1lID0gImFkZGl0aW9uYWxuYW1lIikKKwlARWxlbWVudChkYXRhPXRydWUsIHJlcXVpcmVkPWZhbHNlKQorCXByaXZhdGUgU3RyaW5nIGFkZGl0aW9uYWxuYW1lOworCQorCUBMb2IKKwlAQ29sdW1uKG5hbWUgPSAiY29tbWVudF9maWVsZCIsIGxlbmd0aD0yMDQ4KQorCUBFbGVtZW50KGRhdGE9dHJ1ZSwgcmVxdWlyZWQ9ZmFsc2UpCisJcHJpdmF0ZSBTdHJpbmcgY29tbWVudDsKKwkKKwlAQ29sdW1uKG5hbWUgPSAiZmF4IikKKwlARWxlbWVudChkYXRhPXRydWUsIHJlcXVpcmVkPWZhbHNlKQorCXByaXZhdGUgU3RyaW5nIGZheDsKKwkKKwlAQ29sdW1uKG5hbWUgPSAic3RhcnR0aW1lIikKKwlARWxlbWVudChkYXRhPXRydWUsIHJlcXVpcmVkPWZhbHNlKQorCXByaXZhdGUgRGF0ZSBzdGFydHRpbWU7CisJCisJQE1hbnlUb09uZShmZXRjaCA9IEZldGNoVHlwZS5FQUdFUikKKwlASm9pbkNvbHVtbihuYW1lID0gInN0YXRlX2lkIikKKwlARWxlbWVudChuYW1lPSJzdGF0ZV9pZCIsIGRhdGE9dHJ1ZSwgcmVxdWlyZWQ9ZmFsc2UpCisJcHJpdmF0ZSBTdGF0ZSBzdGF0ZXM7CisJCisJQENvbHVtbihuYW1lID0gInN0cmVldCIpCisJQEVsZW1lbnQoZGF0YT10cnVlLCByZXF1aXJlZD1mYWxzZSkKKwlwcml2YXRlIFN0cmluZyBzdHJlZXQ7CisJCisJQENvbHVtbihuYW1lID0gInRvd24iKQorCUBFbGVtZW50KGRhdGE9dHJ1ZSwgcmVxdWlyZWQ9ZmFsc2UpCisJcHJpdmF0ZSBTdHJpbmcgdG93bjsKKwkKKwlAQ29sdW1uKG5hbWUgPSAidXBkYXRldGltZSIpCisJcHJpdmF0ZSBEYXRlIHVwZGF0ZXRpbWU7CisJCisJQENvbHVtbihuYW1lID0gInppcCIpCisJQEVsZW1lbnQoZGF0YT10cnVlLCByZXF1aXJlZD1mYWxzZSkKKwlwcml2YXRlIFN0cmluZyB6aXA7CisJCisJQENvbHVtbihuYW1lID0gImRlbGV0ZWQiKQorCXByaXZhdGUgYm9vbGVhbiBkZWxldGVkOworCisJQENvbHVtbihuYW1lID0gImVtYWlsIikKKwlARWxlbWVudChuYW1lPSJtYWlsIiwgZGF0YT10cnVlLCByZXF1aXJlZD1mYWxzZSkKKwlwcml2YXRlIFN0cmluZyBlbWFpbDsKKwkKKwlAQ29sdW1uKG5hbWUgPSAicGhvbmUiKQorCUBFbGVtZW50KGRhdGE9dHJ1ZSwgcmVxdWlyZWQ9ZmFsc2UpCisJcHJpdmF0ZSBTdHJpbmcgcGhvbmU7CisKKwlwdWJsaWMgU3RyaW5nIGdldEFkZGl0aW9uYWxuYW1lKCkgeworCQlyZXR1cm4gYWRkaXRpb25hbG5hbWU7CisJfQorCisJcHVibGljIHZvaWQgc2V0QWRkaXRpb25hbG5hbWUoU3RyaW5nIGFkZGl0aW9uYWxuYW1lKSB7CisJCXRoaXMuYWRkaXRpb25hbG5hbWUgPSBhZGRpdGlvbmFsbmFtZTsKKwl9CisKKwlwdWJsaWMgTG9uZyBnZXRBZHJlc3Nlc19pZCgpIHsKKwkJcmV0dXJuIGFkcmVzc2VzX2lkOworCX0KKworCXB1YmxpYyB2b2lkIHNldEFkcmVzc2VzX2lkKExvbmcgYWRyZXNzZXNfaWQpIHsKKwkJdGhpcy5hZHJlc3Nlc19pZCA9IGFkcmVzc2VzX2lkOworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0Q29tbWVudCgpIHsKKwkJcmV0dXJuIGNvbW1lbnQ7CisJfQorCisJcHVibGljIHZvaWQgc2V0Q29tbWVudChTdHJpbmcgY29tbWVudCkgeworCQl0aGlzLmNvbW1lbnQgPSBjb21tZW50OworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0RmF4KCkgeworCQlyZXR1cm4gZmF4OworCX0KKworCXB1YmxpYyB2b2lkIHNldEZheChTdHJpbmcgZmF4KSB7CisJCXRoaXMuZmF4ID0gZmF4OworCX0KKworCXB1YmxpYyBEYXRlIGdldFN0YXJ0dGltZSgpIHsKKwkJcmV0dXJuIHN0YXJ0dGltZTsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRTdGFydHRpbWUoRGF0ZSBzdGFydHRpbWUpIHsKKwkJdGhpcy5zdGFydHRpbWUgPSBzdGFydHRpbWU7CisJfQorCisJcHVibGljIFN0YXRlIGdldFN0YXRlcygpIHsKKwkJcmV0dXJuIHN0YXRlczsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRTdGF0ZXMoU3RhdGUgc3RhdGVzKSB7CisJCXRoaXMuc3RhdGVzID0gc3RhdGVzOworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0U3RyZWV0KCkgeworCQlyZXR1cm4gc3RyZWV0OworCX0KKworCXB1YmxpYyB2b2lkIHNldFN0cmVldChTdHJpbmcgc3RyZWV0KSB7CisJCXRoaXMuc3RyZWV0ID0gc3RyZWV0OworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0VG93bigpIHsKKwkJcmV0dXJuIHRvd247CisJfQorCisJcHVibGljIHZvaWQgc2V0VG93bihTdHJpbmcgdG93bikgeworCQl0aGlzLnRvd24gPSB0b3duOworCX0KKworCXB1YmxpYyBEYXRlIGdldFVwZGF0ZXRpbWUoKSB7CisJCXJldHVybiB1cGRhdGV0aW1lOworCX0KKworCXB1YmxpYyB2b2lkIHNldFVwZGF0ZXRpbWUoRGF0ZSB1cGRhdGV0aW1lKSB7CisJCXRoaXMudXBkYXRldGltZSA9IHVwZGF0ZXRpbWU7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRaaXAoKSB7CisJCXJldHVybiB6aXA7CisJfQorCisJcHVibGljIHZvaWQgc2V0WmlwKFN0cmluZyB6aXApIHsKKwkJdGhpcy56aXAgPSB6aXA7CisJfQorCisJcHVibGljIGJvb2xlYW4gZ2V0RGVsZXRlZCgpIHsKKwkJcmV0dXJuIGRlbGV0ZWQ7CisJfQorCisJcHVibGljIHZvaWQgc2V0RGVsZXRlZChib29sZWFuIGRlbGV0ZWQpIHsKKwkJdGhpcy5kZWxldGVkID0gZGVsZXRlZDsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGdldEVtYWlsKCkgeworCQlyZXR1cm4gZW1haWw7CisJfQorCisJcHVibGljIHZvaWQgc2V0RW1haWwoU3RyaW5nIGVtYWlsKSB7CisJCXRoaXMuZW1haWwgPSBlbWFpbDsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGdldFBob25lKCkgeworCQlyZXR1cm4gcGhvbmU7CisJfQorCisJcHVibGljIHZvaWQgc2V0UGhvbmUoU3RyaW5nIHBob25lKSB7CisJCXRoaXMucGhvbmUgPSBwaG9uZTsKKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy91c2VyL1ByaXZhdGVNZXNzYWdlLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvdXNlci9Qcml2YXRlTWVzc2FnZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwNTc4N2YKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvdXNlci9Qcml2YXRlTWVzc2FnZS5qYXZhCkBAIC0wLDAgKzEsMjU3IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXI7CisKK2ltcG9ydCBqYXZhLmlvLlNlcmlhbGl6YWJsZTsKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKKworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHk7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRmV0Y2hUeXBlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkdlbmVyYXRlZFZhbHVlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkdlbmVyYXRpb25UeXBlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLklkOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkpvaW5Db2x1bW47CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTG9iOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk1hbnlUb09uZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5OYW1lZFF1ZXJpZXM7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTmFtZWRRdWVyeTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UYWJsZTsKKworaW1wb3J0IG9yZy5hcGFjaGUub3BlbmpwYS5wZXJzaXN0ZW5jZS5qZGJjLkZvcmVpZ25LZXk7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbS5Sb29tOworaW1wb3J0IG9yZy5zaW1wbGVmcmFtZXdvcmsueG1sLkVsZW1lbnQ7CitpbXBvcnQgb3JnLnNpbXBsZWZyYW1ld29yay54bWwuUm9vdDsKKworQEVudGl0eQorQE5hbWVkUXVlcmllcyh7CisJQE5hbWVkUXVlcnkobmFtZSA9ICJnZXRQcml2YXRlTWVzc2FnZXMiLCBxdWVyeSA9ICJzZWxlY3QgYyBmcm9tIFByaXZhdGVNZXNzYWdlIGMiKSwKKwlATmFtZWRRdWVyeShuYW1lID0gImdldFByaXZhdGVNZXNzYWdlc0J5SWQiLCBxdWVyeSA9ICJzZWxlY3QgYyBmcm9tIFByaXZhdGVNZXNzYWdlIGMgIiArCisJCQkid2hlcmUgYy5wcml2YXRlTWVzc2FnZUlkID0gOnByaXZhdGVNZXNzYWdlSWQgIiksCisJQE5hbWVkUXVlcnkobmFtZSA9ICJnZXROdW1iZXJNZXNzYWdlcyIsIHF1ZXJ5ID0gInNlbGVjdCBDT1VOVChjLnByaXZhdGVNZXNzYWdlSWQpIGZyb20gUHJpdmF0ZU1lc3NhZ2UgYyAiICsKKwkJCSJ3aGVyZSBjLnRvLnVzZXJfaWQgPSA6dG9Vc2VySWQgIiArCisJCQkiQU5EIGMuaXNUcmFzaCA9IDppc1RyYXNoICIgKworCQkJIkFORCBjLm93bmVyLnVzZXJfaWQgPSA6dG9Vc2VySWQgIiArCisJCQkiQU5EIGMuaXNSZWFkID0gOmlzUmVhZCAiICsKKwkJCSJBTkQgYy5wcml2YXRlTWVzc2FnZUZvbGRlcklkID0gOnByaXZhdGVNZXNzYWdlRm9sZGVySWQgIiksCisJQE5hbWVkUXVlcnkobmFtZSA9ICJ1cGRhdGVQcml2YXRlTWVzc2FnZXNUb1RyYXNoIiwgcXVlcnkgPSAiVVBEQVRFIFByaXZhdGVNZXNzYWdlIGMgIiArCisJCQkiU0VUIGMuaXNUcmFzaCA9IDppc1RyYXNoLGMucHJpdmF0ZU1lc3NhZ2VGb2xkZXJJZCA9IDpwcml2YXRlTWVzc2FnZUZvbGRlcklkICIgKworCQkJIndoZXJlIGMucHJpdmF0ZU1lc3NhZ2VJZCBJTiAoOnByaXZhdGVNZXNzYWdlSWRzKSAiKSwKKwlATmFtZWRRdWVyeShuYW1lID0gInVwZGF0ZVByaXZhdGVNZXNzYWdlc1JlYWRTdGF0dXMiLCBxdWVyeSA9ICJVUERBVEUgUHJpdmF0ZU1lc3NhZ2UgYyAiICsKKwkJCSJTRVQgYy5pc1JlYWQgPSA6aXNSZWFkICIgKworCQkJIndoZXJlIGMucHJpdmF0ZU1lc3NhZ2VJZCBJTiAoOnByaXZhdGVNZXNzYWdlSWRzKSAiKSwKKwlATmFtZWRRdWVyeShuYW1lID0gIm1vdmVNYWlsc1RvRm9sZGVyIiwgcXVlcnkgPSAiVVBEQVRFIFByaXZhdGVNZXNzYWdlIGMgIiArCisJCQkiU0VUIGMucHJpdmF0ZU1lc3NhZ2VGb2xkZXJJZCA9IDpwcml2YXRlTWVzc2FnZUZvbGRlcklkLCBjLmlzVHJhc2ggPSBmYWxzZSAiICsKKwkJCSJ3aGVyZSBjLnByaXZhdGVNZXNzYWdlSWQgSU4gKDpwcml2YXRlTWVzc2FnZUlkcykgIiksCisJQE5hbWVkUXVlcnkobmFtZSA9ICJkZWxldGVQcml2YXRlTWVzc2FnZXMiLCBxdWVyeSA9ICJERUxFVEUgRlJPTSBQcml2YXRlTWVzc2FnZSBjICIgKworCQkJIndoZXJlIGMucHJpdmF0ZU1lc3NhZ2VJZCBJTiAoOnByaXZhdGVNZXNzYWdlSWRzKSAiKSwKKwlATmFtZWRRdWVyeShuYW1lID0gImdldFByaXZhdGVNZXNzYWdlc0J5Um9vbSIsIHF1ZXJ5ID0gInNlbGVjdCBjIGZyb20gUHJpdmF0ZU1lc3NhZ2UgYyAiICsKKwkJCSJ3aGVyZSBjLnJvb20ucm9vbXNfaWQgPSA6cm9vbUlkICIpCit9KQorQFRhYmxlKG5hbWUgPSAicHJpdmF0ZV9tZXNzYWdlIikKK0BSb290KG5hbWU9InByaXZhdGVtZXNzYWdlIikKK3B1YmxpYyBjbGFzcyBQcml2YXRlTWVzc2FnZSBpbXBsZW1lbnRzIFNlcmlhbGl6YWJsZSB7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gNzU0MTExNzQzNzAyOTcwNzc5Mkw7CisJQElkCisJQEdlbmVyYXRlZFZhbHVlKHN0cmF0ZWd5ID0gR2VuZXJhdGlvblR5cGUuSURFTlRJVFkpCisJQENvbHVtbihuYW1lPSJpZCIpCisJQEVsZW1lbnQoZGF0YT10cnVlKQorCXByaXZhdGUgbG9uZyBwcml2YXRlTWVzc2FnZUlkOworCQorCUBDb2x1bW4obmFtZT0ic3ViamVjdCIpCisJQEVsZW1lbnQoZGF0YT10cnVlLCByZXF1aXJlZD1mYWxzZSkKKwlwcml2YXRlIFN0cmluZyBzdWJqZWN0OworCQorCUBMb2IKKwlAQ29sdW1uKG5hbWU9Im1lc3NhZ2UiKQorCUBFbGVtZW50KGRhdGE9dHJ1ZSwgcmVxdWlyZWQ9ZmFsc2UpCisJcHJpdmF0ZSBTdHJpbmcgbWVzc2FnZTsKKwkKKwlAQ29sdW1uKG5hbWU9ImVtYWlsIikKKwlwcml2YXRlIFN0cmluZyBlbWFpbDsKKwkKKwlAQ29sdW1uKG5hbWU9Imluc2VydGVkIikKKwlARWxlbWVudChkYXRhPXRydWUpCisJcHJpdmF0ZSBEYXRlIGluc2VydGVkOworCQorCUBNYW55VG9PbmUoZmV0Y2ggPSBGZXRjaFR5cGUuRUFHRVIpCisJQEpvaW5Db2x1bW4obmFtZT0iZnJvbV9pZCIpCisJQEZvcmVpZ25LZXkoZW5hYmxlZCA9IHRydWUpCisJQEVsZW1lbnQoZGF0YT10cnVlLCByZXF1aXJlZD1mYWxzZSkKKwlwcml2YXRlIFVzZXIgZnJvbTsKKwkKKwlATWFueVRvT25lKGZldGNoID0gRmV0Y2hUeXBlLkVBR0VSKQorCUBKb2luQ29sdW1uKG5hbWU9InRvX2lkIikKKwlARm9yZWlnbktleShlbmFibGVkID0gdHJ1ZSkKKwlARWxlbWVudChkYXRhPXRydWUsIHJlcXVpcmVkPWZhbHNlKQorCXByaXZhdGUgVXNlciB0bzsKKwkKKwlATWFueVRvT25lKGZldGNoID0gRmV0Y2hUeXBlLkVBR0VSKQorCUBKb2luQ29sdW1uKG5hbWU9Im93bmVyX2lkIikKKwlARm9yZWlnbktleShlbmFibGVkID0gdHJ1ZSkKKwlARWxlbWVudChkYXRhPXRydWUsIHJlcXVpcmVkPWZhbHNlKQorCXByaXZhdGUgVXNlciBvd25lcjsKKwkKKwkJCisJQENvbHVtbihuYW1lPSJib29rZWRfcm9vbSIpCisJQEVsZW1lbnQoZGF0YT10cnVlKQorCXByaXZhdGUgQm9vbGVhbiBib29rZWRSb29tOworCisJQE1hbnlUb09uZShmZXRjaCA9IEZldGNoVHlwZS5FQUdFUikKKwlASm9pbkNvbHVtbihuYW1lPSJyb29tc19pZCIpCisJQEZvcmVpZ25LZXkoZW5hYmxlZCA9IHRydWUpCisJQEVsZW1lbnQoZGF0YT10cnVlLCByZXF1aXJlZD1mYWxzZSkKKwlwcml2YXRlIFJvb20gcm9vbTsKKwkKKwlAQ29sdW1uKG5hbWU9ImlzX3JlYWQiKQorCUBFbGVtZW50KGRhdGE9dHJ1ZSkKKwlwcml2YXRlIEJvb2xlYW4gaXNSZWFkOworCQorCUBDb2x1bW4obmFtZT0iaXNfdHJhc2giKQorCUBFbGVtZW50KGRhdGE9dHJ1ZSkKKwlwcml2YXRlIEJvb2xlYW4gaXNUcmFzaDsKKwkKKwlAQ29sdW1uKG5hbWU9InBhcmVudF9tZXNzYWdlX2lkIikKKwlARWxlbWVudChkYXRhPXRydWUpCisJcHJpdmF0ZSBMb25nIHBhcmVudE1lc3NhZ2U7CisJCisJQENvbHVtbihuYW1lPSJwcml2YXRlX21lc3NhZ2VfZm9sZGVyX2lkIikKKwlARWxlbWVudChkYXRhPXRydWUpCisJcHJpdmF0ZSBMb25nIHByaXZhdGVNZXNzYWdlRm9sZGVySWQ7CisJCisJQENvbHVtbihuYW1lPSJpc19jb250YWN0X3JlcXVlc3QiKQorCUBFbGVtZW50KGRhdGE9dHJ1ZSkKKwlwcml2YXRlIEJvb2xlYW4gaXNDb250YWN0UmVxdWVzdDsKKwkKKwlAQ29sdW1uKG5hbWU9InVzZXJfY29udGFjdF9pZCIpCisJQEVsZW1lbnQoZGF0YT10cnVlKQorCXByaXZhdGUgTG9uZyB1c2VyQ29udGFjdElkOworCisJcHVibGljIGxvbmcgZ2V0UHJpdmF0ZU1lc3NhZ2VJZCgpIHsKKwkJcmV0dXJuIHByaXZhdGVNZXNzYWdlSWQ7CisJfQorCXB1YmxpYyB2b2lkIHNldFByaXZhdGVNZXNzYWdlSWQobG9uZyBwcml2YXRlTWVzc2FnZUlkKSB7CisJCXRoaXMucHJpdmF0ZU1lc3NhZ2VJZCA9IHByaXZhdGVNZXNzYWdlSWQ7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRTdWJqZWN0KCkgeworCQlyZXR1cm4gc3ViamVjdDsKKwl9CisJcHVibGljIHZvaWQgc2V0U3ViamVjdChTdHJpbmcgc3ViamVjdCkgeworCQl0aGlzLnN1YmplY3QgPSBzdWJqZWN0OworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0TWVzc2FnZSgpIHsKKwkJcmV0dXJuIG1lc3NhZ2U7CisJfQorCXB1YmxpYyB2b2lkIHNldE1lc3NhZ2UoU3RyaW5nIG1lc3NhZ2UpIHsKKwkJdGhpcy5tZXNzYWdlID0gbWVzc2FnZTsKKwl9CisJCisJcHVibGljIERhdGUgZ2V0SW5zZXJ0ZWQoKSB7CisJCXJldHVybiBpbnNlcnRlZDsKKwl9CisJcHVibGljIHZvaWQgc2V0SW5zZXJ0ZWQoRGF0ZSBpbnNlcnRlZCkgeworCQl0aGlzLmluc2VydGVkID0gaW5zZXJ0ZWQ7CisJfQorCisJcHVibGljIFVzZXIgZ2V0RnJvbSgpIHsKKwkJcmV0dXJuIGZyb207CisJfQorCXB1YmxpYyB2b2lkIHNldEZyb20oVXNlciBmcm9tKSB7CisJCXRoaXMuZnJvbSA9IGZyb207CisJfQorCisJcHVibGljIFVzZXIgZ2V0VG8oKSB7CisJCXJldHVybiB0bzsKKwl9CisJcHVibGljIHZvaWQgc2V0VG8oVXNlciB0bykgeworCQl0aGlzLnRvID0gdG87CisJfQorCQorCXB1YmxpYyBVc2VyIGdldE93bmVyKCkgeworCQlyZXR1cm4gb3duZXI7CisJfQorCXB1YmxpYyB2b2lkIHNldE93bmVyKFVzZXIgb3duZXIpIHsKKwkJdGhpcy5vd25lciA9IG93bmVyOworCX0KKwkKKwlwdWJsaWMgQm9vbGVhbiBnZXRCb29rZWRSb29tKCkgeworCQlyZXR1cm4gYm9va2VkUm9vbTsKKwl9CisJcHVibGljIHZvaWQgc2V0Qm9va2VkUm9vbShCb29sZWFuIGJvb2tlZFJvb20pIHsKKwkJdGhpcy5ib29rZWRSb29tID0gYm9va2VkUm9vbTsKKwl9CisKKwlwdWJsaWMgUm9vbSBnZXRSb29tKCkgeworCQlyZXR1cm4gcm9vbTsKKwl9CisJcHVibGljIHZvaWQgc2V0Um9vbShSb29tIHJvb20pIHsKKwkJdGhpcy5yb29tID0gcm9vbTsKKwl9CisKKwlwdWJsaWMgTG9uZyBnZXRQYXJlbnRNZXNzYWdlKCkgeworCQlyZXR1cm4gcGFyZW50TWVzc2FnZTsKKwl9CisJcHVibGljIHZvaWQgc2V0UGFyZW50TWVzc2FnZShMb25nIHBhcmVudE1lc3NhZ2UpIHsKKwkJdGhpcy5wYXJlbnRNZXNzYWdlID0gcGFyZW50TWVzc2FnZTsKKwl9CisJCisJcHVibGljIEJvb2xlYW4gZ2V0SXNUcmFzaCgpIHsKKwkJcmV0dXJuIGlzVHJhc2g7CisJfQorCXB1YmxpYyB2b2lkIHNldElzVHJhc2goQm9vbGVhbiBpc1RyYXNoKSB7CisJCXRoaXMuaXNUcmFzaCA9IGlzVHJhc2g7CisJfQorCQorCXB1YmxpYyBMb25nIGdldFByaXZhdGVNZXNzYWdlRm9sZGVySWQoKSB7CisJCXJldHVybiBwcml2YXRlTWVzc2FnZUZvbGRlcklkOworCX0KKwlwdWJsaWMgdm9pZCBzZXRQcml2YXRlTWVzc2FnZUZvbGRlcklkKExvbmcgcHJpdmF0ZU1lc3NhZ2VGb2xkZXJJZCkgeworCQl0aGlzLnByaXZhdGVNZXNzYWdlRm9sZGVySWQgPSBwcml2YXRlTWVzc2FnZUZvbGRlcklkOworCX0KKwkKKwlwdWJsaWMgQm9vbGVhbiBnZXRJc1JlYWQoKSB7CisJCXJldHVybiBpc1JlYWQ7CisJfQorCXB1YmxpYyB2b2lkIHNldElzUmVhZChCb29sZWFuIGlzUmVhZCkgeworCQl0aGlzLmlzUmVhZCA9IGlzUmVhZDsKKwl9CisJCisJcHVibGljIEJvb2xlYW4gZ2V0SXNDb250YWN0UmVxdWVzdCgpIHsKKwkJcmV0dXJuIGlzQ29udGFjdFJlcXVlc3Q7CisJfQorCXB1YmxpYyB2b2lkIHNldElzQ29udGFjdFJlcXVlc3QoQm9vbGVhbiBpc0NvbnRhY3RSZXF1ZXN0KSB7CisJCXRoaXMuaXNDb250YWN0UmVxdWVzdCA9IGlzQ29udGFjdFJlcXVlc3Q7CisJfQorCQorCXB1YmxpYyBMb25nIGdldFVzZXJDb250YWN0SWQoKSB7CisJCXJldHVybiB1c2VyQ29udGFjdElkOworCX0KKwlwdWJsaWMgdm9pZCBzZXRVc2VyQ29udGFjdElkKExvbmcgdXNlckNvbnRhY3RJZCkgeworCQl0aGlzLnVzZXJDb250YWN0SWQgPSB1c2VyQ29udGFjdElkOworCX0KKwlwdWJsaWMgU3RyaW5nIGdldEVtYWlsKCkgeworCQlyZXR1cm4gZW1haWw7CisJfQorCXB1YmxpYyB2b2lkIHNldEVtYWlsKFN0cmluZyBlbWFpbCkgeworCQl0aGlzLmVtYWlsID0gZW1haWw7CisJfQorCQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL3VzZXIvUHJpdmF0ZU1lc3NhZ2VGb2xkZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy91c2VyL1ByaXZhdGVNZXNzYWdlRm9sZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmUzZTYyZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy91c2VyL1ByaXZhdGVNZXNzYWdlRm9sZGVyLmphdmEKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyOworCitpbXBvcnQgamF2YS5pby5TZXJpYWxpemFibGU7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CisKKworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHk7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuR2VuZXJhdGVkVmFsdWU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuR2VuZXJhdGlvblR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSWQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7CisKK2ltcG9ydCBvcmcuc2ltcGxlZnJhbWV3b3JrLnhtbC5FbGVtZW50OworaW1wb3J0IG9yZy5zaW1wbGVmcmFtZXdvcmsueG1sLlJvb3Q7CisKK0BFbnRpdHkKK0BUYWJsZShuYW1lID0gInByaXZhdGVfbWVzc2FnZXNfZm9sZGVyIikKK0BSb290KG5hbWU9InByaXZhdGVtZXNzYWdlZm9sZGVyIikKK3B1YmxpYyBjbGFzcyBQcml2YXRlTWVzc2FnZUZvbGRlciBpbXBsZW1lbnRzIFNlcmlhbGl6YWJsZSB7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMzY4OTgxNDQxMjgxNTAyNTgxNkw7CisJQElkCisJQEdlbmVyYXRlZFZhbHVlKHN0cmF0ZWd5ID0gR2VuZXJhdGlvblR5cGUuSURFTlRJVFkpCisJQENvbHVtbihuYW1lPSJpZCIpCisJQEVsZW1lbnQoZGF0YT10cnVlKQorCXByaXZhdGUgbG9uZyBwcml2YXRlTWVzc2FnZUZvbGRlcklkOworCQorCUBDb2x1bW4obmFtZT0iZm9sZGVyX25hbWUiKQorCUBFbGVtZW50KGRhdGE9dHJ1ZSkKKwlwcml2YXRlIFN0cmluZyBmb2xkZXJOYW1lOworCQorCUBDb2x1bW4obmFtZT0idXNlcl9pZCIpCisJQEVsZW1lbnQoZGF0YT10cnVlKQorCXByaXZhdGUgTG9uZyB1c2VySWQ7CisJCisJQENvbHVtbihuYW1lPSJpbnNlcnRlZCIpCisJcHJpdmF0ZSBEYXRlIGluc2VydGVkOworCQorCUBDb2x1bW4obmFtZT0idXBkYXRlZCIpCisJcHJpdmF0ZSBEYXRlIHVwZGF0ZWQ7CisJCisJcHVibGljIGxvbmcgZ2V0UHJpdmF0ZU1lc3NhZ2VGb2xkZXJJZCgpIHsKKwkJcmV0dXJuIHByaXZhdGVNZXNzYWdlRm9sZGVySWQ7CisJfQorCXB1YmxpYyB2b2lkIHNldFByaXZhdGVNZXNzYWdlRm9sZGVySWQobG9uZyBwcml2YXRlTWVzc2FnZUZvbGRlcklkKSB7CisJCXRoaXMucHJpdmF0ZU1lc3NhZ2VGb2xkZXJJZCA9IHByaXZhdGVNZXNzYWdlRm9sZGVySWQ7CisJfQorCQorCXB1YmxpYyBTdHJpbmcgZ2V0Rm9sZGVyTmFtZSgpIHsKKwkJcmV0dXJuIGZvbGRlck5hbWU7CisJfQorCXB1YmxpYyB2b2lkIHNldEZvbGRlck5hbWUoU3RyaW5nIGZvbGRlck5hbWUpIHsKKwkJdGhpcy5mb2xkZXJOYW1lID0gZm9sZGVyTmFtZTsKKwl9CisJCisJcHVibGljIExvbmcgZ2V0VXNlcklkKCkgeworCQlyZXR1cm4gdXNlcklkOworCX0KKwlwdWJsaWMgdm9pZCBzZXRVc2VySWQoTG9uZyB1c2VySWQpIHsKKwkJdGhpcy51c2VySWQgPSB1c2VySWQ7CisJfQorCQorCXB1YmxpYyBEYXRlIGdldEluc2VydGVkKCkgeworCQlyZXR1cm4gaW5zZXJ0ZWQ7CisJfQorCXB1YmxpYyB2b2lkIHNldEluc2VydGVkKERhdGUgaW5zZXJ0ZWQpIHsKKwkJdGhpcy5pbnNlcnRlZCA9IGluc2VydGVkOworCX0KKwkKKwlwdWJsaWMgRGF0ZSBnZXRVcGRhdGVkKCkgeworCQlyZXR1cm4gdXBkYXRlZDsKKwl9CisJcHVibGljIHZvaWQgc2V0VXBkYXRlZChEYXRlIHVwZGF0ZWQpIHsKKwkJdGhpcy51cGRhdGVkID0gdXBkYXRlZDsKKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy91c2VyL1NhbHV0YXRpb24uamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy91c2VyL1NhbHV0YXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjViZmIxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL3VzZXIvU2FsdXRhdGlvbi5qYXZhCkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXI7CisKK2ltcG9ydCBqYXZhLmlvLlNlcmlhbGl6YWJsZTsKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKKworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHk7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuR2VuZXJhdGVkVmFsdWU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuR2VuZXJhdGlvblR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSWQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVHJhbnNpZW50OworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMubGFuZy5GaWVsZGxhbmd1YWdlc3ZhbHVlczsKK2ltcG9ydCBvcmcuc2ltcGxlZnJhbWV3b3JrLnhtbC5FbGVtZW50OworaW1wb3J0IG9yZy5zaW1wbGVmcmFtZXdvcmsueG1sLlJvb3Q7CisKK0BFbnRpdHkKK0BUYWJsZShuYW1lID0gInNhbHV0YXRpb24iKQorQFJvb3QKK3B1YmxpYyBjbGFzcyBTYWx1dGF0aW9uIGltcGxlbWVudHMgU2VyaWFsaXphYmxlIHsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAtNTgwNjQ0OTUxOTA3NDQzNTIyM0w7CisJQElkCisJQEdlbmVyYXRlZFZhbHVlKHN0cmF0ZWd5ID0gR2VuZXJhdGlvblR5cGUuSURFTlRJVFkpCisJQENvbHVtbihuYW1lPSJpZCIpCisJQEVsZW1lbnQobmFtZT0iaWQiLCBkYXRhPXRydWUpCisJcHJpdmF0ZSBMb25nIHNhbHV0YXRpb25zX2lkOworCQorCUBDb2x1bW4obmFtZT0ibmFtZSIpCisJQEVsZW1lbnQoZGF0YT10cnVlLCByZXF1aXJlZD1mYWxzZSkKKwlwcml2YXRlIFN0cmluZyBuYW1lOworCQorCUBDb2x1bW4obmFtZT0ic3RhcnR0aW1lIikKKwlwcml2YXRlIERhdGUgc3RhcnR0aW1lOworCQorCUBDb2x1bW4obmFtZT0idXBkYXRldGltZSIpCisJcHJpdmF0ZSBEYXRlIHVwZGF0ZXRpbWU7CisJCisJQENvbHVtbihuYW1lPSJkZWxldGVkIikKKwlARWxlbWVudChkYXRhPXRydWUsIHJlcXVpcmVkPWZhbHNlKQorCXByaXZhdGUgYm9vbGVhbiBkZWxldGVkOworCQorCUBDb2x1bW4obmFtZT0iZmllbGR2YWx1ZXNfaWQiKQorCUBFbGVtZW50KGRhdGE9dHJ1ZSwgcmVxdWlyZWQ9ZmFsc2UpCisJcHJpdmF0ZSBMb25nIGZpZWxkdmFsdWVzX2lkOworCQorCUBUcmFuc2llbnQKKwlwcml2YXRlIEZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGxhYmVsOwkKKworCXB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpIHsKKwkJcmV0dXJuIG5hbWU7CisJfQorCXB1YmxpYyB2b2lkIHNldE5hbWUoU3RyaW5nIG5hbWUpIHsKKwkJdGhpcy5uYW1lID0gbmFtZTsKKwl9CisgICAgCisJcHVibGljIExvbmcgZ2V0U2FsdXRhdGlvbnNfaWQoKSB7CisJCXJldHVybiBzYWx1dGF0aW9uc19pZDsKKwl9CisJcHVibGljIHZvaWQgc2V0U2FsdXRhdGlvbnNfaWQoTG9uZyBzYWx1dGF0aW9uc19pZCkgeworCQl0aGlzLnNhbHV0YXRpb25zX2lkID0gc2FsdXRhdGlvbnNfaWQ7CisJfQorCisgICAgCisJcHVibGljIERhdGUgZ2V0U3RhcnR0aW1lKCkgeworCQlyZXR1cm4gc3RhcnR0aW1lOworCX0KKwlwdWJsaWMgdm9pZCBzZXRTdGFydHRpbWUoRGF0ZSBzdGFydHRpbWUpIHsKKwkJdGhpcy5zdGFydHRpbWUgPSBzdGFydHRpbWU7CisJfQorICAgIAorCXB1YmxpYyBEYXRlIGdldFVwZGF0ZXRpbWUoKSB7CisJCXJldHVybiB1cGRhdGV0aW1lOworCX0KKwlwdWJsaWMgdm9pZCBzZXRVcGRhdGV0aW1lKERhdGUgdXBkYXRldGltZSkgeworCQl0aGlzLnVwZGF0ZXRpbWUgPSB1cGRhdGV0aW1lOworCX0KKwkKKwlwdWJsaWMgYm9vbGVhbiBnZXREZWxldGVkKCkgeworCQlyZXR1cm4gZGVsZXRlZDsKKwl9CisJcHVibGljIHZvaWQgc2V0RGVsZXRlZChib29sZWFuIGRlbGV0ZWQpIHsKKwkJdGhpcy5kZWxldGVkID0gZGVsZXRlZDsKKwl9CisKKwlwdWJsaWMgTG9uZyBnZXRGaWVsZHZhbHVlc19pZCgpIHsKKwkJcmV0dXJuIGZpZWxkdmFsdWVzX2lkOworCX0KKwlwdWJsaWMgdm9pZCBzZXRGaWVsZHZhbHVlc19pZChMb25nIGZpZWxkdmFsdWVzX2lkKSB7CisJCXRoaXMuZmllbGR2YWx1ZXNfaWQgPSBmaWVsZHZhbHVlc19pZDsKKwl9CisKKwlwdWJsaWMgRmllbGRsYW5ndWFnZXN2YWx1ZXMgZ2V0TGFiZWwoKSB7CisJCXJldHVybiBsYWJlbDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRMYWJlbChGaWVsZGxhbmd1YWdlc3ZhbHVlcyBsYWJlbCkgeworCQl0aGlzLmxhYmVsID0gbGFiZWw7CisJfQkKKwkKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy91c2VyL1N0YXRlLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvdXNlci9TdGF0ZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM3ODQ4OTIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvdXNlci9TdGF0ZS5qYXZhCkBAIC0wLDAgKzEsMTIyIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXI7CisKK2ltcG9ydCBqYXZhLmlvLlNlcmlhbGl6YWJsZTsKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKKworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHk7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuR2VuZXJhdGVkVmFsdWU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuR2VuZXJhdGlvblR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSWQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTmFtZWRRdWVyaWVzOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk5hbWVkUXVlcnk7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7CisKK0BFbnRpdHkKK0BOYW1lZFF1ZXJpZXMoeworCUBOYW1lZFF1ZXJ5KG5hbWUgPSAiZ2V0U3RhdGVCeUlkIiwgcXVlcnkgPSAic2VsZWN0IGMgZnJvbSBTdGF0ZSBhcyBjICIgKworCQkJIndoZXJlIGMuc3RhdGVfaWQgPSA6c3RhdGVfaWQgQU5EIGMuZGVsZXRlZCA8PiA6ZGVsZXRlZCIpLAorCUBOYW1lZFF1ZXJ5KG5hbWUgPSAiZ2V0U3RhdGVzIiwgcXVlcnkgPSAic2VsZWN0IGMgZnJvbSBTdGF0ZSBhcyBjIHdoZXJlIGMuZGVsZXRlZCA8PiA6ZGVsZXRlZCIpLAorCUBOYW1lZFF1ZXJ5KG5hbWUgPSAiZ2V0U3RhdGVCeU5hbWUiLCBxdWVyeSA9ICJzZWxlY3QgYyBmcm9tIFN0YXRlIGFzIGMgIiArCisJCQkid2hlcmUgbG93ZXIoYy5uYW1lKSBMSUtFIDpuYW1lIEFORCBjLmRlbGV0ZWQgPD4gOmRlbGV0ZWQiKQorfSkKK0BUYWJsZShuYW1lID0gInN0YXRlIikKK3B1YmxpYyBjbGFzcyBTdGF0ZSBpbXBsZW1lbnRzIFNlcmlhbGl6YWJsZSB7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gLTE2Mjk1NDYzNjkyMTk0NTE0MDNMOworCUBJZAorCUBHZW5lcmF0ZWRWYWx1ZShzdHJhdGVneSA9IEdlbmVyYXRpb25UeXBlLklERU5USVRZKQorCUBDb2x1bW4obmFtZSA9ICJpZCIpCisJcHJpdmF0ZSBMb25nIHN0YXRlX2lkOworCQorCUBDb2x1bW4obmFtZSA9ICJuYW1lIikKKwlwcml2YXRlIFN0cmluZyBuYW1lOworCQorCUBDb2x1bW4obmFtZSA9ICJzdGFydHRpbWUiKQorCXByaXZhdGUgRGF0ZSBzdGFydHRpbWU7CisJCisJQENvbHVtbihuYW1lID0gInVwZGF0ZXRpbWUiKQorCXByaXZhdGUgRGF0ZSB1cGRhdGV0aW1lOworCQorCUBDb2x1bW4obmFtZSA9ICJkZWxldGVkIikKKwlwcml2YXRlIGJvb2xlYW4gZGVsZXRlZDsKKwkKKwlAQ29sdW1uKG5hbWUgPSAic2hvcnROYW1lIikKKwlwcml2YXRlIFN0cmluZyBzaG9ydE5hbWU7CisJCisJQENvbHVtbihuYW1lID0gImNvZGUiKQorCXByaXZhdGUgaW50IGNvZGU7CisKKwlwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7CisJCXJldHVybiBuYW1lOworCX0KKworCXB1YmxpYyB2b2lkIHNldE5hbWUoU3RyaW5nIG5hbWUpIHsKKwkJdGhpcy5uYW1lID0gbmFtZTsKKwl9CisKKwlwdWJsaWMgTG9uZyBnZXRTdGF0ZV9pZCgpIHsKKwkJcmV0dXJuIHN0YXRlX2lkOworCX0KKworCXB1YmxpYyB2b2lkIHNldFN0YXRlX2lkKExvbmcgc3RhdGVfaWQpIHsKKwkJdGhpcy5zdGF0ZV9pZCA9IHN0YXRlX2lkOworCX0KKworCXB1YmxpYyBEYXRlIGdldFN0YXJ0dGltZSgpIHsKKwkJcmV0dXJuIHN0YXJ0dGltZTsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRTdGFydHRpbWUoRGF0ZSBzdGFydHRpbWUpIHsKKwkJdGhpcy5zdGFydHRpbWUgPSBzdGFydHRpbWU7CisJfQorCisJcHVibGljIERhdGUgZ2V0VXBkYXRldGltZSgpIHsKKwkJcmV0dXJuIHVwZGF0ZXRpbWU7CisJfQorCisJcHVibGljIHZvaWQgc2V0VXBkYXRldGltZShEYXRlIHVwZGF0ZXRpbWUpIHsKKwkJdGhpcy51cGRhdGV0aW1lID0gdXBkYXRldGltZTsKKwl9CisKKwlwdWJsaWMgYm9vbGVhbiBnZXREZWxldGVkKCkgeworCQlyZXR1cm4gZGVsZXRlZDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXREZWxldGVkKGJvb2xlYW4gZGVsZXRlZCkgeworCQl0aGlzLmRlbGV0ZWQgPSBkZWxldGVkOworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0U2hvcnROYW1lKCkgeworCQlyZXR1cm4gc2hvcnROYW1lOworCX0KKworCXB1YmxpYyB2b2lkIHNldFNob3J0TmFtZShTdHJpbmcgc2hvcnROYW1lKSB7CisJCXRoaXMuc2hvcnROYW1lID0gc2hvcnROYW1lOworCX0KKworCXB1YmxpYyBpbnQgZ2V0Q29kZSgpIHsKKwkJcmV0dXJuIGNvZGU7CisJfQorCisJcHVibGljIHZvaWQgc2V0Q29kZShpbnQgY29kZSkgeworCQl0aGlzLmNvZGUgPSBjb2RlOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy91c2VyL1VzZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy91c2VyL1VzZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGQxZTFkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL3VzZXIvVXNlci5qYXZhCkBAIC0wLDAgKzEsNjA3IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXI7CisKK2ltcG9ydCBqYXZhLmlvLlNlcmlhbGl6YWJsZTsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQmFzaWM7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ2FzY2FkZVR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5GZXRjaFR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuR2VuZXJhdGVkVmFsdWU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuR2VuZXJhdGlvblR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSWQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSm9pbkNvbHVtbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5NYW55VG9PbmU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTmFtZWRRdWVyaWVzOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk5hbWVkUXVlcnk7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuT25lVG9NYW55OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk9uZVRvT25lOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlByaW1hcnlLZXlKb2luQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRhYmxlOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLlRyYW5zaWVudDsKKworaW1wb3J0IG9yZy5hcGFjaGUub3BlbmpwYS5wZXJzaXN0ZW5jZS5FbGVtZW50RGVwZW5kZW50OworaW1wb3J0IG9yZy5hcGFjaGUub3BlbmpwYS5wZXJzaXN0ZW5jZS5GZXRjaEF0dHJpYnV0ZTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5qcGEucGVyc2lzdGVuY2UuRmV0Y2hHcm91cDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5qcGEucGVyc2lzdGVuY2UuRmV0Y2hHcm91cHM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVuanBhLnBlcnNpc3RlbmNlLkxvYWRGZXRjaEdyb3VwOworaW1wb3J0IG9yZy5hcGFjaGUub3BlbmpwYS5wZXJzaXN0ZW5jZS5qZGJjLkZvcmVpZ25LZXk7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5kYW8uQ29uZmlndXJhdGlvbkRhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5JRGF0YVByb3ZpZGVyRW50aXR5OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLk9tVGltZVpvbmU7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuU2Vzc2lvbmRhdGE7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuZG9tYWluLk9yZ2FuaXNhdGlvbl9Vc2VyczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5zaXAuYXN0ZXJpc2suQXN0ZXJpc2tTaXBVc2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLmNyeXB0Lk1ENTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5jcnlwdC5NYW5hZ2VDcnlwdFN0eWxlOworaW1wb3J0IG9yZy5zaW1wbGVmcmFtZXdvcmsueG1sLkVsZW1lbnQ7CitpbXBvcnQgb3JnLnNpbXBsZWZyYW1ld29yay54bWwuRWxlbWVudExpc3Q7CitpbXBvcnQgb3JnLnNpbXBsZWZyYW1ld29yay54bWwuUm9vdDsKKworLyoqCisgKiBFbnRpdHkgdG8gc3RvcmUgdXNlciBkYXRhLCBwYXNzd29yZCBmaWVsZCBpcyB7QGxpbmsgRmV0Y2hUeXBlI0xBWll9LCBzbyB0aGF0CisgKiBpcyB3aHkgdGhlcmUgaXMgYW4gZXh0cmEgdWRwYXRlIHN0YXRlbWVudCBhdCB0aGlzIG1vbWVudAorICogCisgKiBAYXV0aG9yIHNlYmF3YWduZXIsIHNvbG9tYXgKKyAqIAorICovCitARW50aXR5CitARmV0Y2hHcm91cHMoeworIEBGZXRjaEdyb3VwKG5hbWUgPSAiYmFja3VwZXhwb3J0IiwKKwkJIGF0dHJpYnV0ZXMgPSB7IEBGZXRjaEF0dHJpYnV0ZShuYW1lID0gInBhc3N3b3JkIikKKyB9KQorfSkKK0BOYW1lZFF1ZXJpZXMoeworCUBOYW1lZFF1ZXJ5KG5hbWUgPSAiZ2V0VXNlckJ5SWQiLCBxdWVyeSA9ICJzZWxlY3QgYyBmcm9tIFVzZXIgYXMgYyB3aGVyZSBjLnVzZXJfaWQgPSA6dXNlcl9pZCIpLAorCUBOYW1lZFF1ZXJ5KG5hbWUgPSAiY2hlY2tVc2VyTG9naW4iLCBxdWVyeSA9ICJzZWxlY3QgYyBmcm9tIFVzZXIgYXMgYyB3aGVyZSBjLmxvZ2luID0gOkRhdGFWYWx1ZSBBTkQgYy5kZWxldGVkIDw+IDpkZWxldGVkIiksCisJQE5hbWVkUXVlcnkobmFtZSA9ICJnZXRVc2VyQnlOYW1lIiwgcXVlcnkgPSAiU0VMRUNUIHUgRlJPTSBVc2VyIGFzIHUgIgorCQkJKyAiIHdoZXJlIHUubG9naW4gPSA6bG9naW4iICsgIiBBTkQgdS5kZWxldGVkIDw+IDpkZWxldGVkIiksCisJQE5hbWVkUXVlcnkobmFtZSA9ICJnZXRVc2VyQnlFbWFpbCIsIHF1ZXJ5ID0gIlNFTEVDVCB1IEZST00gVXNlciBhcyB1ICIKKwkJCSsgIiB3aGVyZSB1LmFkcmVzc2VzLmVtYWlsID0gOmVtYWlsIgorCQkJKyAiIEFORCB1LmRlbGV0ZWQgPD4gOmRlbGV0ZWQiKSwKKwlATmFtZWRRdWVyeShuYW1lID0gImdldFVzZXJCeUhhc2giLCBxdWVyeSA9ICJTRUxFQ1QgdSBGUk9NIFVzZXIgYXMgdSAiCisJCQkrICIgd2hlcmUgdS5yZXNldGhhc2ggPSA6cmVzZXRoYXNoIgorCQkJKyAiIEFORCB1LmRlbGV0ZWQgPD4gOmRlbGV0ZWQiKSwKKwlATmFtZWRRdWVyeShuYW1lID0gInNlbGVjdE1heEZyb21Vc2Vyc1dpdGhTZWFyY2giLCBxdWVyeSA9ICJzZWxlY3QgY291bnQoYy51c2VyX2lkKSBmcm9tIFVzZXIgYyAiCisJCQkrICJ3aGVyZSBjLmRlbGV0ZWQgPSBmYWxzZSAiICsgIkFORCAoIgorCQkJKyAibG93ZXIoYy5sb2dpbikgTElLRSA6c2VhcmNoICIKKwkJCSsgIk9SIGxvd2VyKGMuZmlyc3RuYW1lKSBMSUtFIDpzZWFyY2ggIgorCQkJKyAiT1IgbG93ZXIoYy5sYXN0bmFtZSkgTElLRSA6c2VhcmNoICkiKSwKKwlATmFtZWRRdWVyeShuYW1lID0gImdldEFsbFVzZXJzIiwgcXVlcnkgPSAiU0VMRUNUIHUgRlJPTSBVc2VyIHUiKSwKKwlATmFtZWRRdWVyeShuYW1lID0gImNoZWNrUGFzc3dvcmQiLCBxdWVyeSA9ICJzZWxlY3QgY291bnQoYy51c2VyX2lkKSBmcm9tIFVzZXIgYyAiCisJCQkrICJ3aGVyZSBjLmRlbGV0ZWQgPSBmYWxzZSAiIC8vCisJCQkrICJBTkQgYy51c2VyX2lkID0gOnVzZXJJZCAiIC8vCisJCQkrICJBTkQgYy5wYXNzd29yZCBMSUtFIDpwYXNzd29yZCIpLCAvLworCUBOYW1lZFF1ZXJ5KG5hbWUgPSAidXBkYXRlUGFzc3dvcmQiLCBxdWVyeSA9ICJVUERBVEUgVXNlciB1ICIgLy8KKwkJCSsgIlNFVCB1LnBhc3N3b3JkID0gOnBhc3N3b3JkICIgLy8KKwkJCSsgIldIRVJFIHUudXNlcl9pZCA9IDp1c2VySWQiKSwgLy8KKwlATmFtZWRRdWVyeShuYW1lID0gImdldE5vbmRlbGV0ZWRVc2VycyIsIHF1ZXJ5ID0gIlNFTEVDVCB1IEZST00gVXNlciB1IFdIRVJFIHUuZGVsZXRlZCA9IGZhbHNlIiksCisJQE5hbWVkUXVlcnkobmFtZSA9ICJjb3VudE5vbmRlbGV0ZWRVc2VycyIsIHF1ZXJ5ID0gIlNFTEVDVCBDT1VOVCh1KSBGUk9NIFVzZXIgdSBXSEVSRSB1LmRlbGV0ZWQgPSBmYWxzZSIpLAorCUBOYW1lZFF1ZXJ5KG5hbWUgPSAiZ2V0VXNlcnNCeU9yZ2FuaXNhdGlvbklkIiwgcXVlcnkgPSAiU0VMRUNUIHUgRlJPTSBVc2VyIHUgV0hFUkUgdS5kZWxldGVkID0gZmFsc2UgQU5EIHUub3JnYW5pc2F0aW9uX3VzZXJzLm9yZ2FuaXNhdGlvbi5vcmdhbmlzYXRpb25faWQgPSA6b3JnYW5pc2F0aW9uX2lkIikgCit9KQorQFRhYmxlKG5hbWUgPSAib21fdXNlciIpCitAUm9vdChuYW1lID0gInVzZXIiKQorcHVibGljIGNsYXNzIFVzZXIgaW1wbGVtZW50cyBTZXJpYWxpemFibGUsIElEYXRhUHJvdmlkZXJFbnRpdHkgeworCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gLTIyNjU0Nzk3MTI1OTY2NzQwNjVMOworCisJQElkCisJQEdlbmVyYXRlZFZhbHVlKHN0cmF0ZWd5ID0gR2VuZXJhdGlvblR5cGUuSURFTlRJVFkpCisJQENvbHVtbihuYW1lID0gImlkIikKKwlARWxlbWVudChkYXRhID0gdHJ1ZSkKKwlwcml2YXRlIExvbmcgdXNlcl9pZDsKKworCUBDb2x1bW4obmFtZSA9ICJhZ2UiKQorCUBFbGVtZW50KGRhdGEgPSB0cnVlKQorCXByaXZhdGUgRGF0ZSBhZ2U7CisKKwlAQ29sdW1uKG5hbWUgPSAiYXZhaWxpYmxlIikKKwlARWxlbWVudChkYXRhID0gdHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIEludGVnZXIgYXZhaWxpYmxlOworCisJQENvbHVtbihuYW1lID0gImZpcnN0bmFtZSIpCisJQEVsZW1lbnQoZGF0YSA9IHRydWUsIHJlcXVpcmVkID0gZmFsc2UpCisJcHJpdmF0ZSBTdHJpbmcgZmlyc3RuYW1lOworCisJQENvbHVtbihuYW1lID0gImxhc3Rsb2dpbiIpCisJcHJpdmF0ZSBEYXRlIGxhc3Rsb2dpbjsKKworCUBDb2x1bW4obmFtZSA9ICJsYXN0bmFtZSIpCisJQEVsZW1lbnQoZGF0YSA9IHRydWUsIHJlcXVpcmVkID0gZmFsc2UpCisJcHJpdmF0ZSBTdHJpbmcgbGFzdG5hbWU7CisKKwlAQ29sdW1uKG5hbWUgPSAibGFzdHRyYW5zIikKKwlARWxlbWVudChkYXRhID0gdHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIExvbmcgbGFzdHRyYW5zOworCisJQENvbHVtbihuYW1lID0gImxldmVsX2lkIikKKwlARWxlbWVudChkYXRhID0gdHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIExvbmcgbGV2ZWxfaWQ7CisKKwlAQ29sdW1uKG5hbWUgPSAibG9naW4iKQorCUBFbGVtZW50KGRhdGEgPSB0cnVlKQorCXByaXZhdGUgU3RyaW5nIGxvZ2luOworCisJQEJhc2ljKGZldGNoID0gRmV0Y2hUeXBlLkxBWlkpCisJQENvbHVtbihuYW1lID0gInBhc3N3b3JkIikKKwlATG9hZEZldGNoR3JvdXAoImJhY2t1cGV4cG9ydCIpCisJQEVsZW1lbnQobmFtZSA9ICJwYXNzIiwgZGF0YSA9IHRydWUsIHJlcXVpcmVkID0gZmFsc2UpCisJcHJpdmF0ZSBTdHJpbmcgcGFzc3dvcmQ7CisKKwlAQ29sdW1uKG5hbWUgPSAicmVnZGF0ZSIpCisJQEVsZW1lbnQoZGF0YSA9IHRydWUpCisJcHJpdmF0ZSBEYXRlIHJlZ2RhdGU7CisKKwlAQ29sdW1uKG5hbWUgPSAic3RhdHVzIikKKwlARWxlbWVudChkYXRhID0gdHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIEludGVnZXIgc3RhdHVzOworCisJQENvbHVtbihuYW1lID0gInNhbHV0YXRpb25zX2lkIikKKwlARWxlbWVudChuYW1lID0gInRpdGxlX2lkIiwgZGF0YSA9IHRydWUsIHJlcXVpcmVkID0gZmFsc2UpCisJcHJpdmF0ZSBMb25nIHNhbHV0YXRpb25zX2lkOworCisJQENvbHVtbihuYW1lID0gInN0YXJ0dGltZSIpCisJcHJpdmF0ZSBEYXRlIHN0YXJ0dGltZTsKKworCUBDb2x1bW4obmFtZSA9ICJ1cGRhdGV0aW1lIikKKwlwcml2YXRlIERhdGUgdXBkYXRldGltZTsKKworCUBDb2x1bW4obmFtZSA9ICJwaWN0dXJldXJpIikKKwlARWxlbWVudChkYXRhID0gdHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIFN0cmluZyBwaWN0dXJldXJpOworCisJQENvbHVtbihuYW1lID0gImRlbGV0ZWQiKQorCUBFbGVtZW50KGRhdGEgPSB0cnVlKQorCXByaXZhdGUgYm9vbGVhbiBkZWxldGVkOworCisJQENvbHVtbihuYW1lID0gImxhbmd1YWdlX2lkIikKKwlARWxlbWVudChkYXRhID0gdHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIExvbmcgbGFuZ3VhZ2VfaWQ7CisKKwlAQ29sdW1uKG5hbWUgPSAicmVzZXRoYXNoIikKKwlARWxlbWVudChkYXRhID0gdHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIFN0cmluZyByZXNldGhhc2g7CisKKwlAQ29sdW1uKG5hbWUgPSAiYWN0aXZhdGVoYXNoIikKKwlARWxlbWVudChkYXRhID0gdHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIFN0cmluZyBhY3RpdmF0ZWhhc2g7CisKKwlATWFueVRvT25lKGZldGNoID0gRmV0Y2hUeXBlLkVBR0VSLCBjYXNjYWRlID0gQ2FzY2FkZVR5cGUuQUxMKQorCUBKb2luQ29sdW1uKG5hbWUgPSAiYWRyZXNzZXNfaWQiLCBpbnNlcnRhYmxlID0gdHJ1ZSwgdXBkYXRhYmxlID0gdHJ1ZSkKKwlARm9yZWlnbktleShlbmFibGVkID0gdHJ1ZSkKKwlARWxlbWVudChuYW1lID0gImFkZHJlc3MiLCByZXF1aXJlZCA9IGZhbHNlKQorCXByaXZhdGUgQWRkcmVzcyBhZHJlc3NlczsKKworCUBUcmFuc2llbnQKKwlwcml2YXRlIFVzZXJsZXZlbCB1c2VybGV2ZWw7CisKKwlAVHJhbnNpZW50CisJcHJpdmF0ZSBVc2VyZGF0YSByZWNobnVuZ3NhZGRyZXNzZW47CisKKwlAVHJhbnNpZW50CisJcHJpdmF0ZSBVc2VyZGF0YSBsaWVmZXJhZHJlc3NlbjsKKworCUBPbmVUb01hbnkoZmV0Y2ggPSBGZXRjaFR5cGUuRUFHRVIsIGNhc2NhZGUgPSBDYXNjYWRlVHlwZS5BTEwpCisJQEpvaW5Db2x1bW4obmFtZSA9ICJ1c2VyX2lkIiwgaW5zZXJ0YWJsZSA9IHRydWUsIHVwZGF0YWJsZSA9IHRydWUpCisJQEVsZW1lbnRMaXN0KG5hbWUgPSAib3JnYW5pc2F0aW9ucyIpCisJQEVsZW1lbnREZXBlbmRlbnQKKwlwcml2YXRlIExpc3Q8T3JnYW5pc2F0aW9uX1VzZXJzPiBvcmdhbmlzYXRpb25fdXNlcnMgPSBuZXcgQXJyYXlMaXN0PE9yZ2FuaXNhdGlvbl9Vc2Vycz4oKTsKKworCUBPbmVUb09uZShmZXRjaCA9IEZldGNoVHlwZS5FQUdFUiwgY2FzY2FkZSA9IENhc2NhZGVUeXBlLkFMTCkKKwlAUHJpbWFyeUtleUpvaW5Db2x1bW4obmFtZT0ic2lwX3VzZXJfaWQiLCByZWZlcmVuY2VkQ29sdW1uTmFtZT0iaWQiKQorCUBFbGVtZW50KG5hbWUgPSAic2lwVXNlciIsIHJlcXVpcmVkID0gZmFsc2UpCisJcHJpdmF0ZSBBc3Rlcmlza1NpcFVzZXIgc2lwVXNlcjsKKworCS8vIFZhcnMgdG8gc2ltdWxhdGUgZXh0ZXJuYWwgVXNlcnMKKwlAQ29sdW1uKG5hbWUgPSAiZXh0ZXJuYWxVc2VySWQiKQorCUBFbGVtZW50KGRhdGEgPSB0cnVlLCByZXF1aXJlZCA9IGZhbHNlKQorCXByaXZhdGUgU3RyaW5nIGV4dGVybmFsVXNlcklkOworCisJQENvbHVtbihuYW1lID0gImV4dGVybmFsVXNlclR5cGUiKQorCUBFbGVtZW50KGRhdGEgPSB0cnVlLCByZXF1aXJlZCA9IGZhbHNlKQorCXByaXZhdGUgU3RyaW5nIGV4dGVybmFsVXNlclR5cGU7CisKKwlATWFueVRvT25lKGZldGNoID0gRmV0Y2hUeXBlLkVBR0VSKQorCUBKb2luQ29sdW1uKG5hbWUgPSAib210aW1lem9uZUlkIiwgaW5zZXJ0YWJsZSA9IHRydWUsIHVwZGF0YWJsZSA9IHRydWUpCisJQEZvcmVpZ25LZXkoZW5hYmxlZCA9IHRydWUpCisJQEVsZW1lbnQoZGF0YSA9IHRydWUsIHJlcXVpcmVkID0gZmFsc2UpCisJcHJpdmF0ZSBPbVRpbWVab25lIG9tVGltZVpvbmU7IC8vIEluIFVUQyArLy0gaG91cnMKKworCUBUcmFuc2llbnQKKwlwcml2YXRlIFNlc3Npb25kYXRhIHNlc3Npb25EYXRhOworCisJQENvbHVtbihuYW1lID0gImZvcmNlVGltZVpvbmVDaGVjayIpCisJQEVsZW1lbnQoZGF0YSA9IHRydWUsIHJlcXVpcmVkID0gZmFsc2UpCisJcHJpdmF0ZSBCb29sZWFuIGZvcmNlVGltZVpvbmVDaGVjazsKKworCUBDb2x1bW4obmFtZSA9ICJzZW5kU01TIikKKwlARWxlbWVudChkYXRhID0gZmFsc2UsIHJlcXVpcmVkID0gZmFsc2UpCisJcHJpdmF0ZSBib29sZWFuIHNlbmRTTVM7CisKKwlAQ29sdW1uKG5hbWUgPSAidXNlcl9vZmZlcnMiKQorCUBFbGVtZW50KGRhdGEgPSB0cnVlLCByZXF1aXJlZCA9IGZhbHNlKQorCXByaXZhdGUgU3RyaW5nIHVzZXJPZmZlcnM7CisKKwlAQ29sdW1uKG5hbWUgPSAidXNlcl9zZWFyY2hzIikKKwlARWxlbWVudChkYXRhID0gdHJ1ZSwgcmVxdWlyZWQgPSBmYWxzZSkKKwlwcml2YXRlIFN0cmluZyB1c2VyU2VhcmNoczsKKworCUBDb2x1bW4obmFtZSA9ICJzaG93X2NvbnRhY3RfZGF0YSIpCisJQEVsZW1lbnQoZGF0YSA9IHRydWUsIHJlcXVpcmVkID0gZmFsc2UpCisJcHJpdmF0ZSBCb29sZWFuIHNob3dDb250YWN0RGF0YTsKKworCUBDb2x1bW4obmFtZSA9ICJzaG93X2NvbnRhY3RfZGF0YV90b19jb250YWN0cyIpCisJQEVsZW1lbnQoZGF0YSA9IHRydWUsIHJlcXVpcmVkID0gZmFsc2UpCisJcHJpdmF0ZSBCb29sZWFuIHNob3dDb250YWN0RGF0YVRvQ29udGFjdHM7CisKKwlwdWJsaWMgTG9uZyBnZXRVc2VyX2lkKCkgeworCQlyZXR1cm4gdXNlcl9pZDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRVc2VyX2lkKExvbmcgdXNlcl9pZCkgeworCQl0aGlzLnVzZXJfaWQgPSB1c2VyX2lkOworCX0KKworCXB1YmxpYyBBZGRyZXNzIGdldEFkcmVzc2VzKCkgeworCQlyZXR1cm4gYWRyZXNzZXM7CisJfQorCisJcHVibGljIHZvaWQgc2V0QWRyZXNzZXMoQWRkcmVzcyBhZHJlc3NlcykgeworCQl0aGlzLmFkcmVzc2VzID0gYWRyZXNzZXM7CisJfQorCisJcHVibGljIHZvaWQgc2V0QWRyZXNzZXMoU3RyaW5nIHN0cmVldCwgU3RyaW5nIHppcCwgU3RyaW5nIHRvd24sCisJCQlTdGF0ZSBzdGF0ZSwgU3RyaW5nIGFkZGl0aW9uYWxuYW1lLCBTdHJpbmcgY29tbWVudCwgU3RyaW5nIGZheCwKKwkJCVN0cmluZyBwaG9uZSwgU3RyaW5nIGVtYWlsKSB7CisJCWlmICh0aGlzLmFkcmVzc2VzID09IG51bGwpIHsKKwkJCXRoaXMuYWRyZXNzZXMgPSBuZXcgQWRkcmVzcygpOworCQl9CisJCXRoaXMuYWRyZXNzZXMuc2V0U3RyZWV0KHN0cmVldCk7CisJCXRoaXMuYWRyZXNzZXMuc2V0WmlwKHppcCk7CisJCXRoaXMuYWRyZXNzZXMuc2V0VG93bih0b3duKTsKKwkJdGhpcy5hZHJlc3Nlcy5zZXRTdGF0ZXMoc3RhdGUpOworCQl0aGlzLmFkcmVzc2VzLnNldEFkZGl0aW9uYWxuYW1lKGFkZGl0aW9uYWxuYW1lKTsKKwkJdGhpcy5hZHJlc3Nlcy5zZXRDb21tZW50KGNvbW1lbnQpOworCQl0aGlzLmFkcmVzc2VzLnNldEZheChmYXgpOworCQl0aGlzLmFkcmVzc2VzLnNldFBob25lKHBob25lKTsKKwkJdGhpcy5hZHJlc3Nlcy5zZXRFbWFpbChlbWFpbCk7CisJfQorCisJcHVibGljIERhdGUgZ2V0QWdlKCkgeworCQlyZXR1cm4gYWdlOworCX0KKworCXB1YmxpYyB2b2lkIHNldEFnZShEYXRlIGFnZSkgeworCQlpZiAoYWdlID09IG51bGwpCisJCQlhZ2UgPSBuZXcgRGF0ZSgpOworCQl0aGlzLmFnZSA9IGFnZTsKKwl9CisKKwlwdWJsaWMgSW50ZWdlciBnZXRBdmFpbGlibGUoKSB7CisJCXJldHVybiBhdmFpbGlibGU7CisJfQorCisJcHVibGljIHZvaWQgc2V0QXZhaWxpYmxlKEludGVnZXIgYXZhaWxpYmxlKSB7CisJCXRoaXMuYXZhaWxpYmxlID0gYXZhaWxpYmxlOworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0Rmlyc3RuYW1lKCkgeworCQlyZXR1cm4gZmlyc3RuYW1lOworCX0KKworCXB1YmxpYyB2b2lkIHNldEZpcnN0bmFtZShTdHJpbmcgZmlyc3RuYW1lKSB7CisJCXRoaXMuZmlyc3RuYW1lID0gZmlyc3RuYW1lOworCX0KKworCXB1YmxpYyBEYXRlIGdldExhc3Rsb2dpbigpIHsKKwkJcmV0dXJuIGxhc3Rsb2dpbjsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRMYXN0bG9naW4oRGF0ZSBsYXN0bG9naW4pIHsKKwkJdGhpcy5sYXN0bG9naW4gPSBsYXN0bG9naW47CisJfQorCisJcHVibGljIFN0cmluZyBnZXRMYXN0bmFtZSgpIHsKKwkJcmV0dXJuIGxhc3RuYW1lOworCX0KKworCXB1YmxpYyB2b2lkIHNldExhc3RuYW1lKFN0cmluZyBsYXN0bmFtZSkgeworCQl0aGlzLmxhc3RuYW1lID0gbGFzdG5hbWU7CisJfQorCisJcHVibGljIExvbmcgZ2V0TGFzdHRyYW5zKCkgeworCQlyZXR1cm4gbGFzdHRyYW5zOworCX0KKworCXB1YmxpYyB2b2lkIHNldExhc3R0cmFucyhMb25nIGxhc3R0cmFucykgeworCQl0aGlzLmxhc3R0cmFucyA9IGxhc3R0cmFuczsKKwl9CisKKwlwdWJsaWMgTG9uZyBnZXRMZXZlbF9pZCgpIHsKKwkJcmV0dXJuIGxldmVsX2lkOworCX0KKworCXB1YmxpYyB2b2lkIHNldExldmVsX2lkKExvbmcgbGV2ZWxfaWQpIHsKKwkJdGhpcy5sZXZlbF9pZCA9IGxldmVsX2lkOworCX0KKworCXB1YmxpYyBVc2VyZGF0YSBnZXRMaWVmZXJhZHJlc3NlbigpIHsKKwkJcmV0dXJuIGxpZWZlcmFkcmVzc2VuOworCX0KKworCXB1YmxpYyB2b2lkIHNldExpZWZlcmFkcmVzc2VuKFVzZXJkYXRhIGxpZWZlcmFkcmVzc2VuKSB7CisJCXRoaXMubGllZmVyYWRyZXNzZW4gPSBsaWVmZXJhZHJlc3NlbjsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGdldExvZ2luKCkgeworCQlyZXR1cm4gbG9naW47CisJfQorCisJcHVibGljIHZvaWQgc2V0TG9naW4oU3RyaW5nIGxvZ2luKSB7CisJCXRoaXMubG9naW4gPSBsb2dpbjsKKwl9CisKKwlwdWJsaWMgdm9pZCB1cGRhdGVQYXNzd29yZChNYW5hZ2VDcnlwdFN0eWxlIGNyeXB0LCBDb25maWd1cmF0aW9uRGFvIGNvbmZpZ0RhbywgU3RyaW5nIHBhc3MpIHRocm93cyBOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24geworCQl1cGRhdGVQYXNzd29yZChjcnlwdCwgY29uZmlnRGFvLCBwYXNzLCBmYWxzZSk7CisJfQorCQorCXB1YmxpYyB2b2lkIHVwZGF0ZVBhc3N3b3JkKE1hbmFnZUNyeXB0U3R5bGUgY3J5cHQsIENvbmZpZ3VyYXRpb25EYW8gY29uZmlnRGFvLCBTdHJpbmcgcGFzcywgYm9vbGVhbiBlbXB0eSkgdGhyb3dzIE5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiB7CisJCWlmICghZW1wdHkpIHsKKwkJCUludGVnZXIgdXNlclBhc3NNaW5pbXVtTGVuZ3RoID0gY29uZmlnRGFvLmdldENvbmZWYWx1ZSgidXNlci5wYXNzLm1pbmltdW0ubGVuZ3RoIiwgSW50ZWdlci5jbGFzcywgIjQiKTsKKwkKKwkJCWlmICh1c2VyUGFzc01pbmltdW1MZW5ndGggPT0gbnVsbCkgeworCQkJCXRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJ1c2VyLnBhc3MubWluaW11bS5sZW5ndGggcHJvYmxlbSIpOworCQkJfQorCQkJaWYgKHBhc3MgPT0gbnVsbCB8fCBwYXNzLmxlbmd0aCgpIDwgdXNlclBhc3NNaW5pbXVtTGVuZ3RoKSB7CisJCQkJdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIlBhc3N3b3JkIG9mIGludmFsaWQgbGVuZ3RoIGlzIHByb3ZpZGVkIik7CisJCQl9CisJCX0KKwkJU3RyaW5nIHNpcEVuYWJsZWQgPSBjb25maWdEYW8uZ2V0Q29uZlZhbHVlKCJyZWQ1c2lwLmVuYWJsZSIsIFN0cmluZy5jbGFzcywgIm5vIik7CisgICAgICAgIGlmKCJ5ZXMiLmVxdWFscyhzaXBFbmFibGVkKSkgeworICAgICAgICAJaWYgKGdldFNpcFVzZXIoKSA9PSBudWxsKSB7CisgICAgICAgIAkJc2V0U2lwVXNlcihuZXcgQXN0ZXJpc2tTaXBVc2VyKCkpOworICAgICAgICAJfQorICAgICAgICAJQXN0ZXJpc2tTaXBVc2VyIHUgPSBnZXRTaXBVc2VyKCk7CisgICAgICAgIAlTdHJpbmcgZGVmYXVsdFJvb21Db250ZXh0ID0gY29uZmlnRGFvLmdldENvbmZWYWx1ZSgicmVkNXNpcC5leHRlbl9jb250ZXh0IiwgU3RyaW5nLmNsYXNzLCAicm9vbXMiKTsKKyAgICAgICAgCXUuc2V0TmFtZShsb2dpbik7CisgICAgICAgIAl1LnNldERlZmF1bHR1c2VyKGxvZ2luKTsKKyAgICAgICAgCXUuc2V0TWQ1c2VjcmV0KE1ENS5kb19jaGVja3N1bShsb2dpbiArICI6YXN0ZXJpc2s6IiArIHBhc3MpKTsKKyAgICAgICAgCXUuc2V0Q29udGV4dChkZWZhdWx0Um9vbUNvbnRleHQpOworICAgICAgICAJdS5zZXRIb3N0KCJkeW5hbWljIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgIAlzZXRTaXBVc2VyKG51bGwpOworICAgICAgICB9CisJCXBhc3N3b3JkID0gY3J5cHQuZ2V0SW5zdGFuY2VPZkNyeXB0KCkuY3JlYXRlUGFzc1BocmFzZShwYXNzKTsKKwl9CisJCisJcHVibGljIFN0cmluZyBnZXRQYXNzd29yZCgpIHsKKwkJcmV0dXJuIHBhc3N3b3JkOworCX0KKworCUBEZXByZWNhdGVkIC8vc2hvdWxkIG5vdCBiZSB1c2VkIGRpcmVjdGx5IChmb3IgYmVhbiB1c2FnZSBvbmx5KQorCXB1YmxpYyB2b2lkIHNldFBhc3N3b3JkKFN0cmluZyBwYXNzd29yZCkgeworCQl0aGlzLnBhc3N3b3JkID0gcGFzc3dvcmQ7CisJfQorCisJcHVibGljIFVzZXJkYXRhIGdldFJlY2hudW5nc2FkZHJlc3NlbigpIHsKKwkJcmV0dXJuIHJlY2hudW5nc2FkZHJlc3NlbjsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRSZWNobnVuZ3NhZGRyZXNzZW4oVXNlcmRhdGEgcmVjaG51bmdzYWRkcmVzc2VuKSB7CisJCXRoaXMucmVjaG51bmdzYWRkcmVzc2VuID0gcmVjaG51bmdzYWRkcmVzc2VuOworCX0KKworCXB1YmxpYyBEYXRlIGdldFJlZ2RhdGUoKSB7CisJCXJldHVybiByZWdkYXRlOworCX0KKworCXB1YmxpYyB2b2lkIHNldFJlZ2RhdGUoRGF0ZSByZWdkYXRlKSB7CisJCXRoaXMucmVnZGF0ZSA9IHJlZ2RhdGU7CisJfQorCisJcHVibGljIEludGVnZXIgZ2V0U3RhdHVzKCkgeworCQlyZXR1cm4gc3RhdHVzOworCX0KKworCXB1YmxpYyB2b2lkIHNldFN0YXR1cyhJbnRlZ2VyIHN0YXR1cykgeworCQl0aGlzLnN0YXR1cyA9IHN0YXR1czsKKwl9CisKKwlwdWJsaWMgTG9uZyBnZXRTYWx1dGF0aW9uc19pZCgpIHsKKwkJcmV0dXJuIHNhbHV0YXRpb25zX2lkOworCX0KKworCXB1YmxpYyB2b2lkIHNldFNhbHV0YXRpb25zX2lkKExvbmcgc2FsdXRhdGlvbnNfaWQpIHsKKwkJdGhpcy5zYWx1dGF0aW9uc19pZCA9IHNhbHV0YXRpb25zX2lkOworCX0KKworCXB1YmxpYyBVc2VybGV2ZWwgZ2V0VXNlcmxldmVsKCkgeworCQlyZXR1cm4gdXNlcmxldmVsOworCX0KKworCXB1YmxpYyB2b2lkIHNldFVzZXJsZXZlbChVc2VybGV2ZWwgdXNlcmxldmVsKSB7CisJCXRoaXMudXNlcmxldmVsID0gdXNlcmxldmVsOworCX0KKworCXB1YmxpYyBEYXRlIGdldFN0YXJ0dGltZSgpIHsKKwkJcmV0dXJuIHN0YXJ0dGltZTsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRTdGFydHRpbWUoRGF0ZSBzdGFydHRpbWUpIHsKKwkJdGhpcy5zdGFydHRpbWUgPSBzdGFydHRpbWU7CisJfQorCisJcHVibGljIERhdGUgZ2V0VXBkYXRldGltZSgpIHsKKwkJcmV0dXJuIHVwZGF0ZXRpbWU7CisJfQorCisJcHVibGljIHZvaWQgc2V0VXBkYXRldGltZShEYXRlIHVwZGF0ZXRpbWUpIHsKKwkJdGhpcy51cGRhdGV0aW1lID0gdXBkYXRldGltZTsKKwl9CisKKwlwdWJsaWMgYm9vbGVhbiBnZXREZWxldGVkKCkgeworCQlyZXR1cm4gZGVsZXRlZDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXREZWxldGVkKGJvb2xlYW4gZGVsZXRlZCkgeworCQl0aGlzLmRlbGV0ZWQgPSBkZWxldGVkOworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0UGljdHVyZXVyaSgpIHsKKwkJcmV0dXJuIHBpY3R1cmV1cmk7CisJfQorCisJcHVibGljIHZvaWQgc2V0UGljdHVyZXVyaShTdHJpbmcgcGljdHVyZXVyaSkgeworCQl0aGlzLnBpY3R1cmV1cmkgPSBwaWN0dXJldXJpOworCX0KKworCXB1YmxpYyBMb25nIGdldExhbmd1YWdlX2lkKCkgeworCQlyZXR1cm4gbGFuZ3VhZ2VfaWQ7CisJfQorCisJcHVibGljIHZvaWQgc2V0TGFuZ3VhZ2VfaWQoTG9uZyBsYW5ndWFnZV9pZCkgeworCQl0aGlzLmxhbmd1YWdlX2lkID0gbGFuZ3VhZ2VfaWQ7CisJfQorCisJcHVibGljIExpc3Q8T3JnYW5pc2F0aW9uX1VzZXJzPiBnZXRPcmdhbmlzYXRpb25fdXNlcnMoKSB7CisJCXJldHVybiBvcmdhbmlzYXRpb25fdXNlcnM7CisJfQorCisJcHVibGljIHZvaWQgc2V0T3JnYW5pc2F0aW9uX3VzZXJzKAorCQkJTGlzdDxPcmdhbmlzYXRpb25fVXNlcnM+IG9yZ2FuaXNhdGlvbl91c2VycykgeworCQlpZiAob3JnYW5pc2F0aW9uX3VzZXJzICE9IG51bGwpIHsKKwkJCXRoaXMub3JnYW5pc2F0aW9uX3VzZXJzID0gb3JnYW5pc2F0aW9uX3VzZXJzOworCQl9CisJfQorCisJcHVibGljIFN0cmluZyBnZXRSZXNldGhhc2goKSB7CisJCXJldHVybiByZXNldGhhc2g7CisJfQorCisJcHVibGljIHZvaWQgc2V0UmVzZXRoYXNoKFN0cmluZyByZXNldGhhc2gpIHsKKwkJdGhpcy5yZXNldGhhc2ggPSByZXNldGhhc2g7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRBY3RpdmF0ZWhhc2goKSB7CisJCXJldHVybiBhY3RpdmF0ZWhhc2g7CisJfQorCisJcHVibGljIHZvaWQgc2V0QWN0aXZhdGVoYXNoKFN0cmluZyBhY3RpdmF0ZWhhc2gpIHsKKwkJdGhpcy5hY3RpdmF0ZWhhc2ggPSBhY3RpdmF0ZWhhc2g7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRFeHRlcm5hbFVzZXJJZCgpIHsKKwkJcmV0dXJuIGV4dGVybmFsVXNlcklkOworCX0KKworCXB1YmxpYyB2b2lkIHNldEV4dGVybmFsVXNlcklkKFN0cmluZyBleHRlcm5hbFVzZXJJZCkgeworCQl0aGlzLmV4dGVybmFsVXNlcklkID0gZXh0ZXJuYWxVc2VySWQ7CisJfQorCisJcHVibGljIFN0cmluZyBnZXRFeHRlcm5hbFVzZXJUeXBlKCkgeworCQlyZXR1cm4gZXh0ZXJuYWxVc2VyVHlwZTsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRFeHRlcm5hbFVzZXJUeXBlKFN0cmluZyBleHRlcm5hbFVzZXJUeXBlKSB7CisJCXRoaXMuZXh0ZXJuYWxVc2VyVHlwZSA9IGV4dGVybmFsVXNlclR5cGU7CisJfQorCisJcHVibGljIFNlc3Npb25kYXRhIGdldFNlc3Npb25EYXRhKCkgeworCQlyZXR1cm4gc2Vzc2lvbkRhdGE7CisJfQorCisJcHVibGljIHZvaWQgc2V0U2Vzc2lvbkRhdGEoU2Vzc2lvbmRhdGEgc2Vzc2lvbkRhdGEpIHsKKwkJdGhpcy5zZXNzaW9uRGF0YSA9IHNlc3Npb25EYXRhOworCX0KKworCXB1YmxpYyBBc3Rlcmlza1NpcFVzZXIgZ2V0U2lwVXNlcigpIHsKKwkJcmV0dXJuIHNpcFVzZXI7CisJfQorCisJcHVibGljIHZvaWQgc2V0U2lwVXNlcihBc3Rlcmlza1NpcFVzZXIgc2lwVXNlcikgeworCQl0aGlzLnNpcFVzZXIgPSBzaXBVc2VyOworCX0KKworCXB1YmxpYyBPbVRpbWVab25lIGdldE9tVGltZVpvbmUoKSB7CisJCXJldHVybiBvbVRpbWVab25lOworCX0KKworCXB1YmxpYyB2b2lkIHNldE9tVGltZVpvbmUoT21UaW1lWm9uZSBvbVRpbWVab25lKSB7CisJCXRoaXMub21UaW1lWm9uZSA9IG9tVGltZVpvbmU7CisJfQorCisJcHVibGljIEJvb2xlYW4gZ2V0Rm9yY2VUaW1lWm9uZUNoZWNrKCkgeworCQlyZXR1cm4gZm9yY2VUaW1lWm9uZUNoZWNrOworCX0KKworCXB1YmxpYyB2b2lkIHNldEZvcmNlVGltZVpvbmVDaGVjayhCb29sZWFuIGZvcmNlVGltZVpvbmVDaGVjaykgeworCQl0aGlzLmZvcmNlVGltZVpvbmVDaGVjayA9IGZvcmNlVGltZVpvbmVDaGVjazsKKwl9CisKKwlwdWJsaWMgYm9vbGVhbiBnZXRTZW5kU01TKCkgeworCQlyZXR1cm4gc2VuZFNNUzsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRTZW5kU01TKGJvb2xlYW4gc2VuZFNNUykgeworCQl0aGlzLnNlbmRTTVMgPSBzZW5kU01TOworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0VXNlck9mZmVycygpIHsKKwkJcmV0dXJuIHVzZXJPZmZlcnM7CisJfQorCisJcHVibGljIHZvaWQgc2V0VXNlck9mZmVycyhTdHJpbmcgdXNlck9mZmVycykgeworCQl0aGlzLnVzZXJPZmZlcnMgPSB1c2VyT2ZmZXJzOworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0VXNlclNlYXJjaHMoKSB7CisJCXJldHVybiB1c2VyU2VhcmNoczsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRVc2VyU2VhcmNocyhTdHJpbmcgdXNlclNlYXJjaHMpIHsKKwkJdGhpcy51c2VyU2VhcmNocyA9IHVzZXJTZWFyY2hzOworCX0KKworCXB1YmxpYyBCb29sZWFuIGdldFNob3dDb250YWN0RGF0YSgpIHsKKwkJcmV0dXJuIHNob3dDb250YWN0RGF0YTsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRTaG93Q29udGFjdERhdGEoQm9vbGVhbiBzaG93Q29udGFjdERhdGEpIHsKKwkJdGhpcy5zaG93Q29udGFjdERhdGEgPSBzaG93Q29udGFjdERhdGE7CisJfQorCisJcHVibGljIEJvb2xlYW4gZ2V0U2hvd0NvbnRhY3REYXRhVG9Db250YWN0cygpIHsKKwkJcmV0dXJuIHNob3dDb250YWN0RGF0YVRvQ29udGFjdHM7CisJfQorCisJcHVibGljIHZvaWQgc2V0U2hvd0NvbnRhY3REYXRhVG9Db250YWN0cyhCb29sZWFuIHNob3dDb250YWN0RGF0YVRvQ29udGFjdHMpIHsKKwkJdGhpcy5zaG93Q29udGFjdERhdGFUb0NvbnRhY3RzID0gc2hvd0NvbnRhY3REYXRhVG9Db250YWN0czsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGdldFBob25lRm9yU01TKCkgeworCQlyZXR1cm4gZ2V0U2VuZFNNUygpID8gZ2V0QWRyZXNzZXMoKS5nZXRQaG9uZSgpIDogIiI7CisJfQorCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvdXNlci9Vc2VyQ29udGFjdC5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL3VzZXIvVXNlckNvbnRhY3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZGMxODQyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL3VzZXIvVXNlckNvbnRhY3QuamF2YQpAQCAtMCwwICsxLDE2NCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyOworCitpbXBvcnQgamF2YS5pby5TZXJpYWxpemFibGU7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CisKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Db2x1bW47CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuRW50aXR5OworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkZldGNoVHlwZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5HZW5lcmF0ZWRWYWx1ZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5HZW5lcmF0aW9uVHlwZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5JZDsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Kb2luQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLk1hbnlUb09uZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5OYW1lZFF1ZXJpZXM7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuTmFtZWRRdWVyeTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5UYWJsZTsKKworaW1wb3J0IG9yZy5hcGFjaGUub3BlbmpwYS5wZXJzaXN0ZW5jZS5qZGJjLkZvcmVpZ25LZXk7CitpbXBvcnQgb3JnLnNpbXBsZWZyYW1ld29yay54bWwuRWxlbWVudDsKK2ltcG9ydCBvcmcuc2ltcGxlZnJhbWV3b3JrLnhtbC5Sb290OworCitARW50aXR5CitATmFtZWRRdWVyaWVzKHsKKwlATmFtZWRRdWVyeShuYW1lID0gImRlbGV0ZVVzZXJDb250YWN0IiwgcXVlcnkgPSAiZGVsZXRlIGZyb20gVXNlckNvbnRhY3QgdSB3aGVyZSB1LnVzZXJDb250YWN0SWQgPSA6dXNlckNvbnRhY3REZWxldGVJZCIpLAorCUBOYW1lZFF1ZXJ5KG5hbWUgPSAiZGVsZXRlQWxsVXNlckNvbnRhY3RzIiwgcXVlcnkgPSAiZGVsZXRlIGZyb20gVXNlckNvbnRhY3QgdSB3aGVyZSB1Lm93bmVyLnVzZXJfaWQgPSA6b3duZXJJZCIpLAorCUBOYW1lZFF1ZXJ5KG5hbWUgPSAiY2hlY2tVc2VyQ29udGFjdHMiLCBxdWVyeSA9ICJzZWxlY3QgY291bnQoYy51c2VyQ29udGFjdElkKSBmcm9tIFVzZXJDb250YWN0IGMgIiArCisJCQkid2hlcmUgYy5jb250YWN0LnVzZXJfaWQgPSA6dXNlcl9pZCBBTkQgYy5vd25lci51c2VyX2lkID0gOm93bmVySWQgIiksCisJQE5hbWVkUXVlcnkobmFtZSA9ICJnZXRDb250YWN0c0J5SGFzaCIsIHF1ZXJ5ID0gInNlbGVjdCBjIGZyb20gVXNlckNvbnRhY3QgYyAiICsKKwkJCSJ3aGVyZSBjLmhhc2ggbGlrZSA6aGFzaCAiKSwKKwlATmFtZWRRdWVyeShuYW1lID0gImdldENvbnRhY3RzQnlVc2VyQW5kU3RhdHVzIiwgcXVlcnkgPSAic2VsZWN0IGMgZnJvbSBVc2VyQ29udGFjdCBjICIgKworCQkJIndoZXJlIGMub3duZXIudXNlcl9pZCA9IDpvd25lcklkICIgKworCQkJIkFORCBjLnBlbmRpbmcgPSA6cGVuZGluZyAiICsKKwkJCSJBTkQgYy5jb250YWN0LmRlbGV0ZWQgPD4gdHJ1ZSIpLAorCUBOYW1lZFF1ZXJ5KG5hbWUgPSAiZ2V0VXNlckNvbnRhY3RCeVNoYXJlQ2FsZW5kYXIiLCBxdWVyeSA9ICJzZWxlY3QgYyBmcm9tIFVzZXJDb250YWN0IGMgIgorCQkJKyAid2hlcmUgYy5jb250YWN0LnVzZXJfaWQgPSA6dXNlcklkICIKKwkJCSsgIkFORCBjLm93bmVyLnVzZXJfaWQgPSA6Y29udGFjdElkICIKKwkJCSsgIkFORCBjLnNoYXJlQ2FsZW5kYXIgPSA6c2hhcmVDYWxlbmRhciAiCisJCQkrICJBTkQgYy5jb250YWN0LmRlbGV0ZWQgPD4gdHJ1ZSIpLAorCUBOYW1lZFF1ZXJ5KG5hbWUgPSAiZ2V0Q29udGFjdHNCeVNoYXJlQ2FsZW5kYXIiLCBxdWVyeSA9ICJzZWxlY3QgYyBmcm9tIFVzZXJDb250YWN0IGMgIiArCisJCQkid2hlcmUgYy5jb250YWN0LnVzZXJfaWQgPSA6Y29udGFjdElkICIgKworCQkJIkFORCBjLnNoYXJlQ2FsZW5kYXIgPSA6c2hhcmVDYWxlbmRhciAiICsKKwkJCSJBTkQgYy5jb250YWN0LmRlbGV0ZWQgPD4gdHJ1ZSIpLAorCUBOYW1lZFF1ZXJ5KG5hbWUgPSAiZ2V0Q29udGFjdFJlcXVlc3RzQnlVc2VyQW5kU3RhdHVzIiwgcXVlcnkgPSAic2VsZWN0IGMgZnJvbSBVc2VyQ29udGFjdCBjICIgKworCQkJIndoZXJlIGMuY29udGFjdC51c2VyX2lkID0gOnVzZXJfaWQgIiArCisJCQkiQU5EIGMucGVuZGluZyA9IDpwZW5kaW5nICIgKworCQkJIkFORCBjLmNvbnRhY3QuZGVsZXRlZCA8PiB0cnVlIiksCisJQE5hbWVkUXVlcnkobmFtZSA9ICJnZXRVc2VyQ29udGFjdHNCeUlkIiwgcXVlcnkgPSAic2VsZWN0IGMgZnJvbSBVc2VyQ29udGFjdCBjICIgKworCQkJIndoZXJlIGMudXNlckNvbnRhY3RJZCA9IDp1c2VyQ29udGFjdElkIiksCisJQE5hbWVkUXVlcnkobmFtZSA9ICJnZXRVc2VyQ29udGFjdHMiLCBxdWVyeSA9ICJzZWxlY3QgYyBmcm9tIFVzZXJDb250YWN0IGMiKQorfSkKK0BUYWJsZShuYW1lID0gInVzZXJfY29udGFjdCIpCitAUm9vdChuYW1lPSJ1c2VyY29udGFjdCIpCitwdWJsaWMgY2xhc3MgVXNlckNvbnRhY3QgaW1wbGVtZW50cyBTZXJpYWxpemFibGUgeworCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDIzOTE0MDU1Mzg5Nzg5OTYyMDZMOworCUBJZAorCUBHZW5lcmF0ZWRWYWx1ZShzdHJhdGVneSA9IEdlbmVyYXRpb25UeXBlLklERU5USVRZKQorCUBDb2x1bW4obmFtZT0iaWQiKQorCUBFbGVtZW50KGRhdGE9dHJ1ZSkKKwlwcml2YXRlIGxvbmcgdXNlckNvbnRhY3RJZDsKKwkKKwlATWFueVRvT25lKGZldGNoID0gRmV0Y2hUeXBlLkVBR0VSKQorCUBKb2luQ29sdW1uKG5hbWU9InVzZXJfaWQiKQorCUBFbGVtZW50KGRhdGE9dHJ1ZSwgcmVxdWlyZWQ9ZmFsc2UpCisJcHJpdmF0ZSBVc2VyIGNvbnRhY3Q7CisJCisJQE1hbnlUb09uZShmZXRjaCA9IEZldGNoVHlwZS5FQUdFUikKKwlASm9pbkNvbHVtbihuYW1lPSJvd25lcl9pZCIpCisJQEZvcmVpZ25LZXkoZW5hYmxlZCA9IHRydWUpCisJQEVsZW1lbnQoZGF0YT10cnVlLCByZXF1aXJlZD1mYWxzZSkKKwlwcml2YXRlIFVzZXIgb3duZXI7CisJCisJQENvbHVtbihuYW1lPSJwZW5kaW5nIikKKwlARWxlbWVudChkYXRhPXRydWUpCisJcHJpdmF0ZSBCb29sZWFuIHBlbmRpbmc7CisJCisJQENvbHVtbihuYW1lPSJoYXNoIikKKwlARWxlbWVudChkYXRhPXRydWUsIHJlcXVpcmVkID0gZmFsc2UpCisJcHJpdmF0ZSBTdHJpbmcgaGFzaDsKKwkKKwlAQ29sdW1uKG5hbWU9Imluc2VydGVkIikKKwlwcml2YXRlIERhdGUgaW5zZXJ0ZWQ7CisJCisJQENvbHVtbihuYW1lPSJ1cGRhdGVkIikKKwlwcml2YXRlIERhdGUgdXBkYXRlZDsKKwkKKwlAQ29sdW1uKG5hbWU9InNoYXJlX2NhbGVuZGFyIikKKwlARWxlbWVudChkYXRhPXRydWUsIHJlcXVpcmVkPWZhbHNlKQorCXByaXZhdGUgQm9vbGVhbiBzaGFyZUNhbGVuZGFyOworCQorCXB1YmxpYyBsb25nIGdldFVzZXJDb250YWN0SWQoKSB7CisJCXJldHVybiB1c2VyQ29udGFjdElkOworCX0KKwlwdWJsaWMgdm9pZCBzZXRVc2VyQ29udGFjdElkKGxvbmcgdXNlckNvbnRhY3RJZCkgeworCQl0aGlzLnVzZXJDb250YWN0SWQgPSB1c2VyQ29udGFjdElkOworCX0KKwkKKwlwdWJsaWMgVXNlciBnZXRDb250YWN0KCkgeworCQlyZXR1cm4gY29udGFjdDsKKwl9CisJcHVibGljIHZvaWQgc2V0Q29udGFjdChVc2VyIGNvbnRhY3QpIHsKKwkJdGhpcy5jb250YWN0ID0gY29udGFjdDsKKwl9CisJCisJcHVibGljIFVzZXIgZ2V0T3duZXIoKSB7CisJCXJldHVybiBvd25lcjsKKwl9CisJcHVibGljIHZvaWQgc2V0T3duZXIoVXNlciBvd25lcikgeworCQl0aGlzLm93bmVyID0gb3duZXI7CisJfQorCQorCXB1YmxpYyBCb29sZWFuIGdldFBlbmRpbmcoKSB7CisJCXJldHVybiBwZW5kaW5nOworCX0KKwlwdWJsaWMgdm9pZCBzZXRQZW5kaW5nKEJvb2xlYW4gcGVuZGluZykgeworCQl0aGlzLnBlbmRpbmcgPSBwZW5kaW5nOworCX0KKwkKKwlwdWJsaWMgRGF0ZSBnZXRJbnNlcnRlZCgpIHsKKwkJcmV0dXJuIGluc2VydGVkOworCX0KKwlwdWJsaWMgdm9pZCBzZXRJbnNlcnRlZChEYXRlIGluc2VydGVkKSB7CisJCXRoaXMuaW5zZXJ0ZWQgPSBpbnNlcnRlZDsKKwl9CisJCisJcHVibGljIERhdGUgZ2V0VXBkYXRlZCgpIHsKKwkJcmV0dXJuIHVwZGF0ZWQ7CisJfQorCXB1YmxpYyB2b2lkIHNldFVwZGF0ZWQoRGF0ZSB1cGRhdGVkKSB7CisJCXRoaXMudXBkYXRlZCA9IHVwZGF0ZWQ7CisJfQorCQorCXB1YmxpYyBTdHJpbmcgZ2V0SGFzaCgpIHsKKwkJcmV0dXJuIGhhc2g7CisJfQorCXB1YmxpYyB2b2lkIHNldEhhc2goU3RyaW5nIGhhc2gpIHsKKwkJdGhpcy5oYXNoID0gaGFzaDsKKwl9CisJCisJcHVibGljIEJvb2xlYW4gZ2V0U2hhcmVDYWxlbmRhcigpIHsKKwkJcmV0dXJuIHNoYXJlQ2FsZW5kYXI7CisJfQorCXB1YmxpYyB2b2lkIHNldFNoYXJlQ2FsZW5kYXIoQm9vbGVhbiBzaGFyZUNhbGVuZGFyKSB7CisJCXRoaXMuc2hhcmVDYWxlbmRhciA9IHNoYXJlQ2FsZW5kYXI7CisJfQorCQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3BlcnNpc3RlbmNlL2JlYW5zL3VzZXIvVXNlcmRhdGEuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy91c2VyL1VzZXJkYXRhLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWM0M2JkYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy91c2VyL1VzZXJkYXRhLmphdmEKQEAgLTAsMCArMSwxMjIgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlcjsKKworaW1wb3J0IGphdmEuaW8uU2VyaWFsaXphYmxlOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworCitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuQ29sdW1uOworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkVudGl0eTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5HZW5lcmF0ZWRWYWx1ZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5HZW5lcmF0aW9uVHlwZTsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5JZDsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5Mb2I7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7CisKK0BFbnRpdHkKK0BUYWJsZShuYW1lID0gInVzZXJfZGF0YSIpCitwdWJsaWMgY2xhc3MgVXNlcmRhdGEgaW1wbGVtZW50cyBTZXJpYWxpemFibGUgeworCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDgzNjU3OTkyMjk3OTQ5NDAxNzJMOworCUBJZAorCUBHZW5lcmF0ZWRWYWx1ZShzdHJhdGVneSA9IEdlbmVyYXRpb25UeXBlLklERU5USVRZKQorCUBDb2x1bW4obmFtZT0iaWQiKQorICAgIHByaXZhdGUgTG9uZyBkYXRhX2lkOworCQorCUBDb2x1bW4obmFtZT0idXNlcl9pZCIpCisgICAgcHJpdmF0ZSBMb25nIHVzZXJfaWQ7CisJCisJQENvbHVtbihuYW1lPSJkYXRhX2tleSIpCisgICAgcHJpdmF0ZSBTdHJpbmcgZGF0YV9rZXk7CisJCisJQENvbHVtbihuYW1lPSJkYXRhIikKKyAgICBwcml2YXRlIFN0cmluZyBkYXRhOworCQorCUBDb2x1bW4obmFtZSA9ICJzdGFydHRpbWUiKQorCXByaXZhdGUgRGF0ZSBzdGFydHRpbWU7CisJCisJQENvbHVtbihuYW1lID0gInVwZGF0ZXRpbWUiKQorCXByaXZhdGUgRGF0ZSB1cGRhdGV0aW1lOworCQorCUBMb2IKKwlAQ29sdW1uKG5hbWUgPSAiY29tbWVudF9maWVsZCIpCisgICAgcHJpdmF0ZSBTdHJpbmcgY29tbWVudDsKKwkKKwlAQ29sdW1uKG5hbWUgPSAiZGVsZXRlZCIpCisgICAgcHJpdmF0ZSBib29sZWFuIGRlbGV0ZWQ7CisKKwlwdWJsaWMgU3RyaW5nIGdldENvbW1lbnQoKSB7CisJCXJldHVybiBjb21tZW50OworCX0KKwlwdWJsaWMgdm9pZCBzZXRDb21tZW50KFN0cmluZyBjb21tZW50KSB7CisJCXRoaXMuY29tbWVudCA9IGNvbW1lbnQ7CisJfQorCisJcHVibGljIFN0cmluZyBnZXREYXRhKCkgeworCQlyZXR1cm4gZGF0YTsKKwl9CisJcHVibGljIHZvaWQgc2V0RGF0YShTdHJpbmcgZGF0YSkgeworCQl0aGlzLmRhdGEgPSBkYXRhOworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0RGF0YV9rZXkoKSB7CisJCXJldHVybiBkYXRhX2tleTsKKwl9CisJcHVibGljIHZvaWQgc2V0RGF0YV9rZXkoU3RyaW5nIGRhdGFfa2V5KSB7CisJCXRoaXMuZGF0YV9rZXkgPSBkYXRhX2tleTsKKwl9CisgICAgCisJcHVibGljIExvbmcgZ2V0RGF0YV9pZCgpIHsKKwkJcmV0dXJuIGRhdGFfaWQ7CisJfQorCXB1YmxpYyB2b2lkIHNldERhdGFfaWQoTG9uZyBkYXRhX2lkKSB7CisJCXRoaXMuZGF0YV9pZCA9IGRhdGFfaWQ7CisJfQorCisgICAgCisJcHVibGljIERhdGUgZ2V0U3RhcnR0aW1lKCkgeworCQlyZXR1cm4gc3RhcnR0aW1lOworCX0KKwlwdWJsaWMgdm9pZCBzZXRTdGFydHRpbWUoRGF0ZSBzdGFydHRpbWUpIHsKKwkJdGhpcy5zdGFydHRpbWUgPSBzdGFydHRpbWU7CisJfQorICAgIAorCXB1YmxpYyBEYXRlIGdldFVwZGF0ZXRpbWUoKSB7CisJCXJldHVybiB1cGRhdGV0aW1lOworCX0KKwlwdWJsaWMgdm9pZCBzZXRVcGRhdGV0aW1lKERhdGUgdXBkYXRldGltZSkgeworCQl0aGlzLnVwZGF0ZXRpbWUgPSB1cGRhdGV0aW1lOworCX0KKwkKKwlwdWJsaWMgYm9vbGVhbiBnZXREZWxldGVkKCkgeworCQlyZXR1cm4gZGVsZXRlZDsKKwl9CisJcHVibGljIHZvaWQgc2V0RGVsZXRlZChib29sZWFuIGRlbGV0ZWQpIHsKKwkJdGhpcy5kZWxldGVkID0gZGVsZXRlZDsKKwl9CisKKwlwdWJsaWMgTG9uZyBnZXRVc2VyX2lkKCkgeworCQlyZXR1cm4gdXNlcl9pZDsKKwl9CisJcHVibGljIHZvaWQgc2V0VXNlcl9pZChMb25nIHVzZXJfaWQpIHsKKwkJdGhpcy51c2VyX2lkID0gdXNlcl9pZDsKKwl9CisKKworCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvdXNlci9Vc2VybGV2ZWwuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9wZXJzaXN0ZW5jZS9iZWFucy91c2VyL1VzZXJsZXZlbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkMDQ5ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcGVyc2lzdGVuY2UvYmVhbnMvdXNlci9Vc2VybGV2ZWwuamF2YQpAQCAtMCwwICsxLDk4IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXI7CisKK2ltcG9ydCBqYXZhLmlvLlNlcmlhbGl6YWJsZTsKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKKworaW1wb3J0IGphdmF4LnBlcnNpc3RlbmNlLkNvbHVtbjsKK2ltcG9ydCBqYXZheC5wZXJzaXN0ZW5jZS5FbnRpdHk7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuR2VuZXJhdGVkVmFsdWU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuR2VuZXJhdGlvblR5cGU7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuSWQ7CitpbXBvcnQgamF2YXgucGVyc2lzdGVuY2UuVGFibGU7CisKK0BFbnRpdHkKK0BUYWJsZShuYW1lID0gInVzZXJfbGV2ZWwiKQorcHVibGljIGNsYXNzIFVzZXJsZXZlbCBpbXBsZW1lbnRzIFNlcmlhbGl6YWJsZSB7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gLTE3NzkwMzcyMDIzMjg0NDMzNDBMOworCUBJZAorCUBHZW5lcmF0ZWRWYWx1ZShzdHJhdGVneSA9IEdlbmVyYXRpb25UeXBlLklERU5USVRZKQorCUBDb2x1bW4obmFtZT0iaWQiKQorCXByaXZhdGUgTG9uZyBsZXZlbF9pZDsKKwkKKwlAQ29sdW1uKG5hbWU9ImRlc2NyaXB0aW9uIikKKwlwcml2YXRlIFN0cmluZyBkZXNjcmlwdGlvbjsKKwkKKwlAQ29sdW1uKG5hbWU9InN0YXR1c2NvZGUiKQorCXByaXZhdGUgSW50ZWdlciBzdGF0dXNjb2RlOworCQorCUBDb2x1bW4obmFtZT0ic3RhcnR0aW1lIikKKwlwcml2YXRlIERhdGUgc3RhcnR0aW1lOworCQorCUBDb2x1bW4obmFtZT0idXBkYXRldGltZSIpCisJcHJpdmF0ZSBEYXRlIHVwZGF0ZXRpbWU7CisJCisJQENvbHVtbihuYW1lPSJkZWxldGVkIikKKwlwcml2YXRlIGJvb2xlYW4gZGVsZXRlZDsKKwkKKwlwdWJsaWMgU3RyaW5nIGdldERlc2NyaXB0aW9uKCkgeworCQlyZXR1cm4gZGVzY3JpcHRpb247CisJfQorCXB1YmxpYyB2b2lkIHNldERlc2NyaXB0aW9uKFN0cmluZyBkZXNjcmlwdGlvbikgeworCQl0aGlzLmRlc2NyaXB0aW9uID0gZGVzY3JpcHRpb247CisJfQorCisJcHVibGljIExvbmcgZ2V0TGV2ZWxfaWQoKSB7CisJCXJldHVybiBsZXZlbF9pZDsKKwl9CisJcHVibGljIHZvaWQgc2V0TGV2ZWxfaWQoTG9uZyBsZXZlbF9pZCkgeworCQl0aGlzLmxldmVsX2lkID0gbGV2ZWxfaWQ7CisJfQorICAgIAorICAgIAorCXB1YmxpYyBEYXRlIGdldFN0YXJ0dGltZSgpIHsKKwkJcmV0dXJuIHN0YXJ0dGltZTsKKwl9CisJcHVibGljIHZvaWQgc2V0U3RhcnR0aW1lKERhdGUgc3RhcnR0aW1lKSB7CisJCXRoaXMuc3RhcnR0aW1lID0gc3RhcnR0aW1lOworCX0KKyAgICAKKwlwdWJsaWMgRGF0ZSBnZXRVcGRhdGV0aW1lKCkgeworCQlyZXR1cm4gdXBkYXRldGltZTsKKwl9CisJcHVibGljIHZvaWQgc2V0VXBkYXRldGltZShEYXRlIHVwZGF0ZXRpbWUpIHsKKwkJdGhpcy51cGRhdGV0aW1lID0gdXBkYXRldGltZTsKKwl9CisJCisJcHVibGljIGJvb2xlYW4gZ2V0RGVsZXRlZCgpIHsKKwkJcmV0dXJuIGRlbGV0ZWQ7CisJfQorCXB1YmxpYyB2b2lkIHNldERlbGV0ZWQoYm9vbGVhbiBkZWxldGVkKSB7CisJCXRoaXMuZGVsZXRlZCA9IGRlbGV0ZWQ7CisJfQorICAgIAorCXB1YmxpYyBJbnRlZ2VyIGdldFN0YXR1c2NvZGUoKSB7CisJCXJldHVybiBzdGF0dXNjb2RlOworCX0KKwlwdWJsaWMgdm9pZCBzZXRTdGF0dXNjb2RlKEludGVnZXIgc3RhdHVzY29kZSkgeworCQl0aGlzLnN0YXR1c2NvZGUgPSBzdGF0dXNjb2RlOworCX0KKwkKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9xdWFydHovc2NoZWR1bGVyL01lZXRpbmdSZW1pbmRlckpvYi5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3F1YXJ0ei9zY2hlZHVsZXIvTWVldGluZ1JlbWluZGVySm9iLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWI0N2RmMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9xdWFydHovc2NoZWR1bGVyL01lZXRpbmdSZW1pbmRlckpvYi5qYXZhCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucXVhcnR6LnNjaGVkdWxlcjsKKworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY2FsZW5kYXIubWFuYWdlbWVudC5BcHBvaW50bWVudExvZ2ljOworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5BdXRvd2lyZWQ7CisKK3B1YmxpYyBjbGFzcyBNZWV0aW5nUmVtaW5kZXJKb2IgeworCXByaXZhdGUgc3RhdGljIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoTWVldGluZ1JlbWluZGVySm9iLmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisJQEF1dG93aXJlZAorCXByaXZhdGUgQXBwb2ludG1lbnRMb2dpYyBhcHBvaW50bWVudExvZ2ljOworCQorCXB1YmxpYyB2b2lkIGRvSXQoKSB7CisJCWxvZy5kZWJ1ZygiTWVldGluZ1JlbWluZGVySm9iLmV4ZWN1dGUiKTsKKwkJdHJ5IHsKKwkJCWFwcG9pbnRtZW50TG9naWMuZG9TY2hlZHVsZWRNZWV0aW5nUmVtaW5kZXIoKTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycil7CisJCQlsb2cuZXJyb3IoImV4ZWN1dGUiLGVycik7CisJCX0KKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcXVhcnR6L3NjaGVkdWxlci9TZXNzaW9uQ2xlYXJKb2IuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9xdWFydHovc2NoZWR1bGVyL1Nlc3Npb25DbGVhckpvYi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkYjY4OWMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcXVhcnR6L3NjaGVkdWxlci9TZXNzaW9uQ2xlYXJKb2IuamF2YQpAQCAtMCwwICsxLDQxIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnF1YXJ0ei5zY2hlZHVsZXI7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5TZXNzaW9uZGF0YURhbzsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uQXV0b3dpcmVkOworIAorcHVibGljIGNsYXNzIFNlc3Npb25DbGVhckpvYiB7CisJcHJpdmF0ZSBzdGF0aWMgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcihTZXNzaW9uQ2xlYXJKb2IuY2xhc3MsIE9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBTZXNzaW9uZGF0YURhbyBzZXNzaW9uZGF0YURhbzsKKworCXB1YmxpYyB2b2lkIGRvSXQoKSB7CisJCWxvZy50cmFjZSgiU2Vzc2lvbkNsZWFySm9iLmV4ZWN1dGUiKTsKKwkJdHJ5IHsKKwkJCS8vIFRPRE8gR2VuZXJhdGUgcmVwb3J0CisJCQlzZXNzaW9uZGF0YURhby5jbGVhclNlc3Npb25UYWJsZSgpOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKXsKKwkJCWxvZy5lcnJvcigiZXhlY3V0ZSIsZXJyKTsKKwkJfQorCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9xdWFydHovc2NoZWR1bGVyL1Rlc3RTZXR1cENsZWFudXBKb2IuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9xdWFydHovc2NoZWR1bGVyL1Rlc3RTZXR1cENsZWFudXBKb2IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYTdlMzE1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3F1YXJ0ei9zY2hlZHVsZXIvVGVzdFNldHVwQ2xlYW51cEpvYi5qYXZhCkBAIC0wLDAgKzEsNjAgQEAKKy8qDQorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAqIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucXVhcnR6LnNjaGVkdWxlcjsNCisNCitpbXBvcnQgamF2YS5pby5GaWxlOw0KK2ltcG9ydCBqYXZhLmlvLkZpbGVGaWx0ZXI7DQorDQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMuT21GaWxlSGVscGVyOw0KK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOw0KKw0KK3B1YmxpYyBjbGFzcyBUZXN0U2V0dXBDbGVhbnVwSm9iIHsNCisJcHJpdmF0ZSBzdGF0aWMgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcihUZXN0U2V0dXBDbGVhbnVwSm9iLmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7DQorCXByaXZhdGUgbG9uZyBleHBpcmF0aW9uSW50ZXJ2YWwgPSA2MCAqIDYwICogMTAwMDsgLy8gMSBob3VyDQorDQorCXB1YmxpYyB2b2lkIGRvSXQoKSB7DQorCQlsb2cuZGVidWcoIlRlc3RTZXR1cENsZWFySm9iLmV4ZWN1dGUiKTsNCisJCXRyeSB7DQorCQkJLy9GSVhNRSBuZWVkIHRvIG1vdmUgYWxsIHRoZXNlIHN0YWZmIHRvIGhlbHBlcg0KKwkJCUZpbGVbXSBmb2xkZXJzID0gT21GaWxlSGVscGVyLmdldFN0cmVhbXNEaXIoKS5saXN0RmlsZXMoKTsNCisJCQlpZiAoZm9sZGVycyAhPSBudWxsKSB7DQorCQkJCWZvciAoRmlsZSBmb2xkZXIgOiBmb2xkZXJzKSB7DQorCQkJCQlpZiAoZm9sZGVyLmlzRGlyZWN0b3J5KCkpIHsNCisJCQkJCQkvL1RPRE8gbmVlZCB0byByZXdvcmsgdGhpcyBhbmQgcmVtb3ZlIGhhcmRjb2RpbmdzDQorCQkJCQkJZm9yIChGaWxlIGZpbGUgOiBmb2xkZXIubGlzdEZpbGVzKG5ldyBGaWxlRmlsdGVyKCkgew0KKwkJCQkJCQlwdWJsaWMgYm9vbGVhbiBhY2NlcHQoRmlsZSBmaWxlKSB7DQorCQkJCQkJCQlyZXR1cm4gZmlsZS5nZXROYW1lKCkuc3RhcnRzV2l0aCgiVEVTVF9TRVRVUF8iKTsNCisJCQkJCQkJfQ0KKwkJCQkJCX0pKQ0KKwkJCQkJCXsNCisJCQkJCQkJaWYgKGZpbGUuaXNGaWxlKCkgJiYgZmlsZS5sYXN0TW9kaWZpZWQoKSArIGV4cGlyYXRpb25JbnRlcnZhbCA8IFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpKSB7DQorCQkJCQkJCQlsb2cuZGVidWcoImV4cGlyZWQgVEVTVCBTRVRVUCBmb3VuZDogIiArIGZpbGUuZ2V0Q2Fub25pY2FsUGF0aCgpKTsNCisJCQkJCQkJCWZpbGUuZGVsZXRlKCk7DQorCQkJCQkJCX0NCisJCQkJCQl9DQorCQkJCQl9DQorCQkJCX0NCisJCQl9DQorCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgew0KKwkJCWxvZy5lcnJvcigiVW5leHBlY3RlZCBleGNlcHRpb24gd2hpbGUgcHJvY2Vzc2luZyB0ZXN0cyBzZXR1cCB2aWRlb3VzLiIsIGUpOw0KKwkJfQ0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9yZW1vdGUvQ2FsZW5kYXJTZXJ2aWNlLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcmVtb3RlL0NhbGVuZGFyU2VydmljZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzZTM1MjMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcmVtb3RlL0NhbGVuZGFyU2VydmljZS5qYXZhCkBAIC0wLDAgKzEsNDA5IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnJlbW90ZTsKKworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5UaW1lWm9uZTsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLkF1dGhMZXZlbFV0aWw7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5TZXNzaW9uZGF0YURhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNhbGVuZGFyLmRhb3MuQXBwb2ludG1lbnRDYXRlZ29yeURhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNhbGVuZGFyLmRhb3MuQXBwb2ludG1lbnREYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jYWxlbmRhci5kYW9zLkFwcG9pbnRtZW50UmVtaW5kZXJUeXBEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jYWxlbmRhci5tYW5hZ2VtZW50LkFwcG9pbnRtZW50TG9naWM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jb25mZXJlbmNlLlJvb21NYW5hZ2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY29uZmVyZW5jZS5kYW8uUm9vbURhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuVXNlck1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuY2FsZW5kYXIuQXBwb2ludG1lbnQ7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuY2FsZW5kYXIuQXBwb2ludG1lbnRDYXRlZ29yeTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5jYWxlbmRhci5BcHBvaW50bWVudFJlbWluZGVyVHlwczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tLlJvb207CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbS5Sb29tVHlwZTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlVzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMubWF0aC5UaW1lem9uZVV0aWw7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKKworcHVibGljIGNsYXNzIENhbGVuZGFyU2VydmljZSB7CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKAorCQkJQ2FsZW5kYXJTZXJ2aWNlLmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBBcHBvaW50bWVudERhbyBhcHBvaW50bWVudERhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBBcHBvaW50bWVudExvZ2ljIGFwcG9pbnRtZW50TG9naWM7CisJQEF1dG93aXJlZAorCXByaXZhdGUgU2Vzc2lvbmRhdGFEYW8gc2Vzc2lvbmRhdGFEYW87CisJQEF1dG93aXJlZAorCXByaXZhdGUgVXNlck1hbmFnZXIgdXNlck1hbmFnZXI7CisJQEF1dG93aXJlZAorCXByaXZhdGUgUm9vbU1hbmFnZXIgcm9vbU1hbmFnZXI7CisJQEF1dG93aXJlZAorCXByaXZhdGUgUm9vbURhbyByb29tRGFvOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEF1dGhMZXZlbFV0aWwgYXV0aExldmVsVXRpbDsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBBcHBvaW50bWVudENhdGVnb3J5RGFvIGFwcG9pbnRtZW50Q2F0ZWdvcnlEYW9JbXBsOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEFwcG9pbnRtZW50UmVtaW5kZXJUeXBEYW8gYXBwb2ludG1lbnRSZW1pbmRlclR5cERhb0ltcGw7CisJQEF1dG93aXJlZAorCXByaXZhdGUgVGltZXpvbmVVdGlsIHRpbWV6b25lVXRpbDsKKworCXB1YmxpYyBMaXN0PEFwcG9pbnRtZW50PiBnZXRBcHBvaW50bWVudEJ5UmFuZ2UoU3RyaW5nIFNJRCwgRGF0ZSBzdGFydHRpbWUsCisJCQlEYXRlIGVuZHRpbWUpIHsKKwkJbG9nLmRlYnVnKCJnZXRBcHBvaW50bWVudEJ5UmFuZ2UgOiBzdGFydGRhdGUgLSAiICsgc3RhcnR0aW1lCisJCQkJKyAiLCBlbmRkYXRlIC0gIiArIGVuZHRpbWUpOworCQl0cnkgeworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1VzZXJMZXZlbCh1c2VyX2xldmVsKSkgeworCisJCQkJcmV0dXJuIGFwcG9pbnRtZW50TG9naWMuZ2V0QXBwb2ludG1lbnRCeVJhbmdlKHVzZXJzX2lkLAorCQkJCQkJc3RhcnR0aW1lLCBlbmR0aW1lKTsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbZ2V0QXBwb2ludG1lbnRCeVJhbmdlXSIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIEFwcG9pbnRtZW50IGdldE5leHRBcHBvaW50bWVudChTdHJpbmcgU0lEKSB7CisKKwkJdHJ5IHsKKworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1VzZXJMZXZlbCh1c2VyX2xldmVsKSkgeworCisJCQkJcmV0dXJuIGFwcG9pbnRtZW50TG9naWMuZ2V0TmV4dEFwcG9pbnRtZW50KCk7CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2dldE5leHRBcHBvaW50bWVudEJ5SWRdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKworCX0KKworCXB1YmxpYyBMaXN0PEFwcG9pbnRtZW50PiBzZWFyY2hBcHBvaW50bWVudEJ5TmFtZShTdHJpbmcgU0lELAorCQkJU3RyaW5nIGFwcG9pbnRtZW50TmFtZSkgeworCisJCXRyeSB7CisKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tVc2VyTGV2ZWwodXNlcl9sZXZlbCkpIHsKKworCQkJCXJldHVybiBhcHBvaW50bWVudExvZ2ljCisJCQkJCQkuc2VhcmNoQXBwb2ludG1lbnRCeU5hbWUoYXBwb2ludG1lbnROYW1lKTsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbc2VhcmNoQXBwb2ludG1lbnRCeU5hbWVdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKworCX0KKworCXB1YmxpYyBMb25nIHNhdmVBcHBvaW50bWVudChTdHJpbmcgU0lELCBTdHJpbmcgYXBwb2ludG1lbnROYW1lLAorCQkJU3RyaW5nIGFwcG9pbnRtZW50TG9jYXRpb24sIFN0cmluZyBhcHBvaW50bWVudERlc2NyaXB0aW9uLAorCQkJU3RyaW5nIGFwcG9pbnRtZW50c3RhcnRTdHIsIFN0cmluZyBhcHBvaW50bWVudGVuZFN0ciwgQm9vbGVhbiBpc0RhaWx5LAorCQkJQm9vbGVhbiBpc1dlZWtseSwgQm9vbGVhbiBpc01vbnRobHksIEJvb2xlYW4gaXNZZWFybHksCisJCQlMb25nIGNhdGVnb3J5SWQsIExvbmcgcmVtaW5kLCBAU3VwcHJlc3NXYXJuaW5ncygicmF3dHlwZXMiKSBMaXN0IG1tQ2xpZW50LCBMb25nIHJvb21UeXBlLAorCQkJU3RyaW5nIGJhc2VVcmwsIExvbmcgbGFuZ3VhZ2VfaWQsIEJvb2xlYW4gaXNQYXNzd29yZFByb3RlY3RlZCwKKwkJCVN0cmluZyBwYXNzd29yZCwgbG9uZyByb29tSWQpIHsKKworCQlsb2cuZGVidWcoInNhdmVBcHBvaW50TWVudCBTSUQ6IiArIFNJRCArICIsIGJhc2VVcmwgOiAiICsgYmFzZVVybCk7CisKKwkJdHJ5IHsKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCWxvZy5kZWJ1Zygic2F2ZUFwcG9pbnRNZW50IHVzZXJzX2lkOiIgKyB1c2Vyc19pZCk7CisKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1VzZXJMZXZlbCh1c2VyX2xldmVsKSkgeworCQkJCQorCQkJCVVzZXIgdXMgPSB1c2VyTWFuYWdlci5nZXRVc2VyQnlJZCh1c2Vyc19pZCk7CisJCQkJCisJCQkJLy8gUmVmYWN0b3IgdGhlIGdpdmVuIHRpbWUgaWdub3JpbmcgdGhlIERhdGUgaXMgYWx3YXlzIFVUQyEKKwkJCQlUaW1lWm9uZSB0aW1lem9uZSA9IHRpbWV6b25lVXRpbC5nZXRUaW1lem9uZUJ5VXNlcih1cyk7CisJCQkJCisJCQkJLy9UcmFuc2Zvcm0gdGhlIHVzZXIgdGltZSBpbiBhIGxvY2FsIHRpbWUgb2YgdGhlIHNlcnZlciAKKwkJCQkvL21hY2hpbmVzIGxvY2FsZSB0aW1lWm9uZSBhbmQgc3RvcmUgdGhhdCB0byB0aGUgZGIKKwkJCQlEYXRlIGFwcG9pbnRtZW50c3RhcnQgPSBuZXcgRGF0ZShUaW1lem9uZVV0aWwuZ2V0Q2FsZW5kYXJJblRpbWV6b25lKGFwcG9pbnRtZW50c3RhcnRTdHIsIHRpbWV6b25lKS5nZXRUaW1lKCkuZ2V0VGltZSgpKTsKKwkJCQlEYXRlIGFwcG9pbnRtZW50ZW5kID0gbmV3IERhdGUoVGltZXpvbmVVdGlsLmdldENhbGVuZGFySW5UaW1lem9uZShhcHBvaW50bWVudGVuZFN0ciwgdGltZXpvbmUpLmdldFRpbWUoKS5nZXRUaW1lKCkpOworCisJCQkJbG9nLmRlYnVnKCJ0aW1lem9uZSAiK3RpbWV6b25lKTsKKwkJCQlsb2cuZGVidWcoImFwcG9pbnRtZW50c3RhcnRTdHIgIithcHBvaW50bWVudHN0YXJ0U3RyKTsKKwkJCQlsb2cuZGVidWcoImFwcG9pbnRtZW50ZW5kU3RyICIrYXBwb2ludG1lbnRlbmRTdHIpOworCQkJCWxvZy5kZWJ1ZygiYXBwb2ludG1lbnRzdGFydCAiK2FwcG9pbnRtZW50c3RhcnQpOworCQkJCWxvZy5kZWJ1ZygiYXBwb2ludG1lbnRlbmQgICAiK2FwcG9pbnRtZW50ZW5kKTsKKwkJCQkKKwkJCQlMb25nIGlkID0gYXBwb2ludG1lbnRMb2dpYy5zYXZlQXBwb2ludG1lbnQoYXBwb2ludG1lbnROYW1lLAorCQkJCQkJdXNlcnNfaWQsIGFwcG9pbnRtZW50TG9jYXRpb24sIGFwcG9pbnRtZW50RGVzY3JpcHRpb24sCisJCQkJCQlhcHBvaW50bWVudHN0YXJ0LCBhcHBvaW50bWVudGVuZCwgaXNEYWlseSwgaXNXZWVrbHksCisJCQkJCQlpc01vbnRobHksIGlzWWVhcmx5LCBjYXRlZ29yeUlkLCByZW1pbmQsIG1tQ2xpZW50LAorCQkJCQkJcm9vbVR5cGUsIGJhc2VVcmwsIGxhbmd1YWdlX2lkLCBpc1Bhc3N3b3JkUHJvdGVjdGVkLCBwYXNzd29yZCwgcm9vbUlkKTsKKworCQkJCXJldHVybiBpZDsKKwkJCX0gZWxzZSB7CisJCQkJbG9nLmVycm9yKCJzYXZlQXBwb2ludG1lbnQgOiB3cm9uZyB1c2VyIGxldmVsIik7CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW3NhdmVBcHBvaW50bWVudF0iLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCisJfQorCisJcHVibGljIExvbmcgdXBkYXRlQXBwb2ludG1lbnRUaW1lT25seShTdHJpbmcgU0lELCBMb25nIGFwcG9pbnRtZW50SWQsCisJCQlTdHJpbmcgYXBwb2ludG1lbnRzdGFydFN0ciwgU3RyaW5nIGFwcG9pbnRtZW50ZW5kU3RyLCBTdHJpbmcgYmFzZXVybCwKKwkJCUxvbmcgbGFuZ3VhZ2VfaWQpIHsKKwkJdHJ5IHsKKworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1VzZXJMZXZlbCh1c2VyX2xldmVsKSkgeworCisJCQkJbG9nLmRlYnVnKCJ1cGRhdGVBcHBvaW50bWVudCIpOworCisJCQkJbG9nLmRlYnVnKCJhcHBvaW50bWVudElkICIgKyBhcHBvaW50bWVudElkKTsKKwkJCQkKKwkJCQlVc2VyIHVzID0gdXNlck1hbmFnZXIuZ2V0VXNlckJ5SWQodXNlcnNfaWQpOworCQkJCQorCQkJCS8vIFJlZmFjdG9yIHRoZSBnaXZlbiB0aW1lIGlnbm9yaW5nIHRoZSBEYXRlIGlzIGFsd2F5cyBVVEMhCisJCQkJVGltZVpvbmUgdGltZXpvbmUgPSB0aW1lem9uZVV0aWwuZ2V0VGltZXpvbmVCeVVzZXIodXMpOworCQkJCQorCQkJCS8vVHJhbnNmb3JtIHRoZSB1c2VyIHRpbWUgaW4gYSBsb2NhbCB0aW1lIG9mIHRoZSBzZXJ2ZXIgCisJCQkJLy9tYWNoaW5lcyBsb2NhbGUgdGltZVpvbmUgYW5kIHN0b3JlIHRoYXQgdG8gdGhlIGRiCisJCQkJRGF0ZSBhcHBvaW50bWVudHN0YXJ0ID0gbmV3IERhdGUoVGltZXpvbmVVdGlsLmdldENhbGVuZGFySW5UaW1lem9uZShhcHBvaW50bWVudHN0YXJ0U3RyLCB0aW1lem9uZSkuZ2V0VGltZSgpLmdldFRpbWUoKSk7CisJCQkJRGF0ZSBhcHBvaW50bWVudGVuZCA9IG5ldyBEYXRlKFRpbWV6b25lVXRpbC5nZXRDYWxlbmRhckluVGltZXpvbmUoYXBwb2ludG1lbnRlbmRTdHIsIHRpbWV6b25lKS5nZXRUaW1lKCkuZ2V0VGltZSgpKTsKKworCQkJCWxvZy5kZWJ1ZygidXAgdGltZXpvbmUgIit0aW1lem9uZSk7CisJCQkJbG9nLmRlYnVnKCJ1cCBhcHBvaW50bWVudHN0YXJ0U3RyICIrYXBwb2ludG1lbnRzdGFydFN0cik7CisJCQkJbG9nLmRlYnVnKCJ1cCBhcHBvaW50bWVudGVuZFN0ciAiK2FwcG9pbnRtZW50ZW5kU3RyKTsKKwkJCQlsb2cuZGVidWcoInVwIGFwcG9pbnRtZW50c3RhcnQgIithcHBvaW50bWVudHN0YXJ0KTsKKwkJCQlsb2cuZGVidWcoInVwIGFwcG9pbnRtZW50ZW5kICAgIithcHBvaW50bWVudGVuZCk7CisKKwkJCQlhcHBvaW50bWVudExvZ2ljCisJCQkJCQkuZ2V0QXBwb2ludE1lbnRCeUlkKGFwcG9pbnRtZW50SWQpOworCisJCQkJVXNlciB1c2VyID0gdXNlck1hbmFnZXIuZ2V0VXNlckJ5SWQodXNlcnNfaWQpOworCQkJCQorCQkJCXJldHVybiBhcHBvaW50bWVudERhby51cGRhdGVBcHBvaW50bWVudEJ5VGltZShhcHBvaW50bWVudElkLAorCQkJCQkJYXBwb2ludG1lbnRzdGFydCwgYXBwb2ludG1lbnRlbmQsIHVzZXJzX2lkLCBiYXNldXJsLAorCQkJCQkJbGFuZ3VhZ2VfaWQsIHVzZXIuZ2V0T21UaW1lWm9uZSgpLmdldEljYWwoKSk7CisKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbdXBkYXRlQXBwb2ludG1lbnRdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKworCX0KKworCXB1YmxpYyBMb25nIHVwZGF0ZUFwcG9pbnRtZW50KFN0cmluZyBTSUQsIExvbmcgYXBwb2ludG1lbnRJZCwKKwkJCVN0cmluZyBhcHBvaW50bWVudE5hbWUsIAorCQkJU3RyaW5nIGFwcG9pbnRtZW50TG9jYXRpb24sIFN0cmluZyBhcHBvaW50bWVudERlc2NyaXB0aW9uLAorCQkJU3RyaW5nIGFwcG9pbnRtZW50c3RhcnRTdHIsIFN0cmluZyBhcHBvaW50bWVudGVuZFN0ciwgQm9vbGVhbiBpc0RhaWx5LAorCQkJQm9vbGVhbiBpc1dlZWtseSwgQm9vbGVhbiBpc01vbnRobHksIEJvb2xlYW4gaXNZZWFybHksCisJCQlMb25nIGNhdGVnb3J5SWQsIExvbmcgcmVtaW5kLCBAU3VwcHJlc3NXYXJuaW5ncygicmF3dHlwZXMiKSBMaXN0IG1tQ2xpZW50LCBMb25nIHJvb21UeXBlLAorCQkJU3RyaW5nIGJhc2VVcmwsIExvbmcgbGFuZ3VhZ2VfaWQsIEJvb2xlYW4gaXNQYXNzd29yZFByb3RlY3RlZCwKKwkJCVN0cmluZyBwYXNzd29yZCwgbG9uZyByb29tSWQpIHsKKwkJdHJ5IHsKKworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1VzZXJMZXZlbCh1c2VyX2xldmVsKSkgeworCisJCQkJbG9nLmRlYnVnKCJ1cGRhdGVBcHBvaW50bWVudCIpOworCisJCQkJQXBwb2ludG1lbnQgYXBwID0gYXBwb2ludG1lbnRMb2dpYy5nZXRBcHBvaW50TWVudEJ5SWQoYXBwb2ludG1lbnRJZCk7CisJCQkJUm9vbSByb29tID0gYXBwLmdldFJvb20oKTsKKwkJCQlpZiAocm9vbUlkID4gMCkgeworCQkJCQlpZiAoIHJvb20uZ2V0Um9vbXNfaWQoKSAhPSByb29tSWQpIHsKKwkJCQkJCWFwcC5zZXRSb29tKHJvb21EYW8uZ2V0KHJvb21JZCkpOworCQkJCQkJYXBwb2ludG1lbnREYW8udXBkYXRlQXBwb2ludG1lbnQoYXBwKTsKKwkJCQkJCWJvb2xlYW4gaXNBcHBSb29tID0gcm9vbS5nZXRBcHBvaW50bWVudCgpOworCQkJCQkJaWYgKGlzQXBwUm9vbSkgeworCQkJCQkJCXJvb21EYW8uZGVsZXRlKHJvb20sIHVzZXJzX2lkKTsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCX0gZWxzZSB7CisJCQkJCVJvb21UeXBlIHJ0ID0gcm9vbU1hbmFnZXIuZ2V0Um9vbVR5cGVzQnlJZChyb29tVHlwZSk7CisJCisJCQkJCWlmIChyb29tICE9IG51bGwpIHsKKwkKKwkJCQkJCXJvb20uc2V0Q29tbWVudChhcHBvaW50bWVudERlc2NyaXB0aW9uKTsKKwkJCQkJCXJvb20uc2V0TmFtZShhcHBvaW50bWVudE5hbWUpOworCQkJCQkJcm9vbS5zZXRSb29tdHlwZShydCk7CisJCisJCQkJCQlyb29tRGFvLnVwZGF0ZShyb29tLCB1c2Vyc19pZCk7CisJCQkJCX0KKwkJCQl9CisJCQkJVXNlciB1c2VyID0gdXNlck1hbmFnZXIuZ2V0VXNlckJ5SWQodXNlcnNfaWQpOworCQkJCQorCQkJCS8vIFJlZmFjdG9yIHRoZSBnaXZlbiB0aW1lIGlnbm9yaW5nIHRoZSBEYXRlIGlzIGFsd2F5cyBVVEMhCisJCQkJVGltZVpvbmUgdGltZXpvbmUgPSB0aW1lem9uZVV0aWwuZ2V0VGltZXpvbmVCeVVzZXIodXNlcik7CisJCQkJCisJCQkJLy9UcmFuc2Zvcm0gdGhlIHVzZXIgdGltZSBpbiBhIGxvY2FsIHRpbWUgb2YgdGhlIHNlcnZlciAKKwkJCQkvL21hY2hpbmVzIGxvY2FsZSB0aW1lWm9uZSBhbmQgc3RvcmUgdGhhdCB0byB0aGUgZGIKKwkJCQlEYXRlIGFwcG9pbnRtZW50c3RhcnQgPSBuZXcgRGF0ZShUaW1lem9uZVV0aWwuZ2V0Q2FsZW5kYXJJblRpbWV6b25lKGFwcG9pbnRtZW50c3RhcnRTdHIsIHRpbWV6b25lKS5nZXRUaW1lKCkuZ2V0VGltZSgpKTsKKwkJCQlEYXRlIGFwcG9pbnRtZW50ZW5kID0gbmV3IERhdGUoVGltZXpvbmVVdGlsLmdldENhbGVuZGFySW5UaW1lem9uZShhcHBvaW50bWVudGVuZFN0ciwgdGltZXpvbmUpLmdldFRpbWUoKS5nZXRUaW1lKCkpOworCisJCQkJbG9nLmRlYnVnKCJ1cDIgdGltZXpvbmUgIit0aW1lem9uZSk7CisJCQkJbG9nLmRlYnVnKCJ1cDIgYXBwb2ludG1lbnRzdGFydFN0ciAiK2FwcG9pbnRtZW50c3RhcnRTdHIpOworCQkJCWxvZy5kZWJ1ZygidXAyIGFwcG9pbnRtZW50ZW5kU3RyICIrYXBwb2ludG1lbnRlbmRTdHIpOworCQkJCWxvZy5kZWJ1ZygidXAyIGFwcG9pbnRtZW50c3RhcnQgIithcHBvaW50bWVudHN0YXJ0KTsKKwkJCQlsb2cuZGVidWcoInVwMiBhcHBvaW50bWVudGVuZCAiK2FwcG9pbnRtZW50ZW5kKTsKKworCQkJCXJldHVybiBhcHBvaW50bWVudERhby51cGRhdGVBcHBvaW50bWVudChhcHBvaW50bWVudElkLAorCQkJCQkJYXBwb2ludG1lbnROYW1lLCBhcHBvaW50bWVudERlc2NyaXB0aW9uLAorCQkJCQkJYXBwb2ludG1lbnRzdGFydCwgYXBwb2ludG1lbnRlbmQsIGlzRGFpbHksIGlzV2Vla2x5LAorCQkJCQkJaXNNb250aGx5LCBpc1llYXJseSwgY2F0ZWdvcnlJZCwgcmVtaW5kLCBtbUNsaWVudCwKKwkJCQkJCXVzZXJzX2lkLCBiYXNlVXJsLCBsYW5ndWFnZV9pZCwgaXNQYXNzd29yZFByb3RlY3RlZCwgcGFzc3dvcmQsIHVzZXIKKwkJCQkJCQkJLmdldE9tVGltZVpvbmUoKS5nZXRJY2FsKCksIGFwcG9pbnRtZW50TG9jYXRpb24pOworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIlt1cGRhdGVBcHBvaW50bWVudF0iLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCisJfQorCisJcHVibGljIExvbmcgZGVsZXRlQXBwb2ludG1lbnQoU3RyaW5nIFNJRCwgTG9uZyBhcHBvaW50bWVudElkLAorCQkJTG9uZyBsYW5ndWFnZV9pZCkgeworCisJCWxvZy5kZWJ1ZygiZGVsZXRlQXBwb2ludG1lbnQgOiAiICsgYXBwb2ludG1lbnRJZCk7CisKKwkJdHJ5IHsKKworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1VzZXJMZXZlbCh1c2VyX2xldmVsKSkgeworCisJCQkJcmV0dXJuIGFwcG9pbnRtZW50TG9naWMuZGVsZXRlQXBwb2ludG1lbnQoYXBwb2ludG1lbnRJZCwKKwkJCQkJCXVzZXJzX2lkLCBsYW5ndWFnZV9pZCk7CisKKwkJCX0KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltkZWxldGVBcHBvaW50bWVudF0iLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCisJfQorCisJcHVibGljIEFwcG9pbnRtZW50IGdldEFwcG9pbnRtZW50QnlSb29tSWQoU3RyaW5nIFNJRCwgTG9uZyByb29tX2lkKSB7CisJCXRyeSB7CisKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tVc2VyTGV2ZWwodXNlcl9sZXZlbCkpIHsKKworCQkJCUFwcG9pbnRtZW50IGFwcG9pbnRtZW50ID0gbmV3IEFwcG9pbnRtZW50KCk7CisKKwkJCQlBcHBvaW50bWVudCBhcHBTdG9yZWQgPSBhcHBvaW50bWVudERhby5nZXRBcHBvaW50bWVudEJ5Um9vbUlkKAorCQkJCQkJdXNlcnNfaWQsIHJvb21faWQpOworCisJCQkJYXBwb2ludG1lbnQuc2V0QXBwb2ludG1lbnRTdGFydHRpbWUoYXBwU3RvcmVkCisJCQkJCQkuZ2V0QXBwb2ludG1lbnRTdGFydHRpbWUoKSk7CisJCQkJYXBwb2ludG1lbnQuc2V0QXBwb2ludG1lbnRFbmR0aW1lKGFwcFN0b3JlZAorCQkJCQkJLmdldEFwcG9pbnRtZW50RW5kdGltZSgpKTsKKworCQkJCXJldHVybiBhcHBvaW50bWVudDsKKwkJCX0KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRBcHBvaW50bWVudEJ5Um9vbUlkXSIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCQorCXB1YmxpYyBMaXN0PEFwcG9pbnRtZW50Q2F0ZWdvcnk+IGdldEFwcG9pbnRtZW50Q2F0ZWdvcnlMaXN0KFN0cmluZyBTSUQpIHsKKwkJbG9nLmRlYnVnKCJBcHBvaW50bWVuZXRDYXRlZ29yeVNlcnZpY2UuZ2V0QXBwb2ludG1lbnRDYXRlZ29yeUxpc3QgU0lEIDogIgorCQkJCSsgU0lEKTsKKworCQl0cnkgeworCisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tVc2VyTGV2ZWwodXNlcl9sZXZlbCkpIHsKKworCQkJCUxpc3Q8QXBwb2ludG1lbnRDYXRlZ29yeT4gcmVzID0gYXBwb2ludG1lbnRDYXRlZ29yeURhb0ltcGwKKwkJCQkJCS5nZXRBcHBvaW50bWVudENhdGVnb3J5TGlzdCgpOworCisJCQkJaWYgKHJlcyA9PSBudWxsIHx8IHJlcy5zaXplKCkgPCAxKQorCQkJCQlsb2cuZGVidWcoIm5vIEFwcG9pbnRtZW50Q2F0ZWdvcmllcyBmb3VuZCIpOworCQkJCWVsc2UgeworCQkJCQlmb3IgKGludCBpID0gMDsgaSA8IHJlcy5zaXplKCk7IGkrKykgeworCQkJCQkJQXBwb2ludG1lbnRDYXRlZ29yeSBhYyA9IHJlcy5nZXQoaSk7CisJCQkJCQlsb2cuZGVidWcoImZvdW5kIGFwcENhdGVnb3J5IDogIiArIGFjLmdldE5hbWUoKSk7CisJCQkJCX0KKwkJCQl9CisKKwkJCQlyZXR1cm4gcmVzOworCQkJfSBlbHNlIHsKKwkJCQlsb2cuZXJyb3IoIkFwcG9pbnRtZW5ldENhdGVnb3J5U2VydmljZS5nZXRBcHBvaW50bWVudENhdGVnb3J5TGlzdCA6IFVzZXJMZXZlbCBFcnJvciIpOworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRBcHBvaW50bWVudENhdGVnb3J5XSIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisKKwl9CisJCisJLyoqCisJICogCisJICogQHBhcmFtIFNJRAorCSAqIEByZXR1cm4gLSB0aGUgbGlzdCBvZiBhcHBvaW50bWVudCByZW1pbmRlciB0eXBlcyBpbiBjYXNlIG9mIHN1Y2Nlc3MsIG51bGwgb3RoZXJ3aXNlCisJICovCisJcHVibGljIExpc3Q8QXBwb2ludG1lbnRSZW1pbmRlclR5cHM+IGdldEFwcG9pbnRtZW50UmVtaW5kZXJUeXBMaXN0KAorCQkJU3RyaW5nIFNJRCkgeworCQlsb2cuZGVidWcoImdldEFwcG9pbnRtZW50UmVtaW5kZXJUeXBMaXN0Iik7CisKKwkJdHJ5IHsKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tVc2VyTGV2ZWwodXNlcl9sZXZlbCkpIHsKKworCQkJCUxpc3Q8QXBwb2ludG1lbnRSZW1pbmRlclR5cHM+IHJlcyA9IGFwcG9pbnRtZW50UmVtaW5kZXJUeXBEYW9JbXBsCisJCQkJCQkuZ2V0QXBwb2ludG1lbnRSZW1pbmRlclR5cExpc3QoKTsKKworCQkJCWlmIChyZXMgPT0gbnVsbCB8fCByZXMuc2l6ZSgpIDwgMSkgeworCQkJCQlsb2cuZGVidWcoIm5vIHJlbWluZGVydHlwcyBmb3VuZCEiKTsKKwkJCQl9IGVsc2UgeworCQkJCQlmb3IgKGludCBpID0gMDsgaSA8IHJlcy5zaXplKCk7IGkrKykgeworCQkJCQkJbG9nLmRlYnVnKCJmb3VuZCByZW1pbmRlciAiICsgcmVzLmdldChpKS5nZXROYW1lKCkpOworCQkJCQl9CisJCQkJfQorCisJCQkJcmV0dXJuIHJlczsKKwkJCX0gZWxzZQorCQkJCWxvZy5kZWJ1ZygiZ2V0QXBwb2ludG1lbnRSZW1pbmRlclR5cExpc3QgIDplcnJvciAtIHdyb25nIGF1dGhsZXZlbCEiKTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbZ2V0QXBwb2ludG1lbnRSZW1pbmRlclR5cExpc3RdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9yZW1vdGUvQ2hhdFNlcnZpY2UuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9yZW1vdGUvQ2hhdFNlcnZpY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjkxN2Y4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3JlbW90ZS9DaGF0U2VydmljZS5qYXZhCkBAIC0wLDAgKzEsNDg2IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnJlbW90ZTsKKworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkNhbGVuZGFyOworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlua2VkSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlua2VkTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworaW1wb3J0IGphdmEudXRpbC5TZXQ7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jb25mZXJlbmNlLlJvb21NYW5hZ2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEudXNlci5Vc2VyTWFuYWdlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLndoaXRlYm9hcmQuRW1vdGljb25zTWFuYWdlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tLkNsaWVudDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tLlJvb207CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucmVtb3RlLnJlZDUuU2NvcGVBcHBsaWNhdGlvbkFkYXB0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucmVtb3RlLnV0aWwuU2Vzc2lvblZhcmlhYmxlc1V0aWw7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2Vzc2lvbi5JU2Vzc2lvbk1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMuc3RyaW5naGFuZGxlcnMuQ2hhdFN0cmluZzsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5yZWQ1LnNlcnZlci5hcGkuSUNsaWVudDsKK2ltcG9ydCBvcmcucmVkNS5zZXJ2ZXIuYXBpLklDb25uZWN0aW9uOworaW1wb3J0IG9yZy5yZWQ1LnNlcnZlci5hcGkuUmVkNTsKK2ltcG9ydCBvcmcucmVkNS5zZXJ2ZXIuYXBpLnNlcnZpY2UuSVBlbmRpbmdTZXJ2aWNlQ2FsbDsKK2ltcG9ydCBvcmcucmVkNS5zZXJ2ZXIuYXBpLnNlcnZpY2UuSVBlbmRpbmdTZXJ2aWNlQ2FsbGJhY2s7CitpbXBvcnQgb3JnLnJlZDUuc2VydmVyLmFwaS5zZXJ2aWNlLklTZXJ2aWNlQ2FwYWJsZUNvbm5lY3Rpb247CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5BdXRvd2lyZWQ7CisKKy8qKgorICogCisgKiBAYXV0aG9yIHNlYmF3YWduZXIKKyAqCisgKi8KK3B1YmxpYyBjbGFzcyBDaGF0U2VydmljZSBpbXBsZW1lbnRzIElQZW5kaW5nU2VydmljZUNhbGxiYWNrIHsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKENoYXRTZXJ2aWNlLmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisJCisJQEF1dG93aXJlZAorCXByaXZhdGUgU2NvcGVBcHBsaWNhdGlvbkFkYXB0ZXIgc2NvcGVBcHBsaWNhdGlvbkFkYXB0ZXI7CisJQEF1dG93aXJlZAorCXByaXZhdGUgSVNlc3Npb25NYW5hZ2VyIHNlc3Npb25NYW5hZ2VyID0gbnVsbDsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBFbW90aWNvbnNNYW5hZ2VyIGVtb3RpY29uc01hbmFnZXI7CisJQEF1dG93aXJlZAorCXByaXZhdGUgUm9vbU1hbmFnZXIgcm9vbU1hbmFnZXI7CisJQEF1dG93aXJlZAorCXByaXZhdGUgVXNlck1hbmFnZXIgdXNlck1hbmFnZXI7CisJCisJLy90aGUgb3ZlcmFsbCBjaGF0IHJvb20gaXMganVzdCBhbm90aGVyIHJvb20KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb25nIG92ZXJhbGxDaGF0Um9vbU5hbWUgPSBuZXcgTG9uZygtMSk7CisJCisJLy9udW1iZXIgb2YgaXRlbXMgaW4gdGhlIGNoYXQgcm9vbSBoaXN0b3J5CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IGNoYXRSb29tSGlzdG9yeSA9IDUwOworCQorCXByaXZhdGUgc3RhdGljIExpbmtlZEhhc2hNYXA8TG9uZyxMaXN0PEhhc2hNYXA8U3RyaW5nLE9iamVjdD4+PiBteUNoYXRzID0gbmV3IExpbmtlZEhhc2hNYXA8TG9uZyxMaXN0PEhhc2hNYXA8U3RyaW5nLE9iamVjdD4+PigpOworCQorCXByaXZhdGUgU3RyaW5nIHBhcnNlRGF0ZUFzVGltZVN0cmluZygpIHsKKwkJQ2FsZW5kYXIgY2FsPUNhbGVuZGFyLmdldEluc3RhbmNlKCk7CisJCQorCQlpbnQgaCA9IGNhbC5nZXQoQ2FsZW5kYXIuSE9VUl9PRl9EQVkpOworCQlpbnQgbSA9IGNhbC5nZXQoQ2FsZW5kYXIuTUlOVVRFKTsKKworCQlTdHJpbmcgc3RyX2gsc3RyX207CisJCWlmIChoPDEwKSAKKwkJCXN0cl9oID0gIjAiK0ludGVnZXIudG9TdHJpbmcoaCk7CisJCWVsc2UKKwkJCXN0cl9oID0gSW50ZWdlci50b1N0cmluZyhoKTsKKworCQlpZiAobTwxMCkgCisJCQlzdHJfbSA9ICIwIitJbnRlZ2VyLnRvU3RyaW5nKG0pOworCQllbHNlCisJCQlzdHJfbSA9IEludGVnZXIudG9TdHJpbmcobSk7CisJCQorCQlyZXR1cm4gc3RyX2grJzonK3N0cl9tOworCX0KKworCS8qKgorCSAqIHNlbmRzIGEgQ2hhdC1NZXNzYWdlCisJICogdG8gYWxsIG1lbWJlcnMgb2YgdGhlIENoYXRyb29tCisJICogYW5kIGFsbCBhZGRpdGlvbmFsIHVzZXJzICh3YWl0bmcgZm9yIGEgZnJlZSBlbnRyeSBmb3IgZXhhbXBsZSkKKwkgKiAKKwkgKiBAcGFyYW0gbmV3TWVzc2FnZQorCSAqIEByZXR1cm4gLSAxIGluIGNhc2Ugb2Ygc3VjY2VzcywgLTEgb3RoZXJ3aXNlCisJICovCisJQFN1cHByZXNzV2FybmluZ3MoInVuY2hlY2tlZCIpCisJcHVibGljIGludCBzZW5kTWVzc2FnZVdpdGhDbGllbnQoT2JqZWN0IG5ld01lc3NhZ2UpIHsKKwkJdHJ5IHsKKwkJCUlDb25uZWN0aW9uIGN1cnJlbnQgPSBSZWQ1LmdldENvbm5lY3Rpb25Mb2NhbCgpOworCQkJQ2xpZW50IGN1cnJlbnRDbGllbnQgPSB0aGlzLnNlc3Npb25NYW5hZ2VyLmdldENsaWVudEJ5U3RyZWFtSWQoY3VycmVudC5nZXRDbGllbnQoKS5nZXRJZCgpLCBudWxsKTsKKwkJCUxvbmcgcm9vbV9pZCA9IGN1cnJlbnRDbGllbnQuZ2V0Um9vbV9pZCgpOwkJCQorCQkJbG9nLmRlYnVnKCJyb29tX2lkOiAiICsgcm9vbV9pZCk7CisJCQkKKwkJCWlmIChyb29tX2lkID09IG51bGwpIHsKKwkJCQlyZXR1cm4gMTsgLy9UT0RPIHdlaXJkCisJCQl9CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKGN1cnJlbnRDbGllbnQuZ2V0VXNlcl9pZCgpKTsKKwkJCVJvb20gcm9vbSA9IHJvb21NYW5hZ2VyLmdldFJvb21CeUlkKHVzZXJfbGV2ZWwsIHJvb21faWQpOworCQkJQFN1cHByZXNzV2FybmluZ3MoInJhd3R5cGVzIikKKwkJCUFycmF5TGlzdCBtZXNzYWdlTWFwID0gKEFycmF5TGlzdCkgbmV3TWVzc2FnZTsKKwkJCS8vIGFkZGluZyBkZWxpbWl0ZXIgc3BhY2UsIGNhdXNlIG90aGVyd2lzZSBhbiBlbW90aWNvbiBpbiB0aGUgbGFzdAorCQkJLy8gc3RyaW5nIHdvdWxkIG5vdCBiZSBmb3VuZAorCQkJU3RyaW5nIG1lc3NhZ2VUZXh0ID0gbWVzc2FnZU1hcC5nZXQoNCkgKyAiICI7CisJCQlMaW5rZWRMaXN0PFN0cmluZ1tdPiBwYXJzZWRTdHJpbmdPYmplY3RzID0gQ2hhdFN0cmluZy5wYXJzZUNoYXRTdHJpbmcobWVzc2FnZVRleHQsIGVtb3RpY29uc01hbmFnZXIuZ2V0RW1vdGZpbGVzTGlzdCgpLCByb29tLmdldEFsbG93Rm9udFN0eWxlcygpKTsKKwkJCS8vIGxvZy5lcnJvcigicGFyc2VkU3RyaW5nT2JqZWN0cyIrcGFyc2VkU3RyaW5nT2JqZWN0cy5zaXplKCkpOworCQkJbG9nLmRlYnVnKCJzaXplOiIgKyBtZXNzYWdlTWFwLnNpemUoKSk7CisJCQltZXNzYWdlTWFwLmFkZChwYXJzZWRTdHJpbmdPYmplY3RzKTsKKwkJCW5ld01lc3NhZ2UgPSBtZXNzYWdlTWFwOwkJCQorCisJCQlib29sZWFuIG5lZWRNb2RlcmF0aW9uID0gQm9vbGVhbi52YWx1ZU9mKCIiICsgbWVzc2FnZU1hcC5nZXQoOSkpOworCQkJTGlzdDxIYXNoTWFwPFN0cmluZywgT2JqZWN0Pj4gbXlDaGF0TGlzdCA9IG15Q2hhdHMuZ2V0KHJvb21faWQpOworCQkJaWYgKG15Q2hhdExpc3QgPT0gbnVsbCkgbXlDaGF0TGlzdCA9IG5ldyBMaW5rZWRMaXN0PEhhc2hNYXA8U3RyaW5nLCBPYmplY3Q+PigpOworCQkJCisJCQlIYXNoTWFwPFN0cmluZywgT2JqZWN0PiBoc20gPSBuZXcgSGFzaE1hcDxTdHJpbmcsIE9iamVjdD4oKTsKKwkJCWhzbS5wdXQoIm1lc3NhZ2UiLCBuZXdNZXNzYWdlKTsKKwkJCVN0cmluZyBwdWJsaWNTSUQgPSAiIiArIG1lc3NhZ2VNYXAuZ2V0KDYpOworCQkJaWYgKCFwdWJsaWNTSUQuZXF1YWxzKGN1cnJlbnRDbGllbnQuZ2V0UHVibGljU0lEKCkpKSB7CisJCQkJaHNtLnB1dCgiY2xpZW50Iiwgc2Vzc2lvbk1hbmFnZXIuZ2V0Q2xpZW50QnlQdWJsaWNTSUQoIiIgKyBtZXNzYWdlTWFwLmdldCg2KSwgZmFsc2UsIG51bGwpKTsKKwkJCQkvL25lZWQgdG8gcmVtb3ZlIHVuY29uZmlybWVkIGNoYXQgbWVzc2FnZSBpZiBhbnkKKwkJCQlmb3IgKGludCBpID0gbXlDaGF0TGlzdC5zaXplKCkgLSAxOyBpID4gLTE7IC0taSkgeworCQkJCQlDbGllbnQgbXNnQ2xpZW50ID0gKENsaWVudClteUNoYXRMaXN0LmdldChpKS5nZXQoImNsaWVudCIpOworCQkJCQlAU3VwcHJlc3NXYXJuaW5ncygicmF3dHlwZXMiKQorCQkJCQlMaXN0IG1zZ0xpc3QgPSAoTGlzdClteUNoYXRMaXN0LmdldChpKS5nZXQoIm1lc3NhZ2UiKTsKKwkJCQkJaWYgKHB1YmxpY1NJRC5lcXVhbHMobXNnQ2xpZW50LmdldFB1YmxpY1NJRCgpKQorCQkJCQkJJiYgKCIiICsgbXNnTGlzdC5nZXQoNCkpLmVxdWFscyhtZXNzYWdlTWFwLmdldCg0KSkKKwkJCQkJCSYmICgiIiArIG1zZ0xpc3QuZ2V0KDEpKS5lcXVhbHMobWVzc2FnZU1hcC5nZXQoMSkpCisJCQkJCQkmJiBCb29sZWFuLnZhbHVlT2YoIiIgKyBtc2dMaXN0LmdldCg5KSkpIHsKKwkJCQkJCW15Q2hhdExpc3QucmVtb3ZlKGkpOworCQkJCQkJYnJlYWs7CisJCQkJCX0KKwkJCQl9CisJCQkJCisJCQl9IGVsc2UgeworCQkJCS8vIGFkZCBzZXJ2ZXIgdGltZQorCQkJCW1lc3NhZ2VNYXAuc2V0KDEsIHBhcnNlRGF0ZUFzVGltZVN0cmluZygpKTsKKwkJCQloc20ucHV0KCJjbGllbnQiLCBjdXJyZW50Q2xpZW50KTsKKwkJCX0KKworCQkJaWYgKG15Q2hhdExpc3Quc2l6ZSgpID09IGNoYXRSb29tSGlzdG9yeSkgbXlDaGF0TGlzdC5yZW1vdmUoMCk7CisJCQlteUNoYXRMaXN0LmFkZChoc20pOworCQkJbXlDaGF0cy5wdXQocm9vbV9pZCwgbXlDaGF0TGlzdCk7CisJCQlsb2cuZGVidWcoIlNFVCBDSEFUUk9PTTogIiArIHJvb21faWQpOworCisJCQkvL2Jyb2FkY2FzdCB0byBldmVyeWJvZHkgaW4gdGhlIHJvb20vZG9tYWluCisJCQlDb2xsZWN0aW9uPFNldDxJQ29ubmVjdGlvbj4+IGNvbkNvbGxlY3Rpb24gPSBjdXJyZW50LmdldFNjb3BlKCkuZ2V0Q29ubmVjdGlvbnMoKTsKKwkJCWZvciAoU2V0PElDb25uZWN0aW9uPiBjb25zZXQgOiBjb25Db2xsZWN0aW9uKSB7CisgICAgCQkJZm9yIChJQ29ubmVjdGlvbiBjb25uIDogY29uc2V0KSB7CisgICAgCQkJCWlmIChjb25uICE9IG51bGwpIHsKKyAgICAJCQkJCWlmIChjb25uIGluc3RhbmNlb2YgSVNlcnZpY2VDYXBhYmxlQ29ubmVjdGlvbikgeworICAgIAkJCQkJCQorICAgIAkJCQkJCUNsaWVudCByY2wgPSB0aGlzLnNlc3Npb25NYW5hZ2VyLmdldENsaWVudEJ5U3RyZWFtSWQoY29ubi5nZXRDbGllbnQoKS5nZXRJZCgpLCBudWxsKTsKKyAgICAJCQkJCQkKKyAgICAJCQkJCQlpZiAocmNsID09IG51bGwpIHsKKyAgICAJCQkJCQkJY29udGludWU7CisgICAgCQkJCQkJfQorICAgIAkJCQkJCWlmIChyY2wuZ2V0SXNBVkNsaWVudCgpKSB7CisgICAgCQkJCQkJCWNvbnRpbnVlOworICAgIAkJCQkJCX0KKyAgICAJCQkJCQlpZiAocmNsLmdldElzU2NyZWVuQ2xpZW50KCkgIT0gbnVsbCAmJiByY2wuZ2V0SXNTY3JlZW5DbGllbnQoKSkgeworCSAgICAJCQkJCQljb250aW51ZTsKKwkgICAgCQkJCQl9CisgICAgCQkJCQkJaWYgKG5lZWRNb2RlcmF0aW9uICYmIEJvb2xlYW4uVFJVRSAhPSByY2wuZ2V0SXNNb2QoKSAmJiBCb29sZWFuLlRSVUUgIT0gcmNsLmdldElzU3VwZXJNb2RlcmF0b3IoKSkgeworICAgIAkJCQkJCQljb250aW51ZTsKKyAgICAJCQkJCQl9CisJCQkJCQkJKChJU2VydmljZUNhcGFibGVDb25uZWN0aW9uKSBjb25uKS5pbnZva2UoInNlbmRWYXJzVG9NZXNzYWdlV2l0aENsaWVudCIsbmV3IE9iamVjdFtdIHsgaHNtIH0sIHRoaXMpOworCSAgICAJCQkgCX0KKwkgICAgCQkJfQorICAgIAkJCX0KKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbQ2hhdFNlcnZpY2Ugc2VuZE1lc3NhZ2VXaXRoQ2xpZW50XSAiLGVycik7CisJCQlyZXR1cm4gLTE7CisJCX0KKwkJcmV0dXJuIDE7CisJfQorCisJLy9GSVhNRSBjb3B5L3Bhc3QgbmVlZCB0byBiZSByZW1vdmVkCisJQFN1cHByZXNzV2FybmluZ3MoInVuY2hlY2tlZCIpCisJcHVibGljIGludCBzZW5kTWVzc2FnZVdpdGhDbGllbnRCeVB1YmxpY1NJRChPYmplY3QgbmV3TWVzc2FnZSwgU3RyaW5nIHB1YmxpY1NJRCkgeworCQl0cnkgeworCQkJSUNvbm5lY3Rpb24gY3VycmVudCA9IFJlZDUuZ2V0Q29ubmVjdGlvbkxvY2FsKCk7CisJCQlDbGllbnQgY3VycmVudENsaWVudCA9IHRoaXMuc2Vzc2lvbk1hbmFnZXIuZ2V0Q2xpZW50QnlTdHJlYW1JZChjdXJyZW50LmdldENsaWVudCgpLmdldElkKCksIG51bGwpOworCQkJTG9uZyByb29tX2lkID0gY3VycmVudENsaWVudC5nZXRSb29tX2lkKCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKGN1cnJlbnRDbGllbnQuZ2V0VXNlcl9pZCgpKTsKKwkJCVJvb20gcm9vbSA9IHJvb21NYW5hZ2VyLmdldFJvb21CeUlkKHVzZXJfbGV2ZWwsIHJvb21faWQpOworCQkJbG9nLmRlYnVnKCJyb29tX2lkOiAiICsgcm9vbV9pZCk7CisKKwkJCUBTdXBwcmVzc1dhcm5pbmdzKCJyYXd0eXBlcyIpCisJCQlBcnJheUxpc3QgbWVzc2FnZU1hcCA9IChBcnJheUxpc3QpIG5ld01lc3NhZ2U7CisJCQkvLyBhZGRpbmcgZGVsaW1pdGVyIHNwYWNlLCBjYXVzZSBvdGhlcndpc2UgYW4gZW1vdGljb24gaW4gdGhlIGxhc3QKKwkJCS8vIHN0cmluZyB3b3VsZCBub3QgYmUgZm91bmQKKwkJCVN0cmluZyBtZXNzYWdlVGV4dCA9IG1lc3NhZ2VNYXAuZ2V0KDQpLnRvU3RyaW5nKCkgKyAiICI7CisJCQkvLyBhZGQgc2VydmVyIHRpbWUKKwkJCW1lc3NhZ2VNYXAuc2V0KDEsIHBhcnNlRGF0ZUFzVGltZVN0cmluZygpKTsKKwkJCUxpbmtlZExpc3Q8U3RyaW5nW10+IHBhcnNlZFN0cmluZ09iamVjdHMgPSBDaGF0U3RyaW5nLnBhcnNlQ2hhdFN0cmluZyhtZXNzYWdlVGV4dCwgZW1vdGljb25zTWFuYWdlci5nZXRFbW90ZmlsZXNMaXN0KCksIHJvb20uZ2V0QWxsb3dGb250U3R5bGVzKCkpOworCQkJLy8gbG9nLmVycm9yKCJwYXJzZWRTdHJpbmdPYmplY3RzIitwYXJzZWRTdHJpbmdPYmplY3RzLnNpemUoKSk7CisJCQlsb2cuZGVidWcoInNpemU6IiArIG1lc3NhZ2VNYXAuc2l6ZSgpKTsKKwkJCW1lc3NhZ2VNYXAuYWRkKHBhcnNlZFN0cmluZ09iamVjdHMpOworCQkJbmV3TWVzc2FnZSA9IG1lc3NhZ2VNYXA7CisKKwkJCUhhc2hNYXA8U3RyaW5nLCBPYmplY3Q+IGhzbSA9IG5ldyBIYXNoTWFwPFN0cmluZywgT2JqZWN0PigpOworCQkJaHNtLnB1dCgiY2xpZW50IiwgY3VycmVudENsaWVudCk7CisJCQloc20ucHV0KCJtZXNzYWdlIiwgbmV3TWVzc2FnZSk7CisKKwkJCS8vIGJyb2FkY2FzdCB0byBldmVyeWJvZHkgaW4gdGhlIHJvb20vZG9tYWluCisJCQlDb2xsZWN0aW9uPFNldDxJQ29ubmVjdGlvbj4+IGNvbkNvbGxlY3Rpb24gPSBjdXJyZW50LmdldFNjb3BlKCkuZ2V0Q29ubmVjdGlvbnMoKTsKKwkJCWZvciAoU2V0PElDb25uZWN0aW9uPiBjb25zZXQgOiBjb25Db2xsZWN0aW9uKSB7CisJCQkJZm9yIChJQ29ubmVjdGlvbiBjb25uIDogY29uc2V0KSB7CisJCQkJCWlmIChjb25uICE9IG51bGwpIHsKKwkJCQkJCWlmIChjb25uIGluc3RhbmNlb2YgSVNlcnZpY2VDYXBhYmxlQ29ubmVjdGlvbikgeworICAgIAkJCQkJCUlDbGllbnQgY2xpZW50ID0gY29ubi5nZXRDbGllbnQoKTsKKwkJCQkJCQlpZiAoU2Vzc2lvblZhcmlhYmxlc1V0aWwuaXNTY3JlZW5DbGllbnQoY2xpZW50KSkgeworCQkJCQkJCQkvLyBzY3JlZW4gc2hhcmluZyBjbGllbnRzIGRvIG5vdCByZWNlaXZlIGV2ZW50cworCQkJCQkJCQljb250aW51ZTsKKwkJCQkJCQl9IGVsc2UgaWYgKFNlc3Npb25WYXJpYWJsZXNVdGlsLmlzQVZDbGllbnQoY2xpZW50KSkgeworCQkJCQkJCQkvLyBBVkNsaWVudHMgb3IgcG90ZW50aWFsIEFWQ2xpZW50cyBkbyBub3QgcmVjZWl2ZSBldmVudHMKKwkJCQkJCQkJY29udGludWU7CisJCQkJCQkJfQorCisJCQkJCQkJaWYgKFNlc3Npb25WYXJpYWJsZXNVdGlsLmdldFB1YmxpY1NJRChjbGllbnQpLmVxdWFscyhwdWJsaWNTSUQpCisJCQkJCQkJCQl8fCBTZXNzaW9uVmFyaWFibGVzVXRpbC5nZXRQdWJsaWNTSUQoY2xpZW50KS5lcXVhbHMoCisJCQkJCQkJCQkJCWN1cnJlbnRDbGllbnQuZ2V0UHVibGljU0lEKCkpKSB7CisJCQkJCQkJCSgoSVNlcnZpY2VDYXBhYmxlQ29ubmVjdGlvbikgY29ubikuaW52b2tlKAorCQkJCQkJCQkJInNlbmRWYXJzVG9NZXNzYWdlV2l0aENsaWVudCIsCisJCQkJCQkJCQkJbmV3IE9iamVjdFtdIHsgaHNtIH0sIHRoaXMpOworCQkJCQkJCX0KKwkJCQkJCX0KKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbQ2hhdFNlcnZpY2Ugc2VuZE1lc3NhZ2VXaXRoQ2xpZW50XSAiLCBlcnIpOworCQkJcmV0dXJuIC0xOworCQl9CisJCXJldHVybiAxOworCX0KKworCXB1YmxpYyBMaXN0PEhhc2hNYXA8U3RyaW5nLE9iamVjdD4+IGNsZWFyQ2hhdCgpIHsKKwkJdHJ5IHsKKwkJCUlDb25uZWN0aW9uIGN1cnJlbnQgPSBSZWQ1LmdldENvbm5lY3Rpb25Mb2NhbCgpOworCQkJQ2xpZW50IGN1cnJlbnRDbGllbnQgPSB0aGlzLnNlc3Npb25NYW5hZ2VyLmdldENsaWVudEJ5U3RyZWFtSWQoY3VycmVudC5nZXRDbGllbnQoKS5nZXRJZCgpLCBudWxsKTsKKwkJCUxvbmcgcm9vbV9pZCA9IGN1cnJlbnRDbGllbnQuZ2V0Um9vbV9pZCgpOworCQkJCisJCQlMb25nIGNoYXRyb29tID0gcm9vbV9pZDsKKwkJCWxvZy5kZWJ1ZygiIyMjIEdFVCBDSEFUUk9PTTogIitjaGF0cm9vbSk7CisJCQkKKwkJCUxpc3Q8SGFzaE1hcDxTdHJpbmcsT2JqZWN0Pj4gbXlDaGF0TGlzdCA9IG15Q2hhdHMuZ2V0KGNoYXRyb29tKTsKKwkJCW15Q2hhdExpc3QgPSBuZXcgTGlua2VkTGlzdDxIYXNoTWFwPFN0cmluZyxPYmplY3Q+PigpOworCQkJCisJCQlteUNoYXRzLnB1dChjaGF0cm9vbSxteUNoYXRMaXN0KTsKKwkJCQorCQkJSGFzaE1hcDxTdHJpbmcsT2JqZWN0PiBoc20gPSBuZXcgSGFzaE1hcDxTdHJpbmcsT2JqZWN0PigpOworCQkJCisJCQlzY29wZUFwcGxpY2F0aW9uQWRhcHRlci5zeW5jTWVzc2FnZVRvQ3VycmVudFNjb3BlKCJjbGVhckNoYXRDb250ZW50IiwgaHNtLCB0cnVlKTsKKwkJCQorCQkJcmV0dXJuIG15Q2hhdExpc3Q7CisJCQkKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbY2xlYXJDaGF0XSAiLGVycik7CisJCQlyZXR1cm4gbnVsbDsKKwkJfQorCX0KKwkKKwlwdWJsaWMgTGlzdDxIYXNoTWFwPFN0cmluZyxPYmplY3Q+PiBnZXRSb29tQ2hhdEhpc3RvcnkoKSB7CisJCXRyeSB7CisJCQlJQ29ubmVjdGlvbiBjdXJyZW50ID0gUmVkNS5nZXRDb25uZWN0aW9uTG9jYWwoKTsKKwkJCUNsaWVudCBjdXJyZW50Q2xpZW50ID0gdGhpcy5zZXNzaW9uTWFuYWdlci5nZXRDbGllbnRCeVN0cmVhbUlkKGN1cnJlbnQuZ2V0Q2xpZW50KCkuZ2V0SWQoKSwgbnVsbCk7CisJCQlMb25nIHJvb21faWQgPSBjdXJyZW50Q2xpZW50LmdldFJvb21faWQoKTsKKwkJCQorCQkJbG9nLmRlYnVnKCJHRVQgQ0hBVFJPT006ICIgKyByb29tX2lkKTsKKwkJCQorCQkJTGlzdDxIYXNoTWFwPFN0cmluZyxPYmplY3Q+PiBteUNoYXRMaXN0ID0gbXlDaGF0cy5nZXQocm9vbV9pZCk7CisJCQlpZiAobXlDaGF0TGlzdD09bnVsbCkgbXlDaGF0TGlzdCA9IG5ldyBMaW5rZWRMaXN0PEhhc2hNYXA8U3RyaW5nLE9iamVjdD4+KCk7CisJCQkKKwkJCWlmIChCb29sZWFuLlRSVUUgIT0gY3VycmVudENsaWVudC5nZXRJc01vZCgpICYmIEJvb2xlYW4uVFJVRSAhPSBjdXJyZW50Q2xpZW50LmdldElzU3VwZXJNb2RlcmF0b3IoKSkgeworCQkJCS8vY3VycmVudCB1c2VyIGlzIG5vdCBtb2RlcmF0b3IsIGNoYXQgaGlzdG9yeSBuZWVkIHRvIGJlIGZpbHRlcmVkCisJCQkJTGlzdDxIYXNoTWFwPFN0cmluZyxPYmplY3Q+PiB0bXBDaGF0TGlzdCA9IG5ldyBMaW5rZWRMaXN0PEhhc2hNYXA8U3RyaW5nLE9iamVjdD4+KG15Q2hhdExpc3QpOworCQkJCWZvciAoaW50IGkgPSB0bXBDaGF0TGlzdC5zaXplKCkgLSAxOyBpID4gLTE7IC0taSkgeworCQkJCQlAU3VwcHJlc3NXYXJuaW5ncygicmF3dHlwZXMiKQorCQkJCQlMaXN0IG1zZ0xpc3QgPSAoTGlzdCl0bXBDaGF0TGlzdC5nZXQoaSkuZ2V0KCJtZXNzYWdlIik7CisJCQkJCWlmIChCb29sZWFuLnZhbHVlT2YoIiIgKyBtc2dMaXN0LmdldCg5KSkpIHsgLy9uZWVkTW9kZXJhdGlvbgorCQkJCQkJdG1wQ2hhdExpc3QucmVtb3ZlKGkpOworCQkJCQl9CisJCQkJfQorCQkJCW15Q2hhdExpc3QgPSB0bXBDaGF0TGlzdDsKKwkJCX0KKwkJCQorCQkJcmV0dXJuIG15Q2hhdExpc3Q7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2dldFJvb21DaGF0SGlzdG9yeV0gIixlcnIpOworCQkJcmV0dXJuIG51bGw7CisJCX0KKwl9CisJCisJLyoqCisJICogZ2V0cyB0aGUgY2hhdCBoaXN0b3J5IGJ5IHN0cmluZyBmb3Igbm9uLWNvbmZlcmVuY2UtY2xpZW50cworCSAqIAorCSAqIEBwYXJhbSByb29tX2lkCisJICogQHJldHVybiAtIGNoYXQgaGlzdG9yeSBvZiB0aGUgcm9vbSBnaXZlbiwgbnVsbCBpbiBjYXNlIG9mIGV4Y2VwdGlvbgorCSAqLworCXB1YmxpYyBMaXN0PEhhc2hNYXA8U3RyaW5nLE9iamVjdD4+IGdldFJvb21DaGF0SGlzdG9yeUJ5U3RyaW5nKExvbmcgcm9vbV9pZCkgeworCQl0cnkgeworCQkJCisJCQlMb25nIGNoYXRyb29tID0gcm9vbV9pZDsKKwkJCWxvZy5kZWJ1ZygiR0VUIENIQVRST09NOiAiK2NoYXRyb29tKTsKKwkJCQorCQkJTGlzdDxIYXNoTWFwPFN0cmluZyxPYmplY3Q+PiBteUNoYXRMaXN0ID0gbXlDaGF0cy5nZXQoY2hhdHJvb20pOworCQkJaWYgKG15Q2hhdExpc3Q9PW51bGwpIG15Q2hhdExpc3QgPSBuZXcgTGlua2VkTGlzdDxIYXNoTWFwPFN0cmluZyxPYmplY3Q+PigpOwkKKwkJCQorCQkJcmV0dXJuIG15Q2hhdExpc3Q7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2dldFJvb21DaGF0SGlzdG9yeV0gIixlcnIpOworCQkJcmV0dXJuIG51bGw7CisJCX0KKwl9CQorCQorCXB1YmxpYyB2b2lkIHJlc3VsdFJlY2VpdmVkKElQZW5kaW5nU2VydmljZUNhbGwgYXJnMCkgeworCQkvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIG1ldGhvZCBzdHViCisJCWxvZy5lcnJvcigicmVzdWx0UmVjZWl2ZWQgQ2hhdFNlcnZpY2UgIithcmcwKTsKKwl9CisJCisJLyoqCisJICogc2VuZHMgYSBtZXNzYWdlIHRvIGFsbCBjb25uZWN0ZWQgdXNlcnMKKwkgKiAKKwkgKiBAcGFyYW0gbmV3TWVzc2FnZQorCSAqIEByZXR1cm4gLSAxIGluIGNhc2Ugb2Ygc3VjY2VzcywgLTEgb3RoZXJ3aXNlCisJICovCisJQFN1cHByZXNzV2FybmluZ3MoeyAicmF3dHlwZXMiLCAidW5jaGVja2VkIiB9KQorCXB1YmxpYyBpbnQgc2VuZE1lc3NhZ2VUb092ZXJhbGxDaGF0KE9iamVjdCBuZXdNZXNzYWdlKSB7CisJCXRyeSB7CisJCQlJQ29ubmVjdGlvbiBjdXJyZW50ID0gUmVkNS5nZXRDb25uZWN0aW9uTG9jYWwoKTsKKwkJCUNsaWVudCBjdXJyZW50Q2xpZW50ID0gdGhpcy5zZXNzaW9uTWFuYWdlci5nZXRDbGllbnRCeVN0cmVhbUlkKGN1cnJlbnQuZ2V0Q2xpZW50KCkuZ2V0SWQoKSwgbnVsbCk7CisJCQkKKwkJCS8vbG9nLmVycm9yKG5ld01lc3NhZ2UuZ2V0Q2xhc3MoKS5nZXROYW1lKCkpOworCQkJQXJyYXlMaXN0IG1lc3NhZ2VNYXAgPSAoQXJyYXlMaXN0KSBuZXdNZXNzYWdlOworCQkJLy9hZGRpbmcgZGVsaW1pdGVyIHNwYWNlLCBjYXVzZSBvdGhlcndpc2UgYW4gZW1vdGljb24gaW4gdGhlIGxhc3Qgc3RyaW5nIHdvdWxkIG5vdCBiZSBmb3VuZAorCQkJU3RyaW5nIG1lc3NhZ2VUZXh0ID0gbWVzc2FnZU1hcC5nZXQoNCkudG9TdHJpbmcoKSsiICI7CisJCQkvL2xvZy5lcnJvcigibWVzc2FnZVRleHQiK21lc3NhZ2VUZXh0KTsKKwkJCS8vYWRkIHNlcnZlciB0aW1lCisJCQltZXNzYWdlTWFwLnNldCgxLHBhcnNlRGF0ZUFzVGltZVN0cmluZygpKTsKKwkJCUxpbmtlZExpc3Q8U3RyaW5nW10+IHBhcnNlZFN0cmluZ09iamVjdHMgPSBDaGF0U3RyaW5nLnBhcnNlQ2hhdFN0cmluZyhtZXNzYWdlVGV4dCwgZW1vdGljb25zTWFuYWdlci5nZXRFbW90ZmlsZXNMaXN0KCksIHRydWUpOworCQkJLy9sb2cuZXJyb3IoInBhcnNlZFN0cmluZ09iamVjdHMiK3BhcnNlZFN0cmluZ09iamVjdHMuc2l6ZSgpKTsKKwkJCWxvZy5kZWJ1Zygic2l6ZToiICsgbWVzc2FnZU1hcC5zaXplKCkpOworCQkJbWVzc2FnZU1hcC5hZGQocGFyc2VkU3RyaW5nT2JqZWN0cyk7CisJCQluZXdNZXNzYWdlID0gbWVzc2FnZU1hcDsKKwkJCQorCQkJCisJCQlIYXNoTWFwPFN0cmluZyxPYmplY3Q+IGhzbSA9IG5ldyBIYXNoTWFwPFN0cmluZyxPYmplY3Q+KCk7CisJCQloc20ucHV0KCJjbGllbnQiLCBjdXJyZW50Q2xpZW50KTsKKwkJCWhzbS5wdXQoIm1lc3NhZ2UiLCBuZXdNZXNzYWdlKTsKKwkJCQorCQkJTGlzdDxIYXNoTWFwPFN0cmluZyxPYmplY3Q+PiBteUNoYXRMaXN0ID0gbXlDaGF0cy5nZXQob3ZlcmFsbENoYXRSb29tTmFtZSk7CisJCQlpZiAobXlDaGF0TGlzdD09bnVsbCkgbXlDaGF0TGlzdCA9IG5ldyBMaW5rZWRMaXN0PEhhc2hNYXA8U3RyaW5nLE9iamVjdD4+KCk7CisJCQkKKwkJCWlmIChteUNoYXRMaXN0LnNpemUoKT09Y2hhdFJvb21IaXN0b3J5KSBteUNoYXRMaXN0LnJlbW92ZSgwKTsKKwkJCW15Q2hhdExpc3QuYWRkKGhzbSk7CisJCQlteUNoYXRzLnB1dChvdmVyYWxsQ2hhdFJvb21OYW1lLG15Q2hhdExpc3QpOworCQkJCisJCQlsb2cuZGVidWcoIlNFVCBDSEFUUk9PTTogIitvdmVyYWxsQ2hhdFJvb21OYW1lKTsKKwkJCQorCQkJc2NvcGVBcHBsaWNhdGlvbkFkYXB0ZXIuc3luY01lc3NhZ2VUb0N1cnJlbnRTY29wZSgic2VuZFZhcnNUb092ZXJhbGxDaGF0IiwgaHNtLCB0cnVlKTsKKwkJCQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltDaGF0U2VydmljZSBzZW5kTWVzc2FnZVRvT3ZlcmFsbENoYXRdICIsZXJyKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCQlyZXR1cm4gMTsKKwl9CisJCisJCisJLyoqCisJICogZ2V0cyB0aGUgY2hhdCBoaXN0b3J5IG9mIG92ZXJhbGxDaGF0CisJICogCisJICogQHJldHVybiAtIG92ZXJhbGwgY2hhdCBoaXN0b3J5CisJICovCisJcHVibGljIExpc3Q8SGFzaE1hcDxTdHJpbmcsT2JqZWN0Pj4gZ2V0T3ZlcmFsbENoYXRIaXN0b3J5KCkgeworCQl0cnkgeworCQkJCisJCQlMaXN0PEhhc2hNYXA8U3RyaW5nLE9iamVjdD4+IG15Q2hhdExpc3QgPSBteUNoYXRzLmdldChvdmVyYWxsQ2hhdFJvb21OYW1lKTsKKwkJCWlmIChteUNoYXRMaXN0PT1udWxsKSBteUNoYXRMaXN0ID0gbmV3IExpbmtlZExpc3Q8SGFzaE1hcDxTdHJpbmcsT2JqZWN0Pj4oKTsJCisJCQkKKwkJCXJldHVybiBteUNoYXRMaXN0OworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRSb29tQ2hhdEhpc3RvcnldICIsZXJyKTsKKwkJCXJldHVybiBudWxsOworCQl9CisJfQkKKwkKKwkvKioKKwkgKiBjbGVhciB0aGUgb3ZlcmFsbENoYXQgaGlzdG9yeQorCSAqIEByZXR1cm4gLSBhbGwgbWVzc2FnZXMgYmVpbmcgY2xlYW5lZCwgbnVsbCBpbiBjYXNlIG9mIGVycm9yCisJICovCisJcHVibGljIExpc3Q8SGFzaE1hcDxTdHJpbmcsT2JqZWN0Pj4gY2xlYXJPdmVyYWxsQ2hhdCgpIHsKKwkJdHJ5IHsKKwkJCQorCQkJTGlzdDxIYXNoTWFwPFN0cmluZyxPYmplY3Q+PiBteUNoYXRMaXN0ID0gbXlDaGF0cy5nZXQob3ZlcmFsbENoYXRSb29tTmFtZSk7CisJCQlteUNoYXRMaXN0ID0gbmV3IExpbmtlZExpc3Q8SGFzaE1hcDxTdHJpbmcsT2JqZWN0Pj4oKTsKKwkJCQorCQkJbXlDaGF0cy5wdXQob3ZlcmFsbENoYXRSb29tTmFtZSxteUNoYXRMaXN0KTsKKwkJCQorCQkJLy9TZW5kIGV2ZW50IHRvIGNsZWFyIHRvIGFsbCBwYXJ0aWNpcGFudHMKKwkJCU1hcDxJbnRlZ2VyLFN0cmluZz4gbmV3TWVzc2FnZSA9IG5ldyBIYXNoTWFwPEludGVnZXIsU3RyaW5nPigpOworCQkJbmV3TWVzc2FnZS5wdXQoMCwgImNsZWFyT3ZlcmFsbENoYXRIaXN0b3J5Iik7CisJCQlzY29wZUFwcGxpY2F0aW9uQWRhcHRlci5zZW5kTWVzc2FnZVRvTWVtYmVycyhuZXdNZXNzYWdlKTsKKwkJCQorCQkJcmV0dXJuIG15Q2hhdExpc3Q7CisJCQkKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbY2xlYXJDaGF0XSAiLGVycik7CisJCQlyZXR1cm4gbnVsbDsKKwkJfQorCX0JCisJCisJcHVibGljIExpbmtlZExpc3Q8TGlua2VkTGlzdDxTdHJpbmc+PiBnZXRBbGxQdWJsaWNFbW90aWNvbnMoKXsKKwkJdHJ5IHsKKwkJCUxpbmtlZExpc3Q8TGlua2VkTGlzdDxTdHJpbmc+PiBwdWJsaWNlbW90ZXMgPSBuZXcgTGlua2VkTGlzdDxMaW5rZWRMaXN0PFN0cmluZz4+KCk7CisJCQlMaW5rZWRMaXN0PExpbmtlZExpc3Q8U3RyaW5nPj4gYWxsRW1vdGVzID0gZW1vdGljb25zTWFuYWdlci5nZXRFbW90ZmlsZXNMaXN0KCk7CisJCQlmb3IgKEl0ZXJhdG9yPExpbmtlZExpc3Q8U3RyaW5nPj4gaXRlciA9IGFsbEVtb3Rlcy5pdGVyYXRvcigpO2l0ZXIuaGFzTmV4dCgpOyl7CisJCQkJTGlua2VkTGlzdDxTdHJpbmc+IGVtb3QgPSBpdGVyLm5leHQoKTsKKwkJCQlMaW5rZWRMaXN0PFN0cmluZz4gZW1vdFB1YiA9IG5ldyBMaW5rZWRMaXN0PFN0cmluZz4oKTsKKwkJCQlpZiAoZW1vdC5nZXQoKGVtb3Quc2l6ZSgpLTEpKS5lcXVhbHMoInkiKSl7CisJCQkJCWVtb3RQdWIuYWRkKGVtb3QuZ2V0KDApKTsKKwkJCQkJZW1vdFB1Yi5hZGQoZW1vdC5nZXQoMSkucmVwbGFjZSgiXFwiLCAiIikpOworCQkJCQlpZiAoZW1vdC5zaXplKCk+NCkgeworCQkJCQkJZW1vdFB1Yi5hZGQoZW1vdC5nZXQoMikucmVwbGFjZSgiXFwiLCAiIikpOworCQkJCQkJZW1vdFB1Yi5hZGQoZW1vdC5nZXQoMykpOworCQkJCQkJZW1vdFB1Yi5hZGQoZW1vdC5nZXQoNCkpOworCQkJCQl9IGVsc2UgeworCQkJCQkJZW1vdFB1Yi5hZGQoZW1vdC5nZXQoMikpOworCQkJCQkJZW1vdFB1Yi5hZGQoZW1vdC5nZXQoMykpOworCQkJCQl9CisJCQkJCXB1YmxpY2Vtb3Rlcy5hZGQoZW1vdFB1Yik7CisJCQkJfQorCQkJfQorCQkJcmV0dXJuIHB1YmxpY2Vtb3RlczsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbZ2V0QWxsUHVibGljRW1vdGljb25zXSAiLGVycik7CisJCQlyZXR1cm4gbnVsbDsKKwkJfQorCX0KKwkKKwlwdWJsaWMgTGlua2VkSGFzaE1hcDxTdHJpbmcsTGlua2VkTGlzdDxDbGllbnQ+PiBnZXRDaGF0T3ZlcmFsbFVzZXJzKCl7CisJCXRyeSB7CisJCQlMaW5rZWRIYXNoTWFwPFN0cmluZyxMaW5rZWRMaXN0PENsaWVudD4+IGNsaWVudExpc3QgPSBuZXcgTGlua2VkSGFzaE1hcDxTdHJpbmcsTGlua2VkTGlzdDxDbGllbnQ+PigpOworCQkJTGlua2VkTGlzdDxDbGllbnQ+IGd1ZXN0TGlzdCA9IG5ldyBMaW5rZWRMaXN0PENsaWVudD4oKTsKKwkJCUxpbmtlZExpc3Q8Q2xpZW50PiBvdmVyYWxsTGlzdCA9IG5ldyBMaW5rZWRMaXN0PENsaWVudD4oKTsKKwkJCQorCQkJZm9yIChDbGllbnQgcmNsIDogc2Vzc2lvbk1hbmFnZXIuZ2V0Q2xpZW50cygpKSB7CisJCQkJaWYgKHJjbC5nZXRVc2VyX2lkKCk9PW51bGwgfHwgcmNsLmdldFVzZXJfaWQoKTw9MCkgeworCQkJCQlndWVzdExpc3QuYWRkKHJjbCk7CisJCQkJfSBlbHNlIHsKKwkJCQkJb3ZlcmFsbExpc3QuYWRkKHJjbCk7CisJCQkJfQorCQkJfQorCQkJCisJCQljbGllbnRMaXN0LnB1dCgiZ3Vlc3RMaXN0IiwgZ3Vlc3RMaXN0KTsgCisJCQljbGllbnRMaXN0LnB1dCgib3ZlcmFsbExpc3QiLCBvdmVyYWxsTGlzdCk7IAorCQkJcmV0dXJuIGNsaWVudExpc3Q7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2dldENoYXRPdmVyYWxsVXNlcnNdIixlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKwkKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9yZW1vdGUvQ29uZmVyZW5jZUxpYnJhcnkuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9yZW1vdGUvQ29uZmVyZW5jZUxpYnJhcnkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMjk5MTNhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3JlbW90ZS9Db25mZXJlbmNlTGlicmFyeS5qYXZhCkBAIC0wLDAgKzEsMzI0IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnJlbW90ZTsKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5NYXA7CitpbXBvcnQgamF2YS51dGlsLlNldDsKKworaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy50cmFuc2FjdGlvbi51dGlsLkZpbGVIZWxwZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuQXV0aExldmVsVXRpbDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLlNlc3Npb25kYXRhRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuZmlsZS5kYW8uRmlsZUV4cGxvcmVySXRlbURhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmZpbGUuZHRvLkxpYnJhcnlQcmVzZW50YXRpb247CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLlVzZXJNYW5hZ2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEud2hpdGVib2FyZC5XaGl0ZWJvYXJkTWFuYWdlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kb2N1bWVudHMuTGlicmFyeUNoYXJ0TG9hZGVyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRvY3VtZW50cy5MaWJyYXJ5RG9jdW1lbnRDb252ZXJ0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZG9jdW1lbnRzLkxpYnJhcnlXbWxMb2FkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZG9jdW1lbnRzLkxvYWRMaWJyYXJ5UHJlc2VudGF0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmZpbGVzLkZpbGVFeHBsb3Jlckl0ZW07CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbS5DbGllbnQ7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2Vzc2lvbi5JU2Vzc2lvbk1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMuT21GaWxlSGVscGVyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLmNyeXB0Lk1ENTsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5yZWQ1LnNlcnZlci5hcGkuSUNvbm5lY3Rpb247CitpbXBvcnQgb3JnLnJlZDUuc2VydmVyLmFwaS5SZWQ1OworaW1wb3J0IG9yZy5yZWQ1LnNlcnZlci5hcGkuc2VydmljZS5JUGVuZGluZ1NlcnZpY2VDYWxsOworaW1wb3J0IG9yZy5yZWQ1LnNlcnZlci5hcGkuc2VydmljZS5JUGVuZGluZ1NlcnZpY2VDYWxsYmFjazsKK2ltcG9ydCBvcmcucmVkNS5zZXJ2ZXIuYXBpLnNlcnZpY2UuSVNlcnZpY2VDYXBhYmxlQ29ubmVjdGlvbjsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKKworLyoqCisgKiAKKyAqIEBhdXRob3Igc3dhZ25lcgorICogCisgKi8KK3B1YmxpYyBjbGFzcyBDb25mZXJlbmNlTGlicmFyeSBpbXBsZW1lbnRzIElQZW5kaW5nU2VydmljZUNhbGxiYWNrIHsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoCisJCQlDb25mZXJlbmNlTGlicmFyeS5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCisJQEF1dG93aXJlZAorCXByaXZhdGUgSVNlc3Npb25NYW5hZ2VyIHNlc3Npb25NYW5hZ2VyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFNlc3Npb25kYXRhRGFvIHNlc3Npb25kYXRhRGFvOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFVzZXJNYW5hZ2VyIHVzZXJNYW5hZ2VyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEZpbGVFeHBsb3Jlckl0ZW1EYW8gZmlsZUV4cGxvcmVySXRlbURhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBBdXRoTGV2ZWxVdGlsIGF1dGhMZXZlbFV0aWw7CisJQEF1dG93aXJlZAorCXByaXZhdGUgTGlicmFyeVdtbExvYWRlciBsaWJyYXJ5V21sTG9hZGVyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFdoaXRlYm9hcmRNYW5hZ2VyIHdoaXRlYm9hcmRNYW5hZ2VtZW50OworCisJcHVibGljIExpYnJhcnlQcmVzZW50YXRpb24gZ2V0UHJlc2VudGF0aW9uUHJldmlld0ZpbGVFeHBsb3JlcihTdHJpbmcgU0lELAorCQkJU3RyaW5nIHBhcmVudEZvbGRlcikgeworCisJCXRyeSB7CisKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCisJCQlsb2cuZGVidWcoIiMjIyMjIyMjIyMjIyN1c2Vyc19pZCA6ICIgKyB1c2Vyc19pZCk7CisJCQlsb2cuZGVidWcoIiMjIyMjIyMjIyMjIyN1c2VyX2xldmVsIDogIiArIHVzZXJfbGV2ZWwpOworCisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1VzZXJMZXZlbCh1c2VyX2xldmVsKSkgeworCisJCQkJRmlsZSB3b3JraW5nX2RpciA9IG5ldyBGaWxlKE9tRmlsZUhlbHBlci5nZXRVcGxvYWRGaWxlc0RpcigpLCBwYXJlbnRGb2xkZXIpOworCQkJCWxvZy5kZWJ1ZygiIyMjIyMjIyMjIyMjIyB3b3JraW5nX2RpciA6ICIgKyB3b3JraW5nX2Rpcik7CisKKwkJCQlGaWxlIGZpbGUgPSBuZXcgRmlsZSh3b3JraW5nX2RpciwgT21GaWxlSGVscGVyLmxpYnJhcnlGaWxlTmFtZSk7CisKKwkJCQlpZiAoIWZpbGUuZXhpc3RzKCkpIHsKKwkJCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbihmaWxlLmdldENhbm9uaWNhbFBhdGgoKSArICI6IGRvZXMgbm90IGV4aXN0Iik7CisJCQkJfQorCisJCQkJcmV0dXJuIExvYWRMaWJyYXJ5UHJlc2VudGF0aW9uLnBhcnNlTGlicmFyeUZpbGVUb09iamVjdChmaWxlKTsKKworCQkJfSBlbHNlIHsKKwkJCQl0aHJvdyBuZXcgRXhjZXB0aW9uKCJub3QgQXV0aGVudGljYXRlZCIpOworCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCQlsb2cuZXJyb3IoIltnZXRMaXN0T2ZGaWxlc0J5QWJzb2x1dGVQYXRoXSIsIGUpOworCQkJcmV0dXJuIG51bGw7CisJCX0KKworCX0KKworCS8qKgorCSAqIAorCSAqIFNhdmUgYW4gT2JqZWN0IHRvIHRoZSBsaWJyYXJ5IGFuZCByZXR1cm5zIHRoZSBmaWxlLWV4cGxvcmVyIElkCisJICogCisJICogQHBhcmFtIFNJRAorCSAqIEBwYXJhbSByb29tX2lkCisJICogQHBhcmFtIGZpbGVOYW1lCisJICogQHBhcmFtIHRPYmplY3RSZWYKKwkgKiBAcmV0dXJuIC0gZmlsZS1leHBsb3JlciBJZCBpbiBjYXNlIG9mIHN1Y2Nlc3MsIC0xIG90aGVyd2lzZQorCSAqLworCXB1YmxpYyBMb25nIHNhdmVBc09iamVjdChTdHJpbmcgU0lELCBMb25nIHJvb21faWQsIFN0cmluZyBmaWxlTmFtZSwKKwkJCU9iamVjdCB0T2JqZWN0UmVmKSB7CisJCXRyeSB7CisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrVXNlckxldmVsKHVzZXJfbGV2ZWwpKSB7CisJCQkJLy8gTGlua2VkSGFzaE1hcCB0T2JqZWN0ID0gKExpbmtlZEhhc2hNYXApdDsKKwkJCQkvLyBBcnJheUxpc3QgdE9iamVjdCA9IChBcnJheUxpc3QpdDsKKworCQkJCWxvZy5kZWJ1Zygic2F2ZUFzT2JqZWN0IDoxOiAiICsgdE9iamVjdFJlZik7CisJCQkJbG9nLmRlYnVnKCJzYXZlQXNPYmplY3QgOjI6ICIgKyB0T2JqZWN0UmVmLmdldENsYXNzKCkuZ2V0TmFtZSgpKTsKKworCQkJCUBTdXBwcmVzc1dhcm5pbmdzKCJyYXd0eXBlcyIpCisJCQkJQXJyYXlMaXN0IHRPYmplY3QgPSAoQXJyYXlMaXN0KSB0T2JqZWN0UmVmOworCisJCQkJbG9nLmRlYnVnKCJzYXZlQXNPYmplY3QiICsgdE9iamVjdC5zaXplKCkpOworCisJCQkJU3RyaW5nIGxvY2FsRmlsZU5hbWUgPSBNRDUuZG9fY2hlY2tzdW0obmV3IERhdGUoKS50b1N0cmluZygpKSArICIud21sIjsKKworCQkJCUxpYnJhcnlEb2N1bWVudENvbnZlcnRlci53cml0ZVRvTG9jYWxGb2xkZXIobG9jYWxGaWxlTmFtZSwgdE9iamVjdCk7CisKKwkJCQkvLyBTdHJpbmcgd21sUGF0aCA9IGN1cnJlbnRfZGlyICsgRmlsZS5zZXBhcmF0b3JDaGFyK2ZpbGVOYW1lCisJCQkJLy8gKyIueG1sIjsKKwkJCQkvLyBPd25lcklEID09IG51bGwKKwkJCQlMb25nIGZpbGVFeHBsb3JlcklkID0gZmlsZUV4cGxvcmVySXRlbURhby5hZGQoZmlsZU5hbWUsICIiLCAwTCwKKwkJCQkJCW51bGwsIHJvb21faWQsIHVzZXJzX2lkLCBmYWxzZSwgLy8gaXNGb2xkZXIKKwkJCQkJCWZhbHNlLCAvLyBpc0ltYWdlCisJCQkJCQlmYWxzZSwgLy8gaXNQcmVzZW50YXRpb24KKwkJCQkJCWxvY2FsRmlsZU5hbWUsIC8vIFdNTCBsb2NhbEZpbGVOYW1lCisJCQkJCQl0cnVlLCAvLyBpc1N0b3JlZFdNTCBmaWxlCisJCQkJCQl0cnVlLCAwTCwgIiIpOworCisJCQkJcmV0dXJuIGZpbGVFeHBsb3JlcklkOworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltzYXZlQXNPYmplY3RdICIsIGVycik7CisJCX0KKwkJcmV0dXJuIC0xTDsKKwl9CisKKwkvKioKKwkgKiAKKwkgKiBMb2FkcyBhIE9iamVjdCBmcm9tIHRoZSBsaWJyYXJ5IGludG8gdGhlIHdoaXRlYm9hcmQgb2YgYWxsIHBhcnRpY2lwYW50IG9mCisJICogdGhlIGN1cnJlbnQgcm9vbQorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiBAcGFyYW0gcm9vbV9pZAorCSAqIEBwYXJhbSBmaWxlRXhwbG9yZXJJdGVtSWQKKwkgKiBAcGFyYW0gd2hpdGVib2FyZElkCisJICovCisJQFN1cHByZXNzV2FybmluZ3MoeyAicmF3dHlwZXMiLCAidW5jaGVja2VkIiB9KQorCXB1YmxpYyB2b2lkIGxvYWRXbWxPYmplY3QoU3RyaW5nIFNJRCwgTG9uZyByb29tX2lkLAorCQkJTG9uZyBmaWxlRXhwbG9yZXJJdGVtSWQsIExvbmcgd2hpdGVib2FyZElkKSB7CisJCXRyeSB7CisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tVc2VyTGV2ZWwodXNlcl9sZXZlbCkpIHsKKworCQkJCUlDb25uZWN0aW9uIGN1cnJlbnQgPSBSZWQ1LmdldENvbm5lY3Rpb25Mb2NhbCgpOworCQkJCUNsaWVudCBjdXJyZW50Q2xpZW50ID0gdGhpcy5zZXNzaW9uTWFuYWdlcgorCQkJCQkJLmdldENsaWVudEJ5U3RyZWFtSWQoY3VycmVudC5nZXRDbGllbnQoKS5nZXRJZCgpLCBudWxsKTsKKworCQkJCWlmIChjdXJyZW50Q2xpZW50ID09IG51bGwpIHsKKwkJCQkJcmV0dXJuOworCQkJCX0KKworCQkJCUZpbGVFeHBsb3Jlckl0ZW0gZmlsZUV4cGxvcmVySXRlbSA9IGZpbGVFeHBsb3Jlckl0ZW1EYW8KKwkJCQkJCS5nZXRGaWxlRXhwbG9yZXJJdGVtc0J5SWQoZmlsZUV4cGxvcmVySXRlbUlkKTsKKworCQkJCUFycmF5TGlzdCByb29tSXRlbXMgPSBsaWJyYXJ5V21sTG9hZGVyLmxvYWRXbWxGaWxlKGZpbGVFeHBsb3Jlckl0ZW0uZ2V0V21sRmlsZVBhdGgoKSk7CisKKwkJCQlNYXAgd2hpdGVib2FyZE9iakNsZWFyID0gbmV3IEhhc2hNYXAoKTsKKwkJCQl3aGl0ZWJvYXJkT2JqQ2xlYXIucHV0KDIsICJjbGVhciIpOworCQkJCXdoaXRlYm9hcmRPYmpDbGVhci5wdXQoMywgbnVsbCk7CisKKwkJCQl3aGl0ZWJvYXJkTWFuYWdlbWVudC5hZGRXaGl0ZUJvYXJkT2JqZWN0QnlJZCgKKwkJCQkJCXJvb21faWQsIHdoaXRlYm9hcmRPYmpDbGVhciwgd2hpdGVib2FyZElkKTsKKworCQkJCWZvciAoaW50IGsgPSAwOyBrIDwgcm9vbUl0ZW1zLnNpemUoKTsgaysrKSB7CisKKwkJCQkJQXJyYXlMaXN0IGFjdGlvbk9iamVjdCA9IChBcnJheUxpc3QpIHJvb21JdGVtcy5nZXQoayk7CisKKwkJCQkJTWFwIHdoaXRlYm9hcmRPYmogPSBuZXcgSGFzaE1hcCgpOworCQkJCQl3aGl0ZWJvYXJkT2JqLnB1dCgyLCAiZHJhdyIpOworCQkJCQl3aGl0ZWJvYXJkT2JqLnB1dCgzLCBhY3Rpb25PYmplY3QpOworCisJCQkJCXdoaXRlYm9hcmRNYW5hZ2VtZW50LmFkZFdoaXRlQm9hcmRPYmplY3RCeUlkKAorCQkJCQkJCXJvb21faWQsIHdoaXRlYm9hcmRPYmosIHdoaXRlYm9hcmRJZCk7CisKKwkJCQl9CisKKwkJCQlNYXA8U3RyaW5nLCBPYmplY3Q+IHNlbmRPYmplY3QgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIE9iamVjdD4oKTsKKwkJCQlzZW5kT2JqZWN0LnB1dCgiaWQiLCB3aGl0ZWJvYXJkSWQpOworCQkJCXNlbmRPYmplY3QucHV0KCJyb29taXRlbXMiLCByb29tSXRlbXMpOworCisJCQkJLy8gTm90aWZ5IGFsbCBDbGllbnRzIG9mIHRoYXQgU2NvcGUgKFJvb20pCisJCQkJQ29sbGVjdGlvbjxTZXQ8SUNvbm5lY3Rpb24+PiBjb25Db2xsZWN0aW9uID0gY3VycmVudC5nZXRTY29wZSgpCisJCQkJCQkuZ2V0Q29ubmVjdGlvbnMoKTsKKwkJCQlmb3IgKFNldDxJQ29ubmVjdGlvbj4gY29uc2V0IDogY29uQ29sbGVjdGlvbikgeworCQkJCQlmb3IgKElDb25uZWN0aW9uIGNvbm4gOiBjb25zZXQpIHsKKwkJCQkJCWlmIChjb25uICE9IG51bGwpIHsKKwkJCQkJCQlpZiAoY29ubiBpbnN0YW5jZW9mIElTZXJ2aWNlQ2FwYWJsZUNvbm5lY3Rpb24pIHsKKwkJCQkJCQkJQ2xpZW50IHJjbCA9IHRoaXMuc2Vzc2lvbk1hbmFnZXIKKwkJCQkJCQkJCQkuZ2V0Q2xpZW50QnlTdHJlYW1JZChjb25uLmdldENsaWVudCgpCisJCQkJCQkJCQkJCQkuZ2V0SWQoKSwgbnVsbCk7CisJCQkJCQkJCWlmICgocmNsID09IG51bGwpCisJCQkJCQkJCQkJfHwgKHJjbC5nZXRJc1NjcmVlbkNsaWVudCgpICE9IG51bGwgJiYgcmNsCisJCQkJCQkJCQkJCQkuZ2V0SXNTY3JlZW5DbGllbnQoKSkpIHsKKwkJCQkJCQkJCWNvbnRpbnVlOworCQkJCQkJCQl9IGVsc2UgeworCQkJCQkJCQkJKChJU2VydmljZUNhcGFibGVDb25uZWN0aW9uKSBjb25uKS5pbnZva2UoCisJCQkJCQkJCQkJCSJsb2FkV21sVG9XaGl0ZWJvYXJkQnlJZCIsCisJCQkJCQkJCQkJCW5ldyBPYmplY3RbXSB7IHNlbmRPYmplY3QgfSwgdGhpcyk7CisJCQkJCQkJCX0KKwkJCQkJCQl9CisJCQkJCQl9CisJCQkJCX0KKwkJCQl9CisKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbbG9hZFdtbE9iamVjdF0gIiwgZXJyKTsKKwkJfQorCX0KKworCS8qKgorCSAqIAorCSAqIExvYWRzIGEgY2hhcnQgb2JqZWN0CisJICogCisJICogQHBhcmFtIFNJRAorCSAqIEBwYXJhbSByb29tX2lkCisJICogQHBhcmFtIGZpbGVOYW1lCisJICogQHJldHVybiAtIGNoYXJ0IG9iamVjdAorCSAqLworCUBTdXBwcmVzc1dhcm5pbmdzKCJyYXd0eXBlcyIpCisJcHVibGljIEFycmF5TGlzdCBsb2FkQ2hhcnRPYmplY3QoU3RyaW5nIFNJRCwgTG9uZyByb29tX2lkLCBTdHJpbmcgZmlsZU5hbWUpIHsKKwkJdHJ5IHsKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tVc2VyTGV2ZWwodXNlcl9sZXZlbCkpIHsKKwkJCQlyZXR1cm4gTGlicmFyeUNoYXJ0TG9hZGVyLmdldEluc3RhbmNlKCkubG9hZENoYXJ0KE9tRmlsZUhlbHBlci5nZXRVcGxvYWRSb29tRGlyKHJvb21faWQudG9TdHJpbmcoKSksCisJCQkJCQlmaWxlTmFtZSk7CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2xvYWRDaGFydE9iamVjdF0gIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvKioKKwkgKiBAcGFyYW0gU0lECisJICogQHBhcmFtIGZsdkZpbGVFeHBsb3JlcklkCisJICogQHJldHVybiAxIGluIGNhc2Ugb2Ygc3VjY2VzcywgLTEgb3RoZXJ3aXNlCisJICovCisJcHVibGljIExvbmcgY29weUZpbGVUb0N1cnJlbnRSb29tKFN0cmluZyBTSUQsIExvbmcgZmx2RmlsZUV4cGxvcmVySWQpIHsKKwkJdHJ5IHsKKworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrVXNlckxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlJQ29ubmVjdGlvbiBjdXJyZW50ID0gUmVkNS5nZXRDb25uZWN0aW9uTG9jYWwoKTsKKwkJCQlTdHJpbmcgc3RyZWFtaWQgPSBjdXJyZW50LmdldENsaWVudCgpLmdldElkKCk7CisKKwkJCQlDbGllbnQgY3VycmVudENsaWVudCA9IHRoaXMuc2Vzc2lvbk1hbmFnZXIKKwkJCQkJCS5nZXRDbGllbnRCeVN0cmVhbUlkKHN0cmVhbWlkLCBudWxsKTsKKworCQkJCUxvbmcgcm9vbV9pZCA9IGN1cnJlbnRDbGllbnQuZ2V0Um9vbV9pZCgpOworCisJCQkJaWYgKHJvb21faWQgIT0gbnVsbCkgeworCQkJCQlGaWxlIG91dHB1dEZ1bGxGbHZGaWxlID0gbmV3IEZpbGUoT21GaWxlSGVscGVyLmdldFN0cmVhbXNIaWJlcm5hdGVEaXIoKQorCQkJCQkJLCAiVVBMT0FERkxWXyIgKyBmbHZGaWxlRXhwbG9yZXJJZCArICIuZmx2Iik7CisKKwkJCQkJRmlsZSB0YXJnZXRGb2xkZXIgPSBPbUZpbGVIZWxwZXIuZ2V0U3RyZWFtc1N1YkRpcihyb29tX2lkKTsKKworCQkJCQlGaWxlIHRhcmdldEZ1bGxGbHZGaWxlID0gbmV3IEZpbGUodGFyZ2V0Rm9sZGVyCisJCQkJCQksICJVUExPQURGTFZfIiArIGZsdkZpbGVFeHBsb3JlcklkICsgIi5mbHYiKTsKKwkJCQkJaWYgKG91dHB1dEZ1bGxGbHZGaWxlLmV4aXN0cygpICYmICF0YXJnZXRGdWxsRmx2RmlsZS5leGlzdHMoKSkgeworCQkJCQkJRmlsZUhlbHBlci5jb3B5KG91dHB1dEZ1bGxGbHZGaWxlLCB0YXJnZXRGdWxsRmx2RmlsZSk7CisJCQkJCX0KKworCQkJCQlyZXR1cm4gMUw7CisJCQkJfQorCisJCQl9CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbY29weUZpbGVUb0N1cnJlbnRSb29tXSAiLCBlcnIpOworCQl9CisJCXJldHVybiAtMUw7CisJfQorCisJcHVibGljIHZvaWQgcmVzdWx0UmVjZWl2ZWQoSVBlbmRpbmdTZXJ2aWNlQ2FsbCBhcmcwKSB7CisJCS8vIFRPRE8gQXV0by1nZW5lcmF0ZWQgbWV0aG9kIHN0dWIKKworCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3JlbW90ZS9Db25mZXJlbmNlU2VydmljZS5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3JlbW90ZS9Db25mZXJlbmNlU2VydmljZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhZDcwMzMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcmVtb3RlL0NvbmZlcmVuY2VTZXJ2aWNlLmphdmEKQEAgLTAsMCArMSw4MDMgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucmVtb3RlOworCitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLkxpbmtlZEhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLk1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuVGltZVpvbmU7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuY2x1c3Rlci5iZWFucy5TZXJ2ZXJEVE87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5BdXRoTGV2ZWxVdGlsOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuU2Vzc2lvbmRhdGFEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5kYW8uU2VydmVyRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmVhbnMuYmFzaWMuU2VhcmNoUmVzdWx0OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY2FsZW5kYXIubWFuYWdlbWVudC5BcHBvaW50bWVudExvZ2ljOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY29uZmVyZW5jZS5Sb29tTWFuYWdlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNvbmZlcmVuY2UuZGFvLlJvb21EYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jb25mZXJlbmNlLmRhby5Sb29tTW9kZXJhdG9yc0RhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuVXNlck1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuU2VydmVyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmNhbGVuZGFyLkFwcG9pbnRtZW50OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnJvb20uQ2xpZW50OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnJvb20uUm9vbTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tLlJvb21Nb2RlcmF0b3I7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbS5Sb29tT3JnYW5pc2F0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnJvb20uUm9vbVR5cGU7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlci5Vc2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnNlc3Npb24uSVNlc3Npb25NYW5hZ2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLm1hdGguQ2FsZW5kYXJQYXR0ZXJuczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5tYXRoLlRpbWV6b25lVXRpbDsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5yZWQ1LnNlcnZlci5hcGkuSUNvbm5lY3Rpb247CitpbXBvcnQgb3JnLnJlZDUuc2VydmVyLmFwaS5SZWQ1OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uQXV0b3dpcmVkOworCisvKioKKyAqIAorICogQGF1dGhvciBzZWJhd2FnbmVyCisgKiAKKyAqLworcHVibGljIGNsYXNzIENvbmZlcmVuY2VTZXJ2aWNlIHsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoCisJCQlDb25mZXJlbmNlU2VydmljZS5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCisJQEF1dG93aXJlZAorCXByaXZhdGUgQXBwb2ludG1lbnRMb2dpYyBhcHBvaW50bWVudExvZ2ljOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFNlc3Npb25kYXRhRGFvIHNlc3Npb25kYXRhRGFvOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFVzZXJNYW5hZ2VyIHVzZXJNYW5hZ2VyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFJvb21NYW5hZ2VyIHJvb21NYW5hZ2VyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFJvb21EYW8gcm9vbURhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBSb29tTW9kZXJhdG9yc0RhbyByb29tTW9kZXJhdG9yc0RhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBBdXRoTGV2ZWxVdGlsIGF1dGhMZXZlbFV0aWw7CisJQEF1dG93aXJlZAorCXByaXZhdGUgVGltZXpvbmVVdGlsIHRpbWV6b25lVXRpbDsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBJU2Vzc2lvbk1hbmFnZXIgc2Vzc2lvbk1hbmFnZXIgPSBudWxsOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFNlcnZlckRhbyBzZXJ2ZXJEYW87CisKKwkvKioKKwkgKiAoIGdldCBhIExpc3Qgb2YgYWxsIGF2YWlsYWJsZSBSb29tcyBvZiB0aGlzIG9yZ2FuaXphdGlvbgorCSAqIChub24tYXBwb2ludG1lbnRzKQorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiBAcGFyYW0gb3JnYW5pc2F0aW9uX2lkCisJICogQHJldHVybiAtIGFsbCBhdmFpbGFibGUgUm9vbXMgb2YgdGhpcyBvcmdhbml6YXRpb24KKwkgKi8KKwlwdWJsaWMgTGlzdDxSb29tT3JnYW5pc2F0aW9uPiBnZXRSb29tc0J5T3JnYW5pc2F0aW9uQW5kVHlwZShTdHJpbmcgU0lELAorCQkJbG9uZyBvcmdhbmlzYXRpb25faWQsIGxvbmcgcm9vbXR5cGVzX2lkKSB7CisJCXRyeSB7CisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKworCQkJbG9nLmRlYnVnKCJnZXRSb29tc0J5T3JnYW5pc2F0aW9uQW5kVHlwZSIpOworCisJCQlpZiAodXNlcl9sZXZlbCA9PSBudWxsKSB7CisJCQkJcmV0dXJuIG51bGw7CisJCQl9CisJCQlMaXN0PFJvb21PcmdhbmlzYXRpb24+IHJvb21PcmdzTGlzdCA9IHJvb21NYW5hZ2VyCisJCQkJCS5nZXRSb29tc09yZ2FuaXNhdGlvbkJ5T3JnYW5pc2F0aW9uSWRBbmRSb29tVHlwZSgKKwkJCQkJCQl1c2VyX2xldmVsLCBvcmdhbmlzYXRpb25faWQsIHJvb210eXBlc19pZCk7CisKKwkJCUxpc3Q8Um9vbU9yZ2FuaXNhdGlvbj4gZmlsdGVyZWQgPSBuZXcgQXJyYXlMaXN0PFJvb21PcmdhbmlzYXRpb24+KCk7CisKKwkJCWZvciAoSXRlcmF0b3I8Um9vbU9yZ2FuaXNhdGlvbj4gaXRlciA9IHJvb21PcmdzTGlzdC5pdGVyYXRvcigpOyBpdGVyCisJCQkJCS5oYXNOZXh0KCk7KSB7CisJCQkJUm9vbU9yZ2FuaXNhdGlvbiBvcmdSb29tID0gaXRlci5uZXh0KCk7CisKKwkJCQlpZiAoIW9yZ1Jvb20uZ2V0Um9vbSgpLmdldEFwcG9pbnRtZW50KCkpIHsKKwkJCQkJb3JnUm9vbS5nZXRSb29tKCkuc2V0Q3VycmVudHVzZXJzKAorCQkJCQkJCXRoaXMuZ2V0Um9vbUNsaWVudHNMaXN0QnlSb29tSWQob3JnUm9vbS5nZXRSb29tKCkKKwkJCQkJCQkJCS5nZXRSb29tc19pZCgpKSk7CisJCQkJCWZpbHRlcmVkLmFkZChvcmdSb29tKTsKKwkJCQl9CisJCQl9CisJCQlyZXR1cm4gZmlsdGVyZWQ7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2dldFJvb21zQnlPcmdhbmlzYXRpb25BbmRUeXBlXSIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIExpc3Q8Um9vbU9yZ2FuaXNhdGlvbj4gZ2V0Um9vbXNCeU9yZ2FuaXNhdGlvbldpdGhvdXRUeXBlKAorCQkJU3RyaW5nIFNJRCwgbG9uZyBvcmdhbmlzYXRpb25faWQpIHsKKwkJdHJ5IHsKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCisJCQlsb2cuZGVidWcoImdldFJvb21zQnlPcmdhbmlzYXRpb25BbmRUeXBlIik7CisKKwkJCWlmICh1c2VyX2xldmVsID09IG51bGwpIHsKKwkJCQlyZXR1cm4gbnVsbDsKKwkJCX0KKwkJCUxpc3Q8Um9vbU9yZ2FuaXNhdGlvbj4gcm9vbU9yZ3NMaXN0ID0gcm9vbU1hbmFnZXIKKwkJCQkJLmdldFJvb21zT3JnYW5pc2F0aW9uQnlPcmdhbmlzYXRpb25JZCh1c2VyX2xldmVsLAorCQkJCQkJCW9yZ2FuaXNhdGlvbl9pZCk7CisJCQkKKwkJCWZvciAoUm9vbU9yZ2FuaXNhdGlvbiByb29tT3JnIDogcm9vbU9yZ3NMaXN0KSB7CisJCQkJcm9vbU9yZy5nZXRSb29tKCkuc2V0Q3VycmVudHVzZXJzKHNlc3Npb25NYW5hZ2VyLmdldENsaWVudExpc3RCeVJvb20ocm9vbU9yZy5nZXRSb29tKCkuZ2V0Um9vbXNfaWQoKSkpOworCQkJfQorCisJCQlyZXR1cm4gcm9vbU9yZ3NMaXN0OworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRSb29tc0J5T3JnYW5pc2F0aW9uQW5kVHlwZV0iLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCS8qKgorCSAqIGdldHMgYWxsIHJvb21zIG9mIGFuIG9yZ2FuaXphdGlvbiBUT0RPOmNoZWNrIGlmIHRoZSByZXF1ZXN0aW5nIHVzZXIgaXMKKwkgKiBhbHNvIG1lbWJlciBvZiB0aGF0IG9yZ2FuaXphdGlvbgorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiBAcGFyYW0gb3JnYW5pc2F0aW9uX2lkCisJICogQHJldHVybiAtIGFsbCByb29tcyBvZiBhbiBvcmdhbml6YXRpb24KKwkgKi8KKwlwdWJsaWMgU2VhcmNoUmVzdWx0PFJvb21PcmdhbmlzYXRpb24+IGdldFJvb21zQnlPcmdhbmlzYXRpb24oU3RyaW5nIFNJRCwKKwkJCWxvbmcgb3JnYW5pc2F0aW9uX2lkLCBpbnQgc3RhcnQsIGludCBtYXgsIFN0cmluZyBvcmRlcmJ5LAorCQkJYm9vbGVhbiBhc2MpIHsKKworCQlsb2cuZGVidWcoImdldFJvb21zQnlPcmdhbmlzYXRpb24iKTsKKworCQlMb25nIHVzZXJfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJZEFuZE9yZyh1c2VyX2lkLAorCQkJCW9yZ2FuaXNhdGlvbl9pZCk7CisKKwkJcmV0dXJuIHJvb21NYW5hZ2VyLmdldFJvb21zT3JnYW5pc2F0aW9uQnlPcmdhbmlzYXRpb25JZCh1c2VyX2xldmVsLAorCQkJCW9yZ2FuaXNhdGlvbl9pZCwgc3RhcnQsIG1heCwgb3JkZXJieSwgYXNjKTsKKwl9CisKKwkvKioKKwkgKiBnZXQgYSBMaXN0IG9mIGFsbCBwdWJsaWMgYXZhaWxpYmxlIHJvb21zIChub24tYXBwb2ludG1lbnRzKQorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiBAcGFyYW0gcm9vbXR5cGVzX2lkCisJICogQHJldHVybiAtIHB1YmxpYyByb29tcyB3aXRoIGdpdmVuIHR5cGUsIG51bGwgaW4gY2FzZSBvZiB0aGUgZXJyb3IKKwkgKi8KKwlwdWJsaWMgTGlzdDxSb29tPiBnZXRSb29tc1B1YmxpYyhTdHJpbmcgU0lELCBMb25nIHJvb210eXBlc19pZCkgeworCQl0cnkgeworCQkJbG9nLmRlYnVnKCJnZXRSb29tc1B1YmxpYyIpOworCisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIFVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJCWxvZy5lcnJvcigiZ2V0Um9vbXNQdWJsaWMgdXNlcl9sZXZlbDogIiArIFVzZXJfbGV2ZWwpOworCisJCQlMaXN0PFJvb20+IHJvb21MaXN0ID0gcm9vbU1hbmFnZXIuZ2V0UHVibGljUm9vbXMoVXNlcl9sZXZlbCwKKwkJCQkJcm9vbXR5cGVzX2lkKTsKKworCQkJLy8gRmlsdGVyIDogbm8gYXBwb2ludGVkIG1lZXRpbmdzCisJCQlMaXN0PFJvb20+IGZpbHRlcmVkID0gbmV3IEFycmF5TGlzdDxSb29tPigpOworCisJCQlmb3IgKEl0ZXJhdG9yPFJvb20+IGl0ZXIgPSByb29tTGlzdC5pdGVyYXRvcigpOyBpdGVyLmhhc05leHQoKTspIHsKKwkJCQlSb29tIHJvb21zID0gaXRlci5uZXh0KCk7CisKKwkJCQlpZiAoIXJvb21zLmdldEFwcG9pbnRtZW50KCkpIHsKKwkJCQkJcm9vbXMuc2V0Q3VycmVudHVzZXJzKHRoaXMuZ2V0Um9vbUNsaWVudHNMaXN0QnlSb29tSWQocm9vbXMKKwkJCQkJCQkuZ2V0Um9vbXNfaWQoKSkpOworCQkJCQlmaWx0ZXJlZC5hZGQocm9vbXMpOworCQkJCX0KKwkJCX0KKworCQkJcmV0dXJuIGZpbHRlcmVkOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRSb29tc0J5T3JnYW5pc2F0aW9uQW5kVHlwZV0iLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMaXN0PFJvb20+IGdldFJvb21zUHVibGljV2l0aG91dFR5cGUoU3RyaW5nIFNJRCkgeworCQl0cnkgeworCisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJCWxvZy5kZWJ1ZygiZ2V0Um9vbXNQdWJsaWMgdXNlcl9sZXZlbDogIiArIHVzZXJfbGV2ZWwpOworCisJCQlMaXN0PFJvb20+IHJvb21MaXN0ID0gcm9vbURhby5nZXRQdWJsaWNSb29tcygpOworCQkJCisJCQlmb3IgKFJvb20gcm9vbSA6IHJvb21MaXN0KSB7CisJCQkJcm9vbS5zZXRDdXJyZW50dXNlcnMoc2Vzc2lvbk1hbmFnZXIuZ2V0Q2xpZW50TGlzdEJ5Um9vbShyb29tLmdldFJvb21zX2lkKCkpKTsKKwkJCX0KKworCQkJcmV0dXJuIHJvb21MaXN0OworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRSb29tc1B1YmxpY1dpdGhvdXRUeXBlXSIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLyoqCisJICogcmV0cmlldmluZyBTZXJ2ZXJUaW1lCisJICogCisJICogQHJldHVybiAtIHNlcnZlciB0aW1lCisJICovCisJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlwdWJsaWMgRGF0ZSBnZXRTZXJ2ZXJUaW1lKCkgeworCQlsb2cuZGVidWcoImdldFNlcnZlclRpbWUiKTsKKworCQlyZXR1cm4gbmV3IERhdGUoU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkpOworCisJfQorCisJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCS8qKgorCSAqIAorCSAqIHJldHJpZXZpbmcgQXBwb2ludG1lbnQgZm9yIFJvb20KKwkgKiAKKwkgKiBAcGFyYW0gcm9vbV9pZAorCSAqIEByZXR1cm4gLSBBcHBvaW50bWVudCBpbiBjYXNlIHRoZSByb29tIGlzIGFwcG9pbnRtZW50LCBudWxsIG90aGVyd2lzZQorCSAqLworCXB1YmxpYyBBcHBvaW50bWVudCBnZXRBcHBvaW50TWVudERhdGFGb3JSb29tKExvbmcgcm9vbV9pZCkgeworCQlsb2cuZGVidWcoImdldEFwcG9pbnRNZW50RGF0YUZvclJvb20iKTsKKworCQlSb29tIHJvb20gPSByb29tRGFvLmdldChyb29tX2lkKTsKKworCQlpZiAocm9vbS5nZXRBcHBvaW50bWVudCgpID09IGZhbHNlKQorCQkJcmV0dXJuIG51bGw7CisKKwkJdHJ5IHsKKwkJCUFwcG9pbnRtZW50IG1lbnQgPSBhcHBvaW50bWVudExvZ2ljLmdldEFwcG9pbnRtZW50QnlSb29tKHJvb21faWQpOworCisJCQlyZXR1cm4gbWVudDsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCWxvZy5lcnJvcigiZ2V0QXBwb2ludE1lbnREYXRhRm9yUm9vbSAiLCBlKTsKKwkJCXJldHVybiBudWxsOworCQl9CisKKwl9CisKKwkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJcHVibGljIE1hcDxTdHJpbmcsIE9iamVjdD4gZ2V0QXBwb2ludE1lbnRBbmRUaW1lWm9uZXMoTG9uZyByb29tX2lkKSB7CisJCXRyeSB7CisJCQlsb2cuZGVidWcoImdldEFwcG9pbnRNZW50RGF0YUZvclJvb20iKTsKKwkJCQorCQkJSUNvbm5lY3Rpb24gY3VycmVudCA9IFJlZDUuZ2V0Q29ubmVjdGlvbkxvY2FsKCk7CisJCQlTdHJpbmcgc3RyZWFtaWQgPSBjdXJyZW50LmdldENsaWVudCgpLmdldElkKCk7CisJCisJCQlsb2cuZGVidWcoImdldEN1cnJlbnRSb29tQ2xpZW50IC0yLSAiICsgc3RyZWFtaWQpOworCQorCQkJQ2xpZW50IGN1cnJlbnRDbGllbnQgPSB0aGlzLnNlc3Npb25NYW5hZ2VyCisJCQkJCS5nZXRDbGllbnRCeVN0cmVhbUlkKHN0cmVhbWlkLCBudWxsKTsKKwkKKwkJCVJvb20gcm9vbSA9IHJvb21EYW8uZ2V0KHJvb21faWQpOworCQorCQkJaWYgKHJvb20uZ2V0QXBwb2ludG1lbnQoKSA9PSBmYWxzZSkgeworCQkJCXRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIlJvb20gaGFzIG5vIGFwcG9pbnRtZW50Iik7CisJCQl9CisJCQorCQkJQXBwb2ludG1lbnQgYXBwb2ludG1lbnQgPSBhcHBvaW50bWVudExvZ2ljCisJCQkJCS5nZXRBcHBvaW50bWVudEJ5Um9vbShyb29tX2lkKTsKKworCQkJTWFwPFN0cmluZywgT2JqZWN0PiByZXR1cm5NYXAgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIE9iamVjdD4oKTsKKworCQkJcmV0dXJuTWFwLnB1dCgiYXBwb2ludG1lbnQiLCBhcHBvaW50bWVudCk7CisKKwkJCVVzZXIgdXMgPSB1c2VyTWFuYWdlci5nZXRVc2VyQnlJZChjdXJyZW50Q2xpZW50LmdldFVzZXJfaWQoKSk7CisJCQlUaW1lWm9uZSB0aW1lem9uZSA9IHRpbWV6b25lVXRpbC5nZXRUaW1lem9uZUJ5VXNlcih1cyk7CisKKwkJCXJldHVybk1hcC5wdXQoImFwcG9pbnRtZW50IiwgYXBwb2ludG1lbnQpOworCisJCQlyZXR1cm5NYXAucHV0KAorCQkJCQkic3RhcnQiLAorCQkJCQlDYWxlbmRhclBhdHRlcm5zLmdldERhdGVXaXRoVGltZUJ5TWlsaVNlY29uZHMoCisJCQkJCQkJYXBwb2ludG1lbnQuZ2V0QXBwb2ludG1lbnRTdGFydHRpbWUoKSwgdGltZXpvbmUpKTsKKwkJCXJldHVybk1hcC5wdXQoCisJCQkJCSJlbmQiLAorCQkJCQlDYWxlbmRhclBhdHRlcm5zLmdldERhdGVXaXRoVGltZUJ5TWlsaVNlY29uZHMoCisJCQkJCQkJYXBwb2ludG1lbnQuZ2V0QXBwb2ludG1lbnRFbmR0aW1lKCksIHRpbWV6b25lKSk7CisJCQlyZXR1cm5NYXAucHV0KCJ0aW1lWm9uZSIsIHRpbWV6b25lLmdldERpc3BsYXlOYW1lKCkpOworCisJCQlyZXR1cm4gcmV0dXJuTWFwOworCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJbG9nLmVycm9yKCJnZXRBcHBvaW50TWVudEFuZFRpbWVab25lcyAiICwgZSApOworCQkJcmV0dXJuIG51bGw7CisJCX0KKworCX0KKworCS8qKgorCSAqIAorCSAqLworCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJcHVibGljIExpc3Q8Um9vbT4gZ2V0QXBwb2ludGVkTWVldGluZ3MoU3RyaW5nIFNJRCwgTG9uZyByb29tX3R5cGVzX2lkKSB7CisJCWxvZy5kZWJ1ZygiQ29uZmVyZW5jZVNlcnZpY2UuZ2V0QXBwb2ludGVkTWVldGluZ3MiKTsKKworCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCisJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrVXNlckxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCUxpc3Q8QXBwb2ludG1lbnQ+IHBvaW50cyA9IGFwcG9pbnRtZW50TG9naWMKKwkJCQkJLmdldFRvZGF5c0FwcG9pbnRtZW50c0ZvclVzZXIodXNlcnNfaWQpOworCQkJTGlzdDxSb29tPiByZXN1bHQgPSBuZXcgQXJyYXlMaXN0PFJvb20+KCk7CisKKwkJCWlmIChwb2ludHMgIT0gbnVsbCkgeworCQkJCWZvciAoaW50IGkgPSAwOyBpIDwgcG9pbnRzLnNpemUoKTsgaSsrKSB7CisJCQkJCUFwcG9pbnRtZW50IG1lbnQgPSBwb2ludHMuZ2V0KGkpOworCisJCQkJCUxvbmcgcm9vbXNfaWQgPSBtZW50LmdldFJvb20oKS5nZXRSb29tc19pZCgpOworCQkJCQlSb29tIHJvb29tID0gcm9vbURhby5nZXQocm9vbXNfaWQpOworCisJCQkJCWlmICghcm9vb20uZ2V0Um9vbXR5cGUoKS5nZXRSb29tdHlwZXNfaWQoKQorCQkJCQkJCS5lcXVhbHMocm9vbV90eXBlc19pZCkpCisJCQkJCQljb250aW51ZTsKKworCQkJCQlyb29vbS5zZXRDdXJyZW50dXNlcnMoZ2V0Um9vbUNsaWVudHNMaXN0QnlSb29tSWQocm9vb20KKwkJCQkJCQkuZ2V0Um9vbXNfaWQoKSkpOworCQkJCQlyZXN1bHQuYWRkKHJvb29tKTsKKwkJCQl9CisJCQl9CisKKwkJCWxvZy5kZWJ1ZygiRm91bmQgIiArIHJlc3VsdC5zaXplKCkgKyAiIHJvb21zIik7CisJCQlyZXR1cm4gcmVzdWx0OworCisJCX0gZWxzZSB7CisJCQlyZXR1cm4gbnVsbDsKKwkJfQorCisJfQorCisJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCXB1YmxpYyBMaXN0PFJvb20+IGdldEFwcG9pbnRlZE1lZXRpbmdSb29tc1dpdGhvdXRUeXBlKFN0cmluZyBTSUQpIHsKKwkJbG9nLmRlYnVnKCJDb25mZXJlbmNlU2VydmljZS5nZXRBcHBvaW50ZWRNZWV0aW5ncyIpOworCQl0cnkgeworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrVXNlckxldmVsKHVzZXJfbGV2ZWwpKSB7CisJCQkJTGlzdDxBcHBvaW50bWVudD4gYXBwb2ludG1lbnRzID0gYXBwb2ludG1lbnRMb2dpYworCQkJCQkJLmdldFRvZGF5c0FwcG9pbnRtZW50c0ZvclVzZXIodXNlcnNfaWQpOworCQkJCUxpc3Q8Um9vbT4gcmVzdWx0ID0gbmV3IEFycmF5TGlzdDxSb29tPigpOworCisJCQkJaWYgKGFwcG9pbnRtZW50cyAhPSBudWxsKSB7CisJCQkJCWZvciAoaW50IGkgPSAwOyBpIDwgYXBwb2ludG1lbnRzLnNpemUoKTsgaSsrKSB7CisJCQkJCQlBcHBvaW50bWVudCBtZW50ID0gYXBwb2ludG1lbnRzLmdldChpKTsKKworCQkJCQkJTG9uZyByb29tc19pZCA9IG1lbnQuZ2V0Um9vbSgpLmdldFJvb21zX2lkKCk7CisJCQkJCQlSb29tIHJvb29tID0gcm9vbURhby5nZXQocm9vbXNfaWQpOworCisJCQkJCQlyb29vbS5zZXRDdXJyZW50dXNlcnModGhpcworCQkJCQkJCQkuZ2V0Um9vbUNsaWVudHNMaXN0QnlSb29tSWQocm9vb20uZ2V0Um9vbXNfaWQoKSkpOworCQkJCQkJcmVzdWx0LmFkZChyb29vbSk7CisJCQkJCX0KKwkJCQl9CisKKwkJCQlsb2cuZGVidWcoIkZvdW5kICIgKyByZXN1bHQuc2l6ZSgpICsgIiByb29tcyIpOworCQkJCXJldHVybiByZXN1bHQ7CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2dldEFwcG9pbnRlZE1lZXRpbmdSb29tc1dpdGhvdXRUeXBlXSIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLyoqCisJICogCisJICogQHBhcmFtIFNJRAorCSAqIEByZXR1cm4gLSBhbGwgcm9vbSB0eXBlcyBhdmFpbGFibGUKKwkgKi8KKwlwdWJsaWMgTGlzdDxSb29tVHlwZT4gZ2V0Um9vbVR5cGVzKFN0cmluZyBTSUQpIHsKKwkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tVc2VyTGV2ZWwodXNlcl9sZXZlbCkpIHsKKwkJCXJldHVybiByb29tTWFuYWdlci5nZXRBbGxSb29tVHlwZXMoKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvKioKKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogQHBhcmFtIHJvb21zX2lkCisJICogQHJldHVybiAtIHJvb20gd2l0aCB0aGUgaWQgZ2l2ZW4KKwkgKi8KKwlwdWJsaWMgUm9vbSBnZXRSb29tQnlJZChTdHJpbmcgU0lELCBsb25nIHJvb21zX2lkKSB7CisJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCXJldHVybiByb29tTWFuYWdlci5nZXRSb29tQnlJZCh1c2VyX2xldmVsLCByb29tc19pZCk7CisJfQorCisJcHVibGljIFJvb20gZ2V0Um9vbVdpdGhDdXJyZW50VXNlcnNCeUlkKFN0cmluZyBTSUQsIGxvbmcgcm9vbXNfaWQpIHsKKwkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJUm9vbSByb29tID0gcm9vbU1hbmFnZXIuZ2V0Um9vbUJ5SWQodXNlcl9sZXZlbCwgcm9vbXNfaWQpOworCQlyb29tLnNldEN1cnJlbnR1c2VycyhzZXNzaW9uTWFuYWdlci5nZXRDbGllbnRMaXN0QnlSb29tKHJvb20uZ2V0Um9vbXNfaWQoKSkpOworCQlyZXR1cm4gcm9vbTsKKwl9CisKKwkvKioKKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogQHBhcmFtIGV4dGVybmFsVXNlcklkCisJICogQHBhcmFtIGV4dGVybmFsVXNlclR5cGUKKwkgKiBAcGFyYW0gcm9vbXR5cGVzX2lkCisJICogQHJldHVybiAtIHJvb20gd2l0aCB0aGUgZ2l2ZW4gZXh0ZXJuYWwgaWQKKwkgKi8KKwlwdWJsaWMgUm9vbSBnZXRSb29tQnlFeHRlcm5hbElkKFN0cmluZyBTSUQsIExvbmcgZXh0ZXJuYWxVc2VySWQsCisJCQlTdHJpbmcgZXh0ZXJuYWxVc2VyVHlwZSwgbG9uZyByb29tdHlwZXNfaWQpIHsKKwkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJcmV0dXJuIHJvb21NYW5hZ2VyLmdldFJvb21CeUV4dGVybmFsSWQodXNlcl9sZXZlbCwgZXh0ZXJuYWxVc2VySWQsCisJCQkJZXh0ZXJuYWxVc2VyVHlwZSwgcm9vbXR5cGVzX2lkKTsKKwl9CisKKwkvKioKKwkgKiBnZXRzIGEgbGlzdCBvZiBhbGwgYXZhaWxhYmxlIHJvb21zCisJICogCisJICogQHBhcmFtIFNJRAorCSAqIEBwYXJhbSBzdGFydAorCSAqIEBwYXJhbSBtYXgKKwkgKiBAcGFyYW0gb3JkZXJieQorCSAqIEBwYXJhbSBhc2MKKwkgKiBAcmV0dXJuIC0gbGlzdCBvZiByb29tcyBiZWluZyBzZWFyY2hlZAorCSAqLworCXB1YmxpYyBTZWFyY2hSZXN1bHQ8Um9vbT4gZ2V0Um9vbXMoU3RyaW5nIFNJRCwgaW50IHN0YXJ0LCBpbnQgbWF4LAorCQkJU3RyaW5nIG9yZGVyYnksIGJvb2xlYW4gYXNjLCBTdHJpbmcgc2VhcmNoKSB7CisJCWxvZy5kZWJ1ZygiZ2V0Um9vbXMiKTsKKworCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQlyZXR1cm4gcm9vbU1hbmFnZXIuZ2V0Um9vbXModXNlcl9sZXZlbCwgc3RhcnQsIG1heCwgb3JkZXJieSwgYXNjLAorCQkJCXNlYXJjaCk7CisJfQorCisJcHVibGljIFNlYXJjaFJlc3VsdDxSb29tPiBnZXRSb29tc1dpdGhDdXJyZW50VXNlcnMoU3RyaW5nIFNJRCwgaW50IHN0YXJ0LAorCQkJaW50IG1heCwgU3RyaW5nIG9yZGVyYnksIGJvb2xlYW4gYXNjKSB7CisJCWxvZy5kZWJ1ZygiZ2V0Um9vbXMiKTsKKworCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQlyZXR1cm4gcm9vbU1hbmFnZXIuZ2V0Um9vbXNXaXRoQ3VycmVudFVzZXJzKHVzZXJfbGV2ZWwsIHN0YXJ0LCBtYXgsCisJCQkJb3JkZXJieSwgYXNjKTsKKwl9CisKKwkvKioKKwkgKiBnZXQgYWxsIE9yZ2FuaXNhdGlvbnMgb2YgYSByb29tCisJICogCisJICogQHBhcmFtIFNJRAorCSAqIEBwYXJhbSByb29tc19pZAorCSAqIEByZXR1cm4gLSBhbGwgT3JnYW5pc2F0aW9ucyBvZiBhIHJvb20KKwkgKi8KKwlwdWJsaWMgTGlzdDxSb29tT3JnYW5pc2F0aW9uPiBnZXRPcmdhbmlzYXRpb25CeVJvb20oU3RyaW5nIFNJRCwKKwkJCWxvbmcgcm9vbXNfaWQpIHsKKwkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJcmV0dXJuIHJvb21NYW5hZ2VyLmdldE9yZ2FuaXNhdGlvbnNCeVJvb20odXNlcl9sZXZlbCwgcm9vbXNfaWQpOworCX0KKworCS8qKgorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiBAcGFyYW0gYXJnT2JqZWN0CisJICogQHJldHVybiAtIGlkIG9mIHRoZSByb29tIGJlaW5nIHNhdmVkLCBudWxsIGluIGNhc2Ugb2YgdGhlIGVycm9yCisJICovCisJcHVibGljIExvbmcgc2F2ZU9yVXBkYXRlUm9vbShTdHJpbmcgU0lELCBPYmplY3QgYXJnT2JqZWN0KSB7CisJCXRyeSB7CisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlsb25nIFVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJCWxvZy5kZWJ1ZygiYXJnT2JqZWN0OiAxIC0gIiArIGFyZ09iamVjdC5nZXRDbGFzcygpLmdldE5hbWUoKSk7CisJCQlAU3VwcHJlc3NXYXJuaW5ncygidW5jaGVja2VkIikKKwkJCUxpbmtlZEhhc2hNYXA8U3RyaW5nLCBPYmplY3Q+IGFyZ09iamVjdE1hcCA9IChMaW5rZWRIYXNoTWFwPFN0cmluZywgT2JqZWN0PikgYXJnT2JqZWN0OworCQkJbG9nLmRlYnVnKCJhcmdPYmplY3Q6IDIgLSAiCisJCQkJCSsgYXJnT2JqZWN0TWFwLmdldCgib3JnYW5pc2F0aW9ucyIpLmdldENsYXNzKCkuZ2V0TmFtZSgpKTsKKwkJCUBTdXBwcmVzc1dhcm5pbmdzKCJ1bmNoZWNrZWQiKQorCQkJTGlzdDxJbnRlZ2VyPiBvcmdhbmlzYXRpb25zID0gKExpc3Q8SW50ZWdlcj4pIGFyZ09iamVjdE1hcAorCQkJCQkuZ2V0KCJvcmdhbmlzYXRpb25zIik7CisJCQlMb25nIHJvb21zX2lkID0gTG9uZy52YWx1ZU9mKAorCQkJCQlhcmdPYmplY3RNYXAuZ2V0KCJyb29tc19pZCIpLnRvU3RyaW5nKCkpLmxvbmdWYWx1ZSgpOworCQkJbG9nLmRlYnVnKCJyb29tc19pZCAiICsgcm9vbXNfaWQpOworCisJCQlAU3VwcHJlc3NXYXJuaW5ncygidW5jaGVja2VkIikKKwkJCUxpc3Q8TWFwPFN0cmluZywgT2JqZWN0Pj4gcm9vbU1vZGVyYXRvcnMgPSAoTGlzdDxNYXA8U3RyaW5nLCBPYmplY3Q+PikgYXJnT2JqZWN0TWFwCisJCQkJCS5nZXQoInJvb21Nb2RlcmF0b3JzIik7CisKKwkJCUludGVnZXIgZGVtb1RpbWUgPSBudWxsOworCQkJaWYgKGFyZ09iamVjdE1hcC5nZXQoImRlbW9UaW1lIikudG9TdHJpbmcoKSAhPSBudWxsCisJCQkJCSYmIGFyZ09iamVjdE1hcC5nZXQoImRlbW9UaW1lIikudG9TdHJpbmcoKS5sZW5ndGgoKSA+IDApIHsKKwkJCQlkZW1vVGltZSA9IEludGVnZXIudmFsdWVPZigKKwkJCQkJCWFyZ09iamVjdE1hcC5nZXQoImRlbW9UaW1lIikudG9TdHJpbmcoKSkuaW50VmFsdWUoKTsKKwkJCX0KKworCQkJbG9uZyByb29tSWQgPSAtMTsKKwkJCWlmIChyb29tc19pZCA9PSAwKSB7CisJCQkJcm9vbUlkID0gcm9vbU1hbmFnZXIuYWRkUm9vbSgKKwkJCQkJCVVzZXJfbGV2ZWwKKwkJCQkJCSwgYXJnT2JqZWN0TWFwLmdldCgibmFtZSIpLnRvU3RyaW5nKCkKKwkJCQkJCSwgTG9uZy52YWx1ZU9mKGFyZ09iamVjdE1hcC5nZXQoInJvb210eXBlc19pZCIpLnRvU3RyaW5nKCkpLmxvbmdWYWx1ZSgpCisJCQkJCQksIGFyZ09iamVjdE1hcC5nZXQoImNvbW1lbnQiKS50b1N0cmluZygpCisJCQkJCQksIExvbmcudmFsdWVPZihhcmdPYmplY3RNYXAuZ2V0KCJudW1iZXJPZlBhcnRpemlwYW50cyIpLnRvU3RyaW5nKCkpLmxvbmdWYWx1ZSgpCisJCQkJCQksIEJvb2xlYW4udmFsdWVPZihhcmdPYmplY3RNYXAuZ2V0KCJpc3B1YmxpYyIpLnRvU3RyaW5nKCkpCisJCQkJCQksIG9yZ2FuaXNhdGlvbnMKKwkJCQkJCSwgQm9vbGVhbi52YWx1ZU9mKGFyZ09iamVjdE1hcC5nZXQoImFwcG9pbnRtZW50IikudG9TdHJpbmcoKSkKKwkJCQkJCSwgQm9vbGVhbi52YWx1ZU9mKGFyZ09iamVjdE1hcC5nZXQoImlzRGVtb1Jvb20iKS50b1N0cmluZygpKQorCQkJCQkJLCBkZW1vVGltZQorCQkJCQkJLCBCb29sZWFuLnZhbHVlT2YoYXJnT2JqZWN0TWFwLmdldCgiaXNNb2RlcmF0ZWRSb29tIikudG9TdHJpbmcoKSkKKwkJCQkJCSwgcm9vbU1vZGVyYXRvcnMKKwkJCQkJCSwgQm9vbGVhbi52YWx1ZU9mKGFyZ09iamVjdE1hcC5nZXQoImFsbG93VXNlclF1ZXN0aW9ucyIpLnRvU3RyaW5nKCkpCisJCQkJCQksIEJvb2xlYW4udmFsdWVPZihhcmdPYmplY3RNYXAuZ2V0KCJpc0F1ZGlvT25seSIpLnRvU3RyaW5nKCkpCisJCQkJCQksIEJvb2xlYW4udmFsdWVPZihhcmdPYmplY3RNYXAuZ2V0KCJhbGxvd0ZvbnRTdHlsZXMiKS50b1N0cmluZygpKQorCQkJCQkJLCBCb29sZWFuLnZhbHVlT2YoYXJnT2JqZWN0TWFwLmdldCgiaXNDbG9zZWQiKS50b1N0cmluZygpKQorCQkJCQkJLCBhcmdPYmplY3RNYXAuZ2V0KCJyZWRpcmVjdFVSTCIpLnRvU3RyaW5nKCkKKwkJCQkJCSwgYXJnT2JqZWN0TWFwLmdldCgiY29uZmVyZW5jZVBpbiIpLnRvU3RyaW5nKCkKKwkJCQkJCSwgTG9uZy52YWx1ZU9mKGFyZ09iamVjdE1hcC5nZXQoIm93bmVySWQiKS50b1N0cmluZygpKS5sb25nVmFsdWUoKQorCQkJCQkJLCBCb29sZWFuLnZhbHVlT2YoYXJnT2JqZWN0TWFwLmdldCgid2FpdEZvclJlY29yZGluZyIpLnRvU3RyaW5nKCkpCisJCQkJCQksIEJvb2xlYW4udmFsdWVPZihhcmdPYmplY3RNYXAuZ2V0KCJhbGxvd1JlY29yZGluZyIpLnRvU3RyaW5nKCkpCisJCQkJCQksIEJvb2xlYW4udmFsdWVPZihhcmdPYmplY3RNYXAuZ2V0KCJoaWRlVG9wQmFyIikudG9TdHJpbmcoKSkKKwkJCQkJCSwgQm9vbGVhbi52YWx1ZU9mKGFyZ09iamVjdE1hcC5nZXQoImhpZGVDaGF0IikudG9TdHJpbmcoKSkKKwkJCQkJCSwgQm9vbGVhbi52YWx1ZU9mKGFyZ09iamVjdE1hcC5nZXQoImhpZGVBY3Rpdml0aWVzQW5kQWN0aW9ucyIpLnRvU3RyaW5nKCkpCisJCQkJCQksIEJvb2xlYW4udmFsdWVPZihhcmdPYmplY3RNYXAuZ2V0KCJoaWRlRmlsZXNFeHBsb3JlciIpLnRvU3RyaW5nKCkpCisJCQkJCQksIEJvb2xlYW4udmFsdWVPZihhcmdPYmplY3RNYXAuZ2V0KCJoaWRlQWN0aW9uc01lbnUiKS50b1N0cmluZygpKQorCQkJCQkJLCBCb29sZWFuLnZhbHVlT2YoYXJnT2JqZWN0TWFwLmdldCgiaGlkZVNjcmVlblNoYXJpbmciKS50b1N0cmluZygpKQorCQkJCQkJLCBCb29sZWFuLnZhbHVlT2YoYXJnT2JqZWN0TWFwLmdldCgiaGlkZVdoaXRlYm9hcmQiKS50b1N0cmluZygpKQorCQkJCQkJLCBCb29sZWFuLnZhbHVlT2YoYXJnT2JqZWN0TWFwLmdldCgic2hvd01pY3JvcGhvbmVTdGF0dXMiKS50b1N0cmluZygpKQorCQkJCQkJLCBCb29sZWFuLnZhbHVlT2YoYXJnT2JqZWN0TWFwLmdldCgiY2hhdE1vZGVyYXRlZCIpLnRvU3RyaW5nKCkpCisJCQkJCQksIEJvb2xlYW4udmFsdWVPZihhcmdPYmplY3RNYXAuZ2V0KCJjaGF0T3BlbmVkIikudG9TdHJpbmcoKSkKKwkJCQkJCSwgQm9vbGVhbi52YWx1ZU9mKGFyZ09iamVjdE1hcC5nZXQoImZpbGVzT3BlbmVkIikudG9TdHJpbmcoKSkKKwkJCQkJCSwgQm9vbGVhbi52YWx1ZU9mKGFyZ09iamVjdE1hcC5nZXQoImF1dG9WaWRlb1NlbGVjdCIpLnRvU3RyaW5nKCkpCisJCQkJCQksIEJvb2xlYW4udmFsdWVPZihhcmdPYmplY3RNYXAuZ2V0KCJzaXBFbmFibGVkIikudG9TdHJpbmcoKSkKKwkJCQkJCSk7CisJCQl9IGVsc2UgaWYgKHJvb21zX2lkID4gMCkgeworCQkJCXJvb21JZCA9IHJvb21NYW5hZ2VyLnVwZGF0ZVJvb20oCisJCQkJCQlVc2VyX2xldmVsCisJCQkJCQksIHJvb21zX2lkCisJCQkJCQksIExvbmcudmFsdWVPZihhcmdPYmplY3RNYXAuZ2V0KCJyb29tdHlwZXNfaWQiKS50b1N0cmluZygpKS5sb25nVmFsdWUoKQorCQkJCQkJLCBhcmdPYmplY3RNYXAuZ2V0KCJuYW1lIikudG9TdHJpbmcoKQorCQkJCQkJLCBCb29sZWFuLnZhbHVlT2YoYXJnT2JqZWN0TWFwLmdldCgiaXNwdWJsaWMiKS50b1N0cmluZygpKQorCQkJCQkJLCBhcmdPYmplY3RNYXAuZ2V0KCJjb21tZW50IikudG9TdHJpbmcoKQorCQkJCQkJLCBMb25nLnZhbHVlT2YoYXJnT2JqZWN0TWFwLmdldCgibnVtYmVyT2ZQYXJ0aXppcGFudHMiKS50b1N0cmluZygpKS5sb25nVmFsdWUoKQorCQkJCQkJLCBvcmdhbmlzYXRpb25zCisJCQkJCQksIEJvb2xlYW4udmFsdWVPZihhcmdPYmplY3RNYXAuZ2V0KCJhcHBvaW50bWVudCIpLnRvU3RyaW5nKCkpCisJCQkJCQksIEJvb2xlYW4udmFsdWVPZihhcmdPYmplY3RNYXAuZ2V0KCJpc0RlbW9Sb29tIikudG9TdHJpbmcoKSkKKwkJCQkJCSwgZGVtb1RpbWUKKwkJCQkJCSwgQm9vbGVhbi52YWx1ZU9mKGFyZ09iamVjdE1hcC5nZXQoImlzTW9kZXJhdGVkUm9vbSIpLnRvU3RyaW5nKCkpCisJCQkJCQksIHJvb21Nb2RlcmF0b3JzCisJCQkJCQksIEJvb2xlYW4udmFsdWVPZihhcmdPYmplY3RNYXAuZ2V0KCJhbGxvd1VzZXJRdWVzdGlvbnMiKS50b1N0cmluZygpKQorCQkJCQkJLCBCb29sZWFuLnZhbHVlT2YoYXJnT2JqZWN0TWFwLmdldCgiaXNBdWRpb09ubHkiKS50b1N0cmluZygpKQorCQkJCQkJLCBCb29sZWFuLnZhbHVlT2YoYXJnT2JqZWN0TWFwLmdldCgiYWxsb3dGb250U3R5bGVzIikudG9TdHJpbmcoKSkKKwkJCQkJCSwgQm9vbGVhbi52YWx1ZU9mKGFyZ09iamVjdE1hcC5nZXQoImlzQ2xvc2VkIikudG9TdHJpbmcoKSkKKwkJCQkJCSwgYXJnT2JqZWN0TWFwLmdldCgicmVkaXJlY3RVUkwiKS50b1N0cmluZygpCisJCQkJCQksIGFyZ09iamVjdE1hcC5nZXQoImNvbmZlcmVuY2VQaW4iKS50b1N0cmluZygpCisJCQkJCQksIExvbmcudmFsdWVPZihhcmdPYmplY3RNYXAuZ2V0KCJvd25lcklkIikudG9TdHJpbmcoKSkubG9uZ1ZhbHVlKCkKKwkJCQkJCSwgQm9vbGVhbi52YWx1ZU9mKGFyZ09iamVjdE1hcC5nZXQoIndhaXRGb3JSZWNvcmRpbmciKS50b1N0cmluZygpKQorCQkJCQkJLCBCb29sZWFuLnZhbHVlT2YoYXJnT2JqZWN0TWFwLmdldCgiYWxsb3dSZWNvcmRpbmciKS50b1N0cmluZygpKQorCQkJCQkJLCBCb29sZWFuLnZhbHVlT2YoYXJnT2JqZWN0TWFwLmdldCgiaGlkZVRvcEJhciIpLnRvU3RyaW5nKCkpCisJCQkJCQksIEJvb2xlYW4udmFsdWVPZihhcmdPYmplY3RNYXAuZ2V0KCJoaWRlQ2hhdCIpLnRvU3RyaW5nKCkpCisJCQkJCQksIEJvb2xlYW4udmFsdWVPZihhcmdPYmplY3RNYXAuZ2V0KCJoaWRlQWN0aXZpdGllc0FuZEFjdGlvbnMiKS50b1N0cmluZygpKQorCQkJCQkJLCBCb29sZWFuLnZhbHVlT2YoYXJnT2JqZWN0TWFwLmdldCgiaGlkZUZpbGVzRXhwbG9yZXIiKS50b1N0cmluZygpKQorCQkJCQkJLCBCb29sZWFuLnZhbHVlT2YoYXJnT2JqZWN0TWFwLmdldCgiaGlkZUFjdGlvbnNNZW51IikudG9TdHJpbmcoKSkKKwkJCQkJCSwgQm9vbGVhbi52YWx1ZU9mKGFyZ09iamVjdE1hcC5nZXQoImhpZGVTY3JlZW5TaGFyaW5nIikudG9TdHJpbmcoKSkKKwkJCQkJCSwgQm9vbGVhbi52YWx1ZU9mKGFyZ09iamVjdE1hcC5nZXQoImhpZGVXaGl0ZWJvYXJkIikudG9TdHJpbmcoKSkKKwkJCQkJCSwgQm9vbGVhbi52YWx1ZU9mKGFyZ09iamVjdE1hcC5nZXQoInNob3dNaWNyb3Bob25lU3RhdHVzIikudG9TdHJpbmcoKSkKKwkJCQkJCSwgQm9vbGVhbi52YWx1ZU9mKGFyZ09iamVjdE1hcC5nZXQoImNoYXRNb2RlcmF0ZWQiKS50b1N0cmluZygpKQorCQkJCQkJLCBCb29sZWFuLnZhbHVlT2YoYXJnT2JqZWN0TWFwLmdldCgiY2hhdE9wZW5lZCIpLnRvU3RyaW5nKCkpCisJCQkJCQksIEJvb2xlYW4udmFsdWVPZihhcmdPYmplY3RNYXAuZ2V0KCJmaWxlc09wZW5lZCIpLnRvU3RyaW5nKCkpCisJCQkJCQksIEJvb2xlYW4udmFsdWVPZihhcmdPYmplY3RNYXAuZ2V0KCJhdXRvVmlkZW9TZWxlY3QiKS50b1N0cmluZygpKQorCQkJCQkJLCBCb29sZWFuLnZhbHVlT2YoYXJnT2JqZWN0TWFwLmdldCgic2lwRW5hYmxlZCIpLnRvU3RyaW5nKCkpCisJCQkJCQkpOworCQkJfQorCQkJCisJCQlyZXR1cm4gcm9vbUlkOworCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCQlsb2cuZXJyb3IoInNhdmVPclVwZGF0ZVJvb20iLCBlKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgTGlzdDxSb29tTW9kZXJhdG9yPiBnZXRSb29tTW9kZXJhdG9yc0J5Um9vbUlkKFN0cmluZyBTSUQsCisJCQlMb25nIHJvb21JZCkgeworCQl0cnkgeworCisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlsb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tVc2VyTGV2ZWwodXNlcl9sZXZlbCkpIHsKKworCQkJCXJldHVybiByb29tTW9kZXJhdG9yc0Rhby5nZXRSb29tTW9kZXJhdG9yQnlSb29tSWQocm9vbUlkKTsKKworCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2dldFJvb21Nb2RlcmF0b3JzQnlSb29tSWRdIiwgZXJyKTsKKwkJfQorCisJCXJldHVybiBudWxsOworCX0KKworCS8qKgorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiBAcGFyYW0gcm9vbXNfaWQKKwkgKiBAcmV0dXJuIC0gaWQgb2YgdGhlIHJvb20gYmVpbmcgZGVsZXRlZAorCSAqLworCXB1YmxpYyBMb25nIGRlbGV0ZVJvb20oU3RyaW5nIFNJRCwgbG9uZyByb29tc19pZCkgeworCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCWxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQlyZXR1cm4gcm9vbU1hbmFnZXIuZGVsZXRlUm9vbUJ5SWQodXNlcl9sZXZlbCwgcm9vbXNfaWQpOworCX0KKwkKKwkvKioKKwkgKiByZXR1cm4gYWxsIHBhcnRpY2lwYW50cyBvZiBhIHJvb20KKwkgKiAKKwkgKiBAcGFyYW0gcm9vbV9pZAorCSAqIEByZXR1cm4gLSB0cnVlIGlmIHJvb20gaXMgZnVsbCwgZmFsc2Ugb3RoZXJ3aXNlCisJICovCisJcHVibGljIGJvb2xlYW4gaXNSb29tRnVsbChMb25nIHJvb21faWQpIHsKKwkJdHJ5IHsKKwkJCVJvb20gcm9vbSA9IHJvb21EYW8uZ2V0KHJvb21faWQpOworCQkJCisJCQlpZiAocm9vbS5nZXROdW1iZXJPZlBhcnRpemlwYW50cygpIDw9IHRoaXMuc2Vzc2lvbk1hbmFnZXIKKwkJCQkJLmdldENsaWVudExpc3RCeVJvb20ocm9vbV9pZCkuc2l6ZSgpKSB7CisJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJCQkKKwkJCXJldHVybiBmYWxzZTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbaXNSb29tRnVsbF0iLCBlcnIpOworCQl9CisJCXJldHVybiB0cnVlOworCX0KKworCS8qKgorCSAqIHJldHVybiBhbGwgcGFydGljaXBhbnRzIG9mIGEgcm9vbQorCSAqIAorCSAqIEBwYXJhbSByb29tX2lkCisJICogQHJldHVybiAtIGFsbCBwYXJ0aWNpcGFudHMgb2YgYSByb29tCisJICovCisJcHVibGljIExpc3Q8Q2xpZW50PiBnZXRSb29tQ2xpZW50c0xpc3RCeVJvb21JZChMb25nIHJvb21faWQpIHsKKwkJcmV0dXJuIHNlc3Npb25NYW5hZ2VyLmdldENsaWVudExpc3RCeVJvb20ocm9vbV9pZCk7CisJfQorCisJLyoqCisJICogaW52b2tlZCBpbiB0aGUgYWRtaW4gaW50ZXJmYWNlIHRvIHNob3cgdGhlIGNvbm5lY3Rpb25zIGN1cnJlbnRseSBvcGVuCisJICogCisJICogQHBhcmFtIFNJRAorCSAqIEBwYXJhbSBzdGFydAorCSAqIEBwYXJhbSBtYXgKKwkgKiBAcGFyYW0gb3JkZXJieQorCSAqIEBwYXJhbSBhc2MKKwkgKiBAcmV0dXJuIC0gbGlzdCBvZiB0aGUgY29ubmVjdGlvbnMgY3VycmVudGx5IG9wZW4KKwkgKi8KKwlwdWJsaWMgU2VhcmNoUmVzdWx0PENsaWVudD4gZ2V0Um9vbUNsaWVudHNNYXAoU3RyaW5nIFNJRCwgaW50IHN0YXJ0LCBpbnQgbWF4LAorCQkJU3RyaW5nIG9yZGVyYnksIGJvb2xlYW4gYXNjKSB7CisJCXRyeSB7CisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrQWRtaW5MZXZlbCh1c2VyX2xldmVsKSkgeworCQkJCXJldHVybiB0aGlzLnNlc3Npb25NYW5hZ2VyLmdldExpc3RCeVN0YXJ0QW5kTWF4KHN0YXJ0LCBtYXgsCisJCQkJCQlvcmRlcmJ5LCBhc2MpOworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRSb29tQ2xpZW50c01hcF0iLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKwkKKwkvKioKKwkgKiBHZXQgc29tZSBzdGF0aXN0aWNzIGFib3V0IHRoZSBjdXJyZW50IHNlc3Npb25zIGhhbmRsZWQgYnkgdGhpcyBpbnN0YW5jZQorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiBAcmV0dXJuIC0gc2Vzc2lvbiBzdGF0aXN0aWNzIGFzIFN0cmluZworCSAqLworCXB1YmxpYyBTdHJpbmcgZ2V0U2Vzc2lvblN0YXRpc3RpY3MoU3RyaW5nIFNJRCkgeworCQl0cnkgeworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja0FkbWluTGV2ZWwodXNlcl9sZXZlbCkpIHsKKwkJCQlyZXR1cm4gdGhpcy5zZXNzaW9uTWFuYWdlci5nZXRTZXNzaW9uU3RhdGlzdGljcygpOworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRSb29tQ2xpZW50c01hcF0iLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMaXN0PFJvb20+IGdldFJvb21zV2l0aEN1cnJlbnRVc2Vyc0J5TGlzdChTdHJpbmcgU0lELCBpbnQgc3RhcnQsCisJCQlpbnQgbWF4LCBTdHJpbmcgb3JkZXJieSwgYm9vbGVhbiBhc2MpIHsKKwkJbG9nLmRlYnVnKCJnZXRSb29tcyIpOworCisJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCXJldHVybiByb29tTWFuYWdlci5nZXRSb29tc1dpdGhDdXJyZW50VXNlcnNCeUxpc3QodXNlcl9sZXZlbCwgc3RhcnQsCisJCQkJbWF4LCBvcmRlcmJ5LCBhc2MpOworCX0KKworCXB1YmxpYyBMaXN0PFJvb20+IGdldFJvb21zV2l0aEN1cnJlbnRVc2Vyc0J5TGlzdEFuZFR5cGUoU3RyaW5nIFNJRCwKKwkJCWludCBzdGFydCwgaW50IG1heCwgU3RyaW5nIG9yZGVyYnksIGJvb2xlYW4gYXNjLAorCQkJU3RyaW5nIGV4dGVybmFsUm9vbVR5cGUpIHsKKwkJbG9nLmRlYnVnKCJnZXRSb29tcyIpOworCisJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCXJldHVybiByb29tTWFuYWdlci5nZXRSb29tc1dpdGhDdXJyZW50VXNlcnNCeUxpc3RBbmRUeXBlKHVzZXJfbGV2ZWwsCisJCQkJc3RhcnQsIG1heCwgb3JkZXJieSwgYXNjLCBleHRlcm5hbFJvb21UeXBlKTsKKwl9CisKKwlwdWJsaWMgUm9vbSBnZXRSb29tQnlPd25lckFuZFR5cGUoU3RyaW5nIFNJRCwgTG9uZyByb29tdHlwZXNJZCwKKwkJCVN0cmluZyByb29tTmFtZSkgeworCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1VzZXJMZXZlbCh1c2VyX2xldmVsKSkgeworCQkJcmV0dXJuIHJvb21NYW5hZ2VyLmdldFJvb21CeU93bmVyQW5kVHlwZUlkKHVzZXJzX2lkLAorCQkJCQlyb29tdHlwZXNJZCwgcm9vbU5hbWUpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCS8qKgorCSAqIEdpdmVzIGEge0BsaW5rIFNlcnZlcn0gZW50aXR5LCBpbiBjYXNlIHRoZXJlIGlzIGEgY2x1c3RlciBjb25maWd1cmVkCisJICogCisJICogQHBhcmFtIFNJRAorCSAqIEBwYXJhbSByb29tSWQKKwkgKiBAcmV0dXJuIG51bGwgbWVhbnMgdGhlIHVzZXIgc2hvdWxkIHN0YXkgb24gdGhlIG1hc3Rlciwgb3RoZXJ3aXNlIGEKKwkgKiAgICAgICAgIHtAbGluayBTZXJ2ZXJ9IGVudGl0eSBpcyByZXR1cm5lZAorCSAqLworCXB1YmxpYyBTZXJ2ZXJEVE8gZ2V0U2VydmVyRm9yU2Vzc2lvbihTdHJpbmcgU0lELCBsb25nIHJvb21JZCkgeworCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1VzZXJMZXZlbCh1c2VyX2xldmVsKSkgeworCQkJTGlzdDxTZXJ2ZXI+IHNlcnZlckxpc3QgPSBzZXJ2ZXJEYW8uZ2V0QWN0aXZlU2VydmVycygpOworCisJCQlsb25nIG1pbmltdW0gPSAtMTsKKwkJCVNlcnZlciByZXN1bHQgPSBudWxsOworCQkJSGFzaE1hcDxTZXJ2ZXIsIExpc3Q8TG9uZz4+IGFjdGl2ZVJvb21zTWFwID0gbmV3IEhhc2hNYXA8U2VydmVyLCBMaXN0PExvbmc+PigpOworCQkJZm9yIChTZXJ2ZXIgc2VydmVyIDogc2VydmVyTGlzdCkgeworCQkJCUxpc3Q8TG9uZz4gcm9vbUlkcyA9IHNlc3Npb25NYW5hZ2VyLmdldEFjdGl2ZVJvb21JZHNCeVNlcnZlcihzZXJ2ZXIpOworCQkJCWlmIChyb29tSWRzLmNvbnRhaW5zKHJvb21JZCkpIHsKKwkJCQkJLy8gaWYgdGhlIHJvb20gaXMgYWxyZWFkeSBvcGVuZWQgb24gYSBzZXJ2ZXIsIHJlZGlyZWN0IHRoZSB1c2VyIHRvIHRoYXQgb25lLAorCQkJCQlsb2cuZGVidWcoIlJvb20gaXMgYWxyZWFkeSBvcGVuZWQgb24gYSBzZXJ2ZXIgIiArIHNlcnZlci5nZXRBZGRyZXNzKCkpOworCQkJCQlyZXR1cm4gbmV3IFNlcnZlckRUTyhzZXJ2ZXIpOworCQkJCX0KKwkJCQlhY3RpdmVSb29tc01hcC5wdXQoc2VydmVyLCByb29tSWRzKTsKKwkJCX0KKwkJCWZvciAoU2VydmVyIHNlcnZlciA6IGFjdGl2ZVJvb21zTWFwLmtleVNldCgpKSB7CisJCQkJTGlzdDxMb25nPiByb29tSWRzID0gYWN0aXZlUm9vbXNNYXAuZ2V0KHNlcnZlcik7CisJCQkJTG9uZyBjYXBhY2l0eSA9IHJvb21EYW8uZ2V0Um9vbXNDYXBhY2l0eUJ5SWRzKHJvb21JZHMpOworCQkJCWlmIChtaW5pbXVtIDwgMCB8fCBjYXBhY2l0eSA8IG1pbmltdW0pIHsKKwkJCQkJbWluaW11bSA9IGNhcGFjaXR5OworCQkJCQlyZXN1bHQgPSBzZXJ2ZXI7CisJCQkJfQorCQkJCWxvZy5kZWJ1ZygiQ2hlY2tpbmcgc2VydmVyOiAiICsgc2VydmVyICsgIiBOdW1iZXIgb2Ygcm9vbXMgIiArIHJvb21JZHMuc2l6ZSgpICsgIiBSb29tSWRzOiAiCisJCQkJCQkrIHJvb21JZHMgKyAiIG1heChTdW0pOiAiICsgY2FwYWNpdHkpOworCQkJfQorCQkJcmV0dXJuIHJlc3VsdCA9PSBudWxsID8gbnVsbCA6IG5ldyBTZXJ2ZXJEVE8ocmVzdWx0KTsKKwkJfQorCisJCWxvZy5lcnJvcigiQ291bGQgbm90IGdldCBzZXJ2ZXIgZm9yIGNsdXN0ZXIgc2Vzc2lvbiIpOworCQkvLyBFbXB0eSBzZXJ2ZXIgb2JqZWN0CisJCXJldHVybiBudWxsOworCX0KKwkKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9yZW1vdGUvQ29uZmlndXJhdGlvblNlcnZpY2UuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9yZW1vdGUvQ29uZmlndXJhdGlvblNlcnZpY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzY3NDMxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3JlbW90ZS9Db25maWd1cmF0aW9uU2VydmljZS5qYXZhCkBAIC0wLDAgKzEsMTI4IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnJlbW90ZTsKKworaW1wb3J0IGphdmEudXRpbC5MaW5rZWRIYXNoTWFwOworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuQXV0aExldmVsVXRpbDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLlNlc3Npb25kYXRhRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuZGFvLkNvbmZpZ3VyYXRpb25EYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iZWFucy5iYXNpYy5TZWFyY2hSZXN1bHQ7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLlVzZXJNYW5hZ2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLkNvbmZpZ3VyYXRpb247CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKKworLyoqCisgKiBSZW1vdGVseSBhdmFpbGFibGUgdmlhIFJUTVAKKyAqIAorICogQGF1dGhvciBzd2FnbmVyCisgKiAKKyAqLworcHVibGljIGNsYXNzIENvbmZpZ3VyYXRpb25TZXJ2aWNlIHsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoCisJCQlDb25maWd1cmF0aW9uU2VydmljZS5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCisJQEF1dG93aXJlZAorCXByaXZhdGUgQXV0aExldmVsVXRpbCBhdXRoTGV2ZWxVdGlsOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFNlc3Npb25kYXRhRGFvIHNlc3Npb25kYXRhRGFvOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIENvbmZpZ3VyYXRpb25EYW8gY29uZmlndXJhdGlvbkRhbzsKKyAgICBAQXV0b3dpcmVkCisgICAgcHJpdmF0ZSBVc2VyTWFuYWdlciB1c2VyTWFuYWdlcjsKKwkKKwkvKgorCSAqIENvbmZpZ3VyYXRpb24gSGFuZGxlcnMKKwkgKi8gICAgCisgICAgcHVibGljIFNlYXJjaFJlc3VsdDxDb25maWd1cmF0aW9uPiBnZXRBbGxDb25mKFN0cmluZyBTSUQsIGludCBzdGFydCAsaW50IG1heCwgU3RyaW5nIG9yZGVyYnksIGJvb2xlYW4gYXNjKXsKKyAgICAgICAgTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tBZG1pbkxldmVsKHVzZXJfbGV2ZWwpKSB7CisJCQlyZXR1cm4gY29uZmlndXJhdGlvbkRhby5nZXRBbGxDb25mKHN0YXJ0LCBtYXgsIG9yZGVyYnksIGFzYyk7CisJCX0gZWxzZSB7CisJCQlsb2cuZXJyb3IoIltnZXRDb25mQnlDb25maWd1cmF0aW9uSWRdIFBlcm1pc3Npb24gZGVuaWVkICIKKwkJCQkJKyB1c2VyX2xldmVsKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKyAgICB9CisgICAgCisJLyoqCisJICogR2V0IGEgY29uZmlndXJhdGlvbiBieSBpZCwgdXNlcnMgb2JqZWN0IGlzIGxhenkgbG9hZGVkCisJICogCisJICogQHBhcmFtIFNJRAorCSAqIEBwYXJhbSBjb25maWd1cmF0aW9uX2lkCisJICogQHJldHVybiAtIGNvbmZpZ3VyYXRpb24gd2l0aCB0aGUgaWQgZ2l2ZW4sIG51bGwgb3RoZXJ3aXNlCisJICovCisgICAgcHVibGljIENvbmZpZ3VyYXRpb24gZ2V0Q29uZkJ5Q29uZmlndXJhdGlvbklkKFN0cmluZyBTSUQsbG9uZyBjb25maWd1cmF0aW9uX2lkKXsKKyAgICAgICAgTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworICAgICAgICBMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsgICAgIAkKKwkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tBZG1pbkxldmVsKHVzZXJfbGV2ZWwpKSB7CisJCQlyZXR1cm4gY29uZmlndXJhdGlvbkRhby5nZXQoY29uZmlndXJhdGlvbl9pZCk7CisJCX0gZWxzZSB7CisJCQlsb2cuZXJyb3IoIltnZXRDb25mQnlDb25maWd1cmF0aW9uSWRdIFBlcm1pc3Npb24gZGVuaWVkICIKKwkJCQkJKyB1c2VyX2xldmVsKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKyAgICB9CisgICAgCisJLyoqCisJICogU2F2ZSBvciB1cGRhdGUgYSBjb25maWd1cmF0aW9uCisJICogCisJICogQHBhcmFtIFNJRAorCSAqIEBwYXJhbSB2YWx1ZXMKKwkgKiBAcmV0dXJuIC0gaWQgb2YgY29uZmlndXJhdGlvbiBiZWluZyB1cGRhdGVkLCBudWxsIG90aGVyd2lzZQorCSAqLworICAgIHB1YmxpYyBMb25nIHNhdmVPclVwZGF0ZUNvbmZpZ3VyYXRpb24oU3RyaW5nIFNJRCwgTGlua2VkSGFzaE1hcDxTdHJpbmcsID8+IHZhbHVlcyl7CisgICAgICAgIExvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrQWRtaW5MZXZlbCh1c2VyX2xldmVsKSkgeworCQkJcmV0dXJuIGNvbmZpZ3VyYXRpb25EYW8uc2F2ZU9yVXBkYXRlQ29uZmlndXJhdGlvbih2YWx1ZXMsCisJCQkJCXVzZXJzX2lkKTsKKwkJfSBlbHNlIHsKKwkJCWxvZy5lcnJvcigiW2dldENvbmZCeUNvbmZpZ3VyYXRpb25JZF0gUGVybWlzc2lvbiBkZW5pZWQgIgorCQkJCQkrIHVzZXJfbGV2ZWwpOworCQl9CisJCXJldHVybiBudWxsOworICAgIH0KKyAgICAKKwkvKioKKwkgKiBkZWxldGUgYSBjb25maWd1cmF0aW9uCisJICogCisJICogQHBhcmFtIFNJRAorCSAqIEBwYXJhbSB2YWx1ZXMKKwkgKiBAcmV0dXJuIC0gaWQgb2YgY29uZmlndXJhdGlvbiBiZWluZyBkZWxldGVkIGluIGNhc2Ugb2Ygc3VjY2VzcywgbnVsbCBvdGhlcndpc2UKKwkgKi8KKyAgICBwdWJsaWMgTG9uZyBkZWxldGVDb25maWd1cmF0aW9uKFN0cmluZyBTSUQsIExpbmtlZEhhc2hNYXA8U3RyaW5nLCA/PiB2YWx1ZXMpeworICAgICAgICBMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja0FkbWluTGV2ZWwodXNlcl9sZXZlbCkpIHsKKwkJCXJldHVybiBjb25maWd1cmF0aW9uRGFvLmRlbGV0ZUNvbmZCeUNvbmZpZ3VyYXRpb24odmFsdWVzLAorCQkJCQl1c2Vyc19pZCk7CisJCX0gZWxzZSB7CisJCQlsb2cuZXJyb3IoIltnZXRDb25mQnlDb25maWd1cmF0aW9uSWRdIFBlcm1pc3Npb24gZGVuaWVkICIKKwkJCQkJKyB1c2VyX2xldmVsKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKyAgICB9CisJICAgIAorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3JlbW90ZS9Db250YWN0U2VydmljZS5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3JlbW90ZS9Db250YWN0U2VydmljZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5YTMwMWIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcmVtb3RlL0NvbnRhY3RTZXJ2aWNlLmphdmEKQEAgLTAsMCArMSwzMCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5yZW1vdGU7CisKKworLyoqCisgKiAKKyAqIEBhdXRob3Igc3dhZ25lcgorICoKKyAqLworcHVibGljIGNsYXNzIENvbnRhY3RTZXJ2aWNlIHsKKwkKKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3JlbW90ZS9Eb2N1bWVudFNlcnZpY2UuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9yZW1vdGUvRG9jdW1lbnRTZXJ2aWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQyOGM4NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9yZW1vdGUvRG9jdW1lbnRTZXJ2aWNlLmphdmEKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5yZW1vdGU7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CisKKy8qKgorICogCisgKiBAYXV0aG9yIHN3YWduZXIKKyAqIAorICovCitwdWJsaWMgY2xhc3MgRG9jdW1lbnRTZXJ2aWNlIHsKKworCUBTdXBwcmVzc1dhcm5pbmdzKCJ1bnVzZWQiKQorCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoCisJCQlEb2N1bWVudFNlcnZpY2UuY2xhc3MsIE9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKworCXB1YmxpYyBMaXN0PD8+IGdldFVzZXJGaWxlcyhTdHJpbmcgU0lELCBTdHJpbmcgcGFyZW50Rm9sZGVyKSB7CisKKwkJcmV0dXJuIG51bGw7CisJfQorCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcmVtb3RlL0Vycm9yU2VydmljZS5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3JlbW90ZS9FcnJvclNlcnZpY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjdiZDViCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3JlbW90ZS9FcnJvclNlcnZpY2UuamF2YQpAQCAtMCwwICsxLDgwIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnJlbW90ZTsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLkZpZWxkTWFuYWdlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLmRhby5FcnJvckRhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJlYW5zLmJhc2ljLkVycm9yUmVzdWx0OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLkVycm9yVmFsdWU7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMubGFuZy5GaWVsZGxhbmd1YWdlc3ZhbHVlczsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uQXV0b3dpcmVkOworCisvKioKKyAqIAorICogQGF1dGhvciBzd2FnbmVyCisgKiAKKyAqLworcHVibGljIGNsYXNzIEVycm9yU2VydmljZSB7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcigKKwkJCUVycm9yU2VydmljZS5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCisJQEF1dG93aXJlZAorCXByaXZhdGUgRmllbGRNYW5hZ2VyIGZpZWxkTWFuYWdlcjsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBFcnJvckRhbyBlcnJvck1hbmFnZW1lbnQ7CisKKwkvKioKKwkgKiBHZXRzIGFuIEVycm9yLU9iamVjdCBieSBpdHMgaWQgVE9ETzogYWRkIGVycm9yLWNvZGUtaGFuZGxlcnMgLTIwCisJICogZHVwbGljYXRlIEZpbGVOYW1lIC0yMSBGaWxlTmFtZSB0b28gc2hvcnQgKGxlbmd0aCA9IDApIGFuZCBtYWtlIHRoZQorCSAqIHBlcnNpc3RlbnQgaW4gdGhlIERhdGFCYXNlCisJICogCisJICogQHBhcmFtIFNJRAorCSAqIEBwYXJhbSBlcnJvcmlkCisJICogQHJldHVybiAtIEVycm9yUmVzdWx0IG9iamVjdCB3aXRoIHRoZSBpZCBnaXZlbgorCSAqLworCXB1YmxpYyBFcnJvclJlc3VsdCBnZXRFcnJvckJ5Q29kZShTdHJpbmcgU0lELCBMb25nIGVycm9yaWQsIExvbmcgbGFuZ3VhZ2VfaWQpIHsKKwkJaWYgKGVycm9yaWQgPCAwKSB7CisJCQlsb2cuZGVidWcoImVycm9yaWQsIGxhbmd1YWdlX2lkOiAiICsgZXJyb3JpZCArICJ8IiArIGxhbmd1YWdlX2lkKTsKKwkJCUVycm9yVmFsdWUgZVZhbHVlcyA9IGVycm9yTWFuYWdlbWVudC5nZXRFcnJvclZhbHVlc0J5SWQoLTEKKwkJCQkJKiBlcnJvcmlkKTsKKwkJCWlmIChlVmFsdWVzICE9IG51bGwpIHsKKwkJCQlsb2cuZGVidWcoImVWYWx1ZXMuZ2V0RmllbGR2YWx1ZXNfaWQoKSA9ICIgKyBlVmFsdWVzLmdldEZpZWxkdmFsdWVzX2lkKCkpOworCQkJCWxvZy5kZWJ1ZygiZVZhbHVlcy5nZXRFcnJvclR5cGUoKSA9ICIgKyBlcnJvck1hbmFnZW1lbnQuZ2V0RXJyb3JUeXBlKGVWYWx1ZXMuZ2V0RXJyb3J0eXBlX2lkKCkpKTsKKwkJCQlGaWVsZGxhbmd1YWdlc3ZhbHVlcyBlcnJvclZhbHVlID0gZmllbGRNYW5hZ2VyCisJCQkJCQkuZ2V0RmllbGRCeUlkQW5kTGFuZ3VhZ2UoZVZhbHVlcy5nZXRGaWVsZHZhbHVlc19pZCgpLAorCQkJCQkJCQlsYW5ndWFnZV9pZCk7CisJCQkJRmllbGRsYW5ndWFnZXN2YWx1ZXMgdHlwZVZhbHVlID0gZmllbGRNYW5hZ2VyCisJCQkJCQkuZ2V0RmllbGRCeUlkQW5kTGFuZ3VhZ2UoZXJyb3JNYW5hZ2VtZW50LmdldEVycm9yVHlwZShlVmFsdWVzLmdldEVycm9ydHlwZV9pZCgpKQorCQkJCQkJCQkuZ2V0RmllbGR2YWx1ZXNfaWQoKSwgbGFuZ3VhZ2VfaWQpOworCQkJCWlmIChlcnJvclZhbHVlICE9IG51bGwpIHsKKwkJCQkJcmV0dXJuIG5ldyBFcnJvclJlc3VsdChlcnJvcmlkLCBlcnJvclZhbHVlLmdldFZhbHVlKCksCisJCQkJCQkJdHlwZVZhbHVlLmdldFZhbHVlKCkpOworCQkJCX0KKwkJCX0KKwkJfSBlbHNlIHsKKwkJCXJldHVybiBuZXcgRXJyb3JSZXN1bHQoZXJyb3JpZCwKKwkJCQkJIkVycm9yIC4uLiBwbGVhc2UgY2hlY2sgeW91ciBpbnB1dCIsICJFcnJvciIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3JlbW90ZS9GTFZSZWNvcmRlclNlcnZpY2UuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9yZW1vdGUvRkxWUmVjb3JkZXJTZXJ2aWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTdlYTFjYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9yZW1vdGUvRkxWUmVjb3JkZXJTZXJ2aWNlLmphdmEKQEAgLTAsMCArMSwxMDQxIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnJlbW90ZTsKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworaW1wb3J0IGphdmEudXRpbC5TZXQ7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5BdXRoTGV2ZWxVdGlsOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuU2Vzc2lvbmRhdGFEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jb25mZXJlbmNlLmRhby5Sb29tRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuZmx2cmVjb3JkLkZsdlJlY29yZGluZ0RhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmZsdnJlY29yZC5GbHZSZWNvcmRpbmdMb2dEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5mbHZyZWNvcmQuRmx2UmVjb3JkaW5nTWV0YURhdGFEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5mbHZyZWNvcmQuRmx2UmVjb3JkaW5nTWV0YURlbHRhRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuZmx2cmVjb3JkLmJlYW5zLkZMVlJlY29yZGVyT2JqZWN0OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuZmx2cmVjb3JkLmNvbnZlcnRlci5GbHZJbnRlcnZpZXdDb252ZXJ0ZXJUYXNrOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuZmx2cmVjb3JkLmNvbnZlcnRlci5GbHZJbnRlcnZpZXdSZUNvbnZlcnRlclRhc2s7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5mbHZyZWNvcmQuY29udmVydGVyLkZsdlJlY29yZGVyQ29udmVydGVyVGFzazsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmZsdnJlY29yZC5saXN0ZW5lci5CYXNlU3RyZWFtTGlzdGVuZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5mbHZyZWNvcmQubGlzdGVuZXIuU3RyZWFtQXVkaW9MaXN0ZW5lcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmZsdnJlY29yZC5saXN0ZW5lci5TdHJlYW1WaWRlb0xpc3RlbmVyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEudXNlci5Vc2VyTWFuYWdlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuZGFvLlVzZXJzRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmZsdnJlY29yZC5GbHZSZWNvcmRpbmc7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuZmx2cmVjb3JkLkZsdlJlY29yZGluZ0xvZzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5mbHZyZWNvcmQuRmx2UmVjb3JkaW5nTWV0YURhdGE7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbS5DbGllbnQ7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucmVtb3RlLnJlZDUuU2NvcGVBcHBsaWNhdGlvbkFkYXB0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2Vzc2lvbi5JU2Vzc2lvbk1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMuT21GaWxlSGVscGVyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLm1hdGguQ2FsZW5kYXJQYXR0ZXJuczsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5yZWQ1LnNlcnZlci5hcGkuSUNvbm5lY3Rpb247CitpbXBvcnQgb3JnLnJlZDUuc2VydmVyLmFwaS5SZWQ1OworaW1wb3J0IG9yZy5yZWQ1LnNlcnZlci5hcGkuc2NvcGUuSVNjb3BlOworaW1wb3J0IG9yZy5yZWQ1LnNlcnZlci5hcGkuc2VydmljZS5JUGVuZGluZ1NlcnZpY2VDYWxsOworaW1wb3J0IG9yZy5yZWQ1LnNlcnZlci5hcGkuc2VydmljZS5JUGVuZGluZ1NlcnZpY2VDYWxsYmFjazsKK2ltcG9ydCBvcmcucmVkNS5zZXJ2ZXIuYXBpLnNlcnZpY2UuSVNlcnZpY2VDYXBhYmxlQ29ubmVjdGlvbjsKK2ltcG9ydCBvcmcucmVkNS5zZXJ2ZXIuYXBpLnN0cmVhbS5JU3RyZWFtTGlzdGVuZXI7CitpbXBvcnQgb3JnLnJlZDUuc2VydmVyLnN0cmVhbS5DbGllbnRCcm9hZGNhc3RTdHJlYW07CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5BdXRvd2lyZWQ7CisKK3B1YmxpYyBjbGFzcyBGTFZSZWNvcmRlclNlcnZpY2UgaW1wbGVtZW50cyBJUGVuZGluZ1NlcnZpY2VDYWxsYmFjayB7CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKAorCQkJRkxWUmVjb3JkZXJTZXJ2aWNlLmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisJCisJLyoqCisJICogU3RvcmVzIGEgcmVmZXJlbmNlIHRvIGFsbCBhdmFpbGFibGUgbGlzdGVuZXJzCisJICogd2UgbmVlZCB0aGF0IHJlZmVyZW5jZSwgYXMgdGhlIGludGVybmFsIHJlZmVyZW5jZXMgc3RvcmVkIAorCSAqIHdpdGggdGhlIHJlZDUgc3RyZWFtIG9iamVjdCBtaWdodCBiZSBnb25lIHdoZW4gdGhlIHVzZXIgCisJICogY2xvc2VzIHRoZSBicm93c2VyLgorCSAqIEJ1dCBlYWNoIGxpc3RlbmVyIGhhcyBhbiBhc3luY2hyb25vdXMgY29tcG9uZW50IHRoYXQgbmVlZHMgdG8gYmUgY2xvc2VkIAorCSAqIG5vIG1hdHRlciBob3cgdGhlIHVzZXIgbGVhdmVzIHRoZSBhcHBsaWNhdGlvbiEKKwkgKi8KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBNYXA8TG9uZyxCYXNlU3RyZWFtTGlzdGVuZXI+IHN0cmVhbUxpc3RlbmVycyA9IG5ldyBIYXNoTWFwPExvbmcsQmFzZVN0cmVhbUxpc3RlbmVyPigpOworCisJLy8gU3ByaW5nIEJlYW5zCisJQEF1dG93aXJlZAorCXByaXZhdGUgSVNlc3Npb25NYW5hZ2VyIHNlc3Npb25NYW5hZ2VyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEZsdlJlY29yZGluZ0RhbyBmbHZSZWNvcmRpbmdEYW9JbXBsOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEZsdlJlY29yZGluZ01ldGFEYXRhRGFvIGZsdlJlY29yZGluZ01ldGFEYXRhRGFvOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFVzZXJzRGFvIHVzZXJzRGFvSW1wbDsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBSb29tRGFvIHJvb21EYW87CisJQEF1dG93aXJlZAorCXByaXZhdGUgRmx2UmVjb3JkZXJDb252ZXJ0ZXJUYXNrIGZsdlJlY29yZGVyQ29udmVydGVyVGFzazsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBGbHZJbnRlcnZpZXdDb252ZXJ0ZXJUYXNrIGZsdkludGVydmlld0NvbnZlcnRlclRhc2s7CisJQEF1dG93aXJlZAorCXByaXZhdGUgRmx2SW50ZXJ2aWV3UmVDb252ZXJ0ZXJUYXNrIGZsdkludGVydmlld1JlQ29udmVydGVyVGFzazsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBGbHZSZWNvcmRpbmdMb2dEYW8gZmx2UmVjb3JkaW5nTG9nRGFvSW1wbDsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBTZXNzaW9uZGF0YURhbyBzZXNzaW9uZGF0YURhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBVc2VyTWFuYWdlciB1c2VyTWFuYWdlcjsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBTY29wZUFwcGxpY2F0aW9uQWRhcHRlciBzY29wZUFwcGxpY2F0aW9uQWRhcHRlcjsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBBdXRoTGV2ZWxVdGlsIGF1dGhMZXZlbFV0aWw7CisJQEF1dG93aXJlZAorCXByaXZhdGUgRmx2UmVjb3JkaW5nTWV0YURlbHRhRGFvIGZsdlJlY29yZGluZ01ldGFEZWx0YURhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBGbHZSZWNvcmRpbmdNZXRhRGF0YURhbyBmbHZSZWNvcmRpbmdNZXRhRGF0YURhb0ltcGwgPSBudWxsOworCisJcHVibGljIHZvaWQgcmVzdWx0UmVjZWl2ZWQoSVBlbmRpbmdTZXJ2aWNlQ2FsbCBhcmcwKSB7CisJfQorCisJcHVibGljIENsaWVudCBjaGVja0ZvclJlY29yZGluZygpIHsKKwkJdHJ5IHsKKworCQkJSUNvbm5lY3Rpb24gY3VycmVudCA9IFJlZDUuZ2V0Q29ubmVjdGlvbkxvY2FsKCk7CisJCQlTdHJpbmcgc3RyZWFtaWQgPSBjdXJyZW50LmdldENsaWVudCgpLmdldElkKCk7CisKKwkJCWxvZy5kZWJ1ZygiZ2V0Q3VycmVudFJvb21DbGllbnQgLTItICIgKyBzdHJlYW1pZCk7CisKKwkJCUNsaWVudCBjdXJyZW50Q2xpZW50ID0gdGhpcy5zZXNzaW9uTWFuYWdlcgorCQkJCQkuZ2V0Q2xpZW50QnlTdHJlYW1JZChzdHJlYW1pZCwgbnVsbCk7CisKKwkJCWZvciAoQ2xpZW50IHJjbCA6IHNlc3Npb25NYW5hZ2VyLmdldENsaWVudExpc3RCeVJvb20oY3VycmVudENsaWVudC5nZXRSb29tX2lkKCkpKSB7CisJCQkJaWYgKHJjbC5nZXRJc1JlY29yZGluZygpKSB7CisJCQkJCXJldHVybiByY2w7CisJCQkJfQorCQkJfQorCisJCQlyZXR1cm4gbnVsbDsKKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltjaGVja0ZvclJlY29yZGluZ10iLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXByaXZhdGUgc3RhdGljIFN0cmluZyBnZW5lcmF0ZUZpbGVOYW1lKExvbmcgZmx2UmVjb3JkaW5nX2lkLCBTdHJpbmcgc3RyZWFtaWQpCisJCQl0aHJvd3MgRXhjZXB0aW9uIHsKKwkJU3RyaW5nIGRhdGVTdHJpbmcgPSBDYWxlbmRhclBhdHRlcm5zCisJCQkJLmdldFRpbWVGb3JTdHJlYW1JZChuZXcgamF2YS51dGlsLkRhdGUoKSk7CisJCXJldHVybiAicmVjXyIgKyBmbHZSZWNvcmRpbmdfaWQgKyAiX3N0cmVhbV8iICsgc3RyZWFtaWQgKyAiXyIKKwkJCQkrIGRhdGVTdHJpbmc7CisKKwl9CisKKwlwdWJsaWMgU3RyaW5nIHJlY29yZE1lZXRpbmdTdHJlYW0oU3RyaW5nIHJvb21SZWNvcmRpbmdOYW1lLCBTdHJpbmcgY29tbWVudCwKKwkJCUJvb2xlYW4gaXNJbnRlcnZpZXcpIHsKKwkJdHJ5IHsKKwkJCQorCQkJbG9nLmRlYnVnKCI6OiByZWNvcmRNZWV0aW5nU3RyZWFtIDo6Iik7CisKKwkJCUlDb25uZWN0aW9uIGN1cnJlbnQgPSBSZWQ1LmdldENvbm5lY3Rpb25Mb2NhbCgpOworCQkJQ2xpZW50IGN1cnJlbnRDbGllbnQgPSB0aGlzLnNlc3Npb25NYW5hZ2VyCisJCQkJCS5nZXRDbGllbnRCeVN0cmVhbUlkKGN1cnJlbnQuZ2V0Q2xpZW50KCkuZ2V0SWQoKSwgbnVsbCk7CisJCQlMb25nIHJvb21faWQgPSBjdXJyZW50Q2xpZW50LmdldFJvb21faWQoKTsKKworCQkJRGF0ZSBub3cgPSBuZXcgRGF0ZSgpOworCisJCQkvLyBSZWNlaXZlIGZsdlJlY29yZGluZ0lkCisJCQlMb25nIGZsdlJlY29yZGluZ0lkID0gdGhpcy5mbHZSZWNvcmRpbmdEYW9JbXBsLmFkZEZsdlJlY29yZGluZygiIiwKKwkJCQkJcm9vbVJlY29yZGluZ05hbWUsIG51bGwsIGN1cnJlbnRDbGllbnQuZ2V0VXNlcl9pZCgpLAorCQkJCQlyb29tX2lkLCBub3csIG51bGwsIGN1cnJlbnRDbGllbnQuZ2V0VXNlcl9pZCgpLCBjb21tZW50LAorCQkJCQljdXJyZW50Q2xpZW50LmdldFN0cmVhbWlkKCksIGN1cnJlbnRDbGllbnQuZ2V0VldpZHRoKCksCisJCQkJCWN1cnJlbnRDbGllbnQuZ2V0VkhlaWdodCgpLCBpc0ludGVydmlldyk7CisKKwkJCS8vIFVwZGF0ZSBDbGllbnQgYW5kIHNldCBGbGFnCisJCQljdXJyZW50Q2xpZW50LnNldElzUmVjb3JkaW5nKHRydWUpOworCQkJY3VycmVudENsaWVudC5zZXRGbHZSZWNvcmRpbmdJZChmbHZSZWNvcmRpbmdJZCk7CisJCQl0aGlzLnNlc3Npb25NYW5hZ2VyLnVwZGF0ZUNsaWVudEJ5U3RyZWFtSWQoY3VycmVudC5nZXRDbGllbnQoKQorCQkJCQkuZ2V0SWQoKSwgY3VycmVudENsaWVudCwgZmFsc2UsIG51bGwpOworCisJCQkvLyBnZXQgYWxsIHN0cmVhbSBhbmQgc3RhcnQgcmVjb3JkaW5nIHRoZW0KKwkJCUNvbGxlY3Rpb248U2V0PElDb25uZWN0aW9uPj4gY29uQ29sbGVjdGlvbiA9IGN1cnJlbnQuZ2V0U2NvcGUoKQorCQkJCQkuZ2V0Q29ubmVjdGlvbnMoKTsKKwkJCWZvciAoU2V0PElDb25uZWN0aW9uPiBjb25zZXQgOiBjb25Db2xsZWN0aW9uKSB7CisJCQkJZm9yIChJQ29ubmVjdGlvbiBjb25uIDogY29uc2V0KSB7CisJCQkJCWlmIChjb25uICE9IG51bGwpIHsKKwkJCQkJCWlmIChjb25uIGluc3RhbmNlb2YgSVNlcnZpY2VDYXBhYmxlQ29ubmVjdGlvbikgeworCQkJCQkJCUNsaWVudCByY2wgPSB0aGlzLnNlc3Npb25NYW5hZ2VyCisJCQkJCQkJCQkuZ2V0Q2xpZW50QnlTdHJlYW1JZChjb25uLmdldENsaWVudCgpCisJCQkJCQkJCQkJCS5nZXRJZCgpLCBudWxsKTsKKworCQkJCQkJCS8vIFNlbmQgZXZlcnkgdXNlciBhIG5vdGlmaWNhdGlvbiB0aGF0IHRoZSByZWNvcmRpbmcgZGlkIHN0YXJ0CisJCQkJCQkJaWYgKCFyY2wuZ2V0SXNBVkNsaWVudCgpKSB7CisJCQkJCQkJCSgoSVNlcnZpY2VDYXBhYmxlQ29ubmVjdGlvbikgY29ubikuaW52b2tlKAorCQkJCQkJCQkJCSJzdGFydGVkUmVjb3JkaW5nIiwKKwkJCQkJCQkJCQluZXcgT2JqZWN0W10geyBjdXJyZW50Q2xpZW50IH0sIHRoaXMpOworCQkJCQkJCX0KKworCQkJCQkJCS8vIElmIGl0cyB0aGUgcmVjb3JkaW5nIGNsaWVudCB3ZSBuZWVkIGFub3RoZXIgdHlwZQorCQkJCQkJCS8vIG9mIE1ldGEgRGF0YQorCQkJCQkJCWlmIChyY2wuZ2V0SXNTY3JlZW5DbGllbnQoKSkgeworCisJCQkJCQkJCWlmIChyY2wuZ2V0Rmx2UmVjb3JkaW5nSWQoKSAhPSBudWxsCisJCQkJCQkJCQkJJiYgcmNsLmlzU2NyZWVuUHVibGlzaFN0YXJ0ZWQoKSkgeworCisJCQkJCQkJCQlTdHJpbmcgc3RyZWFtTmFtZV9TY3JlZW4gPSBnZW5lcmF0ZUZpbGVOYW1lKAorCQkJCQkJCQkJCQlmbHZSZWNvcmRpbmdJZCwgcmNsCisJCQkJCQkJCQkJCQkJLmdldFN0cmVhbVB1Ymxpc2hOYW1lKCkKKwkJCQkJCQkJCQkJCQkudG9TdHJpbmcoKSk7CisKKwkJCQkJCQkJCUxvbmcgZmx2UmVjb3JkaW5nTWV0YURhdGFJZCA9IHRoaXMuZmx2UmVjb3JkaW5nTWV0YURhdGFEYW8KKwkJCQkJCQkJCQkJLmFkZEZsdlJlY29yZGluZ01ldGFEYXRhKAorCQkJCQkJCQkJCQkJCWZsdlJlY29yZGluZ0lkLAorCQkJCQkJCQkJCQkJCXJjbC5nZXRGaXJzdG5hbWUoKSArICIgIgorCQkJCQkJCQkJCQkJCQkJKyByY2wuZ2V0TGFzdG5hbWUoKSwKKwkJCQkJCQkJCQkJCQlub3csIGZhbHNlLCBmYWxzZSwgdHJ1ZSwKKwkJCQkJCQkJCQkJCQlzdHJlYW1OYW1lX1NjcmVlbiwKKwkJCQkJCQkJCQkJCQlyY2wuZ2V0SW50ZXJ2aWV3UG9kSWQoKSk7CisKKwkJCQkJCQkJCS8vIFN0YXJ0IEZMViBSZWNvcmRpbmcKKwkJCQkJCQkJCXJlY29yZFNob3coY29ubiwKKwkJCQkJCQkJCQkJcmNsLmdldFN0cmVhbVB1Ymxpc2hOYW1lKCksCisJCQkJCQkJCQkJCXN0cmVhbU5hbWVfU2NyZWVuLAorCQkJCQkJCQkJCQlmbHZSZWNvcmRpbmdNZXRhRGF0YUlkLCB0cnVlLAorCQkJCQkJCQkJCQlpc0ludGVydmlldyk7CisKKwkJCQkJCQkJCS8vIEFkZCBNZXRhIERhdGEKKwkJCQkJCQkJCXJjbC5zZXRGbHZSZWNvcmRpbmdNZXRhRGF0YUlkKGZsdlJlY29yZGluZ01ldGFEYXRhSWQpOworCisJCQkJCQkJCQl0aGlzLnNlc3Npb25NYW5hZ2VyCisJCQkJCQkJCQkJCS51cGRhdGVDbGllbnRCeVN0cmVhbUlkKAorCQkJCQkJCQkJCQkJCXJjbC5nZXRTdHJlYW1pZCgpLCByY2wsIGZhbHNlLCBudWxsKTsKKworCQkJCQkJCQl9CisKKwkJCQkJCQl9IGVsc2UgaWYKKwkJCQkJCQkvLyBpZiB0aGUgdXNlciBkb2VzIHB1Ymxpc2ggYXYsIGEsIHYKKwkJCQkJCQkvLyBCdXQgd2Ugb25seSByZWNvcmQgYXYgb3IgYSwgdmlkZW8gb25seSBpcyBub3QKKwkJCQkJCQkvLyBpbnRlcmVzdGluZworCQkJCQkJCShyY2wuZ2V0SXNBVkNsaWVudCgpICYmCisJCQkJCQkJCQkocmNsLmdldEF2c2V0dGluZ3MoKS5lcXVhbHMoImF2IikKKwkJCQkJCQkJCXx8IHJjbC5nZXRBdnNldHRpbmdzKCkuZXF1YWxzKCJhIikKKwkJCQkJCQkJCXx8IHJjbC5nZXRBdnNldHRpbmdzKCkuZXF1YWxzKCJ2IikpKSB7CisKKwkJCQkJCQkJU3RyaW5nIHN0cmVhbU5hbWUgPSBnZW5lcmF0ZUZpbGVOYW1lKAorCQkJCQkJCQkJCWZsdlJlY29yZGluZ0lkLAorCQkJCQkJCQkJCVN0cmluZy52YWx1ZU9mKHJjbC5nZXRCcm9hZENhc3RJRCgpKQorCQkJCQkJCQkJCQkJLnRvU3RyaW5nKCkpOworCisJCQkJCQkJCS8vIEFkZCBNZXRhIERhdGEKKwkJCQkJCQkJYm9vbGVhbiBpc0F1ZGlvT25seSA9IGZhbHNlOworCQkJCQkJCQlpZiAocmNsLmdldEF2c2V0dGluZ3MoKS5lcXVhbHMoImEiKSkgeworCQkJCQkJCQkJaXNBdWRpb09ubHkgPSB0cnVlOworCQkJCQkJCQl9CisKKwkJCQkJCQkJYm9vbGVhbiBpc1ZpZGVvT25seSA9IGZhbHNlOworCQkJCQkJCQlpZiAocmNsLmdldEF2c2V0dGluZ3MoKS5lcXVhbHMoInYiKSkgeworCQkJCQkJCQkJaXNWaWRlb09ubHkgPSB0cnVlOworCQkJCQkJCQl9CisKKwkJCQkJCQkJTG9uZyBmbHZSZWNvcmRpbmdNZXRhRGF0YUlkID0gdGhpcy5mbHZSZWNvcmRpbmdNZXRhRGF0YURhbworCQkJCQkJCQkJCS5hZGRGbHZSZWNvcmRpbmdNZXRhRGF0YSgKKwkJCQkJCQkJCQkJCWZsdlJlY29yZGluZ0lkLAorCQkJCQkJCQkJCQkJcmNsLmdldEZpcnN0bmFtZSgpICsgIiAiCisJCQkJCQkJCQkJCQkJCSsgcmNsLmdldExhc3RuYW1lKCksCisJCQkJCQkJCQkJCQlub3csIGlzQXVkaW9Pbmx5LCBpc1ZpZGVvT25seSwKKwkJCQkJCQkJCQkJCWZhbHNlLCBzdHJlYW1OYW1lLAorCQkJCQkJCQkJCQkJcmNsLmdldEludGVydmlld1BvZElkKCkpOworCisJCQkJCQkJCXJjbC5zZXRGbHZSZWNvcmRpbmdNZXRhRGF0YUlkKGZsdlJlY29yZGluZ01ldGFEYXRhSWQpOworCisJCQkJCQkJCXRoaXMuc2Vzc2lvbk1hbmFnZXIudXBkYXRlQ2xpZW50QnlTdHJlYW1JZCgKKwkJCQkJCQkJCQlyY2wuZ2V0U3RyZWFtaWQoKSwgcmNsLCBmYWxzZSwgbnVsbCk7CisKKwkJCQkJCQkJLy8gU3RhcnQgRkxWIHJlY29yZGluZworCQkJCQkJCQlyZWNvcmRTaG93KGNvbm4sCisJCQkJCQkJCQkJU3RyaW5nLnZhbHVlT2YocmNsLmdldEJyb2FkQ2FzdElEKCkpCisJCQkJCQkJCQkJCQkudG9TdHJpbmcoKSwgc3RyZWFtTmFtZSwKKwkJCQkJCQkJCQlmbHZSZWNvcmRpbmdNZXRhRGF0YUlkLCBmYWxzZSwKKwkJCQkJCQkJCQlpc0ludGVydmlldyk7CisKKwkJCQkJCQl9CisKKwkJCQkJCX0KKwkJCQkJfQorCQkJCX0KKwkJCX0KKworCQkJcmV0dXJuIHJvb21SZWNvcmRpbmdOYW1lOworCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW3JlY29yZE1lZXRpbmdTdHJlYW1dIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvKioKKwkgKiBTdGFydCByZWNvcmRpbmcgdGhlIHB1Ymxpc2hlZCBzdHJlYW0gZm9yIHRoZSBzcGVjaWZpZWQgYnJvYWRjYXN0LUlkCisJICogCisJICogQHBhcmFtIGNvbm4KKwkgKiBAcGFyYW0gYnJvYWRjYXN0aWQKKwkgKiBAcGFyYW0gc3RyZWFtTmFtZQorCSAqIEBwYXJhbSBmbHZSZWNvcmRpbmdNZXRhRGF0YUlkCisJICogQHRocm93cyBFeGNlcHRpb24KKwkgKi8KKwlwcml2YXRlIHN5bmNocm9uaXplZCB2b2lkIHJlY29yZFNob3coSUNvbm5lY3Rpb24gY29ubiwgU3RyaW5nIGJyb2FkY2FzdGlkLAorCQkJU3RyaW5nIHN0cmVhbU5hbWUsIExvbmcgZmx2UmVjb3JkaW5nTWV0YURhdGFJZCwKKwkJCWJvb2xlYW4gaXNTY3JlZW5EYXRhLCBCb29sZWFuIGlzSW50ZXJ2aWV3KSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkJdHJ5IHsKKwkJCWxvZy5kZWJ1ZygiUmVjb3JkaW5nIHNob3cgZm9yOiAiICsgY29ubi5nZXRTY29wZSgpLmdldENvbnRleHRQYXRoKCkpOworCQkJbG9nLmRlYnVnKCJOYW1lIG9mIENMaWVudCBhbmQgU3RyZWFtIHRvIGJlIHJlY29yZGVkOiAiCisJCQkJCSsgYnJvYWRjYXN0aWQpOworCQkJLy8gbG9nLmRlYnVnKCJBcHBsaWNhdGlvbi5nZXRJbnN0YW5jZSgpIitBcHBsaWNhdGlvbi5nZXRJbnN0YW5jZSgpKTsKKwkJCWxvZy5kZWJ1ZygiU2NvcGUgIiArIGNvbm4pOworCQkJbG9nLmRlYnVnKCJTY29wZSAiICsgY29ubi5nZXRTY29wZSgpKTsKKwkJCS8vIEdldCBhIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBicm9hZGNhc3Qgc3RyZWFtLgorCQkJQ2xpZW50QnJvYWRjYXN0U3RyZWFtIHN0cmVhbSA9IChDbGllbnRCcm9hZGNhc3RTdHJlYW0pIHNjb3BlQXBwbGljYXRpb25BZGFwdGVyCisJCQkJCS5nZXRCcm9hZGNhc3RTdHJlYW0oY29ubi5nZXRTY29wZSgpLCBicm9hZGNhc3RpZCk7CisKKwkJCWlmIChzdHJlYW0gPT0gbnVsbCkgeworCQkJCWxvZy5kZWJ1ZygiVW5hYmxlIHRvIGdldCBzdHJlYW06ICIgKyBzdHJlYW1OYW1lKTsKKwkJCQlyZXR1cm47CisJCQl9CisJCQkvLyBTYXZlIHRoZSBzdHJlYW0gdG8gZGlzay4KKwkJCWlmIChpc1NjcmVlbkRhdGEpIHsKKwkJCQkKKwkJCQlTdHJlYW1WaWRlb0xpc3RlbmVyIHN0cmVhbVNjcmVlbkxpc3RlbmVyID0gbmV3IFN0cmVhbVZpZGVvTGlzdGVuZXIoc3RyZWFtTmFtZSwKKwkJCQkJCQkJCQkJCQkJCQkJCWNvbm4uZ2V0U2NvcGUoKSwgZmx2UmVjb3JkaW5nTWV0YURhdGFJZCwgaXNTY3JlZW5EYXRhLAorCQkJCQkJCQkJCQkJCQkJCQkJaXNJbnRlcnZpZXcsIGZsdlJlY29yZGluZ01ldGFEYXRhRGFvKTsKKwkJCQkKKwkJCQlzdHJlYW1MaXN0ZW5lcnMucHV0KGZsdlJlY29yZGluZ01ldGFEYXRhSWQsIHN0cmVhbVNjcmVlbkxpc3RlbmVyKTsKKwkJCQkKKwkJCQlzdHJlYW0uYWRkU3RyZWFtTGlzdGVuZXIoc3RyZWFtU2NyZWVuTGlzdGVuZXIpOworCQkJfSBlbHNlIHsKKworCQkJCWxvZy5kZWJ1ZygiIyMjIHN0cmVhbSAiICsgc3RyZWFtKTsKKwkJCQlsb2cuZGVidWcoIiMjIyBzdHJlYW1OYW1lICIgKyBzdHJlYW1OYW1lKTsKKwkJCQlsb2cuZGVidWcoIiMjIyBjb25uLmdldFNjb3BlKCkgIiArIGNvbm4uZ2V0U2NvcGUoKSk7CisJCQkJbG9nLmRlYnVnKCIjIyMgZmx2UmVjb3JkaW5nTWV0YURhdGFJZCAiCisJCQkJCQkrIGZsdlJlY29yZGluZ01ldGFEYXRhSWQpOworCQkJCWxvZy5kZWJ1ZygiIyMjIGlzU2NyZWVuRGF0YSAiICsgaXNTY3JlZW5EYXRhKTsKKwkJCQlsb2cuZGVidWcoIiMjIyBpc0ludGVydmlldyAiICsgaXNJbnRlcnZpZXcpOworCisJCQkJU3RyZWFtQXVkaW9MaXN0ZW5lciBzdHJlYW1BdWRpb0xpc3RlbmVyID0gbmV3IFN0cmVhbUF1ZGlvTGlzdGVuZXIoc3RyZWFtTmFtZSwKKwkJCQkJCQkJCQkJCQkJCQkJY29ubi5nZXRTY29wZSgpLCBmbHZSZWNvcmRpbmdNZXRhRGF0YUlkLCBpc1NjcmVlbkRhdGEsCisJCQkJCQkJCQkJCQkJCQkJCWlzSW50ZXJ2aWV3LCBmbHZSZWNvcmRpbmdNZXRhRGVsdGFEYW8sIGZsdlJlY29yZGluZ01ldGFEYXRhRGFvKTsKKworCQkJCXN0cmVhbUxpc3RlbmVycy5wdXQoZmx2UmVjb3JkaW5nTWV0YURhdGFJZCwgc3RyZWFtQXVkaW9MaXN0ZW5lcik7CisKKwkJCQlzdHJlYW0uYWRkU3RyZWFtTGlzdGVuZXIoc3RyZWFtQXVkaW9MaXN0ZW5lcik7CisJCQl9CisJCQkvLyBKdXN0IGZvciBEZWJ1ZyBQdXJwb3NlCisJCQkvLyBzdHJlYW0uc2F2ZUFzKHN0cmVhbU5hbWUrIl9ERUJVRyIsIGZhbHNlKTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCWxvZy5lcnJvcigiRXJyb3Igd2hpbGUgc2F2aW5nIHN0cmVhbTogIiArIHN0cmVhbU5hbWUsIGUpOworCQl9CisJfQorCisJLyoqCisJICogU3RvcHMgcmVjb3JkaW5nIHRoZSBwdWJsaXNoaW5nIHN0cmVhbSBmb3IgdGhlIHNwZWNpZmllZCBJQ29ubmVjdGlvbi4KKwkgKiAKKwkgKiBAcGFyYW0gY29ubgorCSAqLworCXB1YmxpYyBzeW5jaHJvbml6ZWQgdm9pZCBzdG9wUmVjb3JkaW5nU2hvdyhJQ29ubmVjdGlvbiBjb25uLCBTdHJpbmcgYnJvYWRjYXN0SWQsCisJCQlMb25nIGZsdlJlY29yZGluZ01ldGFEYXRhSWQpIHsKKwkJdHJ5IHsKKwkJCQorCQkJaWYgKGZsdlJlY29yZGluZ01ldGFEYXRhSWQgPT0gbnVsbCkgeworCQkJCS8vdGhpcyBzaG91bGQgYmUgZml4ZWQsIGNhbiBiZSB1c2VmdWwgZm9yIGRlYnVnZ2luZywgYWZ0ZXIgYWxsIHRoaXMgaXMgYW4gZXJyb3IKKwkJCQkvL2J1dCB3ZSBkb24ndCB3YW50IHRoZSBhcHBsaWNhdGlvbiB0byBjb21wbGV0ZWx5IHN0b3AgdGhlIHByb2Nlc3MKKwkJCQlsb2cuZXJyb3IoImZsdlJlY29yZGluZ01ldGFEYXRhSWQgaXMgbnVsbCIpOworCQkJfQorCisJCQlsb2cuZGVidWcoIioqIHN0b3BSZWNvcmRpbmdTaG93OiAiICsgY29ubik7CisJCQlsb2cuZGVidWcoIiMjIyBTdG9wIHJlY29yZGluZyBzaG93IGZvciBicm9hZGNhc3RJZDogIiArIGJyb2FkY2FzdElkCisJCQkJCSsgIiB8fCAiICsgY29ubi5nZXRTY29wZSgpLmdldENvbnRleHRQYXRoKCkpOworCisJCQlPYmplY3Qgc3RyZWFtVG9DbG9zZSA9IHNjb3BlQXBwbGljYXRpb25BZGFwdGVyLmdldEJyb2FkY2FzdFN0cmVhbSgKKwkJCQkJY29ubi5nZXRTY29wZSgpLCBicm9hZGNhc3RJZCk7CisKKwkJCUJhc2VTdHJlYW1MaXN0ZW5lciBsaXN0ZW5lckFkYXB0ZXIgPSBzdHJlYW1MaXN0ZW5lcnMuZ2V0KGZsdlJlY29yZGluZ01ldGFEYXRhSWQpOworCQkJCisJCQlsb2cuZGVidWcoIlN0cmVhbSBDbG9zaW5nIDo6ICIgKyBmbHZSZWNvcmRpbmdNZXRhRGF0YUlkKTsKKwkJCQorCQkJQ2xpZW50QnJvYWRjYXN0U3RyZWFtIHN0cmVhbSA9IChDbGllbnRCcm9hZGNhc3RTdHJlYW0pIHN0cmVhbVRvQ2xvc2U7CisKKwkJCS8vdGhlIHN0cmVhbSBjYW4gYmUgbnVsbCBpZiB0aGUgdXNlciBqdXN0IGNsb3NlcyB0aGUgYnJvd3NlciAKKwkJCS8vd2l0aG91dCBjYW5jZWxpbmcgdGhlIHJlY29yZGluZyBiZWZvcmUgbGVhdmluZworCQkJaWYgKHN0cmVhbSAhPSBudWxsKSB7CisJCQkJLy9JdGVyYXRlIHRocm91Z2ggYWxsIHN0cmVhbSBsaXN0ZW5lcnMgYW5kIHN0b3AgdGhlIGFwcHJvcHJpYXRlCisJCQkJaWYgKHN0cmVhbS5nZXRTdHJlYW1MaXN0ZW5lcnMoKSAhPSBudWxsKSB7CisJCisJCQkJCWZvciAoSVN0cmVhbUxpc3RlbmVyIGlTdHJlYW1MaXN0ZW5lciA6IHN0cmVhbQorCQkJCQkJCS5nZXRTdHJlYW1MaXN0ZW5lcnMoKSkgeworCQkJCQkJc3RyZWFtLnJlbW92ZVN0cmVhbUxpc3RlbmVyKGlTdHJlYW1MaXN0ZW5lcik7CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCQkKKwkJCWlmIChsaXN0ZW5lckFkYXB0ZXIgPT0gbnVsbCkgeworCQkJCQorCQkJCWxvZy5kZWJ1ZygiU3RyZWFtIE5vdCBGb3VuZCA6OiAiICsgZmx2UmVjb3JkaW5nTWV0YURhdGFJZCk7CisJCQkJbG9nLmRlYnVnKCJBdmFpbGFibGUgU3RyZWFtcyA6OiAiK3N0cmVhbUxpc3RlbmVycy5zaXplKCkpOworCQkJCQorCQkJCWZvciAoTG9uZyBlbnRyeUtleSA6IHN0cmVhbUxpc3RlbmVycy5rZXlTZXQoKSkgeworCQkJCQlsb2cuZGVidWcoIlN0b3JlZCBmbHZSZWNvcmRpbmdNZXRhRGF0YUlkIGluIE1hcDogIisgZW50cnlLZXkpOworCQkJCX0KKwkJCQkKKwkJCQkvL01hbnVhbGx5IGNhbGwgZmluaXNoIG9uIHRoZSBzdHJlYW0gc28gdGhhdCB0aGVyZSBpcyBubyBlbmRsZXNzIGxvb3Agd2FpdGluZyAgCisJCQkJLy9pbiB0aGUgRmx2UmVjb3JkZXJDb252ZXJ0ZXIgd2FpdGluZyBmb3IgdGhlIHN0cmVhbSB0byBmaW5pc2gKKwkJCQkvL3RoaXMgd291bGQgbm9ybWFsbHkgaGFwcGVuIGluIHRoZSBMaXN0ZW5lcgorCQkJCUZsdlJlY29yZGluZ01ldGFEYXRhIGZsdlJlY29yZGluZ01ldGFEYXRhID0gZmx2UmVjb3JkaW5nTWV0YURhdGFEYW9JbXBsLgorCQkJCQkJCWdldEZsdlJlY29yZGluZ01ldGFEYXRhQnlJZChmbHZSZWNvcmRpbmdNZXRhRGF0YUlkKTsKKwkJCQlmbHZSZWNvcmRpbmdNZXRhRGF0YS5zZXRTdHJlYW1SZWFkZXJUaHJlYWRDb21wbGV0ZSh0cnVlKTsKKwkJCQlmbHZSZWNvcmRpbmdNZXRhRGF0YURhb0ltcGwudXBkYXRlRmx2UmVjb3JkaW5nTWV0YURhdGEoZmx2UmVjb3JkaW5nTWV0YURhdGEpOworCQkJCQorCQkJCXRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIkNvdWxkIG5vdCBmaW5kIExpc3RlbmVyIHRvIHN0b3AhIGZsdlJlY29yZGluZ01ldGFEYXRhSWQgIitmbHZSZWNvcmRpbmdNZXRhRGF0YUlkKTsKKwkJCX0KKwkJCQorCQkJbGlzdGVuZXJBZGFwdGVyLmNsb3NlU3RyZWFtKCk7CisJCQlzdHJlYW1MaXN0ZW5lcnMucmVtb3ZlKGZsdlJlY29yZGluZ01ldGFEYXRhSWQpOworCQkJCisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbc3RvcFJlY29yZGluZ1Nob3ddIiwgZXJyKTsKKwkJfQorCX0KKworCXB1YmxpYyBMb25nIHN0b3BSZWNvcmRBbmRTYXZlKElTY29wZSBzY29wZSwgQ2xpZW50IGN1cnJlbnRDbGllbnQsCisJCQlMb25nIHN0b3JlZEZsdlJlY29yZGluZ0lkKSB7CisJCXRyeSB7CisJCQlsb2cuZGVidWcoInN0b3BSZWNvcmRBbmRTYXZlICIgKyBjdXJyZW50Q2xpZW50LmdldFVzZXJuYW1lKCkgKyAiLCIKKwkJCQkJKyBjdXJyZW50Q2xpZW50LmdldFVzZXJpcCgpKTsKKworCQkJLy8gZ2V0IGFsbCBzdHJlYW0gYW5kIHN0b3AgcmVjb3JkaW5nIHRoZW0KKwkJCUNvbGxlY3Rpb248U2V0PElDb25uZWN0aW9uPj4gY29uQ29sbGVjdGlvbiA9IHNjb3BlLmdldENvbm5lY3Rpb25zKCk7CisJCQlmb3IgKFNldDxJQ29ubmVjdGlvbj4gY29uc2V0IDogY29uQ29sbGVjdGlvbikgeworCQkJCWZvciAoSUNvbm5lY3Rpb24gY29ubiA6IGNvbnNldCkgeworCQkJCQlpZiAoY29ubiAhPSBudWxsKSB7CisJCQkJCQlpZiAoY29ubiBpbnN0YW5jZW9mIElTZXJ2aWNlQ2FwYWJsZUNvbm5lY3Rpb24pIHsKKworCQkJCQkJCUNsaWVudCByY2wgPSBzZXNzaW9uTWFuYWdlci5nZXRDbGllbnRCeVN0cmVhbUlkKAorCQkJCQkJCQkJCQljb25uLmdldENsaWVudCgpLmdldElkKCksIG51bGwpOworCisJCQkJCQkJLy8gRklYTUU6IENoZWNrIGlmIHRoaXMgZnVuY3Rpb24gaXMgcmVhbGx5IGluIHVzZSBhdAorCQkJCQkJCS8vIHRoZSBtb21lbnQKKwkJCQkJCQkvLyBpZiAoIXJjbC5nZXRJc1NjcmVlbkNsaWVudCgpKSB7CisJCQkJCQkJLy8gKChJU2VydmljZUNhcGFibGVDb25uZWN0aW9uKQorCQkJCQkJCS8vIGNvbm4pLmludm9rZSgic3RvcHBlZFJlY29yZGluZyIsbmV3IE9iamVjdFtdIHsKKwkJCQkJCQkvLyBjdXJyZW50Q2xpZW50IH0sIHRoaXMpOworCQkJCQkJCS8vIH0KKworCQkJCQkJCWxvZy5kZWJ1ZygiaXMgdGhpcyB1c2VycyBzdGlsbCBhbGl2ZT8gc3RvcCBpdCA6IiArIHJjbCk7CisKKwkJCQkJCQlpZiAocmNsLmdldElzU2NyZWVuQ2xpZW50KCkpIHsKKworCQkJCQkJCQlpZiAocmNsLmdldEZsdlJlY29yZGluZ0lkKCkgIT0gbnVsbAorCQkJCQkJCQkJCSYmIHJjbC5pc1NjcmVlblB1Ymxpc2hTdGFydGVkKCkpIHsKKworCQkJCQkJCQkJLy8gU3RvcCBGTFYgUmVjb3JkaW5nCisJCQkJCQkJCQlzdG9wUmVjb3JkaW5nU2hvdyhjb25uLAorCQkJCQkJCQkJCQlyY2wuZ2V0U3RyZWFtUHVibGlzaE5hbWUoKSwKKwkJCQkJCQkJCQkJcmNsLmdldEZsdlJlY29yZGluZ01ldGFEYXRhSWQoKSk7CisKKwkJCQkJCQkJCS8vIFVwZGF0ZSBNZXRhIERhdGEKKwkJCQkJCQkJCXRoaXMuZmx2UmVjb3JkaW5nTWV0YURhdGFEYW8KKwkJCQkJCQkJCQkJLnVwZGF0ZUZsdlJlY29yZGluZ01ldGFEYXRhRW5kRGF0ZSgKKwkJCQkJCQkJCQkJCQlyY2wuZ2V0Rmx2UmVjb3JkaW5nTWV0YURhdGFJZCgpLAorCQkJCQkJCQkJCQkJCW5ldyBEYXRlKCkpOworCQkJCQkJCQl9CisKKwkJCQkJCQl9IGVsc2UgaWYgKHJjbC5nZXRJc0FWQ2xpZW50KCkKKwkJCQkJCQkJCSYmIChyY2wuZ2V0QXZzZXR0aW5ncygpLmVxdWFscygiYXYiKQorCQkJCQkJCQkJfHwgcmNsLmdldEF2c2V0dGluZ3MoKS5lcXVhbHMoImEiKQorCQkJCQkJCQkJfHwgcmNsLmdldEF2c2V0dGluZ3MoKS5lcXVhbHMoInYiKSkpIHsKKworCQkJCQkJCQlzdG9wUmVjb3JkaW5nU2hvdyhjb25uLAorCQkJCQkJCQkJCVN0cmluZy52YWx1ZU9mKHJjbC5nZXRCcm9hZENhc3RJRCgpKQorCQkJCQkJCQkJCQkJLnRvU3RyaW5nKCksCisJCQkJCQkJCQkJcmNsLmdldEZsdlJlY29yZGluZ01ldGFEYXRhSWQoKSk7CisKKwkJCQkJCQkJLy8gVXBkYXRlIE1ldGEgRGF0YQorCQkJCQkJCQl0aGlzLmZsdlJlY29yZGluZ01ldGFEYXRhRGFvCisJCQkJCQkJCQkJLnVwZGF0ZUZsdlJlY29yZGluZ01ldGFEYXRhRW5kRGF0ZSgKKwkJCQkJCQkJCQkJCXJjbC5nZXRGbHZSZWNvcmRpbmdNZXRhRGF0YUlkKCksCisJCQkJCQkJCQkJCQluZXcgRGF0ZSgpKTsKKworCQkJCQkJCX0KKworCQkJCQkJfQorCQkJCQl9CisJCQkJfQorCQkJfQorCisJCQkvLyBTdG9yZSB0byBkYXRhYmFzZQorCQkJTG9uZyBmbHZSZWNvcmRpbmdJZCA9IGN1cnJlbnRDbGllbnQuZ2V0Rmx2UmVjb3JkaW5nSWQoKTsKKworCQkJLy8gSW4gdGhlIENhc2Ugb2YgYW4gSW50ZXJ2aWV3IHRoZSBzdG9wcGluZyBjbGllbnQgZG9lcyBub3QgbWVhbgorCQkJLy8gdGhhdCBpdHMgYWN0dWFsbHkgdGhlIHJlY29yZGluZyBjbGllbnQKKwkJCWlmIChzdG9yZWRGbHZSZWNvcmRpbmdJZCAhPSBudWxsKSB7CisJCQkJZmx2UmVjb3JkaW5nSWQgPSBzdG9yZWRGbHZSZWNvcmRpbmdJZDsKKwkJCX0KKworCQkJaWYgKGZsdlJlY29yZGluZ0lkICE9IG51bGwpIHsKKworCQkJCXRoaXMuZmx2UmVjb3JkaW5nRGFvSW1wbC51cGRhdGVGbHZSZWNvcmRpbmdFbmRUaW1lKAorCQkJCQkJZmx2UmVjb3JkaW5nSWQsIG5ldyBEYXRlKCksCisJCQkJCQljdXJyZW50Q2xpZW50LmdldE9yZ2FuaXphdGlvbl9pZCgpKTsKKworCQkJCS8vIFJlc2V0IHZhbHVlcworCQkJCWN1cnJlbnRDbGllbnQuc2V0Rmx2UmVjb3JkaW5nSWQobnVsbCk7CisJCQkJY3VycmVudENsaWVudC5zZXRJc1JlY29yZGluZyhmYWxzZSk7CisKKwkJCQl0aGlzLnNlc3Npb25NYW5hZ2VyLnVwZGF0ZUNsaWVudEJ5U3RyZWFtSWQoCisJCQkJCQljdXJyZW50Q2xpZW50LmdldFN0cmVhbWlkKCksIGN1cnJlbnRDbGllbnQsIGZhbHNlLCBudWxsKTsKKworCQkJCWxvZy5kZWJ1ZygidGhpcy5mbHZSZWNvcmRlckNvbnZlcnRlclRhc2sgIiwKKwkJCQkJCXRoaXMuZmx2UmVjb3JkZXJDb252ZXJ0ZXJUYXNrKTsKKworCQkJCUZsdlJlY29yZGluZyBmbHZSZWNvcmRpbmcgPSB0aGlzLmZsdlJlY29yZGluZ0Rhb0ltcGwKKwkJCQkJCS5nZXRGbHZSZWNvcmRpbmdCeUlkKGZsdlJlY29yZGluZ0lkKTsKKworCQkJCWlmIChmbHZSZWNvcmRpbmcuZ2V0SXNJbnRlcnZpZXcoKSA9PSBudWxsCisJCQkJCQl8fCAhZmx2UmVjb3JkaW5nLmdldElzSW50ZXJ2aWV3KCkpIHsKKworCQkJCQl0aGlzLmZsdlJlY29yZGVyQ29udmVydGVyVGFzaworCQkJCQkJCS5zdGFydENvbnZlcnNpb25UaHJlYWQoZmx2UmVjb3JkaW5nSWQpOworCisJCQkJfSBlbHNlIHsKKworCQkJCQl0aGlzLmZsdkludGVydmlld0NvbnZlcnRlclRhc2sKKwkJCQkJCQkuc3RhcnRDb252ZXJzaW9uVGhyZWFkKGZsdlJlY29yZGluZ0lkKTsKKworCQkJCX0KKworCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKworCQkJbG9nLmVycm9yKCJbLS0gc3RvcFJlY29yZEFuZFNhdmUgLS1dIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbmV3IExvbmcoLTEpOworCX0KKworCXB1YmxpYyBDbGllbnQgY2hlY2tMelJlY29yZGluZygpIHsKKwkJdHJ5IHsKKwkJCUlDb25uZWN0aW9uIGN1cnJlbnQgPSBSZWQ1LmdldENvbm5lY3Rpb25Mb2NhbCgpOworCQkJU3RyaW5nIHN0cmVhbWlkID0gY3VycmVudC5nZXRDbGllbnQoKS5nZXRJZCgpOworCisJCQlsb2cuZGVidWcoImdldEN1cnJlbnRSb29tQ2xpZW50IC0yLSAiICsgc3RyZWFtaWQpOworCisJCQlDbGllbnQgY3VycmVudENsaWVudCA9IHRoaXMuc2Vzc2lvbk1hbmFnZXIKKwkJCQkJLmdldENsaWVudEJ5U3RyZWFtSWQoc3RyZWFtaWQsIG51bGwpOworCisJCQlsb2cuZGVidWcoImdldEN1cnJlbnRSb29tQ2xpZW50IC0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjLSAiCisJCQkJCSsgY3VycmVudENsaWVudC5nZXRSb29tX2lkKCkpOworCisJCQlmb3IgKENsaWVudCByY2wgOiBzZXNzaW9uTWFuYWdlci5nZXRDbGllbnRMaXN0QnlSb29tQWxsKGN1cnJlbnRDbGllbnQuZ2V0Um9vbV9pZCgpKSkgeworCQkJCWlmIChyY2wuZ2V0SXNSZWNvcmRpbmcoKSkgeworCQkJCQlyZXR1cm4gcmNsOworCQkJCX0KKwkJCX0KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltjaGVja0x6UmVjb3JkaW5nXSIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIHZvaWQgc3RvcFJlY29yZGluZ1Nob3dGb3JDbGllbnQoSUNvbm5lY3Rpb24gY29ubiwgQ2xpZW50IHJjbCkgeworCQl0cnkgeworCQkJLy8gdGhpcyBjYW5ub3QgYmUgaGFuZGxlZCBoZXJlLCBhcyB0byBzdG9wIGEgc3RyZWFtIGFuZCB0byBsZWF2ZSBhCisJCQkvLyByb29tIGlzIG5vdAorCQkJLy8gdGhlIHNhbWUgdHlwZSBvZiBldmVudC4KKwkJCS8vIFN0cmVhbVNlcnZpY2UuYWRkUm9vbUNsaWVudEVudGVyRXZlbnRGdW5jKHJjbCwgcm9vbXJlY29yZGluZ05hbWUsCisJCQkvLyByY2wuZ2V0VXNlcmlwKCksIGZhbHNlKTsKKwkJCWxvZy5kZWJ1ZygiIyMjIHN0b3BSZWNvcmRpbmdTaG93Rm9yQ2xpZW50OiAiICsgcmNsKTsKKworCQkJaWYgKHJjbC5nZXRJc1NjcmVlbkNsaWVudCgpKSB7CisKKwkJCQlpZiAocmNsLmdldEZsdlJlY29yZGluZ0lkKCkgIT0gbnVsbAorCQkJCQkJJiYgcmNsLmlzU2NyZWVuUHVibGlzaFN0YXJ0ZWQoKSkgeworCisJCQkJCS8vIFN0b3AgRkxWIFJlY29yZGluZworCQkJCQkvLyBGSVhNRTogSXMgdGhlcmUgcmVhbGx5IGEgbmVlZCB0byBzdG9wIGl0IG1hbnVhbGx5IGlmIHRoZQorCQkJCQkvLyB1c2VyIGp1c3QKKwkJCQkJLy8gc3RvcHMgdGhlIHN0cmVhbT8KKwkJCQkJc3RvcFJlY29yZGluZ1Nob3coY29ubiwgcmNsLmdldFN0cmVhbVB1Ymxpc2hOYW1lKCksCisJCQkJCQkJcmNsLmdldEZsdlJlY29yZGluZ01ldGFEYXRhSWQoKSk7CisKKwkJCQkJLy8gVXBkYXRlIE1ldGEgRGF0YQorCQkJCQl0aGlzLmZsdlJlY29yZGluZ01ldGFEYXRhRGFvCisJCQkJCQkJLnVwZGF0ZUZsdlJlY29yZGluZ01ldGFEYXRhRW5kRGF0ZSgKKwkJCQkJCQkJCXJjbC5nZXRGbHZSZWNvcmRpbmdNZXRhRGF0YUlkKCksIG5ldyBEYXRlKCkpOworCQkJCX0KKworCQkJfSBlbHNlIGlmIChyY2wuZ2V0SXNBVkNsaWVudCgpICYmCisJCQkJCShyY2wuZ2V0QXZzZXR0aW5ncygpLmVxdWFscygiYSIpCisJCQkJCXx8IHJjbC5nZXRBdnNldHRpbmdzKCkuZXF1YWxzKCJ2IikgCisJCQkJCXx8IHJjbC5nZXRBdnNldHRpbmdzKCkuZXF1YWxzKCJhdiIpKSkgeworCisJCQkJLy8gRklYTUU6IElzIHRoZXJlIHJlYWxseSBhIG5lZWQgdG8gc3RvcCBpdCBtYW51YWxseSBpZiB0aGUgdXNlcgorCQkJCS8vIGp1c3Qgc3RvcHMgdGhlIHN0cmVhbT8KKwkJCQlzdG9wUmVjb3JkaW5nU2hvdyhjb25uLCBTdHJpbmcudmFsdWVPZihyY2wuZ2V0QnJvYWRDYXN0SUQoKSksCisJCQkJCQlyY2wuZ2V0Rmx2UmVjb3JkaW5nTWV0YURhdGFJZCgpKTsKKworCQkJCS8vIFVwZGF0ZSBNZXRhIERhdGEKKwkJCQl0aGlzLmZsdlJlY29yZGluZ01ldGFEYXRhRGFvCisJCQkJCQkudXBkYXRlRmx2UmVjb3JkaW5nTWV0YURhdGFFbmREYXRlKAorCQkJCQkJCQlyY2wuZ2V0Rmx2UmVjb3JkaW5nTWV0YURhdGFJZCgpLCBuZXcgRGF0ZSgpKTsKKwkJCX0KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltzdG9wUmVjb3JkaW5nU2hvd0ZvckNsaWVudF0iLCBlcnIpOworCQl9CisJfQorCisJcHVibGljIHZvaWQgYWRkUmVjb3JkaW5nQnlTdHJlYW1JZChJQ29ubmVjdGlvbiBjb25uLCBTdHJpbmcgc3RyZWFtSWQsCisJCQlDbGllbnQgcmNsLCBMb25nIGZsdlJlY29yZGluZ0lkKSB7CisJCXRyeSB7CisKKwkJCUZsdlJlY29yZGluZyBmbHZSZWNvcmRpbmcgPSB0aGlzLmZsdlJlY29yZGluZ0Rhb0ltcGwKKwkJCQkJLmdldEZsdlJlY29yZGluZ0J5SWQoZmx2UmVjb3JkaW5nSWQpOworCisJCQlEYXRlIG5vdyA9IG5ldyBEYXRlKCk7CisKKwkJCS8vIElmIGl0cyB0aGUgcmVjb3JkaW5nIGNsaWVudCB3ZSBuZWVkIGFub3RoZXIgdHlwZSBvZiBNZXRhIERhdGEKKwkJCWlmIChyY2wuZ2V0SXNTY3JlZW5DbGllbnQoKSkgeworCisJCQkJaWYgKHJjbC5nZXRGbHZSZWNvcmRpbmdJZCgpICE9IG51bGwKKwkJCQkJCSYmIHJjbC5pc1NjcmVlblB1Ymxpc2hTdGFydGVkKCkpIHsKKworCQkJCQlTdHJpbmcgc3RyZWFtTmFtZV9TY3JlZW4gPSBnZW5lcmF0ZUZpbGVOYW1lKGZsdlJlY29yZGluZ0lkLAorCQkJCQkJCXJjbC5nZXRTdHJlYW1QdWJsaXNoTmFtZSgpLnRvU3RyaW5nKCkpOworCisJCQkJCWxvZy5kZWJ1ZygiIyMjIyMjIyMjIyMjIyMgIEFERCBTQ1JFRU4gT0YgU0hBUkVSIDo6ICIKKwkJCQkJCQkrIHJjbC5nZXRTdHJlYW1QdWJsaXNoTmFtZSgpKTsKKworCQkJCQlMb25nIGZsdlJlY29yZGluZ01ldGFEYXRhSWQgPSB0aGlzLmZsdlJlY29yZGluZ01ldGFEYXRhRGFvCisJCQkJCQkJLmFkZEZsdlJlY29yZGluZ01ldGFEYXRhKAorCQkJCQkJCQkJZmx2UmVjb3JkaW5nSWQsCisJCQkJCQkJCQlyY2wuZ2V0Rmlyc3RuYW1lKCkgKyAiICIKKwkJCQkJCQkJCQkJKyByY2wuZ2V0TGFzdG5hbWUoKSwgbm93LCBmYWxzZSwKKwkJCQkJCQkJCWZhbHNlLCB0cnVlLCBzdHJlYW1OYW1lX1NjcmVlbiwKKwkJCQkJCQkJCXJjbC5nZXRJbnRlcnZpZXdQb2RJZCgpKTsKKworCQkJCQkvLyBTdGFydCBGTFYgUmVjb3JkaW5nCisJCQkJCXJlY29yZFNob3coY29ubiwgcmNsLmdldFN0cmVhbVB1Ymxpc2hOYW1lKCksCisJCQkJCQkJc3RyZWFtTmFtZV9TY3JlZW4sIGZsdlJlY29yZGluZ01ldGFEYXRhSWQsIHRydWUsCisJCQkJCQkJZmx2UmVjb3JkaW5nLmdldElzSW50ZXJ2aWV3KCkpOworCisJCQkJCS8vIEFkZCBNZXRhIERhdGEKKwkJCQkJcmNsLnNldEZsdlJlY29yZGluZ01ldGFEYXRhSWQoZmx2UmVjb3JkaW5nTWV0YURhdGFJZCk7CisKKwkJCQkJdGhpcy5zZXNzaW9uTWFuYWdlci51cGRhdGVDbGllbnRCeVN0cmVhbUlkKAorCQkJCQkJCXJjbC5nZXRTdHJlYW1pZCgpLCByY2wsIGZhbHNlLCBudWxsKTsKKworCQkJCX0KKworCQkJfSBlbHNlIGlmCisJCQkvLyBpZiB0aGUgdXNlciBkb2VzIHB1Ymxpc2ggYXYsIGEsIHYKKwkJCS8vIEJ1dCB3ZSBvbmx5IHJlY29yZCBhdiBvciBhLCB2aWRlbyBvbmx5IGlzIG5vdCBpbnRlcmVzdGluZworCQkJKHJjbC5nZXRJc0FWQ2xpZW50KCkgJiYgCisJCQkJCShyY2wuZ2V0QXZzZXR0aW5ncygpLmVxdWFscygiYXYiKQorCQkJCQl8fCByY2wuZ2V0QXZzZXR0aW5ncygpLmVxdWFscygiYSIpCisJCQkJCXx8IHJjbC5nZXRBdnNldHRpbmdzKCkuZXF1YWxzKCJ2IikpKSB7CisKKwkJCQlTdHJpbmcgc3RyZWFtTmFtZSA9IGdlbmVyYXRlRmlsZU5hbWUoZmx2UmVjb3JkaW5nSWQsIFN0cmluZworCQkJCQkJLnZhbHVlT2YocmNsLmdldEJyb2FkQ2FzdElEKCkpLnRvU3RyaW5nKCkpOworCisJCQkJLy8gQWRkIE1ldGEgRGF0YQorCQkJCWJvb2xlYW4gaXNBdWRpb09ubHkgPSBmYWxzZTsKKwkJCQlpZiAocmNsLmdldEF2c2V0dGluZ3MoKS5lcXVhbHMoImEiKSkgeworCQkJCQlpc0F1ZGlvT25seSA9IHRydWU7CisJCQkJfQorCQkJCWJvb2xlYW4gaXNWaWRlb09ubHkgPSBmYWxzZTsKKwkJCQlpZiAocmNsLmdldEF2c2V0dGluZ3MoKS5lcXVhbHMoInYiKSkgeworCQkJCQlpc1ZpZGVvT25seSA9IHRydWU7CisJCQkJfQorCisJCQkJTG9uZyBmbHZSZWNvcmRpbmdNZXRhRGF0YUlkID0gdGhpcy5mbHZSZWNvcmRpbmdNZXRhRGF0YURhbworCQkJCQkJLmFkZEZsdlJlY29yZGluZ01ldGFEYXRhKGZsdlJlY29yZGluZ0lkLAorCQkJCQkJCQlyY2wuZ2V0Rmlyc3RuYW1lKCkgKyAiICIgKyByY2wuZ2V0TGFzdG5hbWUoKSwKKwkJCQkJCQkJbm93LCBpc0F1ZGlvT25seSwgaXNWaWRlb09ubHksIGZhbHNlLAorCQkJCQkJCQlzdHJlYW1OYW1lLCByY2wuZ2V0SW50ZXJ2aWV3UG9kSWQoKSk7CisKKwkJCQkvLyBTdGFydCBGTFYgcmVjb3JkaW5nCisJCQkJcmVjb3JkU2hvdyhjb25uLCBTdHJpbmcudmFsdWVPZihyY2wuZ2V0QnJvYWRDYXN0SUQoKSkKKwkJCQkJCS50b1N0cmluZygpLCBzdHJlYW1OYW1lLCBmbHZSZWNvcmRpbmdNZXRhRGF0YUlkLCBmYWxzZSwKKwkJCQkJCWZsdlJlY29yZGluZy5nZXRJc0ludGVydmlldygpKTsKKworCQkJCXJjbC5zZXRGbHZSZWNvcmRpbmdNZXRhRGF0YUlkKGZsdlJlY29yZGluZ01ldGFEYXRhSWQpOworCisJCQkJdGhpcy5zZXNzaW9uTWFuYWdlci51cGRhdGVDbGllbnRCeVN0cmVhbUlkKAorCQkJCQkJcmNsLmdldFN0cmVhbWlkKCksIHJjbCwgZmFsc2UsIG51bGwpOworCisJCQl9CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbYWRkUmVjb3JkaW5nQnlTdHJlYW1JZF0iLCBlcnIpOworCQl9CisJfQorCisJcHVibGljIEZsdlJlY29yZGluZyBnZXRGbHZSZWNvcmRpbmdXaXRoTWV0YURhdGEoU3RyaW5nIFNJRCwKKwkJCUxvbmcgZmx2UmVjb3JkaW5nSWQpIHsKKwkJdHJ5IHsKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tVc2VyTGV2ZWwodXNlcl9sZXZlbCkpIHsKKworCQkJCUZsdlJlY29yZGluZyBmbHZSZWNvcmRpbmcgPSB0aGlzLmZsdlJlY29yZGluZ0Rhb0ltcGwKKwkJCQkJCS5nZXRGbHZSZWNvcmRpbmdCeUlkKGZsdlJlY29yZGluZ0lkKTsKKworCQkJCWZsdlJlY29yZGluZworCQkJCQkJLnNldEZsdlJlY29yZGluZ01ldGFEYXRhKHRoaXMuZmx2UmVjb3JkaW5nTWV0YURhdGFEYW8KKwkJCQkJCQkJLmdldEZsdlJlY29yZGluZ01ldGFEYXRhQnlSZWNvcmRpbmcoZmx2UmVjb3JkaW5nSWQpKTsKKworCQkJCWlmIChmbHZSZWNvcmRpbmcuZ2V0SW5zZXJ0ZWRCeSgpICE9IG51bGwpIHsKKwkJCQkJZmx2UmVjb3JkaW5nLnNldENyZWF0b3IodGhpcy51c2Vyc0Rhb0ltcGwKKwkJCQkJCQkuZ2V0KGZsdlJlY29yZGluZy5nZXRJbnNlcnRlZEJ5KCkpKTsKKwkJCQl9CisKKwkJCQlpZiAoZmx2UmVjb3JkaW5nLmdldFJvb21faWQoKSAhPSBudWxsKSB7CisJCQkJCWZsdlJlY29yZGluZy5zZXRSb29tKHJvb21EYW8uZ2V0KGZsdlJlY29yZGluZy5nZXRSb29tX2lkKCkpKTsKKwkJCQl9CisKKwkJCQlmbHZSZWNvcmRpbmcuc2V0Rmx2UmVjb3JkaW5nTG9nKHRoaXMuZmx2UmVjb3JkaW5nTG9nRGFvSW1wbAorCQkJCQkJLmdldEZMVlJlY29yZGluZ0xvZ0J5UmVjb3JkaW5nSWQoZmx2UmVjb3JkaW5nSWQpKTsKKworCQkJCXJldHVybiBmbHZSZWNvcmRpbmc7CisKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbZ2V0Rmx2UmVjb3JkaW5nV2l0aE1ldGFEYXRhXSAiLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMaXN0PEZsdlJlY29yZGluZ0xvZz4gZ2V0Rmx2UmVjb3JkaW5nTG9nKFN0cmluZyBTSUQsCisJCQlMb25nIGZsdlJlY29yZGluZ0lkKSB7CisJCXRyeSB7CisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrVXNlckxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlyZXR1cm4gdGhpcy5mbHZSZWNvcmRpbmdMb2dEYW9JbXBsCisJCQkJCQkuZ2V0RkxWUmVjb3JkaW5nTG9nQnlSZWNvcmRpbmdJZChmbHZSZWNvcmRpbmdJZCk7CisKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbZ2V0Rmx2UmVjb3JkaW5nTG9nXSAiLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMb25nIGRlbGV0ZUZMVk9yRm9sZGVyKFN0cmluZyBTSUQsIExvbmcgZmx2UmVjb3JkaW5nSWQpIHsKKwkJdHJ5IHsKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCisJCQlTeXN0ZW0ub3V0LnByaW50bG4oImRlbGV0ZUZMVk9yRm9sZGVyICIgKyBmbHZSZWNvcmRpbmdJZCk7CisKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrVXNlckxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlsb2cuZGVidWcoImRlbGV0ZUZMVk9yRm9sZGVyICIgKyBmbHZSZWNvcmRpbmdJZCk7CisKKwkJCQl0aGlzLmZsdlJlY29yZGluZ0Rhb0ltcGwuZGVsZXRlRmx2UmVjb3JkaW5nKGZsdlJlY29yZGluZ0lkKTsKKworCQkJCXJldHVybiBmbHZSZWNvcmRpbmdJZDsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbZGVsZXRlRkxWT3JGb2xkZXJdICIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIExpc3Q8Rmx2UmVjb3JkaW5nPiBnZXRGTFZFeHBsb3JlckJ5UGFyZW50KFN0cmluZyBTSUQsCisJCQlMb25nIHBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCwgQm9vbGVhbiBpc093bmVyKSB7CisJCXRyeSB7CisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrVXNlckxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlsb2cuZGVidWcoInBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCAiCisJCQkJCQkrIHBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCk7CisKKwkJCQlpZiAocGFyZW50RmlsZUV4cGxvcmVySXRlbUlkID09IDApIHsKKwkJCQkJaWYgKGlzT3duZXIpIHsKKworCQkJCQkJcmV0dXJuIHRoaXMuZmx2UmVjb3JkaW5nRGFvSW1wbC5nZXRGbHZSZWNvcmRpbmdCeU93bmVyKAorCQkJCQkJCQl1c2Vyc19pZCwgcGFyZW50RmlsZUV4cGxvcmVySXRlbUlkKTsKKworCQkJCQl9IGVsc2UgeworCisJCQkJCQlyZXR1cm4gdGhpcy5mbHZSZWNvcmRpbmdEYW9JbXBsCisJCQkJCQkJCS5nZXRGbHZSZWNvcmRpbmdzUHVibGljKCk7CisKKwkJCQkJfQorCQkJCX0gZWxzZSB7CisKKwkJCQkJcmV0dXJuIHRoaXMuZmx2UmVjb3JkaW5nRGFvSW1wbAorCQkJCQkJCS5nZXRGbHZSZWNvcmRpbmdCeVBhcmVudChwYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQpOworCQkJCX0KKworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRGTFZFeHBsb3JlckJ5UGFyZW50XSAiLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMb25nIGFkZEZvbGRlcihTdHJpbmcgU0lELCBMb25nIHBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCwKKwkJCVN0cmluZyBmaWxlTmFtZSwgQm9vbGVhbiBpc093bmVyLCBMb25nIG9yZ2FuaXphdGlvbl9pZCkgeworCQl0cnkgeworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1VzZXJMZXZlbCh1c2VyX2xldmVsKSkgeworCisJCQkJbG9nLmRlYnVnKCJhZGRGb2xkZXIgIiArIHBhcmVudEZpbGVFeHBsb3Jlckl0ZW1JZCk7CisKKwkJCQlpZiAocGFyZW50RmlsZUV4cGxvcmVySXRlbUlkID09IDAgJiYgaXNPd25lcikgeworCisJCQkJCXJldHVybiB0aGlzLmZsdlJlY29yZGluZ0Rhb0ltcGwuYWRkRmx2Rm9sZGVyUmVjb3JkaW5nKCIiLAorCQkJCQkJCWZpbGVOYW1lLCBudWxsLCAvLyBGaWxlU2l6ZQorCQkJCQkJCXVzZXJzX2lkLCBudWxsLCBudWxsLCBudWxsLCAvLyBMb25nIHJvb21faWQsIERhdGUKKwkJCQkJCQkJCQkJCQkJLy8gcmVjb3JkU3RhcnQsIERhdGUKKwkJCQkJCQkJCQkJCQkJLy8gcmVjb3JkRW5kCisJCQkJCQkJdXNlcnNfaWQsIC8vIE93bmVySUQgPT4gb25seSBzZXQgaWYgaXRzIGRpcmVjdGx5CisJCQkJCQkJCQkJLy8gcm9vdCBpbiBPd25lciBEaXJlY3RvcnksIG90aGVyCisJCQkJCQkJCQkJLy8gRm9sZGVycyBhbmQgRmlsZXMKKwkJCQkJCQkvLyBtYXliZSBhcmUgYWxzbyBpbiBhIEhvbWUgZGlyZWN0b3J5IGJ1dCBqdXN0CisJCQkJCQkJLy8gYmVjYXVzZSB0aGVpciBwYXJlbnQgaXMKKwkJCQkJCQkiIiwgcGFyZW50RmlsZUV4cGxvcmVySXRlbUlkLCBvcmdhbml6YXRpb25faWQpOworCisJCQkJfSBlbHNlIHsKKworCQkJCQlyZXR1cm4gdGhpcy5mbHZSZWNvcmRpbmdEYW9JbXBsLmFkZEZsdkZvbGRlclJlY29yZGluZygiIiwKKwkJCQkJCQlmaWxlTmFtZSwgbnVsbCwgLy8gRmlsZVNpemUKKwkJCQkJCQl1c2Vyc19pZCwgbnVsbCwgbnVsbCwgbnVsbCwgLy8gTG9uZyByb29tX2lkLCBEYXRlCisJCQkJCQkJCQkJCQkJCS8vIHJlY29yZFN0YXJ0LCBEYXRlCisJCQkJCQkJCQkJCQkJCS8vIHJlY29yZEVuZAorCQkJCQkJCW51bGwsIC8vIE93bmVySUQgPT4gb25seSBzZXQgaWYgaXRzIGRpcmVjdGx5IHJvb3QgaW4KKwkJCQkJCQkJCS8vIE93bmVyIERpcmVjdG9yeSwgb3RoZXIgRm9sZGVycyBhbmQgRmlsZXMKKwkJCQkJCQkvLyBtYXliZSBhcmUgYWxzbyBpbiBhIEhvbWUgZGlyZWN0b3J5IGJ1dCBqdXN0CisJCQkJCQkJLy8gYmVjYXVzZSB0aGVpciBwYXJlbnQgaXMKKwkJCQkJCQkiIiwgcGFyZW50RmlsZUV4cGxvcmVySXRlbUlkLCBvcmdhbml6YXRpb25faWQpOworCisJCQkJfQorCisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2FkZEZvbGRlcl0gIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgTG9uZyBtb3ZlRmlsZShTdHJpbmcgU0lELCBMb25nIGZsdlJlY29yZGluZ0lkLAorCQkJTG9uZyBuZXdQYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQsIEJvb2xlYW4gaXNPd25lciwKKwkJCUJvb2xlYW4gbW92ZVRvSG9tZSkgeworCQl0cnkgeworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrVXNlckxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlsb2cuZGVidWcoIm1vdmVGaWxlICIgKyBmbHZSZWNvcmRpbmdJZCk7CisKKwkJCQl0aGlzLmZsdlJlY29yZGluZ0Rhb0ltcGwubW92ZUZpbGUoZmx2UmVjb3JkaW5nSWQsCisJCQkJCQluZXdQYXJlbnRGaWxlRXhwbG9yZXJJdGVtSWQsIGlzT3duZXIsIHVzZXJzX2lkKTsKKworCQkJCUZsdlJlY29yZGluZyBmbHZSZWNvcmRpbmcgPSB0aGlzLmZsdlJlY29yZGluZ0Rhb0ltcGwKKwkJCQkJCS5nZXRGbHZSZWNvcmRpbmdCeUlkKGZsdlJlY29yZGluZ0lkKTsKKworCQkJCWlmIChtb3ZlVG9Ib21lKSB7CisJCQkJCS8vIHNldCB0aGlzIGZpbGUgYW5kIGFsbCBzdWJmaWxlcyBhbmQgZm9sZGVycyB0aGUgb3duZXJJZAorCQkJCQl0aGlzLnNldEZpbGVUb093bmVyT3JSb29tQnlQYXJlbnQoZmx2UmVjb3JkaW5nLCB1c2Vyc19pZCk7CisKKwkJCQl9IGVsc2UgeworCQkJCQkvLyBzZXQgdGhpcyBmaWxlIGFuZCBhbGwgc3ViZmlsZXMgYW5kIGZvbGRlcnMgdGhlIHJvb21faWQKKwkJCQkJdGhpcy5zZXRGaWxlVG9Pd25lck9yUm9vbUJ5UGFyZW50KGZsdlJlY29yZGluZywgbnVsbCk7CisKKwkJCQl9CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW21vdmVGaWxlXSAiLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXByaXZhdGUgdm9pZCBzZXRGaWxlVG9Pd25lck9yUm9vbUJ5UGFyZW50KEZsdlJlY29yZGluZyBmbHZSZWNvcmRpbmcsCisJCQlMb25nIHVzZXJzSWQpIHsKKwkJdHJ5IHsKKworCQkJZmx2UmVjb3JkaW5nLnNldE93bmVySWQodXNlcnNJZCk7CisKKwkJCXRoaXMuZmx2UmVjb3JkaW5nRGFvSW1wbC51cGRhdGVGbHZSZWNvcmRpbmcoZmx2UmVjb3JkaW5nKTsKKworCQkJTGlzdDxGbHZSZWNvcmRpbmc+IHN1YkZMVkl0ZW1zID0gdGhpcy5mbHZSZWNvcmRpbmdEYW9JbXBsCisJCQkJCS5nZXRGbHZSZWNvcmRpbmdCeVBhcmVudChmbHZSZWNvcmRpbmcuZ2V0Rmx2UmVjb3JkaW5nSWQoKSk7CisKKwkJCWZvciAoRmx2UmVjb3JkaW5nIHN1YkZMVkl0ZW0gOiBzdWJGTFZJdGVtcykgeworCQkJCXRoaXMuc2V0RmlsZVRvT3duZXJPclJvb21CeVBhcmVudChzdWJGTFZJdGVtLCB1c2Vyc0lkKTsKKwkJCX0KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltzZXRGaWxlVG9Pd25lck9yUm9vbUJ5UGFyZW50XSAiLCBlcnIpOworCQl9CisJfQorCisJcHVibGljIExvbmcgdXBkYXRlRmlsZU9yRm9sZGVyTmFtZShTdHJpbmcgU0lELCBMb25nIGZsdlJlY29yZGluZ0lkLAorCQkJU3RyaW5nIGZpbGVOYW1lKSB7CisJCXRyeSB7CisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrVXNlckxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlsb2cuZGVidWcoInVwZGF0ZUZpbGVPckZvbGRlck5hbWUgIiArIGZsdlJlY29yZGluZ0lkKTsKKworCQkJCXRoaXMuZmx2UmVjb3JkaW5nRGFvSW1wbC51cGRhdGVGaWxlT3JGb2xkZXJOYW1lKGZsdlJlY29yZGluZ0lkLAorCQkJCQkJZmlsZU5hbWUpOworCisJCQkJcmV0dXJuIGZsdlJlY29yZGluZ0lkOworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIlt1cGRhdGVGaWxlT3JGb2xkZXJOYW1lXSAiLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBGTFZSZWNvcmRlck9iamVjdCBnZXRGTFZFeHBsb3JlckJ5Um9vbShTdHJpbmcgU0lELAorCQkJTG9uZyBvcmdhbml6YXRpb25faWQpIHsKKwkJdHJ5IHsKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tVc2VyTGV2ZWwodXNlcl9sZXZlbCkpIHsKKworCQkJCUZMVlJlY29yZGVyT2JqZWN0IGZpbGVFeHBsb3Jlck9iamVjdCA9IG5ldyBGTFZSZWNvcmRlck9iamVjdCgpOworCisJCQkJLy8gVXNlciBIb21lIFJlY29yZGluZ3MKKwkJCQlMaXN0PEZsdlJlY29yZGluZz4gaG9tZUZsdlJlY29yZGluZ3MgPSB0aGlzLmZsdlJlY29yZGluZ0Rhb0ltcGwKKwkJCQkJCS5nZXRGbHZSZWNvcmRpbmdSb290QnlPd25lcih1c2Vyc19pZCk7CisJCQkJbG9uZyBob21lRmlsZVNpemUgPSAwOworCisJCQkJZm9yIChGbHZSZWNvcmRpbmcgaG9tZUZsdlJlY29yZGluZyA6IGhvbWVGbHZSZWNvcmRpbmdzKSB7CisJCQkJCWhvbWVGaWxlU2l6ZSArPSB0aGlzCisJCQkJCQkJLmdldFNpemVPZkRpcmVjdG9yeUFuZFN1YnMoaG9tZUZsdlJlY29yZGluZyk7CisJCQkJfQorCisJCQkJZmlsZUV4cGxvcmVyT2JqZWN0LnNldFVzZXJIb21lKGhvbWVGbHZSZWNvcmRpbmdzKTsKKwkJCQlmaWxlRXhwbG9yZXJPYmplY3Quc2V0VXNlckhvbWVTaXplKGhvbWVGaWxlU2l6ZSk7CisKKwkJCQkvLyBQdWJsaWMgUmVjb3JkaW5ncyBieSBPcmdhbml6YXRpb24KKwkJCQlMaXN0PEZsdlJlY29yZGluZz4gcHVibGljRmx2UmVjb3JkaW5ncyA9IHRoaXMuZmx2UmVjb3JkaW5nRGFvSW1wbAorCQkJCQkJLmdldEZsdlJlY29yZGluZ1Jvb3RCeVB1YmxpYyhvcmdhbml6YXRpb25faWQpOworCQkJCWxvbmcgcHVibGljRmlsZVNpemUgPSAwOworCisJCQkJZm9yIChGbHZSZWNvcmRpbmcgcHVibGljRmx2UmVjb3JkaW5nIDogcHVibGljRmx2UmVjb3JkaW5ncykgeworCQkJCQlwdWJsaWNGaWxlU2l6ZSArPSB0aGlzCisJCQkJCQkJLmdldFNpemVPZkRpcmVjdG9yeUFuZFN1YnMocHVibGljRmx2UmVjb3JkaW5nKTsKKwkJCQl9CisJCQkJZmlsZUV4cGxvcmVyT2JqZWN0LnNldFJvb21Ib21lKHB1YmxpY0ZsdlJlY29yZGluZ3MpOworCQkJCWZpbGVFeHBsb3Jlck9iamVjdC5zZXRSb29tSG9tZVNpemUocHVibGljRmlsZVNpemUpOworCisJCQkJcmV0dXJuIGZpbGVFeHBsb3Jlck9iamVjdDsKKworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRGaWxlRXhwbG9yZXJCeVJvb21dICIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHJpdmF0ZSBsb25nIGdldFNpemVPZkRpcmVjdG9yeUFuZFN1YnMoRmx2UmVjb3JkaW5nIHJlYykgeworCQl0cnkgeworCQkJbG9uZyBmaWxlU2l6ZSA9IDA7CisKKwkJCWlmIChyZWMuZ2V0RmlsZUhhc2goKSAhPSBudWxsKSB7CisJCQkJRmlsZSB0RmlsZSA9IG5ldyBGaWxlKE9tRmlsZUhlbHBlci5nZXRTdHJlYW1zSGliZXJuYXRlRGlyKCksIHJlYy5nZXRGaWxlSGFzaCgpKTsKKwkJCQlpZiAodEZpbGUuZXhpc3RzKCkpIHsKKwkJCQkJZmlsZVNpemUgKz0gdEZpbGUubGVuZ3RoKCk7CisJCQkJfQorCQkJfQorCisJCQlpZiAocmVjLmdldEFsdGVybmF0ZURvd25sb2FkKCkgIT0gbnVsbCkgeworCQkJCUZpbGUgZEZpbGUgPSBuZXcgRmlsZShPbUZpbGVIZWxwZXIuZ2V0U3RyZWFtc0hpYmVybmF0ZURpcigpLCByZWMuZ2V0QWx0ZXJuYXRlRG93bmxvYWQoKSk7CisJCQkJaWYgKGRGaWxlLmV4aXN0cygpKSB7CisJCQkJCWZpbGVTaXplICs9IGRGaWxlLmxlbmd0aCgpOworCQkJCX0KKwkJCX0KKwkJCWlmIChyZWMuZ2V0UHJldmlld0ltYWdlKCkgIT0gbnVsbCkgeworCQkJCUZpbGUgaUZpbGUgPSBuZXcgRmlsZShPbUZpbGVIZWxwZXIuZ2V0U3RyZWFtc0hpYmVybmF0ZURpcigpLCByZWMuZ2V0UHJldmlld0ltYWdlKCkpOworCQkJCWlmIChpRmlsZS5leGlzdHMoKSkgeworCQkJCQlmaWxlU2l6ZSArPSBpRmlsZS5sZW5ndGgoKTsKKwkJCQl9CisJCQl9CisKKwkJCUxpc3Q8Rmx2UmVjb3JkaW5nPiBmbHZSZWNvcmRpbmdzID0gZmx2UmVjb3JkaW5nRGFvSW1wbC5nZXRGbHZSZWNvcmRpbmdCeVBhcmVudCgKKwkJCQlyZWMuZ2V0Rmx2UmVjb3JkaW5nSWQoKSk7CisKKwkJCWZvciAoRmx2UmVjb3JkaW5nIGZsdlJlY29yZGluZyA6IGZsdlJlY29yZGluZ3MpIHsKKwkJCQlmaWxlU2l6ZSArPSBnZXRTaXplT2ZEaXJlY3RvcnlBbmRTdWJzKGZsdlJlY29yZGluZyk7CisJCQl9CisKKwkJCXJldHVybiBmaWxlU2l6ZTsKKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRTaXplT2ZEaXJlY3RvcnlBbmRTdWJzXSAiLCBlcnIpOworCQl9CisJCXJldHVybiAwOworCX0KKworCXB1YmxpYyBMb25nIHJlc3RhcnRDb252ZXJzaW9uKFN0cmluZyBTSUQsIExvbmcgZmx2UmVjb3JkaW5nSWQsCisJCQlJbnRlZ2VyIGxlZnRTaWRlTG91ZCwgSW50ZWdlciByaWdodFNpZGVMb3VkLCBJbnRlZ2VyIGxlZnRTaWRlVGltZSwKKwkJCUludGVnZXIgcmlnaHRTaWRlVGltZSkgeworCQl0cnkgeworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1VzZXJMZXZlbCh1c2VyX2xldmVsKSkgeworCisJCQkJbG9nLmRlYnVnKCJ1cGRhdGVGaWxlT3JGb2xkZXJOYW1lICIgKyBmbHZSZWNvcmRpbmdJZCk7CisKKwkJCQlGbHZSZWNvcmRpbmcgZmx2UmVjb3JkaW5nID0gdGhpcy5mbHZSZWNvcmRpbmdEYW9JbXBsCisJCQkJCQkuZ2V0Rmx2UmVjb3JkaW5nQnlJZChmbHZSZWNvcmRpbmdJZCk7CisKKwkJCQlmbHZSZWNvcmRpbmcuc2V0UHJldmlld0ltYWdlKG51bGwpOworCisJCQkJZmx2UmVjb3JkaW5nLnNldFByb2dyZXNzUG9zdFByb2Nlc3NpbmcoMCk7CisKKwkJCQl0aGlzLmZsdlJlY29yZGluZ0Rhb0ltcGwudXBkYXRlRmx2UmVjb3JkaW5nKGZsdlJlY29yZGluZyk7CisKKwkJCQlpZiAoZmx2UmVjb3JkaW5nLmdldElzSW50ZXJ2aWV3KCkgPT0gbnVsbAorCQkJCQkJfHwgIWZsdlJlY29yZGluZy5nZXRJc0ludGVydmlldygpKSB7CisJCQkJCWZsdlJlY29yZGVyQ29udmVydGVyVGFzay5zdGFydENvbnZlcnNpb25UaHJlYWQoZmx2UmVjb3JkaW5nSWQpOworCQkJCX0gZWxzZSB7CisJCQkJCWZsdkludGVydmlld1JlQ29udmVydGVyVGFzay5zdGFydENvbnZlcnNpb25UaHJlYWQoCisJCQkJCQlmbHZSZWNvcmRpbmdJZCwgbGVmdFNpZGVMb3VkLCByaWdodFNpZGVMb3VkLAorCQkJCQkJbGVmdFNpZGVUaW1lLCByaWdodFNpZGVUaW1lKTsKKwkJCQl9CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW3Jlc3RhcnRJbnRlcnZpZXdDb252ZXJzaW9uXSAiLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3JlbW90ZS9Hcm91cFNlcnZpY2UuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9yZW1vdGUvR3JvdXBTZXJ2aWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGZmYjU4NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9yZW1vdGUvR3JvdXBTZXJ2aWNlLmphdmEKQEAgLTAsMCArMSwyMyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5yZW1vdGU7CisKKworcHVibGljIGNsYXNzIEdyb3VwU2VydmljZSB7Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcmVtb3RlL0ludml0YXRpb25TZXJ2aWNlLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcmVtb3RlL0ludml0YXRpb25TZXJ2aWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTNlNTliYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9yZW1vdGUvSW52aXRhdGlvblNlcnZpY2UuamF2YQpAQCAtMCwwICsxLDE3NyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5yZW1vdGU7CisKK2ltcG9ydCBqYXZhLnV0aWwuQ2FsZW5kYXI7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgamF2YS51dGlsLlRpbWVab25lOworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuU2Vzc2lvbmRhdGFEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5kYW8uQ29uZmlndXJhdGlvbkRhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLmRhby5PbVRpbWVab25lRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY29uZmVyZW5jZS5JbnZpdGF0aW9uTWFuYWdlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuVXNlck1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLmRhby5Vc2Vyc0RhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5PbVRpbWVab25lOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmludml0YXRpb24uSW52aXRhdGlvbnM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlci5Vc2VyOworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnJlZDUuc2VydmVyLmFwaS5zZXJ2aWNlLklQZW5kaW5nU2VydmljZUNhbGw7CitpbXBvcnQgb3JnLnJlZDUuc2VydmVyLmFwaS5zZXJ2aWNlLklQZW5kaW5nU2VydmljZUNhbGxiYWNrOworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uQXV0b3dpcmVkOworCitwdWJsaWMgY2xhc3MgSW52aXRhdGlvblNlcnZpY2UgaW1wbGVtZW50cyBJUGVuZGluZ1NlcnZpY2VDYWxsYmFjayB7CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKAorCQkJSW52aXRhdGlvblNlcnZpY2UuY2xhc3MsIE9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBTZXNzaW9uZGF0YURhbyBzZXNzaW9uZGF0YURhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBDb25maWd1cmF0aW9uRGFvIGNvbmZpZ3VyYXRpb25EYW87CisJQEF1dG93aXJlZAorCXByaXZhdGUgVXNlcnNEYW8gdXNlckRBTzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBVc2VyTWFuYWdlciB1c2VyTWFuYWdlcjsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBPbVRpbWVab25lRGFvIG9tVGltZVpvbmVEYW9JbXBsOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEludml0YXRpb25NYW5hZ2VyIGludml0YXRpb25NYW5hZ2VyOworCisJcHVibGljIHZvaWQgcmVzdWx0UmVjZWl2ZWQoSVBlbmRpbmdTZXJ2aWNlQ2FsbCBhcmcwKSB7CisJCS8vIFRPRE8gQXV0by1nZW5lcmF0ZWQgbWV0aG9kIHN0dWIKKwkJbG9nLmRlYnVnKCJJbnZpdGF0aW9uU2VydmljZSByZXN1bHRSZWNlaXZlZCIgKyBhcmcwKTsKKwl9CisKKwkvKioKKwkgKiBzZW5kIGFuIGludml0YXRpb24gdG8gYW5vdGhlciB1c2VyIGJ5IE1haWwKKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogQHBhcmFtIHVzZXJuYW1lCisJICogQHBhcmFtIG1lc3NhZ2UKKwkgKiBAcGFyYW0gYmFzZXVybAorCSAqIEBwYXJhbSBlbWFpbAorCSAqIEBwYXJhbSBzdWJqZWN0CisJICogQHBhcmFtIHJvb21faWQKKwkgKiBAcGFyYW0gY29uZmVyZW5jZWRvbWFpbgorCSAqIEBwYXJhbSBpc1Bhc3N3b3JkUHJvdGVjdGVkCisJICogQHBhcmFtIGludml0YXRpb25wYXNzCisJICogQHBhcmFtIHZhbGlkCisJICogQHBhcmFtIHZhbGlkRnJvbURhdGUKKwkgKiBAcGFyYW0gdmFsaWRGcm9tVGltZQorCSAqIEBwYXJhbSB2YWxpZFRvRGF0ZQorCSAqIEBwYXJhbSB2YWxpZFRvVGltZQorCSAqIEBwYXJhbSBsYW5ndWFnZV9pZAorICAgICAqIEBwYXJhbSBqTmFtZVRpbWVab25lCisJICogQHJldHVybiAtIGludml0YXRpb24gb2JqZWN0IGluIGNhc2Ugb2Ygc3VjY2VzcywgIlN5cyAtIEVycm9yIiBzdHJpbmcgb3IgbnVsbCBpbiBjYXNlIG9mIGVycm9yCisJICovCisJcHVibGljIE9iamVjdCBzZW5kSW52aXRhdGlvbkhhc2goU3RyaW5nIFNJRCwgU3RyaW5nIHVzZXJuYW1lLAorCQkJU3RyaW5nIG1lc3NhZ2UsIFN0cmluZyBiYXNldXJsLCBTdHJpbmcgZW1haWwsIFN0cmluZyBzdWJqZWN0LAorCQkJTG9uZyByb29tX2lkLCBTdHJpbmcgY29uZmVyZW5jZWRvbWFpbiwgQm9vbGVhbiBpc1Bhc3N3b3JkUHJvdGVjdGVkLAorCQkJU3RyaW5nIGludml0YXRpb25wYXNzLCBJbnRlZ2VyIHZhbGlkLCBEYXRlIHZhbGlkRnJvbURhdGUsCisJCQlTdHJpbmcgdmFsaWRGcm9tVGltZSwgRGF0ZSB2YWxpZFRvRGF0ZSwgU3RyaW5nIHZhbGlkVG9UaW1lLAorCQkJTG9uZyBsYW5ndWFnZV9pZCwgU3RyaW5nIGpOYW1lVGltZVpvbmUsIGJvb2xlYW4gc2VuZE1haWwpIHsKKworCQl0cnkgeworCQkJbG9nLmRlYnVnKCJzZW5kSW52aXRhdGlvbkhhc2g6ICIpOworCisJCQlJbnRlZ2VyIHZhbGlkRnJvbUhvdXIgPSBJbnRlZ2VyLnZhbHVlT2YoCisJCQkJCXZhbGlkRnJvbVRpbWUuc3Vic3RyaW5nKDAsIDIpKS5pbnRWYWx1ZSgpOworCQkJSW50ZWdlciB2YWxpZEZyb21NaW51dGUgPSBJbnRlZ2VyLnZhbHVlT2YoCisJCQkJCXZhbGlkRnJvbVRpbWUuc3Vic3RyaW5nKDMsIDUpKS5pbnRWYWx1ZSgpOworCisJCQlJbnRlZ2VyIHZhbGlkVG9Ib3VyID0gSW50ZWdlci52YWx1ZU9mKHZhbGlkVG9UaW1lLnN1YnN0cmluZygwLCAyKSkKKwkJCQkJLmludFZhbHVlKCk7CisJCQlJbnRlZ2VyIHZhbGlkVG9NaW51dGUgPSBJbnRlZ2VyCisJCQkJCS52YWx1ZU9mKHZhbGlkVG9UaW1lLnN1YnN0cmluZygzLCA1KSkuaW50VmFsdWUoKTsKKworCQkJbG9nLmluZm8oInZhbGlkRnJvbUhvdXI6ICIgKyB2YWxpZEZyb21Ib3VyKTsKKwkJCWxvZy5pbmZvKCJ2YWxpZEZyb21NaW51dGU6ICIgKyB2YWxpZEZyb21NaW51dGUpOworCisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKworCQkJT21UaW1lWm9uZSBvbVRpbWVab25lID0gb21UaW1lWm9uZURhb0ltcGwKKwkJCQkJLmdldE9tVGltZVpvbmUoak5hbWVUaW1lWm9uZSk7CisKKwkJCS8vIElmIGV2ZXJ5dGhpbmcgZmFpbHMKKwkJCWlmIChvbVRpbWVab25lID09IG51bGwpIHsKKwkJCQlvbVRpbWVab25lID0gb21UaW1lWm9uZURhb0ltcGwuZ2V0T21UaW1lWm9uZShjb25maWd1cmF0aW9uRGFvLmdldENvbmZWYWx1ZSgiZGVmYXVsdC50aW1lem9uZSIsIFN0cmluZy5jbGFzcywgIkV1cm9wZS9CZXJsaW4iKSk7CisJCQl9CisKKwkJCUNhbGVuZGFyIGRhdGUgPSBDYWxlbmRhci5nZXRJbnN0YW5jZSgpOworCQkJZGF0ZS5zZXRUaW1lKHZhbGlkRnJvbURhdGUpOworCQkJCisJCQlTdHJpbmcgdGltZVpvbmVOYW1lID0gb21UaW1lWm9uZS5nZXRJY2FsKCk7CisJCQlDYWxlbmRhciBjYWxGcm9tID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoVGltZVpvbmUuZ2V0VGltZVpvbmUodGltZVpvbmVOYW1lKSk7CisJCQljYWxGcm9tLnNldChDYWxlbmRhci5ZRUFSLCBkYXRlLmdldChDYWxlbmRhci5ZRUFSKSk7CisJCQljYWxGcm9tLnNldChDYWxlbmRhci5NT05USCwgZGF0ZS5nZXQoQ2FsZW5kYXIuTU9OVEgpKTsKKwkJCWNhbEZyb20uc2V0KENhbGVuZGFyLkRBWV9PRl9NT05USCwgZGF0ZS5nZXQoQ2FsZW5kYXIuREFZX09GX01PTlRIKSk7CisJCQljYWxGcm9tLnNldChDYWxlbmRhci5IT1VSX09GX0RBWSwgdmFsaWRGcm9tSG91cik7CisJCQljYWxGcm9tLnNldChDYWxlbmRhci5NSU5VVEUsIHZhbGlkRnJvbU1pbnV0ZSk7CisJCQljYWxGcm9tLnNldChDYWxlbmRhci5TRUNPTkQsIDApOworCisJCQlkYXRlLnNldFRpbWUodmFsaWRUb0RhdGUpOworCQkJQ2FsZW5kYXIgY2FsVG8gPSBDYWxlbmRhci5nZXRJbnN0YW5jZShUaW1lWm9uZS5nZXRUaW1lWm9uZSh0aW1lWm9uZU5hbWUpKTsKKwkJCWNhbFRvLnNldChDYWxlbmRhci5ZRUFSLCBkYXRlLmdldChDYWxlbmRhci5ZRUFSKSk7CisJCQljYWxUby5zZXQoQ2FsZW5kYXIuTU9OVEgsIGRhdGUuZ2V0KENhbGVuZGFyLk1PTlRIKSk7CisJCQljYWxUby5zZXQoQ2FsZW5kYXIuREFZX09GX01PTlRILCBkYXRlLmdldChDYWxlbmRhci5EQVlfT0ZfTU9OVEgpKTsKKwkJCWNhbFRvLnNldChDYWxlbmRhci5IT1VSX09GX0RBWSwgdmFsaWRUb0hvdXIpOworCQkJY2FsVG8uc2V0KENhbGVuZGFyLk1JTlVURSwgdmFsaWRUb01pbnV0ZSk7CisJCQljYWxUby5zZXQoQ2FsZW5kYXIuU0VDT05ELCAwKTsKKworCQkJRGF0ZSBkRnJvbSA9IGNhbEZyb20uZ2V0VGltZSgpOworCQkJRGF0ZSBkVG8gPSBjYWxUby5nZXRUaW1lKCk7CisKKwkJCUludml0YXRpb25zIGludml0YXRpb24gPSBpbnZpdGF0aW9uTWFuYWdlcgorCQkJCQkuYWRkSW52aXRhdGlvbkxpbmsodXNlcl9sZXZlbCwgdXNlcm5hbWUsIG1lc3NhZ2UsIGJhc2V1cmwsCisJCQkJCQkJZW1haWwsIHN1YmplY3QsIHJvb21faWQsIGNvbmZlcmVuY2Vkb21haW4sCisJCQkJCQkJaXNQYXNzd29yZFByb3RlY3RlZCwgaW52aXRhdGlvbnBhc3MsIHZhbGlkLCBkRnJvbSwKKwkJCQkJCQlkVG8sIHVzZXJzX2lkLCBiYXNldXJsLCBsYW5ndWFnZV9pZCwgc2VuZE1haWwsCisJCQkJCQkJZEZyb20sIGRUbywgbnVsbCwgdXNlcm5hbWUsIG9tVGltZVpvbmUpOworCisJCQlpZiAoaW52aXRhdGlvbiAhPSBudWxsKSB7CisJCQkJcmV0dXJuIGludml0YXRpb247CisJCQl9IGVsc2UgeworCQkJCXJldHVybiAiU3lzIC0gRXJyb3IiOworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltzZW5kSW52aXRhdGlvbkhhc2hdIiwgZXJyKTsKKwkJfQorCisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBTdHJpbmcgc2VuZEludml0YXRpb25CeUhhc2goU3RyaW5nIFNJRCwgU3RyaW5nIGludml0YXRpb25IYXNoLCBTdHJpbmcgbWVzc2FnZSwgU3RyaW5nIGJhc2V1cmwsIFN0cmluZyBzdWJqZWN0LCBMb25nIGxhbmd1YWdlX2lkKSB7CisJCVVzZXIgdXMgPSB1c2VyREFPLmdldChzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKSk7CisJCUludml0YXRpb25zIGludiA9IChJbnZpdGF0aW9ucylpbnZpdGF0aW9uTWFuYWdlci5nZXRJbnZpdGF0aW9uQnlIYXNoQ29kZShpbnZpdGF0aW9uSGFzaCwgdHJ1ZSk7CisJCXJldHVybiBpbnZpdGF0aW9uTWFuYWdlci5zZW5kSW52aXRpb25MaW5rKHVzLCBpbnYsIG1lc3NhZ2UsIGJhc2V1cmwsIHN1YmplY3QsIGxhbmd1YWdlX2lkKTsKKwl9CisJCisJcHVibGljIE9iamVjdCBnZXRJbnZpdGF0aW9uQnlIYXNoKFN0cmluZyBoYXNoQ29kZSkgeworCQlyZXR1cm4gaW52aXRhdGlvbk1hbmFnZXIuZ2V0SW52aXRhdGlvbkJ5SGFzaENvZGUoCisJCQkJaGFzaENvZGUsIHRydWUpOworCX0KKworCXB1YmxpYyBPYmplY3QgY2hlY2tJbnZpdGF0aW9uUGFzcyhTdHJpbmcgaGFzaENvZGUsIFN0cmluZyBwYXNzKSB7CisJCXJldHVybiBpbnZpdGF0aW9uTWFuYWdlci5jaGVja0ludml0YXRpb25QYXNzKGhhc2hDb2RlLAorCQkJCXBhc3MpOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9yZW1vdGUvTGFuZ3VhZ2VTZXJ2aWNlLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcmVtb3RlL0xhbmd1YWdlU2VydmljZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmZmIzNzkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcmVtb3RlL0xhbmd1YWdlU2VydmljZS5qYXZhCkBAIC0wLDAgKzEsMjE3IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnJlbW90ZTsKKworaW1wb3J0IGphdmEudXRpbC5MaW5rZWRIYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5NYXA7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5BdXRoTGV2ZWxVdGlsOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuRmllbGRMYW5ndWFnZURhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLkZpZWxkTWFuYWdlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLlNlc3Npb25kYXRhRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuZGFvLkNvbmZpZ3VyYXRpb25EYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iZWFucy5iYXNpYy5TZWFyY2hSZXN1bHQ7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLlVzZXJNYW5hZ2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmxhbmcuRmllbGRMYW5ndWFnZTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5sYW5nLkZpZWxkbGFuZ3VhZ2VzdmFsdWVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmxhbmcuRmllbGR2YWx1ZXM7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKKworLyoqCisgKiAKKyAqIEBhdXRob3Igc2ViYXN0aWFud2FnbmVyCisgKiAKKyAqLworcHVibGljIGNsYXNzIExhbmd1YWdlU2VydmljZSB7CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKAorCQkJTGFuZ3VhZ2VTZXJ2aWNlLmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisJQEF1dG93aXJlZAorCXByaXZhdGUgU2Vzc2lvbmRhdGFEYW8gc2Vzc2lvbmRhdGFEYW87CisJQEF1dG93aXJlZAorCXByaXZhdGUgQ29uZmlndXJhdGlvbkRhbyBjb25maWd1cmF0aW9uRGFvOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFVzZXJNYW5hZ2VyIHVzZXJNYW5hZ2VyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEZpZWxkTWFuYWdlciBmaWVsZE1hbmFnZXI7CisJQEF1dG93aXJlZAorCXByaXZhdGUgRmllbGRMYW5ndWFnZURhbyBmaWVsZExhbmd1YWdlRGFvSW1wbDsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBBdXRoTGV2ZWxVdGlsIGF1dGhMZXZlbFV0aWw7CisKKwkvKioKKwkgKiBnZXQgYSBMaXN0IG9mIGFsbCBhdmFpbGFpYmxlIExhbmd1YWdlcworCSAqIAorCSAqIEByZXR1cm4gLSBMaXN0IG9mIGFsbCBhdmFpbGFpYmxlIExhbmd1YWdlcworCSAqLworCXB1YmxpYyBMaXN0PEZpZWxkTGFuZ3VhZ2U+IGdldExhbmd1YWdlcygpIHsKKwkJcmV0dXJuIGZpZWxkTGFuZ3VhZ2VEYW9JbXBsLmdldExhbmd1YWdlcygpOworCX0KKworCS8qKgorCSAqIGdldCBhbGwgZmllbGRzIG9mIGEgZ2l2ZW4gTGFuZ3VhZ2VfaWQKKwkgKiAKKwkgKiBAcGFyYW0gbGFuZ3VhZ2VfaWQKKwkgKiBAZGVwcmVjYXRlZAorCSAqIEByZXR1cm4gLSBhbGwgZmllbGRzIG9mIGEgZ2l2ZW4gTGFuZ3VhZ2VfaWQKKwkgKi8KKwlARGVwcmVjYXRlZAorCXB1YmxpYyBMaXN0PEZpZWxkbGFuZ3VhZ2VzdmFsdWVzPiBnZXRMYW5ndWFnZUJ5SWQoTG9uZyBsYW5ndWFnZV9pZCkgeworCQlyZXR1cm4gZmllbGRNYW5hZ2VyLmdldEFsbEZpZWxkc0J5TGFuZ3VhZ2UobGFuZ3VhZ2VfaWQpOworCX0KKworCXB1YmxpYyBJbnRlZ2VyIGdldERlZmF1bHRMYW5ndWFnZSgpIHsKKwkJcmV0dXJuIGNvbmZpZ3VyYXRpb25EYW8uZ2V0Q29uZlZhbHVlKCJkZWZhdWx0X2xhbmdfaWQiLCBJbnRlZ2VyLmNsYXNzLCAiMSIpOworCX0KKworCS8qKgorCSAqIGdldCBhbGwgZmllbGRzIG9mIGEgZ2l2ZW4gTGFuZ3VhZ2VfaWQgYnkgcGFyYW1zCisJICogCisJICogQHBhcmFtIGxhbmd1YWdlX2lkCisJICogQHJldHVybiAtIGFsbCBmaWVsZHMgb2YgYSBnaXZlbiBMYW5ndWFnZV9pZCBpbiB0aGUgcmFuZ2UgZ2l2ZW4KKwkgKi8KKwlwdWJsaWMgTGlzdDxNYXA8U3RyaW5nLCBPYmplY3Q+PiBnZXRMYW5ndWFnZUJ5SWRBbmRNYXgoTG9uZyBsYW5ndWFnZV9pZCwKKwkJCWludCBzdGFydCwgaW50IG1heCkgeworCQlyZXR1cm4gZmllbGRNYW5hZ2VyLmdldExhYmVsc0J5TGFuZ3VhZ2UobGFuZ3VhZ2VfaWQsIHN0YXJ0LCBtYXgpOworCX0KKworCXB1YmxpYyBGaWVsZHZhbHVlcyBnZXRGaWVsZHZhbHVlQnlJZChTdHJpbmcgU0lELCBMb25nIGZpZWxkdmFsdWVzX2lkLAorCQkJTG9uZyBsYW5ndWFnZV9pZCkgeworCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja0FkbWluTGV2ZWwodXNlcl9sZXZlbCkpIHsKKwkJCXJldHVybiBmaWVsZE1hbmFnZXIuZ2V0RmllbGR2YWx1ZXNCeUlkKGZpZWxkdmFsdWVzX2lkLAorCQkJCQlsYW5ndWFnZV9pZCk7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIExvbmcgYWRkTGFuZ3VhZ2UoU3RyaW5nIFNJRCwgU3RyaW5nIGxhbmdOYW1lLCBTdHJpbmcgY29kZSkgeworCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja0FkbWluTGV2ZWwodXNlcl9sZXZlbCkpIHsKKwkJCWlmIChsYW5nTmFtZS5sZW5ndGgoKSA9PSAwKQorCQkJCXJldHVybiBuZXcgTG9uZygtMzApOworCQkJRmllbGRMYW5ndWFnZSBsYW5nID0gZmllbGRMYW5ndWFnZURhb0ltcGwuYWRkTGFuZ3VhZ2UoMCwgbGFuZ05hbWUsIGZhbHNlLCBjb2RlKTsKKwkJCXJldHVybiBsYW5nICE9IG51bGwgPyBsYW5nLmdldExhbmd1YWdlX2lkKCkgOiAtMTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgTG9uZyB1cGRhdGVMYW5ndWFnZShTdHJpbmcgU0lELCBMb25nIGxhbmd1YWdlX2lkLCBTdHJpbmcgbGFuZ05hbWUsIFN0cmluZyBjb2RlKSB7CisJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrQWRtaW5MZXZlbCh1c2VyX2xldmVsKSkgeworCQkJaWYgKGxhbmdOYW1lLmxlbmd0aCgpID09IDApCisJCQkJcmV0dXJuIG5ldyBMb25nKC0zMCk7CisJCQlyZXR1cm4gZmllbGRMYW5ndWFnZURhb0ltcGwudXBkYXRlRmllbGRMYW5ndWFnZShsYW5ndWFnZV9pZCwKKwkJCQkJbGFuZ05hbWUsIGNvZGUsIGZhbHNlKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgTG9uZyBkZWxldGVMYW5ndWFnZShTdHJpbmcgU0lELCBMb25nIGxhbmd1YWdlX2lkKSB7CisJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrQWRtaW5MZXZlbCh1c2VyX2xldmVsKSkgeworCQkJcmV0dXJuIGZpZWxkTGFuZ3VhZ2VEYW9JbXBsLnVwZGF0ZUZpZWxkTGFuZ3VhZ2UobGFuZ3VhZ2VfaWQsICIiLAorCQkJCQkiIiwgdHJ1ZSk7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIExvbmcgZGVsZXRlRmllbGRsYW5ndWFnZXN2YWx1ZXNCeUlkKFN0cmluZyBTSUQsCisJCQlMb25nIGZpZWxkbGFuZ3VhZ2VzdmFsdWVzX2lkKSB7CisJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrQWRtaW5MZXZlbCh1c2VyX2xldmVsKSkgeworCQkJcmV0dXJuIGZpZWxkTWFuYWdlcgorCQkJCQkuZGVsZXRlRmllbGRsYW5ndWFnZXN2YWx1ZXNCeUlkKGZpZWxkbGFuZ3VhZ2VzdmFsdWVzX2lkKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvKioKKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogQHBhcmFtIHN0YXJ0CisJICogQHBhcmFtIG1heAorCSAqIEBwYXJhbSBvcmRlcmJ5CisJICogQHBhcmFtIGFzYworCSAqIEBwYXJhbSBsYW5ndWFnZV9pZAorCSAqIEByZXR1cm4gLSB0aGUgbGlzdCBvZiBmaWVsZCB2YWx1ZXMgYmVpbmcgc2VhcmNoZWQgaW4gY2FzZSBvZiBzdWNjZXNzLCBudWxsIG90aGVyd2lzZQorCSAqLworCXB1YmxpYyBTZWFyY2hSZXN1bHQ8RmllbGR2YWx1ZXM+IGdldEZpZWxkc0J5TGFuZ3VhZ2UoU3RyaW5nIFNJRCwgaW50IHN0YXJ0LCBpbnQgbWF4LAorCQkJU3RyaW5nIG9yZGVyYnksIGJvb2xlYW4gYXNjLCBMb25nIGxhbmd1YWdlX2lkLCBTdHJpbmcgc2VhcmNoKSB7CisJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrQWRtaW5MZXZlbCh1c2VyX2xldmVsKSkgeworCQkJcmV0dXJuIGZpZWxkTWFuYWdlci5nZXRGaWVsZHNCeUxhbmd1YWdlKHN0YXJ0LCBtYXgsIG9yZGVyYnksIGFzYywKKwkJCQkJbGFuZ3VhZ2VfaWQsIHNlYXJjaCk7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLyoqCisJICogCisJICogQHBhcmFtIFNJRAorCSAqIEBwYXJhbSB2YWx1ZXMKKwkgKiBAcmV0dXJuIC0gaWQgb2YgdGhlIGxhYmVsIGFkZGVkIG9yIHVwZGF0ZWQgaW4gY2FzZSBvZiBzdWNjZXNzLCBlcnJvciBjb2RlIG90aGVyd2lzZQorCSAqLworCXB1YmxpYyBMb25nIHNhdmVPclVwZGF0ZUxhYmVsKFN0cmluZyBTSUQsCisJCQlMaW5rZWRIYXNoTWFwPE9iamVjdCwgT2JqZWN0PiB2YWx1ZXMpIHsKKwkJdHJ5IHsKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQkJTG9uZyBmaWVsZHZhbHVlc19pZCA9IExvbmcudmFsdWVPZigKKwkJCQkJdmFsdWVzLmdldCgiZmllbGR2YWx1ZXNfaWQiKS50b1N0cmluZygpKS5sb25nVmFsdWUoKTsKKwkJCVN0cmluZyBuYW1lID0gdmFsdWVzLmdldCgibmFtZSIpLnRvU3RyaW5nKCk7CisJCQlMb25nIGZpZWxkbGFuZ3VhZ2VzdmFsdWVzX2lkID0gTG9uZy52YWx1ZU9mKAorCQkJCQl2YWx1ZXMuZ2V0KCJmaWVsZGxhbmd1YWdlc3ZhbHVlc19pZCIpLnRvU3RyaW5nKCkpCisJCQkJCS5sb25nVmFsdWUoKTsKKwkJCUxvbmcgbGFuZ3VhZ2VfaWQgPSBMb25nLnZhbHVlT2YoCisJCQkJCXZhbHVlcy5nZXQoImxhbmd1YWdlX2lkIikudG9TdHJpbmcoKSkubG9uZ1ZhbHVlKCk7CisJCQlTdHJpbmcgdmFsdWUgPSB2YWx1ZXMuZ2V0KCJ2YWx1ZSIpLnRvU3RyaW5nKCk7CisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja0FkbWluTGV2ZWwodXNlcl9sZXZlbCkpIHsKKwkJCQlpZiAoZmllbGR2YWx1ZXNfaWQgPiAwICYmIGZpZWxkbGFuZ3VhZ2VzdmFsdWVzX2lkID4gMCkgeworCQkJCQlsb2cuZXJyb3IoIlVQREFURSBMQUJFTCIpOworCQkJCQlyZXR1cm4gZmllbGRNYW5hZ2VyLnVwZGF0ZUxhYmVsKGZpZWxkdmFsdWVzX2lkLCBuYW1lLAorCQkJCQkJCWZpZWxkbGFuZ3VhZ2VzdmFsdWVzX2lkLCB2YWx1ZSk7CisJCQkJfSBlbHNlIGlmIChmaWVsZHZhbHVlc19pZCA+IDAgJiYgZmllbGRsYW5ndWFnZXN2YWx1ZXNfaWQgPT0gMCkgeworCQkJCQlsb2cuZXJyb3IoIklOU0VSVCBORVcgTEFCRUwiKTsKKwkJCQkJcmV0dXJuIGZpZWxkTWFuYWdlci5hZGRBbmRVcGRhdGVMYWJlbChmaWVsZHZhbHVlc19pZCwKKwkJCQkJCQluYW1lLCB2YWx1ZSwgbGFuZ3VhZ2VfaWQpOworCQkJCX0gZWxzZSB7CisJCQkJCWxvZy5lcnJvcigiSU5TRVJUIE5FVyBGSUVMRCBBTkQgTEFCRUwiKTsKKwkJCQkJcmV0dXJuIGZpZWxkTWFuYWdlci5hZGRGaWVsZEFuZExhYmVsKG5hbWUsIHZhbHVlLAorCQkJCQkJCWxhbmd1YWdlX2lkKTsKKwkJCQl9CisJCQl9CisJCQlyZXR1cm4gbmV3IExvbmcoLTI2KTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCWxvZy5lcnJvcigiW3NhdmVPclVwZGF0ZUxhYmVsXSIsIGUpOworCQl9CisJCXJldHVybiBuZXcgTG9uZygtMSk7CisJfQorCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcmVtb3RlL0xkYXBDb25maWdTZXJ2aWNlLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcmVtb3RlL0xkYXBDb25maWdTZXJ2aWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTU5MTVjYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9yZW1vdGUvTGRhcENvbmZpZ1NlcnZpY2UuamF2YQpAQCAtMCwwICsxLDE1OCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5yZW1vdGU7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlua2VkSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlua2VkTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLkF1dGhMZXZlbFV0aWw7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5TZXNzaW9uZGF0YURhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLmRhby5MZGFwQ29uZmlnRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmVhbnMuYmFzaWMuU2VhcmNoUmVzdWx0OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEudXNlci5Vc2VyTWFuYWdlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5MZGFwQ29uZmlnOworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5BdXRvd2lyZWQ7CisKKy8qKgorICogCisgKiBAYXV0aG9yIHNlYmFzdGlhbndhZ25lcgorICoKKyAqLworcHVibGljIGNsYXNzIExkYXBDb25maWdTZXJ2aWNlIHsKKwkKKwkvL1NwcmluZyBsb2FkZWQgQmVhbgorCUBBdXRvd2lyZWQKKwlwcml2YXRlIExkYXBDb25maWdEYW8gbGRhcENvbmZpZ0Rhb0ltcGw7CisJQEF1dG93aXJlZAorCXByaXZhdGUgU2Vzc2lvbmRhdGFEYW8gc2Vzc2lvbmRhdGFEYW87CisgICAgQEF1dG93aXJlZAorICAgIHByaXZhdGUgVXNlck1hbmFnZXIgdXNlck1hbmFnZXI7CisJQEF1dG93aXJlZAorCXByaXZhdGUgQXV0aExldmVsVXRpbCBhdXRoTGV2ZWxVdGlsOworCQorCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoTGRhcENvbmZpZ1NlcnZpY2UuY2xhc3MsIE9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKwkKKwlwdWJsaWMgTG9uZyBkZWxldGVMZGFwQ29uZmlnQnlJZChTdHJpbmcgU0lELCBMb25nIGxkYXBDb25maWdJZCkgeworICAgICAgICBMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisgICAgICAgIExvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworICAgICAgICBpZiAoYXV0aExldmVsVXRpbC5jaGVja0FkbWluTGV2ZWwodXNlcl9sZXZlbCkpeworICAgICAgICAJcmV0dXJuIHRoaXMubGRhcENvbmZpZ0Rhb0ltcGwuZGVsZXRlTGRhcENvbmZpZ0J5SWQobGRhcENvbmZpZ0lkKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVsbDsKKwl9CisJCisJcHVibGljIExkYXBDb25maWcgZ2V0TGRhcENvbmZpZ0J5SWQoU3RyaW5nIFNJRCwgTG9uZyBsZGFwQ29uZmlnSWQpIHsKKyAgICAgICAgTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworICAgICAgICBMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKyAgICAgICAgaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tBZG1pbkxldmVsKHVzZXJfbGV2ZWwpKXsKKyAgICAgICAgCXJldHVybiB0aGlzLmxkYXBDb25maWdEYW9JbXBsLmdldChsZGFwQ29uZmlnSWQpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBudWxsOworCX0KKwkKKwlwdWJsaWMgTGlzdDxMZGFwQ29uZmlnPiBnZXRBY3RpdmVMZGFwQ29uZmlncygpIHsKKwkJdHJ5IHsKKwkJCUxpc3Q8TGRhcENvbmZpZz4gbGRhcENvbmZpZ3MgPSB0aGlzLmxkYXBDb25maWdEYW9JbXBsLmdldEFjdGl2ZUxkYXBDb25maWdzKCk7CisJCQkKKwkJCS8vQWRkIGxvY2FsaG9zdCBEb21haW4KKwkJCUxkYXBDb25maWcgbGRhcENvbmZpZyA9IG5ldyBMZGFwQ29uZmlnKCk7CisJCQkKKwkJCWxkYXBDb25maWcuc2V0TmFtZSgibG9jYWwgREIgW2ludGVybmFsXSIpOworCQkJbGRhcENvbmZpZy5zZXRMZGFwQ29uZmlnSWQoLTEpOworCQkJCisJCQlMaXN0PExkYXBDb25maWc+IHJldHVybmxkYXBDb25maWdzID0gbmV3IExpbmtlZExpc3Q8TGRhcENvbmZpZz4oKTsKKwkJCXJldHVybmxkYXBDb25maWdzLmFkZChsZGFwQ29uZmlnKTsKKwkJCQorCQkJZm9yIChMZGFwQ29uZmlnIGxkYXBDb25maWdTdG9yZWQgOiBsZGFwQ29uZmlncykgeworCQkJCXJldHVybmxkYXBDb25maWdzLmFkZChsZGFwQ29uZmlnU3RvcmVkKTsKKwkJCX0KKwkJCQorCSAgICAgICAgcmV0dXJuIHJldHVybmxkYXBDb25maWdzOworCSAgICAgICAgCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2dldEFjdGl2ZUxkYXBDb25maWdzXSIsZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisJCisJLyoqCisJICogCisJICogQHBhcmFtIFNJRAorCSAqIEBwYXJhbSBzdGFydAorCSAqIEBwYXJhbSBtYXgKKwkgKiBAcGFyYW0gb3JkZXJieQorCSAqIEBwYXJhbSBhc2MKKwkgKiBAcmV0dXJuIC0gdGhlIGxpc3Qgb2YgbGdhcCBjb25maWcgb2JqZWN0IGJlaW5nIHNlYXJjaGVkCisJICovCisJcHVibGljIFNlYXJjaFJlc3VsdDxMZGFwQ29uZmlnPiBnZXRMZGFwQ29uZmlncyhTdHJpbmcgU0lELCBpbnQgc3RhcnQsIGludCBtYXgsIFN0cmluZyBvcmRlcmJ5LCBib29sZWFuIGFzYyl7CisgICAgICAgIExvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKyAgICAgICAgTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisgICAgICAgIGlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrQWRtaW5MZXZlbCh1c2VyX2xldmVsKSl7CisgICAgICAgIAkKKyAgICAgICAgCVNlYXJjaFJlc3VsdDxMZGFwQ29uZmlnPiBzZWFyY2hSZXN1bHQgPSBuZXcgU2VhcmNoUmVzdWx0PExkYXBDb25maWc+KCk7CisgICAgICAgIAlzZWFyY2hSZXN1bHQuc2V0T2JqZWN0TmFtZShMZGFwQ29uZmlnLmNsYXNzLmdldE5hbWUoKSk7CisgICAgICAgIAlzZWFyY2hSZXN1bHQuc2V0UmVzdWx0KHRoaXMubGRhcENvbmZpZ0Rhb0ltcGwuZ2V0TGRhcENvbmZpZ3Moc3RhcnQsIG1heCwgb3JkZXJieSwgYXNjKSk7CisgICAgICAgIAlzZWFyY2hSZXN1bHQuc2V0UmVjb3Jkcyh0aGlzLmxkYXBDb25maWdEYW9JbXBsLnNlbGVjdE1heEZyb21MZGFwQ29uZmlnKCkpOworICAgICAgICAJCisgICAgICAgIAlyZXR1cm4gc2VhcmNoUmVzdWx0OworICAgICAgICB9CisJCXJldHVybiBudWxsOworCX0KKwkKKwkvKioKKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogQHBhcmFtIHZhbHVlcworCSAqIEByZXR1cm4gLSBpZCBvZiBhZGRlZCBvciB1cGRhdGVkIGNvbmZpZyBpbiBjYXNlIG9mIHN1Y2Nlc3MsIGVycm9yIGNvZGUgb3RoZXJ3aXNlCisJICovCisJcHVibGljIExvbmcgc2F2ZU9yVXBkYXRlTGRhcENvbmZpZyhTdHJpbmcgU0lELCBMaW5rZWRIYXNoTWFwPE9iamVjdCxPYmplY3Q+IHZhbHVlcykgIHsKKwkJdHJ5IHsKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tBZG1pbkxldmVsKHVzZXJfbGV2ZWwpKXsKKwkJCQorCQkJCWxvbmcgbGRhcENvbmZpZ0lkID0gTG9uZy52YWx1ZU9mKAorCQkJCQkJdmFsdWVzLmdldCgibGRhcENvbmZpZ0lkIikudG9TdHJpbmcoKSkubG9uZ1ZhbHVlKCk7CisJCQkJQm9vbGVhbiBhZGREb21haW5Ub1VzZXJOYW1lID0gQm9vbGVhbi52YWx1ZU9mKHZhbHVlcy5nZXQoImFkZERvbWFpblRvVXNlck5hbWUiKS50b1N0cmluZygpKS5ib29sZWFuVmFsdWUoKTsKKwkJCQlTdHJpbmcgY29uZmlnRmlsZU5hbWUgPSB2YWx1ZXMuZ2V0KCJjb25maWdGaWxlTmFtZSIpLnRvU3RyaW5nKCk7IAorCQkJCVN0cmluZyBuYW1lID0gdmFsdWVzLmdldCgidE5hbWUiKS50b1N0cmluZygpOyAKKwkJCQlTdHJpbmcgZG9tYWluID0gdmFsdWVzLmdldCgiZG9tYWluIikudG9TdHJpbmcoKTsgCisJCQkJQm9vbGVhbiBpc0FjdGl2ZSA9IEJvb2xlYW4udmFsdWVPZih2YWx1ZXMuZ2V0KCJpc0FjdGl2ZSIpLnRvU3RyaW5nKCkpLmJvb2xlYW5WYWx1ZSgpOworCQkJCisJCQkJaWYgKGxkYXBDb25maWdJZDw9MCkgeworCQkJCQlyZXR1cm4gdGhpcy5sZGFwQ29uZmlnRGFvSW1wbC5hZGRMZGFwQ29uZmlnKG5hbWUsIGFkZERvbWFpblRvVXNlck5hbWUsIGNvbmZpZ0ZpbGVOYW1lLCAKKwkJCQkJCQkJZG9tYWluLCB1c2Vyc19pZCwgaXNBY3RpdmUpOworCQkJCX0gZWxzZSB7CisJCQkJCXJldHVybiB0aGlzLmxkYXBDb25maWdEYW9JbXBsLnVwZGF0ZUxkYXBDb25maWcobGRhcENvbmZpZ0lkLCBuYW1lLCBhZGREb21haW5Ub1VzZXJOYW1lLCAKKwkJCQkJCQkJY29uZmlnRmlsZU5hbWUsIGRvbWFpbiwgdXNlcnNfaWQsIGlzQWN0aXZlKTsKKwkJCQl9CisJCQkJCisJCQl9CisJCQlyZXR1cm4gbmV3IExvbmcoLTI2KTsJCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCQlsb2cuZXJyb3IoIltzYXZlT3JVcGRhdGVMZGFwQ29uZmlnXSIsZSk7CisJCX0KKwkJcmV0dXJuIG5ldyBMb25nKC0xKTsJCisJfQkKKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3JlbW90ZS9NYWluU2VydmljZS5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3JlbW90ZS9NYWluU2VydmljZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxOWQ1MTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcmVtb3RlL01haW5TZXJ2aWNlLmphdmEKQEAgLTAsMCArMSwxMDQ2IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnJlbW90ZTsKKworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5MaW5rZWRIYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5MaW5rZWRMaXN0OworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5NYXA7CitpbXBvcnQgamF2YS51dGlsLlNldDsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLkF1dGhMZXZlbFV0aWw7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5OYXZpQnVpbGRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLlNlc3Npb25kYXRhRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuZGFvLkNvbmZpZ3VyYXRpb25EYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5kYW8uTGRhcENvbmZpZ0RhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLmRhby5PbVRpbWVab25lRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuZGFvLlNPQVBMb2dpbkRhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNvbmZlcmVuY2UuRmVlZGJhY2tNYW5hZ2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY29uZmVyZW5jZS5JbnZpdGF0aW9uTWFuYWdlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNvbmZlcmVuY2UuUm9vbU1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5sb2dzLkNvbmZlcmVuY2VMb2dEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLlVzZXJNYW5hZ2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEudXNlci5kYW8uU3RhdGVEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLmRhby5Vc2Vyc0RhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5sZGFwLkxkYXBMb2dpbk1hbmFnZW1lbnQ7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuQ29uZmlndXJhdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5MZGFwQ29uZmlnOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLk5hdmlnbG9iYWw7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuT21UaW1lWm9uZTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5SZW1vdGVTZXNzaW9uT2JqZWN0OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLlNPQVBMb2dpbjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5TZXNzaW9uZGF0YTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tLkNsaWVudDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlN0YXRlOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuVXNlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlVzZXJkYXRhOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnJlbW90ZS5yZWQ1LlNjb3BlQXBwbGljYXRpb25BZGFwdGVyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnJlbW90ZS51dGlsLlNlc3Npb25WYXJpYWJsZXNVdGlsOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnJzcy5Mb2FkQXRvbVJzc0ZlZWQ7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2Vzc2lvbi5JU2Vzc2lvbk1hbmFnZXI7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcucmVkNS5zZXJ2ZXIuYXBpLklDb25uZWN0aW9uOworaW1wb3J0IG9yZy5yZWQ1LnNlcnZlci5hcGkuUmVkNTsKK2ltcG9ydCBvcmcucmVkNS5zZXJ2ZXIuYXBpLnNlcnZpY2UuSVBlbmRpbmdTZXJ2aWNlQ2FsbDsKK2ltcG9ydCBvcmcucmVkNS5zZXJ2ZXIuYXBpLnNlcnZpY2UuSVBlbmRpbmdTZXJ2aWNlQ2FsbGJhY2s7CitpbXBvcnQgb3JnLnJlZDUuc2VydmVyLmFwaS5zZXJ2aWNlLklTZXJ2aWNlQ2FwYWJsZUNvbm5lY3Rpb247CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5BdXRvd2lyZWQ7CisKK2ltcG9ydCBjb20udGhvdWdodHdvcmtzLnhzdHJlYW0uWFN0cmVhbTsKK2ltcG9ydCBjb20udGhvdWdodHdvcmtzLnhzdHJlYW0uaW8ueG1sLkRvbURyaXZlcjsKKworLyoqCisgKiAKKyAqIEBhdXRob3Igc3dhZ25lcgorICogCisgKi8KK3B1YmxpYyBjbGFzcyBNYWluU2VydmljZSBpbXBsZW1lbnRzIElQZW5kaW5nU2VydmljZUNhbGxiYWNrIHsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoTWFpblNlcnZpY2UuY2xhc3MsIE9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKworCUBBdXRvd2lyZWQKKwlwcml2YXRlIElTZXNzaW9uTWFuYWdlciBzZXNzaW9uTWFuYWdlcjsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBTY29wZUFwcGxpY2F0aW9uQWRhcHRlciBzY29wZUFwcGxpY2F0aW9uQWRhcHRlcjsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBTZXNzaW9uZGF0YURhbyBzZXNzaW9uZGF0YURhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBDb25maWd1cmF0aW9uRGFvIGNvbmZpZ3VyYXRpb25EYW87CisJQEF1dG93aXJlZAorCXByaXZhdGUgVXNlck1hbmFnZXIgdXNlck1hbmFnZXI7CisJQEF1dG93aXJlZAorCXByaXZhdGUgU3RhdGVEYW8gc3RhdGVtYW5hZ2VtZW50OworCUBBdXRvd2lyZWQKKwlwcml2YXRlIE9tVGltZVpvbmVEYW8gb21UaW1lWm9uZURhb0ltcGw7CisJQEF1dG93aXJlZAorCXByaXZhdGUgTmF2aUJ1aWxkZXIgbmF2aW1hbmFnZW1lbnQ7CisJQEF1dG93aXJlZAorCXByaXZhdGUgUm9vbU1hbmFnZXIgcm9vbU1hbmFnZXI7CisJQEF1dG93aXJlZAorCXByaXZhdGUgQ29uZmVyZW5jZUxvZ0RhbyBjb25mZXJlbmNlTG9nRGFvOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFVzZXJzRGFvIHVzZXJzRGFvOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIExkYXBDb25maWdEYW8gbGRhcENvbmZpZ0RhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBTT0FQTG9naW5EYW8gc29hcExvZ2luRGFvOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEludml0YXRpb25NYW5hZ2VyIGludml0YXRpb25NYW5hZ2VyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEZlZWRiYWNrTWFuYWdlciBmZWVkYmFja01hbmFnZXI7CisJQEF1dG93aXJlZAorCXByaXZhdGUgQXV0aExldmVsVXRpbCBhdXRoTGV2ZWxVdGlsOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIExvYWRBdG9tUnNzRmVlZCBsb2FkQXRvbVJzc0ZlZWQ7CisJQEF1dG93aXJlZAorCXByaXZhdGUgTGRhcExvZ2luTWFuYWdlbWVudCBsZGFwTG9naW5NYW5hZ2VtZW50OworCisJLy8gRXh0ZXJuYWwgVXNlciBUeXBlcworCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEVYVEVSTkFMX1VTRVJfVFlQRV9MREFQID0gIkxEQVAiOworCisJLyoqCisJICogZ2V0IE5hdmlnYXRpb24KKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogQHBhcmFtIGxhbmd1YWdlX2lkCisJICogQHJldHVybiAtIGxpc3Qgb2YgZ2xvYmFsIG5hdmlnYXRpb24gbWVudXMKKwkgKi8KKwlwdWJsaWMgTGlzdDxOYXZpZ2xvYmFsPiBnZXROYXZpKFN0cmluZyBTSUQsIGxvbmcgbGFuZ3VhZ2VfaWQsIExvbmcgb3JnYW5pc2F0aW9uX2lkKSB7CisJCXRyeSB7CisJCQlMb25nIHVzZXJfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCS8vIGxvZy5lcnJvcigiZ2V0TmF2aSAxOiAiK3VzZXJzX2lkKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SWRBbmRPcmcodXNlcl9pZCwKKwkJCQkJb3JnYW5pc2F0aW9uX2lkKTsKKwkJCS8vIGxvZy5lcnJvcigiZ2V0TmF2aSAyOiAiK3VzZXJfbGV2ZWwpOworCQkJcmV0dXJuIG5hdmltYW5hZ2VtZW50LmdldE1haW5NZW51KHVzZXJfbGV2ZWwsIHVzZXJfaWQsIGxhbmd1YWdlX2lkKTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbZ2V0TmF2aV0gIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvKioKKwkgKiBnZXRzIGEgdXNlciBieSBpdHMgU0lECisJICogCisJICogQHBhcmFtIFNJRAorCSAqIEBwYXJhbSBVU0VSX0lECisJICogQHJldHVybiAtIHVzZXIgd2l0aCBTSUQgZ2l2ZW4KKwkgKi8KKwlwdWJsaWMgVXNlciBnZXRVc2VyKFN0cmluZyBTSUQsIGludCBVU0VSX0lEKSB7CisJCVVzZXIgdXNlcnMgPSBuZXcgVXNlcigpOworCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCWxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQlpZiAodXNlcl9sZXZlbCA+IDIpIHsKKwkJCXVzZXJzID0gdXNlcnNEYW8uZ2V0KG5ldyBMb25nKFVTRVJfSUQpKTsKKwkJfSBlbHNlIHsKKwkJCXVzZXJzLnNldEZpcnN0bmFtZSgiTm8gcmlnaHRzIHRvIGRvIHRoaXMiKTsKKwkJfQorCQlyZXR1cm4gdXNlcnM7CisJfQorCisJcHVibGljIENsaWVudCBnZXRDdXJyZW50Um9vbUNsaWVudChTdHJpbmcgU0lEKSB7CisJCXRyeSB7CisJCQlJQ29ubmVjdGlvbiBjdXJyZW50ID0gUmVkNS5nZXRDb25uZWN0aW9uTG9jYWwoKTsKKwkJCVN0cmluZyBzdHJlYW1pZCA9IGN1cnJlbnQuZ2V0Q2xpZW50KCkuZ2V0SWQoKTsKKworCQkJbG9nLmRlYnVnKCJnZXRDdXJyZW50Um9vbUNsaWVudCAtMS0gIiArIFNJRCk7CisJCQlsb2cuZGVidWcoImdldEN1cnJlbnRSb29tQ2xpZW50IC0yLSAiICsgc3RyZWFtaWQpOworCisJCQlDbGllbnQgY3VycmVudENsaWVudCA9IHRoaXMuc2Vzc2lvbk1hbmFnZXIKKwkJCQkJLmdldENsaWVudEJ5U3RyZWFtSWQoc3RyZWFtaWQsIG51bGwpOworCQkJcmV0dXJuIGN1cnJlbnRDbGllbnQ7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2dldEN1cnJlbnRSb29tQ2xpZW50XSIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLyoqCisJICogVGhpcyBNZXRob2QgaXMganVzdCBmb3IgdGVzdGluZyB5b3UgY2FuIGZpbmQgdGhlIGNvcnJlc3BvbmRpbmcgQ2xpZW50CisJICogRnVuY3Rpb24gaW4geG1sY3JtL2F1dGgvY2hlY2tMb2dpbkRhdGEubHp4CisJICogCisJICogQHBhcmFtIG15T2JqZWN0MgorCSAqIEByZXR1cm4gLSB0aGUgc2l6ZSBvZiB0aGUgbWFwIHBhc3NlZCwgb3IgLTEgaW4gY2FzZSBvZiBlcnJvcgorCSAqLworCXB1YmxpYyBpbnQgdGVzdE9iamVjdChPYmplY3QgbXlPYmplY3QyKSB7CisJCXRyeSB7CisJCQlAU3VwcHJlc3NXYXJuaW5ncygicmF3dHlwZXMiKQorCQkJTGlua2VkSGFzaE1hcCBteU9iamVjdCA9IChMaW5rZWRIYXNoTWFwKSBteU9iamVjdDI7CisJCQlsb2cuZGVidWcoInRlc3RPYmplY3QgIiArIG15T2JqZWN0LnNpemUoKSk7CisJCQlsb2cuZGVidWcoInRlc3RPYmplY3QgIiArIG15T2JqZWN0LmdldCgxKSk7CisJCQlsb2cuZGVidWcoInRlc3RPYmplY3QgIiArIG15T2JqZWN0LmdldCgic3RyaW5nT2JqIikpOworCQkJcmV0dXJuIG15T2JqZWN0LnNpemUoKTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCWxvZy5lcnJvcigiZXg6ICIsIGUpOworCQl9CisJCXJldHVybiAtMTsKKwl9CisKKwkvKioKKwkgKiBsb2FkIHRoaXMgc2Vzc2lvbiBpZCBiZWZvcmUgZG9pbmcgYW55dGhpbmcgZWxzZQorCSAqIAorCSAqIEByZXR1cm4gYSB1bmlxdWUgc2Vzc2lvbiBpZGVudGlmaWVyCisJICovCisJcHVibGljIFNlc3Npb25kYXRhIGdldHNlc3Npb25kYXRhKCkgeworCQlyZXR1cm4gc2Vzc2lvbmRhdGFEYW8uc3RhcnRzZXNzaW9uKCk7CisJfQorCisJcHVibGljIExvbmcgc2V0Q3VycmVudFVzZXJPcmdhbml6YXRpb24oU3RyaW5nIFNJRCwgTG9uZyBvcmdhbml6YXRpb25faWQpIHsKKwkJdHJ5IHsKKwkJCXNlc3Npb25kYXRhRGFvLnVwZGF0ZVVzZXJPcmcoU0lELCBvcmdhbml6YXRpb25faWQpOworCQkJcmV0dXJuIDFMOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltzZXRDdXJyZW50VXNlck9yZ2FuaXphdGlvbl0iLCBlcnIpOworCQl9CisJCXJldHVybiAtMUw7CisJfQorCisJcHVibGljIFVzZXIgbG9naW5CeVJlbWVtYmVyKFN0cmluZyBTSUQsIFN0cmluZyByZW1vdGVIYXNoSWQpIHsKKwkJdHJ5IHsKKworCQkJQ2xpZW50IGN1cnJlbnRDbGllbnQ7CisJCQlJQ29ubmVjdGlvbiBjdXJyZW50ID0gUmVkNS5nZXRDb25uZWN0aW9uTG9jYWwoKTsKKworCQkJVXNlciBvID0gbnVsbDsKKworCQkJY3VycmVudENsaWVudCA9IHNlc3Npb25NYW5hZ2VyLmdldENsaWVudEJ5U3RyZWFtSWQoY3VycmVudAorCQkJCQkuZ2V0Q2xpZW50KCkuZ2V0SWQoKSwgbnVsbCk7CisKKwkJCW8gPSB1c2VyTWFuYWdlci5sb2dpblVzZXJCeVJlbW90ZUhhc2goU0lELCByZW1vdGVIYXNoSWQpOworCisJCQlpZiAobyA9PSBudWxsKQorCQkJCXJldHVybiBudWxsOworCisJCQlpZiAoby5nZXRPcmdhbmlzYXRpb25fdXNlcnMoKS5pc0VtcHR5KCkpIHsKKwkJCQl0aHJvdyBuZXcgRXhjZXB0aW9uKCJVc2VycyBoYXMgbm8gb3JnYW5pemF0aW9uIGFzc2lnbmVkIik7CisJCQl9CisKKwkJCW8uc2V0U2Vzc2lvbkRhdGEoc2Vzc2lvbmRhdGFEYW8uZ2V0U2Vzc2lvbkJ5SGFzaChyZW1vdGVIYXNoSWQpKTsKKwkJCWN1cnJlbnRDbGllbnQuc2V0VXNlcl9pZChvLmdldFVzZXJfaWQoKSk7CisJCQlTZXNzaW9uVmFyaWFibGVzVXRpbC5zZXRVc2VySWQoY3VycmVudC5nZXRDbGllbnQoKSwgby5nZXRVc2VyX2lkKCkpOworCQkJCisJCQlpZiAoY3VycmVudENsaWVudC5nZXRVc2VyX2lkKCkgIT0gbnVsbAorCQkJCQkmJiBjdXJyZW50Q2xpZW50LmdldFVzZXJfaWQoKSA+IDApIHsKKworCQkJCWN1cnJlbnRDbGllbnQuc2V0Rmlyc3RuYW1lKG8uZ2V0Rmlyc3RuYW1lKCkpOworCQkJCWN1cnJlbnRDbGllbnQuc2V0TGFzdG5hbWUoby5nZXRMYXN0bmFtZSgpKTsKKwkJCQkKKwkJCQlzY29wZUFwcGxpY2F0aW9uQWRhcHRlci5zeW5jTWVzc2FnZVRvQ3VycmVudFNjb3BlKCJyb29tQ29ubmVjdCIsIGN1cnJlbnRDbGllbnQsIGZhbHNlKTsKKworCQkJfQorCisJCQlyZXR1cm4gbzsKKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltsb2dpbkJ5UmVtZW1iZXJdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgT2JqZWN0IHdlYkxvZ2luVXNlcihTdHJpbmcgU0lELCBTdHJpbmcgdXNlcm5hbWVPckVtYWlsLAorCQkJU3RyaW5nIFVzZXJwYXNzLCBCb29sZWFuIHN0b3JlUGVybWFuZW50LCBMb25nIGxhbmd1YWdlX2lkLAorCQkJTG9uZyBsZGFwQ29uZmlnSWQpIHsKKworCQlPYmplY3QgcmV0dXJuVmFsdWUgPSB0aGlzLmxvZ2luVXNlcihTSUQsIHVzZXJuYW1lT3JFbWFpbCwgVXNlcnBhc3MsCisJCQkJc3RvcmVQZXJtYW5lbnQsIGxhbmd1YWdlX2lkLCBsZGFwQ29uZmlnSWQpOworCisJCWlmIChyZXR1cm5WYWx1ZSBpbnN0YW5jZW9mIExvbmcpIHsKKwkJCXJldHVybiByZXR1cm5WYWx1ZTsKKwkJfSBlbHNlIGlmIChyZXR1cm5WYWx1ZSBpbnN0YW5jZW9mIFVzZXIpIHsKKwkJCVVzZXIgdXMgPSAoVXNlcikgcmV0dXJuVmFsdWU7CisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1VzZXJMZXZlbCgKKwkJCQkJdXMuZ2V0TGV2ZWxfaWQoKSkpIHsKKwkJCQlyZXR1cm4gdXM7CisJCQl9IGVsc2UgeworCQkJCXJldHVybiAtNTJMOworCQkJfQorCQl9CisKKwkJcmV0dXJuIHJldHVyblZhbHVlOworCisJfQorCisJLyoqCisJICogYXV0aCBmdW5jdGlvbiwgdXNlIHRoZSBTSUQgeW91IGdldCBieSBnZXRzZXNzaW9uZGF0YQorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiBAcGFyYW0gdXNlcm5hbWVPckVtYWlsCisJICogQHBhcmFtIFVzZXJwYXNzCisJICogQHBhcmFtIHN0b3JlUGVybWFuZW50CisJICogQHBhcmFtIGxhbmd1YWdlX2lkCisJICogQHBhcmFtIGxkYXBDb25maWdJZAorCSAqIEByZXR1cm4gYSB2YWxpZCB1c2VyIGFjY291bnQgb3IgYW4gZW1wdHkgdXNlciB3aXRoIGFuIGVycm9yIG1lc3NhZ2UgYW5kCisJICogICAgICAgICBsZXZlbCAtMQorCSAqLworCXB1YmxpYyBPYmplY3QgbG9naW5Vc2VyKFN0cmluZyBTSUQsIFN0cmluZyB1c2VybmFtZU9yRW1haWwsCisJCQlTdHJpbmcgVXNlcnBhc3MsIEJvb2xlYW4gc3RvcmVQZXJtYW5lbnQsIExvbmcgbGFuZ3VhZ2VfaWQsCisJCQlMb25nIGxkYXBDb25maWdJZCkgeworCisJCWJvb2xlYW4gd2l0aExkYXAgPSBmYWxzZTsKKworCQlpZiAobGRhcENvbmZpZ0lkID4gMCkgeworCQkJd2l0aExkYXAgPSB0cnVlOworCQl9CisKKwkJdHJ5IHsKKwkJCWxvZy53YXJuKCJsb2dpblVzZXI6ICIgKyBTSUQgKyAiICIgKyB1c2VybmFtZU9yRW1haWwpOworCisJCQlDbGllbnQgY3VycmVudENsaWVudDsKKwkJCUlDb25uZWN0aW9uIGN1cnJlbnQgPSBSZWQ1LmdldENvbm5lY3Rpb25Mb2NhbCgpOworCisJCQlpZiAoY3VycmVudCA9PSBudWxsKQorCQkJCXJldHVybiBudWxsOworCQkJCisJCQlPYmplY3QgbzsKKworCQkJaWYgKHdpdGhMZGFwKSB7CisJCQkJbG9nLmRlYnVnKCJMZGFwIExvZ2luIik7CisKKwkJCQljdXJyZW50Q2xpZW50ID0gc2Vzc2lvbk1hbmFnZXIKKwkJCQkJCS5nZXRDbGllbnRCeVN0cmVhbUlkKGN1cnJlbnQuZ2V0Q2xpZW50KCkuZ2V0SWQoKSwgbnVsbCk7CisKKwkJCQkvLyBMREFQIExvZ2dlZGluIFVzZXJzIGNhbm5vdCB1c2UgdGhlIHBlcm1hbmVudCBMb2dpbiBGbGFnCisKKwkJCQlMZGFwQ29uZmlnIGxkYXBDb25maWcgPSBsZGFwQ29uZmlnRGFvLmdldChsZGFwQ29uZmlnSWQpOworCisJCQkJU3RyaW5nIGxkYXBMb2dpbiA9IHVzZXJuYW1lT3JFbWFpbDsKKwkJCQlpZiAobGRhcENvbmZpZy5nZXRBZGREb21haW5Ub1VzZXJOYW1lKCkgIT0gbnVsbAorCQkJCQkJJiYgbGRhcENvbmZpZy5nZXRBZGREb21haW5Ub1VzZXJOYW1lKCkpIHsKKwkJCQkJbGRhcExvZ2luID0gdXNlcm5hbWVPckVtYWlsICsgIkAiICsgbGRhcENvbmZpZy5nZXREb21haW4oKTsKKwkJCQl9CisKKwkJCQlvID0gbGRhcExvZ2luTWFuYWdlbWVudC5kb0xkYXBMb2dpbihsZGFwTG9naW4sCisJCQkJCQlVc2VycGFzcywgY3VycmVudENsaWVudCwgY3VycmVudC5nZXRDbGllbnQoKSwgU0lELAorCQkJCQkJbGRhcENvbmZpZy5nZXRDb25maWdGaWxlTmFtZSgpKTsKKwkJCX0gZWxzZSB7CisKKwkJCQljdXJyZW50Q2xpZW50ID0gc2Vzc2lvbk1hbmFnZXIuZ2V0Q2xpZW50QnlTdHJlYW1JZChjdXJyZW50LmdldENsaWVudCgpLmdldElkKCksIG51bGwpOworCisJCQkJbyA9IHVzZXJNYW5hZ2VyLmxvZ2luVXNlcihTSUQsIHVzZXJuYW1lT3JFbWFpbCwgVXNlcnBhc3MsCisJCQkJCQljdXJyZW50Q2xpZW50LCBjdXJyZW50LmdldENsaWVudCgpLCBzdG9yZVBlcm1hbmVudCk7CisJCQl9CisKKwkJCWlmIChvID09IG51bGwpCisJCQkJcmV0dXJuIG51bGw7CisKKwkJCWlmICghby5nZXRDbGFzcygpLmlzQXNzaWduYWJsZUZyb20oVXNlci5jbGFzcykpCisJCQkJcmV0dXJuIG87CisKKwkJCWlmIChjdXJyZW50Q2xpZW50LmdldFVzZXJfaWQoKSAhPSBudWxsCisJCQkJCSYmIGN1cnJlbnRDbGllbnQuZ2V0VXNlcl9pZCgpID4gMCkgeworCisJCQkJVXNlciB1ID0gKFVzZXIpIG87CisJCQkJY3VycmVudENsaWVudC5zZXRGaXJzdG5hbWUodS5nZXRGaXJzdG5hbWUoKSk7CisJCQkJY3VycmVudENsaWVudC5zZXRMYXN0bmFtZSh1LmdldExhc3RuYW1lKCkpOworCisJCQkJQ29sbGVjdGlvbjxTZXQ8SUNvbm5lY3Rpb24+PiBjb25Db2xsZWN0aW9uID0gY3VycmVudC5nZXRTY29wZSgpCisJCQkJCQkuZ2V0Q29ubmVjdGlvbnMoKTsKKwkJCQlmb3IgKFNldDxJQ29ubmVjdGlvbj4gY29uc2V0IDogY29uQ29sbGVjdGlvbikgeworCQkJCQlmb3IgKElDb25uZWN0aW9uIGNvbnMgOiBjb25zZXQpIHsKKwkJCQkJCWlmIChjb25zICE9IG51bGwpIHsKKwkJCQkJCQlDbGllbnQgcmNsID0gdGhpcy5zZXNzaW9uTWFuYWdlcgorCQkJCQkJCQkJLmdldENsaWVudEJ5U3RyZWFtSWQoY29ucy5nZXRDbGllbnQoKQorCQkJCQkJCQkJCQkuZ2V0SWQoKSwgbnVsbCk7CisJCQkJCQkJaWYgKHJjbCAhPSBudWxsICYmIHJjbC5nZXRJc1NjcmVlbkNsaWVudCgpICE9IG51bGwKKwkJCQkJCQkJCSYmIHJjbC5nZXRJc1NjcmVlbkNsaWVudCgpKSB7CisJCQkJCQkJCS8vIGNvbnRpbnVlOworCQkJCQkJCX0gZWxzZSB7CisJCQkJCQkJCWlmIChjb25zIGluc3RhbmNlb2YgSVNlcnZpY2VDYXBhYmxlQ29ubmVjdGlvbikgeworCQkJCQkJCQkJaWYgKCFjb25zLmVxdWFscyhjdXJyZW50KSkgeworCQkJCQkJCQkJCS8vIGxvZy5lcnJvcigic2VuZGluZyByb29tRGlzY29ubmVjdCB0byAiCisJCQkJCQkJCQkJLy8gKyBjb25zKTsKKwkJCQkJCQkJCQkvLyBSb29tQ2xpZW50IHJjbCA9CisJCQkJCQkJCQkJLy8gdGhpcy5zZXNzaW9uTWFuYWdlci5nZXRDbGllbnRCeVN0cmVhbUlkKGNvbnMuZ2V0Q2xpZW50KCkuZ2V0SWQoKSk7CisJCQkJCQkJCQkJLy8gU2VuZCB0byBhbGwgY29ubmVjdGVkIHVzZXJzCisJCQkJCQkJCQkJKChJU2VydmljZUNhcGFibGVDb25uZWN0aW9uKSBjb25zKQorCQkJCQkJCQkJCQkJLmludm9rZSgicm9vbUNvbm5lY3QiLAorCQkJCQkJCQkJCQkJCQluZXcgT2JqZWN0W10geyBjdXJyZW50Q2xpZW50IH0sCisJCQkJCQkJCQkJCQkJCXRoaXMpOworCQkJCQkJCQkJCS8vIGxvZy5lcnJvcigic2VuZGluZyByb29tRGlzY29ubmVjdCB0byAiCisJCQkJCQkJCQkJLy8gKyBjb25zKTsKKwkJCQkJCQkJCX0KKwkJCQkJCQkJfQorCQkJCQkJCX0KKwkJCQkJCX0KKwkJCQkJfQorCQkJCX0KKwkJCX0KKworCQkJcmV0dXJuIG87CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJsb2dpblVzZXIgOiAiLCBlcnIpOworCQl9CisKKwkJcmV0dXJuIG51bGw7CisKKwkJLyoKKwkJICogdHJ5IHsgbG9nLmRlYnVnKCJsb2dpblVzZXIgMTExOiAiK1NJRCsiICIrVXNlcm5hbWUpOyBJQ29ubmVjdGlvbgorCQkgKiBjdXJyZW50ID0gUmVkNS5nZXRDb25uZWN0aW9uTG9jYWwoKTsgUm9vbUNsaWVudCBjdXJyZW50Q2xpZW50ID0KKwkJICogQXBwbGljYXRpb24uZ2V0Q2xpZW50TGlzdCgpLmdldChjdXJyZW50LmdldENsaWVudCgpLmdldElkKCkpOyBPYmplY3QKKwkJICogb2JqID0gdXNlck1hbmFnZW1lbnQubG9naW5Vc2VyKFNJRCxVc2VybmFtZSxVc2VycGFzcywgY3VycmVudENsaWVudCk7CisJCSAqIAorCQkgKiBpZiAoY3VycmVudENsaWVudC5nZXRVc2VyX2lkKCkhPW51bGwgJiYgY3VycmVudENsaWVudC5nZXRVc2VyX2lkKCk+MCkKKwkJICogeyBVc2VycyB1cyA9IChVc2Vycykgb2JqOworCQkgKiBjdXJyZW50Q2xpZW50LnNldEZpcnN0bmFtZSh1cy5nZXRGaXJzdG5hbWUoKSk7CisJCSAqIGN1cnJlbnRDbGllbnQuc2V0TGFzdG5hbWUodXMuZ2V0TGFzdG5hbWUoKSk7IEl0ZXJhdG9yPElDb25uZWN0aW9uPiBpdAorCQkgKiA9IGN1cnJlbnQuZ2V0U2NvcGUoKS5nZXRDb25uZWN0aW9ucygpOyB3aGlsZSAoaXQuaGFzTmV4dCgpKSB7CisJCSAqIC8vbG9nLmVycm9yKCJoYXNOZXh0ID09IHRydWUiKTsgSUNvbm5lY3Rpb24gY29ucyA9IGl0Lm5leHQoKTsKKwkJICogLy9sb2cuZXJyb3IoImNvbnMgSG9zdDogIitjb25zKTsgaWYgKGNvbnMgaW5zdGFuY2VvZgorCQkgKiBJU2VydmljZUNhcGFibGVDb25uZWN0aW9uKSB7IGlmICghY29ucy5lcXVhbHMoY3VycmVudCkpeworCQkgKiAvL2xvZy5lcnJvcigic2VuZGluZyByb29tRGlzY29ubmVjdCB0byAiICsgY29ucyk7IFJvb21DbGllbnQgcmNsID0KKwkJICogQXBwbGljYXRpb24uZ2V0Q2xpZW50TGlzdCgpLmdldChjb25zLmdldENsaWVudCgpLmdldElkKCkpOyAvL1NlbmQgdG8KKwkJICogYWxsIGNvbm5lY3RlZCB1c2VycyAoKElTZXJ2aWNlQ2FwYWJsZUNvbm5lY3Rpb24pCisJCSAqIGNvbnMpLmludm9rZSgicm9vbUNvbm5lY3QiLG5ldyBPYmplY3RbXSB7IGN1cnJlbnRDbGllbnQgfSwgdGhpcyk7CisJCSAqIC8vbG9nLmVycm9yKCJzZW5kaW5nIHJvb21EaXNjb25uZWN0IHRvICIgKyBjb25zKTsgfSB9IH0gfQorCQkgKiAKKwkJICogcmV0dXJuIG9iajsgfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeyBsb2cuZXJyb3IoImxvZ2luVXNlciIsZXJyKTsgfQorCQkgKiByZXR1cm4gbnVsbDsKKwkJICovCisJfQorCisJcHVibGljIE9iamVjdCBzZWN1cmVMb2dpbkJ5UmVtb3RlKFN0cmluZyBTSUQsIFN0cmluZyBzZWN1cmVIYXNoKSB7CisJCXRyeSB7CisKKwkJCWxvZy5kZWJ1ZygiIyMjIyMjIyMjIyMjIyMjIHNlY3VyZUxvZ2luQnlSZW1vdGUgIiArIHNlY3VyZUhhc2gpOworCQkJU3lzdGVtLm91dC5wcmludGxuKCIjIyMjIyMjIyMjIyMjIyMgc2VjdXJlTG9naW5CeVJlbW90ZSAiCisJCQkJCSsgc2VjdXJlSGFzaCk7CisKKwkJCVN0cmluZyBjbGllbnRVUkwgPSBSZWQ1LmdldENvbm5lY3Rpb25Mb2NhbCgpLmdldFJlbW90ZUFkZHJlc3MoKTsKKworCQkJbG9nLmRlYnVnKCJzd2ZVUkwgIiArIGNsaWVudFVSTCk7CisKKwkJCVNPQVBMb2dpbiBzb2FwTG9naW4gPSBzb2FwTG9naW5EYW8uZ2V0U09BUExvZ2luQnlIYXNoKHNlY3VyZUhhc2gpOworCisJCQlpZiAoc29hcExvZ2luLmdldFVzZWQoKSkgeworCisJCQkJaWYgKHNvYXBMb2dpbi5nZXRBbGxvd1NhbWVVUkxNdWx0aXBsZVRpbWVzKCkpIHsKKworCQkJCQlpZiAoIXNvYXBMb2dpbi5nZXRDbGllbnRVUkwoKS5lcXVhbHMoY2xpZW50VVJMKSkgeworCQkJCQkJbG9nLmRlYnVnKCJkb2VzIG5vdCBlcXVhbCAiICsgY2xpZW50VVJMKTsKKwkJCQkJCXJldHVybiAtNDJMOworCQkJCQl9CisKKwkJCQl9IGVsc2UgeworCQkJCQlsb2cuZGVidWcoIkFscmVhZHkgdXNlZCAiICsgc2VjdXJlSGFzaCk7CisJCQkJCXJldHVybiAtNDJMOworCQkJCX0KKwkJCX0KKworCQkJTG9uZyBsb2dpblJldHVybiA9IHRoaXMubG9naW5Vc2VyQnlSZW1vdGUoc29hcExvZ2luCisJCQkJCS5nZXRTZXNzaW9uSGFzaCgpKTsKKworCQkJSUNvbm5lY3Rpb24gY3VycmVudCA9IFJlZDUuZ2V0Q29ubmVjdGlvbkxvY2FsKCk7CisJCQlTdHJpbmcgc3RyZWFtSWQgPSBjdXJyZW50LmdldENsaWVudCgpLmdldElkKCk7CisJCQlDbGllbnQgY3VycmVudENsaWVudCA9IHRoaXMuc2Vzc2lvbk1hbmFnZXIKKwkJCQkJLmdldENsaWVudEJ5U3RyZWFtSWQoc3RyZWFtSWQsIG51bGwpOworCisJCQlpZiAoY3VycmVudENsaWVudC5nZXRVc2VyX2lkKCkgIT0gbnVsbCkgeworCQkJCXNlc3Npb25kYXRhRGFvLnVwZGF0ZVVzZXIoU0lELCBjdXJyZW50Q2xpZW50LmdldFVzZXJfaWQoKSk7CisJCQl9CisKKwkJCWN1cnJlbnRDbGllbnQuc2V0QWxsb3dSZWNvcmRpbmcoc29hcExvZ2luLmdldEFsbG93UmVjb3JkaW5nKCkpOworCQkJdGhpcy5zZXNzaW9uTWFuYWdlci51cGRhdGVDbGllbnRCeVN0cmVhbUlkKHN0cmVhbUlkLAorCQkJCQljdXJyZW50Q2xpZW50LCBmYWxzZSwgbnVsbCk7CisKKwkJCWlmIChsb2dpblJldHVybiA9PSBudWxsKSB7CisKKwkJCQlsb2cuZGVidWcoImxvZ2luUmV0dXJuIElTIE5VTEwgZm9yIFNJRDogIgorCQkJCQkJKyBzb2FwTG9naW4uZ2V0U2Vzc2lvbkhhc2goKSk7CisKKwkJCQlyZXR1cm4gLTFMOworCQkJfSBlbHNlIGlmIChsb2dpblJldHVybiA8IDApIHsKKworCQkJCWxvZy5kZWJ1ZygibG9naW5SZXR1cm4gSVMgPCAwIGZvciBTSUQ6ICIKKwkJCQkJCSsgc29hcExvZ2luLmdldFNlc3Npb25IYXNoKCkpOworCisJCQkJcmV0dXJuIGxvZ2luUmV0dXJuOworCQkJfSBlbHNlIHsKKworCQkJCXNvYXBMb2dpbi5zZXRVc2VkKHRydWUpOworCQkJCXNvYXBMb2dpbi5zZXRVc2VEYXRlKG5ldyBEYXRlKCkpOworCisJCQkJc29hcExvZ2luLnNldENsaWVudFVSTChjbGllbnRVUkwpOworCisJCQkJc29hcExvZ2luRGFvLnVwZGF0ZVNPQVBMb2dpbihzb2FwTG9naW4pOworCisJCQkJLy8gQ3JlYXRlIFJldHVybiBPYmplY3QgYW5kIGhpZGUgdGhlIHZhbGlkYXRlZAorCQkJCS8vIHNlc3Npb25IYXNoIHRoYXQgaXMgc3RvcmVkIHNlcnZlciBzaWRlCisJCQkJLy8gdGhpcyBoYXNoIHNob3VsZCBiZSBuZXZlciB0aHJvd24gYmFjayB0byB0aGUgdXNlcgorCisJCQkJU09BUExvZ2luIHJldHVyblNvYXBMb2dpbiA9IG5ldyBTT0FQTG9naW4oKTsKKworCQkJCXJldHVyblNvYXBMb2dpbi5zZXRSb29tX2lkKHNvYXBMb2dpbi5nZXRSb29tX2lkKCkpOworCQkJCXJldHVyblNvYXBMb2dpbi5zZXRCZWNvbWVtb2RlcmF0b3Ioc29hcExvZ2luCisJCQkJCQkuZ2V0QmVjb21lbW9kZXJhdG9yKCkpOworCQkJCXJldHVyblNvYXBMb2dpbi5zZXRTaG93QXVkaW9WaWRlb1Rlc3Qoc29hcExvZ2luCisJCQkJCQkuZ2V0U2hvd0F1ZGlvVmlkZW9UZXN0KCkpOworCQkJCXJldHVyblNvYXBMb2dpbi5zZXRSb29tUmVjb3JkaW5nSWQoc29hcExvZ2luCisJCQkJCQkuZ2V0Um9vbVJlY29yZGluZ0lkKCkpOworCQkJCXJldHVyblNvYXBMb2dpbi5zZXRTaG93Tmlja05hbWVEaWFsb2coc29hcExvZ2luCisJCQkJCQkuZ2V0U2hvd05pY2tOYW1lRGlhbG9nKCkpOworCQkJCXJldHVyblNvYXBMb2dpbi5zZXRMYW5kaW5nWm9uZShzb2FwTG9naW4uZ2V0TGFuZGluZ1pvbmUoKSk7CisKKwkJCQlyZXR1cm4gcmV0dXJuU29hcExvZ2luOworCisJCQl9CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbc2VjdXJlTG9naW5CeVJlbW90ZV0iLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCS8qKgorCSAqIEZ1bmN0aW9uIGlzIGNhbGxlZCBpZiB0aGUgdXNlciBsb2dncyBpbiB2aWEgYSBzZWN1cmVIYXNoIGFuZCBzZXRzIHRoZQorCSAqIHBhcmFtIHNob3dOaWNrTmFtZURpYWxvZyBpbiB0aGUgT2JqZWN0IFNPQVBMb2dpbiB0byB0cnVlIHRoZSB1c2VyIGdldHMKKwkgKiBkaXNwbGF5ZWQgYW4gYWRkaXRpb25hbCBkaWFsb2cgdG8gZW50ZXIgaGlzIG5pY2tuYW1lCisJICogCisJICogQHBhcmFtIGZpcnN0bmFtZQorCSAqIEBwYXJhbSBsYXN0bmFtZQorCSAqIEBwYXJhbSBlbWFpbAorCSAqIEByZXR1cm4gLSAxIGluIGNhc2Ugb2Ygc3VjY2VzcywgLTEgb3RoZXJ3aXNlCisJICovCisJcHVibGljIExvbmcgc2V0VXNlck5pY2tOYW1lKFN0cmluZyBmaXJzdG5hbWUsIFN0cmluZyBsYXN0bmFtZSwgU3RyaW5nIGVtYWlsKSB7CisJCXRyeSB7CisKKwkJCUlDb25uZWN0aW9uIGN1cnJlbnQgPSBSZWQ1LmdldENvbm5lY3Rpb25Mb2NhbCgpOworCQkJU3RyaW5nIHN0cmVhbUlkID0gY3VycmVudC5nZXRDbGllbnQoKS5nZXRJZCgpOworCQkJQ2xpZW50IGN1cnJlbnRDbGllbnQgPSB0aGlzLnNlc3Npb25NYW5hZ2VyCisJCQkJCS5nZXRDbGllbnRCeVN0cmVhbUlkKHN0cmVhbUlkLCBudWxsKTsKKworCQkJY3VycmVudENsaWVudC5zZXRGaXJzdG5hbWUoZmlyc3RuYW1lKTsKKwkJCWN1cnJlbnRDbGllbnQuc2V0TGFzdG5hbWUobGFzdG5hbWUpOworCQkJY3VycmVudENsaWVudC5zZXRNYWlsKGVtYWlsKTsKKworCQkJLy8gTG9nIHRoZSBVc2VyCisJCQljb25mZXJlbmNlTG9nRGFvLmFkZENvbmZlcmVuY2VMb2coCisJCQkJCSJuaWNrbmFtZUVudGVyIiwgY3VycmVudENsaWVudC5nZXRVc2VyX2lkKCksIHN0cmVhbUlkLAorCQkJCQludWxsLCBjdXJyZW50Q2xpZW50LmdldFVzZXJpcCgpLCBjdXJyZW50Q2xpZW50LmdldFNjb3BlKCksCisJCQkJCWN1cnJlbnRDbGllbnQuZ2V0RXh0ZXJuYWxVc2VySWQoKSwKKwkJCQkJY3VycmVudENsaWVudC5nZXRFeHRlcm5hbFVzZXJUeXBlKCksCisJCQkJCWN1cnJlbnRDbGllbnQuZ2V0TWFpbCgpLCBjdXJyZW50Q2xpZW50LmdldEZpcnN0bmFtZSgpLAorCQkJCQljdXJyZW50Q2xpZW50LmdldExhc3RuYW1lKCkpOworCisJCQl0aGlzLnNlc3Npb25NYW5hZ2VyLnVwZGF0ZUNsaWVudEJ5U3RyZWFtSWQoc3RyZWFtSWQsCisJCQkJCWN1cnJlbnRDbGllbnQsIGZhbHNlLCBudWxsKTsKKworCQkJcmV0dXJuIDFMOworCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW3NldFVzZXJOaWNrTmFtZV0gIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbmV3IExvbmcoLTEpOworCX0KKworCS8qKgorCSAqIEF0dGVudGlvbiEgVGhpcyBTSUQgaXMgTk9UIHRoZSBkZWZhdWx0IHNlc3Npb24gaWQhIGl0cyB0aGUgU2Vzc2lvbiBpZAorCSAqIHJldHJpZXZlZCBpbiB0aGUgY2FsbCBmcm9tIHRoZSBTT0FQIEdhdGV3YXkhCisJICogCisJICogQHBhcmFtIFNJRAorCSAqIEByZXR1cm4gLSAxIGluIGNhc2Ugb2Ygc3VjY2VzcywgLTEgb3RoZXJ3aXNlCisJICovCisJcHVibGljIExvbmcgbG9naW5Vc2VyQnlSZW1vdGUoU3RyaW5nIFNJRCkgeworCQl0cnkgeworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1dlYlNlcnZpY2VMZXZlbCgKKwkJCQkJdXNlcl9sZXZlbCkpIHsKKworCQkJCVNlc3Npb25kYXRhIHNkID0gc2Vzc2lvbmRhdGFEYW8uZ2V0U2Vzc2lvbkJ5SGFzaChTSUQpOworCQkJCWlmIChzZCA9PSBudWxsIHx8IHNkLmdldFNlc3Npb25YbWwoKSA9PSBudWxsKSB7CisJCQkJCXJldHVybiBuZXcgTG9uZygtMzcpOworCQkJCX0gZWxzZSB7CisKKwkJCQkJLy8gWFN0cmVhbSB4U3RyZWFtID0gbmV3IFhTdHJlYW0obmV3IFhwcERyaXZlcigpKTsKKwkJCQkJWFN0cmVhbSB4U3RyZWFtID0gbmV3IFhTdHJlYW0obmV3IERvbURyaXZlcigiVVRGLTgiKSk7CisJCQkJCXhTdHJlYW0uc2V0TW9kZShYU3RyZWFtLk5PX1JFRkVSRU5DRVMpOworCisJCQkJCVN0cmluZyB4bWxTdHJpbmcgPSBzZC5nZXRTZXNzaW9uWG1sKCk7CisJCQkJCVJlbW90ZVNlc3Npb25PYmplY3QgdXNlck9iamVjdCA9IChSZW1vdGVTZXNzaW9uT2JqZWN0KSB4U3RyZWFtCisJCQkJCQkJLmZyb21YTUwoeG1sU3RyaW5nKTsKKworCQkJCQlsb2cuZGVidWcoInVzZXJPYmplY3QuZ2V0VXNlcm5hbWUoKSwgdXNlck9iamVjdC5nZXRGaXJzdG5hbWUoKSwgdXNlck9iamVjdC5nZXRMYXN0bmFtZSgpICIKKwkJCQkJCQkrIHVzZXJPYmplY3QuZ2V0VXNlcm5hbWUoKQorCQkJCQkJCSsgIiwgIgorCQkJCQkJCSsgdXNlck9iamVjdC5nZXRGaXJzdG5hbWUoKQorCQkJCQkJCSsgIiwgIgorCQkJCQkJCSsgdXNlck9iamVjdC5nZXRMYXN0bmFtZSgpKTsKKworCQkJCQlJQ29ubmVjdGlvbiBjdXJyZW50ID0gUmVkNS5nZXRDb25uZWN0aW9uTG9jYWwoKTsKKwkJCQkJU3RyaW5nIHN0cmVhbUlkID0gY3VycmVudC5nZXRDbGllbnQoKS5nZXRJZCgpOworCQkJCQlDbGllbnQgY3VycmVudENsaWVudCA9IHRoaXMuc2Vzc2lvbk1hbmFnZXIKKwkJCQkJCQkuZ2V0Q2xpZW50QnlTdHJlYW1JZChzdHJlYW1JZCwgbnVsbCk7CisKKwkJCQkJLy8gQ2hlY2sgaWYgdGhpcyBVc2VyIGlzIHNpbXVsYXRlZCBpbiB0aGUgT3Blbk1lZXRpbmdzCisJCQkJCS8vIERhdGFiYXNlCisKKwkJCQkJbG9nLmRlYnVnKCJ1c2VyT2JqZWN0LmdldEV4dGVybmFsVXNlcklkKCkgLTEtICIKKwkJCQkJCQkrIHVzZXJPYmplY3QuZ2V0RXh0ZXJuYWxVc2VySWQoKSk7CisKKwkJCQkJaWYgKHVzZXJPYmplY3QuZ2V0RXh0ZXJuYWxVc2VySWQoKSAhPSBudWxsCisJCQkJCQkJJiYgdXNlck9iamVjdC5nZXRFeHRlcm5hbFVzZXJJZCgpICE9IG51bGwgJiYgCisJCQkJCQkJISIiLmVxdWFscyh1c2VyT2JqZWN0LmdldEV4dGVybmFsVXNlcklkKCkpKSB7CisKKwkJCQkJCS8vIElmIHNvIHdlIG5lZWQgdG8gY2hlY2sgdGhhdCB3ZSBjcmVhdGUgdGhpcyB1c2VyIGluCisJCQkJCQkvLyBPcGVuTWVldGluZ3MgYW5kIHVwZGF0ZSBpdHMgcmVjb3JkCisKKwkJCQkJCVVzZXIgdXNlciA9IHVzZXJNYW5hZ2VyLmdldFVzZXJCeUV4dGVybmFsSWRBbmRUeXBlKAorCQkJCQkJCQl1c2VyT2JqZWN0LmdldEV4dGVybmFsVXNlcklkKCksCisJCQkJCQkJCXVzZXJPYmplY3QuZ2V0RXh0ZXJuYWxVc2VyVHlwZSgpKTsKKworCQkJCQkJaWYgKHVzZXIgPT0gbnVsbCkgeworCQkJCQkJCVN0cmluZyBqTmFtZV90aW1lWm9uZSA9IGNvbmZpZ3VyYXRpb25EYW8uZ2V0Q29uZlZhbHVlKCJkZWZhdWx0LnRpbWV6b25lIiwgU3RyaW5nLmNsYXNzLCAiIik7CisKKwkJCQkJCQlsb25nIHVzZXJJZCA9IHVzZXJNYW5hZ2VyCisJCQkJCQkJCQkuYWRkVXNlcldpdGhFeHRlcm5hbEtleSgxLCAwLCAwLAorCQkJCQkJCQkJCQl1c2VyT2JqZWN0LmdldEZpcnN0bmFtZSgpLAorCQkJCQkJCQkJCQl1c2VyT2JqZWN0LmdldFVzZXJuYW1lKCksCisJCQkJCQkJCQkJCXVzZXJPYmplY3QuZ2V0TGFzdG5hbWUoKSwgMUwsCisJCQkJCQkJCQkJCXRydWUsICIiLCAvLyBwYXNzd29yZCBpcyBlbXB0eSBieSBkZWZhdWx0CisJCQkJCQkJCQkJCW51bGwsIG51bGwsICIiLAorCQkJCQkJCQkJCQl1c2VyT2JqZWN0LmdldEV4dGVybmFsVXNlcklkKCksCisJCQkJCQkJCQkJCXVzZXJPYmplY3QuZ2V0RXh0ZXJuYWxVc2VyVHlwZSgpLAorCQkJCQkJCQkJCQl0cnVlLCB1c2VyT2JqZWN0LmdldEVtYWlsKCksCisJCQkJCQkJCQkJCWpOYW1lX3RpbWVab25lLAorCQkJCQkJCQkJCQl1c2VyT2JqZWN0LmdldFBpY3R1cmVVcmwoKSk7CisKKwkJCQkJCQljdXJyZW50Q2xpZW50LnNldFVzZXJfaWQodXNlcklkKTsKKwkJCQkJCQlTZXNzaW9uVmFyaWFibGVzVXRpbC5zZXRVc2VySWQoY3VycmVudC5nZXRDbGllbnQoKSwgdXNlcklkKTsKKwkJCQkJCX0gZWxzZSB7CisKKwkJCQkJCQl1c2VyLnNldFBpY3R1cmV1cmkodXNlck9iamVjdC5nZXRQaWN0dXJlVXJsKCkpOworCisJCQkJCQkJdXNlck1hbmFnZXIudXBkYXRlVXNlcih1c2VyKTsKKworCQkJCQkJCWN1cnJlbnRDbGllbnQuc2V0VXNlcl9pZCh1c2VyLmdldFVzZXJfaWQoKSk7CisJCQkJCQkJU2Vzc2lvblZhcmlhYmxlc1V0aWwuc2V0VXNlcklkKGN1cnJlbnQuZ2V0Q2xpZW50KCksIHVzZXIuZ2V0VXNlcl9pZCgpKTsKKwkJCQkJCX0KKwkJCQkJfQorCisJCQkJCWxvZy5kZWJ1ZygidXNlck9iamVjdC5nZXRFeHRlcm5hbFVzZXJJZCgpIC0yLSAiCisJCQkJCQkJKyBjdXJyZW50Q2xpZW50LmdldFVzZXJfaWQoKSk7CisKKwkJCQkJY3VycmVudENsaWVudAorCQkJCQkJCS5zZXRVc2VyT2JqZWN0KHVzZXJPYmplY3QuZ2V0VXNlcm5hbWUoKSwKKwkJCQkJCQkJCXVzZXJPYmplY3QuZ2V0Rmlyc3RuYW1lKCksCisJCQkJCQkJCQl1c2VyT2JqZWN0LmdldExhc3RuYW1lKCkpOworCQkJCQljdXJyZW50Q2xpZW50LnNldFBpY3R1cmVfdXJpKHVzZXJPYmplY3QuZ2V0UGljdHVyZVVybCgpKTsKKwkJCQkJY3VycmVudENsaWVudC5zZXRNYWlsKHVzZXJPYmplY3QuZ2V0RW1haWwoKSk7CisKKwkJCQkJbG9nLmRlYnVnKCJVUERBVEUgVVNFUiBCWSBTVFJFQU1JRCAiICsgc3RyZWFtSWQpOworCisJCQkJCWlmIChjdXJyZW50Q2xpZW50LmdldFVzZXJfaWQoKSAhPSBudWxsKSB7CisJCQkJCQlzZXNzaW9uZGF0YURhby51cGRhdGVVc2VyKFNJRCwKKwkJCQkJCQkJY3VycmVudENsaWVudC5nZXRVc2VyX2lkKCkpOworCQkJCQl9CisKKwkJCQkJdGhpcy5zZXNzaW9uTWFuYWdlci51cGRhdGVDbGllbnRCeVN0cmVhbUlkKHN0cmVhbUlkLAorCQkJCQkJCWN1cnJlbnRDbGllbnQsIGZhbHNlLCBudWxsKTsKKworCQkJCQlyZXR1cm4gbmV3IExvbmcoMSk7CisJCQkJfQorCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltsb2dpblVzZXJCeVJlbW90ZV0gIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbmV3IExvbmcoLTEpOworCX0KKworCS8qKgorCSAqIHRoaXMgZnVuY3Rpb24gcmV0dXJucyBhIHVzZXIgb2JqZWN0IHdpdGggb3JnYW5pemF0aW9uIG9iamVjdHMgc2V0IG9ubHkKKwkgKiB0aGUgb3JnYW5pemF0aW9uIGlzIG5vdCBhdmFpbGFibGUgZm9yIHVzZXJzIHRoYXQgYXJlIHVzaW5nIGEgSEFTSCBtZWNoYW5pc20KKwkgKiBjYXVzZSB0aGUgU09BUC9SRVNUIEFQSSBkb2VzIG5vdCBndWFyYW50ZWUgdGhhdCB0aGUgdXNlciBjb25uZWN0ZWQgdG8gdGhlIEhBU0gKKwkgKiBoYXMgYSB2YWxpZCB1c2VyIG9iamVjdCBzZXQKKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICovCisJcHVibGljIFVzZXIgbWFya1Nlc3Npb25Bc0xvZ2VkSW4oU3RyaW5nIFNJRCkgeworCQl0cnkgeworCQkJc2Vzc2lvbmRhdGFEYW8udXBkYXRlVXNlcldpdGhvdXRTZXNzaW9uKFNJRCwgLTFMKTsKKwkJCQorCQkJTG9uZyBkZWZhdWx0UnBjVXNlcmlkID0gY29uZmlndXJhdGlvbkRhby5nZXRDb25mVmFsdWUoCisJCQkJCSJkZWZhdWx0LnJwYy51c2VyaWQiLCBMb25nLmNsYXNzLCAiLTEiKTsKKwkJCVVzZXIgZGVmYXVsdFJwY1VzZXIgPSB1c2VyTWFuYWdlci5nZXRVc2VyQnlJZChkZWZhdWx0UnBjVXNlcmlkKTsKKwkJCQorCQkJVXNlciB1c2VyID0gbmV3IFVzZXIoKTsKKwkJCXVzZXIuc2V0T3JnYW5pc2F0aW9uX3VzZXJzKGRlZmF1bHRScGNVc2VyLmdldE9yZ2FuaXNhdGlvbl91c2VycygpKTsKKwkJCQorCQkJcmV0dXJuIHVzZXI7CisJCQkKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbbWFya1Nlc3Npb25Bc0xvZ2VkSW5dIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvKioKKwkgKiBjbGVhciB0aGlzIHNlc3Npb24gaWQKKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogQHJldHVybiBzdHJpbmcgdmFsdWUgaWYgY29tcGxldGVkCisJICovCisJcHVibGljIExvbmcgbG9nb3V0VXNlcihTdHJpbmcgU0lEKSB7CisJCXRyeSB7CisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlJQ29ubmVjdGlvbiBjdXJyZW50ID0gUmVkNS5nZXRDb25uZWN0aW9uTG9jYWwoKTsKKwkJCUNsaWVudCBjdXJyZW50Q2xpZW50ID0gdGhpcy5zZXNzaW9uTWFuYWdlcgorCQkJCQkuZ2V0Q2xpZW50QnlTdHJlYW1JZChjdXJyZW50LmdldENsaWVudCgpLmdldElkKCksIG51bGwpOworCQkJCisJCQlzY29wZUFwcGxpY2F0aW9uQWRhcHRlci5yb29tTGVhdmVCeVNjb3BlKGN1cnJlbnRDbGllbnQsY3VycmVudC5nZXRTY29wZSgpLCBmYWxzZSk7CisJCQkKKwkJCWN1cnJlbnRDbGllbnQuc2V0VXNlck9iamVjdChudWxsLCBudWxsLCBudWxsLCBudWxsKTsKKwkJCQorCQkJcmV0dXJuIHVzZXJNYW5hZ2VyLmxvZ291dChTSUQsIHVzZXJzX2lkKTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbbG9nb3V0VXNlcl0iLGVycik7CisJCX0KKwkJcmV0dXJuIC0xTDsKKwl9CisKKwkvKioKKwkgKiBnZXQgYSBsaXN0IG9mIGFsbCBzdGF0ZXMsIG5lZWRzIG5vIGF1dGhlbnRpZmljYXRpb24gdG8gbG9hZAorCSAqIAorCSAqIEByZXR1cm4gTGlzdCBvZiBTdGF0ZS1PYmplY3RzIG9yIG51bGwKKwkgKi8KKwlwdWJsaWMgTGlzdDxTdGF0ZT4gZ2V0U3RhdGVzKCkgeworCQlyZXR1cm4gc3RhdGVtYW5hZ2VtZW50LmdldFN0YXRlcygpOworCX0KKworCXB1YmxpYyBMaXN0PE9tVGltZVpvbmU+IGdldFRpbWVab25lcygpIHsKKwkJcmV0dXJuIG9tVGltZVpvbmVEYW9JbXBsLmdldE9tVGltZVpvbmVzKCk7CisJfQorCisJLyoqCisJICogTG9hZCBpZiB0aGUgdXNlcnMgY2FuIHJlZ2lzdGVyIGl0c2VsZiBieSB1c2luZyB0aGUgZm9ybSB3aXRob3V0IGxvZ2dpbmcKKwkgKiBpbiwgbmVlZHMgbm8gYXV0aGVudGlmaWNhdGlvbiB0byBsb2FkCisJICogCisJICogQHBhcmFtIFNJRAorCSAqIEByZXR1cm4gY29uZmlndXJhdGlvbiB3aXRoIGtleSAiYWxsb3dfZnJvbnRlbmRfcmVnaXN0ZXIiCisJICovCisJcHVibGljIENvbmZpZ3VyYXRpb24gYWxsb3dGcm9udGVuZFJlZ2lzdGVyKFN0cmluZyBTSUQpIHsKKwkJcmV0dXJuIGNvbmZpZ3VyYXRpb25EYW8uZ2V0KCJhbGxvd19mcm9udGVuZF9yZWdpc3RlciIpOworCX0KKwkKKwlwdWJsaWMgTGlzdDxDb25maWd1cmF0aW9uPiBnZXRHZW5lcmFsT3B0aW9ucyhTdHJpbmcgU0lEKSB7CisJCXRyeSB7CisJCQkKKwkJCUxpc3Q8Q29uZmlndXJhdGlvbj4gY0xpc3QgPSBuZXcgTGlua2VkTGlzdDxDb25maWd1cmF0aW9uPigpOworCQkJCisJCQljTGlzdC5hZGQoY29uZmlndXJhdGlvbkRhby5nZXQoImV4Y2x1c2l2ZS5hdWRpby5rZXljb2RlIikpOworCQkJY0xpc3QuYWRkKGNvbmZpZ3VyYXRpb25EYW8uZ2V0KCJyZWQ1c2lwLmVuYWJsZSIpKTsKKwkJCWNMaXN0LmFkZChjb25maWd1cmF0aW9uRGFvLmdldCgibWF4X3VwbG9hZF9zaXplIikpOworCQkJY0xpc3QuYWRkKGNvbmZpZ3VyYXRpb25EYW8uZ2V0KCJtdXRlLmtleWNvZGUiKSk7CisJCQkKKwkJCXJldHVybiBjTGlzdDsKKwkJCQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRMb2dpbk9wdGlvbnNdIixlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMaXN0PENvbmZpZ3VyYXRpb24+IGdldExvZ2luT3B0aW9ucyhTdHJpbmcgU0lEKSB7CisJCXRyeSB7CisKKwkJCUxpc3Q8Q29uZmlndXJhdGlvbj4gY0xpc3QgPSBuZXcgTGlua2VkTGlzdDxDb25maWd1cmF0aW9uPigpOworCQkJY0xpc3QuYWRkKGNvbmZpZ3VyYXRpb25EYW8KKwkJCQkJLmdldCgiYWxsb3dfZnJvbnRlbmRfcmVnaXN0ZXIiKSk7CisJCQljTGlzdC5hZGQoY29uZmlndXJhdGlvbkRhby5nZXQoInNob3cuZmFjZWJvb2subG9naW4iKSk7CisJCQljTGlzdC5hZGQoY29uZmlndXJhdGlvbkRhbworCQkJCQkuZ2V0KCJ1c2VyLmxvZ2luLm1pbmltdW0ubGVuZ3RoIikpOworCQkJY0xpc3QuYWRkKGNvbmZpZ3VyYXRpb25EYW8KKwkJCQkJLmdldCgidXNlci5wYXNzLm1pbmltdW0ubGVuZ3RoIikpOworCQkJY0xpc3QuYWRkKGNvbmZpZ3VyYXRpb25EYW8KKwkJCQkJLmdldCgidXNlci5wYXNzLm1pbmltdW0ubGVuZ3RoIikpOworCQkJY0xpc3QuYWRkKGNvbmZpZ3VyYXRpb25EYW8uZ2V0KCJsZGFwX2RlZmF1bHRfaWQiKSk7CisKKwkJCXJldHVybiBjTGlzdDsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbZ2V0TG9naW5PcHRpb25zXSIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisKKwl9CisKKwkvKioKKwkgKiBBZGQgYSB1c2VyIHJlZ2lzdGVyIGJ5IGFuIE9iamVjdCBzZWUgW3JlZ2lzdGVyVXNlcl0gZm9yIHRoZSBpbmRleCBvZiB0aGUKKwkgKiBPYmplY3QgVG8gYWxsb3cgdGhlIHJlZ2lzdGVyaW5nIHRoZSBjb25maWdfa2V5ICphbGxvd19mcm9udGVuZF9yZWdpc3RlcioKKwkgKiBoYXMgdG8gYmUgdGhlIHZhbHVlIDEgb3RoZXJ3aXNlIHRoZSB1c2VyIHdpbGwgZ2V0IGFuIGVycm9yIGNvZGUKKwkgKiAKKwkgKiBAcGFyYW0gcmVnT2JqZWN0T2JqCisJICogQHJldHVybiBuZXcgdXNlcnNfaWQgT1IgbnVsbCBpZiBhbiBleGNlcHRpb24sIC0xIGlmIGFuIGVycm9yLCAtNCBpZiBtYWlsCisJICogICAgICAgICBhbHJlYWR5IHRha2VuLCAtNSBpZiB1c2VybmFtZSBhbHJlYWR5IHRha2VuLCAtMyBpZiBsb2dpbiBvciBwYXNzCisJICogICAgICAgICBvciBtYWlsIGlzIGVtcHR5CisJICovCisJcHVibGljIExvbmcgcmVnaXN0ZXJVc2VyQnlPYmplY3QoT2JqZWN0IHJlZ09iamVjdE9iaikgeworCQl0cnkgeworCQkJQFN1cHByZXNzV2FybmluZ3MoInVuY2hlY2tlZCIpCisJCQlNYXA8PywgPz4gcmVnT2JqZWN0ID0gKE1hcDxPYmplY3QsIE9iamVjdD4pIHJlZ09iamVjdE9iajsKKworCQkJU3RyaW5nIGRvbWFpbiA9IHJlZ09iamVjdC5nZXQoImRvbWFpbiIpLnRvU3RyaW5nKCk7CisJCQlTdHJpbmcgcG9ydCA9IHJlZ09iamVjdC5nZXQoInBvcnQiKS50b1N0cmluZygpOworCQkJU3RyaW5nIHdlYmFwcCA9IHJlZ09iamVjdC5nZXQoIndlYmFwcCIpLnRvU3RyaW5nKCk7CisKKwkJCVN0cmluZyBiYXNlVVJMID0gImh0dHA6Ly8iICsgZG9tYWluICsgIjoiICsgcG9ydCArIHdlYmFwcDsKKwkJCWlmIChwb3J0LmVxdWFscygiODAiKSkgeworCQkJCWJhc2VVUkwgPSAiaHR0cDovLyIgKyBkb21haW4gKyB3ZWJhcHA7CisJCQl9IGVsc2UgaWYgKHBvcnQuZXF1YWxzKCI0NDMiKSkgeworCQkJCWJhc2VVUkwgPSAiaHR0cHM6Ly8iICsgZG9tYWluICsgd2ViYXBwOworCQkJfQorCQkJU3RyaW5nIHR6ID0gKFN0cmluZylyZWdPYmplY3QuZ2V0KCJqTmFtZVRpbWVab25lIik7CisJCQlpZiAodHogPT0gbnVsbCB8fCB0ei5sZW5ndGgoKSA9PSAwKSB7CisJCQkJLy9FbXB0eSB0egorCQkJCXJldHVybiAtNTVMOworCQkJfQorCQkJcmV0dXJuIHVzZXJNYW5hZ2VyLnJlZ2lzdGVyVXNlcihyZWdPYmplY3QuZ2V0KCJVc2VybmFtZSIpCisJCQkJCS50b1N0cmluZygpLCByZWdPYmplY3QuZ2V0KCJVc2VycGFzcyIpLnRvU3RyaW5nKCksCisJCQkJCXJlZ09iamVjdC5nZXQoImxhc3RuYW1lIikudG9TdHJpbmcoKSwKKwkJCQkJcmVnT2JqZWN0LmdldCgiZmlyc3RuYW1lIikudG9TdHJpbmcoKSwKKwkJCQkJcmVnT2JqZWN0LmdldCgiZW1haWwiKS50b1N0cmluZygpLCBuZXcgRGF0ZSgpLCByZWdPYmplY3QKKwkJCQkJCQkuZ2V0KCJzdHJlZXQiKS50b1N0cmluZygpLAorCQkJCQlyZWdPYmplY3QuZ2V0KCJhZGRpdGlvbmFsbmFtZSIpLnRvU3RyaW5nKCksCisJCQkJCXJlZ09iamVjdC5nZXQoImZheCIpLnRvU3RyaW5nKCksIHJlZ09iamVjdC5nZXQoInppcCIpCisJCQkJCQkJLnRvU3RyaW5nKCksCisJCQkJCUxvbmcudmFsdWVPZihyZWdPYmplY3QuZ2V0KCJzdGF0ZXNfaWQiKS50b1N0cmluZygpKQorCQkJCQkJCS5sb25nVmFsdWUoKSwgcmVnT2JqZWN0LmdldCgidG93biIpLnRvU3RyaW5nKCksCisJCQkJCUxvbmcudmFsdWVPZihyZWdPYmplY3QuZ2V0KCJsYW5ndWFnZV9pZCIpLnRvU3RyaW5nKCkpCisJCQkJCQkJLmxvbmdWYWx1ZSgpLCAiIiwgZmFsc2UsIGJhc2VVUkwsIHRydWUsCisJCQkJCXR6KTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisJCQlsb2cuZXJyb3IoInJlZ2lzdGVyVXNlckJ5T2JqZWN0IiwgZXgpOworCQl9CisJCXJldHVybiBuZXcgTG9uZygtMSk7CisJfQorCisJLyoqCisJICogUmVnaXN0ZXIgYSBuZXcgVXNlciBUbyBhbGxvdyB0aGUgcmVnaXN0ZXJpbmcgdGhlIGNvbmZpZ19rZXkKKwkgKiAqYWxsb3dfZnJvbnRlbmRfcmVnaXN0ZXIqIGhhcyB0byBiZSB0aGUgdmFsdWUgMSBvdGhlcndpc2UgdGhlIHVzZXIgd2lsbAorCSAqIGdldCBhbiBlcnJvciBjb2RlCisJICogCisJICogQGRlcHJlY2F0ZWQgdXNlIHJlZ2lzdGVyVXNlckJ5T2JqZWN0IGluc3RlYWQKKwkgKiBAcGFyYW0gU0lECisJICogQHBhcmFtIFVzZXJuYW1lCisJICogQHBhcmFtIFVzZXJwYXNzCisJICogQHBhcmFtIGxhc3RuYW1lCisJICogQHBhcmFtIGZpcnN0bmFtZQorCSAqIEBwYXJhbSBlbWFpbAorCSAqIEBwYXJhbSBhZ2UKKwkgKiBAcGFyYW0gc3RyZWV0CisJICogQHBhcmFtIGFkZGl0aW9uYWxuYW1lCisJICogQHBhcmFtIGZheAorCSAqIEBwYXJhbSB6aXAKKwkgKiBAcGFyYW0gc3RhdGVzX2lkCisJICogQHBhcmFtIHRvd24KKwkgKiBAcGFyYW0gbGFuZ3VhZ2VfaWQKKwkgKiBAcmV0dXJuIG5ldyB1c2Vyc19pZCBPUiBudWxsIGlmIGFuIGV4Y2VwdGlvbiwgLTEgaWYgYW4gZXJyb3IsIC00IGlmIG1haWwKKwkgKiAgICAgICAgIGFscmVhZHkgdGFrZW4sIC01IGlmIHVzZXJuYW1lIGFscmVhZHkgdGFrZW4sIC0zIGlmIGxvZ2luIG9yIHBhc3MKKwkgKiAgICAgICAgIG9yIG1haWwgaXMgZW1wdHkKKwkgKi8KKwlARGVwcmVjYXRlZAorCXB1YmxpYyBMb25nIHJlZ2lzdGVyVXNlcihTdHJpbmcgU0lELCBTdHJpbmcgVXNlcm5hbWUsIFN0cmluZyBVc2VycGFzcywKKwkJCVN0cmluZyBsYXN0bmFtZSwgU3RyaW5nIGZpcnN0bmFtZSwgU3RyaW5nIGVtYWlsLCBEYXRlIGFnZSwKKwkJCVN0cmluZyBzdHJlZXQsIFN0cmluZyBhZGRpdGlvbmFsbmFtZSwgU3RyaW5nIGZheCwgU3RyaW5nIHppcCwKKwkJCWxvbmcgc3RhdGVzX2lkLCBTdHJpbmcgdG93biwgbG9uZyBsYW5ndWFnZV9pZCwgU3RyaW5nIHBob25lKSB7CisJCXJldHVybiB1c2VyTWFuYWdlci5yZWdpc3RlclVzZXIoVXNlcm5hbWUsIFVzZXJwYXNzLCBsYXN0bmFtZSwKKwkJCQlmaXJzdG5hbWUsIGVtYWlsLCBhZ2UsIHN0cmVldCwgYWRkaXRpb25hbG5hbWUsIGZheCwgemlwLAorCQkJCXN0YXRlc19pZCwgdG93biwgbGFuZ3VhZ2VfaWQsIHBob25lLCBmYWxzZSwgIiIsIHRydWUsICIiKTsKKwl9CisKKwkvKioKKwkgKiBsb2dzIGEgdXNlciBvdXQgYW5kIGRlbGV0ZXMgaGlzIGFjY291bnQKKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogQHJldHVybiAtIGlkIG9mIHVzZXIgYmVpbmcgZGVsZXRlZCwgb3IgZXJyb3IgY29kZQorCSAqLworCXB1YmxpYyBMb25nIGRlbGV0ZVVzZXJJRFNlbGYoU3RyaW5nIFNJRCkgeworCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCWxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQlpZiAodXNlcl9sZXZlbCA+PSAxKSB7CisJCQl1c2VyTWFuYWdlci5sb2dvdXQoU0lELCB1c2Vyc19pZCk7CisJCQlyZXR1cm4gdXNlcnNEYW8uZGVsZXRlVXNlcklEKHVzZXJzX2lkKTsKKwkJfSBlbHNlIHsKKwkJCXJldHVybiBuZXcgTG9uZygtMTApOworCQl9CisJfQorCisJLyoqCisJICogc2VuZCBhbiBpbnZpdGF0aW9uIHRvIGFub3RoZXIgdXNlciBieSBNYWlsCisJICogCisJICogQGRlcHJlY2F0ZWQKKwkgKiBAcGFyYW0gU0lECisJICogQHBhcmFtIHVzZXJuYW1lCisJICogQHBhcmFtIG1lc3NhZ2UKKwkgKiBAcGFyYW0gZG9tYWluCisJICogQHBhcmFtIHJvb20KKwkgKiBAcGFyYW0gcm9vbXR5cGUKKwkgKiBAcGFyYW0gYmFzZXVybAorCSAqIEBwYXJhbSBlbWFpbAorCSAqIEBwYXJhbSBzdWJqZWN0CisJICogQHBhcmFtIHJvb21faWQKKwkgKiBAcmV0dXJuIC0gInN1Y2Nlc3MiIHN0cmluZyBpbiBjYXNlIG9mIHN1Y2Nlc3MsIGVycm9yIG1lc3NhZ2Ugb2YgbnVsbCBvdGhlcndpc2UKKwkgKi8KKwlARGVwcmVjYXRlZAorCXB1YmxpYyBTdHJpbmcgc2VuZEludml0YXRpb24oU3RyaW5nIFNJRCwgU3RyaW5nIHVzZXJuYW1lLCBTdHJpbmcgbWVzc2FnZSwKKwkJCVN0cmluZyBkb21haW4sIFN0cmluZyByb29tLCBTdHJpbmcgcm9vbXR5cGUsIFN0cmluZyBiYXNldXJsLAorCQkJU3RyaW5nIGVtYWlsLCBTdHJpbmcgc3ViamVjdCwgTG9uZyByb29tX2lkKSB7CisJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCXJldHVybiBpbnZpdGF0aW9uTWFuYWdlci5zZW5kSW52aXRpb25MaW5rKHVzZXJfbGV2ZWwsCisJCQkJdXNlcm5hbWUsIG1lc3NhZ2UsIGRvbWFpbiwgcm9vbSwgcm9vbXR5cGUsIGJhc2V1cmwsIGVtYWlsLAorCQkJCXVzZXJzRGFvLmdldCh1c2Vyc19pZCkuZ2V0QWRyZXNzZXMoKS5nZXRFbWFpbCgpLCBzdWJqZWN0LCByb29tX2lkLCBudWxsLCBudWxsKTsKKwl9CisKKwkvKioKKwkgKiBzZW5kIHNvbWUgZmVlZGJhY2ssIHRoaXMgd2lsbCBvbmx5IHdvcmsgZm9yIHRoZSBvbmxpbmUgZGVtby12ZXJzaW9uCisJICogCisJICogQHBhcmFtIFNJRAorCSAqIEBwYXJhbSB1c2VybmFtZQorCSAqIEBwYXJhbSBtZXNzYWdlCisJICogQHBhcmFtIGVtYWlsCisJICogQHJldHVybiAtICJzdWNjZXNzIiBzdHJpbmcgaW4gY2FzZSBvZiBzdWNjZXNzLCBlcnJvciBtZXNzYWdlIG9mIG51bGwgb3RoZXJ3aXNlCisJICovCisJcHVibGljIFN0cmluZyBzZW5kRmVlZGJhY2soU3RyaW5nIFNJRCwgU3RyaW5nIHVzZXJuYW1lLCBTdHJpbmcgbWVzc2FnZSwKKwkJCVN0cmluZyBlbWFpbCkgeworCQlyZXR1cm4gZmVlZGJhY2tNYW5hZ2VyLnNlbmRGZWVkYmFjayh1c2VybmFtZSwgZW1haWwsCisJCQkJbWVzc2FnZSk7CisJfQorCisJcHVibGljIExpc3Q8VXNlcmRhdGE+IGdldFVzZXJkYXRhKFN0cmluZyBTSUQpIHsKKwkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tVc2VyTGV2ZWwodXNlcl9sZXZlbCkpIHsKKwkJCXJldHVybiB1c2VyTWFuYWdlci5nZXRVc2VyZGF0YURhc2hCb2FyZCh1c2Vyc19pZCk7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLyoqCisJICogQGRlcHJlY2F0ZWQKKwkgKiBAcGFyYW0gU0lECisJICogQHJldHVybiAtIG1hcCBvZiByc3MgbWVzc2FnZXMKKwkgKi8KKwlARGVwcmVjYXRlZAorCXB1YmxpYyBMaW5rZWRIYXNoTWFwPFN0cmluZywgTGlua2VkSGFzaE1hcDxTdHJpbmcsIExpbmtlZEhhc2hNYXA8U3RyaW5nLCBMaW5rZWRIYXNoTWFwPFN0cmluZywgT2JqZWN0Pj4+PiBnZXRSc3NGZWVkcygKKwkJCVN0cmluZyBTSUQpIHsKKwkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJcmV0dXJuIGxvYWRBdG9tUnNzRmVlZC5nZXRSc3NGZWVkcyh1c2VyX2xldmVsKTsKKwl9CisKKwkvKioKKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogQHBhcmFtIHVybEVuZFBvaW50CisJICogQHJldHVybiAtIG1hcCBvZiByc3MgbWVzc2FnZXMKKwkgKi8KKwlwdWJsaWMgTGlua2VkSGFzaE1hcDxTdHJpbmcsIExpbmtlZEhhc2hNYXA8U3RyaW5nLCBMaW5rZWRIYXNoTWFwPFN0cmluZywgT2JqZWN0Pj4+IGdldFJzc0ZlZWRCeVVSTCgKKwkJCVN0cmluZyBTSUQsIFN0cmluZyB1cmxFbmRQb2ludCkgeworCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1VzZXJMZXZlbCh1c2VyX2xldmVsKSkgeworCQkJcmV0dXJuIGxvYWRBdG9tUnNzRmVlZC5wYXJzZVJzc0ZlZWQodXJsRW5kUG9pbnQpOworCQl9IGVsc2UgeworCQkJcmV0dXJuIG51bGw7CisJCX0KKwl9CisKKwkvKioKKwkgKiBUT0RPOiBJcyB0aGlzIGZ1bmN0aW9uIGluIHVzYWdlPworCSAqIAorCSAqIEBkZXByZWNhdGVkCisJICogQHBhcmFtIFNJRAorCSAqIEBwYXJhbSBkb21haW4KKwkgKiBAcmV0dXJuIC0gZW1wdHkgbWFwCisJICovCisJQERlcHJlY2F0ZWQKKwlwdWJsaWMgTGlua2VkSGFzaE1hcDxJbnRlZ2VyLCBDbGllbnQ+IGdldFVzZXJzQnlEb21haW4oU3RyaW5nIFNJRCwKKwkJCVN0cmluZyBkb21haW4pIHsKKwkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tVc2VyTGV2ZWwodXNlcl9sZXZlbCkpIHsKKwkJCUxpbmtlZEhhc2hNYXA8SW50ZWdlciwgQ2xpZW50PiBsTWFwID0gbmV3IExpbmtlZEhhc2hNYXA8SW50ZWdlciwgQ2xpZW50PigpOworCQkJLy8gSW50ZWdlciBjb3VudGVyID0gMDsKKwkJCS8vIGZvciAoSXRlcmF0b3I8U3RyaW5nPiBpdCA9CisJCQkvLyBBcHBsaWNhdGlvbi5nZXRDbGllbnRMaXN0KCkua2V5U2V0KCkuaXRlcmF0b3IoKTtpdC5oYXNOZXh0KCk7KSB7CisJCQkvLyBSb29tQ2xpZW50IHJjID0gQXBwbGljYXRpb24uZ2V0Q2xpZW50TGlzdCgpLmdldChpdC5uZXh0KCkpOworCQkJLy8gLy9pZiAocmMuZ2V0RG9tYWluKCkuZXF1YWxzKGRvbWFpbikpIHsKKwkJCS8vIGxNYXAucHV0KGNvdW50ZXIsIHJjKTsKKwkJCS8vIGNvdW50ZXIrKzsKKwkJCS8vIC8vfQorCQkJLy8gfQorCQkJcmV0dXJuIGxNYXA7CisJCX0gZWxzZSB7CisJCQlyZXR1cm4gbnVsbDsKKwkJfQorCX0KKworCXB1YmxpYyBpbnQgY2xvc2VSb29tKFN0cmluZyBTSUQsIExvbmcgcm9vbV9pZCwgQm9vbGVhbiBzdGF0dXMpIHsKKwkJdHJ5IHsKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tVc2VyTGV2ZWwodXNlcl9sZXZlbCkpIHsKKworCQkJCXJvb21NYW5hZ2VyLmNsb3NlUm9vbShyb29tX2lkLCBzdGF0dXMpOworCisJCQkJaWYgKHN0YXR1cykgeworCQkJCQlNYXA8U3RyaW5nLCBTdHJpbmc+IG1lc3NhZ2UgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4oKTsKKwkJCQkJbWVzc2FnZS5wdXQoIm1lc3NhZ2UiLCAicm9vbUNsb3NlZCIpOworCQkJCQl0aGlzLnNjb3BlQXBwbGljYXRpb25BZGFwdGVyLnNlbmRNZXNzYWdlQnlSb29tQW5kRG9tYWluKAorCQkJCQkJCXJvb21faWQsIG1lc3NhZ2UpOworCQkJCX0KKworCQkJCXJldHVybiAxOworCisJCQl9CisKKwkJCXJldHVybiAxOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltjbG9zZVJvb21dIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gLTE7CisJfQorCisJcHVibGljIHZvaWQgcmVzdWx0UmVjZWl2ZWQoSVBlbmRpbmdTZXJ2aWNlQ2FsbCBhcmcwKSB7CisJCWxvZy5kZWJ1ZygiW3Jlc3VsdFJlY2VpdmVkXSIgKyBhcmcwKTsKKwl9CisKKwlwdWJsaWMgTGlzdDxDb25maWd1cmF0aW9uPiBnZXREYXNoYm9hcmRDb25maWd1cmF0aW9uKFN0cmluZyBTSUQpIHsKKwkJdHJ5IHsKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tVc2VyTGV2ZWwodXNlcl9sZXZlbCkpIHsKKwkJCQlyZXR1cm4gY29uZmlndXJhdGlvbkRhby5nZXRDb25mS2V5cyhuZXcgU3RyaW5nW10geworCQkJCQkJImRhc2hib2FyZC5zaG93LmNoYXQiLCAvLworCQkJCQkJImRhc2hib2FyZC5zaG93Lm15cm9vbXMiLCAvLworCQkJCQkJImRhc2hib2FyZC5zaG93LnJzc2ZlZWQiLCAvLworCQkJCQkJImRlZmF1bHQuZGFzaGJvYXJkLnRhYiIsIC8vCisJCQkJCQkiZGVmYXVsdC5sYW5kaW5nLnpvbmUiIH0pOworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltnZXREYXNoYm9hcmRDb25maWd1cmF0aW9uXSIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3JlbW90ZS9NZWV0aW5nTWVtYmVyU2VydmljZS5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3JlbW90ZS9NZWV0aW5nTWVtYmVyU2VydmljZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2NTZkNzQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcmVtb3RlL01lZXRpbmdNZW1iZXJTZXJ2aWNlLmphdmEKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5yZW1vdGU7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5BdXRoTGV2ZWxVdGlsOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuU2Vzc2lvbmRhdGFEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jYWxlbmRhci5tYW5hZ2VtZW50Lk1lZXRpbmdNZW1iZXJMb2dpYzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuVXNlck1hbmFnZXI7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKKworcHVibGljIGNsYXNzIE1lZXRpbmdNZW1iZXJTZXJ2aWNlIHsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoCisJCQlNZWV0aW5nTWVtYmVyU2VydmljZS5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFNlc3Npb25kYXRhRGFvIHNlc3Npb25kYXRhRGFvOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFVzZXJNYW5hZ2VyIHVzZXJNYW5hZ2VyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEF1dGhMZXZlbFV0aWwgYXV0aExldmVsVXRpbDsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBNZWV0aW5nTWVtYmVyTG9naWMgbWVldGluZ01lbWJlckxvZ2ljOworCisJcHVibGljIExvbmcgdXBkYXRlTWVldGluZ01lbWJlcihTdHJpbmcgU0lELCBMb25nIG1lZXRpbmdNZW1iZXJJZCwKKwkJCVN0cmluZyBmaXJzdG5hbWUsIFN0cmluZyBsYXN0bmFtZSwgU3RyaW5nIG1lbWJlclN0YXR1cywKKwkJCVN0cmluZyBhcHBvaW50bWVudFN0YXR1cywgTG9uZyBhcHBvaW50bWVudElkLCBMb25nIHVzZXJpZCwKKwkJCVN0cmluZyBlbWFpbCkgeworCisJCXRyeSB7CisKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tVc2VyTGV2ZWwodXNlcl9sZXZlbCkpIHsKKworCQkJCXJldHVybiBtZWV0aW5nTWVtYmVyTG9naWMudXBkYXRlTWVldGluZ01lbWJlcigKKwkJCQkJCW1lZXRpbmdNZW1iZXJJZCwgZmlyc3RuYW1lLCBsYXN0bmFtZSwgbWVtYmVyU3RhdHVzLAorCQkJCQkJYXBwb2ludG1lbnRTdGF0dXMsIGFwcG9pbnRtZW50SWQsIHVzZXJpZCwgZW1haWwsIG51bGwpOworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIlt1cGRhdGVNZWV0aW5nTWVtYmVyXSIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisKKwl9CisKKwlwdWJsaWMgTG9uZyBkZWxldGVNZWV0aW5nTWVtYmVyKFN0cmluZyBTSUQsIExvbmcgbWVldGluZ01lbWJlcklkLAorCQkJTG9uZyBsYW5ndWFnZV9pZCkgeworCQlsb2cuZGVidWcoIk1lZXRpbmdNZW1iZXJTZXJ2aWNlLmRlbGV0ZU1lZXRpbmdtZW1iZXIiKTsKKworCQl0cnkgeworCisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrVXNlckxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlyZXR1cm4gbWVldGluZ01lbWJlckxvZ2ljLmRlbGV0ZU1lZXRpbmdNZW1iZXIoCisJCQkJCQltZWV0aW5nTWVtYmVySWQsIHVzZXJzX2lkLCBsYW5ndWFnZV9pZCk7CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2RlbGV0ZU1lZXRpbmdNZW1iZXJdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9yZW1vdGUvT3JnYW5pc2F0aW9uU2VydmljZS5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3JlbW90ZS9PcmdhbmlzYXRpb25TZXJ2aWNlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWUzZDNlYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9yZW1vdGUvT3JnYW5pc2F0aW9uU2VydmljZS5qYXZhCkBAIC0wLDAgKzEsMjA1IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnJlbW90ZTsKKworaW1wb3J0IGphdmEudXRpbC5MaW5rZWRIYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuQXV0aExldmVsVXRpbDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLlNlc3Npb25kYXRhRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmVhbnMuYmFzaWMuU2VhcmNoUmVzdWx0OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEudXNlci5PcmdhbmlzYXRpb25NYW5hZ2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEudXNlci5Vc2VyTWFuYWdlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5kb21haW4uT3JnYW5pc2F0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuVXNlcjsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uQXV0b3dpcmVkOworCisvKioKKyAqIAorICogQGF1dGhvciBzd2FnbmVyCisgKiAKKyAqLworcHVibGljIGNsYXNzIE9yZ2FuaXNhdGlvblNlcnZpY2UgeworCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcigKKwkJCU9yZ2FuaXNhdGlvblNlcnZpY2UuY2xhc3MsIE9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBTZXNzaW9uZGF0YURhbyBzZXNzaW9uZGF0YURhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBVc2VyTWFuYWdlciB1c2VyTWFuYWdlcjsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBPcmdhbmlzYXRpb25NYW5hZ2VyIG9yZ2FuaXNhdGlvbk1hbmFnZXI7CisJQEF1dG93aXJlZAorCXByaXZhdGUgQXV0aExldmVsVXRpbCBhdXRoTGV2ZWxVdGlsOworCisJLyoqCisJICogTG9hZHMgYSBMaXN0IG9mIGFsbCBhdmFpbGFibGUgT3JnYW5pemF0aW9ucyAoQWRtaW4tcm9sZSBvbmx5KQorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiBAcmV0dXJuIC0gTGlzdCBvZiBhbGwgYXZhaWxhYmxlIE9yZ2FuaXphdGlvbnMKKwkgKi8KKwlwdWJsaWMgU2VhcmNoUmVzdWx0PE9yZ2FuaXNhdGlvbj4gZ2V0T3JnYW5pc2F0aW9ucyhTdHJpbmcgU0lELCBpbnQgc3RhcnQsIGludCBtYXgsCisJCQlTdHJpbmcgb3JkZXJieSwgYm9vbGVhbiBhc2MpIHsKKwkJdHJ5IHsKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCWxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQkJcmV0dXJuIG9yZ2FuaXNhdGlvbk1hbmFnZXIuZ2V0T3JnYW5pc2F0aW9ucyh1c2VyX2xldmVsLCBzdGFydCwKKwkJCQkJbWF4LCBvcmRlcmJ5LCBhc2MpOworCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJbG9nLmVycm9yKCJnZXRPcmdhbmlzYXRpb25zIiwgZSk7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIExpc3Q8T3JnYW5pc2F0aW9uPiBnZXRBbGxPcmdhbmlzYXRpb25zKFN0cmluZyBTSUQpIHsKKwkJdHJ5IHsKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQkJcmV0dXJuIG9yZ2FuaXNhdGlvbk1hbmFnZXIuZ2V0T3JnYW5pc2F0aW9ucyh1c2VyX2xldmVsKTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCWxvZy5lcnJvcigiZ2V0QWxsT3JnYW5pc2F0aW9ucyIsIGUpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCS8qKgorCSAqIGdldCBhbiBvcmdhbmlzYXRpb24gYnkgYSBnaXZlbiBpZAorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiBAcGFyYW0gb3JnYW5pc2F0aW9uX2lkCisJICogQHJldHVybiAtIG9yZ2FuaXNhdGlvbiB3aXRoIGdpdmVuIGlkCisJICovCisJcHVibGljIE9yZ2FuaXNhdGlvbiBnZXRPcmdhbmlzYXRpb25CeUlkKFN0cmluZyBTSUQsIGxvbmcgb3JnYW5pc2F0aW9uX2lkKSB7CisJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJbG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCXJldHVybiBvcmdhbmlzYXRpb25NYW5hZ2VyLmdldE9yZ2FuaXNhdGlvbkJ5SWQodXNlcl9sZXZlbCwKKwkJCQlvcmdhbmlzYXRpb25faWQpOworCX0KKworCS8qKgorCSAqIGRlbGV0ZXMgYSBvcmdhbmlzYXRpb24gYnkgYSBnaXZlbiBpZAorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiBAcGFyYW0gb3JnYW5pc2F0aW9uX2lkCisJICogQHJldHVybiAtIGlkIG9mIG9yZ2FuaXNhdGlvbiBpbiBjYXNlIG9mIHN1Y2Nlc3MsIG51bGwgb3RoZXJ3aXNlCisJICovCisJcHVibGljIExvbmcgZGVsZXRlT3JnYW5pc2F0aW9uKFN0cmluZyBTSUQsIGxvbmcgb3JnYW5pc2F0aW9uX2lkKSB7CisJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJbG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCXJldHVybiBvcmdhbmlzYXRpb25NYW5hZ2VyLmRlbGV0ZU9yZ2FuaXNhdGlvbih1c2VyX2xldmVsLAorCQkJCW9yZ2FuaXNhdGlvbl9pZCwgdXNlcnNfaWQpOworCX0KKworCS8qKgorCSAqIGFkZHMgb3IgdXBkYXRlcyBhbiBPcmdhbmlzYXRpb24KKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogQHBhcmFtIHJlZ09iamVjdE9iagorCSAqIEByZXR1cm4gLSBpZCBvZiBhZGRlZCBvciB1cGRhdGVkIG9yZ2FuaXNhdGlvbiBpbiBjYXNlIG9mIHN1Y2Nlc3MsIG51bGwgb3RoZXJ3aXNlCisJICovCisJcHVibGljIExvbmcgc2F2ZU9yVXBkYXRlT3JnYW5pc2F0aW9uKFN0cmluZyBTSUQsIE9iamVjdCByZWdPYmplY3RPYmopIHsKKwkJdHJ5IHsKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCWxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQkJQFN1cHByZXNzV2FybmluZ3MoInJhd3R5cGVzIikKKwkJCUxpbmtlZEhhc2hNYXA8PywgPz4gYXJnT2JqZWN0TWFwID0gKExpbmtlZEhhc2hNYXApIHJlZ09iamVjdE9iajsKKwkJCWxvbmcgb3JnYW5pc2F0aW9uX2lkID0gTG9uZy52YWx1ZU9mKAorCQkJCQlhcmdPYmplY3RNYXAuZ2V0KCJvcmdhbmlzYXRpb25faWQiKS50b1N0cmluZygpKS5sb25nVmFsdWUoKTsKKwkJCWlmIChvcmdhbmlzYXRpb25faWQgPT0gMCkgeworCQkJCXJldHVybiBvcmdhbmlzYXRpb25NYW5hZ2VyLmFkZE9yZ2FuaXNhdGlvbih1c2VyX2xldmVsLAorCQkJCQkJYXJnT2JqZWN0TWFwLmdldCgib3JnbmFtZSIpLnRvU3RyaW5nKCksIHVzZXJzX2lkKTsKKwkJCX0gZWxzZSB7CisJCQkJcmV0dXJuIG9yZ2FuaXNhdGlvbk1hbmFnZXIudXBkYXRlT3JnYW5pc2F0aW9uKHVzZXJfbGV2ZWwsCisJCQkJCQlvcmdhbmlzYXRpb25faWQsCisJCQkJCQlhcmdPYmplY3RNYXAuZ2V0KCJvcmduYW1lIikudG9TdHJpbmcoKSwgdXNlcnNfaWQpOworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoInNhdmVPclVwZGF0ZU9yZ2FuaXNhdGlvbiIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisKKwl9CisKKwkvKioKKwkgKiBnZXRzIGFsbCB1c2VycyBvZiBhIGdpdmVuIG9yZ2FuaXNhdGlvbgorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiBAcGFyYW0gb3JnYW5pc2F0aW9uX2lkCisJICogQHBhcmFtIHN0YXJ0CisJICogQHBhcmFtIG1heAorCSAqIEBwYXJhbSBvcmRlcmJ5CisJICogQHBhcmFtIGFzYworCSAqIEByZXR1cm4gYWxsIHVzZXJzIG9mIGEgZ2l2ZW4gb3JnYW5pc2F0aW9uCisJICovCisJcHVibGljIFNlYXJjaFJlc3VsdDxVc2VyPiBnZXRVc2Vyc0J5T3JnYW5pc2F0aW9uKFN0cmluZyBTSUQsCisJCQlsb25nIG9yZ2FuaXNhdGlvbl9pZCwgaW50IHN0YXJ0LCBpbnQgbWF4LCBTdHJpbmcgb3JkZXJieSwKKwkJCWJvb2xlYW4gYXNjKSB7CisJCXRyeSB7CisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrQWRtaW5MZXZlbCh1c2VyX2xldmVsKSkgeworCQkJCXJldHVybiBvcmdhbmlzYXRpb25NYW5hZ2VyCisJCQkJCQkuZ2V0VXNlcnNTZWFyY2hSZXN1bHRCeU9yZ2FuaXNhdGlvbklkKG9yZ2FuaXNhdGlvbl9pZCwKKwkJCQkJCQkJc3RhcnQsIG1heCwgb3JkZXJieSwgYXNjKTsKKwkJCX0gZWxzZSB7CisJCQkJbG9nLmVycm9yKCJOZWVkIEFkbWluaXN0cmF0aW9uIEFjY291bnQiKTsKKwkJCQlTZWFyY2hSZXN1bHQ8VXNlcj4gc1Jlc3VsdCA9IG5ldyBTZWFyY2hSZXN1bHQ8VXNlcj4oKTsKKwkJCQlzUmVzdWx0LnNldEVycm9ySWQoLTI2TCk7CisJCQkJcmV0dXJuIHNSZXN1bHQ7CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiZ2V0VXNlcnNCeU9yZ2FuaXNhdGlvbiIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIExvbmcgYWRkVXNlclRvT3JnYW5pc2F0aW9uKFN0cmluZyBTSUQsIExvbmcgb3JnYW5pc2F0aW9uX2lkLAorCQkJTG9uZyB1c2VyX2lkKSB7CisJCXRyeSB7CisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrQWRtaW5MZXZlbCh1c2VyX2xldmVsKSkgeworCQkJCXJldHVybiBvcmdhbmlzYXRpb25NYW5hZ2VyLmFkZFVzZXJUb09yZ2FuaXNhdGlvbih1c2VyX2lkLAorCQkJCQkJb3JnYW5pc2F0aW9uX2lkLCB1c2Vyc19pZCk7CisJCQl9IGVsc2UgeworCQkJCXJldHVybiAtMjZMOworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoImdldFVzZXJzQnlPcmdhbmlzYXRpb24iLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMb25nIGRlbGV0ZVVzZXJGcm9tT3JnYW5pc2F0aW9uKFN0cmluZyBTSUQsIExvbmcgb3JnYW5pc2F0aW9uX2lkLAorCQkJTG9uZyB1c2VyX2lkLCBTdHJpbmcgY29tbWVudCkgeworCQl0cnkgeworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCQlyZXR1cm4gb3JnYW5pc2F0aW9uTWFuYWdlci5kZWxldGVVc2VyRnJvbU9yZ2FuaXNhdGlvbigKKwkJCQkJdXNlcl9sZXZlbCwgdXNlcl9pZCwgb3JnYW5pc2F0aW9uX2lkKTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJnZXRVc2Vyc0J5T3JnYW5pc2F0aW9uIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9yZW1vdGUvUG9sbFNlcnZpY2UuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9yZW1vdGUvUG9sbFNlcnZpY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMzRjZGU1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3JlbW90ZS9Qb2xsU2VydmljZS5qYXZhCkBAIC0wLDAgKzEsMjc4IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnJlbW90ZTsKKworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5TZXQ7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jb25mZXJlbmNlLlBvbGxNYW5hZ2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEudXNlci5Vc2VyTWFuYWdlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5wb2xsLlBvbGxUeXBlOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnBvbGwuUm9vbVBvbGw7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucG9sbC5Sb29tUG9sbEFuc3dlcnM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucmVtb3RlLnJlZDUuU2NvcGVBcHBsaWNhdGlvbkFkYXB0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbS5DbGllbnQ7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2Vzc2lvbi5JU2Vzc2lvbk1hbmFnZXI7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcucmVkNS5zZXJ2ZXIuYXBpLklDb25uZWN0aW9uOworaW1wb3J0IG9yZy5yZWQ1LnNlcnZlci5hcGkuUmVkNTsKK2ltcG9ydCBvcmcucmVkNS5zZXJ2ZXIuYXBpLnNlcnZpY2UuSVBlbmRpbmdTZXJ2aWNlQ2FsbDsKK2ltcG9ydCBvcmcucmVkNS5zZXJ2ZXIuYXBpLnNlcnZpY2UuSVBlbmRpbmdTZXJ2aWNlQ2FsbGJhY2s7CitpbXBvcnQgb3JnLnJlZDUuc2VydmVyLmFwaS5zZXJ2aWNlLklTZXJ2aWNlQ2FwYWJsZUNvbm5lY3Rpb247CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5BdXRvd2lyZWQ7CisKKy8qKgorICogCisgKiBAYXV0aG9yIHN3YWduZXIKKyAqIAorICovCitwdWJsaWMgY2xhc3MgUG9sbFNlcnZpY2UgaW1wbGVtZW50cyBJUGVuZGluZ1NlcnZpY2VDYWxsYmFjayB7CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKAorCQkJUG9sbFNlcnZpY2UuY2xhc3MsIE9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKworCUBBdXRvd2lyZWQKKwlwcml2YXRlIElTZXNzaW9uTWFuYWdlciBzZXNzaW9uTWFuYWdlcjsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBVc2VyTWFuYWdlciB1c2VyTWFuYWdlcjsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBTY29wZUFwcGxpY2F0aW9uQWRhcHRlciBzY29wZUFwcGxpY2F0aW9uQWRhcHRlcjsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBQb2xsTWFuYWdlciBwb2xsTWFuYWdlcjsKKworCXB1YmxpYyBTdHJpbmcgY3JlYXRlUG9sbChTdHJpbmcgcG9sbE5hbWUsIFN0cmluZyBwb2xsUXVlc3Rpb24sIGludCBwb2xsVHlwZUlkKSB7CisJCVN0cmluZyByZXR1cm5WYWx1ZSA9ICIiOworCQl0cnkgeworCQkJbG9nLmRlYnVnKCJjcmVhdGVQb2xsOiAiICsgcG9sbFF1ZXN0aW9uKTsKKworCQkJSUNvbm5lY3Rpb24gY3VycmVudGNvbiA9IFJlZDUuZ2V0Q29ubmVjdGlvbkxvY2FsKCk7CisJCQlDbGllbnQgcmMgPSBzZXNzaW9uTWFuYWdlci5nZXRDbGllbnRCeVN0cmVhbUlkKGN1cnJlbnRjb24KKwkJCQkJLmdldENsaWVudCgpLmdldElkKCksIG51bGwpOworCisJCQlsb2cuZGVidWcoInJjOiAiICsgcmMuZ2V0U3RyZWFtaWQoKSArICIgIiArIHJjLmdldFVzZXJuYW1lKCkgKyAiICIKKwkJCQkJKyByYy5nZXRJc01vZCgpKTsKKworCQkJaWYgKHJjLmdldElzTW9kKCkpIHsKKwkJCQkvLyB3aWxsIG1vdmUgYWxsIGV4aXN0aW5nIHBvbGxzIHRvIHRoZSBhcmNoaXZlCisJCQkJcG9sbE1hbmFnZXIuY2xvc2VQb2xsKHJjLmdldFJvb21faWQoKSk7CisJCQkJCisJCQkJc2VuZE5vdGlmaWNhdGlvbihjdXJyZW50Y29uLCAibmV3UG9sbCIsCisJCQkJCQluZXcgT2JqZWN0W10geyBwb2xsTWFuYWdlci5jcmVhdGVQb2xsKHJjLAorCQkJCQkJCQlwb2xsTmFtZSwgcG9sbFF1ZXN0aW9uLCAobG9uZykgcG9sbFR5cGVJZCkgfSk7CisJCQkJcmV0dXJuVmFsdWUgPSAiMjAwIjsKKwkJCX0gZWxzZSB7CisJCQkJcmV0dXJuVmFsdWUgPSAiMjAyIjsKKwkJCX0KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlyZXR1cm5WYWx1ZSA9ICIyMDMiOworCQkJbG9nLmVycm9yKCJbY3JlYXRlUG9sbF0iLCBlcnIpOworCQl9CisJCXJldHVybiByZXR1cm5WYWx1ZTsKKwl9CisKKwlwdWJsaWMgYm9vbGVhbiBjbG9zZVBvbGwoKSB7CisJCXRyeSB7CisJCQlsb2cuZGVidWcoImNsb3NlUG9sbDogIik7CisKKwkJCUlDb25uZWN0aW9uIGN1cnJlbnRjb24gPSBSZWQ1LmdldENvbm5lY3Rpb25Mb2NhbCgpOworCQkJQ2xpZW50IHJjID0gc2Vzc2lvbk1hbmFnZXIuZ2V0Q2xpZW50QnlTdHJlYW1JZChjdXJyZW50Y29uCisJCQkJCS5nZXRDbGllbnQoKS5nZXRJZCgpLCBudWxsKTsKKworCQkJbG9nLmRlYnVnKCJyYzogIiArIHJjLmdldFN0cmVhbWlkKCkgKyAiICIgKyByYy5nZXRVc2VybmFtZSgpICsgIiAiCisJCQkJCSsgcmMuZ2V0SXNNb2QoKSk7CisKKwkJCWlmIChyYy5nZXRJc01vZCgpKSB7CisJCQkJLy8gd2lsbCBtb3ZlIGFsbCBleGlzdGluZyBwb2xscyB0byB0aGUgYXJjaGl2ZQorCQkJCXJldHVybiBwb2xsTWFuYWdlci5jbG9zZVBvbGwocmMuZ2V0Um9vbV9pZCgpKTsKKwkJCX0KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltjbG9zZVBvbGxdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gZmFsc2U7CisJfQorCisJcHVibGljIGJvb2xlYW4gZGVsZXRlUG9sbChMb25nIHBvbGxfaWQpIHsKKwkJdHJ5IHsKKwkJCWxvZy5kZWJ1ZygiY2xvc2VQb2xsOiAiKTsKKworCQkJSUNvbm5lY3Rpb24gY3VycmVudGNvbiA9IFJlZDUuZ2V0Q29ubmVjdGlvbkxvY2FsKCk7CisJCQlDbGllbnQgcmMgPSBzZXNzaW9uTWFuYWdlci5nZXRDbGllbnRCeVN0cmVhbUlkKGN1cnJlbnRjb24KKwkJCQkJLmdldENsaWVudCgpLmdldElkKCksIG51bGwpOworCisJCQlsb2cuZGVidWcoInJjOiAiICsgcmMuZ2V0U3RyZWFtaWQoKSArICIgIiArIHJjLmdldFVzZXJuYW1lKCkgKyAiICIKKwkJCQkJKyByYy5nZXRJc01vZCgpKTsKKworCQkJaWYgKHJjLmdldElzTW9kKCkpIHsKKwkJCQkvLyB3aWxsIG1vdmUgYWxsIGV4aXN0aW5nIHBvbGxzIHRvIHRoZSBhcmNoaXZlCisJCQkJcmV0dXJuIHBvbGxNYW5hZ2VyLmRlbGV0ZVBvbGwocG9sbF9pZCk7CisJCQl9CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbY2xvc2VQb2xsXSIsIGVycik7CisJCX0KKwkJcmV0dXJuIGZhbHNlOworCX0KKworCXB1YmxpYyB2b2lkIHNlbmROb3RpZmljYXRpb24oSUNvbm5lY3Rpb24gY3VycmVudCwgU3RyaW5nIGNsaWVudEZ1bmN0aW9uLAorCQkJT2JqZWN0W10gb2JqKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkJLy8gTm90aWZ5IGFsbCBjbGllbnRzIG9mIHRoZSBzYW1lIHNjb3BlIChyb29tKQorCQlDbGllbnQgcmMgPSB0aGlzLnNlc3Npb25NYW5hZ2VyLmdldENsaWVudEJ5U3RyZWFtSWQoY3VycmVudAorCQkJCS5nZXRDbGllbnQoKS5nZXRJZCgpLCBudWxsKTsKKwkJQ29sbGVjdGlvbjxTZXQ8SUNvbm5lY3Rpb24+PiBjb25Db2xsZWN0aW9uID0gY3VycmVudC5nZXRTY29wZSgpCisJCQkJLmdldENvbm5lY3Rpb25zKCk7CisJCWZvciAoU2V0PElDb25uZWN0aW9uPiBjb25zZXQgOiBjb25Db2xsZWN0aW9uKSB7CisJCQlmb3IgKElDb25uZWN0aW9uIGNvbm4gOiBjb25zZXQpIHsKKwkJCQlpZiAoY29ubiAhPSBudWxsKSB7CisJCQkJCWlmIChjb25uIGluc3RhbmNlb2YgSVNlcnZpY2VDYXBhYmxlQ29ubmVjdGlvbikgeworCQkJCQkJQ2xpZW50IHJjbCA9IHRoaXMuc2Vzc2lvbk1hbmFnZXIKKwkJCQkJCQkJLmdldENsaWVudEJ5U3RyZWFtSWQoY29ubi5nZXRDbGllbnQoKS5nZXRJZCgpLCBudWxsKTsKKwkJCQkJCWlmIChyY2wuZ2V0SXNTY3JlZW5DbGllbnQoKSAhPSBudWxsCisJCQkJCQkJCSYmIHJjbC5nZXRJc1NjcmVlbkNsaWVudCgpKSB7CisJCQkJCQkJLy8gY29udGludWU7CisJCQkJCQl9IGVsc2UgeworCQkJCQkJCWlmIChyY2wuZ2V0Um9vbV9pZCgpICE9IG51bGwgJiYgcmNsLmdldFJvb21faWQoKS5lcXVhbHMocmMuZ2V0Um9vbV9pZCgpKSkgeworCQkJCQkJCQkoKElTZXJ2aWNlQ2FwYWJsZUNvbm5lY3Rpb24pIGNvbm4pLmludm9rZSgKKwkJCQkJCQkJCQljbGllbnRGdW5jdGlvbiwgb2JqLAorCQkJCQkJCQkJCXNjb3BlQXBwbGljYXRpb25BZGFwdGVyKTsKKwkJCQkJCQkJbG9nLmRlYnVnKCJzZW5kaW5nICIgKyBjbGllbnRGdW5jdGlvbiArICIgdG8gIgorCQkJCQkJCQkJCSsgY29ubiArICIgIiArIGNvbm4uZ2V0Q2xpZW50KCkuZ2V0SWQoKSk7CisJCQkJCQkJfQorCQkJCQkJfQorCQkJCQl9CisJCQkJfQorCQkJfQorCQl9CisJfQorCisJcHVibGljIExpc3Q8UG9sbFR5cGU+IGdldFBvbGxUeXBlTGlzdCgpIHsKKwkJcmV0dXJuIHBvbGxNYW5hZ2VyLmdldFBvbGxUeXBlcygpOworCX0KKworCXB1YmxpYyBpbnQgdm90ZShpbnQgcG9sbHZhbHVlLCBpbnQgcG9sbFR5cGVJZCkgeworCQlpbnQgcmV0dXJuVmFsID0gMDsKKwkJdHJ5IHsKKwkJCWxvZy5kZWJ1ZygiUG9sbFNlcnZpY2U6OnZvdGU6IEVudGVyIik7CisJCQlJQ29ubmVjdGlvbiBjdXJyZW50ID0gUmVkNS5nZXRDb25uZWN0aW9uTG9jYWwoKTsKKwkJCVN0cmluZyBzdHJlYW1pZCA9IGN1cnJlbnQuZ2V0Q2xpZW50KCkuZ2V0SWQoKTsKKwkJCUNsaWVudCByYyA9IHNlc3Npb25NYW5hZ2VyLmdldENsaWVudEJ5U3RyZWFtSWQoc3RyZWFtaWQsIG51bGwpOworCisJCQlpZiAocmMgPT0gbnVsbCkgeworCQkJCWxvZy5lcnJvcigiUm9vbUNsaWVudCBJUyBOVUxMIGZvciBDbGllbnRJRDogIgorCQkJCQkJKyBjdXJyZW50LmdldENsaWVudCgpLmdldElkKCkpOworCQkJCXJldHVybiAtMTsKKwkJCX0KKwkJCWxvbmcgcm9vbUlkID0gcmMuZ2V0Um9vbV9pZCgpOworCQkJaWYgKCFwb2xsTWFuYWdlci5oYXNQb2xsKHJvb21JZCkpIHsKKwkJCQlsb2cuZXJyb3IoIlBPTEwgSVMgTlVMTCBmb3IgUm9vbUlkOiAiICsgcmMuZ2V0Um9vbV9pZCgpKTsKKwkJCQlyZXR1cm4gLTE7CisJCQl9CisJCQlpZiAocG9sbE1hbmFnZXIuaGFzVm90ZWQocm9vbUlkLCByYy5nZXRVc2VyX2lkKCkpKSB7CisJCQkJbG9nLmRlYnVnKCJoYXNWb3RlZDogdHJ1ZSIpOworCQkJCXJldHVybiAtMTsKKwkJCX0KKwkJCS8vIGdldCBQb2xsCisJCQlSb29tUG9sbCByb29tUCA9IHBvbGxNYW5hZ2VyLmdldFBvbGwocm9vbUlkKTsKKworCQkJbG9nLmRlYnVnKCJ2b3RlOiAiICsgcG9sbHZhbHVlICsgIiAiICsgcG9sbFR5cGVJZCArICIgIgorCQkJCQkrIHJvb21QLmdldFBvbGxRdWVzdGlvbigpKTsKKworCQkJbG9nLmRlYnVnKCJoYXNWb3RlZDogZmFsc2UiKTsKKwkJCVJvb21Qb2xsQW5zd2VycyBycEEgPSBuZXcgUm9vbVBvbGxBbnN3ZXJzKCk7CisJCQlpZiAocm9vbVAuZ2V0UG9sbFR5cGUoKS5nZXRJc051bWVyaWNBbnN3ZXIoKSkgeworCQkJCWxvZy5kZWJ1ZygibnVtZXJpYyIpOworCQkJCXJwQS5zZXRQb2ludExpc3QocG9sbHZhbHVlKTsKKwkJCX0gZWxzZSB7CisJCQkJbG9nLmRlYnVnKCJib29sZWFuIik7CisJCQkJLy8gSXMgYm9vbGVhbiBRdWVzdGlvbgorCQkJCXJwQS5zZXRBbnN3ZXIobmV3IEJvb2xlYW4ocG9sbHZhbHVlID09IDEpKTsKKwkJCX0KKwkJCXJwQS5zZXRWb3RlZFVzZXIodXNlck1hbmFnZXIuZ2V0VXNlckJ5SWQocmMuZ2V0VXNlcl9pZCgpKSk7CisJCQlycEEuc2V0Vm90ZURhdGUobmV3IERhdGUoKSk7CisJCQlycEEuc2V0Um9vbVBvbGwocm9vbVApOworCQkJcm9vbVAuZ2V0Um9vbVBvbGxBbnN3ZXJMaXN0KCkuYWRkKHJwQSk7CisJCQlwb2xsTWFuYWdlci51cGRhdGVQb2xsKHJvb21QKTsKKwkJCXJldHVybiAxOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIlt2b3RlXSIsIGVycik7CisJCX0KKwkJcmV0dXJuIHJldHVyblZhbDsKKwl9CisKKwlwdWJsaWMgUm9vbVBvbGwgZ2V0Vm90ZXMoKSB7CisJCXJldHVybiBnZXRQb2xsKCk7CisJfQorCisJcHVibGljIFJvb21Qb2xsIGdldFBvbGwoKSB7CisJCXRyeSB7CisJCQlJQ29ubmVjdGlvbiBjdXJyZW50ID0gUmVkNS5nZXRDb25uZWN0aW9uTG9jYWwoKTsKKwkJCUNsaWVudCByYyA9IHRoaXMuc2Vzc2lvbk1hbmFnZXIuZ2V0Q2xpZW50QnlTdHJlYW1JZChjdXJyZW50CisJCQkJCS5nZXRDbGllbnQoKS5nZXRJZCgpLCBudWxsKTsKKworCQkJLy8gZ2V0IFBvbGwKKwkJCXJldHVybiBwb2xsTWFuYWdlci5nZXRQb2xsKHJjLmdldFJvb21faWQoKSk7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2dldFBvbGxdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgaW50IGNoZWNrSGFzVm90ZWQoKSB7CisJCXRyeSB7CisJCQlJQ29ubmVjdGlvbiBjdXJyZW50ID0gUmVkNS5nZXRDb25uZWN0aW9uTG9jYWwoKTsKKwkJCVN0cmluZyBzdHJlYW1pZCA9IGN1cnJlbnQuZ2V0Q2xpZW50KCkuZ2V0SWQoKTsKKwkJCUNsaWVudCByYyA9IHRoaXMuc2Vzc2lvbk1hbmFnZXIKKwkJCQkJLmdldENsaWVudEJ5U3RyZWFtSWQoc3RyZWFtaWQsIG51bGwpOworCisJCQlsb25nIHJvb21JZCA9IHJjLmdldFJvb21faWQoKTsKKwkJCWlmIChwb2xsTWFuYWdlci5oYXNQb2xsKHJvb21JZCkpIHsKKwkJCQlyZXR1cm4gcG9sbE1hbmFnZXIuaGFzVm90ZWQocm9vbUlkLCByYy5nZXRVc2VyX2lkKCkpID8gLTEgOiAxOworCQkJfSBlbHNlIHsKKwkJCQlyZXR1cm4gLTI7CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2NoZWNrSGFzVm90ZWRdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gMDsKKwl9CisKKwlwdWJsaWMgTGlzdDxSb29tUG9sbD4gZ2V0QXJjaGl2ZWRQb2xsTGlzdCgpIHsKKwkJdHJ5IHsKKwkJCUlDb25uZWN0aW9uIGN1cnJlbnQgPSBSZWQ1LmdldENvbm5lY3Rpb25Mb2NhbCgpOworCQkJQ2xpZW50IHJjID0gdGhpcy5zZXNzaW9uTWFuYWdlci5nZXRDbGllbnRCeVN0cmVhbUlkKGN1cnJlbnQKKwkJCQkJLmdldENsaWVudCgpLmdldElkKCksIG51bGwpOworCisJCQkvLyBnZXQgUG9sbAorCQkJcmV0dXJuIHBvbGxNYW5hZ2VyLmdldEFyY2hpdmVkUG9sbExpc3QocmMuZ2V0Um9vbV9pZCgpKTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbZ2V0QXJjaGl2ZWRQb2xsTGlzdF0iLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyB2b2lkIHJlc3VsdFJlY2VpdmVkKElQZW5kaW5nU2VydmljZUNhbGwgYXJnMCkgeworCQkvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIG1ldGhvZCBzdHViCisJCQorCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9yZW1vdGUvUHJpbnRTZXJ2aWNlLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcmVtb3RlL1ByaW50U2VydmljZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3Yzc0YWUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcmVtb3RlL1ByaW50U2VydmljZS5qYXZhCkBAIC0wLDAgKzEsODEgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucmVtb3RlOworCitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuYmF0aWsuYmVhbnMuUHJpbnRCZWFuOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuQXV0aExldmVsVXRpbDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLlNlc3Npb25kYXRhRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEudXNlci5Vc2VyTWFuYWdlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5jcnlwdC5NRDU7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKKworcHVibGljIGNsYXNzIFByaW50U2VydmljZSB7CisKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoUHJpbnRTZXJ2aWNlLmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CQorCQorCXByaXZhdGUgc3RhdGljIEhhc2hNYXA8U3RyaW5nLFByaW50QmVhbj4gY3VycmVudEV4cG9ydExpc3QgPSBuZXcgSGFzaE1hcDxTdHJpbmcsUHJpbnRCZWFuPigpOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFNlc3Npb25kYXRhRGFvIHNlc3Npb25kYXRhRGFvOworICAgIEBBdXRvd2lyZWQKKyAgICBwcml2YXRlIFVzZXJNYW5hZ2VyIHVzZXJNYW5hZ2VyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEF1dGhMZXZlbFV0aWwgYXV0aExldmVsVXRpbDsKKwkKKwkvKgorCSAqIEV4cG9ydCBMaXN0CisJICogCisJICovCisJCisJcHVibGljIFN0cmluZyBhZGRQcmludExpc3QoU3RyaW5nIFNJRCwgQFN1cHByZXNzV2FybmluZ3MoInJhd3R5cGVzIikgTGlzdCBtYXAsIGludCB3aWR0aCwgaW50IGhlaWdodCkgeworCQl0cnkgeworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCSAgICAgICAgTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJICAgICAgICBpZiAoYXV0aExldmVsVXRpbC5jaGVja1VzZXJMZXZlbCh1c2VyX2xldmVsKSkgeworCSAgICAgICAgCVN0cmluZyBoYXNoUmF3ID0gIiIrbmV3IERhdGUoKTsKKwkgICAgICAgIAlTdHJpbmcgaGFzaCA9IE1ENS5kb19jaGVja3N1bShoYXNoUmF3KTsKKwkgICAgICAgIAlQcmludFNlcnZpY2UuYWRkUHJpbnRJdGVtYnlNYXAoaGFzaCwgbWFwLCB3aWR0aCwgaGVpZ2h0KTsKKwkgICAgICAgIAlyZXR1cm4gaGFzaDsKKwkgICAgICAgIH0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworICAgIAkJbG9nLmVycm9yKCJsb2dpblVzZXIiLGVycik7CisgICAgCX0KKyAgICAJcmV0dXJuIG51bGw7CisJfQorCQorCXB1YmxpYyBzdGF0aWMgc3luY2hyb25pemVkIFByaW50QmVhbiBnZXRQcmludEl0ZW1CeUhhc2goU3RyaW5nIGhhc2gpIHRocm93cyBFeGNlcHRpb24geworCQlQcmludEJlYW4gaXRlbUxpc3QgPSBjdXJyZW50RXhwb3J0TGlzdC5nZXQoaGFzaCk7CisvLwkJaWYgKGl0ZW1MaXN0ICE9IG51bGwpIHsKKy8vCQkJY3VycmVudEV4cG9ydExpc3QucmVtb3ZlKGhhc2gpOworLy8JCX0KKwkJcmV0dXJuIGl0ZW1MaXN0OworCX0KKwkKKwlwdWJsaWMgc3RhdGljIHN5bmNocm9uaXplZCB2b2lkIGFkZFByaW50SXRlbWJ5TWFwKFN0cmluZyBoYXNoLCBAU3VwcHJlc3NXYXJuaW5ncygicmF3dHlwZXMiKSBMaXN0IG1hcCwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0KSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkJUHJpbnRCZWFuIHBCZWFuID0gbmV3IFByaW50QmVhbihoYXNoLCBtYXAsIHdpZHRoLCBoZWlnaHQpOworCQljdXJyZW50RXhwb3J0TGlzdC5wdXQoaGFzaCwgcEJlYW4pOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9yZW1vdGUvVXNlclNlcnZpY2UuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9yZW1vdGUvVXNlclNlcnZpY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMWZmYzZjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3JlbW90ZS9Vc2VyU2VydmljZS5qYXZhCkBAIC0wLDAgKzEsMTc0NyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5yZW1vdGU7CisKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5DYWxlbmRhcjsKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlua2VkSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlua2VkTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuVGltZVpvbmU7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuY2x1c3Rlci5TbGF2ZUhUVFBDb25uZWN0aW9uTWFuYWdlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLkF1dGhMZXZlbFV0aWw7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5GaWVsZE1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5TZXNzaW9uZGF0YURhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLmRhby5Db25maWd1cmF0aW9uRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuZGFvLk9tVGltZVpvbmVEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5kYW8uU2VydmVyRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmVhbnMuYmFzaWMuU2VhcmNoUmVzdWx0OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY2FsZW5kYXIuZGFvcy5BcHBvaW50bWVudERhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNhbGVuZGFyLmRhb3MuTWVldGluZ01lbWJlckRhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNvbmZlcmVuY2UuSW52aXRhdGlvbk1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jb25mZXJlbmNlLlJvb21NYW5hZ2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY29uZmVyZW5jZS5kYW8uUm9vbURhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuT3JnYW5pc2F0aW9uTWFuYWdlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuVXNlck1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLmRhby5Qcml2YXRlTWVzc2FnZUZvbGRlckRhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuZGFvLlByaXZhdGVNZXNzYWdlc0RhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuZGFvLlNhbHV0YXRpb25EYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLmRhby5Vc2VyQ29udGFjdHNEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLmRhby5Vc2Vyc0RhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5TZXJ2ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuZG9tYWluLk9yZ2FuaXNhdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5pbnZpdGF0aW9uLkludml0YXRpb25zOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmxhbmcuRmllbGRsYW5ndWFnZXN2YWx1ZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbS5DbGllbnQ7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbS5Sb29tOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuUHJpdmF0ZU1lc3NhZ2U7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlci5Qcml2YXRlTWVzc2FnZUZvbGRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlNhbHV0YXRpb247CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlci5Vc2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuVXNlckNvbnRhY3Q7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucmVtb3RlLnJlZDUuU2NvcGVBcHBsaWNhdGlvbkFkYXB0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2Vzc2lvbi5JU2Vzc2lvbk1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudGVtcGxhdGVzLlJlcXVlc3RDb250YWN0Q29uZmlybVRlbXBsYXRlOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnRlbXBsYXRlcy5SZXF1ZXN0Q29udGFjdFRlbXBsYXRlOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLmNyeXB0Lk1hbmFnZUNyeXB0U3R5bGU7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMubWFpbC5NYWlsSGFuZGxlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5tYXRoLkNhbGVuZGFyUGF0dGVybnM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMubWF0aC5UaW1lem9uZVV0aWw7CitpbXBvcnQgb3JnLnJlZDUuaW8udXRpbHMuT2JqZWN0TWFwOworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnJlZDUuc2VydmVyLmFwaS5zY29wZS5JU2NvcGU7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5BdXRvd2lyZWQ7CisKKy8qKgorICogUHJvdmlkZXMgbWV0aG9kIHRvIG1hbmlwdWxhdGUge0BsaW5rIFVzZXJ9CisgKiAKKyAqIEBhdXRob3Igc2ViYXdhZ25lcgorICogCisgKi8KK3B1YmxpYyBjbGFzcyBVc2VyU2VydmljZSB7CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKAorCQkJVXNlclNlcnZpY2UuY2xhc3MsIE9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKworCUBBdXRvd2lyZWQKKwlwcml2YXRlIElTZXNzaW9uTWFuYWdlciBzZXNzaW9uTWFuYWdlcjsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBTY29wZUFwcGxpY2F0aW9uQWRhcHRlciBzY29wZUFwcGxpY2F0aW9uQWRhcHRlcjsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBBcHBvaW50bWVudERhbyBhcHBvaW50bWVudERhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBTZXNzaW9uZGF0YURhbyBzZXNzaW9uZGF0YURhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBDb25maWd1cmF0aW9uRGFvIGNvbmZpZ3VyYXRpb25EYW87CisJQEF1dG93aXJlZAorCXByaXZhdGUgVXNlck1hbmFnZXIgdXNlck1hbmFnZXI7CisJQEF1dG93aXJlZAorCXByaXZhdGUgRmllbGRNYW5hZ2VyIGZpZWxkTWFuYWdlcjsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBPbVRpbWVab25lRGFvIG9tVGltZVpvbmVEYW9JbXBsOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFNhbHV0YXRpb25EYW8gc2FsdXRhdGlvbm1hbmFnZW1lbnQ7CisJQEF1dG93aXJlZAorCXByaXZhdGUgT3JnYW5pc2F0aW9uTWFuYWdlciBvcmdhbmlzYXRpb25NYW5hZ2VyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIE1hbmFnZUNyeXB0U3R5bGUgY3J5cHRNYW5hZ2VyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFJvb21NYW5hZ2VyIHJvb21NYW5hZ2VyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFJvb21EYW8gcm9vbURhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBNZWV0aW5nTWVtYmVyRGFvIG1lZXRpbmdNZW1iZXJEYW87CisJQEF1dG93aXJlZAorCXByaXZhdGUgUHJpdmF0ZU1lc3NhZ2VzRGFvIHByaXZhdGVNZXNzYWdlc0RhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBQcml2YXRlTWVzc2FnZUZvbGRlckRhbyBwcml2YXRlTWVzc2FnZUZvbGRlckRhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBVc2Vyc0RhbyB1c2Vyc0RhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBVc2VyQ29udGFjdHNEYW8gdXNlckNvbnRhY3RzRGFvOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIE1haWxIYW5kbGVyIG1haWxIYW5kbGVyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFJlcXVlc3RDb250YWN0VGVtcGxhdGUgcmVxdWVzdENvbnRhY3RUZW1wbGF0ZTsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBSZXF1ZXN0Q29udGFjdENvbmZpcm1UZW1wbGF0ZSByZXF1ZXN0Q29udGFjdENvbmZpcm1UZW1wbGF0ZTsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBBdXRoTGV2ZWxVdGlsIGF1dGhMZXZlbFV0aWw7CisJQEF1dG93aXJlZAorCXByaXZhdGUgVGltZXpvbmVVdGlsIHRpbWV6b25lVXRpbDsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBJbnZpdGF0aW9uTWFuYWdlciBpbnZpdGF0aW9uTWFuYWdlcjsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBTZXJ2ZXJEYW8gc2VydmVyRGFvOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFNsYXZlSFRUUENvbm5lY3Rpb25NYW5hZ2VyIHNsYXZlSFRUUENvbm5lY3Rpb25NYW5hZ2VyOworCisJLyoqCisJICogZ2V0IHlvdXIgb3duIHVzZXItb2JqZWN0CisJICogCisJICogQHBhcmFtIFNJRAorCSAqIEByZXR1cm4gZ2V0IHRoZSB1c2VyIGJvdW5kIHRvIHRoaXMgc2Vzc2lvbgorCSAqLworCXB1YmxpYyBVc2VyIGdldFVzZXJTZWxmKFN0cmluZyBTSUQpIHsKKwkJdHJ5IHsKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCVVzZXIgdXMgPSB1c2Vyc0Rhby5nZXQodXNlcnNfaWQpOworCQkJCisJCQkvL3Jlc2V0IHNvbWUgb2JqZWN0cyB0aGF0IHRoZSBjbGllbnQgc2hvdWxkIG5vdCBrbm93CisJCQl1cy5zZXRTaXBVc2VyKG51bGwpOworCQkJCisJCQlyZXR1cm4gdXM7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2dldFVzZXJTZWxmXSIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIExvbmcgcmVzZXRVc2VyUHdkKFN0cmluZyBTSUQsIFN0cmluZyBlbWFpbCwgU3RyaW5nIGxvZ2luLAorCQkJU3RyaW5nIGFwcGxpbmspIHsKKwkJc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCXJldHVybiB1c2VyTWFuYWdlci5yZXNldFVzZXIoZW1haWwsIGxvZ2luLCBhcHBsaW5rKTsKKwl9CisKKwlwdWJsaWMgT2JqZWN0IGdldFVzZXJCeUhhc2goU3RyaW5nIFNJRCwgU3RyaW5nIGhhc2gpIHsKKwkJc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCXJldHVybiB1c2Vyc0Rhby5nZXRVc2VyQnlIYXNoKGhhc2gpOworCX0KKworCXB1YmxpYyBPYmplY3QgcmVzZXRQYXNzQnlIYXNoKFN0cmluZyBTSUQsIFN0cmluZyBoYXNoLCBTdHJpbmcgcGFzcykgeworCQlzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJcmV0dXJuIHVzZXJzRGFvLnJlc2V0UGFzc0J5SGFzaChoYXNoLCBwYXNzKTsKKwl9CisKKwkvKioKKwkgKiBnZXQgdXNlciBieSBpZCwgYWRtaW4gb25seQorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiBAcGFyYW0gdXNlcl9pZAorCSAqIEByZXR1cm4gVXNlciB3aXRoIHRoZSBpZCBnaXZlbgorCSAqLworCXB1YmxpYyBVc2VyIGdldFVzZXJCeUlkKFN0cmluZyBTSUQsIGxvbmcgdXNlcl9pZCkgeworCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQlyZXR1cm4gdXNlck1hbmFnZXIuY2hlY2tBZG1pbmdldFVzZXJCeUlkKHVzZXJfbGV2ZWwsIHVzZXJfaWQpOworCX0KKworCS8qKgorCSAqIHJlZnJlc2hlcyB0aGUgY3VycmVudCBTSUQKKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogQHJldHVybiAib2siIHN0cmluZyBpbiBjYXNlIG9mIHN1Y2Nlc3MsICJlcnJvciIgc3RyaW5nIGluIGNhc2Ugb2YgdGhlIGVycm9yCisJICovCisJcHVibGljIFN0cmluZyByZWZyZXNoU2Vzc2lvbihTdHJpbmcgU0lEKSB7CisJCXRyeSB7CisJCQlzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCXJldHVybiAib2siOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltyZWZyZXNoU2Vzc2lvbl0iLCBlcnIpOworCQl9CisJCXJldHVybiAiZXJyb3IiOworCX0KKworCS8qKgorCSAqIGdldCBhbGwgYXZhaWxpYmxlIFNhbHV0YXRpb25zCisJICogCisJICogQHBhcmFtIFNJRAorCSAqIEByZXR1cm4gYWxsIGF2YWlsaWJsZSBTYWx1dGF0aW9ucworCSAqLworCXB1YmxpYyBMaXN0PFNhbHV0YXRpb24+IGdldFVzZXJTYWx1dGF0aW9ucyhTdHJpbmcgU0lELCBsb25nIGxhbmd1YWdlX2lkKSB7CisJCXJldHVybiBzYWx1dGF0aW9ubWFuYWdlbWVudC5nZXRVc2VyU2FsdXRhdGlvbnMobGFuZ3VhZ2VfaWQpOworCX0KKworCS8qKgorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiBAcGFyYW0gc2VhcmNoY3JpdGVyaWEKKwkgKiAgICAgICAgICAgIGxvZ2luLGxhc3RuYW1lLGZpcnN0bmFtZSx1c2VyX2lkCisJICogQHBhcmFtIHNlYXJjaHN0cmluZworCSAqIEBwYXJhbSBtYXgKKwkgKiBAcGFyYW0gc3RhcnQKKwkgKiBAcGFyYW0gb3JkZXJieQorCSAqICAgICAgICAgICAgbG9naW4sbGFzdG5hbWUsZmlyc3RuYW1lLHVzZXJfaWQKKwkgKiBAcGFyYW0gYXNjCisJICogQHJldHVybiBMaXN0IG9mIHRoZSB1c2VycyBmb3VuZAorCSAqLworCXB1YmxpYyBMaXN0PFVzZXI+IHNlYXJjaFVzZXIoU3RyaW5nIFNJRCwgU3RyaW5nIHNlYXJjaGNyaXRlcmlhLAorCQkJU3RyaW5nIHNlYXJjaHN0cmluZywgaW50IG1heCwgaW50IHN0YXJ0LCBTdHJpbmcgb3JkZXJieSwgYm9vbGVhbiBhc2MpIHsKKwkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJcmV0dXJuIHVzZXJNYW5hZ2VyLnNlYXJjaFVzZXIodXNlcl9sZXZlbCwgc2VhcmNoY3JpdGVyaWEsCisJCQkJc2VhcmNoc3RyaW5nLCBtYXgsIHN0YXJ0LCBvcmRlcmJ5LCBhc2MpOworCX0KKworCS8qKgorCSAqIGdldCBhIGxpc3Qgb2YgYWxsIHVzZXJzIG9mIGFuIG9yZ2FuaXNhdGlvbgorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiBAcGFyYW0gb3JnYW5pc2F0aW9uX2lkCisJICogQHBhcmFtIHN0YXJ0CisJICogQHBhcmFtIG1heAorCSAqIEBwYXJhbSBvcmRlcmJ5CisJICogQHBhcmFtIGFzYworCSAqIEByZXR1cm4gbGlzdCBvZiBhbGwgdXNlcnMgb2YgYW4gb3JnYW5pc2F0aW9uCisJICovCisJcHVibGljIExpc3Q8VXNlcj4gZ2V0T3JnVXNlckxpc3QoU3RyaW5nIFNJRCwgbG9uZyBvcmdhbmlzYXRpb25faWQsCisJCQlpbnQgc3RhcnQsIGludCBtYXgsIFN0cmluZyBvcmRlcmJ5LCBib29sZWFuIGFzYykgeworCQlyZXR1cm4gb3JnYW5pc2F0aW9uTWFuYWdlci5nZXRVc2Vyc0J5T3JnYW5pc2F0aW9uSWQob3JnYW5pc2F0aW9uX2lkLAorCQkJCXN0YXJ0LCBtYXgsIG9yZGVyYnksIGFzYyk7CisJfQorCisJcHVibGljIExpc3Q8VXNlcj4gZ2V0VXNlckxpc3RCeU1vZEZvcm0oU3RyaW5nIFNJRCkgeworCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQlyZXR1cm4gdXNlck1hbmFnZXIuZ2V0VXNlckJ5TW9kKHVzZXJfbGV2ZWwsIHVzZXJzX2lkKTsKKwl9CisKKwkvKioKKwkgKiBnZXQgYSBsaXN0IG9mIGFsbCBvcmdhbmlzYXRpb25zIG9mIGFuIHVzZXIKKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogQHBhcmFtIGNsaWVudF91c2VyCisJICogQHBhcmFtIHN0YXJ0CisJICogQHBhcmFtIG1heAorCSAqIEBwYXJhbSBvcmRlcmJ5CisJICogQHBhcmFtIGFzYworCSAqIEByZXR1cm4gbGlzdCBvZiBhbGwgb3JnYW5pc2F0aW9ucyBvZiBhbiB1c2VyCisJICovCisJcHVibGljIExpc3Q8T3JnYW5pc2F0aW9uPiBnZXRPcmdhbmlzYXRpb25MaXN0QnlVc2VyKFN0cmluZyBTSUQsCisJCQlsb25nIGNsaWVudF91c2VyLCBpbnQgc3RhcnQsIGludCBtYXgsIFN0cmluZyBvcmRlcmJ5LCBib29sZWFuIGFzYykgeworCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCWxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQlyZXR1cm4gb3JnYW5pc2F0aW9uTWFuYWdlci5nZXRPcmdhbmlzYXRpb25zQnlVc2VySWQodXNlcl9sZXZlbCwKKwkJCQljbGllbnRfdXNlciwgc3RhcnQsIG1heCwgb3JkZXJieSwgYXNjKTsKKwl9CisKKwkvKioKKwkgKiBnZXRzIGEgbGlzdCBvZiBhbGwgbm90IGFzc2lnbmVkIG9yZ2FuaXNhdGlvbnMgb2YgYSB1c2VyCisJICogCisJICogQHBhcmFtIFNJRAorCSAqIEBwYXJhbSBjbGllbnRfdXNlcgorCSAqIEBwYXJhbSBzdGFydAorCSAqIEBwYXJhbSBtYXgKKwkgKiBAcGFyYW0gb3JkZXJieQorCSAqIEBwYXJhbSBhc2MKKwkgKiBAcmV0dXJuIGxpc3Qgb2YgYWxsIG5vdCBhc3NpZ25lZCBvcmdhbmlzYXRpb25zIG9mIGEgdXNlcgorCSAqLworCXB1YmxpYyBMaXN0PE9yZ2FuaXNhdGlvbj4gZ2V0UmVzdE9yZ2FuaXNhdGlvbkxpc3RCeVVzZXIoU3RyaW5nIFNJRCwKKwkJCWxvbmcgY2xpZW50X3VzZXIsIGludCBzdGFydCwgaW50IG1heCwgU3RyaW5nIG9yZGVyYnksIGJvb2xlYW4gYXNjKSB7CisJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCXJldHVybiBvcmdhbmlzYXRpb25NYW5hZ2VyLmdldFJlc3RPcmdhbmlzYXRpb25zQnlVc2VySWQodXNlcl9sZXZlbCwKKwkJCQljbGllbnRfdXNlciwgc3RhcnQsIG1heCwgb3JkZXJieSwgYXNjKTsKKwl9CisKKwkvKioKKwkgKiBnZXRzIGEgd2hvbGUgdXNlci1saXN0KGFkbWluLXJvbGUgb25seSkKKwkgKiAKKwkgKiBAcGFyYW0gU0lECisJICogQHBhcmFtIHN0YXJ0CisJICogQHBhcmFtIG1heAorCSAqIEBwYXJhbSBvcmRlcmJ5CisJICogQHJldHVybiB3aG9sZSB1c2VyLWxpc3QKKwkgKi8KKwlwdWJsaWMgU2VhcmNoUmVzdWx0PFVzZXI+IGdldFVzZXJMaXN0KFN0cmluZyBTSUQsIGludCBzdGFydCwgaW50IG1heCwKKwkJCVN0cmluZyBvcmRlcmJ5LCBib29sZWFuIGFzYykgeworCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQlyZXR1cm4gdXNlck1hbmFnZXIKKwkJCQkuZ2V0VXNlcnNMaXN0KHVzZXJfbGV2ZWwsIHN0YXJ0LCBtYXgsIG9yZGVyYnksIGFzYyk7CisJfQorCisJcHVibGljIFNlYXJjaFJlc3VsdDxVc2VyPiBnZXRVc2VyTGlzdFdpdGhTZWFyY2goU3RyaW5nIFNJRCwgaW50IHN0YXJ0LAorCQkJaW50IG1heCwgU3RyaW5nIG9yZGVyYnksIGJvb2xlYW4gYXNjLCBTdHJpbmcgc2VhcmNoKSB7CisJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCXJldHVybiB1c2VyTWFuYWdlci5nZXRVc2Vyc0xpc3RXaXRoU2VhcmNoKHVzZXJfbGV2ZWwsIHN0YXJ0LCBtYXgsCisJCQkJb3JkZXJieSwgYXNjLCBzZWFyY2gpOworCX0KKworCS8qKgorCSAqIGdldHMgYSB1c2VyLWxpc3QgYnkgc2VhcmNoIGNyaXRlcmlhCisJICogCisJICogQHBhcmFtIFNJRAorCSAqIEBwYXJhbSBzZWFyY2gKKwkgKiBAcGFyYW0gc3RhcnQKKwkgKiBAcGFyYW0gbWF4CisJICogQHBhcmFtIG9yZGVyYnkKKwkgKiBAcmV0dXJuIHVzZXItbGlzdCBieSBzZWFyY2ggY3JpdGVyaWEKKwkgKi8KKwlwdWJsaWMgU2VhcmNoUmVzdWx0PFVzZXI+IGdldEFsbFVzZXJCeVNlYXJjaFJhbmdlKFN0cmluZyBTSUQsCisJCQlTdHJpbmcgc2VhcmNoLCBpbnQgc3RhcnQsIGludCBtYXgsIFN0cmluZyBvcmRlcmJ5LCBib29sZWFuIGFzYykgeworCQlyZXR1cm4gdXNlck1hbmFnZXIuZ2V0QWxsVXNlckJ5UmFuZ2Uoc2VhcmNoLCBzdGFydCwgbWF4LCBvcmRlcmJ5LAorCQkJCWFzYyk7CisJfQorCisJLyoqCisJICogdXBkYXRlcyB0aGUgdXNlciBwcm9maWxlLCBldmVyeSB1c2VyIGNhbiB1cGRhdGUgaGlzIG93biBwcm9maWxlCisJICogCisJICogQHBhcmFtIFNJRAorCSAqIEBwYXJhbSB2YWx1ZXMKKwkgKiBAcmV0dXJuIHVzZXJfaWQgb3IgTlVMTCBvciBuZWdhdGl2IHZhbHVlIChlcnJvcl9pZCkKKwkgKi8KKwlwdWJsaWMgTG9uZyB1cGRhdGVVc2VyU2VsZlNtYWxsKFN0cmluZyBTSUQsCisJCQlAU3VwcHJlc3NXYXJuaW5ncygicmF3dHlwZXMiKSBPYmplY3RNYXAgdmFsdWVzKSB7CisJCXRyeSB7CisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJCWlmICh1c2VyX2xldmVsICE9IG51bGwgJiYgdXNlcl9sZXZlbCA+PSAxKSB7CisJCQkJcmV0dXJuIHVzZXJNYW5hZ2VyLnNhdmVPclVwZGF0ZVVzZXIobmV3IExvbmcoMyksIHZhbHVlcywKKwkJCQkJCXVzZXJzX2lkKTsKKwkJCX0gZWxzZSB7CisJCQkJcmV0dXJuIG5ldyBMb25nKC0yKTsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbdXBkYXRlVXNlclNlbGZTbWFsbF0gIiArIGVycik7CisJCQlyZXR1cm4gbmV3IExvbmcoLTEpOworCQl9CisJfQorCisJLyoqCisJICogCisJICogQHBhcmFtIFNJRAorCSAqIEBwYXJhbSByZWdPYmplY3RPYmoKKwkgKiBAcmV0dXJuIC0gaWQgb2YgdGhlIHVzZXIgdXBkYXRlZCBpbiBjYXNlIG9mIHN1Y2Nlc3MsIG51bGwgb3RoZXJ3aXNlCisJICovCisJQFN1cHByZXNzV2FybmluZ3MoeyAicmF3dHlwZXMiIH0pCisJcHVibGljIExvbmcgc2F2ZU9yVXBkYXRlVXNlcihTdHJpbmcgU0lELCBPYmplY3QgcmVnT2JqZWN0T2JqKSB7CisJCXRyeSB7CisJCQlMaW5rZWRIYXNoTWFwIGFyZ09iamVjdE1hcCA9IChMaW5rZWRIYXNoTWFwKSByZWdPYmplY3RPYmo7CisJCQlMb25nIHVzZXJfaWRDbGllbnQgPSBudWxsOworCQkJaWYgKGFyZ09iamVjdE1hcC5nZXQoInVzZXJfaWRDbGllbnQiKSAhPSBudWxsKSB7CisJCQkJdXNlcl9pZENsaWVudCA9IExvbmcudmFsdWVPZigKKwkJCQkJCWFyZ09iamVjdE1hcC5nZXQoInVzZXJfaWRDbGllbnQiKS50b1N0cmluZygpKQorCQkJCQkJLmxvbmdWYWx1ZSgpOworCQkJfQorCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisKKwkJCUxpc3Q8Pz4gb3JnTyA9IChMaXN0PD8+KSBhcmdPYmplY3RNYXAuZ2V0KCJvcmdhbmlzYXRpb25zIik7CisJCQlMaXN0PExvbmc+IG9yZ0lkcyA9IG5ldyBBcnJheUxpc3Q8TG9uZz4ob3JnTy5zaXplKCkpOworCQkJZm9yIChPYmplY3QgbyA6IG9yZ08pIHsKKwkJCQlvcmdJZHMuYWRkKExvbmcudmFsdWVPZigoSW50ZWdlcikgbykpOworCQkJfQorCQkJRGF0ZSBhZ2UgPSBudWxsOworCQkJaWYgKGFyZ09iamVjdE1hcC5nZXQoInVzZXJhZ2UiKSBpbnN0YW5jZW9mIERhdGUpIHsKKwkJCQlhZ2UgPSAoRGF0ZSkgYXJnT2JqZWN0TWFwLmdldCgidXNlcmFnZSIpOworCQkJfQorCisJCQlsb2cuZGVidWcoIk1haWwgOiAiICsgYXJnT2JqZWN0TWFwLmdldCgiZW1haWwiKS50b1N0cmluZygpKTsKKwkJCWxvZy5kZWJ1ZygiUGhvbmUgOiAiICsgYXJnT2JqZWN0TWFwLmdldCgicGhvbmUiKS50b1N0cmluZygpKTsKKworCQkJbG9uZyB1c2VySWQ7CisJCQlpZiAodXNlcl9pZENsaWVudCA9PSBudWxsIHx8IHVzZXJfaWRDbGllbnQgPT0gMCkgeworCQkJCXVzZXJJZCA9IHVzZXJNYW5hZ2VyLnJlZ2lzdGVyVXNlckluaXQoCisJCQkJCQl1c2VyX2xldmVsLAorCQkJCQkJTG9uZy52YWx1ZU9mKGFyZ09iamVjdE1hcC5nZXQoImxldmVsX2lkIikudG9TdHJpbmcoKSkKKwkJCQkJCQkJLmxvbmdWYWx1ZSgpLAorCQkJCQkJSW50ZWdlci52YWx1ZU9mKAorCQkJCQkJCQlhcmdPYmplY3RNYXAuZ2V0KCJhdmFpbGlibGUiKS50b1N0cmluZygpKQorCQkJCQkJCQkuaW50VmFsdWUoKSwKKwkJCQkJCUludGVnZXIudmFsdWVPZihhcmdPYmplY3RNYXAuZ2V0KCJzdGF0dXMiKS50b1N0cmluZygpKQorCQkJCQkJCQkuaW50VmFsdWUoKSwKKwkJCQkJCWFyZ09iamVjdE1hcC5nZXQoImxvZ2luIikudG9TdHJpbmcoKSwKKwkJCQkJCWFyZ09iamVjdE1hcC5nZXQoInBhc3N3b3JkIikudG9TdHJpbmcoKSwKKwkJCQkJCWFyZ09iamVjdE1hcC5nZXQoImxhc3RuYW1lIikudG9TdHJpbmcoKSwKKwkJCQkJCWFyZ09iamVjdE1hcC5nZXQoImZpcnN0bmFtZSIpLnRvU3RyaW5nKCksCisJCQkJCQlhcmdPYmplY3RNYXAuZ2V0KCJlbWFpbCIpLnRvU3RyaW5nKCksCisJCQkJCQlhZ2UsCisJCQkJCQlhcmdPYmplY3RNYXAuZ2V0KCJzdHJlZXQiKS50b1N0cmluZygpLAorCQkJCQkJYXJnT2JqZWN0TWFwLmdldCgiYWRkaXRpb25hbG5hbWUiKS50b1N0cmluZygpLAorCQkJCQkJYXJnT2JqZWN0TWFwLmdldCgiZmF4IikudG9TdHJpbmcoKSwKKwkJCQkJCWFyZ09iamVjdE1hcC5nZXQoInppcCIpLnRvU3RyaW5nKCksCisJCQkJCQlMb25nLnZhbHVlT2YoYXJnT2JqZWN0TWFwLmdldCgic3RhdGVzX2lkIikudG9TdHJpbmcoKSkKKwkJCQkJCQkJLmxvbmdWYWx1ZSgpLAorCQkJCQkJYXJnT2JqZWN0TWFwLmdldCgidG93biIpLnRvU3RyaW5nKCksCisJCQkJCQluZXcgTG9uZyhhcmdPYmplY3RNYXAuZ2V0KCJsYW5ndWFnZV9pZCIpLnRvU3RyaW5nKCkpLAorCQkJCQkJdHJ1ZSwKKwkJCQkJCW9yZ0lkcywKKwkJCQkJCWFyZ09iamVjdE1hcC5nZXQoInBob25lIikudG9TdHJpbmcoKSwKKwkJCQkJCUJvb2xlYW4udmFsdWVPZihhcmdPYmplY3RNYXAuZ2V0KCJzZW5kU01TIikudG9TdHJpbmcoKSkKKwkJCQkJCQkJLmJvb2xlYW5WYWx1ZSgpLAorCQkJCQkJIiIsCisJCQkJCQlmYWxzZSwKKwkJCQkJCWFyZ09iamVjdE1hcC5nZXQoImpOYW1lVGltZVpvbmUiKS50b1N0cmluZygpLAorCQkJCQkJQm9vbGVhbi52YWx1ZU9mKAorCQkJCQkJCQlhcmdPYmplY3RNYXAuZ2V0KCJmb3JjZVRpbWVab25lQ2hlY2siKQorCQkJCQkJCQkJCS50b1N0cmluZygpKS5ib29sZWFuVmFsdWUoKSwKKwkJCQkJCWFyZ09iamVjdE1hcC5nZXQoInVzZXJPZmZlcnMiKS50b1N0cmluZygpLAorCQkJCQkJYXJnT2JqZWN0TWFwLmdldCgidXNlclNlYXJjaHMiKS50b1N0cmluZygpLAorCQkJCQkJQm9vbGVhbi52YWx1ZU9mKAorCQkJCQkJCQlhcmdPYmplY3RNYXAuZ2V0KCJzaG93Q29udGFjdERhdGEiKS50b1N0cmluZygpKQorCQkJCQkJCQkuYm9vbGVhblZhbHVlKCksCisJCQkJCQlCb29sZWFuLnZhbHVlT2YoCisJCQkJCQkJCWFyZ09iamVjdE1hcC5nZXQoInNob3dDb250YWN0RGF0YVRvQ29udGFjdHMiKQorCQkJCQkJCQkJCS50b1N0cmluZygpKS5ib29sZWFuVmFsdWUoKSk7CisJCQl9IGVsc2UgeworCQkJCXVzZXJJZCA9IHVzZXJNYW5hZ2VyLnVwZGF0ZVVzZXIoCisJCQkJCQl1c2VyX2xldmVsLAorCQkJCQkJdXNlcl9pZENsaWVudCwKKwkJCQkJCUxvbmcudmFsdWVPZihhcmdPYmplY3RNYXAuZ2V0KCJsZXZlbF9pZCIpLnRvU3RyaW5nKCkpCisJCQkJCQkJCS5sb25nVmFsdWUoKSwKKwkJCQkJCWFyZ09iamVjdE1hcC5nZXQoImxvZ2luIikudG9TdHJpbmcoKSwKKwkJCQkJCWFyZ09iamVjdE1hcC5nZXQoInBhc3N3b3JkIikudG9TdHJpbmcoKSwKKwkJCQkJCWFyZ09iamVjdE1hcC5nZXQoImxhc3RuYW1lIikudG9TdHJpbmcoKSwKKwkJCQkJCWFyZ09iamVjdE1hcC5nZXQoImZpcnN0bmFtZSIpLnRvU3RyaW5nKCksCisJCQkJCQlhZ2UsCisJCQkJCQlhcmdPYmplY3RNYXAuZ2V0KCJzdHJlZXQiKS50b1N0cmluZygpLAorCQkJCQkJYXJnT2JqZWN0TWFwLmdldCgiYWRkaXRpb25hbG5hbWUiKS50b1N0cmluZygpLAorCQkJCQkJYXJnT2JqZWN0TWFwLmdldCgiemlwIikudG9TdHJpbmcoKSwKKwkJCQkJCUxvbmcudmFsdWVPZihhcmdPYmplY3RNYXAuZ2V0KCJzdGF0ZXNfaWQiKS50b1N0cmluZygpKQorCQkJCQkJCQkubG9uZ1ZhbHVlKCksCisJCQkJCQlhcmdPYmplY3RNYXAuZ2V0KCJ0b3duIikudG9TdHJpbmcoKSwKKwkJCQkJCW5ldyBMb25nKGFyZ09iamVjdE1hcC5nZXQoImxhbmd1YWdlX2lkIikudG9TdHJpbmcoKSksCisJCQkJCQlJbnRlZ2VyLnZhbHVlT2YoCisJCQkJCQkJCWFyZ09iamVjdE1hcC5nZXQoImF2YWlsaWJsZSIpLnRvU3RyaW5nKCkpCisJCQkJCQkJCS5pbnRWYWx1ZSgpLAorCQkJCQkJYXJnT2JqZWN0TWFwLmdldCgidGVsZWZvbiIpLnRvU3RyaW5nKCksCisJCQkJCQlhcmdPYmplY3RNYXAuZ2V0KCJmYXgiKS50b1N0cmluZygpLAorCQkJCQkJYXJnT2JqZWN0TWFwLmdldCgibW9iaWwiKS50b1N0cmluZygpLAorCQkJCQkJYXJnT2JqZWN0TWFwLmdldCgiZW1haWwiKS50b1N0cmluZygpLAorCQkJCQkJYXJnT2JqZWN0TWFwLmdldCgiY29tbWVudCIpLnRvU3RyaW5nKCksCisJCQkJCQlJbnRlZ2VyLnZhbHVlT2YoYXJnT2JqZWN0TWFwLmdldCgic3RhdHVzIikudG9TdHJpbmcoKSkKKwkJCQkJCQkJLmludFZhbHVlKCksCisJCQkJCQlvcmdJZHMsCisJCQkJCQlJbnRlZ2VyLnZhbHVlT2YoCisJCQkJCQkJCWFyZ09iamVjdE1hcC5nZXQoInNhbHV0YXRpb25zX2lkIikudG9TdHJpbmcoKSkKKwkJCQkJCQkJLmludFZhbHVlKCksCisJCQkJCQlhcmdPYmplY3RNYXAuZ2V0KCJwaG9uZSIpLnRvU3RyaW5nKCksCisJCQkJCQlCb29sZWFuLnZhbHVlT2YoYXJnT2JqZWN0TWFwLmdldCgic2VuZFNNUyIpLnRvU3RyaW5nKCkpCisJCQkJCQkJCS5ib29sZWFuVmFsdWUoKSwKKwkJCQkJCWFyZ09iamVjdE1hcC5nZXQoImpOYW1lVGltZVpvbmUiKS50b1N0cmluZygpLAorCQkJCQkJQm9vbGVhbi52YWx1ZU9mKAorCQkJCQkJCQlhcmdPYmplY3RNYXAuZ2V0KCJmb3JjZVRpbWVab25lQ2hlY2siKQorCQkJCQkJCQkJCS50b1N0cmluZygpKS5ib29sZWFuVmFsdWUoKSwKKwkJCQkJCWFyZ09iamVjdE1hcC5nZXQoInVzZXJPZmZlcnMiKS50b1N0cmluZygpLAorCQkJCQkJYXJnT2JqZWN0TWFwLmdldCgidXNlclNlYXJjaHMiKS50b1N0cmluZygpLAorCQkJCQkJQm9vbGVhbi52YWx1ZU9mKAorCQkJCQkJCQlhcmdPYmplY3RNYXAuZ2V0KCJzaG93Q29udGFjdERhdGEiKS50b1N0cmluZygpKQorCQkJCQkJCQkuYm9vbGVhblZhbHVlKCksCisJCQkJCQlCb29sZWFuLnZhbHVlT2YoCisJCQkJCQkJCWFyZ09iamVjdE1hcC5nZXQoInNob3dDb250YWN0RGF0YVRvQ29udGFjdHMiKQorCQkJCQkJCQkJCS50b1N0cmluZygpKS5ib29sZWFuVmFsdWUoKSk7CisJCQl9CisKKwkJCXJldHVybiB1c2VySWQ7CisJCQkKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisJCQlsb2cuZXJyb3IoIltzYXZlT3JVcGRhdGVVc2VyXTogIiwgZXgpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCS8qKgorCSAqIGRlbGV0ZXMgYSB1c2VyCisJICogCisJICogQHBhcmFtIFNJRAorCSAqIEBwYXJhbSB1c2VyX2lkQ2xpZW50CisJICogQHJldHVybiAtIGlkIG9mIHRoZSB1c2VyIGRlbGV0ZWQgaW4gY2FzZSBvZiBzdWNjZXNzLCBlcnJvciBjb2RlIG90aGVyd2lzZQorCSAqLworCXB1YmxpYyBMb25nIGRlbGV0ZVVzZXJBZG1pbihTdHJpbmcgU0lELCBMb25nIHVzZXJfaWRDbGllbnQpIHsKKwkJbG9nLmRlYnVnKCJkZWxldGVVc2VyQWRtaW4iKTsKKwkJdHJ5IHsKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCisJCQkvLyBhZG1pbnMgb25seQorCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tBZG1pbkxldmVsKHVzZXJfbGV2ZWwpKSB7CisJCQkJLy8gbm8gc2VsZiBkZXN0cnVjdGlvbiA7LSkKKwkJCQlpZiAoIXVzZXJzX2lkLmVxdWFscyh1c2VyX2lkQ2xpZW50KSkgeworCisJCQkJCS8vIFNldHRpbmcgdXNlciBkZWxldGVkCisJCQkJCUxvbmcgdXNlcklkID0gdXNlcnNEYW8uZGVsZXRlVXNlcklEKHVzZXJfaWRDbGllbnQpOworCisJCQkJCXJldHVybiB1c2VySWQ7CisJCQkJfSBlbHNlIHsKKwkJCQkJcmV0dXJuIG5ldyBMb25nKC0zOCk7CisJCQkJfQorCQkJfSBlbHNlIHsKKwkJCQlyZXR1cm4gbmV3IExvbmcoLTExKTsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbZGVsZXRlVXNlckFkbWluXSIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLyoqCisJICoga2lja3MgYSB1c2VyIGZyb20gdGhlIHNlcnZlciwgYWxzbyBmcm9tIHNsYXZlcyBpZiBuZWVkZWQsIHRoaXMgbWV0aG9kIGlzCisJICogb25seSBpbnZva2VkIGJ5IHRoZSBjb25uZWN0aW9uIGFkbWluaXN0cmF0aW9uIFVJCisJICogCisJICogQHBhcmFtIFNJRAorCSAqIEBwYXJhbSBzdHJlYW1pZAorCSAqIEBwYXJhbSBzZXJ2ZXJJZAorCSAqICAgICAgICAgICAgMCBtZWFucyB0aGUgc2Vzc2lvbiBpcyBsb2NhbGx5LCBvdGhlcndpc2Ugd2UgaGF2ZSB0byBwZXJmb3JtIGEKKwkgKiAgICAgICAgICAgIFJFU1QgY2FsbAorCSAqIEByZXR1cm4gLSB0cnVlIGlmIHVzZXIgaGFzIHN1ZmZpY2llbnQgcGVybWlzc2lvbnMsIGZhbHNlIG90aGVyd2lzZQorCSAqLworCXB1YmxpYyBCb29sZWFuIGtpY2tVc2VyQnlTdHJlYW1JZChTdHJpbmcgU0lELCBTdHJpbmcgc3RyZWFtaWQsIGxvbmcgc2VydmVySWQpIHsKKwkJdHJ5IHsKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQkJLy8gYWRtaW5zIG9ubHkKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrQWRtaW5MZXZlbCh1c2VyX2xldmVsKSkgeworCisJCQkJaWYgKHNlcnZlcklkID09IDApIHsKKworCQkJCQlDbGllbnQgcmNsID0gdGhpcy5zZXNzaW9uTWFuYWdlcgorCQkJCQkJCS5nZXRDbGllbnRCeVN0cmVhbUlkKHN0cmVhbWlkLCBudWxsKTsKKworCQkJCQlpZiAocmNsID09IG51bGwpIHsKKwkJCQkJCXJldHVybiB0cnVlOworCQkJCQl9CisJCQkJCVN0cmluZyBzY29wZU5hbWUgPSAiaGliZXJuYXRlIjsKKwkJCQkJaWYgKHJjbC5nZXRSb29tX2lkKCkgIT0gbnVsbCkgeworCQkJCQkJc2NvcGVOYW1lID0gcmNsLmdldFJvb21faWQoKS50b1N0cmluZygpOworCQkJCQl9CisJCQkJCUlTY29wZSBjdXJyZW50U2NvcGUgPSB0aGlzLnNjb3BlQXBwbGljYXRpb25BZGFwdGVyCisJCQkJCQkJLmdldFJvb21TY29wZShzY29wZU5hbWUpOworCisJCQkJCUhhc2hNYXA8SW50ZWdlciwgU3RyaW5nPiBtZXNzYWdlT2JqID0gbmV3IEhhc2hNYXA8SW50ZWdlciwgU3RyaW5nPigpOworCQkJCQltZXNzYWdlT2JqLnB1dCgwLCAia2ljayIpOworCQkJCQl0aGlzLnNjb3BlQXBwbGljYXRpb25BZGFwdGVyLnNlbmRNZXNzYWdlQnlJZChtZXNzYWdlT2JqLAorCQkJCQkJCXN0cmVhbWlkLCBjdXJyZW50U2NvcGUpOworCisJCQkJCXRoaXMuc2NvcGVBcHBsaWNhdGlvbkFkYXB0ZXIucm9vbUxlYXZlQnlTY29wZShyY2wsCisJCQkJCQkJY3VycmVudFNjb3BlLCB0cnVlKTsKKworCQkJCQlyZXR1cm4gdHJ1ZTsKKworCQkJCX0gZWxzZSB7CisKKwkJCQkJU2VydmVyIHNlcnZlciA9IHNlcnZlckRhby5nZXQoc2VydmVySWQpOworCQkJCQlDbGllbnQgcmNsID0gc2Vzc2lvbk1hbmFnZXIuZ2V0Q2xpZW50QnlTdHJlYW1JZCgKKwkJCQkJCQlzdHJlYW1pZCwgc2VydmVyKTsKKwkJCQkJc2xhdmVIVFRQQ29ubmVjdGlvbk1hbmFnZXIua2lja1NsYXZlVXNlcihzZXJ2ZXIsIHJjbC5nZXRQdWJsaWNTSUQoKSk7CisJCQkJCQorCQkJCQkvLyB0cnVlIG1lYW5zIG9ubHkgdGhlIFJFU1QgY2FsbCBpcyBwZXJmb3JtZWQsIGl0IGlzIG5vCisJCQkJCS8vIGNvbmZpcm1hdGlvbiB0aGF0IHRoZSB1c2VyIGlzIHJlYWxseSBraWNrZWQgZnJvbSB0aGUKKwkJCQkJLy8gc2xhdmUKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJfQorCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltraWNrVXNlckJ5U3RyZWFtSWRdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gZmFsc2U7CisJfQorCisJcHVibGljIFVzZXIgdXBkYXRlVXNlclNlbGZUaW1lWm9uZShTdHJpbmcgU0lELCBTdHJpbmcgam5hbWUpIHsKKwkJdHJ5IHsKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQkJLy8gdXNlcnMgb25seQorCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tVc2VyTGV2ZWwodXNlcl9sZXZlbCkpIHsKKworCQkJCVVzZXIgdXMgPSB1c2VyTWFuYWdlci5nZXRVc2VyQnlJZCh1c2Vyc19pZCk7CisKKwkJCQl1cy5zZXRPbVRpbWVab25lKG9tVGltZVpvbmVEYW9JbXBsLmdldE9tVGltZVpvbmUoam5hbWUpKTsKKwkJCQl1cy5zZXRGb3JjZVRpbWVab25lQ2hlY2soZmFsc2UpOworCQkJCXVzLnNldFVwZGF0ZXRpbWUobmV3IERhdGUoKSk7CisKKwkJCQl1c2VyTWFuYWdlci51cGRhdGVVc2VyKHVzKTsKKwkJCQkKKwkJCQlyZXR1cm4gdXM7CisKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbdXBkYXRlVXNlclRpbWVab25lXSIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIFNlYXJjaFJlc3VsdDxVc2VyPiBzZWFyY2hVc2VyUHJvZmlsZShTdHJpbmcgU0lELCBTdHJpbmcgc2VhcmNoVHh0LAorCQkJU3RyaW5nIHVzZXJPZmZlcnMsIFN0cmluZyB1c2VyU2VhcmNocywgU3RyaW5nIG9yZGVyQnksIGludCBzdGFydCwKKwkJCWludCBtYXgsIGJvb2xlYW4gYXNjKSB7CisJCXRyeSB7CisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJCS8vIHVzZXJzIG9ubHkKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrVXNlckxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlTZWFyY2hSZXN1bHQ8VXNlcj4gc2VhcmNoUmVzdWx0ID0gbmV3IFNlYXJjaFJlc3VsdDxVc2VyPigpOworCQkJCXNlYXJjaFJlc3VsdC5zZXRPYmplY3ROYW1lKFVzZXIuY2xhc3MuZ2V0TmFtZSgpKTsKKwkJCQlMaXN0PFVzZXI+IHVzZXJMaXN0ID0gdXNlck1hbmFnZXIuc2VhcmNoVXNlclByb2ZpbGUoCisJCQkJCQlzZWFyY2hUeHQsIHVzZXJPZmZlcnMsIHVzZXJTZWFyY2hzLCBvcmRlckJ5LCBzdGFydCwKKwkJCQkJCW1heCwgYXNjKTsKKwkJCQlzZWFyY2hSZXN1bHQuc2V0UmVzdWx0KHVzZXJMaXN0KTsKKwkJCQlMb25nIHJlc3VsdEludCA9IHVzZXJNYW5hZ2VyLnNlYXJjaENvdW50VXNlclByb2ZpbGUoCisJCQkJCQlzZWFyY2hUeHQsIHVzZXJPZmZlcnMsIHVzZXJTZWFyY2hzKTsKKwkJCQlzZWFyY2hSZXN1bHQuc2V0UmVjb3JkcyhyZXN1bHRJbnQpOworCisJCQkJcmV0dXJuIHNlYXJjaFJlc3VsdDsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbc2VhcmNoVXNlclByb2ZpbGVdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgTG9uZyByZXF1ZXN0VXNlclRvQ29udGFjdExpc3QoU3RyaW5nIFNJRCwgTG9uZyB1c2VyVG9BZGRfaWQsCisJCQlTdHJpbmcgZG9tYWluLCBTdHJpbmcgcG9ydCwgU3RyaW5nIHdlYmFwcCkgeworCQl0cnkgeworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCQkvLyB1c2VycyBvbmx5CisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1VzZXJMZXZlbCh1c2VyX2xldmVsKSkgeworCisJCQkJTG9uZyBjb3VudENvbnRhY3RzID0gdXNlckNvbnRhY3RzRGFvLmNoZWNrVXNlckNvbnRhY3RzKAorCQkJCQkJdXNlclRvQWRkX2lkLCB1c2Vyc19pZCk7CisKKwkJCQlpZiAoY291bnRDb250YWN0cyAhPSBudWxsICYmIGNvdW50Q29udGFjdHMgPiAwKSB7CisJCQkJCXJldHVybiAtNDVMOworCQkJCX0KKworCQkJCVN0cmluZyBoYXNoID0gY3J5cHRNYW5hZ2VyCisJCQkJCQkuZ2V0SW5zdGFuY2VPZkNyeXB0KCkKKwkJCQkJCS5jcmVhdGVQYXNzUGhyYXNlKAorCQkJCQkJCQlDYWxlbmRhclBhdHRlcm5zCisJCQkJCQkJCQkJLmdldERhdGVXaXRoVGltZUJ5TWlsaVNlY29uZHMobmV3IERhdGUoKSkpOworCisJCQkJTG9uZyB1c2VyQ29udGFjdElkID0gdXNlckNvbnRhY3RzRGFvLmFkZFVzZXJDb250YWN0KAorCQkJCQkJdXNlclRvQWRkX2lkLCB1c2Vyc19pZCwgdHJ1ZSwgaGFzaCk7CisKKwkJCQlVc2VyIHVzZXIgPSB1c2VyTWFuYWdlci5nZXRVc2VyQnlJZCh1c2Vyc19pZCk7CisKKwkJCQlVc2VyIHVzZXJUb0FkZCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJCeUlkKHVzZXJUb0FkZF9pZCk7CisKKwkJCQlMb25nIGxhbmd1YWdlX2lkID0gdXNlclRvQWRkLmdldExhbmd1YWdlX2lkKCk7CisJCQkJaWYgKGxhbmd1YWdlX2lkID09IG51bGwpIHsKKwkJCQkJbGFuZ3VhZ2VfaWQgPSBjb25maWd1cmF0aW9uRGFvLmdldENvbmZWYWx1ZSgiZGVmYXVsdF9sYW5nX2lkIiwgTG9uZy5jbGFzcywgIjEiKTsKKwkJCQl9CisKKwkJCQlTdHJpbmcgbWVzc2FnZSA9ICIiOworCisJCQkJRmllbGRsYW5ndWFnZXN2YWx1ZXMgZlZhbHVlMTE5MiA9IGZpZWxkTWFuYWdlcgorCQkJCQkJLmdldEZpZWxkQnlJZEFuZExhbmd1YWdlKDExOTJMLCBsYW5ndWFnZV9pZCk7CisJCQkJRmllbGRsYW5ndWFnZXN2YWx1ZXMgZlZhbHVlMTE5MyA9IGZpZWxkTWFuYWdlcgorCQkJCQkJLmdldEZpZWxkQnlJZEFuZExhbmd1YWdlKDExOTNMLCBsYW5ndWFnZV9pZCk7CisJCQkJRmllbGRsYW5ndWFnZXN2YWx1ZXMgZlZhbHVlMTE5MCA9IGZpZWxkTWFuYWdlcgorCQkJCQkJLmdldEZpZWxkQnlJZEFuZExhbmd1YWdlKDExOTBMLCBsYW5ndWFnZV9pZCk7CisJCQkJRmllbGRsYW5ndWFnZXN2YWx1ZXMgZlZhbHVlMTE5MSA9IGZpZWxkTWFuYWdlcgorCQkJCQkJLmdldEZpZWxkQnlJZEFuZExhbmd1YWdlKDExOTFMLCBsYW5ndWFnZV9pZCk7CisJCQkJRmllbGRsYW5ndWFnZXN2YWx1ZXMgZlZhbHVlMTE5NiA9IGZpZWxkTWFuYWdlcgorCQkJCQkJLmdldEZpZWxkQnlJZEFuZExhbmd1YWdlKDExOTZMLCBsYW5ndWFnZV9pZCk7CisKKwkJCQltZXNzYWdlICs9IGZWYWx1ZTExOTIuZ2V0VmFsdWUoKSArICIgIgorCQkJCQkJKyB1c2VyVG9BZGQuZ2V0Rmlyc3RuYW1lKCkgKyAiICIKKwkJCQkJCSsgdXNlclRvQWRkLmdldExhc3RuYW1lKCkgKyAiPGJyLz48YnIvPiI7CisJCQkJbWVzc2FnZSArPSB1c2VyLmdldEZpcnN0bmFtZSgpICsgIiAiICsgdXNlci5nZXRMYXN0bmFtZSgpICsgIiAiCisJCQkJCQkrIGZWYWx1ZTExOTMuZ2V0VmFsdWUoKSArICI8YnIvPiI7CisJCQkJbWVzc2FnZSArPSBmaWVsZE1hbmFnZXIuZ2V0U3RyaW5nKDExOTRMLCBsYW5ndWFnZV9pZCkKKwkJCQkJCSsgIjxici8+IjsKKworCQkJCVN0cmluZyBiYXNlVVJMID0gImh0dHA6Ly8iICsgZG9tYWluICsgIjoiICsgcG9ydCArIHdlYmFwcDsKKwkJCQlpZiAocG9ydC5lcXVhbHMoIjgwIikpIHsKKwkJCQkJYmFzZVVSTCA9ICJodHRwOi8vIiArIGRvbWFpbiArIHdlYmFwcDsKKwkJCQl9IGVsc2UgaWYgKHBvcnQuZXF1YWxzKCI0NDMiKSkgeworCQkJCQliYXNlVVJMID0gImh0dHBzOi8vIiArIGRvbWFpbiArIHdlYmFwcDsKKwkJCQl9CisKKwkJCQlwcml2YXRlTWVzc2FnZXNEYW8KKwkJCQkJCS5hZGRQcml2YXRlTWVzc2FnZSgKKwkJCQkJCQkJdXNlci5nZXRGaXJzdG5hbWUoKSArICIgIiArIHVzZXIuZ2V0TGFzdG5hbWUoKQorCQkJCQkJCQkJCSsgIiAiICsgZlZhbHVlMTE5My5nZXRWYWx1ZSgpLCBtZXNzYWdlLAorCQkJCQkJCQkwTCwgdXNlciwgdXNlclRvQWRkLCB1c2VyVG9BZGQsIGZhbHNlLCBudWxsLAorCQkJCQkJCQl0cnVlLCB1c2VyQ29udGFjdElkLCB1c2VyVG9BZGQuZ2V0QWRyZXNzZXMoKQorCQkJCQkJCQkJCS5nZXRFbWFpbCgpKTsKKworCQkJCVN0cmluZyBsaW5rID0gYmFzZVVSTCArICI/Y3VzZXI9IiArIGhhc2g7CisKKwkJCQlTdHJpbmcgYWNjZXB0X2xpbmsgPSBsaW5rICsgIiZ0QWNjZXB0PXllcyI7CisJCQkJU3RyaW5nIGRlbnlfbGluayA9IGxpbmsgKyAiJnRBY2NlcHQ9bm8iOworCisJCQkJU3RyaW5nIGFMaW5rSFRNTCA9ICI8YSBocmVmPSciICsgYWNjZXB0X2xpbmsgKyAiJz4iCisJCQkJCQkrIGZWYWx1ZTExOTAuZ2V0VmFsdWUoKSArICI8L2E+PGJyLz4iOworCQkJCVN0cmluZyBkZW55TGlua0hUTUwgPSAiPGEgaHJlZj0nIiArIGRlbnlfbGluayArICInPiIKKwkJCQkJCSsgZlZhbHVlMTE5MS5nZXRWYWx1ZSgpICsgIjwvYT48YnIvPiI7CisJCQkJU3RyaW5nIHByb2ZpbGVMaW5rSFRNTCA9ICI8YSBocmVmPSciICsgbGluayArICInPiIKKwkJCQkJCSsgZlZhbHVlMTE5Ni5nZXRWYWx1ZSgpICsgIjwvYT48YnIvPiI7CisKKwkJCQlTdHJpbmcgdGVtcGxhdGUgPSByZXF1ZXN0Q29udGFjdFRlbXBsYXRlCisJCQkJCQkuZ2V0UmVxdWVzdENvbnRhY3RUZW1wbGF0ZShtZXNzYWdlLCBhTGlua0hUTUwsCisJCQkJCQkJCWRlbnlMaW5rSFRNTCwgcHJvZmlsZUxpbmtIVE1MKTsKKworCQkJCWlmICh1c2VyVG9BZGQuZ2V0QWRyZXNzZXMoKSAhPSBudWxsKSB7CisJCQkJCW1haWxIYW5kbGVyLnNlbmQodXNlclRvQWRkLmdldEFkcmVzc2VzKCkuZ2V0RW1haWwoKSwKKwkJCQkJCQl1c2VyLmdldEZpcnN0bmFtZSgpICsgIiAiICsgdXNlci5nZXRMYXN0bmFtZSgpCisJCQkJCQkJCQkrICIgIiArIGZWYWx1ZTExOTMuZ2V0VmFsdWUoKSwgdGVtcGxhdGUpOworCQkJCX0KKworCQkJCXJldHVybiB1c2VyQ29udGFjdElkOworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltyZXF1ZXN0dXNlclRvQ29udGFjdExpc3RdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgTGlzdDxVc2VyQ29udGFjdD4gZ2V0UGVuZGluZ1VzZXJDb250YWN0cyhTdHJpbmcgU0lEKSB7CisJCXRyeSB7CisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJCS8vIHVzZXJzIG9ubHkKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrVXNlckxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlMaXN0PFVzZXJDb250YWN0PiB1TGlzdCA9IHVzZXJDb250YWN0c0RhbworCQkJCQkJLmdldENvbnRhY3RSZXF1ZXN0c0J5VXNlckFuZFN0YXR1cyh1c2Vyc19pZCwgdHJ1ZSk7CisKKwkJCQlyZXR1cm4gdUxpc3Q7CisJCQl9CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbZ2V0UGVuZGluZ1VzZXJDb250YWN0XSIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIE9iamVjdCBjaGFuZ2VVc2VyQ29udGFjdEJ5SGFzaChTdHJpbmcgU0lELCBTdHJpbmcgaGFzaCwKKwkJCUJvb2xlYW4gc3RhdHVzKSB7CisJCXRyeSB7CisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJCS8vIHVzZXJzIG9ubHkKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrVXNlckxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlVc2VyQ29udGFjdCB1c2VyQ29udGFjdCA9IHVzZXJDb250YWN0c0RhbworCQkJCQkJLmdldENvbnRhY3RzQnlIYXNoKGhhc2gpOworCisJCQkJaWYgKHVzZXJDb250YWN0ID09IG51bGwpIHsKKworCQkJCQlsb2cuZXJyb3IoImNoYW5nZVVzZXJDb250YWN0QnlIYXNoICIgKyBoYXNoKTsKKworCQkJCQlyZXR1cm4gLTQ4TDsKKwkJCQl9CisKKwkJCQlpZiAodXNlckNvbnRhY3QuZ2V0Q29udGFjdCgpLmdldFVzZXJfaWQoKS5lcXVhbHModXNlcnNfaWQpKSB7CisKKwkJCQkJcmV0dXJuIHRoaXMuY2hhbmdlUGVuZGluZ1N0YXR1c1VzZXJDb250YWN0cyhTSUQsCisJCQkJCQkJdXNlckNvbnRhY3QuZ2V0VXNlckNvbnRhY3RJZCgpLCBzdGF0dXMpOworCisJCQkJfSBlbHNlIHsKKwkJCQkJcmV0dXJuIC00OEw7CisJCQkJfQorCisJCQl9CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbY2hhbmdlVXNlckNvbnRhY3RCeUhhc2hdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgTGlzdDxVc2VyQ29udGFjdD4gZ2V0VXNlckNvbnRhY3RzKFN0cmluZyBTSUQpIHsKKwkJdHJ5IHsKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQkJLy8gdXNlcnMgb25seQorCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tVc2VyTGV2ZWwodXNlcl9sZXZlbCkpIHsKKworCQkJCUxpc3Q8VXNlckNvbnRhY3Q+IHVMaXN0ID0gdXNlckNvbnRhY3RzRGFvCisJCQkJCQkuZ2V0Q29udGFjdHNCeVVzZXJBbmRTdGF0dXModXNlcnNfaWQsIGZhbHNlKTsKKworCQkJCXJldHVybiB1TGlzdDsKKwkJCX0KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRQZW5kaW5nVXNlckNvbnRhY3RdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgTG9uZyBjaGVja1BlbmRpbmdTdGF0dXMoU3RyaW5nIFNJRCwgTG9uZyB1c2VyQ29udGFjdElkKSB7CisJCXRyeSB7CisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJCS8vIHVzZXJzIG9ubHkKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrVXNlckxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlVc2VyQ29udGFjdCB1c2VyQ29udGFjdHMgPSB1c2VyQ29udGFjdHNEYW8KKwkJCQkJCS5nZXRVc2VyQ29udGFjdHModXNlckNvbnRhY3RJZCk7CisKKwkJCQlpZiAodXNlckNvbnRhY3RzID09IG51bGwpIHsKKwkJCQkJcmV0dXJuIC00Nkw7CisJCQkJfQorCisJCQkJaWYgKHVzZXJDb250YWN0cy5nZXRQZW5kaW5nKCkgIT0gbnVsbAorCQkJCQkJJiYgIXVzZXJDb250YWN0cy5nZXRQZW5kaW5nKCkpIHsKKwkJCQkJcmV0dXJuIC00N0w7CisJCQkJfQorCisJCQkJcmV0dXJuIHVzZXJDb250YWN0SWQ7CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2NoZWNrUGVuZGluZ1N0YXR1c10iLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBJbnRlZ2VyIHJlbW92ZUNvbnRhY3RVc2VyKFN0cmluZyBTSUQsIExvbmcgdXNlckNvbnRhY3RJZCkgeworCQl0cnkgeworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCQkvLyB1c2VycyBvbmx5CisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1VzZXJMZXZlbCh1c2VyX2xldmVsKSkgeworCisJCQkJVXNlckNvbnRhY3QgdXNlckNvbnRhY3RzID0gdXNlckNvbnRhY3RzRGFvCisJCQkJCQkuZ2V0VXNlckNvbnRhY3RzKHVzZXJDb250YWN0SWQpOworCisJCQkJaWYgKHVzZXJDb250YWN0cyA9PSBudWxsKSB7CisJCQkJCXJldHVybiAtNDk7CisJCQkJfQorCisJCQkJcmV0dXJuIHVzZXJDb250YWN0c0Rhby5kZWxldGVVc2VyQ29udGFjdCh1c2VyQ29udGFjdElkKTsKKworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltyZW1vdmVDb250YWN0VXNlcl0iLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMb25nIGNoYW5nZVBlbmRpbmdTdGF0dXNVc2VyQ29udGFjdHMoU3RyaW5nIFNJRCwgTG9uZyB1c2VyQ29udGFjdElkLAorCQkJQm9vbGVhbiBwZW5kaW5nKSB7CisJCXRyeSB7CisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJCS8vIHVzZXJzIG9ubHkKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrVXNlckxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlVc2VyQ29udGFjdCB1c2VyQ29udGFjdHMgPSB1c2VyQ29udGFjdHNEYW8KKwkJCQkJCS5nZXRVc2VyQ29udGFjdHModXNlckNvbnRhY3RJZCk7CisKKwkJCQlpZiAodXNlckNvbnRhY3RzID09IG51bGwpIHsKKwkJCQkJcmV0dXJuIC00Nkw7CisJCQkJfQorCisJCQkJaWYgKHVzZXJDb250YWN0cy5nZXRQZW5kaW5nKCkgIT0gbnVsbAorCQkJCQkJJiYgIXVzZXJDb250YWN0cy5nZXRQZW5kaW5nKCkpIHsKKwkJCQkJcmV0dXJuIC00N0w7CisJCQkJfQorCisJCQkJaWYgKHBlbmRpbmcpIHsKKworCQkJCQl1c2VyQ29udGFjdHNEYW8udXBkYXRlQ29udGFjdFN0YXR1cyh1c2VyQ29udGFjdElkLCBmYWxzZSk7CisKKwkJCQkJdXNlckNvbnRhY3RzID0gdXNlckNvbnRhY3RzRGFvCisJCQkJCQkJLmdldFVzZXJDb250YWN0cyh1c2VyQ29udGFjdElkKTsKKworCQkJCQl1c2VyQ29udGFjdHNEYW8uYWRkVXNlckNvbnRhY3QodXNlckNvbnRhY3RzLmdldE93bmVyKCkKKwkJCQkJCQkuZ2V0VXNlcl9pZCgpLCB1c2Vyc19pZCwgZmFsc2UsICIiKTsKKworCQkJCQlVc2VyIHVzZXIgPSB1c2VyQ29udGFjdHMuZ2V0T3duZXIoKTsKKworCQkJCQlpZiAodXNlci5nZXRBZHJlc3NlcygpICE9IG51bGwpIHsKKworCQkJCQkJTG9uZyBsYW5ndWFnZV9pZCA9IHVzZXIuZ2V0TGFuZ3VhZ2VfaWQoKTsKKwkJCQkJCWlmIChsYW5ndWFnZV9pZCA9PSBudWxsKSB7CisJCQkJCQkJbGFuZ3VhZ2VfaWQgPSBjb25maWd1cmF0aW9uRGFvLmdldENvbmZWYWx1ZSgiZGVmYXVsdF9sYW5nX2lkIiwgTG9uZy5jbGFzcywgIjEiKTsKKwkJCQkJCX0KKworCQkJCQkJU3RyaW5nIG1lc3NhZ2UgPSAiIjsKKworCQkJCQkJRmllbGRsYW5ndWFnZXN2YWx1ZXMgZlZhbHVlMTE5MiA9IGZpZWxkTWFuYWdlcgorCQkJCQkJCQkuZ2V0RmllbGRCeUlkQW5kTGFuZ3VhZ2UoMTE5MkwsIGxhbmd1YWdlX2lkKTsKKwkJCQkJCUZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGZWYWx1ZTExOTggPSBmaWVsZE1hbmFnZXIKKwkJCQkJCQkJLmdldEZpZWxkQnlJZEFuZExhbmd1YWdlKDExOThMLCBsYW5ndWFnZV9pZCk7CisKKwkJCQkJCW1lc3NhZ2UgKz0gZlZhbHVlMTE5Mi5nZXRWYWx1ZSgpICsgIiAiCisJCQkJCQkJCSsgdXNlci5nZXRGaXJzdG5hbWUoKSArICIgIgorCQkJCQkJCQkrIHVzZXIuZ2V0TGFzdG5hbWUoKSArICI8YnIvPjxici8+IjsKKwkJCQkJCW1lc3NhZ2UgKz0gdXNlckNvbnRhY3RzLmdldENvbnRhY3QoKS5nZXRGaXJzdG5hbWUoKQorCQkJCQkJCQkrICIgIiArIHVzZXJDb250YWN0cy5nZXRDb250YWN0KCkuZ2V0TGFzdG5hbWUoKQorCQkJCQkJCQkrICIgIiArIGZWYWx1ZTExOTguZ2V0VmFsdWUoKTsKKworCQkJCQkJU3RyaW5nIHRlbXBsYXRlID0gcmVxdWVzdENvbnRhY3RDb25maXJtVGVtcGxhdGUKKwkJCQkJCQkJLmdldFJlcXVlc3RDb250YWN0VGVtcGxhdGUobWVzc2FnZSk7CisKKwkJCQkJCXByaXZhdGVNZXNzYWdlc0Rhby5hZGRQcml2YXRlTWVzc2FnZSgKKwkJCQkJCQkJdXNlci5nZXRGaXJzdG5hbWUoKSArICIgIiArIHVzZXIuZ2V0TGFzdG5hbWUoKQorCQkJCQkJCQkJCSsgIiAiICsgZlZhbHVlMTE5OC5nZXRWYWx1ZSgpLCBtZXNzYWdlLAorCQkJCQkJCQkwTCwgdXNlckNvbnRhY3RzLmdldENvbnRhY3QoKSwgdXNlciwgdXNlciwKKwkJCQkJCQkJZmFsc2UsIG51bGwsIGZhbHNlLCAwTCwgdXNlci5nZXRBZHJlc3NlcygpCisJCQkJCQkJCQkJLmdldEVtYWlsKCkpOworCisJCQkJCQltYWlsSGFuZGxlci5zZW5kKHVzZXIuZ2V0QWRyZXNzZXMoKS5nZXRFbWFpbCgpLAorCQkJCQkJCQl1c2VyQ29udGFjdHMuZ2V0Q29udGFjdCgpLmdldEZpcnN0bmFtZSgpCisJCQkJCQkJCQkJKyAiICIKKwkJCQkJCQkJCQkrIHVzZXJDb250YWN0cy5nZXRDb250YWN0KCkKKwkJCQkJCQkJCQkJCS5nZXRMYXN0bmFtZSgpICsgIiAiCisJCQkJCQkJCQkJKyBmVmFsdWUxMTk4LmdldFZhbHVlKCksIHRlbXBsYXRlKTsKKworCQkJCQl9CisKKwkJCQl9IGVsc2UgeworCisJCQkJCXVzZXJDb250YWN0c0Rhby5kZWxldGVVc2VyQ29udGFjdCh1c2VyQ29udGFjdElkKTsKKworCQkJCX0KKworCQkJCXJldHVybiB1c2VyQ29udGFjdElkOworCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2dldFBlbmRpbmdVc2VyQ29udGFjdF0iLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXByaXZhdGUgRGF0ZSBjcmVhdGVDYWxlbmRhckRhdGUoVGltZVpvbmUgdGltZXpvbmUsIFN0cmluZyBkYXRlT25seSwKKwkJCVN0cmluZyB0aW1lKSB7CisJCUludGVnZXIgaG91ciA9IEludGVnZXIudmFsdWVPZih0aW1lLnN1YnN0cmluZygwLCAyKSkuaW50VmFsdWUoKTsKKwkJSW50ZWdlciBtaW51dGUgPSBJbnRlZ2VyLnZhbHVlT2YodGltZS5zdWJzdHJpbmcoMywgNSkpLmludFZhbHVlKCk7CisKKwkJbG9nLmluZm8oImNyZWF0ZUNhbGVuZGFyIEhvdXI6ICIgKyBob3VyKTsKKwkJbG9nLmluZm8oImNyZWF0ZUNhbGVuZGFyIE1pbnV0ZTogIiArIG1pbnV0ZSk7CisKKwkJQ2FsZW5kYXIgY2FsID0gVGltZXpvbmVVdGlsLmdldENhbGVuZGFySW5UaW1lem9uZShkYXRlT25seSwgdGltZXpvbmUpOworCQljYWwuc2V0KENhbGVuZGFyLkhPVVJfT0ZfREFZLCBob3VyKTsKKwkJY2FsLnNldChDYWxlbmRhci5NSU5VVEUsIG1pbnV0ZSk7CisJCWNhbC5zZXQoQ2FsZW5kYXIuU0VDT05ELCAwKTsKKwkJY2FsLnNldChDYWxlbmRhci5NSUxMSVNFQ09ORCwgMCk7CisKKwkJcmV0dXJuIGNhbC5nZXRUaW1lKCk7CisJfQorCisJcHVibGljIExvbmcgY29tcG9zZU1haWwoU3RyaW5nIFNJRCwgTGlzdDxTdHJpbmc+IHJlY2lwaWVudHMsCisJCQlTdHJpbmcgc3ViamVjdCwgU3RyaW5nIG1lc3NhZ2UsIEJvb2xlYW4gYm9va2VkUm9vbSwKKwkJCVN0cmluZyB2YWxpZEZyb21EYXRlLCBTdHJpbmcgdmFsaWRGcm9tVGltZSwgU3RyaW5nIHZhbGlkVG9EYXRlLAorCQkJU3RyaW5nIHZhbGlkVG9UaW1lLCBMb25nIHBhcmVudE1lc3NhZ2VJZCwgTG9uZyByb29tdHlwZV9pZCwKKwkJCVN0cmluZyBkb21haW4sIFN0cmluZyBwb3J0LCBTdHJpbmcgd2ViYXBwKSB7CisJCXRyeSB7CisKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQkJLy8gdXNlcnMgb25seQorCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tVc2VyTGV2ZWwodXNlcl9sZXZlbCkpIHsKKwkJCQlVc2VyIGZyb20gPSB1c2VyTWFuYWdlci5nZXRVc2VyQnlJZCh1c2Vyc19pZCk7CisJCQkJVGltZVpvbmUgdGltZXpvbmUgPSB0aW1lem9uZVV0aWwuZ2V0VGltZXpvbmVCeVVzZXIoZnJvbSk7CisKKwkJCQlEYXRlIGFwcG9pbnRtZW50c3RhcnQgPSBjcmVhdGVDYWxlbmRhckRhdGUodGltZXpvbmUsCisJCQkJCQl2YWxpZEZyb21EYXRlLCB2YWxpZEZyb21UaW1lKTsKKwkJCQlEYXRlIGFwcG9pbnRtZW50ZW5kID0gY3JlYXRlQ2FsZW5kYXJEYXRlKHRpbWV6b25lLCB2YWxpZFRvRGF0ZSwKKwkJCQkJCXZhbGlkVG9UaW1lKTsKKworCQkJCWxvZy5pbmZvKCJ2YWxpZEZyb21EYXRlOiAiCisJCQkJCQkrIENhbGVuZGFyUGF0dGVybnMKKwkJCQkJCQkJLmdldERhdGVXaXRoVGltZUJ5TWlsaVNlY29uZHMoYXBwb2ludG1lbnRzdGFydCkpOworCQkJCWxvZy5pbmZvKCJ2YWxpZFRvRGF0ZTogIgorCQkJCQkJKyBDYWxlbmRhclBhdHRlcm5zCisJCQkJCQkJCS5nZXREYXRlV2l0aFRpbWVCeU1pbGlTZWNvbmRzKGFwcG9pbnRtZW50ZW5kKSk7CisKKwkJCQlSb29tIHJvb20gPSBudWxsOworCisJCQkJU3RyaW5nIGJhc2VVUkwgPSAiaHR0cDovLyIgKyBkb21haW4gKyAiOiIgKyBwb3J0ICsgd2ViYXBwOworCQkJCWlmIChwb3J0LmVxdWFscygiODAiKSkgeworCQkJCQliYXNlVVJMID0gImh0dHA6Ly8iICsgZG9tYWluICsgd2ViYXBwOworCQkJCX0gZWxzZSBpZiAocG9ydC5lcXVhbHMoIjQ0MyIpKSB7CisJCQkJCWJhc2VVUkwgPSAiaHR0cHM6Ly8iICsgZG9tYWluICsgd2ViYXBwOworCQkJCX0KKworCQkJCUxvbmcgcm9vbV9pZCA9IG51bGw7CisJCQkJTG9uZyBhcHBvaW50bWVudElkID0gbnVsbDsKKworCQkJCWlmIChib29rZWRSb29tKSB7CisJCQkJCXJvb21faWQgPSByb29tTWFuYWdlci5hZGRSb29tKDMsIC8vIFVzZXJsZXZlbAorCQkJCQkJCXN1YmplY3QsIC8vIG5hbWUKKwkJCQkJCQlyb29tdHlwZV9pZCwgLy8gUm9vbVR5cGUKKwkJCQkJCQkiIiwgLy8gQ29tbWVudAorCQkJCQkJCW5ldyBMb25nKDEwMCksIC8vIE51bWJlciBvZiBwYXJ0aWNpcGFudHMKKwkJCQkJCQlmYWxzZSwgLy8gcHVibGljCisJCQkJCQkJbnVsbCwgLy8gT3JnYW5pc2F0aW9ucworCQkJCQkJCXRydWUsIC8vIEFwcG9pbnRtZW50CisJCQkJCQkJZmFsc2UsIC8vIERlbW8gUm9vbSA9PiBNZWV0aW5nIFRpbWVyCisJCQkJCQkJbnVsbCwgLy8gTWVldGluZyBUaW1lciB0aW1lIGluIHNlY29uZHMKKwkJCQkJCQlmYWxzZSwgLy8gSXMgTW9kZXJhdGVkIFJvb20KKwkJCQkJCQludWxsLCAvLyBNb2RlcmF0aW9uIExpc3QgUm9vbQorCQkJCQkJCXRydWUsIC8vIEFsbG93IFVzZXIgUXVlc3Rpb25zCisJCQkJCQkJZmFsc2UsIC8vIGlzQXVkaW9Pbmx5CisJCQkJCQkJdHJ1ZSwgLy8gYWxsb3dGb250U3R5bGVzCisJCQkJCQkJZmFsc2UsIC8vIGlzQ2xvc2VkCisJCQkJCQkJIiIsIC8vIHJlZGlyZWN0VVJMCisJCQkJCQkJIiIsIC8vIGNvbmZlcmVuY2VQSU4KKwkJCQkJCQludWxsLCAvLyBvd25lcklkCisJCQkJCQkJbnVsbCwgbnVsbCwgZmFsc2UsIC8vIGhpZGVUb3BCYXIKKwkJCQkJCQlmYWxzZSwgLy8gaGlkZUNoYXQKKwkJCQkJCQlmYWxzZSwgLy8gaGlkZUFjdGl2aXRpZXNBbmRBY3Rpb25zCisJCQkJCQkJZmFsc2UsIC8vIGhpZGVGaWxlc0V4cGxvcmVyCisJCQkJCQkJZmFsc2UsIC8vIGhpZGVBY3Rpb25zTWVudQorCQkJCQkJCWZhbHNlLCAvLyBoaWRlU2NyZWVuU2hhcmluZworCQkJCQkJCWZhbHNlLCAvLyBoaWRlV2hpdGVib2FyZAorCQkJCQkJCWZhbHNlLCAvLyBzaG93TWljcm9waG9uZVN0YXR1cworCQkJCQkJCWZhbHNlLCAvLyBjaGF0TW9kZXJhdGVkCisJCQkJCQkJZmFsc2UsIC8vIGNoYXRPcGVuZWQKKwkJCQkJCQlmYWxzZSwgLy8gZmlsZXNPcGVuZWQKKwkJCQkJCQlmYWxzZSwgLy8gYXV0b1ZpZGVvU2VsZWN0CisJCQkJCQkJZmFsc2UgLy9zaXBFbmFibGVkCisJCQkJCQkJKTsKKworCQkJCQlyb29tID0gcm9vbURhby5nZXQocm9vbV9pZCk7CisKKwkJCQkJU3RyaW5nIHNlbmRKTmFtZVRpbWVab25lID0gZnJvbS5nZXRPbVRpbWVab25lKCkuZ2V0Sm5hbWUoKTsKKworCQkJCQlhcHBvaW50bWVudElkID0gdGhpcy5hZGRBcHBvaW50bWVudFRvVXNlcihzdWJqZWN0LCBtZXNzYWdlLAorCQkJCQkJCWZyb20sIHJlY2lwaWVudHMsIHJvb20sIGFwcG9pbnRtZW50c3RhcnQsCisJCQkJCQkJYXBwb2ludG1lbnRlbmQsIHRydWUsIHRydWUsIHNlbmRKTmFtZVRpbWVab25lKTsKKworCQkJCX0KKworCQkJCXJlY2lwaWVudHMuYWRkKGZyb20uZ2V0QWRyZXNzZXMoKS5nZXRFbWFpbCgpKTsKKworCQkJCVN0cmluZyBzZW5kSk5hbWVUaW1lWm9uZSA9IGZyb20uZ2V0T21UaW1lWm9uZSgpLmdldEpuYW1lKCk7CisKKwkJCQlTdHJpbmcgcHJvZmlsZV9saW5rID0gYmFzZVVSTCArICI/Y3VzZXI9MSI7CisKKwkJCQlmb3IgKFN0cmluZyBlbWFpbCA6IHJlY2lwaWVudHMpIHsKKworCQkJCQkvLyBNYXAgcmVjZWlwZW50ID0gKE1hcCkgcmVjaXBpZW50cy5nZXQoaXRlci5uZXh0KCkpOworCisJCQkJCS8vIFN0cmluZyBlbWFpbCA9IHJlY2VpcGVudC5nZXQoImVtYWlsIikudG9TdHJpbmcoKTsKKworCQkJCQlMb25nIGxhbmd1YWdlX2lkID0gZnJvbS5nZXRMYW5ndWFnZV9pZCgpOworCQkJCQlpZiAobGFuZ3VhZ2VfaWQgPT0gbnVsbCkgeworCQkJCQkJbGFuZ3VhZ2VfaWQgPSBjb25maWd1cmF0aW9uRGFvLmdldENvbmZWYWx1ZSgiZGVmYXVsdF9sYW5nX2lkIiwgTG9uZy5jbGFzcywgIjEiKTsKKwkJCQkJfQorCQkJCQlTdHJpbmcgaW52aXRhdGlvbl9saW5rID0gbnVsbDsKKwkJCQkJVXNlciB0byA9IHVzZXJNYW5hZ2VyLmdldFVzZXJCeUVtYWlsKGVtYWlsKTsKKworCQkJCQlpZiAoYm9va2VkUm9vbSkgeworCQkJCQkJLy8gQWRkIHRoZSBhcHBvaW50bWVudCB0byB0aGUgY2FsZW5kYXIgb2YgdGhlIHVzZXIgKGlmCisJCQkJCQkvLyBpdHMgYW4gaW50ZXJuYWwgdXNlcikKKwkJCQkJCS8vIGlmIHRoZSB1c2VyIGlzIHRoZSBzZW5kZXIgdGhlbiB3ZSBhbHJlYWR5IGFkZGVkIHRoZQorCQkJCQkJLy8gYXBwb2ludG1lbnQgYXMgd2UgY3JlYXRlZCB0aGUKKwkJCQkJCS8vIHJvb20sIHRoZSBpbnZpdGF0aW9ucyBhbHdheXMgYmVsb25nIHRvIHRoZQorCQkJCQkJLy8gYXBwb2ludG1lbnQgb2YgdGhlIG1lZXRpbmcgY3JlYXRvcgorCQkJCQkJaWYgKHRvICE9IG51bGwgJiYgIXRvLmdldFVzZXJfaWQoKS5lcXVhbHMoZnJvbS5nZXRVc2VyX2lkKCkpKSB7CisJCQkJCQkJdGhpcy5hZGRBcHBvaW50bWVudFRvVXNlcihzdWJqZWN0LCBtZXNzYWdlLCB0bywKKwkJCQkJCQkJCXJlY2lwaWVudHMsIHJvb20sIGFwcG9pbnRtZW50c3RhcnQsCisJCQkJCQkJCQlhcHBvaW50bWVudGVuZCwgZmFsc2UsIHRydWUsCisJCQkJCQkJCQlzZW5kSk5hbWVUaW1lWm9uZSk7CisJCQkJCQl9CisKKwkJCQkJCVN0cmluZyB1c2VybmFtZSA9IHRvID09IG51bGwgPyAiIiA6IHRvLmdldEZpcnN0bmFtZSgpICsgIiAiICsgdG8uZ2V0TGFzdG5hbWUoKTs7CisJCQkJCQlJbnZpdGF0aW9ucyBpbnZpdGF0aW9uID0gaW52aXRhdGlvbk1hbmFnZXIKKwkJCQkJCQkJLmFkZEludml0YXRpb25MaW5rKAorCQkJCQkJCQkJCW5ldyBMb25nKDIpLCAvLyB1c2VybGV2ZWwKKwkJCQkJCQkJCQl1c2VybmFtZSwgLy8gdXNlcm5hbWUKKwkJCQkJCQkJCQltZXNzYWdlLAorCQkJCQkJCQkJCWJhc2VVUkwsIC8vIGJhc2VVUmwKKwkJCQkJCQkJCQllbWFpbCwgLy8gZW1haWwKKwkJCQkJCQkJCQlzdWJqZWN0LCAvLyBzdWJqZWN0CisJCQkJCQkJCQkJcm9vbV9pZCwgLy8gcm9vbV9pZAorCQkJCQkJCQkJCSJwdWJsaWMiLAorCQkJCQkJCQkJCWZhbHNlLCAvLyBwYXNzd29yZHByb3RlY3RlZAorCQkJCQkJCQkJCSIiLCAvLyBpbnZpdGF0aW9ucGFzcworCQkJCQkJCQkJCTIsIC8vIHZhbGlkIHR5cGUKKwkJCQkJCQkJCQlhcHBvaW50bWVudHN0YXJ0LCAvLyB2YWxpZCBmcm9tCisJCQkJCQkJCQkJYXBwb2ludG1lbnRlbmQsIC8vIHZhbGlkIHRvCisJCQkJCQkJCQkJZnJvbS5nZXRVc2VyX2lkKCksIC8vIGNyZWF0ZWQgYnkKKwkJCQkJCQkJCQliYXNlVVJMLCBmcm9tLmdldFVzZXJfaWQoKSwKKwkJCQkJCQkJCQlmYWxzZSwgLy8gcmVhbGx5IHNlbmQgbWFpbCBzZW5kTWFpbAorCQkJCQkJCQkJCWFwcG9pbnRtZW50c3RhcnQsIGFwcG9pbnRtZW50ZW5kLAorCQkJCQkJCQkJCWFwcG9pbnRtZW50SWQsCisJCQkJCQkJCQkJZnJvbS5nZXRGaXJzdG5hbWUoKSArICIgIiArIGZyb20uZ2V0TGFzdG5hbWUoKSwKKwkJCQkJCQkJCQlmcm9tLmdldE9tVGltZVpvbmUoKSk7CisKKwkJCQkJCWludml0YXRpb25fbGluayA9IGJhc2VVUkwgKyAiP2ludml0YXRpb25IYXNoPSIKKwkJCQkJCQkJKyBpbnZpdGF0aW9uLmdldEhhc2goKTsKKworCQkJCQl9CisKKwkJCQkJaWYgKHRvICE9IG51bGwpIHsKKworCQkJCQkJaWYgKCF0by5nZXRVc2VyX2lkKCkuZXF1YWxzKGZyb20uZ2V0VXNlcl9pZCgpKSkgeworCQkJCQkJCS8vIE9uZSBtZXNzYWdlIHRvIHRoZSBTZW5kCisJCQkJCQkJcHJpdmF0ZU1lc3NhZ2VzRGFvLmFkZFByaXZhdGVNZXNzYWdlKHN1YmplY3QsCisJCQkJCQkJCQltZXNzYWdlLCBwYXJlbnRNZXNzYWdlSWQsIGZyb20sIHRvLCBmcm9tLAorCQkJCQkJCQkJYm9va2VkUm9vbSwgcm9vbSwgZmFsc2UsIDBMLCBlbWFpbCk7CisKKwkJCQkJCQkvLyBPbmUgbWVzc2FnZSB0byB0aGUgSW5ib3gKKwkJCQkJCQlwcml2YXRlTWVzc2FnZXNEYW8uYWRkUHJpdmF0ZU1lc3NhZ2Uoc3ViamVjdCwKKwkJCQkJCQkJCW1lc3NhZ2UsIHBhcmVudE1lc3NhZ2VJZCwgZnJvbSwgdG8sIHRvLAorCQkJCQkJCQkJYm9va2VkUm9vbSwgcm9vbSwgZmFsc2UsIDBMLCBlbWFpbCk7CisKKwkJCQkJCQkvLyBPbmUgY29weSBvZiB0aGUgSW5ib3ggbWVzc2FnZSB0byB0aGUgdXNlcgorCQkJCQkJCWlmICh0by5nZXRMYW5ndWFnZV9pZCgpICE9IG51bGwpIHsKKwkJCQkJCQkJbGFuZ3VhZ2VfaWQgPSB0by5nZXRMYW5ndWFnZV9pZCgpOworCQkJCQkJCX0KKwkJCQkJCX0KKworCQkJCQl9IGVsc2UgeworCisJCQkJCQkvLyBPbmUgbWVzc2FnZSB0byB0aGUgU2VuZAorCQkJCQkJcHJpdmF0ZU1lc3NhZ2VzRGFvLmFkZFByaXZhdGVNZXNzYWdlKHN1YmplY3QsIG1lc3NhZ2UsCisJCQkJCQkJCXBhcmVudE1lc3NhZ2VJZCwgZnJvbSwgdG8sIGZyb20sIGJvb2tlZFJvb20sCisJCQkJCQkJCXJvb20sIGZhbHNlLCAwTCwgZW1haWwpOworCisJCQkJCQkvLyB0aGVyZSBpcyBubyBJbmJveCBmb3IgZXh0ZXJuYWwgdXNlcnMKKworCQkJCQl9CisKKwkJCQkJLy8gV2UgZG8gbm90IHNlbmQgYW4gZW1haWwgdG8gdGhlIG9uZSB0aGF0IGhhcyBjcmVhdGVkIHRoZQorCQkJCQkvLyBwcml2YXRlIG1lc3NhZ2UKKwkJCQkJaWYgKHRvICE9IG51bGwgJiYgdG8uZ2V0VXNlcl9pZCgpLmVxdWFscyhmcm9tLmdldFVzZXJfaWQoKSkpIHsKKwkJCQkJCWNvbnRpbnVlOworCQkJCQl9CisKKwkJCQkJRmllbGRsYW5ndWFnZXN2YWx1ZXMgZlZhbHVlMTMwMSA9IGZpZWxkTWFuYWdlcgorCQkJCQkJCS5nZXRGaWVsZEJ5SWRBbmRMYW5ndWFnZSgxMzAxTCwgbGFuZ3VhZ2VfaWQpOworCQkJCQlGaWVsZGxhbmd1YWdlc3ZhbHVlcyBmVmFsdWUxMzAyID0gZmllbGRNYW5hZ2VyCisJCQkJCQkJLmdldEZpZWxkQnlJZEFuZExhbmd1YWdlKDEzMDJMLCBsYW5ndWFnZV9pZCk7CisJCQkJCUZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGxhYmVsaWQ1MDQgPSBmaWVsZE1hbmFnZXIKKwkJCQkJCQkuZ2V0RmllbGRCeUlkQW5kTGFuZ3VhZ2UobmV3IExvbmcoNTA0KSwgbGFuZ3VhZ2VfaWQpOworCQkJCQlGaWVsZGxhbmd1YWdlc3ZhbHVlcyBsYWJlbGlkNTAzID0gZmllbGRNYW5hZ2VyCisJCQkJCQkJLmdldEZpZWxkQnlJZEFuZExhbmd1YWdlKG5ldyBMb25nKDUwMyksIGxhbmd1YWdlX2lkKTsKKworCQkJCQlTdHJpbmcgYUxpbmtIVE1MID0gIiI7CisJCQkJCWlmICh0byAhPSBudWxsKSB7CisJCQkJCQlhTGlua0hUTUwgPSAiPGJyLz48YnIvPjxhIGhyZWY9JyIgKyBwcm9maWxlX2xpbmsgKyAiJz4iCisJCQkJCQkJCSsgZlZhbHVlMTMwMi5nZXRWYWx1ZSgpICsgIjwvYT48YnIvPiI7CisJCQkJCX0KKworCQkJCQlpZiAoaW52aXRhdGlvbl9saW5rID09IG51bGwpIHsKKwkJCQkJCWludml0YXRpb25fbGluayA9ICIiOworCQkJCQl9IGVsc2UgeworCQkJCQkJaW52aXRhdGlvbl9saW5rID0gIjxici8+IiAvLworCQkJCQkJCQkrIENhbGVuZGFyUGF0dGVybnMKKwkJCQkJCQkJCQkuZ2V0RGF0ZVdpdGhUaW1lQnlNaWxpU2Vjb25kc0FuZFRpbWVab25lKAorCQkJCQkJCQkJCQkJYXBwb2ludG1lbnRzdGFydCwgdGltZXpvbmUpCisJCQkJCQkJCSsgIjxici8+IC0gPGJyLz4iIC8vCisJCQkJCQkJCSsgQ2FsZW5kYXJQYXR0ZXJucworCQkJCQkJCQkJCS5nZXREYXRlV2l0aFRpbWVCeU1pbGlTZWNvbmRzQW5kVGltZVpvbmUoCisJCQkJCQkJCQkJCQlhcHBvaW50bWVudHN0YXJ0LCB0aW1lem9uZSkKKwkJCQkJCQkJKyAiPGJyLz4iCisJCQkJCQkJCSsgbGFiZWxpZDUwMy5nZXRWYWx1ZSgpCisJCQkJCQkJCSsgIjxici8+PGEgaHJlZj0nIiArIGludml0YXRpb25fbGluaworCQkJCQkJCQkrICInPiIKKwkJCQkJCQkJKyBsYWJlbGlkNTA0LmdldFZhbHVlKCkgKyAiPC9hPjxici8+IjsKKwkJCQkJfQorCisJCQkJCW1haWxIYW5kbGVyLnNlbmQoZW1haWwsIGZWYWx1ZTEzMDEuZ2V0VmFsdWUoKSArICIgIgorCQkJCQkJCSsgc3ViamVjdCwgbWVzc2FnZS5yZXBsYWNlQWxsKCJcXDwuKj8+IiwgIiIpCisJCQkJCQkJKyBhTGlua0hUTUwgKyBpbnZpdGF0aW9uX2xpbmspOworCisJCQkJfQorCisJCQl9CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbY29tcG9zZU1haWxdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvKgorCSAqIERhdGUgYXBwb2ludG1lbnRzdGFydCA9IGNhbEZyb20uZ2V0VGltZSgpOyBEYXRlIGFwcG9pbnRtZW50ZW5kID0KKwkgKiBjYWxUby5nZXRUaW1lKCk7CisJICovCisJcHJpdmF0ZSBMb25nIGFkZEFwcG9pbnRtZW50VG9Vc2VyKFN0cmluZyBzdWJqZWN0LCBTdHJpbmcgbWVzc2FnZSwgVXNlciB0bywKKwkJCUxpc3Q8U3RyaW5nPiByZWNpcGllbnRzLCBSb29tIHJvb20sIERhdGUgYXBwb2ludG1lbnRzdGFydCwKKwkJCURhdGUgYXBwb2ludG1lbnRlbmQsIEJvb2xlYW4gaW52aXRvciwgQm9vbGVhbiBpc0Nvbm5lY3RlZEV2ZW50LAorCQkJU3RyaW5nIHNlbmRKTmFtZVRpbWVab25lKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworCQlMb25nIGFwcG9pbnRtZW50SWQgPSBhcHBvaW50bWVudERhby5hZGRBcHBvaW50bWVudChzdWJqZWN0LAorCQkJCXRvLmdldFVzZXJfaWQoKSwgIiIsIG1lc3NhZ2UsIGFwcG9pbnRtZW50c3RhcnQsIGFwcG9pbnRtZW50ZW5kLAorCQkJCWZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCAxTCwgMkwsIHJvb20sIHRvLmdldExhbmd1YWdlX2lkKCksCisJCQkJZmFsc2UsICIiLCBpc0Nvbm5lY3RlZEV2ZW50LCBzZW5kSk5hbWVUaW1lWm9uZSk7CisKKwkJZm9yIChTdHJpbmcgZW1haWwgOiByZWNpcGllbnRzKSB7CisKKwkJCVVzZXIgbWVldGluZ01lbWJlciA9IHVzZXJNYW5hZ2VyLmdldFVzZXJCeUVtYWlsKGVtYWlsKTsKKworCQkJaWYgKG1lZXRpbmdNZW1iZXIgIT0gbnVsbCkgeworCisJCQkJU3RyaW5nIGZpcnN0bmFtZSA9IG1lZXRpbmdNZW1iZXIuZ2V0Rmlyc3RuYW1lKCk7CisJCQkJU3RyaW5nIGxhc3RuYW1lID0gbWVldGluZ01lbWJlci5nZXRMYXN0bmFtZSgpOworCisJCQkJbWVldGluZ01lbWJlckRhby5hZGRNZWV0aW5nTWVtYmVyKGZpcnN0bmFtZSwgbGFzdG5hbWUsICIwIiwKKwkJCQkJCSIwIiwgYXBwb2ludG1lbnRJZCwgbWVldGluZ01lbWJlci5nZXRVc2VyX2lkKCksIGVtYWlsLAorCQkJCQkJbWVldGluZ01lbWJlci5nZXRQaG9uZUZvclNNUygpLCBpbnZpdG9yLAorCQkJCQkJbWVldGluZ01lbWJlci5nZXRPbVRpbWVab25lKCksIGlzQ29ubmVjdGVkRXZlbnQpOworCisJCQl9IGVsc2UgeworCisJCQkJbWVldGluZ01lbWJlckRhby5hZGRNZWV0aW5nTWVtYmVyKCIiLCAiIiwgIjAiLCAiMCIsCisJCQkJCQlhcHBvaW50bWVudElkLCBudWxsLCBlbWFpbCwgIiIsIGludml0b3IsCisJCQkJCQlvbVRpbWVab25lRGFvSW1wbC5nZXRPbVRpbWVab25lKHNlbmRKTmFtZVRpbWVab25lKSwKKwkJCQkJCWlzQ29ubmVjdGVkRXZlbnQpOworCisJCQl9CisJCX0KKworCQlyZXR1cm4gYXBwb2ludG1lbnRJZDsKKworCX0KKworCXB1YmxpYyBMb25nIGdldE51bWJlclVucmVhZE1lc3NhZ2VzKFN0cmluZyBTSUQpIHsKKwkJdHJ5IHsKKworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCQkvLyB1c2VycyBvbmx5CisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1VzZXJMZXZlbCh1c2VyX2xldmVsKSkgeworCisJCQkJU2VhcmNoUmVzdWx0PFByaXZhdGVNZXNzYWdlPiBzZWFyY2hSZXN1bHQgPSBuZXcgU2VhcmNoUmVzdWx0PFByaXZhdGVNZXNzYWdlPigpOworCQkJCXNlYXJjaFJlc3VsdC5zZXRPYmplY3ROYW1lKFVzZXIuY2xhc3MuZ2V0TmFtZSgpKTsKKwkJCQlyZXR1cm4gcHJpdmF0ZU1lc3NhZ2VzRGFvCisJCQkJCQkuZ2V0TnVtYmVyTWVzc2FnZXModXNlcnNfaWQsIDBMLCBmYWxzZSk7CisKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbZ2V0TnVtYmVyVW5yZWFkTWVzc2FnZXNdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgU2VhcmNoUmVzdWx0PFByaXZhdGVNZXNzYWdlPiBnZXRJbmJveChTdHJpbmcgU0lELCBTdHJpbmcgc2VhcmNoLAorCQkJU3RyaW5nIG9yZGVyQnksIGludCBzdGFydCwgQm9vbGVhbiBhc2MsIEludGVnZXIgbWF4KSB7CisJCXRyeSB7CisKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQkJLy8gdXNlcnMgb25seQorCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tVc2VyTGV2ZWwodXNlcl9sZXZlbCkpIHsKKworCQkJCVNlYXJjaFJlc3VsdDxQcml2YXRlTWVzc2FnZT4gc2VhcmNoUmVzdWx0ID0gbmV3IFNlYXJjaFJlc3VsdDxQcml2YXRlTWVzc2FnZT4oKTsKKwkJCQlzZWFyY2hSZXN1bHQuc2V0T2JqZWN0TmFtZShVc2VyLmNsYXNzLmdldE5hbWUoKSk7CisJCQkJTGlzdDxQcml2YXRlTWVzc2FnZT4gdXNlckxpc3QgPSBwcml2YXRlTWVzc2FnZXNEYW8KKwkJCQkJCS5nZXRQcml2YXRlTWVzc2FnZXNCeVVzZXIodXNlcnNfaWQsIHNlYXJjaCwgb3JkZXJCeSwKKwkJCQkJCQkJc3RhcnQsIGFzYywgMEwsIG1heCk7CisKKwkJCQlzZWFyY2hSZXN1bHQuc2V0UmVzdWx0KHVzZXJMaXN0KTsKKworCQkJCUxvbmcgcmVzdWx0SW50ID0gcHJpdmF0ZU1lc3NhZ2VzRGFvLmNvdW50UHJpdmF0ZU1lc3NhZ2VzQnlVc2VyKAorCQkJCQkJdXNlcnNfaWQsIHNlYXJjaCwgMEwpOworCisJCQkJc2VhcmNoUmVzdWx0LnNldFJlY29yZHMocmVzdWx0SW50KTsKKworCQkJCXJldHVybiBzZWFyY2hSZXN1bHQ7CisKKwkJCX0KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRJbmJveF0iLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBTZWFyY2hSZXN1bHQ8UHJpdmF0ZU1lc3NhZ2U+IGdldFNlbmQoU3RyaW5nIFNJRCwgU3RyaW5nIHNlYXJjaCwKKwkJCVN0cmluZyBvcmRlckJ5LCBJbnRlZ2VyIHN0YXJ0LCBCb29sZWFuIGFzYywgSW50ZWdlciBtYXgpIHsKKwkJdHJ5IHsKKworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCQkvLyB1c2VycyBvbmx5CisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1VzZXJMZXZlbCh1c2VyX2xldmVsKSkgeworCisJCQkJU2VhcmNoUmVzdWx0PFByaXZhdGVNZXNzYWdlPiBzZWFyY2hSZXN1bHQgPSBuZXcgU2VhcmNoUmVzdWx0PFByaXZhdGVNZXNzYWdlPigpOworCQkJCXNlYXJjaFJlc3VsdC5zZXRPYmplY3ROYW1lKFVzZXIuY2xhc3MuZ2V0TmFtZSgpKTsKKwkJCQlMaXN0PFByaXZhdGVNZXNzYWdlPiB1c2VyTGlzdCA9IHByaXZhdGVNZXNzYWdlc0RhbworCQkJCQkJLmdldFNlbmRQcml2YXRlTWVzc2FnZXNCeVVzZXIodXNlcnNfaWQsIHNlYXJjaCwKKwkJCQkJCQkJb3JkZXJCeSwgc3RhcnQsIGFzYywgMEwsIG1heCk7CisKKwkJCQlzZWFyY2hSZXN1bHQuc2V0UmVzdWx0KHVzZXJMaXN0KTsKKworCQkJCUxvbmcgcmVzdWx0SW50ID0gcHJpdmF0ZU1lc3NhZ2VzRGFvCisJCQkJCQkuY291bnRTZW5kUHJpdmF0ZU1lc3NhZ2VzQnlVc2VyKHVzZXJzX2lkLCBzZWFyY2gsIDBMKTsKKworCQkJCXNlYXJjaFJlc3VsdC5zZXRSZWNvcmRzKHJlc3VsdEludCk7CisKKwkJCQlyZXR1cm4gc2VhcmNoUmVzdWx0OworCisJCQl9CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbZ2V0SW5ib3hdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgU2VhcmNoUmVzdWx0PFByaXZhdGVNZXNzYWdlPiBnZXRUcmFzaChTdHJpbmcgU0lELCBTdHJpbmcgc2VhcmNoLAorCQkJU3RyaW5nIG9yZGVyQnksIEludGVnZXIgc3RhcnQsIEJvb2xlYW4gYXNjLCBJbnRlZ2VyIG1heCkgeworCQl0cnkgeworCisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJCS8vIHVzZXJzIG9ubHkKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrVXNlckxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlTZWFyY2hSZXN1bHQ8UHJpdmF0ZU1lc3NhZ2U+IHNlYXJjaFJlc3VsdCA9IG5ldyBTZWFyY2hSZXN1bHQ8UHJpdmF0ZU1lc3NhZ2U+KCk7CisJCQkJc2VhcmNoUmVzdWx0LnNldE9iamVjdE5hbWUoVXNlci5jbGFzcy5nZXROYW1lKCkpOworCQkJCUxpc3Q8UHJpdmF0ZU1lc3NhZ2U+IHVzZXJMaXN0ID0gcHJpdmF0ZU1lc3NhZ2VzRGFvCisJCQkJCQkuZ2V0VHJhc2hQcml2YXRlTWVzc2FnZXNCeVVzZXIodXNlcnNfaWQsIHNlYXJjaCwKKwkJCQkJCQkJb3JkZXJCeSwgc3RhcnQsIGFzYywgbWF4KTsKKworCQkJCXNlYXJjaFJlc3VsdC5zZXRSZXN1bHQodXNlckxpc3QpOworCisJCQkJTG9uZyByZXN1bHRJbnQgPSBwcml2YXRlTWVzc2FnZXNEYW8KKwkJCQkJCS5jb3VudFRyYXNoUHJpdmF0ZU1lc3NhZ2VzQnlVc2VyKHVzZXJzX2lkLCBzZWFyY2gpOworCisJCQkJc2VhcmNoUmVzdWx0LnNldFJlY29yZHMocmVzdWx0SW50KTsKKworCQkJCXJldHVybiBzZWFyY2hSZXN1bHQ7CisKKwkJCX0KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRJbmJveF0iLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBTZWFyY2hSZXN1bHQ8UHJpdmF0ZU1lc3NhZ2U+IGdldEZvbGRlcihTdHJpbmcgU0lELAorCQkJTG9uZyBwcml2YXRlTWVzc2FnZUZvbGRlcklkLCBTdHJpbmcgc2VhcmNoLCBTdHJpbmcgb3JkZXJCeSwKKwkJCUludGVnZXIgc3RhcnQsIEJvb2xlYW4gYXNjLCBJbnRlZ2VyIG1heCkgeworCQl0cnkgeworCisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJCS8vIHVzZXJzIG9ubHkKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrVXNlckxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlTZWFyY2hSZXN1bHQ8UHJpdmF0ZU1lc3NhZ2U+IHNlYXJjaFJlc3VsdCA9IG5ldyBTZWFyY2hSZXN1bHQ8UHJpdmF0ZU1lc3NhZ2U+KCk7CisJCQkJc2VhcmNoUmVzdWx0LnNldE9iamVjdE5hbWUoVXNlci5jbGFzcy5nZXROYW1lKCkpOworCQkJCUxpc3Q8UHJpdmF0ZU1lc3NhZ2U+IHVzZXJMaXN0ID0gcHJpdmF0ZU1lc3NhZ2VzRGFvCisJCQkJCQkuZ2V0Rm9sZGVyUHJpdmF0ZU1lc3NhZ2VzQnlVc2VyKHVzZXJzX2lkLCBzZWFyY2gsCisJCQkJCQkJCW9yZGVyQnksIHN0YXJ0LCBhc2MsIHByaXZhdGVNZXNzYWdlRm9sZGVySWQsCisJCQkJCQkJCW1heCk7CisKKwkJCQlzZWFyY2hSZXN1bHQuc2V0UmVzdWx0KHVzZXJMaXN0KTsKKworCQkJCUxvbmcgcmVzdWx0SW50ID0gcHJpdmF0ZU1lc3NhZ2VzRGFvCisJCQkJCQkuY291bnRGb2xkZXJQcml2YXRlTWVzc2FnZXNCeVVzZXIodXNlcnNfaWQsCisJCQkJCQkJCXByaXZhdGVNZXNzYWdlRm9sZGVySWQsIHNlYXJjaCk7CisKKwkJCQlzZWFyY2hSZXN1bHQuc2V0UmVjb3JkcyhyZXN1bHRJbnQpOworCisJCQkJcmV0dXJuIHNlYXJjaFJlc3VsdDsKKworCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2dldEluYm94XSIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIExvbmcgZ2V0Rm9sZGVyQ291bnQoU3RyaW5nIFNJRCwgTG9uZyBwcml2YXRlTWVzc2FnZUZvbGRlcklkKSB7CisJCXRyeSB7CisKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQkJLy8gdXNlcnMgb25seQorCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tVc2VyTGV2ZWwodXNlcl9sZXZlbCkpIHsKKworCQkJCXJldHVybiBwcml2YXRlTWVzc2FnZXNEYW8uY291bnRGb2xkZXJQcml2YXRlTWVzc2FnZXNCeVVzZXIoCisJCQkJCQl1c2Vyc19pZCwgcHJpdmF0ZU1lc3NhZ2VGb2xkZXJJZCwgIiIpOworCisJCQl9CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbZ2V0SW5ib3hdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgSW50ZWdlciBtb3ZlTWFpbHNUb0ZvbGRlcihTdHJpbmcgU0lELAorCQkJQFN1cHByZXNzV2FybmluZ3MoInJhd3R5cGVzIikgTGlzdCBwcml2YXRlTWVzc2FnZUludHNJZHMsCisJCQlMb25nIG5ld0ZvbGRlcklkKSB7CisJCXRyeSB7CisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJCS8vIHVzZXJzIG9ubHkKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrVXNlckxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlMaXN0PExvbmc+IHByaXZhdGVNZXNzYWdlSWRzID0gbmV3IExpbmtlZExpc3Q8TG9uZz4oKTsKKworCQkJCWZvciAoT2JqZWN0IHBNZXNzYWdlSWQgOiBwcml2YXRlTWVzc2FnZUludHNJZHMpIHsKKwkJCQkJcHJpdmF0ZU1lc3NhZ2VJZHMuYWRkKExvbmcudmFsdWVPZihwTWVzc2FnZUlkLnRvU3RyaW5nKCkpCisJCQkJCQkJLmxvbmdWYWx1ZSgpKTsKKwkJCQl9CisKKwkJCQlyZXR1cm4gcHJpdmF0ZU1lc3NhZ2VzRGFvLm1vdmVNYWlsc1RvRm9sZGVyKHByaXZhdGVNZXNzYWdlSWRzLAorCQkJCQkJbmV3Rm9sZGVySWQpOworCisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW21vdmVNYWlsc1RvRm9sZGVyXSIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIEludGVnZXIgbW92ZU1haWxzVG9UcmFzaChTdHJpbmcgU0lELAorCQkJQFN1cHByZXNzV2FybmluZ3MoInJhd3R5cGVzIikgTGlzdCBwcml2YXRlTWVzc2FnZUludHNJZHMsCisJCQlCb29sZWFuIGlzVHJhc2gpIHsKKwkJdHJ5IHsKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQkJLy8gdXNlcnMgb25seQorCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tVc2VyTGV2ZWwodXNlcl9sZXZlbCkpIHsKKworCQkJCUxpc3Q8TG9uZz4gcHJpdmF0ZU1lc3NhZ2VJZHMgPSBuZXcgTGlua2VkTGlzdDxMb25nPigpOworCisJCQkJZm9yIChPYmplY3QgcE1lc3NhZ2VJZCA6IHByaXZhdGVNZXNzYWdlSW50c0lkcykgeworCQkJCQlwcml2YXRlTWVzc2FnZUlkcy5hZGQoTG9uZy52YWx1ZU9mKHBNZXNzYWdlSWQudG9TdHJpbmcoKSkKKwkJCQkJCQkubG9uZ1ZhbHVlKCkpOworCQkJCX0KKworCQkJCWxvZy5kZWJ1ZygibW92ZU1haWxzVG9UcmFzaCA6OiAiICsgaXNUcmFzaCk7CisKKwkJCQlyZXR1cm4gcHJpdmF0ZU1lc3NhZ2VzRGFvLnVwZGF0ZVByaXZhdGVNZXNzYWdlc1RvVHJhc2goCisJCQkJCQlwcml2YXRlTWVzc2FnZUlkcywgaXNUcmFzaCwgMEwpOworCisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW21vdmVNYWlsc1RvVHJhc2hdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gLTE7CisJfQorCisJcHVibGljIEludGVnZXIgZGVsZXRlUHJpdmF0ZU1lc3NhZ2VzKFN0cmluZyBTSUQsCisJCQlAU3VwcHJlc3NXYXJuaW5ncygicmF3dHlwZXMiKSBMaXN0IHByaXZhdGVNZXNzYWdlSW50c0lkcykgeworCQl0cnkgeworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCQkvLyB1c2VycyBvbmx5CisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1VzZXJMZXZlbCh1c2VyX2xldmVsKSkgeworCisJCQkJTGlzdDxMb25nPiBwcml2YXRlTWVzc2FnZUlkcyA9IG5ldyBMaW5rZWRMaXN0PExvbmc+KCk7CisKKwkJCQlmb3IgKE9iamVjdCBwTWVzc2FnZUlkIDogcHJpdmF0ZU1lc3NhZ2VJbnRzSWRzKSB7CisJCQkJCXByaXZhdGVNZXNzYWdlSWRzLmFkZChMb25nLnZhbHVlT2YocE1lc3NhZ2VJZC50b1N0cmluZygpKQorCQkJCQkJCS5sb25nVmFsdWUoKSk7CisJCQkJfQorCisJCQkJcmV0dXJuIHByaXZhdGVNZXNzYWdlc0RhbworCQkJCQkJLmRlbGV0ZVByaXZhdGVNZXNzYWdlcyhwcml2YXRlTWVzc2FnZUlkcyk7CisKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbbWFya1JlYWRTdGF0dXNNYWlsc10iLCBlcnIpOworCQl9CisJCXJldHVybiAtMTsKKwl9CisKKwlwdWJsaWMgSW50ZWdlciBtYXJrUmVhZFN0YXR1c01haWxzKFN0cmluZyBTSUQsCisJCQlAU3VwcHJlc3NXYXJuaW5ncygicmF3dHlwZXMiKSBMaXN0IHByaXZhdGVNZXNzYWdlSW50c0lkcywKKwkJCUJvb2xlYW4gaXNSZWFkKSB7CisJCXRyeSB7CisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJCS8vIHVzZXJzIG9ubHkKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrVXNlckxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlMaXN0PExvbmc+IHByaXZhdGVNZXNzYWdlSWRzID0gbmV3IExpbmtlZExpc3Q8TG9uZz4oKTsKKworCQkJCWZvciAoT2JqZWN0IHBNZXNzYWdlSWQgOiBwcml2YXRlTWVzc2FnZUludHNJZHMpIHsKKwkJCQkJcHJpdmF0ZU1lc3NhZ2VJZHMuYWRkKExvbmcudmFsdWVPZihwTWVzc2FnZUlkLnRvU3RyaW5nKCkpCisJCQkJCQkJLmxvbmdWYWx1ZSgpKTsKKwkJCQl9CisKKwkJCQlsb2cuZGVidWcoIm1hcmtSZWFkU3RhdHVzTWFpbHMgOjogIiArIGlzUmVhZCk7CisKKwkJCQlyZXR1cm4gcHJpdmF0ZU1lc3NhZ2VzRGFvLnVwZGF0ZVByaXZhdGVNZXNzYWdlc1JlYWRTdGF0dXMoCisJCQkJCQlwcml2YXRlTWVzc2FnZUlkcywgaXNSZWFkKTsKKworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIlttYXJrUmVhZFN0YXR1c01haWxzXSIsIGVycik7CisJCX0KKwkJcmV0dXJuIC0xOworCX0KKworCXB1YmxpYyBJbnRlZ2VyIG1hcmtSZWFkU3RhdHVzTWFpbChTdHJpbmcgU0lELCBMb25nIHByaXZhdGVNZXNzYWdlSWQsCisJCQlCb29sZWFuIGlzUmVhZCkgeworCQl0cnkgeworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCQkvLyB1c2VycyBvbmx5CisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1VzZXJMZXZlbCh1c2VyX2xldmVsKSkgeworCisJCQkJTGlzdDxMb25nPiBwcml2YXRlTWVzc2FnZUlkcyA9IG5ldyBMaW5rZWRMaXN0PExvbmc+KCk7CisJCQkJcHJpdmF0ZU1lc3NhZ2VJZHMuYWRkKHByaXZhdGVNZXNzYWdlSWQpOworCisJCQkJcmV0dXJuIHByaXZhdGVNZXNzYWdlc0Rhby51cGRhdGVQcml2YXRlTWVzc2FnZXNSZWFkU3RhdHVzKAorCQkJCQkJcHJpdmF0ZU1lc3NhZ2VJZHMsIGlzUmVhZCk7CisKKwkJCQkvLyBQcml2YXRlTWVzc2FnZXMgcHJpdmF0ZU1lc3NhZ2UgPQorCQkJCS8vIHByaXZhdGVNZXNzYWdlc0Rhby5nZXRQcml2YXRlTWVzc2FnZXNCeUlkKHByaXZhdGVNZXNzYWdlSWQpOworCQkJCS8vCisJCQkJLy8gcHJpdmF0ZU1lc3NhZ2Uuc2V0SXNSZWFkKGlzUmVhZCk7CisJCQkJLy8KKwkJCQkvLyBwcml2YXRlTWVzc2FnZXNEYW8udXBkYXRlUHJpdmF0ZU1lc3NhZ2VzKHByaXZhdGVNZXNzYWdlKTsKKworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIlttYXJrUmVhZFN0YXR1c01haWxdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgTGlzdDxQcml2YXRlTWVzc2FnZUZvbGRlcj4gZ2V0UHJpdmF0ZU1lc3NhZ2VGb2xkZXJzQnlVc2VyKFN0cmluZyBTSUQpIHsKKwkJdHJ5IHsKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQkJLy8gdXNlcnMgb25seQorCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tVc2VyTGV2ZWwodXNlcl9sZXZlbCkpIHsKKworCQkJCXJldHVybiBwcml2YXRlTWVzc2FnZUZvbGRlckRhbworCQkJCQkJLmdldFByaXZhdGVNZXNzYWdlRm9sZGVyQnlVc2VySWQodXNlcnNfaWQpOworCisJCQl9CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbZ2V0UHJpdmF0ZU1lc3NhZ2VGb2xkZXJCeVVzZXJdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgTG9uZyBhZGRQcml2YXRlTWVzc2FnZUZvbGRlcihTdHJpbmcgU0lELCBTdHJpbmcgZm9sZGVyTmFtZSkgeworCQl0cnkgeworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCQkvLyB1c2VycyBvbmx5CisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1VzZXJMZXZlbCh1c2VyX2xldmVsKSkgeworCisJCQkJcHJpdmF0ZU1lc3NhZ2VGb2xkZXJEYW8uYWRkUHJpdmF0ZU1lc3NhZ2VGb2xkZXIoZm9sZGVyTmFtZSwKKwkJCQkJCXVzZXJzX2lkKTsKKworCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2FkZFByaXZhdGVNZXNzYWdlRm9sZGVyXSIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIEJvb2xlYW4gY2hlY2tVc2VySXNJbkNvbnRhY3RMaXN0KFN0cmluZyBTSUQsIExvbmcgdXNlcl9pZCkgeworCQl0cnkgeworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisJCQkvLyB1c2VycyBvbmx5CisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1VzZXJMZXZlbCh1c2VyX2xldmVsKSkgeworCisJCQkJTGlzdDxVc2VyQ29udGFjdD4gdUxpc3QgPSB1c2VyQ29udGFjdHNEYW8KKwkJCQkJCS5nZXRDb250YWN0c0J5VXNlckFuZFN0YXR1cyh1c2Vyc19pZCwgZmFsc2UpOworCisJCQkJZm9yIChVc2VyQ29udGFjdCB1c2VyQ29udGFjdCA6IHVMaXN0KSB7CisKKwkJCQkJaWYgKHVzZXJDb250YWN0LmdldENvbnRhY3QoKS5nZXRVc2VyX2lkKCkuZXF1YWxzKHVzZXJfaWQpKSB7CisJCQkJCQlyZXR1cm4gdHJ1ZTsKKwkJCQkJfQorCisJCQkJfQorCisJCQkJcmV0dXJuIGZhbHNlOworCisJCQl9CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbY2hlY2tVc2VySXNJbkNvbnRhY3RMaXN0XSIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIHZvaWQgc2hhcmVDYWxlbmRhclVzZXJDb250YWN0KFN0cmluZyBTSUQsIExvbmcgdXNlckNvbnRhY3RJZCwKKwkJCUJvb2xlYW4gc2hhcmVDYWxlbmRhcikgeworCQl0cnkgeworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisKKwkJCS8vIHVzZXJzIG9ubHkKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrVXNlckxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlVc2VyQ29udGFjdCB1c2VyQ29udGFjdHMgPSB1c2VyQ29udGFjdHNEYW8KKwkJCQkJCS5nZXRVc2VyQ29udGFjdHModXNlckNvbnRhY3RJZCk7CisKKwkJCQl1c2VyQ29udGFjdHMuc2V0U2hhcmVDYWxlbmRhcihzaGFyZUNhbGVuZGFyKTsKKworCQkJCXVzZXJDb250YWN0c0Rhby51cGRhdGVDb250YWN0KHVzZXJDb250YWN0cyk7CisKKwkJCX0KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltzaGFyZUNhbGVuZGFyVXNlckNvbnRhY3RdIiwgZXJyKTsKKwkJfQorCX0KKworCXB1YmxpYyBMb25nIHVwZGF0ZVByaXZhdGVNZXNzYWdlRm9sZGVyKFN0cmluZyBTSUQsCisJCQlMb25nIHByaXZhdGVNZXNzYWdlRm9sZGVySWQsIFN0cmluZyBmb2xkZXJOYW1lKSB7CisJCXRyeSB7CisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJCS8vIHVzZXJzIG9ubHkKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrVXNlckxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlQcml2YXRlTWVzc2FnZUZvbGRlciBwcml2YXRlTWVzc2FnZUZvbGRlciA9IHByaXZhdGVNZXNzYWdlRm9sZGVyRGFvCisJCQkJCQkuZ2V0UHJpdmF0ZU1lc3NhZ2VGb2xkZXJCeUlkKHByaXZhdGVNZXNzYWdlRm9sZGVySWQpOworCisJCQkJcHJpdmF0ZU1lc3NhZ2VGb2xkZXIuc2V0Rm9sZGVyTmFtZShmb2xkZXJOYW1lKTsKKwkJCQlwcml2YXRlTWVzc2FnZUZvbGRlci5zZXRVcGRhdGVkKG5ldyBEYXRlKCkpOworCisJCQkJcHJpdmF0ZU1lc3NhZ2VGb2xkZXJEYW8KKwkJCQkJCS51cGRhdGVQcml2YXRlTWVzc2FnZXMocHJpdmF0ZU1lc3NhZ2VGb2xkZXIpOworCisJCQkJcmV0dXJuIHByaXZhdGVNZXNzYWdlRm9sZGVySWQ7CisKKwkJCX0KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIlt1cGRhdGVQcml2YXRlTWVzc2FnZUZvbGRlcl0iLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMb25nIGRlbGV0ZVByaXZhdGVNZXNzYWdlRm9sZGVyKFN0cmluZyBTSUQsCisJCQlMb25nIHByaXZhdGVNZXNzYWdlRm9sZGVySWQpIHsKKwkJdHJ5IHsKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQkJLy8gdXNlcnMgb25seQorCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tVc2VyTGV2ZWwodXNlcl9sZXZlbCkpIHsKKworCQkJCVByaXZhdGVNZXNzYWdlRm9sZGVyIHByaXZhdGVNZXNzYWdlRm9sZGVyID0gcHJpdmF0ZU1lc3NhZ2VGb2xkZXJEYW8KKwkJCQkJCS5nZXRQcml2YXRlTWVzc2FnZUZvbGRlckJ5SWQocHJpdmF0ZU1lc3NhZ2VGb2xkZXJJZCk7CisKKwkJCQlwcml2YXRlTWVzc2FnZUZvbGRlckRhbworCQkJCQkJLmRlbGV0ZVByaXZhdGVNZXNzYWdlcyhwcml2YXRlTWVzc2FnZUZvbGRlcik7CisKKwkJCX0KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltkZWxldGVQcml2YXRlTWVzc2FnZUZvbGRlcl0iLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMaXN0PFVzZXJDb250YWN0PiBnZXRVc2VyQ29udGFjdHNXaXRoU2hhcmVDYWxlbmRhcihTdHJpbmcgU0lEKSB7CisJCXRyeSB7CisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKwkJCS8vIHVzZXJzIG9ubHkKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrVXNlckxldmVsKHVzZXJfbGV2ZWwpKSB7CisKKwkJCQlyZXR1cm4gdXNlckNvbnRhY3RzRGFvLmdldENvbnRhY3RzQnlTaGFyZUNhbGVuZGFyKHVzZXJzX2lkLAorCQkJCQkJdHJ1ZSk7CisKKwkJCX0KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRDb250YWN0c0J5U2hhcmVDYWxlbmRhcl0iLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCS8qKgorCSAqIEtpY2sgYSB1c2VyIGJ5IGl0cyBwdWJsaWNTSUQuPGJyLz4KKwkgKiA8YnIvPgorCSAqIDxpPk5vdGU6PC9pPgorCSAqIFRoaXMgbWV0aG9kIHdpbGwgbm90IHBlcmZvcm0gYSBjYWxsIHRvIHRoZSBzbGF2ZSwgY2F1c2UgdGhpcyBjYWxsIGNhbiBvbmx5IGJlIAorCSAqIGludm9rZWQgZnJvbSBpbnNpZGUgdGhlIGNvbmZlcmVuY2Ugcm9vbSwgdGhhdCBtZWFucyBhbGwgY2xpZW50cyBhcmUgb24gdGhlCisJICogc2FtZSBzZXJ2ZXIsIG5vIG1hdHRlciBpZiBjbHVzdGVyZWQgb3Igbm90LgorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiBAcGFyYW0gcHVibGljU0lECisJICogQHJldHVybiAtIHRydWUgaW4gY2FzZSB1c2VyIGhhdmUgc3VmZmljaWVudCBwZXJtaXNzaW9ucywgbnVsbCBvdGhlcndpc2UKKwkgKi8KKwlwdWJsaWMgQm9vbGVhbiBraWNrVXNlckJ5UHVibGljU0lEKFN0cmluZyBTSUQsIFN0cmluZyBwdWJsaWNTSUQpIHsKKwkJdHJ5IHsKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCQkJLy8gdXNlcnMgb25seQorCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tVc2VyTGV2ZWwodXNlcl9sZXZlbCkpIHsKKworCQkJCUNsaWVudCByY2wgPSB0aGlzLnNlc3Npb25NYW5hZ2VyLmdldENsaWVudEJ5UHVibGljU0lEKAorCQkJCQkJcHVibGljU0lELCBmYWxzZSwgbnVsbCk7CisKKwkJCQlpZiAocmNsID09IG51bGwpIHsKKwkJCQkJcmV0dXJuIHRydWU7CisJCQkJfQorCQkJCVN0cmluZyBzY29wZU5hbWUgPSAiaGliZXJuYXRlIjsKKwkJCQlpZiAocmNsLmdldFJvb21faWQoKSAhPSBudWxsKSB7CisJCQkJCXNjb3BlTmFtZSA9IHJjbC5nZXRSb29tX2lkKCkudG9TdHJpbmcoKTsKKwkJCQl9CisJCQkJSVNjb3BlIGN1cnJlbnRTY29wZSA9IHRoaXMuc2NvcGVBcHBsaWNhdGlvbkFkYXB0ZXIKKwkJCQkJCS5nZXRSb29tU2NvcGUoc2NvcGVOYW1lKTsKKworCQkJCUhhc2hNYXA8SW50ZWdlciwgU3RyaW5nPiBtZXNzYWdlT2JqID0gbmV3IEhhc2hNYXA8SW50ZWdlciwgU3RyaW5nPigpOworCQkJCW1lc3NhZ2VPYmoucHV0KDAsICJraWNrIik7CisKKwkJCQl0aGlzLnNjb3BlQXBwbGljYXRpb25BZGFwdGVyLnNlbmRNZXNzYWdlQnlJZChtZXNzYWdlT2JqLAorCQkJCQkJcmNsLmdldFN0cmVhbWlkKCksIGN1cnJlbnRTY29wZSk7CisKKwkJCQl0aGlzLnNjb3BlQXBwbGljYXRpb25BZGFwdGVyLnJvb21MZWF2ZUJ5U2NvcGUocmNsLAorCQkJCQkJY3VycmVudFNjb3BlLCB0cnVlKTsKKworCQkJCXJldHVybiB0cnVlOworCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2tpY2tVc2VyQnlTdHJlYW1JZF0iLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9yZW1vdGUvV2hpdGVCb2FyZFNlcnZpY2UuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9yZW1vdGUvV2hpdGVCb2FyZFNlcnZpY2UuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjFkMzkzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3JlbW90ZS9XaGl0ZUJvYXJkU2VydmljZS5qYXZhCkBAIC0wLDAgKzEsNjY3IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnJlbW90ZTsKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLmlvLkZpbGVuYW1lRmlsdGVyOworaW1wb3J0IGphdmEudXRpbC5BcnJheXM7CitpbXBvcnQgamF2YS51dGlsLkNvbXBhcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworaW1wb3J0IGphdmEudXRpbC5MaW5rZWRMaXN0OworaW1wb3J0IGphdmEudXRpbC5NYXA7CisKK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29sbGVjdGlvbnMuQ29tcGFyYXRvclV0aWxzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuQXV0aExldmVsVXRpbDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLlNlc3Npb25kYXRhRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEudXNlci5Vc2VyTWFuYWdlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLndoaXRlYm9hcmQuV2hpdGVCb2FyZE9iamVjdExpc3RNYW5hZ2VyQnlJZDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLndoaXRlYm9hcmQuV2hpdGVCb2FyZE9iamVjdFN5bmNNYW5hZ2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEud2hpdGVib2FyZC5kdG8uQ2xpcGFydHM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS53aGl0ZWJvYXJkLmR0by5XaGl0ZWJvYXJkT2JqZWN0OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEud2hpdGVib2FyZC5kdG8uV2hpdGVib2FyZE9iamVjdExpc3Q7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS53aGl0ZWJvYXJkLmR0by5XaGl0ZWJvYXJkU3luY0xvY2tPYmplY3Q7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbS5DbGllbnQ7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucmVtb3RlLnJlZDUuU2NvcGVBcHBsaWNhdGlvbkFkYXB0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2Vzc2lvbi5JU2Vzc2lvbk1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMuT21GaWxlSGVscGVyOworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnJlZDUuc2VydmVyLmFwaS5JQ29ubmVjdGlvbjsKK2ltcG9ydCBvcmcucmVkNS5zZXJ2ZXIuYXBpLlJlZDU7CitpbXBvcnQgb3JnLnJlZDUuc2VydmVyLmFwaS5zY29wZS5JU2NvcGU7CitpbXBvcnQgb3JnLnJlZDUuc2VydmVyLmFwaS5zZXJ2aWNlLklQZW5kaW5nU2VydmljZUNhbGw7CitpbXBvcnQgb3JnLnJlZDUuc2VydmVyLmFwaS5zZXJ2aWNlLklQZW5kaW5nU2VydmljZUNhbGxiYWNrOworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uQXV0b3dpcmVkOworCisvKioKKyAqIAorICogQGF1dGhvciBzZWJhc3RpYW53YWduZXIKKyAqIAorICovCitwdWJsaWMgY2xhc3MgV2hpdGVCb2FyZFNlcnZpY2UgaW1wbGVtZW50cyBJUGVuZGluZ1NlcnZpY2VDYWxsYmFjayB7CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKAorCQkJV2hpdGVCb2FyZFNlcnZpY2UuY2xhc3MsICJvcGVubWVldGluZ3MiKTsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBVc2VyTWFuYWdlciB1c2VyTWFuYWdlcjsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBmaW5hbCBTY29wZUFwcGxpY2F0aW9uQWRhcHRlciBzY29wZUFwcGxpY2F0aW9uQWRhcHRlciA9IG51bGw7CisJQEF1dG93aXJlZAorCXByaXZhdGUgZmluYWwgSVNlc3Npb25NYW5hZ2VyIHNlc3Npb25NYW5hZ2VyID0gbnVsbDsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBmaW5hbCBXaGl0ZUJvYXJkT2JqZWN0U3luY01hbmFnZXIgd2hpdGVCb2FyZE9iamVjdExpc3RNYW5hZ2VyID0gbnVsbDsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBmaW5hbCBXaGl0ZUJvYXJkT2JqZWN0TGlzdE1hbmFnZXJCeUlkIHdoaXRlQm9hcmRPYmplY3RMaXN0TWFuYWdlckJ5SWQgPSBudWxsOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFNlc3Npb25kYXRhRGFvIHNlc3Npb25kYXRhRGFvOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEF1dGhMZXZlbFV0aWwgYXV0aExldmVsVXRpbDsKKworCXB1YmxpYyBMb25nIGdldE5ld1doaXRlYm9hcmRJZCgpIHsKKwkJdHJ5IHsKKworCQkJSUNvbm5lY3Rpb24gY3VycmVudCA9IFJlZDUuZ2V0Q29ubmVjdGlvbkxvY2FsKCk7CisJCQlTdHJpbmcgc3RyZWFtaWQgPSBjdXJyZW50LmdldENsaWVudCgpLmdldElkKCk7CisJCQlDbGllbnQgY3VycmVudENsaWVudCA9IHRoaXMuc2Vzc2lvbk1hbmFnZXIKKwkJCQkJLmdldENsaWVudEJ5U3RyZWFtSWQoc3RyZWFtaWQsIG51bGwpOworCQkJTG9uZyByb29tX2lkID0gY3VycmVudENsaWVudC5nZXRSb29tX2lkKCk7CisKKwkJCUxvbmcgd2hpdGVCb2FyZElkID0gdGhpcy53aGl0ZUJvYXJkT2JqZWN0TGlzdE1hbmFnZXJCeUlkCisJCQkJCS5nZXROZXdXaGl0ZWJvYXJkSWQocm9vbV9pZCk7CisKKwkJCXJldHVybiB3aGl0ZUJvYXJkSWQ7CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbZGVsZXRlV2hpdGVib2FyZF0iLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBCb29sZWFuIGRlbGV0ZVdoaXRlYm9hcmQoTG9uZyB3aGl0ZUJvYXJkSWQpIHsKKwkJdHJ5IHsKKwkJCUlDb25uZWN0aW9uIGN1cnJlbnQgPSBSZWQ1LmdldENvbm5lY3Rpb25Mb2NhbCgpOworCQkJU3RyaW5nIHN0cmVhbWlkID0gY3VycmVudC5nZXRDbGllbnQoKS5nZXRJZCgpOworCQkJQ2xpZW50IGN1cnJlbnRDbGllbnQgPSB0aGlzLnNlc3Npb25NYW5hZ2VyCisJCQkJCS5nZXRDbGllbnRCeVN0cmVhbUlkKHN0cmVhbWlkLCBudWxsKTsKKwkJCUxvbmcgcm9vbV9pZCA9IGN1cnJlbnRDbGllbnQuZ2V0Um9vbV9pZCgpOworCisJCQlXaGl0ZWJvYXJkT2JqZWN0TGlzdCB3aGl0ZWJvYXJkT2JqZWN0TGlzdCA9IHRoaXMud2hpdGVCb2FyZE9iamVjdExpc3RNYW5hZ2VyQnlJZAorCQkJCQkuZ2V0V2hpdGVCb2FyZE9iamVjdExpc3RCeVJvb21JZChyb29tX2lkKTsKKworCQkJZm9yIChJdGVyYXRvcjxMb25nPiBpdGVyID0gd2hpdGVib2FyZE9iamVjdExpc3QKKwkJCQkJLmdldFdoaXRlYm9hcmRPYmplY3RzKCkua2V5U2V0KCkuaXRlcmF0b3IoKTsgaXRlci5oYXNOZXh0KCk7KSB7CisJCQkJTG9uZyBzdG9yZWRXaGl0ZWJvYXJkSWQgPSBpdGVyLm5leHQoKTsKKworCQkJCWxvZy5kZWJ1ZygiIDo6IHN0b3JlZFdoaXRlYm9hcmRJZCA6OiAiICsgc3RvcmVkV2hpdGVib2FyZElkKTsKKworCQkJCWlmIChzdG9yZWRXaGl0ZWJvYXJkSWQuZXF1YWxzKHdoaXRlQm9hcmRJZCkpIHsKKwkJCQkJbG9nLmRlYnVnKCJGb3VuZCBXaGl0ZWJvYXJkIHRvIFJlbW92ZSIpOworCQkJCX0KKwkJCX0KKwkJCU9iamVjdCByZXR1cm5WYWx1ZSA9IHdoaXRlYm9hcmRPYmplY3RMaXN0LmdldFdoaXRlYm9hcmRPYmplY3RzKCkKKwkJCQkJLnJlbW92ZSh3aGl0ZUJvYXJkSWQpOworCisJCQlsb2cuZGVidWcoIiA6OiB3aGl0ZUJvYXJkSWQgOjogIiArIHdoaXRlQm9hcmRJZCk7CisKKwkJCXRoaXMud2hpdGVCb2FyZE9iamVjdExpc3RNYW5hZ2VyQnlJZAorCQkJCQkuc2V0V2hpdGVCb2FyZE9iamVjdExpc3RSb29tT2JqKHJvb21faWQsCisJCQkJCQkJd2hpdGVib2FyZE9iamVjdExpc3QpOworCisJCQlpZiAocmV0dXJuVmFsdWUgIT0gbnVsbCkgeworCQkJCXJldHVybiB0cnVlOworCQkJfSBlbHNlIHsKKwkJCQlyZXR1cm4gZmFsc2U7CisJCQl9CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbZGVsZXRlV2hpdGVib2FyZF0iLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBXaGl0ZWJvYXJkT2JqZWN0TGlzdCBnZXRSb29tSXRlbXNCeSgpIHsKKwkJdHJ5IHsKKwkJCUlDb25uZWN0aW9uIGN1cnJlbnQgPSBSZWQ1LmdldENvbm5lY3Rpb25Mb2NhbCgpOworCQkJU3RyaW5nIHN0cmVhbWlkID0gY3VycmVudC5nZXRDbGllbnQoKS5nZXRJZCgpOworCQkJQ2xpZW50IGN1cnJlbnRDbGllbnQgPSB0aGlzLnNlc3Npb25NYW5hZ2VyCisJCQkJCS5nZXRDbGllbnRCeVN0cmVhbUlkKHN0cmVhbWlkLCBudWxsKTsKKwkJCUxvbmcgcm9vbV9pZCA9IGN1cnJlbnRDbGllbnQuZ2V0Um9vbV9pZCgpOworCisJCQlsb2cuZGVidWcoImdldFJvb21JdGVtczogIiArIHJvb21faWQpOworCQkJV2hpdGVib2FyZE9iamVjdExpc3Qgd2hpdGVib2FyZE9iamVjdExpc3QgPSB0aGlzLndoaXRlQm9hcmRPYmplY3RMaXN0TWFuYWdlckJ5SWQKKwkJCQkJLmdldFdoaXRlQm9hcmRPYmplY3RMaXN0QnlSb29tSWQocm9vbV9pZCk7CisKKwkJCWlmICh3aGl0ZWJvYXJkT2JqZWN0TGlzdC5nZXRXaGl0ZWJvYXJkT2JqZWN0cygpLnNpemUoKSA9PSAwKSB7CisKKwkJCQlMb25nIHdoaXRlQm9hcmRJZCA9IHRoaXMud2hpdGVCb2FyZE9iamVjdExpc3RNYW5hZ2VyQnlJZAorCQkJCQkJLmdldE5ld1doaXRlYm9hcmRJZChyb29tX2lkKTsKKworCQkJCXRoaXMud2hpdGVCb2FyZE9iamVjdExpc3RNYW5hZ2VyQnlJZAorCQkJCQkJLnNldFdoaXRlQm9hcmRPYmplY3RMaXN0Um9vbU9iakFuZFdoaXRlYm9hcmRJZChyb29tX2lkLAorCQkJCQkJCQluZXcgV2hpdGVib2FyZE9iamVjdCgpLCB3aGl0ZUJvYXJkSWQpOworCisJCQkJbG9nLmRlYnVnKCJJbml0IE5ldyBSb29tIExpc3QiKTsKKworCQkJCXdoaXRlYm9hcmRPYmplY3RMaXN0ID0gdGhpcy53aGl0ZUJvYXJkT2JqZWN0TGlzdE1hbmFnZXJCeUlkCisJCQkJCQkuZ2V0V2hpdGVCb2FyZE9iamVjdExpc3RCeVJvb21JZChyb29tX2lkKTsKKworCQkJCXJldHVybiB3aGl0ZWJvYXJkT2JqZWN0TGlzdDsKKworCQkJfSBlbHNlIHsKKworCQkJCXJldHVybiB3aGl0ZWJvYXJkT2JqZWN0TGlzdDsKKworCQkJfQorCisJCQkvLyByZXR1cm4gY29tcGxldGVMaXN0OworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRSb29tSXRlbXNCeV0iLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCS8qKgorCSAqIGNoYW5nZSB0aGUgZHJhdyBzdGF0dXMgb2YgYSB1c2VyLCBhbGxvdyBkaXNhbGxvdyBoaW0gdG8gZHJhdyBhbnlib2R5CisJICogYmVzaWRlcyB0aGUgTW9kZXJhdG9yIHRvIGRyYXcgb24gdGhlIHdoaXRlYm9hcmQsIG9ubHkgYSBNb2RlcmF0b3IgaXMKKwkgKiBhbGxvd2VkIHRvIHRyaWdnZXIgdGhpcyBmdW5jdGlvbgorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiBAcGFyYW0gcHVibGljU0lECisJICogQHBhcmFtIGNhbkRyYXcKKwkgKiBAcmV0dXJuIG51bGwgaW4gY2FzZSBvZiBzdWNjZXNzLCBmYWxzZSBvdGhlcndpc2UKKwkgKi8KKwlwdWJsaWMgQm9vbGVhbiBzZXRDYW5EcmF3KFN0cmluZyBTSUQsIFN0cmluZyBwdWJsaWNTSUQsIGJvb2xlYW4gY2FuRHJhdykgeworCQl0cnkgeworCisJCQlJQ29ubmVjdGlvbiBjdXJyZW50ID0gUmVkNS5nZXRDb25uZWN0aW9uTG9jYWwoKTsKKwkJCVN0cmluZyBzdHJlYW1pZCA9IGN1cnJlbnQuZ2V0Q2xpZW50KCkuZ2V0SWQoKTsKKwkJCUNsaWVudCBjdXJyZW50Q2xpZW50ID0gdGhpcy5zZXNzaW9uTWFuYWdlcgorCQkJCQkuZ2V0Q2xpZW50QnlTdHJlYW1JZChzdHJlYW1pZCwgbnVsbCk7CisKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1VzZXJMZXZlbCh1c2VyX2xldmVsKSkgeworCisJCQkJaWYgKGN1cnJlbnRDbGllbnQuZ2V0SXNNb2QoKSkgeworCQkJCQlDbGllbnQgcmNsID0gdGhpcy5zZXNzaW9uTWFuYWdlcgorCQkJCQkJCS5nZXRDbGllbnRCeVB1YmxpY1NJRChwdWJsaWNTSUQsIGZhbHNlLCBudWxsKTsKKworCQkJCQlpZiAocmNsICE9IG51bGwpIHsKKwkJCQkJCXJjbC5zZXRDYW5EcmF3KGNhbkRyYXcpOworCQkJCQkJdGhpcy5zZXNzaW9uTWFuYWdlci51cGRhdGVDbGllbnRCeVN0cmVhbUlkKAorCQkJCQkJCQlyY2wuZ2V0U3RyZWFtaWQoKSwgcmNsLCBmYWxzZSwgbnVsbCk7CisKKwkJCQkJCUhhc2hNYXA8SW50ZWdlciwgT2JqZWN0PiBuZXdNZXNzYWdlID0gbmV3IEhhc2hNYXA8SW50ZWdlciwgT2JqZWN0PigpOworCQkJCQkJbmV3TWVzc2FnZS5wdXQoMCwgInVwZGF0ZURyYXdTdGF0dXMiKTsKKwkJCQkJCW5ld01lc3NhZ2UucHV0KDEsIHJjbCk7CisJCQkJCQl0aGlzLnNjb3BlQXBwbGljYXRpb25BZGFwdGVyCisJCQkJCQkJCS5zZW5kTWVzc2FnZVdpdGhDbGllbnRXaXRoU3luY09iamVjdChuZXdNZXNzYWdlLCB0cnVlKTsKKworCQkJCQl9IGVsc2UgeworCQkJCQkJcmV0dXJuIGZhbHNlOworCQkJCQl9CisJCQkJfSBlbHNlIHsKKwkJCQkJcmV0dXJuIGZhbHNlOworCQkJCX0KKwkJCX0KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltzZXRDYW5EcmF3XSIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIEJvb2xlYW4gc2V0Q2FuU2hhcmUoU3RyaW5nIFNJRCwgU3RyaW5nIHB1YmxpY1NJRCwgYm9vbGVhbiBjYW5TaGFyZSkgeworCQl0cnkgeworCisJCQlJQ29ubmVjdGlvbiBjdXJyZW50ID0gUmVkNS5nZXRDb25uZWN0aW9uTG9jYWwoKTsKKwkJCVN0cmluZyBzdHJlYW1pZCA9IGN1cnJlbnQuZ2V0Q2xpZW50KCkuZ2V0SWQoKTsKKwkJCUNsaWVudCBjdXJyZW50Q2xpZW50ID0gdGhpcy5zZXNzaW9uTWFuYWdlcgorCQkJCQkuZ2V0Q2xpZW50QnlTdHJlYW1JZChzdHJlYW1pZCwgbnVsbCk7CisKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oU0lEKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IHVzZXJNYW5hZ2VyLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCisJCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja1VzZXJMZXZlbCh1c2VyX2xldmVsKSkgeworCisJCQkJaWYgKGN1cnJlbnRDbGllbnQuZ2V0SXNNb2QoKSkgeworCQkJCQlDbGllbnQgcmNsID0gdGhpcy5zZXNzaW9uTWFuYWdlcgorCQkJCQkJCS5nZXRDbGllbnRCeVB1YmxpY1NJRChwdWJsaWNTSUQsIGZhbHNlLCBudWxsKTsKKworCQkJCQlpZiAocmNsICE9IG51bGwpIHsKKwkJCQkJCXJjbC5zZXRDYW5TaGFyZShjYW5TaGFyZSk7CisJCQkJCQl0aGlzLnNlc3Npb25NYW5hZ2VyLnVwZGF0ZUNsaWVudEJ5U3RyZWFtSWQoCisJCQkJCQkJCXJjbC5nZXRTdHJlYW1pZCgpLCByY2wsIGZhbHNlLCBudWxsKTsKKworCQkJCQkJSGFzaE1hcDxJbnRlZ2VyLCBPYmplY3Q+IG5ld01lc3NhZ2UgPSBuZXcgSGFzaE1hcDxJbnRlZ2VyLCBPYmplY3Q+KCk7CisJCQkJCQluZXdNZXNzYWdlLnB1dCgwLCAidXBkYXRlRHJhd1N0YXR1cyIpOworCQkJCQkJbmV3TWVzc2FnZS5wdXQoMSwgcmNsKTsKKwkJCQkJCXRoaXMuc2NvcGVBcHBsaWNhdGlvbkFkYXB0ZXIKKwkJCQkJCQkJLnNlbmRNZXNzYWdlV2l0aENsaWVudFdpdGhTeW5jT2JqZWN0KG5ld01lc3NhZ2UsIHRydWUpOworCisJCQkJCX0gZWxzZSB7CisJCQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJCX0KKwkJCQl9IGVsc2UgeworCQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJfQorCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW3NldENhbkRyYXddIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgQm9vbGVhbiBzZXRDYW5SZW1vdGUoU3RyaW5nIFNJRCwgU3RyaW5nIHB1YmxpY1NJRCwgYm9vbGVhbiBjYW5SZW1vdGUpIHsKKwkJdHJ5IHsKKworCQkJSUNvbm5lY3Rpb24gY3VycmVudCA9IFJlZDUuZ2V0Q29ubmVjdGlvbkxvY2FsKCk7CisJCQlTdHJpbmcgc3RyZWFtaWQgPSBjdXJyZW50LmdldENsaWVudCgpLmdldElkKCk7CisJCQlDbGllbnQgY3VycmVudENsaWVudCA9IHRoaXMuc2Vzc2lvbk1hbmFnZXIKKwkJCQkJLmdldENsaWVudEJ5U3RyZWFtSWQoc3RyZWFtaWQsIG51bGwpOworCisJCQlMb25nIHVzZXJzX2lkID0gc2Vzc2lvbmRhdGFEYW8uY2hlY2tTZXNzaW9uKFNJRCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKworCQkJaWYgKGF1dGhMZXZlbFV0aWwuY2hlY2tVc2VyTGV2ZWwodXNlcl9sZXZlbCkpIHsKKworCQkJCWlmIChjdXJyZW50Q2xpZW50LmdldElzTW9kKCkpIHsKKwkJCQkJQ2xpZW50IHJjbCA9IHRoaXMuc2Vzc2lvbk1hbmFnZXIKKwkJCQkJCQkuZ2V0Q2xpZW50QnlQdWJsaWNTSUQocHVibGljU0lELCBmYWxzZSwgbnVsbCk7CisKKwkJCQkJaWYgKHJjbCAhPSBudWxsKSB7CisJCQkJCQlyY2wuc2V0Q2FuUmVtb3RlKGNhblJlbW90ZSk7CisJCQkJCQl0aGlzLnNlc3Npb25NYW5hZ2VyLnVwZGF0ZUNsaWVudEJ5U3RyZWFtSWQoCisJCQkJCQkJCXJjbC5nZXRTdHJlYW1pZCgpLCByY2wsIGZhbHNlLCBudWxsKTsKKworCQkJCQkJSGFzaE1hcDxJbnRlZ2VyLCBPYmplY3Q+IG5ld01lc3NhZ2UgPSBuZXcgSGFzaE1hcDxJbnRlZ2VyLCBPYmplY3Q+KCk7CisJCQkJCQluZXdNZXNzYWdlLnB1dCgwLCAidXBkYXRlRHJhd1N0YXR1cyIpOworCQkJCQkJbmV3TWVzc2FnZS5wdXQoMSwgcmNsKTsKKwkJCQkJCXRoaXMuc2NvcGVBcHBsaWNhdGlvbkFkYXB0ZXIKKwkJCQkJCQkJLnNlbmRNZXNzYWdlV2l0aENsaWVudFdpdGhTeW5jT2JqZWN0KG5ld01lc3NhZ2UsIHRydWUpOworCisJCQkJCX0gZWxzZSB7CisJCQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJCX0KKwkJCQl9IGVsc2UgeworCQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJfQorCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW3NldENhbkRyYXddIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKyAgICBwdWJsaWMgQm9vbGVhbiBzZXRDYW5HaXZlQXVkaW8oU3RyaW5nIFNJRCwgU3RyaW5nIHB1YmxpY1NJRCwgYm9vbGVhbiBjYW5HaXZlQXVkaW8pIHsKKwkJdHJ5IHsKKyAgICAgICAgICAgIGxvZy5kZWJ1ZygiW3NldENhbkdpdmVBdWRpb10gIiArIFNJRCArICIsICIgKyBwdWJsaWNTSUQgKyAiLCAiICsgY2FuR2l2ZUF1ZGlvKTsKKwkJCUlDb25uZWN0aW9uIGN1cnJlbnQgPSBSZWQ1LmdldENvbm5lY3Rpb25Mb2NhbCgpOworCQkJU3RyaW5nIHN0cmVhbWlkID0gY3VycmVudC5nZXRDbGllbnQoKS5nZXRJZCgpOworCQkJQ2xpZW50IGN1cnJlbnRDbGllbnQgPSB0aGlzLnNlc3Npb25NYW5hZ2VyCisJCQkJCS5nZXRDbGllbnRCeVN0cmVhbUlkKHN0cmVhbWlkLCBudWxsKTsKKworCQkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihTSUQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gdXNlck1hbmFnZXIuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisKKwkJCWlmIChhdXRoTGV2ZWxVdGlsLmNoZWNrVXNlckxldmVsKHVzZXJfbGV2ZWwpKSB7CisJCQkJaWYgKGN1cnJlbnRDbGllbnQuZ2V0SXNNb2QoKSkgeworCQkJCQlDbGllbnQgcmNsID0gdGhpcy5zZXNzaW9uTWFuYWdlcgorCQkJCQkJCS5nZXRDbGllbnRCeVB1YmxpY1NJRChwdWJsaWNTSUQsIGZhbHNlLCBudWxsKTsKKworCQkJCQlpZiAocmNsICE9IG51bGwpIHsKKwkJCQkJCXJjbC5zZXRDYW5HaXZlQXVkaW8oY2FuR2l2ZUF1ZGlvKTsKKwkJCQkgICAgICAgIHRoaXMuc2Vzc2lvbk1hbmFnZXIudXBkYXRlQ2xpZW50QnlTdHJlYW1JZCgKKwkJCQkgICAgICAgICAgICAgICAgcmNsLmdldFN0cmVhbWlkKCksIHJjbCwgZmFsc2UsIG51bGwpOworCisJCQkJICAgICAgICBIYXNoTWFwPEludGVnZXIsIE9iamVjdD4gbmV3TWVzc2FnZSA9IG5ldyBIYXNoTWFwPEludGVnZXIsIE9iamVjdD4oKTsKKwkJCQkgICAgICAgIG5ld01lc3NhZ2UucHV0KDAsICJ1cGRhdGVHaXZlQXVkaW9TdGF0dXMiKTsKKwkJCQkgICAgICAgIG5ld01lc3NhZ2UucHV0KDEsIHJjbCk7CisJCQkJICAgICAgICB0aGlzLnNjb3BlQXBwbGljYXRpb25BZGFwdGVyCisJCQkJICAgICAgICAgICAgICAgIC5zZW5kTWVzc2FnZVdpdGhDbGllbnRXaXRoU3luY09iamVjdChuZXdNZXNzYWdlLCB0cnVlKTsKKwkJCQkJfSBlbHNlIHsKKwkJCQkJCXJldHVybiBmYWxzZTsKKwkJCQkJfQorCQkJCX0gZWxzZSB7CisJCQkJCXJldHVybiBmYWxzZTsKKwkJCQl9CisJCQl9CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbc2V0Q2FuR2l2ZUF1ZGlvXSIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIFdoaXRlYm9hcmRTeW5jTG9ja09iamVjdCBzdGFydE5ld1N5bmNwcm9jZXNzKCkgeworCQl0cnkgeworCisJCQlJQ29ubmVjdGlvbiBjdXJyZW50ID0gUmVkNS5nZXRDb25uZWN0aW9uTG9jYWwoKTsKKwkJCVN0cmluZyBzdHJlYW1pZCA9IGN1cnJlbnQuZ2V0Q2xpZW50KCkuZ2V0SWQoKTsKKwkJCUNsaWVudCBjdXJyZW50Q2xpZW50ID0gdGhpcy5zZXNzaW9uTWFuYWdlcgorCQkJCQkuZ2V0Q2xpZW50QnlTdHJlYW1JZChzdHJlYW1pZCwgbnVsbCk7CisJCQlMb25nIHJvb21faWQgPSBjdXJyZW50Q2xpZW50LmdldFJvb21faWQoKTsKKworCQkJV2hpdGVib2FyZFN5bmNMb2NrT2JqZWN0IHdTeW5jTG9ja09iamVjdCA9IG5ldyBXaGl0ZWJvYXJkU3luY0xvY2tPYmplY3QoKTsKKwkJCXdTeW5jTG9ja09iamVjdC5zZXRBZGR0aW1lKG5ldyBEYXRlKCkpOworCQkJd1N5bmNMb2NrT2JqZWN0LnNldFB1YmxpY1NJRChjdXJyZW50Q2xpZW50LmdldFB1YmxpY1NJRCgpKTsKKwkJCXdTeW5jTG9ja09iamVjdC5zZXRJbml0aWFsTG9hZGVkKHRydWUpOworCisJCQlNYXA8U3RyaW5nLCBXaGl0ZWJvYXJkU3luY0xvY2tPYmplY3Q+IHN5bmNMaXN0Um9vbSA9IHRoaXMud2hpdGVCb2FyZE9iamVjdExpc3RNYW5hZ2VyCisJCQkJCS5nZXRXaGl0ZUJvYXJkU3luY0xpc3RCeVJvb21pZChyb29tX2lkKTsKKworCQkJd1N5bmNMb2NrT2JqZWN0LnNldEN1cnJlbnRMb2FkaW5nSXRlbSh0cnVlKTsKKwkJCXdTeW5jTG9ja09iamVjdC5zZXRTdGFydHRpbWUobmV3IERhdGUoKSk7CisKKwkJCXN5bmNMaXN0Um9vbS5wdXQoY3VycmVudENsaWVudC5nZXRQdWJsaWNTSUQoKSwgd1N5bmNMb2NrT2JqZWN0KTsKKwkJCXRoaXMud2hpdGVCb2FyZE9iamVjdExpc3RNYW5hZ2VyLnNldFdoaXRlQm9hcmRTeW5jTGlzdEJ5Um9vbWlkKAorCQkJCQlyb29tX2lkLCBzeW5jTGlzdFJvb20pOworCQkJCisJCQkvL1N5bmMgdG8gY2xpZW50cworCQkJdGhpcy5zY29wZUFwcGxpY2F0aW9uQWRhcHRlci5zeW5jTWVzc2FnZVRvQ3VycmVudFNjb3BlKCJzZW5kU3luY0ZsYWciLCB3U3luY0xvY2tPYmplY3QsIHRydWUpOworCisJCQlyZXR1cm4gd1N5bmNMb2NrT2JqZWN0OworCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW3N0YXJ0TmV3U3luY3Byb2Nlc3NdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZW5kQ29tcGxldGVkU3luY0V2ZW50KCkgeworCQl0cnkgeworCisJCQlJQ29ubmVjdGlvbiBjdXJyZW50ID0gUmVkNS5nZXRDb25uZWN0aW9uTG9jYWwoKTsKKwkJCVN0cmluZyBzdHJlYW1pZCA9IGN1cnJlbnQuZ2V0Q2xpZW50KCkuZ2V0SWQoKTsKKwkJCUNsaWVudCBjdXJyZW50Q2xpZW50ID0gdGhpcy5zZXNzaW9uTWFuYWdlcgorCQkJCQkuZ2V0Q2xpZW50QnlTdHJlYW1JZChzdHJlYW1pZCwgbnVsbCk7CisJCQlMb25nIHJvb21faWQgPSBjdXJyZW50Q2xpZW50LmdldFJvb21faWQoKTsKKworCQkJTWFwPFN0cmluZywgV2hpdGVib2FyZFN5bmNMb2NrT2JqZWN0PiBzeW5jTGlzdFJvb20gPSB0aGlzLndoaXRlQm9hcmRPYmplY3RMaXN0TWFuYWdlcgorCQkJCQkuZ2V0V2hpdGVCb2FyZFN5bmNMaXN0QnlSb29taWQocm9vbV9pZCk7CisKKwkJCVdoaXRlYm9hcmRTeW5jTG9ja09iamVjdCB3U3luY0xvY2tPYmplY3QgPSBzeW5jTGlzdFJvb20KKwkJCQkJLmdldChjdXJyZW50Q2xpZW50LmdldFB1YmxpY1NJRCgpKTsKKworCQkJaWYgKHdTeW5jTG9ja09iamVjdCA9PSBudWxsKSB7CisJCQkJbG9nLmVycm9yKCJXaGl0ZWJvYXJkU3luY0xvY2tPYmplY3Qgbm90IGZvdW5kIGZvciB0aGlzIENsaWVudCAiCisJCQkJCQkrIHN5bmNMaXN0Um9vbSk7CisJCQkJcmV0dXJuOworCQkJfSBlbHNlIGlmICghd1N5bmNMb2NrT2JqZWN0LmlzQ3VycmVudExvYWRpbmdJdGVtKCkpIHsKKwkJCQlsb2cud2FybigiV2hpdGVib2FyZFN5bmNMb2NrT2JqZWN0IHdhcyBub3Qgc3RhcnRlZCB5ZXQgIgorCQkJCQkJKyBzeW5jTGlzdFJvb20pOworCQkJCXJldHVybjsKKwkJCX0gZWxzZSB7CisJCQkJc3luY0xpc3RSb29tLnJlbW92ZShjdXJyZW50Q2xpZW50LmdldFB1YmxpY1NJRCgpKTsKKwkJCQl0aGlzLndoaXRlQm9hcmRPYmplY3RMaXN0TWFuYWdlci5zZXRXaGl0ZUJvYXJkU3luY0xpc3RCeVJvb21pZCgKKwkJCQkJCXJvb21faWQsIHN5bmNMaXN0Um9vbSk7CisKKwkJCQlpbnQgbnVtYmVyT2ZJbml0aWFsID0gdGhpcworCQkJCQkJLmdldE51bWJlck9mSW5pdGlhbExvYWRlcnMoc3luY0xpc3RSb29tKTsKKworCQkJCWlmIChudW1iZXJPZkluaXRpYWwgPT0gMCkgeworCQkJCQl0aGlzLnNjb3BlQXBwbGljYXRpb25BZGFwdGVyLnN5bmNNZXNzYWdlVG9DdXJyZW50U2NvcGUoInNlbmRTeW5jQ29tcGxldGVGbGFnIiwgd1N5bmNMb2NrT2JqZWN0LCB0cnVlKTsKKwkJCQl9IGVsc2UgeworCQkJCQlyZXR1cm47CisJCQkJfQorCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW3NlbmRDb21wbGV0ZWRTeW5jRXZlbnRdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm47CisJfQorCisJcHJpdmF0ZSBpbnQgZ2V0TnVtYmVyT2ZJbml0aWFsTG9hZGVycygKKwkJCU1hcDxTdHJpbmcsIFdoaXRlYm9hcmRTeW5jTG9ja09iamVjdD4gc3luY0xpc3RSb29tKQorCQkJdGhyb3dzIEV4Y2VwdGlvbiB7CisJCWludCBudW1iZXIgPSAwOworCQlmb3IgKEl0ZXJhdG9yPFN0cmluZz4gaXRlciA9IHN5bmNMaXN0Um9vbS5rZXlTZXQoKS5pdGVyYXRvcigpOyBpdGVyCisJCQkJLmhhc05leHQoKTspIHsKKwkJCVdoaXRlYm9hcmRTeW5jTG9ja09iamVjdCBsb2NrT2JqZWN0ID0gc3luY0xpc3RSb29tLmdldChpdGVyLm5leHQoKSk7CisJCQlpZiAobG9ja09iamVjdC5pc0luaXRpYWxMb2FkZWQoKSkgeworCQkJCW51bWJlcisrOworCQkJfQorCQl9CisJCXJldHVybiBudW1iZXI7CisJfQorCisJLyoKKwkgKiBJbWFnZSBTeW5jIFNlcXVlbmNlCisJICovCisKKwlwdWJsaWMgdm9pZCBzdGFydE5ld09iamVjdFN5bmNQcm9jZXNzKFN0cmluZyBvYmplY3RfaWQsIGJvb2xlYW4gaXNTdGFydGluZykgeworCQl0cnkgeworCisJCQlsb2cuZGVidWcoInN0YXJ0TmV3T2JqZWN0U3luY3Byb2Nlc3M6ICIgKyBvYmplY3RfaWQpOworCisJCQlJQ29ubmVjdGlvbiBjdXJyZW50ID0gUmVkNS5nZXRDb25uZWN0aW9uTG9jYWwoKTsKKwkJCVN0cmluZyBzdHJlYW1pZCA9IGN1cnJlbnQuZ2V0Q2xpZW50KCkuZ2V0SWQoKTsKKwkJCUNsaWVudCBjdXJyZW50Q2xpZW50ID0gdGhpcy5zZXNzaW9uTWFuYWdlcgorCQkJCQkuZ2V0Q2xpZW50QnlTdHJlYW1JZChzdHJlYW1pZCwgbnVsbCk7CisJCQlMb25nIHJvb21faWQgPSBjdXJyZW50Q2xpZW50LmdldFJvb21faWQoKTsKKworCQkJV2hpdGVib2FyZFN5bmNMb2NrT2JqZWN0IHdTeW5jTG9ja09iamVjdCA9IG5ldyBXaGl0ZWJvYXJkU3luY0xvY2tPYmplY3QoKTsKKwkJCXdTeW5jTG9ja09iamVjdC5zZXRBZGR0aW1lKG5ldyBEYXRlKCkpOworCQkJd1N5bmNMb2NrT2JqZWN0LnNldFB1YmxpY1NJRChjdXJyZW50Q2xpZW50LmdldFB1YmxpY1NJRCgpKTsKKwkJCXdTeW5jTG9ja09iamVjdC5zZXRTdGFydHRpbWUobmV3IERhdGUoKSk7CisKKwkJCU1hcDxTdHJpbmcsIFdoaXRlYm9hcmRTeW5jTG9ja09iamVjdD4gc3luY0xpc3RJbWFnZSA9IHRoaXMud2hpdGVCb2FyZE9iamVjdExpc3RNYW5hZ2VyCisJCQkJCS5nZXRXaGl0ZUJvYXJkT2JqZWN0U3luY0xpc3RCeVJvb21BbmRPYmplY3RJZChyb29tX2lkLAorCQkJCQkJCW9iamVjdF9pZCk7CisJCQlzeW5jTGlzdEltYWdlLnB1dChjdXJyZW50Q2xpZW50LmdldFB1YmxpY1NJRCgpLCB3U3luY0xvY2tPYmplY3QpOworCQkJdGhpcy53aGl0ZUJvYXJkT2JqZWN0TGlzdE1hbmFnZXIKKwkJCQkJLnNldFdoaXRlQm9hcmRJbWFnZXNTeW5jTGlzdEJ5Um9vbUFuZE9iamVjdElkKHJvb21faWQsCisJCQkJCQkJb2JqZWN0X2lkLCBzeW5jTGlzdEltYWdlKTsKKworCQkJLy8gRG8gb25seSBzZW5kIHRoZSBUb2tlbiB0byBzaG93IHRoZSBMb2FkaW5nIFNwbGFzaCBmb3IgdGhlCisJCQkvLyBpbml0aWFsLVJlcXVlc3QgdGhhdCBzdGFydHMgdGhlIGxvYWRpbmcKKwkJCWlmIChpc1N0YXJ0aW5nKSB7CisJCQkJdGhpcy5zY29wZUFwcGxpY2F0aW9uQWRhcHRlci5zeW5jTWVzc2FnZVRvQ3VycmVudFNjb3BlKCJzZW5kT2JqZWN0U3luY0ZsYWciLCB3U3luY0xvY2tPYmplY3QsIHRydWUpOworCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW3N0YXJ0TmV3T2JqZWN0U3luY1Byb2Nlc3NdIiwgZXJyKTsKKwkJfQorCX0KKworCXB1YmxpYyBpbnQgc2VuZENvbXBsZXRlZE9iamVjdFN5bmNFdmVudChTdHJpbmcgb2JqZWN0X2lkKSB7CisJCXRyeSB7CisKKwkJCWxvZy5kZWJ1Zygic2VuZENvbXBsZXRlZE9iamVjdFN5bmNFdmVudDogIiArIG9iamVjdF9pZCk7CisKKwkJCUlDb25uZWN0aW9uIGN1cnJlbnQgPSBSZWQ1LmdldENvbm5lY3Rpb25Mb2NhbCgpOworCQkJU3RyaW5nIHN0cmVhbWlkID0gY3VycmVudC5nZXRDbGllbnQoKS5nZXRJZCgpOworCQkJQ2xpZW50IGN1cnJlbnRDbGllbnQgPSB0aGlzLnNlc3Npb25NYW5hZ2VyCisJCQkJCS5nZXRDbGllbnRCeVN0cmVhbUlkKHN0cmVhbWlkLCBudWxsKTsKKwkJCUxvbmcgcm9vbV9pZCA9IGN1cnJlbnRDbGllbnQuZ2V0Um9vbV9pZCgpOworCisJCQlNYXA8U3RyaW5nLCBXaGl0ZWJvYXJkU3luY0xvY2tPYmplY3Q+IHN5bmNMaXN0SW1hZ2UgPSB0aGlzLndoaXRlQm9hcmRPYmplY3RMaXN0TWFuYWdlcgorCQkJCQkuZ2V0V2hpdGVCb2FyZE9iamVjdFN5bmNMaXN0QnlSb29tQW5kT2JqZWN0SWQocm9vbV9pZCwKKwkJCQkJCQlvYmplY3RfaWQpOworCisJCQlsb2cuZGVidWcoInNlbmRDb21wbGV0ZWRPYmplY3RTeW5jRXZlbnQgc3luY0xpc3RJbWFnZTogIgorCQkJCQkrIHN5bmNMaXN0SW1hZ2UpOworCisJCQlXaGl0ZWJvYXJkU3luY0xvY2tPYmplY3Qgd1N5bmNMb2NrT2JqZWN0ID0gc3luY0xpc3RJbWFnZQorCQkJCQkuZ2V0KGN1cnJlbnRDbGllbnQuZ2V0UHVibGljU0lEKCkpOworCisJCQlpZiAod1N5bmNMb2NrT2JqZWN0ID09IG51bGwpIHsKKwkJCQlsb2cuZXJyb3IoIldoaXRlYm9hcmRTeW5jTG9ja09iamVjdCBub3QgZm91bmQgZm9yIHRoaXMgQ2xpZW50ICIKKwkJCQkJCSsgY3VycmVudENsaWVudC5nZXRQdWJsaWNTSUQoKSk7CisJCQkJbG9nLmVycm9yKCJXaGl0ZWJvYXJkU3luY0xvY2tPYmplY3Qgbm90IGZvdW5kIGZvciB0aGlzIHN5bmNMaXN0SW1hZ2UgIgorCQkJCQkJKyBzeW5jTGlzdEltYWdlKTsKKwkJCQlyZXR1cm4gLTI7CisKKwkJCX0gZWxzZSB7CisKKwkJCQlsb2cuZGVidWcoInNlbmRDb21wbGV0ZWRJbWFnZXNTeW5jRXZlbnQgcmVtb3ZlOiAiCisJCQkJCQkrIGN1cnJlbnRDbGllbnQuZ2V0UHVibGljU0lEKCkpOworCisJCQkJc3luY0xpc3RJbWFnZS5yZW1vdmUoY3VycmVudENsaWVudC5nZXRQdWJsaWNTSUQoKSk7CisJCQkJdGhpcy53aGl0ZUJvYXJkT2JqZWN0TGlzdE1hbmFnZXIKKwkJCQkJCS5zZXRXaGl0ZUJvYXJkSW1hZ2VzU3luY0xpc3RCeVJvb21BbmRPYmplY3RJZChyb29tX2lkLAorCQkJCQkJCQlvYmplY3RfaWQsIHN5bmNMaXN0SW1hZ2UpOworCisJCQkJaW50IG51bWJlck9mSW5pdGlhbCA9IHRoaXMud2hpdGVCb2FyZE9iamVjdExpc3RNYW5hZ2VyCisJCQkJCQkuZ2V0V2hpdGVCb2FyZE9iamVjdFN5bmNMaXN0QnlSb29taWQocm9vbV9pZCkuc2l6ZSgpOworCisJCQkJbG9nLmRlYnVnKCJzZW5kQ29tcGxldGVkSW1hZ2VzU3luY0V2ZW50IG51bWJlck9mSW5pdGlhbDogIgorCQkJCQkJKyBudW1iZXJPZkluaXRpYWwpOworCisJCQkJaWYgKG51bWJlck9mSW5pdGlhbCA9PSAwKSB7CisJCQkJCXNjb3BlQXBwbGljYXRpb25BZGFwdGVyLnN5bmNNZXNzYWdlVG9DdXJyZW50U2NvcGUoInNlbmRPYmplY3RTeW5jQ29tcGxldGVGbGFnIiwgd1N5bmNMb2NrT2JqZWN0LCB0cnVlKTsKKwkJCQkJcmV0dXJuIDE7CisJCQkJfSBlbHNlIHsKKwkJCQkJcmV0dXJuIC00OworCQkJCX0KKwkJCX0KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltzZW5kQ29tcGxldGVkT2JqZWN0U3luY0V2ZW50XSIsIGVycik7CisJCX0KKwkJcmV0dXJuIC0xOworCX0KKworCXB1YmxpYyBzeW5jaHJvbml6ZWQgdm9pZCByZW1vdmVVc2VyRnJvbUFsbExpc3RzKElTY29wZSBzY29wZSwKKwkJCUNsaWVudCBjdXJyZW50Q2xpZW50KSB7CisJCXRyeSB7CisKKwkJCUxvbmcgcm9vbV9pZCA9IGN1cnJlbnRDbGllbnQuZ2V0Um9vbV9pZCgpOworCisJCQkvLyBUT0RPOiBNYXliZSB3ZSBzaG91bGQgYWxzbyBjaGVjayBhbGwgcm9vbXMsIGluZGVwZW5kZW50IGZyb20gdGhlCisJCQkvLyBjdXJyZW50IHJvb21faWQgaWYgdGhlcmUgaXMgYW55IHVzZXIgcmVnaXN0ZXJlZAorCQkJaWYgKHJvb21faWQgIT0gbnVsbCkgeworCisJCQkJbG9nLmRlYnVnKCJyZW1vdmVVc2VyRnJvbUFsbExpc3RzIHRoaXMud2hpdGVCb2FyZE9iamVjdExpc3RNYW5hZ2VyOiAiCisJCQkJCQkrIHRoaXMud2hpdGVCb2FyZE9iamVjdExpc3RNYW5hZ2VyKTsKKwkJCQlsb2cuZGVidWcoInJlbW92ZVVzZXJGcm9tQWxsTGlzdHMgcm9vbV9pZDogIiArIHJvb21faWQpOworCisJCQkJLy8gQ2hlY2sgSW5pdGlhbCBMb2FkZXJzCisJCQkJTWFwPFN0cmluZywgV2hpdGVib2FyZFN5bmNMb2NrT2JqZWN0PiBzeW5jTGlzdFJvb20gPSB0aGlzLndoaXRlQm9hcmRPYmplY3RMaXN0TWFuYWdlcgorCQkJCQkJLmdldFdoaXRlQm9hcmRTeW5jTGlzdEJ5Um9vbWlkKHJvb21faWQpOworCisJCQkJV2hpdGVib2FyZFN5bmNMb2NrT2JqZWN0IHdTeW5jTG9ja09iamVjdCA9IHN5bmNMaXN0Um9vbQorCQkJCQkJLmdldChjdXJyZW50Q2xpZW50LmdldFB1YmxpY1NJRCgpKTsKKworCQkJCWlmICh3U3luY0xvY2tPYmplY3QgIT0gbnVsbCkgeworCQkJCQlzeW5jTGlzdFJvb20ucmVtb3ZlKGN1cnJlbnRDbGllbnQuZ2V0UHVibGljU0lEKCkpOworCQkJCX0KKwkJCQl0aGlzLndoaXRlQm9hcmRPYmplY3RMaXN0TWFuYWdlci5zZXRXaGl0ZUJvYXJkU3luY0xpc3RCeVJvb21pZCgKKwkJCQkJCXJvb21faWQsIHN5bmNMaXN0Um9vbSk7CisKKwkJCQlpbnQgbnVtYmVyT2ZJbml0aWFsID0gdGhpcworCQkJCQkJLmdldE51bWJlck9mSW5pdGlhbExvYWRlcnMoc3luY0xpc3RSb29tKTsKKworCQkJCWxvZy5kZWJ1Zygic2NvcGUgIiArIHNjb3BlKTsKKworCQkJCWlmIChudW1iZXJPZkluaXRpYWwgPT0gMCAmJiBzY29wZSAhPSBudWxsKSB7CisJCQkJCQorCQkJCQlzY29wZUFwcGxpY2F0aW9uQWRhcHRlci5zeW5jTWVzc2FnZVRvQ3VycmVudFNjb3BlKCJzZW5kU3luY0NvbXBsZXRlRmxhZyIsIHdTeW5jTG9ja09iamVjdCwgZmFsc2UpOworCQkJCQkKKwkJCQl9CisKKwkJCQkvLyBDaGVjayBJbWFnZSBMb2FkZXJzCisJCQkJTWFwPFN0cmluZywgTWFwPFN0cmluZywgV2hpdGVib2FyZFN5bmNMb2NrT2JqZWN0Pj4gc3luY0xpc3RSb29tSW1hZ2VzID0gdGhpcy53aGl0ZUJvYXJkT2JqZWN0TGlzdE1hbmFnZXIKKwkJCQkJCS5nZXRXaGl0ZUJvYXJkT2JqZWN0U3luY0xpc3RCeVJvb21pZChyb29tX2lkKTsKKworCQkJCWZvciAoSXRlcmF0b3I8U3RyaW5nPiBpdGVyID0gc3luY0xpc3RSb29tSW1hZ2VzLmtleVNldCgpCisJCQkJCQkuaXRlcmF0b3IoKTsgaXRlci5oYXNOZXh0KCk7KSB7CisJCQkJCVN0cmluZyBvYmplY3RfaWQgPSBpdGVyLm5leHQoKTsKKwkJCQkJTWFwPFN0cmluZywgV2hpdGVib2FyZFN5bmNMb2NrT2JqZWN0PiBzeW5jTGlzdEltYWdlcyA9IHN5bmNMaXN0Um9vbUltYWdlcworCQkJCQkJCS5nZXQob2JqZWN0X2lkKTsKKwkJCQkJV2hpdGVib2FyZFN5bmNMb2NrT2JqZWN0IHdJbWFnZXNTeW5jTG9ja09iamVjdCA9IHN5bmNMaXN0SW1hZ2VzCisJCQkJCQkJLmdldChjdXJyZW50Q2xpZW50LmdldFB1YmxpY1NJRCgpKTsKKwkJCQkJaWYgKHdJbWFnZXNTeW5jTG9ja09iamVjdCAhPSBudWxsKSB7CisJCQkJCQlzeW5jTGlzdEltYWdlcy5yZW1vdmUoY3VycmVudENsaWVudC5nZXRQdWJsaWNTSUQoKSk7CisJCQkJCX0KKwkJCQkJdGhpcy53aGl0ZUJvYXJkT2JqZWN0TGlzdE1hbmFnZXIKKwkJCQkJCQkuc2V0V2hpdGVCb2FyZEltYWdlc1N5bmNMaXN0QnlSb29tQW5kT2JqZWN0SWQoCisJCQkJCQkJCQlyb29tX2lkLCBvYmplY3RfaWQsIHN5bmNMaXN0SW1hZ2VzKTsKKwkJCQl9CisKKwkJCQlpbnQgbnVtYmVyT2ZJbWFnZUxvYWRlcnMgPSB0aGlzLndoaXRlQm9hcmRPYmplY3RMaXN0TWFuYWdlcgorCQkJCQkJLmdldFdoaXRlQm9hcmRPYmplY3RTeW5jTGlzdEJ5Um9vbWlkKHJvb21faWQpLnNpemUoKTsKKworCQkJCWlmIChudW1iZXJPZkltYWdlTG9hZGVycyA9PSAwICYmIHNjb3BlICE9IG51bGwpIHsKKwkJCQkJc2NvcGVBcHBsaWNhdGlvbkFkYXB0ZXIuc3luY01lc3NhZ2VUb0N1cnJlbnRTY29wZSgic2VuZEltYWdlc1N5bmNDb21wbGV0ZUZsYWciLCBuZXcgT2JqZWN0W10geyAicmVtb3ZlIiB9LCB0cnVlKTsKKwkJCQl9CisKKwkJCX0KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltyZW1vdmVVc2VyRnJvbUFsbExpc3RzXSIsIGVycik7CisJCX0KKwl9CisKKwlwdWJsaWMgQ2xpcGFydHMgZ2V0Q2xpcEFydEljb25zKCkgeworCQl0cnkgeworCQkJRmlsZSBjbGlwYXJ0X2RpciA9IE9tRmlsZUhlbHBlci5nZXRQdWJsaWNDbGlwYXJ0c0RpcigpOworCisJCQlGaWxlbmFtZUZpbHRlciBnZXRGaWxlc09ubHkgPSBuZXcgRmlsZW5hbWVGaWx0ZXIoKSB7CisJCQkJcHVibGljIGJvb2xlYW4gYWNjZXB0KEZpbGUgYiwgU3RyaW5nIG5hbWUpIHsKKwkJCQkJRmlsZSBmID0gbmV3IEZpbGUoYiwgbmFtZSk7CisJCQkJCXJldHVybiAhZi5pc0RpcmVjdG9yeSgpOworCQkJCX0KKwkJCX07CisKKwkJCUZpbGVuYW1lRmlsdGVyIGdldERpcmVjdG9yaWVzT25seSA9IG5ldyBGaWxlbmFtZUZpbHRlcigpIHsKKwkJCQlwdWJsaWMgYm9vbGVhbiBhY2NlcHQoRmlsZSBiLCBTdHJpbmcgbmFtZSkgeworCQkJCQlGaWxlIGYgPSBuZXcgRmlsZShiLCBuYW1lKTsKKwkJCQkJcmV0dXJuIGYuaXNEaXJlY3RvcnkoKSAmJiAhZi5nZXROYW1lKCkuZXF1YWxzKCJ0aHVtYiIpOworCQkJCX0KKwkJCX07CisKKwkJCUNsaXBhcnRzIGNsID0gbmV3IENsaXBhcnRzKCk7CisJCQljbC5zZXRGb2xkZXJOYW1lKCJnZW5lcmFsIik7CisKKwkJCVN0cmluZ1tdIGZpbGVzX2dlbmVyYWwgPSBjbGlwYXJ0X2Rpci5saXN0KGdldEZpbGVzT25seSk7CisJCQlAU3VwcHJlc3NXYXJuaW5ncygidW5jaGVja2VkIikKKwkJCUNvbXBhcmF0b3I8U3RyaW5nPiBjb21wYXJhdG9yID0gQ29tcGFyYXRvclV0aWxzLm5hdHVyYWxDb21wYXJhdG9yKCk7CisJCQlBcnJheXMuc29ydChmaWxlc19nZW5lcmFsLCBjb21wYXJhdG9yKTsKKworCQkJY2wuc2V0R2VuZXJhbExpc3QoZmlsZXNfZ2VuZXJhbCk7CisJCQljbC5zZXRTdWJDYXRlZ29yaWVzKG5ldyBMaW5rZWRMaXN0PENsaXBhcnRzPigpKTsKKworCQkJZm9yIChGaWxlIGRpciA6IGNsaXBhcnRfZGlyLmxpc3RGaWxlcyhnZXREaXJlY3Rvcmllc09ubHkpKSB7CisJCQkJQ2xpcGFydHMgY2xfc3ViID0gbmV3IENsaXBhcnRzKCk7CisJCQkJY2xfc3ViLnNldEZvbGRlck5hbWUoIm1hdGgiKTsKKwkJCQlTdHJpbmdbXSBmaWxlcyA9IGRpci5saXN0KGdldEZpbGVzT25seSk7CisJCQkJQXJyYXlzLnNvcnQoZmlsZXMsIGNvbXBhcmF0b3IpOworCQkJCWNsX3N1Yi5zZXRHZW5lcmFsTGlzdChmaWxlcyk7CisJCQkJY2wuZ2V0U3ViQ2F0ZWdvcmllcygpLmFkZChjbF9zdWIpOworCQkJfQorCisJCQlyZXR1cm4gY2w7CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbZ2V0Q2xpcEFydEljb25zXSIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJcHVibGljIHZvaWQgcmVzdWx0UmVjZWl2ZWQoSVBlbmRpbmdTZXJ2aWNlQ2FsbCBhcmcwKSB7CisJCWxvZy5kZWJ1ZygicmVzdWx0UmVjZWl2ZWQ6ICIgKyBhcmcwKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcmVtb3RlL3JlZDUvU2NvcGVBcHBsaWNhdGlvbkFkYXB0ZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9yZW1vdGUvcmVkNS9TY29wZUFwcGxpY2F0aW9uQWRhcHRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJhNDdiMDQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcmVtb3RlL3JlZDUvU2NvcGVBcHBsaWNhdGlvbkFkYXB0ZXIuamF2YQpAQCAtMCwwICsxLDI4ODcgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucmVtb3RlLnJlZDU7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLkhhc2hTZXQ7CitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworaW1wb3J0IGphdmEudXRpbC5MaW5rZWRMaXN0OworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5NYXA7CitpbXBvcnQgamF2YS51dGlsLlNldDsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5WZXJzaW9uOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuU2Vzc2lvbmRhdGFEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5kYW8uQ29uZmlndXJhdGlvbkRhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLmRhby5TZXJ2ZXJEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jYWxlbmRhci5kYW9zLk1lZXRpbmdNZW1iZXJEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jYWxlbmRhci5tYW5hZ2VtZW50LkFwcG9pbnRtZW50TG9naWM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jb25mZXJlbmNlLlJvb21NYW5hZ2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY29uZmVyZW5jZS5kYW8uUm9vbURhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmxvZ3MuQ29uZmVyZW5jZUxvZ0RhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuVXNlck1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLmRhby5Vc2Vyc0RhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLndoaXRlYm9hcmQuRW1vdGljb25zTWFuYWdlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLndoaXRlYm9hcmQuV2hpdGVib2FyZE1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS53aGl0ZWJvYXJkLmR0by5Ccm93c2VyU3RhdHVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEud2hpdGVib2FyZC5kdG8uUm9vbVN0YXR1czsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kb2N1bWVudHMuYmVhbnMuVXBsb2FkQ29tcGxldGVNZXNzYWdlOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLlNlcnZlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5jYWxlbmRhci5BcHBvaW50bWVudDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5jYWxlbmRhci5NZWV0aW5nTWVtYmVyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnJvb20uQ2xpZW50OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnJvb20uUm9vbTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlVzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucmVtb3RlLkZMVlJlY29yZGVyU2VydmljZTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5yZW1vdGUuV2hpdGVCb2FyZFNlcnZpY2U7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucmVtb3RlLnV0aWwuU2Vzc2lvblZhcmlhYmxlc1V0aWw7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2Vzc2lvbi5JU2Vzc2lvbk1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMuT21GaWxlSGVscGVyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLm1hdGguQ2FsZW5kYXJQYXR0ZXJuczsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5yZWQ1LnNlcnZlci5hZGFwdGVyLkFwcGxpY2F0aW9uQWRhcHRlcjsKK2ltcG9ydCBvcmcucmVkNS5zZXJ2ZXIuYXBpLklDbGllbnQ7CitpbXBvcnQgb3JnLnJlZDUuc2VydmVyLmFwaS5JQ29ubmVjdGlvbjsKK2ltcG9ydCBvcmcucmVkNS5zZXJ2ZXIuYXBpLlJlZDU7CitpbXBvcnQgb3JnLnJlZDUuc2VydmVyLmFwaS5zY29wZS5JQmFzaWNTY29wZTsKK2ltcG9ydCBvcmcucmVkNS5zZXJ2ZXIuYXBpLnNjb3BlLklCcm9hZGNhc3RTY29wZTsKK2ltcG9ydCBvcmcucmVkNS5zZXJ2ZXIuYXBpLnNjb3BlLklTY29wZTsKK2ltcG9ydCBvcmcucmVkNS5zZXJ2ZXIuYXBpLnNjb3BlLlNjb3BlVHlwZTsKK2ltcG9ydCBvcmcucmVkNS5zZXJ2ZXIuYXBpLnNlcnZpY2UuSVBlbmRpbmdTZXJ2aWNlQ2FsbDsKK2ltcG9ydCBvcmcucmVkNS5zZXJ2ZXIuYXBpLnNlcnZpY2UuSVBlbmRpbmdTZXJ2aWNlQ2FsbGJhY2s7CitpbXBvcnQgb3JnLnJlZDUuc2VydmVyLmFwaS5zZXJ2aWNlLklTZXJ2aWNlQ2FwYWJsZUNvbm5lY3Rpb247CitpbXBvcnQgb3JnLnJlZDUuc2VydmVyLmFwaS5zdHJlYW0uSUJyb2FkY2FzdFN0cmVhbTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKKworcHVibGljIGNsYXNzIFNjb3BlQXBwbGljYXRpb25BZGFwdGVyIGV4dGVuZHMgQXBwbGljYXRpb25BZGFwdGVyIGltcGxlbWVudHMgSVBlbmRpbmdTZXJ2aWNlQ2FsbGJhY2sgeworCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcigKKwkJCVNjb3BlQXBwbGljYXRpb25BZGFwdGVyLmNsYXNzLAorCQkJT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCisJQEF1dG93aXJlZAorCXByaXZhdGUgSVNlc3Npb25NYW5hZ2VyIHNlc3Npb25NYW5hZ2VyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEVtb3RpY29uc01hbmFnZXIgZW1vdGljb25zTWFuYWdlcjsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBXaGl0ZUJvYXJkU2VydmljZSB3aGl0ZUJvYXJkU2VydmljZTsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBXaGl0ZWJvYXJkTWFuYWdlciB3aGl0ZWJvYXJkTWFuYWdlbWVudDsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBGTFZSZWNvcmRlclNlcnZpY2UgZmx2UmVjb3JkZXJTZXJ2aWNlOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIENvbmZpZ3VyYXRpb25EYW8gY29uZmlndXJhdGlvbkRhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBBcHBvaW50bWVudExvZ2ljIGFwcG9pbnRtZW50TG9naWM7CisJQEF1dG93aXJlZAorCXByaXZhdGUgU2Vzc2lvbmRhdGFEYW8gc2Vzc2lvbmRhdGFEYW87CisJQEF1dG93aXJlZAorCXByaXZhdGUgVXNlck1hbmFnZXIgdXNlck1hbmFnZXI7CisJQEF1dG93aXJlZAorCXByaXZhdGUgUm9vbU1hbmFnZXIgcm9vbU1hbmFnZXI7CisJQEF1dG93aXJlZAorCXByaXZhdGUgQ29uZmVyZW5jZUxvZ0RhbyBjb25mZXJlbmNlTG9nRGFvOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFVzZXJzRGFvIHVzZXJzRGFvOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFJvb21EYW8gcm9vbURhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBNZWV0aW5nTWVtYmVyRGFvIG1lZXRpbmdNZW1iZXJEYW87CisJQEF1dG93aXJlZAorCXByaXZhdGUgU2VydmVyRGFvIHNlcnZlckRhbzsKKworCXB1YmxpYyBzdGF0aWMgU3RyaW5nIGxpbmVTZXBlcmF0b3IgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImxpbmUuc2VwYXJhdG9yIik7CisKKwlwdWJsaWMgc3RhdGljIFN0cmluZyBjb25maWdLZXlDcnlwdENsYXNzTmFtZSA9IG51bGw7CisJcHVibGljIHN0YXRpYyBCb29sZWFuIHdoaXRlYm9hcmREcmF3U3RhdHVzID0gbnVsbDsKKwkKKwlwcml2YXRlIHN0YXRpYyBsb25nIGJyb2FkQ2FzdENvdW50ZXIgPSAwOworCXB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpbml0Q29tcGxldGUgPSBmYWxzZTsKKworCXB1YmxpYyBzeW5jaHJvbml6ZWQgdm9pZCByZXN1bHRSZWNlaXZlZChJUGVuZGluZ1NlcnZpY2VDYWxsIGFyZzApIHsKKwkJLy8gVE9ETyBBdXRvLWdlbmVyYXRlZCBtZXRob2Qgc3R1YgorCX0KKworCUBPdmVycmlkZQorCXB1YmxpYyBzeW5jaHJvbml6ZWQgYm9vbGVhbiBhcHBTdGFydChJU2NvcGUgc2NvcGUpIHsKKwkJdHJ5IHsKKwkJCU9tRmlsZUhlbHBlci5zZXRPbUhvbWUoc2NvcGUuZ2V0UmVzb3VyY2UoIi8iKS5nZXRGaWxlKCkpOworCisJCQlsb2cuZGVidWcoIndlYkFwcFBhdGggOiAiICsgT21GaWxlSGVscGVyLmdldE9tSG9tZSgpKTsKKworCQkJLy8gT25seSBsb2FkIHRoaXMgQ2xhc3Mgb25lIHRpbWUKKwkJCS8vIEluaXRpYWxseSB0aGlzIHZhbHVlIG1pZ2h0IGJ5IGVtcHR5LCBiZWNhdXNlIHRoZSBEQiBpcyBlbXB0eSB5ZXQKKwkJCWdldENyeXB0S2V5KCk7CisKKwkJCS8vIGluaXQgeW91ciBoYW5kbGVyIGhlcmUKKworCQkJLy8gVGhlIHNjaGVkdWxlZCBKb2JzIGRpZCBnbyBpbnRvIHRoZSBTcHJpbmctTWFuYWdlZCBCZWFucywgc2VlCisJCQkvLyBzY2hlZHVsZXJKb2JzLnNlcnZpY2UueG1sCisKKwkJCS8vIFNwcmluZyBEZWZpbml0aW9uIGRvZXMgbm90IHdvcmsgaGVyZSwgaXRzIHRvbyBlYXJseSwgSW5zdGFuY2UgaXMKKwkJCS8vIG5vdCBzZXQgeWV0CisJCQllbW90aWNvbnNNYW5hZ2VyLmxvYWRFbW90KCk7CisKKwkJCWZvciAoU3RyaW5nIHNjb3BlTmFtZSA6IHNjb3BlLmdldFNjb3BlTmFtZXMoKSkgeworCQkJCWxvZy5kZWJ1Zygic2NvcGVOYW1lIDo6ICIgKyBzY29wZU5hbWUpOworCQkJfQorCQkJCisJCQlTY29wZUFwcGxpY2F0aW9uQWRhcHRlci5pbml0Q29tcGxldGUgPSB0cnVlOworCQkgICAgVmVyc2lvbi5sb2dPTVN0YXJ0ZWQoKTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbYXBwU3RhcnRdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gdHJ1ZTsKKwl9CisKKwlAT3ZlcnJpZGUKKwlwdWJsaWMgYm9vbGVhbiByb29tQ29ubmVjdChJQ29ubmVjdGlvbiBjb25uLCBPYmplY3RbXSBwYXJhbXMpIHsKKwkJbG9nLmRlYnVnKCJyb29tQ29ubmVjdCA6ICIpOworCisJCXRyeSB7CisKKwkJCUlTZXJ2aWNlQ2FwYWJsZUNvbm5lY3Rpb24gc2VydmljZSA9IChJU2VydmljZUNhcGFibGVDb25uZWN0aW9uKSBjb25uOworCQkJU3RyaW5nIHN0cmVhbUlkID0gY29ubi5nZXRDbGllbnQoKS5nZXRJZCgpOworCQkJCisJCQlib29sZWFuIGlzQVZDbGllbnQgPSBmYWxzZTsKKwkJCWlmIChwYXJhbXMubGVuZ3RoID09IDEpIHsKKwkJCQlpc0FWQ2xpZW50ID0gQm9vbGVhbi52YWx1ZU9mKCIiICsgcGFyYW1zWzBdKTsKKwkJCX0KKworCQkJbG9nLmRlYnVnKCIjIyMgQ2xpZW50IGNvbm5lY3RlZCB0byBPcGVuTWVldGluZ3MsIHJlZ2lzdGVyIENsaWVudCBTdHJlYW1JZDogIgorCQkJCQkrIHN0cmVhbUlkICsgIiBzY29wZSAiICsgY29ubi5nZXRTY29wZSgpLmdldE5hbWUoKSsgIiBpc0FWQ2xpZW50ICIraXNBVkNsaWVudCk7CisJCQlsb2cuZGVidWcoInBhcmFtcyAiK3BhcmFtcyk7CisKKwkJCS8vIFNldCBTdHJlYW1JZCBpbiBDbGllbnQKKwkJCXNlcnZpY2UuaW52b2tlKCJzZXRJZCIsIG5ldyBPYmplY3RbXSB7IHN0cmVhbUlkIH0sIHRoaXMpOworCisJCQlTdHJpbmcgc3dmVVJMID0gIiI7CisJCQlpZiAoY29ubi5nZXRDb25uZWN0UGFyYW1zKCkuZ2V0KCJzd2ZVcmwiKSAhPSBudWxsKSB7CisJCQkJc3dmVVJMID0gY29ubi5nZXRDb25uZWN0UGFyYW1zKCkuZ2V0KCJzd2ZVcmwiKS50b1N0cmluZygpOworCQkJfQorCisJCQlDbGllbnQgcmNtID0gdGhpcy5zZXNzaW9uTWFuYWdlci5hZGRDbGllbnRMaXN0SXRlbShzdHJlYW1JZCwKKwkJCQkJY29ubi5nZXRTY29wZSgpLmdldE5hbWUoKSwgY29ubi5nZXRSZW1vdGVQb3J0KCksCisJCQkJCWNvbm4uZ2V0UmVtb3RlQWRkcmVzcygpLCBzd2ZVUkwsIGlzQVZDbGllbnQsIG51bGwpOworCQkJCisJCQlTZXNzaW9uVmFyaWFibGVzVXRpbC5pbml0Q2xpZW50KGNvbm4uZ2V0Q2xpZW50KCksIGlzQVZDbGllbnQsIHJjbS5nZXRQdWJsaWNTSUQoKSk7CisKKwkJCS8vIExvZyB0aGUgVXNlcgorCQkJY29uZmVyZW5jZUxvZ0Rhby5hZGRDb25mZXJlbmNlTG9nKCJDbGllbnRDb25uZWN0IiwKKwkJCQkJcmNtLmdldFVzZXJfaWQoKSwgc3RyZWFtSWQsIG51bGwsIHJjbS5nZXRVc2VyaXAoKSwKKwkJCQkJcmNtLmdldFNjb3BlKCksIHJjbS5nZXRFeHRlcm5hbFVzZXJJZCgpLAorCQkJCQlyY20uZ2V0RXh0ZXJuYWxVc2VyVHlwZSgpLCByY20uZ2V0TWFpbCgpLAorCQkJCQlyY20uZ2V0Rmlyc3RuYW1lKCksIHJjbS5nZXRMYXN0bmFtZSgpKTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJyb29tSm9pbiIsIGVycik7CisJCX0KKwkJcmV0dXJuIHRydWU7CisJfQorCisJcHVibGljIHN5bmNocm9uaXplZCBNYXA8U3RyaW5nLCBTdHJpbmc+IHNjcmVlblNoYXJlckFjdGlvbihNYXA8U3RyaW5nLCBPYmplY3Q+IG1hcCkgeworCQl0cnkgeworCQkJbG9nLmRlYnVnKCItLS0tLS0tLS0tLSAgc2NyZWVuU2hhcmVyQWN0aW9uIik7CisJCQlJQ29ubmVjdGlvbiBjdXJyZW50ID0gUmVkNS5nZXRDb25uZWN0aW9uTG9jYWwoKTsKKworCQkJQ2xpZW50IHJjID0gc2Vzc2lvbk1hbmFnZXIuZ2V0Q2xpZW50QnlTdHJlYW1JZChjdXJyZW50LmdldENsaWVudCgpLmdldElkKCksIG51bGwpOworCisJCQlNYXA8U3RyaW5nLCBTdHJpbmc+IHJldHVybk1hcCA9IG5ldyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPigpOworCisJCQlpZiAocmMgIT0gbnVsbCkgeworCQkJCWJvb2xlYW4gY2hhbmdlZCA9IGZhbHNlOworCQkJCWlmIChCb29sZWFuLnZhbHVlT2YoIiIgKyBtYXAuZ2V0KCJzdG9wU3RyZWFtaW5nIikpICYmIHJjLmlzU3RhcnRTdHJlYW1pbmcoKSkgeworCQkJCQljaGFuZ2VkID0gdHJ1ZTsKKwkJCQkJcmMuc2V0U3RhcnRTdHJlYW1pbmcoZmFsc2UpOworCQkJCQkvL1NlbmQgbWVzc2FnZSB0byBhbGwgdXNlcnMKKwkJCQkJc3luY01lc3NhZ2VUb0N1cnJlbnRTY29wZSgic3RvcFNjcmVlblNoYXJpbmdNZXNzYWdlIiwgcmMsIGZhbHNlKTsKKwkJCQkJCisJCQkJCXJldHVybk1hcC5wdXQoInJlc3VsdCIsICJzdG9wU2hhcmluZ09ubHkiKTsKKwkJCQl9CisJCQkJaWYgKEJvb2xlYW4udmFsdWVPZigiIiArIG1hcC5nZXQoInN0b3BSZWNvcmRpbmciKSkgJiYgcmMuZ2V0SXNSZWNvcmRpbmcoKSkgeworCQkJCQljaGFuZ2VkID0gdHJ1ZTsKKwkJCQkJcmMuc2V0U3RhcnRSZWNvcmRpbmcoZmFsc2UpOworCQkJCQlyYy5zZXRJc1JlY29yZGluZyhmYWxzZSk7CisJCQkJCQorCQkJCQlyZXR1cm5NYXAucHV0KCJyZXN1bHQiLCAic3RvcFJlY29yZGluZ09ubHkiKTsKKwkJCQkJLy9TZW5kIG1lc3NhZ2UgdG8gYWxsIHVzZXJzCisJCQkJCXN5bmNNZXNzYWdlVG9DdXJyZW50U2NvcGUoInN0b3BSZWNvcmRpbmdNZXNzYWdlIiwgcmMsIGZhbHNlKTsKKworCQkJCQlmbHZSZWNvcmRlclNlcnZpY2Uuc3RvcFJlY29yZEFuZFNhdmUoY3VycmVudC5nZXRTY29wZSgpLCByYywgbnVsbCk7CisJCQkJfQorCQkJCWlmIChCb29sZWFuLnZhbHVlT2YoIiIgKyBtYXAuZ2V0KCJzdG9wUHVibGlzaGluZyIpKSAmJiByYy5pc1NjcmVlblB1Ymxpc2hTdGFydGVkKCkpIHsKKwkJCQkJY2hhbmdlZCA9IHRydWU7CisJCQkJCXJjLnNldFNjcmVlblB1Ymxpc2hTdGFydGVkKGZhbHNlKTsKKwkJCQkJcmV0dXJuTWFwLnB1dCgicmVzdWx0IiwgInN0b3BQdWJsaXNoaW5nT25seSIpOworCQkJCQkKKwkJCQkJLy9TZW5kIG1lc3NhZ2UgdG8gYWxsIHVzZXJzCisJCQkJCXN5bmNNZXNzYWdlVG9DdXJyZW50U2NvcGUoInN0b3BQdWJsaXNoaW5nTWVzc2FnZSIsIHJjLCBmYWxzZSk7CisJCQkJfQorCQkJCQorCQkJCWlmIChjaGFuZ2VkKSB7CisJCQkJCXNlc3Npb25NYW5hZ2VyLnVwZGF0ZUNsaWVudEJ5U3RyZWFtSWQocmMuZ2V0U3RyZWFtaWQoKSwgcmMsIGZhbHNlLCBudWxsKTsKKwkJCQkJCisJCQkJCWlmICghcmMuaXNTdGFydFN0cmVhbWluZygpICYmICFyYy5pc1N0YXJ0UmVjb3JkaW5nKCkgJiYgIXJjLmlzU3RyZWFtUHVibGlzaFN0YXJ0ZWQoKSkgeworCQkJCQkJcmV0dXJuTWFwLnB1dCgicmVzdWx0IiwgInN0b3BBbGwiKTsKKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJCXJldHVybiByZXR1cm5NYXA7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW3NjcmVlblNoYXJlckFjdGlvbl0iLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMaXN0PENsaWVudD4gY2hlY2tTY3JlZW5TaGFyaW5nKCkgeworCQl0cnkgeworCQkJSUNvbm5lY3Rpb24gY3VycmVudCA9IFJlZDUuZ2V0Q29ubmVjdGlvbkxvY2FsKCk7CisJCQlTdHJpbmcgc3RyZWFtaWQgPSBjdXJyZW50LmdldENsaWVudCgpLmdldElkKCk7CisKKwkJCWxvZy5kZWJ1ZygiY2hlY2tTY3JlZW5TaGFyaW5nIC0yLSAiICsgc3RyZWFtaWQpOworCisJCQlMaXN0PENsaWVudD4gc2NyZWVuU2hhcmVyTGlzdCA9IG5ldyBMaW5rZWRMaXN0PENsaWVudD4oKTsKKworCQkJQ2xpZW50IGN1cnJlbnRDbGllbnQgPSB0aGlzLnNlc3Npb25NYW5hZ2VyCisJCQkJCS5nZXRDbGllbnRCeVN0cmVhbUlkKHN0cmVhbWlkLCBudWxsKTsKKworCQkJZm9yIChDbGllbnQgcmNsIDogc2Vzc2lvbk1hbmFnZXIuZ2V0Q2xpZW50TGlzdEJ5Um9vbUFsbChjdXJyZW50Q2xpZW50LmdldFJvb21faWQoKSkpIHsKKwkJCQlpZiAocmNsLmlzU3RhcnRTdHJlYW1pbmcoKSkgeworCQkJCQlzY3JlZW5TaGFyZXJMaXN0LmFkZChyY2wpOworCQkJCX0KKwkJCX0KKworCQkJcmV0dXJuIHNjcmVlblNoYXJlckxpc3Q7CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbY2hlY2tTY3JlZW5TaGFyaW5nXSIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJQFN1cHByZXNzV2FybmluZ3MoeyAicmF3dHlwZXMiLCAidW5jaGVja2VkIiB9KQorCXB1YmxpYyBzeW5jaHJvbml6ZWQgTWFwIHNldENvbm5lY3Rpb25Bc1NoYXJpbmdDbGllbnQoTWFwIG1hcCkgeworCQl0cnkgeworCQkJbG9nLmRlYnVnKCItLS0tLS0tLS0tLSAgc2V0Q29ubmVjdGlvbkFzU2hhcmluZ0NsaWVudCIpOworCQkJSUNvbm5lY3Rpb24gY3VycmVudCA9IFJlZDUuZ2V0Q29ubmVjdGlvbkxvY2FsKCk7CisJCQkvLyBJU2VydmljZUNhcGFibGVDb25uZWN0aW9uIHNlcnZpY2UgPSAoSVNlcnZpY2VDYXBhYmxlQ29ubmVjdGlvbikKKwkJCS8vIGN1cnJlbnQ7CisKKwkJCUNsaWVudCBjdXJyZW50Q2xpZW50ID0gdGhpcy5zZXNzaW9uTWFuYWdlcgorCQkJCQkuZ2V0Q2xpZW50QnlTdHJlYW1JZChjdXJyZW50LmdldENsaWVudCgpLmdldElkKCksIG51bGwpOworCisJCQlpZiAoY3VycmVudENsaWVudCAhPSBudWxsKSB7CisKKwkJCQlib29sZWFuIHN0YXJ0UmVjb3JkaW5nID0gQm9vbGVhbi52YWx1ZU9mKCIiICsgbWFwLmdldCgKKwkJCQkJCSJzdGFydFJlY29yZGluZyIpKTsKKwkJCQlib29sZWFuIHN0YXJ0U3RyZWFtaW5nID0gQm9vbGVhbi52YWx1ZU9mKCIiICsgbWFwLmdldCgKKwkJCQkJCSJzdGFydFN0cmVhbWluZyIpKTsKKwkJCQlib29sZWFuIHN0YXJ0UHVibGlzaGluZyA9IEJvb2xlYW4udmFsdWVPZigiIiArIG1hcC5nZXQoCisJCQkJCQkic3RhcnRQdWJsaXNoaW5nIikpICYmICgwID09IHNlc3Npb25NYW5hZ2VyLmdldFB1Ymxpc2hpbmdDb3VudChjdXJyZW50Q2xpZW50LmdldFJvb21faWQoKSkpOworCisJCQkJY3VycmVudENsaWVudC5zZXRSb29tX2lkKExvbmcucGFyc2VMb25nKGN1cnJlbnQuZ2V0U2NvcGUoKQorCQkJCQkJLmdldE5hbWUoKSkpOworCisJCQkJLy8gU2V0IHRoaXMgY29ubmVjdGlvbiB0byBiZSBhIFJUTVAtSmF2YSBDbGllbnQKKwkJCQljdXJyZW50Q2xpZW50LnNldElzU2NyZWVuQ2xpZW50KHRydWUpOworCQkJCQorCQkJCVNlc3Npb25WYXJpYWJsZXNVdGlsLnNldElzU2NyZWVuQ2xpZW50KGN1cnJlbnQuZ2V0Q2xpZW50KCkpOworCQkJCQorCQkJCWN1cnJlbnRDbGllbnQuc2V0VXNlcl9pZChMb25nLnBhcnNlTG9uZyhtYXAuZ2V0KCJ1c2VyX2lkIikKKwkJCQkJCS50b1N0cmluZygpKSk7CisJCQkJU2Vzc2lvblZhcmlhYmxlc1V0aWwuc2V0VXNlcklkKGN1cnJlbnQuZ2V0Q2xpZW50KCksIExvbmcucGFyc2VMb25nKG1hcC5nZXQoInVzZXJfaWQiKQorCQkJCQkJLnRvU3RyaW5nKCkpKTsKKworCQkJCWJvb2xlYW4gYWxyZWFkeVN0cmVhbWluZyA9IGN1cnJlbnRDbGllbnQuaXNTdGFydFN0cmVhbWluZygpOworCQkJCWlmIChzdGFydFN0cmVhbWluZykgeworCQkJCQljdXJyZW50Q2xpZW50LnNldFN0YXJ0U3RyZWFtaW5nKHRydWUpOworCQkJCX0KKwkJCQlib29sZWFuIGFscmVhZHlSZWNvcmRpbmcgPSBjdXJyZW50Q2xpZW50LmlzU3RhcnRSZWNvcmRpbmcoKTsKKwkJCQlpZiAoc3RhcnRSZWNvcmRpbmcpIHsKKwkJCQkJY3VycmVudENsaWVudC5zZXRTdGFydFJlY29yZGluZyh0cnVlKTsKKwkJCQl9CisJCQkJaWYgKHN0YXJ0UHVibGlzaGluZykgeworCQkJCQljdXJyZW50Q2xpZW50LnNldFN0cmVhbVB1Ymxpc2hTdGFydGVkKHRydWUpOworCQkJCX0KKworCQkJCWN1cnJlbnRDbGllbnQuc2V0T3JnYW5pemF0aW9uX2lkKExvbmcucGFyc2VMb25nKG1hcC5nZXQoCisJCQkJCQkib3JnYW5pemF0aW9uX2lkIikudG9TdHJpbmcoKSkpOworCisJCQkJdGhpcy5zZXNzaW9uTWFuYWdlci51cGRhdGVDbGllbnRCeVN0cmVhbUlkKGN1cnJlbnQKKwkJCQkJCS5nZXRDbGllbnQoKS5nZXRJZCgpLCBjdXJyZW50Q2xpZW50LCBmYWxzZSwgbnVsbCk7CisKKwkJCQlNYXAgcmV0dXJuTWFwID0gbmV3IEhhc2hNYXAoKTsKKwkJCQlyZXR1cm5NYXAucHV0KCJhbHJlYWR5UHVibGlzaGVkIiwgZmFsc2UpOworCisJCQkJLy8gaWYgaXMgYWxyZWFkeSBzdGFydGVkIHNjcmVlbiBzaGFyaW5nLCB0aGVuIHRoZXJlIGlzIG5vIG5lZWQKKwkJCQkvLyB0byBzdGFydCBpdCBhZ2FpbgorCQkJCWlmIChjdXJyZW50Q2xpZW50LmlzU2NyZWVuUHVibGlzaFN0YXJ0ZWQoKSkgeworCQkJCQlyZXR1cm5NYXAucHV0KCJhbHJlYWR5UHVibGlzaGVkIiwgdHJ1ZSk7CisJCQkJfQorCisJCQkJY3VycmVudENsaWVudC5zZXRWWChJbnRlZ2VyLnBhcnNlSW50KG1hcC5nZXQoInNjcmVlblgiKQorCQkJCQkJLnRvU3RyaW5nKCkpKTsKKwkJCQljdXJyZW50Q2xpZW50LnNldFZZKEludGVnZXIucGFyc2VJbnQobWFwLmdldCgic2NyZWVuWSIpCisJCQkJCQkudG9TdHJpbmcoKSkpOworCQkJCWN1cnJlbnRDbGllbnQuc2V0VldpZHRoKEludGVnZXIucGFyc2VJbnQobWFwLmdldCgic2NyZWVuV2lkdGgiKQorCQkJCQkJLnRvU3RyaW5nKCkpKTsKKwkJCQljdXJyZW50Q2xpZW50LnNldFZIZWlnaHQoSW50ZWdlci5wYXJzZUludChtYXAuZ2V0KAorCQkJCQkJInNjcmVlbkhlaWdodCIpLnRvU3RyaW5nKCkpKTsKKworCQkJCWxvZy5kZWJ1Zygic2NyZWVuIHgseSx3aWR0aCxoZWlnaHQgIiArIGN1cnJlbnRDbGllbnQuZ2V0VlgoKQorCQkJCQkJKyAiICIgKyBjdXJyZW50Q2xpZW50LmdldFZZKCkgKyAiICIKKwkJCQkJCSsgY3VycmVudENsaWVudC5nZXRWV2lkdGgoKSArICIgIgorCQkJCQkJKyBjdXJyZW50Q2xpZW50LmdldFZIZWlnaHQoKSk7CisKKwkJCQlsb2cuZGVidWcoInB1Ymxpc2hOYW1lIDo6ICIgKyBtYXAuZ2V0KCJwdWJsaXNoTmFtZSIpKTsKKworCQkJCWN1cnJlbnRDbGllbnQuc2V0U3RyZWFtUHVibGlzaE5hbWUobWFwLmdldCgicHVibGlzaE5hbWUiKQorCQkJCQkJLnRvU3RyaW5nKCkpOworCisJCQkJQ2xpZW50IGN1cnJlbnRTY3JlZW5Vc2VyID0gdGhpcy5zZXNzaW9uTWFuYWdlcgorCQkJCQkJLmdldENsaWVudEJ5UHVibGljU0lEKGN1cnJlbnRDbGllbnQKKwkJCQkJCQkJLmdldFN0cmVhbVB1Ymxpc2hOYW1lKCksIGZhbHNlLCBudWxsKTsKKworCQkJCWN1cnJlbnRDbGllbnQuc2V0Rmlyc3RuYW1lKGN1cnJlbnRTY3JlZW5Vc2VyLmdldEZpcnN0bmFtZSgpKTsKKwkJCQljdXJyZW50Q2xpZW50LnNldExhc3RuYW1lKGN1cnJlbnRTY3JlZW5Vc2VyLmdldExhc3RuYW1lKCkpOworCisJCQkJLy8gVGhpcyBpcyBkdXBsaWNhdGVkLCBidXQgaXRzIG5vdCBzdXJlIHRoYXQgaW4gdGhlIG1lYW50aW1lCisJCQkJLy8gc29tZWJvZHkgcmVxdWVzdHMgdGhpcyBDbGllbnQgT2JqZWN0IEluZm8KKwkJCQl0aGlzLnNlc3Npb25NYW5hZ2VyLnVwZGF0ZUNsaWVudEJ5U3RyZWFtSWQoY3VycmVudAorCQkJCQkJLmdldENsaWVudCgpLmdldElkKCksIGN1cnJlbnRDbGllbnQsIGZhbHNlLCBudWxsKTsKKworCQkJCWlmIChzdGFydFN0cmVhbWluZykgeworCQkJCQlpZiAoIWFscmVhZHlTdHJlYW1pbmcpIHsKKwkJCQkJCXJldHVybk1hcC5wdXQoIm1vZHVzIiwgInN0YXJ0U3RyZWFtaW5nIik7CisJCisJCQkJCQlsb2cuZGVidWcoInN0YXJ0IHN0cmVhbVB1Ymxpc2hTdGFydCBJcyBTY3JlZW4gU2hhcmluZyAiKTsKKwkJCQkJCQorCQkJCQkJLy9TZW5kIG1lc3NhZ2UgdG8gYWxsIHVzZXJzCisJCQkJCQlzeW5jTWVzc2FnZVRvQ3VycmVudFNjb3BlKCJuZXdTY3JlZW5TaGFyaW5nIiwgY3VycmVudENsaWVudCwgZmFsc2UpOworCQkJCQl9IGVsc2UgeworCQkJCQkJbG9nLndhcm4oIlN0cmVhbWluZyBpcyBhbHJlYWR5IHN0YXJ0ZWQgZm9yIHRoZSBjbGllbnQgaWQ9IiArIGN1cnJlbnRDbGllbnQuZ2V0SWQoKSArICIuIFNlY29uZCByZXF1ZXN0IGlzIGlnbm9yZWQuIik7CisJCQkJCX0KKwkJCQl9IGVsc2UgaWYgKHN0YXJ0UmVjb3JkaW5nKSB7CisJCQkJCWlmICghYWxyZWFkeVJlY29yZGluZykgeworCQkJCQkJcmV0dXJuTWFwLnB1dCgibW9kdXMiLCAic3RhcnRSZWNvcmRpbmciKTsKKwkKKwkJCQkJCVN0cmluZyByZWNvcmRpbmdOYW1lID0gIlJlY29yZGluZyAiCisJCQkJCQkJCSsgQ2FsZW5kYXJQYXR0ZXJucy5nZXREYXRlV2l0aFRpbWVCeU1pbGlTZWNvbmRzKG5ldyBEYXRlKCkpOworCQorCQkJCQkJZmx2UmVjb3JkZXJTZXJ2aWNlLnJlY29yZE1lZXRpbmdTdHJlYW0ocmVjb3JkaW5nTmFtZSwgIiIsIGZhbHNlKTsKKwkJCQkJfSBlbHNlIHsKKwkJCQkJCWxvZy53YXJuKCJSZWNvcmRpbmcgaXMgYWxyZWFkeSBzdGFydGVkIGZvciB0aGUgY2xpZW50IGlkPSIgKyBjdXJyZW50Q2xpZW50LmdldElkKCkgKyAiLiBTZWNvbmQgcmVxdWVzdCBpcyBpZ25vcmVkLiIpOworCQkJCQl9CisJCQkJfSBlbHNlIGlmIChzdGFydFB1Ymxpc2hpbmcpIHsKKwkJCQkJc3luY01lc3NhZ2VUb0N1cnJlbnRTY29wZSgic3RhcnRlZFB1Ymxpc2hpbmciLCBuZXcgT2JqZWN0W117Y3VycmVudENsaWVudCwgInJ0bXA6Ly8iICsgbWFwLmdldCgicHVibGlzaGluZ0hvc3QiKSArICI6MTkzNS8iCisJCQkJCQkJKyBtYXAuZ2V0KCJwdWJsaXNoaW5nQXBwIikgKyAiLyIgKyBtYXAuZ2V0KCJwdWJsaXNoaW5nSWQiKX0sIGZhbHNlLCB0cnVlKTsKKwkJCQkJcmV0dXJuTWFwLnB1dCgibW9kdXMiLCAic3RhcnRQdWJsaXNoaW5nIik7CisJCQkJfQorCisJCQkJcmV0dXJuIHJldHVybk1hcDsKKworCQkJfSBlbHNlIHsKKwkJCQl0aHJvdyBuZXcgRXhjZXB0aW9uKCJDb3VsZCBub3QgZmluZCBTY3JlZW4gU2hhcmluZyBDbGllbnQgIgorCQkJCQkJKyBjdXJyZW50LmdldENsaWVudCgpLmdldElkKCkpOworCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW3NldENvbm5lY3Rpb25Bc1NoYXJpbmdDbGllbnRdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKyAgICBwdWJsaWMgc3luY2hyb25pemVkIExpc3Q8SW50ZWdlcj4gbGlzdFJvb21Ccm9hZGNhc3QoKSB7CisgICAgCUhhc2hTZXQ8SW50ZWdlcj4gYnJvYWRjYXN0TGlzdCA9IG5ldyBIYXNoU2V0PEludGVnZXI+KCk7CisgICAgICAgIElDb25uZWN0aW9uIGN1cnJlbnQgPSBSZWQ1LmdldENvbm5lY3Rpb25Mb2NhbCgpOworICAgICAgICBTdHJpbmcgc3RyZWFtaWQgPSBjdXJyZW50LmdldENsaWVudCgpLmdldElkKCk7CisgICAgICAgIENvbGxlY3Rpb248U2V0PElDb25uZWN0aW9uPj4gY29uQ29sbGVjdGlvbiA9IGN1cnJlbnQuZ2V0U2NvcGUoKS5nZXRDb25uZWN0aW9ucygpOworICAgICAgICBmb3IgKFNldDxJQ29ubmVjdGlvbj4gY29uc2V0IDogY29uQ29sbGVjdGlvbikgeworICAgICAgICAgICAgZm9yIChJQ29ubmVjdGlvbiBjb25uIDogY29uc2V0KSB7CisgICAgICAgICAgICAgICAgaWYgKGNvbm4gIT0gbnVsbCkgeworICAgICAgICAgICAgICAgICAgICBDbGllbnQgcmNsID0gdGhpcy5zZXNzaW9uTWFuYWdlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRDbGllbnRCeVN0cmVhbUlkKGNvbm4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5nZXRDbGllbnQoKS5nZXRJZCgpLCBudWxsKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHJjbCA9PSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChyY2wuZ2V0SXNTY3JlZW5DbGllbnQoKSAhPSBudWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJiYgcmNsLmdldElzU2NyZWVuQ2xpZW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzdHJlYW1pZC5lcXVhbHMocmNsLmdldFN0cmVhbWlkKCkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gSXQgaXMgbm90IG5lZWRlZCB0byBzZW5kIGJhY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyB0aGF0IGV2ZW50IHRvIHRoZSBhY3R1YWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTW9kZXJhdG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYXMgaXQgd2lsbCBiZSBhbHJlYWR5IHRyaWdnZXJlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluIHRoZSByZXN1bHQgb2YgdGhpcyBGdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGluIHRoZSBDbGllbnQKKyAgICAgICAgICAgICAgICAgICAgICAgIAlMb25nIGlkID0gTG9uZy52YWx1ZU9mKHJjbC5nZXRCcm9hZENhc3RJRCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIAlpZiAoaWQgIT0gbnVsbCAmJiAhYnJvYWRjYXN0TGlzdC5jb250YWlucyhpZCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIAkJYnJvYWRjYXN0TGlzdC5hZGQoaWQuaW50VmFsdWUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAJfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBuZXcgQXJyYXlMaXN0PEludGVnZXI+KGJyb2FkY2FzdExpc3QpOworICAgIH0KKworCisJLyoqCisJICogdGhpcyBmdW5jdGlvbiBpcyBpbnZva2VkIGRpcmVjdGx5IGFmdGVyIGluaXRpYWwgY29ubmVjdGluZworCSAqIAorCSAqIEByZXR1cm4gcHVibGljU0lEIG9mIGN1cnJlbnQgY2xpZW50CisJICovCisJcHVibGljIHN5bmNocm9uaXplZCBTdHJpbmcgZ2V0UHVibGljU0lEKCkgeworCQlsb2cuZGVidWcoIi0tLS0tLS0tLS0tICBnZXRQdWJsaWNTSUQiKTsKKwkJSUNvbm5lY3Rpb24gY3VycmVudCA9IFJlZDUuZ2V0Q29ubmVjdGlvbkxvY2FsKCk7CisJCUNsaWVudCBjdXJyZW50Q2xpZW50ID0gdGhpcy5zZXNzaW9uTWFuYWdlcgorCQkJCS5nZXRDbGllbnRCeVN0cmVhbUlkKGN1cnJlbnQuZ2V0Q2xpZW50KCkuZ2V0SWQoKSwgbnVsbCk7CisJCXNlc3Npb25NYW5hZ2VyLnVwZGF0ZUNsaWVudEJ5U3RyZWFtSWQoY3VycmVudC5nZXRDbGllbnQoKS5nZXRJZCgpLAorCQkJCWN1cnJlbnRDbGllbnQsIGZhbHNlLCBudWxsKTsKKwkJcmV0dXJuIGN1cnJlbnRDbGllbnQuZ2V0UHVibGljU0lEKCk7CisJfQorCisJLyoqCisJICogdGhpcyBmdW5jdGlvbiBpcyBpbnZva2VkIGFmdGVyIGEgcmVjb25uZWN0CisJICogCisJICogQHBhcmFtIG5ld1B1YmxpY1NJRAorCSAqLworCXB1YmxpYyBzeW5jaHJvbml6ZWQgQm9vbGVhbiBvdmVyd3JpdGVQdWJsaWNTSUQoU3RyaW5nIG5ld1B1YmxpY1NJRCkgeworCQl0cnkgeworCQkJbG9nLmRlYnVnKCItLS0tLS0tLS0tLSAgb3ZlcndyaXRlUHVibGljU0lEIik7CisJCQlJQ29ubmVjdGlvbiBjdXJyZW50ID0gUmVkNS5nZXRDb25uZWN0aW9uTG9jYWwoKTsKKwkJCUlDbGllbnQgYyA9IGN1cnJlbnQuZ2V0Q2xpZW50KCk7CisJCQlDbGllbnQgY3VycmVudENsaWVudCA9IHNlc3Npb25NYW5hZ2VyLmdldENsaWVudEJ5U3RyZWFtSWQoYy5nZXRJZCgpLCBudWxsKTsKKwkJCWlmIChjdXJyZW50Q2xpZW50ID09IG51bGwpIHsKKwkJCQlyZXR1cm4gZmFsc2U7CisJCQl9CisJCQlTZXNzaW9uVmFyaWFibGVzVXRpbC5pbml0Q2xpZW50KGMsIFNlc3Npb25WYXJpYWJsZXNVdGlsLmlzQVZDbGllbnQoYyksIG5ld1B1YmxpY1NJRCk7CisJCQljdXJyZW50Q2xpZW50LnNldFB1YmxpY1NJRChuZXdQdWJsaWNTSUQpOworCQkJc2Vzc2lvbk1hbmFnZXIudXBkYXRlQ2xpZW50QnlTdHJlYW1JZChjLmdldElkKCksIGN1cnJlbnRDbGllbnQsIGZhbHNlLCBudWxsKTsKKwkJCXJldHVybiB0cnVlOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltvdmVyd3JpdGVQdWJsaWNTSURdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvKioKKwkgKiBMb2dpYyBtdXN0IGJlIGJlZm9yZSByb29tRGlzY29ubmVjdCBjYXVzZSBvdGhlcndpc2UgeW91IGNhbm5vdCB0aHJvdyBhCisJICogbWVzc2FnZSB0byBlYWNoIG9uZQorCSAqIAorCSAqLworCUBPdmVycmlkZQorCXB1YmxpYyB2b2lkIHJvb21MZWF2ZShJQ2xpZW50IGNsaWVudCwgSVNjb3BlIHJvb20pIHsKKwkJdHJ5IHsKKworCQkJbG9nLmRlYnVnKCJyb29tTGVhdmUgIiArIGNsaWVudC5nZXRJZCgpICsgIiAiCisJCQkJCSsgcm9vbS5nZXRDbGllbnRzKCkuc2l6ZSgpICsgIiAiICsgcm9vbS5nZXRDb250ZXh0UGF0aCgpCisJCQkJCSsgIiAiICsgcm9vbS5nZXROYW1lKCkpOworCisJCQlDbGllbnQgY3VycmVudENsaWVudCA9IHRoaXMuc2Vzc2lvbk1hbmFnZXIKKwkJCQkJLmdldENsaWVudEJ5U3RyZWFtSWQoY2xpZW50LmdldElkKCksIG51bGwpOworCisJCQkvLyBUaGUgUm9vbSBDbGllbnQgY2FuIGJlIG51bGwgaWYgdGhlIENsaWVudCBsZWZ0IHRoZSByb29tIGJ5IHVzaW5nCisJCQkvLyBsb2dpY2FsUm9vbUxlYXZlCisJCQlpZiAoY3VycmVudENsaWVudCAhPSBudWxsKSB7CisJCQkJbG9nLmRlYnVnKCJjdXJyZW50Q2xpZW50IElTIE5PVCBOVUxMIik7CisJCQkJdGhpcy5yb29tTGVhdmVCeVNjb3BlKGN1cnJlbnRDbGllbnQsIHJvb20sIHRydWUpOworCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW3Jvb21MZWF2ZV0iLCBlcnIpOworCQl9CisJfQorCisJLyoqCisJICogdGhpcyBtZWFucyBhIHVzZXIgaGFzIGxlZnQgYSByb29tIGJ1dCBvbmx5IGxvZ2ljYWxseSwgaGUgZGlkbid0IGxlYXZlIHRoZQorCSAqIGFwcCBoZSBqdXN0IGxlZnQgdGhlIHJvb20KKwkgKiAKKwkgKiBGSVhNRTogSXMgdGhpcyByZWFsbHkgbmVlZGVkIGFueW1vcmUgaWYgeW91IHJlLWNvbm5lY3QgdG8gYW5vdGhlciBzY29wZT8KKwkgKiAKKwkgKiBFeGl0IFJvb20gYnkgQXBwbGljYXRpb24KKwkgKiAKKwkgKi8KKwlwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgbG9naWNhbFJvb21MZWF2ZSgpIHsKKwkJbG9nLmRlYnVnKCJsb2dpY2FsUm9vbUxlYXZlICIpOworCQl0cnkgeworCQkJSUNvbm5lY3Rpb24gY3VycmVudCA9IFJlZDUuZ2V0Q29ubmVjdGlvbkxvY2FsKCk7CisJCQlTdHJpbmcgc3RyZWFtaWQgPSBjdXJyZW50LmdldENsaWVudCgpLmdldElkKCk7CisKKwkJCWxvZy5kZWJ1ZyhzdHJlYW1pZCArICIgaXMgbGVhdmluZyIpOworCisJCQlDbGllbnQgY3VycmVudENsaWVudCA9IHRoaXMuc2Vzc2lvbk1hbmFnZXIKKwkJCQkJLmdldENsaWVudEJ5U3RyZWFtSWQoc3RyZWFtaWQsIG51bGwpOworCisJCQl0aGlzLnJvb21MZWF2ZUJ5U2NvcGUoY3VycmVudENsaWVudCwgY3VycmVudC5nZXRTY29wZSgpLCB0cnVlKTsKKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltsb2dpY2FsUm9vbUxlYXZlXSIsIGVycik7CisJCX0KKwl9CisKKwkvKioKKwkgKiBSZW1vdmVzIHRoZSBDbGllbnQgZnJvbSB0aGUgTGlzdCwgc3RvcHMgcmVjb3JkaW5nLCBhZGRzIHRoZSBSb29tLUxlYXZlCisJICogZXZlbnQgdG8gcnVubmluZyByZWNvcmRpbmdzLCBjbGVhciBQb2xscyBhbmQgcmVtb3ZlcyBDbGllbnQgZnJvbSBhbnkgbGlzdAorCSAqIAorCSAqIFRoaXMgZnVuY3Rpb24gaXMga2luZCBvZiBwcml2YXRlL3Byb3RlY3RlZCBhcyB0aGUgY2xpZW50IHdvbid0IGJlIGFibGUgCisJICogdG8gY2FsbCBpdCB3aXRoIHByb3BlciB2YWx1ZXMuCisJICogCisJICogQHBhcmFtIGN1cnJlbnRDbGllbnQKKwkgKiBAcGFyYW0gY3VycmVudFNjb3BlCisJICovCisJcHVibGljIHN5bmNocm9uaXplZCB2b2lkIHJvb21MZWF2ZUJ5U2NvcGUoQ2xpZW50IGN1cnJlbnRDbGllbnQsCisJCQlJU2NvcGUgY3VycmVudFNjb3BlLCBib29sZWFuIHJlbW92ZVVzZXJGcm9tU2Vzc2lvbkxpc3QpIHsKKwkJdHJ5IHsKKworCQkJbG9nLmRlYnVnKCJjdXJyZW50Q2xpZW50ICIgKyBjdXJyZW50Q2xpZW50KTsKKwkJCWxvZy5kZWJ1ZygiY3VycmVudFNjb3BlICIgKyBjdXJyZW50U2NvcGUpOworCQkJLy8gbG9nLmRlYnVnKCJjdXJyZW50Q2xpZW50ICIrY3VycmVudENsaWVudC5nZXRSb29tX2lkKCkpOworCisJCQlMb25nIHJvb21faWQgPSBjdXJyZW50Q2xpZW50LmdldFJvb21faWQoKTsKKworCQkJLy8gTG9nIHRoZSBVc2VyCisJCQljb25mZXJlbmNlTG9nRGFvLmFkZENvbmZlcmVuY2VMb2coInJvb21MZWF2ZSIsCisJCQkJCWN1cnJlbnRDbGllbnQuZ2V0VXNlcl9pZCgpLCBjdXJyZW50Q2xpZW50LmdldFN0cmVhbWlkKCksCisJCQkJCXJvb21faWQsIGN1cnJlbnRDbGllbnQuZ2V0VXNlcmlwKCksICIiLAorCQkJCQljdXJyZW50Q2xpZW50LmdldEV4dGVybmFsVXNlcklkKCksCisJCQkJCWN1cnJlbnRDbGllbnQuZ2V0RXh0ZXJuYWxVc2VyVHlwZSgpLAorCQkJCQljdXJyZW50Q2xpZW50LmdldE1haWwoKSwgY3VycmVudENsaWVudC5nZXRGaXJzdG5hbWUoKSwKKwkJCQkJY3VycmVudENsaWVudC5nZXRMYXN0bmFtZSgpKTsKKworCQkJLy8gUmVtb3ZlIFVzZXIgZnJvbSBTeW5jIExpc3QncworCQkJaWYgKHJvb21faWQgIT0gbnVsbCkgeworCQkJCXRoaXMud2hpdGVCb2FyZFNlcnZpY2UucmVtb3ZlVXNlckZyb21BbGxMaXN0cyhjdXJyZW50U2NvcGUsCisJCQkJCQljdXJyZW50Q2xpZW50KTsKKwkJCX0KKworCQkJbG9nLmRlYnVnKCJyZW1vdmluZyBVU2VybmFtZSAiICsgY3VycmVudENsaWVudC5nZXRVc2VybmFtZSgpICsgIiAiCisJCQkJCSsgY3VycmVudENsaWVudC5nZXRDb25uZWN0ZWRTaW5jZSgpICsgIiBzdHJlYW1pZDogIgorCQkJCQkrIGN1cnJlbnRDbGllbnQuZ2V0U3RyZWFtaWQoKSk7CisKKwkJCS8vIHN0b3AgYW5kIHNhdmUgYW55IHJlY29yZGluZ3MKKwkJCWlmIChjdXJyZW50Q2xpZW50LmdldElzUmVjb3JkaW5nKCkpIHsKKwkJCQlsb2cuZGVidWcoIioqKiByb29tTGVhdmUgQ3VycmVudCBDbGllbnQgaXMgUmVjb3JkaW5nIC0gc3RvcCB0aGF0Iik7CisJCQkJLy8gU3RyZWFtU2VydmljZS5zdG9wUmVjb3JkQW5kU2F2ZShjdXJyZW50U2NvcGUsCisJCQkJLy8gY3VycmVudENsaWVudC5nZXRSb29tUmVjb3JkaW5nTmFtZSgpLCBjdXJyZW50Q2xpZW50KTsKKworCQkJCWZsdlJlY29yZGVyU2VydmljZS5zdG9wUmVjb3JkQW5kU2F2ZShjdXJyZW50U2NvcGUsIGN1cnJlbnRDbGllbnQsIG51bGwpOworCisJCQkJLy8gc2V0IHRvIHRydWUgYW5kIG92ZXJ3cml0ZSB0aGUgZGVmYXVsdCBvbmUgY2F1c2Ugb3RoZXJ3aXNlIG5vCisJCQkJLy8gbm90aWZpY2F0aW9uIGlzIHNlbmQKKwkJCQljdXJyZW50Q2xpZW50LnNldElzUmVjb3JkaW5nKHRydWUpOworCQkJfQorCisJCQkvLyBOb3RpZnkgYWxsIGNsaWVudHMgb2YgdGhlIHNhbWUgY3VycmVudFNjb3BlIChyb29tKSB3aXRoIGRvbWFpbgorCQkJLy8gYW5kIHJvb20gZXhjZXB0IHRoZSBjdXJyZW50IGRpc2Nvbm5lY3RlZCBjYXVzZSBpdCBjb3VsZCB0aHJvdyBhbiBleGNlcHRpb24KKwkJCWxvZy5kZWJ1ZygiY3VycmVudFNjb3BlICIgKyBjdXJyZW50U2NvcGUpOworCisJCQlpZiAoY3VycmVudFNjb3BlICE9IG51bGwgJiYgY3VycmVudFNjb3BlLmdldENvbm5lY3Rpb25zKCkgIT0gbnVsbCkgeworCQkJCS8vIE5vdGlmeSBVc2VycyBvZiB0aGUgY3VycmVudCBTY29wZQorCQkJCUNvbGxlY3Rpb248U2V0PElDb25uZWN0aW9uPj4gY29uQ29sbGVjdGlvbiA9IGN1cnJlbnRTY29wZQorCQkJCQkJLmdldENvbm5lY3Rpb25zKCk7CisJCQkJZm9yIChTZXQ8SUNvbm5lY3Rpb24+IGNvbnNldCA6IGNvbkNvbGxlY3Rpb24pIHsKKwkJCQkJZm9yIChJQ29ubmVjdGlvbiBjb25zIDogY29uc2V0KSB7CisJCQkJCQlpZiAoY29ucyAhPSBudWxsICYmIGNvbnMgaW5zdGFuY2VvZiBJU2VydmljZUNhcGFibGVDb25uZWN0aW9uKSB7CisKKwkJCQkJCQlsb2cuZGVidWcoInNlbmRpbmcgcm9vbURpc2Nvbm5lY3QgdG8gIiArIGNvbnMKKwkJCQkJCQkJCSsgIiBjbGllbnQgaWQgIgorCQkJCQkJCQkJKyBjb25zLmdldENsaWVudCgpLmdldElkKCkpOworCisJCQkJCQkJQ2xpZW50IHJjbCA9IHRoaXMuc2Vzc2lvbk1hbmFnZXIKKwkJCQkJCQkJCS5nZXRDbGllbnRCeVN0cmVhbUlkKGNvbnMuZ2V0Q2xpZW50KCkKKwkJCQkJCQkJCQkJLmdldElkKCksIG51bGwpOworCisJCQkJCQkJLyoKKwkJCQkJCQkgKiBDaGVjayBpZiB0aGUgQ2xpZW50IGRvZXMgc3RpbGwgZXhpc3Qgb24gdGhlCisJCQkJCQkJICogbGlzdAorCQkJCQkJCSAqLworCQkJCQkJCWlmIChyY2wgIT0gbnVsbCkgeworCisJCQkJCQkJCS8qCisJCQkJCQkJCSAqIERvIG5vdCBzZW5kIGJhY2sgdG8gc2VuZGVyLCBidXQgYWN0dWFsbHkKKwkJCQkJCQkJICogYWxsIG90aGVyIGNsaWVudHMgc2hvdWxkIHJlY2VpdmUgdGhpcworCQkJCQkJCQkgKiBtZXNzYWdlIHN3YWduZXIgMDEuMTAuMjAwOQorCQkJCQkJCQkgKi8KKwkJCQkJCQkJaWYgKCFjdXJyZW50Q2xpZW50LmdldFN0cmVhbWlkKCkuZXF1YWxzKAorCQkJCQkJCQkJCXJjbC5nZXRTdHJlYW1pZCgpKSkgeworCQkJCQkJCQkJCisJCQkJCQkJCQkvLyBhZGQgTm90aWZpY2F0aW9uIGlmIGFub3RoZXIgdXNlciBpc3JlY29yZGluZworCQkJCQkJCQkJbG9nLmRlYnVnKCIjIyMjIyMjIyMjI1tyb29tTGVhdmVdIik7CisJCQkJCQkJCQlpZiAocmNsLmdldElzUmVjb3JkaW5nKCkpIHsKKwkJCQkJCQkJCQlsb2cuZGVidWcoIioqKiByb29tTGVhdmUgQW55IENsaWVudCBpcyBSZWNvcmRpbmcgLSBzdG9wIHRoYXQiKTsKKwkJCQkJCQkJCQl0aGlzLmZsdlJlY29yZGVyU2VydmljZQorCQkJCQkJCQkJCQkJLnN0b3BSZWNvcmRpbmdTaG93Rm9yQ2xpZW50KAorCQkJCQkJCQkJCQkJCQljb25zLCBjdXJyZW50Q2xpZW50KTsKKwkJCQkJCQkJCX0KKwkJCQkJCQkJCQorCQkJCQkJCQkJLy9JZiB0aGUgdXNlciB3YXMgYSBhdmNsaWVudCwgd2UgZG8gbm90IGJyb2FkY2FzdCBhIG1lc3NhZ2UgYWJvdXQgdGhhdCB0byBldmVyeWJvZHkKKwkJCQkJCQkJCWlmIChjdXJyZW50Q2xpZW50LmdldElzQVZDbGllbnQoKSkgeworCQkJCQkJCQkJCWNvbnRpbnVlOworCQkJCQkJCQkJfQorCQkJCQkJCQkJCisJCQkJCQkJCQlib29sZWFuIGlzU2NyZWVuID0gcmNsLmdldElzU2NyZWVuQ2xpZW50KCkgIT0gbnVsbCAmJiByY2wuZ2V0SXNTY3JlZW5DbGllbnQoKTsKKwkJCQkJCQkJCWlmIChpc1NjcmVlbiAmJiBjdXJyZW50Q2xpZW50LmdldFB1YmxpY1NJRCgpLmVxdWFscyhyY2wuZ2V0U3RyZWFtUHVibGlzaE5hbWUoKSkpIHsKKwkJCQkJCQkJCQkvL2dvaW5nIHRvIHRlcm1pbmF0ZSBzY3JlZW4gc2hhcmluZyBzdGFydGVkIGJ5IHRoaXMgY2xpZW50CisJCQkJCQkJCQkJKChJU2VydmljZUNhcGFibGVDb25uZWN0aW9uKSBjb25zKS5pbnZva2UoInN0b3BTdHJlYW0iLCBuZXcgT2JqZWN0W10geyB9LHRoaXMpOworCQkJCQkJCQkJCWNvbnRpbnVlOworCQkJCQkJCQkJfSBlbHNlIGlmIChpc1NjcmVlbikgeworCQkJCQkJCQkJCS8vIHNjcmVlbiBzaGFyaW5nIGNsaWVudHMgZG8gbm90IHJlY2VpdmUgZXZlbnRzCisJCQkJCQkJCQkJY29udGludWU7CisJCQkJCQkJCQl9IGVsc2UgaWYgKHJjbC5nZXRJc0FWQ2xpZW50KCkpIHsKKwkJCQkJCQkJCQkvLyBBVkNsaWVudHMgb3IgcG90ZW50aWFsIEFWQ2xpZW50cyBkbyBub3QgcmVjZWl2ZSBldmVudHMKKwkJCQkJCQkJCQljb250aW51ZTsKKwkJCQkJCQkJCX0KKwkJCQkJCQkJCQorCQkJCQkJCQkJLy8gU2VuZCB0byBhbGwgY29ubmVjdGVkIHVzZXJzCisJCQkJCQkJCQkoKElTZXJ2aWNlQ2FwYWJsZUNvbm5lY3Rpb24pIGNvbnMpCisJCQkJCQkJCQkJCS5pbnZva2UoInJvb21EaXNjb25uZWN0IiwKKwkJCQkJCQkJCQkJCW5ldyBPYmplY3RbXSB7IGN1cnJlbnRDbGllbnQgfSx0aGlzKTsKKwkJCQkJCQkJCWxvZy5kZWJ1Zygic2VuZGluZyByb29tRGlzY29ubmVjdCB0byAiICsgY29ucyk7CisJCQkJCQkJCX0KKwkJCQkJCQl9IGVsc2UgeworCQkJCQkJCQlsb2cuZGVidWcoIkZvciB0aGlzIFN0cmVhbUlkOiAiCisJCQkJCQkJCQkJKyBjb25zLmdldENsaWVudCgpLmdldElkKCkKKwkJCQkJCQkJCQkrICIgVGhlcmUgaXMgbm8gQ2xpZW50IGluIHRoZSBMaXN0IGFueW1vcmUiKTsKKwkJCQkJCQl9CisJCQkJCQl9CisJCQkJCX0KKwkJCQl9CisJCQl9CisKKwkJCWlmIChyZW1vdmVVc2VyRnJvbVNlc3Npb25MaXN0KSB7CisJCQkJdGhpcy5zZXNzaW9uTWFuYWdlci5yZW1vdmVDbGllbnQoY3VycmVudENsaWVudC5nZXRTdHJlYW1pZCgpLCBudWxsKTsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbcm9vbUxlYXZlQnlTY29wZV0iLCBlcnIpOworCQl9CisJfQorCisJLyoqCisJICogVGhpcyBtZXRob2QgaGFuZGxlcyB0aGUgRXZlbnQgYWZ0ZXIgYSBzdHJlYW0gaGFzIGJlZW4gYWRkZWQgYWxsIGNvbm5lY3RlZAorCSAqIENsaWVudHMgaW4gdGhlIHNhbWUgcm9vbSB3aWxsIGdldCBhIG5vdGlmaWNhdGlvbgorCSAqIAorCSAqLworCS8qIChub24tSmF2YWRvYykKKwkgKiBAc2VlIG9yZy5yZWQ1LnNlcnZlci5hZGFwdGVyLk11bHRpVGhyZWFkZWRBcHBsaWNhdGlvbkFkYXB0ZXIjc3RyZWFtUHVibGlzaFN0YXJ0KG9yZy5yZWQ1LnNlcnZlci5hcGkuc3RyZWFtLklCcm9hZGNhc3RTdHJlYW0pCisJICovCisJQE92ZXJyaWRlCisJcHVibGljIHN5bmNocm9uaXplZCB2b2lkIHN0cmVhbVB1Ymxpc2hTdGFydChJQnJvYWRjYXN0U3RyZWFtIHN0cmVhbSkgeworCQl0cnkgeworCQkJbG9nLmRlYnVnKCItLS0tLS0tLS0tLSAgc3RyZWFtUHVibGlzaFN0YXJ0Iik7CisJCQlJQ29ubmVjdGlvbiBjdXJyZW50ID0gUmVkNS5nZXRDb25uZWN0aW9uTG9jYWwoKTsKKwkJCVN0cmluZyBzdHJlYW1pZCA9IGN1cnJlbnQuZ2V0Q2xpZW50KCkuZ2V0SWQoKTsKKwkJCUNsaWVudCBjdXJyZW50Q2xpZW50ID0gdGhpcy5zZXNzaW9uTWFuYWdlcgorCQkJCQkuZ2V0Q2xpZW50QnlTdHJlYW1JZChzdHJlYW1pZCwgbnVsbCk7CisKKwkJCS8vV2UgbWFrZSBhIHNlY29uZCBvYmplY3QgdGhlIGhhcyB0aGUgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3QgCisJCQkvL3RoYXQgd2Ugd2lsbCB1c2UgdG8gc2VuZCB0byBhbGwgcGFydGljaXBlbnRzCisJCQlDbGllbnQgY2xpZW50T2JqZWN0U2VuZFRvU3luYyA9IGN1cnJlbnRDbGllbnQ7CisJCQkKKwkJCS8vIE5vdGlmeSBhbGwgdGhlIGNsaWVudHMgdGhhdCB0aGUgc3RyZWFtIGhhZCBiZWVuIHN0YXJ0ZWQKKwkJCWxvZy5kZWJ1Zygic3RhcnQgc3RyZWFtUHVibGlzaFN0YXJ0IGJyb2FkY2FzdCBzdGFydDogIgorCQkJCQkrIHN0cmVhbS5nZXRQdWJsaXNoZWROYW1lKCkgKyAiIENPTk4gIiArIGN1cnJlbnQpOworCisJCQkvLyBJbiBjYXNlIGl0cyBhIHNjcmVlbiBzaGFyaW5nIHdlIHN0YXJ0IGEgbmV3IFZpZGVvIGZvciB0aGF0CisJCQlpZiAoY3VycmVudENsaWVudC5nZXRJc1NjcmVlbkNsaWVudCgpKSB7CisKKwkJCQljdXJyZW50Q2xpZW50LnNldFNjcmVlblB1Ymxpc2hTdGFydGVkKHRydWUpOworCisJCQkJdGhpcy5zZXNzaW9uTWFuYWdlci51cGRhdGVDbGllbnRCeVN0cmVhbUlkKGN1cnJlbnQKKwkJCQkJCS5nZXRDbGllbnQoKS5nZXRJZCgpLCBjdXJyZW50Q2xpZW50LCBmYWxzZSwgbnVsbCk7CisJCQl9CisJCQkvL0lmIGl0cyBhbiBhdWRpby92aWRlbyBjbGllbnQgdGhlbiBzZW5kIHRoZSBzZXNzaW9uIG9iamVjdCB3aXRoIHRoZSBmdWxsIAorCQkJLy9kYXRhIHRvIGV2ZXJ5Ym9keQorCQkJZWxzZSBpZiAoY3VycmVudENsaWVudC5nZXRJc0FWQ2xpZW50KCkpIHsKKwkJCQljbGllbnRPYmplY3RTZW5kVG9TeW5jID0gdGhpcy5zZXNzaW9uTWFuYWdlci5nZXRDbGllbnRCeVB1YmxpY1NJRCgKKwkJCQkJCQkJCQkJY3VycmVudENsaWVudC5nZXRQdWJsaWNTSUQoKSwgZmFsc2UsIG51bGwpOworCQkJfQorCQkJCisJCQlsb2cuZGVidWcoIm5ld1N0cmVhbSBTRU5EOiAiK2N1cnJlbnRDbGllbnQpOworCisJCQkvLyBOb3RpZnkgYWxsIHVzZXJzIG9mIHRoZSBzYW1lIFNjb3BlCisJCQkvLyBXZSBuZWVkIHRvIGl0ZXJhdGUgdGhyb3VnaCB0aGUgc3RyZWFtcyB0byBjYXRjaCBpZiBhbnlib2R5IGlzIHJlY29yZGluZworCQkJQ29sbGVjdGlvbjxTZXQ8SUNvbm5lY3Rpb24+PiBjb25Db2xsZWN0aW9uID0gY3VycmVudC5nZXRTY29wZSgpCisJCQkJCS5nZXRDb25uZWN0aW9ucygpOworCQkJZm9yIChTZXQ8SUNvbm5lY3Rpb24+IGNvbnNldCA6IGNvbkNvbGxlY3Rpb24pIHsKKwkJCQlmb3IgKElDb25uZWN0aW9uIGNvbm4gOiBjb25zZXQpIHsKKwkJCQkJaWYgKGNvbm4gIT0gbnVsbCkgeworCQkJCQkJaWYgKGNvbm4gaW5zdGFuY2VvZiBJU2VydmljZUNhcGFibGVDb25uZWN0aW9uKSB7CisJCQkJCQkJCisJCQkJCQkJQ2xpZW50IHJjbCA9IHRoaXMuc2Vzc2lvbk1hbmFnZXIKKwkJCQkJCQkJCS5nZXRDbGllbnRCeVN0cmVhbUlkKGNvbm4uZ2V0Q2xpZW50KCkKKwkJCQkJCQkJCQkJLmdldElkKCksIG51bGwpOworCQkJCQkJCQorCQkJCQkJCWlmIChyY2wgPT0gbnVsbCkgeworCQkJCQkJCQlsb2cuZGVidWcoIlJDTCBJUyBOVUxMIG5ld1N0cmVhbSBTRU5EIik7CisJCQkJCQkJCWNvbnRpbnVlOworCQkJCQkJCX0KKwkJCQkJCQkKKwkJCQkJCQlsb2cuZGVidWcoImNoZWNrIHNlbmQgdG8gIityY2wpOworCQkJCQkJCQorCQkJCQkJCWlmIChyY2wuZ2V0UHVibGljU0lEKCkgPT0gIiIpIHsKKwkJCQkJCQkJbG9nLmRlYnVnKCJwdWJsaWNTSUQgSVMgTlVMTCBuZXdTdHJlYW0gU0VORCIpOworCQkJCQkJCQljb250aW51ZTsKKwkJCQkJCQl9CisJCQkJCQkJaWYgKHJjbC5nZXRJc1JlY29yZGluZygpKSB7CisJCQkJCQkJCWxvZy5kZWJ1ZygiUkNMIGdldElzUmVjb3JkaW5nIG5ld1N0cmVhbSBTRU5EIik7CisJCQkJCQkJCXRoaXMuZmx2UmVjb3JkZXJTZXJ2aWNlCisJCQkJCQkJCQkJLmFkZFJlY29yZGluZ0J5U3RyZWFtSWQoY3VycmVudCwKKwkJCQkJCQkJCQkJCXN0cmVhbWlkLCBjdXJyZW50Q2xpZW50LAorCQkJCQkJCQkJCQkJcmNsLmdldEZsdlJlY29yZGluZ0lkKCkpOworCQkJCQkJCX0KKwkJCQkJCQlpZiAocmNsLmdldElzQVZDbGllbnQoKSkgeworCQkJCQkJCQlsb2cuZGVidWcoIlJDTCBnZXRJc0FWQ2xpZW50IG5ld1N0cmVhbSBTRU5EIik7CisJCQkJCQkJCWNvbnRpbnVlOworCQkJCQkJCX0KKwkJCQkJCQlpZiAocmNsLmdldElzU2NyZWVuQ2xpZW50KCkgPT0gbnVsbCB8fCByY2wuZ2V0SXNTY3JlZW5DbGllbnQoKSkgeworCQkJCQkJCQlsb2cuZGVidWcoIlJDTCBnZXRJc1NjcmVlbkNsaWVudCBuZXdTdHJlYW0gU0VORCIpOworCQkJCQkJCQljb250aW51ZTsKKwkJCQkJCQl9CisJCQkJCQkJCisJCQkJCQkJaWYgKHJjbC5nZXRQdWJsaWNTSUQoKS5lcXVhbHMoY3VycmVudENsaWVudC5nZXRQdWJsaWNTSUQoKSkpIHsKKwkJCQkJCQkJbG9nLmRlYnVnKCJSQ0wgcHVibGljU0lEIGlzIGVxdWFsIG5ld1N0cmVhbSBTRU5EIik7CisJCQkJCQkJCWNvbnRpbnVlOworCQkJCQkJCX0KKwkJCQkJCQkKKwkJCQkJCQlsb2cuZGVidWcoIlJDTCBTRU5EIGlzIGVxdWFsIG5ld1N0cmVhbSBTRU5EICIrcmNsLmdldFB1YmxpY1NJRCgpKyIgfHwgIityY2wuZ2V0VXNlcnBvcnQoKSk7CisJCQkJCQkJCQorCQkJCQkJCUlTZXJ2aWNlQ2FwYWJsZUNvbm5lY3Rpb24gaVN0cmVhbSA9IChJU2VydmljZUNhcGFibGVDb25uZWN0aW9uKSBjb25uOworCQkJCQkJCWlTdHJlYW0uaW52b2tlKCJuZXdTdHJlYW0iLAorCQkJCQkJCQkJbmV3IE9iamVjdFtdIHsgY2xpZW50T2JqZWN0U2VuZFRvU3luYyB9LAorCQkJCQkJCQkJdGhpcyk7CisKKwkJCQkJCX0KKwkJCQkJfQorCQkJCX0KKwkJCX0KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltzdHJlYW1QdWJsaXNoU3RhcnRdIiwgZXJyKTsKKwkJfQorCX0KKworCXB1YmxpYyBJQnJvYWRjYXN0U2NvcGUgZ2V0QnJvYWRjYXN0U2NvcGUoSVNjb3BlIHNjb3BlLCBTdHJpbmcgbmFtZSkgeworCQlJQmFzaWNTY29wZSBiYXNpY1Njb3BlID0gc2NvcGUuZ2V0QmFzaWNTY29wZShTY29wZVR5cGUuQlJPQURDQVNULCBuYW1lKTsKKwkJaWYgKCEoYmFzaWNTY29wZSBpbnN0YW5jZW9mIElCcm9hZGNhc3RTY29wZSkpIHsKKwkJCXJldHVybiBudWxsOworCQl9IGVsc2UgeworCQkJcmV0dXJuIChJQnJvYWRjYXN0U2NvcGUpIGJhc2ljU2NvcGU7CisJCX0KKwl9CisKKwkvKioKKwkgKiBUaGlzIG1ldGhvZCBoYW5kbGVzIHRoZSBFdmVudCBhZnRlciBhIHN0cmVhbSBoYXMgYmVlbiByZW1vdmVkIGFsbAorCSAqIGNvbm5lY3RlZCBDbGllbnRzIGluIHRoZSBzYW1lIHJvb20gd2lsbCBnZXQgYSBub3RpZmljYXRpb24KKwkgKiAKKwkgKi8KKwkvKiAobm9uLUphdmFkb2MpCisJICogQHNlZSBvcmcucmVkNS5zZXJ2ZXIuYWRhcHRlci5NdWx0aVRocmVhZGVkQXBwbGljYXRpb25BZGFwdGVyI3N0cmVhbUJyb2FkY2FzdENsb3NlKG9yZy5yZWQ1LnNlcnZlci5hcGkuc3RyZWFtLklCcm9hZGNhc3RTdHJlYW0pCisJICovCisJQE92ZXJyaWRlCisJcHVibGljIHN5bmNocm9uaXplZCB2b2lkIHN0cmVhbUJyb2FkY2FzdENsb3NlKElCcm9hZGNhc3RTdHJlYW0gc3RyZWFtKSB7CisKKwkJLy8gTm90aWZ5IGFsbCB0aGUgY2xpZW50cyB0aGF0IHRoZSBzdHJlYW0gaGFkIGJlZW4gY2xvc2VkCisJCWxvZy5kZWJ1Zygic3RhcnQgc3RyZWFtQnJvYWRjYXN0Q2xvc2UgYnJvYWRjYXN0IGNsb3NlOiAiCisJCQkJKyBzdHJlYW0uZ2V0UHVibGlzaGVkTmFtZSgpKTsKKwkJdHJ5IHsKKwkJCUlDb25uZWN0aW9uIGN1cnJlbnQgPSBSZWQ1LmdldENvbm5lY3Rpb25Mb2NhbCgpOworCQkJQ2xpZW50IHJjbCA9IHNlc3Npb25NYW5hZ2VyLmdldENsaWVudEJ5U3RyZWFtSWQoY3VycmVudC5nZXRDbGllbnQoKS5nZXRJZCgpLCBudWxsKTsKKwkJCXNlbmRDbGllbnRCcm9hZGNhc3ROb3RpZmljYXRpb25zKHN0cmVhbSwgImNsb3NlU3RyZWFtIiwgcmNsKTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCWxvZy5lcnJvcigiW3N0cmVhbUJyb2FkY2FzdENsb3NlXSIsIGUpOworCQl9CisJfQorCisJLyoqCisJICogVGhpcyBtZXRob2QgaGFuZGxlcyB0aGUgbm90aWZpY2F0aW9uIHJvb20tYmFzZWQKKwkgKiAKKwkgKiBAcmV0dXJuIHZvaWQKKwkgKiAKKwkgKi8KKwlwcml2YXRlIHN5bmNocm9uaXplZCB2b2lkIHNlbmRDbGllbnRCcm9hZGNhc3ROb3RpZmljYXRpb25zKAorCQkJSUJyb2FkY2FzdFN0cmVhbSBzdHJlYW0sIFN0cmluZyBjbGllbnRGdW5jdGlvbiwgQ2xpZW50IHJjKSB7CisJCXRyeSB7CisKKwkJCS8vIFN0b3JlIHRoZSBsb2NhbCBzbyB0aGF0IHdlIGRvIG5vdCBzZW5kIG5vdGlmaWNhdGlvbiB0byBvdXJzZWxmCisJCQkvLyBiYWNrCisJCQlJQ29ubmVjdGlvbiBjdXJyZW50ID0gUmVkNS5nZXRDb25uZWN0aW9uTG9jYWwoKTsKKwkJCVN0cmluZyBzdHJlYW1pZCA9IGN1cnJlbnQuZ2V0Q2xpZW50KCkuZ2V0SWQoKTsKKwkJCUNsaWVudCBjdXJyZW50Q2xpZW50ID0gdGhpcy5zZXNzaW9uTWFuYWdlcgorCQkJCQkuZ2V0Q2xpZW50QnlTdHJlYW1JZChzdHJlYW1pZCwgbnVsbCk7CisKKwkJCWlmIChjdXJyZW50Q2xpZW50ID09IG51bGwpIHsKKworCQkJCS8vIEluIGNhc2UgdGhlIGNsaWVudCBoYXMgYWxyZWFkeSBsZWZ0KGtpY2tlZCkgdGhpcyBtZXNzYWdlCisJCQkJLy8gbWlnaHQgYmUgdGhyb3duIGxhdGVyIHRoZW4gdGhlIFJvb21MZWF2ZQorCQkJCS8vIGV2ZW50IGFuZCB0aGUgY3VycmVudENsaWVudCBpcyBhbHJlYWR5IGdvbmUKKwkJCQkvLyBUaGUgc2Vjb25kIFVzZS1DYXNlIHdoZXJlIHRoZSBjdXJyZW50Q2xpZW50IGlzIG1heWJlIG51bGwgaXMKKwkJCQkvLyBpZiB3ZSByZW1vdmUgdGhlIGNsaWVudCBiZWNhdXNlIGl0cyBhIFpvbWJpZS9HaG9zdAorCisJCQkJcmV0dXJuOworCisJCQl9CisJCQkvLyBOb3RpZnkgYWxsIHRoZSBjbGllbnRzIHRoYXQgdGhlIHN0cmVhbSBoYWQgYmVlbiBzdGFydGVkCisJCQlsb2cuZGVidWcoInNlbmRDbGllbnRCcm9hZGNhc3ROb3RpZmljYXRpb25zOiAiCisJCQkJCSsgc3RyZWFtLmdldFB1Ymxpc2hlZE5hbWUoKSk7CisJCQlsb2cuZGVidWcoInNlbmRDbGllbnRCcm9hZGNhc3ROb3RpZmljYXRpb25zIDogIiArIGN1cnJlbnRDbGllbnQKKwkJCQkJKyAiICIgKyBjdXJyZW50Q2xpZW50LmdldFN0cmVhbWlkKCkpOworCisJCQkvLyBOb3RpZnkgYWxsIGNsaWVudHMgb2YgdGhlIHNhbWUgc2NvcGUgKHJvb20pCisJCQlDb2xsZWN0aW9uPFNldDxJQ29ubmVjdGlvbj4+IGNvbkNvbGxlY3Rpb24gPSBjdXJyZW50LmdldFNjb3BlKCkKKwkJCQkJLmdldENvbm5lY3Rpb25zKCk7CisJCQlmb3IgKFNldDxJQ29ubmVjdGlvbj4gY29uc2V0IDogY29uQ29sbGVjdGlvbikgeworCQkJCWZvciAoSUNvbm5lY3Rpb24gY29ubiA6IGNvbnNldCkgeworCQkJCQlpZiAoY29ubiAhPSBudWxsKSB7CisJCQkJCQlpZiAoY29ubiBpbnN0YW5jZW9mIElTZXJ2aWNlQ2FwYWJsZUNvbm5lY3Rpb24pIHsKKwkJCQkJCQlpZiAoY29ubi5lcXVhbHMoY3VycmVudCkpIHsKKwkJCQkJCQkJLy8gdGhlcmUgaXMgYSBCdWcgaW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24KKwkJCQkJCQkJLy8gb2YgdGhlIGFwcERpc2Nvbm5lY3QKKwkJCQkJCQkJaWYgKGNsaWVudEZ1bmN0aW9uLmVxdWFscygiY2xvc2VTdHJlYW0iKSkgeworCQkJCQkJCQkJQ2xpZW50IHJjbCA9IHRoaXMuc2Vzc2lvbk1hbmFnZXIKKwkJCQkJCQkJCQkJLmdldENsaWVudEJ5U3RyZWFtSWQoY29ubgorCQkJCQkJCQkJCQkJCS5nZXRDbGllbnQoKS5nZXRJZCgpLCBudWxsKTsKKwkJCQkJCQkJCWlmIChjbGllbnRGdW5jdGlvbi5lcXVhbHMoImNsb3NlU3RyZWFtIikKKwkJCQkJCQkJCQkJJiYgcmNsLmdldElzUmVjb3JkaW5nKCkpIHsKKwkJCQkJCQkJCQlsb2cuZGVidWcoIioqKiBzdG9wUmVjb3JkaW5nU2hvd0ZvckNsaWVudCBBbnkgQ2xpZW50IGlzIFJlY29yZGluZyAtIHN0b3AgdGhhdCIpOworCQkJCQkJCQkJCS8vIFN0cmVhbVNlcnZpY2Uuc3RvcFJlY29yZGluZ1Nob3dGb3JDbGllbnQoY29ubiwKKwkJCQkJCQkJCQkvLyBjdXJyZW50Q2xpZW50LAorCQkJCQkJCQkJCS8vIHJjbC5nZXRSb29tUmVjb3JkaW5nTmFtZSgpLCBmYWxzZSk7CisJCQkJCQkJCQkJdGhpcy5mbHZSZWNvcmRlclNlcnZpY2UKKwkJCQkJCQkJCQkJCS5zdG9wUmVjb3JkaW5nU2hvd0ZvckNsaWVudCgKKwkJCQkJCQkJCQkJCQkJY29ubiwgY3VycmVudENsaWVudCk7CisJCQkJCQkJCQl9CisJCQkJCQkJCQkvLyBEb24ndCBub3RpZnkgY3VycmVudCBjbGllbnQKKwkJCQkJCQkJCWN1cnJlbnQucGluZygpOworCQkJCQkJCQl9CisJCQkJCQkJCWNvbnRpbnVlOworCQkJCQkJCX0gZWxzZSB7CisJCQkJCQkJCUNsaWVudCByY2wgPSB0aGlzLnNlc3Npb25NYW5hZ2VyCisJCQkJCQkJCQkJLmdldENsaWVudEJ5U3RyZWFtSWQoY29ubi5nZXRDbGllbnQoKQorCQkJCQkJCQkJCQkJLmdldElkKCksIG51bGwpOworCQkJCQkJCQlpZiAocmNsICE9IG51bGwpIHsKKwkJCQkJCQkJCWlmIChyY2wuZ2V0SXNTY3JlZW5DbGllbnQoKSAhPSBudWxsCisJCQkJCQkJCQkJCSYmIHJjbC5nZXRJc1NjcmVlbkNsaWVudCgpKSB7CisJCQkJCQkJCQkJLy8gY29udGludWU7CisJCQkJCQkJCQl9IGVsc2UgeworCQkJCQkJCQkJCWxvZy5kZWJ1ZygiaXMgdGhpcyB1c2VycyBzdGlsbCBhbGl2ZT8gOiIKKwkJCQkJCQkJCQkJCSsgcmNsKTsKKwkJCQkJCQkJCQlJU2VydmljZUNhcGFibGVDb25uZWN0aW9uIGlTdHJlYW0gPSAoSVNlcnZpY2VDYXBhYmxlQ29ubmVjdGlvbikgY29ubjsKKwkJCQkJCQkJCQlpU3RyZWFtLmludm9rZShjbGllbnRGdW5jdGlvbiwKKwkJCQkJCQkJCQkJCW5ldyBPYmplY3RbXSB7IHJjIH0sIHRoaXMpOworCQkJCQkJCQkJfQorCisJCQkJCQkJCQlsb2cuZGVidWcoInNlbmRpbmcgbm90aWZpY2F0aW9uIHRvICIgKyBjb25uCisJCQkJCQkJCQkJCSsgIiBJRDogIik7CisKKwkJCQkJCQkJCS8vIGlmIHRoaXMgY2xvc2Ugc3RyZWFtIGV2ZW50IHRoZW4gc3RvcCB0aGUKKwkJCQkJCQkJCS8vIHJlY29yZGluZyBvZiB0aGlzIHN0cmVhbQorCQkJCQkJCQkJaWYgKGNsaWVudEZ1bmN0aW9uLmVxdWFscygiY2xvc2VTdHJlYW0iKQorCQkJCQkJCQkJCQkmJiByY2wuZ2V0SXNSZWNvcmRpbmcoKSkgeworCQkJCQkJCQkJCWxvZy5kZWJ1ZygiKioqICArKysrKysrICMjIyMjIyMjIHNlbmRDbGllbnRCcm9hZGNhc3ROb3RpZmljYXRpb25zIEFueSBDbGllbnQgaXMgUmVjb3JkaW5nIC0gc3RvcCB0aGF0Iik7CisJCQkJCQkJCQkJdGhpcy5mbHZSZWNvcmRlclNlcnZpY2UKKwkJCQkJCQkJCQkJCS5zdG9wUmVjb3JkaW5nU2hvd0ZvckNsaWVudCgKKwkJCQkJCQkJCQkJCQkJY29ubiwgY3VycmVudENsaWVudCk7CisJCQkJCQkJCQl9CisJCQkJCQkJCX0KKworCQkJCQkJCX0KKwkJCQkJCX0KKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbc2VuZENsaWVudEJyb2FkY2FzdE5vdGlmaWNhdGlvbnNdIiwgZXJyKTsKKwkJfQorCX0KKworCisJLyoqCisJICogQWRkcyBhIE1vZGVyYXRvciBieSBpdHMgcHVibGljU0lECisJICogCisJICogQHBhcmFtIHB1YmxpY1NJRAorCSAqIEByZXR1cm4gLTEKKwkgKi8KKwlwdWJsaWMgc3luY2hyb25pemVkIExvbmcgYWRkTW9kZXJhdG9yKFN0cmluZyBwdWJsaWNTSUQpIHsKKwkJdHJ5IHsKKwkJCWxvZy5kZWJ1ZygiLS0tLS0tLS0tLS0gIGFkZE1vZGVyYXRvcjogIiArIHB1YmxpY1NJRCk7CisKKwkJCUNsaWVudCBjdXJyZW50Q2xpZW50ID0gdGhpcy5zZXNzaW9uTWFuYWdlcgorCQkJCQkuZ2V0Q2xpZW50QnlQdWJsaWNTSUQocHVibGljU0lELCBmYWxzZSwgbnVsbCk7CisKKwkJCWlmIChjdXJyZW50Q2xpZW50ID09IG51bGwpIHsKKwkJCQlyZXR1cm4gLTFMOworCQkJfQorCQkJTG9uZyByb29tX2lkID0gY3VycmVudENsaWVudC5nZXRSb29tX2lkKCk7CisKKwkJCWN1cnJlbnRDbGllbnQuc2V0SXNNb2QodHJ1ZSk7CisJCQkvLyBQdXQgdGhlIG1vZC1mbGFnIHRvIHRydWUgZm9yIHRoaXMgY2xpZW50CisJCQl0aGlzLnNlc3Npb25NYW5hZ2VyLnVwZGF0ZUNsaWVudEJ5U3RyZWFtSWQoCisJCQkJCWN1cnJlbnRDbGllbnQuZ2V0U3RyZWFtaWQoKSwgY3VycmVudENsaWVudCwgZmFsc2UsIG51bGwpOworCisJCQlMaXN0PENsaWVudD4gY3VycmVudE1vZHMgPSB0aGlzLnNlc3Npb25NYW5hZ2VyCisJCQkJCS5nZXRDdXJyZW50TW9kZXJhdG9yQnlSb29tKHJvb21faWQpOworCQkJCisJCQkvL1NlbmQgbWVzc2FnZSB0byBhbGwgdXNlcnMKKwkJCXN5bmNNZXNzYWdlVG9DdXJyZW50U2NvcGUoInNldE5ld01vZGVyYXRvckJ5TGlzdCIsIGN1cnJlbnRNb2RzLCB0cnVlKTsKKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIlthZGRNb2RlcmF0b3JdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gLTFMOworCX0KKworCUBTdXBwcmVzc1dhcm5pbmdzKCJ1bmNoZWNrZWQiKQorCXB1YmxpYyB2b2lkIHNldE5ld0N1cnNvclBvc2l0aW9uKE9iamVjdCBpdGVtKSB7CisJCXRyeSB7CisKKwkJCUlDb25uZWN0aW9uIGN1cnJlbnQgPSBSZWQ1LmdldENvbm5lY3Rpb25Mb2NhbCgpOworCQkJU3RyaW5nIHN0cmVhbWlkID0gY3VycmVudC5nZXRDbGllbnQoKS5nZXRJZCgpOworCQkJQ2xpZW50IGN1cnJlbnRDbGllbnQgPSB0aGlzLnNlc3Npb25NYW5hZ2VyCisJCQkJCS5nZXRDbGllbnRCeVN0cmVhbUlkKHN0cmVhbWlkLCBudWxsKTsKKworCQkJQFN1cHByZXNzV2FybmluZ3MoInJhd3R5cGVzIikKKwkJCU1hcCBjdXJzb3IgPSAoTWFwKSBpdGVtOworCQkJY3Vyc29yLnB1dCgic3RyZWFtUHVibGlzaE5hbWUiLAorCQkJCQljdXJyZW50Q2xpZW50LmdldFN0cmVhbVB1Ymxpc2hOYW1lKCkpOworCisJCQkvLyBOb3RpZnkgYWxsIHVzZXJzIG9mIHRoZSBzYW1lIFNjb3BlCisJCQlDb2xsZWN0aW9uPFNldDxJQ29ubmVjdGlvbj4+IGNvbkNvbGxlY3Rpb24gPSBjdXJyZW50LmdldFNjb3BlKCkKKwkJCQkJLmdldENvbm5lY3Rpb25zKCk7CisJCQlmb3IgKFNldDxJQ29ubmVjdGlvbj4gY29uc2V0IDogY29uQ29sbGVjdGlvbikgeworCQkJCWZvciAoSUNvbm5lY3Rpb24gY29ubiA6IGNvbnNldCkgeworCQkJCQlpZiAoY29ubiAhPSBudWxsKSB7CisJCQkJCQlpZiAoY29ubiBpbnN0YW5jZW9mIElTZXJ2aWNlQ2FwYWJsZUNvbm5lY3Rpb24pIHsKKwkJCQkJCQlJQ2xpZW50IGNsaWVudCA9IGNvbm4uZ2V0Q2xpZW50KCk7CisJCQkJCQkJaWYgKFNlc3Npb25WYXJpYWJsZXNVdGlsLmlzU2NyZWVuQ2xpZW50KGNsaWVudCkpIHsKKwkJCQkJCQkJLy8gc2NyZWVuIHNoYXJpbmcgY2xpZW50cyBkbyBub3QgcmVjZWl2ZSBldmVudHMKKwkJCQkJCQkJY29udGludWU7CisJCQkJCQkJfSBlbHNlIGlmIChTZXNzaW9uVmFyaWFibGVzVXRpbC5pc0FWQ2xpZW50KGNsaWVudCkpIHsKKwkJCQkJCQkJLy8gQVZDbGllbnRzIG9yIHBvdGVudGlhbCBBVkNsaWVudHMgZG8gbm90IHJlY2VpdmUgZXZlbnRzCisJCQkJCQkJCWNvbnRpbnVlOworCQkJCQkJCX0gaWYgKGNsaWVudC5nZXRJZCgpLmVxdWFscygKKwkJCQkJCQkJCQljdXJyZW50LmdldENsaWVudCgpLmdldElkKCkpKSB7CisJCQkJCQkJCS8vIGRvbid0IHNlbmQgYmFjayB0byBzYW1lIHVzZXIKKwkJCQkJCQkJY29udGludWU7CisJCQkJCQkJfQorCQkJCQkJCUlTZXJ2aWNlQ2FwYWJsZUNvbm5lY3Rpb24gaVN0cmVhbSA9IChJU2VydmljZUNhcGFibGVDb25uZWN0aW9uKSBjb25uOworCQkJCQkJCWlTdHJlYW0uaW52b2tlKCJuZXdSZWQ1U2NyZWVuQ3Vyc29yIiwKKwkJCQkJCQkJCW5ldyBPYmplY3RbXSB7IGN1cnNvciB9LCB0aGlzKTsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCX0KKwkJCX0KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltzZXROZXdDdXJzb3JQb3NpdGlvbl0iLCBlcnIpOworCQl9CisJfQorCisJcHVibGljIHN5bmNocm9uaXplZCBMb25nIHJlbW92ZU1vZGVyYXRvcihTdHJpbmcgcHVibGljU0lEKSB7CisJCXRyeSB7CisJCQlsb2cuZGVidWcoIi0tLS0tLS0tLS0tICByZW1vdmVNb2RlcmF0b3I6ICIgKyBwdWJsaWNTSUQpOworCisJCQlJQ29ubmVjdGlvbiBjdXJyZW50ID0gUmVkNS5nZXRDb25uZWN0aW9uTG9jYWwoKTsKKwkJCS8vIFN0cmluZyBzdHJlYW1pZCA9IGN1cnJlbnQuZ2V0Q2xpZW50KCkuZ2V0SWQoKTsKKworCQkJQ2xpZW50IGN1cnJlbnRDbGllbnQgPSB0aGlzLnNlc3Npb25NYW5hZ2VyCisJCQkJCS5nZXRDbGllbnRCeVB1YmxpY1NJRChwdWJsaWNTSUQsIGZhbHNlLCBudWxsKTsKKworCQkJaWYgKGN1cnJlbnRDbGllbnQgPT0gbnVsbCkgeworCQkJCXJldHVybiAtMUw7CisJCQl9CisJCQlMb25nIHJvb21faWQgPSBjdXJyZW50Q2xpZW50LmdldFJvb21faWQoKTsKKworCQkJY3VycmVudENsaWVudC5zZXRJc01vZChmYWxzZSk7CisJCQkvLyBQdXQgdGhlIG1vZC1mbGFnIHRvIHRydWUgZm9yIHRoaXMgY2xpZW50CisJCQl0aGlzLnNlc3Npb25NYW5hZ2VyLnVwZGF0ZUNsaWVudEJ5U3RyZWFtSWQoCisJCQkJCWN1cnJlbnRDbGllbnQuZ2V0U3RyZWFtaWQoKSwgY3VycmVudENsaWVudCwgZmFsc2UsIG51bGwpOworCisJCQlMaXN0PENsaWVudD4gY3VycmVudE1vZHMgPSB0aGlzLnNlc3Npb25NYW5hZ2VyCisJCQkJCS5nZXRDdXJyZW50TW9kZXJhdG9yQnlSb29tKHJvb21faWQpOworCisJCQkvLyBOb3RpZnkgYWxsIGNsaWVudHMgb2YgdGhlIHNhbWUgc2NvcGUgKHJvb20pCisJCQlDb2xsZWN0aW9uPFNldDxJQ29ubmVjdGlvbj4+IGNvbkNvbGxlY3Rpb24gPSBjdXJyZW50LmdldFNjb3BlKCkKKwkJCQkJLmdldENvbm5lY3Rpb25zKCk7CisJCQlmb3IgKFNldDxJQ29ubmVjdGlvbj4gY29uc2V0IDogY29uQ29sbGVjdGlvbikgeworCQkJCWZvciAoSUNvbm5lY3Rpb24gY29ubiA6IGNvbnNldCkgeworCQkJCQlpZiAoY29ubiAhPSBudWxsKSB7CisJCQkJCQlpZiAoY29ubiBpbnN0YW5jZW9mIElTZXJ2aWNlQ2FwYWJsZUNvbm5lY3Rpb24pIHsKKwkJCQkJCQlJQ2xpZW50IGNsaWVudCA9IGNvbm4uZ2V0Q2xpZW50KCk7CisJCQkJCQkJaWYgKFNlc3Npb25WYXJpYWJsZXNVdGlsLmlzU2NyZWVuQ2xpZW50KGNsaWVudCkpIHsKKwkJCQkJCQkJLy8gc2NyZWVuIHNoYXJpbmcgY2xpZW50cyBkbyBub3QgcmVjZWl2ZSBldmVudHMKKwkJCQkJCQkJY29udGludWU7CisJCQkJCQkJfSBlbHNlIGlmIChTZXNzaW9uVmFyaWFibGVzVXRpbC5pc0FWQ2xpZW50KGNsaWVudCkpIHsKKwkJCQkJCQkJLy8gQVZDbGllbnRzIG9yIHBvdGVudGlhbCBBVkNsaWVudHMgZG8gbm90IHJlY2VpdmUgZXZlbnRzCisJCQkJCQkJCWNvbnRpbnVlOworCQkJCQkJCX0KKwkJCQkJCQkoKElTZXJ2aWNlQ2FwYWJsZUNvbm5lY3Rpb24pIGNvbm4pLmludm9rZSgKKwkJCQkJCQkJInNldE5ld01vZGVyYXRvckJ5TGlzdCIsCisJCQkJCQkJCQluZXcgT2JqZWN0W10geyBjdXJyZW50TW9kcyB9LCB0aGlzKTsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCX0KKwkJCX0KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIlthZGRNb2RlcmF0b3JdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gLTFMOworCX0KKworCXB1YmxpYyBzeW5jaHJvbml6ZWQgTG9uZyBzZXRCcm9hZENhc3RpbmdGbGFnKFN0cmluZyBwdWJsaWNTSUQsCisJCQlib29sZWFuIHZhbHVlLCBJbnRlZ2VyIGludGVydmlld1BvZElkKSB7CisJCXRyeSB7CisJCQlsb2cuZGVidWcoIi0tLS0tLS0tLS0tICBzZXRCcm9hZENhc3RpbmdGbGFnOiAiICsgcHVibGljU0lEKTsKKworCQkJSUNvbm5lY3Rpb24gY3VycmVudCA9IFJlZDUuZ2V0Q29ubmVjdGlvbkxvY2FsKCk7CisJCQkvLyBTdHJpbmcgc3RyZWFtaWQgPSBjdXJyZW50LmdldENsaWVudCgpLmdldElkKCk7CisKKyAgICAgICAgICAgIENsaWVudCBjdXJyZW50Q2xpZW50ID0gdGhpcy5zZXNzaW9uTWFuYWdlcgorCQkJCQkuZ2V0Q2xpZW50QnlQdWJsaWNTSUQocHVibGljU0lELCBmYWxzZSwgbnVsbCk7CisKKwkJCWlmIChjdXJyZW50Q2xpZW50ID09IG51bGwpIHsKKwkJCQlyZXR1cm4gLTFMOworCQkJfQorCisJCQljdXJyZW50Q2xpZW50LnNldElzQnJvYWRjYXN0aW5nKHZhbHVlKTsKKwkJCWN1cnJlbnRDbGllbnQuc2V0SW50ZXJ2aWV3UG9kSWQoaW50ZXJ2aWV3UG9kSWQpOworCisgICAgICAgICAgICAvLyBQdXQgdGhlIG1vZC1mbGFnIHRvIHRydWUgZm9yIHRoaXMgY2xpZW50CisJCSAgICB0aGlzLnNlc3Npb25NYW5hZ2VyLnVwZGF0ZUNsaWVudEJ5U3RyZWFtSWQoCisJCSAgICAJCWN1cnJlbnRDbGllbnQuZ2V0U3RyZWFtaWQoKSwgY3VycmVudENsaWVudCwgZmFsc2UsIG51bGwpOworCQkgICAgCisJCQkvLyBOb3RpZnkgYWxsIGNsaWVudHMgb2YgdGhlIHNhbWUgc2NvcGUgKHJvb20pCisJCQlDb2xsZWN0aW9uPFNldDxJQ29ubmVjdGlvbj4+IGNvbkNvbGxlY3Rpb24gPSBjdXJyZW50LmdldFNjb3BlKCkKKwkJCQkJLmdldENvbm5lY3Rpb25zKCk7CisJCQlmb3IgKFNldDxJQ29ubmVjdGlvbj4gY29uc2V0IDogY29uQ29sbGVjdGlvbikgeworCQkJCWZvciAoSUNvbm5lY3Rpb24gY29ubiA6IGNvbnNldCkgeworCQkJCQlpZiAoY29ubiAhPSBudWxsKSB7CisJCQkJCQlpZiAoY29ubiBpbnN0YW5jZW9mIElTZXJ2aWNlQ2FwYWJsZUNvbm5lY3Rpb24pIHsKKwkJCQkJCQlJQ2xpZW50IGNsaWVudCA9IGNvbm4uZ2V0Q2xpZW50KCk7CisJCQkJCQkJaWYgKFNlc3Npb25WYXJpYWJsZXNVdGlsLmlzU2NyZWVuQ2xpZW50KGNsaWVudCkpIHsKKwkJCQkJCQkJLy8gc2NyZWVuIHNoYXJpbmcgY2xpZW50cyBkbyBub3QgcmVjZWl2ZSBldmVudHMKKwkJCQkJCQkJY29udGludWU7CisJCQkJCQkJfSBlbHNlIGlmIChTZXNzaW9uVmFyaWFibGVzVXRpbC5pc0FWQ2xpZW50KGNsaWVudCkpIHsKKwkJCQkJCQkJLy8gQVZDbGllbnRzIG9yIHBvdGVudGlhbCBBVkNsaWVudHMgZG8gbm90IHJlY2VpdmUgZXZlbnRzCisJCQkJCQkJCWNvbnRpbnVlOworCQkJCQkJCX0KKwkJCQkJCQorCQkJCQkJCSgoSVNlcnZpY2VDYXBhYmxlQ29ubmVjdGlvbikgY29ubikuaW52b2tlKAorCQkJCQkJCQkic2V0TmV3QnJvYWRDYXN0aW5nRmxhZyIsCisJCQkJCQkJCQluZXcgT2JqZWN0W10geyBjdXJyZW50Q2xpZW50IH0sIHRoaXMpOworCQkJCQkJfQorCQkJCQl9CisJCQkJfQorCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW3NldEJyb2FkQ2FzdGluZ0ZsYWddIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gLTFMOworCX0KKworCXB1YmxpYyBzeW5jaHJvbml6ZWQgTG9uZyBnaXZlRXhjbHVzaXZlQXVkaW8oU3RyaW5nIHB1YmxpY1NJRCkgeworCQl0cnkgeworCQkJbG9nLmRlYnVnKCItLS0tLS0tLS0tLSAgZ2l2ZUV4Y2x1c2l2ZUF1ZGlvOiAiICsgcHVibGljU0lEKTsKKworCQkJSUNvbm5lY3Rpb24gY3VycmVudCA9IFJlZDUuZ2V0Q29ubmVjdGlvbkxvY2FsKCk7CisJCQkvLyBTdHJpbmcgc3RyZWFtaWQgPSBjdXJyZW50LmdldENsaWVudCgpLmdldElkKCk7CisKKwkJCUNsaWVudCBjdXJyZW50Q2xpZW50ID0gdGhpcy5zZXNzaW9uTWFuYWdlcgorCQkJCQkuZ2V0Q2xpZW50QnlQdWJsaWNTSUQocHVibGljU0lELCBmYWxzZSwgbnVsbCk7CisKKwkJCWlmIChjdXJyZW50Q2xpZW50ID09IG51bGwpIHsKKwkJCQlyZXR1cm4gLTFMOworCQkJfQorCisJCQkvLyBQdXQgdGhlIG1vZC1mbGFnIHRvIHRydWUgZm9yIHRoaXMgY2xpZW50CisJCQljdXJyZW50Q2xpZW50LnNldE1pY011dGVkKGZhbHNlKTsKKwkJCXRoaXMuc2Vzc2lvbk1hbmFnZXIudXBkYXRlQ2xpZW50QnlTdHJlYW1JZCgKKwkJCQkJY3VycmVudENsaWVudC5nZXRTdHJlYW1pZCgpLCBjdXJyZW50Q2xpZW50LCBmYWxzZSwgbnVsbCk7CisKKwkJCS8vIE5vdGlmeSBhbGwgY2xpZW50cyBvZiB0aGUgc2FtZSBzY29wZSAocm9vbSkKKwkJCUNvbGxlY3Rpb248U2V0PElDb25uZWN0aW9uPj4gY29uQ29sbGVjdGlvbiA9IGN1cnJlbnQuZ2V0U2NvcGUoKQorCQkJCQkuZ2V0Q29ubmVjdGlvbnMoKTsKKwkJCWZvciAoU2V0PElDb25uZWN0aW9uPiBjb25zZXQgOiBjb25Db2xsZWN0aW9uKSB7CisJCQkJZm9yIChJQ29ubmVjdGlvbiBjb25uIDogY29uc2V0KSB7CisJCQkJCWlmIChjb25uICE9IG51bGwpIHsKKwkJCQkJCUNsaWVudCByY2wgPSB0aGlzLnNlc3Npb25NYW5hZ2VyCisJCQkJCQkJCS5nZXRDbGllbnRCeVN0cmVhbUlkKGNvbm4uZ2V0Q2xpZW50KCkuZ2V0SWQoKSwgbnVsbCk7CisJCQkJCQlpZiAocmNsID09IG51bGwpIHsKKwkJCQkJCQkvLyBjb250aW51ZTsKKwkJCQkJCX0gZWxzZSBpZiAocmNsLmdldElzU2NyZWVuQ2xpZW50KCkgIT0gbnVsbAorCQkJCQkJCQkmJiByY2wuZ2V0SXNTY3JlZW5DbGllbnQoKSkgeworCQkJCQkJCS8vIGNvbnRpbnVlOworCQkJCQkJfSBlbHNlIHsKKwkJCQkJCQlpZiAocmNsICE9IGN1cnJlbnRDbGllbnQpIHsKKwkJCQkJCQkJcmNsLnNldE1pY011dGVkKHRydWUpOworCQkJCQkJCQl0aGlzLnNlc3Npb25NYW5hZ2VyLnVwZGF0ZUNsaWVudEJ5U3RyZWFtSWQoCisJCQkJCQkJCQkJcmNsLmdldFN0cmVhbWlkKCksIHJjbCwgZmFsc2UsIG51bGwpOworCQkJCQkJCX0KKwkJCQkJCQlsb2cuZGVidWcoIlNlbmQgRmxhZyB0byBDbGllbnQ6ICIKKwkJCQkJCQkJCSsgcmNsLmdldFVzZXJuYW1lKCkpOworCQkJCQkJCWlmIChjb25uIGluc3RhbmNlb2YgSVNlcnZpY2VDYXBhYmxlQ29ubmVjdGlvbikgeworCQkJCQkJCQkoKElTZXJ2aWNlQ2FwYWJsZUNvbm5lY3Rpb24pIGNvbm4pLmludm9rZSgKKwkJCQkJCQkJCQkicmVjZWl2ZUV4Y2x1c2l2ZUF1ZGlvRmxhZyIsCisJCQkJCQkJCQkJbmV3IE9iamVjdFtdIHsgY3VycmVudENsaWVudCB9LCB0aGlzKTsKKwkJCQkJCQkJbG9nLmRlYnVnKCJzZW5kaW5nIHJlY2VpdmVFeGNsdXNpdmVBdWRpb0ZsYWcgdG8gIgorCQkJCQkJCQkJCSsgY29ubik7CisJCQkJCQkJfQorCQkJCQkJfQorCQkJCQl9CisJCQkJfQorCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2dpdmVFeGNsdXNpdmVBdWRpb10iLCBlcnIpOworCQl9CisJCXJldHVybiAtMUw7CisJfQorCisJcHVibGljIHN5bmNocm9uaXplZCBMb25nIHN3aXRjaE1pY011dGVkKFN0cmluZyBwdWJsaWNTSUQsIGJvb2xlYW4gbXV0ZSkgeworCQl0cnkgeworCQkJbG9nLmRlYnVnKCItLS0tLS0tLS0tLSAgc3dpdGNoTWljTXV0ZWQ6ICIgKyBwdWJsaWNTSUQpOworCisJCQlDbGllbnQgY3VycmVudENsaWVudCA9IHNlc3Npb25NYW5hZ2VyLmdldENsaWVudEJ5UHVibGljU0lEKHB1YmxpY1NJRCwgZmFsc2UsIG51bGwpOworCQkJaWYgKGN1cnJlbnRDbGllbnQgPT0gbnVsbCkgeworCQkJCXJldHVybiAtMUw7CisJCQl9CisKKwkJCWN1cnJlbnRDbGllbnQuc2V0TWljTXV0ZWQobXV0ZSk7CisJCQlzZXNzaW9uTWFuYWdlci51cGRhdGVDbGllbnRCeVN0cmVhbUlkKGN1cnJlbnRDbGllbnQuZ2V0U3RyZWFtaWQoKSwgY3VycmVudENsaWVudCwgZmFsc2UsIG51bGwpOworCisJCQlIYXNoTWFwPEludGVnZXIsIE9iamVjdD4gbmV3TWVzc2FnZSA9IG5ldyBIYXNoTWFwPEludGVnZXIsIE9iamVjdD4oKTsKKwkJCW5ld01lc3NhZ2UucHV0KDAsICJ1cGRhdGVNdXRlU3RhdHVzIik7CisJCQluZXdNZXNzYWdlLnB1dCgxLCBjdXJyZW50Q2xpZW50KTsKKwkJCXNlbmRNZXNzYWdlV2l0aENsaWVudChuZXdNZXNzYWdlKTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbc3dpdGNoTWljTXV0ZWRdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gMEw7CisJfQorCisgICAgcHVibGljIHN5bmNocm9uaXplZCBCb29sZWFuIGdldE1pY011dGVkQnlQdWJsaWNTSUQoU3RyaW5nIHB1YmxpY1NJRCkgeworICAgICAgICB0cnkgeworCQkJQ2xpZW50IGN1cnJlbnRDbGllbnQgPSB0aGlzLnNlc3Npb25NYW5hZ2VyLmdldENsaWVudEJ5UHVibGljU0lEKHB1YmxpY1NJRCwgZmFsc2UsIG51bGwpOworCQkJaWYgKGN1cnJlbnRDbGllbnQgPT0gbnVsbCkgeworCQkJCXJldHVybiB0cnVlOworCQkJfQorCisJCQkvL1B1dCB0aGUgbW9kLWZsYWcgdG8gdHJ1ZSBmb3IgdGhpcyBjbGllbnQKKyAgICAgICAgICAgIEJvb2xlYW4gbXV0ZWQgPSBjdXJyZW50Q2xpZW50LmdldE1pY011dGVkKCk7CisgICAgICAgICAgICBpZiAobnVsbCA9PSBtdXRlZCkgeworICAgICAgICAgICAgICAgIG11dGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgcmV0dXJuIG11dGVkOworICAgICAgICB9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRNaWNNdXRlZEJ5UHVibGljU0lEXSIsZXJyKTsKKwkJfQorCQlyZXR1cm4gdHJ1ZTsKKyAgICB9CisKKwkvKioKKwkgKiBJbnZva2VkIGJ5IGEgVXNlciB3aGVuZXZlciBoZSB3YW50IHRvIGJlY29tZSBtb2RlcmF0b3IgdGhpcyBpcyBuZWVkZWQsCisJICogY2F1c2UgaWYgdGhlIHJvb20gaGFzIG5vIG1vZGVyYXRvciB5ZXQgdGhlcmUgaXMgbm8tb25lIGhlIGNhbiBhc2sgdG8gZ2V0CisJICogdGhlIG1vZGVyYXRpb24sIGluIGNhc2UgaXRzIGEgTm9uLU1vZGVyYXRlZCBSb29tIGhlIHNob3VsZCB0aGVuIGdldCB0aGUKKwkgKiBNb2RlcmF0aW9uIHdpdGhvdXQgYW55IGNvbmZpcm1hdGlvbiBuZWVkZWQKKwkgKiAKKwkgKiBAcmV0dXJuIExvbmcgMSA9PiBtZWFucyBnZXQgTW9kZXJhdGlvbiwgMiA9PiBhc2sgTW9kZXJhdG9yIGZvcgorCSAqICAgICAgICAgTW9kZXJhdGlvbiwgMyA9PiB3YWl0IGZvciBNb2RlcmF0b3IKKwkgKi8KKwlwdWJsaWMgc3luY2hyb25pemVkIExvbmcgYXBwbHlGb3JNb2RlcmF0aW9uKFN0cmluZyBwdWJsaWNTSUQpIHsKKwkJdHJ5IHsKKworCQkJQ2xpZW50IGN1cnJlbnRDbGllbnQgPSB0aGlzLnNlc3Npb25NYW5hZ2VyCisJCQkJCS5nZXRDbGllbnRCeVB1YmxpY1NJRChwdWJsaWNTSUQsIGZhbHNlLCBudWxsKTsKKworCQkJTGlzdDxDbGllbnQ+IGN1cnJlbnRNb2RMaXN0ID0gdGhpcy5zZXNzaW9uTWFuYWdlcgorCQkJCQkuZ2V0Q3VycmVudE1vZGVyYXRvckJ5Um9vbShjdXJyZW50Q2xpZW50LmdldFJvb21faWQoKSk7CisKKwkJCWlmIChjdXJyZW50TW9kTGlzdC5zaXplKCkgPiAwKSB7CisJCQkJcmV0dXJuIDJMOworCQkJfSBlbHNlIHsKKwkJCQkvLyBObyBtb2RlcmF0b3IgaW4gdGhpcyByb29tIGF0IHRoZSBtb21lbnQKKwkJCQlSb29tIHJvb20gPSByb29tRGFvLmdldChjdXJyZW50Q2xpZW50LmdldFJvb21faWQoKSk7CisKKwkJCQlpZiAocm9vbS5nZXRJc01vZGVyYXRlZFJvb20oKSkgeworCQkJCQlyZXR1cm4gM0w7CisJCQkJfSBlbHNlIHsKKwkJCQkJcmV0dXJuIDFMOworCQkJCX0KKwkJCX0KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIlthcHBseUZvck1vZGVyYXRpb25dIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gLTFMOworCX0KKworCS8qKgorCSAqIHRoZXJlIHdpbGwgYmUgc2V0IGFuIGF0dHJpYnV0ZSBjYWxsZWQgImJyb2FkQ2FzdENvdW50ZXIiIHRoaXMgaXMgdGhlIG5hbWUKKwkgKiB0aGlzIHVzZXIgd2lsbCBwdWJsaXNoIGhpcyBzdHJlYW0KKwkgKiAKKwkgKiBAcmV0dXJuIGxvbmcgYnJvYWRDYXN0SWQKKwkgKi8KKwlwdWJsaWMgc3luY2hyb25pemVkIGxvbmcgZ2V0QnJvYWRDYXN0SWQoKSB7CisJCXRyeSB7CisJCQlsb2cuZGVidWcoIi0tLS0tLS0tLS0tICBnZXRCcm9hZENhc3RJZCIpOworCQkJSUNvbm5lY3Rpb24gY3VycmVudCA9IFJlZDUuZ2V0Q29ubmVjdGlvbkxvY2FsKCk7CisJCQlTdHJpbmcgc3RyZWFtaWQgPSBjdXJyZW50LmdldENsaWVudCgpLmdldElkKCk7CisJCQlDbGllbnQgY3VycmVudENsaWVudCA9IHRoaXMuc2Vzc2lvbk1hbmFnZXIKKwkJCQkJLmdldENsaWVudEJ5U3RyZWFtSWQoc3RyZWFtaWQsIG51bGwpOworCQkJY3VycmVudENsaWVudC5zZXRCcm9hZENhc3RJRChicm9hZENhc3RDb3VudGVyKyspOworCQkJdGhpcy5zZXNzaW9uTWFuYWdlci51cGRhdGVDbGllbnRCeVN0cmVhbUlkKHN0cmVhbWlkLAorCQkJCQljdXJyZW50Q2xpZW50LCBmYWxzZSwgbnVsbCk7CisJCQlyZXR1cm4gY3VycmVudENsaWVudC5nZXRCcm9hZENhc3RJRCgpOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRCcm9hZENhc3RJZF0iLCBlcnIpOworCQl9CisJCXJldHVybiAtMTsKKwl9CisKKwkvKioKKwkgKiB0aGlzIG11c3QgYmUgc2V0IF9hZnRlcl8gdGhlIFZpZGVvL0F1ZGlvLVNldHRpbmdzIGhhdmUgYmVlbiBjaG9zZW4gKHNlZQorCSAqIGVkaXRyZWNvcmRzdHJlYW0ubHp4KSBidXQgX2JlZm9yZV8gYW55dGhpbmcgZWxzZSBoYXBwZW5zLCBpdCBjYW5ub3QgYmUKKwkgKiBhcHBsaWVkIF9hZnRlcl8gdGhlIHN0cmVhbSBoYXMgc3RhcnRlZCEgYXZzZXR0aW5ncyBjYW4gYmU6IGF2IC0gdmlkZW8gYW5kCisJICogYXVkaW8gYSAtIGF1ZGlvIG9ubHkgdiAtIHZpZGVvIG9ubHkgbiAtIG5vIGEvdiBvbmx5IHN0YXRpYyBpbWFnZQorCSAqIGZ1cnRoZXJtb3JlCisJICogCisJICogQHBhcmFtIGF2c2V0dGluZ3MKKwkgKiBAcGFyYW0gbmV3TWVzc2FnZQorCSAqIEBwYXJhbSB2V2lkdGgKKwkgKiBAcGFyYW0gdkhlaWdodAorCSAqIEBwYXJhbSByb29tX2lkCisJICogQHBhcmFtIHB1YmxpY1NJRAorCSAqIEBwYXJhbSBpbnRlcnZpZXdQb2RJZAorCSAqIEByZXR1cm4gUm9vbUNsaWVudCBiZWluZyB1cGRhdGVkIGluIGNhc2Ugb2Ygbm8gZXJyb3JzLCBudWxsIG90aGVyd2lzZQorCSAqLworCXB1YmxpYyBzeW5jaHJvbml6ZWQgQ2xpZW50IHNldFVzZXJBVlNldHRpbmdzKFN0cmluZyBhdnNldHRpbmdzLAorCQkJT2JqZWN0IG5ld01lc3NhZ2UsIEludGVnZXIgdldpZHRoLCBJbnRlZ2VyIHZIZWlnaHQsIAorCQkJbG9uZyByb29tX2lkLCBTdHJpbmcgcHVibGljU0lELCBJbnRlZ2VyIGludGVydmlld1BvZElkKSB7CisJCXRyeSB7CisJCQlJQ29ubmVjdGlvbiBjdXJyZW50ID0gUmVkNS5nZXRDb25uZWN0aW9uTG9jYWwoKTsKKwkJCUlDbGllbnQgYyA9IGN1cnJlbnQuZ2V0Q2xpZW50KCk7CisJCQlTdHJpbmcgc3RyZWFtaWQgPSBjLmdldElkKCk7CisJCQlsb2cuZGVidWcoIi0tLS0tLS0tLS0tICBzZXRVc2VyQVZTZXR0aW5ncyB7fSB7fSB7fSIsIG5ldyBPYmplY3RbXSB7c3RyZWFtaWQsIHB1YmxpY1NJRCwgYXZzZXR0aW5ncywgbmV3TWVzc2FnZX0pOworCQkJQ2xpZW50IGN1cnJlbnRDbGllbnQgPSBzZXNzaW9uTWFuYWdlci5nZXRDbGllbnRCeVN0cmVhbUlkKHN0cmVhbWlkLCBudWxsKTsKKwkJCWN1cnJlbnRDbGllbnQuc2V0QXZzZXR0aW5ncyhhdnNldHRpbmdzKTsKKwkJCWN1cnJlbnRDbGllbnQuc2V0Um9vbV9pZChyb29tX2lkKTsKKwkJCWN1cnJlbnRDbGllbnQuc2V0UHVibGljU0lEKHB1YmxpY1NJRCk7CisJCQljdXJyZW50Q2xpZW50LnNldFZXaWR0aCh2V2lkdGgpOworCQkJY3VycmVudENsaWVudC5zZXRWSGVpZ2h0KHZIZWlnaHQpOworCQkJY3VycmVudENsaWVudC5zZXRJbnRlcnZpZXdQb2RJZChpbnRlcnZpZXdQb2RJZCk7CisJCQlzZXNzaW9uTWFuYWdlci51cGRhdGVBVkNsaWVudEJ5U3RyZWFtSWQoc3RyZWFtaWQsIGN1cnJlbnRDbGllbnQsIG51bGwpOworCQkJU2Vzc2lvblZhcmlhYmxlc1V0aWwuaW5pdENsaWVudChjLCBmYWxzZSwgcHVibGljU0lEKTsKKworCQkJSGFzaE1hcDxTdHJpbmcsIE9iamVjdD4gaHNtID0gbmV3IEhhc2hNYXA8U3RyaW5nLCBPYmplY3Q+KCk7CisJCQloc20ucHV0KCJjbGllbnQiLCBjdXJyZW50Q2xpZW50KTsKKwkJCWhzbS5wdXQoIm1lc3NhZ2UiLCBuZXdNZXNzYWdlKTsKKworCQkJQ29sbGVjdGlvbjxTZXQ8SUNvbm5lY3Rpb24+PiBjb25Db2xsZWN0aW9uID0gY3VycmVudC5nZXRTY29wZSgpLmdldENvbm5lY3Rpb25zKCk7CisJCQlmb3IgKFNldDxJQ29ubmVjdGlvbj4gY29uc2V0IDogY29uQ29sbGVjdGlvbikgeworCQkJCWZvciAoSUNvbm5lY3Rpb24gY29ubiA6IGNvbnNldCkgeworCQkJCQlpZiAoY29ubiAhPSBudWxsKSB7CisJCQkJCQlpZiAoY29ubiBpbnN0YW5jZW9mIElTZXJ2aWNlQ2FwYWJsZUNvbm5lY3Rpb24pIHsKKwkJCQkJCQlJQ2xpZW50IGNsaWVudCA9IGNvbm4uZ2V0Q2xpZW50KCk7CisJCQkJCQkJaWYgKFNlc3Npb25WYXJpYWJsZXNVdGlsLmlzU2NyZWVuQ2xpZW50KGNsaWVudCkpIHsKKwkJCQkJCQkJLy8gc2NyZWVuIHNoYXJpbmcgY2xpZW50cyBkbyBub3QgcmVjZWl2ZSBldmVudHMKKwkJCQkJCQkJY29udGludWU7CisJCQkJCQkJfSBlbHNlIGlmIChTZXNzaW9uVmFyaWFibGVzVXRpbC5pc0FWQ2xpZW50KGNsaWVudCkpIHsKKwkJCQkJCQkJLy8gQVZDbGllbnRzIG9yIHBvdGVudGlhbCBBVkNsaWVudHMgZG8gbm90IHJlY2VpdmUgZXZlbnRzCisJCQkJCQkJCWNvbnRpbnVlOworCQkJCQkJCX0KKwkJCQkJCQkoKElTZXJ2aWNlQ2FwYWJsZUNvbm5lY3Rpb24pY29ubikKKwkJCQkJCQkJLmludm9rZSgic2VuZFZhcnNUb01lc3NhZ2VXaXRoQ2xpZW50IiwgbmV3IE9iamVjdFtdIHsgaHNtIH0sIHRoaXMpOworCQkJCQkJfQorCQkJCQl9CisJCQkJfQorCQkJfQorCisJCQlyZXR1cm4gY3VycmVudENsaWVudDsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbc2V0VXNlckFWU2V0dGluZ3NdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvKgorCSAqIGNoZWNrcyBpZiB0aGUgdXNlciBpcyBhbGxvd2VkIHRvIGFwcGx5IGZvciBNb2RlcmF0aW9uCisJICovCisJcHVibGljIHN5bmNocm9uaXplZCBCb29sZWFuIGNoZWNrUm9vbVZhbHVlcyhMb25nIHJvb21faWQpIHsKKwkJdHJ5IHsKKworCQkJLy8gYXBwb2ludGVkIG1lZXRpbmcgb3IgbW9kZXJhdGVkIFJvb20/CisJCQlSb29tIHJvb20gPSByb29tRGFvLmdldChyb29tX2lkKTsKKworCQkJLy8gbm90IHJlYWxseSAtIGRlZmF1bHQgbG9naWMKKwkJCWlmIChyb29tLmdldEFwcG9pbnRtZW50KCkgPT0gbnVsbCB8fCByb29tLmdldEFwcG9pbnRtZW50KCkgPT0gZmFsc2UpIHsKKworCQkJCWlmIChyb29tLmdldElzTW9kZXJhdGVkUm9vbSgpKSB7CisKKwkJCQkJLy8gaWYgdGhpcyBpcyBhIE1vZGVyYXRlZCBSb29tIHRoZW4gdGhlIFJvb20gY2FuIGJlIG9ubHkKKwkJCQkJLy8gbG9ja2VkIG9mZiBieSB0aGUgTW9kZXJhdG9yIEJpdAorCQkJCQlMaXN0PENsaWVudD4gY2xpZW50TW9kZXJhdG9yTGlzdFJvb20gPSB0aGlzLnNlc3Npb25NYW5hZ2VyCisJCQkJCQkJLmdldEN1cnJlbnRNb2RlcmF0b3JCeVJvb20ocm9vbV9pZCk7CisKKwkJCQkJLy8gSWYgdGhlcmUgaXMgbm8gTW9kZXJhdG9yIHlldCBhbmQgd2UgYXJlIGFza2luZyBmb3IgaXQKKwkJCQkJLy8gdGhlbiBkZW55IGl0CisJCQkJCS8vIGNhdXNlIGF0IHRoaXMgbW9tZW50LCB0aGUgdXNlciBzaG91bGQgd2FpdCB1bnRpbGwgYQorCQkJCQkvLyBNb2RlcmF0b3IgZW50ZXJzIHRoZSBSb29tCisJCQkJCWlmIChjbGllbnRNb2RlcmF0b3JMaXN0Um9vbS5zaXplKCkgPT0gMCkgeworCQkJCQkJcmV0dXJuIGZhbHNlOworCQkJCQl9IGVsc2UgeworCQkJCQkJcmV0dXJuIHRydWU7CisJCQkJCX0KKworCQkJCX0gZWxzZSB7CisJCQkJCXJldHVybiB0cnVlOworCQkJCX0KKworCQkJfSBlbHNlIHsKKworCQkJCS8vIEZJWE1FOiBUT0RPOiBGb3IgUm9vbXMgdGhhdCBhcmUgY3JlYXRlZCBhcyBBcHBvaW50bWVudCB3ZQorCQkJCS8vIGhhdmUgdG8gY2hlY2sgdGhhdCB0b28KKwkJCQkvLyBidXQgSSBkb24ndCBrbm93IHlldCB0aGUgTG9naWMgYmVoaW5kIGl0IC0gc3dhZ25lciAxOS4wNi4yMDA5CisJCQkJcmV0dXJuIHRydWU7CisKKwkJCX0KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltjaGVja1Jvb21WYWx1ZXNdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gZmFsc2U7CisJfQorCisJLyoqCisJICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgb25jZSBhIFVzZXIgZW50ZXJzIGEgUm9vbQorCSAqIAorCSAqIEl0IGNvbnRhaW5zIHNldmVyYWwgZGlmZmVyZW50IG1lY2hhbmlzbSBkZXBlbmRpbmcgb24gd2hhdCByb29tdHlwZSBhbmQKKwkgKiB3aGF0IG9wdGlvbnMgYXJlIGF2YWlsYWJsZSBmb3IgdGhlIHJvb20gdG8gZmluZCBvdXQgaWYgdGhlIGN1cnJlbnQgdXNlcgorCSAqIHdpbGwgYmUgYSBtb2RlcmF0b3Igb2YgdGhhdCByb29tIG9yIG5vdDxici8+CisJICogPGJyLz4KKwkgKiBTb21lIHJ1bGVzOjxici8+CisJICogPHVsPgorCSAqIDxsaT5JZiBpdCBpcyBhIHJvb20gdGhhdCB3YXMgY3JlYXRlZCB0aHJvdWdoIHRoZSBjYWxlbmRhciwgdGhlIHVzZXIgdGhhdAorCSAqIG9yZ2FuaXplZCB0aGUgcm9vbSB3aWxsIGJlIG1vZGVyYXRvciwgdGhlIHBhcmFtIEJvb2xlYW4gYmVjb21lTW9kZXJhdG9yCisJICogd2lsbCBiZSBpZ25vcmVkIHRoZW48L2xpPgorCSAqIDxsaT5JbiByZWd1bGFyIHJvb21zIHlvdSBjYW4gdXNlIHRoZSBwYXJhbSBCb29sZWFuIGJlY29tZU1vZGVyYXRvciB0byBzZXQKKwkgKiBhbnkgdXNlciB0byBiZWNvbWUgYSBtb2RlcmF0b3Igb2YgdGhlIHJvb208L2xpPgorCSAqIDwvdWw+CisJICogPGJyLz4KKwkgKiBJZiBhIG5ldyBtb2RlcmF0b3IgaXMgZGV0ZWN0ZWQgYSBQdXNoIENhbGwgdG8gYWxsIGN1cnJlbnQgdXNlcnMgb2YgdGhlCisJICogcm9vbSBpcyBpbnZva2VkICJzZXROZXdNb2RlcmF0b3JCeUxpc3QiIHRvIG5vdGlmeSB0aGVtIG9mIHRoZSBuZXcKKwkgKiBtb2RlcmF0b3I8YnIvPgorCSAqIDxici8+CisJICogQXQgdGhlIGVuZCBvZiB0aGUgbWVjaGFuaXNtIGEgcHVzaCBjYWxsIHdpdGggdGhlIG5ldyBjbGllbnQtb2JqZWN0CisJICogYW5kIGFsbCB0aGUgaW5mb3JtYXRpb25zIGFib3V0IHRoZSBuZXcgdXNlciBpcyBzZW5kIHRvIGV2ZXJ5IHVzZXIgb2YgdGhlCisJICogY3VycmVudCBjb25mZXJlbmNlIHJvb208YnIvPgorCSAqIDxici8+CisJICoKKwkgKiBAcGFyYW0gcm9vbV9pZCAtIGlkIG9mIHRoZSByb29tCisJICogQHBhcmFtIGJlY29tZU1vZGVyYXRvciAtIGlzIHVzZXIgd2lsbCBiZWNvbWUgbW9kZXJhdG9yCisJICogQHBhcmFtIGlzU3VwZXJNb2RlcmF0b3IgLSBpcyB1c2VyIHN1cGVyIG1vZGVyYXRvcgorCSAqIEBwYXJhbSBvcmdhbml6YXRpb25faWQgLSBvcmdhbml6YXRpb24gaWQgb2YgdGhlIHVzZXIKKwkgKiBAcGFyYW0gY29sb3JPYmogLSBzb21lIGNvbG9yCisJICogQHJldHVybiBSb29tU3RhdHVzIG9iamVjdAorCSAqLworCXB1YmxpYyBzeW5jaHJvbml6ZWQgUm9vbVN0YXR1cyBzZXRSb29tVmFsdWVzKExvbmcgcm9vbV9pZCwKKwkJCUJvb2xlYW4gYmVjb21lTW9kZXJhdG9yLCBCb29sZWFuIGlzU3VwZXJNb2RlcmF0b3IsCisJCQlMb25nIG9yZ2FuaXphdGlvbl9pZCwgU3RyaW5nIGNvbG9yT2JqKSB7CisJCXRyeSB7CisJCQlsb2cuZGVidWcoIi0tLS0tLS0tLS0tICBzZXRSb29tVmFsdWVzIik7CisJCQkvLyBSZXR1cm4gT2JqZWN0CisJCQlSb29tU3RhdHVzIHJvb21TdGF0dXMgPSBuZXcgUm9vbVN0YXR1cygpOworCisJCQlJQ29ubmVjdGlvbiBjdXJyZW50ID0gUmVkNS5nZXRDb25uZWN0aW9uTG9jYWwoKTsKKwkJCVN0cmluZyBzdHJlYW1pZCA9IGN1cnJlbnQuZ2V0Q2xpZW50KCkuZ2V0SWQoKTsKKwkJCUNsaWVudCBjdXJyZW50Q2xpZW50ID0gc2Vzc2lvbk1hbmFnZXIuZ2V0Q2xpZW50QnlTdHJlYW1JZChzdHJlYW1pZCwgbnVsbCk7CisJCQljdXJyZW50Q2xpZW50LnNldFJvb21faWQocm9vbV9pZCk7CisJCQljdXJyZW50Q2xpZW50LnNldFJvb21FbnRlcihuZXcgRGF0ZSgpKTsKKwkJCWN1cnJlbnRDbGllbnQuc2V0T3JnYW5pemF0aW9uX2lkKG9yZ2FuaXphdGlvbl9pZCk7CisKKwkJCWN1cnJlbnRDbGllbnQuc2V0VXNlcmNvbG9yKGNvbG9yT2JqKTsKKworCQkJLy8gSW5qZWN0IGV4dGVybmFsVXNlcklkIGlmIG5vdGhpbmcgaXMgc2V0IHlldAorCQkJaWYgKGN1cnJlbnRDbGllbnQuZ2V0RXh0ZXJuYWxVc2VySWQoKSA9PSBudWxsKSB7CisJCQkJaWYgKGN1cnJlbnRDbGllbnQuZ2V0VXNlcl9pZCgpICE9IG51bGwpIHsKKwkJCQkJVXNlciB1cyA9IHVzZXJzRGFvLmdldChjdXJyZW50Q2xpZW50LmdldFVzZXJfaWQoKSk7CisJCQkJCWlmICh1cyAhPSBudWxsKSB7CisJCQkJCQljdXJyZW50Q2xpZW50LnNldEV4dGVybmFsVXNlcklkKHVzLmdldEV4dGVybmFsVXNlcklkKCkpOworCQkJCQkJY3VycmVudENsaWVudC5zZXRFeHRlcm5hbFVzZXJUeXBlKHVzLmdldEV4dGVybmFsVXNlclR5cGUoKSk7CisJCQkJCX0KKwkJCQl9CisJCQl9CisKKwkJCS8vIFRoaXMgY2FuIGJlIHNldCB3aXRob3V0IGNoZWNraW5nIGZvciBNb2RlcmF0aW9uIEZsYWcKKwkJCWN1cnJlbnRDbGllbnQuc2V0SXNTdXBlck1vZGVyYXRvcihpc1N1cGVyTW9kZXJhdG9yKTsKKworCQkJdGhpcy5zZXNzaW9uTWFuYWdlci51cGRhdGVDbGllbnRCeVN0cmVhbUlkKHN0cmVhbWlkLAorCQkJCQljdXJyZW50Q2xpZW50LCB0cnVlLCBudWxsKTsKKworICAgICAgICAgICAgUm9vbSByb29tID0gcm9vbURhby5nZXQocm9vbV9pZCk7CisgICAgICAgICAgICBpZiAocm9vbS5nZXRTaG93TWljcm9waG9uZVN0YXR1cygpKSB7CisgICAgICAgICAgICAJY3VycmVudENsaWVudC5zZXRDYW5HaXZlQXVkaW8odHJ1ZSk7CisgICAgICAgICAgICB9CisKKwkJCS8vIExvZyB0aGUgVXNlcgorCQkJY29uZmVyZW5jZUxvZ0Rhby5hZGRDb25mZXJlbmNlTG9nKCJyb29tRW50ZXIiLAorCQkJCQljdXJyZW50Q2xpZW50LmdldFVzZXJfaWQoKSwgc3RyZWFtaWQsIHJvb21faWQsCisJCQkJCWN1cnJlbnRDbGllbnQuZ2V0VXNlcmlwKCksICIiLAorCQkJCQljdXJyZW50Q2xpZW50LmdldEV4dGVybmFsVXNlcklkKCksCisJCQkJCWN1cnJlbnRDbGllbnQuZ2V0RXh0ZXJuYWxVc2VyVHlwZSgpLAorCQkJCQljdXJyZW50Q2xpZW50LmdldE1haWwoKSwgY3VycmVudENsaWVudC5nZXRGaXJzdG5hbWUoKSwKKwkJCQkJY3VycmVudENsaWVudC5nZXRMYXN0bmFtZSgpKTsKKwkJCQorCQkJLy8gQ2hlY2sgZm9yIE1vZGVyYXRpb24gTG9naWNhbFJvb20gRU5URVIKKwkJCUxpc3Q8Q2xpZW50PiBjbGllbnRMaXN0Um9vbSA9IHNlc3Npb25NYW5hZ2VyLmdldENsaWVudExpc3RCeVJvb20ocm9vbV9pZCk7CisKKwkJCS8vIGFwcG9pbnRlZCBtZWV0aW5nIG9yIG1vZGVyYXRlZCBSb29tPyA9PiBDaGVjayBNYXggVXNlcnMgZmlyc3QKKwkJCWlmIChyb29tLmdldE51bWJlck9mUGFydGl6aXBhbnRzKCkgIT0gbnVsbAorCQkJCQkmJiBjbGllbnRMaXN0Um9vbS5zaXplKCkgPiByb29tLmdldE51bWJlck9mUGFydGl6aXBhbnRzKCkpIHsKKwkJCQlyb29tU3RhdHVzLnNldFJvb21GdWxsKHRydWUpOworCQkJCXJldHVybiByb29tU3RhdHVzOworCQkJfQorCisJCQkvLyBkZWZhdWx0IGxvZ2ljIGZvciBub24gcmVndWxhciByb29tcworCQkJaWYgKHJvb20uZ2V0QXBwb2ludG1lbnQoKSA9PSBudWxsIHx8IHJvb20uZ2V0QXBwb2ludG1lbnQoKSA9PSBmYWxzZSkgeworCisJCQkJaWYgKHJvb20uZ2V0SXNNb2RlcmF0ZWRSb29tKCkpIHsKKworCQkJCQkvLyBpZiB0aGlzIGlzIGEgTW9kZXJhdGVkIFJvb20gdGhlbiB0aGUgUm9vbSBjYW4gYmUgb25seQorCQkJCQkvLyBsb2NrZWQgb2ZmIGJ5IHRoZSBNb2RlcmF0b3IgQml0CisJCQkJCS8vIExpc3Q8Um9vbUNsaWVudD4gY2xpZW50TW9kZXJhdG9yTGlzdFJvb20gPQorCQkJCQkvLyB0aGlzLnNlc3Npb25NYW5hZ2VyLmdldEN1cnJlbnRNb2RlcmF0b3JCeVJvb20ocm9vbV9pZCk7CisKKwkJCQkJLy8gSWYgdGhlcmUgaXMgbm8gTW9kZXJhdG9yIHlldCB3ZSBoYXZlIHRvIGNoZWNrIGlmIHRoZQorCQkJCQkvLyBjdXJyZW50IFVzZXIgaGFzIHRoZSBCaXQgc2V0IHRvIHRydWUgdG8KKwkJCQkJLy8gYmVjb21lIG9uZSwgb3RoZXJ3aXNlIGhlIHdvbid0IGdldCBNb2RlcmF0aW9uIGFuZCBoYXMgdG8KKwkJCQkJLy8gd2FpdAorCQkJCQlpZiAoYmVjb21lTW9kZXJhdG9yKSB7CisJCQkJCQljdXJyZW50Q2xpZW50LnNldElzTW9kKHRydWUpOworCisJCQkJCQkvLyBUaGVyZSBpcyBhIG5lZWQgdG8gc2VuZCBhbiBleHRyYSBFdmVudCBoZXJlLCBjYXVzZSBhdAorCQkJCQkJLy8gdGhpcyBtb21lbnQgdGhlcmUgY291bGQgYmUKKwkJCQkJCS8vIGFscmVhZHkgc29tZWJvZHkgaW4gdGhlIFJvb20gd2FpdGluZworCisJCQkJCQkvLyBVcGRhdGUgdGhlIENsaWVudCBMaXN0CisJCQkJCQl0aGlzLnNlc3Npb25NYW5hZ2VyLnVwZGF0ZUNsaWVudEJ5U3RyZWFtSWQoc3RyZWFtaWQsCisJCQkJCQkJCWN1cnJlbnRDbGllbnQsIGZhbHNlLCBudWxsKTsKKworCQkJCQkJTGlzdDxDbGllbnQ+IG1vZFJvb21MaXN0ID0gdGhpcy5zZXNzaW9uTWFuYWdlcgorCQkJCQkJCQkuZ2V0Q3VycmVudE1vZGVyYXRvckJ5Um9vbShjdXJyZW50Q2xpZW50LmdldFJvb21faWQoKSk7CisJCQkJCQkKKwkJCQkJCS8vU3luYyBtZXNzYWdlIHRvIGV2ZXJ5Ym9keQorCQkJCQkJc3luY01lc3NhZ2VUb0N1cnJlbnRTY29wZSgic2V0TmV3TW9kZXJhdG9yQnlMaXN0IiwgbW9kUm9vbUxpc3QsIGZhbHNlKTsKKworCQkJCQl9IGVsc2UgeworCQkJCQkJLy8gVGhlIGN1cnJlbnQgVXNlciBpcyBub3QgYSBUZWFjaGVyL0FkbWluIG9yIHdoYXRldmVyCisJCQkJCQkvLyBSb2xlIHRoYXQgc2hvdWxkIGdldCB0aGUKKwkJCQkJCS8vIE1vZGVyYXRpb24KKwkJCQkJCWN1cnJlbnRDbGllbnQuc2V0SXNNb2QoZmFsc2UpOworCQkJCQl9CisKKwkJCQl9IGVsc2UgeworCisJCQkJCS8vIElmIHRoaXMgaXMgYSBub3JtYWwgUm9vbSBNb2RlcmF0b3IgcnVsZXMgOiBmaXJzdCBjb21lLAorCQkJCQkvLyBmaXJzdCBkcmF3IDstKQorCQkJCQlsb2cuZGVidWcoInNldFJvb21WYWx1ZXMgOiBSb29tIgorCQkJCQkJCSsgcm9vbV9pZAorCQkJCQkJCSsgIiBub3QgYXBwb2ludGVkISBNb2RlcmF0b3IgcnVsZXMgOiBmaXJzdCBjb21lLCBmaXJzdCBkcmF3IDstKSIpOworCQkJCQlpZiAoY2xpZW50TGlzdFJvb20uc2l6ZSgpID09IDEpIHsKKwkJCQkJCWxvZy5kZWJ1ZygiUm9vbSBpcyBlbXB0eSBzbyBzZXQgdGhpcyB1c2VyIHRvIGJlIG1vZGVyYXRpb24gcm9sZSIpOworCQkJCQkJY3VycmVudENsaWVudC5zZXRJc01vZCh0cnVlKTsKKwkJCQkJfSBlbHNlIHsKKwkJCQkJCWxvZy5kZWJ1ZygiUm9vbSBpcyBhbHJlYWR5IHNvbWVib2R5IHNvIHNldCB0aGlzIHVzZXIgbm90IHRvIGJlIG1vZGVyYXRpb24gcm9sZSIpOworCisJCQkJCQlpZiAoYmVjb21lTW9kZXJhdG9yKSB7CisJCQkJCQkJY3VycmVudENsaWVudC5zZXRJc01vZCh0cnVlKTsKKworCQkJCQkJCS8vIFVwZGF0ZSB0aGUgQ2xpZW50IExpc3QKKwkJCQkJCQl0aGlzLnNlc3Npb25NYW5hZ2VyLnVwZGF0ZUNsaWVudEJ5U3RyZWFtSWQoCisJCQkJCQkJCQlzdHJlYW1pZCwgY3VycmVudENsaWVudCwgZmFsc2UsIG51bGwpOworCisJCQkJCQkJTGlzdDxDbGllbnQ+IG1vZFJvb21MaXN0ID0gdGhpcy5zZXNzaW9uTWFuYWdlcgorCQkJCQkJCQkJLmdldEN1cnJlbnRNb2RlcmF0b3JCeVJvb20oY3VycmVudENsaWVudAorCQkJCQkJCQkJCQkuZ2V0Um9vbV9pZCgpKTsKKworCQkJCQkJCS8vIFRoZXJlIGlzIGEgbmVlZCB0byBzZW5kIGFuIGV4dHJhIEV2ZW50IGhlcmUsCisJCQkJCQkJLy8gY2F1c2UgYXQgdGhpcyBtb21lbnQgdGhlcmUgY291bGQgYmUKKwkJCQkJCQkvLyBhbHJlYWR5IHNvbWVib2R5IGluIHRoZSBSb29tIHdhaXRpbmcgLXN3YWduZXIgY2hlY2sgdGhpcyBjb21tZW50LCAyMC4wMS4yMDEyCisJCQkJCQkJCisJCQkJCQkJLy9TeW5jIG1lc3NhZ2UgdG8gZXZlcnlib2R5CisJCQkJCQkJc3luY01lc3NhZ2VUb0N1cnJlbnRTY29wZSgic2V0TmV3TW9kZXJhdG9yQnlMaXN0IiwgbW9kUm9vbUxpc3QsIGZhbHNlKTsKKworCQkJCQkJfSBlbHNlIHsKKwkJCQkJCQkvLyBUaGUgY3VycmVudCBVc2VyIGlzIG5vdCBhIFRlYWNoZXIvQWRtaW4gb3IKKwkJCQkJCQkvLyB3aGF0ZXZlciBSb2xlIHRoYXQgc2hvdWxkIGdldCB0aGUgTW9kZXJhdGlvbgorCQkJCQkJCWN1cnJlbnRDbGllbnQuc2V0SXNNb2QoZmFsc2UpOworCQkJCQkJfQorCisJCQkJCX0KKworCQkJCX0KKworCQkJCS8vIFVwZGF0ZSB0aGUgQ2xpZW50IExpc3QKKwkJCQl0aGlzLnNlc3Npb25NYW5hZ2VyLnVwZGF0ZUNsaWVudEJ5U3RyZWFtSWQoc3RyZWFtaWQsCisJCQkJCQljdXJyZW50Q2xpZW50LCBmYWxzZSwgbnVsbCk7CisKKwkJCX0gZWxzZSB7CisKKwkJCQkvLyBJZiB0aGlzIGlzIGFuIEFwcG9pbnRtZW50IHRoZW4gdGhlIE1vZGVyYXRvciB3aWxsIGJlIHNldCB0bworCQkJCS8vIHRoZSBJbnZpdG9yCisKKwkJCQlBcHBvaW50bWVudCBtZW50ID0gYXBwb2ludG1lbnRMb2dpYworCQkJCQkJLmdldEFwcG9pbnRtZW50QnlSb29tKHJvb21faWQpOworCisJCQkJTGlzdDxNZWV0aW5nTWVtYmVyPiBtZW1iZXJzID0gbWVldGluZ01lbWJlckRhbworCQkJCQkJLmdldE1lZXRpbmdNZW1iZXJCeUFwcG9pbnRtZW50SWQobWVudAorCQkJCQkJCQkuZ2V0QXBwb2ludG1lbnRJZCgpKTsKKworCQkJCUxvbmcgdXNlcklkSW5Sb29tQ2xpZW50ID0gY3VycmVudENsaWVudC5nZXRVc2VyX2lkKCk7CisKKwkJCQlib29sZWFuIGZvdW5kID0gZmFsc2U7CisJCQkJYm9vbGVhbiBtb2RlcmF0b3Jfc2V0ID0gZmFsc2U7CisKKwkJCQkvLyBDaGVjayBpZiBjdXJyZW50IHVzZXIgaXMgc2V0IHRvIG1vZGVyYXRvcgorCQkJCWZvciAoaW50IGkgPSAwOyBpIDwgbWVtYmVycy5zaXplKCk7IGkrKykgeworCQkJCQlNZWV0aW5nTWVtYmVyIG1lbWJlciA9IG1lbWJlcnMuZ2V0KGkpOworCisJCQkJCS8vIG9ubHkgcGVyc2lzdGVudCB1c2VycyBjYW4gc2NoZWR1bGUgYSBtZWV0aW5nCisJCQkJCS8vIHVzZXItaWQgaXMgb25seSBzZXQgZm9yIHJlZ2lzdGVyZWQgdXNlcnMKKwkJCQkJaWYgKG1lbWJlci5nZXRVc2VyaWQoKSAhPSBudWxsKSB7CisJCQkJCQlsb2cuZGVidWcoImNoZWNraW5nIHVzZXIgIiArIG1lbWJlci5nZXRGaXJzdG5hbWUoKQorCQkJCQkJCQkrICIgZm9yIG1vZGVyYXRvciByb2xlIC0gSUQgOiAiCisJCQkJCQkJCSsgbWVtYmVyLmdldFVzZXJpZCgpLmdldFVzZXJfaWQoKSk7CisKKwkJCQkJCWlmIChtZW1iZXIuZ2V0VXNlcmlkKCkuZ2V0VXNlcl9pZCgpCisJCQkJCQkJCS5lcXVhbHModXNlcklkSW5Sb29tQ2xpZW50KSkgeworCQkJCQkJCWZvdW5kID0gdHJ1ZTsKKworCQkJCQkJCWlmIChtZW1iZXIuZ2V0SW52aXRvcigpKSB7CisJCQkJCQkJCWxvZy5kZWJ1ZygiVXNlciAiCisJCQkJCQkJCQkJKyB1c2VySWRJblJvb21DbGllbnQKKwkJCQkJCQkJCQkrICIgaXMgbW9kZXJhdG9yIGR1ZSB0byBmbGFnIGluIE1lZXRpbmdNZW1iZXIgcmVjb3JkIik7CisJCQkJCQkJCWN1cnJlbnRDbGllbnQuc2V0SXNNb2QodHJ1ZSk7CisKKwkJCQkJCQkJLy8gVXBkYXRlIHRoZSBDbGllbnQgTGlzdAorCQkJCQkJCQl0aGlzLnNlc3Npb25NYW5hZ2VyLnVwZGF0ZUNsaWVudEJ5U3RyZWFtSWQoCisJCQkJCQkJCQkJc3RyZWFtaWQsIGN1cnJlbnRDbGllbnQsIGZhbHNlLCBudWxsKTsKKworCQkJCQkJCQlMaXN0PENsaWVudD4gbW9kUm9vbUxpc3QgPSB0aGlzLnNlc3Npb25NYW5hZ2VyCisJCQkJCQkJCQkJLmdldEN1cnJlbnRNb2RlcmF0b3JCeVJvb20oY3VycmVudENsaWVudAorCQkJCQkJCQkJCQkJLmdldFJvb21faWQoKSk7CisKKwkJCQkJCQkJLy8gVGhlcmUgaXMgYSBuZWVkIHRvIHNlbmQgYW4gZXh0cmEgRXZlbnQgaGVyZSwgY2F1c2UgYXQgdGhpcyBtb21lbnQgCisJCQkJCQkJCS8vIHRoZXJlIGNvdWxkIGJlIGFscmVhZHkgc29tZWJvZHkgaW4gdGhlIFJvb20gd2FpdGluZworCisJCQkJCQkJCS8vU3luYyBtZXNzYWdlIHRvIGV2ZXJ5Ym9keQorCQkJCQkJCQlzeW5jTWVzc2FnZVRvQ3VycmVudFNjb3BlKCJzZXROZXdNb2RlcmF0b3JCeUxpc3QiLCBtb2RSb29tTGlzdCwgZmFsc2UpOworCisJCQkJCQkJCW1vZGVyYXRvcl9zZXQgPSB0cnVlOworCQkJCQkJCQl0aGlzLnNlc3Npb25NYW5hZ2VyLnVwZGF0ZUNsaWVudEJ5U3RyZWFtSWQoCisJCQkJCQkJCQkJc3RyZWFtaWQsIGN1cnJlbnRDbGllbnQsIGZhbHNlLCBudWxsKTsKKwkJCQkJCQkJYnJlYWs7CisJCQkJCQkJfSBlbHNlIHsKKwkJCQkJCQkJbG9nLmRlYnVnKCJVc2VyICIKKwkJCQkJCQkJCQkrIHVzZXJJZEluUm9vbUNsaWVudAorCQkJCQkJCQkJCSsgIiBpcyBOT1QgbW9kZXJhdG9yIGR1ZSB0byBmbGFnIGluIE1lZXRpbmdNZW1iZXIgcmVjb3JkIik7CisJCQkJCQkJCWN1cnJlbnRDbGllbnQuc2V0SXNNb2QoZmFsc2UpOworCQkJCQkJCQl0aGlzLnNlc3Npb25NYW5hZ2VyLnVwZGF0ZUNsaWVudEJ5U3RyZWFtSWQoCisJCQkJCQkJCQkJc3RyZWFtaWQsIGN1cnJlbnRDbGllbnQsIGZhbHNlLCBudWxsKTsKKwkJCQkJCQkJYnJlYWs7CisJCQkJCQkJfQorCQkJCQkJfSBlbHNlIHsKKwkJCQkJCQlpZiAobWVtYmVyLmdldEludml0b3IoKSkKKwkJCQkJCQkJbW9kZXJhdG9yX3NldCA9IHRydWU7CisJCQkJCQl9CisJCQkJCX0gZWxzZSB7CisJCQkJCQlpZiAobWVtYmVyLmdldEludml0b3IoKSkKKwkJCQkJCQltb2RlcmF0b3Jfc2V0ID0gdHJ1ZTsKKwkJCQkJfQorCisJCQkJfQorCisJCQkJaWYgKCFmb3VuZCkgeworCQkJCQlsb2cuZGVidWcoIlVzZXIgIgorCQkJCQkJCSsgdXNlcklkSW5Sb29tQ2xpZW50CisJCQkJCQkJKyAiIGNvdWxkIG5vdCBiZSBmb3VuZCBhcyBNZWV0aW5nTWVtYmVyIC0+IGRlZmluaXRlbHkgbm8gbW9kZXJhdG9yIik7CisJCQkJCWN1cnJlbnRDbGllbnQuc2V0SXNNb2QoZmFsc2UpOworCQkJCQl0aGlzLnNlc3Npb25NYW5hZ2VyLnVwZGF0ZUNsaWVudEJ5U3RyZWFtSWQoc3RyZWFtaWQsCisJCQkJCQkJY3VycmVudENsaWVudCwgZmFsc2UsIG51bGwpOworCQkJCX0gZWxzZSB7CisJCQkJCS8vIGlmIGN1cnJlbnQgdXNlciBpcyBwYXJ0IG9mIHRoZSBtZW1iZXIgbGlzdCwgYnV0IG1vZGVyYXRvcgorCQkJCQkvLyBjb3VsZG4ndCBiZSByZXRyaWV2ZWQgOiBmaXJzdCBjb21lLCBmaXJzdCBkcmF3IQorCQkJCQlpZiAoY2xpZW50TGlzdFJvb20uc2l6ZSgpID09IDEgJiYgbW9kZXJhdG9yX3NldCA9PSBmYWxzZSkgeworCQkJCQkJbG9nLmRlYnVnKCIiKTsKKwkJCQkJCWN1cnJlbnRDbGllbnQuc2V0SXNNb2QodHJ1ZSk7CisKKwkJCQkJCS8vIFVwZGF0ZSB0aGUgQ2xpZW50IExpc3QKKwkJCQkJCXRoaXMuc2Vzc2lvbk1hbmFnZXIudXBkYXRlQ2xpZW50QnlTdHJlYW1JZChzdHJlYW1pZCwKKwkJCQkJCQkJY3VycmVudENsaWVudCwgZmFsc2UsIG51bGwpOworCisJCQkJCQlMaXN0PENsaWVudD4gbW9kUm9vbUxpc3QgPSB0aGlzLnNlc3Npb25NYW5hZ2VyCisJCQkJCQkJCS5nZXRDdXJyZW50TW9kZXJhdG9yQnlSb29tKGN1cnJlbnRDbGllbnQKKwkJCQkJCQkJCQkuZ2V0Um9vbV9pZCgpKTsKKworCQkJCQkJLy8gVGhlcmUgaXMgYSBuZWVkIHRvIHNlbmQgYW4gZXh0cmEgRXZlbnQgaGVyZSwgY2F1c2UgYXQKKwkJCQkJCS8vIHRoaXMgbW9tZW50IHRoZXJlIGNvdWxkIGJlCisJCQkJCQkvLyBhbHJlYWR5IHNvbWVib2R5IGluIHRoZSBSb29tIHdhaXRpbmcKKworCQkJCQkJLy9TeW5jIG1lc3NhZ2UgdG8gZXZlcnlib2R5CisJCQkJCQlzeW5jTWVzc2FnZVRvQ3VycmVudFNjb3BlKCJzZXROZXdNb2RlcmF0b3JCeUxpc3QiLCBtb2RSb29tTGlzdCwgZmFsc2UpOworCQkJCQkJCisJCQkJCQl0aGlzLnNlc3Npb25NYW5hZ2VyLnVwZGF0ZUNsaWVudEJ5U3RyZWFtSWQoc3RyZWFtaWQsCisJCQkJCQkJCWN1cnJlbnRDbGllbnQsIGZhbHNlLCBudWxsKTsKKwkJCQkJfQorCQkJCX0KKworCQkJfQorCQkJCisJCQkvL1N5bmMgbWVzc2FnZSB0byBldmVyeWJvZHkKKwkJCXN5bmNNZXNzYWdlVG9DdXJyZW50U2NvcGUoImFkZE5ld1VzZXIiLCBjdXJyZW50Q2xpZW50LCBmYWxzZSk7CisKKwkJCS8vU3RhdHVzIG9iamVjdCBmb3IgU2hhcmVkIEJyb3dzaW5nCisJCQlCcm93c2VyU3RhdHVzIGJyb3dzZXJTdGF0dXMgPSAoQnJvd3NlclN0YXR1cykgY3VycmVudC5nZXRTY29wZSgpCisJCQkJCS5nZXRBdHRyaWJ1dGUoImJyb3dzZXJTdGF0dXMiKTsKKworCQkJaWYgKGJyb3dzZXJTdGF0dXMgPT0gbnVsbCkgeworCQkJCWJyb3dzZXJTdGF0dXMgPSBuZXcgQnJvd3NlclN0YXR1cygpOworCQkJfQorCisJCQkvLyBSb29tU3RhdHVzIHJvb21TdGF0dXMgPSBuZXcgUm9vbVN0YXR1cygpOworCisJCQkvLyBGSVhNRTogUmV3b3JrIENsaWVudCBPYmplY3QgdG8gRFRPcworCQkJcm9vbVN0YXR1cy5zZXRDbGllbnRMaXN0KGNsaWVudExpc3RSb29tKTsKKwkJCXJvb21TdGF0dXMuc2V0QnJvd3NlclN0YXR1cyhicm93c2VyU3RhdHVzKTsKKworCQkJcmV0dXJuIHJvb21TdGF0dXM7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW3NldFJvb21WYWx1ZXNdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvKioKKwkgKiBUaGlzIG1ldGhvZCBpcyBpbnZva2VkIHdoZW4gdGhlIHVzZXIgaGFzIGRpc2Nvbm5lY3RlZCBhbmQgcmVjb25uZWN0cyB0bworCSAqIHRoZSBHYXRld2F5IHdpdGggdGhlIG5ldyBzY29wZQorCSAqIAorCSAqIEBwYXJhbSBTSUQKKwkgKiBAcGFyYW0gdXNlcklkCisJICogQHBhcmFtIHVzZXJuYW1lCisJICogQHBhcmFtIGZpcnN0bmFtZQorCSAqIEBwYXJhbSBsYXN0bmFtZQorCSAqIEBwYXJhbSBwaWN0dXJlX3VyaQorCSAqIEByZXR1cm4gY2xpZW50IGJlaW5nIHVwZGF0ZWQgaW4gY2FzZSBvZiBzdWNjZXNzLCBudWxsIG90aGVyd2lzZQorCSAqLworCXB1YmxpYyBzeW5jaHJvbml6ZWQgQ2xpZW50IHNldFVzZXJuYW1lUmVjb25uZWN0KFN0cmluZyBTSUQsCisJCQlMb25nIHVzZXJJZCwgU3RyaW5nIHVzZXJuYW1lLCBTdHJpbmcgZmlyc3RuYW1lLCBTdHJpbmcgbGFzdG5hbWUsCisJCQlTdHJpbmcgcGljdHVyZV91cmkpIHsKKwkJdHJ5IHsKKwkJCWxvZy5kZWJ1ZygiLS0tLS0tLS0tLS0gIHNldFVzZXJuYW1lUmVjb25uZWN0Iik7CisJCQlJQ29ubmVjdGlvbiBjdXJyZW50ID0gUmVkNS5nZXRDb25uZWN0aW9uTG9jYWwoKTsKKwkJCVN0cmluZyBzdHJlYW1pZCA9IGN1cnJlbnQuZ2V0Q2xpZW50KCkuZ2V0SWQoKTsKKwkJCUNsaWVudCBjdXJyZW50Q2xpZW50ID0gdGhpcy5zZXNzaW9uTWFuYWdlcgorCQkJCQkuZ2V0Q2xpZW50QnlTdHJlYW1JZChzdHJlYW1pZCwgbnVsbCk7CisKKwkJCWN1cnJlbnRDbGllbnQuc2V0VXNlcm5hbWUodXNlcm5hbWUpOworCQkJY3VycmVudENsaWVudC5zZXRVc2VyX2lkKHVzZXJJZCk7CisJCQlTZXNzaW9uVmFyaWFibGVzVXRpbC5zZXRVc2VySWQoY3VycmVudC5nZXRDbGllbnQoKSwgdXNlcklkKTsKKwkJCWN1cnJlbnRDbGllbnQuc2V0UGljdHVyZV91cmkocGljdHVyZV91cmkpOworCQkJY3VycmVudENsaWVudC5zZXRVc2VyT2JqZWN0KHVzZXJJZCwgdXNlcm5hbWUsIGZpcnN0bmFtZSwgbGFzdG5hbWUpOworCisJCQkvLyBVcGRhdGUgU2Vzc2lvbiBEYXRhCisJCQlzZXNzaW9uZGF0YURhby51cGRhdGVVc2VyV2l0aG91dFNlc3Npb24oU0lELCB1c2VySWQpOworCisJCQkvLyBvbmx5IGZpbGwgdGhpcyB2YWx1ZSBmcm9tIFVzZXItUmVjb3JkCisJCQkvLyBjYXVzZSBpbnZpdGVkIHVzZXJzIGhhdmUgbm8gYXNzb2NpYXRlZCBVc2VyLCBzbworCQkJLy8geW91IGNhbm5vdCBzZXQgdGhlIGZpcnN0bmFtZSxsYXN0bmFtZSBmcm9tIHRoZSBVc2VyUmVjb3JkCisJCQlpZiAodXNlcklkICE9IG51bGwpIHsKKwkJCQlVc2VyIHVzID0gdXNlcnNEYW8uZ2V0KHVzZXJJZCk7CisJCQkJCisJCQkJaWYgKHVzICE9IG51bGwpIHsKKwkJCQkJY3VycmVudENsaWVudC5zZXRFeHRlcm5hbFVzZXJJZCh1cy5nZXRFeHRlcm5hbFVzZXJJZCgpKTsKKwkJCQkJY3VycmVudENsaWVudC5zZXRFeHRlcm5hbFVzZXJUeXBlKHVzLmdldEV4dGVybmFsVXNlclR5cGUoKSk7CisJCQkJfQorCQkJCWlmICh1cyAhPSBudWxsICYmIHVzLmdldFBpY3R1cmV1cmkoKSAhPSBudWxsKSB7CisJCQkJCS8vIHNldCBQaWN0dXJlLVVSSQorCQkJCQljdXJyZW50Q2xpZW50LnNldFBpY3R1cmVfdXJpKHVzLmdldFBpY3R1cmV1cmkoKSk7CisJCQkJfQorCQkJfQorCQkJdGhpcy5zZXNzaW9uTWFuYWdlci51cGRhdGVDbGllbnRCeVN0cmVhbUlkKHN0cmVhbWlkLAorCQkJCQljdXJyZW50Q2xpZW50LCBmYWxzZSwgbnVsbCk7CisJCQlyZXR1cm4gY3VycmVudENsaWVudDsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbc2V0VXNlcm5hbWVdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvKioKKwkgKiB0aGlzIGlzIHNldCBpbml0aWFsIGRpcmVjdGx5IGFmdGVyIGxvZ2luL2xvYWRpbmcgbGFuZ3VhZ2UKKwkgKiAKKwkgKiBAcGFyYW0gU0lEIC0gaWQgb2YgdGhlIHNlc3Npb24KKwkgKiBAcGFyYW0gdXNlcklkIC0gaWQgb2YgdGhlIHVzZXIgYmVpbmcgc2V0CisJICogQHBhcmFtIHVzZXJuYW1lIC0gdXNlcm5hbWUgb2YgdGhlIHVzZXIKKwkgKiBAcGFyYW0gZmlyc3RuYW1lIC0gZmlyc3RuYW1lIG9mIHRoZSB1c2VyCisJICogQHBhcmFtIGxhc3RuYW1lIC0gbGFzdG5hbWUgb2YgdGhlIHVzZXIKKwkgKiBAcmV0dXJuIFJvb21DbGllbnQgaW4gY2FzZSBvZiBldmVyeXRoaW5nIGlzIE9LLCBudWxsIG90aGVyd2lzZQorCSAqLworCXB1YmxpYyBzeW5jaHJvbml6ZWQgQ2xpZW50IHNldFVzZXJuYW1lQW5kU2Vzc2lvbihTdHJpbmcgU0lELAorCQkJTG9uZyB1c2VySWQsIFN0cmluZyB1c2VybmFtZSwgU3RyaW5nIGZpcnN0bmFtZSwgU3RyaW5nIGxhc3RuYW1lKSB7CisJCXRyeSB7CisJCQlsb2cuZGVidWcoIi0tLS0tLS0tLS0tICBzZXRVc2VybmFtZUFuZFNlc3Npb24iKTsKKwkJCUlDb25uZWN0aW9uIGN1cnJlbnQgPSBSZWQ1LmdldENvbm5lY3Rpb25Mb2NhbCgpOworCQkJU3RyaW5nIHN0cmVhbWlkID0gY3VycmVudC5nZXRDbGllbnQoKS5nZXRJZCgpOworCQkJQ2xpZW50IGN1cnJlbnRDbGllbnQgPSB0aGlzLnNlc3Npb25NYW5hZ2VyCisJCQkJCS5nZXRDbGllbnRCeVN0cmVhbUlkKHN0cmVhbWlkLCBudWxsKTsKKworCQkJY3VycmVudENsaWVudC5zZXRVc2VybmFtZSh1c2VybmFtZSk7CisJCQljdXJyZW50Q2xpZW50LnNldFVzZXJfaWQodXNlcklkKTsKKwkJCVNlc3Npb25WYXJpYWJsZXNVdGlsLnNldFVzZXJJZChjdXJyZW50LmdldENsaWVudCgpLCB1c2VySWQpOworCQkJY3VycmVudENsaWVudC5zZXRVc2VyT2JqZWN0KHVzZXJJZCwgdXNlcm5hbWUsIGZpcnN0bmFtZSwgbGFzdG5hbWUpOworCisJCQkvLyBVcGRhdGUgU2Vzc2lvbiBEYXRhCisJCQlsb2cuZGVidWcoIlVEUEFURSBTRVNTSU9OICIgKyBTSUQgKyAiLCAiICsgdXNlcklkKTsKKwkJCXNlc3Npb25kYXRhRGFvLnVwZGF0ZVVzZXJXaXRob3V0U2Vzc2lvbihTSUQsIHVzZXJJZCk7CisKKwkJCVVzZXIgdXNlciA9IHVzZXJNYW5hZ2VyLmdldFVzZXJCeUlkKHVzZXJJZCk7CisKKwkJCWlmICh1c2VyICE9IG51bGwpIHsKKwkJCQljdXJyZW50Q2xpZW50LnNldEV4dGVybmFsVXNlcklkKHVzZXIuZ2V0RXh0ZXJuYWxVc2VySWQoKSk7CisJCQkJY3VycmVudENsaWVudC5zZXRFeHRlcm5hbFVzZXJUeXBlKHVzZXIuZ2V0RXh0ZXJuYWxVc2VyVHlwZSgpKTsKKwkJCX0KKworCQkJLy8gb25seSBmaWxsIHRoaXMgdmFsdWUgZnJvbSBVc2VyLVJlY29yZAorCQkJLy8gY2F1c2UgaW52aXRlZCB1c2VycyBoYXZlIG5vbgorCQkJLy8geW91IGNhbm5vdCBzZXQgdGhlIGZpcnN0bmFtZSxsYXN0bmFtZSBmcm9tIHRoZSBVc2VyUmVjb3JkCisJCQlVc2VyIHVzID0gdXNlcnNEYW8uZ2V0KHVzZXJJZCk7CisJCQlpZiAodXMgIT0gbnVsbCAmJiB1cy5nZXRQaWN0dXJldXJpKCkgIT0gbnVsbCkgeworCQkJCS8vIHNldCBQaWN0dXJlLVVSSQorCQkJCWN1cnJlbnRDbGllbnQuc2V0UGljdHVyZV91cmkodXMuZ2V0UGljdHVyZXVyaSgpKTsKKwkJCX0KKwkJCXRoaXMuc2Vzc2lvbk1hbmFnZXIudXBkYXRlQ2xpZW50QnlTdHJlYW1JZChzdHJlYW1pZCwKKwkJCQkJY3VycmVudENsaWVudCwgZmFsc2UsIG51bGwpOworCQkJcmV0dXJuIGN1cnJlbnRDbGllbnQ7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW3NldFVzZXJuYW1lXSIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLyoqCisJICogdXNlZCBieSB0aGUgU2NyZWVuLVNoYXJpbmcgU2VydmxldCB0byB0cmlnZ2VyIGV2ZW50cworCSAqIAorCSAqIEBwYXJhbSByb29tX2lkCisJICogQHBhcmFtIG1lc3NhZ2UKKwkgKiBAcmV0dXJuIHRoZSBsaXN0IG9mIHJvb20gY2xpZW50cworCSAqLworCXB1YmxpYyBzeW5jaHJvbml6ZWQgSGFzaE1hcDxTdHJpbmcsIENsaWVudD4gc2VuZE1lc3NhZ2VCeVJvb21BbmREb21haW4oCisJCQlMb25nIHJvb21faWQsIE9iamVjdCBtZXNzYWdlKSB7CisJCUhhc2hNYXA8U3RyaW5nLCBDbGllbnQ+IHJvb21DbGllbnRMaXN0ID0gbmV3IEhhc2hNYXA8U3RyaW5nLCBDbGllbnQ+KCk7CisJCXRyeSB7CisKKwkJCWxvZy5kZWJ1Zygic2VuZE1lc3NhZ2VCeVJvb21BbmREb21haW4gIiArIHJvb21faWQpOworCisJCQlJU2NvcGUgZ2xvYmFsU2NvcGUgPSBnZXRDb250ZXh0KCkuZ2V0R2xvYmFsU2NvcGUoKTsKKwkJCUlTY29wZSB3ZWJBcHBLZXlTY29wZSA9IGdsb2JhbFNjb3BlCisJCQkJCS5nZXRTY29wZShPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisKKwkJCWxvZy5kZWJ1Zygid2ViQXBwS2V5U2NvcGUgIiArIHdlYkFwcEtleVNjb3BlKTsKKworCQkJSVNjb3BlIHNjb3BlSGliZXJuYXRlID0gd2ViQXBwS2V5U2NvcGUuZ2V0U2NvcGUocm9vbV9pZC50b1N0cmluZygpKTsKKworCQkJaWYgKHNjb3BlSGliZXJuYXRlICE9IG51bGwpIHsKKworCQkJCUNvbGxlY3Rpb248U2V0PElDb25uZWN0aW9uPj4gY29uQ29sbGVjdGlvbiA9IHdlYkFwcEtleVNjb3BlCisJCQkJCQkuZ2V0U2NvcGUocm9vbV9pZC50b1N0cmluZygpKS5nZXRDb25uZWN0aW9ucygpOworCQkJCWZvciAoU2V0PElDb25uZWN0aW9uPiBjb25zZXQgOiBjb25Db2xsZWN0aW9uKSB7CisJCQkJCWZvciAoSUNvbm5lY3Rpb24gY29ubiA6IGNvbnNldCkgeworCQkJCQkJaWYgKGNvbm4gIT0gbnVsbCkgeworCQkJCQkJCWlmIChjb25uIGluc3RhbmNlb2YgSVNlcnZpY2VDYXBhYmxlQ29ubmVjdGlvbikgeworCQkJCQkJCQlJQ2xpZW50IGNsaWVudCA9IGNvbm4uZ2V0Q2xpZW50KCk7CisJCQkJCQkJCWlmIChTZXNzaW9uVmFyaWFibGVzVXRpbC5pc1NjcmVlbkNsaWVudChjbGllbnQpKSB7CisJCQkJCQkJCQkvLyBzY3JlZW4gc2hhcmluZyBjbGllbnRzIGRvIG5vdCByZWNlaXZlIGV2ZW50cworCQkJCQkJCQkJY29udGludWU7CisJCQkJCQkJCX0gZWxzZSBpZiAoU2Vzc2lvblZhcmlhYmxlc1V0aWwuaXNBVkNsaWVudChjbGllbnQpKSB7CisJCQkJCQkJCQkvLyBBVkNsaWVudHMgb3IgcG90ZW50aWFsIEFWQ2xpZW50cyBkbyBub3QgcmVjZWl2ZSBldmVudHMKKwkJCQkJCQkJCWNvbnRpbnVlOworCQkJCQkJCQl9CisJCQkJCQkJCSgoSVNlcnZpY2VDYXBhYmxlQ29ubmVjdGlvbikgY29ubikuaW52b2tlKAorCQkJCQkJCQkJCSJuZXdNZXNzYWdlQnlSb29tQW5kRG9tYWluIiwKKwkJCQkJCQkJCQluZXcgT2JqZWN0W10geyBtZXNzYWdlIH0sIHRoaXMpOworCQkJCQkJCX0KKwkJCQkJCX0KKwkJCQkJfQorCQkJCX0KKworCQkJfSBlbHNlIHsKKwkJCQlsb2cuZGVidWcoInNlbmRNZXNzYWdlQnlSb29tQW5kRG9tYWluIHNlcnZsZXQgbm90IHlldCBzdGFydGVkICAtIHJvb21JRCA6ICciCisJCQkJCQkrIHJvb21faWQgKyAiJyIpOworCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2dldENsaWVudExpc3RCWVJvb21BbmREb21haW5dIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gcm9vbUNsaWVudExpc3Q7CisJfQorCisJcHVibGljIHN5bmNocm9uaXplZCBMaXN0PENsaWVudD4gZ2V0Q3VycmVudE1vZGVyYXRvckxpc3QoKSB7CisJCXRyeSB7CisJCQlJQ29ubmVjdGlvbiBjdXJyZW50ID0gUmVkNS5nZXRDb25uZWN0aW9uTG9jYWwoKTsKKwkJCUNsaWVudCBjdXJyZW50Q2xpZW50ID0gdGhpcy5zZXNzaW9uTWFuYWdlcgorCQkJCQkuZ2V0Q2xpZW50QnlTdHJlYW1JZChjdXJyZW50LmdldENsaWVudCgpLmdldElkKCksIG51bGwpOworCQkJTG9uZyByb29tX2lkID0gY3VycmVudENsaWVudC5nZXRSb29tX2lkKCk7CisJCQlyZXR1cm4gdGhpcy5zZXNzaW9uTWFuYWdlci5nZXRDdXJyZW50TW9kZXJhdG9yQnlSb29tKHJvb21faWQpOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRDdXJyZW50TW9kZXJhdG9yXSIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisJLyoqCisJICogVGhpcyBGdW5jdGlvbiBpcyB0cmlnZ2VyZWQgZnJvbSB0aGUgV2hpdGVib2FyZAorCSAqIAorCSAqIEBwYXJhbSB3aGl0ZWJvYXJkT2JqUGFyYW0gLSBhcnJheSBvZiBwYXJhbWV0ZXJzIGJlaW5nIHNlbmRlZCB0byB3aGl0ZWJvYXJkCisJICogQHBhcmFtIHdoaXRlYm9hcmRJZCAtIGlkIG9mIHdoaXRlYm9hcmQgcGFyYW1ldGVycyB3aWxsIGJlIHNlbmQgdG8KKwkgKi8KKwlAU3VwcHJlc3NXYXJuaW5ncyh7ICJyYXd0eXBlcyIsICJ1bmNoZWNrZWQiIH0pCisJcHVibGljIHN5bmNocm9uaXplZCB2b2lkIHNlbmRWYXJzQnlXaGl0ZWJvYXJkSWQoCisJCQlBcnJheUxpc3Qgd2hpdGVib2FyZE9ialBhcmFtLCBMb25nIHdoaXRlYm9hcmRJZCkgeworCQkvLworCQl0cnkgeworCisJCQlNYXAgd2hpdGVib2FyZE9iaiA9IG5ldyBIYXNoTWFwKCk7CisJCQlpbnQgaSA9IDA7CisJCQlmb3IgKEl0ZXJhdG9yIGl0ZXIgPSB3aGl0ZWJvYXJkT2JqUGFyYW0uaXRlcmF0b3IoKTsgaXRlci5oYXNOZXh0KCk7KSB7CisJCQkJT2JqZWN0IG9iaiA9IGl0ZXIubmV4dCgpOworCQkJCS8vIGxvZy5kZWJ1Zygib2JqIitvYmopOworCQkJCXdoaXRlYm9hcmRPYmoucHV0KGksIG9iaik7CisJCQkJaSsrOworCQkJfQorCisJCQkvLyBDaGVjayBpZiB0aGlzIFVzZXIgaXMgdGhlIE1vZDoKKwkJCUlDb25uZWN0aW9uIGN1cnJlbnQgPSBSZWQ1LmdldENvbm5lY3Rpb25Mb2NhbCgpOworCQkJQ2xpZW50IGN1cnJlbnRDbGllbnQgPSB0aGlzLnNlc3Npb25NYW5hZ2VyCisJCQkJCS5nZXRDbGllbnRCeVN0cmVhbUlkKGN1cnJlbnQuZ2V0Q2xpZW50KCkuZ2V0SWQoKSwgbnVsbCk7CisKKwkJCWlmIChjdXJyZW50Q2xpZW50ID09IG51bGwpIHsKKwkJCQlyZXR1cm47CisJCQl9CisKKwkJCUxvbmcgcm9vbV9pZCA9IGN1cnJlbnRDbGllbnQuZ2V0Um9vbV9pZCgpOworCisJCQkvLyBsb2cuZGVidWcoIioqKioqIHNlbmRWYXJzOiAiICsgd2hpdGVib2FyZE9iaik7CisKKwkJCS8vIFN0b3JlIGV2ZW50IGluIGxpc3QKKwkJCVN0cmluZyBhY3Rpb24gPSB3aGl0ZWJvYXJkT2JqLmdldCgyKS50b1N0cmluZygpOworCisJCQlpZiAoYWN0aW9uLmVxdWFscygiZGVsZXRlTWluZE1hcE5vZGVzIikpIHsKKworCQkJCS8vIFNpbXVsYXRlIFNpbmdsZSBEZWxldGUgRXZlbnRzIGZvciB6LUluZGV4CisJCQkJTGlzdCBhY3Rpb25PYmplY3QgPSAoTGlzdCkgd2hpdGVib2FyZE9iai5nZXQoMyk7CisKKwkJCQlMaXN0PExpc3Q+IGl0ZW1PYmplY3RzID0gKExpc3QpIGFjdGlvbk9iamVjdC5nZXQoMyk7CisKKwkJCQlNYXAgd2hpdGVib2FyZFRlbXBPYmogPSBuZXcgSGFzaE1hcCgpOworCQkJCXdoaXRlYm9hcmRUZW1wT2JqLnB1dCgyLCAiZGVsZXRlIik7CisKKwkJCQlmb3IgKExpc3QgaXRlbU9iamVjdCA6IGl0ZW1PYmplY3RzKSB7CisKKwkJCQkJTGlzdDxPYmplY3Q+IHRlbXBBY3Rpb25PYmplY3QgPSBuZXcgTGlua2VkTGlzdDxPYmplY3Q+KCk7CisJCQkJCXRlbXBBY3Rpb25PYmplY3QuYWRkKCJtaW5kbWFwbm9kZSIpOworCQkJCQl0ZW1wQWN0aW9uT2JqZWN0LmFkZChpdGVtT2JqZWN0LmdldCgwKSk7IC8vIHotSW5kZXggLTgKKwkJCQkJdGVtcEFjdGlvbk9iamVjdC5hZGQobnVsbCk7IC8vIHNpbXVsYXRlIC03CisJCQkJCXRlbXBBY3Rpb25PYmplY3QuYWRkKG51bGwpOyAvLyBzaW11bGF0ZSAtNgorCQkJCQl0ZW1wQWN0aW9uT2JqZWN0LmFkZChudWxsKTsgLy8gc2ltdWxhdGUgLTUKKwkJCQkJdGVtcEFjdGlvbk9iamVjdC5hZGQobnVsbCk7IC8vIHNpbXVsYXRlIC00CisJCQkJCXRlbXBBY3Rpb25PYmplY3QuYWRkKG51bGwpOyAvLyBzaW11bGF0ZSAtMworCQkJCQl0ZW1wQWN0aW9uT2JqZWN0LmFkZChudWxsKTsgLy8gc2ltdWxhdGUgLTIKKwkJCQkJdGVtcEFjdGlvbk9iamVjdC5hZGQoaXRlbU9iamVjdC5nZXQoMSkpOyAvLyBPYmplY3QtTmFtZSAtMQorCisJCQkJCXdoaXRlYm9hcmRUZW1wT2JqLnB1dCgzLCB0ZW1wQWN0aW9uT2JqZWN0KTsKKworCQkJCQl3aGl0ZWJvYXJkTWFuYWdlbWVudC5hZGRXaGl0ZUJvYXJkT2JqZWN0QnlJZCgKKwkJCQkJCQlyb29tX2lkLCB3aGl0ZWJvYXJkVGVtcE9iaiwgd2hpdGVib2FyZElkKTsKKworCQkJCX0KKworCQkJfSBlbHNlIHsKKworCQkJCXdoaXRlYm9hcmRNYW5hZ2VtZW50LmFkZFdoaXRlQm9hcmRPYmplY3RCeUlkKAorCQkJCQkJcm9vbV9pZCwgd2hpdGVib2FyZE9iaiwgd2hpdGVib2FyZElkKTsKKworCQkJfQorCisJCQlNYXA8U3RyaW5nLCBPYmplY3Q+IHNlbmRPYmplY3QgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIE9iamVjdD4oKTsKKwkJCXNlbmRPYmplY3QucHV0KCJpZCIsIHdoaXRlYm9hcmRJZCk7CisJCQlzZW5kT2JqZWN0LnB1dCgicGFyYW0iLCB3aGl0ZWJvYXJkT2JqUGFyYW0pOworCisJCQlib29sZWFuIHNob3dEcmF3U3RhdHVzID0gZ2V0V2hpdGVib2FyZERyYXdTdGF0dXMoKTsKKworCQkJLy8gTm90aWZ5IGFsbCBDbGllbnRzIG9mIHRoYXQgU2NvcGUgKFJvb20pCisJCQlDb2xsZWN0aW9uPFNldDxJQ29ubmVjdGlvbj4+IGNvbkNvbGxlY3Rpb24gPSBjdXJyZW50LmdldFNjb3BlKCkKKwkJCQkJLmdldENvbm5lY3Rpb25zKCk7CisJCQlmb3IgKFNldDxJQ29ubmVjdGlvbj4gY29uc2V0IDogY29uQ29sbGVjdGlvbikgeworCQkJCWZvciAoSUNvbm5lY3Rpb24gY29ubiA6IGNvbnNldCkgeworCQkJCQlpZiAoY29ubiAhPSBudWxsKSB7CisJCQkJCQlpZiAoY29ubiBpbnN0YW5jZW9mIElTZXJ2aWNlQ2FwYWJsZUNvbm5lY3Rpb24pIHsKKwkJCQkJCQlJQ2xpZW50IGNsaWVudCA9IGNvbm4uZ2V0Q2xpZW50KCk7CisJCQkJCQkJaWYgKFNlc3Npb25WYXJpYWJsZXNVdGlsLmlzU2NyZWVuQ2xpZW50KGNsaWVudCkpIHsKKwkJCQkJCQkJLy8gc2NyZWVuIHNoYXJpbmcgY2xpZW50cyBkbyBub3QgcmVjZWl2ZSBldmVudHMKKwkJCQkJCQkJY29udGludWU7CisJCQkJCQkJfSBlbHNlIGlmIChTZXNzaW9uVmFyaWFibGVzVXRpbC5pc0FWQ2xpZW50KGNsaWVudCkpIHsKKwkJCQkJCQkJLy8gQVZDbGllbnRzIG9yIHBvdGVudGlhbCBBVkNsaWVudHMgZG8gbm90IHJlY2VpdmUgZXZlbnRzCisJCQkJCQkJCWNvbnRpbnVlOworCQkJCQkJCX0gaWYgKGNsaWVudC5nZXRJZCgpLmVxdWFscygKKwkJCQkJCQkJCWN1cnJlbnQuZ2V0Q2xpZW50KCkuZ2V0SWQoKSkpIHsKKwkJCQkJCQkJLy8gZG9uJ3Qgc2VuZCBiYWNrIHRvIHNhbWUgdXNlcgorCQkJCQkJCQljb250aW51ZTsKKwkJCQkJCQl9CisJCQkJCQkJKChJU2VydmljZUNhcGFibGVDb25uZWN0aW9uKSBjb25uKS5pbnZva2UoCisJCQkJCQkJCSJzZW5kVmFyc1RvV2hpdGVib2FyZEJ5SWQiLAorCQkJCQkJCQkJbmV3IE9iamVjdFtdIHsgc2hvd0RyYXdTdGF0dXMgPyBjdXJyZW50Q2xpZW50IDogbnVsbCwgc2VuZE9iamVjdCB9LCAKKwkJCQkJCQkJCQl0aGlzKTsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCX0KKwkJCX0KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltzZW5kVmFyc0J5V2hpdGVib2FyZElkXSIsIGVycik7CisJCX0KKwl9CisKKwlwdWJsaWMgc3luY2hyb25pemVkIGludCBzZW5kVmFyc01vZGVyYXRvckdlbmVyYWwoT2JqZWN0IHZhcnMpIHsKKwkJbG9nLmRlYnVnKCIqLi4qc2VuZFZhcnM6ICIgKyB2YXJzKTsKKwkJdHJ5IHsKKwkJCUlDb25uZWN0aW9uIGN1cnJlbnQgPSBSZWQ1LmdldENvbm5lY3Rpb25Mb2NhbCgpOworCQkJQ2xpZW50IGN1cnJlbnRDbGllbnQgPSB0aGlzLnNlc3Npb25NYW5hZ2VyCisJCQkJCS5nZXRDbGllbnRCeVN0cmVhbUlkKGN1cnJlbnQuZ2V0Q2xpZW50KCkuZ2V0SWQoKSwgbnVsbCk7CisJCQkvLyBMb25nIHJvb21faWQgPSBjdXJyZW50Q2xpZW50LmdldFJvb21faWQoKTsKKworCQkJbG9nLmRlYnVnKCIqKioqKiBpZDogIiArIGN1cnJlbnRDbGllbnQuZ2V0U3RyZWFtaWQoKSk7CisKKwkJCWJvb2xlYW4gaXNtb2QgPSBjdXJyZW50Q2xpZW50LmdldElzTW9kKCk7CisKKwkJCWlmIChpc21vZCkgeworCQkJCWxvZy5kZWJ1ZygiQ3VycmVudFNjb3BlIDoiICsgY3VycmVudC5nZXRTY29wZSgpLmdldE5hbWUoKSk7CisJCQkJLy8gU2VuZCB0byBhbGwgQ2xpZW50cyBvZiB0aGUgc2FtZSBTY29wZQorCQkJCUNvbGxlY3Rpb248U2V0PElDb25uZWN0aW9uPj4gY29uQ29sbGVjdGlvbiA9IGN1cnJlbnQuZ2V0U2NvcGUoKQorCQkJCQkJLmdldENvbm5lY3Rpb25zKCk7CisJCQkJZm9yIChTZXQ8SUNvbm5lY3Rpb24+IGNvbnNldCA6IGNvbkNvbGxlY3Rpb24pIHsKKwkJCQkJZm9yIChJQ29ubmVjdGlvbiBjb25uIDogY29uc2V0KSB7CisJCQkJCQlpZiAoY29ubiAhPSBudWxsKSB7CisJCQkJCQkJaWYgKGNvbm4gaW5zdGFuY2VvZiBJU2VydmljZUNhcGFibGVDb25uZWN0aW9uKSB7CisJCQkJCQkJCUlDbGllbnQgY2xpZW50ID0gY29ubi5nZXRDbGllbnQoKTsKKwkJCQkJCQkJaWYgKFNlc3Npb25WYXJpYWJsZXNVdGlsLmlzU2NyZWVuQ2xpZW50KGNsaWVudCkpIHsKKwkJCQkJCQkJCS8vIHNjcmVlbiBzaGFyaW5nIGNsaWVudHMgZG8gbm90IHJlY2VpdmUgZXZlbnRzCisJCQkJCQkJCQljb250aW51ZTsKKwkJCQkJCQkJfSBlbHNlIGlmIChTZXNzaW9uVmFyaWFibGVzVXRpbC5pc0FWQ2xpZW50KGNsaWVudCkpIHsKKwkJCQkJCQkJCS8vIEFWQ2xpZW50cyBvciBwb3RlbnRpYWwgQVZDbGllbnRzIGRvIG5vdCByZWNlaXZlIGV2ZW50cworCQkJCQkJCQkJY29udGludWU7CisJCQkJCQkJCX0gaWYgKGNsaWVudC5nZXRJZCgpLmVxdWFscygKKwkJCQkJCQkJCQljdXJyZW50LmdldENsaWVudCgpLmdldElkKCkpKSB7CisJCQkJCQkJCQkvLyBkb24ndCBzZW5kIGJhY2sgdG8gc2FtZSB1c2VyCisJCQkJCQkJCQljb250aW51ZTsKKwkJCQkJCQkJfQorCQkJCQkJCQkoKElTZXJ2aWNlQ2FwYWJsZUNvbm5lY3Rpb24pIGNvbm4pCisJCQkJCQkJCQkJLmludm9rZSgic2VuZFZhcnNUb01vZGVyYXRvckdlbmVyYWwiLAorCQkJCQkJCQkJCQkJbmV3IE9iamVjdFtdIHsgdmFycyB9LHRoaXMpOworCQkJCQkJCX0KKwkJCQkJCX0KKwkJCQkJfQorCQkJCX0KKwkJCQlyZXR1cm4gMTsKKwkJCX0gZWxzZSB7CisJCQkJLy8gbG9nLmRlYnVnKCIqLi4qeW91IGFyZSBub3QgYWxsb3dlZCB0byBzZW5kOiAiK2lzbW9kKTsKKwkJCQlyZXR1cm4gLTE7CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW3NlbmRWYXJzTW9kZXJhdG9yR2VuZXJhbF0iLCBlcnIpOworCQl9CisJCXJldHVybiAtMTsKKwl9CisKKwlwdWJsaWMgc3luY2hyb25pemVkIGludCBzZW5kTWVzc2FnZShPYmplY3QgbmV3TWVzc2FnZSkgeworCQl0cnkgeworCQkJCisJCQlzeW5jTWVzc2FnZVRvQ3VycmVudFNjb3BlKCJzZW5kVmFyc1RvTWVzc2FnZSIsIG5ld01lc3NhZ2UsIGZhbHNlKTsKKwkJCQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltzZW5kTWVzc2FnZV0iLCBlcnIpOworCQl9CisJCXJldHVybiAxOworCX0KKwkKKwlwdWJsaWMgc3luY2hyb25pemVkIGludCBzZW5kTWVzc2FnZUFsbChPYmplY3QgbmV3TWVzc2FnZSkgeworCQl0cnkgeworCQkJCisJCQlzeW5jTWVzc2FnZVRvQ3VycmVudFNjb3BlKCJzZW5kVmFyc1RvTWVzc2FnZSIsIG5ld01lc3NhZ2UsIHRydWUpOworCQkJCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW3NlbmRNZXNzYWdlXSIsIGVycik7CisJCX0KKwkJcmV0dXJuIDE7CisJfQorCisJLyoqCisJICogc2VuZCBzdGF0dXMgZm9yIHNoYXJlZCBicm93c2luZyB0byBhbGwgbWVtYmVycyBleGNlcHQgc2VsZgorCSAqIEBwYXJhbSBuZXdNZXNzYWdlCisJICogQHJldHVybiAxCisJICovCisJQFN1cHByZXNzV2FybmluZ3MoeyAicmF3dHlwZXMiIH0pCisJcHVibGljIHN5bmNocm9uaXplZCBpbnQgc2VuZEJyb3dzZXJNZXNzYWdlVG9NZW1iZXJzKE9iamVjdCBuZXdNZXNzYWdlKSB7CisJCXRyeSB7CisJCQlJQ29ubmVjdGlvbiBjdXJyZW50ID0gUmVkNS5nZXRDb25uZWN0aW9uTG9jYWwoKTsKKworCQkJTGlzdCBuZXdNZXNzYWdlTGlzdCA9IChMaXN0KSBuZXdNZXNzYWdlOworCisJCQlTdHJpbmcgYWN0aW9uID0gbmV3TWVzc2FnZUxpc3QuZ2V0KDApLnRvU3RyaW5nKCk7CisKKwkJCUJyb3dzZXJTdGF0dXMgYnJvd3NlclN0YXR1cyA9IChCcm93c2VyU3RhdHVzKSBjdXJyZW50LmdldFNjb3BlKCkKKwkJCQkJLmdldEF0dHJpYnV0ZSgiYnJvd3NlclN0YXR1cyIpOworCisJCQlpZiAoYnJvd3NlclN0YXR1cyA9PSBudWxsKSB7CisJCQkJYnJvd3NlclN0YXR1cyA9IG5ldyBCcm93c2VyU3RhdHVzKCk7CisJCQl9CisKKwkJCWlmIChhY3Rpb24uZXF1YWxzKCJpbml0QnJvd3NlciIpIHx8IGFjdGlvbi5lcXVhbHMoIm5ld0Jyb3dzZXJVUkwiKSkgeworCQkJCWJyb3dzZXJTdGF0dXMuc2V0QnJvd3NlckluaXRlZCh0cnVlKTsKKwkJCQlicm93c2VyU3RhdHVzLnNldEN1cnJlbnRVUkwobmV3TWVzc2FnZUxpc3QuZ2V0KDEpLnRvU3RyaW5nKCkpOworCQkJfSBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKCJjbG9zZUJyb3dzZXJVUkwiKSkgeworCQkJCWJyb3dzZXJTdGF0dXMuc2V0QnJvd3NlckluaXRlZChmYWxzZSk7CisJCQl9CisKKwkJCWN1cnJlbnQuZ2V0U2NvcGUoKS5zZXRBdHRyaWJ1dGUoImJyb3dzZXJTdGF0dXMiLCBicm93c2VyU3RhdHVzKTsKKwkJCQorCQkJc3luY01lc3NhZ2VUb0N1cnJlbnRTY29wZSgic2VuZFZhcnNUb01lc3NhZ2UiLCBuZXdNZXNzYWdlLCBmYWxzZSk7CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbc2VuZE1lc3NhZ2VdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gMTsKKwl9CisKKwkvKioKKwkgKiB3cmFwcGVyIG1ldGhvZAorCSAqIEBwYXJhbSBuZXdNZXNzYWdlCisJICovCisJcHVibGljIHN5bmNocm9uaXplZCB2b2lkIHNlbmRNZXNzYWdlVG9NZW1iZXJzKE9iamVjdCBuZXdNZXNzYWdlKSB7CisJCS8vU3luYyB0byBhbGwgdXNlcnMgb2YgY3VycmVudCBzY29wZQorCQlzeW5jTWVzc2FnZVRvQ3VycmVudFNjb3BlKCJzZW5kVmFyc1RvTWVzc2FnZSIsIG5ld01lc3NhZ2UsIGZhbHNlKTsKKwl9CisJCisJLyoqCisJICogR2VuZXJhbCBzeW5jIG1lY2hhbmlzbSBmb3IgYWxsIG1lc3NhZ2VzIHRoYXQgYXJlIHNlbmQgZnJvbSB3aXRoaW4gdGhlIAorCSAqIHNjb3BlIG9mIHRoZSBjdXJyZW50IGNsaWVudCwgYnV0OgorCSAqIDx1bD4KKwkgKiA8bGk+b3B0aW9uYWxseSBkbyBub3Qgc2VuZCB0byBzZWxmIChzZWUgcGFyYW06IHNlbmRTZWxmKTwvbGk+CisJICogPGxpPmRvIG5vdCBzZW5kIHRvIGNsaWVudHMgdGhhdCBhcmUgc2NyZWVuIHNoYXJpbmcgY2xpZW50czwvbGk+CisJICogPGxpPmRvIG5vdCBzZW5kIHRvIGNsaWVudHMgdGhhdCBhcmUgYXVkaW8vdmlkZW8gY2xpZW50cyAob3IgcG90ZW50aWFsbHkgb25lcyk8L2xpPgorCSAqIDxsaT5kbyBub3Qgc2VuZCB0byBjb25uZWN0aW9ucyB3aGVyZSBubyBSb29tQ2xpZW50IGlzIHJlZ2lzdGVyZWQ8L2xpPgorCSAqIDwvdWw+CisJICogIAorCSAqIEBwYXJhbSByZW1vdGVNZXRob2ROYW1lIFRoZSBtZXRob2QgdG8gYmUgY2FsbGVkCisJICogQHBhcmFtIG5ld01lc3NhZ2UgcGFyYW1ldGVycworCSAqIEBwYXJhbSBzZW5kU2VsZiBzZW5kIHRvIHRoZSBjdXJyZW50IGNsaWVudCBhcyB3ZWxsCisJICovCisJcHVibGljIHN5bmNocm9uaXplZCB2b2lkIHN5bmNNZXNzYWdlVG9DdXJyZW50U2NvcGUoU3RyaW5nIHJlbW90ZU1ldGhvZE5hbWUsIE9iamVjdCBuZXdNZXNzYWdlLCBib29sZWFuIHNlbmRTZWxmKSB7CisJCXN5bmNNZXNzYWdlVG9DdXJyZW50U2NvcGUocmVtb3RlTWV0aG9kTmFtZSwgbmV3TWVzc2FnZSwgc2VuZFNlbGYsIGZhbHNlKTsKKwl9CisJCisJLyoqCisJICogT25seSB0ZW1wb3JhcnkgZm9yIGxvYWQgdGVzdCwgd2l0aCByZXR1cm4gYXJndW1lbnQgZm9yIHRoZSBjbGllbnQgdG8gaGF2ZSBhIHJlc3VsdAorCSAqIAorCSAqIEBwYXJhbSByZW1vdGVNZXRob2ROYW1lCisJICogQHBhcmFtIG5ld01lc3NhZ2UKKwkgKiBAcGFyYW0gc2VuZFNlbGYKKwkgKiBAcmV0dXJuIHRydWUKKwkgKi8KKwlARGVwcmVjYXRlZAorCXB1YmxpYyBzeW5jaHJvbml6ZWQgYm9vbGVhbiBsb2FkVGVzdFN5bmNNZXNzYWdlKFN0cmluZyByZW1vdGVNZXRob2ROYW1lLCBPYmplY3QgbmV3TWVzc2FnZSwgYm9vbGVhbiBzZW5kU2VsZikgeworCQlzeW5jTWVzc2FnZVRvQ3VycmVudFNjb3BlKHJlbW90ZU1ldGhvZE5hbWUsIG5ld01lc3NhZ2UsIHNlbmRTZWxmLCBmYWxzZSk7CisJCXJldHVybiB0cnVlOworCX0KKwkKKwkKKwkvKioKKwkgKiBHZW5lcmFsIHN5bmMgbWVjaGFuaXNtIGZvciBhbGwgbWVzc2FnZXMgdGhhdCBhcmUgc2VuZCBmcm9tIHdpdGhpbiB0aGUgCisJICogc2NvcGUgb2YgdGhlIGN1cnJlbnQgY2xpZW50LCBidXQ6CisJICogPHVsPgorCSAqIDxsaT5vcHRpb25hbGx5IGRvIG5vdCBzZW5kIHRvIHNlbGYgKHNlZSBwYXJhbTogc2VuZFNlbGYpPC9saT4KKwkgKiA8bGk+c2VuZCB0byBjbGllbnRzIHRoYXQgYXJlIHNjcmVlbiBzaGFyaW5nIGNsaWVudHMgYmFzZWQgb24gcGFyYW1ldGVyPC9saT4KKwkgKiA8bGk+ZG8gbm90IHNlbmQgdG8gY2xpZW50cyB0aGF0IGFyZSBhdWRpby92aWRlbyBjbGllbnRzIChvciBwb3RlbnRpYWxseSBvbmVzKTwvbGk+CisJICogPGxpPmRvIG5vdCBzZW5kIHRvIGNvbm5lY3Rpb25zIHdoZXJlIG5vIFJvb21DbGllbnQgaXMgcmVnaXN0ZXJlZDwvbGk+CisJICogPC91bD4KKwkgKiAgCisJICogQHBhcmFtIHJlbW90ZU1ldGhvZE5hbWUgVGhlIG1ldGhvZCB0byBiZSBjYWxsZWQKKwkgKiBAcGFyYW0gbmV3TWVzc2FnZSBwYXJhbWV0ZXJzCisJICogQHBhcmFtIHNlbmRTZWxmIHNlbmQgdG8gdGhlIGN1cnJlbnQgY2xpZW50IGFzIHdlbGwKKwkgKiBAcGFyYW0gc2VuZFNjcmVlbiBzZW5kIHRvIHRoZSBjdXJyZW50IGNsaWVudCBhcyB3ZWxsCisJICovCisJcHVibGljIHN5bmNocm9uaXplZCB2b2lkIHN5bmNNZXNzYWdlVG9DdXJyZW50U2NvcGUoU3RyaW5nIHJlbW90ZU1ldGhvZE5hbWUsIE9iamVjdCBuZXdNZXNzYWdlLCBib29sZWFuIHNlbmRTZWxmLCBib29sZWFuIHNlbmRTY3JlZW4pIHsKKwkJdHJ5IHsKKwkJCUlDb25uZWN0aW9uIGN1cnJlbnQgPSBSZWQ1LmdldENvbm5lY3Rpb25Mb2NhbCgpOworCisJCQkvLyBTZW5kIHRvIGFsbCBDbGllbnRzIG9mIHRoYXQgU2NvcGUoUm9vbSkKKwkJCUNvbGxlY3Rpb248U2V0PElDb25uZWN0aW9uPj4gY29uQ29sbGVjdGlvbiA9IGN1cnJlbnQuZ2V0U2NvcGUoKQorCQkJCQkuZ2V0Q29ubmVjdGlvbnMoKTsKKwkJCWZvciAoU2V0PElDb25uZWN0aW9uPiBjb25zZXQgOiBjb25Db2xsZWN0aW9uKSB7CisJCQkJZm9yIChJQ29ubmVjdGlvbiBjb25uIDogY29uc2V0KSB7CisJCQkJCWlmIChjb25uICE9IG51bGwpIHsKKwkJCQkJCWlmIChjb25uIGluc3RhbmNlb2YgSVNlcnZpY2VDYXBhYmxlQ29ubmVjdGlvbikgeworCQkJCQkJCUlDbGllbnQgY2xpZW50ID0gY29ubi5nZXRDbGllbnQoKTsKKwkJCQkJCQlpZiAoIXNlbmRTY3JlZW4gJiYgU2Vzc2lvblZhcmlhYmxlc1V0aWwuaXNTY3JlZW5DbGllbnQoY2xpZW50KSkgeworCQkJCQkJCQkvLyBzY3JlZW4gc2hhcmluZyBjbGllbnRzIGRvIG5vdCByZWNlaXZlIGV2ZW50cworCQkJCQkJCQljb250aW51ZTsKKwkJCQkJCQl9IGVsc2UgaWYgKFNlc3Npb25WYXJpYWJsZXNVdGlsLmlzQVZDbGllbnQoY2xpZW50KSkgeworCQkJCQkJCQkvLyBBVkNsaWVudHMgb3IgcG90ZW50aWFsIEFWQ2xpZW50cyBkbyBub3QgcmVjZWl2ZSBldmVudHMKKwkJCQkJCQkJY29udGludWU7CisJCQkJCQkJfSBlbHNlIGlmICghc2VuZFNlbGYgJiYgY2xpZW50LmdldElkKCkuZXF1YWxzKAorCQkJCQkJCQkJY3VycmVudC5nZXRDbGllbnQoKS5nZXRJZCgpKSkgeworCQkJCQkJCQkvL0RvIG5vdCBzZW5kIGJhY2sgdG8gc2VsZgorCQkJCQkJCQljb250aW51ZTsKKwkJCQkJCQl9CisJCQkJCQkJKChJU2VydmljZUNhcGFibGVDb25uZWN0aW9uKSBjb25uKS5pbnZva2UoCisJCQkJCQkJCQlyZW1vdGVNZXRob2ROYW1lLCBuZXcgT2JqZWN0W10geyBuZXdNZXNzYWdlIH0sIHRoaXMpOworCQkJCQkJCQorCQkJCQkJfQorCQkJCQl9CisJCQkJfQorCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltzeW5jTWVzc2FnZVRvQ3VycmVudFNjb3BlXSIsIGVycik7CisJCX0KKwl9CisKKwkvKioKKwkgKiB3cmFwcGVyIG1ldGhvZAorCSAqIEBwYXJhbSBuZXdNZXNzYWdlCisJICogQHJldHVybiAxIGluIGNhc2Ugb2Ygc3VjY2VzcywgLTEgb3RoZXJ3aXNlCisJICovCisJcHVibGljIHN5bmNocm9uaXplZCBpbnQgc2VuZE1lc3NhZ2VXaXRoQ2xpZW50KE9iamVjdCBuZXdNZXNzYWdlKSB7CisJCXRyeSB7CisJCQlzZW5kTWVzc2FnZVdpdGhDbGllbnRXaXRoU3luY09iamVjdChuZXdNZXNzYWdlLCB0cnVlKTsKKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltzZW5kTWVzc2FnZVdpdGhDbGllbnRdICIsIGVycik7CisJCQlyZXR1cm4gLTE7CisJCX0KKwkJcmV0dXJuIDE7CisJfQorCQorCS8qKgorCSAqIHdyYXBwZXIgbWV0aG9kCisJICogQHBhcmFtIG5ld01lc3NhZ2UKKwkgKiBAcGFyYW0gc3luYworCSAqIEByZXR1cm4gMSBpbiBjYXNlIG9mIHN1Y2Nlc3MsIC0xIG90aGVyd2lzZQorCSAqLworCXB1YmxpYyBzeW5jaHJvbml6ZWQgaW50IHNlbmRNZXNzYWdlV2l0aENsaWVudFdpdGhTeW5jT2JqZWN0KE9iamVjdCBuZXdNZXNzYWdlLCBib29sZWFuIHN5bmMpIHsKKwkJdHJ5IHsKKwkJCUlDb25uZWN0aW9uIGN1cnJlbnQgPSBSZWQ1LmdldENvbm5lY3Rpb25Mb2NhbCgpOworCQkJQ2xpZW50IGN1cnJlbnRDbGllbnQgPSB0aGlzLnNlc3Npb25NYW5hZ2VyCisJCQkJCS5nZXRDbGllbnRCeVN0cmVhbUlkKGN1cnJlbnQuZ2V0Q2xpZW50KCkuZ2V0SWQoKSwgbnVsbCk7CisKKwkJCUhhc2hNYXA8U3RyaW5nLCBPYmplY3Q+IGhzbSA9IG5ldyBIYXNoTWFwPFN0cmluZywgT2JqZWN0PigpOworCQkJaHNtLnB1dCgiY2xpZW50IiwgY3VycmVudENsaWVudCk7CisJCQloc20ucHV0KCJtZXNzYWdlIiwgbmV3TWVzc2FnZSk7CisJCQkKKwkJCS8vU3luYyB0byBhbGwgdXNlcnMgb2YgY3VycmVudCBzY29wZQorCQkJc3luY01lc3NhZ2VUb0N1cnJlbnRTY29wZSgic2VuZFZhcnNUb01lc3NhZ2VXaXRoQ2xpZW50IiwgaHNtLCBzeW5jKTsKKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltzZW5kTWVzc2FnZVdpdGhDbGllbnRdICIsIGVycik7CisJCQlyZXR1cm4gLTE7CisJCX0KKwkJcmV0dXJuIDE7CisJfQorCisJLyoqCisJICogRnVuY3Rpb24gaXMgdXNlZCB0byBzZW5kIHRoZSBraWNrIFRyaWdnZXIgYXQgdGhlIG1vbWVudCwgCisJICogaXQgc2VuZHMgYSBnZW5lcmFsIG1lc3NhZ2UgdG8gYSBzcGVjaWZpYyBjbGllbnRJZAorCSAqIAorCSAqIEBwYXJhbSBuZXdNZXNzYWdlCisJICogQHBhcmFtIGNsaWVudElkCisJICogQHJldHVybiAxIGluIGNhc2Ugb2Ygc3VjY2VzcywgLTEgb3RoZXJ3aXNlCisJICovCisJcHVibGljIHN5bmNocm9uaXplZCBpbnQgc2VuZE1lc3NhZ2VCeUlkKE9iamVjdCBuZXdNZXNzYWdlLCBTdHJpbmcgY2xpZW50SWQsCisJCQlJU2NvcGUgc2NvcGUpIHsKKwkJdHJ5IHsKKwkJCWxvZy5kZWJ1ZygiIyMjIHNlbmRNZXNzYWdlQnlJZCAjIyMiICsgY2xpZW50SWQpOworCisJCQlIYXNoTWFwPFN0cmluZywgT2JqZWN0PiBoc20gPSBuZXcgSGFzaE1hcDxTdHJpbmcsIE9iamVjdD4oKTsKKwkJCWhzbS5wdXQoIm1lc3NhZ2UiLCBuZXdNZXNzYWdlKTsKKworCQkJLy8gYnJvYWRjYXN0IE1lc3NhZ2UgdG8gc3BlY2lmaWMgdXNlciB3aXRoIGlkIGluc2lkZSB0aGUgc2FtZSBTY29wZQorCQkJQ29sbGVjdGlvbjxTZXQ8SUNvbm5lY3Rpb24+PiBjb25Db2xsZWN0aW9uID0gc2NvcGUuZ2V0Q29ubmVjdGlvbnMoKTsKKworCQkJZm9yIChTZXQ8SUNvbm5lY3Rpb24+IGNvbnNldCA6IGNvbkNvbGxlY3Rpb24pIHsKKwkJCQlmb3IgKElDb25uZWN0aW9uIGNvbm4gOiBjb25zZXQpIHsKKwkJCQkJaWYgKGNvbm4gIT0gbnVsbCkgeworCQkJCQkJaWYgKGNvbm4gaW5zdGFuY2VvZiBJU2VydmljZUNhcGFibGVDb25uZWN0aW9uKSB7CisJCQkJCQkJaWYgKGNvbm4uZ2V0Q2xpZW50KCkuZ2V0SWQoKS5lcXVhbHMoY2xpZW50SWQpKSB7CisJCQkJCQkJCSgoSVNlcnZpY2VDYXBhYmxlQ29ubmVjdGlvbikgY29ubikuaW52b2tlKAorCQkJCQkJCQkJCSJzZW5kVmFyc1RvTWVzc2FnZVdpdGhDbGllbnQiLAorCQkJCQkJCQkJCW5ldyBPYmplY3RbXSB7IGhzbSB9LCB0aGlzKTsKKwkJCQkJCQl9CisJCQkJCQl9CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW3NlbmRNZXNzYWdlV2l0aENsaWVudF0gIiwgZXJyKTsKKwkJCXJldHVybiAtMTsKKwkJfQorCQlyZXR1cm4gMTsKKwl9CisKKwkvKioKKwkgKiBTZW5kcyBhIG1lc3NhZ2UgdG8gYSB1c2VyIGluIHRoZSBzYW1lIHJvb20gYnkgaXRzIGNsaWVudElkCisJICogCisJICogQHBhcmFtIG5ld01lc3NhZ2UKKwkgKiBAcGFyYW0gY2xpZW50SWQKKwkgKiBAcmV0dXJuIDEgaW4gY2FzZSBvZiBubyBleGNlcHRpb25zLCAtMSBvdGhlcndpc2UKKwkgKi8KKwlwdWJsaWMgc3luY2hyb25pemVkIGludCBzZW5kTWVzc2FnZVdpdGhDbGllbnRCeUlkKE9iamVjdCBuZXdNZXNzYWdlLAorCQkJU3RyaW5nIGNsaWVudElkKSB7CisJCXRyeSB7CisJCQlJQ29ubmVjdGlvbiBjdXJyZW50ID0gUmVkNS5nZXRDb25uZWN0aW9uTG9jYWwoKTsKKwkJCUNsaWVudCBjdXJyZW50Q2xpZW50ID0gdGhpcy5zZXNzaW9uTWFuYWdlcgorCQkJCQkuZ2V0Q2xpZW50QnlTdHJlYW1JZChjdXJyZW50LmdldENsaWVudCgpLmdldElkKCksIG51bGwpOworCisJCQlIYXNoTWFwPFN0cmluZywgT2JqZWN0PiBoc20gPSBuZXcgSGFzaE1hcDxTdHJpbmcsIE9iamVjdD4oKTsKKwkJCWhzbS5wdXQoImNsaWVudCIsIGN1cnJlbnRDbGllbnQpOworCQkJaHNtLnB1dCgibWVzc2FnZSIsIG5ld01lc3NhZ2UpOworCisJCQkvLyBicm9hZGNhc3QgTWVzc2FnZSB0byBzcGVjaWZpYyB1c2VyIHdpdGggaWQgaW5zaWRlIHRoZSBzYW1lIFNjb3BlCisJCQlDb2xsZWN0aW9uPFNldDxJQ29ubmVjdGlvbj4+IGNvbkNvbGxlY3Rpb24gPSBjdXJyZW50LmdldFNjb3BlKCkKKwkJCQkJLmdldENvbm5lY3Rpb25zKCk7CisJCQlmb3IgKFNldDxJQ29ubmVjdGlvbj4gY29uc2V0IDogY29uQ29sbGVjdGlvbikgeworCQkJCWZvciAoSUNvbm5lY3Rpb24gY29ubiA6IGNvbnNldCkgeworCQkJCQlpZiAoY29ubi5nZXRDbGllbnQoKS5nZXRJZCgpLmVxdWFscyhjbGllbnRJZCkpIHsKKwkJCQkJCSgoSVNlcnZpY2VDYXBhYmxlQ29ubmVjdGlvbikgY29ubikuaW52b2tlKAorCQkJCQkJCQkic2VuZFZhcnNUb01lc3NhZ2VXaXRoQ2xpZW50IiwKKwkJCQkJCQkJbmV3IE9iamVjdFtdIHsgaHNtIH0sIHRoaXMpOworCQkJCQl9CisJCQkJfQorCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltzZW5kTWVzc2FnZVdpdGhDbGllbnRdICIsIGVycik7CisJCQlyZXR1cm4gLTE7CisJCX0KKwkJcmV0dXJuIDE7CisJfQorCQorCXB1YmxpYyBzeW5jaHJvbml6ZWQgdm9pZCBzZW5kVXBsb2FkQ29tcGxldE1lc3NhZ2VCeVB1YmxpY1NJRChVcGxvYWRDb21wbGV0ZU1lc3NhZ2UgbWVzc2FnZSwgU3RyaW5nIHB1YmxpY1NJRCkgeworCQl0cnkgeworCQkJLy9pZiB0aGUgdXBsb2FkIGlzIGxvY2FsbHksIGp1c3QgcHJvY2VlZCB0byB0aGUgbm9ybWFsIGZ1bmN0aW9uCisJCQkvL1NlYXJjaCBmb3IgUm9vbUNsaWVudCBvbiBjdXJyZW50IHNlcnZlciAoc2VydmVySWQgPT0gbnVsbCBtZWFucyBpdCB3aWxsIGxvb2sgb24gdGhlIG1hc3RlciBmb3IgdGhlIFJvb21DbGllbnQpCisJCQlDbGllbnQgY3VycmVudENsaWVudCA9IHRoaXMuc2Vzc2lvbk1hbmFnZXIKKwkJCQkJCQkJLmdldENsaWVudEJ5UHVibGljU0lEKHB1YmxpY1NJRCwgZmFsc2UsIG51bGwpOworCQkJCisJCQlpZiAoY3VycmVudENsaWVudCAhPSBudWxsKSB7CisJCQkJc2VuZE1lc3NhZ2VXaXRoQ2xpZW50QnlQdWJsaWNTSUQobWVzc2FnZSwgcHVibGljU0lEKTsKKwkJCX0gZWxzZSB7CisJCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbigKKwkJCQkJCSJDb3VsZCBub3QgRmluZCBSb29tQ2xpZW50IG9uIExpc3QgcHVibGljU0lEOiAiKyBwdWJsaWNTSUQpOworCQkJfQorCQkJCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW3NlbmRVcGxvYWRDb21wbGV0TWVzc2FnZUJ5UHVibGljU0lEXSAiLCBlcnIpOworCQl9CisJfQorCQorCisJcHVibGljIHN5bmNocm9uaXplZCB2b2lkIHNlbmRNZXNzYWdlV2l0aENsaWVudEJ5UHVibGljU0lEKE9iamVjdCBtZXNzYWdlLAorCQkJU3RyaW5nIHB1YmxpY1NJRCkgeworCQl0cnkgeworCQkJLy8gQXBwbGljYXRpb25Db250ZXh0IGFwcEN0eCA9IGdldENvbnRleHQoKS5nZXRBcHBsaWNhdGlvbkNvbnRleHQoKTsKKwkJCUlTY29wZSBnbG9iYWxTY29wZSA9IGdldENvbnRleHQoKS5nZXRHbG9iYWxTY29wZSgpOworCisJCQlJU2NvcGUgd2ViQXBwS2V5U2NvcGUgPSBnbG9iYWxTY29wZQorCQkJCQkuZ2V0U2NvcGUoT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCisJCQkvLyBsb2cuZGVidWcoIndlYkFwcEtleVNjb3BlICIrd2ViQXBwS2V5U2NvcGUpOworCisJCQkvLyBHZXQgUm9vbSBJZCB0byBzZW5kIGl0IHRvIHRoZSBjb3JyZWN0IFNjb3BlCisJCQlDbGllbnQgY3VycmVudENsaWVudCA9IHRoaXMuc2Vzc2lvbk1hbmFnZXIKKwkJCQkJLmdldENsaWVudEJ5UHVibGljU0lEKHB1YmxpY1NJRCwgZmFsc2UsIG51bGwpOworCisJCQlpZiAoY3VycmVudENsaWVudCA9PSBudWxsKSB7CisJCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbigKKwkJCQkJCSJDb3VsZCBub3QgRmluZCBSb29tQ2xpZW50IG9uIExpc3QgcHVibGljU0lEOiAiCisJCQkJCQkJCSsgcHVibGljU0lEKTsKKwkJCX0KKwkJCS8vIGRlZmF1bHQgU2NvcGUgTmFtZQorCQkJU3RyaW5nIHNjb3BlTmFtZSA9ICJoaWJlcm5hdGUiOworCQkJaWYgKGN1cnJlbnRDbGllbnQuZ2V0Um9vbV9pZCgpICE9IG51bGwpIHsKKwkJCQlzY29wZU5hbWUgPSBjdXJyZW50Q2xpZW50LmdldFJvb21faWQoKS50b1N0cmluZygpOworCQkJfQorCisJCQlJU2NvcGUgc2NvcGVIaWJlcm5hdGUgPSB3ZWJBcHBLZXlTY29wZS5nZXRTY29wZShzY29wZU5hbWUpOworCisJCQkvLyBsb2cuZGVidWcoInNjb3BlSGliZXJuYXRlICIrc2NvcGVIaWJlcm5hdGUpOworCisJCQlpZiAoc2NvcGVIaWJlcm5hdGUgIT0gbnVsbCkgeworCQkJCS8vIE5vdGlmeSB0aGUgY2xpZW50cyBvZiB0aGUgc2FtZSBzY29wZSAocm9vbSkgd2l0aCB1c2VyX2lkCisKKwkJCQlDb2xsZWN0aW9uPFNldDxJQ29ubmVjdGlvbj4+IGNvbkNvbGxlY3Rpb24gPSB3ZWJBcHBLZXlTY29wZQorCQkJCQkJLmdldFNjb3BlKHNjb3BlTmFtZSkuZ2V0Q29ubmVjdGlvbnMoKTsKKwkJCQlmb3IgKFNldDxJQ29ubmVjdGlvbj4gY29uc2V0IDogY29uQ29sbGVjdGlvbikgeworCQkJCQlmb3IgKElDb25uZWN0aW9uIGNvbm4gOiBjb25zZXQpIHsKKwkJCQkJCUlDbGllbnQgY2xpZW50ID0gY29ubi5nZXRDbGllbnQoKTsKKwkJCQkJCWlmIChTZXNzaW9uVmFyaWFibGVzVXRpbC5pc1NjcmVlbkNsaWVudChjbGllbnQpKSB7CisJCQkJCQkJLy8gc2NyZWVuIHNoYXJpbmcgY2xpZW50cyBkbyBub3QgcmVjZWl2ZSBldmVudHMKKwkJCQkJCQljb250aW51ZTsKKwkJCQkJCX0gZWxzZSBpZiAoU2Vzc2lvblZhcmlhYmxlc1V0aWwuaXNBVkNsaWVudChjbGllbnQpKSB7CisJCQkJCQkJLy8gQVZDbGllbnRzIG9yIHBvdGVudGlhbCBBVkNsaWVudHMgZG8gbm90IHJlY2VpdmUgZXZlbnRzCisJCQkJCQkJY29udGludWU7CisJCQkJCQl9CisJCQkJCQkKKwkJCQkJCWlmIChTZXNzaW9uVmFyaWFibGVzVXRpbC5nZXRQdWJsaWNTSUQoY2xpZW50KS5lcXVhbHMocHVibGljU0lEKSkgeworCQkJCQkJCS8vIGxvZy5kZWJ1ZygiSVMgRVFVQUwgIik7CisJCQkJCQkJKChJU2VydmljZUNhcGFibGVDb25uZWN0aW9uKSBjb25uKQorCQkJCQkJCQkJLmludm9rZSgibmV3TWVzc2FnZUJ5Um9vbUFuZERvbWFpbiIsCisJCQkJCQkJCQkJbmV3IE9iamVjdFtdIHsgbWVzc2FnZSB9LCB0aGlzKTsKKwkJCQkJCX0KKwkJCQkJfQorCQkJCX0KKworCQkJfSBlbHNlIHsKKwkJCQkvLyBTY29wZSBub3QgeWV0IHN0YXJ0ZWQKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbc2VuZE1lc3NhZ2VXaXRoQ2xpZW50XSAiLCBlcnIpOworCQl9CisJfQorCisJcHVibGljIHN5bmNocm9uaXplZCB2b2lkIHNlbmRNZXNzYWdlV2l0aENsaWVudEJ5UHVibGljU0lET3JVc2VyKAorCQkJT2JqZWN0IG1lc3NhZ2UsIFN0cmluZyBwdWJsaWNTSUQsIExvbmcgdXNlcl9pZCkgeworCQl0cnkgeworCQkJLy8gQXBwbGljYXRpb25Db250ZXh0IGFwcEN0eCA9IGdldENvbnRleHQoKS5nZXRBcHBsaWNhdGlvbkNvbnRleHQoKTsKKworCQkJSVNjb3BlIGdsb2JhbFNjb3BlID0gZ2V0Q29udGV4dCgpLmdldEdsb2JhbFNjb3BlKCk7CisKKwkJCUlTY29wZSB3ZWJBcHBLZXlTY29wZSA9IGdsb2JhbFNjb3BlCisJCQkJCS5nZXRTY29wZShPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisKKwkJCS8vIGxvZy5kZWJ1Zygid2ViQXBwS2V5U2NvcGUgIit3ZWJBcHBLZXlTY29wZSk7CisKKwkJCS8vIEdldCBSb29tIElkIHRvIHNlbmQgaXQgdG8gdGhlIGNvcnJlY3QgU2NvcGUKKwkJCUNsaWVudCBjdXJyZW50Q2xpZW50ID0gdGhpcy5zZXNzaW9uTWFuYWdlcgorCQkJCQkuZ2V0Q2xpZW50QnlQdWJsaWNTSUQocHVibGljU0lELCBmYWxzZSwgbnVsbCk7CisKKwkJCWlmIChjdXJyZW50Q2xpZW50ID09IG51bGwpIHsKKwkJCQljdXJyZW50Q2xpZW50ID0gc2Vzc2lvbk1hbmFnZXIuZ2V0Q2xpZW50QnlVc2VySWQodXNlcl9pZCk7CisJCQl9CisKKwkJCUNvbGxlY3Rpb248U2V0PElDb25uZWN0aW9uPj4gY29uQ29sbGVjdGlvbiA9IG51bGw7CisKKwkJCWlmIChjdXJyZW50Q2xpZW50ID09IG51bGwpIHsKKwkJCQkvLyBNdXN0IGJlIGZyb20gYSBwcmV2aW91cyBzZXNzaW9uLCBzZWFyY2ggZm9yIHVzZXIgaW4gY3VycmVudAorCQkJCS8vIHNjb3BlCisJCQkJSUNvbm5lY3Rpb24gY3VycmVudCA9IFJlZDUuZ2V0Q29ubmVjdGlvbkxvY2FsKCk7CisJCQkJLy8gTm90aWZ5IGFsbCBDbGllbnRzIG9mIHRoYXQgU2NvcGUgKFJvb20pCisJCQkJY29uQ29sbGVjdGlvbiA9IGN1cnJlbnQuZ2V0U2NvcGUoKS5nZXRDb25uZWN0aW9ucygpOworCQkJfSBlbHNlIHsKKwkJCQkvLyBkZWZhdWx0IFNjb3BlIE5hbWUKKwkJCQlTdHJpbmcgc2NvcGVOYW1lID0gImhpYmVybmF0ZSI7CisJCQkJaWYgKGN1cnJlbnRDbGllbnQuZ2V0Um9vbV9pZCgpICE9IG51bGwpIHsKKwkJCQkJc2NvcGVOYW1lID0gY3VycmVudENsaWVudC5nZXRSb29tX2lkKCkudG9TdHJpbmcoKTsKKwkJCQl9CisKKwkJCQlJU2NvcGUgc2NvcGVIaWJlcm5hdGUgPSB3ZWJBcHBLZXlTY29wZS5nZXRTY29wZShzY29wZU5hbWUpOworCisJCQkJaWYgKHNjb3BlSGliZXJuYXRlICE9IG51bGwpIHsKKwkJCQkJY29uQ29sbGVjdGlvbiA9IHdlYkFwcEtleVNjb3BlLmdldFNjb3BlKHNjb3BlTmFtZSkKKwkJCQkJCQkuZ2V0Q29ubmVjdGlvbnMoKTsKKwkJCQl9CisJCQl9CisKKwkJCS8vIGxvZy5kZWJ1Zygic2NvcGVIaWJlcm5hdGUgIitzY29wZUhpYmVybmF0ZSk7CisKKwkJCS8vIE5vdGlmeSB0aGUgY2xpZW50cyBvZiB0aGUgc2FtZSBzY29wZSAocm9vbSkgd2l0aCB1c2VyX2lkCisKKwkJCWZvciAoU2V0PElDb25uZWN0aW9uPiBjb25zZXQgOiBjb25Db2xsZWN0aW9uKSB7CisJCQkJZm9yIChJQ29ubmVjdGlvbiBjb25uIDogY29uc2V0KSB7CisJCQkJCWlmIChjb25uICE9IG51bGwpIHsKKwkJCQkJCQorCQkJCQkJSUNsaWVudCBjbGllbnQgPSBjb25uLmdldENsaWVudCgpOworCQkJCQkJaWYgKFNlc3Npb25WYXJpYWJsZXNVdGlsLmlzU2NyZWVuQ2xpZW50KGNsaWVudCkpIHsKKwkJCQkJCQkvLyBzY3JlZW4gc2hhcmluZyBjbGllbnRzIGRvIG5vdCByZWNlaXZlIGV2ZW50cworCQkJCQkJCWNvbnRpbnVlOworCQkJCQkJfSBlbHNlIGlmIChTZXNzaW9uVmFyaWFibGVzVXRpbC5pc0FWQ2xpZW50KGNsaWVudCkpIHsKKwkJCQkJCQkvLyBBVkNsaWVudHMgb3IgcG90ZW50aWFsIEFWQ2xpZW50cyBkbyBub3QgcmVjZWl2ZSBldmVudHMKKwkJCQkJCQljb250aW51ZTsKKwkJCQkJCX0KKwkJCQkJCQorCQkJCQkJaWYgKFNlc3Npb25WYXJpYWJsZXNVdGlsLmdldFB1YmxpY1NJRChjbGllbnQpLmVxdWFscyhwdWJsaWNTSUQpKSB7CisJCQkJCQkJLy8gbG9nLmRlYnVnKCJJUyBFUVVBTCAiKTsKKwkJCQkJCQkoKElTZXJ2aWNlQ2FwYWJsZUNvbm5lY3Rpb24pIGNvbm4pLmludm9rZSgKKwkJCQkJCQkJCSJuZXdNZXNzYWdlQnlSb29tQW5kRG9tYWluIiwKKwkJCQkJCQkJCW5ldyBPYmplY3RbXSB7IG1lc3NhZ2UgfSwgdGhpcyk7CisJCQkJCQkJbG9nLmRlYnVnKCJzZW5kTWVzc2FnZVdpdGhDbGllbnRCeVB1YmxpY1NJRCBSUEM6bmV3TWVzc2FnZUJ5Um9vbUFuZERvbWFpbiIKKwkJCQkJCQkJCSsgbWVzc2FnZSk7CisJCQkJCQl9IGVsc2UgaWYgKHVzZXJfaWQgIT0gMAorCQkJCQkJCQkmJiBTZXNzaW9uVmFyaWFibGVzVXRpbC5nZXRVc2VySWQoY2xpZW50KS5lcXVhbHModXNlcl9pZCkpIHsKKwkJCQkJCQkoKElTZXJ2aWNlQ2FwYWJsZUNvbm5lY3Rpb24pIGNvbm4pLmludm9rZSgKKwkJCQkJCQkJCSJuZXdNZXNzYWdlQnlSb29tQW5kRG9tYWluIiwKKwkJCQkJCQkJCW5ldyBPYmplY3RbXSB7IG1lc3NhZ2UgfSwgdGhpcyk7CisJCQkJCQkJbG9nLmRlYnVnKCJzZW5kTWVzc2FnZVdpdGhDbGllbnRCeVB1YmxpY1NJRCBSUEM6bmV3TWVzc2FnZUJ5Um9vbUFuZERvbWFpbiIKKwkJCQkJCQkJCSsgbWVzc2FnZSk7CisJCQkJCQl9CisJCQkJCX0KKwkJCQl9CisJCQl9CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbc2VuZE1lc3NhZ2VXaXRoQ2xpZW50XSAiLCBlcnIpOworCQl9CisJfQorCisJLyoqCisJICogQGRlcHJlY2F0ZWQgdGhpcyBtZXRob2Qgc2hvdWxkIGJlIHJld29ya2VkIHRvIHVzZSBhIHNpbmdsZSBTUUwgcXVlcnkgaW4KKwkgKiAgICAgICAgICAgICB0aGUgY2FjaGUgdG8gZ2V0IGFueSBjbGllbnQgaW4gdGhlIGN1cnJlbnQgcm9vbSB0aGF0IGlzCisJICogICAgICAgICAgICAgcmVjb3JkaW5nIGluc3RlYWQgb2YgaXRlcmF0aW5nIHRocm91Z2ggY29ubmVjdGlvbnMhCisJICogQHJldHVybiB0cnVlIGluIGNhc2UgdGhlcmUgaXMgcmVjb3JkaW5nIHNlc3Npb24sIGZhbHNlIG90aGVyd2lzZSwgbnVsbCBpZiBhbnkgZXhjZXB0aW9uIGhhcHBlbmQKKwkgKi8KKwlwdWJsaWMgc3luY2hyb25pemVkIEJvb2xlYW4gZ2V0SW50ZXJ2aWV3UmVjb3JkaW5nU3RhdHVzKCkgeworCQl0cnkgeworCisJCQlJQ29ubmVjdGlvbiBjdXJyZW50ID0gUmVkNS5nZXRDb25uZWN0aW9uTG9jYWwoKTsKKworCQkJQ29sbGVjdGlvbjxTZXQ8SUNvbm5lY3Rpb24+PiBjb25Db2xsZWN0aW9uID0gY3VycmVudC5nZXRTY29wZSgpCisJCQkJCS5nZXRDb25uZWN0aW9ucygpOworCQkJZm9yIChTZXQ8SUNvbm5lY3Rpb24+IGNvbnNldCA6IGNvbkNvbGxlY3Rpb24pIHsKKwkJCQlmb3IgKElDb25uZWN0aW9uIGNvbm4gOiBjb25zZXQpIHsKKwkJCQkJaWYgKGNvbm4gIT0gbnVsbCkgeworCisJCQkJCQlDbGllbnQgcmNsID0gdGhpcy5zZXNzaW9uTWFuYWdlcgorCQkJCQkJCQkuZ2V0Q2xpZW50QnlTdHJlYW1JZChjb25uLmdldENsaWVudCgpLmdldElkKCksCisJCQkJCQkJCQkJbnVsbCk7CisKKwkJCQkJCWlmIChyY2wuZ2V0SXNSZWNvcmRpbmcoKSAhPSBudWxsCisJCQkJCQkJCSYmIHJjbC5nZXRJc1JlY29yZGluZygpKSB7CisJCQkJCQkJcmV0dXJuIHRydWU7CisJCQkJCQl9CisKKwkJCQkJfQorCQkJCX0KKwkJCX0KKworCQkJcmV0dXJuIGZhbHNlOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRJbnRlcnZpZXdSZWNvcmRpbmdTdGF0dXNdIiwgZXJyKTsKKwkJfQorCisJCXJldHVybiBudWxsOworCX0KKworCS8qKgorCSAqIEBkZXByZWNhdGVkIEBzZWUge0BsaW5rIFNjb3BlQXBwbGljYXRpb25BZGFwdGVyI2dldEludGVydmlld1JlY29yZGluZ1N0YXR1cygpfQorCSAqIEByZXR1cm4gLSBmYWxzZSBpZiB0aGVyZSB3ZXJlIGV4aXN0aW5nIHJlY29yZGluZywgdHJ1ZSBpZiByZWNvcmRpbmcgd2FzIHN0YXJ0ZWQgc3VjY2Vzc2Z1bGx5LCBudWxsIGlmIGFueSBleGNlcHRpb24gaGFwcGVucworCSAqLworCXB1YmxpYyBzeW5jaHJvbml6ZWQgQm9vbGVhbiBzdGFydEludGVydmlld1JlY29yZGluZygpIHsKKwkJdHJ5IHsKKwkJCWxvZy5kZWJ1ZygiLS0tLS0tLS0tLS0gIHN0YXJ0SW50ZXJ2aWV3UmVjb3JkaW5nIik7CisJCQlJQ29ubmVjdGlvbiBjdXJyZW50ID0gUmVkNS5nZXRDb25uZWN0aW9uTG9jYWwoKTsKKworCQkJQ29sbGVjdGlvbjxTZXQ8SUNvbm5lY3Rpb24+PiBjb25Db2xsZWN0aW9uID0gY3VycmVudC5nZXRTY29wZSgpCisJCQkJCS5nZXRDb25uZWN0aW9ucygpOworCQkJZm9yIChTZXQ8SUNvbm5lY3Rpb24+IGNvbnNldCA6IGNvbkNvbGxlY3Rpb24pIHsKKwkJCQlmb3IgKElDb25uZWN0aW9uIGNvbm4gOiBjb25zZXQpIHsKKwkJCQkJaWYgKGNvbm4gIT0gbnVsbCkgeworCisJCQkJCQlDbGllbnQgcmNsID0gdGhpcy5zZXNzaW9uTWFuYWdlcgorCQkJCQkJCQkuZ2V0Q2xpZW50QnlTdHJlYW1JZChjb25uLmdldENsaWVudCgpLmdldElkKCksIG51bGwpOworCisJCQkJCQlpZiAocmNsLmdldElzUmVjb3JkaW5nKCkgIT0gbnVsbAorCQkJCQkJCQkmJiByY2wuZ2V0SXNSZWNvcmRpbmcoKSkgeworCQkJCQkJCXJldHVybiBmYWxzZTsKKwkJCQkJCX0KKworCQkJCQl9CisJCQkJfQorCQkJfQorCisJCQlDbGllbnQgY3VycmVudF9yY2wgPSB0aGlzLnNlc3Npb25NYW5hZ2VyCisJCQkJCS5nZXRDbGllbnRCeVN0cmVhbUlkKGN1cnJlbnQuZ2V0Q2xpZW50KCkuZ2V0SWQoKSwgbnVsbCk7CisKKwkJCS8vIEFsc28gc2V0IHRoZSBSZWNvcmRpbmcgRmxhZyB0byBSZWNvcmQgYWxsIFBhcnRpY2lwYW50cyB0aGF0IGVudGVyCisJCQkvLyBsYXRlcgorCQkJY3VycmVudF9yY2wuc2V0SXNSZWNvcmRpbmcodHJ1ZSk7CisJCQl0aGlzLnNlc3Npb25NYW5hZ2VyLnVwZGF0ZUNsaWVudEJ5U3RyZWFtSWQoY3VycmVudC5nZXRDbGllbnQoKQorCQkJCQkuZ2V0SWQoKSwgY3VycmVudF9yY2wsIGZhbHNlLCBudWxsKTsKKworCQkJTWFwPFN0cmluZywgU3RyaW5nPiBpbnRlcnZpZXdTdGF0dXMgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4oKTsKKwkJCWludGVydmlld1N0YXR1cy5wdXQoImFjdGlvbiIsICJzdGFydCIpOworCisJCQlmb3IgKFNldDxJQ29ubmVjdGlvbj4gY29uc2V0IDogY29uQ29sbGVjdGlvbikgeworCQkJCWZvciAoSUNvbm5lY3Rpb24gY29ubiA6IGNvbnNldCkgeworCQkJCQlpZiAoY29ubiAhPSBudWxsKSB7CisJCQkJCQkKKwkJCQkJCUlDbGllbnQgY2xpZW50ID0gY29ubi5nZXRDbGllbnQoKTsKKwkJCQkJCWlmIChTZXNzaW9uVmFyaWFibGVzVXRpbC5pc1NjcmVlbkNsaWVudChjbGllbnQpKSB7CisJCQkJCQkJLy8gc2NyZWVuIHNoYXJpbmcgY2xpZW50cyBkbyBub3QgcmVjZWl2ZSBldmVudHMKKwkJCQkJCQljb250aW51ZTsKKwkJCQkJCX0gZWxzZSBpZiAoU2Vzc2lvblZhcmlhYmxlc1V0aWwuaXNBVkNsaWVudChjbGllbnQpKSB7CisJCQkJCQkJLy8gQVZDbGllbnRzIG9yIHBvdGVudGlhbCBBVkNsaWVudHMgZG8gbm90IHJlY2VpdmUgZXZlbnRzCisJCQkJCQkJY29udGludWU7CisJCQkJCQl9CisKKwkJCQkJCSgoSVNlcnZpY2VDYXBhYmxlQ29ubmVjdGlvbikgY29ubikuaW52b2tlKAorCQkJCQkJCQkiaW50ZXJ2aWV3U3RhdHVzIiwKKwkJCQkJCQkJbmV3IE9iamVjdFtdIHsgaW50ZXJ2aWV3U3RhdHVzIH0sIHRoaXMpOworCQkJCQkJbG9nLmRlYnVnKCItLSBpbnRlcnZpZXdTdGF0dXMiICsgaW50ZXJ2aWV3U3RhdHVzKTsKKworCQkJCQl9CisJCQkJfQorCQkJfQorCisJCQlTdHJpbmcgcmVjb3JkaW5nTmFtZSA9ICJJbnRlcnZpZXcgIgorCQkJCQkrIENhbGVuZGFyUGF0dGVybnMuZ2V0RGF0ZVdpdGhUaW1lQnlNaWxpU2Vjb25kcyhuZXcgRGF0ZSgpKTsKKworCQkJdGhpcy5mbHZSZWNvcmRlclNlcnZpY2UKKwkJCQkJLnJlY29yZE1lZXRpbmdTdHJlYW0ocmVjb3JkaW5nTmFtZSwgIiIsIHRydWUpOworCisJCQlyZXR1cm4gdHJ1ZTsKKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltzdGFydEludGVydmlld1JlY29yZGluZ10iLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCUBTdXBwcmVzc1dhcm5pbmdzKHsgInJhd3R5cGVzIiB9KQorCXB1YmxpYyBzeW5jaHJvbml6ZWQgQm9vbGVhbiBzZW5kUmVtb3RlQ3Vyc29yRXZlbnQoU3RyaW5nIHN0cmVhbWlkLAorCQkJTWFwIG1lc3NhZ2VPYmopIHsKKwkJdHJ5IHsKKworCQkJSUNvbm5lY3Rpb24gY3VycmVudCA9IFJlZDUuZ2V0Q29ubmVjdGlvbkxvY2FsKCk7CisKKwkJCUNvbGxlY3Rpb248U2V0PElDb25uZWN0aW9uPj4gY29uQ29sbGVjdGlvbiA9IGN1cnJlbnQuZ2V0U2NvcGUoKQorCQkJCQkuZ2V0Q29ubmVjdGlvbnMoKTsKKwkJCWZvciAoU2V0PElDb25uZWN0aW9uPiBjb25zZXQgOiBjb25Db2xsZWN0aW9uKSB7CisJCQkJZm9yIChJQ29ubmVjdGlvbiBjb25uIDogY29uc2V0KSB7CisJCQkJCWlmIChjb25uICE9IG51bGwpIHsKKwkJCQkJCUlDbGllbnQgY2xpZW50ID0gY29ubi5nZXRDbGllbnQoKTsKKwkJCQkJCWlmIChTZXNzaW9uVmFyaWFibGVzVXRpbC5pc1NjcmVlbkNsaWVudChjbGllbnQpKSB7CisJCQkJCQkJaWYgKGNvbm4uZ2V0Q2xpZW50KCkuZ2V0SWQoKS5lcXVhbHMoc3RyZWFtaWQpKSB7CisJCQkJCQkJCSgoSVNlcnZpY2VDYXBhYmxlQ29ubmVjdGlvbikgY29ubikuaW52b2tlKAorCQkJCQkJCQkJCSJzZW5kUmVtb3RlQ3Vyc29yRXZlbnQiLAorCQkJCQkJCQkJCW5ldyBPYmplY3RbXSB7IG1lc3NhZ2VPYmogfSwgdGhpcyk7CisJCQkJCQkJfQorCQkJCQkJfQorCQkJCQl9CisJCQkJfQorCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltzZW5kUmVtb3RlQ3Vyc29yRXZlbnRdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisJCisJLyoqCisJICogU3RvcCB0aGUgcmVjb3JkaW5nIG9mIHRoZSBzdHJlYW1zIGFuZCBzZW5kIGV2ZW50IHRvIGNvbm5lY3RlZCB1c2VycyBvZiBzY29wZQorCSAqIAorCSAqIEByZXR1cm4gdHJ1ZSBpZiBpbnRlcnZpZXcgd2FzIGZvdW5kCisJICovCisJcHVibGljIHN5bmNocm9uaXplZCBCb29sZWFuIHN0b3BJbnRlcnZpZXdSZWNvcmRpbmcoKSB7CisJCXRyeSB7CisJCQlsb2cuZGVidWcoIi0tLS0tLS0tLS0tICBzdG9wSW50ZXJ2aWV3UmVjb3JkaW5nIik7CisJCQlJQ29ubmVjdGlvbiBjdXJyZW50ID0gUmVkNS5nZXRDb25uZWN0aW9uTG9jYWwoKTsKKworCQkJYm9vbGVhbiBmb3VuZCA9IGZhbHNlOworCQkJTG9uZyBmbHZSZWNvcmRpbmdJZCA9IG51bGw7CisKKwkJCUNvbGxlY3Rpb248U2V0PElDb25uZWN0aW9uPj4gY29uQ29sbGVjdGlvbiA9IGN1cnJlbnQuZ2V0U2NvcGUoKQorCQkJCQkuZ2V0Q29ubmVjdGlvbnMoKTsKKwkJCWZvciAoU2V0PElDb25uZWN0aW9uPiBjb25zZXQgOiBjb25Db2xsZWN0aW9uKSB7CisJCQkJZm9yIChJQ29ubmVjdGlvbiBjb25uIDogY29uc2V0KSB7CisJCQkJCWlmIChjb25uICE9IG51bGwpIHsKKworCQkJCQkJQ2xpZW50IHJjbCA9IHRoaXMuc2Vzc2lvbk1hbmFnZXIKKwkJCQkJCQkJLmdldENsaWVudEJ5U3RyZWFtSWQoY29ubi5nZXRDbGllbnQoKS5nZXRJZCgpLCBudWxsKTsKKworCQkJCQkJaWYgKHJjbC5nZXRJc1JlY29yZGluZygpICE9IG51bGwKKwkJCQkJCQkJJiYgcmNsLmdldElzUmVjb3JkaW5nKCkpIHsKKworCQkJCQkJCXJjbC5zZXRJc1JlY29yZGluZyhmYWxzZSk7CisKKwkJCQkJCQlmbHZSZWNvcmRpbmdJZCA9IHJjbC5nZXRGbHZSZWNvcmRpbmdJZCgpOworCisJCQkJCQkJcmNsLnNldEZsdlJlY29yZGluZ0lkKG51bGwpOworCisJCQkJCQkJLy8gUmVzZXQgdGhlIFJlY29yZGluZyBGbGFnIHRvIFJlY29yZCBhbGwKKwkJCQkJCQkvLyBQYXJ0aWNpcGFudHMgdGhhdCBlbnRlciBsYXRlcgorCQkJCQkJCXRoaXMuc2Vzc2lvbk1hbmFnZXIudXBkYXRlQ2xpZW50QnlTdHJlYW1JZChjb25uCisJCQkJCQkJCQkuZ2V0Q2xpZW50KCkuZ2V0SWQoKSwgcmNsLCBmYWxzZSwgbnVsbCk7CisKKwkJCQkJCQlmb3VuZCA9IHRydWU7CisJCQkJCQl9CisKKwkJCQkJfQorCQkJCX0KKwkJCX0KKworCQkJaWYgKCFmb3VuZCkgeworCQkJCXJldHVybiBmYWxzZTsKKwkJCX0KKworCQkJQ2xpZW50IGN1cnJlbnRDbGllbnQgPSB0aGlzLnNlc3Npb25NYW5hZ2VyCisJCQkJCS5nZXRDbGllbnRCeVN0cmVhbUlkKGN1cnJlbnQuZ2V0Q2xpZW50KCkuZ2V0SWQoKSwgbnVsbCk7CisKKwkJCXRoaXMuZmx2UmVjb3JkZXJTZXJ2aWNlLnN0b3BSZWNvcmRBbmRTYXZlKHNjb3BlLCBjdXJyZW50Q2xpZW50LAorCQkJCQlmbHZSZWNvcmRpbmdJZCk7CisKKwkJCU1hcDxTdHJpbmcsIFN0cmluZz4gaW50ZXJ2aWV3U3RhdHVzID0gbmV3IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+KCk7CisJCQlpbnRlcnZpZXdTdGF0dXMucHV0KCJhY3Rpb24iLCAic3RvcCIpOworCisJCQlmb3IgKFNldDxJQ29ubmVjdGlvbj4gY29uc2V0IDogY29uQ29sbGVjdGlvbikgeworCQkJCWZvciAoSUNvbm5lY3Rpb24gY29ubiA6IGNvbnNldCkgeworCQkJCQlpZiAoY29ubiAhPSBudWxsKSB7CisJCQkJCQlJQ2xpZW50IGNsaWVudCA9IGNvbm4uZ2V0Q2xpZW50KCk7CisJCQkJCQlpZiAoU2Vzc2lvblZhcmlhYmxlc1V0aWwuaXNTY3JlZW5DbGllbnQoY2xpZW50KSkgeworCQkJCQkJCS8vIHNjcmVlbiBzaGFyaW5nIGNsaWVudHMgZG8gbm90IHJlY2VpdmUgZXZlbnRzCisJCQkJCQkJY29udGludWU7CisJCQkJCQl9IGVsc2UgaWYgKFNlc3Npb25WYXJpYWJsZXNVdGlsLmlzQVZDbGllbnQoY2xpZW50KSkgeworCQkJCQkJCS8vIEFWQ2xpZW50cyBvciBwb3RlbnRpYWwgQVZDbGllbnRzIGRvIG5vdCByZWNlaXZlIGV2ZW50cworCQkJCQkJCWNvbnRpbnVlOworCQkJCQkJfQorCQkJCQkJKChJU2VydmljZUNhcGFibGVDb25uZWN0aW9uKSBjb25uKS5pbnZva2UoCisJCQkJCQkJCSJpbnRlcnZpZXdTdGF0dXMiLAorCQkJCQkJCQluZXcgT2JqZWN0W10geyBpbnRlcnZpZXdTdGF0dXMgfSwgdGhpcyk7CisJCQkJCX0KKwkJCQl9CisJCQl9CisKKwkJCXJldHVybiB0cnVlOworCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW3N0b3BJbnRlcnZpZXdSZWNvcmRpbmddIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvKioKKwkgKiBHZXQgYWxsIENsaWVudExpc3QgT2JqZWN0cyBvZiB0aGF0IHJvb20gYW5kIGRvbWFpbiBVc2VkIGluCisJICogbHouYXBwbHlGb3JNb2RlcmF0aW9uLmx6eAorCSAqIAorCSAqIEByZXR1cm4gYWxsIENsaWVudExpc3QgT2JqZWN0cyBvZiB0aGF0IHJvb20KKwkgKi8KKwlwdWJsaWMgc3luY2hyb25pemVkIExpc3Q8Q2xpZW50PiBnZXRDbGllbnRMaXN0U2NvcGUoKSB7CisJCXRyeSB7CisJCQlJQ29ubmVjdGlvbiBjdXJyZW50ID0gUmVkNS5nZXRDb25uZWN0aW9uTG9jYWwoKTsKKwkJCUNsaWVudCBjdXJyZW50Q2xpZW50ID0gdGhpcy5zZXNzaW9uTWFuYWdlcgorCQkJCQkuZ2V0Q2xpZW50QnlTdHJlYW1JZChjdXJyZW50LmdldENsaWVudCgpLmdldElkKCksIG51bGwpOworCisJCQlyZXR1cm4gc2Vzc2lvbk1hbmFnZXIuZ2V0Q2xpZW50TGlzdEJ5Um9vbShjdXJyZW50Q2xpZW50LmdldFJvb21faWQoKSk7CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbZ2V0Q2xpZW50TGlzdFNjb3BlXSIsIGVycik7CisJCX0KKwkJcmV0dXJuIG5ldyBBcnJheUxpc3Q8Q2xpZW50PigpOworCX0KKworCXByaXZhdGUgYm9vbGVhbiBnZXRXaGl0ZWJvYXJkRHJhd1N0YXR1cygpIHsKKwkJaWYgKFNjb3BlQXBwbGljYXRpb25BZGFwdGVyLndoaXRlYm9hcmREcmF3U3RhdHVzID09IG51bGwpIHsKKwkJCVN0cmluZyBkcmF3U3RhdHVzID0gY29uZmlndXJhdGlvbkRhby5nZXRDb25mVmFsdWUoCisJCQkJCSJzaG93LndoaXRlYm9hcmQuZHJhdy5zdGF0dXMiLCBTdHJpbmcuY2xhc3MsICIwIik7CisJCQlTY29wZUFwcGxpY2F0aW9uQWRhcHRlci53aGl0ZWJvYXJkRHJhd1N0YXR1cyA9ICIxIi5lcXVhbHMoZHJhd1N0YXR1cyk7CisJCX0KKwkJcmV0dXJuIFNjb3BlQXBwbGljYXRpb25BZGFwdGVyLndoaXRlYm9hcmREcmF3U3RhdHVzOworCX0KKwkKKwlwdWJsaWMgU3RyaW5nIGdldENyeXB0S2V5KCkgeworCQl0cnkgeworCisJCQlpZiAoU2NvcGVBcHBsaWNhdGlvbkFkYXB0ZXIuY29uZmlnS2V5Q3J5cHRDbGFzc05hbWUgPT0gbnVsbCkgeworCQkJCVN0cmluZyBjcnlwdENsYXNzID0gY29uZmlndXJhdGlvbkRhby5nZXRDb25mVmFsdWUoImNyeXB0X0NsYXNzTmFtZSIsIFN0cmluZy5jbGFzcywgbnVsbCk7CisKKwkJCQlpZiAoY3J5cHRDbGFzcyAhPSBudWxsKSB7CisJCQkJCVNjb3BlQXBwbGljYXRpb25BZGFwdGVyLmNvbmZpZ0tleUNyeXB0Q2xhc3NOYW1lID0gY3J5cHRDbGFzczsKKwkJCQl9CisJCQl9CisKKwkJCXJldHVybiBTY29wZUFwcGxpY2F0aW9uQWRhcHRlci5jb25maWdLZXlDcnlwdENsYXNzTmFtZTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbZ2V0Q3J5cHRLZXldIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgc3luY2hyb25pemVkIElTY29wZSBnZXRSb29tU2NvcGUoU3RyaW5nIHJvb20pIHsKKwkJdHJ5IHsKKworCQkJSVNjb3BlIGdsb2JhbFNjb3BlID0gZ2V0Q29udGV4dCgpLmdldEdsb2JhbFNjb3BlKCk7CisJCQlJU2NvcGUgd2ViQXBwS2V5U2NvcGUgPSBnbG9iYWxTY29wZQorCQkJCQkuZ2V0U2NvcGUoT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCisJCQlTdHJpbmcgc2NvcGVOYW1lID0gImhpYmVybmF0ZSI7CisJCQkvLyBJZiBzZXQgdGhlbiBpdHMgYSBOT04gZGVmYXVsdCBTY29wZQorCQkJaWYgKHJvb20ubGVuZ3RoKCkgIT0gMCkgeworCQkJCXNjb3BlTmFtZSA9IHJvb207CisJCQl9CisKKwkJCUlTY29wZSBzY29wZUhpYmVybmF0ZSA9IHdlYkFwcEtleVNjb3BlLmdldFNjb3BlKHNjb3BlTmFtZSk7CisKKwkJCXJldHVybiBzY29wZUhpYmVybmF0ZTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbZ2V0Um9vbVNjb3BlXSIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCisgICAgLyoKKwkgKiBTSVAgdHJhbnNwb3J0IG1ldGhvZHMKKwkgKi8KKworCXByaXZhdGUgTGlzdDxMb25nPiBnZXRWZXJpZmllZEFjdGl2ZVJvb21JZHMoU2VydmVyIHMpIHsKKwkJTGlzdDxMb25nPiByZXN1bHQgPSBuZXcgQXJyYXlMaXN0PExvbmc+KHNlc3Npb25NYW5hZ2VyLmdldEFjdGl2ZVJvb21JZHNCeVNlcnZlcihzKSk7CisJCS8vdmVyaWZ5CisJCWZvciAoSXRlcmF0b3I8TG9uZz4gaSA9IHJlc3VsdC5pdGVyYXRvcigpOyBpLmhhc05leHQoKTspIHsKKwkJCUxvbmcgaWQgPSBpLm5leHQoKTsKKwkJCUxpc3Q8Q2xpZW50PiByY3MgPSBzZXNzaW9uTWFuYWdlci5nZXRDbGllbnRMaXN0QnlSb29tKGlkKTsKKwkJCWlmIChyY3Muc2l6ZSgpID09IDAgfHwgKHJjcy5zaXplKCkgPT0gMSAmJiByY3MuZ2V0KDApLmlzU2lwVHJhbnNwb3J0KCkpKSB7CisJCQkJaS5yZW1vdmUoKTsKKwkJCX0KKwkJfQorCQlyZXR1cm4gcmVzdWx0LmlzRW1wdHkoKSA/IHJlc3VsdCA6IHJvb21EYW8uZ2V0U2lwUm9vbXMocmVzdWx0KTsKKwl9CisJCisJcHVibGljIHN5bmNocm9uaXplZCBMaXN0PExvbmc+IGdldEFjdGl2ZVJvb21JZHMoKSB7CisJCUxpc3Q8TG9uZz4gcmVzdWx0ID0gZ2V0VmVyaWZpZWRBY3RpdmVSb29tSWRzKG51bGwpOworCQlmb3IgKFNlcnZlciBzIDogc2VydmVyRGFvLmdldEFjdGl2ZVNlcnZlcnMoKSkgeworCQkJcmVzdWx0LmFkZEFsbChnZXRWZXJpZmllZEFjdGl2ZVJvb21JZHMocykpOworCQl9CisJCXJldHVybiByZXN1bHQuaXNFbXB0eSgpID8gcmVzdWx0IDogcm9vbURhby5nZXRTaXBSb29tcyhyZXN1bHQpOworCX0KKwkKKwlwcml2YXRlIFN0cmluZyBnZXRTaXBUcmFuc3BvcnRMYXN0bmFtZShMb25nIHJvb21JZCkgeworCQlyZXR1cm4gZ2V0U2lwVHJhbnNwb3J0TGFzdG5hbWUocm9vbUlkLCByb29tTWFuYWdlci5nZXRTaXBDb25mZXJlbmNlTWVtYmVyc051bWJlcihyb29tSWQpKTsKKwl9CisJCisJcHJpdmF0ZSBTdHJpbmcgZ2V0U2lwVHJhbnNwb3J0TGFzdG5hbWUoTG9uZyByb29tSWQsIEludGVnZXIgYykgeworCQlyZXR1cm4gKGMgIT0gbnVsbCAmJiBjID4gMCkgPyAiKCIgKyAoYyAtIDEpICsgIikiIDogIiI7CisJfQorCQorICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgaW50IHVwZGF0ZVNpcFRyYW5zcG9ydCgpIHsKKwkJbG9nLmRlYnVnKCItLS0tLS0tLS0tLSAgdXBkYXRlU2lwVHJhbnNwb3J0Iik7CisgICAgICAgIElDb25uZWN0aW9uIGN1cnJlbnQgPSBSZWQ1LmdldENvbm5lY3Rpb25Mb2NhbCgpOworICAgICAgICBTdHJpbmcgc3RyZWFtaWQgPSBjdXJyZW50LmdldENsaWVudCgpLmdldElkKCk7CisgICAgICAgIENsaWVudCBjbGllbnQgPSBzZXNzaW9uTWFuYWdlci5nZXRDbGllbnRCeVN0cmVhbUlkKHN0cmVhbWlkLCBudWxsKTsKKyAgICAgICAgTG9uZyByb29tSWQgPSBjbGllbnQuZ2V0Um9vbV9pZCgpOworICAgICAgICBJbnRlZ2VyIGNvdW50ID0gcm9vbU1hbmFnZXIuZ2V0U2lwQ29uZmVyZW5jZU1lbWJlcnNOdW1iZXIocm9vbUlkKTsgCisgICAgICAgIFN0cmluZyBuZXdOdW1iZXIgPSBnZXRTaXBUcmFuc3BvcnRMYXN0bmFtZShyb29tSWQsIGNvdW50KTsKKyAgICAgICAgbG9nLmRlYnVnKCJnZXRTaXBDb25mZXJlbmNlTWVtYmVyc051bWJlcjogIiArIG5ld051bWJlcik7CisgICAgICAgIGlmICghbmV3TnVtYmVyLmVxdWFscyhjbGllbnQuZ2V0TGFzdG5hbWUoKSkpIHsKKyAgICAgICAgICAgIGNsaWVudC5zZXRMYXN0bmFtZShuZXdOdW1iZXIpOworICAgICAgICAgICAgc2Vzc2lvbk1hbmFnZXIudXBkYXRlQ2xpZW50QnlTdHJlYW1JZChzdHJlYW1pZCwgY2xpZW50LCBmYWxzZSwgbnVsbCk7CisgICAgICAgICAgICBsb2cuZGVidWcoInVwZGF0ZVNpcFRyYW5zcG9ydDoge30sIHt9LCB7fSwge30sIHt9IiwgbmV3IE9iamVjdFtde2NsaWVudC5nZXRQdWJsaWNTSUQoKSwKKyAgICAgICAgICAgICAgICAgICAgY2xpZW50LmdldFJvb21faWQoKSwgY2xpZW50LmdldEZpcnN0bmFtZSgpLCBjbGllbnQuZ2V0TGFzdG5hbWUoKSwgY2xpZW50LmdldEF2c2V0dGluZ3MoKX0pOworICAgICAgICAgICAgc2VuZE1lc3NhZ2VXaXRoQ2xpZW50KG5ldyBTdHJpbmdbXXsicGVyc29uYWwiLGNsaWVudC5nZXRGaXJzdG5hbWUoKSxjbGllbnQuZ2V0TGFzdG5hbWUoKX0pOworICAgICAgICB9CisgICAgICAgIHJldHVybiBjb3VudCAhPSBudWxsICYmIGNvdW50ID4gMCA/IGNvdW50IC0gMSA6IDA7IAorICAgIH0KKworICAgIC8qKgorICAgICAqIFBlcmZvcm0gY2FsbCB0byBzcGVjaWZpZWQgcGhvbmUgbnVtYmVyIGFuZCBqb2luIHRvIGNvbmZlcmVuY2UKKyAgICAgKiBAcGFyYW0gbnVtYmVyIHRvIGNhbGwKKyAgICAgKi8KKwlwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgam9pblRvQ29uZkNhbGwoU3RyaW5nIG51bWJlcikgeworCQlJQ29ubmVjdGlvbiBjdXJyZW50ID0gUmVkNS5nZXRDb25uZWN0aW9uTG9jYWwoKTsKKwkJU3RyaW5nIHN0cmVhbWlkID0gY3VycmVudC5nZXRDbGllbnQoKS5nZXRJZCgpOworCQlDbGllbnQgY3VycmVudENsaWVudCA9IHNlc3Npb25NYW5hZ2VyLmdldENsaWVudEJ5U3RyZWFtSWQoc3RyZWFtaWQsIG51bGwpOworCQl0cnkgeworCQkJU3RyaW5nIHNpcE51bWJlciA9IGdldFNpcE51bWJlcihjdXJyZW50Q2xpZW50LmdldFJvb21faWQoKSk7CisJCQlsb2cuZGVidWcoImFzdGVyaXNrIC1yeCBcIm9yaWdpbmF0ZSBMb2NhbC8iICsgbnVtYmVyICsgIkByb29tcy1vdXQgZXh0ZW5zaW9uICIgKyBzaXBOdW1iZXIKKwkJCQkJKyAiQHJvb21zLW9yaWdpbmF0ZVwiIik7CisJCQlSdW50aW1lLmdldFJ1bnRpbWUoKS5leGVjKAorCQkJCQluZXcgU3RyaW5nW10geyAiYXN0ZXJpc2siLCAiLXJ4IiwKKwkJCQkJCQkib3JpZ2luYXRlIExvY2FsLyIgKyBudW1iZXIgKyAiQHJvb21zLW91dCBleHRlbnNpb24gIiArIHNpcE51bWJlciArICJAcm9vbXMtb3JpZ2luYXRlIiB9KTsKKwkJfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgeworCQkJbG9nLmVycm9yKCJFeGVjdXRpbmcgYXN0ZXJpc2sgb3JpZ2luYXRlIGVycm9yOiAiLCBlKTsKKwkJfQorCX0KKworICAgIHB1YmxpYyBzeW5jaHJvbml6ZWQgU3RyaW5nIGdldFNpcE51bWJlcihMb25nIHJvb21faWQpIHsKKyAgICAgICAgUm9vbSByID0gcm9vbURhby5nZXQocm9vbV9pZCk7CisgICAgICAgIGlmKHIgIT0gbnVsbCAmJiByLmdldENvbmZubygpICE9IG51bGwpIHsKKyAgICAgICAgICAgIGxvZy5kZWJ1ZygiZ2V0U2lwTnVtYmVyOiByb29tX2lkOiB7fSwgc2lwTnVtYmVyOiB7fSIsIG5ldyBPYmplY3RbXXtyb29tX2lkLCByLmdldENvbmZubygpfSk7CisgICAgICAgICAgICByZXR1cm4gci5nZXRDb25mbm8oKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVsbDsKKyAgICB9CisKKwlwdWJsaWMgc3luY2hyb25pemVkIHZvaWQgc2V0U2lwVHJhbnNwb3J0KExvbmcgcm9vbV9pZCwgU3RyaW5nIHB1YmxpY1NJRCwgU3RyaW5nIGJyb2FkQ2FzdElkKSB7CisJCWxvZy5kZWJ1ZygiLS0tLS0tLS0tLS0gIHNldFNpcFRyYW5zcG9ydCIpOworCQlJQ29ubmVjdGlvbiBjdXJyZW50ID0gUmVkNS5nZXRDb25uZWN0aW9uTG9jYWwoKTsKKwkJSUNsaWVudCBjID0gY3VycmVudC5nZXRDbGllbnQoKTsKKwkJU3RyaW5nIHN0cmVhbWlkID0gYy5nZXRJZCgpOworCQkvLyBOb3RpZnkgYWxsIGNsaWVudHMgb2YgdGhlIHNhbWUgc2NvcGUgKHJvb20pCisJCUNsaWVudCBjdXJyZW50Q2xpZW50ID0gc2Vzc2lvbk1hbmFnZXIuZ2V0Q2xpZW50QnlTdHJlYW1JZChzdHJlYW1pZCwgbnVsbCk7CisJCWN1cnJlbnRDbGllbnQuc2V0U2lwVHJhbnNwb3J0KHRydWUpOworCQljdXJyZW50Q2xpZW50LnNldFJvb21faWQocm9vbV9pZCk7CisJCWN1cnJlbnRDbGllbnQuc2V0Um9vbUVudGVyKG5ldyBEYXRlKCkpOworCQljdXJyZW50Q2xpZW50LnNldEZpcnN0bmFtZSgiU0lQIFRyYW5zcG9ydCIpOworCQljdXJyZW50Q2xpZW50LnNldExhc3RuYW1lKGdldFNpcFRyYW5zcG9ydExhc3RuYW1lKHJvb21faWQpKTsKKwkJY3VycmVudENsaWVudC5zZXRCcm9hZENhc3RJRChMb25nLnBhcnNlTG9uZyhicm9hZENhc3RJZCkpOworCQljdXJyZW50Q2xpZW50LnNldElzQnJvYWRjYXN0aW5nKHRydWUpOworCQljdXJyZW50Q2xpZW50LnNldFB1YmxpY1NJRChwdWJsaWNTSUQpOworCQljdXJyZW50Q2xpZW50LnNldFZXaWR0aCgxMjApOworCQljdXJyZW50Q2xpZW50LnNldFZIZWlnaHQoOTApOworCQljdXJyZW50Q2xpZW50LnNldFBpY3R1cmVfdXJpKCJwaG9uZS5wbmciKTsKKwkJc2Vzc2lvbk1hbmFnZXIudXBkYXRlQ2xpZW50QnlTdHJlYW1JZChzdHJlYW1pZCwgY3VycmVudENsaWVudCwgZmFsc2UsIG51bGwpOworCQlTZXNzaW9uVmFyaWFibGVzVXRpbC5pbml0Q2xpZW50KGMsIGZhbHNlLCBwdWJsaWNTSUQpOworCisJCUNvbGxlY3Rpb248U2V0PElDb25uZWN0aW9uPj4gY29uQ29sbGVjdGlvbiA9IGN1cnJlbnQuZ2V0U2NvcGUoKS5nZXRDb25uZWN0aW9ucygpOworCQlmb3IgKFNldDxJQ29ubmVjdGlvbj4gY29uc2V0IDogY29uQ29sbGVjdGlvbikgeworCQkJZm9yIChJQ29ubmVjdGlvbiBjb25uIDogY29uc2V0KSB7CisJCQkJaWYgKGNvbm4gIT0gbnVsbCkgeworCQkJCQlJQ2xpZW50IGNsaWVudCA9IGNvbm4uZ2V0Q2xpZW50KCk7CisJCQkJCWlmIChTZXNzaW9uVmFyaWFibGVzVXRpbC5pc1NjcmVlbkNsaWVudChjbGllbnQpKSB7CisJCQkJCQkvLyBzY3JlZW4gc2hhcmluZyBjbGllbnRzIGRvIG5vdCByZWNlaXZlIGV2ZW50cworCQkJCQkJY29udGludWU7CisJCQkJCX0gZWxzZSBpZiAoU2Vzc2lvblZhcmlhYmxlc1V0aWwuaXNBVkNsaWVudChjbGllbnQpKSB7CisJCQkJCQkvLyBBVkNsaWVudHMgb3IgcG90ZW50aWFsIEFWQ2xpZW50cyBkbyBub3QgcmVjZWl2ZSBldmVudHMKKwkJCQkJCWNvbnRpbnVlOworCQkJCQl9CisKKwkJCQkJaWYgKCFjbGllbnQuZ2V0SWQoKS5lcXVhbHMoY3VycmVudC5nZXRDbGllbnQoKS5nZXRJZCgpKSkgeworCQkJCQkJLy8gSXQgaXMgbm90IG5lZWRlZCB0byBzZW5kIGJhY2sgdGhhdCBldmVudCB0byB0aGUgYWN0dWFsIE1vZGVyYXRvcgorCQkJCQkJLy8gYXMgaXQgd2lsbCBiZSBhbHJlYWR5IHRyaWdnZXJlZCBpbiB0aGUgcmVzdWx0IG9mIHRoaXMgRnVuY3Rpb24gaW4gdGhlIENsaWVudAorCQkJCQkJaWYgKGNvbm4gaW5zdGFuY2VvZiBJU2VydmljZUNhcGFibGVDb25uZWN0aW9uKSB7CisJCQkJCQkJKChJU2VydmljZUNhcGFibGVDb25uZWN0aW9uKSBjb25uKS5pbnZva2UoImFkZE5ld1VzZXIiLCBuZXcgT2JqZWN0W10geyBjdXJyZW50Q2xpZW50IH0sIHRoaXMpOworCQkJCQkJCWxvZy5kZWJ1Zygic2VuZGluZyBzZXRTaXBUcmFuc3BvcnQgdG8gIiArIGNvbm4pOworCQkJCQkJfQorCQkJCQl9CisJCQkJfQorCQkJfQorCQl9CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3JlbW90ZS91dGlsL1Nlc3Npb25WYXJpYWJsZXNVdGlsLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcmVtb3RlL3V0aWwvU2Vzc2lvblZhcmlhYmxlc1V0aWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDI5NzZkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3JlbW90ZS91dGlsL1Nlc3Npb25WYXJpYWJsZXNVdGlsLmphdmEKQEAgLTAsMCArMSwxMDkgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucmVtb3RlLnV0aWw7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcucmVkNS5zZXJ2ZXIuYXBpLklDbGllbnQ7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKKworcHVibGljIGNsYXNzIFNlc3Npb25WYXJpYWJsZXNVdGlsIHsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoCisJCQlTZXNzaW9uVmFyaWFibGVzVXRpbC5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCisJcHJpdmF0ZSBlbnVtIFNFU1NJT05fVkFSSUFCTEVTIHsKKwkJaXNBVkNsaWVudCwgLy8gaWYgdGhlIGNsaWVudCBjb25uZWN0aW9uIGlzIGEgYXVkaW8tdmlkZW8gb25seSBjb25uZWN0aW9uCisJCWlzU2NyZWVuQ2xpZW50LCAvLyBpZiB0aGUgY2xpZW50IGNvbm5lY3Rpb24gaXMgZnJvbSBhIEphdmEgV2ViLVN0YXJ0IGFwcGxpY2F0aW9uCisJCVBVQkxJQ19TSUQsIC8vIHRoZSBwdWJsaWMgU0lEIG9mIHRoZSBjbGllbnQKKwkJVVNFUl9JRCwgLy8gdGhlIHVzZXJJZCBvZiB0aGUgdXNlciB0aGF0IGlzIHVzaW5nIHRoaXMgY29ubmVjdGlvbiAoaWYgdGhlcmUgaXMgYW55KQorCX0KKworCXB1YmxpYyBzdGF0aWMgdm9pZCBpbml0Q2xpZW50KElDbGllbnQgY2xpZW50LCBib29sZWFuIGlzQVZDbGllbnQsIFN0cmluZyBwdWJsaWNTSUQpIHsKKwkJY2xpZW50LnNldEF0dHJpYnV0ZShTRVNTSU9OX1ZBUklBQkxFUy5pc0FWQ2xpZW50LnRvU3RyaW5nKCksIGlzQVZDbGllbnQpOworCQljbGllbnQuc2V0QXR0cmlidXRlKFNFU1NJT05fVkFSSUFCTEVTLlBVQkxJQ19TSUQudG9TdHJpbmcoKSwgcHVibGljU0lEKTsKKwl9CisJCisJcHVibGljIHN0YXRpYyBib29sZWFuIGlzQVZDbGllbnQoSUNsaWVudCBjbGllbnQpIHsKKwkJdHJ5IHsKKwkJCWlmIChjbGllbnQuZ2V0QXR0cmlidXRlKFNFU1NJT05fVkFSSUFCTEVTLmlzQVZDbGllbnQudG9TdHJpbmcoKSkgPT0gbnVsbCkgeworCQkJCXRocm93IG5ldyBFeGNlcHRpb24oIkNvbm5lY3Rpb24gaGFzIG5vIHB1YmxpY1NJRCBjbGllbnQ6ICIrY2xpZW50KTsKKwkJCX0KKwkJCXJldHVybiAoQm9vbGVhbikgY2xpZW50LmdldEF0dHJpYnV0ZShTRVNTSU9OX1ZBUklBQkxFUy5pc0FWQ2xpZW50LnRvU3RyaW5nKCkpOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltpc0FWQ2xpZW50XSIsIGVycik7CisJCX0KKwkJcmV0dXJuIGZhbHNlOworCX0KKwkKKwlwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRQdWJsaWNTSUQoSUNsaWVudCBjbGllbnQpIHsKKwkJdHJ5IHsKKwkJCWlmIChjbGllbnQuZ2V0QXR0cmlidXRlKFNFU1NJT05fVkFSSUFCTEVTLlBVQkxJQ19TSUQudG9TdHJpbmcoKSkgPT0gbnVsbCkgeworCQkJCXRocm93IG5ldyBFeGNlcHRpb24oIkNvbm5lY3Rpb24gaGFzIG5vIHB1YmxpY1NJRCBjbGllbnQ6ICIrY2xpZW50KTsKKwkJCX0KKwkJCXJldHVybiAoU3RyaW5nKSBjbGllbnQuZ2V0QXR0cmlidXRlKFNFU1NJT05fVkFSSUFCTEVTLlBVQkxJQ19TSUQudG9TdHJpbmcoKSk7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2dldFB1YmxpY1NJRF0iLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBzdGF0aWMgdm9pZCBzZXRJc1NjcmVlbkNsaWVudChJQ2xpZW50IGNsaWVudCkgeworCQljbGllbnQuc2V0QXR0cmlidXRlKFNFU1NJT05fVkFSSUFCTEVTLmlzU2NyZWVuQ2xpZW50LnRvU3RyaW5nKCksIHRydWUpOworCX0KKworCXB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc1NjcmVlbkNsaWVudChJQ2xpZW50IGNsaWVudCkgeworCQl0cnkgeworCQkJaWYgKGNsaWVudAorCQkJCQkuZ2V0QXR0cmlidXRlKFNFU1NJT05fVkFSSUFCTEVTLmlzU2NyZWVuQ2xpZW50LnRvU3RyaW5nKCkpID09IG51bGwpIHsKKwkJCQlyZXR1cm4gZmFsc2U7CisJCQl9CisJCQlpZiAoKEJvb2xlYW4pIGNsaWVudC5nZXRBdHRyaWJ1dGUoU0VTU0lPTl9WQVJJQUJMRVMuaXNTY3JlZW5DbGllbnQKKwkJCQkJLnRvU3RyaW5nKCkpKSB7CisJCQkJcmV0dXJuIHRydWU7CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2lzU2NyZWVuQ2xpZW50XSIsIGVycik7CisJCX0KKwkJcmV0dXJuIGZhbHNlOworCX0KKwkKKwlwdWJsaWMgc3RhdGljIHZvaWQgc2V0VXNlcklkKElDbGllbnQgY2xpZW50LCBMb25nIHVzZXJJZCkgeworCQljbGllbnQuc2V0QXR0cmlidXRlKFNFU1NJT05fVkFSSUFCTEVTLlVTRVJfSUQudG9TdHJpbmcoKSwgdXNlcklkKTsKKwl9CisKKwkvKioKKwkgKiBpZiB0aGVyZSBpcyBubyB1c2VyIGlkIHNldCwgaXQgd2lsbCByZXR1cm4gTG9uZy5NSU5fVkFMVUUKKwkgKiBAcGFyYW0gY2xpZW50CisJICogQHJldHVybiAtIHVzZXIgaWQgc2V0IG9yIExvbmcuTUlOX1ZBTFVFIG9yIG51bGwgaWYgYW55IGV4Y2VwdGlvbiBoYXBwZW5zCisJICovCisJcHVibGljIHN0YXRpYyBMb25nIGdldFVzZXJJZChJQ2xpZW50IGNsaWVudCkgeworCQl0cnkgeworCQkJaWYgKGNsaWVudC5nZXRBdHRyaWJ1dGUoU0VTU0lPTl9WQVJJQUJMRVMuVVNFUl9JRC50b1N0cmluZygpKSA9PSBudWxsKSB7CisJCQkJcmV0dXJuIExvbmcuTUlOX1ZBTFVFOworCQkJfQorCQkJcmV0dXJuIChMb25nKSBjbGllbnQuZ2V0QXR0cmlidXRlKFNFU1NJT05fVkFSSUFCTEVTLlVTRVJfSUQKKwkJCQkJLnRvU3RyaW5nKCkpOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltnZXRVc2VySWRdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisJCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvcnNzL0xvYWRBdG9tUnNzRmVlZC5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Jzcy9Mb2FkQXRvbVJzc0ZlZWQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMzA4MWVkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Jzcy9Mb2FkQXRvbVJzc0ZlZWQuamF2YQpAQCAtMCwwICsxLDEzOCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5yc3M7CisKK2ltcG9ydCBqYXZhLm5ldC5IdHRwVVJMQ29ubmVjdGlvbjsKK2ltcG9ydCBqYXZhLm5ldC5VUkw7CitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworaW1wb3J0IGphdmEudXRpbC5MaW5rZWRIYXNoTWFwOworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuQXV0aExldmVsVXRpbDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLmRhby5Db25maWd1cmF0aW9uRGFvOworaW1wb3J0IG9yZy5kb200ai5BdHRyaWJ1dGU7CitpbXBvcnQgb3JnLmRvbTRqLkRvY3VtZW50OworaW1wb3J0IG9yZy5kb200ai5FbGVtZW50OworaW1wb3J0IG9yZy5kb200ai5pby5TQVhSZWFkZXI7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKKworcHVibGljIGNsYXNzIExvYWRBdG9tUnNzRmVlZCB7CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKAorCQkJTG9hZEF0b21Sc3NGZWVkLmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisJQEF1dG93aXJlZAorCXByaXZhdGUgQ29uZmlndXJhdGlvbkRhbyBjb25maWd1cmF0aW9uRGFvOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEF1dGhMZXZlbFV0aWwgYXV0aExldmVsbWFuYWdlbWVudDsKKworCXB1YmxpYyBMaW5rZWRIYXNoTWFwPFN0cmluZywgTGlua2VkSGFzaE1hcDxTdHJpbmcsIExpbmtlZEhhc2hNYXA8U3RyaW5nLCBMaW5rZWRIYXNoTWFwPFN0cmluZywgT2JqZWN0Pj4+PiBnZXRSc3NGZWVkcygKKwkJCUxvbmcgdXNlcl9sZXZlbCkgeworCQl0cnkgeworCQkJaWYgKGF1dGhMZXZlbG1hbmFnZW1lbnQuY2hlY2tVc2VyTGV2ZWwodXNlcl9sZXZlbCkpIHsKKwkJCQlMaW5rZWRIYXNoTWFwPFN0cmluZywgTGlua2VkSGFzaE1hcDxTdHJpbmcsIExpbmtlZEhhc2hNYXA8U3RyaW5nLCBMaW5rZWRIYXNoTWFwPFN0cmluZywgT2JqZWN0Pj4+PiByZXR1cm5NYXAgPSBuZXcgTGlua2VkSGFzaE1hcDxTdHJpbmcsIExpbmtlZEhhc2hNYXA8U3RyaW5nLCBMaW5rZWRIYXNoTWFwPFN0cmluZywgTGlua2VkSGFzaE1hcDxTdHJpbmcsIE9iamVjdD4+Pj4oKTsKKworCQkJCVN0cmluZyB1cmwxID0gY29uZmlndXJhdGlvbkRhby5nZXRDb25mVmFsdWUoInJzc19mZWVkMSIsIFN0cmluZy5jbGFzcywgIiIpOworCQkJCXJldHVybk1hcC5wdXQoImZlZWQxIiwgdGhpcy5wYXJzZVJzc0ZlZWQodXJsMSkpOworCisJCQkJU3RyaW5nIHVybDIgPSBjb25maWd1cmF0aW9uRGFvLmdldENvbmZWYWx1ZSgicnNzX2ZlZWQyIiwgU3RyaW5nLmNsYXNzLCAiIik7CisJCQkJcmV0dXJuTWFwLnB1dCgiZmVlZDIiLCB0aGlzLnBhcnNlUnNzRmVlZCh1cmwyKSk7CisKKwkJCQlyZXR1cm4gcmV0dXJuTWFwOworCQkJfSBlbHNlIHsKKwkJCQlsb2cuZXJyb3IoIltnZXRSc3NGZWVkc10gYXV0aG9yaXphdGlvbiByZXF1aXJlZCIpOworCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworCQkJbG9nLmVycm9yKCJbZ2V0UnNzRmVlZHNdIiwgZXgpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworCXB1YmxpYyBMaW5rZWRIYXNoTWFwPFN0cmluZywgTGlua2VkSGFzaE1hcDxTdHJpbmcsIExpbmtlZEhhc2hNYXA8U3RyaW5nLCBPYmplY3Q+Pj4gcGFyc2VSc3NGZWVkKAorCQkJU3RyaW5nIHVybEVuZFBvaW50KSB7CisJCXRyeSB7CisJCQlMaW5rZWRIYXNoTWFwPFN0cmluZywgTGlua2VkSGFzaE1hcDxTdHJpbmcsIExpbmtlZEhhc2hNYXA8U3RyaW5nLCBPYmplY3Q+Pj4gbE1hcCA9IG5ldyBMaW5rZWRIYXNoTWFwPFN0cmluZywgTGlua2VkSGFzaE1hcDxTdHJpbmcsIExpbmtlZEhhc2hNYXA8U3RyaW5nLCBPYmplY3Q+Pj4oKTsKKworCQkJVVJMIHVybCA9IG5ldyBVUkwodXJsRW5kUG9pbnQpOworCisJCQlIdHRwVVJMQ29ubmVjdGlvbiBjb25uID0gKEh0dHBVUkxDb25uZWN0aW9uKSB1cmwub3BlbkNvbm5lY3Rpb24oKTsKKworCQkJY29ubi5zZXREb091dHB1dCh0cnVlKTsKKwkJCWNvbm4uc2V0RG9JbnB1dCh0cnVlKTsKKwkJCWNvbm4uc2V0UmVxdWVzdFByb3BlcnR5KCJ1c2VyLWFnZW50IiwKKwkJCQkJIk1vemlsbGEvNC4wIChjb21wYXRpYmxlOyBNU0lFIDYuMDsgV2luZG93cyBOVCA1LjE7IC5ORVQgQ0xSIDEuMS40MzIyKSIpOworCQkJY29ubi5zZXRSZXF1ZXN0UHJvcGVydHkoIlJlZmVyZXIiLAorCQkJCQkiaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnLyIpOworCQkJY29ubi5jb25uZWN0KCk7CisKKwkJCVNBWFJlYWRlciByZWFkZXIgPSBuZXcgU0FYUmVhZGVyKCk7CisJCQlEb2N1bWVudCBkb2N1bWVudCA9IHJlYWRlci5yZWFkKGNvbm4uZ2V0SW5wdXRTdHJlYW0oKSk7CisKKwkJCUVsZW1lbnQgcm9vdCA9IGRvY3VtZW50LmdldFJvb3RFbGVtZW50KCk7CisJCQlpbnQgbCA9IDA7CisKKwkJCWZvciAoQFN1cHByZXNzV2FybmluZ3MoInVuY2hlY2tlZCIpCisJCQlJdGVyYXRvcjxFbGVtZW50PiBpID0gcm9vdC5lbGVtZW50SXRlcmF0b3IoKTsgaS5oYXNOZXh0KCk7KSB7CisJCQkJRWxlbWVudCBpdGVtID0gaS5uZXh0KCk7CisJCQkJTGlua2VkSGFzaE1hcDxTdHJpbmcsIExpbmtlZEhhc2hNYXA8U3RyaW5nLCBPYmplY3Q+PiBpdGVtcyA9IG5ldyBMaW5rZWRIYXNoTWFwPFN0cmluZywgTGlua2VkSGFzaE1hcDxTdHJpbmcsIE9iamVjdD4+KCk7CisJCQkJYm9vbGVhbiBpc1N1YkVsZW1lbnQgPSBmYWxzZTsKKworCQkJCWZvciAoQFN1cHByZXNzV2FybmluZ3MoInVuY2hlY2tlZCIpCisJCQkJSXRlcmF0b3I8RWxlbWVudD4gaXQyID0gaXRlbS5lbGVtZW50SXRlcmF0b3IoKTsgaXQyLmhhc05leHQoKTspIHsKKwkJCQkJRWxlbWVudCBzdWJJdGVtID0gaXQyLm5leHQoKTsKKworCQkJCQlMaW5rZWRIYXNoTWFwPFN0cmluZywgT2JqZWN0PiBpdGVtT2JqID0gbmV3IExpbmtlZEhhc2hNYXA8U3RyaW5nLCBPYmplY3Q+KCk7CisKKwkJCQkJaXRlbU9iai5wdXQoIm5hbWUiLCBzdWJJdGVtLmdldE5hbWUoKSk7CisJCQkJCWl0ZW1PYmoucHV0KCJ0ZXh0Iiwgc3ViSXRlbS5nZXRUZXh0KCkpOworCisJCQkJCUxpbmtlZEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGF0dHJpYnV0ZXMgPSBuZXcgTGlua2VkSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4oKTsKKworCQkJCQlmb3IgKEBTdXBwcmVzc1dhcm5pbmdzKCJ1bmNoZWNrZWQiKQorCQkJCQlJdGVyYXRvcjxBdHRyaWJ1dGU+IGF0dHIgPSBzdWJJdGVtLmF0dHJpYnV0ZUl0ZXJhdG9yKCk7IGF0dHIKKwkJCQkJCQkuaGFzTmV4dCgpOykgeworCQkJCQkJQXR0cmlidXRlIGF0ID0gYXR0ci5uZXh0KCk7CisJCQkJCQlhdHRyaWJ1dGVzLnB1dChhdC5nZXROYW1lKCksIGF0LmdldFRleHQoKSk7CisJCQkJCX0KKwkJCQkJaXRlbU9iai5wdXQoImF0dHJpYnV0ZXMiLCBhdHRyaWJ1dGVzKTsKKworCQkJCQkvLyBsb2cuZXJyb3Ioc3ViSXRlbS5nZXROYW1lKCkrICI6ICIgK3N1Ykl0ZW0uZ2V0VGV4dCgpKTsKKwkJCQkJaXRlbXMucHV0KHN1Ykl0ZW0uZ2V0TmFtZSgpLCBpdGVtT2JqKTsKKwkJCQkJaXNTdWJFbGVtZW50ID0gdHJ1ZTsKKwkJCQl9CisKKwkJCQlpZiAoaXNTdWJFbGVtZW50KSB7CisJCQkJCWwrKzsKKwkJCQkJbE1hcC5wdXQoIml0ZW0iICsgbCwgaXRlbXMpOworCQkJCX0KKworCQkJfQorCisJCQlyZXR1cm4gbE1hcDsKKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltwYXJzZVJzc0ZlZWRdIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKworCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NjcmVlbi9kb3duLnBuZyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zY3JlZW4vZG93bi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDEwYjhjNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zY3JlZW4vZG93bi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NjcmVlbi9uZXh0LnBuZyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zY3JlZW4vbmV4dC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTI1MjYwNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zY3JlZW4vbmV4dC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NjcmVlbi9wbGF5LnBuZyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zY3JlZW4vcGxheS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQxMzY4MwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zY3JlZW4vcGxheS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NjcmVlbi9wcmV2aW91cy5wbmcgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2NyZWVuL3ByZXZpb3VzLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOGY5Y2MxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NjcmVlbi9wcmV2aW91cy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NjcmVlbi9zdG9wLnBuZyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zY3JlZW4vc3RvcC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM4OWJmMwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zY3JlZW4vc3RvcC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NjcmVlbi91cC5wbmcgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2NyZWVuL3VwLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMDNhYjBhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NjcmVlbi91cC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NjcmVlbi93ZWJzdGFydC9CYXNlU2NyZWVuRW5jb2Rlci5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NjcmVlbi93ZWJzdGFydC9CYXNlU2NyZWVuRW5jb2Rlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3MjQ4Y2YKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2NyZWVuL3dlYnN0YXJ0L0Jhc2VTY3JlZW5FbmNvZGVyLmphdmEKQEAgLTAsMCArMSw0MyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5zY3JlZW4ud2Vic3RhcnQ7CisKK2ltcG9ydCBqYXZhLmF3dC5HcmFwaGljczJEOworaW1wb3J0IGphdmEuYXd0LlJlY3RhbmdsZTsKK2ltcG9ydCBqYXZhLmF3dC5SZW5kZXJpbmdIaW50czsKK2ltcG9ydCBqYXZhLmF3dC5pbWFnZS5CdWZmZXJlZEltYWdlOworCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQmFzZVNjcmVlbkVuY29kZXIgaW1wbGVtZW50cyBJU2NyZWVuRW5jb2RlciB7CisKKwlwdWJsaWMgQnVmZmVyZWRJbWFnZSByZXNpemUoQnVmZmVyZWRJbWFnZSBfaW1nLCBSZWN0YW5nbGUgc2l6ZSkgeworCQlCdWZmZXJlZEltYWdlIGltZyA9IF9pbWc7CisJCWlmIChpbWcuZ2V0V2lkdGgoKSAhPSBzaXplLndpZHRoIHx8IGltZy5nZXRIZWlnaHQoKSAhPSBzaXplLmhlaWdodCkgeworCQkJaW1nID0gbmV3IEJ1ZmZlcmVkSW1hZ2Uoc2l6ZS53aWR0aCwgc2l6ZS5oZWlnaHQsIEJ1ZmZlcmVkSW1hZ2UuVFlQRV9JTlRfUkdCKTsKKwkJCQorCQkJR3JhcGhpY3MyRCBncmFwaGljczJEID0gaW1nLmNyZWF0ZUdyYXBoaWNzKCk7CisJCQlncmFwaGljczJELnNldFJlbmRlcmluZ0hpbnQoCisJCQkJUmVuZGVyaW5nSGludHMuS0VZX0lOVEVSUE9MQVRJT04sCisJCQkJUmVuZGVyaW5nSGludHMuVkFMVUVfSU5URVJQT0xBVElPTl9CSUNVQklDKTsKKwkJCWdyYXBoaWNzMkQuZHJhd0ltYWdlKF9pbWcsIDAsIDAsIHNpemUud2lkdGgsIHNpemUuaGVpZ2h0LCBudWxsKTsKKwkJCWdyYXBoaWNzMkQuZGlzcG9zZSgpOworCQl9CisJCXJldHVybiBpbWc7CisJfQorCQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NjcmVlbi93ZWJzdGFydC9DYXB0dXJlU2NyZWVuLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2NyZWVuL3dlYnN0YXJ0L0NhcHR1cmVTY3JlZW4uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNGYxZDBjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NjcmVlbi93ZWJzdGFydC9DYXB0dXJlU2NyZWVuLmphdmEKQEAgLTAsMCArMSwxNjEgQEAKKy8qDQorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAqIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2NyZWVuLndlYnN0YXJ0Ow0KKw0KK2ltcG9ydCBqYXZhLmF3dC5SZWN0YW5nbGU7DQoraW1wb3J0IGphdmEuYXd0LlJvYm90Ow0KK2ltcG9ydCBqYXZhLmF3dC5pbWFnZS5CdWZmZXJlZEltYWdlOw0KK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOw0KKw0KK2ltcG9ydCBvcmcuYXBhY2hlLm1pbmEuY29yZS5idWZmZXIuSW9CdWZmZXI7DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnNjcmVlbi53ZWJzdGFydC5ndWkuU2NyZWVuRGltZW5zaW9uczsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2NyZWVuLndlYnN0YXJ0Lmd1aS5TY3JlZW5EaW1lbnNpb25zLlNjcmVlblF1YWxpdHk7DQoraW1wb3J0IG9yZy5yZWQ1LnNlcnZlci5uZXQucnRtcC5ldmVudC5BdWRpb0RhdGE7DQoraW1wb3J0IG9yZy5yZWQ1LnNlcnZlci5uZXQucnRtcC5ldmVudC5WaWRlb0RhdGE7DQoraW1wb3J0IG9yZy5yZWQ1LnNlcnZlci5zdHJlYW0ubWVzc2FnZS5SVE1QTWVzc2FnZTsNCisNCitmaW5hbCBjbGFzcyBDYXB0dXJlU2NyZWVuIGV4dGVuZHMgVGhyZWFkIHsNCisJcHJpdmF0ZSBDb3JlU2NyZWVuU2hhcmUgY29yZTsNCisJcHJpdmF0ZSBpbnQgdGltZUJldHdlZW5GcmFtZXMgPSA1MDA7IC8vIGZyYW1lUmF0ZQ0KKwlwcml2YXRlIHZvbGF0aWxlIGxvbmcgdGltZXN0YW1wID0gMDsNCisJcHJpdmF0ZSB2b2xhdGlsZSBib29sZWFuIGFjdGl2ZSA9IHRydWU7DQorCXByaXZhdGUgSVNjcmVlbkVuY29kZXIgc2U7DQorCXByaXZhdGUgSVNjcmVlblNoYXJlIGNsaWVudDsNCisJcHJpdmF0ZSBJb0J1ZmZlciBidWZmZXI7DQorCXByaXZhdGUgU3RyaW5nIGhvc3QgPSBudWxsOw0KKwlwcml2YXRlIFN0cmluZyBhcHAgPSBudWxsOw0KKwlwcml2YXRlIGludCBwb3J0ID0gLTE7DQorCXByaXZhdGUgaW50IHN0cmVhbUlkOw0KKwlwcml2YXRlIGJvb2xlYW4gc3RhcnRQdWJsaXNoID0gZmFsc2U7DQorCXByaXZhdGUgYm9vbGVhbiBzZW5kQ3Vyc29yID0gZmFsc2U7DQorDQorCXB1YmxpYyBDYXB0dXJlU2NyZWVuKENvcmVTY3JlZW5TaGFyZSBjb3JlU2NyZWVuU2hhcmUsIElTY3JlZW5TaGFyZSBjbGllbnQsIFN0cmluZyBob3N0LCBTdHJpbmcgYXBwLCBpbnQgcG9ydCkgew0KKwkJY29yZSA9IGNvcmVTY3JlZW5TaGFyZTsNCisJCXRoaXMuY2xpZW50ID0gY2xpZW50Ow0KKwkJdGhpcy5ob3N0ID0gaG9zdDsNCisJCXRoaXMuYXBwID0gYXBwOw0KKwkJdGhpcy5wb3J0ID0gcG9ydDsNCisJCXRpbWVCZXR3ZWVuRnJhbWVzID0gKFNjcmVlbkRpbWVuc2lvbnMucXVhbGl0eSA9PSBTY3JlZW5RdWFsaXR5LlZlcnlIaWdoKSA/IDEwMCA6IDUwMDsNCisJCXNlID0gbmV3IFNjcmVlblYxRW5jb2RlcigpOw0KKwl9DQorDQorCXB1YmxpYyB2b2lkIHJlbGVhc2UoKSB7DQorCQlhY3RpdmUgPSBmYWxzZTsNCisJfQ0KKw0KKwlwdWJsaWMgdm9pZCByZXNldEJ1ZmZlcigpIHsNCisJCXNlLnJlc2V0KCk7DQorCX0NCisNCisJcHVibGljIHZvaWQgcnVuKCkgew0KKwkJdHJ5IHsNCisJCQl3aGlsZSAoYWN0aXZlICYmICFjb3JlLmlzUmVhZHlUb1JlY29yZCgpKSB7DQorCQkJCVRocmVhZC5zbGVlcCg2MCk7DQorCQkJfQ0KKwkJCVJvYm90IHJvYm90ID0gbmV3IFJvYm90KCk7DQorCQkJQnVmZmVyZWRJbWFnZSBpbWFnZSA9IG51bGw7DQorCQkJd2hpbGUgKGFjdGl2ZSkgew0KKwkJCQlmaW5hbCBsb25nIGN0aW1lID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCk7DQorCQkJCVJlY3RhbmdsZSBzY3JlZW4gPSBuZXcgUmVjdGFuZ2xlKFNjcmVlbkRpbWVuc2lvbnMuc3Bpbm5lclgsDQorCQkJCQkJU2NyZWVuRGltZW5zaW9ucy5zcGlubmVyWSwNCisJCQkJCQlTY3JlZW5EaW1lbnNpb25zLnNwaW5uZXJXaWR0aCwNCisJCQkJCQlTY3JlZW5EaW1lbnNpb25zLnNwaW5uZXJIZWlnaHQpOw0KKwkJCQkNCisJCQkJaW1hZ2UgPSByb2JvdC5jcmVhdGVTY3JlZW5DYXB0dXJlKHNjcmVlbik7DQorDQorCQkJCXRyeSB7DQorCQkJCQl0aW1lc3RhbXAgKz0gdGltZUJldHdlZW5GcmFtZXM7DQorCQkJCQlieXRlW10gZGF0YSA9IHNlLmVuY29kZShzY3JlZW4sIGltYWdlLCBuZXcgUmVjdGFuZ2xlKFNjcmVlbkRpbWVuc2lvbnMucmVzaXplWCwNCisJCQkJCQkJU2NyZWVuRGltZW5zaW9ucy5yZXNpemVZKSk7DQorDQorCQkJCQlwdXNoVmlkZW8oZGF0YSwgdGltZXN0YW1wKTsNCisJCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsNCisJCQkJCWUucHJpbnRTdGFja1RyYWNlKCk7DQorCQkJCX0NCisJCQkJZmluYWwgaW50IHNwZW50ID0gKGludCkgKFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpIC0gY3RpbWUpOw0KKw0KKwkJCQlpZiAoc2VuZEN1cnNvcikgew0KKwkJCQkJY29yZS5zZW5kQ3Vyc29yU3RhdHVzKCk7DQorCQkJCX0NCisJCQkJVGhyZWFkLnNsZWVwKE1hdGgubWF4KDAsIHRpbWVCZXR3ZWVuRnJhbWVzIC0gc3BlbnQpKTsNCisJCQl9DQorCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgew0KKwkJCWUucHJpbnRTdGFja1RyYWNlKCk7DQorCQl9DQorCX0NCisJDQorCXByaXZhdGUgdm9pZCBwdXNoQXVkaW8oYnl0ZVtdIGF1ZGlvLCBsb25nIHRzKSB7DQorCQlpZiAoc3RhcnRQdWJsaXNoKSB7DQorCQkJYnVmZmVyLnB1dCgoYnl0ZSkgNik7DQorCQkJYnVmZmVyLnB1dChhdWRpbyk7DQorCQkJYnVmZmVyLmZsaXAoKTsNCisJDQorCQkJLy8gSSBjYW4gc3RyZWFtIGF1ZGlvDQorCQkJLy9wYWNrZXRzIHN1Y2Nlc3NmdWxseSB1c2luZyBsaW5lYXIgUENNIGF0IDExMDI1SHouIEZvciB0aG9zZSBwYWNrZXRzIEkNCisJCQkvL3B1c2ggb25lIGJ5dGUgKDB4MDYpIHdoaWNoIHNwZWNpZmllcyB0aGUgZm9ybWF0IG9mIGF1ZGlvIGRhdGEgaW4gYQ0KKwkJCS8vQnl0ZUJ1ZmZlciwgYW5kIHRoZW4gcmVhbCBhdWRpbyBkYXRhOg0KKwkJCVJUTVBNZXNzYWdlIHJ0bXBNc2cgPSBSVE1QTWVzc2FnZS5idWlsZChuZXcgQXVkaW9EYXRhKGJ1ZmZlciksIChpbnQpIHRzKTsNCisJCQljbGllbnQucHVibGlzaFN0cmVhbURhdGEoc3RyZWFtSWQsIHJ0bXBNc2cpOw0KKwkJfQ0KKwl9DQorDQorCXByaXZhdGUgdm9pZCBwdXNoVmlkZW8oYnl0ZVtdIHZpZGVvLCBsb25nIHRzKSB0aHJvd3MgSU9FeGNlcHRpb24gew0KKwkJaWYgKHN0YXJ0UHVibGlzaCkgew0KKwkJCWlmIChidWZmZXIgPT0gbnVsbCB8fCAoYnVmZmVyLmNhcGFjaXR5KCkgPCB2aWRlby5sZW5ndGggJiYgIWJ1ZmZlci5pc0F1dG9FeHBhbmQoKSkpIHsNCisJCQkJYnVmZmVyID0gSW9CdWZmZXIuYWxsb2NhdGUodmlkZW8ubGVuZ3RoKTsNCisJCQkJYnVmZmVyLnNldEF1dG9FeHBhbmQodHJ1ZSk7DQorCQkJfQ0KKwkNCisJCQlidWZmZXIuY2xlYXIoKTsNCisJCQlidWZmZXIucHV0KHZpZGVvKTsNCisJCQlidWZmZXIuZmxpcCgpOw0KKwkNCisJCQlSVE1QTWVzc2FnZSBydG1wTXNnID0gUlRNUE1lc3NhZ2UuYnVpbGQobmV3IFZpZGVvRGF0YShidWZmZXIpLCAoaW50KSB0cyk7DQorCQkJY2xpZW50LnB1Ymxpc2hTdHJlYW1EYXRhKHN0cmVhbUlkLCBydG1wTXNnKTsNCisJCX0NCisJfQ0KKw0KKwlwdWJsaWMgU3RyaW5nIGdldEhvc3QoKSB7DQorCQlyZXR1cm4gaG9zdDsNCisJfQ0KKw0KKwlwdWJsaWMgU3RyaW5nIGdldEFwcCgpIHsNCisJCXJldHVybiBhcHA7DQorCX0NCisNCisJcHVibGljIGludCBnZXRQb3J0KCkgew0KKwkJcmV0dXJuIHBvcnQ7DQorCX0NCisNCisJcHVibGljIGludCBnZXRTdHJlYW1JZCgpIHsNCisJCXJldHVybiBzdHJlYW1JZDsNCisJfQ0KKw0KKwlwdWJsaWMgdm9pZCBzZXRTdHJlYW1JZChpbnQgc3RyZWFtSWQpIHsNCisJCXRoaXMuc3RyZWFtSWQgPSBzdHJlYW1JZDsNCisJfQ0KKw0KKwlwdWJsaWMgdm9pZCBzZXRTdGFydFB1Ymxpc2goYm9vbGVhbiBzdGFydFB1Ymxpc2gpIHsNCisJCXRoaXMuc3RhcnRQdWJsaXNoID0gc3RhcnRQdWJsaXNoOw0KKwl9DQorDQorCXB1YmxpYyB2b2lkIHNldFNlbmRDdXJzb3IoYm9vbGVhbiBzZW5kQ3Vyc29yKSB7DQorCQl0aGlzLnNlbmRDdXJzb3IgPSBzZW5kQ3Vyc29yOw0KKwl9DQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zY3JlZW4vd2Vic3RhcnQvQ29yZVNjcmVlblNoYXJlLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2NyZWVuL3dlYnN0YXJ0L0NvcmVTY3JlZW5TaGFyZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmMzA0YmQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2NyZWVuL3dlYnN0YXJ0L0NvcmVTY3JlZW5TaGFyZS5qYXZhCkBAIC0wLDAgKzEsODAwIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnNjcmVlbi53ZWJzdGFydDsKKworaW1wb3J0IGphdmEuYXd0Lk1vdXNlSW5mbzsKK2ltcG9ydCBqYXZhLmF3dC5Qb2ludDsKK2ltcG9ydCBqYXZhLmF3dC5Qb2ludGVySW5mbzsKK2ltcG9ydCBqYXZhLmF3dC5Sb2JvdDsKK2ltcG9ydCBqYXZhLmF3dC5Ub29sa2l0OworaW1wb3J0IGphdmEuYXd0LmRhdGF0cmFuc2Zlci5DbGlwYm9hcmQ7CitpbXBvcnQgamF2YS5hd3QuZGF0YXRyYW5zZmVyLkRhdGFGbGF2b3I7CitpbXBvcnQgamF2YS5hd3QuZGF0YXRyYW5zZmVyLlN0cmluZ1NlbGVjdGlvbjsKK2ltcG9ydCBqYXZhLmF3dC5kYXRhdHJhbnNmZXIuVHJhbnNmZXJhYmxlOworaW1wb3J0IGphdmEuYXd0LmRhdGF0cmFuc2Zlci5VbnN1cHBvcnRlZEZsYXZvckV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5JbnB1dEV2ZW50OworaW1wb3J0IGphdmEuYXd0LmV2ZW50LktleUV2ZW50OworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworaW1wb3J0IGphdmEudXRpbC5NYXA7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5zY3JlZW4ud2Vic3RhcnQuZ3VpLlNjcmVlbkRpbWVuc2lvbnM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2NyZWVuLndlYnN0YXJ0Lmd1aS5TY3JlZW5TaGFyZXJGcmFtZTsKK2ltcG9ydCBvcmcucmVkNS5jbGllbnQubmV0LnJ0bXAuSU5ldFN0cmVhbUV2ZW50SGFuZGxlcjsKK2ltcG9ydCBvcmcucmVkNS5pby51dGlscy5PYmplY3RNYXA7CitpbXBvcnQgb3JnLnJlZDUuc2VydmVyLmFwaS5ldmVudC5JRXZlbnQ7CitpbXBvcnQgb3JnLnJlZDUuc2VydmVyLmFwaS5zZXJ2aWNlLklQZW5kaW5nU2VydmljZUNhbGw7CitpbXBvcnQgb3JnLnJlZDUuc2VydmVyLmFwaS5zZXJ2aWNlLklQZW5kaW5nU2VydmljZUNhbGxiYWNrOworaW1wb3J0IG9yZy5yZWQ1LnNlcnZlci5uZXQucnRtcC5DaGFubmVsOworaW1wb3J0IG9yZy5yZWQ1LnNlcnZlci5uZXQucnRtcC5SVE1QQ29ubmVjdGlvbjsKK2ltcG9ydCBvcmcucmVkNS5zZXJ2ZXIubmV0LnJ0bXAuY29kZWMuUlRNUDsKK2ltcG9ydCBvcmcucmVkNS5zZXJ2ZXIubmV0LnJ0bXAuZXZlbnQuTm90aWZ5OworaW1wb3J0IG9yZy5yZWQ1LnNlcnZlci5uZXQucnRtcC5tZXNzYWdlLkhlYWRlcjsKK2ltcG9ydCBvcmcucmVkNS5zZXJ2ZXIubmV0LnJ0bXAuc3RhdHVzLlN0YXR1c0NvZGVzOworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlckZhY3Rvcnk7CisKK3B1YmxpYyBjbGFzcyBDb3JlU2NyZWVuU2hhcmUgaW1wbGVtZW50cyBJUGVuZGluZ1NlcnZpY2VDYWxsYmFjaywgSU5ldFN0cmVhbUV2ZW50SGFuZGxlciB7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZ2dlciA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKENvcmVTY3JlZW5TaGFyZS5jbGFzcyk7CisKKwlwcml2YXRlIElTY3JlZW5TaGFyZSBpbnN0YW5jZSA9IG51bGw7CisJcHJpdmF0ZSBTdHJpbmcgaG9zdDsKKwlwcml2YXRlIFN0cmluZyBhcHA7CisJcHJpdmF0ZSBpbnQgcG9ydDsKKwkKKwlwdWJsaWMgU3RyaW5nIHB1Ymxpc2hOYW1lOworCXByaXZhdGUgQ2FwdHVyZVNjcmVlbiBjYXB0dXJlID0gbnVsbDsKKwlwcml2YXRlIFJUTVBDbGllbnRQdWJsaXNoIHB1Ymxpc2hDbGllbnQgPSBudWxsOworCisJcHJpdmF0ZSBTY3JlZW5TaGFyZXJGcmFtZSBmcmFtZTsKKworCXB1YmxpYyBpbnQgZGVmYXVsdFF1YWxpdHkgPSAxOworCisJcHVibGljIExvbmcgb3JnYW5pemF0aW9uX2lkID0gMEw7CisJcHVibGljIExvbmcgdXNlcl9pZCA9IG51bGw7CisJcHJpdmF0ZSBib29sZWFuIGFsbG93UmVjb3JkaW5nID0gdHJ1ZTsKKwlwcml2YXRlIGJvb2xlYW4gYWxsb3dQdWJsaXNoaW5nID0gdHJ1ZTsKKworCXByaXZhdGUgYm9vbGVhbiBzdGFydFN0cmVhbWluZyA9IGZhbHNlOworCXByaXZhdGUgYm9vbGVhbiBzdGFydFJlY29yZGluZyA9IGZhbHNlOworCXByaXZhdGUgYm9vbGVhbiBzdGFydFB1Ymxpc2hpbmcgPSBmYWxzZTsKKwlwdWJsaWMgZmxvYXQgQW1wbF9mYWN0b3IgPSAxZjsKKwlwdWJsaWMgYm9vbGVhbiBpc0Nvbm5lY3RlZCA9IGZhbHNlOworCXByaXZhdGUgYm9vbGVhbiByZWFkeVRvUmVjb3JkID0gZmFsc2U7CisKKwlwdWJsaWMgTWFwPEludGVnZXIsIEJvb2xlYW4+IGN1cnJlbnRQcmVzc2VkS2V5cyA9IG5ldyBIYXNoTWFwPEludGVnZXIsIEJvb2xlYW4+KCk7CisKKwlwcml2YXRlIENhcHR1cmVTY3JlZW4gZ2V0Q2FwdHVyZSgpIHsKKwkJaWYgKGNhcHR1cmUgPT0gbnVsbCkgeworCQkJY2FwdHVyZSA9IG5ldyBDYXB0dXJlU2NyZWVuKHRoaXMsIGluc3RhbmNlLCBob3N0LCBhcHAsIHBvcnQpOworCQl9CisJCXJldHVybiBjYXB0dXJlOworCX0KKwkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwkvLworCS8vIE1haW4KKwkvLworCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisJcHVibGljIENvcmVTY3JlZW5TaGFyZShJU2NyZWVuU2hhcmUgaW5zdGFuY2UsIFN0cmluZ1tdIGFyZ3MpIHsKKwkJdGhpcy5pbnN0YW5jZSA9IGluc3RhbmNlOworCQkKKwkJdHJ5IHsKKwkJCWZvciAoU3RyaW5nIGFyZyA6IGFyZ3MpIHsKKwkJCQlsb2dnZXIuZGVidWcoImFyZzogIiArIGFyZyk7CisJCQl9CisJCQlTdHJpbmdbXSB0ZXh0QXJyYXkgPSBudWxsOworCQkJaWYgKGFyZ3MubGVuZ3RoID4gOCkgeworCQkJCWhvc3QgPSBhcmdzWzBdOworCQkJCWFwcCA9IGFyZ3NbMV07CisJCQkJcG9ydCA9IEludGVnZXIucGFyc2VJbnQoYXJnc1syXSk7CisJCQkJcHVibGlzaE5hbWUgPSBhcmdzWzNdOworCisJCQkJU3RyaW5nIGxhYmVsVGV4dHMgPSBhcmdzWzRdOworCisJCQkJb3JnYW5pemF0aW9uX2lkID0gTG9uZy5wYXJzZUxvbmcoYXJnc1s1XSk7CisKKwkJCQlkZWZhdWx0UXVhbGl0eSA9IEludGVnZXIucGFyc2VJbnQoYXJnc1s2XSk7CisJCQkJdXNlcl9pZCA9IExvbmcucGFyc2VMb25nKGFyZ3NbN10pOworCQkJCWFsbG93UmVjb3JkaW5nID0gQm9vbGVhbi52YWx1ZU9mKGFyZ3NbOF0pOworCQkJCWFsbG93UHVibGlzaGluZyA9IEJvb2xlYW4udmFsdWVPZihhcmdzWzldKTsKKworCQkJCWlmIChsYWJlbFRleHRzLmxlbmd0aCgpID4gMCkgeworCQkJCQl0ZXh0QXJyYXkgPSBsYWJlbFRleHRzLnNwbGl0KCI7Iik7CisKKwkJCQkJbG9nZ2VyLmRlYnVnKCJsYWJlbFRleHRzIDo6ICIgKyBsYWJlbFRleHRzKTsKKworCQkJCQlsb2dnZXIuZGVidWcoInRleHRBcnJheSBMZW5ndGggIiArIHRleHRBcnJheS5sZW5ndGgpOworCisJCQkJCWZvciAoaW50IGkgPSAwOyBpIDwgdGV4dEFycmF5Lmxlbmd0aDsgaSsrKSB7CisJCQkJCQlsb2dnZXIuZGVidWcoaSArICIgOjogIiArIHRleHRBcnJheVtpXSk7CisJCQkJCX0KKwkJCQl9CisJCQkJbG9nZ2VyLmRlYnVnKCJob3N0OiAiICsgaG9zdCArICIsIGFwcDogIgorCQkJCQkJKyBhcHAgKyAiLCBwb3J0OiAiICsgcG9ydCArICIsIHB1Ymxpc2g6ICIKKwkJCQkJCSsgcHVibGlzaE5hbWUpOworCQkJfSBlbHNlIHsKKwkJCQlTeXN0ZW0uZXhpdCgwKTsKKwkJCX0KKworCQkJY3JlYXRlV2luZG93KHRleHRBcnJheSk7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZ2dlci5lcnJvcigiIiwgZXJyKTsKKwkJfQorCX0KKworCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCS8vCisJLy8gR1VJCisJLy8KKwkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlwdWJsaWMgdm9pZCBjcmVhdGVXaW5kb3coU3RyaW5nW10gdGV4dEFycmF5KSB7CisJCXRyeSB7CisJCQlmcmFtZSA9IG5ldyBTY3JlZW5TaGFyZXJGcmFtZSh0aGlzLCB0ZXh0QXJyYXkpOworCQkJZnJhbWUuc2V0VmlzaWJsZSh0cnVlKTsKKwkJCWZyYW1lLnNldFJlY29yZGluZ1RhYkVuYWJsZWQoYWxsb3dSZWNvcmRpbmcpOworCQkJZnJhbWUuc2V0UHVibGlzaGluZ1RhYkVuYWJsZWQoYWxsb3dQdWJsaXNoaW5nKTsKKwkJCWxvZ2dlci5kZWJ1ZygiaW5pdGlhbGl6ZWQiKTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nZ2VyLmVycm9yKCJjcmVhdGVXaW5kb3cgRXhjZXB0aW9uOiAiLCBlcnIpOworCQkJZXJyLnByaW50U3RhY2tUcmFjZSgpOworCQl9CisJfQorCisJc3luY2hyb25pemVkIHB1YmxpYyB2b2lkIHNlbmRDdXJzb3JTdGF0dXMoKSB7CisJCXRyeSB7CisJCQlQb2ludGVySW5mbyBhID0gTW91c2VJbmZvLmdldFBvaW50ZXJJbmZvKCk7CisJCQlQb2ludCBtb3VzZVAgPSBhLmdldExvY2F0aW9uKCk7CisKKwkJCWZsb2F0IHNjYWxlRmFjdG9yID0gKDEuMGYgKiBTY3JlZW5EaW1lbnNpb25zLnJlc2l6ZVgpIC8gU2NyZWVuRGltZW5zaW9ucy5zcGlubmVyV2lkdGg7CisKKwkJCS8vIFJlYWwgc2l6ZTogUmVhbCBtb3VzZSBwb3NpdGlvbiA9IFJlc2l6ZSA6IFgKKwkJCWludCB4ID0gKGludCkoQW1wbF9mYWN0b3IgKiAobW91c2VQLmdldFgoKSAtIFNjcmVlbkRpbWVuc2lvbnMuc3Bpbm5lclgpICogc2NhbGVGYWN0b3IpOworCQkJaW50IHkgPSAoaW50KShBbXBsX2ZhY3RvciAqIChtb3VzZVAuZ2V0WSgpIC0gU2NyZWVuRGltZW5zaW9ucy5zcGlubmVyWSkgKiBzY2FsZUZhY3Rvcik7CisKKwkJCUhhc2hNYXA8U3RyaW5nLCBPYmplY3Q+IGN1cnNvclBvc2l0aW9uID0gbmV3IEhhc2hNYXA8U3RyaW5nLCBPYmplY3Q+KCk7CisJCQljdXJzb3JQb3NpdGlvbi5wdXQoInB1YmxpY1NJRCIsIHRoaXMucHVibGlzaE5hbWUpOworCQkJY3Vyc29yUG9zaXRpb24ucHV0KCJjdXJzb3JfeCIsIHgpOworCQkJY3Vyc29yUG9zaXRpb24ucHV0KCJjdXJzb3JfeSIsIHkpOworCisJCQlpZiAoaW5zdGFuY2UuZ2V0Q29ubmVjdGlvbigpICE9IG51bGwpIHsKKwkJCQlpbnN0YW5jZS5pbnZva2UoInNldE5ld0N1cnNvclBvc2l0aW9uIiwgbmV3IE9iamVjdFtdIHsgY3Vyc29yUG9zaXRpb24gfSwgdGhpcyk7CisJCQl9CisJCX0gY2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIG5wZSkgeworCQkJLy9ub29wCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCVN5c3RlbS5vdXQucHJpbnRsbigiY2FwdHVyZVNjcmVlblN0YXJ0IEV4Y2VwdGlvbjogIik7CisJCQlTeXN0ZW0uZXJyLnByaW50bG4oZXJyKTsKKwkJCWZyYW1lLnNldFN0YXR1cygiRXhjZXB0aW9uOiAiICsgZXJyKTsKKwkJCWxvZ2dlci5lcnJvcigiW3NlbmRDdXJzb3JTdGF0dXNdIiwgZXJyKTsKKwkJfQorCX0KKworCXN5bmNocm9uaXplZCBwdWJsaWMgdm9pZCBzZXRDb25uZWN0aW9uQXNTaGFyaW5nQ2xpZW50KCkgeworCQl0cnkgeworCQkJbG9nZ2VyLmRlYnVnKCIjIyMjIyMjIyMjIHNldENvbm5lY3Rpb25Bc1NoYXJpbmdDbGllbnQiKTsKKworCQkJSGFzaE1hcDxPYmplY3QsIE9iamVjdD4gbWFwID0gbmV3IEhhc2hNYXA8T2JqZWN0LCBPYmplY3Q+KCk7CisJCQltYXAucHV0KCJzY3JlZW5YIiwgU2NyZWVuRGltZW5zaW9ucy5zcGlubmVyWCk7CisJCQltYXAucHV0KCJzY3JlZW5ZIiwgU2NyZWVuRGltZW5zaW9ucy5zcGlubmVyWSk7CisKKwkJCWludCBzY2FsZWRXaWR0aCA9IChpbnQpKEFtcGxfZmFjdG9yICogU2NyZWVuRGltZW5zaW9ucy5yZXNpemVYKTsKKwkJCWludCBzY2FsZWRIZWlnaHQgPSAoaW50KShBbXBsX2ZhY3RvciAqIFNjcmVlbkRpbWVuc2lvbnMucmVzaXplWSk7CisKKwkJCW1hcC5wdXQoInNjcmVlbldpZHRoIiwgc2NhbGVkV2lkdGgpOworCQkJbWFwLnB1dCgic2NyZWVuSGVpZ2h0Iiwgc2NhbGVkSGVpZ2h0KTsKKworCQkJbWFwLnB1dCgicHVibGlzaE5hbWUiLCB0aGlzLnB1Ymxpc2hOYW1lKTsKKwkJCW1hcC5wdXQoInN0YXJ0UmVjb3JkaW5nIiwgc3RhcnRSZWNvcmRpbmcpOworCQkJbWFwLnB1dCgic3RhcnRTdHJlYW1pbmciLCBzdGFydFN0cmVhbWluZyk7CisJCQltYXAucHV0KCJzdGFydFB1Ymxpc2hpbmciLCBzdGFydFB1Ymxpc2hpbmcpOworCQkJbWFwLnB1dCgicHVibGlzaGluZ0hvc3QiLCBmcmFtZS5nZXRQdWJsaXNoSG9zdCgpKTsKKwkJCW1hcC5wdXQoInB1Ymxpc2hpbmdBcHAiLCBmcmFtZS5nZXRQdWJsaXNoQXBwKCkpOworCQkJbWFwLnB1dCgicHVibGlzaGluZ0lkIiwgZnJhbWUuZ2V0UHVibGlzaElkKCkpOworCisJCQltYXAucHV0KCJvcmdhbml6YXRpb25faWQiLCB0aGlzLm9yZ2FuaXphdGlvbl9pZCk7CisJCQltYXAucHV0KCJ1c2VyX2lkIiwgdGhpcy51c2VyX2lkKTsKKworCQkJaW5zdGFuY2UuaW52b2tlKCJzZXRDb25uZWN0aW9uQXNTaGFyaW5nQ2xpZW50IiwgbmV3IE9iamVjdFtdIHsgbWFwIH0sIHRoaXMpOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2dnZXIuZXJyb3IoInNldENvbm5lY3Rpb25Bc1NoYXJpbmdDbGllbnQgRXhjZXB0aW9uOiAiLCBlcnIpOworCQkJZnJhbWUuc2V0U3RhdHVzKCJFcnJvcjogIiArIGVyci5nZXRMb2NhbGl6ZWRNZXNzYWdlKCkpOworCQkJbG9nZ2VyLmVycm9yKCJbc2V0Q29ubmVjdGlvbkFzU2hhcmluZ0NsaWVudF0iLCBlcnIpOworCQl9CisJfQorCisJLyoqCisJICogQHBhcmFtIHN0YXJ0U3RyZWFtaW5nIGZsYWcgZGVub3RpbmcgdGhlIHN0cmVhbWluZyBpcyBzdGFydGVkCisJICogQHBhcmFtIHN0YXJ0UmVjb3JkaW5nIGZsYWcgZGVub3RpbmcgdGhlIHJlY29yZGluZyBpcyBzdGFydGVkCisJICovCisJcHVibGljIHZvaWQgY2FwdHVyZVNjcmVlblN0YXJ0KGJvb2xlYW4gc3RhcnRTdHJlYW1pbmcsIGJvb2xlYW4gc3RhcnRSZWNvcmRpbmcpIHsKKwkJY2FwdHVyZVNjcmVlblN0YXJ0KHN0YXJ0U3RyZWFtaW5nLCBzdGFydFJlY29yZGluZywgZmFsc2UpOworCX0KKworCXB1YmxpYyB2b2lkIGNhcHR1cmVTY3JlZW5TdGFydChib29sZWFuIHN0YXJ0U3RyZWFtaW5nLCBib29sZWFuIHN0YXJ0UmVjb3JkaW5nLCBib29sZWFuIHN0YXJ0UHVibGlzaGluZykgeworCQl0cnkgeworCQkJbG9nZ2VyLmRlYnVnKCJjYXB0dXJlU2NyZWVuU3RhcnQiKTsKKwkJCXRoaXMuc3RhcnRTdHJlYW1pbmcgPSBzdGFydFN0cmVhbWluZzsKKwkJCXRoaXMuc3RhcnRSZWNvcmRpbmc9IHN0YXJ0UmVjb3JkaW5nOworCQkJdGhpcy5zdGFydFB1Ymxpc2hpbmcgPSBzdGFydFB1Ymxpc2hpbmc7CisJCQkKKwkJCWlmICghaXNDb25uZWN0ZWQpIHsKKwkJCQlpbnN0YW5jZS5jb25uZWN0KGhvc3QsIHBvcnQsIGFwcCwgdGhpcyk7CisJCQl9IGVsc2UgeworCQkJCXNldENvbm5lY3Rpb25Bc1NoYXJpbmdDbGllbnQoKTsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nZ2VyLmVycm9yKCJjYXB0dXJlU2NyZWVuU3RhcnQgRXhjZXB0aW9uOiAiLCBlcnIpOworCQkJZnJhbWUuc2V0U3RhdHVzKCJFeGNlcHRpb246ICIgKyBlcnIpOworCQl9CisJfQorCisJcHVibGljIHZvaWQgc2VuZENhcHR1cmVTY3JlZW5TdG9wKGJvb2xlYW4gc3RvcFN0cmVhbWluZywgYm9vbGVhbiBzdG9wUmVjb3JkaW5nKSB7CisJCXRyeSB7CisJCQlsb2dnZXIuZGVidWcoIklOVk9LRSBzY3JlZW5TaGFyZXJBY3Rpb24iICk7CisKKwkJCU1hcDxTdHJpbmcsIE9iamVjdD4gbWFwID0gbmV3IEhhc2hNYXA8U3RyaW5nLCBPYmplY3Q+KCk7CisJCQltYXAucHV0KCJzdG9wU3RyZWFtaW5nIiwgc3RvcFN0cmVhbWluZyk7CisJCQltYXAucHV0KCJzdG9wUmVjb3JkaW5nIiwgc3RvcFJlY29yZGluZyk7CisKKwkJCWluc3RhbmNlLmludm9rZSgic2NyZWVuU2hhcmVyQWN0aW9uIiwgbmV3IE9iamVjdFtdIHsgbWFwIH0sIHRoaXMpOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2dnZXIuZXJyb3IoImNhcHR1cmVTY3JlZW5TdG9wIEV4Y2VwdGlvbjogIiwgZXJyKTsKKwkJCWZyYW1lLnNldFN0YXR1cygiRXhjZXB0aW9uOiAiICsgZXJyKTsKKwkJfQorCX0KKworCXB1YmxpYyB2b2lkIHNlbmRTdG9wUHVibGlzaGluZygpIHsKKwkJTWFwPFN0cmluZywgT2JqZWN0PiBtYXAgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIE9iamVjdD4oKTsKKwkJbWFwLnB1dCgic3RvcFB1Ymxpc2hpbmciLCB0cnVlKTsKKwkJaW5zdGFuY2UuaW52b2tlKCJzY3JlZW5TaGFyZXJBY3Rpb24iLCBuZXcgT2JqZWN0W10geyBtYXAgfSwgdGhpcyk7CisJfQorCQorCXB1YmxpYyB2b2lkIHN0b3BTdHJlYW1pbmcoKSB7CisJCXN0YXJ0U3RyZWFtaW5nID0gZmFsc2U7CisJCWZyYW1lLnNldFNoYXJpbmdTdGF0dXMoZmFsc2UsICFzdGFydFB1Ymxpc2hpbmcgJiYgIXN0YXJ0UmVjb3JkaW5nICYmICFzdGFydFN0cmVhbWluZyk7CisJfQorCQorCXB1YmxpYyB2b2lkIHN0b3BSZWNvcmRpbmcoKSB7CisJCXN0YXJ0UmVjb3JkaW5nID0gZmFsc2U7CisJCWZyYW1lLnNldFJlY29yZGluZ1N0YXR1cyhmYWxzZSwgIXN0YXJ0UHVibGlzaGluZyAmJiAhc3RhcnRSZWNvcmRpbmcgJiYgIXN0YXJ0U3RyZWFtaW5nKTsKKwl9CisJCisJcHVibGljIHZvaWQgc3RvcFB1Ymxpc2hpbmcoKSB7CisJCXN0YXJ0UHVibGlzaGluZyA9IGZhbHNlOworCQlmcmFtZS5zZXRQdWJsaXNoaW5nU3RhdHVzKGZhbHNlLCAhc3RhcnRQdWJsaXNoaW5nICYmICFzdGFydFJlY29yZGluZyAmJiAhc3RhcnRTdHJlYW1pbmcpOworCQlpZiAocHVibGlzaENsaWVudCAhPSBudWxsKSB7CisJCQlwdWJsaXNoQ2xpZW50LmRpc2Nvbm5lY3QoKTsKKwkJCXB1Ymxpc2hDbGllbnQgPSBudWxsOworCQl9CisJfQorCQorCXN5bmNocm9uaXplZCBwdWJsaWMgYm9vbGVhbiBpc1JlYWR5VG9SZWNvcmQoKSB7CisJCXJldHVybiByZWFkeVRvUmVjb3JkOworCX0KKwkKKwlzeW5jaHJvbml6ZWQgcHJpdmF0ZSB2b2lkIHNldFJlYWR5VG9SZWNvcmQoYm9vbGVhbiByZWFkeVRvUmVjb3JkKSB7CisJCXRoaXMucmVhZHlUb1JlY29yZCA9IHJlYWR5VG9SZWNvcmQ7CisJfQorCQorCXByb3RlY3RlZCB2b2lkIG9uSW52b2tlKFJUTVBDb25uZWN0aW9uIGNvbm4sIENoYW5uZWwgY2hhbm5lbCwKKwkJCUhlYWRlciBzb3VyY2UsIE5vdGlmeSBpbnZva2UsIFJUTVAgcnRtcCkgeworCisJCWlmIChpbnZva2UuZ2V0VHlwZSgpID09IElFdmVudC5UeXBlLlNUUkVBTV9EQVRBKSB7CisJCQlyZXR1cm47CisJCX0KKwkJCisJCVN0cmluZyBtZXRob2QgPSBpbnZva2UuZ2V0Q2FsbCgpLmdldFNlcnZpY2VNZXRob2ROYW1lKCk7CisJCWlmICgic3RvcFN0cmVhbSIuZXF1YWxzKG1ldGhvZCkpIHsKKwkJCXN0b3BTdHJlYW0oKTsKKwkJfSBlbHNlIGlmICgic2VuZFJlbW90ZUN1cnNvckV2ZW50Ii5lcXVhbHMobWV0aG9kKSkgeworCQkJc2VuZFJlbW90ZUN1cnNvckV2ZW50KGludm9rZS5nZXRDYWxsKCkuZ2V0QXJndW1lbnRzKClbMF0pOworCQl9IGVsc2UgaWYgKCJzY3JlZW5TaGFyZXJBY3Rpb24iLmVxdWFscyhtZXRob2QpKSB7CisJCQlPYmplY3RbXSBhcmdzID0gaW52b2tlLmdldENhbGwoKS5nZXRBcmd1bWVudHMoKTsKKwkJCWlmIChhcmdzICE9IG51bGwgJiYgYXJncy5sZW5ndGggPiAwKSB7CisJCQkJQFN1cHByZXNzV2FybmluZ3MoInVuY2hlY2tlZCIpCisJCQkJSGFzaE1hcDxTdHJpbmcsIE9iamVjdD4gcGFyYW1zID0gKEhhc2hNYXA8U3RyaW5nLCBPYmplY3Q+KWFyZ3NbMF07CisJCQkJaWYgKHBhcmFtcy5jb250YWluc0tleSgic3RvcFB1Ymxpc2hpbmciKQorCQkJCQkmJiBCb29sZWFuLnZhbHVlT2YoIiIgKyBwYXJhbXMuZ2V0KCJzdG9wUHVibGlzaGluZyIpKSkgeworCQkJCQlzdG9wUHVibGlzaGluZygpOworCQkJCX0KKwkJCQlpZiAocGFyYW1zLmNvbnRhaW5zS2V5KCJlcnJvciIpKSB7CisJCQkJCWZyYW1lLnNldFN0YXR1cygiIiArIHBhcmFtcy5nZXQoImVycm9yIikpOworCQkJCX0KKwkJCX0KKwkJfQorCX0KKworCXB1YmxpYyB2b2lkIHN0b3BTdHJlYW0oKSB7CisJCXRyeSB7CisJCQlsb2dnZXIuZGVidWcoIlNjcmVlblNoYXJlIHN0b3BTdHJlYW0iKTsKKworCQkJc3RvcFN0cmVhbWluZygpOworCQkJc3RvcFJlY29yZGluZygpOworCQkJc3RvcFB1Ymxpc2hpbmcoKTsKKwkJCWlzQ29ubmVjdGVkID0gZmFsc2U7CisKKwkJCWluc3RhbmNlLmRpc2Nvbm5lY3QoKTsKKwkJCXNldFJlYWR5VG9SZWNvcmQoZmFsc2UpOworCQkJZ2V0Q2FwdHVyZSgpLnNldFN0YXJ0UHVibGlzaChmYWxzZSk7CisJCQlnZXRDYXB0dXJlKCkucmVsZWFzZSgpOworCQkJY2FwdHVyZSA9IG51bGw7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCQlsb2dnZXIuZXJyb3IoIlNjcmVlblNoYXJlIHN0b3BTdHJlYW0gZXhjZXB0aW9uICIgKyBlKTsKKwkJfQorCisJfQorCisJcHVibGljIHZvaWQgb25TdHJlYW1FdmVudChOb3RpZnkgbm90aWZ5KSB7CisKKwkJbG9nZ2VyLmRlYnVnKCAib25TdHJlYW1FdmVudCAiICsgbm90aWZ5ICk7CisKKwkJQFN1cHByZXNzV2FybmluZ3MoInJhd3R5cGVzIikKKwkJT2JqZWN0TWFwIG1hcCA9IChPYmplY3RNYXApIG5vdGlmeS5nZXRDYWxsKCkuZ2V0QXJndW1lbnRzKClbMF07CisJCVN0cmluZyBjb2RlID0gKFN0cmluZykgbWFwLmdldCgiY29kZSIpOworCisJCWlmIChTdGF0dXNDb2Rlcy5OU19QVUJMSVNIX1NUQVJULmVxdWFscyhjb2RlKSkgeworCQkJbG9nZ2VyLmRlYnVnKCAib25TdHJlYW1FdmVudCBQdWJsaXNoIHN0YXJ0IiApOworCQkJZ2V0Q2FwdHVyZSgpLnNldFN0YXJ0UHVibGlzaCh0cnVlKTsKKwkJCXNldFJlYWR5VG9SZWNvcmQodHJ1ZSk7CisJCX0KKwl9CisKKwlwdWJsaWMgdm9pZCBzZW5kUmVtb3RlQ3Vyc29yRXZlbnQoT2JqZWN0IG9iaikgeworCQl0cnkgeworCQkJbG9nZ2VyLnRyYWNlKCIjIyMjIHNlbmRSZW1vdGVDdXJzb3JFdmVudCAiKTsKKwkJCWxvZ2dlci50cmFjZSgiUmVzdWx0IE1hcCBUeXBlICIrb2JqLmdldENsYXNzKCkuZ2V0TmFtZSgpKTsKKworCQkJQFN1cHByZXNzV2FybmluZ3MoInJhd3R5cGVzIikKKwkJCU1hcCByZXR1cm5NYXAgPSAoTWFwKSBvYmo7CisKKwkJCVN0cmluZyBhY3Rpb24gPSAiIiArIHJldHVybk1hcC5nZXQoImFjdGlvbiIpOworCisJCQlpZiAoYWN0aW9uLmVxdWFscygib25tb3VzZXVwIikpIHsKKworCQkJCVJvYm90IHJvYm90ID0gbmV3IFJvYm90KCk7CisKKwkJCQlGbG9hdCBzY2FsZUZhY3RvciA9IEZsb2F0CisJCQkJCQkudmFsdWVPZihTY3JlZW5EaW1lbnNpb25zLnNwaW5uZXJXaWR0aCkKKwkJCQkJCS8gRmxvYXQudmFsdWVPZihTY3JlZW5EaW1lbnNpb25zLnJlc2l6ZVgpOworCisJCQkJRmxvYXQgcGFydF94MSA9ICgoRmxvYXQudmFsdWVPZihyZXR1cm5NYXAuZ2V0KCJ4IikudG9TdHJpbmcoKSkKKwkJCQkJCS5mbG9hdFZhbHVlKCkgKiBzY2FsZUZhY3RvcikgLyBGbG9hdAorCQkJCQkJLnZhbHVlT2YoQW1wbF9mYWN0b3IpKTsKKworCQkJCUludGVnZXIgeCA9IE1hdGgucm91bmQocGFydF94MSArIFNjcmVlbkRpbWVuc2lvbnMuc3Bpbm5lclgpOworCisJCQkJSW50ZWdlciB5ID0gTWF0aAorCQkJCQkJLnJvdW5kKCgoRmxvYXQudmFsdWVPZihyZXR1cm5NYXAuZ2V0KCJ5IikudG9TdHJpbmcoKSkKKwkJCQkJCQkJLmZsb2F0VmFsdWUoKQorCQkJCQkJCQkqIFNjcmVlbkRpbWVuc2lvbnMuc3Bpbm5lckhlaWdodCAvIFNjcmVlbkRpbWVuc2lvbnMucmVzaXplWSkgLyBBbXBsX2ZhY3RvcikKKwkJCQkJCQkJKyBTY3JlZW5EaW1lbnNpb25zLnNwaW5uZXJZKTsKKworCQkJCXJvYm90Lm1vdXNlTW92ZSh4LCB5KTsKKwkJCQlyb2JvdC5tb3VzZVJlbGVhc2UoSW5wdXRFdmVudC5CVVRUT04xX01BU0spOworCQkJfSBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKCJvbm1vdXNlZG93biIpKSB7CisKKwkJCQlSb2JvdCByb2JvdCA9IG5ldyBSb2JvdCgpOworCisJCQkJRmxvYXQgc2NhbGVGYWN0b3IgPSBGbG9hdAorCQkJCQkJLnZhbHVlT2YoU2NyZWVuRGltZW5zaW9ucy5zcGlubmVyV2lkdGgpCisJCQkJCQkvIEZsb2F0LnZhbHVlT2YoU2NyZWVuRGltZW5zaW9ucy5yZXNpemVYKTsKKwkJCQlGbG9hdCBwYXJ0X3gxID0gKChGbG9hdC52YWx1ZU9mKHJldHVybk1hcC5nZXQoIngiKS50b1N0cmluZygpKQorCQkJCQkJLmZsb2F0VmFsdWUoKSAqIHNjYWxlRmFjdG9yKSAvIEZsb2F0CisJCQkJCQkudmFsdWVPZihBbXBsX2ZhY3RvcikpOworCQkJCUludGVnZXIgeCA9IE1hdGgucm91bmQocGFydF94MQorCQkJCQkJKyBTY3JlZW5EaW1lbnNpb25zLnNwaW5uZXJYKTsKKwkJCQlJbnRlZ2VyIHkgPSBNYXRoCisJCQkJCQkucm91bmQoKChGbG9hdC52YWx1ZU9mKHJldHVybk1hcC5nZXQoInkiKS50b1N0cmluZygpKQorCQkJCQkJCQkuZmxvYXRWYWx1ZSgpCisJCQkJCQkJCSogU2NyZWVuRGltZW5zaW9ucy5zcGlubmVySGVpZ2h0IC8gU2NyZWVuRGltZW5zaW9ucy5yZXNpemVZKSAvIEFtcGxfZmFjdG9yKQorCQkJCQkJCQkrIFNjcmVlbkRpbWVuc2lvbnMuc3Bpbm5lclkpOworCisJCQkJcm9ib3QubW91c2VNb3ZlKHgsIHkpOworCQkJCXJvYm90Lm1vdXNlUHJlc3MoSW5wdXRFdmVudC5CVVRUT04xX01BU0spOworCisJCQl9IGVsc2UgaWYgKGFjdGlvbi5lcXVhbHMoIm1vdXNlUG9zIikpIHsKKworCQkJCVJvYm90IHJvYm90ID0gbmV3IFJvYm90KCk7CisKKwkJCQlGbG9hdCBzY2FsZUZhY3RvciA9IEZsb2F0CisJCQkJCQkudmFsdWVPZihTY3JlZW5EaW1lbnNpb25zLnNwaW5uZXJXaWR0aCkKKwkJCQkJCS8gRmxvYXQudmFsdWVPZihTY3JlZW5EaW1lbnNpb25zLnJlc2l6ZVgpOworCisJCQkJRmxvYXQgcGFydF94MSA9ICgoRmxvYXQudmFsdWVPZihyZXR1cm5NYXAuZ2V0KCJ4IikudG9TdHJpbmcoKSkKKwkJCQkJCS5mbG9hdFZhbHVlKCkgKiBzY2FsZUZhY3RvcikgLyBGbG9hdAorCQkJCQkJLnZhbHVlT2YoQW1wbF9mYWN0b3IpKTsKKworCQkJCUludGVnZXIgeCA9IE1hdGgucm91bmQocGFydF94MQorCQkJCQkJKyBTY3JlZW5EaW1lbnNpb25zLnNwaW5uZXJYKTsKKworCQkJCUludGVnZXIgeSA9IE1hdGgKKwkJCQkJCS5yb3VuZCgoKEZsb2F0LnZhbHVlT2YocmV0dXJuTWFwLmdldCgieSIpLnRvU3RyaW5nKCkpCisJCQkJCQkJCS5mbG9hdFZhbHVlKCkKKwkJCQkJCQkJKiBTY3JlZW5EaW1lbnNpb25zLnNwaW5uZXJIZWlnaHQgLyBTY3JlZW5EaW1lbnNpb25zLnJlc2l6ZVkpIC8gQW1wbF9mYWN0b3IpCisJCQkJCQkJCSsgU2NyZWVuRGltZW5zaW9ucy5zcGlubmVyWSk7CisKKwkJCQlyb2JvdC5tb3VzZU1vdmUoeCwgeSk7CisKKwkJCX0gZWxzZSBpZiAoYWN0aW9uLmVxdWFscygib25rZXlkb3duIikpIHsKKworCQkJCVJvYm90IHJvYm90ID0gbmV3IFJvYm90KCk7CisKKwkJCQlJbnRlZ2VyIGtleSA9IEludGVnZXIudmFsdWVPZihyZXR1cm5NYXAuZ2V0KCJrIikudG9TdHJpbmcoKSkKKwkJCQkJCS5pbnRWYWx1ZSgpOworCisJCQkJLy8gbG9nZ2VyLmRlYnVnKCJrZXkgb25rZXlkb3duIC0xICIra2V5KTsKKwkJCQlib29sZWFuIGRvQWN0aW9uID0gdHJ1ZTsKKworCQkJCWlmIChrZXkgPT0gMjIxKSB7CisJCQkJCWtleSA9IDYxOworCQkJCX0gZWxzZSBpZiAoa2V5ID09IC0xKSB7CisKKwkJCQkJU3RyaW5nIGNoYXJWYWx1ZSA9IHJldHVybk1hcC5nZXQoImMiKS50b1N0cmluZygpOworCisJCQkJCS8vIGtleSA9IEtleUV2ZW50LlZLX0FERDsKKwkJCQkJZG9BY3Rpb24gPSBmYWxzZTsKKworCQkJCQlmb3IgKEl0ZXJhdG9yPEludGVnZXI+IGl0ZXIgPSB0aGlzLmN1cnJlbnRQcmVzc2VkS2V5cworCQkJCQkJCS5rZXlTZXQoKS5pdGVyYXRvcigpOyBpdGVyLmhhc05leHQoKTspIHsKKwkJCQkJCUludGVnZXIgc3RvcmVkS2V5ID0gaXRlci5uZXh0KCk7CisKKwkJCQkJCXJvYm90LmtleVJlbGVhc2Uoc3RvcmVkS2V5KTsKKworCQkJCQl9CisKKwkJCQkJdGhpcy5jdXJyZW50UHJlc3NlZEtleXMgPSBuZXcgSGFzaE1hcDxJbnRlZ2VyLCBCb29sZWFuPigpOworCisJCQkJCXRoaXMucHJlc3NTcGVjaWFsU2lnbihjaGFyVmFsdWUsIHJvYm90KTsKKwkJCQl9IGVsc2UgaWYgKGtleSA9PSAxODgpIHsKKwkJCQkJa2V5ID0gNDQ7CisJCQkJfSBlbHNlIGlmIChrZXkgPT0gMTg5KSB7CisJCQkJCWtleSA9IDEwOTsKKwkJCQl9IGVsc2UgaWYgKGtleSA9PSAxOTApIHsKKwkJCQkJa2V5ID0gNDY7CisJCQkJfSBlbHNlIGlmIChrZXkgPT0gMTkxKSB7CisJCQkJCWtleSA9IDQ3OworCQkJCX0gZWxzZSBpZiAoa2V5ID09IDEzKSB7CisJCQkJCWtleSA9IEtleUV2ZW50LlZLX0VOVEVSOworCQkJCX0KKworCQkJCS8vIGxvZ2dlci5kZWJ1Zygia2V5IG9ua2V5ZG93biAtMiAiK2tleSk7CisKKwkJCQlpZiAoZG9BY3Rpb24pIHsKKworCQkJCQl0aGlzLmN1cnJlbnRQcmVzc2VkS2V5cy5wdXQoa2V5LCB0cnVlKTsKKworCQkJCQlyb2JvdC5rZXlQcmVzcyhrZXkpOworCQkJCX0KKworCQkJfSBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKCJvbmtleXVwIikpIHsKKworCQkJCVJvYm90IHJvYm90ID0gbmV3IFJvYm90KCk7CisKKwkJCQlJbnRlZ2VyIGtleSA9IEludGVnZXIudmFsdWVPZihyZXR1cm5NYXAuZ2V0KCJrIikudG9TdHJpbmcoKSkKKwkJCQkJCS5pbnRWYWx1ZSgpOworCisJCQkJLy8gbG9nZ2VyLmRlYnVnKCJrZXkgb25rZXl1cCAxLSAiK2tleSk7CisKKwkJCQlib29sZWFuIGRvQWN0aW9uID0gdHJ1ZTsKKworCQkJCWlmIChrZXkgPT0gMjIxKSB7CisJCQkJCWtleSA9IDYxOworCQkJCX0gZWxzZSBpZiAoa2V5ID09IC0xKSB7CisJCQkJCWRvQWN0aW9uID0gZmFsc2U7CisJCQkJfSBlbHNlIGlmIChrZXkgPT0gMTg4KSB7CisJCQkJCWtleSA9IDQ0OworCQkJCX0gZWxzZSBpZiAoa2V5ID09IDE4OSkgeworCQkJCQlrZXkgPSAxMDk7CisJCQkJfSBlbHNlIGlmIChrZXkgPT0gMTkwKSB7CisJCQkJCWtleSA9IDQ2OworCQkJCX0gZWxzZSBpZiAoa2V5ID09IDE5MSkgeworCQkJCQlrZXkgPSA0NzsKKwkJCQl9IGVsc2UgaWYgKGtleSA9PSAxMykgeworCQkJCQlrZXkgPSBLZXlFdmVudC5WS19FTlRFUjsKKwkJCQl9CisKKwkJCQkvLyBsb2dnZXIuZGVidWcoImtleSBvbmtleXVwIDItICIra2V5KTsKKworCQkJCWlmIChkb0FjdGlvbikgeworCisJCQkJCWlmICh0aGlzLmN1cnJlbnRQcmVzc2VkS2V5cy5jb250YWluc0tleShrZXkpKSB7CisJCQkJCQl0aGlzLmN1cnJlbnRQcmVzc2VkS2V5cy5yZW1vdmUoa2V5KTsKKworCQkJCQkJcm9ib3Qua2V5UmVsZWFzZShrZXkpOworCisJCQkJCX0KKworCQkJCX0KKworCQkJfSBlbHNlIGlmIChhY3Rpb24uZXF1YWxzKCJwYXN0ZSIpKSB7CisKKwkJCQlSb2JvdCByb2JvdCA9IG5ldyBSb2JvdCgpOworCisJCQkJU3RyaW5nIHBhc3RlID0gcmV0dXJuTWFwLmdldCgicGFzdGUiKS50b1N0cmluZygpOworCisJCQkJdGhpcy5wcmVzc1NwZWNpYWxTaWduKHBhc3RlLCByb2JvdCk7CisKKwkJCX0gZWxzZSBpZiAoYWN0aW9uLmVxdWFscygiY29weSIpKSB7CisKKwkJCQlSb2JvdCByb2JvdCA9IG5ldyBSb2JvdCgpOworCisJCQkJU3RyaW5nIHBhc3RlID0gdGhpcy5nZXRIaWdobGlnaHRlZFRleHQocm9ib3QpOworCisJCQkJSGFzaE1hcDxJbnRlZ2VyLCBTdHJpbmc+IG1hcCA9IG5ldyBIYXNoTWFwPEludGVnZXIsIFN0cmluZz4oKTsKKwkJCQltYXAucHV0KDAsICJjb3BpZWRUZXh0Iik7CisJCQkJbWFwLnB1dCgxLCBwYXN0ZSk7CisKKwkJCQlTdHJpbmcgY2xpZW50SWQgPSByZXR1cm5NYXAuZ2V0KCJjbGllbnRJZCIpLnRvU3RyaW5nKCk7CisKKwkJCQkvLyBwdWJsaWMgc3luY2hyb25pemVkIGludCBzZW5kTWVzc2FnZVdpdGhDbGllbnRCeUlkKE9iamVjdAorCQkJCS8vIG5ld01lc3NhZ2UsIFN0cmluZyBjbGllbnRJZCkKKworCQkJCWluc3RhbmNlLmludm9rZSgic2VuZE1lc3NhZ2VXaXRoQ2xpZW50QnlJZCIsIG5ldyBPYmplY3RbXXttYXAsIGNsaWVudElkfSwgdGhpcyk7CisKKwkJCX0gZWxzZSBpZiAoYWN0aW9uLmVxdWFscygic2hvdyIpKSB7CisKKwkJCQlTdHJpbmcgcGFzdGUgPSB0aGlzLmdldENsaXBib2FyZFRleHQoKTsKKworCQkJCUhhc2hNYXA8SW50ZWdlciwgU3RyaW5nPiBtYXAgPSBuZXcgSGFzaE1hcDxJbnRlZ2VyLCBTdHJpbmc+KCk7CisJCQkJbWFwLnB1dCgwLCAiY29waWVkVGV4dCIpOworCQkJCW1hcC5wdXQoMSwgcGFzdGUpOworCisJCQkJU3RyaW5nIGNsaWVudElkID0gcmV0dXJuTWFwLmdldCgiY2xpZW50SWQiKS50b1N0cmluZygpOworCisJCQkJLy8gcHVibGljIHN5bmNocm9uaXplZCBpbnQgc2VuZE1lc3NhZ2VXaXRoQ2xpZW50QnlJZChPYmplY3QKKwkJCQkvLyBuZXdNZXNzYWdlLCBTdHJpbmcgY2xpZW50SWQpCisKKwkJCQlpbnN0YW5jZS5pbnZva2UoInNlbmRNZXNzYWdlV2l0aENsaWVudEJ5SWQiLCBuZXcgT2JqZWN0W117bWFwLCBjbGllbnRJZH0sIHRoaXMpOworCisJCQl9CisKKwkJCS8vIEtleUV2ZW50LlZLCisJCQkvLyBLZXlFdmVudC4KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2dnZXIuZXJyb3IoIltzZW5kUmVtb3RlQ3Vyc29yRXZlbnRdIiwgZXJyKTsKKwkJfQorCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0Q2xpcGJvYXJkVGV4dCgpIHsKKwkJdHJ5IHsKKwkJCS8vIGdldCB0aGUgc3lzdGVtIGNsaXBib2FyZAorCQkJQ2xpcGJvYXJkIHN5c3RlbUNsaXBib2FyZCA9IFRvb2xraXQuZ2V0RGVmYXVsdFRvb2xraXQoKQorCQkJCQkuZ2V0U3lzdGVtQ2xpcGJvYXJkKCk7CisKKwkJCS8vIGdldCB0aGUgY29udGVudHMgb24gdGhlIGNsaXBib2FyZCBpbiBhCisJCQkvLyB0cmFuc2ZlcmFibGUgb2JqZWN0CisJCQlUcmFuc2ZlcmFibGUgY2xpcGJvYXJkQ29udGVudHMgPSBzeXN0ZW1DbGlwYm9hcmQuZ2V0Q29udGVudHMobnVsbCk7CisKKwkJCS8vIGNoZWNrIGlmIGNsaXBib2FyZCBpcyBlbXB0eQorCQkJaWYgKGNsaXBib2FyZENvbnRlbnRzID09IG51bGwpIHsKKworCQkJCS8vIENsaXBib2FyZCBpcyBlbXB0eSEhIQorCQkJCXJldHVybiAoIiIpOworCisJCQkJLy8gc2VlIGlmIERhdGFGbGF2b3Igb2YKKwkJCQkvLyBEYXRhRmxhdm9yLnN0cmluZ0ZsYXZvciBpcyBzdXBwb3J0ZWQKKwkJCX0gZWxzZSBpZiAoY2xpcGJvYXJkQ29udGVudHMKKwkJCQkJLmlzRGF0YUZsYXZvclN1cHBvcnRlZChEYXRhRmxhdm9yLnN0cmluZ0ZsYXZvcikpIHsKKworCQkJCS8vIHJldHVybiB0ZXh0IGNvbnRlbnQKKwkJCQlTdHJpbmcgcmV0dXJuVGV4dCA9IChTdHJpbmcpIGNsaXBib2FyZENvbnRlbnRzCisJCQkJCQkuZ2V0VHJhbnNmZXJEYXRhKERhdGFGbGF2b3Iuc3RyaW5nRmxhdm9yKTsKKworCQkJCXJldHVybiByZXR1cm5UZXh0OworCQkJfQorCisJCQlyZXR1cm4gIiI7CisJCX0gY2F0Y2ggKFVuc3VwcG9ydGVkRmxhdm9yRXhjZXB0aW9uIHVmZSkgeworCQkJdWZlLnByaW50U3RhY2tUcmFjZSgpOworCQl9IGNhdGNoIChJT0V4Y2VwdGlvbiBpb2UpIHsKKwkJCWlvZS5wcmludFN0YWNrVHJhY2UoKTsKKwkJfQorCQlyZXR1cm4gIiI7CisJfQorCisJcHJpdmF0ZSBTdHJpbmcgZ2V0SGlnaGxpZ2h0ZWRUZXh0KFJvYm90IGluc3RhbmNlKSB7CisKKwkJdHJ5IHsKKworCQkJLy8gY2xpcHB5LnNldENvbnRlbnRzKCBzZWxlY3Rpb24sc2VsZWN0aW9uICk7CisKKwkJCS8vIGxvZ2dlci5kZWJ1Zygib3MubmFtZSA6OiAiK1N5c3RlbS5nZXRQcm9wZXJ0eSgib3MubmFtZSIpKTsKKworCQkJaWYgKFN5c3RlbS5nZXRQcm9wZXJ0eSgib3MubmFtZSIpLnRvVXBwZXJDYXNlKCkuaW5kZXhPZigiV0lORE9XUyIpID49IDApIHsKKworCQkJCS8vIGxvZ2dlci5kZWJ1ZygiSVMgV0lORE9XUyIpOworCisJCQkJLy8gcHJlc3NpbmcgU1RSRytDID09IGNvcHkKKwkJCQlpbnN0YW5jZS5rZXlQcmVzcyhLZXlFdmVudC5WS19DT05UUk9MKTsKKwkJCQlUaHJlYWQuc2xlZXAoMjAwKTsKKwkJCQlpbnN0YW5jZS5rZXlQcmVzcyhLZXlFdmVudC5WS19DKTsKKwkJCQlUaHJlYWQuc2xlZXAoMjAwKTsKKwkJCQlpbnN0YW5jZS5rZXlSZWxlYXNlKEtleUV2ZW50LlZLX0MpOworCQkJCVRocmVhZC5zbGVlcCgyMDApOworCQkJCWluc3RhbmNlLmtleVJlbGVhc2UoS2V5RXZlbnQuVktfQ09OVFJPTCk7CisJCQkJVGhyZWFkLnNsZWVwKDIwMCk7CisKKwkJCX0gZWxzZSB7CisKKwkJCQkvLyBsb2dnZXIuZGVidWcoIklTIE1BQyIpOworCisJCQkJLy8gTWFjaW50b3NoIHNpbXVsYXRlIENvcHkKKwkJCQlpbnN0YW5jZS5rZXlQcmVzcygxNTcpOworCQkJCVRocmVhZC5zbGVlcCgyMDApOworCQkJCWluc3RhbmNlLmtleVByZXNzKDY3KTsKKwkJCQlUaHJlYWQuc2xlZXAoMjAwKTsKKwkJCQlpbnN0YW5jZS5rZXlSZWxlYXNlKDY3KTsKKwkJCQlUaHJlYWQuc2xlZXAoMjAwKTsKKwkJCQlpbnN0YW5jZS5rZXlSZWxlYXNlKDE1Nyk7CisJCQkJVGhyZWFkLnNsZWVwKDIwMCk7CisKKwkJCX0KKworCQkJU3RyaW5nIGNoYXJWYWx1ZSA9IHRoaXMuZ2V0Q2xpcGJvYXJkVGV4dCgpOworCisJCQlyZXR1cm4gY2hhclZhbHVlOworCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworCQkJZXgucHJpbnRTdGFja1RyYWNlKCk7CisJCX0KKwkJcmV0dXJuICIiOworCX0KKworCXByaXZhdGUgdm9pZCBwcmVzc1NwZWNpYWxTaWduKFN0cmluZyBjaGFyVmFsdWUsIFJvYm90IGluc3RhbmNlKSB7CisJCUNsaXBib2FyZCBjbGlwcHkgPSBUb29sa2l0LmdldERlZmF1bHRUb29sa2l0KCkuZ2V0U3lzdGVtQ2xpcGJvYXJkKCk7CisJCXRyeSB7CisKKwkJCVRyYW5zZmVyYWJsZSB0cmFuc2ZlcmFibGVUZXh0ID0gbmV3IFN0cmluZ1NlbGVjdGlvbihjaGFyVmFsdWUpOworCQkJY2xpcHB5LnNldENvbnRlbnRzKHRyYW5zZmVyYWJsZVRleHQsIG51bGwpOworCisJCQkvLyBsb2dnZXIuZGVidWcoIm9zLm5hbWUgOjogIitTeXN0ZW0uZ2V0UHJvcGVydHkoIm9zLm5hbWUiKSk7CisKKwkJCWlmIChTeXN0ZW0uZ2V0UHJvcGVydHkoIm9zLm5hbWUiKS50b1VwcGVyQ2FzZSgpLmluZGV4T2YoIldJTkRPV1MiKSA+PSAwKSB7CisKKwkJCQkvLyBsb2dnZXIuZGVidWcoIklTIFdJTkRPV1MiKTsKKworCQkJCS8vIHByZXNzaW5nIFNUUkcrViA9PSBpbnNlcnQtbW9kZQorCQkJCWluc3RhbmNlLmtleVByZXNzKEtleUV2ZW50LlZLX0NPTlRST0wpOworCQkJCVRocmVhZC5zbGVlcCgxMDApOworCQkJCWluc3RhbmNlLmtleVByZXNzKEtleUV2ZW50LlZLX1YpOworCQkJCVRocmVhZC5zbGVlcCgxMDApOworCQkJCWluc3RhbmNlLmtleVJlbGVhc2UoS2V5RXZlbnQuVktfVik7CisJCQkJVGhyZWFkLnNsZWVwKDEwMCk7CisJCQkJaW5zdGFuY2Uua2V5UmVsZWFzZShLZXlFdmVudC5WS19DT05UUk9MKTsKKwkJCQlUaHJlYWQuc2xlZXAoMTAwKTsKKworCQkJfSBlbHNlIHsKKworCQkJCS8vIGxvZ2dlci5kZWJ1ZygiSVMgTUFDIik7CisKKwkJCQkvLyBNYWNpbnRvc2ggc2ltdWxhdGUgSW5zZXJ0CisJCQkJaW5zdGFuY2Uua2V5UHJlc3MoMTU3KTsKKwkJCQlUaHJlYWQuc2xlZXAoMTAwKTsKKwkJCQlpbnN0YW5jZS5rZXlQcmVzcyg4Nik7CisJCQkJVGhyZWFkLnNsZWVwKDEwMCk7CisJCQkJaW5zdGFuY2Uua2V5UmVsZWFzZSg4Nik7CisJCQkJVGhyZWFkLnNsZWVwKDEwMCk7CisJCQkJaW5zdGFuY2Uua2V5UmVsZWFzZSgxNTcpOworCQkJCVRocmVhZC5zbGVlcCgxMDApOworCisJCQl9CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisJCQlleC5wcmludFN0YWNrVHJhY2UoKTsKKwkJfQorCX0KKworCXB1YmxpYyB2b2lkIHJlc3VsdFJlY2VpdmVkKElQZW5kaW5nU2VydmljZUNhbGwgY2FsbCkgeworCQl0cnkgeworCisJCQlsb2dnZXIudHJhY2UoICJzZXJ2aWNlIGNhbGwgcmVzdWx0OiAiICsgY2FsbCApOworCisJCQlTdHJpbmcgbWV0aG9kID0gY2FsbCA9PSBudWxsID8gbnVsbCA6IGNhbGwuZ2V0U2VydmljZU1ldGhvZE5hbWUoKTsKKwkJCWxvZ2dlci50cmFjZSgiY2FsbCAjIyMgZ2V0IE1ldGhvZCBOYW1lICIgKyBtZXRob2QpOworCQkJaWYgKCJjb25uZWN0Ii5lcXVhbHMobWV0aG9kKSkgeworCQkJCWlzQ29ubmVjdGVkID0gdHJ1ZTsKKwkJCQlzZXRDb25uZWN0aW9uQXNTaGFyaW5nQ2xpZW50KCk7CisJCQl9IGVsc2UgaWYgKCJzZXRDb25uZWN0aW9uQXNTaGFyaW5nQ2xpZW50Ii5lcXVhbHMobWV0aG9kKSkgeworCisJCQkJT2JqZWN0IG8gPSBjYWxsLmdldFJlc3VsdCgpOworCisJCQkJQFN1cHByZXNzV2FybmluZ3MoInVuY2hlY2tlZCIpCisJCQkJTWFwPFN0cmluZywgT2JqZWN0PiByZXR1cm5NYXAgPSAoTWFwPFN0cmluZywgT2JqZWN0PikgbzsKKworCQkJCWlmIChvID09IG51bGwgfHwgIUJvb2xlYW4udmFsdWVPZigiIiArIHJldHVybk1hcC5nZXQoImFscmVhZHlQdWJsaXNoZWQiKSkuYm9vbGVhblZhbHVlKCkpIHsKKwkJCQkJbG9nZ2VyLnRyYWNlKCJTdHJlYW0gbm90IHlldCBzdGFydGVkIC0gZG8gaXQgIik7CisKKwkJCQkJaW5zdGFuY2UuY3JlYXRlU3RyZWFtKHRoaXMpOworCQkJCX0gZWxzZSB7CisJCQkJCWdldENhcHR1cmUoKS5yZXNldEJ1ZmZlcigpOworCQkJCQlsb2dnZXIudHJhY2UoIlRoZSBTdHJlYW0gd2FzIGFscmVhZHkgc3RhcnRlZCAiKTsKKwkJCQl9CisJCQkJaWYgKHJldHVybk1hcCAhPSBudWxsKSB7CisJCQkJCU9iamVjdCBtb2R1cyA9IHJldHVybk1hcC5nZXQoIm1vZHVzIik7CisJCQkJCWlmICgic3RhcnRTdHJlYW1pbmciLmVxdWFscyhtb2R1cykpIHsKKwkJCQkJCWZyYW1lLnNldFNoYXJpbmdTdGF0dXModHJ1ZSwgZmFsc2UpOworCQkJCQl9CisJCQkJCWlmICgic3RhcnRSZWNvcmRpbmciLmVxdWFscyhtb2R1cykpIHsKKwkJCQkJCWZyYW1lLnNldFJlY29yZGluZ1N0YXR1cyh0cnVlLCBmYWxzZSk7CisJCQkJCX0KKwkJCQkJaWYgKCJzdGFydFB1Ymxpc2hpbmciLmVxdWFscyhtb2R1cykpIHsKKwkJCQkJCWZyYW1lLnNldFB1Ymxpc2hpbmdTdGF0dXModHJ1ZSwgZmFsc2UpOworCQkJCQkJcHVibGlzaENsaWVudCA9IG5ldyBSVE1QQ2xpZW50UHVibGlzaCgKKwkJCQkJCQl0aGlzCisJCQkJCQkJLCBmcmFtZS5nZXRQdWJsaXNoSG9zdCgpCisJCQkJCQkJLCBmcmFtZS5nZXRQdWJsaXNoQXBwKCkKKwkJCQkJCQksIGZyYW1lLmdldFB1Ymxpc2hJZCgpKTsKKwkJCQkJCXB1Ymxpc2hDbGllbnQuY29ubmVjdCgpOworCQkJCQl9CisJCQkJfSBlbHNlIHsKKwkJCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbigKKwkJCQkJCQkiQ291bGQgbm90IGFxdWlyZSBtb2R1cyBmb3IgZXZlbnQgc2V0Q29ubmVjdGlvbkFzU2hhcmluZ0NsaWVudCIpOworCQkJCX0KKworCQkJfSBlbHNlIGlmICgiY3JlYXRlU3RyZWFtIi5lcXVhbHMobWV0aG9kKSkgeworCQkJCWlmIChzdGFydFJlY29yZGluZyB8fCBzdGFydFN0cmVhbWluZykgeworCQkJCQlpZiAoY2FsbC5nZXRSZXN1bHQoKSAhPSBudWxsKSB7CisJCQkJCQlnZXRDYXB0dXJlKCkuc2V0U3RyZWFtSWQoKEludGVnZXIpY2FsbC5nZXRSZXN1bHQoKSk7CisJCQkJCX0KKwkJCQkJbG9nZ2VyLmRlYnVnKCJjcmVhdGVQdWJsaXNoU3RyZWFtIHJlc3VsdCBzdHJlYW0gaWQ6ICIgKyBnZXRDYXB0dXJlKCkuZ2V0U3RyZWFtSWQoKSk7CisJCQkJCWxvZ2dlci5kZWJ1ZygicHVibGlzaGluZyB2aWRlbyBieSBuYW1lOiAiICsgcHVibGlzaE5hbWUpOworCQkJCQlpbnN0YW5jZS5wdWJsaXNoKGdldENhcHR1cmUoKS5nZXRTdHJlYW1JZCgpLCBwdWJsaXNoTmFtZSwgImxpdmUiLCB0aGlzKTsKKwkKKwkJCQkJbG9nZ2VyLmRlYnVnKCJzZXR1cCBjYXB0dXJlIHRocmVhZCIpOworCQorCQkJCQlsb2dnZXIuZGVidWcoInNldHVwIGNhcHR1cmUgdGhyZWFkIHZTY3JlZW5TcGlubmVyV2lkdGggIgorCQkJCQkJCSsgU2NyZWVuRGltZW5zaW9ucy5zcGlubmVyV2lkdGgpOworCQkJCQlsb2dnZXIuZGVidWcoInNldHVwIGNhcHR1cmUgdGhyZWFkIHZTY3JlZW5TcGlubmVySGVpZ2h0ICIKKwkJCQkJCQkrIFNjcmVlbkRpbWVuc2lvbnMuc3Bpbm5lckhlaWdodCk7CisJCisJCQkJCWdldENhcHR1cmUoKS5zZXRTZW5kQ3Vyc29yKHRydWUpOworCQkJCQlnZXRDYXB0dXJlKCkuc3RhcnQoKTsKKwkJCQl9CisJCQl9IGVsc2UgaWYgKCJzY3JlZW5TaGFyZXJBY3Rpb24iLmVxdWFscyhtZXRob2QpKSB7CisJCQkJT2JqZWN0IG8gPSBjYWxsLmdldFJlc3VsdCgpOworCisJCQkJbG9nZ2VyLnRyYWNlKCJSZXN1bHQgTWFwIFR5cGUgIiArIG8uZ2V0Q2xhc3MoKS5nZXROYW1lKCkpOworCisJCQkJQFN1cHByZXNzV2FybmluZ3MoInVuY2hlY2tlZCIpCisJCQkJTWFwPFN0cmluZywgT2JqZWN0PiByZXR1cm5NYXAgPSAoTWFwPFN0cmluZywgT2JqZWN0PilvOworCQkJCU9iamVjdCByZXN1bHQgPSByZXR1cm5NYXAuZ2V0KCJyZXN1bHQiKTsKKwkJCQlpZiAoInN0b3BBbGwiLmVxdWFscyhyZXN1bHQpKSB7CisJCQkJCWxvZ2dlci50cmFjZSgiU3RvcHBpbmcgdG8gc3RyZWFtLCB0aGVyZSBpcyBuZWl0aGVyIGEgRGVza3RvcCBTaGFyaW5nIG5vciBSZWNvcmRpbmcgYW55bW9yZSIpOworCQkJCQlzdG9wU3RyZWFtKCk7CisJCQkJfSBlbHNlIGlmICgic3RvcFNoYXJpbmdPbmx5Ii5lcXVhbHMocmVzdWx0KSkgeworCQkJCQlzdG9wU3RyZWFtaW5nKCk7CisJCQkJfSBlbHNlIGlmICgic3RvcFJlY29yZGluZ09ubHkiLmVxdWFscyhyZXN1bHQpKSB7CisJCQkJCXN0b3BSZWNvcmRpbmcoKTsKKwkJCQl9IGVsc2UgaWYgKCJzdG9wUHVibGlzaGluZ09ubHkiLmVxdWFscyhyZXN1bHQpKSB7CisJCQkJCXN0b3BQdWJsaXNoaW5nKCk7CisJCQkJfQorCQkJfSBlbHNlIGlmICgic2V0TmV3Q3Vyc29yUG9zaXRpb24iLmVxdWFscyhtZXRob2QpKSB7CisJCQkJLy8gRG8gbm90IGRvIGFueXRoaW5nCisJCQl9IGVsc2UgeworCQkJCWxvZ2dlci5kZWJ1ZygiVW5rbm93biBtZXRob2QgIiArIG1ldGhvZCk7CisJCQl9CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nZ2VyLmVycm9yKCJbcmVzdWx0UmVjZWl2ZWRdIiwgZXJyKTsKKwkJfQorCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zY3JlZW4vd2Vic3RhcnQvSVNjcmVlbkVuY29kZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zY3JlZW4vd2Vic3RhcnQvSVNjcmVlbkVuY29kZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYjcyODkwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NjcmVlbi93ZWJzdGFydC9JU2NyZWVuRW5jb2Rlci5qYXZhCkBAIC0wLDAgKzEsMzAgQEAKKy8qDQorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAqIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2NyZWVuLndlYnN0YXJ0Ow0KKw0KK2ltcG9ydCBqYXZhLmF3dC5SZWN0YW5nbGU7DQoraW1wb3J0IGphdmEuYXd0LmltYWdlLkJ1ZmZlcmVkSW1hZ2U7DQoraW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247DQorDQorcHVibGljIGludGVyZmFjZSBJU2NyZWVuRW5jb2RlciB7DQorCQ0KKwlieXRlW10gZW5jb2RlKFJlY3RhbmdsZSBzY3JlZW4sIEJ1ZmZlcmVkSW1hZ2UgaW1nLCBSZWN0YW5nbGUgc2l6ZSkgIHRocm93cyBJT0V4Y2VwdGlvbjsNCisJDQorCXZvaWQgcmVzZXQoKTsNCit9DQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NjcmVlbi93ZWJzdGFydC9JU2NyZWVuU2hhcmUuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zY3JlZW4vd2Vic3RhcnQvSVNjcmVlblNoYXJlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWI1NjgwNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zY3JlZW4vd2Vic3RhcnQvSVNjcmVlblNoYXJlLmphdmEKQEAgLTAsMCArMSwzNCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5zY3JlZW4ud2Vic3RhcnQ7CisKK2ltcG9ydCBvcmcucmVkNS5jbGllbnQubmV0LnJ0bXAuSU5ldFN0cmVhbUV2ZW50SGFuZGxlcjsKK2ltcG9ydCBvcmcucmVkNS5zZXJ2ZXIuYXBpLnNlcnZpY2UuSVBlbmRpbmdTZXJ2aWNlQ2FsbGJhY2s7CitpbXBvcnQgb3JnLnJlZDUuc2VydmVyLm1lc3NhZ2luZy5JTWVzc2FnZTsKK2ltcG9ydCBvcmcucmVkNS5zZXJ2ZXIubmV0LnJ0bXAuUlRNUENvbm5lY3Rpb247CisKK3B1YmxpYyBpbnRlcmZhY2UgSVNjcmVlblNoYXJlIHsKKwlSVE1QQ29ubmVjdGlvbiBnZXRDb25uZWN0aW9uKCk7CisJdm9pZCBpbnZva2UoU3RyaW5nIG1ldGhvZCwgT2JqZWN0W10gcGFyYW1zLCBJUGVuZGluZ1NlcnZpY2VDYWxsYmFjayBjYWxsYmFjayk7CisJdm9pZCBjb25uZWN0KFN0cmluZyBzZXJ2ZXIsIGludCBwb3J0LCBTdHJpbmcgYXBwbGljYXRpb24sIElQZW5kaW5nU2VydmljZUNhbGxiYWNrIGNvbm5lY3RDYWxsYmFjayk7CisJdm9pZCBkaXNjb25uZWN0KCk7CisJdm9pZCBjcmVhdGVTdHJlYW0oSVBlbmRpbmdTZXJ2aWNlQ2FsbGJhY2sgY2FsbGJhY2spOworCXZvaWQgcHVibGlzaChpbnQgc3RyZWFtSWQsIFN0cmluZyBuYW1lLCBTdHJpbmcgbW9kZSwgSU5ldFN0cmVhbUV2ZW50SGFuZGxlciBoYW5kbGVyKTsKKwl2b2lkIHB1Ymxpc2hTdHJlYW1EYXRhKGludCBzdHJlYW1JZCwgSU1lc3NhZ2UgbWVzc2FnZSk7Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2NyZWVuL3dlYnN0YXJ0L1JUTVBDbGllbnRQdWJsaXNoLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2NyZWVuL3dlYnN0YXJ0L1JUTVBDbGllbnRQdWJsaXNoLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQxODQwMQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zY3JlZW4vd2Vic3RhcnQvUlRNUENsaWVudFB1Ymxpc2guamF2YQpAQCAtMCwwICsxLDk5IEBACisvKg0KKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgKiB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnNjcmVlbi53ZWJzdGFydDsNCisNCitpbXBvcnQgb3JnLnJlZDUuY2xpZW50Lm5ldC5ydG1wLkNsaWVudEV4Y2VwdGlvbkhhbmRsZXI7DQoraW1wb3J0IG9yZy5yZWQ1LmNsaWVudC5uZXQucnRtcC5JTmV0U3RyZWFtRXZlbnRIYW5kbGVyOw0KK2ltcG9ydCBvcmcucmVkNS5jbGllbnQubmV0LnJ0bXAuUlRNUENsaWVudDsNCitpbXBvcnQgb3JnLnJlZDUuc2VydmVyLmFwaS5zZXJ2aWNlLklQZW5kaW5nU2VydmljZUNhbGw7DQoraW1wb3J0IG9yZy5yZWQ1LnNlcnZlci5hcGkuc2VydmljZS5JUGVuZGluZ1NlcnZpY2VDYWxsYmFjazsNCitpbXBvcnQgb3JnLnJlZDUuc2VydmVyLm5ldC5ydG1wLkNoYW5uZWw7DQoraW1wb3J0IG9yZy5yZWQ1LnNlcnZlci5uZXQucnRtcC5SVE1QQ29ubmVjdGlvbjsNCitpbXBvcnQgb3JnLnJlZDUuc2VydmVyLm5ldC5ydG1wLmNvZGVjLlJUTVA7DQoraW1wb3J0IG9yZy5yZWQ1LnNlcnZlci5uZXQucnRtcC5ldmVudC5Ob3RpZnk7DQoraW1wb3J0IG9yZy5yZWQ1LnNlcnZlci5uZXQucnRtcC5tZXNzYWdlLkhlYWRlcjsNCitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsNCitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlckZhY3Rvcnk7DQorDQorY2xhc3MgUlRNUENsaWVudFB1Ymxpc2ggZXh0ZW5kcyBSVE1QQ2xpZW50IGltcGxlbWVudHMgSVBlbmRpbmdTZXJ2aWNlQ2FsbGJhY2ssIElOZXRTdHJlYW1FdmVudEhhbmRsZXIsIENsaWVudEV4Y2VwdGlvbkhhbmRsZXIsIElTY3JlZW5TaGFyZSB7DQorCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcihSVE1QQ2xpZW50UHVibGlzaC5jbGFzcyk7DQorCXByaXZhdGUgZmluYWwgQ2FwdHVyZVNjcmVlbiBwdWJsaXNoU2NyZWVuOw0KKwlwcml2YXRlIFN0cmluZyBpZDsNCisJcHJpdmF0ZSBDb3JlU2NyZWVuU2hhcmUgY29yZTsNCisJDQorCVJUTVBDbGllbnRQdWJsaXNoKENvcmVTY3JlZW5TaGFyZSBjb3JlLCBTdHJpbmcgaG9zdCwgU3RyaW5nIGFwcCwgU3RyaW5nIGlkKSB7DQorCQl0aGlzLmlkID0gaWQ7DQorCQl0aGlzLmNvcmUgPSBjb3JlOw0KKwkJcHVibGlzaFNjcmVlbiA9IG5ldyBDYXB0dXJlU2NyZWVuKGNvcmUsIHRoaXMsIGhvc3QsIGFwcCwgMTkzNSk7DQorCX0NCisNCisJcHVibGljIHZvaWQgY29ubmVjdCgpIHsNCisJCXN1cGVyLmNvbm5lY3QocHVibGlzaFNjcmVlbi5nZXRIb3N0KCksIDE5MzUsIHB1Ymxpc2hTY3JlZW4uZ2V0QXBwKCksIHRoaXMpOw0KKwl9DQorCQ0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgaGFuZGxlRXhjZXB0aW9uKFRocm93YWJsZSB0aHJvd2FibGUpIHsNCisJCWxvZ2dlci5lcnJvcigiRVJST1IiLCB0aHJvd2FibGUpOw0KKwl9DQorDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgdm9pZCBjb25uZWN0aW9uT3BlbmVkKFJUTVBDb25uZWN0aW9uIGNvbm4sIFJUTVAgc3RhdGUpIHsNCisJCXN1cGVyLmNvbm5lY3Rpb25PcGVuZWQoY29ubiwgc3RhdGUpOw0KKwkJY3JlYXRlU3RyZWFtKHRoaXMpOw0KKwl9DQorCQ0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgY29ubmVjdGlvbkNsb3NlZChSVE1QQ29ubmVjdGlvbiBjb25uLCBSVE1QIHN0YXRlKSB7DQorCQlzdXBlci5jb25uZWN0aW9uQ2xvc2VkKGNvbm4sIHN0YXRlKTsNCisJCWNvbm5lY3Rpb25DbG9zZWQoKTsNCisJfQ0KKwkNCisJcHJpdmF0ZSB2b2lkIGNvbm5lY3Rpb25DbG9zZWQoKSB7DQorCQlwdWJsaXNoU2NyZWVuLnNldFN0YXJ0UHVibGlzaChmYWxzZSk7DQorCQlwdWJsaXNoU2NyZWVuLnJlbGVhc2UoKTsNCisJCWNvcmUuc2VuZFN0b3BQdWJsaXNoaW5nKCk7DQorCX0NCisJDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgdm9pZCBvbkludm9rZShSVE1QQ29ubmVjdGlvbiBjb25uLA0KKwkJCUNoYW5uZWwgY2hhbm5lbCwgSGVhZGVyIHNvdXJjZSwgTm90aWZ5IGludm9rZSwNCisJCQlSVE1QIHJ0bXApIHsNCisJCXN1cGVyLm9uSW52b2tlKGNvbm4sIGNoYW5uZWwsIHNvdXJjZSwgaW52b2tlLCBydG1wKTsNCisJfQ0KKwkNCisJcHVibGljIHZvaWQgcmVzdWx0UmVjZWl2ZWQoSVBlbmRpbmdTZXJ2aWNlQ2FsbCBjYWxsKSB7DQorCQlTdHJpbmcgbWV0aG9kID0gY2FsbCA9PSBudWxsID8gbnVsbCA6IGNhbGwuZ2V0U2VydmljZU1ldGhvZE5hbWUoKTsNCisJCWxvZ2dlci50cmFjZSgiY2FsbCAjIyMgZ2V0IE1ldGhvZCBOYW1lICIgKyBtZXRob2QpOw0KKwkJaWYgKCJjb25uZWN0Ii5lcXVhbHMobWV0aG9kKSkgew0KKwkJCS8vc2V0Q29ubmVjdGlvbkFzU2hhcmluZ0NsaWVudCgpOyAvL0ZJWE1FDQorCQl9IGVsc2UgaWYgKCJjcmVhdGVTdHJlYW0iLmVxdWFscyhtZXRob2QpKSB7DQorCQkJaWYgKGNhbGwuZ2V0UmVzdWx0KCkgIT0gbnVsbCkgew0KKwkJCQlwdWJsaXNoU2NyZWVuLnNldFN0cmVhbUlkKChJbnRlZ2VyKWNhbGwuZ2V0UmVzdWx0KCkpOw0KKwkJCQlwdWJsaXNoKHB1Ymxpc2hTY3JlZW4uZ2V0U3RyZWFtSWQoKSwgaWQsICJsaXZlIiwgdGhpcyk7DQorCQkJCXB1Ymxpc2hTY3JlZW4uc2V0U3RhcnRQdWJsaXNoKHRydWUpOw0KKwkJCQlwdWJsaXNoU2NyZWVuLnN0YXJ0KCk7DQorCQkJfSBlbHNlIHsNCisJCQkJY29ubmVjdGlvbkNsb3NlZCgpOw0KKwkJCX0NCisJCX0NCisJfQ0KKw0KKwlwdWJsaWMgdm9pZCBvblN0cmVhbUV2ZW50KE5vdGlmeSBub3RpZnkpIHsNCisJfQ0KK30KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2NyZWVuL3dlYnN0YXJ0L1JUTVBTU2NyZWVuU2hhcmUuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zY3JlZW4vd2Vic3RhcnQvUlRNUFNTY3JlZW5TaGFyZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3Y2UxNzQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2NyZWVuL3dlYnN0YXJ0L1JUTVBTU2NyZWVuU2hhcmUuamF2YQpAQCAtMCwwICsxLDk2IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnNjcmVlbi53ZWJzdGFydDsKKworaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jb2RlYy5EZWNvZGVyRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy5jb2RlYy5iaW5hcnkuSGV4OworaW1wb3J0IG9yZy5yZWQ1LmNsaWVudC5uZXQucnRtcC5DbGllbnRFeGNlcHRpb25IYW5kbGVyOworaW1wb3J0IG9yZy5yZWQ1LmNsaWVudC5uZXQucnRtcHMuUlRNUFNDbGllbnQ7CitpbXBvcnQgb3JnLnJlZDUuc2VydmVyLmFwaS5zZXJ2aWNlLklQZW5kaW5nU2VydmljZUNhbGxiYWNrOworaW1wb3J0IG9yZy5yZWQ1LnNlcnZlci5uZXQucnRtcC5DaGFubmVsOworaW1wb3J0IG9yZy5yZWQ1LnNlcnZlci5uZXQucnRtcC5SVE1QQ29ubmVjdGlvbjsKK2ltcG9ydCBvcmcucmVkNS5zZXJ2ZXIubmV0LnJ0bXAuY29kZWMuUlRNUDsKK2ltcG9ydCBvcmcucmVkNS5zZXJ2ZXIubmV0LnJ0bXAuZXZlbnQuTm90aWZ5OworaW1wb3J0IG9yZy5yZWQ1LnNlcnZlci5uZXQucnRtcC5tZXNzYWdlLkhlYWRlcjsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXJGYWN0b3J5OworCitwdWJsaWMgY2xhc3MgUlRNUFNTY3JlZW5TaGFyZSBleHRlbmRzIFJUTVBTQ2xpZW50IGltcGxlbWVudHMgQ2xpZW50RXhjZXB0aW9uSGFuZGxlciwgSVNjcmVlblNoYXJlIHsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2dnZXIgPSBMb2dnZXJGYWN0b3J5CisJCQkuZ2V0TG9nZ2VyKFJUTVBTU2NyZWVuU2hhcmUuY2xhc3MpOworCisJcHJpdmF0ZSBDb3JlU2NyZWVuU2hhcmUgY29yZSA9IG51bGw7CisKKwlwcml2YXRlIFJUTVBTU2NyZWVuU2hhcmUoU3RyaW5nW10gYXJncykgeworCQljb3JlID0gbmV3IENvcmVTY3JlZW5TaGFyZSh0aGlzLCBhcmdzKTsKKwl9OworCisJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgdGhyb3dzIERlY29kZXJFeGNlcHRpb24geworCQlSVE1QU1NjcmVlblNoYXJlIGNsaWVudCA9IG5ldyBSVE1QU1NjcmVlblNoYXJlKGFyZ3MpOworCQlpZiAoYXJncy5sZW5ndGggPCAxMSkgeworCQkJU3lzdGVtLmV4aXQoMCk7CisJCX0KKwkJY2xpZW50LnNldEtleXN0b3JlQnl0ZXMoSGV4LmRlY29kZUhleChhcmdzWzEwXS50b0NoYXJBcnJheSgpKSk7CisJCWNsaWVudC5zZXRLZXlTdG9yZVBhc3N3b3JkKGFyZ3NbMTFdKTsKKwl9CisJCisJQE92ZXJyaWRlCisJcHVibGljIHZvaWQgY29ubmVjdChTdHJpbmcgc2VydmVyLCBpbnQgcG9ydCwgU3RyaW5nIGFwcGxpY2F0aW9uLAorCQkJSVBlbmRpbmdTZXJ2aWNlQ2FsbGJhY2sgY29ubmVjdENhbGxiYWNrKSB7CisJCXRyeSB7IC8vRklYTUUgbmVlZCB0byBiZSByZW1vdmVkCisJCQlzdXBlci5jb25uZWN0KHNlcnZlciwgcG9ydCwgYXBwbGljYXRpb24sIGNvbm5lY3RDYWxsYmFjayk7CisJCX0gY2F0Y2ggKE51bGxQb2ludGVyRXhjZXB0aW9uIG5wZSkgeworCQkJLy9ubyBvcCwgc2luY2UgUlRNUFNDbGllbnQgdGhyb3dzIE5QRQorCQl9CisJfQorCQorCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCS8vCisJLy8gT3ZlcnJpZGUKKwkvLworCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCUBPdmVycmlkZQorCXB1YmxpYyB2b2lkIGNvbm5lY3Rpb25PcGVuZWQoUlRNUENvbm5lY3Rpb24gY29ubiwgUlRNUCBzdGF0ZSkgeworCQlsb2dnZXIuZGVidWcoImNvbm5lY3Rpb24gb3BlbmVkIik7CisJCXN1cGVyLmNvbm5lY3Rpb25PcGVuZWQoY29ubiwgc3RhdGUpOworCQl0aGlzLmNvbm4gPSBjb25uOworCX0KKworCUBPdmVycmlkZQorCXB1YmxpYyB2b2lkIGNvbm5lY3Rpb25DbG9zZWQoUlRNUENvbm5lY3Rpb24gY29ubiwgUlRNUCBzdGF0ZSkgeworCQlsb2dnZXIuZGVidWcoImNvbm5lY3Rpb24gY2xvc2VkIik7CisJCXN1cGVyLmNvbm5lY3Rpb25DbG9zZWQoY29ubiwgc3RhdGUpOworCQljb3JlLnN0b3BTdHJlYW0oKTsKKwl9CisKKwlAT3ZlcnJpZGUKKwlwcm90ZWN0ZWQgdm9pZCBvbkludm9rZShSVE1QQ29ubmVjdGlvbiBjb25uLCBDaGFubmVsIGNoYW5uZWwsCisJCQlIZWFkZXIgc291cmNlLCBOb3RpZnkgaW52b2tlLCBSVE1QIHJ0bXApIHsKKwkJc3VwZXIub25JbnZva2UoY29ubiwgY2hhbm5lbCwgc291cmNlLCBpbnZva2UsIHJ0bXApOworCisJCWNvcmUub25JbnZva2UoY29ubiwgY2hhbm5lbCwgc291cmNlLCBpbnZva2UsIHJ0bXApOworCX0KKworCUBPdmVycmlkZQorCXB1YmxpYyB2b2lkIGhhbmRsZUV4Y2VwdGlvbihUaHJvd2FibGUgdGhyb3dhYmxlKSB7CisJCWxvZ2dlci5lcnJvcigie30iLCBuZXcgT2JqZWN0W10geyB0aHJvd2FibGUuZ2V0Q2F1c2UoKSB9KTsKKwkJU3lzdGVtLm91dC5wcmludGxuKHRocm93YWJsZS5nZXRDYXVzZSgpKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2NyZWVuL3dlYnN0YXJ0L1JUTVBTY3JlZW5TaGFyZS5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NjcmVlbi93ZWJzdGFydC9SVE1QU2NyZWVuU2hhcmUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MGFlYjA1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NjcmVlbi93ZWJzdGFydC9SVE1QU2NyZWVuU2hhcmUuamF2YQpAQCAtMCwwICsxLDc4IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnNjcmVlbi53ZWJzdGFydDsKKworaW1wb3J0IG9yZy5yZWQ1LmNsaWVudC5uZXQucnRtcC5DbGllbnRFeGNlcHRpb25IYW5kbGVyOworaW1wb3J0IG9yZy5yZWQ1LmNsaWVudC5uZXQucnRtcC5SVE1QQ2xpZW50OworaW1wb3J0IG9yZy5yZWQ1LnNlcnZlci5uZXQucnRtcC5DaGFubmVsOworaW1wb3J0IG9yZy5yZWQ1LnNlcnZlci5uZXQucnRtcC5SVE1QQ29ubmVjdGlvbjsKK2ltcG9ydCBvcmcucmVkNS5zZXJ2ZXIubmV0LnJ0bXAuY29kZWMuUlRNUDsKK2ltcG9ydCBvcmcucmVkNS5zZXJ2ZXIubmV0LnJ0bXAuZXZlbnQuTm90aWZ5OworaW1wb3J0IG9yZy5yZWQ1LnNlcnZlci5uZXQucnRtcC5tZXNzYWdlLkhlYWRlcjsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXJGYWN0b3J5OworCitwdWJsaWMgY2xhc3MgUlRNUFNjcmVlblNoYXJlIGV4dGVuZHMgUlRNUENsaWVudCBpbXBsZW1lbnRzIENsaWVudEV4Y2VwdGlvbkhhbmRsZXIsIElTY3JlZW5TaGFyZSB7CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeQorCQkJLmdldExvZ2dlcihSVE1QU2NyZWVuU2hhcmUuY2xhc3MpOworCisJcHJpdmF0ZSBDb3JlU2NyZWVuU2hhcmUgY29yZSA9IG51bGw7CisKKwlwcml2YXRlIFJUTVBTY3JlZW5TaGFyZShTdHJpbmdbXSBhcmdzKSB7CisJCWNvcmUgPSBuZXcgQ29yZVNjcmVlblNoYXJlKHRoaXMsIGFyZ3MpOworCX07CisKKwlwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CisJCW5ldyBSVE1QU2NyZWVuU2hhcmUoYXJncyk7CisJfQorCQorCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCS8vCisJLy8gT3ZlcnJpZGUKKwkvLworCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCUBPdmVycmlkZQorCXB1YmxpYyB2b2lkIGNvbm5lY3Rpb25PcGVuZWQoUlRNUENvbm5lY3Rpb24gY29ubiwgUlRNUCBzdGF0ZSkgeworCQlsb2dnZXIuZGVidWcoImNvbm5lY3Rpb24gb3BlbmVkIik7CisJCXN1cGVyLmNvbm5lY3Rpb25PcGVuZWQoY29ubiwgc3RhdGUpOworCQl0aGlzLmNvbm4gPSBjb25uOworCX0KKworCUBPdmVycmlkZQorCXB1YmxpYyB2b2lkIGNvbm5lY3Rpb25DbG9zZWQoUlRNUENvbm5lY3Rpb24gY29ubiwgUlRNUCBzdGF0ZSkgeworCQlsb2dnZXIuZGVidWcoImNvbm5lY3Rpb24gY2xvc2VkIik7CisJCXN1cGVyLmNvbm5lY3Rpb25DbG9zZWQoY29ubiwgc3RhdGUpOworCQljb3JlLnN0b3BTdHJlYW0oKTsKKwl9CisKKwlAT3ZlcnJpZGUKKwlwcm90ZWN0ZWQgdm9pZCBvbkludm9rZShSVE1QQ29ubmVjdGlvbiBjb25uLCBDaGFubmVsIGNoYW5uZWwsCisJCQlIZWFkZXIgc291cmNlLCBOb3RpZnkgaW52b2tlLCBSVE1QIHJ0bXApIHsKKwkJc3VwZXIub25JbnZva2UoY29ubiwgY2hhbm5lbCwgc291cmNlLCBpbnZva2UsIHJ0bXApOworCisJCWNvcmUub25JbnZva2UoY29ubiwgY2hhbm5lbCwgc291cmNlLCBpbnZva2UsIHJ0bXApOworCX0KKworCUBPdmVycmlkZQorCXB1YmxpYyB2b2lkIGhhbmRsZUV4Y2VwdGlvbihUaHJvd2FibGUgdGhyb3dhYmxlKSB7CisJCWxvZ2dlci5lcnJvcigie30iLCBuZXcgT2JqZWN0W10geyB0aHJvd2FibGUuZ2V0Q2F1c2UoKSB9KTsKKwkJU3lzdGVtLm91dC5wcmludGxuKHRocm93YWJsZS5nZXRDYXVzZSgpKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2NyZWVuL3dlYnN0YXJ0L1JUTVBUU2NyZWVuU2hhcmUuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zY3JlZW4vd2Vic3RhcnQvUlRNUFRTY3JlZW5TaGFyZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjOGI3OTkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2NyZWVuL3dlYnN0YXJ0L1JUTVBUU2NyZWVuU2hhcmUuamF2YQpAQCAtMCwwICsxLDc2IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnNjcmVlbi53ZWJzdGFydDsKKworaW1wb3J0IG9yZy5yZWQ1LmNsaWVudC5uZXQucnRtcC5DbGllbnRFeGNlcHRpb25IYW5kbGVyOworaW1wb3J0IG9yZy5yZWQ1LmNsaWVudC5uZXQucnRtcHQuUlRNUFRDbGllbnQ7CitpbXBvcnQgb3JnLnJlZDUuc2VydmVyLm5ldC5ydG1wLkNoYW5uZWw7CitpbXBvcnQgb3JnLnJlZDUuc2VydmVyLm5ldC5ydG1wLlJUTVBDb25uZWN0aW9uOworaW1wb3J0IG9yZy5yZWQ1LnNlcnZlci5uZXQucnRtcC5jb2RlYy5SVE1QOworaW1wb3J0IG9yZy5yZWQ1LnNlcnZlci5uZXQucnRtcC5ldmVudC5Ob3RpZnk7CitpbXBvcnQgb3JnLnJlZDUuc2VydmVyLm5ldC5ydG1wLm1lc3NhZ2UuSGVhZGVyOworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlckZhY3Rvcnk7CisKK3B1YmxpYyBjbGFzcyBSVE1QVFNjcmVlblNoYXJlIGV4dGVuZHMgUlRNUFRDbGllbnQgaW1wbGVtZW50cyBDbGllbnRFeGNlcHRpb25IYW5kbGVyLCBJU2NyZWVuU2hhcmUgeworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcihSVE1QVFNjcmVlblNoYXJlLmNsYXNzKTsKKworCXByaXZhdGUgQ29yZVNjcmVlblNoYXJlIGNvcmUgPSBudWxsOworCisJcHJpdmF0ZSBSVE1QVFNjcmVlblNoYXJlKFN0cmluZ1tdIGFyZ3MpIHsKKwkJY29yZSA9IG5ldyBDb3JlU2NyZWVuU2hhcmUodGhpcywgYXJncyk7CisJfTsKKworCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3MpIHsKKwkJbmV3IFJUTVBUU2NyZWVuU2hhcmUoYXJncyk7CisJfQorCQorCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCS8vCisJLy8gT3ZlcnJpZGUKKwkvLworCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCUBPdmVycmlkZQorCXB1YmxpYyB2b2lkIGNvbm5lY3Rpb25PcGVuZWQoUlRNUENvbm5lY3Rpb24gY29ubiwgUlRNUCBzdGF0ZSkgeworCQlsb2dnZXIuZGVidWcoImNvbm5lY3Rpb24gb3BlbmVkIik7CisJCXN1cGVyLmNvbm5lY3Rpb25PcGVuZWQoY29ubiwgc3RhdGUpOworCQl0aGlzLmNvbm4gPSBjb25uOworCX0KKworCUBPdmVycmlkZQorCXB1YmxpYyB2b2lkIGNvbm5lY3Rpb25DbG9zZWQoUlRNUENvbm5lY3Rpb24gY29ubiwgUlRNUCBzdGF0ZSkgeworCQlsb2dnZXIuZGVidWcoImNvbm5lY3Rpb24gY2xvc2VkIik7CisJCXN1cGVyLmNvbm5lY3Rpb25DbG9zZWQoY29ubiwgc3RhdGUpOworCQljb3JlLnN0b3BTdHJlYW0oKTsKKwl9CisKKwlAT3ZlcnJpZGUKKwlwcm90ZWN0ZWQgdm9pZCBvbkludm9rZShSVE1QQ29ubmVjdGlvbiBjb25uLCBDaGFubmVsIGNoYW5uZWwsCisJCQlIZWFkZXIgc291cmNlLCBOb3RpZnkgaW52b2tlLCBSVE1QIHJ0bXApIHsKKwkJc3VwZXIub25JbnZva2UoY29ubiwgY2hhbm5lbCwgc291cmNlLCBpbnZva2UsIHJ0bXApOworCisJCWNvcmUub25JbnZva2UoY29ubiwgY2hhbm5lbCwgc291cmNlLCBpbnZva2UsIHJ0bXApOworCX0KKworCUBPdmVycmlkZQorCXB1YmxpYyB2b2lkIGhhbmRsZUV4Y2VwdGlvbihUaHJvd2FibGUgdGhyb3dhYmxlKSB7CisJCWxvZ2dlci5lcnJvcigie30iLCBuZXcgT2JqZWN0W10geyB0aHJvd2FibGUuZ2V0Q2F1c2UoKSB9KTsKKwkJU3lzdGVtLm91dC5wcmludGxuKHRocm93YWJsZS5nZXRDYXVzZSgpKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2NyZWVuL3dlYnN0YXJ0L1NjcmVlblYxRW5jb2Rlci5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NjcmVlbi93ZWJzdGFydC9TY3JlZW5WMUVuY29kZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYWEyMTJiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NjcmVlbi93ZWJzdGFydC9TY3JlZW5WMUVuY29kZXIuamF2YQpAQCAtMCwwICsxLDEzOCBAQAorLyoNCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICogdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5zY3JlZW4ud2Vic3RhcnQ7DQorDQoraW1wb3J0IGphdmEuYXd0LlJlY3RhbmdsZTsNCitpbXBvcnQgamF2YS5hd3QuaW1hZ2UuQnVmZmVyZWRJbWFnZTsNCitpbXBvcnQgamF2YS5pby5CeXRlQXJyYXlPdXRwdXRTdHJlYW07DQoraW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247DQoraW1wb3J0IGphdmEuaW8uT3V0cHV0U3RyZWFtOw0KK2ltcG9ydCBqYXZhLnV0aWwuemlwLkRlZmxhdGVyOw0KKw0KK3B1YmxpYyBjbGFzcyBTY3JlZW5WMUVuY29kZXIgZXh0ZW5kcyBCYXNlU2NyZWVuRW5jb2RlciB7DQorCXByaXZhdGUgQnVmZmVyZWRJbWFnZSBsYXN0ID0gbnVsbDsNCisJcHJpdmF0ZSBzdGF0aWMgaW50IEtFWV9GUkFNRV9JTkRFWCA9IDEwMDsNCisJcHJpdmF0ZSBzdGF0aWMgaW50IERFRkFVTFRfQkxPQ0tfU0laRSA9IDMyOw0KKwlwcml2YXRlIHN0YXRpYyBpbnQgREVGQVVMVF9TQ1JFRU5fV0lEVEggPSAxOTIwOw0KKwlwcml2YXRlIHN0YXRpYyBpbnQgREVGQVVMVF9TQ1JFRU5fSEVJR0hUID0gMTA4MDsNCisJcHJpdmF0ZSBpbnQga2V5RnJhbWVJbmRleDsNCisJcHJpdmF0ZSBpbnQgZnJhbWVDb3VudCA9IDA7DQorCXByaXZhdGUgaW50IGJsb2NrU2l6ZTsNCisJcHJpdmF0ZSBSZWN0YW5nbGUgc2NyZWVuOw0KKwlwcml2YXRlIEJ5dGVBcnJheU91dHB1dFN0cmVhbSBiYSA9IG5ldyBCeXRlQXJyYXlPdXRwdXRTdHJlYW0oNTAgKyAzICogREVGQVVMVF9TQ1JFRU5fV0lEVEggKiBERUZBVUxUX1NDUkVFTl9IRUlHSFQpOw0KKwlwcml2YXRlIGJ5dGVbXSBhcmVhQnVmID0gbnVsbDsNCisJcHJpdmF0ZSBEZWZsYXRlciBkID0gbmV3IERlZmxhdGVyKERlZmxhdGVyLkRFRkFVTFRfQ09NUFJFU1NJT04pOw0KKwlwcml2YXRlIGJ5dGVbXSB6aXBCdWYgPSBudWxsOw0KKwkNCisJcHVibGljIFNjcmVlblYxRW5jb2RlcigpIHsNCisJCXRoaXMoS0VZX0ZSQU1FX0lOREVYLCBERUZBVUxUX0JMT0NLX1NJWkUpOw0KKwl9DQorCQ0KKwkvL3dpbGwgY3JlYXRlIHNxdWFyZSBibG9ja3MNCisJcHVibGljIFNjcmVlblYxRW5jb2RlcihpbnQga2V5RnJhbWVJbmRleCwgaW50IGJsb2NrU2l6ZSkgew0KKwkJdGhpcy5rZXlGcmFtZUluZGV4ID0ga2V5RnJhbWVJbmRleDsNCisJCWlmIChibG9ja1NpemUgPCAxNiB8fCBibG9ja1NpemUgPiAyNTYgfHwgYmxvY2tTaXplICUgMTYgIT0gMCkgew0KKwkJCXRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJJbnZhbGlkIGJsb2NrIHNpemUgcGFzc2VkOiAiICsgYmxvY2tTaXplICsgIiBzaG91bGQgYmU6ICdmcm9tIDE2IHRvIDI1NiBpbiBtdWx0aXBsZXMgb2YgMTYnIik7DQorCQl9DQorCQl0aGlzLmJsb2NrU2l6ZSA9IGJsb2NrU2l6ZTsNCisNCisJCWFyZWFCdWYgPSBuZXcgYnl0ZVszICogYmxvY2tTaXplICogYmxvY2tTaXplXTsNCisJCXppcEJ1ZiA9IG5ldyBieXRlWzMgKiBibG9ja1NpemUgKiBibG9ja1NpemVdOw0KKwl9DQorCQ0KKwlwdWJsaWMgYnl0ZVtdIGVuY29kZShSZWN0YW5nbGUgc2NyZWVuLCBCdWZmZXJlZEltYWdlIF9pbWcsIFJlY3RhbmdsZSBzaXplKSB0aHJvd3MgSU9FeGNlcHRpb24gew0KKwkJQnVmZmVyZWRJbWFnZSBpbWcgPSByZXNpemUoX2ltZywgc2l6ZSk7DQorCQliYS5yZXNldCgpOw0KKwkJUmVjdGFuZ2xlIGltZ0FyZWEgPSBuZXcgUmVjdGFuZ2xlKGltZy5nZXRXaWR0aCgpLCBpbWcuZ2V0SGVpZ2h0KCkpOw0KKwkJUmVjdGFuZ2xlIGFyZWEgPSBnZXROZXh0QmxvY2soaW1nQXJlYSwgbnVsbCk7DQorCQlib29sZWFuIGlzS2V5RnJhbWUgPSAoZnJhbWVDb3VudCsrICUga2V5RnJhbWVJbmRleCkgPT0gMCB8fCBsYXN0ID09IG51bGwgfHwgIXNjcmVlbi5lcXVhbHModGhpcy5zY3JlZW4pOw0KKwkJDQorCQkvL2hlYWRlcg0KKwkJYmEud3JpdGUoZ2V0VGFnKGlzS2V5RnJhbWUgPyAweDAxIDogMHgwMiwgMHgwMykpOw0KKwkJd3JpdGVTaG9ydChiYSwgaW1nQXJlYS53aWR0aCArICgoYmxvY2tTaXplIC8gMTYgLSAxKSA8PCAxMikpOw0KKwkJd3JpdGVTaG9ydChiYSwgaW1nQXJlYS5oZWlnaHQgKyAoKGJsb2NrU2l6ZSAvIDE2IC0gMSkgPDwgMTIpKTsNCisJCQ0KKwkJd2hpbGUgKGFyZWEud2lkdGggPiAwICYmIGFyZWEuaGVpZ2h0ID4gMCkgew0KKwkJCXdyaXRlQnl0ZXNJZkNoYW5nZWQoYmEsIGlzS2V5RnJhbWUsIGltZywgYXJlYSk7DQorCQkJYXJlYSA9IGdldE5leHRCbG9jayhpbWdBcmVhLCBhcmVhKTsNCisJCX0NCisJCXRoaXMuc2NyZWVuID0gc2NyZWVuOw0KKwkJbGFzdCA9IGltZzsNCisJCXJldHVybiBiYS50b0J5dGVBcnJheSgpOw0KKwl9DQorCQ0KKwlwdWJsaWMgdm9pZCByZXNldCgpIHsNCisJCWxhc3QgPSBudWxsOw0KKwl9DQorCQ0KKwlwcml2YXRlIFJlY3RhbmdsZSBnZXROZXh0QmxvY2soUmVjdGFuZ2xlIGltZywgUmVjdGFuZ2xlIF9wcmV2KSB7DQorCQlSZWN0YW5nbGUgcHJldjsNCisJCWlmIChfcHJldiA9PSBudWxsKSB7DQorCQkJcHJldiA9IG5ldyBSZWN0YW5nbGUoMCwgTWF0aC5tYXgoMCwgaW1nLmhlaWdodCAtIGJsb2NrU2l6ZSksIGJsb2NrU2l6ZSwgYmxvY2tTaXplKTsNCisJCX0gZWxzZSB7DQorCQkJcHJldiA9IG5ldyBSZWN0YW5nbGUoX3ByZXYpOw0KKwkJCWlmIChwcmV2LnggKyBwcmV2LndpZHRoID09IGltZy5nZXRXaWR0aCgpKSB7DQorCQkJCWlmIChwcmV2LnkgPT0gMCkgcmV0dXJuIG5ldyBSZWN0YW5nbGUoKTsgLy90aGUgZW5kIG9mIHRoZSBpbWFnZQ0KKwkJCQkvL25leHQgcm93DQorCQkJCXByZXYueCA9IDA7IC8vcmVzZXQgcG9zaXRpb24NCisJCQkJcHJldi53aWR0aCA9IGJsb2NrU2l6ZTsgLy9yZXNldCB3aWR0aA0KKwkJCQlwcmV2LmhlaWdodCA9IChwcmV2LnkgPiBibG9ja1NpemUgPyBibG9ja1NpemUgOiBwcmV2LnkpOw0KKwkJCQlwcmV2LnkgLT0gcHJldi5oZWlnaHQ7DQorCQkJfSBlbHNlIHsNCisJCQkJcHJldi54ICs9IGJsb2NrU2l6ZTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gaW1nLmludGVyc2VjdGlvbihwcmV2KTsgDQorCX0NCisNCisJcHJpdmF0ZSB2b2lkIHdyaXRlQnl0ZXNJZkNoYW5nZWQoQnl0ZUFycmF5T3V0cHV0U3RyZWFtIGJhLCBib29sZWFuIGlzS2V5RnJhbWUsIEJ1ZmZlcmVkSW1hZ2UgaW1nLCBSZWN0YW5nbGUgYXJlYSkgdGhyb3dzIElPRXhjZXB0aW9uIHsNCisJCWJvb2xlYW4gY2hhbmdlZCA9IGlzS2V5RnJhbWU7DQorCQlpbnQgY291bnQgPSAwOw0KKwkJZm9yIChpbnQgeSA9IGFyZWEueSArIGFyZWEuaGVpZ2h0IC0gMTsgeSA+PSBhcmVhLnk7IC0teSkgew0KKwkJCWZvciAoaW50IHggPSBhcmVhLng7IHggPCBhcmVhLnggKyBhcmVhLndpZHRoOyArK3gpIHsNCisJCQkJaW50IHBpeGVsID0gaW1nLmdldFJHQih4LCB5KTsNCisJCQkJaWYgKCFjaGFuZ2VkICYmIChsYXN0ID09IG51bGwgfHwgcGl4ZWwgIT0gbGFzdC5nZXRSR0IoeCwgeSkpKSB7DQorCQkJCQljaGFuZ2VkID0gdHJ1ZTsNCisJCQkJfQ0KKwkJCQlhcmVhQnVmW2NvdW50KytdID0gKGJ5dGUpKHBpeGVsICYgMHhGRik7CQkJLy8gQmx1ZSBjb21wb25lbnQNCisJCQkJYXJlYUJ1Zltjb3VudCsrXSA9IChieXRlKSgocGl4ZWwgPj4gOCkgJiAweEZGKTsJCS8vIEdyZWVuIGNvbXBvbmVudA0KKwkJCQlhcmVhQnVmW2NvdW50KytdID0gKGJ5dGUpKChwaXhlbCA+PiAxNikgJiAweEZGKTsJLy8gUmVkIGNvbXBvbmVudA0KKwkJCX0NCisJCX0NCisJCWlmIChjaGFuZ2VkKSB7DQorCQkJZC5yZXNldCgpOw0KKwkJCWQuc2V0SW5wdXQoYXJlYUJ1ZiwgMCwgY291bnQpOw0KKwkJCWQuZmluaXNoKCk7DQorCQkJaW50IHdyaXR0ZW4gPSBkLmRlZmxhdGUoemlwQnVmKTsNCisJCQl3cml0ZVNob3J0KGJhLCB3cml0dGVuKTsNCisJCQliYS53cml0ZSh6aXBCdWYsIDAsIHdyaXR0ZW4pOw0KKwkJfSBlbHNlIHsNCisJCQl3cml0ZVNob3J0KGJhLCAwKTsNCisJCX0NCisJfQ0KKw0KKwlwdWJsaWMgaW50IGdldFRhZyhmaW5hbCBpbnQgZnJhbWUsIGZpbmFsIGludCBjb2RlYykgew0KKwkJcmV0dXJuICgoZnJhbWUgJiAweDBGKSA8PCA0KSArICgoY29kZWMgJiAweDBGKSA8PCAwKTsNCisJfQ0KKwkNCisJcHJpdmF0ZSB2b2lkIHdyaXRlU2hvcnQoT3V0cHV0U3RyZWFtIG9zLCBmaW5hbCBpbnQgbikgdGhyb3dzIElPRXhjZXB0aW9uIHsNCisJCW9zLndyaXRlKChuID4+IDgpICYgMHhGRik7DQorCQlvcy53cml0ZSgobiA+PiAwKSAmIDB4RkYpOw0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zY3JlZW4vd2Vic3RhcnQvZ3VpL0JsYW5rQXJlYS5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NjcmVlbi93ZWJzdGFydC9ndWkvQmxhbmtBcmVhLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDVkNDBlYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zY3JlZW4vd2Vic3RhcnQvZ3VpL0JsYW5rQXJlYS5qYXZhCkBAIC0wLDAgKzEsNDAgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2NyZWVuLndlYnN0YXJ0Lmd1aTsKKworaW1wb3J0IGphdmF4LnN3aW5nLio7CitpbXBvcnQgamF2YS5hd3QuRGltZW5zaW9uOworaW1wb3J0IGphdmEuYXd0LkNvbG9yOworCitwdWJsaWMgY2xhc3MgQmxhbmtBcmVhIGV4dGVuZHMgTW91c2VMaXN0ZW5lcmFibGUgeworCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDMwNTcyMzk2MjE0NDY2NTE0N0w7CisJcHJpdmF0ZSBEaW1lbnNpb24gbWluU2l6ZSA9IG5ldyBEaW1lbnNpb24oMTAwLCA1MCk7CisKKyAgICBwdWJsaWMgQmxhbmtBcmVhKENvbG9yIGNvbG9yKSB7CisgICAgICAgIHNldEJhY2tncm91bmQoY29sb3IpOworICAgICAgICBzZXRPcGFxdWUoZmFsc2UpOworCQlzZXRIb3Jpem9udGFsQWxpZ25tZW50KFN3aW5nQ29uc3RhbnRzLkxFRlQpOworCQlzZXRWZXJ0aWNhbEFsaWdubWVudChTd2luZ0NvbnN0YW50cy5UT1ApOworCQlzZXRIb3Jpem9udGFsVGV4dFBvc2l0aW9uKDApOworCQlzZXRWZXJ0aWNhbFRleHRQb3NpdGlvbigwKTsKKyAgICAgICAgc2V0Qm9yZGVyKEJvcmRlckZhY3RvcnkuY3JlYXRlTGluZUJvcmRlcihDb2xvci5ibGFjaykpOworICAgICAgICBzZXRNaW5pbXVtU2l6ZShtaW5TaXplKTsKKyAgICAgICAgc2V0UHJlZmVycmVkU2l6ZShtaW5TaXplKTsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2NyZWVuL3dlYnN0YXJ0L2d1aS9Nb3VzZUxpc3RlbmVyYWJsZS5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NjcmVlbi93ZWJzdGFydC9ndWkvTW91c2VMaXN0ZW5lcmFibGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWNlMTFkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NjcmVlbi93ZWJzdGFydC9ndWkvTW91c2VMaXN0ZW5lcmFibGUuamF2YQpAQCAtMCwwICsxLDMyIEBACisvKg0KKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgKiB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnNjcmVlbi53ZWJzdGFydC5ndWk7DQorDQoraW1wb3J0IGphdmEuYXd0LmV2ZW50Lk1vdXNlQWRhcHRlcjsNCisNCitpbXBvcnQgamF2YXguc3dpbmcuSkxhYmVsOw0KKw0KK3B1YmxpYyBjbGFzcyBNb3VzZUxpc3RlbmVyYWJsZSBleHRlbmRzIEpMYWJlbCB7DQorCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IC02ODYyOTMwNjgxODU4ODY2ODcyTDsNCisNCisJcHVibGljIHZvaWQgYWRkTGlzdGVuZXIoTW91c2VBZGFwdGVyIGxpc3RuZXIpIHsNCisJCWFkZE1vdXNlTGlzdGVuZXIobGlzdG5lcik7DQorCQlhZGRNb3VzZU1vdGlvbkxpc3RlbmVyKGxpc3RuZXIpOw0KKwl9DQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zY3JlZW4vd2Vic3RhcnQvZ3VpL051bWJlclNwaW5uZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zY3JlZW4vd2Vic3RhcnQvZ3VpL051bWJlclNwaW5uZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDZhNzY4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NjcmVlbi93ZWJzdGFydC9ndWkvTnVtYmVyU3Bpbm5lci5qYXZhCkBAIC0wLDAgKzEsMzQgQEAKKy8qDQorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAqIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2NyZWVuLndlYnN0YXJ0Lmd1aTsNCisNCitpbXBvcnQgamF2YXguc3dpbmcuSlNwaW5uZXI7DQoraW1wb3J0IGphdmF4LnN3aW5nLlNwaW5uZXJOdW1iZXJNb2RlbDsNCisNCitwdWJsaWMgY2xhc3MgTnVtYmVyU3Bpbm5lciBleHRlbmRzIEpTcGlubmVyIHsNCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gLTE5NjQ0NTcwMjI5Mzc3NDA2MzNMOw0KKw0KKwlwdWJsaWMgTnVtYmVyU3Bpbm5lcihpbnQgdmFsdWUsIGludCBtaW4sIGludCBtYXgsIGludCBzdGVwKSB7DQorCQlzdXBlcihuZXcgU3Bpbm5lck51bWJlck1vZGVsKHZhbHVlLCBtaW4sIG1heCwgc3RlcCkpOw0KKwl9DQorCQ0KKwlwdWJsaWMgSW50ZWdlciBnZXRWYWx1ZSgpIHsNCisJCXJldHVybiAoSW50ZWdlcilzdXBlci5nZXRWYWx1ZSgpOw0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zY3JlZW4vd2Vic3RhcnQvZ3VpL1NjcmVlbkRpbWVuc2lvbnMuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zY3JlZW4vd2Vic3RhcnQvZ3VpL1NjcmVlbkRpbWVuc2lvbnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YzQ0MzVmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NjcmVlbi93ZWJzdGFydC9ndWkvU2NyZWVuRGltZW5zaW9ucy5qYXZhCkBAIC0wLDAgKzEsNzMgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2NyZWVuLndlYnN0YXJ0Lmd1aTsKKworaW1wb3J0IGphdmEuYXd0LkRpbWVuc2lvbjsKK2ltcG9ydCBqYXZhLmF3dC5Ub29sa2l0OworCitwdWJsaWMgY2xhc3MgU2NyZWVuRGltZW5zaW9ucyB7CisJLyoqCisJICogaW1hZ2UgcmVjYWxjaW5nIHZhbHVlJ3MgZnJvbSB0aGUgdmlydHVhbCBTY3JlZW4gZHJhd2VyCisJICovCisJcHVibGljIHN0YXRpYyBpbnQgd2lkdGggPSAyMDA7CisJcHVibGljIHN0YXRpYyBpbnQgaGVpZ2h0ID0gMDsKKworCS8qKgorCSAqIFZhbHVlcyBjYWxjZWQgYnkgdGhlIG9yaWdpbmFsIFNjcmVlbgorCSAqLworCisJcHVibGljIHN0YXRpYyBkb3VibGUgcmF0aW8gPSAwOworCisJcHVibGljIHN0YXRpYyBpbnQgd2lkdGhNYXggPSAwOworCXB1YmxpYyBzdGF0aWMgaW50IGhlaWdodE1heCA9IDA7CisKKwkvKioKKwkgKiBWYWx1ZXMgc2V0IGJ5IHRoZSB2aXJ0dWFsU2NyZWVuCisJICovCisJcHVibGljIHN0YXRpYyBpbnQgc3Bpbm5lcldpZHRoID0gMDsKKwlwdWJsaWMgc3RhdGljIGludCBzcGlubmVySGVpZ2h0ID0gMDsKKwlwdWJsaWMgc3RhdGljIGludCBzcGlubmVyWCA9IDA7CisJcHVibGljIHN0YXRpYyBpbnQgc3Bpbm5lclkgPSAwOworCQorCXB1YmxpYyBzdGF0aWMgU2NyZWVuUXVhbGl0eSBxdWFsaXR5ID0gU2NyZWVuUXVhbGl0eS5NZWRpdW07CisJCisJcHVibGljIHN0YXRpYyBpbnQgcmVzaXplWCA9IDY0MDsKKwlwdWJsaWMgc3RhdGljIGludCByZXNpemVZID0gNDgwOworCQorCXN0YXRpYyB7CisJCURpbWVuc2lvbiBzY3JlZW5TaXplID0gVG9vbGtpdC5nZXREZWZhdWx0VG9vbGtpdCgpLmdldFNjcmVlblNpemUoKTsKKwkJU2NyZWVuRGltZW5zaW9ucy5yYXRpbyA9IHNjcmVlblNpemUuZ2V0SGVpZ2h0KCkgLyBzY3JlZW5TaXplLmdldFdpZHRoKCk7CisJCVNjcmVlbkRpbWVuc2lvbnMud2lkdGhNYXggPSAoaW50KXNjcmVlblNpemUuZ2V0V2lkdGgoKTsKKwkJU2NyZWVuRGltZW5zaW9ucy5oZWlnaHRNYXggPSAoaW50KXNjcmVlblNpemUuZ2V0SGVpZ2h0KCk7CisJCVNjcmVlbkRpbWVuc2lvbnMuaGVpZ2h0ID0gKGludClNYXRoLnJvdW5kKFNjcmVlbkRpbWVuc2lvbnMud2lkdGggKiBTY3JlZW5EaW1lbnNpb25zLnJhdGlvKTsKKwkJU2NyZWVuRGltZW5zaW9ucy5zcGlubmVyWCA9IDA7CisJCVNjcmVlbkRpbWVuc2lvbnMuc3Bpbm5lclkgPSAwOworCQlTY3JlZW5EaW1lbnNpb25zLnNwaW5uZXJXaWR0aCA9IFNjcmVlbkRpbWVuc2lvbnMud2lkdGhNYXg7CisJCVNjcmVlbkRpbWVuc2lvbnMuc3Bpbm5lckhlaWdodCA9IFNjcmVlbkRpbWVuc2lvbnMuaGVpZ2h0TWF4OworCQlTY3JlZW5EaW1lbnNpb25zLnJlc2l6ZVggPSA2NDA7CisJCVNjcmVlbkRpbWVuc2lvbnMucmVzaXplWSA9IDQwMDsKKwl9CisJCisJcHVibGljIGVudW0gU2NyZWVuUXVhbGl0eSB7CisJCVZlcnlIaWdoCisJCSwgSGlnaAorCQksIE1lZGl1bQorCQksIExvdworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zY3JlZW4vd2Vic3RhcnQvZ3VpL1NjcmVlbkhlaWdodE1vdXNlTGlzdGVuZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zY3JlZW4vd2Vic3RhcnQvZ3VpL1NjcmVlbkhlaWdodE1vdXNlTGlzdGVuZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDI2YjJjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NjcmVlbi93ZWJzdGFydC9ndWkvU2NyZWVuSGVpZ2h0TW91c2VMaXN0ZW5lci5qYXZhCkBAIC0wLDAgKzEsNjkgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2NyZWVuLndlYnN0YXJ0Lmd1aTsKKworaW1wb3J0IGphdmEuYXd0LkNvbXBvbmVudDsKK2ltcG9ydCBqYXZhLmF3dC5DdXJzb3I7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuTW91c2VFdmVudDsKKworaW1wb3J0IGphdmF4LnN3aW5nLmV2ZW50Lk1vdXNlSW5wdXRBZGFwdGVyOworCitwdWJsaWMgY2xhc3MgU2NyZWVuSGVpZ2h0TW91c2VMaXN0ZW5lciBleHRlbmRzIE1vdXNlSW5wdXRBZGFwdGVyICB7CisJcHJpdmF0ZSBTY3JlZW5TaGFyZXJGcmFtZSBmcmFtZTsKKwlwcml2YXRlIGRvdWJsZSB5ID0gMDsKKworCXB1YmxpYyBTY3JlZW5IZWlnaHRNb3VzZUxpc3RlbmVyKFNjcmVlblNoYXJlckZyYW1lIGZyYW1lKSB7CisJCXRoaXMuZnJhbWUgPSBmcmFtZTsKKwl9CisJCisJcHVibGljIHZvaWQgbW91c2VFbnRlcmVkKE1vdXNlRXZlbnQgZSkgeworCQlmcmFtZS5zZXRDdXJzb3IoQ3Vyc29yLmdldFByZWRlZmluZWRDdXJzb3IoQ3Vyc29yLk5fUkVTSVpFX0NVUlNPUikpOworCX0KKworCXB1YmxpYyB2b2lkIG1vdXNlRXhpdGVkKE1vdXNlRXZlbnQgZSkgeworCQlmcmFtZS5zZXRDdXJzb3IoQ3Vyc29yLmdldFByZWRlZmluZWRDdXJzb3IoQ3Vyc29yLkRFRkFVTFRfQ1VSU09SKSk7CisJfQorCisJcHVibGljIHZvaWQgbW91c2VQcmVzc2VkKE1vdXNlRXZlbnQgZSkgeworCQlmcmFtZS5zZXRTaG93V2FybmluZyhmYWxzZSk7CisJCXkgPSBlLmdldFkoKTsKKwl9CisKKwlwdWJsaWMgdm9pZCBtb3VzZVJlbGVhc2VkKE1vdXNlRXZlbnQgZSkgeworCQlmcmFtZS5zZXRTaG93V2FybmluZyh0cnVlKTsKKwl9CisKKwlwdWJsaWMgdm9pZCBtb3VzZURyYWdnZWQoTW91c2VFdmVudCBlKSB7CisJCWlmICghKChDb21wb25lbnQpZS5nZXRTb3VyY2UoKSkuaXNFbmFibGVkKCkpIHsKKwkJCXJldHVybjsKKwkJfQorCQlkb3VibGUgbmV3WSA9IGUuZ2V0WSgpOworCisJCWludCBuZXdIZWlnaHQgPSBTY3JlZW5EaW1lbnNpb25zLnNwaW5uZXJIZWlnaHQgLSAoaW50KSh5IC0gbmV3WSk7CisJCWludCBuZXdTcGlubmVyWSA9IFNjcmVlbkRpbWVuc2lvbnMuc3Bpbm5lclkgKyBuZXdIZWlnaHQ7CisKKwkJaWYgKG5ld1NwaW5uZXJZID49IDAgJiYgbmV3U3Bpbm5lclkgPD0gU2NyZWVuRGltZW5zaW9ucy5oZWlnaHRNYXgpIHsKKwkJCWZyYW1lLnNldERvVXBkYXRlQm91bmRzKGZhbHNlKTsKKwkJCWZyYW1lLnNldFNwaW5uZXJIZWlnaHQobmV3SGVpZ2h0KTsKKwkJCWZyYW1lLnNldERvVXBkYXRlQm91bmRzKHRydWUpOworCQkJZnJhbWUudXBkYXRlVlNjcmVlbkJvdW5kcygpOworCQkJZnJhbWUuY2FsY1Jlc2NhbGVGYWN0b3JzKCk7CisJCX0KKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2NyZWVuL3dlYnN0YXJ0L2d1aS9TY3JlZW5LZXlMaXN0ZW5lci5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NjcmVlbi93ZWJzdGFydC9ndWkvU2NyZWVuS2V5TGlzdGVuZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDMxNjJhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NjcmVlbi93ZWJzdGFydC9ndWkvU2NyZWVuS2V5TGlzdGVuZXIuamF2YQpAQCAtMCwwICsxLDQwIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnNjcmVlbi53ZWJzdGFydC5ndWk7CisKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5LZXlFdmVudDsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5LZXlMaXN0ZW5lcjsKKworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlckZhY3Rvcnk7CisKK3B1YmxpYyBjbGFzcyBTY3JlZW5LZXlMaXN0ZW5lciBpbXBsZW1lbnRzIEtleUxpc3RlbmVyIHsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nZ2VyID0gTG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoU2NyZWVuS2V5TGlzdGVuZXIuY2xhc3MpOworCisJcHVibGljIHZvaWQga2V5UHJlc3NlZChLZXlFdmVudCBrRXZlbnQpIHsKKwkJbG9nZ2VyLmRlYnVnKCJrZXlQcmVzc2VkIDpDb2RlOiAiICsga0V2ZW50LmdldEtleUNvZGUoKSk7CisJfQorCisJcHVibGljIHZvaWQga2V5UmVsZWFzZWQoS2V5RXZlbnQga0V2ZW50KSB7CisJCWxvZ2dlci5kZWJ1Zygia2V5UmVsZWFzZWQgOkNvZGU6ICIgKyBrRXZlbnQuZ2V0S2V5Q29kZSgpKTsKKwl9CisKKwlwdWJsaWMgdm9pZCBrZXlUeXBlZChLZXlFdmVudCBhcmcwKSB7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NjcmVlbi93ZWJzdGFydC9ndWkvU2NyZWVuTW91c2VMaXN0ZW5lci5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NjcmVlbi93ZWJzdGFydC9ndWkvU2NyZWVuTW91c2VMaXN0ZW5lci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5MWFiZTcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2NyZWVuL3dlYnN0YXJ0L2d1aS9TY3JlZW5Nb3VzZUxpc3RlbmVyLmphdmEKQEAgLTAsMCArMSw3MyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5zY3JlZW4ud2Vic3RhcnQuZ3VpOworCitpbXBvcnQgamF2YS5hd3QuQ29tcG9uZW50OworaW1wb3J0IGphdmEuYXd0LkN1cnNvcjsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5Nb3VzZUV2ZW50OworCitpbXBvcnQgamF2YXguc3dpbmcuZXZlbnQuTW91c2VJbnB1dEFkYXB0ZXI7CisKK3B1YmxpYyBjbGFzcyBTY3JlZW5Nb3VzZUxpc3RlbmVyIGV4dGVuZHMgTW91c2VJbnB1dEFkYXB0ZXIgeworCXByaXZhdGUgU2NyZWVuU2hhcmVyRnJhbWUgZnJhbWU7CisJcHJpdmF0ZSBpbnQgeCA9IDA7CisJcHJpdmF0ZSBpbnQgeSA9IDA7CisKKwlwdWJsaWMgU2NyZWVuTW91c2VMaXN0ZW5lcihTY3JlZW5TaGFyZXJGcmFtZSBmcmFtZSkgeworCQl0aGlzLmZyYW1lID0gZnJhbWU7CisJfQorCisJcHVibGljIHZvaWQgbW91c2VFbnRlcmVkKE1vdXNlRXZlbnQgZSkgeworCQlmcmFtZS5zZXRDdXJzb3IoQ3Vyc29yLmdldFByZWRlZmluZWRDdXJzb3IoQ3Vyc29yLkhBTkRfQ1VSU09SKSk7CisJfQorCisJcHVibGljIHZvaWQgbW91c2VFeGl0ZWQoTW91c2VFdmVudCBlKSB7CisJCWZyYW1lLnNldEN1cnNvcihDdXJzb3IuZ2V0UHJlZGVmaW5lZEN1cnNvcihDdXJzb3IuREVGQVVMVF9DVVJTT1IpKTsKKwl9CisKKwlwdWJsaWMgdm9pZCBtb3VzZVByZXNzZWQoTW91c2VFdmVudCBlKSB7CisJCWZyYW1lLnNldFNob3dXYXJuaW5nKGZhbHNlKTsKKwkJdGhpcy54ID0gZS5nZXRYKCk7CisJCXRoaXMueSA9IGUuZ2V0WSgpOworCX0KKworCXB1YmxpYyB2b2lkIG1vdXNlUmVsZWFzZWQoTW91c2VFdmVudCBlKSB7CisJCWZyYW1lLnNldFNob3dXYXJuaW5nKHRydWUpOworCX0KKworCXB1YmxpYyB2b2lkIG1vdXNlRHJhZ2dlZChNb3VzZUV2ZW50IGUpIHsKKwkJaWYgKCEoKENvbXBvbmVudCllLmdldFNvdXJjZSgpKS5pc0VuYWJsZWQoKSkgeworCQkJcmV0dXJuOworCQl9CisJCWludCBuZXdYID0gZS5nZXRYKCk7CisJCWludCBuZXdZID0gZS5nZXRZKCk7CisKKwkJaW50IG5ld1hQb3NpdGlvbiA9IFNjcmVlbkRpbWVuc2lvbnMuc3Bpbm5lclggLSAodGhpcy54IC0gbmV3WCk7CisJCWludCBuZXdZUG9zaXRpb24gPSBTY3JlZW5EaW1lbnNpb25zLnNwaW5uZXJZIC0gKHRoaXMueSAtIG5ld1kpOworCQlpZiAobmV3WFBvc2l0aW9uID49IDApIHsKKwkJCWZyYW1lLnNldFNwaW5uZXJYKG5ld1hQb3NpdGlvbik7CisJCX0KKwkJaWYgKG5ld1lQb3NpdGlvbiA+PSAwKSB7CisJCQlmcmFtZS5zZXRTcGlubmVyWShuZXdZUG9zaXRpb24pOworCQl9CisKKwkJZnJhbWUuY2FsY1Jlc2NhbGVGYWN0b3JzKCk7CisJfQorCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2NyZWVuL3dlYnN0YXJ0L2d1aS9TY3JlZW5TaGFyZXJGcmFtZS5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NjcmVlbi93ZWJzdGFydC9ndWkvU2NyZWVuU2hhcmVyRnJhbWUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZDNlMTgwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NjcmVlbi93ZWJzdGFydC9ndWkvU2NyZWVuU2hhcmVyRnJhbWUuamF2YQpAQCAtMCwwICsxLDc4MiBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5zY3JlZW4ud2Vic3RhcnQuZ3VpOworCitpbXBvcnQgamF2YS5hd3QuQVdURXhjZXB0aW9uOworaW1wb3J0IGphdmEuYXd0LkNvbG9yOworaW1wb3J0IGphdmEuYXd0LkNvbXBvbmVudDsKK2ltcG9ydCBqYXZhLmF3dC5JbWFnZTsKK2ltcG9ydCBqYXZhLmF3dC5SZWN0YW5nbGU7CitpbXBvcnQgamF2YS5hd3QuUm9ib3Q7CitpbXBvcnQgamF2YS5hd3QuU3lzdGVtQ29sb3I7CitpbXBvcnQgamF2YS5hd3QuVG9vbGtpdDsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5BY3Rpb25FdmVudDsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5BY3Rpb25MaXN0ZW5lcjsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5XaW5kb3dBZGFwdGVyOworaW1wb3J0IGphdmEuYXd0LmV2ZW50LldpbmRvd0V2ZW50OworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CisKK2ltcG9ydCBqYXZheC5zd2luZy5Cb3JkZXJGYWN0b3J5OworaW1wb3J0IGphdmF4LnN3aW5nLkdyb3VwTGF5b3V0OworaW1wb3J0IGphdmF4LnN3aW5nLkdyb3VwTGF5b3V0LkFsaWdubWVudDsKK2ltcG9ydCBqYXZheC5zd2luZy5JbWFnZUljb247CitpbXBvcnQgamF2YXguc3dpbmcuSkJ1dHRvbjsKK2ltcG9ydCBqYXZheC5zd2luZy5KQ29tYm9Cb3g7CitpbXBvcnQgamF2YXguc3dpbmcuSkZyYW1lOworaW1wb3J0IGphdmF4LnN3aW5nLkpMYWJlbDsKK2ltcG9ydCBqYXZheC5zd2luZy5KUGFuZWw7CitpbXBvcnQgamF2YXguc3dpbmcuSlRhYmJlZFBhbmU7CitpbXBvcnQgamF2YXguc3dpbmcuSlRleHRGaWVsZDsKK2ltcG9ydCBqYXZheC5zd2luZy5Td2luZ0NvbnN0YW50czsKK2ltcG9ydCBqYXZheC5zd2luZy5ib3JkZXIuRW1wdHlCb3JkZXI7CitpbXBvcnQgamF2YXguc3dpbmcuZXZlbnQuQ2hhbmdlRXZlbnQ7CitpbXBvcnQgamF2YXguc3dpbmcuZXZlbnQuQ2hhbmdlTGlzdGVuZXI7CitpbXBvcnQgamF2YXguc3dpbmcuZXZlbnQuRG9jdW1lbnRFdmVudDsKK2ltcG9ydCBqYXZheC5zd2luZy5ldmVudC5Eb2N1bWVudExpc3RlbmVyOworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2NyZWVuLndlYnN0YXJ0LkNvcmVTY3JlZW5TaGFyZTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5zY3JlZW4ud2Vic3RhcnQuZ3VpLlNjcmVlbkRpbWVuc2lvbnMuU2NyZWVuUXVhbGl0eTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXJGYWN0b3J5OworCitwdWJsaWMgY2xhc3MgU2NyZWVuU2hhcmVyRnJhbWUgZXh0ZW5kcyBKRnJhbWUgeworCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDY4OTI2Mzk3OTYzODYwMTc0MzdMOworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2dnZXIgPSBMb2dnZXJGYWN0b3J5LmdldExvZ2dlcihTY3JlZW5TaGFyZXJGcmFtZS5jbGFzcyk7CisJCisJcHJpdmF0ZSBKUGFuZWwgY29udGVudFBhbmU7CisJcHJpdmF0ZSBKUGFuZWwgcGFuZWxTY3JlZW4gPSBuZXcgRGlzYWJsZWRQYW5lbCgpOworCXByaXZhdGUgSlBhbmVsIHBhbmVsUmVjb3JkaW5nID0gbmV3IERpc2FibGVkUGFuZWwoKTsKKwlwcml2YXRlIEpQYW5lbCBwYW5lbFB1Ymxpc2ggPSBuZXcgRGlzYWJsZWRQYW5lbCgpOworCXByaXZhdGUgSkxhYmVsIGxibFN0YXR1cyA9IG5ldyBKTGFiZWwoKTsKKwlwcml2YXRlIGludCB2U2NyZWVuWCA9IDIwOworCXByaXZhdGUgaW50IHZTY3JlZW5ZID0gMjA7CisJcHJpdmF0ZSBWZXJ0aWNhbFNsaWRlciB1cFNsaWRlciA9IG5ldyBWZXJ0aWNhbFNsaWRlcigpOworCXByaXZhdGUgVmVydGljYWxTbGlkZXIgZG93blNsaWRlciA9IG5ldyBWZXJ0aWNhbFNsaWRlcigpOworCXByaXZhdGUgSG9yaXpvbnRhbFNsaWRlciBsZWZ0U2xpZGVyID0gbmV3IEhvcml6b250YWxTbGlkZXIoKTsKKwlwcml2YXRlIEhvcml6b250YWxTbGlkZXIgcmlnaHRTbGlkZXIgPSBuZXcgSG9yaXpvbnRhbFNsaWRlcigpOworCXByaXZhdGUgQmxhbmtBcmVhIHZpcnR1YWxTY3JlZW4gPSBuZXcgQmxhbmtBcmVhKG5ldyBDb2xvcigyNTUsIDI1NSwgMjU1LCAxMDApKTsKKwlwcml2YXRlIEpUYWJiZWRQYW5lIHRhYmJlZFBhbmUgPSBuZXcgSlRhYmJlZFBhbmUoSlRhYmJlZFBhbmUuVE9QKTsKKwlwcml2YXRlIGJvb2xlYW4gZG9VcGRhdGVCb3VuZHMgPSB0cnVlOworCXByaXZhdGUgYm9vbGVhbiBzaG93V2FybmluZyA9IHRydWU7CisJcHJpdmF0ZSBKQnV0dG9uIGJ0blN0YXJ0U3RvcFNoYXJpbmc7CisJcHJpdmF0ZSBKQnV0dG9uIGJ0blN0YXJ0U3RvcFJlY29yZGluZzsKKwlwcml2YXRlIEpCdXR0b24gYnRuU3RhcnRTdG9wUHVibGlzaDsKKwlwcml2YXRlIE51bWJlclNwaW5uZXIgc3Bpbm5lclg7CisJcHJpdmF0ZSBOdW1iZXJTcGlubmVyIHNwaW5uZXJZOworCXByaXZhdGUgTnVtYmVyU3Bpbm5lciBzcGlubmVyV2lkdGg7CisJcHJpdmF0ZSBOdW1iZXJTcGlubmVyIHNwaW5uZXJIZWlnaHQ7CisJcHJpdmF0ZSBKQ29tYm9Cb3ggY29tYm9RdWFsaXR5OworCXByaXZhdGUgSlRleHRGaWVsZCB0ZXh0UHVibGlzaEhvc3Q7CisJcHJpdmF0ZSBKVGV4dEZpZWxkIHRleHRQdWJsaXNoQXBwOworCXByaXZhdGUgSlRleHRGaWVsZCB0ZXh0UHVibGlzaElkOworCXByaXZhdGUgSkxhYmVsIGxibFB1Ymxpc2hVUkw7CisJcHJpdmF0ZSBib29sZWFuIHNoYXJpbmdTdGFydGVkID0gZmFsc2U7CisJcHJpdmF0ZSBib29sZWFuIHJlY29yZGluZ1N0YXJ0ZWQgPSBmYWxzZTsKKwlwcml2YXRlIGJvb2xlYW4gcHVibGlzaFN0YXJ0ZWQgPSBmYWxzZTsKKwlwcml2YXRlIGJvb2xlYW4gcmVjb3JkaW5nQWN0aW9uUmVxdWVzdGVkID0gZmFsc2U7CisJcHJpdmF0ZSBib29sZWFuIHB1Ymxpc2hpbmdBY3Rpb25SZXF1ZXN0ZWQgPSBmYWxzZTsKKwlwcml2YXRlIGJvb2xlYW4gc2hhcmluZ0FjdGlvblJlcXVlc3RlZCA9IGZhbHNlOworCXByaXZhdGUgSW1hZ2VJY29uIHN0YXJ0SWNvbjsKKwlwcml2YXRlIEltYWdlSWNvbiBzdG9wSWNvbjsKKwlwcml2YXRlIFN0cmluZyBzdGFydFNoYXJpbmdMYWJlbDsKKwlwcml2YXRlIFN0cmluZyBzdG9wU2hhcmluZ0xhYmVsOworCXByaXZhdGUgU3RyaW5nIHN0YXJ0UmVjb3JkaW5nTGFiZWw7CisJcHJpdmF0ZSBTdHJpbmcgc3RvcFJlY29yZGluZ0xhYmVsOworCXByaXZhdGUgU3RyaW5nIHN0YXJ0UHVibGlzaExhYmVsOworCXByaXZhdGUgU3RyaW5nIHN0b3BQdWJsaXNoTGFiZWw7CisJcHJpdmF0ZSBTdHJpbmcgcmVkdWNlV2lkdGhMYWJlbDsKKwlwcml2YXRlIFN0cmluZyByZWR1Y2VIZWlnaHRMYWJlbDsKKwlwcml2YXRlIFN0cmluZyByZWR1Y2VYTGFiZWw7CisJcHJpdmF0ZSBTdHJpbmcgcmVkdWNlWUxhYmVsOworCXByaXZhdGUgU3RyaW5nIHJlY29yZGluZ1RpcExhYmVsOworCXByaXZhdGUgU3RyaW5nIHB1Ymxpc2hpbmdUaXBMYWJlbDsKKwkKKwlwcml2YXRlIGNsYXNzIFB1Ymxpc2hUZXh0RmllbGQgZXh0ZW5kcyBKVGV4dEZpZWxkIHsKKwkJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gLTIxMDQyNDUzNjA5NzUxMzU4NzFMOworCisJCVB1Ymxpc2hUZXh0RmllbGQoKSB7CisJCQlnZXREb2N1bWVudCgpLmFkZERvY3VtZW50TGlzdGVuZXIoCisJCQkJbmV3IERvY3VtZW50TGlzdGVuZXIoKSB7CisJCQkJCXB1YmxpYyB2b2lkIGNoYW5nZWRVcGRhdGUoRG9jdW1lbnRFdmVudCBlKSB7CisJCQkJCQl1cGRhdGVQdWJsaXNoVVJMKCk7CisJCQkJCX0KKworCQkJCQlwdWJsaWMgdm9pZCByZW1vdmVVcGRhdGUoRG9jdW1lbnRFdmVudCBlKSB7CisJCQkJCQl1cGRhdGVQdWJsaXNoVVJMKCk7CisJCQkJCX0KKworCQkJCQlwdWJsaWMgdm9pZCBpbnNlcnRVcGRhdGUoRG9jdW1lbnRFdmVudCBlKSB7CisJCQkJCQl1cGRhdGVQdWJsaXNoVVJMKCk7CisJCQkJCX0KKwkJCQl9KTsKKworCQkJc2V0Q29sdW1ucygxMCk7CisJCX0KKwl9CisJCisJcHJpdmF0ZSBjbGFzcyBLZXlWYWx1ZTxUPiB7CisJCXByaXZhdGUgU3RyaW5nIGtleTsKKwkJcHJpdmF0ZSBUIHZhbHVlOworCQkKKwkJcHVibGljIEtleVZhbHVlKFN0cmluZyBrZXksIFQgdmFsdWUpIHsKKwkJCXRoaXMua2V5ID0ga2V5OworCQkJdGhpcy52YWx1ZSA9IHZhbHVlOworCQl9CisJIAorCQlAU3VwcHJlc3NXYXJuaW5ncygidW51c2VkIikKKwkJcHVibGljIFN0cmluZyBnZXRLZXkoKSB7IHJldHVybiBrZXk7IH0KKwkJcHVibGljIFQgZ2V0VmFsdWUoKSB7IHJldHVybiB2YWx1ZTsgfQorCSAKKwkJQE92ZXJyaWRlCisJCXB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7IHJldHVybiBrZXk7IH0KKwkgCisJCUBPdmVycmlkZQorCQlwdWJsaWMgYm9vbGVhbiBlcXVhbHMoT2JqZWN0IG9iaikgeworCQkJaWYgKG9iaiBpbnN0YW5jZW9mIEtleVZhbHVlKSB7CisJCQkJQFN1cHByZXNzV2FybmluZ3MoInVuY2hlY2tlZCIpCisJCQkJS2V5VmFsdWU8VD4ga3YgPSAoS2V5VmFsdWU8VD4pIG9iajsKKwkJCQlyZXR1cm4gKGt2LnZhbHVlLmVxdWFscyh0aGlzLnZhbHVlKSk7CisJCQl9CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KKwkgCisJCUBPdmVycmlkZQorCQlwdWJsaWMgaW50IGhhc2hDb2RlKCkgeworCQkJaW50IGhhc2ggPSA3OworCQkJaGFzaCA9IDk3ICogaGFzaCArICh0aGlzLnZhbHVlICE9IG51bGwgPyB0aGlzLnZhbHVlLmhhc2hDb2RlKCkgOiAwKTsKKwkJCXJldHVybiBoYXNoOworCQl9CisJfQorCQorCS8vdGhpcyBpbXBsZW1lbnRhdGlvbiB3aWxsIG5vdCBhbGxvdyB0byBFbmFibGUgUGFuZWwgaW4gcnVudGltZQorCXByaXZhdGUgY2xhc3MgRGlzYWJsZWRQYW5lbCBleHRlbmRzIEpQYW5lbCB7CisJCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IC0yNjc5NjQwNjExMTY1NzI4OTc5TDsKKworCQlAT3ZlcnJpZGUKKwkJcHVibGljIHZvaWQgc2V0RW5hYmxlZChib29sZWFuIGVuYWJsZWQpIHsKKwkJCWZvciAoQ29tcG9uZW50IGMgOiBnZXRDb21wb25lbnRzKCkpIHsKKwkJCQljLnNldEVuYWJsZWQoZW5hYmxlZCk7CisJCQl9CisJCQlzdXBlci5zZXRFbmFibGVkKGVuYWJsZWQpOworCQl9CisJfQorCQorCXByaXZhdGUgY2xhc3MgVmVydGljYWxTbGlkZXIgZXh0ZW5kcyBNb3VzZUxpc3RlbmVyYWJsZSB7CisJCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDYzODg5NTE5Nzk3NDE3Njc5NzFMOworCisJCXB1YmxpYyBWZXJ0aWNhbFNsaWRlcigpIHsKKwkJCUltYWdlSWNvbiBpVXAgPSBuZXcgSW1hZ2VJY29uKFNjcmVlblNoYXJlckZyYW1lLmNsYXNzLmdldFJlc291cmNlKCIvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2NyZWVuL3VwLnBuZyIpKTsKKwkJCUltYWdlSWNvbiBpRG93biA9IG5ldyBJbWFnZUljb24oU2NyZWVuU2hhcmVyRnJhbWUuY2xhc3MuZ2V0UmVzb3VyY2UoIi9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zY3JlZW4vZG93bi5wbmciKSk7CisJCQlzZXRTaXplKDE2LCAzMik7CisJCQlKTGFiZWwgalVwID0gbmV3IEpMYWJlbChpVXApOworCQkJalVwLnNldEJvdW5kcygwLCAwLCAxNiwgMTYpOworCQkJYWRkKGpVcCk7CisJCQlKTGFiZWwgakRvd24gPSBuZXcgSkxhYmVsKGlEb3duKTsKKwkJCWpEb3duLnNldEJvdW5kcygwLCAxNiwgMTYsIDE2KTsKKwkJCWFkZChqRG93bik7CisJCX0KKwl9CisJCisJcHJpdmF0ZSBjbGFzcyBIb3Jpem9udGFsU2xpZGVyIGV4dGVuZHMgTW91c2VMaXN0ZW5lcmFibGUgeworCQlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSA0NjMwNzEyOTU1OTAxNzYwNDQzTDsKKworCQlwdWJsaWMgSG9yaXpvbnRhbFNsaWRlcigpIHsKKwkJCUltYWdlSWNvbiBpTGVmdCA9IG5ldyBJbWFnZUljb24oU2NyZWVuU2hhcmVyRnJhbWUuY2xhc3MuZ2V0UmVzb3VyY2UoIi9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zY3JlZW4vcHJldmlvdXMucG5nIikpOworCQkJSW1hZ2VJY29uIGlSaWdodCA9IG5ldyBJbWFnZUljb24oU2NyZWVuU2hhcmVyRnJhbWUuY2xhc3MuZ2V0UmVzb3VyY2UoIi9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zY3JlZW4vbmV4dC5wbmciKSk7CisJCQlzZXRTaXplKDMyLCAxNik7CisJCQlKTGFiZWwgakxlZnQgPSBuZXcgSkxhYmVsKGlMZWZ0KTsKKwkJCWpMZWZ0LnNldEJvdW5kcygwLCAwLCAxNiwgMTYpOworCQkJYWRkKGpMZWZ0KTsKKwkJCUpMYWJlbCBqUmlnaHQgPSBuZXcgSkxhYmVsKGlSaWdodCk7CisJCQlqUmlnaHQuc2V0Qm91bmRzKDE2LCAwLCAxNiwgMTYpOworCQkJYWRkKGpSaWdodCk7CisJCX0KKwl9CisJCisJcHJpdmF0ZSBTdHJpbmcgZ2V0VGV4dExhYmVsKFN0cmluZ1tdIHRleHRMYWJlbHMsIGludCBpZHgpIHsKKwkJcmV0dXJuIHRleHRMYWJlbHMgIT0gbnVsbCAmJiBpZHggPCB0ZXh0TGFiZWxzLmxlbmd0aCA/IHRleHRMYWJlbHNbaWR4XSA6ICIjU1RBQiMiOworCX0KKwkKKwkvKioKKwkgKiBDcmVhdGUgdGhlIGZyYW1lLgorCSAqIEB0aHJvd3MgQVdURXhjZXB0aW9uIAorCSAqIEB0aHJvd3MgSU9FeGNlcHRpb24gCisJICovCisJcHVibGljIFNjcmVlblNoYXJlckZyYW1lKGZpbmFsIENvcmVTY3JlZW5TaGFyZSBjb3JlLCBTdHJpbmdbXSB0ZXh0TGFiZWxzKSB0aHJvd3MgQVdURXhjZXB0aW9uIHsKKwkJc2V0VGl0bGUoZ2V0VGV4dExhYmVsKHRleHRMYWJlbHMsIDApKTsgLy8jaWQgNzMwCisJCXNldEJhY2tncm91bmQoQ29sb3IuV0hJVEUpOworCQlzZXRSZXNpemFibGUoZmFsc2UpOworCQlzZXREZWZhdWx0Q2xvc2VPcGVyYXRpb24oSkZyYW1lLkRPX05PVEhJTkdfT05fQ0xPU0UpOworCQlhZGRXaW5kb3dMaXN0ZW5lcihuZXcgV2luZG93QWRhcHRlcigpIHsKKwkJCUBPdmVycmlkZQorCQkJcHVibGljIHZvaWQgd2luZG93Q2xvc2luZyhXaW5kb3dFdmVudCBlKSB7CisJCQkJY29yZS5zdG9wU3RyZWFtKCk7CisJCQkJU2NyZWVuU2hhcmVyRnJhbWUudGhpcy5zZXRWaXNpYmxlKGZhbHNlKTsKKwkJCQlTeXN0ZW0uZXhpdCgwKTsKKwkJCX0KKwkJfSk7CisJCXNldEJvdW5kcygzMCwgMzAsIDUwMCwgNTA1KTsKKwkJY29udGVudFBhbmUgPSBuZXcgSlBhbmVsKCk7CisJCWNvbnRlbnRQYW5lLnNldEJhY2tncm91bmQoQ29sb3IuV0hJVEUpOworCQljb250ZW50UGFuZS5zZXRCb3JkZXIobmV3IEVtcHR5Qm9yZGVyKDUsIDAsIDUsIDUpKTsKKwkJc2V0Q29udGVudFBhbmUoY29udGVudFBhbmUpOworCQkKKwkJSkxhYmVsIGxibFN0YXJ0U2hhcmluZyA9IG5ldyBKTGFiZWwoZ2V0VGV4dExhYmVsKHRleHRMYWJlbHMsIDEpKTsgLy8jaWQgNzMxCisJCQorCQlzdGFydFNoYXJpbmdMYWJlbCA9IGdldFRleHRMYWJlbCh0ZXh0TGFiZWxzLCAyKTsgLy8jaWQgNzMyCisJCXN0b3BTaGFyaW5nTGFiZWwgPSBnZXRUZXh0TGFiZWwodGV4dExhYmVscywgMyk7IC8vI2lkIDczMworCQlzdGFydFJlY29yZGluZ0xhYmVsID0gZ2V0VGV4dExhYmVsKHRleHRMYWJlbHMsIDE1KTsgLy8jaWQgODcxCisJCXN0b3BSZWNvcmRpbmdMYWJlbCA9IGdldFRleHRMYWJlbCh0ZXh0TGFiZWxzLCAxNik7IC8vI2lkIDg3MgorCQlzdGFydFB1Ymxpc2hMYWJlbCA9IGdldFRleHRMYWJlbCh0ZXh0TGFiZWxzLCAyNCk7IC8vI2lkIDE0NjYKKwkJc3RvcFB1Ymxpc2hMYWJlbCA9IGdldFRleHRMYWJlbCh0ZXh0TGFiZWxzLCAyNSk7IC8vI2lkIDE0NjcKKwkJcmVkdWNlV2lkdGhMYWJlbCA9IGdldFRleHRMYWJlbCh0ZXh0TGFiZWxzLCAyOSk7IC8vI2lkIDE0NzEKKwkJcmVkdWNlSGVpZ2h0TGFiZWwgPSBnZXRUZXh0TGFiZWwodGV4dExhYmVscywgMzApOyAvLyNpZCAxNDcyCisJCXJlZHVjZVhMYWJlbCA9IGdldFRleHRMYWJlbCh0ZXh0TGFiZWxzLCAzMSk7IC8vI2lkIDE0NzMKKwkJcmVkdWNlWUxhYmVsID0gZ2V0VGV4dExhYmVsKHRleHRMYWJlbHMsIDMyKTsgLy8jaWQgMTQ3NAorCQlyZWNvcmRpbmdUaXBMYWJlbCA9IGdldFRleHRMYWJlbCh0ZXh0TGFiZWxzLCAzNSk7IC8vI2lkIDE0NzcKKwkJcHVibGlzaGluZ1RpcExhYmVsID0gZ2V0VGV4dExhYmVsKHRleHRMYWJlbHMsIDM0KTsgLy8jaWQgMTQ3NgorCQlzdGFydEljb24gPSBuZXcgSW1hZ2VJY29uKFNjcmVlblNoYXJlckZyYW1lLmNsYXNzLmdldFJlc291cmNlKCIvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2NyZWVuL3BsYXkucG5nIikpOworCQlzdG9wSWNvbiA9IG5ldyBJbWFnZUljb24oU2NyZWVuU2hhcmVyRnJhbWUuY2xhc3MuZ2V0UmVzb3VyY2UoIi9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zY3JlZW4vc3RvcC5wbmciKSk7CisJCWJ0blN0YXJ0U3RvcFNoYXJpbmcgPSBuZXcgSkJ1dHRvbihzdGFydFNoYXJpbmdMYWJlbCk7CisJCWJ0blN0YXJ0U3RvcFNoYXJpbmcuc2V0VG9vbFRpcFRleHQoc3RhcnRTaGFyaW5nTGFiZWwpOworCQlidG5TdGFydFN0b3BTaGFyaW5nLnNldEljb24oc3RhcnRJY29uKTsKKwkJYnRuU3RhcnRTdG9wU2hhcmluZy5zZXRTaXplKDIwMCwgMzIpOworCQlidG5TdGFydFN0b3BTaGFyaW5nLmFkZEFjdGlvbkxpc3RlbmVyKG5ldyBBY3Rpb25MaXN0ZW5lcigpIHsKKwkJCXB1YmxpYyB2b2lkIGFjdGlvblBlcmZvcm1lZChBY3Rpb25FdmVudCBhcmcwKSB7CisJCQkJaWYgKHNoYXJpbmdTdGFydGVkKSB7CisJCQkJCWlmICghc2hhcmluZ0FjdGlvblJlcXVlc3RlZCkgeworCQkJCQkJc2hhcmluZ0FjdGlvblJlcXVlc3RlZCA9IHRydWU7CisJCQkJCQljb3JlLnNlbmRDYXB0dXJlU2NyZWVuU3RvcCh0cnVlLCBmYWxzZSk7CisJCQkJCX0gZWxzZSB7CisJCQkJCQlsb2dnZXIud2FybigiU2hhcmluZyBhY3Rpb24gaXMgYWxyZWFkeSByZXF1ZXN0ZWQiKTsKKwkJCQkJfQorCQkJCX0gZWxzZSB7CisJCQkJCWlmICghc2hhcmluZ0FjdGlvblJlcXVlc3RlZCkgeworCQkJCQkJc2hhcmluZ0FjdGlvblJlcXVlc3RlZCA9IHRydWU7CisJCQkJCQljb3JlLmNhcHR1cmVTY3JlZW5TdGFydCh0cnVlLCBmYWxzZSk7CisJCQkJCX0gZWxzZSB7CisJCQkJCQlsb2dnZXIud2FybigiU2hhcmluZyBhY3Rpb24gaXMgYWxyZWFkeSByZXF1ZXN0ZWQiKTsKKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJfSk7CisJCQorCQlKTGFiZWwgbGJsU2VsZWN0QXJlYSA9IG5ldyBKTGFiZWwoZ2V0VGV4dExhYmVsKHRleHRMYWJlbHMsIDQpKTsgLy8jaWQgNzM0CisJCUpQYW5lbCBwYW5lbFN0YXR1cyA9IG5ldyBKUGFuZWwoKTsKKwkJCisJCUdyb3VwTGF5b3V0IGdsX2NvbnRlbnRQYW5lID0gbmV3IEdyb3VwTGF5b3V0KGNvbnRlbnRQYW5lKTsKKwkJZ2xfY29udGVudFBhbmUuc2V0SG9yaXpvbnRhbEdyb3VwKAorCQkJZ2xfY29udGVudFBhbmUuY3JlYXRlUGFyYWxsZWxHcm91cChBbGlnbm1lbnQuTEVBRElORykKKwkJCQkuYWRkR3JvdXAoZ2xfY29udGVudFBhbmUuY3JlYXRlU2VxdWVudGlhbEdyb3VwKCkKKwkJCQkJLmFkZEdyb3VwKGdsX2NvbnRlbnRQYW5lLmNyZWF0ZVBhcmFsbGVsR3JvdXAoQWxpZ25tZW50LkxFQURJTkcpCisJCQkJCQkuYWRkR3JvdXAoZ2xfY29udGVudFBhbmUuY3JlYXRlU2VxdWVudGlhbEdyb3VwKCkKKwkJCQkJCQkuYWRkR2FwKDcpCisJCQkJCQkJLmFkZENvbXBvbmVudChsYmxTdGFydFNoYXJpbmcpKQorCQkJCQkJLmFkZEdyb3VwKGdsX2NvbnRlbnRQYW5lLmNyZWF0ZVNlcXVlbnRpYWxHcm91cCgpCisJCQkJCQkJLmFkZEdhcCgyMSkKKwkJCQkJCQkuYWRkQ29tcG9uZW50KGJ0blN0YXJ0U3RvcFNoYXJpbmcsIDIwMCwgMjAwLCAyMDApCisJCQkJCQkJLmFkZEdhcCg1MikKKwkJCQkJCQkpCisJCQkJCQkuYWRkR3JvdXAoZ2xfY29udGVudFBhbmUuY3JlYXRlU2VxdWVudGlhbEdyb3VwKCkKKwkJCQkJCQkuYWRkR2FwKDcpCisJCQkJCQkJLmFkZENvbXBvbmVudChsYmxTZWxlY3RBcmVhLCBHcm91cExheW91dC5QUkVGRVJSRURfU0laRSwgNDcwLCBHcm91cExheW91dC5QUkVGRVJSRURfU0laRSkpCisJCQkJCQkuYWRkR3JvdXAoZ2xfY29udGVudFBhbmUuY3JlYXRlU2VxdWVudGlhbEdyb3VwKCkKKwkJCQkJCQkuYWRkQ29udGFpbmVyR2FwKCkKKwkJCQkJCQkuYWRkQ29tcG9uZW50KHBhbmVsU2NyZWVuLCBHcm91cExheW91dC5QUkVGRVJSRURfU0laRSwgNDcyLCBHcm91cExheW91dC5QUkVGRVJSRURfU0laRSkpCisJCQkJCQkuYWRkR3JvdXAoZ2xfY29udGVudFBhbmUuY3JlYXRlU2VxdWVudGlhbEdyb3VwKCkKKwkJCQkJCQkuYWRkQ29udGFpbmVyR2FwKCkKKwkJCQkJCQkuYWRkQ29tcG9uZW50KHRhYmJlZFBhbmUsIEdyb3VwTGF5b3V0LlBSRUZFUlJFRF9TSVpFLCA0NzIsIEdyb3VwTGF5b3V0LlBSRUZFUlJFRF9TSVpFKSkKKwkJCQkJCS5hZGRHcm91cChnbF9jb250ZW50UGFuZS5jcmVhdGVTZXF1ZW50aWFsR3JvdXAoKQorCQkJCQkJCS5hZGRDb21wb25lbnQocGFuZWxTdGF0dXMsIDQ5NCwgNDk0LCA0OTQpKSkKKwkJCQkJLmFkZENvbnRhaW5lckdhcChHcm91cExheW91dC5ERUZBVUxUX1NJWkUsIFNob3J0Lk1BWF9WQUxVRSkpCisJCSk7CisJCWdsX2NvbnRlbnRQYW5lLnNldFZlcnRpY2FsR3JvdXAoCisJCQlnbF9jb250ZW50UGFuZS5jcmVhdGVQYXJhbGxlbEdyb3VwKEFsaWdubWVudC5MRUFESU5HKQorCQkJCS5hZGRHcm91cChnbF9jb250ZW50UGFuZS5jcmVhdGVTZXF1ZW50aWFsR3JvdXAoKQorCQkJCQkuYWRkR2FwKDcpCisJCQkJCS5hZGRDb21wb25lbnQobGJsU3RhcnRTaGFyaW5nKQorCQkJCQkuYWRkR2FwKDQpCisJCQkJCS5hZGRHcm91cChnbF9jb250ZW50UGFuZS5jcmVhdGVQYXJhbGxlbEdyb3VwKEFsaWdubWVudC5MRUFESU5HKQorCQkJCQkJLmFkZENvbXBvbmVudChidG5TdGFydFN0b3BTaGFyaW5nLCAzMiwgMzIsIDMyKQorCQkJCQkJKQorCQkJCQkuYWRkR2FwKDQpCisJCQkJCS5hZGRDb21wb25lbnQobGJsU2VsZWN0QXJlYSkKKwkJCQkJLmFkZEdhcCg0KQorCQkJCQkuYWRkQ29tcG9uZW50KHBhbmVsU2NyZWVuLCAyMTAsIDIxMCwgMjEwKQorCQkJCQkuYWRkR2FwKDQpCisJCQkJCS5hZGRDb21wb25lbnQodGFiYmVkUGFuZSwgMTUwLCAxNTAsIDE1MCkKKwkJCQkJLmFkZEdhcCg1KQorCQkJCQkuYWRkQ29tcG9uZW50KHBhbmVsU3RhdHVzLCAyMCwgMjAsIDIwKQorCQkJCQkpCisJCSk7CisJCXBhbmVsU2NyZWVuLnNldExheW91dChudWxsKTsKKwkJCisJCWludCB3aWR0aCA9IFNjcmVlbkRpbWVuc2lvbnMud2lkdGg7CisJCWludCBoZWlnaHQgPSBTY3JlZW5EaW1lbnNpb25zLmhlaWdodDsKKwkJCisJCS8vU2xpZGVycworCQl1cFNsaWRlci5hZGRMaXN0ZW5lcihuZXcgU2NyZWVuWU1vdXNlTGlzdGVuZXIodGhpcykpOworCQl1cFNsaWRlci5zZXRUb29sVGlwVGV4dChnZXRUZXh0TGFiZWwodGV4dExhYmVscywgNikpOyAvLyNpZCA3MzcKKwkJcGFuZWxTY3JlZW4uYWRkKHVwU2xpZGVyKTsKKwkJZG93blNsaWRlci5hZGRMaXN0ZW5lcihuZXcgU2NyZWVuSGVpZ2h0TW91c2VMaXN0ZW5lcih0aGlzKSk7CisJCWRvd25TbGlkZXIuc2V0VG9vbFRpcFRleHQoZ2V0VGV4dExhYmVsKHRleHRMYWJlbHMsIDYpKTsgLy8jaWQgNzM3CisJCXBhbmVsU2NyZWVuLmFkZChkb3duU2xpZGVyKTsKKwkJCisJCWxlZnRTbGlkZXIuYWRkTGlzdGVuZXIobmV3IFNjcmVlblhNb3VzZUxpc3RlbmVyKHRoaXMpKTsKKwkJbGVmdFNsaWRlci5zZXRUb29sVGlwVGV4dChnZXRUZXh0TGFiZWwodGV4dExhYmVscywgNSkpOyAvLyNpZCA3MzUKKwkJcGFuZWxTY3JlZW4uYWRkKGxlZnRTbGlkZXIpOworCQlyaWdodFNsaWRlci5hZGRMaXN0ZW5lcihuZXcgU2NyZWVuV2lkdGhNb3VzZUxpc3RlbmVyKHRoaXMpKTsKKwkJcmlnaHRTbGlkZXIuc2V0VG9vbFRpcFRleHQoZ2V0VGV4dExhYmVsKHRleHRMYWJlbHMsIDUpKTsgLy8jaWQgNzM1CisJCXBhbmVsU2NyZWVuLmFkZChyaWdodFNsaWRlcik7CisJCQorCQkvL1ZpcnR1YWwgU2NyZWVuCisJCXZpcnR1YWxTY3JlZW4uYWRkTGlzdGVuZXIobmV3IFNjcmVlbk1vdXNlTGlzdGVuZXIodGhpcykpOworCQl2aXJ0dWFsU2NyZWVuLnNldEJvdW5kcyh2U2NyZWVuWCwgdlNjcmVlblksIHdpZHRoLCBoZWlnaHQpOworCQlwYW5lbFNjcmVlbi5hZGQodmlydHVhbFNjcmVlbik7CisKKwkJSW1hZ2VJY29uIGltZ0JnU2NyZWVuID0gbmV3IEltYWdlSWNvbigKKwkJCW5ldyBSb2JvdCgpLmNyZWF0ZVNjcmVlbkNhcHR1cmUobmV3IFJlY3RhbmdsZShUb29sa2l0LmdldERlZmF1bHRUb29sa2l0KCkuZ2V0U2NyZWVuU2l6ZSgpKSkKKwkJCQkuZ2V0U2NhbGVkSW5zdGFuY2Uod2lkdGgsIGhlaWdodCwgSW1hZ2UuU0NBTEVfU01PT1RIKSk7CisJCUpMYWJlbCBiZ1NjcmVlbiA9IG5ldyBKTGFiZWwoaW1nQmdTY3JlZW4pOworCQliZ1NjcmVlbi5zZXRCb3VuZHModlNjcmVlblgsIHZTY3JlZW5ZLCB3aWR0aCwgaGVpZ2h0KTsKKwkJcGFuZWxTY3JlZW4uYWRkKGJnU2NyZWVuKTsKKworCQkvL1NwaW5uZXIgWAorCQlKTGFiZWwgbGFiZWxYID0gbmV3IEpMYWJlbCgpOworCQlsYWJlbFguc2V0VGV4dChnZXRUZXh0TGFiZWwodGV4dExhYmVscywgNykpOyAvLyNpZCA3MzgKKwkJbGFiZWxYLnNldEJvdW5kcygyNTAsIDIwLCAxNTAsIDI0KTsKKwkJcGFuZWxTY3JlZW4uYWRkKGxhYmVsWCk7CisKKwkJc3Bpbm5lclggPSBuZXcgTnVtYmVyU3Bpbm5lcihTY3JlZW5EaW1lbnNpb25zLnNwaW5uZXJYLCAwLCBTY3JlZW5EaW1lbnNpb25zLndpZHRoTWF4LCAxKTsKKwkJc3Bpbm5lclguc2V0Qm91bmRzKDQwMCwgMjAsIDYwLCAyNCk7CisJCXNwaW5uZXJYLmFkZENoYW5nZUxpc3RlbmVyKCBuZXcgQ2hhbmdlTGlzdGVuZXIoKXsKKwkJCXB1YmxpYyB2b2lkIHN0YXRlQ2hhbmdlZChDaGFuZ2VFdmVudCBhcmcwKSB7CisJCQkJY2FsY05ld1ZhbHVlWFNwaW4oKTsKKwkJCX0KKwkJfSk7CisJCXBhbmVsU2NyZWVuLmFkZChzcGlubmVyWCk7CisKKwkJLy9TcGlubmVyIFkKKwkJSkxhYmVsIGxhYmVsWSA9IG5ldyBKTGFiZWwoKTsKKwkJbGFiZWxZLnNldFRleHQoZ2V0VGV4dExhYmVsKHRleHRMYWJlbHMsIDgpKTsgLy8jaWQgNzM5CisJCWxhYmVsWS5zZXRCb3VuZHMoMjUwLCA1MCwgMTUwLCAyNCk7CisJCXBhbmVsU2NyZWVuLmFkZChsYWJlbFkpOworCisJCXNwaW5uZXJZID0gbmV3IE51bWJlclNwaW5uZXIoU2NyZWVuRGltZW5zaW9ucy5zcGlubmVyWSwgMCwgU2NyZWVuRGltZW5zaW9ucy5oZWlnaHRNYXgsIDEpOworCQlzcGlubmVyWS5zZXRCb3VuZHMoNDAwLCA1MCwgNjAsIDI0KTsKKwkJc3Bpbm5lclkuYWRkQ2hhbmdlTGlzdGVuZXIoIG5ldyBDaGFuZ2VMaXN0ZW5lcigpeworCQkJcHVibGljIHZvaWQgc3RhdGVDaGFuZ2VkKENoYW5nZUV2ZW50IGFyZzApIHsKKwkJCQljYWxjTmV3VmFsdWVZU3BpbigpOworCQkJfQorCQl9KTsKKwkJcGFuZWxTY3JlZW4uYWRkKHNwaW5uZXJZKTsKKwkJCisJCUpMYWJlbCB2c2NyZWVuV2lkdGhMYWJlbCA9IG5ldyBKTGFiZWwoKTsKKwkJdnNjcmVlbldpZHRoTGFiZWwuc2V0VGV4dChnZXRUZXh0TGFiZWwodGV4dExhYmVscywgOSkpOyAvLyNpZCA3NDAKKwkJdnNjcmVlbldpZHRoTGFiZWwuc2V0Qm91bmRzKDI1MCwgODAsIDE1MCwgMjQpOworCQlwYW5lbFNjcmVlbi5hZGQodnNjcmVlbldpZHRoTGFiZWwpOworCisJCXNwaW5uZXJXaWR0aCA9IG5ldyBOdW1iZXJTcGlubmVyKFNjcmVlbkRpbWVuc2lvbnMuc3Bpbm5lcldpZHRoLCAwLCBTY3JlZW5EaW1lbnNpb25zLndpZHRoTWF4LCAxKTsKKwkJc3Bpbm5lcldpZHRoLnNldEJvdW5kcyg0MDAsIDgwLCA2MCwgMjQpOworCQlzcGlubmVyV2lkdGguYWRkQ2hhbmdlTGlzdGVuZXIoIG5ldyBDaGFuZ2VMaXN0ZW5lcigpeworCQkJcHVibGljIHZvaWQgc3RhdGVDaGFuZ2VkKENoYW5nZUV2ZW50IGFyZzApIHsKKwkJCQljYWxjTmV3VmFsdWVXaWR0aFNwaW4oKTsKKwkJCX0KKwkJfSk7CisJCXBhbmVsU2NyZWVuLmFkZChzcGlubmVyV2lkdGgpOworCisJCS8vU3Bpbm5lciBIZWlnaHQKKwkJSkxhYmVsIGxhYmVsSGVpZ2h0ID0gbmV3IEpMYWJlbCgpOworCQlsYWJlbEhlaWdodC5zZXRUZXh0KGdldFRleHRMYWJlbCh0ZXh0TGFiZWxzLCAxMCkpOyAvLyNpZCA3NDEKKwkJbGFiZWxIZWlnaHQuc2V0Qm91bmRzKDI1MCwgMTEwLCAxNTAsIDI0KTsKKwkJcGFuZWxTY3JlZW4uYWRkKGxhYmVsSGVpZ2h0KTsKKworCQlzcGlubmVySGVpZ2h0ID0gbmV3IE51bWJlclNwaW5uZXIoU2NyZWVuRGltZW5zaW9ucy5zcGlubmVySGVpZ2h0LCAwLCBTY3JlZW5EaW1lbnNpb25zLmhlaWdodE1heCwgMSk7CisJCXNwaW5uZXJIZWlnaHQuc2V0Qm91bmRzKDQwMCwgMTEwLCA2MCwgMjQpOworCQlzcGlubmVySGVpZ2h0LmFkZENoYW5nZUxpc3RlbmVyKCBuZXcgQ2hhbmdlTGlzdGVuZXIoKXsKKwkJCXB1YmxpYyB2b2lkIHN0YXRlQ2hhbmdlZChDaGFuZ2VFdmVudCBhcmcwKSB7CisJCQkJY2FsY05ld1ZhbHVlSGVpZ2h0U3BpbigpOworCQkJfQorCQl9KTsKKwkJcGFuZWxTY3JlZW4uYWRkKHNwaW5uZXJIZWlnaHQpOworCQkKKwkJLy9RdWFsaXR5CisJCUpMYWJlbCBsYWJlbFF1YWxpdHkgPSBuZXcgSkxhYmVsKCk7CisJCWxhYmVsUXVhbGl0eS5zZXRUZXh0KGdldFRleHRMYWJlbCh0ZXh0TGFiZWxzLCAxOCkpOyAvLyNpZCAxMDg5CisJCWxhYmVsUXVhbGl0eS5zZXRCb3VuZHMoMjUwLCAxNDAsIDIwMCwgMjQpOworCQlwYW5lbFNjcmVlbi5hZGQobGFiZWxRdWFsaXR5KTsKKwkJCisJCWNvbWJvUXVhbGl0eSA9IG5ldyBKQ29tYm9Cb3goKTsKKwkJY29tYm9RdWFsaXR5LmFkZEl0ZW0obmV3IEtleVZhbHVlPFNjcmVlblF1YWxpdHk+KGdldFRleHRMYWJlbCh0ZXh0TGFiZWxzLCAxOSksIFNjcmVlblF1YWxpdHkuVmVyeUhpZ2gpKTsgLy8jaWQgMTA5MAorCQljb21ib1F1YWxpdHkuYWRkSXRlbShuZXcgS2V5VmFsdWU8U2NyZWVuUXVhbGl0eT4oZ2V0VGV4dExhYmVsKHRleHRMYWJlbHMsIDIwKSwgU2NyZWVuUXVhbGl0eS5IaWdoKSk7IC8vI2lkIDEwOTEKKwkJY29tYm9RdWFsaXR5LmFkZEl0ZW0obmV3IEtleVZhbHVlPFNjcmVlblF1YWxpdHk+KGdldFRleHRMYWJlbCh0ZXh0TGFiZWxzLCAyMSksIFNjcmVlblF1YWxpdHkuTWVkaXVtKSk7IC8vI2lkIDEwOTIKKwkJY29tYm9RdWFsaXR5LmFkZEl0ZW0obmV3IEtleVZhbHVlPFNjcmVlblF1YWxpdHk+KGdldFRleHRMYWJlbCh0ZXh0TGFiZWxzLCAyMiksIFNjcmVlblF1YWxpdHkuTG93KSk7IC8vI2lkIDEwOTMKKwkJY29tYm9RdWFsaXR5LnNldEJvdW5kcygyNTAsIDE3MCwgMjAwLCAyNCk7CisJCWNvbWJvUXVhbGl0eS5hZGRBY3Rpb25MaXN0ZW5lcihuZXcgQWN0aW9uTGlzdGVuZXIoKSB7CisJCQlAU3VwcHJlc3NXYXJuaW5ncygidW5jaGVja2VkIikKKwkJCXB1YmxpYyB2b2lkIGFjdGlvblBlcmZvcm1lZChBY3Rpb25FdmVudCBlKSB7CisJCSAgICAgICAgU2NyZWVuRGltZW5zaW9ucy5xdWFsaXR5ID0gKChLZXlWYWx1ZTxTY3JlZW5RdWFsaXR5Piljb21ib1F1YWxpdHkuZ2V0U2VsZWN0ZWRJdGVtKCkpLmdldFZhbHVlKCk7CisJCSAgICAgICAgY2FsY1Jlc2NhbGVGYWN0b3JzKCk7CisJCQl9CisJCX0pOyAKKwkJY29tYm9RdWFsaXR5LnNldFNlbGVjdGVkSW5kZXgoY29yZS5kZWZhdWx0UXVhbGl0eSk7CisJCXBhbmVsU2NyZWVuLmFkZChjb21ib1F1YWxpdHkpOworCQkKKwkJcGFuZWxSZWNvcmRpbmcuc2V0QmFja2dyb3VuZChDb2xvci5XSElURSk7CisJCXRhYmJlZFBhbmUuYWRkVGFiKGdldFRleHRMYWJlbCh0ZXh0TGFiZWxzLCAxMyksIG51bGwsIHBhbmVsUmVjb3JkaW5nLCBudWxsKTsgLy8jaWQgODY5CisJCXRhYmJlZFBhbmUuc2V0RW5hYmxlZEF0KDAsIHRydWUpOworCQlwYW5lbFJlY29yZGluZy5zZXRMYXlvdXQobnVsbCk7CisJCXBhbmVsUmVjb3JkaW5nLnNldEVuYWJsZWQoZmFsc2UpOworCQkKKwkJSkxhYmVsIGxibFJlY29yZGluZ0Rlc2MgPSBuZXcgSkxhYmVsKCI8aHRtbD4iICsgZ2V0VGV4dExhYmVsKHRleHRMYWJlbHMsIDE0KSArICI8L2h0bWw+Iik7IC8vI2lkIDg3MAorCQlsYmxSZWNvcmRpbmdEZXNjLnNldFZlcnRpY2FsQWxpZ25tZW50KFN3aW5nQ29uc3RhbnRzLlRPUCk7CisJCWxibFJlY29yZGluZ0Rlc2Muc2V0Qm91bmRzKDEwLCAxMCwgNDQ3LCA2MCk7CisJCXBhbmVsUmVjb3JkaW5nLmFkZChsYmxSZWNvcmRpbmdEZXNjKTsKKwkJCisJCWJ0blN0YXJ0U3RvcFJlY29yZGluZyA9IG5ldyBKQnV0dG9uKGdldFRleHRMYWJlbCh0ZXh0TGFiZWxzLCAxNSkpOyAvLyNpZCA4NzEKKwkJYnRuU3RhcnRTdG9wUmVjb3JkaW5nLnNldFRvb2xUaXBUZXh0KGdldFRleHRMYWJlbCh0ZXh0TGFiZWxzLCAxNSkpOyAvLyNpZCA4NzEKKwkJYnRuU3RhcnRTdG9wUmVjb3JkaW5nLnNldEljb24oc3RhcnRJY29uKTsKKwkJYnRuU3RhcnRTdG9wUmVjb3JkaW5nLnNldEJvdW5kcygxMCwgODIsIDIwMCwgMzIpOworCQlidG5TdGFydFN0b3BSZWNvcmRpbmcuYWRkQWN0aW9uTGlzdGVuZXIobmV3IEFjdGlvbkxpc3RlbmVyKCkgeworCQkJcHVibGljIHZvaWQgYWN0aW9uUGVyZm9ybWVkKEFjdGlvbkV2ZW50IGFyZzApIHsKKwkJCQlpZiAocmVjb3JkaW5nU3RhcnRlZCkgeworCQkJCQlpZiAoIXJlY29yZGluZ0FjdGlvblJlcXVlc3RlZCkgeworCQkJCQkJcmVjb3JkaW5nQWN0aW9uUmVxdWVzdGVkID0gdHJ1ZTsKKwkJCQkJCWNvcmUuc2VuZENhcHR1cmVTY3JlZW5TdG9wKGZhbHNlLCB0cnVlKTsKKwkJCQkJfSBlbHNlIHsKKwkJCQkJCWxvZ2dlci53YXJuKCJSZWNvcmRpbmcgYWN0aW9uIGlzIGFscmVhZHkgcmVxdWVzdGVkIik7CisJCQkJCX0KKwkJCQl9IGVsc2UgeworCQkJCQlpZiAoIXJlY29yZGluZ0FjdGlvblJlcXVlc3RlZCkgeworCQkJCQkJcmVjb3JkaW5nQWN0aW9uUmVxdWVzdGVkID0gdHJ1ZTsKKwkJCQkJCWNvcmUuY2FwdHVyZVNjcmVlblN0YXJ0KGZhbHNlLCB0cnVlKTsKKwkJCQkJfSBlbHNlIHsKKwkJCQkJCWxvZ2dlci53YXJuKCJSZWNvcmRpbmcgYWN0aW9uIGlzIGFscmVhZHkgcmVxdWVzdGVkIik7CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCX0pOworCQlwYW5lbFJlY29yZGluZy5hZGQoYnRuU3RhcnRTdG9wUmVjb3JkaW5nKTsKKwkJCisJCXBhbmVsUHVibGlzaC5zZXRCYWNrZ3JvdW5kKENvbG9yLldISVRFKTsKKwkJdGFiYmVkUGFuZS5hZGRUYWIoZ2V0VGV4dExhYmVsKHRleHRMYWJlbHMsIDIzKSwgbnVsbCwgcGFuZWxQdWJsaXNoLCBudWxsKTsgLy8jaWQgMTQ2NQorCQl0YWJiZWRQYW5lLnNldEVuYWJsZWRBdCgxLCB0cnVlKTsKKwkJcGFuZWxQdWJsaXNoLnNldEVuYWJsZWQoZmFsc2UpOworCQlwYW5lbFB1Ymxpc2guc2V0TGF5b3V0KG51bGwpOworCQkKKwkJSkxhYmVsIGxibFB1Ymxpc2hEZXNjID0gbmV3IEpMYWJlbChnZXRUZXh0TGFiZWwodGV4dExhYmVscywgMzMpKTsgLy8jaWQgMTQ3NQorCQlsYmxQdWJsaXNoRGVzYy5zZXRWZXJ0aWNhbEFsaWdubWVudChTd2luZ0NvbnN0YW50cy5UT1ApOworCQlsYmxQdWJsaXNoRGVzYy5zZXRCb3VuZHMoMTAsIDUsIDQ1MCwgMjApOworCQlwYW5lbFB1Ymxpc2guYWRkKGxibFB1Ymxpc2hEZXNjKTsKKwkJCisJCUpMYWJlbCBsYmxQdWJsaXNoSG9zdCA9IG5ldyBKTGFiZWwoZ2V0VGV4dExhYmVsKHRleHRMYWJlbHMsIDI2KSk7IC8vI2lkIDE0NjgKKwkJbGJsUHVibGlzaEhvc3Quc2V0VmVydGljYWxBbGlnbm1lbnQoU3dpbmdDb25zdGFudHMuVE9QKTsKKwkJbGJsUHVibGlzaEhvc3Quc2V0Qm91bmRzKDEwLCAyNywgMTQwLCAyMCk7CisJCXBhbmVsUHVibGlzaC5hZGQobGJsUHVibGlzaEhvc3QpOworCQkKKwkJSkxhYmVsIGxibFB1Ymxpc2hBcHAgPSBuZXcgSkxhYmVsKGdldFRleHRMYWJlbCh0ZXh0TGFiZWxzLCAyNykpOyAvLyNpZCAxNDY5CisJCWxibFB1Ymxpc2hBcHAuc2V0VmVydGljYWxBbGlnbm1lbnQoU3dpbmdDb25zdGFudHMuVE9QKTsKKwkJbGJsUHVibGlzaEFwcC5zZXRCb3VuZHMoMTYwLCAyNywgMTQwLCAyMCk7CisJCXBhbmVsUHVibGlzaC5hZGQobGJsUHVibGlzaEFwcCk7CisJCQorCQlKTGFiZWwgbGJsUHVibGlzaElkID0gbmV3IEpMYWJlbChnZXRUZXh0TGFiZWwodGV4dExhYmVscywgMjgpKTsgLy8jaWQgMTQ3MAorCQlsYmxQdWJsaXNoSWQuc2V0VmVydGljYWxBbGlnbm1lbnQoU3dpbmdDb25zdGFudHMuVE9QKTsKKwkJbGJsUHVibGlzaElkLnNldEJvdW5kcygzMTAsIDI3LCAxNDAsIDIwKTsKKwkJcGFuZWxQdWJsaXNoLmFkZChsYmxQdWJsaXNoSWQpOworCQkKKwkJdGV4dFB1Ymxpc2hIb3N0ID0gbmV3IFB1Ymxpc2hUZXh0RmllbGQoKTsKKwkJdGV4dFB1Ymxpc2hIb3N0LnNldEJvdW5kcygxMCwgNDUsIDE0MCwgMjApOworCQlwYW5lbFB1Ymxpc2guYWRkKHRleHRQdWJsaXNoSG9zdCk7CisJCQorCQl0ZXh0UHVibGlzaEFwcCA9IG5ldyBQdWJsaXNoVGV4dEZpZWxkKCk7CisJCXRleHRQdWJsaXNoQXBwLnNldEJvdW5kcygxNjAsIDQ1LCAxNDAsIDIwKTsKKwkJcGFuZWxQdWJsaXNoLmFkZCh0ZXh0UHVibGlzaEFwcCk7CisJCQorCQl0ZXh0UHVibGlzaElkID0gbmV3IFB1Ymxpc2hUZXh0RmllbGQoKTsKKwkJdGV4dFB1Ymxpc2hJZC5zZXRCb3VuZHMoMzEwLCA0NSwgMTQwLCAyMCk7CisJCXBhbmVsUHVibGlzaC5hZGQodGV4dFB1Ymxpc2hJZCk7CisJCQorCQlsYmxQdWJsaXNoVVJMID0gbmV3IEpMYWJlbCgiIik7CisJCWxibFB1Ymxpc2hVUkwuc2V0Qm91bmRzKDEwLCA2OSwgNDQ3LCAxNCk7CisJCXBhbmVsUHVibGlzaC5hZGQobGJsUHVibGlzaFVSTCk7CisJCQorCQlidG5TdGFydFN0b3BQdWJsaXNoID0gbmV3IEpCdXR0b24oZ2V0VGV4dExhYmVsKHRleHRMYWJlbHMsIDI0KSk7IC8vI2lkIDE0NjYKKwkJYnRuU3RhcnRTdG9wUHVibGlzaC5zZXRUb29sVGlwVGV4dChnZXRUZXh0TGFiZWwodGV4dExhYmVscywgMjQpKTsgLy8jaWQgMTQ2NgorCQlidG5TdGFydFN0b3BQdWJsaXNoLnNldEljb24oc3RhcnRJY29uKTsKKwkJYnRuU3RhcnRTdG9wUHVibGlzaC5zZXRCb3VuZHMoMTAsIDg2LCAyMDAsIDMyKTsKKwkJYnRuU3RhcnRTdG9wUHVibGlzaC5hZGRBY3Rpb25MaXN0ZW5lcihuZXcgQWN0aW9uTGlzdGVuZXIoKSB7CisJCQlwdWJsaWMgdm9pZCBhY3Rpb25QZXJmb3JtZWQoQWN0aW9uRXZlbnQgYXJnMCkgeworCQkJCWlmIChwdWJsaXNoU3RhcnRlZCkgeworCQkJCQlpZiAoIXB1Ymxpc2hpbmdBY3Rpb25SZXF1ZXN0ZWQpIHsKKwkJCQkJCXB1Ymxpc2hpbmdBY3Rpb25SZXF1ZXN0ZWQgPSB0cnVlOworCQkJCQkJY29yZS5zZW5kU3RvcFB1Ymxpc2hpbmcoKTsKKwkJCQkJfSBlbHNlIHsKKwkJCQkJCWxvZ2dlci53YXJuKCJQdWJsaXNoaW5nIGFjdGlvbiBpcyBhbHJlYWR5IHJlcXVlc3RlZCIpOworCQkJCQl9CisJCQkJfSBlbHNlIHsKKwkJCQkJaWYgKCFwdWJsaXNoaW5nQWN0aW9uUmVxdWVzdGVkKSB7CisJCQkJCQlwdWJsaXNoaW5nQWN0aW9uUmVxdWVzdGVkID0gdHJ1ZTsKKwkJCQkJCWNvcmUuY2FwdHVyZVNjcmVlblN0YXJ0KGZhbHNlLCBmYWxzZSwgdHJ1ZSk7CisJCQkJCX0gZWxzZSB7CisJCQkJCQlsb2dnZXIud2FybigiUHVibGlzaGluZyBhY3Rpb24gaXMgYWxyZWFkeSByZXF1ZXN0ZWQiKTsKKwkJCQkJfQorCQkJCX0KKwkJCX0KKwkJfSk7CisJCXBhbmVsUHVibGlzaC5hZGQoYnRuU3RhcnRTdG9wUHVibGlzaCk7CisJCQorCQlwYW5lbFNjcmVlbi5zZXRCYWNrZ3JvdW5kKENvbG9yLldISVRFKTsKKwkJCisJCXBhbmVsU3RhdHVzLnNldEJhY2tncm91bmQoU3lzdGVtQ29sb3IuY29udHJvbCk7CisJCXBhbmVsU3RhdHVzLnNldExheW91dChudWxsKTsKKwkJbGJsU3RhdHVzLnNldEhvcml6b250YWxBbGlnbm1lbnQoU3dpbmdDb25zdGFudHMuTEVGVCk7CisJCWxibFN0YXR1cy5zZXRCb3VuZHMoMCwgMCwgNDk0LCAyMCk7CisJCWxibFN0YXR1cy5zZXRCb3JkZXIoQm9yZGVyRmFjdG9yeS5jcmVhdGVDb21wb3VuZEJvcmRlcigKKwkJCQlCb3JkZXJGYWN0b3J5LmNyZWF0ZUxpbmVCb3JkZXIoQ29sb3IuTElHSFRfR1JBWSksCisJCQkJQm9yZGVyRmFjdG9yeS5jcmVhdGVFbXB0eUJvcmRlcigwLCA1LCAwLCAwKSkpOworCQlwYW5lbFN0YXR1cy5hZGQobGJsU3RhdHVzKTsKKwkJCisJCWNvbnRlbnRQYW5lLnNldExheW91dChnbF9jb250ZW50UGFuZSk7CisJCQorCQkvLyBCYWNrZ3JvdW5kIEltYWdlCisJCS8vV2UgaGF2ZSBubyBsb2dvLCB0aGF0IGlzIHdoeSB3ZSBuZWVkIG5vIGJhY2tncm91bmQsIHNlYmF3YWduZXIgMjkuMDQuMjAxMgorCX0KKworCXB1YmxpYyB2b2lkIHNldFNoYXJpbmdTdGF0dXMoYm9vbGVhbiBzdGF0dXMsIGJvb2xlYW4gdW5sb2NrU2NyZWVuKSB7CisJCXBhbmVsU2NyZWVuLnNldEVuYWJsZWQodW5sb2NrU2NyZWVuKTsKKwkJaWYgKHN0YXR1cyAhPSBzaGFyaW5nU3RhcnRlZCkgeworCQkJc2hhcmluZ0FjdGlvblJlcXVlc3RlZCA9IGZhbHNlOworCQl9CisJCXNoYXJpbmdTdGFydGVkID0gc3RhdHVzOworCQlidG5TdGFydFN0b3BTaGFyaW5nLnNldEljb24oc3RhdHVzID8gc3RvcEljb24gOiBzdGFydEljb24pOworCQlidG5TdGFydFN0b3BTaGFyaW5nLnNldFRleHQoc3RhdHVzID8gc3RvcFNoYXJpbmdMYWJlbCA6IHN0YXJ0U2hhcmluZ0xhYmVsKTsKKwkJYnRuU3RhcnRTdG9wU2hhcmluZy5zZXRUb29sVGlwVGV4dChzdGF0dXMgPyBzdG9wU2hhcmluZ0xhYmVsIDogc3RhcnRTaGFyaW5nTGFiZWwpOworCX0KKwkKKwlwdWJsaWMgdm9pZCBzZXRSZWNvcmRpbmdTdGF0dXMoYm9vbGVhbiBzdGF0dXMsIGJvb2xlYW4gdW5sb2NrU2NyZWVuKSB7CisJCXBhbmVsU2NyZWVuLnNldEVuYWJsZWQodW5sb2NrU2NyZWVuKTsKKwkJaWYgKHN0YXR1cyAhPSByZWNvcmRpbmdTdGFydGVkKSB7CisJCQlyZWNvcmRpbmdBY3Rpb25SZXF1ZXN0ZWQgPSBmYWxzZTsKKwkJfQorCQlsb2dnZXIuZGVidWcoInJlY29yZGluZ0FjdGlvblJlcXVlc3RlZD0iICsgcmVjb3JkaW5nQWN0aW9uUmVxdWVzdGVkKTsKKwkJcmVjb3JkaW5nU3RhcnRlZCA9IHN0YXR1czsKKwkJYnRuU3RhcnRTdG9wUmVjb3JkaW5nLnNldEljb24oc3RhdHVzID8gc3RvcEljb24gOiBzdGFydEljb24pOworCQlidG5TdGFydFN0b3BSZWNvcmRpbmcuc2V0VGV4dChzdGF0dXMgPyBzdG9wUmVjb3JkaW5nTGFiZWwgOiBzdGFydFJlY29yZGluZ0xhYmVsKTsKKwkJYnRuU3RhcnRTdG9wUmVjb3JkaW5nLnNldFRvb2xUaXBUZXh0KHN0YXR1cyA/IHN0b3BSZWNvcmRpbmdMYWJlbCA6IHN0YXJ0UmVjb3JkaW5nTGFiZWwpOworCX0KKwkKKwlwdWJsaWMgdm9pZCBzZXRQdWJsaXNoaW5nU3RhdHVzKGJvb2xlYW4gc3RhdHVzLCBib29sZWFuIHVubG9ja1NjcmVlbikgeworCQlwYW5lbFNjcmVlbi5zZXRFbmFibGVkKHVubG9ja1NjcmVlbik7CisJCWlmIChzdGF0dXMgIT0gcHVibGlzaFN0YXJ0ZWQpIHsKKwkJCXB1Ymxpc2hpbmdBY3Rpb25SZXF1ZXN0ZWQgPSBmYWxzZTsKKwkJfQorCQlwdWJsaXNoU3RhcnRlZCA9IHN0YXR1czsKKwkJYnRuU3RhcnRTdG9wUHVibGlzaC5zZXRJY29uKHN0YXR1cyA/IHN0b3BJY29uIDogc3RhcnRJY29uKTsKKwkJYnRuU3RhcnRTdG9wUHVibGlzaC5zZXRUZXh0KHN0YXR1cyA/IHN0b3BQdWJsaXNoTGFiZWwgOiBzdGFydFB1Ymxpc2hMYWJlbCk7CisJCWJ0blN0YXJ0U3RvcFB1Ymxpc2guc2V0VG9vbFRpcFRleHQoc3RhdHVzID8gc3RvcFB1Ymxpc2hMYWJlbCA6IHN0YXJ0UHVibGlzaExhYmVsKTsKKwl9CisJCisJcHVibGljIHZvaWQgc2V0UmVjb3JkaW5nVGFiRW5hYmxlZChib29sZWFuIGVuYWJsZWQpIHsKKwkJcGFuZWxSZWNvcmRpbmcuc2V0RW5hYmxlZChlbmFibGVkKTsKKwkJdGFiYmVkUGFuZS5zZXRFbmFibGVkQXQoMCwgZW5hYmxlZCk7CisJCXRhYmJlZFBhbmUuc2V0VG9vbFRpcFRleHRBdCgwLCBlbmFibGVkID8gbnVsbCA6IHJlY29yZGluZ1RpcExhYmVsKTsKKwl9CisJCisJcHVibGljIHZvaWQgc2V0UHVibGlzaGluZ1RhYkVuYWJsZWQoYm9vbGVhbiBlbmFibGVkKSB7CisJCXBhbmVsUHVibGlzaC5zZXRFbmFibGVkKGVuYWJsZWQpOworCQl0YWJiZWRQYW5lLnNldEVuYWJsZWRBdCgxLCBlbmFibGVkKTsKKwkJdGFiYmVkUGFuZS5zZXRUb29sVGlwVGV4dEF0KDEsIGVuYWJsZWQgPyBudWxsIDogcHVibGlzaGluZ1RpcExhYmVsKTsKKwl9CisJCisJcHVibGljIFN0cmluZyBnZXRQdWJsaXNoSG9zdCgpIHsKKwkJcmV0dXJuIHRleHRQdWJsaXNoSG9zdC5nZXRUZXh0KCk7CisJfQorCQorCXB1YmxpYyBTdHJpbmcgZ2V0UHVibGlzaEFwcCgpIHsKKwkJcmV0dXJuIHRleHRQdWJsaXNoQXBwLmdldFRleHQoKTsKKwl9CisJCisJcHVibGljIFN0cmluZyBnZXRQdWJsaXNoSWQoKSB7CisJCXJldHVybiB0ZXh0UHVibGlzaElkLmdldFRleHQoKTsKKwl9CisJCisJcHJpdmF0ZSB2b2lkIHVwZGF0ZVB1Ymxpc2hVUkwoKSB7CisJCWxibFB1Ymxpc2hVUkwuc2V0VGV4dCgicnRtcDovLyIgKyB0ZXh0UHVibGlzaEhvc3QuZ2V0VGV4dCgpICsgIjoxOTM1LyIKKwkJCQkrIHRleHRQdWJsaXNoQXBwLmdldFRleHQoKSArICIvIiArIHRleHRQdWJsaXNoSWQuZ2V0VGV4dCgpKTsKKwl9CisJCisJcHVibGljIHZvaWQgc2V0U2hvd1dhcm5pbmcoYm9vbGVhbiBzaG93V2FybmluZykgeworCQl0aGlzLnNob3dXYXJuaW5nID0gc2hvd1dhcm5pbmc7CisJfQorCQorCXB1YmxpYyB2b2lkIHNldERvVXBkYXRlQm91bmRzKGJvb2xlYW4gZG9VcGRhdGVCb3VuZHMpIHsKKwkJdGhpcy5kb1VwZGF0ZUJvdW5kcyA9IGRvVXBkYXRlQm91bmRzOworCX0KKwkKKwlwdWJsaWMgdm9pZCBzZXRTdGF0dXMoU3RyaW5nIHN0YXR1cykgeworCQlsYmxTdGF0dXMuc2V0VGV4dChzdGF0dXMpOworCX0KKworCXB1YmxpYyB2b2lkIHNldFNwaW5uZXJYKGludCB2YWwpIHsKKwkJc3Bpbm5lclguc2V0VmFsdWUodmFsKTsKKwl9CisKKwlwdWJsaWMgdm9pZCBzZXRTcGlubmVyWShpbnQgdmFsKSB7CisJCXNwaW5uZXJZLnNldFZhbHVlKHZhbCk7CisJfQorCisJcHVibGljIHZvaWQgc2V0U3Bpbm5lcldpZHRoKGludCB2YWwpIHsKKwkJc3Bpbm5lcldpZHRoLnNldFZhbHVlKHZhbCk7CisJfQorCisJcHVibGljIHZvaWQgc2V0U3Bpbm5lckhlaWdodChpbnQgdmFsKSB7CisJCXNwaW5uZXJIZWlnaHQuc2V0VmFsdWUodmFsKTsKKwl9CisKKwl2b2lkIGNhbGNOZXdWYWx1ZVhTcGluKCkgeworCQlpZiAoZG9VcGRhdGVCb3VuZHMpIHsKKwkJCWludCBuZXdYID0gc3Bpbm5lclguZ2V0VmFsdWUoKTsKKwkJCWlmIChTY3JlZW5EaW1lbnNpb25zLnNwaW5uZXJXaWR0aCArIG5ld1ggPiBTY3JlZW5EaW1lbnNpb25zLndpZHRoTWF4KSB7CisJCQkJbmV3WCA9IFNjcmVlbkRpbWVuc2lvbnMud2lkdGhNYXggLSBTY3JlZW5EaW1lbnNpb25zLnNwaW5uZXJXaWR0aDsKKwkJCQlzcGlubmVyWC5zZXRWYWx1ZShuZXdYKTsKKwkJCQlpZiAoc2hvd1dhcm5pbmcpIHsKKwkJCQkJc2V0U3RhdHVzKHJlZHVjZVdpZHRoTGFiZWwpOworCQkJCX0KKwkJCX0gZWxzZSB7CisJCQkJU2NyZWVuRGltZW5zaW9ucy5zcGlubmVyWCA9IG5ld1g7CisJCQkJdXBkYXRlVlNjcmVlbkJvdW5kcygpOworCQkJfQorCQl9IGVsc2UgeworCQkJU2NyZWVuRGltZW5zaW9ucy5zcGlubmVyWCA9IHNwaW5uZXJYLmdldFZhbHVlKCk7CisJCX0KKworCQljYWxjUmVzY2FsZUZhY3RvcnMoKTsKKwl9CisKKwl2b2lkIGNhbGNOZXdWYWx1ZVlTcGluKCkgeworCQlpZiAoZG9VcGRhdGVCb3VuZHMpIHsKKwkJCWludCBuZXdZID0gc3Bpbm5lclkuZ2V0VmFsdWUoKTsKKwkJCWlmIChTY3JlZW5EaW1lbnNpb25zLnNwaW5uZXJIZWlnaHQgKyBuZXdZID4gU2NyZWVuRGltZW5zaW9ucy5oZWlnaHRNYXgpIHsKKwkJCQluZXdZID0gU2NyZWVuRGltZW5zaW9ucy5oZWlnaHRNYXggLSBTY3JlZW5EaW1lbnNpb25zLnNwaW5uZXJIZWlnaHQ7CisJCQkJc3Bpbm5lclkuc2V0VmFsdWUobmV3WSk7CisJCQkJaWYgKHNob3dXYXJuaW5nKSB7CisJCQkJCXNldFN0YXR1cyhyZWR1Y2VIZWlnaHRMYWJlbCk7CisJCQkJfQorCQkJfSBlbHNlIHsKKwkJCQlTY3JlZW5EaW1lbnNpb25zLnNwaW5uZXJZID0gbmV3WTsKKwkJCQl1cGRhdGVWU2NyZWVuQm91bmRzKCk7CisJCQl9CisJCX0gZWxzZSB7CisJCQlTY3JlZW5EaW1lbnNpb25zLnNwaW5uZXJZID0gc3Bpbm5lclkuZ2V0VmFsdWUoKTsKKwkJfQorCisJCWNhbGNSZXNjYWxlRmFjdG9ycygpOworCX0KKworCXZvaWQgY2FsY05ld1ZhbHVlV2lkdGhTcGluKCkgeworCQlpZiAoZG9VcGRhdGVCb3VuZHMpIHsKKwkJCWludCBuZXdXaWR0aCA9IHNwaW5uZXJXaWR0aC5nZXRWYWx1ZSgpOworCQkJaWYgKFNjcmVlbkRpbWVuc2lvbnMuc3Bpbm5lclggKyBuZXdXaWR0aCA+IFNjcmVlbkRpbWVuc2lvbnMud2lkdGhNYXgpIHsKKwkJCQluZXdXaWR0aCA9IFNjcmVlbkRpbWVuc2lvbnMud2lkdGhNYXggLSBTY3JlZW5EaW1lbnNpb25zLnNwaW5uZXJYOworCQkJCXNwaW5uZXJXaWR0aC5zZXRWYWx1ZShuZXdXaWR0aCk7CisJCQkJaWYgKHNob3dXYXJuaW5nKSB7CisJCQkJCXNldFN0YXR1cyhyZWR1Y2VYTGFiZWwpOworCQkJCX0KKwkJCX0gZWxzZSB7CisJCQkJU2NyZWVuRGltZW5zaW9ucy5zcGlubmVyV2lkdGggPSBuZXdXaWR0aDsKKwkJCQl1cGRhdGVWU2NyZWVuQm91bmRzKCk7CisJCQl9CisJCX0gZWxzZSB7CisJCQlTY3JlZW5EaW1lbnNpb25zLnNwaW5uZXJXaWR0aCA9IHNwaW5uZXJXaWR0aC5nZXRWYWx1ZSgpOworCQl9CisKKwkJY2FsY1Jlc2NhbGVGYWN0b3JzKCk7CisJfQorCisJdm9pZCBjYWxjTmV3VmFsdWVIZWlnaHRTcGluKCkgeworCQlpZiAoZG9VcGRhdGVCb3VuZHMpIHsKKwkJCWludCBuZXdIZWlnaHQgPSBzcGlubmVySGVpZ2h0LmdldFZhbHVlKCk7CisJCQlpZiAoU2NyZWVuRGltZW5zaW9ucy5zcGlubmVyWSArIG5ld0hlaWdodCA+IFNjcmVlbkRpbWVuc2lvbnMuaGVpZ2h0TWF4KSB7CisJCQkJbmV3SGVpZ2h0ID0gU2NyZWVuRGltZW5zaW9ucy5oZWlnaHRNYXggLSBTY3JlZW5EaW1lbnNpb25zLnNwaW5uZXJZOworCQkJCXNwaW5uZXJIZWlnaHQuc2V0VmFsdWUobmV3SGVpZ2h0KTsKKwkJCQlpZiAoc2hvd1dhcm5pbmcpIHsKKwkJCQkJc2V0U3RhdHVzKHJlZHVjZVlMYWJlbCk7CisJCQkJfQorCQkJfSBlbHNlIHsKKwkJCQlTY3JlZW5EaW1lbnNpb25zLnNwaW5uZXJIZWlnaHQgPSBuZXdIZWlnaHQ7CisJCQkJdXBkYXRlVlNjcmVlbkJvdW5kcygpOworCQkJfQorCQl9IGVsc2UgeworCQkJU2NyZWVuRGltZW5zaW9ucy5zcGlubmVySGVpZ2h0ID0gc3Bpbm5lckhlaWdodC5nZXRWYWx1ZSgpOworCQl9CisKKwkJY2FsY1Jlc2NhbGVGYWN0b3JzKCk7CisJfQorCisJLyoqCisJICogTmVlZHMgdG8gYmUgYWx3YXlzIGludm9rZWQgYWZ0ZXIgZXZlcnkgcmUtc2NhbGluZworCSAqLworCXZvaWQgY2FsY1Jlc2NhbGVGYWN0b3JzKCkgeworCQlsb2dnZXIudHJhY2UoImNhbGNSZXNjYWxlRmFjdG9ycyAtLSAiKTsKKwkJU2NyZWVuRGltZW5zaW9ucy5yZXNpemVYID0gc3Bpbm5lcldpZHRoLmdldFZhbHVlKCk7CisJCVNjcmVlbkRpbWVuc2lvbnMucmVzaXplWSA9IHNwaW5uZXJIZWlnaHQuZ2V0VmFsdWUoKTsKKwkJc3dpdGNoIChTY3JlZW5EaW1lbnNpb25zLnF1YWxpdHkpIHsKKwkJCWNhc2UgTWVkaXVtOgorCQkJCVNjcmVlbkRpbWVuc2lvbnMucmVzaXplWCA9IChpbnQpKDEuMC8yICogU2NyZWVuRGltZW5zaW9ucy5yZXNpemVYKTsKKwkJCQlTY3JlZW5EaW1lbnNpb25zLnJlc2l6ZVkgPSAoaW50KSgxLjAvMiAqIFNjcmVlbkRpbWVuc2lvbnMucmVzaXplWSk7CisJCQkJYnJlYWs7CisJCQljYXNlIExvdzoKKwkJCQlTY3JlZW5EaW1lbnNpb25zLnJlc2l6ZVggPSAoaW50KSgzLjAvOCAqIFNjcmVlbkRpbWVuc2lvbnMucmVzaXplWCk7CisJCQkJU2NyZWVuRGltZW5zaW9ucy5yZXNpemVZID0gKGludCkoMy4wLzggKiBTY3JlZW5EaW1lbnNpb25zLnJlc2l6ZVkpOworCQkJCWJyZWFrOworCQkJY2FzZSBWZXJ5SGlnaDoKKwkJCWNhc2UgSGlnaDoKKwkJCWRlZmF1bHQ6CisJCQkJYnJlYWs7CisJCX0KKwkJbG9nZ2VyLnRyYWNlKCJyZXNpemU6IFg6IiArIFNjcmVlbkRpbWVuc2lvbnMucmVzaXplWCArICIgWTogIiArIFNjcmVlbkRpbWVuc2lvbnMucmVzaXplWSk7CisJCXVwZGF0ZVZTY3JlZW5Cb3VuZHMoKTsKKwl9CisKKwlwcml2YXRlIHZvaWQgc2V0VlNjcmVlbkJvdW5kcyhpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCkgeworCQlsZWZ0U2xpZGVyLnNldEJvdW5kcyh4ICsgdlNjcmVlblggLSAxNiwgeSArIHZTY3JlZW5ZIC0gOCArIChoZWlnaHQgLyAyKSwgMzIsIDE2KTsKKwkJcmlnaHRTbGlkZXIuc2V0Qm91bmRzKHggKyB2U2NyZWVuWCArIHdpZHRoIC0gMTYsIHkgKyB2U2NyZWVuWSAtIDggKyAoaGVpZ2h0IC8gMiksIDMyLCAxNik7CisJCXVwU2xpZGVyLnNldEJvdW5kcyh4ICsgdlNjcmVlblggKyAod2lkdGggLyAyKSAtIDgsIHkgKyB2U2NyZWVuWSAtIDE2LCAxNiwgMzIpOworCQlkb3duU2xpZGVyLnNldEJvdW5kcyh4ICsgdlNjcmVlblggKyAod2lkdGggLyAyKSAtIDgsIHkgKyB2U2NyZWVuWSAtIDE2ICsgaGVpZ2h0LCAxNiwgMzIpOworCQkKKwkJdmlydHVhbFNjcmVlbi5zZXRUZXh0KFNjcmVlbkRpbWVuc2lvbnMuc3Bpbm5lcldpZHRoICsgIjoiICsgU2NyZWVuRGltZW5zaW9ucy5zcGlubmVySGVpZ2h0KTsKKwkJdmlydHVhbFNjcmVlbi5zZXRCb3VuZHMoeCArIHZTY3JlZW5YLCB5ICsgdlNjcmVlblksIHdpZHRoLCBoZWlnaHQpOworCX0KKwkKKwkvKioKKwkgKiB1cGRhdGUgdGhlIGJvdW5kcyBvZiB0aGUgdlNjcmVlbgorCSAqIGJ5IHVzaW5nIHRoZSB2YXJzIGZyb20gdGhlIFNwaW5uZXJzCisJICoKKwkgKi8KKwl2b2lkIHVwZGF0ZVZTY3JlZW5Cb3VuZHMoKSB7CisJCWRvdWJsZSByYXRpbyA9ICgoZG91YmxlKVNjcmVlbkRpbWVuc2lvbnMud2lkdGgpIC8gU2NyZWVuRGltZW5zaW9ucy53aWR0aE1heDsKKwkJaW50IG5ld1dpZHRoID0gKGludCkoU2NyZWVuRGltZW5zaW9ucy5zcGlubmVyV2lkdGggKiByYXRpbyk7CisJCWludCBuZXdYID0gKGludCkoU2NyZWVuRGltZW5zaW9ucy5zcGlubmVyWCAqIHJhdGlvKTsKKworCQlpbnQgbmV3SGVpZ2h0ID0gKGludCkoU2NyZWVuRGltZW5zaW9ucy5zcGlubmVySGVpZ2h0ICogcmF0aW8pOworCQlpbnQgbmV3WSA9IChpbnQpKFNjcmVlbkRpbWVuc2lvbnMuc3Bpbm5lclkgKiByYXRpbyk7CisKKwkJc2V0VlNjcmVlbkJvdW5kcyhuZXdYLCBuZXdZLCBuZXdXaWR0aCwgbmV3SGVpZ2h0KTsKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2NyZWVuL3dlYnN0YXJ0L2d1aS9TY3JlZW5XaWR0aE1vdXNlTGlzdGVuZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zY3JlZW4vd2Vic3RhcnQvZ3VpL1NjcmVlbldpZHRoTW91c2VMaXN0ZW5lci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4OTNiMzEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2NyZWVuL3dlYnN0YXJ0L2d1aS9TY3JlZW5XaWR0aE1vdXNlTGlzdGVuZXIuamF2YQpAQCAtMCwwICsxLDY5IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnNjcmVlbi53ZWJzdGFydC5ndWk7CisKK2ltcG9ydCBqYXZhLmF3dC5Db21wb25lbnQ7CitpbXBvcnQgamF2YS5hd3QuQ3Vyc29yOworaW1wb3J0IGphdmEuYXd0LmV2ZW50Lk1vdXNlRXZlbnQ7CisKK2ltcG9ydCBqYXZheC5zd2luZy5ldmVudC5Nb3VzZUlucHV0QWRhcHRlcjsKKworcHVibGljIGNsYXNzIFNjcmVlbldpZHRoTW91c2VMaXN0ZW5lciBleHRlbmRzIE1vdXNlSW5wdXRBZGFwdGVyIHsKKwlwcml2YXRlIFNjcmVlblNoYXJlckZyYW1lIGZyYW1lOworCXByaXZhdGUgZG91YmxlIHggPSAwOworCisJcHVibGljIFNjcmVlbldpZHRoTW91c2VMaXN0ZW5lcihTY3JlZW5TaGFyZXJGcmFtZSBmcmFtZSkgeworCQl0aGlzLmZyYW1lID0gZnJhbWU7CisJfQorCisJcHVibGljIHZvaWQgbW91c2VFbnRlcmVkKE1vdXNlRXZlbnQgZSkgeworCQlmcmFtZS5zZXRDdXJzb3IoQ3Vyc29yLmdldFByZWRlZmluZWRDdXJzb3IoQ3Vyc29yLldfUkVTSVpFX0NVUlNPUikpOworCX0KKworCXB1YmxpYyB2b2lkIG1vdXNlRXhpdGVkKE1vdXNlRXZlbnQgZSkgeworCQlmcmFtZS5zZXRDdXJzb3IoQ3Vyc29yLmdldFByZWRlZmluZWRDdXJzb3IoQ3Vyc29yLkRFRkFVTFRfQ1VSU09SKSk7CisJfQorCisJcHVibGljIHZvaWQgbW91c2VQcmVzc2VkKE1vdXNlRXZlbnQgZSkgeworCQlmcmFtZS5zZXRTaG93V2FybmluZyhmYWxzZSk7CisJCXRoaXMueCA9IGUuZ2V0WCgpOworCX0KKworCXB1YmxpYyB2b2lkIG1vdXNlUmVsZWFzZWQoTW91c2VFdmVudCBlKSB7CisJCWZyYW1lLnNldFNob3dXYXJuaW5nKHRydWUpOworCX0KKworCXB1YmxpYyB2b2lkIG1vdXNlRHJhZ2dlZChNb3VzZUV2ZW50IGUpIHsKKwkJaWYgKCEoKENvbXBvbmVudCllLmdldFNvdXJjZSgpKS5pc0VuYWJsZWQoKSkgeworCQkJcmV0dXJuOworCQl9CisJCWRvdWJsZSBuZXdYID0gZS5nZXRYKCk7CisKKwkJaW50IG5ld1dpZHRoID0gU2NyZWVuRGltZW5zaW9ucy5zcGlubmVyV2lkdGggLSAoaW50KSh4IC0gbmV3WCk7CisJCWludCBuZXdTcGlubmVyWCA9IFNjcmVlbkRpbWVuc2lvbnMuc3Bpbm5lclggKyBuZXdXaWR0aDsKKworCQlpZiAoMCA8PSBuZXdTcGlubmVyWCAmJiBuZXdTcGlubmVyWCA8PSBTY3JlZW5EaW1lbnNpb25zLndpZHRoTWF4KSB7CisJCQlmcmFtZS5zZXREb1VwZGF0ZUJvdW5kcyhmYWxzZSk7CisJCQlmcmFtZS5zZXRTcGlubmVyV2lkdGgobmV3V2lkdGgpOworCQkJZnJhbWUuc2V0RG9VcGRhdGVCb3VuZHModHJ1ZSk7CisJCQlmcmFtZS51cGRhdGVWU2NyZWVuQm91bmRzKCk7CisJCQlmcmFtZS5jYWxjUmVzY2FsZUZhY3RvcnMoKTsKKwkJfQorCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zY3JlZW4vd2Vic3RhcnQvZ3VpL1NjcmVlblhNb3VzZUxpc3RlbmVyLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2NyZWVuL3dlYnN0YXJ0L2d1aS9TY3JlZW5YTW91c2VMaXN0ZW5lci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRjNDFlOTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2NyZWVuL3dlYnN0YXJ0L2d1aS9TY3JlZW5YTW91c2VMaXN0ZW5lci5qYXZhCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2NyZWVuLndlYnN0YXJ0Lmd1aTsKKworaW1wb3J0IGphdmEuYXd0LkNvbXBvbmVudDsKK2ltcG9ydCBqYXZhLmF3dC5DdXJzb3I7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuTW91c2VFdmVudDsKKworaW1wb3J0IGphdmF4LnN3aW5nLmV2ZW50Lk1vdXNlSW5wdXRBZGFwdGVyOworCitwdWJsaWMgY2xhc3MgU2NyZWVuWE1vdXNlTGlzdGVuZXIgZXh0ZW5kcyBNb3VzZUlucHV0QWRhcHRlciB7CisJcHJpdmF0ZSBTY3JlZW5TaGFyZXJGcmFtZSBmcmFtZTsKKwlwcml2YXRlIGRvdWJsZSB4ID0gMDsKKworCXB1YmxpYyBTY3JlZW5YTW91c2VMaXN0ZW5lcihTY3JlZW5TaGFyZXJGcmFtZSBmcmFtZSkgeworCQl0aGlzLmZyYW1lID0gZnJhbWU7CisJfQorCisJcHVibGljIHZvaWQgbW91c2VFbnRlcmVkKE1vdXNlRXZlbnQgZSkgeworCQlmcmFtZS5zZXRDdXJzb3IoQ3Vyc29yLmdldFByZWRlZmluZWRDdXJzb3IoQ3Vyc29yLldfUkVTSVpFX0NVUlNPUikpOworCX0KKworCXB1YmxpYyB2b2lkIG1vdXNlRXhpdGVkKE1vdXNlRXZlbnQgZSkgeworCQlmcmFtZS5zZXRDdXJzb3IoQ3Vyc29yLmdldFByZWRlZmluZWRDdXJzb3IoQ3Vyc29yLkRFRkFVTFRfQ1VSU09SKSk7CisJfQorCisJcHVibGljIHZvaWQgbW91c2VQcmVzc2VkKE1vdXNlRXZlbnQgZSkgeworCQlmcmFtZS5zZXRTaG93V2FybmluZyhmYWxzZSk7CisJCXRoaXMueCA9IGUuZ2V0WCgpOworCX0KKworCXB1YmxpYyB2b2lkIG1vdXNlUmVsZWFzZWQoTW91c2VFdmVudCBlKSB7CisJCWZyYW1lLnNldFNob3dXYXJuaW5nKHRydWUpOworCX0KKworCXB1YmxpYyB2b2lkIG1vdXNlRHJhZ2dlZChNb3VzZUV2ZW50IGUpIHsKKwkJaWYgKCEoKENvbXBvbmVudCllLmdldFNvdXJjZSgpKS5pc0VuYWJsZWQoKSkgeworCQkJcmV0dXJuOworCQl9CisJCWRvdWJsZSBuZXdYID0gZS5nZXRYKCk7CisJCWludCBkZWx0YSA9IChpbnQpICh4IC0gbmV3WCk7CisJCWludCBuZXdYUG9zaXRpb24gPSBTY3JlZW5EaW1lbnNpb25zLnNwaW5uZXJYIC0gZGVsdGE7CisJCWludCBuZXdXaWR0aCA9IFNjcmVlbkRpbWVuc2lvbnMuc3Bpbm5lcldpZHRoICsgZGVsdGE7CisKKwkJaWYgKG5ld1hQb3NpdGlvbiA+PSAwICYmIG5ld1dpZHRoID49IDApIHsKKwkJCWZyYW1lLnNldERvVXBkYXRlQm91bmRzKGZhbHNlKTsKKwkJCWZyYW1lLnNldFNwaW5uZXJYKG5ld1hQb3NpdGlvbik7CisJCQlmcmFtZS5zZXRTcGlubmVyV2lkdGgobmV3V2lkdGgpOworCQkJZnJhbWUuc2V0RG9VcGRhdGVCb3VuZHModHJ1ZSk7CisJCQlmcmFtZS51cGRhdGVWU2NyZWVuQm91bmRzKCk7CisJCQlmcmFtZS5jYWxjUmVzY2FsZUZhY3RvcnMoKTsKKwkJfQorCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zY3JlZW4vd2Vic3RhcnQvZ3VpL1NjcmVlbllNb3VzZUxpc3RlbmVyLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2NyZWVuL3dlYnN0YXJ0L2d1aS9TY3JlZW5ZTW91c2VMaXN0ZW5lci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5ZGU2MmUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2NyZWVuL3dlYnN0YXJ0L2d1aS9TY3JlZW5ZTW91c2VMaXN0ZW5lci5qYXZhCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2NyZWVuLndlYnN0YXJ0Lmd1aTsKKworaW1wb3J0IGphdmEuYXd0LkNvbXBvbmVudDsKK2ltcG9ydCBqYXZhLmF3dC5DdXJzb3I7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuTW91c2VFdmVudDsKKworaW1wb3J0IGphdmF4LnN3aW5nLmV2ZW50Lk1vdXNlSW5wdXRBZGFwdGVyOworCitwdWJsaWMgY2xhc3MgU2NyZWVuWU1vdXNlTGlzdGVuZXIgZXh0ZW5kcyBNb3VzZUlucHV0QWRhcHRlciB7CisJcHJpdmF0ZSBTY3JlZW5TaGFyZXJGcmFtZSBmcmFtZTsKKwlwcml2YXRlIGRvdWJsZSB5ID0gMDsKKworCXB1YmxpYyBTY3JlZW5ZTW91c2VMaXN0ZW5lcihTY3JlZW5TaGFyZXJGcmFtZSBmcmFtZSkgeworCQl0aGlzLmZyYW1lID0gZnJhbWU7CisJfQorCisJcHVibGljIHZvaWQgbW91c2VFbnRlcmVkKE1vdXNlRXZlbnQgZSkgeworCQlmcmFtZS5zZXRDdXJzb3IoQ3Vyc29yLmdldFByZWRlZmluZWRDdXJzb3IoQ3Vyc29yLk5fUkVTSVpFX0NVUlNPUikpOworCX0KKworCXB1YmxpYyB2b2lkIG1vdXNlRXhpdGVkKE1vdXNlRXZlbnQgZSkgeworCQlmcmFtZS5zZXRDdXJzb3IoQ3Vyc29yLmdldFByZWRlZmluZWRDdXJzb3IoQ3Vyc29yLkRFRkFVTFRfQ1VSU09SKSk7CisJfQorCisJcHVibGljIHZvaWQgbW91c2VQcmVzc2VkKE1vdXNlRXZlbnQgZSkgeworCQlmcmFtZS5zZXRTaG93V2FybmluZyhmYWxzZSk7CisJCXRoaXMueSA9IGUuZ2V0WSgpOworCX0KKworCXB1YmxpYyB2b2lkIG1vdXNlUmVsZWFzZWQoTW91c2VFdmVudCBlKSB7CisJCWZyYW1lLnNldFNob3dXYXJuaW5nKHRydWUpOworCX0KKworCXB1YmxpYyB2b2lkIG1vdXNlRHJhZ2dlZChNb3VzZUV2ZW50IGUpIHsKKwkJaWYgKCEoKENvbXBvbmVudCllLmdldFNvdXJjZSgpKS5pc0VuYWJsZWQoKSkgeworCQkJcmV0dXJuOworCQl9CisJCWRvdWJsZSBuZXdZID0gZS5nZXRZKCk7CisKKwkJaW50IGRlbHRhID0gKGludCkgKHkgLSBuZXdZKTsKKwkJaW50IG5ld1lQb3NpdGlvbiA9IFNjcmVlbkRpbWVuc2lvbnMuc3Bpbm5lclkgLSBkZWx0YTsKKwkJaW50IG5ld0hlaWdodCA9IFNjcmVlbkRpbWVuc2lvbnMuc3Bpbm5lckhlaWdodCArIGRlbHRhOworCisJCWlmIChuZXdZUG9zaXRpb24gPj0gMCAmJiBuZXdIZWlnaHQgPj0gMCkgeworCQkJZnJhbWUuc2V0RG9VcGRhdGVCb3VuZHMoZmFsc2UpOworCQkJZnJhbWUuc2V0U3Bpbm5lclkobmV3WVBvc2l0aW9uKTsKKwkJCWZyYW1lLnNldFNwaW5uZXJIZWlnaHQobmV3SGVpZ2h0KTsKKwkJCWZyYW1lLnNldERvVXBkYXRlQm91bmRzKHRydWUpOworCQkJZnJhbWUudXBkYXRlVlNjcmVlbkJvdW5kcygpOworCQkJZnJhbWUuY2FsY1Jlc2NhbGVGYWN0b3JzKCk7CisJCX0KKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2VydmxldC9CYXNlSHR0cFNlcnZsZXQuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zZXJ2bGV0L0Jhc2VIdHRwU2VydmxldC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4ZDAyYjkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2VydmxldC9CYXNlSHR0cFNlcnZsZXQuamF2YQpAQCAtMCwwICsxLDQ2IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnNlcnZsZXQ7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uT3V0cHV0U3RyZWFtOworCitpbXBvcnQgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0OworaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlc3BvbnNlOworCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQmFzZUh0dHBTZXJ2bGV0IGV4dGVuZHMgSHR0cFNlcnZsZXQgeworCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IC0yNzEzNDIyNDk2NzIzMTE1NTI0TDsKKwkKKwlwcml2YXRlIEJlYW5VdGlsIGJlYW5VdGlsID0gbmV3IEJlYW5VdGlsKCk7CisKKwlwcm90ZWN0ZWQgPFQ+IFQgZ2V0QmVhbihDbGFzczxUPiBiZWFuQ2xhc3MpIHRocm93cyBTZXJ2ZXJOb3RJbml0aWFsaXplZEV4Y2VwdGlvbiB7CisJCXJldHVybiBiZWFuVXRpbC5nZXRCZWFuKGJlYW5DbGFzcywgZ2V0U2VydmxldENvbnRleHQoKSk7CisJfQorCQorCXByb3RlY3RlZCB2b2lkIGhhbmRsZU5vdEJvb3RlZChIdHRwU2VydmxldFJlc3BvbnNlIHJlc3BvbnNlKSB0aHJvd3MgSU9FeGNlcHRpb24geworCQlPdXRwdXRTdHJlYW0gb3V0ID0gcmVzcG9uc2UuZ2V0T3V0cHV0U3RyZWFtKCk7CisKKwkJU3RyaW5nIG1zZyA9ICJTZXJ2ZXIgaXMgbm90IGJvb3RlZCB5ZXQiOworCisJCW91dC53cml0ZShtc2cuZ2V0Qnl0ZXMoKSk7CisKKwkJb3V0LmZsdXNoKCk7CisJCW91dC5jbG9zZSgpOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zZXJ2bGV0L0Jhc2VWZWxvY2l0eVZpZXdTZXJ2bGV0LmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2VydmxldC9CYXNlVmVsb2NpdHlWaWV3U2VydmxldC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4YmEzOGIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2VydmxldC9CYXNlVmVsb2NpdHlWaWV3U2VydmxldC5qYXZhCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2VydmxldDsKKworaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3Q7CitpbXBvcnQgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVzcG9uc2U7CisKK2ltcG9ydCBvcmcuYXBhY2hlLnZlbG9jaXR5LlRlbXBsYXRlOworaW1wb3J0IG9yZy5hcGFjaGUudmVsb2NpdHkudG9vbHMudmlldy5WZWxvY2l0eVZpZXdTZXJ2bGV0OworCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQmFzZVZlbG9jaXR5Vmlld1NlcnZsZXQgZXh0ZW5kcyBWZWxvY2l0eVZpZXdTZXJ2bGV0IHsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSA1MDc1NTQ3Njk1ODc2Njc5NTkwTDsKKwkKKwlwcml2YXRlIEJlYW5VdGlsIGJlYW5VdGlsID0gbmV3IEJlYW5VdGlsKCk7CisKKwlwcm90ZWN0ZWQgPFQ+IFQgZ2V0QmVhbihDbGFzczxUPiBiZWFuQ2xhc3MpIHRocm93cyBTZXJ2ZXJOb3RJbml0aWFsaXplZEV4Y2VwdGlvbiB7CisJCXJldHVybiBiZWFuVXRpbC5nZXRCZWFuKGJlYW5DbGFzcywgZ2V0U2VydmxldENvbnRleHQoKSk7CisJfQorCQorCXByb3RlY3RlZCBUZW1wbGF0ZSBnZXRCb290aW5nKCkgeworCQlyZXR1cm4gZ2V0VmVsb2NpdHlWaWV3KCkuZ2V0VmVsb2NpdHlFbmdpbmUoKS5nZXRUZW1wbGF0ZSgiYm9vdGluZ19pbnN0YWxsLnZtIik7CisJfQorCQorCUBPdmVycmlkZQorCXByb3RlY3RlZCB2b2lkIGVycm9yKEh0dHBTZXJ2bGV0UmVxdWVzdCByZXF1ZXN0LCBIdHRwU2VydmxldFJlc3BvbnNlIHJlc3BvbnNlLCBUaHJvd2FibGUgZSkgeworCQlpZiAoZSBpbnN0YW5jZW9mIFNlcnZlck5vdEluaXRpYWxpemVkRXhjZXB0aW9uKSB7CisgICAgICAgICAgICB0cnkgeworCQkJCW1lcmdlVGVtcGxhdGUoZ2V0Qm9vdGluZygpLCBjcmVhdGVDb250ZXh0KHJlcXVlc3QsIHJlc3BvbnNlKSwgcmVzcG9uc2UpOworCQkJCXJldHVybjsKKwkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlMSkgeworCQkJCS8vIG5vLW9wCisJCQl9CisJCX0KKwkJc3VwZXIuZXJyb3IocmVxdWVzdCwgcmVzcG9uc2UsIGUpOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zZXJ2bGV0L0JlYW5VdGlsLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2VydmxldC9CZWFuVXRpbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2YWRhNWUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2VydmxldC9CZWFuVXRpbC5qYXZhCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2VydmxldDsKKworaW1wb3J0IGphdmF4LnNlcnZsZXQuU2VydmxldENvbnRleHQ7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5yZW1vdGUucmVkNS5TY29wZUFwcGxpY2F0aW9uQWRhcHRlcjsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLndlYi5jb250ZXh0LnN1cHBvcnQuV2ViQXBwbGljYXRpb25Db250ZXh0VXRpbHM7CisKK3B1YmxpYyBjbGFzcyBCZWFuVXRpbCB7CisJcHVibGljIDxUPiBUIGdldEJlYW4oQ2xhc3M8VD4gYmVhbkNsYXNzLCBTZXJ2bGV0Q29udGV4dCBjdHgpIHRocm93cyBTZXJ2ZXJOb3RJbml0aWFsaXplZEV4Y2VwdGlvbiB7CisJCWlmIChTY29wZUFwcGxpY2F0aW9uQWRhcHRlci5pbml0Q29tcGxldGUpIHsKKwkJCXJldHVybiBXZWJBcHBsaWNhdGlvbkNvbnRleHRVdGlscy5nZXRXZWJBcHBsaWNhdGlvbkNvbnRleHQoY3R4KS5nZXRCZWFuKGJlYW5DbGFzcyk7CisJCX0gZWxzZSB7CisJCQl0aHJvdyBuZXcgU2VydmVyTm90SW5pdGlhbGl6ZWRFeGNlcHRpb24oIlNlcnZlciBub3QgeWV0IGluaXRpYWxpemVkLCByZXRyeSBpbiBjb3VwbGUgb2Ygc2Vjb25kcyIpOworCQl9CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NlcnZsZXQvU2VydmVyTm90SW5pdGlhbGl6ZWRFeGNlcHRpb24uamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zZXJ2bGV0L1NlcnZlck5vdEluaXRpYWxpemVkRXhjZXB0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWM1ZDA1OQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zZXJ2bGV0L1NlcnZlck5vdEluaXRpYWxpemVkRXhjZXB0aW9uLmphdmEKQEAgLTAsMCArMSwyNyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5zZXJ2bGV0OworCitwdWJsaWMgY2xhc3MgU2VydmVyTm90SW5pdGlhbGl6ZWRFeGNlcHRpb24gZXh0ZW5kcyBFeGNlcHRpb24geworCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IC03NzcxOTA5OTI0NzUxMjQ5MzIxTDsKKwkKKwlwdWJsaWMgU2VydmVyTm90SW5pdGlhbGl6ZWRFeGNlcHRpb24oU3RyaW5nIG1zZykgeworCQlzdXBlcihtc2cpOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zZXJ2bGV0L291dHB1dGhhbmRsZXIvQWJzdHJhY3RVcGxvYWRDb250cm9sbGVyLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2VydmxldC9vdXRwdXRoYW5kbGVyL0Fic3RyYWN0VXBsb2FkQ29udHJvbGxlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0ZDE2OWEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2VydmxldC9vdXRwdXRoYW5kbGVyL0Fic3RyYWN0VXBsb2FkQ29udHJvbGxlci5qYXZhCkBAIC0wLDAgKzEsMTA1IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnNlcnZsZXQub3V0cHV0aGFuZGxlcjsKKworaW1wb3J0IGphdmF4LnNlcnZsZXQuU2VydmxldEV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0OworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuQXV0aExldmVsVXRpbDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLlNlc3Npb25kYXRhRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuZGFvLkNvbmZpZ3VyYXRpb25EYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLlVzZXJNYW5hZ2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLkltcG9ydEhlbHBlcjsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uQXV0b3dpcmVkOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsud2ViLm11bHRpcGFydC5NdWx0aXBhcnRGaWxlOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsud2ViLm11bHRpcGFydC5NdWx0aXBhcnRIdHRwU2VydmxldFJlcXVlc3Q7CisKK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBBYnN0cmFjdFVwbG9hZENvbnRyb2xsZXIgeworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoCisJCQlBYnN0cmFjdFVwbG9hZENvbnRyb2xsZXIuY2xhc3MsIE9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKwlAQXV0b3dpcmVkCisJcHJvdGVjdGVkIFNlc3Npb25kYXRhRGFvIHNlc3Npb25kYXRhRGFvOworCUBBdXRvd2lyZWQKKwlwcm90ZWN0ZWQgVXNlck1hbmFnZXIgdXNlck1hbmFnZXI7CisJQEF1dG93aXJlZAorCXByb3RlY3RlZCBBdXRoTGV2ZWxVdGlsIGF1dGhMZXZlbE1hbmFnZW1lbnQ7CisJQEF1dG93aXJlZAorCXByb3RlY3RlZCBDb25maWd1cmF0aW9uRGFvIGNvbmZpZ3VyYXRpb25EYW87CisJCisJcHJvdGVjdGVkIGNsYXNzIFVwbG9hZEluZm8geworCQlNdWx0aXBhcnRGaWxlIGZpbGU7CisJCUxvbmcgdXNlcklkOworCQlTdHJpbmcgc2lkOworCQlTdHJpbmcgcHVibGljU0lEOworCQlTdHJpbmcgZmlsZW5hbWU7CisJfQorCQorICAgIHByb3RlY3RlZCBVcGxvYWRJbmZvIHZhbGlkYXRlKEh0dHBTZXJ2bGV0UmVxdWVzdCByZXF1ZXN0LCBib29sZWFuIGFkbWluKSB0aHJvd3MgU2VydmxldEV4Y2VwdGlvbiB7CisgICAgCVVwbG9hZEluZm8gaW5mbyA9IG5ldyBVcGxvYWRJbmZvKCk7CisJCWxvZy5kZWJ1ZygiU3RhcnRpbmcgdmFsaWRhdGUiKTsKKwkJdHJ5IHsKKwkJCVN0cmluZyBzaWQgPSByZXF1ZXN0LmdldFBhcmFtZXRlcigic2lkIik7CisJCQlpZiAoc2lkID09IG51bGwpIHsKKwkJCQl0aHJvdyBuZXcgU2VydmxldEV4Y2VwdGlvbigiU0lEIE1pc3NpbmciKTsKKwkJCX0KKwkJCWluZm8uc2lkID0gc2lkOworCQkJbG9nLmRlYnVnKCJzaWQ6ICIgKyBzaWQpOworCisJCQlMb25nIHVzZXJJZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihzaWQpOworCQkJTG9uZyB1c2VyTGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJJZCk7CisJCQlsb2cuZGVidWcoInVzZXJJZCA9ICIgKyB1c2VySWQgKyAiLCB1c2VyTGV2ZWwgPSAiICsgdXNlckxldmVsKTsKKwkJCWluZm8udXNlcklkID0gdXNlcklkOworCisJCQlpZiAoKGFkbWluICYmICFhdXRoTGV2ZWxNYW5hZ2VtZW50LmNoZWNrQWRtaW5MZXZlbCh1c2VyTGV2ZWwpKQorCQkJCQl8fCAoIWFkbWluICYmIHVzZXJMZXZlbCA8PSAwKSkgeworCQkJCXRocm93IG5ldyBTZXJ2bGV0RXhjZXB0aW9uKCJJbnN1ZmZpY2llbnQgcGVybWlzc2lvbnMgIgorCQkJCQkJKyB1c2VyTGV2ZWwpOworCQkJfQorCisJCQlTdHJpbmcgcHVibGljU0lEID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXIoInB1YmxpY1NJRCIpOworCQkJaWYgKHB1YmxpY1NJRCA9PSBudWxsKSB7CisJCQkJLy8gQWx3YXlzIGFzayBmb3IgUHVibGljIFNJRAorCQkJCXRocm93IG5ldyBTZXJ2bGV0RXhjZXB0aW9uKCJNaXNzaW5nIHB1YmxpY1NJRCIpOworCQkJfQorCQkJbG9nLmRlYnVnKCJwdWJsaWNTSUQ6ICIgKyBwdWJsaWNTSUQpOworCQkJaW5mby5wdWJsaWNTSUQ9IHB1YmxpY1NJRDsKKworCQkJTXVsdGlwYXJ0SHR0cFNlcnZsZXRSZXF1ZXN0IG11bHRpcGFydFJlcXVlc3QgPSAoTXVsdGlwYXJ0SHR0cFNlcnZsZXRSZXF1ZXN0KXJlcXVlc3Q7CisJCQlNdWx0aXBhcnRGaWxlIG11bHRpcGFydEZpbGUgPSBtdWx0aXBhcnRSZXF1ZXN0LmdldEZpbGUoIkZpbGVkYXRhIik7CisJCQkvL0ZJWE1FIGVuY29kaW5nIEhBQ0sKKwkJCWluZm8uZmlsZW5hbWUgPSBuZXcgU3RyaW5nIChtdWx0aXBhcnRGaWxlLmdldE9yaWdpbmFsRmlsZW5hbWUoKS5nZXRCeXRlcyAoImlzby04ODU5LTEiKSwgIlVURi04Iik7CisJCQlsb25nIGZpbGVTaXplID0gbXVsdGlwYXJ0RmlsZS5nZXRTaXplKCk7CisJCQlsb25nIG1heFNpemUgPSBJbXBvcnRIZWxwZXIuZ2V0TWF4VXBsb2FkU2l6ZShjb25maWd1cmF0aW9uRGFvKTsKKwkJCWxvZy5kZWJ1ZygidXBsb2FkaW5nICIgKyBmaWxlU2l6ZSArICIgYnl0ZXMiKTsKKwkJCWlmIChmaWxlU2l6ZSA+IG1heFNpemUpIHsKKwkJCQl0aHJvdyBuZXcgU2VydmxldEV4Y2VwdGlvbigiTWF4aW11bSB1cGxvYWQgc2l6ZTogIiArIG1heFNpemUgKyAiIGV4Y2VlZGVkOiAiICsgZmlsZVNpemUpOworCQkJfQorCQkJaW5mby5maWxlID0gbXVsdGlwYXJ0RmlsZTsKKwkJfSBjYXRjaCAoU2VydmxldEV4Y2VwdGlvbiBlKSB7CisJCQl0aHJvdyBlOworCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJbG9nLmVycm9yKCJFeGNlcHRpb24gZHVyaW5nIHVwbG9hZDogIiwgZSk7CisJCQl0aHJvdyBuZXcgU2VydmxldEV4Y2VwdGlvbihlKTsKKwkJfQorCQlyZXR1cm4gaW5mbzsKKyAgICB9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2VydmxldC9vdXRwdXRoYW5kbGVyL0FjdGl2YXRlVXNlci5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NlcnZsZXQvb3V0cHV0aGFuZGxlci9BY3RpdmF0ZVVzZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZjMwNGUxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NlcnZsZXQvb3V0cHV0aGFuZGxlci9BY3RpdmF0ZVVzZXIuamF2YQpAQCAtMCwwICsxLDE0MiBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5zZXJ2bGV0Lm91dHB1dGhhbmRsZXI7CisKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKKworaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3Q7CitpbXBvcnQgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVzcG9uc2U7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5GaWVsZE1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5kYW8uQ29uZmlndXJhdGlvbkRhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuVXNlck1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMubGFuZy5GaWVsZGxhbmd1YWdlc3ZhbHVlczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlVzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2VydmxldC5CYXNlVmVsb2NpdHlWaWV3U2VydmxldDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5zZXJ2bGV0LlNlcnZlck5vdEluaXRpYWxpemVkRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUudmVsb2NpdHkuVGVtcGxhdGU7CitpbXBvcnQgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkNvbnRleHQ7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworCitwdWJsaWMgY2xhc3MgQWN0aXZhdGVVc2VyIGV4dGVuZHMgQmFzZVZlbG9jaXR5Vmlld1NlcnZsZXQgeworCQorCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IC04ODkyNzI5MDQ3OTIxNzk2MTcwTDsKKwkKKwlwcml2YXRlIHN0YXRpYyBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKEFjdGl2YXRlVXNlci5jbGFzcywKKwkJCU9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKworCUBPdmVycmlkZQorCXB1YmxpYyBUZW1wbGF0ZSBoYW5kbGVSZXF1ZXN0KEh0dHBTZXJ2bGV0UmVxdWVzdCBodHRwU2VydmxldFJlcXVlc3QsCisJCQlIdHRwU2VydmxldFJlc3BvbnNlIGh0dHBTZXJ2bGV0UmVzcG9uc2UsIENvbnRleHQgY3R4KSB7CisKKwkJdHJ5IHsKKwkJCVN0cmluZyBoYXNoID0gaHR0cFNlcnZsZXRSZXF1ZXN0LmdldFBhcmFtZXRlcigidSIpOworCQkJU3RyaW5nIGxvZ2luVVJMID0gT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RQYXRoOworCisJCQlMb25nIGRlZmF1bHRfbGFuZ19pZCA9IGdldEJlYW4oQ29uZmlndXJhdGlvbkRhby5jbGFzcykKKwkJCQkJLmdldENvbmZWYWx1ZSgiZGVmYXVsdF9sYW5nX2lkIiwgTG9uZy5jbGFzcywgIjEiKTsKKwkJCWN0eC5wdXQoIkFQUF9OQU1FIiwgZ2V0QmVhbihDb25maWd1cmF0aW9uRGFvLmNsYXNzKS5nZXRBcHBOYW1lKCkpOworCQkJaWYgKGhhc2ggPT0gbnVsbCkgeworCQkJCS8vIE5vIGhhc2gKKwkJCQlGaWVsZGxhbmd1YWdlc3ZhbHVlcyBsYWJlbGlkNjY5ID0gZ2V0QmVhbihGaWVsZE1hbmFnZXIuY2xhc3MpCisJCQkJCQkuZ2V0RmllbGRCeUlkQW5kTGFuZ3VhZ2UobmV3IExvbmcoNjY5KSwgZGVmYXVsdF9sYW5nX2lkKTsKKwkJCQlGaWVsZGxhbmd1YWdlc3ZhbHVlcyBsYWJlbGlkNjcyID0gZ2V0QmVhbihGaWVsZE1hbmFnZXIuY2xhc3MpCisJCQkJCQkuZ2V0RmllbGRCeUlkQW5kTGFuZ3VhZ2UobmV3IExvbmcoNjcyKSwgZGVmYXVsdF9sYW5nX2lkKTsKKworCQkJCWN0eC5wdXQoIm1lc3NhZ2UiLCBsYWJlbGlkNjY5LmdldFZhbHVlKCkpOworCQkJCWN0eC5wdXQoImxpbmsiLAorCQkJCQkJIjxhIGhyZWY9JyIgKyBsb2dpblVSTCArICInPiIgKyBsYWJlbGlkNjcyLmdldFZhbHVlKCkKKwkJCQkJCQkJKyAiPC9hPiIpOworCQkJCXJldHVybiBnZXRWZWxvY2l0eVZpZXcoKS5nZXRWZWxvY2l0eUVuZ2luZSgpLmdldFRlbXBsYXRlKAorCQkJCQkJImFjdGl2YXRpb25fdGVtcGxhdGUudm0iKTsKKwkJCX0KKwkJCS8vCisJCQlVc2VyIHVzZXIgPSBnZXRCZWFuKFVzZXJNYW5hZ2VyLmNsYXNzKS5nZXRVc2VyQnlBY3RpdmF0aW9uSGFzaChoYXNoKTsKKworCQkJaWYgKHVzZXIgPT0gbnVsbCkgeworCQkJCS8vIE5vIFVzZXIgRm91bmQgd2l0aCB0aGlzIEhhc2gKKwkJCQlGaWVsZGxhbmd1YWdlc3ZhbHVlcyBsYWJlbGlkNjY5ID0gZ2V0QmVhbihGaWVsZE1hbmFnZXIuY2xhc3MpCisJCQkJCQkuZ2V0RmllbGRCeUlkQW5kTGFuZ3VhZ2UobmV3IExvbmcoNjY5KSwgZGVmYXVsdF9sYW5nX2lkKTsKKwkJCQlGaWVsZGxhbmd1YWdlc3ZhbHVlcyBsYWJlbGlkNjcyID0gZ2V0QmVhbihGaWVsZE1hbmFnZXIuY2xhc3MpCisJCQkJCQkuZ2V0RmllbGRCeUlkQW5kTGFuZ3VhZ2UobmV3IExvbmcoNjcyKSwgZGVmYXVsdF9sYW5nX2lkKTsKKworCQkJCWN0eC5wdXQoIm1lc3NhZ2UiLCBsYWJlbGlkNjY5LmdldFZhbHVlKCkpOworCQkJCWN0eC5wdXQoImxpbmsiLAorCQkJCQkJIjxhIGhyZWY9JyIgKyBsb2dpblVSTCArICInPiIgKyBsYWJlbGlkNjcyLmdldFZhbHVlKCkKKwkJCQkJCQkJKyAiPC9hPiIpOworCQkJCXJldHVybiBnZXRWZWxvY2l0eVZpZXcoKS5nZXRWZWxvY2l0eUVuZ2luZSgpLmdldFRlbXBsYXRlKAorCQkJCQkJImFjdGl2YXRpb25fdGVtcGxhdGUudm0iKTsKKworCQkJfSBlbHNlIGlmICh1c2VyLmdldFN0YXR1cygpID09IDEpIHsKKwkJCQkvLyBhbHJlYWR5IGFjdGl2YXRlZAorCQkJCUZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGxhYmVsaWQ2NzAgPSBnZXRCZWFuKEZpZWxkTWFuYWdlci5jbGFzcykKKwkJCQkJCS5nZXRGaWVsZEJ5SWRBbmRMYW5ndWFnZShuZXcgTG9uZyg2NzApLCBkZWZhdWx0X2xhbmdfaWQpOworCQkJCUZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGxhYmVsaWQ2NzIgPSBnZXRCZWFuKEZpZWxkTWFuYWdlci5jbGFzcykKKwkJCQkJCS5nZXRGaWVsZEJ5SWRBbmRMYW5ndWFnZShuZXcgTG9uZyg2NzIpLCBkZWZhdWx0X2xhbmdfaWQpOworCisJCQkJY3R4LnB1dCgibWVzc2FnZSIsIGxhYmVsaWQ2NzAuZ2V0VmFsdWUoKSk7CisJCQkJY3R4LnB1dCgibGluayIsCisJCQkJCQkiPGEgaHJlZj0nIiArIGxvZ2luVVJMICsgIic+IiArIGxhYmVsaWQ2NzIuZ2V0VmFsdWUoKQorCQkJCQkJCQkrICI8L2E+Iik7CisJCQkJcmV0dXJuIGdldFZlbG9jaXR5VmlldygpLmdldFZlbG9jaXR5RW5naW5lKCkuZ2V0VGVtcGxhdGUoCisJCQkJCQkiYWN0aXZhdGlvbl90ZW1wbGF0ZS52bSIpOworCisJCQl9IGVsc2UgaWYgKHVzZXIuZ2V0U3RhdHVzKCkgPT0gMCkgeworCQkJCS8vIGFjdGl2YXRlCisJCQkJdXNlci5zZXRTdGF0dXMoMSk7CisJCQkJdXNlci5zZXRVcGRhdGV0aW1lKG5ldyBEYXRlKCkpOworCisJCQkJZ2V0QmVhbihVc2VyTWFuYWdlci5jbGFzcykudXBkYXRlVXNlcih1c2VyKTsKKworCQkJCUZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGxhYmVsaWQ2NzEgPSBnZXRCZWFuKEZpZWxkTWFuYWdlci5jbGFzcykKKwkJCQkJCS5nZXRGaWVsZEJ5SWRBbmRMYW5ndWFnZShuZXcgTG9uZyg2NzEpLCBkZWZhdWx0X2xhbmdfaWQpOworCQkJCUZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGxhYmVsaWQ2NzIgPSBnZXRCZWFuKEZpZWxkTWFuYWdlci5jbGFzcykKKwkJCQkJCS5nZXRGaWVsZEJ5SWRBbmRMYW5ndWFnZShuZXcgTG9uZyg2NzIpLCBkZWZhdWx0X2xhbmdfaWQpOworCisJCQkJY3R4LnB1dCgibWVzc2FnZSIsIGxhYmVsaWQ2NzEuZ2V0VmFsdWUoKSk7CisJCQkJY3R4LnB1dCgibGluayIsCisJCQkJCQkiPGEgaHJlZj0nIiArIGxvZ2luVVJMICsgIic+IiArIGxhYmVsaWQ2NzIuZ2V0VmFsdWUoKQorCQkJCQkJCQkrICI8L2E+Iik7CisJCQkJcmV0dXJuIGdldFZlbG9jaXR5VmlldygpLmdldFZlbG9jaXR5RW5naW5lKCkuZ2V0VGVtcGxhdGUoCisJCQkJCQkiYWN0aXZhdGlvbl90ZW1wbGF0ZS52bSIpOworCisJCQl9IGVsc2UgeworCQkJCS8vIHVua293biBTdGF0dXMKKwkJCQlGaWVsZGxhbmd1YWdlc3ZhbHVlcyBsYWJlbGlkNjcyID0gZ2V0QmVhbihGaWVsZE1hbmFnZXIuY2xhc3MpCisJCQkJCQkuZ2V0RmllbGRCeUlkQW5kTGFuZ3VhZ2UobmV3IExvbmcoNjcyKSwgZGVmYXVsdF9sYW5nX2lkKTsKKworCQkJCWN0eC5wdXQoIm1lc3NhZ2UiLCAiVW5rb3duIFN0YXR1cyIpOworCQkJCWN0eC5wdXQoImxpbmsiLAorCQkJCQkJIjxhIGhyZWY9JyIgKyBsb2dpblVSTCArICInPiIgKyBsYWJlbGlkNjcyLmdldFZhbHVlKCkKKwkJCQkJCQkJKyAiPC9hPiIpOworCQkJCXJldHVybiBnZXRWZWxvY2l0eVZpZXcoKS5nZXRWZWxvY2l0eUVuZ2luZSgpLmdldFRlbXBsYXRlKAorCQkJCQkJImFjdGl2YXRpb25fdGVtcGxhdGUudm0iKTsKKworCQkJfQorCisJCX0gY2F0Y2ggKFNlcnZlck5vdEluaXRpYWxpemVkRXhjZXB0aW9uIGVycikgeworCQkJcmV0dXJuIGdldEJvb3RpbmcoKTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbQWN0aXZhdGVVc2VyXSIsIGVycik7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NlcnZsZXQvb3V0cHV0aGFuZGxlci9CYWNrdXBFeHBvcnQuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zZXJ2bGV0L291dHB1dGhhbmRsZXIvQmFja3VwRXhwb3J0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWZhMTZjNAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zZXJ2bGV0L291dHB1dGhhbmRsZXIvQmFja3VwRXhwb3J0LmphdmEKQEAgLTAsMCArMSw1NjUgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2VydmxldC5vdXRwdXRoYW5kbGVyOworCitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuaW8uRmlsZU91dHB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uT3V0cHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uT3V0cHV0U3RyZWFtV3JpdGVyOworaW1wb3J0IGphdmEubmV0LlVSSTsKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuemlwLlppcEVudHJ5OworaW1wb3J0IGphdmEudXRpbC56aXAuWmlwT3V0cHV0U3RyZWFtOworCitpbXBvcnQgamF2YXguc2VydmxldC5TZXJ2bGV0Q29udGV4dDsKK2ltcG9ydCBqYXZheC5zZXJ2bGV0LlNlcnZsZXRFeGNlcHRpb247CitpbXBvcnQgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdDsKK2ltcG9ydCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXNwb25zZTsKKworaW1wb3J0IG9yZy5hcGFjaGUuY29tbW9ucy50cmFuc2FjdGlvbi51dGlsLkZpbGVIZWxwZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmJhY2t1cC5BcHBvaW50bWVudENhdGVnb3J5Q29udmVydGVyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmJhY2t1cC5BcHBvaW50bWVudENvbnZlcnRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5iYWNrdXAuQXBwb2ludG1lbnRSZW1pbmRlclR5cGVDb252ZXJ0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuYmFja3VwLkRhdGVDb252ZXJ0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuYmFja3VwLk9tVGltZVpvbmVDb252ZXJ0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuYmFja3VwLk9yZ2FuaXNhdGlvbkNvbnZlcnRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5iYWNrdXAuUG9sbFR5cGVDb252ZXJ0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuYmFja3VwLlJvb21Db252ZXJ0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuYmFja3VwLlJvb21UeXBlQ29udmVydGVyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmJhY2t1cC5TdGF0ZUNvbnZlcnRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5iYWNrdXAuVXNlckNvbnZlcnRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLkF1dGhMZXZlbFV0aWw7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5TZXNzaW9uZGF0YURhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLmRhby5Db25maWd1cmF0aW9uRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuZGFvLkxkYXBDb25maWdEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jYWxlbmRhci5kYW9zLkFwcG9pbnRtZW50RGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY2FsZW5kYXIuZGFvcy5NZWV0aW5nTWVtYmVyRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY29uZmVyZW5jZS5Qb2xsTWFuYWdlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNvbmZlcmVuY2UuUm9vbU1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5maWxlLmRhby5GaWxlRXhwbG9yZXJJdGVtRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuZmx2cmVjb3JkLkZsdlJlY29yZGluZ0RhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuT3JnYW5pc2F0aW9uTWFuYWdlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuVXNlck1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLmRhby5Qcml2YXRlTWVzc2FnZUZvbGRlckRhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuZGFvLlByaXZhdGVNZXNzYWdlc0RhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuZGFvLlVzZXJDb250YWN0c0RhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuZGFvLlVzZXJzRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLkNvbmZpZ3VyYXRpb247CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuT21UaW1lWm9uZTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5jYWxlbmRhci5BcHBvaW50bWVudDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5jYWxlbmRhci5BcHBvaW50bWVudENhdGVnb3J5OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmNhbGVuZGFyLkFwcG9pbnRtZW50UmVtaW5kZXJUeXBzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmRvbWFpbi5PcmdhbmlzYXRpb247CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuZmlsZXMuRmlsZUV4cGxvcmVySXRlbTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5mbHZyZWNvcmQuRmx2UmVjb3JkaW5nOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnBvbGwuUG9sbFR5cGU7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucG9sbC5Sb29tUG9sbDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tLlJvb207CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbS5Sb29tVHlwZTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlByaXZhdGVNZXNzYWdlOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuU3RhdGU7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlci5Vc2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLk9tRmlsZUhlbHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5tYXRoLkNhbGVuZGFyUGF0dGVybnM7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2ltcGxlZnJhbWV3b3JrLnhtbC5TZXJpYWxpemVyOworaW1wb3J0IG9yZy5zaW1wbGVmcmFtZXdvcmsueG1sLmNvbnZlcnQuUmVnaXN0cnk7CitpbXBvcnQgb3JnLnNpbXBsZWZyYW1ld29yay54bWwuY29udmVydC5SZWdpc3RyeVN0cmF0ZWd5OworaW1wb3J0IG9yZy5zaW1wbGVmcmFtZXdvcmsueG1sLmNvcmUuUGVyc2lzdGVyOworaW1wb3J0IG9yZy5zaW1wbGVmcmFtZXdvcmsueG1sLnN0cmF0ZWd5LlN0cmF0ZWd5OworaW1wb3J0IG9yZy5zaW1wbGVmcmFtZXdvcmsueG1sLnN0cmVhbS5Gb3JtYXQ7CitpbXBvcnQgb3JnLnNpbXBsZWZyYW1ld29yay54bWwuc3RyZWFtLk5vZGVCdWlsZGVyOworaW1wb3J0IG9yZy5zaW1wbGVmcmFtZXdvcmsueG1sLnN0cmVhbS5PdXRwdXROb2RlOworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uQXV0b3dpcmVkOworCisvKioKKyAqIAorICogQGF1dGhvciBzZWJhc3RpYW53YWduZXIKKyAqIAorICovCitwdWJsaWMgY2xhc3MgQmFja3VwRXhwb3J0IHsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoCisJCQlCYWNrdXBFeHBvcnQuY2xhc3MsIE9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQkFDS1VQX0NPTU1FTlQgPSAKKwkJCSIjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xuIgorCQkJKyAiVGhpcyBGaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5IHRoZSBCYWNrdXAgVG9vbCBcbiIKKwkJCSsgInlvdSBzaG91bGQgdXNlIHRoZSBCYWNrdXBQYW5lbCB0byBtb2RpZnkgb3IgY2hhbmdlIHRoaXMgZmlsZSBcbiIKKwkJCSsgInNlZSBodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvVXBncmFkZS5odG1sIGZvciBEZXRhaWxzIFxuIgorCQkJKyAiIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyNcbiI7CisKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBBcHBvaW50bWVudERhbyBhcHBvaW50bWVudERhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBTZXNzaW9uZGF0YURhbyBzZXNzaW9uZGF0YURhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBVc2VyTWFuYWdlciB1c2VyTWFuYWdlcjsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBPcmdhbmlzYXRpb25NYW5hZ2VyIG9yZ2FuaXNhdGlvbk1hbmFnZXI7CisJQEF1dG93aXJlZAorCXByaXZhdGUgUm9vbU1hbmFnZXIgcm9vbU1hbmFnZXI7CisJQEF1dG93aXJlZAorCXByaXZhdGUgRmlsZUV4cGxvcmVySXRlbURhbyBmaWxlRXhwbG9yZXJJdGVtRGFvOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEZsdlJlY29yZGluZ0RhbyBmbHZSZWNvcmRpbmdEYW87CisJQEF1dG93aXJlZAorCXByaXZhdGUgVXNlcnNEYW8gdXNlcnNEYW87CisJQEF1dG93aXJlZAorCXByaXZhdGUgTWVldGluZ01lbWJlckRhbyBtZWV0aW5nTWVtYmVyRGFvOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIExkYXBDb25maWdEYW8gbGRhcENvbmZpZ0RhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBQcml2YXRlTWVzc2FnZXNEYW8gcHJpdmF0ZU1lc3NhZ2VzRGFvOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFByaXZhdGVNZXNzYWdlRm9sZGVyRGFvIHByaXZhdGVNZXNzYWdlRm9sZGVyRGFvOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFVzZXJDb250YWN0c0RhbyB1c2VyQ29udGFjdHNEYW87CisJQEF1dG93aXJlZAorCXByaXZhdGUgQXV0aExldmVsVXRpbCBhdXRoTGV2ZWxVdGlsOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFBvbGxNYW5hZ2VyIHBvbGxNYW5hZ2VyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIENvbmZpZ3VyYXRpb25EYW8gY29uZmlndXJhdGlvbkRhbzsKKworCXB1YmxpYyB2b2lkIHBlcmZvcm1FeHBvcnQoRmlsZSBmaWxlUGF0aCwgRmlsZSBiYWNrdXBfZGlyLAorCQkJYm9vbGVhbiBpbmNsdWRlRmlsZXMpIHRocm93cyBFeGNlcHRpb24geworCisJCWlmICghYmFja3VwX2Rpci5leGlzdHMoKSkgeworCQkJYmFja3VwX2Rpci5ta2RpcnMoKTsKKwkJfQorCQlTZXJpYWxpemVyIHNpbXBsZVNlcmlhbGl6ZXIgPSBuZXcgUGVyc2lzdGVyKCk7CisJCQorCQkvKgorCQkgKiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMgQmFja3VwIE9yZ2FuaXphdGlvbnMKKwkJICovCisJCXdyaXRlTGlzdChzaW1wbGVTZXJpYWxpemVyLCBiYWNrdXBfZGlyLCAib3JnYW5pemF0aW9ucy54bWwiLAorCQkJCSJvcmdhbmlzYXRpb25zIiwgb3JnYW5pc2F0aW9uTWFuYWdlci5nZXRPcmdhbmlzYXRpb25zKDNMKSk7CisKKwkJLyoKKwkJICogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIEJhY2t1cCBVc2VycworCQkgKi8KKwkJZXhwb3J0VXNlcnMoYmFja3VwX2RpciwgdXNlcnNEYW8uZ2V0QWxsVXNlcnNEZWxldGVkKCkpOworCisJCS8qCisJCSAqICMjIyMjIyMjIyMjIyMjIyMjIyMjIyBCYWNrdXAgUm9vbQorCQkgKi8KKwkJeworCQkJUmVnaXN0cnkgcmVnaXN0cnkgPSBuZXcgUmVnaXN0cnkoKTsKKwkJCVN0cmF0ZWd5IHN0cmF0ZWd5ID0gbmV3IFJlZ2lzdHJ5U3RyYXRlZ3kocmVnaXN0cnkpOworCQkJU2VyaWFsaXplciBzZXJpYWxpemVyID0gbmV3IFBlcnNpc3RlcihzdHJhdGVneSk7CisJCisJCQlyZWdpc3RyeS5iaW5kKFVzZXIuY2xhc3MsIFVzZXJDb252ZXJ0ZXIuY2xhc3MpOworCQkJcmVnaXN0cnkuYmluZChSb29tVHlwZS5jbGFzcywgUm9vbVR5cGVDb252ZXJ0ZXIuY2xhc3MpOworCQkJCisJCQl3cml0ZUxpc3Qoc2VyaWFsaXplciwgYmFja3VwX2RpciwgInJvb21zLnhtbCIsCisJCQkJCSJyb29tcyIsIHJvb21NYW5hZ2VyLmdldEJhY2t1cFJvb21zKCkpOworCQl9CisKKwkJLyoKKwkJICogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIEJhY2t1cCBSb29tIE9yZ2FuaXphdGlvbnMKKwkJICovCisJCXsKKwkJCVJlZ2lzdHJ5IHJlZ2lzdHJ5ID0gbmV3IFJlZ2lzdHJ5KCk7CisJCQlTdHJhdGVneSBzdHJhdGVneSA9IG5ldyBSZWdpc3RyeVN0cmF0ZWd5KHJlZ2lzdHJ5KTsKKwkJCVNlcmlhbGl6ZXIgc2VyaWFsaXplciA9IG5ldyBQZXJzaXN0ZXIoc3RyYXRlZ3kpOworCQorCQkJcmVnaXN0cnkuYmluZChPcmdhbmlzYXRpb24uY2xhc3MsIE9yZ2FuaXNhdGlvbkNvbnZlcnRlci5jbGFzcyk7CisJCQlyZWdpc3RyeS5iaW5kKFJvb20uY2xhc3MsIFJvb21Db252ZXJ0ZXIuY2xhc3MpOworCQkJCisJCQl3cml0ZUxpc3Qoc2VyaWFsaXplciwgYmFja3VwX2RpciwgInJvb21zX29yZ2FuaXNhdGlvbi54bWwiLAorCQkJCQkicm9vbV9vcmdhbmlzYXRpb25zIiwgcm9vbU1hbmFnZXIuZ2V0Um9vbXNPcmdhbmlzYXRpb25zKCkpOworCQl9CisKKwkJLyoKKwkJICogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIEJhY2t1cCBBcHBvaW50bWVudHMKKwkJICovCisJCXsKKwkJCUxpc3Q8QXBwb2ludG1lbnQ+IGxpc3QgPSBhcHBvaW50bWVudERhby5nZXRBcHBvaW50bWVudHMoKTsKKwkJCVJlZ2lzdHJ5IHJlZ2lzdHJ5ID0gbmV3IFJlZ2lzdHJ5KCk7CisJCQlTdHJhdGVneSBzdHJhdGVneSA9IG5ldyBSZWdpc3RyeVN0cmF0ZWd5KHJlZ2lzdHJ5KTsKKwkJCVNlcmlhbGl6ZXIgc2VyaWFsaXplciA9IG5ldyBQZXJzaXN0ZXIoc3RyYXRlZ3kpOworCQorCQkJcmVnaXN0cnkuYmluZChBcHBvaW50bWVudENhdGVnb3J5LmNsYXNzLCBBcHBvaW50bWVudENhdGVnb3J5Q29udmVydGVyLmNsYXNzKTsKKwkJCXJlZ2lzdHJ5LmJpbmQoVXNlci5jbGFzcywgVXNlckNvbnZlcnRlci5jbGFzcyk7CisJCQlyZWdpc3RyeS5iaW5kKEFwcG9pbnRtZW50UmVtaW5kZXJUeXBzLmNsYXNzLCBBcHBvaW50bWVudFJlbWluZGVyVHlwZUNvbnZlcnRlci5jbGFzcyk7CisJCQlyZWdpc3RyeS5iaW5kKFJvb20uY2xhc3MsIFJvb21Db252ZXJ0ZXIuY2xhc3MpOworCQkJaWYgKGxpc3QgIT0gbnVsbCAmJiBsaXN0LnNpemUoKSA+IDApIHsKKwkJCQlyZWdpc3RyeS5iaW5kKGxpc3QuZ2V0KDApLmdldEFwcG9pbnRtZW50U3RhcnR0aW1lKCkuZ2V0Q2xhc3MoKSwgRGF0ZUNvbnZlcnRlci5jbGFzcyk7CisJCQl9CisJCQkKKwkJCXdyaXRlTGlzdChzZXJpYWxpemVyLCBiYWNrdXBfZGlyLCAiYXBwb2ludGVtZW50cy54bWwiLCAiYXBwb2ludG1lbnRzIiwgbGlzdCk7CisJCX0KKworCQkvKgorCQkgKiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMgQmFja3VwIE1lZXRpbmcgTWVtYmVycworCQkgKi8KKwkJeworCQkJUmVnaXN0cnkgcmVnaXN0cnkgPSBuZXcgUmVnaXN0cnkoKTsKKwkJCVN0cmF0ZWd5IHN0cmF0ZWd5ID0gbmV3IFJlZ2lzdHJ5U3RyYXRlZ3kocmVnaXN0cnkpOworCQkJU2VyaWFsaXplciBzZXJpYWxpemVyID0gbmV3IFBlcnNpc3RlcihzdHJhdGVneSk7CisJCisJCQlyZWdpc3RyeS5iaW5kKFVzZXIuY2xhc3MsIFVzZXJDb252ZXJ0ZXIuY2xhc3MpOworCQkJcmVnaXN0cnkuYmluZChBcHBvaW50bWVudC5jbGFzcywgQXBwb2ludG1lbnRDb252ZXJ0ZXIuY2xhc3MpOworCQkJCisJCQl3cml0ZUxpc3Qoc2VyaWFsaXplciwgYmFja3VwX2RpciwgIm1lZXRpbmdtZW1iZXJzLnhtbCIsCisJCQkJCSJtZWV0aW5nbWVtYmVycyIsIG1lZXRpbmdNZW1iZXJEYW8uZ2V0TWVldGluZ01lbWJlcnMoKSk7CisJCX0KKworCQkvKgorCQkgKiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMgTERBUCBDb25maWdzCisJCSAqLworCQl3cml0ZUxpc3Qoc2ltcGxlU2VyaWFsaXplciwgYmFja3VwX2RpciwgImxkYXBjb25maWdzLnhtbCIsCisJCQkJImxkYXBjb25maWdzIiwgbGRhcENvbmZpZ0Rhby5nZXRMZGFwQ29uZmlncygpKTsKKworCQkvKgorCQkgKiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMgUHJpdmF0ZSBNZXNzYWdlcworCQkgKi8KKwkJeworCQkJTGlzdDxQcml2YXRlTWVzc2FnZT4gbGlzdCA9IHByaXZhdGVNZXNzYWdlc0Rhby5nZXRQcml2YXRlTWVzc2FnZXMoKTsKKwkJCVJlZ2lzdHJ5IHJlZ2lzdHJ5ID0gbmV3IFJlZ2lzdHJ5KCk7CisJCQlTdHJhdGVneSBzdHJhdGVneSA9IG5ldyBSZWdpc3RyeVN0cmF0ZWd5KHJlZ2lzdHJ5KTsKKwkJCVNlcmlhbGl6ZXIgc2VyaWFsaXplciA9IG5ldyBQZXJzaXN0ZXIoc3RyYXRlZ3kpOworCQorCQkJcmVnaXN0cnkuYmluZChVc2VyLmNsYXNzLCBVc2VyQ29udmVydGVyLmNsYXNzKTsKKwkJCXJlZ2lzdHJ5LmJpbmQoUm9vbS5jbGFzcywgUm9vbUNvbnZlcnRlci5jbGFzcyk7CisJCQlpZiAobGlzdCAhPSBudWxsICYmIGxpc3Quc2l6ZSgpID4gMCkgeworCQkJCXJlZ2lzdHJ5LmJpbmQobGlzdC5nZXQoMCkuZ2V0SW5zZXJ0ZWQoKS5nZXRDbGFzcygpLCBEYXRlQ29udmVydGVyLmNsYXNzKTsKKwkJCX0KKwkJCQorCQkJd3JpdGVMaXN0KHNlcmlhbGl6ZXIsIGJhY2t1cF9kaXIsICJwcml2YXRlTWVzc2FnZXMueG1sIiwKKwkJCQkJInByaXZhdGVtZXNzYWdlcyIsIGxpc3QpOworCQl9CisKKwkJLyoKKwkJICogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIFByaXZhdGUgTWVzc2FnZSBGb2xkZXJzCisJCSAqLworCQl3cml0ZUxpc3Qoc2ltcGxlU2VyaWFsaXplciwgYmFja3VwX2RpciwgInByaXZhdGVNZXNzYWdlRm9sZGVyLnhtbCIsCisJCQkJInByaXZhdGVtZXNzYWdlZm9sZGVycyIsIHByaXZhdGVNZXNzYWdlRm9sZGVyRGFvLmdldFByaXZhdGVNZXNzYWdlRm9sZGVycygpKTsKKworCQkvKgorCQkgKiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMgVXNlciBDb250YWN0cworCQkgKi8KKwkJeworCQkJUmVnaXN0cnkgcmVnaXN0cnkgPSBuZXcgUmVnaXN0cnkoKTsKKwkJCVN0cmF0ZWd5IHN0cmF0ZWd5ID0gbmV3IFJlZ2lzdHJ5U3RyYXRlZ3kocmVnaXN0cnkpOworCQkJU2VyaWFsaXplciBzZXJpYWxpemVyID0gbmV3IFBlcnNpc3RlcihzdHJhdGVneSk7CisJCisJCQlyZWdpc3RyeS5iaW5kKFVzZXIuY2xhc3MsIFVzZXJDb252ZXJ0ZXIuY2xhc3MpOworCQkJCisJCQl3cml0ZUxpc3Qoc2VyaWFsaXplciwgYmFja3VwX2RpciwgInVzZXJDb250YWN0cy54bWwiLAorCQkJCQkidXNlcmNvbnRhY3RzIiwgdXNlckNvbnRhY3RzRGFvLmdldFVzZXJDb250YWN0cygpKTsKKwkJfQorCisJCS8qCisJCSAqICMjIyMjIyMjIyMjIyMjIyMjIyMjIyBGaWxlLUV4cGxvcmVyCisJCSAqLworCQl7CisJCQlMaXN0PEZpbGVFeHBsb3Jlckl0ZW0+IGxpc3QgPSBmaWxlRXhwbG9yZXJJdGVtRGFvLmdldEZpbGVFeHBsb3Jlckl0ZW1zKCk7CisJCQlSZWdpc3RyeSByZWdpc3RyeSA9IG5ldyBSZWdpc3RyeSgpOworCQkJU3RyYXRlZ3kgc3RyYXRlZ3kgPSBuZXcgUmVnaXN0cnlTdHJhdGVneShyZWdpc3RyeSk7CisJCQlTZXJpYWxpemVyIHNlcmlhbGl6ZXIgPSBuZXcgUGVyc2lzdGVyKHN0cmF0ZWd5KTsKKwkKKwkJCWlmIChsaXN0ICE9IG51bGwgJiYgbGlzdC5zaXplKCkgPiAwKSB7CisJCQkJcmVnaXN0cnkuYmluZChsaXN0LmdldCgwKS5nZXRJbnNlcnRlZCgpLmdldENsYXNzKCksIERhdGVDb252ZXJ0ZXIuY2xhc3MpOworCQkJfQorCQkJCisJCQl3cml0ZUxpc3Qoc2VyaWFsaXplciwgYmFja3VwX2RpciwgImZpbGVFeHBsb3Jlckl0ZW1zLnhtbCIsCisJCQkJCSJmaWxlRXhwbG9yZXJJdGVtcyIsIGxpc3QpOworCQl9CisKKwkJLyoKKwkJICogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIFJlY29yZGluZ3MKKwkJICovCisJCXsKKwkJCUxpc3Q8Rmx2UmVjb3JkaW5nPiBsaXN0ID0gZmx2UmVjb3JkaW5nRGFvLmdldEFsbEZsdlJlY29yZGluZ3MoKTsKKwkJCVJlZ2lzdHJ5IHJlZ2lzdHJ5ID0gbmV3IFJlZ2lzdHJ5KCk7CisJCQlTdHJhdGVneSBzdHJhdGVneSA9IG5ldyBSZWdpc3RyeVN0cmF0ZWd5KHJlZ2lzdHJ5KTsKKwkJCVNlcmlhbGl6ZXIgc2VyaWFsaXplciA9IG5ldyBQZXJzaXN0ZXIoc3RyYXRlZ3kpOworCQorCQkJaWYgKGxpc3QgIT0gbnVsbCAmJiBsaXN0LnNpemUoKSA+IDApIHsKKwkJCQlyZWdpc3RyeS5iaW5kKGxpc3QuZ2V0KDApLmdldEluc2VydGVkKCkuZ2V0Q2xhc3MoKSwgRGF0ZUNvbnZlcnRlci5jbGFzcyk7CisJCQl9CisJCQkKKwkJCXdyaXRlTGlzdChzZXJpYWxpemVyLCBiYWNrdXBfZGlyLCAiZmx2UmVjb3JkaW5ncy54bWwiLAorCQkJCQkiZmx2cmVjb3JkaW5ncyIsIGxpc3QpOworCQl9CisKKwkJLyoKKwkJICogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIFBvbGxzCisJCSAqLworCQl7CisJCQlMaXN0PFJvb21Qb2xsPiBsaXN0ID0gcG9sbE1hbmFnZXIuZ2V0UG9sbExpc3RCYWNrdXAoKTsKKwkJCVJlZ2lzdHJ5IHJlZ2lzdHJ5ID0gbmV3IFJlZ2lzdHJ5KCk7CisJCQlTdHJhdGVneSBzdHJhdGVneSA9IG5ldyBSZWdpc3RyeVN0cmF0ZWd5KHJlZ2lzdHJ5KTsKKwkJCVNlcmlhbGl6ZXIgc2VyaWFsaXplciA9IG5ldyBQZXJzaXN0ZXIoc3RyYXRlZ3kpOworCQorCQkJcmVnaXN0cnkuYmluZChVc2VyLmNsYXNzLCBVc2VyQ29udmVydGVyLmNsYXNzKTsKKwkJCXJlZ2lzdHJ5LmJpbmQoUm9vbS5jbGFzcywgUm9vbUNvbnZlcnRlci5jbGFzcyk7CisJCQlyZWdpc3RyeS5iaW5kKFBvbGxUeXBlLmNsYXNzLCBQb2xsVHlwZUNvbnZlcnRlci5jbGFzcyk7CisJCQlpZiAobGlzdCAhPSBudWxsICYmIGxpc3Quc2l6ZSgpID4gMCkgeworCQkJCXJlZ2lzdHJ5LmJpbmQobGlzdC5nZXQoMCkuZ2V0Q3JlYXRlZCgpLmdldENsYXNzKCksIERhdGVDb252ZXJ0ZXIuY2xhc3MpOworCQkJfQorCQkJCisJCQl3cml0ZUxpc3Qoc2VyaWFsaXplciwgYmFja3VwX2RpciwgInJvb21wb2xscy54bWwiLCAicm9vbXBvbGxzIiwgbGlzdCk7CisJCX0KKworCQkvKgorCQkgKiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMgQ29uZmlnCisJCSAqLworCQl7CisJCQlMaXN0PENvbmZpZ3VyYXRpb24+IGxpc3QgPSBjb25maWd1cmF0aW9uRGFvLmdldENvbmZpZ3VyYXRpb25zKAorCQkJCQkwLCBJbnRlZ2VyLk1BWF9WQUxVRSwgImMuY29uZmlndXJhdGlvbl9pZCIsIHRydWUpOworCQkJUmVnaXN0cnkgcmVnaXN0cnkgPSBuZXcgUmVnaXN0cnkoKTsKKwkJCXJlZ2lzdHJ5LmJpbmQoT21UaW1lWm9uZS5jbGFzcywgT21UaW1lWm9uZUNvbnZlcnRlci5jbGFzcyk7CisJCQlyZWdpc3RyeS5iaW5kKFN0YXRlLmNsYXNzLCBTdGF0ZUNvbnZlcnRlci5jbGFzcyk7CisJCQlyZWdpc3RyeS5iaW5kKFVzZXIuY2xhc3MsIFVzZXJDb252ZXJ0ZXIuY2xhc3MpOworCQkJU3RyYXRlZ3kgc3RyYXRlZ3kgPSBuZXcgUmVnaXN0cnlTdHJhdGVneShyZWdpc3RyeSk7CisJCQlTZXJpYWxpemVyIHNlcmlhbGl6ZXIgPSBuZXcgUGVyc2lzdGVyKHN0cmF0ZWd5KTsKKwkKKwkJCWlmIChsaXN0ICE9IG51bGwgJiYgbGlzdC5zaXplKCkgPiAwKSB7CisJCQkJcmVnaXN0cnkuYmluZChsaXN0LmdldCgwKS5nZXRTdGFydHRpbWUoKS5nZXRDbGFzcygpLCBEYXRlQ29udmVydGVyLmNsYXNzKTsKKwkJCX0KKwkJCQorCQkJd3JpdGVMaXN0KHNlcmlhbGl6ZXIsIGJhY2t1cF9kaXIsICJjb25maWdzLnhtbCIsICJjb25maWdzIiwgbGlzdCk7CisJCX0KKwkJCisJCWlmIChpbmNsdWRlRmlsZXMpIHsKKwkJCS8qCisJCQkgKiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMgQmFja3VwIFJvb20gRmlsZXMKKwkJCSAqLworCQkJRmlsZSB0YXJnZXRSb290RGlyID0gbmV3IEZpbGUoYmFja3VwX2RpciwgInJvb21GaWxlcyIpOworCisJCQlpZiAoIXRhcmdldFJvb3REaXIuZXhpc3RzKCkpIHsKKwkJCQl0YXJnZXRSb290RGlyLm1rZGlyKCk7CisJCQl9CisKKwkJCUZpbGUgc291cmNlRGlyID0gT21GaWxlSGVscGVyLmdldFVwbG9hZERpcigpOworCisJCQlGaWxlW10gZmlsZXMgPSBzb3VyY2VEaXIubGlzdEZpbGVzKCk7CisJCQlmb3IgKEZpbGUgZmlsZSA6IGZpbGVzKSB7CisJCQkJaWYgKGZpbGUuaXNEaXJlY3RvcnkoKSkgeworCQkJCQlpZiAoIWZpbGUuZ2V0TmFtZSgpLmVxdWFscygiYmFja3VwIikKKwkJCQkJCQkmJiAhZmlsZS5nZXROYW1lKCkuZXF1YWxzKCJpbXBvcnQiKSkgeworCisJCQkJCQlsb2cuZGVidWcoIiMjIyAiICsgZmlsZS5nZXROYW1lKCkpOworCisJCQkJCQlGaWxlSGVscGVyLmNvcHlSZWMoZmlsZSwgbmV3IEZpbGUodGFyZ2V0Um9vdERpciwgZmlsZS5nZXROYW1lKCkpKTsKKwkJCQkJfQorCQkJCX0KKwkJCX0KKworCQkJLyoKKwkJCSAqICMjIyMjIyMjIyMjIyMjIyMjIyMjIyBCYWNrdXAgUmVjb3JkaW5nIEZpbGVzCisJCQkgKi8KKwkJCUZpbGUgdGFyZ2V0RGlyUmVjID0gbmV3IEZpbGUoYmFja3VwX2RpciwgInJlY29yZGluZ0ZpbGVzIik7CisKKwkJCWlmICghdGFyZ2V0RGlyUmVjLmV4aXN0cygpKSB7CisJCQkJdGFyZ2V0RGlyUmVjLm1rZGlyKCk7CisJCQl9CisKKwkJCUZpbGUgc291cmNlRGlyUmVjID0gT21GaWxlSGVscGVyLmdldFN0cmVhbXNIaWJlcm5hdGVEaXIoKTsKKworCQkJRmlsZUhlbHBlci5jb3B5UmVjKHNvdXJjZURpclJlYywgdGFyZ2V0RGlyUmVjKTsKKwkJfQorCisJCXdyaXRlWmlwRGlyKGJhY2t1cF9kaXIsIGZpbGVQYXRoKTsKKwkJbG9nLmRlYnVnKCItLS1Eb25lIik7CisJfQorCQorCXByaXZhdGUgPFQ+IHZvaWQgd3JpdGVMaXN0KFNlcmlhbGl6ZXIgc2VyLCBGaWxlIGJhY2t1cF9kaXIsCisJCQlTdHJpbmcgZmlsZU5hbWUsIFN0cmluZyBsaXN0RWxlbWVudCwgTGlzdDxUPiBsaXN0KSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkJCisJCUZpbGVPdXRwdXRTdHJlYW0gZm9zID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0obmV3IEZpbGUoYmFja3VwX2RpciwKKwkJCQlmaWxlTmFtZSkpOworCQl3cml0ZUxpc3Qoc2VyLCBmb3MsIGxpc3RFbGVtZW50LCBsaXN0KTsKKwl9CisJCisJcHJpdmF0ZSA8VD4gdm9pZCB3cml0ZUxpc3QoU2VyaWFsaXplciBzZXIsIE91dHB1dFN0cmVhbSBvcywgU3RyaW5nIGxpc3RFbGVtZW50LCBMaXN0PFQ+IGxpc3QpIHRocm93cyBFeGNlcHRpb24geworCQlGb3JtYXQgZm9ybWF0ID0gbmV3IEZvcm1hdCgiPD94bWwgdmVyc2lvbj1cIjEuMFwiIGVuY29kaW5nPVwiVVRGLThcIj8+Iik7CisJCU91dHB1dE5vZGUgZG9jID0gTm9kZUJ1aWxkZXIud3JpdGUobmV3IE91dHB1dFN0cmVhbVdyaXRlcihvcywgIlVURi04IiksIGZvcm1hdCk7CisJCU91dHB1dE5vZGUgcm9vdCA9IGRvYy5nZXRDaGlsZCgicm9vdCIpOworCQlyb290LnNldENvbW1lbnQoQkFDS1VQX0NPTU1FTlQpOworCQlPdXRwdXROb2RlIGxpc3ROb2RlID0gcm9vdC5nZXRDaGlsZChsaXN0RWxlbWVudCk7CisKKwkJaWYgKGxpc3QgIT0gbnVsbCkgeworCQkJZm9yIChUIHQgOiBsaXN0KSB7CisJCQkJdHJ5IHsKKwkJCQkJc2VyLndyaXRlKHQsIGxpc3ROb2RlKTsKKwkJCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJCQlsb2cuZXJyb3IoIkV4Y2VwdGlvbiBXaGlsZSB3cml0aW5nIG5vZGUgb2YgdHlwZTogIiArIHQuZ2V0Q2xhc3MoKSwgZSk7CisJCQkJfQorCQkJfQorCQl9CisJCXJvb3QuY29tbWl0KCk7CisJfQorCisJcHVibGljIHZvaWQgZXhwb3J0VXNlcnMoRmlsZSBiYWNrdXBfZGlyLCBMaXN0PFVzZXI+IGxpc3QpIHRocm93cyBFeGNlcHRpb24geworCQlGaWxlT3V0cHV0U3RyZWFtIGZvcworCQkJPSBuZXcgRmlsZU91dHB1dFN0cmVhbShuZXcgRmlsZShiYWNrdXBfZGlyLCAidXNlcnMueG1sIikpOworCQlleHBvcnRVc2Vycyhmb3MsIGxpc3QpOworCX0KKwlwdWJsaWMgdm9pZCBleHBvcnRVc2VycyhPdXRwdXRTdHJlYW0gb3MsIExpc3Q8VXNlcj4gbGlzdCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCVJlZ2lzdHJ5IHJlZ2lzdHJ5ID0gbmV3IFJlZ2lzdHJ5KCk7CisJCVN0cmF0ZWd5IHN0cmF0ZWd5ID0gbmV3IFJlZ2lzdHJ5U3RyYXRlZ3kocmVnaXN0cnkpOworCQlTZXJpYWxpemVyIHNlcmlhbGl6ZXIgPSBuZXcgUGVyc2lzdGVyKHN0cmF0ZWd5KTsKKworCQlyZWdpc3RyeS5iaW5kKE9yZ2FuaXNhdGlvbi5jbGFzcywgT3JnYW5pc2F0aW9uQ29udmVydGVyLmNsYXNzKTsKKwkJcmVnaXN0cnkuYmluZChPbVRpbWVab25lLmNsYXNzLCBPbVRpbWVab25lQ29udmVydGVyLmNsYXNzKTsKKwkJcmVnaXN0cnkuYmluZChTdGF0ZS5jbGFzcywgU3RhdGVDb252ZXJ0ZXIuY2xhc3MpOworCQlpZiAobGlzdCAhPSBudWxsICYmIGxpc3Quc2l6ZSgpID4gMCkgeworCQkJcmVnaXN0cnkuYmluZChsaXN0LmdldCgwKS5nZXRSZWdkYXRlKCkuZ2V0Q2xhc3MoKSwgRGF0ZUNvbnZlcnRlci5jbGFzcyk7CisJCX0KKwkJCisJCXdyaXRlTGlzdChzZXJpYWxpemVyLCBvcywgInVzZXJzIiwgbGlzdCk7CisJfQorCS8qCisJICogKG5vbi1KYXZhZG9jKQorCSAqIAorCSAqIEBzZWUKKwkgKiBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXQjZG9Qb3N0KGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QKKwkgKiAsIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlc3BvbnNlKQorCSAqLworCXB1YmxpYyB2b2lkIHNlcnZpY2UoSHR0cFNlcnZsZXRSZXF1ZXN0IGh0dHBTZXJ2bGV0UmVxdWVzdCwKKwkJCUh0dHBTZXJ2bGV0UmVzcG9uc2UgaHR0cFNlcnZsZXRSZXNwb25zZSwgU2VydmxldENvbnRleHQgc2VydmxldEN0eCkKKwkJCXRocm93cyBTZXJ2bGV0RXhjZXB0aW9uLCBJT0V4Y2VwdGlvbiB7CisKKwkJU3RyaW5nIHNpZCA9IGh0dHBTZXJ2bGV0UmVxdWVzdC5nZXRQYXJhbWV0ZXIoInNpZCIpOworCQlpZiAoc2lkID09IG51bGwpIHsKKwkJCXNpZCA9ICJkZWZhdWx0IjsKKwkJfQorCQlsb2cuZGVidWcoInNpZDogIiArIHNpZCk7CisKKwkJTG9uZyB1c2Vyc19pZCA9IHNlc3Npb25kYXRhRGFvLmNoZWNrU2Vzc2lvbihzaWQpOworCQlMb25nIHVzZXJfbGV2ZWwgPSB1c2VyTWFuYWdlci5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKworCQlsb2cuZGVidWcoInVzZXJzX2lkOiAiICsgdXNlcnNfaWQpOworCQlsb2cuZGVidWcoInVzZXJfbGV2ZWw6ICIgKyB1c2VyX2xldmVsKTsKKworCQlpZiAoYXV0aExldmVsVXRpbC5jaGVja0FkbWluTGV2ZWwodXNlcl9sZXZlbCkpIHsKKwkJCS8vIGlmICh0cnVlKSB7CisKKwkJCVN0cmluZyBpbmNsdWRlRmlsZU9wdGlvbiA9IGh0dHBTZXJ2bGV0UmVxdWVzdAorCQkJCQkuZ2V0UGFyYW1ldGVyKCJpbmNsdWRlRmlsZU9wdGlvbiIpOworCQkJYm9vbGVhbiBpbmNsdWRlRmlsZXMgPSBpbmNsdWRlRmlsZU9wdGlvbiA9PSBudWxsIHx8ICJ5ZXMiLmVxdWFscyhpbmNsdWRlRmlsZU9wdGlvbik7CisKKwkJCVN0cmluZyBtb2R1bGVOYW1lID0gaHR0cFNlcnZsZXRSZXF1ZXN0CisJCQkJCS5nZXRQYXJhbWV0ZXIoIm1vZHVsZU5hbWUiKTsKKwkJCWlmIChtb2R1bGVOYW1lID09IG51bGwpIHsKKwkJCQltb2R1bGVOYW1lID0gIm1vZHVsZU5hbWUiOworCQkJfQorCQkJbG9nLmRlYnVnKCJtb2R1bGVOYW1lOiAiICsgbW9kdWxlTmFtZSk7CisKKwkJCWlmIChtb2R1bGVOYW1lLmVxdWFscygiYmFja3VwIikpIHsKKworCQkJCS8qCisJCQkJICogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIENyZWF0ZSBCYXNlIEZvbGRlciBzdHJ1Y3R1cmUKKwkJCQkgKi8KKworCQkJCUZpbGUgd29ya2luZ19kaXIgPSBPbUZpbGVIZWxwZXIuZ2V0VXBsb2FkQmFja3VwRGlyKCk7CisKKwkJCQlTdHJpbmcgZGF0ZVN0cmluZyA9ICJiYWNrdXBfIgorCQkJCQkJKyBDYWxlbmRhclBhdHRlcm5zLmdldFRpbWVGb3JTdHJlYW1JZChuZXcgRGF0ZSgpKTsKKworCQkJCUZpbGUgYmFja3VwX2RpciA9IG5ldyBGaWxlKHdvcmtpbmdfZGlyLCBkYXRlU3RyaW5nKTsKKwkJCQlTdHJpbmcgcmVxdWVzdGVkRmlsZSA9IGRhdGVTdHJpbmcgKyAiLnppcCI7CisJCQkJRmlsZSBiYWNrdXBGaWxlID0gbmV3IEZpbGUoYmFja3VwX2RpciwgcmVxdWVzdGVkRmlsZSk7CisKKwkJCQl0cnkgeworCQkJCQlwZXJmb3JtRXhwb3J0KGJhY2t1cEZpbGUsIGJhY2t1cF9kaXIsIGluY2x1ZGVGaWxlcyk7CisKKwkJCQkJaHR0cFNlcnZsZXRSZXNwb25zZS5yZXNldCgpOworCQkJCQlodHRwU2VydmxldFJlc3BvbnNlLnJlc2V0QnVmZmVyKCk7CisJCQkJCWh0dHBTZXJ2bGV0UmVzcG9uc2UKKwkJCQkJLnNldENvbnRlbnRUeXBlKCJBUFBMSUNBVElPTi9PQ1RFVC1TVFJFQU0iKTsKKwkJCQkJaHR0cFNlcnZsZXRSZXNwb25zZS5zZXRIZWFkZXIoIkNvbnRlbnQtRGlzcG9zaXRpb24iLAorCQkJCQkJCSJhdHRhY2htZW50OyBmaWxlbmFtZT1cIiIgKyByZXF1ZXN0ZWRGaWxlICsgIlwiIik7CisJCQkJCWh0dHBTZXJ2bGV0UmVzcG9uc2Uuc2V0SGVhZGVyKCJDb250ZW50LUxlbmd0aCIsCisJCQkJCQkJIiIgKyBiYWNrdXBGaWxlLmxlbmd0aCgpKTsKKworCQkJCQlPdXRwdXRTdHJlYW0gb3V0ID0gaHR0cFNlcnZsZXRSZXNwb25zZS5nZXRPdXRwdXRTdHJlYW0oKTsKKwkJCQkJT21GaWxlSGVscGVyLmNvcHlGaWxlKGJhY2t1cEZpbGUsIG91dCk7CisKKwkJCQkJb3V0LmZsdXNoKCk7CisJCQkJCW91dC5jbG9zZSgpOworCQkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcikgeworCQkJCQlsb2cuZXJyb3IoIkVycm9yIGV4cG9ydGluZzogIiwgZXIpOworCQkJCX0KKworCQkJCWlmIChiYWNrdXBGaWxlLmV4aXN0cygpKSB7CisJCQkJCS8vIGxvZy5kZWJ1ZygiREVMRVRFIDoxOiAiK2JhY2t1cEZpbGUuZ2V0Q2Fub25pY2FsUGF0aCgpKTsKKwkJCQkJYmFja3VwRmlsZS5kZWxldGUoKTsKKwkJCQl9CisKKwkJCQlGaWxlSGVscGVyLnJlbW92ZVJlYyhiYWNrdXBfZGlyKTsKKwkJCX0KKwkJfSBlbHNlIHsKKwkJCWxvZy5kZWJ1ZygiRVJST1IgTGFuZ0V4cG9ydDogbm90IGF1dGhvcml6ZWQgRmlsZURvd25sb2FkICIKKwkJCQkJKyAobmV3IERhdGUoKSkpOworCQl9CisJfQorCisJcHJpdmF0ZSB2b2lkIHdyaXRlWmlwRGlyKEZpbGUgZGlyZWN0b3J5VG9aaXAsIEZpbGUgemlwRmlsZSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKwkJRmlsZU91dHB1dFN0cmVhbSBmb3MgPSBudWxsOworCQlaaXBPdXRwdXRTdHJlYW0gem9zID0gbnVsbDsKKwkJdHJ5IHsKKwkJCWZvcyA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKHppcEZpbGUpOworCQkJem9zID0gbmV3IFppcE91dHB1dFN0cmVhbShmb3MpOworCQkJCisJCQl3cml0ZVppcERpcihkaXJlY3RvcnlUb1ppcC50b1VSSSgpLCBkaXJlY3RvcnlUb1ppcCwgem9zLCB6aXBGaWxlKTsKKwkJfSBmaW5hbGx5IHsKKwkJCWlmICh6b3MgIT0gbnVsbCkgeworCQkJCXRyeSB7CisJCQkJCXpvcy5jbG9zZSgpOworCQkJCX0gY2F0Y2ggKElPRXhjZXB0aW9uIGUpIHsKKwkJCQkJbG9nLmVycm9yKCJFbmV4cGVjdGVkIGVycm9yIHdoaWxlIGNsb3NpbmcgWmlwT3V0cHV0U3RyZWFtIiwgZSk7CisJCQkJfQorCQkJfQorCQkJaWYgKGZvcyAhPSBudWxsKSB7CisJCQkJdHJ5IHsKKwkJCQkJZm9zLmNsb3NlKCk7CisJCQkJfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgeworCQkJCQlsb2cuZXJyb3IoIkVuZXhwZWN0ZWQgZXJyb3Igd2hpbGUgY2xvc2luZyBGaWxlT3V0cHV0U3RyZWFtIiwgZSk7CisJCQkJfQorCQkJfQorCQl9CisJfQorCQorCXByaXZhdGUgdm9pZCB3cml0ZVppcERpcihVUkkgYmFzZSwgRmlsZSBkaXIsIFppcE91dHB1dFN0cmVhbSB6b3MsIEZpbGUgemlwRmlsZSkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKwkJZm9yIChGaWxlIGZpbGUgOiBkaXIubGlzdEZpbGVzKCkpIHsKKwkJCWlmICh6aXBGaWxlLmVxdWFscyhmaWxlKSkgeworCQkJCWNvbnRpbnVlOworCQkJfQorCQkJaWYgKGZpbGUuaXNEaXJlY3RvcnkoKSkgeworCQkJCXdyaXRlWmlwRGlyKGJhc2UsIGZpbGUsIHpvcywgemlwRmlsZSk7CisJCQl9IGVsc2UgeworCQkJCVN0cmluZyBwYXRoID0gYmFzZS5yZWxhdGl2aXplKGZpbGUudG9VUkkoKSkudG9TdHJpbmcoKTsKKwkJCQlsb2cuZGVidWcoIldyaXRpbmcgJyIgKyBwYXRoICsgIicgdG8gemlwIGZpbGUiKTsKKwkJCQlaaXBFbnRyeSB6aXBFbnRyeSA9IG5ldyBaaXBFbnRyeShwYXRoKTsKKwkJCQl6b3MucHV0TmV4dEVudHJ5KHppcEVudHJ5KTsKKworCQkJCU9tRmlsZUhlbHBlci5jb3B5RmlsZShmaWxlLCB6b3MpOworCQkJCXpvcy5jbG9zZUVudHJ5KCk7CisJCQl9CisJCX0KKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2VydmxldC9vdXRwdXRoYW5kbGVyL0JhY2t1cEV4cG9ydEZhY2FkZS5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NlcnZsZXQvb3V0cHV0aGFuZGxlci9CYWNrdXBFeHBvcnRGYWNhZGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDc0MjI4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NlcnZsZXQvb3V0cHV0aGFuZGxlci9CYWNrdXBFeHBvcnRGYWNhZGUuamF2YQpAQCAtMCwwICsxLDY3IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnNlcnZsZXQub3V0cHV0aGFuZGxlcjsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CisKK2ltcG9ydCBqYXZheC5zZXJ2bGV0LlNlcnZsZXRFeGNlcHRpb247CitpbXBvcnQgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdDsKK2ltcG9ydCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXNwb25zZTsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5zZXJ2bGV0LkJhc2VIdHRwU2VydmxldDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5zZXJ2bGV0LlNlcnZlck5vdEluaXRpYWxpemVkRXhjZXB0aW9uOworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKKworLyoqCisgKiAKKyAqIEBhdXRob3Igc2ViYXN0aWFud2FnbmVyCisgKiAKKyAqLworcHVibGljIGNsYXNzIEJhY2t1cEV4cG9ydEZhY2FkZSBleHRlbmRzIEJhc2VIdHRwU2VydmxldCB7CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAtOTI4MzE1NzMwNjA5MzAyMjYwTDsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoCisJCQlCYWNrdXBFeHBvcnRGYWNhZGUuY2xhc3MsIE9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKworCS8qCisJICogKG5vbi1KYXZhZG9jKQorCSAqIAorCSAqIEBzZWUKKwkgKiBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXQjZG9Qb3N0KGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QKKwkgKiAsIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlc3BvbnNlKQorCSAqLworCUBPdmVycmlkZQorCXByb3RlY3RlZCB2b2lkIHNlcnZpY2UoSHR0cFNlcnZsZXRSZXF1ZXN0IGh0dHBTZXJ2bGV0UmVxdWVzdCwKKwkJCUh0dHBTZXJ2bGV0UmVzcG9uc2UgaHR0cFNlcnZsZXRSZXNwb25zZSkgdGhyb3dzIFNlcnZsZXRFeGNlcHRpb24sCisJCQlJT0V4Y2VwdGlvbiB7CisKKwkJdHJ5IHsKKwkJCWdldEJlYW4oQmFja3VwRXhwb3J0LmNsYXNzKS5zZXJ2aWNlKGh0dHBTZXJ2bGV0UmVxdWVzdCwgaHR0cFNlcnZsZXRSZXNwb25zZSwKKwkJCQkJZ2V0U2VydmxldENvbnRleHQoKSk7CisJCX0gY2F0Y2ggKFNlcnZlck5vdEluaXRpYWxpemVkRXhjZXB0aW9uIGUpIHsKKwkJCWhhbmRsZU5vdEJvb3RlZChodHRwU2VydmxldFJlc3BvbnNlKTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVyKSB7CisJCQlsb2cuZXJyb3IoIkVycm9yIGV4cG9ydGluZyAiLCBlcik7CisJCX0KKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zZXJ2bGV0L291dHB1dGhhbmRsZXIvQmFja3VwSW1wb3J0Q29udHJvbGxlci5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NlcnZsZXQvb3V0cHV0aGFuZGxlci9CYWNrdXBJbXBvcnRDb250cm9sbGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjgyZTY3NgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zZXJ2bGV0L291dHB1dGhhbmRsZXIvQmFja3VwSW1wb3J0Q29udHJvbGxlci5qYXZhCkBAIC0wLDAgKzEsODU2IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnNlcnZsZXQub3V0cHV0aGFuZGxlcjsKKworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLmNvbW1vbnMudHJhbnNhY3Rpb24udXRpbC5GaWxlSGVscGVyLmNvcHlSZWM7CitpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLk9tRmlsZUhlbHBlci5nZXRTdHJlYW1zSGliZXJuYXRlRGlyOworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5PbUZpbGVIZWxwZXIuZ2V0VXBsb2FkRGlyOworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5PbUZpbGVIZWxwZXIuZ2V0VXBsb2FkUHJvZmlsZXNVc2VyRGlyOworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5PbUZpbGVIZWxwZXIuZ2V0VXBsb2FkUm9vbURpcjsKK2ltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMuT21GaWxlSGVscGVyLnByb2ZpbGVzUHJlZml4OworCitpbXBvcnQgamF2YS5pby5GaWxlOworaW1wb3J0IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLlN0cmluZ1JlYWRlcjsKK2ltcG9ydCBqYXZhLmlvLlN0cmluZ1dyaXRlcjsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuemlwLlppcEVudHJ5OworaW1wb3J0IGphdmEudXRpbC56aXAuWmlwSW5wdXRTdHJlYW07CisKK2ltcG9ydCBqYXZheC5zZXJ2bGV0LlNlcnZsZXRFeGNlcHRpb247CitpbXBvcnQgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdDsKK2ltcG9ydCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXNwb25zZTsKK2ltcG9ydCBqYXZheC54bWwucGFyc2Vycy5Eb2N1bWVudEJ1aWxkZXI7CitpbXBvcnQgamF2YXgueG1sLnBhcnNlcnMuRG9jdW1lbnRCdWlsZGVyRmFjdG9yeTsKK2ltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLlRyYW5zZm9ybWVyOworaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uVHJhbnNmb3JtZXJGYWN0b3J5OworaW1wb3J0IGphdmF4LnhtbC50cmFuc2Zvcm0uZG9tLkRPTVNvdXJjZTsKK2ltcG9ydCBqYXZheC54bWwudHJhbnNmb3JtLnN0cmVhbS5TdHJlYW1SZXN1bHQ7CisKK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMudHJhbnNhY3Rpb24udXRpbC5GaWxlSGVscGVyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5iYWNrdXAuQXBwb2ludG1lbnRDYXRlZ29yeUNvbnZlcnRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5iYWNrdXAuQXBwb2ludG1lbnRDb252ZXJ0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuYmFja3VwLkFwcG9pbnRtZW50UmVtaW5kZXJUeXBlQ29udmVydGVyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmJhY2t1cC5EYXRlQ29udmVydGVyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmJhY2t1cC5JbnRlZ2VyVHJhbnNmb3JtOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmJhY2t1cC5Mb25nVHJhbnNmb3JtOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmJhY2t1cC5PbVRpbWVab25lQ29udmVydGVyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmJhY2t1cC5PcmdhbmlzYXRpb25Db252ZXJ0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuYmFja3VwLlBvbGxUeXBlQ29udmVydGVyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmJhY2t1cC5Sb29tQ29udmVydGVyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmJhY2t1cC5Sb29tVHlwZUNvbnZlcnRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5iYWNrdXAuU3RhdGVDb252ZXJ0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuYmFja3VwLlVzZXJDb252ZXJ0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5kYW8uQ29uZmlndXJhdGlvbkRhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLmRhby5MZGFwQ29uZmlnRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuZGFvLk9tVGltZVpvbmVEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jYWxlbmRhci5kYW9zLkFwcG9pbnRtZW50Q2F0ZWdvcnlEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jYWxlbmRhci5kYW9zLkFwcG9pbnRtZW50RGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY2FsZW5kYXIuZGFvcy5BcHBvaW50bWVudFJlbWluZGVyVHlwRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY2FsZW5kYXIuZGFvcy5NZWV0aW5nTWVtYmVyRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY29uZmVyZW5jZS5Qb2xsTWFuYWdlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNvbmZlcmVuY2UuUm9vbU1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jb25mZXJlbmNlLmRhby5Sb29tRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuZmlsZS5kYW8uRmlsZUV4cGxvcmVySXRlbURhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmZsdnJlY29yZC5GbHZSZWNvcmRpbmdEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLk9yZ2FuaXNhdGlvbk1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLmRhby5PcmdhbmlzYXRpb25EYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLmRhby5Qcml2YXRlTWVzc2FnZUZvbGRlckRhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuZGFvLlByaXZhdGVNZXNzYWdlc0RhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuZGFvLlN0YXRlRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEudXNlci5kYW8uVXNlckNvbnRhY3RzRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEudXNlci5kYW8uVXNlcnNEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZG9jdW1lbnRzLmJlYW5zLlVwbG9hZENvbXBsZXRlTWVzc2FnZTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5Db25maWd1cmF0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLkxkYXBDb25maWc7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuT21UaW1lWm9uZTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5jYWxlbmRhci5BcHBvaW50bWVudDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5jYWxlbmRhci5BcHBvaW50bWVudENhdGVnb3J5OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmNhbGVuZGFyLkFwcG9pbnRtZW50UmVtaW5kZXJUeXBzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmNhbGVuZGFyLk1lZXRpbmdNZW1iZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuZG9tYWluLk9yZ2FuaXNhdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5maWxlcy5GaWxlRXhwbG9yZXJJdGVtOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmZsdnJlY29yZC5GbHZSZWNvcmRpbmc7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuZmx2cmVjb3JkLkZsdlJlY29yZGluZ01ldGFEYXRhOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnBvbGwuUG9sbFR5cGU7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucG9sbC5Sb29tUG9sbDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5wb2xsLlJvb21Qb2xsQW5zd2VyczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tLlJvb207CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbS5Sb29tTW9kZXJhdG9yOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnJvb20uUm9vbU9yZ2FuaXNhdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tLlJvb21UeXBlOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuQWRkcmVzczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlByaXZhdGVNZXNzYWdlOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuUHJpdmF0ZU1lc3NhZ2VGb2xkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlci5TdGF0ZTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlVzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlci5Vc2VyQ29udGFjdDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5yZW1vdGUucmVkNS5TY29wZUFwcGxpY2F0aW9uQWRhcHRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5PbUZpbGVIZWxwZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMuY3J5cHQuTUQ1SW1wbGVtZW50YXRpb247CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMubWF0aC5DYWxlbmRhclBhdHRlcm5zOworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNpbXBsZWZyYW1ld29yay54bWwuU2VyaWFsaXplcjsKK2ltcG9ydCBvcmcuc2ltcGxlZnJhbWV3b3JrLnhtbC5jb252ZXJ0LlJlZ2lzdHJ5OworaW1wb3J0IG9yZy5zaW1wbGVmcmFtZXdvcmsueG1sLmNvbnZlcnQuUmVnaXN0cnlTdHJhdGVneTsKK2ltcG9ydCBvcmcuc2ltcGxlZnJhbWV3b3JrLnhtbC5jb3JlLlBlcnNpc3RlcjsKK2ltcG9ydCBvcmcuc2ltcGxlZnJhbWV3b3JrLnhtbC5zdHJhdGVneS5TdHJhdGVneTsKK2ltcG9ydCBvcmcuc2ltcGxlZnJhbWV3b3JrLnhtbC5zdHJlYW0uSW5wdXROb2RlOworaW1wb3J0IG9yZy5zaW1wbGVmcmFtZXdvcmsueG1sLnN0cmVhbS5Ob2RlQnVpbGRlcjsKK2ltcG9ydCBvcmcuc2ltcGxlZnJhbWV3b3JrLnhtbC50cmFuc2Zvcm0uUmVnaXN0cnlNYXRjaGVyOworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uQXV0b3dpcmVkOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuc3RlcmVvdHlwZS5Db250cm9sbGVyOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsud2ViLmJpbmQuYW5ub3RhdGlvbi5SZXF1ZXN0TWFwcGluZzsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLndlYi5iaW5kLmFubm90YXRpb24uUmVxdWVzdE1ldGhvZDsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLndlYi5tdWx0aXBhcnQuTXVsdGlwYXJ0RmlsZTsKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5Ob2RlOworaW1wb3J0IG9yZy53M2MuZG9tLk5vZGVMaXN0OworaW1wb3J0IG9yZy54bWwuc2F4LklucHV0U291cmNlOworCitAQ29udHJvbGxlcgorcHVibGljIGNsYXNzIEJhY2t1cEltcG9ydENvbnRyb2xsZXIgZXh0ZW5kcyBBYnN0cmFjdFVwbG9hZENvbnRyb2xsZXIgeworCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcigKKwkJCUJhY2t1cEltcG9ydENvbnRyb2xsZXIuY2xhc3MsIE9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEFwcG9pbnRtZW50RGFvIGFwcG9pbnRtZW50RGFvOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFN0YXRlRGFvIHN0YXRlbWFuYWdlbWVudDsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBPbVRpbWVab25lRGFvIG9tVGltZVpvbmVEYW9JbXBsOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIE9yZ2FuaXNhdGlvbk1hbmFnZXIgb3JnYW5pc2F0aW9uTWFuYWdlcjsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBPcmdhbmlzYXRpb25EYW8gb3JnRGFvOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFJvb21NYW5hZ2VyIHJvb21NYW5hZ2VyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFJvb21EYW8gcm9vbURhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBBcHBvaW50bWVudENhdGVnb3J5RGFvIGFwcG9pbnRtZW50Q2F0ZWdvcnlEYW9JbXBsOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEFwcG9pbnRtZW50UmVtaW5kZXJUeXBEYW8gYXBwb2ludG1lbnRSZW1pbmRlclR5cERhb0ltcGw7CisJQEF1dG93aXJlZAorCXByaXZhdGUgVXNlcnNEYW8gdXNlcnNEYW87CisJQEF1dG93aXJlZAorCXByaXZhdGUgRmx2UmVjb3JkaW5nRGFvIGZsdlJlY29yZGluZ0RhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBQcml2YXRlTWVzc2FnZUZvbGRlckRhbyBwcml2YXRlTWVzc2FnZUZvbGRlckRhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBQcml2YXRlTWVzc2FnZXNEYW8gcHJpdmF0ZU1lc3NhZ2VzRGFvOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIE1lZXRpbmdNZW1iZXJEYW8gbWVldGluZ01lbWJlckRhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBMZGFwQ29uZmlnRGFvIGxkYXBDb25maWdEYW87CisJQEF1dG93aXJlZAorCXByaXZhdGUgRmlsZUV4cGxvcmVySXRlbURhbyBmaWxlRXhwbG9yZXJJdGVtRGFvOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFVzZXJDb250YWN0c0RhbyB1c2VyQ29udGFjdHNEYW87CisJQEF1dG93aXJlZAorCXByaXZhdGUgU2NvcGVBcHBsaWNhdGlvbkFkYXB0ZXIgc2NvcGVBcHBsaWNhdGlvbkFkYXB0ZXI7CisJQEF1dG93aXJlZAorCXByaXZhdGUgUG9sbE1hbmFnZXIgcG9sbE1hbmFnZXI7CisJQEF1dG93aXJlZAorCXByaXZhdGUgQ29uZmlndXJhdGlvbkRhbyBjb25maWd1cmF0aW9uRGFvOworCisJcHJpdmF0ZSBmaW5hbCBIYXNoTWFwPExvbmcsIExvbmc+IHVzZXJzTWFwID0gbmV3IEhhc2hNYXA8TG9uZywgTG9uZz4oKTsKKwlwcml2YXRlIGZpbmFsIEhhc2hNYXA8TG9uZywgTG9uZz4gb3JnYW5pc2F0aW9uc01hcCA9IG5ldyBIYXNoTWFwPExvbmcsIExvbmc+KCk7CisJcHJpdmF0ZSBmaW5hbCBIYXNoTWFwPExvbmcsIExvbmc+IGFwcG9pbnRtZW50c01hcCA9IG5ldyBIYXNoTWFwPExvbmcsIExvbmc+KCk7CisJcHJpdmF0ZSBmaW5hbCBIYXNoTWFwPExvbmcsIExvbmc+IHJvb21zTWFwID0gbmV3IEhhc2hNYXA8TG9uZywgTG9uZz4oKTsKKwlwcml2YXRlIGZpbmFsIEhhc2hNYXA8TG9uZywgTG9uZz4gbWVzc2FnZUZvbGRlcnNNYXAgPSBuZXcgSGFzaE1hcDxMb25nLCBMb25nPigpOworCXByaXZhdGUgZmluYWwgSGFzaE1hcDxMb25nLCBMb25nPiB1c2VyQ29udGFjdHNNYXAgPSBuZXcgSGFzaE1hcDxMb25nLCBMb25nPigpOworCisJcHJpdmF0ZSBlbnVtIE1hcHMgeworCQlVU0VSUywgT1JHQU5JU0FUSU9OUywgQVBQT0lOVE1FTlRTLCBST09NUywgTUVTU0FHRUZPTERFUlMsIFVTRVJDT05UQUNUUworCX07CisKKwlwdWJsaWMgdm9pZCBwZXJmb3JtSW1wb3J0KElucHV0U3RyZWFtIGlzKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkJRmlsZSB3b3JraW5nX2RpciA9IE9tRmlsZUhlbHBlci5nZXRVcGxvYWRJbXBvcnREaXIoKTsKKwkJaWYgKCF3b3JraW5nX2Rpci5leGlzdHMoKSkgeworCQkJd29ya2luZ19kaXIubWtkaXIoKTsKKwkJfQorCisJCUZpbGUgZiA9IE9tRmlsZUhlbHBlci5nZXROZXdEaXIod29ya2luZ19kaXIsICJpbXBvcnRfIiArIENhbGVuZGFyUGF0dGVybnMuZ2V0VGltZUZvclN0cmVhbUlkKG5ldyBEYXRlKCkpKTsKKworCQlsb2cuZGVidWcoIiMjIyMjIFdSSVRFIEZJTEUgVE86ICIgKyBmKTsKKwkJCisJCVppcElucHV0U3RyZWFtIHppcGlucHV0c3RyZWFtID0gbmV3IFppcElucHV0U3RyZWFtKGlzKTsKKwkJWmlwRW50cnkgemlwZW50cnkgPSB6aXBpbnB1dHN0cmVhbS5nZXROZXh0RW50cnkoKTsKKwkJd2hpbGUgKHppcGVudHJ5ICE9IG51bGwpIHsKKwkJCVN0cmluZyBmTmFtZSA9IHppcGVudHJ5LmdldE5hbWUoKTsKKwkJCWlmIChGaWxlLnBhdGhTZXBhcmF0b3JDaGFyICE9ICdcXCcgJiYgZk5hbWUuaW5kZXhPZignXFwnKSA+IC0xKSB7CisJCQkJZk5hbWUgPSBmTmFtZS5yZXBsYWNlKCdcXCcsICcvJyk7CisJCQl9CisJCQkvLyBmb3IgZWFjaCBlbnRyeSB0byBiZSBleHRyYWN0ZWQKKwkJCUZpbGUgZmVudHJ5ID0gbmV3IEZpbGUoZiwgZk5hbWUpOworCQkJRmlsZSBkaXIgPSBmZW50cnkuaXNEaXJlY3RvcnkoKSA/IGZlbnRyeSA6IGZlbnRyeS5nZXRQYXJlbnRGaWxlKCk7CisJCQlkaXIubWtkaXJzKCk7CisJCQlpZiAoZmVudHJ5LmlzRGlyZWN0b3J5KCkpIHsKKwkJCQl6aXBlbnRyeSA9IHppcGlucHV0c3RyZWFtLmdldE5leHRFbnRyeSgpOworCQkJCWNvbnRpbnVlOworCQkJfQorCisJCQlGaWxlSGVscGVyLmNvcHkoemlwaW5wdXRzdHJlYW0sIGZlbnRyeSk7CisJCQl6aXBpbnB1dHN0cmVhbS5jbG9zZUVudHJ5KCk7CisJCQl6aXBlbnRyeSA9IHppcGlucHV0c3RyZWFtLmdldE5leHRFbnRyeSgpOworCisJCX0KKwkJemlwaW5wdXRzdHJlYW0uY2xvc2UoKTsKKworCQkvKgorCQkgKiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMgSW1wb3J0IE9yZ2FuaXphdGlvbnMKKwkJICovCisJCVNlcmlhbGl6ZXIgc2ltcGxlU2VyaWFsaXplciA9IG5ldyBQZXJzaXN0ZXIoKTsKKwkJeworCQkJTGlzdDxPcmdhbmlzYXRpb24+IGxpc3QgPSByZWFkTGlzdChzaW1wbGVTZXJpYWxpemVyLCBmLCAib3JnYW5pemF0aW9ucy54bWwiLCAib3JnYW5pc2F0aW9ucyIsIE9yZ2FuaXNhdGlvbi5jbGFzcyk7CisJCQlmb3IgKE9yZ2FuaXNhdGlvbiBvIDogbGlzdCkgeworCQkJCWxvbmcgb2xkSWQgPSBvLmdldE9yZ2FuaXNhdGlvbl9pZCgpOworCQkJCW8uc2V0T3JnYW5pc2F0aW9uX2lkKG51bGwpOworCQkJCUxvbmcgbmV3SWQgPSBvcmdhbmlzYXRpb25NYW5hZ2VyLmFkZE9yZ2FuaXNhdGlvbk9iaihvKTsKKwkJCQlvcmdhbmlzYXRpb25zTWFwLnB1dChvbGRJZCwgbmV3SWQpOworCQkJfQorCQl9CisKKwkJbG9nLmluZm8oIk9yZ2FuaXphdGlvbnMgaW1wb3J0IGNvbXBsZXRlLCBzdGFydGluZyB1c2VyIGltcG9ydCIpOworCQkvKgorCQkgKiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMgSW1wb3J0IFVzZXJzCisJCSAqLworCQl7CisJCQlMaXN0PFVzZXI+IGxpc3QgPSByZWFkVXNlckxpc3QoZiwgInVzZXJzLnhtbCIsICJ1c2VycyIpOworCQkJZm9yIChVc2VyIHUgOiBsaXN0KSB7CisJCQkJT21UaW1lWm9uZSB0eiA9IHUuZ2V0T21UaW1lWm9uZSgpOworCQkJCWlmICh0eiA9PSBudWxsIHx8IHR6LmdldEpuYW1lKCkgPT0gbnVsbCkgeworCQkJCQlTdHJpbmcgak5hbWVUaW1lWm9uZSA9IGNvbmZpZ3VyYXRpb25EYW8uZ2V0Q29uZlZhbHVlKAorCQkJCQkJCSJkZWZhdWx0LnRpbWV6b25lIiwgU3RyaW5nLmNsYXNzLCAiRXVyb3BlL0JlcmxpbiIpOworCQkJCQlPbVRpbWVab25lIG9tVGltZVpvbmUgPSBvbVRpbWVab25lRGFvSW1wbC5nZXRPbVRpbWVab25lKGpOYW1lVGltZVpvbmUpOworCQkJCQl1LnNldE9tVGltZVpvbmUob21UaW1lWm9uZSk7CisJCQkJCXUuc2V0Rm9yY2VUaW1lWm9uZUNoZWNrKHRydWUpOworCQkJCX0gZWxzZSB7CisJCQkJCXUuc2V0Rm9yY2VUaW1lWm9uZUNoZWNrKGZhbHNlKTsKKwkJCQl9CisJCQkJCisJCQkJdS5zZXRTdGFydHRpbWUobmV3IERhdGUoKSk7CisJCQkJbG9uZyB1c2VySWQgPSB1LmdldFVzZXJfaWQoKTsKKwkJCQl1LnNldFVzZXJfaWQobnVsbCk7CisJCQkJaWYgKHUuZ2V0U2lwVXNlcigpICE9IG51bGwgJiYgdS5nZXRTaXBVc2VyKCkuZ2V0SWQoKSAhPSAwKSB7CisJCQkJCXUuZ2V0U2lwVXNlcigpLnNldElkKDApOworCQkJCX0KKwkJCQl1c2Vyc0Rhby51cGRhdGUodSwgLTFMKTsKKwkJCQl1c2Vyc01hcC5wdXQodXNlcklkLCB1LmdldFVzZXJfaWQoKSk7CisJCQl9CisJCX0KKworCQlsb2cuaW5mbygiVXNlcnMgaW1wb3J0IGNvbXBsZXRlLCBzdGFydGluZyByb29tIGltcG9ydCIpOworCQkvKgorCQkgKiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMgSW1wb3J0IFJvb21zCisJCSAqLworCQl7CisJCQlSZWdpc3RyeSByZWdpc3RyeSA9IG5ldyBSZWdpc3RyeSgpOworCQkJU3RyYXRlZ3kgc3RyYXRlZ3kgPSBuZXcgUmVnaXN0cnlTdHJhdGVneShyZWdpc3RyeSk7CisJCQlSZWdpc3RyeU1hdGNoZXIgbWF0Y2hlciA9IG5ldyBSZWdpc3RyeU1hdGNoZXIoKTsgLy9UT0RPIG5lZWQgdG8gYmUgcmVtb3ZlZCBpbiB0aGUgbGF0ZXIgdmVyc2lvbnMKKwkJCVNlcmlhbGl6ZXIgc2VyaWFsaXplciA9IG5ldyBQZXJzaXN0ZXIoc3RyYXRlZ3ksIG1hdGNoZXIpOworCisJCQltYXRjaGVyLmJpbmQoTG9uZy5jbGFzcywgTG9uZ1RyYW5zZm9ybS5jbGFzcyk7CisJCQltYXRjaGVyLmJpbmQoSW50ZWdlci5jbGFzcywgSW50ZWdlclRyYW5zZm9ybS5jbGFzcyk7CisJCQlyZWdpc3RyeS5iaW5kKFVzZXIuY2xhc3MsIG5ldyBVc2VyQ29udmVydGVyKHVzZXJzRGFvLCB1c2Vyc01hcCkpOworCQkJcmVnaXN0cnkuYmluZChSb29tVHlwZS5jbGFzcywgbmV3IFJvb21UeXBlQ29udmVydGVyKHJvb21NYW5hZ2VyKSk7CisJCQkKKwkJCUxpc3Q8Um9vbT4gbGlzdCA9IHJlYWRMaXN0KHNlcmlhbGl6ZXIsIGYsICJyb29tcy54bWwiLCAicm9vbXMiLCBSb29tLmNsYXNzKTsKKwkJCWZvciAoUm9vbSByIDogbGlzdCkgeworCQkJCUxvbmcgcm9vbUlkID0gci5nZXRSb29tc19pZCgpOworCisJCQkJLy8gV2UgbmVlZCB0byByZXNldCBpZHMgYXMgb3BlbkpQQSByZWplY3QgdG8gc3RvcmUgdGhlbSBvdGhlcndpc2UKKwkJCQlyLnNldFJvb21zX2lkKG51bGwpOworCQkJCWlmIChyLmdldE1vZGVyYXRvcnMoKSAhPSBudWxsKSB7CisJCQkJCWZvciAoSXRlcmF0b3I8Um9vbU1vZGVyYXRvcj4gaSA9IHIuZ2V0TW9kZXJhdG9ycygpLml0ZXJhdG9yKCk7IGkuaGFzTmV4dCgpOykgeworCQkJCQkJUm9vbU1vZGVyYXRvciBybSA9IGkubmV4dCgpOworCQkJCQkJaWYgKHJtLmdldFVzZXIoKS5nZXRVc2VyX2lkKCkgPT0gbnVsbCkgeworCQkJCQkJCWkucmVtb3ZlKCk7CisJCQkJCQl9CisJCQkJCX0KKwkJCQl9CisJCQkJciA9IHJvb21EYW8udXBkYXRlKHIsIG51bGwpOworCQkJCXJvb21zTWFwLnB1dChyb29tSWQsIHIuZ2V0Um9vbXNfaWQoKSk7CisJCQl9CisJCX0KKworCQlsb2cuaW5mbygiUm9vbSBpbXBvcnQgY29tcGxldGUsIHN0YXJ0aW5nIHJvb20gb3JnYW5pemF0aW9ucyBpbXBvcnQiKTsKKwkJLyoKKwkJICogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIEltcG9ydCBSb29tIE9yZ2FuaXNhdGlvbnMKKwkJICovCisJCXsKKwkJCVJlZ2lzdHJ5IHJlZ2lzdHJ5ID0gbmV3IFJlZ2lzdHJ5KCk7CisJCQlTdHJhdGVneSBzdHJhdGVneSA9IG5ldyBSZWdpc3RyeVN0cmF0ZWd5KHJlZ2lzdHJ5KTsKKwkJCVNlcmlhbGl6ZXIgc2VyaWFsaXplciA9IG5ldyBQZXJzaXN0ZXIoc3RyYXRlZ3kpOworCQorCQkJcmVnaXN0cnkuYmluZChPcmdhbmlzYXRpb24uY2xhc3MsIG5ldyBPcmdhbmlzYXRpb25Db252ZXJ0ZXIob3JnRGFvLCBvcmdhbmlzYXRpb25zTWFwKSk7CisJCQlyZWdpc3RyeS5iaW5kKFJvb20uY2xhc3MsIG5ldyBSb29tQ29udmVydGVyKHJvb21EYW8sIHJvb21zTWFwKSk7CisJCQkKKwkJCUxpc3Q8Um9vbU9yZ2FuaXNhdGlvbj4gbGlzdCA9IHJlYWRMaXN0KHNlcmlhbGl6ZXIsIGYsICJyb29tc19vcmdhbmlzYXRpb24ueG1sIiwgInJvb21fb3JnYW5pc2F0aW9ucyIsIFJvb21PcmdhbmlzYXRpb24uY2xhc3MpOworCQkJZm9yIChSb29tT3JnYW5pc2F0aW9uIHJvIDogbGlzdCkgeworCQkJCWlmICghcm8uZ2V0RGVsZXRlZCgpKSB7CisJCQkJCS8vIFdlIG5lZWQgdG8gcmVzZXQgdGhpcyBhcyBvcGVuSlBBIHJlamVjdCB0byBzdG9yZSB0aGVtIG90aGVyd2lzZQorCQkJCQlyby5zZXRSb29tc19vcmdhbmlzYXRpb25faWQobnVsbCk7CisJCQkJCXJvb21NYW5hZ2VyLmFkZFJvb21PcmdhbmlzYXRpb24ocm8pOworCQkJCX0KKwkJCX0KKwkJfQorCisJCWxvZy5pbmZvKCJSb29tIG9yZ2FuaXphdGlvbnMgaW1wb3J0IGNvbXBsZXRlLCBzdGFydGluZyBhcHBvaW50ZW1lbnQgaW1wb3J0Iik7CisJCS8qCisJCSAqICMjIyMjIyMjIyMjIyMjIyMjIyMjIyBJbXBvcnQgQXBwb2ludGVtZW50cworCQkgKi8KKwkJeworCQkJUmVnaXN0cnkgcmVnaXN0cnkgPSBuZXcgUmVnaXN0cnkoKTsKKwkJCVN0cmF0ZWd5IHN0cmF0ZWd5ID0gbmV3IFJlZ2lzdHJ5U3RyYXRlZ3kocmVnaXN0cnkpOworCQkJU2VyaWFsaXplciBzZXJpYWxpemVyID0gbmV3IFBlcnNpc3RlcihzdHJhdGVneSk7CisJCisJCQlyZWdpc3RyeS5iaW5kKEFwcG9pbnRtZW50Q2F0ZWdvcnkuY2xhc3MsIG5ldyBBcHBvaW50bWVudENhdGVnb3J5Q29udmVydGVyKGFwcG9pbnRtZW50Q2F0ZWdvcnlEYW9JbXBsKSk7CisJCQlyZWdpc3RyeS5iaW5kKFVzZXIuY2xhc3MsIG5ldyBVc2VyQ29udmVydGVyKHVzZXJzRGFvLCB1c2Vyc01hcCkpOworCQkJcmVnaXN0cnkuYmluZChBcHBvaW50bWVudFJlbWluZGVyVHlwcy5jbGFzcywgbmV3IEFwcG9pbnRtZW50UmVtaW5kZXJUeXBlQ29udmVydGVyKGFwcG9pbnRtZW50UmVtaW5kZXJUeXBEYW9JbXBsKSk7CisJCQlyZWdpc3RyeS5iaW5kKFJvb20uY2xhc3MsIG5ldyBSb29tQ29udmVydGVyKHJvb21EYW8sIHJvb21zTWFwKSk7CisJCQlyZWdpc3RyeS5iaW5kKERhdGUuY2xhc3MsIERhdGVDb252ZXJ0ZXIuY2xhc3MpOworCQkJCisJCQlMaXN0PEFwcG9pbnRtZW50PiBsaXN0ID0gcmVhZExpc3Qoc2VyaWFsaXplciwgZiwgImFwcG9pbnRlbWVudHMueG1sIiwgImFwcG9pbnRtZW50cyIsIEFwcG9pbnRtZW50LmNsYXNzKTsKKwkJCWZvciAoQXBwb2ludG1lbnQgYSA6IGxpc3QpIHsKKwkJCQlMb25nIGFwcElkID0gYS5nZXRBcHBvaW50bWVudElkKCk7CisKKwkJCQkvLyBXZSBuZWVkIHRvIHJlc2V0IHRoaXMgYXMgb3BlbkpQQSByZWplY3QgdG8gc3RvcmUgdGhlbSBvdGhlcndpc2UKKwkJCQlhLnNldEFwcG9pbnRtZW50SWQobnVsbCk7CisJCQkJaWYgKGEuZ2V0VXNlcklkKCkgIT0gbnVsbCAmJiBhLmdldFVzZXJJZCgpLmdldFVzZXJfaWQoKSA9PSBudWxsKSB7CisJCQkJCWEuc2V0VXNlcklkKG51bGwpOworCQkJCX0KKwkJCQlMb25nIG5ld0FwcElkID0gYXBwb2ludG1lbnREYW8uYWRkQXBwb2ludG1lbnRPYmooYSk7CisJCQkJYXBwb2ludG1lbnRzTWFwLnB1dChhcHBJZCwgbmV3QXBwSWQpOworCQkJfQorCQl9CisKKwkJbG9nLmluZm8oIkFwcG9pbnRlbWVudCBpbXBvcnQgY29tcGxldGUsIHN0YXJ0aW5nIG1lZXRpbmcgbWVtYmVycyBpbXBvcnQiKTsKKwkJLyoKKwkJICogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIEltcG9ydCBNZWV0aW5nTWVtYmVycworCQkgKiAKKwkJICogUmVtaW5kZXIgSW52aXRhdGlvbnMgd2lsbCBiZSBOT1Qgc2VuZCEKKwkJICovCisJCXsKKwkJCVJlZ2lzdHJ5IHJlZ2lzdHJ5ID0gbmV3IFJlZ2lzdHJ5KCk7CisJCQlTdHJhdGVneSBzdHJhdGVneSA9IG5ldyBSZWdpc3RyeVN0cmF0ZWd5KHJlZ2lzdHJ5KTsKKwkJCVNlcmlhbGl6ZXIgc2VyaWFsaXplciA9IG5ldyBQZXJzaXN0ZXIoc3RyYXRlZ3kpOworCQorCQkJcmVnaXN0cnkuYmluZChVc2VyLmNsYXNzLCBuZXcgVXNlckNvbnZlcnRlcih1c2Vyc0RhbywgdXNlcnNNYXApKTsKKwkJCXJlZ2lzdHJ5LmJpbmQoQXBwb2ludG1lbnQuY2xhc3MsIG5ldyBBcHBvaW50bWVudENvbnZlcnRlcihhcHBvaW50bWVudERhbywgYXBwb2ludG1lbnRzTWFwKSk7CisJCQkKKwkJCUxpc3Q8TWVldGluZ01lbWJlcj4gbGlzdCA9IHJlYWRMaXN0KHNlcmlhbGl6ZXIsIGYsICJtZWV0aW5nbWVtYmVycy54bWwiLCAibWVldGluZ21lbWJlcnMiLCBNZWV0aW5nTWVtYmVyLmNsYXNzKTsKKwkJCWZvciAoTWVldGluZ01lbWJlciBtYSA6IGxpc3QpIHsKKwkJCQlpZiAobWEuZ2V0VXNlcmlkKCkgIT0gbnVsbCAmJiBtYS5nZXRVc2VyaWQoKS5nZXRVc2VyX2lkKCkgPT0gbnVsbCkgeworCQkJCQltYS5zZXRVc2VyaWQobnVsbCk7CisJCQkJfQorCQkJCWlmICghbWEuZ2V0RGVsZXRlZCgpKSB7CisJCQkJCS8vIFdlIG5lZWQgdG8gcmVzZXQgdGhpcyBhcyBvcGVuSlBBIHJlamVjdCB0byBzdG9yZSB0aGVtIG90aGVyd2lzZQorCQkJCQltYS5zZXRNZWV0aW5nTWVtYmVySWQobnVsbCk7CisJCQkJCW1lZXRpbmdNZW1iZXJEYW8uYWRkTWVldGluZ01lbWJlckJ5T2JqZWN0KG1hKTsKKwkJCQl9CisJCQl9CisJCX0KKworCQlsb2cuaW5mbygiTWVldGluZyBtZW1iZXJzIGltcG9ydCBjb21wbGV0ZSwgc3RhcnRpbmcgbGRhcCBjb25maWcgaW1wb3J0Iik7CisJCS8qCisJCSAqICMjIyMjIyMjIyMjIyMjIyMjIyMjIyBJbXBvcnQgTERBUCBDb25maWdzCisJCSAqLworCQl7CisJCQlMaXN0PExkYXBDb25maWc+IGxpc3QgPSByZWFkTGlzdChzaW1wbGVTZXJpYWxpemVyLCBmLCAibGRhcGNvbmZpZ3MueG1sIiwgImxkYXBjb25maWdzIiwgTGRhcENvbmZpZy5jbGFzcywgdHJ1ZSk7CisJCQlmb3IgKExkYXBDb25maWcgYyA6IGxpc3QpIHsKKwkJCQlsZGFwQ29uZmlnRGFvLmFkZExkYXBDb25maWdCeU9iamVjdChjKTsKKwkJCX0KKwkJfQorCisJCWxvZy5pbmZvKCJMZGFwIGNvbmZpZyBpbXBvcnQgY29tcGxldGUsIHN0YXJ0aW5nIHJlY29yZGluZ3MgaW1wb3J0Iik7CisJCS8qCisJCSAqICMjIyMjIyMjIyMjIyMjIyMjIyMjIyBJbXBvcnQgUmVjb3JkaW5ncworCQkgKi8KKwkJeworCQkJUmVnaXN0cnkgcmVnaXN0cnkgPSBuZXcgUmVnaXN0cnkoKTsKKwkJCVN0cmF0ZWd5IHN0cmF0ZWd5ID0gbmV3IFJlZ2lzdHJ5U3RyYXRlZ3kocmVnaXN0cnkpOworCQkJUmVnaXN0cnlNYXRjaGVyIG1hdGNoZXIgPSBuZXcgUmVnaXN0cnlNYXRjaGVyKCk7IC8vVE9ETyBuZWVkIHRvIGJlIHJlbW92ZWQgaW4gdGhlIGxhdGVyIHZlcnNpb25zCisJCQlTZXJpYWxpemVyIHNlcmlhbGl6ZXIgPSBuZXcgUGVyc2lzdGVyKHN0cmF0ZWd5LCBtYXRjaGVyKTsKKworCQkJbWF0Y2hlci5iaW5kKExvbmcuY2xhc3MsIExvbmdUcmFuc2Zvcm0uY2xhc3MpOworCQkJbWF0Y2hlci5iaW5kKEludGVnZXIuY2xhc3MsIEludGVnZXJUcmFuc2Zvcm0uY2xhc3MpOworCQkJcmVnaXN0cnkuYmluZChEYXRlLmNsYXNzLCBEYXRlQ29udmVydGVyLmNsYXNzKTsKKwkJCQorCQkJTGlzdDxGbHZSZWNvcmRpbmc+IGxpc3QgPSByZWFkTGlzdChzZXJpYWxpemVyLCBmLCAiZmx2UmVjb3JkaW5ncy54bWwiLCAiZmx2cmVjb3JkaW5ncyIsIEZsdlJlY29yZGluZy5jbGFzcywgdHJ1ZSk7CisJCQlmb3IgKEZsdlJlY29yZGluZyBmciA6IGxpc3QpIHsKKwkJCQlmci5zZXRGbHZSZWNvcmRpbmdJZCgwKTsKKwkJCQlpZiAoZnIuZ2V0Um9vbV9pZCgpICE9IG51bGwpIHsKKwkJCQkJZnIuc2V0Um9vbV9pZChyb29tc01hcC5nZXQoZnIuZ2V0Um9vbV9pZCgpKSk7CisJCQkJfQorCQkJCWlmIChmci5nZXRPd25lcklkKCkgIT0gbnVsbCkgeworCQkJCQlmci5zZXRPd25lcklkKHVzZXJzTWFwLmdldChmci5nZXRPd25lcklkKCkpKTsKKwkJCQl9CisJCQkJaWYgKGZyLmdldEZsdlJlY29yZGluZ01ldGFEYXRhKCkgIT0gbnVsbCkgeworCQkJCQlmb3IgKEZsdlJlY29yZGluZ01ldGFEYXRhIG1ldGEgOiBmci5nZXRGbHZSZWNvcmRpbmdNZXRhRGF0YSgpKSB7CisJCQkJCQltZXRhLnNldEZsdlJlY29yZGluZ01ldGFEYXRhSWQoMCk7CisJCQkJCQltZXRhLnNldEZsdlJlY29yZGluZyhmcik7CisJCQkJCX0KKwkJCQl9CisJCQkJZmx2UmVjb3JkaW5nRGFvLmFkZEZsdlJlY29yZGluZ09iaihmcik7CisJCQl9CisJCX0KKworCQlsb2cuaW5mbygiRkxWcmVjb3JkaW5nIGltcG9ydCBjb21wbGV0ZSwgc3RhcnRpbmcgcHJpdmF0ZSBtZXNzYWdlIGZvbGRlciBpbXBvcnQiKTsKKwkJLyoKKwkJICogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIEltcG9ydCBQcml2YXRlIE1lc3NhZ2UgRm9sZGVycworCQkgKi8KKwkJeworCQkJTGlzdDxQcml2YXRlTWVzc2FnZUZvbGRlcj4gbGlzdCA9IHJlYWRMaXN0KHNpbXBsZVNlcmlhbGl6ZXIsIGYsICJwcml2YXRlTWVzc2FnZUZvbGRlci54bWwiCisJCQkJLCAicHJpdmF0ZW1lc3NhZ2Vmb2xkZXJzIiwgUHJpdmF0ZU1lc3NhZ2VGb2xkZXIuY2xhc3MsIHRydWUpOworCQkJZm9yIChQcml2YXRlTWVzc2FnZUZvbGRlciBwIDogbGlzdCkgeworCQkJCUxvbmcgZm9sZGVySWQgPSBwLmdldFByaXZhdGVNZXNzYWdlRm9sZGVySWQoKTsKKwkJCQlQcml2YXRlTWVzc2FnZUZvbGRlciBzdG9yZWRGb2xkZXIgPSBwcml2YXRlTWVzc2FnZUZvbGRlckRhbworCQkJCQkJLmdldFByaXZhdGVNZXNzYWdlRm9sZGVyQnlJZChmb2xkZXJJZCk7CisJCQkJaWYgKHN0b3JlZEZvbGRlciA9PSBudWxsKSB7CisJCQkJCXAuc2V0UHJpdmF0ZU1lc3NhZ2VGb2xkZXJJZCgwKTsKKwkJCQkJTG9uZyBuZXdGb2xkZXJJZCA9IHByaXZhdGVNZXNzYWdlRm9sZGVyRGFvCisJCQkJCQkJLmFkZFByaXZhdGVNZXNzYWdlRm9sZGVyT2JqKHApOworCQkJCQltZXNzYWdlRm9sZGVyc01hcC5wdXQoZm9sZGVySWQsIG5ld0ZvbGRlcklkKTsKKwkJCQl9CisJCQl9CisJCX0KKworCQlsb2cuaW5mbygiUHJpdmF0ZSBtZXNzYWdlIGZvbGRlciBpbXBvcnQgY29tcGxldGUsIHN0YXJ0aW5nIHVzZXIgY29udGFjdHMgaW1wb3J0Iik7CisJCS8qCisJCSAqICMjIyMjIyMjIyMjIyMjIyMjIyMjIyBJbXBvcnQgVXNlciBDb250YWN0cworCQkgKi8KKwkJeworCQkJUmVnaXN0cnkgcmVnaXN0cnkgPSBuZXcgUmVnaXN0cnkoKTsKKwkJCVN0cmF0ZWd5IHN0cmF0ZWd5ID0gbmV3IFJlZ2lzdHJ5U3RyYXRlZ3kocmVnaXN0cnkpOworCQkJU2VyaWFsaXplciBzZXJpYWxpemVyID0gbmV3IFBlcnNpc3RlcihzdHJhdGVneSk7CisJCisJCQlyZWdpc3RyeS5iaW5kKFVzZXIuY2xhc3MsIG5ldyBVc2VyQ29udmVydGVyKHVzZXJzRGFvLCB1c2Vyc01hcCkpOworCQkJCisJCQlMaXN0PFVzZXJDb250YWN0PiBsaXN0ID0gcmVhZExpc3Qoc2VyaWFsaXplciwgZiwgInVzZXJDb250YWN0cy54bWwiLCAidXNlcmNvbnRhY3RzIiwgVXNlckNvbnRhY3QuY2xhc3MsIHRydWUpOworCQkJZm9yIChVc2VyQ29udGFjdCB1YyA6IGxpc3QpIHsKKwkJCQlMb25nIHVjSWQgPSB1Yy5nZXRVc2VyQ29udGFjdElkKCk7CisJCQkJVXNlckNvbnRhY3Qgc3RvcmVkVUMgPSB1c2VyQ29udGFjdHNEYW8uZ2V0VXNlckNvbnRhY3RzKHVjSWQpOworCisJCQkJaWYgKHN0b3JlZFVDID09IG51bGwgJiYgdWMuZ2V0Q29udGFjdCgpICE9IG51bGwgJiYgdWMuZ2V0Q29udGFjdCgpLmdldFVzZXJfaWQoKSAhPSBudWxsKSB7CisJCQkJCXVjLnNldFVzZXJDb250YWN0SWQoMCk7CisJCQkJCUxvbmcgbmV3SWQgPSB1c2VyQ29udGFjdHNEYW8uYWRkVXNlckNvbnRhY3RPYmoodWMpOworCQkJCQl1c2VyQ29udGFjdHNNYXAucHV0KHVjSWQsIG5ld0lkKTsKKwkJCQl9CisJCQl9CisJCX0KKworCQlsb2cuaW5mbygiVXNlcmNvbnRhY3QgaW1wb3J0IGNvbXBsZXRlLCBzdGFydGluZyBwcml2YXRlIG1lc3NhZ2VzIGl0ZW0gaW1wb3J0Iik7CisJCS8qCisJCSAqICMjIyMjIyMjIyMjIyMjIyMjIyMjIyBJbXBvcnQgUHJpdmF0ZSBNZXNzYWdlcworCQkgKi8KKwkJeworCQkJUmVnaXN0cnkgcmVnaXN0cnkgPSBuZXcgUmVnaXN0cnkoKTsKKwkJCVN0cmF0ZWd5IHN0cmF0ZWd5ID0gbmV3IFJlZ2lzdHJ5U3RyYXRlZ3kocmVnaXN0cnkpOworCQkJU2VyaWFsaXplciBzZXJpYWxpemVyID0gbmV3IFBlcnNpc3RlcihzdHJhdGVneSk7CisJCisJCQlyZWdpc3RyeS5iaW5kKFVzZXIuY2xhc3MsIG5ldyBVc2VyQ29udmVydGVyKHVzZXJzRGFvLCB1c2Vyc01hcCkpOworCQkJcmVnaXN0cnkuYmluZChSb29tLmNsYXNzLCBuZXcgUm9vbUNvbnZlcnRlcihyb29tRGFvLCByb29tc01hcCkpOworCQkJcmVnaXN0cnkuYmluZChEYXRlLmNsYXNzLCBEYXRlQ29udmVydGVyLmNsYXNzKTsKKwkJCQorCQkJTGlzdDxQcml2YXRlTWVzc2FnZT4gbGlzdCA9IHJlYWRMaXN0KHNlcmlhbGl6ZXIsIGYsICJwcml2YXRlTWVzc2FnZXMueG1sIiwgInByaXZhdGVtZXNzYWdlcyIsIFByaXZhdGVNZXNzYWdlLmNsYXNzLCB0cnVlKTsKKwkJCWZvciAoUHJpdmF0ZU1lc3NhZ2UgcCA6IGxpc3QpIHsKKwkJCQlwLnNldFByaXZhdGVNZXNzYWdlSWQoMCk7CisJCQkJcC5zZXRQcml2YXRlTWVzc2FnZUZvbGRlcklkKAorCQkJCQlnZXROZXdJZChwLmdldFByaXZhdGVNZXNzYWdlRm9sZGVySWQoKSwgTWFwcy5NRVNTQUdFRk9MREVSUykpOworCQkJCXAuc2V0VXNlckNvbnRhY3RJZCgKKwkJCQkJZ2V0TmV3SWQocC5nZXRVc2VyQ29udGFjdElkKCksIE1hcHMuVVNFUkNPTlRBQ1RTKSk7CisJCQkJaWYgKHAuZ2V0Um9vbSgpICE9IG51bGwgJiYgcC5nZXRSb29tKCkuZ2V0Um9vbXNfaWQoKSA9PSBudWxsKSB7CisJCQkJCXAuc2V0Um9vbShudWxsKTsKKwkJCQl9CisJCQkJaWYgKHAuZ2V0VG8oKSAhPSBudWxsICYmIHAuZ2V0VG8oKS5nZXRVc2VyX2lkKCkgPT0gbnVsbCkgeworCQkJCQlwLnNldFRvKG51bGwpOworCQkJCX0KKwkJCQlpZiAocC5nZXRGcm9tKCkgIT0gbnVsbCAmJiBwLmdldEZyb20oKS5nZXRVc2VyX2lkKCkgPT0gbnVsbCkgeworCQkJCQlwLnNldEZyb20obnVsbCk7CisJCQkJfQorCQkJCWlmIChwLmdldE93bmVyKCkgIT0gbnVsbCAmJiBwLmdldE93bmVyKCkuZ2V0VXNlcl9pZCgpID09IG51bGwpIHsKKwkJCQkJcC5zZXRPd25lcihudWxsKTsKKwkJCQl9CisJCQkJcHJpdmF0ZU1lc3NhZ2VzRGFvLmFkZFByaXZhdGVNZXNzYWdlT2JqKHApOworCQkJfQorCQl9CisKKwkJbG9nLmluZm8oIlByaXZhdGUgbWVzc2FnZSBpbXBvcnQgY29tcGxldGUsIHN0YXJ0aW5nIGZpbGUgZXhwbG9yZXIgaXRlbSBpbXBvcnQiKTsKKwkJLyoKKwkJICogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIEltcG9ydCBGaWxlLUV4cGxvcmVyIEl0ZW1zCisJCSAqLworCQl7CisJCQlSZWdpc3RyeSByZWdpc3RyeSA9IG5ldyBSZWdpc3RyeSgpOworCQkJU3RyYXRlZ3kgc3RyYXRlZ3kgPSBuZXcgUmVnaXN0cnlTdHJhdGVneShyZWdpc3RyeSk7CisJCQlSZWdpc3RyeU1hdGNoZXIgbWF0Y2hlciA9IG5ldyBSZWdpc3RyeU1hdGNoZXIoKTsgLy9UT0RPIG5lZWQgdG8gYmUgcmVtb3ZlZCBpbiB0aGUgbGF0ZXIgdmVyc2lvbnMKKwkJCVNlcmlhbGl6ZXIgc2VyaWFsaXplciA9IG5ldyBQZXJzaXN0ZXIoc3RyYXRlZ3ksIG1hdGNoZXIpOworCisJCQltYXRjaGVyLmJpbmQoTG9uZy5jbGFzcywgTG9uZ1RyYW5zZm9ybS5jbGFzcyk7CisJCQltYXRjaGVyLmJpbmQoSW50ZWdlci5jbGFzcywgSW50ZWdlclRyYW5zZm9ybS5jbGFzcyk7CisJCQlyZWdpc3RyeS5iaW5kKERhdGUuY2xhc3MsIERhdGVDb252ZXJ0ZXIuY2xhc3MpOworCQkJCisJCQlMaXN0PEZpbGVFeHBsb3Jlckl0ZW0+IGxpc3QgPSByZWFkTGlzdChzZXJpYWxpemVyLCBmLCAiZmlsZUV4cGxvcmVySXRlbXMueG1sIiwgImZpbGVFeHBsb3Jlckl0ZW1zIiwgRmlsZUV4cGxvcmVySXRlbS5jbGFzcywgdHJ1ZSk7CisJCQlmb3IgKEZpbGVFeHBsb3Jlckl0ZW0gZmlsZSA6IGxpc3QpIHsKKwkJCQkvLyBXZSBuZWVkIHRvIHJlc2V0IHRoaXMgYXMgb3BlbkpQQSByZWplY3QgdG8gc3RvcmUgdGhlbSBvdGhlcndpc2UKKwkJCQlmaWxlLnNldEZpbGVFeHBsb3Jlckl0ZW1JZCgwKTsKKwkJCQlMb25nIHJvb21JZCA9IGZpbGUuZ2V0Um9vbV9pZCgpOworCQkJCWZpbGUuc2V0Um9vbV9pZChyb29tc01hcC5jb250YWluc0tleShyb29tSWQpID8gcm9vbXNNYXAuZ2V0KHJvb21JZCkgOiBudWxsKTsKKwkJCQlpZiAoZmlsZS5nZXRPd25lcklkKCkgIT0gbnVsbCkgeworCQkJCQlmaWxlLnNldE93bmVySWQodXNlcnNNYXAuZ2V0KGZpbGUuZ2V0T3duZXJJZCgpKSk7CisJCQkJfQorCQkJCWZpbGVFeHBsb3Jlckl0ZW1EYW8uYWRkRmlsZUV4cGxvcmVySXRlbShmaWxlKTsKKwkJCX0KKwkJfQorCisJCWxvZy5pbmZvKCJGaWxlIGV4cGxvcmVyIGl0ZW0gaW1wb3J0IGNvbXBsZXRlLCBzdGFydGluZyBmaWxlIHBvbGwgaW1wb3J0Iik7CisJCS8qCisJCSAqICMjIyMjIyMjIyMjIyMjIyMjIyMjIyBJbXBvcnQgUm9vbSBQb2xscworCQkgKi8KKwkJeworCQkJUmVnaXN0cnkgcmVnaXN0cnkgPSBuZXcgUmVnaXN0cnkoKTsKKwkJCVN0cmF0ZWd5IHN0cmF0ZWd5ID0gbmV3IFJlZ2lzdHJ5U3RyYXRlZ3kocmVnaXN0cnkpOworCQkJUmVnaXN0cnlNYXRjaGVyIG1hdGNoZXIgPSBuZXcgUmVnaXN0cnlNYXRjaGVyKCk7IC8vVE9ETyBuZWVkIHRvIGJlIHJlbW92ZWQgaW4gdGhlIGxhdGVyIHZlcnNpb25zCisJCQlTZXJpYWxpemVyIHNlcmlhbGl6ZXIgPSBuZXcgUGVyc2lzdGVyKHN0cmF0ZWd5LCBtYXRjaGVyKTsKKwkKKwkJCW1hdGNoZXIuYmluZChJbnRlZ2VyLmNsYXNzLCBJbnRlZ2VyVHJhbnNmb3JtLmNsYXNzKTsKKwkJCXJlZ2lzdHJ5LmJpbmQoVXNlci5jbGFzcywgbmV3IFVzZXJDb252ZXJ0ZXIodXNlcnNEYW8sIHVzZXJzTWFwKSk7CisJCQlyZWdpc3RyeS5iaW5kKFJvb20uY2xhc3MsIG5ldyBSb29tQ29udmVydGVyKHJvb21EYW8sIHJvb21zTWFwKSk7CisJCQlyZWdpc3RyeS5iaW5kKFBvbGxUeXBlLmNsYXNzLCBuZXcgUG9sbFR5cGVDb252ZXJ0ZXIocG9sbE1hbmFnZXIpKTsKKwkJCXJlZ2lzdHJ5LmJpbmQoRGF0ZS5jbGFzcywgRGF0ZUNvbnZlcnRlci5jbGFzcyk7CisJCQkKKwkJCUxpc3Q8Um9vbVBvbGw+IGxpc3QgPSByZWFkTGlzdChzZXJpYWxpemVyLCBmLCAicm9vbXBvbGxzLnhtbCIsICJyb29tcG9sbHMiLCBSb29tUG9sbC5jbGFzcywgdHJ1ZSk7CisJCQlmb3IgKFJvb21Qb2xsIHJwIDogbGlzdCkgeworCQkJCWlmIChycC5nZXRSb29tKCkuZ2V0Um9vbXNfaWQoKSA9PSBudWxsKSB7CisJCQkJCS8vcm9vbSB3YXMgZGVsZXRlZAorCQkJCQljb250aW51ZTsKKwkJCQl9CisJCQkJaWYgKHJwLmdldENyZWF0ZWRCeSgpLmdldFVzZXJfaWQoKSA9PSBudWxsKSB7CisJCQkJCXJwLnNldENyZWF0ZWRCeShudWxsKTsKKwkJCQl9CisJCQkJZm9yIChSb29tUG9sbEFuc3dlcnMgcnBhIDogcnAuZ2V0Um9vbVBvbGxBbnN3ZXJMaXN0KCkpIHsKKwkJCQkJaWYgKHJwYS5nZXRWb3RlZFVzZXIoKS5nZXRVc2VyX2lkKCkgPT0gbnVsbCkgeworCQkJCQkJcnBhLnNldFZvdGVkVXNlcihudWxsKTsKKwkJCQkJfQorCQkJCX0KKwkJCQlwb2xsTWFuYWdlci5zYXZlUG9sbEJhY2t1cChycCk7CisJCQl9CisJCX0KKwkJCisJCWxvZy5pbmZvKCJQb2xsIGltcG9ydCBjb21wbGV0ZSwgc3RhcnRpbmcgY29uZmlncyBpbXBvcnQiKTsKKwkJLyoKKwkJICogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIEltcG9ydCBDb25maWdzCisJCSAqLworCQl7CisJCQlSZWdpc3RyeSByZWdpc3RyeSA9IG5ldyBSZWdpc3RyeSgpOworCQkJU3RyYXRlZ3kgc3RyYXRlZ3kgPSBuZXcgUmVnaXN0cnlTdHJhdGVneShyZWdpc3RyeSk7CisJCQlSZWdpc3RyeU1hdGNoZXIgbWF0Y2hlciA9IG5ldyBSZWdpc3RyeU1hdGNoZXIoKTsgLy9UT0RPIG5lZWQgdG8gYmUgcmVtb3ZlZCBpbiB0aGUgbGF0ZXIgdmVyc2lvbnMKKwkJCVNlcmlhbGl6ZXIgc2VyaWFsaXplciA9IG5ldyBQZXJzaXN0ZXIoc3RyYXRlZ3ksIG1hdGNoZXIpOworCisJCQltYXRjaGVyLmJpbmQoTG9uZy5jbGFzcywgTG9uZ1RyYW5zZm9ybS5jbGFzcyk7CisJCQlyZWdpc3RyeS5iaW5kKERhdGUuY2xhc3MsIERhdGVDb252ZXJ0ZXIuY2xhc3MpOworCQkJcmVnaXN0cnkuYmluZChVc2VyLmNsYXNzLCBuZXcgVXNlckNvbnZlcnRlcih1c2Vyc0RhbywgdXNlcnNNYXApKTsKKwkJCQorCQkJTGlzdDxDb25maWd1cmF0aW9uPiBsaXN0ID0gcmVhZExpc3Qoc2VyaWFsaXplciwgZiwgImNvbmZpZ3MueG1sIiwgImNvbmZpZ3MiLCBDb25maWd1cmF0aW9uLmNsYXNzLCB0cnVlKTsKKwkJCWZvciAoQ29uZmlndXJhdGlvbiBjIDogbGlzdCkgeworCQkJCWlmIChjLmdldENvbmZfa2V5KCkgPT0gbnVsbCkgeworCQkJCQljb250aW51ZTsKKwkJCQl9CisJCQkJQ29uZmlndXJhdGlvbiBjZmcgPSBjb25maWd1cmF0aW9uRGFvLmdldChjLmdldENvbmZfa2V5KCkpOworCQkJCWMuc2V0Q29uZmlndXJhdGlvbl9pZChjZmcgPT0gbnVsbCA/IG51bGwgOiBjZmcuZ2V0Q29uZmlndXJhdGlvbl9pZCgpKTsKKwkJCQlpZiAoYy5nZXRVc2VyKCkgIT0gbnVsbCAmJiBjLmdldFVzZXIoKS5nZXRVc2VyX2lkKCkgPT0gbnVsbCkgeworCQkJCQljLnNldFVzZXIobnVsbCk7CisJCQkJfQorCQkJCWlmICgiY3J5cHRfQ2xhc3NOYW1lIi5lcXVhbHMoYy5nZXRDb25mX2tleSgpKSkgeworCQkJCQl0cnkgeworCQkJCQkJQ2xhc3MuZm9yTmFtZShjLmdldENvbmZfdmFsdWUoKSk7CisJCQkJCX0gY2F0Y2ggKENsYXNzTm90Rm91bmRFeGNlcHRpb24gZSkgeworCQkJCQkJYy5zZXRDb25mX3ZhbHVlKE1ENUltcGxlbWVudGF0aW9uLmNsYXNzLmdldENhbm9uaWNhbE5hbWUoKSk7CisJCQkJCX0KKwkJCQl9CisJCQkJY29uZmlndXJhdGlvbkRhby51cGRhdGUoYywgLTFMKTsKKwkJCX0KKwkJfQorCisJCWxvZy5pbmZvKCJDb25maWdzIGltcG9ydCBjb21wbGV0ZSwgc3RhcnRpbmcgY29weSBvZiBmaWxlcyBhbmQgZm9sZGVycyIpOworCQkvKgorCQkgKiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMgSW1wb3J0IHJlYWwgZmlsZXMgYW5kIGZvbGRlcnMKKwkJICovCisJCWltcG9ydEZvbGRlcnMoZik7CisKKwkJbG9nLmluZm8oIkZpbGUgZXhwbG9yZXIgaXRlbSBpbXBvcnQgY29tcGxldGUsIGNsZWFyaW5nIHRlbXAgZmlsZXMiKTsKKwkJCisJCUZpbGVIZWxwZXIucmVtb3ZlUmVjKGYpOworCX0KKwkKKwlAUmVxdWVzdE1hcHBpbmcodmFsdWUgPSAiL2JhY2t1cC51cGxvYWQiLCBtZXRob2QgPSBSZXF1ZXN0TWV0aG9kLlBPU1QpCisJcHVibGljIHZvaWQgc2VydmljZShIdHRwU2VydmxldFJlcXVlc3QgcmVxdWVzdCwKKwkJCUh0dHBTZXJ2bGV0UmVzcG9uc2UgaHR0cFNlcnZsZXRSZXNwb25zZSkKKwkJCXRocm93cyBTZXJ2bGV0RXhjZXB0aW9uLCBJT0V4Y2VwdGlvbiB7CisKKyAgICAJVXBsb2FkSW5mbyBpbmZvID0gdmFsaWRhdGUocmVxdWVzdCwgdHJ1ZSk7CisgICAgCXRyeSB7CisJCQlNdWx0aXBhcnRGaWxlIG11bHRpcGFydEZpbGUgPSBpbmZvLmZpbGU7CisJCQlJbnB1dFN0cmVhbSBpcyA9IG11bHRpcGFydEZpbGUuZ2V0SW5wdXRTdHJlYW0oKTsKKwkJCXBlcmZvcm1JbXBvcnQoaXMpOworCisJCQlVcGxvYWRDb21wbGV0ZU1lc3NhZ2UgdXBsb2FkQ29tcGxldGVNZXNzYWdlID0gbmV3IFVwbG9hZENvbXBsZXRlTWVzc2FnZSgKKwkJCQkJCWluZm8udXNlcklkLAorCQkJCQkJImxpYnJhcnkiLCAvL21lc3NhZ2UKKwkJCQkJCSJpbXBvcnQiLCAvL2FjdGlvbgorCQkJCQkJIiIsIC8vZXJyb3IKKwkJCQkJCWluZm8uZmlsZW5hbWUpOworCQkJCisJCQlzY29wZUFwcGxpY2F0aW9uQWRhcHRlci5zZW5kVXBsb2FkQ29tcGxldE1lc3NhZ2VCeVB1YmxpY1NJRCgKKwkJCQkJdXBsb2FkQ29tcGxldGVNZXNzYWdlLCBpbmZvLnB1YmxpY1NJRCk7CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCWxvZy5lcnJvcigiW0ltcG9ydEV4cG9ydF0iLCBlKTsKKwkJCXRocm93IG5ldyBTZXJ2bGV0RXhjZXB0aW9uKGUpOworCQl9CisKKwkJcmV0dXJuOworCX0KKworCXByaXZhdGUgPFQ+IExpc3Q8VD4gcmVhZExpc3QoU2VyaWFsaXplciBzZXIsIEZpbGUgYmFzZURpciwgU3RyaW5nIGZpbGVOYW1lLCBTdHJpbmcgbGlzdE5vZGVOYW1lLCBDbGFzczxUPiBjbGF6eikgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCXJldHVybiByZWFkTGlzdChzZXIsIGJhc2VEaXIsIGZpbGVOYW1lLCBsaXN0Tm9kZU5hbWUsIGNsYXp6LCBmYWxzZSk7CisJfQorCQorCXByaXZhdGUgPFQ+IExpc3Q8VD4gcmVhZExpc3QoU2VyaWFsaXplciBzZXIsIEZpbGUgYmFzZURpciwgU3RyaW5nIGZpbGVOYW1lLCBTdHJpbmcgbGlzdE5vZGVOYW1lLCBDbGFzczxUPiBjbGF6eiwgYm9vbGVhbiBub3RUaG93KSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkJTGlzdDxUPiBsaXN0ID0gbmV3IEFycmF5TGlzdDxUPigpOworCQlGaWxlIHhtbCA9IG5ldyBGaWxlKGJhc2VEaXIsIGZpbGVOYW1lKTsKKwkJaWYgKCF4bWwuZXhpc3RzKCkpIHsKKwkJCWZpbmFsIFN0cmluZyBtc2cgPSBmaWxlTmFtZSArICIgbWlzc2luZyI7CisJCQlpZiAobm90VGhvdykgeworCQkJCWxvZy5kZWJ1Zyhtc2cpOworCQkJfSBlbHNlIHsKKwkJCQl0aHJvdyBuZXcgRXhjZXB0aW9uKG1zZyk7CisJCQl9CisJCX0gZWxzZSB7CisJCQlJbnB1dE5vZGUgcm9vdCA9IE5vZGVCdWlsZGVyLnJlYWQobmV3IEZpbGVJbnB1dFN0cmVhbSh4bWwpKTsKKwkJCUlucHV0Tm9kZSBsaXN0Tm9kZSA9IHJvb3QuZ2V0TmV4dCgpOworCQkJaWYgKGxpc3ROb2RlTmFtZS5lcXVhbHMobGlzdE5vZGUuZ2V0TmFtZSgpKSkgeworCQkJCUlucHV0Tm9kZSBpdGVtID0gbGlzdE5vZGUuZ2V0TmV4dCgpOworCQkJCXdoaWxlIChpdGVtICE9IG51bGwpIHsKKwkJCQkJVCBvID0gc2VyLnJlYWQoY2xhenosIGl0ZW0sIGZhbHNlKTsKKwkJCQkJbGlzdC5hZGQobyk7CisJCQkJCWl0ZW0gPSBsaXN0Tm9kZS5nZXROZXh0KCk7CisJCQkJfQorCQkJfQorCQl9CisJCXJldHVybiBsaXN0OworCX0KKwkKKwlwcml2YXRlIE5vZGUgZ2V0Tm9kZShOb2RlIGRvYywgU3RyaW5nIG5hbWUpIHsKKwkJTm9kZUxpc3QgbmwgPSBkb2MuZ2V0Q2hpbGROb2RlcygpOworCQlmb3IgKGludCBpID0gMDsgaSA8IG5sLmdldExlbmd0aCgpOyArK2kpIHsKKwkJCU5vZGUgbm9kZSA9IG5sLml0ZW0oaSk7CisJCQlpZiAobm9kZS5nZXROb2RlVHlwZSgpID09IE5vZGUuRUxFTUVOVF9OT0RFICYmIG5hbWUuZXF1YWxzKG5vZGUuZ2V0Tm9kZU5hbWUoKSkpIHsKKwkJCQlyZXR1cm4gbm9kZTsKKwkJCX0KKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisJCisJcHVibGljIExpc3Q8VXNlcj4gcmVhZFVzZXJMaXN0KElucHV0U3RyZWFtIHhtbCwgU3RyaW5nIGxpc3ROb2RlTmFtZSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCXJldHVybiByZWFkVXNlckxpc3QobmV3IElucHV0U291cmNlKHhtbCksIGxpc3ROb2RlTmFtZSk7CisJfQorCQorCXB1YmxpYyBMaXN0PFVzZXI+IHJlYWRVc2VyTGlzdChGaWxlIGJhc2VEaXIsIFN0cmluZyBmaWxlTmFtZSwgU3RyaW5nIGxpc3ROb2RlTmFtZSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCUZpbGUgeG1sID0gbmV3IEZpbGUoYmFzZURpciwgZmlsZU5hbWUpOworCQlpZiAoIXhtbC5leGlzdHMoKSkgeworCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbihmaWxlTmFtZSArICIgbWlzc2luZyIpOworCQl9CisJCQorCQlyZXR1cm4gcmVhZFVzZXJMaXN0KG5ldyBJbnB1dFNvdXJjZSh4bWwudG9VUkkoKS50b0FTQ0lJU3RyaW5nKCkpLCBsaXN0Tm9kZU5hbWUpOworCX0KKwkKKwkvL0ZJWE1FIChuZWVkIHRvIGJlIHJlbW92ZWQgaW4gbGF0ZXIgdmVyc2lvbnMpIEhBQ0sgdG8gZml4IDIgZGVsZXRlZCBub2RlcyBpbiB1c2Vycy54bWwgYW5kIGlubGluZSBBZHJlc3NlcyBhbmQgc2lwRGF0YQorCXByaXZhdGUgTGlzdDxVc2VyPiByZWFkVXNlckxpc3QoSW5wdXRTb3VyY2UgeG1sLCBTdHJpbmcgbGlzdE5vZGVOYW1lKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkJUmVnaXN0cnkgcmVnaXN0cnkgPSBuZXcgUmVnaXN0cnkoKTsKKwkJU3RyYXRlZ3kgc3RyYXRlZ3kgPSBuZXcgUmVnaXN0cnlTdHJhdGVneShyZWdpc3RyeSk7CisJCVNlcmlhbGl6ZXIgc2VyID0gbmV3IFBlcnNpc3RlcihzdHJhdGVneSk7CisKKwkJcmVnaXN0cnkuYmluZChPcmdhbmlzYXRpb24uY2xhc3MsIG5ldyBPcmdhbmlzYXRpb25Db252ZXJ0ZXIob3JnRGFvLCBvcmdhbmlzYXRpb25zTWFwKSk7CisJCXJlZ2lzdHJ5LmJpbmQoT21UaW1lWm9uZS5jbGFzcywgbmV3IE9tVGltZVpvbmVDb252ZXJ0ZXIob21UaW1lWm9uZURhb0ltcGwpKTsKKwkJcmVnaXN0cnkuYmluZChTdGF0ZS5jbGFzcywgbmV3IFN0YXRlQ29udmVydGVyKHN0YXRlbWFuYWdlbWVudCkpOworCQlyZWdpc3RyeS5iaW5kKERhdGUuY2xhc3MsIERhdGVDb252ZXJ0ZXIuY2xhc3MpOworCisJCURvY3VtZW50QnVpbGRlciBkQnVpbGRlciA9IERvY3VtZW50QnVpbGRlckZhY3RvcnkubmV3SW5zdGFuY2UoKS5uZXdEb2N1bWVudEJ1aWxkZXIoKTsKKwkJRG9jdW1lbnQgZG9jID0gZEJ1aWxkZXIucGFyc2UoeG1sKTsKKwkJTm9kZUxpc3QgbmwgPSBnZXROb2RlKGdldE5vZGUoZG9jLCAicm9vdCIpLCBsaXN0Tm9kZU5hbWUpLmdldENoaWxkTm9kZXMoKTsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBubC5nZXRMZW5ndGgoKTsgKytpKSB7CisJCQlOb2RlIHVzZXIgPSBubC5pdGVtKGkpOworCQkJTm9kZUxpc3QgbmwxID0gdXNlci5nZXRDaGlsZE5vZGVzKCk7CisJCQlib29sZWFuIGRlbGV0ZWRGb3VuZCA9IGZhbHNlOworCQkJZm9yIChpbnQgaiA9IDA7IGogPCBubDEuZ2V0TGVuZ3RoKCk7ICsraikgeworCQkJCU5vZGUgbm9kZSA9IG5sMS5pdGVtKGopOworCQkJCWlmIChub2RlLmdldE5vZGVUeXBlKCkgPT0gTm9kZS5FTEVNRU5UX05PREUgJiYgImRlbGV0ZWQiLmVxdWFscyhub2RlLmdldE5vZGVOYW1lKCkpKSB7CisJCQkJCWlmIChkZWxldGVkRm91bmQpIHsKKwkJCQkJCXVzZXIucmVtb3ZlQ2hpbGQobm9kZSk7CisJCQkJCQlicmVhazsKKwkJCQkJfQorCQkJCQlkZWxldGVkRm91bmQgPSB0cnVlOworCQkJCX0KKwkJCX0KKwkJfQorCQkKKwkJU3RyaW5nV3JpdGVyIHN3ID0gbmV3IFN0cmluZ1dyaXRlcigpOworCQlUcmFuc2Zvcm1lciB4Zm9ybWVyID0gVHJhbnNmb3JtZXJGYWN0b3J5Lm5ld0luc3RhbmNlKCkubmV3VHJhbnNmb3JtZXIoKTsKKyAgICAgICAgeGZvcm1lci50cmFuc2Zvcm0obmV3IERPTVNvdXJjZShkb2MpLCBuZXcgU3RyZWFtUmVzdWx0KHN3KSk7CisgICAgICAgIAorCQlMaXN0PFVzZXI+IGxpc3QgPSBuZXcgQXJyYXlMaXN0PFVzZXI+KCk7CisJCUlucHV0Tm9kZSByb290ID0gTm9kZUJ1aWxkZXIucmVhZChuZXcgU3RyaW5nUmVhZGVyKHN3LnRvU3RyaW5nKCkpKTsKKwkJSW5wdXROb2RlIHJvb3QxID0gTm9kZUJ1aWxkZXIucmVhZChuZXcgU3RyaW5nUmVhZGVyKHN3LnRvU3RyaW5nKCkpKTsgLy9IQUNLIHRvIGhhbmRsZSBBZGRyZXNzIGluc2lkZSB1c2VyCisJCUlucHV0Tm9kZSBsaXN0Tm9kZSA9IHJvb3QuZ2V0TmV4dCgpOworCQlJbnB1dE5vZGUgbGlzdE5vZGUxID0gcm9vdDEuZ2V0TmV4dCgpOyAvL0hBQ0sgdG8gaGFuZGxlIEFkZHJlc3MgaW5zaWRlIHVzZXIKKwkJaWYgKGxpc3ROb2RlTmFtZS5lcXVhbHMobGlzdE5vZGUuZ2V0TmFtZSgpKSkgeworCQkJSW5wdXROb2RlIGl0ZW0gPSBsaXN0Tm9kZS5nZXROZXh0KCk7CisJCQlJbnB1dE5vZGUgaXRlbTEgPSBsaXN0Tm9kZTEuZ2V0TmV4dCgpOyAvL0hBQ0sgdG8gaGFuZGxlIEFkZHJlc3MgaW5zaWRlIHVzZXIKKwkJCXdoaWxlIChpdGVtICE9IG51bGwpIHsKKwkJCQlVc2VyIHUgPSBzZXIucmVhZChVc2VyLmNsYXNzLCBpdGVtLCBmYWxzZSk7CisJCQkJCisJCQkJLy9IQUNLIHRvIGhhbmRsZSBBZGRyZXNzIGluc2lkZSB1c2VyCisJCQkJaWYgKHUuZ2V0QWRyZXNzZXMoKSA9PSBudWxsKSB7CisJCQkJCUFkZHJlc3MgYSA9IHNlci5yZWFkKEFkZHJlc3MuY2xhc3MsIGl0ZW0xLCBmYWxzZSk7CisJCQkJCXUuc2V0QWRyZXNzZXMoYSk7CisJCQkJfQorCQkJCWxpc3QuYWRkKHUpOworCQkJCWl0ZW0gPSBsaXN0Tm9kZS5nZXROZXh0KCk7CisJCQkJZG8geworCQkJCQlpdGVtMSA9IGxpc3ROb2RlMS5nZXROZXh0KCk7IC8vSEFDSyB0byBoYW5kbGUgQWRkcmVzcyBpbnNpZGUgdXNlcgorCQkJCX0gd2hpbGUgKGl0ZW0gIT0gbnVsbCAmJiAhInVzZXIiLmVxdWFscyhpdGVtMS5nZXROYW1lKCkpKTsKKwkJCX0KKwkJfQorCQlyZXR1cm4gbGlzdDsKKwl9CisJCisJcHJpdmF0ZSBMb25nIGdldFByb2ZpbGVJZChGaWxlIGYpIHsKKwkJU3RyaW5nIG4gPSBmLmdldE5hbWUoKTsKKwkJaWYgKG4uaW5kZXhPZihwcm9maWxlc1ByZWZpeCkgPiAtMSkgeworCQkJcmV0dXJuIGltcG9ydExvbmdUeXBlKG4uc3Vic3RyaW5nKHByb2ZpbGVzUHJlZml4Lmxlbmd0aCgpKSk7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCQorCXByaXZhdGUgdm9pZCBpbXBvcnRGb2xkZXJzKEZpbGUgaW1wb3J0QmFzZURpcikgdGhyb3dzIElPRXhjZXB0aW9uIHsKKwkJLy8gTm93IGNoZWNrIHRoZSByb29tIGZpbGVzIGFuZCBpbXBvcnQgdGhlbQorCQlGaWxlIHJvb21GaWxlc0ZvbGRlciA9IG5ldyBGaWxlKGltcG9ydEJhc2VEaXIsICJyb29tRmlsZXMiKTsKKworCQlGaWxlIHVwbG9hZERpciA9IGdldFVwbG9hZERpcigpOworCisJCWxvZy5kZWJ1Zygicm9vbUZpbGVzRm9sZGVyIFBBVEggIiArIHJvb21GaWxlc0ZvbGRlci5nZXRDYW5vbmljYWxQYXRoKCkpOworCisJCWlmIChyb29tRmlsZXNGb2xkZXIuZXhpc3RzKCkpIHsKKwkJCWZvciAoRmlsZSBmaWxlIDogcm9vbUZpbGVzRm9sZGVyLmxpc3RGaWxlcygpKSB7CisJCQkJaWYgKGZpbGUuaXNEaXJlY3RvcnkoKSkgeworCQkJCQlTdHJpbmcgZk5hbWUgPSBmaWxlLmdldE5hbWUoKTsKKwkJCQkJaWYgKCJwcm9maWxlcyIuZXF1YWxzKGZOYW1lKSkgeworCQkJCQkJLy8gcHJvZmlsZSBzaG91bGQgY29ycmVzcG9uZCB0byB0aGUgbmV3IHVzZXIgaWQKKwkJCQkJCWZvciAoRmlsZSBwcm9maWxlIDogZmlsZS5saXN0RmlsZXMoKSkgeworCQkJCQkJCUxvbmcgb2xkSWQgPSBnZXRQcm9maWxlSWQocHJvZmlsZSk7CisJCQkJCQkJTG9uZyBpZCA9IG9sZElkICE9IG51bGwgPyBnZXROZXdJZChvbGRJZCwgTWFwcy5VU0VSUykgOiBudWxsOworCQkJCQkJCWlmIChpZCAhPSBudWxsKSB7CisJCQkJCQkJCWNvcHlSZWMocHJvZmlsZSwgZ2V0VXBsb2FkUHJvZmlsZXNVc2VyRGlyKGlkKSk7CisJCQkJCQkJfQorCQkJCQkJfQorCQkJCQkJY29udGludWU7CisJCQkJCX0gZWxzZSB7CisJCQkJCQkvLyBjaGVjayBpZiBmb2xkZXIgaXMgcm9vbSBmb2xkZXIsIHN0b3JlIGl0IHVuZGVyIG5ldyBpZCBpZiBuZWNlc3NhcnkKKwkJCQkJCUxvbmcgb2xkSWQgPSBpbXBvcnRMb25nVHlwZShmTmFtZSk7CisJCQkJCQlMb25nIGlkID0gb2xkSWQgIT0gbnVsbCA/IGdldE5ld0lkKG9sZElkLCBNYXBzLlJPT01TKSA6IG51bGw7CisJCQkJCQlpZiAoaWQgIT0gbnVsbCkgeworCQkJCQkJCWNvcHlSZWMoZmlsZSwgZ2V0VXBsb2FkUm9vbURpcihpZC50b1N0cmluZygpKSk7CisJCQkJCQkJY29udGludWU7CisJCQkJCQl9CisJCQkJCX0KKwkJCQkJY29weVJlYyhmaWxlLCBuZXcgRmlsZSh1cGxvYWREaXIsIGZOYW1lKSk7CisJCQkJfQorCQkJfQorCQl9CisKKwkJLy8gTm93IGNoZWNrIHRoZSByZWNvcmRpbmdzIGFuZCBpbXBvcnQgdGhlbQorCisJCUZpbGUgc291cmNlRGlyUmVjID0gbmV3IEZpbGUoaW1wb3J0QmFzZURpciwgInJlY29yZGluZ0ZpbGVzIik7CisKKwkJbG9nLmRlYnVnKCJzb3VyY2VEaXJSZWMgUEFUSCAiICsgc291cmNlRGlyUmVjLmdldENhbm9uaWNhbFBhdGgoKSk7CisJCWlmIChzb3VyY2VEaXJSZWMuZXhpc3RzKCkpIHsKKwkJCWNvcHlSZWMoc291cmNlRGlyUmVjLCBnZXRTdHJlYW1zSGliZXJuYXRlRGlyKCkpOworCQl9CisJfQorCisJcHJpdmF0ZSBMb25nIGltcG9ydExvbmdUeXBlKFN0cmluZyB2YWx1ZSkgeworCQlMb25nIHZhbCA9IG51bGw7CisJCXRyeSB7CisJCQl2YWwgPSBMb25nLnZhbHVlT2YodmFsdWUpOworCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJLy8gbm8tb3AKKwkJfQorCQlyZXR1cm4gdmFsOworCX0KKworCXByaXZhdGUgTG9uZyBnZXROZXdJZChMb25nIG9sZElkLCBNYXBzIG1hcCkgeworCQlMb25nIG5ld0lkID0gb2xkSWQ7CisJCXN3aXRjaCAobWFwKSB7CisJCQljYXNlIFVTRVJTOgorCQkJCWlmICh1c2Vyc01hcC5jb250YWluc0tleShvbGRJZCkpIHsKKwkJCQkJbmV3SWQgPSB1c2Vyc01hcC5nZXQob2xkSWQpOworCQkJCX0KKwkJCQlicmVhazsKKwkJCWNhc2UgT1JHQU5JU0FUSU9OUzoKKwkJCQlpZiAob3JnYW5pc2F0aW9uc01hcC5jb250YWluc0tleShvbGRJZCkpIHsKKwkJCQkJbmV3SWQgPSBvcmdhbmlzYXRpb25zTWFwLmdldChvbGRJZCk7CisJCQkJfQorCQkJCWJyZWFrOworCQkJY2FzZSBBUFBPSU5UTUVOVFM6CisJCQkJaWYgKGFwcG9pbnRtZW50c01hcC5jb250YWluc0tleShvbGRJZCkpIHsKKwkJCQkJbmV3SWQgPSBhcHBvaW50bWVudHNNYXAuZ2V0KG9sZElkKTsKKwkJCQl9CisJCQkJYnJlYWs7CisJCQljYXNlIFJPT01TOgorCQkJCWlmIChyb29tc01hcC5jb250YWluc0tleShvbGRJZCkpIHsKKwkJCQkJbmV3SWQgPSByb29tc01hcC5nZXQob2xkSWQpOworCQkJCX0KKwkJCQlicmVhazsKKwkJCWNhc2UgTUVTU0FHRUZPTERFUlM6CisJCQkJaWYgKG1lc3NhZ2VGb2xkZXJzTWFwLmNvbnRhaW5zS2V5KG9sZElkKSkgeworCQkJCQluZXdJZCA9IG1lc3NhZ2VGb2xkZXJzTWFwLmdldChvbGRJZCk7CisJCQkJfQorCQkJCWJyZWFrOworCQkJY2FzZSBVU0VSQ09OVEFDVFM6CisJCQkJaWYgKHVzZXJDb250YWN0c01hcC5jb250YWluc0tleShvbGRJZCkpIHsKKwkJCQkJbmV3SWQgPSB1c2VyQ29udGFjdHNNYXAuZ2V0KG9sZElkKTsKKwkJCQl9CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCWJyZWFrOworCQl9CisJCXJldHVybiBuZXdJZDsKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2VydmxldC9vdXRwdXRoYW5kbGVyL0NhbGVuZGFyU2VydmxldC5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NlcnZsZXQvb3V0cHV0aGFuZGxlci9DYWxlbmRhclNlcnZsZXQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDcwZDIwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NlcnZsZXQvb3V0cHV0aGFuZGxlci9DYWxlbmRhclNlcnZsZXQuamF2YQpAQCAtMCwwICsxLDI5NiBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5zZXJ2bGV0Lm91dHB1dGhhbmRsZXI7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uT3V0cHV0U3RyZWFtOworaW1wb3J0IGphdmEudXRpbC5DYWxlbmRhcjsKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuR3JlZ29yaWFuQ2FsZW5kYXI7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLlRpbWVab25lOworCitpbXBvcnQgamF2YXguc2VydmxldC5TZXJ2bGV0RXhjZXB0aW9uOworaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3Q7CitpbXBvcnQgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVzcG9uc2U7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5TZXNzaW9uZGF0YURhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNhbGVuZGFyLm1hbmFnZW1lbnQuQXBwb2ludG1lbnRMb2dpYzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuVXNlck1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuY2FsZW5kYXIuQXBwb2ludG1lbnQ7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuY2FsZW5kYXIuTWVldGluZ01lbWJlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5zZXJ2bGV0LkJhc2VIdHRwU2VydmxldDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5zZXJ2bGV0LlNlcnZlck5vdEluaXRpYWxpemVkRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLm1hdGguVGltZXpvbmVVdGlsOworaW1wb3J0IG9yZy5kb200ai5Eb2N1bWVudDsKK2ltcG9ydCBvcmcuZG9tNGouRG9jdW1lbnRIZWxwZXI7CitpbXBvcnQgb3JnLmRvbTRqLkVsZW1lbnQ7CitpbXBvcnQgb3JnLmRvbTRqLmlvLk91dHB1dEZvcm1hdDsKK2ltcG9ydCBvcmcuZG9tNGouaW8uWE1MV3JpdGVyOworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKKworcHVibGljIGNsYXNzIENhbGVuZGFyU2VydmxldCBleHRlbmRzIEJhc2VIdHRwU2VydmxldCB7CisJCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMjE5MjI1NDYxMDcxMTc5OTM0N0w7CisJCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcigKKwkJCUNhbGVuZGFyLmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisKKwlAT3ZlcnJpZGUKKwlwcm90ZWN0ZWQgdm9pZCBzZXJ2aWNlKEh0dHBTZXJ2bGV0UmVxdWVzdCBodHRwU2VydmxldFJlcXVlc3QsCisJCQlIdHRwU2VydmxldFJlc3BvbnNlIGh0dHBTZXJ2bGV0UmVzcG9uc2UpIHRocm93cyBTZXJ2bGV0RXhjZXB0aW9uLAorCQkJSU9FeGNlcHRpb24geworCisJCXRyeSB7CisJCQlTdHJpbmcgc2lkID0gaHR0cFNlcnZsZXRSZXF1ZXN0LmdldFBhcmFtZXRlcigic2lkIik7CisKKwkJCWlmIChzaWQgPT0gbnVsbCkgeworCQkJCXNpZCA9ICJkZWZhdWx0IjsKKwkJCX0KKwkJCWxvZy5kZWJ1Zygic2lkOiAiICsgc2lkKTsKKworCQkJTG9uZyB1c2Vyc19pZCA9IGdldEJlYW4oU2Vzc2lvbmRhdGFEYW8uY2xhc3MpLmNoZWNrU2Vzc2lvbihzaWQpOworCQkJTG9uZyB1c2VyX2xldmVsID0gZ2V0QmVhbihVc2VyTWFuYWdlci5jbGFzcykuZ2V0VXNlckxldmVsQnlJRCh1c2Vyc19pZCk7CisKKwkJCWlmICh1c2VyX2xldmVsICE9IG51bGwgJiYgdXNlcl9sZXZlbCA+IDApIHsKKworCQkJCVN0cmluZyB0aW1lWm9uZUlkQXNTdHIgPSBodHRwU2VydmxldFJlcXVlc3QKKwkJCQkJCS5nZXRQYXJhbWV0ZXIoInRpbWVab25lSWQiKTsKKworCQkJCWlmICh0aW1lWm9uZUlkQXNTdHIgPT0gbnVsbCkgeworCQkJCQlsb2cuZXJyb3IoIk5vIHRpbWVab25lSWRBc1N0ciBnaXZlbiwgdXNpbmcgZGVmYXVsdCIpOworCQkJCQl0aW1lWm9uZUlkQXNTdHIgPSAiIjsKKwkJCQl9CisKKwkJCQlUaW1lWm9uZSB0aW1lem9uZSA9IGdldEJlYW4oVGltZXpvbmVVdGlsLmNsYXNzKQorCQkJCQkJLmdldFRpbWV6b25lQnlPbVRpbWVab25lSWQoCisJCQkJCQkJCUxvbmcudmFsdWVPZih0aW1lWm9uZUlkQXNTdHIpLmxvbmdWYWx1ZSgpKTsKKworCQkJCVN0cmluZyB5ZWFyU3RyID0gaHR0cFNlcnZsZXRSZXF1ZXN0LmdldFBhcmFtZXRlcigieWVhciIpOworCQkJCVN0cmluZyBtb250aFN0ciA9IGh0dHBTZXJ2bGV0UmVxdWVzdC5nZXRQYXJhbWV0ZXIoIm1vbnRoIik7CisJCQkJU3RyaW5nIHVzZXJTdHIgPSBodHRwU2VydmxldFJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJ1c2VyIik7CisJCQkJU3RyaW5nIGNvbnRhY3RVc2VyID0gaHR0cFNlcnZsZXRSZXF1ZXN0CisJCQkJCQkuZ2V0UGFyYW1ldGVyKCJjb250YWN0VXNlciIpOworCisJCQkJQ2FsZW5kYXIgc3RhcnR0aW1lID0gR3JlZ29yaWFuQ2FsZW5kYXIuZ2V0SW5zdGFuY2UodGltZXpvbmUpOworCQkJCXN0YXJ0dGltZS5zZXQoQ2FsZW5kYXIuREFURSwgMSk7CisJCQkJc3RhcnR0aW1lLnNldChDYWxlbmRhci5NT05USCwgSW50ZWdlci5wYXJzZUludChtb250aFN0cikgLSAxKTsKKwkJCQlzdGFydHRpbWUuc2V0KENhbGVuZGFyLk1JTlVURSwgMCk7CisJCQkJc3RhcnR0aW1lLnNldChDYWxlbmRhci5TRUNPTkQsIDApOworCQkJCXN0YXJ0dGltZS5zZXQoQ2FsZW5kYXIuWUVBUiwgSW50ZWdlci5wYXJzZUludCh5ZWFyU3RyKSk7CisKKwkJCQlDYWxlbmRhciBlbmR0aW1lID0gR3JlZ29yaWFuQ2FsZW5kYXIuZ2V0SW5zdGFuY2UodGltZXpvbmUpOworCQkJCWVuZHRpbWUuc2V0KENhbGVuZGFyLkRBVEUsIDEpOworCQkJCWVuZHRpbWUuc2V0KENhbGVuZGFyLk1PTlRILCBJbnRlZ2VyLnBhcnNlSW50KG1vbnRoU3RyKSk7CisJCQkJZW5kdGltZS5zZXQoQ2FsZW5kYXIuTUlOVVRFLCAwKTsKKwkJCQllbmR0aW1lLnNldChDYWxlbmRhci5TRUNPTkQsIDApOworCQkJCWVuZHRpbWUuc2V0KENhbGVuZGFyLllFQVIsIEludGVnZXIucGFyc2VJbnQoeWVhclN0cikpOworCisJCQkJTG9uZyB1c2VyVG9TaG93SWQgPSBMb25nLnBhcnNlTG9uZyhjb250YWN0VXNlcik7CisJCQkJaWYgKHVzZXJUb1Nob3dJZCA9PSAwKSB7CisJCQkJCXVzZXJUb1Nob3dJZCA9IExvbmcucGFyc2VMb25nKHVzZXJTdHIpOworCQkJCX0KKworCQkJCUxpc3Q8QXBwb2ludG1lbnQ+IGFwcG9pbnRlbWVudHMgPSBnZXRCZWFuKEFwcG9pbnRtZW50TG9naWMuY2xhc3MpCisJCQkJCQkuZ2V0QXBwb2ludG1lbnRCeVJhbmdlKHVzZXJUb1Nob3dJZCwKKwkJCQkJCQkJbmV3IERhdGUoc3RhcnR0aW1lLmdldFRpbWVJbk1pbGxpcygpKSwKKwkJCQkJCQkJbmV3IERhdGUoZW5kdGltZS5nZXRUaW1lSW5NaWxsaXMoKSkpOworCisJCQkJRG9jdW1lbnQgZG9jdW1lbnQgPSBEb2N1bWVudEhlbHBlci5jcmVhdGVEb2N1bWVudCgpOworCQkJCWRvY3VtZW50LnNldFhNTEVuY29kaW5nKCJVVEYtOCIpOworCQkJCWRvY3VtZW50LmFkZENvbW1lbnQoIiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjXG4iCisJCQkJCQkrIGdldFNlcnZsZXRDb250ZXh0KCkuZ2V0U2VydmxldENvbnRleHROYW1lKCkKKwkJCQkJCSsgIiBDYWxlbmRhciBcbiIKKwkJCQkJCSsgIiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIik7CisKKwkJCQlFbGVtZW50IHZjYWxlbmRhciA9IGRvY3VtZW50LmFkZEVsZW1lbnQoInZjYWxlbmRhciIpOworCisJCQkJRWxlbWVudCB5ZWFyID0gdmNhbGVuZGFyLmFkZEVsZW1lbnQoInllYXIiICsgeWVhclN0cik7CisJCQkJRWxlbWVudCBtb250aCA9IHllYXIuYWRkRWxlbWVudCgibW9udGgiICsgbW9udGhTdHIpOworCisJCQkJaW50IHByZXZpb3VzRGF5ID0gMDsKKwkJCQlFbGVtZW50IGRheSA9IG51bGw7CisKKwkJCQlmb3IgKEFwcG9pbnRtZW50IGFwcG9pbnRtZW50IDogYXBwb2ludGVtZW50cykgeworCisJCQkJCUNhbGVuZGFyIGFwcFN0YXJ0ID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UodGltZXpvbmUpOworCQkJCQlhcHBTdGFydC5zZXRUaW1lKGFwcG9pbnRtZW50LmdldEFwcG9pbnRtZW50U3RhcnR0aW1lKCkpOworCisJCQkJCWludCBkYXlBc0ludCA9IGFwcFN0YXJ0LmdldChDYWxlbmRhci5EQVRFKTsKKworCQkJCQlpZiAocHJldmlvdXNEYXkgIT0gZGF5QXNJbnQpIHsKKworCQkJCQkJZGF5ID0gbW9udGguYWRkRWxlbWVudCgiZGF5IiArIGRheUFzSW50KTsKKworCQkJCQkJcHJldmlvdXNEYXkgPSBkYXlBc0ludDsKKworCQkJCQl9CisKKwkJCQkJaWYgKGFwcFN0YXJ0LmdldChDYWxlbmRhci5NT05USCkgKyAxID09IEludGVnZXIKKwkJCQkJCQkucGFyc2VJbnQobW9udGhTdHIpKSB7CisKKwkJCQkJCUVsZW1lbnQgZXZlbnQgPSBkYXkuYWRkRWxlbWVudCgiZXZlbnQiKTsKKworCQkJCQkJRWxlbWVudCBhcHBvaW50ZW1lbnRJZCA9IGV2ZW50CisJCQkJCQkJCS5hZGRFbGVtZW50KCJhcHBvaW50ZW1lbnRJZCIpOworCQkJCQkJYXBwb2ludGVtZW50SWQuYWRkQXR0cmlidXRlKCJ2YWx1ZSIsCisJCQkJCQkJCSIiICsgYXBwb2ludG1lbnQuZ2V0QXBwb2ludG1lbnRJZCgpKTsKKworCQkJCQkJRWxlbWVudCBpc0Nvbm5lY3RlZEV2ZW50ID0gZXZlbnQKKwkJCQkJCQkJLmFkZEVsZW1lbnQoImlzQ29ubmVjdGVkRXZlbnQiKTsKKwkJCQkJCWlzQ29ubmVjdGVkRXZlbnQuYWRkQXR0cmlidXRlKCJ2YWx1ZSIsCisJCQkJCQkJCSIiICsgYXBwb2ludG1lbnQuZ2V0SXNDb25uZWN0ZWRFdmVudCgpKTsKKworCQkJCQkJRWxlbWVudCByb29tc19pZCA9IGV2ZW50LmFkZEVsZW1lbnQoInJvb21zX2lkIik7CisJCQkJCQlFbGVtZW50IHJvb210eXBlID0gZXZlbnQuYWRkRWxlbWVudCgicm9vbXR5cGUiKTsKKwkJCQkJCWlmIChhcHBvaW50bWVudC5nZXRSb29tKCkgIT0gbnVsbCkgeworCQkJCQkJCXJvb21zX2lkLmFkZEF0dHJpYnV0ZSgidmFsdWUiLCAiIgorCQkJCQkJCQkJKyBhcHBvaW50bWVudC5nZXRSb29tKCkuZ2V0Um9vbXNfaWQoKSk7CisJCQkJCQkJcm9vbXR5cGUuYWRkQXR0cmlidXRlKCJ2YWx1ZSIsICIiCisJCQkJCQkJCQkrIGFwcG9pbnRtZW50LmdldFJvb20oKS5nZXRSb29tdHlwZSgpCisJCQkJCQkJCQkJCS5nZXRSb29tdHlwZXNfaWQoKSk7CisJCQkJCQl9IGVsc2UgeworCQkJCQkJCXJvb21zX2lkLmFkZEF0dHJpYnV0ZSgidmFsdWUiLCAiMCIpOworCQkJCQkJCXJvb210eXBlLmFkZEF0dHJpYnV0ZSgidmFsdWUiLCAiMSIpOworCQkJCQkJfQorCQkJCQkJRWxlbWVudCByZW1pbmRUeXBlID0gZXZlbnQuYWRkRWxlbWVudCgicmVtaW5kdHlwZSIpOworCQkJCQkJcmVtaW5kVHlwZS5hZGRBdHRyaWJ1dGUoInZhbHVlIiwgYXBwb2ludG1lbnQKKwkJCQkJCQkJLmdldFJlbWluZCgpICE9IG51bGwgPyAiIgorCQkJCQkJCQkrIGFwcG9pbnRtZW50LmdldFJlbWluZCgpLmdldFR5cElkKCkgOiAiMCIpOworCisJCQkJCQlFbGVtZW50IHN1bW1hcnkgPSBldmVudC5hZGRFbGVtZW50KCJzdW1tYXJ5Iik7CisJCQkJCQlzdW1tYXJ5LmFkZEF0dHJpYnV0ZSgidmFsdWUiLAorCQkJCQkJCQlhcHBvaW50bWVudC5nZXRBcHBvaW50bWVudE5hbWUoKSk7CisKKwkJCQkJCUVsZW1lbnQgY29tbWVudCA9IGV2ZW50LmFkZEVsZW1lbnQoImNvbW1lbnQiKTsKKwkJCQkJCWNvbW1lbnQuYWRkQXR0cmlidXRlKCJ2YWx1ZSIsCisJCQkJCQkJCWFwcG9pbnRtZW50LmdldEFwcG9pbnRtZW50RGVzY3JpcHRpb24oKSk7CisKKwkJCQkJCUVsZW1lbnQgc3RhcnQgPSBldmVudC5hZGRFbGVtZW50KCJzdGFydCIpOworCisJCQkJCQlzdGFydC5hZGRBdHRyaWJ1dGUoInllYXIiLAorCQkJCQkJCQkiIiArIGFwcFN0YXJ0LmdldChDYWxlbmRhci5ZRUFSKSk7CisJCQkJCQlzdGFydC5hZGRBdHRyaWJ1dGUoIm1vbnRoIiwKKwkJCQkJCQkJIiIgKyAoYXBwU3RhcnQuZ2V0KENhbGVuZGFyLk1PTlRIKSArIDEpKTsKKwkJCQkJCXN0YXJ0LmFkZEF0dHJpYnV0ZSgiZGF5IiwKKwkJCQkJCQkJIiIgKyBhcHBTdGFydC5nZXQoQ2FsZW5kYXIuREFURSkpOworCQkJCQkJc3RhcnQuYWRkQXR0cmlidXRlKCJob3VyIiwKKwkJCQkJCQkJIiIgKyBhcHBTdGFydC5nZXQoQ2FsZW5kYXIuSE9VUl9PRl9EQVkpKTsKKwkJCQkJCXN0YXJ0LmFkZEF0dHJpYnV0ZSgibWludXRlIiwKKwkJCQkJCQkJIiIgKyBhcHBTdGFydC5nZXQoQ2FsZW5kYXIuTUlOVVRFKSk7CisKKwkJCQkJCUNhbGVuZGFyIGFwcEVuZCA9IENhbGVuZGFyLmdldEluc3RhbmNlKHRpbWV6b25lKTsKKwkJCQkJCWFwcEVuZC5zZXRUaW1lKGFwcG9pbnRtZW50LmdldEFwcG9pbnRtZW50RW5kdGltZSgpKTsKKwkJCQkJCUVsZW1lbnQgZW5kID0gZXZlbnQuYWRkRWxlbWVudCgiZW5kIik7CisJCQkJCQllbmQuYWRkQXR0cmlidXRlKCJ5ZWFyIiwgIiIgKyBhcHBFbmQuZ2V0KENhbGVuZGFyLllFQVIpKTsKKwkJCQkJCWVuZC5hZGRBdHRyaWJ1dGUoIm1vbnRoIiwKKwkJCQkJCQkJIiIgKyAoYXBwRW5kLmdldChDYWxlbmRhci5NT05USCkgKyAxKSk7CisJCQkJCQllbmQuYWRkQXR0cmlidXRlKCJkYXkiLCAiIiArIGFwcEVuZC5nZXQoQ2FsZW5kYXIuREFURSkpOworCQkJCQkJZW5kLmFkZEF0dHJpYnV0ZSgiaG91ciIsICIiICsgYXBwRW5kLmdldChDYWxlbmRhci5IT1VSX09GX0RBWSkpOworCQkJCQkJZW5kLmFkZEF0dHJpYnV0ZSgibWludXRlIiwKKwkJCQkJCQkJIiIgKyBhcHBFbmQuZ2V0KENhbGVuZGFyLk1JTlVURSkpOworCisJCQkJCQlFbGVtZW50IGNhdGVnb3J5ID0gZXZlbnQuYWRkRWxlbWVudCgiY2F0ZWdvcnkiKTsKKwkJCQkJCWNhdGVnb3J5LmFkZEF0dHJpYnV0ZSgidmFsdWUiLCAiIgorCQkJCQkJCQkrIGFwcG9pbnRtZW50LmdldEFwcG9pbnRtZW50Q2F0ZWdvcnkoKQorCQkJCQkJCQkJCS5nZXRDYXRlZ29yeUlkKCkpOworCisJCQkJCQlFbGVtZW50IHVpZCA9IGV2ZW50LmFkZEVsZW1lbnQoInVpZCIpOworCQkJCQkJdWlkLmFkZEF0dHJpYnV0ZSgidmFsdWUiLAorCQkJCQkJCQkiIiArIGFwcG9pbnRtZW50LmdldEFwcG9pbnRtZW50SWQoKSk7CisKKwkJCQkJCUVsZW1lbnQgYXR0ZW5kZWVzID0gZXZlbnQuYWRkRWxlbWVudCgiYXR0ZW5kZWVzIik7CisKKwkJCQkJCWZvciAoTWVldGluZ01lbWJlciBtZWV0aW5nTWVtYmVyIDogYXBwb2ludG1lbnQKKwkJCQkJCQkJLmdldE1lZXRpbmdNZW1iZXIoKSkgeworCisJCQkJCQkJRWxlbWVudCBhdHRlbmRlZSA9IGF0dGVuZGVlcy5hZGRFbGVtZW50KCJhdHRlbmRlZSIpOworCisJCQkJCQkJRWxlbWVudCBlbWFpbCA9IGF0dGVuZGVlLmFkZEVsZW1lbnQoImVtYWlsIik7CisJCQkJCQkJZW1haWwuYWRkQXR0cmlidXRlKCJ2YWx1ZSIsCisJCQkJCQkJCQltZWV0aW5nTWVtYmVyLmdldEVtYWlsKCkpOworCisJCQkJCQkJRWxlbWVudCB1c2VySWQgPSBhdHRlbmRlZS5hZGRFbGVtZW50KCJ1c2VySWQiKTsKKwkJCQkJCQlpZiAobWVldGluZ01lbWJlci5nZXRVc2VyaWQoKSAhPSBudWxsKSB7CisJCQkJCQkJCXVzZXJJZC5hZGRBdHRyaWJ1dGUoInZhbHVlIiwgIiIKKwkJCQkJCQkJCQkrIG1lZXRpbmdNZW1iZXIuZ2V0VXNlcmlkKCkKKwkJCQkJCQkJCQkJCS5nZXRVc2VyX2lkKCkpOworCQkJCQkJCX0gZWxzZSB7CisJCQkJCQkJCXVzZXJJZC5hZGRBdHRyaWJ1dGUoInZhbHVlIiwgIiIpOworCQkJCQkJCX0KKworCQkJCQkJCUVsZW1lbnQgbWVtYmVySWQgPSBhdHRlbmRlZS5hZGRFbGVtZW50KCJtZW1iZXJJZCIpOworCQkJCQkJCW1lbWJlcklkLmFkZEF0dHJpYnV0ZSgidmFsdWUiLAorCQkJCQkJCQkJIiIgKyBtZWV0aW5nTWVtYmVyLmdldE1lZXRpbmdNZW1iZXJJZCgpKTsKKworCQkJCQkJCUVsZW1lbnQgZmlyc3RuYW1lID0gYXR0ZW5kZWUKKwkJCQkJCQkJCS5hZGRFbGVtZW50KCJmaXJzdG5hbWUiKTsKKwkJCQkJCQltZW1iZXJJZC5hZGRBdHRyaWJ1dGUoInZhbHVlIiwKKwkJCQkJCQkJCSIiICsgbWVldGluZ01lbWJlci5nZXRNZWV0aW5nTWVtYmVySWQoKSk7CisJCQkJCQkJZmlyc3RuYW1lLmFkZEF0dHJpYnV0ZSgidmFsdWUiLAorCQkJCQkJCQkJbWVldGluZ01lbWJlci5nZXRGaXJzdG5hbWUoKSk7CisKKwkJCQkJCQlFbGVtZW50IGxhc3RuYW1lID0gYXR0ZW5kZWUuYWRkRWxlbWVudCgibGFzdG5hbWUiKTsKKwkJCQkJCQlsYXN0bmFtZS5hZGRBdHRyaWJ1dGUoInZhbHVlIiwKKwkJCQkJCQkJCW1lZXRpbmdNZW1iZXIuZ2V0TGFzdG5hbWUoKSk7CisKKwkJCQkJCQlFbGVtZW50IGpOYW1lVGltZVpvbmVNZW1iZXIgPSBhdHRlbmRlZQorCQkJCQkJCQkJLmFkZEVsZW1lbnQoImpOYW1lVGltZVpvbmUiKTsKKwkJCQkJCQlpZiAobWVldGluZ01lbWJlci5nZXRPbVRpbWVab25lKCkgIT0gbnVsbCkgeworCQkJCQkJCQlqTmFtZVRpbWVab25lTWVtYmVyLmFkZEF0dHJpYnV0ZSgidmFsdWUiLAorCQkJCQkJCQkJCW1lZXRpbmdNZW1iZXIuZ2V0T21UaW1lWm9uZSgpCisJCQkJCQkJCQkJCQkuZ2V0Sm5hbWUoKSk7CisJCQkJCQkJfSBlbHNlIHsKKwkJCQkJCQkJak5hbWVUaW1lWm9uZU1lbWJlci5hZGRBdHRyaWJ1dGUoInZhbHVlIiwgIiIpOworCQkJCQkJCX0KKworCQkJCQkJfQorCisJCQkJCX0KKworCQkJCX0KKworCQkJCWh0dHBTZXJ2bGV0UmVzcG9uc2UucmVzZXQoKTsKKwkJCQlodHRwU2VydmxldFJlc3BvbnNlLnJlc2V0QnVmZmVyKCk7CisJCQkJT3V0cHV0U3RyZWFtIG91dCA9IGh0dHBTZXJ2bGV0UmVzcG9uc2UuZ2V0T3V0cHV0U3RyZWFtKCk7CisJCQkJaHR0cFNlcnZsZXRSZXNwb25zZS5zZXRDb250ZW50VHlwZSgidGV4dC94bWwiKTsKKworCQkJCS8vIGh0dHBTZXJ2bGV0UmVzcG9uc2Uuc2V0SGVhZGVyKCJDb250ZW50LUxlbmd0aCIsICIiKworCQkJCS8vIHJmLmxlbmd0aCgpKTsKKworCQkJCU91dHB1dEZvcm1hdCBvdXRmb3JtYXQgPSBPdXRwdXRGb3JtYXQuY3JlYXRlUHJldHR5UHJpbnQoKTsKKwkJCQlvdXRmb3JtYXQuc2V0RW5jb2RpbmcoIlVURi04Iik7CisJCQkJWE1MV3JpdGVyIHdyaXRlciA9IG5ldyBYTUxXcml0ZXIob3V0LCBvdXRmb3JtYXQpOworCQkJCXdyaXRlci53cml0ZShkb2N1bWVudCk7CisJCQkJd3JpdGVyLmZsdXNoKCk7CisKKwkJCQlvdXQuZmx1c2goKTsKKwkJCQlvdXQuY2xvc2UoKTsKKworCQkJfQorCQl9IGNhdGNoIChTZXJ2ZXJOb3RJbml0aWFsaXplZEV4Y2VwdGlvbiBlKSB7CisJCQlyZXR1cm47CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcikgeworCQkJbG9nLmVycm9yKCJbQ2FsZW5kYXIgOjogc2VydmljZV0iLCBlcik7CisJCX0KKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zZXJ2bGV0L291dHB1dGhhbmRsZXIvRGVmYXVsdEluZGV4LmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2VydmxldC9vdXRwdXRoYW5kbGVyL0RlZmF1bHRJbmRleC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmYWM5ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2VydmxldC9vdXRwdXRoYW5kbGVyL0RlZmF1bHRJbmRleC5qYXZhCkBAIC0wLDAgKzEsMTE1IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnNlcnZsZXQub3V0cHV0aGFuZGxlcjsNCisNCitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworCitpbXBvcnQgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdDsKK2ltcG9ydCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXNwb25zZTsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5WZXJzaW9uOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuZGFvLkNvbmZpZ3VyYXRpb25EYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2VydmxldC5CYXNlVmVsb2NpdHlWaWV3U2VydmxldDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5zZXJ2bGV0LlNlcnZlck5vdEluaXRpYWxpemVkRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUudmVsb2NpdHkuVGVtcGxhdGU7CitpbXBvcnQgb3JnLmFwYWNoZS52ZWxvY2l0eS5jb250ZXh0LkNvbnRleHQ7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworDQorcHVibGljIGNsYXNzIERlZmF1bHRJbmRleCBleHRlbmRzIEJhc2VWZWxvY2l0eVZpZXdTZXJ2bGV0IHsKKwkNCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMzA0MzYxNzYxOTY1MDY2NjQzMkw7CisJDQorCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoDQorCQkJRGVmYXVsdEluZGV4LmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7DQorDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgVGVtcGxhdGUgaGFuZGxlUmVxdWVzdChIdHRwU2VydmxldFJlcXVlc3QgaHR0cFNlcnZsZXRSZXF1ZXN0LA0KKwkJCUh0dHBTZXJ2bGV0UmVzcG9uc2UgaHR0cFNlcnZsZXRSZXNwb25zZSwgQ29udGV4dCBjdHgpIHsNCisNCisJCXRyeSB7DQorCQkJU3RyaW5nIHRlbXBsYXRlID0gInVzdWFsX3RlbXBsYXRlLnZtIjsKKwkJCWN0eC5wdXQoIkFQUF9OQU1FIiwgZ2V0QmVhbihDb25maWd1cmF0aW9uRGFvLmNsYXNzKS5nZXRBcHBOYW1lKCkpOworCQkJY3R4LnB1dCgiUkVWSVNJT04iLCBWZXJzaW9uLmdldFJldmlzaW9uKCkpOworCQkJLy8gUGFyc2UgdGhlIFBhcmFtIGZvciB0aGUgU1dGIFVSTA0KKwkJCVN0cmluZyBzd2YgPSBodHRwU2VydmxldFJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJzd2YiKTsNCisJCQlpZiAoc3dmID09IG51bGwpIHsNCisJCQkJY3R4LnB1dCgiU1dGX1VSTCIsICJtYWluLmFzMy5zd2YxMS5zd2YiKTsNCisJCQl9IGVsc2Ugew0KKwkJCQljdHgucHV0KCJTV0ZfVVJMIiwgc3dmKTsNCisJCQl9DQorDQorCQkJU3RyaW5nIFNXRl9QQVJBTVMgPSAiIjsNCisJCQlTdHJpbmcgU1dGX0ZMQVNIVkFSUyA9ICIiOw0KKw0KKwkJCS8vIExvYWQgcGFyYW1zIGZyb20gVVJMIGFuZCBzZXQgaW50byB3cmFwcGVyIGNvZGUNCisJCQlpZiAoaHR0cFNlcnZsZXRSZXF1ZXN0LmdldFBhcmFtZXRlck1hcCgpICE9IG51bGwpIHsNCisJCQkJZm9yIChJdGVyYXRvcjxTdHJpbmc+IGl0ZXIgPSBodHRwU2VydmxldFJlcXVlc3QuZ2V0UGFyYW1ldGVyTWFwKCkNCisJCQkJCQkua2V5U2V0KCkuaXRlcmF0b3IoKTsgaXRlci5oYXNOZXh0KCk7KSB7DQorCQkJCQlTdHJpbmcgcGFyYW1LZXkgPSBpdGVyLm5leHQoKTsNCisJCQkJCVNXRl9GTEFTSFZBUlMgKz0gcGFyYW1LZXkNCisJCQkJCQkJKyAiPSINCisJCQkJCQkJKyBodHRwU2VydmxldFJlcXVlc3QuZ2V0UGFyYW1ldGVyTWFwKCkNCisJCQkJCQkJCQkuZ2V0KHBhcmFtS2V5KVswXSArICImYW1wOyI7DQorCQkJCQlTV0ZfUEFSQU1TICs9IHBhcmFtS2V5DQorCQkJCQkJCSsgIj0iDQorCQkJCQkJCSsgaHR0cFNlcnZsZXRSZXF1ZXN0LmdldFBhcmFtZXRlck1hcCgpDQorCQkJCQkJCQkJLmdldChwYXJhbUtleSlbMF0gKyAiJmFtcDsiOw0KKwkJCQl9DQorCQkJfQ0KKw0KKwkJCUhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IGRlZmF1bHRWYWx1ZXNNYXAgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4oKTsNCisNCisJCQlkZWZhdWx0VmFsdWVzTWFwLnB1dCgibHp0IiwgInN3ZiIpOw0KKwkJCWRlZmF1bHRWYWx1ZXNNYXAucHV0KCJsenByb3hpZWQiLCAic29sbyIpOw0KKwkJCWRlZmF1bHRWYWx1ZXNNYXAucHV0KCJsenIiLCAic3dmOCIpOw0KKwkJCWRlZmF1bHRWYWx1ZXNNYXAucHV0KCJiZ2NvbG9yIiwgIiUyM2ZmZmZmZiIpOw0KKwkJCWRlZmF1bHRWYWx1ZXNNYXAucHV0KCJ3aWR0aCIsICIxMDAlMjUiKTsNCisJCQlkZWZhdWx0VmFsdWVzTWFwLnB1dCgiaGVpZ2h0IiwgIjEwMCUyNSIpOw0KKwkJCS8vIGRlZmF1bHRWYWx1ZXNNYXAucHV0KCJfX2x6dXJsIiwibWFpbi5senglM0ZsenQlM0Rzd2YlMjZsenByb3hpZWQlM0Rzb2xvJTI2bHpyJTNEc3dmOCIpOw0KKwkJCWRlZmF1bHRWYWx1ZXNNYXAucHV0KCJfX2x6bWluaW11bXZlcnNpb24iLCAiOCIpOw0KKwkJCWRlZmF1bHRWYWx1ZXNNYXAucHV0KCJpZCIsICJsemFwcCIpOw0KKw0KKwkJCWZvciAoSXRlcmF0b3I8U3RyaW5nPiBpdGVyID0gZGVmYXVsdFZhbHVlc01hcC5rZXlTZXQoKS5pdGVyYXRvcigpOyBpdGVyDQorCQkJCQkuaGFzTmV4dCgpOykgew0KKwkJCQlTdHJpbmcgcGFyYW1LZXkgPSBpdGVyLm5leHQoKTsNCisJCQkJU1dGX1BBUkFNUyArPSBwYXJhbUtleSArICI9IiArIGRlZmF1bHRWYWx1ZXNNYXAuZ2V0KHBhcmFtS2V5KTsNCisJCQkJU1dGX0ZMQVNIVkFSUyArPSBwYXJhbUtleSArICI9Ig0KKwkJCQkJCSsgZGVmYXVsdFZhbHVlc01hcC5nZXQocGFyYW1LZXkpOw0KKwkJCQlpZiAoaXRlci5oYXNOZXh0KCkpIHsNCisJCQkJCVNXRl9QQVJBTVMgKz0gIiYiOw0KKwkJCQkJU1dGX0ZMQVNIVkFSUyArPSAiJmFtcDsiOw0KKwkJCQl9DQorCQkJfQ0KKw0KKwkJCWN0eC5wdXQoIlNXRl9QQVJBTVMiLCBTV0ZfUEFSQU1TKTsNCisJCQljdHgucHV0KCJTV0ZfRkxBU0hWQVJTIiwgU1dGX0ZMQVNIVkFSUyk7DQorDQorCQkJcmV0dXJuIGdldFZlbG9jaXR5VmlldygpLmdldFZlbG9jaXR5RW5naW5lKCkuZ2V0VGVtcGxhdGUodGVtcGxhdGUpOw0KKw0KKwkJfSBjYXRjaCAoU2VydmVyTm90SW5pdGlhbGl6ZWRFeGNlcHRpb24gZXJyKSB7CisJCQlyZXR1cm4gZ2V0Qm9vdGluZygpOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXIpIHsNCisJCQlsb2cuZXJyb3IoIltDYWxlbmRhciA6OiBzZXJ2aWNlXSIsIGVyKTsNCisJCX0NCisJCXJldHVybiBudWxsOw0KKwl9DQorfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zZXJ2bGV0L291dHB1dGhhbmRsZXIvRG93bmxvYWRIYW5kbGVyLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2VydmxldC9vdXRwdXRoYW5kbGVyL0Rvd25sb2FkSGFuZGxlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5ODZiM2MKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2VydmxldC9vdXRwdXRoYW5kbGVyL0Rvd25sb2FkSGFuZGxlci5qYXZhCkBAIC0wLDAgKzEsMzM0IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnNlcnZsZXQub3V0cHV0aGFuZGxlcjsKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uT3V0cHV0U3RyZWFtOworCitpbXBvcnQgamF2YXguc2VydmxldC5TZXJ2bGV0RXhjZXB0aW9uOworaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3Q7CitpbXBvcnQgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVzcG9uc2U7CisKK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMubGFuZy5TdHJpbmdVdGlsczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5TZXNzaW9uZGF0YURhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmZpbGUuZGFvLkZpbGVFeHBsb3Jlckl0ZW1EYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLlVzZXJNYW5hZ2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmZpbGVzLkZpbGVFeHBsb3Jlckl0ZW07CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2VydmxldC5CYXNlSHR0cFNlcnZsZXQ7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2VydmxldC5TZXJ2ZXJOb3RJbml0aWFsaXplZEV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5PbUZpbGVIZWxwZXI7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworCitwdWJsaWMgY2xhc3MgRG93bmxvYWRIYW5kbGVyIGV4dGVuZHMgQmFzZUh0dHBTZXJ2bGV0IHsKKwkKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSA3MjQzNjUzMjAzNTc4NTg3NTQ0TDsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoCisJCQlEb3dubG9hZEhhbmRsZXIuY2xhc3MsIE9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBkZWZhdWx0SW1hZ2VOYW1lID0gImRlbGV0ZWQuanBnIjsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgZGVmYXVsdFByb2ZpbGVJbWFnZU5hbWUgPSAicHJvZmlsZV9waWMuanBnIjsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgZGVmYXVsdFByb2ZpbGVJbWFnZU5hbWVCaWcgPSAiX2JpZ19wcm9maWxlX3BpYy5qcGciOworCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBkZWZhdWx0Q2hhdEltYWdlTmFtZSA9ICJfY2hhdF9wcm9maWxlX3BpYy5qcGciOworCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBkZWZhdWx0U1dGTmFtZSA9ICJkZWxldGVkLnN3ZiI7CisKKwlwcml2YXRlIHZvaWQgbG9nTm9uRXhpc3RlbnRGb2xkZXIoRmlsZSBmKSB7CisJCWlmICghZi5leGlzdHMoKSkgeworCQkJYm9vbGVhbiBjID0gZi5ta2RpcigpOworCQkJaWYgKCFjKSB7CisJCQkJbG9nLmVycm9yKCJjYW5ub3Qgd3JpdGUgdG8gZGlyZWN0b3J5Iik7CisJCQl9CisJCX0KKwl9CisKKwkvKgorCSAqIChub24tSmF2YWRvYykKKwkgKiAKKwkgKiBAc2VlCisJICogamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0I2RvUG9zdChqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0CisJICogLCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXNwb25zZSkKKwkgKi8KKwlAT3ZlcnJpZGUKKwlwcm90ZWN0ZWQgdm9pZCBzZXJ2aWNlKEh0dHBTZXJ2bGV0UmVxdWVzdCBodHRwU2VydmxldFJlcXVlc3QsCisJCQlIdHRwU2VydmxldFJlc3BvbnNlIGh0dHBTZXJ2bGV0UmVzcG9uc2UpIHRocm93cyBTZXJ2bGV0RXhjZXB0aW9uLAorCQkJSU9FeGNlcHRpb24geworCisJCXRyeSB7CisJCQlodHRwU2VydmxldFJlcXVlc3Quc2V0Q2hhcmFjdGVyRW5jb2RpbmcoIlVURi04Iik7CisKKwkJCWxvZy5kZWJ1ZygiXG5xdWVyeSA9ICIgKyBodHRwU2VydmxldFJlcXVlc3QuZ2V0UXVlcnlTdHJpbmcoKSk7CisJCQlsb2cuZGVidWcoIlxuXG5maWxlTmFtZSA9ICIKKwkJCQkJKyBodHRwU2VydmxldFJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJmaWxlTmFtZSIpKTsKKwkJCWxvZy5kZWJ1ZygiXG5cbnBhcmVudFBhdGggPSAiCisJCQkJCSsgaHR0cFNlcnZsZXRSZXF1ZXN0LmdldFBhcmFtZXRlcigicGFyZW50UGF0aCIpKTsKKworCQkJU3RyaW5nIHF1ZXJ5U3RyaW5nID0gaHR0cFNlcnZsZXRSZXF1ZXN0LmdldFF1ZXJ5U3RyaW5nKCk7CisJCQlpZiAocXVlcnlTdHJpbmcgPT0gbnVsbCkgeworCQkJCXF1ZXJ5U3RyaW5nID0gIiI7CisJCQl9CisKKwkJCVN0cmluZyBzaWQgPSBodHRwU2VydmxldFJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJzaWQiKTsKKworCQkJaWYgKHNpZCA9PSBudWxsKSB7CisJCQkJc2lkID0gImRlZmF1bHQiOworCQkJfQorCQkJbG9nLmRlYnVnKCJzaWQ6ICIgKyBzaWQpOworCisJCQlMb25nIHVzZXJzX2lkID0gZ2V0QmVhbihTZXNzaW9uZGF0YURhby5jbGFzcykuY2hlY2tTZXNzaW9uKHNpZCk7CisJCQlMb25nIHVzZXJfbGV2ZWwgPSBnZXRCZWFuKFVzZXJNYW5hZ2VyLmNsYXNzKS5nZXRVc2VyTGV2ZWxCeUlEKHVzZXJzX2lkKTsKKworCQkJaWYgKHVzZXJfbGV2ZWwgIT0gbnVsbCAmJiB1c2VyX2xldmVsID4gMCkgeworCQkJCVN0cmluZyByb29tX2lkID0gaHR0cFNlcnZsZXRSZXF1ZXN0LmdldFBhcmFtZXRlcigicm9vbV9pZCIpOworCQkJCWlmIChyb29tX2lkID09IG51bGwpIHsKKwkJCQkJcm9vbV9pZCA9ICJkZWZhdWx0IjsKKwkJCQl9CisKKwkJCQlTdHJpbmcgbW9kdWxlTmFtZSA9IGh0dHBTZXJ2bGV0UmVxdWVzdAorCQkJCQkJLmdldFBhcmFtZXRlcigibW9kdWxlTmFtZSIpOworCQkJCWlmIChtb2R1bGVOYW1lID09IG51bGwpIHsKKwkJCQkJbW9kdWxlTmFtZSA9ICJub21vZHVsZSI7CisJCQkJfQorCisJCQkJU3RyaW5nIHBhcmVudFBhdGggPSBodHRwU2VydmxldFJlcXVlc3QKKwkJCQkJCS5nZXRQYXJhbWV0ZXIoInBhcmVudFBhdGgiKTsKKwkJCQlpZiAocGFyZW50UGF0aCA9PSBudWxsKSB7CisJCQkJCXBhcmVudFBhdGggPSAibm9tb2R1bGUiOworCQkJCX0KKworCQkJCVN0cmluZyByZXF1ZXN0ZWRGaWxlID0gaHR0cFNlcnZsZXRSZXF1ZXN0CisJCQkJCQkuZ2V0UGFyYW1ldGVyKCJmaWxlTmFtZSIpOworCQkJCWlmIChyZXF1ZXN0ZWRGaWxlID09IG51bGwpIHsKKwkJCQkJcmVxdWVzdGVkRmlsZSA9ICIiOworCQkJCX0KKwkJCQkKKwkJCQlTdHJpbmcgZmlsZUV4cGxvcmVySXRlbUlkUGFyYW0gPSBodHRwU2VydmxldFJlcXVlc3QKKwkJCQkJCS5nZXRQYXJhbWV0ZXIoImZpbGVFeHBsb3Jlckl0ZW1JZCIpOworCQkJCUxvbmcgZmlsZUV4cGxvcmVySXRlbUlkID0gbnVsbDsKKwkJCQlpZiAoZmlsZUV4cGxvcmVySXRlbUlkUGFyYW0gIT0gbnVsbCkgeworCQkJCQlmaWxlRXhwbG9yZXJJdGVtSWQgPSBMb25nLnBhcnNlTG9uZyhmaWxlRXhwbG9yZXJJdGVtSWRQYXJhbSk7CisJCQkJfQorCQkJCQorCQkJCQorCisJCQkJLy8gbWFrZSBhIGNvbXBsZXRlIG5hbWUgb3V0IG9mIGRvbWFpbihvcmdhbmlzYXRpb24pICsgcm9vbW5hbWUKKwkJCQlTdHJpbmcgcm9vbU5hbWUgPSByb29tX2lkOworCQkJCS8vIHRyaW0gd2hpdGVzcGFjZXMgY2F1c2UgaXQgaXMgYSBkaXJlY3RvcnkgbmFtZQorCQkJCXJvb21OYW1lID0gU3RyaW5nVXRpbHMuZGVsZXRlV2hpdGVzcGFjZShyb29tTmFtZSk7CisKKwkJCQkvLyBHZXQgdGhlIGN1cnJlbnQgVXNlci1EaXJlY3RvcnkKKworCQkJCUZpbGUgd29ya2luZ19kaXI7CisKKwkJCQkvLyBBZGQgdGhlIEZvbGRlciBmb3IgdGhlIFJvb20KKwkJCQlpZiAobW9kdWxlTmFtZS5lcXVhbHMoImx6UmVjb3JkZXJBcHAiKSkgeworCQkJCQl3b3JraW5nX2RpciA9IE9tRmlsZUhlbHBlci5nZXRTdHJlYW1zSGliZXJuYXRlRGlyKCk7CisJCQkJfSBlbHNlIGlmIChtb2R1bGVOYW1lLmVxdWFscygidmlkZW9jb25mMSIpKSB7CisJCQkJCXdvcmtpbmdfZGlyID0gT21GaWxlSGVscGVyLmdldFVwbG9hZFJvb21EaXIocm9vbU5hbWUpOworCQkJCQlpZiAocGFyZW50UGF0aC5sZW5ndGgoKSAhPSAwICYmICFwYXJlbnRQYXRoLmVxdWFscygiLyIpKSB7CisJCQkJCQl3b3JraW5nX2RpciA9IG5ldyBGaWxlKHdvcmtpbmdfZGlyLCBwYXJlbnRQYXRoKTsKKwkJCQkJfQorCQkJCX0gZWxzZSBpZiAobW9kdWxlTmFtZS5lcXVhbHMoInVzZXJwcm9maWxlIikpIHsKKwkJCQkJd29ya2luZ19kaXIgPSBPbUZpbGVIZWxwZXIuZ2V0VXBsb2FkUHJvZmlsZXNVc2VyRGlyKHVzZXJzX2lkKTsKKwkJCQkJbG9nTm9uRXhpc3RlbnRGb2xkZXIod29ya2luZ19kaXIpOworCQkJCX0gZWxzZSBpZiAobW9kdWxlTmFtZS5lcXVhbHMoInJlbW90ZXVzZXJwcm9maWxlIikpIHsKKwkJCQkJU3RyaW5nIHJlbW90ZVVzZXJfaWQgPSBodHRwU2VydmxldFJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJyZW1vdGVVc2VyaWQiKTsKKwkJCQkJd29ya2luZ19kaXIgPSBPbUZpbGVIZWxwZXIuZ2V0VXBsb2FkUHJvZmlsZXNVc2VyRGlyKHJlbW90ZVVzZXJfaWQgPT0gbnVsbCA/ICIwIiA6IHJlbW90ZVVzZXJfaWQpOworCQkJCQlsb2dOb25FeGlzdGVudEZvbGRlcih3b3JraW5nX2Rpcik7CisJCQkJfSBlbHNlIGlmIChtb2R1bGVOYW1lLmVxdWFscygicmVtb3RldXNlcnByb2ZpbGViaWciKSkgeworCQkJCQlTdHJpbmcgcmVtb3RlVXNlcl9pZCA9IGh0dHBTZXJ2bGV0UmVxdWVzdC5nZXRQYXJhbWV0ZXIoInJlbW90ZVVzZXJpZCIpOworCQkJCQl3b3JraW5nX2RpciA9IE9tRmlsZUhlbHBlci5nZXRVcGxvYWRQcm9maWxlc1VzZXJEaXIocmVtb3RlVXNlcl9pZCA9PSBudWxsID8gIjAiIDogcmVtb3RlVXNlcl9pZCk7CisJCQkJCWxvZ05vbkV4aXN0ZW50Rm9sZGVyKHdvcmtpbmdfZGlyKTsKKwkJCQkJCisJCQkJCXJlcXVlc3RlZEZpbGUgPSBnZXRCaWdQcm9maWxlVXNlck5hbWUod29ya2luZ19kaXIpOworCQkJCX0gZWxzZSBpZiAobW9kdWxlTmFtZS5lcXVhbHMoImNoYXQiKSkgeworCQkJCQlTdHJpbmcgcmVtb3RlVXNlcl9pZCA9IGh0dHBTZXJ2bGV0UmVxdWVzdC5nZXRQYXJhbWV0ZXIoInJlbW90ZVVzZXJpZCIpOworCQkJCQl3b3JraW5nX2RpciA9IE9tRmlsZUhlbHBlci5nZXRVcGxvYWRQcm9maWxlc1VzZXJEaXIocmVtb3RlVXNlcl9pZCA9PSBudWxsID8gIjAiIDogcmVtb3RlVXNlcl9pZCk7CisJCQkJCWxvZ05vbkV4aXN0ZW50Rm9sZGVyKHdvcmtpbmdfZGlyKTsKKworCQkJCQlyZXF1ZXN0ZWRGaWxlID0gZ2V0Q2hhdFVzZXJOYW1lKHdvcmtpbmdfZGlyKTsKKwkJCQl9IGVsc2UgeworCQkJCQl3b3JraW5nX2RpciA9IE9tRmlsZUhlbHBlci5nZXRVcGxvYWRSb29tRGlyKHJvb21OYW1lKTsKKwkJCQl9CisKKwkJCQlpZiAoIW1vZHVsZU5hbWUuZXF1YWxzKCJub21vZHVsZSIpKSB7CisKKwkJCQkJbG9nLmRlYnVnKCJyZXF1ZXN0ZWRGaWxlOiAiICsgcmVxdWVzdGVkRmlsZQorCQkJCQkJCSsgIiBjdXJyZW50X2RpcjogIiArIHdvcmtpbmdfZGlyKTsKKworCQkJCQlGaWxlIGZ1bGxfcGF0aCA9IG5ldyBGaWxlKHdvcmtpbmdfZGlyLCByZXF1ZXN0ZWRGaWxlKTsKKworCQkJCQkvLyBJZiB0aGUgRmlsZSBkb2VzIG5vdCBleGlzdCBvciBpcyBub3QgcmVhZGFibGUgc2hvdy9sb2FkIGEKKwkJCQkJLy8gcGxhY2UtaG9sZGVyIHBpY3R1cmUKKworCQkJCQlpZiAoIWZ1bGxfcGF0aC5leGlzdHMoKSB8fCAhZnVsbF9wYXRoLmNhblJlYWQoKSkgeworCQkJCQkJaWYgKCFmdWxsX3BhdGguY2FuUmVhZCgpKSB7CisJCQkJCQkJbG9nLmRlYnVnKCJMT0cgRG93bmxvYWRIYW5kbGVyOiBUaGUgcmVxdWVzdCBmaWxlIGlzIG5vdCByZWFkYWJsZSAiKTsKKwkJCQkJCX0gZWxzZSB7CisJCQkJCQkJbG9nLmRlYnVnKCJMT0cgRG93bmxvYWRIYW5kbGVyOiBUaGUgcmVxdWVzdCBmaWxlIGRvZXMgbm90IGV4aXN0IC8gaGFzIGFscmVhZHkgYmVlbiBkZWxldGVkIik7CisJCQkJCQl9CisJCQkJCQlsb2cuZGVidWcoIkxPRyBFUlJPUiByZXF1ZXN0ZWRGaWxlOiAiICsgcmVxdWVzdGVkRmlsZSk7CisJCQkJCQkvLyByZXBsYWNlIHRoZSBwYXRoIHdpdGggdGhlIGRlZmF1bHQgcGljdHVyZS9kb2N1bWVudAorCisJCQkJCQlpZiAocmVxdWVzdGVkRmlsZS5lbmRzV2l0aCgiLmpwZyIpKSB7CisJCQkJCQkJbG9nLmRlYnVnKCJMT0cgZW5kc1dpdGggZC5qcGciKTsKKworCQkJCQkJCWxvZy5kZWJ1ZygiTE9HIG1vZHVsZU5hbWU6ICIgKyBtb2R1bGVOYW1lKTsKKworCQkJCQkJCXJlcXVlc3RlZEZpbGUgPSBEb3dubG9hZEhhbmRsZXIuZGVmYXVsdEltYWdlTmFtZTsKKwkJCQkJCQlpZiAobW9kdWxlTmFtZS5lcXVhbHMoInJlbW90ZXVzZXJwcm9maWxlIikpIHsKKwkJCQkJCQkJcmVxdWVzdGVkRmlsZSA9IERvd25sb2FkSGFuZGxlci5kZWZhdWx0UHJvZmlsZUltYWdlTmFtZTsKKwkJCQkJCQl9IGVsc2UgaWYgKG1vZHVsZU5hbWUuZXF1YWxzKCJyZW1vdGV1c2VycHJvZmlsZWJpZyIpKSB7CisJCQkJCQkJCXJlcXVlc3RlZEZpbGUgPSBEb3dubG9hZEhhbmRsZXIuZGVmYXVsdFByb2ZpbGVJbWFnZU5hbWVCaWc7CisJCQkJCQkJfSBlbHNlIGlmIChtb2R1bGVOYW1lLmVxdWFscygidXNlcnByb2ZpbGUiKSkgeworCQkJCQkJCQlyZXF1ZXN0ZWRGaWxlID0gRG93bmxvYWRIYW5kbGVyLmRlZmF1bHRQcm9maWxlSW1hZ2VOYW1lOworCQkJCQkJCX0gZWxzZSBpZiAobW9kdWxlTmFtZS5lcXVhbHMoImNoYXQiKSkgeworCQkJCQkJCQlyZXF1ZXN0ZWRGaWxlID0gRG93bmxvYWRIYW5kbGVyLmRlZmF1bHRDaGF0SW1hZ2VOYW1lOworCQkJCQkJCX0KKwkJCQkJCX0gZWxzZSBpZiAocmVxdWVzdGVkRmlsZS5lbmRzV2l0aCgiLnN3ZiIpKSB7CisJCQkJCQkJcmVxdWVzdGVkRmlsZSA9IERvd25sb2FkSGFuZGxlci5kZWZhdWx0U1dGTmFtZTsKKwkJCQkJCX0gZWxzZSB7CisJCQkJCQkJcmVxdWVzdGVkRmlsZSA9IERvd25sb2FkSGFuZGxlci5kZWZhdWx0SW1hZ2VOYW1lOworCQkJCQkJfQorCQkJCQkJZnVsbF9wYXRoID0gbmV3IEZpbGUoT21GaWxlSGVscGVyLmdldERlZmF1bHREaXIoKSwgcmVxdWVzdGVkRmlsZSk7CisJCQkJCX0KKworCQkJCQlsb2cuZGVidWcoImZ1bGxfcGF0aDogIiArIGZ1bGxfcGF0aCk7CisKKwkJCQkJaWYgKCFmdWxsX3BhdGguZXhpc3RzKCkgfHwgIWZ1bGxfcGF0aC5jYW5SZWFkKCkpIHsKKwkJCQkJCWlmICghZnVsbF9wYXRoLmNhblJlYWQoKSkgeworCQkJCQkJCWxvZy5kZWJ1ZygiRG93bmxvYWRIYW5kbGVyOiBUaGUgcmVxdWVzdCBERUZBVUxULWZpbGUgZG9lcyBub3QgZXhpc3QgLyBoYXMgYWxyZWFkeSBiZWVuIGRlbGV0ZWQiKTsKKwkJCQkJCX0gZWxzZSB7CisJCQkJCQkJbG9nLmRlYnVnKCJEb3dubG9hZEhhbmRsZXI6IFRoZSByZXF1ZXN0IERFRkFVTFQtZmlsZSBkb2VzIG5vdCBleGlzdCAvIGhhcyBhbHJlYWR5IGJlZW4gZGVsZXRlZCIpOworCQkJCQkJfQorCQkJCQkJLy8gbm8gZmlsZSB0byBoYW5kbGUgYWJvcnQgcHJvY2Vzc2luZworCQkJCQkJcmV0dXJuOworCQkJCQl9CisJCQkJCS8vIFJlcXVlc3RlZCBmaWxlIGlzIG91dHNpZGUgT00gd2ViYXBwIGZvbGRlcgorCQkJCQlGaWxlIGN1ckRpckZpbGUgPSBPbUZpbGVIZWxwZXIuZ2V0T21Ib21lKCk7CisJCQkJCWlmICghZnVsbF9wYXRoLmdldENhbm9uaWNhbFBhdGgoKQorCQkJCQkJCS5zdGFydHNXaXRoKGN1ckRpckZpbGUuZ2V0Q2Fub25pY2FsUGF0aCgpKSkgeworCQkJCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbigiSW52YWxpZCBmaWxlIHJlcXVlc3RlZDogZjIuY3AgPT0gIgorCQkJCQkJCQkrIGZ1bGxfcGF0aC5nZXRDYW5vbmljYWxQYXRoKCkgKyAiOyBjdXJEaXIuY3AgPT0gIgorCQkJCQkJCQkrIGN1ckRpckZpbGUuZ2V0Q2Fub25pY2FsUGF0aCgpKTsKKwkJCQkJfQorCisJCQkJCS8vIERlZmF1bHQgdHlwZSAtIEV4cGxvcmVyLCBDaHJvbWUgYW5kIG90aGVycworCQkJCQlpbnQgYnJvd3NlclR5cGUgPSAwOworCisJCQkJCS8vIEZpcmVmb3ggYW5kIE9wZXJhIGJyb3dzZXJzCisJCQkJCWlmIChodHRwU2VydmxldFJlcXVlc3QuZ2V0SGVhZGVyKCJVc2VyLUFnZW50IikgIT0gbnVsbCkgeworCQkJCQkJaWYgKChodHRwU2VydmxldFJlcXVlc3QuZ2V0SGVhZGVyKCJVc2VyLUFnZW50IikKKwkJCQkJCQkJLmNvbnRhaW5zKCJGaXJlZm94IikpCisJCQkJCQkJCXx8IChodHRwU2VydmxldFJlcXVlc3QuZ2V0SGVhZGVyKCJVc2VyLUFnZW50IikKKwkJCQkJCQkJCQkuY29udGFpbnMoIk9wZXJhIikpKSB7CisJCQkJCQkJYnJvd3NlclR5cGUgPSAxOworCQkJCQkJfQorCQkJCQl9CisKKwkJCQkJbG9nLmRlYnVnKCJEZXRlY3RlZCBicm93c2VyIHR5cGU6IiArIGJyb3dzZXJUeXBlKTsKKworCQkJCQlodHRwU2VydmxldFJlc3BvbnNlLnJlc2V0KCk7CisJCQkJCWh0dHBTZXJ2bGV0UmVzcG9uc2UucmVzZXRCdWZmZXIoKTsKKwkJCQkJT3V0cHV0U3RyZWFtIG91dCA9IGh0dHBTZXJ2bGV0UmVzcG9uc2UuZ2V0T3V0cHV0U3RyZWFtKCk7CisKKwkJCQkJaWYgKHJlcXVlc3RlZEZpbGUuZW5kc1dpdGgoIi5zd2YiKSkgeworCQkJCQkJLy8gdHJpZ2dlciBkb3dubG9hZCB0byBTV0YgPT4gVEhJUyBpcyBhIHdvcmthcm91bmQgZm9yCisJCQkJCQkvLyBGbGFzaCBQbGF5ZXIgMTAsIEZQIDEwIGRvZXMgbm90IHNlZW0KKwkJCQkJCS8vIHRvIGFjY2VwdCBTV0YtRG93bmxvYWRzIHdpdGggdGhlIENvbnRlbnQtRGlzcG9zaXRpb24KKwkJCQkJCS8vIGluIHRoZSBIZWFkZXIKKwkJCQkJCWh0dHBTZXJ2bGV0UmVzcG9uc2UKKwkJCQkJCQkJLnNldENvbnRlbnRUeXBlKCJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIpOworCQkJCQkJaHR0cFNlcnZsZXRSZXNwb25zZS5zZXRIZWFkZXIoIkNvbnRlbnQtTGVuZ3RoIiwKKwkJCQkJCQkJIiIgKyBmdWxsX3BhdGgubGVuZ3RoKCkpOworCQkJCQl9IGVsc2UgeworCQkJCQkJaHR0cFNlcnZsZXRSZXNwb25zZQorCQkJCQkJCQkuc2V0Q29udGVudFR5cGUoIkFQUExJQ0FUSU9OL09DVEVULVNUUkVBTSIpOworCQkJCQkJCisJCQkJCQlTdHJpbmcgZmlsZU5hbWVSZXN1bHQgPSByZXF1ZXN0ZWRGaWxlOworCQkJCQkJaWYgKGZpbGVFeHBsb3Jlckl0ZW1JZCAhPSBudWxsICYmIGZpbGVFeHBsb3Jlckl0ZW1JZCA+IDApIHsKKwkJCQkJCQlGaWxlRXhwbG9yZXJJdGVtIGZpbGVFeHBsb3Jlckl0ZW0gPSBnZXRCZWFuKEZpbGVFeHBsb3Jlckl0ZW1EYW8uY2xhc3MpLmdldEZpbGVFeHBsb3Jlckl0ZW1zQnlJZChmaWxlRXhwbG9yZXJJdGVtSWQpOworCQkJCQkJCWlmIChmaWxlRXhwbG9yZXJJdGVtICE9IG51bGwpIHsKKwkJCQkJCQkJCisJCQkJCQkJCWZpbGVOYW1lUmVzdWx0ID0gZmlsZUV4cGxvcmVySXRlbS5nZXRGaWxlTmFtZSgpLnN1YnN0cmluZygwLCBmaWxlRXhwbG9yZXJJdGVtLmdldEZpbGVOYW1lKCkubGVuZ3RoKCktNCkKKwkJCQkJCQkJCQkJCQkrIGZpbGVOYW1lUmVzdWx0LnN1YnN0cmluZyhmaWxlTmFtZVJlc3VsdC5sZW5ndGgoKS00LCBmaWxlTmFtZVJlc3VsdC5sZW5ndGgoKSk7CisJCQkJCQkJCQorCQkJCQkJCX0KKwkJCQkJCX0KKwkJCQkJCQorCQkJCQkJaWYgKGJyb3dzZXJUeXBlID09IDApIHsKKwkJCQkJCQlodHRwU2VydmxldFJlc3BvbnNlLnNldEhlYWRlcigKKwkJCQkJCQkJCSJDb250ZW50LURpc3Bvc2l0aW9uIiwKKwkJCQkJCQkJCSJhdHRhY2htZW50OyBmaWxlbmFtZT0iCisJCQkJCQkJCQkJCSsgamF2YS5uZXQuVVJMRW5jb2Rlci5lbmNvZGUoCisJCQkJCQkJCQkJCQkJZmlsZU5hbWVSZXN1bHQsICJVVEYtOCIpKTsKKwkJCQkJCX0gZWxzZSB7CisJCQkJCQkJaHR0cFNlcnZsZXRSZXNwb25zZS5zZXRIZWFkZXIoCisJCQkJCQkJCQkiQ29udGVudC1EaXNwb3NpdGlvbiIsCisJCQkJCQkJCQkiYXR0YWNobWVudDsgZmlsZW5hbWUqPVVURi04J2VuJyIKKwkJCQkJCQkJCQkJKyBqYXZhLm5ldC5VUkxFbmNvZGVyLmVuY29kZSgKKwkJCQkJCQkJCQkJCQlmaWxlTmFtZVJlc3VsdCwgIlVURi04IikpOworCQkJCQkJfQorCisJCQkJCQlodHRwU2VydmxldFJlc3BvbnNlLnNldEhlYWRlcigiQ29udGVudC1MZW5ndGgiLAorCQkJCQkJCQkiIiArIGZ1bGxfcGF0aC5sZW5ndGgoKSk7CisJCQkJCX0KKworCQkJCQlPbUZpbGVIZWxwZXIuY29weUZpbGUoZnVsbF9wYXRoLCBvdXQpOworCQkJCQlvdXQuZmx1c2goKTsKKwkJCQkJb3V0LmNsb3NlKCk7CisJCQkJfQorCQkJfSBlbHNlIHsKKwkJCQlsb2cuZXJyb3IoIkVSUk9SIERvd25sb2FkSGFuZGxlcjogbm90IGF1dGhvcml6ZWQgRmlsZURvd25sb2FkICIpOworCQkJfQorCisJCX0gY2F0Y2ggKFNlcnZlck5vdEluaXRpYWxpemVkRXhjZXB0aW9uIGUpIHsKKwkJCXJldHVybjsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVyKSB7CisJCQlsb2cuZXJyb3IoIkVycm9yIGRvd25sb2FkaW5nOiAiLCBlcik7CisJCX0KKwl9CisKKwlwcml2YXRlIFN0cmluZyBnZXRDaGF0VXNlck5hbWUoRmlsZSBmKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkJaWYgKGYuZXhpc3RzKCkgJiYgZi5pc0RpcmVjdG9yeSgpKSB7CisJCQlTdHJpbmcgZmlsZXNTdHJpbmdbXSA9IGYubGlzdCgpOworCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBmaWxlc1N0cmluZy5sZW5ndGg7IGkrKykgeworCQkJCVN0cmluZyBmaWxlTmFtZSA9IGZpbGVzU3RyaW5nW2ldOworCQkJCWlmIChmaWxlTmFtZS5zdGFydHNXaXRoKCJfY2hhdF8iKSkKKwkJCQkJcmV0dXJuIGZpbGVOYW1lOworCQkJfQorCQl9CisJCXJldHVybiAiX25vLmpwZyI7CisJfQorCisJcHJpdmF0ZSBTdHJpbmcgZ2V0QmlnUHJvZmlsZVVzZXJOYW1lKEZpbGUgZikgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCWlmIChmLmV4aXN0cygpICYmIGYuaXNEaXJlY3RvcnkoKSkgeworCQkJU3RyaW5nIGZpbGVzU3RyaW5nW10gPSBmLmxpc3QoKTsKKwkJCWZvciAoaW50IGkgPSAwOyBpIDwgZmlsZXNTdHJpbmcubGVuZ3RoOyBpKyspIHsKKwkJCQlTdHJpbmcgZmlsZU5hbWUgPSBmaWxlc1N0cmluZ1tpXTsKKwkJCQlpZiAoZmlsZU5hbWUuc3RhcnRzV2l0aCgiX2JpZ18iKSkKKwkJCQkJcmV0dXJuIGZpbGVOYW1lOworCQkJfQorCQl9CisJCXJldHVybiAiX25vLmpwZyI7CisJfQorCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2VydmxldC9vdXRwdXRoYW5kbGVyL0V4cG9ydC5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NlcnZsZXQvb3V0cHV0aGFuZGxlci9FeHBvcnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjVlYWJjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NlcnZsZXQvb3V0cHV0aGFuZGxlci9FeHBvcnQuamF2YQpAQCAtMCwwICsxLDE0NCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5zZXJ2bGV0Lm91dHB1dGhhbmRsZXI7CisKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uT3V0cHV0U3RyZWFtOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitpbXBvcnQgamF2YXguc2VydmxldC5TZXJ2bGV0RXhjZXB0aW9uOworaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3Q7CitpbXBvcnQgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVzcG9uc2U7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5BdXRoTGV2ZWxVdGlsOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuU2Vzc2lvbmRhdGFEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLk9yZ2FuaXNhdGlvbk1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLlVzZXJNYW5hZ2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEudXNlci5kYW8uVXNlcnNEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuZG9tYWluLk9yZ2FuaXNhdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlVzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2VydmxldC5CYXNlSHR0cFNlcnZsZXQ7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworCisvKioKKyAqIAorICogQGF1dGhvciBzZWJhc3RpYW53YWduZXIKKyAqIAorICovCitwdWJsaWMgY2xhc3MgRXhwb3J0IGV4dGVuZHMgQmFzZUh0dHBTZXJ2bGV0IHsKKwkKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSA4NTI3MDkzNjc0Nzg2NjkyNDcyTDsKKwkKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKEV4cG9ydC5jbGFzcywKKwkJCU9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKworCS8qCisJICogKG5vbi1KYXZhZG9jKQorCSAqIAorCSAqIEBzZWUKKwkgKiBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXQjZG9Qb3N0KGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QKKwkgKiAsIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlc3BvbnNlKQorCSAqLworCUBPdmVycmlkZQorCXByb3RlY3RlZCB2b2lkIHNlcnZpY2UoSHR0cFNlcnZsZXRSZXF1ZXN0IGh0dHBTZXJ2bGV0UmVxdWVzdCwKKwkJCUh0dHBTZXJ2bGV0UmVzcG9uc2UgaHR0cFNlcnZsZXRSZXNwb25zZSkgdGhyb3dzIFNlcnZsZXRFeGNlcHRpb24sCisJCQlJT0V4Y2VwdGlvbiB7CisKKwkJdHJ5IHsKKworCQkJaWYgKGdldEJlYW4oVXNlck1hbmFnZXIuY2xhc3MpID09IG51bGwgfHwgZ2V0QmVhbihTZXNzaW9uZGF0YURhby5jbGFzcykgPT0gbnVsbAorCQkJCQl8fCBnZXRCZWFuKFVzZXJzRGFvLmNsYXNzKSA9PSBudWxsKSB7CisJCQkJcmV0dXJuOworCQkJfQorCisJCQlTdHJpbmcgc2lkID0gaHR0cFNlcnZsZXRSZXF1ZXN0LmdldFBhcmFtZXRlcigic2lkIik7CisJCQlpZiAoc2lkID09IG51bGwpIHsKKwkJCQlzaWQgPSAiZGVmYXVsdCI7CisJCQl9CisJCQlTeXN0ZW0ub3V0LnByaW50bG4oInNpZDogIiArIHNpZCk7CisKKwkJCUxvbmcgdXNlcnNfaWQgPSBnZXRCZWFuKFNlc3Npb25kYXRhRGFvLmNsYXNzKS5jaGVja1Nlc3Npb24oc2lkKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IGdldEJlYW4oVXNlck1hbmFnZXIuY2xhc3MpLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCisJCQlTeXN0ZW0ub3V0LnByaW50bG4oInVzZXJzX2lkOiAiICsgdXNlcnNfaWQpOworCQkJU3lzdGVtLm91dC5wcmludGxuKCJ1c2VyX2xldmVsOiAiICsgdXNlcl9sZXZlbCk7CisKKwkJCS8vIGlmICh1c2VyX2xldmVsIT1udWxsICYmIHVzZXJfbGV2ZWwgPiAwKSB7CisJCQlpZiAoZ2V0QmVhbihBdXRoTGV2ZWxVdGlsLmNsYXNzKS5jaGVja1VzZXJMZXZlbCh1c2VyX2xldmVsKSkgeworCisJCQkJU3RyaW5nIG1vZHVsZU5hbWUgPSBodHRwU2VydmxldFJlcXVlc3QKKwkJCQkJCS5nZXRQYXJhbWV0ZXIoIm1vZHVsZU5hbWUiKTsKKwkJCQlpZiAobW9kdWxlTmFtZSA9PSBudWxsKSB7CisJCQkJCW1vZHVsZU5hbWUgPSAibW9kdWxlTmFtZSI7CisJCQkJfQorCQkJCVN5c3RlbS5vdXQucHJpbnRsbigibW9kdWxlTmFtZTogIiArIG1vZHVsZU5hbWUpOworCisJCQkJaWYgKG1vZHVsZU5hbWUuZXF1YWxzKCJ1c2VycyIpCisJCQkJCQl8fCBtb2R1bGVOYW1lLmVxdWFscygidXNlcm9yZ2FuaXNhdGlvbnMiKSkgeworCQkJCQlTdHJpbmcgb3JnYW5pc2F0aW9uID0gaHR0cFNlcnZsZXRSZXF1ZXN0CisJCQkJCQkJLmdldFBhcmFtZXRlcigib3JnYW5pc2F0aW9uIik7CisJCQkJCWlmIChvcmdhbmlzYXRpb24gPT0gbnVsbCkgeworCQkJCQkJb3JnYW5pc2F0aW9uID0gIjAiOworCQkJCQl9CisJCQkJCUxvbmcgb3JnYW5pc2F0aW9uX2lkID0gTG9uZy52YWx1ZU9mKG9yZ2FuaXNhdGlvbikKKwkJCQkJCQkubG9uZ1ZhbHVlKCk7CisJCQkJCVN5c3RlbS5vdXQucHJpbnRsbigib3JnYW5pc2F0aW9uX2lkOiAiICsgb3JnYW5pc2F0aW9uX2lkKTsKKworCQkJCQlMaXN0PFVzZXI+IHVMaXN0ID0gbnVsbDsKKwkJCQkJU3RyaW5nIGRvd25sb2FkTmFtZSA9ICJ1c2VycyI7CisJCQkJCWlmIChtb2R1bGVOYW1lLmVxdWFscygidXNlcm9yZ2FuaXNhdGlvbnMiKSkgeworCQkJCQkJT3JnYW5pc2F0aW9uIG9yZ2EgPSBnZXRCZWFuKE9yZ2FuaXNhdGlvbk1hbmFnZXIuY2xhc3MpCisJCQkJCQkJCS5nZXRPcmdhbmlzYXRpb25CeUlkKG9yZ2FuaXNhdGlvbl9pZCk7CisJCQkJCQlkb3dubG9hZE5hbWUgKz0gIl8iICsgb3JnYS5nZXROYW1lKCk7CisJCQkJCQl1TGlzdCA9IGdldEJlYW4oT3JnYW5pc2F0aW9uTWFuYWdlci5jbGFzcykKKwkJCQkJCQkJLmdldFVzZXJzQnlPcmdhbmlzYXRpb25JZChvcmdhbmlzYXRpb25faWQpOworCQkJCQl9IGVsc2UgeworCQkJCQkJdUxpc3QgPSBnZXRCZWFuKFVzZXJzRGFvLmNsYXNzKS5nZXRBbGxVc2VycygpOworCQkJCQl9CisKKwkJCQkJaWYgKHVMaXN0ICE9IG51bGwpIHsKKwkJCQkJCWh0dHBTZXJ2bGV0UmVzcG9uc2UucmVzZXQoKTsKKwkJCQkJCWh0dHBTZXJ2bGV0UmVzcG9uc2UucmVzZXRCdWZmZXIoKTsKKwkJCQkJCU91dHB1dFN0cmVhbSBvdXQgPSBodHRwU2VydmxldFJlc3BvbnNlCisJCQkJCQkJCS5nZXRPdXRwdXRTdHJlYW0oKTsKKwkJCQkJCWh0dHBTZXJ2bGV0UmVzcG9uc2UKKwkJCQkJCQkJLnNldENvbnRlbnRUeXBlKCJBUFBMSUNBVElPTi9PQ1RFVC1TVFJFQU0iKTsKKwkJCQkJCWh0dHBTZXJ2bGV0UmVzcG9uc2Uuc2V0SGVhZGVyKCJDb250ZW50LURpc3Bvc2l0aW9uIiwKKwkJCQkJCQkJImF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiIiArIGRvd25sb2FkTmFtZQorCQkJCQkJCQkJCSsgIi54bWxcIiIpOworCQkJCQkJZ2V0QmVhbihCYWNrdXBFeHBvcnQuY2xhc3MpLmV4cG9ydFVzZXJzKG91dCwgdUxpc3QpOworCisJCQkJCQlvdXQuZmx1c2goKTsKKwkJCQkJCW91dC5jbG9zZSgpOworCQkJCQl9CisKKwkJCQl9CisJCQl9IGVsc2UgeworCQkJCVN5c3RlbS5vdXQKKwkJCQkJCS5wcmludGxuKCJFUlJPUiBMYW5nRXhwb3J0OiBub3QgYXV0aG9yaXplZCBGaWxlRG93bmxvYWQgIgorCQkJCQkJCQkrIChuZXcgRGF0ZSgpKSk7CisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcikgeworCQkJbG9nLmVycm9yKCJFUlJPUiAiLCBlcik7CisJCX0KKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2VydmxldC9vdXRwdXRoYW5kbGVyL0V4cG9ydFRvSW1hZ2UuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zZXJ2bGV0L291dHB1dGhhbmRsZXIvRXhwb3J0VG9JbWFnZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2OTYzZWEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2VydmxldC9vdXRwdXRoYW5kbGVyL0V4cG9ydFRvSW1hZ2UuamF2YQpAQCAtMCwwICsxLDE5MiBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5zZXJ2bGV0Lm91dHB1dGhhbmRsZXI7CisKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS5pby5GaWxlT3V0cHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uRmlsZVdyaXRlcjsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEuaW8uT3V0cHV0U3RyZWFtOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitpbXBvcnQgamF2YXguc2VydmxldC5TZXJ2bGV0RXhjZXB0aW9uOworaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3Q7CitpbXBvcnQgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVzcG9uc2U7CisKK2ltcG9ydCBvcmcuYXBhY2hlLmJhdGlrLmRvbS5HZW5lcmljRE9NSW1wbGVtZW50YXRpb247CitpbXBvcnQgb3JnLmFwYWNoZS5iYXRpay5kb20uc3ZnLlNWR0RPTUltcGxlbWVudGF0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUuYmF0aWsuc3ZnZ2VuLlNWR0dyYXBoaWNzMkQ7CitpbXBvcnQgb3JnLmFwYWNoZS5iYXRpay50cmFuc2NvZGVyLlRyYW5zY29kZXJJbnB1dDsKK2ltcG9ydCBvcmcuYXBhY2hlLmJhdGlrLnRyYW5zY29kZXIuVHJhbnNjb2Rlck91dHB1dDsKK2ltcG9ydCBvcmcuYXBhY2hlLmJhdGlrLnRyYW5zY29kZXIuaW1hZ2UuSlBFR1RyYW5zY29kZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmJhdGlrLmJlYW5zLlByaW50QmVhbjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLlNlc3Npb25kYXRhRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEucmVjb3JkLldoaXRlYm9hcmRNYXBUb1NWRzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuVXNlck1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucmVtb3RlLlByaW50U2VydmljZTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5zZXJ2bGV0LkJhc2VIdHRwU2VydmxldDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5zZXJ2bGV0LlNlcnZlck5vdEluaXRpYWxpemVkRXhjZXB0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLk9tRmlsZUhlbHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5tYXRoLkNhbGVuZGFyUGF0dGVybnM7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy53M2MuZG9tLkRPTUltcGxlbWVudGF0aW9uOworaW1wb3J0IG9yZy53M2MuZG9tLkRvY3VtZW50OworaW1wb3J0IG9yZy53M2MuZG9tLkVsZW1lbnQ7CisKK3B1YmxpYyBjbGFzcyBFeHBvcnRUb0ltYWdlIGV4dGVuZHMgQmFzZUh0dHBTZXJ2bGV0IHsKKwkKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAtMzUzNTk5ODI1NDc0NjA4NDI5N0w7CisJCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcigKKwkJCUV4cG9ydFRvSW1hZ2UuY2xhc3MsIE9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKworCS8qCisJICogKG5vbi1KYXZhZG9jKQorCSAqIAorCSAqIEBzZWUKKwkgKiBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXQjZG9Qb3N0KGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QKKwkgKiAsIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlc3BvbnNlKQorCSAqLworCUBPdmVycmlkZQorCXByb3RlY3RlZCB2b2lkIHNlcnZpY2UoSHR0cFNlcnZsZXRSZXF1ZXN0IHJlcXVlc3QsIEh0dHBTZXJ2bGV0UmVzcG9uc2UgcmVzcG9uc2UpIHRocm93cyBTZXJ2bGV0RXhjZXB0aW9uLAorCQkJSU9FeGNlcHRpb24geworCisJCXRyeSB7CisJCQlTdHJpbmcgc2lkID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXIoInNpZCIpOworCQkJaWYgKHNpZCA9PSBudWxsKSB7CisJCQkJc2lkID0gImRlZmF1bHQiOworCQkJfQorCQkJbG9nLmRlYnVnKCJzaWQ6ICIgKyBzaWQpOworCisJCQlTdHJpbmcgaGFzaCA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJoYXNoIik7CisJCQlpZiAoaGFzaCA9PSBudWxsKSB7CisJCQkJaGFzaCA9ICIiOworCQkJfQorCQkJbG9nLmRlYnVnKCJoYXNoOiAiICsgaGFzaCk7CisKKwkJCVN0cmluZyBmaWxlTmFtZSA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJmaWxlTmFtZSIpOworCQkJaWYgKGZpbGVOYW1lID09IG51bGwpIHsKKwkJCQlmaWxlTmFtZSA9ICJmaWxlX3h5eiI7CisJCQl9CisKKwkJCVN0cmluZyBleHBvcnRUeXBlID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXIoImV4cG9ydFR5cGUiKTsKKwkJCWlmIChleHBvcnRUeXBlID09IG51bGwpIHsKKwkJCQlleHBvcnRUeXBlID0gInN2ZyI7CisJCQl9CisKKwkJCUxvbmcgdXNlcnNfaWQgPSBnZXRCZWFuKFNlc3Npb25kYXRhRGFvLmNsYXNzKS5jaGVja1Nlc3Npb24oc2lkKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IGdldEJlYW4oVXNlck1hbmFnZXIuY2xhc3MpLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCisJCQlsb2cuZGVidWcoInVzZXJzX2lkOiAiICsgdXNlcnNfaWQpOworCQkJbG9nLmRlYnVnKCJ1c2VyX2xldmVsOiAiICsgdXNlcl9sZXZlbCk7CisKKwkJCWlmICh1c2VyX2xldmVsICE9IG51bGwgJiYgdXNlcl9sZXZlbCA+IDAgJiYgaGFzaCAhPSAiIikgeworCisJCQkJUHJpbnRCZWFuIHBCZWFuID0gUHJpbnRTZXJ2aWNlLmdldFByaW50SXRlbUJ5SGFzaChoYXNoKTsKKworCQkJCS8vIFdoaXRlYm9hcmQgT2JqZWN0cworCQkJCUBTdXBwcmVzc1dhcm5pbmdzKCJyYXd0eXBlcyIpCisJCQkJTGlzdCB3aGl0ZUJvYXJkTWFwID0gcEJlYW4uZ2V0TWFwKCk7CisKKwkJCQkvLyBHZXQgYSBET01JbXBsZW1lbnRhdGlvbi4KKwkJCQlET01JbXBsZW1lbnRhdGlvbiBkb21JbXBsID0gR2VuZXJpY0RPTUltcGxlbWVudGF0aW9uCisJCQkJCQkuZ2V0RE9NSW1wbGVtZW50YXRpb24oKTsKKworCQkJCS8vIENyZWF0ZSBhbiBpbnN0YW5jZSBvZiBvcmcudzNjLmRvbS5Eb2N1bWVudC4KKwkJCQkvLyBTdHJpbmcgc3ZnTlMgPSAiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciOworCQkJCVN0cmluZyBzdmdOUyA9IFNWR0RPTUltcGxlbWVudGF0aW9uLlNWR19OQU1FU1BBQ0VfVVJJOworCisJCQkJRG9jdW1lbnQgZG9jdW1lbnQgPSBkb21JbXBsLmNyZWF0ZURvY3VtZW50KHN2Z05TLCAic3ZnIiwgbnVsbCk7CisKKwkJCQkvLyBHZXQgdGhlIHJvb3QgZWxlbWVudCAodGhlICdzdmcnIGVsZW1lbnQpLgorCQkJCUVsZW1lbnQgc3ZnUm9vdCA9IGRvY3VtZW50LmdldERvY3VtZW50RWxlbWVudCgpOworCisJCQkJLy8gU2V0IHRoZSB3aWR0aCBhbmQgaGVpZ2h0IGF0dHJpYnV0ZXMgb24gdGhlIHJvb3QgJ3N2ZycKKwkJCQkvLyBlbGVtZW50LgorCQkJCXN2Z1Jvb3Quc2V0QXR0cmlidXRlTlMobnVsbCwgIndpZHRoIiwgIiIgKyBwQmVhbi5nZXRXaWR0aCgpKTsKKwkJCQlzdmdSb290LnNldEF0dHJpYnV0ZU5TKG51bGwsICJoZWlnaHQiLCAiIiArIHBCZWFuLmdldEhlaWdodCgpKTsKKworCQkJCWxvZy5kZWJ1ZygicEJlYW4uZ2V0V2lkdGgoKSxwQmVhbi5nZXRIZWlnaHQoKSIKKwkJCQkJCSsgcEJlYW4uZ2V0V2lkdGgoKSArICIsIiArIHBCZWFuLmdldEhlaWdodCgpKTsKKworCQkJCS8vIENyZWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGUgU1ZHIEdlbmVyYXRvci4KKwkJCQlTVkdHcmFwaGljczJEIHN2Z0dlbmVyYXRvciA9IG5ldyBTVkdHcmFwaGljczJEKGRvY3VtZW50KTsKKworCQkJCXN2Z0dlbmVyYXRvciA9IFdoaXRlYm9hcmRNYXBUb1NWRy5nZXRJbnN0YW5jZSgpCisJCQkJCQkuY29udmVydE1hcFRvU1ZHKHN2Z0dlbmVyYXRvciwgd2hpdGVCb2FyZE1hcCk7CisKKwkJCQkvLyBGaW5hbGx5LCBzdHJlYW0gb3V0IFNWRyB0byB0aGUgc3RhbmRhcmQgb3V0cHV0IHVzaW5nCisJCQkJLy8gVVRGLTggZW5jb2RpbmcuCisJCQkJYm9vbGVhbiB1c2VDU1MgPSB0cnVlOyAvLyB3ZSB3YW50IHRvIHVzZSBDU1Mgc3R5bGUgYXR0cmlidXRlcworCisJCQkJRmlsZSB1cGxvYWRUZW1wRGlyID0gT21GaWxlSGVscGVyLmdldFVwbG9hZFRlbXBEaXIoKTsKKwkJCQlsb2cuZGVidWcoIndvcmtpbmdfZGlyOiAiICsgdXBsb2FkVGVtcERpcik7CisJCQkJU3RyaW5nIHJlcUZpbGVQcmVmaXggPSBmaWxlTmFtZSArICJfIiArIENhbGVuZGFyUGF0dGVybnMuZ2V0VGltZUZvclN0cmVhbUlkKG5ldyBEYXRlKCkpOworCQkJCUZpbGUgc3ZnRmlsZSA9IG5ldyBGaWxlKHVwbG9hZFRlbXBEaXIsIHJlcUZpbGVQcmVmaXggKyAiLnN2ZyIpOworCQkJCWxvZy5kZWJ1ZygiZXhwb3J0ZWQgc3ZnIGZpbGU6ICIgKyBzdmdGaWxlLmdldENhbm9uaWNhbFBhdGgoKSk7CisJCQkJRmlsZVdyaXRlciBvdXQgPSBuZXcgRmlsZVdyaXRlcihzdmdGaWxlKTsKKwkJCQlzdmdHZW5lcmF0b3Iuc3RyZWFtKG91dCwgdXNlQ1NTKTsKKwkJCQlvdXQuZmx1c2goKTsKKwkJCQlvdXQuY2xvc2UoKTsKKwkJCQlGaWxlIGV4cEZpbGUgPSBuZXcgRmlsZSh1cGxvYWRUZW1wRGlyLCByZXFGaWxlUHJlZml4ICsgIi4iICsgZXhwb3J0VHlwZSk7CisJCQkJbG9nLmRlYnVnKCJleHBvcnRlZCBmaWxlOiAiICsgZXhwRmlsZS5nZXRDYW5vbmljYWxQYXRoKCkpOworCQkJCWlmICgic3ZnIi5lcXVhbHMoZXhwb3J0VHlwZSkpIHsKKwkJCQkJb3V0RmlsZShyZXNwb25zZSwgZXhwRmlsZSk7CisJCQkJfSBlbHNlIGlmICgianBnIi5lcXVhbHMoZXhwb3J0VHlwZSkpIHsKKwkJCQkJSlBFR1RyYW5zY29kZXIgdCA9IG5ldyBKUEVHVHJhbnNjb2RlcigpOworCQkJICAgICAgICB0LmFkZFRyYW5zY29kaW5nSGludChKUEVHVHJhbnNjb2Rlci5LRVlfUVVBTElUWSwgMWYpOworCQkJICAgICAgICAKKwkJCSAgICAgICAgT3V0cHV0U3RyZWFtIG9zdHJlYW0gPSBuZXcgRmlsZU91dHB1dFN0cmVhbShleHBGaWxlKTsKKwkJCSAgICAgICAgVHJhbnNjb2Rlck91dHB1dCBvdXRwdXQgPSBuZXcgVHJhbnNjb2Rlck91dHB1dChuZXcgRmlsZU91dHB1dFN0cmVhbShleHBGaWxlKSk7CisKKwkJCSAgICAgICAgLy8gUGVyZm9ybSB0aGUgdHJhbnNjb2RpbmcuCisJCQkgICAgICAgIHQudHJhbnNjb2RlKG5ldyBUcmFuc2NvZGVySW5wdXQoc3ZnRmlsZS50b1VSSSgpLnRvU3RyaW5nKCkpLCBvdXRwdXQpOworCQkJICAgICAgICBvc3RyZWFtLmZsdXNoKCk7CisJCQkgICAgICAgIG9zdHJlYW0uY2xvc2UoKTsKKwkJCSAgICAgICAgCisJCQkJCW91dEZpbGUocmVzcG9uc2UsIGV4cEZpbGUpOworCQkJCX0gZWxzZSBpZiAoZXhwb3J0VHlwZS5lcXVhbHMoInBuZyIpCisJCQkJCQl8fCBleHBvcnRUeXBlLmVxdWFscygiZ2lmIikgfHwgZXhwb3J0VHlwZS5lcXVhbHMoInRpZiIpCisJCQkJCQl8fCBleHBvcnRUeXBlLmVxdWFscygicGRmIikpIHsKKwkJCQkJCS8vVE9ETyBub3QgaW1wbGVtZW50ZWQgeWV0CisJCQkJfQorCQkJfQorCQl9IGNhdGNoIChTZXJ2ZXJOb3RJbml0aWFsaXplZEV4Y2VwdGlvbiBlKSB7CisJCQlyZXR1cm47CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcikgeworCQkJbG9nLmVycm9yKCJFcnJvciBleHBvcnRpbmcgdG8gaW1hZ2UgIiwgZXIpOworCQl9CisJfQorCQorCXByaXZhdGUgdm9pZCBvdXRGaWxlKEh0dHBTZXJ2bGV0UmVzcG9uc2UgcmVzcG9uc2UsIEZpbGUgZikgdGhyb3dzIElPRXhjZXB0aW9uIHsKKwkJcmVzcG9uc2UucmVzZXQoKTsKKwkJcmVzcG9uc2UucmVzZXRCdWZmZXIoKTsKKwkJT3V0cHV0U3RyZWFtIG91dFN0cmVhbSA9IHJlc3BvbnNlLmdldE91dHB1dFN0cmVhbSgpOworCQlyZXNwb25zZS5zZXRDb250ZW50VHlwZSgiQVBQTElDQVRJT04vT0NURVQtU1RSRUFNIik7CisJCXJlc3BvbnNlLnNldEhlYWRlcigiQ29udGVudC1EaXNwb3NpdGlvbiIsICJhdHRhY2htZW50OyBmaWxlbmFtZT1cIiIgKyBmLmdldE5hbWUoKSArICJcIiIpOworCQlyZXNwb25zZS5zZXRIZWFkZXIoIkNvbnRlbnQtTGVuZ3RoIiwgIiIgKyBmLmxlbmd0aCgpKTsKKworCQlPbUZpbGVIZWxwZXIuY29weUZpbGUoZiwgb3V0U3RyZWFtKTsKKwkJb3V0U3RyZWFtLmNsb3NlKCk7CisJfQorCQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NlcnZsZXQvb3V0cHV0aGFuZGxlci9JbXBvcnRDb250cm9sbGVyLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2VydmxldC9vdXRwdXRoYW5kbGVyL0ltcG9ydENvbnRyb2xsZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MWExYzFmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NlcnZsZXQvb3V0cHV0aGFuZGxlci9JbXBvcnRDb250cm9sbGVyLmphdmEKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2VydmxldC5vdXRwdXRoYW5kbGVyOworCitpbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsKKworaW1wb3J0IGphdmF4LnNlcnZsZXQuU2VydmxldEV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0OworaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlc3BvbnNlOworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRvY3VtZW50cy5iZWFucy5VcGxvYWRDb21wbGV0ZU1lc3NhZ2U7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucmVtb3RlLnJlZDUuU2NvcGVBcHBsaWNhdGlvbkFkYXB0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MueG1saW1wb3J0Lkxhbmd1YWdlSW1wb3J0OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnhtbGltcG9ydC5Vc2VySW1wb3J0OworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5BdXRvd2lyZWQ7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5zdGVyZW90eXBlLkNvbnRyb2xsZXI7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay53ZWIuYmluZC5hbm5vdGF0aW9uLlJlcXVlc3RNYXBwaW5nOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsud2ViLmJpbmQuYW5ub3RhdGlvbi5SZXF1ZXN0TWV0aG9kOworCitAQ29udHJvbGxlcgorcHVibGljIGNsYXNzIEltcG9ydENvbnRyb2xsZXIgZXh0ZW5kcyBBYnN0cmFjdFVwbG9hZENvbnRyb2xsZXIgeworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoSW1wb3J0Q29udHJvbGxlci5jbGFzcywKKwkJCU9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFNjb3BlQXBwbGljYXRpb25BZGFwdGVyIHNjb3BlQXBwbGljYXRpb25BZGFwdGVyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFVzZXJJbXBvcnQgdXNlckltcG9ydDsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBMYW5ndWFnZUltcG9ydCBsYW5ndWFnZUltcG9ydDsKKwkKKyAgICBAUmVxdWVzdE1hcHBpbmcodmFsdWUgPSAiL2ltcG9ydC51cGxvYWQiLCBtZXRob2QgPSBSZXF1ZXN0TWV0aG9kLlBPU1QpCisJcHJvdGVjdGVkIHZvaWQgc2VydmljZShIdHRwU2VydmxldFJlcXVlc3QgcmVxdWVzdCwKKwkJCUh0dHBTZXJ2bGV0UmVzcG9uc2UgaHR0cFNlcnZsZXRSZXNwb25zZSkgdGhyb3dzIFNlcnZsZXRFeGNlcHRpb24geworCisgICAgCVVwbG9hZEluZm8gaW5mbyA9IHZhbGlkYXRlKHJlcXVlc3QsIHRydWUpOworCQl0cnkgeworCQkJU3RyaW5nIG1vZHVsZU5hbWUgPSByZXF1ZXN0LmdldFBhcmFtZXRlcigibW9kdWxlTmFtZSIpOworCQkJaWYgKG1vZHVsZU5hbWUgPT0gbnVsbCkgeworCQkJCW1vZHVsZU5hbWUgPSAibW9kdWxlTmFtZSI7CisJCQl9CisJCQlsb2cuZGVidWcoIm1vZHVsZU5hbWU6ICIgKyBtb2R1bGVOYW1lKTsKKwkJCUlucHV0U3RyZWFtIGlzID0gaW5mby5maWxlLmdldElucHV0U3RyZWFtKCk7CisKKwkJCWlmIChtb2R1bGVOYW1lLmVxdWFscygidXNlcnMiKSkgeworCQkJCWxvZy5lcnJvcigiSW1wb3J0IFVzZXJzIik7CisJCQkJdXNlckltcG9ydC5hZGRVc2Vyc0J5RG9jdW1lbnQoaXMpOworCisJCQl9IGVsc2UgaWYgKG1vZHVsZU5hbWUuZXF1YWxzKCJsYW5ndWFnZSIpKSB7CisJCQkJbG9nLmVycm9yKCJJbXBvcnQgTGFuZ3VhZ2UiKTsKKwkJCQlTdHJpbmcgbGFuZ3VhZ2UgPSByZXF1ZXN0CisJCQkJCQkuZ2V0UGFyYW1ldGVyKCJzZWNvbmRpZCIpOworCQkJCWlmIChsYW5ndWFnZSA9PSBudWxsKSB7CisJCQkJCWxhbmd1YWdlID0gIjAiOworCQkJCX0KKwkJCQlMb25nIGxhbmd1YWdlX2lkID0gTG9uZy52YWx1ZU9mKGxhbmd1YWdlKS5sb25nVmFsdWUoKTsKKwkJCQlsb2cuZGVidWcoImxhbmd1YWdlX2lkOiAiICsgbGFuZ3VhZ2VfaWQpOworCisJCQkJbGFuZ3VhZ2VJbXBvcnQuYWRkTGFuZ3VhZ2VCeURvY3VtZW50KAorCQkJCQkJbGFuZ3VhZ2VfaWQsIGlzKTsKKwkJCX0KKworCQkJbG9nLmRlYnVnKCJSZXR1cm4gQW5kIENsb3NlIik7CisKKwkJCWxvZy5kZWJ1ZygibW9kdWxlTmFtZS5lcXVhbHModXNlcnByb2ZpbGUpID8gIiArIG1vZHVsZU5hbWUpOworCisJCQlsb2cuZGVidWcoIm1vZHVsZU5hbWUuZXF1YWxzKHVzZXJwcm9maWxlKSAhICIpOworCQkJCisJCQlVcGxvYWRDb21wbGV0ZU1lc3NhZ2UgdXBsb2FkQ29tcGxldGVNZXNzYWdlID0gbmV3IFVwbG9hZENvbXBsZXRlTWVzc2FnZSgKKwkJCQkJaW5mby51c2VySWQsCisJCQkJCSJsaWJyYXJ5IiwgLy9tZXNzYWdlCisJCQkJCSJpbXBvcnQiLCAvL2FjdGlvbgorCQkJCQkiIiwgLy9lcnJvcgorCQkJCQlpbmZvLmZpbGVuYW1lKTsKKwkJCisJCQlzY29wZUFwcGxpY2F0aW9uQWRhcHRlci5zZW5kVXBsb2FkQ29tcGxldE1lc3NhZ2VCeVB1YmxpY1NJRCgKKwkJCQkJdXBsb2FkQ29tcGxldGVNZXNzYWdlLCBpbmZvLnB1YmxpY1NJRCk7CisJCQkKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVyKSB7CisJCQlsb2cuZXJyb3IoIkVSUk9SIGltcG9ydGluZzoiLCBlcik7CisJCQl0aHJvdyBuZXcgU2VydmxldEV4Y2VwdGlvbihlcik7CisJCX0KKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zZXJ2bGV0L291dHB1dGhhbmRsZXIvSW5zdGFsbC5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NlcnZsZXQvb3V0cHV0aGFuZGxlci9JbnN0YWxsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWZmNGY1ZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zZXJ2bGV0L291dHB1dGhhbmRsZXIvSW5zdGFsbC5qYXZhCkBAIC0wLDAgKzEsMjYyIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnNlcnZsZXQub3V0cHV0aGFuZGxlcjsKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLmlvLlN0cmluZ1dyaXRlcjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlua2VkSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3Q7CitpbXBvcnQgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVzcG9uc2U7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5kYW8uQ29uZmlndXJhdGlvbkRhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kb2N1bWVudHMuSW5zdGFsbGF0aW9uRG9jdW1lbnRIYW5kbGVyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmluc3RhbGxhdGlvbi5JbXBvcnRJbml0dmFsdWVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmluc3RhbGxhdGlvbi5JbnN0YWxsYXRpb25Db25maWc7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuT21UaW1lWm9uZTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5zZXJ2bGV0LkJhc2VWZWxvY2l0eVZpZXdTZXJ2bGV0OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnNlcnZsZXQuU2VydmVyTm90SW5pdGlhbGl6ZWRFeGNlcHRpb247CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMuSW1wb3J0SGVscGVyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLk9tRmlsZUhlbHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnZlbG9jaXR5LlRlbXBsYXRlOworaW1wb3J0IG9yZy5hcGFjaGUudmVsb2NpdHkuY29udGV4dC5Db250ZXh0OworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKKworcHVibGljIGNsYXNzIEluc3RhbGwgZXh0ZW5kcyBCYXNlVmVsb2NpdHlWaWV3U2VydmxldCB7CisJCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMzY4NDM4MTI0MzIzNjAxMzc3MUw7CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKAorCQkJSW5zdGFsbC5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCisJcHJpdmF0ZSBUZW1wbGF0ZSBnZXRTdGVwMlRlbXBsYXRlKEh0dHBTZXJ2bGV0UmVxdWVzdCBodHRwU2VydmxldFJlcXVlc3QsIENvbnRleHQgY3R4LCBTdHJpbmcgbGFuZykgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCVN0cmluZyBoZWFkZXIgPSBodHRwU2VydmxldFJlcXVlc3QuZ2V0SGVhZGVyKCJBY2NlcHQtTGFuZ3VhZ2UiKTsKKwkJU3RyaW5nW10gaGVhZGVyTGlzdCA9IGhlYWRlciAhPSBudWxsID8gaGVhZGVyLnNwbGl0KCIsIikgOiBuZXcgU3RyaW5nWzBdOworCQlTdHJpbmcgaGVhZENvZGUgPSBoZWFkZXJMaXN0Lmxlbmd0aCA+IDAgPyBoZWFkZXJMaXN0WzBdIDogImVuIjsKKwkJCisJCUxpbmtlZEhhc2hNYXA8SW50ZWdlciwgTGlua2VkSGFzaE1hcDxTdHJpbmcsIE9iamVjdD4+IGFsbExhbmd1YWdlc0FsbCA9IGdldEJlYW4oSW1wb3J0SW5pdHZhbHVlcy5jbGFzcykKKwkJCQkuZ2V0TGFuZ3VhZ2VGaWxlcygpOworCQlMaW5rZWRIYXNoTWFwPEludGVnZXIsIFN0cmluZz4gYWxsTGFuZ3VhZ2VzID0gbmV3IExpbmtlZEhhc2hNYXA8SW50ZWdlciwgU3RyaW5nPigpOworCQkvL2ZpcnN0IGl0ZXJhdGlvbiBmb3IgcHJlZmVycmVkIGxhbmd1YWdlCisJCUludGVnZXIgcHJlZktleSA9IC0xOworCQlTdHJpbmcgcHJlZk5hbWUgPSBudWxsOworCQlmb3IgKEludGVnZXIga2V5IDogYWxsTGFuZ3VhZ2VzQWxsLmtleVNldCgpKSB7CisJCQlTdHJpbmcgbGFuZ05hbWUgPSAoU3RyaW5nKSBhbGxMYW5ndWFnZXNBbGwuZ2V0KGtleSkuZ2V0KCJuYW1lIik7CisJCQlTdHJpbmcgbGFuZ0NvZGUgPSAoU3RyaW5nKSBhbGxMYW5ndWFnZXNBbGwuZ2V0KGtleSkuZ2V0KCJjb2RlIik7CisJCQlpZiAobGFuZ0NvZGUgIT0gbnVsbCkgeworCQkJCWlmIChoZWFkQ29kZS5lcXVhbHMobGFuZ0NvZGUpKSB7CisJCQkJCXByZWZLZXkgPSBrZXk7CisJCQkJCXByZWZOYW1lID0gbGFuZ05hbWU7CisJCQkJCWJyZWFrOworCQkJCX0gZWxzZSBpZiAoaGVhZENvZGUuc3RhcnRzV2l0aChsYW5nQ29kZSkpIHsKKwkJCQkJcHJlZktleSA9IGtleTsKKwkJCQkJcHJlZk5hbWUgPSBsYW5nTmFtZTsKKwkJCQl9CisJCQl9CisJCX0KKwkJYWxsTGFuZ3VhZ2VzLnB1dChwcmVmS2V5LCBwcmVmTmFtZSk7CisJCWZvciAoSW50ZWdlciBrZXkgOiBhbGxMYW5ndWFnZXNBbGwua2V5U2V0KCkpIHsKKwkJCVN0cmluZyBsYW5nTmFtZSA9IChTdHJpbmcpIGFsbExhbmd1YWdlc0FsbC5nZXQoa2V5KS5nZXQoIm5hbWUiKTsKKwkJCWlmIChrZXkgIT0gcHJlZktleSkgeworCQkJCWFsbExhbmd1YWdlcy5wdXQoa2V5LCBsYW5nTmFtZSk7CisJCQl9CisJCX0KKworCQlMaW5rZWRIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBhbGxGb250cyA9IG5ldyBMaW5rZWRIYXNoTWFwPFN0cmluZywgU3RyaW5nPigpOworCQlhbGxGb250cy5wdXQoIlRpbWVzTmV3Um9tYW4iLCAiVGltZXNOZXdSb21hbiIpOworCQlhbGxGb250cy5wdXQoIlZlcmRhbmEiLCAiVmVyZGFuYSIpOworCQlhbGxGb250cy5wdXQoIkFyaWFsIiwgIkFyaWFsIik7CisKKwkJTGlzdDxPbVRpbWVab25lPiBvbVRpbWVab25lTGlzdCA9IGdldEJlYW4oSW1wb3J0SW5pdHZhbHVlcy5jbGFzcykKKwkJCQkuZ2V0VGltZVpvbmVzKCk7CisKKwkJVGVtcGxhdGUgdHBsID0gc3VwZXIuZ2V0VGVtcGxhdGUoImluc3RhbGxfc3RlcDFfIgorCQkJCSsgbGFuZyArICIudm0iKTsKKwkJY3R4LnB1dCgiYWxsTGFuZ3VhZ2VzIiwgYWxsTGFuZ3VhZ2VzKTsKKwkJY3R4LnB1dCgiYWxsRm9udHMiLCBhbGxGb250cyk7CisJCWN0eC5wdXQoImFsbFRpbWVab25lcyIsIEltcG9ydEhlbHBlci5nZXRBbGxUaW1lWm9uZXMob21UaW1lWm9uZUxpc3QpKTsKKwkJU3RyaW5nV3JpdGVyIHdyaXRlciA9IG5ldyBTdHJpbmdXcml0ZXIoKTsKKwkJdHBsLm1lcmdlKGN0eCwgd3JpdGVyKTsKKworCQlyZXR1cm4gdHBsOworCX0KKwkKKwkvKgorCSAqIChub24tSmF2YWRvYykKKwkgKiAKKwkgKiBAc2VlCisJICogamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0I2RvUG9zdChqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0CisJICogLCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXNwb25zZSkKKwkgKi8KKwlAT3ZlcnJpZGUKKwlwdWJsaWMgVGVtcGxhdGUgaGFuZGxlUmVxdWVzdChIdHRwU2VydmxldFJlcXVlc3QgcmVxdWVzdCwKKwkJCUh0dHBTZXJ2bGV0UmVzcG9uc2UgcmVzcG9uc2UsIENvbnRleHQgY3R4KSB7CisKKwkJdHJ5IHsKKwkJCWN0eC5wdXQoIkFQUF9ST09UIiwgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCQkJY3R4LnB1dCgiQVBQX05BTUUiLCBnZXRCZWFuKENvbmZpZ3VyYXRpb25EYW8uY2xhc3MpLmdldEFwcE5hbWUoKSk7CisJCQlTdHJpbmcgY29tbWFuZCA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJjb21tYW5kIik7CisKKwkJCVN0cmluZyBsYW5nID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXIoImxhbmciKTsKKwkJCWlmIChsYW5nID09IG51bGwpCisJCQkJbGFuZyA9ICJFTiI7CisKKwkJCUZpbGUgaW5zdGFsbGVyRmlsZSA9IE9tRmlsZUhlbHBlci5nZXRJbnN0YWxsRmlsZSgpOworCisJCQlpZiAoY29tbWFuZCA9PSBudWxsIHx8ICFpbnN0YWxsZXJGaWxlLmV4aXN0cygpKSB7CisJCQkJbG9nLmRlYnVnKCJjb21tYW5kIGVxdWFscyBudWxsIik7CisKKwkJCQlpZiAoIWluc3RhbGxlckZpbGUuZXhpc3RzKCkpIHsKKwkJCQkJRmlsZSBjb25mRGlyID0gT21GaWxlSGVscGVyLmdldENvbmZEaXIoKTsKKwkJCQkJYm9vbGVhbiBiID0gY29uZkRpci5jYW5Xcml0ZSgpOworCisJCQkJCWlmICghYikgeworCQkJCQkJLy8gRmlsZSBjb3VsZCBub3QgYmUgY3JlYXRlZCBzbyB0aHJvdyBhbiBlcnJvcgorCQkJCQkJY3R4LnB1dCgiZXJyb3IiLAorCQkJCQkJCQkiQ291bGQgbm90IENyZWF0ZSBGaWxlLCBQZXJtaXNzaW9uIHNldD8gIik7CisJCQkJCQljdHgucHV0KCJwYXRoIiwgY29uZkRpci5nZXRDYW5vbmljYWxQYXRoKCkpOworCQkJCQkJcmV0dXJuIGdldFZlbG9jaXR5VmlldygpLmdldFZlbG9jaXR5RW5naW5lKCkKKwkJCQkJCQkJLmdldFRlbXBsYXRlKCJpbnN0YWxsX2Vycm9yXyIgKyBsYW5nICsgIi52bSIpOworCQkJCQl9IGVsc2UgeworCQkJCQkJSW5zdGFsbGF0aW9uRG9jdW1lbnRIYW5kbGVyLmNyZWF0ZURvY3VtZW50KDApOworCQkJCQkJLy8gRmlsZSBoYXMgYmVlbiBjcmVhdGVkIHNvIGZvbGxvdyBmaXJzdCBzdGVwIG9mCisJCQkJCQkvLyBJbnN0YWxsYXRpb24KKwkJCQkJCXJldHVybiBnZXRWZWxvY2l0eVZpZXcoKS5nZXRWZWxvY2l0eUVuZ2luZSgpCisJCQkJCQkJCS5nZXRUZW1wbGF0ZSgiaW5zdGFsbF93ZWxjb21lXyIgKyBsYW5nICsgIi52bSIpOworCQkJCQl9CisKKwkJCQl9IGVsc2UgeworCQkJCQlpbnQgaSA9IEluc3RhbGxhdGlvbkRvY3VtZW50SGFuZGxlci5nZXRDdXJyZW50U3RlcE51bWJlcigpOworCQkJCQlpZiAoaSA9PSAwKSB7CisJCQkJCQlyZXR1cm4gZ2V0U3RlcDJUZW1wbGF0ZShyZXF1ZXN0LCBjdHgsIGxhbmcpOworCQkJCQl9IGVsc2UgeworCQkJCQkJcmV0dXJuIGdldFZlbG9jaXR5VmlldygpLmdldFZlbG9jaXR5RW5naW5lKCkKKwkJCQkJCQkJLmdldFRlbXBsYXRlKCJpbnN0YWxsX3N0ZXAyXyIgKyBsYW5nICsgIi52bSIpOworCQkJCQl9CisJCQkJfQorCisJCQl9IGVsc2UgaWYgKGNvbW1hbmQuZXF1YWxzKCJzdGVwMSIpKSB7CisKKwkJCQlpbnQgaSA9IEluc3RhbGxhdGlvbkRvY3VtZW50SGFuZGxlci5nZXRDdXJyZW50U3RlcE51bWJlcigpOworCQkJCWlmIChpID09IDApIHsKKwkJCQkJcmV0dXJuIGdldFN0ZXAyVGVtcGxhdGUocmVxdWVzdCwgY3R4LCBsYW5nKTsKKwkJCQl9IGVsc2UgeworCQkJCQljdHgucHV0KCJlcnJvciIsCisJCQkJCQkJIlRoaXMgU3RlcCBvZiB0aGUgaW5zdGFsbGF0aW9uIGhhcyBhbHJlYWR5IGJlZW4gZG9uZS4gY29udGludWUgd2l0aCBzdGVwIDIgPEEgSFJFRj0nP2NvbW1hbmQ9c3RlcDInPmNvbnRpbnVlIHdpdGggc3RlcCAyPC9BPiIpOworCQkJCQlyZXR1cm4gZ2V0VmVsb2NpdHlWaWV3KCkuZ2V0VmVsb2NpdHlFbmdpbmUoKS5nZXRUZW1wbGF0ZSgKKwkJCQkJCQkiaW5zdGFsbF9leGNlcHRpb25fIiArIGxhbmcgKyAiLnZtIik7CisJCQkJfQorCisJCQl9IGVsc2UgaWYgKGNvbW1hbmQuZXF1YWxzKCJzdGVwMiIpKSB7CisKKwkJCQlpbnQgaSA9IEluc3RhbGxhdGlvbkRvY3VtZW50SGFuZGxlci5nZXRDdXJyZW50U3RlcE51bWJlcigpOworCQkJCWlmIChpID09IDApIHsKKworCQkJCQlsb2cuZGVidWcoImRvIGluaXQgaW5zdGFsbGF0aW9uIik7CisKKwkJCQkJU3RyaW5nIHVzZXJuYW1lID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXIoInVzZXJuYW1lIik7CisJCQkJCVN0cmluZyB1c2VycGFzcyA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJ1c2VycGFzcyIpOworCQkJCQlTdHJpbmcgdXNlcmVtYWlsID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXIoInVzZXJlbWFpbCIpOworCQkJCQlTdHJpbmcgb3JnbmFtZSA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJvcmduYW1lIik7CisJCQkJCUluc3RhbGxhdGlvbkNvbmZpZyBjZmcgPSBuZXcgSW5zdGFsbGF0aW9uQ29uZmlnKCk7CisJCQkJCWNmZy5hbGxvd0Zyb250ZW5kUmVnaXN0ZXIgPSByZXF1ZXN0LmdldFBhcmFtZXRlcigiY29uZmlnZGVmYXVsdCIpOworCisJCQkJCWNmZy5tYWlsUmVmZXJlciA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJjb25maWdyZWZlcmVyIik7CisJCQkJCWNmZy5zbXRwU2VydmVyID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXIoImNvbmZpZ3NtdHAiKTsKKwkJCQkJY2ZnLnNtdHBQb3J0ID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXIoImNvbmZpZ3NtdHBwb3J0Iik7CisJCQkJCWNmZy5tYWlsQXV0aE5hbWUgPSByZXF1ZXN0LmdldFBhcmFtZXRlcigiY29uZmlnbWFpbHVzZXIiKTsKKwkJCQkJY2ZnLm1haWxBdXRoUGFzcyA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJjb25maWdtYWlscGFzcyIpOworCQkJCQljZmcubWFpbFVzZVRscyA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJtYWlsdXNldGxzIik7CisJCQkJCWNmZy5yZXBseVRvT3JnYW5pemVyID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXIoInJlcGx5VG9Pcmdhbml6ZXIiKTsKKworCQkJCQljZmcuZGVmYXVsdExhbmdJZCA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJjb25maWdkZWZhdWx0TGFuZyIpOworCQkJCQljZmcuc3dmWm9vbSA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJzd2Z0b29sc196b29tIik7CisJCQkJCWNmZy5zd2ZKcGVnUXVhbGl0eSA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJzd2Z0b29sc19qcGVncXVhbGl0eSIpOworCQkJCQljZmcuc3dmUGF0aCA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJzd2Z0b29sc19wYXRoIik7CisJCQkJCWNmZy5pbWFnZU1hZ2ljUGF0aCA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJpbWFnZW1hZ2lja19wYXRoIik7CisJCQkJCWNmZy5zZW5kRW1haWxBdFJlZ2lzdGVyID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXIoInNlbmRFbWFpbEF0UmVnaXN0ZXIiKTsKKwkJCQkJY2ZnLnNlbmRFbWFpbFdpdGhWZXJmaWNhdGlvbkNvZGUgPSByZXF1ZXN0LmdldFBhcmFtZXRlcigic2VuZEVtYWlsV2l0aFZlcmZpY2F0aW9uQ29kZSIpOworCQkJCQljZmcuY3JlYXRlRGVmYXVsdFJvb21zID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXIoImNyZWF0ZURlZmF1bHRSb29tcyIpOworCisJCQkJCWNmZy5kZWZhdWx0RXhwb3J0Rm9udCA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJkZWZhdWx0X2V4cG9ydF9mb250Iik7CisKKwkJCQkJY2ZnLmNyeXB0Q2xhc3NOYW1lID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXIoImNyeXB0X0NsYXNzTmFtZSIpOworCisJCQkJCWNmZy5mZm1wZWdQYXRoID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXIoImZmbXBlZ19wYXRoIik7CisKKwkJCQkJY2ZnLnNveFBhdGggPSByZXF1ZXN0LmdldFBhcmFtZXRlcigic294X3BhdGgiKTsKKworICAgICAgICAgICAgICAgICAgICAvLyByZWQ1c2lwIGludGVncmF0aW9uIGNvbmZpZworICAgICAgICAgICAgICAgICAgICBjZmcucmVkNVNpcEVuYWJsZSA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJyZWQ1c2lwX2VuYWJsZSIpOworICAgICAgICAgICAgICAgICAgICBjZmcucmVkNVNpcFJvb21QcmVmaXggPSByZXF1ZXN0LmdldFBhcmFtZXRlcigicmVkNXNpcF9yb29tX3ByZWZpeCIpOworICAgICAgICAgICAgICAgICAgICBjZmcucmVkNVNpcEV4dGVuQ29udGV4dCA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJyZWQ1c2lwX2V4dGVuX2NvbnRleHQiKTsKKworCQkJCQlTdHJpbmcgdGltZVpvbmUgPSByZXF1ZXN0LmdldFBhcmFtZXRlcigidGltZVpvbmUiKTsKKwkJCQkJY2ZnLmljYWxfdGltZVpvbmUgPSB0aW1lWm9uZTsKKwkJCQkJCisJCQkJCWNmZy5qb2RQYXRoID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXIoImpvZF9wYXRoIik7CisKKwkJCQkJbG9nLmRlYnVnKCJzdGVwIDArIHN0YXJ0IGluaXQgd2l0aCB2YWx1ZXMuICIgKyB1c2VybmFtZQorCQkJCQkJCSsgIiAqKioqKiAiICsgdXNlcmVtYWlsICsgIiAiICsgb3JnbmFtZSArICIgIgorCQkJCQkJCSsgY2ZnKTsKKworCQkJCQljZmcudXJsRmVlZCA9IGdldFNlcnZsZXRDb250ZXh0KCkuZ2V0SW5pdFBhcmFtZXRlcigKKwkJCQkJCQkidXJsX2ZlZWQiKTsKKwkJCQkJY2ZnLnVybEZlZWQyID0gZ2V0U2VydmxldENvbnRleHQoKS5nZXRJbml0UGFyYW1ldGVyKAorCQkJCQkJCSJ1cmxfZmVlZDIiKTsKKwkJCQkJCisJCQkJCWdldEJlYW4oSW1wb3J0SW5pdHZhbHVlcy5jbGFzcykubG9hZEFsbChjZmcsIHVzZXJuYW1lLAorCQkJCQkJCXVzZXJwYXNzLCB1c2VyZW1haWwsIG9yZ25hbWUsIHRpbWVab25lLCBmYWxzZSk7CisKKwkJCQkJLy8gdXBkYXRlIHRvIG5leHQgc3RlcAorCQkJCQlsb2cuZGVidWcoImFkZCBsZXZlbCB0byBpbnN0YWxsIGZpbGUiKTsKKwkJCQkJSW5zdGFsbGF0aW9uRG9jdW1lbnRIYW5kbGVyLmNyZWF0ZURvY3VtZW50KDEpOworCisJCQkJCS8vIHJldHVybgorCQkJCQkvLyBnZXRWZWxvY2l0eUVuZ2luZSgpLmdldFRlbXBsYXRlKCJpbnN0YWxsX2NvbXBsZXRlXyIrbGFuZysiLnZtIik7CisJCQkJCXJldHVybiBnZXRWZWxvY2l0eVZpZXcoKS5nZXRWZWxvY2l0eUVuZ2luZSgpLmdldFRlbXBsYXRlKAorCQkJCQkJCSJpbnN0YWxsX3N0ZXAyXyIgKyBsYW5nICsgIi52bSIpOworCQkJCX0gZWxzZSB7CisJCQkJCWN0eC5wdXQoImVycm9yIiwKKwkJCQkJCQkiVGhpcyBTdGVwIG9mIHRoZSBpbnN0YWxsYXRpb24gaGFzIGFscmVhZHkgYmVlbiBkb25lLiBjb250aW51ZSB3aXRoIHN0ZXAgMiA8QSBIUkVGPSc/Y29tbWFuZD1zdGVwMic+Y29udGludWUgd2l0aCBzdGVwIDI8L0E+Iik7CisJCQkJCXJldHVybiBnZXRWZWxvY2l0eVZpZXcoKS5nZXRWZWxvY2l0eUVuZ2luZSgpLmdldFRlbXBsYXRlKAorCQkJCQkJCSJpbnN0YWxsX2V4Y2VwdGlvbl8iICsgbGFuZyArICIudm0iKTsKKwkJCQl9CisKKwkJCX0gZWxzZSBpZiAoY29tbWFuZC5lcXVhbHMoInN0ZXAiKSkgeworCisJCQkJaW50IGkgPSBJbnN0YWxsYXRpb25Eb2N1bWVudEhhbmRsZXIuZ2V0Q3VycmVudFN0ZXBOdW1iZXIoKTsKKwkJCQlpZiAoaSA9PSAwKSB7CisKKwkJCQl9CisKKwkJCX0KKwkJfSBjYXRjaCAoU2VydmVyTm90SW5pdGlhbGl6ZWRFeGNlcHRpb24gZXJyKSB7CisJCQlyZXR1cm4gZ2V0Qm9vdGluZygpOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyMikgeworCQkJbG9nLmVycm9yKCJJbnN0YWxsOiAiLCBlcnIyKTsKKwkJfQorCisJCXJldHVybiBudWxsOworCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NlcnZsZXQvb3V0cHV0aGFuZGxlci9MYW5nRXhwb3J0LmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2VydmxldC9vdXRwdXRoYW5kbGVyL0xhbmdFeHBvcnQuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGEwYTZjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NlcnZsZXQvb3V0cHV0aGFuZGxlci9MYW5nRXhwb3J0LmphdmEKQEAgLTAsMCArMSwyMTMgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2VydmxldC5vdXRwdXRoYW5kbGVyOworCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLmlvLk91dHB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworaW1wb3J0IGphdmF4LnNlcnZsZXQuU2VydmxldEV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXF1ZXN0OworaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlc3BvbnNlOworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuRmllbGRMYW5ndWFnZURhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLkZpZWxkTWFuYWdlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLlNlc3Npb25kYXRhRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEudXNlci5Vc2VyTWFuYWdlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5sYW5nLkZpZWxkTGFuZ3VhZ2U7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMubGFuZy5GaWVsZGxhbmd1YWdlc3ZhbHVlczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5zZXJ2bGV0LkJhc2VIdHRwU2VydmxldDsKK2ltcG9ydCBvcmcuZG9tNGouRG9jdW1lbnQ7CitpbXBvcnQgb3JnLmRvbTRqLkRvY3VtZW50SGVscGVyOworaW1wb3J0IG9yZy5kb200ai5FbGVtZW50OworaW1wb3J0IG9yZy5kb200ai5OYW1lc3BhY2U7CitpbXBvcnQgb3JnLmRvbTRqLmlvLk91dHB1dEZvcm1hdDsKK2ltcG9ydCBvcmcuZG9tNGouaW8uWE1MV3JpdGVyOworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKKworLyoqCisgKiAKKyAqIEBhdXRob3Igc2ViYXN0aWFud2FnbmVyCisgKiAKKyAqLworcHVibGljIGNsYXNzIExhbmdFeHBvcnQgZXh0ZW5kcyBCYXNlSHR0cFNlcnZsZXQgeworCQorCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDI0MzI5NDI3OTg1NjE2MDQ2M0w7CisJCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcigKKwkJCUxhbmdFeHBvcnQuY2xhc3MsIE9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKwkKKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBGSUxFX0NPTU1FTlQgPSAiIgorCQkJKyAiXG4iCisJCQkrICIgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmVcbiIKKwkJCSsgIiAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlXG4iCisJCQkrICIgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uXG4iCisJCQkrICIgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGVcbiIKKwkJCSsgIiAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZVxuIgorCQkJKyAiICBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiIKKwkJCSsgIiAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuIgorCQkJKyAiICBcbiIKKwkJCSsgIiAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuIgorCQkJKyAiICAgIAkgIFxuIgorCQkJKyAiICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsXG4iCisJCQkrICIgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuXG4iCisJCQkrICIgIFwiQVMgSVNcIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZXG4iCisJCQkrICIgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZVxuIgorCQkJKyAiICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zXG4iCisJCQkrICIgIHVuZGVyIHRoZSBMaWNlbnNlLlxuIgorCQkJKyAiICBcbiIKKwkJCSsgIlxuIgorCQkJKyAiXG4iCisJCQkrICIjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjI1xuIgorCQkJKyAiVGhpcyBGaWxlIGlzIGF1dG8tZ2VuZXJhdGVkIGJ5IHRoZSBMYW5ndWFnZUVkaXRvciBcbiIKKwkJCSsgInRvIGFkZCBuZXcgTGFuZ3VhZ2VzIG9yIG1vZGlmeS9jdXN0b21pemUgaXQgdXNlIHRoZSBMYW5ndWFnZUVkaXRvciBcbiIKKwkJCSsgInNlZSBodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvTGFuZ3VhZ2VFZGl0b3IuaHRtbCBmb3IgRGV0YWlscyBcbiIKKwkJCSsgIiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIjsKKworCS8qCisJICogKG5vbi1KYXZhZG9jKQorCSAqIAorCSAqIEBzZWUKKwkgKiBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXQjZG9Qb3N0KGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3QKKwkgKiAsIGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlc3BvbnNlKQorCSAqLworCUBPdmVycmlkZQorCXByb3RlY3RlZCB2b2lkIHNlcnZpY2UoSHR0cFNlcnZsZXRSZXF1ZXN0IGh0dHBTZXJ2bGV0UmVxdWVzdCwKKwkJCUh0dHBTZXJ2bGV0UmVzcG9uc2UgaHR0cFNlcnZsZXRSZXNwb25zZSkgdGhyb3dzIFNlcnZsZXRFeGNlcHRpb24sCisJCQlJT0V4Y2VwdGlvbiB7CisKKwkJdHJ5IHsKKworCQkJaWYgKGdldEJlYW4oVXNlck1hbmFnZXIuY2xhc3MpID09IG51bGwKKwkJCQkJfHwgZ2V0QmVhbihGaWVsZExhbmd1YWdlRGFvLmNsYXNzKSA9PSBudWxsCisJCQkJCXx8IGdldEJlYW4oRmllbGRNYW5hZ2VyLmNsYXNzKSA9PSBudWxsCisJCQkJCXx8IGdldEJlYW4oU2Vzc2lvbmRhdGFEYW8uY2xhc3MpID09IG51bGwpIHsKKwkJCQlyZXR1cm47CisJCQl9CisKKwkJCVN0cmluZyBzaWQgPSBodHRwU2VydmxldFJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJzaWQiKTsKKwkJCWlmIChzaWQgPT0gbnVsbCkgeworCQkJCXNpZCA9ICJkZWZhdWx0IjsKKwkJCX0KKwkJCWxvZy5kZWJ1Zygic2lkOiAiICsgc2lkKTsKKworCQkJU3RyaW5nIGxhbmd1YWdlID0gaHR0cFNlcnZsZXRSZXF1ZXN0LmdldFBhcmFtZXRlcigibGFuZ3VhZ2UiKTsKKwkJCWlmIChsYW5ndWFnZSA9PSBudWxsKSB7CisJCQkJbGFuZ3VhZ2UgPSAiMCI7CisJCQl9CisJCQlMb25nIGxhbmd1YWdlX2lkID0gTG9uZy52YWx1ZU9mKGxhbmd1YWdlKS5sb25nVmFsdWUoKTsKKwkJCWxvZy5kZWJ1ZygibGFuZ3VhZ2VfaWQ6ICIgKyBsYW5ndWFnZV9pZCk7CisKKwkJCUxvbmcgdXNlcnNfaWQgPSBnZXRCZWFuKFNlc3Npb25kYXRhRGFvLmNsYXNzKS5jaGVja1Nlc3Npb24oc2lkKTsKKwkJCUxvbmcgdXNlcl9sZXZlbCA9IGdldEJlYW4oVXNlck1hbmFnZXIuY2xhc3MpLmdldFVzZXJMZXZlbEJ5SUQodXNlcnNfaWQpOworCisJCQlsb2cuZGVidWcoInVzZXJzX2lkOiAiICsgdXNlcnNfaWQpOworCQkJbG9nLmRlYnVnKCJ1c2VyX2xldmVsOiAiICsgdXNlcl9sZXZlbCk7CisKKwkJCWlmICh1c2VyX2xldmVsICE9IG51bGwgJiYgdXNlcl9sZXZlbCA+IDApIHsKKwkJCQlGaWVsZExhbmd1YWdlIGZsID0gZ2V0QmVhbihGaWVsZExhbmd1YWdlRGFvLmNsYXNzKQorCQkJCQkJLmdldEZpZWxkTGFuZ3VhZ2VCeUlkKGxhbmd1YWdlX2lkKTsKKworCQkJCUxpc3Q8RmllbGRsYW5ndWFnZXN2YWx1ZXM+IGZsdkxpc3QgPSBnZXRCZWFuKEZpZWxkTWFuYWdlci5jbGFzcykuZ2V0TWl4ZWRGaWVsZFZhbHVlc0xpc3QobGFuZ3VhZ2VfaWQpOworCisJCQkJaWYgKGZsICE9IG51bGwgJiYgZmx2TGlzdCAhPSBudWxsKSB7CisJCQkJCURvY3VtZW50IGRvYyA9IGNyZWF0ZURvY3VtZW50KGZsdkxpc3QsIGdldEJlYW4oRmllbGRNYW5hZ2VyLmNsYXNzKS5nZXRVbnRyYW5zbGF0ZWRGaWVsZFZhbHVlc0xpc3QobGFuZ3VhZ2VfaWQpKTsKKworCQkJCQlTdHJpbmcgcmVxdWVzdGVkRmlsZSA9IGZsLmdldE5hbWUoKSArICIueG1sIjsKKworCQkJCQlodHRwU2VydmxldFJlc3BvbnNlLnJlc2V0KCk7CisJCQkJCWh0dHBTZXJ2bGV0UmVzcG9uc2UucmVzZXRCdWZmZXIoKTsKKwkJCQkJT3V0cHV0U3RyZWFtIG91dCA9IGh0dHBTZXJ2bGV0UmVzcG9uc2UuZ2V0T3V0cHV0U3RyZWFtKCk7CisJCQkJCWh0dHBTZXJ2bGV0UmVzcG9uc2UKKwkJCQkJCQkuc2V0Q29udGVudFR5cGUoIkFQUExJQ0FUSU9OL09DVEVULVNUUkVBTSIpOworCQkJCQlodHRwU2VydmxldFJlc3BvbnNlLnNldEhlYWRlcigiQ29udGVudC1EaXNwb3NpdGlvbiIsCisJCQkJCQkJImF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiIiArIHJlcXVlc3RlZEZpbGUgKyAiXCIiKTsKKwkJCQkJLy8gaHR0cFNlcnZsZXRSZXNwb25zZS5zZXRIZWFkZXIoIkNvbnRlbnQtTGVuZ3RoIiwgIiIrCisJCQkJCS8vIHJmLmxlbmd0aCgpKTsKKworCQkJCQlzZXJpYWxpemV0b1hNTChvdXQsICJVVEYtOCIsIGRvYyk7CisKKwkJCQkJb3V0LmZsdXNoKCk7CisJCQkJCW91dC5jbG9zZSgpOworCQkJCX0KKwkJCX0gZWxzZSB7CisJCQkJbG9nLmRlYnVnKCJFUlJPUiBMYW5nRXhwb3J0OiBub3QgYXV0aG9yaXplZCBGaWxlRG93bmxvYWQgIgorCQkJCQkJKyAobmV3IERhdGUoKSkpOworCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcikgeworCQkJbG9nLmVycm9yKCJFUlJPUiAiLCBlcik7CisJCX0KKwl9CisKKwlwdWJsaWMgc3RhdGljIERvY3VtZW50IGNyZWF0ZURvY3VtZW50KCkgeworCQlEb2N1bWVudCBkb2N1bWVudCA9IERvY3VtZW50SGVscGVyLmNyZWF0ZURvY3VtZW50KCk7CisJCWRvY3VtZW50LnNldFhNTEVuY29kaW5nKCJVVEYtOCIpOworCQlkb2N1bWVudC5hZGRDb21tZW50KExhbmdFeHBvcnQuRklMRV9DT01NRU5UKTsKKwkJcmV0dXJuIGRvY3VtZW50OworCX0KKwkKKwlwdWJsaWMgc3RhdGljIEVsZW1lbnQgY3JlYXRlUm9vdChEb2N1bWVudCBkb2N1bWVudCkgeworCQlFbGVtZW50IHJvb3QgPSBkb2N1bWVudC5hZGRFbGVtZW50KCJsYW5ndWFnZSIpOworCQlyb290LmFkZChuZXcgTmFtZXNwYWNlKCJ4c2kiLAorCQkJCSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIpKTsKKwkJcm9vdC5hZGQobmV3IE5hbWVzcGFjZSgibm9OYW1lc3BhY2VTY2hlbWFMb2NhdGlvbiIsICJsYW5ndWFnZS54c2QiKSk7CisJCXJldHVybiByb290OworCX0KKwkKKwlwdWJsaWMgRG9jdW1lbnQgY3JlYXRlRG9jdW1lbnQoTGlzdDxGaWVsZGxhbmd1YWdlc3ZhbHVlcz4gZmx2TGlzdCwgTGlzdDxGaWVsZGxhbmd1YWdlc3ZhbHVlcz4gdW50cmFuc2xhdGVkTGlzdCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCURvY3VtZW50IGRvY3VtZW50ID0gY3JlYXRlRG9jdW1lbnQoKTsKKwkJRWxlbWVudCByb290ID0gY3JlYXRlUm9vdChkb2N1bWVudCk7CisKKwkJZm9yIChGaWVsZGxhbmd1YWdlc3ZhbHVlcyBmbHYgOiBmbHZMaXN0KSB7CisJCQlFbGVtZW50IGVUZW1wID0gcm9vdC5hZGRFbGVtZW50KCJzdHJpbmciKQorCQkJCQkuYWRkQXR0cmlidXRlKCJpZCIsIGZsdi5nZXRGaWVsZHZhbHVlcygpLmdldEZpZWxkdmFsdWVzX2lkKCkudG9TdHJpbmcoKSkKKwkJCQkJLmFkZEF0dHJpYnV0ZSgibmFtZSIsIGZsdi5nZXRGaWVsZHZhbHVlcygpLmdldE5hbWUoKSk7CisJCQlFbGVtZW50IHZhbHVlID0gZVRlbXAuYWRkRWxlbWVudCgidmFsdWUiKTsKKwkJCXZhbHVlLmFkZFRleHQoZmx2LmdldFZhbHVlKCkpOworCQl9CisKKwkJLy91bnRyYW5zbGF0ZWQKKwkJaWYgKHVudHJhbnNsYXRlZExpc3Quc2l6ZSgpID4gMCkgeworCQkJcm9vdC5hZGRDb21tZW50KCJVbnRyYW5zbGF0ZWQgc3RyaW5ncyIpOworCQkJZm9yIChGaWVsZGxhbmd1YWdlc3ZhbHVlcyBmbHYgOiB1bnRyYW5zbGF0ZWRMaXN0KSB7CisJCQkJRWxlbWVudCBlVGVtcCA9IHJvb3QuYWRkRWxlbWVudCgic3RyaW5nIikKKwkJCQkJCS5hZGRBdHRyaWJ1dGUoImlkIiwgZmx2LmdldEZpZWxkdmFsdWVzKCkuZ2V0RmllbGR2YWx1ZXNfaWQoKS50b1N0cmluZygpKQorCQkJCQkJLmFkZEF0dHJpYnV0ZSgibmFtZSIsIGZsdi5nZXRGaWVsZHZhbHVlcygpLmdldE5hbWUoKSk7CisJCQkJRWxlbWVudCB2YWx1ZSA9IGVUZW1wLmFkZEVsZW1lbnQoInZhbHVlIik7CisJCQkJdmFsdWUuYWRkVGV4dChmbHYuZ2V0VmFsdWUoKSk7CisJCQl9CisJCX0KKworCQlyZXR1cm4gZG9jdW1lbnQ7CisJfQorCisJcHVibGljIHN0YXRpYyB2b2lkIHNlcmlhbGl6ZXRvWE1MKE91dHB1dFN0cmVhbSBvdXQsIFN0cmluZyBhRW5jb2RpbmdTY2hlbWUsCisJCQlEb2N1bWVudCBkb2MpIHRocm93cyBFeGNlcHRpb24geworCQlPdXRwdXRGb3JtYXQgb3V0Zm9ybWF0ID0gT3V0cHV0Rm9ybWF0LmNyZWF0ZVByZXR0eVByaW50KCk7CisJCW91dGZvcm1hdC5zZXRFbmNvZGluZyhhRW5jb2RpbmdTY2hlbWUpOworCQlYTUxXcml0ZXIgd3JpdGVyID0gbmV3IFhNTFdyaXRlcihvdXQsIG91dGZvcm1hdCk7CisJCXdyaXRlci53cml0ZShkb2MpOworCQl3cml0ZXIuZmx1c2goKTsKKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zZXJ2bGV0L291dHB1dGhhbmRsZXIvTmV0d29ya1Rlc3RpbmdDb250cm9sbGVyLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2VydmxldC9vdXRwdXRoYW5kbGVyL05ldHdvcmtUZXN0aW5nQ29udHJvbGxlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxMzFkZjYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2VydmxldC9vdXRwdXRoYW5kbGVyL05ldHdvcmtUZXN0aW5nQ29udHJvbGxlci5qYXZhCkBAIC0wLDAgKzEsMTE5IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnNlcnZsZXQub3V0cHV0aGFuZGxlcjsKKworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS51dGlsLkFycmF5czsKKworaW1wb3J0IGphdmF4LnNlcnZsZXQuU2VydmxldEV4Y2VwdGlvbjsKK2ltcG9ydCBqYXZheC5zZXJ2bGV0LlNlcnZsZXRPdXRwdXRTdHJlYW07CitpbXBvcnQgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVxdWVzdDsKK2ltcG9ydCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlcnZsZXRSZXNwb25zZTsKK2ltcG9ydCBqYXZheC5zZXJ2bGV0Lmh0dHAuSHR0cFNlc3Npb247CisKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLnN0ZXJlb3R5cGUuQ29udHJvbGxlcjsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLndlYi5iaW5kLmFubm90YXRpb24uUmVxdWVzdE1hcHBpbmc7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay53ZWIuYmluZC5hbm5vdGF0aW9uLlJlcXVlc3RNZXRob2Q7CisKK0BDb250cm9sbGVyCitwdWJsaWMgY2xhc3MgTmV0d29ya1Rlc3RpbmdDb250cm9sbGVyIHsKKworICAgIGVudW0gVGVzdFR5cGUgeworICAgICAgICBVTktOT1dOLAorICAgICAgICBQSU5HLAorICAgICAgICBKSVRURVIsCisgICAgICAgIERPV05MT0FEX1NQRUVELAorICAgICAgICBVUExPQURfU1BFRUQKKyAgICB9CisKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgUElOR19QQUNLRVRfU0laRSA9IDY0OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBKSVRURVJfUEFDS0VUX1NJWkUgPSAxMDI0OworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIGludCBET1dOTE9BRF9QQUNLRVRfU0laRSA9IDEwMjQqMTAyNDsKKworICAgIHByaXZhdGUgZmluYWwgYnl0ZVtdIHBpbmdEYXRhOworICAgIHByaXZhdGUgZmluYWwgYnl0ZVtdIGppdHRlckRhdGE7CisgICAgcHJpdmF0ZSBmaW5hbCBieXRlW10gZG93bmxvYWREYXRhOworCisgICAgcHVibGljIE5ldHdvcmtUZXN0aW5nQ29udHJvbGxlcigpIHsKKyAgICAgICAgcGluZ0RhdGEgPSBuZXcgYnl0ZVtQSU5HX1BBQ0tFVF9TSVpFXTsKKyAgICAgICAgaml0dGVyRGF0YSA9IG5ldyBieXRlW0pJVFRFUl9QQUNLRVRfU0laRV07CisgICAgICAgIGRvd25sb2FkRGF0YSA9IG5ldyBieXRlW0RPV05MT0FEX1BBQ0tFVF9TSVpFXTsKKworICAgICAgICBBcnJheXMuZmlsbChwaW5nRGF0YSwgKGJ5dGUpICcwJyk7CisgICAgICAgIEFycmF5cy5maWxsKGppdHRlckRhdGEsIChieXRlKSAnMCcpOworICAgICAgICBBcnJheXMuZmlsbChkb3dubG9hZERhdGEsIChieXRlKSAnMCcpOworICAgIH0KKworICAgIEBSZXF1ZXN0TWFwcGluZyh2YWx1ZSA9ICIvbmV0d29ya3Rlc3QudXBsb2FkIiwgbWV0aG9kID0gUmVxdWVzdE1ldGhvZC5HRVQpCisJcHVibGljIHZvaWQgc2VydmljZUdldChIdHRwU2VydmxldFJlcXVlc3QgcmVxdWVzdCwgSHR0cFNlcnZsZXRSZXNwb25zZSByZXNwb25zZSwgSHR0cFNlc3Npb24gc2Vzc2lvbikKKwkJCXRocm93cyBTZXJ2bGV0RXhjZXB0aW9uLCBJT0V4Y2VwdGlvbiB7CisgICAgICAgIFN0cmluZyB0eXBlU3RyID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXIoInRlc3RUeXBlIik7CisgICAgICAgIFRlc3RUeXBlIHRlc3RUeXBlID0gdGhpcy5nZXRUeXBlQnlTdHJpbmcodHlwZVN0cik7CisKKyAgICAgICAgLy8gY2hvb3NlIGRhdGEgdG8gc2VuZAorICAgICAgICBieXRlW10gZGF0YSA9IG51bGw7CisgICAgICAgIHN3aXRjaCAodGVzdFR5cGUpIHsKKyAgICAgICAgICAgIGNhc2UgVU5LTk9XTjoKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBjYXNlIFBJTkc6CisgICAgICAgICAgICAgICAgZGF0YSA9IHBpbmdEYXRhOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBKSVRURVI6CisgICAgICAgICAgICAgICAgZGF0YSA9IGppdHRlckRhdGE7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIERPV05MT0FEX1NQRUVEOgorICAgICAgICAgICAgICAgIGRhdGEgPSBkb3dubG9hZERhdGE7CisgICAgICAgICAgICAgICAgYnJlYWs7CisJCQljYXNlIFVQTE9BRF9TUEVFRDoKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICAvLyBzZXQgbmVlZGVkIGhlYWRlcnMKKyAgICAgICAgcmVzcG9uc2Uuc2V0SGVhZGVyKCJDYWNoZS1Db250cm9sIiwgIm5vLWNhY2hlIik7CisgICAgICAgIHJlc3BvbnNlLnNldEhlYWRlcigiQ29udGVudC1MZW5ndGgiLCBTdHJpbmcudmFsdWVPZihkYXRhLmxlbmd0aCkpOworCisgICAgICAgIC8vIHNlbmQgZGF0YQorICAgICAgICBTZXJ2bGV0T3V0cHV0U3RyZWFtIG91dFN0cmVhbSA9IHJlc3BvbnNlLmdldE91dHB1dFN0cmVhbSgpOworICAgICAgICBvdXRTdHJlYW0ud3JpdGUoZGF0YSk7CisgICAgICAgIG91dFN0cmVhbS5mbHVzaCgpOworICAgIH0KKworICAgIEBSZXF1ZXN0TWFwcGluZyh2YWx1ZSA9ICIvbmV0d29ya3Rlc3QudXBsb2FkIiwgbWV0aG9kID0gUmVxdWVzdE1ldGhvZC5QT1NUKQorCXB1YmxpYyB2b2lkIHNlcnZpY2VQb3N0KEh0dHBTZXJ2bGV0UmVxdWVzdCByZXF1ZXN0LCBIdHRwU2VydmxldFJlc3BvbnNlIHJlc3BvbnNlLCBIdHRwU2Vzc2lvbiBzZXNzaW9uKQorCQkJdGhyb3dzIFNlcnZsZXRFeGNlcHRpb24sIElPRXhjZXB0aW9uIHsKKyAgICB9CisKKworICAgIHByaXZhdGUgVGVzdFR5cGUgZ2V0VHlwZUJ5U3RyaW5nKFN0cmluZyB0eXBlU3RyaW5nKSB7CisgICAgICAgIGlmICgicGluZyIuZXF1YWxzKHR5cGVTdHJpbmcpKSB7CisgICAgICAgICAgICByZXR1cm4gVGVzdFR5cGUuUElORzsKKyAgICAgICAgfSBlbHNlIGlmICgiaml0dGVyIi5lcXVhbHModHlwZVN0cmluZykpIHsKKyAgICAgICAgICAgIHJldHVybiBUZXN0VHlwZS5KSVRURVI7CisgICAgICAgIH0gZWxzZSBpZiAoImRvd25sb2FkIi5lcXVhbHModHlwZVN0cmluZykpIHsKKyAgICAgICAgICAgIHJldHVybiBUZXN0VHlwZS5ET1dOTE9BRF9TUEVFRDsKKyAgICAgICAgfSBlbHNlIGlmICgidXBsb2FkIi5lcXVhbHModHlwZVN0cmluZykpIHsKKyAgICAgICAgICAgIHJldHVybiBUZXN0VHlwZS5VUExPQURfU1BFRUQ7CisgICAgICAgIH0KKworICAgICAgICByZXR1cm4gVGVzdFR5cGUuVU5LTk9XTjsKKyAgICB9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zZXJ2bGV0L291dHB1dGhhbmRsZXIvU2NyZWVuQ29udHJvbGxlci5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NlcnZsZXQvb3V0cHV0aGFuZGxlci9TY3JlZW5Db250cm9sbGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDg5YTI1MgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zZXJ2bGV0L291dHB1dGhhbmRsZXIvU2NyZWVuQ29udHJvbGxlci5qYXZhCkBAIC0wLDAgKzEsMjc3IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnNlcnZsZXQub3V0cHV0aGFuZGxlcjsKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLmlvLkZpbGVGaWx0ZXI7CitpbXBvcnQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuUHJvcGVydGllczsKKworaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3Q7CitpbXBvcnQgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVzcG9uc2U7CisKK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMuY29kZWMuYmluYXJ5LkhleDsKK2ltcG9ydCBvcmcuYXBhY2hlLmNvbW1vbnMubGFuZy5TdHJpbmdVdGlsczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5GaWVsZE1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5TZXNzaW9uZGF0YURhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLmRhby5Db25maWd1cmF0aW9uRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnJvb20uQ2xpZW50OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnNlc3Npb24uSVNlc3Npb25NYW5hZ2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLk9tRmlsZUhlbHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLnZlbG9jaXR5LlZlbG9jaXR5Q29udGV4dDsKK2ltcG9ydCBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC5WZWxvY2l0eUVuZ2luZTsKK2ltcG9ydCBvcmcuYXBhY2hlLnZlbG9jaXR5LmNvbnRleHQuQ29udGV4dDsKK2ltcG9ydCBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUuUnVudGltZUNvbnN0YW50czsKK2ltcG9ydCBvcmcuYXBhY2hlLnZlbG9jaXR5LnJ1bnRpbWUucmVzb3VyY2UubG9hZGVyLkNsYXNzcGF0aFJlc291cmNlTG9hZGVyOworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5BdXRvd2lyZWQ7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5zdGVyZW90eXBlLkNvbnRyb2xsZXI7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay53ZWIuYmluZC5hbm5vdGF0aW9uLlJlcXVlc3RNYXBwaW5nOworCitAQ29udHJvbGxlcgorcHVibGljIGNsYXNzIFNjcmVlbkNvbnRyb2xsZXIgeworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoCisJCQlTY3JlZW5Db250cm9sbGVyLmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBJU2Vzc2lvbk1hbmFnZXIgc2Vzc2lvbk1hbmFnZXI7CisJQEF1dG93aXJlZAorCXB1YmxpYyBTZXNzaW9uZGF0YURhbyBzZXNzaW9uZGF0YURhbzsKKwlAQXV0b3dpcmVkCisJcHVibGljIENvbmZpZ3VyYXRpb25EYW8gY29uZmlndXJhdGlvbkRhbzsKKwlAQXV0b3dpcmVkCisJcHVibGljIEZpZWxkTWFuYWdlciBmaWVsZE1hbmFnZXI7CisKKwlwcml2YXRlIGVudW0gQ29ubmVjdGlvblR5cGUgeworCQlydG1wCisJCSwgcnRtcHMKKwkJLCBydG1wdAorCX0KKwkKKwlwcml2YXRlIFN0cmluZyBnZXRMYWJlbHMoTG9uZyBsYW5ndWFnZV9pZCwgaW50IC4uLiBpZHMpIHsKKwkJU3RyaW5nQnVpbGRlciByZXN1bHQgPSBuZXcgU3RyaW5nQnVpbGRlcigpOworCQlib29sZWFuIGRlbGltID0gZmFsc2U7CisJCWZvciAoaW50IGlkIDogaWRzKSB7CisJCQlpZiAoZGVsaW0pIHsKKwkJCQlyZXN1bHQuYXBwZW5kKCc7Jyk7CisJCQl9CisJCQlyZXN1bHQuYXBwZW5kKGZpZWxkTWFuYWdlci5nZXRGaWVsZEJ5SWRBbmRMYW5ndWFnZSgobG9uZylpZCwgbGFuZ3VhZ2VfaWQpLmdldFZhbHVlKCkpOworCQkJZGVsaW0gPSB0cnVlOworCQl9CisJCXJldHVybiByZXN1bHQudG9TdHJpbmcoKTsKKwl9CisJCisgICAgQFJlcXVlc3RNYXBwaW5nKHZhbHVlID0gIi9zY3JlZW4udXBsb2FkIikKKwlwdWJsaWMgdm9pZCBoYW5kbGVSZXF1ZXN0KEh0dHBTZXJ2bGV0UmVxdWVzdCByZXF1ZXN0LAorCQkJSHR0cFNlcnZsZXRSZXNwb25zZSByZXNwb25zZSkgeworCQl0cnkgeworCQkJU3RyaW5nIHNpZCA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJzaWQiKTsKKwkJCUxvbmcgdXNlcnNfaWQgPSBzZXNzaW9uZGF0YURhby5jaGVja1Nlc3Npb24oc2lkKTsKKwkJCVN0cmluZyBwdWJsaWNTSUQgPSByZXF1ZXN0LmdldFBhcmFtZXRlcigicHVibGljU0lEIik7CisJCQlpZiAocHVibGljU0lEID09IG51bGwpIHsKKwkJCQl0aHJvdyBuZXcgRXhjZXB0aW9uKCJwdWJsaWNTSUQgaXMgZW1wdHk6ICIgKyBwdWJsaWNTSUQpOworCQkJfQorCQkJaWYgKHVzZXJzX2lkID09IDApIHsKKwkJCQkvL2NoZWNrU2Vzc2lvbiB3aWxsIHJldHVybiAwIGluIGNhc2Ugb2YgaW52YWxpZCBzZXNzaW9uCisJCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbigiUmVxdWVzdCBmcm9tIGludmFsaWQgdXNlciAiICsgdXNlcnNfaWQpOworCQkJfQorCisJCQlTdHJpbmcgZG9tYWluID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXIoImRvbWFpbiIpOworCQkJaWYgKGRvbWFpbiA9PSBudWxsKSB7CisJCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbigiZG9tYWluIGlzIGVtcHR5OiAiICsgZG9tYWluKTsKKwkJCX0KKworCQkJU3RyaW5nIGxhbmd1YWdlQXNTdHJpbmcgPSByZXF1ZXN0LmdldFBhcmFtZXRlcigibGFuZ3VhZ2VBc1N0cmluZyIpOworCQkJaWYgKGxhbmd1YWdlQXNTdHJpbmcgPT0gbnVsbCkgeworCQkJCXRocm93IG5ldyBFeGNlcHRpb24oImxhbmd1YWdlQXNTdHJpbmcgaXMgZW1wdHk6ICIgKyBsYW5ndWFnZUFzU3RyaW5nKTsKKwkJCX0KKwkJCUxvbmcgbGFuZ3VhZ2VfaWQgPSBMb25nLnBhcnNlTG9uZyhsYW5ndWFnZUFzU3RyaW5nKTsKKworCQkJU3RyaW5nIHJ0bXBob3N0bG9jYWwgPSByZXF1ZXN0LmdldFBhcmFtZXRlcigicnRtcGhvc3Rsb2NhbCIpOworCQkJaWYgKHJ0bXBob3N0bG9jYWwgPT0gbnVsbCkgeworCQkJCXRocm93IG5ldyBFeGNlcHRpb24oInJ0bXBob3N0bG9jYWwgaXMgZW1wdHk6ICIgKyBydG1waG9zdGxvY2FsKTsKKwkJCX0KKwkJCQorCQkJU3RyaW5nIGJhc2VVUkwgPSByZXF1ZXN0LmdldFBhcmFtZXRlcigiYmFzZXVybCIpOworCQkJaWYgKGJhc2VVUkwgPT0gbnVsbCkgeworCQkJCXRocm93IG5ldyBFeGNlcHRpb24oImJhc2V1cmwgaXMgZW1wdHk6ICIgKyBiYXNlVVJMKTsKKwkJCX0KKwkJCWxvZy5kZWJ1ZygibGFuZ3VhZ2VfaWQgOjogIiArIGxhbmd1YWdlX2lkKTsKKwkJCVN0cmluZyBsYWJlbF9zaGFyZXIgPSAiU2hhcmVyIjsKKworCQkJdHJ5IHsKKwkJCQlsYWJlbF9zaGFyZXIgPSBnZXRMYWJlbHMobGFuZ3VhZ2VfaWQKKwkJCQkJLCAgNzMwLCAgNzMxLCAgNzMyLCAgNzMzLCAgNzM0CisJCQkJCSwgIDczNSwgIDczNywgIDczOCwgIDczOSwgIDc0MAorCQkJCQksICA3NDEsICA3NDIsICA4NDQsICA4NjksICA4NzAKKwkJCQkJLCAgODcxLCAgODcyLCAgODc4LCAxMDg5LCAxMDkwCisJCQkJCSwgMTA5MSwgMTA5MiwgMTA5MywgMTQ2NSwgMTQ2NgorCQkJCQksIDE0NjcsIDE0NjgsIDE0NjksIDE0NzAsIDE0NzEKKwkJCQkJLCAxNDcyLCAxNDczLCAxNDc0LCAxNDc1LCAxNDc2CisJCQkJCSwgMTQ3Nyk7CisJCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJCWxvZy5lcnJvcigiRXJyb3IgcmVzb2x2aW5nIExhbmd1YWdlIGxhYmVscyA6ICIsIGUpOworCQkJfQorCQkJbG9nLmRlYnVnKCJDcmVhdGluZyBKTkxQIFRlbXBsYXRlIGZvciBUQ1Agc29sdXRpb24iKTsKKworCQkJLy9saWJzCisJCQlTdHJpbmdCdWlsZGVyIGxpYnMgPSBuZXcgU3RyaW5nQnVpbGRlcigpOworCQkJRmlsZSBzY3JlZW5TaGFyZURpciA9IE9tRmlsZUhlbHBlci5nZXRTY3JlZW5TaGFyaW5nRGlyKCk7CisJCQlmb3IgKEZpbGUgamFyIDogc2NyZWVuU2hhcmVEaXIubGlzdEZpbGVzKG5ldyBGaWxlRmlsdGVyKCkgeworCQkJCXB1YmxpYyBib29sZWFuIGFjY2VwdChGaWxlIHBhdGhuYW1lKSB7CisJCQkJCXJldHVybiBwYXRobmFtZS5nZXROYW1lKCkuZW5kc1dpdGgoIi5qYXIiKTsKKwkJCQl9CisJCQl9KSkgeworCQkJCWxpYnMuYXBwZW5kKCJcdFx0PGphciBocmVmPVwiIikuYXBwZW5kKGphci5nZXROYW1lKCkpLmFwcGVuZCgiXCIvPlxuIik7CisJCQl9CisJCQlsb2cuZGVidWcoIlJUTVAgU2hhcmVyIGxhYmVscyA6OiAiICsgbGFiZWxfc2hhcmVyKTsKKworCQkJQ29ubmVjdGlvblR5cGUgY29uVHlwZQorCQkJCT0gQ29ubmVjdGlvblR5cGUudmFsdWVPZihyZXF1ZXN0LmdldFBhcmFtZXRlcigiY29ubmVjdGlvblR5cGUiKSk7CisKKwkJCVN0cmluZyBzdGFydFVwQ2xhc3M7CisJCQlzd2l0Y2ggKGNvblR5cGUpIHsKKwkJCWNhc2UgcnRtcDoKKwkJCQlzdGFydFVwQ2xhc3MgPSAib3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2NyZWVuLndlYnN0YXJ0LlJUTVBTY3JlZW5TaGFyZSI7CisJCQkJYnJlYWs7CisJCQljYXNlIHJ0bXBzOgorCQkJCXN0YXJ0VXBDbGFzcyA9ICJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5zY3JlZW4ud2Vic3RhcnQuUlRNUFNTY3JlZW5TaGFyZSI7CisJCQkJYnJlYWs7CisJCQljYXNlIHJ0bXB0OgorCQkJCXN0YXJ0VXBDbGFzcyA9ICJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5zY3JlZW4ud2Vic3RhcnQuUlRNUFRTY3JlZW5TaGFyZSI7CisJCQkJYnJlYWs7CisJCQlkZWZhdWx0OgorCQkJCXRocm93IG5ldyBFeGNlcHRpb24oIlVua25vd24gY29ubmVjdGlvbiB0eXBlIik7CisJCQl9CisKKwkJCVN0cmluZyBvcmdJZEFzU3RyaW5nID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXIoIm9yZ2FuaXphdGlvbl9pZCIpOworCQkJaWYgKG9yZ0lkQXNTdHJpbmcgPT0gbnVsbCkgeworCQkJCXRocm93IG5ldyBFeGNlcHRpb24oIm9yZ0lkQXNTdHJpbmcgaXMgZW1wdHkgY291bGQgbm90IHN0YXJ0IHNoYXJlciIpOworCQkJfQorCisJCQlTdHJpbmcgcG9ydCA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJwb3J0Iik7CisJCQlpZiAocG9ydCA9PSBudWxsKSB7CisJCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbigicG9ydCBpcyBlbXB0eTogIik7CisJCQl9CisJCQlDbGllbnQgcmMgPSBzZXNzaW9uTWFuYWdlci5nZXRDbGllbnRCeVB1YmxpY1NJRChwdWJsaWNTSUQsIGZhbHNlLCBudWxsKTsKKwkJCWlmIChyYyA9PSBudWxsKSB7CisJCQkJdGhyb3cgbmV3IEV4Y2VwdGlvbigicG9ydCBpcyBlbXB0eTogIik7CisJCQl9CisJCQlMb25nIHJvb21JZCA9IHJjLmdldFJvb21faWQoKTsKKwkJCWJvb2xlYW4gYWxsb3dSZWNvcmRpbmcgPSByYy5nZXRBbGxvd1JlY29yZGluZygpCisJCQkJJiYgKDAgPT0gc2Vzc2lvbk1hbmFnZXIuZ2V0UmVjb3JkaW5nQ291bnQocm9vbUlkKSk7CisJCQlib29sZWFuIGFsbG93UHVibGlzaGluZyA9ICgwID09IHNlc3Npb25NYW5hZ2VyCisJCQkJCS5nZXRQdWJsaXNoaW5nQ291bnQocm9vbUlkKSk7CisJCQkKKwkJCUNvbnRleHQgY3R4ID0gbmV3IFZlbG9jaXR5Q29udGV4dCgpOworCQkJY3R4LnB1dCgiQVBQX05BTUUiLCBjb25maWd1cmF0aW9uRGFvLmdldEFwcE5hbWUoKSk7CisJCQljdHgucHV0KCJQVUJMSUNfU0lEIiwgcHVibGljU0lEKTsKKwkJCWN0eC5wdXQoIkxBQkVMU0hBUkVSIiwgbGFiZWxfc2hhcmVyKTsKKwkJCWFkZEtleXN0b3JlKGN0eCk7CisJCQljdHgucHV0KCJMSUJSQVJJRVMiLCBsaWJzKTsKKwkJCWN0eC5wdXQoIm9yZ2FuaXphdGlvbl9pZCIsIG9yZ0lkQXNTdHJpbmcpOworCQkJY3R4LnB1dCgic3RhcnRVcENsYXNzIiwgc3RhcnRVcENsYXNzKTsKKwkJCWN0eC5wdXQoImNvZGViYXNlIiwgYmFzZVVSTCArIE9tRmlsZUhlbHBlci5TQ1JFRU5TSEFSSU5HX0RJUik7CisJCQljdHgucHV0KCJyZWQ1LWhvc3QiLCBydG1waG9zdGxvY2FsKTsKKwkJCWN0eC5wdXQoInJlZDUtYXBwIiwgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkgKyAiLyIgKyByb29tSWQpOworCQkJY3R4LnB1dCgiZGVmYXVsdF9xdWFsaXR5X3NjcmVlbnNoYXJpbmciLAorCQkJCQljb25maWd1cmF0aW9uRGFvCisJCQkJCQkuZ2V0Q29uZlZhbHVlKCJkZWZhdWx0LnF1YWxpdHkuc2NyZWVuc2hhcmluZyIsIFN0cmluZy5jbGFzcywgIjEiKSk7CisJCQkvL2ludml0ZWQgZ3Vlc3QgZG9lcyBub3QgaGF2ZSB2YWxpZCB1c2VyX2lkIChoYXZlIHVzZXJfaWQgPT0gLTEpCisJCQljdHgucHV0KCJ1c2VyX2lkIiwgdXNlcnNfaWQpOworCQkJY3R4LnB1dCgicG9ydCIsIHBvcnQpOworCQkJY3R4LnB1dCgiYWxsb3dSZWNvcmRpbmciLCBhbGxvd1JlY29yZGluZyk7CisJCQljdHgucHV0KCJhbGxvd1B1Ymxpc2hpbmciLCBhbGxvd1B1Ymxpc2hpbmcpOworCisJCQlTdHJpbmcgcmVxdWVzdGVkRmlsZSA9IFN0cmluZ1V0aWxzLmRlbGV0ZVdoaXRlc3BhY2UoZG9tYWluICsgIl8iICsgcm9vbUlkKSArICIuam5scCI7CisJCQlyZXNwb25zZS5zZXRDb250ZW50VHlwZSgiYXBwbGljYXRpb24veC1qYXZhLWpubHAtZmlsZSIpOworCQkJcmVzcG9uc2Uuc2V0Q2hhcmFjdGVyRW5jb2RpbmcoIlVURi04Iik7CisJCQlyZXNwb25zZS5zZXRIZWFkZXIoIkNvbnRlbnQtRGlzcG9zaXRpb24iLAorCQkJCQkiSW5saW5lOyBmaWxlbmFtZT1cIiIgKyByZXF1ZXN0ZWRGaWxlICsgIlwiIik7CisKKwkJCVZlbG9jaXR5RW5naW5lIHZlID0gbmV3IFZlbG9jaXR5RW5naW5lKCk7CisJCQl2ZS5zZXRQcm9wZXJ0eShSdW50aW1lQ29uc3RhbnRzLlJFU09VUkNFX0xPQURFUiwgImNsYXNzcGF0aCIpOyAKKwkJCXZlLnNldFByb3BlcnR5KCJjbGFzc3BhdGgucmVzb3VyY2UubG9hZGVyLmNsYXNzIiwgQ2xhc3NwYXRoUmVzb3VyY2VMb2FkZXIuY2xhc3MuZ2V0TmFtZSgpKTsKKwkJCQorCQkJdmUubWVyZ2VUZW1wbGF0ZSgKKwkJCQkic2NyZWVuc2hhcmUudm0iCisJCQkJLCAiVVRGLTgiCisJCQkJLCBjdHgKKwkJCQksIHJlc3BvbnNlLmdldFdyaXRlcigpKTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVyKSB7CisJCQlsb2cuZXJyb3IoIltTY3JlZW5Db250cm9sbGVyXSIsIGVyKTsKKwkJfQorCX0KKworCXByaXZhdGUgU3RyaW5nQnVpbGRlciBhZGRBcmd1bWVudChTdHJpbmdCdWlsZGVyIHNiLCBPYmplY3QgYXJnKSB7CisJCXJldHVybiBzYi5hcHBlbmQoIlx0XHQ8YXJndW1lbnQ+IikuYXBwZW5kKGFyZykuYXBwZW5kKCI8L2FyZ3VtZW50PlxuIik7CisJfQorCQorCXByaXZhdGUgdm9pZCBhZGRLZXlzdG9yZShDb250ZXh0IGN0eCkgeworCQlsb2cuZGVidWcoIlJUTVAgU2hhcmVyIEtleXN0b3JlIDo6IHN0YXJ0Iik7CisJCVN0cmluZ0J1aWxkZXIgc2IgPSBuZXcgU3RyaW5nQnVpbGRlcigpOworCQlGaWxlSW5wdXRTdHJlYW0gZmlzID0gbnVsbDsKKwkJdHJ5IHsKKwkJCUZpbGUgY29uZiA9IG5ldyBGaWxlKE9tRmlsZUhlbHBlci5nZXRSb290RGlyKCksICJjb25mIik7CisKKwkJCUZpbGUga2V5U3RvcmUgPSBuZXcgRmlsZShjb25mLCAia2V5c3RvcmUuc2NyZWVuIik7CisJCQlpZiAoa2V5U3RvcmUuZXhpc3RzKCkpIHsKKwkJCQlQcm9wZXJ0aWVzIHJlZDVQcm9wcyA9IG5ldyBQcm9wZXJ0aWVzKCk7CisJCQkJcmVkNVByb3BzLmxvYWQobmV3IEZpbGVJbnB1dFN0cmVhbShuZXcgRmlsZShjb25mLCAicmVkNS5wcm9wZXJ0aWVzIikpKTsKKwkJCQkKKwkJCQlieXRlIGtleUJ5dGVzW10gPSBuZXcgYnl0ZVsoaW50KWtleVN0b3JlLmxlbmd0aCgpXTsKKwkJCQlmaXMgPSBuZXcgRmlsZUlucHV0U3RyZWFtKGtleVN0b3JlKTsKKwkJCQlmaXMucmVhZChrZXlCeXRlcyk7CisJCQkJCisJCQkJc2IgPSBhZGRBcmd1bWVudChhZGRBcmd1bWVudChzYiwgSGV4LmVuY29kZUhleFN0cmluZyhrZXlCeXRlcykpLCByZWQ1UHJvcHMuZ2V0UHJvcGVydHkoInJ0bXBzLmtleXN0b3JlcGFzcyIpKTsKKwkJCQkKKwkJCQkvKgorCQkJCUtleVN0b3JlIGtzSW4gPSBLZXlTdG9yZS5nZXRJbnN0YW5jZShLZXlTdG9yZS5nZXREZWZhdWx0VHlwZSgpKTsKKwkJCQlrc0luLmxvYWQobmV3IEZpbGVJbnB1dFN0cmVhbShrZXlTdG9yZSksIHJlZDVQcm9wcy5nZXRQcm9wZXJ0eSgicnRtcHMua2V5c3RvcmVwYXNzIikudG9DaGFyQXJyYXkoKSk7CisJCQkJQnl0ZUFycmF5SW5wdXRTdHJlYW0gYmluID0gbmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKCkKKwkJCQkKKwkJCQlieXRlIGZpbGVDb250ZW50W10gPSBuZXcgYnl0ZVsoaW50KWZpbGUubGVuZ3RoKCldOworCQkJCXNiID0gYWRkQXJndW1lbnQoc2IsIE9iamVjdCBhcmcpCisJCQkJY3R4LnB1dCgiJEtFWVNUT1JFIiwgdXNlcnNfaWQpOworCQkJCS8qCisJCQkJS2V5U3RvcmUga3NPdXQgPSBLZXlTdG9yZS5nZXRJbnN0YW5jZShLZXlTdG9yZS5nZXREZWZhdWx0VHlwZSgpKTsKKwkJCQlmb3IgKENlcnRpZmljYXRlIGNlcnQgOiBrc0luLmdldENlcnRpZmljYXRlQ2hhaW4oInJlZDUiKSkgeworCQkJCQlQdWJsaWNLZXkgcHViID0gY2VydC5nZXRQdWJsaWNLZXkoKTsKKwkJCQkJVHJ1c3RlZENlcnRpZmljYXRlRW50cnkgdGNlID0gbmV3IFRydXN0ZWRDZXJ0aWZpY2F0ZUVudHJ5KGNlcnQpOworCQkJCQl0Y2UuCisJCQkJfQorCQkJCSovCisJCQl9CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCQkvL25vIG9wCisJCX0gZmluYWxseSB7CisJCQlpZiAoZmlzICE9IG51bGwpIHsKKwkJCQl0cnkgeworCQkJCQlmaXMuY2xvc2UoKTsKKwkJCQl9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7CisJCQkJCS8vIG5vIG9wCisJCQkJfQorCQkJfQorCQl9CisJCWN0eC5wdXQoIktFWVNUT1JFIiwgc2IpOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zZXJ2bGV0L291dHB1dGhhbmRsZXIvVXBsb2FkQ29udHJvbGxlci5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3NlcnZsZXQvb3V0cHV0aGFuZGxlci9VcGxvYWRDb250cm9sbGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTgyZGE4ZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zZXJ2bGV0L291dHB1dGhhbmRsZXIvVXBsb2FkQ29udHJvbGxlci5qYXZhCkBAIC0wLDAgKzEsMzUwIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnNlcnZsZXQub3V0cHV0aGFuZGxlcjsKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOworCitpbXBvcnQgamF2YXguc2VydmxldC5TZXJ2bGV0RXhjZXB0aW9uOworaW1wb3J0IGphdmF4LnNlcnZsZXQuaHR0cC5IdHRwU2VydmxldFJlcXVlc3Q7CitpbXBvcnQgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXJ2bGV0UmVzcG9uc2U7CitpbXBvcnQgamF2YXguc2VydmxldC5odHRwLkh0dHBTZXNzaW9uOworCitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmxhbmcuU3RyaW5nVXRpbHM7CitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLnRyYW5zYWN0aW9uLnV0aWwuRmlsZUhlbHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5maWxlLkZpbGVQcm9jZXNzb3I7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5maWxlLmRhby5GaWxlRXhwbG9yZXJJdGVtRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEudXNlci5kYW8uVXNlcnNEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZG9jdW1lbnRzLkdlbmVyYXRlSW1hZ2U7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZG9jdW1lbnRzLkdlbmVyYXRlUERGOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRvY3VtZW50cy5HZW5lcmF0ZVRodW1iczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kb2N1bWVudHMuYmVhbnMuQ29udmVydGVyUHJvY2Vzc1Jlc3VsdExpc3Q7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZG9jdW1lbnRzLmJlYW5zLlVwbG9hZENvbXBsZXRlTWVzc2FnZTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlVzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucmVtb3RlLnJlZDUuU2NvcGVBcHBsaWNhdGlvbkFkYXB0ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMuT21GaWxlSGVscGVyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLlN0b3JlZEZpbGU7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMuc3RyaW5naGFuZGxlcnMuU3RyaW5nQ29tcGFyZXI7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLnN0ZXJlb3R5cGUuQ29udHJvbGxlcjsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLndlYi5iaW5kLmFubm90YXRpb24uUmVxdWVzdE1hcHBpbmc7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay53ZWIuYmluZC5hbm5vdGF0aW9uLlJlcXVlc3RNZXRob2Q7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay53ZWIubXVsdGlwYXJ0Lk11bHRpcGFydEZpbGU7CisKK0BDb250cm9sbGVyCitwdWJsaWMgY2xhc3MgVXBsb2FkQ29udHJvbGxlciBleHRlbmRzIEFic3RyYWN0VXBsb2FkQ29udHJvbGxlciB7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcigKKwkJCVVwbG9hZENvbnRyb2xsZXIuY2xhc3MsIE9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKwkKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBVc2Vyc0RhbyB1c2Vyc0RhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBTY29wZUFwcGxpY2F0aW9uQWRhcHRlciBzY29wZUFwcGxpY2F0aW9uQWRhcHRlcjsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBHZW5lcmF0ZVBERiBnZW5lcmF0ZVBERjsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBHZW5lcmF0ZVRodW1icyBnZW5lcmF0ZVRodW1iczsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBHZW5lcmF0ZUltYWdlIGdlbmVyYXRlSW1hZ2U7CisJQEF1dG93aXJlZAorCXByaXZhdGUgRmlsZVByb2Nlc3NvciBmaWxlUHJvY2Vzc29yOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEZpbGVFeHBsb3Jlckl0ZW1EYW8gZmlsZUV4cGxvcmVySXRlbURhbzsKKworCXByaXZhdGUgU3RyaW5nIGZpbGVzU3RyaW5nW10gPSBudWxsOworCQorICAgIEBSZXF1ZXN0TWFwcGluZyh2YWx1ZSA9ICIvZmlsZS51cGxvYWQiLCBtZXRob2QgPSBSZXF1ZXN0TWV0aG9kLlBPU1QpCisgICAgcHVibGljIHZvaWQgaGFuZGxlRmlsZVVwbG9hZChIdHRwU2VydmxldFJlcXVlc3QgcmVxdWVzdCwgSHR0cFNlcnZsZXRSZXNwb25zZSByZXNwb25zZSwgSHR0cFNlc3Npb24gc2Vzc2lvbikgdGhyb3dzIFNlcnZsZXRFeGNlcHRpb24geworICAgIAlVcGxvYWRJbmZvIGluZm8gPSB2YWxpZGF0ZShyZXF1ZXN0LCBmYWxzZSk7CisgICAgCXRyeSB7CisJCQlTdHJpbmcgcm9vbV9pZEFzU3RyaW5nID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXIoInJvb21faWQiKTsKKwkJCWlmIChyb29tX2lkQXNTdHJpbmcgPT0gbnVsbCkgeworCQkJCXRocm93IG5ldyBTZXJ2bGV0RXhjZXB0aW9uKCJNaXNzaW5nIFJvb20gSUQiKTsKKwkJCX0KKwkKKwkJCUxvbmcgcm9vbV9pZF90b19TdG9yZSA9IExvbmcucGFyc2VMb25nKHJvb21faWRBc1N0cmluZyk7CisJCisJCQlTdHJpbmcgaXNPd25lckFzU3RyaW5nID0gcmVxdWVzdC5nZXRQYXJhbWV0ZXIoImlzT3duZXIiKTsKKwkJCWlmIChpc093bmVyQXNTdHJpbmcgPT0gbnVsbCkgeworCQkJCXRocm93IG5ldyBTZXJ2bGV0RXhjZXB0aW9uKCJNaXNzaW5nIGlzT3duZXJBc1N0cmluZyIpOworCQkJfQorCQkJYm9vbGVhbiBpc093bmVyID0gZmFsc2U7CisJCQlpZiAoaXNPd25lckFzU3RyaW5nLmVxdWFscygiMSIpKSB7CisJCQkJaXNPd25lciA9IHRydWU7CisJCQl9CisJCisJCQlTdHJpbmcgcGFyZW50Rm9sZGVySWRBc1N0cmluZyA9IHJlcXVlc3QKKwkJCQkJLmdldFBhcmFtZXRlcigicGFyZW50Rm9sZGVySWQiKTsKKwkJCWlmIChwYXJlbnRGb2xkZXJJZEFzU3RyaW5nID09IG51bGwpIHsKKwkJCQl0aHJvdyBuZXcgU2VydmxldEV4Y2VwdGlvbigiTWlzc2luZyBwYXJlbnRGb2xkZXJJZCBJRCIpOworCQkJfQorCQkJTG9uZyBwYXJlbnRGb2xkZXJJZCA9IExvbmcucGFyc2VMb25nKHBhcmVudEZvbGRlcklkQXNTdHJpbmcpOworCQorCQkJTXVsdGlwYXJ0RmlsZSBtdWx0aXBhcnRGaWxlID0gaW5mby5maWxlOworCQkJSW5wdXRTdHJlYW0gaXMgPSBtdWx0aXBhcnRGaWxlLmdldElucHV0U3RyZWFtKCk7CisJCQlsb2cuZGVidWcoImZpbGVTeXN0ZW1OYW1lOiAiICsgaW5mby5maWxlbmFtZSk7CisJCisJCQlDb252ZXJ0ZXJQcm9jZXNzUmVzdWx0TGlzdCByZXR1cm5FcnJvciA9IGZpbGVQcm9jZXNzb3IKKwkJCQkJLnByb2Nlc3NGaWxlKGluZm8udXNlcklkLCByb29tX2lkX3RvX1N0b3JlLCBpc093bmVyLCBpcywKKwkJCQkJCQlwYXJlbnRGb2xkZXJJZCwgaW5mby5maWxlbmFtZSwgMEwsICIiKTsgLy8gZXh0ZXJuYWxGaWxlc0lkLCBleHRlcm5hbFR5cGUKKwkKKwkJCVVwbG9hZENvbXBsZXRlTWVzc2FnZSB1cGxvYWRDb21wbGV0ZU1lc3NhZ2UgPSBuZXcgVXBsb2FkQ29tcGxldGVNZXNzYWdlKCk7CisJICAgIAl1cGxvYWRDb21wbGV0ZU1lc3NhZ2Uuc2V0VXNlcklkKGluZm8udXNlcklkKTsKKwkKKwkJCS8vIEZsYXNoIGNhbm5vdCByZWFkIHRoZSByZXNwb25zZSBvZiBhbiB1cGxvYWQKKwkJCS8vIGh0dHBTZXJ2bGV0UmVzcG9uc2UuZ2V0V3JpdGVyKCkucHJpbnQocmV0dXJuRXJyb3IpOworCSAgICAJdXBsb2FkQ29tcGxldGVNZXNzYWdlLnNldE1lc3NhZ2UoImxpYnJhcnkiKTsKKwkgICAgCXVwbG9hZENvbXBsZXRlTWVzc2FnZS5zZXRBY3Rpb24oIm5ld0ZpbGUiKTsKKwkgICAgCQorCSAgICAJdXBsb2FkQ29tcGxldGVNZXNzYWdlLnNldEZpbGVFeHBsb3Jlckl0ZW0oCisJCQkJCWZpbGVFeHBsb3Jlckl0ZW1EYW8uZ2V0RmlsZUV4cGxvcmVySXRlbXNCeUlkKAorCQkJCQkJCXJldHVybkVycm9yLmdldEZpbGVFeHBsb3Jlckl0ZW1JZCgpKSk7CisJCQkKKwkJCXVwbG9hZENvbXBsZXRlTWVzc2FnZS5zZXRIYXNFcnJvcihyZXR1cm5FcnJvci5oYXNFcnJvcigpKTsKKwkJCS8vd2Ugb25seSBzZW5kIHRoZSBjb21wbGV0ZSBsb2cgdG8gdGhlIGNsaWVudCBpZiB0aGVyZSBpcyByZWFsbHkgc29tZXRoaW5nIAorCQkJLy90byBzaG93IGJlY2F1c2Ugb2YgYW4gZXJyb3IKKwkJCWlmIChyZXR1cm5FcnJvci5oYXNFcnJvcigpKSB7CisJCQkJdXBsb2FkQ29tcGxldGVNZXNzYWdlLnNldEVycm9yKHJldHVybkVycm9yLmdldExvZ01lc3NhZ2UoKSk7CisJCQl9CisJCQl1cGxvYWRDb21wbGV0ZU1lc3NhZ2Uuc2V0RmlsZU5hbWUocmV0dXJuRXJyb3IuZ2V0Q29tcGxldGVOYW1lKCkpOworCQkJCisJCQlzZW5kTWVzc2FnZShpbmZvLCB1cGxvYWRDb21wbGV0ZU1lc3NhZ2UpOworCQl9IGNhdGNoIChTZXJ2bGV0RXhjZXB0aW9uIGUpIHsKKwkJCXRocm93IGU7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCQlsb2cuZXJyb3IoIkV4Y2VwdGlvbiBkdXJpbmcgdXBsb2FkOiAiLCBlKTsKKwkJCXRocm93IG5ldyBTZXJ2bGV0RXhjZXB0aW9uKGUpOworICAgIAl9CisgICAgfQorCisgICAgQFJlcXVlc3RNYXBwaW5nKHZhbHVlID0gIi9yZW1vdGVsb2cudXBsb2FkIiwgbWV0aG9kID0gUmVxdWVzdE1ldGhvZC5QT1NUKQorICAgIHB1YmxpYyB2b2lkIGhhbmRsZVJlbW90ZUxvZyhIdHRwU2VydmxldFJlcXVlc3QgcmVxdWVzdCwgSHR0cFNlcnZsZXRSZXNwb25zZSByZXNwb25zZSkgdGhyb3dzIFNlcnZsZXRFeGNlcHRpb24geworICAgIAlTdHJpbmcgbWVzc2FnZSA9IHJlcXVlc3QuZ2V0UGFyYW1ldGVyKCJtZXNzYWdlIik7CisgICAgCWlmIChtZXNzYWdlICE9IG51bGwpIHsKKyAgICAJCWxvZy5kZWJ1ZygiW0NMSUVOVCBNRVNTQUdFXSAiICsgbWVzc2FnZSk7CisgICAgCX0KKyAgICB9CisgICAgCisgICAgQFJlcXVlc3RNYXBwaW5nKHZhbHVlID0gIi91cGxvYWQudXBsb2FkIiwgbWV0aG9kID0gUmVxdWVzdE1ldGhvZC5QT1NUKQorICAgIHB1YmxpYyB2b2lkIGhhbmRsZUZvcm1VcGxvYWQoSHR0cFNlcnZsZXRSZXF1ZXN0IHJlcXVlc3QsIEh0dHBTZXJ2bGV0UmVzcG9uc2UgcmVzcG9uc2UpIHRocm93cyBTZXJ2bGV0RXhjZXB0aW9uIHsKKwkJdHJ5IHsKKwkgICAgCVVwbG9hZEluZm8gaW5mbyA9IHZhbGlkYXRlKHJlcXVlc3QsIGZhbHNlKTsKKwkgICAgCQorCQkJU3RyaW5nIHJvb21faWQgPSByZXF1ZXN0LmdldFBhcmFtZXRlcigicm9vbV9pZCIpOworCQkJaWYgKHJvb21faWQgPT0gbnVsbCkgeworCQkJCXJvb21faWQgPSAiZGVmYXVsdCI7CisJCQl9CisJCQlTdHJpbmcgcm9vbU5hbWUgPSBTdHJpbmdVdGlscy5kZWxldGVXaGl0ZXNwYWNlKHJvb21faWQpOworCQorCQkJU3RyaW5nIG1vZHVsZU5hbWUgPSByZXF1ZXN0LmdldFBhcmFtZXRlcigibW9kdWxlTmFtZSIpOworCQkJaWYgKG1vZHVsZU5hbWUgPT0gbnVsbCkgeworCQkJCW1vZHVsZU5hbWUgPSAibm9tb2R1bGUiOworCQkJfQorCQkJaWYgKG1vZHVsZU5hbWUuZXF1YWxzKCJub21vZHVsZSIpKSB7CisJCQkJbG9nLmRlYnVnKCJtb2R1bGUgbmFtZSBtaXNzZWQiKTsKKwkJCQlyZXR1cm47CisJCQl9CisJCQlib29sZWFuIHVzZXJQcm9maWxlID0gbW9kdWxlTmFtZS5lcXVhbHMoInVzZXJwcm9maWxlIik7CisJCisJCQlNdWx0aXBhcnRGaWxlIG11bHRpcGFydEZpbGUgPSBpbmZvLmZpbGU7CisJCQlJbnB1dFN0cmVhbSBpcyA9IG11bHRpcGFydEZpbGUuZ2V0SW5wdXRTdHJlYW0oKTsKKwkJCVN0cmluZyBmaWxlU3lzdGVtTmFtZSA9IGluZm8uZmlsZW5hbWU7CisJCQlmaWxlU3lzdGVtTmFtZSA9IFN0cmluZ1V0aWxzLmRlbGV0ZVdoaXRlc3BhY2UoZmlsZVN5c3RlbU5hbWUpOworCQorCQkJVXBsb2FkQ29tcGxldGVNZXNzYWdlIHVwbG9hZENvbXBsZXRlTWVzc2FnZSA9IG5ldyBVcGxvYWRDb21wbGV0ZU1lc3NhZ2UoKTsKKwkgICAgCXVwbG9hZENvbXBsZXRlTWVzc2FnZS5zZXRVc2VySWQoaW5mby51c2VySWQpOworCQkJCisJCQkvLyBGbGFzaCBjYW5ub3QgcmVhZCB0aGUgcmVzcG9uc2Ugb2YgYW4gdXBsb2FkCisJCQkvLyBodHRwU2VydmxldFJlc3BvbnNlLmdldFdyaXRlcigpLnByaW50KHJldHVybkVycm9yKTsKKwkJCXVwbG9hZEZpbGUocmVxdWVzdCwgdXNlclByb2ZpbGUsIGluZm8udXNlcklkLCByb29tTmFtZSwgaXMsIGZpbGVTeXN0ZW1OYW1lLCB1cGxvYWRDb21wbGV0ZU1lc3NhZ2UpOworCQkJc2VuZE1lc3NhZ2UoaW5mbywgdXBsb2FkQ29tcGxldGVNZXNzYWdlKTsKKwkJfSBjYXRjaCAoU2VydmxldEV4Y2VwdGlvbiBlKSB7CisJCQl0aHJvdyBlOworCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJbG9nLmVycm9yKCJFeGNlcHRpb24gZHVyaW5nIHVwbG9hZDogIiwgZSk7CisJCQl0aHJvdyBuZXcgU2VydmxldEV4Y2VwdGlvbihlKTsKKwkJfQorICAgIH0KKworICAgIAorICAgIHByaXZhdGUgdm9pZCBzZW5kTWVzc2FnZShVcGxvYWRJbmZvIGluZm8sIFVwbG9hZENvbXBsZXRlTWVzc2FnZSB1cGxvYWRDb21wbGV0ZU1lc3NhZ2UpIHsKKwkJc2NvcGVBcHBsaWNhdGlvbkFkYXB0ZXIuc2VuZFVwbG9hZENvbXBsZXRNZXNzYWdlQnlQdWJsaWNTSUQoCisJCQkJdXBsb2FkQ29tcGxldGVNZXNzYWdlLCBpbmZvLnB1YmxpY1NJRCk7CisgICAgfQorICAgIAorCXByaXZhdGUgdm9pZCB1cGxvYWRGaWxlKEh0dHBTZXJ2bGV0UmVxdWVzdCByZXF1ZXN0LCBib29sZWFuIHVzZXJQcm9maWxlLCBMb25nIHVzZXJJZCwgU3RyaW5nIHJvb21OYW1lLAorCQkJSW5wdXRTdHJlYW0gaXMsIFN0cmluZyBmaWxlU3lzdGVtTmFtZSwgVXBsb2FkQ29tcGxldGVNZXNzYWdlIHVwbG9hZENvbXBsZXRlTWVzc2FnZSkKKwkJCXRocm93cyBFeGNlcHRpb24geworCQlDb252ZXJ0ZXJQcm9jZXNzUmVzdWx0TGlzdCByZXR1cm5FcnJvciA9IG5ldyBDb252ZXJ0ZXJQcm9jZXNzUmVzdWx0TGlzdCgpOworCisJCS8vIENoZWNrIHZhcmlhYmxlIHRvIHNlZSBpZiB0aGlzIGZpbGUgaXMgYSBwcmVzZW50YXRpb24KKwkJaW50IGRvdGlkeCA9IGZpbGVTeXN0ZW1OYW1lLmxhc3RJbmRleE9mKCcuJyk7CisJCVN0cmluZyBuZXdGaWxlTmFtZSA9IFN0cmluZ0NvbXBhcmVyLmdldEluc3RhbmNlKCkuY29tcGFyZUZvclJlYWxQYXRocygKKwkJCQlmaWxlU3lzdGVtTmFtZS5zdWJzdHJpbmcoMCwgZG90aWR4KSk7CisJCVN0cmluZyBuZXdGaWxlRXh0RG90ID0gZmlsZVN5c3RlbU5hbWUuc3Vic3RyaW5nKGRvdGlkeCwKKwkJCQlmaWxlU3lzdGVtTmFtZS5sZW5ndGgoKSkudG9Mb3dlckNhc2UoKTsKKwkJU3RyaW5nIG5ld0ZpbGVFeHQgPSBuZXdGaWxlRXh0RG90LnN1YnN0cmluZygxKTsKKworCQkvLyB0cmltIGxvbmcgbmFtZXMgY2F1c2UgY2Fubm90IG91dHB1dCB0aGF0CisJCWZpbmFsIGludCBNQVhfRklMRV9OQU1FX0xFTkdUSCA9IDMwOworCQlpZiAobmV3RmlsZU5hbWUubGVuZ3RoKCkgPj0gTUFYX0ZJTEVfTkFNRV9MRU5HVEgpIHsKKwkJCW5ld0ZpbGVOYW1lID0gbmV3RmlsZU5hbWUuc3Vic3RyaW5nKDAsIE1BWF9GSUxFX05BTUVfTEVOR1RIKTsKKwkJfQorCQlTdG9yZWRGaWxlIHN0b3JlZEZpbGUgPSBuZXcgU3RvcmVkRmlsZShuZXdGaWxlTmFtZSwgbmV3RmlsZUV4dCk7CisKKwkJLy8gY2hlY2sgaWYgdGhpcyBpcyBhIGEgZmlsZSB0aGF0IGNhbiBiZSBjb252ZXJ0ZWQgYnkKKwkJLy8gb3Blbm9mZmljZS1zZXJ2aWNlCisJCWJvb2xlYW4gY2FuQmVDb252ZXJ0ZWQgPSBzdG9yZWRGaWxlLmlzQ29udmVydGFibGUoKTsKKwkJYm9vbGVhbiBpc1BkZiA9IHN0b3JlZEZpbGUuaXNQZGYoKTsKKwkJYm9vbGVhbiBpc0ltYWdlID0gc3RvcmVkRmlsZS5pc0ltYWdlKCk7CisJCWJvb2xlYW4gaXNBc0lzID0gc3RvcmVkRmlsZS5pc0FzSXMoKTsKKworCQlGaWxlIHdvcmtpbmdEaXIgPSBudWxsOworCQkvLyBhZGQgb3V0cHV0Zm9sZGVycyBmb3IgcHJvZmlsZXMKKwkJaWYgKHVzZXJQcm9maWxlKSB7CisJCQkvLyBVc2VyIFByb2ZpbGUgVXBkYXRlCisJCQl0aGlzLmRlbGV0ZVVzZXJQcm9maWxlRmlsZXNTdG9yZVRlbXAodXNlcklkKTsKKwkJCW5ld0ZpbGVOYW1lID0gInByb2ZpbGUiOyAvL3NldCB1bmlmaWVkIGZpbGUgbmFtZSB0byBhdm9pZCBhbnkgcHJvYmxlbXMgd2l0aCBuYXRpb25hbCBjaGFyYWN0ZXJzCisJCQl3b3JraW5nRGlyID0gT21GaWxlSGVscGVyLmdldFVwbG9hZFByb2ZpbGVzVXNlckRpcih1c2VySWQpOworCQl9CisJCS8vIGlmIGl0IGlzIGEgcHJlc2VuYXRpb24gaXQgd2lsbCBiZSBjb3BpZWQgdG8gYW5vdGhlcgorCQkvLyBwbGFjZQorCQlpZiAoaXNBc0lzKSB7CisJCQkvLyBjaGVjayBpZiB0aGlzIGlzIGEgcm9vbSBmaWxlIG9yIFVzZXJQcm9maWxlCisJCQlpZiAoIXVzZXJQcm9maWxlKSB7CisJCQkJd29ya2luZ0RpciA9IE9tRmlsZUhlbHBlci5nZXRVcGxvYWRSb29tRGlyKHJvb21OYW1lKTsKKwkJCX0KKwkJfSBlbHNlIGlmIChjYW5CZUNvbnZlcnRlZCB8fCBpc1BkZiB8fCBpc0ltYWdlKSB7CisJCQl3b3JraW5nRGlyID0gT21GaWxlSGVscGVyLmdldFVwbG9hZFRlbXBQcm9maWxlc1VzZXJEaXIodXNlcklkKTsKKwkJfSBlbHNlIHsKKwkJCXJldHVybjsKKwkJfQorCisJCUZpbGUgY29tcGxldGVOYW1lID0gT21GaWxlSGVscGVyLmdldE5ld0ZpbGUod29ya2luZ0RpciwgbmV3RmlsZU5hbWUsIG5ld0ZpbGVFeHREb3QpOworCisJCWxvZy5kZWJ1Zygid3JpdGUgZmlsZSB0byA6ICIgKyBjb21wbGV0ZU5hbWUpOworCisJCUZpbGVIZWxwZXIuY29weShpcywgY29tcGxldGVOYW1lKTsKKwkJaXMuY2xvc2UoKTsKKworCQlsb2cuZGVidWcoImNhbkJlQ29udmVydGVkOiAiICsgY2FuQmVDb252ZXJ0ZWQpOworCQlpZiAoY2FuQmVDb252ZXJ0ZWQpIHsKKwkJCS8vIGNvbnZlcnQgdG8gcGRmLCB0aHVtYnMsIHN3ZiBhbmQgeG1sLWRlc2NyaXB0aW9uCisJCQlyZXR1cm5FcnJvciA9IGdlbmVyYXRlUERGLmNvbnZlcnRQREYobmV3RmlsZU5hbWUsIHJvb21OYW1lLCB0cnVlLCBjb21wbGV0ZU5hbWUpOworCQl9IGVsc2UgaWYgKGlzUGRmKSB7CisJCQkKKwkJCWJvb2xlYW4gaXNFbmNyeXB0ZWQgPSB0cnVlOyAKKwkJCQorCQkJbG9nLmRlYnVnKCJpc0VuY3J5cHRlZCA6OiAiICsgaXNFbmNyeXB0ZWQpOworCisJCQlpZiAoaXNFbmNyeXB0ZWQpIHsKKwkJCQkvLyBEbyBjb252ZXJ0IHBkZiB0byBvdGhlciBwZGYgZmlyc3QKKwkJCQlGaWxlIGZfb2xkID0gY29tcGxldGVOYW1lOworCisJCQkJY29tcGxldGVOYW1lID0gT21GaWxlSGVscGVyLmFwcGVuZFN1ZmZpeChjb21wbGV0ZU5hbWUsICJfTl9FIik7CisJCQkJbmV3RmlsZU5hbWUgKz0gIl9OX0UiOworCisJCQkJZ2VuZXJhdGVUaHVtYnMuZGVjb2RlUERGKGZfb2xkLmdldENhbm9uaWNhbFBhdGgoKSwgY29tcGxldGVOYW1lLmdldENhbm9uaWNhbFBhdGgoKSk7CisKKwkJCQlpZiAoZl9vbGQuZXhpc3RzKCkpIHsKKwkJCQkJZl9vbGQuZGVsZXRlKCk7CisJCQkJfQorCisJCQl9CisKKwkJCS8vIGNvbnZlcnQgdG8gdGh1bWJzLCBzd2YgYW5kIHhtbC1kZXNjcmlwdGlvbgorCQkJcmV0dXJuRXJyb3IgPSBnZW5lcmF0ZVBERi5jb252ZXJ0UERGKG5ld0ZpbGVOYW1lLCByb29tTmFtZSwgZmFsc2UsIGNvbXBsZXRlTmFtZSk7CisKKwkJCS8vIHJldHVybkVycm9yLnB1dCgiZGVjb2RlUERGIiwgcmV0dXJuRXJyb3IyKTsKKworCQl9IGVsc2UgaWYgKGlzSW1hZ2UgJiYgIWlzQXNJcykgeworCisJCQlsb2cuZGVidWcoIiMjIyMjIGlzSW1hZ2UhIHVzZXJQcm9maWxlUGljOiAiICsgdXNlclByb2ZpbGUpOworCisJCQlpZiAodXNlclByb2ZpbGUpIHsKKwkJCQkvLyBVc2VyIFByb2ZpbGUgVXBkYXRlCisJCQkJdGhpcy5kZWxldGVVc2VyUHJvZmlsZUZpbGVzKHVzZXJJZCk7CisJCQkJLy8gY29udmVydCBpdCB0byBKUEcKKwkJCQlyZXR1cm5FcnJvciA9IGdlbmVyYXRlSW1hZ2UuY29udmVydEltYWdlVXNlclByb2ZpbGUoCisJCQkJCW5ld0ZpbGVOYW1lLCBuZXdGaWxlRXh0RG90LCB1c2VySWQsIG5ld0ZpbGVOYW1lLCBmYWxzZSk7CisJCQl9IGVsc2UgeworCQkJCS8vIGNvbnZlcnQgaXQgdG8gSlBHCisJCQkJbG9nLmRlYnVnKCIjIyMjIyBjb252ZXJ0IGl0IHRvIEpQRzogIiArIHVzZXJQcm9maWxlKTsKKwkJCQlyZXR1cm5FcnJvciA9IGdlbmVyYXRlSW1hZ2UuY29udmVydEltYWdlKAorCQkJCQluZXdGaWxlTmFtZSwgbmV3RmlsZUV4dERvdCwgcm9vbU5hbWUsIG5ld0ZpbGVOYW1lLCBmYWxzZSk7CisJCQl9CisJCX0gZWxzZSBpZiAoaXNBc0lzKSB7CisJCQlpZiAodXNlclByb2ZpbGUpIHsKKwkJCQkvLyBVc2VyIFByb2ZpbGUgVXBkYXRlCisJCQkJdGhpcy5kZWxldGVVc2VyUHJvZmlsZUZpbGVzKHVzZXJJZCk7CisJCQkJLy8gaXMgVXNlclByb2ZpbGUgUGljdHVyZQorCQkJCXJldHVybkVycm9yLmFkZEl0ZW0oInByb2Nlc3NUaHVtYjEiLCBnZW5lcmF0ZVRodW1icworCQkJCQkJLmdlbmVyYXRlVGh1bWIoIl9jaGF0XyIsIGNvbXBsZXRlTmFtZSwgNDApKTsKKwkJCQlyZXR1cm5FcnJvci5hZGRJdGVtKCJwcm9jZXNzVGh1bWIyIiwgZ2VuZXJhdGVUaHVtYnMKKwkJCQkJCS5nZW5lcmF0ZVRodW1iKCJfcHJvZmlsZV8iLCBjb21wbGV0ZU5hbWUsIDEyNikpOworCQkJCXJldHVybkVycm9yLmFkZEl0ZW0oInByb2Nlc3NUaHVtYjMiLCBnZW5lcmF0ZVRodW1icworCQkJCQkJLmdlbmVyYXRlVGh1bWIoIl9iaWdfIiwgY29tcGxldGVOYW1lLCAyNDApKTsKKworCQkJCVN0cmluZyBwaWN0dXJldXJpID0gY29tcGxldGVOYW1lLmdldE5hbWUoKTsKKwkJCQlVc2VyIHVzID0gdXNlcnNEYW8uZ2V0KHVzZXJJZCk7CisJCQkJdXMuc2V0VXBkYXRldGltZShuZXcgamF2YS51dGlsLkRhdGUoKSk7CisJCQkJdXMuc2V0UGljdHVyZXVyaShwaWN0dXJldXJpKTsKKwkJCQl1c2Vyc0Rhby51cGRhdGUodXMsIHVzZXJJZCk7CisKKwkJCQkvL0ZJWE1FOiBBZnRlciB1cGRhdGluZyB0aGUgcGljdHVyZSB1cmwgYWxsIG90aGVyIHVzZXJzIHNob3VsZCByZWZyZXNoCisJCQl9IGVsc2UgeworCQkJCXJldHVybkVycm9yLmFkZEl0ZW0oInByb2Nlc3NUaHVtYiIsIGdlbmVyYXRlVGh1bWJzCisJCQkJCQkuZ2VuZXJhdGVUaHVtYigiX3RodW1iXyIsIGNvbXBsZXRlTmFtZSwgNTApKTsKKwkJCX0KKwkJfQorCisJCXVwbG9hZENvbXBsZXRlTWVzc2FnZS5zZXRNZXNzYWdlKCJsaWJyYXJ5Iik7CisJCXVwbG9hZENvbXBsZXRlTWVzc2FnZS5zZXRBY3Rpb24oIm5ld0ZpbGUiKTsKKwkJCisJCXVwbG9hZENvbXBsZXRlTWVzc2FnZS5zZXRIYXNFcnJvcihyZXR1cm5FcnJvci5oYXNFcnJvcigpKTsKKwkJCisJCS8vd2Ugb25seSBzZW5kIHRoZSBjb21wbGV0ZSBsb2cgdG8gdGhlIGNsaWVudCBpZiB0aGVyZSBpcyByZWFsbHkgc29tZXRoaW5nIAorCQkvL3RvIHNob3cgYmVjYXVzZSBvZiBhbiBlcnJvcgorCQlpZiAocmV0dXJuRXJyb3IuaGFzRXJyb3IoKSkgeworCQkJdXBsb2FkQ29tcGxldGVNZXNzYWdlLnNldEVycm9yKHJldHVybkVycm9yLmdldExvZ01lc3NhZ2UoKSk7CisJCX0KKwkJdXBsb2FkQ29tcGxldGVNZXNzYWdlLnNldEZpbGVOYW1lKGNvbXBsZXRlTmFtZS5nZXROYW1lKCkpOworCQkKKwl9CisKKwlwcml2YXRlIHZvaWQgZGVsZXRlVXNlclByb2ZpbGVGaWxlc1N0b3JlVGVtcChMb25nIHVzZXJzX2lkKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkJRmlsZSBmID0gT21GaWxlSGVscGVyLmdldFVwbG9hZFByb2ZpbGVzVXNlckRpcih1c2Vyc19pZCk7CisJCWlmIChmLmV4aXN0cygpICYmIGYuaXNEaXJlY3RvcnkoKSkgeworCQkJdGhpcy5maWxlc1N0cmluZyA9IGYubGlzdCgpOworCQl9CisJfQorCisJcHJpdmF0ZSB2b2lkIGRlbGV0ZVVzZXJQcm9maWxlRmlsZXMoTG9uZyB1c2Vyc19pZCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCUZpbGUgd29ya2luZ19pbWdkaXIgPSBPbUZpbGVIZWxwZXIuZ2V0VXBsb2FkUHJvZmlsZXNVc2VyRGlyKHVzZXJzX2lkKTsKKworCQlmb3IgKGludCBpID0gMDsgaSA8IHRoaXMuZmlsZXNTdHJpbmcubGVuZ3RoOyBpKyspIHsKKwkJCVN0cmluZyBmaWxlTmFtZSA9IGZpbGVzU3RyaW5nW2ldOworCQkJRmlsZSBzdWJmID0gbmV3IEZpbGUod29ya2luZ19pbWdkaXIsIGZpbGVOYW1lKTsKKwkJCXN1YmYuZGVsZXRlKCk7CisJCX0KKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2Vzc2lvbi9DbGllbnRTZXNzaW9uSW5mby5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Nlc3Npb24vQ2xpZW50U2Vzc2lvbkluZm8uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZmI2ZTI3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Nlc3Npb24vQ2xpZW50U2Vzc2lvbkluZm8uamF2YQpAQCAtMCwwICsxLDQ4IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnNlc3Npb247CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tLkNsaWVudDsKKworCitwdWJsaWMgY2xhc3MgQ2xpZW50U2Vzc2lvbkluZm8geworCQorCXByaXZhdGUgQ2xpZW50IHJjbDsKKwlwdWJsaWMgTG9uZyBzZXJ2ZXJJZDsKKwkKKwlwdWJsaWMgQ2xpZW50U2Vzc2lvbkluZm8oQ2xpZW50IHJjbCwgTG9uZyBzZXJ2ZXJJZCkgeworCQlzdXBlcigpOworCQl0aGlzLnJjbCA9IHJjbDsKKwkJdGhpcy5zZXJ2ZXJJZCA9IHNlcnZlcklkOworCX0KKwkKKwlwdWJsaWMgQ2xpZW50IGdldFJjbCgpIHsKKwkJcmV0dXJuIHJjbDsKKwl9CisJcHVibGljIHZvaWQgc2V0UmNsKENsaWVudCByY2wpIHsKKwkJdGhpcy5yY2wgPSByY2w7CisJfQorCXB1YmxpYyBMb25nIGdldFNlcnZlcklkKCkgeworCQlyZXR1cm4gc2VydmVySWQ7CisJfQorCXB1YmxpYyB2b2lkIHNldFNlcnZlcklkKExvbmcgc2VydmVySWQpIHsKKwkJdGhpcy5zZXJ2ZXJJZCA9IHNlcnZlcklkOworCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Nlc3Npb24vSVNlc3Npb25NYW5hZ2VyLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2Vzc2lvbi9JU2Vzc2lvbk1hbmFnZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjcxMjA2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Nlc3Npb24vSVNlc3Npb25NYW5hZ2VyLmphdmEKQEAgLTAsMCArMSwyMTcgQEAKKy8qDQorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAqIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2Vzc2lvbjsNCisNCitpbXBvcnQgamF2YS51dGlsLkNvbGxlY3Rpb247DQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KKw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJlYW5zLmJhc2ljLlNlYXJjaFJlc3VsdDsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuU2VydmVyOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tLkNsaWVudDsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucmVtb3RlLnJlZDUuU2NvcGVBcHBsaWNhdGlvbkFkYXB0ZXI7DQorDQorLyoqDQorICogTWV0aG9kcyB0byBhZGQvZ2V0L3JlbW92ZSB7QGxpbmsgQ2xpZW50fXMgdG8gdGhlIHNlc3Npb24NCisgKiANCisgKiANCisgKiBAYXV0aG9yIHNlYmF3YWduZXINCisgKg0KKyAqLw0KK3B1YmxpYyBpbnRlcmZhY2UgSVNlc3Npb25NYW5hZ2VyIHsNCisJDQorCS8qKg0KKwkgKiBOb3RpZmllZCBvbiBzZXJ2ZXIgc3RhcnQsIHdoZW4gdGhlIHNlc3Npb24gbWFuYWdlciBzaG91bGQgYmUgc3RhcnRlZCBhbmQNCisJICogZXZlbnR1YWxseSBjYWNoZXMgY2xlYXJlZC9zZXR1cA0KKwkgKi8NCisJcHVibGljIGFic3RyYWN0IHZvaWQgc2Vzc2lvblN0YXJ0KCk7DQorDQorCS8qKg0KKwkgKiBhZGQgYSBuZXcgY2xpZW50IGl0ZW0NCisJICogDQorCSAqIEBwYXJhbSBzdHJlYW1JZA0KKwkgKiBAcGFyYW0gc2NvcGVOYW1lDQorCSAqIEBwYXJhbSByZW1vdGVQb3J0DQorCSAqIEBwYXJhbSByZW1vdGVBZGRyZXNzDQorCSAqIEBwYXJhbSBzd2ZVcmwNCisJICogQHBhcmFtIGlzQVZDbGllbnQNCisJICogQHBhcmFtIHNlcnZlcg0KKwkgKiBAcmV0dXJuDQorCSAqLw0KKwlwdWJsaWMgYWJzdHJhY3QgQ2xpZW50IGFkZENsaWVudExpc3RJdGVtKFN0cmluZyBzdHJlYW1JZCwNCisJCQlTdHJpbmcgc2NvcGVOYW1lLCBJbnRlZ2VyIHJlbW90ZVBvcnQsIFN0cmluZyByZW1vdGVBZGRyZXNzLA0KKwkJCVN0cmluZyBzd2ZVcmwsIGJvb2xlYW4gaXNBVkNsaWVudCwgU2VydmVyIHNlcnZlcik7DQorDQorCXB1YmxpYyBhYnN0cmFjdCBDb2xsZWN0aW9uPENsaWVudD4gZ2V0Q2xpZW50cygpOw0KKwkNCisJLyoqDQorCSAqIGxvYWRzIHRoZSBzZXJ2ZXIgaW50byB0aGUgY2xpZW50IChvbmx5IGlmIGRhdGFiYXNlIGNhY2hlIGlzIHVzZWQpDQorCSAqIA0KKwkgKiBAcmV0dXJuDQorCSAqLw0KKwlwdWJsaWMgYWJzdHJhY3QgQ29sbGVjdGlvbjxDbGllbnQ+IGdldENsaWVudHNXaXRoU2VydmVyKCk7DQorDQorCS8qKg0KKwkgKiBHZXQgYSBjbGllbnQgYnkgaXRzIHN0cmVhbUlkDQorCSAqIA0KKwkgKiBAcGFyYW0gc3RyZWFtSWQNCisJICogQHBhcmFtIHNlcnZlcg0KKwkgKiBAcmV0dXJuDQorCSAqLw0KKwlwdWJsaWMgYWJzdHJhY3QgQ2xpZW50IGdldENsaWVudEJ5U3RyZWFtSWQoU3RyaW5nIHN0cmVhbUlkLA0KKwkJCVNlcnZlciBzZXJ2ZXIpOw0KKw0KKwkvKioNCisJICogZ2V0IGEgY2xpZW50IGJ5IGl0cyBwdWJsaWNTSUQgYW5kIHRoZSBzZXJ2ZXIsIA0KKwkgKiBpc0FWQ2xpZW50IGlzIG5vcm1hbGx5IGZhbHNlLCBhcyB5b3Ugd2FudCB0aGUgZGF0YSBjb25uZWN0aW9uLg0KKwkgKiBJZiB5b3Ugc2V0IGlzQVZDbGllbnQgdG8gdHJ1ZSwgeW91IHdvdWxkIG9idGFpbiB0aGUgUlRNUCANCisJICogY29ubmVjdGlvbiB0aGF0IGlzIHVzZWQgZm9yIEF1ZGlvL1ZpZGVvIHN0cmVhbWluZw0KKwkgKiANCisJICogQHBhcmFtIHB1YmxpY1NJRA0KKwkgKiBAcGFyYW0gaXNBVkNsaWVudA0KKwkgKiBAcGFyYW0gc2VydmVyDQorCSAqIEByZXR1cm4NCisJICovDQorCXB1YmxpYyBhYnN0cmFjdCBDbGllbnQgZ2V0Q2xpZW50QnlQdWJsaWNTSUQoU3RyaW5nIHB1YmxpY1NJRCwNCisJCQlib29sZWFuIGlzQVZDbGllbnQsIFNlcnZlciBzZXJ2ZXIpOw0KKwkNCisJLyoqDQorCSAqIHNhbWUgYXMge0BsaW5rICNnZXRDbGllbnRCeVB1YmxpY1NJRChTdHJpbmcsIGJvb2xlYW4sIFNlcnZlcil9IGJ1dCBpdCBpZ25vcmVzIA0KKwkgKiBpZiB0aGUgc2VydmVyIHBhcnQsIHNvIGl0IHdpbGwgZGVsaXZlciBhbnkgY2xpZW50IGp1c3QgYnkgaXRzIHB1YmxpY1NJRC48YnIvPg0KKwkgKiA8YnIvPg0KKwkgKiA8Yj5Ob3RlOjwvYj4NCisJICogVGhpcyBtZXRob2QgcmVxdWlyZXMgbW9yZSB0aW1lIHRvIGZpbmQgdGhlIHVzZXIsIHNvIHVuZGVyIG5vcm1hbCBjaXJjdW1zdGFuY2VzIA0KKwkgKiB5b3Ugc2hvdWxkIHVzZSB7QGxpbmsgI2dldENsaWVudEJ5UHVibGljU0lEKFN0cmluZywgYm9vbGVhbiwgU2VydmVyKX0hDQorCSAqIA0KKwkgKiBAcGFyYW0gcHVibGljU0lEDQorCSAqIEBwYXJhbSBpc0FWQ2xpZW50DQorCSAqIEByZXR1cm4NCisJICovDQorCXB1YmxpYyBDbGllbnRTZXNzaW9uSW5mbyBnZXRDbGllbnRCeVB1YmxpY1NJREFueVNlcnZlcihTdHJpbmcgcHVibGljU0lELCBib29sZWFuIGlzQVZDbGllbnQpOw0KKw0KKwkvKioNCisJICogDQorCSAqIEBwYXJhbSB1c2VySWQNCisJICogQHJldHVybg0KKwkgKiANCisJICogQGRlcHJlY2F0ZWQgVGhlcmUgY291bGQgYmUgbXVsdGlwbGUgdXNlcnMgbG9nZ2VkIGluIHdpdGggdGhlIHNhbWUgdXNlcmlkLA0KKwkgKiAgICAgICAgICAgICB0aGVuIHRoaXMgY2FsbCB3b3VsZCByZXR1cm4gYSBsaXN0IG5vdCBhIHNpbmdsZSB1c2VyDQorCSAqLw0KKwlwdWJsaWMgYWJzdHJhY3QgQ2xpZW50IGdldENsaWVudEJ5VXNlcklkKExvbmcgdXNlcklkKTsNCisNCisJLyoqDQorCSAqIFVwZGF0ZSB0aGUgc2Vzc2lvbiBvYmplY3Qgb2YgdGhlIGF1ZGlvL3ZpZGVvLWNvbm5lY3Rpb24gYW5kIGFkZGl0aW9uYWxseQ0KKwkgKiBzd2FwIHRoZSB2YWx1ZXMgdG8gdGhlIHNlc3Npb24gb2JqZWN0IG9mIHRoZSB1c2VyIHRoYXQgaG9sZHMgdGhlIGZ1bGwNCisJICogc2Vzc2lvbiBvYmplY3QNCisJICogDQorCSAqIEBwYXJhbSBzdHJlYW1JZA0KKwkgKiBAcGFyYW0gcmNtDQorCSAqIEByZXR1cm4NCisJICovDQorCXB1YmxpYyBhYnN0cmFjdCBCb29sZWFuIHVwZGF0ZUFWQ2xpZW50QnlTdHJlYW1JZChTdHJpbmcgc3RyZWFtSWQsDQorCQkJQ2xpZW50IHJjbSwgU2VydmVyIHNlcnZlcik7DQorDQorCS8qKg0KKwkgKiBVcGRhdGUgdGhlIHNlc3Npb24gb2JqZWN0DQorCSAqIA0KKwkgKiB1cGRhdGVSb29tQ291bnQgaXMgb25seSA8aT5vbmU8L2k+IHRpbWUgdHJ1ZSwgaW4NCisJICoge0BsaW5rIFNjb3BlQXBwbGljYXRpb25BZGFwdGVyI3NldFJvb21WYWx1ZXMoTG9uZywgQm9vbGVhbiwgQm9vbGVhbiwgTG9uZywgU3RyaW5nKX0NCisJICogLg0KKwkgKiANCisJICogQHBhcmFtIHN0cmVhbUlkDQorCSAqIEBwYXJhbSByY20NCisJICogQHBhcmFtIHVwZGF0ZVJvb21Db3VudA0KKwkgKiAgICAgICAgICAgIHRydWUgbWVhbnMgdGhlIGNvdW50IGZvciB0aGUgcm9vbSBoYXMgdG8gYmUgdXBkYXRlZA0KKwkgKiBAcmV0dXJuDQorCSAqLw0KKwlwdWJsaWMgYWJzdHJhY3QgQm9vbGVhbiB1cGRhdGVDbGllbnRCeVN0cmVhbUlkKFN0cmluZyBzdHJlYW1JZCwNCisJCQlDbGllbnQgcmNtLCBib29sZWFuIHVwZGF0ZVJvb21Db3VudCwgU2VydmVyIHNlcnZlcik7DQorDQorCS8qKg0KKwkgKiBSZW1vdmUgYSBjbGllbnQgZnJvbSB0aGUgc2Vzc2lvbiBzdG9yZQ0KKwkgKiANCisJICogQHBhcmFtIHN0cmVhbUlkDQorCSAqIEByZXR1cm4NCisJICovDQorCXB1YmxpYyBhYnN0cmFjdCBCb29sZWFuIHJlbW92ZUNsaWVudChTdHJpbmcgc3RyZWFtSWQsIFNlcnZlciBzZXJ2ZXIpOw0KKw0KKwkvKioNCisJICogR2V0IGFsbCBDbGllbnRMaXN0IE9iamVjdHMgb2YgdGhhdCByb29tIGFuZCBkb21haW4gVGhpcyBGdW5jdGlvbiBpcw0KKwkgKiBuZWVkZWQgY2F1c2UgaXQgaXMgaW52b2tlZCBpbnRlcm5hbGx5IEFGVEVSIHRoZSBjdXJyZW50IHVzZXIgaGFzIGJlZW4NCisJICogYWxyZWFkeSByZW1vdmVkIGZyb20gdGhlIENsaWVudExpc3QgdG8gc2VlIGlmIHRoZSBSb29tIGlzIGVtcHR5IGFnYWluIGFuZA0KKwkgKiB0aGUgUG9sbExpc3QgY2FuIGJlIHJlbW92ZWQNCisJICogQHBhcmFtIHJvb21faWQgDQorCSAqIEByZXR1cm4NCisJICovDQorCXB1YmxpYyBhYnN0cmFjdCBMaXN0PENsaWVudD4gZ2V0Q2xpZW50TGlzdEJ5Um9vbShMb25nIHJvb21faWQpOw0KKwkNCisJcHVibGljIGFic3RyYWN0IENvbGxlY3Rpb248Q2xpZW50PiBnZXRDbGllbnRMaXN0QnlSb29tQWxsKExvbmcgcm9vbV9pZCk7DQorDQorCS8qKg0KKwkgKiBnZXQgdGhlIGN1cnJlbnQgTW9kZXJhdG9yIGluIHRoaXMgcm9vbQ0KKwkgKiANCisJICogQHBhcmFtIHJvb21uYW1lDQorCSAqIEByZXR1cm4NCisJICovDQorCXB1YmxpYyBhYnN0cmFjdCBMaXN0PENsaWVudD4gZ2V0Q3VycmVudE1vZGVyYXRvckJ5Um9vbShMb25nIHJvb21faWQpOw0KKw0KKwkvKioNCisJICogR2V0IGxpc3Qgb2YgY3VycmVudCBjbGllbnQgc2Vzc2lvbnMNCisJICogDQorCSAqIEBwYXJhbSBzdGFydA0KKwkgKiBAcGFyYW0gbWF4DQorCSAqIEBwYXJhbSBvcmRlcmJ5DQorCSAqIEBwYXJhbSBhc2MNCisJICogQHJldHVybg0KKwkgKi8NCisJcHVibGljIGFic3RyYWN0IFNlYXJjaFJlc3VsdDxDbGllbnQ+IGdldExpc3RCeVN0YXJ0QW5kTWF4KGludCBzdGFydCwNCisJCQlpbnQgbWF4LCBTdHJpbmcgb3JkZXJieSwgYm9vbGVhbiBhc2MpOw0KKw0KKwkvKioNCisJICogcmV0dXJucyBudW1iZXIgb2YgY3VycmVudCB1c2VycyByZWNvcmRpbmcNCisJICogDQorCSAqIEBwYXJhbSByb29tSWQNCisJICogQHJldHVybg0KKwkgKi8NCisJcHVibGljIGFic3RyYWN0IGxvbmcgZ2V0UmVjb3JkaW5nQ291bnQobG9uZyByb29tSWQpOw0KKw0KKwkvKioNCisJICogcmV0dXJucyBhIG51bWJlciBvZiBjdXJyZW50IHVzZXJzIHB1Ymxpc2hpbmcgc2NyZWVuc2hhcmluZw0KKwkgKiANCisJICogQHBhcmFtIHJvb21JZA0KKwkgKiBAcmV0dXJuDQorCSAqLw0KKwlwdWJsaWMgYWJzdHJhY3QgbG9uZyBnZXRQdWJsaXNoaW5nQ291bnQobG9uZyByb29tSWQpOw0KKwkNCisJLyoqDQorCSAqIEdldCBhIGxpc3Qgb2YgYWxsIHNlcnZlcnMgb2YgYWxsIHJvb21zIG9uIHRoYXQgc2VydmVyLCBzZXJ2ZXJJZCA9IG51bGwgDQorCSAqIG1lYW5zIGl0IGlzIGEgbG9jYWwgc2Vzc2lvbiBvbiB0aGUgbWFzdGVyLg0KKwkgKiANCisJICogQHBhcmFtIHNlcnZlcg0KKwkgKiBAcmV0dXJuIGEgc2V0LCBhIHJvb21JZCBjYW4gYmUgb25seSBvbmUgdGltZSBpbiB0aGlzIGxpc3QNCisJICovDQorCXB1YmxpYyBhYnN0cmFjdCBMaXN0PExvbmc+IGdldEFjdGl2ZVJvb21JZHNCeVNlcnZlcihTZXJ2ZXIgc2VydmVyKTsNCisNCisJLyoqDQorCSAqIEdldCBzb21lIHN0YXRpc3RpY3MgYWJvdXQgdGhlIGN1cnJlbnQgc2Vzc2lvbnMNCisJICogDQorCSAqIEByZXR1cm4NCisJICovDQorCXB1YmxpYyBhYnN0cmFjdCBTdHJpbmcgZ2V0U2Vzc2lvblN0YXRpc3RpY3MoKTsNCisNCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Nlc3Npb24vU2VydmVyVXRpbC5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Nlc3Npb24vU2VydmVyVXRpbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzZGI5MmMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2Vzc2lvbi9TZXJ2ZXJVdGlsLmphdmEKQEAgLTAsMCArMSw4MiBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5zZXNzaW9uOworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuZGFvLlNlcnZlckRhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5TZXJ2ZXI7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKKworLyoqCisgKiBDb25maWd1cmVzIHRoZSBjdXJyZW50IHJlZmVyZW5jZSB0byB0aGUge0BsaW5rIFNlcnZlcn0gZm9yIHRoaXMgVG9tY2F0L1dlYi1Db250YWluZXIuCisgKiAKKyAqIEl0IGlzIGEgU3ByaW5nIEJlYW4gYW5kIGNvbmZpZ3VyZWQgYXMgU2luZ2xldG9uLiBUaGVyZSBpcyBvbmx5IG9uZSBpbnN0YW5jZSBvZiB0aGlzIAorICogYmVhbiBpbiB0aGUgZW50aXJlIFdlYi1BcHBsaWNhdGlvbi4gIAorICogCisgKiBAYXV0aG9yIHNlYmF3YWduZXIKKyAqCisgKi8KK3B1YmxpYyBjbGFzcyBTZXJ2ZXJVdGlsIHsKKwlwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoCisJCQlTZXJ2ZXJVdGlsLmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBTZXJ2ZXJEYW8gc2VydmVyRGFvOworCQorCS8qKgorCSAqIEluamVjdGVkIHZpYSBTcHJpbmcgY29uZmlndXJhdGlvbgorCSAqIAorCSAqIGZvciBjbHVzdGVyIGNvbmZpZ3VyYXRpb24sIGlmIG9ubHkgdXNpbmcgb25lIHNlcnZlciAobm8gY2x1c3RlciksIHNlcnZlcklkIGlzIG51bGwsCisJICogdGhpcyBpcyB0aGUgY3VycmVudCBzZXJ2ZXJJZCBvZiB0aGlzIFRvbWNhdCBpbnN0YW5jZSAobnVsbCBtZWFucyBubyBjbHVzdGVyIGlzIGNvbmZpZ3VyZWQpCisJICovCisJcHJpdmF0ZSBTdHJpbmcgc2VydmVySWQgPSBudWxsOworCQorCS8qKgorCSAqIGEgcmVmZXJlbmNlIG9mIHRoZSBjdXJyZW50IHNlcnZlciBpbiB0aGF0IFRvbWNhdCBpbnN0YW5jZQorCSAqLworCXByaXZhdGUgU2VydmVyIGN1cnJlbnRTZXJ2ZXI7CisJCisJcHVibGljIFN0cmluZyBnZXRTZXJ2ZXJJZCgpIHsKKwkJcmV0dXJuIHNlcnZlcklkOworCX0KKwkKKwlwdWJsaWMgdm9pZCBzZXRTZXJ2ZXJJZChTdHJpbmcgc2VydmVySWQpIHsKKwkJdGhpcy5zZXJ2ZXJJZCA9IHNlcnZlcklkOworCX0KKwkKKwkvKioKKwkgKiAKKwkgKiBAcmV0dXJuIHRoZSBjdXJyZW50IHNlcnZlcgorCSAqLworCXB1YmxpYyBTZXJ2ZXIgZ2V0Q3VycmVudFNlcnZlcigpIHsKKwkJaWYgKHNlcnZlcklkID09IG51bGwpIHsKKwkJCXJldHVybiBudWxsOworCQl9CisJCWlmIChjdXJyZW50U2VydmVyICE9IG51bGwgJiYgc2VydmVySWQuZXF1YWxzKGN1cnJlbnRTZXJ2ZXIuZ2V0SWQoKS50b1N0cmluZygpKSkgeworCQkJcmV0dXJuIGN1cnJlbnRTZXJ2ZXI7CisJCX0KKwkJY3VycmVudFNlcnZlciA9IHNlcnZlckRhby5nZXQoTG9uZy5wYXJzZUxvbmcoc2VydmVySWQpKTsKKwkJaWYgKGN1cnJlbnRTZXJ2ZXIgPT0gbnVsbCkgeworCQkJbG9nLndhcm4oIllvdSBoYXZlIGNvbmZpZ3VyZWQgYSBzZXJ2ZXJJZCB0aGF0IGRvZXMgbm90IGV4aXN0IGluIHlvdXIgbGlzdCBvZiBzZXJ2ZXJzLCBzZXJ2ZXJJZDogIitzZXJ2ZXJJZCk7CisJCX0KKwkJcmV0dXJuIGN1cnJlbnRTZXJ2ZXI7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Nlc3Npb24vU2Vzc2lvbk1hbmFnZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zZXNzaW9uL1Nlc3Npb25NYW5hZ2VyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2ZiMGJiMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zZXNzaW9uL1Nlc3Npb25NYW5hZ2VyLmphdmEKQEAgLTAsMCArMSw0NDEgQEAKKy8qDQorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAqIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2Vzc2lvbjsNCisNCitpbXBvcnQgamF2YS5tYXRoLkJpZ0ludGVnZXI7DQoraW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7DQoraW1wb3J0IGphdmEudXRpbC5BcnJheXM7DQoraW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOw0KK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsNCitpbXBvcnQgamF2YS51dGlsLkxpbmtlZExpc3Q7DQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KK2ltcG9ydCBqYXZhLnV0aWwuTWFwLkVudHJ5Ow0KK2ltcG9ydCBqYXZhLnV0aWwuUmFuZG9tOw0KKw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmVhbnMuYmFzaWMuU2VhcmNoUmVzdWx0Ow0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5TZXJ2ZXI7DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnJvb20uQ2xpZW50Ow0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5zZXNzaW9uLnN0b3JlLklDbGllbnRQZXJzaXN0ZW5jZVN0b3JlOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5jcnlwdC5NYW5hZ2VDcnlwdFN0eWxlOw0KK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOw0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5BdXRvd2lyZWQ7DQorDQorLyoqDQorICogSGFuZGxlIHtAbGluayBDbGllbnR9IG9iamVjdHMuDQorICogDQorICogVXNlIGEga2luZCBvZiBkZWNvcmF0b3IgcGF0dGVybiB0byBpbmplY3QgdGhlIHtAbGluayBTZXJ2ZXJ9IGludG8gZXZlcnkgY2FsbC4NCisgKiANCisgKiBAYXV0aG9yIHNlYmF3YWduZXINCisgKiANCisgKi8NCitwdWJsaWMgY2xhc3MgU2Vzc2lvbk1hbmFnZXIgaW1wbGVtZW50cyBJU2Vzc2lvbk1hbmFnZXIgew0KKwkNCisJcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKA0KKwkJCVNlc3Npb25NYW5hZ2VyLmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7DQorCQ0KKwlAQXV0b3dpcmVkDQorCXByaXZhdGUgU2VydmVyVXRpbCBzZXJ2ZXJVdGlsOw0KKwlAQXV0b3dpcmVkDQorCXByaXZhdGUgTWFuYWdlQ3J5cHRTdHlsZSBtYW5hZ2VDcnlwdFN0eWxlOw0KKwkNCisJLyoqDQorCSAqIEluamVjdGVkIHZpYSBTcHJpbmcsIG5lZWRzIGEgZ2V0dGVyL3NldHRlciBiZWNhdXNlIGl0IGNhbiBiZSBjb25maWd1cmVkDQorCSAqIEF1dG93aXJlZCB3aWxsIG5vdCBzdWl0IGhlcmUgYXMgdGhlcmUgYXJlIG11bHRpcGxlIGltcGxlbWVudGF0aW9ucyBvZiB0aGUNCisJICoge0BsaW5rIElDbGllbnRQZXJzaXN0ZW5jZVN0b3JlfQ0KKwkgKi8NCisJcHJpdmF0ZSBJQ2xpZW50UGVyc2lzdGVuY2VTdG9yZSBjYWNoZTsNCisJDQorCXB1YmxpYyBJQ2xpZW50UGVyc2lzdGVuY2VTdG9yZSBnZXRDYWNoZSgpIHsNCisJCXJldHVybiBjYWNoZTsNCisJfQ0KKw0KKwlwdWJsaWMgdm9pZCBzZXRDYWNoZShJQ2xpZW50UGVyc2lzdGVuY2VTdG9yZSBjYWNoZSkgew0KKwkJdGhpcy5jYWNoZSA9IGNhY2hlOw0KKwl9DQorDQorCXByaXZhdGUgSVNlc3Npb25NYW5hZ2VyIHNlc3Npb25NYW5hZ2VyID0gbmV3IElTZXNzaW9uTWFuYWdlcigpIHsNCisJCQ0KKwkJcHVibGljIHN5bmNocm9uaXplZCBDbGllbnQgYWRkQ2xpZW50TGlzdEl0ZW0oU3RyaW5nIHN0cmVhbUlkLA0KKwkJCQlTdHJpbmcgc2NvcGVOYW1lLCBJbnRlZ2VyIHJlbW90ZVBvcnQsIFN0cmluZyByZW1vdGVBZGRyZXNzLA0KKwkJCQlTdHJpbmcgc3dmVXJsLCBib29sZWFuIGlzQVZDbGllbnQsIFNlcnZlciBzZXJ2ZXIpIHsNCisJCQl0cnkgew0KKw0KKwkJCQkvLyBTdG9yZSB0aGUgQ29ubmVjdGlvbiBpbnRvIGEgYmVhbiBhbmQgYWRkIGl0IHRvIHRoZSBIYXNoTWFwDQorCQkJCUNsaWVudCByY20gPSBuZXcgQ2xpZW50KCk7DQorCQkJCXJjbS5zZXRDb25uZWN0ZWRTaW5jZShuZXcgRGF0ZSgpKTsNCisJCQkJcmNtLnNldFN0cmVhbWlkKHN0cmVhbUlkKTsNCisJCQkJcmNtLnNldFNjb3BlKHNjb3BlTmFtZSk7DQorCQkJCWxvbmcgcmFuZG9tID0gU3lzdGVtLmN1cnJlbnRUaW1lTWlsbGlzKCkgKyBuZXcgQmlnSW50ZWdlcigyNTYsIG5ldyBSYW5kb20oKSkubG9uZ1ZhbHVlKCk7DQorCQkJCQ0KKwkJCQlyY20uc2V0UHVibGljU0lEKG1hbmFnZUNyeXB0U3R5bGUuZ2V0SW5zdGFuY2VPZkNyeXB0KCkNCisJCQkJCQkuY3JlYXRlUGFzc1BocmFzZShTdHJpbmcudmFsdWVPZihyYW5kb20pLnRvU3RyaW5nKCkpKTsNCisNCisJCQkJcmNtLnNldFNlcnZlcihzZXJ2ZXIpOw0KKwkJCQlyY20uc2V0VXNlcnBvcnQocmVtb3RlUG9ydCk7DQorCQkJCXJjbS5zZXRVc2VyaXAocmVtb3RlQWRkcmVzcyk7DQorCQkJCXJjbS5zZXRTd2Z1cmwoc3dmVXJsKTsNCisJCQkJcmNtLnNldElzTW9kKG5ldyBCb29sZWFuKGZhbHNlKSk7DQorCQkJCXJjbS5zZXRDYW5EcmF3KG5ldyBCb29sZWFuKGZhbHNlKSk7DQorCQkJCXJjbS5zZXRJc0FWQ2xpZW50KGlzQVZDbGllbnQpOw0KKw0KKwkJCQlpZiAoY2FjaGUuY29udGFpbnNLZXkobnVsbCwgc3RyZWFtSWQpKSB7DQorCQkJCQlsb2cuZXJyb3IoIlRyaWVkIHRvIGFkZCBhbiBleGlzdGluZyBDbGllbnQgIiArIHN0cmVhbUlkKTsNCisJCQkJCXJldHVybiBudWxsOw0KKwkJCQl9DQorDQorCQkJCWNhY2hlLnB1dChyY20uZ2V0U3RyZWFtaWQoKSwgcmNtKTsNCisNCisJCQkJcmV0dXJuIHJjbTsNCisJCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7DQorCQkJCWxvZy5lcnJvcigiW2FkZENsaWVudExpc3RJdGVtXSIsIGVycik7DQorCQkJfQ0KKwkJCXJldHVybiBudWxsOw0KKwkJfQ0KKw0KKwkJcHVibGljIHN5bmNocm9uaXplZCBDb2xsZWN0aW9uPENsaWVudD4gZ2V0Q2xpZW50cygpIHsNCisJCQlyZXR1cm4gY2FjaGUuZ2V0Q2xpZW50cygpOw0KKwkJfQ0KKwkJDQorCQlwdWJsaWMgc3luY2hyb25pemVkIENvbGxlY3Rpb248Q2xpZW50PiBnZXRDbGllbnRzV2l0aFNlcnZlcigpIHsNCisJCQlyZXR1cm4gY2FjaGUuZ2V0Q2xpZW50c1dpdGhTZXJ2ZXIoKTsNCisJCX0NCisNCisJCXB1YmxpYyBzeW5jaHJvbml6ZWQgQ2xpZW50IGdldENsaWVudEJ5U3RyZWFtSWQoU3RyaW5nIHN0cmVhbUlkLCBTZXJ2ZXIgc2VydmVyKSB7DQorCQkJdHJ5IHsNCisJCQkJaWYgKCFjYWNoZS5jb250YWluc0tleShzZXJ2ZXIsIHN0cmVhbUlkKSkgew0KKwkJCQkJbG9nLmRlYnVnKCJUcmllZCB0byBnZXQgYSBub24gZXhpc3RpbmcgQ2xpZW50ICIgKyBzdHJlYW1JZCArICIgc2VydmVyICIgKyBzZXJ2ZXIpOw0KKwkJCQkJcmV0dXJuIG51bGw7DQorCQkJCX0NCisJCQkJcmV0dXJuIGNhY2hlLmdldChzZXJ2ZXIsIHN0cmVhbUlkKTsNCisJCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7DQorCQkJCWxvZy5lcnJvcigiW2dldENsaWVudEJ5U3RyZWFtSWRdIiwgZXJyKTsNCisJCQl9DQorCQkJcmV0dXJuIG51bGw7DQorCQl9DQorDQorCQlwdWJsaWMgQ2xpZW50IGdldENsaWVudEJ5UHVibGljU0lEKFN0cmluZyBwdWJsaWNTSUQsIGJvb2xlYW4gaXNBVkNsaWVudCwgU2VydmVyIHNlcnZlcikgew0KKwkJCXRyeSB7DQorCQkJCWZvciAoQ2xpZW50IHJjbCA6IGNhY2hlLmdldENsaWVudHNCeVB1YmxpY1NJRChzZXJ2ZXIsIHB1YmxpY1NJRCkpIHsNCisJCQkJCWlmIChyY2wuZ2V0SXNBVkNsaWVudCgpICE9IGlzQVZDbGllbnQpIHsNCisJCQkJCQljb250aW51ZTsNCisJCQkJCX0NCisJCQkJCXJldHVybiByY2w7DQorCQkJCX0NCisJCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7DQorCQkJCWxvZy5lcnJvcigiW2dldENsaWVudEJ5UHVibGljU0lEXSIsIGVycik7DQorCQkJfQ0KKwkJCXJldHVybiBudWxsOw0KKwkJfQ0KKwkJDQorCQlwdWJsaWMgQ2xpZW50U2Vzc2lvbkluZm8gZ2V0Q2xpZW50QnlQdWJsaWNTSURBbnlTZXJ2ZXIoU3RyaW5nIHB1YmxpY1NJRCwgYm9vbGVhbiBpc0FWQ2xpZW50KSB7DQorCQkJdHJ5IHsNCisJCQkJZm9yIChFbnRyeTxMb25nLExpc3Q8Q2xpZW50Pj4gZW50cnkgOiBjYWNoZS5nZXRDbGllbnRzQnlQdWJsaWNTSUQocHVibGljU0lEKS5lbnRyeVNldCgpKSB7DQorCQkJCQlmb3IgKENsaWVudCByY2wgOiBlbnRyeS5nZXRWYWx1ZSgpKSB7DQorCQkJCQkJaWYgKHJjbC5nZXRJc0FWQ2xpZW50KCkgIT0gaXNBVkNsaWVudCkgew0KKwkJCQkJCQljb250aW51ZTsNCisJCQkJCQl9DQorCQkJCQkJcmV0dXJuIG5ldyBDbGllbnRTZXNzaW9uSW5mbyhyY2wsIGVudHJ5LmdldEtleSgpKTsNCisJCQkJCX0NCisJCQkJfQ0KKwkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsNCisJCQkJbG9nLmVycm9yKCJbZ2V0Q2xpZW50QnlQdWJsaWNTSURBbnlTZXJ2ZXJdIiwgZXJyKTsNCisJCQl9DQorCQkJcmV0dXJuIG51bGw7DQorCQl9DQorDQorCQlwdWJsaWMgc3luY2hyb25pemVkIENsaWVudCBnZXRDbGllbnRCeVVzZXJJZChMb25nIHVzZXJJZCkgew0KKwkJCXRyeSB7DQorCQkJCWZvciAoQ2xpZW50IHJjbCA6IGNhY2hlLmdldENsaWVudHNCeVVzZXJJZChudWxsLCB1c2VySWQpKSB7DQorCQkJCQkNCisJCQkJCWlmIChyY2wuZ2V0SXNTY3JlZW5DbGllbnQoKSAhPSBudWxsICYmIHJjbC5nZXRJc1NjcmVlbkNsaWVudCgpKSB7DQorCQkJCQkJY29udGludWU7DQorCQkJCQl9DQorCQkJCQkNCisJCQkJCWlmIChyY2wuZ2V0SXNBVkNsaWVudCgpKSB7DQorCQkJCQkJY29udGludWU7DQorCQkJCQl9DQorCQkJCQkNCisJCQkJCXJldHVybiByY2w7DQorCQkJCX0NCisJCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7DQorCQkJCWxvZy5lcnJvcigiW2dldENsaWVudEJ5VXNlcklkXSIsIGVycik7DQorCQkJfQ0KKwkJCXJldHVybiBudWxsOw0KKwkJfQ0KKw0KKwkJcHVibGljIHN5bmNocm9uaXplZCBCb29sZWFuIHVwZGF0ZUFWQ2xpZW50QnlTdHJlYW1JZChTdHJpbmcgc3RyZWFtSWQsIENsaWVudCByY20sIFNlcnZlciBzZXJ2ZXIpIHsNCisJCQl0cnkgew0KKwkJCQkvLyBnZXQgdGhlIGNvcnJlc3BvbmRpbmcgdXNlciBzZXNzaW9uIG9iamVjdCBhbmQgdXBkYXRlIHRoZSBzZXR0aW5ncw0KKwkJCQlDbGllbnQgcmNsVXN1YWwgPSBnZXRDbGllbnRCeVB1YmxpY1NJRChyY20uZ2V0UHVibGljU0lEKCksIGZhbHNlLCBzZXJ2ZXIpOw0KKwkJCQlpZiAocmNsVXN1YWwgIT0gbnVsbCkgew0KKwkJCQkJcmNsVXN1YWwuc2V0QnJvYWRDYXN0SUQocmNtLmdldEJyb2FkQ2FzdElEKCkpOw0KKwkJCQkJcmNsVXN1YWwuc2V0QXZzZXR0aW5ncyhyY20uZ2V0QXZzZXR0aW5ncygpKTsNCisJCQkJCXJjbFVzdWFsLnNldFZIZWlnaHQocmNtLmdldFZIZWlnaHQoKSk7DQorCQkJCQlyY2xVc3VhbC5zZXRWV2lkdGgocmNtLmdldFZXaWR0aCgpKTsNCisJCQkJCXJjbFVzdWFsLnNldFZYKHJjbS5nZXRWWCgpKTsNCisJCQkJCXJjbFVzdWFsLnNldFZZKHJjbS5nZXRWWSgpKTsNCisJCQkJCUNsaWVudCByY2xTYXZlZCA9IGNhY2hlLmdldChzZXJ2ZXIsIHJjbFVzdWFsLmdldFN0cmVhbWlkKCkpOw0KKwkJCQkJaWYgKHJjbFNhdmVkICE9IG51bGwpIHsNCisJCQkJCQljYWNoZS5wdXQocmNsVXN1YWwuZ2V0U3RyZWFtaWQoKSwgcmNsVXN1YWwpOw0KKwkJCQkJfSBlbHNlIHsNCisJCQkJCQlsb2cuZGVidWcoIlRyaWVkIHRvIHVwZGF0ZSBhIG5vbiBleGlzdGluZyBDbGllbnQgIiArIHJjbFVzdWFsLmdldFN0cmVhbWlkKCkpOw0KKwkJCQkJfQ0KKwkJCQl9DQorDQorCQkJCXVwZGF0ZUNsaWVudEJ5U3RyZWFtSWQoc3RyZWFtSWQsIHJjbSwgZmFsc2UsIHNlcnZlcik7DQorCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgew0KKwkJCQlsb2cuZXJyb3IoIlt1cGRhdGVBVkNsaWVudEJ5U3RyZWFtSWRdIiwgZXJyKTsNCisJCQl9DQorCQkJcmV0dXJuIG51bGw7DQorCQl9DQorDQorCQlwdWJsaWMgc3luY2hyb25pemVkIEJvb2xlYW4gdXBkYXRlQ2xpZW50QnlTdHJlYW1JZChTdHJpbmcgc3RyZWFtSWQsDQorCQkJCUNsaWVudCByY20sIGJvb2xlYW4gdXBkYXRlUm9vbUNvdW50LCBTZXJ2ZXIgc2VydmVyKSB7DQorCQkJdHJ5IHsNCisJCQkJDQorCQkJCUNsaWVudCByY2xTYXZlZCA9IGNhY2hlLmdldChzZXJ2ZXIsIHN0cmVhbUlkKTsNCisJCQkJDQorCQkJCWlmIChyY2xTYXZlZCAhPSBudWxsKSB7DQorCQkJCQljYWNoZS5wdXQoc3RyZWFtSWQsIHJjbSk7DQorCQkJCQlyZXR1cm4gdHJ1ZTsNCisJCQkJfSBlbHNlIHsNCisJCQkJCWxvZy5kZWJ1ZygiVHJpZWQgdG8gdXBkYXRlIGEgbm9uIGV4aXN0aW5nIENsaWVudCAiICsgc3RyZWFtSWQpOw0KKwkJCQkJcmV0dXJuIGZhbHNlOw0KKwkJCQl9DQorCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgew0KKwkJCQlsb2cuZXJyb3IoIlt1cGRhdGVDbGllbnRCeVN0cmVhbUlkXSIsIGVycik7DQorCQkJfQ0KKwkJCXJldHVybiBudWxsOw0KKwkJfQ0KKw0KKwkJcHVibGljIHN5bmNocm9uaXplZCBCb29sZWFuIHJlbW92ZUNsaWVudChTdHJpbmcgc3RyZWFtSWQsIFNlcnZlciBzZXJ2ZXIpIHsNCisJCQl0cnkgew0KKwkJCQlpZiAoY2FjaGUuY29udGFpbnNLZXkoc2VydmVyLHN0cmVhbUlkKSkgew0KKwkJCQkJY2FjaGUucmVtb3ZlKHNlcnZlcixzdHJlYW1JZCk7DQorCQkJCQlyZXR1cm4gdHJ1ZTsNCisJCQkJfSBlbHNlIHsNCisJCQkJCWxvZy5kZWJ1ZygiVHJpZWQgdG8gcmVtb3ZlIGEgbm9uIGV4aXN0aW5nIENsaWVudCAiICsgc3RyZWFtSWQpOw0KKwkJCQkJcmV0dXJuIGZhbHNlOw0KKwkJCQl9DQorCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgew0KKwkJCQlsb2cuZXJyb3IoIltyZW1vdmVDbGllbnRdIiwgZXJyKTsNCisJCQl9DQorCQkJcmV0dXJuIG51bGw7DQorCQl9DQorDQorCQlwdWJsaWMgc3luY2hyb25pemVkIEFycmF5TGlzdDxDbGllbnQ+IGdldENsaWVudExpc3RCeVJvb20oTG9uZyByb29tSWQpIHsNCisJCQlBcnJheUxpc3Q8Q2xpZW50PiByb29tQ2xpZW50TGlzdCA9IG5ldyBBcnJheUxpc3Q8Q2xpZW50PigpOw0KKwkJCXRyeSB7DQorDQorCQkJCWZvciAoQ2xpZW50IHJjbCA6IGNhY2hlLmdldENsaWVudHNCeVJvb21JZChyb29tSWQpKSB7DQorDQorCQkJCQlpZiAocmNsLmdldElzU2NyZWVuQ2xpZW50KCkgPT0gbnVsbCB8fCByY2wuZ2V0SXNTY3JlZW5DbGllbnQoKSkgew0KKwkJCQkJCWNvbnRpbnVlOw0KKwkJCQkJfQ0KKwkJCQkJaWYgKHJjbC5nZXRJc0FWQ2xpZW50KCkpIHsNCisJCQkJCQljb250aW51ZTsNCisJCQkJCX0NCisNCisJCQkJCS8vIE9ubHkgcGFyc2UgcmVhbGx5IHRob3NlIHVzZXJzIG91dCB0aGF0IGFyZSByZWFsbHkgYSBmdWxsIHNlc3Npb24gb2JqZWN0DQorCQkJCQkvLyBhbmQgbm8gcHNldWRvIHNlc3Npb24gb2JqZWN0IGxpa2UgdGhlIGF1ZGlvL3ZpZGVvIG9yIHNjcmVlbg0KKwkJCQkJLy8gc2hhcmluZyBjb25uZWN0aW9uDQorCQkJCQlyb29tQ2xpZW50TGlzdC5hZGQocmNsKTsNCisJCQkJfQ0KKwkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsNCisJCQkJbG9nLmVycm9yKCJbZ2V0Q2xpZW50TGlzdEJ5Um9vbV0iLCBlcnIpOw0KKwkJCX0NCisJCQlyZXR1cm4gcm9vbUNsaWVudExpc3Q7DQorCQl9DQorCQkNCisJCXB1YmxpYyBzeW5jaHJvbml6ZWQgQ29sbGVjdGlvbjxDbGllbnQ+IGdldENsaWVudExpc3RCeVJvb21BbGwoTG9uZyByb29tSWQpIHsNCisJCQl0cnkgew0KKwkJCQlyZXR1cm4gY2FjaGUuZ2V0Q2xpZW50c0J5Um9vbUlkKHJvb21JZCk7DQorCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgew0KKwkJCQlsb2cuZXJyb3IoIltnZXRDbGllbnRMaXN0QnlSb29tQWxsXSIsIGVycik7DQorCQkJfQ0KKwkJCXJldHVybiBudWxsOw0KKwkJfQ0KKw0KKwkJcHVibGljIHN5bmNocm9uaXplZCBMaXN0PENsaWVudD4gZ2V0Q3VycmVudE1vZGVyYXRvckJ5Um9vbShMb25nIHJvb21faWQpIHsNCisJCQlMaXN0PENsaWVudD4gcmNsTGlzdCA9IG5ldyBMaW5rZWRMaXN0PENsaWVudD4oKTsNCisJCQlMaXN0PENsaWVudD4gY3VycmVudENsaWVudHMgPSB0aGlzLmdldENsaWVudExpc3RCeVJvb20ocm9vbV9pZCk7DQorCQkJZm9yIChDbGllbnQgcmNsIDogY3VycmVudENsaWVudHMpIHsNCisJCQkJaWYgKHJjbC5nZXRJc01vZCgpKSB7DQorCQkJCQlyY2xMaXN0LmFkZChyY2wpOw0KKwkJCQl9DQorCQkJfQ0KKw0KKwkJCXJldHVybiByY2xMaXN0Ow0KKwkJfQ0KKw0KKwkJLy8gRklYTUUgbm90IHNvcnRlZA0KKwkJcHVibGljIHN5bmNocm9uaXplZCBTZWFyY2hSZXN1bHQ8Q2xpZW50PiBnZXRMaXN0QnlTdGFydEFuZE1heCgNCisJCQkJaW50IHN0YXJ0LCBpbnQgbWF4LCBTdHJpbmcgb3JkZXJieSwgYm9vbGVhbiBhc2MpIHsNCisJCQlTZWFyY2hSZXN1bHQ8Q2xpZW50PiBzUmVzdWx0ID0gbmV3IFNlYXJjaFJlc3VsdDxDbGllbnQ+KCk7DQorCQkJc1Jlc3VsdC5zZXRPYmplY3ROYW1lKENsaWVudC5jbGFzcy5nZXROYW1lKCkpOw0KKwkJCXNSZXN1bHQuc2V0UmVjb3JkcyhMb25nLnZhbHVlT2YoY2FjaGUuc2l6ZSgpKS5sb25nVmFsdWUoKSk7DQorCQkJc1Jlc3VsdC5zZXRSZXN1bHQoY2FjaGUuZ2V0Q2xpZW50c1dpdGhTZXJ2ZXIoKSk7DQorCQkJcmV0dXJuIHNSZXN1bHQ7DQorCQl9DQorDQorCQlwdWJsaWMgbG9uZyBnZXRSZWNvcmRpbmdDb3VudChsb25nIHJvb21JZCkgew0KKwkJCUxpc3Q8Q2xpZW50PiBjdXJyZW50Q2xpZW50cyA9IHRoaXMuZ2V0Q2xpZW50TGlzdEJ5Um9vbShyb29tSWQpOw0KKwkJCWludCBudW1iZXJPZlJlY29yZGluZ1VzZXJzID0gMDsNCisJCQlmb3IgKENsaWVudCByY2wgOiBjdXJyZW50Q2xpZW50cykgew0KKwkJCQlpZiAocmNsLmlzU3RhcnRSZWNvcmRpbmcoKSkgew0KKwkJCQkJbnVtYmVyT2ZSZWNvcmRpbmdVc2VycysrOw0KKwkJCQl9DQorCQkJfQ0KKwkJCXJldHVybiBudW1iZXJPZlJlY29yZGluZ1VzZXJzOw0KKwkJfQ0KKw0KKwkJcHVibGljIGxvbmcgZ2V0UHVibGlzaGluZ0NvdW50KGxvbmcgcm9vbUlkKSB7DQorCQkJTGlzdDxDbGllbnQ+IGN1cnJlbnRDbGllbnRzID0gdGhpcy5nZXRDbGllbnRMaXN0QnlSb29tKHJvb21JZCk7DQorCQkJaW50IG51bWJlck9mUHVibGlzaGluZ1VzZXJzID0gMDsNCisJCQlmb3IgKENsaWVudCByY2wgOiBjdXJyZW50Q2xpZW50cykgew0KKwkJCQlpZiAocmNsLmlzU3RyZWFtUHVibGlzaFN0YXJ0ZWQoKSkgew0KKwkJCQkJbnVtYmVyT2ZQdWJsaXNoaW5nVXNlcnMrKzsNCisJCQkJfQ0KKwkJCX0NCisJCQlyZXR1cm4gbnVtYmVyT2ZQdWJsaXNoaW5nVXNlcnM7DQorCQl9DQorCQkNCisJCXB1YmxpYyBMaXN0PExvbmc+IGdldEFjdGl2ZVJvb21JZHNCeVNlcnZlcihTZXJ2ZXIgc2VydmVyKSB7DQorCQkJcmV0dXJuIGNhY2hlLmdldFJvb21zSWRzQnlTZXJ2ZXIoc2VydmVyKTsNCisJCX0NCisJCQ0KKwkJDQorCQlwdWJsaWMgU3RyaW5nIGdldFNlc3Npb25TdGF0aXN0aWNzKCkgew0KKwkJCXJldHVybiBjYWNoZS5nZXREZWJ1Z0luZm9ybWF0aW9uKEFycmF5cy5hc0xpc3QoSUNsaWVudFBlcnNpc3RlbmNlU3RvcmUuREVCVUdfREVUQUlMUy5TSVpFKSk7DQorCQl9DQorDQorCQlwdWJsaWMgdm9pZCBzZXNzaW9uU3RhcnQoKSB7DQorCQkJLy8gVE9ETyBBdXRvLWdlbmVyYXRlZCBtZXRob2Qgc3R1Yg0KKwkJCQ0KKwkJfQ0KKwkJDQorCX07DQorCQ0KKwlwdWJsaWMgQ2xpZW50IGFkZENsaWVudExpc3RJdGVtKFN0cmluZyBzdHJlYW1JZCwgU3RyaW5nIHNjb3BlTmFtZSwNCisJCQlJbnRlZ2VyIHJlbW90ZVBvcnQsIFN0cmluZyByZW1vdGVBZGRyZXNzLCBTdHJpbmcgc3dmVXJsLA0KKwkJCWJvb2xlYW4gaXNBVkNsaWVudCwgU2VydmVyIHNlcnZlcikgew0KKwkJaWYgKHNlcnZlciA9PSBudWxsKSB7DQorCQkJc2VydmVyID0gc2VydmVyVXRpbC5nZXRDdXJyZW50U2VydmVyKCk7DQorCQl9DQorCQlyZXR1cm4gc2Vzc2lvbk1hbmFnZXIuYWRkQ2xpZW50TGlzdEl0ZW0oc3RyZWFtSWQsIHNjb3BlTmFtZSwNCisJCQkJcmVtb3RlUG9ydCwgcmVtb3RlQWRkcmVzcywgc3dmVXJsLCBpc0FWQ2xpZW50LCBzZXJ2ZXIpOw0KKwl9DQorDQorCXB1YmxpYyBDb2xsZWN0aW9uPENsaWVudD4gZ2V0Q2xpZW50cygpIHsNCisJCXJldHVybiBzZXNzaW9uTWFuYWdlci5nZXRDbGllbnRzKCk7DQorCX0NCisJDQorCXB1YmxpYyBDb2xsZWN0aW9uPENsaWVudD4gZ2V0Q2xpZW50c1dpdGhTZXJ2ZXIoKSB7DQorCQlyZXR1cm4gc2Vzc2lvbk1hbmFnZXIuZ2V0Q2xpZW50c1dpdGhTZXJ2ZXIoKTsNCisJfQ0KKw0KKwlwdWJsaWMgQ2xpZW50IGdldENsaWVudEJ5U3RyZWFtSWQoU3RyaW5nIHN0cmVhbUlkLCBTZXJ2ZXIgc2VydmVyKSB7DQorCQlpZiAoc2VydmVyID09IG51bGwpIHsNCisJCQlzZXJ2ZXIgPSBzZXJ2ZXJVdGlsLmdldEN1cnJlbnRTZXJ2ZXIoKTsNCisJCX0NCisJCXJldHVybiBzZXNzaW9uTWFuYWdlci5nZXRDbGllbnRCeVN0cmVhbUlkKHN0cmVhbUlkLCBzZXJ2ZXIpOw0KKwl9DQorDQorCXB1YmxpYyBDbGllbnQgZ2V0Q2xpZW50QnlQdWJsaWNTSUQoU3RyaW5nIHB1YmxpY1NJRCwgYm9vbGVhbiBpc0FWQ2xpZW50LA0KKwkJCVNlcnZlciBzZXJ2ZXIpIHsNCisJCWlmIChzZXJ2ZXIgPT0gbnVsbCkgew0KKwkJCXNlcnZlciA9IHNlcnZlclV0aWwuZ2V0Q3VycmVudFNlcnZlcigpOw0KKwkJfQ0KKwkJcmV0dXJuIHNlc3Npb25NYW5hZ2VyLmdldENsaWVudEJ5UHVibGljU0lEKHB1YmxpY1NJRCwgaXNBVkNsaWVudCwNCisJCQkJc2VydmVyKTsNCisJfQ0KKw0KKwlwdWJsaWMgQ2xpZW50U2Vzc2lvbkluZm8gZ2V0Q2xpZW50QnlQdWJsaWNTSURBbnlTZXJ2ZXIoU3RyaW5nIHB1YmxpY1NJRCwNCisJCQlib29sZWFuIGlzQVZDbGllbnQpIHsNCisJCXJldHVybiBzZXNzaW9uTWFuYWdlci5nZXRDbGllbnRCeVB1YmxpY1NJREFueVNlcnZlcihwdWJsaWNTSUQsDQorCQkJCWlzQVZDbGllbnQpOw0KKwl9DQorDQorCXB1YmxpYyBDbGllbnQgZ2V0Q2xpZW50QnlVc2VySWQoTG9uZyB1c2VySWQpIHsNCisJCXJldHVybiBzZXNzaW9uTWFuYWdlci5nZXRDbGllbnRCeVVzZXJJZCh1c2VySWQpOw0KKwl9DQorDQorCXB1YmxpYyBCb29sZWFuIHVwZGF0ZUFWQ2xpZW50QnlTdHJlYW1JZChTdHJpbmcgc3RyZWFtSWQsIENsaWVudCByY20sIFNlcnZlciBzZXJ2ZXIpIHsNCisJCWlmIChzZXJ2ZXIgPT0gbnVsbCkgew0KKwkJCXNlcnZlciA9IHNlcnZlclV0aWwuZ2V0Q3VycmVudFNlcnZlcigpOw0KKwkJfQ0KKwkJcmV0dXJuIHNlc3Npb25NYW5hZ2VyLnVwZGF0ZUFWQ2xpZW50QnlTdHJlYW1JZChzdHJlYW1JZCwgcmNtLCBzZXJ2ZXIpOw0KKwl9DQorDQorCXB1YmxpYyBCb29sZWFuIHVwZGF0ZUNsaWVudEJ5U3RyZWFtSWQoU3RyaW5nIHN0cmVhbUlkLCBDbGllbnQgcmNtLA0KKwkJCWJvb2xlYW4gdXBkYXRlUm9vbUNvdW50LCBTZXJ2ZXIgc2VydmVyKSB7DQorCQlpZiAoc2VydmVyID09IG51bGwpIHsNCisJCQlzZXJ2ZXIgPSBzZXJ2ZXJVdGlsLmdldEN1cnJlbnRTZXJ2ZXIoKTsNCisJCX0NCisJCXJldHVybiBzZXNzaW9uTWFuYWdlci51cGRhdGVDbGllbnRCeVN0cmVhbUlkKHN0cmVhbUlkLCByY20sDQorCQkJCXVwZGF0ZVJvb21Db3VudCwgc2VydmVyKTsNCisJfQ0KKw0KKwlwdWJsaWMgQm9vbGVhbiByZW1vdmVDbGllbnQoU3RyaW5nIHN0cmVhbUlkLCBTZXJ2ZXIgc2VydmVyKSB7DQorCQlpZiAoc2VydmVyID09IG51bGwpIHsNCisJCQlzZXJ2ZXIgPSBzZXJ2ZXJVdGlsLmdldEN1cnJlbnRTZXJ2ZXIoKTsNCisJCX0NCisJCXJldHVybiBzZXNzaW9uTWFuYWdlci5yZW1vdmVDbGllbnQoc3RyZWFtSWQsIHNlcnZlcik7DQorCX0NCisNCisJcHVibGljIExpc3Q8Q2xpZW50PiBnZXRDbGllbnRMaXN0QnlSb29tKExvbmcgcm9vbV9pZCkgew0KKwkJcmV0dXJuIHNlc3Npb25NYW5hZ2VyLmdldENsaWVudExpc3RCeVJvb20ocm9vbV9pZCk7DQorCX0NCisNCisJcHVibGljIENvbGxlY3Rpb248Q2xpZW50PiBnZXRDbGllbnRMaXN0QnlSb29tQWxsKExvbmcgcm9vbV9pZCkgew0KKwkJcmV0dXJuIHNlc3Npb25NYW5hZ2VyLmdldENsaWVudExpc3RCeVJvb21BbGwocm9vbV9pZCk7DQorCX0NCisNCisJcHVibGljIExpc3Q8Q2xpZW50PiBnZXRDdXJyZW50TW9kZXJhdG9yQnlSb29tKExvbmcgcm9vbV9pZCkgew0KKwkJcmV0dXJuIHNlc3Npb25NYW5hZ2VyLmdldEN1cnJlbnRNb2RlcmF0b3JCeVJvb20ocm9vbV9pZCk7DQorCX0NCisNCisJcHVibGljIFNlYXJjaFJlc3VsdDxDbGllbnQ+IGdldExpc3RCeVN0YXJ0QW5kTWF4KGludCBzdGFydCwgaW50IG1heCwNCisJCQlTdHJpbmcgb3JkZXJieSwgYm9vbGVhbiBhc2MpIHsNCisJCXJldHVybiBzZXNzaW9uTWFuYWdlci5nZXRMaXN0QnlTdGFydEFuZE1heChzdGFydCwgbWF4LCBvcmRlcmJ5LCBhc2MpOw0KKwl9DQorDQorCXB1YmxpYyBsb25nIGdldFJlY29yZGluZ0NvdW50KGxvbmcgcm9vbUlkKSB7DQorCQlyZXR1cm4gc2Vzc2lvbk1hbmFnZXIuZ2V0UmVjb3JkaW5nQ291bnQocm9vbUlkKTsNCisJfQ0KKw0KKwlwdWJsaWMgbG9uZyBnZXRQdWJsaXNoaW5nQ291bnQobG9uZyByb29tSWQpIHsNCisJCXJldHVybiBzZXNzaW9uTWFuYWdlci5nZXRQdWJsaXNoaW5nQ291bnQocm9vbUlkKTsNCisJfQ0KKw0KKwlwdWJsaWMgTGlzdDxMb25nPiBnZXRBY3RpdmVSb29tSWRzQnlTZXJ2ZXIoU2VydmVyIHNlcnZlcikgew0KKwkJcmV0dXJuIHNlc3Npb25NYW5hZ2VyLmdldEFjdGl2ZVJvb21JZHNCeVNlcnZlcihzZXJ2ZXIgPT0gbnVsbCA/IHNlcnZlclV0aWwuZ2V0Q3VycmVudFNlcnZlcigpIDogc2VydmVyKTsNCisJfQ0KKw0KKwlwdWJsaWMgU3RyaW5nIGdldFNlc3Npb25TdGF0aXN0aWNzKCkgew0KKwkJcmV0dXJuIHNlc3Npb25NYW5hZ2VyLmdldFNlc3Npb25TdGF0aXN0aWNzKCk7DQorCX0NCisNCisJcHVibGljIHZvaWQgc2Vzc2lvblN0YXJ0KCkgew0KKwkJc2Vzc2lvbk1hbmFnZXIuc2Vzc2lvblN0YXJ0KCk7DQorCX0NCisJDQorfQ0KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zZXNzaW9uL3N0b3JlL0RhdGFiYXNlU3RvcmUuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zZXNzaW9uL3N0b3JlL0RhdGFiYXNlU3RvcmUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTFmOGU2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Nlc3Npb24vc3RvcmUvRGF0YWJhc2VTdG9yZS5qYXZhCkBAIC0wLDAgKzEsMTM3IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnNlc3Npb24uc3RvcmU7CisKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0OworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOworaW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5NYXA7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLmRhby5TZXJ2ZXJEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jb25mZXJlbmNlLmRhby5DbGllbnREYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuU2VydmVyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnJvb20uQ2xpZW50OworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKKworcHVibGljIGNsYXNzIERhdGFiYXNlU3RvcmUgaW1wbGVtZW50cyBJQ2xpZW50UGVyc2lzdGVuY2VTdG9yZSB7CisJCisJQEF1dG93aXJlZAorCXByaXZhdGUgQ2xpZW50RGFvIGNsaWVudERhbzsKKwkKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBTZXJ2ZXJEYW8gc2VydmVyRGFvOworCQorCXB1YmxpYyB2b2lkIGNsZWFyQ2FjaGUoKSB7CisJCQorCQlMaXN0PFNlcnZlcj4gc2VydmVyTGlzdCA9IHNlcnZlckRhby5nZXRBY3RpdmVTZXJ2ZXJzKCk7CisJCQorCQkvL2NsaWVudERhby5jbGVhblVwQ2xpZW50c1dpdGhvdXRSZWZlcmVuY2UoKTsKKwl9CisJCisJcHVibGljIHZvaWQgcHV0KFN0cmluZyBzdHJlYW1JZCwgQ2xpZW50IHJjbCkgeworCQlpZiAocmNsLmdldElkKCkgPiAwKSB7CisJCQljbGllbnREYW8udXBkYXRlKHJjbCk7CisJCX0gZWxzZSB7CisJCQljbGllbnREYW8uYWRkKHJjbCk7CisJCX0KKwl9CisKKwlwdWJsaWMgYm9vbGVhbiBjb250YWluc0tleShTZXJ2ZXIgc2VydmVyLCBTdHJpbmcgc3RyZWFtSWQpIHsKKwkJcmV0dXJuIGNsaWVudERhby5jb3VudENsaWVudHNCeVNlcnZlckFuZFN0cmVhbUlkKHNlcnZlciwgc3RyZWFtSWQpID4gMDsKKwl9CisKKwlwdWJsaWMgQ2xpZW50IGdldChTZXJ2ZXIgc2VydmVyLCBTdHJpbmcgc3RyZWFtSWQpIHsKKwkJcmV0dXJuIGNsaWVudERhby5nZXRDbGllbnRCeVNlcnZlckFuZFN0cmVhbUlkKHNlcnZlciwgc3RyZWFtSWQpOworCX0KKworCXB1YmxpYyBMaXN0PENsaWVudD4gZ2V0Q2xpZW50c0J5UHVibGljU0lEKFNlcnZlciBzZXJ2ZXIsIFN0cmluZyBwdWJsaWNTSUQpIHsKKwkJcmV0dXJuIGNsaWVudERhby5nZXRDbGllbnRzQnlQdWJsaWNTSURBbmRTZXJ2ZXIoc2VydmVyLCBwdWJsaWNTSUQpOworCX0KKworCXB1YmxpYyBNYXA8TG9uZywgTGlzdDxDbGllbnQ+PiBnZXRDbGllbnRzQnlQdWJsaWNTSUQoU3RyaW5nIHB1YmxpY1NJRCkgeworCQlNYXA8TG9uZywgTGlzdDxDbGllbnQ+PiByZXR1cm5NYXAgPSBuZXcgSGFzaE1hcDxMb25nLCBMaXN0PENsaWVudD4+KCk7CisJCUxpc3Q8Q2xpZW50PiBjbGllbnRMaXN0ID0gY2xpZW50RGFvLmdldENsaWVudHNCeVB1YmxpY1NJRChwdWJsaWNTSUQpOworCQlmb3IgKENsaWVudCBjbCA6IGNsaWVudExpc3QpIHsKKwkJCQorCQkJaWYgKGNsLmdldFNlcnZlcigpID09IG51bGwpIHsKKwkJCQlMaXN0PENsaWVudD4gY2xMaXN0ID0gcmV0dXJuTWFwLmdldChudWxsKTsKKwkJCQlpZiAoY2xMaXN0ID09IG51bGwpIHsKKwkJCQkJY2xMaXN0ID0gbmV3IEFycmF5TGlzdDxDbGllbnQ+KCk7CisJCQkJfQorCQkJCWNsTGlzdC5hZGQoY2wpOworCQkJCXJldHVybk1hcC5wdXQobnVsbCwgY2xMaXN0KTsKKwkJCX0gZWxzZSB7CisJCQkJTGlzdDxDbGllbnQ+IGNsTGlzdCA9IHJldHVybk1hcC5nZXQoY2wuZ2V0U2VydmVyKCkuZ2V0SWQoKSk7CisJCQkJaWYgKGNsTGlzdCA9PSBudWxsKSB7CisJCQkJCWNsTGlzdCA9IG5ldyBBcnJheUxpc3Q8Q2xpZW50PigpOworCQkJCX0KKwkJCQljbExpc3QuYWRkKGNsKTsKKwkJCQlyZXR1cm5NYXAucHV0KGNsLmdldFNlcnZlcigpLmdldElkKCksIGNsTGlzdCk7CisJCQl9CisJCX0KKwkJcmV0dXJuIHJldHVybk1hcDsKKwl9CisJCisJcHVibGljIENvbGxlY3Rpb248Q2xpZW50PiBnZXRDbGllbnRzKCkgeworCQlyZXR1cm4gY2xpZW50RGFvLmdldENsaWVudHMoKTsKKwl9CisJCisJcHVibGljIENvbGxlY3Rpb248Q2xpZW50PiBnZXRDbGllbnRzV2l0aFNlcnZlcigpIHsKKwkJcmV0dXJuIGNsaWVudERhby5nZXRDbGllbnRzV2l0aFNlcnZlcigpOworCX0KKworCXB1YmxpYyBDb2xsZWN0aW9uPENsaWVudD4gZ2V0Q2xpZW50c0J5U2VydmVyKFNlcnZlciBzZXJ2ZXIpIHsKKwkJcmV0dXJuIGNsaWVudERhby5nZXRDbGllbnRzQnlTZXJ2ZXIoc2VydmVyKTsKKwl9CisKKwlwdWJsaWMgTGlzdDxDbGllbnQ+IGdldENsaWVudHNCeVVzZXJJZChTZXJ2ZXIgc2VydmVyLCBMb25nIHVzZXJJZCkgeworCQlyZXR1cm4gY2xpZW50RGFvLmdldENsaWVudHNCeVVzZXJJZChzZXJ2ZXIsIHVzZXJJZCk7CisJfQorCisJcHVibGljIExpc3Q8Q2xpZW50PiBnZXRDbGllbnRzQnlSb29tSWQoTG9uZyByb29tSWQpIHsKKwkJcmV0dXJuIGNsaWVudERhby5nZXRDbGllbnRzQnlSb29tSWQocm9vbUlkKTsKKwl9CisKKwlwdWJsaWMgdm9pZCByZW1vdmUoU2VydmVyIHNlcnZlciwgU3RyaW5nIHN0cmVhbUlkKSB7CisJCWNsaWVudERhby5yZW1vdmVDbGllbnRCeVNlcnZlckFuZFN0cmVhbUlkKHNlcnZlciwgc3RyZWFtSWQpOworCX0KKworCXB1YmxpYyBpbnQgc2l6ZSgpIHsKKwkJcmV0dXJuIGNsaWVudERhby5jb3VudENsaWVudHMoKTsKKwl9CisKKwlwdWJsaWMgaW50IHNpemVCeVNlcnZlcihTZXJ2ZXIgc2VydmVyKSB7CisJCXJldHVybiBjbGllbnREYW8uY291bnRDbGllbnRzQnlTZXJ2ZXIoc2VydmVyKTsKKwl9CisKKwlwdWJsaWMgQ29sbGVjdGlvbjxDbGllbnQ+IHZhbHVlcygpIHsKKwkJcmV0dXJuIGNsaWVudERhby5nZXRDbGllbnRzKCk7CisJfQorCisJcHVibGljIFN0cmluZyBnZXREZWJ1Z0luZm9ybWF0aW9uKExpc3Q8REVCVUdfREVUQUlMUz4gZGV0YWlsTGV2ZWwpIHsKKwkJLy8gVE9ETyBBdXRvLWdlbmVyYXRlZCBtZXRob2Qgc3R1YgorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgTGlzdDxMb25nPiBnZXRSb29tc0lkc0J5U2VydmVyKFNlcnZlciBzZXJ2ZXIpIHsKKwkJcmV0dXJuIGNsaWVudERhby5nZXRSb29tc0lkc0J5U2VydmVyKHNlcnZlcik7CisJfQorCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2Vzc2lvbi9zdG9yZS9IYXNoTWFwU3RvcmUuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zZXNzaW9uL3N0b3JlL0hhc2hNYXBTdG9yZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyZjZkM2IKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvc2Vzc2lvbi9zdG9yZS9IYXNoTWFwU3RvcmUuamF2YQpAQCAtMCwwICsxLDE4OCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5zZXNzaW9uLnN0b3JlOworCitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuQ29sbGVjdGlvbjsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuSGFzaFNldDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlua2VkSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLlNlcnZlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tLkNsaWVudDsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CisKKy8qKgorICogU3RvcmVzIHRoZSBzZXNzaW9uIGluIHRoZSBtZW1vcnkuCisgKiBJcyBOT1QgZGVzaWduZWQgdG8gYmUgY2x1c3RlcmVkIGFjcm9zcyBtdWx0aXBsZSBzZXJ2ZXJzLgorICogCisgKiA8dWw+CisgKiA8bGk+Y2xpZW50IGJ5IHN0cmVhbWlkPC9saT4KKyAqIDxsaT5jbGllbnQgYnkgcHVibGljU0lEPC9saT4KKyAqIDxsaT5jbGllbnQgYnkgdXNlcklkPC9saT4KKyAqIDxsaT5jbGllbnRzIGJ5IHJvb21JZDwvbGk+CisgKiA8bGk+cm9vbUlkcyBieSBzZXJ2ZXI8L2xpPgorICogPC91bD4KKyAqIAorICogQGF1dGhvciBzZWJhd2FnbmVyCisgKiAKKyAqLworcHVibGljIGNsYXNzIEhhc2hNYXBTdG9yZSBpbXBsZW1lbnRzIElDbGllbnRQZXJzaXN0ZW5jZVN0b3JlIHsKKwlwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoCisJCQlIYXNoTWFwU3RvcmUuY2xhc3MsIE9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKwkKKwkKKwlwcml2YXRlIExpbmtlZEhhc2hNYXA8U3RyaW5nLCBDbGllbnQ+IGNsaWVudHNCeVN0cmVhbUlkID0gbmV3IExpbmtlZEhhc2hNYXA8U3RyaW5nLCBDbGllbnQ+KCk7CisKKwlwdWJsaWMgdm9pZCBjbGVhckNhY2hlKCkgeworCQkvLyBOb3RoaW5nIHRvZG8gaGVyZQorCX0KKwkKKwlwdWJsaWMgdm9pZCBwdXQoU3RyaW5nIHN0cmVhbUlkLCBDbGllbnQgcmNsKSB7CisJCWNsaWVudHNCeVN0cmVhbUlkLnB1dChyY2wuZ2V0U3RyZWFtaWQoKSwgcmNsKTsKKwl9CisKKwlwdWJsaWMgYm9vbGVhbiBjb250YWluc0tleShTZXJ2ZXIgc2VydmVyLCBTdHJpbmcgc3RyZWFtSWQpIHsKKwkJcmV0dXJuIGNsaWVudHNCeVN0cmVhbUlkLmNvbnRhaW5zS2V5KHN0cmVhbUlkKTsKKwl9CisKKwlwdWJsaWMgQ2xpZW50IGdldChTZXJ2ZXIgc2VydmVyLCBTdHJpbmcgc3RyZWFtSWQpIHsKKwkJcmV0dXJuIGNsaWVudHNCeVN0cmVhbUlkLmdldChzdHJlYW1JZCk7CisJfQorCQorCXB1YmxpYyBMaXN0PENsaWVudD4gZ2V0Q2xpZW50c0J5UHVibGljU0lEKFNlcnZlciBzZXJ2ZXIsIFN0cmluZyBwdWJsaWNTSUQpIHsKKwkJTGlzdDxDbGllbnQ+IGNsaWVudExpc3QgPSBuZXcgQXJyYXlMaXN0PENsaWVudD4oKTsKKwkJZm9yIChDbGllbnQgY2wgOiBjbGllbnRzQnlTdHJlYW1JZC52YWx1ZXMoKSkgeworCQkJaWYgKGNsLmdldFB1YmxpY1NJRCgpLmVxdWFscyhwdWJsaWNTSUQpKSB7CisJCQkJY2xpZW50TGlzdC5hZGQoY2wpOworCQkJfQorCQl9CisJCXJldHVybiBjbGllbnRMaXN0OworCX0KKwkKKwlwdWJsaWMgTWFwPExvbmcsTGlzdDxDbGllbnQ+PiBnZXRDbGllbnRzQnlQdWJsaWNTSUQoU3RyaW5nIHB1YmxpY1NJRCkgeworCQlNYXA8TG9uZyxMaXN0PENsaWVudD4+IGNsaWVudE1hcExpc3QgPSBuZXcgSGFzaE1hcDxMb25nLExpc3Q8Q2xpZW50Pj4oKTsKKwkJTGlzdDxDbGllbnQ+IGNsaWVudExpc3QgPSBuZXcgQXJyYXlMaXN0PENsaWVudD4oKTsKKwkJZm9yIChDbGllbnQgY2wgOiBjbGllbnRzQnlTdHJlYW1JZC52YWx1ZXMoKSkgeworCQkJaWYgKGNsLmdldFB1YmxpY1NJRCgpLmVxdWFscyhwdWJsaWNTSUQpKSB7CisJCQkJY2xpZW50TGlzdC5hZGQoY2wpOworCQkJfQorCQl9CisJCWNsaWVudE1hcExpc3QucHV0KG51bGwsIGNsaWVudExpc3QpOworCQlyZXR1cm4gY2xpZW50TWFwTGlzdDsKKwl9CisJCisJcHVibGljIENvbGxlY3Rpb248Q2xpZW50PiBnZXRDbGllbnRzKCkgeworCQlyZXR1cm4gY2xpZW50c0J5U3RyZWFtSWQudmFsdWVzKCk7CisJfQorCQorCXB1YmxpYyBDb2xsZWN0aW9uPENsaWVudD4gZ2V0Q2xpZW50c1dpdGhTZXJ2ZXIoKSB7CisJCS8vdGhlcmUgaXMgbm8gc2VydmVyIG9iamVjdCB0byBiZSBsb2FkZWQsIG1lbW9yeSBjYWNoZSBtZWFucworCQkvL3RoZXJlIGlzIG5vIGNsdXN0ZXIgZW5hYmxlZAorCQlyZXR1cm4gZ2V0Q2xpZW50cygpOworCX0KKwkKKwlwdWJsaWMgQ29sbGVjdGlvbjxDbGllbnQ+IGdldENsaWVudHNCeVNlcnZlcihTZXJ2ZXIgc2VydmVyKSB7CisJCXJldHVybiBjbGllbnRzQnlTdHJlYW1JZC52YWx1ZXMoKTsKKwl9CisJCisJcHVibGljIExpc3Q8Q2xpZW50PiBnZXRDbGllbnRzQnlVc2VySWQoU2VydmVyIHNlcnZlciwgTG9uZyB1c2VySWQpIHsKKwkJTGlzdDxDbGllbnQ+IGNsaWVudExpc3QgPSBuZXcgQXJyYXlMaXN0PENsaWVudD4oKTsKKwkJZm9yIChDbGllbnQgY2wgOiBjbGllbnRzQnlTdHJlYW1JZC52YWx1ZXMoKSkgeworCQkJaWYgKGNsLmdldFVzZXJfaWQoKS5lcXVhbHModXNlcklkKSkgeworCQkJCWNsaWVudExpc3QuYWRkKGNsKTsKKwkJCX0KKwkJfQorCQlyZXR1cm4gY2xpZW50TGlzdDsKKwl9CisJCisJcHVibGljICBMaXN0PENsaWVudD4gZ2V0Q2xpZW50c0J5Um9vbUlkKExvbmcgcm9vbUlkKSB7CisJCUxpc3Q8Q2xpZW50PiBjbGllbnRMaXN0ID0gbmV3IEFycmF5TGlzdDxDbGllbnQ+KCk7CisJCWZvciAoQ2xpZW50IGNsIDogY2xpZW50c0J5U3RyZWFtSWQudmFsdWVzKCkpIHsKKwkJCWlmIChjbC5nZXRSb29tX2lkKCkgIT0gbnVsbCAmJiBjbC5nZXRSb29tX2lkKCkuZXF1YWxzKHJvb21JZCkpIHsKKwkJCQljbGllbnRMaXN0LmFkZChjbCk7CisJCQl9CisJCX0KKwkJcmV0dXJuIGNsaWVudExpc3Q7CisJfQorCisJcHVibGljIHZvaWQgcmVtb3ZlKFNlcnZlciBzZXJ2ZXIsIFN0cmluZyBzdHJlYW1JZCkgeworCQljbGllbnRzQnlTdHJlYW1JZC5yZW1vdmUoc3RyZWFtSWQpOworCX0KKworCXB1YmxpYyBpbnQgc2l6ZSgpIHsKKwkJcmV0dXJuIGNsaWVudHNCeVN0cmVhbUlkLnNpemUoKTsKKwl9CisJCisJcHVibGljIGludCBzaXplQnlTZXJ2ZXIoU2VydmVyIHNlcnZlcikgeworCQlyZXR1cm4gY2xpZW50c0J5U3RyZWFtSWQuc2l6ZSgpOworCX0KKworCXB1YmxpYyBDb2xsZWN0aW9uPENsaWVudD4gdmFsdWVzKCkgeworCQlyZXR1cm4gY2xpZW50c0J5U3RyZWFtSWQudmFsdWVzKCk7CisJfQorCQorCXB1YmxpYyBpbnQgZ2V0VG90YWxOdW1iZXJPZlNlc3Npb25zKCkgeworCQlyZXR1cm4gY2xpZW50c0J5U3RyZWFtSWQuc2l6ZSgpOworCX0KKwkKKwkKKwkvKioKKwkgKiBQcmludCBzb21lIHNlc3Npb24gc3RhdGlzdGljcyB0byB0aGUgZGVidWcgb3V0CisJICogCisJICogQHBhcmFtIGRldGFpbExldmVsCisJICovCisJcHVibGljIHZvaWQgcHJpbnREZWJ1Z0luZm9ybWF0aW9uKExpc3Q8REVCVUdfREVUQUlMUz4gZGV0YWlsTGV2ZWwpIHsKKwkJbG9nLmRlYnVnKCJTZXNzaW9uIFN0YXRpc3RpY3MgU3RhcnQgIyMjIyMjIyMjIyMjIyMjIyMjICIpOworCQlsb2cuZGVidWcoZ2V0RGVidWdJbmZvcm1hdGlvbihkZXRhaWxMZXZlbCkpOworCQlsb2cuZGVidWcoIlNlc3Npb24gU3RhdGlzdGljcyBFbmQgIyMjIyMjIyMjIyMjIyMjIyMjICIpOworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0RGVidWdJbmZvcm1hdGlvbihMaXN0PERFQlVHX0RFVEFJTFM+IGRldGFpbExldmVsKSB7CisKKwkJU3RyaW5nQnVpbGRlciBzdGF0aXN0aWNzID0gbmV3IFN0cmluZ0J1aWxkZXIoKTsKKworCQlpZiAoZGV0YWlsTGV2ZWwuY29udGFpbnMoREVCVUdfREVUQUlMUy5TSVpFKSkgeworCQkJYWRkTmV3TGluZShzdGF0aXN0aWNzLCAiTnVtYmVyIG9mIHNlc3Npb25zIFRvdGFsICIKKwkJCQkJKyBnZXRUb3RhbE51bWJlck9mU2Vzc2lvbnMoKSk7CisJCX0KKworCQlyZXR1cm4gc3RhdGlzdGljcy50b1N0cmluZygpOworCX0KKworCXByaXZhdGUgdm9pZCBhZGROZXdMaW5lKFN0cmluZ0J1aWxkZXIgc3RyQnVpbGRlciwgU3RyaW5nIG1lc3NhZ2UpIHsKKwkJc3RyQnVpbGRlci5hcHBlbmQobWVzc2FnZSArICJcblxyIik7CisJfQorCisJcHVibGljIExpc3Q8TG9uZz4gZ2V0Um9vbXNJZHNCeVNlcnZlcihTZXJ2ZXIgc2VydmVyKSB7CisJCUhhc2hTZXQ8TG9uZz4gcm9vbXMgPSBuZXcgSGFzaFNldDxMb25nPigpOworCQlmb3IgKENsaWVudCBjbCA6IGNsaWVudHNCeVN0cmVhbUlkLnZhbHVlcygpKSB7CisJCQlMb25nIHJvb21JZCA9IGNsLmdldFJvb21faWQoKTsKKwkJCWlmIChyb29tSWQgIT0gbnVsbCAmJiByb29tSWQgPiAwICYmICFyb29tcy5jb250YWlucyhyb29tSWQpKSB7CisJCQkJcm9vbXMuYWRkKHJvb21JZCk7CisJCQl9CisJCX0KKwkJcmV0dXJuIG5ldyBBcnJheUxpc3Q8TG9uZz4ocm9vbXMpOworCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Nlc3Npb24vc3RvcmUvSUNsaWVudFBlcnNpc3RlbmNlU3RvcmUuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zZXNzaW9uL3N0b3JlL0lDbGllbnRQZXJzaXN0ZW5jZVN0b3JlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzY4ZmQ4OQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy9zZXNzaW9uL3N0b3JlL0lDbGllbnRQZXJzaXN0ZW5jZVN0b3JlLmphdmEKQEAgLTAsMCArMSwxNDIgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2Vzc2lvbi5zdG9yZTsKKworaW1wb3J0IGphdmEudXRpbC5Db2xsZWN0aW9uOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworaW1wb3J0IGphdmEudXRpbC5NYXA7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5TZXJ2ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbS5DbGllbnQ7CisKK3B1YmxpYyBpbnRlcmZhY2UgSUNsaWVudFBlcnNpc3RlbmNlU3RvcmUgeworCisJcHVibGljIGVudW0gREVCVUdfREVUQUlMUyB7CisJCVNJWkUKKwl9CisJCisJLyoqCisJICogY2FsbGVkIHVwb24gc3RhcnQgb2YgdGhlIHNlc3Npb24gY2FjaGUKKwkgKi8KKwlwdWJsaWMgYWJzdHJhY3Qgdm9pZCBjbGVhckNhY2hlKCk7CisKKwkvKioKKwkgKiAKKwkgKiBAcGFyYW0gc3RyZWFtSWQKKwkgKiBAcGFyYW0gcmNsCisJICovCisJcHVibGljIGFic3RyYWN0IHZvaWQgcHV0KFN0cmluZyBzdHJlYW1JZCwgQ2xpZW50IHJjbCk7CisJCisJLyoqCisJICogCisJICogQHBhcmFtIHNlcnZlcgorCSAqIEBwYXJhbSBzdHJlYW1JZAorCSAqIEByZXR1cm4KKwkgKi8KKwlwdWJsaWMgYm9vbGVhbiBjb250YWluc0tleShTZXJ2ZXIgc2VydmVyLCBTdHJpbmcgc3RyZWFtSWQpOworCisJLyoqCisJICogYnkgc2VydmVyIGFuZCBwdWJsaWNTSUQKKwkgKiAKKwkgKiBAcGFyYW0gc2VydmVyCisJICogQHBhcmFtIHN0cmVhbUlkCisJICogQHJldHVybiB3aWxsIHJldHVybiBudWxsIGlmIHRoZSBjbGllbnQgZG9lcyBub3QgZXhpc3QgaW4gdGhlIGxpc3QKKwkgKi8KKwlwdWJsaWMgYWJzdHJhY3QgQ2xpZW50IGdldChTZXJ2ZXIgc2VydmVyLCBTdHJpbmcgc3RyZWFtSWQpOworCisJLyoqCisJICogCisJICogQHBhcmFtIHNlcnZlcgorCSAqIEBwYXJhbSBwdWJsaWNTSUQKKwkgKiBAcmV0dXJuIHdpbGwgcmV0dXJuIGFuIGVtcHR5IGxpc3QgaWYgbm90aGluZyBhdmFpbGFibGUKKwkgKi8KKwlwdWJsaWMgYWJzdHJhY3QgTGlzdDxDbGllbnQ+IGdldENsaWVudHNCeVB1YmxpY1NJRChTZXJ2ZXIgc2VydmVyLAorCQkJU3RyaW5nIHB1YmxpY1NJRCk7CisKKwkvKioKKwkgKiBTZWFyY2hlcyBmb3IgdGhlIHB1YmxpY1NJRCBhY3Jvc3MgYWxsIHNlcnZlcnMKKwkgKiAKKwkgKiBAcGFyYW0gcHVibGljU0lECisJICogQHJldHVybiB3aWxsIHJldHVybiBhIG1hcCB3aXRoIHRoZSBzZXJ2ZXJJZCBhcyBrZXkgYW5kIHRoZSBSb29tQ2xpZW50cyBhcyBsaXN0IGluIHRoZSB2YWx1ZQorCSAqLworCXB1YmxpYyBhYnN0cmFjdCBNYXA8TG9uZywgTGlzdDxDbGllbnQ+PiBnZXRDbGllbnRzQnlQdWJsaWNTSUQoCisJCQlTdHJpbmcgcHVibGljU0lEKTsKKworCXB1YmxpYyBhYnN0cmFjdCBDb2xsZWN0aW9uPENsaWVudD4gZ2V0Q2xpZW50cygpOworCQorCS8qKgorCSAqIGdldCBhbGwgY2xpZW50cyBieSBhIHNwZWNpZmljIHtAbGluayBTZXJ2ZXJ9CisJICogCisJICogQHBhcmFtIHNlcnZlcgorCSAqIEByZXR1cm4gd2lsbCByZXR1cm4gYW4gZW1wdHkgbWFwIGlmIG5vdGhpbmcgYXZhaWxhYmxlCisJICovCisJcHVibGljIGFic3RyYWN0IENvbGxlY3Rpb248Q2xpZW50PiBnZXRDbGllbnRzQnlTZXJ2ZXIoU2VydmVyIHNlcnZlcik7CisKKwkvKioKKwkgKiAKKwkgKiBAcGFyYW0gc2VydmVyCisJICogQHBhcmFtIHVzZXJJZAorCSAqIEByZXR1cm4gd2lsbCByZXR1cm4gYW4gZW1wdHkgbGlzdCBpZiBub3RoaW5nIGF2YWlsYWJsZQorCSAqLworCXB1YmxpYyBhYnN0cmFjdCBDb2xsZWN0aW9uPENsaWVudD4gZ2V0Q2xpZW50c0J5VXNlcklkKFNlcnZlciBzZXJ2ZXIsIExvbmcgdXNlcklkKTsKKworCS8qKgorCSAqIAorCSAqIFdlIGlnbm9yZSB0aGUgc2VydmVyIGhlcmUsIGNhdXNlIE9ORSByb29tIGNhbiBvbmx5IGJlIG9uIE9ORSBzZXJ2ZXIgYW5kIG9mdGVuIHdlIGRvbid0IGtub3cgd2hlcmUuCisJICogCisJICogQHBhcmFtIHJvb21JZAorCSAqIEByZXR1cm4gd2lsbCByZXR1cm4gYW4gZW1wdHkgbWFwIGlmIG5vdGhpbmcgYXZhaWxhYmxlCisJICovCisJcHVibGljIGFic3RyYWN0IExpc3Q8Q2xpZW50PiBnZXRDbGllbnRzQnlSb29tSWQoTG9uZyByb29tSWQpOworCisJcHVibGljIGFic3RyYWN0IHZvaWQgcmVtb3ZlKFNlcnZlciBzZXJ2ZXIsIFN0cmluZyBzdHJlYW1JZCk7CisKKwlwdWJsaWMgYWJzdHJhY3QgaW50IHNpemUoKTsKKworCXB1YmxpYyBhYnN0cmFjdCBpbnQgc2l6ZUJ5U2VydmVyKFNlcnZlciBzZXJ2ZXIpOworCisJcHVibGljIGFic3RyYWN0IENvbGxlY3Rpb248Q2xpZW50PiB2YWx1ZXMoKTsKKwkKKwkvKioKKwkgKiBHZXQgc29tZSBzZXNzaW9uIHN0YXRpc3RpY3MKKwkgKiAKKwkgKiBAcGFyYW0gZGV0YWlsTGV2ZWwKKwkgKiBAcmV0dXJuCisJICovCisJcHVibGljIGFic3RyYWN0IFN0cmluZyBnZXREZWJ1Z0luZm9ybWF0aW9uKExpc3Q8REVCVUdfREVUQUlMUz4gZGV0YWlsTGV2ZWwpOworCisJLyoqCisJICogcmV0dXJucyBhIGxpc3Qgb2Ygcm9vbUlkcyAodW5pcXVlKSB0aGF0IGFyZSBjdXJyZW50bHkgYWN0aXZlIG9uIHRoZSBnaXZlbiBzZXJ2ZXIKKwkgKiBJbiBjYXNlIHRoZSBzZXNzaW9uIGlzIHN0b3JlZCBpbiB0aGUgbWVtb3J5IChuby1jbHVzdGVyIHNldHVwKSBpdCB3aWxsIGFsd2F5cyAKKwkgKiByZXR1cm4gc2ltcGx5IGFsbCBhY3RpdmUgcm9vbUlkcworCSAqIAorCSAqIEBwYXJhbSBzZXJ2ZXIKKwkgKiBAcmV0dXJuCisJICovCisJcHVibGljIGFic3RyYWN0IExpc3Q8TG9uZz4gZ2V0Um9vbXNJZHNCeVNlcnZlcihTZXJ2ZXIgc2VydmVyKTsKKworCS8qKgorCSAqIGlmIGRhdGFiYXNlIGNhY2hlICsgY2x1c3RlciBpcyBlbmFibGVkLCB0aGUgc2VydmVyIG9iamVjdCB3aWxsIGJlIGxvYWRlZCAKKwkgKiBpbnRvIHRoZSBjbGllbnQKKwkgKiAKKwkgKiBAcmV0dXJuCisJICovCisJcHVibGljIGFic3RyYWN0IENvbGxlY3Rpb248Q2xpZW50PiBnZXRDbGllbnRzV2l0aFNlcnZlcigpOworCit9ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3RlbXBsYXRlcy9GZWVkYmFja1RlbXBsYXRlLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVtcGxhdGVzL0ZlZWRiYWNrVGVtcGxhdGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYzFiNWI3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3RlbXBsYXRlcy9GZWVkYmFja1RlbXBsYXRlLmphdmEKQEAgLTAsMCArMSw2NyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy50ZW1wbGF0ZXM7CisKK2ltcG9ydCBqYXZhLmlvLlN0cmluZ1dyaXRlcjsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsKK2ltcG9ydCBvcmcuYXBhY2hlLnZlbG9jaXR5LlZlbG9jaXR5Q29udGV4dDsKK2ltcG9ydCBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC5WZWxvY2l0eTsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CisKK3B1YmxpYyBjbGFzcyBGZWVkYmFja1RlbXBsYXRlIGV4dGVuZHMgVmVsb2NpdHlMb2FkZXIgeworCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIHRlbXBsYXRlTmFtZSA9ICJmZWVkYmFjay52bSI7CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKAorCQkJRmVlZGJhY2tUZW1wbGF0ZS5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCisJcHVibGljIFN0cmluZyBnZXRGZWVkQmFja1RlbXBsYXRlKFN0cmluZyB1c2VybmFtZSwgU3RyaW5nIGVtYWlsLAorCQkJU3RyaW5nIG1lc3NhZ2UsIGxvbmcgZGVmYXVsdF9sYW5nX2lkKSB7CisJCXRyeSB7CisKKwkJCXN1cGVyLmluaXQoKTsKKworCQkJLy8gVE9ETzogRmluaXNoIEZlZWRiYWNrIC0gVGVtcGxhdGUKKwkJCS8vIFN0cmluZyBmVmFsdWUgPQorCQkJLy8gZmllbGRtYW5hZ21lbnQuZ2V0U3RyaW5nKDQ5OUwsIGRlZmF1bHRfbGFuZ19pZCk7CisKKwkJCS8qIGxldHMgbWFrZSBhIENvbnRleHQgYW5kIHB1dCBkYXRhIGludG8gaXQgKi8KKworCQkJVmVsb2NpdHlDb250ZXh0IGNvbnRleHQgPSBuZXcgVmVsb2NpdHlDb250ZXh0KCk7CisKKwkJCWNvbnRleHQucHV0KCJ1c2VybmFtZSIsIHVzZXJuYW1lKTsKKwkJCWNvbnRleHQucHV0KCJlbWFpbCIsIGVtYWlsKTsKKwkJCWNvbnRleHQucHV0KCJtZXNzYWdlIiwgbWVzc2FnZSk7CisKKwkJCS8qIGxldHMgcmVuZGVyIGEgdGVtcGxhdGUgKi8KKworCQkJU3RyaW5nV3JpdGVyIHcgPSBuZXcgU3RyaW5nV3JpdGVyKCk7CisJCQlWZWxvY2l0eS5tZXJnZVRlbXBsYXRlKHRlbXBsYXRlTmFtZSwgIlVURi04IiwgY29udGV4dCwgdyk7CisKKwkJCXJldHVybiB3LnRvU3RyaW5nKCk7CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCWxvZy5lcnJvcigiUHJvYmxlbSBtZXJnaW5nIHRlbXBsYXRlIDogIiwgZSk7CisJCQkvLyBTeXN0ZW0ub3V0LnByaW50bG4oIlByb2JsZW0gbWVyZ2luZyB0ZW1wbGF0ZSA6ICIgKyBlICk7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3RlbXBsYXRlcy9JbnZpdGF0aW9uVGVtcGxhdGUuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZW1wbGF0ZXMvSW52aXRhdGlvblRlbXBsYXRlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTcyMzk3NgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZW1wbGF0ZXMvSW52aXRhdGlvblRlbXBsYXRlLmphdmEKQEAgLTAsMCArMSwxNTMgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudGVtcGxhdGVzOworCitpbXBvcnQgamF2YS5pby5TdHJpbmdXcml0ZXI7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5GaWVsZE1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5kYW8uQ29uZmlndXJhdGlvbkRhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5sYW5nLkZpZWxkbGFuZ3VhZ2VzdmFsdWVzOworaW1wb3J0IG9yZy5hcGFjaGUudmVsb2NpdHkuVmVsb2NpdHlDb250ZXh0OworaW1wb3J0IG9yZy5hcGFjaGUudmVsb2NpdHkuYXBwLlZlbG9jaXR5OworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5BdXRvd2lyZWQ7CisKK3B1YmxpYyBjbGFzcyBJbnZpdGF0aW9uVGVtcGxhdGUgZXh0ZW5kcyBWZWxvY2l0eUxvYWRlciB7CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgdGVtcGxhdGVOYW1lID0gImludml0YXRpb24udm0iOworCisJQEF1dG93aXJlZAorCXByaXZhdGUgRmllbGRNYW5hZ2VyIGZpZWxkTWFuYWdlcjsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBDb25maWd1cmF0aW9uRGFvIGNvbmZpZ3VyYXRpb25EYW87CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKAorCQkJSW52aXRhdGlvblRlbXBsYXRlLmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisKKwlwdWJsaWMgU3RyaW5nIGdldFJlZ2lzdGVySW52aXRhdGlvblRlbXBsYXRlKFN0cmluZyB1c2VyLCBTdHJpbmcgbWVzc2FnZSwKKwkJCVN0cmluZyBpbnZpdGF0aW9uX2xpbmssIExvbmcgZGVmYXVsdF9sYW5nX2lkLCBEYXRlIGRTdGFydCwgRGF0ZSBkRW5kKSB7CisJCXRyeSB7CisKKwkJCXN1cGVyLmluaXQoKTsKKworCQkJRmllbGRsYW5ndWFnZXN2YWx1ZXMgbGFiZWxpZDUwMSA9IGZpZWxkTWFuYWdlcgorCQkJCQkuZ2V0RmllbGRCeUlkQW5kTGFuZ3VhZ2UobmV3IExvbmcoNTAxKSwgZGVmYXVsdF9sYW5nX2lkKTsKKwkJCUZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGxhYmVsaWQ1MDIgPSBmaWVsZE1hbmFnZXIKKwkJCQkJLmdldEZpZWxkQnlJZEFuZExhbmd1YWdlKG5ldyBMb25nKDUwMiksIGRlZmF1bHRfbGFuZ19pZCk7CisJCQlGaWVsZGxhbmd1YWdlc3ZhbHVlcyBsYWJlbGlkNTAzID0gZmllbGRNYW5hZ2VyCisJCQkJCS5nZXRGaWVsZEJ5SWRBbmRMYW5ndWFnZShuZXcgTG9uZyg1MDMpLCBkZWZhdWx0X2xhbmdfaWQpOworCQkJRmllbGRsYW5ndWFnZXN2YWx1ZXMgbGFiZWxpZDUwNCA9IGZpZWxkTWFuYWdlcgorCQkJCQkuZ2V0RmllbGRCeUlkQW5kTGFuZ3VhZ2UobmV3IExvbmcoNTA0KSwgZGVmYXVsdF9sYW5nX2lkKTsKKwkJCUZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGxhYmVsaWQ1MDUgPSBmaWVsZE1hbmFnZXIKKwkJCQkJLmdldEZpZWxkQnlJZEFuZExhbmd1YWdlKG5ldyBMb25nKDUwNSksIGRlZmF1bHRfbGFuZ19pZCk7CisJCQkvLyBGaWVsZGxhbmd1YWdlc3ZhbHVlcyBsYWJlbGlkNTcwID0KKwkJCS8vIGZpZWxkbWFuYWdtZW50LmdldEZpZWxkQnlJZEFuZExhbmd1YWdlKG5ldyBMb25nKDU3MCksCisJCQkvLyBkZWZhdWx0X2xhbmdfaWQpOworCQkJLy8gRmllbGRsYW5ndWFnZXN2YWx1ZXMgbGFiZWxpZDU3MSA9CisJCQkvLyBmaWVsZG1hbmFnbWVudC5nZXRGaWVsZEJ5SWRBbmRMYW5ndWFnZShuZXcgTG9uZyg1NzEpLAorCQkJLy8gZGVmYXVsdF9sYW5nX2lkKTsKKworCQkJLyogbGV0cyBtYWtlIGEgQ29udGV4dCBhbmQgcHV0IGRhdGEgaW50byBpdCAqLworCQkJVmVsb2NpdHlDb250ZXh0IGNvbnRleHQgPSBuZXcgVmVsb2NpdHlDb250ZXh0KCk7CisKKwkJCWNvbnRleHQucHV0KCJ1c2VyIiwgdXNlcik7CisJCQljb250ZXh0LnB1dCgibWVzc2FnZSIsIG1lc3NhZ2UpOworCQkJY29udGV4dC5wdXQoImludml0YXRpb25fbGluayIsIGludml0YXRpb25fbGluayk7CisJCQljb250ZXh0LnB1dCgiaW52aXRhdGlvbl9saW5rMiIsIGludml0YXRpb25fbGluayk7CisKKwkJCWNvbnRleHQucHV0KCJsYWJlbGlkNTAwIiwgZmllbGRNYW5hZ2VyLmdldFN0cmluZyg1MDBMLCBkZWZhdWx0X2xhbmdfaWQpKTsKKwkJCWNvbnRleHQucHV0KCJsYWJlbGlkNTAxIiwgbGFiZWxpZDUwMS5nZXRWYWx1ZSgpKTsKKwkJCWNvbnRleHQucHV0KCJsYWJlbGlkNTAyIiwgbGFiZWxpZDUwMi5nZXRWYWx1ZSgpKTsKKwkJCWNvbnRleHQucHV0KCJsYWJlbGlkNTAzIiwgbGFiZWxpZDUwMy5nZXRWYWx1ZSgpKTsKKwkJCWNvbnRleHQucHV0KCJsYWJlbGlkNTA0IiwgbGFiZWxpZDUwNC5nZXRWYWx1ZSgpKTsKKwkJCWNvbnRleHQucHV0KCJsYWJlbGlkNTA1IiwgbGFiZWxpZDUwNS5nZXRWYWx1ZSgpKTsKKwkJCWNvbnRleHQucHV0KCJBUFBfTkFNRSIsIGNvbmZpZ3VyYXRpb25EYW8uZ2V0QXBwTmFtZSgpKTsKKworCisJCQkvKiBsZXRzIHJlbmRlciBhIHRlbXBsYXRlICovCisJCQlTdHJpbmdXcml0ZXIgdyA9IG5ldyBTdHJpbmdXcml0ZXIoKTsKKwkJCVZlbG9jaXR5Lm1lcmdlVGVtcGxhdGUodGVtcGxhdGVOYW1lLCAiVVRGLTgiLCBjb250ZXh0LCB3KTsKKworCQkJcmV0dXJuIHcudG9TdHJpbmcoKTsKKworCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJbG9nLmVycm9yKCJQcm9ibGVtIG1lcmdpbmcgdGVtcGxhdGUgOiAiLCBlKTsKKwkJCS8vIFN5c3RlbS5vdXQucHJpbnRsbigiUHJvYmxlbSBtZXJnaW5nIHRlbXBsYXRlIDogIiArIGUgKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwkvKioKKwkgKiAKKwkgKiBAcGFyYW0gdXNlcgorCSAqIEBwYXJhbSBtZXNzYWdlCisJICogQHBhcmFtIGludml0YXRpb25fbGluaworCSAqIEBwYXJhbSBkZWZhdWx0X2xhbmdfaWQKKwkgKiBAcmV0dXJuCisJICovCisJcHVibGljIFN0cmluZyBnZXRSZW1pbmRlckludml0YXRpb25UZW1wbGF0ZShTdHJpbmcgdXNlciwgU3RyaW5nIG1lc3NhZ2UsCisJCQlTdHJpbmcgaW52aXRhdGlvbl9saW5rLCBMb25nIGRlZmF1bHRfbGFuZ19pZCkgeworCisJCXRyeSB7CisKKwkJCXN1cGVyLmluaXQoKTsKKworCQkJRmllbGRsYW5ndWFnZXN2YWx1ZXMgbGFiZWxpZDYyMyA9IGZpZWxkTWFuYWdlcgorCQkJCQkuZ2V0RmllbGRCeUlkQW5kTGFuZ3VhZ2UobmV3IExvbmcoNjIzKSwgZGVmYXVsdF9sYW5nX2lkKTsKKwkJCUZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGxhYmVsaWQ2MjQgPSBmaWVsZE1hbmFnZXIKKwkJCQkJLmdldEZpZWxkQnlJZEFuZExhbmd1YWdlKG5ldyBMb25nKDYyNCksIGRlZmF1bHRfbGFuZ19pZCk7CisJCQlGaWVsZGxhbmd1YWdlc3ZhbHVlcyBsYWJlbGlkNjI1ID0gZmllbGRNYW5hZ2VyCisJCQkJCS5nZXRGaWVsZEJ5SWRBbmRMYW5ndWFnZShuZXcgTG9uZyg2MjUpLCBkZWZhdWx0X2xhbmdfaWQpOworCQkJRmllbGRsYW5ndWFnZXN2YWx1ZXMgbGFiZWxpZDYyNiA9IGZpZWxkTWFuYWdlcgorCQkJCQkuZ2V0RmllbGRCeUlkQW5kTGFuZ3VhZ2UobmV3IExvbmcoNjI2KSwgZGVmYXVsdF9sYW5nX2lkKTsKKwkJCUZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGxhYmVsaWQ2MjcgPSBmaWVsZE1hbmFnZXIKKwkJCQkJLmdldEZpZWxkQnlJZEFuZExhbmd1YWdlKG5ldyBMb25nKDYyNyksIGRlZmF1bHRfbGFuZ19pZCk7CisKKwkJCS8qIGxldHMgbWFrZSBhIENvbnRleHQgYW5kIHB1dCBkYXRhIGludG8gaXQgKi8KKwkJCVZlbG9jaXR5Q29udGV4dCBjb250ZXh0ID0gbmV3IFZlbG9jaXR5Q29udGV4dCgpOworCisJCQljb250ZXh0LnB1dCgidXNlciIsIHVzZXIpOworCQkJY29udGV4dC5wdXQoIm1lc3NhZ2UiLCBtZXNzYWdlKTsKKwkJCWNvbnRleHQucHV0KCJpbnZpdGF0aW9uX2xpbmsiLCBpbnZpdGF0aW9uX2xpbmspOworCQkJY29udGV4dC5wdXQoImludml0YXRpb25fbGluazIiLCBpbnZpdGF0aW9uX2xpbmspOworCQkJY29udGV4dC5wdXQoImxhYmVsaWQ1MDAiLCBmaWVsZE1hbmFnZXIuZ2V0U3RyaW5nKDYyMkwsIGRlZmF1bHRfbGFuZ19pZCkpOworCQkJY29udGV4dC5wdXQoImxhYmVsaWQ1MDEiLCBsYWJlbGlkNjIzLmdldFZhbHVlKCkpOworCQkJY29udGV4dC5wdXQoImxhYmVsaWQ1MDIiLCBsYWJlbGlkNjI0LmdldFZhbHVlKCkpOworCQkJY29udGV4dC5wdXQoImxhYmVsaWQ1MDMiLCBsYWJlbGlkNjI1LmdldFZhbHVlKCkpOworCQkJY29udGV4dC5wdXQoImxhYmVsaWQ1MDQiLCBsYWJlbGlkNjI2LmdldFZhbHVlKCkpOworCQkJY29udGV4dC5wdXQoImxhYmVsaWQ1MDUiLCBsYWJlbGlkNjI3LmdldFZhbHVlKCkpOworCQkJY29udGV4dC5wdXQoIkFQUF9OQU1FIiwgY29uZmlndXJhdGlvbkRhby5nZXRBcHBOYW1lKCkpOworCisJCQkvKiBsZXRzIHJlbmRlciBhIHRlbXBsYXRlICovCisJCQlTdHJpbmdXcml0ZXIgdyA9IG5ldyBTdHJpbmdXcml0ZXIoKTsKKwkJCVZlbG9jaXR5Lm1lcmdlVGVtcGxhdGUodGVtcGxhdGVOYW1lLCAiVVRGLTgiLCBjb250ZXh0LCB3KTsKKworCQkJcmV0dXJuIHcudG9TdHJpbmcoKTsKKworCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJbG9nLmVycm9yKCJQcm9ibGVtIG1lcmdpbmcgdGVtcGxhdGUgOiAiLCBlKTsKKwkJCS8vIFN5c3RlbS5vdXQucHJpbnRsbigiUHJvYmxlbSBtZXJnaW5nIHRlbXBsYXRlIDogIiArIGUgKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZW1wbGF0ZXMvUmVnaXN0ZXJVc2VyVGVtcGxhdGUuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZW1wbGF0ZXMvUmVnaXN0ZXJVc2VyVGVtcGxhdGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMWExOWM5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3RlbXBsYXRlcy9SZWdpc3RlclVzZXJUZW1wbGF0ZS5qYXZhCkBAIC0wLDAgKzEsMTQwIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnRlbXBsYXRlczsKKworaW1wb3J0IGphdmEuaW8uU3RyaW5nV3JpdGVyOworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuRmllbGRNYW5hZ2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmxhbmcuRmllbGRsYW5ndWFnZXN2YWx1ZXM7CitpbXBvcnQgb3JnLmFwYWNoZS52ZWxvY2l0eS5WZWxvY2l0eUNvbnRleHQ7CitpbXBvcnQgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAuVmVsb2NpdHk7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKKworcHVibGljIGNsYXNzIFJlZ2lzdGVyVXNlclRlbXBsYXRlIGV4dGVuZHMgVmVsb2NpdHlMb2FkZXIgeworCisJQEF1dG93aXJlZAorCXByaXZhdGUgRmllbGRNYW5hZ2VyIGZpZWxkTWFuYWdlcjsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyB0ZW1wbGF0ZU5hbWUgPSAicmVnaXN0ZXJfbWFpbC52bSI7CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgdGVtcGxhdGVOYW1lVmVyaWZpY2F0aW9uID0gInJlZ2lzdGVyX3ZlcmlmaWNhdGlvbl9tYWlsLnZtIjsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoCisJCQlSZWdpc3RlclVzZXJUZW1wbGF0ZS5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCisJcHVibGljIFN0cmluZyBnZXRSZWdpc3RlclVzZXJXaXRoVmVyaWZpY2F0aW9uVGVtcGxhdGUoU3RyaW5nIHVzZXJuYW1lLAorCQkJU3RyaW5nIHVzZXJwYXNzLCBTdHJpbmcgZW1haWwsIExvbmcgZGVmYXVsdF9sYW5nX2lkLAorCQkJU3RyaW5nIHZlcmlmaWNhdGlvbl91cmwpIHsKKwkJdHJ5IHsKKworCQkJc3VwZXIuaW5pdCgpOworCisJCQlGaWVsZGxhbmd1YWdlc3ZhbHVlcyBsYWJlbGlkNTA3ID0gZmllbGRNYW5hZ2VyCisJCQkJCS5nZXRGaWVsZEJ5SWRBbmRMYW5ndWFnZShuZXcgTG9uZyg1MDcpLCBkZWZhdWx0X2xhbmdfaWQpOworCQkJRmllbGRsYW5ndWFnZXN2YWx1ZXMgbGFiZWxpZDUwOCA9IGZpZWxkTWFuYWdlcgorCQkJCQkuZ2V0RmllbGRCeUlkQW5kTGFuZ3VhZ2UobmV3IExvbmcoNTA4KSwgZGVmYXVsdF9sYW5nX2lkKTsKKwkJCUZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGxhYmVsaWQ1MDkgPSBmaWVsZE1hbmFnZXIKKwkJCQkJLmdldEZpZWxkQnlJZEFuZExhbmd1YWdlKG5ldyBMb25nKDUwOSksIGRlZmF1bHRfbGFuZ19pZCk7CisJCQlGaWVsZGxhbmd1YWdlc3ZhbHVlcyBsYWJlbGlkNTEwID0gZmllbGRNYW5hZ2VyCisJCQkJCS5nZXRGaWVsZEJ5SWRBbmRMYW5ndWFnZShuZXcgTG9uZyg1MTApLCBkZWZhdWx0X2xhbmdfaWQpOworCQkJRmllbGRsYW5ndWFnZXN2YWx1ZXMgbGFiZWxpZDY2NyA9IGZpZWxkTWFuYWdlcgorCQkJCQkuZ2V0RmllbGRCeUlkQW5kTGFuZ3VhZ2UobmV3IExvbmcoNjY3KSwgZGVmYXVsdF9sYW5nX2lkKTsKKwkJCUZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGxhYmVsaWQ2NjggPSBmaWVsZE1hbmFnZXIKKwkJCQkJLmdldEZpZWxkQnlJZEFuZExhbmd1YWdlKG5ldyBMb25nKDY2OCksIGRlZmF1bHRfbGFuZ19pZCk7CisKKwkJCS8qIGxldHMgbWFrZSBhIENvbnRleHQgYW5kIHB1dCBkYXRhIGludG8gaXQgKi8KKwkJCVZlbG9jaXR5Q29udGV4dCBjb250ZXh0ID0gbmV3IFZlbG9jaXR5Q29udGV4dCgpOworCisJCQljb250ZXh0LnB1dCgidXNlcm5hbWUiLCB1c2VybmFtZSk7CisJCQljb250ZXh0LnB1dCgidXNlcnBhc3MiLCB1c2VycGFzcyk7CisJCQljb250ZXh0LnB1dCgibWFpbCIsIGVtYWlsKTsKKwkJCWNvbnRleHQucHV0KCJ2ZXJpZmljYXRpb25fdXJsIiwgdmVyaWZpY2F0aW9uX3VybCk7CisJCQljb250ZXh0LnB1dCgibGFiZWxpZDUwNiIsIGZpZWxkTWFuYWdlci5nZXRTdHJpbmcoNTA2TCwgZGVmYXVsdF9sYW5nX2lkKSk7CisJCQljb250ZXh0LnB1dCgibGFiZWxpZDUwNyIsIGxhYmVsaWQ1MDcuZ2V0VmFsdWUoKSk7CisJCQljb250ZXh0LnB1dCgibGFiZWxpZDUwOCIsIGxhYmVsaWQ1MDguZ2V0VmFsdWUoKSk7CisJCQljb250ZXh0LnB1dCgibGFiZWxpZDUwOSIsIGxhYmVsaWQ1MDkuZ2V0VmFsdWUoKSk7CisJCQljb250ZXh0LnB1dCgibGFiZWxpZDUxMCIsIGxhYmVsaWQ1MTAuZ2V0VmFsdWUoKSk7CisJCQljb250ZXh0LnB1dCgibGFiZWxpZDUxMSIsIGZpZWxkTWFuYWdlci5nZXRTdHJpbmcoNTExTCwgZGVmYXVsdF9sYW5nX2lkKSk7CisJCQljb250ZXh0LnB1dCgibGFiZWxpZDY2NyIsIGxhYmVsaWQ2NjcuZ2V0VmFsdWUoKSk7CisJCQljb250ZXh0LnB1dCgibGFiZWxpZDY2OCIsIGxhYmVsaWQ2NjguZ2V0VmFsdWUoKSk7CisKKwkJCS8qIGxldHMgcmVuZGVyIGEgdGVtcGxhdGUgKi8KKworCQkJU3RyaW5nV3JpdGVyIHcgPSBuZXcgU3RyaW5nV3JpdGVyKCk7CisJCQlWZWxvY2l0eS5tZXJnZVRlbXBsYXRlKHRlbXBsYXRlTmFtZVZlcmlmaWNhdGlvbiwgIlVURi04IiwgY29udGV4dCwKKwkJCQkJdyk7CisKKwkJCS8vIFN5c3RlbS5vdXQucHJpbnRsbigiIHRlbXBsYXRlIDogIiArIHcgKTsKKworCQkJcmV0dXJuIHcudG9TdHJpbmcoKTsKKworCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJbG9nLmVycm9yKCJQcm9ibGVtIG1lcmdpbmcgdGVtcGxhdGUgOiAiLCBlKTsKKwkJCS8vIFN5c3RlbS5vdXQucHJpbnRsbigiUHJvYmxlbSBtZXJnaW5nIHRlbXBsYXRlIDogIiArIGUgKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwdWJsaWMgU3RyaW5nIGdldFJlZ2lzdGVyVXNlclRlbXBsYXRlKFN0cmluZyB1c2VybmFtZSwgU3RyaW5nIHVzZXJwYXNzLAorCQkJU3RyaW5nIGVtYWlsLCBMb25nIGRlZmF1bHRfbGFuZ19pZCkgeworCQl0cnkgeworCQkJCisJCQlzdXBlci5pbml0KCk7CisKKwkJCUZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGxhYmVsaWQ1MDcgPSBmaWVsZE1hbmFnZXIKKwkJCQkJLmdldEZpZWxkQnlJZEFuZExhbmd1YWdlKG5ldyBMb25nKDUwNyksIGRlZmF1bHRfbGFuZ19pZCk7CisJCQlGaWVsZGxhbmd1YWdlc3ZhbHVlcyBsYWJlbGlkNTA4ID0gZmllbGRNYW5hZ2VyCisJCQkJCS5nZXRGaWVsZEJ5SWRBbmRMYW5ndWFnZShuZXcgTG9uZyg1MDgpLCBkZWZhdWx0X2xhbmdfaWQpOworCQkJRmllbGRsYW5ndWFnZXN2YWx1ZXMgbGFiZWxpZDUwOSA9IGZpZWxkTWFuYWdlcgorCQkJCQkuZ2V0RmllbGRCeUlkQW5kTGFuZ3VhZ2UobmV3IExvbmcoNTA5KSwgZGVmYXVsdF9sYW5nX2lkKTsKKwkJCUZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGxhYmVsaWQ1MTAgPSBmaWVsZE1hbmFnZXIKKwkJCQkJLmdldEZpZWxkQnlJZEFuZExhbmd1YWdlKG5ldyBMb25nKDUxMCksIGRlZmF1bHRfbGFuZ19pZCk7CisKKwkJCS8qIGxldHMgbWFrZSBhIENvbnRleHQgYW5kIHB1dCBkYXRhIGludG8gaXQgKi8KKwkJCVZlbG9jaXR5Q29udGV4dCBjb250ZXh0ID0gbmV3IFZlbG9jaXR5Q29udGV4dCgpOworCisJCQljb250ZXh0LnB1dCgidXNlcm5hbWUiLCB1c2VybmFtZSk7CisJCQljb250ZXh0LnB1dCgidXNlcnBhc3MiLCB1c2VycGFzcyk7CisJCQljb250ZXh0LnB1dCgibWFpbCIsIGVtYWlsKTsKKwkJCWNvbnRleHQucHV0KCJsYWJlbGlkNTA2IiwgZmllbGRNYW5hZ2VyLmdldFN0cmluZyg1MDZMLCBkZWZhdWx0X2xhbmdfaWQpKTsKKwkJCWNvbnRleHQucHV0KCJsYWJlbGlkNTA3IiwgbGFiZWxpZDUwNy5nZXRWYWx1ZSgpKTsKKwkJCWNvbnRleHQucHV0KCJsYWJlbGlkNTA4IiwgbGFiZWxpZDUwOC5nZXRWYWx1ZSgpKTsKKwkJCWNvbnRleHQucHV0KCJsYWJlbGlkNTA5IiwgbGFiZWxpZDUwOS5nZXRWYWx1ZSgpKTsKKwkJCWNvbnRleHQucHV0KCJsYWJlbGlkNTEwIiwgbGFiZWxpZDUxMC5nZXRWYWx1ZSgpKTsKKwkJCWNvbnRleHQucHV0KCJsYWJlbGlkNTExIiwgZmllbGRNYW5hZ2VyLmdldFN0cmluZyg1MTFMLCBkZWZhdWx0X2xhbmdfaWQpKTsKKworCQkJLyogbGV0cyByZW5kZXIgYSB0ZW1wbGF0ZSAqLworCisJCQlTdHJpbmdXcml0ZXIgdyA9IG5ldyBTdHJpbmdXcml0ZXIoKTsKKwkJCVZlbG9jaXR5Lm1lcmdlVGVtcGxhdGUodGVtcGxhdGVOYW1lLCAiVVRGLTgiLCBjb250ZXh0LCB3KTsKKworCQkJLy8gU3lzdGVtLm91dC5wcmludGxuKCIgdGVtcGxhdGUgOiAiICsgdyApOworCisJCQlyZXR1cm4gdy50b1N0cmluZygpOworCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCQlsb2cuZXJyb3IoIlByb2JsZW0gbWVyZ2luZyB0ZW1wbGF0ZSA6ICIsIGUpOworCQkJLy8gU3lzdGVtLm91dC5wcmludGxuKCJQcm9ibGVtIG1lcmdpbmcgdGVtcGxhdGUgOiAiICsgZSApOworCQl9CisJCXJldHVybiBudWxsOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZW1wbGF0ZXMvUmVxdWVzdENvbnRhY3RDb25maXJtVGVtcGxhdGUuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZW1wbGF0ZXMvUmVxdWVzdENvbnRhY3RDb25maXJtVGVtcGxhdGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmI0MGMxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3RlbXBsYXRlcy9SZXF1ZXN0Q29udGFjdENvbmZpcm1UZW1wbGF0ZS5qYXZhCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudGVtcGxhdGVzOworCitpbXBvcnQgamF2YS5pby5TdHJpbmdXcml0ZXI7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS52ZWxvY2l0eS5WZWxvY2l0eUNvbnRleHQ7CitpbXBvcnQgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAuVmVsb2NpdHk7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworCitwdWJsaWMgY2xhc3MgUmVxdWVzdENvbnRhY3RDb25maXJtVGVtcGxhdGUgZXh0ZW5kcyBWZWxvY2l0eUxvYWRlciB7CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgdGVtcGxhdGVOYW1lID0gInJlcXVlc3Rjb250YWN0Y29uZmlybS52bSI7CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKAorCQkJUmVxdWVzdENvbnRhY3RDb25maXJtVGVtcGxhdGUuY2xhc3MsCisJCQlPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisKKwlwdWJsaWMgU3RyaW5nIGdldFJlcXVlc3RDb250YWN0VGVtcGxhdGUoU3RyaW5nIG1lc3NhZ2UpIHsKKwkJdHJ5IHsKKworCQkJc3VwZXIuaW5pdCgpOworCisJCQkvKiBsZXRzIG1ha2UgYSBDb250ZXh0IGFuZCBwdXQgZGF0YSBpbnRvIGl0ICovCisKKwkJCVZlbG9jaXR5Q29udGV4dCBjb250ZXh0ID0gbmV3IFZlbG9jaXR5Q29udGV4dCgpOworCisJCQljb250ZXh0LnB1dCgibWVzc2FnZSIsIG1lc3NhZ2UpOworCisJCQkvKiBsZXRzIHJlbmRlciBhIHRlbXBsYXRlICovCisKKwkJCVN0cmluZ1dyaXRlciB3ID0gbmV3IFN0cmluZ1dyaXRlcigpOworCQkJVmVsb2NpdHkubWVyZ2VUZW1wbGF0ZSh0ZW1wbGF0ZU5hbWUsICJVVEYtOCIsIGNvbnRleHQsIHcpOworCisJCQlyZXR1cm4gdy50b1N0cmluZygpOworCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCQlsb2cuZXJyb3IoIlByb2JsZW0gbWVyZ2luZyB0ZW1wbGF0ZSA6ICIsIGUpOworCQkJLy8gU3lzdGVtLm91dC5wcmludGxuKCJQcm9ibGVtIG1lcmdpbmcgdGVtcGxhdGUgOiAiICsgZSApOworCQl9CisJCXJldHVybiBudWxsOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZW1wbGF0ZXMvUmVxdWVzdENvbnRhY3RUZW1wbGF0ZS5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3RlbXBsYXRlcy9SZXF1ZXN0Q29udGFjdFRlbXBsYXRlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmJiZDFmMQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZW1wbGF0ZXMvUmVxdWVzdENvbnRhY3RUZW1wbGF0ZS5qYXZhCkBAIC0wLDAgKzEsNjUgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudGVtcGxhdGVzOworCitpbXBvcnQgamF2YS5pby5TdHJpbmdXcml0ZXI7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS52ZWxvY2l0eS5WZWxvY2l0eUNvbnRleHQ7CitpbXBvcnQgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAuVmVsb2NpdHk7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworCitwdWJsaWMgY2xhc3MgUmVxdWVzdENvbnRhY3RUZW1wbGF0ZSBleHRlbmRzIFZlbG9jaXR5TG9hZGVyIHsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyB0ZW1wbGF0ZU5hbWUgPSAicmVxdWVzdGNvbnRhY3Qudm0iOworCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5CisJCQkuZ2V0TG9nZ2VyKFJlcXVlc3RDb250YWN0VGVtcGxhdGUuY2xhc3MsCisJCQkJCU9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKworCXB1YmxpYyBTdHJpbmcgZ2V0UmVxdWVzdENvbnRhY3RUZW1wbGF0ZShTdHJpbmcgbWVzc2FnZSwgU3RyaW5nIGFjY2VwdF9saW5rLAorCQkJU3RyaW5nIGRlbnlfbGluaywgU3RyaW5nIG9wZW5tZWV0aW5nc19saW5rKSB7CisJCXRyeSB7CisKKwkJCXN1cGVyLmluaXQoKTsKKworCQkJLyogbGV0cyBtYWtlIGEgQ29udGV4dCBhbmQgcHV0IGRhdGEgaW50byBpdCAqLworCisJCQlWZWxvY2l0eUNvbnRleHQgY29udGV4dCA9IG5ldyBWZWxvY2l0eUNvbnRleHQoKTsKKworCQkJY29udGV4dC5wdXQoIm1lc3NhZ2UiLCBtZXNzYWdlKTsKKwkJCWNvbnRleHQucHV0KCJhY2NlcHRfbGluayIsIGFjY2VwdF9saW5rKTsKKwkJCWNvbnRleHQucHV0KCJkZW55X2xpbmsiLCBkZW55X2xpbmspOworCQkJY29udGV4dC5wdXQoIm9wZW5tZWV0aW5nc19saW5rIiwgb3Blbm1lZXRpbmdzX2xpbmspOworCisJCQkvKiBsZXRzIHJlbmRlciBhIHRlbXBsYXRlICovCisKKwkJCVN0cmluZ1dyaXRlciB3ID0gbmV3IFN0cmluZ1dyaXRlcigpOworCQkJVmVsb2NpdHkubWVyZ2VUZW1wbGF0ZSh0ZW1wbGF0ZU5hbWUsICJVVEYtOCIsIGNvbnRleHQsIHcpOworCisJCQlyZXR1cm4gdy50b1N0cmluZygpOworCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCQlsb2cuZXJyb3IoIlByb2JsZW0gbWVyZ2luZyB0ZW1wbGF0ZSA6ICIsIGUpOworCQkJLy8gU3lzdGVtLm91dC5wcmludGxuKCJQcm9ibGVtIG1lcmdpbmcgdGVtcGxhdGUgOiAiICsgZSApOworCQl9CisJCXJldHVybiBudWxsOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZW1wbGF0ZXMvUmVzZXRQYXNzd29yZFRlbXBsYXRlLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVtcGxhdGVzL1Jlc2V0UGFzc3dvcmRUZW1wbGF0ZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmYTMwZTQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVtcGxhdGVzL1Jlc2V0UGFzc3dvcmRUZW1wbGF0ZS5qYXZhCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudGVtcGxhdGVzOworCitpbXBvcnQgamF2YS5pby5TdHJpbmdXcml0ZXI7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5GaWVsZE1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMubGFuZy5GaWVsZGxhbmd1YWdlc3ZhbHVlczsKK2ltcG9ydCBvcmcuYXBhY2hlLnZlbG9jaXR5LlZlbG9jaXR5Q29udGV4dDsKK2ltcG9ydCBvcmcuYXBhY2hlLnZlbG9jaXR5LmFwcC5WZWxvY2l0eTsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uQXV0b3dpcmVkOworCitwdWJsaWMgY2xhc3MgUmVzZXRQYXNzd29yZFRlbXBsYXRlIGV4dGVuZHMgVmVsb2NpdHlMb2FkZXIgeworCisJQEF1dG93aXJlZAorCXByaXZhdGUgRmllbGRNYW5hZ2VyIGZpZWxkTWFuYWdlcjsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyB0ZW1wbGF0ZU5hbWUgPSAicmVzZXRQYXNzLnZtIjsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoCisJCQlGZWVkYmFja1RlbXBsYXRlLmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisKKwlwdWJsaWMgU3RyaW5nIGdldFJlc2V0UGFzc3dvcmRUZW1wbGF0ZShTdHJpbmcgcmVzZXRfbGluaywKKwkJCUxvbmcgZGVmYXVsdF9sYW5nX2lkKSB7CisJCXRyeSB7CisKKwkJCXN1cGVyLmluaXQoKTsKKworCQkJRmllbGRsYW5ndWFnZXN2YWx1ZXMgbGFiZWxpZDUxNCA9IGZpZWxkTWFuYWdlcgorCQkJCQkuZ2V0RmllbGRCeUlkQW5kTGFuZ3VhZ2UobmV3IExvbmcoNTE0KSwgZGVmYXVsdF9sYW5nX2lkKTsKKwkJCUZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGxhYmVsaWQ1MTUgPSBmaWVsZE1hbmFnZXIKKwkJCQkJLmdldEZpZWxkQnlJZEFuZExhbmd1YWdlKG5ldyBMb25nKDUxNSksIGRlZmF1bHRfbGFuZ19pZCk7CisJCQlGaWVsZGxhbmd1YWdlc3ZhbHVlcyBsYWJlbGlkNTE2ID0gZmllbGRNYW5hZ2VyCisJCQkJCS5nZXRGaWVsZEJ5SWRBbmRMYW5ndWFnZShuZXcgTG9uZyg1MTYpLCBkZWZhdWx0X2xhbmdfaWQpOworCisJCQkvKiBsZXRzIG1ha2UgYSBDb250ZXh0IGFuZCBwdXQgZGF0YSBpbnRvIGl0ICovCisJCQlWZWxvY2l0eUNvbnRleHQgY29udGV4dCA9IG5ldyBWZWxvY2l0eUNvbnRleHQoKTsKKwkJCWNvbnRleHQucHV0KCJyZXNldF9saW5rIiwgcmVzZXRfbGluayk7CisJCQljb250ZXh0LnB1dCgicmVzZXRfbGluazIiLCByZXNldF9saW5rKTsKKwkJCWNvbnRleHQucHV0KCJsYWJlbGlkNTEzIiwgZmllbGRNYW5hZ2VyLmdldFN0cmluZyg1MTNMLCBkZWZhdWx0X2xhbmdfaWQpKTsKKwkJCWNvbnRleHQucHV0KCJsYWJlbGlkNTE0IiwgbGFiZWxpZDUxNC5nZXRWYWx1ZSgpKTsKKwkJCWNvbnRleHQucHV0KCJsYWJlbGlkNTE1IiwgbGFiZWxpZDUxNS5nZXRWYWx1ZSgpKTsKKwkJCWNvbnRleHQucHV0KCJsYWJlbGlkNTE2IiwgbGFiZWxpZDUxNi5nZXRWYWx1ZSgpKTsKKworCQkJLyogbGV0cyByZW5kZXIgYSB0ZW1wbGF0ZSAqLworCQkJU3RyaW5nV3JpdGVyIHcgPSBuZXcgU3RyaW5nV3JpdGVyKCk7CisJCQlWZWxvY2l0eS5tZXJnZVRlbXBsYXRlKHRlbXBsYXRlTmFtZSwgIlVURi04IiwgY29udGV4dCwgdyk7CisKKwkJCXJldHVybiB3LnRvU3RyaW5nKCk7CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCWxvZy5lcnJvcigiUHJvYmxlbSBtZXJnaW5nIHRlbXBsYXRlIDogIiwgZSk7CisJCQkvLyBTeXN0ZW0ub3V0LnByaW50bG4oIlByb2JsZW0gbWVyZ2luZyB0ZW1wbGF0ZSA6ICIgKyBlICk7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVtcGxhdGVzL1ZlbG9jaXR5TG9hZGVyLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVtcGxhdGVzL1ZlbG9jaXR5TG9hZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNhYzA2YQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZW1wbGF0ZXMvVmVsb2NpdHlMb2FkZXIuamF2YQpAQCAtMCwwICsxLDUzIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnRlbXBsYXRlczsKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5PbUZpbGVIZWxwZXI7CitpbXBvcnQgb3JnLmFwYWNoZS52ZWxvY2l0eS5hcHAuVmVsb2NpdHk7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworCisvKioKKyAqIAorICogQGF1dGhvciBzd2FnbmVyCisgKiAKKyAqLworcHVibGljIGFic3RyYWN0IGNsYXNzIFZlbG9jaXR5TG9hZGVyIHsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKFZlbG9jaXR5TG9hZGVyLmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisKKwkvKioKKwkgKiBMb2FkcyB0aGUgUGF0aCBmcm9tIHRoZSBSZWQ1LVNjb3BlCisJICogCisJICovCisJcHVibGljIHZvaWQgaW5pdCgpIHsKKwkJdHJ5IHsKKwkJCUZpbGUgZkluaXQgPSBuZXcgRmlsZShPbUZpbGVIZWxwZXIuZ2V0V2ViaW5mRGlyKCksICJ2ZWxvY2l0eS5wcm9wZXJ0aWVzIik7CisJCQkKKwkJCWlmIChmSW5pdC5leGlzdHMoKSkgeworCQkJCVZlbG9jaXR5LmluaXQoZkluaXQuZ2V0Q2Fub25pY2FsUGF0aCgpKTsKKwkJCX0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKwkJCWxvZy5lcnJvcigiUHJvYmxlbSBpbml0aWFsaXppbmcgVmVsb2NpdHkgOiAiLCBlKTsKKwkJCVN5c3RlbS5vdXQucHJpbnRsbigiUHJvYmxlbSBpbml0aWFsaXppbmcgVmVsb2NpdHkgOiAiICsgZSk7CisJCX0KKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9BYnN0cmFjdE9wZW5tZWV0aW5nc1NwcmluZ1Rlc3QuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L0Fic3RyYWN0T3Blbm1lZXRpbmdzU3ByaW5nVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1Yjg2ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9BYnN0cmFjdE9wZW5tZWV0aW5nc1NwcmluZ1Rlc3QuamF2YQpAQCAtMCwwICsxLDE0MSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy50ZXN0OworCitpbXBvcnQgc3RhdGljIGp1bml0LmZyYW1ld29yay5Bc3NlcnQuYXNzZXJ0Tm90TnVsbDsKK2ltcG9ydCBzdGF0aWMganVuaXQuZnJhbWV3b3JrLkFzc2VydC5hc3NlcnRUcnVlOworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmZhaWw7CisKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuZGFvLkNvbmZpZ3VyYXRpb25EYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jYWxlbmRhci5kYW9zLkFwcG9pbnRtZW50RGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEudXNlci5Vc2VyTWFuYWdlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuZGFvLlVzZXJzRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmluc3RhbGxhdGlvbi5JbXBvcnRJbml0dmFsdWVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmluc3RhbGxhdGlvbi5JbnN0YWxsYXRpb25Db25maWc7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuY2FsZW5kYXIuQXBwb2ludG1lbnQ7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlci5Vc2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLk9tRmlsZUhlbHBlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5jcnlwdC5NYW5hZ2VDcnlwdFN0eWxlOworaW1wb3J0IG9yZy5qdW5pdC5CZWZvcmU7CitpbXBvcnQgb3JnLmp1bml0LnJ1bm5lci5SdW5XaXRoOworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5BdXRvd2lyZWQ7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay50ZXN0LmNvbnRleHQuQ29udGV4dENvbmZpZ3VyYXRpb247CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay50ZXN0LmNvbnRleHQuVGVzdEV4ZWN1dGlvbkxpc3RlbmVyczsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLnRlc3QuY29udGV4dC5qdW5pdDQuQWJzdHJhY3RKVW5pdDRTcHJpbmdDb250ZXh0VGVzdHM7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay50ZXN0LmNvbnRleHQuanVuaXQ0LlNwcmluZ0pVbml0NENsYXNzUnVubmVyOworCitAUnVuV2l0aChTcHJpbmdKVW5pdDRDbGFzc1J1bm5lci5jbGFzcykKK0BUZXN0RXhlY3V0aW9uTGlzdGVuZXJzKHt9KQorQENvbnRleHRDb25maWd1cmF0aW9uKGxvY2F0aW9ucz17ImNsYXNzcGF0aDovb3Blbm1lZXRpbmdzLWFwcGxpY2F0aW9uQ29udGV4dC54bWwifSwgaW5oZXJpdExvY2F0aW9ucyA9IHRydWUpCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQWJzdHJhY3RPcGVubWVldGluZ3NTcHJpbmdUZXN0IGV4dGVuZHMgQWJzdHJhY3RKVW5pdDRTcHJpbmdDb250ZXh0VGVzdHMgeworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoQWJzdHJhY3RPcGVubWVldGluZ3NTcHJpbmdUZXN0LmNsYXNzKTsKKwkKKwlwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyB1c2VybmFtZSA9ICJzd2FnbmVyIjsKKwlwcm90ZWN0ZWQgc3RhdGljIGZpbmFsIFN0cmluZyB1c2VycGFzcyA9ICJxd2Vxd2UiOworCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBvcmduYW1lID0gInNtb2tldGVzdCI7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIHRpbWVab25lID0gIkV1cm9wZS9CZXJsaW4iOworCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyB1c2VyZW1haWwgPSAianVuaXRAb3Blbm1lZXRpbmdzLmRlIjsKKwkKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBBcHBvaW50bWVudERhbyBhcHBvaW50bWVudERhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBVc2VyTWFuYWdlciB1c2VyTWFuYWdlcjsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBVc2Vyc0RhbyB1c2Vyc0RhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBJbXBvcnRJbml0dmFsdWVzIGltcG9ydEluaXR2YWx1ZXM7CisJQEF1dG93aXJlZAorCXByaXZhdGUgQ29uZmlndXJhdGlvbkRhbyBjb25maWd1cmF0aW9uRGFvOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIE1hbmFnZUNyeXB0U3R5bGUgY3J5cHRNYW5hZ2VyOworCisJQEJlZm9yZQorCXB1YmxpYyB2b2lkIHNldFVwKCkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCXNldE9tSG9tZSgpOworICAgICAgICBpZiAodXNlcnNEYW8uY291bnQoKSA8IDEpIHsKKyAgICAgICAgICAgIG1ha2VEZWZhdWx0U2NoZW1lKCk7CisgICAgICAgICAgICBsb2cuaW5mbygiRGVmYXVsdCBzY2hlbWUgY3JlYXRlZCBzdWNjZXNzZnVsbHkiKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGxvZy5pbmZvKCJEZWZhdWx0IHNjaGVtZSBhbHJlYWR5IGNyZWF0ZWQiKTsKKyAgICAgICAgfQorICAgIH0KKworCXB1YmxpYyBBcHBvaW50bWVudCBjcmVhdGVBcHBvaW50bWVudCgpIHRocm93cyBFeGNlcHRpb24geworCQlhc3NlcnROb3ROdWxsKCJDYW4ndCBhY2Nlc3MgdG8gYXBwb2ludG1lbnQgZGFvIGltcGxpbWVudGF0aW9uIiwgYXBwb2ludG1lbnREYW8pOworCisJCS8vIGFkZCBuZXcgYXBwb2ludG1lbnQKKwkJQXBwb2ludG1lbnQgYXAgPSBuZXcgQXBwb2ludG1lbnQoKTsKKworCQlhcC5zZXRBcHBvaW50bWVudE5hbWUoImFwcG9pbnRtZW50TmFtZSIpOworCQlhcC5zZXRBcHBvaW50bWVudExvY2F0aW9uKCJhcHBvaW50bWVudExvY2F0aW9uIik7CisKKwkJRGF0ZSBhcHBvaW50bWVudHN0YXJ0ID0gbmV3IERhdGUoKTsKKwkJRGF0ZSBhcHBvaW50bWVudGVuZCA9IG5ldyBEYXRlKCk7CisJCWFwcG9pbnRtZW50ZW5kLnNldFRpbWUoYXBwb2ludG1lbnRzdGFydC5nZXRUaW1lKCkgKyAzNjAwKTsKKworCQlhcC5zZXRBcHBvaW50bWVudFN0YXJ0dGltZShhcHBvaW50bWVudHN0YXJ0KTsKKwkJYXAuc2V0QXBwb2ludG1lbnRFbmR0aW1lKGFwcG9pbnRtZW50ZW5kKTsKKwkJYXAuc2V0QXBwb2ludG1lbnREZXNjcmlwdGlvbigiYXBwb2ludG1lbnREZXNjcmlwdGlvbiIpOworCQlhcC5zZXRTdGFydHRpbWUobmV3IERhdGUoKSk7CisJCWFwLnNldERlbGV0ZWQoZmFsc2UpOworCQlhcC5zZXRJc0RhaWx5KGZhbHNlKTsKKwkJYXAuc2V0SXNXZWVrbHkoZmFsc2UpOworCQlhcC5zZXRJc01vbnRobHkoZmFsc2UpOworCQlhcC5zZXRJc1llYXJseShmYWxzZSk7CisJCWFwLnNldElzUGFzc3dvcmRQcm90ZWN0ZWQoZmFsc2UpOworCisJCWFwLnNldFVzZXJJZCh1c2Vyc0Rhby5nZXQoMUwpKTsKKwkJYXAuc2V0SXNDb25uZWN0ZWRFdmVudChmYWxzZSk7CisJCUxvbmcgaWQgPSBhcHBvaW50bWVudERhby5hZGRBcHBvaW50bWVudE9iaihhcCk7CisJCWFzc2VydE5vdE51bGwoIkNhbm4ndCBhZGQgYXBwb2ludG1lbnQiLCBpZCk7CisJCXJldHVybiBhcDsKKwl9CisKKwlwdWJsaWMgVXNlciBjcmVhdGVVc2VyKGludCBybmQpIHRocm93cyBFeGNlcHRpb24geworCQlVc2VyIHVzZXJzID0gbmV3IFVzZXIoKTsKKwkJLy8gYWRkIHVzZXIKKwkJdXNlcnMuc2V0Rmlyc3RuYW1lKCJmaXJzdG5hbWUiICsgcm5kKTsKKwkJdXNlcnMuc2V0TGFzdG5hbWUoImxhc3RuYW1lIiArIHJuZCk7CisJCXVzZXJzLnNldExvZ2luKCJsb2dpbiIpOworCQl1c2Vycy51cGRhdGVQYXNzd29yZChjcnlwdE1hbmFnZXIsIGNvbmZpZ3VyYXRpb25EYW8sICJwYXNzIiArIHJuZCk7CisJCXVzZXJzLnNldExhbmd1YWdlX2lkKDFMKTsKKwkJTG9uZyB1c2VyX2lkID0gdXNlck1hbmFnZXIuYWRkVXNlcih1c2Vycyk7CisJCWFzc2VydFRydWUoIkNhbm4ndCBhZGQgdXNlciIsIHVzZXJfaWQgPiAwKTsKKwkJdXNlcnMgPSB1c2VyTWFuYWdlci5nZXRVc2VyQnlJZEFuZERlbGV0ZWQodXNlcl9pZCk7CisJCWFzc2VydE5vdE51bGwoIlVzZXIgc2hvdWxkIG5vdCBiZSBudWxsIiwgdXNlcnMpOworCQlyZXR1cm4gdXNlcnM7CisJfQorCisJcHJvdGVjdGVkIHZvaWQgc2V0T21Ib21lKCkgeworCQlTdHJpbmcgd2ViYXBwc0RpciA9IFN5c3RlbS5nZXRQcm9wZXJ0eSgib20uaG9tZSIsICIuIik7CisJCU9tRmlsZUhlbHBlci5zZXRPbUhvbWUod2ViYXBwc0Rpcik7CisJCWlmICghT21GaWxlSGVscGVyLmdldE9tSG9tZSgpLmV4aXN0cygpIHx8ICFPbUZpbGVIZWxwZXIuZ2V0T21Ib21lKCkuaXNEaXJlY3RvcnkoKSkgeworCQkJZmFpbCgiSW52YWxpZCBkaXJlY3RvcnkgaXMgc3BlY2lmaWVkIGFzIE9NIEhPTUU6ICIgKyB3ZWJhcHBzRGlyKTsKKwkJfQorCX0KKwkKKwlwcml2YXRlIHZvaWQgbWFrZURlZmF1bHRTY2hlbWUoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkJaW1wb3J0SW5pdHZhbHVlcy5sb2FkQWxsKG5ldyBJbnN0YWxsYXRpb25Db25maWcoKSwgdXNlcm5hbWUsIHVzZXJwYXNzLAorCQkJCXVzZXJlbWFpbCwgb3JnbmFtZSwgdGltZVpvbmUsIGZhbHNlKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9FZGl0b3JQYW5lTGlua0RldGVjdG9yLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9FZGl0b3JQYW5lTGlua0RldGVjdG9yLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjBmNmRjOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L0VkaXRvclBhbmVMaW5rRGV0ZWN0b3IuamF2YQpAQCAtMCwwICsxLDMxMCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy50ZXN0OworCisvKioKKyAqIERhdmlkIEJpc211dCwgZGF2aWQuYmlzbXV0QGdtYWlsLmNvbQorICogSW50ZXJuLCBTRVRMYWJzLCBJbmZvc3lzIFRlY2hub2xvZ2llcyBMdGQuIE1heSAyMDA0IC0gSnVsIDIwMDQKKyAqIEVjb2xlIGRlcyBNaW5lcyBkZSBOYW50ZXMsIEZyYW5jZQorICovCitpbXBvcnQgamF2YS5hd3QuZXZlbnQuS2V5QWRhcHRlcjsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5LZXlFdmVudDsKK2ltcG9ydCBqYXZhLmF3dC5ldmVudC5Nb3VzZUV2ZW50OworaW1wb3J0IGphdmEuYXd0LmV2ZW50Lk1vdXNlTW90aW9uQWRhcHRlcjsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworaW1wb3J0IGphdmEudXRpbC5yZWdleC5NYXRjaGVyOworaW1wb3J0IGphdmEudXRpbC5yZWdleC5QYXR0ZXJuOworCitpbXBvcnQgamF2YXguYWNjZXNzaWJpbGl0eS5BY2Nlc3NpYmxlSHlwZXJ0ZXh0OworaW1wb3J0IGphdmF4LnN3aW5nLkpFZGl0b3JQYW5lOworaW1wb3J0IGphdmF4LnN3aW5nLnRleHQuQXR0cmlidXRlU2V0OworaW1wb3J0IGphdmF4LnN3aW5nLnRleHQuQmFkTG9jYXRpb25FeGNlcHRpb247CitpbXBvcnQgamF2YXguc3dpbmcudGV4dC5FbGVtZW50OworaW1wb3J0IGphdmF4LnN3aW5nLnRleHQuaHRtbC5IVE1MOworaW1wb3J0IGphdmF4LnN3aW5nLnRleHQuaHRtbC5IVE1MRG9jdW1lbnQ7CitpbXBvcnQgamF2YXguc3dpbmcudGV4dC5odG1sLkhUTUxFZGl0b3JLaXQ7CitpbXBvcnQgamF2YXguc3dpbmcudGV4dC5odG1sLlN0eWxlU2hlZXQ7CitpbXBvcnQgamF2YXguc3dpbmcudGV4dC5odG1sLnBhcnNlci5QYXJzZXJEZWxlZ2F0b3I7CisKKy8qKgorICogQSAiSFRNTCIgSkVkaXRvclBhbmUgZW1iZWRkZWQgd2l0aCBhIHNwZWNpYWwgSFRNTERvY3VtZW50IHRoYXQgZGV0ZWN0cyB1cmxzCisgKiBhbmQgZGlzcGxheXMgdGhlbSBhcyBoeXBlcmxpbmtzLiBXaGVuIENUUkwgaXMgcHJlc3NlZCwgdGhlIHVybHMgYXJlCisgKiBjbGlja2FibGUuCisgKiAKKyAqIEBhdXRob3IgRGF2aWQgQmlzbXV0CisgKiAgCisgKi8KK3B1YmxpYyBjbGFzcyBFZGl0b3JQYW5lTGlua0RldGVjdG9yIGV4dGVuZHMgSkVkaXRvclBhbmUgeworCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDI4MTE4Nzg5OTQzNDYzNzQwMTdMOworCisJLyoqCisJICogQ3JlYXRlcyBhIDxjb2RlPkVkaXRvclBhbmVMaW5rRGV0ZWN0b3I8L2NvZGU+LgorCSAqLworCXB1YmxpYyBFZGl0b3JQYW5lTGlua0RldGVjdG9yKCkgeworCisJCUhUTUxFZGl0b3JLaXQgaHRtbGtpdCA9IG5ldyBIVE1MRWRpdG9yS2l0KCk7CisKKwkJU3R5bGVTaGVldCBzdHlsZXMgPSBodG1sa2l0LmdldFN0eWxlU2hlZXQoKTsKKwkJU3R5bGVTaGVldCBzcyA9IG5ldyBTdHlsZVNoZWV0KCk7CisKKwkJc3MuYWRkU3R5bGVTaGVldChzdHlsZXMpOworCisJCXNzLmFkZFJ1bGUoImJvZHkge2ZvbnQtZmFtaWx5OmFyaWFsO2ZvbnQtc2l6ZToxMnB0fSIpOworCQlzcy5hZGRSdWxlKCJwIHtmb250LWZhbWlseTphcmlhbDttYXJnaW46Mn0iKTsKKworCQlIVE1MRG9jdW1lbnQgZG9jID0gbmV3IEhUTUxEb2NMaW5rRGV0ZWN0b3Ioc3MpOworCisJCXNldEVkaXRvcktpdChodG1sa2l0KTsKKworCQlzZXREb2N1bWVudChkb2MpOworCisJCWFkZE1vdXNlTW90aW9uTGlzdGVuZXIobmV3IE1vdXNlTW90aW9uQWRhcHRlcigpIHsKKwkJCXB1YmxpYyB2b2lkIG1vdXNlTW92ZWQoTW91c2VFdmVudCBlKSB7CisKKwkJCQlBY2Nlc3NpYmxlSlRleHRDb21wb25lbnQgY29udGV4dCA9IChBY2Nlc3NpYmxlSlRleHRDb21wb25lbnQpIGdldEFjY2Vzc2libGVDb250ZXh0KCkKKwkJCQkJCS5nZXRBY2Nlc3NpYmxlRWRpdGFibGVUZXh0KCk7CisKKwkJCQlBY2Nlc3NpYmxlSHlwZXJ0ZXh0IGFjY1RleHQgPSAoQWNjZXNzaWJsZUh5cGVydGV4dCkgY29udGV4dAorCQkJCQkJLmdldEFjY2Vzc2libGVUZXh0KCk7CisKKwkJCQlpbnQgaW5kZXggPSBhY2NUZXh0LmdldEluZGV4QXRQb2ludChlLmdldFBvaW50KCkpOworCisJCQkJaW50IGxpbmtJbmRleCA9IGFjY1RleHQuZ2V0TGlua0luZGV4KGluZGV4KTsKKwkJCQlpZiAobGlua0luZGV4ID09IC0xKSB7CisJCQkJCXNldFRvb2xUaXBUZXh0KG51bGwpOworCQkJCQlyZXR1cm47CisJCQkJfQorCisJCQkJU3RyaW5nIGxpbmtEZXNjID0gYWNjVGV4dC5nZXRMaW5rKGxpbmtJbmRleCkKKwkJCQkJCS5nZXRBY2Nlc3NpYmxlQWN0aW9uRGVzY3JpcHRpb24oMCk7CisKKwkJCQlTdHJpbmcgdG9vbFRpcFRleHQgPSAiPGh0bWw+PGJvZHkgc3R5bGU9J21hcmdpbjogMyc+IgorCQkJCQkJKyBsaW5rRGVzYworCQkJCQkJKyAiPGJyPjxiPkNUUkwgKyBjbGljayB0byBmb2xsb3cgbGluazwvYj48L2JvZHk+PC9odG1sPiI7CisJCQkJc2V0VG9vbFRpcFRleHQodG9vbFRpcFRleHQpOworCQkJfQorCQl9KTsKKworCQlhZGRLZXlMaXN0ZW5lcihuZXcgS2V5QWRhcHRlcigpIHsKKwkJCXB1YmxpYyB2b2lkIGtleVByZXNzZWQoS2V5RXZlbnQgZSkgeworCQkJCQorCQkJCWlmIChlLmdldEtleUNvZGUoKSA9PSBLZXlFdmVudC5WS19DT05UUk9MKSB7CisJCQkJCWlmIChpc0VkaXRhYmxlKCkpCisJCQkJCQlzZXRFZGl0YWJsZShmYWxzZSk7CisJCQkJfSBlbHNlIHsKKwkJCQkJaWYgKCFpc0VkaXRhYmxlKCkpCisJCQkJCQlzZXRFZGl0YWJsZSh0cnVlKTsKKwkJCQl9CisKKwkJCX0KKworCQkJcHVibGljIHZvaWQga2V5UmVsZWFzZWQoS2V5RXZlbnQgZSkgeworCQkJCQorCQkJCWlmIChlLmdldEtleUNvZGUoKSA9PSBLZXlFdmVudC5WS19DT05UUk9MKSB7CisJCQkJCXNldEVkaXRhYmxlKHRydWUpOworCQkJCX0KKworCQkJfQorCQl9KTsKKwl9CisKKwlwcm90ZWN0ZWQgY2xhc3MgSFRNTERvY0xpbmtEZXRlY3RvciBleHRlbmRzIEhUTUxEb2N1bWVudCB7CisKKwkJLyoqCisJCSAqIAorCQkgKi8KKwkJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMTIyNjI0NDE2Nzc4MjE2MDQzN0w7CisKKwkJcHVibGljIEhUTUxEb2NMaW5rRGV0ZWN0b3IoU3R5bGVTaGVldCBzcykgeworCQkJc3VwZXIoc3MpOworCQkJCisJCQlzZXRBc3luY2hyb25vdXNMb2FkUHJpb3JpdHkoNCk7CisJCQlzZXRUb2tlblRocmVzaG9sZCgxMDApOworCQkJc2V0UGFyc2VyKG5ldyBQYXJzZXJEZWxlZ2F0b3IoKSk7CisJCX0KKworCQkvKioKKwkJICogUmV0dXJucyB0cnVlIGlmIHRoZSBFbGVtZW50IGNvbnRhaW5zIGEgSFRNTC5UYWcuQSBhdHRyaWJ1dGUsIGZhbHNlCisJCSAqIG90aGVyd2lzZS4KKwkJICogCisJCSAqIEBwYXJhbSBlCisJCSAqICAgICAgICAgICAgdGhlIEVsZW1lbnQgdG8gYmUgY2hlY2tkCisJCSAqIEByZXR1cm4KKwkJICovCisJCXByb3RlY3RlZCBib29sZWFuIGlzTGluayhFbGVtZW50IGUpIHsKKwkJCQorCQkJcmV0dXJuIChlLmdldEF0dHJpYnV0ZXMoKS5nZXRBdHRyaWJ1dGUoSFRNTC5UYWcuQSkgIT0gbnVsbCk7CisKKwkJfQorCisJCS8qKgorCQkgKiBUaGlzIG1ldGhvZCBjb3JyZWN0cyBvciBjcmVhdGVzIGEgdXJsIGNvbnRhaW5lZCBpbiBhbiBFbGVtZW50IGFzIGFuCisJCSAqIGh5cGVybGluay4KKwkJICogCisJCSAqIEBwYXJhbSBlCisJCSAqICAgICAgICAgICAgdGhlIEVsZW1lbnQgdG8gYmUgY29tcHV0ZWQKKwkJICogQHRocm93cyBCYWRMb2NhdGlvbkV4Y2VwdGlvbgorCQkgKi8KKwkJcHJvdGVjdGVkIHZvaWQgY29tcHV0ZUxpbmtzKEVsZW1lbnQgZSkgdGhyb3dzIEJhZExvY2F0aW9uRXhjZXB0aW9uIHsKKwkJCQorCQkJaW50IGNhcmV0UG9zID0gZ2V0Q2FyZXRQb3NpdGlvbigpOworCQkJdHJ5IHsKKwkJCQlpZiAoaXNMaW5rKGUpKQorCQkJCQljb3JyZWN0TGluayhlKTsKKwkJCQllbHNlCisJCQkJCWNyZWF0ZUxpbmsoZSk7CisJCQl9IGNhdGNoIChJT0V4Y2VwdGlvbiBleCkgeworCQkJCWV4LnByaW50U3RhY2tUcmFjZSgpOworCQkJfQorCQkJc2V0Q2FyZXRQb3NpdGlvbihNYXRoLm1pbihjYXJldFBvcywgZ2V0TGVuZ3RoKCkpKTsKKwkJfQorCisJCS8qKgorCQkgKiBUaGUgbWV0aG9kIGNvcnJlY3RzIHRoZSB1cmwgaW5zaWRlIGFuIEVsZW1lbnQsIHRoYXQgaXMgc3VwcG9zZWQgdG8gYmUKKwkJICogYW4gZWxlbWVudCBjb250YWluaW5nIGEgbGluayBvbmx5LiBUaGlzIGZ1bmN0aW9uIGlzIHR5cGljYWxseSBjYWxsZWQKKwkJICogd2hlbiB0aGUgdXJsIGlzIGJlZWluZyBlZGl0ZWQuIFdoYXQgdGhlIGZ1bmN0aW9uIGRvZXMgaXMgdG8gcmVtb3ZlCisJCSAqIHRoZSBodG1sIHRhZ3MsIHNvIHRoZSB1cmwgaXMgYWN0dWFsbHkgZWRpdGVkIGluIHBsYWluIHRleHQgYW5kIG5vdCBhcworCQkgKiBhbiBoeXBlcmxpbmsuCisJCSAqIAorCQkgKiBAcGFyYW0gZQorCQkgKiAgICAgICAgICAgIHRoZSBFbGVtZW50IHRoYXQgY29udGFpbnMgdGhlIHVybAorCQkgKiBAdGhyb3dzIEJhZExvY2F0aW9uRXhjZXB0aW9uCisJCSAqIEB0aHJvd3MgSU9FeGNlcHRpb24KKwkJICovCisJCXByb3RlY3RlZCB2b2lkIGNvcnJlY3RMaW5rKEVsZW1lbnQgZSkgdGhyb3dzIEJhZExvY2F0aW9uRXhjZXB0aW9uLAorCQkJCUlPRXhjZXB0aW9uIHsKKwkJCQorCQkJaW50IGxlbmd0aCA9IGUuZ2V0RW5kT2Zmc2V0KCkgLSBlLmdldFN0YXJ0T2Zmc2V0KCk7CisKKwkJCWJvb2xlYW4gZW5kT2ZEb2MgPSBlLmdldEVuZE9mZnNldCgpID09IGdldExlbmd0aCgpICsgMTsKKworCQkJLy8gdG8gYXZvaWQgY2F0Y2hpbmcgdGhlIGZpbmFsICdcbicgb2YgdGhlIGRvY3VtZW50LgorCQkJaWYgKGVuZE9mRG9jKQorCQkJCWxlbmd0aC0tOworCisJCQlTdHJpbmcgdGV4dCA9IGdldFRleHQoZS5nZXRTdGFydE9mZnNldCgpLCBsZW5ndGgpOworCisJCQlzZXRPdXRlckhUTUwoZSwgdGV4dCk7CisKKwkJCS8vIGluc2VydCBmaW5hbCBzcGFjZXMgaWdub3JlZCBieSB0aGUgaHRtbAorCQkJTWF0Y2hlciBzcGFjZU1hdGNoZXIgPSBQYXR0ZXJuLmNvbXBpbGUoIihcXHMrKSQiKS5tYXRjaGVyKHRleHQpOworCisJCQlpZiAoc3BhY2VNYXRjaGVyLmZpbmQoKSkgeworCQkJCVN0cmluZyBlbmRpbmdTcGFjZXMgPSBzcGFjZU1hdGNoZXIuZ3JvdXAoMSk7CisJCQkJaW5zZXJ0U3RyaW5nKE1hdGgubWluKGdldExlbmd0aCgpLCBlLmdldEVuZE9mZnNldCgpKSwKKwkJCQkJCWVuZGluZ1NwYWNlcywgbnVsbCk7CisJCQl9CisJCX0KKworCQkvKioKKwkJICogVGhlIG1ldGhvZCBjaGVjayBpZiB0aGUgZWxlbWVudCBjb250YWlucyBhIHVybCBpbiBwbGFpbiB0ZXh0LCBhbmQgaWYKKwkJICogc28sIGl0IGNyZWF0ZXMgdGhlIGh0bWwgdGFnIEhUTUwuVGFnLkEgdG8gaGF2ZSB0aGUgdXJsIGRpc3BsYXllZCBhcworCQkgKiBhbiBoeXBlcmxpbmsuCisJCSAqIAorCQkgKiBAcGFyYW0gZQorCQkgKiAgICAgICAgICAgIGVsZW1lbnQgdGhhdCBjb250YWlucyB0aGUgdXJsCisJCSAqIEB0aHJvd3MgQmFkTG9jYXRpb25FeGNlcHRpb24KKwkJICogQHRocm93cyBJT0V4Y2VwdGlvbgorCQkgKi8KKwkJcHJvdGVjdGVkIHZvaWQgY3JlYXRlTGluayhFbGVtZW50IGUpIHRocm93cyBCYWRMb2NhdGlvbkV4Y2VwdGlvbiwKKwkJCQlJT0V4Y2VwdGlvbiB7CisJCQkKKwkJCWludCBjYXJldFBvcyA9IGdldENhcmV0UG9zaXRpb24oKTsKKworCQkJaW50IHN0YXJ0T2Zmc2V0ID0gZS5nZXRTdGFydE9mZnNldCgpOworCQkJaW50IGxlbmd0aCA9IGUuZ2V0RW5kT2Zmc2V0KCkgLSBlLmdldFN0YXJ0T2Zmc2V0KCk7CisKKwkJCWJvb2xlYW4gZW5kT2ZEb2MgPSBlLmdldEVuZE9mZnNldCgpID09IGdldExlbmd0aCgpICsgMTsKKwkJCS8vIHRvIGF2b2lkIGNhdGNoaW5nIHRoZSBmaW5hbCAnXG4nIG9mIHRoZSBkb2N1bWVudC4KKwkJCWlmIChlbmRPZkRvYykKKwkJCQlsZW5ndGgtLTsKKworCQkJU3RyaW5nIHRleHQgPSBnZXRUZXh0KHN0YXJ0T2Zmc2V0LCBsZW5ndGgpOworCisJCQlNYXRjaGVyIG1hdGNoZXIgPSBQYXR0ZXJuLmNvbXBpbGUoCisJCQkJCSIoP2kpKFxcYihodHRwOi8vfGh0dHBzOi8vfHd3dy58ZnRwOi8vfGZpbGU6L3xtYWlsdG86KVxcUyspKFxccyspIikKKwkJCQkJLm1hdGNoZXIodGV4dCk7CisKKwkJCWlmIChtYXRjaGVyLmZpbmQoKSkgeworCQkJCVN0cmluZyB1cmwgPSBtYXRjaGVyLmdyb3VwKDEpOworCQkJCS8vU3RyaW5nIHByZWZpeCA9IG1hdGNoZXIuZ3JvdXAoMik7CisJCQkJU3RyaW5nIGVuZGluZ1NwYWNlcyA9IG1hdGNoZXIuZ3JvdXAoMyk7CisKKwkJCQkvLyB0byBpZ25vcmUgY2hhcmFjdGVycyBhZnRlciB0aGUgY2FyZXQKKwkJCQlpbnQgdmFsaWRQb3MgPSBzdGFydE9mZnNldCArIG1hdGNoZXIuc3RhcnQoMykgKyAxOworCQkJCWlmICh2YWxpZFBvcyA+IGNhcmV0UG9zKQorCQkJCQlyZXR1cm47CisKKwkJCQlNYXRjaGVyIGRvdEVuZE1hdGNoZXIgPSBQYXR0ZXJuLmNvbXBpbGUoIihbXFxXJiZbXi9dXSspJCIpCisJCQkJCQkubWF0Y2hlcih1cmwpOworCisJCQkJLy9FbmRpbmcgbm9uIGFscGhhIGNoYXJhY3RlcnMgbGlrZSBbLiw/JV0gc2hvdWxkbid0IGJlIGluY2x1ZGVkCisJCQkJLy8gaW4gdGhlIHVybC4KKwkJCQlTdHJpbmcgZW5kaW5nRG90cyA9ICIiOworCQkJCWlmIChkb3RFbmRNYXRjaGVyLmZpbmQoKSkgeworCQkJCQllbmRpbmdEb3RzID0gZG90RW5kTWF0Y2hlci5ncm91cCgxKTsKKwkJCQkJdXJsID0gZG90RW5kTWF0Y2hlci5yZXBsYWNlRmlyc3QoIiIpOworCQkJCX0KKworCQkJCXRleHQgPSBtYXRjaGVyLnJlcGxhY2VGaXJzdCgiPGEgaHJlZj0nIiArIHVybCArICInPiIgKyB1cmwKKwkJCQkJCSsgIjwvYT4iICsgZW5kaW5nRG90cyArIGVuZGluZ1NwYWNlcyk7CisKKwkJCQlzZXRPdXRlckhUTUwoZSwgdGV4dCk7CisKKwkJCQkvLyBpbnNlcnQgaW5pdGlhbCBzcGFjZXMgaWdub3JlZCBieSB0aGUgaHRtbAorCQkJCU1hdGNoZXIgc3BhY2VNYXRjaGVyID0gUGF0dGVybi5jb21waWxlKCJeKFxccyspIikubWF0Y2hlcih0ZXh0KTsKKworCQkJCWlmIChzcGFjZU1hdGNoZXIuZmluZCgpKSB7CisJCQkJCVN0cmluZyBpbml0aWFsU3BhY2VzID0gc3BhY2VNYXRjaGVyLmdyb3VwKDEpOworCQkJCQlpbnNlcnRTdHJpbmcoc3RhcnRPZmZzZXQsIGluaXRpYWxTcGFjZXMsIG51bGwpOworCQkJCX0KKworCQkJCS8vIGluc2VydCBmaW5hbCBzcGFjZXMgaWdub3JlZCBieSB0aGUgaHRtbAorCQkJCXNwYWNlTWF0Y2hlciA9IFBhdHRlcm4uY29tcGlsZSgiKFxccyspJCIpLm1hdGNoZXIodGV4dCk7CisKKwkJCQlpZiAoc3BhY2VNYXRjaGVyLmZpbmQoKSkgeworCQkJCQlTdHJpbmcgZXh0cmFTcGFjZXMgPSBzcGFjZU1hdGNoZXIuZ3JvdXAoMSk7CisJCQkJCWludCBlbmRvZmZzZXQgPSBlLmdldEVuZE9mZnNldCgpOworCQkJCQlpZiAoZXh0cmFTcGFjZXMuY2hhckF0KGV4dHJhU3BhY2VzLmxlbmd0aCgpIC0gMSkgPT0gJ1xuJykgeworCQkJCQkJZXh0cmFTcGFjZXMgPSBleHRyYVNwYWNlcy5zdWJzdHJpbmcoMCwgZXh0cmFTcGFjZXMKKwkJCQkJCQkJLmxlbmd0aCgpIC0gMSk7CisJCQkJCQllbmRvZmZzZXQtLTsKKwkJCQkJfQorCQkJCQlpbnNlcnRTdHJpbmcoTWF0aC5taW4oZ2V0TGVuZ3RoKCksIGVuZG9mZnNldCksIGV4dHJhU3BhY2VzLAorCQkJCQkJCW51bGwpOworCQkJCX0KKwkJCX0KKwkJfQorCisJCXB1YmxpYyB2b2lkIHJlbW92ZShpbnQgb2ZmcywgaW50IGxlbikgdGhyb3dzIEJhZExvY2F0aW9uRXhjZXB0aW9uIHsKKworCQkJc3VwZXIucmVtb3ZlKG9mZnMsIGxlbik7CisJCQlFbGVtZW50IGUgPSBnZXRDaGFyYWN0ZXJFbGVtZW50KG9mZnMgLSBsZW4pOworCQkJY29tcHV0ZUxpbmtzKGUpOworCQl9CisKKwkJcHVibGljIHZvaWQgaW5zZXJ0U3RyaW5nKGludCBvZmZzLCBTdHJpbmcgc3RyLCBBdHRyaWJ1dGVTZXQgYSkKKwkJCQl0aHJvd3MgQmFkTG9jYXRpb25FeGNlcHRpb24geworCisJCQlzdXBlci5pbnNlcnRTdHJpbmcob2Zmcywgc3RyLCBhKTsKKwkJCUVsZW1lbnQgZSA9IGdldENoYXJhY3RlckVsZW1lbnQob2Zmcyk7CisJCQljb21wdXRlTGlua3MoZSk7CisJCX0KKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9UZXN0Q29ubmVjdGlvbi5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvVGVzdENvbm5lY3Rpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmYwOWJlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvVGVzdENvbm5lY3Rpb24uamF2YQpAQCAtMCwwICsxLDI5IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnRlc3Q7CisKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKKworcHVibGljIGNsYXNzIFRlc3RDb25uZWN0aW9uIHsKKworCUBUZXN0CisJcHVibGljIHZvaWQgdGVzdE5vb3AoKSB7CisJCQorCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L2FzZi9Bc2ZDb3B5UmlnaHRSZXBsYWNlLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9hc2YvQXNmQ29weVJpZ2h0UmVwbGFjZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmZjZhZWYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9hc2YvQXNmQ29weVJpZ2h0UmVwbGFjZS5qYXZhCkBAIC0wLDAgKzEsMjE1IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnRlc3QuYXNmOworCitpbXBvcnQgamF2YS5pby5CdWZmZXJlZFJlYWRlcjsKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5GaWxlT3V0cHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uRmlsZW5hbWVGaWx0ZXI7CitpbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbVJlYWRlcjsKK2ltcG9ydCBqYXZhLmlvLk91dHB1dFN0cmVhbVdyaXRlcjsKK2ltcG9ydCBqYXZhLmlvLlN0cmluZ1dyaXRlcjsKKworcHVibGljIGNsYXNzIEFzZkNvcHlSaWdodFJlcGxhY2UgeworCisJU3RyaW5nIGFzZl9jb3B5cmlnaHQgPSAiLypcbiIKKwkJCSsgIiAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmVcbiIKKwkJCSsgIiAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZVxuIgorCQkJKyAiICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb25cbiIKKwkJCSsgIiAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGVcbiIKKwkJCSsgIiAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGVcbiIKKwkJCSsgIiAqIFwiTGljZW5zZVwiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlXG4iCisJCQkrICIgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4iCisJCQkrICIgKlxuIgorCQkJKyAiICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiIKKwkJCSsgIiAqXG4iCisJCQkrICIgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsXG4iCisJCQkrICIgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhblxuIgorCQkJKyAiICogXCJBUyBJU1wiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTllcbiIKKwkJCSsgIiAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZVxuIgorCQkJKyAiICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9uc1xuIgorCQkJKyAiICogdW5kZXIgdGhlIExpY2Vuc2UuXG4iICsgIiAqL1xuIjsKKworCVN0cmluZyBhc2ZfeG1sX2NvcHlyaWdodCA9ICI8IS0tXG4iCisJCQkrICIgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmVcbiIKKwkJCSsgIiAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlXG4iCisJCQkrICIgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uXG4iCisJCQkrICIgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGVcbiIKKwkJCSsgIiAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZVxuIgorCQkJKyAiICBcIkxpY2Vuc2VcIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2VcbiIKKwkJCSsgIiAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuIgorCQkJKyAiICBcbiIgKyAiICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4iCisJCQkrICIgICAgCSAgXG4iCisJCQkrICIgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZyxcbiIKKwkJCSsgIiAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW5cbiIKKwkJCSsgIiAgXCJBUyBJU1wiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTllcbiIKKwkJCSsgIiAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlXG4iCisJCQkrICIgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnNcbiIKKwkJCSsgIiAgdW5kZXIgdGhlIExpY2Vuc2UuXG4iICsgIiAgXG4iICsgIi0tPlxuIjsKKwkKKwlTdHJpbmcgYXNmX3ZtX2NvcHlyaWdodCA9ICIjXG4iCisJCQkrICIjIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmVcbiIKKwkJCSsgIiMgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlXG4iCisJCQkrICIjIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uXG4iCisJCQkrICIjIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGVcbiIKKwkJCSsgIiMgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZVxuIgorCQkJKyAiIyBcIkxpY2Vuc2VcIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZVxuIgorCQkJKyAiIyB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4iCisJCQkrICIjXG4iCisJCQkrICIjICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4iCisJCQkrICIjXG4iCisJCQkrICIjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZyxcbiIKKwkJCSsgIiMgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW5cbiIKKwkJCSsgIiMgXCJBUyBJU1wiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTllcbiIKKwkJCSsgIiMgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlXG4iCisJCQkrICIjIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnNcbiIKKwkJCSsgIiMgdW5kZXIgdGhlIExpY2Vuc2UuXG4iICsgIiMvXG4iOworCisJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nLi4uIGFyZ3MpIHsKKwkJbmV3IEFzZkNvcHlSaWdodFJlcGxhY2UoKTsKKwl9CisKKwlwdWJsaWMgQXNmQ29weVJpZ2h0UmVwbGFjZSgpIHsKKwkJLy8gc2NhbkZvbGRlcihuZXcgRmlsZSgiLi9zcmMiKSk7CisJCS8vIHNjYW5Gb2xkZXIobmV3IEZpbGUoIi4vV2ViQ29udGVudC9sYW5ndWFnZXMvIikpOworCQkvLyBzY2FuRm9sZGVyKG5ldyBGaWxlKCIuL1dlYkNvbnRlbnQvc3JjLyIpKTsKKwkJLy8gc2NhbkZvbGRlcihuZXcgRmlsZSgiLi9XZWJDb250ZW50L1dFQi1JTkYvIikpOworCQkvLyBzY2FuRm9sZGVyKG5ldyBGaWxlKCIuL1dlYkNvbnRlbnQvb3Blbm1lZXRpbmdzLyIpKTsKKwkJc2NhbkZvbGRlcihuZXcgRmlsZSgiLi9zcmMvdGVtcGxhdGVzIikpOworCX0KKworCXByaXZhdGUgdm9pZCBzY2FuRm9sZGVyKEZpbGUgZm9sZGVyKSB7CisKKwkJZm9yIChGaWxlIGphdmFGaWxlIDogZm9sZGVyLmxpc3RGaWxlcyhuZXcgRmlsZW5hbWVGaWx0ZXIoKSB7CisJCQlwdWJsaWMgYm9vbGVhbiBhY2NlcHQoRmlsZSBiLCBTdHJpbmcgbmFtZSkgeworCQkJCXJldHVybiBuYW1lLmVuZHNXaXRoKCIuamF2YSIpIHx8IG5hbWUuZW5kc1dpdGgoIi52bSIpOworCQkJfQorCQl9KSkgeworCQkJc2NhbkFuZFdyaXRlSmF2YUZpbGUoamF2YUZpbGUpOworCQl9CisKKwkJZm9yIChGaWxlIGphdmFGaWxlIDogZm9sZGVyLmxpc3RGaWxlcyhuZXcgRmlsZW5hbWVGaWx0ZXIoKSB7CisJCQlwdWJsaWMgYm9vbGVhbiBhY2NlcHQoRmlsZSBiLCBTdHJpbmcgbmFtZSkgeworCQkJCXJldHVybiBuYW1lLmVuZHNXaXRoKCIueG1sIikgfHwgbmFtZS5lbmRzV2l0aCgiLmx6eCIpOworCQkJfQorCQl9KSkgeworCQkJc2NhbkFuZFdyaXRlWE1MRmlsZShqYXZhRmlsZSk7CisJCX0KKworCQlmb3IgKEZpbGUgZm9sZGVyRmlsZSA6IGZvbGRlci5saXN0RmlsZXMobmV3IEZpbGVuYW1lRmlsdGVyKCkgeworCQkJcHVibGljIGJvb2xlYW4gYWNjZXB0KEZpbGUgYiwgU3RyaW5nIG5hbWUpIHsKKwkJCQlGaWxlIGYgPSBuZXcgRmlsZShiLCBuYW1lKTsKKwkJCQlyZXR1cm4gZi5pc0RpcmVjdG9yeSgpOworCQkJfQorCQl9KSkgeworCQkJc2NhbkZvbGRlcihmb2xkZXJGaWxlKTsKKwkJfQorCX0KKworCXByaXZhdGUgdm9pZCBzY2FuQW5kV3JpdGVYTUxGaWxlKEZpbGUgamF2YUZpbGUpIHsKKwkJdHJ5IHsKKwkJCVN5c3RlbS5vdXQucHJpbnRsbigiUHJvY2Vzc2luZyAiICsgamF2YUZpbGUuZ2V0Q2Fub25pY2FsUGF0aCgpKTsKKworCQkJQnVmZmVyZWRSZWFkZXIgaXMgPSBuZXcgQnVmZmVyZWRSZWFkZXIobmV3IElucHV0U3RyZWFtUmVhZGVyKAorCQkJCQluZXcgRmlsZUlucHV0U3RyZWFtKGphdmFGaWxlKSwgIlVURi04IikpOworCisJCQlTdHJpbmcgbGluZTsKKwkJCVN0cmluZyBmaXJzdGxpbmUgPSAiIjsKKwkJCVN0cmluZ1dyaXRlciBzdHJXcml0ZXIgPSBuZXcgU3RyaW5nV3JpdGVyKCk7CisJCQlpbnQgaSA9IDA7CisKKwkJCXdoaWxlICgobGluZSA9IGlzLnJlYWRMaW5lKCkpICE9IG51bGwpIHsKKwkJCQlpZiAoaSA9PSAwKSB7CisJCQkJCWZpcnN0bGluZSA9IGxpbmU7CisJCQkJCQorCQkJCQlpZiAoZmlyc3RsaW5lLnN0YXJ0c1dpdGgoIjxjYW52YXMiKSkgeworCQkJCQkJc3RyV3JpdGVyLmFwcGVuZChhc2ZfeG1sX2NvcHlyaWdodCk7CisJCQkJCX0gZWxzZSBpZiAoZmlyc3RsaW5lLnN0YXJ0c1dpdGgoIjxsaWJyYXJ5IikpIHsKKwkJCQkJCXN0cldyaXRlci5hcHBlbmQoYXNmX3htbF9jb3B5cmlnaHQpOworCQkJCQl9CisJCQkJCQkJCisJCQkJCQorCQkJCX0gZWxzZSBpZiAoaSA9PSAxKSB7CisJCQkJCWlmIChmaXJzdGxpbmUuc3RhcnRzV2l0aCgiPD94bWwgIikKKwkJCQkJCQkmJiAhbGluZS5zdGFydHNXaXRoKCI8IS0tIikpIHsKKwkJCQkJCXN0cldyaXRlci5hcHBlbmQoYXNmX3htbF9jb3B5cmlnaHQpOworCQkJCQl9IGVsc2UgaWYgKGZpcnN0bGluZS5zdGFydHNXaXRoKCI8P3htbCAiKQorCQkJCQkJCSYmICFsaW5lLnN0YXJ0c1dpdGgoIjxsaWJyYXJ5IikpIHsKKwkJCQkJCXN0cldyaXRlci5hcHBlbmQoYXNmX3htbF9jb3B5cmlnaHQpOworCQkJCQl9IGVsc2UgaWYgKGZpcnN0bGluZS5zdGFydHNXaXRoKCI8P3htbCAiKQorCQkJCQkJCSYmICFsaW5lLnN0YXJ0c1dpdGgoIjxjYW52YXMiKSkgeworCQkJCQkJc3RyV3JpdGVyLmFwcGVuZChhc2ZfeG1sX2NvcHlyaWdodCk7CisJCQkJCX0KKwkJCQl9CisJCQkJc3RyV3JpdGVyLmFwcGVuZChsaW5lICsgIlxuIik7CisJCQkJaSsrOworCQkJfQorCQkJaXMuY2xvc2UoKTsKKworCQkJT3V0cHV0U3RyZWFtV3JpdGVyIG91dCA9IG5ldyBPdXRwdXRTdHJlYW1Xcml0ZXIoCisJCQkJCW5ldyBGaWxlT3V0cHV0U3RyZWFtKGphdmFGaWxlLmdldENhbm9uaWNhbFBhdGgoKSksICJVVEYtOCIpOworCisJCQlvdXQud3JpdGUoc3RyV3JpdGVyLnRvU3RyaW5nKCkpOworCQkJb3V0LmZsdXNoKCk7CisJCQlvdXQuY2xvc2UoKTsKKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQllcnIucHJpbnRTdGFja1RyYWNlKCk7CisJCX0KKwl9CisKKwlwcml2YXRlIHZvaWQgc2NhbkFuZFdyaXRlSmF2YUZpbGUoRmlsZSBqYXZhRmlsZSkgeworCQl0cnkgeworCQkJU3lzdGVtLm91dC5wcmludGxuKCJQcm9jZXNzaW5nICIgKyBqYXZhRmlsZS5nZXRDYW5vbmljYWxQYXRoKCkpOworCisJCQlCdWZmZXJlZFJlYWRlciBpcyA9IG5ldyBCdWZmZXJlZFJlYWRlcihuZXcgSW5wdXRTdHJlYW1SZWFkZXIoCisJCQkJCW5ldyBGaWxlSW5wdXRTdHJlYW0oamF2YUZpbGUpLCAiVVRGLTgiKSk7CisKKwkJCVN0cmluZyBsaW5lOworCQkJU3RyaW5nV3JpdGVyIHN0cldyaXRlciA9IG5ldyBTdHJpbmdXcml0ZXIoKTsKKwkJCWludCBpID0gMDsKKworCQkJd2hpbGUgKChsaW5lID0gaXMucmVhZExpbmUoKSkgIT0gbnVsbCkgeworCQkJCWlmIChpID09IDApIHsKKwkJCQkJaWYgKGxpbmUuc3RhcnRzV2l0aCgicGFja2FnZSAiKSkgeworCQkJCQkJc3RyV3JpdGVyLmFwcGVuZChhc2ZfY29weXJpZ2h0KTsKKwkJCQkJfSBlbHNlIGlmIChsaW5lLnN0YXJ0c1dpdGgoIiMjIE9wZW5NZWV0aW5ncyIpIAorCQkJCQkJCSYmIGphdmFGaWxlLmdldE5hbWUoKS5lbmRzV2l0aCgiLnZtIikpIHsKKwkJCQkJCXN0cldyaXRlci5hcHBlbmQoYXNmX3ZtX2NvcHlyaWdodCk7CisJCQkJCX0KKwkJCQl9CisJCQkJc3RyV3JpdGVyLmFwcGVuZChsaW5lICsgIlxuIik7CisJCQkJaSsrOworCQkJfQorCQkJaXMuY2xvc2UoKTsKKwkJCQorCQkJT3V0cHV0U3RyZWFtV3JpdGVyIG91dCA9IG5ldyBPdXRwdXRTdHJlYW1Xcml0ZXIoCisJCQkJCW5ldyBGaWxlT3V0cHV0U3RyZWFtKGphdmFGaWxlLmdldENhbm9uaWNhbFBhdGgoKSksICJVVEYtOCIpOworCisJCQlvdXQud3JpdGUoc3RyV3JpdGVyLnRvU3RyaW5nKCkpOworCQkJb3V0LmZsdXNoKCk7CisJCQlvdXQuY2xvc2UoKTsKKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQllcnIucHJpbnRTdGFja1RyYWNlKCk7CisJCX0KKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L2JhY2t1cC9UZXN0T2xkQmFja3Vwcy5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvYmFja3VwL1Rlc3RPbGRCYWNrdXBzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDNmYTNhYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L2JhY2t1cC9UZXN0T2xkQmFja3Vwcy5qYXZhCkBAIC0wLDAgKzEsMTA2IEBACisvKg0KKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgKiB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnRlc3QuYmFja3VwOw0KKw0KK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRUcnVlOw0KK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5mYWlsOw0KKw0KK2ltcG9ydCBqYXZhLmlvLkZpbGU7DQoraW1wb3J0IGphdmEuaW8uRmlsZUlucHV0U3RyZWFtOw0KKw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY2FsZW5kYXIuZGFvcy5BcHBvaW50bWVudERhbzsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jYWxlbmRhci5kYW9zLk1lZXRpbmdNZW1iZXJEYW87DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY29uZmVyZW5jZS5Sb29tTWFuYWdlcjsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jb25mZXJlbmNlLmRhby5Sb29tRGFvOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmZpbGUuZGFvLkZpbGVFeHBsb3Jlckl0ZW1EYW87DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEudXNlci5kYW8uT3JnYW5pc2F0aW9uRGFvOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuZGFvLlVzZXJzRGFvOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5zZXJ2bGV0Lm91dHB1dGhhbmRsZXIuQmFja3VwSW1wb3J0Q29udHJvbGxlcjsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudGVzdC5BYnN0cmFjdE9wZW5tZWV0aW5nc1NwcmluZ1Rlc3Q7DQoraW1wb3J0IG9yZy5qdW5pdC5UZXN0Ow0KK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOw0KK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5BdXRvd2lyZWQ7DQorDQorcHVibGljIGNsYXNzIFRlc3RPbGRCYWNrdXBzIGV4dGVuZHMgQWJzdHJhY3RPcGVubWVldGluZ3NTcHJpbmdUZXN0IHsNCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcigNCisJCQlUZXN0T2xkQmFja3Vwcy5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOw0KKwkNCisJQEF1dG93aXJlZA0KKwlwcml2YXRlIEJhY2t1cEltcG9ydENvbnRyb2xsZXIgYmFja3VwQ29udHJvbGxlcjsNCisJQEF1dG93aXJlZA0KKwlwcml2YXRlIE9yZ2FuaXNhdGlvbkRhbyBvcmdhbmlzYXRpb25EYW87DQorCUBBdXRvd2lyZWQNCisJcHJpdmF0ZSBVc2Vyc0RhbyB1c2Vyc0RhbzsNCisJQEF1dG93aXJlZA0KKwlwcml2YXRlIFJvb21EYW8gcm9vbURhbzsNCisJQEF1dG93aXJlZA0KKwlwcml2YXRlIFJvb21NYW5hZ2VyIHJvb21NYW5hZ2VyOw0KKwlAQXV0b3dpcmVkDQorCXByaXZhdGUgQXBwb2ludG1lbnREYW8gYXBwb2ludG1lbnREYW87DQorCUBBdXRvd2lyZWQNCisJcHJpdmF0ZSBNZWV0aW5nTWVtYmVyRGFvIG1lZXRpbmdNZW1iZXJEYW87DQorCUBBdXRvd2lyZWQNCisJcHJpdmF0ZSBGaWxlRXhwbG9yZXJJdGVtRGFvIGZpbGVFeHBsb3Jlckl0ZW1EYW87DQorDQorCUBUZXN0DQorCXB1YmxpYyB2b2lkIGltcG9ydE9sZFZlcnNpb25zKCkgew0KKwkJU3RyaW5nIGJhY2t1cHNEaXIgPSBTeXN0ZW0uZ2V0UHJvcGVydHkoImJhY2t1cHMuZGlyIiwgIi4iKTsNCisJCUZpbGUgYmFja3Vwc0hvbWUgPSBuZXcgRmlsZShiYWNrdXBzRGlyKTsNCisJCQ0KKwkJaWYgKCFiYWNrdXBzSG9tZS5leGlzdHMoKSB8fCAhYmFja3Vwc0hvbWUuaXNEaXJlY3RvcnkoKSkgew0KKwkJCWZhaWwoIkludmFsaWQgZGlyZWN0b3J5IGlzIHNwZWNpZmllZCBmb3IgYmFja3VwIGZpbGVzOiAiICsgYmFja3Vwc0Rpcik7DQorCQl9DQorCQlsb25nIG9yZ0NvdW50ID0gMDsNCisJCWxvbmcgdXNlckNvdW50ID0gMDsNCisJCWxvbmcgcm9vbUNvdW50ID0gMDsNCisJCWxvbmcgcm9vbU9yZ0NvdW50ID0gMDsNCisJCWxvbmcgYXBwdENvdW50ID0gMDsNCisJCWxvbmcgbWVldGluZ01lbWJlcnNDb3VudCA9IDA7DQorCQlmb3IgKEZpbGUgYmFja3VwIDogYmFja3Vwc0hvbWUubGlzdEZpbGVzKCkpIHsNCisJCQlsb2cuZGVidWcoIkltcG9ydCBvZiBiYWNrdXAgZmlsZSA6ICciICsgYmFja3VwLmdldE5hbWUoKSArICInIGlzIHN0YXJ0ZWQgLi4uIik7DQorCQkJdHJ5IHsNCisJCQkJYmFja3VwQ29udHJvbGxlci5wZXJmb3JtSW1wb3J0KG5ldyBGaWxlSW5wdXRTdHJlYW0oYmFja3VwKSk7DQorCQkJCWxvbmcgbmV3T3JnQ291bnQgPSBvcmdhbmlzYXRpb25EYW8uY291bnQoKTsNCisJCQkJbG9uZyBuZXdVc2VyQ291bnQgPSB1c2Vyc0Rhby5jb3VudCgpOw0KKwkJCQlsb25nIG5ld1Jvb21Db3VudCA9IHJvb21EYW8uY291bnQoKTsNCisJCQkJbG9uZyBuZXdSb29tT3JnQ291bnQgPSByb29tTWFuYWdlci5nZXRSb29tc09yZ2FuaXNhdGlvbnMoKS5zaXplKCk7DQorCQkJCWxvbmcgbmV3QXBwdENvdW50ID0gYXBwb2ludG1lbnREYW8uZ2V0QXBwb2ludG1lbnRzKCkuc2l6ZSgpOw0KKwkJCQlsb25nIG5ld01lZXRpbmdNZW1iZXJzQ291bnQgPSBtZWV0aW5nTWVtYmVyRGFvLmdldE1lZXRpbmdNZW1iZXJzKCkuc2l6ZSgpOw0KKwkJCQlhc3NlcnRUcnVlKCJaZXJvIG9yZ2FuaXphdGlvbnMgd2VyZSBpbXBvcnRlZCIsIG5ld09yZ0NvdW50ID4gb3JnQ291bnQpOw0KKwkJCQlhc3NlcnRUcnVlKCJaZXJvIHVzZXJzIHdlcmUgaW1wb3J0ZWQiLCBuZXdVc2VyQ291bnQgPiB1c2VyQ291bnQpOw0KKwkJCQlhc3NlcnRUcnVlKCJaZXJvIHJvb21zIHdlcmUgaW1wb3J0ZWQiLCBuZXdSb29tQ291bnQgPiByb29tQ291bnQpOw0KKwkJCQlhc3NlcnRUcnVlKCJaZXJvIHJvb20gb3JnYW5pemF0aW9ucyB3ZXJlIGltcG9ydGVkIiwgbmV3Um9vbU9yZ0NvdW50ID4gcm9vbU9yZ0NvdW50KTsNCisJCQkJYXNzZXJ0VHJ1ZSgiWmVybyBhcHBvaW50bWVudHMgd2VyZSBpbXBvcnRlZCIsIG5ld0FwcHRDb3VudCA+IGFwcHRDb3VudCk7DQorCQkJCWFzc2VydFRydWUoIlplcm8gbWVldGluZyBtZW1iZXJzIHdlcmUgaW1wb3J0ZWQiLCBuZXdNZWV0aW5nTWVtYmVyc0NvdW50ID4gbWVldGluZ01lbWJlcnNDb3VudCk7DQorCQkJCQ0KKwkJCQlvcmdDb3VudCA9IG5ld09yZ0NvdW50Ow0KKwkJCQl1c2VyQ291bnQgPSBuZXdVc2VyQ291bnQ7DQorCQkJCXJvb21Db3VudCA9IG5ld1Jvb21Db3VudDsNCisJCQkJcm9vbU9yZ0NvdW50ID0gbmV3Um9vbU9yZ0NvdW50Ow0KKwkJCQlhcHB0Q291bnQgPSBuZXdBcHB0Q291bnQ7DQorCQkJCW1lZXRpbmdNZW1iZXJzQ291bnQgPSBuZXdNZWV0aW5nTWVtYmVyc0NvdW50Ow0KKwkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7DQorCQkJCXRocm93IG5ldyBSdW50aW1lRXhjZXB0aW9uKCJVbmV4cGVjdGVkIGV4Y2VwdGlvbiB3aGlsZSBpbXBvcnRpbmcgYmFja3VwOiAiICsgYmFja3VwLmdldE5hbWUoKSwgZSk7DQorCQkJfQ0KKwkJCWxvZy5kZWJ1ZygiLi4uIERvbmUuIik7DQorCQl9DQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvY2FsZW5kYXIvVGVzdEFwcG9pbnRtZW50QWRkQXBwb2ludG1lbnQuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L2NhbGVuZGFyL1Rlc3RBcHBvaW50bWVudEFkZEFwcG9pbnRtZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGY0NWJhYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L2NhbGVuZGFyL1Rlc3RBcHBvaW50bWVudEFkZEFwcG9pbnRtZW50LmphdmEKQEAgLTAsMCArMSwxMTUgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudGVzdC5jYWxlbmRhcjsKKworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydFRydWU7CisKK2ltcG9ydCBqYXZhLnV0aWwuQ2FsZW5kYXI7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLkxpbmtlZExpc3Q7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLk1hcDsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNhbGVuZGFyLm1hbmFnZW1lbnQuQXBwb2ludG1lbnRMb2dpYzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy50ZXN0LkFic3RyYWN0T3Blbm1lZXRpbmdzU3ByaW5nVGVzdDsKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uQXV0b3dpcmVkOworCitwdWJsaWMgY2xhc3MgVGVzdEFwcG9pbnRtZW50QWRkQXBwb2ludG1lbnQgZXh0ZW5kcworCQlBYnN0cmFjdE9wZW5tZWV0aW5nc1NwcmluZ1Rlc3QgeworCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcigKKwkJCVRlc3RBcHBvaW50bWVudEFkZEFwcG9pbnRtZW50LmNsYXNzLAorCQkJT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCisJQEF1dG93aXJlZAorCXByaXZhdGUgQXBwb2ludG1lbnRMb2dpYyBhcHBvaW50bWVudExvZ2ljOworCisJQFRlc3QKKwlwdWJsaWMgdm9pZCBzYXZlQXBwb2ludG1lbnQoKSB7CisJCWxvZy5kZWJ1ZygiLSAxIE1lZXRpbmdSZW1pbmRlckpvYi5leGVjdXRlIik7CisJCWxvZy53YXJuKCItIDIgTWVldGluZ1JlbWluZGVySm9iLmV4ZWN1dGUiKTsKKworCQl0cnkgeworCQkJCisJCQkvL1NpbXVsYXRlIHdlYmFwcCBwYXRoCisJCQkvL1Njb3BlQXBwbGljYXRpb25BZGFwdGVyLndlYkFwcFBhdGggPSAiLi9XZWJDb250ZW50IjsKKworCQkJQ2FsZW5kYXIgc3RhcnQgPSBDYWxlbmRhci5nZXRJbnN0YW5jZSgpOworCQkJc3RhcnQuc2V0VGltZUluTWlsbGlzKHN0YXJ0LmdldFRpbWVJbk1pbGxpcygpICsgNjAwMDAwKTsKKworCQkJQ2FsZW5kYXIgZW5kID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTsKKwkJCWVuZC5zZXRUaW1lSW5NaWxsaXMoc3RhcnQuZ2V0VGltZUluTWlsbGlzKCkgKyA2MDAwMDApOworCisJCQlTdHJpbmcgYXBwb2ludG1lbnROYW1lID0gIlRlc3QgMDEiOworCQkJU3RyaW5nIGFwcG9pbnRtZW50RGVzY3JpcHRpb24gPSAiRGVzY3IiOworCQkJTG9uZyB1c2Vyc19pZCA9IDFMOworCQkJU3RyaW5nIGFwcG9pbnRtZW50TG9jYXRpb24gPSAib2ZmaWNlIjsKKwkJCUJvb2xlYW4gaXNNb250aGx5ID0gZmFsc2U7CisJCQlEYXRlIGFwcG9pbnRtZW50c3RhcnQgPSBzdGFydC5nZXRUaW1lKCk7CisJCQlEYXRlIGFwcG9pbnRtZW50ZW5kID0gZW5kLmdldFRpbWUoKTsKKwkJCUJvb2xlYW4gaXNEYWlseSA9IGZhbHNlOworCQkJTG9uZyBjYXRlZ29yeUlkID0gMUw7CisJCQlCb29sZWFuIGlzV2Vla2x5ID0gZmFsc2U7CisJCQlMb25nIHJlbWluZCA9IDNMOworCQkJQm9vbGVhbiBpc1llYXJseSA9IGZhbHNlOworCQkJTGlzdDxNYXA8U3RyaW5nLCBTdHJpbmc+PiBtbUNsaWVudCA9IG5ldyBMaW5rZWRMaXN0PE1hcDxTdHJpbmcsIFN0cmluZz4+KCk7CisJCQlmb3IgKGludCBpID0gMDsgaSA8IDE7IGkrKykgeworCQkJCW1tQ2xpZW50LmFkZChjcmVhdGVDbGllbnRPYmooImZpcnN0bmFtZSIgKyBpLCAibGFzdG5hbWUiICsgaSwKKwkJCQkJCSJmaXJzdCIgKyBpICsgIi5sYXN0IiArIGkgKyAiQHdlYmJhc2UtZGVzaWduLmRlIiwgIkV0Yy9HTVQrMSIpKTsKKwkJCX0KKwkJCUxvbmcgbGFuZ3VhZ2VfaWQgPSAxTDsKKwkJCVN0cmluZyBiYXNlVXJsID0gImh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3MvIjsKKwkJCUxvbmcgcm9vbVR5cGUgPSAxTDsKKworCQkJTG9uZyBpZCA9IGFwcG9pbnRtZW50TG9naWMuc2F2ZUFwcG9pbnRtZW50KGFwcG9pbnRtZW50TmFtZSwKKwkJCQkJdXNlcnNfaWQsIGFwcG9pbnRtZW50TG9jYXRpb24sIGFwcG9pbnRtZW50RGVzY3JpcHRpb24sCisJCQkJCWFwcG9pbnRtZW50c3RhcnQsIGFwcG9pbnRtZW50ZW5kLCBpc0RhaWx5LCBpc1dlZWtseSwKKwkJCQkJaXNNb250aGx5LCBpc1llYXJseSwgY2F0ZWdvcnlJZCwgcmVtaW5kLCBtbUNsaWVudCwKKwkJCQkJcm9vbVR5cGUsIGJhc2VVcmwsIGxhbmd1YWdlX2lkLCBmYWxzZSwgIiIsIC0xKTsKKworCQkJCisJCQlUaHJlYWQuc2xlZXAoMzAwMCk7CisJCQkKKwkJCWFwcG9pbnRtZW50TG9naWMuZG9TY2hlZHVsZWRNZWV0aW5nUmVtaW5kZXIoKTsKKwkJCQorCQkJVGhyZWFkLnNsZWVwKDMwMDApOworCQkJCisJCQlhc3NlcnRUcnVlKCJTYXZlZCBhcHBvaW50bWVudCBzaG91bGQgaGF2ZSB2YWxpZCBpZDogIiArIGlkLCBpZCAhPSBudWxsICYmIGlkID4gMCk7CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbc2F2ZUFwcG9pbnRtZW50XSIsIGVycik7CisJCX0KKwl9CisKKwlwcml2YXRlIE1hcDxTdHJpbmcsIFN0cmluZz4gY3JlYXRlQ2xpZW50T2JqKFN0cmluZyBmaXJzdG5hbWUsCisJCQlTdHJpbmcgbGFzdG5hbWUsIFN0cmluZyBlbWFpbCwgU3RyaW5nIGpOYW1lVGltZVpvbmUpIHsKKwkJTWFwPFN0cmluZywgU3RyaW5nPiBjbGllbnQgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4oKTsKKwkJY2xpZW50LnB1dCgiZmlyc3RuYW1lIiwgZmlyc3RuYW1lKTsKKwkJY2xpZW50LnB1dCgibGFzdG5hbWUiLCBsYXN0bmFtZSk7CisJCWNsaWVudC5wdXQoImVtYWlsIiwgZW1haWwpOworCQljbGllbnQucHV0KCJqTmFtZVRpbWVab25lIiwgak5hbWVUaW1lWm9uZSk7CisJCXJldHVybiBjbGllbnQ7CisJfQorCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9jYWxlbmRhci9UZXN0QXBwb2ludG1lbnRTY2hlZHVsZXJUYXNrLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9jYWxlbmRhci9UZXN0QXBwb2ludG1lbnRTY2hlZHVsZXJUYXNrLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDk5MjdlNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L2NhbGVuZGFyL1Rlc3RBcHBvaW50bWVudFNjaGVkdWxlclRhc2suamF2YQpAQCAtMCwwICsxLDUxIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnRlc3QuY2FsZW5kYXI7CisKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRUcnVlOworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY2FsZW5kYXIubWFuYWdlbWVudC5BcHBvaW50bWVudExvZ2ljOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnRlc3QuQWJzdHJhY3RPcGVubWVldGluZ3NTcHJpbmdUZXN0OworaW1wb3J0IG9yZy5qdW5pdC5UZXN0OworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5BdXRvd2lyZWQ7CisKK3B1YmxpYyBjbGFzcyBUZXN0QXBwb2ludG1lbnRTY2hlZHVsZXJUYXNrIGV4dGVuZHMgQWJzdHJhY3RPcGVubWVldGluZ3NTcHJpbmdUZXN0IHsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoVGVzdEFwcG9pbnRtZW50U2NoZWR1bGVyVGFzay5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCQorCUBBdXRvd2lyZWQKKwlwcml2YXRlIEFwcG9pbnRtZW50TG9naWMgYXBwb2ludG1lbnRMb2dpYzsKKwkKKwlAVGVzdAorCXB1YmxpYyB2b2lkIGRvSXQoKSB7CisJCWxvZy5kZWJ1ZygiLSAxIE1lZXRpbmdSZW1pbmRlckpvYi5leGVjdXRlIik7CisJCWxvZy53YXJuKCItIDIgTWVldGluZ1JlbWluZGVySm9iLmV4ZWN1dGUiKTsKKwkJdHJ5IHsKKwkJCWFwcG9pbnRtZW50TG9naWMuZG9TY2hlZHVsZWRNZWV0aW5nUmVtaW5kZXIoKTsKKwkJCQorCQkJYXNzZXJ0VHJ1ZSh0cnVlKTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycil7CisJCQlsb2cuZXJyb3IoImV4ZWN1dGUiLGVycik7CisJCX0KKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L2NhbGVuZGFyL1Rlc3REYXRhYmFzZVN0cnVjdHVyZUFwcG9pbnRtZW50LmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9jYWxlbmRhci9UZXN0RGF0YWJhc2VTdHJ1Y3R1cmVBcHBvaW50bWVudC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiYmQyOGIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9jYWxlbmRhci9UZXN0RGF0YWJhc2VTdHJ1Y3R1cmVBcHBvaW50bWVudC5qYXZhCkBAIC0wLDAgKzEsOTUgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudGVzdC5jYWxlbmRhcjsKKworCisKK2ltcG9ydCBqYXZhLnRleHQuU2ltcGxlRGF0ZUZvcm1hdDsKK2ltcG9ydCBqYXZhLnV0aWwuQ2FsZW5kYXI7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitpbXBvcnQgb3JnLmFwYWNoZS5sb2c0ai5Mb2dnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jYWxlbmRhci5kYW9zLkFwcG9pbnRtZW50RGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmNhbGVuZGFyLkFwcG9pbnRtZW50OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnRlc3QuQWJzdHJhY3RPcGVubWVldGluZ3NTcHJpbmdUZXN0OworaW1wb3J0IG9yZy5qdW5pdC5UZXN0OworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKKworCisKK3B1YmxpYyBjbGFzcyBUZXN0RGF0YWJhc2VTdHJ1Y3R1cmVBcHBvaW50bWVudCBleHRlbmRzIEFic3RyYWN0T3Blbm1lZXRpbmdzU3ByaW5nVGVzdCB7CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gTG9nZ2VyLmdldExvZ2dlcihUZXN0RGF0YWJhc2VTdHJ1Y3R1cmVBcHBvaW50bWVudC5jbGFzcyk7CisJQEF1dG93aXJlZAorCXByaXZhdGUgQXBwb2ludG1lbnREYW8gYXBwb2ludG1lbnREYW87CisKKwlAVGVzdAorCXB1YmxpYyB2b2lkIHRlc3RBZGRpbmdHcm91cCgpeworCisJCXRyeSB7CisJCQkKKwkJCQlDYWxlbmRhciBjYWwgPSBDYWxlbmRhci5nZXRJbnN0YW5jZSgpOworCQkJCWNhbC5zZXQoMjAwOCwgOSwgMik7CisJCQkJY2FsLmdldChDYWxlbmRhci5EQVlfT0ZfTU9OVEgpOworCQkJCWNhbC5nZXRUaW1lKCk7CisJCQkJCisJCQkJU2ltcGxlRGF0ZUZvcm1hdCBmb3JtYXQgPSBuZXcgU2ltcGxlRGF0ZUZvcm1hdCggInl5eXktTU0tZGQiICk7CisJCQkJRGF0ZSBkYXRlID0gZm9ybWF0LnBhcnNlKCAiMjAwOC0xNy0wOCIgKTsKKwkJCQlEYXRlIGRhdGUyID0gZm9ybWF0LnBhcnNlKCAiMjAwOC0xOC0wOCIgKTsKKwkJCisJCQkJTGlzdDxBcHBvaW50bWVudD4gbGlzdEFwcG9pbnRzID0JYXBwb2ludG1lbnREYW8uZ2V0QXBwb2ludG1lbnRzQnlSYW5nZSgxTCwgZGF0ZSwgZGF0ZTIpOworCQkJLy9MaXN0PEFwcG9pbnRtZW50PiBsaXN0QXBwb2ludHMgPSBBcHBvaW50bWVudERhb0ltcGwuZ2V0SW5zdGFuY2UoKS5zZWFyY2hBcHBvaW50bWVudHNCeU5hbWUoIiUiKTsKKwkJCS8vQXBwb2ludG1lbnREYW9JbXBsLmdldEluc3RhbmNlKCkuZ2V0TmV4dEFwcG9pbnRtZW50QnlJZCgxTCk7CisJCQkvL0FwcG9pbnRtZW50RGFvSW1wbC5nZXRJbnN0YW5jZSgpLmFkZEFwcG9pbnRtZW50KCJtZXpvIiwxTCwgIlBmb3J6aGVpbSIsICJ6d2VpdGVyIiwgQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKS5nZXRUaW1lKCkgLCAKKwkJCQkvL2RhdGUsIG51bGwsIHRydWUsIG51bGwsIG51bGwsIDFMLDFMKTsKKwkJCS8vQXBwb2ludG1lbnREYW9JbXBsLmdldEluc3RhbmNlKCkuYWRkQXBwb2ludG1lbnQoInRlc3RhcCIsICJlcnN0ZXIgVGVzdCIsQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKS5nZXRUaW1lKCkgLCAKKwkJCQkJLy8vQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKS5nZXRUaW1lKCksIHRydWUsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIG5ldyBMb25nKDEpLCAxTCk7CisJCQlsb2cuZGVidWcoIkFuemFobDogIitsaXN0QXBwb2ludHMuc2l6ZSgpKTsKKwkJCQorCQkJCisJCQlmb3IgKEFwcG9pbnRtZW50IGFwcG9pbnRzIDogbGlzdEFwcG9pbnRzKSB7CisJCQkJbG9nLmRlYnVnKCJUZXJtaW46ICIrYXBwb2ludHMuZ2V0QXBwb2ludG1lbnROYW1lKCkrIiBzdGFydERhdGU6ICIrYXBwb2ludHMuZ2V0QXBwb2ludG1lbnRTdGFydHRpbWUoKSsgIiBlbmREYXRlOiAiK2FwcG9pbnRzLmdldEFwcG9pbnRtZW50RW5kdGltZSgpKTsKKwkJCQlsb2cuZGVidWcoIk1lZXRpbmdNZW1iZXJzOiAiK2FwcG9pbnRzLmdldE1lZXRpbmdNZW1iZXIoKS5zaXplKCkpOworCQkJfQorCQkJCisJCQlmb3IgKEl0ZXJhdG9yPEFwcG9pbnRtZW50PiBpdGVyID0gbGlzdEFwcG9pbnRzLml0ZXJhdG9yKCk7aXRlci5oYXNOZXh0KCk7KSB7CisJCQkJbG9nLmRlYnVnKCIiK2l0ZXIubmV4dCgpKTsKKwkJCX0KKwkJCQorCQkJLy9BcHBvaW50bWVudERhb0ltcGwuZ2V0SW5zdGFuY2UoKS51cGRhdGVBcHBvaW50bWVudCgxTCwibmV1IiwgImVyc3RlciBUZXN0IixDYWxlbmRhci5nZXRJbnN0YW5jZSgpLmdldFRpbWUoKSAsIAorCQkJCQkvL0NhbGVuZGFyLmdldEluc3RhbmNlKCkuZ2V0VGltZSgpLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBuZXcgTG9uZygxKSk7CisJCQkvL2xvZy5kZWJ1ZygiQXBwb2ludG1lbnRSZW1pbmRlclR5cERhb0ltcGw6ICIrYXBwb2ludG1lbnRSZW1pbmRlclR5cERhb0ltcGwuZ2V0QXBwb2ludG1lbnRSZW1pbmRlclR5cEJ5SWQoMUwpKTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCisJCQlsb2cuZXJyb3IoIlt0ZXN0QWRkaW5nR3JvdXBdIixlcnIpOworCisJCX0KKworCQkKKworCQkKKworCX0KKworCisKK30KKwpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvY2FsZW5kYXIvVGVzdERhdGFiYXNlU3RydWN0dXJlQXBwb2ludG1lbnRSZW1pbmRlclR5cC5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvY2FsZW5kYXIvVGVzdERhdGFiYXNlU3RydWN0dXJlQXBwb2ludG1lbnRSZW1pbmRlclR5cC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhYjY3NGUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9jYWxlbmRhci9UZXN0RGF0YWJhc2VTdHJ1Y3R1cmVBcHBvaW50bWVudFJlbWluZGVyVHlwLmphdmEKQEAgLTAsMCArMSw3NyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy50ZXN0LmNhbGVuZGFyOworCisvL2ltcG9ydCBncm9vdnkuc3FsLlNxbDsKKworaW1wb3J0IGphdmEudXRpbC5DYWxlbmRhcjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworaW1wb3J0IG9yZy5hcGFjaGUubG9nNGouTG9nZ2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY2FsZW5kYXIuZGFvcy5BcHBvaW50bWVudFJlbWluZGVyVHlwRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmNhbGVuZGFyLkFwcG9pbnRtZW50UmVtaW5kZXJUeXBzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnRlc3QuQWJzdHJhY3RPcGVubWVldGluZ3NTcHJpbmdUZXN0OworaW1wb3J0IG9yZy5qdW5pdC5UZXN0OworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKKworcHVibGljIGNsYXNzIFRlc3REYXRhYmFzZVN0cnVjdHVyZUFwcG9pbnRtZW50UmVtaW5kZXJUeXAgZXh0ZW5kcyBBYnN0cmFjdE9wZW5tZWV0aW5nc1NwcmluZ1Rlc3QgeworCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IExvZ2dlcgorCQkJLmdldExvZ2dlcihUZXN0RGF0YWJhc2VTdHJ1Y3R1cmVBcHBvaW50bWVudFJlbWluZGVyVHlwLmNsYXNzKTsKKworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEFwcG9pbnRtZW50UmVtaW5kZXJUeXBEYW8gYXBwb2ludG1lbnRSZW1pbmRlclR5cERhb0ltcGw7CisKKwlAVGVzdAorCXB1YmxpYyB2b2lkIHRlc3RBZGRpbmdHcm91cCgpIHsKKworCQl0cnkgeworCisJCQlDYWxlbmRhciBjYWwgPSBDYWxlbmRhci5nZXRJbnN0YW5jZSgpOworCQkJY2FsLnNldCgyMDA4LCA5LCAyKTsKKwkJCWNhbC5nZXQoQ2FsZW5kYXIuREFZX09GX01PTlRIKTsKKwkJCWNhbC5nZXRUaW1lKCk7CisKKwkJCWFwcG9pbnRtZW50UmVtaW5kZXJUeXBEYW9JbXBsLmFkZEFwcG9pbnRtZW50UmVtaW5kZXJUeXBzKDFMLAorCQkJCQkidGVzdCA1IG1pbiIpOworCQkJTGlzdDxBcHBvaW50bWVudFJlbWluZGVyVHlwcz4gbGlzdEFwcG9pbnRzID0gYXBwb2ludG1lbnRSZW1pbmRlclR5cERhb0ltcGwKKwkJCQkJLmdldEFwcG9pbnRtZW50UmVtaW5kZXJUeXBMaXN0KCk7CisKKwkJCWxvZy5kZWJ1ZygiQW56YWhsOiAiICsgbGlzdEFwcG9pbnRzLnNpemUoKSk7CisKKwkJCWZvciAoQXBwb2ludG1lbnRSZW1pbmRlclR5cHMgYXBwb2ludHMgOiBsaXN0QXBwb2ludHMpIHsKKwkJCQkvLyBsb2cuZGVidWcoIlRlcm1pbjogIithcHBvaW50cy5nZXRBcHBvaW50bWVudE5hbWUoKSsiIHN0YXJ0RGF0ZTogIithcHBvaW50cy5nZXRBcHBvaW50bWVudFN0YXJ0dGltZSgpKworCQkJCS8vICIgZW5kRGF0ZTogIithcHBvaW50cy5nZXRBcHBvaW50bWVudEVuZHRpbWUoKSk7CisJCQkJbG9nLmRlYnVnKCJBcHBvaW50bWVudFJlbWluZGVyVHlwczogIiArIGFwcG9pbnRzLmdldE5hbWUoKSk7CisJCQl9CisKKwkJCS8vIGZvciAoSXRlcmF0b3I8QXBwb2ludG1lbnQ+IGl0ZXIgPQorCQkJLy8gbGlzdEFwcG9pbnRzLml0ZXJhdG9yKCk7aXRlci5oYXNOZXh0KCk7KSB7CisJCQkvLyBsb2cuZGVidWcoaXRlci5uZXh0KCkpOworCQkJLy8gfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKworCQkJbG9nLmVycm9yKCJbdGVzdEFkZGluZ0dyb3VwXSIsIGVycik7CisKKwkJfQorCisJfQorCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9jYWxlbmRhci9UZXN0RGF0YWJhc2VTdHJ1Y3R1cmVDYXRlZ29yeS5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvY2FsZW5kYXIvVGVzdERhdGFiYXNlU3RydWN0dXJlQ2F0ZWdvcnkuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWE1OGVlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvY2FsZW5kYXIvVGVzdERhdGFiYXNlU3RydWN0dXJlQ2F0ZWdvcnkuamF2YQpAQCAtMCwwICsxLDY1IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnRlc3QuY2FsZW5kYXI7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworaW1wb3J0IG9yZy5hcGFjaGUubG9nNGouTG9nZ2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY2FsZW5kYXIuZGFvcy5BcHBvaW50bWVudENhdGVnb3J5RGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmNhbGVuZGFyLkFwcG9pbnRtZW50Q2F0ZWdvcnk7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudGVzdC5BYnN0cmFjdE9wZW5tZWV0aW5nc1NwcmluZ1Rlc3Q7CitpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uQXV0b3dpcmVkOworCitwdWJsaWMgY2xhc3MgVGVzdERhdGFiYXNlU3RydWN0dXJlQ2F0ZWdvcnkgZXh0ZW5kcyBBYnN0cmFjdE9wZW5tZWV0aW5nc1NwcmluZ1Rlc3QgeworCisJQEF1dG93aXJlZAorCXByaXZhdGUgQXBwb2ludG1lbnRDYXRlZ29yeURhbyBhcHBvaW50bWVudENhdGVnb3J5RGFvSW1wbDsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBMb2dnZXIKKwkJCS5nZXRMb2dnZXIoVGVzdERhdGFiYXNlU3RydWN0dXJlQ2F0ZWdvcnkuY2xhc3MpOworCisJQFRlc3QKKwlwdWJsaWMgdm9pZCB0ZXN0QWRkaW5nR3JvdXAoKSB7CisKKwkJdHJ5IHsKKworCQkJLy8gYXBwb2ludG1lbnRDYXRlZ29yeURhb0ltcGwuYWRkQXBwb2ludG1lbnRDYXRlZ29yeSgyTCwgIm5ldTIiLAorCQkJLy8gInRlc3QiKTsKKwkJCS8vIGFwcG9pbnRtZW50Q2F0ZWdvcnlEYW9JbXBsLmFkZEFwcG9pbnRtZW50Q2F0ZWdvcnkoImRyaXR0ZSIpOworCQkJLy8gYXBwb2ludG1lbnRDYXRlZ29yeURhb0ltcGwudXBkYXRlQXBwb2ludG1lbnRDYXRlZ29yeSgyTCwgImFsdCIpOworCisJCQlMaXN0PEFwcG9pbnRtZW50Q2F0ZWdvcnk+IGFwcG9pbnRtZW50Q2F0ZWdvcnkgPSBhcHBvaW50bWVudENhdGVnb3J5RGFvSW1wbAorCQkJCQkuZ2V0QXBwb2ludG1lbnRDYXRlZ29yeUxpc3QoKTsKKwkJCWxvZy5kZWJ1ZygiQW56YWhsOiAiICsgYXBwb2ludG1lbnRDYXRlZ29yeS5zaXplKCkpOworCisJCQlmb3IgKGludCB4ID0gMDsgeCA8IGFwcG9pbnRtZW50Q2F0ZWdvcnkuc2l6ZSgpOyB4KyspIHsKKwkJCQlsb2cuZGVidWcoImlkOiAiICsgYXBwb2ludG1lbnRDYXRlZ29yeS5nZXQoeCkuZ2V0Q2F0ZWdvcnlJZCgpKTsKKworCQkJfQorCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKworCQkJbG9nLmVycm9yKCJbdGVzdEFkZGluZ0dyb3VwXSIsIGVycik7CisKKwkJfQorCisJfQorCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9jYWxlbmRhci9UZXN0RGF0YWJhc2VTdHJ1Y3R1cmVHZXRBcHBvaW50bWVudEJ5UmFuZ2UuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L2NhbGVuZGFyL1Rlc3REYXRhYmFzZVN0cnVjdHVyZUdldEFwcG9pbnRtZW50QnlSYW5nZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmOTIxYTAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9jYWxlbmRhci9UZXN0RGF0YWJhc2VTdHJ1Y3R1cmVHZXRBcHBvaW50bWVudEJ5UmFuZ2UuamF2YQpAQCAtMCwwICsxLDcxIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnRlc3QuY2FsZW5kYXI7CisKK2ltcG9ydCBqYXZhLnV0aWwuQ2FsZW5kYXI7CitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitpbXBvcnQgb3JnLmFwYWNoZS5sb2c0ai5Mb2dnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuY2FsZW5kYXIuQXBwb2ludG1lbnQ7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucmVtb3RlLkNhbGVuZGFyU2VydmljZTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy50ZXN0LkFic3RyYWN0T3Blbm1lZXRpbmdzU3ByaW5nVGVzdDsKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5BdXRvd2lyZWQ7CisKKworCitwdWJsaWMgY2xhc3MgVGVzdERhdGFiYXNlU3RydWN0dXJlR2V0QXBwb2ludG1lbnRCeVJhbmdlIGV4dGVuZHMgQWJzdHJhY3RPcGVubWVldGluZ3NTcHJpbmdUZXN0IHsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBMb2dnZXIuZ2V0TG9nZ2VyKFRlc3REYXRhYmFzZVN0cnVjdHVyZUdldEFwcG9pbnRtZW50QnlSYW5nZS5jbGFzcyk7CisJQEF1dG93aXJlZAorCXByaXZhdGUgQ2FsZW5kYXJTZXJ2aWNlIGNhbGVuZGFyU2VydmljZTsKKwkKKwlAVGVzdAorCXB1YmxpYyB2b2lkIHRlc3RBZGRpbmdHcm91cCgpeworCisJCXRyeSB7CisJCQlMaXN0PEFwcG9pbnRtZW50PiBsaXN0QXBwb2ludHMgPSBjYWxlbmRhclNlcnZpY2UuZ2V0QXBwb2ludG1lbnRCeVJhbmdlKCJTSUQiLENhbGVuZGFyLmdldEluc3RhbmNlKCkuZ2V0VGltZSgpLCBDYWxlbmRhci5nZXRJbnN0YW5jZSgpLmdldFRpbWUoKSk7ICAKKworCQkJLy9MaXN0PEFwcG9pbnRtZW50PiBsaXN0QXBwb2ludHMgPSBBcHBvaW50bWVudERhb0ltcGwuZ2V0SW5zdGFuY2UoKS5nZXRBcHBvaW50bWVudHNCeVJhbmdlKENhbGVuZGFyLmdldEluc3RhbmNlKCkuZ2V0VGltZSgpLCBDYWxlbmRhci5nZXRJbnN0YW5jZSgpLmdldFRpbWUoKSk7CisJCQkKKwkJCWZvciAoQXBwb2ludG1lbnQgYXBwb2ludHMgOiBsaXN0QXBwb2ludHMpIHsKKwkJCQlsb2cuZGVidWcoIiIrYXBwb2ludHMpOworCQkJfQorCQkJCisJCQlmb3IgKEl0ZXJhdG9yPEFwcG9pbnRtZW50PiBpdGVyID0gbGlzdEFwcG9pbnRzLml0ZXJhdG9yKCk7aXRlci5oYXNOZXh0KCk7KSB7CisJCQkJbG9nLmRlYnVnKCIiK2l0ZXIubmV4dCgpKTsKKwkJCX0KKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisKKwkJCWxvZy5lcnJvcigiW3Rlc3RBZGRpbmdHcm91cF0iLGVycik7CisKKwkJfQorCisJCQorCisJCQorCisJfQorCisKKworfQorCmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9jYWxlbmRhci9UZXN0RGF0YWJhc2VTdHJ1Y3R1cmVHZXRVc2VyU3RhcnQuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L2NhbGVuZGFyL1Rlc3REYXRhYmFzZVN0cnVjdHVyZUdldFVzZXJTdGFydC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4ZWYzMjYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9jYWxlbmRhci9UZXN0RGF0YWJhc2VTdHJ1Y3R1cmVHZXRVc2VyU3RhcnQuamF2YQpAQCAtMCwwICsxLDQwIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnRlc3QuY2FsZW5kYXI7CisKK2ltcG9ydCBvcmcuYXBhY2hlLmxvZzRqLkxvZ2dlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuZGFvLlVzZXJzRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnRlc3QuQWJzdHJhY3RPcGVubWVldGluZ3NTcHJpbmdUZXN0OworaW1wb3J0IG9yZy5qdW5pdC5UZXN0OworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKKworcHVibGljIGNsYXNzIFRlc3REYXRhYmFzZVN0cnVjdHVyZUdldFVzZXJTdGFydCBleHRlbmRzIEFic3RyYWN0T3Blbm1lZXRpbmdzU3ByaW5nVGVzdCB7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IExvZ2dlci5nZXRMb2dnZXIoVGVzdERhdGFiYXNlU3RydWN0dXJlR2V0VXNlclN0YXJ0LmNsYXNzKTsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBVc2Vyc0RhbyB1c2Vyc0RhbzsKKwkKKwlAVGVzdAorCXB1YmxpYyB2b2lkIHRlc3RBZGRpbmdHcm91cCgpIHsKKwkJdHJ5IHsKKwkJCXVzZXJzRGFvLmdldChuZXcgTG9uZygxKSk7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW3Rlc3RBZGRpbmdHcm91cF0iLCBlcnIpOworCQl9CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvY2FsZW5kYXIvVGVzdERhdGFiYXNlU3RydWN0dXJlTWVldGluZ01lbWJlci5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvY2FsZW5kYXIvVGVzdERhdGFiYXNlU3RydWN0dXJlTWVldGluZ01lbWJlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzMTNjYzkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9jYWxlbmRhci9UZXN0RGF0YWJhc2VTdHJ1Y3R1cmVNZWV0aW5nTWVtYmVyLmphdmEKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy50ZXN0LmNhbGVuZGFyOworCisKK2ltcG9ydCBvcmcuYXBhY2hlLmxvZzRqLkxvZ2dlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNhbGVuZGFyLmRhb3MuTWVldGluZ01lbWJlckRhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy50ZXN0LkFic3RyYWN0T3Blbm1lZXRpbmdzU3ByaW5nVGVzdDsKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5BdXRvd2lyZWQ7CisKKworcHVibGljIGNsYXNzIFRlc3REYXRhYmFzZVN0cnVjdHVyZU1lZXRpbmdNZW1iZXIgZXh0ZW5kcyBBYnN0cmFjdE9wZW5tZWV0aW5nc1NwcmluZ1Rlc3QgeworCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IExvZ2dlci5nZXRMb2dnZXIoVGVzdERhdGFiYXNlU3RydWN0dXJlTWVldGluZ01lbWJlci5jbGFzcyk7CisJQEF1dG93aXJlZAorCXByaXZhdGUgTWVldGluZ01lbWJlckRhbyBtZWV0aW5nTWVtYmVyRGFvOworCisJQFRlc3QKKwlwdWJsaWMgdm9pZCB0ZXN0QWRkaW5nR3JvdXAoKXsKKworCQl0cnkgeworCQkJCisJCQkKKwkJCS8vTWVldGluZ01lbWJlckRhb0ltcGwuZ2V0SW5zdGFuY2UoKS5hZGRNZWV0aW5nTWVtYmVyKCJBZGRkZCIsICJkaXIiLCAiMSIsICIyIiwgMUwsIDFMLCAidGVzdCIpOwkKKwkJCS8vTWVldGluZ01lbWJlckRhb0ltcGwuZ2V0SW5zdGFuY2UoKS5hZGRNZWV0aW5nTWVtYmVyKGZpcnN0bmFtZSwgbGFzdG5hbWUsIG1lbWJlclN0YXR1cywgYXBwb2ludG1lbnRTdGF0dXMsIGFwcG9pbnRtZW50SWQsIHVzZXJpZCwgZW1haWwpCisJCQkKKwkJCQorCQkJLy9NZWV0aW5nTWVtYmVyRGFvSW1wbC5nZXRJbnN0YW5jZSgpLmdldE1lZXRpbmdNZW1iZXJCeUlkKDFMKTsKKwkJCS8vTWVldGluZ01lbWJlckRhb0ltcGwuZ2V0SW5zdGFuY2UoKS5kZWxldGVNZWV0aW5nTWVtYmVyKDJMKTsKKwkJCW1lZXRpbmdNZW1iZXJEYW8udXBkYXRlTWVldGluZ01lbWJlcigxbCwiYmJiYmJiIiwgImRpciIsICIxIiwgIjIiLCAxTCwgMUwsICJ0ZXN0IiwgIiIpOyAKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCisJCQlsb2cuZXJyb3IoIlt0ZXN0QWRkaW5nTWVldGluZ10iLGVycik7CisKKwkJfQorCisJCQorCisJCQorCisJfQorCisKKworfQorCmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9jYWxlbmRhci9UZXN0RGF0YWJhc2VTdHJ1Y3R1cmVVc2Vyc1NlYXJjaC5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvY2FsZW5kYXIvVGVzdERhdGFiYXNlU3RydWN0dXJlVXNlcnNTZWFyY2guamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Nzg2N2MzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvY2FsZW5kYXIvVGVzdERhdGFiYXNlU3RydWN0dXJlVXNlcnNTZWFyY2guamF2YQpAQCAtMCwwICsxLDY2IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnRlc3QuY2FsZW5kYXI7CisKK2ltcG9ydCBvcmcuYXBhY2hlLmxvZzRqLkxvZ2dlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJlYW5zLmJhc2ljLlNlYXJjaFJlc3VsdDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuVXNlck1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlci5Vc2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnRlc3QuQWJzdHJhY3RPcGVubWVldGluZ3NTcHJpbmdUZXN0OworaW1wb3J0IG9yZy5qdW5pdC5UZXN0OworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKKworCitwdWJsaWMgY2xhc3MgVGVzdERhdGFiYXNlU3RydWN0dXJlVXNlcnNTZWFyY2ggZXh0ZW5kcyBBYnN0cmFjdE9wZW5tZWV0aW5nc1NwcmluZ1Rlc3QgeworICAgIEBBdXRvd2lyZWQKKyAgICBwcml2YXRlIFVzZXJNYW5hZ2VyIHVzZXJNYW5hZ2VyOworCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IExvZ2dlci5nZXRMb2dnZXIoVGVzdERhdGFiYXNlU3RydWN0dXJlVXNlcnNTZWFyY2guY2xhc3MpOworCisJQFRlc3QKKwlwdWJsaWMgdm9pZCB0ZXN0QWRkaW5nR3JvdXAoKXsKKworCQl0cnkgeworCQkJCisJCQkgU2VhcmNoUmVzdWx0PFVzZXI+IHVzZXJzID0gdXNlck1hbmFnZXIuZ2V0QWxsVXNlckJ5UmFuZ2UoImZpcnN0IiwgMCwgMTAsICJvcmRlcmJ5IiwgdHJ1ZSk7CisJCQkgbG9nLmRlYnVnKCJbcmVzdWx0XSIgKyB1c2Vycy5nZXRSZXN1bHQoKS5zaXplKCkpOworCQkJIGxvZy5kZWJ1ZygiW3JlY29yZHNdIisgdXNlcnMuZ2V0UmVjb3JkcygpKTsKKwkJCSAKKwkJCSAvL0dyb3VwTWVtYmVyRGFvSW1wbC5nZXRJbnN0YW5jZSgpLmFkZEdyb3VwTWVtYmVyKCJBZCIsICJkaXIiLCBDYWxlbmRhci5nZXRJbnN0YW5jZSgpLmdldFRpbWUoKSwgIjEiLCAiMiIsICJpbnRlcnBvbDE1NSIsIDFMLCAxTCk7CQorCQkJLy9Hcm91cE1lbWJlckRhb0ltcGwuZ2V0SW5zdGFuY2UoKS5hZGRHcm91cE1lbWJlcihmaXJzdG5hbWUsIGxhc3RuYW1lLCBhZ2UsIG1lbWJlclN0YXR1cywgYXBwb2ludG1lbnRTdGF0dXMsIHBhc3N3b3JkLCBhZHJlc3Nlc19pZCwgYXBwb2ludG1lbnRJZCk7CisJCQkKKwkJCS8vR3JvdXBNZW1iZXJEYW9JbXBsLmdldEluc3RhbmNlKCkuZ2V0R3JvdXBNZW1iZXJCeUlkKDFMKTsKKwkJCS8vR3JvdXBNZW1iZXJEYW9JbXBsLmdldEluc3RhbmNlKCkuZGVsZXRlR3JvdXBNZW1iZXIoMkwpOworCQkJLy9Hcm91cE1lbWJlckRhb0ltcGwuZ2V0SW5zdGFuY2UoKS51cGRhdGVHcm91cE1lbWJlcigxTCwgIkV1Z2VuIiwgIlNjaHdlcnQiLCBDYWxlbmRhci5nZXRJbnN0YW5jZSgpLmdldFRpbWUoKSwgIjEiLCAiMiIsICJpbnRlcnBvbDE1NSIsIDFMLCAxTCk7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKworCQkJbG9nLmVycm9yKCJbdGVzdEFkZGluZ0dyb3VwXSIsZXJyKTsKKworCQl9CisKKwkJCisKKwkJCisKKwl9CisKKworCit9CisKZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L2NhbGVuZGFyL1Rlc3RHZXRBcHBvaW50bWVudC5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvY2FsZW5kYXIvVGVzdEdldEFwcG9pbnRtZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDAwYjAzYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L2NhbGVuZGFyL1Rlc3RHZXRBcHBvaW50bWVudC5qYXZhCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudGVzdC5jYWxlbmRhcjsKKworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydFRydWU7CisKK2ltcG9ydCBqYXZhLnV0aWwuQ2FsZW5kYXI7CitpbXBvcnQgamF2YS51dGlsLkdyZWdvcmlhbkNhbGVuZGFyOworCitpbXBvcnQgb3JnLmFwYWNoZS5sb2c0ai5Mb2dnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jYWxlbmRhci5kYW9zLkFwcG9pbnRtZW50RGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnRlc3QuQWJzdHJhY3RPcGVubWVldGluZ3NTcHJpbmdUZXN0OworaW1wb3J0IG9yZy5qdW5pdC5UZXN0OworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKKworcHVibGljIGNsYXNzIFRlc3RHZXRBcHBvaW50bWVudCBleHRlbmRzCitBYnN0cmFjdE9wZW5tZWV0aW5nc1NwcmluZ1Rlc3QgeworCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IExvZ2dlci5nZXRMb2dnZXIoVGVzdEdldEFwcG9pbnRtZW50LmNsYXNzKTsKKworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEFwcG9pbnRtZW50RGFvIGFwcG9pbnRtZW50RGFvOworCQorCUBUZXN0CisJcHVibGljIHZvaWQgZ2V0QXBwb2lubWVudCgpIHsKKwkJbG9nLmRlYnVnKCJnZXRBcHBvaW5tZW50IGVudGVyIik7CisJCUxvbmcgdXNlcklkID0gMUw7CisJCQorCQlDYWxlbmRhciBzdGFydHRpbWUgPSBHcmVnb3JpYW5DYWxlbmRhci5nZXRJbnN0YW5jZSgpOworCisJCXN0YXJ0dGltZS5zZXQoQ2FsZW5kYXIuTU9OVEgsIHN0YXJ0dGltZS5nZXQoQ2FsZW5kYXIuTU9OVEgtMSkpOworCisJCUNhbGVuZGFyIGVuZHRpbWUgPSBHcmVnb3JpYW5DYWxlbmRhci5nZXRJbnN0YW5jZSgpOworCQkKKwkJYXBwb2ludG1lbnREYW8uZ2V0QXBwb2ludG1lbnRzQnlSYW5nZSh1c2VySWQsIHN0YXJ0dGltZS5nZXRUaW1lKCksCisJCQkJZW5kdGltZS5nZXRUaW1lKCkpOworCQkKKwkJYXNzZXJ0VHJ1ZSh0cnVlKTsKKwkJCisJfQorCQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvY2FsZW5kYXIvVGVzdFNlbmRJY2FsTWVzc2FnZS5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvY2FsZW5kYXIvVGVzdFNlbmRJY2FsTWVzc2FnZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlODUzNGYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9jYWxlbmRhci9UZXN0U2VuZEljYWxNZXNzYWdlLmphdmEKQEAgLTAsMCArMSwzMDYgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudGVzdC5jYWxlbmRhcjsKKworaW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5SW5wdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5CeXRlQXJyYXlPdXRwdXRTdHJlYW07CitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsKK2ltcG9ydCBqYXZhLm5ldC5Tb2NrZXRFeGNlcHRpb247CitpbXBvcnQgamF2YS5uZXQuVVJJOworaW1wb3J0IGphdmEudXRpbC5DYWxlbmRhcjsKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuR3JlZ29yaWFuQ2FsZW5kYXI7CitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLlByb3BlcnRpZXM7CitpbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKKworaW1wb3J0IGphdmF4LmFjdGl2YXRpb24uRGF0YUhhbmRsZXI7CitpbXBvcnQgamF2YXgubWFpbC5Cb2R5UGFydDsKK2ltcG9ydCBqYXZheC5tYWlsLk1lc3NhZ2U7CitpbXBvcnQgamF2YXgubWFpbC5NdWx0aXBhcnQ7CitpbXBvcnQgamF2YXgubWFpbC5TZXNzaW9uOworaW1wb3J0IGphdmF4Lm1haWwuVHJhbnNwb3J0OworaW1wb3J0IGphdmF4Lm1haWwuaW50ZXJuZXQuSW50ZXJuZXRBZGRyZXNzOworaW1wb3J0IGphdmF4Lm1haWwuaW50ZXJuZXQuTWltZUJvZHlQYXJ0OworaW1wb3J0IGphdmF4Lm1haWwuaW50ZXJuZXQuTWltZU1lc3NhZ2U7CitpbXBvcnQgamF2YXgubWFpbC5pbnRlcm5ldC5NaW1lTXVsdGlwYXJ0OworCitpbXBvcnQgbmV0LmZvcnR1bmEuaWNhbDRqLmRhdGEuQ2FsZW5kYXJPdXRwdXR0ZXI7CitpbXBvcnQgbmV0LmZvcnR1bmEuaWNhbDRqLm1vZGVsLkRhdGVUaW1lOworaW1wb3J0IG5ldC5mb3J0dW5hLmljYWw0ai5tb2RlbC5UaW1lWm9uZTsKK2ltcG9ydCBuZXQuZm9ydHVuYS5pY2FsNGoubW9kZWwuVGltZVpvbmVSZWdpc3RyeTsKK2ltcG9ydCBuZXQuZm9ydHVuYS5pY2FsNGoubW9kZWwuVGltZVpvbmVSZWdpc3RyeUZhY3Rvcnk7CitpbXBvcnQgbmV0LmZvcnR1bmEuaWNhbDRqLm1vZGVsLlZhbGlkYXRpb25FeGNlcHRpb247CitpbXBvcnQgbmV0LmZvcnR1bmEuaWNhbDRqLm1vZGVsLmNvbXBvbmVudC5WRXZlbnQ7CitpbXBvcnQgbmV0LmZvcnR1bmEuaWNhbDRqLm1vZGVsLmNvbXBvbmVudC5WVGltZVpvbmU7CitpbXBvcnQgbmV0LmZvcnR1bmEuaWNhbDRqLm1vZGVsLnBhcmFtZXRlci5DbjsKK2ltcG9ydCBuZXQuZm9ydHVuYS5pY2FsNGoubW9kZWwucGFyYW1ldGVyLlJvbGU7CitpbXBvcnQgbmV0LmZvcnR1bmEuaWNhbDRqLm1vZGVsLnByb3BlcnR5LkF0dGVuZGVlOworaW1wb3J0IG5ldC5mb3J0dW5hLmljYWw0ai5tb2RlbC5wcm9wZXJ0eS5DYWxTY2FsZTsKK2ltcG9ydCBuZXQuZm9ydHVuYS5pY2FsNGoubW9kZWwucHJvcGVydHkuTWV0aG9kOworaW1wb3J0IG5ldC5mb3J0dW5hLmljYWw0ai5tb2RlbC5wcm9wZXJ0eS5Pcmdhbml6ZXI7CitpbXBvcnQgbmV0LmZvcnR1bmEuaWNhbDRqLm1vZGVsLnByb3BlcnR5LlByb2RJZDsKK2ltcG9ydCBuZXQuZm9ydHVuYS5pY2FsNGoubW9kZWwucHJvcGVydHkuVWlkOworaW1wb3J0IG5ldC5mb3J0dW5hLmljYWw0ai5tb2RlbC5wcm9wZXJ0eS5WZXJzaW9uOworaW1wb3J0IG5ldC5mb3J0dW5hLmljYWw0ai51dGlsLlVpZEdlbmVyYXRvcjsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLmRhby5Db25maWd1cmF0aW9uRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnRlc3QuQWJzdHJhY3RPcGVubWVldGluZ3NTcHJpbmdUZXN0OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLm1haWwuQnl0ZUFycmF5RGF0YVNvdXJjZTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5tYWlsLkljYWxIYW5kbGVyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLm1haWwuU210cEF1dGhlbnRpY2F0b3I7CitpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKKworcHVibGljIGNsYXNzIFRlc3RTZW5kSWNhbE1lc3NhZ2UgZXh0ZW5kcyBBYnN0cmFjdE9wZW5tZWV0aW5nc1NwcmluZ1Rlc3QgeworCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcigKKwkJCVRlc3RBcHBvaW50bWVudFNjaGVkdWxlclRhc2suY2xhc3MsCisJCQlPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBDb25maWd1cmF0aW9uRGFvIGNvbmZpZ3VyYXRpb25EYW87CisKKwlwcml2YXRlIGJ5dGVbXSBpQ2FsTWltZUJvZHk7CisKKwlTdHJpbmcgc3ViamVjdCA9ICJ0ZXN0IGlDYWwiOworCVN0cmluZyByZWNpcGllbnRzID0gInNlYmEud2FnbmVyQGdtYWlsLmNvbSI7CisJU3RyaW5nIGh0bWxCb2R5ID0gInRlc3QiOworCisJCisJcHVibGljIHZvaWQgc2ltcGxlSW52aXRpb25JY2FsTGluaygpIHsKKwkJLy8gQ3JlYXRlIGEgVGltZVpvbmUKKwkJVGltZVpvbmVSZWdpc3RyeSByZWdpc3RyeSA9IFRpbWVab25lUmVnaXN0cnlGYWN0b3J5LmdldEluc3RhbmNlKCkKKwkJCQkuY3JlYXRlUmVnaXN0cnkoKTsKKwkJVGltZVpvbmUgdGltZXpvbmUgPSByZWdpc3RyeS5nZXRUaW1lWm9uZSgiQW1lcmljYS9NZXhpY29fQ2l0eSIpOworCQlWVGltZVpvbmUgdHogPSB0aW1lem9uZS5nZXRWVGltZVpvbmUoKTsKKworCQkvLyBTdGFydCBEYXRlIGlzIG9uOiBBcHJpbCAxLCAyMDA4LCA5OjAwIGFtCisJCWphdmEudXRpbC5DYWxlbmRhciBzdGFydERhdGUgPSBuZXcgR3JlZ29yaWFuQ2FsZW5kYXIoKTsKKwkJc3RhcnREYXRlLnNldFRpbWVab25lKHRpbWV6b25lKTsKKwkJc3RhcnREYXRlLnNldChqYXZhLnV0aWwuQ2FsZW5kYXIuTU9OVEgsIGphdmEudXRpbC5DYWxlbmRhci5BUFJJTCk7CisJCXN0YXJ0RGF0ZS5zZXQoamF2YS51dGlsLkNhbGVuZGFyLkRBWV9PRl9NT05USCwgMSk7CisJCXN0YXJ0RGF0ZS5zZXQoamF2YS51dGlsLkNhbGVuZGFyLllFQVIsIDIwMDgpOworCQlzdGFydERhdGUuc2V0KGphdmEudXRpbC5DYWxlbmRhci5IT1VSX09GX0RBWSwgOSk7CisJCXN0YXJ0RGF0ZS5zZXQoamF2YS51dGlsLkNhbGVuZGFyLk1JTlVURSwgMCk7CisJCXN0YXJ0RGF0ZS5zZXQoamF2YS51dGlsLkNhbGVuZGFyLlNFQ09ORCwgMCk7CisKKwkJLy8gRW5kIERhdGUgaXMgb246IEFwcmlsIDEsIDIwMDgsIDEzOjAwCisJCWphdmEudXRpbC5DYWxlbmRhciBlbmREYXRlID0gbmV3IEdyZWdvcmlhbkNhbGVuZGFyKCk7CisJCWVuZERhdGUuc2V0VGltZVpvbmUodGltZXpvbmUpOworCQllbmREYXRlLnNldChqYXZhLnV0aWwuQ2FsZW5kYXIuTU9OVEgsIGphdmEudXRpbC5DYWxlbmRhci5BUFJJTCk7CisJCWVuZERhdGUuc2V0KGphdmEudXRpbC5DYWxlbmRhci5EQVlfT0ZfTU9OVEgsIDEpOworCQllbmREYXRlLnNldChqYXZhLnV0aWwuQ2FsZW5kYXIuWUVBUiwgMjAwOCk7CisJCWVuZERhdGUuc2V0KGphdmEudXRpbC5DYWxlbmRhci5IT1VSX09GX0RBWSwgMTMpOworCQllbmREYXRlLnNldChqYXZhLnV0aWwuQ2FsZW5kYXIuTUlOVVRFLCAwKTsKKwkJZW5kRGF0ZS5zZXQoamF2YS51dGlsLkNhbGVuZGFyLlNFQ09ORCwgMCk7CisKKwkJLy8gQ3JlYXRlIHRoZSBldmVudAorCQlTdHJpbmcgZXZlbnROYW1lID0gIlByb2dyZXNzIE1lZXRpbmciOworCQlEYXRlVGltZSBzdGFydCA9IG5ldyBEYXRlVGltZShzdGFydERhdGUuZ2V0VGltZSgpKTsKKwkJRGF0ZVRpbWUgZW5kID0gbmV3IERhdGVUaW1lKGVuZERhdGUuZ2V0VGltZSgpKTsKKwkJVkV2ZW50IG1lZXRpbmcgPSBuZXcgVkV2ZW50KHN0YXJ0LCBlbmQsIGV2ZW50TmFtZSk7CisKKwkJLy8gYWRkIHRpbWV6b25lIGluZm8uLgorCQltZWV0aW5nLmdldFByb3BlcnRpZXMoKS5hZGQodHouZ2V0VGltZVpvbmVJZCgpKTsKKworCQkvLyBnZW5lcmF0ZSB1bmlxdWUgaWRlbnRpZmllci4uCisJCVVpZEdlbmVyYXRvciB1ZzsKKwkJdHJ5IHsKKwkJCXVnID0gbmV3IFVpZEdlbmVyYXRvcigidWlkR2VuIik7CisKKwkJCVVpZCB1aWQgPSB1Zy5nZW5lcmF0ZVVpZCgpOworCQkJbWVldGluZy5nZXRQcm9wZXJ0aWVzKCkuYWRkKHVpZCk7CisJCX0gY2F0Y2ggKFNvY2tldEV4Y2VwdGlvbiBlKSB7CisJCQkvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIGNhdGNoIGJsb2NrCisJCQllLnByaW50U3RhY2tUcmFjZSgpOworCQl9CisKKwkJLy8gYWRkIGF0dGVuZGVlcy4uCisJCUF0dGVuZGVlIGRldjEgPSBuZXcgQXR0ZW5kZWUoVVJJLmNyZWF0ZSgibWFpbHRvOmRldjFAbXljb21wYW55LmNvbSIpKTsKKwkJZGV2MS5nZXRQYXJhbWV0ZXJzKCkuYWRkKFJvbGUuUkVRX1BBUlRJQ0lQQU5UKTsKKwkJZGV2MS5nZXRQYXJhbWV0ZXJzKCkuYWRkKG5ldyBDbigiRGV2ZWxvcGVyIDEiKSk7CisJCW1lZXRpbmcuZ2V0UHJvcGVydGllcygpLmFkZChkZXYxKTsKKworCQlBdHRlbmRlZSBkZXYyID0gbmV3IEF0dGVuZGVlKFVSSS5jcmVhdGUoIm1haWx0bzpkZXYyQG15Y29tcGFueS5jb20iKSk7CisJCWRldjIuZ2V0UGFyYW1ldGVycygpLmFkZChSb2xlLk9QVF9QQVJUSUNJUEFOVCk7CisJCWRldjIuZ2V0UGFyYW1ldGVycygpLmFkZChuZXcgQ24oIkRldmVsb3BlciAyIikpOworCQltZWV0aW5nLmdldFByb3BlcnRpZXMoKS5hZGQoZGV2Mik7CisKKwkJLy8gQ3JlYXRlIGEgY2FsZW5kYXIKKwkJbmV0LmZvcnR1bmEuaWNhbDRqLm1vZGVsLkNhbGVuZGFyIGljc0NhbGVuZGFyID0gbmV3IG5ldC5mb3J0dW5hLmljYWw0ai5tb2RlbC5DYWxlbmRhcigpOworCQlpY3NDYWxlbmRhci5nZXRQcm9wZXJ0aWVzKCkuYWRkKAorCQkJCW5ldyBQcm9kSWQoIi0vL0V2ZW50cyBDYWxlbmRhci8vaUNhbDRqIDEuMC8vRU4iKSk7CisJCWljc0NhbGVuZGFyLmdldFByb3BlcnRpZXMoKS5hZGQoQ2FsU2NhbGUuR1JFR09SSUFOKTsKKwkJaWNzQ2FsZW5kYXIuZ2V0UHJvcGVydGllcygpLmFkZChWZXJzaW9uLlZFUlNJT05fMl8wKTsKKworCQkvLyBBZGQgdGhlIGV2ZW50IGFuZCBwcmludAorCQlpY3NDYWxlbmRhci5nZXRDb21wb25lbnRzKCkuYWRkKG1lZXRpbmcpOworCQkKKwkJT3JnYW5pemVyIG9yZ2VyID0gbmV3IE9yZ2FuaXplcihVUkkuY3JlYXRlKCJzZWJhLndhZ25lckBnbWFpbC5jb20iKSk7CisJCW9yZ2VyLmdldFBhcmFtZXRlcnMoKS5hZGQobmV3IENuKCJTZWJhc3RpYW4gV2FnbmVyIikpOworCQltZWV0aW5nLmdldFByb3BlcnRpZXMoKS5hZGQob3JnZXIpOworCQkKKwkJaWNzQ2FsZW5kYXIuZ2V0UHJvcGVydGllcygpLmFkZChNZXRob2QuUkVRVUVTVCk7CisJCQorCQlTeXN0ZW0ub3V0LnByaW50bG4oaWNzQ2FsZW5kYXIpOworCQkKKwkJCisJCQorCisJCUJ5dGVBcnJheU91dHB1dFN0cmVhbSBib3V0ID0gbmV3IEJ5dGVBcnJheU91dHB1dFN0cmVhbSgpOworCQlDYWxlbmRhck91dHB1dHRlciBvdXRwdXR0ZXIgPSBuZXcgQ2FsZW5kYXJPdXRwdXR0ZXIoKTsKKwkJdHJ5IHsKKwkJCW91dHB1dHRlci5vdXRwdXQoaWNzQ2FsZW5kYXIsIGJvdXQpOworCQkJaUNhbE1pbWVCb2R5ID0gYm91dC50b0J5dGVBcnJheSgpOworCQkJCisJCQlzZW5kSWNhbE1lc3NhZ2UoKTsKKwkJfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgeworCQkJLy8gVE9ETyBBdXRvLWdlbmVyYXRlZCBjYXRjaCBibG9jaworCQkJZS5wcmludFN0YWNrVHJhY2UoKTsKKwkJfSBjYXRjaCAoVmFsaWRhdGlvbkV4Y2VwdGlvbiBlKSB7CisJCQkvLyBUT0RPIEF1dG8tZ2VuZXJhdGVkIGNhdGNoIGJsb2NrCisJCQllLnByaW50U3RhY2tUcmFjZSgpOworCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJLy8gVE9ETyBBdXRvLWdlbmVyYXRlZCBjYXRjaCBibG9jaworCQkJZS5wcmludFN0YWNrVHJhY2UoKTsKKwkJfQorCQkKKwkJCisKKwl9CisKKwkKKwlAVGVzdAorCXB1YmxpYyB2b2lkIHNlbmRJbnZpdGlvbkljYWxMaW5rKCkgeworCQl0cnkgeworCisJCQlTdHJpbmcgZW1haWwgPSAiaGFuc0B3ZWJiYXNlLWRlc2lnbi5kZSI7CisJCQlTdHJpbmcgdXNlcm5hbWUgPSAic2hhbnMiOworCQkJYm9vbGVhbiBpbnZpdG9yID0gZmFsc2U7CisKKwkJCUNhbGVuZGFyIHN0YXJ0ID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTsKKworCQkJQ2FsZW5kYXIgZW5kID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTsKKworCQkJSWNhbEhhbmRsZXIgaGFuZGxlciA9IG5ldyBJY2FsSGFuZGxlcigKKwkJCQkJSWNhbEhhbmRsZXIuSUNBTF9NRVRIT0RfUkVRVUVTVCk7CisKKwkJCS8vIFRyYW5zZm9ybWluZyBNZWV0aW5nIE1lbWJlcnMKKworCQkJSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gYXR0ZW5kZWVMaXN0ID0gaGFuZGxlci5nZXRBdHRlbmRlZURhdGEoCisJCQkJCWVtYWlsLCB1c2VybmFtZSwgaW52aXRvcik7CisKKwkJCUhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG9yZ2FuaXplckF0dGVuZGVlID0gaGFuZGxlcgorCQkJCQkuZ2V0QXR0ZW5kZWVEYXRhKHJlY2lwaWVudHMsICJzZWJhLXRlc3QiLCB0cnVlKTsKKworCQkJVmVjdG9yPEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+PiBhdHRzID0gbmV3IFZlY3RvcjxIYXNoTWFwPFN0cmluZywgU3RyaW5nPj4oKTsKKwkJCWF0dHMuYWRkKGF0dGVuZGVlTGlzdCk7CisKKwkJCS8vIENyZWF0ZSBJQ2FsIE1lc3NhZ2UKKwkJCVN0cmluZyBtZWV0aW5nSWQgPSBoYW5kbGVyLmFkZE5ld01lZXRpbmcoc3RhcnQuZ2V0VGltZSgpLCBlbmQuZ2V0VGltZSgpLCAidGVzdCBldmVudCIsCisJCQkJCWF0dHMsICJsb2NhbGhvc3Q6NTA4MC9saW5rX29wZW5tZWV0aW5ncyIsCisJCQkJCW9yZ2FuaXplckF0dGVuZGVlLCAiIiwgVGltZVpvbmUuZ2V0RGVmYXVsdCgpKTsKKworCQkJbG9nLmRlYnVnKCJtZWV0aW5nSWQgIiArIG1lZXRpbmdJZCk7CisKKwkJCWlDYWxNaW1lQm9keSA9IGhhbmRsZXIuZ2V0SWNhbEFzQnl0ZUFycmF5KCk7CisKKwkJCXNlbmRJY2FsTWVzc2FnZSgpOworCisJCQkvLyByZXR1cm4gTWFpbEhhbmRsZXIuc2VuZE1haWwoZW1haWwsIHN1YmplY3QsIHRlbXBsYXRlKTsKKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoInNlbmRJbnZpdGlvbkljYWxMaW5rIiwgZXJyKTsKKwkJfQorCX0KKworCXByaXZhdGUgdm9pZCBzZW5kSWNhbE1lc3NhZ2UoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworCQlsb2cuZGVidWcoInNlbmRJY2FsTWVzc2FnZSIpOworCisJCS8vIEV2YWx1YXRpbmcgQ29uZmlndXJhdGlvbiBEYXRhCisJCVN0cmluZyBzbXRwU2VydmVyID0gY29uZmlndXJhdGlvbkRhby5nZXRDb25mVmFsdWUoInNtdHBfc2VydmVyIiwgU3RyaW5nLmNsYXNzLCAiIik7CisJCVN0cmluZyBzbXRwUG9ydCA9IGNvbmZpZ3VyYXRpb25EYW8uZ2V0Q29uZlZhbHVlKCJzbXRwX3BvcnQiLCBTdHJpbmcuY2xhc3MsICIiKTsKKwkJU3RyaW5nIGZyb20gPSBjb25maWd1cmF0aW9uRGFvLmdldENvbmZWYWx1ZSgic3lzdGVtX2VtYWlsX2FkZHIiLCBTdHJpbmcuY2xhc3MsICIiKTsKKwkJU3RyaW5nIGVtYWlsVXNlcm5hbWUgPSBjb25maWd1cmF0aW9uRGFvLmdldENvbmZWYWx1ZSgiZW1haWxfdXNlcm5hbWUiLCBTdHJpbmcuY2xhc3MsICIiKTsKKwkJU3RyaW5nIGVtYWlsVXNlcnBhc3MgPSBjb25maWd1cmF0aW9uRGFvLmdldENvbmZWYWx1ZSgiZW1haWxfdXNlcnBhc3MiLCBTdHJpbmcuY2xhc3MsICIiKTsKKworCQlQcm9wZXJ0aWVzIHByb3BzID0gU3lzdGVtLmdldFByb3BlcnRpZXMoKTsKKworCQlwcm9wcy5wdXQoIm1haWwuc210cC5ob3N0Iiwgc210cFNlcnZlcik7CisJCXByb3BzLnB1dCgibWFpbC5zbXRwLnBvcnQiLCBzbXRwUG9ydCk7CisKKwkJYm9vbGVhbiBpc1RscyA9ICgxID09IGNvbmZpZ3VyYXRpb25EYW8uZ2V0Q29uZlZhbHVlKCJtYWlsLnNtdHAuc3RhcnR0bHMuZW5hYmxlIiwgSW50ZWdlci5jbGFzcywgIjAiKSk7CisJCWlmIChpc1RscykgeworCQkJcHJvcHMucHV0KCJtYWlsLnNtdHAuc3RhcnR0bHMuZW5hYmxlIiwgInRydWUiKTsKKwkJfQorCisJCS8vIENoZWNrIGZvciBBdXRoZW50aWZpY2F0aW9uCisJCVNlc3Npb24gc2Vzc2lvbiA9IG51bGw7CisJCWlmIChlbWFpbFVzZXJuYW1lICE9IG51bGwgJiYgZW1haWxVc2VybmFtZS5sZW5ndGgoKSA+IDAKKwkJCQkmJiBlbWFpbFVzZXJwYXNzICE9IG51bGwgJiYgZW1haWxVc2VycGFzcy5sZW5ndGgoKSA+IDApIHsKKwkJCS8vIHVzZSBTTVRQIEF1dGhlbnRpY2F0aW9uCisJCQlwcm9wcy5wdXQoIm1haWwuc210cC5hdXRoIiwgInRydWUiKTsKKwkJCXNlc3Npb24gPSBTZXNzaW9uLmdldERlZmF1bHRJbnN0YW5jZShwcm9wcywgbmV3IFNtdHBBdXRoZW50aWNhdG9yKAorCQkJCQllbWFpbFVzZXJuYW1lLCBlbWFpbFVzZXJwYXNzKSk7CisJCX0gZWxzZSB7CisJCQkvLyBub3QgdXNlIFNNVFAgQXV0aGVudGljYXRpb24KKwkJCXNlc3Npb24gPSBTZXNzaW9uLmdldERlZmF1bHRJbnN0YW5jZShwcm9wcywgbnVsbCk7CisJCX0KKworCQkvLyBCdWlsZGluZyBNaW1lTWVzc2FnZQorCQlNaW1lTWVzc2FnZSBtaW1lTWVzc2FnZSA9IG5ldyBNaW1lTWVzc2FnZShzZXNzaW9uKTsKKwkJbWltZU1lc3NhZ2Uuc2V0U3ViamVjdChzdWJqZWN0KTsKKwkJbWltZU1lc3NhZ2Uuc2V0RnJvbShuZXcgSW50ZXJuZXRBZGRyZXNzKGZyb20pKTsKKwkJbWltZU1lc3NhZ2UuYWRkUmVjaXBpZW50cyhNZXNzYWdlLlJlY2lwaWVudFR5cGUuVE8sCisJCQkJSW50ZXJuZXRBZGRyZXNzLnBhcnNlKHJlY2lwaWVudHMsIGZhbHNlKSk7CisKKwkJLy8gLS0gQ3JlYXRlIGEgbmV3IG1lc3NhZ2UgLS0KKwkJQm9keVBhcnQgbXNnID0gbmV3IE1pbWVCb2R5UGFydCgpOworCQltc2cuc2V0RGF0YUhhbmRsZXIobmV3IERhdGFIYW5kbGVyKG5ldyBCeXRlQXJyYXlEYXRhU291cmNlKGh0bWxCb2R5LAorCQkJCSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9XCJ1dGYtOFwiIikpKTsKKworCQlNdWx0aXBhcnQgbXVsdGlwYXJ0ID0gbmV3IE1pbWVNdWx0aXBhcnQoKTsKKworCQlCb2R5UGFydCBpQ2FsQXR0YWNobWVudCA9IG5ldyBNaW1lQm9keVBhcnQoKTsKKwkJaUNhbEF0dGFjaG1lbnQuc2V0RGF0YUhhbmRsZXIobmV3IERhdGFIYW5kbGVyKAorCQkJCW5ldyBqYXZheC5tYWlsLnV0aWwuQnl0ZUFycmF5RGF0YVNvdXJjZSgKKwkJCQkJCW5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShpQ2FsTWltZUJvZHkpLAorCQkJCQkJInRleHQvY2FsZW5kYXI7bWV0aG9kPVJFUVVFU1Q7Y2hhcnNldD1cIlVURi04XCIiKSkpOworCQlpQ2FsQXR0YWNobWVudC5zZXRGaWxlTmFtZSgiaW52aXRlLmljcyIpOworCisJCW11bHRpcGFydC5hZGRCb2R5UGFydChpQ2FsQXR0YWNobWVudCk7CisJCW11bHRpcGFydC5hZGRCb2R5UGFydChtc2cpOworCisJCW1pbWVNZXNzYWdlLnNldFNlbnREYXRlKG5ldyBEYXRlKCkpOworCQltaW1lTWVzc2FnZS5zZXRDb250ZW50KG11bHRpcGFydCk7CisKKwkJLy8gLS0gU2V0IHNvbWUgb3RoZXIgaGVhZGVyIGluZm9ybWF0aW9uIC0tCisJCS8vIG1pbWVNZXNzYWdlLnNldEhlYWRlcigiWC1NYWlsZXIiLCAiWE1MLU1haWwiKTsKKwkJLy8gbWltZU1lc3NhZ2Uuc2V0U2VudERhdGUobmV3IERhdGUoKSk7CisKKwkJLy8gVHJhbnNwb3J0IHRyYW5zID0gc2Vzc2lvbi5nZXRUcmFuc3BvcnQoInNtdHAiKTsKKwkJVHJhbnNwb3J0LnNlbmQobWltZU1lc3NhZ2UpOworCisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvY2hhdC9UZXN0Q2hhdExpbmtpbmcuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L2NoYXQvVGVzdENoYXRMaW5raW5nLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ZmMWM0YwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L2NoYXQvVGVzdENoYXRMaW5raW5nLmphdmEKQEAgLTAsMCArMSw4MyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy50ZXN0LmNoYXQ7CisKK2ltcG9ydCBqYXZhLnV0aWwucmVnZXguTWF0Y2hlcjsKK2ltcG9ydCBqYXZhLnV0aWwucmVnZXguUGF0dGVybjsKKworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsKKworaW1wb3J0IG9yZy5qdW5pdC5UZXN0OworCitwdWJsaWMgY2xhc3MgVGVzdENoYXRMaW5raW5nIGV4dGVuZHMgVGVzdENhc2UgeworCQorCUBUZXN0CisJcHVibGljIHZvaWQgdGVzdENoYXRQYXJzZXIoKXsKKwkJdHJ5IHsKKwkJCQorCQkJU3RyaW5nIHRleHQgPSAiaGFzbiBodHRwOi8vd3d3Lmdvb2dsZS5kZSBwZXRlciBoYXNuIGh0dHA6Ly93d3cuZ29vZ2xlLmRlICI7CisJCQkKKwkJCVN5c3RlbS5vdXQucHJpbnRsbihsaW5rKHRleHQpKTsKKwkJCQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQllcnIucHJpbnRTdGFja1RyYWNlKCk7CisJCX0KKwl9CisJCisJCisJcHJpdmF0ZSBTdHJpbmcgbGluayhTdHJpbmcgaW5wdXQpIHsKKwkJdHJ5IHsKKwkJCQorCQkJU3RyaW5nIHRSZXR1cm4gPSAiIjsKKwkJCQorCQkJU3RyaW5nIHBhcnRzW10gPSBpbnB1dC5zcGxpdCgiICIpOworCQkJCisJCQlmb3IgKGludCB0PTA7dDxwYXJ0cy5sZW5ndGg7dCsrKSB7CisJCQkJCisJCQkJU3RyaW5nIHRleHQgPSBwYXJ0c1t0XTsKKwkKKwkJCQkvL1N5c3RlbS5vdXQucHJpbnRsbigiUGFydCAxICIrdGV4dCk7CisJCQkJCisJCQkJTWF0Y2hlciBtYXRjaGVyID0gUGF0dGVybi5jb21waWxlKCIoXnxbIFx0XHJcbl0pKChmdHB8aHR0cHxodHRwc3xnb3BoZXJ8bWFpbHRvfG5ld3N8bm50cHx0ZWxuZXR8d2Fpc3xmaWxlfHByb3NwZXJvfGFpbXx3ZWJjYWwpOigoW0EtWmEtejAtOSRfLishKigpLDsvPzpAJn49LV0pfCVbQS1GYS1mMC05XXsyfSl7Mix9KCMoW2EtekEtWjAtOV1bYS16QS1aMC05JF8uKyEqKCksOy8/OkAmfj0lLV0qKSk/KFtBLVphLXowLTkkXyshKigpOy8/On4tXSkpIikubWF0Y2hlcih0ZXh0KTsKKworCQkJCWlmIChtYXRjaGVyLmZpbmQoKSkgeworCQkJCQl0ZXh0ID0gbWF0Y2hlci5yZXBsYWNlRmlyc3QoIjx1PjxGT05UIGNvbG9yPVwiIzAwMDBDQ1wiPjxhIGhyZWY9JyIgKyB0ZXh0ICsgIic+IiArIHRleHQKKwkJCQkJCQkrICI8L2E+PC9GT05UPjwvdT4iKTsKKworCQkJCX0KKwkJCQkKKwkJCQkvL1N5c3RlbS5vdXQucHJpbnRsbigiUGFydCAyICIrdGV4dCk7CisJCQkJCisJCQkJaWYgKHQgIT0gMCkgeworCQkJCQl0UmV0dXJuICs9ICIgIjsKKwkJCQl9CisJCQkJCisJCQkJdFJldHVybiArPSB0ZXh0OworCQkJCisJCQl9CisJCQkKKwkJCXJldHVybiB0UmV0dXJuOworCQkJCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCQllLnByaW50U3RhY2tUcmFjZSgpOworCQl9CisJCXJldHVybiAiIjsKKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L2NvbmZpZy9UZXN0Q29uZmlnLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9jb25maWcvVGVzdENvbmZpZy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMyZDZhNGIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9jb25maWcvVGVzdENvbmZpZy5qYXZhCkBAIC0wLDAgKzEsODYgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudGVzdC5jb25maWc7CisKK2ltcG9ydCBzdGF0aWMganVuaXQuZnJhbWV3b3JrLkFzc2VydC5hc3NlcnRFcXVhbHM7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuZGFvLkNvbmZpZ3VyYXRpb25EYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuQ29uZmlndXJhdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy50ZXN0LkFic3RyYWN0T3Blbm1lZXRpbmdzU3ByaW5nVGVzdDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy50ZXN0LmNhbGVuZGFyLlRlc3RBcHBvaW50bWVudEFkZEFwcG9pbnRtZW50OworaW1wb3J0IG9yZy5qdW5pdC5UZXN0OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uQXV0b3dpcmVkOworCitwdWJsaWMgY2xhc3MgVGVzdENvbmZpZyBleHRlbmRzIEFic3RyYWN0T3Blbm1lZXRpbmdzU3ByaW5nVGVzdCB7CisJCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IExvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKAorCQkJVGVzdEFwcG9pbnRtZW50QWRkQXBwb2ludG1lbnQuY2xhc3MpOworCQorCUBBdXRvd2lyZWQKKwlwcml2YXRlIENvbmZpZ3VyYXRpb25EYW8gY29uZmlndXJhdGlvbkRhbzsKKworCisJQFRlc3QKKwlwdWJsaWMgdm9pZCBnZXRDb25maWdLZXkoKSB7CisJCQorCQl0cnkgeworCisJCQlTeXN0ZW0uZXJyLnByaW50bG4oIlRISVMiKTsKKworCQkJQ29uZmlndXJhdGlvbiBzbXRwX3NlcnZlciA9IGNvbmZpZ3VyYXRpb25EYW8KKwkJCQkJLmdldCgKKwkJCQkJInNtdHBfc2VydmVyIik7CisJCQkKKwkJCVN5c3RlbS5lcnIucHJpbnRsbigic210cF9zZXJ2ZXIgIiArIHNtdHBfc2VydmVyLmdldFVzZXIoKSk7CisJCQkKKwkJCWFzc2VydEVxdWFscyhudWxsLCBzbXRwX3NlcnZlci5nZXRVc2VyKCkpOworCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW3N0YXJ0Q29udmVyc2lvbl0iLCBlcnIpOworCQl9CisJCQorCX0KKworCUBUZXN0CisJcHVibGljIHZvaWQgZ2V0Q29uZmlncygpIHsKKwkJCisJCXRyeSB7CisJCQlMaXN0PENvbmZpZ3VyYXRpb24+IGxpc3QgPSBjb25maWd1cmF0aW9uRGFvLmdldCg0LCA2KTsKKwkJCQorCQkJZm9yIChDb25maWd1cmF0aW9uIGNvbmYgOiBsaXN0KSB7CisJCQkJU3lzdGVtLmVyci5wcmludGxuKCJjb25mLmdldENvbmZfa2V5KCkgIiArIGNvbmYuZ2V0Q29uZl9rZXkoKSk7CisJCQkJU3lzdGVtLmVyci5wcmludGxuKCJjb25mLmdldFVzZXIoKSAiICsgY29uZi5nZXRVc2VyKCkpOworCQkJCWlmIChjb25mLmdldFVzZXIoKSAhPSBudWxsKSB7CisJCQkJCVN5c3RlbS5lcnIucHJpbnRsbigiY29uZi5nZXRVc2VycygpICIKKwkJCQkJCQkrIGNvbmYuZ2V0VXNlcigpLmdldExvZ2luKCkpOworCQkJCX0KKwkJCX0KKworCQkJYXNzZXJ0RXF1YWxzKGxpc3Quc2l6ZSgpLCA2KTsKKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltzdGFydENvbnZlcnNpb25dIiwgZXJyKTsKKwkJfQorCQkKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9kb21haW4vVGVzdEFkZEdyb3VwLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9kb21haW4vVGVzdEFkZEdyb3VwLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzFjMWM2NAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L2RvbWFpbi9UZXN0QWRkR3JvdXAuamF2YQpAQCAtMCwwICsxLDY4IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnRlc3QuZG9tYWluOworCitpbXBvcnQgb3JnLmFwYWNoZS5sb2c0ai5Mb2dnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLk9yZ2FuaXNhdGlvbk1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLmRhby5Vc2Vyc0RhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlVzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudGVzdC5BYnN0cmFjdE9wZW5tZWV0aW5nc1NwcmluZ1Rlc3Q7CitpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uQXV0b3dpcmVkOworCitwdWJsaWMgY2xhc3MgVGVzdEFkZEdyb3VwIGV4dGVuZHMgQWJzdHJhY3RPcGVubWVldGluZ3NTcHJpbmdUZXN0IHsKKworCUBBdXRvd2lyZWQKKwlwcml2YXRlIE9yZ2FuaXNhdGlvbk1hbmFnZXIgb3JnYW5pc2F0aW9uTWFuYWdlcjsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBVc2Vyc0RhbyB1c2Vyc0RhbzsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBMb2dnZXIuZ2V0TG9nZ2VyKFRlc3RBZGRHcm91cC5jbGFzcyk7CisKKwlAVGVzdAorCXB1YmxpYyB2b2lkIHRlc3RBZGRpbmdHcm91cCgpIHsKKworCQlsb25nIG9yZ2FuaXNhdGlvbl9pZCA9IG9yZ2FuaXNhdGlvbk1hbmFnZXIuYWRkT3JnYW5pc2F0aW9uKAorCQkJCSJkZWZhdWx0IiwgMSk7CisKKwkJbG9nLmVycm9yKCJuZXcgb3JnYW5pc2F0aW9uOiAiICsgb3JnYW5pc2F0aW9uX2lkKTsKKworCQlsb25nIG9yZ2FuaXNhdGlvbl91c2Vyc2lkID0gb3JnYW5pc2F0aW9uTWFuYWdlcgorCQkJCS5hZGRVc2VyVG9PcmdhbmlzYXRpb24obmV3IExvbmcoMSksIG9yZ2FuaXNhdGlvbl9pZCwKKwkJCQkJCW5ldyBMb25nKDEpKTsKKworCQlsb2cuZXJyb3IoIm5ldyBvcmdhbmlzYXRpb25fdXNlcjogIiArIG9yZ2FuaXNhdGlvbl91c2Vyc2lkKTsKKworCQlVc2VyIHVzID0gdXNlcnNEYW8uZ2V0KG5ldyBMb25nKDEpKTsKKworCQlsb2cuZXJyb3IodXMuZ2V0TGFzdG5hbWUoKSk7CisJCWxvZy5lcnJvcih1cy5nZXRBZHJlc3NlcygpLmdldFRvd24oKSk7CisKKwkJLyoKKwkJICogZm9yIChJdGVyYXRvciBpdCA9IHVzLmdldEFkcmVzc2VzKCkuZ2V0RW1haWxzKCkuaXRlcmF0b3IoKTsKKwkJICogaXQuaGFzTmV4dCgpOyl7IEFkcmVzc2VzX0VtYWlscyBhZGRyTWFpbHMgPSAoQWRyZXNzZXNfRW1haWxzKQorCQkgKiBpdC5uZXh0KCk7IGxvZy5lcnJvcihhZGRyTWFpbHMuZ2V0TWFpbCgpLmdldEVtYWlsKCkpOyB9CisJCSAqIGxvZy5lcnJvcigic2l6ZSBvZiBkb21haW5zOiAiK3VzLmdldE9yZ2FuaXNhdGlvbl91c2VycygpLnNpemUoKSk7IGZvcgorCQkgKiAoSXRlcmF0b3IgaXQyID0gdXMuZ2V0T3JnYW5pc2F0aW9uX3VzZXJzKCkuaXRlcmF0b3IoKTsKKwkJICogaXQyLmhhc05leHQoKTspeyBPcmdhbmlzYXRpb25fVXNlcnMgb3JnVXNlcnMgPSAoT3JnYW5pc2F0aW9uX1VzZXJzKQorCQkgKiBpdDIubmV4dCgpOyBsb2cuZXJyb3Iob3JnVXNlcnMuZ2V0T3JnYW5pc2F0aW9uKCkuZ2V0TmFtZSgpKTsgfQorCQkgKi8KKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L2RvbWFpbi9UZXN0VXNlckdyb3VwQWdncmVnYXRpb24uamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L2RvbWFpbi9UZXN0VXNlckdyb3VwQWdncmVnYXRpb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzg3NmY3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvZG9tYWluL1Rlc3RVc2VyR3JvdXBBZ2dyZWdhdGlvbi5qYXZhCkBAIC0wLDAgKzEsNjIgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudGVzdC5kb21haW47CisKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRUcnVlOworCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2ltcG9ydCBvcmcuYXBhY2hlLmxvZzRqLkxvZ2dlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuT3JnYW5pc2F0aW9uTWFuYWdlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5kb21haW4uT3JnYW5pc2F0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnRlc3QuQWJzdHJhY3RPcGVubWVldGluZ3NTcHJpbmdUZXN0OworaW1wb3J0IG9yZy5qdW5pdC5UZXN0OworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKKworcHVibGljIGNsYXNzIFRlc3RVc2VyR3JvdXBBZ2dyZWdhdGlvbiBleHRlbmRzIEFic3RyYWN0T3Blbm1lZXRpbmdzU3ByaW5nVGVzdCB7CisKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBPcmdhbmlzYXRpb25NYW5hZ2VyIG9yZ2FuaXNhdGlvbk1hbmFnZXI7CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gTG9nZ2VyCisJCQkuZ2V0TG9nZ2VyKFRlc3RVc2VyR3JvdXBBZ2dyZWdhdGlvbi5jbGFzcyk7CisKKwlAVGVzdAorCXB1YmxpYyB2b2lkIHRlc3RpdE5vdygpIHsKKworCQlMaXN0PE9yZ2FuaXNhdGlvbj4gb3JnVXNlciA9IG9yZ2FuaXNhdGlvbk1hbmFnZXIuZ2V0T3JnYW5pc2F0aW9uc0J5VXNlcklkKDMsIDEsIDAsCisJCQkJMTAwLCAib3JnYW5pc2F0aW9uX2lkIiwgdHJ1ZSk7CisKKwkJYXNzZXJ0VHJ1ZSgiRGVmYXVsdCB1c2VyIG11c3QgYmVsb25nIHRvIGF0IGxlYXN0IG9uZSBvcmdhbmlzYXRpb24iLCBvcmdVc2VyLnNpemUoKSA+IDApOworCisJCWZvciAoT3JnYW5pc2F0aW9uIG9yZ1VzZXJPYmogOiBvcmdVc2VyKSB7CisJCQlsb2cuZXJyb3IoInRlc3RpdE5vdzogb3JnYW5pc2F0aW9uIElkOiAnIiArIG9yZ1VzZXJPYmouZ2V0T3JnYW5pc2F0aW9uX2lkKCkgKyAiJzsgbmFtZTogJyIgKyBvcmdVc2VyT2JqLmdldE5hbWUoKSArICInIik7CisJCX0KKworCQlMaXN0PE9yZ2FuaXNhdGlvbj4gb3JnVXNlcjIgPSBvcmdhbmlzYXRpb25NYW5hZ2VyLmdldFJlc3RPcmdhbmlzYXRpb25zQnlVc2VySWQoMywKKwkJCQkxLCAwLCAxMDAsICJvcmdhbmlzYXRpb25faWQiLCB0cnVlKTsKKworCQlsb2cuZXJyb3IoInRlc3RpdE5vdzogcmVzdCBvcmdhbmlzYXRpb25zIGNvdW50OiAiICsgb3JnVXNlcjIuc2l6ZSgpKTsKKworCQlmb3IgKE9yZ2FuaXNhdGlvbiBvcmdVc2VyT2JqIDogb3JnVXNlcjIpIHsKKwkJCWxvZy5lcnJvcigidGVzdGl0Tm93OiBvcmdhbmlzYXRpb24gSWQ6ICciICsgb3JnVXNlck9iai5nZXRPcmdhbmlzYXRpb25faWQoKSArICInOyBuYW1lOiAnIiArIG9yZ1VzZXJPYmouZ2V0TmFtZSgpICsgIiciKTsKKwkJfQorCQkKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9lbW90ZXMvVGVzdENoYXRQYXJzaW5nLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9lbW90ZXMvVGVzdENoYXRQYXJzaW5nLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ1YWQ5ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L2Vtb3Rlcy9UZXN0Q2hhdFBhcnNpbmcuamF2YQpAQCAtMCwwICsxLDY5IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnRlc3QuZW1vdGVzOworCitpbXBvcnQgamF2YS51dGlsLkxpbmtlZExpc3Q7CisKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7CisKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKKworcHVibGljIGNsYXNzIFRlc3RDaGF0UGFyc2luZyBleHRlbmRzIFRlc3RDYXNlIHsKKwkKKwlwdWJsaWMgc3RhdGljIExpbmtlZExpc3Q8TGlua2VkTGlzdDxTdHJpbmc+PiBlbW90ZmlsZXNMaXN0ID0gbmV3IExpbmtlZExpc3Q8TGlua2VkTGlzdDxTdHJpbmc+PigpOworCQorCUBUZXN0CisJcHVibGljIHZvaWQgdGVzdENoYXRQYXJzZXIoKXsKKwkJdHJ5IHsKKwkJCS8vRklYTUUKKwkJCVN0cmluZyBmaWxlUGF0aCA9ICIvVXNlcnMvc2ViYXN0aWFud2FnbmVyL0RvY3VtZW50cy93b3Jrc3BhY2UveG1sY3JtL3dlYmFwcC94bWxjcm0vcHVibGljLyI7CisJCQkKKwkJCXRoaXMubG9hZEVtb3QoZmlsZVBhdGgpOworCQkJCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWVyci5wcmludFN0YWNrVHJhY2UoKTsKKwkJfQorCX0KKwkKKwlwdWJsaWMgdm9pZCBsb2FkRW1vdChTdHJpbmcgZmlsZVBhdGgpeworCQl0cnkgeworLy8JCQlTdHJpbmcgZmlsZU5hbWUgPSBmaWxlUGF0aCArIEZpbGUuc2VwYXJhdG9yQ2hhciArICJlbW90aWNvbnMiICsgRmlsZS5zZXBhcmF0b3JDaGFyICsgImVtb3Rlcy54bWwiOworLy8JCQlYU3RyZWFtIHhTdHJlYW0gPSBuZXcgWFN0cmVhbShuZXcgWHBwRHJpdmVyKCkpOworLy8JCQl4U3RyZWFtLnNldE1vZGUoWFN0cmVhbS5OT19SRUZFUkVOQ0VTKTsKKy8vCQkJQnVmZmVyZWRSZWFkZXIgcmVhZGVyID0gbmV3IEJ1ZmZlcmVkUmVhZGVyKG5ldyBGaWxlUmVhZGVyKGZpbGVOYW1lKSk7CisvLwkJICAgIFN0cmluZyB4bWxTdHJpbmcgPSAiIjsKKy8vCQkgICAgd2hpbGUgKHJlYWRlci5yZWFkeSgpKSB7CisvLwkJICAgIAl4bWxTdHJpbmcgKz0gcmVhZGVyLnJlYWRMaW5lKCk7CisvLwkJICAgIH0KKy8vCQkgICAgQXBwbGljYXRpb24uc2V0RW1vdGZpbGVzTGlzdCgoTGlua2VkTGlzdDxMaW5rZWRMaXN0PFN0cmluZz4+KSB4U3RyZWFtLmZyb21YTUwoeG1sU3RyaW5nKSk7CisvLwkJICAgIENoYXRTdHJpbmcuZ2V0SW5zdGFuY2UoKS5yZXBsYWNlQWxsUmVnRXhwKCk7CisvLwkJICAgIFN0cmluZyBtZXNzYWdlVGV4dCA9ICJIaSA6KSBob3cgYXJlIHlvdT8gd2hhdHMgZ29pbmcgb24gQikgdG9kYXkgKFRfVCkgPyB3aXRoIHlvdSA/IjsKKy8vCQkgICAgLy9tZXNzYWdlVGV4dCA9ICI6KSBIaSA6KSBob3cgOiggYXJlIDopIHlvdSA6KCB0b2RheSA+Ok8gZ29pbmcgb24/IDopIjsKKy8vCQkgICAgLy9tZXNzYWdlVGV4dCA9ICJIaSA6KSBob3cgOiggYXJlIDopIHlvdSA6KCB0b2RheSA6KSAiOworLy8JCSAgICAvL21lc3NhZ2VUZXh0ID0gIkhpIDopIGhvdyI7CisvLwkJICAgIENoYXRTdHJpbmcuZ2V0SW5zdGFuY2UoKS5wYXJzZUNoYXRTdHJpbmcobWVzc2FnZVRleHQpOworCQkgICAgCisJCSAgICBTeXN0ZW0ub3V0LnByaW50bG4oImxvYWRFbW90IGNvbXBsZXRlZCIpOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlTeXN0ZW0ub3V0LnByaW50bG4oIltsb2FkRW1vdF0iK2Vycik7CisJCQllcnIucHJpbnRTdGFja1RyYWNlKCk7CisJCX0KKwl9CQorCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9lbW90ZXMvVGVzdENvbnZlcnRHaWZzLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9lbW90ZXMvVGVzdENvbnZlcnRHaWZzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDkyMjFlMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L2Vtb3Rlcy9UZXN0Q29udmVydEdpZnMuamF2YQpAQCAtMCwwICsxLDEyMyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy50ZXN0LmVtb3RlczsKKworaW1wb3J0IGphdmEuaW8uRmlsZTsKK2ltcG9ydCBqYXZhLmlvLkZpbGVXcml0ZXI7CitpbXBvcnQgamF2YS5pby5QcmludFdyaXRlcjsKK2ltcG9ydCBqYXZhLnV0aWwuTGlua2VkTGlzdDsKKworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsKKworaW1wb3J0IG9yZy5hcGFjaGUubG9nNGouTG9nZ2VyOworaW1wb3J0IG9yZy5qdW5pdC5UZXN0OworCitpbXBvcnQgY29tLnRob3VnaHR3b3Jrcy54c3RyZWFtLlhTdHJlYW07CitpbXBvcnQgY29tLnRob3VnaHR3b3Jrcy54c3RyZWFtLmlvLnhtbC5YcHBEcml2ZXI7CisKK3B1YmxpYyBjbGFzcyBUZXN0Q29udmVydEdpZnMgZXh0ZW5kcyBUZXN0Q2FzZSB7CisJCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IExvZ2dlci5nZXRMb2dnZXIoVGVzdENvbnZlcnRHaWZzLmNsYXNzKTsKKworCUBUZXN0CisJcHVibGljIHZvaWQgdGVzdENvbnZlcnREaXIoKXsKKwkJdHJ5IHsKKwkJCS8vRklYTUUKKwkJCVN0cmluZyBiYXNlUGF0aCA9ICIvVXNlcnMvc2ViYXN0aWFud2FnbmVyL0RvY3VtZW50cy93b3Jrc3BhY2UveG1sY3JtL3dlYmFwcC94bWxjcm0vcHVibGljL2Vtb3RpY29ucy8iOworCQkJCisJCQlTeXN0ZW0ub3V0LnByaW50bG4oImJhc2VQYXRoICIrYmFzZVBhdGgpOworCQkJRmlsZSBiYXNlRGlyID0gbmV3IEZpbGUoYmFzZVBhdGgpOworCQkJCisJCQlTeXN0ZW0ub3V0LnByaW50bG4oImJhc2VQYXRoICIrYmFzZURpci5leGlzdHMoKSk7CisJCQkKKwkJCVN0cmluZyBiYXRmaWxlUGF0aCA9ICJteWJhdC5iYXQiOworCQkJU3RyaW5nIGJhdFN0cmluZyA9ICIiOworCQkJCisJCQlTdHJpbmdbXSBhbGxmaWxlcyA9IGJhc2VEaXIubGlzdCgpOwkJCQorCQkJaWYoYWxsZmlsZXMhPW51bGwpeworCQkJCWZvcihpbnQgaT0wOyBpPGFsbGZpbGVzLmxlbmd0aDsgaSsrKXsKKwkJCQkJRmlsZSBmaWxlID0gbmV3IEZpbGUoYmFzZVBhdGgrRmlsZS5zZXBhcmF0b3JDaGFyK2FsbGZpbGVzW2ldKTsKKwkJCQkJU3RyaW5nIGZpbGVOYW1lID0gZmlsZS5nZXROYW1lKCk7CisJCQkJCVN5c3RlbS5vdXQucHJpbnRsbigiZmlsZSAiK2ZpbGUuZ2V0TmFtZSgpKTsKKwkJCQkJU3RyaW5nIGZpbGVOYW1lUHVyZSA9IGZpbGVOYW1lLnN1YnN0cmluZygwLCBmaWxlTmFtZS5sZW5ndGgoKS00KTsKKwkJCQkJCisJCQkJCWJhdFN0cmluZyArPSAiZ2lmMnN3ZiAtciAzMCAtbyAiK2ZpbGVOYW1lUHVyZSsiLnN3ZiAiK2ZpbGVOYW1lKyIgXHJcbiI7CisJCQkJfQorCQkJfQorCQkJCisJCQlQcmludFdyaXRlciBwdyA9IG5ldyBQcmludFdyaXRlcihuZXcgRmlsZVdyaXRlcihiYXNlUGF0aCtiYXRmaWxlUGF0aCkpOworCQkgICAgcHcucHJpbnRsbihiYXRTdHJpbmcpOworCQkgICAgcHcuZmx1c2goKTsKKwkJICAgIHB3LmNsb3NlKCk7CisJCSAgICAKKwkJCVN5c3RlbS5vdXQucHJpbnRsbigiYmF0U3RyaW5nICIrYmF0U3RyaW5nKTsKKwkJCQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQllcnIucHJpbnRTdGFja1RyYWNlKCk7CisJCX0KKwl9CisJCisJQFRlc3QKKwlwdWJsaWMgdm9pZCB0ZXN0WE1MRGlyKCl7CisJCXRyeSB7CisJCQkvL0ZJWE1FCisJCQlTdHJpbmcgYmFzZVBhdGggPSAiL1VzZXJzL3NlYmFzdGlhbndhZ25lci9Eb2N1bWVudHMvd29ya3NwYWNlL3htbGNybS93ZWJhcHAveG1sY3JtL3VwbG9hZC9lbW90aWNvbnMvIjsKKwkJCQorCQkJU3lzdGVtLm91dC5wcmludGxuKCJiYXNlUGF0aCAiK2Jhc2VQYXRoKTsKKwkJCUZpbGUgYmFzZURpciA9IG5ldyBGaWxlKGJhc2VQYXRoKTsKKwkJCQorCQkJU3lzdGVtLm91dC5wcmludGxuKCJiYXNlUGF0aCAiK2Jhc2VEaXIuZXhpc3RzKCkpOworCQkJCisJCQlTdHJpbmcgYmF0ZmlsZVBhdGggPSAiZW1vdGVzLnhtbCI7CisJCQlTdHJpbmcgYmF0U3RyaW5nID0gIiI7CisJCQkKKwkJCVN0cmluZ1tdIGFsbGZpbGVzID0gYmFzZURpci5saXN0KCk7CQorCQkJTGlua2VkTGlzdDxMaW5rZWRMaXN0PFN0cmluZz4+IGZpbGVzTGlzdCA9IG5ldyBMaW5rZWRMaXN0PExpbmtlZExpc3Q8U3RyaW5nPj4oKTsKKwkJCWlmKGFsbGZpbGVzIT1udWxsKXsKKwkJCQlmb3IoaW50IGk9MDsgaTxhbGxmaWxlcy5sZW5ndGg7IGkrKyl7CisJCQkJCUZpbGUgZmlsZSA9IG5ldyBGaWxlKGJhc2VQYXRoK0ZpbGUuc2VwYXJhdG9yQ2hhcithbGxmaWxlc1tpXSk7CisJCQkJCUxpbmtlZExpc3Q8U3RyaW5nPiBzaW5nbGVGaWxlID0gbmV3IExpbmtlZExpc3Q8U3RyaW5nPigpOworCQkJCQlTdHJpbmcgZmlsZU5hbWUgPSBmaWxlLmdldE5hbWUoKTsKKwkJCQkJU3lzdGVtLm91dC5wcmludGxuKCJmaWxlICIrZmlsZS5nZXROYW1lKCkpOworCQkJCQlTdHJpbmcgZmlsZU5hbWVQdXJlID0gZmlsZU5hbWUuc3Vic3RyaW5nKDAsIGZpbGVOYW1lLmxlbmd0aCgpLTQpOworCQkJCQlzaW5nbGVGaWxlLmFkZChmaWxlTmFtZVB1cmUrIi5zd2YiKTsKKwkJCQkJc2luZ2xlRmlsZS5hZGQoIjopIik7CisJCQkJCXNpbmdsZUZpbGUuYWRkKCIoXl9eKSIpOworCQkJCQlmaWxlc0xpc3QuYWRkKHNpbmdsZUZpbGUpOworCQkJCX0KKwkJCX0KKwkJCQorCQkJWFN0cmVhbSB4U3RyZWFtID0gbmV3IFhTdHJlYW0obmV3IFhwcERyaXZlcigpKTsKKwkJCXhTdHJlYW0uc2V0TW9kZShYU3RyZWFtLk5PX1JFRkVSRU5DRVMpOworCQkJU3RyaW5nIHhtbFN0cmluZyA9IHhTdHJlYW0udG9YTUwoZmlsZXNMaXN0KTsKKworCQkJbG9nLmVycm9yKHhtbFN0cmluZyk7CisJCQkKKwkJCVByaW50V3JpdGVyIHB3ID0gbmV3IFByaW50V3JpdGVyKG5ldyBGaWxlV3JpdGVyKGJhc2VQYXRoK2JhdGZpbGVQYXRoKSk7CisJCSAgICBwdy5wcmludGxuKHhtbFN0cmluZyk7CisJCSAgICBwdy5mbHVzaCgpOworCQkgICAgcHcuY2xvc2UoKTsKKwkJICAgIAorCQkJU3lzdGVtLm91dC5wcmludGxuKCJiYXRTdHJpbmcgIitiYXRTdHJpbmcpOworCQkJCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWVyci5wcmludFN0YWNrVHJhY2UoKTsKKwkJfQorCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L2d1aS9UZXN0R3VpLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9ndWkvVGVzdEd1aS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2YjY0YmYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9ndWkvVGVzdEd1aS5qYXZhCkBAIC0wLDAgKzEsMzIgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudGVzdC5ndWk7CisKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKKworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsKKworCitwdWJsaWMgY2xhc3MgVGVzdEd1aSAgZXh0ZW5kcyBUZXN0Q2FzZSB7CisKKwlAVGVzdAorCXB1YmxpYyB2b2lkIHRlc3ROb29wKCkgeworCQkKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9qYWkvVGVzdEludGVycG9sYXRpb24uamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L2phaS9UZXN0SW50ZXJwb2xhdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyNWI0YTQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9qYWkvVGVzdEludGVycG9sYXRpb24uamF2YQpAQCAtMCwwICsxLDYzIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnRlc3QuamFpOworCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlOworCitpbXBvcnQgb3JnLmFwYWNoZS5sb2c0ai5Mb2dnZXI7CitpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CisKK3B1YmxpYyBjbGFzcyBUZXN0SW50ZXJwb2xhdGlvbiBleHRlbmRzIFRlc3RDYXNlIHsKKwkKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gTG9nZ2VyLmdldExvZ2dlcihUZXN0SW50ZXJwb2xhdGlvbi5jbGFzcyk7CisJCisJQFRlc3QKKwlwdWJsaWMgdm9pZCB0ZXN0SW50ZXJwb2xhdGUoKSB7CisJCXRyeSB7CisJCQkKKy8vCQkJR2VvbVBvaW50IHAxID0gbmV3IFBvaW50KC02MCwtMTAwKTsKKy8vCQkJR2VvbVBvaW50IHAyID0gbmV3IFBvaW50KDIwLCA1MCk7CisvLworLy8JCQkvL2RvdWJsZVtdIHNhbXBsZXMgPSB7LTEwMCwtNTB9OworLy8JCQkKKy8vCQkJR2VvbVBvaW50IGdQb2ludCA9IEdlb21Qb2ludC5pbnRlcnBvbGF0ZShwMSwgcDIsIG5ldyBGbG9hdCgwLjUpKTsKKy8vCQkJCisvLwkJCWxvZy5kZWJ1ZygiSW50ZXJwb2xhdGVkOiAiK2dQb2ludCk7CisvLwkJCQorLy8JCQkKKy8vCQkJR2VvbVBvaW50IHAzID0gbmV3IEdlb21Qb2ludCgpOworLy8JCQlwMy5zZXRMb2NhdGlvbigtMiw0KTsKKy8vCQkJLy9wMy5zZXRMb2NhdGlvbigzLDQpOworLy8JCQlwMy5ub3JtYWxpemUoMTApOworLy8JCQkvL0dlb21Qb2ludAorLy8JCQkKKy8vCQkJCisvLwkJCXAzLnNldExvY2F0aW9uKDIsLTQpOworLy8JCQkvL3AzLnNldExvY2F0aW9uKDMsNCk7CisvLwkJCXAzLm5vcm1hbGl6ZSgxMCk7CisvLwkJCQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXIpIHsKKwkJCWxvZy5lcnJvcigiRVJST1IgIiwgZXIpOworCQkJU3lzdGVtLm91dC5wcmludGxuKCJFcnJvciBleHBvcnRpbmc6ICIgKyBlcik7CisJCQllci5wcmludFN0YWNrVHJhY2UoKTsKKwkJfQorCX0KKworCQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvamFpL1Rlc3RTVkdUZXh0RXhwb3J0ZXJBcnJvdy5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvamFpL1Rlc3RTVkdUZXh0RXhwb3J0ZXJBcnJvdy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5MWVlN2IKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9qYWkvVGVzdFNWR1RleHRFeHBvcnRlckFycm93LmphdmEKQEAgLTAsMCArMSwxMDYgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudGVzdC5qYWk7CisKK2ltcG9ydCBqYXZhLmlvLk91dHB1dFN0cmVhbVdyaXRlcjsKK2ltcG9ydCBqYXZhLmlvLldyaXRlcjsKKworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsKKworaW1wb3J0IG9yZy5hcGFjaGUuYmF0aWsuZG9tLkdlbmVyaWNET01JbXBsZW1lbnRhdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLmJhdGlrLmRvbS5zdmcuU1ZHRE9NSW1wbGVtZW50YXRpb247CitpbXBvcnQgb3JnLmFwYWNoZS5iYXRpay5zdmdnZW4uU1ZHR3JhcGhpY3MyRDsKK2ltcG9ydCBvcmcuYXBhY2hlLmxvZzRqLkxvZ2dlcjsKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKK2ltcG9ydCBvcmcudzNjLmRvbS5ET01JbXBsZW1lbnRhdGlvbjsKK2ltcG9ydCBvcmcudzNjLmRvbS5Eb2N1bWVudDsKK2ltcG9ydCBvcmcudzNjLmRvbS5FbGVtZW50OworCitwdWJsaWMgY2xhc3MgVGVzdFNWR1RleHRFeHBvcnRlckFycm93IGV4dGVuZHMgVGVzdENhc2UgeworCQorCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBMb2dnZXIuZ2V0TG9nZ2VyKFRlc3RTVkdUZXh0RXhwb3J0ZXJBcnJvdy5jbGFzcyk7CisJCisJQFRlc3QKKwlwdWJsaWMgdm9pZCB0ZXN0R2V0RGlhZ3JhbUxpc3QoKSB7CisJCXRyeSB7CisJCQkKKwkJCQorCSAgICAgICAgLy8gR2V0IGEgRE9NSW1wbGVtZW50YXRpb24uCisJICAgICAgICBET01JbXBsZW1lbnRhdGlvbiBkb21JbXBsID0KKwkgICAgICAgICAgICBHZW5lcmljRE9NSW1wbGVtZW50YXRpb24uZ2V0RE9NSW1wbGVtZW50YXRpb24oKTsKKworCSAgICAgICAgLy8gQ3JlYXRlIGFuIGluc3RhbmNlIG9mIG9yZy53M2MuZG9tLkRvY3VtZW50LgorCSAgICAgICAgLy9TdHJpbmcgc3ZnTlMgPSAiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciOworCSAgICAgICAgU3RyaW5nIHN2Z05TID0gU1ZHRE9NSW1wbGVtZW50YXRpb24uU1ZHX05BTUVTUEFDRV9VUkk7CisKKwkgICAgICAgIERvY3VtZW50IGRvY3VtZW50ID0gZG9tSW1wbC5jcmVhdGVEb2N1bWVudChzdmdOUywgInN2ZyIsIG51bGwpOworCSAgICAgICAgCisJICAgICAgICAvLyBHZXQgdGhlIHJvb3QgZWxlbWVudCAodGhlICdzdmcnIGVsZW1lbnQpLgorCSAgICAgICAgRWxlbWVudCBzdmdSb290ID0gZG9jdW1lbnQuZ2V0RG9jdW1lbnRFbGVtZW50KCk7CisKKwkgICAgICAgIAorCSAgICAgICAgLy8gU2V0IHRoZSB3aWR0aCBhbmQgaGVpZ2h0IGF0dHJpYnV0ZXMgb24gdGhlIHJvb3QgJ3N2ZycgZWxlbWVudC4KKwkgICAgICAgIHN2Z1Jvb3Quc2V0QXR0cmlidXRlTlMobnVsbCwgIndpZHRoIiwgIjI0MDAiKTsKKwkgICAgICAgIHN2Z1Jvb3Quc2V0QXR0cmlidXRlTlMobnVsbCwgImhlaWdodCIsICIxNjAwIik7CisJICAgICAgICAKKworCSAgICAgICAgLy8gQ3JlYXRlIGFuIGluc3RhbmNlIG9mIHRoZSBTVkcgR2VuZXJhdG9yLgorCSAgICAgICAgU1ZHR3JhcGhpY3MyRCBzdmdHZW5lcmF0b3IgPSBuZXcgU1ZHR3JhcGhpY3MyRChkb2N1bWVudCk7CisKKy8vCSAgICAgICAgU1ZHR3JhcGhpY3MyRCBzdmdHZW5lcmF0b3I4ID0gbmV3IFNWR0dyYXBoaWNzMkQoc3ZnR2VuZXJhdG9yKTsKKy8vCSAgICAgICAgLy9TVkdHcmFwaGljczJEIHN2Z0dlbmVyYXRvcjIgPSBuZXcgU1ZHR3JhcGhpY3MyRChkb2N1bWVudCk7CisvLwkgICAgICAgIAorLy8JICAgICAgICAvL05PVEU6IEZvbnQuSVRBTElDK0ZvbnQuQk9MRCA9IEZvbnQgQU5EIEJvbGQgIQorLy8JICAgICAgICBleHBvcnRUb0ltYWdlVGVzdC5wYWludFRleHRCeVdpZHRoSGVpZ2h0KHN2Z0dlbmVyYXRvcjgsIDUwMCwgMzAwLCAxMDAsIDIwMCwgIlByb2Nlc3MiLCBGb250LkJPTEQrRm9udC5JVEFMSUMsIDI4LAorLy8JICAgICAgICAJCW5ldyBDb2xvcigyNTUsMCwwKSk7CisvLwkgICAgICAgIAorLy8JICAgICAgICBTVkdHcmFwaGljczJEIHN2Z0dlbmVyYXRvcjExID0gbmV3IFNWR0dyYXBoaWNzMkQoc3ZnR2VuZXJhdG9yKTsKKy8vCSAgICAgICAgCisvLwkgICAgICAgIGV4cG9ydFRvSW1hZ2VUZXN0LnBhaW50VGV4dEJ5V2lkdGhIZWlnaHQoc3ZnR2VuZXJhdG9yMTEsIDEwMCwgMzAwLCAxMDAsIDIwMCwgIlByb2Nlc3MiLCBGb250LkJPTEQrRm9udC5JVEFMSUMsIDExMSwKKy8vCSAgICAgICAgCQluZXcgQ29sb3IoMjU1LDAsMCkpOworLy8JICAgICAgICAKKy8vCSAgICAgICAgU1ZHR3JhcGhpY3MyRCBzdmdHZW5lcmF0b3I5ID0gbmV3IFNWR0dyYXBoaWNzMkQoc3ZnR2VuZXJhdG9yKTsKKwkgICAgICAvL05PVEU6IEZvbnQuSVRBTElDK0ZvbnQuQk9MRCA9IEZvbnQgQU5EIEJvbGQgIQorLy8JICAgICAgICBleHBvcnRUb0ltYWdlVGVzdC5fcGFpbnRUZXh0QnlXaWR0aEhlaWdodChzdmdHZW5lcmF0b3I5LCA1MDAsIDMwMCwgMTAwLCAyMDAsICJIYW5zIiwgRm9udC5CT0xELCAyOCwKKy8vCSAgICAgICAgCQluZXcgQ29sb3IoMjU1LDAsMCkpOworCSAgICAKKwkgICAgCisJICAgICAgICAvLyBGaW5hbGx5LCBzdHJlYW0gb3V0IFNWRyB0byB0aGUgc3RhbmRhcmQgb3V0cHV0IHVzaW5nCisJICAgICAgICAvLyBVVEYtOCBlbmNvZGluZy4KKwkgICAgICAgIGJvb2xlYW4gdXNlQ1NTID0gdHJ1ZTsgLy8gd2Ugd2FudCB0byB1c2UgQ1NTIHN0eWxlIGF0dHJpYnV0ZXMKKwkgICAgICAgIC8vV3JpdGVyIG91dCA9IG5ldyBPdXRwdXRTdHJlYW1Xcml0ZXIoU3lzdGVtLm91dCwgIlVURi04Iik7CisJICAgICAgICAKKwkgICAgICAgIC8vT3V0cHV0U3RyZWFtIG91dCA9IGh0dHBTZXJ2bGV0UmVzcG9uc2UuZ2V0T3V0cHV0U3RyZWFtKCk7CisJCQkvL2h0dHBTZXJ2bGV0UmVzcG9uc2Uuc2V0Q29udGVudFR5cGUoIkFQUExJQ0FUSU9OL09DVEVULVNUUkVBTSIpOworCQkJLy9odHRwU2VydmxldFJlc3BvbnNlLnNldEhlYWRlcigiQ29udGVudC1EaXNwb3NpdGlvbiIsImF0dGFjaG1lbnQ7IGZpbGVuYW1lPVwiIiArIHJlcXVlc3RlZEZpbGUgKyAiXCIiKTsKKwkgICAgICAgIFdyaXRlciBvdXQgPSBuZXcgT3V0cHV0U3RyZWFtV3JpdGVyKFN5c3RlbS5vdXQsICJVVEYtOCIpOworCisJICAgICAgICAvL1N0cmluZ1dyaXRlciBvdXQgPSBuZXcgU3RyaW5nV3JpdGVyKCk7CisJICAgICAgICAKKwkgICAgICAgIHN2Z0dlbmVyYXRvci5zdHJlYW0ob3V0LCB1c2VDU1MpOworCQl9IGNhdGNoIChFeGNlcHRpb24gZXIpIHsKKwkJCWxvZy5lcnJvcigiRVJST1IgIiwgZXIpOworCQkJU3lzdGVtLm91dC5wcmludGxuKCJFcnJvciBleHBvcnRpbmc6ICIgKyBlcik7CisJCQllci5wcmludFN0YWNrVHJhY2UoKTsKKwkJfQorCX0KKwkKKwkKKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvbGFiZWxzL0ZpbGxMYWJlbHMuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L2xhYmVscy9GaWxsTGFiZWxzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjU2ZDVmZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L2xhYmVscy9GaWxsTGFiZWxzLmphdmEKQEAgLTAsMCArMSwxNzUgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudGVzdC5sYWJlbHM7CisKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CitpbXBvcnQgamF2YS5pby5GaWxlTm90Rm91bmRFeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5GaWxlT3V0cHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uRmlsZW5hbWVGaWx0ZXI7CitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworaW1wb3J0IGphdmEudXRpbC5MaW5rZWRIYXNoTWFwOworaW1wb3J0IGphdmEudXRpbC5NYXA7CitpbXBvcnQgamF2YS51dGlsLk1hcC5FbnRyeTsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmxhbmcuRmllbGRsYW5ndWFnZXN2YWx1ZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMubGFuZy5GaWVsZHZhbHVlczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5zZXJ2bGV0Lm91dHB1dGhhbmRsZXIuTGFuZ0V4cG9ydDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5PbUZpbGVIZWxwZXI7CitpbXBvcnQgb3JnLmRvbTRqLkRvY3VtZW50OworaW1wb3J0IG9yZy5kb200ai5Eb2N1bWVudEV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuZG9tNGouRWxlbWVudDsKK2ltcG9ydCBvcmcuZG9tNGouaW8uU0FYUmVhZGVyOworaW1wb3J0IG9yZy5qdW5pdC5UZXN0OworCisvKioKKyAqIFN5bmNzIGFsbCBsYWJlbHMgZnJvbSBhIGdpdmVuIG1hc3RlciBsYW5ndWFnZSBmaWxlIHRvIGFsbCBsYW5ndWFnZSBmaWxlcyBZb3UKKyAqIGNhbiBhbHNvIHNwZWNpZnkgc29tZSBsYWJlbHMgdGhhdCBhcmUgb3ZlcndyaXR0ZW4gZnJvbSB0aGUgbWFzdGVyIGZpbGUgdG8gYWxsCisgKiBvdGhlciBmaWxlcy48YnIvPgorICogPGJyLz4KKyAqIEl0IHdpbGwgcmVhZCBmaXJzdCB0aGUge0BsaW5rICNtYXN0ZXJMYW5nRmlsZX0gYW5kIHRoZW4gYWxsIG90aGVyIFhNTCBmaWxlcyBhbmQgZmlsbAorICogaXQuIFByYWN0aWNhbGx5IEkgaGF2ZSBwdXQgImVuZ2xpc2gueG1sIiBpbiB0aGUge0BsaW5rICNtYXN0ZXJMYW5nRmlsZX0sIHNvIHlvdSBjYW4KKyAqIGFkZCBuZXcgbGFiZWxzIHRvIHRoZSBlbmdsaXNoLnhtbCwgcnVuIHRoZSB0ZXN0LCByZWZyZXNoIEVjbGlwc2UgYW5kIGFsbAorICogb3RoZXIgbGFuZyBmaWxlcyBzaG91bGQgaGF2ZSB0aGUgbmV3IGxhYmVsKHMpIHRvby48YnIvPgorICogPGJyLz4KKyAqIEl0IGlzIGFsc28gcG9zc2libGUgdG8gcmVwbGFjZSBleGlzdGluZyBvdGhlciBsYWJlbHMsIGp1c3Qgc2VlIHRoZSBhcnJheQorICogdmFyaWFibGU6IHtAbGluayAjcmVwbGFjZUlkc30uIEFsbCBJZHMsIGluIHRoYXQgYXJyYXkgd2lsbCBiZSBzeW5jZWQgZnJvbSB0aGUKKyAqIHtAbGluayAjbWFzdGVyTGFuZ0ZpbGV9IHRvIGFsbCBvdGhlciBsYW5ndWFnZXMuPGJyLz4KKyAqIDxici8+CisgKiBUaGUgSnVuaXQgdGVzdCBhbHNvIGRvZXMgc29tZSB0ZXN0cywgZm9yIGV4YW1wbGUgaXQgZmFpbHMgaWYgaXQgZGV0ZWN0cworICogZHVwbGljYXRlIGxhYmVsaWQncy48YnIvPgorICogCisgKiBAYXV0aG9yIHNlYmF3YWduZXIKKyAqIAorICovCitwdWJsaWMgY2xhc3MgRmlsbExhYmVscyB7CisKKwlwcml2YXRlIGZpbmFsIFN0cmluZyBiYXNlUGF0aCA9ICJXZWJDb250ZW50L2xhbmd1YWdlcy8iOworCisJcHJpdmF0ZSBmaW5hbCBTdHJpbmcgbWFzdGVyTGFuZ0ZpbGUgPSAiZW5nbGlzaC54bWwiOworCisJcHJpdmF0ZSBmaW5hbCBTdHJpbmdbXSBleGNsdWRlRmlsZXMgPSB7ICJlcnJvcnZhbHVlcy54bWwiLAorCQkJImNvdW50cmllcy54bWwiLCAidGltZXpvbmVzLnhtbCIsICJsYW5ndWFnZXMueG1sIiB9OworCisJLyoqCisJICogdGhvc2UgbGFiZWxzIHdpbGwgYmUgb3ZlcndyaXR0ZW4gZnJvbSB0aGUgbWFzdGVyIHRvIGFsbCBsYW5ndWFnZSBmaWxlcywKKwkgKiBvdGhlciBsYWJlbC1pZCdzIHdpbGwgYmUgb25seSBmaWxsZWQgdXAgaWYgbWlzc2luZyBhdCB0aGUgZW5kIG9mIHRoZQorCSAqIGxhbmd1YWdlIGZpbGUKKwkgKi8KKwlwcml2YXRlIGZpbmFsIGxvbmdbXSByZXBsYWNlSWRzID0geyAgfTsgLy8gMTUxOEwKKworCXByaXZhdGUgTWFwPExvbmcsIEZpZWxkbGFuZ3VhZ2VzdmFsdWVzPiBtYXN0ZXJMYWJlbHM7CisKKwlAVGVzdAorCXB1YmxpYyB2b2lkIHRlc3QoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkJT21GaWxlSGVscGVyLnNldE9tSG9tZShTeXN0ZW0uZ2V0UHJvcGVydHkoIm9tLmhvbWUiLCAiLiIpKTsKKwkJLy8gUmVhZCBtYXN0ZXIgZmlsZQorCQlGaWxlIGJhc2UgPSBuZXcgRmlsZShPbUZpbGVIZWxwZXIuZ2V0T21Ib21lKCksIGJhc2VQYXRoKTsKKwkJbWFzdGVyTGFiZWxzID0gcGFyc2VUb0xhYmVsc0FycmF5KG5ldyBGaWxlKGJhc2UsIG1hc3RlckxhbmdGaWxlKSk7CisKKwkJRmlsZSBsYW5nRm9sZGVyID0gbmV3IEZpbGUoT21GaWxlSGVscGVyLmdldE9tSG9tZSgpLCBiYXNlUGF0aCk7CisKKwkJZm9yIChGaWxlIGZpbGUgOiBsYW5nRm9sZGVyLmxpc3RGaWxlcyhuZXcgRmlsZW5hbWVGaWx0ZXIoKSB7CisJCQkJCXB1YmxpYyBib29sZWFuIGFjY2VwdChGaWxlIGZpbGUsIFN0cmluZyBzdHJpbmcxKSB7CisJCQkJCQlpZiAoIXN0cmluZzEuZW5kc1dpdGgoInhtbCIpKSB7CisJCQkJCQkJcmV0dXJuIGZhbHNlOworCQkJCQkJfQorCQkJCQkJZm9yIChTdHJpbmcgZXhjbHVkZUZpbGVOYW1lIDogZXhjbHVkZUZpbGVzKSB7CisJCQkJCQkJaWYgKHN0cmluZzEuZXF1YWxzKGV4Y2x1ZGVGaWxlTmFtZSkpIHsKKwkJCQkJCQkJcmV0dXJuIGZhbHNlOworCQkJCQkJCX0KKwkJCQkJCX0KKwkJCQkJCXJldHVybiB0cnVlOworCQkJCQl9CisJCQkJfSkpIHsKKworCQkJTWFwPExvbmcsIEZpZWxkbGFuZ3VhZ2VzdmFsdWVzPiBsYWJlbHNBcnJheSA9IHBhcnNlVG9MYWJlbHNBcnJheShmaWxlKTsKKworCQkJZm9yIChFbnRyeTxMb25nLCBGaWVsZGxhbmd1YWdlc3ZhbHVlcz4gZW50cnlNYXN0ZXIgOiBtYXN0ZXJMYWJlbHMuZW50cnlTZXQoKSkgeworCQkJCWZvciAobG9uZyByZXBsYWNlSWQgOiByZXBsYWNlSWRzKSB7CisJCQkJCWlmIChyZXBsYWNlSWQgPT0gZW50cnlNYXN0ZXIuZ2V0S2V5KCkpIHsKKwkJCQkJCWxhYmVsc0FycmF5LnB1dChlbnRyeU1hc3Rlci5nZXRLZXkoKSwgZW50cnlNYXN0ZXIuZ2V0VmFsdWUoKSk7CisJCQkJCX0KKwkJCQl9CisJCQkJaWYgKCFsYWJlbHNBcnJheS5jb250YWluc0tleShlbnRyeU1hc3Rlci5nZXRLZXkoKSkpIHsKKwkJCQkJbGFiZWxzQXJyYXkucHV0KGVudHJ5TWFzdGVyLmdldEtleSgpLCBlbnRyeU1hc3Rlci5nZXRWYWx1ZSgpKTsKKwkJCQl9CisJCQl9CisJCQlMYW5nRXhwb3J0LnNlcmlhbGl6ZXRvWE1MKG5ldyBGaWxlT3V0cHV0U3RyZWFtKGZpbGUpLCAiVVRGLTgiLCBjcmVhdGVEb2N1bWVudChsYWJlbHNBcnJheSkpOworCQl9CisJfQorCisJLyoqCisJICogcGFyc2VzIGEgZ2l2ZW4gbGFuZ3VhZ2UgZmlsZSB0byBhbiBhcnJheSBvZiBMYWJlbHMKKwkgKiAKKwkgKiBAcmV0dXJuCisJICogQHRocm93cyBGaWxlTm90Rm91bmRFeGNlcHRpb24KKwkgKiBAdGhyb3dzIERvY3VtZW50RXhjZXB0aW9uCisJICovCisJcHJpdmF0ZSBNYXA8TG9uZywgRmllbGRsYW5ndWFnZXN2YWx1ZXM+IHBhcnNlVG9MYWJlbHNBcnJheShGaWxlIGZpbGUpCisJCQl0aHJvd3MgRmlsZU5vdEZvdW5kRXhjZXB0aW9uLCBEb2N1bWVudEV4Y2VwdGlvbiB7CisKKwkJTWFwPExvbmcsIEZpZWxkbGFuZ3VhZ2VzdmFsdWVzPiBsYWJlbHNBcnJheSA9IG5ldyBMaW5rZWRIYXNoTWFwPExvbmcsIEZpZWxkbGFuZ3VhZ2VzdmFsdWVzPigpOworCQlTQVhSZWFkZXIgcmVhZGVyID0gbmV3IFNBWFJlYWRlcigpOworCQlEb2N1bWVudCBkb2N1bWVudCA9IHJlYWRlci5yZWFkKGZpbGUpOworCisJCUVsZW1lbnQgcm9vdCA9IGRvY3VtZW50LmdldFJvb3RFbGVtZW50KCk7CisKKwkJZm9yIChAU3VwcHJlc3NXYXJuaW5ncygidW5jaGVja2VkIikKKwkJSXRlcmF0b3I8RWxlbWVudD4gaSA9IHJvb3QuZWxlbWVudEl0ZXJhdG9yKCk7IGkuaGFzTmV4dCgpOykgeworCQkJRWxlbWVudCBpdGVtT2JqZWN0ID0gaS5uZXh0KCk7CisJCQlMb25nIGZpZWxkdmFsdWVzX2lkID0gTG9uZy52YWx1ZU9mKAorCQkJCQlpdGVtT2JqZWN0LmF0dHJpYnV0ZSgiaWQiKS5nZXRUZXh0KCkpLmxvbmdWYWx1ZSgpOworCQkJU3RyaW5nIGZpZWxkTmFtZSA9IGl0ZW1PYmplY3QuYXR0cmlidXRlKCJuYW1lIikuZ2V0VGV4dCgpOworCQkJU3RyaW5nIHZhbHVlID0gaXRlbU9iamVjdC5lbGVtZW50KCJ2YWx1ZSIpLmdldFRleHQoKTsKKwkJCUZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGZWYWx1ZSA9IG5ldyBGaWVsZGxhbmd1YWdlc3ZhbHVlcygpOworCQkJZlZhbHVlLnNldEZpZWxkdmFsdWVzX2lkKGZpZWxkdmFsdWVzX2lkKTsKKwkJCWZWYWx1ZS5zZXRWYWx1ZSh2YWx1ZSk7CisJCQlGaWVsZHZhbHVlcyBmTGFiZWwgPSBuZXcgRmllbGR2YWx1ZXMoKTsKKwkJCWZMYWJlbC5zZXROYW1lKGZpZWxkTmFtZSk7CisJCQlmVmFsdWUuc2V0RmllbGR2YWx1ZXMoZkxhYmVsKTsKKwkJCQorCQkJbGFiZWxzQXJyYXkucHV0KGZpZWxkdmFsdWVzX2lkLCBmVmFsdWUpOworCQl9CisKKwkJcmV0dXJuIGxhYmVsc0FycmF5OworCX0KKworCS8qKgorCSAqIENyZWF0ZSB0aGUgZG9jdW1lbnQKKwkgKiAKKwkgKiBAcGFyYW0gZmx2TGlzdAorCSAqIEByZXR1cm4KKwkgKiBAdGhyb3dzIEV4Y2VwdGlvbgorCSAqLworCXByaXZhdGUgRG9jdW1lbnQgY3JlYXRlRG9jdW1lbnQoTWFwPExvbmcsIEZpZWxkbGFuZ3VhZ2VzdmFsdWVzPiBsYWJlbHNBcnJheSkKKwkJCXRocm93cyBFeGNlcHRpb24geworCQlEb2N1bWVudCBkb2N1bWVudCA9IExhbmdFeHBvcnQuY3JlYXRlRG9jdW1lbnQoKTsKKwkJRWxlbWVudCByb290ID0gTGFuZ0V4cG9ydC5jcmVhdGVSb290KGRvY3VtZW50KTsKKworCQlmb3IgKEVudHJ5PExvbmcsIEZpZWxkbGFuZ3VhZ2VzdmFsdWVzPiBlbnRyeUxhYmVsIDogbGFiZWxzQXJyYXkuZW50cnlTZXQoKSkgeworCQkJRWxlbWVudCBlVGVtcCA9IHJvb3QuYWRkRWxlbWVudCgic3RyaW5nIikKKwkJCQkJLmFkZEF0dHJpYnV0ZSgiaWQiLCBlbnRyeUxhYmVsLmdldFZhbHVlKCkuZ2V0RmllbGR2YWx1ZXNfaWQoKS50b1N0cmluZygpKQorCQkJCQkuYWRkQXR0cmlidXRlKCJuYW1lIiwgZW50cnlMYWJlbC5nZXRWYWx1ZSgpLmdldEZpZWxkdmFsdWVzKCkuZ2V0TmFtZSgpKTsKKwkJCUVsZW1lbnQgdmFsdWUgPSBlVGVtcC5hZGRFbGVtZW50KCJ2YWx1ZSIpOworCQkJdmFsdWUuYWRkVGV4dChlbnRyeUxhYmVsLmdldFZhbHVlKCkuZ2V0VmFsdWUoKSk7CisJCX0KKworCQlyZXR1cm4gZG9jdW1lbnQ7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvbGFiZWxzL1Rlc3RMYWJlbHMuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L2xhYmVscy9UZXN0TGFiZWxzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQwOTdmNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L2xhYmVscy9UZXN0TGFiZWxzLmphdmEKQEAgLTAsMCArMSwzOCBAQAorLyoNCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICogdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy50ZXN0LmxhYmVsczsNCisNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5GaWVsZE1hbmFnZXI7DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnRlc3QuQWJzdHJhY3RPcGVubWVldGluZ3NTcHJpbmdUZXN0Ow0KK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uQXV0b3dpcmVkOw0KKw0KK3B1YmxpYyBjbGFzcyBUZXN0TGFiZWxzIGV4dGVuZHMgQWJzdHJhY3RPcGVubWVldGluZ3NTcHJpbmdUZXN0IHsNCisJDQorCUBBdXRvd2lyZWQNCisJcHJpdmF0ZSBGaWVsZE1hbmFnZXIgZmllbGRNYW5hZ2VyOw0KKwkNCisJQFRlc3QNCisJcHVibGljIHZvaWQgdGVzdEdldE5hdmkoKXsNCisJCQ0KKwkJZmllbGRNYW5hZ2VyLmdldEZpZWxkc0J5TGFuZ3VhZ2UoMCwxMDAsImMuZmllbGR2YWx1ZXNfaWQiLHRydWUsMUwsIiIpOw0KKwkJDQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvbGlicmFyeS9UZXN0RmlsZVBhcnNlci5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvbGlicmFyeS9UZXN0RmlsZVBhcnNlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0NTQzMWMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9saWJyYXJ5L1Rlc3RGaWxlUGFyc2VyLmphdmEKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy50ZXN0LmxpYnJhcnk7CisKK2ltcG9ydCBvcmcuYXBhY2hlLmxvZzRqLkxvZ2dlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kb2N1bWVudHMuTGlicmFyeVdtbExvYWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy50ZXN0LkFic3RyYWN0T3Blbm1lZXRpbmdzU3ByaW5nVGVzdDsKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5BdXRvd2lyZWQ7CisKKworcHVibGljIGNsYXNzIFRlc3RGaWxlUGFyc2VyIGV4dGVuZHMgQWJzdHJhY3RPcGVubWVldGluZ3NTcHJpbmdUZXN0IHsKKwkKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gTG9nZ2VyLmdldExvZ2dlcihUZXN0RmlsZVBhcnNlci5jbGFzcyk7CisJQEF1dG93aXJlZAorCXByaXZhdGUgTGlicmFyeVdtbExvYWRlciBsaWJyYXJ5V21sTG9hZGVyOworCQorCUBUZXN0CisJcHVibGljIHZvaWQgdGVzdExvYWRXbWxGaWxlKCl7CisJCQorCQl0cnkgeworCQkJCisJCQlsaWJyYXJ5V21sTG9hZGVyLmxvYWRXbWxGaWxlKCJmaWxlbmFtZTEiKTsKKwkJCQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQkKKwkJCWxvZy5lcnJvcigiVGVzdExvYWRXbWxGaWxlIixlcnIpOworCQkJCisJCX0KKwkJCisJfQorCQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvbmF2aS9UZXN0TmF2aS5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvbmF2aS9UZXN0TmF2aS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0ZGFkMTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9uYXZpL1Rlc3ROYXZpLmphdmEKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy50ZXN0Lm5hdmk7CisKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRUcnVlOworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydE5vdE51bGw7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuTmF2aUJ1aWxkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuTmF2aWdsb2JhbDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5OYXZpbWFpbjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy50ZXN0LkFic3RyYWN0T3Blbm1lZXRpbmdzU3ByaW5nVGVzdDsKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5BdXRvd2lyZWQ7CisKK3B1YmxpYyBjbGFzcyBUZXN0TmF2aSBleHRlbmRzIEFic3RyYWN0T3Blbm1lZXRpbmdzU3ByaW5nVGVzdCB7CisJCisJQEF1dG93aXJlZAorCXByaXZhdGUgTmF2aUJ1aWxkZXIgbmF2aW1hbmFnZW1lbnQ7CisJCisJQFRlc3QKKwlwdWJsaWMgdm9pZCB0ZXN0R2V0TmF2aSgpeworCQkKKyAgICAgICAgTGlzdDxOYXZpZ2xvYmFsPiBsbCA9IG5hdmltYW5hZ2VtZW50LmdldE1haW5NZW51KDNMLCAxTCwgMUwpOworCisgICAgICAgIGFzc2VydFRydWUoIkdsb2JhbE5hdmkgc2l6ZSBzaG91bGQgYmUgZ3JlYXRlciB0aGFuIHplcm86ICIgKyBsbC5zaXplKCksIGxsLnNpemUoKSA+IDApOworICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIk5hdmlHbG9iYWwgc2l6ZTogIiArIGxsLnNpemUoKSk7CisKKyAgICAgICAgZm9yIChOYXZpZ2xvYmFsIG5hdmlnbCA6IGxsKSB7CisgICAgICAgIAlhc3NlcnROb3ROdWxsKCJOYXZpZ2xvYmFsIHJldHJpZXZlZCBzaG91bGQgbm90IGJlIG51bGwiLCBuYXZpZ2wpOworICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJOYXZpZ2xvYmFsIGxhYmVsOiAiICsgbmF2aWdsLmdldExhYmVsKCkuZ2V0VmFsdWUoKSk7CisKKyAgICAgICAgCWFzc2VydE5vdE51bGwoIk5hdmlnbG9iYWwgcmV0cmlldmVkIHNob3VsZCBoYXZlIE5hdmltYWluIGVudHJpZXMiLCBuYXZpZ2wuZ2V0TWFpbm5hdmkoKSk7CisgICAgICAgICAgICBmb3IgKE5hdmltYWluIG5hdmltIDogbmF2aWdsLmdldE1haW5uYXZpKCkpIHsKKyAgICAgICAgICAgIAlhc3NlcnROb3ROdWxsKCJOYXZpbWFpbiByZXRyaWV2ZWQgc2hvdWxkIG5vdCBiZSBudWxsIiwgbmF2aW0pOworICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiLS0+IiArIG5hdmltLmdldExhYmVsKCkuZ2V0VmFsdWUoKSk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwkJCisJfQorCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9wb2xsL1Rlc3RDbGllbnRMaXN0TWFuYWdlci5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvcG9sbC9UZXN0Q2xpZW50TGlzdE1hbmFnZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTY0ZGIwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvcG9sbC9UZXN0Q2xpZW50TGlzdE1hbmFnZXIuamF2YQpAQCAtMCwwICsxLDQzIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnRlc3QucG9sbDsKKworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydE5vdE51bGw7CisKK2ltcG9ydCBqYXZhLnV0aWwuUmFuZG9tOworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2Vzc2lvbi5JU2Vzc2lvbk1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudGVzdC5BYnN0cmFjdE9wZW5tZWV0aW5nc1NwcmluZ1Rlc3Q7CitpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uQXV0b3dpcmVkOworCitwdWJsaWMgY2xhc3MgVGVzdENsaWVudExpc3RNYW5hZ2VyIGV4dGVuZHMgQWJzdHJhY3RPcGVubWVldGluZ3NTcHJpbmdUZXN0IHsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBJU2Vzc2lvbk1hbmFnZXIgc2Vzc2lvbk1hbmFnZXI7CisJCisJQFRlc3QKKwlwdWJsaWMgdm9pZCBhZGRDbGllbnRMaXN0SXRlbSgpIHsKKwkJUmFuZG9tIHJuZCA9IG5ldyBSYW5kb20oKTsKKwkJYXNzZXJ0Tm90TnVsbCgiUm9vbUNsaWVudElkIGNyZWF0ZWQgaXMgbnVsbCIsCisJCQkJc2Vzc2lvbk1hbmFnZXIuYWRkQ2xpZW50TGlzdEl0ZW0ocm5kLm5leHRMb25nKCkgKyAiQUJDREUiCisJCQkJCQkrIHJuZC5uZXh0TG9uZygpLCAic2NvcGVOYW1lIiwgNjY2NjYsICJyZW1vdGVBZGRyZXNzIiwKKwkJCQkJCSJzd2ZVcmwiLCBmYWxzZSwgbnVsbCkpOworCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvcG9sbC9UZXN0UG9sbE1hbmFnZW1lbnQuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L3BvbGwvVGVzdFBvbGxNYW5hZ2VtZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTYyZTkyMQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L3BvbGwvVGVzdFBvbGxNYW5hZ2VtZW50LmphdmEKQEAgLTAsMCArMSw0MCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy50ZXN0LnBvbGw7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNvbmZlcmVuY2UuUG9sbE1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucG9sbC5Qb2xsVHlwZTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy50ZXN0LkFic3RyYWN0T3Blbm1lZXRpbmdzU3ByaW5nVGVzdDsKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5BdXRvd2lyZWQ7CitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuKjsKKworcHVibGljIGNsYXNzIFRlc3RQb2xsTWFuYWdlbWVudCBleHRlbmRzIEFic3RyYWN0T3Blbm1lZXRpbmdzU3ByaW5nVGVzdCB7CisJQEF1dG93aXJlZAorCXByaXZhdGUgUG9sbE1hbmFnZXIgcG9sbE1hbmFnZXI7CisJCisJQFRlc3QKKwlwdWJsaWMgdm9pZCBhZGRQb2xsVHlwZSgpIHsKKwkJbG9uZyBtYXhJZCA9IDE7CisJCWZvciAoUG9sbFR5cGUgcHQgOiBwb2xsTWFuYWdlci5nZXRQb2xsVHlwZXMoKSkgeworCQkJbWF4SWQgPSBNYXRoLm1heChtYXhJZCwgcHQuZ2V0UG9sbFR5cGVzSWQoKSk7CisJCX0KKwkJYXNzZXJ0Tm90TnVsbCgiUG9sbCBjcmVhdGVkIGlzIG51bGwiLCBwb2xsTWFuYWdlci5hZGRQb2xsVHlwZSgyNkwsIGZhbHNlKSk7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvcmRjL0tleUNvZGVzVGVzdC5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvcmRjL0tleUNvZGVzVGVzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4NGNiZWUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9yZGMvS2V5Q29kZXNUZXN0LmphdmEKQEAgLTAsMCArMSwxNTQgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudGVzdC5yZGM7CisKK2ltcG9ydCBqYXZhLmF3dC4qOworaW1wb3J0IGphdmEuYXd0LmV2ZW50Lio7CisKK2NsYXNzIFdpbmRvd0Nsb3NpbmdBZGFwdGVyIGV4dGVuZHMgV2luZG93QWRhcHRlciB7CisJcHVibGljIHZvaWQgd2luZG93Q2xvc2luZyhXaW5kb3dFdmVudCBldmVudCkgeworCQlldmVudC5nZXRXaW5kb3coKS5zZXRWaXNpYmxlKGZhbHNlKTsKKwkJZXZlbnQuZ2V0V2luZG93KCkuZGlzcG9zZSgpOworCQlTeXN0ZW0uZXhpdCgwKTsKKwl9Cit9CisKK3B1YmxpYyBjbGFzcyBLZXlDb2Rlc1Rlc3QgZXh0ZW5kcyBGcmFtZSBpbXBsZW1lbnRzIEtleUxpc3RlbmVyIHsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAtMTcwNjk2ODY0NDc4NDkyOTQwMkw7CisJU3RyaW5nIG1zZzEgPSAiIjsKKwlTdHJpbmcgbXNnMiA9ICIiOworCisJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworCQluZXcgS2V5Q29kZXNUZXN0KCk7CisJfQorCisJcHVibGljIEtleUNvZGVzVGVzdCgpIHsKKwkJc3VwZXIoIlRlc3RLZXlDb2RlcyIpOworCQlhZGRLZXlMaXN0ZW5lcih0aGlzKTsKKwkJYWRkV2luZG93TGlzdGVuZXIobmV3IFdpbmRvd0Nsb3NpbmdBZGFwdGVyKCkpOworCQlzZXRCYWNrZ3JvdW5kKENvbG9yLmxpZ2h0R3JheSk7CisJCXNldFNpemUoMzAwLCAyMDApOworCQlzZXRMb2NhdGlvbigyMDAsIDEwMCk7CisJCXNldFZpc2libGUodHJ1ZSk7CisJfQorCisJcHVibGljIHZvaWQgcGFpbnQoR3JhcGhpY3MgZykgeworCQlpZiAobXNnMS5sZW5ndGgoKSA+IDApIHsKKwkJCWRyYXczRFJlY3QoZywgMjAsIDUwLCAyNTAsIDMwKTsKKwkJCWcuc2V0Q29sb3IoQ29sb3IuYmxhY2spOworCQkJZy5kcmF3U3RyaW5nKG1zZzEsIDMwLCA3MCk7CisJCX0KKwkJaWYgKG1zZzIubGVuZ3RoKCkgPiAwKSB7CisJCQlkcmF3M0RSZWN0KGcsIDIwLCAxMDAsIDI1MCwgMzApOworCQkJZy5zZXRDb2xvcihDb2xvci5ibGFjayk7CisJCQlnLmRyYXdTdHJpbmcobXNnMiwgMzAsIDEyMCk7CisJCX0KKwl9CisKKwl2b2lkIGRyYXczRFJlY3QoR3JhcGhpY3MgZywgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpIHsKKwkJZy5zZXRDb2xvcihDb2xvci5kYXJrR3JheSk7CisJCWcuZHJhd0xpbmUoeCwgeSwgeCwgeSArIGhlaWdodCk7CisJCWcuZHJhd0xpbmUoeCwgeSwgeCArIHdpZHRoLCB5KTsKKwkJZy5zZXRDb2xvcihDb2xvci53aGl0ZSk7CisJCWcuZHJhd0xpbmUoeCArIHdpZHRoLCB5ICsgaGVpZ2h0LCB4LCB5ICsgaGVpZ2h0KTsKKwkJZy5kcmF3TGluZSh4ICsgd2lkdGgsIHkgKyBoZWlnaHQsIHggKyB3aWR0aCwgeSk7CisJfQorCisJcHVibGljIHZvaWQga2V5UHJlc3NlZChLZXlFdmVudCBldmVudCkgeworCQltc2cxID0gIiI7CisJCVN5c3RlbS5vdXQucHJpbnRsbigia2V5UHJlc3NlZCBDT0RFMSAiK2V2ZW50LmdldEtleUNvZGUoKSk7CisJCQorCQlJbnRlZ2VyIG15Q29kZSA9IGV2ZW50LmdldEtleUNvZGUoKTsKKwkJCisJCVN5c3RlbS5vdXQucHJpbnRsbigia2V5UHJlc3NlZCBDT0RFMiAiK215Q29kZSk7CisJCQorCQlTeXN0ZW0ub3V0LnByaW50bG4oImtleVByZXNzZWQgQ0hBUjMgIitldmVudC5nZXRLZXlDaGFyKCkpOworCQkKKwkJU3lzdGVtLm91dC5wcmludGxuKCJrZXlQcmVzc2VkIENIQVI0ICIrS2V5RXZlbnQuZ2V0S2V5VGV4dChldmVudC5nZXRLZXlDb2RlKCkpKTsKKwkJCisJCVN5c3RlbS5vdXQucHJpbnRsbigia2V5UHJlc3NlZCBDSEFSNSAiK0tleUV2ZW50LmdldEtleVRleHQobXlDb2RlKSk7CisJCQorCQlTeXN0ZW0ub3V0LnByaW50bG4oImtleVByZXNzZWQgaXNBY3Rpb25LZXkgIitldmVudC5pc0FjdGlvbktleSgpKTsKKwkJU3lzdGVtLm91dC5wcmludGxuKCJrZXlQcmVzc2VkIGlzQWx0RG93biAiK2V2ZW50LmlzQWx0RG93bigpKTsKKwkJU3lzdGVtLm91dC5wcmludGxuKCJrZXlQcmVzc2VkIGlzQWx0R3JhcGhEb3duICIrZXZlbnQuaXNBbHRHcmFwaERvd24oKSk7CisJCVN5c3RlbS5vdXQucHJpbnRsbigia2V5UHJlc3NlZCBpc0NvbnN1bWVkICIrZXZlbnQuaXNDb25zdW1lZCgpKTsKKwkJU3lzdGVtLm91dC5wcmludGxuKCJrZXlQcmVzc2VkIGlzQ29udHJvbERvd24gIitldmVudC5pc0NvbnRyb2xEb3duKCkpOworCQlTeXN0ZW0ub3V0LnByaW50bG4oImtleVByZXNzZWQgaXNNZXRhRG93biAiK2V2ZW50LmlzTWV0YURvd24oKSk7CisJCVN5c3RlbS5vdXQucHJpbnRsbigia2V5UHJlc3NlZCBpc1NoaWZ0RG93biAiK2V2ZW50LmlzU2hpZnREb3duKCkpOworCisJCVN5c3RlbS5vdXQucHJpbnRsbigia2V5UHJlc3NlZCBwYXJhbVN0cmluZyAiK2V2ZW50LnBhcmFtU3RyaW5nKCkpOworCQkKKwkJaWYgKGV2ZW50LmdldEtleUNoYXIoKSA9PSBLZXlFdmVudC5DSEFSX1VOREVGSU5FRCkgeworCQkJaW50IGtleSA9IGV2ZW50LmdldEtleUNvZGUoKTsKKwkJCS8vIEZ1bmt0aW9uc3Rhc3RlIGFiZnJhZ2VuCisJCQlpZiAoa2V5ID09IEtleUV2ZW50LlZLX0YxKSB7CisJCQkJbXNnMSA9ICJGMSI7CisJCQl9IGVsc2UgaWYgKGtleSA9PSBLZXlFdmVudC5WS19GMikgeworCQkJCW1zZzEgPSAiRjIiOworCQkJfSBlbHNlIGlmIChrZXkgPT0gS2V5RXZlbnQuVktfRjMpIHsKKwkJCQltc2cxID0gIkYzIjsKKwkJCX0KKwkJCS8vIE1vZGlmaWVyIGFiZnJhZ2VuCisJCQlpZiAobXNnMS5sZW5ndGgoKSA+IDApIHsKKwkJCQlpZiAoZXZlbnQuaXNBbHREb3duKCkpIHsKKwkJCQkJbXNnMSA9ICJBTFQgKyAiICsgbXNnMTsKKwkJCQl9CisJCQkJaWYgKGV2ZW50LmlzQ29udHJvbERvd24oKSkgeworCQkJCQltc2cxID0gIlNUUkcgKyAiICsgbXNnMTsKKwkJCQl9CisJCQkJaWYgKGV2ZW50LmlzU2hpZnREb3duKCkpIHsKKwkJCQkJbXNnMSA9ICJVTVNDSEFMVCArICIgKyBtc2cxOworCQkJCX0KKwkJCX0KKwkJfQorCQlyZXBhaW50KCk7CisJfQorCisJcHVibGljIHZvaWQga2V5UmVsZWFzZWQoS2V5RXZlbnQgZXZlbnQpIHsKKwkJbXNnMSA9ICIiOworCQlyZXBhaW50KCk7CisJfQorCisJcHVibGljIHZvaWQga2V5VHlwZWQoS2V5RXZlbnQgZXZlbnQpIHsKKwkJY2hhciBrZXkgPSBldmVudC5nZXRLZXlDaGFyKCk7CisJCQorLy8JCVN5c3RlbS5vdXQucHJpbnRsbigia2V5VHlwZWQgQ09ERTEgIitldmVudC5nZXRLZXlDb2RlKCkpOworLy8JCQorLy8JCUludGVnZXIgbXlDb2RlID0gZXZlbnQuZ2V0S2V5Q29kZSgpOworLy8JCQorLy8JCVN5c3RlbS5vdXQucHJpbnRsbigia2V5VHlwZWQgQ09ERTIgIitteUNvZGUpOworLy8JCQorLy8JCVN5c3RlbS5vdXQucHJpbnRsbigia2V5VHlwZWQgQ0hBUjMgIitldmVudC5nZXRLZXlDaGFyKCkpOworLy8JCQorLy8JCVN5c3RlbS5vdXQucHJpbnRsbigia2V5VHlwZWQgQ0hBUjQgIitldmVudC5nZXRLZXlUZXh0KGV2ZW50LmdldEtleUNvZGUoKSkpOworLy8JCQorLy8JCVN5c3RlbS5vdXQucHJpbnRsbigia2V5VHlwZWQgQ0hBUjUgIitldmVudC5nZXRLZXlUZXh0KG15Q29kZSkpOworCQkKKwkJaWYgKGtleSA9PSBLZXlFdmVudC5WS19CQUNLX1NQQUNFKSB7CisJCQlpZiAobXNnMi5sZW5ndGgoKSA+IDApIHsKKwkJCQltc2cyID0gbXNnMi5zdWJzdHJpbmcoMCwgbXNnMi5sZW5ndGgoKSAtIDEpOworCQkJfQorCQl9IGVsc2UgaWYgKGtleSA+PSBLZXlFdmVudC5WS19TUEFDRSkgeworCQkJaWYgKG1zZzIubGVuZ3RoKCkgPCA0MCkgeworCQkJCW1zZzIgKz0gZXZlbnQuZ2V0S2V5Q2hhcigpOworCQkJfQorCQl9CisJCXJlcGFpbnQoKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9yZGMvUmVhZEtleUNvZGVzVGVzdC5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvcmRjL1JlYWRLZXlDb2Rlc1Rlc3QuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2MyNTczCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvcmRjL1JlYWRLZXlDb2Rlc1Rlc3QuamF2YQpAQCAtMCwwICsxLDExNSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy50ZXN0LnJkYzsKKworaW1wb3J0IGphdmEuYXd0Lio7CitpbXBvcnQgamF2YS5hd3QuZXZlbnQuKjsKKworcHVibGljIGNsYXNzIFJlYWRLZXlDb2Rlc1Rlc3QgZXh0ZW5kcyBGcmFtZSBpbXBsZW1lbnRzIEtleUxpc3RlbmVyIHsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAtMTcyMjkxNzA2NzgwMzY1NjkyMkw7CisJU3RyaW5nIG1zZzEgPSAiIjsKKwlTdHJpbmcgbXNnMiA9ICIiOworCisJcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgeworCQluZXcgUmVhZEtleUNvZGVzVGVzdCgpOworCX0KKworCXB1YmxpYyBSZWFkS2V5Q29kZXNUZXN0KCkgeworCQlzdXBlcigiVGVzdEtleUNvZGVzIik7CisJCWFkZEtleUxpc3RlbmVyKHRoaXMpOworCQlhZGRXaW5kb3dMaXN0ZW5lcihuZXcgV2luZG93Q2xvc2luZ0FkYXB0ZXIoKSk7CisJCXNldEJhY2tncm91bmQoQ29sb3IubGlnaHRHcmF5KTsKKwkJc2V0U2l6ZSgzMDAsIDIwMCk7CisJCXNldExvY2F0aW9uKDIwMCwgMTAwKTsKKwkJc2V0VmlzaWJsZSh0cnVlKTsKKwl9CisKKwlwdWJsaWMgdm9pZCBwYWludChHcmFwaGljcyBnKSB7CisJCWlmIChtc2cxLmxlbmd0aCgpID4gMCkgeworCQkJZHJhdzNEUmVjdChnLCAyMCwgNTAsIDI1MCwgMzApOworCQkJZy5zZXRDb2xvcihDb2xvci5ibGFjayk7CisJCQlnLmRyYXdTdHJpbmcobXNnMSwgMzAsIDcwKTsKKwkJfQorCQlpZiAobXNnMi5sZW5ndGgoKSA+IDApIHsKKwkJCWRyYXczRFJlY3QoZywgMjAsIDEwMCwgMjUwLCAzMCk7CisJCQlnLnNldENvbG9yKENvbG9yLmJsYWNrKTsKKwkJCWcuZHJhd1N0cmluZyhtc2cyLCAzMCwgMTIwKTsKKwkJfQorCX0KKworCXZvaWQgZHJhdzNEUmVjdChHcmFwaGljcyBnLCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCkgeworCQlnLnNldENvbG9yKENvbG9yLmRhcmtHcmF5KTsKKwkJZy5kcmF3TGluZSh4LCB5LCB4LCB5ICsgaGVpZ2h0KTsKKwkJZy5kcmF3TGluZSh4LCB5LCB4ICsgd2lkdGgsIHkpOworCQlnLnNldENvbG9yKENvbG9yLndoaXRlKTsKKwkJZy5kcmF3TGluZSh4ICsgd2lkdGgsIHkgKyBoZWlnaHQsIHgsIHkgKyBoZWlnaHQpOworCQlnLmRyYXdMaW5lKHggKyB3aWR0aCwgeSArIGhlaWdodCwgeCArIHdpZHRoLCB5KTsKKwl9CisKKwlwdWJsaWMgdm9pZCBrZXlQcmVzc2VkKEtleUV2ZW50IGV2ZW50KSB7CisJCW1zZzEgPSAiIjsKKwkJU3lzdGVtLm91dC5wcmludGxuKCJrZXlQcmVzc2VkICIrZXZlbnQuZ2V0S2V5Q29kZSgpKTsKKwkJaWYgKGV2ZW50LmdldEtleUNoYXIoKSA9PSBLZXlFdmVudC5DSEFSX1VOREVGSU5FRCkgeworCQkJaW50IGtleSA9IGV2ZW50LmdldEtleUNvZGUoKTsKKwkJCS8vIEZ1bmt0aW9uc3Rhc3RlIGFiZnJhZ2VuCisJCQlpZiAoa2V5ID09IEtleUV2ZW50LlZLX0YxKSB7CisJCQkJbXNnMSA9ICJGMSI7CisJCQl9IGVsc2UgaWYgKGtleSA9PSBLZXlFdmVudC5WS19GMikgeworCQkJCW1zZzEgPSAiRjIiOworCQkJfSBlbHNlIGlmIChrZXkgPT0gS2V5RXZlbnQuVktfRjMpIHsKKwkJCQltc2cxID0gIkYzIjsKKwkJCX0KKwkJCS8vIE1vZGlmaWVyIGFiZnJhZ2VuCisJCQlpZiAobXNnMS5sZW5ndGgoKSA+IDApIHsKKwkJCQlpZiAoZXZlbnQuaXNBbHREb3duKCkpIHsKKwkJCQkJbXNnMSA9ICJBTFQgKyAiICsgbXNnMTsKKwkJCQl9CisJCQkJaWYgKGV2ZW50LmlzQ29udHJvbERvd24oKSkgeworCQkJCQltc2cxID0gIlNUUkcgKyAiICsgbXNnMTsKKwkJCQl9CisJCQkJaWYgKGV2ZW50LmlzU2hpZnREb3duKCkpIHsKKwkJCQkJbXNnMSA9ICJVTVNDSEFMVCArICIgKyBtc2cxOworCQkJCX0KKwkJCX0KKwkJfQorCQlyZXBhaW50KCk7CisJfQorCisJcHVibGljIHZvaWQga2V5UmVsZWFzZWQoS2V5RXZlbnQgZXZlbnQpIHsKKwkJbXNnMSA9ICIiOworCQlyZXBhaW50KCk7CisJfQorCisJcHVibGljIHZvaWQga2V5VHlwZWQoS2V5RXZlbnQgZXZlbnQpIHsKKwkJY2hhciBrZXkgPSBldmVudC5nZXRLZXlDaGFyKCk7CisJCQorCQlTeXN0ZW0ub3V0LnByaW50bG4oImtleVR5cGVkICIrZXZlbnQuZ2V0S2V5Q29kZSgpKTsKKwkJCisJCWlmIChrZXkgPT0gS2V5RXZlbnQuVktfQkFDS19TUEFDRSkgeworCQkJaWYgKG1zZzIubGVuZ3RoKCkgPiAwKSB7CisJCQkJbXNnMiA9IG1zZzIuc3Vic3RyaW5nKDAsIG1zZzIubGVuZ3RoKCkgLSAxKTsKKwkJCX0KKwkJfSBlbHNlIGlmIChrZXkgPj0gS2V5RXZlbnQuVktfU1BBQ0UpIHsKKwkJCWlmIChtc2cyLmxlbmd0aCgpIDwgNDApIHsKKwkJCQltc2cyICs9IGV2ZW50LmdldEtleUNoYXIoKTsKKwkJCX0KKwkJfQorCQlyZXBhaW50KCk7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvcmRjL1Rlc3RLZXlDb2Rlc051bWJlci5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvcmRjL1Rlc3RLZXlDb2Rlc051bWJlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxZDY1NTkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9yZGMvVGVzdEtleUNvZGVzTnVtYmVyLmphdmEKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy50ZXN0LnJkYzsKKworaW1wb3J0IGphdmEuYXd0LmV2ZW50LktleUV2ZW50OworCitpbXBvcnQganVuaXQuZnJhbWV3b3JrLlRlc3RDYXNlOworCitpbXBvcnQgb3JnLmFwYWNoZS5sb2c0ai5Mb2dnZXI7CitpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CisKK3B1YmxpYyBjbGFzcyBUZXN0S2V5Q29kZXNOdW1iZXIgZXh0ZW5kcyBUZXN0Q2FzZSB7CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gTG9nZ2VyLmdldExvZ2dlcihUZXN0S2V5Q29kZXNOdW1iZXIuY2xhc3MpOworCisJQFRlc3QKKwlwdWJsaWMgdm9pZCB0ZXN0S2V5Q29kZXMoKSB7CisJCXRyeSB7CisKKwkJCWZvciAoaW50IGkgPSAxOyBpIDwgNjAwOyBpKyspIHsKKworCQkJCVN0cmluZyBjaGFyVGV4dCA9IEtleUV2ZW50LmdldEtleVRleHQoaSk7CisKKwkJCQlsb2cuZGVidWcoIkVSUk9SICIgKyBpICsgIiAiICsgY2hhclRleHQpOworCisJCQl9CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJbG9nLmVycm9yKCJbdGVzdEtleUNvZGVzXSIsIGVycik7CisJCX0KKworCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvcmRjL1Rlc3RSZWFkS2V5Q29kZXNOdW1iZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L3JkYy9UZXN0UmVhZEtleUNvZGVzTnVtYmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWE5ZmMxNwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L3JkYy9UZXN0UmVhZEtleUNvZGVzTnVtYmVyLmphdmEKQEAgLTAsMCArMSw1MiBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy50ZXN0LnJkYzsKKworaW1wb3J0IGp1bml0LmZyYW1ld29yay5UZXN0Q2FzZTsKKworaW1wb3J0IG9yZy5hcGFjaGUubG9nNGouTG9nZ2VyOworaW1wb3J0IG9yZy5qdW5pdC5UZXN0OworCitwdWJsaWMgY2xhc3MgVGVzdFJlYWRLZXlDb2Rlc051bWJlciBleHRlbmRzIFRlc3RDYXNlIHsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBMb2dnZXIKKwkJCS5nZXRMb2dnZXIoVGVzdFJlYWRLZXlDb2Rlc051bWJlci5jbGFzcyk7CisKKwlAVGVzdAorCXB1YmxpYyB2b2lkIHRlc3RUZXN0S2V5Q29kZXNOdW1iZXIoKSB7CisJCXRyeSB7CisKKwkJCXRoaXMudGVzdEtleUNvZGVzKCk7CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVyKSB7CisJCQlsb2cuZGVidWcoIkVSUk9SICIsIGVyKTsKKwkJfQorCX0KKworCUBUZXN0CisJcHVibGljIHZvaWQgdGVzdEtleUNvZGVzKCkgeworCQl0cnkgeworCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW3Rlc3RLZXlDb2Rlc10iLCBlcnIpOworCQl9CisKKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L3Jzcy9UZXN0UnNzTG9hZGVyLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9yc3MvVGVzdFJzc0xvYWRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4YTU1YjMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9yc3MvVGVzdFJzc0xvYWRlci5qYXZhCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudGVzdC5yc3M7CisKK2ltcG9ydCBvcmcuYXBhY2hlLmxvZzRqLkxvZ2dlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5yc3MuTG9hZEF0b21Sc3NGZWVkOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnRlc3QuQWJzdHJhY3RPcGVubWVldGluZ3NTcHJpbmdUZXN0OworaW1wb3J0IG9yZy5qdW5pdC5UZXN0OworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKKworcHVibGljIGNsYXNzIFRlc3RSc3NMb2FkZXIgZXh0ZW5kcyBBYnN0cmFjdE9wZW5tZWV0aW5nc1NwcmluZ1Rlc3QgeworCQorCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBMb2dnZXIuZ2V0TG9nZ2VyKFRlc3RSc3NMb2FkZXIuY2xhc3MpOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIExvYWRBdG9tUnNzRmVlZCBsb2FkQXRvbVJzc0ZlZWQ7CisJCisJQFRlc3QKKwlwdWJsaWMgdm9pZCB0ZXN0TG9hZFJzc0ZlZWQoKXsKKwkJbG9nLmRlYnVnKCJ0ZXN0TG9hZFJzc0ZlZWQgZW50ZXIiKTsKKwkJU3RyaW5nIHVybCA9ICJodHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXAvb3Blbm1lZXRpbmdzLXVzZXIvZmVlZC9hdG9tX3YxXzBfbXNncy54bWwiOworCQkKKwkJbG9hZEF0b21Sc3NGZWVkLnBhcnNlUnNzRmVlZCh1cmwpOworCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvcnRtcC9Mb2FkVGVzdFJ0bXBDbGllbnQuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L3J0bXAvTG9hZFRlc3RSdG1wQ2xpZW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2RhOGE4YwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L3J0bXAvTG9hZFRlc3RSdG1wQ2xpZW50LmphdmEKQEAgLTAsMCArMSwxNzIgQEAKKy8qDQorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAqIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudGVzdC5ydG1wOw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsNCitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7DQoraW1wb3J0IGphdmEudXRpbC5NYXA7DQoraW1wb3J0IGphdmEudXRpbC5NYXAuRW50cnk7DQorDQoraW1wb3J0IG9yZy5yZWQ1LmNsaWVudC5uZXQucnRtcC5DbGllbnRFeGNlcHRpb25IYW5kbGVyOw0KK2ltcG9ydCBvcmcucmVkNS5jbGllbnQubmV0LnJ0bXAuSU5ldFN0cmVhbUV2ZW50SGFuZGxlcjsNCitpbXBvcnQgb3JnLnJlZDUuY2xpZW50Lm5ldC5ydG1wLlJUTVBDbGllbnQ7DQoraW1wb3J0IG9yZy5yZWQ1LnNlcnZlci5hcGkuc2VydmljZS5JUGVuZGluZ1NlcnZpY2VDYWxsOw0KK2ltcG9ydCBvcmcucmVkNS5zZXJ2ZXIuYXBpLnNlcnZpY2UuSVBlbmRpbmdTZXJ2aWNlQ2FsbGJhY2s7DQoraW1wb3J0IG9yZy5yZWQ1LnNlcnZlci5uZXQucnRtcC5ldmVudC5Ob3RpZnk7DQorDQorcHVibGljIGNsYXNzIExvYWRUZXN0UnRtcENsaWVudCBleHRlbmRzIFJUTVBDbGllbnQgaW1wbGVtZW50cyBJUGVuZGluZ1NlcnZpY2VDYWxsYmFjaywgSU5ldFN0cmVhbUV2ZW50SGFuZGxlciwgQ2xpZW50RXhjZXB0aW9uSGFuZGxlciB7DQorDQorCXByaXZhdGUgY2xhc3MgQ2FsbE9iamVjdCB7DQorCQlEYXRlIHN0YXJ0ZWQ7DQorCQlEYXRlIGVuZGVkOw0KKw0KKwkJcHVibGljIENhbGxPYmplY3QoRGF0ZSBzdGFydGVkKSB7DQorCQkJc3VwZXIoKTsNCisJCQl0aGlzLnN0YXJ0ZWQgPSBzdGFydGVkOw0KKwkJfQ0KKw0KKwkJcHVibGljIERhdGUgZ2V0U3RhcnRlZCgpIHsNCisJCQlyZXR1cm4gc3RhcnRlZDsNCisJCX0NCisNCisJCXB1YmxpYyBEYXRlIGdldEVuZGVkKCkgew0KKwkJCXJldHVybiBlbmRlZDsNCisJCX0NCisNCisJCXB1YmxpYyB2b2lkIHNldEVuZGVkKERhdGUgZW5kZWQpIHsNCisJCQl0aGlzLmVuZGVkID0gZW5kZWQ7DQorCQl9DQorCX0NCisJDQorCXByaXZhdGUgaW50IGNvdW50ZXJDYWxscyA9IDA7IC8vIGEgY2FsbCBpcyBhbHdheXMgMiBzdGVwcw0KKwlwcml2YXRlIE1hcDxJbnRlZ2VyLCBDYWxsT2JqZWN0PiBjYWxscyA9IG5ldyBIYXNoTWFwPEludGVnZXIsIENhbGxPYmplY3Q+KCk7DQorCXByaXZhdGUgYm9vbGVhbiBpc0Nvbm5lY3RlZCA9IGZhbHNlOw0KKwlwcml2YXRlIGZpbmFsIGludCBpbnN0YW5jZUlkOw0KKw0KKwlwdWJsaWMgTG9hZFRlc3RSdG1wQ2xpZW50KGludCBpbnN0YW5jZUlkKSB7DQorCQl0aGlzLmluc3RhbmNlSWQgPSBpbnN0YW5jZUlkOw0KKwl9DQorCQ0KKwlwdWJsaWMgYm9vbGVhbiBwZXJmb3JtQ2FsbCgpIHsNCisNCisJCS8vIFN5c3RlbS5lcnIucHJpbnRsbigicGVyZm9ybUNhbGwgIiArIGlzQ29ubmVjdGVkKTsNCisNCisJCWlmICghaXNDb25uZWN0ZWQpIHsNCisJCQlyZXR1cm4gZmFsc2U7DQorCQl9DQorCQkNCisJCWlmIChjb3VudGVyQ2FsbHMgJSAyID09IDApIHsNCisNCisJCQlpZiAoY291bnRlckNhbGxzID4gMTApIHsNCisNCisJCQkJcmV0dXJuIHRydWU7DQorDQorCQkJfQ0KKw0KKwkJCVN5c3RlbS5lcnIucHJpbnRsbigiUmVzdCBvIGRvIG5ldyBjYWxsICIgKyBjb3VudGVyQ2FsbHMpOw0KKwkJCWNvdW50ZXJDYWxscysrOw0KKw0KKwkJCU1hcDxTdHJpbmcsIEludGVnZXI+IG1hcCA9IG5ldyBIYXNoTWFwPFN0cmluZywgSW50ZWdlcj4oKTsNCisJCQltYXAucHV0KCJpbnN0YW5jZUlkIiwgaW5zdGFuY2VJZCk7DQorCQkJbWFwLnB1dCgiY291bnQiLCBjb3VudGVyQ2FsbHMpOw0KKwkJCWNhbGxzLnB1dChjb3VudGVyQ2FsbHMsIG5ldyBDYWxsT2JqZWN0KG5ldyBEYXRlKCkpKTsNCisJCQlpbnZva2UoImxvYWRUZXN0U3luY01lc3NhZ2UiLCBuZXcgT2JqZWN0W10gew0KKwkJCQkJInN5bmNNZXNzYWdlVG9DdXJyZW50U2NvcGVSZXN1bHQiLCBtYXAsIHRydWUgfSwgdGhpcyk7DQorDQorCQl9IGVsc2Ugew0KKwkJCVN5c3RlbS5lcnIucHJpbnRsbigiQ2FsbCBydW5uaW5nICIgKyBjb3VudGVyQ2FsbHMpOw0KKwkJfQ0KKwkJDQorCQkNCisJCQ0KKwkJcmV0dXJuIGZhbHNlOw0KKwl9DQorCQ0KKwlwdWJsaWMgZG91YmxlIGdldEF2ZXJhZ2VUaW1lKCkgew0KKwkJbG9uZyBvdmVyYWxsVGltZSA9IDBMOw0KKw0KKwkJZm9yIChFbnRyeTxJbnRlZ2VyLCBDYWxsT2JqZWN0PiB0Q2FsbE9iamVjdEVudHJ5IDogY2FsbHMuZW50cnlTZXQoKSkgew0KKw0KKwkJCWxvbmcgZGVsdGFUaW1lID0gdENhbGxPYmplY3RFbnRyeS5nZXRWYWx1ZSgpLmdldEVuZGVkKCkuZ2V0VGltZSgpDQorCQkJCQktIHRDYWxsT2JqZWN0RW50cnkuZ2V0VmFsdWUoKS5nZXRTdGFydGVkKCkuZ2V0VGltZSgpOw0KKw0KKwkJCS8vIFN5c3RlbS5lcnIucHJpbnRsbigiS2V5ICIgKyB0Q2FsbE9iamVjdEVudHJ5LmdldEtleSgpDQorCQkJLy8gKyAiZGVsdGFUaW1lICIgKyBkZWx0YVRpbWUpOw0KKw0KKwkJCW92ZXJhbGxUaW1lICs9IGRlbHRhVGltZTsNCisNCisJCX0NCisNCisJCWRvdWJsZSBhdmVyYWdlVGltZSA9IExvbmcudmFsdWVPZihvdmVyYWxsVGltZSkuZG91YmxlVmFsdWUoKQ0KKwkJCQkvIEludGVnZXIudmFsdWVPZihjYWxscy5zaXplKCkpLmRvdWJsZVZhbHVlKCk7DQorDQorCQlyZXR1cm4gYXZlcmFnZVRpbWU7DQorCX0NCisJDQorCXB1YmxpYyB2b2lkIHJlc3VsdFJlY2VpdmVkKElQZW5kaW5nU2VydmljZUNhbGwgY2FsbCkgew0KKwkJU3RyaW5nIG1ldGhvZCA9IGNhbGwgPT0gbnVsbCA/IG51bGwgOiBjYWxsLmdldFNlcnZpY2VNZXRob2ROYW1lKCk7DQorCQlTeXN0ZW0uZXJyLnByaW50bG4oIm1ldGhvZCAiK21ldGhvZCk7DQorCQlpZiAobWV0aG9kID09IG51bGwpIHsNCisJCQlyZXR1cm47DQorCQl9DQorCQlpZiAoImNvbm5lY3QiLmVxdWFscyhtZXRob2QpKSB7DQorCQkJaXNDb25uZWN0ZWQgPSB0cnVlOw0KKwkJfQ0KKw0KKwkJaWYgKCJsb2FkVGVzdFN5bmNNZXNzYWdlIi5lcXVhbHMobWV0aG9kKSkgew0KKw0KKwkJCUNhbGxPYmplY3QgdENhbGxPYmplY3QgPSBjYWxscy5nZXQoY291bnRlckNhbGxzKTsNCisJCQlpZiAodENhbGxPYmplY3QgPT0gbnVsbCkgew0KKw0KKwkJCQlmb3IgKEVudHJ5PEludGVnZXIsIENhbGxPYmplY3Q+IHRDYWxsT2JqZWN0RW50cnkgOiBjYWxscw0KKwkJCQkJCS5lbnRyeVNldCgpKSB7DQorDQorCQkJCQlTeXN0ZW0uZXJyLnByaW50bG4oIktleSAiICsgdENhbGxPYmplY3RFbnRyeS5nZXRLZXkoKQ0KKwkJCQkJCQkrICJ0Q2FsbE9iamVjdEVudHJ5ICINCisJCQkJCQkJKyB0Q2FsbE9iamVjdEVudHJ5LmdldFZhbHVlKCkuZ2V0U3RhcnRlZCgpKTsNCisNCisJCQkJfQ0KKw0KKwkJCQl0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigNCisJCQkJCQkidENhbGxPYmplY3QgaXMgbnVsbCBjdXJyZW50Q291bnRSZXR1cm4gIg0KKwkJCQkJCQkJKyBjb3VudGVyQ2FsbHMgKyAiIGxpc3Qgc2l6ZSAiDQorCQkJCQkJCQkrIGNhbGxzLnNpemUoKSk7DQorCQkJfQ0KKwkJCXRDYWxsT2JqZWN0LnNldEVuZGVkKG5ldyBEYXRlKCkpOw0KKwkJCWNhbGxzLnB1dChjb3VudGVyQ2FsbHMsIHRDYWxsT2JqZWN0KTsNCisNCisJCQlTeXN0ZW0uZXJyLnByaW50bG4oIkNhbGwgcmVjZWl2ZWQgIiArIGNvdW50ZXJDYWxscw0KKwkJCQkJKyAiIGluc3RhbmNlSWQ6ICIgKyBpbnN0YW5jZUlkKTsNCisNCisJCQljb3VudGVyQ2FsbHMrKzsNCisJCX0NCisNCisJfQ0KKw0KKw0KKwlwdWJsaWMgdm9pZCBvblN0cmVhbUV2ZW50KE5vdGlmeSBub3RpZnkpIHsNCisJCS8vIFRPRE8gQXV0by1nZW5lcmF0ZWQgbWV0aG9kIHN0dWINCisJCQ0KKwl9DQorDQorCXB1YmxpYyBpbnQgZ2V0TnVtYmVyT2ZDYWxscygpIHsNCisJCXJldHVybiBjYWxscy5zaXplKCk7DQorCX0NCisJDQorfQ0KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L3J0bXAvU2ltdWxhdGVMb2FkLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9ydG1wL1NpbXVsYXRlTG9hZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5MmY3NmMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9ydG1wL1NpbXVsYXRlTG9hZC5qYXZhCkBAIC0wLDAgKzEsOTMgQEAKKy8qDQorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAqIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudGVzdC5ydG1wOw0KKw0KK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOw0KK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyRmFjdG9yeTsNCisNCitwdWJsaWMgY2xhc3MgU2ltdWxhdGVMb2FkIGV4dGVuZHMgVGhyZWFkIHsNCisNCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IExvZ2dlckZhY3RvcnkNCisJCQkuZ2V0TG9nZ2VyKFNpbXVsYXRlTG9hZC5jbGFzcyk7DQorDQorCXByaXZhdGUgTG9hZFRlc3RSdG1wQ2xpZW50IGxvYWRUZXN0UnRtcENsaWVudDsNCisJcHJpdmF0ZSBib29sZWFuIHRlc3RSdW5uaW5nID0gdHJ1ZTsNCisNCisJcHVibGljIGRvdWJsZSBnZXRBdmVyYWdlVGltZSgpIHsNCisJCXJldHVybiBsb2FkVGVzdFJ0bXBDbGllbnQuZ2V0QXZlcmFnZVRpbWUoKTsNCisJfQ0KKw0KKwlwdWJsaWMgYm9vbGVhbiBpc1Rlc3RSdW5uaW5nKCkgew0KKwkJcmV0dXJuIHRlc3RSdW5uaW5nOw0KKwl9DQorDQorCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZy4uLiBhcmdzKSB7DQorCQl0cnkgew0KKwkJCWlmIChhcmdzLmxlbmd0aCAhPSA0KSB7DQorCQkJCW5ldyBSdW50aW1lRXhjZXB0aW9uKA0KKwkJCQkJCSI0IGFyZ3MgbmVlZGVkLCBob3N0LCBwb3J0LCBjb250ZXh0LCBpbnN0YW5jZUlkIik7DQorCQkJfQ0KKwkJCWZvciAoU3RyaW5nIGFyZyA6IGFyZ3MpIHsNCisJCQkJU3lzdGVtLmVyci5wcmludGxuKCJhcmc6ICIgKyBhcmcpOw0KKwkJCX0NCisJCQlTaW11bGF0ZUxvYWQgc2ltdWxhdGVMb2FkID0gbmV3IFNpbXVsYXRlTG9hZChhcmdzWzBdLCBJbnRlZ2VyDQorCQkJCQkudmFsdWVPZihhcmdzWzFdKS5pbnRWYWx1ZSgpLCBhcmdzWzJdLCBJbnRlZ2VyLnZhbHVlT2YoDQorCQkJCQlhcmdzWzNdKS5pbnRWYWx1ZSgpKTsNCisJCQlzaW11bGF0ZUxvYWQuc3RhcnQoKTsNCisJCQlTeXN0ZW0uZXJyLnByaW50bG4oInN0YXJ0ZWQgIik7DQorDQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXIpIHsNCisJCQllci5wcmludFN0YWNrVHJhY2UoKTsNCisJCQlsb2cuZXJyb3IoIkVycm9yIiwgZXIpOw0KKwkJfQ0KKwl9DQorDQorCXB1YmxpYyBTaW11bGF0ZUxvYWQoU3RyaW5nIGhvc3QsIGludCBwb3J0LCBTdHJpbmcgYXBwbGljYXRpb25Db250ZXh0LA0KKwkJCWludCBpbnN0YW5jZUlkKSB7DQorCQlzdXBlcigpOw0KKw0KKwkJbG9hZFRlc3RSdG1wQ2xpZW50ID0gbmV3IExvYWRUZXN0UnRtcENsaWVudChpbnN0YW5jZUlkKTsNCisJCWxvYWRUZXN0UnRtcENsaWVudC5jb25uZWN0KGhvc3QsIHBvcnQsIGFwcGxpY2F0aW9uQ29udGV4dCwNCisJCQkJbG9hZFRlc3RSdG1wQ2xpZW50KTsNCisJfQ0KKw0KKwlwdWJsaWMgdm9pZCBydW4oKSB7DQorCQl0cnkgew0KKw0KKwkJCVN5c3RlbS5lcnIucHJpbnRsbigiIyMjIyMjIyMjIHN0YXJ0IGNsaWVudCIpOw0KKw0KKwkJCXdoaWxlICh0ZXN0UnVubmluZykgew0KKwkJCQl0ZXN0UnVubmluZyA9ICFsb2FkVGVzdFJ0bXBDbGllbnQucGVyZm9ybUNhbGwoKTsNCisJCQkJdHJ5IHsNCisJCQkJCVRocmVhZC5zbGVlcCgyMDApOw0KKwkJCQl9IGNhdGNoIChJbnRlcnJ1cHRlZEV4Y2VwdGlvbiBlKSB7DQorCQkJCQllLnByaW50U3RhY2tUcmFjZSgpOw0KKwkJCQl9DQorCQkJfQ0KKw0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsNCisJCQllLnByaW50U3RhY2tUcmFjZSgpOw0KKwkJfQ0KKwl9DQorDQorCXB1YmxpYyBpbnQgZ2V0TnVtYmVyT2ZDYWxscygpIHsNCisJCXJldHVybiBsb2FkVGVzdFJ0bXBDbGllbnQuZ2V0TnVtYmVyT2ZDYWxscygpOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L3J0bXAvU2ltdWxhdGVMb2FkVGVzdC5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvcnRtcC9TaW11bGF0ZUxvYWRUZXN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTRiMWU5ZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L3J0bXAvU2ltdWxhdGVMb2FkVGVzdC5qYXZhCkBAIC0wLDAgKzEsMTA3IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnRlc3QucnRtcDsKKworaW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKKworcHVibGljIGNsYXNzIFNpbXVsYXRlTG9hZFRlc3QgeworCisJcHJpdmF0ZSBpbnQgbnVtYmVyT2ZDbGllbnRzID0gMjU7CisJcHJpdmF0ZSBMaXN0PFNpbXVsYXRlTG9hZD4gc2ltdWxhdGVMb2FkTGlzdCA9IG5ldyBBcnJheUxpc3Q8U2ltdWxhdGVMb2FkPigpOworCisJcHJpdmF0ZSBTdHJpbmcgaG9zdCA9ICIxOTIuMTY4LjEuNyI7CisJcHJpdmF0ZSBmaW5hbCBpbnQgcG9ydCA9IDE5MzU7CisJcHJpdmF0ZSBmaW5hbCBTdHJpbmcgYXBwbGljYXRpb25Db250ZXh0ID0gIm9wZW5tZWV0aW5ncy8xIjsKKworCXB1YmxpYyBTaW11bGF0ZUxvYWRUZXN0KFN0cmluZyBob3N0LCBpbnQgbnVtYmVyT2ZDbGllbnRzKSB7CisJCXRoaXMuaG9zdCA9IGhvc3Q7CisJCXRoaXMubnVtYmVyT2ZDbGllbnRzID0gbnVtYmVyT2ZDbGllbnRzOworCX0KKworCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZy4uLiBhcmdzKSB7CisJCWlmIChhcmdzLmxlbmd0aCAhPSAyKSB7CisJCQlyZXR1cm47CisJCX0KKwkJU2ltdWxhdGVMb2FkVGVzdCBzaW11bGF0ZUxvYWRUZXN0ID0gbmV3IFNpbXVsYXRlTG9hZFRlc3QoYXJnc1swXSwKKwkJCQlJbnRlZ2VyLnZhbHVlT2YoYXJnc1sxXSkuaW50VmFsdWUoKSk7CisJCXNpbXVsYXRlTG9hZFRlc3QudGVzdCgpOworCX0KKworCisJQFRlc3QKKwlwdWJsaWMgdm9pZCB0ZXN0KCkgeworCQl0cnkgeworCQkJZm9yIChpbnQgaSA9IDA7IGkgPCBudW1iZXJPZkNsaWVudHM7IGkrKykgeworCQkJCVNpbXVsYXRlTG9hZCBzaW11bGF0ZUxvYWQgPSBuZXcgU2ltdWxhdGVMb2FkKGhvc3QsIHBvcnQsCisJCQkJCQlhcHBsaWNhdGlvbkNvbnRleHQsIGkpOworCQkJCXNpbXVsYXRlTG9hZExpc3QuYWRkKHNpbXVsYXRlTG9hZCk7CisJCQkJVGhyZWFkLnNsZWVwKDEwMCk7CisJCQl9CisKKwkJCVN5c3RlbS5lcnIucHJpbnRsbigiQ2xpZW50cyBpbml0aWFsaXplZCIpOworCisJCQlmb3IgKFNpbXVsYXRlTG9hZCBzaW11bGF0ZUxvYWQgOiBzaW11bGF0ZUxvYWRMaXN0KSB7CisJCQkJc2ltdWxhdGVMb2FkLnN0YXJ0KCk7CisJCQkJVGhyZWFkLnNsZWVwKDUwKTsKKwkJCX0KKworCQkJU3lzdGVtLmVyci5wcmludGxuKCJDbGllbnRzIHN0YXJ0ZWQiKTsKKworCQkJYm9vbGVhbiBydW5uaW5nID0gdHJ1ZTsKKwkJCXdoaWxlIChydW5uaW5nKSB7CisJCQkJYm9vbGVhbiBkb1J1blN0aWxsID0gZmFsc2U7CisJCQkJZm9yIChTaW11bGF0ZUxvYWQgc2ltdWxhdGVMb2FkIDogc2ltdWxhdGVMb2FkTGlzdCkgeworCQkJCQlpZiAoc2ltdWxhdGVMb2FkLmlzVGVzdFJ1bm5pbmcoKSkgeworCQkJCQkJZG9SdW5TdGlsbCA9IHRydWU7CisJCQkJCQlicmVhazsKKwkJCQkJfQorCQkJCX0KKwkJCQlydW5uaW5nID0gZG9SdW5TdGlsbDsKKwkJCQl0cnkgeworCQkJCQlUaHJlYWQuc2xlZXAoMjAwKTsKKwkJCQl9IGNhdGNoIChJbnRlcnJ1cHRlZEV4Y2VwdGlvbiBlKSB7CisJCQkJCWUucHJpbnRTdGFja1RyYWNlKCk7CisJCQkJfQorCQkJfQorCisJCQlkb3VibGUgb3ZlcmFsbFRpbWUgPSAwOworCisJCQlmb3IgKFNpbXVsYXRlTG9hZCBzaW11bGF0ZUxvYWQgOiBzaW11bGF0ZUxvYWRMaXN0KSB7CisJCQkJb3ZlcmFsbFRpbWUgKz0gc2ltdWxhdGVMb2FkLmdldEF2ZXJhZ2VUaW1lKCk7CisJCQkJU3lzdGVtLmVyci5wcmludGxuKCJOdW1iZXIgb2YgY2FsbHM6ICIKKwkJCQkJCSsgc2ltdWxhdGVMb2FkLmdldE51bWJlck9mQ2FsbHMoKSArICJvdmVyYWxsVGltZTogIgorCQkJCQkJKyBvdmVyYWxsVGltZSArICIgYXZlcmFnZVRpbWUiCisJCQkJCQkrIHNpbXVsYXRlTG9hZC5nZXRBdmVyYWdlVGltZSgpKTsKKwkJCX0KKworCQkJZG91YmxlIGRlbHRhQWxsQ2xpZW50cyA9IG92ZXJhbGxUaW1lCisJCQkJCS8gSW50ZWdlci52YWx1ZU9mKHNpbXVsYXRlTG9hZExpc3Quc2l6ZSgpKS5kb3VibGVWYWx1ZSgpOworCisJCQlTeXN0ZW0uZXJyLnByaW50bG4oIkF2ZXJhZ2UgdGltZSBwZXIgY2FsbDogIiArIGRlbHRhQWxsQ2xpZW50cyk7CisKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJZXJyLnByaW50U3RhY2tUcmFjZSgpOworCQl9CisKKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L3Nlc3Npb24vVGVzdERiU2Vzc2lvbi5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3Qvc2Vzc2lvbi9UZXN0RGJTZXNzaW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjkyMjgzYwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L3Nlc3Npb24vVGVzdERiU2Vzc2lvbi5qYXZhCkBAIC0wLDAgKzEsMTk4IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnRlc3Quc2Vzc2lvbjsKKworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydEVxdWFsczsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuZGFvLlNlcnZlckRhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNvbmZlcmVuY2UuZGFvLkNsaWVudERhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5TZXJ2ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbS5DbGllbnQ7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudGVzdC5BYnN0cmFjdE9wZW5tZWV0aW5nc1NwcmluZ1Rlc3Q7CitpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKKworcHVibGljIGNsYXNzIFRlc3REYlNlc3Npb24gZXh0ZW5kcyBBYnN0cmFjdE9wZW5tZWV0aW5nc1NwcmluZ1Rlc3QgeworCisJcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKAorCQkJVGVzdERiU2Vzc2lvbi5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCisJQEF1dG93aXJlZAorCXByaXZhdGUgU2VydmVyRGFvIHNlcnZlckRhbzsKKworCUBBdXRvd2lyZWQKKwlwcml2YXRlIENsaWVudERhbyBjbGllbnREYW87CisKKwlAVGVzdAorCXB1YmxpYyB2b2lkIHRlc3REYlNlc3Npb25GdW5jdGlvbnMoKSB7CisKKwkJY2xpZW50RGFvLmNsZWFuQWxsQ2xpZW50cygpOworCQkKKwkJTGlzdDxTZXJ2ZXI+IHNlcnZlckxpc3QgPSBzZXJ2ZXJEYW8uZ2V0QWN0aXZlU2VydmVycygpOworCisJCVNlcnZlciBzZXJ2ZXIgPSBudWxsOworCQlpZiAoc2VydmVyTGlzdC5zaXplKCkgPiAwKSB7CisJCQlzZXJ2ZXIgPSBzZXJ2ZXJMaXN0LmdldCgwKTsKKwkJfSBlbHNlIHsKKwkJCXNlcnZlciA9IG5ldyBTZXJ2ZXIoKTsKKwkJCXNlcnZlci5zZXROYW1lKCJUZXN0IFNlcnZlciIpOworCQkJc2VydmVyLnNldEFjdGl2ZSh0cnVlKTsKKwkJCXNlcnZlckRhby51cGRhdGUoc2VydmVyLCBudWxsKTsKKwkJfQorCisJCUNsaWVudCBjbDEgPSBuZXcgQ2xpZW50KCk7CisJCWNsMS5zZXRTdHJlYW1pZCgiMSIpOworCQljbDEuc2V0U2VydmVyKG51bGwpOworCQljbDEuc2V0VXNlcl9pZCgxTCk7CisJCWNsMS5zZXRSb29tX2lkKDFMKTsKKwkJY2wxLnNldFB1YmxpY1NJRCgicHVibGljMSIpOworCQljbGllbnREYW8uYWRkKGNsMSk7CisKKwkJQ2xpZW50IGNsMiA9IG5ldyBDbGllbnQoKTsKKwkJY2wyLnNldFN0cmVhbWlkKCIyIik7CisJCWNsMi5zZXRTZXJ2ZXIobnVsbCk7CisJCWNsMi5zZXRSb29tX2lkKDFMKTsKKwkJY2wyLnNldFVzZXJfaWQoMkwpOworCQljbDIuc2V0UHVibGljU0lEKCJwdWJsaWMyIik7CisJCWNsaWVudERhby5hZGQoY2wyKTsKKworCQlDbGllbnQgY2wzID0gbmV3IENsaWVudCgpOworCQljbDMuc2V0U3RyZWFtaWQoIjMiKTsKKwkJY2wzLnNldFNlcnZlcihzZXJ2ZXIpOworCQljbDMuc2V0Um9vbV9pZCgzTCk7CisJCWNsMy5zZXRVc2VyX2lkKDNMKTsKKwkJY2wzLnNldFB1YmxpY1NJRCgicHVibGljMyIpOworCQljbGllbnREYW8uYWRkKGNsMyk7CisJCQorCQlDbGllbnQgY2xUZXN0ID0gY2xpZW50RGFvLmdldENsaWVudEJ5U2VydmVyQW5kU3RyZWFtSWQobnVsbCwgIjEiKTsKKworCQlsb2cuZGVidWcoImNsMSAiICsgY2wxKTsKKwkJbG9nLmRlYnVnKCJjbFRlc3QgIiArIGNsVGVzdCk7CisKKwkJYXNzZXJ0RXF1YWxzKGNsVGVzdC5nZXRJZCgpLCBjbDEuZ2V0SWQoKSk7CisKKwkJQ2xpZW50IGNsVGVzdDMgPSBjbGllbnREYW8uZ2V0Q2xpZW50QnlTZXJ2ZXJBbmRTdHJlYW1JZChzZXJ2ZXIsICIzIik7CisKKwkJbG9nLmRlYnVnKCJjbDMgIiArIGNsMyk7CisJCWxvZy5kZWJ1ZygiY2xUZXN0MyAiICsgY2xUZXN0Myk7CisKKwkJYXNzZXJ0RXF1YWxzKGNsVGVzdDMuZ2V0SWQoKSwgY2wzLmdldElkKCkpOworCisJCUNsaWVudCBjbFRlc3RfTk9UXzMgPSBjbGllbnREYW8uZ2V0Q2xpZW50QnlTZXJ2ZXJBbmRTdHJlYW1JZChudWxsLCAiMyIpOworCisJCWxvZy5kZWJ1ZygiY2xUZXN0X05PVF8zICIgKyBjbFRlc3RfTk9UXzMpOworCQlhc3NlcnRFcXVhbHMobnVsbCwgY2xUZXN0X05PVF8zKTsKKwkJCisJCWxvbmcgbnVtYmVyT2ZDbGllbnRzMSA9IGNsaWVudERhby5jb3VudENsaWVudHNCeVNlcnZlckFuZFN0cmVhbUlkKG51bGwsICIxIik7CisJCWFzc2VydEVxdWFscygxLCBudW1iZXJPZkNsaWVudHMxKTsKKwkJCisJCWxvbmcgbnVtYmVyT2ZDbGllbnRzMyA9IGNsaWVudERhby5jb3VudENsaWVudHNCeVNlcnZlckFuZFN0cmVhbUlkKHNlcnZlciwgIjMiKTsKKwkJYXNzZXJ0RXF1YWxzKDEsIG51bWJlck9mQ2xpZW50czMpOworCQkKKwkJbG9uZyBudW1iZXJPZkNsaWVudHM0ID0gY2xpZW50RGFvLmNvdW50Q2xpZW50c0J5U2VydmVyQW5kU3RyZWFtSWQobnVsbCwgIjMiKTsKKwkJYXNzZXJ0RXF1YWxzKDAsIG51bWJlck9mQ2xpZW50czQpOworCQkKKwkJTGlzdDxDbGllbnQ+IGNsVGVzdF9QdWJfMV9saXN0ID0gY2xpZW50RGFvLmdldENsaWVudHNCeVB1YmxpY1NJREFuZFNlcnZlcihudWxsLCAicHVibGljMSIpOworCQlhc3NlcnRFcXVhbHMoY2wxLmdldElkKCksIGNsVGVzdF9QdWJfMV9saXN0LmdldCgwKS5nZXRJZCgpKTsKKwkJCisJCUxpc3Q8Q2xpZW50PiBjbFRlc3RfUHViXzNfbGlzdCA9IGNsaWVudERhby5nZXRDbGllbnRzQnlQdWJsaWNTSURBbmRTZXJ2ZXIoc2VydmVyLCAicHVibGljMyIpOworCQlhc3NlcnRFcXVhbHMoY2wzLmdldElkKCksIGNsVGVzdF9QdWJfM19saXN0LmdldCgwKS5nZXRJZCgpKTsKKwkJCisJCUxpc3Q8Q2xpZW50PiBjbFRlc3RfRmFpbF9saXN0ID0gY2xpZW50RGFvLmdldENsaWVudHNCeVB1YmxpY1NJREFuZFNlcnZlcihudWxsLCAicHVibGljMyIpOworCQlhc3NlcnRFcXVhbHMoMCwgY2xUZXN0X0ZhaWxfbGlzdC5zaXplKCkpOworCQkKKwkJTGlzdDxDbGllbnQ+IGNsVGVzdF9QdWJBbGxfMV9saXN0ID0gY2xpZW50RGFvLmdldENsaWVudHNCeVB1YmxpY1NJRCgicHVibGljMSIpOworCQlhc3NlcnRFcXVhbHMoY2wxLmdldElkKCksIGNsVGVzdF9QdWJBbGxfMV9saXN0LmdldCgwKS5nZXRJZCgpKTsKKwkJCisJCUxpc3Q8Q2xpZW50PiBjbFRlc3RfUHViQWxsXzNfbGlzdCA9IGNsaWVudERhby5nZXRDbGllbnRzQnlQdWJsaWNTSUQoInB1YmxpYzMiKTsKKwkJYXNzZXJ0RXF1YWxzKGNsMy5nZXRJZCgpLCBjbFRlc3RfUHViQWxsXzNfbGlzdC5nZXQoMCkuZ2V0SWQoKSk7CisJCQorCQlMaXN0PENsaWVudD4gY2xUZXN0X0ZhaWxBbGxfbGlzdCA9IGNsaWVudERhby5nZXRDbGllbnRzQnlQdWJsaWNTSUQoInB1YmxpYzQiKTsKKwkJYXNzZXJ0RXF1YWxzKDAsIGNsVGVzdF9GYWlsQWxsX2xpc3Quc2l6ZSgpKTsKKwkJCisJCUxpc3Q8Q2xpZW50PiBjbGllbnRzQnlTZXJ2ZXJOdWxsID0gY2xpZW50RGFvLmdldENsaWVudHNCeVNlcnZlcihudWxsKTsKKwkJYXNzZXJ0RXF1YWxzKDIsIGNsaWVudHNCeVNlcnZlck51bGwuc2l6ZSgpKTsKKwkJCisJCUxpc3Q8Q2xpZW50PiBjbGllbnRzQnlTZXJ2ZXIgPSBjbGllbnREYW8uZ2V0Q2xpZW50c0J5U2VydmVyKHNlcnZlcik7CisJCWFzc2VydEVxdWFscygxLCBjbGllbnRzQnlTZXJ2ZXIuc2l6ZSgpKTsKKwkJCisJCUxpc3Q8Q2xpZW50PiBjbGllbnRzQWxsID0gY2xpZW50RGFvLmdldENsaWVudHMoKTsKKwkJYXNzZXJ0RXF1YWxzKDMsIGNsaWVudHNBbGwuc2l6ZSgpKTsKKwkJCisJCS8vYnkgdXNlcmlkCisJCUxpc3Q8Q2xpZW50PiBjbFRlc3RfVXNlcl8xX2xpc3QgPSBjbGllbnREYW8uZ2V0Q2xpZW50c0J5VXNlcklkKG51bGwsIDFMKTsKKwkJYXNzZXJ0RXF1YWxzKGNsMS5nZXRJZCgpLCBjbFRlc3RfVXNlcl8xX2xpc3QuZ2V0KDApLmdldElkKCkpOworCQkKKwkJTGlzdDxDbGllbnQ+IGNsVGVzdF9Vc2VyXzNfbGlzdCA9IGNsaWVudERhby5nZXRDbGllbnRzQnlVc2VySWQoc2VydmVyLCAzTCk7CisJCWFzc2VydEVxdWFscyhjbDMuZ2V0SWQoKSwgY2xUZXN0X1VzZXJfM19saXN0LmdldCgwKS5nZXRJZCgpKTsKKwkJCisJCUxpc3Q8Q2xpZW50PiBjbFRlc3RfVXNlckZhaWxfbGlzdCA9IGNsaWVudERhby5nZXRDbGllbnRzQnlVc2VySWQobnVsbCwgM0wpOworCQlhc3NlcnRFcXVhbHMoMCwgY2xUZXN0X1VzZXJGYWlsX2xpc3Quc2l6ZSgpKTsKKwkJCisJCS8vYnkgcm9vbWlkCisJCUxpc3Q8Q2xpZW50PiBjbFRlc3RfUm9vbV8xX2xpc3QgPSBjbGllbnREYW8uZ2V0Q2xpZW50c0J5Um9vbUlkKDFMKTsKKwkJYXNzZXJ0RXF1YWxzKDIsIGNsVGVzdF9Sb29tXzFfbGlzdC5zaXplKCkpOworCQkKKwkJTGlzdDxDbGllbnQ+IGNsVGVzdF9Sb29tXzNfbGlzdCA9IGNsaWVudERhby5nZXRDbGllbnRzQnlSb29tSWQoM0wpOworCQlhc3NlcnRFcXVhbHMoY2wzLmdldElkKCksIGNsVGVzdF9Sb29tXzNfbGlzdC5nZXQoMCkuZ2V0SWQoKSk7CisJCQorCQlMaXN0PENsaWVudD4gY2xUZXN0X1Jvb21GYWlsX2xpc3QgPSBjbGllbnREYW8uZ2V0Q2xpZW50c0J5Um9vbUlkKDJMKTsKKwkJYXNzZXJ0RXF1YWxzKDAsIGNsVGVzdF9Sb29tRmFpbF9saXN0LnNpemUoKSk7CisJCQorCQkvL2NvdW50IGFsbAorCQlpbnQgY291bnRBbGwgPSBjbGllbnREYW8uY291bnRDbGllbnRzKCk7CisJCWFzc2VydEVxdWFscygzLCBjb3VudEFsbCk7CisJCQorCQkvL2NvdW50IGJ5IHNlcnZlcgorCQlpbnQgY2xUZXN0X0NvdW50XzFfbGlzdCA9IGNsaWVudERhby5jb3VudENsaWVudHNCeVNlcnZlcihudWxsKTsKKwkJYXNzZXJ0RXF1YWxzKDIsIGNsVGVzdF9Db3VudF8xX2xpc3QpOworCQkKKwkJaW50IGNsVGVzdF9Db3VudF8zX2xpc3QgPSBjbGllbnREYW8uY291bnRDbGllbnRzQnlTZXJ2ZXIoc2VydmVyKTsKKwkJYXNzZXJ0RXF1YWxzKDEsIGNsVGVzdF9Db3VudF8zX2xpc3QpOworCQkKKwkJLy9yZW1vdmUgYnkgaWQKKwkJY2xpZW50RGFvLmRlbGV0ZShjbDEpOworCQkKKwkJaW50IGNsVGVzdF9Db3VudF9EZWxldGVfbGlzdCA9IGNsaWVudERhby5jb3VudENsaWVudHNCeVNlcnZlcihudWxsKTsKKwkJYXNzZXJ0RXF1YWxzKDEsIGNsVGVzdF9Db3VudF9EZWxldGVfbGlzdCk7CisJCQorCQkvL3JlbW92ZSBieSBzZXJ2ZXIgYW5kIHN0cmVhbWlkCisJCWNsaWVudERhby5yZW1vdmVDbGllbnRCeVNlcnZlckFuZFN0cmVhbUlkKG51bGwsICIyIik7CisJCQorCQljbFRlc3RfQ291bnRfRGVsZXRlX2xpc3QgPSBjbGllbnREYW8uY291bnRDbGllbnRzQnlTZXJ2ZXIobnVsbCk7CisJCWFzc2VydEVxdWFscygwLCBjbFRlc3RfQ291bnRfRGVsZXRlX2xpc3QpOworCQkKKwkJY2xpZW50RGFvLnJlbW92ZUNsaWVudEJ5U2VydmVyQW5kU3RyZWFtSWQoc2VydmVyLCAiMyIpOworCQkKKwkJY2xUZXN0X0NvdW50X0RlbGV0ZV9saXN0ID0gY2xpZW50RGFvLmNvdW50Q2xpZW50c0J5U2VydmVyKHNlcnZlcik7CisJCWFzc2VydEVxdWFscygwLCBjbFRlc3RfQ291bnRfRGVsZXRlX2xpc3QpOworCQkKKwkJLy9kZWxldGUgYWxsCisJCWNsaWVudERhby5jbGVhbkFsbENsaWVudHMoKTsKKworCQljb3VudEFsbCA9IGNsaWVudERhby5jb3VudENsaWVudHMoKTsKKwkJYXNzZXJ0RXF1YWxzKDAsIGNvdW50QWxsKTsKKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L3Nlc3Npb24vVGVzdERiU2Vzc2lvbkdldFJvb21JZHMuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L3Nlc3Npb24vVGVzdERiU2Vzc2lvbkdldFJvb21JZHMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzNlYjBhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3Qvc2Vzc2lvbi9UZXN0RGJTZXNzaW9uR2V0Um9vbUlkcy5qYXZhCkBAIC0wLDAgKzEsOTkgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudGVzdC5zZXNzaW9uOworCitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuYXNzZXJ0RXF1YWxzOworCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5kYW8uU2VydmVyRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuY29uZmVyZW5jZS5kYW8uQ2xpZW50RGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLlNlcnZlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tLkNsaWVudDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy50ZXN0LkFic3RyYWN0T3Blbm1lZXRpbmdzU3ByaW5nVGVzdDsKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uQXV0b3dpcmVkOworCitwdWJsaWMgY2xhc3MgVGVzdERiU2Vzc2lvbkdldFJvb21JZHMgZXh0ZW5kcyBBYnN0cmFjdE9wZW5tZWV0aW5nc1NwcmluZ1Rlc3QgeworCisJcHJvdGVjdGVkIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKAorCQkJVGVzdERiU2Vzc2lvbkdldFJvb21JZHMuY2xhc3MsIE9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFNlcnZlckRhbyBzZXJ2ZXJEYW87CisKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBDbGllbnREYW8gY2xpZW50RGFvOworCisJQFRlc3QKKwlwdWJsaWMgdm9pZCB0ZXN0RGJTZXNzaW9uRnVuY3Rpb25zKCkgeworCisJCWNsaWVudERhby5jbGVhbkFsbENsaWVudHMoKTsKKwkJCisJCUxpc3Q8U2VydmVyPiBzZXJ2ZXJMaXN0ID0gc2VydmVyRGFvLmdldEFjdGl2ZVNlcnZlcnMoKTsKKworCQlTZXJ2ZXIgc2VydmVyID0gbnVsbDsKKwkJaWYgKHNlcnZlckxpc3Quc2l6ZSgpID4gMCkgeworCQkJc2VydmVyID0gc2VydmVyTGlzdC5nZXQoMCk7CisJCX0gZWxzZSB7CisJCQlzZXJ2ZXIgPSBuZXcgU2VydmVyKCk7CisJCQlzZXJ2ZXIuc2V0TmFtZSgiVGVzdCBTZXJ2ZXIiKTsKKwkJCXNlcnZlci5zZXRBY3RpdmUodHJ1ZSk7CisJCQlzZXJ2ZXJEYW8udXBkYXRlKHNlcnZlciwgbnVsbCk7CisJCX0KKworCQlDbGllbnQgY2wxID0gbmV3IENsaWVudCgpOworCQljbDEuc2V0U3RyZWFtaWQoIjEiKTsKKwkJY2wxLnNldFNlcnZlcihzZXJ2ZXIpOworCQljbDEuc2V0VXNlcl9pZCgxTCk7CisJCWNsMS5zZXRSb29tX2lkKDFMKTsKKwkJY2wxLnNldFB1YmxpY1NJRCgicHVibGljMSIpOworCQljbGllbnREYW8uYWRkKGNsMSk7CisKKwkJQ2xpZW50IGNsMiA9IG5ldyBDbGllbnQoKTsKKwkJY2wyLnNldFN0cmVhbWlkKCIyIik7CisJCWNsMi5zZXRTZXJ2ZXIoc2VydmVyKTsKKwkJY2wyLnNldFJvb21faWQoMUwpOworCQljbDIuc2V0VXNlcl9pZCgyTCk7CisJCWNsMi5zZXRQdWJsaWNTSUQoInB1YmxpYzIiKTsKKwkJY2xpZW50RGFvLmFkZChjbDIpOworCisJCUNsaWVudCBjbDMgPSBuZXcgQ2xpZW50KCk7CisJCWNsMy5zZXRTdHJlYW1pZCgiMyIpOworCQljbDMuc2V0U2VydmVyKHNlcnZlcik7CisJCWNsMy5zZXRSb29tX2lkKDNMKTsKKwkJY2wzLnNldFVzZXJfaWQoM0wpOworCQljbDMuc2V0UHVibGljU0lEKCJwdWJsaWMzIik7CisJCWNsaWVudERhby5hZGQoY2wzKTsKKwkJCisJCUxpc3Q8TG9uZz4gcm9vbWlkcyA9IGNsaWVudERhby5nZXRSb29tc0lkc0J5U2VydmVyKHNlcnZlcik7CisKKwkJYXNzZXJ0RXF1YWxzKDIsIHJvb21pZHMuc2l6ZSgpKTsKKwkJCisJCS8vZGVsZXRlIGFsbAorCQljbGllbnREYW8uY2xlYW5BbGxDbGllbnRzKCk7CisKKwkJaW50IGNvdW50QWxsID0gY2xpZW50RGFvLmNvdW50Q2xpZW50cygpOworCQlhc3NlcnRFcXVhbHMoMCwgY291bnRBbGwpOworCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3Qvc2Vzc2lvbi9UZXN0SGFzaE1hcFNlc3Npb24uamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L3Nlc3Npb24vVGVzdEhhc2hNYXBTZXNzaW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTYyODAyYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L3Nlc3Npb24vVGVzdEhhc2hNYXBTZXNzaW9uLmphdmEKQEAgLTAsMCArMSw5MyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy50ZXN0LnNlc3Npb247CisKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRFcXVhbHM7CisKK2ltcG9ydCBqYXZhLm1hdGguQmlnSW50ZWdlcjsKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworaW1wb3J0IGphdmEudXRpbC5EYXRlOworaW1wb3J0IGphdmEudXRpbC5SYW5kb207CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbS5DbGllbnQ7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2Vzc2lvbi5zdG9yZS5IYXNoTWFwU3RvcmU7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2Vzc2lvbi5zdG9yZS5JQ2xpZW50UGVyc2lzdGVuY2VTdG9yZTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy50ZXN0LkFic3RyYWN0T3Blbm1lZXRpbmdzU3ByaW5nVGVzdDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5jcnlwdC5NYW5hZ2VDcnlwdFN0eWxlOworaW1wb3J0IG9yZy5qdW5pdC5UZXN0OworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5BdXRvd2lyZWQ7CisKK3B1YmxpYyBjbGFzcyBUZXN0SGFzaE1hcFNlc3Npb24gZXh0ZW5kcyBBYnN0cmFjdE9wZW5tZWV0aW5nc1NwcmluZ1Rlc3QgeworCQorCXByb3RlY3RlZCBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcigKKwkJCVRlc3RIYXNoTWFwU2Vzc2lvbi5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCQorCUBBdXRvd2lyZWQKKwlwcml2YXRlIEhhc2hNYXBTdG9yZSBjYWNoZTsKKwkKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBNYW5hZ2VDcnlwdFN0eWxlIG1hbmFnZUNyeXB0U3R5bGU7CisJCisJQFRlc3QKKwlwdWJsaWMgdm9pZCB0ZXN0SGFzaE1hcFNlc3Npb24oKSB7CisJCQorCQlmb3IgKGludCBpPTA7aTwyMDtpKyspIHsKKwkJCQorCQkJU3RyaW5nIHN0cmVhbUlkID0gIiIraTsKKwkJCQorCQkJQ2xpZW50IHJjbSA9IG5ldyBDbGllbnQoKTsKKwkJCXJjbS5zZXRDb25uZWN0ZWRTaW5jZShuZXcgRGF0ZSgpKTsKKwkJCXJjbS5zZXRTdHJlYW1pZChzdHJlYW1JZCk7CisJCQlyY20uc2V0U2NvcGUoInNjb3BlTmFtZSIpOworCQkJbG9uZyByYW5kb20gPSBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSArIG5ldyBCaWdJbnRlZ2VyKDI1NiwgbmV3IFJhbmRvbSgpKS5sb25nVmFsdWUoKTsKKwkJCQorCQkJcmNtLnNldFB1YmxpY1NJRChtYW5hZ2VDcnlwdFN0eWxlLmdldEluc3RhbmNlT2ZDcnlwdCgpCisJCQkJCS5jcmVhdGVQYXNzUGhyYXNlKFN0cmluZy52YWx1ZU9mKHJhbmRvbSkudG9TdHJpbmcoKSkpOworCisJCQlyY20uc2V0VXNlcnBvcnQoMCk7CisJCQlyY20uc2V0VXNlcmlwKCJyZW1vdGVBZGRyZXNzIik7CisJCQlyY20uc2V0U3dmdXJsKCJzd2ZVcmwiKTsKKwkJCXJjbS5zZXRJc01vZChuZXcgQm9vbGVhbihmYWxzZSkpOworCQkJcmNtLnNldENhbkRyYXcobmV3IEJvb2xlYW4oZmFsc2UpKTsKKwkJCXJjbS5zZXRJc0FWQ2xpZW50KGZhbHNlKTsKKworCQkJaWYgKGNhY2hlLmNvbnRhaW5zS2V5KG51bGwsIHN0cmVhbUlkKSkgeworCQkJCWxvZy5lcnJvcigiVHJpZWQgdG8gYWRkIGFuIGV4aXN0aW5nIENsaWVudCAiICsgc3RyZWFtSWQpOworCQkJCWJyZWFrOworCQkJfQorCisJCQljYWNoZS5wdXQocmNtLmdldFN0cmVhbWlkKCksIHJjbSk7CisJCQkKKwkJCWNhY2hlLnJlbW92ZShudWxsLCBzdHJlYW1JZCk7CisJCQorCQl9CisJCQorCQlTdHJpbmcgbG9nU3RyaW5nID0gY2FjaGUuZ2V0RGVidWdJbmZvcm1hdGlvbihBcnJheXMuYXNMaXN0KElDbGllbnRQZXJzaXN0ZW5jZVN0b3JlLkRFQlVHX0RFVEFJTFMuU0laRSkpOworCQkKKwkJCisJCWxvZy5kZWJ1ZygiIyMjIyMjIyMgXG5cciAiKyBsb2dTdHJpbmcgKyAiIFxuXHIgIyMjIyMjIyMiKTsKKwkJCisJCWFzc2VydEVxdWFscygwLCBjYWNoZS5zaXplKCkpOworCQkKKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L3Ntb2tlL1Rlc3RTbW9rZUJhc2ljLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9zbW9rZS9UZXN0U21va2VCYXNpYy5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0ZGZkM2UKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC9zbW9rZS9UZXN0U21va2VCYXNpYy5qYXZhCkBAIC0wLDAgKzEsMzYgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudGVzdC5zbW9rZTsKKworaW1wb3J0IHN0YXRpYyBqdW5pdC5mcmFtZXdvcmsuQXNzZXJ0LmFzc2VydE5vdE51bGw7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuVXNlck1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudGVzdC5BYnN0cmFjdE9wZW5tZWV0aW5nc1NwcmluZ1Rlc3Q7CitpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uQXV0b3dpcmVkOworCitwdWJsaWMgY2xhc3MgVGVzdFNtb2tlQmFzaWMgZXh0ZW5kcyBBYnN0cmFjdE9wZW5tZWV0aW5nc1NwcmluZ1Rlc3QgeworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFVzZXJNYW5hZ2VyIHVzZXJNYW5hZ2VyOworCQorCUBUZXN0CisJcHVibGljIHZvaWQgY3JlYXRlRXJyb3JWYWx1ZUFuZFRlc3QoKSB7CisgICAgICAgIGFzc2VydE5vdE51bGwodXNlck1hbmFnZXIuZ2V0VXNlckJ5SWQoMUwpKTsKKwl9CQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvdXNlci9UZXN0U3RhdGVUb0xvd2VyLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC91c2VyL1Rlc3RTdGF0ZVRvTG93ZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjZlNDgwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvdXNlci9UZXN0U3RhdGVUb0xvd2VyLmphdmEKQEAgLTAsMCArMSw0OSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy50ZXN0LnVzZXI7CisKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnRUcnVlOworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLmRhby5TdGF0ZURhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlN0YXRlOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnRlc3QuQWJzdHJhY3RPcGVubWVldGluZ3NTcHJpbmdUZXN0OworaW1wb3J0IG9yZy5qdW5pdC5UZXN0OworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKKworcHVibGljIGNsYXNzIFRlc3RTdGF0ZVRvTG93ZXIgZXh0ZW5kcyBBYnN0cmFjdE9wZW5tZWV0aW5nc1NwcmluZ1Rlc3QgeworCQorCUBBdXRvd2lyZWQKKwlwcml2YXRlIFN0YXRlRGFvIHN0YXRlRGFvOworCQorCUBUZXN0CisJcHVibGljIHZvaWQgZG9UZXN0UXVlcnkoKSB7CisJCQorCQlTdGF0ZSBzdGF0ZV9hbGFiYW5pYSA9IHN0YXRlRGFvLmdldFN0YXRlQnlOYW1lKCJBbGJhbmlhIik7CisJCQorCQlTdGF0ZSBzdGF0ZV9hbGFiYW5pYV9sb3dlciA9IHN0YXRlRGFvLmdldFN0YXRlQnlOYW1lKCJhbGJhTmlhIik7CisJCQorCQlhc3NlcnRUcnVlKHN0YXRlX2FsYWJhbmlhICE9IG51bGwpOworCQlhc3NlcnRUcnVlKHN0YXRlX2FsYWJhbmlhX2xvd2VyICE9IG51bGwpOworCQlhc3NlcnRUcnVlKHN0YXRlX2FsYWJhbmlhLmdldFN0YXRlX2lkKCkuZXF1YWxzKDNMKSk7CisJCWFzc2VydFRydWUoc3RhdGVfYWxhYmFuaWFfbG93ZXIuZ2V0U3RhdGVfaWQoKS5lcXVhbHMoM0wpKTsKKwkJYXNzZXJ0VHJ1ZShzdGF0ZV9hbGFiYW5pYS5nZXRTdGF0ZV9pZCgpLmVxdWFscyhzdGF0ZV9hbGFiYW5pYV9sb3dlci5nZXRTdGF0ZV9pZCgpKSk7CisJCQorCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvdXNlci9UZXN0VXNlck9yZ2FuaXNhdGlvbi5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvdXNlci9UZXN0VXNlck9yZ2FuaXNhdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2NmEwYmMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC91c2VyL1Rlc3RVc2VyT3JnYW5pc2F0aW9uLmphdmEKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy50ZXN0LnVzZXI7CisKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnROb3ROdWxsOworaW1wb3J0IHN0YXRpYyBvcmcuanVuaXQuQXNzZXJ0LmFzc2VydFRydWU7CitpbXBvcnQgc3RhdGljIG9yZy5qdW5pdC5Bc3NlcnQuZmFpbDsKKworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLk9yZ2FuaXNhdGlvbk1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLmRhby5Vc2Vyc0RhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5kb21haW4uT3JnYW5pc2F0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmRvbWFpbi5PcmdhbmlzYXRpb25fVXNlcnM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlci5Vc2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnRlc3QuQWJzdHJhY3RPcGVubWVldGluZ3NTcHJpbmdUZXN0OworaW1wb3J0IG9yZy5qdW5pdC5UZXN0OworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKKworcHVibGljIGNsYXNzIFRlc3RVc2VyT3JnYW5pc2F0aW9uIGV4dGVuZHMgQWJzdHJhY3RPcGVubWVldGluZ3NTcHJpbmdUZXN0IHsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBPcmdhbmlzYXRpb25NYW5hZ2VyIG9yZ01hbmFnZW1lbnQ7CisJQEF1dG93aXJlZAorCXByaXZhdGUgVXNlcnNEYW8gdXNlcnNEYW87CisJCisJcHJpdmF0ZSBVc2VyIGdldFZhbGlkVXNlcigpIHsKKwkJZm9yIChVc2VyIHUgOiB1c2Vyc0Rhby5nZXRBbGxVc2VycygpKSB7CisJCQlpZiAoIXUuZ2V0RGVsZXRlZCgpICYmIHUuZ2V0T3JnYW5pc2F0aW9uX3VzZXJzKCkuc2l6ZSgpID4gMCkgeworCQkJCXJldHVybiB1OworCQkJfQorCQl9CisJCWZhaWwoIlVuYWJsZSB0byBmaW5kIHZhbGlkIHVzZXIiKTsKKwkJcmV0dXJuIG51bGw7ICAvL3VucmVhY2hhYmxlCisJfQorCQorCUBUZXN0CisJcHVibGljIHZvaWQgZ2V0VXNlcnNCeU9yZ2FuaXNhdGlvbklkKCkgeworCQlVc2VyIHUgPSBnZXRWYWxpZFVzZXIoKTsKKwkJTG9uZyBvcmdJZCA9IHUuZ2V0T3JnYW5pc2F0aW9uX3VzZXJzKCkuZ2V0KDApLmdldE9yZ2FuaXNhdGlvbigpLmdldE9yZ2FuaXNhdGlvbl9pZCgpOworCQlMaXN0PFVzZXI+IHVsID0gb3JnTWFuYWdlbWVudC5nZXRVc2Vyc0J5T3JnYW5pc2F0aW9uSWQob3JnSWQsIDAsIDk5OTksICJsb2dpbiIsIHRydWUpOworCQlhc3NlcnRUcnVlKCJEZWZhdWx0IE9yZ2FuaXNhdGlvbiBzaG91bGQgY29udGFpbiBhdCBsZWFzdCAxIHVzZXI6ICIgKyB1bC5zaXplKCksIHVsLnNpemUoKSA+IDApOworCQkKKwkJT3JnYW5pc2F0aW9uX1VzZXJzIG91ID0gb3JnTWFuYWdlbWVudC5nZXRPcmdhbmlzYXRpb25fVXNlckJ5VXNlckFuZE9yZ2FuaXNhdGlvbih1LmdldFVzZXJfaWQoKSwgb3JnSWQpOworCQlhc3NlcnROb3ROdWxsKCJVbmFibGUgdG8gZm91bmQgW29yZ2FuaXNhdGlvbiwgdXNlcl0gcGFpciAtIFsiICsgb3JnSWQgKyAiLCIgKyB1LmdldFVzZXJfaWQoKSArICJdIiwgb3UpOworCX0KKwkKKwlAVGVzdAorCXB1YmxpYyB2b2lkIGFkZE9yZ2FuaXNhdGlvbigpIHsKKwkJTG9uZyBvcmdJZCA9IG9yZ01hbmFnZW1lbnQuYWRkT3JnYW5pc2F0aW9uKCJUZXN0IE9yZyIsIDEpOyAvL2luc2VydGVkIGJ5IG5vdCBjaGVja2VkCisJCWFzc2VydE5vdE51bGwoIk5ldyBPcmdhbmlzYXRpb24gaGF2ZSB2YWxpZCBpZCIsIG9yZ0lkKTsKKwkJCisJCUxpc3Q8VXNlcj4gdWwgPSBvcmdNYW5hZ2VtZW50LmdldFVzZXJzQnlPcmdhbmlzYXRpb25JZChvcmdJZCwgMCwgOTk5OSwgImxvZ2luIiwgdHJ1ZSk7CisJCWFzc2VydFRydWUoIk5ldyBPcmdhbmlzYXRpb24gc2hvdWxkIGNvbnRhaW4gTk8gdXNlcnM6ICIgKyB1bC5zaXplKCksIHVsLnNpemUoKSA9PSAwKTsKKwkJCisJCWJvb2xlYW4gZm91bmQgPSBmYWxzZTsKKwkJTGlzdDxPcmdhbmlzYXRpb24+IHJlc3RMID0gb3JnTWFuYWdlbWVudC5nZXRSZXN0T3JnYW5pc2F0aW9uc0J5VXNlcklkKDMsIDEsIDAsIDk5OTksICJuYW1lIiwgdHJ1ZSk7CisJCWZvciAoT3JnYW5pc2F0aW9uIG8gOiByZXN0TCkgeworCQkJaWYgKG9yZ0lkLmVxdWFscyhvLmdldE9yZ2FuaXNhdGlvbl9pZCgpKSkgeworCQkJCWZvdW5kID0gdHJ1ZTsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCQlhc3NlcnRUcnVlKCJOZXcgb3JnYW5pc2F0aW9uIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW50byBvcmdhbmlzYXRpb24gbGlzdCBvZiBhbnkgdXNlciIsIGZvdW5kKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC91c2VyZGF0YS9UZXN0QXV0aC5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvdXNlcmRhdGEvVGVzdEF1dGguamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZmUwNzYzCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QvdXNlcmRhdGEvVGVzdEF1dGguamF2YQpAQCAtMCwwICsxLDQ3IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnRlc3QudXNlcmRhdGE7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5TZXNzaW9uZGF0YTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5yZW1vdGUuTWFpblNlcnZpY2U7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudGVzdC5BYnN0cmFjdE9wZW5tZWV0aW5nc1NwcmluZ1Rlc3Q7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMuY3J5cHQuTWFuYWdlQ3J5cHRTdHlsZTsKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5BdXRvd2lyZWQ7CisKK3B1YmxpYyBjbGFzcyBUZXN0QXV0aCBleHRlbmRzIEFic3RyYWN0T3Blbm1lZXRpbmdzU3ByaW5nVGVzdCB7CisJQEF1dG93aXJlZAorCXByaXZhdGUgTWFuYWdlQ3J5cHRTdHlsZSBtYW5hZ2VDcnlwdFN0eWxlOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIE1haW5TZXJ2aWNlIG1TZXJ2aWNlOworCisJQFRlc3QKKwlwdWJsaWMgdm9pZCB0ZXN0VGVzdEF1dGgoKSB7CisJCVNlc3Npb25kYXRhIHNlc3Npb25EYXRhID0gbVNlcnZpY2UuZ2V0c2Vzc2lvbmRhdGEoKTsKKworCQlTeXN0ZW0ub3V0LnByaW50bG4oInNlc3Npb25EYXRhOiAiICsgc2Vzc2lvbkRhdGEuZ2V0U2Vzc2lvbl9pZCgpKTsKKworCQlTdHJpbmcgdFRlbXAgPSBtYW5hZ2VDcnlwdFN0eWxlLmdldEluc3RhbmNlT2ZDcnlwdCgpLmNyZWF0ZVBhc3NQaHJhc2UoCisJCQkJInRlc3QiKTsKKworCQlTeXN0ZW0ub3V0LnByaW50bG4oInRUZW1wOiAiICsgdFRlbXApOworCisJfQorCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC91c2VyZGF0YS9UZXN0TG9naW4uamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L3VzZXJkYXRhL1Rlc3RMb2dpbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjNjFkOGUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC91c2VyZGF0YS9UZXN0TG9naW4uamF2YQpAQCAtMCwwICsxLDUxIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnRlc3QudXNlcmRhdGE7CisKK2ltcG9ydCBzdGF0aWMgb3JnLmp1bml0LkFzc2VydC5hc3NlcnROb3ROdWxsOworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLlVzZXJNYW5hZ2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLlNlc3Npb25kYXRhOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuVXNlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5yZW1vdGUuTWFpblNlcnZpY2U7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudGVzdC5BYnN0cmFjdE9wZW5tZWV0aW5nc1NwcmluZ1Rlc3Q7CitpbXBvcnQgb3JnLmp1bml0LlRlc3Q7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uQXV0b3dpcmVkOworCitwdWJsaWMgY2xhc3MgVGVzdExvZ2luIGV4dGVuZHMgQWJzdHJhY3RPcGVubWVldGluZ3NTcHJpbmdUZXN0IHsKKwkKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBNYWluU2VydmljZSBtU2VydmljZTsKKwkKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBVc2VyTWFuYWdlciB1c2VyTWFuYWdlcjsKKworCUBUZXN0CisJcHVibGljIHZvaWQgdGVzdFRlc3RMb2dpbigpeworCQlTZXNzaW9uZGF0YSBzZXNzaW9uRGF0YSA9IG1TZXJ2aWNlLmdldHNlc3Npb25kYXRhKCk7CisJCQorCQlVc2VyIHVzID0gKFVzZXIpIHVzZXJNYW5hZ2VyLmxvZ2luVXNlcihzZXNzaW9uRGF0YS5nZXRTZXNzaW9uX2lkKCksIHVzZXJuYW1lLCB1c2VycGFzcywgbnVsbCwgbnVsbCwgZmFsc2UpOworCQkKKwkJYXNzZXJ0Tm90TnVsbCgiVXNlciBpcyB1bmFibGUgdG8gbG9naW4iLCB1cyk7CisJCQorCQkvL21TZXJ2aWNlLmdldExhbmd1YWdlQnlJZCgxKTsKKwkJCisJfQorCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC91c2VyZGF0YS9UZXN0TUQ1LmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdGVzdC91c2VyZGF0YS9UZXN0TUQ1LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQxZWUzZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L3VzZXJkYXRhL1Rlc3RNRDUuamF2YQpAQCAtMCwwICsxLDMyIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnRlc3QudXNlcmRhdGE7CisKK2ltcG9ydCBqdW5pdC5mcmFtZXdvcmsuVGVzdENhc2U7CisKK2ltcG9ydCBvcmcuanVuaXQuVGVzdDsKKworcHVibGljIGNsYXNzIFRlc3RNRDUgZXh0ZW5kcyBUZXN0Q2FzZSB7CisJCisJQFRlc3QKKwlwdWJsaWMgdm9pZCB0ZXN0VGVzdE1ENSgpeworCQkKKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L3hzZC9HZW5lcmF0ZUNvbmZpZ1hzZC5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3Rlc3QveHNkL0dlbmVyYXRlQ29uZmlnWHNkLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWVlZmI5OAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy90ZXN0L3hzZC9HZW5lcmF0ZUNvbmZpZ1hzZC5qYXZhCkBAIC0wLDAgKzEsNDYgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudGVzdC54c2Q7CisKK2ltcG9ydCBqYXZhLmlvLkZpbGU7CisKK2ltcG9ydCBjb20udGhhaW9wZW5zb3VyY2UucmVsYXhuZy50cmFuc2xhdGUuRHJpdmVyOworCitwdWJsaWMgY2xhc3MgR2VuZXJhdGVDb25maWdYc2QgeworCQorCXB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZy4uLiBhcmdzKSB7CisJCW5ldyBHZW5lcmF0ZUNvbmZpZ1hzZCgpOworCX0KKwkKKwlwdWJsaWMgR2VuZXJhdGVDb25maWdYc2QoKSB7CisJCXRyeSB7CisJCQkKKwkJCVN0cmluZ1tdIGFyZ3MgPSB7IAorCQkJCQkJIldlYkNvbnRlbnQiK0ZpbGUuc2VwYXJhdG9yQ2hhcisib3Blbm1lZXRpbmdzIitGaWxlLnNlcGFyYXRvckNoYXIrImNvbmZpZy54bWwiLAorCQkJCQkJIldlYkNvbnRlbnQiK0ZpbGUuc2VwYXJhdG9yQ2hhcisib3Blbm1lZXRpbmdzIitGaWxlLnNlcGFyYXRvckNoYXIrIm9wZW5tZWV0aW5ncy1jb25maWcueHNkIgorCQkJfTsKKwkJCQorCQkJRHJpdmVyLm1haW4oYXJncyk7CisJCQkKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworCQkJZXJyLnByaW50U3RhY2tUcmFjZSgpOworCQl9CisJfQorCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdXRpbHMvRGFvSGVscGVyLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdXRpbHMvRGFvSGVscGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmNlYTBlMQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy91dGlscy9EYW9IZWxwZXIuamF2YQpAQCAtMCwwICsxLDEwMyBAQAorLyoNCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICogdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlsczsNCisNCitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmxhbmcuU3RyaW5nVXRpbHM7DQorDQorcHVibGljIGNsYXNzIERhb0hlbHBlciB7DQorDQorCXB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldFNlYXJjaFF1ZXJ5KFN0cmluZyB0YWJsZSwgU3RyaW5nIGFsaWFzLCBTdHJpbmcgc2VhcmNoLCBib29sZWFuIGZpbHRlckRlbGV0ZWQsIGJvb2xlYW4gY291bnQsIFN0cmluZyBzb3J0LCBTdHJpbmcuLi4gZmllbGRzKSB7DQorCQlyZXR1cm4gZ2V0U2VhcmNoUXVlcnkodGFibGUsIGFsaWFzLCBzZWFyY2gsIGZpbHRlckRlbGV0ZWQsIGNvdW50LCBudWxsLCBzb3J0LCBmaWVsZHMpOw0KKwl9DQorCXB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldFNlYXJjaFF1ZXJ5KFN0cmluZyB0YWJsZSwgU3RyaW5nIGFsaWFzLCBTdHJpbmcgc2VhcmNoLCBib29sZWFuIGZpbHRlckRlbGV0ZWQsIGJvb2xlYW4gY291bnQsIFN0cmluZyBhZGRpdGlvbmFsV2hlcmUsIFN0cmluZyBzb3J0LCBTdHJpbmcuLi4gZmllbGRzKSB7DQorCQlTdHJpbmdCdWlsZGVyIHNiID0gbmV3IFN0cmluZ0J1aWxkZXIoIlNFTEVDVCAiKTsNCisJCWlmIChjb3VudCkgew0KKwkJCXNiLmFwcGVuZCgiQ09VTlQoIikuYXBwZW5kKGFsaWFzKS5hcHBlbmQoIikiKTsNCisJCX0gZWxzZSB7DQorCQkJc2IuYXBwZW5kKGFsaWFzKTsNCisJCX0NCisJCXNiLmFwcGVuZCgiIEZST00gIikuYXBwZW5kKHRhYmxlKS5hcHBlbmQoIiAiKS5hcHBlbmQoYWxpYXMpOw0KKwkJYm9vbGVhbiB3aGVyZUFkZGVkID0gZmFsc2U7DQorCQlpZiAoZmlsdGVyRGVsZXRlZCkgew0KKwkJCXdoZXJlQWRkZWQgPSB0cnVlOw0KKwkJCXNiLmFwcGVuZCgiIFdIRVJFICIpLmFwcGVuZChhbGlhcykuYXBwZW5kKCIuZGVsZXRlZCA9IGZhbHNlICIpOw0KKwkJfQ0KKwkJU3RyaW5nQnVpbGRlciB3aGVyZSA9IERhb0hlbHBlci5nZXRXaGVyZUNsYXVzZShzZWFyY2gsIGFsaWFzLCBmaWVsZHMpOw0KKwkJaWYgKHdoZXJlLmxlbmd0aCgpID4gMCkgew0KKwkJCWlmICghd2hlcmVBZGRlZCkgew0KKwkJCQl3aGVyZUFkZGVkID0gdHJ1ZTsNCisJCQkJc2IuYXBwZW5kKCIgV0hFUkUgIik7DQorCQkJfSBlbHNlIHsNCisJCQkJc2IuYXBwZW5kKCJBTkQgIik7DQorCQkJfQ0KKwkJCXNiLmFwcGVuZCh3aGVyZSk7DQorCQl9DQorCQlpZiAoYWRkaXRpb25hbFdoZXJlICE9IG51bGwgJiYgIWFkZGl0aW9uYWxXaGVyZS50cmltKCkuaXNFbXB0eSgpKSB7DQorCQkJaWYgKCF3aGVyZUFkZGVkKSB7DQorCQkJCXdoZXJlQWRkZWQgPSB0cnVlOw0KKwkJCQlzYi5hcHBlbmQoIiBXSEVSRSAiKTsNCisJCQl9IGVsc2Ugew0KKwkJCQlzYi5hcHBlbmQoIkFORCAiKTsNCisJCQl9DQorCQkJc2IuYXBwZW5kKGFkZGl0aW9uYWxXaGVyZSk7DQorCQl9DQorCQlpZiAoc29ydCAhPSBudWxsICYmICFzb3J0LnRyaW0oKS5pc0VtcHR5KCkpIHsNCisJCQlzYi5hcHBlbmQoIiBPUkRFUiBCWSAiKS5hcHBlbmQoYWxpYXMpLmFwcGVuZCgiLiIpLmFwcGVuZChzb3J0KTsNCisJCX0NCisJCXJldHVybiBzYi50b1N0cmluZygpOw0KKwl9DQorCQ0KKwlwdWJsaWMgc3RhdGljIFN0cmluZ0J1aWxkZXIgZ2V0V2hlcmVDbGF1c2UoU3RyaW5nIHNlYXJjaCwgU3RyaW5nIGFsaWFzLCBTdHJpbmcuLi4gZmllbGRzKSB7DQorCQlTdHJpbmdCdWlsZGVyIHNiID0gbmV3IFN0cmluZ0J1aWxkZXIoKTsNCisJCWdldFdoZXJlQ2xhdXNlKHNiLCBzZWFyY2gsIGFsaWFzLCBmaWVsZHMpOw0KKwkJcmV0dXJuIHNiOw0KKwl9DQorCQ0KKwlwdWJsaWMgc3RhdGljIHZvaWQgZ2V0V2hlcmVDbGF1c2UoU3RyaW5nQnVpbGRlciBzYiwgU3RyaW5nIHNlYXJjaCwgU3RyaW5nIGFsaWFzLCBTdHJpbmcuLi4gZmllbGRzKSB7DQorCQlpZiAoc2VhcmNoICE9IG51bGwpIHsNCisJCQlib29sZWFuIG5vdEVtcHR5ID0gZmFsc2U7DQorCQkJU3RyaW5nW10gc2VhcmNoSXRlbXMgPSBzZWFyY2guc3BsaXQoIiAiKTsNCisJCQlmb3IgKGludCBpID0gMDsgaSA8IHNlYXJjaEl0ZW1zLmxlbmd0aDsgKytpKSB7DQorCQkJCWlmIChzZWFyY2hJdGVtc1tpXS5pc0VtcHR5KCkpIHsNCisJCQkJCWNvbnRpbnVlOw0KKwkJCQl9DQorCQkJCWlmIChpID09IDApIHsNCisJCQkJCW5vdEVtcHR5ID0gdHJ1ZTsNCisJCQkJCXNiLmFwcGVuZCgiICgiKTsNCisJCQkJfSBlbHNlIHsNCisJCQkJCXNiLmFwcGVuZCgiIE9SICIpOw0KKwkJCQl9DQorCQkJCVN0cmluZ0J1aWxkZXIgcGxhY2Vob2xkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcigpOw0KKwkJCQlwbGFjZWhvbGRlci5hcHBlbmQoIiUiKS5hcHBlbmQoU3RyaW5nVXRpbHMubG93ZXJDYXNlKHNlYXJjaEl0ZW1zW2ldKSkuYXBwZW5kKCIlIik7DQorCQ0KKwkJCQlzYi5hcHBlbmQoIigiKTsNCisJCQkJZm9yIChpbnQgaiA9IDA7IGogPCBmaWVsZHMubGVuZ3RoOyArK2opIHsNCisJCQkJCWlmIChqICE9IDApIHsNCisJCQkJCQlzYi5hcHBlbmQoIiBPUiAiKTsNCisJCQkJCX0NCisJCQkJCXNiLmFwcGVuZCgibG93ZXIoIikuYXBwZW5kKGFsaWFzKS5hcHBlbmQoIi4iKS5hcHBlbmQoZmllbGRzW2pdKS5hcHBlbmQoIikgTElLRSAnIikuYXBwZW5kKHBsYWNlaG9sZGVyKS5hcHBlbmQoIicgIik7DQorCQkJCX0NCisJCQkJc2IuYXBwZW5kKCIpIik7DQorCQkJfQ0KKwkJCWlmIChub3RFbXB0eSkgew0KKwkJCQlzYi5hcHBlbmQoIikgIik7DQorCQkJfQ0KKwkJfQ0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy91dGlscy9JbXBvcnRIZWxwZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy91dGlscy9JbXBvcnRIZWxwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOWQ3OWUxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3V0aWxzL0ltcG9ydEhlbHBlci5qYXZhCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHM7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlua2VkSGFzaE1hcDsKK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsKK2ltcG9ydCBqYXZhLnV0aWwuTWFwOworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuZGFvLkNvbmZpZ3VyYXRpb25EYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuT21UaW1lWm9uZTsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CisKKy8qKgorICogCisgKiBHZXQgc29tZSBvZiB0aGUgZGVmYXVsdCB2YWx1ZXMgZm9yIHRoZSB1cGxvYWQKKyAqIAorICogQGF1dGhvciBzb2xvbWF4LCBzd2FnbmVyCisgKiAKKyAqLworcHVibGljIGNsYXNzIEltcG9ydEhlbHBlciB7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcigKKwkJCUltcG9ydEhlbHBlci5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCXB1YmxpYyBzdGF0aWMgZmluYWwgbG9uZyBERUZBVUxUX01BWF9VUExPQURfU0laRSA9IDEwMjQgKiAxMDI0ICogMTAyNDsgLy8gMUdCCisKKwkvKioKKwkgKiByZXR1cm5zIHRoZSBtYXggdXBsb2FkIHNpemUgY29uZmlndXJlZCBieSBtYXhfdXBsb2FkX3NpemUgY29uZmlnIGtleQorCSAqIAorCSAqIEBwYXJhbSBjb25maWd1cmF0aW9uRGFvCisJICogQHJldHVybgorCSAqLworCXB1YmxpYyBzdGF0aWMgZmluYWwgbG9uZyBnZXRNYXhVcGxvYWRTaXplKAorCQkJQ29uZmlndXJhdGlvbkRhbyBjb25maWd1cmF0aW9uRGFvKSB7CisJCXRyeSB7CisJCQlyZXR1cm4gY29uZmlndXJhdGlvbkRhby5nZXRDb25mVmFsdWUoIm1heF91cGxvYWRfc2l6ZSIsCisJCQkJCUxvbmcuY2xhc3MsICIiICsgREVGQVVMVF9NQVhfVVBMT0FEX1NJWkUpOworCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJbG9nLmVycm9yKCJJbnZhbGlkIHZhbHVlIHNhdmVkIGZvciBtYXhfdXBsb2FkX3NpemUgY29uZiBrZXk6ICIsIGUpOworCQl9CisJCXJldHVybiBERUZBVUxUX01BWF9VUExPQURfU0laRTsKKwl9CisKKwkvKioKKwkgKiByZXR1cm5zIGEgbGlzdCBvZiBhbGwgdGltZXpvbmVzIGFzIGEge0BsaW5rIE1hcH0KKwkgKiAKKwkgKiBAcGFyYW0gdHpMaXN0CisJICogQHJldHVybgorCSAqLworCXB1YmxpYyBzdGF0aWMgTWFwPFN0cmluZywgU3RyaW5nPiBnZXRBbGxUaW1lWm9uZXMoTGlzdDxPbVRpbWVab25lPiB0ekxpc3QpIHsKKwkJTWFwPFN0cmluZywgU3RyaW5nPiByZXN1bHQgPSBuZXcgTGlua2VkSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4oKTsKKworCQlmb3IgKE9tVGltZVpvbmUgb21UaW1lWm9uZSA6IHR6TGlzdCkgeworCQkJU3RyaW5nIGxhYmVsTmFtZSA9IG9tVGltZVpvbmUuZ2V0TGFiZWwoKSArICIgKCIKKwkJCQkJKyBvbVRpbWVab25lLmdldEpuYW1lKCkgKyAiKSI7CisJCQlyZXN1bHQucHV0KG9tVGltZVpvbmUuZ2V0SWNhbCgpLCBsYWJlbE5hbWUpOworCQl9CisKKwkJcmV0dXJuIHJlc3VsdDsKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdXRpbHMvTG9nZ2VyLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdXRpbHMvTG9nZ2VyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODNlM2NiMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy91dGlscy9Mb2dnZXIuamF2YQpAQCAtMCwwICsxLDQ5IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzOworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CisKK3B1YmxpYyBjbGFzcyBMb2dnZXIgeworICAgIHByaXZhdGUgb3JnLnNsZjRqLkxvZ2dlciBsb2c7CisKKyAgICBwdWJsaWMgTG9nZ2VyKCkgeworICAgICAgICBTdGFja1RyYWNlRWxlbWVudCBzdGUgPSBUaHJlYWQuY3VycmVudFRocmVhZCgpLmdldFN0YWNrVHJhY2UoKVsxXTsKKyAgICAgICAgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKHN0ZS5nZXRDbGFzcygpLAorICAgICAgICAJCU9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBTdHJpbmcgZ2V0TWV0aG9kTWVzc2FnZSgpIHsKKyAgICAgICAgU3RhY2tUcmFjZUVsZW1lbnQgc3RlID0gVGhyZWFkLmN1cnJlbnRUaHJlYWQoKS5nZXRTdGFja1RyYWNlKClbMl07CisgICAgICAgIHJldHVybiAiSW4gdGhlIG1ldGhvZCAiICsgc3RlLmdldE1ldGhvZE5hbWUoKTsKKyAgICB9CisKKyAgICBwdWJsaWMgdm9pZCBkZWJ1ZyhTdHJpbmcgcywgT2JqZWN0IG8pIHsKKyAgICAgICAgbG9nLmRlYnVnKHMsIG8pOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGRlYnVnKE9iamVjdCBvKSB7CisgICAgICAgIGxvZy5kZWJ1ZyhnZXRNZXRob2RNZXNzYWdlKCksIG8pOworICAgIH0KKworICAgIHB1YmxpYyB2b2lkIGVycm9yKE9iamVjdCBvKSB7CisgICAgICAgIGxvZy5lcnJvcihnZXRNZXRob2RNZXNzYWdlKCksIG8pOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy91dGlscy9PTUNvbnRleHRMaXN0ZW5lci5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3V0aWxzL09NQ29udGV4dExpc3RlbmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg2N2RhZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy91dGlscy9PTUNvbnRleHRMaXN0ZW5lci5qYXZhCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHM7CisKK2ltcG9ydCBqYXZheC5zZXJ2bGV0LlNlcnZsZXRDb250ZXh0RXZlbnQ7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5Db250ZXh0TG9nZ2luZ0xpc3RlbmVyOworCitwdWJsaWMgY2xhc3MgT01Db250ZXh0TGlzdGVuZXIgZXh0ZW5kcyBDb250ZXh0TG9nZ2luZ0xpc3RlbmVyIHsKKwkKKwlwdWJsaWMgdm9pZCBjb250ZXh0RGVzdHJveWVkKFNlcnZsZXRDb250ZXh0RXZlbnQgZXZlbnQpIHsKKwkJc3VwZXIuY29udGV4dERlc3Ryb3llZChldmVudCk7CisJfQorCisJcHVibGljIHZvaWQgY29udGV4dEluaXRpYWxpemVkKFNlcnZsZXRDb250ZXh0RXZlbnQgZXZlbnQpIHsKKwkJT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkgPSBwYXRoVG9OYW1lKGV2ZW50KTsKKwkJT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RQYXRoID0gIi8iICsgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXk7CisJCVN5c3RlbS5zZXRQcm9wZXJ0eSgiY3VycmVudF9vcGVubWVldGluZ3NfY29udGV4dF9uYW1lIiwgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCQlTeXN0ZW0uc2V0UHJvcGVydHkoIndlYmFwcC5jb250ZXh0UGF0aCIsIE9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290UGF0aCk7CisJCVN5c3RlbS5zZXRQcm9wZXJ0eSgibG9nYmFjay5jb25maWd1cmF0aW9uRmlsZSIsICJsb2diYWNrLWNvbmZpZy54bWwiKTsKKwkJc3VwZXIuY29udGV4dEluaXRpYWxpemVkKGV2ZW50KTsKKwl9CisKKwlwcml2YXRlIFN0cmluZyBwYXRoVG9OYW1lKFNlcnZsZXRDb250ZXh0RXZlbnQgZXZlbnQpIHsKKwkJU3RyaW5nIGNvbnRleHROYW1lID0gZXZlbnQuZ2V0U2VydmxldENvbnRleHQoKS5nZXRDb250ZXh0UGF0aCgpLnJlcGxhY2VBbGwoIi8iLCAiIik7CisJCWlmICgiIi5lcXVhbHMoY29udGV4dE5hbWUpKSB7CisJCQljb250ZXh0TmFtZSA9ICJyb290IjsKKwkJfQorCQlyZXR1cm4gY29udGV4dE5hbWU7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3V0aWxzL09tRmlsZUhlbHBlci5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3V0aWxzL09tRmlsZUhlbHBlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk5MWFkZDEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdXRpbHMvT21GaWxlSGVscGVyLmphdmEKQEAgLTAsMCArMSwyODEgQEAKKy8qDQorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAqIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHM7DQorDQoraW1wb3J0IGphdmEuaW8uRmlsZTsNCitpbXBvcnQgamF2YS5pby5GaWxlSW5wdXRTdHJlYW07DQoraW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247DQoraW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07DQoraW1wb3J0IGphdmEuaW8uT3V0cHV0U3RyZWFtOw0KK2ltcG9ydCBqYXZhLnRleHQuRGVjaW1hbEZvcm1hdDsNCisNCitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLnRyYW5zYWN0aW9uLnV0aWwuRmlsZUhlbHBlcjsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOw0KK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5Ow0KK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOw0KKw0KK3B1YmxpYyBjbGFzcyBPbUZpbGVIZWxwZXIgew0KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKE9tRmlsZUhlbHBlci5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOw0KKw0KKwlwcml2YXRlIHN0YXRpYyBGaWxlIE9NX0hPTUUgPSBudWxsOw0KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVVBMT0FEX0RJUiA9ICJ1cGxvYWQiOw0KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgVVBMT0FEX1RFTVBfRElSID0gInVwbG9hZHRlbXAiOw0KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgRklMRVNfRElSID0gImZpbGVzIjsNCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFBVQkxJQ19ESVIgPSAicHVibGljIjsNCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIENMSVBBUlRTX0RJUiA9ICJjbGlwYXJ0cyI7DQorCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBXRUJfSU5GX0RJUiA9ICJXRUItSU5GIjsNCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFBST0ZJTEVTX0RJUiA9ICJwcm9maWxlcyI7DQorCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBTVFJFQU1TX0RJUiA9ICJzdHJlYW1zIjsNCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIEVNT1RJT05TX0RJUiA9ICJlbW90aWNvbnMiOw0KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgTEFOR1VBR0VTX0RJUiA9ICJsYW5ndWFnZXMiOw0KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgSU1QT1JUX0RJUiA9ICJpbXBvcnQiOw0KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgSElCRVJOQVRFX0RJUiA9ICJoaWJlcm5hdGUiOw0KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmcgQ09ORl9ESVIgPSAiY29uZiI7DQorCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBCQUNLVVBfRElSID0gImJhY2t1cCI7DQorCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBERUZBVUxUX0RJUiA9ICJkZWZhdWx0IjsNCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIFdNTF9ESVIgPSAic3RvcmVkIjsNCisJDQorCXByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBJTlNUQUxMX0ZJTEUgPSAiaW5zdGFsbC54bWwiOw0KKwkNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgU0NSRUVOU0hBUklOR19ESVIgPSAic2NyZWVuc2hhcmluZyI7DQorCQ0KKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBwcm9maWxlc1ByZWZpeCA9ICJwcm9maWxlXyI7DQorCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIG5hbWVPZkxhbmd1YWdlRmlsZSA9ICJsYW5ndWFnZXMueG1sIjsNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgbmFtZU9mQ291bnRyaWVzRmlsZSA9ICJjb3VudHJpZXMueG1sIjsNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgbmFtZU9mVGltZVpvbmVGaWxlID0gInRpbWV6b25lcy54bWwiOw0KKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBuYW1lT2ZFcnJvckZpbGUgPSAiZXJyb3J2YWx1ZXMueG1sIjsNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgbGlicmFyeUZpbGVOYW1lID0gImxpYnJhcnkueG1sIjsNCisNCisJcHVibGljIHN0YXRpYyB2b2lkIHNldE9tSG9tZShGaWxlIG9tSG9tZSkgew0KKwkJT21GaWxlSGVscGVyLk9NX0hPTUUgPSBvbUhvbWU7DQorCX0NCisJDQorCXB1YmxpYyBzdGF0aWMgdm9pZCBzZXRPbUhvbWUoU3RyaW5nIG9tSG9tZSkgew0KKwkJT21GaWxlSGVscGVyLk9NX0hPTUUgPSBuZXcgRmlsZShvbUhvbWUpOw0KKwl9DQorCQ0KKwlwdWJsaWMgc3RhdGljIEZpbGUgZ2V0Um9vdERpcigpIHsNCisJCS8vRklYTUUgaGFjayAhISEhDQorCQlyZXR1cm4gZ2V0T21Ib21lKCkuZ2V0UGFyZW50RmlsZSgpLmdldFBhcmVudEZpbGUoKTsNCisJfQ0KKwkNCisJcHVibGljIHN0YXRpYyBGaWxlIGdldE9tSG9tZSgpIHsNCisJCXJldHVybiBPbUZpbGVIZWxwZXIuT01fSE9NRTsNCisJfQ0KKwkNCisJcHJpdmF0ZSBzdGF0aWMgRmlsZSBnZXREaXIoRmlsZSBwYXJlbnQsIFN0cmluZyBuYW1lKSB7DQorCQlGaWxlIGYgPSBuZXcgRmlsZShwYXJlbnQsIG5hbWUpOw0KKwkJaWYgKCFmLmV4aXN0cygpKSB7DQorCQkJZi5ta2RpcigpOw0KKwkJfQ0KKwkJcmV0dXJuIGY7DQorCX0NCisJDQorCXB1YmxpYyBzdGF0aWMgRmlsZSBnZXRVcGxvYWREaXIoKSB7DQorCQlyZXR1cm4gbmV3IEZpbGUoT21GaWxlSGVscGVyLk9NX0hPTUUsIFVQTE9BRF9ESVIpOw0KKwl9DQorCQ0KKwlwdWJsaWMgc3RhdGljIEZpbGUgZ2V0VXBsb2FkRmlsZXNEaXIoKSB7DQorCQlyZXR1cm4gZ2V0RGlyKGdldFVwbG9hZERpcigpLCBGSUxFU19ESVIpOw0KKwl9DQorCQ0KKwlwdWJsaWMgc3RhdGljIEZpbGUgZ2V0VXBsb2FkUHJvZmlsZXNEaXIoKSB7DQorCQlyZXR1cm4gZ2V0RGlyKGdldFVwbG9hZERpcigpLCBQUk9GSUxFU19ESVIpOw0KKwl9DQorCQ0KKwlwdWJsaWMgc3RhdGljIEZpbGUgZ2V0VXBsb2FkUHJvZmlsZXNVc2VyRGlyKExvbmcgdXNlcnNfaWQpIHsNCisJCXJldHVybiBnZXREaXIoZ2V0VXBsb2FkUHJvZmlsZXNEaXIoKSwgT21GaWxlSGVscGVyLnByb2ZpbGVzUHJlZml4ICsgdXNlcnNfaWQpOw0KKwl9DQorCQ0KKwlwdWJsaWMgc3RhdGljIEZpbGUgZ2V0VXBsb2FkUHJvZmlsZXNVc2VyRGlyKFN0cmluZyB1c2Vyc19pZCkgew0KKwkJcmV0dXJuIGdldERpcihnZXRVcGxvYWRQcm9maWxlc0RpcigpLCBPbUZpbGVIZWxwZXIucHJvZmlsZXNQcmVmaXggKyB1c2Vyc19pZCk7DQorCX0NCisJDQorCXB1YmxpYyBzdGF0aWMgRmlsZSBnZXRVcGxvYWRJbXBvcnREaXIoKSB7DQorCQlyZXR1cm4gZ2V0RGlyKGdldFVwbG9hZERpcigpLCBJTVBPUlRfRElSKTsNCisJfQ0KKwkNCisJcHVibGljIHN0YXRpYyBGaWxlIGdldFVwbG9hZEJhY2t1cERpcigpIHsNCisJCXJldHVybiBnZXREaXIoZ2V0VXBsb2FkRGlyKCksIEJBQ0tVUF9ESVIpOw0KKwl9DQorCQ0KKwlwdWJsaWMgc3RhdGljIEZpbGUgZ2V0VXBsb2FkUm9vbURpcihTdHJpbmcgcm9vbU5hbWUpIHsNCisJCXJldHVybiBnZXREaXIoZ2V0VXBsb2FkRGlyKCksIHJvb21OYW1lKTsNCisJfQ0KKwkNCisJcHVibGljIHN0YXRpYyBGaWxlIGdldFVwbG9hZFdtbERpcigpIHsNCisJCXJldHVybiBnZXREaXIoZ2V0VXBsb2FkRGlyKCksIFdNTF9ESVIpOw0KKwl9DQorCQ0KKwlwdWJsaWMgc3RhdGljIEZpbGUgZ2V0VXBsb2FkVGVtcERpcigpIHsNCisJCXJldHVybiBuZXcgRmlsZShPbUZpbGVIZWxwZXIuT01fSE9NRSwgVVBMT0FEX1RFTVBfRElSKTsNCisJfQ0KKwkNCisJcHVibGljIHN0YXRpYyBGaWxlIGdldFVwbG9hZFRlbXBGaWxlc0RpcigpIHsNCisJCXJldHVybiBnZXREaXIoZ2V0VXBsb2FkVGVtcERpcigpLCBGSUxFU19ESVIpOw0KKwl9DQorCQ0KKwlwdWJsaWMgc3RhdGljIEZpbGUgZ2V0VXBsb2FkVGVtcFByb2ZpbGVzRGlyKCkgew0KKwkJcmV0dXJuIGdldERpcihnZXRVcGxvYWRUZW1wRGlyKCksIFBST0ZJTEVTX0RJUik7DQorCX0NCisJDQorCXB1YmxpYyBzdGF0aWMgRmlsZSBnZXRVcGxvYWRUZW1wUHJvZmlsZXNVc2VyRGlyKExvbmcgdXNlcnNfaWQpIHsNCisJCXJldHVybiBnZXREaXIoZ2V0VXBsb2FkVGVtcFByb2ZpbGVzRGlyKCksIE9tRmlsZUhlbHBlci5wcm9maWxlc1ByZWZpeCArIHVzZXJzX2lkKTsNCisJfQ0KKwkNCisJcHVibGljIHN0YXRpYyBGaWxlIGdldFVwbG9hZFRlbXBSb29tRGlyKFN0cmluZyByb29tTmFtZSkgew0KKwkJcmV0dXJuIGdldERpcihnZXRVcGxvYWRUZW1wRGlyKCksIHJvb21OYW1lKTsNCisJfQ0KKwkNCisJcHVibGljIHN0YXRpYyBGaWxlIGdldFN0cmVhbXNEaXIoKSB7DQorCQlyZXR1cm4gbmV3IEZpbGUoT21GaWxlSGVscGVyLk9NX0hPTUUsIFNUUkVBTVNfRElSKTsNCisJfQ0KKwkNCisJcHVibGljIHN0YXRpYyBGaWxlIGdldFN0cmVhbXNIaWJlcm5hdGVEaXIoKSB7DQorCQlyZXR1cm4gZ2V0RGlyKGdldFN0cmVhbXNEaXIoKSwgSElCRVJOQVRFX0RJUik7DQorCX0NCisJDQorCXB1YmxpYyBzdGF0aWMgRmlsZSBnZXRTdHJlYW1zU3ViRGlyKExvbmcgaWQpIHsNCisJCXJldHVybiBnZXREaXIoZ2V0U3RyZWFtc0RpcigpLCBpZC50b1N0cmluZygpKTsNCisJfQ0KKwkNCisJcHVibGljIHN0YXRpYyBGaWxlIGdldFN0cmVhbXNTdWJEaXIoU3RyaW5nIG5hbWUpIHsNCisJCXJldHVybiBnZXREaXIoZ2V0U3RyZWFtc0RpcigpLCBuYW1lKTsNCisJfQ0KKwkNCisJcHVibGljIHN0YXRpYyBGaWxlIGdldExhbmd1YWdlc0RpcigpIHsNCisJCXJldHVybiBuZXcgRmlsZShPbUZpbGVIZWxwZXIuT01fSE9NRSwgTEFOR1VBR0VTX0RJUik7DQorCX0NCisJDQorCXB1YmxpYyBzdGF0aWMgRmlsZSBnZXRQdWJsaWNEaXIoKSB7DQorCQlyZXR1cm4gbmV3IEZpbGUoT21GaWxlSGVscGVyLk9NX0hPTUUsIFBVQkxJQ19ESVIpOw0KKwl9DQorCQ0KKwlwdWJsaWMgc3RhdGljIEZpbGUgZ2V0UHVibGljQ2xpcGFydHNEaXIoKSB7DQorCQlyZXR1cm4gbmV3IEZpbGUoZ2V0UHVibGljRGlyKCksIENMSVBBUlRTX0RJUik7DQorCX0NCisJDQorCXB1YmxpYyBzdGF0aWMgRmlsZSBnZXRQdWJsaWNFbW90aW9uc0RpcigpIHsNCisJCXJldHVybiBuZXcgRmlsZShnZXRQdWJsaWNEaXIoKSwgRU1PVElPTlNfRElSKTsNCisJfQ0KKwkNCisJcHVibGljIHN0YXRpYyBGaWxlIGdldFdlYmluZkRpcigpIHsNCisJCXJldHVybiBuZXcgRmlsZShPbUZpbGVIZWxwZXIuT01fSE9NRSwgV0VCX0lORl9ESVIpOw0KKwl9DQorCQ0KKwlwdWJsaWMgc3RhdGljIEZpbGUgZ2V0Q29uZkRpcigpIHsNCisJCXJldHVybiBuZXcgRmlsZShPbUZpbGVIZWxwZXIuT01fSE9NRSwgQ09ORl9ESVIpOw0KKwl9DQorCQ0KKwlwdWJsaWMgc3RhdGljIEZpbGUgZ2V0SW5zdGFsbEZpbGUoKSB7DQorCQlyZXR1cm4gbmV3IEZpbGUoZ2V0Q29uZkRpcigpLCBJTlNUQUxMX0ZJTEUpOw0KKwl9DQorCQ0KKwlwdWJsaWMgc3RhdGljIEZpbGUgZ2V0U2NyZWVuU2hhcmluZ0RpcigpIHsNCisJCXJldHVybiBuZXcgRmlsZShPbUZpbGVIZWxwZXIuT01fSE9NRSwgU0NSRUVOU0hBUklOR19ESVIpOw0KKwl9DQorDQorCXB1YmxpYyBzdGF0aWMgRmlsZSBnZXREZWZhdWx0RGlyKCkgew0KKwkJcmV0dXJuIG5ldyBGaWxlKE9tRmlsZUhlbHBlci5PTV9IT01FLCBERUZBVUxUX0RJUik7DQorCX0NCisJDQorCXB1YmxpYyBzdGF0aWMgRmlsZSBhcHBlbmRTdWZmaXgoRmlsZSBvcmlnaW5hbCwgU3RyaW5nIHN1ZmZpeCkgew0KKwkJRmlsZSBwYXJlbnQgPSBvcmlnaW5hbC5nZXRQYXJlbnRGaWxlKCk7DQorCQlTdHJpbmcgbmFtZSA9IG9yaWdpbmFsLmdldE5hbWUoKTsNCisJCVN0cmluZyBleHQgPSAiIjsNCisJCWludCBpZHggPSBuYW1lLmxhc3RJbmRleE9mKCcuJyk7DQorCQlpZiAoaWR4ID4gLTEpIHsNCisJCQluYW1lID0gbmFtZS5zdWJzdHJpbmcoMCwgaWR4KTsNCisJCQlleHQgPSBuYW1lLnN1YnN0cmluZyhpZHgpOw0KKwkJfQ0KKwkJcmV0dXJuIG5ldyBGaWxlKHBhcmVudCwgbmFtZSArIHN1ZmZpeCArIGV4dCk7DQorCX0NCisJDQorCS8vRklYTUUgbmVlZCB0byBiZSBnZW5lcmFsaXplZA0KKwlwdWJsaWMgc3RhdGljIEZpbGUgZ2V0TmV3RmlsZShGaWxlIGRpciwgU3RyaW5nIG5hbWUsIFN0cmluZyBleHQpIHRocm93cyBJT0V4Y2VwdGlvbiB7DQorCQlGaWxlIGYgPSBuZXcgRmlsZShkaXIsIG5hbWUgKyBleHQpOw0KKwkJaW50IHJlY3Vyc2l2ZU51bWJlciA9IDA7DQorCQl3aGlsZSAoZi5leGlzdHMoKSkgew0KKwkJCWYgPSBuZXcgRmlsZShkaXIsIG5hbWUgKyAiXyIgKyAocmVjdXJzaXZlTnVtYmVyKyspICsgZXh0KTsNCisJCX0NCisJCWYuY3JlYXRlTmV3RmlsZSgpOw0KKwkJcmV0dXJuIGY7DQorCX0NCisJDQorCXB1YmxpYyBzdGF0aWMgRmlsZSBnZXROZXdEaXIoRmlsZSBkaXIsIFN0cmluZyBuYW1lKSB0aHJvd3MgSU9FeGNlcHRpb24gew0KKwkJRmlsZSBmID0gbmV3IEZpbGUoZGlyLCBuYW1lKTsNCisJCVN0cmluZyBiYXNlTmFtZSA9IGYuZ2V0Q2Fub25pY2FsUGF0aCgpOw0KKw0KKwkJaW50IHJlY3Vyc2l2ZU51bWJlciA9IDA7DQorCQl3aGlsZSAoZi5leGlzdHMoKSkgew0KKwkJCWYgPSBuZXcgRmlsZShiYXNlTmFtZSArICJfIiArIChyZWN1cnNpdmVOdW1iZXIrKykpOw0KKwkJfQ0KKwkJZi5ta2RpcigpOw0KKwkJcmV0dXJuIGY7DQorCX0NCisJDQorCXB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldEh1bWFuU2l6ZShGaWxlIGRpcikgew0KKwkJcmV0dXJuIGdldEh1bWFuU2l6ZShnZXRTaXplKGRpcikpOw0KKwl9DQorCQ0KKwlwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRIdW1hblNpemUobG9uZyBzaXplKSB7DQorCQlpZihzaXplIDw9IDApIHJldHVybiAiMCI7DQorCQlmaW5hbCBTdHJpbmdbXSB1bml0cyA9IG5ldyBTdHJpbmdbXSB7ICJCIiwgIktCIiwgIk1CIiwgIkdCIiwgIlRCIiB9Ow0KKwkJaW50IGRpZ2l0R3JvdXBzID0gKGludCkgKE1hdGgubG9nMTAoc2l6ZSkvTWF0aC5sb2cxMCgxMDI0KSk7DQorCQlyZXR1cm4gbmV3IERlY2ltYWxGb3JtYXQoIiMsIyMwLiMiKS5mb3JtYXQoc2l6ZS9NYXRoLnBvdygxMDI0LCBkaWdpdEdyb3VwcykpICsgIiAiICsgdW5pdHNbZGlnaXRHcm91cHNdOw0KKwl9DQorDQorCXB1YmxpYyBzdGF0aWMgbG9uZyBnZXRTaXplKEZpbGUgZGlyKSB7DQorCQlsb25nIHNpemUgPSAwOw0KKwkJaWYgKGRpci5pc0ZpbGUoKSkgew0KKwkJCXNpemUgPSBkaXIubGVuZ3RoKCk7DQorCQl9IGVsc2Ugew0KKwkJCUZpbGVbXSBzdWJGaWxlcyA9IGRpci5saXN0RmlsZXMoKTsNCisJDQorCQkJZm9yIChGaWxlIGZpbGUgOiBzdWJGaWxlcykgew0KKwkJCQlpZiAoZmlsZS5pc0ZpbGUoKSkgew0KKwkJCQkJc2l6ZSArPSBmaWxlLmxlbmd0aCgpOw0KKwkJCQl9IGVsc2Ugew0KKwkJCQkJc2l6ZSArPSBnZXRTaXplKGZpbGUpOw0KKwkJCQl9DQorCQ0KKwkJCX0NCisJCX0NCisJCXJldHVybiBzaXplOw0KKwl9DQorDQorCXB1YmxpYyBzdGF0aWMgdm9pZCBjb3B5RmlsZShTdHJpbmcgc291cmNlRmlsZSwgU3RyaW5nIHRhcmdldEZpbGUpIHRocm93cyBJT0V4Y2VwdGlvbiB7DQorCQlGaWxlSGVscGVyLmNvcHkobmV3IEZpbGUoc291cmNlRmlsZSksIG5ldyBGaWxlKHRhcmdldEZpbGUpKTsNCisJfQ0KKwkNCisJcHVibGljIHN0YXRpYyB2b2lkIGNvcHlGaWxlKEZpbGUgZjEsIE91dHB1dFN0cmVhbSBvdXQpIHRocm93cyBJT0V4Y2VwdGlvbiB7DQorCQlJbnB1dFN0cmVhbSBpbiA9IG51bGw7DQorCQl0cnkgew0KKwkJCWluID0gbmV3IEZpbGVJbnB1dFN0cmVhbShmMSk7DQorCQkJRmlsZUhlbHBlci5jb3B5KGluLCBvdXQpOw0KKwkJCWxvZy5kZWJ1ZygiRmlsZSBjb3BpZWQuIik7DQorCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgew0KKwkJCWxvZy5lcnJvcigiW2NvcHlmaWxlKEZpbGUsIEZpbGUpXSIsIGUpOw0KKwkJfSBmaW5hbGx5IHsNCisJCQlpZiAoaW4gIT0gbnVsbCkgew0KKwkJCQlpbi5jbG9zZSgpOw0KKwkJCX0NCisJCX0NCisJfQ0KK30NCmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdXRpbHMvUHJvY2Vzc0hlbHBlci5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3V0aWxzL1Byb2Nlc3NIZWxwZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDk5ZWY2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3V0aWxzL1Byb2Nlc3NIZWxwZXIuamF2YQpAQCAtMCwwICsxLDE3NyBAQAorLyoNCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICogdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlsczsNCisNCitpbXBvcnQgamF2YS5pby5CdWZmZXJlZFJlYWRlcjsNCitpbXBvcnQgamF2YS5pby5JT0V4Y2VwdGlvbjsNCitpbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbTsNCitpbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbVJlYWRlcjsNCitpbXBvcnQgamF2YS5pby5VbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uOw0KK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOw0KK2ltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsNCitpbXBvcnQgamF2YS51dGlsLk1hcDsNCitpbXBvcnQgamF2YS51dGlsLmNvbmN1cnJlbnQuVGltZW91dEV4Y2VwdGlvbjsNCisNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kb2N1bWVudHMuYmVhbnMuQ29udmVydGVyUHJvY2Vzc1Jlc3VsdDsNCitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsNCitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsNCisNCitwdWJsaWMgY2xhc3MgUHJvY2Vzc0hlbHBlciB7DQorCXB1YmxpYyBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcihQcm9jZXNzSGVscGVyLmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7DQorDQorCXByaXZhdGUgc3RhdGljIGNsYXNzIFdvcmtlciBleHRlbmRzIFRocmVhZCB7DQorCQlwcml2YXRlIGZpbmFsIFByb2Nlc3MgcHJvY2VzczsNCisJCXByaXZhdGUgSW50ZWdlciBleGl0Q29kZTsNCisJDQorCQlwcml2YXRlIFdvcmtlcihQcm9jZXNzIHByb2Nlc3MpIHsNCisJCQl0aGlzLnByb2Nlc3MgPSBwcm9jZXNzOw0KKwkJfQ0KKwkNCisJCUBPdmVycmlkZQ0KKwkJcHVibGljIHZvaWQgcnVuKCkgew0KKwkJCXRyeSB7DQorCQkJCWV4aXRDb2RlID0gcHJvY2Vzcy53YWl0Rm9yKCk7DQorCQkJfSBjYXRjaCAoSW50ZXJydXB0ZWRFeGNlcHRpb24gaWdub3JlKSB7DQorCQkJCXJldHVybjsNCisJCQl9DQorCQl9DQorCX0NCisNCisJcHJpdmF0ZSBzdGF0aWMgY2xhc3MgU3RyZWFtV2F0Y2hlciBleHRlbmRzIFRocmVhZCB7DQorCQlwdWJsaWMgU3RyaW5nQnVpbGRlciBvdXRwdXQ7DQorCQlwcml2YXRlIGZpbmFsIElucHV0U3RyZWFtIGlzOw0KKwkJcHJpdmF0ZSBmaW5hbCBCdWZmZXJlZFJlYWRlciBicjsNCisJDQorCQlwcml2YXRlIFN0cmVhbVdhdGNoZXIoUHJvY2VzcyBwcm9jZXNzLCBib29sZWFuIGlzRXJyb3IpIHRocm93cyBVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIHsNCisJCQlvdXRwdXQgPSBuZXcgU3RyaW5nQnVpbGRlcigpOw0KKwkJCWlzID0gaXNFcnJvciA/IHByb2Nlc3MuZ2V0RXJyb3JTdHJlYW0oKSA6IHByb2Nlc3MuZ2V0SW5wdXRTdHJlYW0oKTsNCisJCQliciA9IG5ldyBCdWZmZXJlZFJlYWRlcihuZXcgSW5wdXRTdHJlYW1SZWFkZXIoaXMsICJVVEYtOCIpKTsNCisJCX0NCisJDQorCQlAT3ZlcnJpZGUNCisJCXB1YmxpYyB2b2lkIHJ1bigpIHsNCisJCQl0cnkgew0KKwkJCQlTdHJpbmcgbGluZSA9IGJyLnJlYWRMaW5lKCk7DQorCQkJCXdoaWxlIChsaW5lICE9IG51bGwpIHsNCisJCQkJCW91dHB1dC5hcHBlbmQobGluZSkuYXBwZW5kKCdcbicpOw0KKwkJCQkJbGluZSA9IGJyLnJlYWRMaW5lKCk7DQorCQkJCX0NCisJCQl9IGNhdGNoIChJT0V4Y2VwdGlvbiBpb2V4Y2VwdGlvbikgew0KKwkJCQlsb2cuZXJyb3IoIltydW5dIiwgaW9leGNlcHRpb24pOw0KKwkJCQlyZXR1cm47DQorCQkJfQ0KKwkJfQ0KKwl9DQorDQorCXB1YmxpYyBzdGF0aWMgQ29udmVydGVyUHJvY2Vzc1Jlc3VsdCBleGVjdXRlU2NyaXB0V2luZG93cyhTdHJpbmcgcHJvY2VzcywgU3RyaW5nW10gYXJndikgew0KKwkJdHJ5IHsNCisJCQlTdHJpbmdbXSBjbWQgPSBuZXcgU3RyaW5nW2FyZ3YubGVuZ3RoICsgMl07DQorCQkJY21kWzBdID0gImNtZC5leGUiOw0KKwkJCWNtZFsxXSA9ICIvQyI7DQorCQkJU3lzdGVtLmFycmF5Y29weShhcmd2LCAwLCBjbWQsIDIsIGFyZ3YubGVuZ3RoKTsNCisJCQlNYXA8U3RyaW5nLCBTdHJpbmc+IGVudiA9IG5ldyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPigpOw0KKwkJCXJldHVybiBleGVjdXRlU2NyaXB0KHByb2Nlc3MsIGNtZCwgZW52KTsNCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiB0KSB7DQorCQkJbG9nLmVycm9yKCJleGVjdXRlU2NyaXB0V2luZG93cyIsIHQpOw0KKwkJCXJldHVybiBuZXcgQ29udmVydGVyUHJvY2Vzc1Jlc3VsdChwcm9jZXNzLCB0LmdldE1lc3NhZ2UoKSwgdCk7DQorCQl9DQorCX0NCisJDQorCXB1YmxpYyBzdGF0aWMgQ29udmVydGVyUHJvY2Vzc1Jlc3VsdCBleGVjdXRlU2NyaXB0KFN0cmluZyBwcm9jZXNzLCBTdHJpbmdbXSBhcmd2KSB7DQorCQlNYXA8U3RyaW5nLCBTdHJpbmc+IGVudiA9IG5ldyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPigpOw0KKwkJcmV0dXJuIGV4ZWN1dGVTY3JpcHQocHJvY2VzcywgYXJndiwgZW52KTsNCisJfQ0KKwkNCisJcHVibGljIHN0YXRpYyBDb252ZXJ0ZXJQcm9jZXNzUmVzdWx0IGV4ZWN1dGVTY3JpcHQoU3RyaW5nIHByb2Nlc3MsDQorCQkJU3RyaW5nW10gYXJndiwgTWFwPD8gZXh0ZW5kcyBTdHJpbmcsID8gZXh0ZW5kcyBTdHJpbmc+IGVudikgew0KKwkJQ29udmVydGVyUHJvY2Vzc1Jlc3VsdCByZXR1cm5NYXAgPSBuZXcgQ29udmVydGVyUHJvY2Vzc1Jlc3VsdCgpOw0KKwkJcmV0dXJuTWFwLnNldFByb2Nlc3MocHJvY2Vzcyk7DQorCQlsb2cuZGVidWcoInByb2Nlc3M6ICIgKyBwcm9jZXNzKTsNCisJCWxvZy5kZWJ1ZygiYXJnczogIiArIEFycmF5cy50b1N0cmluZyhhcmd2KSk7DQorCQ0KKwkJdHJ5IHsNCisJCQlyZXR1cm5NYXAuc2V0Q29tbWFuZChBcnJheXMudG9TdHJpbmcoYXJndikpOw0KKwkJCXJldHVybk1hcC5zZXRPdXQoIiIpOw0KKwkNCisJCQkvLyBCeSB1c2luZyB0aGUgcHJvY2VzcyBCdWlsZGVyIHdlIGhhdmUgYWNjZXNzIHRvIG1vZGlmeSB0aGUNCisJCQkvLyBlbnZpcm9ubWVudCB2YXJpYWJsZXMNCisJCQkvLyB0aGF0IGlzIGhhbmR5IHRvIHNldCB2YXJpYWJsZXMgdG8gcnVuIGl0IGluc2lkZSBlY2xpcHNlDQorCQkJUHJvY2Vzc0J1aWxkZXIgcGIgPSBuZXcgUHJvY2Vzc0J1aWxkZXIoYXJndik7DQorCQkJcGIuZW52aXJvbm1lbnQoKS5wdXRBbGwoZW52KTsNCisJDQorCQkJUHJvY2VzcyBwcm9jID0gcGIuc3RhcnQoKTsNCisJDQorCQkJLy8gMjAtbWludXRlIHRpbWVvdXQgZm9yIGNvbW1hbmQgZXhlY3V0aW9uDQorCQkJLy8gRkZNUEVHIGNvbnZlcnNpb24gb2YgUmVjb3JkaW5ncyBtYXkgdGFrZSBhIHJlYWwgbG9uZyB0aW1lIHVudGlsDQorCQkJLy8gaXRzIGZpbmlzaGVkDQorCQkJbG9uZyB0aW1lb3V0ID0gNjAwMDAgKiAyMDsNCisJDQorCQkJU3RyZWFtV2F0Y2hlciBlcnJvcldhdGNoZXIgPSBuZXcgU3RyZWFtV2F0Y2hlcihwcm9jLCB0cnVlKTsNCisJCQlXb3JrZXIgd29ya2VyID0gbmV3IFdvcmtlcihwcm9jKTsNCisJCQlTdHJlYW1XYXRjaGVyIGlucHV0V2F0Y2hlciA9IG5ldyBTdHJlYW1XYXRjaGVyKHByb2MsIGZhbHNlKTsNCisJCQllcnJvcldhdGNoZXIuc3RhcnQoKTsNCisJCQlpbnB1dFdhdGNoZXIuc3RhcnQoKTsNCisJCQl3b3JrZXIuc3RhcnQoKTsNCisJCQkNCisJCQl0cnkgew0KKwkJCQl3b3JrZXIuam9pbih0aW1lb3V0KTsNCisJCQkJaWYgKHdvcmtlci5leGl0Q29kZSAhPSBudWxsKSB7DQorCQkJCQlyZXR1cm5NYXAuc2V0RXhpdFZhbHVlKCIiK3dvcmtlci5leGl0Q29kZSk7DQorCQkJCQlsb2cuZGVidWcoImV4aXRWYWw6ICIgKyB3b3JrZXIuZXhpdENvZGUpOw0KKwkJCQkJcmV0dXJuTWFwLnNldEVycm9yKGVycm9yV2F0Y2hlci5vdXRwdXQudG9TdHJpbmcoKSk7DQorCQkJCX0gZWxzZSB7DQorCQkJCQlyZXR1cm5NYXAuc2V0RXhjZXB0aW9uKCJ0aW1lT3V0Iik7DQorCQkJCQlyZXR1cm5NYXAuc2V0RXJyb3IoZXJyb3JXYXRjaGVyLm91dHB1dC50b1N0cmluZygpKTsNCisJCQkJCXJldHVybk1hcC5zZXRFeGl0VmFsdWUoIi0xIik7DQorCQ0KKwkJCQkJdGhyb3cgbmV3IFRpbWVvdXRFeGNlcHRpb24oKTsNCisJCQkJfQ0KKwkJCX0gY2F0Y2ggKEludGVycnVwdGVkRXhjZXB0aW9uIGV4KSB7DQorCQkJCXdvcmtlci5pbnRlcnJ1cHQoKTsNCisJCQkJZXJyb3JXYXRjaGVyLmludGVycnVwdCgpOw0KKwkJCQlpbnB1dFdhdGNoZXIuaW50ZXJydXB0KCk7DQorCQkJCVRocmVhZC5jdXJyZW50VGhyZWFkKCkuaW50ZXJydXB0KCk7DQorCQ0KKwkJCQlyZXR1cm5NYXAuc2V0RXJyb3IoZXguZ2V0TWVzc2FnZSgpKTsNCisJCQkJcmV0dXJuTWFwLnNldEV4aXRWYWx1ZSgiLTEiKTsNCisJDQorCQkJCXRocm93IGV4Ow0KKwkJCX0gZmluYWxseSB7DQorCQkJCXByb2MuZGVzdHJveSgpOw0KKwkJCX0NCisJCQkNCisJCX0gY2F0Y2ggKFRpbWVvdXRFeGNlcHRpb24gZSkgew0KKwkJCS8vIFRpbWVvdXQgZXhjZXB0aW9uIGlzIHByb2Nlc3NlZCBhYm92ZQ0KKwkJCWxvZy5lcnJvcigiZXhlY3V0ZVNjcmlwdCIsZSk7DQorCQkJcmV0dXJuTWFwLnNldEVycm9yKGUuZ2V0TWVzc2FnZSgpKTsNCisJCQlyZXR1cm5NYXAuc2V0RXhjZXB0aW9uKGUudG9TdHJpbmcoKSk7DQorCQkJcmV0dXJuTWFwLnNldEV4aXRWYWx1ZSgiLTEiKTsNCisJCX0gY2F0Y2ggKFRocm93YWJsZSB0KSB7DQorCQkJLy8gQW55IG90aGVyIGV4Y2VwdGlvbiBpcyBzaG93biBpbiBkZWJ1ZyB3aW5kb3cNCisJCQlsb2cuZXJyb3IoImV4ZWN1dGVTY3JpcHQiLHQpOw0KKwkJCXJldHVybk1hcC5zZXRFcnJvcih0LmdldE1lc3NhZ2UoKSk7DQorCQkJcmV0dXJuTWFwLnNldEV4Y2VwdGlvbih0LnRvU3RyaW5nKCkpOw0KKwkJCXJldHVybk1hcC5zZXRFeGl0VmFsdWUoIi0xIik7DQorCQl9DQorCQkNCisJCXJldHVybiByZXR1cm5NYXA7DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3V0aWxzL1N0b3JlZEZpbGUuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy91dGlscy9TdG9yZWRGaWxlLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzljNzczNAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy91dGlscy9TdG9yZWRGaWxlLmphdmEKQEAgLTAsMCArMSwxMTggQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHM7CisKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworaW1wb3J0IGphdmEudXRpbC5IYXNoU2V0OworaW1wb3J0IGphdmEudXRpbC5TZXQ7CisKK3B1YmxpYyBjbGFzcyBTdG9yZWRGaWxlIHsKKyAgICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTZXQ8U3RyaW5nPiBjb252ZXJ0RXh0ZW5zaW9ucyA9IG5ldyBIYXNoU2V0PFN0cmluZz4oCisgICAgICAgICAgICBBcnJheXMuYXNMaXN0KG5ldyBTdHJpbmdbXSB7ICJwcHQiLCAib2RwIiwgIm9kdCIsICJzeHciLCAid3BkIiwKKyAgICAgICAgICAgICAgICAgICAgImRvYyIsICJydGYiLCAidHh0IiwgIm9kcyIsICJzeGMiLCAieGxzIiwgInN4aSIsICJwcHR4IiwKKyAgICAgICAgICAgICAgICAgICAgImRvY3giLCAieGxzeCIgfSkpOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU2V0PFN0cmluZz4gcGRmRXh0ZW5zaW9ucyA9IG5ldyBIYXNoU2V0PFN0cmluZz4oCisgICAgICAgICAgICBBcnJheXMuYXNMaXN0KG5ldyBTdHJpbmdbXSB7ICJwZGYiLCAicHMiIH0pKTsKKworICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIFNldDxTdHJpbmc+IGltYWdlRXh0ZW5zaW9ucyA9IG5ldyBIYXNoU2V0PFN0cmluZz4oCisgICAgICAgICAgICBBcnJheXMuYXNMaXN0KG5ldyBTdHJpbmdbXSB7ICJwbmciLCAiZ2lmIiwgInN2ZyIsICJkcHgiLCAiZXhyIiwKKyAgICAgICAgICAgICAgICAgICAgInBjZCIsIC8vIFBob3RvQ0QKKyAgICAgICAgICAgICAgICAgICAgInBjZHMiLCAvLyBQaG90b0NECisgICAgICAgICAgICAgICAgICAgICJwc2QiLCAvLyBBZG9iZSBQaG90b3Nob3AKKyAgICAgICAgICAgICAgICAgICAgInRpZmYiLCAvLyBUYWdnZWQgSW1hZ2UgRmlsZSBGb3JtYXQKKyAgICAgICAgICAgICAgICAgICAgInR0ZiIsIC8vIFRydWVUeXBlIGZvbnQKKyAgICAgICAgICAgICAgICAgICAgInhjZiIsIC8vIEdJTVAgaW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgIndwZyIsIC8vIFdvcmQgUGVyZmVjdCBHcmFwaGljcworICAgICAgICAgICAgICAgICAgICAiYm1wIiwgImljbyIsIC8vIE1pY3Jvc29mdCBJY29uCisgICAgICAgICAgICAgICAgICAgICJ0Z2EiLCAvLyBUcnVldmlzaW9uIFRhcmdhCisgICAgICAgICAgICAgICAgICAgICJqcGciLCAianBlZyIgfSkpOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU2V0PFN0cmluZz4gY2hhcnRFeHRlbnNpb25zID0gbmV3IEhhc2hTZXQ8U3RyaW5nPigKKyAgICAgICAgICAgIEFycmF5cy5hc0xpc3QobmV3IFN0cmluZ1tdIHsgInhjaGFydCIgfSkpOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU2V0PFN0cmluZz4gdmlkZW9FeHRlbnNpb25zID0gbmV3IEhhc2hTZXQ8U3RyaW5nPigKKyAgICAgICAgICAgIEFycmF5cy5hc0xpc3QobmV3IFN0cmluZ1tdIHsgImF2aSIsICJtb3YiLCAiZmx2IiwgIm1wNCIgfSkpOworCisgICAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU2V0PFN0cmluZz4gYXNJc0V4dGVuc2lvbnMgPSBuZXcgSGFzaFNldDxTdHJpbmc+KAorICAgICAgICAgICAgQXJyYXlzLmFzTGlzdChuZXcgU3RyaW5nW10geyAianBnIiwgInhjaGFydCIgfSkpOworCisgICAgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgbmFtZTsKKwlwcml2YXRlIGZpbmFsIFN0cmluZyBleHQ7CisKKyAgICBwdWJsaWMgU3RvcmVkRmlsZShTdHJpbmcgbmFtZSwgU3RyaW5nIGV4dCkgeworICAgICAgICB0aGlzLm5hbWUgPSBuYW1lOworICAgICAgICB0aGlzLmV4dCA9IGV4dDsKKyAgICB9CisgICAgCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmdbXSBnZXRFeHRlbnNpb25zKCl7CisgICAgCQorICAgIAlTZXQ8U3RyaW5nPiBleHRlbnNpb25zID0gbmV3IEhhc2hTZXQ8U3RyaW5nPigpOworICAgIAlleHRlbnNpb25zLmFkZEFsbChjb252ZXJ0RXh0ZW5zaW9ucyk7CisgICAgCWV4dGVuc2lvbnMuYWRkQWxsKHBkZkV4dGVuc2lvbnMpOworICAgIAlleHRlbnNpb25zLmFkZEFsbChpbWFnZUV4dGVuc2lvbnMpOworICAgIAlleHRlbnNpb25zLmFkZEFsbChjaGFydEV4dGVuc2lvbnMpOworICAgIAlleHRlbnNpb25zLmFkZEFsbCh2aWRlb0V4dGVuc2lvbnMpOworICAgIAlleHRlbnNpb25zLmFkZEFsbChhc0lzRXh0ZW5zaW9ucyk7CisgICAgCQorICAgIAlPYmplY3RbXSByZXR1cm5PYmogPSBleHRlbnNpb25zLnRvQXJyYXkoKTsKKyAgICAJCisgICAgCVN0cmluZ1tdIHJldHVyblN0ciA9IG5ldyBTdHJpbmdbcmV0dXJuT2JqLmxlbmd0aF07CisgICAgCQorICAgIAlpbnQgaT0wOworICAgIAlmb3IgKE9iamVjdCBvYmogOiByZXR1cm5PYmopIHsKKyAgICAJCXJldHVyblN0cltpXSA9IG9iai50b1N0cmluZygpOworICAgIAkJaSsrOworICAgIAl9CisgICAgCQorICAgIAlyZXR1cm4gcmV0dXJuU3RyOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGlzQ29udmVydGFibGUoKSB7CisgICAgICAgIHJldHVybiBjb252ZXJ0RXh0ZW5zaW9ucy5jb250YWlucyhleHQpOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGlzUHJlc2VudGF0aW9uKCkgeworICAgICAgICByZXR1cm4gaXNDb252ZXJ0YWJsZSgpIHx8IGlzUGRmKCk7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gaXNQZGYoKSB7CisgICAgICAgIHJldHVybiBwZGZFeHRlbnNpb25zLmNvbnRhaW5zKGV4dCk7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gaXNJbWFnZSgpIHsKKyAgICAgICAgcmV0dXJuIGltYWdlRXh0ZW5zaW9ucy5jb250YWlucyhleHQpOworICAgIH0KKworICAgIHB1YmxpYyBib29sZWFuIGlzVmlkZW8oKSB7CisgICAgICAgIHJldHVybiB2aWRlb0V4dGVuc2lvbnMuY29udGFpbnMoZXh0KTsKKyAgICB9CisKKyAgICBwdWJsaWMgYm9vbGVhbiBpc0NoYXJ0KCkgeworICAgICAgICByZXR1cm4gY2hhcnRFeHRlbnNpb25zLmNvbnRhaW5zKGV4dCk7CisgICAgfQorCisgICAgcHVibGljIGJvb2xlYW4gaXNBc0lzKCkgeworICAgICAgICByZXR1cm4gYXNJc0V4dGVuc2lvbnMuY29udGFpbnMoZXh0KTsKKyAgICB9CisKKyAgICBwdWJsaWMgU3RyaW5nIGdldE5hbWUoKSB7CisJCXJldHVybiBuYW1lOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy91dGlscy9jcnlwdC9JQ3J5cHRTdHJpbmcuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy91dGlscy9jcnlwdC9JQ3J5cHRTdHJpbmcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNDgyZWMwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3V0aWxzL2NyeXB0L0lDcnlwdFN0cmluZy5qYXZhCkBAIC0wLDAgKzEsNDggQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMuY3J5cHQ7CisKKy8qKgorICogaW50ZXJmYWNlIGZvciBFbmNyeXB0aW9uLUNsYXNzCisgKiBzZWU6IGh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sCisgKiAKKyAqIEBhdXRob3Igc2ViYXN0aWFud2FnbmVyCisgKgorICovCisKK3B1YmxpYyBpbnRlcmZhY2UgSUNyeXB0U3RyaW5nIHsKKwkKKwkvKioKKwkgKiBjcmVhdGUgYSBwYXNzIHBocmFzZQorCSAqIAorCSAqIEBwYXJhbSB1c2VyR2l2ZW5QYXNzCisJICogQHJldHVybgorCSAqLworCXB1YmxpYyBTdHJpbmcgY3JlYXRlUGFzc1BocmFzZShTdHJpbmcgdXNlckdpdmVuUGFzcyk7CisJCisJLyoqCisJICogdmVyaWZ5IGEgcGFzc3dvcmQKKwkgKiAKKwkgKiBAcGFyYW0gcGFzc0dpdmVuCisJICogQHBhcmFtIHBhc3N3ZEZyb21EYgorCSAqIEByZXR1cm4KKwkgKi8KKwlwdWJsaWMgQm9vbGVhbiB2ZXJpZnlQYXNzd29yZChTdHJpbmcgcGFzc0dpdmVuLCBTdHJpbmcgcGFzc3dkRnJvbURiKTsKKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3V0aWxzL2NyeXB0L01ENS5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3V0aWxzL2NyeXB0L01ENS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM4M2FlODcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdXRpbHMvY3J5cHQvTUQ1LmphdmEKQEAgLTAsMCArMSw0OCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5jcnlwdDsKKworaW1wb3J0IGphdmEuc2VjdXJpdHkuTWVzc2FnZURpZ2VzdDsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbjsKKworcHVibGljIGNsYXNzIE1ENSB7CisKKyAgICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgdG9IZXhTdHJpbmcoYnl0ZSBiKSB7CisgICAgICAgIGludCB2YWx1ZSA9IChiICYgMHg3RikgKyAoYiA8IDAgPyAxMjggOiAwKTsKKyAgICAgCisgICAgICAgICBTdHJpbmcgcmV0ID0gKHZhbHVlIDwgMTYgPyAiMCIgOiAiIik7CisgICAgICAgICByZXQgKz0gSW50ZWdlci50b0hleFN0cmluZyh2YWx1ZSkudG9Mb3dlckNhc2UoKTsKKyAgICAgCisgICAgIHJldHVybiByZXQ7CisgICAgfQorICAgCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgZG9fY2hlY2tzdW0oU3RyaW5nIGRhdGEpIHRocm93cyBOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24geworICAgIAlNZXNzYWdlRGlnZXN0IG1kNSA9IE1lc3NhZ2VEaWdlc3QuZ2V0SW5zdGFuY2UoIk1ENSIpOworCQlTdHJpbmdCdWZmZXIgc3RyYnVmID0gbmV3IFN0cmluZ0J1ZmZlcigpOworCisJCW1kNS51cGRhdGUoZGF0YS5nZXRCeXRlcygpLCAwLCBkYXRhLmxlbmd0aCgpKTsKKwkJYnl0ZVtdIGRpZ2VzdCA9IG1kNS5kaWdlc3QoKTsKKworCQlmb3IgKGludCBpID0gMDsgaSA8IGRpZ2VzdC5sZW5ndGg7IGkrKykgeworCQkJc3RyYnVmLmFwcGVuZCh0b0hleFN0cmluZyhkaWdlc3RbaV0pKTsKKwkJfQorCisJCXJldHVybiBzdHJidWYudG9TdHJpbmcoKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdXRpbHMvY3J5cHQvTUQ1Q3J5cHQuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy91dGlscy9jcnlwdC9NRDVDcnlwdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0NTM2NmYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdXRpbHMvY3J5cHQvTUQ1Q3J5cHQuamF2YQpAQCAtMCwwICsxLDM4MCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5jcnlwdDsKKworaW1wb3J0IGphdmEuc2VjdXJpdHkuTWVzc2FnZURpZ2VzdDsKK2ltcG9ydCBqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbjsKKworLyoKKworIEJhc2VkIG9uIHRoZSB3b3JrIG9mIEpvbmF0aGFuIEFiYmV5CisgQWRvcHRlZCBmb3IgRGlyZWN0b3IgYnkgVGhvbWFzIEFlYnksIDIwMDQKKworIE1ENUNyeXB0LmphdmEKKworIENyZWF0ZWQ6IDMgTm92ZW1iZXIgMTk5OQorIFJlbGVhc2U6ICROYW1lOiAgJAorIFZlcnNpb246ICRSZXZpc2lvbjogMS4xICQKKyBMYXN0IE1vZCBEYXRlOiAkRGF0ZTogMjAwNC8wMi8wNCAwODoxMDozNSAkCisgSmF2YSBDb2RlIEJ5OiBKb25hdGhhbiBBYmJleSwgam9uYWJiZXlAYXJsdXQudXRleGFzLmVkdQorIE9yaWdpbmFsIEMgVmVyc2lvbjoKKyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgIlRIRSBCRUVSLVdBUkUgTElDRU5TRSIgKFJldmlzaW9uIDQyKToKKyA8cGhrQGxvZ2luLmRrbmV0LmRrPiB3cm90ZSB0aGlzIGZpbGUuICBBcyBsb25nIGFzIHlvdSByZXRhaW4gdGhpcyBub3RpY2UgeW91CisgY2FuIGRvIHdoYXRldmVyIHlvdSB3YW50IHdpdGggdGhpcyBzdHVmZi4gSWYgd2UgbWVldCBzb21lIGRheSwgYW5kIHlvdSB0aGluaworIHRoaXMgc3R1ZmYgaXMgd29ydGggaXQsIHlvdSBjYW4gYnV5IG1lIGEgYmVlciBpbiByZXR1cm4uICAgUG91bC1IZW5uaW5nIEthbXAKKyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgR2FueW1lZGUgRGlyZWN0b3J5IE1hbmFnZW1lbnQgU3lzdGVtCisKKyBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTkgIFRoZSBVbml2ZXJzaXR5IG9mIFRleGFzIGF0IEF1c3Rpbi4KKworIENvbnRhY3QgaW5mb3JtYXRpb24KKworIEF1dGhvciBFbWFpbDogZ2FueW1lZGVfYXV0aG9yQGFybHV0LnV0ZXhhcy5lZHUKKyBFbWFpbCBtYWlsaW5nIGxpc3Q6IGdhbnltZWRlQGFybHV0LnV0ZXhhcy5lZHUKKworIFVTIE1haWw6CisKKyBDb21wdXRlciBTY2llbmNlIERpdmlzaW9uCisgQXBwbGllZCBSZXNlYXJjaCBMYWJvcmF0b3JpZXMKKyBUaGUgVW5pdmVyc2l0eSBvZiBUZXhhcyBhdCBBdXN0aW4KKyBQTyBCb3ggODAyOSwgQXVzdGluIFRYIDc4NzEzLTgwMjkKKworIFRlbGVwaG9uZTogKDUxMikgODM1LTMyMDAKKworIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisKKyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorCisgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgorCisgKi8KKworLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBjbGFzcworIE1ENUNyeXB0CisKKyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLworCisvKioKKyAqIDxwPgorICogVGhpcyBjbGFzcyBkZWZpbmVzIGEgbWV0aG9kLAorICoge0BsaW5rIE1ENUNyeXB0I2NyeXB0KGphdmEubGFuZy5TdHJpbmcsIGphdmEubGFuZy5TdHJpbmcpIGNyeXB0KCl9LCB3aGljaAorICogdGFrZXMgYSBwYXNzd29yZCBhbmQgYSBzYWx0IHN0cmluZyBhbmQgZ2VuZXJhdGVzIGFuCisgKiBPcGVuQlNEL0ZyZWVCU0QvTGludXgtY29tcGF0aWJsZSBtZDUtZW5jb2RlZCBwYXNzd29yZCBlbnRyeS4KKyAqIDwvcD4KKyAqIAorICogPHA+CisgKiBDcmVhdGVkOiAzIE5vdmVtYmVyIDE5OTkKKyAqIDwvcD4KKyAqIDxwPgorICogUmVsZWFzZTogJE5hbWU6ICQKKyAqIDwvcD4KKyAqIDxwPgorICogVmVyc2lvbjogJFJldmlzaW9uOiAxLjEgJAorICogPC9wPgorICogPHA+CisgKiBMYXN0IE1vZCBEYXRlOiAkRGF0ZTogMjAwNC8wMi8wNCAwODoxMDozNSAkCisgKiA8L3A+CisgKiA8cD4KKyAqIEphdmEgQ29kZSBCeTogSm9uYXRoYW4gQWJiZXksIGpvbmFiYmV5QGFybHV0LnV0ZXhhcy5lZHUKKyAqIDwvcD4KKyAqIDxwPgorICogT3JpZ2luYWwgQyBWZXJzaW9uOgorICogCisgKiA8cHJlPgorICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogIlRIRSBCRUVSLVdBUkUgTElDRU5TRSIgKFJldmlzaW9uIDQyKToKKyAqIDxwaGtAbG9naW4uZGtuZXQuZGs+IHdyb3RlIHRoaXMgZmlsZS4gIEFzIGxvbmcgYXMgeW91IHJldGFpbiB0aGlzIG5vdGljZSB5b3UKKyAqIGNhbiBkbyB3aGF0ZXZlciB5b3Ugd2FudCB3aXRoIHRoaXMgc3R1ZmYuIElmIHdlIG1lZXQgc29tZSBkYXksIGFuZCB5b3UgdGhpbmsKKyAqIHRoaXMgc3R1ZmYgaXMgd29ydGggaXQsIHlvdSBjYW4gYnV5IG1lIGEgYmVlciBpbiByZXR1cm4uICAgUG91bC1IZW5uaW5nIEthbXAKKyAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqIDwvcHJlPgorICogCisgKiA8L3A+CisgKi8KKworcHVibGljIGZpbmFsIGNsYXNzIE1ENUNyeXB0IHsKKworCS8qKgorCSAqIAorCSAqIENvbW1hbmQgbGluZSB0ZXN0IHJpZy4KKwkgKiAKKwkgKiBAdGhyb3dzIE5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbgorCSAqIAorCSAqLworCisJc3RhdGljIHB1YmxpYyB2b2lkIG1haW4oU3RyaW5nIGFyZ3ZbXSkgdGhyb3dzIE5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiB7CisJCWlmICgoYXJndi5sZW5ndGggPCAxKSB8fCAoYXJndi5sZW5ndGggPiAyKSkgeworCQkJU3lzdGVtLmVyci5wcmludGxuKCJVc2FnZTogTUQ1Q3J5cHQgcGFzc3dvcmQgc2FsdCIpOworCQkJU3lzdGVtLmV4aXQoMSk7CisJCX0KKworCQlpZiAoYXJndi5sZW5ndGggPT0gMikgeworCQkJU3lzdGVtLmVyci5wcmludGxuKE1ENUNyeXB0LmNyeXB0KGFyZ3ZbMF0sIGFyZ3ZbMV0pKTsKKwkJfSBlbHNlIHsKKwkJCVN5c3RlbS5lcnIucHJpbnRsbihNRDVDcnlwdC5jcnlwdChhcmd2WzBdKSk7CisJCX0KKworCQlTeXN0ZW0uZXhpdCgwKTsKKwl9CisKKwlzdGF0aWMgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgU0FMVENIQVJTID0gImFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoxMjM0NTY3ODkwIjsKKworCXN0YXRpYyBwcml2YXRlIGZpbmFsIFN0cmluZyBpdG9hNjQgPSAiLi8wMTIzNDU2Nzg5QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiI7CisKKwlzdGF0aWMgcHJpdmF0ZSBmaW5hbCBTdHJpbmcgdG82NChsb25nIHYsIGludCBzaXplKSB7CisJCVN0cmluZ0J1ZmZlciByZXN1bHQgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisKKwkJd2hpbGUgKC0tc2l6ZSA+PSAwKSB7CisJCQlyZXN1bHQuYXBwZW5kKGl0b2E2NC5jaGFyQXQoKGludCkgKHYgJiAweDNmKSkpOworCQkJdiA+Pj49IDY7CisJCX0KKworCQlyZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CisJfQorCisJc3RhdGljIHByaXZhdGUgZmluYWwgdm9pZCBjbGVhcmJpdHMoYnl0ZSBiaXRzW10pIHsKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCBiaXRzLmxlbmd0aDsgaSsrKSB7CisJCQliaXRzW2ldID0gMDsKKwkJfQorCX0KKworCS8qKgorCSAqIGNvbnZlcnQgYW4gZW5jb2RlZCB1bnNpZ25lZCBieXRlIHZhbHVlIGludG8gYSBpbnQgd2l0aCB0aGUgdW5zaWduZWQKKwkgKiB2YWx1ZS4KKwkgKi8KKworCUBTdXBwcmVzc1dhcm5pbmdzKCJjYXN0IikKKwlzdGF0aWMgcHJpdmF0ZSBmaW5hbCBpbnQgYnl0ZXMydShieXRlIGlucCkgeworCQlyZXR1cm4gKChpbnQpIGlucCkgJiAweGZmOworCX0KKworCS8qKgorCSAqIDxwPgorCSAqIFRoaXMgbWV0aG9kIGFjdHVhbGx5IGdlbmVyYXRlcyBhIE9wZW5CU0QvRnJlZUJTRC9MaW51eCBQQU0gY29tcGF0aWJsZQorCSAqIG1kNS1lbmNvZGVkIHBhc3N3b3JkIGhhc2ggZnJvbSBhIHBsYWludGV4dCBwYXNzd29yZCBhbmQgYSBzYWx0LgorCSAqIDwvcD4KKwkgKiAKKwkgKiA8cD4KKwkgKiBUaGUgcmVzdWx0aW5nIHN0cmluZyB3aWxsIGJlIGluIHRoZSBmb3JtICckMSQmbHQ7c2FsdCZndDskJmx0O2hhc2hlZAorCSAqIG1lc3MmZ3Q7CisJICogPC9wPgorCSAqIAorCSAqIEBwYXJhbSBwYXNzd29yZAorCSAqICAgICAgICAgICAgUGxhaW50ZXh0IHBhc3N3b3JkCisJICogCisJICogQHJldHVybiBBbiBPcGVuQlNEL0ZyZWVCU0QvTGludXgtY29tcGF0aWJsZSBtZDUtaGFzaGVkIHBhc3N3b3JkIGZpZWxkLgorCSAqIEB0aHJvd3MgTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uCisJICovCisKKwlzdGF0aWMgcHVibGljIGZpbmFsIFN0cmluZyBjcnlwdChTdHJpbmcgcGFzc3dvcmQpCisJCQl0aHJvd3MgTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIHsKKwkJU3RyaW5nQnVmZmVyIHNhbHQgPSBuZXcgU3RyaW5nQnVmZmVyKCk7CisJCWphdmEudXRpbC5SYW5kb20gcmFuZGdlbiA9IG5ldyBqYXZhLnV0aWwuUmFuZG9tKCk7CisKKwkJLyogLS0gKi8KKworCQl3aGlsZSAoc2FsdC5sZW5ndGgoKSA8IDgpIHsKKwkJCWludCBpbmRleCA9IChpbnQpIChyYW5kZ2VuLm5leHRGbG9hdCgpICogU0FMVENIQVJTLmxlbmd0aCgpKTsKKwkJCXNhbHQuYXBwZW5kKFNBTFRDSEFSUy5zdWJzdHJpbmcoaW5kZXgsIGluZGV4ICsgMSkpOworCQl9CisKKwkJcmV0dXJuIE1ENUNyeXB0LmNyeXB0KHBhc3N3b3JkLCBzYWx0LnRvU3RyaW5nKCkpOworCX0KKworCS8qKgorCSAqIDxwPgorCSAqIFRoaXMgbWV0aG9kIGFjdHVhbGx5IGdlbmVyYXRlcyBhIE9wZW5CU0QvRnJlZUJTRC9MaW51eCBQQU0gY29tcGF0aWJsZQorCSAqIG1kNS1lbmNvZGVkIHBhc3N3b3JkIGhhc2ggZnJvbSBhIHBsYWludGV4dCBwYXNzd29yZCBhbmQgYSBzYWx0LgorCSAqIDwvcD4KKwkgKiAKKwkgKiA8cD4KKwkgKiBUaGUgcmVzdWx0aW5nIHN0cmluZyB3aWxsIGJlIGluIHRoZSBmb3JtICckMSQmbHQ7c2FsdCZndDskJmx0O2hhc2hlZAorCSAqIG1lc3MmZ3Q7CisJICogPC9wPgorCSAqIAorCSAqIEBwYXJhbSBwYXNzd29yZAorCSAqICAgICAgICAgICAgUGxhaW50ZXh0IHBhc3N3b3JkCisJICogQHBhcmFtIHNhbHQKKwkgKiAgICAgICAgICAgIEEgc2hvcnQgc3RyaW5nIHRvIHVzZSB0byByYW5kb21pemUgbWQ1LiBNYXkgc3RhcnQgd2l0aCAkMSQsCisJICogICAgICAgICAgICB3aGljaCB3aWxsIGJlIGlnbm9yZWQuIEl0IGlzIGV4cGxpY2l0bHkgcGVybWl0dGVkIHRvIHBhc3MgYQorCSAqICAgICAgICAgICAgcHJlLWV4aXN0aW5nIE1ENUNyeXB0J2VkIHBhc3N3b3JkIGVudHJ5IGFzIHRoZSBzYWx0LiBjcnlwdCgpCisJICogICAgICAgICAgICB3aWxsIHN0cmlwIHRoZSBzYWx0IGNoYXJzIG91dCBwcm9wZXJseS4KKwkgKiAKKwkgKiBAcmV0dXJuIEFuIE9wZW5CU0QvRnJlZUJTRC9MaW51eC1jb21wYXRpYmxlIG1kNS1oYXNoZWQgcGFzc3dvcmQgZmllbGQuCisJICogQHRocm93cyBOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24KKwkgKi8KKworCXN0YXRpYyBwdWJsaWMgZmluYWwgU3RyaW5nIGNyeXB0KFN0cmluZyBwYXNzd29yZCwgU3RyaW5nIHNhbHQpCisJCQl0aHJvd3MgTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIHsKKwkJLyoKKwkJICogVGhpcyBzdHJpbmcgaXMgbWFnaWMgZm9yIHRoaXMgYWxnb3JpdGhtLiBIYXZpbmcgaXQgdGhpcyB3YXksIHdlIGNhbgorCQkgKiBnZXQgZ2V0IGJldHRlciBsYXRlciBvbgorCQkgKi8KKworCQlTdHJpbmcgbWFnaWMgPSAiJDEkIjsKKwkJYnl0ZSBmaW5hbFN0YXRlW107CisJCU1lc3NhZ2VEaWdlc3QgY3R4LCBjdHgxOworCQlsb25nIGw7CisKKwkJLyogLS0gKi8KKworCQkvKiBSZWZpbmUgdGhlIFNhbHQgZmlyc3QgKi8KKworCQkvKiBJZiBpdCBzdGFydHMgd2l0aCB0aGUgbWFnaWMgc3RyaW5nLCB0aGVuIHNraXAgdGhhdCAqLworCisJCWlmIChzYWx0LnN0YXJ0c1dpdGgobWFnaWMpKSB7CisJCQlzYWx0ID0gc2FsdC5zdWJzdHJpbmcobWFnaWMubGVuZ3RoKCkpOworCQl9CisKKwkJLyogSXQgc3RvcHMgYXQgdGhlIGZpcnN0ICckJywgbWF4IDggY2hhcnMgKi8KKworCQlpZiAoc2FsdC5pbmRleE9mKCckJykgIT0gLTEpIHsKKwkJCXNhbHQgPSBzYWx0LnN1YnN0cmluZygwLCBzYWx0LmluZGV4T2YoJyQnKSk7CisJCX0KKworCQlpZiAoc2FsdC5sZW5ndGgoKSA+IDgpIHsKKwkJCXNhbHQgPSBzYWx0LnN1YnN0cmluZygwLCA4KTsKKwkJfQorCisJCWN0eCA9IE1lc3NhZ2VEaWdlc3QuZ2V0SW5zdGFuY2UoIk1ENSIpOworCisJCWN0eC51cGRhdGUocGFzc3dvcmQuZ2V0Qnl0ZXMoKSk7IC8vIFRoZSBwYXNzd29yZCBmaXJzdCwgc2luY2UgdGhhdCBpcworCQkJCQkJCQkJCQkvLyB3aGF0IGlzIG1vc3QgdW5rbm93bgorCQljdHgudXBkYXRlKG1hZ2ljLmdldEJ5dGVzKCkpOyAvLyBUaGVuIG91ciBtYWdpYyBzdHJpbmcKKwkJY3R4LnVwZGF0ZShzYWx0LmdldEJ5dGVzKCkpOyAvLyBUaGVuIHRoZSByYXcgc2FsdAorCisJCS8qIFRoZW4ganVzdCBhcyBtYW55IGNoYXJhY3RlcnMgb2YgdGhlIE1ENShwdyxzYWx0LHB3KSAqLworCisJCWN0eDEgPSBNZXNzYWdlRGlnZXN0LmdldEluc3RhbmNlKCJNRDUiKTsKKwkJY3R4MS51cGRhdGUocGFzc3dvcmQuZ2V0Qnl0ZXMoKSk7CisJCWN0eDEudXBkYXRlKHNhbHQuZ2V0Qnl0ZXMoKSk7CisJCWN0eDEudXBkYXRlKHBhc3N3b3JkLmdldEJ5dGVzKCkpOworCQlmaW5hbFN0YXRlID0gY3R4MS5kaWdlc3QoKTsKKworCQlmb3IgKGludCBwbCA9IHBhc3N3b3JkLmxlbmd0aCgpOyBwbCA+IDA7IHBsIC09IDE2KSB7CisJCQlmb3IgKGludCBpID0gMDsgaSA8IChwbCA+IDE2ID8gMTYgOiBwbCk7IGkrKykKKwkJCQljdHgudXBkYXRlKGZpbmFsU3RhdGVbaV0pOworCQl9CisKKwkJLyoKKwkJICogdGhlIG9yaWdpbmFsIGNvZGUgY2xhaW1lZCB0aGF0IGZpbmFsU3RhdGUgd2FzIGJlaW5nIGNsZWFyZWQgdG8ga2VlcAorCQkgKiBkYW5nZXJvdXMgYml0cyBvdXQgb2YgbWVtb3J5LCBidXQgZG9pbmcgdGhpcyBpcyBhbHNvIHJlcXVpcmVkIGluCisJCSAqIG9yZGVyIHRvIGdldCB0aGUgcmlnaHQgb3V0cHV0LgorCQkgKi8KKworCQljbGVhcmJpdHMoZmluYWxTdGF0ZSk7CisKKwkJLyogVGhlbiBzb21ldGhpbmcgcmVhbGx5IHdlaXJkLi4uICovCisKKwkJZm9yIChpbnQgaSA9IHBhc3N3b3JkLmxlbmd0aCgpOyBpICE9IDA7IGkgPj4+PSAxKSB7CisJCQlpZiAoKGkgJiAxKSAhPSAwKSB7CisJCQkJY3R4LnVwZGF0ZShmaW5hbFN0YXRlWzBdKTsKKwkJCX0gZWxzZSB7CisJCQkJY3R4LnVwZGF0ZShwYXNzd29yZC5nZXRCeXRlcygpWzBdKTsKKwkJCX0KKwkJfQorCisJCWZpbmFsU3RhdGUgPSBjdHguZGlnZXN0KCk7CisKKwkJLyoKKwkJICogYW5kIG5vdywganVzdCB0byBtYWtlIHN1cmUgdGhpbmdzIGRvbid0IHJ1biB0b28gZmFzdCBPbiBhIDYwIE1oegorCQkgKiBQZW50aXVtIHRoaXMgdGFrZXMgMzQgbXNlYywgc28geW91IHdvdWxkIG5lZWQgMzAgc2Vjb25kcyB0byBidWlsZCBhCisJCSAqIDEwMDAgZW50cnkgZGljdGlvbmFyeS4uLgorCQkgKiAKKwkJICogKFRoZSBhYm92ZSB0aW1pbmdzIGZyb20gdGhlIEMgdmVyc2lvbikKKwkJICovCisKKwkJZm9yIChpbnQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKwkJCWN0eDEgPSBNZXNzYWdlRGlnZXN0LmdldEluc3RhbmNlKCJNRDUiKTsKKworCQkJaWYgKChpICYgMSkgIT0gMCkgeworCQkJCWN0eDEudXBkYXRlKHBhc3N3b3JkLmdldEJ5dGVzKCkpOworCQkJfSBlbHNlIHsKKwkJCQlmb3IgKGludCBjID0gMDsgYyA8IDE2OyBjKyspCisJCQkJCWN0eDEudXBkYXRlKGZpbmFsU3RhdGVbY10pOworCQkJfQorCisJCQlpZiAoKGkgJSAzKSAhPSAwKSB7CisJCQkJY3R4MS51cGRhdGUoc2FsdC5nZXRCeXRlcygpKTsKKwkJCX0KKworCQkJaWYgKChpICUgNykgIT0gMCkgeworCQkJCWN0eDEudXBkYXRlKHBhc3N3b3JkLmdldEJ5dGVzKCkpOworCQkJfQorCisJCQlpZiAoKGkgJiAxKSAhPSAwKSB7CisJCQkJZm9yIChpbnQgYyA9IDA7IGMgPCAxNjsgYysrKQorCQkJCQljdHgxLnVwZGF0ZShmaW5hbFN0YXRlW2NdKTsKKwkJCX0gZWxzZSB7CisJCQkJY3R4MS51cGRhdGUocGFzc3dvcmQuZ2V0Qnl0ZXMoKSk7CisJCQl9CisKKwkJCWZpbmFsU3RhdGUgPSBjdHgxLmRpZ2VzdCgpOworCQl9CisKKwkJLyogTm93IG1ha2UgdGhlIG91dHB1dCBzdHJpbmcgKi8KKworCQlTdHJpbmdCdWZmZXIgcmVzdWx0ID0gbmV3IFN0cmluZ0J1ZmZlcigpOworCisJCXJlc3VsdC5hcHBlbmQobWFnaWMpOworCQlyZXN1bHQuYXBwZW5kKHNhbHQpOworCQlyZXN1bHQuYXBwZW5kKCIkIik7CisKKwkJbCA9IChieXRlczJ1KGZpbmFsU3RhdGVbMF0pIDw8IDE2KSB8IChieXRlczJ1KGZpbmFsU3RhdGVbNl0pIDw8IDgpCisJCQkJfCBieXRlczJ1KGZpbmFsU3RhdGVbMTJdKTsKKwkJcmVzdWx0LmFwcGVuZCh0bzY0KGwsIDQpKTsKKworCQlsID0gKGJ5dGVzMnUoZmluYWxTdGF0ZVsxXSkgPDwgMTYpIHwgKGJ5dGVzMnUoZmluYWxTdGF0ZVs3XSkgPDwgOCkKKwkJCQl8IGJ5dGVzMnUoZmluYWxTdGF0ZVsxM10pOworCQlyZXN1bHQuYXBwZW5kKHRvNjQobCwgNCkpOworCisJCWwgPSAoYnl0ZXMydShmaW5hbFN0YXRlWzJdKSA8PCAxNikgfCAoYnl0ZXMydShmaW5hbFN0YXRlWzhdKSA8PCA4KQorCQkJCXwgYnl0ZXMydShmaW5hbFN0YXRlWzE0XSk7CisJCXJlc3VsdC5hcHBlbmQodG82NChsLCA0KSk7CisKKwkJbCA9IChieXRlczJ1KGZpbmFsU3RhdGVbM10pIDw8IDE2KSB8IChieXRlczJ1KGZpbmFsU3RhdGVbOV0pIDw8IDgpCisJCQkJfCBieXRlczJ1KGZpbmFsU3RhdGVbMTVdKTsKKwkJcmVzdWx0LmFwcGVuZCh0bzY0KGwsIDQpKTsKKworCQlsID0gKGJ5dGVzMnUoZmluYWxTdGF0ZVs0XSkgPDwgMTYpIHwgKGJ5dGVzMnUoZmluYWxTdGF0ZVsxMF0pIDw8IDgpCisJCQkJfCBieXRlczJ1KGZpbmFsU3RhdGVbNV0pOworCQlyZXN1bHQuYXBwZW5kKHRvNjQobCwgNCkpOworCisJCWwgPSBieXRlczJ1KGZpbmFsU3RhdGVbMTFdKTsKKwkJcmVzdWx0LmFwcGVuZCh0bzY0KGwsIDIpKTsKKworCQkvKiBEb24ndCBsZWF2ZSBhbnl0aGluZyBhcm91bmQgaW4gdm0gdGhleSBjb3VsZCB1c2UuICovCisJCWNsZWFyYml0cyhmaW5hbFN0YXRlKTsKKworCQlyZXR1cm4gcmVzdWx0LnRvU3RyaW5nKCk7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3V0aWxzL2NyeXB0L01ENUNyeXB0SW1wbGVtZW50YXRpb24uamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy91dGlscy9jcnlwdC9NRDVDcnlwdEltcGxlbWVudGF0aW9uLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzlhYWM4NQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy91dGlscy9jcnlwdC9NRDVDcnlwdEltcGxlbWVudGF0aW9uLmphdmEKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5jcnlwdDsKKworaW1wb3J0IGphdmEuc2VjdXJpdHkuTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uOworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKKworcHVibGljIGNsYXNzIE1ENUNyeXB0SW1wbGVtZW50YXRpb24gaW1wbGVtZW50cyBJQ3J5cHRTdHJpbmcgeworCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcihNRDVDcnlwdEltcGxlbWVudGF0aW9uLmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisJCisJLyoKKwkgKiAobm9uLUphdmFkb2MpCisJICogQHNlZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5jcnlwdC5JQ3J5cHRTdHJpbmcjY3JlYXRlUGFzc1BocmFzZShqYXZhLmxhbmcuU3RyaW5nKQorCSAqLworCXB1YmxpYyBTdHJpbmcgY3JlYXRlUGFzc1BocmFzZShTdHJpbmcgdXNlckdpdmVuUGFzcykgeworCQlTdHJpbmcgcGFzc1BocmFzZSA9IG51bGw7CisJCXRyeSB7CisJCQlwYXNzUGhyYXNlID0gTUQ1Q3J5cHQuY3J5cHQodXNlckdpdmVuUGFzcyk7CisJCX0gY2F0Y2ggKE5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbiBlKSB7CisJCQlsb2cuZXJyb3IoIltjcmVhdGVQYXNzUGhyYXNlXSIsIGUpOworCQl9IAorCQlyZXR1cm4gcGFzc1BocmFzZTsKKwl9CisKKwkvKgorCSAqIChub24tSmF2YWRvYykKKwkgKiBAc2VlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLmNyeXB0LklDcnlwdFN0cmluZyN2ZXJpZnlQYXNzd29yZChqYXZhLmxhbmcuU3RyaW5nLCBqYXZhLmxhbmcuU3RyaW5nKQorCSAqLworCXB1YmxpYyBCb29sZWFuIHZlcmlmeVBhc3N3b3JkKFN0cmluZyBwYXNzR2l2ZW4sIFN0cmluZyBwYXNzd2RGcm9tRGIpIHsKKwkJYm9vbGVhbiB2YWxpZFBhc3N3b3JkID0gZmFsc2U7CisJCVN0cmluZyBzYWx0ID0gcGFzc3dkRnJvbURiLnNwbGl0KCJcXCQiKVsyXTsKKwkKKwkJdHJ5IHsKKwkJCXZhbGlkUGFzc3dvcmQgPSBwYXNzd2RGcm9tRGIuZXF1YWxzKE1ENUNyeXB0LmNyeXB0KHBhc3NHaXZlbiwgc2FsdCkpOworCQl9IGNhdGNoIChOb1N1Y2hBbGdvcml0aG1FeGNlcHRpb24gZSkgeworCQkJbG9nLmVycm9yKCJbdmVyaWZ5UGFzc3dvcmRdIiwgZSk7CisJCX0KKwkJcmV0dXJuIHZhbGlkUGFzc3dvcmQ7CisJfQorCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdXRpbHMvY3J5cHQvTUQ1SW1wbGVtZW50YXRpb24uamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy91dGlscy9jcnlwdC9NRDVJbXBsZW1lbnRhdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2NGI0MTcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdXRpbHMvY3J5cHQvTUQ1SW1wbGVtZW50YXRpb24uamF2YQpAQCAtMCwwICsxLDUzIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLmNyeXB0OworCitpbXBvcnQgamF2YS5zZWN1cml0eS5Ob1N1Y2hBbGdvcml0aG1FeGNlcHRpb247CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworCitwdWJsaWMgY2xhc3MgTUQ1SW1wbGVtZW50YXRpb24gaW1wbGVtZW50cyBJQ3J5cHRTdHJpbmcgeworCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcihNRDVJbXBsZW1lbnRhdGlvbi5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCQorCS8qCisJICogKG5vbi1KYXZhZG9jKQorCSAqIEBzZWUgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMuY3J5cHQuSUNyeXB0U3RyaW5nI2NyZWF0ZVBhc3NQaHJhc2UoamF2YS5sYW5nLlN0cmluZykKKwkgKi8KKwlwdWJsaWMgU3RyaW5nIGNyZWF0ZVBhc3NQaHJhc2UoU3RyaW5nIHVzZXJHaXZlblBhc3MpIHsKKwkJU3RyaW5nIHBhc3NQaHJhc2UgPSBudWxsOworCQl0cnkgeworCQkJcGFzc1BocmFzZSA9IE1ENS5kb19jaGVja3N1bSh1c2VyR2l2ZW5QYXNzKTsKKwkJfSBjYXRjaCAoTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIGUpIHsKKwkJCWxvZy5lcnJvcigiW2NyZWF0ZVBhc3NQaHJhc2VdIiwgZSk7CisJCX0KKwkJcmV0dXJuIHBhc3NQaHJhc2U7CisJfQorCisJLyoKKwkgKiAobm9uLUphdmFkb2MpCisJICogQHNlZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5jcnlwdC5JQ3J5cHRTdHJpbmcjdmVyaWZ5UGFzc3dvcmQoamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlN0cmluZykKKwkgKi8KKwlwdWJsaWMgQm9vbGVhbiB2ZXJpZnlQYXNzd29yZChTdHJpbmcgcGFzc0dpdmVuLCBTdHJpbmcgcGFzc3dkRnJvbURiKSB7CisJCXJldHVybiAocGFzc3dkRnJvbURiLmVxdWFscyhjcmVhdGVQYXNzUGhyYXNlKHBhc3NHaXZlbikpKTsKKwl9CisJCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdXRpbHMvY3J5cHQvTWFuYWdlQ3J5cHRTdHlsZS5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3V0aWxzL2NyeXB0L01hbmFnZUNyeXB0U3R5bGUuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2M4MzNkCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3V0aWxzL2NyeXB0L01hbmFnZUNyeXB0U3R5bGUuamF2YQpAQCAtMCwwICsxLDU0IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLmNyeXB0OworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnJlbW90ZS5yZWQ1LlNjb3BlQXBwbGljYXRpb25BZGFwdGVyOworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5BdXRvd2lyZWQ7CisKK3B1YmxpYyBjbGFzcyBNYW5hZ2VDcnlwdFN0eWxlIHsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoCisJCQlNYW5hZ2VDcnlwdFN0eWxlLmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBTY29wZUFwcGxpY2F0aW9uQWRhcHRlciBzY29wZUFwcGxpY2F0aW9uQWRhcHRlcjsKKworCXB1YmxpYyBJQ3J5cHRTdHJpbmcgZ2V0SW5zdGFuY2VPZkNyeXB0KCkgeworCQl0cnkgeworCisJCQlsb2cuZGVidWcoImdldEluc3RhbmNlT2ZDcnlwdDogIiArIHRoaXMpOworCisJCQlTdHJpbmcgY29uZmlnS2V5Q3J5cHRDbGFzc05hbWUgPSBzY29wZUFwcGxpY2F0aW9uQWRhcHRlcgorCQkJCQkuZ2V0Q3J5cHRLZXkoKTsKKworCQkJbG9nLmRlYnVnKCJjb25maWdLZXlDcnlwdENsYXNzTmFtZTogIiArIGNvbmZpZ0tleUNyeXB0Q2xhc3NOYW1lKTsKKworCQkJcmV0dXJuIChJQ3J5cHRTdHJpbmcpIENsYXNzLmZvck5hbWUoCisJCQkJCWNvbmZpZ0tleUNyeXB0Q2xhc3NOYW1lKS5uZXdJbnN0YW5jZSgpOworCisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlcnIpIHsKKwkJCWxvZy5lcnJvcigiW2dldEluc3RhbmNlT2ZDcnlwdF0iLCBlcnIpOworCQl9CisJCXJldHVybiBudWxsOworCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3V0aWxzL2dlb20vQXJyb3dTdHlsZS5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3V0aWxzL2dlb20vQXJyb3dTdHlsZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2NTBlZjMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdXRpbHMvZ2VvbS9BcnJvd1N0eWxlLmphdmEKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5nZW9tOworCitwdWJsaWMgY2xhc3MgQXJyb3dTdHlsZSB7CisKKwlwdWJsaWMgZG91YmxlIGhlYWRXaWR0aD0tMTsgLy9SZWxhdGl2ZSB3aWR0aCBvZiBhcnJvdyBoZWFkCisKKwkvKioKKwkgKiAKKwkgKiBOb3QgdXNlZCBpbiBkcmF3QXJyb3dIZWFkIGJlY2F1c2UgdGhlIGxlbmd0aCBpcyAKKwkgKiBkZXRlcm1pbmVkIGJ5IHRoZSBwb2ludHMgcGFzc2VkIGluCisJICogCisJICovCisJcHVibGljIGRvdWJsZSBoZWFkTGVuZ3RoPTEwOyAvL1BpeGVsIExlbmd0aCBvZiBhcnJvdyBoZWFkCisJCQkKKwkKKwlwdWJsaWMgZG91YmxlIHNoYWZ0VGhpY2tuZXNzPTI7CisJcHVibGljIGZsb2F0IHNoYWZ0UG9zaXRpb249MDsKKwkKKwkvKioKKwkgKiAgTm90IHVzZWQgaW4gZHJhd0Fycm93LCBvbmx5IGRyYXdBcnJvd0hlYWQKKwkgKiAJVGhpcyBsZXQncyB5b3UgY3VydmUgdGhlIGxpbmUgYXQgdGhlIGJhc2Ugb2YgdGhlIGFycm93CisJICovCisJcHVibGljIGRvdWJsZSBzaGFmdENvbnRyb2xQb3NpdGlvbj0uNTsKKwkvKioKKwkgKiBOb3QgdXNlZCBpbiBkcmF3QXJyb3csIG9ubHkgZHJhd0Fycm93SGVhZAorCSAqIFRoaXMgbGV0J3MgeW91IGN1cnZlIHRoZSBsaW5lIGF0IHRoZSBiYXNlIG9mIHRoZSBhcnJvdworCSAqLworCXB1YmxpYyBkb3VibGUgc2hhZnRDb250cm9sU2l6ZT0uNTsKKwkKKwkKKwlwdWJsaWMgZG91YmxlIGVkZ2VDb250cm9sUG9zaXRpb249LjU7CisJcHVibGljIGRvdWJsZSBlZGdlQ29udHJvbFNpemU9LjU7CisJCisJCisJcHVibGljIEFycm93U3R5bGUoZG91YmxlIGVkZ2VDb250cm9sUG9zaXRpb24sIGRvdWJsZSBlZGdlQ29udHJvbFNpemUsCisJCQlkb3VibGUgaGVhZExlbmd0aCwgZG91YmxlIGhlYWRXaWR0aCwgZG91YmxlIHNoYWZ0Q29udHJvbFBvc2l0aW9uLAorCQkJZG91YmxlIHNoYWZ0Q29udHJvbFNpemUsIGZsb2F0IHNoYWZ0UG9zaXRpb24sIGRvdWJsZSBzaGFmdFRoaWNrbmVzcykgeworCQlzdXBlcigpOworCQl0aGlzLmVkZ2VDb250cm9sUG9zaXRpb24gPSBlZGdlQ29udHJvbFBvc2l0aW9uOworCQl0aGlzLmVkZ2VDb250cm9sU2l6ZSA9IGVkZ2VDb250cm9sU2l6ZTsKKwkJdGhpcy5oZWFkTGVuZ3RoID0gaGVhZExlbmd0aDsKKwkJdGhpcy5oZWFkV2lkdGggPSBoZWFkV2lkdGg7CisJCXRoaXMuc2hhZnRDb250cm9sUG9zaXRpb24gPSBzaGFmdENvbnRyb2xQb3NpdGlvbjsKKwkJdGhpcy5zaGFmdENvbnRyb2xTaXplID0gc2hhZnRDb250cm9sU2l6ZTsKKwkJdGhpcy5zaGFmdFBvc2l0aW9uID0gc2hhZnRQb3NpdGlvbjsKKwkJdGhpcy5zaGFmdFRoaWNrbmVzcyA9IHNoYWZ0VGhpY2tuZXNzOworCX0KKwkKKwkKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy91dGlscy9nZW9tL0dlb21Qb2ludC5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3V0aWxzL2dlb20vR2VvbVBvaW50LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTAyZDkzZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy91dGlscy9nZW9tL0dlb21Qb2ludC5qYXZhCkBAIC0wLDAgKzEsMjExIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLmdlb207CisKK2ltcG9ydCBqYXZhLmF3dC5Qb2ludDsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CisKKy8qKgorICogCisgKiBKYXZhIEltcGxlbWVudGF0aW9uIG9mIHRoZSBBY3Rpb25zY3JpcHQgQ2xhc3MgZmxhc2guZ2VvbS5Qb2ludAorICogCisgKiBAYXV0aG9yIHN3YWduZXIKKyAqCisgKi8KKworcHVibGljIGNsYXNzIEdlb21Qb2ludCBleHRlbmRzIFBvaW50IHsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSA1NzI5ODMwNjUzNDAzMDc2ODI5TDsKKwlAU3VwcHJlc3NXYXJuaW5ncygidW51c2VkIikKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKEdlb21Qb2ludC5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCisJcHVibGljIEdlb21Qb2ludCBhZGQoR2VvbVBvaW50IHApIHsKKwkJR2VvbVBvaW50IGdQb2ludCA9IG5ldyBHZW9tUG9pbnQoKTsKKwkJZ1BvaW50LnNldExvY2F0aW9uKHRoaXMuZ2V0WCgpICsgcC5nZXRYKCksdGhpcy5nZXRZKCkgKyBwLmdldFkoKSk7CisJCXJldHVybiBnUG9pbnQ7CisJfQorCQorCXB1YmxpYyBHZW9tUG9pbnQgc3VidHJhY3QoR2VvbVBvaW50IHApIHsKKwkJR2VvbVBvaW50IGdQb2ludCA9IG5ldyBHZW9tUG9pbnQoKTsKKwkJZ1BvaW50LnNldExvY2F0aW9uKHRoaXMuZ2V0WCgpIC0gcC5nZXRYKCksdGhpcy5nZXRZKCkgLSBwLmdldFkoKSk7CisJCXJldHVybiBnUG9pbnQ7CisJfQorCQorCXB1YmxpYyBHZW9tUG9pbnQgY2xvbmUoKSB7CisJCUdlb21Qb2ludCBwID0gbmV3IEdlb21Qb2ludCgpOworCQlwLnNldExvY2F0aW9uKHRoaXMuZ2V0WCgpLCB0aGlzLmdldFkoKSk7CisJCXJldHVybiBwOworCX0KKwkKKwlwdWJsaWMgc3RhdGljIEdlb21Qb2ludCBpbnRlcnBvbGF0ZShHZW9tUG9pbnQgcDEsIEdlb21Qb2ludCBwMiwgZmxvYXQgZikgeworCQkKKwkJaWYgKGYgPT0gMCkgeworCQkJR2VvbVBvaW50IHAgPSBuZXcgR2VvbVBvaW50KCk7CisJCQlwLnNldExvY2F0aW9uKHAyLmdldFgoKSwgcDIuZ2V0WSgpKTsKKwkJCXJldHVybiBwOworCQl9IGVsc2UgaWYgKGYgPT0gMSkgeworCQkJR2VvbVBvaW50IHAgPSBuZXcgR2VvbVBvaW50KCk7CisJCQlwLnNldExvY2F0aW9uKHAxLmdldFgoKSwgcDEuZ2V0WSgpKTsKKwkJCXJldHVybiBwOworCQl9CisJCQorCQlkb3VibGUgcmV0dXJuVmFsdWVQMSA9IGxpbmVhckludGVycG9sYXRpb24ocDEuZ2V0WCgpLHAyLmdldFgoKSxmKTsKKwkJZG91YmxlIHJldHVyblZhbHVlUDIgPSBsaW5lYXJJbnRlcnBvbGF0aW9uKHAxLmdldFkoKSxwMi5nZXRZKCksZik7CisJCQorCQlHZW9tUG9pbnQgcCA9IG5ldyBHZW9tUG9pbnQoKTsKKwkJcC5zZXRMb2NhdGlvbihyZXR1cm5WYWx1ZVAxLCByZXR1cm5WYWx1ZVAyKTsKKwkJcmV0dXJuIHA7CisJfQorCQorCXB1YmxpYyBkb3VibGUgbGVuZ3RoKCkgeworCQlyZXR1cm4gTWF0aC5zcXJ0KCB0aGlzLmdldFgoKSp0aGlzLmdldFgoKSArIHRoaXMuZ2V0WSgpKnRoaXMuZ2V0WSgpICk7CisJfQorCQorCXB1YmxpYyBTdHJpbmcgdG9TdHJpbmcoKSB7CisJCXJldHVybiBnZXRDbGFzcygpLmdldE5hbWUoKSArICJbeD0iICsgdGhpcy5nZXRYKCkgKyAiLHk9IiArIHRoaXMuZ2V0WSgpICsgIl0iOworICAgIH0KKwkKKwlwdWJsaWMgdm9pZCBub3JtYWxpemUoZG91YmxlIG5ld0xlbmd0aCkgeworCQkKKwkJLy9GdW5jdGlvbiBmb3IgTGluZSB5ID0gbXggKyAwIAorCQkvL2dpdmVuIHBvaW50cyAwLDAgYW5kIHRoaXMuZ2V0WCgpLHRoaXMuZ2V0WSgpOworCQkvLwkJMCA9IG0qMCArIGMKKwkJLy8JCW0gPSAtYzsKKwkJLy8JCQorCQkvLwkJdGhpcy5nZXRZKCkgPSBtKnRoaXMuZ2V0WCgpOworCisJCWRvdWJsZSBtOworCQlpZiAodGhpcy5nZXRYKCkgPT0gMCkgeworCQkJLy9sb2cuZGVidWcoIkNhc2UgMSIpOworCQkJaWYgKHRoaXMuZ2V0WSgpIDwgMCkgeworCQkJCXRoaXMuc2V0TG9jYXRpb24oMCwgbmV3TGVuZ3RoICogLTEpOworCQkJfSBlbHNlIHsKKwkJCQl0aGlzLnNldExvY2F0aW9uKDAsIG5ld0xlbmd0aCk7CisJCQl9CisJCQlyZXR1cm47CisJCQkvL20gPSB0aGlzLmdldFkoKTsKKwkJfSBlbHNlIHsKKwkJCW0gPSB0aGlzLmdldFkoKSAvIHRoaXMuZ2V0WCgpOworCQkJLy9sb2cuZGVidWcoIkNhc2UgMiIpOworCQl9CisJCQorCQkvL2xvZy5kZWJ1ZygibSA6IittICsiIG5ld0xlbmd0aCAiK25ld0xlbmd0aCk7CisJCQorCQkvL0NpcmNsZSAoeC14MCleMiArICh5LXkwKV4yID0gcl4yCisJCS8vCQlhbnlZID0gbSAqIGFueVg7CisJCS8vCQluZXdMZW5ndGggKiBuZXdMZW5ndGggPSBhbnlZICogYW55WSArIGFueVggKiBhbnlYOworCQkvLwkJCisJCS8vCQluZXdMZW5ndGggKiBuZXdMZW5ndGggPSAobSAqIGFueVgpICogKG0gKiBhbnlYKSArIGFueVggKiBhbnlYOworCQkvLwkJCisJCS8vCQluZXdMZW5ndGggKiBuZXdMZW5ndGggPSBtICogbSAqIGFueVggKiBhbnlYICsgYW55WCAqIGFueVg7CisJCS8vCQluZXdMZW5ndGggKiBuZXdMZW5ndGggPSAoIG0qbSArIDEgKSAqIGFueVggKiBhbnlYOworCQkvLwkJCisJCS8vCQluZXdMZW5ndGggKiBuZXdMZW5ndGggLyAoIG0qbSArIDEgKSA9IGFueVggKiBhbnlYOworCQkKKwkJZG91YmxlIGFueVggPSBNYXRoLnNxcnQoICggbmV3TGVuZ3RoICogbmV3TGVuZ3RoICkgLyAoIG0qbSArIDEgKSApOworCQlkb3VibGUgYW55WSA9IG0gKiBhbnlYOworCQkKKwkJLy9sb2cuZGVidWcoImFueVggOiIrYW55WCArICIgYW55WTogIiArIGFueVkpOworCQkKKwkJLy90cmFuc2xhdGUgdG8gRmxhc2ggcG9pbnQgb2Ygb3JpZ2luCisJCWlmICh0aGlzLmdldFgoKSA8IDApIHsKKwkJCWFueVggKj0gLTE7CisJCQlhbnlZICo9IC0xOworCQl9CisJCQorCQkvL2xvZy5kZWJ1ZygiYW55WCA6IithbnlYICsgIiBhbnlZOiAiICsgYW55WSk7CisJCXRoaXMuc2V0TG9jYXRpb24oYW55WCwgYW55WSk7CisJCQorCX0KKwkKKwkvKioKKwkgKiBJbnRlcnBvbGF0ZSBvbmUgbnVtYmVyCisJICogQHBhcmFtIGEKKwkgKiBAcGFyYW0gYgorCSAqIEBwYXJhbSB0CisJICogQHJldHVybgorCSAqLworCXB1YmxpYyBzdGF0aWMgZG91YmxlIGxpbmVhckludGVycG9sYXRpb24oZG91YmxlIGEsIGRvdWJsZSBiLCBmbG9hdCB0KSB7CisJCXJldHVybiBhICsgdCAqIChiIC0gYSk7CisJfQorCQorCisJcHVibGljIHN0YXRpYyBHZW9tUG9pbnQgZ2V0TGluZUludGVyc2VjdGlvbiAoIEdlb21Qb2ludCBhMSxHZW9tUG9pbnQgYTIsCisJCQlHZW9tUG9pbnQgYjEsR2VvbVBvaW50IGIyKSB7CisJCQorCQkvL2xvZy5kZWJ1ZygiYjE6ICIrYjEpOworCQkvL2xvZy5kZWJ1ZygiYjI6ICIrYjIpOworCQkKKwkJZG91YmxlIHgseSxtMSxtMjsKKwkKKwkJaWYgKChhMi5nZXRYKCktYTEuZ2V0WCgpKSA9PSAwKSB7CisJCQkKKwkJCS8vbG9nLmRlYnVnKCJrMSBeIDAiKTsKKwkJCQorCQkJZG91YmxlIGsyID0gKGIyLmdldFkoKS1iMS5nZXRZKCkpIC8gKGIyLmdldFgoKS1iMS5nZXRYKCkpOworCQkJLy9sb2cuZGVidWcoImsyOiAiK2syKTsKKwkJCS8vbG9nLmRlYnVnKCJiMS5nZXRZKCk6ICIrYjEuZ2V0WSgpKTsKKwkJCS8vbG9nLmRlYnVnKCJiMi5nZXRZKCk6ICIrYjIuZ2V0WSgpKTsKKwkJCS8vIGFuIGluZmluaXRlIGRpcmVjdGlvbmFsIGNvbnN0YW50IG1lYW5zIHRoZSBsaW5lIGlzIHZlcnRpY2FsCisJCQkvLyBzbyB0aGUgaW50ZXJzZWN0aW9uIG11c3QgYmUgYXQgdGhlIHggY29vcmRpbmF0ZSBvZiB0aGUgbGluZQorCQkJeCA9IGExLmdldFgoKTsKKyAgICAgICAgICAgIG0yID0gYjEuZ2V0WSgpIC0gazIgKiBiMS5nZXRYKCk7CisgICAgICAgICAgICAvL2xvZy5kZWJ1ZygibTI6ICIrbTIpOworICAgICAgICAgICAgeSA9IGsyICogeCArIG0yOworICAgICAgICAgICAgLy9sb2cuZGVidWcoInk6ICIreSk7CisJCQkKKwkJfSBlbHNlIGlmKChiMi5nZXRYKCktYjEuZ2V0WCgpKSA9PSAwKSB7CisJCQkKKwkJCS8vbG9nLmRlYnVnKCJrMiBeXiAwIik7CisJCQkKKwkJCWRvdWJsZSBrMSA9IChhMi5nZXRZKCktYTEuZ2V0WSgpKSAvIChhMi5nZXRYKCktYTEuZ2V0WCgpKTsKKwkJCS8vIHNhbWUgYXMgYWJvdmUgZm9yIGxpbmUgMgorCQkJbTEgPSBhMS5nZXRZKCkgLSBrMSAqIGExLmdldFgoKTsKKwkJCXggPSBiMS5nZXRYKCk7CisJCQl5ID0gazEgKiB4ICsgbTE7CisJCQkKKwkJfSBlbHNlIHsKKwkJCisJCQkvL2NhbGN1bGF0ZSBkaXJlY3Rpb25hbCBjb25zdGFudHMKKwkJCWRvdWJsZSBrMSA9IChhMi5nZXRZKCktYTEuZ2V0WSgpKSAvIChhMi5nZXRYKCktYTEuZ2V0WCgpKTsKKwkJCWRvdWJsZSBrMiA9IChiMi5nZXRZKCktYjEuZ2V0WSgpKSAvIChiMi5nZXRYKCktYjEuZ2V0WCgpKTsKKwkJCQorCQkJLy8gaWYgdGhlIGRpcmVjdGlvbmFsIGNvbnN0YW50cyBhcmUgZXF1YWwsIHRoZSBsaW5lcyBhcmUgcGFyYWxsZWwsCisJCQkvLyBtZWFuaW5nIHRoZXJlIGlzIG5vIGludGVyc2VjdGlvbiBwb2ludC4KKwkJCWlmKCBrMSA9PSBrMiApIHJldHVybiBudWxsOworCQkKKwkJCS8vbG9nLmRlYnVnKCJuZWl0aGVyIik7CisvLwkJCWxvZy5kZWJ1ZygiazE6ICIrazEpOworLy8JCQlsb2cuZGVidWcoImsyOiAiK2syKTsKKwkJCQorCQkJbTEgPSBhMS5nZXRZKCkgLSBrMSAqIGExLmdldFgoKTsKKwkJCW0yID0gYjEuZ2V0WSgpIC0gazIgKiBiMS5nZXRYKCk7CQkJCQorCQkJeCA9IChtMS1tMikgLyAoazItazEpOworCQkJeSA9IGsxICogeCArIG0xOworCQl9CisJCQorCQkKKwkJR2VvbVBvaW50IGdQb2ludCA9IG5ldyBHZW9tUG9pbnQoKTsKKwkJZ1BvaW50LnNldExvY2F0aW9uKHgsIHkpOworCQkKKwkJcmV0dXJuIGdQb2ludDsKKwl9CQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3V0aWxzL2ltYWdlL0ltYWdlVXRpbGl0eS5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3V0aWxzL2ltYWdlL0ltYWdlVXRpbGl0eS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlkOTBmMzMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdXRpbHMvaW1hZ2UvSW1hZ2VVdGlsaXR5LmphdmEKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5pbWFnZTsKKworaW1wb3J0IGphdmEuYXd0LmltYWdlLkJ1ZmZlcmVkSW1hZ2U7CitpbXBvcnQgamF2YS5pby5CeXRlQXJyYXlJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLkJ5dGVBcnJheU91dHB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOworCitpbXBvcnQgamF2YXguaW1hZ2Vpby5JbWFnZUlPOworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKKworCisJCitwdWJsaWMgY2xhc3MgSW1hZ2VVdGlsaXR5IHsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoSW1hZ2VVdGlsaXR5LmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisJc3RhdGljIHtJbWFnZUlPLnNldFVzZUNhY2hlKGZhbHNlKTt9CisKKwlwdWJsaWMgc3RhdGljIGphdmEuYXd0LmltYWdlLkJ1ZmZlcmVkSW1hZ2UgcmVhZChqYXZhLmlvLklucHV0U3RyZWFtIGluKSB0aHJvd3MgSU9FeGNlcHRpb24geworCQlqYXZhLmF3dC5pbWFnZS5CdWZmZXJlZEltYWdlIGltYWdlID0gbnVsbDsgIAorCQlpbWFnZSA9IEltYWdlSU8ucmVhZChpbik7CisJCWlmIChpbWFnZSA9PSBudWxsKQorCQkJdGhyb3cgbmV3IGphdmEuaW8uSU9FeGNlcHRpb24oIlJlYWQgZmFpbHMiKTsgICAgICAgICAgICAgICAgICAKKwkJcmV0dXJuIGltYWdlOworCX0KKwkgCisJcHVibGljIHN0YXRpYyBCdWZmZXJlZEltYWdlIHJlYWQoYnl0ZVtdIGJ5dGVzKSB7CisJCXRyeSB7CisJCQlyZXR1cm4gcmVhZChuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0oYnl0ZXMpKTsKKwkJfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgeworCQkJbG9nLmVycm9yKCJbcmVhZF0iLCBlKTsKKwkJCXJldHVybiBudWxsOworCQl9CisJfSAKKworCXB1YmxpYyBzdGF0aWMgYnl0ZVtdIHRvQnl0ZUFycmF5KEJ1ZmZlcmVkSW1hZ2UgaW1hZ2UpIHsKKwkJdHJ5IHsKKwkJCUJ5dGVBcnJheU91dHB1dFN0cmVhbSBvdXQgPSBuZXcgQnl0ZUFycmF5T3V0cHV0U3RyZWFtKCk7CisJCQlJbWFnZUlPLndyaXRlKGltYWdlLCAianBlZyIsIG91dCk7IC8vIHdyaXRlIHdpdGhvdXQgY29tcHJlc3Npb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorCQkJcmV0dXJuIG91dC50b0J5dGVBcnJheSgpOworCQl9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7CisJCQl0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbihlKTsKKwkJfQorCX0KKworfQorCisKZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy91dGlscy9pbWFnZS9aaXBVdGlsaXR5LmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdXRpbHMvaW1hZ2UvWmlwVXRpbGl0eS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkNmU4ODQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdXRpbHMvaW1hZ2UvWmlwVXRpbGl0eS5qYXZhCkBAIC0wLDAgKzEsNTIgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMuaW1hZ2U7CisKK2ltcG9ydCBqYXZhLmlvLkJ5dGVBcnJheUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5T3V0cHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5PYmplY3RJbnB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLmlvLk9iamVjdE91dHB1dFN0cmVhbTsKKworLyoqCisgKiBaaXBVdGlsaXR5LmphdmEKKyAqIEBhdXRob3IgYmVuYmFjCisgKi8KKworcHVibGljIGNsYXNzIFppcFV0aWxpdHkgeworCisgICAgQFN1cHByZXNzV2FybmluZ3MoInVuY2hlY2tlZCIpCisJcHVibGljIHN0YXRpYyA8VD4gVCBieXRlQXJyYXl0b09iamVjdChieXRlW10gZGF0YSkgdGhyb3dzIEV4Y2VwdGlvbiB7ICAgICAgIAorICAgICAgICBCeXRlQXJyYXlJbnB1dFN0cmVhbSBiYWlzID0gbmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKGRhdGEpOyAgICAgICAgICAgICAgCisgICAgICAgIE9iamVjdElucHV0U3RyZWFtIG9pcyA9IG5ldyBPYmplY3RJbnB1dFN0cmVhbShiYWlzKTsKKyAgICAgICAgb2lzLmNsb3NlKCk7CisgICAgICAgIGJhaXMuY2xvc2UoKTsgICAgICAgIAorICAgICAgICByZXR1cm4gKFQpb2lzLnJlYWRPYmplY3QoKTsgICAgICAgICAgICAgICAgCisgICAgIH0gICAgIAorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgYnl0ZVtdIG9iamVjdHRvQnl0ZUFycmF5KE9iamVjdCBvYmopIHRocm93cyBJT0V4Y2VwdGlvbiB7CisgICAgICAgIEJ5dGVBcnJheU91dHB1dFN0cmVhbSBib3MgPSBuZXcgQnl0ZUFycmF5T3V0cHV0U3RyZWFtKCk7CisgICAgICAgIE9iamVjdE91dHB1dFN0cmVhbSBvb3MgPSBuZXcgT2JqZWN0T3V0cHV0U3RyZWFtKGJvcyk7CisgICAgICAgIG9vcy53cml0ZU9iamVjdChvYmopOworICAgICAgICBvb3MuZmx1c2goKTsKKyAgICAgICAgb29zLmNsb3NlKCk7CisgICAgICAgIGJvcy5jbG9zZSgpOworICAgICAgICByZXR1cm4gYm9zLnRvQnl0ZUFycmF5KCk7CisgICAgfSAgICAgICAgICAgIAorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3V0aWxzL21haWwvQnl0ZUFycmF5RGF0YVNvdXJjZS5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3V0aWxzL21haWwvQnl0ZUFycmF5RGF0YVNvdXJjZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgzN2I3MmUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdXRpbHMvbWFpbC9CeXRlQXJyYXlEYXRhU291cmNlLmphdmEKQEAgLTAsMCArMSw4NyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5tYWlsOworCitpbXBvcnQgamF2YS5pby4qOworaW1wb3J0IGphdmF4LmFjdGl2YXRpb24uKjsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CisKK3B1YmxpYyBjbGFzcyBCeXRlQXJyYXlEYXRhU291cmNlIGltcGxlbWVudHMgRGF0YVNvdXJjZSB7CisJCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcihCeXRlQXJyYXlEYXRhU291cmNlLmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisJCisJcHJpdmF0ZSBieXRlW10gZGF0YTsgLy8gZGF0YQorCisJcHJpdmF0ZSBTdHJpbmcgdHlwZTsgLy8gY29udGVudC10eXBlCisKKwkvKiBDcmVhdGUgYSBEYXRhU291cmNlIGZyb20gYW4gaW5wdXQgc3RyZWFtICovCisJcHVibGljIEJ5dGVBcnJheURhdGFTb3VyY2UoSW5wdXRTdHJlYW0gaXMsIFN0cmluZyB0eXBlKSB7CisJCXRoaXMudHlwZSA9IHR5cGU7CisJCXRyeSB7CisJCQlCeXRlQXJyYXlPdXRwdXRTdHJlYW0gb3MgPSBuZXcgQnl0ZUFycmF5T3V0cHV0U3RyZWFtKCk7CisJCQlpbnQgY2g7CisKKwkJCXdoaWxlICgoY2ggPSBpcy5yZWFkKCkpICE9IC0xKQorCQkJCW9zLndyaXRlKGNoKTsKKwkJCWRhdGEgPSBvcy50b0J5dGVBcnJheSgpOworCQkJb3MuY2xvc2UoKTsKKwkJfSBjYXRjaCAoSU9FeGNlcHRpb24gaW9leCkgeworCQkJbG9nLmVycm9yKCJbQnl0ZUFycmF5RGF0YVNvdXJjZV0iLCBpb2V4KTsKKwkJfQorCX0KKworCS8qIENyZWF0ZSBhIERhdGFTb3VyY2UgZnJvbSBhIGJ5dGUgYXJyYXkgKi8KKwlwdWJsaWMgQnl0ZUFycmF5RGF0YVNvdXJjZShieXRlW10gZGF0YSwgU3RyaW5nIHR5cGUpIHsKKwkJdGhpcy5kYXRhID0gZGF0YTsKKwkJdGhpcy50eXBlID0gdHlwZTsKKwl9CisKKwkvKiBDcmVhdGUgYSBEYXRhU291cmNlIGZyb20gYSBTdHJpbmcgKi8KKwlwdWJsaWMgQnl0ZUFycmF5RGF0YVNvdXJjZShTdHJpbmcgZGF0YSwgU3RyaW5nIHR5cGUpIHsKKwkJdHJ5IHsKKwkJCS8vIEFzc3VtcHRpb24gdGhhdCB0aGUgc3RyaW5nIGNvbnRhaW5zIG9ubHkgQVNDSUkKKwkJCS8vIGNoYXJhY3RlcnMhIE90aGVyd2lzZSBqdXN0IHBhc3MgYSBjaGFyc2V0IGludG8gdGhpcworCQkJLy8gY29uc3RydWN0b3IgYW5kIHVzZSBpdCBpbiBnZXRCeXRlcygpCisJCQl0aGlzLmRhdGEgPSBkYXRhLmdldEJ5dGVzKCJ1dGYtOCIpOworCQl9IGNhdGNoIChVbnN1cHBvcnRlZEVuY29kaW5nRXhjZXB0aW9uIHVleCkgeworCQl9CisJCXRoaXMudHlwZSA9IHR5cGU7CisJfQorCisJcHVibGljIElucHV0U3RyZWFtIGdldElucHV0U3RyZWFtKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKwkJaWYgKGRhdGEgPT0gbnVsbCkKKwkJCXRocm93IG5ldyBJT0V4Y2VwdGlvbigibm8gZGF0YSIpOworCQlyZXR1cm4gbmV3IEJ5dGVBcnJheUlucHV0U3RyZWFtKGRhdGEpOworCX0KKworCXB1YmxpYyBPdXRwdXRTdHJlYW0gZ2V0T3V0cHV0U3RyZWFtKCkgdGhyb3dzIElPRXhjZXB0aW9uIHsKKwkJdGhyb3cgbmV3IElPRXhjZXB0aW9uKCJjYW5ub3QgZG8gdGhpcyIpOworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0Q29udGVudFR5cGUoKSB7CisJCXJldHVybiB0eXBlOworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0TmFtZSgpIHsKKwkJcmV0dXJuICJkdW1teSI7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3V0aWxzL21haWwvSWNhbEhhbmRsZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy91dGlscy9tYWlsL0ljYWxIYW5kbGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWYwMjk3MwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy91dGlscy9tYWlsL0ljYWxIYW5kbGVyLmphdmEKQEAgLTAsMCArMSwyNDMgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMubWFpbDsKKworaW1wb3J0IGphdmEuaW8uQnl0ZUFycmF5T3V0cHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uRmlsZU91dHB1dFN0cmVhbTsKK2ltcG9ydCBqYXZhLm5ldC5VUkk7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgamF2YS51dGlsLkhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLlZlY3RvcjsKKworaW1wb3J0IG5ldC5mb3J0dW5hLmljYWw0ai5kYXRhLkNhbGVuZGFyT3V0cHV0dGVyOworaW1wb3J0IG5ldC5mb3J0dW5hLmljYWw0ai5tb2RlbC5EYXRlVGltZTsKK2ltcG9ydCBuZXQuZm9ydHVuYS5pY2FsNGoubW9kZWwuVGltZVpvbmU7CitpbXBvcnQgbmV0LmZvcnR1bmEuaWNhbDRqLm1vZGVsLlRpbWVab25lUmVnaXN0cnk7CitpbXBvcnQgbmV0LmZvcnR1bmEuaWNhbDRqLm1vZGVsLlRpbWVab25lUmVnaXN0cnlGYWN0b3J5OworaW1wb3J0IG5ldC5mb3J0dW5hLmljYWw0ai5tb2RlbC5jb21wb25lbnQuVkV2ZW50OworaW1wb3J0IG5ldC5mb3J0dW5hLmljYWw0ai5tb2RlbC5wYXJhbWV0ZXIuQ247CitpbXBvcnQgbmV0LmZvcnR1bmEuaWNhbDRqLm1vZGVsLnBhcmFtZXRlci5Sb2xlOworaW1wb3J0IG5ldC5mb3J0dW5hLmljYWw0ai5tb2RlbC5wcm9wZXJ0eS5BdHRlbmRlZTsKK2ltcG9ydCBuZXQuZm9ydHVuYS5pY2FsNGoubW9kZWwucHJvcGVydHkuQ2FsU2NhbGU7CitpbXBvcnQgbmV0LmZvcnR1bmEuaWNhbDRqLm1vZGVsLnByb3BlcnR5LkRlc2NyaXB0aW9uOworaW1wb3J0IG5ldC5mb3J0dW5hLmljYWw0ai5tb2RlbC5wcm9wZXJ0eS5Mb2NhdGlvbjsKK2ltcG9ydCBuZXQuZm9ydHVuYS5pY2FsNGoubW9kZWwucHJvcGVydHkuTWV0aG9kOworaW1wb3J0IG5ldC5mb3J0dW5hLmljYWw0ai5tb2RlbC5wcm9wZXJ0eS5Pcmdhbml6ZXI7CitpbXBvcnQgbmV0LmZvcnR1bmEuaWNhbDRqLm1vZGVsLnByb3BlcnR5LlByb2RJZDsKK2ltcG9ydCBuZXQuZm9ydHVuYS5pY2FsNGoubW9kZWwucHJvcGVydHkuU2VxdWVuY2U7CitpbXBvcnQgbmV0LmZvcnR1bmEuaWNhbDRqLm1vZGVsLnByb3BlcnR5LlRyYW5zcDsKK2ltcG9ydCBuZXQuZm9ydHVuYS5pY2FsNGoubW9kZWwucHJvcGVydHkuVWlkOworaW1wb3J0IG5ldC5mb3J0dW5hLmljYWw0ai5tb2RlbC5wcm9wZXJ0eS5WZXJzaW9uOworaW1wb3J0IG5ldC5mb3J0dW5hLmljYWw0ai51dGlsLlVpZEdlbmVyYXRvcjsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CisKKy8qKgorICogCisgKiBAYXV0aG9yIG8uYmVjaGVyZXIsIHNlYmEud2FnbmVyCisgKiAKKyAqLworcHVibGljIGNsYXNzIEljYWxIYW5kbGVyIHsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoCisJCQlNYWlsSGFuZGxlci5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCisJLyoqIElDYWwgaW5zdGFuY2UgKi8KKwlwcml2YXRlIGZpbmFsIG5ldC5mb3J0dW5hLmljYWw0ai5tb2RlbC5DYWxlbmRhciBpY3NDYWxlbmRhcjsKKworCS8qKiBUaW1lWm9uZSAqLworCS8vIHByaXZhdGUgVGltZVpvbmUgdGltZVpvbmU7CisJLy8gcHJpdmF0ZSBUaW1lWm9uZVJlZ2lzdHJ5IHRpbWVSZWdpc3RyeTsKKworCS8qKiBDcmVhdGlvbiBvZiBhIG5ldyBFdmVudCAqLworCXB1YmxpYyBmaW5hbCBzdGF0aWMgTWV0aG9kIElDQUxfTUVUSE9EX1JFUVVFU1QgPSBNZXRob2QuUkVRVUVTVDsKKwlwdWJsaWMgZmluYWwgc3RhdGljIE1ldGhvZCBJQ0FMX01FVEhPRF9DQU5DRUwgPSBNZXRob2QuQ0FOQ0VMOworCXB1YmxpYyBmaW5hbCBzdGF0aWMgTWV0aG9kIElDQUxfTUVUSE9EX1JFRlJFU0ggPSBNZXRob2QuUkVGUkVTSDsKKworCS8qKgorCSAqIEtvbnN0cnVrdG9yIHdpdGggRGVmYXVsdFRpbWVab25lCisJICogCisJICogQHBhcmFtIG1ldGhvZAorCSAqICAgICAgICAgICAgKEBzZWUgSWNhbEhhbmRsZXIgQ29uc3RhbnRzKQorCSAqIEB0aHJvd3MgRXhjZXB0aW9uCisJICovCisJcHVibGljIEljYWxIYW5kbGVyKE1ldGhvZCBtZXRob2QpIHsKKwkJbG9nLmRlYnVnKCJJY2FsaGFuZGxlciBtZXRob2QgdHlwZSA6ICIgKyBtZXRob2QpOworCQkKKwkJaWNzQ2FsZW5kYXIgPSBuZXcgbmV0LmZvcnR1bmEuaWNhbDRqLm1vZGVsLkNhbGVuZGFyKCk7CisKKwkJaWNzQ2FsZW5kYXIuZ2V0UHJvcGVydGllcygpLmFkZCgKKwkJCQluZXcgUHJvZElkKCItLy9FdmVudHMgQ2FsZW5kYXIvL2lDYWw0aiAxLjAvL0VOIikpOworCQlpY3NDYWxlbmRhci5nZXRQcm9wZXJ0aWVzKCkuYWRkKFZlcnNpb24uVkVSU0lPTl8yXzApOworCQlpY3NDYWxlbmRhci5nZXRQcm9wZXJ0aWVzKCkuYWRkKENhbFNjYWxlLkdSRUdPUklBTik7CisJCQorCQlpY3NDYWxlbmRhci5nZXRQcm9wZXJ0aWVzKCkuYWRkKG1ldGhvZCk7CisJfQorCisJLyoqCisJICogCisJICogQHBhcmFtIHN0YXJ0RGF0ZQorCSAqICAgICAgICAgICAgdXNlIHN0YW5kYXJkIFRpbWVab25lISEKKwkgKiBAcGFyYW0gZW5kRGF0ZQorCSAqICAgICAgICAgICAgdXNlIHN0YW5kYXJkIHRpbWUgem9uZSEhCisJICogQHBhcmFtIG5hbWUKKwkgKiAgICAgICAgICAgIG1lZXRpbmcgbmFtZQorCSAqIEBwYXJhbSBhdHRlbmRlZXMKKwkgKiAgICAgICAgICAgIExpc3Qgb2YgYXR0ZW5kZWVzICh1c2UgZ2V0QXR0ZW5kZWVEYXRhIHRvIHJldHJpZXZlIHZhbGlkCisJICogICAgICAgICAgICByZWNvcmRzKQorCSAqIEBwYXJhbSBkZXNjcmlwdGlvbgorCSAqICAgICAgICAgICAgY29udGFpbmluZyB0aGUgbWVldGluZyBkZXNjcmlwdGlvbgorCSAqIEBwYXJhbSB1aWQKKwkgKiAgICAgICAgICAgIChtYXliZSBudWxsKQorCSAqIEByZXR1cm4gVUlEIG9mIE1lZXRpbmcKKwkgKi8KKwkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlwdWJsaWMgU3RyaW5nIGFkZE5ld01lZXRpbmcoRGF0ZSBzdGFydERhdGUsCisJCQlEYXRlIGVuZERhdGUsIFN0cmluZyBuYW1lLAorCQkJVmVjdG9yPEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+PiBhdHRlbmRlZXMsIFN0cmluZyBkZXNjcmlwdGlvbiwKKwkJCUhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG9yZ2FuaXplciwgU3RyaW5nIHVpZCwgamF2YS51dGlsLlRpbWVab25lIG5vcm1hbFRpbWVab25lKQorCQkJdGhyb3dzIEV4Y2VwdGlvbiB7CisKKwkJVGltZVpvbmVSZWdpc3RyeSByZWdpc3RyeSA9IFRpbWVab25lUmVnaXN0cnlGYWN0b3J5LmdldEluc3RhbmNlKCkKKwkJCQkuY3JlYXRlUmVnaXN0cnkoKTsKKwkJCisJCVRpbWVab25lIHRpbWVab25lID0gcmVnaXN0cnkuZ2V0VGltZVpvbmUobm9ybWFsVGltZVpvbmUuZ2V0SUQoKSk7CisKKwkJRGF0ZVRpbWUgc3RhcnQgPSBuZXcgRGF0ZVRpbWUoc3RhcnREYXRlKTsKKwkJc3RhcnQuc2V0VGltZVpvbmUodGltZVpvbmUpOworCQlEYXRlVGltZSBlbmQgPSBuZXcgRGF0ZVRpbWUoZW5kRGF0ZSk7CisJCWVuZC5zZXRUaW1lWm9uZSh0aW1lWm9uZSk7CisJCQorCQlWRXZlbnQgbWVldGluZyA9IG5ldyBWRXZlbnQoc3RhcnQsIGVuZCwgbmFtZSk7CisKKwkJbWVldGluZy5nZXRQcm9wZXJ0aWVzKCkuYWRkKG5ldyBEZXNjcmlwdGlvbihkZXNjcmlwdGlvbikpOworCQltZWV0aW5nLmdldFByb3BlcnRpZXMoKS5hZGQobmV3IFNlcXVlbmNlKDApKTsKKwkJbWVldGluZy5nZXRQcm9wZXJ0aWVzKCkuYWRkKG5ldyBMb2NhdGlvbigiIikpOworCQltZWV0aW5nLmdldFByb3BlcnRpZXMoKS5hZGQoVHJhbnNwLk9QQVFVRSk7CisKKwkJLy8gZ2VuZXJhdGUgdW5pcXVlIGlkZW50aWZpZXIgKGlmIG5vdCBzdWJtaXR0ZWQpCisJCVVpZCB1aSA9IG51bGw7CisJCWlmICh1aWQgPT0gbnVsbCB8fCB1aWQubGVuZ3RoKCkgPCAxKSB7CisJCQl1aSA9IG5ldyBVaWRHZW5lcmF0b3IoInVpZEdlbiIpLmdlbmVyYXRlVWlkKCk7CisJCQlsb2cuZGVidWcoIkdlbmVyYXRpbmcgTWVldGluZyBVSUQgOiAiICsgdWkuZ2V0VmFsdWUoKSk7CisJCX0gZWxzZSB7CisJCQl1aSA9IG5ldyBVaWQodWlkKTsKKwkJCWxvZy5kZWJ1ZygiVXNpbmcgTWVldGluZyBVSUQgOiAiICsgdWkuZ2V0VmFsdWUoKSk7CisJCX0KKworCQltZWV0aW5nLmdldFByb3BlcnRpZXMoKS5hZGQodWkpOworCisJCWZvciAoaW50IGkgPSAwOyBpIDwgYXR0ZW5kZWVzLnNpemUoKTsgaSsrKSB7CisJCQlIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBvbmVBdHQgPSBhdHRlbmRlZXMuZ2V0KGkpOworCisJCQlBdHRlbmRlZSB1bm8gPSBuZXcgQXR0ZW5kZWUoVVJJLmNyZWF0ZShvbmVBdHQuZ2V0KCJ1cmkiKSkpOworCisJCQlTdHJpbmcgY2hhaXIgPSBvbmVBdHQuZ2V0KCJjaGFpciIpOworCisJCQlpZiAoY2hhaXIuZXF1YWxzKCIwIikpCisJCQkJdW5vLmdldFBhcmFtZXRlcnMoKS5hZGQoUm9sZS5SRVFfUEFSVElDSVBBTlQpOworCQkJZWxzZQorCQkJCXVuby5nZXRQYXJhbWV0ZXJzKCkuYWRkKFJvbGUuQ0hBSVIpOworCisJCQl1bm8uZ2V0UGFyYW1ldGVycygpLmFkZChuZXcgQ24ob25lQXR0LmdldCgiY24iKSkpOworCQkJbWVldGluZy5nZXRQcm9wZXJ0aWVzKCkuYWRkKHVubyk7CisJCX0KKworCQlPcmdhbml6ZXIgb3JnZXIgPSBuZXcgT3JnYW5pemVyKFVSSS5jcmVhdGUob3JnYW5pemVyLmdldCgidXJpIikpKTsKKwkJb3JnZXIuZ2V0UGFyYW1ldGVycygpLmFkZChuZXcgQ24ob3JnYW5pemVyLmdldCgiY24iKSkpOworCisJCW1lZXRpbmcuZ2V0UHJvcGVydGllcygpLmFkZChvcmdlcik7CisKKwkJaWNzQ2FsZW5kYXIuZ2V0Q29tcG9uZW50cygpLmFkZCh0aW1lWm9uZS5nZXRWVGltZVpvbmUoKSk7CisJCWljc0NhbGVuZGFyLmdldENvbXBvbmVudHMoKS5hZGQobWVldGluZyk7CisKKwkJcmV0dXJuIHVpLmdldFZhbHVlKCk7CisKKwl9CisKKwkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCS8qKgorCSAqIFVzZSB0aGlzIGZ1bmN0aW9uIHRvIGJ1aWxkIGEgdmFsaWQgcmVjb3JkIGZvciB0aGUgQXR0ZW5kZWVMaXN0IGZvcgorCSAqIGFkZE1lZXRpbmdzIEdlbmVyYXRlIGEgQXR0ZW5kZWUKKwkgKi8KKwkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKwlwdWJsaWMgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gZ2V0QXR0ZW5kZWVEYXRhKFN0cmluZyBlbWFpbEFkcmVzcywKKwkJCVN0cmluZyBkaXNwbGF5TmFtZSwgQm9vbGVhbiBjaGFpcikgeworCisJCUhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IG9uZVJlY29yZCA9IG5ldyBIYXNoTWFwPFN0cmluZywgU3RyaW5nPigpOworCQlvbmVSZWNvcmQucHV0KCJ1cmkiLCAibWFpbHRvOiIgKyBlbWFpbEFkcmVzcyk7CisJCW9uZVJlY29yZC5wdXQoImNuIiwgZGlzcGxheU5hbWUpOworCisJCWlmIChjaGFpcikKKwkJCW9uZVJlY29yZC5wdXQoImNoYWlyIiwgIjEiKTsKKwkJZWxzZQorCQkJb25lUmVjb3JkLnB1dCgiY2hhaXIiLCAiMCIpOworCisJCXJldHVybiBvbmVSZWNvcmQ7CisKKwl9CisKKwkvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworCS8qKgorCSAqIFdyaXRlIGlDYWwgdG8gRmlsZQorCSAqLworCS8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCXB1YmxpYyB2b2lkIHdyaXRlRGF0YVRvRmlsZShTdHJpbmcgZmlsZXJQYXRoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworCQlpZiAoIWZpbGVyUGF0aC5lbmRzV2l0aCgiLmljcyIpKQorCQkJZmlsZXJQYXRoID0gZmlsZXJQYXRoICsgIi5pY3MiOworCisJCUZpbGVPdXRwdXRTdHJlYW0gZm91dCA9IG5ldyBGaWxlT3V0cHV0U3RyZWFtKGZpbGVyUGF0aCk7CisKKwkJQ2FsZW5kYXJPdXRwdXR0ZXIgb3V0cHV0dGVyID0gbmV3IENhbGVuZGFyT3V0cHV0dGVyKCk7CisJCW91dHB1dHRlci5vdXRwdXQoaWNzQ2FsZW5kYXIsIGZvdXQpOworCisJfQorCisJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwkvKioKKwkgKiBHZXQgSWNhbEJvZHkgYXMgQnl0ZUFycmF5CisJICovCisJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJcHVibGljIGJ5dGVbXSBnZXRJY2FsQXNCeXRlQXJyYXkoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKworCQlCeXRlQXJyYXlPdXRwdXRTdHJlYW0gYm91dCA9IG5ldyBCeXRlQXJyYXlPdXRwdXRTdHJlYW0oKTsKKwkJQ2FsZW5kYXJPdXRwdXR0ZXIgb3V0cHV0dGVyID0gbmV3IENhbGVuZGFyT3V0cHV0dGVyKCk7CisJCW91dHB1dHRlci5vdXRwdXQoaWNzQ2FsZW5kYXIsIGJvdXQpOworCQlyZXR1cm4gYm91dC50b0J5dGVBcnJheSgpOworCisJfQorCisJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKwkvKioKKwkgKiBSZXRyaWV2aW5nIERhdGEgYXMgU3RyaW5nCisJICovCisJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisJcHVibGljIFN0cmluZyBnZXRJQ2FsRGF0YUFzU3RyaW5nKCkgeworCQlyZXR1cm4gaWNzQ2FsZW5kYXIudG9TdHJpbmcoKTsKKwl9CisJLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy91dGlscy9tYWlsL01haWxIYW5kbGVyLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdXRpbHMvbWFpbC9NYWlsSGFuZGxlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlNmRkNjkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdXRpbHMvbWFpbC9NYWlsSGFuZGxlci5qYXZhCkBAIC0wLDAgKzEsMjQ5IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLm1haWw7CisKK2ltcG9ydCBqYXZhLmlvLkJ5dGVBcnJheUlucHV0U3RyZWFtOworaW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CitpbXBvcnQgamF2YS5pby5QcmludFdyaXRlcjsKK2ltcG9ydCBqYXZhLmlvLlN0cmluZ1dyaXRlcjsKK2ltcG9ydCBqYXZhLnV0aWwuQ2FsZW5kYXI7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgamF2YS51dGlsLkxpc3Q7CitpbXBvcnQgamF2YS51dGlsLlByb3BlcnRpZXM7CisKK2ltcG9ydCBqYXZheC5hY3RpdmF0aW9uLkRhdGFIYW5kbGVyOworaW1wb3J0IGphdmF4Lm1haWwuQm9keVBhcnQ7CitpbXBvcnQgamF2YXgubWFpbC5NZXNzYWdlOworaW1wb3J0IGphdmF4Lm1haWwuTWVzc2FnaW5nRXhjZXB0aW9uOworaW1wb3J0IGphdmF4Lm1haWwuTXVsdGlwYXJ0OworaW1wb3J0IGphdmF4Lm1haWwuU2Vzc2lvbjsKK2ltcG9ydCBqYXZheC5tYWlsLlRyYW5zcG9ydDsKK2ltcG9ydCBqYXZheC5tYWlsLmludGVybmV0LkludGVybmV0QWRkcmVzczsKK2ltcG9ydCBqYXZheC5tYWlsLmludGVybmV0Lk1pbWVCb2R5UGFydDsKK2ltcG9ydCBqYXZheC5tYWlsLmludGVybmV0Lk1pbWVNZXNzYWdlOworaW1wb3J0IGphdmF4Lm1haWwuaW50ZXJuZXQuTWltZU11bHRpcGFydDsKK2ltcG9ydCBqYXZheC5tYWlsLnV0aWwuQnl0ZUFycmF5RGF0YVNvdXJjZTsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLmRhby5Db25maWd1cmF0aW9uRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuZGFvLk1haWxNZXNzYWdlRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLk1haWxNZXNzYWdlOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLk1haWxNZXNzYWdlLlN0YXR1czsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uQXV0b3dpcmVkOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuY29yZS50YXNrLlRhc2tFeGVjdXRvcjsKKworLyoqCisgKiAKKyAqIEBhdXRob3Igc3dhZ25lcgorICogCisgKi8KK3B1YmxpYyBjbGFzcyBNYWlsSGFuZGxlciB7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcigKKwkJCU1haWxIYW5kbGVyLmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50IE1BSUxfU0VORF9USU1FT1VUID0gNjAgKiA2MCAqIDEwMDA7IC8vIDEgaG91cgorCXByaXZhdGUgc3RhdGljIGZpbmFsIGludCBNQVhJTVVNX0VSUk9SX0NPVU5UID0gNTsKKwkKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBDb25maWd1cmF0aW9uRGFvIGNmZ0RhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBUYXNrRXhlY3V0b3IgdGFza0V4ZWN1dG9yOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIE1haWxNZXNzYWdlRGFvIG1haWxNZXNzYWdlRGFvOworCXByaXZhdGUgU3RyaW5nIHNtdHBTZXJ2ZXI7CisJcHJpdmF0ZSBTdHJpbmcgc210cFBvcnQ7CisJcHJpdmF0ZSBTdHJpbmcgZnJvbTsKKwlwcml2YXRlIFN0cmluZyBtYWlsQXV0aFVzZXI7CisJcHJpdmF0ZSBTdHJpbmcgbWFpbEF1dGhQYXNzOworCXByaXZhdGUgYm9vbGVhbiBtYWlsVGxzOworCXByaXZhdGUgYm9vbGVhbiBtYWlsQWRkUmVwbHlUbzsKKworCXByaXZhdGUgdm9pZCBpbml0KCkgeworCQlzbXRwU2VydmVyID0gY2ZnRGFvLmdldENvbmZWYWx1ZSgic210cF9zZXJ2ZXIiLCBTdHJpbmcuY2xhc3MsIG51bGwpOworCQlzbXRwUG9ydCA9IGNmZ0Rhby5nZXRDb25mVmFsdWUoInNtdHBfcG9ydCIsIFN0cmluZy5jbGFzcywgIjI1Iik7CisJCWZyb20gPSBjZmdEYW8uZ2V0Q29uZlZhbHVlKCJzeXN0ZW1fZW1haWxfYWRkciIsIFN0cmluZy5jbGFzcywgbnVsbCk7CisJCW1haWxBdXRoVXNlciA9IGNmZ0Rhby5nZXRDb25mVmFsdWUoImVtYWlsX3VzZXJuYW1lIiwgU3RyaW5nLmNsYXNzLCBudWxsKTsKKwkJbWFpbEF1dGhQYXNzID0gY2ZnRGFvLmdldENvbmZWYWx1ZSgiZW1haWxfdXNlcnBhc3MiLCBTdHJpbmcuY2xhc3MsIG51bGwpOworCQltYWlsVGxzID0gIjEiLmVxdWFscyhjZmdEYW8uZ2V0Q29uZlZhbHVlKCJtYWlsLnNtdHAuc3RhcnR0bHMuZW5hYmxlIiwgU3RyaW5nLmNsYXNzLCAiMCIpKTsKKwkJbWFpbEFkZFJlcGx5VG8gPSAiMSIuZXF1YWxzKGNmZ0Rhby5nZXRDb25mVmFsdWUoImludml0ZXIuZW1haWwuYXMucmVwbHl0byIsIFN0cmluZy5jbGFzcywgIjEiKSk7CisJfQorCQorCXByb3RlY3RlZCBNaW1lTWVzc2FnZSBhcHBlbmRJY3NCb2R5KE1pbWVNZXNzYWdlIG1zZywgTWFpbE1lc3NhZ2UgbSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCWxvZy5kZWJ1Zygic2V0TWVzc2FnZUJvZHkgZm9yIGlDYWwgbWVzc2FnZSIpOworCQkvLyAtLSBDcmVhdGUgYSBuZXcgbWVzc2FnZSAtLQorCQlNdWx0aXBhcnQgbXVsdGlwYXJ0ID0gbmV3IE1pbWVNdWx0aXBhcnQoKTsKKworCQlNdWx0aXBhcnQgbXVsdGlCb2R5ID0gbmV3IE1pbWVNdWx0aXBhcnQoImFsdGVybmF0aXZlIik7CisJCUJvZHlQYXJ0IGh0bWwgPSBuZXcgTWltZUJvZHlQYXJ0KCk7CisJCWh0bWwuc2V0RGF0YUhhbmRsZXIobmV3IERhdGFIYW5kbGVyKG5ldyBCeXRlQXJyYXlEYXRhU291cmNlKG0uZ2V0Qm9keSgpLCAidGV4dC9odG1sOyBjaGFyc2V0PVVURi04IikpKTsKKwkJbXVsdGlCb2R5LmFkZEJvZHlQYXJ0KGh0bWwpOworCisJCUJvZHlQYXJ0IGlDYWxDb250ZW50ID0gbmV3IE1pbWVCb2R5UGFydCgpOworCQlpQ2FsQ29udGVudC5hZGRIZWFkZXIoImNvbnRlbnQtY2xhc3MiLCAidXJuOmNvbnRlbnQtY2xhc3NlczpjYWxlbmRhcm1lc3NhZ2UiKTsKKwkJaUNhbENvbnRlbnQuc2V0RGF0YUhhbmRsZXIobmV3IERhdGFIYW5kbGVyKG5ldyBCeXRlQXJyYXlEYXRhU291cmNlKG5ldyBCeXRlQXJyYXlJbnB1dFN0cmVhbShtLmdldEljcygpKSwKKwkJCQkidGV4dC9jYWxlbmRhcjsgY2hhcnNldD1VVEYtODsgbWV0aG9kPVJFUVVFU1QiKSkpOworCQltdWx0aUJvZHkuYWRkQm9keVBhcnQoaUNhbENvbnRlbnQpOworCQlCb2R5UGFydCBib2R5ID0gbmV3IE1pbWVCb2R5UGFydCgpOworCQlib2R5LnNldENvbnRlbnQobXVsdGlCb2R5KTsKKwkJbXVsdGlwYXJ0LmFkZEJvZHlQYXJ0KGJvZHkpOworCQkKKwkJQm9keVBhcnQgaUNhbEF0dGFjaG1lbnQgPSBuZXcgTWltZUJvZHlQYXJ0KCk7CisJCWlDYWxBdHRhY2htZW50LnNldERhdGFIYW5kbGVyKG5ldyBEYXRhSGFuZGxlcihuZXcgQnl0ZUFycmF5RGF0YVNvdXJjZShuZXcgQnl0ZUFycmF5SW5wdXRTdHJlYW0obS5nZXRJY3MoKSksCisJCQkJImFwcGxpY2F0aW9uL2ljcyIpKSk7CisJCWlDYWxBdHRhY2htZW50LnJlbW92ZUhlYWRlcigiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZyIpOworCQlpQ2FsQXR0YWNobWVudC5hZGRIZWFkZXIoIkNvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmciLCAiYmFzZTY0Iik7CisJCWlDYWxBdHRhY2htZW50LnJlbW92ZUhlYWRlcigiQ29udGVudC1UeXBlIik7CisJCWlDYWxBdHRhY2htZW50LmFkZEhlYWRlcigiQ29udGVudC1UeXBlIiwgImFwcGxpY2F0aW9uL2ljcyIpOworCQlpQ2FsQXR0YWNobWVudC5zZXRGaWxlTmFtZSgiaW52aXRlLmljcyIpOworCQltdWx0aXBhcnQuYWRkQm9keVBhcnQoaUNhbEF0dGFjaG1lbnQpOworCisJCW1zZy5zZXRDb250ZW50KG11bHRpcGFydCk7CisJCXJldHVybiBtc2c7CisJfQorCQorCXByaXZhdGUgTWltZU1lc3NhZ2UgYXBwZW5kQm9keShNaW1lTWVzc2FnZSBtc2csIE1haWxNZXNzYWdlIG0pIHRocm93cyBNZXNzYWdpbmdFeGNlcHRpb24sIElPRXhjZXB0aW9uIHsKKwkJLy8gLS0gU2V0IHRoZSBzdWJqZWN0IGFuZCBib2R5IHRleHQgLS0KKwkJbXNnLnNldERhdGFIYW5kbGVyKG5ldyBEYXRhSGFuZGxlcihuZXcgQnl0ZUFycmF5RGF0YVNvdXJjZShtLmdldEJvZHkoKSwgInRleHQvaHRtbDsgY2hhcnNldD1cInV0Zi04XCIiKSkpOworCisJCS8vIC0tIFNldCBzb21lIG90aGVyIGhlYWRlciBpbmZvcm1hdGlvbiAtLQorCQltc2cuc2V0SGVhZGVyKCJYLU1haWxlciIsICJYTUwtTWFpbCIpOworCQltc2cuc2V0U2VudERhdGUobmV3IERhdGUoKSk7CisJCQorCQlyZXR1cm4gbXNnOworCX0KKwkKKwlwcml2YXRlIE1pbWVNZXNzYWdlIGdldEJhc2ljTWltZU1lc3NhZ2UoKSB0aHJvd3MgRXhjZXB0aW9uIHsKKwkJbG9nLmRlYnVnKCJnZXRCYXNpY01pbWVNZXNzYWdlIik7CisJCWlmIChzbXRwU2VydmVyID09IG51bGwpIHsKKwkJCWluaXQoKTsKKwkJfQorCQlQcm9wZXJ0aWVzIHByb3BzID0gbmV3IFByb3BlcnRpZXMoU3lzdGVtLmdldFByb3BlcnRpZXMoKSk7CisKKwkJcHJvcHMucHV0KCJtYWlsLnNtdHAuaG9zdCIsIHNtdHBTZXJ2ZXIpOworCQlwcm9wcy5wdXQoIm1haWwuc210cC5wb3J0Iiwgc210cFBvcnQpOworCisJCWlmIChtYWlsVGxzKSB7CisJCQlwcm9wcy5wdXQoIm1haWwuc210cC5zdGFydHRscy5lbmFibGUiLCAidHJ1ZSIpOworCQl9CisKKwkJLy8gQ2hlY2sgZm9yIEF1dGhlbnRpY2F0aW9uCisJCVNlc3Npb24gc2Vzc2lvbiA9IG51bGw7CisJCWlmIChtYWlsQXV0aFVzZXIgIT0gbnVsbCAmJiBtYWlsQXV0aFVzZXIubGVuZ3RoKCkgPiAwCisJCQkJJiYgbWFpbEF1dGhQYXNzICE9IG51bGwgJiYgbWFpbEF1dGhQYXNzLmxlbmd0aCgpID4gMCkgeworCQkJLy8gdXNlIFNNVFAgQXV0aGVudGljYXRpb24KKwkJCXByb3BzLnB1dCgibWFpbC5zbXRwLmF1dGgiLCAidHJ1ZSIpOworCQkJc2Vzc2lvbiA9IFNlc3Npb24uZ2V0SW5zdGFuY2UocHJvcHMsIG5ldyBTbXRwQXV0aGVudGljYXRvcihtYWlsQXV0aFVzZXIsIG1haWxBdXRoUGFzcykpOworCQl9IGVsc2UgeworCQkJLy8gbm90IHVzZSBTTVRQIEF1dGhlbnRpY2F0aW9uCisJCQlzZXNzaW9uID0gU2Vzc2lvbi5nZXRJbnN0YW5jZShwcm9wcywgbnVsbCk7CisJCX0KKworCQkvLyBCdWlsZGluZyBNaW1lTWVzc2FnZQorCQlNaW1lTWVzc2FnZSBtc2cgPSBuZXcgTWltZU1lc3NhZ2Uoc2Vzc2lvbik7CisJCW1zZy5zZXRGcm9tKG5ldyBJbnRlcm5ldEFkZHJlc3MoZnJvbSkpOworCQlyZXR1cm4gbXNnOworCX0KKwkKKwlwcml2YXRlIE1pbWVNZXNzYWdlIGdldE1pbWVNZXNzYWdlKE1haWxNZXNzYWdlIG0pIHRocm93cyBFeGNlcHRpb24geworCQlsb2cuZGVidWcoImdldE1pbWVNZXNzYWdlIik7CisJCS8vIEJ1aWxkaW5nIE1pbWVNZXNzYWdlCisJCU1pbWVNZXNzYWdlIG1zZyA9IGdldEJhc2ljTWltZU1lc3NhZ2UoKTsKKwkJbXNnLnNldFN1YmplY3QobS5nZXRTdWJqZWN0KCkpOworCQlTdHJpbmcgcmVwbHlUbyA9IG0uZ2V0UmVwbHlUbygpOworCQlpZiAocmVwbHlUbyAhPSBudWxsICYmIG1haWxBZGRSZXBseVRvKSB7CisJCQlsb2cuZGVidWcoInNldFJlcGx5VG8gIiArIHJlcGx5VG8pOworCQkJaWYgKE1haWxVdGlsLm1hdGNoZXMocmVwbHlUbykpIHsKKwkJCQltc2cuc2V0UmVwbHlUbyhuZXcgSW50ZXJuZXRBZGRyZXNzW117bmV3IEludGVybmV0QWRkcmVzcyhyZXBseVRvKX0pOworCQkJfQorCQl9CisJCW1zZy5hZGRSZWNpcGllbnRzKE1lc3NhZ2UuUmVjaXBpZW50VHlwZS5UTywgSW50ZXJuZXRBZGRyZXNzLnBhcnNlKG0uZ2V0UmVjaXBpZW50cygpLCBmYWxzZSkpOworCQkKKwkJcmV0dXJuIG0uZ2V0SWNzKCkgPT0gbnVsbCA/IGFwcGVuZEJvZHkobXNnLCBtKSA6IGFwcGVuZEljc0JvZHkobXNnLCBtKTsKKwl9CisJCisJcHVibGljIHZvaWQgc2VuZChTdHJpbmcgdG9FbWFpbCwgU3RyaW5nIHN1YmosIFN0cmluZyBtZXNzYWdlKSB7CisJCXNlbmQodG9FbWFpbCwgbnVsbCwgc3ViaiwgbWVzc2FnZSk7CisJfQorCQorCXB1YmxpYyB2b2lkIHNlbmQoU3RyaW5nIHRvRW1haWwsIFN0cmluZyByZXBseVRvLCBTdHJpbmcgc3ViaiwgU3RyaW5nIG1lc3NhZ2UpIHsKKwkJc2VuZChuZXcgTWFpbE1lc3NhZ2UodG9FbWFpbCwgcmVwbHlUbywgc3ViaiwgbWVzc2FnZSkpOworCX0KKwkKKwlwdWJsaWMgdm9pZCBzZW5kKE1haWxNZXNzYWdlIG0pIHsKKwkJc2VuZChtLCBmYWxzZSk7CisJfQorCQorCXB1YmxpYyB2b2lkIHNlbmQoZmluYWwgTWFpbE1lc3NhZ2UgbSwgYm9vbGVhbiBzZW5kKSB7CisJCWlmIChzZW5kKSB7CisJCQlpZiAobS5nZXRJZCgpICE9IG51bGwpIHsKKwkJCQltLnNldFN0YXR1cyhTdGF0dXMuU0VORElORyk7CisJCQkJbWFpbE1lc3NhZ2VEYW8udXBkYXRlKG0sIG51bGwpOworCQkJfQorCQkJdGFza0V4ZWN1dG9yLmV4ZWN1dGUobmV3IFJ1bm5hYmxlKCkgeworCQkJCXB1YmxpYyB2b2lkIHJ1bigpIHsKKwkJCQkJbG9nLmRlYnVnKCJNZXNzYWdlIHNlbmRpbmcgaW4gcHJvZ3Jlc3MiKTsKKwkJCQkJbG9nLmRlYnVnKCIgIFRvOiAiICsgbS5nZXRSZWNpcGllbnRzKCkpOworCQkJCQlsb2cuZGVidWcoIiAgU3ViamVjdDogIiArIG0uZ2V0U3ViamVjdCgpKTsKKworCQkJCQkvLyAtLSBTZW5kIHRoZSBtZXNzYWdlIC0tCisJCQkJCXRyeSB7CisJCQkJCQlUcmFuc3BvcnQuc2VuZChnZXRNaW1lTWVzc2FnZShtKSk7CisJCQkJCQltLnNldExhc3RFcnJvcigiIik7CisJCQkJCQltLnNldFN0YXR1cyhTdGF0dXMuRE9ORSk7CisJCQkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisJCQkJCQlsb2cuZXJyb3IoIkVycm9yIHdoaWxlIHNlbmRpbmcgbWVzc2FnZSIsIGUpOworCQkJCQkJbS5zZXRFcnJvckNvdW50KG0uZ2V0RXJyb3JDb3VudCgpICsgMSk7CisJCQkJCQlTdHJpbmdXcml0ZXIgc3cgPSBuZXcgU3RyaW5nV3JpdGVyKCk7CisJCQkJCQlQcmludFdyaXRlciBwdyA9IG5ldyBQcmludFdyaXRlcihzdyk7CisJCQkJCQllLnByaW50U3RhY2tUcmFjZShwdyk7CisJCQkJCQlwdy5jbG9zZSgpOworCQkJCQkJbS5zZXRMYXN0RXJyb3Ioc3cuZ2V0QnVmZmVyKCkudG9TdHJpbmcoKSk7CisJCQkJCQltLnNldFN0YXR1cyhtLmdldEVycm9yQ291bnQoKSA8IE1BWElNVU1fRVJST1JfQ09VTlQgPyBTdGF0dXMuTk9ORSA6IFN0YXR1cy5FUlJPUik7CisJCQkJCX0KKwkJCQkJaWYgKG0uZ2V0SWQoKSAhPSBudWxsKSB7CisJCQkJCQltYWlsTWVzc2FnZURhby51cGRhdGUobSwgbnVsbCk7CisJCQkJCX0KKwkJCQl9CisJCQl9KTsKKwkJfSBlbHNlIHsKKwkJCW0uc2V0U3RhdHVzKFN0YXR1cy5OT05FKTsKKwkJCW1haWxNZXNzYWdlRGFvLnVwZGF0ZShtLCBudWxsKTsKKwkJfQorCX0KKwkKKwlwdWJsaWMgdm9pZCByZXNldFNlbmRpbmdTdGF0dXMoKSB7CisJCWxvZy5kZWJ1ZygicmVzZXRTZW5kaW5nU3RhdHVzIGVudGVyIC4uLiIpOworCQlDYWxlbmRhciBjID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTsKKwkJYy5hZGQoQ2FsZW5kYXIuTUlMTElTRUNPTkQsIC1NQUlMX1NFTkRfVElNRU9VVCk7CisJCW1haWxNZXNzYWdlRGFvLnJlc2V0U2VuZGluZ1N0YXR1cyhjKTsKKwkJbG9nLmRlYnVnKCIuLi4gcmVzZXRTZW5kaW5nU3RhdHVzIGRvbmUuIik7CisJfQorCQorCXB1YmxpYyB2b2lkIHNlbmRNYWlscygpIHRocm93cyBFeGNlcHRpb24geworCQlpbml0KCk7CisJCWxvZy5kZWJ1Zygic2VuZE1haWxzIGVudGVyIC4uLiIpOworCQlMaXN0PE1haWxNZXNzYWdlPiBsaXN0ID0gbWFpbE1lc3NhZ2VEYW8uZ2V0KDAsIDEpOworCQl3aGlsZSAoIWxpc3QuaXNFbXB0eSgpKSB7CisJCQlzZW5kKGxpc3QuZ2V0KDApLCB0cnVlKTsKKwkJCWxpc3QgPSBtYWlsTWVzc2FnZURhby5nZXQoMCwgMSk7CisJCX0KKwkJbG9nLmRlYnVnKCIuLi4gc2VuZE1haWxzIGRvbmUuIik7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3V0aWxzL21haWwvTWFpbFV0aWwuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy91dGlscy9tYWlsL01haWxVdGlsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWRiZDkyNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy91dGlscy9tYWlsL01haWxVdGlsLmphdmEKQEAgLTAsMCArMSwzMiBAQAorLyoNCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICogdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5tYWlsOw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwucmVnZXguUGF0dGVybjsNCisNCitwdWJsaWMgY2xhc3MgTWFpbFV0aWwgew0KKwkNCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgUGF0dGVybiByZmMyODIyID0gUGF0dGVybi5jb21waWxlKA0KKwkgICAgICAgICJeW2EtejAtOSEjJCUmJyorLz0/Xl9ge3x9fi1dKyg/OlxcLlthLXowLTkhIyQlJicqKy89P15fYHt8fX4tXSspKkAoPzpbYS16MC05XSg/OlthLXowLTktXSpbYS16MC05XSk/XFwuKStbYS16MC05XSg/OlthLXowLTktXSpbYS16MC05XSk/JCINCisJKTsNCisJDQorCXB1YmxpYyBzdGF0aWMgYm9vbGVhbiBtYXRjaGVzKFN0cmluZyBlbWFpbCkgew0KKwkJcmV0dXJuIHJmYzI4MjIubWF0Y2hlcihlbWFpbCkubWF0Y2hlcygpOw0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy91dGlscy9tYWlsL1NtdHBBdXRoZW50aWNhdG9yLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdXRpbHMvbWFpbC9TbXRwQXV0aGVudGljYXRvci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwYjhkMzUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdXRpbHMvbWFpbC9TbXRwQXV0aGVudGljYXRvci5qYXZhCkBAIC0wLDAgKzEsNDUgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMubWFpbDsKKworaW1wb3J0IGphdmF4Lm1haWwuQXV0aGVudGljYXRvcjsKK2ltcG9ydCBqYXZheC5tYWlsLlBhc3N3b3JkQXV0aGVudGljYXRpb247CisKKy8qKgorICogCisgKiBAYXV0aG9yIHN3YWduZXIKKyAqIAorICovCitwdWJsaWMgY2xhc3MgU210cEF1dGhlbnRpY2F0b3IgZXh0ZW5kcyBBdXRoZW50aWNhdG9yIHsKKworCXByaXZhdGUgZmluYWwgU3RyaW5nIHVzZXJuYW1lOworCXByaXZhdGUgZmluYWwgU3RyaW5nIHBhc3N3b3JkOworCisJcHVibGljIFNtdHBBdXRoZW50aWNhdG9yKFN0cmluZyBlbWFpbFVzZXJuYW1lLCBTdHJpbmcgZW1haWxVc2VycGFzcykgeworCQl0aGlzLnVzZXJuYW1lID0gZW1haWxVc2VybmFtZTsKKwkJdGhpcy5wYXNzd29yZCA9IGVtYWlsVXNlcnBhc3M7CisJfQorCisJQE92ZXJyaWRlCisJcHVibGljIFBhc3N3b3JkQXV0aGVudGljYXRpb24gZ2V0UGFzc3dvcmRBdXRoZW50aWNhdGlvbigpIHsKKworCQlyZXR1cm4gbmV3IFBhc3N3b3JkQXV0aGVudGljYXRpb24odXNlcm5hbWUsIHBhc3N3b3JkKTsKKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy91dGlscy9tYXBwaW5ncy9DYXN0QmFzaWNUeXBlcy5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3V0aWxzL21hcHBpbmdzL0Nhc3RCYXNpY1R5cGVzLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjE4OWRiOQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy91dGlscy9tYXBwaW5ncy9DYXN0QmFzaWNUeXBlcy5qYXZhCkBAIC0wLDAgKzEsODMgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMubWFwcGluZ3M7CisKK2ltcG9ydCBqYXZhLnV0aWwuTGlua2VkTGlzdDsKKworCitwdWJsaWMgY2xhc3MgQ2FzdEJhc2ljVHlwZXMgeworCisJLyoqCisJICogUmV0dXJucyBhbGwgYWxsb3dlZCBUeXBlcyB3aGljaCBjYW4gYmUgbWFwcGVkIGRpcmVjdGx5IHRvIGZpZWxkcworCSAqIEByZXR1cm4KKwkgKi8KKwlwdWJsaWMgc3RhdGljIHN5bmNocm9uaXplZCBMaW5rZWRMaXN0PFN0cmluZz4gZ2V0Q29tcGFyZVR5cGVzU2ltcGxlKCkgeworCQlMaW5rZWRMaXN0PFN0cmluZz4gdHlwZUxpc3QgPSBuZXcgTGlua2VkTGlzdDxTdHJpbmc+KCk7CisJCQorCQkvL1ByaW1pdGl2ZXMKKwkJdHlwZUxpc3QuYWRkKCJTdHJpbmciKTsKKwkJdHlwZUxpc3QuYWRkKCJieXRlIik7CisJCXR5cGVMaXN0LmFkZCgiaW50Iik7CisJCXR5cGVMaXN0LmFkZCgiYm9vbGVhbiIpOworCQl0eXBlTGlzdC5hZGQoImZsb2F0Iik7CisJCXR5cGVMaXN0LmFkZCgibG9uZyIpOworCQl0eXBlTGlzdC5hZGQoImRvdWJsZSIpOworCQkKKwkJCisJCS8vT2JqZWN0CisJCXR5cGVMaXN0LmFkZCgiamF2YS5sYW5nLlN0cmluZyIpOworCQl0eXBlTGlzdC5hZGQoImphdmEubGFuZy5OdW1iZXIiKTsKKwkJdHlwZUxpc3QuYWRkKCJqYXZhLmxhbmcuQnl0ZSIpOworCQl0eXBlTGlzdC5hZGQoImphdmEubGFuZy5JbnRlZ2VyIik7CisJCXR5cGVMaXN0LmFkZCgiamF2YS5sYW5nLkJvb2xlYW4iKTsKKwkJdHlwZUxpc3QuYWRkKCJqYXZhLmxhbmcuRmxvYXQiKTsKKwkJdHlwZUxpc3QuYWRkKCJqYXZhLmxhbmcuTG9uZyIpOworCQl0eXBlTGlzdC5hZGQoImphdmEubGFuZy5Eb3VibGUiKTsKKwkJdHlwZUxpc3QuYWRkKCJqYXZhLnV0aWwuRGF0ZSIpOworCQkKKwkJcmV0dXJuIHR5cGVMaXN0OworCX0KKwkKKwkvKioKKwkgKiBSZXR1cm5zIHRoZSBMaXN0LVR5cGVzIHdoaWNoIGNhbiBiZSBtYXBwZWQgdG8gT2JqZWN0cworCSAqIEByZXR1cm4KKwkgKi8KKwlwdWJsaWMgc3RhdGljIHN5bmNocm9uaXplZCBMaW5rZWRMaXN0PFN0cmluZz4gZ2V0QWxsb3dlZExpc3RUeXBlcygpeworCQlMaW5rZWRMaXN0PFN0cmluZz4gdHlwZUxpc3QgPSBuZXcgTGlua2VkTGlzdDxTdHJpbmc+KCk7CisJCXR5cGVMaXN0LmFkZCgiamF2YS51dGlsLkxpbmtlZEhhc2hNYXAiKTsKKwkJdHlwZUxpc3QuYWRkKCJqYXZhLnV0aWwuSGFzaE1hcCIpOworCQl0eXBlTGlzdC5hZGQoImphdmEudXRpbC5NYXAiKTsKKwkJdHlwZUxpc3QuYWRkKCJvcmcucmVkNS5pby51dGlscy5PYmplY3RNYXAiKTsKKwkJcmV0dXJuIHR5cGVMaXN0OworCX0KKwkKKwkvKioKKwkgKiBSZXR1cm5zIHRoZSBMaXN0LVR5cGVzIHdoaWNoIHdvbid0IGJlIG1hcHBlZAorCSAqIExpbmtlZEhhc2hTZXQgaXMgdGhlIHR5cGUgb2YgT2JqZWN0IGlmIHRoZSBDbGllbnQgc2VuZCBhbiBBcnJheSB3aXRoIG51bWVyaWMgaW5kZXgKKwkgKiB0aGlzIGtpbmQgb2YgTGlzdCBjYW5ub3QgYmUgbWFwcGVkIHRvIGFuIE9iamVjdCBhcyBpdCBpcyBub3QgY2xlYXIgd2hpY2ggZmllbGQgCisJICogaXMgZXF1aXZhbGVudCB0byB3aGljaCBpbmRleC1udW1iZXIKKwkgKiBAcmV0dXJuCisJICovCisJcHVibGljIHN0YXRpYyBzeW5jaHJvbml6ZWQgTGlua2VkTGlzdDxTdHJpbmc+IGdldEZvcmJpZGRlbkxpc3RUeXBlcygpeworCQlMaW5rZWRMaXN0PFN0cmluZz4gdHlwZUxpc3QgPSBuZXcgTGlua2VkTGlzdDxTdHJpbmc+KCk7CisJCXR5cGVMaXN0LmFkZCgiamF2YS51dGlsLkxpbmtlZEhhc2hTZXQiKTsKKwkJcmV0dXJuIHR5cGVMaXN0OworCX0JCisJCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdXRpbHMvbWFwcGluZ3MvQ2FzdE1hcFRvT2JqZWN0LmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdXRpbHMvbWFwcGluZ3MvQ2FzdE1hcFRvT2JqZWN0LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmZhMjYxYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy91dGlscy9tYXBwaW5ncy9DYXN0TWFwVG9PYmplY3QuamF2YQpAQCAtMCwwICsxLDI5MiBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5tYXBwaW5nczsKKworaW1wb3J0IGphdmEubGFuZy5yZWZsZWN0LkNvbnN0cnVjdG9yOworaW1wb3J0IGphdmEubGFuZy5yZWZsZWN0LkZpZWxkOworaW1wb3J0IGphdmEubGFuZy5yZWZsZWN0Lk1ldGhvZDsKK2ltcG9ydCBqYXZhLmxhbmcucmVmbGVjdC5Nb2RpZmllcjsKK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLkxpbmtlZEhhc2hNYXA7CitpbXBvcnQgamF2YS51dGlsLk1hcDsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CisKKy8qKgorICogQ2xhc3MgdG8gY2FzdCBhbnkgTGlua2VkSGFzaE1hcCB0byBpdHMgSmF2YUJlYW4gcmVwcmFlc2VudGFudAorICogdGhlIGlkaW9tIGlzIHRoYXQgdGhlIGF0dHJpYnV0ZSBuYW1lIGluIHRoZSBMaW5rZWRIYXNoTWFwIGlzIHRoZSBzYW1lIGFzIGluIHRoZSBKYXZhQmVhbi9Qb2pvCisgKiAKKyAqIGlmIHRoZSBhdHRyaWJ1dGUncyBvZiB0aGUgQmVhbiBhcmUgcHJpdmF0ZSAobWVhbmluZyBpdCBJUyBhIEJlYW4pIHRoZW4gaXQgd2lsbCB1c2UgdGhlIGdldHRlcnMgYW5kIHNldHRlcnMKKyAqIGlmIHRoZSBhdHRyaWJ1dGUncyBhcmUgcHVibGljIGl0IHdpbGwgYXNzaWduIGRpcmVjdGx5CisgKiBpZiB0aGUgYXR0cmlidXRlIGlzIGZpbmFsIGl0IHdpbGwgc2hvdyBhbiBlcnJvciBpbiBsb2cKKyAqIAorICogaWYgdGhlIEhhc2hNYXAgY29udGFpbnMgYW4gbnVsbCBmb3IgYSBwcmltaXRpdmUgYXR0cmlidXRlIGl0IHdpbGwgbm90IGFzc2lnbiB0aGF0IHZhbHVlCisgKiAKKyAqIGlmIHRoZSBIYXNoTWFwIGNvbnRhaW5zIHN1YmVsbWVudHMgbmVzdGVkIGFzIExpbmtlZEhhc2hNYXAncyBpdCB3aWxsIGFkZCB0aGVzZSBTdWItRWxlbWVudHMgdG8gdGhlIE1haW4tT2JqZWN0CisgKiBmb3IgYW4gZXhtYXBsZSBzZWU6CisgKiBodHRwOi8vb3Blbm1lZXRpbmdzLmdvb2dsZWNvZGUuY29tL3N2bi9icmFuY2hlcy9kZXYveG1sY3JtL2phdmEvc3JjL3Rlc3Qvb3JnL3htbGNybS91dGlscy9UZXN0UmVmbGVjdGlvbkFwaS5qYXZhCisgKiAKKyAqIFRPRE86CisgKiBJZiB0aGUgU3ViIEl0ZW0gaXMgbm90IGFuIE9iamVjdCBidXQgYSBTZXQgKG1lYW5pbmcgYSBMaXN0IG9mIE9iamVjdCkgdGhpcyBMaXN0IG11c3QgYmUgCisgKiBjYXN0IHRvIE9iamVjdHMgb2YgdGhlIEJlYW4gdG9vCisgKiAKKyAqIEBhdXRob3Igc3dhZ25lcgorICogCisgKgorICovCisKK3B1YmxpYyBjbGFzcyBDYXN0TWFwVG9PYmplY3QgeworCQorCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoQ2FzdE1hcFRvT2JqZWN0LmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisJCisJcHJpdmF0ZSBDYXN0TWFwVG9PYmplY3QoKSB7fQorCisJcHJpdmF0ZSBzdGF0aWMgQ2FzdE1hcFRvT2JqZWN0IGluc3RhbmNlID0gbnVsbDsKKworCXB1YmxpYyBzdGF0aWMgc3luY2hyb25pemVkIENhc3RNYXBUb09iamVjdCBnZXRJbnN0YW5jZSgpIHsKKwkJaWYgKGluc3RhbmNlID09IG51bGwpIHsKKwkJCWluc3RhbmNlID0gbmV3IENhc3RNYXBUb09iamVjdCgpOworCQl9CisJCXJldHVybiBpbnN0YW5jZTsKKwl9CQorCQorCXB1YmxpYyBPYmplY3QgY2FzdEJ5R2l2ZW5PYmplY3QoTWFwPFN0cmluZywgPz4gdmFsdWVzLCBDbGFzczw/PiB0YXJnZXRDbGFzcyl7CisJCXRyeSB7CisvLwkJCWlmICh2YWx1ZXNPYmouZ2V0Q2xhc3MoKS5nZXRDbGFzcygpLmdldE5hbWUoKS5lcXVhbHMoT2JqZWN0TWFwLmNsYXNzLmdldE5hbWUoKSkpeworLy8JCQkJT2JqZWN0TWFwIHZhbHVlcyA9IChPYmplY3RNYXApIHZhbHVlc09iajsKKy8vCQkJfSBlbHNlIGlmICh2YWx1ZXNPYmouZ2V0Q2xhc3MoKS5nZXRDbGFzcygpLmdldE5hbWUoKS5lcXVhbHMoTGlua2VkSGFzaE1hcC5jbGFzcy5nZXROYW1lKCkpKXsKKy8vCQkJCUxpbmtlZEhhc2hNYXAgdmFsdWVzID0gKExpbmtlZEhhc2hNYXApIHZhbHVlc09iajsKKy8vCQkJfQorCQkJT2JqZWN0IHJldHVybk9iamVjdCA9IHRhcmdldENsYXNzLm5ld0luc3RhbmNlKCk7CisvLwkJCWxvZy5lcnJvcigicmV0dXJuT2JqZWN0Iik7CisvLwkJCWxvZy5lcnJvcihyZXR1cm5PYmplY3QpOworLy8JCQlsb2cuZXJyb3IoICJjbGFzcyAiICsgdGFyZ2V0Q2xhc3MuZ2V0TmFtZSgpICk7IAorLy8JCQlsb2cuZXJyb3IgKCIgbnVtYmVyIG9mIGRlY2xhcmVkIGZpZWxkczogIiArIHRhcmdldENsYXNzLmdldERlY2xhcmVkRmllbGRzKCkubGVuZ3RoICk7CisJCQlMaW5rZWRIYXNoTWFwPFN0cmluZyxMaW5rZWRIYXNoTWFwPFN0cmluZyxPYmplY3Q+PiBzdHJ1Y3R1cmVkTWV0aG9kTWFwID0gU3RydWN0dXJlTWV0aG9kTGlzdC5nZXRJbnN0YW5jZSgpLnBhcnNlQ2xhc3NUb01ldGhvZExpc3QodGFyZ2V0Q2xhc3MpOworCQkJCisJCQlmb3IgKCBGaWVsZCBhbnlGaWVsZCA6IHRhcmdldENsYXNzLmdldERlY2xhcmVkRmllbGRzKCkgKSAgeyAKKwkJCQlTdHJpbmcgZmllbGROYW1lID0gYW55RmllbGQuZ2V0TmFtZSgpOyAKKwkJCQlDbGFzczw/PiBmaWVsZFR5cGUgPSBhbnlGaWVsZC5nZXRUeXBlKCk7CisJCQkJU3RyaW5nIGZpZWxkVHlwZU5hbWUgPSBhbnlGaWVsZC5nZXRUeXBlKCkuZ2V0TmFtZSgpOyAKKworCQkJCWlmICh0aGlzLmNvbXBhcmVUeXBlTmFtZVRvQmFzaWNUeXBlcyhmaWVsZFR5cGVOYW1lKSkgeworCQkJCQkvL2xvZy5pbmZvKCJGb3VuZCBUeXBlOiAiICsgZmllbGROYW1lKTsKKwkJCQkJLy9HZXQgdmFsdWUgZnJvbSAgc2V0IAorCQkJCQlPYmplY3QgdCA9IHZhbHVlcy5nZXQoZmllbGROYW1lKTsKKwkJCQkJLy9sb2cuaW5mbygiZmllbGROYW1lIFZhbHVlOiAiK3QpOworCQkJCQkvL2xvZy5pbmZvKCJmaWVsZE5hbWUgVmFsdWU6ICIrYW55RmllbGQuZ2V0TW9kaWZpZXJzKCkpOworCQkJCQlpbnQgbW9kID0gYW55RmllbGQuZ2V0TW9kaWZpZXJzKCk7CisJCQkJCQorCQkJCQlpZiAoTW9kaWZpZXIuaXNQcml2YXRlKG1vZCkgJiYgIU1vZGlmaWVyLmlzRmluYWwobW9kKSl7CisJCQkJCQkKKwkJCQkJCS8vbG9nLmluZm8oImlzIHByaXZhdGUgc28gZ2V0IHNldHRlciBtZXRob2QgIitmaWVsZE5hbWUpOworCQkJCQkJTGlua2VkSGFzaE1hcDxTdHJpbmcsT2JqZWN0PiBtZXRob2RTdW1tZXJ5ID0gc3RydWN0dXJlZE1ldGhvZE1hcC5nZXQoZmllbGROYW1lKTsKKwkJCQkJCQorCQkJCQkJaWYgKG1ldGhvZFN1bW1lcnkhPW51bGwpIHsKKwkJCQkJCQlpZiAobWV0aG9kU3VtbWVyeS5nZXQoInNldHRlciIpIT1udWxsKSB7CisJCisJCQkJCQkJCVN0cmluZyBtZXRob2RTZXR0ZXJOYW1lID0gbWV0aG9kU3VtbWVyeS5nZXQoInNldHRlciIpLnRvU3RyaW5nKCk7CisJCQkJCQkJCUNsYXNzPD8+W10gcGFyYW1UeXBlcyA9IChDbGFzc1tdKSBtZXRob2RTdW1tZXJ5LmdldCgic2V0dGVyUGFyYW1UeXBlcyIpOworCQkJCQkJCQlNZXRob2QgbSA9IHRhcmdldENsYXNzLmdldE1ldGhvZChtZXRob2RTZXR0ZXJOYW1lLCBwYXJhbVR5cGVzKTsKKwkJCQkJCQkJCisJCQkJCQkJCUNsYXNzPD8+IHBhcmFtVHlwZSA9IHBhcmFtVHlwZXNbMF07CisJCQkJCQkJCQorCQkJCQkJCQkvL3RyeSB0byBjYXN0IHRoZSBHaXZlbiBPYmplY3QgdG8gdGhlIG5lY2Vzc2FyeSBPYmplY3QKKwkJCQkJCQkJaWYgKHQhPW51bGwgJiYgIXBhcmFtVHlwZS5nZXROYW1lKCkuZXF1YWxzKHQuZ2V0Q2xhc3MoKS5nZXROYW1lKCkpKXsKKwkJCQkJCQkJCWZvciAoQ29uc3RydWN0b3I8Pz4gY3J0IDogcGFyYW1UeXBlLmdldENvbnN0cnVjdG9ycygpKSB7CisJCQkJCQkJCQkJaWYgKGNydC5nZXRQYXJhbWV0ZXJUeXBlcygpWzBdLmdldE5hbWUoKS5lcXVhbHMoImphdmEubGFuZy5TdHJpbmciKSl7CisJCQkJCQkJCQkJCXQgPSBjcnQubmV3SW5zdGFuY2UodC50b1N0cmluZygpKTsJCisJCQkJCQkJCQkJfQorCQkJCQkJCQkJfQorCQkJCQkJCQl9CisJCQkJCQkJCWlmIChwYXJhbVR5cGUuaXNQcmltaXRpdmUoKSAmJiB0PT1udWxsKXsKKwkJCQkJCQkJCS8vY2Fubm90IGNhc3QgbnVsbCB0byBwcmltaXR2ZQorCQkJCQkJCQl9IGVsc2UgeworCQkJCQkJCQkJT2JqZWN0W10gYXJndW1lbnRzID0gbmV3IE9iamVjdFtdeyB0IH07IAorCQkJCQkJCQkJbS5pbnZva2UocmV0dXJuT2JqZWN0LGFyZ3VtZW50cyk7CisJCQkJCQkJCX0KKwkJCQkJCQkKKwkJCQkJCQl9IGVsc2UgeworCQkJCQkJCQlsb2cuZXJyb3IoImNvdWxkIG5vdCBmaW5kIGEgc2V0dGVyLW1ldGhvZCBmcm9tIFN0cnVjdHVyZWQgdGFibGUuIElzIHRoZXJlIGEgc2V0dGVyLW1ldGhvZCBmb3IgIiArIGZpZWxkTmFtZSArICIgaW4gQ2xhc3MgIiArIHRhcmdldENsYXNzLmdldE5hbWUoKSk7CisJCQkJCQkJfQorCQkJCQkJfSBlbHNlIHsKKwkJCQkJCQlsb2cuZXJyb3IoImNvdWxkIG5vdCBmaW5kIGEgbWV0aG9kIGZyb20gU3RydWN0dXJlZCB0YWJsZS4gSXMgdGhlcmUgYSBtZXRob2QgZm9yICIgKyBmaWVsZE5hbWUgKyAiIGluIENsYXNzICIgKyB0YXJnZXRDbGFzcy5nZXROYW1lKCkpOworCQkJCQkJfQorCQkJCQkJCisJCQkJCX0gZWxzZSBpZiAoTW9kaWZpZXIuaXNQdWJsaWMobW9kKSAmJiAhTW9kaWZpZXIuaXNGaW5hbChtb2QpKXsKKwkJCQkJCWlmICh0IT1udWxsICYmICFhbnlGaWVsZC5nZXRUeXBlKCkuZ2V0TmFtZSgpLmVxdWFscyh0LmdldENsYXNzKCkuZ2V0TmFtZSgpKSl7CisJCQkJCQkJZm9yIChDb25zdHJ1Y3Rvcjw/PiBjcnQgOiBhbnlGaWVsZC5nZXRUeXBlKCkuZ2V0Q29uc3RydWN0b3JzKCkpIHsKKwkJCQkJCQkJaWYgKGNydC5nZXRQYXJhbWV0ZXJUeXBlcygpWzBdLmdldE5hbWUoKS5lcXVhbHMoImphdmEubGFuZy5TdHJpbmciKSl7CisJCQkJCQkJCQl0ID0gY3J0Lm5ld0luc3RhbmNlKHQudG9TdHJpbmcoKSk7CisJCQkJCQkJCX0KKwkJCQkJCQl9CisKKwkJCQkJCQkvL0lzIHB1YmxpYyBhdHRyaWJ1dGUgc28gc2V0IGl0IGRpcmVjdGx5CisJCQkJCQkJYW55RmllbGQuc2V0KHJldHVybk9iamVjdCwgdCk7CisJCQkJCQl9CisJCQkJCQkKKwkJCQkJfSBlbHNlIGlmIChNb2RpZmllci5pc0ZpbmFsKG1vZCkpIHsKKwkJCQkJCWxvZy5lcnJvcigiRmluYWwgYXR0cmlidXRlcyBjYW5ub3QgYmUgY2hhbmdlZCAiKTsKKwkJCQkJfSBlbHNlIHsKKwkJCQkJCWxvZy5lcnJvcigiVW5oYW5kbGVkIE1vZGlmaWVyIFR5cGU6ICIgKyBtb2QpOworCQkJCQl9CisJCQkJCQorCQkJCX0gZWxzZSB7CisJCQkJCQorCQkJCQkvL1RoaXMgd2lsbCBjYXN0IG5lc3RlZCBPYmplY3QgdG8gdGhlIGN1cnJlbnQgT2JqZWN0CisJCQkJCS8vaXQgZG9lcyBub3QgbWF0dGVyIGhvdyBkZWVwIGl0IGlzIG5lc3RlZAorCQkJCQkKKy8vCQkJCQlsb2cuZXJyb3IoImZpZWxkVHlwZSAiK2ZpZWxkVHlwZS5nZXROYW1lKCkpOworCQkJCQkKKwkJCQkJLy9DaGVjayBpZiB0aGUgQXR0cmlidXRlIGluIHRoZSBiZWFuIGlzIGEgTGlzdAorCQkJCQlpZiAoZmllbGRUeXBlLmdldE5hbWUoKS5lcXVhbHMoImphdmEudXRpbC5TZXQiKSkgeworCQkJCQkJCisJCQkJCQkvL1RvZG86IENhc3QgU2V0IHRvIE9iamVjdAorCQkJCQkJCisvLwkJCQkJCWxvZy5lcnJvcigiY29tcGFyZUJlYW5UeXBlVG9BbGxvd2VkTGlzdFR5cGVzIHRydWUgIiArIGZpZWxkVHlwZS5nZXROYW1lKCkpOworLy8JCQkJCQlsb2cuZXJyb3IoImNvbXBhcmVCZWFuVHlwZVRvQWxsb3dlZExpc3RUeXBlcyB0cnVlICIgKyBmaWVsZE5hbWUpOworCQkJCQkJCisJCQkJCQlPYmplY3QgdmFsdWVPZkhhc2hNYXAgPSB2YWx1ZXMuZ2V0KGZpZWxkTmFtZSk7CisJCQkJCQkKKwkJCQkJCWlmICh2YWx1ZU9mSGFzaE1hcCE9bnVsbCl7CisvLwkJCQkJCQlsb2cuZXJyb3IoImNvbXBhcmVCZWFuVHlwZVRvQWxsb3dlZExpc3RUeXBlcyB0cnVlICIgKyB2YWx1ZU9mSGFzaE1hcC5nZXRDbGFzcygpLmdldE5hbWUoKSk7CisJCQkJCQkJU3RyaW5nIHZhbHVlVHlwZU9mSGFzaE1hcCA9IHZhbHVlT2ZIYXNoTWFwLmdldENsYXNzKCkuZ2V0TmFtZSgpOworCQkJCQkJCQorCQkJCQkJCWlmICh0aGlzLmNvbXBhcmVUeXBlTmFtZVRvQWxsb3dlZExpc3RUeXBlcyh2YWx1ZVR5cGVPZkhhc2hNYXApKSB7CisJCQkJCQkJCU1hcDw/LCA/PiBtID0gKE1hcDw/LCA/PikgdmFsdWVPZkhhc2hNYXA7CisJCQkJCQkJCWZvciAoSXRlcmF0b3I8Pz4gaXQgPSBtLmtleVNldCgpLml0ZXJhdG9yKCk7aXQuaGFzTmV4dCgpOykgeworCQkJCQkJCQkJU3RyaW5nIGtleSA9IGl0Lm5leHQoKS50b1N0cmluZygpOworLy8JCQkJCQkJCQlsb2cuZXJyb3IoImtleTogIitrZXkpOworCQkJCQkJCQkJQFN1cHByZXNzV2FybmluZ3MoInVudXNlZCIpCisJCQkJCQkJCQlPYmplY3QgbGlzdE9iamVjdCA9IG0uZ2V0KGtleSk7CisvLwkJCQkJCQkJCWxvZy5lcnJvcigibGlzdE9iamVjdDogIitsaXN0T2JqZWN0KTsKKy8vCQkJCQkJCQkJbG9nLmVycm9yKCJsaXN0T2JqZWN0OiAiK2xpc3RPYmplY3QuZ2V0Q2xhc3MoKS5nZXROYW1lKCkpOworCQkJCQkJCQkJCisJCQkJCQkJCX0KKwkJCQkJCQkJCisJCQkJCQkJfQorCQkJCQkJfQorCQkJCQkJCisJCQkJCS8vb3RoZXJ3aXNlIGRvIGl0IGFzIE9iamVjdAorCQkJCQl9IGVsc2UgeworCQkJCQkJCisvLwkJCQkJCWxvZy5lcnJvcigib3RoZXJ3aXNlIGRvIGl0IGFzIE9iamVjdCAiK2ZpZWxkVHlwZS5nZXROYW1lKCkpOworCQkJCQkKKwkJCQkJCU9iamVjdCB2YWx1ZU9mSGFzaE1hcCA9IHZhbHVlcy5nZXQoZmllbGROYW1lKTsKKwkJCQkJCWlmICh2YWx1ZU9mSGFzaE1hcCE9bnVsbCl7CisJCQkJCQkJU3RyaW5nIHZhbHVlVHlwZU9mSGFzaE1hcCA9IHZhbHVlT2ZIYXNoTWFwLmdldENsYXNzKCkuZ2V0TmFtZSgpOworCQkJCQkJCQorCQkJCQkJCWlmICh0aGlzLmNvbXBhcmVUeXBlTmFtZVRvQWxsb3dlZExpc3RUeXBlcyh2YWx1ZVR5cGVPZkhhc2hNYXApKSB7CisJCQkJCQkJCQorCQkJCQkJCQlsb2cuZXJyb3IodmFsdWVUeXBlT2ZIYXNoTWFwKTsKKwkJCQkJCQkJbG9nLmVycm9yKGZpZWxkVHlwZS5nZXROYW1lKCkpOworCQkJCQkJCQkKKwkJCQkJCQkJLy9HZXQgdmFsdWUgZnJvbSAgc2V0IAorCQkJCQkJCQlAU3VwcHJlc3NXYXJuaW5ncygidW5jaGVja2VkIikKKwkJCQkJCQkJT2JqZWN0IHQgPSB0aGlzLmNhc3RCeUdpdmVuT2JqZWN0KChNYXA8U3RyaW5nLCA/Pil2YWx1ZU9mSGFzaE1hcCwgZmllbGRUeXBlKTsKKwkJCQkJCQkJaW50IG1vZCA9IGFueUZpZWxkLmdldE1vZGlmaWVycygpOworCQkJCQkJCQkKKwkJCQkJCQkJaWYgKE1vZGlmaWVyLmlzUHJpdmF0ZShtb2QpICYmICFNb2RpZmllci5pc0ZpbmFsKG1vZCkpeworCQkJCQkJCQkJCisJCQkJCQkJCQkvL2xvZy5pbmZvKCJpcyBwcml2YXRlIHNvIGdldCBzZXR0ZXIgbWV0aG9kICIrZmllbGROYW1lKTsKKwkJCQkJCQkJCUxpbmtlZEhhc2hNYXA8U3RyaW5nLE9iamVjdD4gbWV0aG9kU3VtbWVyeSA9IHN0cnVjdHVyZWRNZXRob2RNYXAuZ2V0KGZpZWxkTmFtZSk7CisJCQkJCQkJCQkKKwkJCQkJCQkJCWlmIChtZXRob2RTdW1tZXJ5IT1udWxsKSB7CisJCQkJCQkJCQkJaWYgKG1ldGhvZFN1bW1lcnkuZ2V0KCJzZXR0ZXIiKSE9bnVsbCkgeworCQkJCQorCQkJCQkJCQkJCQlTdHJpbmcgbWV0aG9kU2V0dGVyTmFtZSA9IG1ldGhvZFN1bW1lcnkuZ2V0KCJzZXR0ZXIiKS50b1N0cmluZygpOworCQkJCQkJCQkJCQlDbGFzczw/PltdIHBhcmFtVHlwZXMgPSAoQ2xhc3NbXSkgbWV0aG9kU3VtbWVyeS5nZXQoInNldHRlclBhcmFtVHlwZXMiKTsKKwkJCQkJCQkJCQkJTWV0aG9kIG0gPSB0YXJnZXRDbGFzcy5nZXRNZXRob2QobWV0aG9kU2V0dGVyTmFtZSwgcGFyYW1UeXBlcyk7CisJCQkJCQkJCQkJCQorCQkJCQkJCQkJCQlDbGFzczw/PiBwYXJhbVR5cGUgPSBwYXJhbVR5cGVzWzBdOworCQkJCQkJCQkJCQkvL2xvZy5lcnJvcigicGFyYW1UeXBlOiAiK3BhcmFtVHlwZS5nZXROYW1lKCkpOworCQkJCQkJCQkJCQlpZiAocGFyYW1UeXBlLmlzUHJpbWl0aXZlKCkgJiYgdD09bnVsbCl7CisJCQkJCQkJCQkJCQkvL2Nhbm5vdCBjYXN0IG51bGwgdG8gcHJpbWl0dmUKKwkJCQkJCQkJCQkJfSBlbHNlIHsKKwkJCQkJCQkJCQkJCU9iamVjdFtdIGFyZ3VtZW50cyA9IG5ldyBPYmplY3RbXXsgdCB9OyAKKwkJCQkJCQkJCQkJCW0uaW52b2tlKHJldHVybk9iamVjdCxhcmd1bWVudHMpOworCQkJCQkJCQkJCQl9CisJCQkJCQkJCQkJCisJCQkJCQkJCQkJfSBlbHNlIHsKKwkJCQkJCQkJCQkJbG9nLmVycm9yKCJjb3VsZCBub3QgZmluZCBhIHNldHRlci1tZXRob2QgZnJvbSBTdHJ1Y3R1cmVkIHRhYmxlLiBJcyB0aGVyZSBhIHNldHRlci1tZXRob2QgZm9yICIgKyBmaWVsZE5hbWUgKyAiIGluIENsYXNzICIgKyB0YXJnZXRDbGFzcy5nZXROYW1lKCkpOworCQkJCQkJCQkJCX0KKwkJCQkJCQkJCX0gZWxzZSB7CisJCQkJCQkJCQkJbG9nLmVycm9yKCJjb3VsZCBub3QgZmluZCBhIG1ldGhvZCBmcm9tIFN0cnVjdHVyZWQgdGFibGUuIElzIHRoZXJlIGEgbWV0aG9kIGZvciAiICsgZmllbGROYW1lICsgIiBpbiBDbGFzcyAiICsgdGFyZ2V0Q2xhc3MuZ2V0TmFtZSgpKTsKKwkJCQkJCQkJCX0KKwkJCQkJCQkJfSBlbHNlIGlmIChNb2RpZmllci5pc1B1YmxpYyhtb2QpICYmICFNb2RpZmllci5pc0ZpbmFsKG1vZCkpeworCQkJCQkJCQkJCisJCQkJCQkJCQkvL0lzIHB1YmxpYyBhdHRyaWJ1dGUgc28gc2V0IGl0IGRpcmVjdGx5CisJCQkJCQkJCQlhbnlGaWVsZC5zZXQocmV0dXJuT2JqZWN0LCB0KTsKKwkJCQkJCQkJCQorCQkJCQkJCQl9IGVsc2UgaWYgKE1vZGlmaWVyLmlzRmluYWwobW9kKSkgeworCQkJCQkJCQkJbG9nLmVycm9yKCJGaW5hbCBhdHRyaWJ1dGVzIGNhbm5vdCBiZSBjaGFuZ2VkICIpOworCQkJCQkJCQl9IGVsc2UgeworCQkJCQkJCQkJbG9nLmVycm9yKCJVbmhhbmRsZWQgTW9kaWZpZXIgVHlwZTogIiArIG1vZCk7CisJCQkJCQkJCX0KKwkJCQkJCQkJCisJCQkJCQkJfQorCQkJCQkJfSBlbHNlIHsKKwkJCQkJCQkvL1RoZXJlIGlzIG5vIG5lc3RlZCBPYmplY3QgZm9yIHRoYXQgZ2l2ZW4KKwkJCQkJCQlsb2cuZXJyb3IoIlRoZXJlIGlzIG5vIG5lc3RlZCBPYmplY3QgZm9yIHRoYXQgZ2l2ZW46IEF0dHJpYnV0ZTogIiArIGZpZWxkTmFtZSArICIgQ2xhc3MgIiArIHRhcmdldENsYXNzLmdldE5hbWUoKSk7CisJCQkJCQl9CisJCQkJCX0KKwkJCQkJCisJCQkJfSAKKwkJCQkKKwkJCQkKKwkJCX0gCisKKwkJCXJldHVybiByZXR1cm5PYmplY3Q7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworCQkJbG9nLmVycm9yKCJbY2FzdEJ5R2l2ZW5PYmplY3RdOiAiICxleCk7CisJCX0KKwkJcmV0dXJuIG51bGw7CisJfQorCQorCXByaXZhdGUgYm9vbGVhbiBjb21wYXJlVHlwZU5hbWVUb0Jhc2ljVHlwZXMoU3RyaW5nIGZpZWxkVHlwZU5hbWUpIHsKKwkJdHJ5IHsKKwkJCQorCQkJZm9yIChJdGVyYXRvcjxTdHJpbmc+IGl0ID0gQ2FzdEJhc2ljVHlwZXMuZ2V0Q29tcGFyZVR5cGVzU2ltcGxlKCkuaXRlcmF0b3IoKTtpdC5oYXNOZXh0KCk7KSB7CisJCQkJaWYgKGZpZWxkVHlwZU5hbWUuZXF1YWxzKGl0Lm5leHQoKSkpIHJldHVybiB0cnVlOworCQkJfQorCQkJCisJCQlyZXR1cm4gZmFsc2U7CisJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBleCkgeworCQkJbG9nLmVycm9yKCJbY29tcGFyZVR5cGVOYW1lVG9CYXNpY1R5cGVzXSIsZXgpOworCQkJcmV0dXJuIGZhbHNlOworCQl9CisJfQorCQorCXByaXZhdGUgYm9vbGVhbiBjb21wYXJlVHlwZU5hbWVUb0FsbG93ZWRMaXN0VHlwZXMoU3RyaW5nIGZpZWxkVHlwZU5hbWUpIHsKKwkJdHJ5IHsKKwkJCS8vbG9nLmVycm9yKCJjb21wYXJlVHlwZU5hbWVUb0FsbG93ZWRMaXN0VHlwZXMiKyBmaWVsZFR5cGVOYW1lKTsKKwkJCWZvciAoSXRlcmF0b3I8U3RyaW5nPiBpdCA9IENhc3RCYXNpY1R5cGVzLmdldEFsbG93ZWRMaXN0VHlwZXMoKS5pdGVyYXRvcigpO2l0Lmhhc05leHQoKTspIHsKKwkJCQlpZiAoZmllbGRUeXBlTmFtZS5lcXVhbHMoaXQubmV4dCgpKSkgcmV0dXJuIHRydWU7CisJCQl9CisJCQkKKwkJCXJldHVybiBmYWxzZTsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisJCQlsb2cuZXJyb3IoIltjb21wYXJlVHlwZU5hbWVUb0Jhc2ljVHlwZXNdIixleCk7CisJCQlyZXR1cm4gZmFsc2U7CisJCX0KKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy91dGlscy9tYXBwaW5ncy9TdHJ1Y3R1cmVNZXRob2RMaXN0LmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdXRpbHMvbWFwcGluZ3MvU3RydWN0dXJlTWV0aG9kTGlzdC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhN2RhZTIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdXRpbHMvbWFwcGluZ3MvU3RydWN0dXJlTWV0aG9kTGlzdC5qYXZhCkBAIC0wLDAgKzEsMTEzIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLm1hcHBpbmdzOworCitpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuRmllbGQ7CitpbXBvcnQgamF2YS5sYW5nLnJlZmxlY3QuTWV0aG9kOworaW1wb3J0IGphdmEudXRpbC5MaW5rZWRIYXNoTWFwOworCitpbXBvcnQgb3JnLmFwYWNoZS5jb21tb25zLmxhbmcuU3RyaW5nVXRpbHM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKKworcHVibGljIGNsYXNzIFN0cnVjdHVyZU1ldGhvZExpc3QgeworCQorCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoU3RydWN0dXJlTWV0aG9kTGlzdC5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOworCQorCXByaXZhdGUgU3RydWN0dXJlTWV0aG9kTGlzdCgpIHt9CisKKwlwcml2YXRlIHN0YXRpYyBTdHJ1Y3R1cmVNZXRob2RMaXN0IGluc3RhbmNlID0gbnVsbDsKKworCXB1YmxpYyBzdGF0aWMgc3luY2hyb25pemVkIFN0cnVjdHVyZU1ldGhvZExpc3QgZ2V0SW5zdGFuY2UoKSB7CisJCWlmIChpbnN0YW5jZSA9PSBudWxsKSB7CisJCQlpbnN0YW5jZSA9IG5ldyBTdHJ1Y3R1cmVNZXRob2RMaXN0KCk7CisJCX0KKwkJcmV0dXJuIGluc3RhbmNlOworCX0JCisJCisJLyoKKwkgKiAKKwkgKi8KKworCXB1YmxpYyBMaW5rZWRIYXNoTWFwPFN0cmluZyxMaW5rZWRIYXNoTWFwPFN0cmluZyxPYmplY3Q+PiBwYXJzZUNsYXNzVG9NZXRob2RMaXN0KENsYXNzPD8+IHRhcmdldENsYXNzKXsKKwkJdHJ5IHsKKwkJCUxpbmtlZEhhc2hNYXA8U3RyaW5nLExpbmtlZEhhc2hNYXA8U3RyaW5nLE9iamVjdD4+IHJldHVybk1hcCA9IG5ldyBMaW5rZWRIYXNoTWFwPFN0cmluZyxMaW5rZWRIYXNoTWFwPFN0cmluZyxPYmplY3Q+PigpOworCQkJCisJCQlmb3IgKEZpZWxkIGZpZWxkIDogdGFyZ2V0Q2xhc3MuZ2V0RGVjbGFyZWRGaWVsZHMoKSkgeworCQkJCVN0cmluZyBmaWVsZE5hbWUgPSBmaWVsZC5nZXROYW1lKCk7CisJCQkJU3RyaW5nIGNhcGl0YWxpemVkRmllbGROYW1lID0gU3RyaW5nVXRpbHMuY2FwaXRhbGl6ZShmaWVsZE5hbWUpOworCQkJCVN0cmluZyBzZXR0ZXJQcmUgPSAic2V0IjsKKwkJCQkKKwkJCQlmb3IgKE1ldGhvZCBtZXRob2QgOiB0YXJnZXRDbGFzcy5nZXRNZXRob2RzKCkpIHsKKwkJCQkJLy8gY2hlY2sgdGhhdCBtZXRob2QgaXMgZGVjbGFyZWQgaW4gY3VycmVudCBjbGFzcy4gCisJCQkJCWlmKG1ldGhvZC5nZXROYW1lKCkuZXF1YWxzKHNldHRlclByZSArIGNhcGl0YWxpemVkRmllbGROYW1lKSl7CisJCQkJCQlTdHJpbmcgbWV0aG9kTmFtZSA9IG1ldGhvZC5nZXROYW1lKCk7CisJCQkJCQkKKwkJCQkJCUNsYXNzPD8+W10gcGFyYW1UeXBlcyA9IG1ldGhvZC5nZXRQYXJhbWV0ZXJUeXBlcygpOworCQkJCQkJLy9sb2cuZXJyb3IoInBhcnNlQ2xhc3NUb01ldGhvZExpc3QgbWV0aG9kTmFtZTogIittZXRob2ROYW1lKTsKKwkJCQkJCWlmIChtZXRob2ROYW1lLnN0YXJ0c1dpdGgoInNldCIpKSB7CisJCQkJCQkJLy9Gb3VuZCBzZXR0ZXIgZ2V0IEF0dHJpYnV0ZSBuYW1lCisJCQkJCQkJaWYgKHJldHVybk1hcC5nZXQoZmllbGROYW1lKSE9bnVsbCkgeworCQkJCQkJCQlMaW5rZWRIYXNoTWFwPFN0cmluZyxPYmplY3Q+IG1ldGhvZExpc3RNYXAgPSByZXR1cm5NYXAuZ2V0KGZpZWxkTmFtZSk7CisJCQkJCQkJCW1ldGhvZExpc3RNYXAucHV0KCJzZXR0ZXIiLCBtZXRob2ROYW1lKTsKKwkJCQkJCQkJbWV0aG9kTGlzdE1hcC5wdXQoInNldHRlclBhcmFtVHlwZXMiLCBwYXJhbVR5cGVzKTsKKwkJCQkJCQl9IGVsc2UgeworCQkJCQkJCQlMaW5rZWRIYXNoTWFwPFN0cmluZyxPYmplY3Q+IG1ldGhvZExpc3RNYXAgPSBuZXcgTGlua2VkSGFzaE1hcDxTdHJpbmcsT2JqZWN0PigpOworCQkJCQkJCQltZXRob2RMaXN0TWFwLnB1dCgic2V0dGVyIiwgbWV0aG9kTmFtZSk7CisJCQkJCQkJCXJldHVybk1hcC5wdXQoZmllbGROYW1lLCBtZXRob2RMaXN0TWFwKTsKKwkJCQkJCQkJbWV0aG9kTGlzdE1hcC5wdXQoInNldHRlclBhcmFtVHlwZXMiLCBwYXJhbVR5cGVzKTsKKwkJCQkJCQl9CisJCQkJCQl9IGVsc2UgaWYgKG1ldGhvZE5hbWUuc3RhcnRzV2l0aCgiaXMiKSkgeworCQkJCQkJCS8vRm91bmQgc2V0dGVyKGJvb2xlYW4pIGdldCBBdHRyaWJ1dGUgbmFtZQorCQkJCQkJCWlmIChyZXR1cm5NYXAuZ2V0KGZpZWxkTmFtZSkhPW51bGwpIHsKKwkJCQkJCQkJTGlua2VkSGFzaE1hcDxTdHJpbmcsT2JqZWN0PiBtZXRob2RMaXN0TWFwID0gcmV0dXJuTWFwLmdldChmaWVsZE5hbWUpOworCQkJCQkJCQltZXRob2RMaXN0TWFwLnB1dCgiZ2V0dGVyIiwgbWV0aG9kTmFtZSk7CisJCQkJCQkJfSBlbHNlIHsKKwkJCQkJCQkJTGlua2VkSGFzaE1hcDxTdHJpbmcsT2JqZWN0PiBtZXRob2RMaXN0TWFwID0gbmV3IExpbmtlZEhhc2hNYXA8U3RyaW5nLE9iamVjdD4oKTsKKwkJCQkJCQkJbWV0aG9kTGlzdE1hcC5wdXQoImdldHRlciIsIG1ldGhvZE5hbWUpOworCQkJCQkJCQlyZXR1cm5NYXAucHV0KGZpZWxkTmFtZSwgbWV0aG9kTGlzdE1hcCk7CisJCQkJCQkJfQorCQkJCQkJfSBlbHNlIGlmIChtZXRob2ROYW1lLnN0YXJ0c1dpdGgoImdldCIpKSB7CisJCQkJCQkJLy9Gb3VuZCBzZXR0ZXIoYm9vbGVhbikgZ2V0IEF0dHJpYnV0ZSBuYW1lCisJCQkJCQkJaWYgKHJldHVybk1hcC5nZXQoZmllbGROYW1lKSE9bnVsbCkgeworCQkJCQkJCQlMaW5rZWRIYXNoTWFwPFN0cmluZyxPYmplY3Q+IG1ldGhvZExpc3RNYXAgPSByZXR1cm5NYXAuZ2V0KGZpZWxkTmFtZSk7CisJCQkJCQkJCW1ldGhvZExpc3RNYXAucHV0KCJnZXR0ZXIiLCBtZXRob2ROYW1lKTsKKwkJCQkJCQl9IGVsc2UgeworCQkJCQkJCQlMaW5rZWRIYXNoTWFwPFN0cmluZyxPYmplY3Q+IG1ldGhvZExpc3RNYXAgPSBuZXcgTGlua2VkSGFzaE1hcDxTdHJpbmcsT2JqZWN0PigpOworCQkJCQkJCQltZXRob2RMaXN0TWFwLnB1dCgiZ2V0dGVyIiwgbWV0aG9kTmFtZSk7CisJCQkJCQkJCXJldHVybk1hcC5wdXQoZmllbGROYW1lLCBtZXRob2RMaXN0TWFwKTsKKwkJCQkJCQl9CisJCQkJCQl9CisJCQkJCQlicmVhazsKKwkJCQkJfQorCQkJCX0KKwkJCQkKKwkJCQkKKwkJCX0JCQkKKwkJCQorCQkJcmV0dXJuIHJldHVybk1hcDsKKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGV4KSB7CisJCQlsb2cuZXJyb3IoIltwYXJzZUNsYXNzVG9NZXRob2RMaXN0XSIsZXgpOworCQkJcmV0dXJuIG5ldyBMaW5rZWRIYXNoTWFwPFN0cmluZyxMaW5rZWRIYXNoTWFwPFN0cmluZyxPYmplY3Q+PigpOworCQl9CisJCQorCX0KKwkKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy91dGlscy9tYXRoL0NhbGVuZGFyUGF0dGVybnMuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy91dGlscy9tYXRoL0NhbGVuZGFyUGF0dGVybnMuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNjgzOTI2Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3V0aWxzL21hdGgvQ2FsZW5kYXJQYXR0ZXJucy5qYXZhCkBAIC0wLDAgKzEsMjI1IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLm1hdGg7CisKK2ltcG9ydCBqYXZhLnRleHQuU2ltcGxlRGF0ZUZvcm1hdDsKK2ltcG9ydCBqYXZhLnV0aWwuRGF0ZTsKK2ltcG9ydCBqYXZhLnV0aWwuVGltZVpvbmU7CisKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CisKKy8qKgorICogQGF1dGhvciBTZWJhc3RpYW4gV2FnbmVyCisgKiAyNy4wOC4yMDA1IC0gMTk6MjQ6MjUKKyAqCisgKi8KK3B1YmxpYyBjbGFzcyBDYWxlbmRhclBhdHRlcm5zIHsKKwkKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKENhbGVuZGFyUGF0dGVybnMuY2xhc3MsICJvcGVubWVldGluZ3MiKTsKKwkKKwlwdWJsaWMgc3RhdGljIFNpbXBsZURhdGVGb3JtYXQgZGF0ZUZvcm1hdF9fZGRNTXl5eXlISG1tc3MgPSBuZXcgU2ltcGxlRGF0ZUZvcm1hdCgiZGQuTU0ueXl5eSBISDptbTpzcyIpOworCXB1YmxpYyBzdGF0aWMgU2ltcGxlRGF0ZUZvcm1hdCBkYXRlRm9ybWF0X19kZE1NeXl5eSA9IG5ldyBTaW1wbGVEYXRlRm9ybWF0KCJkZC5NTS55eXl5Iik7CisJcHVibGljIHN0YXRpYyBTaW1wbGVEYXRlRm9ybWF0IGRhdGVGb3JtYXRfX2RkTU15eXl5QnlTZXBhcmF0b3IgPSBuZXcgU2ltcGxlRGF0ZUZvcm1hdCgiZGQtTU0teXl5eSIpOworICAgIAorICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldERhdGVCeU1pbGlTZWNvbmRzKERhdGUgdCl7CisgICAgICAgIFNpbXBsZURhdGVGb3JtYXQgc2RmID0gbmV3IFNpbXBsZURhdGVGb3JtYXQoImRkLk1NLnl5eXkiKTsKKyAgICAgICAgRGF0ZSBkYXRlT2xkID0gbmV3IERhdGUoKTsKKyAgICAgICAgbG9uZyB0aW1lQWR2ID0gdC5nZXRUaW1lKCk7CisgICAgICAgIGRhdGVPbGQuc2V0VGltZSh0aW1lQWR2KTsKKyAgICAgICAgU3RyaW5nIHJlc3VsdCA9IHNkZi5mb3JtYXQoZGF0ZU9sZCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldERhdGVXaXRoVGltZUJ5TWlsaVNlY29uZHMoRGF0ZSB0KXsKKyAgICAJaWYgKHQgPT0gbnVsbCkgeworICAgIAkJcmV0dXJuIG51bGw7CisgICAgCX0KKyAgICAgICAgU2ltcGxlRGF0ZUZvcm1hdCBzZGYgPSBuZXcgU2ltcGxlRGF0ZUZvcm1hdCgiZGQuTU0ueXl5eSBISDptbTpzcyIpOworICAgICAgICBEYXRlIGRhdGVPbGQgPSBuZXcgRGF0ZSgpOworICAgICAgICBsb25nIHRpbWVBZHYgPSB0LmdldFRpbWUoKTsKKyAgICAgICAgZGF0ZU9sZC5zZXRUaW1lKHRpbWVBZHYpOworICAgICAgICBTdHJpbmcgcmVzdWx0ID0gc2RmLmZvcm1hdChkYXRlT2xkKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0RGF0ZVdpdGhUaW1lQnlNaWxpU2Vjb25kcyhEYXRlIHQsIFRpbWVab25lIHRpbWV6b25lKXsKKyAgICAJaWYgKHQgPT0gbnVsbCkgeworICAgIAkJcmV0dXJuIG51bGw7CisgICAgCX0KKyAgICAgICAgU2ltcGxlRGF0ZUZvcm1hdCBzZGYgPSBuZXcgU2ltcGxlRGF0ZUZvcm1hdCgiZGQuTU0ueXl5eSBISDptbTpzcyIpOworICAgICAgICBzZGYuc2V0VGltZVpvbmUodGltZXpvbmUpOworICAgICAgICBEYXRlIGRhdGVPbGQgPSBuZXcgRGF0ZSgpOworICAgICAgICBsb25nIHRpbWVBZHYgPSB0LmdldFRpbWUoKTsKKyAgICAgICAgZGF0ZU9sZC5zZXRUaW1lKHRpbWVBZHYpOworICAgICAgICBTdHJpbmcgcmVzdWx0ID0gc2RmLmZvcm1hdChkYXRlT2xkKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0RGF0ZVdpdGhUaW1lQnlNaWxpU2Vjb25kc1dpdGhab25lKERhdGUgdCl7CisgICAgCWlmICh0ID09IG51bGwpIHsKKyAgICAJCXJldHVybiBudWxsOworICAgIAl9CisgICAgICAgIFNpbXBsZURhdGVGb3JtYXQgc2RmID0gbmV3IFNpbXBsZURhdGVGb3JtYXQoImRkLk1NLnl5eXkgSEg6bW06c3MgeiAoWikiKTsKKyAgICAgICAgRGF0ZSBkYXRlT2xkID0gbmV3IERhdGUoKTsKKyAgICAgICAgbG9uZyB0aW1lQWR2ID0gdC5nZXRUaW1lKCk7CisgICAgICAgIGRhdGVPbGQuc2V0VGltZSh0aW1lQWR2KTsKKyAgICAgICAgU3RyaW5nIHJlc3VsdCA9IHNkZi5mb3JtYXQoZGF0ZU9sZCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldEV4cG9ydERhdGUoRGF0ZSB0KXsKKyAgICAJaWYgKHQgPT0gbnVsbCkgeworICAgIAkJcmV0dXJuICIiOworICAgIAl9CisgICAgICAgIHJldHVybiAiIit0LmdldFRpbWUoKTsKKyAgICB9CisgICAgCisgICAgcHVibGljIHN0YXRpYyBEYXRlIHBhcnNlSW1wb3J0RGF0ZShTdHJpbmcgZGF0ZVN0cmluZykgeworICAgIAl0cnkgeworICAgIAkJCisgICAgCQlEYXRlIHJlc3VsdERhdGUgPSBudWxsOworICAgIAkJCisgICAgCQlyZXN1bHREYXRlID0gdmFsaWREYXRlKGRhdGVGb3JtYXRfX2RkTU15eXl5SEhtbXNzLCBkYXRlU3RyaW5nKTsKKyAgICAJCQorICAgIAkJaWYgKCByZXN1bHREYXRlICE9IG51bGwgKSB7CisgICAgCQkJcmV0dXJuIHJlc3VsdERhdGU7CisgICAgCQl9CisgICAgCQkKKyAgICAJCXJlc3VsdERhdGUgPSB2YWxpZERhdGUoZGF0ZUZvcm1hdF9fZGRNTXl5eXksIGRhdGVTdHJpbmcpOworICAgIAkJCisgICAgCQlpZiAoIHJlc3VsdERhdGUgIT0gbnVsbCApIHsKKyAgICAJCQlyZXR1cm4gcmVzdWx0RGF0ZTsKKyAgICAJCX0KKyAgICAJCQorICAgIAkJcmVzdWx0RGF0ZSA9IHZhbGlkRGF0ZShkYXRlU3RyaW5nKTsKKyAgICAJCQorICAgIAkJaWYgKGRhdGVTdHJpbmcgIT0gbnVsbCkgeworICAgIAkJCXJldHVybiByZXN1bHREYXRlOworICAgIAkJfQorICAgIAkJCisgICAgCQkKKyAgICAJCXRocm93IG5ldyBFeGNlcHRpb24gKCJDb3VsZCBub3QgcGFyc2UgZGF0ZSBzdHJpbmcgIitkYXRlU3RyaW5nKTsKKyAgICAJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsKKyAgICAJCWxvZy5lcnJvcigicGFyc2VEYXRlIixlKTsKKyAgICAJfQorICAgIAlyZXR1cm4gbnVsbDsKKyAgICB9CisgICAgCisgICAgcHJpdmF0ZSBzdGF0aWMgRGF0ZSB2YWxpZERhdGUoU3RyaW5nIHRlc3RkYXRlKSB7CisgICAgCXRyeSB7CisgICAgCQkKKyAgICAJCUxvbmcgdCA9IExvbmcudmFsdWVPZih0ZXN0ZGF0ZSk7CisgICAgCQkKKyAgICAJCWlmICh0ICE9IG51bGwpIHsKKyAgICAJCQlyZXR1cm4gbmV3IERhdGUodCk7CisgICAgCQl9CisgICAgCQkKKyAgICAJfSBjYXRjaCAoRXhjZXB0aW9uIGVycikgeworICAgIAl9CisgICAgCXJldHVybiBudWxsOworICAgIH0KKyAgICAKKyAgICBwcml2YXRlIHN0YXRpYyBEYXRlIHZhbGlkRGF0ZShTaW1wbGVEYXRlRm9ybWF0IHNkZiwgU3RyaW5nIHRlc3RkYXRlKQorICAgIHsKKyAgICAgICAgRGF0ZSByZXN1bHREYXRlID0gbnVsbDsKKyAgICAgICAgdHJ5CisgICAgICAgIHsKKyAgICAgICAgCXJlc3VsdERhdGUgPSBzZGYucGFyc2UodGVzdGRhdGUpOworICAgICAgICB9CisKKyAgICAgICAgLy8gaWYgdGhlIGZvcm1hdCBvZiB0aGUgc3RyaW5nIHByb3ZpZGVkIGRvZXNuJ3QgbWF0Y2ggdGhlIGZvcm1hdCB3ZSAKKyAgICAgICAgLy8gZGVjbGFyZWQgaW4gU2ltcGxlRGF0ZUZvcm1hdCgpIHdlIHdpbGwgZ2V0IGFuIGV4Y2VwdGlvbgorCisgICAgICAgIGNhdGNoIChqYXZhLnRleHQuUGFyc2VFeGNlcHRpb24gZSkKKyAgICAgICAgeworICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICB9CisKKyAgICAgICAgaWYgKCFzZGYuZm9ybWF0KHJlc3VsdERhdGUpLmVxdWFscyh0ZXN0ZGF0ZSkpIAorICAgICAgICB7CisgICAgICAgICAgcmV0dXJuIG51bGw7CisgICAgICAgIH0KKyAgICAgICAgCisgICAgICAgIHJldHVybiByZXN1bHREYXRlOworCisgICAgfQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIGdldERhdGVXaXRoVGltZUJ5TWlsaVNlY29uZHNBbmRUaW1lWm9uZShEYXRlIHQsIFRpbWVab25lIHRpbWV6b25lKXsKKyAgICAJaWYgKHQgPT0gbnVsbCkgeworICAgIAkJcmV0dXJuIG51bGw7CisgICAgCX0KKyAgICAgICAgU2ltcGxlRGF0ZUZvcm1hdCBzZGYgPSBuZXcgU2ltcGxlRGF0ZUZvcm1hdCgiZGQuTU0ueXl5eSBISDptbTpzcyB6IChaKSIpOworICAgICAgICBzZGYuc2V0VGltZVpvbmUodGltZXpvbmUpOworICAgICAgICBEYXRlIGRhdGVPbGQgPSBuZXcgRGF0ZSgpOworICAgICAgICBsb25nIHRpbWVBZHYgPSB0LmdldFRpbWUoKTsKKyAgICAgICAgZGF0ZU9sZC5zZXRUaW1lKHRpbWVBZHYpOworICAgICAgICBTdHJpbmcgcmVzdWx0ID0gc2RmLmZvcm1hdChkYXRlT2xkKTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisgICAgCisgICAgcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0VGltZUZvclN0cmVhbUlkKERhdGUgdCl7CisgICAgICAgIFNpbXBsZURhdGVGb3JtYXQgc2RmID0gbmV3IFNpbXBsZURhdGVGb3JtYXQoInl5eXlfTU1fZGRfSEhfbW1fc3MiKTsKKyAgICAgICAgRGF0ZSBkYXRlT2xkID0gbmV3IERhdGUoKTsKKyAgICAgICAgbG9uZyB0aW1lQWR2ID0gdC5nZXRUaW1lKCk7CisgICAgICAgIGRhdGVPbGQuc2V0VGltZSh0aW1lQWR2KTsKKyAgICAgICAgU3RyaW5nIHJlc3VsdCA9IHNkZi5mb3JtYXQoZGF0ZU9sZCk7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSAgICAKKyAgICAKKyAgICBwdWJsaWMgc3RhdGljIERhdGUgcGFyc2VEYXRlKFN0cmluZyBkYXRlU3RyaW5nKSB7CisgICAgCXRyeSB7CisgICAgCQlyZXR1cm4gZGF0ZUZvcm1hdF9fZGRNTXl5eXkucGFyc2UoZGF0ZVN0cmluZyk7CisgICAgCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgCQlsb2cuZXJyb3IoInBhcnNlRGF0ZSIsZSk7CisgICAgCX0KKyAgICAJcmV0dXJuIG51bGw7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgRGF0ZSBwYXJzZURhdGVCeVNlcGFyYXRvcihTdHJpbmcgZGF0ZVN0cmluZykgeworICAgIAl0cnkgeworICAgIAkJcmV0dXJuIGRhdGVGb3JtYXRfX2RkTU15eXl5QnlTZXBhcmF0b3IucGFyc2UoZGF0ZVN0cmluZyk7CisgICAgCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgCQlsb2cuZXJyb3IoInBhcnNlRGF0ZSIsZSk7CisgICAgCX0KKyAgICAJcmV0dXJuIG51bGw7CisgICAgfQorICAgIAorICAgIHB1YmxpYyBzdGF0aWMgRGF0ZSBwYXJzZURhdGVXaXRoSG91cihTdHJpbmcgZGF0ZVN0cmluZykgeworICAgIAl0cnkgeworICAgIAkJaWYgKGRhdGVTdHJpbmcgPT0gbnVsbCB8fCBkYXRlU3RyaW5nLmxlbmd0aCgpPT0wIHx8IGRhdGVTdHJpbmcuZXF1YWxzKCJudWxsIikgKSB7CisgICAgICAgIAkJcmV0dXJuIG51bGw7CisgICAgICAgIAl9CisgICAgCQlyZXR1cm4gZGF0ZUZvcm1hdF9fZGRNTXl5eXlISG1tc3MucGFyc2UoZGF0ZVN0cmluZyk7CisgICAgCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7CisgICAgCQlsb2cuZXJyb3IoInBhcnNlRGF0ZSIsZSk7CisgICAgCX0KKyAgICAJcmV0dXJuIG51bGw7CisgICAgfQorCisJcHVibGljIHN0YXRpYyBTdHJpbmcgZ2V0WWVhcihEYXRlIHQpeworICAgICAgICBTaW1wbGVEYXRlRm9ybWF0IHNkZiA9IG5ldyBTaW1wbGVEYXRlRm9ybWF0KCJ5eXl5Iik7CisgICAgICAgIERhdGUgZGF0ZU9sZCA9IG5ldyBEYXRlKCk7CisgICAgICAgIGxvbmcgdGltZUFkdiA9IHQuZ2V0VGltZSgpOworICAgICAgICBkYXRlT2xkLnNldFRpbWUodGltZUFkdik7CisgICAgICAgIFN0cmluZyByZXN1bHQgPSBzZGYuZm9ybWF0KGRhdGVPbGQpOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0gCisgICAgCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdXRpbHMvbWF0aC9HZW5lcmF0ZVJhbmRvbS5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3V0aWxzL21hdGgvR2VuZXJhdGVSYW5kb20uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NTFiNTYwCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3V0aWxzL21hdGgvR2VuZXJhdGVSYW5kb20uamF2YQpAQCAtMCwwICsxLDM4IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLm1hdGg7CitpbXBvcnQgamF2YS51dGlsLio7CisKK3B1YmxpYyBjbGFzcyBHZW5lcmF0ZVJhbmRvbSB7CisgICAgcHJpdmF0ZSBzdGF0aWMgUmFuZG9tIHJuID0gbmV3IFJhbmRvbSgpOworICAgIHB1YmxpYyBzdGF0aWMgaW50IHJhbmQoaW50IGxvLCBpbnQgaGkpIHsKKyAgICAgICAgICAgIGludCBuID0gaGkgLSBsbyArIDE7CisgICAgICAgICAgICBpbnQgaSA9IHJuLm5leHRJbnQoKSAlIG47CisgICAgICAgICAgICBpZiAoaSA8IDApCisgICAgICAgICAgICAgICAgICAgIGkgPSAtaTsKKyAgICAgICAgICAgIHJldHVybiBsbyArIGk7CisgICAgfQorICAgIHB1YmxpYyBzdGF0aWMgU3RyaW5nIHJhbmRvbXN0cmluZyhpbnQgbG8sIGludCBoaSkgeworICAgICAgICAgICAgaW50IG4gPSByYW5kKGxvLCBoaSk7CisgICAgICAgICAgICBieXRlIGJbXSA9IG5ldyBieXRlW25dOworICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspCisgICAgICAgICAgICAgICAgICAgIGJbaV0gPSAoYnl0ZSlyYW5kKCdhJywgJ3onKTsKKyAgICAgICAgICAgIHJldHVybiBuZXcgU3RyaW5nKGIsIDAsIG4pOworICAgIH0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy91dGlscy9tYXRoL1RpbWV6b25lVXRpbC5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3V0aWxzL21hdGgvVGltZXpvbmVVdGlsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmZiZjY3OQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy91dGlscy9tYXRoL1RpbWV6b25lVXRpbC5qYXZhCkBAIC0wLDAgKzEsMTkzIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLm1hdGg7CisKK2ltcG9ydCBqYXZhLnV0aWwuQ2FsZW5kYXI7CitpbXBvcnQgamF2YS51dGlsLkRhdGU7CitpbXBvcnQgamF2YS51dGlsLlRpbWVab25lOworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuZGFvLkNvbmZpZ3VyYXRpb25EYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5kYW8uT21UaW1lWm9uZURhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5PbVRpbWVab25lOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuVXNlcjsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5iZWFucy5mYWN0b3J5LmFubm90YXRpb24uQXV0b3dpcmVkOworCitwdWJsaWMgY2xhc3MgVGltZXpvbmVVdGlsIHsKKworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoCisJCQlUaW1lem9uZVV0aWwuY2xhc3MsIE9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKworCUBBdXRvd2lyZWQKKwlwcml2YXRlIENvbmZpZ3VyYXRpb25EYW8gY29uZmlndXJhdGlvbkRhbzsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBPbVRpbWVab25lRGFvIG9tVGltZVpvbmVEYW9JbXBsOworCisJLyoqCisJICogUmV0dXJucyB0aGUgdGltZXpvbmUgYmFzZWQgb24gdGhlIHVzZXIgcHJvZmlsZSwgaWYgbm90IHJldHVybiB0aGUKKwkgKiB0aW1lem9uZSBmcm9tIHRoZSBzZXJ2ZXIKKwkgKiAKKwkgKiBAcGFyYW0gdXNlcgorCSAqIEByZXR1cm4KKwkgKi8KKwlwdWJsaWMgVGltZVpvbmUgZ2V0VGltZXpvbmVCeVVzZXIoVXNlciB1c2VyKSB7CisKKwkJaWYgKHVzZXIgIT0gbnVsbCAmJiB1c2VyLmdldE9tVGltZVpvbmUoKSAhPSBudWxsKSB7CisKKwkJCVRpbWVab25lIHRpbWVab25lID0gVGltZVpvbmUuZ2V0VGltZVpvbmUodXNlci5nZXRPbVRpbWVab25lKCkKKwkJCQkJLmdldEljYWwoKSk7CisKKwkJCWlmICh0aW1lWm9uZSAhPSBudWxsKSB7CisJCQkJcmV0dXJuIHRpbWVab25lOworCQkJfQorCisJCX0KKworCQkvLyBpZiB1c2VyIGhhcyBub3QgdGltZSB6b25lIGdldCBvbmUgZnJvbSB0aGUgc2VydmVyIGNvbmZpZ3VyYXRpb24KKworCQlTdHJpbmcgZGVmYXVsdFR6TmFtZSA9IGNvbmZpZ3VyYXRpb25EYW8uZ2V0Q29uZlZhbHVlKCJkZWZhdWx0LnRpbWV6b25lIiwgU3RyaW5nLmNsYXNzLCAiRXVyb3BlL0JlcmxpbiIpOworCisJCU9tVGltZVpvbmUgb21UaW1lWm9uZSA9IG9tVGltZVpvbmVEYW9JbXBsLmdldE9tVGltZVpvbmUoZGVmYXVsdFR6TmFtZSk7CisKKwkJVGltZVpvbmUgdGltZVpvbmVCeU9tVGltZVpvbmUgPSBUaW1lWm9uZS5nZXRUaW1lWm9uZShvbVRpbWVab25lCisJCQkJLmdldEljYWwoKSk7CisKKwkJaWYgKHRpbWVab25lQnlPbVRpbWVab25lICE9IG51bGwpIHsKKwkJCXJldHVybiB0aW1lWm9uZUJ5T21UaW1lWm9uZTsKKwkJfQorCisJCS8vIElmIGV2ZXJ5dGhpbmcgZmFpbHMgdGFrZSB0aGUgc2VydmVycyBkZWZhdWx0IG9uZQorCQlsb2cuZXJyb3IoIlRoZXJlIGlzIG5vIGNvcnJlY3QgdGltZSB6b25lIHNldCBpbiB0aGUgY29uZmlndXJhdGlvbiBvZiBPcGVuTWVldGluZ3MgZm9yIHRoZSBrZXkgZGVmYXVsdC50aW1lem9uZSBvciBrZXkgaXMgbWlzc2luZyBpbiB0YWJsZSwgdXNpbmcgZGVmYXVsdCBsb2NhbGUhIik7CisJCXJldHVybiBUaW1lWm9uZS5nZXREZWZhdWx0KCk7CisJfQorCisJLyoqCisJICogUmV0dXJuIHRoZSB0aW1lem9uZSBiYXNlZCBvbiBvdXIgaW50ZXJuYWwgak5hbWUKKwkgKiAKKwkgKiBAcGFyYW0gak5hbWUKKwkgKiBAcmV0dXJuCisJICovCisJcHVibGljIFRpbWVab25lIGdldFRpbWV6b25lQnlJbnRlcm5hbEpOYW1lKFN0cmluZyBqTmFtZSkgeworCisJCU9tVGltZVpvbmUgb21UaW1lWm9uZSA9IG9tVGltZVpvbmVEYW9JbXBsLmdldE9tVGltZVpvbmUoak5hbWUpOworCQkKKwkJaWYgKG9tVGltZVpvbmUgPT0gbnVsbCkgeworCQkJbG9nLmVycm9yKCJUaGVyZSBpcyBub3Qgb21UaW1lWm9uZSBmb3IgdGhpcyBqTmFtZTogIitqTmFtZSk7CisJCQl0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigiVGhlcmUgaXMgbm90IG9tVGltZVpvbmUgZm9yIHRoaXMgak5hbWU6ICIrak5hbWUpOworCQl9CisKKwkJVGltZVpvbmUgdGltZVpvbmUgPSBUaW1lWm9uZS5nZXRUaW1lWm9uZShvbVRpbWVab25lLmdldEljYWwoKSk7CisKKwkJaWYgKHRpbWVab25lICE9IG51bGwpIHsKKwkJCXJldHVybiB0aW1lWm9uZTsKKwkJfQorCisJCS8vIGlmIHVzZXIgaGFzIG5vdCB0aW1lIHpvbmUgZ2V0IG9uZSBmcm9tIHRoZSBzZXJ2ZXIgY29uZmlndXJhdGlvbgorCisJCVN0cmluZyBkZWZhdWx0VHpOYW1lID0gY29uZmlndXJhdGlvbkRhby5nZXRDb25mVmFsdWUoImRlZmF1bHQudGltZXpvbmUiLCBTdHJpbmcuY2xhc3MsICJFdXJvcGUvQmVybGluIik7CisKKwkJT21UaW1lWm9uZSBvbVRpbWVab25lRGVmYXVsdCA9IG9tVGltZVpvbmVEYW9JbXBsLmdldE9tVGltZVpvbmUoZGVmYXVsdFR6TmFtZSk7CisKKwkJVGltZVpvbmUgdGltZVpvbmVCeU9tVGltZVpvbmUgPSBUaW1lWm9uZQorCQkJCS5nZXRUaW1lWm9uZShvbVRpbWVab25lRGVmYXVsdC5nZXRJY2FsKCkpOworCisJCWlmICh0aW1lWm9uZUJ5T21UaW1lWm9uZSAhPSBudWxsKSB7CisJCQlyZXR1cm4gdGltZVpvbmVCeU9tVGltZVpvbmU7CisJCX0KKworCQkvLyBJZiBldmVyeXRoaW5nIGZhaWxzIHRha2UgdGhlIHNlcnZlcnMgZGVmYXVsdCBvbmUKKwkJbG9nLmVycm9yKCJUaGVyZSBpcyBubyBjb3JyZWN0IHRpbWUgem9uZSBzZXQgaW4gdGhlIGNvbmZpZ3VyYXRpb24gb2YgT3Blbk1lZXRpbmdzIGZvciB0aGUga2V5IGRlZmF1bHQudGltZXpvbmUgb3Iga2V5IGlzIG1pc3NpbmcgaW4gdGFibGUsIHVzaW5nIGRlZmF1bHQgbG9jYWxlISIpOworCQlyZXR1cm4gVGltZVpvbmUuZ2V0RGVmYXVsdCgpOworCX0KKworCS8qKgorCSAqIFJldHVybiB0aGUgdGltZXpvbmUgYmFzZWQgSWQgZnJvbSBvbVRpbWVab25lIHRhYmxlCisJICogCisJICogQHBhcmFtIGpOYW1lCisJICogQHJldHVybgorCSAqLworCXB1YmxpYyBUaW1lWm9uZSBnZXRUaW1lem9uZUJ5T21UaW1lWm9uZUlkKExvbmcgb210aW1lem9uZUlkKSB7CisKKwkJT21UaW1lWm9uZSBvbVRpbWVab25lID0gb21UaW1lWm9uZURhb0ltcGwKKwkJCQkuZ2V0T21UaW1lWm9uZUJ5SWQob210aW1lem9uZUlkKTsKKworCQlUaW1lWm9uZSB0aW1lWm9uZSA9IFRpbWVab25lLmdldFRpbWVab25lKG9tVGltZVpvbmUuZ2V0SWNhbCgpKTsKKworCQlpZiAodGltZVpvbmUgIT0gbnVsbCkgeworCQkJcmV0dXJuIHRpbWVab25lOworCQl9CisKKwkJLy8gaWYgdXNlciBoYXMgbm90IHRpbWUgem9uZSBnZXQgb25lIGZyb20gdGhlIHNlcnZlciBjb25maWd1cmF0aW9uCisKKwkJU3RyaW5nIGRlZmF1bHRUek5hbWUgPSBjb25maWd1cmF0aW9uRGFvLmdldENvbmZWYWx1ZSgiZGVmYXVsdC50aW1lem9uZSIsIFN0cmluZy5jbGFzcywgIkV1cm9wZS9CZXJsaW4iKTsKKworCQlPbVRpbWVab25lIG9tVGltZVpvbmVEZWZhdWx0ID0gb21UaW1lWm9uZURhb0ltcGwuZ2V0T21UaW1lWm9uZShkZWZhdWx0VHpOYW1lKTsKKworCQlUaW1lWm9uZSB0aW1lWm9uZUJ5T21UaW1lWm9uZSA9IFRpbWVab25lCisJCQkJLmdldFRpbWVab25lKG9tVGltZVpvbmVEZWZhdWx0LmdldEljYWwoKSk7CisKKwkJaWYgKHRpbWVab25lQnlPbVRpbWVab25lICE9IG51bGwpIHsKKwkJCXJldHVybiB0aW1lWm9uZUJ5T21UaW1lWm9uZTsKKwkJfQorCisJCS8vIElmIGV2ZXJ5dGhpbmcgZmFpbHMgdGFrZSB0aGUgc2VydmVycyBkZWZhdWx0IG9uZQorCQlsb2cuZXJyb3IoIlRoZXJlIGlzIG5vIGNvcnJlY3QgdGltZSB6b25lIHNldCBpbiB0aGUgY29uZmlndXJhdGlvbiBvZiBPcGVuTWVldGluZ3MgZm9yIHRoZSBrZXkgZGVmYXVsdC50aW1lem9uZSBvciBrZXkgaXMgbWlzc2luZyBpbiB0YWJsZSwgdXNpbmcgZGVmYXVsdCBsb2NhbGUhIik7CisJCXJldHVybiBUaW1lWm9uZS5nZXREZWZhdWx0KCk7CisJfQorCQorCS8qKgorCSAqIFdlIGlnbm9yZSB0aGUgZmFjdCB0aGF0IGEgRGF0ZSBPYmplY3QgaXMgYWx3YXlzIGluIFVUQyBpbnRlcm5hbGx5IGFuZAorCSAqIHRyZWF0IGl0IGFzIGlmIGl0IGNvbnRhaW5zIG9ubHkgZGQubW0ueXl5eSBISDptbTpzcy4gV2UgbmVlZCB0byBkbyB0aGlzCisJICogY2F1c2Ugd2UgY2Fubm90IHRydXN0IHRoZSBEYXRlIE9iamVjdCBzZW5kIGZyb20gdGhlIGNsaWVudC4gV2UgaGF2ZSB0aGUKKwkgKiB0aW1lWm9uZSBpbmZvcm1hdGlvbiBhZGRpdGlvbmFsIHRvIHRoZSBEYXRlLCBzbyB3ZSB1c2UgaXQgdG8gdHJhbnNmb3JtIGl0CisJICogbm93IHRvIGEgQ2FsZW5kYXIgT2JqZWN0LgorCSAqIAorCSAqIEBwYXJhbSBkYXRlVGltZQorCSAqIEBwYXJhbSB0aW1lem9uZQorCSAqIEByZXR1cm4KKwkgKi8KKwlwdWJsaWMgc3RhdGljIENhbGVuZGFyIGdldENhbGVuZGFySW5UaW1lem9uZShTdHJpbmcgZGF0ZVRpbWVTdHIsCisJCQlUaW1lWm9uZSB0aW1lem9uZSkgeworCQkKKwkJRGF0ZSBkYXRlVGltZSA9IENhbGVuZGFyUGF0dGVybnMucGFyc2VJbXBvcnREYXRlKGRhdGVUaW1lU3RyKTsKKworCQlDYWxlbmRhciBjYWxPcmlnID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTsKKwkJY2FsT3JpZy5zZXRUaW1lKGRhdGVUaW1lKTsKKworCQlDYWxlbmRhciBjYWwgPSBDYWxlbmRhci5nZXRJbnN0YW5jZSh0aW1lem9uZSk7CisJCWNhbC5zZXQoQ2FsZW5kYXIuWUVBUiwgY2FsT3JpZy5nZXQoQ2FsZW5kYXIuWUVBUikpOworCQljYWwuc2V0KENhbGVuZGFyLk1PTlRILCBjYWxPcmlnLmdldChDYWxlbmRhci5NT05USCkpOworCQljYWwuc2V0KENhbGVuZGFyLkRBVEUsIGNhbE9yaWcuZ2V0KENhbGVuZGFyLkRBVEUpKTsKKwkJY2FsLnNldChDYWxlbmRhci5IT1VSX09GX0RBWSwgY2FsT3JpZy5nZXQoQ2FsZW5kYXIuSE9VUl9PRl9EQVkpKTsKKwkJY2FsLnNldChDYWxlbmRhci5NSU5VVEUsIGNhbE9yaWcuZ2V0KENhbGVuZGFyLk1JTlVURSkpOworCQljYWwuc2V0KENhbGVuZGFyLlNFQ09ORCwgY2FsT3JpZy5nZXQoQ2FsZW5kYXIuU0VDT05EKSk7CisJCWNhbC5zZXQoQ2FsZW5kYXIuTUlMTElTRUNPTkQsIDApOworCisJCXJldHVybiBjYWw7CisJfQorCQorCXB1YmxpYyBzdGF0aWMgbG9uZyBfZ2V0T2Zmc2V0KFRpbWVab25lIHRpbWV6b25lKSB7CisJCUNhbGVuZGFyIGNhbCA9IENhbGVuZGFyLmdldEluc3RhbmNlKCk7CisJCWNhbC5zZXRUaW1lWm9uZSh0aW1lem9uZSk7CisJCXJldHVybiBjYWwuZ2V0KENhbGVuZGFyLlpPTkVfT0ZGU0VUKSArIGNhbC5nZXQoQ2FsZW5kYXIuRFNUX09GRlNFVCk7CisJfQorCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdXRpbHMvc21zL1NNU0hhbmRsZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy91dGlscy9zbXMvU01TSGFuZGxlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4OGRiZmYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdXRpbHMvc21zL1NNU0hhbmRsZXIuamF2YQpAQCAtMCwwICsxLDExNyBAQAorLyoNCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICogdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5zbXM7DQorDQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5kYW8uQ29uZmlndXJhdGlvbkRhbzsNCitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsNCitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsNCitpbXBvcnQgb3JnLnNtc2xpYi5NZXNzYWdlLk1lc3NhZ2VFbmNvZGluZ3M7DQoraW1wb3J0IG9yZy5zbXNsaWIuT3V0Ym91bmRNZXNzYWdlOw0KK2ltcG9ydCBvcmcuc21zbGliLlNlcnZpY2U7DQoraW1wb3J0IG9yZy5zbXNsaWIuaHR0cC5CdWxrU21zSFRUUEdhdGV3YXk7DQoraW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsNCitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5jb3JlLnRhc2suVGFza0V4ZWN1dG9yOw0KKw0KKy8qKg0KKyAqIA0KKyAqIEBhdXRob3IgaWFya2gNCisgKiANCisgKi8NCisNCitwdWJsaWMgY2xhc3MgU01TSGFuZGxlciB7DQorDQorCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoDQorCQkJU01TSGFuZGxlci5jbGFzcywgT3Blbm1lZXRpbmdzVmFyaWFibGVzLndlYkFwcFJvb3RLZXkpOw0KKw0KKwlAQXV0b3dpcmVkDQorCXByb3RlY3RlZCBDb25maWd1cmF0aW9uRGFvIGNvbmZpZ3VyYXRpb25EYW87DQorCUBBdXRvd2lyZWQNCisJcHJvdGVjdGVkIFRhc2tFeGVjdXRvciB0YXNrRXhlY3V0b3I7DQorDQorCXByaXZhdGUgQnVsa1Ntc0hUVFBHYXRld2F5IGdhdGV3YXkgPSBudWxsOw0KKwkNCisJcHJpdmF0ZSBib29sZWFuIGNoZWNrQmFsYW5jZSgpIHRocm93cyBFeGNlcHRpb24gew0KKwkJaWYgKGdhdGV3YXkgPT0gbnVsbCkgew0KKwkJCVN0cmluZyBzbXNQcm92aWRlciA9IGNvbmZpZ3VyYXRpb25EYW8uZ2V0Q29uZlZhbHVlKCJzbXMucHJvdmlkZXIiLCBTdHJpbmcuY2xhc3MsIG51bGwpOw0KKwkJCVN0cmluZyBzbXNVc2VybmFtZSA9IGNvbmZpZ3VyYXRpb25EYW8uZ2V0Q29uZlZhbHVlKCJzbXMudXNlcm5hbWUiLCBTdHJpbmcuY2xhc3MsIG51bGwpOw0KKwkJCVN0cmluZyBzbXNVc2VycGFzcyA9IGNvbmZpZ3VyYXRpb25EYW8uZ2V0Q29uZlZhbHVlKCJzbXMudXNlcnBhc3MiLCBTdHJpbmcuY2xhc3MsIG51bGwpOw0KKw0KKwkJCWlmIChzbXNQcm92aWRlciA9PSBudWxsIHx8IHNtc1Byb3ZpZGVyLmxlbmd0aCgpID09IDAgfHwNCisJCQkJCXNtc1VzZXJuYW1lID09IG51bGwgfHwgc21zVXNlcm5hbWUubGVuZ3RoKCkgPT0gMCkgew0KKwkJCQlsb2cuZXJyb3IoIlNNUyBQcm92aWRlciBpcyBub3QgY29uZmlndXJlZCBwcm9wZXJseSEiKTsNCisJCQkJcmV0dXJuIGZhbHNlOw0KKwkJCX0NCisJCQlnYXRld2F5ID0gbmV3IEJ1bGtTbXNIVFRQR2F0ZXdheShzbXNQcm92aWRlciwgc21zVXNlcm5hbWUsIHNtc1VzZXJwYXNzKTsNCisJCQlnYXRld2F5LnNldE91dGJvdW5kKHRydWUpOw0KKwkJCVNlcnZpY2UuZ2V0SW5zdGFuY2UoKS5hZGRHYXRld2F5KGdhdGV3YXkpOw0KKwkJCVNlcnZpY2UuZ2V0SW5zdGFuY2UoKS5zdGFydFNlcnZpY2UoKTsNCisJCX0NCisJCXJldHVybiBnYXRld2F5LnF1ZXJ5QmFsYW5jZSgpID49IDE7IA0KKwl9DQorCQ0KKwlwdWJsaWMgYm9vbGVhbiBzZW5kU01TKFN0cmluZyBwaG9uZSwgU3RyaW5nIHN1YmosIGxvbmcgbGFuZ3VhZ2VfaWQpIHsNCisJCXRyeSB7DQorCQkJdGFza0V4ZWN1dG9yLmV4ZWN1dGUobmV3IFNNU1NlbmRlclRhc2socGhvbmUsIHN1YmosIGxhbmd1YWdlX2lkKSk7DQorCQkJcmV0dXJuIHRydWU7DQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsNCisJCQlsb2cuZXJyb3IoInNlbmRTTVMiLCBleCk7DQorCQkJcmV0dXJuIGZhbHNlOw0KKwkJfQ0KKwl9DQorCQ0KKwlwcm90ZWN0ZWQgY2xhc3MgU01TU2VuZGVyVGFzayBpbXBsZW1lbnRzIFJ1bm5hYmxlIHsNCisJCXByaXZhdGUgZmluYWwgU3RyaW5nIHBob25lOw0KKwkJcHJpdmF0ZSBmaW5hbCBTdHJpbmcgc3ViamVjdDsNCisJCXByaXZhdGUgbG9uZyBsYW5ndWFnZV9pZDsNCisNCisJCXB1YmxpYyBTTVNTZW5kZXJUYXNrKFN0cmluZyBwaG9uZSwgU3RyaW5nIHN1YmplY3QsIGxvbmcgbGFuZ3VhZ2VfaWQpIHsNCisJCQl0aGlzLnBob25lID0gcGhvbmU7DQorCQkJdGhpcy5zdWJqZWN0ID0gc3ViamVjdDsNCisJCQl0aGlzLmxhbmd1YWdlX2lkID0gbGFuZ3VhZ2VfaWQ7DQorCQl9DQorDQorCQlwdWJsaWMgdm9pZCBydW4oKSB7DQorCQkJdGhpcy5zZW5kKCk7DQorCQl9DQorDQorCQkvKioNCisJCSAqIFNlbmRpbmcgYW4gU01TIHdpdGggdGhlIGdpdmVuIHZhbHVlcy4NCisJCSAqIEByZXR1cm4gPGNvZGU+dHJ1ZTwvY29kZT4gaWYgc21zIHdhcyBzZW50IHN1Y2Nlc3NmdWxseSwgPGNvZGU+ZmFsc2U8L2NvZGU+IG90aGVyd2lzZS4NCisJCSAqLw0KKwkJcHVibGljIGJvb2xlYW4gc2VuZCgpIHsNCisJCQl0cnkgew0KKwkJCQlsb2cuZGVidWcoIlNNUyBzZW5kaW5nIHRvOiAiICsgcGhvbmUgKyAiLCBzdWJqZWN0IGlzOiAiICsgc3ViamVjdCk7DQorCQkJCWlmIChjaGVja0JhbGFuY2UoKSkgew0KKwkJCQkJT3V0Ym91bmRNZXNzYWdlIG1zZyA9IG5ldyBPdXRib3VuZE1lc3NhZ2UocGhvbmUsIHN1YmplY3QpOw0KKwkJCQkJaWYgKGxhbmd1YWdlX2lkICE9IDEpIHsNCisJCQkJCQltc2cuc2V0RW5jb2RpbmcoTWVzc2FnZUVuY29kaW5ncy5FTkNVQ1MyKTsNCisJCQkJCX0NCisJCQkJCXJldHVybiBTZXJ2aWNlLmdldEluc3RhbmNlKCkuc2VuZE1lc3NhZ2UobXNnKTsNCisJCQkJfSBlbHNlIHsNCisJCQkJCWxvZy5lcnJvcigiRXJyb3I6IGluc3VmZmljaWVudCBmdW5kcyBvbiBTTVMgcHJvdmlkZXIgYWNjb3VudCEiKTsNCisJCQkJCXJldHVybiBmYWxzZTsgDQorCQkJCX0NCisJCQl9IGNhdGNoIChFeGNlcHRpb24gZXgpIHsNCisJCQkJbG9nLmVycm9yKCJFcnJvciBzZW5kaW5nIHNtczogIiwgZXgpOw0KKwkJCQlyZXR1cm4gZmFsc2U7DQorCQkJfSANCisJCX0NCisJfQ0KK30NCmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdXRpbHMvc3RyaW5naGFuZGxlcnMvQ2hhdFN0cmluZy5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3V0aWxzL3N0cmluZ2hhbmRsZXJzL0NoYXRTdHJpbmcuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMmY0ODU5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3V0aWxzL3N0cmluZ2hhbmRsZXJzL0NoYXRTdHJpbmcuamF2YQpAQCAtMCwwICsxLDIzOCBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5zdHJpbmdoYW5kbGVyczsKKworaW1wb3J0IGphdmEudGV4dC5DaGFyYWN0ZXJJdGVyYXRvcjsKK2ltcG9ydCBqYXZhLnRleHQuU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3I7CitpbXBvcnQgamF2YS51dGlsLkl0ZXJhdG9yOworaW1wb3J0IGphdmEudXRpbC5MaW5rZWRMaXN0OworaW1wb3J0IGphdmEudXRpbC5yZWdleC5NYXRjaGVyOworaW1wb3J0IGphdmEudXRpbC5yZWdleC5QYXR0ZXJuOworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuT3Blbm1lZXRpbmdzVmFyaWFibGVzOworaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LnV0aWwuc3RyaW5nLlN0cmluZ3M7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworCitwdWJsaWMgY2xhc3MgQ2hhdFN0cmluZyB7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcigKKwkJCUNoYXRTdHJpbmcuY2xhc3MsIE9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKworCXByaXZhdGUgc3RhdGljIFN0cmluZyBodG1sVG9UZXh0KFN0cmluZyBzb3VyY2UpIHsKKwkJU3RyaW5nIHJlc3VsdCA9IHNvdXJjZTsKKwkJcmVzdWx0ID0gU3RyaW5ncy5yZXBsYWNlQWxsKHJlc3VsdCwgIjwiLCAiJmx0OyIpLnRvU3RyaW5nKCk7CisJCXJlc3VsdCA9IFN0cmluZ3MucmVwbGFjZUFsbChyZXN1bHQsICI+IiwgIiZndDsiKS50b1N0cmluZygpOworCQlyZXR1cm4gcmVzdWx0OworCX0KKwkKKwlwdWJsaWMgc3RhdGljIExpbmtlZExpc3Q8U3RyaW5nW10+IHBhcnNlQ2hhdFN0cmluZyhTdHJpbmcgbWVzc2FnZSwgTGlua2VkTGlzdDxMaW5rZWRMaXN0PFN0cmluZz4+IGVtb3RGaWxlcywgYm9vbGVhbiBhbGxvd0hUTUwpIHsKKwkJdHJ5IHsKKwkJCUxpbmtlZExpc3Q8U3RyaW5nW10+IGxpc3QgPSBuZXcgTGlua2VkTGlzdDxTdHJpbmdbXT4oKTsKKworCQkJLy8gbG9nLmRlYnVnKCJ0aGlzLmxpbmsobWVzc2FnZSkgIit0aGlzLmxpbmsobWVzc2FnZSkpOworCisJCQlpZiAoIWFsbG93SFRNTCkKKwkJCQltZXNzYWdlID0gaHRtbFRvVGV4dChtZXNzYWdlKTsKKwkJCQorCQkJU3RyaW5nW10gbWVzc2FnZVN0ciA9IHsgInRleHQiLCBtZXNzYWdlIH07CisJCQlsaXN0LmFkZChtZXNzYWdlU3RyKTsKKworCQkJZm9yIChMaW5rZWRMaXN0PFN0cmluZz4gZW1vdCA6IGVtb3RGaWxlcykgeworCQkJCS8vIGxvZy5lcnJvcigiQ0hFQ0sgRU1PVDogIisgZW1vdC5nZXQoMCkgKyBlbW90LmdldCgxKSArCisJCQkJLy8gZW1vdC5zaXplKCkpOworCQkJCWxpc3QgPSBzcGxpdFN0cihsaXN0LCBlbW90LmdldCgwKSwgZW1vdC5nZXQoMSksCisJCQkJCQllbW90LmdldChlbW90LnNpemUoKSAtIDIpKTsKKworCQkJCWlmIChlbW90LnNpemUoKSA+IDQpIHsKKwkJCQkJLy8gbG9nLmVycm9yKCJDSEVDSyBFTU9UIEFTSUFOOiAiKyBlbW90LmdldCgwKSArIGVtb3QuZ2V0KDIpCisJCQkJCS8vICsgZW1vdC5zaXplKCkpOworCQkJCQlsaXN0ID0gc3BsaXRTdHIobGlzdCwgZW1vdC5nZXQoMCksIGVtb3QuZ2V0KDIpLAorCQkJCQkJCWVtb3QuZ2V0KGVtb3Quc2l6ZSgpIC0gMikpOworCQkJCX0KKwkJCX0KKworCQkJLy8gbG9nLmRlYnVnKCIjIyMjIyMjIyMgICIpOworCQkJLy8gZm9yIChJdGVyYXRvcjxTdHJpbmdbXT4gaXRlciA9IGxpc3QuaXRlcmF0b3IoKTtpdGVyLmhhc05leHQoKTspeworCQkJLy8gU3RyaW5nW10gc3RyaW5nQXJyYXkgPSBpdGVyLm5leHQoKTsKKwkJCS8vIC8vc3RyaW5nQXJyYXlbMV0gPSB0aGlzLmxpbmsoc3RyaW5nQXJyYXlbMV0pOworCQkJLy8gbG9nLmRlYnVnKHN0cmluZ0FycmF5WzBdKyJ8fCIrc3RyaW5nQXJyYXlbMV0pOworCQkJLy8gfQorCisJCQlyZXR1cm4gbGlzdDsKKworCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltwYXJzZUNoYXRTdHJpbmddIiwgZXJyKTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwcml2YXRlIHN0YXRpYyBMaW5rZWRMaXN0PFN0cmluZ1tdPiBzcGxpdFN0cihMaW5rZWRMaXN0PFN0cmluZ1tdPiBsaXN0LAorCQkJU3RyaW5nIGltYWdlLCBTdHJpbmcgcmVnZXhwLCBTdHJpbmcgc3BhY2VzKSB7CisKKwkJTGlua2VkTGlzdDxTdHJpbmdbXT4gbmV3TGlzdCA9IG5ldyBMaW5rZWRMaXN0PFN0cmluZ1tdPigpOworCisJCWZvciAoSXRlcmF0b3I8U3RyaW5nW10+IGl0ZXIgPSBsaXN0Lml0ZXJhdG9yKCk7IGl0ZXIuaGFzTmV4dCgpOykgeworCisJCQlTdHJpbmdbXSBtZXNzYWdlT2JqID0gaXRlci5uZXh0KCk7CisJCQlTdHJpbmcgbWVzc2FnZVR5ZSA9IG1lc3NhZ2VPYmpbMF07CisKKwkJCWlmIChtZXNzYWdlVHllLmVxdWFscygidGV4dCIpKSB7CisJCQkJU3RyaW5nIG1lc3NhZ2VTdHIgPSBtZXNzYWdlT2JqWzFdOworCisJCQkJU3RyaW5nW10gbmV3U3RyID0gbWVzc2FnZVN0ci5zcGxpdChyZWdleHApOworCisJCQkJZm9yIChpbnQgayA9IDA7IGsgPCBuZXdTdHIubGVuZ3RoOyBrKyspIHsKKwkJCQkJU3RyaW5nW10gdGV4dEEgPSB7ICJ0ZXh0IiwgbmV3U3RyW2tdIH07CisJCQkJCW5ld0xpc3QuYWRkKHRleHRBKTsKKwkJCQkJaWYgKGsgKyAxICE9IG5ld1N0ci5sZW5ndGgpIHsKKwkJCQkJCVN0cmluZ1tdIGltYWdlQSA9IHsgImltYWdlIiwgaW1hZ2UsIHNwYWNlcywKKwkJCQkJCQkJcmVnZXhwLnJlcGxhY2UoIlxcIiwgIiIpIH07CisJCQkJCQluZXdMaXN0LmFkZChpbWFnZUEpOworCQkJCQl9CisJCQkJfQorCQkJfSBlbHNlIHsKKworCQkJCW5ld0xpc3QuYWRkKG1lc3NhZ2VPYmopOworCQkJfQorCisJCX0KKworCQlyZXR1cm4gbmV3TGlzdDsKKwl9CisKKwlwdWJsaWMgc3RhdGljIExpbmtlZExpc3Q8TGlua2VkTGlzdDxTdHJpbmc+PiByZXBsYWNlQWxsUmVnRXhwKExpbmtlZExpc3Q8TGlua2VkTGlzdDxTdHJpbmc+PiBlbW90RmlsZXMpIHsKKwkJTGlua2VkTGlzdDxMaW5rZWRMaXN0PFN0cmluZz4+IGVtb3RmaWxlc0xpc3ROZXcgPSBuZXcgTGlua2VkTGlzdDxMaW5rZWRMaXN0PFN0cmluZz4+KCk7CisJCXRyeSB7CisJCQlmb3IgKExpbmtlZExpc3Q8U3RyaW5nPiBlbW90IDogZW1vdEZpbGVzKSB7CisJCQkJLy8gbG9nLmVycm9yKCJGSUxFOiAiK2Vtb3QuZ2V0KDApKTsKKwkJCQlTdHJpbmcgd2VzdGVybk1lYW5pbmcgPSBjaGVja2ZvclJlZ2V4KGVtb3QuZ2V0KDEpKTsKKwkJCQllbW90LnNldCgxLCB3ZXN0ZXJuTWVhbmluZyk7CisJCQkJLy8gbG9nLmVycm9yKCJ3ZXN0ZXJuTWVhbmluZyAiK3dlc3Rlcm5NZWFuaW5nKTsKKwkJCQlpZiAoZW1vdC5zaXplKCkgPiAyKSB7CisJCQkJCVN0cmluZyBhc2lhbk1lYW5pbmcgPSBjaGVja2ZvclJlZ2V4KGVtb3QuZ2V0KDIpKTsKKwkJCQkJZW1vdC5zZXQoMiwgYXNpYW5NZWFuaW5nKTsKKwkJCQkJLy8gbG9nLmVycm9yKCJ3ZXN0ZXJuTWVhbmluZyAiK2FzaWFuTWVhbmluZyk7CisJCQkJfQorCQkJCWVtb3RmaWxlc0xpc3ROZXcuYWRkKGVtb3QpOworCQkJfQorCQl9IGNhdGNoIChFeGNlcHRpb24gZXJyKSB7CisJCQlsb2cuZXJyb3IoIltyZXBsYWNlQWxsUmVnRXhwXSIsIGVycik7CisJCX0KKwkJcmV0dXJuIGVtb3RmaWxlc0xpc3ROZXc7CisJfQorCisJLyoqCisJICogUmVwbGFjZSBjaGFyYWN0ZXJzIGhhdmluZyBzcGVjaWFsIG1lYW5pbmcgaW4gcmVndWxhciBleHByZXNzaW9ucworCSAqIAorCSAqLworCXByaXZhdGUgc3RhdGljIFN0cmluZyBjaGVja2ZvclJlZ2V4KFN0cmluZyBhUmVnZXhGcmFnbWVudCkgeworCQlmaW5hbCBTdHJpbmdCdWlsZGVyIHJlc3VsdCA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7CisKKwkJZmluYWwgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IgaXRlcmF0b3IgPSBuZXcgU3RyaW5nQ2hhcmFjdGVySXRlcmF0b3IoCisJCQkJYVJlZ2V4RnJhZ21lbnQpOworCQljaGFyIGNoYXJhY3RlciA9IGl0ZXJhdG9yLmN1cnJlbnQoKTsKKwkJd2hpbGUgKGNoYXJhY3RlciAhPSBDaGFyYWN0ZXJJdGVyYXRvci5ET05FKSB7CisJCQkvKgorCQkJICogQWxsIGxpdGVyYWxzIG5lZWQgdG8gaGF2ZSBiYWNrc2xhc2hlcyBkb3VibGVkLgorCQkJICovCisJCQlpZiAoY2hhcmFjdGVyID09ICcuJykgeworCQkJCXJlc3VsdC5hcHBlbmQoIlxcLiIpOworCQkJfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gJ1xcJykgeworCQkJCXJlc3VsdC5hcHBlbmQoIlxcXFwiKTsKKwkJCX0gZWxzZSBpZiAoY2hhcmFjdGVyID09ICc/JykgeworCQkJCXJlc3VsdC5hcHBlbmQoIlxcPyIpOworCQkJfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gJyonKSB7CisJCQkJcmVzdWx0LmFwcGVuZCgiXFwqIik7CisJCQl9IGVsc2UgaWYgKGNoYXJhY3RlciA9PSAnKycpIHsKKwkJCQlyZXN1bHQuYXBwZW5kKCJcXCsiKTsKKwkJCX0gZWxzZSBpZiAoY2hhcmFjdGVyID09ICcmJykgeworCQkJCXJlc3VsdC5hcHBlbmQoIlxcJiIpOworCQkJfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gJzonKSB7CisJCQkJcmVzdWx0LmFwcGVuZCgiXFw6Iik7CisJCQl9IGVsc2UgaWYgKGNoYXJhY3RlciA9PSAneycpIHsKKwkJCQlyZXN1bHQuYXBwZW5kKCJcXHsiKTsKKwkJCX0gZWxzZSBpZiAoY2hhcmFjdGVyID09ICd9JykgeworCQkJCXJlc3VsdC5hcHBlbmQoIlxcfSIpOworCQkJfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gJ1snKSB7CisJCQkJcmVzdWx0LmFwcGVuZCgiXFxbIik7CisJCQl9IGVsc2UgaWYgKGNoYXJhY3RlciA9PSAnXScpIHsKKwkJCQlyZXN1bHQuYXBwZW5kKCJcXF0iKTsKKwkJCX0gZWxzZSBpZiAoY2hhcmFjdGVyID09ICcoJykgeworCQkJCXJlc3VsdC5hcHBlbmQoIlxcKCIpOworCQkJfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gJyknKSB7CisJCQkJcmVzdWx0LmFwcGVuZCgiXFwpIik7CisJCQl9IGVsc2UgaWYgKGNoYXJhY3RlciA9PSAnXicpIHsKKwkJCQlyZXN1bHQuYXBwZW5kKCJcXF4iKTsKKwkJCX0gZWxzZSBpZiAoY2hhcmFjdGVyID09ICckJykgeworCQkJCXJlc3VsdC5hcHBlbmQoIlxcJCIpOworCQkJfSBlbHNlIGlmIChjaGFyYWN0ZXIgPT0gJ3wnKSB7CisJCQkJcmVzdWx0LmFwcGVuZCgiXFx8Iik7CisJCQl9IGVsc2UgeworCQkJCS8vIHRoZSBjaGFyIGlzIG5vdCBhIHNwZWNpYWwgb25lCisJCQkJLy8gYWRkIGl0IHRvIHRoZSByZXN1bHQgYXMgaXMKKwkJCQlyZXN1bHQuYXBwZW5kKGNoYXJhY3Rlcik7CisJCQl9CisJCQljaGFyYWN0ZXIgPSBpdGVyYXRvci5uZXh0KCk7CisJCX0KKwkJcmV0dXJuIHJlc3VsdC50b1N0cmluZygpOworCX0KKworCXB1YmxpYyBzdGF0aWMgU3RyaW5nIGxpbmsoU3RyaW5nIGlucHV0KSB7CisJCXRyeSB7CisKKwkJCVN0cmluZyB0UmV0dXJuID0gIiI7CisKKwkJCVN0cmluZyBwYXJ0c1tdID0gaW5wdXQuc3BsaXQoIiAiKTsKKworCQkJZm9yIChpbnQgdCA9IDA7IHQgPCBwYXJ0cy5sZW5ndGg7IHQrKykgeworCisJCQkJU3RyaW5nIHRleHQgPSBwYXJ0c1t0XTsKKworCQkJCS8vIFN5c3RlbS5vdXQucHJpbnRsbigiUGFydCAxICIrdGV4dCk7CisKKwkJCQlNYXRjaGVyIG1hdGNoZXIgPSBQYXR0ZXJuCisJCQkJCQkuY29tcGlsZSgKKwkJCQkJCQkJIihefFsgXHRcclxuXSkoKGZ0cHxodHRwfGh0dHBzfGdvcGhlcnxtYWlsdG98bmV3c3xubnRwfHRlbG5ldHx3YWlzfGZpbGV8cHJvc3Blcm98YWltfHdlYmNhbCk6KChbQS1aYS16MC05JF8uKyEqKCksOy8/OkAmfj0tXSl8JVtBLUZhLWYwLTldezJ9KXsyLH0oIyhbYS16QS1aMC05XVthLXpBLVowLTkkXy4rISooKSw7Lz86QCZ+PSUtXSopKT8oW0EtWmEtejAtOSRfKyEqKCk7Lz86fi1dKSkiKQorCQkJCQkJLm1hdGNoZXIodGV4dCk7CisKKwkJCQlpZiAobWF0Y2hlci5maW5kKCkpIHsKKwkJCQkJdGV4dCA9IG1hdGNoZXIKKwkJCQkJCQkucmVwbGFjZUZpcnN0KCI8dT48Rk9OVCBjb2xvcj1cIiMwMDAwQ0NcIj48YSBocmVmPSciCisJCQkJCQkJCQkrIHRleHQgKyAiJz4iICsgdGV4dCArICI8L2E+PC9GT05UPjwvdT4iKTsKKworCQkJCX0KKworCQkJCS8vIFN5c3RlbS5vdXQucHJpbnRsbigiUGFydCAyICIrdGV4dCk7CisKKwkJCQlpZiAodCAhPSAwKSB7CisJCQkJCXRSZXR1cm4gKz0gIiAiOworCQkJCX0KKworCQkJCXRSZXR1cm4gKz0gdGV4dDsKKworCQkJfQorCisJCQlyZXR1cm4gdFJldHVybjsKKworCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgeworCQkJbG9nLmVycm9yKCJbbGlua10iLCBlKTsKKwkJfQorCQlyZXR1cm4gIiI7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3V0aWxzL3N0cmluZ2hhbmRsZXJzL1N0cmluZ0NvbXBhcmVyLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MvdXRpbHMvc3RyaW5naGFuZGxlcnMvU3RyaW5nQ29tcGFyZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTlhMmZlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3V0aWxzL3N0cmluZ2hhbmRsZXJzL1N0cmluZ0NvbXBhcmVyLmphdmEKQEAgLTAsMCArMSw1MyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5zdHJpbmdoYW5kbGVyczsKKworcHVibGljIGNsYXNzIFN0cmluZ0NvbXBhcmVyIHsKKwkKKwlwcml2YXRlIHN0YXRpYyBTdHJpbmdDb21wYXJlciBpbnN0YW5jZSA9IG51bGw7CisJCisJcHJpdmF0ZSBTdHJpbmdDb21wYXJlcigpIHt9CisJCisJcHVibGljIHN0YXRpYyBzeW5jaHJvbml6ZWQgU3RyaW5nQ29tcGFyZXIgZ2V0SW5zdGFuY2UoKXsKKwkJaWYgKGluc3RhbmNlID09IG51bGwpeworCQkJaW5zdGFuY2UgPSBuZXcgU3RyaW5nQ29tcGFyZXIoKTsKKwkJfQorCQlyZXR1cm4gaW5zdGFuY2U7CisJfQorCQorCXB1YmxpYyBTdHJpbmcgY29tcGFyZUZvclJlYWxQYXRocyhTdHJpbmcgaW5wdXRTdHJpbmcpIHRocm93cyBFeGNlcHRpb257CisKKwkJU3RyaW5nIHQgPSAiIjsKKwkJZm9yIChpbnQgaT0wO2k8aW5wdXRTdHJpbmcubGVuZ3RoKCk7aSsrKXsKKwkJCWNoYXIgYyA9IGlucHV0U3RyaW5nLmNoYXJBdChpKTsKKwkJCWlmIChjb21wYXJlQ2hhcnMoYykpIHsKKwkJCQl0ICs9IGM7CisJCQl9IGVsc2UgeworCQkJCXQgKz0gIl8iOworCQkJfQorCQkJCisJCX0JCQorCQlyZXR1cm4gdDsKKwl9CisJCisJcHJpdmF0ZSBib29sZWFuIGNvbXBhcmVDaGFycyhjaGFyIGlucHV0Q2hhcil7CQkKKwkJcmV0dXJuIENoYXJhY3Rlci5pc0xldHRlck9yRGlnaXQoaW5wdXRDaGFyKTsKKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvYXBwL0FwcGxpY2F0aW9uLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2FwcC9BcHBsaWNhdGlvbi5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwZjEyMmIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2FwcC9BcHBsaWNhdGlvbi5qYXZhCkBAIC0wLDAgKzEsMTA5IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5hcHA7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5yZW1vdGUucmVkNS5TY29wZUFwcGxpY2F0aW9uQWRhcHRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIucGFnZXMuTWFpblBhZ2U7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLnBhZ2VzLmF1dGguU2lnbkluUGFnZTsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5QYWdlOworaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LmF1dGhyb2xlcy5hdXRoZW50aWNhdGlvbi5BYnN0cmFjdEF1dGhlbnRpY2F0ZWRXZWJTZXNzaW9uOworaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LmF1dGhyb2xlcy5hdXRoZW50aWNhdGlvbi5BdXRoZW50aWNhdGVkV2ViQXBwbGljYXRpb247CitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQuY29yZS5yZXF1ZXN0LmhhbmRsZXIuTGlzdGVuZXJJbnRlcmZhY2VSZXF1ZXN0SGFuZGxlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5jb3JlLnJlcXVlc3QubWFwcGVyLkhvbWVQYWdlTWFwcGVyOworaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5NYXJrdXBGYWN0b3J5OworaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5NYXJrdXBQYXJzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLk1hcmt1cFJlc291cmNlU3RyZWFtOworaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5odG1sLldlYlBhZ2U7CitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQucHJvdG9jb2wuaHR0cC5XZWJBcHBsaWNhdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5yZXF1ZXN0LklSZXF1ZXN0SGFuZGxlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5yZXF1ZXN0LlVybDsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5yZXF1ZXN0Lm1hcHBlci5pbmZvLlBhZ2VDb21wb25lbnRJbmZvOworaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LnNldHRpbmdzLklQYWdlU2V0dGluZ3M7CitpbXBvcnQgb3JnLnNwcmluZ2ZyYW1ld29yay5jb250ZXh0LkFwcGxpY2F0aW9uQ29udGV4dDsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLndlYi5jb250ZXh0LnN1cHBvcnQuV2ViQXBwbGljYXRpb25Db250ZXh0VXRpbHM7CisKK3B1YmxpYyBjbGFzcyBBcHBsaWNhdGlvbiBleHRlbmRzIEF1dGhlbnRpY2F0ZWRXZWJBcHBsaWNhdGlvbiB7CisJCisJQE92ZXJyaWRlCisJcHJvdGVjdGVkIHZvaWQgaW5pdCgpIHsKKwkJSVBhZ2VTZXR0aW5ncyBwYWdlU2V0dGluZ3MgPSBnZXRQYWdlU2V0dGluZ3MoKTsKKwkJcGFnZVNldHRpbmdzLmFkZENvbXBvbmVudFJlc29sdmVyKG5ldyBNZXNzYWdlUmVzb2x2ZXIoKSk7CisJCXBhZ2VTZXR0aW5ncy5hZGRDb21wb25lbnRSZXNvbHZlcihuZXcgTWVzc2FnZVRhZ0hhbmRsZXIoKSk7CisJCWdldE1hcmt1cFNldHRpbmdzKCkuc2V0TWFya3VwRmFjdG9yeShuZXcgTWFya3VwRmFjdG9yeSgpeworCQkJQE92ZXJyaWRlCisJCQlwdWJsaWMgTWFya3VwUGFyc2VyIG5ld01hcmt1cFBhcnNlcihNYXJrdXBSZXNvdXJjZVN0cmVhbSByZXNvdXJjZSkgeworCQkJCU1hcmt1cFBhcnNlciBtcCA9IHN1cGVyLm5ld01hcmt1cFBhcnNlcihyZXNvdXJjZSk7CisJCQkJbXAuYWRkKG5ldyBNZXNzYWdlVGFnSGFuZGxlcigpKTsKKwkJCQlyZXR1cm4gbXA7CisJCQl9CisJCX0pOworCQkKKwkJLy9BZGQgY3VzdG9tIHJlc291cmNlIGxvYWRlciBhdCB0aGUgYmVnaW5uaW5nLCBzbyBpdCB3aWxsIGJlIGNoZWNrZWQgZmlyc3QgaW4gdGhlIAorCQkvL2NoYWluIG9mIFJlc291cmNlIExvYWRlcnMsIGlmIG5vdCBmb3VuZCBpdCB3aWxsIHNlYXJjaCBpbiBXaWNrZXQncyBpbnRlcm5hbCAKKwkJLy9SZXNvdXJjZSBMb2FkZXIgZm9yIGEgdGhlIHByb3BlcnR5IGtleQorCQlnZXRSZXNvdXJjZVNldHRpbmdzKCkuZ2V0U3RyaW5nUmVzb3VyY2VMb2FkZXJzKCkuYWRkKDAsIG5ldyBMYWJlbFJlc291cmNlTG9hZGVyKCkpOworCQkKKwkJc3VwZXIuaW5pdCgpOworCQkKKwkJbW91bnRQYWdlKCJzaWduaW4iLCBnZXRTaWduSW5QYWdlQ2xhc3MoKSk7CisKKwkJZ2V0Um9vdFJlcXVlc3RNYXBwZXJBc0NvbXBvdW5kKCkuYWRkKG5ldyBIb21lUGFnZU1hcHBlcihnZXRIb21lUGFnZSgpKSB7CisJCQlAT3ZlcnJpZGUKKwkJCXByb3RlY3RlZCB2b2lkIGVuY29kZVBhZ2VDb21wb25lbnRJbmZvKFVybCB1cmwsIFBhZ2VDb21wb25lbnRJbmZvIGluZm8pIHsKKwkJCQkvL0RvZXMgbm90aGluZworCQkJfQorCQkJCisJCQlAT3ZlcnJpZGUKKwkJCXB1YmxpYyBVcmwgbWFwSGFuZGxlcihJUmVxdWVzdEhhbmRsZXIgcmVxdWVzdEhhbmRsZXIpIHsKKwkJCQlpZiAocmVxdWVzdEhhbmRsZXIgaW5zdGFuY2VvZiBMaXN0ZW5lckludGVyZmFjZVJlcXVlc3RIYW5kbGVyKSB7CisJCQkJCXJldHVybiBudWxsOworCQkJCX0gZWxzZSB7CisJCQkJCXJldHVybiBzdXBlci5tYXBIYW5kbGVyKHJlcXVlc3RIYW5kbGVyKTsKKwkJCQl9CisJCQl9CisJCX0pOworCX0KKwkKKwlAT3ZlcnJpZGUKKwlwdWJsaWMgQ2xhc3M8PyBleHRlbmRzIFBhZ2U+IGdldEhvbWVQYWdlKCkgeworCQlyZXR1cm4gTWFpblBhZ2UuY2xhc3M7CisJfQorCisJQE92ZXJyaWRlCisJcHJvdGVjdGVkIENsYXNzPD8gZXh0ZW5kcyBBYnN0cmFjdEF1dGhlbnRpY2F0ZWRXZWJTZXNzaW9uPiBnZXRXZWJTZXNzaW9uQ2xhc3MoKSB7CisJCXJldHVybiBXZWJTZXNzaW9uLmNsYXNzOworCX0KKworCUBPdmVycmlkZQorCXB1YmxpYyBDbGFzczw/IGV4dGVuZHMgV2ViUGFnZT4gZ2V0U2lnbkluUGFnZUNsYXNzKCkgeworCQlyZXR1cm4gU2lnbkluUGFnZS5jbGFzczsKKwl9CisJCisJcHVibGljIHN0YXRpYyBBcHBsaWNhdGlvbiBnZXQoKSB7CisJCXJldHVybiAoQXBwbGljYXRpb24pIFdlYkFwcGxpY2F0aW9uLmdldCgpOworCX0KKwkKKwlwdWJsaWMgc3RhdGljIDxUPiBUIGdldEJlYW4oQ2xhc3M8VD4gY2xhenopIHsKKwkJaWYgKFNjb3BlQXBwbGljYXRpb25BZGFwdGVyLmluaXRDb21wbGV0ZSkgeworCQkJQXBwbGljYXRpb25Db250ZXh0IGNvbnRleHQgPSBXZWJBcHBsaWNhdGlvbkNvbnRleHRVdGlscy5nZXRXZWJBcHBsaWNhdGlvbkNvbnRleHQoZ2V0KCkuZ2V0U2VydmxldENvbnRleHQoKSk7CisJCQlyZXR1cm4gY29udGV4dC5nZXRCZWFuKGNsYXp6KTsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2FwcC9MYWJlbFJlc291cmNlTG9hZGVyLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2FwcC9MYWJlbFJlc291cmNlTG9hZGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ0ZDNiMQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvYXBwL0xhYmVsUmVzb3VyY2VMb2FkZXIuamF2YQpAQCAtMCwwICsxLDYyIEBACisvKg0KKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgKiB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5hcHA7DQorDQoraW1wb3J0IGphdmEudXRpbC5IYXNoTWFwOw0KK2ltcG9ydCBqYXZhLnV0aWwuTG9jYWxlOw0KK2ltcG9ydCBqYXZhLnV0aWwuTWFwOw0KKw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5Db21wb25lbnQ7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LnJlc291cmNlLmxvYWRlci5JU3RyaW5nUmVzb3VyY2VMb2FkZXI7DQorDQorLyoqDQorICogTWFwIHByb3BlcnR5IHZhbHVlcyB0byBPcGVuTWVldGluZ3MgbGFiZWxpZCdzIGFuZCBnZXQgdGhlIHN0cmluZw0KKyAqIA0KKyAqIEBhdXRob3Igc3dhZ25lcg0KKyAqDQorICovDQorcHVibGljIGNsYXNzIExhYmVsUmVzb3VyY2VMb2FkZXIgaW1wbGVtZW50cyBJU3RyaW5nUmVzb3VyY2VMb2FkZXIgew0KKwkNCisJcHJpdmF0ZSBzdGF0aWMgTWFwPFN0cmluZyxMb25nPiBTVFJJTkdfTEFCRUxfTUFQUElORyA9IG5ldyBIYXNoTWFwPFN0cmluZyxMb25nPigpOw0KKwkNCisJc3RhdGljIHsNCisJCVNUUklOR19MQUJFTF9NQVBQSU5HLnB1dCgiUGFnaW5nTmF2aWdhdG9yLmZpcnN0IiwgMzY4TCk7DQorCQlTVFJJTkdfTEFCRUxfTUFQUElORy5wdXQoIlBhZ2luZ05hdmlnYXRvci5wcmV2aW91cyIsIDM2OUwpOw0KKwkJU1RSSU5HX0xBQkVMX01BUFBJTkcucHV0KCJQYWdpbmdOYXZpZ2F0b3IubmV4dCIsIDM3MEwpOw0KKwkJU1RSSU5HX0xBQkVMX01BUFBJTkcucHV0KCJQYWdpbmdOYXZpZ2F0b3IubGFzdCIsIDM3MUwpOw0KKwl9DQorDQorCXB1YmxpYyBTdHJpbmcgbG9hZFN0cmluZ1Jlc291cmNlKENsYXNzPD8+IGNsYXp6LCBTdHJpbmcga2V5LCBMb2NhbGUgbG9jYWxlLA0KKwkJCVN0cmluZyBzdHlsZSwgU3RyaW5nIHZhcmlhdGlvbikgew0KKwkJcmV0dXJuIGdldFN0cmluZ0J5UHJvcGVydHlLZXkoa2V5KTsNCisJfQ0KKw0KKwlwdWJsaWMgU3RyaW5nIGxvYWRTdHJpbmdSZXNvdXJjZShDb21wb25lbnQgY29tcG9uZW50LCBTdHJpbmcga2V5LA0KKwkJCUxvY2FsZSBsb2NhbGUsIFN0cmluZyBzdHlsZSwgU3RyaW5nIHZhcmlhdGlvbikgew0KKwkJcmV0dXJuIGdldFN0cmluZ0J5UHJvcGVydHlLZXkoa2V5KTsNCisJfQ0KKwkNCisJcHJpdmF0ZSBTdHJpbmcgZ2V0U3RyaW5nQnlQcm9wZXJ0eUtleShTdHJpbmcga2V5KSB7DQorCQlMb25nIGxhYmVsSWQgPSBTVFJJTkdfTEFCRUxfTUFQUElORy5nZXQoa2V5KTsNCisJCWlmIChsYWJlbElkID09IG51bGwpIA0KKwkJCXJldHVybiBudWxsOw0KKwkJcmV0dXJuIFdlYlNlc3Npb24uZ2V0U3RyaW5nKGxhYmVsSWQpOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvYXBwL01lc3NhZ2VSZXNvbHZlci5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9hcHAvTWVzc2FnZVJlc29sdmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODMxNjk5OAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvYXBwL01lc3NhZ2VSZXNvbHZlci5qYXZhCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmFwcDsKKworaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LkNvbXBvbmVudDsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5NYXJrdXBDb250YWluZXI7CitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLkNvbXBvbmVudFRhZzsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuTWFya3VwU3RyZWFtOworaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5XaWNrZXRUYWc7CitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuYmFzaWMuTGFiZWw7CitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLnBhcnNlci5maWx0ZXIuV2lja2V0VGFnSWRlbnRpZmllcjsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAucmVzb2x2ZXIuV2lja2V0TWVzc2FnZVJlc29sdmVyOworCitwdWJsaWMgY2xhc3MgTWVzc2FnZVJlc29sdmVyIGV4dGVuZHMgV2lja2V0TWVzc2FnZVJlc29sdmVyIHsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAtNTc1NTI1OTY2OTM4MzgyNjk4OEw7CisJcHJpdmF0ZSBmaW5hbCBzdGF0aWMgU3RyaW5nIFRBR19OQU1FID0gIm9tbWVzc2FnZSI7CisJCisJc3RhdGljCXsKKwkJLy8gcmVnaXN0ZXIgIndpY2tldDpvbW1lc3NhZ2UiCisJCVdpY2tldFRhZ0lkZW50aWZpZXIucmVnaXN0ZXJXZWxsS25vd25UYWdOYW1lKFRBR19OQU1FKTsKKwl9CisJCisJQE92ZXJyaWRlCisJcHVibGljIENvbXBvbmVudCByZXNvbHZlKE1hcmt1cENvbnRhaW5lciBjb250YWluZXIsIE1hcmt1cFN0cmVhbSBtYXJrdXBTdHJlYW0sIENvbXBvbmVudFRhZyB0YWcpIHsKKwkJaWYgKHRhZyBpbnN0YW5jZW9mIFdpY2tldFRhZykgeworCQkJV2lja2V0VGFnIHd0YWcgPSAoV2lja2V0VGFnKXRhZzsKKwkJCWlmIChUQUdfTkFNRS5lcXVhbHMod3RhZy5nZXROYW1lKCkpKSB7CisJCQkJTG9uZyBtZXNzYWdlS2V5ID0gd3RhZy5nZXRBdHRyaWJ1dGVzKCkuZ2V0QXNMb25nKCJrZXkiKTsKKwkJCQlpZiAobWVzc2FnZUtleSAhPSBudWxsKSB7CisJCQkJCWZpbmFsIFN0cmluZyBpZCA9ICJfbWVzc2FnZV8iICsgY29udGFpbmVyLmdldFBhZ2UoKS5nZXRBdXRvSW5kZXgoKTsKKwkJCQkJTGFiZWwgbGFiZWwgPSBuZXcgTGFiZWwoaWQsIFdlYlNlc3Npb24uZ2V0U3RyaW5nKG1lc3NhZ2VLZXkpKTsKKwkJCQkJbGFiZWwuc2V0UmVuZGVyQm9keU9ubHkoY29udGFpbmVyLmdldEFwcGxpY2F0aW9uKCkKKwkJCQkJCS5nZXRNYXJrdXBTZXR0aW5ncygpCisJCQkJCQkuZ2V0U3RyaXBXaWNrZXRUYWdzKCkpOworCisJCQkJCXJldHVybiBsYWJlbDsKKwkJCQl9CisJCQl9CisJCX0KKwkJcmV0dXJuIHN1cGVyLnJlc29sdmUoY29udGFpbmVyLCBtYXJrdXBTdHJlYW0sIHRhZyk7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9hcHAvTWVzc2FnZVRhZ0hhbmRsZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvYXBwL01lc3NhZ2VUYWdIYW5kbGVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzg5MGExNAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvYXBwL01lc3NhZ2VUYWdIYW5kbGVyLmphdmEKQEAgLTAsMCArMSwxNjEgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmFwcDsKKworaW1wb3J0IGphdmEudGV4dC5QYXJzZUV4Y2VwdGlvbjsKKworaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LkNvbXBvbmVudDsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5NYXJrdXBDb250YWluZXI7CitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQuV2lja2V0UnVudGltZUV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5iZWhhdmlvci5CZWhhdmlvcjsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuQ29tcG9uZW50VGFnOworaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5NYXJrdXBFbGVtZW50OworaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5NYXJrdXBSZXNvdXJjZVN0cmVhbTsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuTWFya3VwU3RyZWFtOworaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5odG1sLlRyYW5zcGFyZW50V2ViTWFya3VwQ29udGFpbmVyOworaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5odG1sLldlYkNvbXBvbmVudDsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAucGFyc2VyLkFic3RyYWN0TWFya3VwRmlsdGVyOworaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5wYXJzZXIuZmlsdGVyLldpY2tldE1lc3NhZ2VUYWdIYW5kbGVyOworaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5yZXNvbHZlci5JQ29tcG9uZW50UmVzb2x2ZXI7CitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQudXRpbC5zdHJpbmcuU3RyaW5nczsKKworcHVibGljIGNsYXNzIE1lc3NhZ2VUYWdIYW5kbGVyIGV4dGVuZHMgQWJzdHJhY3RNYXJrdXBGaWx0ZXIgaW1wbGVtZW50cworCQlJQ29tcG9uZW50UmVzb2x2ZXIgeworCS8qKiAqLworCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDFMOworCisJLyoqCisJICogVGhlIGlkIGF1dG9tYXRpY2FsbHkgYXNzaWduZWQgdG8gdGFncyB3aXRoIHdpY2tldDptZXNzYWdlIGF0dHJpYnV0ZSBidXQKKwkgKiB3aXRob3V0IGlkCisJICovCisJcHVibGljIGZpbmFsIHN0YXRpYyBTdHJpbmcgV0lDS0VUX01FU1NBR0VfQ09OVEFJTkVSX0lEID0gIl9tZXNzYWdlX2F0dHJfIjsKKworCS8qKgorCSAqIENvbnN0cnVjdG9yIGZvciB0aGUgSUNvbXBvbmVudFJlc29sdmVyIHJvbGUuCisJICovCisJcHVibGljIE1lc3NhZ2VUYWdIYW5kbGVyKCkgeworCQl0aGlzKG51bGwpOworCX0KKworCS8qKgorCSAqIENvbnN0cnVjdG9yIGZvciB0aGUgSU1hcmt1cEZpbHRlciByb2xlLgorCSAqLworCXB1YmxpYyBNZXNzYWdlVGFnSGFuZGxlcihmaW5hbCBNYXJrdXBSZXNvdXJjZVN0cmVhbSBtYXJrdXBSZXNvdXJjZVN0cmVhbSkgeworCQlzdXBlcihtYXJrdXBSZXNvdXJjZVN0cmVhbSk7CisJfQorCisJQE92ZXJyaWRlCisJcHJvdGVjdGVkIGZpbmFsIE1hcmt1cEVsZW1lbnQgb25Db21wb25lbnRUYWcoQ29tcG9uZW50VGFnIHRhZykKKwkJCXRocm93cyBQYXJzZUV4Y2VwdGlvbiB7CisJCWlmICh0YWcuaXNDbG9zZSgpKSB7CisJCQlyZXR1cm4gdGFnOworCQl9CisKKwkJZmluYWwgU3RyaW5nIHdpY2tldE1lc3NhZ2VBdHRyaWJ1dGUgPSB0YWcuZ2V0QXR0cmlidXRlcygpLmdldFN0cmluZygKKwkJCQlnZXRXaWNrZXRNZXNzYWdlQXR0ck5hbWUoKSk7CisKKwkJaWYgKFN0cmluZ3MuaXNFbXB0eSh3aWNrZXRNZXNzYWdlQXR0cmlidXRlKSA9PSBmYWxzZSkgeworCQkJLy8gY2hlY2sgaWYgdGhpcyB0YWcgaXMgcmF3IG1hcmt1cAorCQkJaWYgKHRhZy5nZXRJZCgpID09IG51bGwpIHsKKwkJCQkvLyBpZiB0aGlzIGlzIGEgcmF3IHRhZyB3ZSBuZWVkIHRvIHNldCB0aGUgaWQgdG8gc29tZXRoaW5nIHNvCisJCQkJLy8gdGhhdCB3aWNrZXQgd2lsbCBub3QgbWVyZ2UgdGhpcyBhcyByYXcgbWFya3VwIGFuZCBpbnN0ZWFkCisJCQkJLy8gcGFzcyBpdCBvbiB0byBhIHJlc29sdmVyCisJCQkJdGFnLnNldElkKGdldFdpY2tldE1lc3NhZ2VJZFByZWZpeCgpKTsKKwkJCQl0YWcuc2V0QXV0b0NvbXBvbmVudFRhZyh0cnVlKTsKKwkJCQl0YWcuc2V0TW9kaWZpZWQodHJ1ZSk7CisJCQl9CisJCQl0YWcuYWRkQmVoYXZpb3IobmV3IEF0dHJpYnV0ZUxvY2FsaXplcihnZXRXaWNrZXRNZXNzYWdlQXR0ck5hbWUoKSkpOworCQl9CisKKwkJcmV0dXJuIHRhZzsKKwl9CisKKwkvKioKKwkgKiBBdHRyaWJ1dGUgbG9jYWxpemluZyBiZWhhdmlvci4gU2VlIHRoZSBqYXZhZG9jIG9mCisJICoge0BsaW5rIFdpY2tldE1lc3NhZ2VUYWdIYW5kbGVyfSBmb3IgZGV0YWlscy4KKwkgKiAKKwkgKiBAYXV0aG9yIElnb3IgVmF5bmJlcmcgKGl2YXluYmVyZykKKwkgKi8KKwlwdWJsaWMgc3RhdGljIGNsYXNzIEF0dHJpYnV0ZUxvY2FsaXplciBleHRlbmRzIEJlaGF2aW9yIHsKKwkJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMUw7CisKKwkJcHJpdmF0ZSBmaW5hbCBTdHJpbmcgd2lja2V0TWVzc2FnZUF0dHJOYW1lOworCisJCXB1YmxpYyBBdHRyaWJ1dGVMb2NhbGl6ZXIoU3RyaW5nIHdpY2tldE1lc3NhZ2VBdHRyTmFtZSkgeworCQkJdGhpcy53aWNrZXRNZXNzYWdlQXR0ck5hbWUgPSB3aWNrZXRNZXNzYWdlQXR0ck5hbWU7CisJCX0KKworCQlAT3ZlcnJpZGUKKwkJcHVibGljIHZvaWQgb25Db21wb25lbnRUYWcoZmluYWwgQ29tcG9uZW50IGNvbXBvbmVudCwKKwkJCQlmaW5hbCBDb21wb25lbnRUYWcgdGFnKSB7CisJCQlTdHJpbmcgZXhwciA9IHRhZy5nZXRBdHRyaWJ1dGVzKCkuZ2V0U3RyaW5nKHdpY2tldE1lc3NhZ2VBdHRyTmFtZSk7CisJCQlpZiAoIVN0cmluZ3MuaXNFbXB0eShleHByKSkgeworCQkJCWV4cHIgPSBleHByLnRyaW0oKTsKKworCQkJCVN0cmluZ1tdIGF0dHJzQW5kS2V5cyA9IFN0cmluZ3Muc3BsaXQoZXhwciwgJywnKTsKKworCQkJCWZvciAoU3RyaW5nIGF0dHJBbmRLZXkgOiBhdHRyc0FuZEtleXMpIHsKKwkJCQkJaW50IGNvbG9uID0gYXR0ckFuZEtleS5sYXN0SW5kZXhPZigiOiIpOworCQkJCQkvLyBtYWtlIHN1cmUgdGhlIGF0dHJpYnV0ZS1rZXkgcGFpciBpcyB2YWxpZAorCQkJCQlpZiAoYXR0ckFuZEtleS5sZW5ndGgoKSA8IDMgfHwgY29sb24gPCAxCisJCQkJCQkJfHwgY29sb24gPiBhdHRyQW5kS2V5Lmxlbmd0aCgpIC0gMikgeworCQkJCQkJdGhyb3cgbmV3IFdpY2tldFJ1bnRpbWVFeGNlcHRpb24oCisJCQkJCQkJCSJ3aWNrZXQ6bWVzc2FnZSBhdHRyaWJ1dGUgY29udGFpbnMgYW4gaW52YWxpZCB2YWx1ZSBbWyIKKwkJCQkJCQkJCQkrIGV4cHIKKwkJCQkJCQkJCQkrICJdXSwgbXVzdCBiZSBvZiBmb3JtIChhdHRyOmtleSkrIik7CisJCQkJCX0KKworCQkJCQlTdHJpbmcgYXR0ciA9IGF0dHJBbmRLZXkuc3Vic3RyaW5nKDAsIGNvbG9uKTsKKwkJCQkJU3RyaW5nIGtleSA9IGF0dHJBbmRLZXkuc3Vic3RyaW5nKGNvbG9uICsgMSk7CisJCQkJCWZpbmFsIFN0cmluZyB2YWx1ZSA9IFdlYlNlc3Npb24uZ2V0U3RyaW5nKExvbmcucGFyc2VMb25nKGtleSkpOworCQkJCQl0YWcucHV0KGF0dHIsIHZhbHVlKTsKKwkJCQl9CisJCQl9CisJCX0KKwl9CisKKwlwdWJsaWMgQ29tcG9uZW50IHJlc29sdmUoZmluYWwgTWFya3VwQ29udGFpbmVyIGNvbnRhaW5lciwgZmluYWwgTWFya3VwU3RyZWFtIG1hcmt1cFN0cmVhbSwKKwkJCWZpbmFsIENvbXBvbmVudFRhZyB0YWcpIHsKKwkJLy8gbG9jYWxpemUgYW55IHJhdyBtYXJrdXAgdGhhdCBoYXMgd2lja2V0Om1lc3NhZ2UgYXR0cnMKKwkJaWYgKCh0YWcgIT0gbnVsbCkKKwkJCQkmJiAodGFnLmdldElkKCkuc3RhcnRzV2l0aChnZXRXaWNrZXRNZXNzYWdlSWRQcmVmaXgoKSkpKSB7CisJCQlDb21wb25lbnQgd2M7CisJCQlpbnQgYXV0b0luZGV4ID0gY29udGFpbmVyLmdldFBhZ2UoKS5nZXRBdXRvSW5kZXgoKTsKKwkJCVN0cmluZyBpZCA9IGdldFdpY2tldE1lc3NhZ2VJZFByZWZpeCgpICsgYXV0b0luZGV4OworCisJCQlpZiAodGFnLmlzT3BlbkNsb3NlKCkpIHsKKwkJCQl3YyA9IG5ldyBXZWJDb21wb25lbnQoaWQpOworCQkJfSBlbHNlIHsKKwkJCQl3YyA9IG5ldyBUcmFuc3BhcmVudFdlYk1hcmt1cENvbnRhaW5lcihpZCk7CisJCQl9CisKKwkJCXJldHVybiB3YzsKKwkJfQorCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwcml2YXRlIFN0cmluZyBnZXRXaWNrZXRNZXNzYWdlQXR0ck5hbWUoKSB7CisJCVN0cmluZyB3aWNrZXROYW1lc3BhY2UgPSBnZXRXaWNrZXROYW1lc3BhY2UoKTsKKwkJcmV0dXJuIHdpY2tldE5hbWVzcGFjZSArICc6JyArICJvbW1lc3NhZ2UiOworCX0KKworCXByaXZhdGUgU3RyaW5nIGdldFdpY2tldE1lc3NhZ2VJZFByZWZpeCgpIHsKKwkJcmV0dXJuIGdldFdpY2tldE5hbWVzcGFjZSgpICsgV0lDS0VUX01FU1NBR0VfQ09OVEFJTkVSX0lEOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvYXBwL1dlYlNlc3Npb24uamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvYXBwL1dlYlNlc3Npb24uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzcxNGI0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9hcHAvV2ViU2Vzc2lvbi5qYXZhCkBAIC0wLDAgKzEsMTUxIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5hcHA7CisKK2ltcG9ydCBqYXZhLnRleHQuRGF0ZUZvcm1hdDsKK2ltcG9ydCBqYXZhLnRleHQuU2ltcGxlRGF0ZUZvcm1hdDsKK2ltcG9ydCBqYXZhLnV0aWwuQ2FsZW5kYXI7CitpbXBvcnQgamF2YS51dGlsLlRpbWVab25lOworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5BdXRoTGV2ZWxVdGlsOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuRmllbGRMYW5ndWFnZURhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLkZpZWxkTWFuYWdlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLlNlc3Npb25kYXRhRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuZGFvLkNvbmZpZ3VyYXRpb25EYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLlVzZXJNYW5hZ2VyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEudXNlci5kYW8uVXNlcnNEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuU2Vzc2lvbmRhdGE7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMubGFuZy5GaWVsZExhbmd1YWdlOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuVXNlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5hdXRocm9sZXMuYXV0aGVudGljYXRpb24uQWJzdHJhY3RBdXRoZW50aWNhdGVkV2ViU2Vzc2lvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5hdXRocm9sZXMuYXV0aG9yaXphdGlvbi5zdHJhdGVnaWVzLnJvbGUuUm9sZXM7CitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQucmVxdWVzdC5SZXF1ZXN0OworCitwdWJsaWMgY2xhc3MgV2ViU2Vzc2lvbiBleHRlbmRzIEFic3RyYWN0QXV0aGVudGljYXRlZFdlYlNlc3Npb24geworCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDExMjMzOTMyMzY0NTkwOTUzMTVMOworCXByaXZhdGUgbG9uZyB1c2VySWQgPSAtMTsKKwlwcml2YXRlIGxvbmcgdXNlckxldmVsID0gLTE7CisJcHJpdmF0ZSBTdHJpbmcgU0lEID0gbnVsbDsKKwlwcml2YXRlIFN0cmluZyBhcmVhID0gbnVsbDsKKwlwcml2YXRlIFRpbWVab25lIHR6OworCXByaXZhdGUgU2ltcGxlRGF0ZUZvcm1hdCBJU084NjAxRk9STUFUID0gbmV3IFNpbXBsZURhdGVGb3JtYXQoInl5eXktTU0tZGQnVCdISDptbTpzc1oiKTsKKwkKKwlwdWJsaWMgV2ViU2Vzc2lvbihSZXF1ZXN0IHJlcXVlc3QpIHsKKwkJc3VwZXIocmVxdWVzdCk7CisJfQorCisJQE92ZXJyaWRlCisJcHVibGljIHZvaWQgaW52YWxpZGF0ZSgpIHsKKwkJc3VwZXIuaW52YWxpZGF0ZSgpOworCQl1c2VySWQgPSAtMTsKKwkJdXNlckxldmVsID0gLTE7CisJCVNJRCA9IG51bGw7CisJfQorCQorCUBPdmVycmlkZQorCXB1YmxpYyBSb2xlcyBnZXRSb2xlcygpIHsKKwkJUm9sZXMgciA9IG51bGw7CisJCWlmIChpc1NpZ25lZEluKCkpIHsKKwkJCXVzZXJMZXZlbCA9IEFwcGxpY2F0aW9uLmdldEJlYW4oVXNlck1hbmFnZXIuY2xhc3MpLmdldFVzZXJMZXZlbEJ5SUQodXNlcklkKTsKKwkJCUF1dGhMZXZlbFV0aWwgYXV0aExldmVsID0gQXBwbGljYXRpb24uZ2V0QmVhbihBdXRoTGV2ZWxVdGlsLmNsYXNzKTsKKwkJCXIgPSBuZXcgUm9sZXMoUm9sZXMuVVNFUik7CisJCQlpZiAoYXV0aExldmVsLmNoZWNrVXNlckxldmVsKHVzZXJMZXZlbCkpIHsKKwkJCQlyLmFkZChSb2xlcy5VU0VSKTsKKwkJCX0KKwkJCWlmIChhdXRoTGV2ZWwuY2hlY2tBZG1pbkxldmVsKHVzZXJMZXZlbCkpIHsKKwkJCQlyLmFkZChSb2xlcy5BRE1JTik7CisJCQl9CisJCX0KKwkJcmV0dXJuIHI7CisJfQorCisJQE92ZXJyaWRlCisJcHVibGljIGJvb2xlYW4gaXNTaWduZWRJbigpIHsKKwkJcmV0dXJuICh1c2VySWQgPiAtMSk7CisJfQorCisJcHVibGljIGJvb2xlYW4gc2lnbkluKFN0cmluZyBsb2dpbiwgU3RyaW5nIHBhc3N3b3JkKSB7CisJCVNlc3Npb25kYXRhIHNlc3NEYXRhID0gQXBwbGljYXRpb24uZ2V0QmVhbihTZXNzaW9uZGF0YURhby5jbGFzcykuc3RhcnRzZXNzaW9uKCk7CisJCVNJRCA9IHNlc3NEYXRhLmdldFNlc3Npb25faWQoKTsKKwkJT2JqZWN0IHUgPSBBcHBsaWNhdGlvbi5nZXRCZWFuKFVzZXJNYW5hZ2VyLmNsYXNzKS5sb2dpblVzZXIoU0lELCBsb2dpbiwgcGFzc3dvcmQsCisJCQkJbnVsbCwgbnVsbCwgZmFsc2UpOworCQkKKwkJaWYgKHUgaW5zdGFuY2VvZiBVc2VyKSB7CisJCQlVc2VyIHVzZXIgPSAoVXNlcil1OworCQkJdXNlcklkID0gdXNlci5nZXRVc2VyX2lkKCk7CisJCQl0eiA9IFRpbWVab25lLmdldFRpbWVab25lKHVzZXIuZ2V0T21UaW1lWm9uZSgpLmdldEljYWwoKSk7CisJCQlJU084NjAxRk9STUFULnNldFRpbWVab25lKHR6KTsKKwkJCWlmIChudWxsID09IGdldElkKCkpIHsKKwkJCQliaW5kKCk7CisJCQl9CisJCQlyZXR1cm4gdHJ1ZTsKKwkJfQorCQlyZXR1cm4gZmFsc2U7CisJfQorCQorCXB1YmxpYyBzdGF0aWMgV2ViU2Vzc2lvbiBnZXQoKSB7CisJCXJldHVybiAoV2ViU2Vzc2lvbilBYnN0cmFjdEF1dGhlbnRpY2F0ZWRXZWJTZXNzaW9uLmdldCgpOworCX0KKwkKKwlwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRTdHJpbmcobG9uZyBpZCkgeworCQlGaWVsZE1hbmFnZXIgZmllbGRNYW5hZ2VyID0gQXBwbGljYXRpb24uZ2V0QmVhbihGaWVsZE1hbmFnZXIuY2xhc3MpOworCQlyZXR1cm4gZmllbGRNYW5hZ2VyLmdldFN0cmluZyhpZCwgZ2V0TGFuZ3VhZ2UoKSk7CisJfQorCQorCXB1YmxpYyBzdGF0aWMgbG9uZyBnZXRMYW5ndWFnZSgpIHsKKwkJV2ViU2Vzc2lvbiBzZXNzaW9uID0gZ2V0KCk7CisJCWlmIChzZXNzaW9uLmlzU2lnbmVkSW4oKSkgeworCQkJcmV0dXJuIEFwcGxpY2F0aW9uLmdldEJlYW4oVXNlcnNEYW8uY2xhc3MpLmdldChzZXNzaW9uLnVzZXJJZCkuZ2V0TGFuZ3VhZ2VfaWQoKTsKKwkJfSBlbHNlIHsKKwkJCXJldHVybiBBcHBsaWNhdGlvbi5nZXRCZWFuKENvbmZpZ3VyYXRpb25EYW8uY2xhc3MpLmdldENvbmZWYWx1ZSgiZGVmYXVsdF9sYW5nX2lkIiwgTG9uZy5jbGFzcywgIjEiKTsKKwkJfQorCX0KKwkKKwlwdWJsaWMgc3RhdGljIEZpZWxkTGFuZ3VhZ2UgZ2V0TGFuZ3VhZ2VPYmooKSB7CisJCXJldHVybiBBcHBsaWNhdGlvbi5nZXRCZWFuKEZpZWxkTGFuZ3VhZ2VEYW8uY2xhc3MpLmdldEZpZWxkTGFuZ3VhZ2VCeUlkKGdldExhbmd1YWdlKCkpOworCX0KKwkKKwlwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRTaWQoKSB7CisJCXJldHVybiBnZXQoKS5TSUQ7CisJfQorCisJcHVibGljIHN0YXRpYyBsb25nIGdldFVzZXJJZCgpIHsKKwkJcmV0dXJuIGdldCgpLnVzZXJJZDsKKwl9CisKKwlwdWJsaWMgc3RhdGljIENhbGVuZGFyIGdldENhbGVuZGFyKCkgeworCQlyZXR1cm4gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoZ2V0KCkudHopOworCX0KKworCXB1YmxpYyBzdGF0aWMgRGF0ZUZvcm1hdCBnZXREYXRlRm9ybWF0KCkgeworCQlyZXR1cm4gZ2V0KCkuSVNPODYwMUZPUk1BVDsKKwl9CisKKwlwdWJsaWMgc3RhdGljIGxvbmcgZ2V0VXNlckxldmVsKCkgeworCQlyZXR1cm4gZ2V0KCkudXNlckxldmVsOworCX0KKworCXB1YmxpYyBTdHJpbmcgZ2V0QXJlYSgpIHsKKwkJcmV0dXJuIGFyZWE7CisJfQorCisJcHVibGljIHZvaWQgc2V0QXJlYShTdHJpbmcgYXJlYSkgeworCQl0aGlzLmFyZWEgPSBhcmVhOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9CYXNlUGFuZWwuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9CYXNlUGFuZWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYmQ3MmZjCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL0Jhc2VQYW5lbC5qYXZhCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmNvbXBvbmVudHM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5hamF4LkFqYXhSZXF1ZXN0VGFyZ2V0OworaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5odG1sLnBhbmVsLlBhbmVsOworCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQmFzZVBhbmVsIGV4dGVuZHMgUGFuZWwgeworCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDg2NjM3NDA5NTU1Mjk0MDU2NzhMOworCisJcHVibGljIEJhc2VQYW5lbChTdHJpbmcgaWQpIHsKKwkJc3VwZXIoaWQpOworCQlzZXRPdXRwdXRNYXJrdXBJZCh0cnVlKTsKKwl9CisKKwkvKioKKwkgKiBPdmVyd3JpdGUgdGhpcyBtZXRob2QgdG8gZXhlY3V0ZSBKYXZhIGNvZGUgYWZ0ZXIgUGFuZWwgaXMgbG9hZGVkIGJ5IHRoZQorCSAqIHtAbGluayBNZW51UGFuZWx9CisJICogCisJICogQHBhcmFtIHRhcmdldAorCSAqLworCXB1YmxpYyB2b2lkIG9uTWVudVBhbmVsTG9hZChBamF4UmVxdWVzdFRhcmdldCB0YXJnZXQpIHsKKworCX0KKworfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL0NvbmZpcm1DYWxsTGlzdGVuZXIuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9Db25maXJtQ2FsbExpc3RlbmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjY0Y2M3ZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9Db25maXJtQ2FsbExpc3RlbmVyLmphdmEKQEAgLTAsMCArMSwzNyBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuY29tcG9uZW50czsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5hcHAuV2ViU2Vzc2lvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5hamF4LmF0dHJpYnV0ZXMuQWpheENhbGxMaXN0ZW5lcjsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5jb3JlLnV0aWwuc3RyaW5nLkphdmFTY3JpcHRVdGlsczsKKworcHVibGljIGNsYXNzIENvbmZpcm1DYWxsTGlzdGVuZXIgZXh0ZW5kcyBBamF4Q2FsbExpc3RlbmVyIHsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSA3MzU1MjM1NzIwMjEzMTM3OTYzTDsKKworCXB1YmxpYyBDb25maXJtQ2FsbExpc3RlbmVyKGxvbmcgaWQpIHsKKwkJdGhpcyhpZCwgIiIpOworCX0KKwkKKwkvL1RPRE8gY29uZmlybSBuZWVkIHRvIGJlIHJlcGxhY2VkIHdpdGggalF1ZXJ5IG1vZGFsIGRpYWxvZworCXB1YmxpYyBDb25maXJtQ2FsbExpc3RlbmVyKGxvbmcgaWQsIFN0cmluZyBqcykgeworCQlvblByZWNvbmRpdGlvbigiaWYgKCFjb25maXJtKCciICsgSmF2YVNjcmlwdFV0aWxzLmVzY2FwZVF1b3RlcyhXZWJTZXNzaW9uLmdldFN0cmluZyhpZCkpICsgIicpKSB7IiAKKwkJCQkrIGpzICsgIjsgaGlkZUJ1c3lJbmRpY2F0b3IoKTsgcmV0dXJuIGZhbHNlO30iKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvQ29uZmlybWFibGVBamF4TGluay5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL0NvbmZpcm1hYmxlQWpheExpbmsuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MTNiYzNmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL0NvbmZpcm1hYmxlQWpheExpbmsuamF2YQpAQCAtMCwwICsxLDM4IEBACisvKg0KKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgKiB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5jb21wb25lbnRzOw0KKw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5hamF4LmF0dHJpYnV0ZXMuQWpheFJlcXVlc3RBdHRyaWJ1dGVzOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5hamF4Lm1hcmt1cC5odG1sLkFqYXhMaW5rOw0KKw0KK3B1YmxpYyBhYnN0cmFjdCBjbGFzcyBDb25maXJtYWJsZUFqYXhMaW5rIGV4dGVuZHMgQWpheExpbms8Vm9pZD4gew0KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSA3MzAxNzQ3ODkxNjY4NTM3MTY4TDsNCisJcHJpdmF0ZSBsb25nIGNvbmZpcm1JZDsNCisNCisJcHVibGljIENvbmZpcm1hYmxlQWpheExpbmsoU3RyaW5nIGlkLCBsb25nIGNvbmZpcm1JZCkgew0KKwkJc3VwZXIoaWQpOw0KKwkJdGhpcy5jb25maXJtSWQgPSBjb25maXJtSWQ7DQorCX0NCisNCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCB2b2lkIHVwZGF0ZUFqYXhBdHRyaWJ1dGVzKEFqYXhSZXF1ZXN0QXR0cmlidXRlcyBhdHRyaWJ1dGVzKSB7DQorCQlzdXBlci51cGRhdGVBamF4QXR0cmlidXRlcyhhdHRyaWJ1dGVzKTsNCisJCWF0dHJpYnV0ZXMuZ2V0QWpheENhbGxMaXN0ZW5lcnMoKS5hZGQobmV3IENvbmZpcm1DYWxsTGlzdGVuZXIoY29uZmlybUlkLCAiaGlkZUJ1c3lJbmRpY2F0b3IoKTsiKSk7DQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL0hlYWRlclBhbmVsLmh0bWwgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvSGVhZGVyUGFuZWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45OWZhYTE0Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL0hlYWRlclBhbmVsLmh0bWwKQEAgLTAsMCArMSwyNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPGh0bWwgeG1sbnM6d2lja2V0PSJodHRwOi8vd2lja2V0LmFwYWNoZS5vcmciPg0KKwk8d2lja2V0OnBhbmVsPg0KKwkJPGRpdiBpZD0iaGVhZGVyIj4NCisJCQk8c3BhbiBpZD0ibG9nbyI+PC9zcGFuPjxzcGFuIHdpY2tldDppZD0iYXBwTmFtZSI+PC9zcGFuPg0KKwkJPC9kaXY+DQorCTwvd2lja2V0OnBhbmVsPg0KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvSGVhZGVyUGFuZWwuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9IZWFkZXJQYW5lbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmYmIzOTYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvSGVhZGVyUGFuZWwuamF2YQpAQCAtMCwwICsxLDMwIEBACisvKg0KKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgKiB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5jb21wb25lbnRzOw0KKw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5iYXNpYy5MYWJlbDsNCisNCitwdWJsaWMgY2xhc3MgSGVhZGVyUGFuZWwgZXh0ZW5kcyBCYXNlUGFuZWwgew0KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSA5MDIwODQyODQ1OTQ2Njg1MTkzTDsNCisNCisJcHVibGljIEhlYWRlclBhbmVsKFN0cmluZyBpZCwgU3RyaW5nIGFwcE5hbWUpIHsNCisJCXN1cGVyKGlkKTsNCisJCWFkZChuZXcgTGFiZWwoImFwcE5hbWUiLCBhcHBOYW1lKSk7DQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL01lbnVQYW5lbC5odG1sIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL01lbnVQYW5lbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiNTkyYmUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvTWVudVBhbmVsLmh0bWwKQEAgLTAsMCArMSw1NCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPGh0bWwgeG1sbnM6d2lja2V0PSJodHRwOi8vd2lja2V0LmFwYWNoZS5vcmciPg0KKwk8d2lja2V0OmhlYWQ+DQorCQk8bGluayBtZWRpYT0ic2NyZWVuIiB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJjc3MvanF1ZXJ5LnVpLm1lbnViYXIuY3NzIi8+DQorCTwvd2lja2V0OmhlYWQ+DQorCTx3aWNrZXQ6cGFuZWw+DQorCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJqcy9qcXVlcnkudWkubWVudWJhci5qcyI+PC9zY3JpcHQ+DQorCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+DQorCQkJJChmdW5jdGlvbigpIHsNCisJCQkJJCgiI2pNZW51IikubWVudWJhcih7DQorCQkJCQlhdXRvRXhwYW5kOiB0cnVlDQorCQkJCQksIG1lbnVJY29uOiB0cnVlDQorCQkJCQksIGJ1dHRvbnM6IHRydWUNCisJCQkJCSwgcG9zaXRpb246IHsNCisJCQkJCQl3aXRoaW46ICQoIiNtZW51IikuYWRkKHdpbmRvdykuZmlyc3QoKQ0KKwkJCQkJfQ0KKwkJCQkJLy8sIHNlbGVjdDogc2VsZWN0DQorCQkJCX0pOw0KKwkJCX0pOw0KKwkJPC9zY3JpcHQ+DQorCQk8dWwgaWQ9ImpNZW51Ij4NCisJCQk8bGkgd2lja2V0OmlkPSJtYWluSXRlbSI+DQorCQkJCTxhIGNsYXNzPSJmTml2IiBocmVmPSIjIiBvbmNsaWNrPSJyZXR1cm4gZmFsc2U7Ij48c3BhbiB3aWNrZXQ6aWQ9ImxhYmVsIj48L3NwYW4+PC9hPg0KKwkJCQk8dWwgd2lja2V0OmVuY2xvc3VyZT0iY2hpbGRJdGVtIj4NCisJCQkJCTxsaSB3aWNrZXQ6aWQ9ImNoaWxkSXRlbSI+DQorCQkJCQkJPGEgd2lja2V0OmlkPSJsaW5rIiBocmVmPSIjIj4NCisJCQkJCQkJPHNwYW4gY2xhc3M9Im1lbnVOYW1lIiB3aWNrZXQ6aWQ9Im5hbWUiPjwvc3Bhbj48YnIgLz4NCisJCQkJCQkJPHNwYW4gY2xhc3M9Im1lbnVEZXNjIiB3aWNrZXQ6aWQ9ImRlc2NyaXB0aW9uIj48L3NwYW4+DQorCQkJCQkJPC9hPg0KKwkJCQkJPC9saT4NCisJCQkJPC91bD4NCisJCQk8L2xpPg0KKwkJPC91bD4NCisJPC93aWNrZXQ6cGFuZWw+DQorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9NZW51UGFuZWwuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9NZW51UGFuZWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODIxYmE1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL01lbnVQYW5lbC5qYXZhCkBAIC0wLDAgKzEsMjUzIEBACisvKg0KKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgKiB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5jb21wb25lbnRzOw0KKw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLk5hdmlCdWlsZGVyOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5OYXZpZ2xvYmFsOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5OYXZpbWFpbjsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmFwcC5BcHBsaWNhdGlvbjsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmFwcC5XZWJTZXNzaW9uOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuY29tcG9uZW50cy5hZG1pbi5iYWNrdXAuQmFja3VwUGFuZWw7DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5jb21wb25lbnRzLmFkbWluLmNvbmZpZ3VyYXRpb25zLkNvbmZpZ3NQYW5lbDsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmNvbXBvbmVudHMuYWRtaW4uZ3JvdXBzLkdyb3Vwc1BhbmVsOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuY29tcG9uZW50cy5hZG1pbi5sYWJlbHMuTGFuZ1BhbmVsOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuY29tcG9uZW50cy5hZG1pbi5sZGFwcy5MZGFwc1BhbmVsOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuY29tcG9uZW50cy5hZG1pbi5yb29tcy5Sb29tc1BhbmVsOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuY29tcG9uZW50cy5hZG1pbi5zZXJ2ZXJzLlNlcnZlcnNQYW5lbDsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmNvbXBvbmVudHMuYWRtaW4udXNlcnMuVXNlcnNQYW5lbDsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmNvbXBvbmVudHMudXNlci5jYWxlbmRhci5DYWxlbmRhclBhbmVsOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuY29tcG9uZW50cy51c2VyLnJvb21zLlVzZXJSb29tc1BhbmVsOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5BdHRyaWJ1dGVNb2RpZmllcjsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQuQ29tcG9uZW50Ow0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5NYXJrdXBDb250YWluZXI7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LmFqYXguQWpheFJlcXVlc3RUYXJnZXQ7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LmFqYXgubWFya3VwLmh0bWwuQWpheExpbms7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LmJlaGF2aW9yLkJlaGF2aW9yOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5jb3JlLnV0aWwuc3RyaW5nLkphdmFTY3JpcHRVdGlsczsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmhlYWQuSUhlYWRlclJlc3BvbnNlOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaGVhZC5PbkRvbVJlYWR5SGVhZGVySXRlbTsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuYmFzaWMuTGFiZWw7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5odG1sLmxpc3QuTGlzdEl0ZW07DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5odG1sLmxpc3QuTGlzdFZpZXc7DQorDQorLyoqDQorICogTG9hZHMgdGhlIG1lbnUgaXRlbXMgaW50byB0aGUgbWFpbiBhcmVhDQorICogDQorICogQGF1dGhvciBzZWJhd2FnbmVyDQorICoNCisgKi8NCitwdWJsaWMgY2xhc3MgTWVudVBhbmVsIGV4dGVuZHMgQmFzZVBhbmVsIHsNCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gNjYyNjAzOTYxMjgwODc1MzUxNEw7DQorDQorCXByaXZhdGUgZW51bSBNZW51QWN0aW9ucyB7DQorCQlkYXNoYm9hcmRNb2R1bGVTdGFydFNjcmVlbg0KKwkJLCBkYXNoYm9hcmRNb2R1bGVDYWxlbmRhcg0KKwkJLCByZWNvcmRNb2R1bGUNCisJCSwgY29uZmVyZW5jZU1vZHVsZVJvb21MaXN0DQorCQksIGV2ZW50TW9kdWxlUm9vbUxpc3QNCisJCSwgbW9kZXJhdG9yTW9kdWxlVXNlcg0KKwkJLCBtb2RlcmF0b3JNb2R1bGVSb29tDQorCQksIGFkbWluTW9kdWxlVXNlcg0KKwkJLCBhZG1pbk1vZHVsZUNvbm5lY3Rpb25zDQorCQksIGFkbWluTW9kdWxlT3JnDQorCQksIGFkbWluTW9kdWxlUm9vbQ0KKwkJLCBhZG1pbk1vZHVsZUNvbmZpZ3VyYXRpb24NCisJCSwgYWRtaW5Nb2R1bGVMYW5ndWFnZXMNCisJCSwgYWRtaW5Nb2R1bGVMREFQDQorCQksIGFkbWluTW9kdWxlQmFja3VwDQorCQksIGFkbWluTW9kdWxlU2VydmVycw0KKwl9DQorDQorCXB1YmxpYyBlbnVtIE1lbnVQYXJhbXMgew0KKwkJcHVibGljVGFiQnV0dG9uDQorCQksIHByaXZhdGVUYWJCdXR0b24NCisJCSwgbXlUYWJCdXR0b24NCisJfQ0KKwkNCisJcHVibGljIE1lbnVQYW5lbChTdHJpbmcgaWQsIGZpbmFsIE1hcmt1cENvbnRhaW5lciBjb250ZW50cykgew0KKwkJc3VwZXIoaWQpOw0KKwkJc2V0TWFya3VwSWQoaWQpOw0KKwkJDQorCQlmaW5hbCBOYXZpQnVpbGRlciBtYW4gPSBBcHBsaWNhdGlvbi5nZXRCZWFuKE5hdmlCdWlsZGVyLmNsYXNzKTsNCisJCWFkZChuZXcgTGlzdFZpZXc8TmF2aWdsb2JhbD4oIm1haW5JdGVtIiwgbWFuLmdldE1haW5NZW51KFdlYlNlc3Npb24uZ2V0VXNlckxldmVsKCksIFdlYlNlc3Npb24uZ2V0VXNlcklkKCksIFdlYlNlc3Npb24uZ2V0TGFuZ3VhZ2UoKSkpIHsNCisJCQlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAyMTczOTI2NTUzNDE4NzQ1MjMxTDsNCisNCisJCQlAT3ZlcnJpZGUNCisJCQlwcm90ZWN0ZWQgdm9pZCBwb3B1bGF0ZUl0ZW0oTGlzdEl0ZW08TmF2aWdsb2JhbD4gaXRlbSkgew0KKwkJCQlOYXZpZ2xvYmFsIGdsID0gaXRlbS5nZXRNb2RlbE9iamVjdCgpOw0KKwkJCQlpdGVtLmFkZChuZXcgTGFiZWwoImxhYmVsIiwgZ2wuZ2V0TGFiZWwoKS5nZXRWYWx1ZSgpKS5zZXRSZW5kZXJCb2R5T25seSh0cnVlKSk7DQorCQkJCQ0KKwkJCQlpdGVtLmFkZChuZXcgTGlzdFZpZXc8TmF2aW1haW4+KCJjaGlsZEl0ZW0iLCBnbC5nZXRNYWlubmF2aSgpKSB7DQorCQkJCQlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAzNjA5NjM1MjY4MzM4Mzc5MDg3TDsNCisNCisJCQkJCUBPdmVycmlkZQ0KKwkJCQkJcHJvdGVjdGVkIHZvaWQgcG9wdWxhdGVJdGVtKExpc3RJdGVtPE5hdmltYWluPiBpdGVtKSB7DQorCQkJCQkJTmF2aW1haW4gbSA9IGl0ZW0uZ2V0TW9kZWxPYmplY3QoKTsNCisJCQkJCQlmaW5hbCBTdHJpbmcgbmFtZSA9IG0uZ2V0TGFiZWwoKS5nZXRWYWx1ZSgpOw0KKwkJCQkJCWZpbmFsIFN0cmluZyBkZXNjID0gbS5nZXRUb29sdGlwKCkuZ2V0VmFsdWUoKTsNCisJCQkJCQlmaW5hbCBNZW51QWN0aW9ucyBhY3Rpb24gPSBNZW51QWN0aW9ucy52YWx1ZU9mKG0uZ2V0QWN0aW9uKCkpOw0KKwkJCQkJCWZpbmFsIE1lbnVQYXJhbXMgcGFyYW1zID0gbS5nZXRQYXJhbXMoKSAhPSBudWxsID8gTWVudVBhcmFtcy52YWx1ZU9mKG0uZ2V0UGFyYW1zKCkpIDogTWVudVBhcmFtcy5wdWJsaWNUYWJCdXR0b247DQorCQkJCQkJZmluYWwgU3RyaW5nIGhhc2ggPSBnZXRIYXNoKGFjdGlvbiwgcGFyYW1zKTsNCisJCQkJCQlpdGVtLmFkZChuZXcgQWpheExpbms8Vm9pZD4oImxpbmsiKSB7DQorCQkJCQkJCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDU2MzI2MTg5MzU1NTAxMzM3MDlMOw0KKwkJCQkJCQl7DQorCQkJCQkJCQlhZGQobmV3IExhYmVsKCJuYW1lIiwgbmFtZSkpOw0KKwkJCQkJCQkJYWRkKG5ldyBMYWJlbCgiZGVzY3JpcHRpb24iLCBkZXNjKSk7DQorCQkJCQkJCX0NCisJCQkJCQkJDQorCQkJCQkJCXB1YmxpYyB2b2lkIG9uQ2xpY2soQWpheFJlcXVlc3RUYXJnZXQgdGFyZ2V0KSB7DQorCQkJCQkJCQkNCisJCQkJCQkJCUJhc2VQYW5lbCBiYXNlUGFuZWwgPSBudWxsOw0KKwkJCQkJCQkJDQorCQkJCQkJCQlzd2l0Y2goYWN0aW9uKSB7DQorCQkJCQkJCQkJY2FzZSBkYXNoYm9hcmRNb2R1bGVTdGFydFNjcmVlbjoNCisJCQkJCQkJCQkJYnJlYWs7DQorCQkJCQkJCQkJY2FzZSBkYXNoYm9hcmRNb2R1bGVDYWxlbmRhcjoNCisJCQkJCQkJCQkJYmFzZVBhbmVsID0gbmV3IENhbGVuZGFyUGFuZWwoImNoaWxkIik7DQorCQkJCQkJCQkJCWJyZWFrOw0KKwkJCQkJCQkJCWNhc2UgcmVjb3JkTW9kdWxlOg0KKwkJCQkJCQkJCQlicmVhazsNCisJCQkJCQkJCQljYXNlIGNvbmZlcmVuY2VNb2R1bGVSb29tTGlzdDoNCisJCQkJCQkJCQkJYmFzZVBhbmVsID0gbmV3IFVzZXJSb29tc1BhbmVsKCJjaGlsZCIsIHBhcmFtcyk7DQorCQkJCQkJCQkJCWJyZWFrOw0KKwkJCQkJCQkJCWNhc2UgZXZlbnRNb2R1bGVSb29tTGlzdDoNCisJCQkJCQkJCQkJYnJlYWs7DQorCQkJCQkJCQkJY2FzZSBtb2RlcmF0b3JNb2R1bGVVc2VyOg0KKwkJCQkJCQkJCQlicmVhazsNCisJCQkJCQkJCQljYXNlIG1vZGVyYXRvck1vZHVsZVJvb206DQorCQkJCQkJCQkJCWJyZWFrOw0KKwkJCQkJCQkJCWNhc2UgYWRtaW5Nb2R1bGVVc2VyOg0KKwkJCQkJCQkJCQliYXNlUGFuZWwgPSBuZXcgVXNlcnNQYW5lbCgiY2hpbGQiKTsNCisJCQkJCQkJCQkJYnJlYWs7DQorCQkJCQkJCQkJY2FzZSBhZG1pbk1vZHVsZUNvbm5lY3Rpb25zOg0KKwkJCQkJCQkJCQlicmVhazsNCisJCQkJCQkJCQljYXNlIGFkbWluTW9kdWxlT3JnOg0KKwkJCQkJCQkJCQliYXNlUGFuZWwgPSBuZXcgR3JvdXBzUGFuZWwoImNoaWxkIik7DQorCQkJCQkJCQkJCWJyZWFrOw0KKwkJCQkJCQkJCWNhc2UgYWRtaW5Nb2R1bGVSb29tOg0KKwkJCQkJCQkJCQliYXNlUGFuZWwgPSBuZXcgUm9vbXNQYW5lbCgiY2hpbGQiKTsNCisJCQkJCQkJCQkJYnJlYWs7DQorCQkJCQkJCQkJY2FzZSBhZG1pbk1vZHVsZUNvbmZpZ3VyYXRpb246DQorCQkJCQkJCQkJCWJhc2VQYW5lbCA9IG5ldyBDb25maWdzUGFuZWwoImNoaWxkIik7DQorCQkJCQkJCQkJCWJyZWFrOw0KKwkJCQkJCQkJCWNhc2UgYWRtaW5Nb2R1bGVMYW5ndWFnZXM6DQorCQkJCQkJCQkJCWJhc2VQYW5lbCA9IG5ldyBMYW5nUGFuZWwoImNoaWxkIik7DQorCQkJCQkJCQkJCWJyZWFrOw0KKwkJCQkJCQkJCWNhc2UgYWRtaW5Nb2R1bGVMREFQOg0KKwkJCQkJCQkJCQliYXNlUGFuZWwgPSBuZXcgTGRhcHNQYW5lbCgiY2hpbGQiKTsNCisJCQkJCQkJCQkJYnJlYWs7DQorCQkJCQkJCQkJY2FzZSBhZG1pbk1vZHVsZUJhY2t1cDoNCisJCQkJCQkJCQkJYmFzZVBhbmVsID0gbmV3IEJhY2t1cFBhbmVsKCJjaGlsZCIpOw0KKwkJCQkJCQkJCQlicmVhazsNCisJCQkJCQkJCQljYXNlIGFkbWluTW9kdWxlU2VydmVyczoNCisJCQkJCQkJCQkJYmFzZVBhbmVsID0gbmV3IFNlcnZlcnNQYW5lbCgiY2hpbGQiKTsNCisJCQkJCQkJCQkJYnJlYWs7DQorCQkJCQkJCQl9DQorCQkJCQkJCQkNCisJCQkJCQkJCWlmIChiYXNlUGFuZWwgIT0gbnVsbCkgew0KKwkJCQkJCQkJCXRhcmdldC5hZGQoY29udGVudHMucmVwbGFjZShiYXNlUGFuZWwpKTsNCisJCQkJCQkJCQliYXNlUGFuZWwub25NZW51UGFuZWxMb2FkKHRhcmdldCk7DQorCQkJCQkJCQl9DQorCQkJCQkJCQkNCisJCQkJCQkJCXRhcmdldC5hcHBlbmRKYXZhU2NyaXB0KCJsb2NhdGlvbi5oYXNoID0gJyIgKyBKYXZhU2NyaXB0VXRpbHMuZXNjYXBlUXVvdGVzKGhhc2gpICsgIic7Iik7DQorCQkJCQkJCX07DQorCQkJCQkJfS5hZGQoQXR0cmlidXRlTW9kaWZpZXIucmVwbGFjZSgiaHJlZiIsIGhhc2gpKSk7DQorCQkJCQl9DQorCQkJCX0uc2V0UmV1c2VJdGVtcyh0cnVlKSk7DQorCQkJfQ0KKwkJfS5zZXRSZXVzZUl0ZW1zKHRydWUpKTsNCisNCisJCWFkZChuZXcgQmVoYXZpb3IoKSB7DQorCQkJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gOTA2NzYxMDc5NDA4Nzg4MDI5N0w7DQorDQorCQkJQE92ZXJyaWRlDQorCQkJcHVibGljIHZvaWQgcmVuZGVySGVhZChDb21wb25lbnQgY29tcG9uZW50LCBJSGVhZGVyUmVzcG9uc2UgcmVzcG9uc2UpIHsNCisJCQkJU3RyaW5nIGFyZWEgPSBXZWJTZXNzaW9uLmdldCgpLmdldEFyZWEoKTsNCisJCQkJaWYgKGFyZWEgIT0gbnVsbCkgeyAvL2hhc2ggcGFzc2VkIGZyb20gc2lnbmluDQorCQkJCQlyZXNwb25zZS5yZW5kZXIoT25Eb21SZWFkeUhlYWRlckl0ZW0uZm9yU2NyaXB0KCIkKFwiYVtocmVmPSciICsgSmF2YVNjcmlwdFV0aWxzLmVzY2FwZVF1b3RlcyhhcmVhKSArICInXVwiKS5jbGljaygpOyIpKTsNCisJCQkJCVdlYlNlc3Npb24uZ2V0KCkuc2V0QXJlYShudWxsKTsNCisJCQkJfSBlbHNlIHsNCisJCQkJCXJlc3BvbnNlLnJlbmRlcihPbkRvbVJlYWR5SGVhZGVySXRlbS5mb3JTY3JpcHQoIiQoXCJhW2hyZWY9J1wiICsgbG9jYXRpb24uaGFzaCArIFwiJ11cIikuY2xpY2soKTsiKSk7DQorCQkJCX0NCisJCQkJc3VwZXIucmVuZGVySGVhZChjb21wb25lbnQsIHJlc3BvbnNlKTsNCisJCQl9DQorCQl9KTsNCisJfQ0KKwkNCisJcHJpdmF0ZSBTdHJpbmcgZ2V0SGFzaChNZW51QWN0aW9ucyBhY3Rpb24sIE1lbnVQYXJhbXMgcGFyYW1zKSB7DQorCQlTdHJpbmcgaGFzaCA9ICIjIjsNCisJCXN3aXRjaChhY3Rpb24pIHsNCisJCQljYXNlIGRhc2hib2FyZE1vZHVsZVN0YXJ0U2NyZWVuOg0KKwkJCQlicmVhazsNCisJCQljYXNlIGRhc2hib2FyZE1vZHVsZUNhbGVuZGFyOg0KKwkJCQloYXNoID0gIiNjYWxlbmRhciI7DQorCQkJCWJyZWFrOw0KKwkJCWNhc2UgcmVjb3JkTW9kdWxlOg0KKwkJCQlicmVhazsNCisJCQljYXNlIGNvbmZlcmVuY2VNb2R1bGVSb29tTGlzdDoNCisJCQkJU3RyaW5nIHpvbmUgPSAicHVibGljIjsNCisJCQkJc3dpdGNoIChwYXJhbXMpIHsNCisJCQkJCWNhc2UgbXlUYWJCdXR0b246DQorCQkJCQkJem9uZSA9ICJteSI7DQorCQkJCQkJYnJlYWs7DQorCQkJCQljYXNlIHByaXZhdGVUYWJCdXR0b246DQorCQkJCQkJem9uZSA9ICJncm91cCI7DQorCQkJCQkJYnJlYWs7DQorCQkJCQljYXNlIHB1YmxpY1RhYkJ1dHRvbjoNCisJCQkJCWRlZmF1bHQ6DQorCQkJCQkJYnJlYWs7DQorCQkJCX0NCisJCQkJaGFzaCA9ICIjcm9vbXMvIiArIHpvbmU7DQorCQkJCWJyZWFrOw0KKwkJCWNhc2UgZXZlbnRNb2R1bGVSb29tTGlzdDoNCisJCQkJYnJlYWs7DQorCQkJY2FzZSBtb2RlcmF0b3JNb2R1bGVVc2VyOg0KKwkJCQlicmVhazsNCisJCQljYXNlIG1vZGVyYXRvck1vZHVsZVJvb206DQorCQkJCWJyZWFrOw0KKwkJCWNhc2UgYWRtaW5Nb2R1bGVVc2VyOg0KKwkJCQloYXNoID0gIiNhZG1pbi91c2VycyI7DQorCQkJCWJyZWFrOw0KKwkJCWNhc2UgYWRtaW5Nb2R1bGVDb25uZWN0aW9uczoNCisJCQkJYnJlYWs7DQorCQkJY2FzZSBhZG1pbk1vZHVsZU9yZzoNCisJCQkJaGFzaCA9ICIjYWRtaW4vZ3JvdXBzIjsNCisJCQkJYnJlYWs7DQorCQkJY2FzZSBhZG1pbk1vZHVsZVJvb206DQorCQkJCWhhc2ggPSAiI2FkbWluL3Jvb21zIjsNCisJCQkJYnJlYWs7DQorCQkJY2FzZSBhZG1pbk1vZHVsZUNvbmZpZ3VyYXRpb246DQorCQkJCWhhc2ggPSAiI2FkbWluL2NvbmZpZ3MiOw0KKwkJCQlicmVhazsNCisJCQljYXNlIGFkbWluTW9kdWxlTGFuZ3VhZ2VzOg0KKwkJCQloYXNoID0gIiNhZG1pbi9sYW5nIjsNCisJCQkJYnJlYWs7DQorCQkJY2FzZSBhZG1pbk1vZHVsZUxEQVA6DQorCQkJCWhhc2ggPSAiI2FkbWluL2xkYXBzIjsNCisJCQkJYnJlYWs7DQorCQkJY2FzZSBhZG1pbk1vZHVsZUJhY2t1cDoNCisJCQkJaGFzaCA9ICIjYWRtaW4vYmFja3VwIjsNCisJCQkJYnJlYWs7DQorCQkJY2FzZSBhZG1pbk1vZHVsZVNlcnZlcnM6DQorCQkJCWhhc2ggPSAiI2FkbWluL3NlcnZlcnMiOw0KKwkJCQlicmVhazsNCisJCX0NCisJCXJldHVybiBoYXNoOw0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9Vc2VyUGFuZWwuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9Vc2VyUGFuZWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjVhNDRiCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL1VzZXJQYW5lbC5qYXZhCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmNvbXBvbmVudHM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5hdXRocm9sZXMuYXV0aG9yaXphdGlvbi5zdHJhdGVnaWVzLnJvbGUuYW5ub3RhdGlvbnMuQXV0aG9yaXplSW5zdGFudGlhdGlvbjsKKworQEF1dGhvcml6ZUluc3RhbnRpYXRpb24oIlVTRVIiKQorcHVibGljIGFic3RyYWN0IGNsYXNzIFVzZXJQYW5lbCBleHRlbmRzIEJhc2VQYW5lbCB7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gODYwNzg0Njg4NTY4OTQ2NTM2MEw7CisKKwlwdWJsaWMgVXNlclBhbmVsKFN0cmluZyBpZCkgeworCQlzdXBlcihpZCk7CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL2FkbWluL0FkbWluQmFzZUZvcm0uamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi9BZG1pbkJhc2VGb3JtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQxYjI3OAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi9BZG1pbkJhc2VGb3JtLmphdmEKQEAgLTAsMCArMSwxNzQgQEAKKy8qDQorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAqIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmNvbXBvbmVudHMuYWRtaW47DQorDQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LmFqYXguQWpheFJlcXVlc3RUYXJnZXQ7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5odG1sLmZvcm0uRm9ybTsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubW9kZWwuSU1vZGVsOw0KKw0KKy8qKg0KKyAqIHByb3ZpZGVzIGJhc2ljIGZ1bmN0aW9uYWxpdHkgdG8gaW5zZXJ0LCB1cGRhdGUsIHJlbW92ZSwgcmVmcmVzaCByZWNvcmQgaW4NCisgKiBhZG1pbiBzZWN0aW9uDQorICogDQorICogQGF1dGhvciBzd2FnbmVyDQorICogDQorICogQHBhcmFtIDxUPg0KKyAqLw0KK3B1YmxpYyBjbGFzcyBBZG1pbkJhc2VGb3JtPFQ+IGV4dGVuZHMgRm9ybTxUPiB7DQorCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDFMOw0KKwlwcml2YXRlIEFkbWluQmFzZUZvcm1QYW5lbDxUPiBiYXNlUGFuZWw7DQorDQorCXB1YmxpYyBBZG1pbkJhc2VGb3JtKFN0cmluZyBpZCwgSU1vZGVsPFQ+IG9iamVjdCkgew0KKwkJc3VwZXIoaWQsIG9iamVjdCk7DQorCQliYXNlUGFuZWwgPSBuZXcgQWRtaW5CYXNlRm9ybVBhbmVsPFQ+KCJidXR0b25zIiwgdGhpcykgew0KKwkJCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IC01ODMzNjQ3NDcwMDY3ODkxMjcwTDsNCisNCisJCQlAT3ZlcnJpZGUNCisJCQlwcm90ZWN0ZWQgdm9pZCBvblNhdmVTdWJtaXQoQWpheFJlcXVlc3RUYXJnZXQgdGFyZ2V0LCBGb3JtPD8+IGZvcm0pIHsNCisJCQkJQWRtaW5CYXNlRm9ybS50aGlzLm9uU2F2ZVN1Ym1pdCh0YXJnZXQsIGZvcm0pOw0KKwkJCX0NCisNCisJCQlAT3ZlcnJpZGUNCisJCQlwcm90ZWN0ZWQgdm9pZCBvblNhdmVFcnJvcihBamF4UmVxdWVzdFRhcmdldCB0YXJnZXQsIEZvcm08Pz4gZm9ybSkgew0KKwkJCQlBZG1pbkJhc2VGb3JtLnRoaXMub25TYXZlRXJyb3IodGFyZ2V0LCBmb3JtKTsNCisJCQl9DQorDQorCQkJQE92ZXJyaWRlDQorCQkJcHJvdGVjdGVkIHZvaWQgb25OZXdTdWJtaXQoQWpheFJlcXVlc3RUYXJnZXQgdGFyZ2V0LCBGb3JtPD8+IGZvcm0pIHsNCisJCQkJQWRtaW5CYXNlRm9ybS50aGlzLm9uTmV3U3VibWl0KHRhcmdldCwgZm9ybSk7DQorCQkJfQ0KKw0KKwkJCUBPdmVycmlkZQ0KKwkJCXByb3RlY3RlZCB2b2lkIG9uTmV3RXJyb3IoQWpheFJlcXVlc3RUYXJnZXQgdGFyZ2V0LCBGb3JtPD8+IGZvcm0pIHsNCisJCQkJQWRtaW5CYXNlRm9ybS50aGlzLm9uTmV3RXJyb3IodGFyZ2V0LCBmb3JtKTsNCisJCQl9DQorDQorCQkJQE92ZXJyaWRlDQorCQkJcHJvdGVjdGVkIHZvaWQgb25SZWZyZXNoU3VibWl0KEFqYXhSZXF1ZXN0VGFyZ2V0IHRhcmdldCwgRm9ybTw/PiBmb3JtKSB7DQorCQkJCUFkbWluQmFzZUZvcm0udGhpcy5vblJlZnJlc2hTdWJtaXQodGFyZ2V0LCBmb3JtKTsNCisJCQl9DQorDQorCQkJQE92ZXJyaWRlDQorCQkJcHJvdGVjdGVkIHZvaWQgb25SZWZyZXNoRXJyb3IoQWpheFJlcXVlc3RUYXJnZXQgdGFyZ2V0LCBGb3JtPD8+IGZvcm0pIHsNCisJCQkJQWRtaW5CYXNlRm9ybS50aGlzLm9uUmVmcmVzaEVycm9yKHRhcmdldCwgZm9ybSk7DQorCQkJfQ0KKw0KKwkJCUBPdmVycmlkZQ0KKwkJCXByb3RlY3RlZCB2b2lkIG9uRGVsZXRlU3VibWl0KEFqYXhSZXF1ZXN0VGFyZ2V0IHRhcmdldCwgRm9ybTw/PiBmb3JtKSB7DQorCQkJCUFkbWluQmFzZUZvcm0udGhpcy5vbkRlbGV0ZVN1Ym1pdCh0YXJnZXQsIGZvcm0pOw0KKwkJCX0NCisNCisJCQlAT3ZlcnJpZGUNCisJCQlwcm90ZWN0ZWQgdm9pZCBvbkRlbGV0ZUVycm9yKEFqYXhSZXF1ZXN0VGFyZ2V0IHRhcmdldCwgRm9ybTw/PiBmb3JtKSB7DQorCQkJCUFkbWluQmFzZUZvcm0udGhpcy5vbkRlbGV0ZUVycm9yKHRhcmdldCwgZm9ybSk7DQorCQkJfQ0KKwkJCQ0KKwkJfTsNCisJCWFkZChiYXNlUGFuZWwpOw0KKw0KKw0KKwl9DQorDQorCS8qKg0KKwkgKiBAc2VlIEFkbWluQmFzZUZvcm0jaGlkZU5ld1JlY29yZCgpDQorCSAqLw0KKwlwdWJsaWMgdm9pZCBoaWRlTmV3UmVjb3JkKCkgew0KKwkJYmFzZVBhbmVsLmhpZGVOZXdSZWNvcmQoKTsNCisJfQ0KKwkNCisJLyoqDQorCSAqIEBzZWUgQWRtaW5CYXNlRm9ybSNzaG93TmV3UmVjb3JkKCkNCisJICovDQorCXB1YmxpYyB2b2lkIHNob3dOZXdSZWNvcmQoKSB7DQorCQliYXNlUGFuZWwuc2hvd05ld1JlY29yZCgpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBpbnZva2VkIHdoZW4gdXNlciBwcmVzcyBzYXZlIGJ1dHRvbg0KKwkgKiANCisJICogQHBhcmFtIHRhcmdldA0KKwkgKiBAcGFyYW0gZm9ybQ0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgb25TYXZlU3VibWl0KEFqYXhSZXF1ZXN0VGFyZ2V0IHRhcmdldCwgRm9ybTw/PiBmb3JtKSB7DQorCX0NCisJDQorCS8qKg0KKwkgKiBpbnZva2VkIHdoZW4gc2F2ZSBoYXMgZXJyb3INCisJICogDQorCSAqIEBwYXJhbSB0YXJnZXQNCisJICogQHBhcmFtIGZvcm0NCisJICovDQorCXByb3RlY3RlZCB2b2lkIG9uU2F2ZUVycm9yKEFqYXhSZXF1ZXN0VGFyZ2V0IHRhcmdldCwgRm9ybTw/PiBmb3JtKSB7DQorCX0NCisJDQorCS8qKg0KKwkgKiBpbnZva2VkIHdoZW4gbmV3IGJ1dHRvbiBpcyBwcmVzc2VkDQorCSAqIA0KKwkgKiBAcGFyYW0gdGFyZ2V0DQorCSAqIEBwYXJhbSBmb3JtDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBvbk5ld1N1Ym1pdChBamF4UmVxdWVzdFRhcmdldCB0YXJnZXQsIEZvcm08Pz4gZm9ybSkgew0KKwl9DQorCQ0KKwkvKioNCisJICogaW52b2tlZCBpZiBuZXcgaGFzIGVycm9yDQorCSAqIA0KKwkgKiBAcGFyYW0gdGFyZ2V0DQorCSAqIEBwYXJhbSBmb3JtDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBvbk5ld0Vycm9yKEFqYXhSZXF1ZXN0VGFyZ2V0IHRhcmdldCwgRm9ybTw/PiBmb3JtKSB7DQorCX0NCisJDQorCS8qKg0KKwkgKiBpbnZva2VkIHdoZW4gcmVmcmVzaCBidXR0b24gaXMgcHJlc3NlZA0KKwkgKiANCisJICogQHBhcmFtIHRhcmdldA0KKwkgKiBAcGFyYW0gZm9ybQ0KKwkgKi8NCisJcHJvdGVjdGVkIHZvaWQgb25SZWZyZXNoU3VibWl0KEFqYXhSZXF1ZXN0VGFyZ2V0IHRhcmdldCwgRm9ybTw/PiBmb3JtKSB7DQorCX0NCisJDQorCS8qKg0KKwkgKiBpbnZva2VkIHdoZW4gcmVmcmVzaCBoYXMgZXJyb3INCisJICogDQorCSAqIEBwYXJhbSB0YXJnZXQNCisJICogQHBhcmFtIGZvcm0NCisJICovDQorCXByb3RlY3RlZCB2b2lkIG9uUmVmcmVzaEVycm9yKEFqYXhSZXF1ZXN0VGFyZ2V0IHRhcmdldCwgRm9ybTw/PiBmb3JtKSB7DQorCX0NCisJDQorCS8qKg0KKwkgKiBpbnZva2VkIHdoZW4gZGVsZXRlIGJ1dHRvbiBpcyBwcmVzc2VkDQorCSAqIA0KKwkgKiBAcGFyYW0gdGFyZ2V0DQorCSAqIEBwYXJhbSBmb3JtDQorCSAqLw0KKwlwcm90ZWN0ZWQgdm9pZCBvbkRlbGV0ZVN1Ym1pdChBamF4UmVxdWVzdFRhcmdldCB0YXJnZXQsIEZvcm08Pz4gZm9ybSkgew0KKwl9DQorCQ0KKwkvKioNCisJICogaW52b2tlZCB3aGVuIGRlbGV0ZSBoYXMgZXJyb3INCisJICogDQorCSAqIEBwYXJhbSB0YXJnZXQNCisJICogQHBhcmFtIGZvcm0NCisJICovDQorCXByb3RlY3RlZCB2b2lkIG9uRGVsZXRlRXJyb3IoQWpheFJlcXVlc3RUYXJnZXQgdGFyZ2V0LCBGb3JtPD8+IGZvcm0pIHsNCisJfQ0KKwkNCit9DQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL2FkbWluL0FkbWluQmFzZUZvcm1QYW5lbC5odG1sIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL2FkbWluL0FkbWluQmFzZUZvcm1QYW5lbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmNDI5YzcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvYWRtaW4vQWRtaW5CYXNlRm9ybVBhbmVsLmh0bWwKQEAgLTAsMCArMSw0MSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8IS0tDQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICANCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgICAgCSAgDQorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAgDQorLS0+DQorPGh0bWwgeG1sbnM6d2lja2V0PSJodHRwOi8vd2lja2V0LmFwYWNoZS5vcmciPg0KKwk8d2lja2V0OnBhbmVsPg0KKwkJPGRpdiBjbGFzcz0iZm9ybVNhdmVCYXIiPg0KKwkJCTxkaXYgY2xhc3M9ImZvcm1TYXZlQnV0dG9uIj4NCisJCQkJPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IiIgd2lja2V0OmlkPSJhamF4LXNhdmUtYnV0dG9uIiB3aWNrZXQ6b21tZXNzYWdlPSJ0aXRsZToxNDQiIC8+DQorCQkJPC9kaXY+DQorCQkJPGRpdiBjbGFzcz0iZm9ybU5ld0J1dHRvbiI+DQorCQkJCTxpbnB1dCB0eXBlPSJzdWJtaXQiIHZhbHVlPSIiIHdpY2tldDppZD0iYWpheC1uZXctYnV0dG9uIiB3aWNrZXQ6b21tZXNzYWdlPSJ0aXRsZToxNTUiIC8+DQorCQkJPC9kaXY+DQorCQkJPGRpdiBjbGFzcz0iZm9ybVJlZnJlc2hCdXR0b24iPg0KKwkJCQk8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iIiB3aWNrZXQ6aWQ9ImFqYXgtcmVmcmVzaC1idXR0b24iIHdpY2tldDpvbW1lc3NhZ2U9InRpdGxlOjE1NiIgLz4NCisJCQk8L2Rpdj4NCisJCQk8ZGl2IGNsYXNzPSJmb3JtQ2FuY2VsQnV0dG9uIj4NCisJCQkJPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9IiIgd2lja2V0OmlkPSJhamF4LWNhbmNlbC1idXR0b24iIHdpY2tldDpvbW1lc3NhZ2U9InRpdGxlOjE1NyIgLz4NCisJCQk8L2Rpdj4NCisJCQk8c3BhbiB3aWNrZXQ6aWQ9Im5ld1JlY29yZCI+PC9zcGFuPg0KKwkJPC9kaXY+DQorCQk8ZGl2IHdpY2tldDppZD0iZmVlZGJhY2siIGNsYXNzPSJhZG1pbkZvcm1zRmVlZGJhY2tQYW5lbCI+W1sgZmVlZGJhY2sgXV08L2Rpdj4NCisJCTx3aWNrZXQ6Y2hpbGQgLz4NCisJPC93aWNrZXQ6cGFuZWw+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi9BZG1pbkJhc2VGb3JtUGFuZWwuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi9BZG1pbkJhc2VGb3JtUGFuZWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzRhZjU4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL2FkbWluL0FkbWluQmFzZUZvcm1QYW5lbC5qYXZhCkBAIC0wLDAgKzEsMTYwIEBACisvKg0KKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgKiB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5jb21wb25lbnRzLmFkbWluOw0KKw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuYXBwLldlYlNlc3Npb247DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5jb21wb25lbnRzLkNvbmZpcm1DYWxsTGlzdGVuZXI7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LmFqYXguQWpheFJlcXVlc3RUYXJnZXQ7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LmFqYXguYXR0cmlidXRlcy5BamF4UmVxdWVzdEF0dHJpYnV0ZXM7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LmFqYXgubWFya3VwLmh0bWwuZm9ybS5BamF4QnV0dG9uOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5iYXNpYy5MYWJlbDsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuZm9ybS5Gb3JtOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5wYW5lbC5GZWVkYmFja1BhbmVsOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tb2RlbC5Nb2RlbDsNCisNCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQWRtaW5CYXNlRm9ybVBhbmVsPFQ+IGV4dGVuZHMgQWRtaW5QYW5lbCB7DQorCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDgzNjE2MjMxNTkzNzM1MzI1NDNMOw0KKwlwcml2YXRlIExhYmVsIG5ld1JlY29yZDsNCisJDQorCXB1YmxpYyBBZG1pbkJhc2VGb3JtUGFuZWwoU3RyaW5nIGlkLCBmaW5hbCBBZG1pbkJhc2VGb3JtPFQ+IGZvcm0pIHsNCisJCXN1cGVyKGlkKTsNCisNCisJCXNldE91dHB1dE1hcmt1cElkKHRydWUpOw0KKw0KKwkJZmluYWwgRmVlZGJhY2tQYW5lbCBmZWVkYmFjayA9IG5ldyBGZWVkYmFja1BhbmVsKCJmZWVkYmFjayIpOw0KKwkJZmVlZGJhY2suc2V0T3V0cHV0TWFya3VwSWQodHJ1ZSk7DQorCQlhZGQoZmVlZGJhY2spOw0KKwkJbmV3UmVjb3JkID0gbmV3IExhYmVsKCJuZXdSZWNvcmQiLCBNb2RlbC5vZihXZWJTZXNzaW9uLmdldFN0cmluZygzNDRMKSkpOw0KKwkJYWRkKG5ld1JlY29yZC5zZXRWaXNpYmxlKGZhbHNlKS5zZXRPdXRwdXRNYXJrdXBJZCh0cnVlKSk7DQorDQorCQkvLyBhZGQgYSBzYXZlIGJ1dHRvbiB0aGF0IGNhbiBiZSB1c2VkIHRvIHN1Ym1pdCB0aGUgZm9ybSB2aWEgYWpheA0KKwkJYWRkKG5ldyBBamF4QnV0dG9uKCJhamF4LXNhdmUtYnV0dG9uIiwgZm9ybSkgew0KKwkJCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDgzOTgwMzgyMDUwMjI2MDAwNkw7DQorDQorCQkJQE92ZXJyaWRlDQorCQkJcHJvdGVjdGVkIHZvaWQgb25TdWJtaXQoQWpheFJlcXVlc3RUYXJnZXQgdGFyZ2V0LCBGb3JtPD8+IGZvcm0pIHsNCisJCQkJLy8gcmVwYWludCB0aGUgZmVlZGJhY2sgcGFuZWwgc28gdGhhdCBpdCBpcyBoaWRkZW4NCisJCQkJdGFyZ2V0LmFkZChmZWVkYmFjayk7DQorCQkJCW9uU2F2ZVN1Ym1pdCh0YXJnZXQsIGZvcm0pOw0KKwkJCX0NCisNCisJCQlAT3ZlcnJpZGUNCisJCQlwcm90ZWN0ZWQgdm9pZCBvbkVycm9yKEFqYXhSZXF1ZXN0VGFyZ2V0IHRhcmdldCwgRm9ybTw/PiBmb3JtKSB7DQorCQkJCS8vIHJlcGFpbnQgdGhlIGZlZWRiYWNrIHBhbmVsIHNvIGVycm9ycyBhcmUgc2hvd24NCisJCQkJdGFyZ2V0LmFkZChmZWVkYmFjayk7DQorCQkJCW9uU2F2ZUVycm9yKHRhcmdldCwgZm9ybSk7DQorCQkJfQ0KKwkJfSk7DQorDQorCQkvLyBhZGQgYSBuZXcgYnV0dG9uIHRoYXQgY2FuIGJlIHVzZWQgdG8gc3VibWl0IHRoZSBmb3JtIHZpYSBhamF4DQorCQlhZGQobmV3IEFqYXhCdXR0b24oImFqYXgtbmV3LWJ1dHRvbiIsIGZvcm0pIHsNCisJCQlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSA4Mzk4MDM4MjA1MDIyNjAwMDZMOw0KKw0KKwkJCUBPdmVycmlkZQ0KKwkJCXByb3RlY3RlZCB2b2lkIG9uU3VibWl0KEFqYXhSZXF1ZXN0VGFyZ2V0IHRhcmdldCwgRm9ybTw/PiBmb3JtKSB7DQorCQkJCS8vIHJlcGFpbnQgdGhlIGZlZWRiYWNrIHBhbmVsIHNvIHRoYXQgaXQgaXMgaGlkZGVuDQorCQkJCXRhcmdldC5hZGQoZmVlZGJhY2spOw0KKwkJCQluZXdSZWNvcmQuc2V0VmlzaWJsZSh0cnVlKTsNCisJCQkJdGFyZ2V0LmFkZChuZXdSZWNvcmQpOw0KKwkJCQlvbk5ld1N1Ym1pdCh0YXJnZXQsIGZvcm0pOw0KKwkJCX0NCisNCisJCQlAT3ZlcnJpZGUNCisJCQlwcm90ZWN0ZWQgdm9pZCBvbkVycm9yKEFqYXhSZXF1ZXN0VGFyZ2V0IHRhcmdldCwgRm9ybTw/PiBmb3JtKSB7DQorCQkJCS8vIHJlcGFpbnQgdGhlIGZlZWRiYWNrIHBhbmVsIHNvIGVycm9ycyBhcmUgc2hvd24NCisJCQkJdGFyZ2V0LmFkZChmZWVkYmFjayk7DQorCQkJCW9uTmV3RXJyb3IodGFyZ2V0LCBmb3JtKTsNCisJCQl9DQorCQl9KTsNCisNCisJCS8vIGFkZCBhIHJlZnJlc2ggYnV0dG9uIHRoYXQgY2FuIGJlIHVzZWQgdG8gc3VibWl0IHRoZSBmb3JtIHZpYSBhamF4DQorCQlhZGQobmV3IEFqYXhCdXR0b24oImFqYXgtcmVmcmVzaC1idXR0b24iLCBmb3JtKSB7DQorCQkJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gODM5ODAzODIwNTAyMjYwMDA2TDsNCisNCisJCQlAT3ZlcnJpZGUNCisJCQlwcm90ZWN0ZWQgdm9pZCBvblN1Ym1pdChBamF4UmVxdWVzdFRhcmdldCB0YXJnZXQsIEZvcm08Pz4gZm9ybSkgew0KKwkJCQkvLyByZXBhaW50IHRoZSBmZWVkYmFjayBwYW5lbCBzbyB0aGF0IGl0IGlzIGhpZGRlbg0KKwkJCQl0YXJnZXQuYWRkKGZlZWRiYWNrKTsNCisJCQkJaGlkZU5ld1JlY29yZCgpOw0KKwkJCQlvblJlZnJlc2hTdWJtaXQodGFyZ2V0LCBmb3JtKTsNCisJCQl9DQorDQorCQkJQE92ZXJyaWRlDQorCQkJcHJvdGVjdGVkIHZvaWQgb25FcnJvcihBamF4UmVxdWVzdFRhcmdldCB0YXJnZXQsIEZvcm08Pz4gZm9ybSkgew0KKwkJCQkvLyByZXBhaW50IHRoZSBmZWVkYmFjayBwYW5lbCBzbyBlcnJvcnMgYXJlIHNob3duDQorCQkJCXRhcmdldC5hZGQoZmVlZGJhY2spOw0KKwkJCQloaWRlTmV3UmVjb3JkKCk7DQorCQkJCW9uUmVmcmVzaEVycm9yKHRhcmdldCwgZm9ybSk7DQorCQkJfQ0KKwkJfSk7DQorDQorCQkvLyBhZGQgYSBjYW5jZWwgYnV0dG9uIHRoYXQgY2FuIGJlIHVzZWQgdG8gc3VibWl0IHRoZSBmb3JtIHZpYSBhamF4DQorCQlhZGQobmV3IEFqYXhCdXR0b24oImFqYXgtY2FuY2VsLWJ1dHRvbiIsIGZvcm0pIHsNCisJCQlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSA4Mzk4MDM4MjA1MDIyNjAwMDZMOw0KKw0KKwkJCUBPdmVycmlkZQ0KKwkJCXByb3RlY3RlZCB2b2lkIHVwZGF0ZUFqYXhBdHRyaWJ1dGVzKEFqYXhSZXF1ZXN0QXR0cmlidXRlcyBhdHRyaWJ1dGVzKSB7DQorCQkJCXN1cGVyLnVwZGF0ZUFqYXhBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpOw0KKwkJCQlhdHRyaWJ1dGVzLmdldEFqYXhDYWxsTGlzdGVuZXJzKCkuYWRkKG5ldyBDb25maXJtQ2FsbExpc3RlbmVyKDgzM0wpKTsNCisJCQl9DQorCQkJDQorCQkJQE92ZXJyaWRlDQorCQkJcHJvdGVjdGVkIHZvaWQgb25TdWJtaXQoQWpheFJlcXVlc3RUYXJnZXQgdGFyZ2V0LCBGb3JtPD8+IGZvcm0pIHsNCisJCQkJLy8gcmVwYWludCB0aGUgZmVlZGJhY2sgcGFuZWwgc28gdGhhdCBpdCBpcyBoaWRkZW4NCisJCQkJdGFyZ2V0LmFkZChmZWVkYmFjayk7DQorCQkJCWhpZGVOZXdSZWNvcmQoKTsNCisJCQkJb25EZWxldGVTdWJtaXQodGFyZ2V0LCBmb3JtKTsNCisJCQl9DQorDQorCQkJQE92ZXJyaWRlDQorCQkJcHJvdGVjdGVkIHZvaWQgb25FcnJvcihBamF4UmVxdWVzdFRhcmdldCB0YXJnZXQsIEZvcm08Pz4gZm9ybSkgew0KKwkJCQkvLyByZXBhaW50IHRoZSBmZWVkYmFjayBwYW5lbCBzbyBlcnJvcnMgYXJlIHNob3duDQorCQkJCXRhcmdldC5hZGQoZmVlZGJhY2spOw0KKwkJCQloaWRlTmV3UmVjb3JkKCk7DQorCQkJCW9uRGVsZXRlRXJyb3IodGFyZ2V0LCBmb3JtKTsNCisJCQl9DQorCQl9KTsNCisJfQ0KKwkNCisJLyoqDQorCSAqIEhpZGUgdGhlIG5ldyByZWNvcmQgdGV4dA0KKwkgKi8NCisJcHVibGljIHZvaWQgaGlkZU5ld1JlY29yZCgpIHsNCisJCW5ld1JlY29yZC5zZXRWaXNpYmxlKGZhbHNlKTsNCisJfQ0KKwkNCisJLyoqDQorCSAqIEhpZGUgdGhlIG5ldyByZWNvcmQgdGV4dA0KKwkgKi8NCisJcHVibGljIHZvaWQgc2hvd05ld1JlY29yZCgpIHsNCisJCW5ld1JlY29yZC5zZXRWaXNpYmxlKHRydWUpOw0KKwl9DQorDQorCXByb3RlY3RlZCBhYnN0cmFjdCB2b2lkIG9uU2F2ZVN1Ym1pdChBamF4UmVxdWVzdFRhcmdldCB0YXJnZXQsIEZvcm08Pz4gZm9ybSk7DQorCXByb3RlY3RlZCBhYnN0cmFjdCB2b2lkIG9uU2F2ZUVycm9yKEFqYXhSZXF1ZXN0VGFyZ2V0IHRhcmdldCwgRm9ybTw/PiBmb3JtKTsNCisNCisJcHJvdGVjdGVkIGFic3RyYWN0IHZvaWQgb25OZXdTdWJtaXQoQWpheFJlcXVlc3RUYXJnZXQgdGFyZ2V0LCBGb3JtPD8+IGZvcm0pOw0KKwlwcm90ZWN0ZWQgYWJzdHJhY3Qgdm9pZCBvbk5ld0Vycm9yKEFqYXhSZXF1ZXN0VGFyZ2V0IHRhcmdldCwgRm9ybTw/PiBmb3JtKTsNCisJDQorCXByb3RlY3RlZCBhYnN0cmFjdCB2b2lkIG9uUmVmcmVzaFN1Ym1pdChBamF4UmVxdWVzdFRhcmdldCB0YXJnZXQsIEZvcm08Pz4gZm9ybSk7DQorCXByb3RlY3RlZCBhYnN0cmFjdCB2b2lkIG9uUmVmcmVzaEVycm9yKEFqYXhSZXF1ZXN0VGFyZ2V0IHRhcmdldCwgRm9ybTw/PiBmb3JtKTsNCisJDQorCXByb3RlY3RlZCBhYnN0cmFjdCB2b2lkIG9uRGVsZXRlU3VibWl0KEFqYXhSZXF1ZXN0VGFyZ2V0IHRhcmdldCwgRm9ybTw/PiBmb3JtKTsNCisJcHJvdGVjdGVkIGFic3RyYWN0IHZvaWQgb25EZWxldGVFcnJvcihBamF4UmVxdWVzdFRhcmdldCB0YXJnZXQsIEZvcm08Pz4gZm9ybSk7DQorfQ0KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi9BZG1pblBhZ2luZ05hdmlnYXRvci5odG1sIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL2FkbWluL0FkbWluUGFnaW5nTmF2aWdhdG9yLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDMyMjFmMQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi9BZG1pblBhZ2luZ05hdmlnYXRvci5odG1sCkBAIC0wLDAgKzEsMjggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04IiA/Pg0KKzwhLS0NCisgICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lIG9yIG1vcmUNCisgICBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlIGRpc3RyaWJ1dGVkIHdpdGgNCisgICB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuDQorICAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUgdG8gWW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjANCisgICAodGhlICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aA0KKyAgIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorDQorICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisNCisgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorLS0+DQorPGh0bWwgeG1sbnM6d2lja2V0PSJodHRwOi8vd2lja2V0LmFwYWNoZS5vcmciPg0KKwk8d2lja2V0OnBhbmVsPg0KKwkgICAgPGEgd2lja2V0OmlkPSJmaXJzdCIgY2xhc3M9ImZpcnN0Ij48L2E+DQorCSAgICA8YSB3aWNrZXQ6aWQ9InByZXYiIGNsYXNzPSJwcmV2Ij48L2E+DQorCSAgICA8c3BhbiB3aWNrZXQ6aWQ9Im5hdmlnYXRpb24iIGNsYXNzPSJnb3RvIj4NCisJICAgICAgICA8YSB3aWNrZXQ6aWQ9InBhZ2VMaW5rIiBocmVmPSIjIj48c3BhbiB3aWNrZXQ6aWQ9InBhZ2VOdW1iZXIiPjU8L3NwYW4+PC9hPg0KKwkgICAgPC9zcGFuPg0KKwkgICAgPGEgd2lja2V0OmlkPSJuZXh0IiBjbGFzcz0ibmV4dCI+PC9hPg0KKwkgICAgPGEgd2lja2V0OmlkPSJsYXN0IiBjbGFzcz0ibGFzdCI+PC9hPg0KKwk8L3dpY2tldDpwYW5lbD4NCis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL2FkbWluL0FkbWluUGFnaW5nTmF2aWdhdG9yLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvYWRtaW4vQWRtaW5QYWdpbmdOYXZpZ2F0b3IuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NjlhNTY5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL2FkbWluL0FkbWluUGFnaW5nTmF2aWdhdG9yLmphdmEKQEAgLTAsMCArMSwzMiBAQAorLyoNCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICogdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuY29tcG9uZW50cy5hZG1pbjsNCisNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQuYWpheC5tYXJrdXAuaHRtbC5uYXZpZ2F0aW9uLnBhZ2luZy5BamF4UGFnaW5nTmF2aWdhdG9yOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5uYXZpZ2F0aW9uLnBhZ2luZy5JUGFnZWFibGU7DQorDQorcHVibGljIGNsYXNzIEFkbWluUGFnaW5nTmF2aWdhdG9yIGV4dGVuZHMgQWpheFBhZ2luZ05hdmlnYXRvciB7DQorDQorCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDFMOw0KKwkNCisJcHVibGljIEFkbWluUGFnaW5nTmF2aWdhdG9yKFN0cmluZyBpZCwgSVBhZ2VhYmxlIHBhZ2VhYmxlKSB7DQorCQlzdXBlcihpZCwgcGFnZWFibGUpOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi9BZG1pblBhbmVsLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvYWRtaW4vQWRtaW5QYW5lbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3YmI0MTQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvYWRtaW4vQWRtaW5QYW5lbC5qYXZhCkBAIC0wLDAgKzEsMzEgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmNvbXBvbmVudHMuYWRtaW47CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuY29tcG9uZW50cy5CYXNlUGFuZWw7CitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQuYXV0aHJvbGVzLmF1dGhvcml6YXRpb24uc3RyYXRlZ2llcy5yb2xlLmFubm90YXRpb25zLkF1dGhvcml6ZUluc3RhbnRpYXRpb247CisKK0BBdXRob3JpemVJbnN0YW50aWF0aW9uKCJBRE1JTiIpCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgQWRtaW5QYW5lbCBleHRlbmRzIEJhc2VQYW5lbCB7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gNjgxMTI0MzQ3NDM2MTgwMzI3OUw7CisKKwlwdWJsaWMgQWRtaW5QYW5lbChTdHJpbmcgaWQpIHsKKwkJc3VwZXIoaWQpOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi9QYWdlZEVudGl0eUxpc3RQYW5lbC5odG1sIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL2FkbWluL1BhZ2VkRW50aXR5TGlzdFBhbmVsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzIxMTNkYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi9QYWdlZEVudGl0eUxpc3RQYW5lbC5odG1sCkBAIC0wLDAgKzEsMzIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8aHRtbCB4bWxuczp3aWNrZXQ9Imh0dHA6Ly93aWNrZXQuYXBhY2hlLm9yZyI+CisJPHdpY2tldDpwYW5lbD4KKwkJPGZvcm0gd2lja2V0OmlkPSJwYWdpbmdGb3JtIiBjbGFzcz0icGFnZWRFbnRpdHlMaXN0UGFuZWwiPgorCQkJPHNlbGVjdCB3aWNrZXQ6aWQ9ImVudGl0aWVzUGVyUGFnZSI+PC9zZWxlY3Q+CisJCQk8c3BhbiB3aWNrZXQ6aWQ9Im5hdmlnYXRvciI+W2RhdGF2aWV3IG5hdmlnYXRvcl08L3NwYW4+CisJCTwvZm9ybT4KKwkJPGZvcm0gd2lja2V0OmlkPSJzZWFyY2hGb3JtIiBjbGFzcz0ic2VhcmNoRm9ybSI+CisJCQk8aW5wdXQgdHlwZT0idGV4dCIgd2lja2V0OmlkPSJzZWFyY2hUZXh0IiB3aWNrZXQ6b21tZXNzYWdlPSJ0aXRsZTo3MTQiLz4KKwkJCTxpbnB1dCB0eXBlPSJzdWJtaXQiIHdpY2tldDppZD0ic2VhcmNoIiB3aWNrZXQ6b21tZXNzYWdlPSJ2YWx1ZTo3MTUiLz4KKwkJPC9mb3JtPgorCTwvd2lja2V0OnBhbmVsPgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi9QYWdlZEVudGl0eUxpc3RQYW5lbC5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL2FkbWluL1BhZ2VkRW50aXR5TGlzdFBhbmVsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWM3ZjcwZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi9QYWdlZEVudGl0eUxpc3RQYW5lbC5qYXZhCkBAIC0wLDAgKzEsNzcgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmNvbXBvbmVudHMuYWRtaW47CisKK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOworaW1wb3J0IGphdmEudXRpbC5MaXN0OworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuSURhdGFQcm92aWRlckVudGl0eTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuZGF0YS5TZWFyY2hhYmxlRGF0YVByb3ZpZGVyOworaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LmFqYXguQWpheFJlcXVlc3RUYXJnZXQ7CitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQuYWpheC5mb3JtLkFqYXhGb3JtQ29tcG9uZW50VXBkYXRpbmdCZWhhdmlvcjsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5hamF4Lm1hcmt1cC5odG1sLmZvcm0uQWpheEJ1dHRvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5mb3JtLkRyb3BEb3duQ2hvaWNlOworaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5odG1sLmZvcm0uRm9ybTsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5mb3JtLlRleHRGaWVsZDsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tb2RlbC5Qcm9wZXJ0eU1vZGVsOworCitwdWJsaWMgYWJzdHJhY3QgY2xhc3MgUGFnZWRFbnRpdHlMaXN0UGFuZWwgZXh0ZW5kcyBBZG1pblBhbmVsIHsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAtNDI4MDg0MzE4NDkxNjMwMjY3MUw7CisJcHJpdmF0ZSBpbnQgZW50aXRpZXNQZXJQYWdlID0gNTA7CisJcHJpdmF0ZSBMaXN0PEludGVnZXI+IG51bWJlcnMgPSBBcnJheXMuYXNMaXN0KDEwLCAyNSwgNTAsIDc1LCAxMDAsIDIwMCk7CisJCisJcHVibGljIFBhZ2VkRW50aXR5TGlzdFBhbmVsKFN0cmluZyBpZCwgZmluYWwgU2VhcmNoYWJsZURhdGFWaWV3PD8gZXh0ZW5kcyBJRGF0YVByb3ZpZGVyRW50aXR5PiBkYXRhVmlldykgeworCQlzdXBlcihpZCk7CisJCQorCQlkYXRhVmlldy5zZXRJdGVtc1BlclBhZ2UoZW50aXRpZXNQZXJQYWdlKTsKKwkJZmluYWwgRm9ybTxWb2lkPiBmID0gbmV3IEZvcm08Vm9pZD4oInBhZ2luZ0Zvcm0iKTsKKworCQlmLmFkZChuZXcgQWRtaW5QYWdpbmdOYXZpZ2F0b3IoIm5hdmlnYXRvciIsIGRhdGFWaWV3KS5zZXRPdXRwdXRNYXJrdXBJZCh0cnVlKSkKKwkJCS5hZGQobmV3IERyb3BEb3duQ2hvaWNlPEludGVnZXI+KCJlbnRpdGllc1BlclBhZ2UiLCBuZXcgUHJvcGVydHlNb2RlbDxJbnRlZ2VyPih0aGlzLCAiZW50aXRpZXNQZXJQYWdlIiksIG51bWJlcnMpCisJCQkJLmFkZChuZXcgQWpheEZvcm1Db21wb25lbnRVcGRhdGluZ0JlaGF2aW9yKCJvbmNoYW5nZSIpIHsKKwkJCQkJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gLTc3NTQ0NDE5ODMzMzAxMTIyNDhMOworCisJCQkJCUBPdmVycmlkZQorCQkJCQlwcm90ZWN0ZWQgdm9pZCBvblVwZGF0ZShBamF4UmVxdWVzdFRhcmdldCB0YXJnZXQpIHsKKwkJCQkJCWxvbmcgbmV3UGFnZSA9IGRhdGFWaWV3LmdldEN1cnJlbnRQYWdlKCkgKiBkYXRhVmlldy5nZXRJdGVtc1BlclBhZ2UoKSAvIGVudGl0aWVzUGVyUGFnZTsKKwkJCQkJCWRhdGFWaWV3LnNldEl0ZW1zUGVyUGFnZShlbnRpdGllc1BlclBhZ2UpOworCQkJCQkJZGF0YVZpZXcuc2V0Q3VycmVudFBhZ2UobmV3UGFnZSk7CisJCQkJCQl0YXJnZXQuYWRkKGYpOworCQkJCQkJUGFnZWRFbnRpdHlMaXN0UGFuZWwudGhpcy5vbkV2ZW50KHRhcmdldCk7CisJCQkJCX0KKwkJCQl9KSk7CisJCQorCQlmaW5hbCBTZWFyY2hhYmxlRGF0YVByb3ZpZGVyPD8gZXh0ZW5kcyBJRGF0YVByb3ZpZGVyRW50aXR5PiBkcCA9IGRhdGFWaWV3LmdldERhdGFQcm92aWRlcigpOworCQlGb3JtPFZvaWQ+IHNlYXJjaEZvcm0gPSBuZXcgRm9ybTxWb2lkPigic2VhcmNoRm9ybSIpOworCQlhZGQoc2VhcmNoRm9ybS5zZXRPdXRwdXRNYXJrdXBJZCh0cnVlKSk7CisJCXNlYXJjaEZvcm0uYWRkKG5ldyBUZXh0RmllbGQ8U3RyaW5nPigic2VhcmNoVGV4dCIsIG5ldyBQcm9wZXJ0eU1vZGVsPFN0cmluZz4oZHAsICJzZWFyY2giKSkuc2V0T3V0cHV0TWFya3VwSWQodHJ1ZSkpOworCQlzZWFyY2hGb3JtLmFkZChuZXcgQWpheEJ1dHRvbigic2VhcmNoIiwgc2VhcmNoRm9ybSkgeworCQkJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gLTE2NTkwMjMzMzc5NDU2OTI4MTRMOworCisJCQlAT3ZlcnJpZGUKKwkJCXByb3RlY3RlZCB2b2lkIG9uU3VibWl0KEFqYXhSZXF1ZXN0VGFyZ2V0IHRhcmdldCwgRm9ybTw/PiBmb3JtKSB7CisJCQkJdGFyZ2V0LmFkZChmKTsKKwkJCQlQYWdlZEVudGl0eUxpc3RQYW5lbC50aGlzLm9uRXZlbnQodGFyZ2V0KTsKKwkJCX0KKwkJfSk7CisJCWFkZChmLnNldE91dHB1dE1hcmt1cElkKHRydWUpKTsKKwl9CisKKwlwcm90ZWN0ZWQgYWJzdHJhY3Qgdm9pZCBvbkV2ZW50KEFqYXhSZXF1ZXN0VGFyZ2V0IHRhcmdldCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvYWRtaW4vU2VhcmNoYWJsZURhdGFWaWV3LmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvYWRtaW4vU2VhcmNoYWJsZURhdGFWaWV3LmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGFiMDA0MQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi9TZWFyY2hhYmxlRGF0YVZpZXcuamF2YQpAQCAtMCwwICsxLDQ1IEBACisvKg0KKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgKiB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5jb21wb25lbnRzLmFkbWluOw0KKw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5JRGF0YVByb3ZpZGVyRW50aXR5Ow0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuZGF0YS5TZWFyY2hhYmxlRGF0YVByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAucmVwZWF0ZXIuZGF0YS5EYXRhVmlldzsNCisNCisvKioNCisgKiBQcm92aWRlcyB7QGxpbmsgU2VhcmNoYWJsZURhdGFQcm92aWRlcn0NCisgKiANCisgKiBAYXV0aG9yIHN3YWduZXINCisgKiANCisgKiBAcGFyYW0gPFQ+DQorICovDQorcHVibGljIGFic3RyYWN0IGNsYXNzIFNlYXJjaGFibGVEYXRhVmlldzxUIGV4dGVuZHMgSURhdGFQcm92aWRlckVudGl0eT4gZXh0ZW5kcyBEYXRhVmlldzxUPiB7DQorCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IC02MjUxNjQ0NDEwMzg1Nzg5NDA5TDsNCisJcHJpdmF0ZSBTZWFyY2hhYmxlRGF0YVByb3ZpZGVyPFQ+IGRwOw0KKwkNCisJcHVibGljIFNlYXJjaGFibGVEYXRhVmlldyhTdHJpbmcgaWQsIFNlYXJjaGFibGVEYXRhUHJvdmlkZXI8VD4gZHApIHsNCisJCXN1cGVyKGlkLCBkcCk7DQorCQl0aGlzLmRwID0gZHA7DQorCX0NCisJDQorCUBPdmVycmlkZQ0KKwlwdWJsaWMgU2VhcmNoYWJsZURhdGFQcm92aWRlcjxUPiBnZXREYXRhUHJvdmlkZXIoKSB7DQorCQlyZXR1cm4gZHA7DQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL2FkbWluL2JhY2t1cC9CYWNrdXBQYW5lbC5odG1sIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL2FkbWluL2JhY2t1cC9CYWNrdXBQYW5lbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5OTIzMDEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvYWRtaW4vYmFja3VwL0JhY2t1cFBhbmVsLmh0bWwKQEAgLTAsMCArMSw1OSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxodG1sIHhtbG5zOndpY2tldD0iaHR0cDovL3dpY2tldC5hcGFjaGUub3JnIj4KKwk8d2lja2V0OnBhbmVsPgorCQk8ZGl2PgorCSAgICAgICAgPHNwYW4gd2lja2V0OmlkPSJ1cGxvYWRGZWVkYmFjayIvPgorCSAgICAgPC9kaXY+CisJCTwhLS0gd2lja2V0OmlkPSJmb3JtIiAgLS0+CisJCTxmb3JtIHdpY2tldDppZD0iYmFja3VwVXBsb2FkIiBjbGFzcz0iYWRtaW5Gb3JtIGFkbWluQmFja3VwRm9ybSI+CisJCQk8ZmllbGRzZXQ+CisJCQkJPGxlZ2VuZD48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjEwNjYiIC8+PC9sZWdlbmQ+CisJCQkJPGRpdiBjbGFzcz0iZm9ybWVsZW1lbnQiPgorCQkJCSAgICA8ZGl2IGNsYXNzPSJpbmZvLWljb24iIC8+PHNwYW4gc3R5bGU9ImZvbnQtc3R5bGU6IGl0YWxpYzsiPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMTA2NSIgLz48L3NwYW4+CisJICAgICAgICAgICAgPC9kaXY+CisJICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybWVsZW1lbnQiPgorICAgICAgICAgICAgICAgICAgIDxsYWJlbD48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjE1MzciIC8+PC9sYWJlbD4gPGlucHV0IHR5cGU9ImNoZWNrYm94IiB3aWNrZXQ6aWQ9ImluY2x1ZGVGaWxlc0luQmFja3VwIiAvPgorCSAgICAgICAgICAgIDwvZGl2PgorCSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm1lbGVtZW50Ij4KKwkgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9InVwbG9hZEZpbGVGaWVsZCIgd2lja2V0OmlkPSJmaWxlSW5wdXQiIHR5cGU9ImZpbGUiLz4KKwkgICAgICAgICAgICA8L2Rpdj4KKwkgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtZWxlbWVudCI+CisJICAgICAgICAgICAgICAgPHNwYW4gd2lja2V0OmlkPSJwcm9ncmVzcyI+W1t1cGxvYWQgcHJvZ3Jlc3NiYXJdXTwvc3Bhbj4KKwkgICAgICAgICAgICA8L2Rpdj4KKwkgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtZWxlbWVudCI+CisJCSAgICAgICAgICAgIDwhLS0gUGVyZm9ybSBEb3dubG9hZCAtLT4KKwkJCQkJPGlucHV0IHR5cGU9InN1Ym1pdCIgd2lja2V0Om9tbWVzc2FnZT0idmFsdWU6MTUzNiIgd2lja2V0OmlkPSJ1cGxvYWQiIC8+CisJCQkJCTwhLS0gUGVyZm9ybSBVcGxvYWQgLS0+CisJCQkJCTxpbnB1dCB0eXBlPSJzdWJtaXQiIHdpY2tldDpvbW1lc3NhZ2U9InZhbHVlOjEwNjYiIHdpY2tldDppZD0iZG93bmxvYWQiIC8+CisJICAgICAgICAgICAgPC9kaXY+CisJICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybWVsZW1lbnQiPgorCQkgICAgICAgICAgICA8IS0tIE1heCB1cGxvYWQgc2l6ZSAtLT4KKwkJICAgICAgICAgICAgPHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIxNDkxIiAvPiA8c3BhbiB3aWNrZXQ6aWQ9Ik1heFVwbG9hZFNpemUiIC8+PHNwYW4+TUI8L3NwYW4+CisJICAgICAgICAgICAgPC9kaXY+CisJICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybWVsZW1lbnQiPgorCQkgICAgICAgICAgICA8IS0tIEJhY2t1cCBDTEkgaW1wb3J0IGluZm9ybWF0aW9uIC0tPgorCSAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImluZm8taWNvbiIgLz48c3BhbiBzdHlsZT0iZm9udC1zdHlsZTogaXRhbGljOyI+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIxNTA1IiAvPjwvc3Bhbj4KKwkgICAgICAgICAgICA8L2Rpdj4KKwkgICAgICAgIDwvZmllbGRzZXQ+CisJCTwvZm9ybT4KKwk8L3dpY2tldDpwYW5lbD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi9iYWNrdXAvQmFja3VwUGFuZWwuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi9iYWNrdXAvQmFja3VwUGFuZWwuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZWU5MDQ4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL2FkbWluL2JhY2t1cC9CYWNrdXBQYW5lbC5qYXZhCkBAIC0wLDAgKzEsMjA0IEBACisvKg0KKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgKiB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5jb21wb25lbnRzLmFkbWluLmJhY2t1cDsNCisNCitpbXBvcnQgamF2YS5pby5GaWxlOw0KK2ltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOw0KK2ltcG9ydCBqYXZhLnRleHQuRGVjaW1hbEZvcm1hdDsNCitpbXBvcnQgamF2YS51dGlsLkRhdGU7DQorDQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5kYW8uQ29uZmlndXJhdGlvbkRhbzsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2VydmxldC5vdXRwdXRoYW5kbGVyLkJhY2t1cEV4cG9ydDsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2VydmxldC5vdXRwdXRoYW5kbGVyLkJhY2t1cEltcG9ydENvbnRyb2xsZXI7DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnV0aWxzLkltcG9ydEhlbHBlcjsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MudXRpbHMuT21GaWxlSGVscGVyOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5tYXRoLkNhbGVuZGFyUGF0dGVybnM7DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5hcHAuQXBwbGljYXRpb247DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5jb21wb25lbnRzLmFkbWluLkFkbWluUGFuZWw7DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi51dGlsLkFqYXhEb3dubG9hZDsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQuYWpheC5BamF4UmVxdWVzdFRhcmdldDsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQuYWpheC5tYXJrdXAuaHRtbC5mb3JtLkFqYXhCdXR0b247DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LmV4dGVuc2lvbnMuYWpheC5tYXJrdXAuaHRtbC5mb3JtLnVwbG9hZC5VcGxvYWRQcm9ncmVzc0JhcjsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuYmFzaWMuTGFiZWw7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5odG1sLmZvcm0uQ2hlY2tCb3g7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5odG1sLmZvcm0uRm9ybTsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuZm9ybS51cGxvYWQuRmlsZVVwbG9hZDsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuZm9ybS51cGxvYWQuRmlsZVVwbG9hZEZpZWxkOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5wYW5lbC5GZWVkYmFja1BhbmVsOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tb2RlbC5Nb2RlbDsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQudXRpbC5sYW5nLkJ5dGVzOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC51dGlsLnJlc291cmNlLkZpbGVSZXNvdXJjZVN0cmVhbTsNCitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsNCitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsNCisNCisvKioNCisgKiBQYW5lbCBjb21wb25lbnQgdG8gbWFuYWdlIEJhY2t1cCBJbXBvcnQvRXhwb3J0DQorICogDQorICogQGF1dGhvciBzd2FnbmVyDQorICogDQorICovDQorcHVibGljIGNsYXNzIEJhY2t1cFBhbmVsIGV4dGVuZHMgQWRtaW5QYW5lbCB7DQorDQorCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoDQorCQkJQmFja3VwUGFuZWwuY2xhc3MsIE9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsNCisNCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gLTFMOw0KKw0KKwkvLyBDcmVhdGUgZmVlZGJhY2sgcGFuZWxzDQorCWZpbmFsIEZlZWRiYWNrUGFuZWwgdXBsb2FkRmVlZGJhY2s7DQorDQorCS8qKg0KKwkgKiBGb3JtIHRvIGhhbmRsZSB1cGxvYWQgZmlsZXMNCisJICogDQorCSAqIEBhdXRob3Igc3dhZ25lcg0KKwkgKiANCisJICovDQorCXByaXZhdGUgY2xhc3MgQmFja3VwRm9ybSBleHRlbmRzIEZvcm08Vm9pZD4gew0KKw0KKwkJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMUw7DQorDQorCQlGaWxlVXBsb2FkRmllbGQgZmlsZVVwbG9hZEZpZWxkOw0KKwkJQ2hlY2tCb3ggaW5jbHVkZUZpbGVzSW5CYWNrdXA7DQorDQorCQlwdWJsaWMgQmFja3VwRm9ybShTdHJpbmcgaWQpIHsNCisJCQlzdXBlcihpZCk7DQorDQorCQkJLy8gc2V0IHRoaXMgZm9ybSB0byBtdWx0aXBhcnQgbW9kZSAoYWxsd2F5cyBuZWVkZWQgZm9yIHVwbG9hZHMhKQ0KKwkJCXNldE11bHRpUGFydCh0cnVlKTsNCisNCisJCQkvLyBzZXQgbWF4IHVwbG9hZCBzaXplIGluIGZvcm0gYXMgaW5mbyB0ZXh0DQorCQkJTG9uZyBtYXhCeXRlcyA9IEltcG9ydEhlbHBlci5nZXRNYXhVcGxvYWRTaXplKEFwcGxpY2F0aW9uDQorCQkJCQkuZ2V0QmVhbihDb25maWd1cmF0aW9uRGFvLmNsYXNzKSk7DQorCQkJZG91YmxlIG1lZ2FCeXRlcyA9IG1heEJ5dGVzLmRvdWJsZVZhbHVlKCkgLyAxMDI0IC8gMTAyNDsNCisJCQlEZWNpbWFsRm9ybWF0IGZvcm1hdHRlciA9IG5ldyBEZWNpbWFsRm9ybWF0KCIjLCMjIy4wMCIpOw0KKwkJCWFkZChuZXcgTGFiZWwoIk1heFVwbG9hZFNpemUiLCBmb3JtYXR0ZXIuZm9ybWF0KG1lZ2FCeXRlcykpKTsNCisNCisJCQkvLyBBZGQgb25lIGZpbGUgaW5wdXQgZmllbGQNCisJCQlmaWxlVXBsb2FkRmllbGQgPSBuZXcgRmlsZVVwbG9hZEZpZWxkKCJmaWxlSW5wdXQiKTsNCisJCQlhZGQoZmlsZVVwbG9hZEZpZWxkKTsNCisNCisJCQlpbmNsdWRlRmlsZXNJbkJhY2t1cCA9IG5ldyBDaGVja0JveCgiaW5jbHVkZUZpbGVzSW5CYWNrdXAiLA0KKwkJCQkJTW9kZWwub2YodHJ1ZSkpOw0KKwkJCWFkZChpbmNsdWRlRmlsZXNJbkJhY2t1cCk7DQorDQorCQkJLy8gU2V0IG1heGltdW0gc2l6ZSBjb250cm9sbGVkIGJ5IGNvbmZpZ3VyYXRpb24NCisJCQlzZXRNYXhTaXplKEJ5dGVzLmJ5dGVzKEltcG9ydEhlbHBlci5nZXRNYXhVcGxvYWRTaXplKEFwcGxpY2F0aW9uDQorCQkJCQkuZ2V0QmVhbihDb25maWd1cmF0aW9uRGFvLmNsYXNzKSkpKTsNCisNCisJCQkvLyBBZGQgYSBjb21wb25lbnQgdG8gZG93bmxvYWQgYSBmaWxlIHdpdGhvdXQgcGFnZSByZWZyZXNoDQorCQkJZmluYWwgQWpheERvd25sb2FkIGRvd25sb2FkID0gbmV3IEFqYXhEb3dubG9hZCgpOw0KKwkJCWFkZChkb3dubG9hZCk7DQorCQkJLy8gYWRkIGFuIGRvd25sb2FkIGJ1dHRvbg0KKwkJCWFkZChuZXcgQWpheEJ1dHRvbigiZG93bmxvYWQiLCB0aGlzKSB7DQorCQkJCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDgzOTgwMzgyMDUwMjI2MDAwNkw7DQorDQorCQkJCUBPdmVycmlkZQ0KKwkJCQlwcm90ZWN0ZWQgdm9pZCBvblN1Ym1pdChBamF4UmVxdWVzdFRhcmdldCB0YXJnZXQsIEZvcm08Pz4gZm9ybSkgew0KKw0KKwkJCQkJRmlsZSB3b3JraW5nX2RpciA9IE9tRmlsZUhlbHBlci5nZXRVcGxvYWRCYWNrdXBEaXIoKTsNCisNCisJCQkJCVN0cmluZyBkYXRlU3RyaW5nID0gImJhY2t1cF8iDQorCQkJCQkJCSsgQ2FsZW5kYXJQYXR0ZXJucy5nZXRUaW1lRm9yU3RyZWFtSWQobmV3IERhdGUoKSk7DQorDQorCQkJCQlGaWxlIGJhY2t1cF9kaXIgPSBuZXcgRmlsZSh3b3JraW5nX2RpciwgZGF0ZVN0cmluZyk7DQorCQkJCQlGaWxlIGJhY2t1cEZpbGUgPSBuZXcgRmlsZShiYWNrdXBfZGlyLCBkYXRlU3RyaW5nICsgIi56aXAiKTsNCisNCisJCQkJCXRyeSB7DQorCQkJCQkJQXBwbGljYXRpb24uZ2V0QmVhbihCYWNrdXBFeHBvcnQuY2xhc3MpLnBlcmZvcm1FeHBvcnQoDQorCQkJCQkJCQliYWNrdXBGaWxlLA0KKwkJCQkJCQkJYmFja3VwX2RpciwNCisJCQkJCQkJCWluY2x1ZGVGaWxlc0luQmFja3VwLmdldENvbnZlcnRlZElucHV0KCkNCisJCQkJCQkJCQkJLmJvb2xlYW5WYWx1ZSgpKTsNCisNCisJCQkJCQlkb3dubG9hZC5zZXRGaWxlTmFtZShiYWNrdXBGaWxlLmdldE5hbWUoKSk7DQorCQkJCQkJZG93bmxvYWQuc2V0UmVzb3VyY2VTdHJlYW0obmV3IEZpbGVSZXNvdXJjZVN0cmVhbSgNCisJCQkJCQkJCWJhY2t1cEZpbGUpKTsNCisJCQkJCQlkb3dubG9hZC5pbml0aWF0ZSh0YXJnZXQpOw0KKwkJCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsNCisJCQkJCQlsb2cuZXJyb3IoIkV4Y2VwdGlvbiBvbiBwYW5lbCBiYWNrdXAgZG93bmxvYWQgIiwgZSk7DQorCQkJCQkJdXBsb2FkRmVlZGJhY2suZXJyb3IoZSk7DQorCQkJCQl9DQorDQorCQkJCQkvLyByZXBhaW50IHRoZSBmZWVkYmFjayBwYW5lbCBzbyB0aGF0IGl0IGlzIGhpZGRlbg0KKwkJCQkJdGFyZ2V0LmFkZCh1cGxvYWRGZWVkYmFjayk7DQorCQkJCX0NCisNCisJCQkJQE92ZXJyaWRlDQorCQkJCXByb3RlY3RlZCB2b2lkIG9uRXJyb3IoQWpheFJlcXVlc3RUYXJnZXQgdGFyZ2V0LCBGb3JtPD8+IGZvcm0pIHsNCisJCQkJCS8vIHJlcGFpbnQgdGhlIGZlZWRiYWNrIHBhbmVsIHNvIGVycm9ycyBhcmUgc2hvd24NCisJCQkJCXRhcmdldC5hZGQodXBsb2FkRmVlZGJhY2spOw0KKwkJCQl9DQorCQkJfSk7DQorDQorCQkJLy8gYWRkIGFuIHVwbG9hZCBidXR0b24NCisJCQlhZGQobmV3IEFqYXhCdXR0b24oInVwbG9hZCIsIHRoaXMpIHsNCisJCQkJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gODM5ODAzODIwNTAyMjYwMDA2TDsNCisNCisJCQkJQE92ZXJyaWRlDQorCQkJCXByb3RlY3RlZCB2b2lkIG9uU3VibWl0KEFqYXhSZXF1ZXN0VGFyZ2V0IHRhcmdldCwgRm9ybTw/PiBmb3JtKSB7DQorCQkJCQlGaWxlVXBsb2FkIHVwbG9hZCA9IGZpbGVVcGxvYWRGaWVsZC5nZXRGaWxlVXBsb2FkKCk7DQorCQkJCQl0cnkgew0KKwkJCQkJCWlmICh1cGxvYWQgPT0gbnVsbCB8fCB1cGxvYWQuZ2V0SW5wdXRTdHJlYW0oKSA9PSBudWxsKSB7DQorCQkJCQkJCXVwbG9hZEZlZWRiYWNrLmVycm9yKCJGaWxlIGlzIGVtcHR5Iik7DQorCQkJCQkJCXJldHVybjsNCisJCQkJCQl9DQorCQkJCQkJQXBwbGljYXRpb24uZ2V0QmVhbihCYWNrdXBJbXBvcnRDb250cm9sbGVyLmNsYXNzKQ0KKwkJCQkJCQkJLnBlcmZvcm1JbXBvcnQodXBsb2FkLmdldElucHV0U3RyZWFtKCkpOw0KKwkJCQkJfSBjYXRjaCAoSU9FeGNlcHRpb24gZSkgew0KKwkJCQkJCWxvZy5lcnJvcigiSU9FeGNlcHRpb24gb24gcGFuZWwgYmFja3VwIHVwbG9hZCAiLCBlKTsNCisJCQkJCQl1cGxvYWRGZWVkYmFjay5lcnJvcihlKTsNCisJCQkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7DQorCQkJCQkJbG9nLmVycm9yKCJFeGNlcHRpb24gb24gcGFuZWwgYmFja3VwIHVwbG9hZCAiLCBlKTsNCisJCQkJCQl1cGxvYWRGZWVkYmFjay5lcnJvcihlKTsNCisJCQkJCX0NCisNCisJCQkJCS8vIHJlcGFpbnQgdGhlIGZlZWRiYWNrIHBhbmVsIHNvIHRoYXQgaXQgaXMgaGlkZGVuDQorCQkJCQl0YXJnZXQuYWRkKHVwbG9hZEZlZWRiYWNrKTsNCisNCisJCQkJfQ0KKw0KKwkJCQlAT3ZlcnJpZGUNCisJCQkJcHJvdGVjdGVkIHZvaWQgb25FcnJvcihBamF4UmVxdWVzdFRhcmdldCB0YXJnZXQsIEZvcm08Pz4gZm9ybSkgew0KKwkJCQkJLy8gcmVwYWludCB0aGUgZmVlZGJhY2sgcGFuZWwgc28gZXJyb3JzIGFyZSBzaG93bg0KKwkJCQkJdGFyZ2V0LmFkZCh1cGxvYWRGZWVkYmFjayk7DQorCQkJCX0NCisJCQl9KTsNCisNCisJCX0NCisNCisJfQ0KKw0KKwlwdWJsaWMgQmFja3VwUGFuZWwoU3RyaW5nIGlkKSB7DQorCQlzdXBlcihpZCk7DQorDQorCQkvLyBDcmVhdGUgZmVlZGJhY2sgcGFuZWxzDQorCQl1cGxvYWRGZWVkYmFjayA9IG5ldyBGZWVkYmFja1BhbmVsKCJ1cGxvYWRGZWVkYmFjayIpOw0KKwkJLy8gU2V0IElkIHNvIHRoYXQgaXQgY2FuIGJlIHJlcGxhY2VkIGR5bmFtaWNhbGx5DQorCQl1cGxvYWRGZWVkYmFjay5zZXRPdXRwdXRNYXJrdXBJZCh0cnVlKTsNCisJCWFkZCh1cGxvYWRGZWVkYmFjayk7DQorDQorCQlCYWNrdXBGb3JtIGJhY2t1cEZvcm0gPSBuZXcgQmFja3VwRm9ybSgiYmFja3VwVXBsb2FkIik7DQorDQorCQliYWNrdXBGb3JtLmFkZChuZXcgVXBsb2FkUHJvZ3Jlc3NCYXIoInByb2dyZXNzIiwgYmFja3VwRm9ybSwNCisJCQkJYmFja3VwRm9ybS5maWxlVXBsb2FkRmllbGQpKTsNCisNCisJCWFkZChiYWNrdXBGb3JtKTsNCisJfQ0KK30NCmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvYWRtaW4vY29uZmlndXJhdGlvbnMvQ29uZmlnRm9ybS5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL2FkbWluL2NvbmZpZ3VyYXRpb25zL0NvbmZpZ0Zvcm0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40N2U4YmY3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL2FkbWluL2NvbmZpZ3VyYXRpb25zL0NvbmZpZ0Zvcm0uamF2YQpAQCAtMCwwICsxLDEwNSBAQAorLyoNCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICogdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuY29tcG9uZW50cy5hZG1pbi5jb25maWd1cmF0aW9uczsNCisNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5kYW8uQ29uZmlndXJhdGlvbkRhbzsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuQ29uZmlndXJhdGlvbjsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmFwcC5BcHBsaWNhdGlvbjsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmFwcC5XZWJTZXNzaW9uOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuY29tcG9uZW50cy5hZG1pbi5BZG1pbkJhc2VGb3JtOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5hamF4LkFqYXhSZXF1ZXN0VGFyZ2V0Ow0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5hamF4LmZvcm0uQWpheEZvcm1WYWxpZGF0aW5nQmVoYXZpb3I7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LmRhdGV0aW1lLm1hcmt1cC5odG1sLmJhc2ljLkRhdGVMYWJlbDsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuV2ViTWFya3VwQ29udGFpbmVyOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5iYXNpYy5MYWJlbDsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuZm9ybS5Gb3JtOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5mb3JtLlJlcXVpcmVkVGV4dEZpZWxkOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5mb3JtLlRleHRBcmVhOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tb2RlbC5Db21wb3VuZFByb3BlcnR5TW9kZWw7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LnV0aWwudGltZS5EdXJhdGlvbjsNCisNCisvKioNCisgKiBIYW5kbGUge0BsaW5rIENvbmZpZ3VyYXRpb259IGl0ZW1zIGFzIGxpc3QgYW5kIGZvcm0NCisgKiANCisgKiBAYXV0aG9yIHN3YWduZXINCisgKiANCisgKi8NCitwdWJsaWMgY2xhc3MgQ29uZmlnRm9ybSBleHRlbmRzIEFkbWluQmFzZUZvcm08Q29uZmlndXJhdGlvbj4gew0KKw0KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAxTDsNCisJcHJpdmF0ZSBmaW5hbCBXZWJNYXJrdXBDb250YWluZXIgbGlzdENvbnRhaW5lcjsNCisNCisJcHVibGljIENvbmZpZ0Zvcm0oU3RyaW5nIGlkLCBXZWJNYXJrdXBDb250YWluZXIgbGlzdENvbnRhaW5lciwgZmluYWwgQ29uZmlndXJhdGlvbiBjb25maWd1cmF0aW9uKSB7DQorCQlzdXBlcihpZCwgbmV3IENvbXBvdW5kUHJvcGVydHlNb2RlbDxDb25maWd1cmF0aW9uPihjb25maWd1cmF0aW9uKSk7DQorCQlzZXRPdXRwdXRNYXJrdXBJZCh0cnVlKTsNCisJCXRoaXMubGlzdENvbnRhaW5lciA9IGxpc3RDb250YWluZXI7DQorCQlhZGQobmV3IFJlcXVpcmVkVGV4dEZpZWxkPFN0cmluZz4oImNvbmZfa2V5IikpOw0KKwkJYWRkKG5ldyBSZXF1aXJlZFRleHRGaWVsZDxTdHJpbmc+KCJjb25mX3ZhbHVlIikpOw0KKwkJYWRkKERhdGVMYWJlbC5mb3JEYXRlUGF0dGVybigidXBkYXRldGltZSIsICJkZC5NTS55eXl5IEhIOm1tOnNzIikpOw0KKwkJYWRkKG5ldyBMYWJlbCgidXNlci5sb2dpbiIpKTsNCisJCWFkZChuZXcgVGV4dEFyZWE8U3RyaW5nPigiY29tbWVudCIpKTsNCisJCQ0KKwkJLy8gYXR0YWNoIGFuIGFqYXggdmFsaWRhdGlvbiBiZWhhdmlvciB0byBhbGwgZm9ybSBjb21wb25lbnQncyBrZXlkb3duDQorCQkvLyBldmVudCBhbmQgdGhyb3R0bGUgaXQgZG93biB0byBvbmNlIHBlciBzZWNvbmQNCisJCUFqYXhGb3JtVmFsaWRhdGluZ0JlaGF2aW9yLmFkZFRvQWxsRm9ybUNvbXBvbmVudHModGhpcywgImtleWRvd24iLA0KKwkJCQlEdXJhdGlvbi5PTkVfU0VDT05EKTsNCisNCisJfQ0KKwkNCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCB2b2lkIG9uU2F2ZVN1Ym1pdChBamF4UmVxdWVzdFRhcmdldCB0YXJnZXQsIEZvcm08Pz4gZm9ybSkgew0KKwkJQXBwbGljYXRpb24uZ2V0QmVhbihDb25maWd1cmF0aW9uRGFvLmNsYXNzKS51cGRhdGUoZ2V0TW9kZWxPYmplY3QoKSwgV2ViU2Vzc2lvbi5nZXRVc2VySWQoKSk7DQorCQlDb25maWd1cmF0aW9uIGNvbmYgPSBBcHBsaWNhdGlvbi5nZXRCZWFuKENvbmZpZ3VyYXRpb25EYW8uY2xhc3MpLmdldChnZXRNb2RlbE9iamVjdCgpLmdldENvbmZpZ3VyYXRpb25faWQoKSk7DQorCQl0aGlzLnNldE1vZGVsT2JqZWN0KGNvbmYpOw0KKwkJaGlkZU5ld1JlY29yZCgpOw0KKwkJdGFyZ2V0LmFkZCh0aGlzKTsNCisJCXRhcmdldC5hZGQobGlzdENvbnRhaW5lcik7DQorCQl0YXJnZXQuYXBwZW5kSmF2YVNjcmlwdCgib21Db25maWdQYW5lbEluaXQoKTsiKTsNCisJfQ0KKw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIHZvaWQgb25OZXdTdWJtaXQoQWpheFJlcXVlc3RUYXJnZXQgdGFyZ2V0LCBGb3JtPD8+IGZvcm0pIHsNCisJCXRoaXMuc2V0TW9kZWxPYmplY3QobmV3IENvbmZpZ3VyYXRpb24oKSk7DQorCQl0YXJnZXQuYWRkKHRoaXMpOw0KKwkJdGFyZ2V0LmFwcGVuZEphdmFTY3JpcHQoIm9tQ29uZmlnUGFuZWxJbml0KCk7Iik7DQorCX0NCisJDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgdm9pZCBvblJlZnJlc2hTdWJtaXQoQWpheFJlcXVlc3RUYXJnZXQgdGFyZ2V0LCBGb3JtPD8+IGZvcm0pIHsNCisJCUNvbmZpZ3VyYXRpb24gY29uZiA9IHRoaXMuZ2V0TW9kZWxPYmplY3QoKTsNCisJCWlmIChjb25mLmdldENvbmZpZ3VyYXRpb25faWQoKSAhPSBudWxsKSB7DQorCQkJY29uZiA9IEFwcGxpY2F0aW9uLmdldEJlYW4oQ29uZmlndXJhdGlvbkRhby5jbGFzcykuZ2V0KGNvbmYuZ2V0Q29uZmlndXJhdGlvbl9pZCgpKTsNCisJCX0gZWxzZSB7DQorCQkJY29uZiA9IG5ldyBDb25maWd1cmF0aW9uKCk7DQorCQl9DQorCQl0aGlzLnNldE1vZGVsT2JqZWN0KGNvbmYpOw0KKwkJdGFyZ2V0LmFkZCh0aGlzKTsNCisJCXRhcmdldC5hcHBlbmRKYXZhU2NyaXB0KCJvbUNvbmZpZ1BhbmVsSW5pdCgpOyIpOw0KKwl9DQorCQ0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIHZvaWQgb25EZWxldGVTdWJtaXQoQWpheFJlcXVlc3RUYXJnZXQgdGFyZ2V0LCBGb3JtPD8+IGZvcm0pIHsNCisJCUFwcGxpY2F0aW9uLmdldEJlYW4oQ29uZmlndXJhdGlvbkRhby5jbGFzcykuZGVsZXRlKHRoaXMuZ2V0TW9kZWxPYmplY3QoKSwgV2ViU2Vzc2lvbi5nZXRVc2VySWQoKSk7DQorCQl0aGlzLnNldE1vZGVsT2JqZWN0KG5ldyBDb25maWd1cmF0aW9uKCkpOw0KKwkJdGFyZ2V0LmFkZChsaXN0Q29udGFpbmVyKTsNCisJCXRhcmdldC5hZGQodGhpcyk7DQorCQl0YXJnZXQuYXBwZW5kSmF2YVNjcmlwdCgib21Db25maWdQYW5lbEluaXQoKTsiKTsNCisJfQ0KKwkNCit9DQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL2FkbWluL2NvbmZpZ3VyYXRpb25zL0NvbmZpZ3NQYW5lbC5odG1sIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL2FkbWluL2NvbmZpZ3VyYXRpb25zL0NvbmZpZ3NQYW5lbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyOTNkNTQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvYWRtaW4vY29uZmlndXJhdGlvbnMvQ29uZmlnc1BhbmVsLmh0bWwKQEAgLTAsMCArMSw4MyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxodG1sIHhtbG5zOndpY2tldD0iaHR0cDovL3dpY2tldC5hcGFjaGUub3JnIj4KKwk8d2lja2V0OmhlYWQ+CisgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgICAgICAgICBmdW5jdGlvbiBvbUNvbmZpZ1BhbmVsSW5pdCgpIHsKKyAgICAgICAgICAgICAgIHZhciBkb2N1bWVudEhlaWdodCA9ICQoZG9jdW1lbnQpLmhlaWdodCgpOworICAgICAgICAgICAgICAgJCgnI2FkbWluRm9ybScpLmhlaWdodChkb2N1bWVudEhlaWdodC0xMTQpOworICAgICAgICAgICAgICAgJCgnI2FkbWluVGFibGUnKS5oZWlnaHQoZG9jdW1lbnRIZWlnaHQtMTQ0KTsKKyAgICAgICAgICAgfQorICAgICAgIDwvc2NyaXB0PgorICAgIDwvd2lja2V0OmhlYWQ+CisJPHdpY2tldDpwYW5lbD4JCisJCTxkaXYgY2xhc3M9ImFkbWluUGFuZWwiPgorCQkJPGRpdiBjbGFzcz0iYWRtaW5QYW5lbENvbHVtblRhYmxlIj4KKwkJCQk8c3BhbiB3aWNrZXQ6aWQ9Im5hdmlnYXRvciI+W2RhdGF2aWV3IG5hdmlnYXRvcl08L3NwYW4+CisJCQkJPHRhYmxlIGNsYXNzPSJhZG1pbkxpc3RUYWJsZSI+CisJCQkJCTx0aGVhZD4KKwkJCQkJCTx0cj4KKwkJCQkJCQk8dGggY2xhc3M9InRocmVlX2NvbHVtbl9sYXlvdXRfY29sdW1uMSI+PHNwYW4gd2lja2V0OmlkPSJvcmRlckJ5SWQiPjwvc3Bhbj48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjI2NCIgLz48L3RoPgorCQkJCQkJCTx0aCBjbGFzcz0idGhyZWVfY29sdW1uX2xheW91dF9jb2x1bW4yIj48c3BhbiB3aWNrZXQ6aWQ9Im9yZGVyQnlLZXkiPjwvc3Bhbj48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjI2NSIgLz48L3RoPgorCQkJCQkJCTx0aCBjbGFzcz0idGhyZWVfY29sdW1uX2xheW91dF9jb2x1bW4zIj48c3BhbiB3aWNrZXQ6aWQ9Im9yZGVyQnlWYWx1ZSI+PC9zcGFuPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iNTk4IiAvPjwvdGg+CisJCQkJCQk8L3RyPgkKKwkJCQkJPC90aGVhZD4KKwkJCQk8L3RhYmxlPgorCQkJCTxkaXYgY2xhc3M9InRhYmxlV3JhcHBlciIgaWQ9ImFkbWluVGFibGUiPgorCQkJCQk8dGFibGUgY2xhc3M9ImFkbWluTGlzdFRhYmxlIj4KKwkJCQkJCTx0Ym9keSB3aWNrZXQ6aWQ9Imxpc3RDb250YWluZXIiID4JCisJCQkJICAgIAkJPHRyIHdpY2tldDppZD0iY29uZmlnTGlzdCI+CisJCQkJCQkJCTx0ZCBjbGFzcz0idGhyZWVfY29sdW1uX2xheW91dF9jb2x1bW4xIj48ZGl2IGNsYXNzPSJ0aHJlZV9jb2x1bW5fbGF5b3V0X2RpdmNvbHVtbjEiPjxzcGFuIHdpY2tldDppZD0iY29uZmlndXJhdGlvbl9pZCI+PC9zcGFuPjwvZGl2PjwvdGQ+CisJCQkJCQkJCTx0ZCBjbGFzcz0idGhyZWVfY29sdW1uX2xheW91dF9jb2x1bW4yIj48ZGl2IGNsYXNzPSJ0aHJlZV9jb2x1bW5fbGF5b3V0X2RpdmNvbHVtbjIiPjxzcGFuIHdpY2tldDppZD0iY29uZl9rZXkiPjwvc3Bhbj48L2Rpdj48L3RkPgorCQkJCQkJCQk8dGQgY2xhc3M9InRocmVlX2NvbHVtbl9sYXlvdXRfY29sdW1uMyI+PGRpdiBjbGFzcz0idGhyZWVfY29sdW1uX2xheW91dF9kaXZjb2x1bW4zIj48c3BhbiB3aWNrZXQ6aWQ9ImNvbmZfdmFsdWUiPjwvc3Bhbj48L2Rpdj48L3RkPgorCQkJCQkJCTwvdHI+CisJCQkJCQk8L3Rib2R5PgorCQkJCQk8L3RhYmxlPgorCQkJCTwvZGl2PgorCQkJPC9kaXY+CisJCQk8ZGl2IGNsYXNzPSJhZG1pblBhbmVsQ29sdW1uRm9ybSI+CisJCQkJPGZvcm0gd2lja2V0OmlkPSJmb3JtIiBjbGFzcz0iYWRtaW5Gb3JtIj4KKwkJCQkJPGRpdiB3aWNrZXQ6aWQ9ImJ1dHRvbnMiPjwvZGl2PgorCQkJCQk8ZGl2IGNsYXNzPSJzY3JvbGxjb250ZW50IiBpZD0iYWRtaW5Gb3JtIj4KKwkJCQkJCTxmaWVsZHNldD4KKwkJCQkJCQk8bGVnZW5kPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMjY2IiAvPjwvbGVnZW5kPgorCQkJCQkJCTxkaXYgY2xhc3M9ImZvcm1lbGVtZW50Ij4KKwkJCQkJCQkgICAgPGxhYmVsPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMjY3IiAvPjwvbGFiZWw+PGlucHV0IHR5cGU9InRleHQiIHdpY2tldDppZD0iY29uZl9rZXkiLz4KKwkJCQkgICAgICAgICAgICA8L2Rpdj4KKwkJCQkgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtZWxlbWVudCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjI3MSIgLz48L2xhYmVsPjxpbnB1dCB0eXBlPSJ0ZXh0IiB3aWNrZXQ6aWQ9ImNvbmZfdmFsdWUiLz4KKwkJCQkgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtZWxlbWVudCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjI2OCIgLz48L2xhYmVsPjxzcGFuIHdpY2tldDppZD0idXBkYXRldGltZSIvPgorCQkJCSAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm1lbGVtZW50Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMjY5IiAvPjwvbGFiZWw+PHNwYW4gd2lja2V0OmlkPSJ1c2VyLmxvZ2luIi8+CisJCQkJICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybWVsZW1lbnQiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIyNzAiIC8+PC9sYWJlbD48dGV4dGFyZWEgd2lja2V0OmlkPSJjb21tZW50Ii8+CisJCQkJICAgICAgICAgICAgPC9kaXY+CisJCQkJCQk8L2ZpZWxkc2V0PgorCQkJCQk8L2Rpdj4KKwkJCQk8L2Zvcm0+CisJCQk8L2Rpdj4KKwkJPC9kaXY+CisJPC93aWNrZXQ6cGFuZWw+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvYWRtaW4vY29uZmlndXJhdGlvbnMvQ29uZmlnc1BhbmVsLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvYWRtaW4vY29uZmlndXJhdGlvbnMvQ29uZmlnc1BhbmVsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGZhZDM2NQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi9jb25maWd1cmF0aW9ucy9Db25maWdzUGFuZWwuamF2YQpAQCAtMCwwICsxLDEwMSBAQAorLyoNCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICogdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuY29tcG9uZW50cy5hZG1pbi5jb25maWd1cmF0aW9uczsNCisNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5kYW8uQ29uZmlndXJhdGlvbkRhbzsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuQ29uZmlndXJhdGlvbjsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmNvbXBvbmVudHMuYWRtaW4uQWRtaW5QYW5lbDsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmNvbXBvbmVudHMuYWRtaW4uU2VhcmNoYWJsZURhdGFWaWV3Ow0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuY29tcG9uZW50cy5hZG1pbi5QYWdlZEVudGl0eUxpc3RQYW5lbDsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmRhdGEuRGF0YVZpZXdDb250YWluZXI7DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5kYXRhLlNlYXJjaGFibGVEYXRhUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5kYXRhLk9yZGVyQnlCb3JkZXI7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LkF0dHJpYnV0ZU1vZGlmaWVyOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5hamF4LkFqYXhFdmVudEJlaGF2aW9yOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5hamF4LkFqYXhSZXF1ZXN0VGFyZ2V0Ow0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5XZWJNYXJrdXBDb250YWluZXI7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5odG1sLmJhc2ljLkxhYmVsOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAucmVwZWF0ZXIuSXRlbTsNCisNCisvKioNCisgKiBhZGQvdXBkYXRlL2RlbGV0ZSB7QGxpbmsgQ29uZmlndXJhdGlvbn0NCisgKiANCisgKiBAYXV0aG9yIHN3YWduZXINCisgKiANCisgKi8NCitwdWJsaWMgY2xhc3MgQ29uZmlnc1BhbmVsIGV4dGVuZHMgQWRtaW5QYW5lbCB7DQorCQ0KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAtMUw7DQorCXByaXZhdGUgQ29uZmlnRm9ybSBmb3JtOw0KKwkNCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIG9uTWVudVBhbmVsTG9hZChBamF4UmVxdWVzdFRhcmdldCB0YXJnZXQpIHsNCisJCXRhcmdldC5hcHBlbmRKYXZhU2NyaXB0KCJvbUNvbmZpZ1BhbmVsSW5pdCgpOyIpOw0KKwl9DQorDQorCUBTdXBwcmVzc1dhcm5pbmdzKCJ1bmNoZWNrZWQiKQ0KKwlwdWJsaWMgQ29uZmlnc1BhbmVsKFN0cmluZyBpZCkgew0KKwkJc3VwZXIoaWQpOw0KKwkJDQorCQlTZWFyY2hhYmxlRGF0YVZpZXc8Q29uZmlndXJhdGlvbj4gZGF0YVZpZXcgPSBuZXcgU2VhcmNoYWJsZURhdGFWaWV3PENvbmZpZ3VyYXRpb24+KCJjb25maWdMaXN0Ig0KKwkJCSwgbmV3IFNlYXJjaGFibGVEYXRhUHJvdmlkZXI8Q29uZmlndXJhdGlvbj4oQ29uZmlndXJhdGlvbkRhby5jbGFzcykpIHsNCisJCQlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSA4NzE1NTU5NjI4NzU1NDM5NTk2TDsNCisNCisJCQlAT3ZlcnJpZGUNCisJCQlwcm90ZWN0ZWQgdm9pZCBwb3B1bGF0ZUl0ZW0oZmluYWwgSXRlbTxDb25maWd1cmF0aW9uPiBpdGVtKSB7DQorCQkJCWZpbmFsIENvbmZpZ3VyYXRpb24gY29uZmlndXJhdGlvbiA9IGl0ZW0uZ2V0TW9kZWxPYmplY3QoKTsNCisJCQkJaXRlbS5hZGQobmV3IExhYmVsKCJjb25maWd1cmF0aW9uX2lkIiwgIiIgKyBjb25maWd1cmF0aW9uLmdldENvbmZpZ3VyYXRpb25faWQoKSkpOw0KKwkJCQlpdGVtLmFkZChuZXcgTGFiZWwoImNvbmZfa2V5IiwgIiIgKyBjb25maWd1cmF0aW9uLmdldENvbmZfa2V5KCkpKTsNCisJCQkJaXRlbS5hZGQobmV3IExhYmVsKCJjb25mX3ZhbHVlIiwgIiIgKyBjb25maWd1cmF0aW9uLmdldENvbmZfdmFsdWUoKSkpOw0KKwkJCQlpdGVtLmFkZChuZXcgQWpheEV2ZW50QmVoYXZpb3IoIm9uY2xpY2siKSB7DQorCQkJCQlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAtODA2OTQxMzU2NjgwMDU3MTA2MUw7DQorDQorCQkJCQlwcm90ZWN0ZWQgdm9pZCBvbkV2ZW50KEFqYXhSZXF1ZXN0VGFyZ2V0IHRhcmdldCkgew0KKwkJCQkJCWZvcm0uaGlkZU5ld1JlY29yZCgpOw0KKwkJCQkJCWZvcm0uc2V0TW9kZWxPYmplY3QoY29uZmlndXJhdGlvbik7DQorCQkJCQkJdGFyZ2V0LmFkZChmb3JtKTsNCisJCQkJCQl0YXJnZXQuYXBwZW5kSmF2YVNjcmlwdCgib21Db25maWdQYW5lbEluaXQoKTsiKTsNCisJCQkJCX0NCisJCQkJfSk7DQorCQkJCWl0ZW0uYWRkKEF0dHJpYnV0ZU1vZGlmaWVyLnJlcGxhY2UoImNsYXNzIiwgImNsaWNrYWJsZSAiDQorCQkJCQkJKyAoKGl0ZW0uZ2V0SW5kZXgoKSAlIDIgPT0gMSkgPyAiZXZlbiIgOiAib2RkIikpKTsNCisJCQl9DQorCQl9Ow0KKwkJZmluYWwgV2ViTWFya3VwQ29udGFpbmVyIGxpc3RDb250YWluZXIgPSBuZXcgV2ViTWFya3VwQ29udGFpbmVyKCJsaXN0Q29udGFpbmVyIik7DQorCQlhZGQobGlzdENvbnRhaW5lci5hZGQoZGF0YVZpZXcpLnNldE91dHB1dE1hcmt1cElkKHRydWUpKTsNCisJCURhdGFWaWV3Q29udGFpbmVyPENvbmZpZ3VyYXRpb24+IGNvbnRhaW5lciA9IG5ldyBEYXRhVmlld0NvbnRhaW5lcjxDb25maWd1cmF0aW9uPihsaXN0Q29udGFpbmVyLCBkYXRhVmlldyk7DQorCQljb250YWluZXIuc2V0TGlua3MobmV3IE9yZGVyQnlCb3JkZXI8Q29uZmlndXJhdGlvbj4oIm9yZGVyQnlJZCIsICJjb25maWd1cmF0aW9uX2lkIiwgY29udGFpbmVyKQ0KKwkJCQksIG5ldyBPcmRlckJ5Qm9yZGVyPENvbmZpZ3VyYXRpb24+KCJvcmRlckJ5S2V5IiwgImNvbmZfa2V5IiwgY29udGFpbmVyKQ0KKwkJCQksIG5ldyBPcmRlckJ5Qm9yZGVyPENvbmZpZ3VyYXRpb24+KCJvcmRlckJ5VmFsdWUiLCAiY29uZl92YWx1ZSIsIGNvbnRhaW5lcikpOw0KKwkJYWRkKGNvbnRhaW5lci5vcmRlckxpbmtzKTsNCisJCWFkZChuZXcgUGFnZWRFbnRpdHlMaXN0UGFuZWwoIm5hdmlnYXRvciIsIGRhdGFWaWV3KSB7DQorCQkJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gNTA5NzA0ODYxNjAwMzQxMTM2Mkw7DQorDQorCQkJQE92ZXJyaWRlDQorCQkJcHJvdGVjdGVkIHZvaWQgb25FdmVudChBamF4UmVxdWVzdFRhcmdldCB0YXJnZXQpIHsNCisJCQkJdGFyZ2V0LmFkZChsaXN0Q29udGFpbmVyKTsNCisJCQl9DQorCQl9KTsNCisJCQ0KKwkJZm9ybSA9IG5ldyBDb25maWdGb3JtKCJmb3JtIiwgbGlzdENvbnRhaW5lciwgbmV3IENvbmZpZ3VyYXRpb24oKSk7DQorCQlmb3JtLnNob3dOZXdSZWNvcmQoKTsNCisgICAgICAgIGFkZChmb3JtKTsNCisJCQ0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi9ncm91cHMvQWRkVXNlcnNGb3JtLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvYWRtaW4vZ3JvdXBzL0FkZFVzZXJzRm9ybS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxMjQ5ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvYWRtaW4vZ3JvdXBzL0FkZFVzZXJzRm9ybS5qYXZhCkBAIC0wLDAgKzEsMTE1IEBACisvKg0KKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgKiB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5jb21wb25lbnRzLmFkbWluLmdyb3VwczsNCisNCitpbXBvcnQgc3RhdGljIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5jb21wb25lbnRzLmFkbWluLmdyb3Vwcy5Hcm91cFVzZXJzUGFuZWwuZ2V0VXNlcjsNCisNCitpbXBvcnQgamF2YS51dGlsLkFycmF5TGlzdDsNCitpbXBvcnQgamF2YS51dGlsLkxpc3Q7DQorDQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEudXNlci5kYW8uVXNlcnNEYW87DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmRvbWFpbi5PcmdhbmlzYXRpb247DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmRvbWFpbi5PcmdhbmlzYXRpb25fVXNlcnM7DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuVXNlcjsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmFwcC5BcHBsaWNhdGlvbjsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmFwcC5XZWJTZXNzaW9uOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5hamF4LkFqYXhSZXF1ZXN0VGFyZ2V0Ow0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5hamF4Lm1hcmt1cC5odG1sLmZvcm0uQWpheEJ1dHRvbjsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuZm9ybS5Gb3JtOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5mb3JtLklDaG9pY2VSZW5kZXJlcjsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuZm9ybS5MaXN0TXVsdGlwbGVDaG9pY2U7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5odG1sLmZvcm0uVGV4dEZpZWxkOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tb2RlbC5JTW9kZWw7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1vZGVsLk1vZGVsOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tb2RlbC5Qcm9wZXJ0eU1vZGVsOw0KKw0KK3B1YmxpYyBjbGFzcyBBZGRVc2Vyc0Zvcm0gZXh0ZW5kcyBGb3JtPFZvaWQ+IHsNCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gLTI0NTgyNjUyNTA2ODQ0MzcyNzdMOw0KKwlwcml2YXRlIE9yZ2FuaXNhdGlvbiBvcmdhbmlzYXRpb247DQorCXByaXZhdGUgU3RyaW5nIHVzZXJTZWFyY2hUZXh0Ow0KKwlwcml2YXRlIExpc3Q8VXNlcj4gdXNlcnNJbkxpc3QgPSBuZXcgQXJyYXlMaXN0PFVzZXI+KCk7DQorCXByaXZhdGUgTGlzdDxVc2VyPiB1c2Vyc1RvQWRkID0gbmV3IEFycmF5TGlzdDxVc2VyPigpOw0KKwkNCisJcHVibGljIEFkZFVzZXJzRm9ybShTdHJpbmcgaWQsIGZpbmFsIEdyb3VwRm9ybSBncm91cEZvcm0pIHsNCisJCXN1cGVyKGlkKTsNCisJCQ0KKwkJSU1vZGVsPExpc3Q8VXNlcj4+IGxpc3RVc2Vyc01vZGVsID0gbmV3IFByb3BlcnR5TW9kZWw8TGlzdDxVc2VyPj4oQWRkVXNlcnNGb3JtLnRoaXMsICJ1c2Vyc0luTGlzdCIpOw0KKwkJSU1vZGVsPExpc3Q8VXNlcj4+IHNlbGVjdGVkVXNlcnNNb2RlbCA9IG5ldyBQcm9wZXJ0eU1vZGVsPExpc3Q8VXNlcj4+KEFkZFVzZXJzRm9ybS50aGlzLCAidXNlcnNUb0FkZCIpOw0KKwkJZmluYWwgTGlzdE11bHRpcGxlQ2hvaWNlPFVzZXI+IHVzZXJzID0gbmV3IExpc3RNdWx0aXBsZUNob2ljZTxVc2VyPigidXNlcnMiDQorCQkJCSwgc2VsZWN0ZWRVc2Vyc01vZGVsDQorCQkJCSwgbGlzdFVzZXJzTW9kZWwNCisJCQkJLCBuZXcgSUNob2ljZVJlbmRlcmVyPFVzZXI+KCkgew0KKwkJCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDFMOw0KKw0KKwkJCXB1YmxpYyBPYmplY3QgZ2V0RGlzcGxheVZhbHVlKFVzZXIgb2JqZWN0KSB7DQorCQkJCXJldHVybiBnZXRVc2VyKG9iamVjdCk7DQorCQkJfQ0KKw0KKwkJCXB1YmxpYyBTdHJpbmcgZ2V0SWRWYWx1ZShVc2VyIG9iamVjdCwgaW50IGluZGV4KSB7DQorCQkJCXJldHVybiAiIiArIG9iamVjdC5nZXRVc2VyX2lkKCk7DQorCQkJfQ0KKwkJfSk7DQorCQkNCisJCWFkZChuZXcgVGV4dEZpZWxkPFN0cmluZz4oInNlYXJjaFRleHQiLCBuZXcgUHJvcGVydHlNb2RlbDxTdHJpbmc+KEFkZFVzZXJzRm9ybS50aGlzLCAidXNlclNlYXJjaFRleHQiKSkpOw0KKwkJYWRkKG5ldyBBamF4QnV0dG9uKCJzZWFyY2giLCBNb2RlbC5vZihXZWJTZXNzaW9uLmdldFN0cmluZygxODJMKSkpIHsNCisJCQlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAtNDc1MjE4MDYxNzYzNDk0NTAzMEw7DQorDQorCQkJcHJvdGVjdGVkIHZvaWQgb25BZnRlclN1Ym1pdChBamF4UmVxdWVzdFRhcmdldCB0YXJnZXQsIEZvcm08Pz4gZm9ybSkgew0KKwkJCQljbGVhcigpOw0KKwkJCQl1c2Vyc0luTGlzdC5hZGRBbGwoQXBwbGljYXRpb24uZ2V0QmVhbihVc2Vyc0Rhby5jbGFzcykuZ2V0KHVzZXJTZWFyY2hUZXh0KSk7DQorCQkJCXRhcmdldC5hZGQodXNlcnMpOw0KKwkJCX0NCisJCX0pOw0KKwkJYWRkKHVzZXJzLnNldE91dHB1dE1hcmt1cElkKHRydWUpKTsNCisJCWFkZChuZXcgQWpheEJ1dHRvbigiYWRkIiwgTW9kZWwub2YoV2ViU2Vzc2lvbi5nZXRTdHJpbmcoMTc1TCkpKSB7DQorCQkJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gNTU1MzU1NTA2NDQ4NzE2MTg0MEw7DQorDQorCQkJcHJvdGVjdGVkIHZvaWQgb25BZnRlclN1Ym1pdChBamF4UmVxdWVzdFRhcmdldCB0YXJnZXQsIEZvcm08Pz4gZm9ybSkgew0KKwkJCQlVc2Vyc0RhbyB1c2VyRGFvID0gQXBwbGljYXRpb24uZ2V0QmVhbihVc2Vyc0Rhby5jbGFzcyk7DQorCQkJCWZvciAoVXNlciB1IDogdXNlcnNUb0FkZCkgew0KKwkJCQkJTGlzdDxPcmdhbmlzYXRpb25fVXNlcnM+IG9yZ1VzZXJzID0gdS5nZXRPcmdhbmlzYXRpb25fdXNlcnMoKTsNCisJCQkJCWJvb2xlYW4gZm91bmQgPSBmYWxzZTsNCisJCQkJCWZvciAoT3JnYW5pc2F0aW9uX1VzZXJzIG91IDogb3JnVXNlcnMpIHsNCisJCQkJCQlpZiAob3UuZ2V0T3JnYW5pc2F0aW9uKCkuZ2V0T3JnYW5pc2F0aW9uX2lkKCkuZXF1YWxzKG9yZ2FuaXNhdGlvbi5nZXRPcmdhbmlzYXRpb25faWQoKSkpIHsNCisJCQkJCQkJZm91bmQgPSB0cnVlOw0KKwkJCQkJCQlicmVhazsNCisJCQkJCQl9DQorCQkJCQl9DQorCQkJCQlpZiAoIWZvdW5kKSB7DQorCQkJCQkJT3JnYW5pc2F0aW9uX1VzZXJzIG9yZ1VzZXIgPSBuZXcgT3JnYW5pc2F0aW9uX1VzZXJzKG9yZ2FuaXNhdGlvbik7DQorCQkJCQkJb3JnVXNlci5zZXREZWxldGVkKGZhbHNlKTsNCisJCQkJCQlvcmdVc2Vycy5hZGQob3JnVXNlcik7DQorCQkJCQkJdXNlckRhby51cGRhdGUodSwgV2ViU2Vzc2lvbi5nZXRVc2VySWQoKSk7DQorCQkJCQl9DQorCQkJCX0NCisJCQkJdGFyZ2V0LmFwcGVuZEphdmFTY3JpcHQoIiQoJyNhZGRVc2VycycpLmRpYWxvZygnY2xvc2UnKTsiKTsNCisJCQkJZ3JvdXBGb3JtLnVwZGF0ZVZpZXcodGFyZ2V0KTsNCisJCQl9DQorCQl9KTsNCisJfQ0KKw0KKwlwdWJsaWMgdm9pZCBjbGVhcigpIHsNCisJCXVzZXJzVG9BZGQuY2xlYXIoKTsNCisJCXVzZXJzSW5MaXN0LmNsZWFyKCk7DQorCX0NCisJDQorCXB1YmxpYyB2b2lkIHNldE9yZ2FuaXNhdGlvbihPcmdhbmlzYXRpb24gb3JnKSB7DQorCQlvcmdhbmlzYXRpb24gPSBvcmc7DQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL2FkbWluL2dyb3Vwcy9Hcm91cEZvcm0uamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi9ncm91cHMvR3JvdXBGb3JtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzUyNDU0ZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi9ncm91cHMvR3JvdXBGb3JtLmphdmEKQEAgLTAsMCArMSw5NiBAQAorLyoNCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICogdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuY29tcG9uZW50cy5hZG1pbi5ncm91cHM7DQorDQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEudXNlci5kYW8uT3JnYW5pc2F0aW9uRGFvOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5kb21haW4uT3JnYW5pc2F0aW9uOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuYXBwLkFwcGxpY2F0aW9uOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuYXBwLldlYlNlc3Npb247DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5jb21wb25lbnRzLmFkbWluLkFkbWluQmFzZUZvcm07DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LmFqYXguQWpheFJlcXVlc3RUYXJnZXQ7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LmFqYXguZm9ybS5BamF4Rm9ybVZhbGlkYXRpbmdCZWhhdmlvcjsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuV2ViTWFya3VwQ29udGFpbmVyOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5mb3JtLkZvcm07DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5odG1sLmZvcm0uUmVxdWlyZWRUZXh0RmllbGQ7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1vZGVsLkNvbXBvdW5kUHJvcGVydHlNb2RlbDsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQudXRpbC50aW1lLkR1cmF0aW9uOw0KKw0KK3B1YmxpYyBjbGFzcyBHcm91cEZvcm0gZXh0ZW5kcyBBZG1pbkJhc2VGb3JtPE9yZ2FuaXNhdGlvbj4gew0KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAtMTcyMDczMTY4NjA1MzkxMjcwMEw7DQorCXByaXZhdGUgR3JvdXBVc2Vyc1BhbmVsIHVzZXJzUGFuZWw7DQorCXByaXZhdGUgV2ViTWFya3VwQ29udGFpbmVyIGdyb3VwTGlzdDsNCisJDQorCXB1YmxpYyBHcm91cEZvcm0oU3RyaW5nIGlkLCBXZWJNYXJrdXBDb250YWluZXIgZ3JvdXBMaXN0LCBPcmdhbmlzYXRpb24gb3JnYW5pc2F0aW9uKSB7DQorCQlzdXBlcihpZCwgbmV3IENvbXBvdW5kUHJvcGVydHlNb2RlbDxPcmdhbmlzYXRpb24+KG9yZ2FuaXNhdGlvbikpOw0KKwkJdGhpcy5ncm91cExpc3QgPSBncm91cExpc3Q7DQorCQlzZXRPdXRwdXRNYXJrdXBJZCh0cnVlKTsNCisJCQ0KKwkJYWRkKG5ldyBSZXF1aXJlZFRleHRGaWVsZDxTdHJpbmc+KCJuYW1lIikpOw0KKwkJdXNlcnNQYW5lbCA9IG5ldyBHcm91cFVzZXJzUGFuZWwoInVzZXJzIiwgZ2V0T3JnSWQoKSk7DQorCQlhZGQodXNlcnNQYW5lbCk7DQorDQorCQkvLyBhdHRhY2ggYW4gYWpheCB2YWxpZGF0aW9uIGJlaGF2aW9yIHRvIGFsbCBmb3JtIGNvbXBvbmVudCdzIGtleWRvd24NCisJCS8vIGV2ZW50IGFuZCB0aHJvdHRsZSBpdCBkb3duIHRvIG9uY2UgcGVyIHNlY29uZA0KKwkJQWpheEZvcm1WYWxpZGF0aW5nQmVoYXZpb3IuYWRkVG9BbGxGb3JtQ29tcG9uZW50cyh0aGlzLCAia2V5ZG93biIsDQorCQkJCUR1cmF0aW9uLk9ORV9TRUNPTkQpOw0KKwl9DQorCQ0KKwl2b2lkIHVwZGF0ZVZpZXcoQWpheFJlcXVlc3RUYXJnZXQgdGFyZ2V0KSB7DQorCQl1c2Vyc1BhbmVsLnVwZGF0ZShnZXRPcmdJZCgpKTsNCisJCXRhcmdldC5hZGQodGhpcyk7DQorCQl0YXJnZXQuYXBwZW5kSmF2YVNjcmlwdCgiZ3JvdXBzSW5pdCgpOyIpOw0KKwl9DQorCQ0KKwlwcml2YXRlIGxvbmcgZ2V0T3JnSWQoKSB7DQorCQlyZXR1cm4gZ2V0TW9kZWxPYmplY3QoKS5nZXRPcmdhbmlzYXRpb25faWQoKSAhPSBudWxsID8gZ2V0TW9kZWxPYmplY3QoKS5nZXRPcmdhbmlzYXRpb25faWQoKSA6IDA7DQorCX0NCisJDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgdm9pZCBvbk5ld1N1Ym1pdChBamF4UmVxdWVzdFRhcmdldCB0YXJnZXQsIEZvcm08Pz4gZikgew0KKwkJdGhpcy5zZXRNb2RlbE9iamVjdChuZXcgT3JnYW5pc2F0aW9uKCkpOw0KKwkJdXBkYXRlVmlldyh0YXJnZXQpOw0KKwl9DQorCQ0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIHZvaWQgb25SZWZyZXNoU3VibWl0KEFqYXhSZXF1ZXN0VGFyZ2V0IHRhcmdldCwgRm9ybTw/PiBmb3JtKSB7DQorCQlPcmdhbmlzYXRpb24gb3JnID0gZ2V0TW9kZWxPYmplY3QoKTsNCisJCWlmIChvcmcuZ2V0T3JnYW5pc2F0aW9uX2lkKCkgIT0gbnVsbCkgew0KKwkJCW9yZyA9IEFwcGxpY2F0aW9uLmdldEJlYW4oT3JnYW5pc2F0aW9uRGFvLmNsYXNzKS5nZXQob3JnLmdldE9yZ2FuaXNhdGlvbl9pZCgpKTsNCisJCX0gZWxzZSB7DQorCQkJb3JnID0gbmV3IE9yZ2FuaXNhdGlvbigpOw0KKwkJfQ0KKwkJdGhpcy5zZXRNb2RlbE9iamVjdChvcmcpOw0KKwkJdXBkYXRlVmlldyh0YXJnZXQpOw0KKwl9DQorCQ0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIHZvaWQgb25EZWxldGVTdWJtaXQoQWpheFJlcXVlc3RUYXJnZXQgdGFyZ2V0LCBGb3JtPD8+IGZvcm0pIHsNCisJCUFwcGxpY2F0aW9uLmdldEJlYW4oT3JnYW5pc2F0aW9uRGFvLmNsYXNzKS5kZWxldGUoZ2V0TW9kZWxPYmplY3QoKSwgV2ViU2Vzc2lvbi5nZXRVc2VySWQoKSk7DQorCQl0YXJnZXQuYWRkKGdyb3VwTGlzdCk7DQorCQl0YXJnZXQuYXBwZW5kSmF2YVNjcmlwdCgiZ3JvdXBzSW5pdCgpOyIpOw0KKwl9DQorCQ0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIHZvaWQgb25TYXZlU3VibWl0KEFqYXhSZXF1ZXN0VGFyZ2V0IHRhcmdldCwgRm9ybTw/PiBmb3JtKSB7DQorCQlBcHBsaWNhdGlvbi5nZXRCZWFuKE9yZ2FuaXNhdGlvbkRhby5jbGFzcykudXBkYXRlKGdldE1vZGVsT2JqZWN0KCksIFdlYlNlc3Npb24uZ2V0VXNlcklkKCkpOw0KKwkJaGlkZU5ld1JlY29yZCgpOw0KKwkJdGFyZ2V0LmFkZChncm91cExpc3QpOw0KKwkJdGFyZ2V0LmFwcGVuZEphdmFTY3JpcHQoImdyb3Vwc0luaXQoKTsiKTsNCisJfQ0KK30NCmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvYWRtaW4vZ3JvdXBzL0dyb3VwVXNlcnNQYW5lbC5odG1sIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL2FkbWluL2dyb3Vwcy9Hcm91cFVzZXJzUGFuZWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMzI3ZmUyCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL2FkbWluL2dyb3Vwcy9Hcm91cFVzZXJzUGFuZWwuaHRtbApAQCAtMCwwICsxLDQzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0NCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgIA0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAgICAJICANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAgdW5kZXIgdGhlIExpY2Vuc2UuDQorICANCistLT4NCis8aHRtbCB4bWxuczp3aWNrZXQ9Imh0dHA6Ly93aWNrZXQuYXBhY2hlLm9yZyI+DQorCTx3aWNrZXQ6cGFuZWw+DQorCQk8ZGl2IGNsYXNzPSJ1c2VyZ3JvdXBzcGFuZWwiPg0KKwkJCTxzcGFuIHdpY2tldDppZD0ibmF2aWdhdG9yIj5bZGF0YXZpZXcgbmF2aWdhdG9yXTwvc3Bhbj4NCisJCQk8dGFibGUgY2xhc3M9ImFkbWluTGlzdFRhYmxlIiBzdHlsZT0ibWluLXdpZHRoOiA0MDBweDsgbWF4LXdpZHRoOiA0MDBweCIgPg0KKyAgICAgICAgICAgICAgICA8dHI+DQorICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9IndpZHRoOiAzNjBweCI+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIxNzciIC8+PC90aD4NCisgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0id2lkdGg6IDM0cHgiPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMjc1IiAvPjwvdGg+DQorICAgICAgICAgICAgICAgIDwvdHI+ICAgDQorICAgICAgICAgICAgPC90YWJsZT4NCisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJ0YWJsZVdyYXBwZXIiIHN0eWxlPSJ3aWR0aDogNDIwcHg7IGhlaWdodDogNDIwcHg7Ij4NCisgICAgICAgICAgICAgICAgPHRhYmxlIGNsYXNzPSJhZG1pbkxpc3RUYWJsZSIgc3R5bGU9Im1pbi13aWR0aDogNDAwcHg7IG1heC13aWR0aDogNDAwcHgiPiAgDQorICAgICAgICAgICAgICAgICAgICA8dGJvZHk+ICAgDQorICAgICAgICAgICAgICAgICAgICAgICAgPHRyIHdpY2tldDppZD0idXNlckxpc3QiPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9IndpZHRoOiAzNjBweCI+PGRpdiBzdHlsZT0id2lkdGg6IDM2MHB4Ij48c3BhbiB3aWNrZXQ6aWQ9ImxhYmVsIj48L3NwYW4+PC9kaXY+PC90ZD4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJ3aWR0aDogMzRweCI+PGRpdiBzdHlsZT0id2lkdGg6IDM0cHgiPjxkaXYgY2xhc3M9ImZvcm1DYW5jZWxCdXR0b24iIHdpY2tldDppZD0iZGVsZXRlVXNlckJ0biIgd2lja2V0Om9tbWVzc2FnZT0idGl0bGU6Mjc0Ij48aW5wdXQvPjwvZGl2PjwvZGl2PjwvdGQ+DQorICAgICAgICAgICAgICAgICAgICAgICAgPC90cj4NCisgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+DQorICAgICAgICAgICAgICAgIDwvdGFibGU+DQorICAgICAgICAgICAgPC9kaXY+DQorCQk8L2Rpdj4NCisJPC93aWNrZXQ6cGFuZWw+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi9ncm91cHMvR3JvdXBVc2Vyc1BhbmVsLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvYWRtaW4vZ3JvdXBzL0dyb3VwVXNlcnNQYW5lbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4YWQ3ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvYWRtaW4vZ3JvdXBzL0dyb3VwVXNlcnNQYW5lbC5qYXZhCkBAIC0wLDAgKzEsMTExIEBACisvKg0KKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgKiB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5jb21wb25lbnRzLmFkbWluLmdyb3VwczsNCisNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLmRhby5PcmdhbmlzYXRpb25Vc2VyRGFvOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5kb21haW4uT3JnYW5pc2F0aW9uX1VzZXJzOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlVzZXI7DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5hcHAuQXBwbGljYXRpb247DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5hcHAuV2ViU2Vzc2lvbjsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmNvbXBvbmVudHMuQ29uZmlybUNhbGxMaXN0ZW5lcjsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmNvbXBvbmVudHMuYWRtaW4uU2VhcmNoYWJsZURhdGFWaWV3Ow0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuY29tcG9uZW50cy5hZG1pbi5QYWdlZEVudGl0eUxpc3RQYW5lbDsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmRhdGEuU2VhcmNoYWJsZURhdGFQcm92aWRlcjsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQuQXR0cmlidXRlTW9kaWZpZXI7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LmFqYXguQWpheEV2ZW50QmVoYXZpb3I7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LmFqYXguQWpheFJlcXVlc3RUYXJnZXQ7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LmFqYXguYXR0cmlidXRlcy5BamF4UmVxdWVzdEF0dHJpYnV0ZXM7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5odG1sLldlYk1hcmt1cENvbnRhaW5lcjsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuYmFzaWMuTGFiZWw7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5odG1sLnBhbmVsLlBhbmVsOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAucmVwZWF0ZXIuSXRlbTsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubW9kZWwuTW9kZWw7DQorDQorcHVibGljIGNsYXNzIEdyb3VwVXNlcnNQYW5lbCBleHRlbmRzIFBhbmVsIHsNCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gLTE4MTM0ODg3MjI5MTM0MzMyMjdMOw0KKwlwcml2YXRlIGxvbmcgb3JnYW5pc2F0aW9uSWQ7DQorCQ0KKwlwdWJsaWMgc3RhdGljIFN0cmluZyBnZXRVc2VyKFVzZXIgdSkgew0KKwkJcmV0dXJuIHUuZ2V0TG9naW4oKSArICIgWyIgKyB1LmdldEZpcnN0bmFtZSgpICsgIiwgIiArIHUuZ2V0TGFzdG5hbWUoKSArICJdIjsNCisJfQ0KKwkNCisJcHVibGljIEdyb3VwVXNlcnNQYW5lbChTdHJpbmcgaWQsIGxvbmcgb3JnSWQpIHsNCisJCXN1cGVyKGlkKTsNCisJCXRoaXMub3JnYW5pc2F0aW9uSWQgPSBvcmdJZDsNCisJCXNldE91dHB1dE1hcmt1cElkKHRydWUpOw0KKwkJDQorCQlTZWFyY2hhYmxlRGF0YVZpZXc8T3JnYW5pc2F0aW9uX1VzZXJzPiBkYXRhVmlldyA9IG5ldyBTZWFyY2hhYmxlRGF0YVZpZXc8T3JnYW5pc2F0aW9uX1VzZXJzPigidXNlckxpc3QiLCBuZXcgU2VhcmNoYWJsZURhdGFQcm92aWRlcjxPcmdhbmlzYXRpb25fVXNlcnM+KE9yZ2FuaXNhdGlvblVzZXJEYW8uY2xhc3Mpew0KKwkJCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDFMOw0KKw0KKwkJCXB1YmxpYyBsb25nIHNpemUoKSB7DQorCQkJCXJldHVybiBzZWFyY2ggPT0gbnVsbA0KKwkJCQkJCT8gQXBwbGljYXRpb24uZ2V0QmVhbihPcmdhbmlzYXRpb25Vc2VyRGFvLmNsYXNzKS5jb3VudChvcmdhbmlzYXRpb25JZCkNCisJCQkJCQk6IEFwcGxpY2F0aW9uLmdldEJlYW4oT3JnYW5pc2F0aW9uVXNlckRhby5jbGFzcykuY291bnQob3JnYW5pc2F0aW9uSWQsIHNlYXJjaCk7DQorCQkJfQ0KKwkJCQ0KKwkJCXB1YmxpYyBqYXZhLnV0aWwuSXRlcmF0b3I8PyBleHRlbmRzIE9yZ2FuaXNhdGlvbl9Vc2Vycz4gaXRlcmF0b3IobG9uZyBmaXJzdCwgbG9uZyBjb3VudCkgew0KKwkJCQlyZXR1cm4gKHNlYXJjaCA9PSBudWxsICYmIGdldFNvcnQoKSA9PSBudWxsDQorCQkJCQkJPyBBcHBsaWNhdGlvbi5nZXRCZWFuKE9yZ2FuaXNhdGlvblVzZXJEYW8uY2xhc3MpLmdldChvcmdhbmlzYXRpb25JZCwgKGludClmaXJzdCwgKGludCljb3VudCkNCisJCQkJCQk6IEFwcGxpY2F0aW9uLmdldEJlYW4oT3JnYW5pc2F0aW9uVXNlckRhby5jbGFzcykuZ2V0KG9yZ2FuaXNhdGlvbklkLCBzZWFyY2gsIChpbnQpZmlyc3QsIChpbnQpY291bnQsIGdldFNvcnRTdHIoKSkpLml0ZXJhdG9yKCk7DQorCQkJfQ0KKwkJfSkgew0KKwkJCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDg3MTU1NTk2Mjg3NTU0Mzk1OTZMOw0KKw0KKwkJCUBPdmVycmlkZQ0KKwkJCXByb3RlY3RlZCB2b2lkIHBvcHVsYXRlSXRlbShJdGVtPE9yZ2FuaXNhdGlvbl9Vc2Vycz4gaXRlbSkgew0KKwkJCQlmaW5hbCBPcmdhbmlzYXRpb25fVXNlcnMgb3JnVXNlciA9IGl0ZW0uZ2V0TW9kZWxPYmplY3QoKTsNCisJCQkJVXNlciB1ID0gb3JnVXNlci5nZXRVc2VyKCk7DQorCQkJCWlmICh1ICE9IG51bGwpIHsNCisJCQkJCWl0ZW0uYWRkKG5ldyBMYWJlbCgibGFiZWwiLCBNb2RlbC5vZihnZXRVc2VyKHUpKSkpOw0KKwkJCQl9IGVsc2Ugew0KKwkJCQkJaXRlbS5hZGQobmV3IExhYmVsKCJsYWJlbCIsIE1vZGVsLm9mKCIiKSkpOw0KKwkJCQl9DQorCQkJCWl0ZW0uYWRkKG5ldyBXZWJNYXJrdXBDb250YWluZXIoImRlbGV0ZVVzZXJCdG4iKS5hZGQobmV3IEFqYXhFdmVudEJlaGF2aW9yKCJvbmNsaWNrIil7DQorCQkJCQlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAxTDsNCisNCisJCQkJCUBPdmVycmlkZQ0KKwkJCQkJcHJvdGVjdGVkIHZvaWQgdXBkYXRlQWpheEF0dHJpYnV0ZXMoQWpheFJlcXVlc3RBdHRyaWJ1dGVzIGF0dHJpYnV0ZXMpIHsNCisJCQkJCQlzdXBlci51cGRhdGVBamF4QXR0cmlidXRlcyhhdHRyaWJ1dGVzKTsNCisJCQkJCQlhdHRyaWJ1dGVzLmdldEFqYXhDYWxsTGlzdGVuZXJzKCkuYWRkKG5ldyBDb25maXJtQ2FsbExpc3RlbmVyKDgzM0wpKTsNCisJCQkJCX0NCisJCQkJCQ0KKwkJCQkJQE92ZXJyaWRlDQorCQkJCQlwcm90ZWN0ZWQgdm9pZCBvbkV2ZW50KEFqYXhSZXF1ZXN0VGFyZ2V0IHRhcmdldCkgew0KKwkJCQkJCUFwcGxpY2F0aW9uLmdldEJlYW4oT3JnYW5pc2F0aW9uVXNlckRhby5jbGFzcykuZGVsZXRlKG9yZ1VzZXIsIFdlYlNlc3Npb24uZ2V0VXNlcklkKCkpOw0KKwkJCQkJCXRhcmdldC5hZGQoR3JvdXBVc2Vyc1BhbmVsLnRoaXMpOw0KKwkJCQkJfQ0KKwkJCQl9KSk7IA0KKwkJCQlpdGVtLmFkZChBdHRyaWJ1dGVNb2RpZmllci5hcHBlbmQoImNsYXNzIiwgKChpdGVtLmdldEluZGV4KCkgJSAyID09IDEpID8gImV2ZW4iIDogIm9kZCIpKSk7DQorCQkJfQ0KKwkJfTsNCisJCWFkZChkYXRhVmlldykuc2V0T3V0cHV0TWFya3VwSWQodHJ1ZSk7DQorCQlhZGQobmV3IFBhZ2VkRW50aXR5TGlzdFBhbmVsKCJuYXZpZ2F0b3IiLCBkYXRhVmlldykgew0KKwkJCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDUwOTcwNDg2MTYwMDM0MTEzNjJMOw0KKw0KKwkJCUBPdmVycmlkZQ0KKwkJCXByb3RlY3RlZCB2b2lkIG9uRXZlbnQoQWpheFJlcXVlc3RUYXJnZXQgdGFyZ2V0KSB7DQorCQkJCXRhcmdldC5hZGQoR3JvdXBVc2Vyc1BhbmVsLnRoaXMpOw0KKwkJCX0NCisJCX0pOw0KKwl9DQorCQ0KKwl2b2lkIHVwZGF0ZShsb25nIG9yZ0lkKSB7DQorCQlvcmdhbmlzYXRpb25JZCA9IG9yZ0lkOw0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi9ncm91cHMvR3JvdXBzUGFuZWwuaHRtbCBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi9ncm91cHMvR3JvdXBzUGFuZWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZWQ4NzZmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL2FkbWluL2dyb3Vwcy9Hcm91cHNQYW5lbC5odG1sCkBAIC0wLDAgKzEsMTA2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGh0bWwgeG1sbnM6d2lja2V0PSJodHRwOi8vd2lja2V0LmFwYWNoZS5vcmciPgorCTx3aWNrZXQ6aGVhZD4KKwkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCQkJZnVuY3Rpb24gZ3JvdXBzSW5pdCgpIHsKKwkJCQkkKCcjYWRkVXNlcnMnKS5kaWFsb2coeworCQkJCQljbG9zZU9uRXNjYXBlOiB0cnVlCisJCQkJCSwgYXV0b09wZW46IGZhbHNlCisJCQkJCSwgcmVzaXphYmxlOiBmYWxzZQorCQkJCQksIHdpZHRoOiA0MDAKKwkJCQkJLCBtb2RhbDogdHJ1ZQorCQkJCX0pOworCQkJCXZhciBkb2N1bWVudEhlaWdodCA9ICQoZG9jdW1lbnQpLmhlaWdodCgpOworICAgICAgICAgICAgICAgICQoJyNhZG1pbkZvcm0nKS5oZWlnaHQoZG9jdW1lbnRIZWlnaHQtMTE0KTsKKyAgICAgICAgICAgICAgICAkKCcjYWRtaW5UYWJsZScpLmhlaWdodChkb2N1bWVudEhlaWdodC0xNDQpOworCQkJfTsKKwkJCQorCQkJZnVuY3Rpb24gYWRkVXNlcnMoKSB7CisJCQkJJCgnI2FkZFVzZXJzIDp0ZXh0JykudmFsKCcnKTsKKwkJCQkkKCcjYWRkVXNlcnMnKS5kaWFsb2coJ29wZW4nKTsKKwkJCX07CisJCTwvc2NyaXB0PgorCTwvd2lja2V0OmhlYWQ+CisJPHdpY2tldDpwYW5lbD4KKwkJPGRpdiBjbGFzcz0iYWRtaW5QYW5lbCI+CisJCQk8ZGl2IGNsYXNzPSJhZG1pblBhbmVsQ29sdW1uVGFibGUiPgorCQkJCTxzcGFuIHdpY2tldDppZD0ibmF2aWdhdG9yIj5bZGF0YXZpZXcgbmF2aWdhdG9yXTwvc3Bhbj4KKwkJCQk8dGFibGUgY2xhc3M9ImFkbWluTGlzdFRhYmxlIj4KKwkJCQkJPHRyPgorCQkJCQkJPHRoIGNsYXNzPSJ0d29fY29sdW1uX2xheW91dF9jb2x1bW4xIj48c3BhbiB3aWNrZXQ6aWQ9Im9yZGVyQnlJZCI+PC9zcGFuPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMTY0IiAvPjwvdGg+CisJCQkJCQk8dGggY2xhc3M9InR3b19jb2x1bW5fbGF5b3V0X2NvbHVtbjIiPjxzcGFuIHdpY2tldDppZD0ib3JkZXJCeU5hbWUiPjwvc3Bhbj48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjE2NSIgLz48L3RoPgorCQkJCQk8L3RyPgkKKwkJCQk8L3RhYmxlPgorCQkJCTxkaXYgY2xhc3M9InRhYmxlV3JhcHBlciIgaWQ9ImFkbWluVGFibGUiPgorCQkJCQk8dGFibGUgY2xhc3M9ImFkbWluTGlzdFRhYmxlIj4JCisJCQkJCQk8dGJvZHkgd2lja2V0OmlkPSJsaXN0Q29udGFpbmVyIj4JCisJCQkJICAgIAkJPHRyIHdpY2tldDppZD0iZ3JvdXBMaXN0Ij4KKwkJCQkJCQkJPHRkIGNsYXNzPSJ0d29fY29sdW1uX2xheW91dF9jb2x1bW4xIj48ZGl2IGNsYXNzPSJ0d29fY29sdW1uX2xheW91dF9kaXZjb2x1bW4xIj48c3BhbiB3aWNrZXQ6aWQ9Im9yZ2FuaXNhdGlvbl9pZCI+PC9zcGFuPjwvZGl2PjwvdGQ+CisJCQkJCQkJCTx0ZCBjbGFzcz0idHdvX2NvbHVtbl9sYXlvdXRfY29sdW1uMiI+PGRpdiBjbGFzcz0idHdvX2NvbHVtbl9sYXlvdXRfZGl2Y29sdW1uMiI+PHNwYW4gd2lja2V0OmlkPSJuYW1lIj48L3NwYW4+PC9kaXY+PC90ZD4KKwkJCQkJCQk8L3RyPgorCQkJCQkJPC90Ym9keT4KKwkJCQkJPC90YWJsZT4KKwkJCQk8L2Rpdj4KKwkJCTwvZGl2PgorCQkJPGRpdiBjbGFzcz0iYWRtaW5QYW5lbENvbHVtbkZvcm0iPgorCQkJCTxmb3JtIHdpY2tldDppZD0iZm9ybSIgY2xhc3M9ImFkbWluRm9ybSI+CisJCQkJCTxkaXYgd2lja2V0OmlkPSJidXR0b25zIj48L2Rpdj4KKwkJCQkJPGRpdiBjbGFzcz0ic2Nyb2xsY29udGVudCIgaWQ9ImFkbWluRm9ybSI+CisJCQkJCSAgICA8ZmllbGRzZXQ+CisJCQkJCSAgICAgICAgPGxlZ2VuZD48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjE3MCIgLz48L2xlZ2VuZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtZWxlbWVudCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjE3MSIgLz48L2xhYmVsPjxpbnB1dCB0eXBlPSJ0ZXh0IiB3aWNrZXQ6aWQ9Im5hbWUiIC8+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybWVsZW1lbnQiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWwgc3R5bGU9ImZvbnQtd2VpZ2h0OiBib2xkOyI+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIyNzMiIC8+PC9sYWJlbD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB3aWNrZXQ6aWQ9ImFkZFVzZXJzQnRuIiBjbGFzcz0iZm9ybU5ld0J1dHRvbiBkaXNhYmxlZCIgd2lja2V0Om9tbWVzc2FnZT0idGl0bGU6MTc4Ij48aW5wdXQvPjwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm1lbGVtZW50Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiB3aWNrZXQ6aWQ9InVzZXJzIj48L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj4KKwkJCQkJICAgIDwvZmllbGRzZXQ+CisJCQkJCTwvZGl2PgorCQkJCTwvZm9ybT4KKwkJCTwvZGl2PgorCQk8L2Rpdj4KKwkJPGRpdiBpZD0iYWRkVXNlcnMiIHdpY2tldDpvbW1lc3NhZ2U9InRpdGxlOjE4MCIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij4KKwkJCTxmb3JtIHdpY2tldDppZD0iYWRkVXNlcnMiPgorCQkJCTx0YWJsZT4KKwkJCQkJPHRyPgorCQkJCQkJPHRkPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMTgxIiAvPjwvdGQ+CisJCQkJCQk8dGQ+PGlucHV0IHR5cGU9InRleHQiIHdpY2tldDppZD0ic2VhcmNoVGV4dCIgLz48L3RkPgorCQkJCQk8L3RyPgorCQkJCQk8dHI+CisJCQkJCQk8dGQgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0Ij48aW5wdXQgdHlwZT0iYnV0dG9uIiB3aWNrZXQ6aWQ9InNlYXJjaCIgLz48L3RkPgorCQkJCQk8L3RyPgorCQkJCQk8dHI+CisJCQkJCQk8dGQ+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIxODMiIC8+PC90ZD4KKwkJCQkJCTx0ZD48c2VsZWN0IHdpY2tldDppZD0idXNlcnMiIHN0eWxlPSJ3aWR0aDogMjAwcHg7IGhlaWdodDogMzAwcHg7Ij48L3NlbGVjdD48L3RkPgorCQkJCQk8L3RyPgorCQkJCQk8dHI+CisJCQkJCQk8dGQgY29sc3Bhbj0iMiIgc3R5bGU9InRleHQtYWxpZ246IHJpZ2h0Ij48aW5wdXQgdHlwZT0iYnV0dG9uIiB3aWNrZXQ6aWQ9ImFkZCIgLz48L3RkPgorCQkJCQk8L3RyPgorCQkJCTwvdGFibGU+CisJCQk8L2Zvcm0+CisJCTwvZGl2PgorCTwvd2lja2V0OnBhbmVsPgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL2FkbWluL2dyb3Vwcy9Hcm91cHNQYW5lbC5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL2FkbWluL2dyb3Vwcy9Hcm91cHNQYW5lbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzZDA2ZGUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvYWRtaW4vZ3JvdXBzL0dyb3Vwc1BhbmVsLmphdmEKQEAgLTAsMCArMSwxMzQgQEAKKy8qDQorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAqIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmNvbXBvbmVudHMuYWRtaW4uZ3JvdXBzOw0KKw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuZGFvLk9yZ2FuaXNhdGlvbkRhbzsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuZG9tYWluLk9yZ2FuaXNhdGlvbjsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuZG9tYWluLk9yZ2FuaXNhdGlvbl9Vc2VyczsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmNvbXBvbmVudHMuYWRtaW4uQWRtaW5QYW5lbDsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmNvbXBvbmVudHMuYWRtaW4uU2VhcmNoYWJsZURhdGFWaWV3Ow0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuY29tcG9uZW50cy5hZG1pbi5QYWdlZEVudGl0eUxpc3RQYW5lbDsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmRhdGEuRGF0YVZpZXdDb250YWluZXI7DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5kYXRhLlNlYXJjaGFibGVEYXRhUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5kYXRhLk9yZGVyQnlCb3JkZXI7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LkF0dHJpYnV0ZU1vZGlmaWVyOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5hamF4LkFqYXhFdmVudEJlaGF2aW9yOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5hamF4LkFqYXhSZXF1ZXN0VGFyZ2V0Ow0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5XZWJNYXJrdXBDb250YWluZXI7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5odG1sLmJhc2ljLkxhYmVsOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAucmVwZWF0ZXIuSXRlbTsNCisNCisvKioNCisgKiBNb2RpZnkvIENSVUQgb3BlcmF0aW9ucyBmb3Ige0BsaW5rIE9yZ2FuaXNhdGlvbn0gYW5kDQorICoge0BsaW5rIE9yZ2FuaXNhdGlvbl9Vc2Vyc30NCisgKiANCisgKiBAYXV0aG9yIHN3YWcNCisgKiANCisgKi8NCitwdWJsaWMgY2xhc3MgR3JvdXBzUGFuZWwgZXh0ZW5kcyBBZG1pblBhbmVsIHsNCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gLTUxNzA0MDA1NTYwMDY0NjQ4MzBMOw0KKwlwcml2YXRlIEFkZFVzZXJzRm9ybSBhZGRVc2Vyc0Zvcm07DQorCXByaXZhdGUgR3JvdXBGb3JtIGZvcm07DQorCQ0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgb25NZW51UGFuZWxMb2FkKEFqYXhSZXF1ZXN0VGFyZ2V0IHRhcmdldCkgew0KKwkJdGFyZ2V0LmFwcGVuZEphdmFTY3JpcHQoImdyb3Vwc0luaXQoKTsiKTsNCisJfQ0KKw0KKwlAU3VwcHJlc3NXYXJuaW5ncygidW5jaGVja2VkIikNCisJcHVibGljIEdyb3Vwc1BhbmVsKFN0cmluZyBpZCkgew0KKwkJc3VwZXIoaWQpOw0KKwkJZmluYWwgV2ViTWFya3VwQ29udGFpbmVyIGxpc3RDb250YWluZXIgPSBuZXcgV2ViTWFya3VwQ29udGFpbmVyKCJsaXN0Q29udGFpbmVyIik7DQorICAgICAgICBmaW5hbCBXZWJNYXJrdXBDb250YWluZXIgYWRkVXNlcnNCdG4gPSBuZXcgV2ViTWFya3VwQ29udGFpbmVyKCJhZGRVc2Vyc0J0biIpOw0KKyAgICAgICAgYWRkVXNlcnNCdG4uYWRkKG5ldyBBamF4RXZlbnRCZWhhdmlvcigib25jbGljayIpIHsNCisJCQlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSA2MDM3OTk0MzY1MjM1MTQ4ODg1TDsNCisNCisJCQlwcm90ZWN0ZWQgdm9pZCBvbkV2ZW50KEFqYXhSZXF1ZXN0VGFyZ2V0IHRhcmdldCkgew0KKyAgICAgICAgCQlhZGRVc2Vyc0Zvcm0uY2xlYXIoKTsNCisgICAgICAgIAkJdGFyZ2V0LmFkZChhZGRVc2Vyc0Zvcm0pOw0KKyAgICAgICAgCQl0YXJnZXQuYXBwZW5kSmF2YVNjcmlwdCgiYWRkVXNlcnMoKTsiKTsNCisgICAgICAgIAl9DQorICAgICAgICB9KTsNCisgICAgICAgIA0KKwkJLy9BZGRpbmcgdGhlIEdyb3VwIEZvcm0NCisJCWZvcm0gPSBuZXcgR3JvdXBGb3JtKCJmb3JtIiwgbGlzdENvbnRhaW5lciwgbmV3IE9yZ2FuaXNhdGlvbigpKXsNCisJCQlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAtMzA0Mjc5NzM0MDM3NTk4ODg4OUw7DQorDQorCQkJQE92ZXJyaWRlDQorCQkJcHJvdGVjdGVkIHZvaWQgb25Nb2RlbENoYW5nZWQoKSB7DQorCQkJCXN1cGVyLm9uTW9kZWxDaGFuZ2VkKCk7DQorCQkJCWJvb2xlYW4gb3JnRW1wdHkgPSBnZXRNb2RlbE9iamVjdCgpLmdldE9yZ2FuaXNhdGlvbl9pZCgpID09IG51bGw7DQorCQkJCWlmIChvcmdFbXB0eSkgew0KKwkJCQkJYWRkVXNlcnNCdG4uYWRkKEF0dHJpYnV0ZU1vZGlmaWVyLnJlcGxhY2UoImNsYXNzIiwgImZvcm1OZXdCdXR0b24gZGlzYWJsZWQiKSk7DQorCQkJCX0gZWxzZSB7DQorCQkJCQlhZGRVc2Vyc0J0bi5hZGQoQXR0cmlidXRlTW9kaWZpZXIucmVwbGFjZSgiY2xhc3MiLCAiZm9ybU5ld0J1dHRvbiIpKTsNCisJCQkJfQ0KKwkJCQlhZGRVc2Vyc0J0bi5zZXRFbmFibGVkKCFvcmdFbXB0eSk7DQorCQkJCWFkZFVzZXJzRm9ybS5zZXRPcmdhbmlzYXRpb24oZ2V0TW9kZWxPYmplY3QoKSk7DQorCQkJfQ0KKwkJCQ0KKwkJCUBPdmVycmlkZQ0KKwkJCXZvaWQgdXBkYXRlVmlldyhBamF4UmVxdWVzdFRhcmdldCB0YXJnZXQpIHsNCisJCQkJc3VwZXIudXBkYXRlVmlldyh0YXJnZXQpOw0KKwkJCQl0YXJnZXQuYWRkKGFkZFVzZXJzQnRuKTsNCisJCQl9DQorCQl9Ow0KKyAgICAgICAgYWRkKGZvcm0uYWRkKGFkZFVzZXJzQnRuLnNldE91dHB1dE1hcmt1cElkKHRydWUpKSk7DQorICAgICAgICBhZGRVc2Vyc0Zvcm0gPSBuZXcgQWRkVXNlcnNGb3JtKCJhZGRVc2VycyIsIGZvcm0pOw0KKwkJYWRkKGFkZFVzZXJzRm9ybSk7DQorDQorICAgICAgICAvL0xpc3Qgdmlldw0KKyAgICAgICAgU2VhcmNoYWJsZURhdGFWaWV3PE9yZ2FuaXNhdGlvbj4gZGF0YVZpZXcgPSBuZXcgU2VhcmNoYWJsZURhdGFWaWV3PE9yZ2FuaXNhdGlvbj4oImdyb3VwTGlzdCIsIG5ldyBTZWFyY2hhYmxlRGF0YVByb3ZpZGVyPE9yZ2FuaXNhdGlvbj4oT3JnYW5pc2F0aW9uRGFvLmNsYXNzKSkgew0KKwkJCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDg3MTU1NTk2Mjg3NTU0Mzk1OTZMOw0KKw0KKwkJCUBPdmVycmlkZQ0KKwkJCXByb3RlY3RlZCB2b2lkIHBvcHVsYXRlSXRlbShJdGVtPE9yZ2FuaXNhdGlvbj4gaXRlbSkgew0KKwkJCQlmaW5hbCBPcmdhbmlzYXRpb24gb3JnYW5pc2F0aW9uID0gaXRlbS5nZXRNb2RlbE9iamVjdCgpOw0KKwkJCQlpdGVtLmFkZChuZXcgTGFiZWwoIm9yZ2FuaXNhdGlvbl9pZCIsICIiICsgb3JnYW5pc2F0aW9uLmdldE9yZ2FuaXNhdGlvbl9pZCgpKSk7DQorCQkJCWl0ZW0uYWRkKG5ldyBMYWJlbCgibmFtZSIsICIiICsgb3JnYW5pc2F0aW9uLmdldE5hbWUoKSkpOw0KKwkJCQlpdGVtLmFkZChuZXcgQWpheEV2ZW50QmVoYXZpb3IoIm9uY2xpY2siKSB7DQorCQkJCQlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAtODA2OTQxMzU2NjgwMDU3MTA2MUw7DQorDQorCQkJCQlwcm90ZWN0ZWQgdm9pZCBvbkV2ZW50KEFqYXhSZXF1ZXN0VGFyZ2V0IHRhcmdldCkgew0KKwkJCQkJCWZvcm0uaGlkZU5ld1JlY29yZCgpOw0KKwkJCQkJCWZvcm0uc2V0TW9kZWxPYmplY3Qob3JnYW5pc2F0aW9uKTsNCisJCQkJCQlmb3JtLnVwZGF0ZVZpZXcodGFyZ2V0KTsNCisJCQkJCQl0YXJnZXQuYXBwZW5kSmF2YVNjcmlwdCgiZ3JvdXBzSW5pdCgpOyIpOw0KKwkJCQkJfQ0KKwkJCQl9KTsNCisJCQkJaXRlbS5hZGQoQXR0cmlidXRlTW9kaWZpZXIuYXBwZW5kKCJjbGFzcyIsICJjbGlja2FibGUgIiArICgoaXRlbS5nZXRJbmRleCgpICUgMiA9PSAxKSA/ICJldmVuIiA6ICJvZGQiKSkpOw0KKwkJCX0NCisJCX07DQorDQorCQkvL1BhZ2luZw0KKwkJYWRkKGxpc3RDb250YWluZXIuYWRkKGRhdGFWaWV3KS5zZXRPdXRwdXRNYXJrdXBJZCh0cnVlKSk7DQorCQlEYXRhVmlld0NvbnRhaW5lcjxPcmdhbmlzYXRpb24+IGNvbnRhaW5lciA9IG5ldyBEYXRhVmlld0NvbnRhaW5lcjxPcmdhbmlzYXRpb24+KGxpc3RDb250YWluZXIsIGRhdGFWaWV3KTsNCisJCWNvbnRhaW5lci5zZXRMaW5rcyhuZXcgT3JkZXJCeUJvcmRlcjxPcmdhbmlzYXRpb24+KCJvcmRlckJ5SWQiLCAib3JnYW5pc2F0aW9uX2lkIiwgY29udGFpbmVyKQ0KKwkJCQksIG5ldyBPcmRlckJ5Qm9yZGVyPE9yZ2FuaXNhdGlvbj4oIm9yZGVyQnlOYW1lIiwgIm5hbWUiLCBjb250YWluZXIpKTsNCisJCWFkZChjb250YWluZXIub3JkZXJMaW5rcyk7DQorCQlhZGQobmV3IFBhZ2VkRW50aXR5TGlzdFBhbmVsKCJuYXZpZ2F0b3IiLCBkYXRhVmlldykgew0KKwkJCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDUwOTcwNDg2MTYwMDM0MTEzNjJMOw0KKw0KKwkJCUBPdmVycmlkZQ0KKwkJCXByb3RlY3RlZCB2b2lkIG9uRXZlbnQoQWpheFJlcXVlc3RUYXJnZXQgdGFyZ2V0KSB7DQorCQkJCXRhcmdldC5hZGQobGlzdENvbnRhaW5lcik7DQorCQkJfQ0KKwkJfSk7DQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL2FkbWluL2xhYmVscy9BZGRMYW5ndWFnZUZvcm0uamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi9sYWJlbHMvQWRkTGFuZ3VhZ2VGb3JtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTVmYmM2NgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi9sYWJlbHMvQWRkTGFuZ3VhZ2VGb3JtLmphdmEKQEAgLTAsMCArMSw4MSBAQAorLyoNCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICogdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuY29tcG9uZW50cy5hZG1pbi5sYWJlbHM7DQorDQoraW1wb3J0IGphdmEudXRpbC5EYXRlOw0KKw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLkZpZWxkTGFuZ3VhZ2VEYW87DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmxhbmcuRmllbGRMYW5ndWFnZTsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmFwcC5BcHBsaWNhdGlvbjsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmFwcC5XZWJTZXNzaW9uOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5hamF4LkFqYXhSZXF1ZXN0VGFyZ2V0Ow0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5hamF4Lm1hcmt1cC5odG1sLmZvcm0uQWpheEJ1dHRvbjsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuZm9ybS5Gb3JtOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5mb3JtLlJlcXVpcmVkVGV4dEZpZWxkOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tb2RlbC5Nb2RlbDsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubW9kZWwuUHJvcGVydHlNb2RlbDsNCisNCisvKioNCisgKiANCisgKiBAYXV0aG9yIHNvbG9tYXgsIHN3YWduZXINCisgKiANCisgKi8NCitwdWJsaWMgY2xhc3MgQWRkTGFuZ3VhZ2VGb3JtIGV4dGVuZHMgRm9ybTxWb2lkPiB7DQorCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDg3NDMyODk2MTA5NzQ5NjI2MzZMOw0KKwlwcml2YXRlIFN0cmluZyBuZXdMYW5ndWFnZU5hbWU7DQorCXByaXZhdGUgU3RyaW5nIG5ld0xhbmd1YWdlSVNPOw0KKwkNCisJcHVibGljIEFkZExhbmd1YWdlRm9ybShTdHJpbmcgaWQsIGZpbmFsIExhbmdQYW5lbCBsYW5nUGFuZWwpIHsNCisJCXN1cGVyKGlkKTsNCisJCQ0KKwkJYWRkKG5ldyBSZXF1aXJlZFRleHRGaWVsZDxTdHJpbmc+KCJuYW1lIiwgbmV3IFByb3BlcnR5TW9kZWw8U3RyaW5nPih0aGlzLCAibmV3TGFuZ3VhZ2VOYW1lIikpKTsNCisJCWFkZChuZXcgUmVxdWlyZWRUZXh0RmllbGQ8U3RyaW5nPigiaXNvIiwgbmV3IFByb3BlcnR5TW9kZWw8U3RyaW5nPih0aGlzLCAibmV3TGFuZ3VhZ2VJU08iKSkpOw0KKwkJDQorCQlhZGQobmV3IEFqYXhCdXR0b24oImFkZCIsIE1vZGVsLm9mKFdlYlNlc3Npb24uZ2V0U3RyaW5nKDM2NkwpKSwgdGhpcykgew0KKwkJCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IC01NTI1OTcwNDE3NTE2ODg3NDBMOw0KKw0KKwkJCUBPdmVycmlkZQ0KKwkJCXB1YmxpYyB2b2lkIG9uU3VibWl0KEFqYXhSZXF1ZXN0VGFyZ2V0IHRhcmdldCwgRm9ybTw/PiBmb3JtKSB7DQorCQkJCUZpZWxkTGFuZ3VhZ2VEYW8gbGFuZ0RhbyA9IEFwcGxpY2F0aW9uLmdldEJlYW4oRmllbGRMYW5ndWFnZURhby5jbGFzcyk7DQorCQkJCQ0KKwkJCQlGaWVsZExhbmd1YWdlIGZsID0gbmV3IEZpZWxkTGFuZ3VhZ2UoKTsNCisJCQkJZmwuc2V0TGFuZ3VhZ2VfaWQobGFuZ0Rhby5nZXROZXh0QXZhaWxhYmxlSWQoKSk7DQorCQkJCWZsLnNldFN0YXJ0dGltZShuZXcgRGF0ZSgpKTsNCisJCQkJZmwuc2V0RGVsZXRlZChmYWxzZSk7DQorCQkJCWZsLnNldE5hbWUobmV3TGFuZ3VhZ2VOYW1lKTsNCisJCQkJZmwuc2V0UnRsKGZhbHNlKTsgLy9GSVhNRQ0KKwkJCQlmbC5zZXRDb2RlKG5ld0xhbmd1YWdlSVNPKTsNCisJCQkJDQorCQkJCXRyeSB7DQorCQkJCQlsYW5nRGFvLnVwZGF0ZUxhbmd1YWdlKGZsKTsNCisJCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsNCisJCQkJCS8vIFRPRE8gYWRkIGZlZWRiYWNrIG1lc3NhZ2UNCisJCQkJCWUucHJpbnRTdGFja1RyYWNlKCk7DQorCQkJCX0NCisNCisJCQkJbGFuZ1BhbmVsLmdldExhbmdGb3JtKCkudXBkYXRlTGFuZ3VhZ2VzKHRhcmdldCk7DQorCQkJCS8qIEZJWE1FDQorCQkJCWxhbmd1YWdlcy5zZXRDaG9pY2VzKGxhbmdEYW8uZ2V0TGFuZ3VhZ2VzKCkpOw0KKwkJCQl0YXJnZXQuYWRkKGxhbmd1YWdlcyk7DQorCQkJCSovDQorCQkJCXRhcmdldC5hcHBlbmRKYXZhU2NyaXB0KCIkKCcjYWRkTGFuZ3VhZ2UnKS5kaWFsb2coJ2Nsb3NlJyk7Iik7DQorCQkJfQ0KKwkJfSk7DQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL2FkbWluL2xhYmVscy9MYWJlbHNGb3JtLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvYWRtaW4vbGFiZWxzL0xhYmVsc0Zvcm0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjc3YmNmCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL2FkbWluL2xhYmVscy9MYWJlbHNGb3JtLmphdmEKQEAgLTAsMCArMSw5OSBAQAorLyoNCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICogdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuY29tcG9uZW50cy5hZG1pbi5sYWJlbHM7DQorDQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuRmllbGRMYW5ndWFnZXNWYWx1ZXNEYW87DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuRmllbGRWYWx1ZURhbzsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMubGFuZy5GaWVsZGxhbmd1YWdlc3ZhbHVlczsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMubGFuZy5GaWVsZHZhbHVlczsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmFwcC5BcHBsaWNhdGlvbjsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmFwcC5XZWJTZXNzaW9uOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuY29tcG9uZW50cy5hZG1pbi5BZG1pbkJhc2VGb3JtOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5hamF4LkFqYXhSZXF1ZXN0VGFyZ2V0Ow0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5iYXNpYy5MYWJlbDsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuZm9ybS5Gb3JtOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5mb3JtLlRleHRBcmVhOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5mb3JtLlRleHRGaWVsZDsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubW9kZWwuQ29tcG91bmRQcm9wZXJ0eU1vZGVsOw0KKw0KKy8qKg0KKyAqIEFkZC9lZGl0L2RlbGV0ZSB7QGxpbmsgRmllbGRsYW5ndWFnZXN2YWx1ZXN9DQorICogDQorICogQGF1dGhvciBzd2FnbmVyDQorICogDQorICovDQorcHVibGljIGNsYXNzIExhYmVsc0Zvcm0gZXh0ZW5kcyBBZG1pbkJhc2VGb3JtPEZpZWxkbGFuZ3VhZ2VzdmFsdWVzPiB7DQorCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IC0xMzA5ODc4OTA5NTI0MzI5MDQ3TDsNCisJcHJpdmF0ZSBMYW5nUGFuZWwgcGFuZWw7DQorCQ0KKwlwdWJsaWMgTGFiZWxzRm9ybShTdHJpbmcgaWQsIExhbmdQYW5lbCBwYW5lbCwgRmllbGRsYW5ndWFnZXN2YWx1ZXMgZmllbGRsYW5ndWFnZXN2YWx1ZXMpIHsNCisJCXN1cGVyKGlkLCBuZXcgQ29tcG91bmRQcm9wZXJ0eU1vZGVsPEZpZWxkbGFuZ3VhZ2VzdmFsdWVzPihmaWVsZGxhbmd1YWdlc3ZhbHVlcykpOw0KKwkJdGhpcy5wYW5lbCA9IHBhbmVsOw0KKwkJDQorCQlhZGQobmV3IExhYmVsKCJmaWVsZHZhbHVlcy5maWVsZHZhbHVlc19pZCIpKTsNCisJCWFkZChuZXcgVGV4dEZpZWxkPFN0cmluZz4oImZpZWxkdmFsdWVzLm5hbWUiKSk7DQorCQlhZGQobmV3IFRleHRBcmVhPFN0cmluZz4oInZhbHVlIikpOw0KKwl9DQorDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgdm9pZCBvbk5ld1N1Ym1pdChBamF4UmVxdWVzdFRhcmdldCB0YXJnZXQsIEZvcm08Pz4gZikgew0KKwkJRmllbGRsYW5ndWFnZXN2YWx1ZXMgZmx2ID0gbmV3IEZpZWxkbGFuZ3VhZ2VzdmFsdWVzKCk7DQorCQlmbHYuc2V0TGFuZ3VhZ2VfaWQocGFuZWwubGFuZ3VhZ2UuZ2V0TGFuZ3VhZ2VfaWQoKSk7DQorCQl0aGlzLnNldE1vZGVsT2JqZWN0KGZsdik7DQorCQl0YXJnZXQuYWRkKHRoaXMpOw0KKwkJdGFyZ2V0LmFwcGVuZEphdmFTY3JpcHQoImxhYmVsc0luaXQoKTsiKTsNCisJfQ0KKw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIHZvaWQgb25SZWZyZXNoU3VibWl0KEFqYXhSZXF1ZXN0VGFyZ2V0IHRhcmdldCwgRm9ybTw/PiBmb3JtKSB7DQorCQlGaWVsZGxhbmd1YWdlc3ZhbHVlcyBmbHYgPSBnZXRNb2RlbE9iamVjdCgpOw0KKwkJaWYgKGZsdi5nZXRGaWVsZGxhbmd1YWdlc3ZhbHVlc19pZCgpICE9IG51bGwpIHsNCisJCQlmbHYgPSBBcHBsaWNhdGlvbi5nZXRCZWFuKEZpZWxkTGFuZ3VhZ2VzVmFsdWVzRGFvLmNsYXNzKQ0KKwkJCQkJLmdldChnZXRNb2RlbE9iamVjdCgpLmdldEZpZWxkbGFuZ3VhZ2VzdmFsdWVzX2lkKCkpOw0KKwkJfSBlbHNlIHsNCisJCQlmbHYgPSBuZXcgRmllbGRsYW5ndWFnZXN2YWx1ZXMoKTsNCisJCX0NCisJCXRoaXMuc2V0TW9kZWxPYmplY3QoZmx2KTsNCisJCXRhcmdldC5hZGQodGhpcyk7DQorCQl0YXJnZXQuYXBwZW5kSmF2YVNjcmlwdCgibGFiZWxzSW5pdCgpOyIpOw0KKwl9DQorDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgdm9pZCBvblNhdmVTdWJtaXQoQWpheFJlcXVlc3RUYXJnZXQgdGFyZ2V0LCBGb3JtPD8+IGZvcm0pIHsNCisJCUZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGZsdiA9IGdldE1vZGVsT2JqZWN0KCk7DQorCQlGaWVsZHZhbHVlcyBmdiA9IGZsdi5nZXRGaWVsZHZhbHVlcygpOw0KKwkJQXBwbGljYXRpb24uZ2V0QmVhbihGaWVsZFZhbHVlRGFvLmNsYXNzKS51cGRhdGUoZnYsIFdlYlNlc3Npb24uZ2V0VXNlcklkKCkpOw0KKwkJDQorCQlmbHYuc2V0RmllbGR2YWx1ZXMoZnYpOw0KKwkJQXBwbGljYXRpb24uZ2V0QmVhbihGaWVsZExhbmd1YWdlc1ZhbHVlc0Rhby5jbGFzcykNCisJCQkudXBkYXRlKGZsdiwgV2ViU2Vzc2lvbi5nZXRVc2VySWQoKSk7DQorCQloaWRlTmV3UmVjb3JkKCk7DQorCQl0YXJnZXQuYWRkKHBhbmVsLmxpc3RDb250YWluZXIpOw0KKwkJdGFyZ2V0LmFwcGVuZEphdmFTY3JpcHQoImxhYmVsc0luaXQoKTsiKTsNCisJfQ0KKw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIHZvaWQgb25EZWxldGVTdWJtaXQoQWpheFJlcXVlc3RUYXJnZXQgdGFyZ2V0LCBGb3JtPD8+IGZvcm0pIHsNCisJCUFwcGxpY2F0aW9uLmdldEJlYW4oRmllbGRMYW5ndWFnZXNWYWx1ZXNEYW8uY2xhc3MpDQorCQkJLmRlbGV0ZShnZXRNb2RlbE9iamVjdCgpLCBXZWJTZXNzaW9uLmdldFVzZXJJZCgpKTsNCisJCXRhcmdldC5hZGQocGFuZWwubGlzdENvbnRhaW5lcik7DQorCQl0YXJnZXQuYXBwZW5kSmF2YVNjcmlwdCgibGFiZWxzSW5pdCgpOyIpOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi9sYWJlbHMvTGFuZ0Zvcm0uamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi9sYWJlbHMvTGFuZ0Zvcm0uamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjQxODM5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL2FkbWluL2xhYmVscy9MYW5nRm9ybS5qYXZhCkBAIC0wLDAgKzEsMTE4IEBACisvKg0KKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgKiB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5jb21wb25lbnRzLmFkbWluLmxhYmVsczsNCisNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5GaWVsZExhbmd1YWdlRGFvOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5sYW5nLkZpZWxkTGFuZ3VhZ2U7DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5hcHAuQXBwbGljYXRpb247DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5jb21wb25lbnRzLkNvbmZpcm1DYWxsTGlzdGVuZXI7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LmFqYXguQWpheEV2ZW50QmVoYXZpb3I7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LmFqYXguQWpheFJlcXVlc3RUYXJnZXQ7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LmFqYXguYXR0cmlidXRlcy5BamF4UmVxdWVzdEF0dHJpYnV0ZXM7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LmFqYXguZm9ybS5BamF4Rm9ybUNvbXBvbmVudFVwZGF0aW5nQmVoYXZpb3I7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LmFqYXguZm9ybS5BamF4Rm9ybVZhbGlkYXRpbmdCZWhhdmlvcjsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuV2ViTWFya3VwQ29udGFpbmVyOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5mb3JtLkNob2ljZVJlbmRlcmVyOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5mb3JtLkRyb3BEb3duQ2hvaWNlOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5mb3JtLkZvcm07DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1vZGVsLlByb3BlcnR5TW9kZWw7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LnV0aWwudGltZS5EdXJhdGlvbjsNCisNCisvKioNCisgKiBNb2RpZnkgdGhlIGxhbmd1YWdlIHNlbGVjdGlvbiwgYWRkL2RlbGV0ZSB7QGxpbmsgRmllbGRMYW5ndWFnZX0NCisgKiANCisgKiBAYXV0aG9yIHN3YWduZXINCisgKiANCisgKi8NCitwdWJsaWMgY2xhc3MgTGFuZ0Zvcm0gZXh0ZW5kcyBGb3JtPFZvaWQ+IHsNCisNCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMjgzNzcwMjk0MTIxMTYzNjYwOUw7DQorCXByaXZhdGUgRHJvcERvd25DaG9pY2U8RmllbGRMYW5ndWFnZT4gbGFuZ3VhZ2VzOw0KKw0KKwlwdWJsaWMgdm9pZCB1cGRhdGVMYW5ndWFnZXMoQWpheFJlcXVlc3RUYXJnZXQgdGFyZ2V0KSB7DQorCQlGaWVsZExhbmd1YWdlRGFvIGxhbmdEYW8gPSBBcHBsaWNhdGlvbg0KKwkJCQkuZ2V0QmVhbihGaWVsZExhbmd1YWdlRGFvLmNsYXNzKTsNCisJCWxhbmd1YWdlcy5zZXRDaG9pY2VzKGxhbmdEYW8uZ2V0TGFuZ3VhZ2VzKCkpOw0KKwkJLy8gYWRkKGxhbmd1YWdlcyk7DQorCQl0YXJnZXQuYWRkKGxhbmd1YWdlcyk7DQorCX0NCisNCisJLyoqDQorCSAqIFJlbmRlciBNYWluDQorCSAqIA0KKwkgKiBAcGFyYW0gaWQNCisJICogQHBhcmFtIGxpc3RDb250YWluZXINCisJICogQHBhcmFtIGxhbmd1YWdlDQorCSAqIEBwYXJhbSBsYW5nUGFuZWwNCisJICovDQorCXB1YmxpYyBMYW5nRm9ybShTdHJpbmcgaWQsIGZpbmFsIFdlYk1hcmt1cENvbnRhaW5lciBsaXN0Q29udGFpbmVyLA0KKwkJCWZpbmFsIExhbmdQYW5lbCBsYW5nUGFuZWwpIHsNCisJCXN1cGVyKGlkKTsNCisJCXNldE91dHB1dE1hcmt1cElkKHRydWUpOw0KKw0KKwkJRmllbGRMYW5ndWFnZURhbyBsYW5nRGFvID0gQXBwbGljYXRpb24NCisJCQkJLmdldEJlYW4oRmllbGRMYW5ndWFnZURhby5jbGFzcyk7DQorCQkNCisJCWxhbmd1YWdlcyA9IG5ldyBEcm9wRG93bkNob2ljZTxGaWVsZExhbmd1YWdlPigibGFuZ3VhZ2UiDQorCQkJCSwgbmV3IFByb3BlcnR5TW9kZWw8RmllbGRMYW5ndWFnZT4obGFuZ1BhbmVsLCAibGFuZ3VhZ2UiKQ0KKwkJCQksIGxhbmdEYW8uZ2V0TGFuZ3VhZ2VzKCkNCisJCQkJLCBuZXcgQ2hvaWNlUmVuZGVyZXI8RmllbGRMYW5ndWFnZT4oIm5hbWUiLCAibGFuZ3VhZ2VfaWQiKSk7DQorCQkJCQ0KKwkJbGFuZ3VhZ2VzLmFkZChuZXcgQWpheEZvcm1Db21wb25lbnRVcGRhdGluZ0JlaGF2aW9yKCJvbmNoYW5nZSIpIHsNCisJCQlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAtMjA1NTkxMjgxNTA3MzM4NzUzNkw7DQorDQorCQkJQE92ZXJyaWRlDQorCQkJcHJvdGVjdGVkIHZvaWQgb25VcGRhdGUoQWpheFJlcXVlc3RUYXJnZXQgdGFyZ2V0KSB7DQorCQkJCXRhcmdldC5hZGQobGlzdENvbnRhaW5lcik7DQorCQkJfQ0KKwkJfSk7DQorCQlhZGQobGFuZ3VhZ2VzKTsNCisNCisJCWFkZChuZXcgV2ViTWFya3VwQ29udGFpbmVyKCJkZWxldGVMYW5nQnRuIikuYWRkKG5ldyBBamF4RXZlbnRCZWhhdmlvcigib25jbGljayIpew0KKwkJCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IC0xNjUwOTQ2MzQzMDczMDY4Njg2TDsNCisNCisJCQlAT3ZlcnJpZGUNCisJCQlwcm90ZWN0ZWQgdm9pZCB1cGRhdGVBamF4QXR0cmlidXRlcyhBamF4UmVxdWVzdEF0dHJpYnV0ZXMgYXR0cmlidXRlcykgew0KKwkJCQlzdXBlci51cGRhdGVBamF4QXR0cmlidXRlcyhhdHRyaWJ1dGVzKTsNCisJCQkJYXR0cmlidXRlcy5nZXRBamF4Q2FsbExpc3RlbmVycygpLmFkZChuZXcgQ29uZmlybUNhbGxMaXN0ZW5lcig4MzNMKSk7DQorCQkJfQ0KKwkJCQ0KKwkJCUBPdmVycmlkZQ0KKwkJCXByb3RlY3RlZCB2b2lkIG9uRXZlbnQoQWpheFJlcXVlc3RUYXJnZXQgdGFyZ2V0KSB7DQorCQkJCWxhbmdQYW5lbC5sYW5ndWFnZS5zZXREZWxldGVkKHRydWUpOw0KKwkJCQlGaWVsZExhbmd1YWdlRGFvIGxhbmdEYW8gPSBBcHBsaWNhdGlvbi5nZXRCZWFuKEZpZWxkTGFuZ3VhZ2VEYW8uY2xhc3MpOw0KKwkJCQl0cnkgew0KKwkJCQkJbGFuZ0Rhby51cGRhdGVMYW5ndWFnZShsYW5nUGFuZWwubGFuZ3VhZ2UpOw0KKwkJCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgew0KKwkJCQkJLy8gVE9ETyBhZGQgZmVlZGJhY2sgbWVzc2FnZQ0KKwkJCQkJZS5wcmludFN0YWNrVHJhY2UoKTsNCisJCQkJfQ0KKwkJCQlsYW5ndWFnZXMuc2V0Q2hvaWNlcyhsYW5nRGFvLmdldExhbmd1YWdlcygpKTsNCisJCQkJdGFyZ2V0LmFkZChsYW5ndWFnZXMpOw0KKwkJCQkvLyBGSVhNRSBuZWVkIHRvIGZvcmNlIHVwZGF0ZSBsaXN0IGNvbnRhaW5lcg0KKwkJCQl0YXJnZXQuYWRkKGxpc3RDb250YWluZXIpOw0KKwkJCX0NCisJCX0pKTsgDQorDQorCQkvLyBhdHRhY2ggYW4gYWpheCB2YWxpZGF0aW9uIGJlaGF2aW9yIHRvIGFsbCBmb3JtIGNvbXBvbmVudCdzIGtleWRvd24NCisJCS8vIGV2ZW50IGFuZCB0aHJvdHRsZSBpdCBkb3duIHRvIG9uY2UgcGVyIHNlY29uZA0KKwkJQWpheEZvcm1WYWxpZGF0aW5nQmVoYXZpb3IuYWRkVG9BbGxGb3JtQ29tcG9uZW50cyh0aGlzLCAia2V5ZG93biIsDQorCQkJCUR1cmF0aW9uLk9ORV9TRUNPTkQpOw0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi9sYWJlbHMvTGFuZ1BhbmVsLmh0bWwgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvYWRtaW4vbGFiZWxzL0xhbmdQYW5lbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyZGJmNDcKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvYWRtaW4vbGFiZWxzL0xhbmdQYW5lbC5odG1sCkBAIC0wLDAgKzEsMTAzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGh0bWwgeG1sbnM6d2lja2V0PSJodHRwOi8vd2lja2V0LmFwYWNoZS5vcmciPgorCTx3aWNrZXQ6cGFuZWw+CisJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwkJCWZ1bmN0aW9uIGxhYmVsc0luaXQoKSB7CisJCQkJJCgnI2FkZExhbmd1YWdlJykuZGlhbG9nKHsKKwkJCQkJY2xvc2VPbkVzY2FwZTogdHJ1ZQorCQkJCQksIGF1dG9PcGVuOiBmYWxzZQorCQkJCQksIHJlc2l6YWJsZTogZmFsc2UKKwkJCQl9KTsKKwkJCQl2YXIgZG9jdW1lbnRIZWlnaHQgPSAkKGRvY3VtZW50KS5oZWlnaHQoKTsKKyAgICAgICAgICAgICAgICAkKCcjYWRtaW5Gb3JtJykuaGVpZ2h0KGRvY3VtZW50SGVpZ2h0LTExNCk7CisgICAgICAgICAgICAgICAgJCgnI2FkbWluVGFibGUnKS5oZWlnaHQoZG9jdW1lbnRIZWlnaHQtMTY0KTsKKwkJCX07CisJCTwvc2NyaXB0PgorCQk8ZGl2IGNsYXNzPSJhZG1pblBhbmVsIj4KKwkJCTxkaXYgY2xhc3M9ImFkbWluUGFuZWxDb2x1bW5UYWJsZSI+CisJCQkJPGZvcm0gd2lja2V0OmlkPSJsYW5nRm9ybSIgY2xhc3M9ImFkZExhbmd1YWdlUGFuZWwiPgorCQkJCQk8ZGl2IGNsYXNzPSJmb3JtTmV3QnV0dG9uIiB3aWNrZXQ6b21tZXNzYWdlPSJ0aXRsZTozNjIiIAorCQkJCQkJb25jbGljaz0iJCgnI2FkZExhbmd1YWdlIDp0ZXh0JykudmFsKCcnKTsgJCgnI2FkZExhbmd1YWdlJykuZGlhbG9nKCdvcGVuJyk7Ij48aW5wdXQgdHlwZT0iYnV0dG9uIiB0aXRsZT0iIi8+PC9kaXY+CisJCQkJCTxkaXYgd2lja2V0OmlkPSJkZWxldGVMYW5nQnRuIiBjbGFzcz0iZm9ybUNhbmNlbEJ1dHRvbiIgd2lja2V0Om9tbWVzc2FnZT0idGl0bGU6MzYzIj48aW5wdXQgdHlwZT0iYnV0dG9uIiB0aXRsZT0iIi8+PC9kaXY+CisJCQkJCTxzZWxlY3Qgd2lja2V0OmlkPSJsYW5ndWFnZSI+PC9zZWxlY3Q+CisJCQkJPC9mb3JtPgorCQkJCTxzcGFuIHdpY2tldDppZD0ibmF2aWdhdG9yIj5bZGF0YXZpZXcgbmF2aWdhdG9yXTwvc3Bhbj4KKwkJCQk8dGFibGUgY2xhc3M9ImFkbWluTGlzdFRhYmxlIj4KKwkJCQkJPHRoZWFkPgorCQkJCQkJPHRyPgorCQkJCQkJCTx0aCBjbGFzcz0idGhyZWVfY29sdW1uX2xheW91dF9jb2x1bW4xIj48c3BhbiB3aWNrZXQ6aWQ9Im9yZGVyQnlJZCI+PC9zcGFuPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMzUwIiAvPjwvdGg+CisJCQkJCQkJPHRoIGNsYXNzPSJ0aHJlZV9jb2x1bW5fbGF5b3V0X2NvbHVtbjIiPjxzcGFuIHdpY2tldDppZD0ib3JkZXJCeU5hbWUiPjwvc3Bhbj48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjM1MSIgLz48L3RoPgorCQkJCQkJCTx0aCBjbGFzcz0idGhyZWVfY29sdW1uX2xheW91dF9jb2x1bW4zIj48c3BhbiB3aWNrZXQ6aWQ9Im9yZGVyQnlWYWx1ZSI+PC9zcGFuPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMzUyIiAvPjwvdGg+CisJCQkJCQk8L3RyPgorCQkJCQk8L3RoZWFkPgkKKwkJCQk8L3RhYmxlPgorCQkJCTxkaXYgY2xhc3M9InRhYmxlV3JhcHBlciIgaWQ9ImFkbWluVGFibGUiPgorCQkJCQk8dGFibGUgY2xhc3M9ImFkbWluTGlzdFRhYmxlIj4KKwkJCQkJCTx0Ym9keSB3aWNrZXQ6aWQ9Imxpc3RDb250YWluZXIiID4KKwkJCQkgICAgCQk8dHIgd2lja2V0OmlkPSJsYW5nTGlzdCI+CisJCQkJCQkJCTx0ZCBjbGFzcz0idGhyZWVfY29sdW1uX2xheW91dF9jb2x1bW4xIj48ZGl2IGNsYXNzPSJ0aHJlZV9jb2x1bW5fbGF5b3V0X2RpdmNvbHVtbjEiPjxzcGFuIHdpY2tldDppZD0ibGJsSWQiPjwvc3Bhbj48L2Rpdj48L3RkPgorCQkJCQkJCQk8dGQgY2xhc3M9InRocmVlX2NvbHVtbl9sYXlvdXRfY29sdW1uMiI+PGRpdiBjbGFzcz0idGhyZWVfY29sdW1uX2xheW91dF9kaXZjb2x1bW4yIj48c3BhbiB3aWNrZXQ6aWQ9Im5hbWUiPjwvc3Bhbj48L2Rpdj48L3RkPgorCQkJCQkJCQk8dGQgY2xhc3M9InRocmVlX2NvbHVtbl9sYXlvdXRfY29sdW1uMyI+PGRpdiBjbGFzcz0idGhyZWVfY29sdW1uX2xheW91dF9kaXZjb2x1bW4zIj48c3BhbiB3aWNrZXQ6aWQ9InZhbHVlIj48L3NwYW4+PC9kaXY+PC90ZD4KKwkJCQkJCQk8L3RyPgorCQkJCQkJPC90Ym9keT4JCisJCQkJCTwvdGFibGU+CisJCQkJPC9kaXY+CisJCQk8L2Rpdj4KKwkJCTxkaXYgY2xhc3M9ImFkbWluUGFuZWxDb2x1bW5Gb3JtIj4KKwkJCQk8Zm9ybSB3aWNrZXQ6aWQ9ImZvcm0iIGNsYXNzPSJhZG1pbkZvcm0iPgorCQkJCQk8ZGl2IHdpY2tldDppZD0iYnV0dG9ucyI+PC9kaXY+CisJCQkJCTxkaXYgY2xhc3M9InNjcm9sbGNvbnRlbnQiIGlkPSJhZG1pbkZvcm0iPgorCQkJCQkJPGZpZWxkc2V0PgorCQkJCQkJCTxsZWdlbmQ+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIzNTMiIC8+PC9sZWdlbmQ+CisJCQkJCQkJPGRpdiBjbGFzcz0iZm9ybWVsZW1lbnQiPgorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMzU2IiAvPjwvbGFiZWw+PHNwYW4gd2lja2V0OmlkPSJmaWVsZHZhbHVlcy5maWVsZHZhbHVlc19pZCI+PC9zcGFuPgorCQkJCQkJCTwvZGl2PgorCSAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtZWxlbWVudCI+CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIzNTQiIC8+PC9sYWJlbD48aW5wdXQgdHlwZT0idGV4dCIgd2lja2V0OmlkPSJmaWVsZHZhbHVlcy5uYW1lIi8+CisJCQkJCQkJPC9kaXY+CisJICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybWVsZW1lbnQiPgorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMzU1IiAvPjwvbGFiZWw+PHRleHRhcmVhIHdpY2tldDppZD0idmFsdWUiPjwvdGV4dGFyZWE+CisJICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+IAorCQkJCQkJPC9maWVsZHNldD4KKwkJCQkJPC9kaXY+CisJCQkJPC9mb3JtPgorCQkJPC9kaXY+CisJCTwvZGl2PgorCQk8ZGl2IGlkPSJhZGRMYW5ndWFnZSIgd2lja2V0Om9tbWVzc2FnZT0idGl0bGU6MzY0IiBzdHlsZT0iZGlzcGxheTogbm9uZTsiPgorCQkJPGZvcm0gd2lja2V0OmlkPSJhZGRMYW5nRm9ybSI+CisJCQkJPHRhYmxlPgorCQkJCQk8dHI+CisJCQkJCQk8dGQ+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIzNjUiIC8+PC90ZD4KKwkJCQkJCTx0ZD48aW5wdXQgdHlwZT0idGV4dCIgd2lja2V0OmlkPSJuYW1lIi8+PC90ZD4KKwkJCQkJPC90cj4KKwkJCQkJPHRyPgorCQkJCQkJPHRkPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMTQyMiIgLz48L3RkPgorCQkJCQkJPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiB3aWNrZXQ6aWQ9ImlzbyIvPjwvdGQ+CisJCQkJCTwvdHI+CisJCQkJCTx0cj4KKwkJCQkJCTx0ZCBhbGlnbj0icmlnaHQiIGNvbHNwYW49IjIiPjxpbnB1dCB0eXBlPSJzdWJtaXQiIHdpY2tldDppZD0iYWRkIi8+PC90ZD4KKwkJCQkJPC90cj4KKwkJCQk8L3RhYmxlPgorCQkJPC9mb3JtPgorCQk8L2Rpdj4KKwk8L3dpY2tldDpwYW5lbD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi9sYWJlbHMvTGFuZ1BhbmVsLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvYWRtaW4vbGFiZWxzL0xhbmdQYW5lbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyOTE1NGIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvYWRtaW4vbGFiZWxzL0xhbmdQYW5lbC5qYXZhCkBAIC0wLDAgKzEsMTM5IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5jb21wb25lbnRzLmFkbWluLmxhYmVsczsKKworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuRmllbGRMYW5ndWFnZURhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLkZpZWxkVmFsdWVEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMubGFuZy5GaWVsZExhbmd1YWdlOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmxhbmcuRmllbGRsYW5ndWFnZXN2YWx1ZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMubGFuZy5GaWVsZHZhbHVlczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuYXBwLkFwcGxpY2F0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5jb21wb25lbnRzLmFkbWluLkFkbWluUGFuZWw7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmNvbXBvbmVudHMuYWRtaW4uU2VhcmNoYWJsZURhdGFWaWV3OworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5jb21wb25lbnRzLmFkbWluLlBhZ2VkRW50aXR5TGlzdFBhbmVsOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5kYXRhLkRhdGFWaWV3Q29udGFpbmVyOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5kYXRhLlNlYXJjaGFibGVEYXRhUHJvdmlkZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmRhdGEuT3JkZXJCeUJvcmRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5BdHRyaWJ1dGVNb2RpZmllcjsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5hamF4LkFqYXhFdmVudEJlaGF2aW9yOworaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LmFqYXguQWpheFJlcXVlc3RUYXJnZXQ7CitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuV2ViTWFya3VwQ29udGFpbmVyOworaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5odG1sLmJhc2ljLkxhYmVsOworaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5yZXBlYXRlci5JdGVtOworCisvKioKKyAqIExhbmd1YWdlIEVkaXRvciwgYWRkL2luc2VydC91cGRhdGUge0BsaW5rIEZpZWxkbGFuZ3VhZ2VzdmFsdWVzfSBhbmQKKyAqIGFkZC9kZWxldGUge0BsaW5rIEZpZWxkTGFuZ3VhZ2V9IGNvbnRhaW5zIHNldmVyYWwgRm9ybXMgYW5kIG9uZSBsaXN0CisgKiAKKyAqIEBhdXRob3Igc29sb21heCwgc3dhZ25lcgorICogCisgKi8KK3B1YmxpYyBjbGFzcyBMYW5nUGFuZWwgZXh0ZW5kcyBBZG1pblBhbmVsIHsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSA1OTA0MTgwODEzMTk4MDE2NTkyTDsKKworCUZpZWxkTGFuZ3VhZ2UgbGFuZ3VhZ2U7CisJZmluYWwgV2ViTWFya3VwQ29udGFpbmVyIGxpc3RDb250YWluZXI7CisJcHJpdmF0ZSBMYW5nRm9ybSBsYW5nRm9ybTsKKwkKKwlAT3ZlcnJpZGUKKwlwdWJsaWMgdm9pZCBvbk1lbnVQYW5lbExvYWQoQWpheFJlcXVlc3RUYXJnZXQgdGFyZ2V0KSB7CisJCXRhcmdldC5hcHBlbmRKYXZhU2NyaXB0KCJsYWJlbHNJbml0KCk7Iik7CisJfQorCisJQFN1cHByZXNzV2FybmluZ3MoInVuY2hlY2tlZCIpCisJcHVibGljIExhbmdQYW5lbChTdHJpbmcgaWQpIHsKKwkJc3VwZXIoaWQpOworCQlGaWVsZExhbmd1YWdlRGFvIGxhbmdEYW8gPSBBcHBsaWNhdGlvbgorCQkJCS5nZXRCZWFuKEZpZWxkTGFuZ3VhZ2VEYW8uY2xhc3MpOworCQlsYW5ndWFnZSA9IGxhbmdEYW8uZ2V0RmllbGRMYW5ndWFnZUJ5SWQoMUwpOworCisJCUZpZWxkbGFuZ3VhZ2VzdmFsdWVzIGZsdiA9IG5ldyBGaWVsZGxhbmd1YWdlc3ZhbHVlcygpOworCQlmbHYuc2V0TGFuZ3VhZ2VfaWQobGFuZ3VhZ2UuZ2V0TGFuZ3VhZ2VfaWQoKSk7CisJCWZpbmFsIExhYmVsc0Zvcm0gZm9ybSA9IG5ldyBMYWJlbHNGb3JtKCJmb3JtIiwgdGhpcywgZmx2KTsKKwkJZm9ybS5zaG93TmV3UmVjb3JkKCk7CisJCWFkZChmb3JtKTsKKworCQlmaW5hbCBTZWFyY2hhYmxlRGF0YVZpZXc8RmllbGR2YWx1ZXM+IGRhdGFWaWV3ID0gbmV3IFNlYXJjaGFibGVEYXRhVmlldzxGaWVsZHZhbHVlcz4oCisJCQkJImxhbmdMaXN0IgorCQkJCSwgbmV3IFNlYXJjaGFibGVEYXRhUHJvdmlkZXI8RmllbGR2YWx1ZXM+KEZpZWxkVmFsdWVEYW8uY2xhc3MpIHsKKwkJCQkJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gLTY4MjI3ODkzNTQ4NjA5ODg2MjZMOworCisJCQkJCUBPdmVycmlkZQorCQkJCQlwdWJsaWMgbG9uZyBzaXplKCkgeworCQkJCQkJcmV0dXJuIHNlYXJjaCA9PSBudWxsCisJCQkJCQkJCT8gQXBwbGljYXRpb24uZ2V0QmVhbihGaWVsZFZhbHVlRGFvLmNsYXNzKS5jb3VudCgpCisJCQkJCQkJCTogQXBwbGljYXRpb24uZ2V0QmVhbihGaWVsZFZhbHVlRGFvLmNsYXNzKS5jb3VudChsYW5ndWFnZS5nZXRMYW5ndWFnZV9pZCgpLCBzZWFyY2gpOworCQkJCQl9CisJCQkJCQorCQkJCQlwdWJsaWMgSXRlcmF0b3I8PyBleHRlbmRzIEZpZWxkdmFsdWVzPiBpdGVyYXRvcihsb25nIGZpcnN0LCBsb25nIGNvdW50KSB7CisJCQkJCQlyZXR1cm4gKHNlYXJjaCA9PSBudWxsICYmIGdldFNvcnQoKSA9PSBudWxsCisJCQkJCQkJCT8gQXBwbGljYXRpb24uZ2V0QmVhbihGaWVsZFZhbHVlRGFvLmNsYXNzKS5nZXQobGFuZ3VhZ2UuZ2V0TGFuZ3VhZ2VfaWQoKSwgKGludClmaXJzdCwgKGludCljb3VudCkKKwkJCQkJCQkJOiBBcHBsaWNhdGlvbi5nZXRCZWFuKEZpZWxkVmFsdWVEYW8uY2xhc3MpLmdldChsYW5ndWFnZS5nZXRMYW5ndWFnZV9pZCgpLCBzZWFyY2gsIChpbnQpZmlyc3QsIChpbnQpY291bnQsIGdldFNvcnRTdHIoKSkpLml0ZXJhdG9yKCk7CisJCQkJCX0KKwkJCQl9KSB7CisJCQlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSA4NzE1NTU5NjI4NzU1NDM5NTk2TDsKKworCQkJQE92ZXJyaWRlCisJCQlwcm90ZWN0ZWQgdm9pZCBwb3B1bGF0ZUl0ZW0oZmluYWwgSXRlbTxGaWVsZHZhbHVlcz4gaXRlbSkgeworCQkJCWZpbmFsIEZpZWxkdmFsdWVzIGZ2ID0gaXRlbS5nZXRNb2RlbE9iamVjdCgpOworCQkJCWl0ZW0uYWRkKG5ldyBMYWJlbCgibGJsSWQiLCAiIiArIGZ2LmdldEZpZWxkdmFsdWVzX2lkKCkpKTsKKwkJCQlpdGVtLmFkZChuZXcgTGFiZWwoIm5hbWUiLCBmdi5nZXROYW1lKCkpKTsKKwkJCQlpdGVtLmFkZChuZXcgTGFiZWwoInZhbHVlIiwgZnYuZ2V0RmllbGRsYW5ndWFnZXN2YWx1ZSgpICE9IG51bGwgPyBmdi5nZXRGaWVsZGxhbmd1YWdlc3ZhbHVlKCkuZ2V0VmFsdWUoKSA6IG51bGwpKTsKKwkJCQlpdGVtLmFkZChuZXcgQWpheEV2ZW50QmVoYXZpb3IoIm9uY2xpY2siKSB7CisJCQkJCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IC04MDY5NDEzNTY2ODAwNTcxMDYxTDsKKworCQkJCQlwcm90ZWN0ZWQgdm9pZCBvbkV2ZW50KEFqYXhSZXF1ZXN0VGFyZ2V0IHRhcmdldCkgeworCQkJCQkJZm9ybS5zZXRNb2RlbE9iamVjdChmdi5nZXRGaWVsZGxhbmd1YWdlc3ZhbHVlKCkpOworCQkJCQkJZm9ybS5oaWRlTmV3UmVjb3JkKCk7CisJCQkJCQl0YXJnZXQuYWRkKGZvcm0pOworCQkJCQkJdGFyZ2V0LmFwcGVuZEphdmFTY3JpcHQoImxhYmVsc0luaXQoKTsiKTsKKwkJCQkJfQorCQkJCX0pOworCQkJCWl0ZW0uYWRkKEF0dHJpYnV0ZU1vZGlmaWVyLmFwcGVuZCgiY2xhc3MiLCAiY2xpY2thYmxlICIKKwkJCQkJCSsgKChpdGVtLmdldEluZGV4KCkgJSAyID09IDEpID8gImV2ZW4iIDogIm9kZCIpKSk7CisJCQl9CisJCX07CisKKwkJbGlzdENvbnRhaW5lciA9IG5ldyBXZWJNYXJrdXBDb250YWluZXIoImxpc3RDb250YWluZXIiKTsKKwkJYWRkKGxpc3RDb250YWluZXIuYWRkKGRhdGFWaWV3KS5zZXRPdXRwdXRNYXJrdXBJZCh0cnVlKSk7CisJCURhdGFWaWV3Q29udGFpbmVyPEZpZWxkdmFsdWVzPiBjb250YWluZXIgPSBuZXcgRGF0YVZpZXdDb250YWluZXI8RmllbGR2YWx1ZXM+KGxpc3RDb250YWluZXIsIGRhdGFWaWV3KTsKKwkJY29udGFpbmVyLnNldExpbmtzKG5ldyBPcmRlckJ5Qm9yZGVyPEZpZWxkdmFsdWVzPigib3JkZXJCeUlkIiwgImZpZWxkdmFsdWVzLmZpZWxkdmFsdWVzX2lkIiwgY29udGFpbmVyKQorCQkJCSwgbmV3IE9yZGVyQnlCb3JkZXI8RmllbGR2YWx1ZXM+KCJvcmRlckJ5TmFtZSIsICJmaWVsZHZhbHVlcy5uYW1lIiwgY29udGFpbmVyKQorCQkJCSwgbmV3IE9yZGVyQnlCb3JkZXI8RmllbGR2YWx1ZXM+KCJvcmRlckJ5VmFsdWUiLCAidmFsdWUiLCBjb250YWluZXIpKTsKKwkJYWRkKGNvbnRhaW5lci5vcmRlckxpbmtzKTsKKwkJYWRkKG5ldyBQYWdlZEVudGl0eUxpc3RQYW5lbCgibmF2aWdhdG9yIiwgZGF0YVZpZXcpIHsKKwkJCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDUwOTcwNDg2MTYwMDM0MTEzNjJMOworCisJCQlAT3ZlcnJpZGUKKwkJCXByb3RlY3RlZCB2b2lkIG9uRXZlbnQoQWpheFJlcXVlc3RUYXJnZXQgdGFyZ2V0KSB7CisJCQkJZGF0YVZpZXcubW9kZWxDaGFuZ2luZygpOworCQkJCXRhcmdldC5hZGQobGlzdENvbnRhaW5lcik7CisJCQl9CisJCX0pOworCQlsYW5nRm9ybSA9IG5ldyBMYW5nRm9ybSgibGFuZ0Zvcm0iLCBsaXN0Q29udGFpbmVyLCB0aGlzKTsKKwkJYWRkKGxhbmdGb3JtKTsKKwkJYWRkKG5ldyBBZGRMYW5ndWFnZUZvcm0oImFkZExhbmdGb3JtIiwgdGhpcykpOworCX0KKworCXB1YmxpYyBMYW5nRm9ybSBnZXRMYW5nRm9ybSgpIHsKKwkJcmV0dXJuIGxhbmdGb3JtOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi9sZGFwcy9MZGFwRm9ybS5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL2FkbWluL2xkYXBzL0xkYXBGb3JtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTk5ZDY4NgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi9sZGFwcy9MZGFwRm9ybS5qYXZhCkBAIC0wLDAgKzEsMTE3IEBACisvKg0KKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgKiB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5jb21wb25lbnRzLmFkbWluLmxkYXBzOw0KKw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLmRhby5MZGFwQ29uZmlnRGFvOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5MZGFwQ29uZmlnOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuYXBwLkFwcGxpY2F0aW9uOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuYXBwLldlYlNlc3Npb247DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5jb21wb25lbnRzLmFkbWluLkFkbWluQmFzZUZvcm07DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LmFqYXguQWpheFJlcXVlc3RUYXJnZXQ7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LmFqYXguZm9ybS5BamF4Rm9ybVZhbGlkYXRpbmdCZWhhdmlvcjsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQuZGF0ZXRpbWUubWFya3VwLmh0bWwuYmFzaWMuRGF0ZUxhYmVsOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5XZWJNYXJrdXBDb250YWluZXI7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5odG1sLmJhc2ljLkxhYmVsOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5mb3JtLkNoZWNrQm94Ow0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5mb3JtLkZvcm07DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5odG1sLmZvcm0uUmVxdWlyZWRUZXh0RmllbGQ7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5odG1sLmZvcm0uVGV4dEFyZWE7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5odG1sLmZvcm0uVGV4dEZpZWxkOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tb2RlbC5Db21wb3VuZFByb3BlcnR5TW9kZWw7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LnV0aWwudGltZS5EdXJhdGlvbjsNCisNCisvKioNCisgKiBGb3JtIGNvbXBvbmVudHMgdG8gaW5zZXJ0L3VwZGF0ZS9kZWxldGUge0BsaW5rIExkYXBDb25maWd9DQorICogDQorICogQGF1dGhvciBzd2FnbmVyDQorICogDQorICovDQorcHVibGljIGNsYXNzIExkYXBGb3JtIGV4dGVuZHMgQWRtaW5CYXNlRm9ybTxMZGFwQ29uZmlnPiB7DQorDQorCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDFMOw0KKwlwcml2YXRlIGZpbmFsIFdlYk1hcmt1cENvbnRhaW5lciBsaXN0Q29udGFpbmVyOw0KKw0KKwlwdWJsaWMgTGRhcEZvcm0oU3RyaW5nIGlkLCBXZWJNYXJrdXBDb250YWluZXIgbGlzdENvbnRhaW5lciwNCisJCQlmaW5hbCBMZGFwQ29uZmlnIGxkYXBDb25maWcpIHsNCisJCXN1cGVyKGlkLCBuZXcgQ29tcG91bmRQcm9wZXJ0eU1vZGVsPExkYXBDb25maWc+KGxkYXBDb25maWcpKTsNCisJCXNldE91dHB1dE1hcmt1cElkKHRydWUpOw0KKwkJdGhpcy5saXN0Q29udGFpbmVyID0gbGlzdENvbnRhaW5lcjsNCisJCQ0KKwkJYWRkKG5ldyBSZXF1aXJlZFRleHRGaWVsZDxTdHJpbmc+KCJuYW1lIikpOw0KKwkJYWRkKG5ldyBDaGVja0JveCgiaXNBY3RpdmUiKSk7DQorCQlhZGQoRGF0ZUxhYmVsLmZvckRhdGVQYXR0ZXJuKCJpbnNlcnRlZCIsICJkZC5NTS55eXl5IEhIOm1tOnNzIikpOw0KKwkJYWRkKG5ldyBMYWJlbCgiaW5zZXJ0ZWRieS5sb2dpbiIpKTsNCisJCWFkZChEYXRlTGFiZWwuZm9yRGF0ZVBhdHRlcm4oInVwZGF0ZWQiLCAiZGQuTU0ueXl5eSBISDptbTpzcyIpKTsNCisJCWFkZChuZXcgTGFiZWwoInVwZGF0ZWRieS5sb2dpbiIpKTsNCisJCWFkZChuZXcgUmVxdWlyZWRUZXh0RmllbGQ8U3RyaW5nPigiY29uZmlnRmlsZU5hbWUiKSk7DQorCQlhZGQobmV3IENoZWNrQm94KCJhZGREb21haW5Ub1VzZXJOYW1lIikpOw0KKwkJYWRkKG5ldyBUZXh0RmllbGQ8U3RyaW5nPigiZG9tYWluIikpOw0KKwkJYWRkKG5ldyBUZXh0QXJlYTxTdHJpbmc+KCJjb21tZW50IikpOw0KKw0KKwkJLy8gYXR0YWNoIGFuIGFqYXggdmFsaWRhdGlvbiBiZWhhdmlvciB0byBhbGwgZm9ybSBjb21wb25lbnQncyBrZXlkb3duDQorCQkvLyBldmVudCBhbmQgdGhyb3R0bGUgaXQgZG93biB0byBvbmNlIHBlciBzZWNvbmQNCisJCUFqYXhGb3JtVmFsaWRhdGluZ0JlaGF2aW9yLmFkZFRvQWxsRm9ybUNvbXBvbmVudHModGhpcywgImtleWRvd24iLA0KKwkJCQlEdXJhdGlvbi5PTkVfU0VDT05EKTsNCisJfQ0KKw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIHZvaWQgb25TYXZlU3VibWl0KEFqYXhSZXF1ZXN0VGFyZ2V0IHRhcmdldCwgRm9ybTw/PiBmb3JtKSB7DQorCQlBcHBsaWNhdGlvbi5nZXRCZWFuKExkYXBDb25maWdEYW8uY2xhc3MpLnVwZGF0ZShnZXRNb2RlbE9iamVjdCgpLA0KKwkJCQlXZWJTZXNzaW9uLmdldFVzZXJJZCgpKTsNCisJCUxkYXBDb25maWcgbGRhcENvbmZpZyA9IEFwcGxpY2F0aW9uLmdldEJlYW4oTGRhcENvbmZpZ0Rhby5jbGFzcykNCisJCQkJLmdldChnZXRNb2RlbE9iamVjdCgpLmdldExkYXBDb25maWdJZCgpKTsNCisJCXRoaXMuc2V0TW9kZWxPYmplY3QobGRhcENvbmZpZyk7DQorCQloaWRlTmV3UmVjb3JkKCk7DQorCQl0YXJnZXQuYWRkKHRoaXMpOw0KKwkJdGFyZ2V0LmFkZChsaXN0Q29udGFpbmVyKTsNCisJCXRhcmdldC5hcHBlbmRKYXZhU2NyaXB0KCJvbUxkYXBQYW5lbEluaXQoKTsiKTsNCisJfQ0KKw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIHZvaWQgb25OZXdTdWJtaXQoQWpheFJlcXVlc3RUYXJnZXQgdGFyZ2V0LCBGb3JtPD8+IGZvcm0pIHsNCisJCXRoaXMuc2V0TW9kZWxPYmplY3QobmV3IExkYXBDb25maWcoKSk7DQorCQl0YXJnZXQuYWRkKHRoaXMpOw0KKwkJdGFyZ2V0LmFwcGVuZEphdmFTY3JpcHQoIm9tTGRhcFBhbmVsSW5pdCgpOyIpOw0KKwl9DQorDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgdm9pZCBvblJlZnJlc2hTdWJtaXQoQWpheFJlcXVlc3RUYXJnZXQgdGFyZ2V0LCBGb3JtPD8+IGZvcm0pIHsNCisJCUxkYXBDb25maWcgbGRhcENvbmZpZyA9IHRoaXMuZ2V0TW9kZWxPYmplY3QoKTsNCisJCWlmIChsZGFwQ29uZmlnLmdldExkYXBDb25maWdJZCgpIDw9IDApIHsNCisJCQlsZGFwQ29uZmlnID0gQXBwbGljYXRpb24uZ2V0QmVhbihMZGFwQ29uZmlnRGFvLmNsYXNzKS5nZXQoDQorCQkJCQlsZGFwQ29uZmlnLmdldExkYXBDb25maWdJZCgpKTsNCisJCX0gZWxzZSB7DQorCQkJbGRhcENvbmZpZyA9IG5ldyBMZGFwQ29uZmlnKCk7DQorCQl9DQorCQl0aGlzLnNldE1vZGVsT2JqZWN0KGxkYXBDb25maWcpOw0KKwkJdGFyZ2V0LmFkZCh0aGlzKTsNCisJCXRhcmdldC5hcHBlbmRKYXZhU2NyaXB0KCJvbUxkYXBQYW5lbEluaXQoKTsiKTsNCisJfQ0KKw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIHZvaWQgb25EZWxldGVTdWJtaXQoQWpheFJlcXVlc3RUYXJnZXQgdGFyZ2V0LCBGb3JtPD8+IGZvcm0pIHsNCisJCUFwcGxpY2F0aW9uLmdldEJlYW4oTGRhcENvbmZpZ0Rhby5jbGFzcykuZGVsZXRlKA0KKwkJCQl0aGlzLmdldE1vZGVsT2JqZWN0KCksIFdlYlNlc3Npb24uZ2V0VXNlcklkKCkpOw0KKwkJdGhpcy5zZXRNb2RlbE9iamVjdChuZXcgTGRhcENvbmZpZygpKTsNCisJCXRhcmdldC5hZGQobGlzdENvbnRhaW5lcik7DQorCQl0YXJnZXQuYWRkKHRoaXMpOw0KKwkJdGFyZ2V0LmFwcGVuZEphdmFTY3JpcHQoIm9tTGRhcFBhbmVsSW5pdCgpOyIpOw0KKwl9DQorDQorfQ0KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi9sZGFwcy9MZGFwc1BhbmVsLmh0bWwgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvYWRtaW4vbGRhcHMvTGRhcHNQYW5lbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExNTk0Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvYWRtaW4vbGRhcHMvTGRhcHNQYW5lbC5odG1sCkBAIC0wLDAgKzEsMTAyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGh0bWwgeG1sbnM6d2lja2V0PSJodHRwOi8vd2lja2V0LmFwYWNoZS5vcmciPgorCTx3aWNrZXQ6aGVhZD4KKyAgICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICAgICAgIGZ1bmN0aW9uIG9tTGRhcFBhbmVsSW5pdCgpIHsKKyAgICAgICAgICAgICAgIHZhciBkb2N1bWVudEhlaWdodCA9ICQoZG9jdW1lbnQpLmhlaWdodCgpOworICAgICAgICAgICAgICAgJCgnI2FkbWluRm9ybScpLmhlaWdodChkb2N1bWVudEhlaWdodC0xMTQpOworICAgICAgICAgICAgICAgJCgnI2FkbWluVGFibGUnKS5oZWlnaHQoZG9jdW1lbnRIZWlnaHQtMTQ0KTsKKyAgICAgICAgICAgfQorICAgICAgIDwvc2NyaXB0PgorICAgIDwvd2lja2V0OmhlYWQ+CisJPHdpY2tldDpwYW5lbD4KKwkJPGRpdiBjbGFzcz0iYWRtaW5QYW5lbCI+CisJCQk8ZGl2IGNsYXNzPSJhZG1pblBhbmVsQ29sdW1uVGFibGUiPgorCQkJCTxzcGFuIHdpY2tldDppZD0ibmF2aWdhdG9yIj5bZGF0YXZpZXcgbmF2aWdhdG9yXTwvc3Bhbj4KKwkJCQk8dGFibGUgY2xhc3M9ImFkbWluTGlzdFRhYmxlIj4KKwkJCQkJPHRoZWFkPgorCQkJCQkJPHRyPgorCQkJCQkJCTx0aCBjbGFzcz0idGhyZWVfY29sdW1uX2xheW91dF9jb2x1bW4xIj48c3BhbiB3aWNrZXQ6aWQ9Im9yZGVyQnlJZCI+PC9zcGFuPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMTEwNCIgLz48L3RoPgorCQkJCQkJCTx0aCBjbGFzcz0idGhyZWVfY29sdW1uX2xheW91dF9jb2x1bW4yIj48c3BhbiB3aWNrZXQ6aWQ9Im9yZGVyQnlOYW1lIj48L3NwYW4+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIxMTA1IiAvPjwvdGg+CisJCQkJCQkJPHRoIGNsYXNzPSJ0aHJlZV9jb2x1bW5fbGF5b3V0X2NvbHVtbjMiPjxzcGFuIHdpY2tldDppZD0ib3JkZXJCeUZpbGUiPjwvc3Bhbj48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjExMDYiIC8+PC90aD4KKwkJCQkJCTwvdHI+CisJCQkJCTwvdGhlYWQ+CisJCQkJPC90YWJsZT4KKwkJCQk8ZGl2IGNsYXNzPSJ0YWJsZVdyYXBwZXIiIGlkPSJhZG1pblRhYmxlIj4KKwkJCQkJPHRhYmxlIGNsYXNzPSJhZG1pbkxpc3RUYWJsZSI+CisJCQkJCQk8dGJvZHkgd2lja2V0OmlkPSJsaXN0Q29udGFpbmVyIj4KKwkJCQkgICAgCQk8dHIgd2lja2V0OmlkPSJsZGFwTGlzdCI+CisJCQkJCQkJCTx0ZCBjbGFzcz0idGhyZWVfY29sdW1uX2xheW91dF9jb2x1bW4xIj48ZGl2IGNsYXNzPSJ0aHJlZV9jb2x1bW5fbGF5b3V0X2RpdmNvbHVtbjEiPjxzcGFuIHdpY2tldDppZD0ibGRhcENvbmZpZ0lkIj48L3NwYW4+PC9kaXY+PC90ZD4KKwkJCQkJCQkJPHRkIGNsYXNzPSJ0aHJlZV9jb2x1bW5fbGF5b3V0X2NvbHVtbjIiPjxkaXYgY2xhc3M9InRocmVlX2NvbHVtbl9sYXlvdXRfZGl2Y29sdW1uMiI+PHNwYW4gd2lja2V0OmlkPSJuYW1lIj48L3NwYW4+PC9kaXY+PC90ZD4KKwkJCQkJCQkJPHRkIGNsYXNzPSJ0aHJlZV9jb2x1bW5fbGF5b3V0X2NvbHVtbjMiPjxkaXYgY2xhc3M9InRocmVlX2NvbHVtbl9sYXlvdXRfZGl2Y29sdW1uMyI+PHNwYW4gd2lja2V0OmlkPSJjb25maWdGaWxlTmFtZSI+PC9zcGFuPjwvZGl2PjwvdGQ+CisJCQkJCQkJPC90cj4KKwkJCQkJCTwvdGJvZHk+CQkJCisJCQkJCTwvdGFibGU+CisJCQkJPC9kaXY+CisJCQk8L2Rpdj4KKwkJCTxkaXYgY2xhc3M9ImFkbWluUGFuZWxDb2x1bW5Gb3JtIj4KKwkJCQk8Zm9ybSB3aWNrZXQ6aWQ9ImZvcm0iIGNsYXNzPSJhZG1pbkZvcm0iPgorCQkJCQk8ZGl2IHdpY2tldDppZD0iYnV0dG9ucyI+PC9kaXY+CisJCQkJCTxkaXYgY2xhc3M9InNjcm9sbGNvbnRlbnQiIGlkPSJhZG1pbkZvcm0iPgorCQkJCQkJPGZpZWxkc2V0PgorCQkJCQkJCTxsZWdlbmQ+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIxMTA3IiAvPjwvbGVnZW5kPgorCQkJCQkJCTxkaXYgY2xhc3M9ImZvcm1lbGVtZW50Ij4KKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMTEwOCIgLz48L2xhYmVsPjxpbnB1dCB0eXBlPSJ0ZXh0IiB3aWNrZXQ6aWQ9Im5hbWUiLz4KKwkJCQkgICAgICAgICAgICA8L2Rpdj4KKwkJCQkgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtZWxlbWVudCI+CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjExMDkiIC8+PC9sYWJlbD48aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJmb3JtY2hlY2tib3giIHdpY2tldDppZD0iaXNBY3RpdmUiLz4KKwkJCQkgICAgICAgICAgICA8L2Rpdj4KKwkJCQkgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtZWxlbWVudCI+CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjExMTAiIC8+PC9sYWJlbD48c3BhbiB3aWNrZXQ6aWQ9Imluc2VydGVkIi8+CisJICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CisJCQkJICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybWVsZW1lbnQiPgorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIxMTExIiAvPjwvbGFiZWw+PHNwYW4gd2lja2V0OmlkPSJpbnNlcnRlZGJ5LmxvZ2luIi8+CisJCQkJICAgICAgICAgICAgPC9kaXY+CisJCQkJICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybWVsZW1lbnQiPgorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIxMTEyIiAvPjwvbGFiZWw+PHNwYW4gd2lja2V0OmlkPSJ1cGRhdGVkIi8+CisJCQkJICAgICAgICAgICAgPC9kaXY+CisJCQkJICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybWVsZW1lbnQiPgorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIxMTEzIiAvPjwvbGFiZWw+PHNwYW4gd2lja2V0OmlkPSJ1cGRhdGVkYnkubG9naW4iLz4KKwkJCQkgICAgICAgICAgICA8L2Rpdj4KKwkJCQkgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtZWxlbWVudCI+CisJCQkJICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImluZm8taWNvbiIgLz48c3BhbiBzdHlsZT0iZm9udC1zdHlsZTogaXRhbGljOyI+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIxMTE0IiAvPjwvc3Bhbj4KKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4KKwkJCQkgICAgICAgICAgICAgICAgPGxhYmVsPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMTExNSIgLz48L2xhYmVsPjxpbnB1dCB0eXBlPSJ0ZXh0IiB3aWNrZXQ6aWQ9ImNvbmZpZ0ZpbGVOYW1lIi8+CisJCQkJICAgICAgICAgICAgPC9kaXY+CisJCQkJICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybWVsZW1lbnQiPgorCQkJCSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbmZvLWljb24iIC8+PHNwYW4gc3R5bGU9ImZvbnQtc3R5bGU6IGl0YWxpYzsiPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMTExNiIgLz48L3NwYW4+CisJICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxici8+CisJCQkJICAgICAgICAgICAgICAgIDxsYWJlbD48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjExMTciIC8+PC9sYWJlbD48aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJmb3JtY2hlY2tib3giIHdpY2tldDppZD0iYWRkRG9tYWluVG9Vc2VyTmFtZSIvPgorCQkJCSAgICAgICAgICAgIDwvZGl2PgorCSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm1lbGVtZW50Ij4KKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMTExNSIgLz48L2xhYmVsPjxpbnB1dCB0eXBlPSJ0ZXh0IiB3aWNrZXQ6aWQ9ImRvbWFpbiIvPgorCQkJCSAgICAgICAgICAgIDwvZGl2PgorCSAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm1lbGVtZW50Ij4KKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMjcwIiAvPjwvbGFiZWw+PHRleHRhcmVhIHdpY2tldDppZD0iY29tbWVudCIvPgorCQkJCSAgICAgICAgICAgIDwvZGl2PgorCQkJCSAgICAgICAgPC9maWVsZHNldD4KKwkJCQkgICAgPC9kaXY+CisJCQkJPC9mb3JtPgorCQkJPC9kaXY+CisJCTwvZGl2PgorCTwvd2lja2V0OnBhbmVsPgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL2FkbWluL2xkYXBzL0xkYXBzUGFuZWwuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi9sZGFwcy9MZGFwc1BhbmVsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQwMTlkYwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi9sZGFwcy9MZGFwc1BhbmVsLmphdmEKQEAgLTAsMCArMSw5OCBAQAorLyoNCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICogdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuY29tcG9uZW50cy5hZG1pbi5sZGFwczsNCisNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5kYW8uTGRhcENvbmZpZ0RhbzsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuTGRhcENvbmZpZzsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmNvbXBvbmVudHMuYWRtaW4uQWRtaW5QYW5lbDsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmNvbXBvbmVudHMuYWRtaW4uU2VhcmNoYWJsZURhdGFWaWV3Ow0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuY29tcG9uZW50cy5hZG1pbi5QYWdlZEVudGl0eUxpc3RQYW5lbDsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmRhdGEuRGF0YVZpZXdDb250YWluZXI7DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5kYXRhLlNlYXJjaGFibGVEYXRhUHJvdmlkZXI7DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5kYXRhLk9yZGVyQnlCb3JkZXI7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LkF0dHJpYnV0ZU1vZGlmaWVyOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5hamF4LkFqYXhFdmVudEJlaGF2aW9yOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5hamF4LkFqYXhSZXF1ZXN0VGFyZ2V0Ow0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5XZWJNYXJrdXBDb250YWluZXI7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5odG1sLmJhc2ljLkxhYmVsOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAucmVwZWF0ZXIuSXRlbTsNCisNCisvKioNCisgKiB7QGxpbmsgQWRtaW5QYW5lbH0gdG8gbGlzdCBhbmQgbW9kaWZ5IHtAbGluayBMZGFwQ29uZmlnfQ0KKyAqIA0KKyAqIEBhdXRob3Igc3dhZ25lcg0KKyAqIA0KKyAqLw0KK3B1YmxpYyBjbGFzcyBMZGFwc1BhbmVsIGV4dGVuZHMgQWRtaW5QYW5lbCB7DQorCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IC0xTDsNCisJcHJpdmF0ZSBMZGFwRm9ybSBmb3JtOw0KKwkNCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIG9uTWVudVBhbmVsTG9hZChBamF4UmVxdWVzdFRhcmdldCB0YXJnZXQpIHsNCisJCXRhcmdldC5hcHBlbmRKYXZhU2NyaXB0KCJvbUxkYXBQYW5lbEluaXQoKTsiKTsNCisJfQ0KKw0KKwlAU3VwcHJlc3NXYXJuaW5ncygidW5jaGVja2VkIikNCisJcHVibGljIExkYXBzUGFuZWwoU3RyaW5nIGlkKSB7DQorCQlzdXBlcihpZCk7DQorCQlTZWFyY2hhYmxlRGF0YVZpZXc8TGRhcENvbmZpZz4gZGF0YVZpZXcgPSBuZXcgU2VhcmNoYWJsZURhdGFWaWV3PExkYXBDb25maWc+KCJsZGFwTGlzdCINCisJCQksIG5ldyBTZWFyY2hhYmxlRGF0YVByb3ZpZGVyPExkYXBDb25maWc+KExkYXBDb25maWdEYW8uY2xhc3MpKSB7DQorCQkJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gODcxNTU1OTYyODc1NTQzOTU5Nkw7DQorDQorCQkJQE92ZXJyaWRlDQorCQkJcHJvdGVjdGVkIHZvaWQgcG9wdWxhdGVJdGVtKGZpbmFsIEl0ZW08TGRhcENvbmZpZz4gaXRlbSkgew0KKwkJCQlmaW5hbCBMZGFwQ29uZmlnIGxkYXBDb25maWcgPSBpdGVtLmdldE1vZGVsT2JqZWN0KCk7DQorCQkJCWl0ZW0uYWRkKG5ldyBMYWJlbCgibGRhcENvbmZpZ0lkIiwgIiIgKyBsZGFwQ29uZmlnLmdldExkYXBDb25maWdJZCgpKSk7DQorCQkJCWl0ZW0uYWRkKG5ldyBMYWJlbCgibmFtZSIsICIiICsgbGRhcENvbmZpZy5nZXROYW1lKCkpKTsNCisJCQkJaXRlbS5hZGQobmV3IExhYmVsKCJjb25maWdGaWxlTmFtZSIsICIiICsgbGRhcENvbmZpZy5nZXRDb25maWdGaWxlTmFtZSgpKSk7DQorCQkJCWl0ZW0uYWRkKG5ldyBBamF4RXZlbnRCZWhhdmlvcigib25jbGljayIpIHsNCisJCQkJCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IC04MDY5NDEzNTY2ODAwNTcxMDYxTDsNCisNCisJCQkJCXByb3RlY3RlZCB2b2lkIG9uRXZlbnQoQWpheFJlcXVlc3RUYXJnZXQgdGFyZ2V0KSB7DQorCQkJCQkJZm9ybS5zZXRNb2RlbE9iamVjdChsZGFwQ29uZmlnKTsNCisJCQkJCQlmb3JtLmhpZGVOZXdSZWNvcmQoKTsNCisJCQkJCQl0YXJnZXQuYWRkKGZvcm0pOw0KKwkJCQkJCXRhcmdldC5hcHBlbmRKYXZhU2NyaXB0KCJvbUxkYXBQYW5lbEluaXQoKTsiKTsNCisJCQkJCX0NCisJCQkJfSk7DQorCQkJCWl0ZW0uYWRkKEF0dHJpYnV0ZU1vZGlmaWVyLnJlcGxhY2UoImNsYXNzIiwgKGl0ZW0uZ2V0SW5kZXgoKSAlIDIgPT0gMSkgPyAiZXZlbiIgOiAib2RkIikpOw0KKwkJCX0NCisJCX07DQorCQlmaW5hbCBXZWJNYXJrdXBDb250YWluZXIgbGlzdENvbnRhaW5lciA9IG5ldyBXZWJNYXJrdXBDb250YWluZXIoImxpc3RDb250YWluZXIiKTsNCisJCWFkZChsaXN0Q29udGFpbmVyLmFkZChkYXRhVmlldykuc2V0T3V0cHV0TWFya3VwSWQodHJ1ZSkpOw0KKwkJRGF0YVZpZXdDb250YWluZXI8TGRhcENvbmZpZz4gY29udGFpbmVyID0gbmV3IERhdGFWaWV3Q29udGFpbmVyPExkYXBDb25maWc+KGxpc3RDb250YWluZXIsIGRhdGFWaWV3KTsNCisJCWNvbnRhaW5lci5zZXRMaW5rcyhuZXcgT3JkZXJCeUJvcmRlcjxMZGFwQ29uZmlnPigib3JkZXJCeUlkIiwgImxkYXBDb25maWdJZCIsIGNvbnRhaW5lcikNCisJCQkJLCBuZXcgT3JkZXJCeUJvcmRlcjxMZGFwQ29uZmlnPigib3JkZXJCeU5hbWUiLCAibmFtZSIsIGNvbnRhaW5lcikNCisJCQkJLCBuZXcgT3JkZXJCeUJvcmRlcjxMZGFwQ29uZmlnPigib3JkZXJCeUZpbGUiLCAiY29uZmlnRmlsZU5hbWUiLCBjb250YWluZXIpKTsNCisJCWFkZChjb250YWluZXIub3JkZXJMaW5rcyk7DQorCQlhZGQobmV3IFBhZ2VkRW50aXR5TGlzdFBhbmVsKCJuYXZpZ2F0b3IiLCBkYXRhVmlldykgew0KKwkJCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IC0xTDsNCisNCisJCQlAT3ZlcnJpZGUNCisJCQlwcm90ZWN0ZWQgdm9pZCBvbkV2ZW50KEFqYXhSZXF1ZXN0VGFyZ2V0IHRhcmdldCkgew0KKwkJCQl0YXJnZXQuYWRkKGxpc3RDb250YWluZXIpOw0KKwkJCX0NCisJCX0pOw0KKwkJDQorCQlmb3JtID0gbmV3IExkYXBGb3JtKCJmb3JtIiwgbGlzdENvbnRhaW5lciwgbmV3IExkYXBDb25maWcoKSk7DQorCQlmb3JtLnNob3dOZXdSZWNvcmQoKTsNCisgICAgICAgIGFkZChmb3JtKTsNCisJCQ0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi9yb29tcy9Sb29tRm9ybS5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL2FkbWluL3Jvb21zL1Jvb21Gb3JtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGFjNTUzNQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi9yb29tcy9Sb29tRm9ybS5qYXZhCkBAIC0wLDAgKzEsMTMzIEBACisvKg0KKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgKiB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5jb21wb25lbnRzLmFkbWluLnJvb21zOw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0Ow0KK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCisNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jb25mZXJlbmNlLlJvb21NYW5hZ2VyOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuT3JnYW5pc2F0aW9uTWFuYWdlcjsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuZG9tYWluLk9yZ2FuaXNhdGlvbjsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbS5Sb29tVHlwZTsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbS5Sb29tOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tLlJvb21PcmdhbmlzYXRpb247DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5hcHAuQXBwbGljYXRpb247DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5hcHAuV2ViU2Vzc2lvbjsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmNvbXBvbmVudHMuYWRtaW4uQWRtaW5CYXNlRm9ybTsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQuYWpheC5mb3JtLkFqYXhGb3JtVmFsaWRhdGluZ0JlaGF2aW9yOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5mb3JtLkNoZWNrQm94Ow0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5mb3JtLkNob2ljZVJlbmRlcmVyOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5mb3JtLkRyb3BEb3duQ2hvaWNlOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5mb3JtLklDaG9pY2VSZW5kZXJlcjsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuZm9ybS5MaXN0TXVsdGlwbGVDaG9pY2U7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5odG1sLmZvcm0uUmVxdWlyZWRUZXh0RmllbGQ7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5odG1sLmZvcm0uVGV4dEFyZWE7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5odG1sLmZvcm0uVGV4dEZpZWxkOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tb2RlbC5Db21wb3VuZFByb3BlcnR5TW9kZWw7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1vZGVsLk1vZGVsOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC51dGlsLnRpbWUuRHVyYXRpb247DQorDQoraW1wb3J0IGVkdS5lbW9yeS5tYXRoY3MuYmFja3BvcnQuamF2YS51dGlsLkFycmF5czsNCisNCitwdWJsaWMgY2xhc3MgUm9vbUZvcm0gZXh0ZW5kcyBBZG1pbkJhc2VGb3JtPFJvb20+IHsNCisNCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMUw7DQorDQorCU9iamVjdFtdIGFycmF5ID0geyAyTCwgNEwsIDZMLCA4TCwgMTBMLCAxMkwsIDE0TCwgMTZMLCAyMEwsIDI1TCwgMzJMLCA1MEwsDQorCQkJMTAwTCwgMTUwTCwgMjAwTCwgNTAwTCwgMTAwMEwgfTsNCisJQFN1cHByZXNzV2FybmluZ3MoInVuY2hlY2tlZCIpDQorCUxpc3Q8TG9uZz4gRFJPUERPV05fTlVNQkVSX09GX1BBUlRJQ0lQQU5UUyA9IEFycmF5cy5hc0xpc3QoYXJyYXkpOw0KKw0KKwlwdWJsaWMgUm9vbUZvcm0oU3RyaW5nIGlkLCBmaW5hbCBSb29tIHJvb20pIHsNCisJCXN1cGVyKGlkLCBuZXcgQ29tcG91bmRQcm9wZXJ0eU1vZGVsPFJvb20+KHJvb20pKTsNCisJCXNldE91dHB1dE1hcmt1cElkKHRydWUpOw0KKwkJUmVxdWlyZWRUZXh0RmllbGQ8U3RyaW5nPiBuYW1lID0gbmV3IFJlcXVpcmVkVGV4dEZpZWxkPFN0cmluZz4oIm5hbWUiKTsNCisJCW5hbWUuc2V0TGFiZWwobmV3IE1vZGVsPFN0cmluZz4oV2ViU2Vzc2lvbi5nZXRTdHJpbmcoMTkzKSkpOw0KKwkJYWRkKG5hbWUpOw0KKw0KKwkJYWRkKG5ldyBEcm9wRG93bkNob2ljZTxMb25nPigibnVtYmVyT2ZQYXJ0aXppcGFudHMiLCAvLw0KKwkJCQlEUk9QRE9XTl9OVU1CRVJfT0ZfUEFSVElDSVBBTlRTLCAvLw0KKwkJCQluZXcgSUNob2ljZVJlbmRlcmVyPExvbmc+KCkgew0KKwkJCQkJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMUw7DQorCQkJCQlwdWJsaWMgT2JqZWN0IGdldERpc3BsYXlWYWx1ZShMb25nIGlkKSB7DQorCQkJCQkJcmV0dXJuIGlkOw0KKwkJCQkJfQ0KKwkJCQkJcHVibGljIFN0cmluZyBnZXRJZFZhbHVlKExvbmcgaWQsIGludCBpbmRleCkgew0KKwkJCQkJCXJldHVybiAiIiArIGlkOw0KKwkJCQkJfQ0KKwkJCQl9KSk7DQorDQorCQlhZGQobmV3IERyb3BEb3duQ2hvaWNlPFJvb21UeXBlPigicm9vbXR5cGUiLCBBcHBsaWNhdGlvbi5nZXRCZWFuKA0KKwkJCQlSb29tTWFuYWdlci5jbGFzcykuZ2V0QWxsUm9vbVR5cGVzKCksDQorCQkJCW5ldyBDaG9pY2VSZW5kZXJlcjxSb29tVHlwZT4oIm5hbWUiLCAicm9vbXR5cGVzX2lkIikpKTsNCisNCisJCWFkZChuZXcgVGV4dEFyZWE8U3RyaW5nPigiY29tbWVudCIpKTsNCisNCisJCWFkZChuZXcgQ2hlY2tCb3goImFwcG9pbnRtZW50IikpOw0KKwkJYWRkKG5ldyBDaGVja0JveCgiaXNwdWJsaWMiKSk7DQorDQorCQlMaXN0PE9yZ2FuaXNhdGlvbj4gb3JnTGlzdCA9IEFwcGxpY2F0aW9uLmdldEJlYW4oDQorCQkJCU9yZ2FuaXNhdGlvbk1hbmFnZXIuY2xhc3MpLmdldE9yZ2FuaXNhdGlvbnMoM0wpOw0KKwkJTGlzdDxSb29tT3JnYW5pc2F0aW9uPiBvcmdSb29tcyA9IG5ldyBBcnJheUxpc3Q8Um9vbU9yZ2FuaXNhdGlvbj4oDQorCQkJCW9yZ0xpc3Quc2l6ZSgpKTsNCisJCWZvciAoT3JnYW5pc2F0aW9uIG9yZyA6IG9yZ0xpc3QpIHsNCisJCQlvcmdSb29tcy5hZGQobmV3IFJvb21PcmdhbmlzYXRpb24ob3JnKSk7DQorCQl9DQorCQlMaXN0TXVsdGlwbGVDaG9pY2U8Um9vbU9yZ2FuaXNhdGlvbj4gb3JnQ2hvaWNlTGlzdCA9IG5ldyBMaXN0TXVsdGlwbGVDaG9pY2U8Um9vbU9yZ2FuaXNhdGlvbj4oDQorCQkJCSJyb29tT3JnYW5pc2F0aW9ucyIsIG9yZ1Jvb21zLA0KKwkJCQluZXcgQ2hvaWNlUmVuZGVyZXI8Um9vbU9yZ2FuaXNhdGlvbj4oIm9yZ2FuaXNhdGlvbi5uYW1lIiwNCisJCQkJCQkib3JnYW5pc2F0aW9uLm9yZ2FuaXNhdGlvbl9pZCIpKTsNCisJCW9yZ0Nob2ljZUxpc3Quc2V0TWF4Um93cyg2KTsNCisJCWFkZChvcmdDaG9pY2VMaXN0KTsNCisNCisJCWFkZChuZXcgQ2hlY2tCb3goImlzRGVtb1Jvb20iKSk7DQorCQlUZXh0RmllbGQ8SW50ZWdlcj4gZGVtb1RpbWUgPSBuZXcgVGV4dEZpZWxkPEludGVnZXI+KCJkZW1vVGltZSIpOw0KKwkJZGVtb1RpbWUuc2V0TGFiZWwobmV3IE1vZGVsPFN0cmluZz4oV2ViU2Vzc2lvbi5nZXRTdHJpbmcoNjM3KSkpOw0KKwkJYWRkKGRlbW9UaW1lKTsNCisJCWFkZChuZXcgQ2hlY2tCb3goImFsbG93VXNlclF1ZXN0aW9ucyIpKTsNCisJCWFkZChuZXcgQ2hlY2tCb3goImlzQXVkaW9Pbmx5IikpOw0KKwkJYWRkKG5ldyBDaGVja0JveCgiaXNDbG9zZWQiKSk7DQorCQlhZGQobmV3IFRleHRGaWVsZDxTdHJpbmc+KCJyZWRpcmVjdFVSTCIpKTsNCisJCWFkZChuZXcgQ2hlY2tCb3goIndhaXRGb3JSZWNvcmRpbmciKSk7DQorCQlhZGQobmV3IENoZWNrQm94KCJhbGxvd1JlY29yZGluZyIpKTsNCisNCisJCWFkZChuZXcgQ2hlY2tCb3goImhpZGVUb3BCYXIiKSk7DQorCQlhZGQobmV3IENoZWNrQm94KCJoaWRlQ2hhdCIpKTsNCisJCWFkZChuZXcgQ2hlY2tCb3goImhpZGVBY3Rpdml0aWVzQW5kQWN0aW9ucyIpKTsNCisJCWFkZChuZXcgQ2hlY2tCb3goImhpZGVGaWxlc0V4cGxvcmVyIikpOw0KKwkJYWRkKG5ldyBDaGVja0JveCgiaGlkZUFjdGlvbnNNZW51IikpOw0KKwkJYWRkKG5ldyBDaGVja0JveCgiaGlkZVNjcmVlblNoYXJpbmciKSk7DQorCQlhZGQobmV3IENoZWNrQm94KCJoaWRlV2hpdGVib2FyZCIpKTsNCisJCWFkZChuZXcgQ2hlY2tCb3goInNob3dNaWNyb3Bob25lU3RhdHVzIikpOw0KKwkJYWRkKG5ldyBDaGVja0JveCgiY2hhdE1vZGVyYXRlZCIpKTsNCisJCWFkZChuZXcgQ2hlY2tCb3goImNoYXRPcGVuZWQiKSk7DQorCQlhZGQobmV3IENoZWNrQm94KCJmaWxlc09wZW5lZCIpKTsNCisJCWFkZChuZXcgQ2hlY2tCb3goImF1dG9WaWRlb1NlbGVjdCIpKTsNCisJCQ0KKwkJLy8gRklYTUU6IFJvb20gdXNlciBtb2RlcmF0b3IgbGlzdA0KKw0KKwkJYWRkKG5ldyBDaGVja0JveCgiaXNNb2RlcmF0ZWRSb29tIikpOw0KKwkJDQorDQorCQkvLyBhdHRhY2ggYW4gYWpheCB2YWxpZGF0aW9uIGJlaGF2aW9yIHRvIGFsbCBmb3JtIGNvbXBvbmVudCdzIGtleWRvd24NCisJCS8vIGV2ZW50IGFuZCB0aHJvdHRsZSBpdCBkb3duIHRvIG9uY2UgcGVyIHNlY29uZA0KKwkJQWpheEZvcm1WYWxpZGF0aW5nQmVoYXZpb3IuYWRkVG9BbGxGb3JtQ29tcG9uZW50cyh0aGlzLCAia2V5ZG93biIsDQorCQkJCUR1cmF0aW9uLk9ORV9TRUNPTkQpOw0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi9yb29tcy9Sb29tc1BhbmVsLmh0bWwgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvYWRtaW4vcm9vbXMvUm9vbXNQYW5lbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3Yzc1ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvYWRtaW4vcm9vbXMvUm9vbXNQYW5lbC5odG1sCkBAIC0wLDAgKzEsMTk2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGh0bWwgeG1sbnM6d2lja2V0PSJodHRwOi8vd2lja2V0LmFwYWNoZS5vcmciPgorCTx3aWNrZXQ6aGVhZD4KKwkgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisgICAgICAgICAgIGZ1bmN0aW9uIG9tUm9vbVBhbmVsSW5pdCgpIHsKKyAgICAgICAgICAgICAgIHZhciBkb2N1bWVudEhlaWdodCA9ICQoZG9jdW1lbnQpLmhlaWdodCgpOworICAgICAgICAgICAgICAgJCgnI2FkbWluRm9ybScpLmhlaWdodChkb2N1bWVudEhlaWdodC0xMTQpOworICAgICAgICAgICAgICAgJCgnI2FkbWluVGFibGUnKS5oZWlnaHQoZG9jdW1lbnRIZWlnaHQtMTQ0KTsKKyAgICAgICAgICAgfQorICAgICAgIDwvc2NyaXB0PgorICAgIDwvd2lja2V0OmhlYWQ+CisJPHdpY2tldDpwYW5lbD4KKwkJPGRpdiBjbGFzcz0iYWRtaW5QYW5lbCI+CisJCQk8ZGl2IGNsYXNzPSJhZG1pblBhbmVsQ29sdW1uVGFibGUiPgorCQkJCTxzcGFuIHdpY2tldDppZD0ibmF2aWdhdG9yIj5bZGF0YXZpZXcgbmF2aWdhdG9yXTwvc3Bhbj4KKwkJCQk8dGFibGUgY2xhc3M9ImFkbWluTGlzdFRhYmxlIj4KKwkJCQkJPHRoZWFkPgorCQkJCQkJPHRyPgorCQkJCQkJCTx0aCBjbGFzcz0idGhyZWVfY29sdW1uX2xheW91dF9jb2x1bW4xIj48c3BhbiB3aWNrZXQ6aWQ9Im9yZGVyQnlJZCI+PC9zcGFuPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMTg4IiAvPjwvdGg+CisJCQkJCQkJPHRoIGNsYXNzPSJ0aHJlZV9jb2x1bW5fbGF5b3V0X2NvbHVtbjIiPjxzcGFuIHdpY2tldDppZD0ib3JkZXJCeU5hbWUiPjwvc3Bhbj48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjE4OSIgLz48L3RoPgorCQkJCQkJCTx0aCBjbGFzcz0idGhyZWVfY29sdW1uX2xheW91dF9jb2x1bW4zIj48c3BhbiB3aWNrZXQ6aWQ9Im9yZGVyQnlQdWJsaWMiPjwvc3Bhbj48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjE5MCIgLz48L3RoPgorCQkJCQkJPC90cj4JCisJCQkJCTwvdGhlYWQ+CisJCQkJPC90YWJsZT4KKwkJCQk8ZGl2IGNsYXNzPSJ0YWJsZVdyYXBwZXIiIGlkPSJhZG1pblRhYmxlIj4KKwkJCQkJPHRhYmxlIGNsYXNzPSJhZG1pbkxpc3RUYWJsZSI+CisJCQkJCQk8dGJvZHkgd2lja2V0OmlkPSJsaXN0Q29udGFpbmVyIj4JCQorCQkJCSAgICAJCTx0ciB3aWNrZXQ6aWQ9InJvb21MaXN0Ij4KKwkJCQkJCQkJPHRkIGNsYXNzPSJ0aHJlZV9jb2x1bW5fbGF5b3V0X2NvbHVtbjEiPjxkaXYgY2xhc3M9InRocmVlX2NvbHVtbl9sYXlvdXRfZGl2Y29sdW1uMSI+PHNwYW4gd2lja2V0OmlkPSJyb29tc19pZCI+PC9zcGFuPjwvZGl2PjwvdGQ+CisJCQkJCQkJCTx0ZCBjbGFzcz0idGhyZWVfY29sdW1uX2xheW91dF9jb2x1bW4yIj48ZGl2IGNsYXNzPSJ0aHJlZV9jb2x1bW5fbGF5b3V0X2RpdmNvbHVtbjIiPjxzcGFuIHdpY2tldDppZD0ibmFtZSI+PC9zcGFuPjwvZGl2PjwvdGQ+CisJCQkJCQkJCTx0ZCBjbGFzcz0idGhyZWVfY29sdW1uX2xheW91dF9jb2x1bW4zIj48ZGl2IGNsYXNzPSJ0aHJlZV9jb2x1bW5fbGF5b3V0X2RpdmNvbHVtbjMiPjxzcGFuIHdpY2tldDppZD0iaXNwdWJsaWMiPjwvc3Bhbj48L2Rpdj48L3RkPgorCQkJCQkJCTwvdHI+CisJCQkJCQk8L3Rib2R5PgorCQkJCQk8L3RhYmxlPgorCQkJCTwvZGl2PgorCQkJPC9kaXY+CisJCQk8ZGl2IGNsYXNzPSJhZG1pblBhbmVsQ29sdW1uRm9ybSI+CisJCQkJPGZvcm0gd2lja2V0OmlkPSJmb3JtIiBjbGFzcz0iYWRtaW5Gb3JtIj4KKwkJCQkJPGRpdiB3aWNrZXQ6aWQ9ImJ1dHRvbnMiPjwvZGl2PgorCQkJCQk8ZGl2IGNsYXNzPSJzY3JvbGxjb250ZW50IiBpZD0iYWRtaW5Gb3JtIj4KKwkJCQkJCQorCQkJCQkJPCEtLSBHZW5lcmFsIC0tPgorCQkJCQkJPGZpZWxkc2V0PgorCQkJCQkJCTxsZWdlbmQ+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIxODciIC8+PC9sZWdlbmQ+CisJCQkJCQkJPGRpdiBjbGFzcz0iZm9ybWVsZW1lbnQiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIxOTMiIC8+PC9sYWJlbD48aW5wdXQgdHlwZT0idGV4dCIgd2lja2V0OmlkPSJuYW1lIiAvPgorCQkJCQkJCTwvZGl2PgorCQkJCQkJCTxkaXYgY2xhc3M9ImZvcm1lbGVtZW50Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iNDgyIiAvPjwvbGFiZWw+PHNlbGVjdCB3aWNrZXQ6aWQ9Im51bWJlck9mUGFydGl6aXBhbnRzIi8+CisJCQkJICAgICAgICAgICAgPC9kaXY+CisJCQkJICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybWVsZW1lbnQiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIxOTQiIC8+PC9sYWJlbD48c2VsZWN0IHdpY2tldDppZD0icm9vbXR5cGUiLz4KKwkJCQkgICAgICAgICAgICA8L2Rpdj4KKwkJCQkgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtZWxlbWVudCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjE5NiIgLz48L2xhYmVsPjx0ZXh0YXJlYSBzdHlsZT0id2lkdGg6IDIwMHB4OyBoZWlnaHQ6IDEwMHB4OyIgd2lja2V0OmlkPSJjb21tZW50Ii8+CisJCQkJICAgICAgICAgICAgPC9kaXY+CisJCQkJICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybWVsZW1lbnQiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSI2MjAiIC8+PC9sYWJlbD48aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJmb3JtY2hlY2tib3giIHdpY2tldDppZD0iYXBwb2ludG1lbnQiIC8+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+CisJCQkJICAgICAgICA8L2ZpZWxkc2V0PgorCQkJCSAgICAgICAgCisJCQkJICAgICAgICA8IS0tIE9yZ2FuaXNhdGlvbnMgLS0+CisJCQkJCQk8ZmllbGRzZXQ+CisJCQkJCQkJPGxlZ2VuZD48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjE5MSIgLz48L2xlZ2VuZD4KKwkJCQkgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtZWxlbWVudCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjE5NSIgLz48L2xhYmVsPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2xhc3M9ImZvcm1jaGVja2JveCIgd2lja2V0OmlkPSJpc3B1YmxpYyIgLz4KKwkJCQkgICAgICAgICAgICA8L2Rpdj4KKwkJCQkgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtZWxlbWVudCI+CisJCQkJICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImluZm8taWNvbiIgLz48c3BhbiBzdHlsZT0iZm9udC1zdHlsZTogaXRhbGljOyI+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSI4MjgiIC8+PC9zcGFuPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIvPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbmZvLWljb24iIC8+PHNwYW4gc3R5bGU9ImZvbnQtc3R5bGU6IGl0YWxpYzsiPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMTkxIiAvPjwvc3Bhbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4KKwkJCQkgICAgICAgICAgICAgICAgPGxhYmVsPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMTkxIiAvPjwvbGFiZWw+PHNlbGVjdCB3aWNrZXQ6aWQ9InJvb21PcmdhbmlzYXRpb25zIiBzdHlsZT0iaGVpZ2h0OiA4MHB4Ii8+CisJCQkJICAgICAgICAgICAgPC9kaXY+CisJCQkJICAgICAgICA8L2ZpZWxkc2V0PgorCQkJCSAgICAgICAgCisJCQkJICAgICAgICA8IS0tIExpbWl0YXRpb25zIC0tPgorCQkJCQkJPGZpZWxkc2V0PgorCQkJCQkJCTxsZWdlbmQ+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSI4MzAiIC8+PC9sZWdlbmQ+CisJCQkJICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybWVsZW1lbnQiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSI2MzYiIC8+PC9sYWJlbD48aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJmb3JtY2hlY2tib3giIHdpY2tldDppZD0iaXNEZW1vUm9vbSIgLz4KKwkJCQkgICAgICAgICAgICA8L2Rpdj4KKwkJCQkgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtZWxlbWVudCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjYzNyIgLz48L2xhYmVsPjxpbnB1dCB0eXBlPSJ0ZXh0IiB3aWNrZXQ6aWQ9ImRlbW9UaW1lIiAvPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PgorCQkJCQkJPC9maWVsZHNldD4KKwkJCQkJCQorCQkJCQkJPCEtLSBSaWdodHMgLS0+CisJCQkJCQk8ZmllbGRzZXQ+CisJCQkJCQkJPGxlZ2VuZD48d2lja2V0Om9tbWVzc2FnZSBrZXk9Ijg4MSIgLz48L2xlZ2VuZD4KKwkJCQkgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtZWxlbWVudCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD48d2lja2V0Om9tbWVzc2FnZSBrZXk9Ijg3OSIgLz48L2xhYmVsPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2xhc3M9ImZvcm1jaGVja2JveCIgd2lja2V0OmlkPSJhbGxvd1VzZXJRdWVzdGlvbnMiIC8+CisJCQkJICAgICAgICAgICAgPC9kaXY+CisJCQkJICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybWVsZW1lbnQiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8d2lja2V0Om9tbWVzc2FnZSBrZXk9Ijg4MCIgLz4KKwkJCQkgICAgICAgICAgICAgICAgPGJyLz4KKwkJCQkgICAgICAgICAgICAgICAgPGxhYmVsPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMTA3NiIgLz48L2xhYmVsPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2xhc3M9ImZvcm1jaGVja2JveCIgd2lja2V0OmlkPSJpc0F1ZGlvT25seSIgLz4KKwkJCQkgICAgICAgICAgICA8L2Rpdj4KKwkJCQkgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtZWxlbWVudCI+CisJCQkJICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImluZm8taWNvbiIgLz48c3BhbiBzdHlsZT0iZm9udC1zdHlsZTogaXRhbGljOyI+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIxMDc3IiAvPjwvc3Bhbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4KKwkJCQkJICAgICAgICAgICAgPGRpdiBjbGFzcz0iaW5mby1pY29uIiAvPjxzcGFuIHN0eWxlPSJmb250LXN0eWxlOiBpdGFsaWM7Ij48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjExMDEiIC8+PC9zcGFuPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIvPgorCQkJCSAgICAgICAgICAgICAgICA8bGFiZWw+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIxMDc2IiAvPjwvbGFiZWw+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBjbGFzcz0iZm9ybWNoZWNrYm94IiB3aWNrZXQ6aWQ9ImlzQ2xvc2VkIiAvPgorCQkJCSAgICAgICAgICAgIDwvZGl2PgorCQkJCSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm1lbGVtZW50Ij4KKwkJCQkgICAgICAgICAgICAgICAgPGxhYmVsPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMTEwMCIgLz48L2xhYmVsPjxpbnB1dCB0eXBlPSJ0ZXh0IiB3aWNrZXQ6aWQ9InJlZGlyZWN0VVJMIiAvPgorCQkJCQkJCTwvZGl2PgorCQkJCQkJCTxkaXYgY2xhc3M9ImZvcm1lbGVtZW50Ij4KKwkJCQkJCQkgICAgPGRpdiBjbGFzcz0iaW5mby1pY29uIiAvPjxzcGFuIHN0eWxlPSJmb250LXN0eWxlOiBpdGFsaWM7Ij48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjExMDIiIC8+PC9zcGFuPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YnIvPgorCQkJCSAgICAgICAgICAgICAgICA8bGFiZWw+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIxMDc2IiAvPjwvbGFiZWw+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBjbGFzcz0iZm9ybWNoZWNrYm94IiB3aWNrZXQ6aWQ9IndhaXRGb3JSZWNvcmRpbmciIC8+CisJCQkJICAgICAgICAgICAgPC9kaXY+CisJCQkJICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybWVsZW1lbnQiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIxMDc2IiAvPjwvbGFiZWw+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBjbGFzcz0iZm9ybWNoZWNrYm94IiB3aWNrZXQ6aWQ9ImFsbG93UmVjb3JkaW5nIiAvPgorCQkJCSAgICAgICAgICAgIDwvZGl2PgorCQkJCQkJPC9maWVsZHNldD4KKwkJCQkJCQorCQkJCQkJPCEtLSBSb29tIExheW91dCBvcHRpb25zIC0tPgorCQkJCQkJPGZpZWxkc2V0PgorCQkJCQkJCTxsZWdlbmQ+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIxNDQzIiAvPjwvbGVnZW5kPgorCQkJCQkJCTxkaXYgY2xhc3M9ImZvcm1lbGVtZW50Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMTM1NyIgLz48L2xhYmVsPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2xhc3M9ImZvcm1jaGVja2JveCIgd2lja2V0OmlkPSJoaWRlVG9wQmFyIiAvPgorCQkJCSAgICAgICAgICAgIDwvZGl2PgorCQkJCSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm1lbGVtZW50Ij4KKwkJCQkgICAgICAgICAgICAgICAgPGxhYmVsPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMTQzNiIgLz48L2xhYmVsPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2xhc3M9ImZvcm1jaGVja2JveCIgd2lja2V0OmlkPSJoaWRlQ2hhdCIgLz4KKwkJCQkgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtZWxlbWVudCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjE0MzciIC8+PC9sYWJlbD48aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJmb3JtY2hlY2tib3giIHdpY2tldDppZD0iaGlkZUFjdGl2aXRpZXNBbmRBY3Rpb25zIiAvPgorCQkJCSAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm1lbGVtZW50Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMTQzOCIgLz48L2xhYmVsPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2xhc3M9ImZvcm1jaGVja2JveCIgd2lja2V0OmlkPSJoaWRlRmlsZXNFeHBsb3JlciIgLz4KKwkJCQkgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtZWxlbWVudCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjE0MzkiIC8+PC9sYWJlbD48aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJmb3JtY2hlY2tib3giIHdpY2tldDppZD0iaGlkZUFjdGlvbnNNZW51IiAvPgorCQkJCSAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm1lbGVtZW50Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMTQ0MCIgLz48L2xhYmVsPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2xhc3M9ImZvcm1jaGVja2JveCIgd2lja2V0OmlkPSJoaWRlU2NyZWVuU2hhcmluZyIgLz4KKwkJCQkgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtZWxlbWVudCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjE0NDEiIC8+PC9sYWJlbD48aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJmb3JtY2hlY2tib3giIHdpY2tldDppZD0iaGlkZVdoaXRlYm9hcmQiIC8+CisJCQkJICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybWVsZW1lbnQiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIxNDQyIiAvPjwvbGFiZWw+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBjbGFzcz0iZm9ybWNoZWNrYm94IiB3aWNrZXQ6aWQ9InNob3dNaWNyb3Bob25lU3RhdHVzIiAvPgorCQkJCSAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm1lbGVtZW50Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMTUxMyIgLz48L2xhYmVsPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2xhc3M9ImZvcm1jaGVja2JveCIgd2lja2V0OmlkPSJjaGF0TW9kZXJhdGVkIiAvPgorCQkJCSAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm1lbGVtZW50Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMTUxNSIgLz48L2xhYmVsPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2xhc3M9ImZvcm1jaGVja2JveCIgd2lja2V0OmlkPSJjaGF0T3BlbmVkIiAvPgorCQkJCSAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm1lbGVtZW50Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMTUxNiIgLz48L2xhYmVsPjxpbnB1dCB0eXBlPSJjaGVja2JveCIgY2xhc3M9ImZvcm1jaGVja2JveCIgd2lja2V0OmlkPSJmaWxlc09wZW5lZCIgLz4KKwkJCQkgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtZWxlbWVudCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjE1MjYiIC8+PC9sYWJlbD48aW5wdXQgdHlwZT0iY2hlY2tib3giIGNsYXNzPSJmb3JtY2hlY2tib3giIHdpY2tldDppZD0iYXV0b1ZpZGVvU2VsZWN0IiAvPgorCQkJCSAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm1lbGVtZW50Ij4KKwkJCQkgICAgICAgICAgICA8IS0tIAorCQkJCSAgICAgICAgICAgIEZJWE1FOiBhZGQgdXNlciBtb2RlcmF0b3IgbGlzdAorCQkJCSAgICAgICAgICAgIDx3aWNrZXQ6b21tZXNzYWdlIGtleT0iNTg3IiAvPiA8c2VsZWN0IHdpY2tldDppZD0ibW9kZXJhdG9ycyIvPgorCQkJCSAgICAgICAgICAgIDxici8+CisJCQkJICAgICAgICAgICAgIC0tPgorCQkJCSAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJpbmZvLWljb24iIC8+PHNwYW4gc3R5bGU9ImZvbnQtc3R5bGU6IGl0YWxpYzsiPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iODIzIiAvPjwvc3Bhbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4KKwkJCQkgICAgICAgICAgICAgICAgPGxhYmVsPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iNjQwIiAvPjwvbGFiZWw+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBjbGFzcz0iZm9ybWNoZWNrYm94IiB3aWNrZXQ6aWQ9ImlzTW9kZXJhdGVkUm9vbSIgLz4KKwkJCQkgICAgICAgICAgICA8L2Rpdj4KKwkgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtZWxlbWVudCI+CisJCQkJCSAgICAgICAgICAgIDx3aWNrZXQ6b21tZXNzYWdlIGtleT0iODE2IiAvPgorCQkJCSAgICAgICAgICAgIDwvZGl2PgorCQkJCQkJPC9maWVsZHNldD4KKwkJCQkJPC9kaXY+CisJCQkJPC9mb3JtPgorCQkJPC9kaXY+CisJCTwvZGl2PgorCTwvd2lja2V0OnBhbmVsPgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL2FkbWluL3Jvb21zL1Jvb21zUGFuZWwuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi9yb29tcy9Sb29tc1BhbmVsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDRiOTBjYgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi9yb29tcy9Sb29tc1BhbmVsLmphdmEKQEAgLTAsMCArMSw5MyBAQAorLyoNCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICogdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuY29tcG9uZW50cy5hZG1pbi5yb29tczsNCisNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jb25mZXJlbmNlLmRhby5Sb29tRGFvOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tLlJvb207DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5jb21wb25lbnRzLmFkbWluLkFkbWluUGFuZWw7DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5jb21wb25lbnRzLmFkbWluLlNlYXJjaGFibGVEYXRhVmlldzsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmNvbXBvbmVudHMuYWRtaW4uUGFnZWRFbnRpdHlMaXN0UGFuZWw7DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5kYXRhLkRhdGFWaWV3Q29udGFpbmVyOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuZGF0YS5TZWFyY2hhYmxlRGF0YVByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuZGF0YS5PcmRlckJ5Qm9yZGVyOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5BdHRyaWJ1dGVNb2RpZmllcjsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQuYWpheC5BamF4RXZlbnRCZWhhdmlvcjsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQuYWpheC5BamF4UmVxdWVzdFRhcmdldDsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuV2ViTWFya3VwQ29udGFpbmVyOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5iYXNpYy5MYWJlbDsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLnJlcGVhdGVyLkl0ZW07DQorDQorcHVibGljIGNsYXNzIFJvb21zUGFuZWwgZXh0ZW5kcyBBZG1pblBhbmVsIHsNCisNCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gLTFMOw0KKwlwcml2YXRlIFJvb21Gb3JtIGZvcm07DQorCQ0KKwlAT3ZlcnJpZGUNCisJcHVibGljIHZvaWQgb25NZW51UGFuZWxMb2FkKEFqYXhSZXF1ZXN0VGFyZ2V0IHRhcmdldCkgew0KKwkJdGFyZ2V0LmFwcGVuZEphdmFTY3JpcHQoIm9tUm9vbVBhbmVsSW5pdCgpOyIpOw0KKwl9DQorDQorCUBTdXBwcmVzc1dhcm5pbmdzKCJ1bmNoZWNrZWQiKQ0KKwlwdWJsaWMgUm9vbXNQYW5lbChTdHJpbmcgaWQpIHsNCisJCXN1cGVyKGlkKTsNCisJCVNlYXJjaGFibGVEYXRhVmlldzxSb29tPiBkYXRhVmlldyA9IG5ldyBTZWFyY2hhYmxlRGF0YVZpZXc8Um9vbT4oInJvb21MaXN0IiwgbmV3IFNlYXJjaGFibGVEYXRhUHJvdmlkZXI8Um9vbT4oUm9vbURhby5jbGFzcykpIHsNCisJCQlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSA4NzE1NTU5NjI4NzU1NDM5NTk2TDsNCisNCisJCQlAT3ZlcnJpZGUNCisJCQlwcm90ZWN0ZWQgdm9pZCBwb3B1bGF0ZUl0ZW0oZmluYWwgSXRlbTxSb29tPiBpdGVtKSB7DQorCQkJCWZpbmFsIFJvb20gcm9vbSA9IGl0ZW0uZ2V0TW9kZWxPYmplY3QoKTsNCisJCQkJaXRlbS5hZGQobmV3IExhYmVsKCJyb29tc19pZCIsICIiICsgcm9vbS5nZXRSb29tc19pZCgpKSk7DQorCQkJCWl0ZW0uYWRkKG5ldyBMYWJlbCgibmFtZSIsICIiICsgcm9vbS5nZXROYW1lKCkpKTsNCisJCQkJaXRlbS5hZGQobmV3IExhYmVsKCJpc3B1YmxpYyIsICIiK3Jvb20uZ2V0SXNwdWJsaWMoKSkpOw0KKwkJCQlpdGVtLmFkZChuZXcgQWpheEV2ZW50QmVoYXZpb3IoIm9uY2xpY2siKSB7DQorCQkJCQlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAtODA2OTQxMzU2NjgwMDU3MTA2MUw7DQorDQorCQkJCQlwcm90ZWN0ZWQgdm9pZCBvbkV2ZW50KEFqYXhSZXF1ZXN0VGFyZ2V0IHRhcmdldCkgew0KKwkJCQkJCWZvcm0uc2V0TW9kZWxPYmplY3Qocm9vbSk7DQorCQkJCQkJZm9ybS5oaWRlTmV3UmVjb3JkKCk7DQorCQkJCQkJdGFyZ2V0LmFkZChmb3JtKTsNCisJCQkJCQl0YXJnZXQuYXBwZW5kSmF2YVNjcmlwdCgib21Sb29tUGFuZWxJbml0KCk7Iik7DQorCQkJCQl9DQorCQkJCX0pOw0KKwkJCQlpdGVtLmFkZChBdHRyaWJ1dGVNb2RpZmllci5yZXBsYWNlKCJjbGFzcyIsIChpdGVtLmdldEluZGV4KCkgJSAyID09IDEpID8gImV2ZW4iIDogIm9kZCIpKTsNCisJCQl9DQorCQl9Ow0KKwkJDQorCQlmaW5hbCBXZWJNYXJrdXBDb250YWluZXIgbGlzdENvbnRhaW5lciA9IG5ldyBXZWJNYXJrdXBDb250YWluZXIoImxpc3RDb250YWluZXIiKTsNCisJCWFkZChsaXN0Q29udGFpbmVyLmFkZChkYXRhVmlldykuc2V0T3V0cHV0TWFya3VwSWQodHJ1ZSkpOw0KKwkJRGF0YVZpZXdDb250YWluZXI8Um9vbT4gY29udGFpbmVyID0gbmV3IERhdGFWaWV3Q29udGFpbmVyPFJvb20+KGxpc3RDb250YWluZXIsIGRhdGFWaWV3KTsNCisJCWNvbnRhaW5lci5zZXRMaW5rcyhuZXcgT3JkZXJCeUJvcmRlcjxSb29tPigib3JkZXJCeUlkIiwgInJvb21zX2lkIiwgY29udGFpbmVyKQ0KKwkJCQksIG5ldyBPcmRlckJ5Qm9yZGVyPFJvb20+KCJvcmRlckJ5TmFtZSIsICJuYW1lIiwgY29udGFpbmVyKQ0KKwkJCQksIG5ldyBPcmRlckJ5Qm9yZGVyPFJvb20+KCJvcmRlckJ5UHVibGljIiwgImlzcHVibGljIiwgY29udGFpbmVyKSk7DQorCQlhZGQoY29udGFpbmVyLm9yZGVyTGlua3MpOw0KKwkJYWRkKG5ldyBQYWdlZEVudGl0eUxpc3RQYW5lbCgibmF2aWdhdG9yIiwgZGF0YVZpZXcpIHsNCisJCQlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAtMUw7DQorDQorCQkJQE92ZXJyaWRlDQorCQkJcHJvdGVjdGVkIHZvaWQgb25FdmVudChBamF4UmVxdWVzdFRhcmdldCB0YXJnZXQpIHsNCisJCQkJdGFyZ2V0LmFkZChsaXN0Q29udGFpbmVyKTsNCisJCQl9DQorCQl9KTsNCisJCQ0KKwkJZm9ybSA9IG5ldyBSb29tRm9ybSgiZm9ybSIsIG5ldyBSb29tKCkpOw0KKwkJZm9ybS5zaG93TmV3UmVjb3JkKCk7DQorICAgICAgICBhZGQoZm9ybSk7DQorCQkNCisJfQ0KK30NCmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvYWRtaW4vc2VydmVycy9TZXJ2ZXJGb3JtLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvYWRtaW4vc2VydmVycy9TZXJ2ZXJGb3JtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjlmMmNmMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi9zZXJ2ZXJzL1NlcnZlckZvcm0uamF2YQpAQCAtMCwwICsxLDEyNSBAQAorLyoNCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICogdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuY29tcG9uZW50cy5hZG1pbi5zZXJ2ZXJzOw0KKw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLmRhby5TZXJ2ZXJEYW87DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmJhc2ljLlNlcnZlcjsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmFwcC5BcHBsaWNhdGlvbjsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmFwcC5XZWJTZXNzaW9uOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuY29tcG9uZW50cy5hZG1pbi5BZG1pbkJhc2VGb3JtOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5hamF4LkFqYXhSZXF1ZXN0VGFyZ2V0Ow0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5hamF4LmZvcm0uQWpheEZvcm1WYWxpZGF0aW5nQmVoYXZpb3I7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LmRhdGV0aW1lLm1hcmt1cC5odG1sLmJhc2ljLkRhdGVMYWJlbDsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuV2ViTWFya3VwQ29udGFpbmVyOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5iYXNpYy5MYWJlbDsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuZm9ybS5DaGVja0JveDsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuZm9ybS5Gb3JtOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5mb3JtLlJlcXVpcmVkVGV4dEZpZWxkOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5mb3JtLlRleHRBcmVhOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5mb3JtLlRleHRGaWVsZDsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubW9kZWwuQ29tcG91bmRQcm9wZXJ0eU1vZGVsOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC51dGlsLnRpbWUuRHVyYXRpb247DQorDQorLyoqDQorICogRm9ybSBjb21wb25lbnQgdG8gaW5zZXJ0L3VwZGF0ZS9kZWxldGUge0BsaW5rIFNlcnZlcn0NCisgKiANCisgKiBAYXV0aG9yIHN3YWduZXINCisgKiANCisgKi8NCitwdWJsaWMgY2xhc3MgU2VydmVyRm9ybSBleHRlbmRzIEFkbWluQmFzZUZvcm08U2VydmVyPiB7DQorDQorCXByaXZhdGUgZmluYWwgV2ViTWFya3VwQ29udGFpbmVyIGxpc3RDb250YWluZXI7DQorCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDFMOw0KKw0KKwlwdWJsaWMgU2VydmVyRm9ybShTdHJpbmcgaWQsIFdlYk1hcmt1cENvbnRhaW5lciBsaXN0Q29udGFpbmVyLA0KKwkJCWZpbmFsIFNlcnZlciBzZXJ2ZXIpIHsNCisJCXN1cGVyKGlkLCBuZXcgQ29tcG91bmRQcm9wZXJ0eU1vZGVsPFNlcnZlcj4oc2VydmVyKSk7DQorCQlzZXRPdXRwdXRNYXJrdXBJZCh0cnVlKTsNCisJCXRoaXMubGlzdENvbnRhaW5lciA9IGxpc3RDb250YWluZXI7DQorDQorCQlhZGQobmV3IFJlcXVpcmVkVGV4dEZpZWxkPFN0cmluZz4oIm5hbWUiKSk7DQorCQlhZGQobmV3IENoZWNrQm94KCJhY3RpdmUiKSk7DQorCQlhZGQobmV3IFJlcXVpcmVkVGV4dEZpZWxkPFN0cmluZz4oImFkZHJlc3MiKSk7DQorCQlhZGQobmV3IFRleHRGaWVsZDxJbnRlZ2VyPigicG9ydCIpKTsNCisJCWFkZChuZXcgVGV4dEZpZWxkPFN0cmluZz4oInVzZXIiKSk7DQorCQlhZGQobmV3IFRleHRGaWVsZDxTdHJpbmc+KCJwYXNzIikpOw0KKwkJYWRkKG5ldyBUZXh0RmllbGQ8U3RyaW5nPigid2ViYXBwIikpOw0KKwkJYWRkKG5ldyBUZXh0RmllbGQ8U3RyaW5nPigicHJvdG9jb2wiKSk7DQorCQlhZGQoRGF0ZUxhYmVsLmZvckRhdGVQYXR0ZXJuKCJsYXN0UGluZyIsICJkZC5NTS55eXl5IEhIOm1tOnNzIikpOw0KKwkJLy9hZGQobmV3IExhYmVsKCJwaW5nUnVubmluZyIpKTsNCisJCWFkZChEYXRlTGFiZWwuZm9yRGF0ZVBhdHRlcm4oImluc2VydGVkIiwgImRkLk1NLnl5eXkgSEg6bW06c3MiKSk7DQorCQlhZGQobmV3IExhYmVsKCJpbnNlcnRlZGJ5LmxvZ2luIikpOw0KKwkJYWRkKERhdGVMYWJlbC5mb3JEYXRlUGF0dGVybigidXBkYXRlZCIsICJkZC5NTS55eXl5IEhIOm1tOnNzIikpOw0KKwkJYWRkKG5ldyBMYWJlbCgidXBkYXRlZGJ5LmxvZ2luIikpOw0KKwkJYWRkKG5ldyBUZXh0QXJlYTxTdHJpbmc+KCJjb21tZW50IikpOw0KKw0KKwkJLy8gYXR0YWNoIGFuIGFqYXggdmFsaWRhdGlvbiBiZWhhdmlvciB0byBhbGwgZm9ybSBjb21wb25lbnQncyBrZXlkb3duDQorCQkvLyBldmVudCBhbmQgdGhyb3R0bGUgaXQgZG93biB0byBvbmNlIHBlciBzZWNvbmQNCisJCUFqYXhGb3JtVmFsaWRhdGluZ0JlaGF2aW9yLmFkZFRvQWxsRm9ybUNvbXBvbmVudHModGhpcywgImtleWRvd24iLA0KKwkJCQlEdXJhdGlvbi5PTkVfU0VDT05EKTsNCisJfQ0KKw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIHZvaWQgb25TYXZlU3VibWl0KEFqYXhSZXF1ZXN0VGFyZ2V0IHRhcmdldCwgRm9ybTw/PiBmb3JtKSB7DQorCQlBcHBsaWNhdGlvbi5nZXRCZWFuKFNlcnZlckRhby5jbGFzcykudXBkYXRlKGdldE1vZGVsT2JqZWN0KCksDQorCQkJCVdlYlNlc3Npb24uZ2V0VXNlcklkKCkpOw0KKwkJU2VydmVyIHNlcnZlciA9IEFwcGxpY2F0aW9uLmdldEJlYW4oU2VydmVyRGFvLmNsYXNzKS5nZXQoDQorCQkJCWdldE1vZGVsT2JqZWN0KCkuZ2V0SWQoKSk7DQorCQlzZXRNb2RlbE9iamVjdChzZXJ2ZXIpOw0KKwkJaGlkZU5ld1JlY29yZCgpOw0KKwkJdGFyZ2V0LmFkZCh0aGlzKTsNCisJCXRhcmdldC5hZGQobGlzdENvbnRhaW5lcik7DQorCQl0YXJnZXQuYXBwZW5kSmF2YVNjcmlwdCgib21TZXJ2ZXJQYW5lbEluaXQoKTsiKTsNCisJfQ0KKw0KKwlAT3ZlcnJpZGUNCisJcHJvdGVjdGVkIHZvaWQgb25OZXdTdWJtaXQoQWpheFJlcXVlc3RUYXJnZXQgdGFyZ2V0LCBGb3JtPD8+IGZvcm0pIHsNCisJCVNlcnZlciBzID0gbmV3IFNlcnZlcigpOw0KKwkJcy5zZXRXZWJhcHAoIm9wZW5tZWV0aW5ncyIpOw0KKwkJcy5zZXRQcm90b2NvbCgiaHR0cCIpOw0KKwkJc2V0TW9kZWxPYmplY3Qocyk7DQorCQl0YXJnZXQuYWRkKHRoaXMpOw0KKwkJdGFyZ2V0LmFwcGVuZEphdmFTY3JpcHQoIm9tU2VydmVyUGFuZWxJbml0KCk7Iik7DQorCX0NCisNCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCB2b2lkIG9uUmVmcmVzaFN1Ym1pdChBamF4UmVxdWVzdFRhcmdldCB0YXJnZXQsIEZvcm08Pz4gZm9ybSkgew0KKwkJU2VydmVyIHNlcnZlciA9IGdldE1vZGVsT2JqZWN0KCk7DQorCQlpZiAoc2VydmVyLmdldElkKCkgPD0gMCkgew0KKwkJCXNlcnZlciA9IEFwcGxpY2F0aW9uLmdldEJlYW4oU2VydmVyRGFvLmNsYXNzKS5nZXQoDQorCQkJCQlzZXJ2ZXIuZ2V0SWQoKSk7DQorCQl9IGVsc2Ugew0KKwkJCXNlcnZlciA9IG5ldyBTZXJ2ZXIoKTsNCisJCX0NCisJCXNldE1vZGVsT2JqZWN0KHNlcnZlcik7DQorCQl0YXJnZXQuYWRkKHRoaXMpOw0KKwkJdGFyZ2V0LmFwcGVuZEphdmFTY3JpcHQoIm9tU2VydmVyUGFuZWxJbml0KCk7Iik7DQorCX0NCisNCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCB2b2lkIG9uRGVsZXRlU3VibWl0KEFqYXhSZXF1ZXN0VGFyZ2V0IHRhcmdldCwgRm9ybTw/PiBmb3JtKSB7DQorCQlBcHBsaWNhdGlvbi5nZXRCZWFuKFNlcnZlckRhby5jbGFzcykuZGVsZXRlKGdldE1vZGVsT2JqZWN0KCksDQorCQkJCVdlYlNlc3Npb24uZ2V0VXNlcklkKCkpOw0KKwkJdGhpcy5zZXRNb2RlbE9iamVjdChuZXcgU2VydmVyKCkpOw0KKwkJdGFyZ2V0LmFkZChsaXN0Q29udGFpbmVyKTsNCisJCXRhcmdldC5hZGQodGhpcyk7DQorCQl0YXJnZXQuYXBwZW5kSmF2YVNjcmlwdCgib21TZXJ2ZXJQYW5lbEluaXQoKTsiKTsNCisJfQ0KKw0KK30NCmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvYWRtaW4vc2VydmVycy9TZXJ2ZXJzUGFuZWwuaHRtbCBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi9zZXJ2ZXJzL1NlcnZlcnNQYW5lbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkOWIyMzkKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvYWRtaW4vc2VydmVycy9TZXJ2ZXJzUGFuZWwuaHRtbApAQCAtMCwwICsxLDExNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxodG1sIHhtbG5zOndpY2tldD0iaHR0cDovL3dpY2tldC5hcGFjaGUub3JnIj4KKwk8d2lja2V0OmhlYWQ+CisgICAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgICAgICAgICBmdW5jdGlvbiBvbVNlcnZlclBhbmVsSW5pdCgpIHsKKyAgICAgICAgICAgICAgIHZhciBkb2N1bWVudEhlaWdodCA9ICQoZG9jdW1lbnQpLmhlaWdodCgpOworICAgICAgICAgICAgICAgJCgnI2FkbWluRm9ybScpLmhlaWdodChkb2N1bWVudEhlaWdodC0xMTQpOworICAgICAgICAgICAgICAgJCgnI2FkbWluVGFibGUnKS5oZWlnaHQoZG9jdW1lbnRIZWlnaHQtMTQ0KTsKKyAgICAgICAgICAgfQorICAgICAgIDwvc2NyaXB0PgorICAgIDwvd2lja2V0OmhlYWQ+CisJPHdpY2tldDpwYW5lbD4KKwkJPGRpdiBjbGFzcz0iYWRtaW5QYW5lbCI+CisJCQk8ZGl2IGNsYXNzPSJhZG1pblBhbmVsQ29sdW1uVGFibGUiPgorCQkJCTxzcGFuIHdpY2tldDppZD0ibmF2aWdhdG9yIj5bZGF0YXZpZXcgbmF2aWdhdG9yXTwvc3Bhbj4KKwkJCQk8dGFibGUgY2xhc3M9ImFkbWluTGlzdFRhYmxlIj4KKwkJCQkJPHRoZWFkPgorCQkJCQkJPHRyPgorCQkJCQkJCTx0aCBjbGFzcz0idGhyZWVfY29sdW1uX2xheW91dF9jb2x1bW4xIj48c3BhbiB3aWNrZXQ6aWQ9Im9yZGVyQnlJZCI+PC9zcGFuPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMTg4IiAvPjwvdGg+CisJCQkJCQkJPHRoIGNsYXNzPSJ0aHJlZV9jb2x1bW5fbGF5b3V0X2NvbHVtbjIiPjxzcGFuIHdpY2tldDppZD0ib3JkZXJCeU5hbWUiPjwvc3Bhbj48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjE1MDAiIC8+PC90aD4KKwkJCQkJCQk8dGggY2xhc3M9InRocmVlX2NvbHVtbl9sYXlvdXRfY29sdW1uMyI+PHNwYW4gd2lja2V0OmlkPSJvcmRlckJ5QWRkcmVzcyI+PC9zcGFuPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMTUwMSIgLz48L3RoPgorCQkJCQkJPC90cj4JCisJCQkJCTwvdGhlYWQ+CisJCQkJPC90YWJsZT4KKwkJCQk8ZGl2IGNsYXNzPSJ0YWJsZVdyYXBwZXIiIGlkPSJhZG1pblRhYmxlIj4KKwkJCQkJPHRhYmxlIGNsYXNzPSJhZG1pbkxpc3RUYWJsZSI+CisJCQkJCQk8dGJvZHkgd2lja2V0OmlkPSJsaXN0Q29udGFpbmVyIj4JCisJCQkJICAgIAkJPHRyIHdpY2tldDppZD0ic2VydmVyTGlzdCI+CisJCQkJCQkJCTx0ZCBjbGFzcz0idGhyZWVfY29sdW1uX2xheW91dF9jb2x1bW4xIj48ZGl2IGNsYXNzPSJ0aHJlZV9jb2x1bW5fbGF5b3V0X2RpdmNvbHVtbjEiPjxzcGFuIHdpY2tldDppZD0iaWQiPjwvc3Bhbj48L2Rpdj48L3RkPgorCQkJCQkJCQk8dGQgY2xhc3M9InRocmVlX2NvbHVtbl9sYXlvdXRfY29sdW1uMiI+PGRpdiBjbGFzcz0idGhyZWVfY29sdW1uX2xheW91dF9kaXZjb2x1bW4yIj48c3BhbiB3aWNrZXQ6aWQ9Im5hbWUiPjwvc3Bhbj48L2Rpdj48L3RkPgorCQkJCQkJCQk8dGQgY2xhc3M9InRocmVlX2NvbHVtbl9sYXlvdXRfY29sdW1uMyI+PGRpdiBjbGFzcz0idGhyZWVfY29sdW1uX2xheW91dF9kaXZjb2x1bW4zIj48c3BhbiB3aWNrZXQ6aWQ9ImFkZHJlc3MiPjwvc3Bhbj48L2Rpdj48L3RkPgorCQkJCQkJCTwvdHI+CisJCQkJCQk8L3Rib2R5PgorCQkJCQk8L3RhYmxlPgorCQkJCTwvZGl2PgorCQkJPC9kaXY+CisJCQk8ZGl2IGNsYXNzPSJhZG1pblBhbmVsQ29sdW1uRm9ybSI+CisJCQkJPGZvcm0gd2lja2V0OmlkPSJmb3JtIiBjbGFzcz0iYWRtaW5Gb3JtIj4KKwkJCQkJPGRpdiB3aWNrZXQ6aWQ9ImJ1dHRvbnMiPjwvZGl2PgorCQkJCQk8ZGl2IGNsYXNzPSJzY3JvbGxjb250ZW50IiBpZD0iYWRtaW5Gb3JtIj4KKwkJCQkJCTxmaWVsZHNldD4KKwkJCQkJCQk8bGVnZW5kPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMTUwMiIgLz48L2xlZ2VuZD4KKwkJCQkJCQk8ZGl2IGNsYXNzPSJmb3JtZWxlbWVudCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjE1MDAiIC8+PC9sYWJlbD48aW5wdXQgdHlwZT0idGV4dCIgd2lja2V0OmlkPSJuYW1lIi8+CisJCQkJICAgICAgICAgICAgPC9kaXY+CisJCQkJICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybWVsZW1lbnQiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIxNTI1IiAvPjwvbGFiZWw+PGlucHV0IHR5cGU9ImNoZWNrYm94IiBjbGFzcz0iZm9ybWNoZWNrYm94IiB3aWNrZXQ6aWQ9ImFjdGl2ZSIgLz4KKwkJCQkgICAgICAgICAgICA8L2Rpdj4KKwkJCQkgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtZWxlbWVudCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjE1MDEiIC8+PC9sYWJlbD48aW5wdXQgdHlwZT0idGV4dCIgd2lja2V0OmlkPSJhZGRyZXNzIi8+CisJCQkJICAgICAgICAgICAgPC9kaXY+CisJCQkJICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybWVsZW1lbnQiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIxNTE5IiAvPjwvbGFiZWw+PGlucHV0IHR5cGU9InRleHQiIHdpY2tldDppZD0icG9ydCIvPgorCQkJCSAgICAgICAgICAgIDwvZGl2PgorCQkJCSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm1lbGVtZW50Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMTUyMCIgLz48L2xhYmVsPjxpbnB1dCB0eXBlPSJ0ZXh0IiB3aWNrZXQ6aWQ9InVzZXIiLz4KKwkJCQkgICAgICAgICAgICA8L2Rpdj4KKwkJCQkgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtZWxlbWVudCI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjE1MjEiIC8+PC9sYWJlbD48aW5wdXQgdHlwZT0idGV4dCIgd2lja2V0OmlkPSJwYXNzIi8+CisJCQkJICAgICAgICAgICAgPC9kaXY+CisJCQkJICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybWVsZW1lbnQiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIxNTIyIiAvPjwvbGFiZWw+PGlucHV0IHR5cGU9InRleHQiIHdpY2tldDppZD0id2ViYXBwIi8+CisJCQkJICAgICAgICAgICAgPC9kaXY+CisJCQkJICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybWVsZW1lbnQiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIxNTIzIiAvPjwvbGFiZWw+PGlucHV0IHR5cGU9InRleHQiIHdpY2tldDppZD0icHJvdG9jb2wiLz4KKwkJCQkgICAgICAgICAgICA8L2Rpdj4KKwkJCQkgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtZWxlbWVudCI+CisJCQkJCSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImluZm8taWNvbiIgLz48c3BhbiBzdHlsZT0iZm9udC1zdHlsZTogaXRhbGljOyI+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIxNTE4IiAvPjwvc3Bhbj4KKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxici8+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsYWJlbD48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjE1MTciIC8+PC9sYWJlbD48c3BhbiB3aWNrZXQ6aWQ9Imxhc3RQaW5nIi8+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwhLS0gYnIvPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIxNTI0IiAvPjwvbGFiZWw+PHNwYW4gd2lja2V0OmlkPSJwaW5nUnVubmluZyIvLS0+CisJCQkJICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybWVsZW1lbnQiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIxMTEwIiAvPjwvbGFiZWw+PHNwYW4gd2lja2V0OmlkPSJpbnNlcnRlZCIvPgorCQkJCSAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm1lbGVtZW50Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMTExMSIgLz48L2xhYmVsPjxzcGFuIHdpY2tldDppZD0iaW5zZXJ0ZWRieS5sb2dpbiIvPgorCQkJCSAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm1lbGVtZW50Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMTExMiIgLz48L2xhYmVsPjxzcGFuIHdpY2tldDppZD0idXBkYXRlZCIvPgorCQkJCSAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm1lbGVtZW50Ij4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxhYmVsPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMTExMyIgLz48L2xhYmVsPjxzcGFuIHdpY2tldDppZD0idXBkYXRlZGJ5LmxvZ2luIi8+CisJCQkJICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybWVsZW1lbnQiPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGFiZWw+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIyNzAiIC8+PC9sYWJlbD48dGV4dGFyZWEgd2lja2V0OmlkPSJjb21tZW50Ii8+CisJCQkJICAgICAgICAgICAgPC9kaXY+CisJCQkJICAgICAgICA8L2ZpZWxkc2V0PgorCQkJCSAgICA8L2Rpdj4KKwkJCQk8L2Zvcm0+CisJCQk8L2Rpdj4KKwkJPC9kaXY+CisJPC93aWNrZXQ6cGFuZWw+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvYWRtaW4vc2VydmVycy9TZXJ2ZXJzUGFuZWwuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi9zZXJ2ZXJzL1NlcnZlcnNQYW5lbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkNWE0YTQKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvYWRtaW4vc2VydmVycy9TZXJ2ZXJzUGFuZWwuamF2YQpAQCAtMCwwICsxLDk5IEBACisvKg0KKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgKiB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5jb21wb25lbnRzLmFkbWluLnNlcnZlcnM7DQorDQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuZGFvLlNlcnZlckRhbzsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuYmFzaWMuU2VydmVyOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuY29tcG9uZW50cy5hZG1pbi5BZG1pblBhbmVsOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuY29tcG9uZW50cy5hZG1pbi5TZWFyY2hhYmxlRGF0YVZpZXc7DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5jb21wb25lbnRzLmFkbWluLlBhZ2VkRW50aXR5TGlzdFBhbmVsOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuZGF0YS5EYXRhVmlld0NvbnRhaW5lcjsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmRhdGEuU2VhcmNoYWJsZURhdGFQcm92aWRlcjsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmRhdGEuT3JkZXJCeUJvcmRlcjsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQuQXR0cmlidXRlTW9kaWZpZXI7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LmFqYXguQWpheEV2ZW50QmVoYXZpb3I7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LmFqYXguQWpheFJlcXVlc3RUYXJnZXQ7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5odG1sLldlYk1hcmt1cENvbnRhaW5lcjsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuYmFzaWMuTGFiZWw7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5yZXBlYXRlci5JdGVtOw0KKw0KKy8qKg0KKyAqIEZvcm0gY29tcG9uZW50IHdpdGggbGlzdCBhbmQgZm9ybSB0byBtYW5pcHVsYXRlIHtAbGluayBTZXJ2ZXJ9DQorICogDQorICogQGF1dGhvciBzd2FnbmVyDQorICogDQorICovDQorcHVibGljIGNsYXNzIFNlcnZlcnNQYW5lbCBleHRlbmRzIEFkbWluUGFuZWwgew0KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAtMjE5NzMzNDYwODU3NzM0NjU2OUw7DQorCXByaXZhdGUgU2VydmVyRm9ybSBmb3JtOw0KKwkNCisJQE92ZXJyaWRlDQorCXB1YmxpYyB2b2lkIG9uTWVudVBhbmVsTG9hZChBamF4UmVxdWVzdFRhcmdldCB0YXJnZXQpIHsNCisJCXRhcmdldC5hcHBlbmRKYXZhU2NyaXB0KCJvbVNlcnZlclBhbmVsSW5pdCgpOyIpOw0KKwl9DQorDQorCUBTdXBwcmVzc1dhcm5pbmdzKCJ1bmNoZWNrZWQiKQ0KKwlwdWJsaWMgU2VydmVyc1BhbmVsKFN0cmluZyBpZCkgew0KKwkJc3VwZXIoaWQpOw0KKwkJU2VhcmNoYWJsZURhdGFWaWV3PFNlcnZlcj4gZGF0YVZpZXcgPSBuZXcgU2VhcmNoYWJsZURhdGFWaWV3PFNlcnZlcj4oInNlcnZlckxpc3QiLA0KKwkJCQluZXcgU2VhcmNoYWJsZURhdGFQcm92aWRlcjxTZXJ2ZXI+KFNlcnZlckRhby5jbGFzcykpIHsNCisJCQlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSA4NzE1NTU5NjI4NzU1NDM5NTk2TDsNCisNCisJCQlAT3ZlcnJpZGUNCisJCQlwcm90ZWN0ZWQgdm9pZCBwb3B1bGF0ZUl0ZW0oZmluYWwgSXRlbTxTZXJ2ZXI+IGl0ZW0pIHsNCisJCQkJZmluYWwgU2VydmVyIFNlcnZlciA9IGl0ZW0uZ2V0TW9kZWxPYmplY3QoKTsNCisJCQkJaXRlbS5hZGQobmV3IExhYmVsKCJpZCIsICIiICsgU2VydmVyLmdldElkKCkpKTsNCisJCQkJaXRlbS5hZGQobmV3IExhYmVsKCJuYW1lIiwgIiIgKyBTZXJ2ZXIuZ2V0TmFtZSgpKSk7DQorCQkJCWl0ZW0uYWRkKG5ldyBMYWJlbCgiYWRkcmVzcyIsICIiICsgU2VydmVyLmdldEFkZHJlc3MoKSkpOw0KKwkJCQlpdGVtLmFkZChuZXcgQWpheEV2ZW50QmVoYXZpb3IoIm9uY2xpY2siKSB7DQorCQkJCQlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAtODA2OTQxMzU2NjgwMDU3MTA2MUw7DQorDQorCQkJCQlwcm90ZWN0ZWQgdm9pZCBvbkV2ZW50KEFqYXhSZXF1ZXN0VGFyZ2V0IHRhcmdldCkgew0KKwkJCQkJCWZvcm0uc2V0TW9kZWxPYmplY3QoU2VydmVyKTsNCisJCQkJCQlmb3JtLmhpZGVOZXdSZWNvcmQoKTsNCisJCQkJCQl0YXJnZXQuYWRkKGZvcm0pOw0KKwkJCQkJCXRhcmdldC5hcHBlbmRKYXZhU2NyaXB0KCJvbVNlcnZlclBhbmVsSW5pdCgpOyIpOw0KKwkJCQkJfQ0KKwkJCQl9KTsNCisJCQkJaXRlbS5hZGQoQXR0cmlidXRlTW9kaWZpZXIucmVwbGFjZSgiY2xhc3MiLCAoaXRlbS5nZXRJbmRleCgpICUgMiA9PSAxKSA/ICJldmVuIiA6ICJvZGQiKSk7DQorCQkJfQ0KKwkJfTsNCisJCQ0KKwkJZmluYWwgV2ViTWFya3VwQ29udGFpbmVyIGxpc3RDb250YWluZXIgPSBuZXcgV2ViTWFya3VwQ29udGFpbmVyKCJsaXN0Q29udGFpbmVyIik7DQorCQlhZGQobGlzdENvbnRhaW5lci5hZGQoZGF0YVZpZXcpLnNldE91dHB1dE1hcmt1cElkKHRydWUpKTsNCisJCURhdGFWaWV3Q29udGFpbmVyPFNlcnZlcj4gY29udGFpbmVyID0gbmV3IERhdGFWaWV3Q29udGFpbmVyPFNlcnZlcj4obGlzdENvbnRhaW5lciwgZGF0YVZpZXcpOw0KKwkJY29udGFpbmVyLnNldExpbmtzKG5ldyBPcmRlckJ5Qm9yZGVyPFNlcnZlcj4oIm9yZGVyQnlJZCIsICJpZCIsIGNvbnRhaW5lcikNCisJCQkJLCBuZXcgT3JkZXJCeUJvcmRlcjxTZXJ2ZXI+KCJvcmRlckJ5TmFtZSIsICJuYW1lIiwgY29udGFpbmVyKQ0KKwkJCQksIG5ldyBPcmRlckJ5Qm9yZGVyPFNlcnZlcj4oIm9yZGVyQnlBZGRyZXNzIiwgImFkZHJlc3MiLCBjb250YWluZXIpKTsNCisJCWFkZChjb250YWluZXIub3JkZXJMaW5rcyk7DQorCQlhZGQobmV3IFBhZ2VkRW50aXR5TGlzdFBhbmVsKCJuYXZpZ2F0b3IiLCBkYXRhVmlldykgew0KKwkJCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDUwOTcwNDg2MTYwMDM0MTEzNjJMOw0KKw0KKwkJCUBPdmVycmlkZQ0KKwkJCXByb3RlY3RlZCB2b2lkIG9uRXZlbnQoQWpheFJlcXVlc3RUYXJnZXQgdGFyZ2V0KSB7DQorCQkJCXRhcmdldC5hZGQobGlzdENvbnRhaW5lcik7DQorCQkJfQ0KKwkJfSk7DQorCQkNCisJCWZvcm0gPSBuZXcgU2VydmVyRm9ybSgiZm9ybSIsIGxpc3RDb250YWluZXIsIG5ldyBTZXJ2ZXIoKSk7DQorCQlmb3JtLnNob3dOZXdSZWNvcmQoKTsNCisgICAgICAgIGFkZChmb3JtKTsNCisJCQ0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi91c2Vycy9Vc2VyRm9ybS5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL2FkbWluL3VzZXJzL1VzZXJGb3JtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTlhYWUxYQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi91c2Vycy9Vc2VyRm9ybS5qYXZhCkBAIC0wLDAgKzEsNDI4IEBACisvKg0KKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgKiB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5jb21wb25lbnRzLmFkbWluLnVzZXJzOw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0Ow0KK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlzOw0KK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCisNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5GaWVsZExhbmd1YWdlRGFvOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLmRhby5Db25maWd1cmF0aW9uRGFvOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLmRhby5PbVRpbWVab25lRGFvOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuT3JnYW5pc2F0aW9uTWFuYWdlcjsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLmRhby5TYWx1dGF0aW9uRGFvOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuZGFvLlN0YXRlRGFvOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuZGFvLlVzZXJzRGFvOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5iYXNpYy5PbVRpbWVab25lOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5kb21haW4uT3JnYW5pc2F0aW9uOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5kb21haW4uT3JnYW5pc2F0aW9uX1VzZXJzOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5sYW5nLkZpZWxkTGFuZ3VhZ2U7DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLnVzZXIuU2FsdXRhdGlvbjsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlci5TdGF0ZTsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMudXNlci5Vc2VyOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy51dGlscy5jcnlwdC5NYW5hZ2VDcnlwdFN0eWxlOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuYXBwLkFwcGxpY2F0aW9uOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuYXBwLldlYlNlc3Npb247DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5jb21wb25lbnRzLmFkbWluLkFkbWluQmFzZUZvcm07DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LmFqYXguQWpheFJlcXVlc3RUYXJnZXQ7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LmFqYXguZm9ybS5BamF4Rm9ybVZhbGlkYXRpbmdCZWhhdmlvcjsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQuZGF0ZXRpbWUubWFya3VwLmh0bWwuYmFzaWMuRGF0ZUxhYmVsOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5leHRlbnNpb25zLm1hcmt1cC5odG1sLmZvcm0uRGF0ZVRleHRGaWVsZDsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQuZXh0ZW5zaW9ucy55dWkuY2FsZW5kYXIuRGF0ZVBpY2tlcjsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuV2ViTWFya3VwQ29udGFpbmVyOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5mb3JtLkNoZWNrQm94Ow0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5mb3JtLkNob2ljZVJlbmRlcmVyOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5mb3JtLkRyb3BEb3duQ2hvaWNlOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5mb3JtLkZvcm07DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5odG1sLmZvcm0uSUNob2ljZVJlbmRlcmVyOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5mb3JtLkxpc3RNdWx0aXBsZUNob2ljZTsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuZm9ybS5QYXNzd29yZFRleHRGaWVsZDsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuZm9ybS5SYWRpb0Nob2ljZTsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuZm9ybS5SZXF1aXJlZFRleHRGaWVsZDsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuZm9ybS5UZXh0QXJlYTsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuZm9ybS5UZXh0RmllbGQ7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1vZGVsLkNvbXBvdW5kUHJvcGVydHlNb2RlbDsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubW9kZWwuSU1vZGVsOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC51dGlsLnRpbWUuRHVyYXRpb247DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LnZhbGlkYXRpb24udmFsaWRhdG9yLkVtYWlsQWRkcmVzc1ZhbGlkYXRvcjsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQudmFsaWRhdGlvbi52YWxpZGF0b3IuU3RyaW5nVmFsaWRhdG9yOw0KKw0KKy8qKg0KKyAqIENSVUQgb3BlcmF0aW9ucyBpbiBmb3JtIGZvciB7QGxpbmsgVXNlcn0NCisgKiANCisgKiBAYXV0aG9yIHN3YWduZXINCisgKiANCisgKi8NCitwdWJsaWMgY2xhc3MgVXNlckZvcm0gZXh0ZW5kcyBBZG1pbkJhc2VGb3JtPFVzZXI+IHsNCisNCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMUw7DQorDQorCXByaXZhdGUgV2ViTWFya3VwQ29udGFpbmVyIGxpc3RDb250YWluZXI7DQorDQorCXByaXZhdGUgVXNlciB1c2VyOw0KKw0KKwlwcml2YXRlIGZpbmFsIExpc3Q8U2FsdXRhdGlvbj4gc2FsdWF0aW9uTGlzdCA9IEFwcGxpY2F0aW9uLmdldEJlYW4oDQorCQkJU2FsdXRhdGlvbkRhby5jbGFzcykuZ2V0VXNlclNhbHV0YXRpb25zKA0KKwkJCVdlYlNlc3Npb24uZ2V0TGFuZ3VhZ2UoKSk7DQorCXByaXZhdGUgZmluYWwgTGlzdDxGaWVsZExhbmd1YWdlPiBsYW5ndWFnZUxpc3QgPSBBcHBsaWNhdGlvbi5nZXRCZWFuKA0KKwkJCUZpZWxkTGFuZ3VhZ2VEYW8uY2xhc3MpLmdldExhbmd1YWdlcygpOw0KKw0KKwlwcml2YXRlIFBhc3N3b3JkVGV4dEZpZWxkIHBhc3N3b3JkRmllbGQ7DQorDQorCS8qKg0KKwkgKiBHZXQgaWQgbGlzdCBvZiB7QGxpbmsgU2FsdXRhdGlvbn0NCisJICogDQorCSAqIEByZXR1cm4NCisJICovDQorCXByaXZhdGUgTGlzdDxMb25nPiBnZXRTYWx1dGF0aW9uc0lkcygpIHsNCisJCUFycmF5TGlzdDxMb25nPiBzYWx1YXRpb25JZExpc3QgPSBuZXcgQXJyYXlMaXN0PExvbmc+KA0KKwkJCQlzYWx1YXRpb25MaXN0LnNpemUoKSk7DQorCQlmb3IgKFNhbHV0YXRpb24gc2FsdWF0aW9uIDogc2FsdWF0aW9uTGlzdCkgew0KKwkJCXNhbHVhdGlvbklkTGlzdC5hZGQoc2FsdWF0aW9uLmdldFNhbHV0YXRpb25zX2lkKCkpOw0KKwkJfQ0KKwkJcmV0dXJuIHNhbHVhdGlvbklkTGlzdDsNCisJfQ0KKw0KKwkvKioNCisJICogR2V0IGEgbmFtZSBmb3IgYSBnaXZlbiBpZCBvZiB7QGxpbmsgU2FsdXRhdGlvbn0NCisJICogDQorCSAqIEBwYXJhbSBpZA0KKwkgKiBAcmV0dXJuDQorCSAqLw0KKwlwcml2YXRlIFN0cmluZyBnZXRTYWx1YXRpb25MYWJlbEJ5SWQoTG9uZyBpZCkgew0KKwkJZm9yIChTYWx1dGF0aW9uIHNhbHVhdGlvbiA6IHNhbHVhdGlvbkxpc3QpIHsNCisJCQlpZiAoaWQuZXF1YWxzKHNhbHVhdGlvbi5nZXRTYWx1dGF0aW9uc19pZCgpKSkgew0KKwkJCQlyZXR1cm4gc2FsdWF0aW9uLmdldExhYmVsKCkuZ2V0VmFsdWUoKTsNCisJCQl9DQorCQl9DQorCQl0aHJvdyBuZXcgUnVudGltZUV4Y2VwdGlvbigiQ291bGQgbm90IGZpbmQgU2FsdXRhdGlvbnMgZm9yIGlkICIgKyBpZCk7DQorCX0NCisNCisJLyoqDQorCSAqIElkIGxpc3Qgb2Yge0BsaW5rIEZpZWxkTGFuZ3VhZ2V9DQorCSAqIA0KKwkgKiBAcmV0dXJuDQorCSAqLw0KKwlwcml2YXRlIExpc3Q8TG9uZz4gZ2V0RmllbGRMYW5ndWFnZUlkcygpIHsNCisJCUFycmF5TGlzdDxMb25nPiBsYW5ndWFnZUlkTGlzdCA9IG5ldyBBcnJheUxpc3Q8TG9uZz4oDQorCQkJCWxhbmd1YWdlTGlzdC5zaXplKCkpOw0KKwkJZm9yIChGaWVsZExhbmd1YWdlIGxhbmd1YWdlIDogbGFuZ3VhZ2VMaXN0KSB7DQorCQkJbGFuZ3VhZ2VJZExpc3QuYWRkKGxhbmd1YWdlLmdldExhbmd1YWdlX2lkKCkpOw0KKwkJfQ0KKwkJcmV0dXJuIGxhbmd1YWdlSWRMaXN0Ow0KKwl9DQorDQorCS8qKg0KKwkgKiBHZXQgbmFtZSBvZiB7QGxpbmsgRmllbGRMYW5ndWFnZX0gYnkgaXRzIGlkDQorCSAqIA0KKwkgKiBAcGFyYW0gaWQNCisJICogQHJldHVybg0KKwkgKi8NCisJcHJpdmF0ZSBTdHJpbmcgZ2V0RmllbGRMYW5ndWFnZUxhYmVsQnlJZChMb25nIGlkKSB7DQorCQlmb3IgKEZpZWxkTGFuZ3VhZ2UgbGFuZ3VhZ2UgOiBsYW5ndWFnZUxpc3QpIHsNCisJCQlpZiAoaWQuZXF1YWxzKGxhbmd1YWdlLmdldExhbmd1YWdlX2lkKCkpKSB7DQorCQkJCXJldHVybiBsYW5ndWFnZS5nZXROYW1lKCk7DQorCQkJfQ0KKwkJfQ0KKwkJdGhyb3cgbmV3IFJ1bnRpbWVFeGNlcHRpb24oIkNvdWxkIG5vdCBmaW5kIEZpZWxkTGFuZ3VhZ2UgZm9yIGlkICIgKyBpZCk7DQorCX0NCisNCisJcHVibGljIFVzZXJGb3JtKFN0cmluZyBpZCwgV2ViTWFya3VwQ29udGFpbmVyIGxpc3RDb250YWluZXIsDQorCQkJZmluYWwgVXNlciB1c2VyKSB7DQorCQlzdXBlcihpZCwgbmV3IENvbXBvdW5kUHJvcGVydHlNb2RlbDxVc2VyPih1c2VyKSk7DQorCQlzZXRPdXRwdXRNYXJrdXBJZCh0cnVlKTsNCisJCXRoaXMubGlzdENvbnRhaW5lciA9IGxpc3RDb250YWluZXI7DQorCQl0aGlzLnVzZXIgPSB1c2VyOw0KKw0KKwkJLy8gQWRkIGZvcm0gZmllbGRzDQorCQlhZGRGb3JtRmllbGRzKCk7DQorDQorCQkvLyBhdHRhY2ggYW4gYWpheCB2YWxpZGF0aW9uIGJlaGF2aW9yIHRvIGFsbCBmb3JtIGNvbXBvbmVudCdzIGtleWRvd24NCisJCS8vIGV2ZW50IGFuZCB0aHJvdHRsZSBpdCBkb3duIHRvIG9uY2UgcGVyIHNlY29uZA0KKwkJQWpheEZvcm1WYWxpZGF0aW5nQmVoYXZpb3IuYWRkVG9BbGxGb3JtQ29tcG9uZW50cyh0aGlzLCAia2V5ZG93biIsDQorCQkJCUR1cmF0aW9uLk9ORV9TRUNPTkQpOw0KKw0KKwl9DQorDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgdm9pZCBvblNhdmVTdWJtaXQoQWpheFJlcXVlc3RUYXJnZXQgdGFyZ2V0LCBGb3JtPD8+IGZvcm0pIHsNCisJCVVzZXIgdSA9IGdldE1vZGVsT2JqZWN0KCk7DQorCQkvLyBUT0RPOiBXaHkgdGhlIHBhc3N3b3JkIGZpZWxkIGlzIG5vdCBzZXQgdmlhIHRoZSBNb2RlbCBpcyBiZWNhdXNlIGl0cw0KKwkJLy8gRmV0Y2hUeXBlIGlzIExhenksIHRoaXMgZXh0cmEgaG9vayBoZXJlIG1pZ2h0IGJlIG5vdCBuZWVkZWQgd2l0aCBhDQorCQkvLyBkaWZmZXJlbnQgbWVjaGFuaXNtIHRvIHByb3RlY3QgdGhlIHBhc3N3b3JkIGZyb20gYmVpbmcgcmVhZA0KKwkJLy8gc2ViYXdhZ25lciwgMDEuMTAuMjAxMg0KKwkJdHJ5IHsNCisJCQlTdHJpbmcgcGFzcyA9IHBhc3N3b3JkRmllbGQuZ2V0Q29udmVydGVkSW5wdXQoKTsNCisJCQlpZiAocGFzcyAhPSBudWxsJiYgIXBhc3MuaXNFbXB0eSgpKSB7DQorCQkJCXUudXBkYXRlUGFzc3dvcmQoDQorCQkJCQlBcHBsaWNhdGlvbi5nZXRCZWFuKE1hbmFnZUNyeXB0U3R5bGUuY2xhc3MpDQorCQkJCQksIEFwcGxpY2F0aW9uLmdldEJlYW4oQ29uZmlndXJhdGlvbkRhby5jbGFzcykNCisJCQkJCSwgcGFzc3dvcmRGaWVsZC5nZXRDb252ZXJ0ZWRJbnB1dCgpKTsNCisJCQl9DQorCQkJQXBwbGljYXRpb24uZ2V0QmVhbihVc2Vyc0Rhby5jbGFzcykudXBkYXRlKHUsIFdlYlNlc3Npb24uZ2V0VXNlcklkKCkpOw0KKwkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsNCisJCQkvL0ZJWE1FIHVwZGF0ZSBmZWVkYmFjayB3aXRoIHRoZSBlcnJvciBkZXRhaWxzDQorCQl9DQorCQlzZXRNb2RlbE9iamVjdCh1KTsNCisJCWhpZGVOZXdSZWNvcmQoKTsNCisJCXRhcmdldC5hZGQodGhpcyk7DQorCQl0YXJnZXQuYWRkKGxpc3RDb250YWluZXIpOw0KKwkJdGFyZ2V0LmFwcGVuZEphdmFTY3JpcHQoIm9tVXNlclBhbmVsSW5pdCgpOyIpOw0KKwl9DQorDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgdm9pZCBvbk5ld1N1Ym1pdChBamF4UmVxdWVzdFRhcmdldCB0YXJnZXQsIEZvcm08Pz4gZm9ybSkgew0KKwkJVXNlcnNEYW8gdXNlcnNEYW9JbXBsID0gQXBwbGljYXRpb24uZ2V0QmVhbihVc2Vyc0Rhby5jbGFzcyk7DQorCQlzZXRNb2RlbE9iamVjdCh1c2Vyc0Rhb0ltcGwuZ2V0TmV3VXNlckluc3RhbmNlKHVzZXJzRGFvSW1wbA0KKwkJCQkuZ2V0KFdlYlNlc3Npb24uZ2V0VXNlcklkKCkpKSk7DQorCQl0YXJnZXQuYWRkKHRoaXMpOw0KKwkJdGFyZ2V0LmFwcGVuZEphdmFTY3JpcHQoIm9tVXNlclBhbmVsSW5pdCgpOyIpOw0KKwl9DQorDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgdm9pZCBvblJlZnJlc2hTdWJtaXQoQWpheFJlcXVlc3RUYXJnZXQgdGFyZ2V0LCBGb3JtPD8+IGZvcm0pIHsNCisJCVVzZXIgdXNlciA9IGdldE1vZGVsT2JqZWN0KCk7DQorCQlpZiAodXNlci5nZXRVc2VyX2lkKCkgPD0gMCkgew0KKwkJCXVzZXIgPSBBcHBsaWNhdGlvbi5nZXRCZWFuKFVzZXJzRGFvLmNsYXNzKS5nZXQoDQorCQkJCQl1c2VyLmdldFVzZXJfaWQoKSk7DQorCQl9IGVsc2Ugew0KKwkJCXVzZXIgPSBuZXcgVXNlcigpOw0KKwkJfQ0KKwkJc2V0TW9kZWxPYmplY3QodXNlcik7DQorCQl0YXJnZXQuYWRkKHRoaXMpOw0KKwkJdGFyZ2V0LmFwcGVuZEphdmFTY3JpcHQoIm9tVXNlclBhbmVsSW5pdCgpOyIpOw0KKwl9DQorDQorCUBPdmVycmlkZQ0KKwlwcm90ZWN0ZWQgdm9pZCBvbkRlbGV0ZVN1Ym1pdChBamF4UmVxdWVzdFRhcmdldCB0YXJnZXQsIEZvcm08Pz4gZm9ybSkgew0KKwkJVXNlcnNEYW8gdXNlcnNEYW9JbXBsID0gQXBwbGljYXRpb24uZ2V0QmVhbihVc2Vyc0Rhby5jbGFzcyk7DQorCQl1c2Vyc0Rhb0ltcGwuZGVsZXRlKHRoaXMuZ2V0TW9kZWxPYmplY3QoKSwNCisJCQkJV2ViU2Vzc2lvbi5nZXRVc2VySWQoKSk7DQorCQl0aGlzLnNldE1vZGVsT2JqZWN0KHVzZXJzRGFvSW1wbC5nZXROZXdVc2VySW5zdGFuY2UodXNlcnNEYW9JbXBsDQorCQkJCS5nZXQoV2ViU2Vzc2lvbi5nZXRVc2VySWQoKSkpKTsNCisJCXRhcmdldC5hZGQobGlzdENvbnRhaW5lcik7DQorCQl0YXJnZXQuYWRkKHRoaXMpOw0KKwkJdGFyZ2V0LmFwcGVuZEphdmFTY3JpcHQoIm9tVXNlclBhbmVsSW5pdCgpOyIpOw0KKwl9DQorDQorCS8qKg0KKwkgKiBBZGQgdGhlIGZpZWxkcyB0byB0aGUgZm9ybQ0KKwkgKi8NCisJcHJpdmF0ZSB2b2lkIGFkZEZvcm1GaWVsZHMoKSB7DQorDQorCQlSZXF1aXJlZFRleHRGaWVsZDxTdHJpbmc+IGxvZ2luID0gbmV3IFJlcXVpcmVkVGV4dEZpZWxkPFN0cmluZz4oImxvZ2luIik7DQorCQlsb2dpbi5hZGQobmV3IFN0cmluZ1ZhbGlkYXRvcig0LCBudWxsKSk7DQorCQkvLyBsb2dpbi5zZXRMYWJlbChuZXcgTW9kZWw8U3RyaW5nPigidGVzdG5hbWUiKSk7DQorCQlhZGQobG9naW4pOw0KKw0KKwkJcGFzc3dvcmRGaWVsZCA9IG5ldyBQYXNzd29yZFRleHRGaWVsZCgicGFzc3dvcmQiKTsNCisJCWFkZChwYXNzd29yZEZpZWxkKTsNCisJCXBhc3N3b3JkRmllbGQuc2V0UmVxdWlyZWQoZmFsc2UpOw0KKw0KKwkJYWRkKG5ldyBEcm9wRG93bkNob2ljZTxMb25nPigic2FsdXRhdGlvbnNfaWQiLCBnZXRTYWx1dGF0aW9uc0lkcygpLA0KKwkJCQluZXcgSUNob2ljZVJlbmRlcmVyPExvbmc+KCkgew0KKwkJCQkJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMUw7DQorDQorCQkJCQlwdWJsaWMgT2JqZWN0IGdldERpc3BsYXlWYWx1ZShMb25nIGlkKSB7DQorCQkJCQkJcmV0dXJuIGdldFNhbHVhdGlvbkxhYmVsQnlJZChpZCk7DQorCQkJCQl9DQorDQorCQkJCQlwdWJsaWMgU3RyaW5nIGdldElkVmFsdWUoTG9uZyBpZCwgaW50IGluZGV4KSB7DQorCQkJCQkJcmV0dXJuICIiICsgaWQ7DQorCQkJCQl9DQorDQorCQkJCX0pKTsNCisNCisJCWFkZChuZXcgVGV4dEZpZWxkPFN0cmluZz4oImZpcnN0bmFtZSIpKTsNCisJCWFkZChuZXcgVGV4dEZpZWxkPFN0cmluZz4oImxhc3RuYW1lIikpOw0KKw0KKwkJYWRkKG5ldyBEcm9wRG93bkNob2ljZTxPbVRpbWVab25lPigib21UaW1lWm9uZSIsIEFwcGxpY2F0aW9uLmdldEJlYW4oDQorCQkJCU9tVGltZVpvbmVEYW8uY2xhc3MpLmdldE9tVGltZVpvbmVzKCksDQorCQkJCW5ldyBDaG9pY2VSZW5kZXJlcjxPbVRpbWVab25lPigiZnJvbnRFbmRMYWJlbCIsICJqbmFtZSIpKSk7DQorDQorCQlhZGQobmV3IERyb3BEb3duQ2hvaWNlPExvbmc+KCJsYW5ndWFnZV9pZCIsIGdldEZpZWxkTGFuZ3VhZ2VJZHMoKSwNCisJCQkJbmV3IElDaG9pY2VSZW5kZXJlcjxMb25nPigpIHsNCisJCQkJCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDFMOw0KKw0KKwkJCQkJcHVibGljIE9iamVjdCBnZXREaXNwbGF5VmFsdWUoTG9uZyBpZCkgew0KKwkJCQkJCXJldHVybiBnZXRGaWVsZExhbmd1YWdlTGFiZWxCeUlkKGlkKTsNCisJCQkJCX0NCisNCisJCQkJCXB1YmxpYyBTdHJpbmcgZ2V0SWRWYWx1ZShMb25nIGlkLCBpbnQgaW5kZXgpIHsNCisJCQkJCQlyZXR1cm4gIiIgKyBpZDsNCisJCQkJCX0NCisNCisJCQkJfSkpOw0KKw0KKwkJYWRkKERhdGVMYWJlbC5mb3JEYXRlUGF0dGVybigic3RhcnR0aW1lIiwgImRkLk1NLnl5eXkgSEg6bW06c3MiKSk7DQorCQlhZGQoRGF0ZUxhYmVsLmZvckRhdGVQYXR0ZXJuKCJ1cGRhdGV0aW1lIiwgImRkLk1NLnl5eXkgSEg6bW06c3MiKSk7DQorDQorCQlhZGQobmV3IENoZWNrQm94KCJmb3JjZVRpbWVab25lQ2hlY2siKSk7DQorCQlSZXF1aXJlZFRleHRGaWVsZDxTdHJpbmc+IGVtYWlsID0gbmV3IFJlcXVpcmVkVGV4dEZpZWxkPFN0cmluZz4oDQorCQkJCSJhZHJlc3Nlcy5lbWFpbCIpOw0KKwkJLy8gZW1haWwuc2V0TGFiZWwobmV3IE1vZGVsPFN0cmluZz4oInRlc3RlbWFpbCIpKTsNCisJCWVtYWlsLmFkZChFbWFpbEFkZHJlc3NWYWxpZGF0b3IuZ2V0SW5zdGFuY2UoKSk7DQorCQlhZGQoZW1haWwpOw0KKwkJYWRkKG5ldyBUZXh0RmllbGQ8U3RyaW5nPigiYWRyZXNzZXMucGhvbmUiKSk7DQorCQlhZGQobmV3IENoZWNrQm94KCJzZW5kU01TIikpOw0KKwkJRGF0ZVRleHRGaWVsZCBhZ2UgPSBuZXcgRGF0ZVRleHRGaWVsZCgiYWdlIik7DQorCQlEYXRlUGlja2VyIGRhdGVQaWNrZXIgPSBuZXcgRGF0ZVBpY2tlcigpIHsNCisJCQlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAxTDsNCisNCisJCQlAT3ZlcnJpZGUNCisJCQlwcm90ZWN0ZWQgU3RyaW5nIGdldEFkZGl0aW9uYWxKYXZhU2NyaXB0KCkgew0KKwkJCQlyZXR1cm4gIiR7Y2FsZW5kYXJ9LmNmZy5zZXRQcm9wZXJ0eShcIm5hdmlnYXRvclwiLHRydWUsZmFsc2UpOyAke2NhbGVuZGFyfS5yZW5kZXIoKTsiOw0KKwkJCX0NCisJCX07DQorCQlkYXRlUGlja2VyLnNldFNob3dPbkZpZWxkQ2xpY2sodHJ1ZSk7DQorCQlkYXRlUGlja2VyLnNldEF1dG9IaWRlKHRydWUpOw0KKwkJYWdlLmFkZChkYXRlUGlja2VyKTsNCisJCWFkZChhZ2UpOw0KKwkJYWRkKG5ldyBUZXh0RmllbGQ8U3RyaW5nPigiYWRyZXNzZXMuc3RyZWV0IikpOw0KKwkJYWRkKG5ldyBUZXh0RmllbGQ8U3RyaW5nPigiYWRyZXNzZXMuYWRkaXRpb25hbG5hbWUiKSk7DQorCQlhZGQobmV3IFRleHRGaWVsZDxTdHJpbmc+KCJhZHJlc3Nlcy56aXAiKSk7DQorCQlhZGQobmV3IFRleHRGaWVsZDxTdHJpbmc+KCJhZHJlc3Nlcy50b3duIikpOw0KKwkJYWRkKG5ldyBEcm9wRG93bkNob2ljZTxTdGF0ZT4oImFkcmVzc2VzLnN0YXRlcyIsIEFwcGxpY2F0aW9uLmdldEJlYW4oDQorCQkJCVN0YXRlRGFvLmNsYXNzKS5nZXRTdGF0ZXMoKSwgbmV3IENob2ljZVJlbmRlcmVyPFN0YXRlPigNCisJCQkJIm5hbWUiLCAic3RhdGVfaWQiKSkpOw0KKw0KKwkJZmluYWwgU3RyaW5nIGZpZWxkMTU5ID0gV2ViU2Vzc2lvbi5nZXRTdHJpbmcoMTU5KTsNCisJCWZpbmFsIFN0cmluZyBmaWVsZDE2MCA9IFdlYlNlc3Npb24uZ2V0U3RyaW5nKDE2MCk7DQorDQorCQlhZGQobmV3IERyb3BEb3duQ2hvaWNlPEludGVnZXI+KCJzdGF0dXMiLCBBcnJheXMuYXNMaXN0KDAsIDEpLA0KKwkJCQluZXcgSUNob2ljZVJlbmRlcmVyPEludGVnZXI+KCkgew0KKw0KKwkJCQkJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMUw7DQorDQorCQkJCQlwdWJsaWMgT2JqZWN0IGdldERpc3BsYXlWYWx1ZShJbnRlZ2VyIGlkKSB7DQorCQkJCQkJaWYgKGlkLmVxdWFscygwKSkgew0KKwkJCQkJCQlyZXR1cm4gZmllbGQxNTk7DQorCQkJCQkJfSBlbHNlIGlmIChpZC5lcXVhbHMoMSkpIHsNCisJCQkJCQkJcmV0dXJuIGZpZWxkMTYwOw0KKwkJCQkJCX0NCisJCQkJCQlyZXR1cm4gbnVsbDsNCisJCQkJCX0NCisNCisJCQkJCXB1YmxpYyBTdHJpbmcgZ2V0SWRWYWx1ZShJbnRlZ2VyIGlkLCBpbnQgaW5kZXgpIHsNCisJCQkJCQlyZXR1cm4gIiIgKyBpZDsNCisJCQkJCX0NCisNCisJCQkJfSkpOw0KKw0KKwkJZmluYWwgU3RyaW5nIGZpZWxkMTY2ID0gV2ViU2Vzc2lvbi5nZXRTdHJpbmcoMTY2KTsNCisJCWZpbmFsIFN0cmluZyBmaWVsZDE2NyA9IFdlYlNlc3Npb24uZ2V0U3RyaW5nKDE2Nyk7DQorCQlmaW5hbCBTdHJpbmcgZmllbGQxNjggPSBXZWJTZXNzaW9uLmdldFN0cmluZygxNjgpOw0KKwkJZmluYWwgU3RyaW5nIGZpZWxkMTMxMSA9IFdlYlNlc3Npb24uZ2V0U3RyaW5nKDEzMTEpOw0KKw0KKwkJYWRkKG5ldyBEcm9wRG93bkNob2ljZTxMb25nPigibGV2ZWxfaWQiLCBBcnJheXMuYXNMaXN0KDFMLCAyTCwgM0wsIDRMKSwNCisJCQkJbmV3IElDaG9pY2VSZW5kZXJlcjxMb25nPigpIHsNCisNCisJCQkJCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDFMOw0KKw0KKwkJCQkJcHVibGljIE9iamVjdCBnZXREaXNwbGF5VmFsdWUoTG9uZyBpZCkgew0KKwkJCQkJCWlmIChpZC5lcXVhbHMoMUwpKSB7DQorCQkJCQkJCXJldHVybiBmaWVsZDE2NjsNCisJCQkJCQl9IGVsc2UgaWYgKGlkLmVxdWFscygyTCkpIHsNCisJCQkJCQkJcmV0dXJuIGZpZWxkMTY3Ow0KKwkJCQkJCX0gZWxzZSBpZiAoaWQuZXF1YWxzKDNMKSkgew0KKwkJCQkJCQlyZXR1cm4gZmllbGQxNjg7DQorCQkJCQkJfSBlbHNlIGlmIChpZC5lcXVhbHMoNEwpKSB7DQorCQkJCQkJCXJldHVybiBmaWVsZDEzMTE7DQorCQkJCQkJfQ0KKwkJCQkJCXJldHVybiBudWxsOw0KKwkJCQkJfQ0KKw0KKwkJCQkJcHVibGljIFN0cmluZyBnZXRJZFZhbHVlKExvbmcgaWQsIGludCBpbmRleCkgew0KKwkJCQkJCXJldHVybiAiIiArIGlkOw0KKwkJCQkJfQ0KKw0KKwkJCQl9KSk7DQorDQorCQlhZGQobmV3IFRleHRBcmVhPFN0cmluZz4oImFkcmVzc2VzLmNvbW1lbnQiKSk7DQorDQorCQlMaXN0PE9yZ2FuaXNhdGlvbj4gb3JnTGlzdCA9IEFwcGxpY2F0aW9uLmdldEJlYW4oDQorCQkJCU9yZ2FuaXNhdGlvbk1hbmFnZXIuY2xhc3MpLmdldE9yZ2FuaXNhdGlvbnMoM0wpOw0KKwkJTGlzdDxPcmdhbmlzYXRpb25fVXNlcnM+IG9yZ1VzZXJzID0gbmV3IEFycmF5TGlzdDxPcmdhbmlzYXRpb25fVXNlcnM+KA0KKwkJCQlvcmdMaXN0LnNpemUoKSk7DQorCQlmb3IgKE9yZ2FuaXNhdGlvbiBvcmcgOiBvcmdMaXN0KSB7DQorCQkJb3JnVXNlcnMuYWRkKG5ldyBPcmdhbmlzYXRpb25fVXNlcnMob3JnKSk7DQorCQl9DQorCQlMaXN0TXVsdGlwbGVDaG9pY2U8T3JnYW5pc2F0aW9uX1VzZXJzPiBvcmdDaG9pY2VMaXN0ID0gbmV3IExpc3RNdWx0aXBsZUNob2ljZTxPcmdhbmlzYXRpb25fVXNlcnM+KA0KKwkJCQkib3JnYW5pc2F0aW9uX3VzZXJzIiwgb3JnVXNlcnMsDQorCQkJCW5ldyBDaG9pY2VSZW5kZXJlcjxPcmdhbmlzYXRpb25fVXNlcnM+KCJvcmdhbmlzYXRpb24ubmFtZSIsDQorCQkJCQkJIm9yZ2FuaXNhdGlvbi5vcmdhbmlzYXRpb25faWQiKSk7DQorCQlhZGQob3JnQ2hvaWNlTGlzdCk7DQorDQorCQlmaW5hbCBTdHJpbmcgZmllbGQxMTYwID0gV2ViU2Vzc2lvbi5nZXRTdHJpbmcoMTE2MCk7IC8vIDExNjAgZXZlcnlib2R5DQorCQlmaW5hbCBTdHJpbmcgZmllbGQxMTY4ID0gV2ViU2Vzc2lvbi5nZXRTdHJpbmcoMTE2OCk7IC8vIDExNjggY29udGFjdA0KKwkJZmluYWwgU3RyaW5nIGZpZWxkMTE2OSA9IFdlYlNlc3Npb24uZ2V0U3RyaW5nKDExNjkpOyAvLyAxMTY5IG5vYm9keQ0KKw0KKwkJYWRkKG5ldyBSYWRpb0Nob2ljZTxMb25nPigiY29tbXVuaXR5X3NldHRpbmdzIiwgbmV3IElNb2RlbDxMb25nPigpIHsNCisJCQlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAxTDsNCisNCisJCQlwdWJsaWMgTG9uZyBnZXRPYmplY3QoKSB7DQorCQkJCWlmICh1c2VyLmdldFNob3dDb250YWN0RGF0YSgpICE9IG51bGwNCisJCQkJCQkmJiB1c2VyLmdldFNob3dDb250YWN0RGF0YSgpKSB7DQorCQkJCQlyZXR1cm4gMUw7DQorCQkJCX0gZWxzZSBpZiAodXNlci5nZXRTaG93Q29udGFjdERhdGFUb0NvbnRhY3RzKCkgIT0gbnVsbA0KKwkJCQkJCSYmIHVzZXIuZ2V0U2hvd0NvbnRhY3REYXRhVG9Db250YWN0cygpKSB7DQorCQkJCQlyZXR1cm4gMkw7DQorCQkJCX0NCisJCQkJcmV0dXJuIDNMOw0KKwkJCX0NCisNCisJCQlwdWJsaWMgdm9pZCBzZXRPYmplY3QoTG9uZyBjaG9pY2UpIHsNCisJCQkJaWYgKGNob2ljZS5lcXVhbHMoMUwpKSB7DQorCQkJCQl1c2VyLnNldFNob3dDb250YWN0RGF0YSh0cnVlKTsNCisJCQkJCXVzZXIuc2V0U2hvd0NvbnRhY3REYXRhVG9Db250YWN0cyhmYWxzZSk7DQorCQkJCX0gZWxzZSBpZiAoY2hvaWNlLmVxdWFscygyTCkpIHsNCisJCQkJCXVzZXIuc2V0U2hvd0NvbnRhY3REYXRhKGZhbHNlKTsNCisJCQkJCXVzZXIuc2V0U2hvd0NvbnRhY3REYXRhVG9Db250YWN0cyh0cnVlKTsNCisJCQkJfSBlbHNlIHsNCisJCQkJCXVzZXIuc2V0U2hvd0NvbnRhY3REYXRhKGZhbHNlKTsNCisJCQkJCXVzZXIuc2V0U2hvd0NvbnRhY3REYXRhVG9Db250YWN0cyhmYWxzZSk7DQorCQkJCX0NCisJCQl9DQorDQorCQkJcHVibGljIHZvaWQgZGV0YWNoKCkgew0KKwkJCX0NCisJCX0sIEFycmF5cy5hc0xpc3QoMUwsIDJMLCAzTCksIG5ldyBJQ2hvaWNlUmVuZGVyZXI8TG9uZz4oKSB7DQorCQkJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMUw7DQorDQorCQkJcHVibGljIE9iamVjdCBnZXREaXNwbGF5VmFsdWUoTG9uZyBpZCkgew0KKwkJCQlpZiAoaWQuZXF1YWxzKDFMKSkgew0KKwkJCQkJcmV0dXJuIGZpZWxkMTE2MDsNCisJCQkJfSBlbHNlIGlmIChpZC5lcXVhbHMoMkwpKSB7DQorCQkJCQlyZXR1cm4gZmllbGQxMTY4Ow0KKwkJCQl9IGVsc2Ugew0KKwkJCQkJcmV0dXJuIGZpZWxkMTE2OTsNCisJCQkJfQ0KKwkJCX0NCisNCisJCQlwdWJsaWMgU3RyaW5nIGdldElkVmFsdWUoTG9uZyBpZCwgaW50IGluZGV4KSB7DQorCQkJCXJldHVybiAiIiArIGlkOw0KKwkJCX0NCisNCisJCX0pKTsNCisNCisJCWFkZChuZXcgVGV4dEFyZWE8U3RyaW5nPigidXNlck9mZmVycyIpKTsNCisJCWFkZChuZXcgVGV4dEFyZWE8U3RyaW5nPigidXNlclNlYXJjaHMiKSk7DQorCX0NCisJDQorfQ0KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi91c2Vycy9Vc2Vyc1BhbmVsLmh0bWwgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvYWRtaW4vdXNlcnMvVXNlcnNQYW5lbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2MDFlMDgKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvYWRtaW4vdXNlcnMvVXNlcnNQYW5lbC5odG1sCkBAIC0wLDAgKzEsMTQ4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGh0bWwgeG1sbnM6d2lja2V0PSJodHRwOi8vd2lja2V0LmFwYWNoZS5vcmciPgorCTx3aWNrZXQ6aGVhZD4KKwkgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisJICAgICAgIGZ1bmN0aW9uIG9tVXNlclBhbmVsSW5pdCgpIHsKKwkgICAgICAgICAgIHZhciBkb2N1bWVudEhlaWdodCA9ICQoZG9jdW1lbnQpLmhlaWdodCgpOworCSAgICAgICAgICAgJCgnI2FkbWluRm9ybScpLmhlaWdodChkb2N1bWVudEhlaWdodC0xMTQpOworCSAgICAgICAgICAgJCgnI2FkbWluVGFibGUnKS5oZWlnaHQoZG9jdW1lbnRIZWlnaHQtMTQ0KTsKKwkgICAgICAgfQorCSAgIDwvc2NyaXB0PgorCTwvd2lja2V0OmhlYWQ+CisJPHdpY2tldDpwYW5lbD4KKwkJPGRpdiBjbGFzcz0iYWRtaW5QYW5lbCI+CisJCQk8ZGl2IGNsYXNzPSJhZG1pblBhbmVsQ29sdW1uVGFibGUiPgorCQkJCTxzcGFuIHdpY2tldDppZD0ibmF2aWdhdG9yIj5bZGF0YXZpZXcgbmF2aWdhdG9yXTwvc3Bhbj4KKwkJCQk8dGFibGUgY2xhc3M9ImFkbWluTGlzdFRhYmxlIj4KKwkJCQkJPHRoZWFkPgorCQkJCQkJPHRyPgorCQkJCQkJCTx0aCBjbGFzcz0iZm91cl9jb2x1bW5fbGF5b3V0X2NvbHVtbjEiPjxzcGFuIHdpY2tldDppZD0ib3JkZXJCeUlkIj48L3NwYW4+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIxNDYiIC8+PC90aD4KKwkJCQkJCQk8dGggY2xhc3M9ImZvdXJfY29sdW1uX2xheW91dF9jb2x1bW4yIj48c3BhbiB3aWNrZXQ6aWQ9Im9yZGVyQnlMb2dpbiI+PC9zcGFuPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMTQ3IiAvPjwvdGg+CisJCQkJCQkJPHRoIGNsYXNzPSJmb3VyX2NvbHVtbl9sYXlvdXRfY29sdW1uMyI+PHNwYW4gd2lja2V0OmlkPSJvcmRlckJ5Rmlyc3ROYW1lIj48L3NwYW4+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIxNDgiIC8+PC90aD4KKwkJCQkJCQk8dGggY2xhc3M9ImZvdXJfY29sdW1uX2xheW91dF9jb2x1bW40Ij48c3BhbiB3aWNrZXQ6aWQ9Im9yZGVyQnlMYXN0TmFtZSI+PC9zcGFuPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMTQ5IiAvPjwvdGg+CisJCQkJCQk8L3RyPgkKKwkJCQkJPC90aGVhZD4KKwkJCQk8L3RhYmxlPgorCQkJCTxkaXYgY2xhc3M9InRhYmxlV3JhcHBlciIgaWQ9ImFkbWluVGFibGUiPgorCQkJCQk8dGFibGUgY2xhc3M9ImFkbWluTGlzdFRhYmxlIj4KKwkJCQkJCTx0Ym9keSB3aWNrZXQ6aWQ9Imxpc3RDb250YWluZXIiPgkKKwkJCQkgICAgCQk8dHIgd2lja2V0OmlkPSJ1c2VyTGlzdCI+CisJCQkJCQkJCTx0ZCBjbGFzcz0iZm91cl9jb2x1bW5fbGF5b3V0X2NvbHVtbjEiPjxkaXYgY2xhc3M9ImZvdXJfY29sdW1uX2xheW91dF9kaXZjb2x1bW4xIj48c3BhbiB3aWNrZXQ6aWQ9InVzZXJJZCI+PC9zcGFuPjwvZGl2PjwvdGQ+CisJCQkJCQkJCTx0ZCBjbGFzcz0iZm91cl9jb2x1bW5fbGF5b3V0X2NvbHVtbjIiPjxkaXYgY2xhc3M9ImZvdXJfY29sdW1uX2xheW91dF9kaXZjb2x1bW4yIj48c3BhbiB3aWNrZXQ6aWQ9ImxvZ2luIj48L3NwYW4+PC9kaXY+PC90ZD4KKwkJCQkJCQkJPHRkIGNsYXNzPSJmb3VyX2NvbHVtbl9sYXlvdXRfY29sdW1uMyI+PGRpdiBjbGFzcz0iZm91cl9jb2x1bW5fbGF5b3V0X2RpdmNvbHVtbjMiPjxzcGFuIHdpY2tldDppZD0iZmlyc3ROYW1lIj48L3NwYW4+PC9kaXY+PC90ZD4KKwkJCQkJCQkJPHRkIGNsYXNzPSJmb3VyX2NvbHVtbl9sYXlvdXRfY29sdW1uNCI+PGRpdiBjbGFzcz0iZm91cl9jb2x1bW5fbGF5b3V0X2RpdmNvbHVtbjQiPjxzcGFuIHdpY2tldDppZD0ibGFzdE5hbWUiPjwvc3Bhbj48L2Rpdj48L3RkPgorCQkJCQkJCTwvdHI+CisJCQkJCQk8L3Rib2R5PgorCQkJCQk8L3RhYmxlPgorCQkJCTwvZGl2PgorCQkJPC9kaXY+CisJCQk8ZGl2IGNsYXNzPSJhZG1pblBhbmVsQ29sdW1uRm9ybSI+CisJCQkJPGZvcm0gd2lja2V0OmlkPSJmb3JtIiBjbGFzcz0iYWRtaW5Gb3JtIiA+CisJCQkJCTxkaXYgd2lja2V0OmlkPSJidXR0b25zIj48L2Rpdj4KKwkJCQkJPGRpdiBjbGFzcz0ic2Nyb2xsY29udGVudCIgaWQ9ImFkbWluRm9ybSI+CisJCQkJCQk8ZmllbGRzZXQ+CisJCQkJCQkJPGxlZ2VuZD48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjE0MyIgLz48L2xlZ2VuZD4KKwkJCQkJCQk8ZGl2IGNsYXNzPSJmb3JtZWxlbWVudCI+CisJCQkJICAgICAgICAgICAgICAgIDxsYWJlbD48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjEzMiIgLz48L2xhYmVsPjxpbnB1dCB0eXBlPSJ0ZXh0IiB3aWNrZXQ6aWQ9ImxvZ2luIi8+CisJCQkJICAgICAgICAgICAgPC9kaXY+CisJCQkJICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybWVsZW1lbnQiPgorCQkJCSAgICAgICAgICAgIDxsYWJlbD48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjEzMyIgLz48L2xhYmVsPjxpbnB1dCB0eXBlPSJwYXNzd29yZCIgd2lja2V0OmlkPSJwYXNzd29yZCIvPgorCQkJCSAgICAgICAgICAgIDwvZGl2PgorCQkJCSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm1lbGVtZW50Ij4KKwkJCQkgICAgICAgICAgICAgICAgPGxhYmVsPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMTM1IiAvPjwvbGFiZWw+PHNlbGVjdCB3aWNrZXQ6aWQ9InNhbHV0YXRpb25zX2lkIiBzdHlsZT0id2lkdGg6IDYwcHg7Ii8+PGlucHV0IHR5cGU9InRleHQiIHdpY2tldDppZD0iZmlyc3RuYW1lIiBzdHlsZT0id2lkdGg6IDIxNnB4OyIvPgorCQkJCSAgICAgICAgICAgIDwvZGl2PgorCQkJCSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm1lbGVtZW50Ij4KKwkJCQkgICAgICAgICAgICAgICAgPGxhYmVsPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMTM2IiAvPjwvbGFiZWw+PGlucHV0IHR5cGU9InRleHQiIHdpY2tldDppZD0ibGFzdG5hbWUiLz4KKwkJCQkgICAgICAgICAgICA8L2Rpdj4KKwkJCQkgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtZWxlbWVudCI+CisJCQkJICAgICAgICAgICAgICAgIDxsYWJlbD48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjExNDMiIC8+PC9sYWJlbD48c2VsZWN0IHdpY2tldDppZD0ib21UaW1lWm9uZSIvPgorCQkJCSAgICAgICAgICAgIDwvZGl2PgorCQkJCSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm1lbGVtZW50Ij4KKwkJCQkgICAgICAgICAgICAgICAgPGxhYmVsPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMTExIiAvPjwvbGFiZWw+PHNlbGVjdCB3aWNrZXQ6aWQ9Imxhbmd1YWdlX2lkIi8+CisJCQkJICAgICAgICAgICAgPC9kaXY+CisJCQkJICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybWVsZW1lbnQiPgorCQkJCSAgICAgICAgICAgICAgICA8bGFiZWw+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIxMTEwIiAvPjwvbGFiZWw+PHNwYW4gd2lja2V0OmlkPSJzdGFydHRpbWUiLz4KKwkJCQkgICAgICAgICAgICA8L2Rpdj4KKwkJCQkgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtZWxlbWVudCI+CisJCQkJICAgICAgICAgICAgICAgIDxsYWJlbD48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjExMTIiIC8+PC9sYWJlbD48c3BhbiB3aWNrZXQ6aWQ9InVwZGF0ZXRpbWUiLz4KKwkJCQkgICAgICAgICAgICA8L2Rpdj4KKwkJCQkgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtZWxlbWVudCI+CisJCQkJICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImluZm8taWNvbiIgLz48c3BhbiBzdHlsZT0iZm9udC1zdHlsZTogaXRhbGljOyI+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIxMTQ5IiAvPjwvc3Bhbj4KKwkJCQkgICAgICAgICAgICAgICAgPGJyLz4KKwkJCQkgICAgICAgICAgICAgICAgPGxhYmVsPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMTE0OCIgLz48L2xhYmVsPjxpbnB1dCBjbGFzcz0iZm9ybWNoZWNrYm94IiB0eXBlPSJjaGVja2JveCIgd2lja2V0OmlkPSJmb3JjZVRpbWVab25lQ2hlY2siIC8+CisJCQkJICAgICAgICAgICAgPC9kaXY+CisJCQkgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybWVsZW1lbnQiPgorCQkJCSAgICAgICAgICAgICAgICA8bGFiZWw+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIxMzciIC8+PC9sYWJlbD48aW5wdXQgdHlwZT0idGV4dCIgd2lja2V0OmlkPSJhZHJlc3Nlcy5lbWFpbCIvPgorCQkJCSAgICAgICAgICAgIDwvZGl2PgorCQkJCSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm1lbGVtZW50Ij4KKwkJCQkgICAgICAgICAgICAgICAgPGxhYmVsPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iNjA3IiAvPjwvbGFiZWw+PGlucHV0IHR5cGU9InRleHQiIHdpY2tldDppZD0iYWRyZXNzZXMucGhvbmUiLz4KKwkJCQkgICAgICAgICAgICA8L2Rpdj4KKwkJCQkgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtZWxlbWVudCI+CisJCQkJICAgICAgICAgICAgICAgIDxsYWJlbD48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjE1MDMiIC8+PC9sYWJlbD48aW5wdXQgY2xhc3M9ImZvcm1jaGVja2JveCIgdHlwZT0iY2hlY2tib3giIHdpY2tldDppZD0ic2VuZFNNUyIvPgorCQkJCSAgICAgICAgICAgIDwvZGl2PgorCQkJCSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm1lbGVtZW50Ij4KKwkJCQkgICAgICAgICAgICAgICAgPGxhYmVsPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMTM4IiAvPjwvbGFiZWw+PGlucHV0IHR5cGU9InRleHQiIHdpY2tldDppZD0iYWdlIiBzdHlsZT0id2lkdGg6IDI1OHB4OyIvPgorCQkJCSAgICAgICAgICAgIDwvZGl2PgorCQkJCSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm1lbGVtZW50Ij4KKwkJCQkgICAgICAgICAgICAgICAgPGxhYmVsPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMTM5IiAvPjwvbGFiZWw+PGlucHV0IHR5cGU9InRleHQiIHdpY2tldDppZD0iYWRyZXNzZXMuc3RyZWV0IiBzdHlsZT0id2lkdGg6IDI0NHB4OyIvPiA8aW5wdXQgdHlwZT0idGV4dCIgd2lja2V0OmlkPSJhZHJlc3Nlcy5hZGRpdGlvbmFsbmFtZSIgc3R5bGU9IndpZHRoOiAzMHB4OyIvPgorCQkJCSAgICAgICAgICAgIDwvZGl2PgorCQkJCSAgICAgICAgICAgIDxkaXYgY2xhc3M9ImZvcm1lbGVtZW50Ij4KKwkJCQkgICAgICAgICAgICAgICAgPGxhYmVsPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMTQwIiAvPjwvbGFiZWw+PGlucHV0IHR5cGU9InRleHQiIHdpY2tldDppZD0iYWRyZXNzZXMuemlwIiBzdHlsZT0id2lkdGg6IDYwcHg7Ii8+IDxpbnB1dCB0eXBlPSJ0ZXh0IiB3aWNrZXQ6aWQ9ImFkcmVzc2VzLnRvd24iIHN0eWxlPSJ3aWR0aDogMjE0cHg7Ii8+CisJCQkJICAgICAgICAgICAgPC9kaXY+CisJCQkJICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybWVsZW1lbnQiPgorCQkJCSAgICAgICAgICAgICAgICA8bGFiZWw+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIxNDEiIC8+PC9sYWJlbD48c2VsZWN0IHdpY2tldDppZD0iYWRyZXNzZXMuc3RhdGVzIi8+CisJCQkJICAgICAgICAgICAgPC9kaXY+CisJCQkJICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybWVsZW1lbnQiPgorCQkJCSAgICAgICAgICAgICAgICA8bGFiZWw+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIxNTgiIC8+PC9sYWJlbD48c2VsZWN0IHdpY2tldDppZD0ic3RhdHVzIi8+CisJCQkJICAgICAgICAgICAgPC9kaXY+CisJCQkgICAgICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybWVsZW1lbnQiPgorCQkJCSAgICAgICAgICAgICAgICA8bGFiZWw+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIxNjkiIC8+PC9sYWJlbD48c2VsZWN0IHdpY2tldDppZD0ibGV2ZWxfaWQiLz4KKwkJCQkgICAgICAgICAgICA8L2Rpdj4KKwkJCQkgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtZWxlbWVudCI+CisJCQkJICAgICAgICAgICAgICAgIDxsYWJlbD48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjE0MiIgLz48L2xhYmVsPjx0ZXh0YXJlYSB3aWNrZXQ6aWQ9ImFkcmVzc2VzLmNvbW1lbnQiLz4KKwkJCQkgICAgICAgICAgICA8L2Rpdj4KKwkJCQkgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtZWxlbWVudCI+CisJCQkJICAgICAgICAgICAgICAgIDxsYWJlbD48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjE2MSIgLz48L2xhYmVsPjxzZWxlY3Qgd2lja2V0OmlkPSJvcmdhbmlzYXRpb25fdXNlcnMiIHN0eWxlPSJoZWlnaHQ6IDgwcHgiLz4KKwkJCQkgICAgICAgICAgICA8L2Rpdj4KKwkJCSAgICAgICAgICAgIDwvZmllbGRzZXQ+CisJCQkgICAgICAgICAgICA8ZmllbGRzZXQ+CisJCQkJCQkJPGxlZ2VuZD48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjExNTkiIC8+PC9sZWdlbmQ+CisJCQkJICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybWVsZW1lbnRyYWRpb2JveCI+CisJCQkJCSAgICAgICAgICAgIDxzcGFuIHdpY2tldDppZD0iY29tbXVuaXR5X3NldHRpbmdzIiA+CisJCQkJCQkJCSAgICA8aW5wdXQgdHlwZT0icmFkaW8iLz4KKwkJCQkJCQkJICAgIDxpbnB1dCB0eXBlPSJyYWRpbyIvPgorCQkJCQkJCQkgICAgPGlucHV0IHR5cGU9InJhZGlvIi8+CisJCQkJCQkJCTwvc3Bhbj4KKwkJCQkgICAgICAgICAgICA8L2Rpdj4KKwkJCQkgICAgICAgICAgICA8ZGl2IGNsYXNzPSJmb3JtZWxlbWVudCI+CisJCQkJICAgICAgICAgICAgICAgIDxsYWJlbD48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjExNjIiIC8+PC9sYWJlbD48dGV4dGFyZWEgd2lja2V0OmlkPSJ1c2VyT2ZmZXJzIi8+CisJCQkJICAgICAgICAgICAgPC9kaXY+CisJCQkJICAgICAgICAgICAgPGRpdiBjbGFzcz0iZm9ybWVsZW1lbnQiPgorCQkJCSAgICAgICAgICAgICAgICA8bGFiZWw+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIxMTYzIiAvPjwvbGFiZWw+PHRleHRhcmVhIHdpY2tldDppZD0idXNlclNlYXJjaHMiLz4KKwkJCQkgICAgICAgICAgICA8L2Rpdj4KKwkJCQkgICAgICAgIDwvZmllbGRzZXQ+CisJCQkgICAgICAgIDwvZGl2PgorCQkgICAgICAgIDwvZm9ybT4KKwkJCTwvZGl2PgorCQk8L2Rpdj4KKwk8L3dpY2tldDpwYW5lbD4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy9hZG1pbi91c2Vycy9Vc2Vyc1BhbmVsLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvYWRtaW4vdXNlcnMvVXNlcnNQYW5lbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxZTJhYjAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvYWRtaW4vdXNlcnMvVXNlcnNQYW5lbC5qYXZhCkBAIC0wLDAgKzEsMTA0IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5jb21wb25lbnRzLmFkbWluLnVzZXJzOworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLmRhby5Vc2Vyc0RhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlVzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmFwcC5BcHBsaWNhdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuYXBwLldlYlNlc3Npb247CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmNvbXBvbmVudHMuYWRtaW4uQWRtaW5QYW5lbDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuY29tcG9uZW50cy5hZG1pbi5TZWFyY2hhYmxlRGF0YVZpZXc7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmNvbXBvbmVudHMuYWRtaW4uUGFnZWRFbnRpdHlMaXN0UGFuZWw7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmRhdGEuRGF0YVZpZXdDb250YWluZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmRhdGEuU2VhcmNoYWJsZURhdGFQcm92aWRlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuZGF0YS5PcmRlckJ5Qm9yZGVyOworaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LkF0dHJpYnV0ZU1vZGlmaWVyOworaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LmFqYXguQWpheEV2ZW50QmVoYXZpb3I7CitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQuYWpheC5BamF4UmVxdWVzdFRhcmdldDsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5XZWJNYXJrdXBDb250YWluZXI7CitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuYmFzaWMuTGFiZWw7CitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLnJlcGVhdGVyLkl0ZW07CisKK3B1YmxpYyBjbGFzcyBVc2Vyc1BhbmVsIGV4dGVuZHMgQWRtaW5QYW5lbCB7CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAtNDQ2MzEwNzc0MjU3OTc5MDEyMEw7CisKKwlAT3ZlcnJpZGUKKwlwdWJsaWMgdm9pZCBvbk1lbnVQYW5lbExvYWQoQWpheFJlcXVlc3RUYXJnZXQgdGFyZ2V0KSB7CisJCXRhcmdldC5hcHBlbmRKYXZhU2NyaXB0KCJvbVVzZXJQYW5lbEluaXQoKTsiKTsKKwl9CisKKwlwcml2YXRlIFVzZXJGb3JtIGZvcm07CisKKwlAU3VwcHJlc3NXYXJuaW5ncygidW5jaGVja2VkIikKKwlwdWJsaWMgVXNlcnNQYW5lbChTdHJpbmcgaWQpIHsKKwkJc3VwZXIoaWQpOworCisJCWZpbmFsIFNlYXJjaGFibGVEYXRhVmlldzxVc2VyPiBkYXRhVmlldyA9IG5ldyBTZWFyY2hhYmxlRGF0YVZpZXc8VXNlcj4oInVzZXJMaXN0IgorCQkJCSwgbmV3IFNlYXJjaGFibGVEYXRhUHJvdmlkZXI8VXNlcj4oVXNlcnNEYW8uY2xhc3MpKSB7CisJCQlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSA4NzE1NTU5NjI4NzU1NDM5NTk2TDsKKworCQkJQE92ZXJyaWRlCisJCQlwcm90ZWN0ZWQgdm9pZCBwb3B1bGF0ZUl0ZW0oSXRlbTxVc2VyPiBpdGVtKSB7CisJCQkJZmluYWwgVXNlciB1ID0gaXRlbS5nZXRNb2RlbE9iamVjdCgpOworCQkJCWl0ZW0uYWRkKG5ldyBMYWJlbCgidXNlcklkIiwgIiIgKyB1LmdldFVzZXJfaWQoKSkpOworCQkJCWl0ZW0uYWRkKG5ldyBMYWJlbCgibG9naW4iLCB1LmdldExvZ2luKCkpKTsKKwkJCQlpdGVtLmFkZChuZXcgTGFiZWwoImZpcnN0TmFtZSIsIHUuZ2V0Rmlyc3RuYW1lKCkpKTsKKwkJCQlpdGVtLmFkZChuZXcgTGFiZWwoImxhc3ROYW1lIiwgdS5nZXRMYXN0bmFtZSgpKSk7CisJCQkJaXRlbS5hZGQoQXR0cmlidXRlTW9kaWZpZXIuYXBwZW5kKCJjbGFzcyIsICJjbGlja2FibGUgIgorCQkJCQkJKyAoKGl0ZW0uZ2V0SW5kZXgoKSAlIDIgPT0gMSkgPyAiZXZlbiIgOiAib2RkIikpKTsKKwkJCQlpdGVtLmFkZChuZXcgQWpheEV2ZW50QmVoYXZpb3IoIm9uY2xpY2siKSB7CisJCQkJCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IC04MDY5NDEzNTY2ODAwNTcxMDYxTDsKKworCQkJCQlwcm90ZWN0ZWQgdm9pZCBvbkV2ZW50KEFqYXhSZXF1ZXN0VGFyZ2V0IHRhcmdldCkgeworCQkJCQkJZm9ybS5zZXRNb2RlbE9iamVjdCh1KTsKKwkJCQkJCWZvcm0uaGlkZU5ld1JlY29yZCgpOworCQkJCQkJdGFyZ2V0LmFkZChmb3JtKTsKKwkJCQkJCS8vcmUtaW5pdGlhbGl6ZSBoZWlnaHQKKwkJCQkJCXRhcmdldC5hcHBlbmRKYXZhU2NyaXB0KCJvbVVzZXJQYW5lbEluaXQoKTsiKTsKKwkJCQkJfQorCQkJCX0pOworCQkJfQorCQl9OworCQlmaW5hbCBXZWJNYXJrdXBDb250YWluZXIgbGlzdENvbnRhaW5lciA9IG5ldyBXZWJNYXJrdXBDb250YWluZXIoCisJCQkJImxpc3RDb250YWluZXIiKTsKKwkJYWRkKGxpc3RDb250YWluZXIuYWRkKGRhdGFWaWV3KS5zZXRPdXRwdXRNYXJrdXBJZCh0cnVlKSk7CisJCURhdGFWaWV3Q29udGFpbmVyPFVzZXI+IGNvbnRhaW5lciA9IG5ldyBEYXRhVmlld0NvbnRhaW5lcjxVc2VyPihsaXN0Q29udGFpbmVyLCBkYXRhVmlldyk7CisJCWNvbnRhaW5lci5zZXRMaW5rcyhuZXcgT3JkZXJCeUJvcmRlcjxVc2VyPigib3JkZXJCeUlkIiwgInVzZXJfaWQiLCBjb250YWluZXIpCisJCQkJLCBuZXcgT3JkZXJCeUJvcmRlcjxVc2VyPigib3JkZXJCeUxvZ2luIiwgImxvZ2luIiwgY29udGFpbmVyKQorCQkJCSwgbmV3IE9yZGVyQnlCb3JkZXI8VXNlcj4oIm9yZGVyQnlGaXJzdE5hbWUiLCAiZmlyc3RuYW1lIiwgY29udGFpbmVyKQorCQkJCSwgbmV3IE9yZGVyQnlCb3JkZXI8VXNlcj4oIm9yZGVyQnlMYXN0TmFtZSIsICJsYXN0bmFtZSIsIGNvbnRhaW5lcikpOworCQlhZGQoY29udGFpbmVyLm9yZGVyTGlua3MpOworCQlhZGQobmV3IFBhZ2VkRW50aXR5TGlzdFBhbmVsKCJuYXZpZ2F0b3IiLCBkYXRhVmlldykgeworCQkJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gNTA5NzA0ODYxNjAwMzQxMTM2Mkw7CisKKwkJCUBPdmVycmlkZQorCQkJcHJvdGVjdGVkIHZvaWQgb25FdmVudChBamF4UmVxdWVzdFRhcmdldCB0YXJnZXQpIHsKKwkJCQl0YXJnZXQuYWRkKGxpc3RDb250YWluZXIpOworCQkJfQorCQl9KTsKKworCQlVc2Vyc0RhbyB1c2Vyc0Rhb0ltcGwgPSBBcHBsaWNhdGlvbi5nZXRCZWFuKFVzZXJzRGFvLmNsYXNzKTsKKwkJZm9ybSA9IG5ldyBVc2VyRm9ybSgiZm9ybSIsIGxpc3RDb250YWluZXIsCisJCQkJdXNlcnNEYW9JbXBsLmdldE5ld1VzZXJJbnN0YW5jZSh1c2Vyc0Rhb0ltcGwuZ2V0KFdlYlNlc3Npb24KKwkJCQkJCS5nZXRVc2VySWQoKSkpKTsKKwkJZm9ybS5zaG93TmV3UmVjb3JkKCk7CisJCWFkZChmb3JtKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvdXNlci9BYm91dFBhbmVsLmh0bWwgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvdXNlci9BYm91dFBhbmVsLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTQyMzU2ZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy91c2VyL0Fib3V0UGFuZWwuaHRtbApAQCAtMCwwICsxLDI4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0NCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgIA0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAgICAJICANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAgdW5kZXIgdGhlIExpY2Vuc2UuDQorICANCistLT4NCis8aHRtbCB4bWxuczp3aWNrZXQ9Imh0dHA6Ly93aWNrZXQuYXBhY2hlLm9yZyI+DQorCTx3aWNrZXQ6cGFuZWw+DQorCQk8ZGl2IHdpY2tldDppZD0ibmFtZSI+W25hbWVdPC9kaXY+DQorCQk8ZGl2IHdpY2tldDppZD0idmVyc2lvbiI+W3ZlcnNpb25dPC9kaXY+DQorCQk8ZGl2IHdpY2tldDppZD0icmV2aXNpb24iPltyZXZpc2lvbl08L2Rpdj4NCisJCTxkaXYgd2lja2V0OmlkPSJidWlsZERhdGUiPltidWlsZERhdGVdPC9kaXY+DQorCTwvd2lja2V0OnBhbmVsPg0KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvdXNlci9BYm91dFBhbmVsLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvdXNlci9BYm91dFBhbmVsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTcyZmNmNAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy91c2VyL0Fib3V0UGFuZWwuamF2YQpAQCAtMCwwICsxLDg5IEBACisvKg0KKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgKiB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5jb21wb25lbnRzLnVzZXI7DQorDQoraW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247DQoraW1wb3J0IGphdmEubmV0Lk1hbGZvcm1lZFVSTEV4Y2VwdGlvbjsNCitpbXBvcnQgamF2YS5uZXQuVVJMOw0KK2ltcG9ydCBqYXZhLnV0aWwuamFyLkF0dHJpYnV0ZXM7DQoraW1wb3J0IGphdmEudXRpbC5qYXIuTWFuaWZlc3Q7DQorDQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmFzaWMuZGFvLkNvbmZpZ3VyYXRpb25EYW87DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5hcHAuQXBwbGljYXRpb247DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5jb21wb25lbnRzLlVzZXJQYW5lbDsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuYmFzaWMuTGFiZWw7DQorDQorcHVibGljIGNsYXNzIEFib3V0UGFuZWwgZXh0ZW5kcyBVc2VyUGFuZWwgew0KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAxNDAwMzU1MjIyMjk1NTk0MzIxTDsNCisJcHJpdmF0ZSBzdGF0aWMgU3RyaW5nIHZlcnNpb24gPSBudWxsOw0KKwlwcml2YXRlIHN0YXRpYyBTdHJpbmcgcmV2aXNpb24gPSBudWxsOw0KKwlwcml2YXRlIHN0YXRpYyBTdHJpbmcgYnVpbGREYXRlID0gbnVsbDsNCisJDQorCXByaXZhdGUgQXR0cmlidXRlcyBnZXRBdHRyaWJ1dGVzKCkgdGhyb3dzIE1hbGZvcm1lZFVSTEV4Y2VwdGlvbiwgSU9FeGNlcHRpb24gew0KKwkJU3RyaW5nIGphclVybCA9IGdldENsYXNzKCkuZ2V0UmVzb3VyY2UoZ2V0Q2xhc3MoKS5nZXRTaW1wbGVOYW1lKCkgKyAiLmNsYXNzIikudG9TdHJpbmcoKTsNCisJCXJldHVybiBuZXcgTWFuaWZlc3QobmV3IFVSTChqYXJVcmwuc3Vic3RyaW5nKDAsIGphclVybC5pbmRleE9mKCchJykpICsgIiEvTUVUQS1JTkYvTUFOSUZFU1QuTUYiKS5vcGVuU3RyZWFtKCkpLmdldE1haW5BdHRyaWJ1dGVzKCk7DQorCX0NCisJDQorCXByaXZhdGUgU3RyaW5nIGdldFZlcnNpb24oKSB7DQorCQlpZiAodmVyc2lvbiA9PSBudWxsKSB7DQorCQkJdHJ5IHsNCisJCQkJdmVyc2lvbiA9IGdldEF0dHJpYnV0ZXMoKS5nZXRWYWx1ZSgiUHJvZHVjdC1WZXJzaW9uIik7DQorCQkJfSBjYXRjaCAoRXhjZXB0aW9uIGUpIHsNCisJCQkJZS5wcmludFN0YWNrVHJhY2UoKTsNCisJCQl9DQorCQl9DQorCQlyZXR1cm4gdmVyc2lvbjsNCisJfQ0KKwkNCisJcHJpdmF0ZSBTdHJpbmcgZ2V0UmV2aXNpb24oKSB7DQorCQlpZiAocmV2aXNpb24gPT0gbnVsbCkgew0KKwkJCXRyeSB7DQorCQkJCXJldmlzaW9uID0gZ2V0QXR0cmlidXRlcygpLmdldFZhbHVlKCJTdm4tUmV2aXNpb24iKTsNCisJCQl9IGNhdGNoIChFeGNlcHRpb24gZSkgew0KKwkJCQllLnByaW50U3RhY2tUcmFjZSgpOw0KKwkJCX0NCisJCX0NCisJCXJldHVybiByZXZpc2lvbjsNCisJfQ0KKwkNCisJcHJpdmF0ZSBTdHJpbmcgZ2V0QnVpbGREYXRlKCkgew0KKwkJaWYgKGJ1aWxkRGF0ZSA9PSBudWxsKSB7DQorCQkJdHJ5IHsNCisJCQkJYnVpbGREYXRlID0gZ2V0QXR0cmlidXRlcygpLmdldFZhbHVlKCJCdWlsdC1PbiIpOw0KKwkJCX0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7DQorCQkJCWUucHJpbnRTdGFja1RyYWNlKCk7DQorCQkJfQ0KKwkJfQ0KKwkJcmV0dXJuIGJ1aWxkRGF0ZTsNCisJfQ0KKwkNCisJcHVibGljIEFib3V0UGFuZWwoU3RyaW5nIGlkKSB7DQorCQlzdXBlcihpZCk7DQorCQlzZXRPdXRwdXRNYXJrdXBJZCh0cnVlKTsNCisJCXNldE1hcmt1cElkKGlkKTsNCisJCQ0KKwkJYWRkKG5ldyBMYWJlbCgibmFtZSIsIEFwcGxpY2F0aW9uLmdldEJlYW4oQ29uZmlndXJhdGlvbkRhby5jbGFzcykuZ2V0Q29uZlZhbHVlKA0KKwkJCQkiYXBwbGljYXRpb24ubmFtZSINCisJCQkJLCBTdHJpbmcuY2xhc3MNCisJCQkJLCBDb25maWd1cmF0aW9uRGFvLkRFRkFVTFRfQVBQX05BTUUpKSk7DQorCQlhZGQobmV3IExhYmVsKCJ2ZXJzaW9uIiwgZ2V0VmVyc2lvbigpKSk7DQorCQlhZGQobmV3IExhYmVsKCJyZXZpc2lvbiIsIGdldFJldmlzaW9uKCkpKTsNCisJCWFkZChuZXcgTGFiZWwoImJ1aWxkRGF0ZSIsIGdldEJ1aWxkRGF0ZSgpKSk7DQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL3VzZXIvQ2hhdFBhbmVsLmh0bWwgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvdXNlci9DaGF0UGFuZWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NjBjZTk5Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL3VzZXIvQ2hhdFBhbmVsLmh0bWwKQEAgLTAsMCArMSw1MCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0KKyAgTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAgcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAgd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICAgIAkgIAorICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICB1bmRlciB0aGUgTGljZW5zZS4KKyAgCistLT4KKzxodG1sIHhtbG5zOndpY2tldD0iaHR0cDovL3dpY2tldC5hcGFjaGUub3JnIj4KKwk8d2lja2V0OmhlYWQ+CisJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwkJCWZ1bmN0aW9uIHRvZ2dsZUNoYXQoKSB7CisJCQkJdmFyIGNoYXQgPSAkKCcjY2hhdCcpOworCQkJCSQoJyNjaGF0ICNjb250cm9sQmxvY2sgI2NvbnRyb2wnKQorCQkJCQkucmVtb3ZlQ2xhc3MoJ3VpLWljb24tY2FyYXQtMS0nICsgKGNoYXQuaGVpZ2h0KCkgPCAyMCA/ICduJyA6ICdzJykpCisJCQkJCS5hZGRDbGFzcygndWktaWNvbi1jYXJhdC0xLScgKyAoY2hhdC5oZWlnaHQoKSA8IDIwID8gJ3MnIDogJ24nKSk7CisJCQkJY2hhdC5hbmltYXRlKHsgaGVpZ2h0OiBjaGF0LmhlaWdodCgpIDwgMjAgPyAiMzAwcHgiIDogIjE2cHgiIH0sIDEwMDApOworCQkJfQorCQkJZnVuY3Rpb24gYWRkQ2hhdE1lc3NhZ2UobSkgeworCQkJCWlmIChtICYmIG0udHlwZSA9PSAiY2hhdCIpIHsKKwkJCQkJJCgnI21lc3NhZ2VBcmVhJykuYXBwZW5kKCc8ZGl2PicgKyBtLm1zZy5tZXNzYWdlICsgJzwvZGl2PicpOworCQkJCX0KKwkJCX0KKwkJCVdpY2tldC5FdmVudC5zdWJzY3JpYmUoIi93ZWJzb2NrZXQvbWVzc2FnZSIsIGZ1bmN0aW9uKGpxRXZlbnQsIG1zZykgeworCQkJCWFkZENoYXRNZXNzYWdlKGpRdWVyeS5wYXJzZUpTT04obXNnKSk7IAorCQkJfSk7CisJCTwvc2NyaXB0PgorCTwvd2lja2V0OmhlYWQ+CisJPHdpY2tldDpwYW5lbD4KKwkJPGRpdiBpZD0iY2hhdCI+CisJCQk8ZGl2IGlkPSJjb250cm9sQmxvY2siIG9uY2xpY2s9InRvZ2dsZUNoYXQoKTsiPjxkaXYgaWQ9ImNvbnRyb2wiIGNsYXNzPSJ1aS1pY29uIHVpLWljb24tY2FyYXQtMS1uIHNvcnQtaWNvbiI+PC9kaXY+PC9kaXY+CisJCQk8ZGl2IHdpY2tldDppZD0ibWVzc2FnZXMiPjwvZGl2PgorCQkJPGZvcm0gd2lja2V0OmlkPSJzZW5kRm9ybSI+CisJCQkJPHRleHRhcmVhIHdpY2tldDppZD0ibWVzc2FnZSI+PC90ZXh0YXJlYT48aW5wdXQgdHlwZT0ic3VibWl0IiB3aWNrZXQ6aWQ9InNlbmQiLz4KKwkJCTwvZm9ybT4KKwkJPC9kaXY+CisJPC93aWNrZXQ6cGFuZWw+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvdXNlci9DaGF0UGFuZWwuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy91c2VyL0NoYXRQYW5lbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwODE2M2YKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvdXNlci9DaGF0UGFuZWwuamF2YQpAQCAtMCwwICsxLDExNiBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuY29tcG9uZW50cy51c2VyOworCitpbXBvcnQgamF2YS51dGlsLkRhdGU7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jaGF0LkNoYXREYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLmRhby5Vc2Vyc0RhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5jaGF0LkNoYXRNZXNzYWdlOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5hcHAuQXBwbGljYXRpb247CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmFwcC5XZWJTZXNzaW9uOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5jb21wb25lbnRzLlVzZXJQYW5lbDsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5Db21wb25lbnQ7CitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQuYWpheC5BamF4UmVxdWVzdFRhcmdldDsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5hamF4LmZvcm0uQWpheEZvcm1TdWJtaXRCZWhhdmlvcjsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5hamF4Lmpzb24uSlNPTkV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5hamF4Lmpzb24uSlNPTk9iamVjdDsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5iZWhhdmlvci5CZWhhdmlvcjsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaGVhZC5JSGVhZGVyUmVzcG9uc2U7CitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmhlYWQuT25Eb21SZWFkeUhlYWRlckl0ZW07CitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuV2ViTWFya3VwQ29udGFpbmVyOworaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5odG1sLmZvcm0uQnV0dG9uOworaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5odG1sLmZvcm0uRm9ybTsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5mb3JtLlRleHRBcmVhOworaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1vZGVsLlByb3BlcnR5TW9kZWw7CitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQucHJvdG9jb2wud3MuSVdlYlNvY2tldFNldHRpbmdzOworaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LnByb3RvY29sLndzLmFwaS5JV2ViU29ja2V0Q29ubmVjdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5wcm90b2NvbC53cy5hcGkuSVdlYlNvY2tldENvbm5lY3Rpb25SZWdpc3RyeTsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CisKK3B1YmxpYyBjbGFzcyBDaGF0UGFuZWwgZXh0ZW5kcyBVc2VyUGFuZWwgeworCXByaXZhdGUgc3RhdGljIGZpbmFsIExvZ2dlciBsb2cgPSBSZWQ1TG9nZ2VyRmFjdG9yeS5nZXRMb2dnZXIoQ2hhdFBhbmVsLmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gLTkxNDQ3MDc2NzQ4ODYyMTE1NTdMOworCXByaXZhdGUgU3RyaW5nIG1lc3NhZ2U7CisJCisJcHJpdmF0ZSBKU09OT2JqZWN0IGdldE1lc3NhZ2UoQ2hhdE1lc3NhZ2UgbSkgdGhyb3dzIEpTT05FeGNlcHRpb24geworCQlyZXR1cm4gbmV3IEpTT05PYmplY3QoKQorCQkJLnB1dCgidHlwZSIsICJjaGF0IikKKwkJCS5wdXQoIm1zZyIsIG5ldyBKU09OT2JqZWN0KCkKKwkJCQkucHV0KCJpZCIsIG0uZ2V0SWQoKSkKKwkJCQkucHV0KCJtZXNzYWdlIiwgbS5nZXRNZXNzYWdlKCkpCisJCQkpOworCX0KKworCXB1YmxpYyBDaGF0UGFuZWwoU3RyaW5nIGlkKSB7CisJCXN1cGVyKGlkKTsKKwkJc2V0T3V0cHV0TWFya3VwSWQodHJ1ZSk7CisJCXNldE1hcmt1cElkKGlkKTsKKworCQlhZGQobmV3IEJlaGF2aW9yKCkgeworCQkJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gLTIyMDUwMzYzNjAwNDg0MTkxMjlMOworCisJCQlAT3ZlcnJpZGUKKwkJCXB1YmxpYyB2b2lkIHJlbmRlckhlYWQoQ29tcG9uZW50IGNvbXBvbmVudCwgSUhlYWRlclJlc3BvbnNlIHJlc3BvbnNlKSB7CisJCQkJQ2hhdERhbyBkYW8gPSBBcHBsaWNhdGlvbi5nZXRCZWFuKENoYXREYW8uY2xhc3MpOworCQkJCXRyeSB7CQkJCQorCQkJCQlTdHJpbmdCdWlsZGVyIHNiID0gbmV3IFN0cmluZ0J1aWxkZXIoKTsKKwkJCQkJZm9yIChDaGF0TWVzc2FnZSBtIDogZGFvLmdldCgwLCBJbnRlZ2VyLk1BWF9WQUxVRSkpIHsKKwkJCQkJCXNiLmFwcGVuZCgiYWRkQ2hhdE1lc3NhZ2UoIikuYXBwZW5kKGdldE1lc3NhZ2UobSkudG9TdHJpbmcoKSkuYXBwZW5kKCIpOyIpOworCQkJCQl9CisJCQkJCWlmIChzYi5sZW5ndGgoKSA+IDApIHsKKwkJCQkJCXJlc3BvbnNlLnJlbmRlcihPbkRvbVJlYWR5SGVhZGVySXRlbS5mb3JTY3JpcHQoc2IudG9TdHJpbmcoKSkpOworCQkJCQl9CisJCQkJfSBjYXRjaCAoSlNPTkV4Y2VwdGlvbiBlKSB7CisJCQkJCQorCQkJCX0KKwkJCQlzdXBlci5yZW5kZXJIZWFkKGNvbXBvbmVudCwgcmVzcG9uc2UpOworCQkJfQorCQl9KTsKKwkJYWRkKG5ldyBXZWJNYXJrdXBDb250YWluZXIoIm1lc3NhZ2VzIikuc2V0TWFya3VwSWQoIm1lc3NhZ2VBcmVhIikpOworCQlmaW5hbCBGb3JtPFZvaWQ+IGYgPSBuZXcgRm9ybTxWb2lkPigic2VuZEZvcm0iKTsKKwkJZi5hZGQobmV3IFRleHRBcmVhPFN0cmluZz4oIm1lc3NhZ2UiLCBuZXcgUHJvcGVydHlNb2RlbDxTdHJpbmc+KENoYXRQYW5lbC50aGlzLCAibWVzc2FnZSIpKS5zZXRPdXRwdXRNYXJrdXBJZCh0cnVlKSk7CisJCWYuYWRkKG5ldyBCdXR0b24oInNlbmQiKS5hZGQobmV3IEFqYXhGb3JtU3VibWl0QmVoYXZpb3IoIm9uY2xpY2siKXsKKwkJCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IC0zNzQ2NzM5NzM4ODI2NTAxMzMxTDsKKwkJCQorCQkJcHJvdGVjdGVkIHZvaWQgb25TdWJtaXQoQWpheFJlcXVlc3RUYXJnZXQgdGFyZ2V0KSB7CisJCQkJQ2hhdERhbyBkYW8gPSBBcHBsaWNhdGlvbi5nZXRCZWFuKENoYXREYW8uY2xhc3MpOworCQkJCUNoYXRNZXNzYWdlIG0gPSBuZXcgQ2hhdE1lc3NhZ2UoKTsKKwkJCQltLnNldE1lc3NhZ2UobWVzc2FnZSk7CisJCQkJbS5zZXRTZW50KG5ldyBEYXRlKCkpOworCQkJCW0uc2V0RnJvbVVzZXIoQXBwbGljYXRpb24uZ2V0QmVhbihVc2Vyc0Rhby5jbGFzcykuZ2V0KFdlYlNlc3Npb24uZ2V0VXNlcklkKCkpKTsKKwkJCQlkYW8udXBkYXRlKG0pOworCQkJCUlXZWJTb2NrZXRDb25uZWN0aW9uUmVnaXN0cnkgcmVnID0gSVdlYlNvY2tldFNldHRpbmdzLkhvbGRlci5nZXQoZ2V0QXBwbGljYXRpb24oKSkuZ2V0Q29ubmVjdGlvblJlZ2lzdHJ5KCk7CisJCQkJZm9yIChJV2ViU29ja2V0Q29ubmVjdGlvbiBjIDogcmVnLmdldENvbm5lY3Rpb25zKGdldEFwcGxpY2F0aW9uKCkpKSB7CisJCQkJCXRyeSB7CisJCQkJCQljLnNlbmRNZXNzYWdlKGdldE1lc3NhZ2UobSkudG9TdHJpbmcoKSk7CisJCQkJCX0gY2F0Y2goRXhjZXB0aW9uIGUpIHsKKwkJCQkJCWxvZy5lcnJvcigiRXJyb3Igd2hpbGUgc2VuZGluZyBtZXNzYWdlIiwgZSk7CisJCQkJCX0KKwkJCQl9CisJCQkJQ2hhdFBhbmVsLnRoaXMubWVzc2FnZSA9ICIiOworCQkJCXRhcmdldC5hZGQoZik7CisJCQl9OworCQl9KSk7CisJCWFkZChmLnNldE91dHB1dE1hcmt1cElkKHRydWUpKTsKKwl9CisKK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy91c2VyL2NhbGVuZGFyL0NhbGVuZGFyRm9ybS5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL3VzZXIvY2FsZW5kYXIvQ2FsZW5kYXJGb3JtLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDkwYmYyNgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy91c2VyL2NhbGVuZGFyL0NhbGVuZGFyRm9ybS5qYXZhCkBAIC0wLDAgKzEsMTI1IEBACisvKg0KKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgKiB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5jb21wb25lbnRzLnVzZXIuY2FsZW5kYXI7DQorDQoraW1wb3J0IGphdmEudXRpbC5BcnJheUxpc3Q7DQoraW1wb3J0IGphdmEudXRpbC5MaXN0Ow0KKw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNhbGVuZGFyLmRhb3MuQXBwb2ludG1lbnRSZW1pbmRlclR5cERhbzsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jb25mZXJlbmNlLlJvb21NYW5hZ2VyOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNvbmZlcmVuY2UuZGFvLlJvb21EYW87DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEudXNlci5kYW8uVXNlcnNEYW87DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmNhbGVuZGFyLkFwcG9pbnRtZW50Ow0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5jYWxlbmRhci5BcHBvaW50bWVudFJlbWluZGVyVHlwczsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuZG9tYWluLk9yZ2FuaXNhdGlvbl9Vc2VyczsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbS5Sb29tVHlwZTsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMucm9vbS5Sb29tOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuYXBwLkFwcGxpY2F0aW9uOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuYXBwLldlYlNlc3Npb247DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LmFqYXguQWpheFJlcXVlc3RUYXJnZXQ7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LmFqYXgubWFya3VwLmh0bWwuZm9ybS5BamF4Q2hlY2tCb3g7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LmV4dGVuc2lvbnMueXVpLmNhbGVuZGFyLkRhdGVUaW1lRmllbGQ7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5odG1sLmZvcm0uQ2hvaWNlUmVuZGVyZXI7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5odG1sLmZvcm0uRHJvcERvd25DaG9pY2U7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5odG1sLmZvcm0uRm9ybTsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuZm9ybS5QYXNzd29yZFRleHRGaWVsZDsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuZm9ybS5SZXF1aXJlZFRleHRGaWVsZDsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuZm9ybS5UZXh0QXJlYTsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuZm9ybS5UZXh0RmllbGQ7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1vZGVsLklNb2RlbDsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubW9kZWwuUHJvcGVydHlNb2RlbDsNCisNCitwdWJsaWMgY2xhc3MgQ2FsZW5kYXJGb3JtIGV4dGVuZHMgRm9ybTxBcHBvaW50bWVudD4gew0KKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAtMTc2NDczODIzNzgyMTQ4NzUyNkw7DQorCXByaXZhdGUgYm9vbGVhbiBjcmVhdGVSb29tID0gdHJ1ZTsNCisNCisJcHVibGljIENhbGVuZGFyRm9ybShTdHJpbmcgaWQsIElNb2RlbDxBcHBvaW50bWVudD4gbW9kZWwpIHsNCisJCXN1cGVyKGlkLCBtb2RlbCk7DQorCQlzZXRPdXRwdXRNYXJrdXBJZCh0cnVlKTsNCisJCQ0KKwkJYWRkKG5ldyBSZXF1aXJlZFRleHRGaWVsZDxTdHJpbmc+KCJhcHBvaW50bWVudE5hbWUiKSk7DQorCQlhZGQobmV3IFRleHRBcmVhPFN0cmluZz4oImFwcG9pbnRtZW50RGVzY3JpcHRpb24iKSk7DQorCQlhZGQobmV3IFRleHRGaWVsZDxTdHJpbmc+KCJhcHBvaW50bWVudExvY2F0aW9uIikpOw0KKwkJYWRkKG5ldyBEYXRlVGltZUZpZWxkKCJhcHBvaW50bWVudFN0YXJ0dGltZSIpKTsNCisJCWFkZChuZXcgRGF0ZVRpbWVGaWVsZCgiYXBwb2ludG1lbnRFbmR0aW1lIikpOw0KKwkJZmluYWwgUGFzc3dvcmRUZXh0RmllbGQgcHdkID0gbmV3IFBhc3N3b3JkVGV4dEZpZWxkKCJwYXNzd29yZCIpOw0KKwkJcHdkLnNldEVuYWJsZWQoaXNQd2RQcm90ZWN0ZWQoKSk7DQorCQlwd2Quc2V0T3V0cHV0TWFya3VwSWQodHJ1ZSk7DQorCQlhZGQocHdkKTsNCisJCQ0KKwkJYWRkKG5ldyBEcm9wRG93bkNob2ljZTxBcHBvaW50bWVudFJlbWluZGVyVHlwcz4oDQorCQkJCSJyZW1pbmQiDQorCQkJCSwgQXBwbGljYXRpb24uZ2V0QmVhbihBcHBvaW50bWVudFJlbWluZGVyVHlwRGFvLmNsYXNzKS5nZXRBcHBvaW50bWVudFJlbWluZGVyVHlwTGlzdCgpDQorCQkJCSwgbmV3IENob2ljZVJlbmRlcmVyPEFwcG9pbnRtZW50UmVtaW5kZXJUeXBzPigibmFtZSIsICJ0eXBJZCIpKSk7DQorCQkNCisJCWZpbmFsIERyb3BEb3duQ2hvaWNlPFJvb21UeXBlPiByb29tVHlwZSA9IG5ldyBEcm9wRG93bkNob2ljZTxSb29tVHlwZT4oDQorCQkJCSJyb29tLnJvb210eXBlIg0KKwkJCQksIEFwcGxpY2F0aW9uLmdldEJlYW4oUm9vbU1hbmFnZXIuY2xhc3MpLmdldEFsbFJvb21UeXBlcygpDQorCQkJCSwgbmV3IENob2ljZVJlbmRlcmVyPFJvb21UeXBlPigibmFtZSIsICJyb29tdHlwZXNfaWQiKSk7DQorCQlyb29tVHlwZS5zZXRFbmFibGVkKGNyZWF0ZVJvb20pOw0KKwkJcm9vbVR5cGUuc2V0T3V0cHV0TWFya3VwSWQodHJ1ZSk7DQorCQlhZGQocm9vbVR5cGUpOw0KKwkJDQorCQlmaW5hbCBEcm9wRG93bkNob2ljZTxSb29tPiByb29tID0gbmV3IERyb3BEb3duQ2hvaWNlPFJvb20+KA0KKwkJCQkicm9vbSINCisJCQkJLCBnZXRSb29tTGlzdCgpDQorCQkJCSwgbmV3IENob2ljZVJlbmRlcmVyPFJvb20+KCJuYW1lIiwgInJvb21zX2lkIikpOw0KKwkJcm9vbS5zZXRFbmFibGVkKCFjcmVhdGVSb29tKTsNCisJCXJvb20uc2V0T3V0cHV0TWFya3VwSWQodHJ1ZSk7DQorCQlhZGQocm9vbSk7DQorCQkNCisJCWFkZChuZXcgQWpheENoZWNrQm94KCJjcmVhdGVSb29tIiwgbmV3IFByb3BlcnR5TW9kZWw8Qm9vbGVhbj4odGhpcywgImNyZWF0ZVJvb20iKSkgew0KKwkJCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IC0zNzQzMTEzOTkwODkwMzg2MDM1TDsNCisNCisJCQlAT3ZlcnJpZGUNCisJCQlwcm90ZWN0ZWQgdm9pZCBvblVwZGF0ZShBamF4UmVxdWVzdFRhcmdldCB0YXJnZXQpIHsNCisJCQkJY3JlYXRlUm9vbSA9IGdldENvbnZlcnRlZElucHV0KCk7DQorCQkJCXRhcmdldC5hZGQocm9vbVR5cGUuc2V0RW5hYmxlZChjcmVhdGVSb29tKSwgcm9vbS5zZXRFbmFibGVkKCFjcmVhdGVSb29tKSk7DQorCQkJfQ0KKwkJfSk7DQorCQlhZGQobmV3IEFqYXhDaGVja0JveCgiaXNQYXNzd29yZFByb3RlY3RlZCIpIHsNCisJCQlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSA2MDQxMjAwNTg0Mjk2NDM5OTc2TDsNCisNCisJCQlAT3ZlcnJpZGUNCisJCQlwcm90ZWN0ZWQgdm9pZCBvblVwZGF0ZShBamF4UmVxdWVzdFRhcmdldCB0YXJnZXQpIHsNCisJCQkJQ2FsZW5kYXJGb3JtLnRoaXMuZ2V0TW9kZWxPYmplY3QoKS5zZXRJc1Bhc3N3b3JkUHJvdGVjdGVkKGdldENvbnZlcnRlZElucHV0KCkpOw0KKwkJCQlwd2Quc2V0RW5hYmxlZChpc1B3ZFByb3RlY3RlZCgpKTsNCisJCQkJdGFyZ2V0LmFkZChwd2QpOw0KKwkJCX0NCisJCX0pOw0KKwl9DQorCQ0KKwlwcml2YXRlIGJvb2xlYW4gaXNQd2RQcm90ZWN0ZWQoKSB7DQorCQlyZXR1cm4gQm9vbGVhbi5UUlVFLmVxdWFscyhnZXRNb2RlbE9iamVjdCgpLmdldElzUGFzc3dvcmRQcm90ZWN0ZWQoKSk7DQorCX0NCisJDQorCXByaXZhdGUgTGlzdDxSb29tPiBnZXRSb29tTGlzdCgpIHsNCisJCS8vRklYTUUgbmVlZCB0byBiZSByZXZpZXdlZA0KKwkJTGlzdDxSb29tPiByZXN1bHQgPSBuZXcgQXJyYXlMaXN0PFJvb20+KCk7DQorCQlSb29tRGFvIGRhbyA9IEFwcGxpY2F0aW9uLmdldEJlYW4oUm9vbURhby5jbGFzcyk7DQorCQlyZXN1bHQuYWRkQWxsKGRhby5nZXRQdWJsaWNSb29tcygpKTsNCisJCWZvciAoT3JnYW5pc2F0aW9uX1VzZXJzIG91IDogQXBwbGljYXRpb24uZ2V0QmVhbihVc2Vyc0Rhby5jbGFzcykuZ2V0KFdlYlNlc3Npb24uZ2V0VXNlcklkKCkpLmdldE9yZ2FuaXNhdGlvbl91c2VycygpKSB7DQorCQkJcmVzdWx0LmFkZEFsbChkYW8uZ2V0T3JnYW5pc2F0aW9uUm9vbXMob3UuZ2V0T3JnYW5pc2F0aW9uKCkuZ2V0T3JnYW5pc2F0aW9uX2lkKCkpKTsNCisJCX0NCisJCWlmIChnZXRNb2RlbE9iamVjdCgpLmdldFJvb20oKSAhPSBudWxsICYmIGdldE1vZGVsT2JqZWN0KCkuZ2V0Um9vbSgpLmdldEFwcG9pbnRtZW50KCkpIHsgLy9GSVhNRSByZXZpZXcNCisJCQlyZXN1bHQuYWRkKGdldE1vZGVsT2JqZWN0KCkuZ2V0Um9vbSgpKTsNCisJCX0NCisJCXJldHVybiByZXN1bHQ7DQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL3VzZXIvY2FsZW5kYXIvQ2FsZW5kYXJQYW5lbC5odG1sIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL3VzZXIvY2FsZW5kYXIvQ2FsZW5kYXJQYW5lbC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU5NjQyZmMKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvdXNlci9jYWxlbmRhci9DYWxlbmRhclBhbmVsLmh0bWwKQEAgLTAsMCArMSwxNDQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8aHRtbCB4bWxuczp3aWNrZXQ9Imh0dHA6Ly93aWNrZXQuYXBhY2hlLm9yZyI+CisJPHdpY2tldDpoZWFkPgorCQk8bGluayBtZWRpYT0ic2NyZWVuIiB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSdjc3MvZnVsbGNhbGVuZGFyLmNzcycgLz4KKwkJPCEtLSBsaW5rIG1lZGlhPSJwcmludCIgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0nY3NzL2Z1bGxjYWxlbmRhci5wcmludC5jc3MnIC8tLT4gPCEtLSBGSVhNRSBpbmNvcnJlY3RseSByZW5kZXJlZCAtLT4KKwkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCQkJZnVuY3Rpb24gZ2V0Q2FsZW5kYXJIZWlnaHQoKSB7CisJCQkJcmV0dXJuICQod2luZG93KS5oZWlnaHQoKSAtICQoJyNjYWxlbmRhcicpLnBvc2l0aW9uKCkudG9wIC0gMjA7IC8vRklYTUUgSEFDSworCQkJfQorCQkJCisJCQlmdW5jdGlvbiByZWZldGNoRXZlbnRzKCkgeworCQkJCSQoJyNjYWxlbmRhcicpLmZ1bGxDYWxlbmRhcigncmVmZXRjaEV2ZW50cycpOworCQkJCXdpbmRvdy5zZXRUaW1lb3V0KHJlZmV0Y2hFdmVudHMsIDEwICogMTAwMCk7CisJCQl9CisJCQkKKwkJCWZ1bmN0aW9uIGNhbGVuZGFySW5pdCgpIHsKKwkJCQkkKCcjY2FsZW5kYXInKS5mdWxsQ2FsZW5kYXIoeworCQkJCQloZWFkZXI6IHsKKwkJCQkJCWxlZnQ6ICdwcmV2LG5leHQgdG9kYXknLAorCQkJCQkJY2VudGVyOiAndGl0bGUnLAorCQkJCQkJcmlnaHQ6ICdtb250aCxhZ2VuZGFXZWVrLGFnZW5kYURheScKKwkJCQkJfQorCQkJCQksIGVkaXRhYmxlOiB0cnVlCisJCQkJCSwgYWxsRGF5U2xvdDogZmFsc2UKKwkJCQkJLCBheGlzRm9ybWF0OiAnSEgoOm1tKScKKwkJCQkJLCBzZWxlY3RhYmxlOiB0cnVlCisJCQkJCSwgZGVmYXVsdEV2ZW50TWludXRlczogNjAKKwkJCQkJLCB0aW1lRm9ybWF0OiB7CisJCQkJCQlhZ2VuZGE6ICdISDptbXsgLSBISDptbX0nCisJCQkJCQksICcnOiAnSEgoOm1tKScKKwkJCQkJfQorCQkJCQksIGhlaWdodDogZ2V0Q2FsZW5kYXJIZWlnaHQoKQorCQkJCQksIHdpbmRvd1Jlc2l6ZTogZnVuY3Rpb24oKSB7CisJCQkJCQkvLyQoJyNjYWxlbmRhcicpLmRhdGEoKS5mdWxsQ2FsZW5kYXIub3B0aW9uKCdoZWlnaHQnLCBnZXRDYWxlbmRhckhlaWdodCgpKTsKKwkJCQkJCXRoaXMub3B0aW9uKCdoZWlnaHQnLCBnZXRDYWxlbmRhckhlaWdodCgpKTsKKwkJCQkJfQorCQkJCQksIGV2ZW50RHJvcDogZHJvcEV2ZW50RnVuYyAvL1RPRE8gY29uZmlybSA/PworCQkJCQksIGV2ZW50UmVzaXplOiByZXNpemVFdmVudEZ1bmMgLy9UT0RPIGNvbmZpcm0gPz8KKwkJCQkJLCBldmVudENsaWNrOiBldmVudENsaWNrRnVuYworCQkJCQksIHNlbGVjdDogc2VsZWN0RnVuYworCQkJCQksIGV2ZW50U291cmNlczogWworCQkJCQkJeworCQkJCQkJCWV2ZW50czogZmV0Y2hFdmVudHNGdW5jCisJCQkJCQkJLy8sIGNvbG9yOiAnIzQ3OTNFNicKKwkJCQkJCQkvLywgdGV4dENvbG9yOiAnYmxhY2snCisJCQkJCQl9CisJCQkJCV0KKwkJCQl9KTsKKwkJCQlyZWZldGNoRXZlbnRzKCk7CisJCQkJCisJCQkJJCgnI2FwcG9pbnRtZW50JykuZGlhbG9nKHsKKwkJCQkJY2xvc2VPbkVzY2FwZTogdHJ1ZQorCQkJCQksIHJlc2l6YWJsZTogdHJ1ZQorCQkJCQksIHdpZHRoOiA0NTAKKwkJCQkJLCBhdXRvT3BlbjogZmFsc2UKKwkJCQkJLCBtb2RhbDogdHJ1ZQorCQkJCX0pOworCQkJfQorCQk8L3NjcmlwdD4KKwk8L3dpY2tldDpoZWFkPgorCTx3aWNrZXQ6cGFuZWw+CisJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2Z1bGxjYWxlbmRhci5taW4uanMiPjwvc2NyaXB0PgorCQk8ZGl2IHdpY2tldDppZD0iY2FsZW5kYXIiPjwvZGl2PgorCQk8IS0tIGJvdHRvbSBzZWN0aW9uIC0tPgorCQk8ZGl2IGlkPSJhcHBvaW50bWVudCIgd2lja2V0Om9tbWVzc2FnZT0idGl0bGU6ODE1Ij4KKwkJCTxmb3JtIHdpY2tldDppZD0iYXBwb2ludG1lbnQiPgorCQkJCTx0YWJsZT4KKwkJCQkJPHRyPgorCQkJCQkJPHRkPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iNTcyIiAvPjwvdGQ+CisJCQkJCQk8dGQ+PGlucHV0IHR5cGU9InRleHQiIHdpY2tldDppZD0iYXBwb2ludG1lbnROYW1lIiAvPjwvdGQ+CisJCQkJCTwvdHI+CisJCQkJCTx0cj4KKwkJCQkJCTx0ZD48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjU3MCIgLz48L3RkPgorCQkJCQkJPHRkPjxzcGFuIHdpY2tldDppZD0iYXBwb2ludG1lbnRTdGFydHRpbWUiPjwvc3Bhbj48L3RkPgorCQkJCQk8L3RyPgorCQkJCQk8dHI+CisJCQkJCQk8dGQ+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSI1NzEiIC8+PC90ZD4KKwkJCQkJCTx0ZD48c3BhbiB3aWNrZXQ6aWQ9ImFwcG9pbnRtZW50RW5kdGltZSI+PC9zcGFuPjwvdGQ+CisJCQkJCTwvdHI+CisJCQkJCTx0cj4KKwkJCQkJCTx0ZD48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjU2NSIgLz48L3RkPgorCQkJCQkJPHRkPjxzZWxlY3Qgd2lja2V0OmlkPSJyZW1pbmQiID48L3NlbGVjdD48L3RkPgorCQkJCQk8L3RyPgorCQkJCQk8dHI+CisJCQkJCQk8dGQgY29sc3Bhbj0iMiI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiB3aWNrZXQ6aWQ9ImNyZWF0ZVJvb20iIC8+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIxNTA5IiAvPjwvdGQ+CisJCQkJCTwvdHI+CisJCQkJCTx0cj4KKwkJCQkJCTx0ZD48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjYxOSIgLz48L3RkPgorCQkJCQkJPHRkPjxzZWxlY3Qgd2lja2V0OmlkPSJyb29tLnJvb210eXBlIiA+PC9zZWxlY3Q+PC90ZD4KKwkJCQkJPC90cj4KKwkJCQkJPHRyPgorCQkJCQkJPHRkPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iNDA2IiAvPjwvdGQ+CisJCQkJCQk8dGQ+PHNlbGVjdCB3aWNrZXQ6aWQ9InJvb20iID48L3NlbGVjdD48L3RkPgorCQkJCQk8L3RyPgorCQkJCQk8dHI+CisJCQkJCQk8dGQgY29sc3Bhbj0iMiI+PGlucHV0IHR5cGU9ImNoZWNrYm94IiB3aWNrZXQ6aWQ9ImlzUGFzc3dvcmRQcm90ZWN0ZWQiIC8+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSI1MjQiIC8+PC90ZD4KKwkJCQkJPC90cj4KKwkJCQkJPHRyPgorCQkJCQkJPHRkPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iNTI1IiAvPjwvdGQ+CisJCQkJCQk8dGQ+PGlucHV0IHR5cGU9InBhc3N3b3JkIiB3aWNrZXQ6aWQ9InBhc3N3b3JkIiAvPjwvdGQ+CisJCQkJCTwvdHI+CisJCQkJCTx0cj4KKwkJCQkJCTx0ZCBjb2xzcGFuPSIyIj48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjE0NDUiIC8+PC90ZD4KKwkJCQkJPC90cj4KKwkJCQkJPCEtLSAKKwkJCQkJPHRyPgorCQkJCQkJPHRkPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iODAzIiAvPjwvdGQ+CisJCQkJCQk8dGQ+PHNlbGVjdCB3aWNrZXQ6aWQ9Im1lZXRpbmdNZW1iZXIiID48L3NlbGVjdD48L3RkPgorCQkJCQk8L3RyIC0tPgorCQkJCQk8dHI+CisJCQkJCQk8dGQ+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSI1NjkiIC8+PC90ZD4KKwkJCQkJCTx0ZD48aW5wdXQgdHlwZT0idGV4dCIgd2lja2V0OmlkPSJhcHBvaW50bWVudExvY2F0aW9uIiAvPjwvdGQ+CisJCQkJCTwvdHI+CisJCQkJCTx0cj4KKwkJCQkJCTx0ZD48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjU3MyIgLz48L3RkPgorCQkJCQkJPHRkPjx0ZXh0YXJlYSB3aWNrZXQ6aWQ9ImFwcG9pbnRtZW50RGVzY3JpcHRpb24iPjwvdGV4dGFyZWE+PC90ZD4KKwkJCQkJPC90cj4KKwkJCQkJPCEtLSB0cj4KKwkJCQkJCTx0ZCBjb2xzcGFuPSIyIiBzdHlsZT0idGV4dC1hbGlnbjogcmlnaHQiPjxpbnB1dCB0eXBlPSJidXR0b24iIHdpY2tldDppZD0ic2F2ZSIgLz48aW5wdXQgdHlwZT0iYnV0dG9uIiB3aWNrZXQ6aWQ9ImNhbmNlbCIgLz48L3RkPgorCQkJCQk8L3RyIC0tPgorCQkJCTwvdGFibGU+CisJCQk8L2Zvcm0+CisJCTwvZGl2PgorCTwvd2lja2V0OnBhbmVsPgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL3VzZXIvY2FsZW5kYXIvQ2FsZW5kYXJQYW5lbC5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL3VzZXIvY2FsZW5kYXIvQ2FsZW5kYXJQYW5lbC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyNDgzNGIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvdXNlci9jYWxlbmRhci9DYWxlbmRhclBhbmVsLmphdmEKQEAgLTAsMCArMSwyNjYgQEAKKy8qCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUKKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UKKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAqCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorICoKKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKi8KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmNvbXBvbmVudHMudXNlci5jYWxlbmRhcjsKKworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLndpY2tldC5hamF4LmF0dHJpYnV0ZXMuQ2FsbGJhY2tQYXJhbWV0ZXIuY29udGV4dDsKK2ltcG9ydCBzdGF0aWMgb3JnLmFwYWNoZS53aWNrZXQuYWpheC5hdHRyaWJ1dGVzLkNhbGxiYWNrUGFyYW1ldGVyLmV4cGxpY2l0OworaW1wb3J0IHN0YXRpYyBvcmcuYXBhY2hlLndpY2tldC5hamF4LmF0dHJpYnV0ZXMuQ2FsbGJhY2tQYXJhbWV0ZXIucmVzb2x2ZWQ7CisKK2ltcG9ydCBqYXZhLnV0aWwuQ2FsZW5kYXI7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNhbGVuZGFyLmRhb3MuQXBwb2ludG1lbnREYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuY2FsZW5kYXIuQXBwb2ludG1lbnQ7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmFwcC5BcHBsaWNhdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuYXBwLldlYlNlc3Npb247CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmNvbXBvbmVudHMuVXNlclBhbmVsOworaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LkNvbXBvbmVudDsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5hamF4LkFic3RyYWN0RGVmYXVsdEFqYXhCZWhhdmlvcjsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5hamF4LkFqYXhSZXF1ZXN0VGFyZ2V0OworaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LmFqYXguYXR0cmlidXRlcy5BamF4Q2FsbExpc3RlbmVyOworaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LmFqYXguYXR0cmlidXRlcy5BamF4UmVxdWVzdEF0dHJpYnV0ZXM7CitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQuYWpheC5qc29uLkpTT05BcnJheTsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5hamF4Lmpzb24uSlNPTkV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5hamF4Lmpzb24uSlNPTk9iamVjdDsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaGVhZC5JSGVhZGVyUmVzcG9uc2U7CitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmhlYWQuSmF2YVNjcmlwdEhlYWRlckl0ZW07CitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuV2ViTWFya3VwQ29udGFpbmVyOworaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1vZGVsLkNvbXBvdW5kUHJvcGVydHlNb2RlbDsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5yZXF1ZXN0LmhhbmRsZXIuVGV4dFJlcXVlc3RIYW5kbGVyOworCitwdWJsaWMgY2xhc3MgQ2FsZW5kYXJQYW5lbCBleHRlbmRzIFVzZXJQYW5lbCB7CisKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAtNjUzNjM3OTQ5NzY0MjI5MTQzN0w7CisJCisJQE92ZXJyaWRlCisJcHVibGljIHZvaWQgb25NZW51UGFuZWxMb2FkKEFqYXhSZXF1ZXN0VGFyZ2V0IHRhcmdldCkgeworCQl0YXJnZXQuYXBwZW5kSmF2YVNjcmlwdCgiY2FsZW5kYXJJbml0KCk7Iik7CisJfQorCisJcHVibGljIENhbGVuZGFyUGFuZWwoU3RyaW5nIGlkKSB7CisJCXN1cGVyKGlkKTsKKwkJV2ViTWFya3VwQ29udGFpbmVyIGNhbGVuZGFyID0gbmV3IFdlYk1hcmt1cENvbnRhaW5lcigiY2FsZW5kYXIiKTsKKwkJY2FsZW5kYXIuc2V0T3V0cHV0TWFya3VwSWQodHJ1ZSk7CisJCWNhbGVuZGFyLnNldE1hcmt1cElkKCJjYWxlbmRhciIpOworCQlhZGQoY2FsZW5kYXIpOworCQkKKwkJZmluYWwgQ2FsZW5kYXJGb3JtIGZvcm0gPSBuZXcgQ2FsZW5kYXJGb3JtKCJhcHBvaW50bWVudCIsIG5ldyBDb21wb3VuZFByb3BlcnR5TW9kZWw8QXBwb2ludG1lbnQ+KG5ldyBBcHBvaW50bWVudCgpKSk7CisJCWFkZChmb3JtKTsKKwkJCisJCS8vZmV0Y2hFdmVudHMKKwkJYWRkKG5ldyBBYnN0cmFjdERlZmF1bHRBamF4QmVoYXZpb3IoKSB7CisJCQlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSA2ODgwNTE0OTQ3MzMxOTQ2NDA3TDsKKworCQkJQE92ZXJyaWRlCisJCQlwcm90ZWN0ZWQgdm9pZCB1cGRhdGVBamF4QXR0cmlidXRlcyhBamF4UmVxdWVzdEF0dHJpYnV0ZXMgYXR0cmlidXRlcykgeworCQkJCXN1cGVyLnVwZGF0ZUFqYXhBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpOworCQkJCWF0dHJpYnV0ZXMuc2V0RGF0YVR5cGUoImpzb24iKTsKKwkJCQlhdHRyaWJ1dGVzLnNldFdpY2tldEFqYXhSZXNwb25zZShmYWxzZSk7CisJCQkJYXR0cmlidXRlcy5nZXRBamF4Q2FsbExpc3RlbmVycygpLmFkZChuZXcgQWpheENhbGxMaXN0ZW5lcigpLm9uU3VjY2VzcygiY2FsbGJhY2soZGF0YSk7IikpOworCQkJfQorCQkJCisJCQlAT3ZlcnJpZGUKKwkJCXB1YmxpYyB2b2lkIHJlbmRlckhlYWQoQ29tcG9uZW50IGNvbXBvbmVudCwgSUhlYWRlclJlc3BvbnNlIHJlc3BvbnNlKSB7CisJCQkJc3VwZXIucmVuZGVySGVhZChjb21wb25lbnQsIHJlc3BvbnNlKTsKKwkJCQlyZXNwb25zZS5yZW5kZXIoSmF2YVNjcmlwdEhlYWRlckl0ZW0uZm9yU2NyaXB0KAorCQkJCQkidmFyIGZldGNoRXZlbnRzRnVuYyA9ICIKKwkJCQkJCSsgdGhpcy5nZXRDYWxsYmFja0Z1bmN0aW9uKAorCQkJCQkJCWNvbnRleHQoInN0YXJ0IikKKwkJCQkJCQksIGNvbnRleHQoImVuZCIpCisJCQkJCQkJLCBjb250ZXh0KCJjYWxsYmFjayIpCisJCQkJCQkJLCByZXNvbHZlZCgiX3N0YXJ0IiwgInN0YXJ0LmdldFRpbWUoKSIpCisJCQkJCQkJLCByZXNvbHZlZCgiX2VuZCIsICJlbmQuZ2V0VGltZSgpIikpICsgIjsiCisJCQkJCSwgImZldGNoRXZlbnRzRnVuYyIpKTsKKwkJCX0KKworCQkJQE92ZXJyaWRlCisJCQlwcm90ZWN0ZWQgdm9pZCByZXNwb25kKEFqYXhSZXF1ZXN0VGFyZ2V0IHRhcmdldCkgeworCQkJCUNhbGVuZGFyIHN0YXJ0ID0gV2ViU2Vzc2lvbi5nZXRDYWxlbmRhcigpOworCQkJCXN0YXJ0LnNldFRpbWVJbk1pbGxpcyhnZXRSZXF1ZXN0Q3ljbGUoKS5nZXRSZXF1ZXN0KCkuZ2V0UmVxdWVzdFBhcmFtZXRlcnMoKS5nZXRQYXJhbWV0ZXJWYWx1ZSgiX3N0YXJ0IikudG9Mb25nKCkpOworCQkJCUNhbGVuZGFyIGVuZCA9IFdlYlNlc3Npb24uZ2V0Q2FsZW5kYXIoKTsKKwkJCQllbmQuc2V0VGltZUluTWlsbGlzKGdldFJlcXVlc3RDeWNsZSgpLmdldFJlcXVlc3QoKS5nZXRSZXF1ZXN0UGFyYW1ldGVycygpLmdldFBhcmFtZXRlclZhbHVlKCJfZW5kIikudG9Mb25nKCkpOworCQkJCUpTT05BcnJheSBldmVudHMgPSBuZXcgSlNPTkFycmF5KCk7CisJCQkJZm9yIChBcHBvaW50bWVudCBhIDogQXBwbGljYXRpb24uZ2V0QmVhbihBcHBvaW50bWVudERhby5jbGFzcykuZ2V0QXBwb2ludG1lbnRzQnlSYW5nZShXZWJTZXNzaW9uLmdldFVzZXJJZCgpLAorCQkJCQkJc3RhcnQuZ2V0VGltZSgpLCBlbmQuZ2V0VGltZSgpKSkgeworCQkJCQl0cnkgeworCQkJCQkJZXZlbnRzLnB1dChuZXcgSlNPTk9iamVjdCgpCisJCQkJCQkJLnB1dCgiaWQiLCBhLmdldEFwcG9pbnRtZW50SWQoKSkKKwkJCQkJCQkucHV0KCJ0aXRsZSIsIGEuZ2V0QXBwb2ludG1lbnROYW1lKCkpCisJCQkJCQkJLnB1dCgiZGVzY3JpcHRpb24iLCBhLmdldEFwcG9pbnRtZW50RGVzY3JpcHRpb24oKSkKKwkJCQkJCQkucHV0KCJzdGFydCIsIFdlYlNlc3Npb24uZ2V0RGF0ZUZvcm1hdCgpLmZvcm1hdChhLmdldEFwcG9pbnRtZW50U3RhcnR0aW1lKCkpKQorCQkJCQkJCS5wdXQoImVuZCIsIFdlYlNlc3Npb24uZ2V0RGF0ZUZvcm1hdCgpLmZvcm1hdChhLmdldEFwcG9pbnRtZW50RW5kdGltZSgpKSkKKwkJCQkJCQkucHV0KCJhbGxEYXkiLCBmYWxzZSkpOworCQkJCQl9IGNhdGNoIChKU09ORXhjZXB0aW9uIGUpIHsKKwkJCQkJCWUucHJpbnRTdGFja1RyYWNlKCk7CisJCQkJCX0KKwkJCQl9CisJICAgICAgICAgICAgZ2V0UmVxdWVzdEN5Y2xlKCkuc2NoZWR1bGVSZXF1ZXN0SGFuZGxlckFmdGVyQ3VycmVudCgKKwkgICAgICAgICAgICAJbmV3IFRleHRSZXF1ZXN0SGFuZGxlcigiYXBwbGljYXRpb24vanNvbiIsICJVVEYtOCIsIGV2ZW50cy50b1N0cmluZygpKSk7CisJCQl9CisJCX0pOworCQkvL2Ryb3BFdmVudAorCQlhZGQobmV3IERyb3BSZXNpemVCZWhhdmlvcih0cnVlLCAiZHJvcEV2ZW50RnVuYyIpKTsKKwkJLy9yZXNpemVFdmVudAorCQlhZGQobmV3IERyb3BSZXNpemVCZWhhdmlvcihmYWxzZSwgInJlc2l6ZUV2ZW50RnVuYyIpKTsKKwkJLy9jcmVhdGUgb24gY2xpY2stYW5kLWRyYWcKKwkJYWRkKG5ldyBBYnN0cmFjdERlZmF1bHRBamF4QmVoYXZpb3IoKSB7CisJCQlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSA2ODgwNTE0OTQ3MzMxOTQ2NDA3TDsKKworCQkJQE92ZXJyaWRlCisJCQlwcm90ZWN0ZWQgdm9pZCB1cGRhdGVBamF4QXR0cmlidXRlcyhBamF4UmVxdWVzdEF0dHJpYnV0ZXMgYXR0cmlidXRlcykgeworCQkJCXN1cGVyLnVwZGF0ZUFqYXhBdHRyaWJ1dGVzKGF0dHJpYnV0ZXMpOworCQkJCWF0dHJpYnV0ZXMuZ2V0QWpheENhbGxMaXN0ZW5lcnMoKS5hZGQobmV3IEFqYXhDYWxsTGlzdGVuZXIoKS5vblN1Y2Nlc3MoIiQoJyNhcHBvaW50bWVudCcpLmRpYWxvZygnb3BlbicpOyIpKTsKKwkJCX0KKwkJCQorCQkJQE92ZXJyaWRlCisJCQlwdWJsaWMgdm9pZCByZW5kZXJIZWFkKENvbXBvbmVudCBjb21wb25lbnQsIElIZWFkZXJSZXNwb25zZSByZXNwb25zZSkgeworCQkJCXN1cGVyLnJlbmRlckhlYWQoY29tcG9uZW50LCByZXNwb25zZSk7CisJCQkJcmVzcG9uc2UucmVuZGVyKEphdmFTY3JpcHRIZWFkZXJJdGVtLmZvclNjcmlwdCgKKwkJCQkJInZhciBzZWxlY3RGdW5jID0gIgorCQkJCQkJKyB0aGlzLmdldENhbGxiYWNrRnVuY3Rpb24oCisJCQkJCQkJY29udGV4dCgic3RhcnQiKQorCQkJCQkJCSwgY29udGV4dCgiZW5kIikKKwkJCQkJCQksIGNvbnRleHQoImFsbERheSIpCisJCQkJCQkJLCBjb250ZXh0KCJqc0V2ZW50IikKKwkJCQkJCQksIGNvbnRleHQoInZpZXciKQorCQkJCQkJCSwgcmVzb2x2ZWQoIl9zdGFydCIsICJzdGFydC5nZXRUaW1lKCkiKQorCQkJCQkJCSwgcmVzb2x2ZWQoIl9lbmQiLCAiZW5kLmdldFRpbWUoKSIpKSArICI7IgorCQkJCQksICJzZWxlY3RGdW5jIikpOworCQkJfQorCisJCQlAT3ZlcnJpZGUKKwkJCXByb3RlY3RlZCB2b2lkIHJlc3BvbmQoQWpheFJlcXVlc3RUYXJnZXQgdGFyZ2V0KSB7CisJCQkJQ2FsZW5kYXIgc3RhcnQgPSBXZWJTZXNzaW9uLmdldENhbGVuZGFyKCk7CisJCQkJc3RhcnQuc2V0VGltZUluTWlsbGlzKGdldFJlcXVlc3RDeWNsZSgpLmdldFJlcXVlc3QoKS5nZXRSZXF1ZXN0UGFyYW1ldGVycygpLmdldFBhcmFtZXRlclZhbHVlKCJfc3RhcnQiKS50b0xvbmcoKSk7CisJCQkJQ2FsZW5kYXIgZW5kID0gV2ViU2Vzc2lvbi5nZXRDYWxlbmRhcigpOworCQkJCWVuZC5zZXRUaW1lSW5NaWxsaXMoZ2V0UmVxdWVzdEN5Y2xlKCkuZ2V0UmVxdWVzdCgpLmdldFJlcXVlc3RQYXJhbWV0ZXJzKCkuZ2V0UGFyYW1ldGVyVmFsdWUoIl9lbmQiKS50b0xvbmcoKSk7CisJCQkJCisJCQkJaWYgKHN0YXJ0LmVxdWFscyhlbmQpKSB7CisJCQkJCWVuZC5hZGQoQ2FsZW5kYXIuSE9VUl9PRl9EQVksIDEpOworCQkJCX0KKwkJCQlBcHBvaW50bWVudCBhID0gbmV3IEFwcG9pbnRtZW50KCk7CisJCQkJYS5zZXRBcHBvaW50bWVudFN0YXJ0dGltZShzdGFydC5nZXRUaW1lKCkpOworCQkJCWEuc2V0QXBwb2ludG1lbnRFbmR0aW1lKGVuZC5nZXRUaW1lKCkpOworCQkJCWZvcm0uc2V0TW9kZWxPYmplY3QoYSk7CisJCQkJCisJCQkJdGFyZ2V0LmFkZChmb3JtKTsKKwkJCX0KKwkJfSk7CisJCS8vZXZlbnRDbGljaworCQlhZGQobmV3IEFic3RyYWN0RGVmYXVsdEFqYXhCZWhhdmlvcigpIHsKKwkJCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDY4ODA1MTQ5NDczMzE5NDY0MDdMOworCisJCQlAT3ZlcnJpZGUKKwkJCXByb3RlY3RlZCB2b2lkIHVwZGF0ZUFqYXhBdHRyaWJ1dGVzKEFqYXhSZXF1ZXN0QXR0cmlidXRlcyBhdHRyaWJ1dGVzKSB7CisJCQkJc3VwZXIudXBkYXRlQWpheEF0dHJpYnV0ZXMoYXR0cmlidXRlcyk7CisJCQkJYXR0cmlidXRlcy5nZXRBamF4Q2FsbExpc3RlbmVycygpLmFkZChuZXcgQWpheENhbGxMaXN0ZW5lcigpLm9uU3VjY2VzcygiJCgnI2FwcG9pbnRtZW50JykuZGlhbG9nKCdvcGVuJyk7IikpOworCQkJfQorCQkJCisJCQlAT3ZlcnJpZGUKKwkJCXB1YmxpYyB2b2lkIHJlbmRlckhlYWQoQ29tcG9uZW50IGNvbXBvbmVudCwgSUhlYWRlclJlc3BvbnNlIHJlc3BvbnNlKSB7CisJCQkJc3VwZXIucmVuZGVySGVhZChjb21wb25lbnQsIHJlc3BvbnNlKTsKKwkJCQlyZXNwb25zZS5yZW5kZXIoSmF2YVNjcmlwdEhlYWRlckl0ZW0uZm9yU2NyaXB0KAorCQkJCQkidmFyIGV2ZW50Q2xpY2tGdW5jID0gIgorCQkJCQkJKyB0aGlzLmdldENhbGxiYWNrRnVuY3Rpb24oCisJCQkJCQkJY29udGV4dCgiZXZlbnQiKQorCQkJCQkJCSwgY29udGV4dCgianNFdmVudCIpCisJCQkJCQkJLCBjb250ZXh0KCJ2aWV3IikKKwkJCQkJCQksIHJlc29sdmVkKCJfaWQiLCAiZXZlbnQuaWQiKSkgKyAiOyIKKwkJCQkJLCAiZXZlbnRDbGlja0Z1bmMiKSk7CisJCQl9CisKKwkJCUBPdmVycmlkZQorCQkJcHJvdGVjdGVkIHZvaWQgcmVzcG9uZChBamF4UmVxdWVzdFRhcmdldCB0YXJnZXQpIHsKKwkJCQlBcHBvaW50bWVudCBhID0gQXBwbGljYXRpb24uZ2V0QmVhbihBcHBvaW50bWVudERhby5jbGFzcykuZ2V0QXBwb2ludG1lbnRCeUlkKAorCQkJCQkJZ2V0UmVxdWVzdEN5Y2xlKCkuZ2V0UmVxdWVzdCgpLmdldFJlcXVlc3RQYXJhbWV0ZXJzKCkuZ2V0UGFyYW1ldGVyVmFsdWUoIl9pZCIpLnRvTG9uZygpKTsKKwkJCQlmb3JtLnNldE1vZGVsT2JqZWN0KGEpOworCQkJCQorCQkJCXRhcmdldC5hZGQoZm9ybSk7CisJCQl9CisJCX0pOworCX0KKworCXByaXZhdGUgY2xhc3MgRHJvcFJlc2l6ZUJlaGF2aW9yIGV4dGVuZHMgQWJzdHJhY3REZWZhdWx0QWpheEJlaGF2aW9yIHsKKwkJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gLTMwNjA4NzIxNTU1NjMxMzUyMzZMOworCQlwcml2YXRlIGJvb2xlYW4gZHJvcCA9IGZhbHNlOworCQlwcml2YXRlIFN0cmluZyBmdW5jTmFtZTsKKwkJCisJCURyb3BSZXNpemVCZWhhdmlvcihib29sZWFuIGRyb3AsIFN0cmluZyBmdW5jTmFtZSkgeworCQkJdGhpcy5kcm9wID0gZHJvcDsKKwkJCXRoaXMuZnVuY05hbWUgPSBmdW5jTmFtZTsKKwkJfQorCQkKKwkJQE92ZXJyaWRlCisJCXByb3RlY3RlZCB2b2lkIHVwZGF0ZUFqYXhBdHRyaWJ1dGVzKEFqYXhSZXF1ZXN0QXR0cmlidXRlcyBhdHRyaWJ1dGVzKSB7CisJCQlzdXBlci51cGRhdGVBamF4QXR0cmlidXRlcyhhdHRyaWJ1dGVzKTsKKwkJCWF0dHJpYnV0ZXMuZ2V0QWpheENhbGxMaXN0ZW5lcnMoKS5hZGQobmV3IEFqYXhDYWxsTGlzdGVuZXIoKS5vbkZhaWx1cmUoInJldmVydEZ1bmMoKTsiKSk7CisJCX0KKwkJCisJCUBPdmVycmlkZQorCQlwdWJsaWMgdm9pZCByZW5kZXJIZWFkKENvbXBvbmVudCBjb21wb25lbnQsIElIZWFkZXJSZXNwb25zZSByZXNwb25zZSkgeworCQkJc3VwZXIucmVuZGVySGVhZChjb21wb25lbnQsIHJlc3BvbnNlKTsKKwkJCXJlc3BvbnNlLnJlbmRlcihKYXZhU2NyaXB0SGVhZGVySXRlbS5mb3JTY3JpcHQoCisJCQkJInZhciAiICsgZnVuY05hbWUgKyAiID0gIgorCQkJCQkrIChkcm9wCisJCQkJCQk/IHRoaXMuZ2V0Q2FsbGJhY2tGdW5jdGlvbigKKwkJCQkJCQljb250ZXh0KCJldmVudCIpCisJCQkJCQkJLCBleHBsaWNpdCgiZGF5RGVsdGEiKQorCQkJCQkJCSwgZXhwbGljaXQoIm1pbnV0ZURlbHRhIikKKwkJCQkJCQksIGNvbnRleHQoImFsbERheSIpCisJCQkJCQkJLCBjb250ZXh0KCJyZXZlcnRGdW5jIikKKwkJCQkJCQksIGNvbnRleHQoImpzRXZlbnQiKQorCQkJCQkJCSwgY29udGV4dCgidWkiKQorCQkJCQkJCSwgY29udGV4dCgidmlldyIpCisJCQkJCQkJLCByZXNvbHZlZCgiX2lkIiwgImV2ZW50LmlkIikpCisJCQkJCQk6IHRoaXMuZ2V0Q2FsbGJhY2tGdW5jdGlvbigKKwkJCQkJCQljb250ZXh0KCJldmVudCIpCisJCQkJCQkJLCBleHBsaWNpdCgiZGF5RGVsdGEiKQorCQkJCQkJCSwgZXhwbGljaXQoIm1pbnV0ZURlbHRhIikKKwkJCQkJCQksIGNvbnRleHQoInJldmVydEZ1bmMiKQorCQkJCQkJCSwgY29udGV4dCgianNFdmVudCIpCisJCQkJCQkJLCBjb250ZXh0KCJ1aSIpCisJCQkJCQkJLCBjb250ZXh0KCJ2aWV3IikKKwkJCQkJCQksIHJlc29sdmVkKCJfaWQiLCAiZXZlbnQuaWQiKSkpICsgIjsiCisJCQkJLCBmdW5jTmFtZSkpOworCQl9CisJCQorCQlAT3ZlcnJpZGUKKwkJcHJvdGVjdGVkIHZvaWQgcmVzcG9uZChBamF4UmVxdWVzdFRhcmdldCB0YXJnZXQpIHsKKwkJCUFwcG9pbnRtZW50RGFvIGRhbyA9IEFwcGxpY2F0aW9uLmdldEJlYW4oQXBwb2ludG1lbnREYW8uY2xhc3MpOworCQkJQXBwb2ludG1lbnQgYSA9IGRhby5nZXRBcHBvaW50bWVudEJ5SWQoCisJCQkJZ2V0UmVxdWVzdEN5Y2xlKCkuZ2V0UmVxdWVzdCgpLmdldFJlcXVlc3RQYXJhbWV0ZXJzKCkuZ2V0UGFyYW1ldGVyVmFsdWUoIl9pZCIpLnRvTG9uZygpKTsKKworCQkJaW50IGRheURlbHRhID0gZ2V0UmVxdWVzdEN5Y2xlKCkuZ2V0UmVxdWVzdCgpLmdldFJlcXVlc3RQYXJhbWV0ZXJzKCkuZ2V0UGFyYW1ldGVyVmFsdWUoImRheURlbHRhIikudG9JbnQoKTsKKwkJCWludCBtaW51dGVEZWx0YSA9IGdldFJlcXVlc3RDeWNsZSgpLmdldFJlcXVlc3QoKS5nZXRSZXF1ZXN0UGFyYW1ldGVycygpLmdldFBhcmFtZXRlclZhbHVlKCJtaW51dGVEZWx0YSIpLnRvSW50KCk7CisKKwkJCUNhbGVuZGFyIGNhbCA9IFdlYlNlc3Npb24uZ2V0Q2FsZW5kYXIoKTsKKwkJCWlmIChkcm9wKSB7CisJCQkJY2FsLnNldFRpbWUoYS5nZXRBcHBvaW50bWVudFN0YXJ0dGltZSgpKTsKKwkJCQljYWwuYWRkKENhbGVuZGFyLkRBVEUsIGRheURlbHRhKTsKKwkJCQljYWwuYWRkKENhbGVuZGFyLk1JTlVURSwgbWludXRlRGVsdGEpOworCQkJCWEuc2V0QXBwb2ludG1lbnRTdGFydHRpbWUoY2FsLmdldFRpbWUoKSk7CisJCQl9CisJCQljYWwuc2V0VGltZShhLmdldEFwcG9pbnRtZW50RW5kdGltZSgpKTsKKwkJCWNhbC5hZGQoQ2FsZW5kYXIuREFURSwgZGF5RGVsdGEpOworCQkJY2FsLmFkZChDYWxlbmRhci5NSU5VVEUsIG1pbnV0ZURlbHRhKTsKKwkJCWEuc2V0QXBwb2ludG1lbnRFbmR0aW1lKGNhbC5nZXRUaW1lKCkpOworCQkJCisJCQlkYW8udXBkYXRlQXBwb2ludG1lbnQoYSk7CisJCX0KKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2NvbXBvbmVudHMvdXNlci9yb29tcy9Vc2VyUm9vbXNQYW5lbC5odG1sIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL3VzZXIvcm9vbXMvVXNlclJvb21zUGFuZWwuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmUzYmUxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL3VzZXIvcm9vbXMvVXNlclJvb21zUGFuZWwuaHRtbApAQCAtMCwwICsxLDM2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0NCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgICJMaWNlbnNlIik7IHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgIA0KKyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAgICAJICANCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAgdW5kZXIgdGhlIExpY2Vuc2UuDQorICANCistLT4NCis8aHRtbCB4bWxuczp3aWNrZXQ9Imh0dHA6Ly93aWNrZXQuYXBhY2hlLm9yZyI+DQorCTx3aWNrZXQ6cGFuZWw+DQorCQk8ZGl2IHdpY2tldDppZD0idGl0bGUiPjwvZGl2Pg0KKwkJPGRpdiB3aWNrZXQ6aWQ9ImRlc2MiPjwvZGl2Pg0KKwkJPHRhYmxlIHN0eWxlPSJib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOyI+DQorCQkJPHRyIHdpY2tldDppZD0ibGlzdCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHJnYigyNDgsIDI0OCwgMjQ4KTsgYm9yZGVyLWJvdHRvbTogNXB4IHNvbGlkIHdoaXRlOyI+DQorCQkJCTx0ZD4NCisJCQkJCTxzcGFuIHdpY2tldDppZD0icm9vbU5hbWUiPltyb29tIG5hbWVdPC9zcGFuPjxici8+DQorCQkJCQk8d2lja2V0Om9tbWVzc2FnZSBrZXk9IjM5OCIgLz4mbmJzcDs8c3BhbiB3aWNrZXQ6aWQ9ImN1clVzZXJzIj48L3NwYW4+Jm5ic3A7LyZuYnNwOzxzcGFuDQorCQkJCQl3aWNrZXQ6aWQ9InRvdGFsVXNlcnMiPjwvc3Bhbj4mbmJzcDsmbmJzcDs8c3BhbiB3aWNrZXQ6aWQ9InJlZnJlc2giIA0KKwkJCQkJY2xhc3M9InVpLWljb24gdWktaWNvbi1hcnJvd3JlZnJlc2gtMS1uIiBzdHlsZT0iZGlzcGxheTogaW5saW5lLWJsb2NrIj48L3NwYW4+PC90ZD4NCisJCQkJPHRkPjxidXR0b24+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIxMzEiLz48L2J1dHRvbj48L3RkPg0KKwkJCTwvdHI+DQorCQk8L3RhYmxlPg0KKwk8L3dpY2tldDpwYW5lbD4NCis8L2h0bWw+DQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9jb21wb25lbnRzL3VzZXIvcm9vbXMvVXNlclJvb21zUGFuZWwuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy91c2VyL3Jvb21zL1VzZXJSb29tc1BhbmVsLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzEyYjZjMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvY29tcG9uZW50cy91c2VyL3Jvb21zL1VzZXJSb29tc1BhbmVsLmphdmEKQEAgLTAsMCArMSw5MyBAQAorLyoNCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICogdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuY29tcG9uZW50cy51c2VyLnJvb21zOw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuQXJyYXlMaXN0Ow0KK2ltcG9ydCBqYXZhLnV0aWwuTGlzdDsNCisNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5jb25mZXJlbmNlLmRhby5Sb29tRGFvOw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5yb29tLlJvb207DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnNlc3Npb24uU2Vzc2lvbk1hbmFnZXI7DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5hcHAuQXBwbGljYXRpb247DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5hcHAuV2ViU2Vzc2lvbjsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmNvbXBvbmVudHMuTWVudVBhbmVsLk1lbnVQYXJhbXM7DQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5jb21wb25lbnRzLlVzZXJQYW5lbDsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQuYWpheC5BamF4UmVxdWVzdFRhcmdldDsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQuYWpheC5tYXJrdXAuaHRtbC5BamF4TGluazsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuYmFzaWMuTGFiZWw7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5odG1sLmxpc3QuTGlzdEl0ZW07DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5odG1sLmxpc3QuTGlzdFZpZXc7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1vZGVsLklNb2RlbDsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubW9kZWwuTW9kZWw7DQorDQorcHVibGljIGNsYXNzIFVzZXJSb29tc1BhbmVsIGV4dGVuZHMgVXNlclBhbmVsIHsNCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gLTMyNDYyNTk4MDM2MjM5MjUzNDFMOw0KKw0KKwlwdWJsaWMgVXNlclJvb21zUGFuZWwoU3RyaW5nIGlkLCBNZW51UGFyYW1zIHBhcmFtKSB7DQorCQlzdXBlcihpZCk7DQorDQorCQlsb25nIHRpdGxlLCBkZXNjOw0KKwkJTGlzdDxSb29tPiByb29tczsNCisJCXN3aXRjaCAocGFyYW0pIHsNCisJCQljYXNlIG15VGFiQnV0dG9uOg0KKwkJCQl0aXRsZSA9IDc4MUw7DQorCQkJCWRlc2MgPSA3ODJMOw0KKwkJCQkvL3Jvb21zID0gQXBwbGljYXRpb24uZ2V0QmVhbihSb29tRGFvLmNsYXNzKS5nZXRQdWJsaWNSb29tcygpOw0KKwkJCQkvL0ZJWE1FIDIgISEhISBmYWtlIHJvb21zIGFwcG9pbnRtZW50TG9naWMuZ2V0VG9kYXlzQXBwb2ludG1lbnRzRm9yVXNlcih1c2Vyc19pZCk7DQorCQkJCXJvb21zID0gbmV3IEFycmF5TGlzdDxSb29tPigpOw0KKwkJCQlicmVhazsNCisJCQljYXNlIHByaXZhdGVUYWJCdXR0b246DQorCQkJCXRpdGxlID0gNzc5TDsNCisJCQkJZGVzYyA9IDc4MEw7DQorCQkJCS8vRklYTUUgZ2V0Um9vbXNPcmdhbmlzYXRpb25CeU9yZ2FuaXNhdGlvbklkDQorCQkJCXJvb21zID0gbmV3IEFycmF5TGlzdDxSb29tPigpOw0KKwkJCQlicmVhazsNCisJCQljYXNlIHB1YmxpY1RhYkJ1dHRvbjoNCisJCQlkZWZhdWx0Og0KKwkJCQl0aXRsZSA9IDc3N0w7DQorCQkJCWRlc2MgPSA3NzhMOw0KKwkJCQlyb29tcyA9IEFwcGxpY2F0aW9uLmdldEJlYW4oUm9vbURhby5jbGFzcykuZ2V0UHVibGljUm9vbXMoKTsNCisJCQkJYnJlYWs7DQorCQl9DQorCQlhZGQobmV3IExhYmVsKCJ0aXRsZSIsIFdlYlNlc3Npb24uZ2V0U3RyaW5nKHRpdGxlKSkpOw0KKwkJYWRkKG5ldyBMYWJlbCgiZGVzYyIsIFdlYlNlc3Npb24uZ2V0U3RyaW5nKGRlc2MpKSk7DQorCQlhZGQobmV3IExpc3RWaWV3PFJvb20+KCJsaXN0Iiwgcm9vbXMpIHsNCisJCQlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSA5MTg5MDg1NDc4MzM2MjI0ODkwTDsNCisNCisJCQlAT3ZlcnJpZGUNCisJCQlwcm90ZWN0ZWQgdm9pZCBwb3B1bGF0ZUl0ZW0oTGlzdEl0ZW08Um9vbT4gaXRlbSkgew0KKwkJCQlmaW5hbCBSb29tIHIgPSBpdGVtLmdldE1vZGVsT2JqZWN0KCk7DQorCQkJCWl0ZW0uYWRkKG5ldyBMYWJlbCgicm9vbU5hbWUiLCByLmdldE5hbWUoKSkpOw0KKwkJCQlmaW5hbCBJTW9kZWw8SW50ZWdlcj4gY3VyVXNlcnNNb2RlbCA9IG5ldyBNb2RlbDxJbnRlZ2VyPihBcHBsaWNhdGlvbi5nZXRCZWFuKFNlc3Npb25NYW5hZ2VyLmNsYXNzKS5nZXRDbGllbnRMaXN0QnlSb29tKHIuZ2V0Um9vbXNfaWQoKSkuc2l6ZSgpKTsgDQorCQkJCWZpbmFsIExhYmVsIGN1clVzZXJzID0gbmV3IExhYmVsKCJjdXJVc2VycyIsIGN1clVzZXJzTW9kZWwpOw0KKwkJCQlpdGVtLmFkZChjdXJVc2Vycy5zZXRPdXRwdXRNYXJrdXBJZCh0cnVlKSk7DQorCQkJCWl0ZW0uYWRkKG5ldyBMYWJlbCgidG90YWxVc2VycyIsIHIuZ2V0TnVtYmVyT2ZQYXJ0aXppcGFudHMoKSkpOw0KKwkJCQlpdGVtLmFkZChuZXcgQWpheExpbms8Vm9pZD4oInJlZnJlc2giKSB7DQorCQkJCQlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAtMzQyNjgxMzc1NTkxNzQ4OTc4N0w7DQorDQorCQkJCQlAT3ZlcnJpZGUNCisJCQkJCXB1YmxpYyB2b2lkIG9uQ2xpY2soQWpheFJlcXVlc3RUYXJnZXQgdGFyZ2V0KSB7DQorCQkJCQkJY3VyVXNlcnNNb2RlbC5zZXRPYmplY3QoQXBwbGljYXRpb24uZ2V0QmVhbihTZXNzaW9uTWFuYWdlci5jbGFzcykuZ2V0Q2xpZW50TGlzdEJ5Um9vbShyLmdldFJvb21zX2lkKCkpLnNpemUoKSk7DQorCQkJCQkJdGFyZ2V0LmFkZChjdXJVc2Vycyk7DQorCQkJCQl9DQorCQkJCX0pOw0KKwkJCX0NCisJCX0pOw0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvZGF0YS9EYXRhVmlld0NvbnRhaW5lci5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9kYXRhL0RhdGFWaWV3Q29udGFpbmVyLmphdmEKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTAzZThiOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvZGF0YS9EYXRhVmlld0NvbnRhaW5lci5qYXZhCkBAIC0wLDAgKzEsNDEgQEAKKy8qDQorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAqIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmRhdGE7DQorDQoraW1wb3J0IGphdmEuaW8uU2VyaWFsaXphYmxlOw0KKw0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5JRGF0YVByb3ZpZGVyRW50aXR5Ow0KK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuY29tcG9uZW50cy5hZG1pbi5TZWFyY2hhYmxlRGF0YVZpZXc7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5odG1sLldlYk1hcmt1cENvbnRhaW5lcjsNCisNCitwdWJsaWMgY2xhc3MgRGF0YVZpZXdDb250YWluZXI8VCBleHRlbmRzIElEYXRhUHJvdmlkZXJFbnRpdHk+IGltcGxlbWVudHMgU2VyaWFsaXphYmxlIHsNCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gLTEwMjc0Nzg5NTQyMjM1Mjc4OTBMOw0KKwlwdWJsaWMgV2ViTWFya3VwQ29udGFpbmVyIGNvbnRhaW5lcjsNCisJcHVibGljIFNlYXJjaGFibGVEYXRhVmlldzxUPiB2aWV3Ow0KKwlwdWJsaWMgT3JkZXJCeUJvcmRlcjxUPltdIG9yZGVyTGlua3M7DQorCQ0KKwlwdWJsaWMgRGF0YVZpZXdDb250YWluZXIoV2ViTWFya3VwQ29udGFpbmVyIGNvbnRhaW5lciwgU2VhcmNoYWJsZURhdGFWaWV3PFQ+IHZpZXcpIHsNCisJCXRoaXMuY29udGFpbmVyID0gY29udGFpbmVyOw0KKwkJdGhpcy52aWV3ID0gdmlldzsNCisJfQ0KKwkNCisJcHVibGljIHZvaWQgc2V0TGlua3MoT3JkZXJCeUJvcmRlcjxUPi4uLiBvcmRlckxpbmtzKSB7DQorCQl0aGlzLm9yZGVyTGlua3MgPSBvcmRlckxpbmtzOw0KKwl9DQorfQ0KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvZGF0YS9PcmRlckJ5Qm9yZGVyLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2RhdGEvT3JkZXJCeUJvcmRlci5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlMTNjMGIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2RhdGEvT3JkZXJCeUJvcmRlci5qYXZhCkBAIC0wLDAgKzEsNTMgQEAKKy8qDQorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQ0KKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQ0KKyAqIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uDQorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQ0KKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUNCisgKiAiTGljZW5zZSIpICsgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2UNCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorICoNCisgKiAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKyAqDQorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLA0KKyAqIHNvZnR3YXJlIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuDQorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZDQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlDQorICogc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZCBsaW1pdGF0aW9ucw0KKyAqIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAqLw0KK3BhY2thZ2Ugb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmRhdGE7DQorDQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLklEYXRhUHJvdmlkZXJFbnRpdHk7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LmFqYXguQWpheFJlcXVlc3RUYXJnZXQ7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LmV4dGVuc2lvbnMuYWpheC5tYXJrdXAuaHRtbC5yZXBlYXRlci5kYXRhLnNvcnQuQWpheEZhbGxiYWNrT3JkZXJCeUJvcmRlcjsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQuZXh0ZW5zaW9ucy5tYXJrdXAuaHRtbC5yZXBlYXRlci5kYXRhLnNvcnQuT3JkZXJCeUxpbmsuQ3NzUHJvdmlkZXI7DQorDQorcHVibGljIGNsYXNzIE9yZGVyQnlCb3JkZXI8VCBleHRlbmRzIElEYXRhUHJvdmlkZXJFbnRpdHk+IGV4dGVuZHMgQWpheEZhbGxiYWNrT3JkZXJCeUJvcmRlcjxTdHJpbmc+IHsNCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gLTg2NzM0MTEwOTkxMjI5NzQzMUw7DQorCXByaXZhdGUgRGF0YVZpZXdDb250YWluZXI8VD4gY29udGFpbmVyOw0KKwkNCisJcHVibGljIE9yZGVyQnlCb3JkZXIoZmluYWwgU3RyaW5nIGlkLCBmaW5hbCBTdHJpbmcgcHJvcGVydHksIERhdGFWaWV3Q29udGFpbmVyPFQ+IGNvbnRhaW5lcikgew0KKwkJc3VwZXIoaWQsIHByb3BlcnR5LCBjb250YWluZXIudmlldy5nZXREYXRhUHJvdmlkZXIoKSwgbmV3IFNvcnRJY29uQ3NzUHJvdmlkZXIoKSk7DQorCQl0aGlzLmNvbnRhaW5lciA9IGNvbnRhaW5lcjsNCisJCXNldE91dHB1dE1hcmt1cElkKHRydWUpOw0KKwl9DQorCQ0KKyAgICBwcm90ZWN0ZWQgdm9pZCBvblNvcnRDaGFuZ2VkKCkgew0KKyAgICAJY29udGFpbmVyLnZpZXcuc2V0Q3VycmVudFBhZ2UoMCk7DQorICAgIH0NCisNCisJQE92ZXJyaWRlDQorCXByb3RlY3RlZCB2b2lkIG9uQWpheENsaWNrKEFqYXhSZXF1ZXN0VGFyZ2V0IHRhcmdldCkgew0KKwkJdGFyZ2V0LmFkZChjb250YWluZXIuY29udGFpbmVyKTsNCisJCXRhcmdldC5hZGQoY29udGFpbmVyLm9yZGVyTGlua3MpOw0KKwl9DQorCQ0KKwlzdGF0aWMgY2xhc3MgU29ydEljb25Dc3NQcm92aWRlciBleHRlbmRzIENzc1Byb3ZpZGVyPFN0cmluZz4gew0KKwkJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gNjAxNzgyMzEyNTA1ODY4ODdMOw0KKw0KKwkJcHVibGljIFNvcnRJY29uQ3NzUHJvdmlkZXIoKSB7DQorCQkJc3VwZXIoInVpLWljb24gdWktaWNvbi1jYXJhdC0xLW4gc29ydC1pY29uIiwgInVpLWljb24gdWktaWNvbi1jYXJhdC0xLXMgc29ydC1pY29uIiwgInVpLWljb24gdWktaWNvbi1jYXJhdC0yLW4tcyBzb3J0LWljb24iKTsNCisJCX0NCisJfQ0KK30NCmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL2RhdGEvU2VhcmNoYWJsZURhdGFQcm92aWRlci5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9kYXRhL1NlYXJjaGFibGVEYXRhUHJvdmlkZXIuamF2YQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTYzOGE3Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9kYXRhL1NlYXJjaGFibGVEYXRhUHJvdmlkZXIuamF2YQpAQCAtMCwwICsxLDg1IEBACisvKg0KKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUNCisgKiBvciBtb3JlIGNvbnRyaWJ1dG9yIGxpY2Vuc2UgYWdyZWVtZW50cy4gIFNlZSB0aGUgTk9USUNFIGZpbGUNCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbg0KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUNCisgKiB0byB5b3UgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlDQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlDQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKyAqDQorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisgKg0KKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywNCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbg0KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQ0KKyAqIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQ0KKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMNCisgKiB1bmRlciB0aGUgTGljZW5zZS4NCisgKi8NCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5kYXRhOw0KKw0KK2ltcG9ydCBqYXZhLnV0aWwuSXRlcmF0b3I7DQorDQoraW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuSURhdGFQcm92aWRlckRhbzsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMuSURhdGFQcm92aWRlckVudGl0eTsNCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmFwcC5BcHBsaWNhdGlvbjsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQuZXh0ZW5zaW9ucy5tYXJrdXAuaHRtbC5yZXBlYXRlci51dGlsLlNvcnRhYmxlRGF0YVByb3ZpZGVyOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tb2RlbC5Db21wb3VuZFByb3BlcnR5TW9kZWw7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1vZGVsLklNb2RlbDsNCisNCisvKioNCisgKiBwcm92aWRlcyBmdW5jdGlvbiB0byBmaWxsIHBhZ2luZyB0YWJsZXMNCisgKiANCisgKiBAYXV0aG9yIHN3YWduZXINCisgKiANCisgKiBAcGFyYW0gPFQ+DQorICovDQorcHVibGljIGNsYXNzIFNlYXJjaGFibGVEYXRhUHJvdmlkZXI8VCBleHRlbmRzIElEYXRhUHJvdmlkZXJFbnRpdHk+IGV4dGVuZHMgU29ydGFibGVEYXRhUHJvdmlkZXI8VCwgU3RyaW5nPiB7DQorCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDQzMjU3MjExODU4ODg5MDUyMDRMOw0KKwlwcm90ZWN0ZWQgQ2xhc3M8PyBleHRlbmRzIElEYXRhUHJvdmlkZXJEYW88VD4+IGNsYXp6Ow0KKwlwcm90ZWN0ZWQgU3RyaW5nIHNlYXJjaCA9IG51bGw7DQorCQ0KKwlwdWJsaWMgU2VhcmNoYWJsZURhdGFQcm92aWRlcihDbGFzczw/IGV4dGVuZHMgSURhdGFQcm92aWRlckRhbzxUPj4gYykgew0KKwkJdGhpcy5jbGF6eiA9IGM7DQorCX0NCisJDQorCXB1YmxpYyB2b2lkIGRldGFjaCgpIHsNCisJCS8vIGRvZXMgbm90aGluZw0KKwl9DQorDQorCXByb3RlY3RlZCBTdHJpbmcgZ2V0U29ydFN0cigpIHsNCisJCVN0cmluZyByZXN1bHQgPSBudWxsOw0KKwkJaWYgKGdldFNvcnQoKSAhPSBudWxsKSB7DQorCQkJcmVzdWx0ID0gZ2V0U29ydCgpLmdldFByb3BlcnR5KCkgKyAiICIgKyAoZ2V0U29ydCgpLmlzQXNjZW5kaW5nKCkgPyAiQVNDIiA6ICJERVNDIik7DQorCQl9DQorCQlyZXR1cm4gcmVzdWx0Ow0KKwl9DQorCQ0KKwlwdWJsaWMgSXRlcmF0b3I8PyBleHRlbmRzIFQ+IGl0ZXJhdG9yKGxvbmcgZmlyc3QsIGxvbmcgY291bnQpIHsNCisJCXJldHVybiAoc2VhcmNoID09IG51bGwgJiYgZ2V0U29ydCgpID09IG51bGwNCisJCQk/IEFwcGxpY2F0aW9uLmdldEJlYW4oY2xhenopLmdldCgoaW50KWZpcnN0LCAoaW50KWNvdW50KQ0KKwkJCTogQXBwbGljYXRpb24uZ2V0QmVhbihjbGF6eikuZ2V0KHNlYXJjaCwgKGludClmaXJzdCwgKGludCljb3VudCwgZ2V0U29ydFN0cigpKSkuaXRlcmF0b3IoKTsNCisJfQ0KKw0KKwlwdWJsaWMgbG9uZyBzaXplKCkgew0KKwkJcmV0dXJuIHNlYXJjaCA9PSBudWxsDQorCQkJCT8gQXBwbGljYXRpb24uZ2V0QmVhbihjbGF6eikuY291bnQoKQ0KKwkJCQk6IEFwcGxpY2F0aW9uLmdldEJlYW4oY2xhenopLmNvdW50KHNlYXJjaCk7DQorCX0NCisNCisJcHVibGljIElNb2RlbDxUPiBtb2RlbChUIG9iamVjdCkgew0KKwkJcmV0dXJuIG5ldyBDb21wb3VuZFByb3BlcnR5TW9kZWw8VD4ob2JqZWN0KTsNCisJfQ0KKw0KKwlwdWJsaWMgdm9pZCBzZXRTZWFyY2goU3RyaW5nIHNlYXJjaCkgew0KKwkJaWYgKHNlYXJjaCAhPSBudWxsICYmICFzZWFyY2gudHJpbSgpLmlzRW1wdHkoKSkgew0KKwkJCXRoaXMuc2VhcmNoID0gc2VhcmNoLnRyaW0oKTsNCisJCX0gZWxzZSB7DQorCQkJdGhpcy5zZWFyY2ggPSBudWxsOw0KKwkJfQ0KKwl9DQorCQ0KKwlwdWJsaWMgU3RyaW5nIGdldFNlYXJjaCgpIHsNCisJCXJldHVybiBzZWFyY2g7DQorCX0NCit9DQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9wYWdlcy9CYXNlUGFnZS5odG1sIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9wYWdlcy9CYXNlUGFnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2MTllMzEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL3BhZ2VzL0Jhc2VQYWdlLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPCFET0NUWVBFIGh0bWw+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8aHRtbCB4bWxuczp3aWNrZXQ9Imh0dHA6Ly93aWNrZXQuYXBhY2hlLm9yZyIgd2lja2V0OmlkPSJodG1sIj4KKwk8aGVhZD4KKwkJPG1ldGEgaHR0cC1lcXVpdj0iWC1VQS1Db21wYXRpYmxlIiBjb250ZW50PSJJRT1lZGdlLGNocm9tZT0xIi8+CisJCTxsaW5rIHJlbD0ic2hvcnRjdXQgaWNvbiIgaHJlZj0iZmF2aWNvbi5pY28iIHR5cGU9ImltYWdlL3gtaWNvbiIvPgorCQk8dGl0bGUgd2lja2V0OmlkPSJwYWdlVGl0bGUiPlt0aXRsZV08L3RpdGxlPgorCQk8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3Mvb3Blbm1lZXRpbmdzLWZvcm1zLmNzcyIvPgorCTwvaGVhZD4KKwk8Ym9keT4KKwkJPGRpdiB3aWNrZXQ6aWQ9ImhlYWRlciI+PC9kaXY+CisJCTx3aWNrZXQ6Y2hpbGQgLz4KKwk8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9wYWdlcy9CYXNlUGFnZS5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9wYWdlcy9CYXNlUGFnZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0MDc0YmIKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL3BhZ2VzL0Jhc2VQYWdlLmphdmEKQEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIucGFnZXM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLmRhby5Db25maWd1cmF0aW9uRGFvOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnBlcnNpc3RlbmNlLmJlYW5zLmxhbmcuRmllbGRMYW5ndWFnZTsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuYXBwLkFwcGxpY2F0aW9uOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5hcHAuV2ViU2Vzc2lvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuY29tcG9uZW50cy5IZWFkZXJQYW5lbDsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5BdHRyaWJ1dGVNb2RpZmllcjsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaGVhZC5JSGVhZGVyUmVzcG9uc2U7CitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmhlYWQuSmF2YVNjcmlwdEhlYWRlckl0ZW07CitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuVHJhbnNwYXJlbnRXZWJNYXJrdXBDb250YWluZXI7CitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuV2ViUGFnZTsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5iYXNpYy5MYWJlbDsKKworcHVibGljIGFic3RyYWN0IGNsYXNzIEJhc2VQYWdlIGV4dGVuZHMgV2ViUGFnZSB7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gLTYyMzc5MTc3ODI0MzM0MTI0OTZMOworCisJcHVibGljIEJhc2VQYWdlKCkgeworCQlTdHJpbmcgYXBwTmFtZSA9IEFwcGxpY2F0aW9uLmdldEJlYW4oQ29uZmlndXJhdGlvbkRhby5jbGFzcykuZ2V0QXBwTmFtZSgpOworCisJCUZpZWxkTGFuZ3VhZ2UgbGFuZyA9IFdlYlNlc3Npb24uZ2V0TGFuZ3VhZ2VPYmooKTsKKwkJU3RyaW5nIGNvZGUgPSBsYW5nLmdldENvZGUoKTsKKwkJYWRkKG5ldyBUcmFuc3BhcmVudFdlYk1hcmt1cENvbnRhaW5lcigiaHRtbCIpCisJICAgIAkuYWRkKG5ldyBBdHRyaWJ1dGVNb2RpZmllcigieG1sOmxhbmciLCBjb2RlKSkKKwkgICAgCS5hZGQobmV3IEF0dHJpYnV0ZU1vZGlmaWVyKCJsYW5nIiwgY29kZSkpCisJICAgIAkuYWRkKG5ldyBBdHRyaWJ1dGVNb2RpZmllcigiZGlyIiwgQm9vbGVhbi5UUlVFLmVxdWFscyhsYW5nLmdldFJ0bCgpKSA/ICJydGwiIDogImx0ciIpKSk7IAorCQlhZGQobmV3IExhYmVsKCJwYWdlVGl0bGUiLCBhcHBOYW1lKSk7CisJCWFkZChuZXcgSGVhZGVyUGFuZWwoImhlYWRlciIsIGFwcE5hbWUpKTsKKwl9CisJCisJQE92ZXJyaWRlCisJcHVibGljIHZvaWQgcmVuZGVySGVhZChJSGVhZGVyUmVzcG9uc2UgcmVzcG9uc2UpIHsKKwkJcmVzcG9uc2UucmVuZGVyKEphdmFTY3JpcHRIZWFkZXJJdGVtLmZvclJlZmVyZW5jZShBcHBsaWNhdGlvbi5nZXQoKQorCQkJCS5nZXRKYXZhU2NyaXB0TGlicmFyeVNldHRpbmdzKCkuZ2V0SlF1ZXJ5UmVmZXJlbmNlKCkpKTsKKwkJcmVzcG9uc2UucmVuZGVyKEphdmFTY3JpcHRIZWFkZXJJdGVtLmZvclVybCgianMvanF1ZXJ5LXVpLTEuOS4wLmN1c3RvbS5taW4uanMiLCAianF1ZXJ5LXVpIikpOworCQlzdXBlci5yZW5kZXJIZWFkKHJlc3BvbnNlKTsKKwl9Cit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL3BhZ2VzL01haW5QYWdlLmh0bWwgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL3BhZ2VzL01haW5QYWdlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVmYTVjMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvcGFnZXMvTWFpblBhZ2UuaHRtbApAQCAtMCwwICsxLDY3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLQorICBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lCisgIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlCisgIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgIAorICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgICAgCSAgCisgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywKKyAgc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAgIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZQorICBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgIHVuZGVyIHRoZSBMaWNlbnNlLgorICAKKy0tPgorPGh0bWwgeG1sbnM6d2lja2V0PSJodHRwOi8vd2lja2V0LmFwYWNoZS5vcmciPgorCTx3aWNrZXQ6aGVhZD4KKwkJPGxpbmsgbWVkaWE9InNjcmVlbiIgdHlwZT0idGV4dC9jc3MiIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iY3NzL3RoZW1lLmNzcyIvPgorCQkKKwkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianMvanF1ZXJ5LXVpLTEuOS4wLmN1c3RvbS5taW4uanMiPjwvc2NyaXB0PgorCQk8bGluayBtZWRpYT0ic2NyZWVuIiB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJjc3MvanF1ZXJ5LXVpLTEuOS4wLmN1c3RvbS5taW4uY3NzIi8+CisJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwkJCWZ1bmN0aW9uIHNob3dCdXN5SW5kaWNhdG9yKCkgeworCQkJCSQoJyNidXN5X2luZGljYXRvcicpLnNob3coKTsKKwkJCX0KKwkJCWZ1bmN0aW9uIGhpZGVCdXN5SW5kaWNhdG9yKCkgeworCQkJCSQoJyNidXN5X2luZGljYXRvcicpLmhpZGUoKTsKKwkJCX0KKwkJCWZ1bmN0aW9uIHNob3dBYm91dCgpIHsKKwkJCQkkKCcjYWJvdXREaWFsb2cnKS5kaWFsb2coeworCQkJCQljbG9zZU9uRXNjYXBlOiB0cnVlCisJCQkJCSwgYXV0b09wZW46IGZhbHNlCisJCQkJCSwgcmVzaXphYmxlOiBmYWxzZQorCQkJCQksIHdpZHRoOiA0MDAKKwkJCQkJLCBtb2RhbDogdHJ1ZQorCQkJCX0pOworCQkJCSQoJyNhYm91dERpYWxvZycpLmRpYWxvZygnb3BlbicpOworCQkJfQorCQk8L3NjcmlwdD4KKwk8L3dpY2tldDpoZWFkPgorCTx3aWNrZXQ6ZXh0ZW5kPgorCQk8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CisJCQkkKGZ1bmN0aW9uKCkgeworCQkJCVdpY2tldC5FdmVudC5zdWJzY3JpYmUoJy9hamF4L2NhbGwvZmFpbHVyZScsIGhpZGVCdXN5SW5kaWNhdG9yKTsKKwkJCQlXaWNrZXQuRXZlbnQuc3Vic2NyaWJlKCcvYWpheC9jYWxsL2JlZm9yZScsIHNob3dCdXN5SW5kaWNhdG9yKTsKKwkJCQlXaWNrZXQuRXZlbnQuc3Vic2NyaWJlKCcvYWpheC9jYWxsL3N1Y2Nlc3MnLCBoaWRlQnVzeUluZGljYXRvcik7CisJCQkJV2lja2V0LkV2ZW50LnN1YnNjcmliZSgnL2FqYXgvY2FsbC9jb21wbGV0ZScsIGhpZGVCdXN5SW5kaWNhdG9yKTsKKwkJCX0pOworCQk8L3NjcmlwdD4KKwkJPGRpdiBpZD0idG9wTGlua3MiPjxzcGFuIAorCQkJaWQ9ImNvbnRhY3RzQW5kTWVzc2FnZXMiPjx3aWNrZXQ6b21tZXNzYWdlIGtleT0iMTE4OCIvPjwvc3Bhbj48c3BhbiAKKwkJCWlkPSJwcm9maWxlIj48d2lja2V0Om9tbWVzc2FnZSBrZXk9IjUiLz48L3NwYW4+PHNwYW4gCisJCQlpZD0ibG9nb3V0Ij48YSB3aWNrZXQ6aWQ9ImxvZ291dCI+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIzMTAiLz48L2E+PC9zcGFuPjxzcGFuIAorCQkJaWQ9InJlcG9ydEJ1ZyI+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIyODQiLz48L3NwYW4+PHNwYW4+PGEgCisJCQl3aWNrZXQ6aWQ9ImFib3V0Ij5BYm91dDwvYT48L3NwYW4+PC9kaXY+CisJCTxkaXYgaWQ9ImJ1c3lfaW5kaWNhdG9yIj5Mb2FkaW5nIC4uLjwvZGl2PgorCQk8ZGl2IHdpY2tldDppZD0ibWVudSI+PC9kaXY+CisJCTxkaXYgd2lja2V0OmlkPSJjb250ZW50cyI+PGRpdiB3aWNrZXQ6aWQ9ImNoaWxkIj48L2Rpdj48L2Rpdj4KKwkJPGRpdiB3aWNrZXQ6aWQ9ImNoYXRQYW5lbCI+PC9kaXY+CisJCTxkaXYgd2lja2V0OmlkPSJhYm91dERpYWxvZyIgc3R5bGU9ImRpc3BsYXk6IG5vbmU7Ij48L2Rpdj4KKwk8L3dpY2tldDpleHRlbmQ+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9wYWdlcy9NYWluUGFnZS5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi9wYWdlcy9NYWluUGFnZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkN2UzZTAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL3BhZ2VzL01haW5QYWdlLmphdmEKQEAgLTAsMCArMSw4NSBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIucGFnZXM7CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmFwcC5BcHBsaWNhdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuY29tcG9uZW50cy5Db25maXJtYWJsZUFqYXhMaW5rOworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5jb21wb25lbnRzLk1lbnVQYW5lbDsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuY29tcG9uZW50cy51c2VyLkFib3V0UGFuZWw7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmNvbXBvbmVudHMudXNlci5DaGF0UGFuZWw7CitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQuTWFya3VwQ29udGFpbmVyOworaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LmFqYXguQWpheFJlcXVlc3RUYXJnZXQ7CitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQuYWpheC5tYXJrdXAuaHRtbC5BamF4TGluazsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5hdXRocm9sZXMuYXV0aG9yaXphdGlvbi5zdHJhdGVnaWVzLnJvbGUuYW5ub3RhdGlvbnMuQXV0aG9yaXplSW5zdGFudGlhdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5XZWJNYXJrdXBDb250YWluZXI7CitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQucHJvdG9jb2wud3MuYXBpLldlYlNvY2tldEJlaGF2aW9yOworaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LnByb3RvY29sLndzLmFwaS5tZXNzYWdlLkNsb3NlZE1lc3NhZ2U7CitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQucHJvdG9jb2wud3MuYXBpLm1lc3NhZ2UuQ29ubmVjdGVkTWVzc2FnZTsKK2ltcG9ydCBvcmcucmVkNS5sb2dnaW5nLlJlZDVMb2dnZXJGYWN0b3J5OworaW1wb3J0IG9yZy5zbGY0ai5Mb2dnZXI7CisKK0BBdXRob3JpemVJbnN0YW50aWF0aW9uKCJVU0VSIikKK3B1YmxpYyBjbGFzcyBNYWluUGFnZSBleHRlbmRzIEJhc2VQYWdlIHsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSA2NDIxOTYwNzU5MjE4MTU3OTk5TDsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBMb2dnZXIgbG9nID0gUmVkNUxvZ2dlckZhY3RvcnkuZ2V0TG9nZ2VyKE1haW5QYWdlLmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisJcHJpdmF0ZSBmaW5hbCBNZW51UGFuZWwgbWVudTsKKwkKKwlwdWJsaWMgTWFpblBhZ2UoKSB7CisJCU1hcmt1cENvbnRhaW5lciBjb250ZW50cyA9IG5ldyBXZWJNYXJrdXBDb250YWluZXIoImNvbnRlbnRzIik7CisJCWNvbnRlbnRzLmFkZChuZXcgV2ViTWFya3VwQ29udGFpbmVyKCJjaGlsZCIpKS5zZXRPdXRwdXRNYXJrdXBJZCh0cnVlKS5zZXRNYXJrdXBJZCgiY29udGVudHMiKTsKKwkJYWRkKGNvbnRlbnRzKTsKKwkJbWVudSA9IG5ldyBNZW51UGFuZWwoIm1lbnUiLCBjb250ZW50cyk7CisJCWFkZChtZW51KTsKKwkJYWRkKG5ldyBDb25maXJtYWJsZUFqYXhMaW5rKCJsb2dvdXQiLCA2MzRMKSB7CisJCQlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAtMjk5NDYxMDk4MTA1MzU3MDUzN0w7CisKKwkJCUBPdmVycmlkZQorCQkJcHVibGljIHZvaWQgb25DbGljayhBamF4UmVxdWVzdFRhcmdldCB0YXJnZXQpIHsKKwkJCQlnZXRTZXNzaW9uKCkuaW52YWxpZGF0ZSgpOworCQkJCXNldFJlc3BvbnNlUGFnZShBcHBsaWNhdGlvbi5nZXQoKS5nZXRTaWduSW5QYWdlQ2xhc3MoKSk7CisJCQl9CisJCX0pOworCQlhZGQobmV3IEFqYXhMaW5rPFZvaWQ+KCJhYm91dCIpIHsKKwkJCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IDQwNjUzMzk3MDk5MDUzNjY4NDBMOworCisJCQlAT3ZlcnJpZGUKKwkJCXB1YmxpYyB2b2lkIG9uQ2xpY2soQWpheFJlcXVlc3RUYXJnZXQgdGFyZ2V0KSB7CisJCQkJdGFyZ2V0LmFwcGVuZEphdmFTY3JpcHQoInNob3dBYm91dCgpOyIpOworCQkJfQorCQl9KTsKKwkJYWRkKG5ldyBBYm91dFBhbmVsKCJhYm91dERpYWxvZyIpKTsKKwkJYWRkKG5ldyBDaGF0UGFuZWwoImNoYXRQYW5lbCIpKTsKKwkJYWRkKG5ldyBXZWJTb2NrZXRCZWhhdmlvcigpIHsKKwkJCXByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IC0zMzExOTcwMzI1OTExOTkyOTU4TDsKKworCQkJQE92ZXJyaWRlCisJCQlwcm90ZWN0ZWQgdm9pZCBvbkNvbm5lY3QoQ29ubmVjdGVkTWVzc2FnZSBtZXNzYWdlKSB7CisJCQkJc3VwZXIub25Db25uZWN0KG1lc3NhZ2UpOworCQkJCWxvZy5kZWJ1ZygiV2ViU29ja2V0QmVoYXZpb3I6Om9uQ29ubmVjdCIpOworCQkJfQorCQkJCisJCQlAT3ZlcnJpZGUKKwkJCXByb3RlY3RlZCB2b2lkIG9uQ2xvc2UoQ2xvc2VkTWVzc2FnZSBtZXNzYWdlKSB7CisJCQkJc3VwZXIub25DbG9zZShtZXNzYWdlKTsKKwkJCQlsb2cuZGVidWcoIldlYlNvY2tldEJlaGF2aW9yOjpvbkNsb3NlIik7CisJCQl9CisJCX0pOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvcGFnZXMvYXV0aC9TaWduSW5QYWdlLmh0bWwgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL3BhZ2VzL2F1dGgvU2lnbkluUGFnZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkMGVmOTEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL3BhZ2VzL2F1dGgvU2lnbkluUGFnZS5odG1sCkBAIC0wLDAgKzEsNzMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tCisgIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAgb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgIGRpc3RyaWJ1dGVkIHdpdGggdGhpcyB3b3JrIGZvciBhZGRpdGlvbmFsIGluZm9ybWF0aW9uCisgIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAgdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyAgCisgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgICAJICAKKyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkKKyAgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAgdW5kZXIgdGhlIExpY2Vuc2UuCisgIAorLS0+Cis8aHRtbCB4bWxuczp3aWNrZXQ9Imh0dHA6Ly93aWNrZXQuYXBhY2hlLm9yZyI+CisJPHdpY2tldDpoZWFkPgorCQk8bGluayBtZWRpYT0ic2NyZWVuIiB0eXBlPSJ0ZXh0L2NzcyIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJjc3MvdGhlbWUuY3NzIi8+CisJCTxsaW5rIG1lZGlhPSJzY3JlZW4iIHR5cGU9InRleHQvY3NzIiByZWw9InN0eWxlc2hlZXQiIGhyZWY9ImNzcy9qcXVlcnktdWktMS45LjAuY3VzdG9tLm1pbi5jc3MiLz4KKwkJPHN0eWxlPgorCQkJI2xvZ2luIC51aS1kaWFsb2cgLnVpLWRpYWxvZy10aXRsZWJhci1jbG9zZSB7CisJCQkJZGlzcGxheTogbm9uZTsKKwkJCX0KKwkJCSNsb2dpbiBpbnB1dDpub3QoW3R5cGU9J2NoZWNrYm94J10pIHsKKwkJCQl3aWR0aDogMTcwcHg7CisJCQl9CisJCQkjbG9naW4gaW5wdXQ6CisJCTwvc3R5bGU+CisJPC93aWNrZXQ6aGVhZD4KKwk8d2lja2V0OmV4dGVuZD4KKwkJPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCQkJJChmdW5jdGlvbigpeworCQkJCSQoJyNsb2dpbicpLmRpYWxvZyh7CisJCQkJCWNsb3NlT25Fc2NhcGU6IGZhbHNlCisJCQkJCSwgcmVzaXphYmxlOiBmYWxzZQorCQkJCQksIHdpZHRoOiA0MDAKKwkJCQkJLCBvcGVuOiBmdW5jdGlvbihldmVudCwgdWkpIHsKKwkJCQkJCSQoIi51aS1kaWFsb2ctdGl0bGViYXItY2xvc2UiKS5oaWRlKCk7CisJCQkJCX0KKwkJCQl9KTsKKwkJCQkkKCcjYXJlYScpLnZhbChsb2NhdGlvbi5oYXNoKTsKKwkJCX0pOworCQk8L3NjcmlwdD4KKwkJPGRpdiBpZD0ibG9naW4iIHdpY2tldDpvbW1lc3NhZ2U9InRpdGxlOjEwOCI+CisJCQk8Zm9ybSB3aWNrZXQ6aWQ9InNpZ25pbiI+CisJCQkJPHRhYmxlPgorCQkJCQk8dHI+CisJCQkJCQk8dGQ+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIxMDkiIC8+PC90ZD4KKwkJCQkJCTx0ZD48aW5wdXQgd2lja2V0OmlkPSJsb2dpbiIgdHlwZT0idGV4dCIgdmFsdWU9IiIgLz48L3RkPgorCQkJCQk8L3RyPgorCQkJCQk8dHI+CisJCQkJCQk8dGQ+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIxMTAiIC8+PC90ZD4KKwkJCQkJCTx0ZD48aW5wdXQgd2lja2V0OmlkPSJwYXNzIiB0eXBlPSJwYXNzd29yZCIgdmFsdWU9IiIgLz48L3RkPgorCQkJCQk8L3RyPgorCQkJCQk8dHI+CisJCQkJCQk8dGQ+PC90ZD4KKwkJCQkJCTx0ZD48aW5wdXQgd2lja2V0OmlkPSJyZW1lbWJlck1lIiB0eXBlPSJjaGVja2JveCIgLz48bGFiZWwgd2lja2V0OmZvcj0icmVtZW1iZXJNZSI+PHdpY2tldDpvbW1lc3NhZ2Uga2V5PSIyODgiIC8+PC9sYWJlbD48L3RkPgorCQkJCQk8L3RyPgorCQkJCQk8dHI+CisJCQkJCQk8dGQgYWxpZ249InJpZ2h0IiBjb2xzcGFuPSIyIj48aW5wdXQgdHlwZT0ic3VibWl0IiB3aWNrZXQ6b21tZXNzYWdlPSJ2YWx1ZToxMTIiLz48L3RkPgorCQkJCQk8L3RyPgorCQkJCTwvdGFibGU+CisJCQkJPHNwYW4gd2lja2V0OmlkPSJmZWVkYmFjayI+PC9zcGFuPgorCQkJCTxpbnB1dCB3aWNrZXQ6aWQ9ImFyZWEiIHR5cGU9ImhpZGRlbiIgdmFsdWU9IiIgLz4KKwkJCTwvZm9ybT4KKwkJPC9kaXY+CisJPC93aWNrZXQ6ZXh0ZW5kPgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy93ZWIvcGFnZXMvYXV0aC9TaWduSW5QYWdlLmphdmEgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL3BhZ2VzL2F1dGgvU2lnbkluUGFnZS5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzMjVkNDUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL3BhZ2VzL2F1dGgvU2lnbkluUGFnZS5qYXZhCkBAIC0wLDAgKzEsMTA4IEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLndlYi5wYWdlcy5hdXRoOworCitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLmFwcC5BcHBsaWNhdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIuYXBwLldlYlNlc3Npb247CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Mud2ViLnBhZ2VzLkJhc2VQYWdlOworaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LlJlc3RhcnRSZXNwb25zZUV4Y2VwdGlvbjsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5hdXRoZW50aWNhdGlvbi5JQXV0aGVudGljYXRpb25TdHJhdGVneTsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5mb3JtLkNoZWNrQm94OworaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5odG1sLmZvcm0uSGlkZGVuRmllbGQ7CitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQubWFya3VwLmh0bWwuZm9ybS5QYXNzd29yZFRleHRGaWVsZDsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5mb3JtLlJlcXVpcmVkVGV4dEZpZWxkOworaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1hcmt1cC5odG1sLmZvcm0uU3RhdGVsZXNzRm9ybTsKK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5tYXJrdXAuaHRtbC5wYW5lbC5GZWVkYmFja1BhbmVsOworaW1wb3J0IG9yZy5hcGFjaGUud2lja2V0Lm1vZGVsLlByb3BlcnR5TW9kZWw7CitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQucmVxdWVzdC5tYXBwZXIucGFyYW1ldGVyLlBhZ2VQYXJhbWV0ZXJzOworCitwdWJsaWMgY2xhc3MgU2lnbkluUGFnZSBleHRlbmRzIEJhc2VQYWdlIHsKKwlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSAtMzg0MzU3MTY1NzA2NjE2NzU5Mkw7CisJCisJcHVibGljIFNpZ25JblBhZ2UoUGFnZVBhcmFtZXRlcnMgcCkgeworCQl0aGlzKCk7CisJfQorCQorCXB1YmxpYyBTaWduSW5QYWdlKCkgeworCQlhZGQobmV3IFNpZ25JbkZvcm0oInNpZ25pbiIpKTsKKwl9CisJCisJY2xhc3MgU2lnbkluRm9ybSBleHRlbmRzIFN0YXRlbGVzc0Zvcm08Vm9pZD4geworCQlwcml2YXRlIHN0YXRpYyBmaW5hbCBsb25nIHNlcmlhbFZlcnNpb25VSUQgPSA0MDc5OTM5NDk3MTU0Mjc4ODIyTDsKKyAgICAgICAgcHJpdmF0ZSBTdHJpbmcgcGFzc3dvcmQ7CisgICAgICAgIHByaXZhdGUgU3RyaW5nIGxvZ2luOworICAgICAgICBwcml2YXRlIFN0cmluZyBhcmVhID0gIiI7CisgICAgICAgIHByaXZhdGUgYm9vbGVhbiByZW1lbWJlck1lID0gZmFsc2U7CisKKwkJcHVibGljIFNpZ25JbkZvcm0oU3RyaW5nIGlkKSB7CisJCQlzdXBlcihpZCk7CisJCQkKKwkJCWlmIChXZWJTZXNzaW9uLmdldCgpLmlzU2lnbmVkSW4oKSkgeworCQkJCWFscmVhZHlMb2dnZWRJbigpOworCQkJfSBlbHNlIHsKKwkJCQlJQXV0aGVudGljYXRpb25TdHJhdGVneSBzdHJhdGVneSA9IGdldEFwcGxpY2F0aW9uKCkuZ2V0U2VjdXJpdHlTZXR0aW5ncygpLmdldEF1dGhlbnRpY2F0aW9uU3RyYXRlZ3koKTsKKwkJCQkvLyBnZXQgdXNlcm5hbWUgYW5kIHBhc3N3b3JkIGZyb20gcGVyc2lzdGVuY2Ugc3RvcmUKKwkJCQlTdHJpbmdbXSBkYXRhID0gc3RyYXRlZ3kubG9hZCgpOworCisJCQkJaWYgKChkYXRhICE9IG51bGwpICYmIChkYXRhLmxlbmd0aCA+IDEpKSB7CisJCQkJCS8vIHRyeSB0byBzaWduIGluIHRoZSB1c2VyCisJCQkJCWlmIChXZWJTZXNzaW9uLmdldCgpLnNpZ25JbihkYXRhWzBdLCBkYXRhWzFdKSkgeworCQkJCQkJbG9naW4gPSBkYXRhWzBdOworCQkJCQkJcGFzc3dvcmQgPSBkYXRhWzFdOworCisJCQkJCQlhbHJlYWR5TG9nZ2VkSW4oKTsKKwkJCQkJfSBlbHNlIHsKKwkJCQkJCS8vIHRoZSBsb2FkZWQgY3JlZGVudGlhbHMgYXJlIHdyb25nLiBlcmFzZSB0aGVtLgorCQkJCQkJc3RyYXRlZ3kucmVtb3ZlKCk7CisJCQkJCX0KKwkJCQl9CisJCQl9CisJCQlhZGQobmV3IEZlZWRiYWNrUGFuZWwoImZlZWRiYWNrIikpOworCQkJYWRkKG5ldyBSZXF1aXJlZFRleHRGaWVsZDxTdHJpbmc+KCJsb2dpbiIsIG5ldyBQcm9wZXJ0eU1vZGVsPFN0cmluZz4odGhpcywgImxvZ2luIikpKTsKKwkJCWFkZChuZXcgUGFzc3dvcmRUZXh0RmllbGQoInBhc3MiLCBuZXcgUHJvcGVydHlNb2RlbDxTdHJpbmc+KHRoaXMsICJwYXNzd29yZCIpKS5zZXRSZXNldFBhc3N3b3JkKHRydWUpKTsKKwkJCWFkZChuZXcgQ2hlY2tCb3goInJlbWVtYmVyTWUiLCBuZXcgUHJvcGVydHlNb2RlbDxCb29sZWFuPih0aGlzLCAicmVtZW1iZXJNZSIpKS5zZXRPdXRwdXRNYXJrdXBJZCh0cnVlKSk7CisJCQlhZGQobmV3IEhpZGRlbkZpZWxkPFN0cmluZz4oImFyZWEiLCBuZXcgUHJvcGVydHlNb2RlbDxTdHJpbmc+KHRoaXMsICJhcmVhIikpCisJCQkJCS5zZXRNYXJrdXBJZCgiYXJlYSIpCisJCQkJCS5zZXRPdXRwdXRNYXJrdXBJZCh0cnVlKSk7CisJCX0KKworCQlwcml2YXRlIHZvaWQgYWxyZWFkeUxvZ2dlZEluKCkgeworCQkJLy8gbG9nb24gc3VjY2Vzc2Z1bC4gQ29udGludWUgdG8gdGhlIG9yaWdpbmFsIGRlc3RpbmF0aW9uCisJCQljb250aW51ZVRvT3JpZ2luYWxEZXN0aW5hdGlvbigpOworCQkJLy8gVXBzLCBubyBvcmlnaW5hbCBkZXN0aW5hdGlvbi4gR28gdG8gdGhlIGhvbWUgcGFnZQorCQkJdGhyb3cgbmV3IFJlc3RhcnRSZXNwb25zZUV4Y2VwdGlvbihBcHBsaWNhdGlvbi5nZXQoKS5nZXRIb21lUGFnZSgpKTsKKwkJfQorCQkKKwkJQE92ZXJyaWRlCisJCXByb3RlY3RlZCB2b2lkIG9uU3VibWl0KCkgeworCQkJSUF1dGhlbnRpY2F0aW9uU3RyYXRlZ3kgc3RyYXRlZ3kgPSBnZXRBcHBsaWNhdGlvbigpLmdldFNlY3VyaXR5U2V0dGluZ3MoKS5nZXRBdXRoZW50aWNhdGlvblN0cmF0ZWd5KCk7CisJCQlpZiAoV2ViU2Vzc2lvbi5nZXQoKS5zaWduSW4obG9naW4sIHBhc3N3b3JkKSkgeworCQkJCVdlYlNlc3Npb24uZ2V0KCkuc2V0QXJlYShhcmVhKTsKKwkgCQkJc2V0UmVzcG9uc2VQYWdlKEFwcGxpY2F0aW9uLmdldCgpLmdldEhvbWVQYWdlKCkpOworCQkJCWlmIChyZW1lbWJlck1lKSB7CisJCQkJCXN0cmF0ZWd5LnNhdmUobG9naW4sIHBhc3N3b3JkKTsKKwkJCQl9IGVsc2UgeworCQkJCQlzdHJhdGVneS5yZW1vdmUoKTsKKwkJCQl9CisJCQl9IGVsc2UgeworCQkJCXN0cmF0ZWd5LnJlbW92ZSgpOworCQkJfQorCQl9CisJfQorfQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi91dGlsL0FqYXhEb3dubG9hZC5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3dlYi91dGlsL0FqYXhEb3dubG9hZC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxMjAwMGEKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3Mvd2ViL3V0aWwvQWpheERvd25sb2FkLmphdmEKQEAgLTAsMCArMSw5OSBAQAorLyoNCisgKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lDQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlDQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24NCisgKiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4gIFRoZSBBU0YgbGljZW5zZXMgdGhpcyBmaWxlDQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQ0KKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQ0KKyAqIHdpdGggdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisgKg0KKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorICoNCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsDQorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4NCisgKiAiQVMgSVMiIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkNCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUNCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zDQorICogdW5kZXIgdGhlIExpY2Vuc2UuDQorICovDQorcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy53ZWIudXRpbDsNCisNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQuYWpheC5BamF4UmVxdWVzdFRhcmdldDsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQuYmVoYXZpb3IuQWJzdHJhY3RBamF4QmVoYXZpb3I7DQoraW1wb3J0IG9yZy5hcGFjaGUud2lja2V0LnJlcXVlc3QuaGFuZGxlci5yZXNvdXJjZS5SZXNvdXJjZVN0cmVhbVJlcXVlc3RIYW5kbGVyOw0KK2ltcG9ydCBvcmcuYXBhY2hlLndpY2tldC5yZXF1ZXN0LnJlc291cmNlLkNvbnRlbnREaXNwb3NpdGlvbjsNCitpbXBvcnQgb3JnLmFwYWNoZS53aWNrZXQudXRpbC5yZXNvdXJjZS5JUmVzb3VyY2VTdHJlYW07DQorDQorLyoqDQorICogc2VlOiA8YSBocmVmPSJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L1dJQ0tFVC9BSkFYK3VwZGF0ZSthbmQrZmlsZStkb3dubG9hZCtpbitvbmUrYmxvdyI+DQorICogaHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9XSUNLRVQvQUpBWCt1cGRhdGUrYW5kK2ZpbGUrZG93bmxvYWQraW4rb25lK2Jsb3c8L2hyZWY+DQorICogDQorICovDQorcHVibGljIGNsYXNzIEFqYXhEb3dubG9hZCBleHRlbmRzIEFic3RyYWN0QWpheEJlaGF2aW9yIHsNCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMUw7DQorDQorCXByaXZhdGUgYm9vbGVhbiBhZGRBbnRpQ2FjaGU7DQorDQorCXByaXZhdGUgU3RyaW5nIGZpbGVOYW1lOw0KKwlwcml2YXRlIElSZXNvdXJjZVN0cmVhbSByZXNvdXJjZVN0cmVhbTsNCisNCisJcHVibGljIEFqYXhEb3dubG9hZCgpIHsNCisJCXRoaXModHJ1ZSk7DQorCX0NCisNCisJcHVibGljIEFqYXhEb3dubG9hZChib29sZWFuIGFkZEFudGlDYWNoZSkgew0KKwkJc3VwZXIoKTsNCisJCXRoaXMuYWRkQW50aUNhY2hlID0gYWRkQW50aUNhY2hlOw0KKwl9DQorDQorCS8qKg0KKwkgKiBDYWxsIHRoaXMgbWV0aG9kIHRvIGluaXRpYXRlIHRoZSBkb3dubG9hZC4NCisJICovDQorCXB1YmxpYyB2b2lkIGluaXRpYXRlKEFqYXhSZXF1ZXN0VGFyZ2V0IHRhcmdldCkgew0KKwkJU3RyaW5nIHVybCA9IGdldENhbGxiYWNrVXJsKCkudG9TdHJpbmcoKTsNCisNCisJCWlmIChhZGRBbnRpQ2FjaGUpIHsNCisJCQl1cmwgPSB1cmwgKyAodXJsLmNvbnRhaW5zKCI/IikgPyAiJiIgOiAiPyIpOw0KKwkJCXVybCA9IHVybCArICJhbnRpQ2FjaGU9IiArIFN5c3RlbS5jdXJyZW50VGltZU1pbGxpcygpOw0KKwkJfQ0KKw0KKwkJLy8gdGhlIHRpbWVvdXQgaXMgbmVlZGVkIHRvIGxldCBXaWNrZXQgcmVsZWFzZSB0aGUgY2hhbm5lbA0KKwkJdGFyZ2V0LmFwcGVuZEphdmFTY3JpcHQoInNldFRpbWVvdXQoXCJ3aW5kb3cubG9jYXRpb24uaHJlZj0nIiArIHVybA0KKwkJCQkrICInXCIsIDEwMCk7Iik7DQorCX0NCisNCisJcHVibGljIHZvaWQgb25SZXF1ZXN0KCkgew0KKwkJUmVzb3VyY2VTdHJlYW1SZXF1ZXN0SGFuZGxlciBoYW5kbGVyID0gbmV3IFJlc291cmNlU3RyZWFtUmVxdWVzdEhhbmRsZXIoDQorCQkJCWdldFJlc291cmNlU3RyZWFtKCksIGdldEZpbGVOYW1lKCkpOw0KKwkJaGFuZGxlci5zZXRDb250ZW50RGlzcG9zaXRpb24oQ29udGVudERpc3Bvc2l0aW9uLkFUVEFDSE1FTlQpOw0KKwkJZ2V0Q29tcG9uZW50KCkuZ2V0UmVxdWVzdEN5Y2xlKCkuc2NoZWR1bGVSZXF1ZXN0SGFuZGxlckFmdGVyQ3VycmVudCgNCisJCQkJaGFuZGxlcik7DQorCX0NCisNCisJLyoqDQorCSAqIE92ZXJyaWRlIHRoaXMgbWV0aG9kIGZvciBhIGZpbGUgbmFtZSB3aGljaCB3aWxsIGxldCB0aGUgYnJvd3NlciBwcm9tcHQNCisJICogd2l0aCBhIHNhdmUvb3BlbiBkaWFsb2cuDQorCSAqIA0KKwkgKiBAc2VlIFJlc291cmNlU3RyZWFtUmVxdWVzdFRhcmdldCNnZXRGaWxlTmFtZSgpDQorCSAqLw0KKwlwcm90ZWN0ZWQgU3RyaW5nIGdldEZpbGVOYW1lKCkgew0KKwkJcmV0dXJuIHRoaXMuZmlsZU5hbWU7DQorCX0NCisNCisJcHVibGljIHZvaWQgc2V0RmlsZU5hbWUoU3RyaW5nIGZpbGVOYW1lKSB7DQorCQl0aGlzLmZpbGVOYW1lID0gZmlsZU5hbWU7DQorCX0NCisNCisJLyoqDQorCSAqIEhvb2sgbWV0aG9kIHByb3ZpZGluZyB0aGUgYWN0dWFsIHJlc291cmNlIHN0cmVhbS4NCisJICovDQorCXByb3RlY3RlZCBJUmVzb3VyY2VTdHJlYW0gZ2V0UmVzb3VyY2VTdHJlYW0oKSB7DQorCQlyZXR1cm4gcmVzb3VyY2VTdHJlYW07DQorDQorCX0NCisNCisJcHVibGljIHZvaWQgc2V0UmVzb3VyY2VTdHJlYW0oSVJlc291cmNlU3RyZWFtIHJlc291cmNlU3RyZWFtKSB7DQorCQl0aGlzLnJlc291cmNlU3RyZWFtID0gcmVzb3VyY2VTdHJlYW07DQorCX0NCisNCit9DQpkaWZmIC0tZ2l0IGEvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3htbGltcG9ydC9MYW5ndWFnZUltcG9ydC5qYXZhIGIvc3JjL29yZy9hcGFjaGUvb3Blbm1lZXRpbmdzL3htbGltcG9ydC9MYW5ndWFnZUltcG9ydC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2ZDEyYmUKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MveG1saW1wb3J0L0xhbmd1YWdlSW1wb3J0LmphdmEKQEAgLTAsMCArMSw5NiBAQAorLyoKKyAqIExpY2Vuc2VkIHRvIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbiAoQVNGKSB1bmRlciBvbmUKKyAqIG9yIG1vcmUgY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZQorICogZGlzdHJpYnV0ZWQgd2l0aCB0aGlzIHdvcmsgZm9yIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24KKyAqIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLiAgVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUKKyAqIHRvIHlvdSB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUKKyAqICJMaWNlbnNlIikgKyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZQorICogd2l0aCB0aGUgTGljZW5zZS4gIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICoKKyAqICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisgKgorICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLAorICogc29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4KKyAqICJBUyBJUyIgQkFTSVMsIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWQorICogS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4gIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlCisgKiBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kIGxpbWl0YXRpb25zCisgKiB1bmRlciB0aGUgTGljZW5zZS4KKyAqLworcGFja2FnZSBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy54bWxpbXBvcnQ7CisKK2ltcG9ydCBqYXZhLmlvLklucHV0U3RyZWFtOworaW1wb3J0IGphdmEudXRpbC5JdGVyYXRvcjsKKworaW1wb3J0IG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLk9wZW5tZWV0aW5nc1ZhcmlhYmxlczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmJhc2ljLkZpZWxkTGFuZ3VhZ2VEYW87CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS5iYXNpYy5GaWVsZE1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MucGVyc2lzdGVuY2UuYmVhbnMubGFuZy5GaWVsZGxhbmd1YWdlc3ZhbHVlczsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy5sYW5nLkZpZWxkdmFsdWVzOworaW1wb3J0IG9yZy5kb200ai5Eb2N1bWVudDsKK2ltcG9ydCBvcmcuZG9tNGouRWxlbWVudDsKK2ltcG9ydCBvcmcuZG9tNGouaW8uU0FYUmVhZGVyOworaW1wb3J0IG9yZy5yZWQ1LmxvZ2dpbmcuUmVkNUxvZ2dlckZhY3Rvcnk7CitpbXBvcnQgb3JnLnNsZjRqLkxvZ2dlcjsKK2ltcG9ydCBvcmcuc3ByaW5nZnJhbWV3b3JrLmJlYW5zLmZhY3RvcnkuYW5ub3RhdGlvbi5BdXRvd2lyZWQ7CisKK3B1YmxpYyBjbGFzcyBMYW5ndWFnZUltcG9ydCB7CisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcigKKwkJCUxhbmd1YWdlSW1wb3J0LmNsYXNzLCBPcGVubWVldGluZ3NWYXJpYWJsZXMud2ViQXBwUm9vdEtleSk7CisKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBGaWVsZE1hbmFnZXIgZmllbGRNYW5hZ2VyOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEZpZWxkTGFuZ3VhZ2VEYW8gZmllbGRMYW5ndWFnZURhb0ltcGw7CisKKwlwdWJsaWMgTG9uZyBhZGRMYW5ndWFnZUJ5RG9jdW1lbnQoTG9uZyBsYW5ndWFnZV9pZCwgSW5wdXRTdHJlYW0gaXMpCisJCQl0aHJvd3MgRXhjZXB0aW9uIHsKKworCQkvLyByZXR1cm4gbnVsbCBpZiBubyBsYW5ndWFnZSBhdmFpbGlibGUKKwkJaWYgKGZpZWxkTGFuZ3VhZ2VEYW9JbXBsLmdldEZpZWxkTGFuZ3VhZ2VCeUlkKGxhbmd1YWdlX2lkKSA9PSBudWxsKSB7CisJCQlyZXR1cm4gbnVsbDsKKwkJfQorCisJCVNBWFJlYWRlciByZWFkZXIgPSBuZXcgU0FYUmVhZGVyKCk7CisJCURvY3VtZW50IGRvY3VtZW50ID0gcmVhZGVyLnJlYWQoaXMpOworCisJCUVsZW1lbnQgcm9vdCA9IGRvY3VtZW50LmdldFJvb3RFbGVtZW50KCk7CisKKwkJZm9yIChAU3VwcHJlc3NXYXJuaW5ncygidW5jaGVja2VkIikKKwkJSXRlcmF0b3I8RWxlbWVudD4gaSA9IHJvb3QuZWxlbWVudEl0ZXJhdG9yKCk7IGkuaGFzTmV4dCgpOykgeworCQkJRWxlbWVudCBpdGVtT2JqZWN0ID0gaS5uZXh0KCk7CisJCQlMb25nIGZpZWxkdmFsdWVzX2lkID0gTG9uZy52YWx1ZU9mKAorCQkJCQlpdGVtT2JqZWN0LmF0dHJpYnV0ZSgiaWQiKS5nZXRUZXh0KCkpLmxvbmdWYWx1ZSgpOworCQkJU3RyaW5nIGZpZWxkTmFtZSA9IGl0ZW1PYmplY3QuYXR0cmlidXRlKCJuYW1lIikuZ2V0VGV4dCgpOworCQkJU3RyaW5nIHZhbHVlID0gaXRlbU9iamVjdC5lbGVtZW50KCJ2YWx1ZSIpLmdldFRleHQoKTsKKwkJCWxvZy5lcnJvcigiQ0hFQ0sgIiArIGxhbmd1YWdlX2lkICsgIiwiICsgZmllbGR2YWx1ZXNfaWQgKyAiLCIKKwkJCQkJKyBmaWVsZE5hbWUgKyAiLCIgKyB2YWx1ZSk7CisJCQl0aGlzLmFkZEZpZWxkVmFsdWVCeUlkKGxhbmd1YWdlX2lkLCBmaWVsZHZhbHVlc19pZCwgZmllbGROYW1lLAorCQkJCQl2YWx1ZSk7CisJCX0KKworCQlyZXR1cm4gbnVsbDsKKwl9CisKKwlwcml2YXRlIHZvaWQgYWRkRmllbGRWYWx1ZUJ5SWQoTG9uZyBsYW5ndWFnZV9pZCwgTG9uZyBmaWVsZHZhbHVlc19pZCwKKwkJCVN0cmluZyBmaWVsZE5hbWUsIFN0cmluZyB2YWx1ZSkgdGhyb3dzIEV4Y2VwdGlvbiB7CisKKwkJRmllbGR2YWx1ZXMgZnYgPSBmaWVsZE1hbmFnZXIuZ2V0RmllbGR2YWx1ZXNCeUlkKGZpZWxkdmFsdWVzX2lkKTsKKworCQlpZiAoZnYgPT0gbnVsbCkgeworCQkJZnYgPSBmaWVsZE1hbmFnZXIuYWRkRmllbGRCeUlkKGZpZWxkTmFtZSwgZmllbGR2YWx1ZXNfaWQpOworCQl9CisKKwkJRmllbGRsYW5ndWFnZXN2YWx1ZXMgZmx2ID0gZmllbGRNYW5hZ2VyLmdldEZpZWxkQnlJZEFuZExhbmd1YWdlKAorCQkJCWZpZWxkdmFsdWVzX2lkLCBsYW5ndWFnZV9pZCk7CisKKwkJaWYgKGZsdiA9PSBudWxsKSB7CisJCQlmaWVsZE1hbmFnZXIuYWRkRmllbGRWYWx1ZUJ5RmllbGRBbmRMYW5ndWFnZShmdiwKKwkJCQkJbGFuZ3VhZ2VfaWQsIHZhbHVlKTsKKwkJfSBlbHNlIHsKKwkJCWZsdi5zZXRWYWx1ZSh2YWx1ZSk7CisJCQlmbHYuc2V0VXBkYXRldGltZShuZXcgamF2YS51dGlsLkRhdGUoKSk7CisJCQlmaWVsZE1hbmFnZXIudXBkYXRlRmllbGRWYWx1ZUJ5RmllbGRBbmRMYW5ndWFnZShmbHYpOworCQl9CisJfQorCit9CmRpZmYgLS1naXQgYS9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MveG1saW1wb3J0L1VzZXJJbXBvcnQuamF2YSBiL3NyYy9vcmcvYXBhY2hlL29wZW5tZWV0aW5ncy94bWxpbXBvcnQvVXNlckltcG9ydC5qYXZhCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxNjllNWYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvb3JnL2FwYWNoZS9vcGVubWVldGluZ3MveG1saW1wb3J0L1VzZXJJbXBvcnQuamF2YQpAQCAtMCwwICsxLDYzIEBACisvKgorICogTGljZW5zZWQgdG8gdGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIChBU0YpIHVuZGVyIG9uZQorICogb3IgbW9yZSBjb250cmlidXRvciBsaWNlbnNlIGFncmVlbWVudHMuICBTZWUgdGhlIE5PVElDRSBmaWxlCisgKiBkaXN0cmlidXRlZCB3aXRoIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgorICogcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuICBUaGUgQVNGIGxpY2Vuc2VzIHRoaXMgZmlsZQorICogdG8geW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZQorICogIkxpY2Vuc2UiKSArICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlCisgKiB3aXRoIHRoZSBMaWNlbnNlLiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsCisgKiBzb2Z0d2FyZSBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbgorICogIkFTIElTIiBCQVNJUywgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZCisgKiBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLiAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUKKyAqIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQgbGltaXRhdGlvbnMKKyAqIHVuZGVyIHRoZSBMaWNlbnNlLgorICovCitwYWNrYWdlIG9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLnhtbGltcG9ydDsKKworaW1wb3J0IGphdmEuaW8uSW5wdXRTdHJlYW07CisKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5PcGVubWVldGluZ3NWYXJpYWJsZXM7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLkVtYWlsTWFuYWdlcjsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLnVzZXIuVXNlck1hbmFnZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3MuZGF0YS51c2VyLmRhby5Vc2Vyc0RhbzsKK2ltcG9ydCBvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5wZXJzaXN0ZW5jZS5iZWFucy51c2VyLlVzZXI7CitpbXBvcnQgb3JnLmFwYWNoZS5vcGVubWVldGluZ3Muc2VydmxldC5vdXRwdXRoYW5kbGVyLkJhY2t1cEltcG9ydENvbnRyb2xsZXI7CitpbXBvcnQgb3JnLnJlZDUubG9nZ2luZy5SZWQ1TG9nZ2VyRmFjdG9yeTsKK2ltcG9ydCBvcmcuc2xmNGouTG9nZ2VyOworaW1wb3J0IG9yZy5zcHJpbmdmcmFtZXdvcmsuYmVhbnMuZmFjdG9yeS5hbm5vdGF0aW9uLkF1dG93aXJlZDsKKworcHVibGljIGNsYXNzIFVzZXJJbXBvcnQgeworCisJcHJpdmF0ZSBzdGF0aWMgZmluYWwgTG9nZ2VyIGxvZyA9IFJlZDVMb2dnZXJGYWN0b3J5LmdldExvZ2dlcigKKwkJCVVzZXJJbXBvcnQuY2xhc3MsIE9wZW5tZWV0aW5nc1ZhcmlhYmxlcy53ZWJBcHBSb290S2V5KTsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBVc2VyTWFuYWdlciB1c2VyTWFuYWdlcjsKKwlAQXV0b3dpcmVkCisJcHJpdmF0ZSBFbWFpbE1hbmFnZXIgZW1haWxNYW5hZ2VtZW50OworCUBBdXRvd2lyZWQKKwlwcml2YXRlIFVzZXJzRGFvIHVzZXJzRGFvOworCUBBdXRvd2lyZWQKKwlwcml2YXRlIEJhY2t1cEltcG9ydENvbnRyb2xsZXIgYmFja3VwQ29udHJvbGxlcjsKKworCXB1YmxpYyBMb25nIGFkZFVzZXJzQnlEb2N1bWVudChJbnB1dFN0cmVhbSBpcykgdGhyb3dzIEV4Y2VwdGlvbiB7CisJCWZvcihVc2VyIHVzIDogYmFja3VwQ29udHJvbGxlci5yZWFkVXNlckxpc3QoaXMsICJ1c2VycyIpKSB7CisJCQkKKwkJCWJvb2xlYW4gbWFpbENoZWNrID0gdHJ1ZTsKKworCQkJaWYgKCFlbWFpbE1hbmFnZW1lbnQuY2hlY2tVc2VyRU1haWwodXMuZ2V0QWRyZXNzZXMoKS5nZXRFbWFpbCgpKSkgeworCQkJCW1haWxDaGVjayA9IGZhbHNlOworCQkJCWxvZy5pbmZvKCJtYWlsQ2hlY2sgPSAiICsgbWFpbENoZWNrKTsKKwkJCX0KKworCQkJLy8gY2hlY2sgZm9yIGR1cGxpY2F0ZSBMb2dpbiBvciBtYWlsOgorCQkJaWYgKHVzZXJzRGFvLmNoZWNrVXNlckxvZ2luKHVzLmdldExvZ2luKCkpICYmIG1haWxDaGVjaykgeworCQkJCXVzZXJNYW5hZ2VyLmFkZFVzZXIodXMpOworCQkJfQorCQl9CisJCXJldHVybiBudWxsOworCX0KK30KZGlmZiAtLWdpdCBhL3NyYy9yZWdpc3Rlcl9tYWlsLnZtIGIvc3JjL3JlZ2lzdGVyX21haWwudm0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk2Yjg3ZAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9yZWdpc3Rlcl9tYWlsLnZtCkBAIC0wLDAgKzEsMzkgQEAKKyMjIE9wZW5NZWV0aW5ncworIyMgYXV0aG9yIHN3YWduZXIKKyMjIDA1LjA0LjIwMDcKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAnLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4nICdodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkJz4KKzwhLS0KK0NvcHlyaWdodCAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK3lvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCitodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKzxodG1sIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJyB4bWw6bGFuZz0nZGUnIGxhbmc9J2RlJz4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMScgLz4KKzwvaGVhZD4KKzxib2R5PgorPGI+JGxhYmVsaWQ1MDY8L2I+PGJyIC8+Cis8YnIgLz4KKzxiciAvPgorPGI+JGxhYmVsaWQ1MDc8L2I+Cis8YnIgLz4KKyRsYWJlbGlkNTA4ICR1c2VybmFtZQorPGJyIC8+CiskbGFiZWxpZDUwOSAkdXNlcnBhc3MKKzxiciAvPgorJGxhYmVsaWQ1MTAgJG1haWwgCis8YnIgLz4KKzxiciAvPgorJGxhYmVsaWQ1MTEKKzxici8+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9zcmMvcmVnaXN0ZXJfdmVyaWZpY2F0aW9uX21haWwudm0gYi9zcmMvcmVnaXN0ZXJfdmVyaWZpY2F0aW9uX21haWwudm0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzRjNjU3NQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9yZWdpc3Rlcl92ZXJpZmljYXRpb25fbWFpbC52bQpAQCAtMCwwICsxLDQ1IEBACisjIyBPcGVuTWVldGluZ3MKKyMjIGF1dGhvciBzd2FnbmVyCisjIyAwNS4wNC4yMDA3Cis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgJy0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOJyAnaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCc+Cis8IS0tCitDb3B5cmlnaHQgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+Cis8aHRtbCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcgeG1sOmxhbmc9J2RlJyBsYW5nPSdkZSc+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9J0NvbnRlbnQtVHlwZScgY29udGVudD0ndGV4dC9odG1sOyBjaGFyc2V0PWlzby04ODU5LTEnIC8+Cis8L2hlYWQ+Cis8Ym9keT4KKzxiPiRsYWJlbGlkNTA2PC9iPjxiciAvPgorPGJyIC8+Cis8YnIgLz4KKzxiPiRsYWJlbGlkNTA3PC9iPgorPGJyIC8+CiskbGFiZWxpZDUwOCAkdXNlcm5hbWUKKzxiciAvPgorJGxhYmVsaWQ1MDkgJHVzZXJwYXNzCis8YnIgLz4KKyRsYWJlbGlkNTEwICRtYWlsIAorPGJyIC8+Cis8YnIgLz4KKyRsYWJlbGlkNjY3IAorPGJyIC8+Cis8QSBIUkVGPSIkdmVyaWZpY2F0aW9uX3VybCI+JGxhYmVsaWQ2Njg8L0E+Cis8YnIvPgorJHZlcmlmaWNhdGlvbl91cmwKKzxiciAvPgorJGxhYmVsaWQ1MTEKKzxici8+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9zcmMvcmVxdWVzdGNvbnRhY3Qudm0gYi9zcmMvcmVxdWVzdGNvbnRhY3Qudm0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjc2M2JjMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9yZXF1ZXN0Y29udGFjdC52bQpAQCAtMCwwICsxLDMxIEBACisjIyBPcGVuTWVldGluZ3MKKyMjIGF1dGhvciBzd2FnbmVyCisjIyAyOS4wOS4yMDEwCis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgJy0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOJyAnaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCc+Cis8IS0tCitDb3B5cmlnaHQgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+Cis8aHRtbCB4bWxucz0naHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCc+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9J0NvbnRlbnQtVHlwZScgY29udGVudD0ndGV4dC9odG1sOyBjaGFyc2V0PXV0Zi04JyAvPgorPC9oZWFkPgorPGJvZHk+CiskbWVzc2FnZQorPGJyLz4KKzxici8+CiskYWNjZXB0X2xpbmsgJGRlbnlfbGluaworPGJyLz4KKyRvcGVubWVldGluZ3NfbGluaworPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvc3JjL3JlcXVlc3Rjb250YWN0Y29uZmlybS52bSBiL3NyYy9yZXF1ZXN0Y29udGFjdGNvbmZpcm0udm0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2ViYmU1OAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9yZXF1ZXN0Y29udGFjdGNvbmZpcm0udm0KQEAgLTAsMCArMSwyNiBAQAorIyMgT3Blbk1lZXRpbmdzCisjIyBhdXRob3Igc3dhZ25lcgorIyMgMjkuMDkuMjAxMAorPCFET0NUWVBFIGh0bWwgUFVCTElDICctLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTicgJ2h0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQnPgorPCEtLQorQ29weXJpZ2h0IDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KK0xpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKK2h0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCitVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCitkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCitTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCitsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorPGh0bWwgeG1sbnM9J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSdDb250ZW50LVR5cGUnIGNvbnRlbnQ9J3RleHQvaHRtbDsgY2hhcnNldD11dGYtOCcgLz4KKzwvaGVhZD4KKzxib2R5PgorJG1lc3NhZ2UKKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL3NyYy9yZXNldFBhc3Mudm0gYi9zcmMvcmVzZXRQYXNzLnZtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlOGYyYzAKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvcmVzZXRQYXNzLnZtCkBAIC0wLDAgKzEsMzAgQEAKKyMjIE9wZW5NZWV0aW5ncworIyMgYXV0aG9yIHN3YWduZXIKKyMjIDE2LjA1LjIwMDcKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAnLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4nICdodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkJz4KKzwhLS0KK0NvcHlyaWdodCAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK3lvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCitodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKzxodG1sIHhtbG5zPSdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJyB4bWw6bGFuZz0nZGUnIGxhbmc9J2RlJz4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0nQ29udGVudC1UeXBlJyBjb250ZW50PSd0ZXh0L2h0bWw7IGNoYXJzZXQ9dXRmLTgnIC8+Cis8L2hlYWQ+Cis8Ym9keT4KKzxiPiRsYWJlbGlkNTEzPC9iPjxiciAvPgorPGI+JGxhYmVsaWQ1MTQ8L2I+PGJyLz4KKzxBIEhSRUY9IiRyZXNldF9saW5rIj4kbGFiZWxpZDUxNTwvQT48QlIvPgorJGxhYmVsaWQ1MTY8QlIvPgorJHJlc2V0X2xpbmsyCis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9zcmMvc2NyZWVuc2hhcmUudm0gYi9zcmMvc2NyZWVuc2hhcmUudm0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzJmNjI0MAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9zY3JlZW5zaGFyZS52bQpAQCAtMCwwICsxLDQ3IEBACis8P3htbCB2ZXJzaW9uPScxLjAnIGVuY29kaW5nPSd1dGYtOCc/PgorPCEtLQorQ29weXJpZ2h0IDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24KK0xpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKK2h0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCitVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCitkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCitTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCitsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy0tPgorPGpubHAgc3BlYz0nMS4wKycgY29kZWJhc2U9JyRjb2RlYmFzZSc+IAorCTxpbmZvcm1hdGlvbj4gCisJCTx0aXRsZT5TY3JlZW4gU2hhcmluZyBBcHBsaWNhdGlvbjwvdGl0bGU+IAorCQk8dmVuZG9yPiRBUFBfTkFNRTwvdmVuZG9yPiAKKwkJPGhvbWVwYWdlPmh0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy88L2hvbWVwYWdlPgorCQk8aWNvbiBocmVmPSJpY29uLmpwZyIgLz4KKwkJPGljb24ga2luZD0ic3BsYXNoIiBocmVmPSJzcGxhc2hpY29uLmpwZyIgLz4KKwkJPGRlc2NyaXB0aW9uPlNjcmVlblZpZXdlciBDbGllbnQgQXBwbGljYXRpb248L2Rlc2NyaXB0aW9uPiAKKwkJPGRlc2NyaXB0aW9uIGtpbmQ9InNob3J0Ij5BIEZpbGUgdG8gZ3JhYiBhIHNjcmVlbiBhbmQgc2VuZCBpdCB0byBhIFNlcnZlcjwvZGVzY3JpcHRpb24+IAorCQk8b2ZmbGluZS1hbGxvd2VkLz4gCisJPC9pbmZvcm1hdGlvbj4KKwk8c2VjdXJpdHk+CisJICAgIDxhbGwtcGVybWlzc2lvbnMvPgorCTwvc2VjdXJpdHk+CQorCTxyZXNvdXJjZXM+IAorCQk8ajJzZSB2ZXJzaW9uPScxLjQrJy8+CiskTElCUkFSSUVTCisgICAgPC9yZXNvdXJjZXM+IAorICAgIDxhcHBsaWNhdGlvbi1kZXNjIG1haW4tY2xhc3M9JyRzdGFydFVwQ2xhc3MnPgorICAgIAk8YXJndW1lbnQ+JHJlZDUtaG9zdDwvYXJndW1lbnQ+IAorICAgIAk8YXJndW1lbnQ+JHJlZDUtYXBwPC9hcmd1bWVudD4gCisgICAgCTxhcmd1bWVudD4kcG9ydDwvYXJndW1lbnQ+IAorICAgIAk8YXJndW1lbnQ+JFBVQkxJQ19TSUQ8L2FyZ3VtZW50PiAgIAorICAgIAk8YXJndW1lbnQ+JExBQkVMU0hBUkVSPC9hcmd1bWVudD4gCisgICAgCTxhcmd1bWVudD4kb3JnYW5pemF0aW9uX2lkPC9hcmd1bWVudD4gCisgICAgCTxhcmd1bWVudD4kZGVmYXVsdF9xdWFsaXR5X3NjcmVlbnNoYXJpbmc8L2FyZ3VtZW50PgorICAgIAk8YXJndW1lbnQ+JHVzZXJfaWQ8L2FyZ3VtZW50PiAgIAorICAgIAk8YXJndW1lbnQ+JGFsbG93UmVjb3JkaW5nPC9hcmd1bWVudD4KKyAgICAJPGFyZ3VtZW50PiRhbGxvd1B1Ymxpc2hpbmc8L2FyZ3VtZW50PgorJEtFWVNUT1JFCisgICAgPC9hcHBsaWNhdGlvbi1kZXNjPiAKKzwvam5scD4gCmRpZmYgLS1naXQgYS9zcmMvdXN1YWxfdGVtcGxhdGUudm0gYi9zcmMvdXN1YWxfdGVtcGxhdGUudm0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY3MWMzNwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy91c3VhbF90ZW1wbGF0ZS52bQpAQCAtMCwwICsxLDExNSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Cis8IS0tCitDb3B5cmlnaHQgMTk5OS0yMDA0IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Cit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCitZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCitXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+Cis8aHRtbD4KKzxoZWFkPgorCis8bWV0YSBodHRwLWVxdWl2PSJjYWNoZS1jb250cm9sIiBjb250ZW50PSJuby1jYWNoZSI+CisKKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KKzxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0iSUU9RW11bGF0ZUlFNyI+Cis8bGluayByZWw9InNob3J0Y3V0IGljb24iIHR5cGU9ImltYWdlL3gtaWNvbiIgaHJlZj0iZmF2aWNvbi5pY28iPgorPG1ldGEgbmFtZT0idmlld3BvcnQiIGNvbnRlbnQ9IndpZHRoPWRldmljZS13aWR0aDsgaW5pdGlhbC1zY2FsZT0xLjA7Ij4KKzx0aXRsZT4kQVBQX05BTUU8L3RpdGxlPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAvLyBJZiBsb2FkZWQgYmFyZSBpbnRvIGEgYnJvd3Nlciwgc2V0IHRoZSBicm93c2VyIHNpemUgdG8gdGhlIGNhbnZhcyBzaXplCisgIGlmICh3aW5kb3cgPT09IHRvcCkgeworICAgIChmdW5jdGlvbiAod2lkdGgsIGhlaWdodCkgeworICAgICAgLy8gQ2YuIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvdmlld3BvcnQvY29tcGF0aWJpbGl0eS5odG1sCisgICAgICBpZiAod2luZG93LmlubmVySGVpZ2h0KSB7CisgICAgICAgIC8vIFNhZGx5LCBpbm5lckhlaWdodC9XaWR0aCBpcyBub3Qgci93IG9uIHNvbWUgYnJvd3NlcnMsIGFuZCByZXNpemVUbyBpcyBmb3Igb3V0ZXJIZWlnaHQvV2lkdGgKKyAgICAgICAgd2luZG93LnJlc2l6ZVRvKHdpZHRoID8gKHdpZHRoICsgd2luZG93Lm91dGVyV2lkdGggLSB3aW5kb3cuaW5uZXJXaWR0aCkgOiB3aW5kb3cub3V0ZXJXaWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCA/IChoZWlnaHQgKyB3aW5kb3cub3V0ZXJIZWlnaHQgLSB3aW5kb3cuaW5uZXJIZWlnaHQpIDogd2luZG93Lm91dGVySGVpZ2h0KTsKKyAgICAgIH0gZWxzZSBpZiAoZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50ICYmIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQpIHsKKyAgICAgICAgaWYgKHdpZHRoKSB7CisgICAgICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoID0gd2lkdGg7CisgICAgICAgIH0KKyAgICAgICAgaWYgKGhlaWdodCkgeworICAgICAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQgPSBoZWlnaHQ7CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGlmICh3aWR0aCkgeworICAgICAgICAgIGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggPSB3aWR0aDsKKyAgICAgICAgfQorICAgICAgICBpZiAoaGVpZ2h0KSB7CisgICAgICAgICAgZG9jdW1lbnQuYm9keS5jbGllbnRIZWlnaHQgPSBoZWlnaHQ7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9KShudWxsLCBudWxsKTsKKyAgfQorPC9zY3JpcHQ+CisgICAgICAgIAorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiCisJc3JjPSJlbWJlZC1jb21wcmVzc2VkLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IgorCXNyYz0ib3Blbm1lZXRpbmdzX2Z1bmN0aW9ucy5qcyI+PC9zY3JpcHQ+CQorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCitmdW5jdGlvbiBnZXRBcHBsZXRTdGF0dXMoKXsKKyAgICByZXR1cm4gZmFsc2U7Cit9CisKKzwvc2NyaXB0PgorCQorPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KK2h0bWwsYm9keSB7IC8qIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvY3NzLzEwMHBlcmNoZWlnaHQuaHRtbCAqLworCWhlaWdodDogMTAwJTsKKwkvKiBwcmV2ZW50IHNjcm9sbGJhcnMgKi8KKwltYXJnaW46IDA7CisJcGFkZGluZzogMDsKKwlib3JkZXI6IDAgbm9uZTsKKwlvdmVyZmxvdzogaGlkZGVuOworfQorCitib2R5IHsKKwliYWNrZ3JvdW5kLWNvbG9yOiAjZmZmZmZmOworfQorCitpbWcgeworCWJvcmRlcjogMCBub25lOworfQorPC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PiAKKworPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorICAgIGx6LmVtYmVkLnN3Zih7dXJsOiAnJFNXRl9VUkwmIzA2MztyZXY9JFJFVklTSU9OJmFtcDskU1dGX1BBUkFNUycsIGFsbG93ZnVsbHNjcmVlbjogJ3RydWUnLCBiZ2NvbG9yOiAnI2ZmZmZmZicsIHdpZHRoOiAnMTAwJScsIGhlaWdodDogJzEwMCUnLCBpZDogJ2x6YXBwJywgYWNjZXNzaWJsZTogJ2ZhbHNlJ30pOworCisgICAgbHouZW1iZWQubHphcHAub25sb2Fkc3RhdHVzID0gZnVuY3Rpb24gbG9hZHN0YXR1cyhwKSB7CisgICAgICAvLyBjYWxsZWQgd2l0aCBhIHBlcmNlbnRhZ2UgKDAtMTAwKSBpbmRpY2F0aW5nIGxvYWQgcHJvZ3Jlc3MKKyAgICB9CisKKyAgICBsei5lbWJlZC5semFwcC5vbmxvYWQgPSBmdW5jdGlvbiBsb2FkZWQoKSB7CisgICAgICAvLyBjYWxsZWQgd2hlbiB0aGlzIGFwcGxpY2F0aW9uIGlzIGRvbmUgbG9hZGluZworICAgIH0KKzwvc2NyaXB0PgorCisKKzwhLS0KKzxkaXYgc3R5bGU9IndpZHRoOiAxMDAlOyBoZWlnaHQ6IDEwMCU7IiBpZD0ibHphcHBDb250YWluZXIiPjxlbWJlZAorCXNyYz0ibWFpbmRlYnVnLmx6eC1EYXRlaWVuL21haW5kZWJ1Zy5sengiIHF1YWxpdHk9ImhpZ2giCisJYmdjb2xvcj0iI2ZmZmZmZiIgd21vZGU9IndpbmRvdyIgYWxsb3dmdWxsc2NyZWVuPSJ0cnVlIiBpZD0ibHphcHAiCisJbmFtZT0ibHphcHAiCisJZmxhc2h2YXJzPSIkU1dGX0ZMQVNIVkFSUyIKKwlzd2xpdmVjb25uZWN0PSJ0cnVlIiBhbGxvd3NjcmlwdGFjY2Vzcz0ic2FtZURvbWFpbiIKKwl0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIKKwlwbHVnaW5zcGFnZT0iaHR0cDovL3d3dy5tYWNyb21lZGlhLmNvbS9nby9nZXRmbGFzaHBsYXllciIKKwlhbGlnbj0ibWlkZGxlIiBoZWlnaHQ9IjEwMCUiIHdpZHRoPSIxMDAlIj48L2Rpdj4KKwkgLS0+CisJPGRpdiBpZD0ibG9hZGluZyIgc3R5bGU9InotaW5kZXg6IDY2NjY2NjsgcG9zaXRpb246IGFic29sdXRlOyB0b3A6IDUwJTsgbGVmdDogNTAlOyI+PGltZyBzcmM9ImltYWdlcy9hamF4LWxvYWRlci5naWYiLz48L2Rpdj4KKzxub3NjcmlwdD5QbGVhc2UgZW5hYmxlIEphdmFTY3JpcHQgaW4gb3JkZXIgdG8gdXNlIHRoaXMKK2FwcGxpY2F0aW9uLjwvbm9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9zcmMveHNkX3RlbXBsYXRlLnZtIGIvc3JjL3hzZF90ZW1wbGF0ZS52bQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjVlNDVhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3hzZF90ZW1wbGF0ZS52bQpAQCAtMCwwICsxLDEwNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0KKyAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgLS0+Cis8eHM6c2NoZW1hIHhtbG5zOnhzPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSIgZWxlbWVudEZvcm1EZWZhdWx0PSJxdWFsaWZpZWQiIAorICAgIHRhcmdldE5hbWVzcGFjZT0iaHR0cDovL3d3dy5sYXN6bG9zeXN0ZW1zLmNvbS8yMDAzLzA1L2x6eCIgeG1sbnM6bHp4PSJodHRwOi8vd3d3Lmxhc3psb3N5c3RlbXMuY29tLzIwMDMvMDUvbHp4Ij4KKyAgPHhzOnNpbXBsZVR5cGUgbmFtZT0iYm9vbGVhbkxpdGVyYWwiPgorICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpib29sZWFuIi8+CisgIDwveHM6c2ltcGxlVHlwZT4KKyAgPHhzOnNpbXBsZVR5cGUgbmFtZT0iY29sb3JMaXRlcmFsIj4KKyAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIi8+CisgIDwveHM6c2ltcGxlVHlwZT4KKyAgPHhzOnNpbXBsZVR5cGUgbmFtZT0ibnVtYmVyTGl0ZXJhbCI+CisgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOmRvdWJsZSIvPgorICA8L3hzOnNpbXBsZVR5cGU+CisgIDx4czpzaW1wbGVUeXBlIG5hbWU9InNpemVMaXRlcmFsIj4KKyAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6ZG91YmxlIj4KKyAgICAgIDx4czptaW5JbmNsdXNpdmUgdmFsdWU9IjAiLz4KKyAgICA8L3hzOnJlc3RyaWN0aW9uPgorICA8L3hzOnNpbXBsZVR5cGU+CisgIDx4czpzaW1wbGVUeXBlIG5hbWU9ImluaGVyaXRhYmxlQm9vbGVhbkxpdGVyYWwiPgorICAgIDx4czp1bmlvbiBtZW1iZXJUeXBlcz0ibHp4OmJvb2xlYW5MaXRlcmFsIj4KKyAgICAgIDx4czpzaW1wbGVUeXBlPgorICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPgorICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaW5oZXJpdCIvPgorICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPgorICAgICAgPC94czpzaW1wbGVUeXBlPgorICAgIDwveHM6dW5pb24+CisgIDwveHM6c2ltcGxlVHlwZT4KKyAgPHhzOnNpbXBsZVR5cGUgbmFtZT0iY29uc3RyYWludCI+CisgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+CisgICAgICA8eHM6cGF0dGVybiB2YWx1ZT0iJChzdHlsZXxwYXRofGltbWVkaWF0ZWx5fG9uY2V8YWx3YXlzKT9cey4qXH0iLz4KKyAgICA8L3hzOnJlc3RyaWN0aW9uPgorICA8L3hzOnNpbXBsZVR5cGU+CisgIDx4czpzaW1wbGVUeXBlIG5hbWU9ImJvb2xlYW4iPgorICAgIDx4czp1bmlvbiBtZW1iZXJUeXBlcz0ibHp4OmJvb2xlYW5MaXRlcmFsIGx6eDpjb25zdHJhaW50Ii8+CisgIDwveHM6c2ltcGxlVHlwZT4KKyAgPHhzOnNpbXBsZVR5cGUgbmFtZT0iYm9vbGVhbk9yTnVsbCI+CisgICAgPHhzOnVuaW9uIG1lbWJlclR5cGVzPSJseng6Ym9vbGVhbiI+CisgICAgICA8eHM6c2ltcGxlVHlwZT4KKyAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4KKyAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im51bGwiLz4KKyAgICAgICAgPC94czpyZXN0cmljdGlvbj4KKyAgICAgIDwveHM6c2ltcGxlVHlwZT4KKyAgICA8L3hzOnVuaW9uPgorICA8L3hzOnNpbXBsZVR5cGU+CisgIDx4czpzaW1wbGVUeXBlIG5hbWU9ImNvbG9yIj4KKyAgICA8eHM6dW5pb24gbWVtYmVyVHlwZXM9Imx6eDpjb2xvckxpdGVyYWwgbHp4OmNvbnN0cmFpbnQiLz4KKyAgPC94czpzaW1wbGVUeXBlPgorICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJzY3JpcHQiPgorICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciLz4KKyAgPC94czpzaW1wbGVUeXBlPgorICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJleHByZXNzaW9uIj4KKyAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIi8+CisgIDwveHM6c2ltcGxlVHlwZT4KKyAgPHhzOnNpbXBsZVR5cGUgbmFtZT0icmVmZXJlbmNlIj4KKyAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIi8+CisgIDwveHM6c2ltcGxlVHlwZT4KKyAgPHhzOnNpbXBsZVR5cGUgbmFtZT0ibnVtYmVyIj4KKyAgICA8eHM6dW5pb24gbWVtYmVyVHlwZXM9Imx6eDpudW1iZXJMaXRlcmFsIGx6eDpjb25zdHJhaW50Ii8+CisgIDwveHM6c2ltcGxlVHlwZT4KKyAgPHhzOnNpbXBsZVR5cGUgbmFtZT0ic2l6ZSI+CisgICAgPHhzOnVuaW9uIG1lbWJlclR5cGVzPSJseng6c2l6ZUxpdGVyYWwgbHp4OmNvbnN0cmFpbnQiLz4KKyAgPC94czpzaW1wbGVUeXBlPgorICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJudW1iZXJFeHByZXNzaW9uIj4KKyAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIi8+CisgIDwveHM6c2ltcGxlVHlwZT4KKyAgPHhzOnNpbXBsZVR5cGUgbmFtZT0ic2l6ZUV4cHJlc3Npb24iPgorICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciLz4KKyAgPC94czpzaW1wbGVUeXBlPgorICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJjc3MiPgorICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciLz4KKyAgPC94czpzaW1wbGVUeXBlPgorICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJvcGFjaXR5Ij4KKyAgICA8eHM6dW5pb24gbWVtYmVyVHlwZXM9Imx6eDpjb25zdHJhaW50Ij4KKyAgICAgIDx4czpzaW1wbGVUeXBlPgorICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6ZG91YmxlIj4KKyAgICAgICAgICA8eHM6bWluSW5jbHVzaXZlIHZhbHVlPSIwLjAiLz4KKyAgICAgICAgICA8eHM6bWF4SW5jbHVzaXZlIHZhbHVlPSIxLjAiLz4KKyAgICAgICAgPC94czpyZXN0cmljdGlvbj4KKyAgICAgIDwveHM6c2ltcGxlVHlwZT4KKyAgICA8L3hzOnVuaW9uPgorICA8L3hzOnNpbXBsZVR5cGU+CisgIDx4czpzaW1wbGVUeXBlIG5hbWU9InBlcmNlbnRhZ2UiPgorICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPgorICAgICAgPHhzOnBhdHRlcm4gdmFsdWU9IihcZCsoLlxkPyl8LlxkKyklIi8+CisgICAgPC94czpyZXN0cmljdGlvbj4KKyAgPC94czpzaW1wbGVUeXBlPgorICAKKyAgI2ZvcmVhY2goICRub2RlIGluICRhbGxOb2Rlcy5nZXRSb290Tm9kZXMoKSApCisgICAgJGFsbEZvbnRzLmdldCgka2V5MSkKKyAgI2VuZAorICAgIAorPC94czpzY2hlbWE+ICAgIApkaWZmIC0tZ2l0IGEvdGVzdC9OZXdGaWxlMi54bWwgYi90ZXN0L05ld0ZpbGUyLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTgzMDc5Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9OZXdGaWxlMi54bWwKQEAgLTAsMCArMSwzOSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8Y2FudmFzIHhtbG5zPSJodHRwOi8vbG9jYWxob3N0L29wZW5sYXN6bG8vbHp4Ig0KKwl4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIg0KKwl4bWxuczpwcm9qZWN0PSJodHRwOi8vbG9jYWxob3N0L29wZW5sYXN6bG8vcHJvamVjdCINCisJeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vbG9jYWxob3N0L29wZW5sYXN6bG8vbHp4IC4uL1dlYkNvbnRlbnQvbHp4LnhzZCANCisJaHR0cDovL2xvY2FsaG9zdC9vcGVubGFzemxvL3Byb2plY3QgLi4vV2ViQ29udGVudC9wcm9qZWN0LnhzZCI+DQorCQ0KKwk8cHJvamVjdDpfcmVjb3JkZXJDbGlja01hc2s+PC9wcm9qZWN0Ol9yZWNvcmRlckNsaWNrTWFzaz4NCisJPHByb2plY3Q6YWN0aXZpdHlMaXN0IHg9IjEyMyI+PC9wcm9qZWN0OmFjdGl2aXR5TGlzdD4NCisNCisJPHZpZXcgbmFtZT0iYXNkIj48L3ZpZXc+DQorICAgIDx2aWV3IG5hbWU9ImFzZGFzZCIgLz4NCisgICAgPHByb2plY3Q6X2NoYXRJbm5lclNtaWx5SWNvbiBuYW1lPSJhc2Rhc2QiIHdpZHRoPSIxMiIgY2xpY2thYmxlPSJmYWxzZSI+PC9wcm9qZWN0Ol9jaGF0SW5uZXJTbWlseUljb24+DQorICAgIDxpbmNsdWRlIGhyZWY9ImluY3ViYXRvci9semNvbWJvYm94Lmx6eCIgLz4NCisgICAgPHZpZXcgYmdjb2xvcj0iYXNkYXdxZSI+DQorPHByb2plY3Q6bGFiZWxUZXh0IG5hbWU9ImFzZGFzZCIgbGFiZWxpZD0iMTIiPjwvcHJvamVjdDpsYWJlbFRleHQ+DQorICAgIDwvdmlldz4NCisgICAgDQorICAgIDwhLS0gDQorICAgIElmIHlvdSB1c2UgbWFpbmRlYnVnLmx6eCwgbWFpbi5senggd2l0aCBkZWJ1Zz10cnVlIGlzIGxvYWRlZC4gDQorICAgIGgua3V6ZSAyMDA4LjMuMjYNCisgICAgSSByZS1hcnJhbmdlZCBpdCBiYWNrIHRvIHRoZSBvbGQgc2V0dXAsDQorICAgIEkgc2VlIHRoYXQgdGhpcyBpbmZvcm1hdGlvbiBpcyBkdXBsaWNhdGVkIGhlcmUsIGJ1dCBJIHdvdWxkIGxpa2UgdG8gDQorICAgIGRpc3RyaWJ1dGUgdHdvIHZlcnNpb25zIG9mIE9wZW5NZWV0aW5ncyBpbiBhIGJpbmFyeSByZWxlYXNlOiANCisgICAgdGhlIG5vcm1hbCBDbGllbnQgYW5kIHRoZSBDbGllbnQgSW5jbHVkaW5nIHRoZSBPcGVuTGFzemxvLURlYnVnLVBsYXllcg0KKyAgICAtc3dhZ25lciAyMDA4LjMuMjgNCistLT4NCisgICANCis8aW5jbHVkZSBocmVmPSJpbmN1YmF0b3IvbHpjb21ib2JveC5sengiIC8+DQorDQorPHByb2plY3Q6c2NyZWVuU2hhcmluZ0NvbnRhaW5lciBuYW1lPSJfc2NyZWVucyIgLz4NCis8cHJvamVjdDpjb25mbWVudWNvbW1hbmQ+PC9wcm9qZWN0OmNvbmZtZW51Y29tbWFuZD4NCisNCis8cHJvamVjdDpzaW1wbGVMYWJlbEJ1dHRvbiA+PC9wcm9qZWN0OnNpbXBsZUxhYmVsQnV0dG9uPg0KKzxub2RlPjwvbm9kZT4NCis8YnV0dG9uPjwvYnV0dG9uPg0KKzx2aWV3IHdpZHRoPSJ3ZXF3ZSI+DQorPC92aWV3PiAgICANCis8L2NhbnZhcz4NCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvbGZjL2F0dHJpYnV0ZS5senggYi90ZXN0L2NvcmUvbGZjL2F0dHJpYnV0ZS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWE4ZjBmMwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9sZmMvYXR0cmlidXRlLmx6eApAQCAtMCwwICsxLDM0IEBACis8bGlicmFyeSB4bWxucz0iaHR0cDovL2xvY2FsaG9zdC9vcGVubGFzemxvL2x6eCIgDQorICAgICAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgDQorICAgICAgICAgICAgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vbG9jYWxob3N0L29wZW5sYXN6bG8vbHp4IC4vLi4vLi4vLi4vbHp4LnhzZCI+DQorICAgICAgICAgICAgDQorPCEtLS0gU2V0cyBhbiBhdHRyaWJ1dGUgb2YgdGhlIG9iamVjdCB0aGF0IGNvbnRhaW5zIGl0LiAtLT4NCis8Y2xhc3MgbmFtZT0iYXR0cmlidXRlIiBleHRlbmRzPSJmYWxzZSI+DQorCTwhLS0tIE9uZSBvZjoNCitjbGFzcw0KKyAgICBUaGUgYXR0cmlidXRlIHdpbGwgYmUgYW4gYXR0cmlidXRlIG9mIHRoZSBjbGFzczsgdG8gcmVmZXIgdG8gaXQsIHlvdSBzYXkgbHouY2xhc3NuYW1lLmF0dHJpYnV0ZW5hbWUgLiANCitpbnN0YW5jZQ0KKyAgICBFYWNoIGluc3RhbmNlIHdpbGwgaGF2ZSBhbiBhdHRyaWJ1dGUgd2l0aCB0aGUgc3BlY2lmaWVkIHByb3BlcnRpZXMgKCBuYW1lICwgdHlwZSAsIHZhbHVlICwgZXRjLikuIA0KKw0KK1lvdSBjYW4gc2V0IGFsbG9jYXRpb24gdG8gY2xhc3MgdG8gZ2V0IHN0YXRpYyBhdHRyaWJ1dGVzLiBTdGF0aWMgcHJvcGVydGllcyBhcmUgYXR0YWNoZWQgdG8gdGhlIGNsYXNzIGl0c2VsZiwgZm9yIGV4YW1wbGUgbHouY2xhc3NuYW1lIC4gLS0+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0iYWxsb2NhdGlvbiIgdHlwZT0ic3RyaW5nIiB2YWx1ZT0iaW5zdGFuY2V8Y2xhc3MiIC8+DQorCTwhLS0tIFRoZSBuYW1lIG9mIHRoZSBhdHRyaWJ1dGUuIC0tPg0KKwk8YXR0cmlidXRlIG5hbWU9Im5hbWUiIHR5cGU9InRva2VuIiByZXF1aXJlZD0idHJ1ZSIvPg0KKwk8IS0tLSBUcnVlIGlmIHRoaXMgaXMgYSByZXF1aXJlZCBhdHRyaWJ1dGUuIC0tPg0KKwk8YXR0cmlidXRlIG5hbWU9InJlcXVpcmVkIiB0eXBlPSJib29sZWFuIiB2YWx1ZT0iZmFsc2UiIC8+DQorCTwhLS0tIFRoZSBDU1MgcHJvcGVydHkgbmFtZSB0aGF0IGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgdmFsdWUgb2YgdGhpcyBhdHRyaWJ1dGUgdW5kZXIgdGhlIGNvbnRyb2wgb2YgYSA8c3R5bGVzaGVldD4gKFNlZSBDaGFwdGVyIDE5LiBDYXNjYWRpbmcgU3R5bGUgU2hlZXRzICkuIHN0eWxlIGNhbiBiZSBhbnkgdmFsaWQgQ1NTIHByb3BlcnR5IG5hbWUsIGFuZCBuZWVkIG5vdCBiZSB0aGUgc2FtZSBhcyB0aGUgYXR0cmlidXRlIG5hbWU7IGZvciBleGFtcGxlIHlvdSBjb3VsZCB1c2UgdGhlIHN0YW5kYXJkIENTUyBwcm9wZXJ0eSBuYW1lIGJhY2tncm91bmQtY29sb3IgYXMgdGhlIHN0eWxlIG9mIHRoZSBiZ2NvbG9yIGF0dHJpYnV0ZS4gV2hlbiBhbiBhdHRyaWJ1dGUgaGFzIGEgc3R5bGUgcHJvcGVydHksIHRoZSB2YWx1ZSBwcm9wZXJ0eSBhY3RzIGFzIHRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgYXR0cmlidXRlOiBpbiB0aGUgYWJzZW5jZSBvZiBhbnkgYXBwbGljYWJsZSBDU1MgcnVsZSBzcGVjaWZ5aW5nIHRoZSBjb3JyZXNwb25kaW5nIHByb3BlcnR5LCB0aGUgYXR0cmlidXRlIHdpbGwgYmUgZ2l2ZW4gdGhlIGRlZmF1bHQgdmFsdWUuIEluIHRoZSBjYXNlIG9mIGR5bmFtaWMgQ1NTLCB0aGUgYXR0cmlidXRlIHdpbGwgcmV2ZXJ0IHRvIHRoZSBkZWZhdWx0IHZhbHVlIGlmIENTUyB3YXMgYXBwbGllZCBhbmQgaXMgcmVtb3ZlZC4gKFNlZSBEeW5hbWljIENTUyAuKSAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJzdHlsZSIgdmFsdWU9InN0cmluZyIvPg0KKwk8IS0tIFRoZSB0eXBlIG9mIHRoZSBhdHRyaWJ1dGUuIA0KKwlQb3NzaWJsZSB2YWx1ZTogICAgImJvb2xlYW4iIHwgImNvbG9yIiB8ICJleHByZXNzaW9uIiB8ICJudW1iZXIiIHwgInNpemUiIHwgInN0cmluZyIgfCAidGV4dCIgfCAiaHRtbCIgDQorCQ0KKwlUaGlzIGRldGVybWluZXMgaG93IHRoZSB2YWx1ZSBpcyBwYXJzZWQuIEF0dHJpYnV0ZXMgb2YgdHlwZSBzdHJpbmcgYXJlIGF1dG9tYXRpY2FsbHkgcXVvdGVkIGlmIHdoZW49ImltbWVkaWF0ZSIsIGZvciBhbnkgb3RoZXIgdmFsdWUgb2Ygd2hlbiwgYSBsaXRlcmFsIHN0cmluZyB3b3VsZCBoYXZlIHRvIGJlIHF1b3RlZCB0byBiZSB1c2VkIGFzIGEgdmFsdWUuIC0tPg0KKwk8YXR0cmlidXRlIG5hbWU9InR5cGUiIHR5cGU9ImV4cHJlc3Npb24iIHZhbHVlPSJzdHJpbmciLz4NCisJPCEtLS0gIFRoZSBpbml0aWFsIHZhbHVlIG9mIHRoZSBhdHRyaWJ1dGUuIFRoZSB0eXBlIG9mIHRoaXMgdmFsdWUgaXMgc3BlY2lmaWVkIGJ5IHRoZSB2YWx1ZSBvZiB0aGUgdHlwZSBhdHRyaWJ1dGU7IGlmIHRoYXQgYXR0cmlidXRlIGlzIG5vdCBwcmVzZW50LCBpdCdzIHRoZSB0eXBlIG9mIHRoaXMgYXR0cmlidXRlIGluIHRoaXMgZWxlbWVudCdzIHRhZy4gVGhlIGF0dHJpYnV0ZSBpcyBnaXZlbiB0aGlzIHZhbHVlIHdoZW4gdGhlIGVsZW1lbnQgaXMgY3JlYXRlZC4gLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0idmFsdWUiIC8+DQorCQ0KKwk8IS0tLSBEZWxlZ2F0ZSB0aGUgZXZlbnQgdG8gYSBtZXRob2Qgb24gY2hhbmdlcyB0aHJvdWdoIHNldEF0dHJpYnV0ZSgnLi4uJywkdmFsdWUpIC0tPg0KKwk8YXR0cmlidXRlIG5hbWU9InNldHRlciIgdmFsdWU9InN0cmluZyIgLz4NCisJDQorPC9jbGFzcz4NCisNCis8L2xpYnJhcnk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2xmYy9hdWRpby5senggYi90ZXN0L2NvcmUvbGZjL2F1ZGlvLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmYxZTYwCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2xmYy9hdWRpby5sengKQEAgLTAsMCArMSwxMyBAQAorPGxpYnJhcnkgeG1sbnM9Imh0dHA6Ly9sb2NhbGhvc3Qvb3Blbmxhc3psby9sengiIA0KKyAgICAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIA0KKyAgICAgICAgICAgIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL2xvY2FsaG9zdC9vcGVubGFzemxvL2x6eCAuLy4uLy4uLy4uL2x6eC54c2QiPg0KKzwhLS0tSW1wb3J0cyBhbiBhdWRpbyBmaWxlLg0KK1tXYXJuaW5nXVRoaXMgdGFnIGlzIG9ic29sZXRlLiBJdHMgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiByZXBsYWNlZCBieSB0aGUgPHJlc291cmNlPiB0YWcuIA0KKyAtLT4NCis8Y2xhc3MgbmFtZT0iYXVkaW8iIGV4dGVuZHM9ImZhbHNlIj4NCisNCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJzcmMiIC8+DQorICAgIA0KKzwvY2xhc3M+DQorDQorPC9saWJyYXJ5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9sZmMvY2FudmFzLmx6eCBiL3Rlc3QvY29yZS9sZmMvY2FudmFzLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOWFhYmMyCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2xmYy9jYW52YXMubHp4CkBAIC0wLDAgKzEsNjYgQEAKKzxsaWJyYXJ5IHhtbG5zPSJodHRwOi8vbG9jYWxob3N0L29wZW5sYXN6bG8vbHp4IiANCisgICAgICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiANCisgICAgICAgICAgICB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly9sb2NhbGhvc3Qvb3Blbmxhc3psby9senggLi8uLi8uLi8uLi9sengueHNkIj4NCis8IS0tLSANCitUaGUgY2FudmFzIGlzIHRoZSBjb250YWluZXIgZm9yIGFsbCB2aWV3cyB3aXRoaW4gYW4gYXBwbGljYXRpb24uDQorDQorVGhlIGx6LmNhbnZhcyBjbGFzcyByZXByZXNlbnRzIHRoZSB2aWV3YWJsZSBhcmVhIG9mIHRoZSBhcHBsaWNhdGlvbi4gVGhlcmUgaXMgb25lIGluc3RhbmNlIG9mIGx6LmNhbnZhcywgbmFtZWQgY2FudmFzLiBUaGUgY2FudmFzIGNvbnRhaW5zIGFsbCB2aWV3cyB3aXRoaW4gYW4gYXBwbGljYXRpb24uDQorDQorVGhlIDxjYW52YXM+IHRhZyBpcyB0aGUgZG9jdW1lbnQgcm9vdCBvZiBhbiBMWlggYXBwbGljYXRpb24gZmlsZS4gSXQgY29udGFpbnMgY2xhc3MsIHJlc291cmNlLCBhbmQgZm9udCBkZWZpbml0aW9ucywgbGlicmFyeSBpbmNsdWRlcywgYW5kIHZpZXcgYW5kIG90aGVyIGluc3RhbmNlcy4NCisNCitTZWUgdGhlIEd1aWRlIGZvciBhIGNvbXBsZXRlIGRpc2N1c3Npb24gb2YgdGhlIDxjYW52YXM+IHRhZy4gDQorIC0tPg0KKzxjbGFzcyBuYW1lPSJjYW52YXMiIGlzUm9vdD0idHJ1ZSIgZXh0ZW5kcz0idmlldyI+DQorDQorCTwhLS0tIFdoZXRoZXIgZnVsbHNjcmVlbiBkaXNwbGF5IHN0YXRlIGlzIHN1cHBvcnRlZCBmb3IgdGhlIFNXRnggcnVudGltZXMuIC0tPg0KKwk8YXR0cmlidXRlIG5hbWU9ImFsbG93ZnVsbHNjcmVlbiIgdHlwZT0iYm9vbGVhbiIvPg0KKwk8IS0tLSAgQSBTdHJpbmcgc3BlY2lmeWluZyB0aGUgZGF0ZSBhbmQgdGltZSBvZiB0aGUgYXBwbGljYXRpb24gYnVpbGQuICIyMDA4LTA5LTEyVDE0OjE1OjEyWiIgLS0+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0iYXBwYnVpbGRkYXRlIiB0eXBlPSJzdHJpbmciLz4NCisgICAgPCEtLS0gICBJZiBwcmVzZW50LCBzcGVjaWZpZXMgdGhlIGRlZmF1bHQgdGltZW91dCBpbiBtaWxsaXNlY29uZHMgZm9yIGRhdGEgbG9hZCByZXF1ZXN0cyAtLT4NCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJkYXRhbG9hZHRpbWVvdXQiIHR5cGU9Im51bWJlciIvPg0KKyAgICA8IS0tLSAgIERpY3Rpb25hcnkgb2YgYWxsIG5hbWVkIGRhdGFzZXRzLiAtLT4NCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJkYXRhc2V0cyIgdHlwZT0ic3RyaW5nIi8+DQorICAgIDwhLS0tIA0KK2RlZmF1bHRkYXRhcHJvdmlkZXIgaXMgYm91bmQgdG8gdGhlIHN5c3RlbSBkZWZhdWx0IERhdGFQcm92aWRlci4NCitCeSBkZWZhdWx0LCB0aGlzIHdpbGwgYmUgYW4gaW5zdGFuY2Ugb2YgTHpIVFRQRGF0YVByb3ZpZGVyLCB3aGljaCB3aWxsIGFsc28gYmUgcG9pbnRlZCB0byBieSB0aGUgY2FudmFzLmh0dHBkYXRhcHJvdmlkZXIuIC0tPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9ImRlZmF1bHRkYXRhcHJvdmlkZXIiIHR5cGU9InN0cmluZyIvPg0KKyAgICA8IS0tLSAgIFdoZXRoZXIgdG8gZW1iZWQgZm9udHMgaW4gdGhlIGNvbXBpbGVkIGFwcGxpY2F0aW9uLiAtLT4NCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJkZWZhdWx0ZGF0YXByb3ZpZGVyIiB0eXBlPSJzdHJpbmciLz4NCisgICAgPCEtLS0gVGhlIGZyYW1lcmF0ZSB0aGF0IHNob3VsZCBiZSB1c2VkIGZvciB0aGlzIGFwcGxpY2F0aW9uIC0tPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9ImZyYW1lcmF0ZSIgdHlwZT0ibnVtYmVyIi8+DQorICAgIDwhLS0tICAgVXNlZCB0byBzd2l0Y2ggaW50byBmdWxsc2NyZWVuIGRpc3BsYXkgbW9kZSBvciBiYWNrIHRvIG5vcm1hbCBkaXNwbGF5LiAtLT4NCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJmdWxsc2NyZWVuIiB0eXBlPSJib29sZWFuIi8+DQorICAgIDwhLS0tICAgDQoraHR0cGRhdGFwcm92aWRlciBpcyBib3VuZCB0byB0aGUgc3lzdGVtIGRlZmF1bHQgSFRUUCBEYXRhUHJvdmlkZXIuDQorVGhpcyB3aWxsIGJlIGFuIGluc3RhbmNlIG9mIEx6SFRUUERhdGFQcm92aWRlciwgd2hpY2ggaW1wbGVtZW50cyBIVFRQIHJlcXVlc3QgdHJhbnNwb3J0LiBUaGUgZGVmYXVsdCB2YWx1ZSBvZiB0aGUgY2FudmFzLmRlZmF1bHRkYXRhcHJvdmlkZXIgaXMgaW5pdGlhbGx5IHNldCB0byBwb2ludCB0byB0aGlzIHNhbWUgb2JqZWN0LiAtLT4NCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJodHRwZGF0YXByb3ZpZGVyIiB0eXBlPSJzdHJpbmciLz4NCisgICAgPCEtLS0gICBBIFN0cmluZyBzcGVjaWZ5aW5nIHRoZSBMUFMgYnVpbGQgcmV2aXNpb24gYW5kIHRoZSBidWlsZCBkaXJlY3Rvcnk6IGUuZy4gIjQwNzUgL1VzZXJzL21heGNhcmxzb24vb3Blbmxhc3psby9sZWdhbHMiIC0tPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9Imxwc2J1aWxkIiB0eXBlPSJzdHJpbmciLz4NCisgICAgPCEtLS0gICBBIFN0cmluZyBzcGVjaWZ5aW5nIHRoZSBkYXRlIGFuZCB0aW1lIG9mIHRoZSBMUFMgYnVpbGQuICIyMDA3LTAzLTA1VDE1OjMzOjQyLTA4MDAiIC0tPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9Imxwc2J1aWxkZGF0ZSIgdHlwZT0ic3RyaW5nIi8+DQorICAgIDwhLS0tICAgcmVsZWFzZSBvZiB0aGUgTFBTIHRoYXQgZ2VuZXJhdGVkIHRoaXMgYXBwbGljYXRpb24gKGZvciAubHpvIGZpbGVzLCB0aGlzIGlzIHRoZSByZWxlYXNlIG9mIHRoZSBzZXJ2ZXIgdGhhdCBnZW5lcmF0ZWQgdGhlIG9wdGltaXplZCBmaWxlLCBub3QgdGhlIG9uZSB0aGF0IHNlcnZlZCBpdCkuIC0tPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9Imxwc3JlbGVhc2UiIHR5cGU9InN0cmluZyIvPg0KKyAgICA8IS0tLSB2ZXJzaW9uIG51bWJlciBvZiB0aGUgTFBTIHRoYXQgZ2VuZXJhdGVkIHRoaXMgYXBwbGljYXRpb24gKGZvciAubHpvIGZpbGVzLCB0aGlzIGlzIHRoZSB2ZXJzaW9uIG51bWJlciBvZiB0aGUgc2VydmVyIHRoYXQgZ2VuZXJhdGVkIHRoZSBvcHRpbWl6ZWQgZmlsZSwgbm90IHRoZSBvbmUgdGhhdCBzZXJ2ZWQgaXQpLiAtLT4NCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJscHN2ZXJzaW9uIiB0eXBlPSJzdHJpbmciLz4NCisgICAgPCEtLS0gICBJZiBwcmVzZW50LCBzcGVjaWZpZXMgdGhlIGRlZmF1bHQgdGltZW91dCBpbiBtaWxsaXNlY29uZHMgZm9yIG1lZGlhIGVycm9ycy4gQW4gZXJyb3Igb2NjdXJzIHdoZW4gbm8gYnl0ZXMgaGF2ZSBiZWVuIHJlY2VpdmVkLiBUaGlzIGlzIHVzZWQgaW4gRmxhc2ggdG8gZGV0ZWN0IG1lZGlhIGxvYWRzIHRoYXQgaGF2ZSBmYWlsZWQgZHVlIHRvIHRoZSBzZWN1cml0eSBwb2xpY3kuIC0tPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9Im1lZGlhZXJyb3J0aW1lb3V0IiB0eXBlPSJudW1iZXIiLz4NCisgICAgPCEtLS0gICBJZiBwcmVzZW50LCBzcGVjaWZpZXMgdGhlIGRlZmF1bHQgdGltZW91dCBpbiBtaWxsaXNlY29uZHMgZm9yIG1lZGlhIGxvYWQgcmVxdWVzdHMgLS0+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibWVkaWFsb2FkdGltZW91dCIgdHlwZT0ibnVtYmVyIi8+DQorICAgIDwhLS0tICAgQSBudW1iZXIgZnJvbSAwLTEgdGhhdCByZXByZXNlbnRzIHRoZSBwZXJjZW50YWdlIG9mIHRoZSBhcHAgdGhhdCBoYXMgYmVlbiBpbnN0YW50aWF0ZWQuICAtLT4NCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJwZXJjZW50Y3JlYXRlZCIgdHlwZT0ibnVtYmVyIi8+DQorICAgIDwhLS0tIElmIHRydWUsIHJlcXVlc3RzIGZvciBkYXRhIGFuZCBtZWRpYSBhcmUgcHJveGllZCB0aHJvdWdoIExQUyBzZXJ2ZXIuIGlmIGZhbHNlLCByZXF1ZXN0cyBhcmUgbWFkZSBkaXJlY3RseSB0byB0YXJnZXQgVVJMcy4gaWYgaW5oZXJpdCwgaW5oZXJpdCBmcm9tIGx6cHJveGllZCBxdWVyeSBhcmcuIC0tPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9InByb3hpZWQiIHR5cGU9InN0cmluZyIvPg0KKyAgICA8IS0tLSAgIEEgU3RyaW5nIGRlc2NyaWJpbmcgdGhlIHRhcmdldCBydW50aW1lLiAiZGh0bWwiIHwgInN3ZjgiIHwgInN3ZjkiIHwgInN3ZjEwIiBhcmUgY3VycmVudGx5IHN1cHBvcnRlZC4gT3RoZXJzIGFyZSBpbiBkZXZlbG9wbWVudC4tLT4NCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJydW50aW1lIiB0eXBlPSJzdHJpbmciLz4NCisgICAgPCEtLS0gICBVc2VkIHRvIHRlbGwgd2hhdCB0aGUgc2NyZWVuIG9yaWVudGF0aW9uIGlzLCAncG9ydHJhaXQnIG9yICdsYW5kc2NhcGUnIC0tPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9InNjcmVlbm9yaWVudGF0aW9uIiB0eXBlPSJib29sZWFuIi8+DQorICAgIDwhLS0tICAgQSBDU1MgZGVjbGFyYXRpb24gb2YgcHJvcGVydHk6IHZhbHVlIHBhaXJzIHVzZWQgdG8gYWR2aXNlIHRoZSB1bmRlcmx5aW5nIHJ1bnRpbWUgb2YgZGVzaXJlZCByZWN1cnNpb24gYW5kIHRpbWVvdXQgbGltaXRzLiBOb3QgYWxsIHJ1bnRpbWVzIHJlc3BlY3QgdGhpcyBhZHZpY2UuIFRoZSBkZWZhdWx0IHZhbHVlIGlzIHJ1bnRpbWUgZGVwZW5kZW50LCBidXQgdHlwaWNhbGx5IHJlY3Vyc2lvbiBpcyBhdCBsZWFzdCAxMDAgYW5kIHRpbWVvdXQgYXQgbGVhc3QgMTAgKHNlY29uZHMpLiBFeGFtcGxlOiBzY3JpcHRsaW1pdHM9InJlY3Vyc2lvbjogMjU2LCB0aW1lb3V0OiAxNSItLT4NCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJzY3JpcHRsaW1pdHMiIHR5cGU9InN0cmluZyIvPg0KKyAgICANCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJkZWJ1ZyIgdmFsdWU9ImJvb2xlYW4iIC8+DQorICAgIA0KKyAgICA8YXR0cmlidXRlIG5hbWU9InRpdGxlIiB2YWx1ZT0ic3RyaW5nIiAvPg0KKyAgICAJDQorPC9jbGFzcz4NCisNCis8L2xpYnJhcnk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2xmYy9jbGFzcy5senggYi90ZXN0L2NvcmUvbGZjL2NsYXNzLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTc3ZGYxCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2xmYy9jbGFzcy5sengKQEAgLTAsMCArMSwyMiBAQAorPGxpYnJhcnkgeG1sbnM9Imh0dHA6Ly9sb2NhbGhvc3Qvb3Blbmxhc3psby9sengiIA0KKyAgICAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIA0KKyAgICAgICAgICAgIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL2xvY2FsaG9zdC9vcGVubGFzemxvL2x6eCAuLy4uLy4uLy4uL2x6eC54c2QiPg0KKzwhLS1Qcm92aWRlcyBhIHByb3RvdHlwZSBmb3IgYWxsIG9iamVjdHMgb2YgdGhhdCBjbGFzcw0KKw0KK0EgY2xhc3MgZGVzY3JpYmVzIHRoZSBzdGF0ZSBhbmQgYmVoYXZpb3IgdGhhdCBhbGwgb2JqZWN0cyBvZiB0aGF0IGNsYXNzIHNoYXJlLiBBbiBvYmplY3Qgb2YgYSBnaXZlbiBjbGFzcyBpcyBjYWxsZWQgYW4gaW5zdGFuY2Ugb2YgdGhhdCBjbGFzcy4NCisNCitUaGUgZm9sbG93aW5nIGV4YW1wbGUgZGVmaW5lcyB0aGUgY2xhc3MgSGVsbG8sIGFuZCBpbnN0YW50aWF0ZXMgbXlIZWxsbyAoYW4gaW5zdGFuY2Ugb2YgdGhhdCBjbGFzcykuDQorLS0+DQorPGNsYXNzIG5hbWU9ImNsYXNzIiBleHRlbmRzPSJ2aWV3Ij4NCisNCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB0eXBlPSJ0b2tlbiIgcmVxdWlyZWQ9InRydWUiIC8+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0iZXh0ZW5kcyIgLz4NCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJpbXBsZW1lbnRzIiAvPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9IndpdGgiIC8+DQorICAgIA0KKyAgICA8YXR0cmlidXRlIG5hbWU9ImlzUm9vdCIgdHlwZT0iYm9vbGVhbiIvPg0KKyAgICANCis8L2NsYXNzPg0KKw0KKw0KKzwvbGlicmFyeT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvbGZjL2NvbnRleHRtZW51Lmx6eCBiL3Rlc3QvY29yZS9sZmMvY29udGV4dG1lbnUubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjOWQwZDcKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvbGZjL2NvbnRleHRtZW51Lmx6eApAQCAtMCwwICsxLDEyIEBACis8bGlicmFyeSB4bWxucz0iaHR0cDovL2xvY2FsaG9zdC9vcGVubGFzemxvL2x6eCIgCisgICAgICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiAKKyAgICAgICAgICAgIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL2xvY2FsaG9zdC9vcGVubGFzemxvL2x6eCAuLy4uLy4uLy4uL2x6eC54c2QiPgorPCEtLS1BIGNvbnRleHR1YWwgbWVudSAtLT4KKzxjbGFzcyBuYW1lPSJjb250ZXh0bWVudSIgZXh0ZW5kcz0ibm9kZSI+CisKKwk8IS0tLQkJU2V0cyB0aGUgZGVsZWdhdGUgd2hpY2ggd2lsbCBiZSBjYWxsZWQgd2hlbiBhIG1lbnUgaXRlbSBpcyBzZWxlY3RlZC4gQW4gb25zZWxlY3QgZXZlbnQgaXMgYWxzbyBzZW50Li0tPgorCTxhdHRyaWJ1dGUgbmFtZT0iZGVsZWdhdGUiIC8+CisJCis8L2NsYXNzPgorCis8L2xpYnJhcnk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2xmYy9jb250ZXh0bWVudWl0ZW0ubHp4IGIvdGVzdC9jb3JlL2xmYy9jb250ZXh0bWVudWl0ZW0ubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1ZTgwODEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvbGZjL2NvbnRleHRtZW51aXRlbS5sengKQEAgLTAsMCArMSwyNSBAQAorPGxpYnJhcnkgeG1sbnM9Imh0dHA6Ly9sb2NhbGhvc3Qvb3Blbmxhc3psby9sengiIAorICAgICAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgCisgICAgICAgICAgICB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly9sb2NhbGhvc3Qvb3Blbmxhc3psby9senggLi8uLi8uLi8uLi9sengueHNkIj4KKzwhLS0tQSBtZW51IGl0ZW0gd2l0aGluIGEgY29udGV4dCBtZW51IC0tPgorPGNsYXNzIG5hbWU9ImNvbnRleHRtZW51aXRlbSIgZXh0ZW5kcz0ibm9kZSI+CisKKwk8IS0tLQkJU2V0cyB0aGUgdGV4dCB3aGljaCBpcyBkaXNwbGF5ZWQgZm9yIHRoZSBtZW51IGl0ZW0tLT4KKwk8YXR0cmlidXRlIG5hbWU9ImNhcHRpb24iIC8+CisJCisJPCEtLS0gCVNldHMgdGhlIGRlbGVnYXRlIHdoaWNoIHdpbGwgYmUgY2FsbGVkIHdoZW4gdGhlIG1lbnUgaXRlbSBpcyBzZWxlY3RlZC4gLS0+CisJPGF0dHJpYnV0ZSBuYW1lPSJkZWxlZ2F0ZSIgLz4KKwkKKwk8IS0tLSAJU2V0cyB0aGUgZW5hYmxlZCBzdGF0dXMgb2YgdGhlIG1lbnUgaXRlbS4gSWYgZmFsc2UsIHRoZSBtZW51IGl0ZW0gaXMgZ3JheWVkIG91dCBhbmQgd2lsbCBub3QgcmVzcG9uZCB0byBjbGlja3MgIC0tPgorCTxhdHRyaWJ1dGUgbmFtZT0iZW5hYmxlZCIgdHlwZT0iYm9vbGVhbiIgLz4KKwkKKwk8IS0tLQlEcmF3IGEgaG9yaXpvbnRhbCBzZXBhcmF0b3IgbGluZSBiZWZvcmUgdGhpcyBpdGVtIGluIHRoZSBtZW51LiAtLT4KKwk8YXR0cmlidXRlIG5hbWU9InNlcGFyYXRvcmJlZm9yZSIgdHlwZT0iYm9vbGVhbiIvPgorCQorCTwhLS0tCVNldHMgdGhlIHZpc2liaWxpdHkgb2YgdGhlIG1lbnUgaXRlbS4gLS0+CisJPGF0dHJpYnV0ZSBuYW1lPSJ2aXNpYmxlIiAvPgorCQorCQkKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvbGZjL2RhdGFwYXRoLmx6eCBiL3Rlc3QvY29yZS9sZmMvZGF0YXBhdGgubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlMTdhNjYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvbGZjL2RhdGFwYXRoLmx6eApAQCAtMCwwICsxLDQwIEBACis8bGlicmFyeSB4bWxucz0iaHR0cDovL2xvY2FsaG9zdC9vcGVubGFzemxvL2x6eCIgCisgICAgICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiAKKyAgICAgICAgICAgIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL2xvY2FsaG9zdC9vcGVubGFzemxvL2x6eCAuLy4uLy4uLy4uL2x6eC54c2QiPgorPCEtLS1BIGN1cnNvciBpbiBhIGRhdGFzZXQuCitBIGRhdGFwb2ludGVyIGlzIGFuIG9iamVjdCB0aGF0IHJlcHJlc2VudHMgYSBwb2ludGVyIHRvIGEgbm9kZSBpbiBhIGx6LmRhdGFzZXQuIFRoZSBkYXRhcG9pbnRlciBjYW4gYmUgcmVwb3NpdGlvbmVkIHVzaW5nIGVpdGhlciBjdXJzb3IgbW92ZW1lbnRzIGNhbGxzIHN1Y2ggYXMgTHpEYXRhcG9pbnRlci5zZWxlY3ROZXh0KCksIG9yIGJ5IHJ1bm5pbmcgYW4gWFBhdGggcmVxdWVzdCB2aWEgTHpEYXRhcG9pbnRlci5zZXRYUGF0aCgpLgorCitEYXRhcG9pbnRlcnMgc3VwcG9ydCBhIHN1YnNldCBvZiB0aGUgWFBhdGggc3BlY2lmaWNhdGlvbiwgd2hpY2ggdXNlcyBhIG5vdGF0aW9uIHNpbWlsYXIgdG8gdGhlIFVOSVggZmlsZS1zeXN0ZW0gdG8gcmVmZXIgdG8gbm9kZXMgd2l0aGluIGEgZGF0YXNldC4gT25jZSBhIGRhdGFwb2ludGVyIGlzIGJvdW5kIHRvIGEgbm9kZSBpbiBhIGRhdGFzZXQgaXQgd2lsbCBrZWVwIHBvaW50aW5nIHRvIHRoYXQgbm9kZSB1bnRpbCBpdCBpcyBtb3ZlZC4gSWYgdGhlIGRhdGFzZXQgaXMgZWRpdGVkLCB0aGUgYmVoYXZpb3Igb2YgdGhlIGRhdGFwb2ludGVyIHdpbGwgYmUgY29udHJvbGxlZCBieSBpdHMgcmVydW54cGF0aCBhdHRyaWJ1dGUuIElmIHRoaXMgYXR0cmlidXRlIGlzIHRydWUsIGl0IHdpbGwgY29udGludWUgcG9pbnRpbmcgdG8gaXRzIGN1cnJlbnQgbm9kZSBhcyBsb25nIGFzIGl0IGlzIHZhbGlkLiAKKyAtLT4KKzxjbGFzcyBuYW1lPSJkYXRhcGF0aCIgZXh0ZW5kcz0iZGF0YXBvaW50ZXIiPgorCisJPCEtLS0JVGhlIGRpcmVjdGlvbiBpbiB3aGljaCB0aGUgcmVwbGljYXRlZCBlbGVtZW50cyB3aWxsIGJlIGxheWVkIG91dC4KKwkJTm90ZQorVGhpcyBhdHRyaWJ1dGUgaXMgb25seSBhdmFpbGFibGUgaWYgcmVwbGljYXRpb24gaXMgc2V0IHRvIGVpdGhlciAibGF6eSIgb3IgInJlc2l6ZSIuICAKKwlPbmUgb2Y6ICJ4IiB8ICJ5IiAgLS0+CisJPGF0dHJpYnV0ZSBuYW1lPSJheGlzIiAvPgorCQorCTwhLS0tCQlUaGlzIGF0dHJpYnV0ZSBhcHBsaWVzIHRvIGRhdGFwYXRocyB3aGljaCBtYXRjaCBtdWx0aXBsZSBub2RlcyBhbmQgZm9yY2UgcmVwbGljYXRpb24uIElmIHBvb2xpbmcgaXMgdHJ1ZSwgdmlld3MgdGhhdCBhcmUgZGF0YS1ib3VuZCB0byB0aGlzIGRhdGFwYXRoIGFyZSByZWN5Y2xlZCBpZiB0aGUgZGF0YXNldCBjaGFuZ2VzLiBPdGhlcndpc2UsIHZpZXdzIGFyZSBkZWxldGVkIHdoZW4gdGhlIGRhdGEgbm9kZXMgdGhleSBhcmUgYm91bmQgdG8gZGlzYXBwZWFyLCBhbmQgY3JlYXRlZCB3aGVuIG5ldyBkYXRhIG5vZGVzIG1hdGNoIHRoZSBkYXRhcGF0aC4gU2VlIHRoZSBzZWN0aW9uIG9uIFBvb2xpbmcgaW4gdGhlIEd1aWRlIGZvciBpbmZvcm1hdGlvbiBhYm91dCB0aGUgdXNlIG9mIHRoaXMgYXR0cmlidXRlLiAtLT4KKwk8YXR0cmlidXRlIG5hbWU9InBvb2xpbmciIHZhbHVlPSJmYWxzZSIgdHlwZT0iYm9vbGVhbiIgLz4KKwkKKwk8IS0tLQlEZXRlcm1pbmVzIHdoZXRoZXIgdG8gdXNlIG5vcm1hbCBvciBsYXp5IHJlcGxpY2F0aW9uLCBpZiB0aGUgZGF0YXBhdGggbWF0Y2hlcyBtb3JlIHRoYW4gb25lIG5vZGUuIFNlZSB0aGUgc2VjdGlvbiBvbiBSZXBsaWNhdGlvbiBpbiB0aGUgR3VpZGUgZm9yIGluZm9ybWF0aW9uIGFib3V0IHRoZSB1c2Ugb2YgdGhpcyBhdHRyaWJ1dGUuCitbTm90ZV0gCU5vdGUKK1RoZSBjaG9pY2Ugb2YgcmVwbGljYXRpb24gc3R5bGUgaW1wbGllcyBhIGNob2ljZSBvZiByZXBsaWNhdGlvbiBtYW5hZ2VyLiBFYWNoIHJlcGxpY2F0aW9uIG1hbmFnZXIgbWF5IGhhdmUgYWRkaXRpb25hbCBhdHRyaWJ1dGVzIHdoaWNoIGFyZSBzcGVjaWZpZWQgYXMgYXR0cmlidXRlcyBvZiB0aGUgZGF0YXBhdGguIEZvciBleGFtcGxlLCBsei5MYXp5UmVwbGljYXRpb25NYW5hZ2VyIHRha2VzIGF4aXMgYW5kIHNwYWNpbmcgYXR0cmlidXRlcy4gU2VlIHRoZSBkb2N1bWVudGFpb24gZm9yIHRoZSBjb3JyZXNwb25kaW5nIHJlcGxpY2F0aW9uIG1hbmFnZXIgZm9yIGRldGFpbGVkIGluZm9ybWF0aW9uIG9uIHRoZXNlIGFkZGl0aW9uYWwgYXR0cmlidXRlcy4KKworT25lIG9mOiAJJ25vcm1hbCcgfCAnbGF6eScgfCAncmVzaXplJyAgLS0+CisJPGF0dHJpYnV0ZSBuYW1lPSJyZXBsaWNhdGlvbiIgdmFsdWU9Im5vcm1hbCIgLz4KKwkKKwk8IS0tLQlUaGUgb3JkZXIgdG8gdXNlIHRvIHNvcnQgdGhlIGRhdGFzZXQgaWYgcmVwbGljYXRpb24gb2NjdXJzLiBPbmUgb2YgImFzY2VuZGluZyIgb3IgImRlc2NlbmRpbmciIHRvIHVzZSBidWlsdCBpbiBkaWN0aW9uYXJ5IHNvcnQsIG9yIGEgZnVuY3Rpb24gd2hpY2ggY29tcGFyZXMgdHdvIHN0cmluZ3MgYW5kIHJldHVybnMgMSBpZiB0aGUgc3RyaW5ncyBhcmUgaW4gb3JkZXIsIDAgaWYgdGhleSBhcmUgdGhlIHNhbWUsIGFuZCAtMSBpZiB0aGV5IGFyZSBvdXQgb2Ygb3JkZXIuIFRvIGNoYW5nZSB0aGlzIGF0dHJpYnV0ZSwgdXNlIHNldEF0dHJpYnV0ZSgnc29ydG9yZGVyJywgLi4uKS4gIC0tPgorCTxhdHRyaWJ1dGUgbmFtZT0ic29ydG9yZGVyIiAvPgorCQorCTwhLS0tQW4gWFBhdGggdG8gdXNlIHRvIG9idGFpbiB0aGUgc29ydCBrZXkgZm9yIHNvcnRpbmcgaWYgcmVwbGljYXRpb24gb2NjdXJzLiBUbyBjaGFuZ2UgdGhpcyBhdHRyaWJ1dGUsIHVzZSAuc2V0QXR0cmlidXRlKCdzb3J0cGF0aCcsIC4uLiksICAtLT4KKwk8YXR0cmlidXRlIG5hbWU9InNvcnRwYXRoIiAvPgorCQorCTwhLS0tCVRoZSBzcGFjaW5nIChpbiBwaXhlbHMpIGJldHdlZW4gcmVwbGljYXRlZCB2aWV3cy4KK1tOb3RlXSAJTm90ZQorVGhpcyBhdHRyaWJ1dGUgaXMgb25seSBhdmFpbGFibGUgaWYgcmVwbGljYXRpb24gaXMgc2V0IHRvIGVpdGhlciAibGF6eSIgb3IgInJlc2l6ZSIuICAtLT4KKwk8YXR0cmlidXRlIG5hbWU9InNwYWNpbmciIHR5cGU9Im51bWJlciIgLz4KKwkKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvbGZjL2RhdGFwb2ludGVyLmx6eCBiL3Rlc3QvY29yZS9sZmMvZGF0YXBvaW50ZXIubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0OGZiNzYKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvbGZjL2RhdGFwb2ludGVyLmx6eApAQCAtMCwwICsxLDI3IEBACis8bGlicmFyeSB4bWxucz0iaHR0cDovL2xvY2FsaG9zdC9vcGVubGFzemxvL2x6eCIgCisgICAgICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiAKKyAgICAgICAgICAgIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL2xvY2FsaG9zdC9vcGVubGFzemxvL2x6eCAuLy4uLy4uLy4uL2x6eC54c2QiPgorICAgICAgICAgICAgCis8IS0tLVRoZSBiaW5kZXIgYmV0d2VlbiBkYXRhIGFuZCBub2Rlcy4KK0RhdGFwYXRocyBhcmUgdXNlZCB0byBtZXJnZSBkYXRhIGhpZXJhcmNoaWVzIHdpdGggdGhlIGhpZXJhcmNoeSBvZiBhbiBPcGVuTGFzemxvIGFwcGxpY2F0aW9uLiBUaGlzIGlzIGRvbmUgdXNpbmcgdGhlIHRoZSBYUGF0aCBzeW50YXggc3VwcG9ydGVkIGJ5IGx6LmRhdGFwb2ludGVyLiBXaGVuIGEgbm9kZSBpcyBnaXZlbiBhIGRhdGFwYXRoIGF0dHJpYnV0ZSwgYSBkYXRhcGF0aCB3aXRoIHRoZSBnaXZlbiB2YWx1ZSBhcyBpdHMgWFBhdGggaXMgY3JlYXRlZC4gSWYgdGhlIGRhdGFwYXRoIHJldHJpZXZlcyBhIG5vZGUgKGkuZS4gaXQgZG9lc24ndCB0ZXJtaW5hdGUgaW4gYW4gYXR0cmlidXRlIGdldHRlciBvciBhICgpIG9wZXJhdG9yKSB0aGVuIHRoZSBub2RlIGlzIG1hcHBlZCB0byB0aGF0IGRhdGEgY29udGV4dCBhbmQgYWxsIGNoaWxkIG5vZGVzIHdpbGwgaW1wbGljaXRseSBzaGFyZSB0aGUgZGF0YWNvbnRleHQsIGJ1dCBubyBmdXJ0aGVyIGFjdGlvbiBpcyB0YWtlbi4gSWYgdGhlIGRhdGFwYXRoIHJldHJpZXZlcyBkYXRhLCByYXRoZXIgdGhhbiBqdXN0IGEgbm9kZSwgYSBmZXcgZXh0cmEgdGhpbmdzIGhhcHBlbi4gRmlyc3QsIHRoZSBub2RlJ3MgZGF0YSBwcm9wZXJ0eSBpcyBzZXQgYW5kIHRoZSBub2RlJ3Mgb25kYXRhIGV2ZW50IGlzIHNlbnQuIFNlY29uZCwgdGhlIG5vZGUncyBhcHBseURhdGEgbWV0aG9kIGlzIGNhbGxlZCB3aXRoIHRoZSBkYXRhIGFzIHRoZSBhcmd1bWVudC4gSW4gY2FzZXMgd2hlcmUgYSBkYXRhcGF0aCBtYXRjaGVzIG1vcmUgdGhhbiBvbmUgZGF0YSBub2RlLCB0aGUgdmlldyB3aXRoIHRoZSBtYXRjaGluZyBkYXRhcGF0aCBpcyByZXBsaWNhdGVkIG9uY2UgZm9yIGVhY2ggZGF0YSBub2RlIHRoYXQgbWF0Y2hlcywgYW5kIGEgbHouUmVwbGljYXRpb25NYW5hZ2VyIHRha2VzIG92ZXIgdGhlIHZpZXcncyBzcG90IGluIGl0cyBwYXJlbnQuCisKK1doZW4gYSBub2RlIGlzIHJlcGxpY2F0ZWQsIGFuIEx6UmVwbGljYXRpb25NYW5hZ2VyIHRha2VzIGl0J3MgcGxhY2UsIGFuZCBhbiBvbmNsb25lcyB3aWxsIGJlIHNlbnQgd2hlbiB0aGUgbm9kZSdzIGNsb25lcyBhcmUgdXBkYXRlZC4KKworQSBub2RlIGNhbiBvbmx5IGhhdmUgb25lIGRhdGFwYXRoLCBhbmQgZGF0YXBhdGhzIGFsd2F5cyBoYXZlIHRoZSBuYW1lIGRhdGFwYXRoLiBBZGRpdGlvbmFsIG9wdGlvbnMgYXZhaWxhYmxlIG9uIGRhdGFwYXRoIHN1Y2ggYXMgcG9vbGluZyBhbmQgcmVwbGljYXRpb24gYXJlIHNwZWNpZmllZCBieSB3cml0aW5nIHRoZSA8ZGF0YXBhdGg+IHRhZyBhcyBhIHNlcGFyYXRlIG5vZGUuIAorIC0tPgorPGNsYXNzIG5hbWU9ImRhdGFwb2ludGVyIiBleHRlbmRzPSJub2RlIj4KKworCTwhLS0tCVRoZSByZWZlcmVuY2UgdG8gYSBjbG9uZW1hbmFnZXIgZnJvbSBhIGNsb25lLiAtLT4KKwk8YXR0cmlidXRlIG5hbWU9ImNvbnRleHQiIC8+CisJCisJPCEtLS0JVGhlIEx6RGF0YU5vZGVNaXhpbiB0aGF0IHRoZSBkYXRhcG9pbnRlciBpcyBwb2ludGluZyB0by4gQ2FsbGluZyBzZXRBdHRyaWJ1dGUgb24gcCBjYWxscyBMekRhdGFwb2ludGVyLnNldFBvaW50ZXIuICAtLT4KKwk8YXR0cmlidXRlIG5hbWU9InAiIC8+CisJCisJPCEtLS0JVGhpcyBkZXRlcm1pbmVzIHRoZSBiZWhhdmlvciBvZiB0aGUgZGF0YXBvaW50ZXIgaW4gcmVzcG9uc2UgdG8gbm90aWZpY2F0aW9uIHRoYXQgdGhlIGRhdGFzZXQgdGhlIGRhdGFwb2ludGVyIGlzIG1hcHBlZCB0byBoYXMgY2hhbmdlZC4gSWYgcmVydW54cGF0aCBpcyB0cnVlLCB0aGUgZGF0YXBvaW50ZXIgd2lsbCBhbHdheXMgcmVydW4gaXRzIHJlbWVtYmVyZWQgWFBhdGggKHNldCB3aXRoIHRoZSB4cGF0aCBwcm9wZXJ0eSkuIElmIGl0IGlzIGZhbHNlLCB0aGUgZGF0YXBvaW50ZXIgd2lsbCBvbmx5IHZlcmlmeSB0aGF0IHRoZSBub2RlIGl0IGlzIHBvaW50aW5nIHRvIGlzIHN0aWxsIGluIHRoZSBkYXRhc2V0LiBJZiBpdCBpc24ndCwgdGhlIGRhdGFwb2ludGVyIHdpbGwgcmVydW4gaXRzIHJlbWVtYmVyZWQgeHBhdGggKGlmIGl0IGhhcyBvbmUpIG9yIHdpbGwgcHJpbnQgYSBkZWJ1ZyBtZXNzYWdlIGlmIGFueSBmdXJ0aGVyIGF0dGVtcHQgaXMgbWFkZSB0byB1c2UgaXRzIGN1cnJlbnQgbm9kZSBhcyB0aGUgYmFzaXMgZm9yIGEgcmVsYXRpdmUgWFBhdGggcXVlcnkuICAtLT4KKwk8YXR0cmlidXRlIG5hbWU9InJlcnVueHBhdGgiIHR5cGU9ImJvb2xlYW4iIC8+CisJCisJPGF0dHJpYnV0ZSBuYW1lPSJ4cGF0aCIgLz4KKwkKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvbGZjL2RhdGFzZXQubHp4IGIvdGVzdC9jb3JlL2xmYy9kYXRhc2V0Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jODY5M2I5Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2xmYy9kYXRhc2V0Lmx6eApAQCAtMCwwICsxLDcyIEBACis8bGlicmFyeSB4bWxucz0iaHR0cDovL2xvY2FsaG9zdC9vcGVubGFzemxvL2x6eCIgCisgICAgICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiAKKyAgICAgICAgICAgIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL2xvY2FsaG9zdC9vcGVubGFzemxvL2x6eCAuLy4uLy4uLy4uL2x6eC54c2QiPgorPCEtLS1BbiBpbi1tZW1vcnkgeG1sLXN0eWxlIGRhdGEgaGllcmFyY2h5LiAtLT4KKzxjbGFzcyBuYW1lPSJkYXRhc2V0IiBleHRlbmRzPSJub2RlIj4KKworCTwhLS0gSW5oZXJpdGVkIGZyb20gRGF0YUVsZW1lbnRNaXhpbiAtLT4KKwk8IS0tLSBUaGUgZGljdGlvbmFyeSBvZiBhdHRyaWJ1dGVzIGZvciB0aGlzIG5vZGUuIC0tPgorCTxhdHRyaWJ1dGUgbmFtZT0iYXR0cmlidXRlcyIgLz4KKwk8IS0tLSAJVGhlIG5hbWUgb2YgdGhpcyBub2RlLiAtLT4KKwk8YXR0cmlidXRlIG5hbWU9Im5vZGVOYW1lIiAvPgorCQorCTwhLS0gSW5oZXJpdGVkIGZyb20gbHouRGF0YU5vZGVNaXhpbiAgLS0+CisJPCEtLS0JQW4gYXJyYXkgb2YgY2hpbGRyZW4gb2YgdGhpcyBub2RlIC0tPgorCTxhdHRyaWJ1dGUgbmFtZT0iY2hpbGROb2RlcyIgLz4KKwk8IS0tLSAJVGhlIHR5cGUgb2YgdGhpcyBub2RlIG9uZSBvZiBsei5EYXRhRWxlbWVudC5ET0NVTUVOVF9OT0RFLCBsei5EYXRhRWxlbWVudC5FTEVNRU5UX05PREUgb3IgbHouRGF0YUVsZW1lbnQuVEVYVF9OT0RFIC0tPgorCTxhdHRyaWJ1dGUgbmFtZT0ibm9kZVR5cGUiIC8+CisJPCEtLS0JVGhlIG93bmVyIGRvY3VtZW50IGZvciB0aGlzIG5vZGUuIC0tPgorCTxhdHRyaWJ1dGUgbmFtZT0ib3duZXJEb2N1bWVudCIgLz4KKwk8IS0tLSAJVGhlIHBhcmVudCBvZiB0aGlzIG5vZGUgLS0+CisJPGF0dHJpYnV0ZSBuYW1lPSJwYXJlbnROb2RlIiAvPgorCTwhLS0tCVNlbGVjdGlvbiBzdGF0ZSBvZiB0aGlzIG5vZGUsIHVzZWQgYnkgZGF0YXNlbGVjdGlvbm1hbmFnZXIgLS0+CisJPGF0dHJpYnV0ZSBuYW1lPSJzZWwiIC8+CisJCisJPCEtLS0JV2hlbiB0cnVlLCB0aGUgc2VydmVyIHdpbGwgYWNjZXB0IGVuY29kZWQgcmVzcG9uc2VzIGZvciB0aGlzIHJlcXVlc3QuIEVuY29kZWQgcmVzcG9uc2VzIHJlcXVpcmUgbW9yZSB3b3JrIGZvciB0aGUgTFBTIChlbmNvZGluZyB0aGUgcmVzcG9uc2UpIGFuZCBjbGllbnQgKGRlY29kaW5nIHRoZSByZXNwb25zZSkgaW4gdHJhZGUgZm9yIGxvd2VyIG5ldHdvcmsgYmFuZHdpZHRoIHVzYWdlLiAgLS0+CisJPGF0dHJpYnV0ZSBuYW1lPSJhY2NlcHRlbmNvZGluZ3MiIHR5cGU9ImJvb2xlYW4iLz4KKwk8IS0tLQlJZiB0cnVlLCBjaGFuZ2VzIHRvIHNyYyBvciBxdWVyeXN0cmluZyBhdHRyaWJ1dGVzIGNhdXNlIGRvUmVxdWVzdCgpIHRvIGJlIGNhbGxlZCBhdXRvbWF0aWNhbGx5LiBJZiBmYWxzZSwgZG9SZXF1ZXN0KCkgbXVzdCBiZSBjYWxsZWQgbWFudWFsbHkgd2hlbiBzcmMgb3IgcXVlcnlzdHJpbmcgYXR0cmlidXRlcyBjaGFuZ2UuICAtLT4KKwk8YXR0cmlidXRlIG5hbWU9ImF1dG9yZXF1ZXN0IiB0eXBlPSJib29sZWFuIiB2YWx1ZT0iZmFsc2UiIC8+CisJPCEtLS0JV2hlbiB0cnVlLCB0aGUgc2VydmVyIHdpbGwgYXR0ZW1wdCB0byBjYWNoZSByZXNwb25zZSAoZGVmYXVsdHMgdG8gZmFsc2UpLiBUaGVyZSBhcmUgc2VjdXJpdHkgY29uY2VybnMgd2hlbiB0aGlzIGZpZWxkIGlzIHRydWUuIFdoZW4gdGhpcyBmaWVsZCBpcyB0cnVlLCB5b3Ugd2lsbCB1c3VhbGx5IHdhbnQgdGhlIGdldHJlc3BvbnNlaGVhZGVycyBmaWVsZCB0byBiZSBmYWxzZS4gLS0+CisJPGF0dHJpYnV0ZSBuYW1lPSJjYWNoZWFibGUiIHR5cGU9ImJvb2xlYW4iIHZhbHVlPSJmYWxzZSIgLz4KKwk8IS0tLSAJV2hlbiB0cnVlLCBkYXRhIHJlc3BvbnNlcyBjYW4gYmUgY2FjaGVkIGJ5IHRoZSBjbGllbnQgKGJyb3dzZXIpLiBXaGVuIGZhbHNlLCBhIHVuaXF1ZSB2YWx1ZWQgYXJndW1lbnQgd2lsbCBiZSBhZGRlZCB0byB0aGUgcmVxdWVzdCBzdHJpbmcgaW4gdGhlIGZvcm1hdCAnX19semJjX189MTIwNDY4NTg0MDc3NycgdG8gZGVmZWF0IHRoZSBicm93c2VyJ3MgY2FjaGUuICAtLT4KKwk8YXR0cmlidXRlIG5hbWU9ImNsaWVudGNhY2hlYWJsZSIgdHlwZT0iYm9vbGVhbiIgdmFsdWU9ImZhbHNlIiAvPgorCTwhLS0tV2hlbiB0cnVlLCB0aGUgd2l0aENyZWRlbnRpYWxzIHByb3BlcnR5IG9uIHRoZSBYSFIgb2JqZWN0IHdpbGwgYmUgc2V0IHRvIHRydWUsIGFsbG93aW5nIGNyZWRlbnRpYWxsZWQgY3Jvc3Mtb3JpZ2luIHJlc291cmNlIHNoYXJpbmcgKENPUlMpIHJlcXVlc3RzLiBJZiB3aXRoQ3JlZGVudGlhbHMgaXMgbm90IHNldCBmb3IgYSBDT1JTIHJlcXVlc3QgdXNpbmcgY3JlZGVudGlhbHMsIHRoZSBicm93c2VyIHdpbGwgbm90IHNldCBhbnkgY29va2llcyBzZW50IGJ5IHRoZSBzZXJ2ZXIuIFNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9jb3JzLyNhY2Nlc3MtY29udHJvbC1hbGxvdy1jcmVkZW50aWFscy1yZXNwb25zIGFuZCBodHRwOi8vZGV2LnczLm9yZy8yMDA2L3dlYmFwaS9YTUxIdHRwUmVxdWVzdC0yLyN0aGUtd2l0aGNyZWRlbnRpYWxzLWF0dHJpYnV0ZSBmb3IgbW9yZSBpbmZvcm1hdGlvbi4gIC0tPgorCTxhdHRyaWJ1dGUgbmFtZT0iY3JlZGVudGlhbGxlZCIgdHlwZT0iYm9vbGVhbiIgdmFsdWU9ImZhbHNlIiAvPgorCTwhLS0tIAlIb2xkcyBhIHBvaW50ZXIgdG8gdGhlIERhdGFQcm92aWRlciB3aGljaCBoYW5kbGVzIGRhdGEgbG9hZCByZXF1ZXN0cyBmb3IgdGhpcyBkYXRhc2V0LiBEZWZhdWx0IHZhbHVlIGlzIGNhbnZhcy5kZWZhdWx0ZGF0YXByb3ZpZGVyICAtLT4KKwk8YXR0cmlidXRlIG5hbWU9ImRhdGFwcm92aWRlciIgLz4KKwk8IS0tLQlXaGVuIHRydWUsIHRoZSBwcm94eSBzZXJ2ZXIgKGlmIG1ha2luZyBhIHByb3hpZWQgcmVxdWVzdCkgd2lsbCBlbmNvZGUgYW5kIHNlbmQgdGhlIEhUVFAgcmVzcG9uc2UgaGVhZGVycyBhbG9uZyB3aXRoIHRoZSBkYXRhIChkZWZhdWx0cyB0byBmYWxzZSkuIER1ZSB0byBhIGxhY2sgb2YgYSBuYXRpdmUgQVBJIHRvIGdldCB0aGlzIGluZm9ybWF0aW9uLCBTT0xPIFNXRiBhcHBsaWNhdGlvbnMgd2lsbCBhbHdheXMgcmV0dXJuIGFuIGVtcHR5IHNldC4gV2hlbiBtYWtpbmcgYSBwcm94aWVkIHJlcXVlc3QsIGdldHJlc3BvbnNlaGVhZGVycyBtdXN0IGJlIHRydWUgaW4gb3JkZXIgZm9yIHRoZSByZXNwb25zZSBoZWFkZXJzIHRvIGJlIHJldHJpZXZlZCB2aWEgdGhlIGdldFJlc3BvbnNlSGVhZGVyIG9yIGdldEFsbFJlc3BvbnNlSGVhZGVycyBtZXRob2RzLiAgLS0+CisJPGF0dHJpYnV0ZSBuYW1lPSJnZXRyZXNwb25zZWhlYWRlcnMiIHR5cGU9ImJvb2xlYW4iLz4KKwk8IS0tLQlDcmVhdGUgYSBuZXcgZGF0YSByZXF1ZXN0IG9iamVjdCBmb3IgZWFjaCByZXF1ZXN0LiAtLT4KKwk8YXR0cmlidXRlIG5hbWU9Im11bHRpcmVxdWVzdCIgLz4KKwk8IS0tLQlXaGVuIHRydWUsIHRoZSBzZXJ2ZXIgd2lsbCBwcmVzZXJ2ZSBuYW1lc3BhY2UgcHJlZml4ZXMgb24gZGF0YSBub2RlIG5hbWVzIGFuZCBhdHRyaWJ1dGUgbmFtZXMgIC0tPgorCTxhdHRyaWJ1dGUgbmFtZT0ibnNwcmVmaXgiIC8+CisJPCEtLS0JQW4gbHouUGFyYW0gb2JqZWN0IHdoaWNoIGhvbGRzIHF1ZXJ5IGtleS12YWx1ZSBwYWlycy4gLS0+CisJPGF0dHJpYnV0ZSBuYW1lPSJwYXJhbXMiIC8+CisJPCEtLS0JVXNlZCB0byBzZW5kIGEgc3RyaW5nIGFzIHRoZSBlbnRpcmUgYm9keSBvZiBhIFBPU1QgcmVxdWVzdC4gRm9yIGEgUE9TVCByZXF1ZXN0LCBzZXR0aW5nIHBvc3Rib2R5IHRvIGEgbm9uLW51bGwgc3RyaW5nIHZhbHVlIHdpbGwgc2VuZCB0aGF0IHN0cmluZyBhcyB0aGUgY29tcGxldGUgYm9keSBvZiB0aGUgUE9TVCByZXF1ZXN0LiBJbiB0aGlzIGNhc2UgYW55IG90aGVyIHF1ZXJ5IHBhcmFtZXRlcnMgdGhhdCBoYXZlIGJlZW4gc2V0IHZpYSBzZXRRdWVyeVBhcmFtIGRhdGFzZXQgd2lsbCBiZSBpZ25vcmVkLiBUaGUgYmVoYXZpb3Igb2YgYSBHRVQgcmVxdWVzdCB3aXRoIGEgbm9uLW51bGwgcG9zdGJvZHkgaXMgbm90IGRlZmluZWQuIE5vdGUsIHRoZSBzd2Y4IHJ1bnRpbWUgaXMgZm9yY2VkIHRvIFhNTC1xdW90ZSB0aGUgcG9zdGJvZHksIGR1ZSB0byBsaW1pdGF0aW9ucyBpbiB0aGUgRmxhc2ggOCBwbGF5ZXIgQVBJLiBUaGlzIHJlc3RyaWN0aW9uIGlzIG5vdCBwcmVzZW50IGluIGxhdGVyIHN3ZiBydW50aW1lcywgb3IgaW4gdGhlIERIVE1MIHJ1bnRpbWUuICAtLT4KKyAJPGF0dHJpYnV0ZSBuYW1lPSJwb3N0Ym9keSIgLz4KKyAJPCEtLS1TZXRzIHdoZXRoZXIgb3Igbm90IHRoZSBkYXRhc2V0IG1ha2VzIGl0cyByZXF1ZXN0IGRpcmVjdGx5IHRvIHRoZSB0YXJnZXQgc2VydmVyIG9yIHZpYSB0aGUgc2VydmVyIHByb3h5LiBJbmhlcml0cyB2YWx1ZSBmcm9tIGNhbnZhcy5wcm94aWVkIGZsYWcuICAtLT4KKyAJPGF0dHJpYnV0ZSBuYW1lPSJwcm94aWVkIiAvPgorIAk8IS0tLQlUaGUgVVJMIG9mIHRoZSBwcm94eSBzZXJ2ZXIsIGZvciBwcm94aWVkIHJlcXVlc3RzIC0tPgorIAk8YXR0cmlidXRlIG5hbWU9InByb3h5dXJsIiAvPgorIAk8IS0tLQlBIHN0cmluZyB0byBiZSBhcHBlbmRlZCB0byB0aGUgcmVxdWVzdCB0aGF0IHRoZSBkYXRhc2V0IG1ha2VzLiAgLS0+CisgCTxhdHRyaWJ1dGUgbmFtZT0icXVlcnlzdHJpbmciIC8+CisgCTwhLS0tSFRUUCByZXF1ZXN0IG1ldGhvZC4gVmFsdWUgbXVzdCBiZSBvbmUgb2YgIkdFVCIgb3IgIlBPU1QiLiAtLT4KKyAJPGF0dHJpYnV0ZSBuYW1lPSJxdWVyeXR5cGUiIHZhbHVlPSJHRVQiIC8+CisgIAk8IS0tLQlIb2xkcyByYXcgZGF0YSByZXNwb25zZSBzdHJpbmcgZnJvbSBkYXRhIHNvdXJjZSAtLT4KKyAgCTxhdHRyaWJ1dGUgbmFtZT0icmF3ZGF0YSIgLz4KKyAgCTwhLS0tCUlmIHRydWUsIHRoZSBkYXRzZXQgd2lsbCBtYWtlIGEgcmVxdWVzdCB1cG9uIGluaXRpYWxpemF0aW9uIC0tPgorICAJPGF0dHJpYnV0ZSBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJib29sZWFuIiB2YWx1ZT0iZmFsc2UiIC8+CisgIAk8IS0tLQlUQ1AgcG9ydCBudW1iZXIgdG8gdXNlIGZvciBzZWN1cmUgKEhUVFBTKSByZXF1ZXN0cyAtLT4KKyAgCTxhdHRyaWJ1dGUgbmFtZT0ic2VjdXJlcG9ydCIgdmFsdWU9IjQ0MyIgdHlwZT0ibnVtYmVyIiAvPgorICAJPCEtLS0JVGhlIHNvdXJjZSBmb3IgcmVxdWVzdHMgbWFkZSBieSB0aGlzIGRhdGFzZXQuIFRoZSB2YWx1ZSBjYW4gYmUgYSBwYXRobmFtZSBvciBhbiBhYnNvbHV0ZSBvciByZWxhdGl2ZSBVUkwuIElmIHRoZSB2YWx1ZSBpcyBhIFVSTCAoc3RhcnRzIHdpdGggImh0dHA6IiksIHRoZSBkYXRhc2V0IHdpbGwgYmUgY29uZmlndXJlZCB0byBsb2FkIGl0cyBkYXRhIGF0IHJ1bnRpbWUuIE90aGVyd2lzZSwgdGhlIGRhdGEgaXMgaW5jbHVkZWQgaW5saW5lIGludG8gdGhlIGFwcGxpY2F0aW9uIGF0IGNvbXBpbGUgdGltZS4gIC0tPgorICAJPGF0dHJpYnV0ZSBuYW1lPSJzcmMiIC8+CisgIAk8IS0tLQlUaGUgbnVtZXIgb2YgbWlsbGlzZWNvbmRzIHRvIHdhaXQgYmVmb3JlIHRoZSByZXF1ZXN0IHRpbWVzIG91dCwgYW5kIGFuIG9udGltZW91dCBldmVudCBpcyBzZW50LiAtLT4KKyAgCTxhdHRyaWJ1dGUgbmFtZT0idGltZW91dCIgLz4KKyAgCTwhLS0tCVdoZW4gdHJ1ZSwgdGhlIHNlcnZlciB3aWxsIHRyaW0gd2hpdGVzcGFjZSBpbiB0aGUgWE1MIGRhdGEgKGRlZmF1bHRzIHRvIGZhbHNlKS4gIC0tPgorICAJPGF0dHJpYnV0ZSBuYW1lPSJ0cmltd2hpdGVzcGFjZSIgLz4KKyAgCTwhLS0tCVdoZW4gc2V0IHRvICJodHRwIiBvciAic29hcCIsIHRoZSBkYXRhc2V0IGludGVycHJldHMgaXQncyBzcmMgYXR0cmlidXRlIGFzIGEgVVJMIHRvIGJlIGxvYWRlZCBhdCBydW50aW1lLiBJZiB0aGUgInNyYyIgYXR0cmlidXRlIGlzIHNldCB0byBhIFVSTCAoZS5nLiwgc3RhcnRzIHdpdGggImh0dHA6IikgdGhlbiB0aGUgdHlwZSBhdHRyaWJ1dGUgaW1wbGljaXRseSBiZWNvbWVzICJodHRwIi4gIC0tPgorICAJPGF0dHJpYnV0ZSBuYW1lPSJ0eXBlIiAvPgorIAkKKzwvY2xhc3M+CisKKzwvbGlicmFyeT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvbGZjL2V2ZW50Lmx6eCBiL3Rlc3QvY29yZS9sZmMvZXZlbnQubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3MDBhNTEKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvbGZjL2V2ZW50Lmx6eApAQCAtMCwwICsxLDIzIEBACis8bGlicmFyeSB4bWxucz0iaHR0cDovL2xvY2FsaG9zdC9vcGVubGFzemxvL2x6eCIgDQorICAgICAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgDQorICAgICAgICAgICAgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vbG9jYWxob3N0L29wZW5sYXN6bG8vbHp4IC4vLi4vLi4vLi4vbHp4LnhzZCI+DQorPCEtLS0gVGhlIHNlbmRlciBpbiBMYXN6bG8ncyBwb2ludC10by1wb2ludCBldmVudCBzeXN0ZW0uDQorRXZlbnRzIHVuZGVybHkgbW9zdCBvZiB0aGUgZnVuY3Rpb25hbGl0eSBpbiBPcGVuTGFzemxvIGFwcGxpY2F0aW9ucy4gVW5saWtlIGV2ZW50cyBpbiBzaW1pbGFyIHN5c3RlbXMsIE9wZW5MYXN6bG8ncyBldmVudHMgYXJlIHBvaW50LXRvLXBvaW50LCBtZWFuaW5nIHRoYXQgdGhlcmUgaXMgbm8gZ2VuZXJhbCBicm9hZGNhc3QgbWVjaGFuaXNtIGZvciBldmVudHMsIGFuZCBldmVudHMgZG8gbm90IHRyaWNrbGUgdXAgb3IgZG93biB0aGUgaW5zdGFuY2UgaGllcmFyY2h5LiBJbnN0ZWFkLCBvYmplY3RzIGNhbGxlZCA8aGFuZGxlcj5zIHVzZSBMekRlbGVnYXRlLnJlZ2lzdGVyKCkgdG8gcmVnaXN0ZXIgdG8gcmVjZWl2ZSBldmVudHMuDQorDQorQW4gZXZlbnQgaXMgaW1wbGljaXRseSBkZWNsYXJlZCBmb3IgZXZlcnkgYXR0cmlidXRlIG9mIGEgY2xhc3Mgb3IgaW5zdGFuY2UgYW5kIHNlbnQgd2hlbiB0aGF0IGF0dHJpYnV0ZSBpcyBjaGFuZ2VkLiBTbywgZm9yIGluc3RhbmNlLCBpZiBhIGNsYXNzIGhhcyBhbiBhdHRyaWJ1dGUgZm9vLCB5b3UgY2FuIHJlY2VpdmUgZXZlbnRzIHdoZW4gZm9vIGNoYW5nZXMgYnkgcmVnaXN0ZXJpbmcgZm9yIHRoZSBvbmZvbyBldmVudC4NCisNCitFdmVudHMgYXJlIHNlbnQgd2l0aCBhIHNpbmdsZSBhcmd1bWVudCwgd2hpY2ggdXN1YWxseSBjb252ZXlzIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwcm9wZXJ0eSB0aGF0IGNoYW5nZWQuIFRoZSBkZWZhdWx0IGJlaGF2aW9yIG9mIHRoZSBMekV2ZW50YWJsZS5zZXRBdHRyaWJ1dGUoKSBtZXRob2QgaXMgdG8gc2V0IHRoZSBuYW1lZCBwcm9wZXJ0eSBhbmQgc2VuZCB0aGUgZXZlbnQgY2FsbGVkICJvbiIgKyBwcm9wZXJ0eS4gVGhpcyBpcyBnZW5lcmFsIG1lY2hhbmlzbSB0aGF0IHVwZGF0ZXMgY29uc3RyYWludHMgaW4gYSBPcGVuTGFzemxvIHByb2dyYW1zLiBGb3IgaW5zdGFuY2UsIHdoZW4gYSB2aWV3IGNoYW5nZXMgaXRzIHggcG9zaXRpb24sIGl0IHNlbmRzIHRoZSBldmVudCBvbnggd2l0aCB0aGUgbmV3IHZhbHVlIGZvciBpdHMgeCBwcm9wZXJ0eS4NCisNCitFeGFtcGxlOg0KKzxoYW5kbGVyIG5hbWU9Im9uYXZhbHVlIiByZWZlcmVuY2U9ImV2ZW50U2VuZGVyIiBhcmdzPSJ2Ij4NCisgIHRoaXMuc2V0QXR0cmlidXRlKCd4JyAsIHYpOw0KKzwvaGFuZGxlcj4gDQorIC0tPiAgICAgICAgICAgIA0KKzxjbGFzcyBuYW1lPSJldmVudCIgZXh0ZW5kcz0iZmFsc2UiPg0KKw0KKyAgICA8IS0tLSBUaGUgbmFtZSBvZiB0aGUgZXZlbnQgLS0+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ic3RyaW5nIiAvPg0KKyAgICANCis8L2NsYXNzPg0KKyAgICAgICAgICAgIA0KKzwvbGlicmFyeT4gICAgICAgICAgICAKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvbGZjL2ZhY2UubHp4IGIvdGVzdC9jb3JlL2xmYy9mYWNlLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NWVmOThjCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2xmYy9mYWNlLmx6eApAQCAtMCwwICsxLDE2IEBACis8bGlicmFyeSB4bWxucz0iaHR0cDovL2xvY2FsaG9zdC9vcGVubGFzemxvL2x6eCIgDQorICAgICAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgDQorICAgICAgICAgICAgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vbG9jYWxob3N0L29wZW5sYXN6bG8vbHp4IC4vLi4vLi4vLi4vbHp4LnhzZCI+DQorPCEtLS0gRGVmaW5lcyBhIGZvbnQgZmFjZSBvciBzdHlsZSB3aXRoaW4gdGhlIGZvbnQgZmFtaWx5IHRoYXQgdGhlIG91dGVyIGVsZW1lbnQgZGVmaW5lcy4NCisgLS0+DQorPGNsYXNzIG5hbWU9ImZhY2UiIGV4dGVuZHM9ImZhbHNlIj4NCisNCisJPCEtLS0JVGhlIHBhdGggb2YgYSBmaWxlIHRoYXQgY29udGFpbnMgdGhlIHNvdXJjZSBmb3IgdGhpcyBvYmplY3QuIC0tPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9InNyYyIgdHlwZT0ic3RyaW5nIiAvPg0KKyAgICA8IS0tLQlDb3JyZXNwb25kcyB0byB0aGUgZm9udHN0eWxlIGF0dHJpYnV0ZSBvZiBhIHZpZXcuDQorICAgIE9uZSBvZjogCWJvbGQgfCBpdGFsaWMgfCBib2xkIGl0YWxpYyB8IGl0YWxpYyBib2xkIHwgcGxhaW4gIC0tPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9InN0eWxlIiB0eXBlPSJzdHJpbmciIHZhbHVlPSJib2xkfGl0YWxpY3xib2xkIGl0YWxpY3xpdGFsaWMgYm9sZHxwbGFpbiIvPg0KKyAgICANCis8L2NsYXNzPg0KKw0KKzwvbGlicmFyeT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvbGZjL2ZvbnQubHp4IGIvdGVzdC9jb3JlL2xmYy9mb250Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMzA4MzYwCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2xmYy9mb250Lmx6eApAQCAtMCwwICsxLDIxIEBACis8bGlicmFyeSB4bWxucz0iaHR0cDovL2xvY2FsaG9zdC9vcGVubGFzemxvL2x6eCIgDQorICAgICAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgDQorICAgICAgICAgICAgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vbG9jYWxob3N0L29wZW5sYXN6bG8vbHp4IC4vLi4vLi4vLi4vbHp4LnhzZCI+DQorPCEtLS1UYWcgZm9yIGluY2x1ZGluZyBmb250cy4NCitUaGUgPGZvbnQ+IHRhZyBpcyB1c2VkIHRvIGltcG9ydCBmb250cyBpbnRvIGFuIExaWCBhcHBsaWNhdGlvbi4gRWFjaCBmb250IGluIGFuIExaWCBhcHBsaWNhdGlvbiBoYXMgYSBzb3VyY2UgZmlsZSAoaW4gVHJ1ZVR5cGUgZm9ybWF0KSwgYSBuYW1lLCBhbmQgYSBzdHlsZSAocGxhaW4sIGJvbGQsIGl0YWxpYywgb3IgYm9sZCBpdGFsaWMpLg0KKw0KK0EgZm9udCBlbGVtZW50IHdpdGhpbiBhIDxjYW52YXM+IG9yIDxsaWJyYXJ5PiBkZWZpbmVzIGEgZm9udCwgd2hpY2ggY2FuIGJlIHJlZmVyZW5jZWQgYnkgdGhlIGZvbnQgYXR0cmlidXRlIG9mIGEgdmlldywgb3IgYnkgdGhlIGZhY2UgYXR0cmlidXRlIG9mIHRoZSA8Zm9udD4gdGFnIHdpdGhpbiBIVE1MIG1hcmt1cC4gQSBmb250IGVsZW1lbnQgY2FuIGRlZmluZSBhIHNpbmdsZSBmb250IGZhY2Ugb3Igc3R5bGUsIGJ5IHVzaW5nIHRoZSBzcmMgYXR0cmlidXRlIHRvIHJlZmVyIHRvIGEgVHJ1ZVR5cGUgZm9udCB0aGF0IGlzIGluY2x1ZGVkIGluIHRoZSBhcHBsaWNhdGlvbi4gDQorIC0tPg0KKzxjbGFzcyBuYW1lPSJmb250IiBleHRlbmRzPSJmYWxzZSI+DQorDQorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ic3RyaW5nIiAvPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9InNyYyIgdHlwZT0ic3RyaW5nIiAvPg0KKyAgICANCisgICAgPCEtLS0gSFRNTCBzcGVjaWZpYyAtLT4NCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJjb2xvciIgdHlwZT0ic3RyaW5nIiAvPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9ImZhY2UiIHR5cGU9InN0cmluZyIgLz4NCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJzaXplIiB0eXBlPSJzdHJpbmciIC8+DQorICAgIA0KKzwvY2xhc3M+DQorDQorPC9saWJyYXJ5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9sZmMvZnJhbWUubHp4IGIvdGVzdC9jb3JlL2xmYy9mcmFtZS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGY5ZDlmZgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9sZmMvZnJhbWUubHp4CkBAIC0wLDAgKzEsMjIgQEAKKzxsaWJyYXJ5IHhtbG5zPSJodHRwOi8vbG9jYWxob3N0L29wZW5sYXN6bG8vbHp4IiANCisgICAgICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiANCisgICAgICAgICAgICB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly9sb2NhbGhvc3Qvb3Blbmxhc3psby9senggLi8uLi8uLi8uLi9sengueHNkIj4NCis8IS0tLQ0KK0EgZnJhbWUgb2YgYSBtdWx0aS1mcmFtZSByZXNvdXJjZS4NCisNCitUaGUgPGZyYW1lPiB0YWcgaXMgdXNlZCB0byBkZWZpbmUgYSBzaW5nbGUgZnJhbWUgb2YgYSBtdWx0aS1mcmFtZSA8cmVzb3VyY2U+LiBBIG11bHRpLWZyYW1lIHJlc291cmNlIGNvbnRhaW5zIHNldmVyYWwgaW1hZ2VzIHdoaWNoIGNhbiBiZSB0b2dnbGVkIGFtb25nIGJ5IHNjcmlwdCBjb21tYW5kcy4NCisNCitNdWx0aXBsZSBmcmFtZSB0YWdzIGNhbiBiZSBkZWNsYXJlZCBjb25zZWN1dGl2ZWx5IHRvIHByb2R1Y2UgYSBzaW5nbGUgcmVzb3VyY2UgY29uc3RydWN0ZWQgb2YgYW4gdW5saW1pdGVkIG51bWJlciBvZiBmcmFtZXMuIFN1Y2ggY29tcG9zZWQgcmVzb3VyY2VzIGFyZSBvZnRlbiB1c2VkIHRvIGNvbnZlbmllbnRseSBpbXBsZW1lbnQgbW91c2Ugcm9sbG92ZXJzLCBidXR0b24gc3RhdGVzLCBvciBvdGhlciBVSSBlbGVtZW50cyB3aGVyZSBhbHRlcm5hdGUgdmlld3Mgb2YgYSByZXNvdXJjZSBhcmUgcmVxdWlyZWQuIE9uY2UgYSBtdWx0aS1mcmFtZSByZXNvdXJjZSBoYXMgYmVlbiBkZWZpbmVkIGFuZCBwcmVzZW50ZWQgd2l0aGluIGEgPHZpZXc+LCB0aGUgZGV2ZWxvcGVyIGNhbiBkZXNpZ25hdGUgd2hpY2ggZnJhbWUgaXMgYWN0aXZlbHkgdmlzaWJsZSB0aHJvdWdoIHRoZSB1c2Ugb2YgdGhlIHZpZXcncyBzZXRSZXNvdXJjZU51bWJlciBtZXRob2QuDQorDQorTXVsdGktZnJhbWUgcmVzb3VyY2VzIGNhbiBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggY29tcG9uZW50cyBzdWNoIGFzIDxiYXNlYnV0dG9uPiwgd2hpY2ggcHJlLWRlZmluZSBjb21wbGV4IGJ1dHRvbiBiZWhhdmlvciB1c2luZyBmcmFtZXMgZGVzaWduYXRlZCBieSB0aGUgdXNlci4gDQorDQorIC0tPg0KKzxjbGFzcyBuYW1lPSJmcmFtZSIgZXh0ZW5kcz0iZmFsc2UiPg0KKw0KKzwhLS0tCVRoZSBuYW1lIG9mIGEgdmFyaWFibGUgdGhhdCB3aWxsIGJlIHNldCB0byB0aGlzIG9iamVjdCB3aGVuIHRoZSBhcHBsaWNhdGlvbiBpcyBzdGFydGVkLiBJZiB0aGlzIGVsZW1lbnQgaXMgZGlyZWN0bHkgd2l0aGluIGEgPGNhbnZhcz4gb3IgPGxpYnJhcnk+IGVsZW1lbnQsIHRoZSBnbG9iYWwgdmFyaWFibGUgYW5kIHRoZSBjYW52YXMgcHJvcGVydHkgd2l0aCB0aGlzIG5hbWUgd2lsbCBiZSBzZXQgdG8gdGhpcyBvYmplY3QuIElmIHRoaXMgZWxlbWVudCBpcyB3aXRoaW4gYW5vdGhlciBvYmplY3QsIHRoYXQgb2JqZWN0J3MgcHJvcGVydHkgd2l0aCB0aGlzIG5hbWUgd2lsbCBiZSBzZXQgdG8gdGhpcyBvYmplY3QuICAtLT4NCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB0eXBlPSJ0b2tlbiIgLz4NCisgICAgPCEtLS0JVGhlIHBhdGggb2YgYSBmaWxlIHRoYXQgY29udGFpbnMgdGhlIHNvdXJjZSBmb3IgdGhpcyBvYmplY3QuIC0tPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9InNyYyIgdHlwZT0ic3JjIiAvPg0KKyAgICANCis8L2NsYXNzPg0KKzwvbGlicmFyeT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvbGZjL2hhbmRsZXIubHp4IGIvdGVzdC9jb3JlL2xmYy9oYW5kbGVyLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDZhNGMyCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2xmYy9oYW5kbGVyLmx6eApAQCAtMCwwICsxLDE2IEBACis8bGlicmFyeSB4bWxucz0iaHR0cDovL2xvY2FsaG9zdC9vcGVubGFzemxvL2x6eCIgDQorICAgICAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgDQorICAgICAgICAgICAgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vbG9jYWxob3N0L29wZW5sYXN6bG8vbHp4IC4vLi4vLi4vLi4vbHp4LnhzZCI+DQorPCEtLSBUaGUgcmVjZWl2ZXIgaW4gTGFzemxvJ3MgcG9pbnQtdG8tcG9pbnQgZXZlbnQgc3lzdGVtLg0KK0EgZGVsZWdhdGUgaXMgYW4gb2JqZWN0IHRoYXQgY2FsbHMgYSBzcGVjaWZpYyBtZXRob2Qgb24gYSBzcGVjaWZpYyBvYmplY3Qgd2hlbiBpdHMgZXhlY3V0ZSBtZXRob2QgaXMgY2FsbGVkLiBJdCBpcyBlc3NlbnRpYWxseSBhIG1ldGhvZCBjbG9zdXJlLg0KKw0KK0RlbGVnYXRlcywgYWxvbmcgd2l0aCA8ZXZlbnQ+LCBjb21wcmlzZSBMYXN6bG8ncyBwb2ludCB0byBwb2ludCBldmVudCBzeXN0ZW0uIEEgZGVsZWdhdGUgcmVwcmVzZW50cyBhIG5hbWVkIG1ldGhvZCBvZiBhbiBvYmplY3QuIERlbGVnYXRlcyBhcmUgbW9zdGx5IHJlZ2lzdGVyZWQgd2l0aCBldmVudHMsIGJ1dCB0aGV5IGNhbiBiZSB1c2VkIGFueXdoZXJlIGEgZnVuY3Rpb24gY2FsbGJhY2sgd291bGQgdHJhZGl0aW9uYWxseSBiZSBjYWxsZWQgZm9yOiBmb3IgaW5zdGFuY2UsIEx6VGltZXJTZXJ2aWNlLmFkZFRpbWVyKCkgdGFrZXMgYSBkZWxlZ2F0ZSBhcyBpdHMgYXJndW1lbnQuDQorDQorWW91IGNhbiBjcmVhdGUgYSBkZWxlZ2F0ZSBleHBsaWNpdGx5IHVzaW5nIHRoZSBMekRlbGVnYXRlIGNsYXNzLCBvciBpbXBsaWNpdGx5IGJ5IHNwZWNpZnlpbmcgYW4gZXZlbnQgaGFuZGxlci4gVGhlcmUgYXJlIHR3byBzeW50YXhlcyB3aXRoIHdoaWNoIHlvdSBjYW4gc3BlY2lmeSBhbiBldmVudCBoYW5kbGVyOiBpbiB0aGUgb3BlbiB0YWcgdXNlZCB0byBjcmVhdGUgdGhhdCBvYmplY3QsIG9yIGJ5IHVzaW5nIHRoZSA8aGFuZGxlcj4gdGFnIGluIHRoZSBib2R5IG9mIHRoZSBvYmplY3QuIC0tPg0KKzxjbGFzcyBuYW1lPSJoYW5kbGVyIiBleHRlbmRzPSJmYWxzZSI+DQorCTxhdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ic3RyaW5nIiByZXF1aXJlZD0idHJ1ZSIgLz4NCisJPGF0dHJpYnV0ZSBuYW1lPSJyZWZlcmVuY2UiIHZhbHVlPSJ0aGlzIiB0eXBlPSJyZWZlcmVuY2UiLz4NCisJPGF0dHJpYnV0ZSBuYW1lPSJhcmdzIiB2YWx1ZT0iIiB0eXBlPSJzdHJpbmciLz4NCisJPGF0dHJpYnV0ZSBuYW1lPSJtZXRob2QiIHR5cGU9InN0cmluZyIvPg0KKzwvY2xhc3M+DQorPC9saWJyYXJ5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9sZmMvaHRtbF90YWdzLmx6eCBiL3Rlc3QvY29yZS9sZmMvaHRtbF90YWdzLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYWEzYTNkCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2xmYy9odG1sX3RhZ3MubHp4CkBAIC0wLDAgKzEsNTEgQEAKKzxsaWJyYXJ5IHhtbG5zPSJodHRwOi8vbG9jYWxob3N0L29wZW5sYXN6bG8vbHp4IiAKKyAgICAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIAorICAgICAgICAgICAgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vbG9jYWxob3N0L29wZW5sYXN6bG8vbHp4IC4vLi4vLi4vLi4vbHp4LnhzZCI+Cis8IS0tLSBIVE1MIHNwZWNpZmljIC0tPgorPGNsYXNzIG5hbWU9ImEiIGV4dGVuZHM9ImZhbHNlIj4KKwk8IS0tLSAJVGhlIGxpbmsgdGFyZ2V0IC0tPgorCTxhdHRyaWJ1dGUgbmFtZT0iaHJlZiIgLz4KKwk8IS0tLQlUaGUgdmFsdWUgb2YgdGhpcyBhdHRyaWJ1dGUgZGV0ZXJtaW5lcyB3aGVyZSB0aGUgbGluayB0YXJnZXQgd2lsbCBiZSBkaXNwbGF5ZWQuIFRoZSBpbnRlcnByZXRhdGlvbiBpcyB0aGUgc2FtZSBhcyBpbiBIVE1MLCB3aGVyZSB0aGUgImN1cnJlbnQgZnJhbWUiIGlzIHRoZSBmcmFtZSBjb250YWluaW5nIHRoZSBMWlggYXBwbGljYXRpb24uIFRoZSB2YWx1ZSBtdXN0IGJlIGEgbmFtZSBiZWdpbm5pbmcgd2l0aCBhbiBhbHBoYWJldGljIGNoYXJhY3Rlciwgb3Igb25lIG9mIHRoZSBmb2xsb3dpbmc6CisKK19ibGFuaworICAgIFRoZSB1c2VyIGFnZW50IHNob3VsZCBsb2FkIHRoZSBkZXNpZ25hdGVkIGRvY3VtZW50IGluIGEgbmV3LCB1bm5hbWVkIHdpbmRvdy4gCitfcGFyZW50CisgICAgVGhlIHVzZXIgYWdlbnQgc2hvdWxkIGxvYWQgdGhlIGRvY3VtZW50IGludG8gdGhlIGZ1bGwsIG9yaWdpbmFsIHdpbmRvdyAodGh1cyBjYW5jZWxpbmcgYWxsIG90aGVyIGZyYW1lcykuIFRoaXMgdmFsdWUgaXMgZXF1aXZhbGVudCB0byBfc2VsZiBpZiB0aGUgY3VycmVudCBmcmFtZSBoYXMgbm8gcGFyZW50LiAKK19zZWxmCisgICAgVGhlIHVzZXIgYWdlbnQgc2hvdWxkIGxvYWQgdGhlIGRvY3VtZW50IGluIHRoZSBzYW1lIGZyYW1lIGFzIHRoZSBlbGVtZW50IHRoYXQgcmVmZXJzIHRvIHRoaXMgdGFyZ2V0LiAKK190b3AKKyAgICBUaGUgdXNlciBhZ2VudCBzaG91bGQgbG9hZCB0aGUgZG9jdW1lbnQgaW50byB0aGUgaW1tZWRpYXRlIEZSQU1FU0VUIHBhcmVudCBvZiB0aGUgY3VycmVudCBmcmFtZS4gVGhpcyB2YWx1ZSBpcyBlcXVpdmFsZW50IHRvIF9zZWxmIGlmIHRoZSBjdXJyZW50IGZyYW1lIGhhcyBubyBwYXJlbnQuIAorCisJIC0tPgorCSA8YXR0cmlidXRlIG5hbWU9InRhcmdldCIgLz4KKzwvY2xhc3M+CisKKzwhLS0tIEhUTUwgc3BlY2lmaWMgLS0+Cis8Y2xhc3MgbmFtZT0iYiIgZXh0ZW5kcz0iZmFsc2UiIC8+CisKKzwhLS0tIEhUTUwgc3BlY2lmaWMgLS0+Cis8Y2xhc3MgbmFtZT0iYnIiIGV4dGVuZHM9ImZhbHNlIiAvPgorCis8IS0tLSBIVE1MIHNwZWNpZmljIC0tPgorPGNsYXNzIG5hbWU9ImkiIGV4dGVuZHM9ImZhbHNlIiAvPgorCis8IS0tLSBIVE1MIHNwZWNpZmljIC0tPgorPGNsYXNzIG5hbWU9ImltZyIgZXh0ZW5kcz0iZmFsc2UiID4KKwk8YXR0cmlidXRlIG5hbWU9ImFsaWduIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0iaGVpZ2h0IiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0iaHNwYWNlIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0ic3JjIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0idnNwYWNlIiAvPgorCTxhdHRyaWJ1dGUgbmFtZT0id2lkdGgiIC8+Cis8L2NsYXNzPgorCis8IS0tLSBIVE1MIHNwZWNpZmljIC0tPgorPGNsYXNzIG5hbWU9InAiIGV4dGVuZHM9ImZhbHNlIiAvPgorCis8IS0tLSBIVE1MIHNwZWNpZmljIC0tPgorPGNsYXNzIG5hbWU9InByZSIgZXh0ZW5kcz0iZmFsc2UiIC8+CisKKzwhLS0tIEhUTUwgc3BlY2lmaWMgLS0+Cis8Y2xhc3MgbmFtZT0idSIgZXh0ZW5kcz0iZmFsc2UiIC8+CisKKzwvbGlicmFyeT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvbGZjL2ltcG9ydC5senggYi90ZXN0L2NvcmUvbGZjL2ltcG9ydC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzdiZDkxOAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9sZmMvaW1wb3J0Lmx6eApAQCAtMCwwICsxLDExIEBACis8bGlicmFyeSB4bWxucz0iaHR0cDovL2xvY2FsaG9zdC9vcGVubGFzemxvL2x6eCIgDQorICAgICAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgDQorICAgICAgICAgICAgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vbG9jYWxob3N0L29wZW5sYXN6bG8vbHp4IC4vLi4vLi4vLi4vbHp4LnhzZCI+DQorPCEtLS0gVGhlIDxpbXBvcnQ+IHRhZyBpcyB1c2VkIHRvIGltcG9ydCwgYXQgcnVuIHRpbWUsIHNvdXJjZSBjb2RlIGNvbnRhaW5lZCBpbiBhbm90aGVyIChsaWJyYXJ5KSBmaWxlLiBTZWUgdGhlIEd1aWRlIGZvciBhIGNvbXBsZXRlIGRpc2N1c3Npb24uIEFsc28gc2VlIHRoZSA8bGlicmFyeT4gdGFnLiAtLT4NCis8Y2xhc3MgbmFtZT0iaW1wb3J0IiBleHRlbmRzPSJub2RlIj4NCisJPCEtLS0gIEEgcmVmZXJlbmNlIHRvIGEgdGFyZ2V0IGZpbGUgd2hvc2UgY29udGVudCBpcyB0cmVhdGVkIGFzIGEgbG9hZGFibGUgbW9kdWxlIC0tPg0KKwk8YXR0cmlidXRlIG5hbWU9ImhyZWYiIHR5cGU9InN0cmluZyIgLz4NCisJPGF0dHJpYnV0ZSBuYW1lPSJwcm94aWVkIiB0eXBlPSJzdHJpbmciIC8+DQorCTxhdHRyaWJ1dGUgbmFtZT0ic3RhZ2UiIHR5cGU9InBhdHRlcm4iIHZhbHVlPSJsYXRlfGRlZmVyIiAvPg0KKzwvY2xhc3M+DQorPC9saWJyYXJ5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9sZmMvaW5jbHVkZS5senggYi90ZXN0L2NvcmUvbGZjL2luY2x1ZGUubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmNDlhOTAKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvbGZjL2luY2x1ZGUubHp4CkBAIC0wLDAgKzEsMTEgQEAKKzxsaWJyYXJ5IHhtbG5zPSJodHRwOi8vbG9jYWxob3N0L29wZW5sYXN6bG8vbHp4IiANCisgICAgICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiANCisgICAgICAgICAgICB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly9sb2NhbGhvc3Qvb3Blbmxhc3psby9senggLi8uLi8uLi8uLi9sengueHNkIj4NCis8IS0tLSBUaGUgPGluY2x1ZGU+IHRhZyBpcyB1c2VkIHRvIGluY2x1ZGUgc291cmNlIGNvZGUgY29udGFpbmVkIGluIGFub3RoZXIgZmlsZS4gU2VlIHRoZSBHdWlkZSBmb3IgYSBjb21wbGV0ZSBkaXNjdXNzaW9uLiBBbHNvIHNlZSB0aGUgPGxpYnJhcnk+IHRhZy4gLS0+DQorPGNsYXNzIG5hbWU9ImluY2x1ZGUiIGV4dGVuZHM9ImZhbHNlIj4NCisJPCEtLS0gIEEgcmVmZXJlbmNlIHRvIGEgdGFyZ2V0IGZpbGUgd2hvc2UgY29udGVudCBpcyBpbmNsdWRlZCBpbiB0aGUgYXBwbGljYXRpb24gdGhhdCBjb250YWlucyB0aGlzIGluY2x1ZGUgZWxlbWVudC4gLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0iaHJlZiIgdHlwZT0ic3RyaW5nIiAvPg0KKwk8IS0tLSAgSWYgdGhpcyBhdHRyaWJ1dGUgaGFzIHRoZSB2YWx1ZSB0ZXh0ICwgdGhlIGNvbnRlbnQgb2YgdGhlIHRhcmdldCBmaWxlIGlzIGluY2x1ZGVkIGFzIHRleHQuIE90aGVyd2lzZSwgaXQgaXMgcmVhZCBhcyBYTUwuICAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJ0eXBlIiB0eXBlPSJwYXR0ZXJuIiB2YWx1ZT0idGV4dHx4bWwiIC8+DQorPC9jbGFzcz4NCis8L2xpYnJhcnk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2xmYy9pbnB1dHRleHQubHp4IGIvdGVzdC9jb3JlL2xmYy9pbnB1dHRleHQubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2NTdlZjUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvbGZjL2lucHV0dGV4dC5sengKQEAgLTAsMCArMSwyMiBAQAorPGxpYnJhcnkgeG1sbnM9Imh0dHA6Ly9sb2NhbGhvc3Qvb3Blbmxhc3psby9sengiIA0KKyAgICAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIA0KKyAgICAgICAgICAgIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL2xvY2FsaG9zdC9vcGVubGFzemxvL2x6eCAuLy4uLy4uLy4uL2x6eC54c2QiPg0KKzwhLS0tDQorVGhlIGJhc2ljIGlucHV0LXRleHQgZWxlbWVudC4NCitKYXZhU2NyaXB0OiBsei5pbnB1dHRleHQNCisNCitUaGlzIHRhZyBjcmVhdGVzIGFuIGFyZWEgb2YgdGhlIGNhbnZhcyB0aGF0IHRoZSB1c2VyIGNhbiB1c2UgdG8gZWRpdCB0ZXh0LiBJdCBpcyBlcXVpdmFsZW50IHRvIHRoZSBIVE1MIDxpbnB1dCB0eXBlPSJ0ZXh0Ij4sIDxpbnB1dCB0eXBlPSJwYXNzd29yZCI+LCBhbmQgdGV4dGFyZWEgdGFncy4NCisNCitTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSA8dGV4dD4gdGFnIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IGF0dHJpYnV0ZXMsIGFuZCBvZiBzY3JvbGxpbmcuIA0KKyAtLT4NCis8Y2xhc3MgbmFtZT0iaW5wdXR0ZXh0IiBleHRlbmRzPSJ0ZXh0Ij4NCisJPCEtLS0JSWYgdHJ1ZSwgdGhlIGlucHV0dGV4dCB3aWxsIGJlIGVkaXRhYmxlIC0tPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9ImVuYWJsZWQiIHR5cGU9ImJvb2xlYW4iLz4NCisgICAgPCEtLS0JSWYgdHJ1ZSwgdGhlIGlucHV0dGV4dCBjb250ZW50cyB3aWxsIGJlIG9ic2N1cmVkIC0tPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9InBhc3N3b3JkIiAvPg0KKw0KKyAgICA8IS0tLVNlbnQgd2hlbmV2ZXIgdGhlIHRleHQgZmllbGQgaXMgZW5hYmxlZC4gLS0+DQorICAgIDxldmVudCBuYW1lPSJvbmVuYWJsZWQiIC8+DQorICAgIA0KKzwvY2xhc3M+DQorPC9saWJyYXJ5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9sZmMvbGlicmFyeS5senggYi90ZXN0L2NvcmUvbGZjL2xpYnJhcnkubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiNGIzNzgKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvbGZjL2xpYnJhcnkubHp4CkBAIC0wLDAgKzEsMTMgQEAKKzxsaWJyYXJ5IHhtbG5zPSJodHRwOi8vbG9jYWxob3N0L29wZW5sYXN6bG8vbHp4IiANCisgICAgICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiANCisgICAgICAgICAgICB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly9sb2NhbGhvc3Qvb3Blbmxhc3psby9senggLi8uLi8uLi8uLi9sengueHNkIj4NCis8IS0tLSBUaGUgPGxpYnJhcnk+IHRhZyBkZWZpbmVzIHRoZSByb290IGVsZW1lbnQgb2YgYSBsaWJyYXJ5IGZpbGUuIEFuIGFwcGxpY2F0aW9uIGNhbiB1c2UgdGhlIDxpbmNsdWRlPiB0YWcgdG8gaW5jbHVkZSB0aGUgY29kZSBpbiBhIGxpYnJhcnkgZmlsZS4NCisNCitTZWUgdGhlIEd1aWRlIGZvciBhIGNvbXBsZXRlIGRpc2N1c3Npb24uIEFsc28gc2VlIHRoZSA8aW5jbHVkZT4gdGFnLiAtLT4NCis8Y2xhc3MgbmFtZT0ibGlicmFyeSIgaXNSb290PSJ0cnVlIj4NCisJPGF0dHJpYnV0ZSBuYW1lPSJwcm94aWVkIiB0eXBlPSJzdHJpbmciIC8+DQorCTwhLS0tIElmIGZhbHNlLCBkaXNhYmxlcyB2YWxpZGF0aW9uIGFnYWluc3QgdGhlIHNjaGVtYSBkdXJpbmcgY29tcGlsYXRpb24uIC0tPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9InZhbGlkYXRlIiB0eXBlPSJib29sZWFuIiAvPg0KKzwvY2xhc3M+DQorDQorPC9saWJyYXJ5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9sZmMvbWV0aG9kLmx6eCBiL3Rlc3QvY29yZS9sZmMvbWV0aG9kLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjQwNmRlCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2xmYy9tZXRob2QubHp4CkBAIC0wLDAgKzEsMjAgQEAKKzxsaWJyYXJ5IHhtbG5zPSJodHRwOi8vbG9jYWxob3N0L29wZW5sYXN6bG8vbHp4IiANCisgICAgICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiANCisgICAgICAgICAgICB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly9sb2NhbGhvc3Qvb3Blbmxhc3psby9senggLi8uLi8uLi8uLi9sengueHNkIj4NCis8IS0tLSBBdHRhY2hlcyBhIGZ1bmN0aW9uIG9yIGV2ZW50IGhhbmRsZXIgdG8gYW4gb2JqZWN0IG9yIGNsYXNzLiAtLT4NCis8Y2xhc3MgbmFtZT0ibWV0aG9kIiBleHRlbmRzPSJmYWxzZSI+DQorCTwhLS0tICBUaGUgbmFtZSBvZiBhIHZhcmlhYmxlIHRoYXQgd2lsbCBiZSBzZXQgdG8gdGhpcyBvYmplY3Qgd2hlbiB0aGUgYXBwbGljYXRpb24gaXMgc3RhcnRlZC4gSWYgdGhpcyBlbGVtZW50IGlzIGRpcmVjdGx5IHdpdGhpbiBhIGNhbnZhcyBvciBsaWJyYXJ5IGVsZW1lbnQsIHRoZSBnbG9iYWwgdmFyaWFibGUgYW5kIHRoZSBjYW52YXMgcHJvcGVydHkgd2l0aCB0aGlzIG5hbWUgd2lsbCBiZSBzZXQgdG8gdGhpcyBvYmplY3QuIElmIHRoaXMgZWxlbWVudCBpcyB3aXRoaW4gYW5vdGhlciBvYmplY3QsIHRoYXQgb2JqZWN0J3MgcHJvcGVydHkgd2l0aCB0aGlzIG5hbWUgd2lsbCBiZSBzZXQgdG8gdGhpcyBvYmplY3QuIC0tPg0KKwk8YXR0cmlidXRlIG5hbWU9Im5hbWUiIHR5cGU9InN0cmluZyIgcmVxdWlyZWQ9InRydWUiIC8+DQorCTwhLS0tIFRoZSBwYXJhbWV0ZXIgbmFtZXMgb2YgdGhpcyBtZXRob2QuIFRoZSB2YWx1ZSBvZiB0aGlzIGF0dHJpYnV0ZSBpcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIEphdmFTY3JpcHQgaWRlbnRpZmllcnMuIC0tPg0KKwk8YXR0cmlidXRlIG5hbWU9ImFyZ3MiIHZhbHVlPSIiIHR5cGU9InN0cmluZyIvPg0KKyAgICA8IS0tLSBPbmUgb2Y6DQorY2xhc3MNCisgICAgVGhlIGF0dHJpYnV0ZSB3aWxsIGJlIGFuIGF0dHJpYnV0ZSBvZiB0aGUgY2xhc3M7IHRvIHJlZmVyIHRvIGl0LCB5b3Ugc2F5IGx6LmNsYXNzbmFtZS5hdHRyaWJ1dGVuYW1lIC4gDQoraW5zdGFuY2UNCisgICAgRWFjaCBpbnN0YW5jZSB3aWxsIGhhdmUgYW4gYXR0cmlidXRlIHdpdGggdGhlIHNwZWNpZmllZCBwcm9wZXJ0aWVzICggbmFtZSAsIHR5cGUgLCB2YWx1ZSAsIGV0Yy4pLiANCisNCitZb3UgY2FuIHNldCBhbGxvY2F0aW9uIHRvIGNsYXNzIHRvIGdldCBzdGF0aWMgYXR0cmlidXRlcy4gU3RhdGljIHByb3BlcnRpZXMgYXJlIGF0dGFjaGVkIHRvIHRoZSBjbGFzcyBpdHNlbGYsIGZvciBleGFtcGxlIGx6LmNsYXNzbmFtZSAuIC0tPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9ImFsbG9jYXRpb24iIHR5cGU9InN0cmluZyIgdmFsdWU9Imluc3RhbmNlfGNsYXNzIiAvPg0KKzwvY2xhc3M+DQorDQorPC9saWJyYXJ5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9sZmMvbm9kZS5senggYi90ZXN0L2NvcmUvbGZjL25vZGUubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjNjE1OTkKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvbGZjL25vZGUubHp4CkBAIC0wLDAgKzEsNzIgQEAKKzxsaWJyYXJ5IHhtbG5zPSJodHRwOi8vbG9jYWxob3N0L29wZW5sYXN6bG8vbHp4IiANCisgICAgICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiANCisgICAgICAgICAgICB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly9sb2NhbGhvc3Qvb3Blbmxhc3psby9senggLi8uLi8uLi8uLi9sengueHNkIj4NCis8IS0tLVRoZSBiYXNlIGNsYXNzIGZvciBhbGwgTGFzemxvIGNsYXNzZXMuDQorSmF2YVNjcmlwdDogbHoubm9kZQ0KK1RoZSBsei5ub2RlIGNsYXNzIHByb3ZpZGVzIHRoZSBiYXNpYyBpbnRlcmZhY2UgZm9yIE9wZW5MYXN6bG8gb2JqZWN0czogcGFyZW50L2NoaWxkIGhpZXJhcmNoeSwgc2V0dGVycywgaW50ZXJhY3Rpb24gd2l0aCB0aGUgaW5zdGFudGlhdG9yLCBhbmQgcmVmZXJlbmNlIHJlc29sdXRpb24uIE5ldyBub2RlcyAoYW5kIHN1YmNsYXNzZXMgdGhlcmVvZikgY2FuIGJlIGNyZWF0ZWQgYnkgbmV3LWluZyB0aGUgY2xhc3MsIGxpa2UgdGhpczogdmFyIG15bm9kZT0gbmV3IEx6Tm9kZSggcGFyZW50ICwgYXJncyApOyB3aGVyZSBwYXJlbnQgaXMgdGhlIHBhcmVudCBmb3IgdGhlIG5ldyBub2RlLCBhbmQgYXJncyBpcyBhbiBPYmplY3Qgd2hvc2UgbmFtZS92YWx1ZSBwYWlycyBhcmUgYXR0cmlidXRlcyB0byBiZSBzZXQgb24gdGhlIG5ldyBub2RlLiAgLS0+DQorPGNsYXNzIG5hbWU9Im5vZGUiID4NCis8IS0tLQlBIHJlZmVyZW5jZSB0byB0aGUgbm9kZSB0aGF0IGlzIGFuIGluc3RhbmNlIG9mIHRoZSA8Y2xhc3M+IHdoZXJlIHRoaXMgbm9kZSBpcyBkZWZpbmVkLiBNZW1iZXJzIG9mIHN0YXRlIHN1YmNsYXNzZXMgZG8gbm90IGRlZmluZSBjbGFzc3Jvb3QuIFRoaXMgaXMgY29udmVuaWVudCB0byB1c2Ugd2hlbiB5b3Ugd2FudCB0byBhY2Nlc3MgYW4gYXR0cmlidXRlIG9mIHRoZSBjbGFzcyBpbiBhIG1ldGhvZCBvciBldmVudCBoYW5kbGVyIHRoYXQgaXMgbmVzdGVkIGRlZXAgaW4gdGhlIG5vZGUgaGllcmFyY2h5LiBGb3IgZXhhbXBsZSwgdG8gc2V0IHRoZSBiZ2NvbG9yIG9mIHRoZSBjbGFzcyBvYmplY3QsIGluc3RlYWQgb2YgcGFyZW50LnBhcmVudC5wYXJlbnQuc2V0QXR0cmlidXRlKGJnY29sb3IsIDB4RkZGRkZGKSB5b3UgY2FuIHNpbXBseSB1c2UgY2xhc3Nyb290LnNldEF0dHJpYnV0ZShiZ2NvbG9yLCAweEZGRkZGRikuICAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJjbGFzc3Jvb3QiIC8+DQorCTwhLS0tCUlmIHRoaXMgbm9kZSBpcyByZXBsaWNhdGVkIGR1ZSB0byBkYXRhIHJlcGxpY2F0aW9uLCB0aGUgTHpSZXBsaWNhdGlvbk1hbmFnZXIgd2hpY2ggY29udHJvbHMgdGhpcyBub2RlLiAgLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0iY2xvbmVNYW5hZ2VyIiAvPg0KKwk8IS0tLQlUaGUgZGF0YSBjb250ZXh0IGZvciB0aGUgbm9kZSAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJkYXRhIiAvPg0KKwk8IS0tLQlBIHNob3J0aGFuZCB2ZXJzaW9uIG9mIDxkYXRhcGF0aD4sIHNwZWNpZmllcyB0aGUgZGF0YSBzb3VyY2UgZm9yIHRoaXMgbm9kZSBhbmQgaXRzIGNoaWxkcmVuLiBZb3Ugd3JpdGUgYSBzdHJpbmcgdG8gZGF0YXBhdGg7IHJlYWRpbmcgZGF0YXBhdGggd2lsbCB5aWVsZCBhIGx6LmRhdGFwYXRoLiBJZiB0aGUgdmFsdWUgYmVnaW5zIHdpdGggYW4gaWRlbnRpZmllciBmb2xsb3dlZCBieSBhIGNvbG9uLCB0aGUgaWRlbnRpZmllciBuYW1lcyBhIGRhdGFzZXQsIGFuZCB0aGUgcG9ydGlvbiBvZiB0aGUgc3RyaW5nIGFmdGVyIHRoZSBjb2xvbiBpcyBhbiBYUGF0aCBkZXNjcmlwdGlvbiBvZiBhIHBvcnRpb24gb2YgdGhlIGRhdGEuIE90aGVyd2lzZSB0aGUgZW50aXJlIGF0dHJpYnV0ZSB2YWx1ZSBpcyBhbiBYUGF0aCBkZXNjcmlwdGlvbiBvZiB0aGUgZGF0YSwgcmVsYXRpdmUgdG8gdGhlIGRhdGEgc291cmNlIG9mIHRoaXMgbm9kZSdzIHBhcmVudCBlbGVtZW50LiBFeGFtcGxlczogIm15ZGF0YToiLCAibXlkYXRhOi9hL2IiLCAiL2EvYiIuICAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJkYXRhcGF0aCIgLz4NCisJPCEtLS0JQW4gYXR0cmlidXRlIHVzZWQgaW4gY29udGFpbmVyIGNsYXNzZXMuIElmIHNldCB0byBhIG5vbi1udWxsIHZhbHVlLCB0aGlzIGZvcmNlcyB0aGlzIG5vZGUgdG8gcnVuIGl0cyBkZXRlcm1pbmVQbGFjZW1lbnQgbWV0aG9kIGZvciBhbnkgbm9kZSB3aG9zZSBwYXJlbnQgaXMgdGhpcyBub2RlLiBJZiB0aGUgc3Vibm9kZSBoYXMgaXRzIG93biBwbGFjZW1lbnQgYXR0cmlidXRlLCBkZXRlcm1pbmVQbGFjZW1lbnQgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGF0IHZhbHVlLCBvdGhlcndpc2UgaXQgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGlzIHZhbHVlLiBOb3RlIHRoYXQgYSBjbGFzcydzIGRlZmF1bHRwbGFjZW1lbnQgYXR0cmlidXRlIG9ubHkgYXBwbGllcyB0byBjaGlsZHJlbiBpbiBzdWJjbGFzc2VzIG9yIGluIGluc3RhbmNlcywgbm90IHRvIHRoZSBjaGlsZHJlbiBvZiB0aGUgY2xhc3MgaXRzZWxmLiBUaGlzIG1lYW5zIHRoYXQgaWYgYSBjbGFzcyBhbmQgaXRzIHN1YmNsYXNzIGJvdGggZGVmaW5lIGEgZGVmYXVsdHBsYWNlbWVudCBhdHRyaWJ1dGUsIHRoZSBhdHRyaWJ1dGUgd2lsbCBiZSBzZXQgdG8gb25lIHZhbHVlIGJlZm9yZSB0aGUgc3ViY2xhc3MgY2hpbGRyZW4gYXJlIGNyZWF0ZWQgYW5kIHRvIGEgZGlmZmVyZW50IG9uZSBhZnRlciB0aGV5IGFyZSBjcmVhdGVkLiBTZWUgdGhlIGRldGVybWluZVBsYWNlbWVudCBtZXRob2QuICAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJkZWZhdWx0cGxhY2VtZW50IiAvPg0KKwk8IS0tLQlBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIGVsZW1lbnQuIENhbiBiZSB1c2VkIGFzIGEgZ2xvYmFsIHZhcmlhYmxlIG5hbWUgaW4gSmF2YVNjcmlwdCBjb2RlLiAgLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0iaWQiIHR5cGU9InRva2VuIi8+DQorCTwhLS0tCU92ZXJyaWRlcyBwbGFjZW1lbnQgYXR0cmlidXRlIChhbmQgZGVmYXVsdHBsYWNlbWVudCBpbiBsZXhpY2FsIHBhcmVudCkuIFNlZSB0aGUgTHpOb2RlLmRldGVybWluZVBsYWNlbWVudCBtZXRob2QuIERlZmF1bHRzIHRvIGZhbHNlLiAgLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0iaWdub3JlcGxhY2VtZW50IiAvPg0KKwk8IS0tLQlSZWZlcmVuY2UgdG8gdGhpcyBub2RlcydzIHBhcmVudCBpbiB0aGUgbm9kZSBoaWVyYXJjaHkuIFRoaXMgd2lsbCBiZSBkaWZmZXJlbnQgZnJvbSAicGFyZW50IiB3aGVuIGEgY2xhc3MgdXNlcyBwbGFjZW1lbnQgb3IgZGVmYXVsdHBsYWNlbWVudCB0byBhc3NpZ24gYSBzdWJub2RlIGEgc3BlY2lmaWMgcGxhY2UuIEZvciBleGFtcGxlLCBhbHdheXMgdXNlIGltbWVkaWF0ZXBhcmVudCB0byBnZXQgYSBtb3VzZSBwb3NpdGlvbiBpbiB5b3VyIHZpZXdzIGNvb3JkaW5hdGUgc3lzdGVtLiAgLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0iaW1tZWRpYXRlcGFyZW50IiAvPg0KKwk8IS0tCUluZGljYXRlcyB0aGF0IGEgbm9kZSdzIGluaXQgbWV0aG9kIGhhcyBiZWVuIGNhbGxlZC4gVHJ1ZSB3aGVuIGluaXQgaGFzIGJlZW4gY2FsbGVkIGFuZCB0aGUgb25pbml0IGV2ZW50IGhhcyBiZWVuIHNlbnQuIFRoZSBleGVjdXRpb24gb2YgdGhlIGluaXQgbWV0aG9kIGlzIHVuZGVyIGNvbnRyb2wgb2YgdGhlIGluaXRzdGFnZSBhdHRyaWJ1dGUuICAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJpbml0ZWQiIHR5cGU9ImJvb2xlYW4iLz4NCisJPCEtLS0JVGhlIGV4ZWN1dGlvbiBvZiBhIG5vZGUncyBpbml0IG1ldGhvZCBhbmQgc2VuZGluZyBvZiB0aGUgb25pbml0IGV2ZW50IGlzIHVuZGVyIHRoZSBjb250cm9sIG9mIGl0cyBpbml0c3RhZ2UgYXR0cmlidXRlLCBhcyBmb2xsb3dzOg0KKw0KK2ltbWVkaWF0ZQ0KKyAgICBUaGUgaW5pdCBtZXRob2QgaXMgY2FsbGVkIGltbWVkaWF0ZWx5IGFzIHRoZSBsYXN0IHN0YWdlIG9mIGluc3RhbnRpYXRpb24uIA0KK2Vhcmx5DQorICAgIFRoZSBpbml0IG1ldGhvZCBpcyBjYWxsZWQgaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIHZpZXcgYW5kIGl0cyBjaGlsZHJlbiBoYXZlIGJlZW4gaW5zdGFudGlhdGVkLiANCitub3JtYWwNCisgICAgVGhlIGluaXQgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIHRoZSBwYXJlbnQgaXMgaW5pdGlhbGl6ZWQuIA0KK2xhdGUNCisgICAgVGhlIGluaXQgbWV0aG9kIGlzIGNhbGxlZCBkdXJpbmcgaWRsZSB0aW1lLiBUbyBjaGVjayB3aGV0aGVyIGluaXQgaGFzIGJlZW4gY2FsbGVkLCBjaGVjayB0aGUgaW5pdGVkIHByb3BlcnR5LiBGb3JjZSBjYWxsaW5nIGluaXQgdXNpbmcgdGhlIGNvbXBsZXRlSW5zdGFudGlhdGlvbiBtZXRob2QuIA0KK2RlZmVyDQorICAgIFRoZSBpbml0IG1ldGhvZCB3aWxsIG5vdCBiZSBjYWxsZWQgdW5sZXNzIGV4cGxpY2l0bHkgcmVxdWVzdGVkIGJ5IHRoZSBjb21wbGV0ZUluc3RhbnRpYXRpb24gbWV0aG9kLiANCisNCisJIC0tPg0KKwk8YXR0cmlidXRlIG5hbWU9ImluaXRzdGFnZSIgdmFsdWU9Im5vcm1hbCIvPg0KKwk8IS0tLQlUaGUgbmFtZSBmb3IgdGhpcyBzdWJub2RlLiBJZiBnaXZlbiwgdGhlbiB0aGlzIG5vZGUncyBwYXJlbnQgYW5kIGltbWVkaWF0ZSBwYXJlbnQgd2lsbCBzdG9yZSBhIHBvaW50ZXIgdG8gdGhpcyBub2RlIGFzIHRoZSBnaXZlbiBuYW1lIHZhbHVlLiAgLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0idG9rZW4iLz4NCisJPCEtLS0JVGhlIGRlcHRoIG9mIHRoaXMgbm9kZSBpbiB0aGUgb3ZlcmFsbCBub2RlIGhpZXJhcmNoeSAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJub2RlTGV2ZWwiIHR5cGU9Im51bWJlciIvPg0KKwk8IS0tLQlBIENTUyBkZWNsYXJhdGlvbiBvZiBwcm9wZXJ0eTogdmFsdWUgcGFpcnMgdGhhdCBtb2RpZnkgdGhlIGludGVyYWN0aW9uIG9mIHRoaXMgbm9kZSB3aXRoIGNvbnRyb2xsZXJzIHN1Y2ggYXMgcmVwbGljYXRvcnMgYW5kIGxheW91dHMuIEZvciBleGFtcGxlLCBzZXR0aW5nIG9wdGlvbnM9Imlnbm9yZWxheW91dDogdHJ1ZSIgb24gYSB2aWV3IHdpbGwgY2F1c2UgdGhlIHZpZXcgdG8gbm90IGJlIGNvbnRyb2xsZWQgYnkgYW55IGxheW91dC4NCitbTm90ZV0gCU5vdGUNCitUaGUgb3B0aW9ucyB0aGF0IGFmZmVjdCBwYXJ0aWN1bGFyIGNvbnRyb2xsZXJzIGFuZCByZXBsaWNhdG9ycyBhcmUgZG9jdW1lbnRlZCB3aXRoIGVhY2ggY29udHJvbGxlciBhbmQgcmVwbGljYXRvci4NCitbTm90ZV0gCU5vdGUNCitvcHRpb25zIHNob3VsZCBub3QgYmUgYWNjZXNzZWQgZGlyZWN0bHkuIFlvdSBtdXN0IHVzZSBnZXRPcHRpb24gYW5kIHNldE9wdGlvbiB0byBnZXQgb3Igc2V0IHRoZSB2YWx1ZSBvZiBhbiBvcHRpb24uICAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJvcHRpb25zIiAvPg0KKwk8IS0tLQlSZWZlcmVuY2UgdG8gdGhlIG5vZGUgdGhhdCB3YXMgcGFzc2VkIGFzIHRoaXMgbm9kZSdzIGFuY2VzdG9yIGluIHRoZSBjb25zdHJ1Y3Rvci4gSWYgdGhpcyBub2RlIHdhcyBjcmVhdGVkIGJ5IGRlY2xhcmluZyBpdCBpbiBhIHRhZywgdGhlIHBhcmVudCB3aWxsIGJlIGl0cyBsZXhpY2FsIHBhcmVudC4gSXRzIGxleGljYWwgcGFyZW50IGlzIHRoZSB0YWcgdGhhdCBlbmNsb3NlcyBpdC4gQWxsb3cgYSBudWxsIHBhcmVudCBzbyB0aGF0IG5vZGVzIGNhbiBiZSBnYXJiYWdlIGNvbGxlY3RlZCB3aGVuIHRoZXkgYXJlIG5vIGxvbmdlciBuZWVkZWQuIFNlZSBhbHNvLCBpbW1lZGlhdGVwYXJlbnQuICAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJwYXJlbnQiIC8+DQorCTwhLS0tCUluc3RydWN0aW9ucyB0byB0aGlzIGVsZW1lbnQncyBjb250YWluZXIgYWJvdXQgd2hlcmUgaXQgc2hvdWxkIGdvIHdpdGhpbiBpdHMgY29udGFpbmVyJ3MgaW50ZXJuYWwgaGllcmFyY2h5LiBTZWUgdGhlIEx6Tm9kZS5kZXRlcm1pbmVQbGFjZW1lbnQgbWV0aG9kLiBEZWZhdWx0cyB0byB0aGUgY29udGFpbmVyIGl0c2VsZi4gIC0tPg0KKwk8YXR0cmlidXRlIG5hbWU9InBsYWNlbWVudCIgLz4NCisJPCEtLS0JDQorQSBzcGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBDU1MgY2xhc3NlcyB0aGF0IGNhbiBiZSB1c2VkIGluIGEgc3R5bGVzaGVldCB0byBzZWxlY3QgdGhpcyBub2RlLiAgLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0ic3R5bGVjbGFzcyIgLz4NCisJPCEtLS0JQW4gYXJyYXkgb2YgYWxsIG9mIHRoZSBMek5vZGVzIHdoaWNoIGNvbnNpZGVyIHRoaXMgTHpOb2RlIHRoZWlyIHBhcmVudC4gVGhpcyBsaXN0IGlzIHNpbWlsYXIgdG8gdGhlIHN1YnZpZXdzIGxpc3QsIGJ1dCBpdCBjb250YWlucyBhbGwgdGhlIGNoaWxkcmVuIG9mIHRoaXMgbm9kZSwgbm90IGp1c3QgdGhlIHZpZXcgY2hpbGRyZW4uICAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJzdWJub2RlcyIgLz4NCisJPCEtLS0JQWxsb3dzIG5vZGUgYXR0cmlidXRlcyB0byBiZSBhdXRvbWF0aWNhbGx5IGFuaW1hdGVkIHdoZW4gc2V0LiBBIHN0cmluZyBvZiB0cmFuc2l0aW9ucywgYWNjb3JkaW5nIHRvIHRoZSBjc3MzIHRyYW5zaXRpb24gc3BlYyBodHRwOi8vZGV2LnczLm9yZy9jc3N3Zy9jc3MzLXRyYW5zaXRpb25zLyN0aGUtdHJhbnNpdGlvbi1zaG9ydGhhbmQtcHJvcGVydHktIGUuZy4gJ3ggMnMnLiBOb3RlIHRoYXQgdHJhbnNpdGlvbi1kZWxheSBpcyBub3QgY3VycmVudGx5IHN1cHBvcnRlZC4gW3RyYW5zaXRpb24tcHJvcGVydHkgfHwgdHJhbnNpdGlvbi1kdXJhdGlvbiB8fCB0cmFuc2l0aW9uLXRpbWluZy1mdW5jdGlvbiB8fCB0cmFuc2l0aW9uLWRlbGF5IFssIFt0cmFuc2l0aW9uLXByb3BlcnR5IHx8IHRyYW5zaXRpb24tZHVyYXRpb24gfHwgdHJhbnNpdGlvbi10aW1pbmctZnVuY3Rpb24gfHwgdHJhbnNpdGlvbi1kZWxheV1dKiAgLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0idHJhbnNpdGlvbiIgLz4NCisJDQorCTwhLS0tVGhpcyBpcyB0aGUgZmlyc3QgZXZlbnQgYSBub2RlIHNlbmRzLCByaWdodCBhdCB0aGUgZW5kIG9mIHRoZSBpbnN0YW50aWF0aW9uIHByb2Nlc3MsIGJ1dCBiZWZvcmUgYW55IHN1Ym5vZGVzIGhhdmUgYmVlbiBjcmVhdGVkIG9yIHJlZmVyZW5jZXMgcmVzb2x2ZWQgLS0+DQorCTxldmVudCBuYW1lPSJvbmNvbnN0cnVjdCIgLz4NCisJPCEtLS1UaGUgb25kYXRhIHNjcmlwdCBpcyBleGVjdXRlZCB3aGVuIHRoZSBkYXRhIHNlbGVjdGVkIGJ5IGEgdmlldydzIGRhdGFwYXRoIGNoYW5nZXMuIC0tPg0KKyAgICA8ZXZlbnQgbmFtZT0ib25kYXRhIiAvPg0KKyAgICA8IS0tLVRoaXMgZXZlbnQgaXMgc2VudCBhZnRlciB0aGUgbm9kZSdzIGluaXQgbWV0aG9kIGhhcyBiZWVuIGNhbGxlZC4gU2ltcGxlIGFjdGlvbnMgdGhhdCBuZWVkIHRvIG9jY3VyIGFmdGVyIHRoZSBub2RlJ3MgY2hpbGRyZW4gaGF2ZSBiZWVuIGluaXRpYWxpemVkIGNhbiBiZSBhc3NpZ25lZCB0byB0aGlzIGV2ZW50LiBGb3IgbW9yZSBjb21wbGV4IGluaXRpYWxpemF0aW9uLCBzZWUgdGhlIGluaXQgbWV0aG9kLiAtLT4NCisgICAgPGV2ZW50IG5hbWU9Im9uaW5pdCIgLz4gDQorDQorPC9jbGFzcz4NCisNCis8L2xpYnJhcnk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2xmYy9wYXNzdGhyb3VnaC5senggYi90ZXN0L2NvcmUvbGZjL3Bhc3N0aHJvdWdoLmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMWVjZjBjCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2xmYy9wYXNzdGhyb3VnaC5sengKQEAgLTAsMCArMSwzNSBAQAorPGxpYnJhcnkgeG1sbnM9Imh0dHA6Ly9sb2NhbGhvc3Qvb3Blbmxhc3psby9sengiIA0KKyAgICAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIA0KKyAgICAgICAgICAgIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL2xvY2FsaG9zdC9vcGVubGFzemxvL2x6eCAuLy4uLy4uLy4uL2x6eC54c2QiPg0KKyAgICAgICAgICAgIDwhLS0tIFByb3ZpZGVzIGEgd2F5IHRvIGltcG9ydCBTV0YxMCBkZWNsYXJhdGlvbnMuIC0tPg0KKzxjbGFzcyBuYW1lPSJwYXNzdGhyb3VnaCIgZXh0ZW5kcz0iZmFsc2UiPg0KKwk8IS0tDQorCVRoZSBwb3NzaWJsZSBjb21waWxlIHRpbWUgY29uc3RhbnRzIGFyZToNCisNCisgICAgJHJ1bnRpbWUgOiBzdHJpbmcNCisgICAgJHN3ZjcgOiBib29sZWFuDQorICAgICRzd2Y4IDogYm9vbGVhbg0KKyAgICAkYXMyIDogYm9vbGVhbg0KKyAgICAkc3dmOSA6IGJvb2xlYW4NCisgICAgJHN3ZjEwIDogYm9vbGVhbg0KKyAgICAkYXMzIDogYm9vbGVhbg0KKyAgICAkZGh0bWwgOiBib29sZWFuDQorICAgICRqMm1lIDogYm9vbGVhbg0KKyAgICAkc3ZnIDogYm9vbGVhbg0KKyAgICAkanMxIDogYm9vbGVhbg0KKyAgICAkZGVidWcgOiBib29sZWFuDQorICAgICRwcm9maWxlIDogYm9vbGVhbg0KKyAgICAkYmFja3RyYWNlIDogYm9vbGVhbg0KKw0KKw0KKyAgICAgPGNsYXNzIG5hbWU9Im1pY3JvcGhvbmUiIGV4dGVuZHM9Im1lZGlhZGV2aWNlIj4NCisgICAgPHBhc3N0aHJvdWdoIHdoZW49IiRhczMiPg0KKyAgICAgICAgaW1wb3J0IGZsYXNoLm1lZGlhLio7DQorICAgIDwvcGFzc3Rocm91Z2g+DQorICAgIA0KKwkgLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0id2hlbiIgdHlwZT0ic3RyaW5nIi8+DQorCQ0KKzwvY2xhc3M+DQorDQorPC9saWJyYXJ5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9sZmMvcmVzb3VyY2UubHp4IGIvdGVzdC9jb3JlL2xmYy9yZXNvdXJjZS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmVmN2QzMgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9sZmMvcmVzb3VyY2UubHp4CkBAIC0wLDAgKzEsMTcgQEAKKzxsaWJyYXJ5IHhtbG5zPSJodHRwOi8vbG9jYWxob3N0L29wZW5sYXN6bG8vbHp4IiANCisgICAgICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiANCisgICAgICAgICAgICB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly9sb2NhbGhvc3Qvb3Blbmxhc3psby9senggLi8uLi8uLi8uLi9sengueHNkIj4NCisgICAgICAgICAgICA8IS0tLUEgdGFnIHRoYXQgZGVmaW5lcyBhIG1lZGlhIG9iamVjdCB0aGF0IGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggYSB2aWV3LiAtLT4NCis8Y2xhc3MgbmFtZT0icmVzb3VyY2UiIGV4dGVuZHM9ImZhbHNlIj4NCis8IS0tLQlUaGUgbmFtZSBvZiBhIHZhcmlhYmxlIHRoYXQgd2lsbCBiZSBzZXQgdG8gdGhpcyBvYmplY3Qgd2hlbiB0aGUgYXBwbGljYXRpb24gaXMgc3RhcnRlZC4gSWYgdGhpcyBlbGVtZW50IGlzIGRpcmVjdGx5IHdpdGhpbiBhIGNhbnZhcyBvciBsaWJyYXJ5IGVsZW1lbnQsIHRoZSBnbG9iYWwgdmFyaWFibGUgYW5kIHRoZSBjYW52YXMgcHJvcGVydHkgd2l0aCB0aGlzIG5hbWUgd2lsbCBiZSBzZXQgdG8gdGhpcyBvYmplY3QuIElmIHRoaXMgZWxlbWVudCBpcyB3aXRoaW4gYW5vdGhlciBvYmplY3QsIHRoYXQgb2JqZWN0J3MgcHJvcGVydHkgd2l0aCB0aGlzIG5hbWUgd2lsbCBiZSBzZXQgdG8gdGhpcyBvYmplY3QuICAtLT4NCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJuYW1lIiAvPg0KKyAgICA8IS0tLQlUaGUgeCBvZmZzZXQgb2YgYSBiaXRtYXAgcmVzb3VyY2UgdXNlZCBmb3IgYSBjdXN0b20gY3Vyc29yLiAtLT4NCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJvZmZzZXR4IiB0eXBlPSJudW1iZXIiIC8+DQorICAgIDwhLS0tCVRoZSB5IG9mZnNldCBvZiBhIGJpdG1hcCByZXNvdXJjZSB1c2VkIGZvciBhIGN1c3RvbSBjdXJzb3IuIC0tPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9Im9mZnNldHkiIHR5cGU9Im51bWJlciIvPg0KKyAgICA8IS0tLQlUaGUgcGF0aCBvZiBhIGZpbGUgdGhhdCBjb250YWlucyB0aGUgc291cmNlIGZvciB0aGlzIG9iamVjdC4gLS0+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0ic3JjIiAvPg0KKyAgICANCis8L2NsYXNzPg0KKw0KKzwvbGlicmFyeT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvbGZjL3NjcmlwdC5senggYi90ZXN0L2NvcmUvbGZjL3NjcmlwdC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWY4MjYxOAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9sZmMvc2NyaXB0Lmx6eApAQCAtMCwwICsxLDExIEBACis8bGlicmFyeSB4bWxucz0iaHR0cDovL2xvY2FsaG9zdC9vcGVubGFzemxvL2x6eCIgDQorICAgICAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgDQorICAgICAgICAgICAgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vbG9jYWxob3N0L29wZW5sYXN6bG8vbHp4IC4vLi4vLi4vLi4vbHp4LnhzZCI+DQorICAgICAgICAgICAgPCEtLS0gQ2xpZW50IGV4ZWN1dGVkIHNjcmlwdCAtLT4NCisNCis8Y2xhc3MgbmFtZT0ic2NyaXB0IiBleHRlbmRzPSJmYWxzZSI+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0ic3JjIiB0eXBlPSJzdHJpbmciIC8+DQorPC9jbGFzcz4NCisNCisNCis8L2xpYnJhcnk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9jb3JlL2xmYy9zZXR0ZXIubHp4IGIvdGVzdC9jb3JlL2xmYy9zZXR0ZXIubHp4Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlMGNkN2IKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvbGZjL3NldHRlci5sengKQEAgLTAsMCArMSwxMCBAQAorPGxpYnJhcnkgeG1sbnM9Imh0dHA6Ly9sb2NhbGhvc3Qvb3Blbmxhc3psby9sengiIA0KKyAgICAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIA0KKyAgICAgICAgICAgIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL2xvY2FsaG9zdC9vcGVubGFzemxvL2x6eCAuLy4uLy4uLy4uL2x6eC54c2QiPg0KKyAgICAgICAgICAgIDwhLS0tIEEgdGFnIHRvIGRlY2xhcmUgb3Igb3ZlcnJpZGUgYXR0cmlidXRlIHNldHRlciBtZXRob2RzLiAtLT4NCis8Y2xhc3MgbmFtZT0ic2V0dGVyIiBleHRlbmRzPSJmYWxzZSI+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ic3RyaW5nIiAvPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9ImFyZ3MiIHR5cGU9InN0cmluZyIgLz4NCis8L2NsYXNzPg0KKw0KKzwvbGlicmFyeT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvbGZjL3NwbGFzaC5senggYi90ZXN0L2NvcmUvbGZjL3NwbGFzaC5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWE4ZDRkNgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9sZmMvc3BsYXNoLmx6eApAQCAtMCwwICsxLDE3IEBACis8bGlicmFyeSB4bWxucz0iaHR0cDovL2xvY2FsaG9zdC9vcGVubGFzemxvL2x6eCIgDQorICAgICAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgDQorICAgICAgICAgICAgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vbG9jYWxob3N0L29wZW5sYXN6bG8vbHp4IC4vLi4vLi4vLi4vbHp4LnhzZCI+DQorPCEtLS0gQ29udHJvbHMgdGhlIHByZXNlbnRhdGlvbiB3aGlsZSB0aGUgYXBwbGljYXRpb24gaXMgbG9hZGluZy4gIC0tPg0KKzxjbGFzcyBuYW1lPSJzcGxhc2giIGV4dGVuZHM9Im5vZGUiPg0KKw0KKyAgICA8YXR0cmlidXRlIG5hbWU9InBlcnNpc3RlbnQiIC8+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0iY2VudGVyIiAvPg0KKyAgICA8YXR0cmlidXRlIG5hbWU9Im5hbWUiIC8+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0icmF0aW8iIC8+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0icmVzb3VyY2UiIC8+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0ieCIgLz4NCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJ5IiAvPg0KKw0KKzwvY2xhc3M+DQorDQorPC9saWJyYXJ5PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Rlc3QvY29yZS9sZmMvc3RhdGUubHp4IGIvdGVzdC9jb3JlL2xmYy9zdGF0ZS5sengKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRiY2RlNwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3QvY29yZS9sZmMvc3RhdGUubHp4CkBAIC0wLDAgKzEsMjkgQEAKKzxsaWJyYXJ5IHhtbG5zPSJodHRwOi8vbG9jYWxob3N0L29wZW5sYXN6bG8vbHp4IiANCisgICAgICAgICAgICB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiANCisgICAgICAgICAgICB4c2k6c2NoZW1hTG9jYXRpb249Imh0dHA6Ly9sb2NhbGhvc3Qvb3Blbmxhc3psby9senggLi8uLi8uLi8uLi9sengueHNkIj4NCis8IS0tLSAgQSBkZXNjcmlwdGlvbiBvZiBhbiBpbnN0YW5jZSBoaWVyYXJjaHkgdGhhdCBjYW4gYmUgYXBwbGllZCBhbmQgcmVtb3ZlZCBhdCBydW50aW1lLg0KK0phdmFTY3JpcHQ6IGx6LnN0YXRlIA0KKw0KK0Egc3RhdGUgaXMgYW4gb2JqZWN0IHRoYXQgaG9sZHMgaXRzIGNoaWxkcmVuIGFuZCBhdHRyaWJ1dGVzIGZvciBjcmVhdGlvbiBvciBhcHBsaWNhdGlvbiBhdCBhIGxhdGVyIHRpbWUgd2hlbiB0aGUgc3RhdGUncyBhcHBseSBtZXRob2QgaXMgY2FsbGVkLiBJbiBhZGRpdGlvbiB0byByZXByZXNlbnRpbmcgdmlzdWFsIHN0YXRlIGJ5IGFkZGluZyBhbmQgcmVtb3ZpbmcgY2hpbGRyZW4gZnJvbSBhIHZpZXcsIHN0YXRlcyBhcmUgb2Z0ZW4gdXNlZCB0byBjb250cm9sIGNvbnN0cmFpbnRzIHdoaWNoIGFyZSBhcHBsaWVkIGFuZCByZW1vdmVkIGF0IGRpZmZlcmVudCB0aW1lcyBkdXJpbmcgdGhlIHJ1biBvZiBhbiBhcHBsaWNhdGlvbi4NCisNCitGb3IgdGhlIG1vc3QgcGFydCwgdGhlIGRlY2xhcmF0aXZlIHN0eWxlIHVzZWQgaW4gT3Blbkxhc3psbyBhcHBsaWNhdGlvbnMgcmVwcmVzZW50cyBhbiBpbml0aWFsIHN0YXRlIGZvciB0aGUgYXBwbGljYXRpb24uIEFsbCBtb2RpZmljYXRpb24gdG8gYXBwbGljYXRpb24gc3RhdGUgY2FuIGJlIG1hZGUgdXNpbmcgdGhlIHNjcmlwdCBBUEkncywgYnV0IGl0IGlzIG9mdGVuIGNvbnZlbmllbnQgdG8gZGVjbGFyYXRpdmVseSBkZXNjcmliZSBhIGJpdCBvZiBhcHBsaWNhdGlvbiBzdGF0ZSB3aGljaCBtYXkgYmUgc2VsZWN0aXZlbHkgYXBwbGllZCBvciByZW1vdmVkIGF0IHJ1bnRpbWUuIFRoZSA8c3RhdGU+IHRhZyBpcyBwcm92aWRlZCBmb3IgdGhpcyBwdXJwb3NlLg0KKw0KK0V2ZXJ5dGhpbmcgd2l0aGluIGEgPHN0YXRlPiB0YWcgYWN0cyBhcyBpZiBpdCB3ZXJlIHdyaXR0ZW4gaW5zaWRlIHRoZSBwYXJlbnQgd2hlbiB0aGUgc3RhdGUgaXMgYXBwbGllZC4gU3RhdGVzIGNhbiBjb250YWluIGF0dHJpYnV0ZXMsIG1ldGhvZHMsIGFuZCBvdGhlciBub2Rlcy4NCisNCitXaGVuIGEgc3RhdGUgaXMgcmVtb3ZlZCwgYW55IGNoaWxkcmVuIG9yIGNvbnN0cmFpbnRzIGNyZWF0ZWQgd2hlbiB0aGUgc3RhdGUgd2FzIGFwcGxpZWQgYXJlIHRoZW4gcmVtb3ZlZCwgYnV0IGF0dHJpYnV0ZXMgdGhhdCB3ZXJlIHNldCBieSB0aGUgYXBwbGljYXRpb24gb2YgdGhlIHN0YXRlIGFyZSBub3QgcmVzdG9yZWQuIA0KKw0KKyAtLT4gICAgICAgICANCis8Y2xhc3MgbmFtZT0ic3RhdGUiIGV4dGVuZHM9Im5vZGUiPg0KKyAgICANCisgICAgPCEtLS0gDQorICAgICAgICBXaGV0aGVyIG9yIG5vdCB0aGUgc3RhdGUgaXMgYXBwbGllZC4gc2V0QXR0cmlidXRlKCdhcHBsaWVkJywgdHJ1ZSkgd2lsbCBhcHBseSB0aGUgc3RhdGUuIHNldEF0dHJpYnV0ZSgnYXBwbGllZCcsIGZhbHNlKSB3aWxsIHJlbW92ZSB0aGUgc3RhdGUuDQorICAgICAgICAgLS0+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0iYXBwbGllZCIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPg0KKyAgICA8IS0tLQ0KKyAgICAgICAgSWYgdHJ1ZSwgdGhlIHN0YXRlIHdpbGwgbWVyZWx5IGhpZGUgYW55IHZpZXdzIGl0IGhhcyBjcmVhdGVkIHdoZW4gaXQgaXMgcmVtb3ZlZCAobm90IGFwcGxpZWQpLCBpbnN0ZWFkIG9mIGRlc3Ryb3lpbmcgdGhlbS4gDQorICAgICAgICAgLS0+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0icG9vbGluZyIgdmFsdWU9ImZhbHNlIiB0eXBlPSJib29sZWFuIiAvPg0KKyAgICANCis8L2NsYXNzPg0KKw0KKzwvbGlicmFyeT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvbGZjL3RleHQubHp4IGIvdGVzdC9jb3JlL2xmYy90ZXh0Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOGM1NDcyCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2xmYy90ZXh0Lmx6eApAQCAtMCwwICsxLDc4IEBACis8bGlicmFyeSB4bWxucz0iaHR0cDovL2xvY2FsaG9zdC9vcGVubGFzemxvL2x6eCIgDQorICAgICAgICAgICAgeG1sbnM6eHNpPSJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZSIgDQorICAgICAgICAgICAgeHNpOnNjaGVtYUxvY2F0aW9uPSJodHRwOi8vbG9jYWxob3N0L29wZW5sYXN6bG8vbHp4IC4vLi4vLi4vLi4vbHp4LnhzZCI+DQorICAgICAgICAgICAgPCEtLS1UaGUgYmFzaWMgdGV4dCBkaXNwbGF5IGVsZW1lbnQuIC0tPg0KKzxjbGFzcyBuYW1lPSJ0ZXh0IiBleHRlbmRzPSJ2aWV3Ij4NCis8IS0tLSBBbnRpYWxpYXMgdHlwZSBmb3IgdGhpcyB0ZXh0LCBGbGFzaCBvbmx5IE9uZSBvZjogICJub3JtYWwiIHwgInN1YnBpeGVsIiB8ICJhZHZhbmNlZCIgLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0iYW50aUFsaWFzVHlwZSIgdmFsdWU9Im5vcm1hbHxzdWJwaXhlbHxhZHZhbmNlZCIgLz4NCisJPCEtLS0gIEFuIGFsaWFzIGZvciB0aGUgdGV4dCBhdHRyaWJ1dGUsIGJ1dCB3aXRoIHRoZSB0eXBlIGNkYXRhLCBhbGxvd2luZyBpdCB0byBiZSBib3VuZCB0byBhIHZhbHVlIHRoYXQgc2hvdWxkIG5vdCBiZSBpbnRlcnByZXRlZCBhcyBtYXJrdXAgKHdoZW4gZGF0YSBiaW5kaW5nLCBDU1Mgc3R5bGUgYmluZGluZywgb3IgPz8/IG9yID8/PykuIC0tPg0KKwk8YXR0cmlidXRlIG5hbWU9ImNkYXRhIiAvPg0KKwk8IS0tLSAgVGV4dCBkaXJlY3Rpb24sIGVpdGhlciAibHRyIiAoZGVmYXVsdCkgb3IgInJ0bCIsIEZsYXNoIG9ubHkgLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0iZGlyZWN0aW9uIiAvPg0KKwk8IS0tLSAgR3JpZCBmaXQgZm9yIHRoaXMgdGV4dCwgRmxhc2ggb25seSBPbmUgb2Y6ICAibm9uZSIgfCAicGl4ZWwiIHwgInN1YnBpeGVsIiAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJncmlkRml0IiB2YWx1ZT0ibm9uZXxwaXhlbHxzdWJwaXhlbCIvPg0KKwk8IS0tLSAgVGhlIGhvcml6b250YWwgc2Nyb2xsIHBvc2l0aW9uIGluIHBpeGVscy4gRGVmYXVsdCAwLiBOT1RFOiBBIGNvbnN0cmFpbnQgb3IgaGFuZGxlciBvbiBvbmhzY3JvbGwgd2lsbCBhdXRvbWF0aWNhbGx5IGVuYWJsZSB1cGRhdGluZyB0aGUgYXR0cmlidXRlLiAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJoc2Nyb2xsIiB0eXBlPSJudW1iZXIiIC8+DQorCTwhLS0tICBsZXR0ZXJzcGFjaW5nIGFjY2VwdHMgYW55IG51bWJlciB3aGljaCBpcyBpbnRlcnByZXRlZCBhcyBhIHB4IHZhbHVlIC0tPg0KKwk8YXR0cmlidXRlIG5hbWU9ImxldHRlcnNwYWNpbmciIHR5cGU9Im51bWJlciIgLz4NCisJPCEtLS0gVGhlIGhlaWdodCBvZiBhIGxpbmUgb2YgdGV4dCBpbiB0aGUgY3VycmVudCBzdHlsZSAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJsaW5laGVpZ2h0IiB0eXBlPSJudW1iZXIiIC8+DQorCTwhLS0tICBUaGUgbWF4aW11bSBob3Jpem9udGFsIHNjcm9sbCBwb3NpdGlvbiBpbiBwaXhlbHMuIHRoaXMuc2V0QXR0cmlidXRlKCdoc2Nyb2xsJywgdGhpcy5tYXhoc2Nyb2xsKSB3aWxsIGNhdXNlIHRoZSBlbmQgb2YgY29udGVudCB0byBiZSB2aXNpYmxlIGF0IHRoZSBlZGdlIG9mIHRoZSB2aWV3LiAoVGhlIHJpZ2h0bW9zdCBjb250ZW50IHdpbGwgYXBwZWFyIGF0IHRoZSByaWdodCBlZGdlIG9mIHRoZSB2aWV3IGZvciBsZWZ0LXRvLXJpZ2h0IHNjcmlwdHMsIGhlbmNlIHRoaXMgaXMgdGhlIHBpeGVsIHBvc2l0aW9uIG9mIHRoZSBsZWZ0bW9zdCBwaXhlbCB0aGF0IHdpbGwgYXBwZWFyIGluIHRoZSB2aWV3IHdoZW4gc2Nyb2xsZWQgYWxsIHRoZSB3YXkgdG8gdGhlIHJpZ2h0LikgTk9URTogQSBjb25zdHJhaW50IG9yIGhhbmRsZXIgb24gb25tYXhoc2Nyb2xsIHdpbGwgYXV0b21hdGljYWxseSBlbmFibGUgdXBkYXRpbmcgdGhlIGF0dHJpYnV0ZS4gLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0ibWF4aHNjcm9sbCIgdHlwZT0ibnVtYmVyIiAvPg0KKwk8IS0tLSAgTWF4aW11bSBudW1iZXIgb2YgY2hhcmFjdGVycyBhbGxvd2VkIGluIHRoaXMgZmllbGQgLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0ibWF4bGVuZ3RoIiB0eXBlPSJudW1iZXIiIC8+DQorCTwhLS0tICBUaGUgbWF4aW11bSB2ZXJ0aWNhbCBzY3JvbGwgcG9zaXRpb24gKGluIGxpbmVzLCAxLWJhc2VkKS4gdGhpcy5zZXRBdHRyaWJ1dGUoJ3Njcm9sbCcsIHRoaXMubWF4c2Nyb2xsKSB3aWxsIGNhdXNlIHRoZSBsYXN0IGxpbmUgb2YgdGhlIGNvbnRlbnQgdG8gYmUgdmlzaWJsZSBhdCB0aGUgYm90dG9tIG9mIHRoZSB2aWV3IChoZW5jZSB0aGlzIGlzIHRoZSBsaW5lIG51bWJlciBvZiB0aGUgbGluZSB0aGF0IHdpbGwgYXBwZWFyIGF0IHRoZSB0b3Agb2YgdGhlIHZpZXcgd2hlbiBzY3JvbGxlZCBhbGwgdGhlIHdheSB0byB0aGUgYm90dG9tKS4gTk9URTogQSBjb25zdHJhaW50IG9yIGhhbmRsZXIgb24gb25tYXhzY3JvbGwgd2lsbCBhdXRvbWF0aWNhbGx5IGVuYWJsZSB1cGRhdGluZyB0aGUgYXR0cmlidXRlLiAgLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0ibWF4c2Nyb2xsIiB0eXBlPSJudW1iZXIiIC8+DQorCTwhLS0tICBJZiB0cnVlLCB0aGUgbGluZXMgb2YgdGV4dCBhcmUgd3JhcHBlZCB0byBmaXQgd2l0aGluIHRoZSB0ZXh0IHdpZHRoLiAoVGhlIG5hbWUgbXVsdGlsaW5lIGlzIGEgbWlzbm9tZXIuIFVud3JhcHBlZCB0ZXh0IGNhbiBiZSBtdWx0aXBsZSBsaW5lcyBpZiBpdCBjb250YWlucyBhIDxiciAvPiBvciA8cD4gZWxlbWVudCwgb3IgYSBsaW5lIGJyZWFrIHdpdGhpbiBhIDxwcmU+IGVsZW1lbnQuIFRoaXMgYXR0cmlidXRlIGRlZmF1bHRzIHRvIHRydWUgaWYgd2lkdGggYW5kIGhlaWdodCBhcmUgZXhwbGljaXRseSBzcGVjaWZpZWQuIElmIHlvdSBzZXQgbXVsdGlsaW5lPXRydWUsIHlvdSBwcm9iYWJseSB3YW50IHRvIGV4cGxpY2l0bHkgYSB3aWR0aCBmb3IgdGhlIHRleHQgYWxzbzsgaWYgbXVsdGlsaW5lPXRydWUgYW5kIHlvdSBkbyBub3Qgc3BlY2lmeSBhIHdpZHRoLCB0aGUgc3lzdGVtIHdpbGwgcGljayBhbiBhcmJpdHJhcnkgd2lkdGggKDEwMCBwaXhlbHMgYXQgdGhlIG1vbWVudCkuIFdoZW4gbXVsdGlsaW5lPXRydWUsIHRoZSB0ZXh0IGlzIGF1dG9tYXRpYWxseSByZS13cmFwcGVkIHdoZW5ldmVyIHRoZSBjb250ZW50IGlzIG1vZGlmaWVkIGJ5IGNhbGxzIHRvIHNldFRleHQsIG9yIHdoZW5ldmVyIHRoZSB3aWR0aCBvZiB0aGUgdGV4dCB2aWV3IGlzIG1vZGlmaWVkLiAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJtdWx0aWxpbmUiIHR5cGU9ImJvb2xlYW4iIC8+DQorCTwhLS0tICByZWdleHAgZGVzY3JpYmluZyBzZXQgb2YgY2hhcmFjdGVycyBhbGxvd2VkIGluIHRoaXMgZmllbGQgUmVzdHJpY3QgdGhlIGNoYXJhY3RlcnMgdGhhdCBjYW4gYmUgZW50ZXJlZCB0byBhIHBhdHRlcm4gc3BlY2lmaWVkIGJ5IGEgcmVndWxhciBleHByZXNzaW9uLiBDdXJyZW50bHkgb25seSB0aGUgZXhwcmVzc2lvbiBbIF0qIGVuY2xvc2luZyBhIHNldCBvZiBjaGFyYWN0ZXJzIG9yIGNoYXJhY3RlciByYW5nZXMsIHByZWNlZGVkIGJ5IGFuIG9wdGlvbmFsICJeIiwgaXMgc3VwcG9ydGVkLiBleGFtcGxlczogWzAtOV0qICwgW2EtekEtWjAtOV0qLCBbXjAtOV0qIC0tPg0KKwk8YXR0cmlidXRlIG5hbWU9InBhdHRlcm4iIC8+DQorCTwhLS0tICBJZiB0cnVlLCB0aGUgd2lkdGggb2YgdGhlIHRleHQgZmllbGQgd2lsbCBiZSByZWNvbXB1dGVkIGVhY2ggdGltZSB0ZXh0IGlzIGNoYW5nZWQsIHNvIHRoYXQgdGhlIHRleHQgdmlldyBpcyBleGFjdGx5IGFzIHdpZGUgYXMgdGhlIHdpZHRoIG9mIHRoZSB3aWRlc3QgbGluZS4gRGVmYXVsdHMgdG8gdHJ1ZS4gLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0icmVzaXplIiB0eXBlPSJib29sZWFuIiAvPg0KKwk8IS0tLSAgVGhlIHZlcnRpY2FsIHNjcm9sbCBwb3NpdGlvbiAoaW4gbGluZXMsIDEtYmFzZWQpLiBEZWZhdWx0IDEuLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0ic2Nyb2xsIiB0eXBlPSJudW1iZXIiLz4NCisJPCEtLS0gIFVzZSBzZXRBdHRyaWJ1dGUoJ3Njcm9sbGV2ZW50cycsIHRydWUpIHRvIGNhdXNlIHNjcm9sbCBldmVudHMgdG8gYmUgc2VudC4gTk9URTogQSBjb25zdHJhaW50IG9yIGhhbmRsZXIgb24gb255c2Nyb2xsLCBvbnNjcm9sbCwgb254c2Nyb2xsLCBvbmhzY3JvbGwsIG9uc2Nyb2xsaGVpZ2h0LCBvbm1heHNjcm9sbCwgb25zY3JvbGx3aWR0aCBvciBvbm1heGhzY3JvbGwgd2lsbCBhdXRvbWF0aWNhbGx5IGVuYWJsZSBzY3JvbGxldmVudHMuIC0tPg0KKwk8YXR0cmlidXRlIG5hbWU9InNjcm9sbGV2ZW50cyIgdHlwZT0iYm9vbGVhbiIgLz4NCisJPCEtLS0gIFRoZSB0b3RhbCBoZWlnaHQgb2YgdGhlIGNvbnRlbnQgaW4gcGl4ZWxzLiB0aGlzLnNldEF0dHJpYnV0ZSgnaGVpZ2h0JywgdGhpcy5zY3JvbGxoZWlnaHQpIGlzIGVxdWl2YWxlbnQgdG8gdGhpcy5zZXRBdHRyaWJ1dGUoJ2hlaWdodCcsIG51bGwpIChmb3IgdGhlIGN1cnJlbnQgY29udGVudDogdGhlIGZvcm1lciB3aWxsIG5vdCBmb2xsb3cgY29udGVudCBjaGFuZ2VzIGFzIHRoZSBsYXR0ZXIgZG9lcykuIElmIHRoaXMuc2Nyb2xsaGVpZ2h0ID4gdGhpcy5oZWlnaHQsIHRoaXMuc2V0QXR0cmlidXRlKCd5c2Nyb2xsJywgdGhpcy5oZWlnaHQgLSB0aGlzLnNjcm9sbGhlaWdodCkgd2lsbCBzY3JvbGwgdGhlIGNvbnRlbnQgc28gdGhhdCB0aGUgYm90dG9tIG9mIHRoZSBjb250ZW50IGFwcGVhcnMgaW4gdGhlIGJvdHRvbSBvZiB0aGUgdmlldy4gTk9URTogQSBjb25zdHJhaW50IG9yIGhhbmRsZXIgb24gb25zY3JvbGxoZWlnaHQgd2lsbCBhdXRvbWF0aWNhbGx5IGVuYWJsZSB1cGRhdGluZyB0aGUgYXR0cmlidXRlLiAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJzY3JvbGxoZWlnaHQiIHR5cGU9Im51bWJlciIgLz4NCisJPCEtLS0gIFRoZSB0b3RhbCB3aWR0aCBvZiB0aGUgY29udGVudCBpbiBwaXhlbHMuIHRoaXMuc2V0QXR0cmlidXRlKCd3aWR0aCcsIHRoaXMuc2Nyb2xsd2lkdGgpIGlzIGVxdWl2YWxlbnQgdG8gdGhpcy5zZXRBdHRyaWJ1dGUoJ3dpZHRoJywgbnVsbCkgKGZvciB0aGUgY3VycmVudCBjb250ZW50OiB0aGUgZm9ybWVyIHdpbGwgbm90IGZvbGxvdyBjb250ZW50IGNoYW5nZXMgYXMgdGhlIGxhdHRlciBkb2VzKS4gSWYgdGhpcy5zY3JvbGx3aWR0aCA+IHRoaXMud2lkdGgsIHRoaXMuc2V0QXR0cmlidXRlKCd5c2Nyb2xsJywgdGhpcy53aWR0aCAtIHRoaXMuc2Nyb2xsd2lkdGgpIHdpbGwgY2F1c2UgdGhlIGVuZCBvZiBjb250ZW50IHRvIGJlIHZpc2libGUgYXQgdGhlIGVkZ2Ugb2YgdGhlIHZpZXcuIChUaGUgcmlnaHRtb3N0IGNvbnRlbnQgd2lsbCBhcHBlYXIgYXQgdGhlIHJpZ2h0IGVkZ2Ugb2YgdGhlIHZpZXcgZm9yIGxlZnQtdG8tcmlnaHQgc2NyaXB0cy4pIE5PVEU6IEEgY29uc3RyYWludCBvciBoYW5kbGVyIG9uIG9uc2Nyb2xsd2lkdGggd2lsbCBhdXRvbWF0aWNhbGx5IGVuYWJsZSB1cGRhdGluZyB0aGUgYXR0cmlidXRlLiAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJzY3JvbGx3aWR0aCIgdHlwZT0ibnVtYmVyIiAvPg0KKwk8IS0tLSAgSWYgdHJ1ZSwgdGhlIHRleHQgaXMgc2VsZWN0YWJsZSAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJzZWxlY3RhYmxlIiB0eXBlPSJib29sZWFuIi8+DQorCTwhLS0tICBUaGUgc2hhcnBuZXNzIGZvciB0aGlzIHRleHQsIGJldHdlZW4gLTQwMCBhbmQgNDAwLCBGbGFzaCBvbmx5LS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0ic2hhcnBuZXNzIiB0eXBlPSJudW1iZXIiIC8+DQorCTwhLS0tICBUaGUgdGV4dCB0byBkaXNwbGF5IGluIHRoaXMgdGV4dCBmaWVsZC4gSWYgc2V0IHRvIGEgdmFsdWUgdGhhdCBpcyBub3QgYSBzdHJpbmcsIHRoZSB2YWx1ZSB3aWxsIGZpcnN0IGJlIGNvbnZlcnRlZCB0byBhIHN0cmluZyBhcyBpZiBieSBTdHJpbmcodmFsdWUpLiBUbyBkaXNwbGF5IG5vdGhpbmcsIHNldCB0aGUgdmFsdWUgdG8gdGhlIGVtcHR5IHN0cmluZyAiIi4gLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0idGV4dCIgLz4NCisJPCEtLS0gIHRleHRhbGlnbiBhY2NlcHRzIG9uZSBvZiBbbGVmdCwgcmlnaHQsIGNlbnRlciwganVzdGlmeV0tLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJ0ZXh0YWxpZ24iIC8+DQorCTwhLS0tICB0ZXh0LWRlY29yYXRpb24gZm9yIHRoaXMgdGV4dCwgZWl0aGVyICdub25lJyBvciAndW5kZXJsaW5lJy4tLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJ0ZXh0ZGVjb3JhdGlvbiIgLz4NCisJPCEtLS0gIHRleHRpbmRlbnQgYWNjZXB0cyBhbnkgbnVtYmVyIHdoaWNoIGlzIGludGVycHJldGVkIGFzIGEgcHggdmFsdWUtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJ0ZXh0aW5kZW50IiB0eXBlPSJudW1iZXIiLz4NCisJPCEtLS0gIFRoZSB0aGlja25lc3MgZm9yIHRoaXMgdGV4dCwgYmV0d2VlbiAtMjAwIGFuZCAyMDAsIEZsYXNoIG9ubHktLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJ0aGlja25lc3MiIHR5cGU9Im51bWJlciIvPg0KKwk8IS0tLSAgVGhlIHggc2Nyb2xsIG9mZnNldCBvZiB0aGUgY29udGVudCBpbiBwaXhlbHMgKGEgbmVnYXRpdmUgbnVtYmVyIHNwZWNpZnlpbmcgaG93IG1hbnkgcGl4ZWxzIHRoZSBjb250ZW50IHNob3VsZCBiZSBzY3JvbGxlZCBob3Jpem9udGFsbHkpLiBEZWZhdWx0IDAuIE5PVEU6IEEgY29uc3RyYWludCBvciBoYW5kbGVyIG9uIG9ueHNjcm9sbCB3aWxsIGF1dG9tYXRpY2FsbHkgZW5hYmxlIHVwZGF0aW5nIHRoZSBhdHRyaWJ1dGUuIC0tPg0KKwk8YXR0cmlidXRlIG5hbWU9InhzY3JvbGwiIHR5cGU9Im51bWJlciIvPg0KKwk8IS0tLSAgVGhlIHkgc2Nyb2xsIG9mZnNldCBvZiB0aGUgY29udGVudCBpbiBwaXhlbHMgKGEgbmVnYXRpdmUgbnVtYmVyIHNwZWNpZnlpbmcgaG93IG1hbnkgcGl4ZWxzIHRoZSBjb250ZW50IHNob3VsZCBiZSBzY3JvbGxlZCB2ZXJ0aWNhbGx5KS4gRGVmYXVsdCAwLiBOT1RFOiBBIGNvbnN0cmFpbnQgb3IgaGFuZGxlciBvbiBvbnlzY3JvbGwgd2lsbCBhdXRvbWF0aWNhbGx5IGVuYWJsZSB1cGRhdGluZyB0aGUgYXR0cmlidXRlLiAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJ5c2Nyb2xsIiB0eXBlPSJudW1iZXIiLz4NCisNCisJPGV2ZW50IG5hbWU9Im9uZGlyZWN0aW9uIiAvPiAgICAgIA0KKwk8ZXZlbnQgbmFtZT0ib25oc2Nyb2xsIi8+ICAgDQorCTxldmVudCBuYW1lPSJvbmxpbmVoZWlnaHQiLz4gICAgIA0KKwk8ZXZlbnQgbmFtZT0ib25tYXhoc2Nyb2xsIi8+ICAgICANCisJPGV2ZW50IG5hbWU9Im9ubWF4bGVuZ3RoIi8+ICAgICAgDQorCTxldmVudCBuYW1lPSJvbm1heHNjcm9sbCIvPiAgICAgICANCisJPGV2ZW50IG5hbWU9Im9ucGF0dGVybiIvPiAgDQorCTxldmVudCBuYW1lPSJvbnNjcm9sbCIvPiAgICAgDQorCTxldmVudCBuYW1lPSJvbnNjcm9sbGV2ZW50cyIvPiAgIA0KKwk8ZXZlbnQgbmFtZT0ib25zY3JvbGxoZWlnaHQiLz4gICANCisJPGV2ZW50IG5hbWU9Im9uc2Nyb2xsd2lkdGgiLz4gICAgDQorCTxldmVudCBuYW1lPSJvbnNlbGVjdGFibGUiLz4gDQorCTwhLS1fU2VudCB3aGVuIGEgY2xpY2thYmxlIEhUTUwgbGluayBpbiB0aGUgdGV4dCBmaWVsZCBpcyBjbGlja2VkLiBFdmVudCBkYXRhIGlzIGEgc3RyaW5nIHdpdGggdGhlIGxpbmsgdmFsdWUuIFNlZSB0aGUgbWFrZVRleHRMaW5rIG1ldGhvZC4gLS0+ICAgIA0KKwk8ZXZlbnQgbmFtZT0ib250ZXh0bGluayIvPiAgDQorCTxldmVudCBuYW1lPSJvbnhzY3JvbGwiLz4gICAgDQorCTxldmVudCBuYW1lPSJvbnlzY3JvbGwiLz4NCisNCis8L2NsYXNzPg0KKw0KKzwvbGlicmFyeT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvbGZjL3ZpZXcubHp4IGIvdGVzdC9jb3JlL2xmYy92aWV3Lmx6eApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YWM4ZTFiCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdC9jb3JlL2xmYy92aWV3Lmx6eApAQCAtMCwwICsxLDI0NiBAQAorPGxpYnJhcnkgeG1sbnM9Imh0dHA6Ly9sb2NhbGhvc3Qvb3Blbmxhc3psby9sengiIA0KKyAgICAgICAgICAgIHhtbG5zOnhzaT0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2UiIA0KKyAgICAgICAgICAgIHhzaTpzY2hlbWFMb2NhdGlvbj0iaHR0cDovL2xvY2FsaG9zdC9vcGVubGFzemxvL2x6eCAuLy4uLy4uLy4uL2x6eC54c2QiPg0KKyAgICAgICAgICAgIDwhLS0tIFRoZSA8dmlldz4gaXMgdGhlIG1vc3QgYmFzaWMgdmlld2FibGUgZWxlbWVudCBpbiBhbiBPcGVuTGFzemxvIGFwcGxpY2F0aW9uLiBBbnl0aGluZyB0aGF0IGlzIGRpc3BsYXllZCBvbiB0aGUgY2FudmFzIGlzIGEgdmlldyBvciBleHRlbmRzIHRoZSB2aWV3IGNsYXNzLiBBIHZpZXcgaXMgYSByZWN0YW5nbGUsIHdoaWNoIGNhbiBiZSB2aXNpYmxlIG9yIGludmlzaWJsZSwgYW5kIHdoaWNoIGNhbiBjb250YWluIG90aGVyIHZpZXdzIG9yIGRpc3BsYXkgInJlc291cmNlcyIgc3VjaCBhcyBpbWFnZXMsIC5zd2YgZmlsZXMsIG9yIG90aGVyIHN1cHBvcnRlZCBtZWRpYS4gT25lIHZpZXcgY29udHJvbHMgb25lIGRpc3BsYXlhYmxlIHJlc291cmNlLiBUaGUgdmlldyBzeXN0ZW0gaXMgc3RyaWN0bHkgaGllcmFyY2hpY2FsOyB0aGF0IGlzLCBlYWNoIHZpZXcgaGFzIGEgc2luZ2xlIHBhcmVudCBidXQgY2FuIGhhdmUgbXVsdGlwbGUgY2hpbGRyZW4uICAtLT4NCis8Y2xhc3MgbmFtZT0idmlldyIgZXh0ZW5kcz0ibm9kZSIgPg0KKyA8IS0tLSAJQWN0aXZhdGUvaW5hY3RpdmF0ZSBjaGlsZHJlbiBmb3IgYWNjZXNzaWJpbGl0eSAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJhYWFjdGl2ZSIgdHlwZT0iYm9vbGVhbiIgLz4NCisJPGF0dHJpYnV0ZSBuYW1lPSJhYWRlc2NyaXB0aW9uIiAvPg0KKwk8IS0tLSAJU2V0IGFjY2Vzc2liaWxpdHkgZGVzY3JpcHRpb24gLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0iYWFuYW1lIiAvPg0KKwk8IS0tLSAJU2V0IGFjY2Vzc2liaWxpdHkgc2lsZW5jaW5nL3Vuc2lsZW5jaW5nIC0tPg0KKwk8YXR0cmlidXRlIG5hbWU9ImFhc2lsZW50IiB0eXBlPSJib29sZWFuIi8+DQorCTwhLS0tCVNldCBhY2Nlc3NpYmlsaXR5IHRhYiBvcmRlciAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJhYXRhYmluZGV4IiB0eXBlPSJudW1iZXIiIC8+DQorCTwhLS0tU2V0cyB0aGUgYWxpZ25tZW50IGZvciB0aGUgdmlldyB0byB0aGUgZ2l2ZW4gdmFsdWUuIFRoZSBhbGlnbm1lbnQgaXMgYmFzZWQgb24gdGhlIHNpemUgb2YgdGhpcyB2aWV3IGFzIGNvbXBhcmVkIHRvIHRoZSBzaXplIG9mIHRoZSB2aWV3J3MgaW1tZWRpYXRlIHBhcmVudC4gDQorCU9uZSBvZjogCSJsZWZ0IiB8ICJjZW50ZXIiIHwgInJpZ2h0IiB8IGNvbnN0cmFpbnQgLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0iYWxpZ24iIHR5cGU9InN0cmluZyIgdmFsdWU9ImxlZnQiLz4NCisJPCEtLS0JU2V0dGluZyBiYWNrZ3JvdW5kcmVwZWF0IGNhdXNlcyBhIHZpZXcgdG8gcmVwZWF0IGl0cyByZXNvdXJjZSB0byBmaXQgdGhlIHZpZXcncyB3aWR0aCBhbmQvb3IgaGVpZ2h0LiBDYW4gYmUgJ3JlcGVhdCcsICdyZXBlYXQteCcsICdyZXBlYXQteScgb3IgJ25vcmVwZWF0JyBwZXIgdGhlIENTUzEgYmFja2dyb3VuZC1yZXBlYXQgc3R5bGUuIA0KKwlPbmUgb2Y6IAkicmVwZWF0IiB8ICJyZXBlYXQteCIgfCAicmVwZWF0LXkiIHwgIm5vcmVwZWF0IiAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJiYWNrZ3JvdW5kcmVwZWF0IiB2YWx1ZT0ibm9yZXBlYXQiIHR5cGU9InN0cmluZyIgLz4NCisJPCEtLS0JVGhlIGJhY2tncm91bmQgY29sb3Igb2YgdGhlIHZpZXcuIFNldHRpbmcgYmdjb2xvciB0byBudWxsIHdpbGwgbWFrZSB0aGUgdmlldyB0cmFuc3BhcmVudC4gTWF5IGJlIHNldCB0byBhbnkgdmFsaWQgQ1NTIGNvbG9yIHNwZWNpZmljYXRpb24uIFdoZW4gcmVhZCwgd2lsbCBiZSByZWFkIGFzIHRoZSBlcXVpdmFsZW50IG51bWVyaWMgdmFsdWUuIFRvIHJldHJpZXZlIGEgQ1NTIGNvbG9yIHNwZWNpZmljYXRpb24sIHVzZSB0aGlzLnByZXNlbnRBdHRyaWJ1dGUoJ2JnY29sb3InLCAnY29sb3InKS4gRGVmYXVsdCBpcyBudWxsICh0cmFuc3BhcmVudCkuICAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJiZ2NvbG9yIiB0eXBlPSJjb2xvciIvPg0KKwk8IS0tLQlBIHZhbHVlIG9mIHRydWUgbWVhbnMgdGhhdCB0aGlzIHZpZXcncyBiaXRtYXAgd2lsbCBiZSBjYWNoZWQsIGlmIGF2YWlsYWJsZS4gLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0iY2FjaGViaXRtYXAiIHR5cGU9ImJvb2xlYW4iIHZhbHVlPSJmYWxzZSIvPg0KKwk8IS0tLUFuIG9iamVjdCBjb250YWluaW5nIHByb3BlcnRpZXMgY29ycmVzcG9uZGluZyB0byB0aGUgY3VycmVudCBydW50aW1lJ3MgY2FwYWJpbGl0aWVzLiBGb3IgZXhhbXBsZSwgY2FwYWJpbGl0aWVzLnJvdGF0aW9uIGlzIHRydWUgaW4gc3dmIGFuZCByZWNlbnQgdmVyc2lvbnMgb2YgU2FmYXJpIGFuZCBGaXJlZm94LiAgLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0iY2FwYWJpbGl0aWVzIiAvPg0KKwk8IS0tLQlJZiB0cnVlLCB0aGlzIHZpZXcgaW50ZXJjZXB0cyBjbGljayBldmVudHM7IG90aGVyd2lzZSB0aGV5IGFyZSBwYXNzZWQgdG8gaXRzIGNvbnRhaW5lci4gVGhpcyBkZWZhdWx0cyB0byB0cnVlIGlmIHRoZSB2aWV3IGRlZmluZXMgYSBtb3VzZSBldmVudCBoYW5kbGVyIG9yIGEgY3Vyc29yLiAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJjbGlja2FibGUiIHR5cGU9ImJvb2xlYW4iIHZhbHVlPSJmYWxzZSIvPg0KKwk8IS0tLQlTZXR0aW5nIHRvIGEgdmVjdG9yLWJhc2VkIHJlc291cmNlIGNoYW5nZXMgdGhlIGNsaWNrYWJsZSBob3RzcG90IGZvciB0aGUgbW91c2UuIENoZWNrIGNhcGFiaWxpdGllcy5jbGlja3JlZ2lvbiBiZWZvcmUgdXNpbmcgdG8gYXZvaWQgZGVidWdnZXIgd2FybmluZ3MuICAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJjbGlja3JlZ2lvbiIgLz4NCisJPCEtLS0gCUNsaXAgdGhlIHZpZXcncyBjb250ZW50cyB0byBpdHMgc2l6ZS4gLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0iY2xpcCIgdHlwZT0iYm9vbGVhbiIgdmFsdWU9ImZhbHNlIi8+DQorCTwhLS0tCWNvbG9yIHRyYW5zZm9ybXMgZXZlcnl0aGluZyBjb250YWluZWQgaW4gdGhlIHZpZXcgKGV4Y2VwdCB0aGUgYmFja2dyb3VuZCkgYnkgdGhlIHRyYW5zZm9ybWF0aW9uIGRpY3Rpb25hcnkgZ2l2ZW4gaW4gby4gVGhlIGRpY3Rpb25hcnkgaGFzIHRoZSBmb2xsb3dpbmcgcG9zc2libGUga2V5czogby5yZWRNdWx0aXBsaWVyOiBtdWx0aXBsaWVyIGZvciByZWQgY29tcG9uZW50ICgwIHRvIDEpIGRlZmF1bHRzIHRvIDEgby5yZWRPZmZzZXQ6IG9mZnNldCBmb3IgcmVkIGNvbXBvbmVudCAoLTI1NSB0byAyNTUpIGRlZmF1bHRzIHRvIDAgby5ncmVlbk11bHRpcGxpZXI6IG11bHRpcGxpZXIgZm9yIGdyZWVuIGNvbXBvbmVudCAoMCB0byAxKSBkZWZhdWx0cyB0byAxIG8uZ3JlZW5PZmZzZXQ6IG9mZnNldCBmb3IgZ3JlZW4gY29tcG9uZW50ICgtMjU1IHRvIDI1NSkgZGVmYXVsdHMgdG8gMCBvLmJsdWVNdWx0aXBsaWVyOiBtdWx0aXBsaWVyIGZvciBibHVlIGNvbXBvbmVudCAoMCB0byAxKSBkZWZhdWx0cyB0byAxIG8uYmx1ZU9mZnNldDogb2Zmc2V0IGZvciBibHVlIGNvbXBvbmVudCAoLTI1NSB0byAyNTUpIGRlZmF1bHRzIHRvIDAgby5hbHBoYU11bHRpcGxpZXI6IG11bHRpcGxpZXIgZm9yIGFscGhhIGNvbXBvbmVudCAoMCB0byAxKSBkZWZhdWx0cyB0byAxIG8uYWxwaGFPZmZzZXQ6IG9mZnNldCBmb3IgYWxwaGEgY29tcG9uZW50ICgtMjU1IHRvIDI1NSkgZGVmYXVsdHMgdG8gMCAgLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0iY29sb3J0cmFuc2Zvcm0iIHR5cGU9ImV4cHJlc3Npb24iLz4NCisJPCEtLS0gCUNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSByYXcgZHJhd2luZyBjb250ZXh0LiBUaGUgb25jb250ZXh0IGV2ZW50IGlzIHNlbnQgd2hlbiB0aGUgY29udGV4dCBpcyByZWFkeSB0byB1c2UsIHdoaWNoIGNhbiB0YWtlIHNvbWUgdGltZSBpbiBJRSBESFRNTC4gIC0tPg0KKwk8YXR0cmlidXRlIG5hbWU9ImNvbnRleHQiIHR5cGU9ImV4cHJlc3Npb24iLz4NCisJPCEtLS1UaGUgY29udGV4dCBtZW51IGluc3RhbGxlZCBvbiB0aGlzIHZpZXcgLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0iY29udGV4dG1lbnUiIC8+DQorCTwhLS0tCVRoZSBjb3JuZXIgcmFkaXVzIGZvciB0aGUgYmFja2dyb3VuZCwgZS5nLiAnNCcgb3IgYSBsaXN0IG9mIHVwIHRvIDggbnVtYmVycyAnNCAwIDAgNCAvIDIgMCAwIDInLiBQZXIgaHR0cDovL3d3dy53My5vcmcvVFIvY3NzMy1iYWNrZ3JvdW5kLyN0aGUtYm9yZGVyLXJhZGl1cyB0aGUgOCB2YWx1ZXMgZm9yIGVhY2ggcmFkaWkgYXJlIGdpdmVuIGluIHRoZSBvcmRlciB0b3AtbGVmdCwgdG9wLXJpZ2h0LCBib3R0b20tcmlnaHQsIGJvdHRvbS1sZWZ0LiBJZiB5b3UgdXNlIHRoZSAnLycgbm90YXRpb24sIHRoZSB2YWx1ZXMgYmVmb3JlIHRoZSBzbGFzaCBhcmUgdGhlIGhvcml6b250YWwgcmFkaWksIGFuZCB0aGUgdmFsdWVzIGFmdGVyIHRoZSBzbGFzaCBhcmUgdGhlIHZlcnRpY2FsIHJhZGlpLiAgLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0iY29ybmVycmFkaXVzIiAvPg0KKwk8IS0tLQlUaGUgY3Vyc29yIHRvIGRpc3BsYXkgd2hlbiB0aGUgbW91c2UgaXMgb3ZlciB0aGlzIHZpZXcuIEFueSByZXNvdXJjZSBJRCBjYW4gYmUgdXNlZCBhcyBhIGN1cnNvciwgb3IgJycgZm9yIHRoZSBkZWZhdWx0IGN1cnNvci4gVGhpcyBhdHRyaWJ1dGUgY2FuIGJlIHNldCBmb3IgYW55IHZpZXcgd2l0aCBjbGlja2FibGU9dHJ1ZS4gIC0tPg0KKwk8YXR0cmlidXRlIG5hbWU9ImN1cnNvciIgLz4NCisJPCEtLS1UaGUgZm9yZWdyb3VuZCBjb2xvciBvZiBhbnkgPHRleHQ+IG9yIDxpbnB1dHRleHQ+IGVsZW1lbnRzIHRoYXQgYXBwZWFyIGluc2lkZSB0aGlzIHZpZXcuIFRvIGFwcGx5IGEgY29sb3IgdHJhbnNmb3JtLCBzZWUgdGludGNvbG9yLiBNYXkgYmUgc2V0IHRvIGFueSB2YWxpZCBDU1MgY29sb3Igc3BlY2lmaWNhdGlvbi4gV2hlbiByZWFkLCB3aWxsIGJlIHJlYWQgYXMgdGhlIGVxdWl2YWxlbnQgbnVtZXJpYyB2YWx1ZS4gVG8gcmV0cmlldmUgYSBDU1MgY29sb3Igc3BlY2lmaWNhdGlvbiwgdXNlIHRoaXMucHJlc2VudEF0dHJpYnV0ZSgnZmdjb2xvcicsICdjb2xvcicpLiBEZWZhdWx0IGlzIDAgKGJsYWNrKS4gIC0tPg0KKwk8YXR0cmlidXRlIG5hbWU9ImZnY29sb3IiIHR5cGU9Im51bWJlciIvPg0KKwk8IS0tLQlJZiB0cnVlLCB0aGlzIHZpZXcgd2lsbCByZWNlaXZlIGZvY3VzIGV2ZW50cy4gU2VlIGZvY3VzIG1hbmFnZXIgKGx6LkZvY3VzKSBmb3IgbW9yZSBkZXRhaWxzLiAgLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0iZm9jdXNhYmxlIiB0eXBlPSJib29sZWFuIi8+DQorCTwhLS0tCUlmIHRydWUsIHRoaXMgdmlldyAidHJhcHMiIHRoZSBmb2N1cywgZm9yIGV4YW1wbGUgaW4gYSB3aW5kb3cgb3IgZGlhbG9nLiBTZWUgZm9jdXMgbWFuYWdlciAobHouRm9jdXMpIGZvciBtb3JlIGRldGFpbHMuICAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJmb2N1c3RyYXAiIHR5cGU9ImJvb2xlYW4iLz4NCisJPCEtLS0JVGhlIGZvbnQgdG8gdXNlIGZvciBhbnkgPHRleHQ+IG9yIDxpbnB1dHRleHQ+IGVsZW1lbnRzIHRoYXQgYXBwZWFyIGluc2lkZSB0aGlzIHZpZXcuIExpa2UgYWxsIHRoZSBmb250IHByb3BlcnRpZXMgKGZvbnRzdHlsZSBhbmQgZm9udHNpemUgdG9vKSB0aGVzZSBwcm9wZXJ0aWVzIGNhc2NhZGUgZG93biB0aGUgdmlldyBoaWVyYXJjaHkgdW50aWwgYSBuZXcgdmFsdWUgaXMgc3BlY2lmaWVkLiAgLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0iZm9udCIgLz4NCisJPCEtLS0JUGl4ZWwgc2l6ZSB0byB1c2UgdG8gcmVuZGVyIHRleHQgd2hpY2ggYXBwZWFycyBpbnNpZGUgdGhpcyB2aWV3LiBUaGUgZGVmYXVsdCBpcyA4LiAgLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0iZm9udHNpemUiIC8+DQorCTwhLS0tCVRoZSBzdHlsZSB0byB1c2UgdG8gcmVuZGVyIHRleHQgZmllbGRzIHRoYXQgYXBwZWFyIGluc2lkZSBvZiB0aGlzIHZpZXcuIE9uZSBvZiAicGxhaW4iLCAiYm9sZCIgLCAiaXRhbGljIiBvciAiYm9sZGl0YWxpYyIuICAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJmb250c3R5bGUiIC8+DQorCTwhLS0tCUlmIHRoaXMgdmlldyBoYXMgYSBtdWx0aS1mcmFtZSByZXNvdXJjZSwgdGhpcyBhbGxvd3Mgc2V0dGluZyB3aGljaCByZXNvdXJjZSBmcmFtZSBpcyBkaXNwbGF5ZWQuIERlZmF1bHRzIHRvIHRoZSBmaXJzdCBmcmFtZSAoMSkuIFNlZSBhbHNvIHRoZSByZXNvdXJjZSBhdHRyaWJ1dGUuIFNldHRpbmcgdGhpcyBhdHRyaWJ1dGUgd2lsbCBjaGFuZ2UgdGhlIGZyYW1lIHRoYXQgaXMgYmVpbmcgZGlzcGxheWVkIGJ5IHRoZSByZXNvdXJjZSBhc3NvY2lhdGVkIHdpdGggdGhpcyB2aWV3LiBUaGUgZmlyc3QgZnJhbWUgb2YgdGhlIHJlc291cmNlIGlzIGZyYW1lIDEuIFNldHRpbmcgYSB2aWV3J3MgJ2RvbnR0cmFja3BsYXknIG9wdGlvbiB0byB0cnVlIHdpbGwgYWxsb3cgdGhlIHZpZXcncyByZXNvdXJjZSB0byBwbGF5IHdpdGhvdXQgdXBkYXRpbmcgdGhlIHZhbHVlIG9mIHRoZSB2aWV3J3MgZnJhbWUgcHJvcGVydHkuIFRoaXMgY2FuIHNhdmUgQ1BVIHVzYWdlIGluIGNhc2VzIHdoZXJlIHRoZSBhcHBsaWNhdGlvbiBkb2Vzbid0IG5lZWQgdG8ga25vdyB3aGF0IGZyYW1lIHRoZSByZXNvdXJjZSBpcyBzaG93aW5nIHdoaWxlIGl0IGlzIHBsYXlpbmcuICAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJmcmFtZSIgdHlwZT0ibnVtYmVyIi8+DQorCTwhLS0tCUZvciB2aWV3cyB3aG9zZSByZXNvdXJjZSBpcyBsb2FkZWQgYXQgcnVudGltZSwgdGhlIHJhdGlvIG9mIHRoZSBsb2FkZWQgZnJhbWVzIHRvIHRoZSB0b3RhbCBmcmFtZXMuIFRoaXMgaXMgYSBudW1iZXIgYmV0d2VlbiB6ZXJvIGFuZCAxLiAgLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0iZnJhbWVzbG9hZHJhdGlvIiB0eXBlPSJudW1iZXIiLz4NCisJPCEtLS1JZiB0cnVlLCBzcHJpdGUgd2lsbCB1c2UgVExGIHRleHQgZnJhbWV3b3JrIGNsYXNzIHRoYXQgc3VwcG9ydHMgYmlkaXJlY3Rpb25hbCB0ZXh0IGxheW91dC4gLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0iaGFzZGlyZWN0aW9uYWxsYXlvdXQiIHR5cGU9Im51bWJlciIvPg0KKwk8IS0tLQlJZiB0cnVlLCB0aGVuIHRoaXMgdmlldyBoYXMgYW4gYXNzaWduZWQgb3IgY29uc3RyYWluZWQgaGVpZ2h0LCBhbmQgdGhlIHZpZXcgd2lsbCBub3QgYmUgc2l6ZWQgdG8gaXRzIGNvbnRlbnRzLiAgLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0iaGFzc2V0aGVpZ2h0IiB0eXBlPSJib29sZWFuIi8+DQorCTwhLS0tCUlmIHRydWUsIHRoZW4gdGhpcyB2aWV3IGhhcyBhbiBhc3NpZ25lZCBvciBjb25zdHJhaW5lZCB3aWR0aCwgYW5kIHRoZSB2aWV3IHdpbGwgbm90IGJlIHNpemVkIHRvIGl0cyBjb250ZW50cy4gIC0tPg0KKwk8YXR0cmlidXRlIG5hbWU9Imhhc3NldHdpZHRoIiB0eXBlPSJib29sZWFuIi8+DQorCTwhLS0tCVRoZSBoZWlnaHQgb2YgdGhlIHZpZXcuIENhbiBiZSBzZXQgdG8gZWl0aGVyIGEgbnVtYmVyLCBvciBudWxsLCB0byBpbmRpY2F0ZSB0aGF0IHRoZSB2aWV3IHNob3VsZCBiZSBzaXplZCB0byBob2xkIGl0cyBjb250ZW50LiBJZiB0aGUgdmlldyBpcyBzZXQgdG8gc3RyZXRjaCBpdHMgcmVzb3VyY2UsIHRoZSByZXNvdXJjZSB3aWxsIGJlIHJlc2l6ZWQgdG8gdGhlIG5ldyB2YWx1ZS4gV2hlbiByZWFkLCByZWZsZWN0cyB0aGUgYWN0dWFsIHNpemUgb2YgdGhlIHZpZXcuICAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJoZWlnaHQiIHR5cGU9Im51bWJlciIvPg0KKwk8IS0tLQlBIENTUyBkZWNsYXJhdGlvbiBvZiBwcm9wZXJ0eTogdmFsdWUgcGFpcnMgb2YgbGF5b3V0IGF0dHJpYnV0ZXMsIHdoaWNoIGFyZSB1c2VkIHRvIGNyZWF0ZSBhIGxheW91dCB0aGF0IGlzIGF0dGFjaGVkIHRvIHRoaXMgdmlldy4gSWYgdGhlcmUgaXMgYSBjbGFzcyBwcm9wZXJ0eSwgaXQgbmFtZXMgdGhlIGNsYXNzIG9mIHRoZSBsYXlvdXQgdG8gYmUgY3JlYXRlZCwgb3RoZXJ3aXNlIDxzaW1wbGVsYXlvdXQ+IGlzIHVzZWQuIFRvIHJlbW92ZSB0aGUgcHJldmlvdXNseSBzZXQgbGF5b3V0LCB1c2UgeydjbGFzcyc6ICdub25lJ30gRXhhbXBsZXM6IGxheW91dD0iYXhpczogeCIsIGxheW91dD0iY2xhc3M6IGNvbnN0YW50bGF5b3V0IiwgbGF5b3V0PSJheGlzOiB5IiwgbGF5b3V0PSJheGlzOiB4OyBzcGFjaW5nOiA1Ii4gIC0tPg0KKwk8YXR0cmlidXRlIG5hbWU9ImxheW91dCIgLz4NCisJPCEtLS0JRm9yIHZpZXdzIHdob3NlIHJlc291cmNlIGlzIGxvYWRlZCBhdCBydW50aW1lLCByYXRpbyBvZiB0aGUgbG9hZGVkIGJ5dGVzIHRvIHRoZSB0b3RhbCBieXRlcy4gVGhpcyBpcyBhIG51bWJlciBiZXR3ZWVuIHplcm8gYW5kIDEuICAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJsb2FkcmF0aW8iIC8+DQorCTwhLS0tCVJlZmVyZW5jZSB0byBjbG9zZXN0IG1hc2tlZCB2aWV3IGluIHRoZSBoaWVyYXJjaHkgYXQgb3IgYWJvdmUgdGhpcyBvbmUgIC0tPg0KKwk8YXR0cmlidXRlIG5hbWU9Im1hc2siIC8+DQorCTwhLS0tCVRoZSBvcGFjaXR5IG9mIHRoZSB2aWV3J3MgY29udGVudHMuIDEuMCBpcyBvcGFxdWU7IDAuMCBpcyB0b3RhbGx5IHRyYW5zcGFyZW50IChpbnZpc2libGUpLiAgLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0ib3BhY2l0eSIgdHlwZT0ibnVtYmVyIiAvPg0KKwk8IS0tLSAJVGhlIHZpZXcgc3lzdGVtIHN1cHBvcnRzIHN1Yi1waXhlbCBwb3NpdGlvbmluZyB0byBlbmFibGUgc21vb3RoIGFuaW1hdGlvbi4gVGhpcyBtYXkgYmUgdHVybmVkIG9mZiB0byBtYWtlIHRoZSB2aWV3IHNuYXAgdG8gYSBwaXhlbCBib3VuZGFyeSBieSBzZXR0aW5nIHBpeGVsbG9jayB0byB0cnVlLiAgLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0icGl4ZWxsb2NrIiAvPg0KKwk8IS0tLQlJZiB0cnVlLCB0aGlzIHZpZXcgaXMgY3VycmVudGx5IHBsYXlpbmcuIFNldHRpbmcgdG8gdHJ1ZSBjYXVzZXMgdGhlIHZpZXcgdG8gcGxheSwgZmFsc2UgY2F1c2VzIHBsYXliYWNrIHRvIHN0b3AuIC0tPg0KKwk8YXR0cmlidXRlIG5hbWU9InBsYXlpbmciIHR5cGU9ImJvb2xlYW4iLz4NCisJPCEtLS0JVGhlIHVybCBvZiB0aGUgcHJveHkgc2VydmVyLCBpZiB0aGUgYXBwIGlzIHJ1bm5pbmcgaW4gcHJveGllZCBtb2RlLiBwcm94eXVybCBjYW4gYmUgbnVsbCwgYSBVUkwgc3RyaW5nLCBvciBhIGZ1bmN0aW9uLg0KKw0KKyAgICBJZiB0aGUgdmFsdWUgaXMgYSBzdHJpbmcsIHRyZWF0IGl0IGFzIGEgVVJMIHRvIHRoZSBwcm94eSBzZXJ2ZXIuDQorICAgIElmIHRoZSB2YWx1ZSBpcyBhIGZ1bmN0aW9uLCBpdCBzaG91bGQgcmV0dXJuIHRoZSBVUkwgb2YgdGhlIHByb3h5IHNlcnZlci4NCisNCitUaGUgZGVmYXVsdCBwcm94eSBwb2xpY3kgcmVmZXJlbmNlcyB0aGUgcHJveHl1cmwgb2YgdGhlIGNhbnZhcy4gIC0tPg0KKwk8YXR0cmlidXRlIG5hbWU9InByb3h5dXJsIiAvPg0KKwk8IS0tLUEgcmVzb3VyY2UgdGhhdCBpcyBwcmVzZW50ZWQgaW4gdGhlIGJhY2tncm91bmQgb2YgdGhpcyB2aWV3LiBUaGUgdmFsdWUgY2FuIGJlIGVpdGhlciB0aGUgbmFtZSBvZiBhIHJlc291cmNlIGRlZmluZWQgd2l0aCB0aGUgcmVzb3VyY2UgdGFnLCBhIFVSTCwgb3IgYSBwYXRobmFtZS4gSWYgdGhlIHZhbHVlIGlzIGEgVVJMLCB0aGUgcmVzb3VyY2UgaXMgcmVxdWVzdGVkIHdoZW4gdGhlIHZpZXcgaXMgZGlzcGxheWVkLiBJZiBpdCdzIGEgcGF0aG5hbWUsIHRoZSBmaWxlIG5hbWVkIGJ5IHRoZSBwYXRobmFtZSBpcyBjb21waWxlZCBpbnRvIHRoZSBhcHBsaWNhdGlvbiwgYW5kIGF0dGFjaGVkIHRvIHRoaXMgdmlldy4gIC0tPg0KKwk8YXR0cmlidXRlIG5hbWU9InJlc291cmNlIiAvPg0KKwk8IS0tLQlUaGUgaGVpZ2h0IG9mIHRoZSByZXNvdXJjZSB0aGF0IHRoaXMgdmlldyBhdHRhY2hlZCAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJyZXNvdXJjZWhlaWdodCIgdHlwZT0ibnVtYmVyIi8+DQorCTwhLS0tVGhlIHdpZHRoIG9mIHRoZSByZXNvdXJjZSB0aGF0IHRoaXMgdmlldyBhdHRhY2hlZCAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJyZXNvdXJjZXdpZHRoIiB0eXBlPSJudW1iZXIiLz4NCisJPCEtLS0JVGhlIHJvdGF0aW9uIHZhbHVlIGZvciB0aGUgdmlldyAoaW4gZGVncmVlcykuIFZhbHVlIG1heSBiZSBsZXNzIHRoYW4gemVybyBvciBncmVhdGVyIHRoYW4gMzYwLiAgLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0icm90YXRpb24iIHR5cGU9Im51bWJlciIgdmFsdWU9IjAiLz4NCisJPCEtLS0JVGhlIGFuZ2xlIGZvciB0aGUgZHJvcCBzaGFkb3csIGluIGRlZ3JlZXMgLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0ic2hhZG93YW5nbGUiIHR5cGU9Im51bWJlciIgdmFsdWU9IjAiLz4NCisJPCEtLS1UaGUgYmx1ciByYWRpdXMgZm9yIHRoZSBkcm9wIHNoYWRvdywgaW4gcGl4ZWxzLiBBIG5lZ2F0aXZlIHZhbHVlIHdpbGwgY2F1c2UgdGhlIHNoYWRvdyB0byBiZSBpbnNldC4gLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0ic2hhZG93Ymx1cnJhZGl1cyIgdHlwZT0ibnVtYmVyIiB2YWx1ZT0iNCIvPg0KKwk8IS0tLVRoZSBjb2xvciBmb3IgdGhlIGRyb3Agc2hhZG93IC0tPg0KKwk8YXR0cmlidXRlIG5hbWU9InNoYWRvd2NvbG9yIiAvPg0KKwk8IS0tLQlUaGUgZGlzdGFuY2UgZm9yIHRoZSBkcm9wIHNoYWRvdywgaW4gcGl4ZWxzIC0tPg0KKwk8YXR0cmlidXRlIG5hbWU9InNoYWRvd2Rpc3RhbmNlIiAvPg0KKwk8IS0tLQlTaG93IG9yIGhpZGUgdGhlIGhhbmQgY3Vyc29yIGZvciB0aGlzIHZpZXcsIGlmIGNsaWNrYWJsZSAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJzaG93aGFuZGN1cnNvciIgdHlwZT0iYm9vbGVhbiIvPg0KKwk8IS0tLQlUaGUgVVJMIGZyb20gd2hpY2ggdG8gbG9hZCB0aGUgcmVzb3VyY2UgZm9yIHRoaXMgdmlldy4gSWYgdGhpcyBhdHRyaWJ1dGUgaXMgc2V0LCB0aGUgbWVkaWEgZm9yIHRoZSB2aWV3IGlzIGxvYWRlZCBhdCBydW50aW1lLiAgLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0ic291cmNlIiAvPg0KKwk8IS0tLQlTZXR0aW5nIHN0cmV0Y2hlcyBjYXVzZXMgYSB2aWV3IHRvIGNoYW5nZSBpdHMgY29vcmRpbmF0ZSBzcGFjZSBzbyB0aGF0IGV2ZXJ5dGhpbmcgaXQgY29udGFpbnMgKHJlc291cmNlcyBhbmQgb3RoZXIgdmlld3MpIGZpdCBleGFjdGx5IGludG8gdGhlIHZpZXcncyB3aWR0aCBhbmQvb3IgaGVpZ2h0LiBUaGUgZGVmYXVsdCBmb3IgdGhpcyBwcm9wZXJ0eSBpcyAibm9uZSIuIFRoaXMgaXMgdXNlZCB0byByZXNpemUgYSB2aWV3J3MgY29udGVudHMgYnkgc2V0dGluZyBpdHMgd2lkdGggYW5kL29yIGhlaWdodC4gDQorCU9uZSBvZjogCSJ3aWR0aCIgfCAiaGVpZ2h0IiB8ICJib3RoIiB8ICJub25lIiAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJzdHJldGNoZXMiIHZhbHVlPSJub25lIi8+DQorCTwhLS0tCUFuIGFycmF5IG9mIHRoZSBzdWJ2aWV3cyB0aGF0IGFyZSBjaGlsZHJlbiBvZiB0aGlzIHZpZXcuIFRoaXMgaXMgaW5pdGlhbGl6ZWQgdG8gYW4gZW1wdHkgYXJyYXkgZm9yIHZpZXdzIHRoYXQgaGF2ZSBubyBzdWJ2aWV3cy4gIC0tPg0KKwk8YXR0cmlidXRlIG5hbWU9InN1YnZpZXdzIiAvPg0KKwk8IS0tLQlTZXRzIHRoZSBjb2xvciBvZmZzZXQsIGJhc2VkIG9uIGEgaGV4YWRlY2ltYWwgY29sb3Igc3RyaW5nLCBlLmcuICcjZmYwMGZmJy4gU2VlIHNldENvbG9yVHJhbnNmb3JtKCkgZm9yIGRldGFpbHMuIC0tPg0KKwk8YXR0cmlidXRlIG5hbWU9InRpbnRjb2xvciIgLz4NCisJPCEtLS0JVGhlIHRvdGFsIG51bWJlciBvZiBmcmFtZXMgZm9yIHRoaXMgdmlldydzIHJlc291cmNlLiAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJ0b3RhbGZyYW1lcyIgdHlwZT0ibnVtYmVyIi8+DQorCTwhLS0tCUlmIHN0cmV0Y2hlcyBpcyBub3Qgc2V0IHRvIG5vbmUsIHRoZSBoZWlnaHQgdGhhdCB0aGlzIHZpZXcgd291bGQgYmUgaWYgaXQgd2VyZW4ndCBzdHJldGNoZWQuIFRoaXMgYXR0cmlidXRlIGNhbiBiZSB1c2VkIHRvIHNjYWxlIGEgdmlldyBieSBhIHBlcmNlbnRhZ2Ugb2YgaXRzIG9yaWdpbmFsIHNpemUsIG9yIHRvIGRldGVybWluZSB0aGUgYXNwZWN0IHJhdGlvIGZvciBhIHZpZXcuICAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJ1bnN0cmV0Y2hlZGhlaWdodCIgdHlwZT0ibnVtYmVyIi8+DQorCTwhLS0tCUlmIHN0cmV0Y2hlcyBpcyBub3Qgc2V0IHRvIG5vbmUsIHRoZSB3aWR0aCB0aGF0IHRoaXMgdmlldyB3b3VsZCBiZSBpZiBpdCB3ZXJlbid0IHN0cmV0Y2hlZC4gVGhpcyBhdHRyaWJ1dGUgY2FuIGJlIHVzZWQgdG8gc2NhbGUgYSB2aWV3IGJ5IGEgcGVyY2VudGFnZSBvZiBpdHMgb3JpZ2luYWwgc2l6ZSwgb3IgdG8gZGV0ZXJtaW5lIHRoZSBhc3BlY3QgcmF0aW8gZm9yIGEgdmlldy4gIC0tPg0KKwk8YXR0cmlidXRlIG5hbWU9InVuc3RyZXRjaGVkd2lkdGgiIHR5cGU9Im51bWJlciIvPg0KKwk8IS0tLQlUcnVlIGlmIHRoaXMgdmlldyByZXF1aXJlcyBhIGNhbGwgdG8gZ2V0Qm91bmRzKCkgZm9yIGFjY3VyYXRlIHdpZHRoIGFuZCBoZWlnaHQgbWVhc3VyZW1lbnQuIFRoaXMgbWF5IGJlIG5lY2Vzc2FyeSB3aGVuIGFuIG9mZnNldCBvciByb3RhdGlvbiBhcmUgYXBwbGllZC4gIC0tPg0KKwk8YXR0cmlidXRlIG5hbWU9InVzZWdldGJvdW5kcyIgdHlwZT0iYm9vbGVhbiIvPg0KKwk8IS0tLQlTZXRzIHRoZSB2ZXJ0aWNhbCBhbGlnbm1lbnQgZm9yIHRoZSB2aWV3IHRvIHRoZSBnaXZlbiB2YWx1ZS4gVGhlIGFsaWdubWVudCBpcyBiYXNlZCBvbiB0aGUgaGVpZ2h0IG9mIHRoaXMgdmlldyBhcyBjb21wYXJlZCB0byB0aGUgaGVpZ2h0IG9mIHRoZSB2aWV3J3MgaW1tZWRpYXRlcGFyZW50LiANCisJT25lIG9mOiAJInRvcCIgfCAibWlkZGxlIiB8ICJib3R0b20iIHwgY29uc3RyYWludCAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJ2YWxpZ24iIHZhbHVlPSJ0b3AiLz4NCisJPCEtLS0JQSB2YWx1ZSBvZiAidmlzaWJsZSIgbWVhbnMgdGhhdCB0aGlzIHZpZXcgaXMgc2hvd24uIEEgdmFsdWUgb2YgImhpZGRlbiIgbWVhbnMgdGhhdCB0aGlzIHZpZXcgaXMgaGlkZGVuLiBTZXR0aW5nIHRoaXMgYXR0cmlidXRlIHRvICJjb2xsYXBzZSIgbWVhbnMgdGhhdCB0aGUgcnVudGltZSB3aWxsIGhpZGUgdGhpcyB2aWV3IHdoZW46IGl0cyBvcGFjaXR5IGlzIHplcm8sIGl0IGhhcyBhIGRhdGFwYXRoIHRoYXQgZG9lcyBub3QgbWF0Y2ggYSBub2RlLCBvciBpdCBpcyBsb2FkaW5nIGl0cyBtZWRpYS4gSW4gdGhpcyBjYXNlLCB0aGUgdGhlIHZhbHVlIG9mIHRoZSAndmlzaWJsZScgYXR0cmlidXRlIG9mIHRoZSB2aWV3IHdpbGwgcmVmbGVjdCB0aGUgdmlldydzIGN1cnJlbnQgdmlzaWJsZSBzdGF0ZS4gDQorCU9uZSBvZjogaGlkZGVufHZpc2libGV8Y29sbGFwc2UgLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0idmlzaWJpbGl0eSIgdmFsdWU9ImNvbGxhcHNlIi8+DQorCTwhLS0tCUEgdmFsdWUgb2YgdHJ1ZSBtZWFucyB0aGF0IHRoaXMgdmlldyBpcyBzaG93bi4gQSB2YWx1ZSBvZiBmYWxzZSBtZWFucyB0aGF0IHRoaXMgdmlldyBpcyBoaWRkZW4uIE5vdGUgdGhhdCBhbiBvdGhlcndpc2UgY2xpY2thYmxlIHZpZXcgdGhhdCBpcyBub3QgdmlzaWJsZSB3aWxsIGhhdmUgbm8gY2xpY2sgcmVnaW9uIGFuZCB3aWxsIG5vdCBiZSBjbGlja2FibGUuICAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJ2aXNpYmxlIiB0eXBlPSJib29sZWFuIi8+DQorCTwhLS0tVGhlIHdpZHRoIG9mIHRoZSB2aWV3LiBDYW4gYmUgc2V0IHRvIGVpdGhlciBhIG51bWJlciwgb3IgbnVsbCwgdG8gaW5kaWNhdGUgdGhhdCB0aGUgdmlldyBzaG91bGQgYmUgc2l6ZWQgdG8gaG9sZCBpdHMgY29udGVudC4gSWYgdGhlIHZpZXcgaXMgc2V0IHRvIHN0cmV0Y2ggaXRzIHJlc291cmNlLCB0aGUgcmVzb3VyY2Ugd2lsbCBiZSByZXNpemVkIHRvIHRoZSBuZXcgdmFsdWUuIFdoZW4gcmVhZCwgcmVmbGVjdHMgdGhlIGFjdHVhbCBzaXplIG9mIHRoZSB2aWV3LiAgLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0id2lkdGgiIHR5cGU9Im51bWJlciIvPg0KKwk8IS0tLQlUaGUgaG9yaXpvbnRhbCBvZmZzZXQgb2YgdGhpcyB2aWV3J3MgdXBwZXIgbGVmdCBjb3JuZXIgZnJvbSB0aGUgdXBwZXIgbGVmdCBjb3JuZXIgb2YgaXRzIGNvbnRhaW5lci4gIC0tPg0KKwk8YXR0cmlidXRlIG5hbWU9IngiIHR5cGU9Im51bWJlciIvPg0KKwk8IS0tLQlTcGVjaWZpZXMgYSB0cmFuc2xhdGlvbiBwb2ludCBmb3IgZHJhd2luZyBvZiB0aGlzIHZpZXcuIElmIHRoZSB4b2Zmc2V0IGlzIHNldCwgdGhlbiByb3RhdGlvbiBhbmQgeCBwb3NpdGlvbiB3aWxsIGJlIGNhbGN1bGF0ZWQgYnkgZmlyc3QgYWRkaW5nIHRoZSB4b2Zmc2V0LiAgLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0ieG9mZnNldCIgdHlwZT0ibnVtYmVyIi8+DQorCTwhLS0tCVNwZWNpZmllcyB0aGlzIGhvcml6b250YWwgc2NhbGUgZm9yIHRoaXMgYW5kIGFsbCBjaGlsZCB2aWV3cy4gLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0ieHNjYWxlIiB0eXBlPSJudW1iZXIiIHZhbHVlPSIxIi8+DQorCTwhLS0tCVRoZSB2ZXJ0aWNhbCBvZmZzZXQgb2YgdGhpcyB2aWV3J3MgdXBwZXIgbGVmdCBjb3JuZXIgZnJvbSB0aGUgdXBwZXIgbGVmdCBjb3JuZXIgb2YgaXRzIGNvbnRhaW5lciAgLS0+DQorCTxhdHRyaWJ1dGUgbmFtZT0ieSIgdHlwZT0ibnVtYmVyIi8+DQorCTwhLS0tU3BlY2lmaWVzIGEgdHJhbnNsYXRpb24gcG9pbnQgZm9yIGRyYXdpbmcgb2YgdGhpcyB2aWV3LiBJZiB0aGUgeW9mZnNldCBpcyBzZXQsIHRoZW4gcm90YXRpb24gYW5kIHkgcG9zaXRpb24gd2lsbCBiZSBjYWxjdWxhdGVkIGJ5IGZpcnN0IGFkZGluZyB0aGUgeW9mZnNldC4gIC0tPg0KKwk8YXR0cmlidXRlIG5hbWU9InlvZmZzZXQiIHR5cGU9Im51bWJlciIvPg0KKwk8IS0tLQlTcGVjaWZpZXMgdGhpcyB2ZXJ0aWNhbCBzY2FsZSBmb3IgdGhpcyBhbmQgYWxsIGNoaWxkIHZpZXdzLiAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJ5c2NhbGUiIHR5cGU9Im51bWJlciIgdmFsdWU9IjEiLz4NCisJDQorCTwhLS0gZXh0cmEgYXR0cmlidXRlcyAtLT4NCisJPGF0dHJpYnV0ZSBuYW1lPSJ3aXRoIiAvPg0KKwkNCisJDQorCTwhLS0tRXZlbnQgY2FsbGVkIHdoZW4gdGhpcyB2aWV3IGFkZHMgYSBzdWJ2aWV3IC0tPiAgIA0KKwk8ZXZlbnQgbmFtZT0ib25hZGRzdWJ2aWV3IiAvPg0KKwk8IS0tLSBldmVudCBmb3IgY2hhbmdlcyB0byB2aWV3J3MgYmFja2dyb3VuZHJlcGVhdCBwcm9wZXJ0eSAtLT4NCisgICAgPGV2ZW50IG5hbWU9Im9uYmFja2dyb3VuZHJlcGVhdCIgLz4NCisgICAgPCEtLS0gIFRoZSBvbmJsdXIgZXZlbnQgaXMgc2VudCB3aGVuIGFuIGVsZW1lbnQgbG9zZXMgZm9jdXMgZWl0aGVyIGJ5IHRoZSBwb2ludGluZyBkZXZpY2Ugb3IgYnkgdGFiYmluZyBuYXZpZ2F0aW9uLi0tPiANCisgICAgPGV2ZW50IG5hbWU9Im9uYmx1ciIgLz4NCisgICAgPCEtLS0gICBUaGUgb25jbGljayBldmVudCBpcyBzZW50IHdoZW4gdGhlIHBvaW50aW5nIGRldmljZSBidXR0b24gaXMgY2xpY2tlZCBvdmVyIGFuIGVsZW1lbnQuLS0+IA0KKyAgICA8ZXZlbnQgbmFtZT0ib25jbGljayIgLz4NCisgICAgPCEtLS0gRXZlbnQgZm9yIGNoYW5nZXMgdG8gdmlldydzIGNsaWNrYWJsZSBwcm9wZXJ0eS0tPiANCisgICAgPGV2ZW50IG5hbWU9Im9uY2xpY2thYmxlIiAvPg0KKyAgICA8IS0tLSBUaGUgb25jbGlwIGV2ZW50IGlzIHNlbnQgd2hlbiB0aGUgY2xpcCBhdHRyaWJ1dGUgb2YgYSB2aWV3IGlzIGNoYW5nZWQtLT4gDQorICAgIDxldmVudCBuYW1lPSJvbmNsaXAiIC8+DQorICAgIDwhLS0tIFNlbnQgd2hlbiB0aGUgZHJhd2luZyBjb250ZXh0IGlzIHJlYWR5IHRvIHVzZSwgd2hpY2ggY2FuIHRha2Ugc29tZSB0aW1lIGluIElFIERIVE1MLi0tPg0KKyAgICA8ZXZlbnQgbmFtZT0ib25jb250ZXh0IiAvPiANCisgICAgPCEtLS0gU2VudCB3aGVuIGNvcm5lcnJhZGl1cyBjaGFuZ2VzLS0+DQorICAgIDxldmVudCBuYW1lPSJvbmNvcm5lcnJhZGl1cyIgLz4NCisgICAgPCEtLS0gVGhlIG9uZGJsY2xpY2sgZXZlbnQgaXMgc2VudCB3aGVuIHRoZSBwb2ludGluZyBkZXZpY2UgYnV0dG9uIGlzIGRvdWJsZSBjbGlja2VkIG92ZXIgYW4gZWxlbWVudC4tLT4NCisgICAgPGV2ZW50IG5hbWU9Im9uZGJsY2xpY2siIC8+IA0KKyAgICA8IS0tLSBTZW50IHdoZW4gdGhlcmUgaXMgYW4gZXJyb3IgbG9hZGluZyB0aGUgdmlldydzIHJlc291cmNlLiBUaGUgYXJndW1lbnQgc2VudCB3aXRoIHRoZSBldmVudCBpcyBhbiBlcnJvciBzdHJpbmcuLS0+DQorICAgIDxldmVudCBuYW1lPSJvbmVycm9yIiAvPg0KKyAgICA8IS0tLSBUaGUgb25mb2N1cyBldmVudCBpcyBzZW50IHdoZW4gYW4gZWxlbWVudCByZWNlaXZlcyBmb2N1cyBlaXRoZXIgYnkgdGhlIHBvaW50aW5nIGRldmljZSBvciBieSB0YWJiaW5nIG5hdmlnYXRpb24uLS0+DQorICAgIDxldmVudCBuYW1lPSJvbmZvY3VzIiAvPg0KKyAgICA8IS0tLSBTZW50IG9uaWRsZSB3aGlsZSB2aWV3IGlzIHBsYXlpbmcgaXRzIHJlc291cmNlLS0+DQorICAgIDxldmVudCBuYW1lPSJvbmZyYW1lIiAvPiANCisgICAgPCEtLS0gU2VuZHMgYSBwZXJjZW50YWdlICgwLTEpIHJlZmxlY3RpbmcgdGhlIG51bWJlciBvZiBmcmFtZXMgZG93bmxvYWRlZC4tLT4NCisgICAgPGV2ZW50IG5hbWU9Im9uZnJhbWVzbG9hZHJhdGlvIiAvPiANCisgICAgPCEtLS1UaGUgb25nZXN0dXJlIGV2ZW50IGlzIHNlbnQgd2hlbiBhIHRvdWNoIGRldmljZSByZWNlaXZlcyBhIGdlc3R1cmUgZXZlbnQuIFRoZSB2YWx1ZSBzZW50IHdpdGggdGhlIGV2ZW50IGlzIGFuIG9iamVjdCB3aXRoIHR3byBwcm9wZXJ0aWVzOiBzY2FsZSBhbmQgcm90YXRpb24uIEN1cnJlbnRseSBzdXBwb3J0ZWQgb25seSBpbiBpT1Mgb24gREhUTUwuIC0tPg0KKyAgICA8ZXZlbnQgbmFtZT0ib25nZXN0dXJlIiAvPg0KKyAgICA8IS0tLSBFdmVudCBmb3IgY2hhbmdlcyB0byB2aWV3J3MgaGVpZ2h0IHByb3BlcnR5LS0+DQorICAgIDxldmVudCBuYW1lPSJvbmhlaWdodCIgLz4NCisgICAgPCEtLS0gVGhlIG9ua2V5ZG93biBldmVudCBpcyBzZW50IHdoZW4gdGhpcyB2aWV3IGhhcyB0aGUgZm9jdXMgYW5kIGEga2V5IGlzIHByZXNzZWQgZG93bi4gTXVsdGlwbGUga2V5IGRvd24gZXZlbnRzIGFyZSBzZW50IGZvciBhIGtleSB0aGF0IGlzIGhlbGQgZG93bi4gSWYgeW91IHdhbnQgdGhlIHNjcmlwdCBleGVjdXRlZCBvbmx5IG9uY2UsIHVzZSBvbmtleXVwLiBUaGlzIGV2ZW50IGlzIHNlbnQgd2l0aCB0aGUga2V5Y29kZSBmb3IgdGhlIGtleSB0aGF0IGlzIGRvd24uLS0+DQorICAgIDxldmVudCBuYW1lPSJvbmtleWRvd24iIC8+DQorICAgIDwhLS0tIFRoZSBvbmtleXVwIGV2ZW50IGlzIHNlbnQgd2hlbiB0aGlzIHZpZXcgaGFzIHRoZSBmb2N1cyBhbmQgYSBrZXkgaXMgcmVsZWFzZWQuIFRoaXMgZXZlbnQgaXMgc2VudCB3aXRoIHRoZSBrZXljb2RlIGZvciB0aGUga2V5IHRoYXQgd2VudCB1cC4gLS0+DQorICAgIDxldmVudCBuYW1lPSJvbmtleXVwIiAvPg0KKyAgICA8IS0tLVNlbnQgd2hlbiB0aGUgdmlldyBzZXRzIGl0cyBmcmFtZSAocmVzb3VyY2UgbnVtYmVyKSB0byB0aGUgbGFzdCBmcmFtZS4gVGhpcyBjYW4gYmUgdXNlZCB0byBmaW5kIG91dCB3aGVuIGEgc3RyZWFtaW5nIG1lZGlhIGNsaXAgaXMgZG9uZSBwbGF5aW5nLiAtLT4NCisgICAgPGV2ZW50IG5hbWU9Im9ubGFzdGZyYW1lIiAvPg0KKyAgICA8IS0tLVNlbmQgd2hlbiB0aGUgdmlldyBmaW5pc2hlcyBsb2FkaW5nIG1lZGlhLiAtLT4NCisgICAgPGV2ZW50IG5hbWU9Im9ubG9hZCIgLz4NCisgICAgPCEtLS1TZW5kcyBhIHBlcmNlbnRhZ2UgKDAtMSkgcmVmbGVjdGluZyB0aGUgYW1vdW50IG9mIGEgbWVkaWEgZmlsZSB0aGF0J3MgYmVlbiBkb3dubG9hZGVkLiAtLT4NCisgICAgPGV2ZW50IG5hbWU9Im9ubG9hZHJhdGlvIiAvPg0KKyAgICA8IS0tLVRoZSBvbm1vdXNlZG93biBldmVudCBpcyBzZW50IHdoZW4gdGhlIHBvaW50aW5nIGRldmljZSBidXR0b24gaXMgcHJlc3NlZCBvdmVyIGFuIGVsZW1lbnQuIC0tPg0KKyAgICA8ZXZlbnQgbmFtZT0ib25tb3VzZWRvd24iIC8+DQorICAgIDwhLS0tVGhlIG9ubW91c2VkcmFnaW4gZXZlbnQgaXMgc2VudCB3aGVuIHRoZSBwb2ludGluZyBkZXZpY2UgYnV0dG9uIGhhcyBtb3ZlZCBvZmYgdGhlIGVsZW1lbnQgYW5kIGJhY2sgb24gYWdhaW4gd2hpbGUgdGhlIGJ1dHRvbiBpcyBkb3duLiAtLT4NCisgICAgPGV2ZW50IG5hbWU9Im9ubW91c2VkcmFnaW4iIC8+DQorICAgIDwhLS0tVGhlIG9ubW91c2VkcmFnb3V0IGV2ZW50IGlzIHNlbnQgd2hlbiB0aGUgcG9pbnRpbmcgZGV2aWNlIGlzIG1vdmVkIG9mZiB0aGUgZWxlbWVudCB3aGlsZSB0aGUgYnV0dG9uIGlzIGRvd24uIGRvd24uIC0tPg0KKyAgICA8ZXZlbnQgbmFtZT0ib25tb3VzZWRyYWdvdXQiIC8+IA0KKyAgICA8IS0tLVRoZSBvbm1vdXNlb3V0IGV2ZW50IGlzIHNlbnQgd2hlbiB0aGUgcG9pbnRpbmcgZGV2aWNlIGlzIG1vdmVkIHNvIHRoYXQgaXMgaXMgbm8gbG9uZ2VyIG92ZXIgYW4gZWxlbWVudC4gLS0+DQorICAgIDxldmVudCBuYW1lPSJvbm1vdXNlb3V0IiAvPg0KKyAgICA8IS0tLVRoZSBvbm1vdXNlb3ZlciBldmVudCBpcyBzZW50IHdoZW4gdGhlIHBvaW50aW5nIGRldmljZSBpcyBtb3ZlZCBvbnRvIGFuIGVsZW1lbnQuIC0tPg0KKyAgICA8ZXZlbnQgbmFtZT0ib25tb3VzZW92ZXIiIC8+DQorICAgIDwhLS0tU2VudCB3aGVuIHRoZSBtb3VzZSBsZWF2ZXMgdGhlIHZpc2libGUgYXJlYSBvZiBhIHZpZXcgdGhhdCBwcmV2aW91c2x5IHNlbnQgYW4gJ29udHJhY2tvdmVyJyBldmVudC4gLS0+DQorICAgIDxldmVudCBuYW1lPSJvbm1vdXNldHJhY2tvdXQiIC8+DQorICAgIDwhLS0tU2VudCB3aGVuIHRoZSBtb3VzZSBpcyBvdmVyIGEgdmlldyB0aGF0IGlzIHJlZ2lzdGVyZWQgdG8gYW4gYWN0aXZlIHRyYWNrIGdyb3VwLiAtLT4NCisgICAgPGV2ZW50IG5hbWU9Im9ubW91c2V0cmFja292ZXIiIC8+DQorICAgIDwhLS0tU2VudCB3aGVuIHRoZSBtb3VzZSBidXR0b24gaXMgcmVsZWFzZWQgb3ZlciBhIHZpZXcgdGhhdCBpcyByZWdpc3RlcmVkIHRvIGFuIGFjdGl2ZSB0cmFjayBncm91cC4gLS0+DQorICAgIDxldmVudCBuYW1lPSJvbm1vdXNldHJhY2t1cCIgLz4NCisgICAgPCEtLS1UaGUgb25tb3VzZXVwIGV2ZW50IGlzIHNlbnQgd2hlbiB0aGUgcG9pbnRpbmcgZGV2aWNlIGJ1dHRvbiBpcyByZWxlYXNlZCBvdmVyIGFuIGVsZW1lbnQuIC0tPg0KKyAgICA8ZXZlbnQgbmFtZT0ib25tb3VzZXVwIiAvPg0KKyAgICA8IS0tLVRoZSBvbm1vdXNldXAgZXZlbnQgaXMgc2VudCB3aGVuIHRoZSBwb2ludGluZyBkZXZpY2UgYnV0dG9uIGlzIHJlbGVhc2VkIG91dHNpZGUgdGhlIGVsZW1lbnQgaXQgd2VudCBkb3duIG9uLiAtLT4NCisgICAgPGV2ZW50IG5hbWU9Im9ubW91c2V1cG91dHNpZGUiIC8+DQorICAgIDwhLS0tU2VudCB3aGVuIGEgdmlldyBjaGFuZ2VzIGl0cyBvcGFjaXR5IC0tPg0KKyAgICA8ZXZlbnQgbmFtZT0ib25vcGFjaXR5IiAvPg0KKyAgICA8IS0tLVNlbnQgd2hlbiBhIHZpZXcgYmVnaW5zIHBsYXlpbmcgaXRzIHJlc291cmNlIC0tPg0KKyAgICA8ZXZlbnQgbmFtZT0ib25wbGF5IiAvPg0KKyAgICA8IS0tLVNlbnQgd2hlbiBhIHZpZXcgYmVnaW5zIHBsYXlpbmcgaXRzIHJlc291cmNlIC0tPg0KKyAgICA8ZXZlbnQgbmFtZT0ib25wbGF5aW5nIiAvPg0KKyAgICA8IS0tLUV2ZW50IGNhbGxlZCB3aGVuIHRoaXMgdmlldyByZW1vdmVzIGEgc3VidmlldyAtLT4NCisgICAgPGV2ZW50IG5hbWU9Im9ucmVtb3Zlc3VidmlldyIgLz4NCisgICAgPCEtLS1TZW50IHdoZW4gc2hhZG93YW5nbGUgY2hhbmdlcyAtLT4NCisgICAgPGV2ZW50IG5hbWU9Im9uc2hhZG93YW5nbGUiIC8+DQorICAgIDwhLS0tU2VudCB3aGVuIHNoYWRvd2JsdXJyYWRpdXMgY2hhbmdlcyAtLT4NCisgICAgPGV2ZW50IG5hbWU9Im9uc2hhZG93Ymx1cnJhZGl1cyIgLz4NCisgICAgPCEtLS1TZW50IHdoZW4gc2hhZG93Y29sb3IgY2hhbmdlcyAtLT4NCisgICAgPGV2ZW50IG5hbWU9Im9uc2hhZG93Y29sb3IiIC8+DQorICAgIDwhLS0tU2VudCB3aGVuIHNoYWRvd2Rpc3RhbmNlIGNoYW5nZXMgLS0+DQorICAgIDxldmVudCBuYW1lPSJvbnNoYWRvd2Rpc3RhbmNlIiAvPg0KKyAgICA8IS0tLVNlbnQgd2hlbiBhIHZpZXcncyByZXNvdXJjZSB0aGF0IGlzIGNhcGFibGUgb2YgcGxheWluZyBpcyBzdG9wcGVkLiBUaGlzIGlzIG9ubHkgY2FsbGVkIGlmIHN0b3AgaXMgY2FsbGVkIGRpcmVjdGx5OyB3aGVuIGEgcmVzb3VyY2UgaGl0cyBpdHMgbGFzdCBmcmFtZSwgdGhlIGx6LnZpZXcgZXZlbnQgb25sYXN0ZnJhbWUgaXMgY2FsbGVkLiAtLT4NCisgICAgPGV2ZW50IG5hbWU9Im9uc3RvcCIgLz4NCisgICAgPCEtLS1TZW50IHdoZW4gdGhlIHJlcXVlc3QgdG8gbG9hZCBtZWRpYSBmb3IgdGhlIHZpZXcgdGltZXMgb3V0IC0tPg0KKyAgICA8ZXZlbnQgbmFtZT0ib250aW1lb3V0IiAvPg0KKyAgICA8IS0tLVRoZSBvbnRvdWNoIGV2ZW50IGlzIHNlbnQgd2hlbiBhIHRvdWNoIGRldmljZSByZWNlaXZlcyBhIG11bHRpdG91Y2ggZXZlbnQuIFRoZSB2YWx1ZSBzZW50IHdpdGggdGhlIGV2ZW50IGlzIGFuIGFycmF5IG9mIG9iamVjdHMgd2l0aCB3aXRoIHR3byBwcm9wZXJ0aWVzOiBjbGllbnRYIGFuZCBjbGllbnRZLiBDdXJyZW50bHkgc3VwcG9ydGVkIG9ubHkgaW4gaU9TIG9uIERIVE1MLiBOb3RlIHRoYXQgQW5kcm9pZCBXZWJraXQgZG9lc24ndCBzZW5kIG11bHRpdG91Y2ggZXZlbnRzIC0gc2VlIGh0dHA6Ly93d3cucXVpcmtzbW9kZS5vcmcvbW9iaWxlL3RhYmxlVG91Y2guaHRtbCAtLT4NCisgICAgPGV2ZW50IG5hbWU9Im9udG91Y2giIC8+DQorICAgIDwhLS0tU2VudCB3aGVuIHRoZSB2aWV3IGNoYW5nZXMgdmlzaWJpbGl0eSAodHJ1ZS9mYWxzZSkgLS0+DQorICAgIDxldmVudCBuYW1lPSJvbnZpc2libGUiIC8+DQorICAgIDwhLS0tZXZlbnQgZm9yIGNoYW5nZXMgdG8gdmlldydzIHdpZHRoIHByb3BlcnR5IC0tPg0KKyAgICA8ZXZlbnQgbmFtZT0ib253aWR0aCIgLz4NCisgICAgPCEtLS1ldmVudCBmb3IgY2hhbmdlcyB0byB2aWV3J3MgeCBwcm9wZXJ0eSAtLT4NCisgICAgPGV2ZW50IG5hbWU9Im9ueCIgLz4NCisgICAgPCEtLS1ldmVudCBmb3IgY2hhbmdlcyB0byB2aWV3J3MgeSBwcm9wZXJ0eSAtLT4gDQorICAgIDxldmVudCBuYW1lPSJvbnkiIC8+DQorICAgIA0KKyAgICA8IS0tLSBUaGlzIGVsZW1lbnQgaXMgb25seSBhdmFpbGFibGUgaW4gdGhlIHNwbGFzaCBTV0Ygc3BlY2lmaWMgLS0+DQorICAgIDxhdHRyaWJ1dGUgbmFtZT0iY2VudGVyIiB0eXBlPSJib29sZWFuIi8+DQorICAgIDwhLS0tIFRoaXMgZWxlbWVudCBpcyBvbmx5IGF2YWlsYWJsZSBpbiB0aGUgc3BsYXNoIFNXRiBzcGVjaWZpYyAtLT4NCisgICAgPGF0dHJpYnV0ZSBuYW1lPSJyYXRpbyIgdHlwZT0iYm9vbGVhbiIvPg0KKwkNCis8L2NsYXNzPg0KKw0KKzwvbGlicmFyeT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS90ZXN0L2NvcmUvc3RhdGljX3NpbXBsZVR5cGVzLnR4dCBiL3Rlc3QvY29yZS9zdGF0aWNfc2ltcGxlVHlwZXMudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlMDRiMDUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2NvcmUvc3RhdGljX3NpbXBsZVR5cGVzLnR4dApAQCAtMCwwICsxLDg4IEBACisgIDx4czpzaW1wbGVUeXBlIG5hbWU9ImJvb2xlYW5MaXRlcmFsIj4NCisgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOmJvb2xlYW4iLz4NCisgIDwveHM6c2ltcGxlVHlwZT4NCisgIDx4czpzaW1wbGVUeXBlIG5hbWU9ImNvbG9yTGl0ZXJhbCI+DQorICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciLz4NCisgIDwveHM6c2ltcGxlVHlwZT4NCisgIDx4czpzaW1wbGVUeXBlIG5hbWU9Im51bWJlckxpdGVyYWwiPg0KKyAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6ZG91YmxlIi8+DQorICA8L3hzOnNpbXBsZVR5cGU+DQorICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJzaXplTGl0ZXJhbCI+DQorICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpkb3VibGUiPg0KKyAgICAgIDx4czptaW5JbmNsdXNpdmUgdmFsdWU9IjAiLz4NCisgICAgPC94czpyZXN0cmljdGlvbj4NCisgIDwveHM6c2ltcGxlVHlwZT4NCisgIDx4czpzaW1wbGVUeXBlIG5hbWU9ImluaGVyaXRhYmxlQm9vbGVhbkxpdGVyYWwiPg0KKyAgICA8eHM6dW5pb24gbWVtYmVyVHlwZXM9Imx6eDpib29sZWFuTGl0ZXJhbCI+DQorICAgICAgPHhzOnNpbXBsZVR5cGU+DQorICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPg0KKyAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImluaGVyaXQiLz4NCisgICAgICAgIDwveHM6cmVzdHJpY3Rpb24+DQorICAgICAgPC94czpzaW1wbGVUeXBlPg0KKyAgICA8L3hzOnVuaW9uPg0KKyAgPC94czpzaW1wbGVUeXBlPg0KKyAgPHhzOnNpbXBsZVR5cGUgbmFtZT0iY29uc3RyYWludCI+DQorICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpzdHJpbmciPg0KKyAgICAgIDx4czpwYXR0ZXJuIHZhbHVlPSIkKHN0eWxlfHBhdGh8aW1tZWRpYXRlbHl8b25jZXxhbHdheXMpP1x7LipcfSIvPg0KKyAgICA8L3hzOnJlc3RyaWN0aW9uPg0KKyAgPC94czpzaW1wbGVUeXBlPg0KKyAgPHhzOnNpbXBsZVR5cGUgbmFtZT0iYm9vbGVhbiI+DQorICAgIDx4czp1bmlvbiBtZW1iZXJUeXBlcz0ibHp4OmJvb2xlYW5MaXRlcmFsIGx6eDpjb25zdHJhaW50Ij4NCisgICAgPHhzOnNpbXBsZVR5cGU+DQorICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPg0KKyAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im51bGwiLz4NCisgICAgICAgIDwveHM6cmVzdHJpY3Rpb24+DQorICAgICAgPC94czpzaW1wbGVUeXBlPg0KKyAgICA8L3hzOnVuaW9uPg0KKyAgPC94czpzaW1wbGVUeXBlPg0KKyAgPHhzOnNpbXBsZVR5cGUgbmFtZT0iYm9vbGVhbk9yTnVsbCI+DQorICAgIDx4czp1bmlvbiBtZW1iZXJUeXBlcz0ibHp4OmJvb2xlYW4iPg0KKyAgICAgIDx4czpzaW1wbGVUeXBlPg0KKyAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4NCisgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJudWxsIi8+DQorICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPg0KKyAgICAgIDwveHM6c2ltcGxlVHlwZT4NCisgICAgPC94czp1bmlvbj4NCisgIDwveHM6c2ltcGxlVHlwZT4NCisgIDx4czpzaW1wbGVUeXBlIG5hbWU9ImNvbG9yIj4NCisgICAgPHhzOnVuaW9uIG1lbWJlclR5cGVzPSJseng6Y29sb3JMaXRlcmFsIGx6eDpjb25zdHJhaW50Ii8+DQorICA8L3hzOnNpbXBsZVR5cGU+DQorICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJleHByZXNzaW9uIj4NCisgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyIvPg0KKyAgPC94czpzaW1wbGVUeXBlPg0KKyAgPHhzOnNpbXBsZVR5cGUgbmFtZT0icmVmZXJlbmNlIj4NCisgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyIvPg0KKyAgPC94czpzaW1wbGVUeXBlPg0KKyAgPHhzOnNpbXBsZVR5cGUgbmFtZT0ibnVtYmVyIj4NCisgICAgPHhzOnVuaW9uIG1lbWJlclR5cGVzPSJseng6bnVtYmVyTGl0ZXJhbCBseng6Y29uc3RyYWludCB4czpzdHJpbmciLz4NCisgIDwveHM6c2ltcGxlVHlwZT4NCisgIDx4czpzaW1wbGVUeXBlIG5hbWU9InRva2VuIj4NCisgICAgPHhzOnVuaW9uIG1lbWJlclR5cGVzPSJ4czp0b2tlbiIvPg0KKyAgPC94czpzaW1wbGVUeXBlPg0KKyAgPHhzOnNpbXBsZVR5cGUgbmFtZT0ic2l6ZSI+DQorICAgIDx4czp1bmlvbiBtZW1iZXJUeXBlcz0ibHp4OnNpemVMaXRlcmFsIGx6eDpjb25zdHJhaW50Ii8+DQorICA8L3hzOnNpbXBsZVR5cGU+DQorICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJudW1iZXJFeHByZXNzaW9uIj4NCisgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyIvPg0KKyAgPC94czpzaW1wbGVUeXBlPg0KKyAgPHhzOnNpbXBsZVR5cGUgbmFtZT0ic2l6ZUV4cHJlc3Npb24iPg0KKyAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIi8+DQorICA8L3hzOnNpbXBsZVR5cGU+DQorICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJjc3MiPg0KKyAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIi8+DQorICA8L3hzOnNpbXBsZVR5cGU+DQorICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJvcGFjaXR5Ij4NCisgICAgPHhzOnVuaW9uIG1lbWJlclR5cGVzPSJseng6Y29uc3RyYWludCI+DQorICAgICAgPHhzOnNpbXBsZVR5cGU+DQorICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6ZG91YmxlIj4NCisgICAgICAgICAgPHhzOm1pbkluY2x1c2l2ZSB2YWx1ZT0iMC4wIi8+DQorICAgICAgICAgIDx4czptYXhJbmNsdXNpdmUgdmFsdWU9IjEuMCIvPg0KKyAgICAgICAgPC94czpyZXN0cmljdGlvbj4NCisgICAgICA8L3hzOnNpbXBsZVR5cGU+DQorICAgIDwveHM6dW5pb24+DQorICA8L3hzOnNpbXBsZVR5cGU+DQorICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJwZXJjZW50YWdlIj4NCisgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+DQorICAgICAgPHhzOnBhdHRlcm4gdmFsdWU9IihcZCsoLlxkPyl8LlxkKyklIi8+DQorICAgIDwveHM6cmVzdHJpY3Rpb24+DQorICA8L3hzOnNpbXBsZVR5cGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdC9maWxlbmFtZTEud21sIGIvdGVzdC9maWxlbmFtZTEud21sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlNGU3ZTIKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0L2ZpbGVuYW1lMS53bWwKQEAgLTAsMCArMSw4MyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzx3aGl0ZWJvYXJkPgorICAgIDxpdGVtPgorICAgICAgICA8aXRlbW5hbWU+bGV0dGVyPC9pdGVtbmFtZT4KKyAgICAgICAgPHRleHRmb3JmaWVsZD5hc2Rhc2Rhc2Q8L3RleHRmb3JmaWVsZD4KKyAgICAgICAgPGZnY29sb3I+MDwvZmdjb2xvcj4KKyAgICAgICAgPGZvbnRzaXplPjE1PC9mb250c2l6ZT4KKyAgICAgICAgPGZvbnRzdHlsZT5wbGFpbjwvZm9udHN0eWxlPgorICAgICAgICA8eD42OTwveD4KKyAgICAgICAgPHk+OTg8L3k+CisgICAgICAgIDx3aWR0aD4xMTg8L3dpZHRoPgorICAgICAgICA8aGVpZ2h0PjIyPC9oZWlnaHQ+CisgICAgICAgIDxsYXllcm5hbWU+bGV0dGVyMTwvbGF5ZXJuYW1lPgorICAgIDwvaXRlbT4KKyAgICA8aXRlbT4KKyAgICAgICAgPGl0ZW1uYW1lPnBhaW50PC9pdGVtbmFtZT4KKyAgICAgICAgPHBvaW50cz4KKyAgICAgICAgICAgIDxwb2ludCB2YWwxPSIxNTciIHZhbDI9IjM1IiB2YWwzPSIxNTciIHZhbDQ9IjM1Ii8+CisgICAgICAgICAgICA8cG9pbnQgdmFsMT0iMTU3IiB2YWwyPSIzNSIgdmFsMz0iODgiIHZhbDQ9IjQ0Ii8+CisgICAgICAgICAgICA8cG9pbnQgdmFsMT0iODgiIHZhbDI9IjQ0IiB2YWwzPSIzNyIgdmFsND0iNjEiLz4KKyAgICAgICAgICAgIDxwb2ludCB2YWwxPSIzNyIgdmFsMj0iNjEiIHZhbDM9IjI3IiB2YWw0PSI3NSIvPgorICAgICAgICAgICAgPHBvaW50IHZhbDE9IjI3IiB2YWwyPSI3NSIgdmFsMz0iMjEiIHZhbDQ9IjEwMSIvPgorICAgICAgICAgICAgPHBvaW50IHZhbDE9IjIxIiB2YWwyPSIxMDEiIHZhbDM9IjI1IiB2YWw0PSIxMzgiLz4KKyAgICAgICAgICAgIDxwb2ludCB2YWwxPSIyNSIgdmFsMj0iMTM4IiB2YWwzPSI0NiIgdmFsND0iMTcyIi8+CisgICAgICAgICAgICA8cG9pbnQgdmFsMT0iNDYiIHZhbDI9IjE3MiIgdmFsMz0iMTA4IiB2YWw0PSIyMDYiLz4KKyAgICAgICAgICAgIDxwb2ludCB2YWwxPSIxMDgiIHZhbDI9IjIwNiIgdmFsMz0iMTY4IiB2YWw0PSIyMjIiLz4KKyAgICAgICAgICAgIDxwb2ludCB2YWwxPSIxNjgiIHZhbDI9IjIyMiIgdmFsMz0iMjM5IiB2YWw0PSIyMTQiLz4KKyAgICAgICAgICAgIDxwb2ludCB2YWwxPSIyMzkiIHZhbDI9IjIxNCIgdmFsMz0iMjcxIiB2YWw0PSIxODQiLz4KKyAgICAgICAgICAgIDxwb2ludCB2YWwxPSIyNzEiIHZhbDI9IjE4NCIgdmFsMz0iMjg1IiB2YWw0PSIxMzEiLz4KKyAgICAgICAgICAgIDxwb2ludCB2YWwxPSIyODUiIHZhbDI9IjEzMSIgdmFsMz0iMjc3IiB2YWw0PSI5OCIvPgorICAgICAgICAgICAgPHBvaW50IHZhbDE9IjI3NyIgdmFsMj0iOTgiIHZhbDM9IjI2NSIgdmFsND0iNzQiLz4KKyAgICAgICAgICAgIDxwb2ludCB2YWwxPSIyNjUiIHZhbDI9Ijc0IiB2YWwzPSIyNTYiIHZhbDQ9IjU4Ii8+CisgICAgICAgIDwvcG9pbnRzPgorICAgICAgICA8ZmlsbHN0eWxlPjB4MDAwMDAwPC9maWxsc3R5bGU+CisgICAgICAgIDxsaW5ld2lkdGg+NTwvbGluZXdpZHRoPgorICAgICAgICA8c3Ryb2tlc3R5bGU+MDwvc3Ryb2tlc3R5bGU+CisgICAgICAgIDx4PjIwPC94PgorICAgICAgICA8eT4zNDwveT4KKyAgICAgICAgPHdpZHRoPjI2NDwvd2lkdGg+CisgICAgICAgIDxoZWlnaHQ+MTg3PC9oZWlnaHQ+CisgICAgICAgIDxsYXllcm5hbWU+cGFpbnQyPC9sYXllcm5hbWU+CisgICAgPC9pdGVtPgorICAgIDxpdGVtPgorICAgICAgICA8aXRlbW5hbWU+bGluZTwvaXRlbW5hbWU+CisgICAgICAgIDxmaWxsc3R5bGU+MHgwMDAwMDA8L2ZpbGxzdHlsZT4KKyAgICAgICAgPGxpbmV3aWR0aD41PC9saW5ld2lkdGg+CisgICAgICAgIDxzdHJva2VzdHlsZT4yNTU8L3N0cm9rZXN0eWxlPgorICAgICAgICA8c3RhcnR4PjMyODwvc3RhcnR4PgorICAgICAgICA8c3RhcnR5PjYzPC9zdGFydHk+CisgICAgICAgIDxlbmR4PjI5MDwvZW5keD4KKyAgICAgICAgPGVuZHk+MzYzPC9lbmR5PgorICAgICAgICA8eD4yODYuNTwveD4KKyAgICAgICAgPHk+NTkuNTwveT4KKyAgICAgICAgPHdpZHRoPjQzPC93aWR0aD4KKyAgICAgICAgPGhlaWdodD4zMDU8L2hlaWdodD4KKyAgICAgICAgPGxheWVybmFtZT5saW5lODwvbGF5ZXJuYW1lPgorICAgIDwvaXRlbT4KKyAgICA8aXRlbT4KKyAgICAgICAgPGl0ZW1uYW1lPnJlY3RhbmdsZTwvaXRlbW5hbWU+CisgICAgICAgIDxzdHJva2U+MDwvc3Ryb2tlPgorICAgICAgICA8bGluZT41PC9saW5lPgorICAgICAgICA8eD4xMDA8L3g+CisgICAgICAgIDx5PjI3NzwveT4KKyAgICAgICAgPHdpZHRoPjEwOTwvd2lkdGg+CisgICAgICAgIDxoZWlnaHQ+MTY4PC9oZWlnaHQ+CisgICAgICAgIDxsYXllcm5hbWU+cmVjdGFuZ2xlMTQ8L2xheWVybmFtZT4KKyAgICA8L2l0ZW0+CisgICAgPGl0ZW0+CisgICAgICAgIDxpdGVtbmFtZT51bGluZTwvaXRlbW5hbWU+CisgICAgICAgIDxmaWxsc3R5bGU+MHgwMDAwMDA8L2ZpbGxzdHlsZT4KKyAgICAgICAgPGxpbmV3aWR0aD4yMDwvbGluZXdpZHRoPgorICAgICAgICA8c3Ryb2tlc3R5bGU+MTY3NzY5NjA8L3N0cm9rZXN0eWxlPgorICAgICAgICA8c3RhcnR4PjU4PC9zdGFydHg+CisgICAgICAgIDxzdGFydHk+MTI0PC9zdGFydHk+CisgICAgICAgIDxlbmR4PjE1NTwvZW5keD4KKyAgICAgICAgPGVuZHk+MTI2PC9lbmR5PgorICAgICAgICA8eD40NzwveD4KKyAgICAgICAgPHk+MTEzPC95PgorICAgICAgICA8d2lkdGg+MTE3PC93aWR0aD4KKyAgICAgICAgPGhlaWdodD4yMjwvaGVpZ2h0PgorICAgICAgICA8bGF5ZXJuYW1lPnVsaW5lMjE8L2xheWVybmFtZT4KKyAgICA8L2l0ZW0+Cis8L3doaXRlYm9hcmQ+CmRpZmYgLS1naXQgYS90ZXN0L29yaWdpbmFsX2x6eC54c2QgYi90ZXN0L29yaWdpbmFsX2x6eC54c2QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzg3NWRlMAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3Qvb3JpZ2luYWxfbHp4LnhzZApAQCAtMCwwICsxLDEyMDQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPHhzOnNjaGVtYSB4bWxuczp4cz0iaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEiIGVsZW1lbnRGb3JtRGVmYXVsdD0icXVhbGlmaWVkIiB0YXJnZXROYW1lc3BhY2U9Imh0dHA6Ly93d3cubGFzemxvc3lzdGVtcy5jb20vMjAwMy8wNS9sengiIHhtbG5zOmx6eD0iaHR0cDovL3d3dy5sYXN6bG9zeXN0ZW1zLmNvbS8yMDAzLzA1L2x6eCI+DQorICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJib29sZWFuTGl0ZXJhbCI+DQorICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czpib29sZWFuIi8+DQorICA8L3hzOnNpbXBsZVR5cGU+DQorICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJjb2xvckxpdGVyYWwiPg0KKyAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIi8+DQorICA8L3hzOnNpbXBsZVR5cGU+DQorICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJudW1iZXJMaXRlcmFsIj4NCisgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOmRvdWJsZSIvPg0KKyAgPC94czpzaW1wbGVUeXBlPg0KKyAgPHhzOnNpbXBsZVR5cGUgbmFtZT0ic2l6ZUxpdGVyYWwiPg0KKyAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6ZG91YmxlIj4NCisgICAgICA8eHM6bWluSW5jbHVzaXZlIHZhbHVlPSIwIi8+DQorICAgIDwveHM6cmVzdHJpY3Rpb24+DQorICA8L3hzOnNpbXBsZVR5cGU+DQorICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJpbmhlcml0YWJsZUJvb2xlYW5MaXRlcmFsIj4NCisgICAgPHhzOnVuaW9uIG1lbWJlclR5cGVzPSJseng6Ym9vbGVhbkxpdGVyYWwiPg0KKyAgICAgIDx4czpzaW1wbGVUeXBlPg0KKyAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4NCisgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJpbmhlcml0Ii8+DQorICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPg0KKyAgICAgIDwveHM6c2ltcGxlVHlwZT4NCisgICAgPC94czp1bmlvbj4NCisgIDwveHM6c2ltcGxlVHlwZT4NCisgIDx4czpzaW1wbGVUeXBlIG5hbWU9ImNvbnN0cmFpbnQiPg0KKyAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIj4NCisgICAgICA8eHM6cGF0dGVybiB2YWx1ZT0iJChzdHlsZXxwYXRofGltbWVkaWF0ZWx5fG9uY2V8YWx3YXlzKT9cey4qXH0iLz4NCisgICAgPC94czpyZXN0cmljdGlvbj4NCisgIDwveHM6c2ltcGxlVHlwZT4NCisgIDx4czpzaW1wbGVUeXBlIG5hbWU9ImJvb2xlYW4iPg0KKyAgICA8eHM6dW5pb24gbWVtYmVyVHlwZXM9Imx6eDpib29sZWFuTGl0ZXJhbCBseng6Y29uc3RyYWludCIvPg0KKyAgPC94czpzaW1wbGVUeXBlPg0KKyAgPHhzOnNpbXBsZVR5cGUgbmFtZT0iYm9vbGVhbk9yTnVsbCI+DQorICAgIDx4czp1bmlvbiBtZW1iZXJUeXBlcz0ibHp4OmJvb2xlYW4iPg0KKyAgICAgIDx4czpzaW1wbGVUeXBlPg0KKyAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4NCisgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJudWxsIi8+DQorICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPg0KKyAgICAgIDwveHM6c2ltcGxlVHlwZT4NCisgICAgPC94czp1bmlvbj4NCisgIDwveHM6c2ltcGxlVHlwZT4NCisgIDx4czpzaW1wbGVUeXBlIG5hbWU9ImNvbG9yIj4NCisgICAgPHhzOnVuaW9uIG1lbWJlclR5cGVzPSJseng6Y29sb3JMaXRlcmFsIGx6eDpjb25zdHJhaW50Ii8+DQorICA8L3hzOnNpbXBsZVR5cGU+DQorICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJzY3JpcHQiPg0KKyAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIi8+DQorICA8L3hzOnNpbXBsZVR5cGU+DQorICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJleHByZXNzaW9uIj4NCisgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyIvPg0KKyAgPC94czpzaW1wbGVUeXBlPg0KKyAgPHhzOnNpbXBsZVR5cGUgbmFtZT0icmVmZXJlbmNlIj4NCisgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyIvPg0KKyAgPC94czpzaW1wbGVUeXBlPg0KKyAgPHhzOnNpbXBsZVR5cGUgbmFtZT0ibnVtYmVyIj4NCisgICAgPHhzOnVuaW9uIG1lbWJlclR5cGVzPSJseng6bnVtYmVyTGl0ZXJhbCBseng6Y29uc3RyYWludCIvPg0KKyAgPC94czpzaW1wbGVUeXBlPg0KKyAgPHhzOnNpbXBsZVR5cGUgbmFtZT0ic2l6ZSI+DQorICAgIDx4czp1bmlvbiBtZW1iZXJUeXBlcz0ibHp4OnNpemVMaXRlcmFsIGx6eDpjb25zdHJhaW50Ii8+DQorICA8L3hzOnNpbXBsZVR5cGU+DQorICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJudW1iZXJFeHByZXNzaW9uIj4NCisgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyIvPg0KKyAgPC94czpzaW1wbGVUeXBlPg0KKyAgPHhzOnNpbXBsZVR5cGUgbmFtZT0ic2l6ZUV4cHJlc3Npb24iPg0KKyAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIi8+DQorICA8L3hzOnNpbXBsZVR5cGU+DQorICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJjc3MiPg0KKyAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6c3RyaW5nIi8+DQorICA8L3hzOnNpbXBsZVR5cGU+DQorICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJvcGFjaXR5Ij4NCisgICAgPHhzOnVuaW9uIG1lbWJlclR5cGVzPSJseng6Y29uc3RyYWludCI+DQorICAgICAgPHhzOnNpbXBsZVR5cGU+DQorICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6ZG91YmxlIj4NCisgICAgICAgICAgPHhzOm1pbkluY2x1c2l2ZSB2YWx1ZT0iMC4wIi8+DQorICAgICAgICAgIDx4czptYXhJbmNsdXNpdmUgdmFsdWU9IjEuMCIvPg0KKyAgICAgICAgPC94czpyZXN0cmljdGlvbj4NCisgICAgICA8L3hzOnNpbXBsZVR5cGU+DQorICAgIDwveHM6dW5pb24+DQorICA8L3hzOnNpbXBsZVR5cGU+DQorICA8eHM6c2ltcGxlVHlwZSBuYW1lPSJwZXJjZW50YWdlIj4NCisgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+DQorICAgICAgPHhzOnBhdHRlcm4gdmFsdWU9IihcZCsoLlxkPyl8LlxkKyklIi8+DQorICAgIDwveHM6cmVzdHJpY3Rpb24+DQorICA8L3hzOnNpbXBsZVR5cGU+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJjYW52YXMiPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0ibHp4OmNvbm5lY3Rpb24iLz4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0ibHp4OnNwbGFzaCIvPg0KKyAgICAgICAgPHhzOmdyb3VwIHJlZj0ibHp4OmRhdGFwYXRoQ2hpbGRyZW4iLz4NCisgICAgICAgIDx4czpncm91cCByZWY9Imx6eDp0b3BsZXZlbEVsZW1lbnRzIi8+DQorICAgICAgPC94czpjaG9pY2U+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpZCIgdHlwZT0ieHM6SUQiLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uaW5pdCIgdHlwZT0ibHp4OnNjcmlwdCIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0id2lkdGgiIGRlZmF1bHQ9IjUwMCI+DQorICAgICAgICA8eHM6c2ltcGxlVHlwZT4NCisgICAgICAgICAgPHhzOnVuaW9uIG1lbWJlclR5cGVzPSJseng6c2l6ZUxpdGVyYWwgbHp4OnBlcmNlbnRhZ2UiLz4NCisgICAgICAgIDwveHM6c2ltcGxlVHlwZT4NCisgICAgICA8L3hzOmF0dHJpYnV0ZT4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImhlaWdodCIgZGVmYXVsdD0iNDAwIj4NCisgICAgICAgIDx4czpzaW1wbGVUeXBlPg0KKyAgICAgICAgICA8eHM6dW5pb24gbWVtYmVyVHlwZXM9Imx6eDpzaXplTGl0ZXJhbCBseng6cGVyY2VudGFnZSIvPg0KKyAgICAgICAgPC94czpzaW1wbGVUeXBlPg0KKyAgICAgIDwveHM6YXR0cmlidXRlPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYmdjb2xvciIgZGVmYXVsdD0id2hpdGUiIHR5cGU9Imx6eDpjb2xvckxpdGVyYWwiLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRpdGxlIiBkZWZhdWx0PSJPcGVuTGFzemxvIEFwcGxpY2F0aW9uIiB0eXBlPSJ4czpzdHJpbmciLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZvbnQiIGRlZmF1bHQ9Imx6dGFob2U4IiB0eXBlPSJ4czpzdHJpbmciLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZvbnRzaXplIiBkZWZhdWx0PSI4IiB0eXBlPSJseng6c2l6ZSIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZm9udHN0eWxlIiBkZWZhdWx0PSIiPg0KKyAgICAgICAgPHhzOnNpbXBsZVR5cGU+DQorICAgICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+DQorICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib2xkIi8+DQorICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJpdGFsaWMiLz4NCisgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvbGQgaXRhbGljIi8+DQorICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwbGFpbiIvPg0KKyAgICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iIi8+DQorICAgICAgICAgIDwveHM6cmVzdHJpY3Rpb24+DQorICAgICAgICA8L3hzOnNpbXBsZVR5cGU+DQorICAgICAgPC94czphdHRyaWJ1dGU+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYXlvdXQiIHR5cGU9Imx6eDpjc3MiLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InZhbGlkYXRlIiBkZWZhdWx0PSJ0cnVlIiB0eXBlPSJseng6Ym9vbGVhbkxpdGVyYWwiLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InByb3hpZWQiIGRlZmF1bHQ9ImluaGVyaXQiIHR5cGU9Imx6eDppbmhlcml0YWJsZUJvb2xlYW5MaXRlcmFsIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkZWJ1ZyIgZGVmYXVsdD0iZmFsc2UiIHR5cGU9Imx6eDpib29sZWFuTGl0ZXJhbCIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYmFja3RyYWNlIiBkZWZhdWx0PSJmYWxzZSIgdHlwZT0ibHp4OmJvb2xlYW5MaXRlcmFsIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtYXh0ZXh0d2lkdGgiIHR5cGU9Imx6eDpzaXplTGl0ZXJhbCIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWF4dGV4dGhlaWdodCIgdHlwZT0ibHp4OnNpemVMaXRlcmFsIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkYXRhbG9hZHRpbWVvdXQiIHR5cGU9Imx6eDpudW1iZXJFeHByZXNzaW9uIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtZWRpYWxvYWR0aW1lb3V0IiB0eXBlPSJseng6bnVtYmVyRXhwcmVzc2lvbiIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGlicmFyaWVzIiBkZWZhdWx0PSIiIHR5cGU9InhzOnN0cmluZyIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZW1iZWRmb250cyIgZGVmYXVsdD0idHJ1ZSIgdHlwZT0ibHp4OmJvb2xlYW5MaXRlcmFsIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2ZXJzaW9uIiBkZWZhdWx0PSIxLjEiIHR5cGU9InhzOnN0cmluZyIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWNjZXNzaWJsZSIgZGVmYXVsdD0iZmFsc2UiIHR5cGU9Imx6eDpib29sZWFuTGl0ZXJhbCIvPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0ibGlicmFyeSI+DQorICAgIDx4czpjb21wbGV4VHlwZT4NCisgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPg0KKyAgICAgICAgPHhzOmdyb3VwIHJlZj0ibHp4OnRvcGxldmVsRWxlbWVudHMiLz4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0ibHp4OmRhdGFwb2ludGVyIi8+DQorICAgICAgPC94czpjaG9pY2U+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJocmVmIiB0eXBlPSJ4czphbnlVUkkiLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImluY2x1ZGVzIiB0eXBlPSJ4czpzdHJpbmciLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InByb3hpZWQiIGRlZmF1bHQ9ImluaGVyaXQiPg0KKyAgICAgICAgPHhzOnNpbXBsZVR5cGU+DQorICAgICAgICAgIDx4czp1bmlvbiBtZW1iZXJUeXBlcz0ibHp4OmJvb2xlYW5MaXRlcmFsIj4NCisgICAgICAgICAgICA8eHM6c2ltcGxlVHlwZT4NCisgICAgICAgICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+DQorICAgICAgICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaW5oZXJpdCIvPg0KKyAgICAgICAgICAgICAgPC94czpyZXN0cmljdGlvbj4NCisgICAgICAgICAgICA8L3hzOnNpbXBsZVR5cGU+DQorICAgICAgICAgIDwveHM6dW5pb24+DQorICAgICAgICA8L3hzOnNpbXBsZVR5cGU+DQorICAgICAgPC94czphdHRyaWJ1dGU+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2YWxpZGF0ZSIgZGVmYXVsdD0idHJ1ZSIgdHlwZT0ibHp4OmJvb2xlYW5MaXRlcmFsIi8+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorICA8eHM6Z3JvdXAgbmFtZT0idG9wbGV2ZWxFbGVtZW50cyI+DQorICAgIDx4czpzZXF1ZW5jZT4NCisgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPg0KKyAgICAgICAgPHhzOmNob2ljZT4NCisgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJseng6dmlld0VsZW1lbnQiLz4NCisgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJseng6c2NyaXB0Ii8+DQorICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ibHp4OnN0eWxlc2hlZXQiLz4NCisgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJseng6YXNzZXQiLz4NCisgICAgICAgICAgPHhzOmdyb3VwIHJlZj0ibHp4OmZvbnQiLz4NCisgICAgICAgIDwveHM6Y2hvaWNlPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJseng6ZGF0YXJlcXVlc3QiLz4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0ibHp4OmRhdGFzb3VyY2UiLz4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0ibHp4OmNvbm5lY3Rpb25kYXRhc291cmNlIi8+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imx6eDpkYXRhc2V0Ii8+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imx6eDpkZWJ1ZyIvPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJseng6Y29tbWFuZCIvPg0KKyAgICAgICAgPHhzOmdyb3VwIHJlZj0ibHp4Om9iamVjdEVsZW1lbnRzIi8+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imx6eDpjbGFzcyIvPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJseng6aW50ZXJmYWNlIi8+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imx6eDp0cmFpdCIvPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJseng6aW5jbHVkZSIvPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJseng6aW1wb3J0Ii8+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imx6eDpsaWJyYXJ5Ii8+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imx6eDpsYXlvdXQiLz4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0ibHp4OnNlY3VyaXR5Ii8+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imx6eDpzd2l0Y2giLz4NCisgICAgICA8L3hzOmNob2ljZT4NCisgICAgPC94czpzZXF1ZW5jZT4NCisgIDwveHM6Z3JvdXA+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJkZWJ1ZyI+DQorICAgIDx4czpjb21wbGV4VHlwZT4NCisgICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJseng6dmlld0F0dHJpYnV0ZXMiLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNob3dJbnRlcm5hbFByb3BlcnRpZXMiIHR5cGU9Imx6eDpib29sZWFuIi8+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJpbmNsdWRlIj4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaHJlZiIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6YW55VVJJIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0eXBlIiBkZWZhdWx0PSJ4bWwiPg0KKyAgICAgICAgPHhzOnNpbXBsZVR5cGU+DQorICAgICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+DQorICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0ZXh0Ii8+DQorICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ4bWwiLz4NCisgICAgICAgICAgPC94czpyZXN0cmljdGlvbj4NCisgICAgICAgIDwveHM6c2ltcGxlVHlwZT4NCisgICAgICA8L3hzOmF0dHJpYnV0ZT4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9InN3aXRjaCI+DQorICAgIDx4czpjb21wbGV4VHlwZT4NCisgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJseng6d2hlbiIvPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJseng6b3RoZXJ3aXNlIi8+DQorICAgICAgPC94czpjaG9pY2U+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJ3aGVuIj4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czpncm91cCByZWY9Imx6eDp0b3BsZXZlbEVsZW1lbnRzIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJydW50aW1lIiB0eXBlPSJ4czpzdHJpbmciLz4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9Im90aGVyd2lzZSI+DQorICAgIDx4czpjb21wbGV4VHlwZT4NCisgICAgICA8eHM6Z3JvdXAgcmVmPSJseng6dG9wbGV2ZWxFbGVtZW50cyIvPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImlkQXR0cmlidXRlIj4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpZCIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6SUQiLz4NCisgIDwveHM6YXR0cmlidXRlR3JvdXA+DQorICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ic3JjQXR0cmlidXRlIj4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzcmMiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOmFueVVSSSIvPg0KKyAgPC94czphdHRyaWJ1dGVHcm91cD4NCisgIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJuYW1lQXR0cmlidXRlIj4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czp0b2tlbiIvPg0KKyAgPC94czphdHRyaWJ1dGVHcm91cD4NCisgIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJvbmluaXRBdHRyaWJ1dGUiPg0KKyAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uaW5pdCIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ibHp4OnNjcmlwdCIvPg0KKyAgPC94czphdHRyaWJ1dGVHcm91cD4NCisgIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpbml0c3RhZ2VBdHRyaWJ1dGUiPg0KKyAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImluaXRzdGFnZSIgdXNlPSJyZXF1aXJlZCI+DQorICAgICAgPHhzOnNpbXBsZVR5cGU+DQorICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPg0KKyAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImVhcmx5Ii8+DQorICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibm9ybWFsIi8+DQorICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibGF0ZSIvPg0KKyAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImltbWVkaWF0ZSIvPg0KKyAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImRlZmVyIi8+DQorICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPg0KKyAgICAgIDwveHM6c2ltcGxlVHlwZT4NCisgICAgPC94czphdHRyaWJ1dGU+DQorICA8L3hzOmF0dHJpYnV0ZUdyb3VwPg0KKyAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImRhdGFwYXRoQXR0cmlidXRlIj4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkYXRhcGF0aCIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6c3RyaW5nIi8+DQorICA8L3hzOmF0dHJpYnV0ZUdyb3VwPg0KKyAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InBsYWNlbWVudEF0dHJpYnV0ZSI+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGxhY2VtZW50IiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czpzdHJpbmciLz4NCisgIDwveHM6YXR0cmlidXRlR3JvdXA+DQorICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iY2xhc3NBdHRyaWJ1dGUiPg0KKyAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsYXNzIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czp0b2tlbiIvPg0KKyAgPC94czphdHRyaWJ1dGVHcm91cD4NCisgIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJpZ25vcmVwbGFjZW1lbnRBdHRyaWJ1dGUiPg0KKyAgICA8eHM6YXR0cmlidXRlIG5hbWU9Imlnbm9yZXBsYWNlbWVudCIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ibHp4OmJvb2xlYW4iLz4NCisgIDwveHM6YXR0cmlidXRlR3JvdXA+DQorICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ib2JqZWN0QXR0cmlidXRlcyI+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaWQiIHR5cGU9InhzOklEIi8+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6dG9rZW4iLz4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGFzcyIgdHlwZT0ieHM6dG9rZW4iLz4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmluaXQiIHR5cGU9Imx6eDpzY3JpcHQiLz4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkYXRhcGF0aCIgdHlwZT0ieHM6c3RyaW5nIi8+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGxhY2VtZW50IiB0eXBlPSJ4czpzdHJpbmciLz4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpZ25vcmVwbGFjZW1lbnQiIHR5cGU9Imx6eDpib29sZWFuIi8+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaW5pdHN0YWdlIj4NCisgICAgICA8eHM6c2ltcGxlVHlwZT4NCisgICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+DQorICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZWFybHkiLz4NCisgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3JtYWwiLz4NCisgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsYXRlIi8+DQorICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaW1tZWRpYXRlIi8+DQorICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZGVmZXIiLz4NCisgICAgICAgIDwveHM6cmVzdHJpY3Rpb24+DQorICAgICAgPC94czpzaW1wbGVUeXBlPg0KKyAgICA8L3hzOmF0dHJpYnV0ZT4NCisgIDwveHM6YXR0cmlidXRlR3JvdXA+DQorICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idmlld0F0dHJpYnV0ZXMiPg0KKyAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJseng6bm9kZUF0dHJpYnV0ZXMiLz4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvcGFjaXR5IiBkZWZhdWx0PSIxLjAiIHR5cGU9Imx6eDpvcGFjaXR5Ii8+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYmdjb2xvciIgdHlwZT0ibHp4OmNvbG9yIi8+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY3Vyc29yIiB0eXBlPSJ4czp0b2tlbiIvPg0KKyAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNsaWNrYWJsZSIgdHlwZT0ibHp4OmJvb2xlYW4iLz4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjbGlja3JlZ2lvbiIgdHlwZT0ieHM6c3RyaW5nIi8+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZm9jdXN0cmFwIiB0eXBlPSJseng6Ym9vbGVhbiIvPg0KKyAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZvY3VzYWJsZSIgdHlwZT0ibHp4OmJvb2xlYW4iLz4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmcmFtZSIgZGVmYXVsdD0iMCIgdHlwZT0ibHp4Om51bWJlckV4cHJlc3Npb24iLz4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmZ2NvbG9yIiB0eXBlPSJseng6Y29sb3IiLz4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmb250IiB0eXBlPSJ4czpzdHJpbmciLz4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJmb250c3R5bGUiIHR5cGU9InhzOnN0cmluZyIvPg0KKyAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZvbnRzaXplIiB0eXBlPSJseng6c2l6ZSIvPg0KKyAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlc291cmNlIiB0eXBlPSJ4czpzdHJpbmciLz4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzb3VyY2UiIHR5cGU9Imx6eDpleHByZXNzaW9uIi8+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2xpcCIgZGVmYXVsdD0iZmFsc2UiIHR5cGU9Imx6eDpib29sZWFuIi8+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYWxpZ24iIGRlZmF1bHQ9ImxlZnQiPg0KKyAgICAgIDx4czpzaW1wbGVUeXBlPg0KKyAgICAgICAgPHhzOnVuaW9uIG1lbWJlclR5cGVzPSJseng6Y29uc3RyYWludCI+DQorICAgICAgICAgIDx4czpzaW1wbGVUeXBlPg0KKyAgICAgICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+DQorICAgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxlZnQiLz4NCisgICAgICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPg0KKyAgICAgICAgICA8L3hzOnNpbXBsZVR5cGU+DQorICAgICAgICAgIDx4czpzaW1wbGVUeXBlPg0KKyAgICAgICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+DQorICAgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImNlbnRlciIvPg0KKyAgICAgICAgICAgIDwveHM6cmVzdHJpY3Rpb24+DQorICAgICAgICAgIDwveHM6c2ltcGxlVHlwZT4NCisgICAgICAgICAgPHhzOnNpbXBsZVR5cGU+DQorICAgICAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4NCisgICAgICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icmlnaHQiLz4NCisgICAgICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPg0KKyAgICAgICAgICA8L3hzOnNpbXBsZVR5cGU+DQorICAgICAgICA8L3hzOnVuaW9uPg0KKyAgICAgIDwveHM6c2ltcGxlVHlwZT4NCisgICAgPC94czphdHRyaWJ1dGU+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmFsaWduIiBkZWZhdWx0PSJ0b3AiPg0KKyAgICAgIDx4czpzaW1wbGVUeXBlPg0KKyAgICAgICAgPHhzOnVuaW9uIG1lbWJlclR5cGVzPSJseng6Y29uc3RyYWludCI+DQorICAgICAgICAgIDx4czpzaW1wbGVUeXBlPg0KKyAgICAgICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+DQorICAgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRvcCIvPg0KKyAgICAgICAgICAgIDwveHM6cmVzdHJpY3Rpb24+DQorICAgICAgICAgIDwveHM6c2ltcGxlVHlwZT4NCisgICAgICAgICAgPHhzOnNpbXBsZVR5cGU+DQorICAgICAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4NCisgICAgICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibWlkZGxlIi8+DQorICAgICAgICAgICAgPC94czpyZXN0cmljdGlvbj4NCisgICAgICAgICAgPC94czpzaW1wbGVUeXBlPg0KKyAgICAgICAgICA8eHM6c2ltcGxlVHlwZT4NCisgICAgICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPg0KKyAgICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib3R0b20iLz4NCisgICAgICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPg0KKyAgICAgICAgICA8L3hzOnNpbXBsZVR5cGU+DQorICAgICAgICA8L3hzOnVuaW9uPg0KKyAgICAgIDwveHM6c2ltcGxlVHlwZT4NCisgICAgPC94czphdHRyaWJ1dGU+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGF5b3V0IiB0eXBlPSJseng6Y3NzIi8+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGl4ZWxsb2NrIiBkZWZhdWx0PSJmYWxzZSIgdHlwZT0ibHp4OmJvb2xlYW5MaXRlcmFsIi8+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icm90YXRpb24iIGRlZmF1bHQ9IjAiIHR5cGU9Imx6eDpudW1iZXJFeHByZXNzaW9uIi8+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ieG9mZnNldCIgZGVmYXVsdD0iMCIgdHlwZT0ibHp4Om51bWJlckV4cHJlc3Npb24iLz4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ5b2Zmc2V0IiBkZWZhdWx0PSIwIiB0eXBlPSJseng6bnVtYmVyRXhwcmVzc2lvbiIvPg0KKyAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBsYXkiIGRlZmF1bHQ9InRydWUiIHR5cGU9Imx6eDpib29sZWFuIi8+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VsZWN0aW9udHlwZSI+DQorICAgICAgPHhzOnNpbXBsZVR5cGU+DQorICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPg0KKyAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vbmUiLz4NCisgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzaW5nbGUiLz4NCisgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ0b2dnbGUiLz4NCisgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJtdWx0aSIvPg0KKyAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJhbmdlIi8+DQorICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPg0KKyAgICAgIDwveHM6c2ltcGxlVHlwZT4NCisgICAgPC94czphdHRyaWJ1dGU+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3RyZXRjaGVzIj4NCisgICAgICA8eHM6c2ltcGxlVHlwZT4NCisgICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+DQorICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0id2lkdGgiLz4NCisgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJoZWlnaHQiLz4NCisgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib3RoIi8+DQorICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPg0KKyAgICAgIDwveHM6c2ltcGxlVHlwZT4NCisgICAgPC94czphdHRyaWJ1dGU+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idmlzaWJsZSIgZGVmYXVsdD0idHJ1ZSIgdHlwZT0ibHp4OmJvb2xlYW5Pck51bGwiLz4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2aXNpYmlsaXR5IiBkZWZhdWx0PSJ2aXNpYmxlIiB0eXBlPSJ4czpzdHJpbmciLz4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ3aWR0aCIgdHlwZT0ibHp4OnNpemVFeHByZXNzaW9uIi8+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaGVpZ2h0IiB0eXBlPSJseng6c2l6ZUV4cHJlc3Npb24iLz4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0ZXh0d2lkdGgiIHR5cGU9Imx6eDpzaXplRXhwcmVzc2lvbiIvPg0KKyAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRleHRoZWlnaHQiIHR5cGU9Imx6eDpzaXplRXhwcmVzc2lvbiIvPg0KKyAgICA8eHM6YXR0cmlidXRlIG5hbWU9IngiIGRlZmF1bHQ9IjAiIHR5cGU9Imx6eDpudW1iZXJFeHByZXNzaW9uIi8+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ieSIgZGVmYXVsdD0iMCIgdHlwZT0ibHp4Om51bWJlckV4cHJlc3Npb24iLz4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhYW5hbWUiIHR5cGU9InhzOnN0cmluZyIvPg0KKyAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFhYWN0aXZlIiB0eXBlPSJseng6Ym9vbGVhbiIvPg0KKyAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFhZGVzY3JpcHRpb24iIHR5cGU9InhzOnN0cmluZyIvPg0KKyAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFhdGFiaW5kZXgiIHR5cGU9Imx6eDpudW1iZXIiLz4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhYXNpbGVudCIgdHlwZT0ibHp4OmJvb2xlYW4iLz4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzaG93aGFuZGN1cnNvciIgdHlwZT0ibHp4OmJvb2xlYW4iLz4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvcHRpb25zIiB0eXBlPSJseng6Y3NzIi8+DQorICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imx6eDpldmVudEF0dHJpYnV0ZXMiLz4NCisgIDwveHM6YXR0cmlidXRlR3JvdXA+DQorICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZXZlbnRBdHRyaWJ1dGVzIj4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmNsaWNrIiB0eXBlPSJseng6c2NyaXB0Ii8+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25kYmxjbGljayIgdHlwZT0ibHp4OnNjcmlwdCIvPg0KKyAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9ubW91c2Vkb3duIiB0eXBlPSJseng6c2NyaXB0Ii8+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25tb3VzZXVwIiB0eXBlPSJseng6c2NyaXB0Ii8+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25tb3VzZW92ZXIiIHR5cGU9Imx6eDpzY3JpcHQiLz4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbm1vdXNlb3V0IiB0eXBlPSJseng6c2NyaXB0Ii8+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25mb2N1cyIgdHlwZT0ibHp4OnNjcmlwdCIvPg0KKyAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uYmx1ciIgdHlwZT0ibHp4OnNjcmlwdCIvPg0KKyAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9ua2V5ZG93biIgdHlwZT0ibHp4OnNjcmlwdCIvPg0KKyAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9ua2V5dXAiIHR5cGU9Imx6eDpzY3JpcHQiLz4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbnNlbGVjdCIgdHlwZT0ibHp4OnNjcmlwdCIvPg0KKyAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uZGF0YSIgdHlwZT0ibHp4OnNjcmlwdCIvPg0KKyAgPC94czphdHRyaWJ1dGVHcm91cD4NCisgIDx4czpncm91cCBuYW1lPSJ2aWV3Q29udGVudCI+DQorICAgIDx4czpzZXF1ZW5jZT4NCisgICAgICA8eHM6Z3JvdXAgcmVmPSJseng6dmlld0NvbnRlbnRFbGVtZW50cyIvPg0KKyAgICA8L3hzOnNlcXVlbmNlPg0KKyAgPC94czpncm91cD4NCisgIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJ2aWV3Q29udGVudCI+DQorICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imx6eDp2aWV3QXR0cmlidXRlcyIvPg0KKyAgPC94czphdHRyaWJ1dGVHcm91cD4NCisgIDx4czpncm91cCBuYW1lPSJ2aWV3Q29udGVudEVsZW1lbnRzIj4NCisgICAgPHhzOnNlcXVlbmNlPg0KKyAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+DQorICAgICAgICA8eHM6Z3JvdXAgcmVmPSJseng6bm9kZUVsZW1lbnRzIi8+DQorICAgICAgICA8eHM6Y2hvaWNlPg0KKyAgICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imx6eDppbmNsdWRlIi8+DQorICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ibHp4OnZpZXdFbGVtZW50Ii8+DQorICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ibHp4OmRhdGFzZWxlY3Rpb25tYW5hZ2VyIi8+DQorICAgICAgICAgIDx4czplbGVtZW50IHJlZj0ibHp4OnNlbGVjdGlvbm1hbmFnZXIiLz4NCisgICAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJseng6bGF5b3V0Ii8+DQorICAgICAgICA8L3hzOmNob2ljZT4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0ibHp4OmNvbW1hbmQiLz4NCisgICAgICA8L3hzOmNob2ljZT4NCisgICAgPC94czpzZXF1ZW5jZT4NCisgIDwveHM6Z3JvdXA+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJkYXRhc2VsZWN0aW9ubWFuYWdlciI+DQorICAgIDx4czpjb21wbGV4VHlwZT4NCisgICAgICA8eHM6Z3JvdXAgcmVmPSJseng6b2JqZWN0RWxlbWVudHMiLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlkIiB0eXBlPSJ4czpJRCIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6dG9rZW4iLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRvZ2dsZSIgdHlwZT0ibHp4OmJvb2xlYW4iLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uaW5pdCIgdHlwZT0ibHp4OnNjcmlwdCIvPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0ic2VsZWN0aW9ubWFuYWdlciI+DQorICAgIDx4czpjb21wbGV4VHlwZT4NCisgICAgICA8eHM6Z3JvdXAgcmVmPSJseng6b2JqZWN0RWxlbWVudHMiLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlkIiB0eXBlPSJ4czpJRCIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6dG9rZW4iLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRvZ2dsZSIgdHlwZT0ibHp4OmJvb2xlYW4iLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uaW5pdCIgdHlwZT0ibHp4OnNjcmlwdCIvPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0iY29tbWFuZCI+DQorICAgIDx4czpjb21wbGV4VHlwZT4NCisgICAgICA8eHM6Z3JvdXAgcmVmPSJseng6b2JqZWN0RWxlbWVudHMiLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlkIiB0eXBlPSJ4czpJRCIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6dG9rZW4iLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uc2VsZWN0IiB0eXBlPSJseng6c2NyaXB0Ii8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhY3RpdmUiIHR5cGU9Imx6eDpib29sZWFuIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJrZXkiIHR5cGU9Imx6eDpleHByZXNzaW9uIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmluaXQiIHR5cGU9Imx6eDpzY3JpcHQiLz4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9ImFuaW1hdG9yIiB0eXBlPSJseng6YW5pbWF0b3JDb250ZW50Ii8+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJhbmltYXRvcmdyb3VwIj4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czpjb21wbGV4Q29udGVudD4NCisgICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmFuaW1hdG9yQ29udGVudCI+DQorICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icHJvY2VzcyIgZGVmYXVsdD0ic2VxdWVudGlhbCI+DQorICAgICAgICAgICAgPHhzOnNpbXBsZVR5cGU+DQorICAgICAgICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPg0KKyAgICAgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InNlcXVlbnRpYWwiLz4NCisgICAgICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzaW11bHRhbmVvdXMiLz4NCisgICAgICAgICAgICAgIDwveHM6cmVzdHJpY3Rpb24+DQorICAgICAgICAgICAgPC94czpzaW1wbGVUeXBlPg0KKyAgICAgICAgICA8L3hzOmF0dHJpYnV0ZT4NCisgICAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KKyAgICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorICA8eHM6Y29tcGxleFR5cGUgbmFtZT0iYW5pbWF0b3JDb250ZW50Ij4NCisgICAgPHhzOmdyb3VwIHJlZj0ibHp4Om9iamVjdEVsZW1lbnRzIi8+DQorICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imx6eDpvYmplY3RBdHRyaWJ1dGVzIi8+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYXR0cmlidXRlIiB0eXBlPSJ4czp0b2tlbiIvPg0KKyAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN0YXJ0IiBkZWZhdWx0PSJ0cnVlIiB0eXBlPSJseng6Ym9vbGVhbiIvPg0KKyAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImZyb20iIHR5cGU9Imx6eDpudW1iZXIiLz4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0byIgdHlwZT0ibHp4Om51bWJlciIvPg0KKyAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImR1cmF0aW9uIj4NCisgICAgICA8eHM6c2ltcGxlVHlwZT4NCisgICAgICAgIDx4czp1bmlvbiBtZW1iZXJUeXBlcz0ibHp4OmNvbnN0cmFpbnQiPg0KKyAgICAgICAgICA8eHM6c2ltcGxlVHlwZT4NCisgICAgICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6ZmxvYXQiPg0KKyAgICAgICAgICAgICAgPHhzOm1pbkluY2x1c2l2ZSB2YWx1ZT0iMCIvPg0KKyAgICAgICAgICAgIDwveHM6cmVzdHJpY3Rpb24+DQorICAgICAgICAgIDwveHM6c2ltcGxlVHlwZT4NCisgICAgICAgIDwveHM6dW5pb24+DQorICAgICAgPC94czpzaW1wbGVUeXBlPg0KKyAgICA8L3hzOmF0dHJpYnV0ZT4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJpbmRpcmVjdCIgZGVmYXVsdD0iZmFsc2UiIHR5cGU9Imx6eDpib29sZWFuIi8+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVsYXRpdmUiIGRlZmF1bHQ9ImZhbHNlIiB0eXBlPSJseng6Ym9vbGVhbiIvPg0KKyAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im1vdGlvbiIgZGVmYXVsdD0iZWFzZWJvdGgiPg0KKyAgICAgIDx4czpzaW1wbGVUeXBlPg0KKyAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4NCisgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJsaW5lYXIiLz4NCisgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJlYXNlaW4iLz4NCisgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJlYXNlb3V0Ii8+DQorICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZWFzZWJvdGgiLz4NCisgICAgICAgIDwveHM6cmVzdHJpY3Rpb24+DQorICAgICAgPC94czpzaW1wbGVUeXBlPg0KKyAgICA8L3hzOmF0dHJpYnV0ZT4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbnN0YXJ0IiB0eXBlPSJseng6c2NyaXB0Ii8+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25zdG9wIiB0eXBlPSJseng6c2NyaXB0Ii8+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVwZWF0IiB0eXBlPSJseng6ZXhwcmVzc2lvbiIvPg0KKyAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBhdXNlZCIgZGVmYXVsdD0iZmFsc2UiIHR5cGU9Imx6eDpib29sZWFuIi8+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGFyZ2V0IiB0eXBlPSJseng6cmVmZXJlbmNlIi8+DQorICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0idmlld0VsZW1lbnQiIGFic3RyYWN0PSJ0cnVlIi8+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJ2aWV3IiBzdWJzdGl0dXRpb25Hcm91cD0ibHp4OnZpZXdFbGVtZW50Ij4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czpncm91cCByZWY9Imx6eDp2aWV3Q29udGVudCIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imx6eDp2aWV3Q29udGVudCIvPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0idGV4dCIgc3Vic3RpdHV0aW9uR3JvdXA9Imx6eDp2aWV3RWxlbWVudCI+DQorICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+DQorICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4NCisgICAgICAgIDx4czpncm91cCByZWY9Imx6eDp2aWV3Q29udGVudCIvPg0KKyAgICAgICAgPHhzOmdyb3VwIHJlZj0ibHp4Omh0bWxUZXh0Ii8+DQorICAgICAgPC94czpjaG9pY2U+DQorICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibHp4OnZpZXdDb250ZW50Ii8+DQorICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibHp4OnRleHRBdHRyaWJ1dGVzIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJlbWJlZGZvbnRzIiB0eXBlPSJseng6Ym9vbGVhbiIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGV4dCIgdHlwZT0ieHM6c3RyaW5nIi8+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJpbnB1dHRleHQiIHN1YnN0aXR1dGlvbkdyb3VwPSJseng6dmlld0VsZW1lbnQiPg0KKyAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPg0KKyAgICAgIDx4czpncm91cCByZWY9Imx6eDp2aWV3Q29udGVudCIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imx6eDp2aWV3Q29udGVudCIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imx6eDp0ZXh0QXR0cmlidXRlcyIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZW1iZWRmb250cyIgdHlwZT0ibHp4OmJvb2xlYW4iLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlc2l6YWJsZSIgdHlwZT0ibHp4OmJvb2xlYW4iLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InBhc3N3b3JkIiBkZWZhdWx0PSJmYWxzZSIgdHlwZT0ibHp4OmJvb2xlYW4iLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRleHQiIHR5cGU9InhzOnN0cmluZyIvPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9InRleHRBdHRyaWJ1dGVzIj4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtdWx0aWxpbmUiIGRlZmF1bHQ9ImZhbHNlIiB0eXBlPSJseng6Ym9vbGVhbiIvPg0KKyAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlc2l6ZSIgZGVmYXVsdD0iZmFsc2UiIHR5cGU9Imx6eDpib29sZWFuTGl0ZXJhbCIvPg0KKyAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlbGVjdGFibGUiIGRlZmF1bHQ9ImZhbHNlIiB0eXBlPSJseng6Ym9vbGVhbkxpdGVyYWwiLz4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtYXhsZW5ndGgiIGRlZmF1bHQ9Im51bGwiIHR5cGU9Imx6eDpudW1iZXJFeHByZXNzaW9uIi8+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icGF0dGVybiIgdHlwZT0ieHM6c3RyaW5nIi8+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibGFiZWwiIHR5cGU9InhzOnN0cmluZyIvPg0KKyAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFudGlBbGlhc1R5cGUiIGRlZmF1bHQ9ImFkdmFuY2VkIj4NCisgICAgICA8eHM6c2ltcGxlVHlwZT4NCisgICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+DQorICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibm9ybWFsIi8+DQorICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYWR2YW5jZWQiLz4NCisgICAgICAgIDwveHM6cmVzdHJpY3Rpb24+DQorICAgICAgPC94czpzaW1wbGVUeXBlPg0KKyAgICA8L3hzOmF0dHJpYnV0ZT4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJncmlkRml0IiBkZWZhdWx0PSJzdWJwaXhlbCI+DQorICAgICAgPHhzOnNpbXBsZVR5cGU+DQorICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPg0KKyAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Im5vbmUiLz4NCisgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwaXhlbCIvPg0KKyAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InN1YnBpeGVsIi8+DQorICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPg0KKyAgICAgIDwveHM6c2ltcGxlVHlwZT4NCisgICAgPC94czphdHRyaWJ1dGU+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2hhcnBuZXNzIiBkZWZhdWx0PSIwIiB0eXBlPSJseng6bnVtYmVyRXhwcmVzc2lvbiIvPg0KKyAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRoaWNrbmVzcyIgZGVmYXVsdD0iMCIgdHlwZT0ibHp4Om51bWJlckV4cHJlc3Npb24iLz4NCisgIDwveHM6YXR0cmlidXRlR3JvdXA+DQorICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0idGV4dENvbnRlbnQiPg0KKyAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRleHQiIHR5cGU9InhzOnN0cmluZyIvPg0KKyAgPC94czphdHRyaWJ1dGVHcm91cD4NCisgIDx4czpncm91cCBuYW1lPSJodG1sQ29udGVudCI+DQorICAgIDx4czpzZXF1ZW5jZT4NCisgICAgICA8eHM6Z3JvdXAgbWluT2NjdXJzPSIwIiByZWY9Imx6eDpodG1sVGV4dCIvPg0KKyAgICA8L3hzOnNlcXVlbmNlPg0KKyAgPC94czpncm91cD4NCisgIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJodG1sQ29udGVudCI+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGV4dCIgdHlwZT0ieHM6c3RyaW5nIi8+DQorICA8L3hzOmF0dHJpYnV0ZUdyb3VwPg0KKyAgPHhzOmdyb3VwIG5hbWU9Imh0bWxUZXh0Ij4NCisgICAgPHhzOnNlcXVlbmNlPg0KKyAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imx6eDpwcmUiLz4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0ibHp4OmEiLz4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0ibHp4OmIiLz4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0ibHp4OmxpIi8+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imx6eDppbWciLz4NCisgICAgICAgIDx4czplbGVtZW50IG5hbWU9ImZvbnQiPg0KKyAgICAgICAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPg0KKyAgICAgICAgICAgIDx4czpncm91cCByZWY9Imx6eDpodG1sVGV4dCIvPg0KKyAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZmFjZSIgdHlwZT0ieHM6c3RyaW5nIi8+DQorICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzaXplIiB0eXBlPSJseng6c2l6ZUxpdGVyYWwiLz4NCisgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImNvbG9yIiB0eXBlPSJseng6Y29sb3JMaXRlcmFsIi8+DQorICAgICAgICAgIDwveHM6Y29tcGxleFR5cGU+DQorICAgICAgICA8L3hzOmVsZW1lbnQ+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imx6eDppIi8+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imx6eDpwIi8+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imx6eDpiciIvPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJseng6dSIvPg0KKyAgICAgIDwveHM6Y2hvaWNlPg0KKyAgICA8L3hzOnNlcXVlbmNlPg0KKyAgPC94czpncm91cD4NCisgIDx4czplbGVtZW50IG5hbWU9InByZSI+DQorICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+DQorICAgICAgPHhzOmdyb3VwIHJlZj0ibHp4Omh0bWxUZXh0Ii8+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJhIj4NCisgICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4NCisgICAgICA8eHM6Z3JvdXAgcmVmPSJseng6aHRtbFRleHQiLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImhyZWYiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOmFueVVSSSIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGFyZ2V0Ij4NCisgICAgICAgIDx4czpzaW1wbGVUeXBlPg0KKyAgICAgICAgICA8eHM6dW5pb24+DQorICAgICAgICAgICAgPHhzOnNpbXBsZVR5cGU+DQorICAgICAgICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPg0KKyAgICAgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Il9ibGFuayIvPg0KKyAgICAgICAgICAgICAgPC94czpyZXN0cmljdGlvbj4NCisgICAgICAgICAgICA8L3hzOnNpbXBsZVR5cGU+DQorICAgICAgICAgICAgPHhzOnNpbXBsZVR5cGU+DQorICAgICAgICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPg0KKyAgICAgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Il9wYXJlbnQiLz4NCisgICAgICAgICAgICAgIDwveHM6cmVzdHJpY3Rpb24+DQorICAgICAgICAgICAgPC94czpzaW1wbGVUeXBlPg0KKyAgICAgICAgICAgIDx4czpzaW1wbGVUeXBlPg0KKyAgICAgICAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4NCisgICAgICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJfc2VsZiIvPg0KKyAgICAgICAgICAgICAgPC94czpyZXN0cmljdGlvbj4NCisgICAgICAgICAgICA8L3hzOnNpbXBsZVR5cGU+DQorICAgICAgICAgICAgPHhzOnNpbXBsZVR5cGU+DQorICAgICAgICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPg0KKyAgICAgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Il90b3AiLz4NCisgICAgICAgICAgICAgIDwveHM6cmVzdHJpY3Rpb24+DQorICAgICAgICAgICAgPC94czpzaW1wbGVUeXBlPg0KKyAgICAgICAgICAgIDx4czpzaW1wbGVUeXBlPg0KKyAgICAgICAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnN0cmluZyI+DQorICAgICAgICAgICAgICAgIDx4czpwYXR0ZXJuIHZhbHVlPSJbYS16QS1aXVthLXpBLVowLTlcLV86Ll0qIi8+DQorICAgICAgICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPg0KKyAgICAgICAgICAgIDwveHM6c2ltcGxlVHlwZT4NCisgICAgICAgICAgPC94czp1bmlvbj4NCisgICAgICAgIDwveHM6c2ltcGxlVHlwZT4NCisgICAgICA8L3hzOmF0dHJpYnV0ZT4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9ImIiPg0KKyAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPg0KKyAgICAgIDx4czpncm91cCByZWY9Imx6eDpodG1sVGV4dCIvPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0ibGkiPg0KKyAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPg0KKyAgICAgIDx4czpncm91cCByZWY9Imx6eDpodG1sVGV4dCIvPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0iaW1nIj4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3JjIiB0eXBlPSJ4czpzdHJpbmciLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFsaWduIiB0eXBlPSJ4czpzdHJpbmciLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IndpZHRoIiB0eXBlPSJ4czpzdHJpbmciLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImhlaWdodCIgdHlwZT0ieHM6c3RyaW5nIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJoc3BhY2UiIHR5cGU9InhzOnN0cmluZyIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idnNwYWNlIiB0eXBlPSJ4czpzdHJpbmciLz4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9ImkiPg0KKyAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPg0KKyAgICAgIDx4czpncm91cCByZWY9Imx6eDpodG1sVGV4dCIvPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0icCI+DQorICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+DQorICAgICAgPHhzOmdyb3VwIHJlZj0ibHp4Omh0bWxUZXh0Ii8+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJiciI+DQorICAgIDx4czpjb21wbGV4VHlwZS8+DQorICA8L3hzOmVsZW1lbnQ+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJ1Ij4NCisgICAgPHhzOmNvbXBsZXhUeXBlIG1peGVkPSJ0cnVlIj4NCisgICAgICA8eHM6Z3JvdXAgcmVmPSJseng6aHRtbFRleHQiLz4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9ImFzc2V0IiBhYnN0cmFjdD0idHJ1ZSIvPg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0iYXVkaW8iIHN1YnN0aXR1dGlvbkdyb3VwPSJseng6YXNzZXQiPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibHp4OnNyY0F0dHJpYnV0ZSIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaWQiIHR5cGU9InhzOklEIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibHp4Om5hbWVBdHRyaWJ1dGUiLz4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9InJlc291cmNlIiBzdWJzdGl0dXRpb25Hcm91cD0ibHp4OmFzc2V0Ij4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czpzZXF1ZW5jZT4NCisgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIHJlZj0ibHp4OmZyYW1lIi8+DQorICAgICAgPC94czpzZXF1ZW5jZT4NCisgICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJseng6bmFtZUF0dHJpYnV0ZSIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3JjIiB0eXBlPSJ4czphbnlVUkkiLz4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9ImZyYW1lIj4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6dG9rZW4iLz4NCisgICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJseng6c3JjQXR0cmlidXRlIi8+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJkYXRhc291cmNlIj4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imx6eDpkYXRhc2V0Ii8+DQorICAgICAgICA8eHM6Z3JvdXAgcmVmPSJseng6b2JqZWN0RWxlbWVudHMiLz4NCisgICAgICA8L3hzOmNob2ljZT4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImlkIiB0eXBlPSJ4czpJRCIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdHlwZT0ieHM6dG9rZW4iLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRpbWVvdXQiIHR5cGU9Imx6eDpudW1iZXIiLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlY3VyZSIgZGVmYXVsdD0iZmFsc2UiIHR5cGU9Imx6eDpib29sZWFuTGl0ZXJhbCIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icHJveGllZCIgZGVmYXVsdD0iaW5oZXJpdCI+DQorICAgICAgICA8eHM6c2ltcGxlVHlwZT4NCisgICAgICAgICAgPHhzOnVuaW9uIG1lbWJlclR5cGVzPSJseng6Ym9vbGVhbkxpdGVyYWwiPg0KKyAgICAgICAgICAgIDx4czpzaW1wbGVUeXBlPg0KKyAgICAgICAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4NCisgICAgICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJpbmhlcml0Ii8+DQorICAgICAgICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPg0KKyAgICAgICAgICAgIDwveHM6c2ltcGxlVHlwZT4NCisgICAgICAgICAgPC94czp1bmlvbj4NCisgICAgICAgIDwveHM6c2ltcGxlVHlwZT4NCisgICAgICA8L3hzOmF0dHJpYnV0ZT4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uaW5pdCIgdHlwZT0ibHp4OnNjcmlwdCIvPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0iZGF0YXNldCI+DQorICAgIDx4czpjb21wbGV4VHlwZT4NCisgICAgICA8eHM6Y29tcGxleENvbnRlbnQ+DQorICAgICAgICA8eHM6ZXh0ZW5zaW9uIGJhc2U9Imx6eDphbnlYTUwiPg0KKyAgICAgICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJseng6ZGF0YXNldEF0dHJpYnV0ZXMiLz4NCisgICAgICAgIDwveHM6ZXh0ZW5zaW9uPg0KKyAgICAgIDwveHM6Y29tcGxleENvbnRlbnQ+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJjb25uZWN0aW9uZGF0YXNvdXJjZSI+DQorICAgIDx4czpjb21wbGV4VHlwZT4NCisgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iZGF0YXNldCI+DQorICAgICAgICAgIDx4czpjb21wbGV4VHlwZT4NCisgICAgICAgICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJseng6ZGF0YXNldEF0dHJpYnV0ZXMiLz4NCisgICAgICAgICAgPC94czpjb21wbGV4VHlwZT4NCisgICAgICAgIDwveHM6ZWxlbWVudD4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0ibHp4Om1ldGhvZCIvPg0KKyAgICAgIDwveHM6Y2hvaWNlPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaWQiIHR5cGU9InhzOklEIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB0eXBlPSJ4czp0b2tlbiIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25jb25uZWN0IiB0eXBlPSJseng6c2NyaXB0Ii8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmluaXQiIHR5cGU9Imx6eDpzY3JpcHQiLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uZGF0YSIgdHlwZT0ibHp4OnNjcmlwdCIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25lcnJvciIgdHlwZT0ibHp4OnNjcmlwdCIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib250aW1lb3V0IiB0eXBlPSJseng6c2NyaXB0Ii8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmRpc2Nvbm5lY3QiIHR5cGU9Imx6eDpzY3JpcHQiLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9udXNlcmRpc2Nvbm5lY3QiIHR5cGU9Imx6eDpzY3JpcHQiLz4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9ImFnZW50Ij4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idXJsIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czpzdHJpbmciLz4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9ImNvbm5lY3Rpb24iPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0ibHp4OmFnZW50Ii8+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imx6eDptZXRob2QiLz4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0ibHp4OmhhbmRsZXIiLz4NCisgICAgICA8L3hzOmNob2ljZT4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImhlYXJ0YmVhdCIgdHlwZT0ieHM6aW50ZWdlciIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idGltZW91dCIgdHlwZT0ibHp4Om51bWJlciIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic2VjdXJlIiB0eXBlPSJseng6Ym9vbGVhbkxpdGVyYWwiLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InNlY3VyZXBvcnQiIHR5cGU9InhzOmludGVnZXIiLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlY2VpdmV1c2VyZGlzY29ubmVjdCIgZGVmYXVsdD0iZmFsc2UiIHR5cGU9Imx6eDpib29sZWFuTGl0ZXJhbCIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZ3JvdXAiIHR5cGU9InhzOnN0cmluZyIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYXV0aGVudGljYXRvciIgdHlwZT0ieHM6c3RyaW5nIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhdXRocGFyYW0iIHR5cGU9InhzOnN0cmluZyIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25jb25uZWN0IiB0eXBlPSJseng6c2NyaXB0Ii8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmRhdGEiIHR5cGU9Imx6eDpzY3JpcHQiLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uZXJyb3IiIHR5cGU9Imx6eDpzY3JpcHQiLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9udGltZW91dCIgdHlwZT0ibHp4OnNjcmlwdCIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib25kaXNjb25uZWN0IiB0eXBlPSJseng6c2NyaXB0Ii8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbnVzZXJkaXNjb25uZWN0IiB0eXBlPSJseng6c2NyaXB0Ii8+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZGF0YXNldEF0dHJpYnV0ZXMiPg0KKyAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJseng6b2JqZWN0QXR0cmlidXRlcyIvPg0KKyAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5zcHJlZml4IiB0eXBlPSJseng6Ym9vbGVhbiIvPg0KKyAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFjY2VwdGVuY29kaW5ncyIgdHlwZT0ibHp4OmJvb2xlYW4iLz4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ0aW1lb3V0IiB0eXBlPSJseng6bnVtYmVyIi8+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icHJveGllZCIgZGVmYXVsdD0iaW5oZXJpdCI+DQorICAgICAgPHhzOnNpbXBsZVR5cGU+DQorICAgICAgICA8eHM6dW5pb24gbWVtYmVyVHlwZXM9Imx6eDpib29sZWFuTGl0ZXJhbCI+DQorICAgICAgICAgIDx4czpzaW1wbGVUeXBlPg0KKyAgICAgICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+DQorICAgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImluaGVyaXQiLz4NCisgICAgICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPg0KKyAgICAgICAgICA8L3hzOnNpbXBsZVR5cGU+DQorICAgICAgICA8L3hzOnVuaW9uPg0KKyAgICAgIDwveHM6c2ltcGxlVHlwZT4NCisgICAgPC94czphdHRyaWJ1dGU+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3JjIj4NCisgICAgICA8eHM6c2ltcGxlVHlwZT4NCisgICAgICAgIDx4czp1bmlvbiBtZW1iZXJUeXBlcz0ieHM6YW55VVJJIGx6eDpjb25zdHJhaW50Ii8+DQorICAgICAgPC94czpzaW1wbGVUeXBlPg0KKyAgICA8L3hzOmF0dHJpYnV0ZT4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZXF1ZXN0IiB0eXBlPSJseng6Ym9vbGVhbiIvPg0KKyAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImF1dG9yZXF1ZXN0IiB0eXBlPSJseng6Ym9vbGVhbiIvPg0KKyAgICA8eHM6YXR0cmlidXRlIG5hbWU9InF1ZXVlcmVxdWVzdHMiIHR5cGU9Imx6eDpib29sZWFuIi8+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icXVlcnlzdHJpbmciIHR5cGU9InhzOnN0cmluZyIvPg0KKyAgICA8eHM6YXR0cmlidXRlIG5hbWU9InR5cGUiIHR5cGU9InhzOnN0cmluZyIvPg0KKyAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRhdGFmcm9tY2hpbGQiIHR5cGU9Imx6eDpib29sZWFuIi8+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZW5kcG9pbnQiIHR5cGU9InhzOnN0cmluZyIvPg0KKyAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWVzcGFjZSIgdHlwZT0ieHM6c3RyaW5nIi8+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibWV0aG9kIiB0eXBlPSJ4czpzdHJpbmciLz4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWN1cmUiIGRlZmF1bHQ9ImZhbHNlIiB0eXBlPSJseng6Ym9vbGVhbkxpdGVyYWwiLz4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZWN1cmVwb3J0IiBkZWZhdWx0PSI0NDMiPg0KKyAgICAgIDx4czpzaW1wbGVUeXBlPg0KKyAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOmludGVnZXIiPg0KKyAgICAgICAgICA8eHM6bWluSW5jbHVzaXZlIHZhbHVlPSIwIi8+DQorICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPg0KKyAgICAgIDwveHM6c2ltcGxlVHlwZT4NCisgICAgPC94czphdHRyaWJ1dGU+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZ2V0cmVzcG9uc2VoZWFkZXJzIiBkZWZhdWx0PSJ0cnVlIiB0eXBlPSJseng6Ym9vbGVhbiIvPg0KKyAgICA8eHM6YXR0cmlidXRlIG5hbWU9InRyaW13aGl0ZXNwYWNlIiBkZWZhdWx0PSJmYWxzZSIgdHlwZT0ibHp4OmJvb2xlYW4iLz4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjYWNoZWFibGUiIGRlZmF1bHQ9ImZhbHNlIiB0eXBlPSJseng6Ym9vbGVhbiIvPg0KKyAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uZGF0YSIgdHlwZT0ibHp4OnNjcmlwdCIvPg0KKyAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uZXJyb3IiIHR5cGU9Imx6eDpzY3JpcHQiLz4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbnRpbWVvdXQiIHR5cGU9Imx6eDpzY3JpcHQiLz4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJxdWVyeXR5cGUiPg0KKyAgICAgIDx4czpzaW1wbGVUeXBlPg0KKyAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4NCisgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJnZXQiLz4NCisgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwb3N0Ii8+DQorICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iR0VUIi8+DQorICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iUE9TVCIvPg0KKyAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InB1dCIvPg0KKyAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IlBVVCIvPg0KKyAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImRlbGV0ZSIvPg0KKyAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9IkRFTEVURSIvPg0KKyAgICAgICAgPC94czpyZXN0cmljdGlvbj4NCisgICAgICA8L3hzOnNpbXBsZVR5cGU+DQorICAgIDwveHM6YXR0cmlidXRlPg0KKyAgPC94czphdHRyaWJ1dGVHcm91cD4NCisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJhbnlYTUwiIG1peGVkPSJ0cnVlIj4NCisgICAgPHhzOnNlcXVlbmNlPg0KKyAgICAgIDx4czphbnkgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcHJvY2Vzc0NvbnRlbnRzPSJza2lwIi8+DQorICAgIDwveHM6c2VxdWVuY2U+DQorICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPHhzOmF0dHJpYnV0ZUdyb3VwIG5hbWU9ImRhdGFwdHJBdHRyaWJ1dGVzIj4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmRhdGEiIHR5cGU9Imx6eDpzY3JpcHQiLz4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmVycm9yIiB0eXBlPSJseng6c2NyaXB0Ii8+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ib250aW1lb3V0IiB0eXBlPSJseng6c2NyaXB0Ii8+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVydW54cGF0aCIgdHlwZT0ibHp4OmJvb2xlYW4iLz4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ4cGF0aCIgdHlwZT0ieHM6c3RyaW5nIi8+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3BhY2luZyIgZGVmYXVsdD0iMCIgdHlwZT0ibHp4OnNpemUiLz4NCisgIDwveHM6YXR0cmlidXRlR3JvdXA+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJkYXRhcG9pbnRlciI+DQorICAgIDx4czpjb21wbGV4VHlwZT4NCisgICAgICA8eHM6Z3JvdXAgcmVmPSJseng6b2JqZWN0RWxlbWVudHMiLz4NCisgICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJseng6b2JqZWN0QXR0cmlidXRlcyIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imx6eDpkYXRhcHRyQXR0cmlidXRlcyIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icCIgdHlwZT0ibHp4OmV4cHJlc3Npb24iLz4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9ImRhdGFwYXRoIj4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czpncm91cCByZWY9Imx6eDpvYmplY3RFbGVtZW50cyIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imx6eDpvYmplY3RBdHRyaWJ1dGVzIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibHp4OmRhdGFwdHJBdHRyaWJ1dGVzIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwb29saW5nIiBkZWZhdWx0PSJmYWxzZSIgdHlwZT0ibHp4OmJvb2xlYW4iLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImF4aXMiPg0KKyAgICAgICAgPHhzOnNpbXBsZVR5cGU+DQorICAgICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+DQorICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ4Ii8+DQorICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJ5Ii8+DQorICAgICAgICAgIDwveHM6cmVzdHJpY3Rpb24+DQorICAgICAgICA8L3hzOnNpbXBsZVR5cGU+DQorICAgICAgPC94czphdHRyaWJ1dGU+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzb3J0cGF0aCIgdHlwZT0ieHM6c3RyaW5nIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzb3J0b3JkZXIiIHR5cGU9InhzOnN0cmluZyIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVwbGljYXRpb24iPg0KKyAgICAgICAgPHhzOnNpbXBsZVR5cGU+DQorICAgICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+DQorICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3JtYWwiLz4NCisgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxhenkiLz4NCisgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InJlc2l6ZSIvPg0KKyAgICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPg0KKyAgICAgICAgPC94czpzaW1wbGVUeXBlPg0KKyAgICAgIDwveHM6YXR0cmlidXRlPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icCIgdHlwZT0ibHp4OmV4cHJlc3Npb24iLz4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czpncm91cCBuYW1lPSJkYXRhcGF0aENoaWxkcmVuIj4NCisgICAgPHhzOnNlcXVlbmNlPg0KKyAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imx6eDpkYXRhcGF0aCIvPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJseng6ZGF0YXBvaW50ZXIiLz4NCisgICAgICA8L3hzOmNob2ljZT4NCisgICAgPC94czpzZXF1ZW5jZT4NCisgIDwveHM6Z3JvdXA+DQorICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0iZGV2aWNlQXR0cmlidXRlIj4NCisgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJkZXZpY2UiIHR5cGU9Imx6eDpib29sZWFuIi8+DQorICA8L3hzOmF0dHJpYnV0ZUdyb3VwPg0KKyAgPHhzOmdyb3VwIG5hbWU9ImZvbnQiPg0KKyAgICA8eHM6c2VxdWVuY2U+DQorICAgICAgPHhzOmVsZW1lbnQgbmFtZT0iZm9udCI+DQorICAgICAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIj4NCisgICAgICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Imx6eDpmYWNlIi8+DQorICAgICAgICAgIDwveHM6Y2hvaWNlPg0KKyAgICAgICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJseng6bmFtZUF0dHJpYnV0ZSIvPg0KKyAgICAgICAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJseng6ZGV2aWNlQXR0cmlidXRlIi8+DQorICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3JjIiB0eXBlPSJ4czphbnlVUkkiLz4NCisgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdHlsZSI+DQorICAgICAgICAgICAgPHhzOnNpbXBsZVR5cGU+DQorICAgICAgICAgICAgICA8eHM6cmVzdHJpY3Rpb24gYmFzZT0ieHM6dG9rZW4iPg0KKyAgICAgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvbGQiLz4NCisgICAgICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJpdGFsaWMiLz4NCisgICAgICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib2xkIGl0YWxpYyIvPg0KKyAgICAgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Iml0YWxpYyBib2xkIi8+DQorICAgICAgICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0icGxhaW4iLz4NCisgICAgICAgICAgICAgIDwveHM6cmVzdHJpY3Rpb24+DQorICAgICAgICAgICAgPC94czpzaW1wbGVUeXBlPg0KKyAgICAgICAgICA8L3hzOmF0dHJpYnV0ZT4NCisgICAgICAgIDwveHM6Y29tcGxleFR5cGU+DQorICAgICAgPC94czplbGVtZW50Pg0KKyAgICA8L3hzOnNlcXVlbmNlPg0KKyAgPC94czpncm91cD4NCisgIDx4czplbGVtZW50IG5hbWU9ImZhY2UiPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdHlsZSI+DQorICAgICAgICA8eHM6c2ltcGxlVHlwZT4NCisgICAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4NCisgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImJvbGQiLz4NCisgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Iml0YWxpYyIvPg0KKyAgICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYm9sZCBpdGFsaWMiLz4NCisgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Iml0YWxpYyBib2xkIi8+DQorICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJwbGFpbiIvPg0KKyAgICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPg0KKyAgICAgICAgPC94czpzaW1wbGVUeXBlPg0KKyAgICAgIDwveHM6YXR0cmlidXRlPg0KKyAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imx6eDpzcmNBdHRyaWJ1dGUiLz4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czphdHRyaWJ1dGVHcm91cCBuYW1lPSJzdHlsZUF0dHJpYnV0ZSI+DQorICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3R5bGUiIHVzZT0icmVxdWlyZWQiPg0KKyAgICAgIDx4czpzaW1wbGVUeXBlPg0KKyAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4NCisgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib2xkIi8+DQorICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaXRhbGljIi8+DQorICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iYm9sZCBpdGFsaWMiLz4NCisgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJpdGFsaWMgYm9sZCIvPg0KKyAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InBsYWluIi8+DQorICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPg0KKyAgICAgIDwveHM6c2ltcGxlVHlwZT4NCisgICAgPC94czphdHRyaWJ1dGU+DQorICA8L3hzOmF0dHJpYnV0ZUdyb3VwPg0KKyAgPHhzOmdyb3VwIG5hbWU9Im9iamVjdEVsZW1lbnRzIj4NCisgICAgPHhzOnNlcXVlbmNlPg0KKyAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imx6eDptZXRob2QiLz4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0ibHp4OmhhbmRsZXIiLz4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0ibHp4OmV2ZW50Ii8+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imx6eDphdHRyaWJ1dGUiLz4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0ibHp4OnN0YXRlIi8+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imx6eDpub2RlIi8+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imx6eDphbmltYXRvciIvPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJseng6YW5pbWF0b3Jncm91cCIvPg0KKyAgICAgIDwveHM6Y2hvaWNlPg0KKyAgICA8L3hzOnNlcXVlbmNlPg0KKyAgPC94czpncm91cD4NCisgIDx4czplbGVtZW50IG5hbWU9ImF0dHJpYnV0ZSI+DQorICAgIDx4czpjb21wbGV4VHlwZT4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOnRva2VuIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdHlsZSIgdHlwZT0ieHM6c3RyaW5nIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ2YWx1ZSIgdHlwZT0ieHM6c3RyaW5nIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ3aGVuIiBkZWZhdWx0PSJpbW1lZGlhdGVseSI+DQorICAgICAgICA8eHM6c2ltcGxlVHlwZT4NCisgICAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4NCisgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImltbWVkaWF0ZWx5Ii8+DQorICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJvbmNlIi8+DQorICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJhbHdheXMiLz4NCisgICAgICAgICAgPC94czpyZXN0cmljdGlvbj4NCisgICAgICAgIDwveHM6c2ltcGxlVHlwZT4NCisgICAgICA8L3hzOmF0dHJpYnV0ZT4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InR5cGUiIGRlZmF1bHQ9ImV4cHJlc3Npb24iPg0KKyAgICAgICAgPHhzOnNpbXBsZVR5cGU+DQorICAgICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+DQorICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJib29sZWFuIi8+DQorICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJjb2xvciIvPg0KKyAgICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iZXhwcmVzc2lvbiIvPg0KKyAgICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0ibnVtYmVyIi8+DQorICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzaXplIi8+DQorICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJzdHJpbmciLz4NCisgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9InRleHQiLz4NCisgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9Imh0bWwiLz4NCisgICAgICAgICAgPC94czpyZXN0cmljdGlvbj4NCisgICAgICAgIDwveHM6c2ltcGxlVHlwZT4NCisgICAgICA8L3hzOmF0dHJpYnV0ZT4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InJlcXVpcmVkIiBkZWZhdWx0PSJmYWxzZSIgdHlwZT0ibHp4OmJvb2xlYW5MaXRlcmFsIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzZXR0ZXIiIHR5cGU9Imx6eDpzY3JpcHQiLz4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9ImNsYXNzIj4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czpjaG9pY2UgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCI+DQorICAgICAgICA8eHM6ZWxlbWVudCByZWY9Imx6eDpkb2MiLz4NCisgICAgICAgIDx4czpncm91cCByZWY9Imx6eDp2aWV3Q29udGVudEVsZW1lbnRzIi8+DQorICAgICAgPC94czpjaG9pY2U+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJ4czp0b2tlbiIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZXh0ZW5kcyIgZGVmYXVsdD0idmlldyIgdHlwZT0ieHM6dG9rZW4iLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9IndpdGgiIHR5cGU9InhzOnN0cmluZyIvPg0KKyAgICAgIDx4czphbnlBdHRyaWJ1dGUgcHJvY2Vzc0NvbnRlbnRzPSJza2lwIi8+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJpbnRlcmZhY2UiPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0ibHp4OmRvYyIvPg0KKyAgICAgICAgPHhzOmdyb3VwIHJlZj0ibHp4OnZpZXdDb250ZW50RWxlbWVudHMiLz4NCisgICAgICA8L3hzOmNob2ljZT4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOnRva2VuIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJleHRlbmRzIiBkZWZhdWx0PSJ2aWV3IiB0eXBlPSJ4czp0b2tlbiIvPg0KKyAgICAgIDx4czphbnlBdHRyaWJ1dGUgcHJvY2Vzc0NvbnRlbnRzPSJza2lwIi8+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJkb2MiIHR5cGU9Imx6eDphbnkiLz4NCisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJhbnkiIG1peGVkPSJ0cnVlIj4NCisgICAgPHhzOnNlcXVlbmNlPg0KKyAgICAgIDx4czphbnkgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcHJvY2Vzc0NvbnRlbnRzPSJza2lwIi8+DQorICAgIDwveHM6c2VxdWVuY2U+DQorICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0idHJhaXQiPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOmdyb3VwIHJlZj0ibHp4OnZpZXdDb250ZW50RWxlbWVudHMiLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOnRva2VuIi8+DQorICAgICAgPHhzOmFueUF0dHJpYnV0ZSBwcm9jZXNzQ29udGVudHM9InNraXAiLz4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9ImhhbmRsZXIiPg0KKyAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPg0KKyAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imx6eDpuYW1lQXR0cmlidXRlIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZWZlcmVuY2UiIGRlZmF1bHQ9InRoaXMiIHR5cGU9Imx6eDpyZWZlcmVuY2UiLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImFyZ3MiIGRlZmF1bHQ9IiIgdHlwZT0ieHM6c3RyaW5nIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJtZXRob2QiIHR5cGU9InhzOnN0cmluZyIvPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0iZXZlbnQiPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibHp4Om5hbWVBdHRyaWJ1dGUiLz4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9Im1ldGhvZCI+DQorICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB0eXBlPSJ4czp0b2tlbiIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iZXZlbnQiIHR5cGU9InhzOnN0cmluZyIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVmZXJlbmNlIiBkZWZhdWx0PSJ0aGlzIiB0eXBlPSJseng6cmVmZXJlbmNlIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJhcmdzIiBkZWZhdWx0PSIiIHR5cGU9InhzOnN0cmluZyIvPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0iaW1wb3J0Ij4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czpncm91cCByZWY9Imx6eDp2aWV3Q29udGVudCIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imx6eDp2aWV3Q29udGVudCIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaHJlZiIgdXNlPSJyZXF1aXJlZCIgdHlwZT0ieHM6YW55VVJJIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzdGFnZSIgdXNlPSJyZXF1aXJlZCI+DQorICAgICAgICA8eHM6c2ltcGxlVHlwZT4NCisgICAgICAgICAgPHhzOnJlc3RyaWN0aW9uIGJhc2U9InhzOnRva2VuIj4NCisgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImxhdGUiLz4NCisgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImRlZmVyIi8+DQorICAgICAgICAgIDwveHM6cmVzdHJpY3Rpb24+DQorICAgICAgICA8L3hzOnNpbXBsZVR5cGU+DQorICAgICAgPC94czphdHRyaWJ1dGU+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmxvYWQiIHR5cGU9Imx6eDpzY3JpcHQiLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InByb3hpZWQiIGRlZmF1bHQ9ImluaGVyaXQiPg0KKyAgICAgICAgPHhzOnNpbXBsZVR5cGU+DQorICAgICAgICAgIDx4czp1bmlvbiBtZW1iZXJUeXBlcz0ibHp4OmJvb2xlYW5MaXRlcmFsIj4NCisgICAgICAgICAgICA8eHM6c2ltcGxlVHlwZT4NCisgICAgICAgICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+DQorICAgICAgICAgICAgICAgIDx4czplbnVtZXJhdGlvbiB2YWx1ZT0iaW5oZXJpdCIvPg0KKyAgICAgICAgICAgICAgPC94czpyZXN0cmljdGlvbj4NCisgICAgICAgICAgICA8L3hzOnNpbXBsZVR5cGU+DQorICAgICAgICAgIDwveHM6dW5pb24+DQorICAgICAgICA8L3hzOnNpbXBsZVR5cGU+DQorICAgICAgPC94czphdHRyaWJ1dGU+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbmVycm9yIiB0eXBlPSJseng6c2NyaXB0Ii8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJvbnRpbWVvdXQiIHR5cGU9Imx6eDpzY3JpcHQiLz4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9InN0YXRlIj4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czpncm91cCByZWY9Imx6eDp2aWV3Q29udGVudCIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imx6eDp2aWV3Q29udGVudCIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iYXBwbHkiIHR5cGU9Imx6eDpib29sZWFuIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwb29saW5nIiBkZWZhdWx0PSJmYWxzZSIgdHlwZT0ibHp4OmJvb2xlYW4iLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9uYXBwbHkiIHR5cGU9Imx6eDpzY3JpcHQiLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im9ucmVtb3ZlIiB0eXBlPSJseng6c2NyaXB0Ii8+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorICA8eHM6YXR0cmlidXRlR3JvdXAgbmFtZT0ibm9kZUF0dHJpYnV0ZXMiPg0KKyAgICA8eHM6YXR0cmlidXRlR3JvdXAgcmVmPSJseng6b2JqZWN0QXR0cmlidXRlcyIvPg0KKyAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImRlZmF1bHRwbGFjZW1lbnQiIHR5cGU9InhzOnN0cmluZyIvPg0KKyAgPC94czphdHRyaWJ1dGVHcm91cD4NCisgIDx4czpncm91cCBuYW1lPSJub2RlRWxlbWVudHMiPg0KKyAgICA8eHM6c2VxdWVuY2U+DQorICAgICAgPHhzOmNob2ljZSBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIj4NCisgICAgICAgIDx4czpncm91cCByZWY9Imx6eDpvYmplY3RFbGVtZW50cyIvPg0KKyAgICAgICAgPHhzOmdyb3VwIHJlZj0ibHp4OmRhdGFwYXRoQ2hpbGRyZW4iLz4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0ibHp4OmRhdGEiLz4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0ibHp4OmRhdGFzZXQiLz4NCisgICAgICA8L3hzOmNob2ljZT4NCisgICAgPC94czpzZXF1ZW5jZT4NCisgIDwveHM6Z3JvdXA+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJkYXRhIj4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czpjb21wbGV4Q29udGVudD4NCisgICAgICAgIDx4czpleHRlbnNpb24gYmFzZT0ibHp4OmFueVhNTCI+DQorICAgICAgICAgIDx4czphdHRyaWJ1dGVHcm91cCByZWY9Imx6eDpkYXRhc2V0QXR0cmlidXRlcyIvPg0KKyAgICAgICAgPC94czpleHRlbnNpb24+DQorICAgICAgPC94czpjb21wbGV4Q29udGVudD4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czpjb21wbGV4VHlwZSBuYW1lPSJub2RlQ29udGVudCI+DQorICAgIDx4czpncm91cCByZWY9Imx6eDpub2RlRWxlbWVudHMiLz4NCisgICAgPHhzOmF0dHJpYnV0ZUdyb3VwIHJlZj0ibHp4Om5vZGVBdHRyaWJ1dGVzIi8+DQorICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0ibm9kZSIgdHlwZT0ibHp4Om5vZGVDb250ZW50Ii8+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJkYXRhcmVxdWVzdCIgdHlwZT0ibHp4Om5vZGVDb250ZW50Ii8+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJsYXlvdXQiPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOmNvbXBsZXhDb250ZW50Pg0KKyAgICAgICAgPHhzOmV4dGVuc2lvbiBiYXNlPSJseng6bm9kZUNvbnRlbnQiPg0KKyAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImxvY2tlZCIgdHlwZT0ibHp4OmJvb2xlYW5MaXRlcmFsIi8+DQorICAgICAgICA8L3hzOmV4dGVuc2lvbj4NCisgICAgICA8L3hzOmNvbXBsZXhDb250ZW50Pg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0ic3BsYXNoIj4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czpzZXF1ZW5jZT4NCisgICAgICAgIDx4czplbGVtZW50IG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiIG5hbWU9InZpZXciPg0KKyAgICAgICAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJuYW1lIiB0eXBlPSJ4czp0b2tlbiIvPg0KKyAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmVzb3VyY2UiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOmFueVVSSSIvPg0KKyAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0icmF0aW8iIHR5cGU9InhzOnN0cmluZyIvPg0KKyAgICAgICAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ieCIgZGVmYXVsdD0iMCIgdHlwZT0ibHp4Om51bWJlckxpdGVyYWwiLz4NCisgICAgICAgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InkiIGRlZmF1bHQ9IjAiIHR5cGU9Imx6eDpudW1iZXJMaXRlcmFsIi8+DQorICAgICAgICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJjZW50ZXIiIGRlZmF1bHQ9ImZhbHNlIiB0eXBlPSJseng6Ym9vbGVhbkxpdGVyYWwiLz4NCisgICAgICAgICAgPC94czpjb21wbGV4VHlwZT4NCisgICAgICAgIDwveHM6ZWxlbWVudD4NCisgICAgICA8L3hzOnNlcXVlbmNlPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iaGlkZWFmdGVyaW5pdCIgdHlwZT0ibHp4OmJvb2xlYW5MaXRlcmFsIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJwZXJzaXN0ZW50IiBkZWZhdWx0PSJmYWxzZSIgdHlwZT0ibHp4OmJvb2xlYW5MaXRlcmFsIi8+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJzY3JpcHQiPg0KKyAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0idHlwZSIgZGVmYXVsdD0iSmF2YXNjcmlwdCIgdHlwZT0ieHM6c3RyaW5nIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJ3aGVuIiBkZWZhdWx0PSJub3JtYWwiPg0KKyAgICAgICAgPHhzOnNpbXBsZVR5cGU+DQorICAgICAgICAgIDx4czpyZXN0cmljdGlvbiBiYXNlPSJ4czp0b2tlbiI+DQorICAgICAgICAgICAgPHhzOmVudW1lcmF0aW9uIHZhbHVlPSJub3JtYWwiLz4NCisgICAgICAgICAgICA8eHM6ZW51bWVyYXRpb24gdmFsdWU9ImltbWVkaWF0ZSIvPg0KKyAgICAgICAgICA8L3hzOnJlc3RyaWN0aW9uPg0KKyAgICAgICAgPC94czpzaW1wbGVUeXBlPg0KKyAgICAgIDwveHM6YXR0cmlidXRlPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3JjIiB0eXBlPSJ4czphbnlVUkkiLz4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9InN0eWxlc2hlZXQiPg0KKyAgICA8eHM6Y29tcGxleFR5cGUgbWl4ZWQ9InRydWUiPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ic3JjIiB0eXBlPSJ4czphbnlVUkkiLz4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9InByZWxvYWRyZXNvdXJjZSI+DQorICAgIDx4czpjb21wbGV4VHlwZT4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHR5cGU9InhzOnRva2VuIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyYXRpbyIgdHlwZT0ieHM6c3RyaW5nIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJzeW5jdG9sb2FkIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJseng6Ym9vbGVhbkxpdGVyYWwiLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImhpZGVhZnRlcmluaXQiIHVzZT0icmVxdWlyZWQiIHR5cGU9Imx6eDpib29sZWFuTGl0ZXJhbCIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0iY2VudGVyIiB1c2U9InJlcXVpcmVkIiB0eXBlPSJseng6Ym9vbGVhbkxpdGVyYWwiLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9InN5bmNocm9uaXplZCIgdHlwZT0ibHp4OmJvb2xlYW5MaXRlcmFsIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJsYXN0ZnJhbWUiIHR5cGU9Imx6eDpudW1iZXJMaXRlcmFsIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZXNvdXJjZSIgdHlwZT0ieHM6c3RyaW5nIi8+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJyZXNvdXJjZW5hbWUiIHR5cGU9InhzOnN0cmluZyIvPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0icGF0dGVybiIgdHlwZT0ieHM6c3RyaW5nIi8+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJhbGxvdyI+DQorICAgIDx4czpjb21wbGV4VHlwZT4NCisgICAgICA8eHM6c2VxdWVuY2U+DQorICAgICAgICA8eHM6ZWxlbWVudCBtaW5PY2N1cnM9IjAiIG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Imx6eDpwYXR0ZXJuIi8+DQorICAgICAgPC94czpzZXF1ZW5jZT4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9ImRlbnkiPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOnNlcXVlbmNlPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJseng6cGF0dGVybiIvPg0KKyAgICAgIDwveHM6c2VxdWVuY2U+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJzZWN1cml0eSI+DQorICAgIDx4czpjb21wbGV4VHlwZT4NCisgICAgICA8eHM6Y2hvaWNlIG1pbk9jY3Vycz0iMCIgbWF4T2NjdXJzPSJ1bmJvdW5kZWQiPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJseng6YWxsb3ciLz4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0ibHp4OmRlbnkiLz4NCisgICAgICA8L3hzOmNob2ljZT4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCis8L3hzOnNjaGVtYT4NCmRpZmYgLS1naXQgYS94ZG9jcy9BcGFjaGVEZXJieUNvbmZpZy54bWwgYi94ZG9jcy9BcGFjaGVEZXJieUNvbmZpZy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDljYTgzMQotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL0FwYWNoZURlcmJ5Q29uZmlnLnhtbApAQCAtMCwwICsxLDU4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0NCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorDQorICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKw0KKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgLS0+DQorPGRvY3VtZW50Pg0KKw0KKwk8cHJvcGVydGllcz4NCisJCTx0aXRsZT5BcGFjaGUgRGVyYnkgQ29uZmlndXJhdGlvbjwvdGl0bGU+DQorCQk8YXV0aG9yIGVtYWlsPSJzZWJhd2FnbmVyQGFwYWNoZS5vcmciPg0KKwkJCUFwYWNoZSBPcGVuTWVldGluZ3MgRG9jdW1lbnRhdGlvbiBUZWFtDQorCQk8L2F1dGhvcj4NCisJPC9wcm9wZXJ0aWVzPg0KKw0KKwk8Ym9keT4NCisJCTxzZWN0aW9uIG5hbWU9IkFwYWNoZSBEZXJieSBDb25maWd1cmF0aW9uIj4NCisNCisJCQk8cD4NCisJCQkJT3Blbk1lZXRpbmdzIGRlZmF1bHQgY29uZmlndXJhdGlvbiBpcyB0byB1c2UgQXBhY2hlIERlcmJ5Lg0KKwkJCTwvcD4NCisNCisJCQk8cD4NCisJCQkJSXQgaXMgcmVjb21tZW5kZWQgZm9yIHByb2R1Y3Rpb24gZW52aXJvbm1lbnRzIGFuZCBoaWdoDQorCQkJCWF2YWlsaWJpbGl0eSB0byBjaGFuZ2UgdG8gYW4gdXN1YWwgcmVsYXRpb25hbCBkYXRhYmFzZSBsaWtlIE15U1FMLA0KKwkJCQlQb3N0Z3JlcyBvciBEQjIuDQorCQkJPC9wPg0KKwkJCTxwPg0KKwkJCQlGb3IgbW9yZSBpbmZvcm1hdGlvbiBhYm91dCBBcGFjaGUgRGVyYnkgc2VlDQorCQkJCTxhIGhyZWY9Imh0dHA6Ly9kYi5hcGFjaGUub3JnL2RlcmJ5LyI+aHR0cDovL2RiLmFwYWNoZS5vcmcvZGVyYnkvPC9hPg0KKwkJCTwvcD4NCisNCisJCQk8cD4NCisJCQkJVGhlcmUgaXMgYSBzYW1wbGUgY29uZmlndXJhdGlvbiBmb3IgQXBhY2hlIERlcmJ5IHRoYXQgc2hpcHMgd2l0aA0KKwkJCQlldmVyeSByZWxlYXNlIGluOg0KKwkJCQk8YnIgLz4NCisJCQkJL3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvY2xhc3Nlcy9NRVRBLUlORi9kZXJieV9wZXJzaXN0ZW5jZS54bWwNCisJCQk8L3A+DQorDQorCQkJPHA+DQorCQkJCUlmIHlvdSBlbmNvdW50ZXIgaXNzdWVzLCB5b3UgY2FuIGRyb3AgdGhlIGRiIGFnYWluIGFuZCBkZWxldGUgdGhlDQorCQkJCWZpbGUgL3dlYmFwcHMvb3Blbm1lZXRpbmdzL2NvbmYvaW5zdGFsbC54bWwgYW5kIHRoZW4gcnVuIHRoZSB3ZWINCisJCQkJYmFzZWQgaW5zdGFsbGVyIGFnYWluDQorCQkJPC9wPg0KKw0KKwkJPC9zZWN0aW9uPg0KKw0KKwk8L2JvZHk+DQorDQorPC9kb2N1bWVudD4NCmRpZmYgLS1naXQgYS94ZG9jcy9BcGlDbGFzc2VzVGVtcGxhdGUudm0gYi94ZG9jcy9BcGlDbGFzc2VzVGVtcGxhdGUudm0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzNiYjQ0MwotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL0FwaUNsYXNzZXNUZW1wbGF0ZS52bQpAQCAtMCwwICsxLDQ0IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4NCis8IS0tDQorQ29weXJpZ2h0IDE5OTktMjAwNCBUaGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24NCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCit5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorDQoraHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorDQorVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KK2Rpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KK2xpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKy0tPg0KKw0KKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+DQorICAgIDwhLS0gR0VORVJBVEVEIEZJTEUsIERPIE5PVCBFRElULCBFRElUIFRIRSBURU1QTEFURSBJTlNURUFEISAtLT4NCisgICAgPCEtLSBNYWluIFBhZ2UgU2VjdGlvbiAtLT4NCisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPg0KKyAgICANCisgICAgIDxodG1sPg0KKyAgICAgICAgPGhlYWQ+DQorCQk8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1pc28tODg1OS0xIi8+DQorCQk8bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9Ik9wZW5NZWV0aW5ncyBUZWFtIj4NCisJCTxtZXRhIG5hbWU9ImVtYWlsIiBjb250ZW50PSJzZWJhd2FnbmVyQGFwYWNoZS5vcmciPg0KKwkJPHRpdGxlPk9wZW5NZWV0aW5ncyBBUEkgQ2xhc3NlczwvdGl0bGU+DQorCQk8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJvcGVubWVldGluZ3NfZG9jcy5jc3MiPg0KKyAgICAgICAgPC9oZWFkPg0KKwk8Ym9keT4NCisJCSNzZXQoICRmb28gPSAiLmh0bWwiICkNCisJDQorICAgICAgIDxkaXYgY2xhc3M9Im5hdmlnYXRpb24iPg0KKwkgICAjZm9yZWFjaCAoICRjbGFzcyBpbiAkY2xhc3NlcyApDQorICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICA8YSBocmVmPSIkY2xhc3MuZ2V0KCJuYW1lIikkZm9vIiB0YXJnZXQ9Il9QQVJFTlQiPjxiPiRjbGFzcy5nZXQoIm5hbWUiKTwvYj48L2E+PGJyLz4NCisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uX2NvbW1lbnQiPjxpID4kY2xhc3MuZ2V0KCJjb21tZW50Iik8L2k+PC9kaXY+DQorICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAjZW5kDQorICAgICAgICA8L2Rpdj4NCisJDQorCQ0KKwk8L2JvZHk+DQorCTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS94ZG9jcy9BcGlNZXRob2RzVGVtcGxhdGUudm0gYi94ZG9jcy9BcGlNZXRob2RzVGVtcGxhdGUudm0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGYwN2Q1MAotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL0FwaU1ldGhvZHNUZW1wbGF0ZS52bQpAQCAtMCwwICsxLDE0OSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+DQorPCEtLQ0KK0NvcHlyaWdodCAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uDQorTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQoreW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKw0KK2h0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKw0KK1VubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCitkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KK1NlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCitsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCistLT4NCisNCisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPg0KKyAgICA8IS0tIEdFTkVSQVRFRCBGSUxFLCBETyBOT1QgRURJVCwgRURJVCBUSEUgVEVNUExBVEUgSU5TVEVBRCEgLS0+DQorICAgIDwhLS0gTWFpbiBQYWdlIFNlY3Rpb24gLS0+DQorICAgIDwhLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSAtLT4NCisgICAgDQorICAgICA8aHRtbD4NCisgICAgICAgIDxoZWFkPg0KKwkJPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSIvPg0KKwkJPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSJPcGVuTWVldGluZ3MgVGVhbSI+DQorCQk8bWV0YSBuYW1lPSJlbWFpbCIgY29udGVudD0ic2ViYXdhZ25lckBhcGFjaGUub3JnIj4NCisJCTx0aXRsZT5PcGVuTWVldGluZ3MgQVBJIE1ldGhvZHM8L3RpdGxlPg0KKwkJPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0ib3Blbm1lZXRpbmdzX2RvY3MuY3NzIj4NCisgICAgICAgIDwvaGVhZD4NCisJPGJvZHk+DQorCQ0KKwkJPGgzPkF2YWlsYWJsZSBXZWJTZXJ2aWNlczo8L2gzPg0KKwkNCisJCTxpZnJhbWUgc3JjPSJXZWJzZXJ2aWNlSW5kZXguaHRtbCIgd2lkdGg9IjEwMCUiIGhlaWdodD0iMjEwIiBuYW1lPSJXZWJzZXJ2aWNlSW5kZXguaHRtbCINCisJCQlzY3JvbGxpbmc9Im5vIiBtYXJnaW5oZWlnaHQ9IjAiIG1hcmdpbndpZHRoPSIwIiBmcmFtZWJvcmRlcj0iMCI+DQorCQkgIDxwPllvdXIgQnJvd3NlciBkb2VzIG5vdCBzdXBwb3J0IGZyYW1lcyAuLi48L3A+DQorCQk8L2lmcmFtZT4NCisJCQ0KKwkJPGhyIC8+DQorCQ0KKwkgICA8aDM+V2ViU2VydmljZTogJHdlYlNlcnZpY2VOYW1lPC9oMz4NCisJICAgPHA+JGNsYXNzQ29tbWVudDxwPg0KKwkgICA8cD5XU0RMIHNhbXBsZSBVcmw6IDxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvJHdlYlNlcnZpY2VOYW1lP3dzZGwiPmh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3Mvc2VydmljZXMvJHdlYlNlcnZpY2VOYW1lP3dzZGw8L2E+PHA+DQorCQ0KKwk8IS0tIExpbmtzIHRvIE1ldGhvZHMgLS0+DQorCSAgIDxoMz5JbmRleCBvZiBNZXRob2RzIGF2YWlsYWJsZSBpbiAkd2ViU2VydmljZU5hbWU8L2gzPg0KKwkgICANCisgICAgICAgPGRpdiBjbGFzcz0ibmF2aWdhdGlvbiI+DQorCSAgICNmb3JlYWNoICggJG1ldGhvZCBpbiAkbWV0aG9kcyApDQorICAgICAgICAgICAgI2lmICgkbWV0aG9kLmlzUHVibGljKCkpIA0KKyAgICAgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICA8YSBocmVmPSIjJG1ldGhvZC5uYW1lKCkiPjxiPiRtZXRob2QubmFtZSgpPC9iPjwvYT48YnIvPg0KKyAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJuYXZpZ2F0aW9uX2NvbW1lbnQiPjxpID4kbWV0aG9kLmNvbW1lbnRUZXh0KCk8L2k+PC9kaXY+DQorICAgICAgICAgICAgICAgIDwvZGl2Pg0KKyAgICAgICAgICAgI2VuZA0KKyAgICAgICAgI2VuZA0KKyAgICAgICAgPC9kaXY+DQorCSAgIA0KKwkgICAgPGgzPk1ldGhvZHMgRGV0YWlscyBpbiAkd2ViU2VydmljZU5hbWU8L2gzPg0KKwkNCisJCSNmb3JlYWNoICggJG1ldGhvZCBpbiAkbWV0aG9kcyApDQorCQkgICAgI2lmICgkbWV0aG9kLmlzUHVibGljKCkpIA0KKwkJICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kIj4NCisJCSAgICAgICAgPGRpdiBjbGFzcz0ibWV0aG9kX2hlYWRlciI+DQorCQkgICAgICAgIDxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjEwcHgiPg0KKyAgICAJCQk8YSBuYW1lPSIkbWV0aG9kLm5hbWUoKSIgPjxiPiRtZXRob2QubmFtZSgpPC9iPjwvYT4NCisgICAgCQkJPC9kaXY+DQorICAgIAkJCTwvZGl2Pg0KKyAgICAJCQkNCisgICAgCQkJTWV0aG9kOiA8aT4kbWV0aG9kLm5hbWUoKSAoDQorICAgIAkJCSNzZXQgKCRpbmRleCA9IDApIA0KKyAgICAJCQkjZm9yZWFjaCAoICRwYXJhbWV0ZXIgaW4gJG1ldGhvZC5wYXJhbWV0ZXJzKCkgKQ0KKyAgICAJCQkgICAjaWYgKCRpbmRleCA+IDApIA0KKyAgICAJCQkgICAgICwgDQorICAgIAkJCSAgICNlbmQNCisgICAgCQkJICAgJHBhcmFtZXRlci50eXBlKCkuc2ltcGxlVHlwZU5hbWUoKSAkcGFyYW1ldGVyLm5hbWUoKQ0KKyAgICAJCQkgICAjc2V0ICgkaW5kZXggPSAkaW5kZXgrMSkgDQorICAgIAkJCSNlbmQNCisgICAgCQkJKQ0KKyAgICAJCQk8L2k+PGJyLz4NCisgICAgCQkJPHA+DQorICAgIAkJCSAgJG1ldGhvZC5jb21tZW50VGV4dCgpDQorICAgIAkJCTwvcD4NCisgICAgCQkJPHA+DQorICAgICAgICAgICAgICAgICAgUmV0dXJuIFR5cGU6ICRtZXRob2QucmV0dXJuVHlwZSgpDQorICAgICAgICAgICAgICAgIDwvcD4NCisgICAgCQkJPHA+UGFyYW1zOjwvcD4NCisgICAgCQkJI2lmICggJG1ldGhvZC5wYXJhbVRhZ3MoKS5zaXplKCkgIT0gJG1ldGhvZC5wYXJhbWV0ZXJzKCkuc2l6ZSgpICkgDQorICAgIAkJCQk8Yj5XYXJuaW5nOjwvYj48aT4gUGFyYW1zIGluIHRoaXMgbWV0aG9kIGRvIG5vdCBzZWVtIHRvIGJlIGNvcnJlY3RseSBkb2N1bWVudGF0ZWQ8L2k+DQorICAgIAkJCQk8YnIvPjxici8+DQorICAgIAkJCSNlbmQNCisgICAgCQkJDQorICAgIAkJCSNpZiAoJG1ldGhvZC5wYXJhbVRhZ3MoKS5zaXplKCkgPiAwKSANCisJICAgIAkJCTx0YWJsZSBydWxlcz0iYWxsIiBib3JkZXI9IjEiPg0KKwkgICAgCQkJICAgPHRoZWFkPg0KKwkgICAgCQkJICAgPHRyPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPlR5cGU8L3RoPg0KKwkgICAgCQkJICAgICA8dGggd2lkdGg9IjIwMCIgYWxpZ249ImxlZnQiPkZpZWxkbmFtZTwvdGg+DQorCSAgICAJCQkgICAgIDx0aCB3aWR0aD0iNDAwIiBhbGlnbj0ibGVmdCI+RGVzY3JpcHRpb248L3RoPg0KKwkgICAgCQkJICAgPC90cj4NCisJICAgIAkJCSAgIDwvdGhlYWQ+DQorCSAgICAJCQkgICA8dGJvZHk+DQorCSAgICAJCQkgICAjc2V0ICgkaW5kZXggPSAwKSANCisJICAgIAkJCSAgICNmb3JlYWNoICggJHBhcmFtZXRlciBpbiAkbWV0aG9kLnBhcmFtVGFncygpICkNCisJICAgIAkJCSAgIDx0cj4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4NCisJICAgICAgICAgICAgICAgICAgICAgCSNpZiAoJG1ldGhvZC5wYXJhbWV0ZXJzKCkuc2l6ZSgpIDw9ICRpbmRleCkgDQorCSAgICAgICAgICAgICAgICAgICAgIAkJJGluZGV4IERvY2xldCBQYXJhbSBNaXNtYXRjaDogZml4IEphdmFEb2NzIGluIHRoaXMgTWV0aG9kIQ0KKwkgICAgICAgICAgICAgICAgICAgICAJI2Vsc2UNCisJICAgICAgICAgICAgICAgICAgICAgCQkkbWV0aG9kLnBhcmFtZXRlcnMoKS5nZXQoJGluZGV4KS50eXBlKCkuc2ltcGxlVHlwZU5hbWUoKQ0KKwkgICAgICAgICAgICAgICAgICAgICAJI2VuZCANCisJICAgICAgICAgICAgICAgICAgICAgPC90ZD4NCisJICAgICAgICAgICAgICAgICAgICAgPHRkIHZhbGlnbj0idG9wIj4kcGFyYW1ldGVyLnBhcmFtZXRlck5hbWUoKTwvdGQ+DQorCSAgICAgICAgICAgICAgICAgICAgIDx0ZCB2YWxpZ249InRvcCI+JHBhcmFtZXRlci5wYXJhbWV0ZXJDb21tZW50KCk8L3RkPg0KKwkgICAgICAgICAgICAgICAgICAgPC90cj4NCisJICAgICAgICAgICAgICAgICAgIA0KKwkgICAgICAgICAgICAgICAgICAgI3NldCAoJGluZGV4ID0gJGluZGV4KzEpIA0KKwkgICAgICAgICAgICAgICAgICAgI2VuZA0KKwkgICAgICAgICAgICAgICAgICAgPC90Ym9keT4NCisJICAgIAkJCTwvdGFibGU+DQorICAgIAkJCSNlbHNlDQorICAgIAkJCQk8aT5ObyBQYXJhbXM8L2k+DQorICAgIAkJCSNlbmQNCisgICAgCQkJPGJyLz4NCisgICAgCQkJUkVTVCBTYW1wbGUgQ2FsbC9VUkw6PGJyLz4NCisgICAgCQkJI3NldCAoJGxpbmsgPSAiaHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy8iKyR3ZWJTZXJ2aWNlTmFtZSsiLyIrJG1ldGhvZC5uYW1lKCkpIA0KKyAgICAJCQkjc2V0ICgkZGlzcGxheUxpbmsgPSAkbGluaykNCisgICAgCQkJI3NldCAoJGluZGV4ID0gMCkNCisgICAgCQkJI2ZvcmVhY2ggKCAkcGFyYW1ldGVyIGluICRtZXRob2QucGFyYW1ldGVycygpICkNCisgICAgCQkJCSNpZiAoJGluZGV4ID09IDApDQorICAgIAkJCQkJI3NldCAoJGxpbmsgPSAkbGluaysiPyIpDQorICAgIAkJCQkJI3NldCAoJGRpc3BsYXlMaW5rID0gJGxpbmspDQorICAgIAkJCQkjZWxzZQ0KKyAgICAJCQkJCSNzZXQgKCRsaW5rID0gJGxpbmsrIiYiKSANCisgICAgCQkJCQkjc2V0ICgkZGlzcGxheUxpbmsgPSAkZGlzcGxheUxpbmsgKyAiJmFtcDsiKQ0KKyAgICAJCQkJI2VuZA0KKyAgICAJCQkJI3NldCAoJGxpbmsgPSAkbGluayArICRwYXJhbWV0ZXIubmFtZSgpKyI9VkFMVUUiKSANCisgICAgCQkJCSNzZXQgKCRkaXNwbGF5TGluayA9ICRkaXNwbGF5TGluayArICRwYXJhbWV0ZXIubmFtZSgpKyI9VkFMVUUiKSANCisgICAgCQkJCSNzZXQgKCRpbmRleCA9ICRpbmRleCsxKQ0KKwkJCQkjZW5kDQorCQkJCTxhIGhyZWY9IiRsaW5rIj4kZGlzcGxheUxpbms8L2E+DQorICAgIAkJICA8L2Rpdj4NCisgICAgCSAgICNlbmQNCisJCSNlbmQNCisJDQorCQ0KKwk8L2JvZHk+DQorPC9odG1sPg0KKw0KZGlmZiAtLWdpdCBhL3hkb2NzL0JpdHJpeFBsdWdpbi54bWwgYi94ZG9jcy9CaXRyaXhQbHVnaW4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkYWNlNDIKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9CaXRyaXhQbHVnaW4ueG1sCkBAIC0wLDAgKzEsNDkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPCEtLQ0KKyAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisNCisgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorDQorICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAtLT4NCis8ZG9jdW1lbnQ+DQorCTxwcm9wZXJ0aWVzPg0KKwkJPHRpdGxlPkJpdHJpeCBQbHVnaW48L3RpdGxlPg0KKwkJPGF1dGhvciBlbWFpbD0ic29sb21heEBhcGFjaGUub3JnIj4NCisJCQlPcGVuTWVldGluZ3MgVGVhbQ0KKwkJPC9hdXRob3I+DQorCTwvcHJvcGVydGllcz4NCisJPGJvZHk+DQorCQk8c2VjdGlvbiBuYW1lPSJPcGVuTWVldGluZ3MgUGx1Z2luIGZvciBCaXRyaXgiPg0KKwkJCTxwPg0KKwkJCQlDdXJyZW50IERldmVsb3BtZW50IFNuYXBzaG90cyBmb3IgdGVzdGluZyBjYW4gYmUgY3JlYXRlZCBmcm9tIHRoZSBzb3VyY2VzOg0KKwkJCQk8YSBocmVmPSJodHRwczovL3N2bi5jb2Rlc3BvdC5jb20vYS9hcGFjaGUtZXh0cmFzLm9yZy9vcGVubWVldGluZ3MtYml0cml4LXBsdWdpbi90cnVuayI+aGVyZTwvYT4NCisJCQkJLg0KKwkJCTwvcD4JCQkNCisJCTwvc2VjdGlvbj4NCisJCTxzZWN0aW9uIG5hbWU9IkZlYXR1cmVzIj4NCisJCQk8cD5UaGUgcGx1Z2luIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgZmVhdHVyZXM6IDwvcD4NCisJCQk8dWw+DQorCQkJCTxsaT5FbnRlciB2aWRlb2NvbmZlcmVuY2Ugcm9vbXMgZnJvbSBCaXRyaXggKGh0dHA6Ly93d3cuMWMtYml0cml4LnJ1Lyk6IDwvbGk+DQorCQkJPC91bD4NCisJCTwvc2VjdGlvbj4NCisJCTxzZWN0aW9uIG5hbWU9IkNvbmZpZ3VyYXRpb24iPgkJCQ0KKwkJCTxkaXY+DQorCQkJCTxiPk9wZW5NZWV0aW5ncyBCaXRyaXggUGx1Z2luIEluc3RhbGxhdGlvbjwvYj48YnIvPg0KKwkJCQk8b2w+DQorCQkJCQk8bGk+QnVpbGQgcGx1Z2luIGZyb20gc291cmNlczwvbGk+DQorCQkJCQk8bGk+VW5wYWNrIGl0IGludG8gYml0cml4L21vZHVsZXM8L2xpPg0KKwkJCQkJPGxpPkluc3RhbGwgdmlhIEFkbWluPC9saT4NCisJCQkJCTxsaT5BZGQgT1Blbm1lZXRpbmdzIGNvbXBvbmVudCB0byBhbnkgcGFnZS48L2xpPg0KKwkJCQk8L29sPiAgICAgICAgICAgICAgDQorCQkJPC9kaXY+DQorCQk8L3NlY3Rpb24+DQorCTwvYm9keT4NCisNCis8L2RvY3VtZW50PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3hkb2NzL0J1aWxkSW5zdHJ1Y3Rpb25zLnhtbCBiL3hkb2NzL0J1aWxkSW5zdHJ1Y3Rpb25zLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDM0ZGI4Ci0tLSAvZGV2L251bGwKKysrIGIveGRvY3MvQnVpbGRJbnN0cnVjdGlvbnMueG1sCkBAIC0wLDAgKzEsMzM4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0NCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorDQorICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKw0KKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgLS0+DQorPGRvY3VtZW50Pg0KKw0KKwk8cHJvcGVydGllcz4NCisJCTx0aXRsZT5CdWlsZCBpbnN0cnVjdGlvbnM8L3RpdGxlPg0KKwkJPGF1dGhvciBlbWFpbD0ic2ViYXdhZ25lckBhcGFjaGUub3JnIj4NCisJCQlPcGVuTWVldGluZ3MgVGVhbQ0KKwkJPC9hdXRob3I+DQorCTwvcHJvcGVydGllcz4NCisNCisJPGJvZHk+DQorDQorCQk8c2VjdGlvbiBuYW1lPSJOaWdodGx5IEJ1aWxkcyI+DQorDQorCQkJPHA+DQorCQkJCVlvdSBjYW4gZmluZCBOaWdodGx5IEJ1aWxkcyBvZiB0aGUgc29mdHdhcmUgYXQ6DQorCQkJCTxhIGhyZWY9Imh0dHBzOi8vYnVpbGRzLmFwYWNoZS5vcmcvdmlldy9NLVIvdmlldy9PcGVuTWVldGluZ3MvIg0KKwkJCQkJcmVsPSJub2ZvbGxvdyIgdGFyZ2V0PSJfQkxBTksiPg0KKwkJCQkJaHR0cHM6Ly9idWlsZHMuYXBhY2hlLm9yZy92aWV3L00tUi92aWV3L09wZW5NZWV0aW5ncy8NCisJCQkJPC9hPg0KKwkJCTwvcD4NCisNCisJCTwvc2VjdGlvbj4NCisNCisJCTxzZWN0aW9uIG5hbWU9IkhvdyB0byBCdWlsZCBhIERpc3RyaWJ1dGlvbiI+DQorDQorCQkJPGRpdj4NCisJCQkJPHA+VG8gYnVpbGQgYSBiaW5hcnkgcmVsZWFzZSBvZiBPcGVuTWVldGluZ3MgeW91IG5lZWQ6IDwvcD4NCisJCQkJPHVsPg0KKwkJCQkJPGxpPlN1biBKREs2PC9saT4NCisJCQkJCTxsaT5BcGFjaGUgQU5UIChtaW5pbXVtKSAxLjguMzwvbGk+DQorCQkJCQk8bGk+DQorCQkJCQkJU1ZOIENvbW1hbmQgbGluZSBjbGllbnQgKFN1YnZlcnNpb24gMS43IHJlcXVpcmVkISkNCisJCQkJCQk8YSBocmVmPSJodHRwOi8vc3VidmVyc2lvbi5hcGFjaGUub3JnL3BhY2thZ2VzLmh0bWwiIHRhcmdldD0iX0JMQU5LIg0KKwkJCQkJCQlyZWw9Im5vZm9sbG93Ij5odHRwOi8vc3VidmVyc2lvbi5hcGFjaGUub3JnL3BhY2thZ2VzLmh0bWw8L2E+DQorCQkJCQk8L2xpPg0KKwkJCQk8L3VsPg0KKwkJCTwvZGl2Pg0KKw0KKwkJCTxwPkdldCB0aGUgc291cmNlOiA8L3A+DQorCQkJPGRpdiBjbGFzcz0ieG1sY29kZSI+DQorCQkJCXN2biBjaGVja291dA0KKwkJCQlodHRwczovL3N2bi5hcGFjaGUub3JnL3JlcG9zL2FzZi9vcGVubWVldGluZ3MvdHJ1bmsvc2luZ2xld2ViYXBwLw0KKwkJCTwvZGl2Pg0KKwkJCTxwPlJ1biB0aGUgY29tbWFuZDogPC9wPg0KKwkJCTxkaXYgY2xhc3M9InhtbGNvZGUiPg0KKwkJCQlhbnQNCisJCQk8L2Rpdj4NCisJCQk8cD5UaGVyZSBpcyBubyBuZWVkIHRvIGNvbXBpbGUgdGhlIGNsaWVudCBhZGRpdGlvbmFsbHkhIFRoZSBhbnQgdGFzaw0KKwkJCQlkb2VzIGl0IGFsbCEgWW91IHdpbGwgZmluZCBhIGRpcmVjdG9yeSBkaXN0IHRoYXQgY29udGFpbnMNCisJCQkJT3Blbk1lZXRpbmdzIGFuZCBhIHJlZDUtc2VydmVyLg0KKwkJCTwvcD4NCisJCQk8cD5UbyBjb21waWxlIHRoZSBjbGllbnQgeW91IGNhbiBhbHNvIHVzZSBhbnQ6IDwvcD4NCisJCQk8ZGl2IGNsYXNzPSJ4bWxjb2RlIj4NCisJCQkJYW50DQorCQkJCTxzcGFuIHN0eWxlPSJtYXJnaW4tbGVmdDogMjAwcHg7Ij4jIGNvbXBpbGVzIGEgY29tcGxldGUgcGFja2FnZSBpbnRvIHRoZSBmb2xkZXIgZGlzdA0KKwkJCQk8L3NwYW4+DQorCQkJCTxiciAvPg0KKwkJCQlhbnQgY29tcGlsZS5sYXN6bG8ubWFpbg0KKwkJCQk8c3BhbiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDcwcHg7Ij4jIGNvbXBpbGVzIHRoZSBjbGllbnQgaW50byBtYWluLmFzMy5zd2YxMC5zd2YgYW5kDQorCQkJCQltYWluLnN3Zjguc3dmPC9zcGFuPg0KKwkJCQk8YnIgLz4NCisJCQkJYW50IGNvbXBpbGUubGFzemxvLm1haW4uZGVidWcNCisJCQkJPHNwYW4gc3R5bGU9Im1hcmdpbi1sZWZ0OiAzMHB4OyI+IyBjb21waWxlcyB0aGUgZGVidWctY2xpZW50IGludG8NCisJCQkJCW1haW5kZWJ1Zy5hczMuc3dmMTAuc3dmIGFuZCBtYWluZGVidWcuc3dmOC5zd2YNCisJCQkJPC9zcGFuPg0KKwkJCQk8YnIgLz4NCisJCQkJYW50IC1EZGI9Jmx0O25hbWUgb2YgREImZ3Q7DQorCQkJCTxzcGFuIHN0eWxlPSJtYXJnaW4tbGVmdDogNTBweDsiPiMgd2lsbCBjb3B5ICZsdDtuYW1lIG9mIERCJmd0O19wZXJzaXN0ZW5zZS54bWwgdG8NCisJCQkJCXBlcnNpc3RlbnNlLnhtbA0KKwkJCQk8L3NwYW4+DQorCQkJCTxiciAvPg0KKwkJCQk8c3BhbiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDIzMHB4OyI+Iyhmb3IgZXguIGFudCAtRGRiPW15c3FsIHdpbGwgc2V0IG15c3FsIGFzIGRlZmF1bHQNCisJCQkJCURCKQ0KKwkJCQk8L3NwYW4+DQorCQkJPC9kaXY+DQorCQkJPHA+VG8gY29tcGlsZSBqdXN0IHRoZSBvcGVubWVldGluZ3MgSkFSIGZpbGU6IDwvcD4NCisJCQk8ZGl2IGNsYXNzPSJ4bWxjb2RlIj4NCisJCQkJYW50IGphci5vbmx5DQorCQkJPC9kaXY+DQorCQkJPHA+DQorCQkJCVRvIHJ1biBKdW5pdCB0ZXN0cyB1c2luZyBBTlQgc2VlDQorCQkJCTxhIGhyZWY9IkpVbml0VGVzdGluZy5odG1sIj5KVW5pdFRlc3Rpbmc8L2E+DQorCQkJPC9wPg0KKwkJPC9zZWN0aW9uPg0KKw0KKwkJPHNlY3Rpb24gbmFtZT0iUnVuLCBEZXZlbG9wLCBUZXN0Ij4NCisNCisJCQk8cD4NCisJCQkJVG8gZGV2ZWxvcCBvciBidWlsZCBPcGVuTWVldGluZ3MgeW91IGNoZWNrb3V0IHRoZSBzb3VyY2UgYXMgRWNsaXBzZQ0KKwkJCQlwcm9qZWN0LiBZb3UgbmVlZCB0aGUgU3ViY2xpcHNlIG9yIFN1YnZlcnNpdmUgUGx1Z2luIGZvciBFY2xpcHNlLiBJZg0KKwkJCQl5b3UganVzdCBuZWVkIHRvIGNoYW5nZSAzIGxpbmVzIG9mIGNvZGUgdGhlbiB5b3VyIHByb2JhYmx5IGJldHRlcg0KKwkJCQlzd2l0Y2ggdG8NCisJCQkJPGEgaHJlZj0iI0hvd190b19idWlsZF9hX2Rpc3RyaWJ1dGlvbiIgcmVsPSJub2ZvbGxvdyI+SG93IHRvIGJ1aWxkIGENCisJCQkJCWRpc3RyaWJ1dGlvbg0KKwkJCQk8L2E+DQorCQkJCS4NCisJCQk8L3A+DQorDQorCQkJPHN1YnNlY3Rpb24gbmFtZT0iU3RlcDEgLSBHZXQgcmVxdWlyZWQgU29mdHdhcmUiPg0KKw0KKwkJCQk8cD5UbyBkZXZlbG9wIE9wZW5NZWV0aW5ncyB5b3UgbmVlZCBhdCBsZWFzdDogPC9wPg0KKwkJCQk8dWw+DQorCQkJCQk8bGk+RWNsaXBzZSBpbiBhIHVwIHRvIGRhdGUgY29weSBhbmQgU3VuIEpESzYgPC9saT4NCisJCQkJCTxsaT5BcGFjaGUgQU5UIChtaW5pbXVtKSAxLjguMzwvbGk+DQorCQkJCQk8bGk+DQorCQkJCQkJU3ViY2xpcHNlIDEuOCAoU3VidmVyc2lvbiAxLjcgcmVxdWlyZWQhKQ0KKwkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9zdWJjbGlwc2UudGlncmlzLm9yZy8iIHRhcmdldD0iX0JMQU5LIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vc3ViY2xpcHNlLnRpZ3Jpcy5vcmcvDQorCQkJCQkJPC9hPg0KKwkJCQkJPC9saT4NCisJCQkJCTxsaT4NCisJCQkJCQlTVk4gQ29tbWFuZCBsaW5lIGNsaWVudCAoU3VidmVyc2lvbiAxLjcgcmVxdWlyZWQhKQ0KKwkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9zdWJ2ZXJzaW9uLmFwYWNoZS5vcmcvcGFja2FnZXMuaHRtbCIgdGFyZ2V0PSJfQkxBTksiDQorCQkJCQkJCXJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9zdWJ2ZXJzaW9uLmFwYWNoZS5vcmcvcGFja2FnZXMuaHRtbDwvYT4NCisJCQkJCTwvbGk+DQorCQkJCQk8bGk+U3ByaW5nIElERSBmb3IgRWNsaXBzZSAoaW5zdGFsbGFibGUgdmlhIEhlbHAgJmd0OyBFY2xpcHNlDQorCQkJCQkJTWFya2V0cGxhY2UpDQorCQkJCQk8L2xpPg0KKwkJCQkJPGxpPg0KKwkJCQkJCUFwYWNoZSBJdnlERSYjODQ4MjsgRm9yIEVjbGlwc2UgKGluc3RhbGxhYmxlIHZpYSBIZWxwICZndDsgSW5zdGFsbA0KKwkJCQkJCU5ldyBTb2Z0d2FyZSkNCisJCQkJCQlVUkw6IGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9kaXN0L2FudC9pdnlkZS91cGRhdGVzaXRlDQorCQkJCQkJZGV0YWlsZWQgc3RlcHMgY2FuIGJlIGZvdW5kIGhlcmU6DQorCQkJCQkJPGEgaHJlZj0iaHR0cDovL2FudC5hcGFjaGUub3JnL2l2eS9pdnlkZS9kb3dubG9hZC5jZ2kiIHRhcmdldD0iX0JMQU5LIg0KKwkJCQkJCQlyZWw9Im5vZm9sbG93Ij5odHRwOi8vYW50LmFwYWNoZS5vcmcvaXZ5L2l2eWRlL2Rvd25sb2FkLmNnaTwvYT4NCisJCQkJCTwvbGk+DQorCQkJCQk8bGk+TXlTUUwgKG9yIFBvc3RncmVzLCBvciBvdGhlciBEYXRhYmFzZXMgc3VwcG9ydGVkIGJ5IG9wZW5KUEEpDQorCQkJCQkJYXJlIG9wdGlvbmFsbHkgYnV0IGhhbmR5IHRvIGhhdmUgdGhlbQ0KKwkJCQkJPC9saT4NCisJCQkJPC91bD4NCisNCisJCQk8L3N1YnNlY3Rpb24+DQorDQorCQkJPHN1YnNlY3Rpb24gbmFtZT0iU3RlcDIgLSBEb3dubG9hZCB0aGUgU291cmNlIj4NCisNCisJCQkJPHA+QWR2YW5jZWQgVXNlcnM6IENoZWNrIG91dCB0aGUgQ29kZSBmcm9tIHRoZSBSZXBvc2l0b3J5IGFzIGENCisJCQkJCUphdmENCisJCQkJCXByb2plY3QgaW50byBFY2xpcHNlLg0KKwkJCQk8L3A+DQorCQkJCTxwPg0KKwkJCQkJVVJMOg0KKwkJCQkJPGENCisJCQkJCQlocmVmPSJodHRwczovL3N2bi5hcGFjaGUub3JnL3JlcG9zL2FzZi9vcGVubWVldGluZ3MvdHJ1bmsvc2luZ2xld2ViYXBwLyI+DQorCQkJCQkJaHR0cHM6Ly9zdm4uYXBhY2hlLm9yZy9yZXBvcy9hc2Yvb3Blbm1lZXRpbmdzL3RydW5rL3NpbmdsZXdlYmFwcC8NCisJCQkJCTwvYT4NCisJCQkJPC9wPg0KKwkJCQk8cD5UbyBkb3dubG9hZCB0aGUgcmVxdWlyZWQgSkFScyBmb3IgYnVpbGRpbmcgYW5kIGRldmVsb3BpbmcNCisJCQkJCU9wZW5NZWV0aW5ncyB5b3UgbmVlZCB0byBydW4gdGhlIEFOVCBjb21hbmQ6DQorCQkJCTwvcD4NCisJCQkJPGRpdiBjbGFzcz0ieG1sY29kZSI+DQorCQkJCQlhbnQgLURkYj0mbHQ7eW91cl9EQiZndDsgcHJlcGFyZS1lY2xpcHNlDQorCQkJCTwvZGl2Pg0KKwkJCQk8cD5BZnRlciB0aGUgQU5UIGNvbW1hbmQgeW91IG5lZWQgdG8gcHJlc3MgRjUgYW5kIHJlYnVpbGQgdGhlDQorCQkJCQlwcm9qZWN0IGZyb20gaW5zaWRlIEVjbGlwc2UNCisJCQkJPC9wPg0KKwkJCQk8cD5TdGVwLUJ5LVN0ZXA6IDwvcD4NCisJCQkJPHA+MSkgU3RhcnQgRWNsaXBzZSA8L3A+DQorCQkJCTxwPg0KKwkJCQkJMikgQ2hhbmdlIFBlcnNwZWN0aXZlIHRvIFNWTiBSZXBvc2l0b3J5IEV4cGxvcmluZzoNCisJCQkJCTxiciAvPg0KKwkJCQkJPGJyIC8+DQorCQkJCQk8YSBjbGFzcz0iZmFuY3lib3gtYnV0dG9ucyIgaHJlZj0iaW1hZ2VzL2NoZWNrb3V0XzEucG5nIj4NCisJCQkJCQk8aW1nIHNyYz0iaW1hZ2VzL2NoZWNrb3V0XzEucG5nIiBhbHQ9IiIgd2lkdGg9IjQwMCIgaGVpZ2h0PSIyODkiIC8+DQorCQkJCQk8L2E+DQorDQorCQkJCTwvcD4NCisJCQkJPHA+DQorCQkJCQkzKSBTZWxlY3QgU1ZOIFJlcG9zaXRvcnkgRXhwbG9yaW5nIGFuZCBjbGljayBvay4NCisJCQkJCTxiciAvPg0KKwkJCQkJPGJyIC8+DQorCQkJCQk8YSBjbGFzcz0iZmFuY3lib3gtYnV0dG9ucyIgaHJlZj0iaW1hZ2VzL2NoZWNrb3V0XzIucG5nIj4NCisJCQkJCQk8aW1nIHNyYz0iaW1hZ2VzL2NoZWNrb3V0XzIucG5nIiBhbHQ9IiIgd2lkdGg9IjMwNCIgaGVpZ2h0PSI0MTciIC8+DQorCQkJCQk8L2E+DQorCQkJCTwvcD4NCisJCQkJPHA+DQorCQkJCQk0KSBBIG5ldyBEaWFsb2cgaW4gRWNsaXBzZSBvcGVucw0KKwkJCQkJPHN0cm9uZz5TVk4gUmVwb3NpdG9yaWVzPC9zdHJvbmc+DQorCQkJCQk8YnIgLz4NCisJCQkJCTxiciAvPg0KKwkJCQkJPGEgY2xhc3M9ImZhbmN5Ym94LWJ1dHRvbnMiIGhyZWY9ImltYWdlcy9jaGVja291dF8zLnBuZyI+DQorCQkJCQkJPGltZyBzcmM9ImltYWdlcy9jaGVja291dF8zLnBuZyIgYWx0PSIiIHdpZHRoPSI0NjAiIGhlaWdodD0iMTAyIiAvPg0KKwkJCQkJPC9hPg0KKwkJCQk8L3A+DQorCQkJCTxwPg0KKwkJCQkJNSkgQ2xpY2sgb24gdGhlIGljb24gd2l0aCB0aGUgcGx1cyBpbiB0aGUgdG9wIHJpZ2h0IGNvcm5lciBpbiB0aGUNCisJCQkJCVNWTiBSZXBvc2l0b3J5IERpYWxvZw0KKwkJCQkJPGJyIC8+DQorCQkJCQk8YnIgLz4NCisJCQkJCTxhIGNsYXNzPSJmYW5jeWJveC1idXR0b25zIiBocmVmPSJpbWFnZXMvY2hlY2tvdXRfNC5wbmciPg0KKwkJCQkJCTxpbWcgc3JjPSJpbWFnZXMvY2hlY2tvdXRfNC5wbmciIGFsdD0iIiB3aWR0aD0iNTciIGhlaWdodD0iMzgiIC8+DQorCQkJCQk8L2E+DQorCQkJCTwvcD4NCisJCQkJPHA+DQorCQkJCQk2KSBBZGQgdGhlIFVSTA0KKwkJCQkJPGENCisJCQkJCQlocmVmPSJodHRwczovL3N2bi5hcGFjaGUub3JnL3JlcG9zL2FzZi9vcGVubWVldGluZ3MvdHJ1bmsvc2luZ2xld2ViYXBwLyINCisJCQkJCQlyZWw9Im5vZm9sbG93Ij5odHRwczovL3N2bi5hcGFjaGUub3JnL3JlcG9zL2FzZi9vcGVubWVldGluZ3MvdHJ1bmsvc2luZ2xld2ViYXBwLw0KKwkJCQkJPC9hPg0KKwkJCQkJYW5kIGNsaWNrIEZpbmlzaA0KKwkJCQkJPGJyIC8+DQorCQkJCQk8YnIgLz4NCisJCQkJCTxhIGNsYXNzPSJmYW5jeWJveC1idXR0b25zIiBocmVmPSJpbWFnZXMvY2hlY2tvdXRfNS5wbmciPg0KKwkJCQkJCTxpbWcgc3JjPSJpbWFnZXMvY2hlY2tvdXRfNS5wbmciIGFsdD0iIiB3aWR0aD0iNDU1IiBoZWlnaHQ9IjI3MiIgLz4NCisJCQkJCTwvYT4NCisJCQkJPC9wPg0KKwkJCQk8cD4NCisJCQkJCTcpIEFmdGVyIGRvd25sb2FkIGlzIGNvbXBsZXRlIHlvdSBzZWUgYSBuZXcgU291cmNlIFJlcG9zaXRvcnkgaW4NCisJCQkJCXRoZSBSZXBvc2l0b3J5IEV4cGxvcmVyLiBSaWdodCBjbGljayBvbiBpdCBhbmQgY2hvb3NlDQorCQkJCQk8c3Ryb25nPmNoZWNrb3V0PC9zdHJvbmc+DQorCQkJCQk8YnIgLz4NCisJCQkJCTxiciAvPg0KKwkJCQkJPGEgY2xhc3M9ImZhbmN5Ym94LWJ1dHRvbnMiIGhyZWY9ImltYWdlcy9jaGVja291dF82LnBuZyI+DQorCQkJCQkJPGltZyBzcmM9ImltYWdlcy9jaGVja291dF82LnBuZyIgYWx0PSIiIHdpZHRoPSIzNDAiIGhlaWdodD0iMTM1IiAvPg0KKwkJCQkJPC9hPg0KKwkJCQk8L3A+DQorCQkJCTxwPg0KKwkJCQkJOCkgSW4gdGhlIERpYWxvZyB0aGUgb3BlbnMgbm93IGp1c3QgY2xpY2sgbmV4dA0KKwkJCQkJPGJyIC8+DQorCQkJCQk8YnIgLz4NCisJCQkJCTxhIGNsYXNzPSJmYW5jeWJveC1idXR0b25zIiBocmVmPSJpbWFnZXMvY2hlY2tvdXRfNy5wbmciPg0KKwkJCQkJCTxpbWcgc3JjPSJpbWFnZXMvY2hlY2tvdXRfNy5wbmciIGFsdD0iIiB3aWR0aD0iMzkwIiBoZWlnaHQ9IjMzOCIgLz4NCisJCQkJCTwvYT4NCisJCQkJPC9wPg0KKwkJCQk8cD4NCisJCQkJCTkpIEluIHRoZSBuZXh0IERpYWxvZyBqdXN0IGNsaWNrIEZpbmlzaCwgRWNsaXBzZSB3aWxsIHRoZW4gZG93bmxvYWQNCisJCQkJCXRoZSBzb3VyY2VzDQorCQkJCQk8YnIgLz4NCisJCQkJCTxiciAvPg0KKwkJCQkJPGEgY2xhc3M9ImZhbmN5Ym94LWJ1dHRvbnMiIGhyZWY9ImltYWdlcy9jaGVja291dF84LnBuZyI+DQorCQkJCQkJPGltZyBzcmM9ImltYWdlcy9jaGVja291dF84LnBuZyIgYWx0PSIiIHdpZHRoPSIzOTAiIGhlaWdodD0iMzM4IiAvPg0KKwkJCQkJPC9hPg0KKwkJCQk8L3A+DQorCQkJCTxwPg0KKwkJCQkJMTApIEFmdGVyIHRoZSBkb3dubG9hZCBpcyBjb21wbGV0ZSB5b3Ugd2lsbCBzZWUgYSBuZXcgUHJvamVjdCBpbg0KKwkJCQkJdGhlIFBhY2thZ2UgRXhwbG9yZXIgRGlhbG9nIG9mIEVjbGlwc2UNCisJCQkJCTxiciAvPg0KKwkJCQkJPGJyIC8+DQorCQkJCQk8YSBjbGFzcz0iZmFuY3lib3gtYnV0dG9ucyIgaHJlZj0iaW1hZ2VzL2NoZWNrb3V0XzkucG5nIj4NCisJCQkJCQk8aW1nIHNyYz0iaW1hZ2VzL2NoZWNrb3V0XzkucG5nIiBhbHQ9IiIgd2lkdGg9IjMxMCIgaGVpZ2h0PSIyOTciIC8+DQorCQkJCQk8L2E+DQorCQkJCTwvcD4NCisJCQkJPGRpdj4NCisJCQkJCTExKSBQbGVhc2UgcnVuDQorCQkJCQk8ZGl2IGNsYXNzPSJ4bWxjb2RlIj4NCisJCQkJCQlhbnQgcHJlcGFyZS1lY2xpcHNlDQorCQkJCQk8L2Rpdj4NCisJCQkJCXRvIGRvd25sb2FkIGFsbCBuZWNlc3NhcnkgamFyIGZpbGVzLCBhbmQgcGVyZm9ybSBzb3VyY2UNCisJCQkJCTx0dD5SZWZyZXNoPC90dD4NCisJCQkJCXRvIHJlc29sdmUgYWxsIGNvbXBpbGF0aW9uIGlzc3Vlcy4NCisJCQkJPC9kaXY+DQorCQkJPC9zdWJzZWN0aW9uPg0KKw0KKwkJCTxzdWJzZWN0aW9uIG5hbWU9IlN0ZXAzIC0gRGVwbG95IGFuZCBSdW4iPg0KKw0KKwkJCQk8cD4NCisJCQkJCXNlZSB0aGUgZmlyc3QgY2hhcHRlciBhYm91dCB0aGUgQU5UIHRhc2tzIHRvIGNvbXBpbGUgdGhlIGNvZGUuIFlvdQ0KKwkJCQkJd2lsbCBmaW5kIGEgZGlyZWN0b3J5IGNhbGxlZA0KKwkJCQkJPHN0cm9uZz5kaXN0PC9zdHJvbmc+DQorCQkJCQl3aGljaCBjb250YWlucyBhIHJlZ3VsYXIgb3Blbm1lZXRpbmdzIGluY2x1ZGluZyByZWQ1LiBZb3UgY2FuIHRoZW4NCisJCQkJCXVzZSB0aGUgdXN1YWwgcHJvY2VzcyBsaWtlIGRlc2NyaWJlZCBhdA0KKwkJCQkJPGEgaHJlZj0iaW5zdGFsbGF0aW9uLmh0bWwiPmluc3RhbGxhdGlvbjwvYT4NCisJCQkJCXRvIHJ1biB0aGUgY29kZSB0aGVuLg0KKwkJCQk8L3A+DQorCQkJPC9zdWJzZWN0aW9uPg0KKw0KKwkJPC9zZWN0aW9uPg0KKw0KKwkJPHNlY3Rpb24gbmFtZT0iTGlua3MiPg0KKw0KKwkJCTx1bD4NCisJCQkJPGxpPg0KKwkJCQkJR2V0dGluZyBTdGFydGVkIHdpdGggT3Blbkxhc3psbywgY2hlY2tvdXQNCisJCQkJCTxhDQorCQkJCQkJaHJlZj0iaHR0cDovL3d3dy5vcGVubGFzemxvLm9yZy9scHM0LjIvbGFzemxvLWV4cGxvcmVyL2luZGV4LmpzcD9senI9c3dmOCINCisJCQkJCQl0YXJnZXQ9Il9CTEFOSyIgcmVsPSJub2ZvbGxvdyI+TGFzemxvLWluLTEwLU1pbnV0ZXM8L2E+DQorCQkJCQlhbmQgdGhlDQorCQkJCQk8YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5sYXN6bG8ub3JnL2xwczQuMi9kb2NzLyIgdGFyZ2V0PSJfQkxBTksiDQorCQkJCQkJcmVsPSJub2ZvbGxvdyI+QXBwbGljYXRpb24NCisJCQkJCQlEZXZlbG9wZXIncyBHdWlkZQ0KKwkJCQkJPC9hPg0KKwkJCQkJb3IgdHJ5IHRoZQ0KKwkJCQkJPGEgaHJlZj0iaHR0cDovL3d3dy5vcGVubGFzemxvLm9yZy9nZXRzdGFydGVkIiB0YXJnZXQ9Il9CTEFOSyINCisJCQkJCQlyZWw9Im5vZm9sbG93Ij5TY3JlZW5DYXN0PC9hPg0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+DQorCQkJCQk8YSBocmVmPSJodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvc3ZuLmh0bWwiPg0KKwkJCQkJCWJyb3dzZSBTVk4gc291cmNlDQorCQkJCQk8L2E+DQorCQkJCTwvbGk+DQorCQkJPC91bD4NCisNCisJCTwvc2VjdGlvbj4NCisNCisJCTxzZWN0aW9uIG5hbWU9IlRpcHBzIGFuZCBHb3RjaGFzIj4NCisNCisJCQk8cD5XaGVuIHlvdSB3YW50IHRvIGRldmVsb3Agb25seSBjbGllbnQgc2lkZSB0aGVyZSBhcmUgaGFuZHkgQU5UDQorCQkJCXRhc2tzIHNvIHRoYXQgeW91IG9ubHkgcmVidWlsZCB0aGUgU1dGcywgc2FtZSBmb3IgdGhlIEphdmEgc2lkZS4NCisJCQk8L3A+DQorCQkJPHA+DQorCQkJCUl0DQorCQkJCWFsc28gdGFrZXMgbXVjaCBsZXNzIHRpbWUgaWYgeW91IGRvIHVzZSBNeVNRTCBhcyBkYXRhYmFzZSB0aGVuDQorCQkJCXJlYnVpbGRpbmcgdGhlIHNvZnR3YXJlIGFuZCB3YWl0aW5nIGZvciBBcGFjaGUgRGVyYnkgdG8gc2V0IHVwIHRoZQ0KKwkJCQlkYXRhYmFzZSBldmVyeXRpbWUgeW91IGRpZCByZWJ1aWxkLg0KKwkJCTwvcD4NCisJCQk8cD4NCisJCQkJPGI+V29ya2luZyBiZWhpbmQgYSBwcm94eTo8L2I+DQorCQkJCUlmIHlvdSBhcmUgc2l0dGluZyBiZWhpbmQgYSBwcm94eSB5b3Ugc2hvdWxkIGFkZCBzb21lIHByb3h5IHNldHRpbmdzDQorCQkJCWJlZm9yZSBzdGFydGluZyB0aGUgYnVpbGQgcHJvY2Vzcy4NCisJCQkJPGJyIC8+DQorCQkJCUZvciBBcGFjaGUgSXZ5IHNlZToNCisJCQkJPGEgaHJlZj0iaHR0cDovL2FudC5hcGFjaGUub3JnL2l2eS9mYXEuaHRtbCIgdGFyZ2V0PSJfQkxBTksiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9hbnQuYXBhY2hlLm9yZy9pdnkvZmFxLmh0bWwNCisJCQkJPC9hPg0KKwkJCQk8YnIgLz4NCisJCQkJRm9yIFNWTiBDb21tYW5kIExpbmUgQ2xpZW50IChGcm9tIENvbGxhYk5ldCAxLjcpIHNlZToNCisJCQkJPGENCisJCQkJCWhyZWY9Imh0dHBzOi8vY3RmNmxhdGVzdC5jb2xsYWIubmV0L2ludGVybmFsLWhlbHAvaW5kZXguanNwP3RvcGljPS90ZWFtZm9yZ2U2MTAvZmFxL2NsaWVudF9wcm94eV9zZXR0aW5ncy5odG1sIg0KKwkJCQkJdGFyZ2V0PSJfQkxBTksiIHJlbD0ibm9mb2xsb3ciPmh0dHBzOi8vY3RmNmxhdGVzdC5jb2xsYWIubmV0L2ludGVybmFsLWhlbHAvaW5kZXguanNwP3RvcGljPS90ZWFtZm9yZ2U2MTAvZmFxL2NsaWVudF9wcm94eV9zZXR0aW5ncy5odG1sDQorCQkJCTwvYT4NCisJCQk8L3A+DQorDQorCQk8L3NlY3Rpb24+DQorDQorCTwvYm9keT4NCisNCis8L2RvY3VtZW50PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3hkb2NzL0NhbGVuZGFyQW5kVGltZXpvbmUueG1sIGIveGRvY3MvQ2FsZW5kYXJBbmRUaW1lem9uZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg5ZWZmZQotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL0NhbGVuZGFyQW5kVGltZXpvbmUueG1sCkBAIC0wLDAgKzEsODEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPCEtLQ0KKyAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisNCisgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorDQorICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAtLT4NCis8ZG9jdW1lbnQ+DQorDQorCTxwcm9wZXJ0aWVzPg0KKwkJPHRpdGxlPkNoYW5naW5nIHRoZSBDYWxlbmRhciBhbmQgVGltZXpvbmUgZGVmYXVsdDwvdGl0bGU+DQorCQk8YXV0aG9yIGVtYWlsPSJzZWJhd2FnbmVyQGFwYWNoZS5vcmciPg0KKwkJCU9wZW5NZWV0aW5ncyBUZWFtDQorCQk8L2F1dGhvcj4NCisJPC9wcm9wZXJ0aWVzPg0KKw0KKwk8Ym9keT4NCisNCisJCTxzZWN0aW9uIG5hbWU9IkNoYW5naW5nIHRoZSBDYWxlbmRhciBhbmQgVGltZXpvbmUgZGVmYXVsdCI+DQorDQorCQkJPHA+DQorCQkJCUluIGdlbmVyYWwgdGhlIHRpbWV6b25lIGlzIGNvbmZpZ3VyZWQgaW4gdGhlIHVzZXIgcHJvZmlsZSBvZiBlYWNoDQorCQkJCXVzZXIsIHNvIGNoYW5naW5nIHRoZSBzZXJ2ZXIgdGltZXpvbmUgaGFzIG5vIGVmZmVjdCBob3cgdG8gdGhlIHVzZXJzDQorCQkJCWNhbGVuZGFyIGZvciBleGFtcGxlLg0KKwkJCQk8YnIgLz4NCisJCQkJPGJyIC8+DQorCQkJCUhvd2V2ZXIgdGhlcmUgYXJlIHNvbWUgY2lyY3Vtc3RhbmNlcyB3aGVyZSB0aGVyZSBpcyBubyB1c2VyIHByb2ZpbGUNCisJCQkJYXZhaWxhYmxlLg0KKwkJCTwvcD4NCisJCTwvc2VjdGlvbj4NCisNCisJCTxzZWN0aW9uDQorCQkJbmFtZT0iQ2hhbmdpbmcgc2VydmVycyBkZWZhdWx0IHRpbXplb25lIGZvciBFbWFpbHMgYW5kIEludml0YXRpb25zIChkaXNwbGF5KSI+DQorCQkJPHA+DQorCQkJCUdvdG8gQWRtaW5pc3RyYXRpb24gJmd0OyBDb25maWd1cmF0aW9uIGFuZCBjaGFuZ2UgdGhlIGNvbmZpZy1rZXk6DQorCQkJCTx0dD5kZWZhdWx0LnRpbWV6b25lPC90dD4NCisJCQk8L3A+DQorCQkJPHA+VmFsaWQgdGltZXpvbmUgaGF2ZSB0byBtZWV0IHN0YW5kYXJkcyEgPC9wPg0KKwkJPC9zZWN0aW9uPg0KKw0KKwkJPHNlY3Rpb24NCisJCQluYW1lPSJDaGFuZ2luZyBmaXJzdCBkYXkgaW4gd2VlayBmb3IgY2FsZW5kYXIgZnJvbSBTdW5kYXkgdG8gTW9uZGF5Ij4NCisNCisJCQk8cD5pbiB0aGUgY29uZmlnLnhtbCBjaGFuZ2UgdGhlIGtleTogPC9wPg0KKwkJCTxkaXYgY2xhc3M9InhtbGNvZGUiPg0KKwkJCQkmbHQ7IS0tDQorCQkJCTxiciAvPg0KKwkJCQlGaXJzdCBkYXkgaW4gdGhlIFdlZWsgdXNlZCBieSB0aGUgQ2FsZW5kYXINCisJCQkJPGJyIC8+DQorCQkJCTAgbWVhbnMgU3VuZGF5DQorCQkJCTxiciAvPg0KKwkJCQkxIG1lYW5zIE1vbmRheQ0KKwkJCQk8YnIgLz4NCisJCQkJdGhpcyBpcyB0aGUgd2F5IGhvdyB0aGUgQ2VsZW5kYXIgaW5pdHMgYSB3ZWVrDQorCQkJCTxiciAvPg0KKwkJCQktLSZndDsNCisJCQkJPGJyIC8+DQorCQkJCSZsdDtmaXJzdGRheWlud2VlayZndDswJmx0Oy9maXJzdGRheWlud2VlayZndDsNCisJCQkJPGJyIC8+DQorCQkJPC9kaXY+DQorCQk8L3NlY3Rpb24+DQorDQorCQk8c2VjdGlvbg0KKwkJCW5hbWU9IkNoYW5naW5nIHRoZSBkZWZhdWx0IG51bWJlciBvZiBtYXggcGFydGljaXBhbnRzIG9mIGEgY29uZmVyZW5jZSByb29tIGNyZWF0ZWQgdmlhIGNhbGVuZGFyIj4NCisNCisJCQk8cD5Hb3RvDQorCQkJCUFkbWluaXN0cmF0aW9uICZndDsgQ29uZmlndXJhdGlvbiBhbmQgY2hhbmdlIHRoZSBjb25maWcta2V5Og0KKwkJCQk8dHQ+Y2FsZW5kYXIuY29uZmVyZW5jZS5yb29tcy5kZWZhdWx0LnNpemU8L3R0Pg0KKwkJCTwvcD4NCisJCTwvc2VjdGlvbj4NCisNCisJPC9ib2R5Pg0KKw0KKzwvZG9jdW1lbnQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEveGRvY3MvQ2x1c3RlcmluZy54bWwgYi94ZG9jcy9DbHVzdGVyaW5nLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNWQ2YjMwCi0tLSAvZGV2L251bGwKKysrIGIveGRvY3MvQ2x1c3RlcmluZy54bWwKQEAgLTAsMCArMSwxMzkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPCEtLQ0KKyAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisNCisgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorDQorICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAtLT4NCis8ZG9jdW1lbnQ+DQorCTxwcm9wZXJ0aWVzPg0KKwkJPHRpdGxlPkNsdXN0ZXJpbmc8L3RpdGxlPg0KKwkJPGF1dGhvciBlbWFpbD0ic29sb21heEBhcGFjaGUub3JnIj4NCisJCQlPcGVuTWVldGluZ3MgVGVhbQ0KKwkJPC9hdXRob3I+DQorCTwvcHJvcGVydGllcz4NCisNCisJPGJvZHk+DQorCQk8c2VjdGlvbiBuYW1lPSJEZXNjcmlwdGlvbiI+DQorCQkJPHA+DQorCQkJCU9wZW5NZWV0aW5ncyAyLjEgb3IgbGF0ZXIgaXMgcmVxdWlyZWQgdG8gdXNlIGNsdXN0ZXJpbmcuIE9uZSBkYXRhYmFzZSBpcyB1c2VkIGZvciBhbGwgT3Blbk1lZXRpbmdzIA0KKwkJCQlzZXJ2ZXJzLCBzbyBhbGwgZGF0YWJhc2UgdGFibGVzIGFyZSBzaGFyZWQgYWNyb3NzIE9NIGluc3RhbmNlcy4gQ2VydGFpbiBmb2xkZXJzIHNob3VsZCBiZSBzaGFyZWQgDQorCQkJCWJldHdlZW4gYWxsIHNlcnZlcnMgdG8gYWxsb3cgYWNjZXNzIHRvIHRoZSBmaWxlcy9yZWNvcmRpbmcuPC9wPg0KKwkJPC9zZWN0aW9uPg0KKwkJPHNlY3Rpb24gbmFtZT0iQ29uZmlndXJhdGlvbiI+DQorCQkJPHVsPg0KKwkJCQk8bGk+DQorCQkJCQlNdWx0aXBsZSBPTSBzZXJ2ZXJzIHNob3VsZCBiZSBzZXQgdXAgYXMgZGVzY3JpYmVkIGluDQorCQkJCQk8YSBocmVmPSJpbnN0YWxsYXRpb24uaHRtbCIgdGFyZ2V0PSJfQkxBTksiPg0KKwkJCQkJCTxiPkluc3RhbGxhdGlvbjwvYj4NCisJCQkJCTwvYT4NCisJCQkJPC9saT4NCisJCQkJPGxpPkFsbCBzZXJ2ZXJzIHNob3VsZCBiZSBjb25maWd1cmVkIHRvIGhhdmUgc2FtZSBUaW1lIHpvbmUgKFRvIGF2b2lkDQorCQkJCQlTY2hlZHVsZXJzIHRvIGRyb3AgdXNlciBzZXNzaW9ucyBhcyBvdXRkYXRlZCkNCisJCQkJPC9saT4NCisJCQkJPGxpPkFsbCBzZXJ2ZXJzIHNob3VsZCBiZSBjb25maWd1cmVkIHRvIHVzZSB0aGUgc2FtZSBEQjwvbGk+DQorCQkJCTxsaT5TZXJ2ZXJzIHNob3VsZCBiZSBhZGRlZCBpbiBBZG1pbmlzdHJhdGlvbiAtJmd0OyBTZXJ2ZXJzIHNlY3Rpb248L2xpPg0KKwkJCTwvdWw+DQorCQk8L3NlY3Rpb24+DQorCQk8c2VjdGlvbiBuYW1lPSJEYXRhYmFzZSI+DQorCQkJQWxsIHNlcnZlcnMgc2hvdWxkIGJlIGNvbmZpZ3VyZWQgdG8gdXNlIHRoZSBzYW1lIGRhdGFiYXNlLiBJdCBjYW4gYmUgb24gdGhlIHNlcnZlciBvciBvbiB0aGUgb25lIG5vZGUgDQorCQkJb2YgdGhlIGNsdXN0ZXIuIA0KKwkJCTx1bD4NCisJCQkJPGxpPkFkZCB1c2VycyB3aG8gY2FuIGNvbm5lY3QgdG8gdGhlIGRhdGFiYXNlIHJlbW90ZWx5PC9saT4NCisJCQkJPGxpPlVwZGF0ZSA8dHQ+L29wdC9yZWQ1L3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvY2xhc3Nlcy9NRVRBLUlORi9wZXJzaXN0ZW5jZS54bWw8L3R0Pg0KKwkJCQkJc2V0IGNvcnJlY3Qgc2VydmVyIGFkZHJlc3MsIGxvZ2luIGFuZCBwYXNzd29yZC4gQWxzbyBhZGQgdGhlIGZvbGxvd2luZyBzZWN0aW9uOg0KKwkJCQkJPGRpdiBjbGFzcz0ieG1sY29kZSI+Jmx0O3Byb3BlcnR5IG5hbWU9Im9wZW5qcGEuUmVtb3RlQ29tbWl0UHJvdmlkZXIiIHZhbHVlPSJ0Y3AoQWRkcmVzc2VzPTEwLjEuMS4xOzEwLjEuMS4yKSIgLyZndDs8L2Rpdj4NCisJCQkJCUluc3RlYWQgb2YgdGhlIDEwLjEuMS4xIGFuZCAxMC4xLjEuMiBzZXQgc2VtaWNvbG9uIHNlcGFyYXRlZCBJUHMgb2YgYWxsIG5vZGVzIG9mIHRoZSBjbHVzdGVyLg0KKwkJCQk8L2xpPg0KKwkJCTwvdWw+DQorCQk8L3NlY3Rpb24+DQorCQk8c2VjdGlvbiBuYW1lPSJGaWxlIHN5c3RlbXMiPg0KKwkJCUlmIGZpbGVzIGFuZCByZWNvcmRpbmdzIHVzaW5nIHRoZSBzYW1lIHBoeXNpY2FsIGZvbGRlcnMgdGhlIGZpbGVzIGFuZCByZWNvcmRpbmdzIHdpbGwgYmUgYXZhaWxhYmxlIGZvciANCisJCQllYWNoIG5vZGUuIFlvdSBjYW4gZG8gdGhpcyB1c2luZyBTYW1iYSBvciBORlMsIGZvciBleGFtcGxlLiBGb3IgdXNpbmcgTkZTIGRvIHRoZSBmb2xsb3dpbmc6DQorCQkJPHVsPg0KKwkJCQk8bGk+SW5zdGFsbCBORlMgdG8gdGhlIGRhdGEgc2VydmVyLiBJbiB0aGUgZmlsZSA8dHQ+L2V0Yy9leHBvcnRzPC90dD4gYWRkIHRoZSBmb2xsb3dpbmcgbGluZXM6DQorCQkJCQk8ZGl2IGNsYXNzPSJ4bWxjb2RlIj4NCisJCQkJCQkvb3B0L3JlZDUvd2ViYXBwcy9vcGVubWVldGluZ3MvdXBsb2FkIDEwLjEuMS4yKHJ3LHN5bmMsbm9fc3VidHJlZV9jaGVjayxub19yb290X3NxdWFzaCk8YnIvPg0KKwkJCQkJCS9vcHQvcmVkNS93ZWJhcHBzL29wZW5tZWV0aW5ncy9zdHJlYW1zIDEwLjEuMS4yKHJ3LHN5bmMsbm9fc3VidHJlZV9jaGVjayxub19yb290X3NxdWFzaCkNCisJCQkJCTwvZGl2Pg0KKwkJCQkJSGVyZSAxMC4xLjEuMiAtIGlzIG5vZGUgaXAgZm9yIE5GUyByZW1vdGUgYWNjZXNzLiBBZGQgdGhlc2UgbGluZXMgZm9yIGFsbCBub2RlcyBleGNlcHQgbm9kZSB3aXRoIA0KKwkJCQkJZm9sZGVycy4NCisJCQkJPC9saT4NCisJCQkJPGxpPg0KKwkJCQkJSW5zdGFsbCBORlMgY29tbW9uIHRvb2xzIHRvIG90aGVyIG5vZGVzLiBJbiB0aGUgZmlsZSA8dHQ+L2V0Yy9mc3RhYjwvdHQ+IGRvIHRoZSBmb2xsb3dpbmc6DQorCQkJCQk8ZGl2IGNsYXNzPSJ4bWxjb2RlIj4NCisJCQkJCQkxMC4xLjEuMTovb3B0L3JlZDUvd2ViYXBwcy9vcGVubWVldGluZ3MvdXBsb2FkLzxici8+DQorCQkJCQkJL29wdC9yZWQ1L3dlYmFwcHMvb3Blbm1lZXRpbmdzL3VwbG9hZCBuZnMgdGltZW89NTAsaGFyZCxpbnRyPGJyLz4NCisJCQkJCQkxMC4xLjEuMTovb3B0L3JlZDUvd2ViYXBwcy9vcGVubWVldGluZ3Mvc3RyZWFtcy88YnIvPg0KKwkJCQkJCS9vcHQvcmVkNS93ZWJhcHBzL29wZW5tZWV0aW5ncy9zdHJlYW1zIG5mcyB0aW1lbz01MCxoYXJkLGludHINCisJCQkJCTwvZGl2Pg0KKwkJCQkJSGVyZSAxMC4xLjEuMSDigJMgZGF0YSBzZXJ2ZXIgaXAuIEFuZCBydW4gdGhlIGNvbW1hbmQ6DQorCQkJCQk8ZGl2IGNsYXNzPSJ4bWxjb2RlIj4NCisJCQkJCQltb3VudCAtYQ0KKwkJCQkJPC9kaXY+DQorCQkJCTwvbGk+DQorCQkJPC91bD4gDQorCQk8L3NlY3Rpb24+DQorCQk8c2VjdGlvbiBuYW1lPSJPTSBub2RlcyBjb25maWd1cmF0aW9uIj4NCisJCQlJbiB0aGUgZmlsZSA8dHQ+L29wdC9yZWQ1L3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvb3Blbm1lZXRpbmdzLWFwcGxpY2F0aW9uQ29udGV4dC54bWw8L3R0PjoNCisJCQk8dWw+DQorCQkJCTxsaT4NCisJCQkJCUZvciBlYWNoIG5vZGUgdW5jb21tZW50IGxpbmU6DQorCQkJCQk8ZGl2IGNsYXNzPSJ4bWxjb2RlIj4NCisJCQkJCQkmbHQ7IS0tIE5lZWQgdG8gYmUgdW5jb21tZW50ZWQgYW5kIHNldCB0byB0aGUgcmVhbCBJRCBpZiBpbiBjbHVzdGVyIG1vZGUtLSZndDs8YnIvPg0KKwkJCQkJCSZsdDtwcm9wZXJ0eSBuYW1lPSJzZXJ2ZXJJZCIgdmFsdWU9IjEiIC8mZ3Q7DQorCQkJCQk8L2Rpdj4NCisJCQkJCWFuZCBpbnB1dCB0aGUgdW5pcXVlIHZhbHVlIGZvciBlYWNoIG5vZGUuDQorCQkJCTwvbGk+DQorCQkJCTxsaT4gDQorCQkJCQlSZXBsYWNlIDx0dD4mbHQ7cmVmIGJlYW49Im9wZW5tZWV0aW5ncy5IYXNoTWFwU3RvcmUiIC8mZ3Q7ICAmbHQ7IS0tIE1lbW9yeSBiYXNlZCBzZXNzaW9uIGNhY2hlIGJ5IGRlZmF1bHQgLS0mZ3Q7PC90dD48YnIvPg0KKwkJCQkJd2l0aCA8dHQ+Jmx0O3JlZiBiZWFuPSJvcGVubWVldGluZ3MuRGF0YWJhc2VTdG9yZSIgLyZndDs8L3R0PiANCisJCQkJCShDdXJyZW50bHkgY29tbWVudGVkIG91dCB3aXRoIGZvbGxvd2luZyBjb21tZW50OiA8dHQ+IlRoZSBmb2xsb3dpbmcgc2VjdGlvbiBzaG91bGQgYmUgdXNlZCBpbiBjbHVzdGVyaW5nIG1vZGUiPC90dD4pDQorCQkJCTwvbGk+DQorCQkJPC91bD4NCisJCTwvc2VjdGlvbj4NCisJCTxzZWN0aW9uIG5hbWU9IkNvbmZpZ3VyaW5nIGNsdXN0ZXIgaW4gQWRtaW5pc3RyYXRpb24iPg0KKwkJCVJ1biByZWQ1IG9uIGVhY2ggbm9kZS4gTG9naW4gdG8gdGhlIHN5c3RlbSBhcyBhZG1pbi4NCisJCQk8dWw+DQorCQkJCTxsaT5HbyB0byB0aGUgPHR0PkFkbWluaXN0cmF0aW9uIC0mZ3Q7IFVzZXJzPC90dD4gYW5kIGNyZWF0ZSBXZWJzZXJ2aWNlIHVzZXIgKG9ubHkgYWNjZXNzIHZpYSBTT0FQKS48L2xpPg0KKwkJCQk8bGk+DQorCQkJCQlHbyB0byB0aGUgPHR0PkFkbWluaXN0cmF0aW9uIC0mZ3Q7IFNlcnZlcnM8L3R0PiBhbmQgYWRkIGFsbCBjbHVzdGVyIG5vZGVzIHdpdGggdGhlIGZvbGxvd2luZyBzZXR0aW5nczoNCisJCQkJCTxkaXYgY2xhc3M9InhtbGNvZGUiPg0KKwkJCQkJCVNlcnZlciBOYW1lID0gbm9kZSBuYW1lOzxici8+DQorCQkJCQkJQWN0aXZlID0gY2hlY2sgdGhlIGNoZWNrYm94LiBJZiB0aGUgY2hlY2tib3ggaXMgY2hlY2tlZCBpdCBtZWFucyBub2RlIGlzIGFjdGl2ZSBhbmQgeW91IGNhbiB1c2UgdGhpcyBub2RlOzxici8+DQorCQkJCQkJU2VydmVyIEFkZHJlc3MgPSBub2RlIGlwOzxici8+DQorCQkJCQkJSFRUUCBQb3J0ID0gNTA4MCAtIHBvcnQgZm9yIGh0dHAgcGFydCBvZiBPcGVubWVldGluZ3M7PGJyLz4NCisJCQkJCQlVc2VyIChTT0FQIEFjY2VzcykgPSBsb2dpbiBvZiBXZWJzZXJ2aWNlIHVzZXIgZnJvbSB0aGUgcHJldmlvdXMgc3RlcDs8YnIvPg0KKwkJCQkJCVBhc3N3b3JkID0gcGFzc3dvcmQgb2YgV2Vic2VydmlzZSB1c2VyOzxici8+DQorCQkJCQkJV2ViYXBwIHBhdGggPSBvcGVubWVldGluZ3MgLSBwYXRoIHdoZXJlIE9NIGluc3RhbGxlZCBvbiB0aGlzIG5vZGUsIGl0IHdvdWxkIGJlIGJldHRlciBpZiB0aGlzIHBhdGggd2lsbCBiZSB0aGUgc2FtZSBmb3IgYWxsIG5vZGVzOzxici8+DQorCQkJCQkJUHJvdG9jb2wgPSBodHRwLg0KKwkJCQkJPC9kaXY+DQorCQkJCTwvbGk+IA0KKwkJCTwvdWw+DQorCQkJPGltZyBzcmM9ImltYWdlcy9jbHVzdGVyMS5wbmciIGFsdD0iIiB3aWR0aD0iNjUwIiBoZWlnaHQ9IjQ2MSIgLz4NCisJCTwvc2VjdGlvbj4NCisJCTxzZWN0aW9uIG5hbWU9IkVuc3VyZSBldmVyeXRoaW5nIHdvcmtzIGFzIGV4cGVjdGVkIj4NCisJCQk8dWw+DQorCQkJCTxsaT5TZXQgdXAgdGhlIGNsdXN0ZXIgYW5kIGxvZ2dpbiB3aXRoIHR3byB1c2VycywgZ28gdG8gdGhlIHNhbWUgcm9vbSAoYWxzbyBjaGVjayBiZWZvcmUgcm9vbSANCisJCQkJZW50ZXJpbmcgdGhhdCB0aGUgc3RhdHVzIHBhZ2Ugd2l0aCB0aGUgcm9vbSBsaXN0IHNob3dzIHRoZSBjb3JyZWN0IG51bWJlciBvZiBwYXJ0aWNpcGFudHMgYmVmb3JlIA0KKwkJCQllbnRlcmluZyB0aGUgcm9vbSkuIFlvdSBzaG91bGQgbG9naW4gdG8gdGhlIHNhbWUgc2VydmVyIGluaXRpYWxseSwgdGhlIHNlcnZlciB3aWxsIHJlZGlyZWN0IHlvdSANCisJCQkJZm9yIHRoZSBjb25mZXJlbmNlIHJvb20gdG8gdGhlIGFwcHJvcHJpYXRlIHNlcnZlciBhdXRvbWF0aWNhbGx5LiBCb3RoIHVzZXJzIHNob3VsZCBiZSBpbiB0aGUgc2FtZSByb29tLg0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+RG8gdGhlIHNhbWUgd2l0aCBvbmx5IHR3byB1c2VycyBidXQgZ28gdG8gX2RpZmZlcmVudF8gcm9vbXMuIFRoZSBjYWxjdWxhdGlvbiBzaG91bGQgc2VuZCANCisJCQkJYm90aCB1c2VycyB0byBkaWZmZXJlbnQgc2VydmVycywgY2F1c2UgYmFzZWQgb24gdGhlIGNhbGN1bGF0aW9uIHR3byBkaWZmZXJlbnQgcm9vbXMgb24gYSBjbHVzdGVyIA0KKwkJCQl3aXRoIHR3byBub2RlcyBzaG91bGQgZ28gZXhhY3RseSBvbmUgcm9vbSBmb3IgZWFjaCBub2RlLiBZb3UgY2FuIG5vdyBsb2dnaW4gcmVhbGx5IHRvIG5vZGUxIA0KKwkJCQlhbmQgbm9kZTIgb2YgeW91ciBjbHVzdGVyIHdoaWxlIHRob3NlIHVzZXJzIGFyZSBsb2dnZWRpbiBhbmQgZ28gdG8gPHR0PkFkbWluaXN0cmF0aW9uICZndDsgQ29ubmVjdGlvbnM8L3R0Pg0KKwkJCQlhbmQgY2hlY2sgaW4gdGhlIGNvbHVtbiAic2VydmVycyIgd2hlcmUgdGhleSBhcmUgbG9jYXRlZC4gVGhleSBzaG91bGQgYmUgb24gZGlmZmVyZW50IHNlcnZlci4NCisJCQkJPC9saT4NCisJCQk8L3VsPg0KKwkJCTxpbWcgc3JjPSJpbWFnZXMvY2x1c3RlcjIucG5nIiBhbHQ9IiIgd2lkdGg9IjY1MCIgaGVpZ2h0PSIzNjkiIC8+DQorCQk8L3NlY3Rpb24+DQorCTwvYm9keT4NCis8L2RvY3VtZW50PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3hkb2NzL0NvbW1hbmRMaW5lQWRtaW4ueG1sIGIveGRvY3MvQ29tbWFuZExpbmVBZG1pbi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGZjZWUyOQotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL0NvbW1hbmRMaW5lQWRtaW4ueG1sCkBAIC0wLDAgKzEsNzIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPCEtLQ0KKyAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisNCisgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorDQorICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAtLT4NCis8ZG9jdW1lbnQ+DQorCTxwcm9wZXJ0aWVzPg0KKwkJPHRpdGxlPkNvbW1hbmQgbGluZSBhZG1pbjwvdGl0bGU+DQorCQk8YXV0aG9yIGVtYWlsPSJzb2xvbWF4QGFwYWNoZS5vcmciPg0KKwkJCU9wZW5NZWV0aW5ncyBUZWFtDQorCQk8L2F1dGhvcj4NCisJPC9wcm9wZXJ0aWVzPg0KKwk8Ym9keT4NCisJCTxzZWN0aW9uIG5hbWU9IlVzYWdlIj4NCisJCQk8cD5UbyBhdm9pZCBpbnRlbnNpdmUgdHJhZmZpYyB1dGlsaXphdGlvbiBhbmQgc2F2ZSB5b3VyIHRpbWUgeW91IGNhbg0KKwkJCQl1c2UgY29tbWFuZCBsaW5lIGFkbWluIHRvIGFjaGlldmUgZm9sbG93aW5nIHRhc2tzOjwvcD4NCisJCQk8ZGl2Pg0KKwkJCQk8ZGl2IGNsYXNzPSJ4bWxjb2RlIj4NCisgLXYsLS12ZXJib3NlICAgICAgICAgICAgICAgICAgICAgICAgdmVyYm9zZSBlcnJvciBtZXNzYWdlczxici8+DQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08YnIvPg0KKyAtaCwtLWhlbHAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmludHMgdGhpcyBtZXNzYWdlPGJyLz4NCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTxici8+DQorIC1iLC0tYmFja3VwICAgICAgICAgICAgICAgICAgICAgICAgIEJhY2t1cHMgT008YnIvPg0KKzxzcGFuIHN0eWxlPSJtYXJnaW4tbGVmdDogNTBweDsiPi1maWxlICZsdDthcmcmZ3Q7ICAgICAgICAgICAgICAgICAgICAgICAob3B0aW9uYWwpIGZpbGUgdXNlZCBmb3IgYmFja3VwL3Jlc3RvcmUvaW5zdGFsbDwvc3Bhbj48YnIvPg0KKzxzcGFuIHN0eWxlPSJtYXJnaW4tbGVmdDogMTAwcHg7Ij4tLWV4Y2x1ZGUtZmlsZXMgICAgICAgICAgICAgICAgKG9wdGlvbmFsKSBzaG91bGQgYmFja3VwIGV4Y2x1ZGUgZmlsZXMgW2RlZmF1bHQ6IGluY2x1ZGVdPC9zcGFuPjxici8+DQorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS08YnIvPg0KKyAtciwtLXJlc3RvcmUgICAgICAgICAgICAgICAgICAgICAgICBSZXN0b3JlcyBPTTxici8+DQorPHNwYW4gc3R5bGU9Im1hcmdpbi1sZWZ0OiA1MHB4OyI+LWZpbGUgJmx0O2FyZyZndDsgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgdXNlZCBmb3IgYmFja3VwL3Jlc3RvcmUvaW5zdGFsbDwvc3Bhbj48YnIvPg0KKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPGJyLz4NCisgLWwsLS1sYW5ndWFnZXMgICAgICAgICAgICAgICAgICAgICAgUmVpbXBvcnQgQWxsIGxhbmd1YWdlIGZpbGVzIGludG8gREI8YnIvPg0KKzxzcGFuIHN0eWxlPSJtYXJnaW4tbGVmdDogNTBweDsiPi1sYW5nLC0tbGFuZ3VhZ2UgJmx0O2FyZyZndDsgICAgICAgICAgICAob3B0aW9uYWwpIFNpbmdsZSBsYW5ndWFnZSB0byBiZSBpbXBvcnRlZCAoaWQgb3IgbmFtZSk8L3NwYW4+PGJyLz4NCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTxici8+DQorIC1pLC0taW5zdGFsbCAgICAgICAgICAgICAgICAgICAgICAgIEZpbGwgREIgdGFibGUsIGFuZCBtYWtlIE9NIHVzYWJsZTxici8+DQorPHNwYW4gc3R5bGU9Im1hcmdpbi1sZWZ0OiA1MHB4OyI+LXVzZXIgJmx0O2FyZyZndDsgICAgICAgICAgICAgICAgICAgICAgIExvZ2luIG5hbWUgb2YgdGhlIGRlZmF1bHQgdXNlciwgbWluaW11bSA0IGNoYXJhY3RlcnMgKG11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoICdmaWxlJyk8L3NwYW4+PGJyLz4NCis8c3BhbiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDUwcHg7Ij4tZ3JvdXAgJmx0O2FyZyZndDsgICAgICAgICAgICAgICAgICAgICAgVGhlIG5hbWUgb2YgdGhlIGRlZmF1bHQgdXNlciBncm91cCAobXV0dWFsbHkgZXhjbHVzaXZlIHdpdGggJ2ZpbGUnKTwvc3Bhbj48YnIvPg0KKzxzcGFuIHN0eWxlPSJtYXJnaW4tbGVmdDogNTBweDsiPi1lbWFpbCAmbHQ7YXJnJmd0OyAgICAgICAgICAgICAgICAgICAgICBFbWFpbCBvZiB0aGUgZGVmYXVsdCB1c2VyIChtdXR1YWxseSBleGNsdXNpdmUgd2l0aCAnZmlsZScpPC9zcGFuPjxici8+DQorPHNwYW4gc3R5bGU9Im1hcmdpbi1sZWZ0OiA1MHB4OyI+LXR6ICZsdDthcmcmZ3Q7ICAgICAgICAgICAgICAgICAgICAgICAgIERlZmF1bHQgc2VydmVyIHRpbWUgem9uZSwgYW5kIHRpbWUgem9uZSBmb3IgdGhlIHNlbGVjdGVkIHVzZXIgKG11dHVhbGx5IGV4Y2x1c2l2ZSB3aXRoICdmaWxlJykgZmlsZSB1c2VkIGZvciBiYWNrdXAvcmVzdG9yZS9pbnN0YWxsPC9zcGFuPjxici8+DQorPHNwYW4gc3R5bGU9Im1hcmdpbi1sZWZ0OiAxMDBweDsiPi0tZW1haWwtYXV0aC1wYXNzICZsdDthcmcmZ3Q7ICAgICAgICAob3B0aW9uYWwpIEVtYWlsIGF1dGggcGFzc3dvcmQgKGFub255bW91cyBjb25uZWN0aW9uIHdpbGwgYmUgdXNlZCBpZiBub3Qgc2V0KTwvc3Bhbj48YnIvPg0KKzxzcGFuIHN0eWxlPSJtYXJnaW4tbGVmdDogMTAwcHg7Ij4tLWRiLWhvc3QgJmx0O2FyZyZndDsgICAgICAgICAgICAgICAgKG9wdGlvbmFsKSBETlMgbmFtZSBvciBJUCBhZGRyZXNzIG9mIGRhdGFiYXNlPC9zcGFuPjxici8+DQorPHNwYW4gc3R5bGU9Im1hcmdpbi1sZWZ0OiAxMDBweDsiPi0tZHJvcCAgICAgICAgICAgICAgICAgICAgICAgICAob3B0aW9uYWwpIERyb3AgZGF0YWJhc2UgYmVmb3JlIGluc3RhbGxhdGlvbjwvc3Bhbj48YnIvPg0KKzxzcGFuIHN0eWxlPSJtYXJnaW4tbGVmdDogMTAwcHg7Ij4tLWRiLXVzZXIgJmx0O2FyZyZndDsgICAgICAgICAgICAgICAgKG9wdGlvbmFsKSBVc2VyIHdpdGggd3JpdGUgYWNjZXNzIHRvIHRoZSBEQiBzcGVjaWZpZWQ8L3NwYW4+PGJyLz4NCis8c3BhbiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDEwMHB4OyI+LS1zeXN0ZW0tZW1haWwtYWRkcmVzcyAmbHQ7YXJnJmd0OyAgIChvcHRpb25hbCkgU3lzdGVtIGUtbWFpbCBhZGRyZXNzIFtkZWZhdWx0OiBub3JlcGx5QG9wZW5tZWV0aW5ncy5hcGFjaGUub3JnXTwvc3Bhbj48YnIvPg0KKzxzcGFuIHN0eWxlPSJtYXJnaW4tbGVmdDogMTAwcHg7Ij4tLXBhc3N3b3JkICZsdDthcmcmZ3Q7ICAgICAgICAgICAgICAgKG9wdGlvbmFsKSBQYXNzd29yZCBvZiB0aGUgZGVmYXVsdCB1c2VyLCBtaW5pbXVtIDQgY2hhcmFjdGVycyAod2lsbCBiZSBwcm9tcHRlZCBpZiBub3Qgc2V0KTwvc3Bhbj48YnIvPg0KKzxzcGFuIHN0eWxlPSJtYXJnaW4tbGVmdDogMTAwcHg7Ij4tLWVtYWlsLXVzZS10bHMgICAgICAgICAgICAgICAgKG9wdGlvbmFsKSBJcyBzZWN1cmUgZS1tYWlsIGNvbm5lY3Rpb24gW2RlZmF1bHQ6IG5vXTwvc3Bhbj48YnIvPg0KKzxzcGFuIHN0eWxlPSJtYXJnaW4tbGVmdDogMTAwcHg7Ij4tLWVtYWlsLWF1dGgtdXNlciAmbHQ7YXJnJmd0OyAgICAgICAgKG9wdGlvbmFsKSBFbWFpbCBhdXRoIHVzZXJuYW1lIChhbm9ueW1vdXMgY29ubmVjdGlvbiB3aWxsIGJlIHVzZWQgaWYgbm90IHNldCk8L3NwYW4+PGJyLz4NCis8c3BhbiBzdHlsZT0ibWFyZ2luLWxlZnQ6IDEwMHB4OyI+LS1kYi1wb3J0ICZsdDthcmcmZ3Q7ICAgICAgICAgICAgICAgIChvcHRpb25hbCkgRGF0YWJhc2UgcG9ydDwvc3Bhbj48YnIvPg0KKzxzcGFuIHN0eWxlPSJtYXJnaW4tbGVmdDogMTAwcHg7Ij4tLXNtdHAtcG9ydCAmbHQ7YXJnJmd0OyAgICAgICAgICAgICAgKG9wdGlvbmFsKSBTTVRQIHNlcnZlciBmb3Igb3V0Z29pbmcgZS1tYWlscyBbZGVmYXVsdDogMjVdPC9zcGFuPjxici8+DQorPHNwYW4gc3R5bGU9Im1hcmdpbi1sZWZ0OiAxMDBweDsiPi0tZGItbmFtZSAmbHQ7YXJnJmd0OyAgICAgICAgICAgICAgICAob3B0aW9uYWwpIFRoZSBuYW1lIG9mIE9wZW5tZWV0aW5ncyBkYXRhYmFzZTwvc3Bhbj48YnIvPg0KKzxzcGFuIHN0eWxlPSJtYXJnaW4tbGVmdDogMTAwcHg7Ij4tLWRpc2FibGUtZnJvbnRlbmQtcmVnaXN0ZXIgICAgKG9wdGlvbmFsKSBEbyBub3QgYWxsb3cgZnJvbnQgZW5kIHJlZ2lzdGVyIFthbGxvd2VkIGJ5IGRlZmF1bHRdPC9zcGFuPjxici8+DQorPHNwYW4gc3R5bGU9Im1hcmdpbi1sZWZ0OiAxMDBweDsiPi0tZGItdHlwZSAmbHQ7YXJnJmd0OyAgICAgICAgICAgICAgICAob3B0aW9uYWwpIFRoZSB0eXBlIG9mIHRoZSBEQiB0byBiZSB1c2VkPC9zcGFuPjxici8+DQorPHNwYW4gc3R5bGU9Im1hcmdpbi1sZWZ0OiAxMDBweDsiPi0tc2tpcC1kZWZhdWx0LXJvb21zICAgICAgICAgICAob3B0aW9uYWwpIERvIG5vdCBjcmVhdGUgZGVmYXVsdCByb29tcyBbY3JlYXRlZCBieSBkZWZhdWx0XTwvc3Bhbj48YnIvPg0KKzxzcGFuIHN0eWxlPSJtYXJnaW4tbGVmdDogMTAwcHg7Ij4tLWZvcmNlICAgICAgICAgICAgICAgICAgICAgICAgKG9wdGlvbmFsKSBJbnN0YWxsIHdpdGhvdXQgY2hlY2tpbmcgdGhlIGV4aXN0ZW5jZSBvZiBvbGQgZGF0YSBpbiB0aGUgZGF0YWJhc2UuPC9zcGFuPjxici8+DQorPHNwYW4gc3R5bGU9Im1hcmdpbi1sZWZ0OiAxMDBweDsiPi0tc210cC1zZXJ2ZXIgJmx0O2FyZyZndDsgICAgICAgICAgICAob3B0aW9uYWwpIFNNVFAgc2VydmVyIGZvciBvdXRnb2luZyBlLW1haWxzIFtkZWZhdWx0OiBsb2NhbGhvc3RdPC9zcGFuPjxici8+DQorPHNwYW4gc3R5bGU9Im1hcmdpbi1sZWZ0OiAxMDBweDsiPi0tZGItcGFzcyAmbHQ7YXJnJmd0OyAgICAgICAgICAgICAgICAob3B0aW9uYWwpIFBhc3N3b3JkIG9mIHRoZSB1c2VyIHdpdGggd3JpdGUgYWNjZXNzIHRvIHRoZSBEQiBzcGVjaWZpZWQ8L3NwYW4+PGJyLz4NCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTxici8+DQorIC1mLC0tZmlsZXMgICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGUgb3BlcmF0aW9ucyAtIHN0YXRpY3RpY3MvY2xlYW51cDxici8+DQorPHNwYW4gc3R5bGU9Im1hcmdpbi1sZWZ0OiAxMDBweDsiPi0tY2xlYW51cCAgICAgICAgICAgICAgICAgICAgICAob3B0aW9uYWwpIFNob3VsZCBpbnRlcm1lZGlhdGUgZmlsZXMgYmUgY2xlYW4gdXA8L3NwYW4+PGJyLz4NCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLTxici8+DQorCQkJCTwvZGl2Pg0KKwkJCTwvZGl2Pg0KKwkJPC9zZWN0aW9uPg0KKwk8L2JvZHk+DQorPC9kb2N1bWVudD4NCmRpZmYgLS1naXQgYS94ZG9jcy9Db25mZXJlbmNlUm9vbUxheW91dE9wdGlvbnMueG1sIGIveGRvY3MvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjllNWZlCi0tLSAvZGV2L251bGwKKysrIGIveGRvY3MvQ29uZmVyZW5jZVJvb21MYXlvdXRPcHRpb25zLnhtbApAQCAtMCwwICsxLDkzIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0NCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorDQorICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKw0KKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgLS0+DQorPGRvY3VtZW50Pg0KKw0KKyAgICA8cHJvcGVydGllcz4NCisgICAgICAgIDx0aXRsZT5MYXlvdXQgb3B0aW9ucyBmb3IgYSBjb25mZXJlbmNlIHJvb20gaW4gT3Blbk1lZXRpbmdzPC90aXRsZT4NCisgICAgICAgIDxhdXRob3IgZW1haWw9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+DQorICAgICAgICAgICAgT3Blbk1lZXRpbmdzIFRlYW0NCisgICAgICAgIDwvYXV0aG9yPg0KKyAgICA8L3Byb3BlcnRpZXM+DQorDQorICAgIDxib2R5Pg0KKw0KKyAgICAgICAgPHNlY3Rpb24gbmFtZT0iTGF5b3V0IG9wdGlvbnMgZm9yIGNvbmZlcmVuY2Ugcm9vbXMiPg0KKw0KKyAgICAgICAgICAgIDxwPkVhY2ggcm9vbSBoYXMgYSBudW1iZXIgb2YgYXR0cmlidXRlcyB0byBnZW5lcmF0ZSBkaWZmZXJlbnQgbGF5b3V0cy4NCisgICAgICAgICAgICBZb3UgY2FuIGNoYW5nZSB0aG9zZSB2YWx1ZXMgaW5kaXZpZHVhbGx5IGZvciBlYWNoIHJvb20gaW4gQWRtaW5pc3RyYXRpb24gJmd0OyBSb29tcw0KKyAgICAgICAgICAgIDwvcD4NCisgICAgICAgICAgICA8cD48L3A+DQorICAgICAgICAgICAgPHRhYmxlPg0KKyAgICAgICAgICAgICAgICA8dHI+DQorICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IGtleSA8L3RoPg0KKyAgICAgICAgICAgICAgICAgICAgPHRoIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6IDVweDsiPiBkZWZhdWx0IDwvdGg+DQorICAgICAgICAgICAgICAgICAgICA8dGggc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IG1lYW5pbmcgPC90aD4NCisgICAgICAgICAgICAgICAgICAgIDx0aCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpOyBwYWRkaW5nOiA1cHg7Ij4gYXZhaWxhYmUgc2luY2UgT3Blbk1lZXRpbmdzIHZlcnNpb24gPC90aD4NCisgICAgICAgICAgICAgICAgPC90cj4NCisgICAgICAgICAgICAgICAgPHRyPg0KKyAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6IDVweDsiPiBoaWRlVG9wQmFyIDwvdGQ+DQorICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IGZhbHNlIDwvdGQ+DQorICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IEhpZGUgdGhlIHRvcCBiYXIgd2l0aCB0aGUgbWVudXMgYW5kIGV4aXQgYnV0dG9uIDwvdGQ+DQorICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IDIueCA8L3RkPg0KKyAgICAgICAgICAgICAgICA8L3RyPg0KKyAgICAgICAgICAgICAgICA8dHI+DQorICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IGhpZGVDaGF0IDwvdGQ+DQorICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IGZhbHNlIDwvdGQ+DQorICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IEhpZGUgdGhlIGNoYXQgdGFiIGFuZCB1c2Ugc3BhY2UgZm9yIHdoaXRlYm9hcmQgPC90ZD4NCisgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpOyBwYWRkaW5nOiA1cHg7Ij4gMi54IDwvdGQ+DQorICAgICAgICAgICAgICAgIDwvdHI+DQorICAgICAgICAgICAgICAgIDx0cj4NCisgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpOyBwYWRkaW5nOiA1cHg7Ij4gaGlkZUFjdGl2aXRpZXNBbmRBY3Rpb25zIDwvdGQ+DQorICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IGZhbHNlIDwvdGQ+DQorICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IEhpZGUgdGhlIGFjdGl2aXRpZXMgd2luZG93IHdpdGggdGhlIG5vdG9maWNhdGlvbnMgYWJlciB1c2VyIGFjdGl2aXRpZXM8L3RkPg0KKyAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6IDVweDsiPiAyLnggPC90ZD4NCisgICAgICAgICAgICAgICAgPC90cj4NCisgICAgICAgICAgICAgICAgPHRyPg0KKyAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6IDVweDsiPiBoaWRlRmlsZXNFeHBsb3JlciA8L3RkPg0KKyAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6IDVweDsiPiBmYWxzZSA8L3RkPg0KKyAgICAgICAgICAgICAgICAgICAgPHRkIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6IDVweDsiPiBIaWRlIHRoZSBmaWxlIGV4cGxvcmVyPC90ZD4NCisgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpOyBwYWRkaW5nOiA1cHg7Ij4gMi54IDwvdGQ+DQorICAgICAgICAgICAgICAgIDwvdHI+DQorICAgICAgICAgICAgICAgIDx0cj4NCisgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpOyBwYWRkaW5nOiA1cHg7Ij4gaGlkZUFjdGlvbnNNZW51IDwvdGQ+DQorICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IGZhbHNlIDwvdGQ+DQorICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IEhpZGUgdGhlIG1lbnUgd2l0aCB0aGUgYWN0aW9uczwvdGQ+DQorICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IDIueCA8L3RkPg0KKyAgICAgICAgICAgICAgICA8L3RyPg0KKyAgICAgICAgICAgICAgICA8dHI+DQorICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IGhpZGVTY3JlZW5TaGFyaW5nIDwvdGQ+DQorICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IGZhbHNlIDwvdGQ+DQorICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IEhpZGUgdGhlIGJ1dHRvbiB0byBzdGFydCBzY3JlZW5zaGFyaW5nL3JlY29yZGluZzwvdGQ+DQorICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IDIueCA8L3RkPg0KKyAgICAgICAgICAgICAgICA8L3RyPg0KKyAgICAgICAgICAgICAgICA8dHI+DQorICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IGhpZGVXaGl0ZWJvYXJkIDwvdGQ+DQorICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IGZhbHNlIDwvdGQ+DQorICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IEhpZGUgdGhlIHdoaXRlYm9hcmQsIGlmIHRoaXMgb3B0aW9uIGlzIHRydWUsIHRoZSB2aWRlb3Mgd2lsbCBiZSBpbiB0aGUgYXJlYSBvZiB0aGUgd2hpdGVib2FyZDwvdGQ+DQorICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IDIueCA8L3RkPg0KKyAgICAgICAgICAgICAgICA8L3RyPg0KKyAgICAgICAgICAgICAgICA8dHI+DQorICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IHNob3dNaWNyb3Bob25lU3RhdHVzIDwvdGQ+DQorICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IGZhbHNlIDwvdGQ+DQorICAgICAgICAgICAgICAgICAgICA8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IFNob3cgdGhlIGN1cnJlbnQgc3RhdHVzIG9mIHRoZSBtaWNyb3Bob25lIChvZmYvb24pIG9uIHRoZSBib3R0b20gb2YgZWFjaCB2aWRlbyB2aWV3PC90ZD4NCisgICAgICAgICAgICAgICAgICAgIDx0ZCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpOyBwYWRkaW5nOiA1cHg7Ij4gMi54IDwvdGQ+DQorICAgICAgICAgICAgICAgIDwvdHI+DQorICAgICAgICAgICAgPC90YWJsZT4NCisNCisgICAgICAgIDwvc2VjdGlvbj4NCisgICAgICAgIA0KKyAgICA8L2JvZHk+DQorDQorPC9kb2N1bWVudD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS94ZG9jcy9Db25mbHVlbmNlUGx1Z2luLnhtbCBiL3hkb2NzL0NvbmZsdWVuY2VQbHVnaW4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFkOTAxYTIKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9Db25mbHVlbmNlUGx1Z2luLnhtbApAQCAtMCwwICsxLDU5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0NCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorDQorICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKw0KKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgLS0+DQorPGRvY3VtZW50Pg0KKw0KKwk8cHJvcGVydGllcz4NCisJCTx0aXRsZT5Db25mbHVlbmNlIFBsdWdpbjwvdGl0bGU+DQorCQk8YXV0aG9yIGVtYWlsPSJldWdlbi5zY2h3ZXJ0QGdtYWlsLmNvbSI+DQorCQkJT3Blbk1lZXRpbmdzIFRlYW0NCisJCTwvYXV0aG9yPg0KKwk8L3Byb3BlcnRpZXM+DQorDQorCTxib2R5Pg0KKw0KKwkJPHNlY3Rpb24gbmFtZT0iQ29uZmx1ZW5jZSBQbHVnaW4gZm9yIE9wZW5NZWV0aW5ncyI+DQorCQkJPHA+CQkJCQ0KKwkJCQlDdXJyZW50IERldmVsb3BtZW50IFNuYXBzaG90cyBmb3IgdGVzdGluZyBjYW4gYmUgZG93bmxvYWRlZCBmcm9tOg0KKwkJCQk8YSBocmVmPSJodHRwczovL3N2bi5hcGFjaGUub3JnL3JlcG9zL2FzZi9vcGVubWVldGluZ3MvYnJhbmNoZXMvY29uZmx1ZW5jZS1wbHVnaW4vdGFyZ2V0L29wZW5tZWV0aW5nc2NvbmZsdWVuY2UtMS4wLVNOQVBTSE9ULmphciI+aGVyZTwvYT4NCisJCQkJLg0KKwkJCTwvcD4JCQkNCisJCTwvc2VjdGlvbj4NCisJCQ0KKwkJPHNlY3Rpb24gbmFtZT0iRmVhdHVyZXMiPg0KKwkJCTxwPlRoZSBwbHVnaW4gY29udGFpbnMgdGhlIGZvbGxvd2luZyBmZWF0dXJlczogPC9wPg0KKwkJCTx1bD4NCisJCQkJPGxpPkNyZWF0ZSB2aWRlb2NvbmZlcmVuY2Ugcm9vbXMgdGhyb3VnaCBDb25mbHVlbmNlOiA8L2xpPg0KKwkJCQk8bGk+DQorCQkJCQk8b2w+DQorCQkJCQkJPGxpPkludGVncmF0ZWQgd2l0aCBDb25mbHVlbmNlIGNvbnRlbnQgPC9saT4JCQkJCQkJCQkJDQorCQkJCQkJPGxpPkNvbmZpZ3VyYWJsZSByb29tIHR5cGUgPC9saT4NCisJCQkJCTwvb2w+DQorCQkJCTwvbGk+DQorCQkJPC91bD4NCisJCTwvc2VjdGlvbj4JDQorCQkNCisJCTxzZWN0aW9uIG5hbWU9IkRlbW8gdmlkZW8iPgkJCQ0KKwkJCTxwPlRoZSBkZW1vIHZpZGVvIG9mIENvbmZsdWVuY2UgcGx1Z2luIHNob3cgeW91IHRoZSBwbHVnaW4gaW4gYWN0aW9uIDwvcD4gICAgICAgICAgICAgIA0KKwkJICAgICAgPG9iamVjdCBzdHlsZT0iaGVpZ2h0OiAzOTBweDsgd2lkdGg6IDY0MHB4Ij4NCisJCQkgICAgICA8cGFyYW0gbmFtZT0ibW92aWUiIHZhbHVlPSJodHRwOi8vd3d3LnlvdXR1YmUuY29tL3YvWUZLbFhnZ3RsZDA/dmVyc2lvbj0zJmFtcDtmZWF0dXJlPXBsYXllcl9kZXRhaWxwYWdlIi8+DQorCQkJICAgICAgPHBhcmFtIG5hbWU9ImFsbG93RnVsbFNjcmVlbiIgdmFsdWU9InRydWUiLz4NCisJCQkgICAgICA8cGFyYW0gbmFtZT0iYWxsb3dTY3JpcHRBY2Nlc3MiIHZhbHVlPSJhbHdheXMiLz4NCisJCQkgICAgICA8ZW1iZWQgc3JjPSJodHRwOi8vd3d3LnlvdXR1YmUuY29tL3YvWUZLbFhnZ3RsZDA/dmVyc2lvbj0zJmFtcDtmZWF0dXJlPXBsYXllcl9kZXRhaWxwYWdlIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgYWxsb3dmdWxsc2NyZWVuPSJ0cnVlIiBhbGxvd1NjcmlwdEFjY2Vzcz0iYWx3YXlzIiB3aWR0aD0iNjQwIiBoZWlnaHQ9IjM2MCIvPg0KKwkJICAgICAgPC9vYmplY3Q+IA0KKwkJPC9zZWN0aW9uPg0KKw0KKwk8L2JvZHk+DQorDQorPC9kb2N1bWVudD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS94ZG9jcy9DdXN0b21DcnlwdE1lY2hhbmlzbS54bWwgYi94ZG9jcy9DdXN0b21DcnlwdE1lY2hhbmlzbS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWMzY2JkMwotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL0N1c3RvbUNyeXB0TWVjaGFuaXNtLnhtbApAQCAtMCwwICsxLDkwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0NCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorDQorICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKw0KKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgLS0+DQorPGRvY3VtZW50Pg0KKwk8cHJvcGVydGllcz4NCisJCTx0aXRsZT5Ib3d0byBjcmVhdGUgYSBDdXN0b20gQ3J5cHQgc3R5bGVzPC90aXRsZT4NCisJCTxhdXRob3IgZW1haWw9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+DQorCQkJT3Blbk1lZXRpbmdzIFRlYW0NCisJCTwvYXV0aG9yPg0KKwk8L3Byb3BlcnRpZXM+DQorCTxib2R5Pg0KKwkJPHNlY3Rpb24gbmFtZT0iQ29uZmlndXJhdGlvbiBvZiBDdXN0b20gQ3J5cHQtU3R5bGUiPg0KKwkJCTxwPg0KKwkJCQlZb3UgY2FuIHVzZSBjdXN0b20gQ3J5cHQtVHlwZXMsIGJ1dCB5b3Ugc2hvdWxkIGRlY2lkZSBkdXJpbmcNCisJCQkJaW5zdGFsbGF0aW9uIHdoaWNoIFR5cGUgb2YgZW5jcnlwdGlvbiB5b3Ugd2FudCB0byB1c2UuIEJ5IGRlZmF1bHQNCisJCQkJdHdvIHR5cGUgYXJlIGF2YWlsYWJsZToNCisJCQk8L3A+DQorDQorCQkJPHVsPg0KKwkJCQk8bGk+b3JnLnhtbGNybS51dGlscy5jcnlwdC5NRDVJbXBsZW1lbnRhdGlvbiAtIHRoaXMgdXNlcyBjb21tb24gTUQ1DQorCQkJCQlDcnlwdCBsaWtlIFBIUCBkb2VzLCB0aGlzIGlzIHRoZSBkZWZhdWx0IG9uZSAocmVzdWx0cyBpbiBzb21ldGhpbmcNCisJCQkJCWxpa2U6IGZlMDFjZTJhN2ZiYWM4ZmFmYWVkN2M5ODJhMDRlMjI5KTwvbGk+DQorCQkJCTxsaT5vcmcueG1sY3JtLnV0aWxzLmNyeXB0Lk1ENUNyeXB0SW1wbGVtZW50YXRpb24gLSBkb2VzIHVzZQ0KKwkJCQkJQlNELVN0eWxlIG9mIGVuY3J5cHRpb24gdXNpbmcgYSBzYWx0IChyZXN1bHRzIGluIHNvbWV0aGluZyBsaWtlOg0KKwkJCQkJJDEkR01zajdGMkkkNVMzcjlDZXVrWEdYTndmNmI0c3BoMSk8L2xpPg0KKwkJCTwvdWw+DQorCQkJPHA+DQorCQkJCVlvdSBjYW4gZWRpdCB0aGUgY29uZmlnLWtleSBkdXJpbmcgSW5zdGFsbGF0aW9uIG9yIGxhdGVyIGluIHRoZQ0KKwkJCQlBZG1pbmlzdHJhdGlvbiBQYW5lbC4gQnV0IGlmIHlvdSBjaGFuZ2UgaXQgdXNpbmcgdGhlDQorCQkJCUFkbWluaXN0cmF0aW9uLVBhbmVsIHByZXZpb3VzIHBhc3N3b3JkcyBtaWdodCBiZSBub3Qgd29ya2luZyBhbnltb3JlDQorCQkJCWFzIHRoZXkgYXJlIGVuY3J5cHRlZCB3aXRoIGFub3RoZXIgYWxnb3JpdGhtLg0KKwkJCTwvcD4NCisJCTwvc2VjdGlvbj4NCisJCTxzZWN0aW9uIG5hbWU9IkNvbmZpZ3VyYXRpb24gb2YgQ3VzdG9tIENyeXB0LVN0eWxlIj4NCisJCQk8cD4NCisJCQkJVG8gYWRkIHlvdXIgb3duIGNyeXB0IHN0eWxlIHlvdSBuZWVkIHRvIHdyaXRlIGEgY2xhc3Mgd2hpY2gNCisJCQkJaW1wbGVtZW50cyB0aGUgaW50ZXJmYWNlOiBvcmcueG1sY3JtLnV0aWxzLmNyeXB0Q3J5cHRTdHJpbmcNCisJCQkJPGJyIC8+DQorCQkJCWFuZCBleHRlbmRzIHRoZSBBZGFwdGVyOiBvcmcueG1sY3JtLnV0aWxzLkNyeXB0U3RyaW5nQWRhcHRlcg0KKwkJCQk8YnIgLz4NCisJCQkJRXhhbXBsZSBvZiBhbiBJbXBsZW1lbnRhdGlvbjoNCisJCQk8L3A+DQorCQkJPGRpdiBjbGFzcz0ieG1sY29kZSI+DQorCQkJCXBhY2thZ2Ugb3JnLnhtbGNybS51dGlscy5jcnlwdDsNCisJCQkJDQorCQkJCWltcG9ydCBqYXZhLnNlY3VyaXR5Lk5vU3VjaEFsZ29yaXRobUV4Y2VwdGlvbjsNCisJCQkJDQorCQkJCXB1YmxpYyBjbGFzcyBNRDVJbXBsZW1lbnRhdGlvbiBleHRlbmRzIENyeXB0U3RyaW5nQWRhcHRlciBpbXBsZW1lbnRzIENyeXB0U3RyaW5nIHsNCisJCQkJDQorCQkJCSAgICAgICAgQE92ZXJyaWRlDQorCQkJCSAgICAgICAgcHVibGljIFN0cmluZyBjcmVhdGVQYXNzUGhyYXNlKFN0cmluZyB1c2VyR2l2ZW5QYXNzKSB7DQorCQkJCSAgICAgICAgICAgICAgICBTdHJpbmcgcGFzc1BocmFzZSA9IG51bGw7DQorCQkJCSAgICAgICAgICAgICAgICB0cnkgew0KKwkJCQkgICAgICAgICAgICAgICAgICAgICAgICBwYXNzUGhyYXNlID0gTUQ1LmRvX2NoZWNrc3VtKHVzZXJHaXZlblBhc3MpOw0KKwkJCQkgICAgICAgICAgICAgICAgfSBjYXRjaCAoTm9TdWNoQWxnb3JpdGhtRXhjZXB0aW9uIGUpIHsNCisJCQkJICAgICAgICAgICAgICAgICAgICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsNCisJCQkJICAgICAgICAgICAgICAgIH0NCisJCQkJICAgICAgICAgICAgICAgIHJldHVybiBwYXNzUGhyYXNlOw0KKwkJCQkgICAgICAgIH0NCisJCQkJDQorCQkJCSAgICAgICAgQE92ZXJyaWRlDQorCQkJCSAgICAgICAgcHVibGljIEJvb2xlYW4gdmVyaWZ5UGFzc3dvcmQoU3RyaW5nIHBhc3NHaXZlbiwgU3RyaW5nIHBhc3N3ZEZyb21EYikgew0KKwkJCQkgICAgICAgICAgICAgICAgcmV0dXJuIChwYXNzd2RGcm9tRGIuZXF1YWxzKGNyZWF0ZVBhc3NQaHJhc2UocGFzc0dpdmVuKSkpOw0KKwkJCQkgICAgICAgIH0NCisJCQkJICAgICAgICANCisJCQkJfQ0KKwkJCTwvZGl2Pg0KKwkJCTxwPlRvIGFkZCB5b3VyIG93biBFbmNyeXB0aW9uLUNsYXNzIHlvdSBuZWVkIHRvIGFkZCB5b3VyIGNsYXNzIHRvIHRoZQ0KKwkJCQlPcGVuTWVldGluZ3MtV2ViYXBwIChtYWtlIGl0IGF2YWlsYWJsZSB0byB0aGUgd2ViYXBwLWNsYXNzcGF0aCkgYW5kDQorCQkJCXVzZSB5b3VyIGN1c3RvbS1jbGFzcy1uYW1lIGluc3RlYWQgb2YNCisJCQkJb3JnLnhtbGNybS51dGlscy5jcnlwdC5NRDVJbXBsZW1lbnRhdGlvbiBkdXJpbmcgdGhlIEluc3RhbGxhdGlvbiBvcg0KKwkJCQlhdCBydW50aW1lIGJ5IGVkaXRpbmcgdGhlIGNvbmZpZy1rZXkgY3J5cHRfQ2xhc3NOYW1lPC9wPg0KKwkJPC9zZWN0aW9uPg0KKwkJPHNlY3Rpb24gbmFtZT0iQ29uZmlndXJhdGlvbiBvZiBDdXN0b20gQ3J5cHQtU3R5bGUiPg0KKwkJCTxwPmNyZWRpdHMgZ290byBNaWthIGZvciBzaGFyaW5nIGhpcyBJbXBsZW1lbnRhdGlvbiBvZiB0aGUNCisJCQkJTUQ1Q3J5cHQtU3R5bGU8L3A+DQorCQk8L3NlY3Rpb24+DQorCTwvYm9keT4NCis8L2RvY3VtZW50Pg0KZGlmZiAtLWdpdCBhL3hkb2NzL0N1c3RvbVJvb21UeXBlSG93VG8ueG1sIGIveGRvY3MvQ3VzdG9tUm9vbVR5cGVIb3dUby54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzllMWIxMwotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL0N1c3RvbVJvb21UeXBlSG93VG8ueG1sCkBAIC0wLDAgKzEsMTA0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0NCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorDQorICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKw0KKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgLS0+DQorPGRvY3VtZW50Pg0KKw0KKwk8cHJvcGVydGllcz4NCisJCTx0aXRsZT5Ib3d0byBjcmVhdGUgYSBjdXN0b20gcm9vbSB0eXBlIGluIE9wZW5NZWV0aW5nczwvdGl0bGU+DQorCQk8YXV0aG9yIGVtYWlsPSJzZWJhd2FnbmVyQGFwYWNoZS5vcmciPg0KKyAgICAgICAgICAgIE9wZW5NZWV0aW5ncyBUZWFtDQorCQk8L2F1dGhvcj4NCisJPC9wcm9wZXJ0aWVzPg0KKw0KKwk8Ym9keT4NCisNCisJCTxzZWN0aW9uIG5hbWU9IldoeSBjcmVhdGluZyBhIGN1c3RvbSByb29tIHR5cGUgaW4gT3Blbk1lZXRpbmdzIj4NCisNCisJCQk8cD5JZiB5b3Ugd2FudCB0byBjcmVhdGUgeW91ciBvd24gc3R5bGVkIHJvb20gdGhlIGJlc3QgdGhpbmcgdG8gZG8gaW4gDQorICAgICAgICAgICAgb3JkZXIgdG8gYmUgInVwZGF0ZS1zYXZlIiBpcyB0byBjcmVhdGUgeW91ciBvd24gY3VzdG9tIHJvb20gdHlwZS4gVGhlcmUgaXMgYW4gZW1wdHkgY29uZmlndXJhdGlvbiANCisJCQkJYnkgZGVmYXVsdCBzaGlwcGVkIHdpdGggZXZlcnkgcmVsZWFzZSBvZiBPcGVuTWVldGluZ3MsIHRoZSByb29tIHR5cGUgImN1c3RvbSIgKElEID0gNSkuPGJyLz4NCisJCQkJPGJyLz4NCisgICAgICAgICAgICBZb3UgY2FuIHVzZSB0aGF0IGFuZCBleHRlbmQgaXQsIG9yIHlvdSBjYW4gYWRkIG1vcmUgcm9vbSB0eXBlcyB0byBmaXQgeW91ciB1c2UgY2FzZS4NCisJCQk8L3A+DQorCQkJPHA+PC9wPg0KKwkJPC9zZWN0aW9uPg0KKwkJDQorCQk8c2VjdGlvbiBuYW1lPSJDcmVhdGUgeW91ciBvd24gcm9vbSB0eXBlIGNsYXNzIChVc2VyIEludGVyZmFjZSkiPg0KKwkJCQ0KKwkJCTxwPkxldHMgc3RhcnQgYnkgY3JlYXRpbmcgeW91ciBjdXN0b20gcm9vbSB0eXBlIGNsYXNzLg0KKwkJCQk8YnIvPg0KKwkJCQkJWW91IGNvdWxkIGZvciBleGFtcGxlIGR1cGxpY2F0ZSBhbiBleGlzdGluZyByb29tIGNsYXNzLCBmcm9tIDxici8+DQorCQkJCQk8dHQ+c3JjL21vZHVsZXMvY29uZmVyZW5jZS9mbGV4aWJsZUNvbmZlcmVuY2VSb29tPC90dD4gZm9sZGVyLCBmb3IgZXhhbXBsZSB0aGUgDQorCQkJZmxleGlibGVDb25mZXJlbmNlUm9vbS5seng6IEdlbmVyYXRlIGEgZHVwbGljYXRlLCBjaGFuZ2UgdGhlIG5hbWUsIGZvciBleGFtcGxlIHRvIA0KKwkJCW15Q3VzdG9tQ29uZmVyZW5jZVJvb20ubHp4IGFuZCBlZGl0IHRoZSBjbGFzcyBuYW1lIGluc2lkZSB0aGUgZmlsZSBuYW1lPSJmbGV4aWJsZUNvbmZlcmVuY2VSb29tIiB0bw0KKwkJCW5hbWU9Im15Q3VzdG9tQ29uZmVyZW5jZVJvb20iLiBBbHNvIGRvbid0IG1pc3MgdG8gYWRkIGFuIGVudHJ5IHRvIGxpYnJhcnkubHp4IHNvIHRoYXQgdGhlIGNvbXBpbGVyIA0KKwkJCXdpbGwgZmluZCB5b3VyIG5ldyBjbGFzcy4NCisJCQk8L3A+DQorCQkJDQorCQk8L3NlY3Rpb24+DQorICAgICAgICANCisJCTxzZWN0aW9uIG5hbWU9IkNyZWF0ZSBuZXNzZWNjYXJ5IGVudHJpZXMgaW4gY29uZmlndXJhdGlvbiB0YWJsZXMiPg0KKyAgICAgICAgCQ0KKwkJCTxwPllvdSBmaXJzdCBuZWVkIHRvIGNyZWF0ZSBhIG51bWJlciBvZiBjb25maWd1cmF0aW9uIGZpbGVzIDwvcD4NCisJCQk8dWw+DQorCQkJCTxsaT5UbyBoYXZlIHlvdXIgcm9vbXR5cGUgYXZhaWxhYmxlIGV2ZXJ5dGltZSB5b3UgaW5zdGFsbCBPcGVuTWVldGluZ3MgeW91IG5lZWQgdG8gYWRkIA0KKwkJCQkJaXQgdG8gdGhlIGRlZmF1bHQgcm9vbXM6IDx0dD5JbXBvcnRJbml0dmFsdWVzLmphdmEgTWV0aG9kOiBsb2FkRGVmYXVsdFJvb21zKCk8L3R0Pi4gQWRkIHlvdXIgZW50cnkgaGVyZS4gDQorCQkJCVlvdSBjYW4gY2hvb3NlIGFueSByYW5kb20gbmFtZSBmb3IgdGhlIHJvb20uIFRoZSBJRCBpcyB0aGUgaW1wb3J0YW50IHRyaWdnZXIgZm9yIHRoZSByb29tIHR5cGUgDQorCQkJCXRvIGlkZW50aWZ5IGxhdGVyLiBZb3UgbmVlZCB0byBydW4gdGhlIGluc3RhbGxlciBzbyB0aGF0IHlvdXIgbmV3IHJvb20gdHlwZSBpcyBpbiB0aGUgZGF0YWJhc2UuPC9saT4NCisJCQkJDQorCQkJCTxsaT5BZGQgeW91ciByb29tIHR5cGUgaW4gdGhlIGRlZmF1bHQgbW9kdWxlIGNvbmZpZ3VyYXRpb246IA0KKwkJCQkJPHR0PnNyYy9iYXNlL21vZHVsZUNvbmZpZ3VyYXRpb24ubHp4PC90dD4sIA0KKwkJCQloZXJlIHlvdSBuZWVkIHRvIGFkZCBhIGRlZmF1bHQgY2xhc3MgbmFtZSBmb3IgeW91ciByb29tIHR5cGUgPC9saT4NCisJCQkJDQorCQkJCTxsaT5BZGQgeW91ciByb29tIHR5cGUgaW4gdGhlIHJlYWwgY29uZmlndXJhdGlvbjogY29uZmlnLnhtbCwgYWRkIGEgbmV3IGVudHJ5Lg0KKwkJCQkJPGJyLz4NCisJCQkJCVlvdSBzaG91bGQgZml4IGFsc28gdGhlIGZpbGUgPHR0Pm9wZW5tZWV0aW5ncy1jb25maWcueHNkPC90dD4gdGhhdCBpcyB0aGUgU2NoZW1hIGZpbGUgZm9yIHRoZSBjb25maWcueG1sLg0KKwkJCQk8L2xpPg0KKyAgICAgICAgCQkNCisJCQkJPGxpPkFkZCBhIHBhcnNlciBlbnRyeSB0byBtb2RpZnkgdGhlIHJvb20gdHlwZSBtYXBwaW5nOiANCisJCQkJCTx0dD5iYXNlL21haW5NZXRob2RzLmx6eCBtZXRob2Q6IG15aW5pdDwvdHQ+LiBZb3UgDQorICAgICAgICAJCWNhbiBzZWUgc29tZSBleGFtcGxlIHBhcnNpbmcsIHlvdSBzaG91bGQgYWRkIHlvdXIgb25lIHNpbWlsYXIgdG8gdGhlIGV4aXN0aW5nIHJvb20gdHlwZXMuPC9saT4NCisgICAgICAgIAkJDQorCQkJPC91bD4NCisJCQkNCisJCTwvc2VjdGlvbj4NCisJCQ0KKwkJPHNlY3Rpb24gbmFtZT0iTGluayB5b3VyIHJvb20gdHlwZSBjb25maWcgd2l0aCB5b3VyIHJvb20gdHlwZSBjbGFzcyAiPg0KKwkJCQ0KKwkJCTxwPk5vdyB5b3UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCBldmVyeXRpbWUgdGhlIGNvbmZlcmVuY2Ugcm9vbSBpcyBjcmVhdGVkIA0KKwkJCXlvdXIgbmV3IGNsYXNzICJteUN1c3RvbUNvbmZlcmVuY2VSb29tIiBpcyB1c2VkLiBUaGVyZSBhcmUgMyBwbGFjZXMgeW91IG5lZWQgdG8gYWRkIHlvdXIgbWFwcGluZy48L3A+DQorCQkJDQorCQkJPHVsPg0KKwkJCQk8bGk+SW4gdGhlIGdsb2JhbCBtYXBwaW5nOiANCisJCQkJCTx0dD5iYXNlL21haW5NZXRob2RzLmx6eCBtZXRob2QgbmFtZT0ic2V0Um9vbVZhbHVlcyI8L3R0PiANCisJCQkJPC9saT4NCisJCQkJPGxpPkluIGZpbGU6IA0KKwkJCQkJPHR0Pm1vZHVsZXMvY29uZmVyZW5jZS9jb25mZXJlbmNlL3Jvb21MaXN0SXRlbS5senggbWV0aG9kIG5hbWU9ImluaXRSb29tIjwvdHQ+IA0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+SW4gZmlsZTogDQorCQkJCQk8dHQ+bW9kdWxlcy9pbnZpdGF0aW9uL2F1dG9sb2FkZXJCYXJPbmx5Lmx6eCBuZXRSZW1vdGVDYWxsSGliIG5hbWU9InNldFVzZXJuYW1lQW5kU2Vzc2lvbiI8L3R0PiANCisJCQkJPC9saT4NCisJCQk8L3VsPg0KKwkJCQ0KKwkJCTxwPlRoYXRzIGl0LiBZb3UgY2FuIGFkZC9lZGl0L2RlbGV0ZSB5b3VyIHJvb20gd2l0aCB0aGUgbmV3IHJvb20gdHlwZSBpbiB0aGUgQWRtaW5pc3RyYXRpb24gPiBSb29tcyBpbnRlcmZhY2Ugb2YgDQorCQkJT3Blbk1lZXRpbmdzIGxpa2UgYW55IG90aGVyIHJvb20uPC9wPg0KKwkJCTxwPklmIHlvdSBuZWVkIHRvIGhhdmUgdGhpcyByb29tIHR5cGUgYXZhaWxhYmxlIGFzIG9wdGlvbiBpbiB0aGUgQ2FsZW5kYXIgVUksIHlvdSBuZWVkIHRvIGFkZCBpdCB0byB0aGUgY29tYm9ib3ggbWFudWFsbHkuPC9wPg0KKwkJCQ0KKwkJPC9zZWN0aW9uPg0KKwkJDQorCQkNCisNCisJPC9ib2R5Pg0KKw0KKzwvZG9jdW1lbnQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEveGRvY3MvRGFzaGJvYXJkLnhtbCBiL3hkb2NzL0Rhc2hib2FyZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQ1Y2YwOAotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL0Rhc2hib2FyZC54bWwKQEAgLTAsMCArMSw3NyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8IS0tDQorICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKw0KKyAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisNCisgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorIC0tPg0KKzxkb2N1bWVudD4NCisNCisJPHByb3BlcnRpZXM+DQorCQk8dGl0bGU+Q2hhbmdpbmcgRGFzaGJvYXJkPC90aXRsZT4NCisJCTxhdXRob3IgZW1haWw9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+DQorCQkJT3Blbk1lZXRpbmdzIFRlYW0NCisJCTwvYXV0aG9yPg0KKwk8L3Byb3BlcnRpZXM+DQorDQorCTxib2R5Pg0KKw0KKwkJPHNlY3Rpb24gbmFtZT0iQ2hhbmdpbmcgRGFzaGJvYXJkIj4NCisNCisJCQk8cD5Zb3UgY2FuIGNvbmZpZ3VyZSB0aGUgdGFicyB0aGF0IGFyZSB2aXNpYmxlIGJ5IGRlZmF1bHQgYXQgYm90dG9tDQorCQkJCW9mIHRoZSBkYXNoYm9hcmQuIFRvIGVkaXQgdGhlIHNldHRpbmdzLCBsb2dpbiBhcyBhZG1pbiBhbmQgZ290bw0KKwkJCQlBZG1pbmlzdHJhdGlvbiAmZ3Q7IENvbmZpZ3VyYXRpb24gPC9wPg0KKwkJCTxwPjwvcD4NCisJCQk8dGFibGU+DQorCQkJCTx0cj4NCisJCQkJCTx0aCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpOyBwYWRkaW5nOiA1cHg7Ij4gQ29uZmlnLWtleSA8L3RoPg0KKwkJCQkJPHRoIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6IDVweDsiPiBWYWx1ZXMgPC90aD4NCisJCQkJCTx0aCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpOyBwYWRkaW5nOiA1cHg7Ij4gTWVhbmluZyA8L3RoPg0KKwkJCQk8L3RyPg0KKwkJCQk8dHI+DQorCQkJCQk8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IGRlZmF1bHQuZGFzaGJvYXJkLnRhYiA8L3RkPg0KKwkJCQkJPHRkIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6IDVweDsiPiAwLDEsMiA8L3RkPg0KKwkJCQkJPHRkIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6IDVweDsiPiBXaGljaCB0YWIgc2hvdWxkIGJlIHNob3duIGJ5IGRlZmF1bHQsIGNvdW50aW5nDQorCQkJCQkJc3RhcnRzIHdpdGggMA0KKwkJCQkJPC90ZD4NCisJCQkJPC90cj4NCisJCQkJPHRyPg0KKwkJCQkJPHRkIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6IDVweDsiPiBkYXNoYm9hcmQuc2hvdy5teXJvb21zIDwvdGQ+DQorCQkJCQk8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IDAgb3IgMSA8L3RkPg0KKwkJCQkJPHRkIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6IDVweDsiPiBJZiB0aGUgTXlSb29tcyB0YWIgc2hvdWxkIGJlIHZpc2libGUgb3Igbm90IDwvdGQ+DQorCQkJCTwvdHI+DQorCQkJCTx0cj4NCisJCQkJCTx0ZCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpOyBwYWRkaW5nOiA1cHg7Ij4gZGFzaGJvYXJkLnNob3cuY2hhdCA8L3RkPg0KKwkJCQkJPHRkIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6IDVweDsiPiAwIG9yIDEgPC90ZD4NCisJCQkJCTx0ZCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpOyBwYWRkaW5nOiA1cHg7Ij4gSWYgdGhlIENoYXQgdGFiIHNob3VsZCBiZSB2aXNpYmxlIG9yIG5vdCA8L3RkPg0KKwkJCQk8L3RyPg0KKwkJCQk8dHI+DQorCQkJCQk8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IGRhc2hib2FyZC5zaG93LnJzc2ZlZWQgPC90ZD4NCisJCQkJCTx0ZCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpOyBwYWRkaW5nOiA1cHg7Ij4gMCBvciAxIDwvdGQ+DQorCQkJCQk8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IElmIHRoZSBSU1MtRmVlZCB0YWIgc2hvdWxkIGJlIHZpc2libGUgb3Igbm90IDwvdGQ+DQorCQkJCTwvdHI+DQorCQkJCTx0cj4NCisJCQkJCTx0ZCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpOyBwYWRkaW5nOiA1cHg7Ij4gcnNzX2ZlZWQxIDwvdGQ+DQorCQkJCQk8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IGh0dHAtVVJMIDwvdGQ+DQorCQkJCQk8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IEFUT00tRmVlZCBVUkwgZm9yIHRoZSBkYXNoYm9hcmQgUlNTIFRhYiA8L3RkPg0KKwkJCQk8L3RyPg0KKwkJCQk8dHI+DQorCQkJCQk8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IHJzc19mZWVkMiA8L3RkPg0KKwkJCQkJPHRkIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6IDVweDsiPiBodHRwLVVSTCA8L3RkPg0KKwkJCQkJPHRkIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6IDVweDsiPiBBVE9NLUZlZWQgVVJMIGZvciB0aGUgZGFzaGJvYXJkIFJTUyBUYWIgPC90ZD4NCisJCQkJPC90cj4NCisJCQk8L3RhYmxlPg0KKwkJCTxwPjwvcD4NCisJCQk8cD5DaGFuZ2VzIGFyZSBpbW1lZGlhdGVseSBvbmxpbmUsIG5vIG5lZWQgdG8gcmVzdGFydCBhbnl0aGluZy4gPC9wPg0KKwkJPC9zZWN0aW9uPg0KKw0KKwk8L2JvZHk+DQorDQorPC9kb2N1bWVudD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS94ZG9jcy9EcnVwYWxQbHVnaW4ueG1sIGIveGRvY3MvRHJ1cGFsUGx1Z2luLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjdmM2I2Ci0tLSAvZGV2L251bGwKKysrIGIveGRvY3MvRHJ1cGFsUGx1Z2luLnhtbApAQCAtMCwwICsxLDc4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0NCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorDQorICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKw0KKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgLS0+DQorPGRvY3VtZW50Pg0KKw0KKwk8cHJvcGVydGllcz4NCisJCTx0aXRsZT5EcnVwYWwgUGx1Z2luPC90aXRsZT4NCisJCTxhdXRob3IgZW1haWw9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+DQorCQkJT3Blbk1lZXRpbmdzIFRlYW0NCisJCTwvYXV0aG9yPg0KKwk8L3Byb3BlcnRpZXM+DQorDQorCTxib2R5Pg0KKw0KKwkJPHNlY3Rpb24gbmFtZT0iRHJ1cGFsIFBsdWdpbiBmb3IgT3Blbk1lZXRpbmdzIj4NCisJCQk8cD4NCisJCQkJWW91IGNhbiBnZXQgdGhlIGxhdGVzdCBWZXJzaW9uIG9mIHRoZSBQbHVnaW4gZm9yIERydXBhbCBmb3IgT3Blbk1lZXRpbmdzIGF0ICANCisJCQkJPGEgaHJlZj0iaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9hL2FwYWNoZS1leHRyYXMub3JnL2hvc3Rpbmcvc2VhcmNoP3E9b3Blbm1lZXRpbmdzIj5hcGFjaGUtZXh0cmFzLm9yZzwvYT4NCisJCQkJLiBKdXN0IGdvdG8gdGhlIERydXBhbCBwbHVnaW4gYW5kIG5hdmlnYXRlIHRvIHRoZSBwcm9qZWN0Lg0KKwkJCQk8YnIvPg0KKwkJCQlBIGRlbW8gdmVyc2lvbit2aWRlbyBvZiB0aGUgRHJ1cGFsIHBsdWdpbiBpcyBhdmFpbGFibGUgYXQNCisJCQkJPGEgaHJlZj0iaHR0cDovL2RydXBhbC5vcGVubWVldGluZ3MuZGUvIiB0YXJnZXQ9Il9CTEFOSyIgcmVsPSJub2ZvbGxvdyI+ZHJ1cGFsLm9wZW5tZWV0aW5ncy5kZQ0KKwkJCQk8L2E+DQorCQkJCS4NCisJCQkJDQorCQkJPC9wPg0KKwkJPC9zZWN0aW9uPg0KKwkJDQorCQk8c2VjdGlvbiBuYW1lPSJJbnN0YWxsYXRpb24gb2YgdGhlIERydXBhbCBQbHVnaW4gZm9yIEFwYWNoZSBPcGVuTWVldGluZ3MiPg0KKwkJCTxwPg0KKwkJCQlZb3Ugc2ltcGx5IGRvd25sb2FkIHRoZSBaSVAgb3IgVEFSIHBhY2thZ2UgYW5kIHVuemlwIGl0IHRvIERydXBhbCAibW9kIiBkaXJlY3RvcnkuDQorCQkJCTxici8+DQorCQkJCUZvciBhIGRldGFpbGVkIGRlc2NyaXB0aW9uIG9uIGhvdyB0byBpbnN0YWxsIHBsdWdpbnMgaW4gRHJ1cGFsIHBsZWFzZSByZXZpZXcgdGhlaXIgDQorCQkJCTxhIGhyZWY9Imh0dHA6Ly9kcnVwYWwub3JnL2RvY3VtZW50YXRpb24vaW5zdGFsbC9tb2R1bGVzLXRoZW1lcyIgdGFyZ2V0PSJfQkxBTksiIHJlbD0ibm9mb2xsb3ciPmhhbmRib29rPC9hPi4NCisJCQkJPGJyIC8+DQorCQkJCVRoZW4geW91IHZpc2l0IHRoZSBtb2R1bGUgaW50ZXJmYWNlIG9mIERydXBhbCwgd2hlcmUgeW91IHdpbGwgZmluZCB0aGUgbmV3IG1vZHVsZS4NCisJCQkJWW91IHNob3VsZCBzd2l0Y2ggaXQgdG8gImVuYWJsZWQiIHRvIGdldCB0aGUgIkNvbmZpZ3VyZSIgYW5kICJQZXJtaXNzaW9ucyIgYnV0dG9ucy4NCisJCQk8L3A+DQorCQkJPGEgY2xhc3M9ImZhbmN5Ym94LWJ1dHRvbnMiIGhyZWY9ImltYWdlcy9kcnVwYWxfbW9kdWxlX2luc3RhbGxhdGlvbi5wbmciPg0KKwkJCQk8aW1nIHNyYz0iaW1hZ2VzL2RydXBhbF9tb2R1bGVfaW5zdGFsbGF0aW9uLnBuZyIgYWx0PSIiIHdpZHRoPSI2MDAiDQorCQkJCQloZWlnaHQ9IjE1MCIgLz4NCisJCQk8L2E+DQorCQkJPHA+DQorCQkJCUluIHRoZSBjb25maWd1cmF0aW9uIHlvdSBlbnRlciB0aGUgYXV0aCBkYXRhIHRvIGFjY2VzcyB5b3VyIEFwYWNoZSBPcGVuTWVldGluZ3Mgc2VydmVyOg0KKwkJCTwvcD4NCisJCQk8YSBjbGFzcz0iZmFuY3lib3gtYnV0dG9ucyIgaHJlZj0iaW1hZ2VzL2RydXBhbF9tb2R1bGVfY29uZmlndXJhdGlvbi5wbmciPg0KKwkJCQk8aW1nIHNyYz0iaW1hZ2VzL2RydXBhbF9tb2R1bGVfY29uZmlndXJhdGlvbi5wbmciIGFsdD0iIiB3aWR0aD0iNjAwIg0KKwkJCQkJaGVpZ2h0PSIzNDAiIC8+DQorCQkJPC9hPg0KKwkJPC9zZWN0aW9uPg0KKwkJDQorCQk8c2VjdGlvbiBuYW1lPSJBZGRpbmcgYSBuZXcgY29uZmVyZW5jZSByb29tIHRvIERydXBhbCI+DQorCQkJDQorCQkJPHA+DQorCQkJCUFmdGVyIGluc3RhbGxhdGlvbiBvZiB0aGUgcGx1Z2luIHlvdSBjYW4gZ28gdG8gdGhlIGZyb250IHBhZ2UgaW4gRHJ1cGFsIGFuZCBhZGQgYSBuZXcgY29udGVudCBpdGVtIA0KKwkJCQkiT3Blbk1lZXRpbmdzIFJvb21zIiA9PiAiQWRkIE5ldyBSb29tIi4gWW91IG1heSBmaW5kIGZvbGxvd2luZyBjb25maWd1cmF0aW9uIHZhbHVlcyBmb3IgZWFjaCANCisJCQkJY29uZmVyZW5jZSByb29tOg0KKwkJCTwvcD4NCisJCQk8YSBjbGFzcz0iZmFuY3lib3gtYnV0dG9ucyIgaHJlZj0iaW1hZ2VzL2RydXBhbF9yb29tX2NvbmZpZ3VyYXRpb24ucG5nIj4NCisJCQkJPGltZyBzcmM9ImltYWdlcy9kcnVwYWxfcm9vbV9jb25maWd1cmF0aW9uLnBuZyIgYWx0PSIiIHdpZHRoPSI2MDAiDQorCQkJCQloZWlnaHQ9IjQwMCIgLz4NCisJCQk8L2E+DQorCQk8L3NlY3Rpb24+DQorCQkNCisJPC9ib2R5Pg0KKw0KKzwvZG9jdW1lbnQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEveGRvY3MvRWRpdFRlbXBsYXRlcy54bWwgYi94ZG9jcy9FZGl0VGVtcGxhdGVzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNmNhZWFmCi0tLSAvZGV2L251bGwKKysrIGIveGRvY3MvRWRpdFRlbXBsYXRlcy54bWwKQEAgLTAsMCArMSw2OSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8IS0tDQorICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKw0KKyAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisNCisgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorIC0tPg0KKzxkb2N1bWVudD4NCisNCisJPHByb3BlcnRpZXM+DQorCQk8dGl0bGU+RWRpdCBUZW1wbGF0ZXM8L3RpdGxlPg0KKwkJPGF1dGhvciBlbWFpbD0ic2ViYXdhZ25lckBhcGFjaGUub3JnIj4NCisJCQlPcGVuTWVldGluZ3MgVGVhbQ0KKwkJPC9hdXRob3I+DQorCTwvcHJvcGVydGllcz4NCisNCisJPGJvZHk+DQorDQorCQk8c2VjdGlvbiBuYW1lPSJDaGFuZ2luZyBMYWJlbHMgYW5kIHRleHQgc3RyaW5ncyI+DQorCQkJPHA+DQorCQkJCUFsbCBsYW5ndWFnZSBzdHJpbmcgc2hvdWxkIGJlIGxvY2FsaXplZCBhbmQgc3RvcmVkIGluIHRoZSBsYW5ndWFnZQ0KKwkJCQlzZWN0aW9uLiBZb3UgaGF2ZSBhIGZ1bGwgZmVhdHVyZWQgbGFuZ3VhZ2UgZWRpdG9yIHdpdGggZXZlcnkNCisJCQkJaW5zdGFsbGF0aW9uIG9mIE9wZW5NZWV0aW5ncywgY2hlY2sgb3V0IHRoZQ0KKwkJCQk8YSBocmVmPSJMYW5ndWFnZUVkaXRvci5odG1sIj5MYW5ndWFnZUVkaXRvcjwvYT4NCisJCQkJLg0KKwkJCTwvcD4NCisJCQk8cD4NCisJCQkJVG8gbG9va3VwIHRoZSBsYWJlbGlkcyBpbiB0aGUgR1VJIHlvdSBjYW4gc2ltcGx5IHJ1biBPcGVuTWVldGluZ3MNCisJCQkJY2xpZW50IHdpdGggdGhlIGRlYnVnIGVuYWJsZWQuIFRoYXQgd2F5IGV2ZXJ5IHRleHQtc3RyaW5nIGhhcyB0aGUNCisJCQkJbGFiZWxpZCBpbiBicmFja2V0cyBhZGRpdGlvbmFsbHkgaW4gdGhlIHRleHRmaWVsZC4gVG8gc3RhcnQgdGhlDQorCQkJCWNsaWVudCBpbiBkZWJ1ZyBtb2RlIGp1c3QgYWRkIHRoZSBwYXJhbSA/c3dmPW1haW5kZWJ1Zy5zd2Y4LnN3ZiB0bw0KKwkJCQl0aGUgVVJMLiBFeGFtcGxlOg0KKwkJCQk8YSBocmVmPSJodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzLz9zd2Y9bWFpbmRlYnVnLnN3Zjguc3dmIg0KKwkJCQkJcmVsPSJub2ZvbGxvdyI+aHR0cDovL2xvY2FsaG9zdDo1MDgwL29wZW5tZWV0aW5ncy8/c3dmPW1haW5kZWJ1Zy5zd2Y4LnN3ZjwvYT4NCisJCQk8L3A+DQorCQk8L3NlY3Rpb24+DQorDQorCQk8c2VjdGlvbiBuYW1lPSJDaGFuZ2luZyBsYXlvdXQsIGFkZGluZyBmb290ZXJzIGluIGVtYWlscyI+DQorDQorCQkJPHA+SWYgeW91IHdvdWxkIGxpa2UgdG8gY2hhbmdlIHRoZSBzdGFuZGFyZCBlbWFpbCBsYXlvdXQgb3IgYWRkIGZvcg0KKwkJCQlleGFtcGxlIHNvbWUgZm9vdGVyIGluIGV2ZXJ5IGVtYWlsIHlvdSBoYXZlIHRvIGNoYW5nZSB0aGUgZW1haWwNCisJCQkJdGVtcGxhdGVzLg0KKwkJCTwvcD4NCisJCQk8cD5UbyBkbyB0aGF0OiBTdG9wIHRoZSBSZWQ1L09wZW5NZWV0aW5ncy1TZXJ2aWNlIEdvdG86DQorCQkJCSRSZWQ1X0hPTUUvd2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9saWIvb3Blbm1lZXRpbmdzLXRlbXBsYXRlcy5qYXINCisJCQkJVW56aXA6IG9wZW5tZWV0aW5ncy10ZW1wbGF0ZXMuamFyICh0aGlzIGlzIGEgdXN1YWwgWklQIGZpbGUsIHlvdSBjYW4NCisJCQkJcmVuYW1lIGl0IHRvIG9wZW5tZWV0aW5ncy10ZW1wbGF0ZXMuemlwIHVuemlwLCBlZGl0IHRoZSBmaWxlcywgemlwDQorCQkJCWl0IGFnYWluIGFuZCByZW5hbWUgaXQgdG8gb3Blbm1lZXRpbmdzLXRlbXBsYXRlcy5qYXIpDQorCQkJPC9wPg0KKwkJCTxwPg0KKwkJCQlJbiBvcGVubWVldGluZ3MtdGVtcGxhdGVzLmphciB0aGVyZSBhcmUgYWxsIHRlbXBsYXRlIGZpbGVzLiBUaGV5DQorCQkJCWhhdmUgdGhlIGZpbGUgZXh0ZW5zaW9uIC52bSAoVk0gc3RhbmRzIGZvciB2ZWxvY2l0eS10ZW1wbGF0ZSkuIEFmdGVyDQorCQkJCXlvdSBoYXZlIGRvbmUgeW91ciBjaGFuZ2VzIHlvdSBuZWVkIHRvIChyZSlzdGFydCB0aGUNCisJCQkJUmVkNS9PcGVuTWVldGluZ3MNCisJCQkJLVNlcnZpY2Ugc28gdGhhdCBjaGFuZ2VzIGFyZSBvbmxpbmUuDQorCQkJPC9wPg0KKw0KKwkJPC9zZWN0aW9uPg0KKw0KKwk8L2JvZHk+DQorDQorPC9kb2N1bWVudD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS94ZG9jcy9GRk1QRUdWZXJzaW9uU3dpdGNoLnhtbCBiL3hkb2NzL0ZGTVBFR1ZlcnNpb25Td2l0Y2gueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4N2U5ZjAKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9GRk1QRUdWZXJzaW9uU3dpdGNoLnhtbApAQCAtMCwwICsxLDY1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0NCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorDQorICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKw0KKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgLS0+DQorPGRvY3VtZW50Pg0KKw0KKwk8cHJvcGVydGllcz4NCisJCTx0aXRsZT5Ib3d0byBzd2l0Y2ggYmV0d2VlbiBkaWZmZXJlbnQgdmVyc2lvbnMgb2YgRkZNUEVHIDwvdGl0bGU+DQorCQk8YXV0aG9yIGVtYWlsPSJzZWJhd2FnbmVyQGFwYWNoZS5vcmciPg0KKwkJCU9wZW5NZWV0aW5ncyBUZWFtDQorCQk8L2F1dGhvcj4NCisJPC9wcm9wZXJ0aWVzPg0KKw0KKwk8Ym9keT4NCisNCisJCTxzZWN0aW9uIG5hbWU9IkRlZmF1bHQgQ29uZmlndXJhdGlvbiI+DQorDQorCQkJPHA+RkZNUEVHIGhhcyBhIGNoYW5nZSBpbiBpdHMgQVBJIChwb3NzaWJseSBzaW5jZSBHSVQgcmV2aXNpb24NCisJCQkJODhiZmU0NTE4KQ0KKwkJCTwvcD4NCisJCQk8cD5TaW5jZSBWZXJzaW9uIDEuOS54IG9mIE9wZW5NZWV0aW5nczogQnkgZGVmYXVsdCBPcGVuTWVldGluZ3MNCisJCQkJZXhwZWN0cyB5b3UgdG8gaGF2ZSBhIG5ldyB2ZXJzaW9uIG9mIEZGTVBFRyBvbiB5b3VyIE9wZW5NZWV0aW5ncw0KKwkJCQlzZXJ2ZXIgaW5zdGFsbGVkIGFuZCBpdCB3aWxsIHVzZSB0aGUgbmV3IEFQSSBzdHlsZSB0byBjb21tdW5pY2F0ZQ0KKwkJCQl3aXRoIEZGTVBFRy4NCisJCQk8L3A+DQorDQorCQk8L3NlY3Rpb24+DQorDQorCQk8c2VjdGlvbiBuYW1lPSJTd2l0Y2hpbmcgdG8gb2xkIEZGTVBFRyBBUEkiPg0KKwkJDQorCQkJPHA+DQorCQkJCUlmIHlvdSB3YW50IHRvIHN3aXRjaCB0byB0aGUgb2xkIHN0eWxlIHlvdSBjYW4gY2hhbmdlIHRoYXQgdXNpbmcgdGhlDQorCQkJCWNvbmZpZyBrZXk6DQorCQkJCTx0dD51c2Uub2xkLnN0eWxlLmZmbXBlZy5tYXAub3B0aW9uPC90dD4NCisJCQk8L3A+DQorCQkJPHA+DQorCQkJCVNldCB0aGlzIHZhbHVlIHRvDQorCQkJCTx0dD4xPC90dD4NCisJCQkJdG8gaGF2ZSB0aGUgb2xkIHBhcmFtcyBpbiB0aGUgQVBJIGNhbGwgdG8gRkZNUEVHLg0KKwkJCTwvcD4NCisJCQk8cD5SZWZlcmVuY2VzOiAgPC9wPg0KKwkJCTx1bD4NCisJCQkJPGxpPg0KKwkJCQkJPGENCisJCQkJCQlocmVmPSJodHRwOi8vZmZtcGVnLXVzZXJzLjkzMzI4Mi5uNC5uYWJibGUuY29tL0ludmFsaWQtc3RyZWFtLXNwZWNpZmllci0wLVN0cmVhbS1tYXAtMC0wLW1hdGNoZXMtbm8tc3RyZWFtcy1DaGFuZ2VzLWluLUZGTVBFRy1tYXAtb3B0aW9uLXRkNDA5MTE2NS5odG1sIg0KKwkJCQkJCXJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9mZm1wZWctdXNlcnMuOTMzMjgyLm40Lm5hYmJsZS5jb20vSW52YWxpZC1zdHJlYW0tc3BlY2lmaWVyLTAtU3RyZWFtLW1hcC0wLTAtbWF0Y2hlcy1uby1zdHJlYW1zLUNoYW5nZXMtaW4tRkZNUEVHLW1hcC1vcHRpb24tdGQ0MDkxMTY1Lmh0bWwNCisJCQkJCTwvYT4NCisJCQkJPC9saT4NCisJCQk8L3VsPg0KKw0KKwkJPC9zZWN0aW9uPg0KKw0KKwk8L2JvZHk+DQorDQorPC9kb2N1bWVudD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS94ZG9jcy9HZW5lcmFsQ29uZmlndXJhdGlvbi54bWwgYi94ZG9jcy9HZW5lcmFsQ29uZmlndXJhdGlvbi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDg4MjkxMAotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL0dlbmVyYWxDb25maWd1cmF0aW9uLnhtbApAQCAtMCwwICsxLDEzNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8IS0tDQorICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKw0KKyAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisNCisgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorIC0tPg0KKzxkb2N1bWVudD4NCisNCisJPHByb3BlcnRpZXM+DQorCQk8dGl0bGU+TGlzdCBvZiBnZW5lcmFsIGNvbmZpZ3VyYXRpb24gb3B0aW9uczwvdGl0bGU+DQorCQk8YXV0aG9yIGVtYWlsPSJzZWJhd2FnbmVyQGFwYWNoZS5vcmciPg0KKwkJCU9wZW5NZWV0aW5ncyBUZWFtDQorCQk8L2F1dGhvcj4NCisJPC9wcm9wZXJ0aWVzPg0KKw0KKwk8Ym9keT4NCisNCisJCTxzZWN0aW9uIG5hbWU9Ikxpc3Qgb2YgZ2VuZXJhbCBjb25maWd1cmF0aW9uIG9wdGlvbnMiPg0KKw0KKwkJCTxwPkluIEFkbWluaXN0cmF0aW9uICZndDsgQ29uZmlndXJhdGlvbiB0aGVyZSBhcmUgYSBudW1iZXIgb2YNCisJCQkJY29uZmlndXJhdGlvbiB2YWx1ZXMuDQorCQkJPC9wPg0KKwkJCTxwPjwvcD4NCisJCQk8dGFibGU+DQorCQkJCTx0cj4NCisJCQkJCTx0aCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpOyBwYWRkaW5nOiA1cHg7Ij4ga2V5IDwvdGg+DQorCQkJCQk8dGggc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IGRlZmF1bHQgPC90aD4NCisJCQkJCTx0aCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpOyBwYWRkaW5nOiA1cHg7Ij4gbWVhbmluZyA8L3RoPg0KKwkJCQkJPHRoIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6IDVweDsiPiBhdmFpbGFiZSBzaW5jZSBPcGVuTWVldGluZ3MgdmVyc2lvbiA8L3RoPg0KKwkJCQk8L3RyPg0KKwkJCQk8dHI+DQorCQkJCQk8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IHVzZXIubG9naW4ubWluaW11bS5sZW5ndGggPC90ZD4NCisJCQkJCTx0ZCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpOyBwYWRkaW5nOiA1cHg7Ij4gNCA8L3RkPg0KKwkJCQkJPHRkIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6IDVweDsiPiBtaW5pbXVtIGNoYXJzIHJlcXVpcmVkIGZvciB0aGUgbG9naW4gdG8gY3JlYXRlIGENCisJCQkJCQl1c2VyDQorCQkJCQk8L3RkPg0KKwkJCQkJPHRkIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6IDVweDsiPiAxLjkueCA8L3RkPg0KKwkJCQk8L3RyPg0KKwkJCQk8dHI+DQorCQkJCQk8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IHVzZXIucGFzcy5taW5pbXVtLmxlbmd0aCA8L3RkPg0KKwkJCQkJPHRkIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6IDVweDsiPiA0IDwvdGQ+DQorCQkJCQk8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IG1pbmltdW0gY2hhcnMgcmVxdWlyZWQgZm9yIHRoZSBwYXNzd29yZCB0byBjcmVhdGUgYQ0KKwkJCQkJCXVzZXINCisJCQkJCTwvdGQ+DQorCQkJCQk8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IDEuOS54IDwvdGQ+DQorCQkJCTwvdHI+DQorCQkJCTx0cj4NCisJCQkJCTx0ZCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpOyBwYWRkaW5nOiA1cHg7Ij4gbnVtYmVyLm1pbnV0ZXMucmVtaW5kZXIuc2VuZCA8L3RkPg0KKwkJCQkJPHRkIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6IDVweDsiPiAxNSA8L3RkPg0KKwkJCQkJPHRkIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6IDVweDsiPiBtaW51dGVzIHRoZSBvbmUtdGltZSByZW1pbmRlciBpbiB0aGUgY2FsZW5kZXIgaXMNCisJCQkJCQlzZW5kLCBzZXQgdG8gMCB0byBkaXNhYmxlIHJlbWluZGVyDQorCQkJCQk8L3RkPg0KKwkJCQkJPHRkIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6IDVweDsiPiAxLjkueCA8L3RkPg0KKwkJCQk8L3RyPg0KKwkJCQk8dHI+DQorCQkJCQk8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IG1heF91cGxvYWRfc2l6ZSA8L3RkPg0KKwkJCQkJPHRkIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6IDVweDsiPiAxMDczNzQxODI0IDwvdGQ+DQorCQkJCQk8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IE1heGltdW0gc2l6ZSBvZiB1cGxvYWQgZmlsZSAoYnl0ZXMpIDEwNzM3NDE4MjQgYnl0ZXMNCisJCQkJCQk9IDFHQg0KKwkJCQkJPC90ZD4NCisJCQkJCTx0ZCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpOyBwYWRkaW5nOiA1cHg7Ij4gMS44LnggPC90ZD4NCisJCQkJPC90cj4NCisJCQkJPHRyPg0KKwkJCQkJPHRkIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6IDVweDsiPiBzaG93LndoaXRlYm9hcmQuZHJhdy5zdGF0dXMgPC90ZD4NCisJCQkJCTx0ZCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpOyBwYWRkaW5nOiA1cHg7Ij4gMCA8L3RkPg0KKwkJCQkJPHRkIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6IDVweDsiPiBEaXNwbGF5IG5hbWUgb2YgdGhlIHVzZXIgd2hvIGRyYXcgdGhlIGN1cnJlbnQgb2JqZWN0DQorCQkJCQkJKFVzZXIgTmFtZSBhdXRvLWRpc2FwcGVyIGFmdGVyIDMgc2Vjb25kcy4NCisJCQkJCTwvdGQ+DQorCQkJCQk8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IDEuOC54IDwvdGQ+DQorCQkJCTwvdHI+DQorCQkJCTx0cj4NCisJCQkJCTx0ZCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpOyBwYWRkaW5nOiA1cHg7Ij4gdXNlLm9sZC5zdHlsZS5mZm1wZWcubWFwLm9wdGlvbiA8L3RkPg0KKwkJCQkJPHRkIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6IDVweDsiPiAwIDwvdGQ+DQorCQkJCQk8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IElmIHRoZSBzeXN0ZW0gc2hvdWxkICIuIiAob2xkIGZmbXBlZykgaW5zdGVhZCBvZiAiOiINCisJCQkJCQkobmV3IGZmbXBlZykgZm9yIHRoZSAtbWFwIG9wdGlvbiBpbiBGRk1QRUcNCisJCQkJCTwvdGQ+DQorCQkJCQk8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IDEuOS54IDwvdGQ+DQorDQorCQkJCTwvdHI+DQorCQkJCTx0cj4NCisJCQkJCTx0ZCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpOyBwYWRkaW5nOiA1cHg7Ij4gaW52aXRlci5lbWFpbC5hcy5yZXBseXRvIDwvdGQ+DQorCQkJCQk8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IDEgPC90ZD4NCisJCQkJCTx0ZCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpOyBwYWRkaW5nOiA1cHg7Ij4gU2V0IGludml0ZXIncyBlbWFpbCBhZGRyZXNzIGFzIFJlcGx5VG8gaW4gZW1haWwgaW52aXRhdGlvbnMgKDEgPT0gc2V0LCAwID09IE5PVCBzZXQpCTwvdGQ+DQorCQkJCQk8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IDIuMC54IDwvdGQ+DQorCQkJCTwvdHI+DQorCQkJCTx0cj4NCisJCQkJCTx0ZCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpOyBwYWRkaW5nOiA1cHg7Ij4gb2ZmaWNlLnBhdGggPC90ZD4NCisJCQkJCTx0ZCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpOyBwYWRkaW5nOiA1cHg7Ij4gPC90ZD4NCisJCQkJCTx0ZCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpOyBwYWRkaW5nOiA1cHg7Ij4gVGhlIHBhdGggdG8gT3Blbk9mZmljZS9MaWJyZU9mZmljZSAob3B0aW9uYWwpIHBsZWFzZSBzZXQgdGhpcyB0byB0aGUgcmVhbCBwYXRoIGluIGNhc2Ugam9kY29udmVydGVyIGlzIHVuYWJsZSB0byBmaW5kIE9wZW5PZmZpY2UvTGlicmVPZmZpY2UgaW5zdGFsbGF0aW9uIGF1dG9tYXRpY2FsbHkJPC90ZD4NCisJCQkJCTx0ZCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpOyBwYWRkaW5nOiA1cHg7Ij4gMi4wLnggPC90ZD4NCisJCQkJPC90cj4NCisJCQkJPHRyPg0KKwkJCQkJPHRkIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6IDVweDsiPiBkZWZhdWx0LmxhbmRpbmcuem9uZSA8L3RkPg0KKwkJCQkJPHRkIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6IDVweDsiPiBkYXNoYm9hcmQucm9vbXMgPC90ZD4NCisJCQkJCTx0ZCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpOyBwYWRkaW5nOiA1cHg7Ij4gQXJlYSB0byBiZSBzaG93biB0byB0aGUgdXNlciBhZnRlciBsb2dpbi4gUG9zc2libGUgdmFsdWVzIGFyZTogZGFzaGJvYXJkLnJvb21zLCBkYXNoYm9hcmQuY2hhdCwgY2FsZW5kYXIsIHJvb21zLnB1YmxpYywgcm9vbXMucHJpdmF0ZSwgcm9vbXMudXNlciA8L3RkPg0KKwkJCQkJPHRkIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6IDVweDsiPiAyLjEueCA8L3RkPg0KKwkJCQk8L3RyPg0KKwkJCQk8dHI+DQorCQkJCQk8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IHNtcy5wcm92aWRlciA8L3RkPg0KKwkJCQkJPHRkIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6IDVweDsiPiAgPC90ZD4NCisJCQkJCTx0ZCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpOyBwYWRkaW5nOiA1cHg7Ij4gU01TIHNlcnZpY2UgcHJvdmlkZXIgKGJ1bGtzbXMuaHR0cC4xKSA8L3RkPg0KKwkJCQkJPHRkIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6IDVweDsiPiAyLjEueCA8L3RkPg0KKwkJCQk8L3RyPg0KKwkJCQk8dHI+DQorCQkJCQk8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IHNtcy5Vc2VybmFtZSA8L3RkPg0KKwkJCQkJPHRkIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6IDVweDsiPiAgPC90ZD4NCisJCQkJCTx0ZCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpOyBwYWRkaW5nOiA1cHg7Ij4gTG9naW4gZm9yIFNNUyBzZXJ2aWNlIHByb3ZpZGVyIDwvdGQ+DQorCQkJCQk8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IDIuMS54IDwvdGQ+DQorCQkJCTwvdHI+DQorCQkJCTx0cj4NCisJCQkJCTx0ZCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpOyBwYWRkaW5nOiA1cHg7Ij4gc21zLlVzZXJwYXNzIDwvdGQ+DQorCQkJCQk8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+ICA8L3RkPg0KKwkJCQkJPHRkIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6IDVweDsiPiBQYXNzd29yZCBmb3IgU01TIHNlcnZpY2UgcHJvdmlkZXIgPC90ZD4NCisJCQkJCTx0ZCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpOyBwYWRkaW5nOiA1cHg7Ij4gMi4xLnggPC90ZD4NCisJCQkJPC90cj4NCisJCQkJPHRyPg0KKwkJCQkJPHRkIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6IDVweDsiPiBzbXMuc3ViamVjdCA8L3RkPg0KKwkJCQkJPHRkIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6IDVweDsiPiAgPC90ZD4NCisJCQkJCTx0ZCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpOyBwYWRkaW5nOiA1cHg7Ij4gU3ViamVjdCBvZiBTTVMgcmVtaW5kZXIgbWVzc2FnZSA8L3RkPg0KKwkJCQkJPHRkIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6IDVweDsiPiAyLjEueCA8L3RkPg0KKwkJCQk8L3RyPg0KKwkJCTwvdGFibGU+DQorCQk8L3NlY3Rpb24+DQorDQorCTwvYm9keT4NCisNCis8L2RvY3VtZW50PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3hkb2NzL0dldFZlcnNpb25JbmZvLnhtbCBiL3hkb2NzL0dldFZlcnNpb25JbmZvLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDExODg2Ci0tLSAvZGV2L251bGwKKysrIGIveGRvY3MvR2V0VmVyc2lvbkluZm8ueG1sCkBAIC0wLDAgKzEsNjIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPCEtLQ0KKyAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisNCisgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorDQorICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAtLT4NCis8ZG9jdW1lbnQ+DQorDQorCTxwcm9wZXJ0aWVzPg0KKwkJPHRpdGxlPkhvdyB0byBjaGVjayB3aGljaCBPcGVubWVldGluZ3MgdmVyc2lvbiBydW5uaW5nPC90aXRsZT4NCisJCTxhdXRob3IgZW1haWw9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+DQorCQkJT3Blbk1lZXRpbmdzIFRlYW0NCisJCTwvYXV0aG9yPg0KKwk8L3Byb3BlcnRpZXM+DQorDQorCTxib2R5Pg0KKw0KKwkJPHNlY3Rpb24gbmFtZT0iSG93IHRvIGNoZWNrIHdoaWNoIE9wZW5tZWV0aW5ncyB2ZXJzaW9uIHJ1bm5pbmciPg0KKwkJCTxwPklmIHlvdSBuZWVkIHRvIGtub3cgd2hhdCB2ZXJzaW9uIG9mIE9wZW5NZWV0aW5ncyB5b3UgYXJlIHJ1bm5pbmcsDQorCQkJCXlvdSBjYW4gY2hlY2sgdGhhdCBieSB0aGUgZmlsZTogb3Blbm1lZXRpbmdzLSouamFyDQorCQkJPC9wPg0KKwkJCTxwPg0KKwkJCQlVbnppcDogL3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvbGliL29wZW5tZWV0aW5ncy0qLmphciAoamFycyBhcmUNCisJCQkJemlwcykNCisJCQkJPGJyIC8+DQorCQkJCTxiciAvPg0KKwkJCQlJbiB0aGUgcmVzdWx0aW5nIHVuemlwcGVkIGZvbGRlciBvcGVuIHRoZSBmaWxlIHRvIHJlYWQ6DQorCQkJCS9NRVRBLUlORi9NQU5JRkVTVC5NRg0KKwkJCTwvcD4NCisJCQk8cD5Zb3UgZ2V0IHNvbWV0aGluZyBsaWtlIHRoaXM6IDwvcD4NCisJCQk8ZGl2IGNsYXNzPSJ4bWxjb2RlIj4NCisJCQkJTWFuaWZlc3QtVmVyc2lvbjogMS4wDQorCQkJCTxiciAvPg0KKwkJCQlBbnQtVmVyc2lvbjogQXBhY2hlIEFudCAxLjguMg0KKwkJCQk8YnIgLz4NCisJCQkJQ3JlYXRlZC1CeTogMS42LjBfMjYtYjAzLTM4My0xMUE1MTEgKEFwcGxlIEluYy4pDQorCQkJCTxiciAvPg0KKwkJCQlCdWlsdC1CeTogT3Blbk1lZXRpbmdzIC0gaHR0cDovL29wZW5tZWV0aW5ncy5nb29nbGVjb2RlLmNvbQ0KKwkJCQk8YnIgLz4NCisJCQkJQnVpbHQtT246IDIzLU9jdG9iZXItMjAxMQ0KKwkJCQk8YnIgLz4NCisJCQkJU3ZuLVJldmlzaW9uOiA0MzY4DQorCQkJCTxiciAvPg0KKwkJCTwvZGl2Pg0KKwkJCTxwPlRoaXMgdmVyc2lvbiBpbmZvIGlzIGF2YWlsYWJsZSBzaW5jZSB2ZXJzaW9uIDEuOC4wLiBJZiB5b3UgaGF2ZSBhbg0KKwkJCQlvbGRlciB2ZXJzaW9uIGFzIHZlcnNpb24gMS44LjAgdGhlbiB5b3UgbWlnaHQgc2ltcGx5IGNoZWNrIHRoZQ0KKwkJCQlsYW5ndWFnZSBmaWxlcyBhbmQgdGhlIGxhYmVsaWQgaW4gdGhlcmUsIHRoZSBudW1iZXJzIG9mIGxhYmVscyBhcmUNCisJCQkJYWxtb3N0IGFsd2F5cyB1bmlxdWUgaW4gdGhlIHZlcnNpb25zLiA8L3A+DQorDQorCQk8L3NlY3Rpb24+DQorDQorCTwvYm9keT4NCisNCis8L2RvY3VtZW50PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3hkb2NzL0hvdEtleXMueG1sIGIveGRvY3MvSG90S2V5cy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGIyN2YyMQotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL0hvdEtleXMueG1sCkBAIC0wLDAgKzEsNTQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPCEtLQ0KKyAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisNCisgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorDQorICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAtLT4NCis8ZG9jdW1lbnQ+DQorCTxwcm9wZXJ0aWVzPg0KKwkJPHRpdGxlPkhvdCBLZXlzPC90aXRsZT4NCisJCTxhdXRob3IgZW1haWw9InNvbG9tYXhAYXBhY2hlLm9yZyI+DQorCQkJT3Blbk1lZXRpbmdzIFRlYW0NCisJCTwvYXV0aG9yPg0KKwk8L3Byb3BlcnRpZXM+DQorCTxib2R5Pg0KKwkJPHNlY3Rpb24gbmFtZT0iS2V5cyB0YWJsZSI+DQorCQkJPHRhYmxlPg0KKwkJCQk8dHI+DQorCQkJCQk8dGg+S2V5PC90aD4NCisJCQkJCTx0aD5GdW5jdGlvbmFsaXR5PC90aD4NCisJCQkJCTx0aD5Db25maWd1cmFibGU8L3RoPg0KKwkJCQkJPHRoPkNvbmZpZyBLZXk8L3RoPg0KKwkJCQk8L3RyPg0KKwkJCQk8dHI+DQorCQkJCQk8dGQ+RjEyIChjb2RlIDEyMyk8L3RkPg0KKwkJCQkJPHRkPkEgaG90IGtleSBjb2RlIGZvciB0aGUgJ2dpdmUgZXhjbHVzaXZlIGF1ZGlvJyBmdW5jdGlvbmFsaXR5LjwvdGQ+DQorCQkJCQk8dGQ+WWVzPC90ZD4NCisJCQkJCTx0ZD5leGNsdXNpdmUuYXVkaW8ua2V5Y29kZTwvdGQ+DQorCQkJCTwvdHI+DQorCQkJCTx0cj4NCisJCQkJCTx0ZD5GOCAoY29kZSAxMTkpPC90ZD4NCisJCQkJCTx0ZD5JZiAxIG9yIDIgdmlkZW8gd2luZG93cyBhcmUgcHJlc2VudCBpbiB0aGUgcm9vbSB0aGV5IHdpbGwgYmUNCisJCQkJCQkicmVhcnJhbmdlZCIgdG8gdGFrZSBhbGwgdGhlIHBsYWNlIGF2YWlsYWJsZTwvdGQ+DQorCQkJCQk8dGQ+Tm88L3RkPg0KKwkJCQkJPHRkPg0KKwkJCQkJPC90ZD4NCisJCQkJPC90cj4NCisJCQkJPHRyPg0KKwkJCQkJPHRkPkY3IChjb2RlIDExOCk8L3RkPg0KKwkJCQkJPHRkPkEgaG90IGtleSBjb2RlIGZvciB0aGUgJ211dGUvdW5tdXRlIGF1ZGlvJyBmdW5jdGlvbmFsaXR5LjwvdGQ+DQorCQkJCQk8dGQ+WWVzPC90ZD4NCisJCQkJCTx0ZD5tdXRlLmtleWNvZGU8L3RkPg0KKwkJCQk8L3RyPg0KKwkJCTwvdGFibGU+DQorCQk8L3NlY3Rpb24+DQorCTwvYm9keT4NCis8L2RvY3VtZW50PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3hkb2NzL0lCTURCMkNvbmZpZy54bWwgYi94ZG9jcy9JQk1EQjJDb25maWcueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmYmI0MDEKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9JQk1EQjJDb25maWcueG1sCkBAIC0wLDAgKzEsOTUgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPCEtLQ0KKyAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisNCisgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorDQorICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAtLT4NCis8ZG9jdW1lbnQ+DQorDQorCTxwcm9wZXJ0aWVzPg0KKwkJPHRpdGxlPklCTSBEQjIgQ29uZmlndXJhdGlvbjwvdGl0bGU+DQorCQk8YXV0aG9yIGVtYWlsPSJzZWJhd2FnbmVyQGFwYWNoZS5vcmciPg0KKwkJCUFwYWNoZSBPcGVuTWVldGluZ3MgRG9jdW1lbnRhdGlvbiBUZWFtDQorCQk8L2F1dGhvcj4NCisJPC9wcm9wZXJ0aWVzPg0KKw0KKwk8Ym9keT4NCisJCTxzZWN0aW9uIG5hbWU9IklCTSBEQjIgQ29uZmlndXJhdGlvbiI+DQorDQorCQkJPHN1YnNlY3Rpb24gbmFtZT0iQmVmb3JlIHlvdSBzdGFydCI+DQorCQkJCTxpPlRlc3RlZCB3aXRoIElCTSBEQjIgRXhwcmVzcy1DIDkuNy54PC9pPg0KKwkJCQk8dWw+DQorCQkJCQk8bGk+DQorCQkJCQkJR2V0IHRoZSBJQk0gRGF0YSBTZXJ2ZXIgRHJpdmVyIGZvciBKREJDIGFuZCBTUUxKIGZyb20gSUJNIHdlYnNpdGU6DQorCQkJCQkJPGENCisJCQkJCQkJaHJlZj0iaHR0cHM6Ly93d3cxNC5zb2Z0d2FyZS5pYm0uY29tL3dlYmFwcC9pd20vd2ViL3ByZUxvZ2luLmRvP3NvdXJjZT1zd2ctaWRzZGpzIj5odHRwczovL3d3dzE0LnNvZnR3YXJlLmlibS5jb20vd2ViYXBwL2l3bS93ZWIvcHJlTG9naW4uZG8/c291cmNlPXN3Zy1pZHNkanMNCisJCQkJCQk8L2E+DQorCQkJCQk8L2xpPg0KKwkJCQkJPGxpPkNvcHkgSkRCQyBkcml2ZXIgZGIyamNjNC5qYXIgdG8NCisJCQkJCQl3ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL2xpYi8NCisJCQkJCTwvbGk+DQorCQkJCQk8bGk+DQorCQkJCQkJQ3JlYXRlIGRhdGFiYXNlIGZvciBPcGVuTWVldGluZ3MgdXNpbmcgYSBwYWdlc2l6ZSBiaWdnZXIgb3IgZXF1YWwNCisJCQkJCQk4Sywgc2FtcGxlIHF1ZXJ5Og0KKwkJCQkJCTxiciAvPg0KKwkJCQkJCTxkaXYgY2xhc3M9InhtbGNvZGUiPg0KKwkJCQkJCQlDUkVBVEUgREFUQUJBU0Ugb3Blbm1lZXQgQVVUT01BVElDIFNUT1JBR0UgWUVTIE9OICdDOicgREJQQVRIIE9OICdDOicNCisJCQkJCQkJVVNJTkcgQ09ERVNFVCBVVEYtOCBURVJSSVRPUlkgREUgQ09MTEFURSBVU0lORyBTeXN0ZW0gUEFHRVNJWkUgMTYNCisJCQkJCQkJSw0KKwkJCQkJCTwvZGl2Pg0KKwkJCQkJPC9saT4NCisJCQkJCTxsaT5JZiB5b3UgZW5jb3VudGVyIGlzc3VlcywgeW91IGNhbiBkcm9wIHRoZSBkYiBhZ2FpbiBhbmQgZGVsZXRlDQorCQkJCQkJdGhlIGZpbGUgJHJlZDUvd2ViYXBwcy9vcGVubWVldGluZ3MvY29uZi9pbnN0YWxsLnhtbCBhbmQgdGhlbiBydW4NCisJCQkJCQl0aGUgd2ViIGJhc2VkIGluc3RhbGxlciBhZ2FpbiA8L2xpPg0KKwkJCQk8L3VsPg0KKwkJCTwvc3Vic2VjdGlvbj4NCisNCisJCQk8c3Vic2VjdGlvbiBuYW1lPSJTdGVwcyB0b2RvIj4NCisJCQkJPHVsPg0KKwkJCQkJPGxpPg0KKwkJCQkJCVJlbmFtZToNCisJCQkJCQk8YnIgLz4NCisJCQkJCQkkcmVkNS93ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL2NsYXNzZXMvTUVUQS1JTkYvZGIyX3BlcnNpc3RlbmNlLnhtbA0KKwkJCQkJCTxiciAvPg0KKwkJCQkJCXRvDQorCQkJCQkJPGJyIC8+DQorCQkJCQkJJHJlZDUvd2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9jbGFzc2VzL01FVEEtSU5GL3BlcnNpc3RlbmNlLnhtbA0KKwkJCQkJPC9saT4NCisJCQkJCTxsaT4NCisJCQkJCQlQcmVwYXJlIERhdGFiYXNlIFNldHRpbmdzIC0gZ28gdG8NCisJCQkJCQlvcGVubWVldGluZ3NfdmVyc2lvbl9ub194eC93ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL2NsYXNzZXMvTUVUQS1JTkYvcGVyc2lzdGVuY2UueG1sDQorCQkJCQkJPGJyIC8+DQorCQkJCQkJQWx0ZXIgY29uZmlnIHZhbHVlcyBpbiBwZXJzaXN0ZW5jZS54bWwgY29ubmVjdGlvblVSTCwgdXNlcm5hbWUgYW5kDQorCQkJCQkJcGFzc3dvcmQgd2l0aCB5b3VyIHZhbHVlcw0KKwkJCQkJPC9saT4NCisJCQkJCTxsaT4NCisJCQkJCQlSdW4gcmVkNS1zZXJ2aWNlIGFuZCBnb3RvIHRoZSB3ZWItYmFzZWQgaW5zdGFsbGVyOg0KKwkJCQkJCWh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3MvaW5zdGFsbA0KKwkJCQkJPC9saT4NCisJCQkJPC91bD4NCisJCQk8L3N1YnNlY3Rpb24+DQorDQorCQkJPHN1YnNlY3Rpb24gbmFtZT0iREIyIFNhbXBsZSBDb25maWd1cmF0aW9uIj4NCisJCQkJPHA+DQorCQkJCQlUaGVyZSBpcyBhIHNhbXBsZSBjb25maWd1cmF0aW9uIGZvciBJQk0gREIyIHRoYXQgc2hpcHMgd2l0aA0KKwkJCQkJZXZlcnkNCisJCQkJCXJlbGVhc2UgaW46DQorCQkJCQk8YnIgLz4NCisJCQkJCS93ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL2NsYXNzZXMvTUVUQS1JTkYvZGIyX3BlcnNpc3RlbmNlLnhtbA0KKwkJCQk8L3A+DQorCQkJPC9zdWJzZWN0aW9uPg0KKw0KKw0KKwkJPC9zZWN0aW9uPg0KKw0KKwk8L2JvZHk+DQorDQorPC9kb2N1bWVudD4NCmRpZmYgLS1naXQgYS94ZG9jcy9JbnRlcm5hdGlvbmFsaXNhdGlvbi54bWwgYi94ZG9jcy9JbnRlcm5hdGlvbmFsaXNhdGlvbi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTM4OWExNQotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL0ludGVybmF0aW9uYWxpc2F0aW9uLnhtbApAQCAtMCwwICsxLDcwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0NCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorDQorICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKw0KKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgLS0+DQorPGRvY3VtZW50Pg0KKw0KKwk8cHJvcGVydGllcz4NCisJCTx0aXRsZT5VcGdyYWRlPC90aXRsZT4NCisJCTxhdXRob3IgZW1haWw9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+DQorCQkJT3Blbk1lZXRpbmdzIFRlYW0NCisJCTwvYXV0aG9yPg0KKwk8L3Byb3BlcnRpZXM+DQorDQorCTxib2R5Pg0KKw0KKwkJPHNlY3Rpb24gbmFtZT0iV2hlcmUgdG8gZmluZCBsYW5ndWFnZSBmaWxlcyI+DQorDQorCQkJPHA+WW91IGNhbiBmaW5kIGFsbCBjdXJyZW50IGxhbmd1YWdlIGZpbGVzIGhlcmU6IDwvcD4NCisJCQk8cD4NCisJCQkJPGENCisJCQkJCWhyZWY9Imh0dHBzOi8vc3ZuLmFwYWNoZS5vcmcvcmVwb3MvYXNmL29wZW5tZWV0aW5ncy90cnVuay9zaW5nbGV3ZWJhcHAvV2ViQ29udGVudC9sYW5ndWFnZXMvIg0KKwkJCQkJcmVsPSJub2ZvbGxvdyI+aHR0cHM6Ly9zdm4uYXBhY2hlLm9yZy9yZXBvcy9hc2Yvb3Blbm1lZXRpbmdzL3RydW5rL3NpbmdsZXdlYmFwcC9XZWJDb250ZW50L2xhbmd1YWdlcy8NCisJCQkJPC9hPg0KKwkJCTwvcD4NCisJCQk8cD5KdXN0IHRha2Ugb25lIGZpbGUgYW5kIHRyYW5zbGF0ZSBpdCB0byB5b3VyIGxhbmd1YWdlLiA8L3A+DQorCQk8L3NlY3Rpb24+DQorDQorCQk8c2VjdGlvbiBuYW1lPSJJbXBvcnQgYW5kIGV4cG9ydCBvZiBMYW5ndWFnZSBGaWxlcyI+DQorDQorCQkJPHVsPg0KKwkJCQk8bGk+DQorCQkJCQlVc2UgdGhlDQorCQkJCQk8YSBocmVmPSJMYW5ndWFnZUVkaXRvci5odG1sIj5MYW5ndWFnZUVkaXRvcjwvYT4NCisJCQkJCWZvciB0cmFuc2xhdGlvbg0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+DQorCQkJCQl3aXRoIHRoZQ0KKwkJCQkJPGEgaHJlZj0iTGFuZ3VhZ2VFZGl0b3IuaHRtbCI+TGFuZ3VhZ2VFZGl0b3I8L2E+DQorCQkJCQl5b3UgY2FuIGltcG9ydCBhbmQgZXhwb3J0IExhbmd1YWdlIEZpbGVzDQorCQkJCTwvbGk+DQorCQkJPC91bD4NCisJCTwvc2VjdGlvbj4NCisNCisJCTxzZWN0aW9uIG5hbWU9IkhvdyB0byBhZGQgaXQgYXMgaW5zdGFsbGF0aW9uIG9wdGlvbiI+DQorCQkJPHA+DQorCQkJCU9uY2UgeW91IGhhdmUgZmluaXNoZWQgdGhlIHRyYW5zbGF0aW9uIHlvdSBjYW4gYWRkIGEgbmV3IG5vZGUgdG86DQorCQkJCTxhDQorCQkJCQlocmVmPSJodHRwczovL3N2bi5hcGFjaGUub3JnL3JlcG9zL2FzZi9vcGVubWVldGluZ3MvdHJ1bmsvc2luZ2xld2ViYXBwL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL2xhbmd1YWdlcy54bWwiDQorCQkJCQlyZWw9Im5vZm9sbG93Ij5odHRwczovL3N2bi5hcGFjaGUub3JnL3JlcG9zL2FzZi9vcGVubWVldGluZ3MvdHJ1bmsvc2luZ2xld2ViYXBwL1dlYkNvbnRlbnQvbGFuZ3VhZ2VzL2xhbmd1YWdlcy54bWwNCisJCQkJPC9hPg0KKwkJCTwvcD4NCisJCQk8cD50aGUgbmFtZSBvZiB0aGUgbGFuZ3VhZ2Ugc2hvdWxkIG1hdGNoIHRoZSBuYW1lIG9mIHRoZSBmaWxlLiBPbmNlDQorCQkJCXRoaXMgaXMgZG9uZSB0aGUgTGFuZ3VhZ2UgZmlsZSB3aWxsIGF1dG9tYXRpY2FsbHkgYmUgaW1wb3J0ZWQgZHVyaW5nDQorCQkJCWluc3RhbGxhdGlvbiBhbmQgd2lsbCBiZSBhbiBvcHRpb24gYXQgbG9naW4uDQorCQkJPC9wPg0KKwkJPC9zZWN0aW9uPg0KKw0KKwk8L2JvZHk+DQorDQorPC9kb2N1bWVudD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS94ZG9jcy9KVW5pdFRlc3RpbmcueG1sIGIveGRvY3MvSlVuaXRUZXN0aW5nLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDE1MzU2Ci0tLSAvZGV2L251bGwKKysrIGIveGRvY3MvSlVuaXRUZXN0aW5nLnhtbApAQCAtMCwwICsxLDEyMSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8IS0tDQorICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKw0KKyAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisNCisgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorIC0tPg0KKzxkb2N1bWVudD4NCisNCisJPHByb3BlcnRpZXM+DQorCQk8dGl0bGU+SlVuaXQgVGVzdGluZzwvdGl0bGU+DQorCQk8YXV0aG9yIGVtYWlsPSJzZWJhd2FnbmVyQGFwYWNoZS5vcmciPg0KKwkJCU9wZW5NZWV0aW5ncyBUZWFtDQorCQk8L2F1dGhvcj4NCisJPC9wcm9wZXJ0aWVzPg0KKw0KKwk8Ym9keT4NCisNCisJCTxzZWN0aW9uIG5hbWU9IkludHJvZHVjdGlvbiI+DQorDQorCQkJPHA+DQorCQkJCUF1dG9tYXRpYyB0ZXN0cyBhcmUgdGhlIHNpZ25pZmljYW50IHBhcnQgb2YgZGV2ZWxvcG1lbnQgcHJvY2Vzcy4NCisJCQkJQmVsb3cgaXMgdGhlIGluc3RydWN0aW9uIG9mIGhvdyB0byBydW4gT3Blbm1lZXRpbmdzDQorCQkJCTxhIGhyZWY9Imh0dHA6Ly9qdW5pdC5vcmciIHJlbD0ibm9mb2xsb3ciPkpVbml0PC9hPg0KKwkJCQl0ZXN0cy4NCisJCQk8L3A+DQorCQk8L3NlY3Rpb24+DQorDQorCQk8c2VjdGlvbiBuYW1lPSJEZXRhaWxzIj4NCisNCisNCisJCQk8b2w+DQorCQkJCTxsaT5ydW5uaW5nIHRlc3RzIHVzaW5nIGNvbW1hbmQgbGluZTogPC9saT4NCisJCQkJPGxpPg0KKwkJCQkJPHVsPg0KKwkJCQkJCTxsaT5hbGwgdGVzdHM6DQorCQkJCQkJCTxkaXYgY2xhc3M9InhtbGNvZGUiPg0KKwkJCQkJCQkJYW50IHRlc3QNCisJCQkJCQkJPC9kaXY+DQorCQkJCQkJPC9saT4NCisJCQkJCQk8bGk+c3Vic2V0IG9mIHRlc3RzIGJ5IG1hc2s6DQorCQkJCQkJCTxkaXYgY2xhc3M9InhtbGNvZGUiPg0KKwkJCQkJCQkJYW50IC1EdGVzdGNhc2VzPVRlc3RFcnJvciogdGVzdA0KKwkJCQkJCQk8L2Rpdj4NCisJCQkJCQk8L2xpPg0KKwkJCQkJPC91bD4NCisJCQkJPC9saT4NCisJCQkJPGxpPnJ1bm5pbmcgdGVzdHMgZnJvbSBFY2xpcHNlIElERTogPC9saT4NCisJCQkJPGxpPg0KKwkJCQkJPHVsPg0KKwkJCQkJCTxsaT4NCisJCQkJCQkJPGRpdiBjbGFzcz0ieG1sY29kZSI+DQorCQkJCQkJCQlhbnQgLURkYj0mbHQ7eW91cl9EQiZndDsgcHJlcGFyZS1lY2xpcHNlDQorCQkJCQkJCTwvZGl2Pg0KKwkJCQkJCTwvbGk+DQorCQkJCQkJPGxpPlN0YXJ0IEVjbGlwc2UgPC9saT4NCisJCQkJCQk8bGk+TG9hZCB3b3Jrc3BhY2Ugd2l0aCBPcGVubWVldGluZ3MgcHJvamVjdCAob3IgcmVmcmVzaCBleGlzdGluZw0KKwkJCQkJCQlwcm9qZWN0KQ0KKwkJCQkJCTwvbGk+DQorCQkJCQkJPGxpPlNlbGVjdCAiRGVidWcgQ29uZmlndXJhdGlvbnMuLi4iIDwvbGk+DQorCQkJCQk8L3VsPg0KKwkJCQk8L2xpPg0KKwkJCTwvb2w+DQorCQkJPHA+DQorCQkJCTxhIGNsYXNzPSJmYW5jeWJveC1idXR0b25zIiBocmVmPSJpbWFnZXMvRGVidWdDb25maWd1cmF0aW9ucy5wbmciPg0KKwkJCQkJPGltZyBzcmM9ImltYWdlcy9EZWJ1Z0NvbmZpZ3VyYXRpb25zLnBuZyIgYWx0PSIiIHdpZHRoPSIzNjciDQorCQkJCQkJaGVpZ2h0PSIyNjIiIC8+DQorCQkJCTwvYT4NCisJCQk8L3A+DQorCQkJPHVsPg0KKwkJCQk8bGk+Q3JlYXRlIE5ldyBKdW5pdCBjb25maWd1cmF0aW9uLCBnaXZlIGl0IGEgbmFtZSBhbmQgc2VsZWN0IHRlc3QNCisJCQkJCWNsYXNzDQorCQkJCTwvbGk+DQorCQkJPC91bD4NCisJCQk8cD4NCisJCQkJPGEgY2xhc3M9ImZhbmN5Ym94LWJ1dHRvbnMiIGhyZWY9ImltYWdlcy9OZXdDb25maWd1cmF0aW9uLnBuZyI+DQorCQkJCQk8aW1nIHNyYz0iaW1hZ2VzL05ld0NvbmZpZ3VyYXRpb24ucG5nIiBhbHQ9IiIgd2lkdGg9IjQyMCINCisJCQkJCQloZWlnaHQ9IjIwNiIgLz4NCisJCQkJPC9hPg0KKwkJCTwvcD4NCisJCQk8dWw+DQorCQkJCTxsaT5TZWxlY3QgQXJndW1lbnRzIHRhYiA8L2xpPg0KKwkJCQk8bGk+QWRkIHRoZSBmb2xsb3dpbmcgY29kZSB0byB0aGUgVk0gc2VjdGlvbg0KKwkJCQkJPGRpdiBjbGFzcz0ieG1sY29kZSI+DQorCQkJCQkJLWphdmFhZ2VudDoke3dvcmtzcGFjZV9sb2M6T3Blbm1lZXRpbmdzfS9idWlsZC9saWIvb20vb3BlbmpwYS1idW5kbGUtMi4yLjEuamFyDQorCQkJCQkJLUR3ZWJhcHBzLnJvb3Q9JHt3b3Jrc3BhY2VfbG9jOk9wZW5tZWV0aW5nc30vZGlzdC9yZWQ1L3dlYmFwcHMvb3Blbm1lZXRpbmdzDQorCQkJCQk8L2Rpdj4NCisJCQkJPC9saT4NCisJCQkJPGxpPlRvIGF2b2lkIHRlbXBvcmFyeSBmaWxlcyBiZWluZyBjcmVhdGVkIGluIE9NIHJvb3QsIG1vZGlmeQ0KKwkJCQkJIldvcmtpbmcgRGlyZWN0b3J5IiBhcyBmb2xsb3dzDQorCQkJCQk8ZGl2IGNsYXNzPSJ4bWxjb2RlIj4ke3dvcmtzcGFjZV9sb2M6T3Blbm1lZXRpbmdzfS9idWlsZC9qdW5pdDwvZGl2Pg0KKwkJCQk8L2xpPg0KKwkJCTwvdWw+DQorCQkJPHA+DQorCQkJCTxhIGNsYXNzPSJmYW5jeWJveC1idXR0b25zIiBocmVmPSJpbWFnZXMvQXJndW1lbnRzLnBuZyI+DQorCQkJCQk8aW1nIHNyYz0iaW1hZ2VzL0FyZ3VtZW50cy5wbmciIGFsdD0iIiB3aWR0aD0iNDM1IiBoZWlnaHQ9IjQxMCIgLz4NCisJCQkJPC9hPg0KKwkJCTwvcD4NCisJCQk8dWw+DQorCQkJCTxsaT5TZWxlY3QgRGVidWcgPC9saT4NCisNCisJCQk8L3VsPg0KKwkJCTx1bD4NCisJCQkJPGxpPk5vdGU6IFlvdSBuZWVkIGEgZmlsZSBjYWxsZWQgInBlcnNpc3RlbmNlLnhtbCIgaW4gc3JjL01FVEEtSU5GDQorCQkJCQlpZiB5b3UgcnVuIHRoZSBKVW5pdCB0ZXN0IGZyb20gaW5zaWRlIEVjbGlwc2UuIE5vcm1hbGx5ICJhbnQNCisJCQkJCXByZXBhcmUtZWNsaXBzZSIgc2hvdWxkIGRvIHRoYXQgZm9yIHlvdS4gPC9saT4NCisNCisJCQk8L3VsPg0KKw0KKwkJPC9zZWN0aW9uPg0KKw0KKwk8L2JvZHk+DQorDQorPC9kb2N1bWVudD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS94ZG9jcy9KVk1QZXJmb3JtYW5jZVR1bmluZy54bWwgYi94ZG9jcy9KVk1QZXJmb3JtYW5jZVR1bmluZy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWRkZGU3ZgotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL0pWTVBlcmZvcm1hbmNlVHVuaW5nLnhtbApAQCAtMCwwICsxLDc0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0NCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorDQorICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKw0KKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgLS0+DQorPGRvY3VtZW50Pg0KKw0KKwk8cHJvcGVydGllcz4NCisJCTx0aXRsZT5QZXJmb3JtYW5jZSBUdW5pbmc8L3RpdGxlPg0KKwkJPGF1dGhvciBlbWFpbD0ic2ViYXdhZ25lckBhcGFjaGUub3JnIj4NCisJCQlPcGVuTWVldGluZ3MgVGVhbQ0KKwkJPC9hdXRob3I+DQorCTwvcHJvcGVydGllcz4NCisNCisJPGJvZHk+DQorDQorCQk8c2VjdGlvbiBuYW1lPSJQZXJmb3JtYW5jZSBUdW5pbmciPg0KKw0KKwkJCTxwPlRvIHVzZSB0aGUgb3B0aW11bSBvZiBwZXJmb3JtYW5jZSBmcm9tIHlvdXIgc2VydmVyIHRoZXJlIGlzIGENCisJCQkJc3RhcnQtc2NyaXB0IGZvciByZWQ1IGF2YWlsYWJsZSB0aGF0IGRvZXMgc29tZSBiYXNpYyBzZXR0aW5ncyBpbiB0aGUNCisJCQkJSlZNLiBJdCBpcyBjYWxsZWQgcmVkNS1oaWdocGVyZi5zaC4gSXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlIHRoYXQNCisJCQkJc2NyaXB0IGZvciBwcm9kdWN0aW9uIGFuZCBoaWdoLWxvYWQgc2NlbmFyaW9zLg0KKwkJCTwvcD4NCisJCQk8ZGl2IGNsYXNzPSJ4bWxjb2RlIj4NCisJCQkJIyEvYmluL2Jhc2gNCisJCQkJPGJyIC8+DQorCQkJCTxiciAvPg0KKwkJCQlpZiBbIC16ICIkUkVENV9IT01FIiBdOyB0aGVuIGV4cG9ydCBSRUQ1X0hPTUU9LjsgZmkNCisJCQkJPGJyIC8+DQorCQkJCTxiciAvPg0KKwkJCQkjIFByZXZpb3VzIG9wdGlvbiBzZXQNCisJCQkJPGJyIC8+DQorCQkJCWV4cG9ydCBKQVZBX09QVFM9Ii1YcnMgLVhtczUxMk0gLVhteDEwMjRNIC1Yc3MxMjhLIC1YWDpOZXdTaXplPTI1Nm0NCisJCQkJLVhYOlN1cnZpdm9yUmF0aW89MTYgLVhYOk1pbkhlYXBGcmVlUmF0aW89MjANCisJCQkJLVhYOitFeHBsaWNpdEdDSW52b2tlc0NvbmN1cnJlbnQgLURqYXZhLm5ldC5wcmVmZXJJUHY0U3RhY2s9dHJ1ZQ0KKwkJCQktWHZlcmlmeTpub25lIg0KKwkJCQk8YnIgLz4NCisJCQkJPGJyIC8+DQorCQkJCSMgc3RhcnQgUmVkNQ0KKwkJCQk8YnIgLz4NCisJCQkJZWNobyAiU2V0dGluZyBIaSBQZXJmb3JtYW5jZSBPcHRpb25zIg0KKwkJCQk8YnIgLz4NCisJCQkJZXhlYyAkUkVENV9IT01FL3JlZDUuc2ggPj4gJFJFRDVfSE9NRS9sb2cvanZtLnN0ZG91dCAyPiZhbXA7MSAmYW1wOw0KKwkJCQk8YnIgLz4NCisJCQk8L2Rpdj4NCisNCisJCQk8cD5Zb3UgaGF2ZSB0byBleGNsdWRlIHRoZSAiLVhYOitVc2VDb25jTWFya1N3ZWVwR0MiIHBhcmFtIGZyb20gdGhlDQorCQkJCWRlZmF1bHQgcmVkNS1oaWdocGVyZi5zaCB0byBtYWtlIGl0IGZ1bmN0aW9uYWwhIEhvd2V2ZXIgaWYgeW91IGFyZSBhDQorCQkJCXBlcmZvcm1hbmNlIGV4cGVydCB5b3UgbWlnaHQgYWxzbyBwbGF5IHdpdGggdGhlIHZhbHVlcyB0byBmaW5kDQorCQkJCXBlcmZlY3QgbWF0Y2hlcyBmb3IgeW91ciB1c2UtY2FzZS4NCisJCQk8L3A+DQorCQkJPHA+DQorCQkJCUZvciBhIGNvbXBsZXRlIG92ZXJ2aWV3IGFib3V0IHBvc3NpYmxlIGFyZ3VtZW50cyBhbmQgdGhlaXIgbWVhbmluZw0KKwkJCQlzZWU6DQorCQkJCTxhDQorCQkJCQlocmVmPSJodHRwOi8vd3d3Lm9yYWNsZS5jb20vdGVjaG5ldHdvcmsvamF2YS9qYXZhc2UvdGVjaC92bW9wdGlvbnMtanNwLTE0MDEwMi5odG1sI1BlcmZvcm1hbmNlVHVuaW5nIg0KKwkJCQkJcmVsPSJub2ZvbGxvdyI+aHR0cDovL3d3dy5vcmFjbGUuY29tL3RlY2huZXR3b3JrL2phdmEvamF2YXNlL3RlY2gvdm1vcHRpb25zLWpzcC0xNDAxMDIuaHRtbCNQZXJmb3JtYW5jZVR1bmluZw0KKwkJCQk8L2E+DQorCQkJPC9wPg0KKw0KKwkJPC9zZWN0aW9uPg0KKw0KKwk8L2JvZHk+DQorDQorPC9kb2N1bWVudD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS94ZG9jcy9KaXJhUGx1Z2luLnhtbCBiL3hkb2NzL0ppcmFQbHVnaW4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQxYWZiZjkKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9KaXJhUGx1Z2luLnhtbApAQCAtMCwwICsxLDU5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0NCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorDQorICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKw0KKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgLS0+DQorPGRvY3VtZW50Pg0KKw0KKwk8cHJvcGVydGllcz4NCisJCTx0aXRsZT5KaXJhIFBsdWdpbjwvdGl0bGU+DQorCQk8YXV0aG9yIGVtYWlsPSJldWdlbi5zY2h3ZXJ0QGdtYWlsLmNvbSI+DQorCQkJT3Blbk1lZXRpbmdzIFRlYW0NCisJCTwvYXV0aG9yPg0KKwk8L3Byb3BlcnRpZXM+DQorDQorCTxib2R5Pg0KKw0KKwkJPHNlY3Rpb24gbmFtZT0iSmlyYSBQbHVnaW4gZm9yIE9wZW5NZWV0aW5ncyI+DQorCQkJPHA+DQorCQkJCUN1cnJlbnQgRGV2ZWxvcG1lbnQgU25hcHNob3RzIGZvciB0ZXN0aW5nIGNhbiBiZSBkb3dubG9hZGVkIGZyb206DQorCQkJCTxhIGhyZWY9Imh0dHBzOi8vc3ZuLmFwYWNoZS5vcmcvcmVwb3MvYXNmL29wZW5tZWV0aW5ncy9icmFuY2hlcy9qaXJhLXBsdWdpbi90YXJnZXQvb3Blbm1lZXRpbmdzLTEuMC1TTkFQU0hPVC5qYXIiPmhlcmU8L2E+DQorCQkJCS4NCisJCQk8L3A+CQkJDQorCQk8L3NlY3Rpb24+DQorCQkNCisJCTxzZWN0aW9uIG5hbWU9IkZlYXR1cmVzIj4NCisJCQk8cD5UaGUgcGx1Z2luIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgZmVhdHVyZXM6IDwvcD4NCisJCQk8dWw+DQorCQkJCTxsaT5DcmVhdGUgdmlkZW9jb25mZXJlbmNlIHJvb21zIHRocm91Z2ggSmlyYTogPC9saT4NCisJCQkJPGxpPg0KKwkJCQkJPG9sPg0KKwkJCQkJCTxsaT5JbnRlZ3JhdGVkIHdpdGggSmlyYSBpc3N1ZXMgPC9saT4JCQkJCQkJCQkJDQorCQkJCQkJPGxpPkNvbmZpZ3VyYWJsZSByb29tIHR5cGUgPC9saT4NCisJCQkJCTwvb2w+DQorCQkJCTwvbGk+DQorCQkJPC91bD4JCQkNCisJCTwvc2VjdGlvbj4JDQorCQkNCisJCTxzZWN0aW9uIG5hbWU9IkRlbW8gdmlkZW8iPgkJCQ0KKwkJCTxwPlRoZSBkZW1vIHZpZGVvIG9mIEppcmEgcGx1Z2luIHNob3cgeW91IHRoZSBwbHVnaW4gaW4gYWN0aW9uIDwvcD4gICAgICAgICAgICAgIA0KKwkJICAgICAgPG9iamVjdCBzdHlsZT0iaGVpZ2h0OiAzOTBweDsgd2lkdGg6IDY0MHB4Ij4NCisJCQkgICAgICA8cGFyYW0gbmFtZT0ibW92aWUiIHZhbHVlPSJodHRwOi8vd3d3LnlvdXR1YmUuY29tL3YveEJkWWotT1p2bGM/dmVyc2lvbj0zJmFtcDtmZWF0dXJlPXBsYXllcl9kZXRhaWxwYWdlIi8+DQorCQkJICAgICAgPHBhcmFtIG5hbWU9ImFsbG93RnVsbFNjcmVlbiIgdmFsdWU9InRydWUiLz4NCisJCQkgICAgICA8cGFyYW0gbmFtZT0iYWxsb3dTY3JpcHRBY2Nlc3MiIHZhbHVlPSJhbHdheXMiLz4NCisJCQkgICAgICA8ZW1iZWQgc3JjPSJodHRwOi8vd3d3LnlvdXR1YmUuY29tL3YveEJkWWotT1p2bGM/dmVyc2lvbj0zJmFtcDtmZWF0dXJlPXBsYXllcl9kZXRhaWxwYWdlIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgYWxsb3dmdWxsc2NyZWVuPSJ0cnVlIiBhbGxvd1NjcmlwdEFjY2Vzcz0iYWx3YXlzIiB3aWR0aD0iNjQwIiBoZWlnaHQ9IjM2MCIvPg0KKwkJICAgICAgPC9vYmplY3Q+IA0KKwkJPC9zZWN0aW9uPg0KKw0KKwk8L2JvZHk+DQorDQorPC9kb2N1bWVudD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS94ZG9jcy9Kb29tbGFQbHVnaW4ueG1sIGIveGRvY3MvSm9vbWxhUGx1Z2luLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzJlOTA2Ci0tLSAvZGV2L251bGwKKysrIGIveGRvY3MvSm9vbWxhUGx1Z2luLnhtbApAQCAtMCwwICsxLDcxIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0NCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorDQorICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKw0KKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgLS0+DQorPGRvY3VtZW50Pg0KKwk8cHJvcGVydGllcz4NCisJCTx0aXRsZT5Kb29tbGEgUGx1Z2luPC90aXRsZT4NCisJCTxhdXRob3IgZW1haWw9InNvbG9tYXhAYXBhY2hlLm9yZyI+DQorCQkJT3Blbk1lZXRpbmdzIFRlYW0NCisJCTwvYXV0aG9yPg0KKwk8L3Byb3BlcnRpZXM+DQorCTxib2R5Pg0KKwkJPHNlY3Rpb24gbmFtZT0iT3Blbk1lZXRpbmdzIFBsdWdpbiBmb3IgSm9vbWxhIj4NCisJCQk8cD4NCisJCQkJQ3VycmVudCBEZXZlbG9wbWVudCBTbmFwc2hvdHMgZm9yIHRlc3RpbmcgY2FuIGJlIGNyZWF0ZWQgZnJvbSB0aGUgc291cmNlczoNCisJCQkJPGEgaHJlZj0iaHR0cHM6Ly9zdm4uY29kZXNwb3QuY29tL2EvYXBhY2hlLWV4dHJhcy5vcmcvb3Blbm1lZXRpbmdzLWpvb21sYS1wbHVnaW4vdHJ1bmsiPmhlcmU8L2E+DQorCQkJCS4NCisJCQk8L3A+CQkJDQorCQk8L3NlY3Rpb24+DQorCQk8c2VjdGlvbiBuYW1lPSJGZWF0dXJlcyI+DQorCQkJPHA+VGhlIHBsdWdpbiBjb250YWlucyB0aGUgZm9sbG93aW5nIGZlYXR1cmVzOiA8L3A+DQorCQkJPHVsPg0KKwkJCQk8bGk+Q3JlYXRlIHZpZGVvY29uZmVyZW5jZSByb29tcyBmcm9tIEpvb21sYTogPC9saT4NCisJCQkJPGxpPg0KKwkJCQkJPG9sPg0KKwkJCQkJCTxsaT5DcmVhdGUgcm9vbXM8L2xpPgkJCQkJCQkJCQkNCisJCQkJCQk8bGk+RW50ZXIgdGhlIHJvb208L2xpPg0KKwkJCQkJPC9vbD4NCisJCQkJPC9saT4NCisJCQkJPGxpPkFjY2VzcyByZWNvcmRpbmdzIGZyb20gSm9vbWxhOiA8L2xpPg0KKwkJCQk8bGk+DQorCQkJCQk8b2w+DQorCQkJCQkJPGxpPkRvd25sb2FkIHJlY29yZGluZ3M8L2xpPgkJCQkJCQkJCQkNCisJCQkJCTwvb2w+DQorCQkJCTwvbGk+DQorCQkJPC91bD4NCisJCTwvc2VjdGlvbj4NCisJCTxzZWN0aW9uIG5hbWU9IkRlbW8gdmlkZW8iPgkJCQ0KKwkJCTxkaXY+DQorCQkJCTxiPk9wZW5NZWV0aW5ncyBKb29tbGEgUGx1Z2luIEluc3RhbGxhdGlvbjwvYj48YnIvPiAgICAgICAgICAgICAgDQorCQkJCTxvYmplY3Qgc3R5bGU9ImhlaWdodDogMzYwcHg7IHdpZHRoOiA2NDBweCI+DQorCQkJCQk8cGFyYW0gbmFtZT0ibW92aWUiIHZhbHVlPSJodHRwOi8vd3d3LnlvdXR1YmUuY29tL3YvanQ4ZWpndEhhdmM/dmVyc2lvbj0zJmFtcDtmZWF0dXJlPXBsYXllcl9kZXRhaWxwYWdlIi8+DQorCQkJCQk8cGFyYW0gbmFtZT0iYWxsb3dGdWxsU2NyZWVuIiB2YWx1ZT0idHJ1ZSIvPg0KKwkJCQkJPHBhcmFtIG5hbWU9ImFsbG93U2NyaXB0QWNjZXNzIiB2YWx1ZT0iYWx3YXlzIi8+DQorCQkJCQk8ZW1iZWQgc3JjPSJodHRwOi8vd3d3LnlvdXR1YmUuY29tL3YvanQ4ZWpndEhhdmM/dmVyc2lvbj0zJmFtcDtmZWF0dXJlPXBsYXllcl9kZXRhaWxwYWdlIiB0eXBlPSJhcHBsaWNhdGlvbi94LXNob2Nrd2F2ZS1mbGFzaCIgYWxsb3dmdWxsc2NyZWVuPSJ0cnVlIiBhbGxvd1NjcmlwdEFjY2Vzcz0iYWx3YXlzIiB3aWR0aD0iNjQwIiBoZWlnaHQ9IjM2MCIvPg0KKwkJCQk8L29iamVjdD4gDQorCQkJPC9kaXY+DQorCQkJPGJyLz4NCisJCQk8ZGl2Pg0KKwkJCQk8Yj5PcGVuTWVldGluZ3MgSW50ZWdyYXRpb24gd2l0aCBKb29tbGE8L2I+PGJyLz4gICAgICAgICAgICAgIA0KKwkJCQk8b2JqZWN0IHN0eWxlPSJoZWlnaHQ6IDM2MHB4OyB3aWR0aDogNjQwcHgiPg0KKwkJCQkJPHBhcmFtIG5hbWU9Im1vdmllIiB2YWx1ZT0iaHR0cDovL3d3dy55b3V0dWJlLmNvbS92L0g2MU4wcGZMdXNBP3ZlcnNpb249MyZhbXA7ZmVhdHVyZT1wbGF5ZXJfZGV0YWlscGFnZSIvPg0KKwkJCQkJPHBhcmFtIG5hbWU9ImFsbG93RnVsbFNjcmVlbiIgdmFsdWU9InRydWUiLz4NCisJCQkJCTxwYXJhbSBuYW1lPSJhbGxvd1NjcmlwdEFjY2VzcyIgdmFsdWU9ImFsd2F5cyIvPg0KKwkJCQkJPGVtYmVkIHNyYz0iaHR0cDovL3d3dy55b3V0dWJlLmNvbS92L0g2MU4wcGZMdXNBP3ZlcnNpb249MyZhbXA7ZmVhdHVyZT1wbGF5ZXJfZGV0YWlscGFnZSIgdHlwZT0iYXBwbGljYXRpb24veC1zaG9ja3dhdmUtZmxhc2giIGFsbG93ZnVsbHNjcmVlbj0idHJ1ZSIgYWxsb3dTY3JpcHRBY2Nlc3M9ImFsd2F5cyIgd2lkdGg9IjY0MCIgaGVpZ2h0PSIzNjAiLz4NCisJCQkJPC9vYmplY3Q+IA0KKwkJCTwvZGl2Pg0KKwkJPC9zZWN0aW9uPg0KKwk8L2JvZHk+DQorDQorPC9kb2N1bWVudD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS94ZG9jcy9MYW5ndWFnZUVkaXRvci54bWwgYi94ZG9jcy9MYW5ndWFnZUVkaXRvci54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA5ODYxZAotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL0xhbmd1YWdlRWRpdG9yLnhtbApAQCAtMCwwICsxLDYwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0NCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorDQorICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKw0KKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgLS0+DQorPGRvY3VtZW50Pg0KKw0KKwk8cHJvcGVydGllcz4NCisJCTx0aXRsZT5MYW5ndWFnZSBFZGl0b3I8L3RpdGxlPg0KKwkJPGF1dGhvciBlbWFpbD0ic2ViYXdhZ25lckBhcGFjaGUub3JnIj4NCisJCQlPcGVuTWVldGluZ3MgVGVhbQ0KKwkJPC9hdXRob3I+DQorCTwvcHJvcGVydGllcz4NCisNCisJPGJvZHk+DQorDQorCQk8c2VjdGlvbiBuYW1lPSJMYW5ndWFnZSBFZGl0b3IiPg0KKw0KKwkJCTxwPkZlYXR1cmVzOjwvcD4NCisJCQk8dWw+DQorCQkJCTxsaT5lZGl0IHRoZSBsYWJlbHMgb2YgYW55IGxhbmd1YWdlLCBjaGFuZ2VzIHdpbGwgdGFrZSBlZmZlY3QgYXMNCisJCQkJCXNvb24gYXMgeW91IHJlLWxvZ2luDQorCQkJCTwvbGk+DQorCQkJCTxsaT5hZGQgbmV3IGxhbmd1YWdlcyAoZm9yIGV4YW1wbGUgdG8gZml0IHlvdXIgY28tb3BlcmF0aXZlIGRlc2lnbg0KKwkJCQkJYW5kIGxhbmd1YWdlIG9mIHlvdXIgY29tcGFueSkNCisJCQkJPC9saT4NCisJCQkJPGxpPmV4cG9ydCB0aGUgbGFuZ3VhZ2UtZmlsZXMgdG8gYW4gWE1MIEZpbGUgKHRoZXNlIGxhbmd1YWdlIEZpbGVzDQorCQkJCQljYW4gYmUgdXNlZCBmb3IgeW91ciBuZXh0IGluc3RhbGxhdGlvbiBvciBhcyBjb250cmlidXRpb24gdG8gdGhlDQorCQkJCQlwcm9qZWN0KQ0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+DQorCQkJCQlpbXBvcnQgb2YgbGFuZ3VhZ2UgZmlsZXMgKA0KKwkJCQkJPGk+eW91IHNob3VsZCByZXN0YXJ0IHRoZSBzZXJ2ZXIgaWYgeW91IGZhY2UgcHJvYmxlbXMsIGFzIHRoZQ0KKwkJCQkJCWRhdGFiYXNlIGNhY2hlIG1pZ2h0IGJlIGludmFsaWQNCisJCQkJCTwvaT4NCisJCQkJCSkNCisJCQkJPC9saT4NCisJCQk8L3VsPg0KKwkJCTxwPlNjcmVlbiBmcm9tIHRoZSBBZG1pbmlzdHJhdGlvbiBQYW5lbDogPC9wPg0KKwkJCTxwPg0KKwkJCQk8YSBjbGFzcz0iZmFuY3lib3gtYnV0dG9ucyIgaHJlZj0iaW1hZ2VzL2xhbmdlZGl0b3Jfc2NyZWVuX3YyLnBuZyI+DQorCQkJCQk8aW1nIHNyYz0iaW1hZ2VzL2xhbmdlZGl0b3Jfc2NyZWVuX3YyLnBuZyIgYWx0PSIiIHdpZHRoPSI0NzUiDQorCQkJCQkJaGVpZ2h0PSIzMjQiIC8+DQorCQkJCTwvYT4NCisJCQk8L3A+DQorDQorCQk8L3NlY3Rpb24+DQorDQorCTwvYm9keT4NCisNCis8L2RvY3VtZW50PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3hkb2NzL0xkYXBBbmRBRFMueG1sIGIveGRvY3MvTGRhcEFuZEFEUy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTFmMTBhNwotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL0xkYXBBbmRBRFMueG1sCkBAIC0wLDAgKzEsNjIgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPCEtLQ0KKyAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisNCisgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorDQorICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAtLT4NCis8ZG9jdW1lbnQ+DQorDQorCTxwcm9wZXJ0aWVzPg0KKwkJPHRpdGxlPkhvbWU8L3RpdGxlPg0KKwkJPGF1dGhvciBlbWFpbD0ic2ViYXdhZ25lckBhcGFjaGUub3JnIj4NCisJCQlTZWJhc3RpYW4gV2FnbmVyDQorCQk8L2F1dGhvcj4NCisJPC9wcm9wZXJ0aWVzPg0KKw0KKwk8Ym9keT4NCisNCisJCTxzZWN0aW9uIG5hbWU9IkxEQVAgYW5kIEFjdGl2ZSBEaXJlY3RvcnkgSW50ZWdyYXRpb24iPg0KKw0KKwkJCTxwPiBJbjogJFJFRDVfSE9NRS93ZWJhcHBzL29wZW5tZWV0aW5ncy9jb25mPGJyLz4NCisNCisJCQkJeW91IHdpbGwgZmluZCBzYW1wbGUgY29uZmlndXJhdGlvbnMgZm9yIExEQVAgYW5kIEFjdGl2ZSBEaXJlY3RvcnkuIFRoZQ0KKwkJCQluYXR1cmUgb2YgdGhvc2UgRGlyZWN0b3J5IFNlcnZlcnMgYXJlIHRoYXQgdGhleSBhcmUgaW5kaXZpZHVhbCBmb3INCisJCQkJZXZlcnkgb3JnYW5pemF0aW9uLCBzbyB5b3UgaGF2ZSB0byBtb2RpZnkgb2YgY291cnNlIGF0IGxlYXN0IHRoZQ0KKwkJCQlwYXRoIHRvIHlvdXIgdXNlci1iYXNlIGV0IGNldGVyYS48YnIvPg0KKwkJCQk8YnIvPg0KKwkJCQlUbyBhY3RpdmF0ZSBhbnkgb2YgdGhvc2UgY29uZmlndXJhdGlvbnMgeW91IGhhdmUgdG8gbG9naW4gaW50bw0KKwkJCQlPcGVuTWVldGluZ3MsIGdvdG8gQWRtaW5pc3RyYXRpb24gPiBMZGFwLg0KKwkJCTwvcD4NCisJCQkNCisJCQk8YSBjbGFzcz0iZmFuY3lib3gtYnV0dG9ucyIgaHJlZj0iaW1hZ2VzL2xkYXBfc2NyZWVuLnBuZyI+DQorCQkJCQk8aW1nIHNyYz0iaW1hZ2VzL2xkYXBfc2NyZWVuLnBuZyIgYWx0PSIiIHdpZHRoPSI0NDIiIGhlaWdodD0iMjgyIiAvPg0KKwkJCQk8L2E+DQorCQkJDQorCQkJPHA+DQorCQkJCUltcG9ydCBpcyB0aGF0IHlvdSBjb25maWd1cmUgTERBUF9TRUFSQ0hfUEFUSCBzbyB0aGF0IGl0IHBvaW50cyB0byB0aGUgbm9kZSBvZiB5b3VyIGRpcmVjdG9yeSBzZXJ2ZXIgdGhhdCBjb250YWlucyB0aGUgdXNlcnMNCisJCQk8L3A+DQorCQkJDQorCQkJPHA+DQorCQkJCUlmIHlvdSBoYXZlIG11bHRpcGxlIHNlYXJjaCBwYXRocyB5b3UgY2FuIGVpdGhlciB0cnkgdG8gZGVmaW5lIGEgc2VhcmNoIHBhdGggdGhhdCBwb2ludHMgdG8gbXVsdGlwbGUgbm9kZXMgb3IgZGVmaW5lIG11bHRpcGxlIGxkYXAgY29uZmlndXJhdGlvbnMuDQorCQkJPC9wPg0KKwkJCQ0KKwkJCTxwPg0KKwkJCQlTdWNjZXNzZnVsIGludGVncmF0aW9uIGlzIGFsc28gcmVwb3J0ZWQgd2l0aCBOb3ZlbGwgZURpcmVjdG9yeQ0KKwkJCTwvcD4NCisJCQkNCisJCQk8cD4NCisJCQkJWW91IGNhbiBjb25maWd1cmUgbXVsdGlwbGUgZG9tYWlucyBvciBkaWZmZXJlbnQgdXNlci1wYXRocyBpbiB0aGUgQWRtaW5pc3RyYXRpb24gb2YgT3Blbk1lZXRpbmdzLiANCisJCQk8L3A+DQorDQorCQk8L3NlY3Rpb24+DQorDQorCTwvYm9keT4NCis8L2RvY3VtZW50PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3hkb2NzL01hbnVhbFRlc3RpbmcueG1sIGIveGRvY3MvTWFudWFsVGVzdGluZy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzAxZWZkMAotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL01hbnVhbFRlc3RpbmcueG1sCkBAIC0wLDAgKzEsMzgwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0NCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorDQorICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKw0KKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgLS0+DQorPGRvY3VtZW50Pg0KKw0KKwk8cHJvcGVydGllcz4NCisJCTx0aXRsZT5NYW51YWwgVGVzdGluZzwvdGl0bGU+DQorCQk8YXV0aG9yIGVtYWlsPSJpYXJraEBhcGFjaGUub3JnIj4NCisJCQlPcGVuTWVldGluZ3MgVGVhbQ0KKwkJPC9hdXRob3I+DQorCTwvcHJvcGVydGllcz4NCisNCisJPGJvZHk+DQorDQorCQk8c2VjdGlvbiBuYW1lPSJJbnRyb2R1Y3Rpb24iPg0KKw0KKwkJCTxwPg0KKwkJCQlCZWxvdyBpcyBhIHRlc3QgcGxhbiBmb3IgdGhlIE9wZW5NZWV0aW5ncyAyLjEgcHJlLXJlbGVhc2UgdGVzdGluZy4NCisJCQk8L3A+DQorCQk8L3NlY3Rpb24+DQorDQorCQk8c2VjdGlvbiBuYW1lPSJEZXRhaWxzIj4NCisNCisJCQk8b2w+DQorCQkJCTxsaT4NCisJCQkJCTxiPlVzZXIgR1VJIHRlc3RzPC9iPg0KKwkJCQkJPG9sPg0KKwkJCQkJCTxsaT4NCisJCQkJCQkJTG9naW4vbG9nb3V0IA0KKwkJCQkJCQk8b2w+DQorCQkJCQkJCQk8bGk+UGFzc3dvcmQgcmVjb3ZlcmluZyA8L2xpPg0KKwkJCQkJCQkJPGxpPlNlbGYtcmVnaXN0ZXJpbmcgPC9saT4NCisJCQkJCQkJCTxsaT4iVmlzaXQgQXBhY2hlIE9wZW5NZWV0aW5ncyIgbGluayA8L2xpPg0KKwkJCQkJCQkJPGxpPkVudGVyIHdyb25nIGxvZ2luL3Bhc3N3b3JkIDwvbGk+DQorCQkJCQkJCQk8bGk+RW50ZXIgY29ycmVjdCBsb2dpbi9wYXNzd29yZCA8L2xpPg0KKwkJCQkJCQkJPGxpPkV4aXQgdGhlIHN5c3RlbSBieSBjbGljayB0aGUgRXhpdCBidXR0b24gPC9saT4NCisJCQkJCQkJPC9vbD4NCisJCQkJCQk8L2xpPg0KKwkJCQkJCTxsaT4NCisJCQkJCQkJRGFzaGJvYXJkDQorCQkJCQkJCTxvbD4NCisJCQkJCQkJCTxsaT5Db3JyZWN0IHVzZXIgaW5mbyBpbiB0aGUgdXBwZXIgbGVmdCBjb3JuZXIgPC9saT4NCisJCQkJCQkJCTxsaT5MaW5rcyBpbiB0aGUgIkhlbHAgYW5kIHN1cHBvcnQiIHNlY3Rpb24gPC9saT4NCisJCQkJCQkJCTxsaT5JdCBzaG91bGQgYmUgcG9zc2libGUgdG8gZW50ZXIgdXNlcuKAmXMgcm9vbSBmcm9tIHRoZSBkYXNoYm9hcmQgPC9saT4NCisJCQkJCQkJCTxsaT5Sb29tIGRldGFpbHMgc2hvdWxkIGJlIHNob3duIGNvcnJlY3RseSBpbiB0aGUgIlJvb21zIGluIHRoaXMgc2VjdGlvbuKApiIgcGFydCBvZiB0aGUgc2NyZWVuIDwvbGk+DQorCQkJCQkJCTwvb2w+CQkJCQkNCisJCQkJCQk8L2xpPg0KKwkJCQkJCTxsaT4NCisJCQkJCQkJR2xvYmFsIGNoYXQgDQorCQkJCQkJCTxvbD4NCisJCQkJCQkJCTxsaT5TZW5kL3JlY2VpdmUgbWVzc2FnZSB3aGVyZSBhdCBsZWFzdCAzIHVzZXJzIGluIHRoZSBzeXN0ZW0gPC9saT4NCisJCQkJCQkJCTxsaT5BZGRpbmcgYSBjb250YWN0IHRvIHRoZSBjb250YWN0IGxpc3QgPC9saT4NCisJCQkJCQkJCTxsaT5Qcml2YXRlIG1lc3NhZ2UgPC9saT4NCisJCQkJCQkJCTxsaT5TaG93aW5nIHVzZXIgcHJvZmlsZSA8L2xpPg0KKwkJCQkJCQkJPGxpPkludml0aW5nIHVzZXIgdG8gdGhlIGNvbmZlcmVuY2Ugcm9vbSA8L2xpPg0KKwkJCQkJCQkJPGxpPkNvcHkgY2hhdCBsb2cgPC9saT4NCisJCQkJCQkJCTxsaT5EZWxldGUgY2hhdCBsb2cgPC9saT4NCisJCQkJCQkJCTxsaT5DaGFuZ2luZyBmb250IHN0eWxlIGluIHRoZSBtYXNzYWdlIDwvbGk+DQorCQkJCQkJCQk8bGk+QWRkaW5nIGVtb3Rpb25zIHRvIHRoZSBtZXNzYWdlIDwvbGk+DQorCQkJCQkJCTwvb2w+DQorCQkJCQkJCUF0dGVudGlvbiEgQ29ycmVjdCBSVEwgc3VwcG9ydCBkb2VzIG5vdCB3b3JrIGluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIA0KKwkJCQkJCTwvbGk+DQorCQkJCQkJPGxpPg0KKwkJCQkJCQlDYWxlbmRhciB2aWV3DQorCQkJCQkJCTxvbD4NCisJCQkJCQkJCTxsaT5DaGFuZ2UgdmlldyAod2Vla2x5L2RhaWx5L21vbnRobHkpIGFuZCBtb3ZpbmcgYmV0d2VlbiB0aGUgZGF0ZXMgPC9saT4NCisJCQkJCQkJCTxsaT5BZGRpbmcvcmVtb3ZpbmcvbW92aW5nIGJ5IG1vdXNlIGFuIGV2ZW50IDwvbGk+DQorCQkJCQkJCTwvb2w+DQorCQkJCQkJPC9saT4NCisJCQkJCQk8bGk+DQorCQkJCQkJCUNhbGVuZGFyIGludml0YXRpb24gd2luZG93DQorCQkJCQkJCTxvbD4NCisJCQkJCQkJCTxsaT5DcmVhdGluZy91cGRhdGluZy9kZWxldGluZyBhbiBldmVudCA8L2xpPg0KKwkJCQkJCQkJPGxpPkludml0aW5nIDMgaW50ZXJuYWwgYW5kIDMgZXh0ZXJuYWwgZ3Vlc3RzIDwvbGk+DQorCQkJCQkJCQk8bGk+RGlmZmVyZW50IHJlbWluZGVyIHR5cGVzOiByZWNlaXZpbmcgZS1tYWlsIGludml0YXRpb24gZm9yIGludGVybmFsIGFuZCBleHRlcm5hbCBndWVzdHMgPC9saT4NCisJCQkJCQkJCTxsaT5QYXNzd29yZCBwcm90ZWN0ZWQgaW52aXRhdGlvbiA8L2xpPg0KKwkJCQkJCQkJPGxpPkludml0aW5nIHRvIHRoZSByb29tcyBvZiB0aGUgZGlmZmVyZW50IHR5cGVzIDwvbGk+DQorCQkJCQkJCQk8bGk+Q2hvb3NpbmcgdGltZSB6b25lIGZvciBleHRlcm5hbCBndWVzdCA8L2xpPg0KKwkJCQkJCQkJPGxpPkNvcnJlY3QgdXNlciBkYXRhIGluIHRoZSBpbnZpdGF0aW9ucyA8L2xpPg0KKwkJCQkJCQkJPGxpPlNNUyByZW1pbmRlciBmb3IgaW50ZXJuYWwgYW5kIGV4dGVybmFsIGd1ZXN0cyA8L2xpPg0KKwkJCQkJCQkJPGxpPkUtbWFpbCByZW1pbmRlciBmb3IgaW50ZXJuYWwgYW5kIGV4dGVybmFsIGd1ZXN0cyA8L2xpPg0KKwkJCQkJCQkJPGxpPkl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBlbnRlciB0byB0aGUgZXZlbnQgdmlhIGludml0YXRpb24gbGluayByb29tIGF0IHRoZSBwYXJ0aWN1bGFyIHRpbWUgc2xvdCBvbmx5IDwvbGk+DQorCQkJCQkJCQk8bGk+RW50ZXIgdGhlIHJvb20gdmlhIGludml0YXRpb24gd2luZG93IDwvbGk+DQorCQkJCQkJCTwvb2w+DQorCQkJCQkJPC9saT4NCisJCQkJCQk8bGk+DQorCQkJCQkJCU15IFByb2ZpbGU6IFVzZXIgcHJvZmlsZSBzaG91bGQgY29udGFpbiBjb3JyZWN0IHVzZXIgaW5mbyBhbmQgYWxsb3cgdG8gZWRpdCB0aGlzIA0KKwkJCQkJCTwvbGk+DQorCQkJCQkJPGxpPg0KKwkJCQkJCQlDb250YWN0cyBhbmQgTWVzc2FnZXMNCisJCQkJCQkJPG9sPg0KKwkJCQkJCQkJPGxpPkFkZC9yZW1vdmUgYSBtZXNzYWdlIDwvbGk+IA0KKwkJCQkJCQkJPGxpPkNyZWF0aW5nIGEgbmV3IGZvbGRlciA8L2xpPg0KKwkJCQkJCQkJPGxpPk1vdmluZyBiZXR3ZWVuIHRoZSBmb2xkZXJzIDwvbGk+DQorCQkJCQkJCQk8bGk+TWFya2luZyBtZXNzYWdlcyBhcyByZWFkL3VucmVhZCA8L2xpPg0KKwkJCQkJCQkJPGxpPk1lc3NhZ2UgZmlsdGVycyA8L2xpPg0KKwkJCQkJCQkJPGxpPkNvbnRhY3QgbGlzdCA8L2xpPg0KKwkJCQkJCQk8L29sPg0KKwkJCQkJCTwvbGk+DQorCQkJCQkJPGxpPg0KKwkJCQkJCQlVc2VyIHNldHRpbmdzDQorCQkJCQkJCTxvbD4NCisJCQkJCQkJCTxsaT5Qb3NzaWJpbGl0eSB0byBjaGFuZ2UgdGhlIHVzZXIgaW5mbyA8L2xpPg0KKwkJCQkJCQkJPGxpPkNoYW5naW5nIHRpbWUgem9uZSBhbmQgbGFuZ3VhZ2UgKHNob3VsZCBzdGFydCB0byB3b3JrIGFmdGVyIHVzZXIgcmUtbG9naW4gPC9saT4NCisJCQkJCQkJCTxsaT5Db21tdW5pdHkgc2V0dGluZ3Mgb3IgZGlmZmVyZW50IHVzZXJzIDwvbGk+DQorCQkJCQkJCQk8bGk+RGlzcGxheSBzZXR0aW5nczwvbGk+IA0KKwkJCQkJCQk8L29sPg0KKwkJCQkJCTwvbGk+DQorCQkJCQkJPGxpPg0KKwkJCQkJCQlTZWFyY2ggdXNlcnMNCisJCQkJCQkJPG9sPg0KKwkJCQkJCQkJPGxpPlNlbmQgYSBwcml2YXRlIG1lc3NhZ2UgPC9saT4NCisJCQkJCQkJCTxsaT5BZGRpbmcgYSBjb250YWN0IDwvbGk+DQorCQkJCQkJCQk8bGk+VmlldyBjb250YWN0IGRldGFpbHMgdmlhIHVzZXIgbGlzdCA8L2xpPg0KKwkJCQkJCQk8L29sPg0KKwkJCQkJCTwvbGk+DQorCQkJCQkJPGxpPg0KKwkJCQkJCQlSb29tIGxpc3RzIA0KKwkJCQkJCQk8b2w+DQorCQkJCQkJCQk8bGk+UHVibGljIHJvb21zLCBwcml2YXRlIHJvb21zIGFuZCBteSByb29tcyBzaG91bGQgY29udGFpbiBjb3JyZWN0IHJvb20gbGlzdHMgPC9saT4NCisJCQkJCQkJCTxsaT5Vc2VyIGxpc3QgZm9yIHRoZSBzZWxlY3RlZCByb29tIDwvbGk+DQorCQkJCQkJCQk8bGk+Um9vbSBkZXRhaWxzIGZvciB0aGUgc2VsZWN0ZWQgcm9vbSA8L2xpPg0KKwkJCQkJCQk8L29sPg0KKwkJCQkJCTwvbGk+DQorCQkJCQkJPGxpPg0KKwkJCQkJCQlSZWNvcmRpbmdzDQorCQkJCQkJCTxvbD4gDQorCQkJCQkJCQk8bGk+VGhlIGxpc3Qgc2hvdWxkIGNvbnRhaW4gYXZhaWxhYmxlIHJlY29yZGluZ3MgaW4gcHVibGljIGFuZCBwcml2YXRlIGZvbGRlcnMgPC9saT4NCisJCQkJCQkJCTxsaT5JbmZvIHBhbmVsIHNob3VsZCBjb250YWluIGFjdHVhbCBpbmZvIGFib3V0IHRoZSByZWNvcmRpbmcgPC9saT4NCisJCQkJCQkJCTxsaT5Eb3dubG9hZGluZyBhIHJlY29yZGluZyBpcyBkaWZmZXJlbnQgZm9ybWF0cyAoQVZJL0ZMVikgPC9saT4NCisJCQkJCQkJCTxsaT5QbGF5IHRoZSByZWNvcmRpbmcgaW4gT3Blbk1lZXRpbmdzIDwvbGk+DQorCQkJCQkJCQk8bGk+UGxheSBkb3dubG9hZGVkIHJlY29yZGluZyBieSBXaW5kb3dzIHBsYXllciA8L2xpPg0KKwkJCQkJCQkJPGxpPlJlbW92ZSBhIHJlY29yZGluZyBmcm9tIHRoZSBmb2xkZXIgPC9saT4NCisJCQkJCQkJPC9vbD4NCisJCQkJCQk8L2xpPg0KKwkJCQkJCTxsaT4NCisJCQkJCQkJUmVzdHJpY3RlZCByb29tIHRlc3Rpbmcg4oCTIGdlbmVyYWwgaXNzdWVzIChzaG91bGQgYmUgdGVzdGVkIHdpdGggYXQgbGVhc3QgMyBhdHRlbmRlZXMpDQorCQkJCQkJCTxvbD4NCisJCQkJCQkJCTxsaT5FbnRlciB0aGUgcm9vbTogZGlmZmVyZW50IGNhc2VzIGZvciB0aGUgY2FtL21pY3JvLCBjaG9vc2luZyBvZiB0aGUgY2FtIHJlc29sdXRpb24sIHRlc3QgcmVjb3JkaW5nLCBhbGxvdy9kZW55IG9mIHZpZGVvIDwvbGk+DQorCQkJCQkJCQk8bGk+VXNlciBsaXN0IHNob3VsZCBiZSBzaG93biBjb3JyZWN0bHkgPC9saT4NCisJCQkJCQkJCTxsaT5Db3JyZWN0IHVzZXIgY3JlZGVudGlhbHMgYWZ0ZXIgIHRoZSByb29tIGVudGVyaW5nIDwvbGk+DQorCQkJCQkJCQk8bGk+QWRkIG1vZGVyYXRvciBwZXJtaXNzaW9ucyB0byB0aGUgdXNlciA8L2xpPg0KKwkJCQkJCQkJPGxpPlR1cm4gbWljcm8gb24vb2ZmIGluIHRoZSB1c2VyIGxpc3QgPC9saT4NCisJCQkJCQkJCTxsaT5JbmNyZWFzaW5nL2RlY3JlYXNpbmcgc291bmQgbGV2ZWwgYW5kIHR1cm5pbmcgbWljcm8gb24vb2ZmIGluIHRoZSB2aWRlbyB3aW5kb3cgPC9saT4NCisJCQkJCQkJCTxsaT5UdXJuIG1pY3JvIG9uL29mZiBpbiB0aGUgdXNlciBsaXN0IHRvIGFub3RoZXIgdXNlciDigJMgcG9zc2libGUgYnkgdGhlIG1vZGVyYXRvciBvbmx5IDwvbGk+DQorCQkJCQkJCQk8bGk+SW5jcmVhc2luZy9kZWNyZWFzaW5nIHNvdW5kIGxldmVsIGFuZCB0dXJuaW5nIG1pY3JvIG9uL29mZiBpbiB0aGUgdmlkZW8gd2luZG93IC0gcG9zc2libGUgYnkgdGhlIG1vZGVyYXRvciBvbmx5IDwvbGk+DQorCQkJCQkJCQk8bGk+QWxsb3cvZGVueSBkcmF3aW5nIG9uIHdoaXRlYm9hcmQg4oCTIHBvc3NpYmxlIGJ5IHRoZSBtb2RlcmF0b3Igb25seSA8L2xpPg0KKwkJCQkJCQkJPGxpPkFsbG93L2Rlbnkgc2NyZWVuIHNoYXJpbmcg4oCTIHBvc3NpYmxlIGJ5IHRoZSBtb2RlcmF0b3Igb25seSA8L2xpPg0KKwkJCQkJCQkJPGxpPkFsbG93L2RlbnkgcmVtb3RlIHNjcmVlbiBjb250cm9sIOKAkyBwb3NzaWJsZSBieSB0aGUgbW9kZXJhdG9yIG9ubHkgPC9saT4NCisJCQkJCQkJCTxsaT5BbGxvdy9kZW55IGV4Y2x1c2l2ZSBhdWRpbyDigJMgcG9zc2libGUgYnkgdGhlIG1vZGVyYXRvciBvbmx5IDwvbGk+DQorCQkJCQkJCQk8bGk+UmUtc3RhcnQgZGV2aXNlIHNldHRpbmdzIHZpYSB1c2VyIGxpc3QgPC9saT4NCisJCQkJCQkJCTxsaT5SZS1zdGFydCBkZXZpc2Ugc2V0dGluZ3MgdmlhIHZpZGVvIHdpbmRvdyA8L2xpPg0KKwkJCQkJCQkJPGxpPktpY2sgdGhlIHVzZXIgb2ZmIGJ5IHRoZSBtb2RlcmF0b3IgPC9saT4NCisJCQkJCQkJCTxsaT5DbGljayBGOCBrZXkgdG8gYXJyYW5nZSB2aWRlb3MgPC9saT4NCisJCQkJCQkJCTxsaT5BY3Rpdml0eSBhbmQgYWN0aW9ucyBwYW5lbCBzaG91bGQgY29udGFpbiBjb3JyZWN0IGluZm8gPC9saT4NCisJCQkJCQkJCTxsaT5FeGl0IHRoZSByb29tIDwvbGk+DQorCQkJCQkJCTwvb2w+DQorCQkJCQkJPC9saT4NCisJCQkJCQk8bGk+DQorCQkJCQkJCVJlc3RyaWN0ZWQgcm9vbSB0ZXN0aW5nOiBmaWxlIHVwbG9hZGluZyArIGRvY3VtZW50cw0KKwkJCQkJCQk8b2w+DQorCQkJCQkJCQk8bGk+VXBsb2FkIGEgZG9jdW1lbnQgd2l0aCAiTG9hZCBkaXJlY3RseSB0byB3aGl0ZWJvYXJkIiBzd2l0Y2ggdHVybmVkIG9uIDwvbGk+DQorCQkJCQkJCQk8bGk+VXBsb2FkIGEgd2l0aCAiTG9hZCBkaXJlY3RseSB0byB3aGl0ZWJvYXJkIiBzd2l0Y2ggdHVybmVkIG9uIG9mZiA8L2xpPg0KKwkJCQkJCQkJPGxpPlVwbG9hZCBhIGRvY3VtZW50IHdpdGggdGhlIGxvY2FsaXplZCBmaWxlIG5hbWUgYW5kIHNwYWNlcyBpbiB0aGUgbmFtZSA8L2xpPg0KKwkJCQkJCQkJPGxpPlVwbG9hZGluZyBhIGRvY3VtZW50IGludG8gZGlmZmVyZW50IGZvbGRlcnM6IHByaXZhdGUgZmlsZXMgc2hvdWxkIGJlIHZpc2libGUgb25seSB0aGVpciBvd25lciBvbmx5IDwvbGk+DQorCQkJCQkJCQk8bGk+UmVtb3ZpbmcgYSBmaWxlIGZyb20gdGhlIHJvb20gPC9saT4NCisJCQkJCQkJCTxsaT5Ib21lIGFuZCBwdWJsaWMgZHJpdmUgc2l6ZSBzaG91bGQgY2hhbmdlIGNvcnJlY3RseSA8L2xpPg0KKwkJCQkJCQkJPGxpPkFkZGluZyBhIG5ldyBmb2xkZXIgPC9saT4NCisJCQkJCQkJCTxsaT5SZW1vdmluZyBhIGZvbGRlciA8L2xpPg0KKwkJCQkJCQkJPGxpPkxvYWQgYSBkb2N1bWVudCBvZiBlYWNoIHN1cHBvcnRlZCB0eXBlIGFuZCBjaGVjayB0aGF0IGl04oCZcyBzaG93biBjb3JyZWN0bHkgPC9saT4NCisJCQkJCQkJPC9vbD4NCisJCQkJCQk8L2xpPg0KKwkJCQkJCTxsaT4NCisJCQkJCQkJUmVzdHJpY3RlZCByb29tIHRlc3Rpbmcg4oCTIHdoaXRlYm9hcmQgYW5kIHByb3BlcnRpZXMgcGFuZWxzIChzaG91bGQgYmUgdGVzdGVkIHdpdGggYXQgbGVhc3QgMyBhdHRlbmRlZXMpDQorCQkJCQkJCTxvbD4NCisJCQkJCQkJCTxsaT5BZGRpbmcgYSByZW1vdmluZyBhIHdoaXRlYm9hcmQgPC9saT4NCisJCQkJCQkJCTxsaT5GdWxsLWZpdCBzd2l0Y2ggPC9saT4NCisJCQkJCQkJCTxsaT5DbGVhciB3aGl0ZWJvYXJkIDwvbGk+DQorCQkJCQkJCQk8bGk+Q2xlYXIgb2JqZWN0cyBvZiBjdXJyZW50IHNsaWRlIG9ubHkgPC9saT4NCisJCQkJCQkJCTxsaT5TYXZlIGFuZCBleHBvcnQgPC9saT4NCisJCQkJCQkJCTxsaT5VbmRvIDwvbGk+DQorCQkJCQkJCQk8bGk+U2VsZWN0IGFuIG9iamVjdCA8L2xpPg0KKwkJCQkJCQkJPGxpPlBvaW50ZXIgPC9saT4NCisJCQkJCQkJCTxsaT5UZXh0IDwvbGk+DQorCQkJCQkJCQk8bGk+UGFpbnQgPC9saT4NCisJCQkJCQkJCTxsaT5EcmF3IGxpbmUgPC9saT4NCisJCQkJCQkJCTxsaT5EcmF3IHVuZGVybGluZSA8L2xpPg0KKwkJCQkJCQkJPGxpPlJlY3RhbmdsZSA8L2xpPg0KKwkJCQkJCQkJPGxpPkVsbGlwc2UgPC9saT4NCisJCQkJCQkJCTxsaT5BcnJvdyA8L2xpPg0KKwkJCQkJCQkJPGxpPkNsaXBhcnRzPC9saT4NCisJCQkJCQkJPC9vbD4JCQkJCQkNCisJCQkJCQk8L2xpPg0KKwkJCQkJCTxsaT4NCisJCQkJCQkJUmVzdHJpY3RlZCByb29tIHRlc3Rpbmcg4oCTIGNoYXQgKHNob3VsZCBiZSB0ZXN0ZWQgd2l0aCBhdCBsZWFzdCAzIGF0dGVuZGVlcykNCisJCQkJCQkJPG9sPg0KKwkJCQkJCQkJPGxpPlNlbmQgYSBtZXNzYWdlIDwvbGk+DQorCQkJCQkJCQk8bGk+U3RhcnQgYSBwcml2YXRlIGNoYXQgPC9saT4NCisJCQkJCQkJCTxsaT5DaGF0IG1vZGVyYXRpb24gPC9saT4NCisJCQkJCQkJCTxsaT5Gb250IHN0eWxlIDwvbGk+DQorCQkJCQkJCQk8bGk+RW1vdGlvbnMgPC9saT4NCisJCQkJCQkJCTxsaT5TaG93L2NvcHkgY2hhdCBsb2cgPC9saT4NCisJCQkJCQkJCTxsaT5EZWxldGUgc2VydmVyIGNoYXQgbG9nIDwvbGk+DQorCQkJCQkJCTwvb2w+DQorCQkJCQkJPC9saT4NCisJCQkJCQk8bGk+DQorCQkJCQkJCVJlc3RyaWN0ZWQgcm9vbSB0ZXN0aW5nIOKAkyBzY3JlZW4gc2hhcmluZyBhbmQgcmVjb3JkaW5ncyAoc2hvdWxkIGJlIHRlc3RlZCB3aXRoIGF0IGxlYXN0IDMgYXR0ZW5kZWVzKQ0KKwkJCQkJCQk8b2w+DQorCQkJCQkJCQk8bGk+IlNoYXJlIHJlY29yZC9zY3JlZW4iIGJ1dHRvbiBpbiB0aGUgcm9vbSA8L2xpPg0KKwkJCQkJCQkJPGxpPkRlc2t0b3Agc2hhcmVyOiBzdGFydC9zdG9wIHNoYXJpbmcgPC9saT4NCisJCQkJCQkJCTxsaT5DaGFuZ2UgdGhlIHNoYXJlZCBzY3JlZW4gYXJlYSAoWC1vZmZzZXQsIFktb2Zmc2V0LCB3aWR0aCwgaGVpZ2h0KSA8L2xpPg0KKwkJCQkJCQkJPGxpPkNoYW5nZSB0aGUgc2NyZWVuIHNoYXJpbmcgcXVhbGl0eSA8L2xpPg0KKwkJCQkJCQkJPGxpPlN0YXJ0L3N0b3AgcmVjb3JkaW5ncyDigJMgbmVlZCB0byBjaGVjayB0aGF0IGl0IHdvcmtzIGFzIGV4cGVjdGVkIDwvbGk+DQorCQkJCQkJCTwvb2w+DQorCQkJCQkJPC9saT4NCisJCQkJCQk8bGk+DQorCQkJCQkJCVJlc3RyaWN0ZWQgcm9vbSB0ZXN0aW5nIOKAkyBBY3Rpb25zIG1lbnUNCisJCQkJCQkJPG9sPg0KKwkJCQkJCQkJPGxpPlNlbmQgaW52aXRhdGlvbjogc2VuZCBFbmdsaXNoIGFuZCBsb2NhbGl6ZWQgbWVzc2FnZSA8L2xpPg0KKwkJCQkJCQkJPGxpPlNlbmQgaW52aXRhdGlvbiB3aXRoIHBhc3N3b3JkIDwvbGk+DQorCQkJCQkJCQk8bGk+U2VuZCBpbnZpdGF0aW9ucyB3aXRoIDMgZGlmZmVyZW50IHRpbWUgcGVyaW9kcyA8L2xpPg0KKwkJCQkJCQkJPGxpPkNoYW5nZSB0aW1lIHpvbmUgb2YgdGhlIGludml0YXRpb24gPC9saT4NCisJCQkJCQkJCTxsaT5DaGFuZ2UgbGFuZ3VhZ2Ugb2YgdGhlIGludml0YXRpb24gPC9saT4NCisJCQkJCQkJCTxsaT5TZW5kIGludml0YXRpb24gc2NyZWVuOiAiR2VuZXJhdGUgVVJMIiBidXR0b24g4oCTIGNoZWNrIHRoZSBzYW1lIHRoaW5ncyBhcyBmb3IgdGhlIGludml0YXRpb25zIHNlbnQgYnkgZW1haWwgPC9saT4NCisJCQkJCQkJCTxsaT5BcHBseSB0byBiZSBtb2RlcmF0b3IgPC9saT4NCisJCQkJCQkJCTxsaT5BcHBseSB0byB3aGl0ZWJvYXJkIGFjY2VzcyA8L2xpPg0KKwkJCQkJCQkJPGxpPkFwcGx5IHRvIGF1ZGlvL3ZpZGVvIGFjY2VzcyA8L2xpPg0KKwkJCQkJCQkJPGxpPkNyZWF0ZSBhIHBvbGwgPC9saT4NCisJCQkJCQkJCTxsaT5Qb2xsIHJlc3VsdHMgPC9saT4NCisJCQkJCQkJCTxsaT5Wb3RlIDwvbGk+DQorCQkJCQkJCQk8bGk+RGVmYXVsdCB3aGl0ZWJvYXJkIHNldHRpbmdzOiBjaGVjayBhbGwgb2YgdGhlbSA8L2xpPg0KKwkJCQkJCQk8L29sPg0KKwkJCQkJCTwvbGk+DQorCQkJCQkJPGxpPg0KKwkJCQkJCQlDb25mZXJlbmNlIHJvb20gdGVzdGluZw0KKwkJCQkJCQk8b2w+DQorCQkJCQkJCQk8bGk+VXNlciBsaXN0IHNob3VsZCBsb29rIGluIGFub3RoZXIgd2F5IGluIGNvbXBhcmUgd2l0aCByZXN0cmljdGVkIHR5cGUgPC9saT4NCisJCQkJCQkJCTxsaT5HZW5lcmFsbHksIGFsbCBzaG91bGQgbG9vayBPSyB3aGVuIGVudGVyIHRoZSByb29tIDwvbGk+DQorCQkJCQkJCTwvb2w+DQorCQkJCQkJPC9saT4NCisJCQkJCQk8bGk+DQorCQkJCQkJCUludGVydmlldyByb29tIHRlc3RpbmcgKHNob3VsZCBiZSB0ZXN0ZWQgd2l0aCBhdCBsZWFzdCAzIGF0dGVuZGVlcykNCisJCQkJCQkJPG9sPg0KKwkJCQkJCQkJPGxpPlVzZXIgbGlzdCBzaG91bGQgbG9vayBhcyBleHBlY3RlZCA8L2xpPg0KKwkJCQkJCQkJPGxpPkNoYW5nZSBhIHVzZXIgZm9yIHZpZGVvIHBvZCA8L2xpPg0KKwkJCQkJCQkJPGxpPlN0YXJ0L3N0b3AgcmVjb3JkaW5ncyA8L2xpPg0KKwkJCQkJCQk8L29sPg0KKwkJCQkJCTwvbGk+CQkJCQkJDQorCQkJCQk8L29sPgkJCQ0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+DQorCQkJCQk8Yj5BZG1pbiBHVUkgdGVzdHM8L2I+DQorCQkJCQk8b2w+DQorCQkJCQkJPGxpPg0KKwkJCQkJCQlVc2Vycw0KKwkJCQkJCQk8b2w+DQorCQkJCQkJCQk8bGk+QWRkL2VkaXQvcmVtb3ZlL3NlYXJjaCB1c2VyIGluIHRoZSB0YWJsZSA8L2xpPg0KKwkJCQkJCQkJPGxpPk1vdmUgYmV0d2VlbiBzY3JlZW5zIHdoZXJlIHRoZXJlIGFyZSBtYW55IHVzZXJzIGluIHRoZSB0YWJsZSA8L2xpPg0KKwkJCQkJCQkJPGxpPkVkaXQgdGV4dCBmaWVsZHMgPC9saT4NCisJCQkJCQkJCTxsaT5DaGFuZ2UgYSB0aW1lIHpvbmUsIHJlLWxvZ2luIGFuZCBjaGVjayB0aGUgY2FsZW5kYXIgPC9saT4NCisJCQkJCQkJCTxsaT5DaGFuZ2UgYSBsYW5ndWFnZSwgcmUtbG9naW4gYW5kIGNoZWNrIHRoZSBHVUkgbGFuZ3VhZ2UgPC9saT4NCisJCQkJCQkJCTxsaT7QlS1tYWlsOiBlLW1haWxzIHNob3VsZCBwYXNzIDwvbGk+DQorCQkJCQkJCQk8bGk+UGhvbmUgYW5kIFNNUyBzd2l0Y2g6IGlmIHNldCBhbmQgdHVybmVkIG9uLCBzbXMgbWVzc2FnZXMgc2hvdWxkIHBhc3MgPC9saT4NCisJCQkJCQkJCTxsaT5DaGFuZ2UgYSBzdGF0dXMg4oCTIG5vbi1hY3RpdmUgdXNlciBjYW5ub3QgbG9naW4gPC9saT4NCisJCQkJCQkJCTxsaT5DaGFuZ2UgdXNlciByb2xlIGFuZCByZS1sb2dpbiA8L2xpPg0KKwkJCQkJCQkJPGxpPkNoYW5nZSB1c2VyIGdyb3VwICAtIHVzZXIgaGFzIGFuIGFjY2VzcyBvbmx5IHRvIHRoZSByb29tcyBiZWxvbmcgdG8gaGlzIG9yZ2FuaXphdGlvbiA8L2xpPg0KKwkJCQkJCQkJPGxpPkNoYW5nZSBjb21tdW5pdHkgc2V0dGluZ3MgYW5kIGNoZWNrIDwvbGk+DQorCQkJCQkJCTwvb2w+DQorCQkJCQkJPC9saT4NCisJCQkJCQk8bGk+DQorCQkJCQkJCUNvbm5lY3Rpb25zDQorCQkJCQkJCTxvbD4NCisJCQkJCQkJCTxsaT5TaG91bGQgYmUgdGVzdGVkIHdpdGggYXQgbGVhc3QgMyB1c2VycyBpbiB0aGUgc3lzdGVtIDwvbGk+DQorCQkJCQkJCQk8bGk+U2Vzc2lvbnZhcnMgdGFibGUgc2hvdWxkIGJlIHNob3duIGNvcnJlY3RseSA8L2xpPg0KKwkJCQkJCQkJPGxpPktpY2sgdGhlIHVzZXIgZnJvbSB0aGUgc3lzdGVtIDwvbGk+DQorCQkJCQkJCTwvb2w+DQorCQkJCQkJPC9saT4NCisJCQkJCQk8bGk+DQorCQkJCQkJCU9yZ2FuaXphdGlvbnMgDQorCQkJCQkJCTxvbD4NCisJCQkJCQkJCTxsaT5BZGQvcmVtb3ZlL2VkaXQvc2VhcmNoIGFuIG9yZ2FuaXphdGlvbiA8L2xpPg0KKwkJCQkJCQkJPGxpPkFkZC9yZW1vdmUgYSB1c2VyIGZyb20gdGhlIHVzZXIgbGlzdCBvZiBzZWxlY3RlZCBvcmdhbml6YXRpb24gPC9saT4NCisJCQkJCQkJPC9vbD4NCisJCQkJCQk8L2xpPg0KKwkJCQkJCTxsaT4NCisJCQkJCQkJQ29uZmVyZW5jZSByb29tcw0KKwkJCQkJCQk8b2w+DQorCQkJCQkJCQk8bGk+QWRkL3JlbW92ZS9lZGl0L3NlYXJjaCBhIHJvb20gPC9saT4NCisJCQkJCQkJCTxsaT5Vc2VyIGxpc3QgZm9yIHRoZSBnaXZlbiByb29tIHNob3VsZCBjb250YWluIGFjdHVhbCBsaXN0IDwvbGk+DQorCQkJCQkJCQk8bGk+VHVybiB0aGUgTW9kZXJhdGlvbiBzd2l0Y2ggb24vb2ZmIGFuZCBlbnRlciB0aGUgcm9vbSA8L2xpPg0KKwkJCQkJCQkJPGxpPkFkZC9yZW1vdmUgYSB1c2VyIHRvIHRoZSBkZWZhdWx0IG1vZGVyYXRvciBsaXN0IDwvbGk+DQorCQkJCQkJCQk8bGk+Q2hlY2sgbWF4IHBhcnRpY2lwYW50cyBudW1iZXIgaW4gdGhlIHJvb20gPC9saT4NCisJCQkJCQkJCTxsaT5DaGFuZ2Ugcm9vbSB0eXBlIGFuZCBlbnRlciB0aGUgcm9vbSA8L2xpPg0KKwkJCQkJCQkJPGxpPlR1cm4gcHVibGljIHN3aXRjaCBvbi9vZmYgPC9saT4NCisJCQkJCQkJCTxsaT5UdXJuICJEZW1vIHN3aXRjaCIgb24vb2ZmLCBjaGFuZ2UgdGhlIGRlbW9uc3RyYXRpb24gdGltZSA8L2xpPg0KKwkJCQkJCQkJPGxpPlR1cm4gIkFsbG93IHVzZXIgcXVlc3Rpb25zIiBvbi9vZmYgYW5kIGVudGVyIHRoZSByb29tIDwvbGk+DQorCQkJCQkJCQk8bGk+VHVybiAiQXVkaW8gb25seSIgc3dpdGNoIG9uL29mZiBhbmQgZW50ZXIgdGhlIHJvb20gPC9saT4NCisJCQkJCQkJCTxsaT5TZXQgIkNsb3NlIFVSTCIgdG8gc29tZSBVUkwsIGVudGVyIHRoZSByb29tIGFuZCB0aGVuIGV4aXQg4oCTIHlvdSBzaG91bGQgYmUgcmUtZGlyZWN0ZWQgY29ycmVzcG9uZGluZ2x5IDwvbGk+DQorCQkJCQkJCQk8bGk+Q2hlY2sgdGhhdCBTSVAgc2V0dGluZ3Mgd29yayBhcyBleHBlY3RlZCA8L2xpPg0KKwkJCQkJCQkJPGxpPkNoZWNrIHRoYXQgIkFsbG93IHJlY29yZGluZ3MiIHN3aXRjaCAgd29ya3MgYXMgZXhwZWN0ZWQgPC9saT4NCisJCQkJCQkJCTxsaT5DaGVjayB0aGF0ICJMYXlvdXQgb3B0aW9ucyIgc3dpdGNoIHdvcmsgYXMgZXhwZWN0ZWQgPC9saT4NCisJCQkJCQkJCTxsaT5DaGVjayB0aGF0ICJBbGxvdyBmb250IHN0eWxlcyIgc3dpdGNoIHdvcmtzIGFzIGV4cGVjdGVkIDwvbGk+DQorCQkJCQkJCTwvb2w+DQorCQkJCQkJPC9saT4NCisJCQkJCQk8bGk+CQkJCQkNCisJCQkJCQkJQ29uZmlndXJhdGlvbg0KKwkJCQkJCQk8b2w+DQorCQkJCQkJCQk8bGk+QWxsb3dfZnJvbnRlbmRfcmVnaXN0ZXIgPC9saT4NCisJCQkJCQkJCTxsaT5NYWlsIHNlcnZlciBzZXR0aW5ncyA8L2xpPg0KKwkJCQkJCQkJPGxpPlNNUyBwcm92aWRlciBzZXR0aW5ncyA8L2xpPg0KKwkJCQkJCQkJPGxpPkFwcGxpY2F0aW9uLm5hbWUgPC9saT4NCisJCQkJCQkJCTxsaT5EZWZhdWx0X2xhbmdfaWQgPC9saT4NCisJCQkJCQkJCTxsaT5kZWZhdWx0IHRpbWUgem9uZSA8L2xpPg0KKwkJCQkJCQkJPGxpPlNJUCBzZXR0aW5ncyA8L2xpPg0KKwkJCQkJCQkJPGxpPlJlbWluZGVyIG1pbnV0ZXMgPC9saT4NCisJCQkJCQkJPC9vbD4NCisJCQkJCQk8L2xpPg0KKwkJCQkJCTxsaT4JCQkJCQ0KKwkJCQkJCQlMYW5ndWFnZSBlZGl0b3IgDQorCQkJCQkJCTxvbD4NCisJCQkJCQkJCTxsaT5BZGQvcmVtb3ZlL2VkaXQvc2VhcmNoIGEga2V5IDwvbGk+DQorCQkJCQkJCQk8bGk+SW1wb3J0L2V4cG9ydCBvZiBsb2NhbGl6YXRpb24gZmlsZXMgPC9saT4NCisJCQkJCQkJPC9vbD4NCisJCQkJCQk8L2xpPg0KKwkJCQkJCTxsaT4JCQkJCQ0KKwkJCQkJCQlMREFQOiBBZGQvcmVtb3ZlL2VkaXQvc2VhcmNoIGEgcmVjb3JkDQorCQkJCQkJPC9saT4NCisJCQkJCQk8bGk+DQorCQkJCQkJCUJhY2t1cA0KKwkJCQkJCQk8b2w+DQorCQkJCQkJCQk8bGk+U3lzdGVtIGltcG9ydCA8L2xpPg0KKwkJCQkJCQkJPGxpPlN5c3RlbSBiYWNrdXAgPC9saT4NCisJCQkJCQkJCTxsaT5UQkQg4oCTIG5lZWQgdG8gYWRkIHRlc3RzIGZvciBjb21tYW5kIGxpbmUgYWRtaW4gaGVyZSA8L2xpPg0KKwkJCQkJCQk8L29sPiANCisJCQkJCQk8L2xpPg0KKwkJCQkJCTxsaT4NCisJCQkJCQkJU2VydmVyczogQWRkL3JlbW92ZS9lZGl0L3NlYXJjaCBhIHNlcnZlcg0KKwkJCQkJCTwvbGk+CQkJCQkJDQorCQkJCQk8L29sPg0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+DQorCQkJCQk8Yj5TSVAgaW50ZWdyYXRpb24gdGVzdHM8L2I+IChzaG91bGQgYmUgdGVzdGVkIHdpdGggYXQgbGVhc3QgMyBhdHRlbmRlZXMgaW4gdGhlIHJvb207IGZvciByZXN0cmljdGVkIGFuZCBpbnRlcnZpZXcgcm9vbXMpDQorCQkJCQk8b2w+DQorCQkJCQkJPGxpPkNhbGwgZnJvbSB0aGUgcm9vbSB0byB0aGUgZXh0ZXJuYWwgcGhvbmUgbnVtYmVyIDwvbGk+DQorCQkJCQkJPGxpPkNhbGwgZnJvbSBleHRlcm5hbCBwaG9uZSBudW1iZXIgdG8gdGhlIHJvb20gPC9saT4NCisJCQkJCQk8bGk+Q2FsbCBmcm9tIHRoZSBzb2Z0d2FyZSBwaG9uZSB0byB0aGUgcm9vbSA8L2xpPg0KKwkJCQkJCTxsaT5DYWxsIGZyb20gdGhlIHNvZnR3YXJlIHBob25lIHdpdGggdmlkZW8gdG8gdGhlIHJvb20gPC9saT4NCisJCQkJCTwvb2w+DQorCQkJCTwvbGk+DQorCQkJCTxsaT4NCisJCQkJCTxiPk5ldHdvcmsgdGVzdGluZyBzY3JpcHQ8L2I+DQorCQkJCTwvbGk+DQorCQkJCTxsaT4NCisJCQkJCTxiPlNpdGUgaW50ZWdyYXRpb24gdGVzdHM8L2I+DQorCQkJCQk8b2w+DQorCQkJCQkJPGxpPkVudGVyIE9wZW5NZWV0aW5ncyByb29tIGZyb20gTW9vZGRsZSBzaXRlIDwvbGk+DQorCQkJCQkJPGxpPkNoZWNrIHRoYXQgcmVjb3JkaW5ncyBsaW5rIGFyZSBzaG93biBvbiB0aGUgTW9vZGxlIHNpdGUgPC9saT4NCisJCQkJCQk8bGk+RW50ZXIgT3Blbk1lZXRpbmdzIHJvb20gZnJvbSBKb29tbGEgc2l0ZSA8L2xpPg0KKwkJCQkJCTxsaT5DaGVjayB0aGF0IHJlY29yZGluZ3MgbGluayBhcmUgc2hvd24gb24gdGhlIEpvb21sYSBzaXRlIDwvbGk+DQorCQkJCQkJPGxpPkVudGVyIE9wZW5NZWV0aW5ncyByb29tIGZyb20gRHJ1cGFsIHNpdGUgPC9saT4NCisJCQkJCQk8bGk+Q2hlY2sgdGhhdCByZWNvcmRpbmdzIGxpbmsgYXJlIHNob3duIG9uIHRoZSBEcnVwYWwgc2l0ZSA8L2xpPg0KKwkJCQkJPC9vbD4NCisJCQkJPC9saT4NCisJCQk8L29sPg0KKwkJPC9zZWN0aW9uPg0KKw0KKwk8L2JvZHk+DQorDQorPC9kb2N1bWVudD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS94ZG9jcy9Nb29kbGVQbHVnaW4ueG1sIGIveGRvY3MvTW9vZGxlUGx1Z2luLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MjUwZmI1Ci0tLSAvZGV2L251bGwKKysrIGIveGRvY3MvTW9vZGxlUGx1Z2luLnhtbApAQCAtMCwwICsxLDg1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0NCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorDQorICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKw0KKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgLS0+DQorPGRvY3VtZW50Pg0KKw0KKwk8cHJvcGVydGllcz4NCisJCTx0aXRsZT5Nb29kbGUgUGx1Z2luPC90aXRsZT4NCisJCTxhdXRob3IgZW1haWw9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+DQorCQkJT3Blbk1lZXRpbmdzIFRlYW0NCisJCTwvYXV0aG9yPg0KKwk8L3Byb3BlcnRpZXM+DQorDQorCTxib2R5Pg0KKw0KKwkJPHNlY3Rpb24gbmFtZT0iTW9vZGxlIFBsdWdpbiBmb3IgT3Blbk1lZXRpbmdzIj4NCisJCQk8cD4NCisJCQkJWW91IGNhbiBnZXQgdGhlIGxhdGVzdCBWZXJzaW9uIG9mIHRoZSBQbHVnaW4gZm9yIE1vb2RsZSBmcm9tIHRoZQ0KKwkJCQk8YSBocmVmPSJkb3dubG9hZHMuaHRtbCI+ZG93bmxvYWRzPC9hPg0KKwkJCQkuDQorCQkJCTxici8+DQorCQkJCVlvdSBjYW4gZmluZCB0aGUgT3Blbk1lZXRpbmdzIFBsdWdpbiBhbHNvIGluIHRoZQ0KKwkJCQk8YSBocmVmPSJodHRwOi8vbW9vZGxlLm9yZy9wbHVnaW5zL3ZpZXcucGhwP3BsdWdpbj1tb2Rfb3Blbm1lZXRpbmdzIg0KKwkJCQkJdGFyZ2V0PSJfQkxBTksiIHJlbD0ibm9mb2xsb3ciPk1vb2RsZSBQbHVnaW4gZGF0YWJhc2U8L2E+DQorCQkJCS4NCisJCQkJPGJyLz4NCisJCQkJQSBkZW1vIHZlcnNpb24gb2YgdGhlIE1vb2RsZSBwbHVnaW4gaXMgYXZhaWxhYmxlIGF0DQorCQkJCTxhIGhyZWY9Imh0dHA6Ly9tb29kbGUub3Blbm1lZXRpbmdzLmRlIiB0YXJnZXQ9Il9CTEFOSyIgcmVsPSJub2ZvbGxvdyI+bW9vZGxlLm9wZW5tZWV0aW5ncy5kZQ0KKwkJCQk8L2E+DQorCQkJCS4NCisJCQk8L3A+DQorCQk8L3NlY3Rpb24+DQorCQkNCisJCTxzZWN0aW9uIG5hbWU9Ikluc3RhbGxhdGlvbiBvZiB0aGUgTW9vZGxlIFBsdWdpbiBmb3IgQXBhY2hlIE9wZW5NZWV0aW5ncyI+DQorCQkJPHA+DQorCQkJCVlvdSBzaW1wbHkgZG93bmxvYWQgdGhlIFpJUCBvciBUQVIgcGFja2FnZSBhbmQgdW56aXAgaXQgdG8gTW9vZGxlJ3MgIm1vZCIgZGlyZWN0b3J5Ljxici8+DQorCQkJCUV2ZW50dWFsbHkgeW91IG5lZWQgdG8gdW56aXAgdGhlIHBhY2thZ2UgaW50byBhIGZvbGRlciBjYWxsZWQgIm9wZW5tZWV0aW5ncyIuDQorCQkJCVRoZSBmb2xkZXIgc3RydWN0dXJlIGlzOjxici8+DQorCQkJCSRNT09ETEVfSE9NRS9tb2Qvb3Blbm1lZXRpbmdzLyoucGhwDQorCQkJCTxiciAvPg0KKwkJCQlUaGVuIHlvdSB2aXNpdCB0aGUgYWRtaW4gaW50ZXJmYWNlIG9mIE1vb2RsZSwgZm9yIGV4YW1wbGUNCisJCQkJPGEgaHJlZj0iaHR0cDovLyR5b3VyX21vb2RsZV9ob3N0LyRNT09ETEVfV1dXX1JPT1QvYWRtaW4iIHRhcmdldD0iX0JMQU5LIg0KKwkJCQkJcmVsPSJub2ZvbGxvdyI+aHR0cDovLyR5b3VyX21vb2RsZV9ob3N0LyRNT09ETEVfV1dXX1JPT1QvYWRtaW48L2E+IA0KKwkJCQkJPGJyLz4NCisJCQkJTW9vZGxlIHdpbGwgZGV0ZWN0IHRoYXQgdGhlcmUgaXMgYSBuZXcgcGx1Z2luIGFuZCB3aWxsIHNob3cgdGhlIHBsdWdpbiBpbnN0YWxsYXRpb24gc2NyZWVuOg0KKwkJCTwvcD4NCisJCQk8YSBjbGFzcz0iZmFuY3lib3gtYnV0dG9ucyIgaHJlZj0iaW1hZ2VzL21vb2RsZV9pbnN0YWxsX3BsdWdpbi5wbmciPg0KKwkJCQk8aW1nIHNyYz0iaW1hZ2VzL21vb2RsZV9pbnN0YWxsX3BsdWdpbi5wbmciIGFsdD0iIiB3aWR0aD0iNDMwIg0KKwkJCQkJaGVpZ2h0PSIyMjAiIC8+DQorCQkJPC9hPg0KKwkJCTxwPg0KKwkJCQlBZnRlciB5b3UgaGF2ZSBjbGlja2VkIG9uICJVcGRhdGUgZGF0YWJhc2UiIE1vb2RsZSB3aWxsIHNob3cgeW91IHRoZSBwbHVnaW4gY29uZmlndXJhdGlvbiBzY3JlZW46DQorCQkJPC9wPg0KKwkJCTxhIGNsYXNzPSJmYW5jeWJveC1idXR0b25zIiBocmVmPSJpbWFnZXMvbW9vZGxlX2NvbmZpZ3VyZV9wbHVnaW4ucG5nIj4NCisJCQkJPGltZyBzcmM9ImltYWdlcy9tb29kbGVfY29uZmlndXJlX3BsdWdpbi5wbmciIGFsdD0iIiB3aWR0aD0iNTAwIg0KKwkJCQkJaGVpZ2h0PSIzMDAiIC8+DQorCQkJPC9hPg0KKwkJPC9zZWN0aW9uPg0KKwkJDQorCQk8c2VjdGlvbiBuYW1lPSJBZGRpbmcgYSBuZXcgY29uZmVyZW5jZSByb29tIHRvIGEgTW9vZGxlIGNvdXJzZSI+DQorCQkJDQorCQkJPHA+DQorCQkJCUFmdGVyIGluc3RhbGxhdGlvbiBvZiB0aGUgcGx1Z2luIHlvdSBjYW4gZ28gdG8gdGhlIGNvdXJzZSBwYWdlcyBpbiBNb29kbGUgYW5kIHR1cm4gZWRpdGluZyBvbi4NCisJCQkJVGhlbiB5b3UgY2hvb3NlIHRoZSBhY3Rpdml0eSAiT3Blbk1lZXRpbmdzIiwgTW9vZGxlIHdpbGwgdGhlbiBzaG93IHlvdSB0aGUgY29uZmVyZW5jZSByb29tIA0KKwkJCQljb25maWd1cmF0aW9uIHdpdGggYWxsIHRoZSBvcHRpb25zOg0KKwkJCTwvcD4NCisJCQk8YSBjbGFzcz0iZmFuY3lib3gtYnV0dG9ucyIgaHJlZj0iaW1hZ2VzL21vb2RsZV9hZGRfYWN0aXZpdHlfcGx1Z2luLnBuZyI+DQorCQkJCTxpbWcgc3JjPSJpbWFnZXMvbW9vZGxlX2FkZF9hY3Rpdml0eV9wbHVnaW4ucG5nIiBhbHQ9IiIgd2lkdGg9IjQzMCINCisJCQkJCWhlaWdodD0iMzYwIiAvPg0KKwkJCTwvYT4NCisJCTwvc2VjdGlvbj4NCisJCQ0KKwk8L2JvZHk+DQorDQorPC9kb2N1bWVudD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS94ZG9jcy9NeVNRTENvbmZpZy54bWwgYi94ZG9jcy9NeVNRTENvbmZpZy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmU2OGNhYgotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL015U1FMQ29uZmlnLnhtbApAQCAtMCwwICsxLDk0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0NCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorDQorICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKw0KKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgLS0+DQorPGRvY3VtZW50Pg0KKw0KKwk8cHJvcGVydGllcz4NCisJCTx0aXRsZT5NeVNRTCBDb25maWd1cmF0aW9uPC90aXRsZT4NCisJCTxhdXRob3IgZW1haWw9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+DQorCQkJQXBhY2hlIE9wZW5NZWV0aW5ncyBEb2N1bWVudGF0aW9uIFRlYW0NCisJCTwvYXV0aG9yPg0KKwk8L3Byb3BlcnRpZXM+DQorDQorCTxib2R5Pg0KKwkJPHNlY3Rpb24gbmFtZT0iTXlTUUwgQ29uZmlndXJhdGlvbiI+DQorDQorCQkJPHN1YnNlY3Rpb24gbmFtZT0iQmVmb3JlIHlvdSBzdGFydCI+DQorCQkJCTx1bD4NCisJCQkJCTxsaT5NYWtlIHN1cmUgdGhhdCB5b3UgaGF2ZSBzZXQgdXRmOCBhcw0KKwkJCQkJCWRlZmF1bHQvc2VydmVyLWNoYXJhY3Rlci1zZXQgaW4geW91ciBNeVNRTCBjb25maWd1cmF0aW9uIChteS5jbmYpDQorCQkJCQkJYmVmb3JlIHlvdSBzdGFydCB0aGUgaW5zdGFsbGF0aW9uIHByb2Nlc3Mgb2YgT3Blbk1lZXRpbmdzIQ0KKwkJCQkJPC9saT4NCisJCQkJCTxsaT4NCisJCQkJCQltYWtlIHN1cmUgTXlTUUwgaXMgbGlzdGVuaW5nIG9uIFRDUC9JUCBjb25uZWN0aW9ucyENCisJCQkJCQk8YnIgLz4NCisJCQkJCQlUbyB2ZXJpZnkgaWYgTXlTUUwgY29ubmVjdGlvbiBpcyB3b3JraW5nOiBPcGVuTWVldGluZ3Mgd2lsbA0KKwkJCQkJCWF1dG9tYXRpY2FsbHkgY3JlYXRlIGFsbCB0YWJsZXMgaW4gdGhlIGRhdGFiYXNlIGFuZCBhbGwgdGFibGVzDQorCQkJCQkJc2hvdWxkIGhhdmUgdXRmOCBhcyBlbmNvZGluZy9jb2xsYXRpb24hDQorCQkJCQk8L2xpPg0KKwkJCQkJPGxpPklmIHlvdSBlbmNvdW50ZXIgaXNzdWVzLCB5b3UgY2FuIGRyb3AgdGhlIGRiIGFnYWluIGFuZCBkZWxldGUNCisJCQkJCQl0aGUgZmlsZSAkcmVkNS93ZWJhcHBzL29wZW5tZWV0aW5ncy9jb25mL2luc3RhbGwueG1sIGFuZCB0aGVuIHJ1bg0KKwkJCQkJCXRoZSB3ZWIgYmFzZWQgaW5zdGFsbGVyIGFnYWluDQorCQkJCQk8L2xpPg0KKwkJCQk8L3VsPg0KKwkJCTwvc3Vic2VjdGlvbj4NCisNCisJCQk8c3Vic2VjdGlvbiBuYW1lPSJTdGVwcyB0b2RvIj4NCisJCQkJPHVsPg0KKwkJCQkJPGxpPg0KKwkJCQkJCVlvdSBuZWVkIHRvIGRvd25sb2FkIHRoZSBKQ29ubmVjdG9yIGZyb20gbXlzcWwNCisJCQkJCQk8YSBocmVmPSJodHRwOi8vd3d3Lm15c3FsLmNvbS9kb3dubG9hZHMvY29ubmVjdG9yL2ovIiB0YXJnZXQ9Il9CTEFOSyINCisJCQkJCQkJcmVsPSJub2ZvbGxvdyI+aHR0cDovL3d3dy5teXNxbC5jb20vZG93bmxvYWRzL2Nvbm5lY3Rvci9qLzwvYT4NCisJCQkJCQlhbmQgcGxhY2UgaXQgaW50bzoNCisJCQkJCQk8dHQ+JHJlZDUvd2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9saWIvPC90dD4NCisJCQkJCTwvbGk+DQorCQkJCQk8bGk+DQorCQkJCQkJUmVuYW1lOg0KKwkJCQkJCTxiciAvPg0KKwkJCQkJCSRyZWQ1L3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvY2xhc3Nlcy9NRVRBLUlORi9teXNxbF9wZXJzaXN0ZW5jZS54bWwNCisJCQkJCQk8YnIgLz4NCisJCQkJCQl0bw0KKwkJCQkJCTxiciAvPg0KKwkJCQkJCSRyZWQ1L3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvY2xhc3Nlcy9NRVRBLUlORi9wZXJzaXN0ZW5jZS54bWwNCisJCQkJCTwvbGk+DQorCQkJCQk8bGk+DQorCQkJCQkJUHJlcGFyZSBEYXRhYmFzZSBTZXR0aW5ncyAtIGdvIHRvDQorCQkJCQkJb3Blbm1lZXRpbmdzX3ZlcnNpb25fbm9feHgvd2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9jbGFzc2VzL01FVEEtSU5GL3BlcnNpc3RlbmNlLnhtbA0KKwkJCQkJCTxiciAvPg0KKwkJCQkJCUFsdGVyIGNvbmZpZyB2YWx1ZXMgaW4gcGVyc2lzdGVuY2UueG1sIERCX0hPU1QgVVNFUl9OQU1FIFVTRVJfUEFTUw0KKwkJCQkJCXdpdGggeW91ciB2YWx1ZXMNCisJCQkJCTwvbGk+DQorCQkJCQk8bGk+DQorCQkJCQkJUnVuIHJlZDUtc2VydmljZSBhbmQgZ290byB0aGUgd2ViLWJhc2VkIGluc3RhbGxlcjoNCisJCQkJCQlodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL2luc3RhbGwNCisJCQkJCTwvbGk+DQorCQkJCTwvdWw+DQorCQkJPC9zdWJzZWN0aW9uPg0KKw0KKwkJCTxzdWJzZWN0aW9uIG5hbWU9Ik15U1FMIFNhbXBsZSBDb25maWd1cmF0aW9uIj4NCisJCQkJPHA+DQorCQkJCQlUaGVyZSBpcyBhIHNhbXBsZSBjb25maWd1cmF0aW9uIGZvciBNeVNRTCB0aGF0IHNoaXBzIHdpdGgNCisJCQkJCWV2ZXJ5DQorCQkJCQlyZWxlYXNlIGluOg0KKwkJCQkJPGJyIC8+DQorCQkJCQkvd2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9jbGFzc2VzL01FVEEtSU5GL215c3FsX3BlcnNpc3RlbmNlLnhtbA0KKwkJCQk8L3A+DQorCQkJPC9zdWJzZWN0aW9uPg0KKw0KKw0KKwkJPC9zZWN0aW9uPg0KKw0KKwk8L2JvZHk+DQorDQorPC9kb2N1bWVudD4NCmRpZmYgLS1naXQgYS94ZG9jcy9OYXZpZ2F0aW9uLnhtbCBiL3hkb2NzL05hdmlnYXRpb24ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyZjdhZWQKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9OYXZpZ2F0aW9uLnhtbApAQCAtMCwwICsxLDQ2IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0NCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorDQorICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKw0KKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgLS0+DQorPGRvY3VtZW50Pg0KKw0KKwk8cHJvcGVydGllcz4NCisJCTx0aXRsZT5DaGFuZ2UgbWFpbiBuYXZpZ2F0aW9uPC90aXRsZT4NCisJCTxhdXRob3IgZW1haWw9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+DQorCQkJT3Blbk1lZXRpbmdzIFRlYW0NCisJCTwvYXV0aG9yPg0KKwk8L3Byb3BlcnRpZXM+DQorDQorCTxib2R5Pg0KKw0KKwkJPHNlY3Rpb24gbmFtZT0iQ2hhbmdpbmcgdGhlIG1haW4gbmF2aWdhdGlvbiI+DQorDQorCQkJPHA+VG8gY3VzdG9taXplIHRoZSBtYWluIG1lbnUgKGZvciBleGFtcGxlIHJlbW92ZSBlbnRyaWVzIG9yIGNoYW5naW5nDQorCQkJCXRoZSBvcmRlcikgeW91IGNhbiBlZGl0IHRoZSB0YWJsZXM6ICA8L3A+DQorCQkJPHVsPg0KKwkJCQk8bGk+bmF2aW1haW4gPC9saT4NCisJCQkJPGxpPm5hdmlnbG9iYWwgPC9saT4NCisJCQkJPGxpPm5hdmlzdWIgKGN1cnJlbnRseSBub3QgaW4gdXNlKSA8L2xpPg0KKwkJCTwvdWw+DQorCQkJPHA+PC9wPg0KKwkJCTxwPg0KKwkJCQlZb3UgbmVlZCB0byBtYWtlIHN1cmUgdGhhdCB5b3UNCisJCQkJPHN0cm9uZz5yZXN0YXJ0IHJlZDUgYWZ0ZXIgZG9pbmcgY2hhbmdlcyB0byB0aGUgZGF0YWJhc2U8L3N0cm9uZz4NCisJCQkJLCB0aGVyZSBpcyBhIGRhdGFiYXNlIGNhY2hlLCBzbyBjaGFuZ2VzIG1pZ2h0IG5vdCB0YWtlIGFmZmVjdCBhcw0KKwkJCQlsb25nIGFzIHlvdSBkaWQgbm90IHJlc3RhcnQuDQorCQkJPC9wPg0KKwkJPC9zZWN0aW9uPg0KKw0KKwk8L2JvZHk+DQorDQorPC9kb2N1bWVudD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS94ZG9jcy9PcGVuT2ZmaWNlQ29udmVydGVyLnhtbCBiL3hkb2NzL09wZW5PZmZpY2VDb252ZXJ0ZXIueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlNWRhN2YKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9PcGVuT2ZmaWNlQ29udmVydGVyLnhtbApAQCAtMCwwICsxLDYwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0NCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorDQorICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKw0KKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgLS0+DQorPGRvY3VtZW50Pg0KKw0KKwk8cHJvcGVydGllcz4NCisJCTx0aXRsZT5PcGVuT2ZmaWNlIGNvbnZlcnRlciBmb3IgT3Blbk1lZXRpbmdzPC90aXRsZT4NCisJCTxhdXRob3IgZW1haWw9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+DQorCQkJT3Blbk1lZXRpbmdzIFRlYW0NCisJCTwvYXV0aG9yPg0KKwk8L3Byb3BlcnRpZXM+DQorDQorCTxib2R5Pg0KKw0KKwkJPHNlY3Rpb24gbmFtZT0iT3Blbk9mZmljZSBTZXJ2aWNlIGZvciBPcGVuTWVldGluZ3MiPg0KKw0KKwkJCTxwPg0KKwkJCQlUbyBpbXBvcnQgLmRvYywgLmRvY3gsIC5vZHAsIC54bHMsIC54bHN4LCAucHB0LCAucHB0eCwgLi4uIFsgYWxsDQorCQkJCWZpbGVzIHRoYXQgeW91IGNhbiBvcGVuIHdpdGggT3Blbk9mZmljZSBdDQorCQkJCXRvIE9wZW5NZWV0aW5ncyBhbmQgdXNlDQorCQkJCXRoZW0gaW4gdGhlIHdoaXRlYm9hcmQgeW91IG5lZWQgT3Blbk9mZmljZSBvciBMaWJyZU9mZmljZQ0KKwkJCQlpbnN0YWxsZWQNCisJCQkJdGhlIG1hY2hpbmUgdGhhdCBydW5zIE9wZW5NZWV0aW5ncy4NCisJCQk8L3A+DQorCQkJPHA+DQorCQkJCTxpPlNpbmNlIFZlcnNpb24gMi4wIG9mIE9wZW5NZWV0aW5ncyBzdGFydGluZyBvZg0KKwkJCQkJT3Blbk9mZmljZS9MaWJyZU9mZmljZSBhcyBzZXJ2aWNlIGluIG5vdCByZXF1aXJlZCwgSk9EQ29udmVydGVyDQorCQkJCQl3aWxsIGF1dG9tYXRpY2FsbHkgc3RhcnQgYW5kIHNodXQgZG93biB0aGUgc2VydmljZSENCisJCQkJPC9pPg0KKwkJCTwvcD4NCisJCQk8cD4NCisJCQkJSW5zdGFsbGF0aW9uIG9mIEpPRENvbnZlcnRlciBtZWFuczogWW91IGRvbndsb2FkIHRoZSBaSVAgYmluYXJ5IGZyb20NCisJCQkJdGhlaXINCisJCQkJPGEgaHJlZj0iaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2pvZGNvbnZlcnRlci8iIHRhcmdldD0iX0JMQU5LIg0KKwkJCQkJcmVsPSJub2ZvbGxvdyI+d2Vic2l0ZTwvYT4NCisJCQkJYW5kIHRoZW4gY29uZmlndXJlIGluIEFwYWNoZSBPcGVuTWVldGluZ3MgQWRtaW5pc3RyYXRpb24gPg0KKwkJCQlDb25maWd1cmF0aW9uIChvciBkdXJpbmcgaW5zdGFsbGF0aW9uKSB0aGUgY29uZmlnIGtleQ0KKwkJCQk8dHQ+am9kLnBhdGg8L3R0Pg0KKwkJCQl0byBwb2ludCB0byB0aGUgImxpYiIgZGlyZWN0b3J5IG9mIHRoZSB1bnBhY2tlZCBKT0RDb252ZXJ0ZXIgYmluYXJ5Lg0KKwkJCQlUaGVyZSBpcyBubyByZXN0YXJ0IG9mIE9wZW5NZWV0aW5ncyByZXF1aXJlZC4NCisJCQk8L3A+DQorCQkJPHA+WW91IHNob3VsZCB1c2UgYW4gT3Blbk9mZmljZSB2ZXJzaW9uIGdyZWF0ZXIgMzwvcD4NCisNCisJCTwvc2VjdGlvbj4NCisNCisNCisJPC9ib2R5Pg0KKw0KKzwvZG9jdW1lbnQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEveGRvY3MvT3JhY2xlQ29uZmlnLnhtbCBiL3hkb2NzL09yYWNsZUNvbmZpZy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODJkOTYxNAotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL09yYWNsZUNvbmZpZy54bWwKQEAgLTAsMCArMSw3OSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8IS0tDQorICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKw0KKyAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisNCisgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorIC0tPg0KKzxkb2N1bWVudD4NCisNCisJPHByb3BlcnRpZXM+DQorCQk8dGl0bGU+SUJNIERCMiBDb25maWd1cmF0aW9uPC90aXRsZT4NCisJCTxhdXRob3IgZW1haWw9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+DQorCQkJQXBhY2hlIE9wZW5NZWV0aW5ncyBEb2N1bWVudGF0aW9uIFRlYW0NCisJCTwvYXV0aG9yPg0KKwk8L3Byb3BlcnRpZXM+DQorDQorCTxib2R5Pg0KKwkJPHNlY3Rpb24gbmFtZT0iSUJNIERCMiBDb25maWd1cmF0aW9uIj4NCisNCisJCQk8c3Vic2VjdGlvbiBuYW1lPSJCZWZvcmUgeW91IHN0YXJ0Ij4NCisJCQkJPHVsPg0KKwkJCQkJPGxpPkRvd25sb2FkIHRoZSBsYXRlc3QgSkRCQyBEcml2ZXIgZnJvbSBPcmFjbGUgZm9yIHlvdXIgZGF0YWJhc2UNCisJCQkJCQl2ZXJzaW9uLiBQbGFjZSB0aG9zZSBKQVJzIGludG8NCisJCQkJCQkkUmVkNS93ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL2xpYg0KKwkJCQkJPC9saT4NCisJCQkJCTxsaT5JZiB5b3UgZW5jb3VudGVyIGlzc3VlcywgeW91IGNhbiBkcm9wIHRoZSBkYiBhZ2FpbiBhbmQgZGVsZXRlDQorCQkJCQkJdGhlIGZpbGUgJHJlZDUvd2ViYXBwcy9vcGVubWVldGluZ3MvY29uZi9pbnN0YWxsLnhtbCBhbmQgdGhlbiBydW4NCisJCQkJCQl0aGUgd2ViIGJhc2VkIGluc3RhbGxlciBhZ2Fpbg0KKwkJCQkJPC9saT4NCisJCQkJPC91bD4NCisJCQk8L3N1YnNlY3Rpb24+DQorDQorCQkJPHN1YnNlY3Rpb24gbmFtZT0iU3RlcHMgdG9kbyI+DQorCQkJCTx1bD4NCisJCQkJCTxsaT4NCisJCQkJCQlSZW5hbWU6DQorCQkJCQkJPGJyIC8+DQorCQkJCQkJJHJlZDUvd2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9jbGFzc2VzL01FVEEtSU5GL29yYWNsZV9wZXJzaXN0ZW5jZS54bWwNCisJCQkJCQk8YnIgLz4NCisJCQkJCQl0bw0KKwkJCQkJCTxiciAvPg0KKwkJCQkJCSRyZWQ1L3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvY2xhc3Nlcy9NRVRBLUlORi9wZXJzaXN0ZW5jZS54bWwNCisJCQkJCTwvbGk+DQorCQkJCQk8bGk+DQorCQkJCQkJUHJlcGFyZSBEYXRhYmFzZSBTZXR0aW5ncyAtIGdvIHRvDQorCQkJCQkJb3Blbm1lZXRpbmdzX3ZlcnNpb25fbm9feHgvd2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9jbGFzc2VzL01FVEEtSU5GL3BlcnNpc3RlbmNlLnhtbA0KKwkJCQkJCTxiciAvPg0KKwkJCQkJCUFsdGVyIGNvbmZpZyB2YWx1ZXMgaW4gcGVyc2lzdGVuY2UueG1sIGNvbm5lY3Rpb25VUkwsIHVzZXJuYW1lIGFuZA0KKwkJCQkJCXBhc3N3b3JkIHdpdGggeW91ciB2YWx1ZXMNCisJCQkJCTwvbGk+DQorCQkJCQk8bGk+DQorCQkJCQkJUnVuIHJlZDUtc2VydmljZSBhbmQgZ290byB0aGUgd2ViLWJhc2VkIGluc3RhbGxlcjoNCisJCQkJCQlodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL2luc3RhbGwNCisJCQkJCTwvbGk+DQorCQkJCTwvdWw+DQorCQkJPC9zdWJzZWN0aW9uPg0KKw0KKwkJCTxzdWJzZWN0aW9uIG5hbWU9Ik9yYWNsZSBTYW1wbGUgQ29uZmlndXJhdGlvbiI+DQorCQkJCTxwPg0KKwkJCQkJVGhlcmUgaXMgYSBzYW1wbGUgY29uZmlndXJhdGlvbiBmb3IgT3JhY2xlIHRoYXQgc2hpcHMgd2l0aA0KKwkJCQkJZXZlcnkgcmVsZWFzZSBpbjoNCisJCQkJCTxiciAvPg0KKwkJCQkJL3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvY2xhc3Nlcy9NRVRBLUlORi9vcmFjbGVfcGVyc2lzdGVuY2UueG1sDQorCQkJCTwvcD4NCisJCQk8L3N1YnNlY3Rpb24+DQorDQorDQorCQk8L3NlY3Rpb24+DQorDQorCTwvYm9keT4NCisNCis8L2RvY3VtZW50Pg0KZGlmZiAtLWdpdCBhL3hkb2NzL1BvcnRTZXR0aW5ncy54bWwgYi94ZG9jcy9Qb3J0U2V0dGluZ3MueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2ZWMxMzUKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9Qb3J0U2V0dGluZ3MueG1sCkBAIC0wLDAgKzEsMTE1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0NCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorDQorICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKw0KKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgLS0+DQorPGRvY3VtZW50Pg0KKw0KKwk8cHJvcGVydGllcz4NCisJCTx0aXRsZT5Qb3J0IHNldHRpbmdzPC90aXRsZT4NCisJCTxhdXRob3IgZW1haWw9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+DQorCQkJT3Blbk1lZXRpbmdzIFRlYW0NCisJCTwvYXV0aG9yPg0KKwk8L3Byb3BlcnRpZXM+DQorDQorCTxib2R5Pg0KKw0KKwkJPHNlY3Rpb24gbmFtZT0iRGVmYXVsdCBDb25maWd1cmF0aW9uIj4NCisNCisJCQk8dWw+DQorCQkJCTxsaT5Qb3J0IDUwODA6IEhUVFAgKEZvciBleGFtcGxlIGZvciBmaWxlIHVwbG9hZCBhbmQgZG93bmxvYWQpIDwvbGk+DQorCQkJCTxsaT5Qb3J0IDE5MzU6IFJUTVAgKEZsYXNoIFN0cmVhbSBhbmQgUmVtb3RpbmcvUlBDKSA8L2xpPg0KKwkJCQk8bGk+UG9ydCA4MDg4OiBSVE1QIG92ZXIgSFRUUC1UdW5uZWxpbmcgKHJ0bXBUKSA8L2xpPg0KKwkJCTwvdWw+DQorCQkJPHA+QWRkaXRpb25hbGx5IHJlZDUgdXNlcyBzb21lIHBvcnRzIGludGVybmFsbHkuIEhvd2V2ZXIgdGhvc2UgcG9ydHMNCisJCQkJYXJlIG5vdCBpbiB1c2UgYnkgT3Blbk1lZXRpbmdzIGJ5IGRlZmF1bHQuDQorCQkJPC9wPg0KKw0KKwkJPC9zZWN0aW9uPg0KKw0KKwkJPHNlY3Rpb24gbmFtZT0iQ29uZmlndXJlIGFsdGVybmF0aXZlIHBvcnRzIj4NCisNCisJCQk8cD5Zb3UgbmVlZCB0byBjaGFuZ2UgdHdvIGZpbGVzOiA8L3A+DQorCQkJPHVsPg0KKwkJCQk8bGk+U2VydmVyLVNpZGUgY29uZmlndXJhdGlvbjogJFJFRDVfSE9NRS9jb25mL3JlZDUucHJvcGVydGllcywgeW91DQorCQkJCQluZWVkIHRvIHJlc3RhcnQgdGhlIHJlZDUtc2VydmljZSBzbyB0aGF0IGNoYW5nZXMgYXJlIG9ubGluZS4NCisJCQkJPC9saT4NCisJCQkJPGxpPkNsaWVudC1TaWRlIGNvbmZpZ3VyYXRpb246DQorCQkJCQkkUkVENV9IT01FL3dlYmFwcHMvb3Blbm1lZXRpbmdzL2NvbmZpZy54bWwsIHlvdSBuZWVkIHRvIGNsZWFyIHlvdXINCisJCQkJCWJyb3dzZXIgY2FjaGUgYWZ0ZXIgY2hhbmdpbmcgdGhlIGZpbGUuDQorCQkJCTwvbGk+DQorCQkJCTxsaT4NCisJCQkJCTxibG9ja3F1b3RlPkV2ZXJ5IHNlcnZlciBzaWRlIGNvbmZpZ3VyYXRpb24gaGFzIGEgY2xpZW50IHNpZGUNCisJCQkJCQlyZXByZXNlbnRhdGl2ZQ0KKwkJCQkJPC9ibG9ja3F1b3RlPg0KKwkJCQk8L2xpPg0KKwkJCTwvdWw+DQorCQkJPHA+PC9wPg0KKwkJCTx0YWJsZT4NCisJCQkJPHRyPg0KKwkJCQkJPHRoIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6IDVweDsiPiBDb25maWctTmFtZSA8L3RoPg0KKwkJCQkJPHRoIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6IDVweDsiPiBEZWZhdWx0LXZhbHVlIDwvdGg+DQorCQkJCQk8dGggc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IE5hbWUgaW4gcmVkNS5wcm9wZXJ0aWVzIDwvdGg+DQorCQkJCQk8dGggc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IE5hbWUgaW4gY29uZmlnLnhtbCA8L3RoPg0KKwkJCQk8L3RyPg0KKwkJCQk8dHI+DQorCQkJCQk8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IEhUVFAgPC90ZD4NCisJCQkJCTx0ZCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpOyBwYWRkaW5nOiA1cHg7Ij4gNTA4MCA8L3RkPg0KKwkJCQkJPHRkIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6IDVweDsiPiBodHRwLnBvcnQgPC90ZD4NCisJCQkJCTx0ZCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpOyBwYWRkaW5nOiA1cHg7Ij4gcmVkNWh0dHBwb3J0IDwvdGQ+DQorCQkJCTwvdHI+DQorCQkJCTx0cj4NCisJCQkJCTx0ZCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpOyBwYWRkaW5nOiA1cHg7Ij4gUlRNUCA8L3RkPg0KKwkJCQkJPHRkIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6IDVweDsiPiAxOTM1IDwvdGQ+DQorCQkJCQk8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IHJ0bXAucG9ydCA8L3RkPg0KKwkJCQkJPHRkIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6IDVweDsiPiBydG1wcG9ydCA8L3RkPg0KKwkJCQk8L3RyPg0KKwkJCQk8dHI+DQorCQkJCQk8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IFJUTVBUIDwvdGQ+DQorCQkJCQk8dGQgc3R5bGU9ImJvcmRlcjogMXB4IHNvbGlkIHJnYigyMDQsIDIwNCwgMjA0KTsgcGFkZGluZzogNXB4OyI+IDgwODggPC90ZD4NCisJCQkJCTx0ZCBzdHlsZT0iYm9yZGVyOiAxcHggc29saWQgcmdiKDIwNCwgMjA0LCAyMDQpOyBwYWRkaW5nOiA1cHg7Ij4gcnRtcHQuaG9zdCA8L3RkPg0KKwkJCQkJPHRkIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCByZ2IoMjA0LCAyMDQsIDIwNCk7IHBhZGRpbmc6IDVweDsiPiBydG1wVHVubmVscG9ydCA8L3RkPg0KKwkJCQk8L3RyPg0KKwkJCTwvdGFibGU+DQorDQorCQk8L3NlY3Rpb24+DQorDQorCQk8c2VjdGlvbiBuYW1lPSJQcmV2ZW50aW5nIEZpcmV3YWxsIGlzc3VlcyI+DQorDQorCQkJPHA+QSBjb21tb24gd2F5IG9mIGJ5cGFzc2luZyB0aGUgZmlyZXdhbGwgaXMgdG8gY2hhbmdlIEhUVFAgcG9ydCB0bw0KKwkJCQk4MCBhbmQgcnRtcFQgdG8gNDQzLg0KKwkJCTwvcD4NCisJCQk8cD5BIHNob3J0IGRlc2NyaXB0aW9uIGFib3V0IHRoZSBjb25uZWN0aW9uIG1lY2hhbmlzbTogVGhlDQorCQkJCWFwcGxpY2F0aW9uIGZpcnN0IHRyaWVzIGNvbm5lY3RpbmcgdG8gcnRtcCAzIHRpbWVzLCBiZWNhdXNlIHJ0bXAgaXMNCisJCQkJdGhlIHByb3RvY29sIHRoYXQgaXMgbGVzcyBwZXJmb3JtYW5jZSBodW5ncnkuIElmIHRoYXQgZmFpbHMgdGhlDQorCQkJCWFwcGxpY2F0aW9uIHdpbGwgZmFsbGJhY2sgdG8gcnRtcFQuDQorCQkJPC9wPg0KKwkJCTxwPk1vc3QgZmlyZXdhbGxzIGRvIGFsbG93IHRyYWZmaWMgb24gcG9ydCA0NDMgYW5kIHRoZXkgbm9ybWFsbHkgZG8NCisJCQkJbm90IGFuYWx5c2UgdGhlIHBhY2tldHMsIGJlY2F1c2UgNDQzIGlzIG5vcm1hbGx5IFNTTCBlbmNyeXB0ZWQsIHNvDQorCQkJCXRoZSBmaXJld2FsbCBzaG91bGQgbm90IGJlIGFibGUgdG8gcmVhZCB0aGUgcGFja2V0cyBhdCBhbGwuDQorCQkJPC9wPg0KKw0KKwkJPC9zZWN0aW9uPg0KKw0KKwkJPHNlY3Rpb24gbmFtZT0iT3Blbk1lZXRpbmdzIG92ZXIgU1NMIj4NCisNCisJCQk8cD4NCisJCQkJWW91IGNhbiBydW4gT3Blbk1lZXRpbmdzIGNvbXBsZXRlbHkgb3ZlciBTU0wuIFNlZQ0KKwkJCQk8YSBocmVmPSJSVE1QU0FuZEhUVFBTLmh0bWwiPlJUTVBTQW5kSFRUUFM8L2E+DQorCQkJCS4NCisJCQk8L3A+DQorDQorCQk8L3NlY3Rpb24+DQorDQorCTwvYm9keT4NCisNCis8L2RvY3VtZW50PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3hkb2NzL1Bvc3RncmVzQ29uZmlnLnhtbCBiL3hkb2NzL1Bvc3RncmVzQ29uZmlnLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wN2Q1NTk2Ci0tLSAvZGV2L251bGwKKysrIGIveGRvY3MvUG9zdGdyZXNDb25maWcueG1sCkBAIC0wLDAgKzEsOTAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPCEtLQ0KKyAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisNCisgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorDQorICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAtLT4NCis8ZG9jdW1lbnQ+DQorDQorCTxwcm9wZXJ0aWVzPg0KKwkJPHRpdGxlPlBvc3RncmVzIENvbmZpZ3VyYXRpb248L3RpdGxlPg0KKwkJPGF1dGhvciBlbWFpbD0ic2ViYXdhZ25lckBhcGFjaGUub3JnIj4NCisJCQlBcGFjaGUgT3Blbk1lZXRpbmdzIERvY3VtZW50YXRpb24gVGVhbQ0KKwkJPC9hdXRob3I+DQorCTwvcHJvcGVydGllcz4NCisNCisJPGJvZHk+DQorCQk8c2VjdGlvbiBuYW1lPSJQb3N0Z3JlcyBDb25maWd1cmF0aW9uIj4NCisNCisJCQk8c3Vic2VjdGlvbiBuYW1lPSJCZWZvcmUgeW91IHN0YXJ0Ij4NCisJCQkJPHVsPg0KKwkJCQkJPGxpPk1ha2Ugc3VyZSB0aGF0IHlvdSBoYXZlIHNldCB1dGY4IGFzIGRlZmF1bHQvc2VydmVyLWNoYXJhY3Rlci1zZXQgDQorCQkJCQk8L2xpPg0KKwkJCQkJPGxpPg0KKwkJCQkJCW1ha2Ugc3VyZSBQb3N0Z3JlcyBpcyBsaXN0ZW5pbmcgb24gVENQL0lQIGNvbm5lY3Rpb25zIQ0KKwkJCQkJCTxiciAvPg0KKwkJCQkJCVRvIHZlcmlmeSBpZiBQb3N0Z3JlcyBjb25uZWN0aW9uIGlzIHdvcmtpbmc6IE9wZW5NZWV0aW5ncyB3aWxsDQorCQkJCQkJYXV0b21hdGljYWxseSBjcmVhdGUgYWxsIHRhYmxlcyBpbiB0aGUgZGF0YWJhc2UgYW5kIGFsbCB0YWJsZXMNCisJCQkJCQlzaG91bGQgaGF2ZSB1dGY4IGFzIGVuY29kaW5nL2NvbGxhdGlvbiENCisJCQkJCTwvbGk+DQorCQkJCQk8bGk+SWYgeW91IGVuY291bnRlciBpc3N1ZXMsIHlvdSBjYW4gZHJvcCB0aGUgZGIgYWdhaW4gYW5kIGRlbGV0ZQ0KKwkJCQkJCXRoZSBmaWxlICRyZWQ1L3dlYmFwcHMvb3Blbm1lZXRpbmdzL2NvbmYvaW5zdGFsbC54bWwgYW5kIHRoZW4gcnVuDQorCQkJCQkJdGhlIHdlYiBiYXNlZCBpbnN0YWxsZXIgYWdhaW4NCisJCQkJCTwvbGk+DQorCQkJCQk8bGk+PHNwYW4gc3R5bGU9ImZvbnQtc2l6ZTogbGFyZ2VyOyBjb2xvcjogYmx1ZTsiPklNUE9SVEFOVDwvc3Bhbj4gQWNjb3JkaW5nIHRvDQorCQkJCQkJPGEgaHJlZj0iaHR0cDovL21hcmttYWlsLm9yZy9tZXNzYWdlL29weW1sYWIyZTZ3eWdiN3AiPnRoaXM8L2E+IHRocmVhZCB5b3UgbmVlZCB0byBlbnN1cmU6PGJyLz4NCisJCQkJCQk8dHQ+c3RhbmRhcmRfY29uZm9ybWluZ19zdHJpbmdzPC90dD4gaXMgc2V0IHRvIDx0dD48Yj5vbjwvYj48L3R0PiBhbmQgPGJyLz4NCisJCQkJCQk8dHQ+ZXNjYXBlX3N0cmluZ193YXJuaW5nPC90dD4gaXMgc2V0IHRvIDx0dD48Yj5vZmY8L2I+PC90dD4NCisJCQkJCTwvbGk+DQorCQkJCTwvdWw+DQorCQkJPC9zdWJzZWN0aW9uPg0KKw0KKwkJCTxzdWJzZWN0aW9uIG5hbWU9IlN0ZXBzIHRvZG8iPg0KKwkJCQk8dWw+DQorCQkJCQk8bGk+DQorCQkJCQkJUmVuYW1lOg0KKwkJCQkJCTxiciAvPg0KKwkJCQkJCSRyZWQ1L3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvY2xhc3Nlcy9NRVRBLUlORi9wb3N0Z3Jlc19wZXJzaXN0ZW5jZS54bWwNCisJCQkJCQk8YnIgLz4NCisJCQkJCQl0bw0KKwkJCQkJCTxiciAvPg0KKwkJCQkJCSRyZWQ1L3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvY2xhc3Nlcy9NRVRBLUlORi9wZXJzaXN0ZW5jZS54bWwNCisJCQkJCTwvbGk+DQorCQkJCQk8bGk+DQorCQkJCQkJUHJlcGFyZSBEYXRhYmFzZSBTZXR0aW5ncyAtIGdvIHRvDQorCQkJCQkJb3Blbm1lZXRpbmdzX3ZlcnNpb25fbm9feHgvd2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9jbGFzc2VzL01FVEEtSU5GL3BlcnNpc3RlbmNlLnhtbA0KKwkJCQkJCTxiciAvPg0KKwkJCQkJCUFsdGVyIGNvbmZpZyB2YWx1ZXMgaW4gcGVyc2lzdGVuY2UueG1sIERCX0hPU1QgVVNFUl9OQU1FIFVTRVJfUEFTUw0KKwkJCQkJCXdpdGggeW91ciB2YWx1ZXMNCisJCQkJCTwvbGk+DQorCQkJCQk8bGk+DQorCQkJCQkJUnVuIHJlZDUtc2VydmljZSBhbmQgZ290byB0aGUgd2ViLWJhc2VkIGluc3RhbGxlcjoNCisJCQkJCQlodHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzL2luc3RhbGwNCisJCQkJCTwvbGk+DQorCQkJCTwvdWw+DQorCQkJPC9zdWJzZWN0aW9uPg0KKw0KKwkJCTxzdWJzZWN0aW9uIG5hbWU9IlBvc3RncmVzIFNhbXBsZSBDb25maWd1cmF0aW9uIj4NCisJCQkJPHA+DQorCQkJCQlUaGVyZSBpcyBhIHNhbXBsZSBjb25maWd1cmF0aW9uIGZvciBQb3N0Z3JlcyB0aGF0IHNoaXBzIHdpdGgNCisJCQkJCWV2ZXJ5DQorCQkJCQlyZWxlYXNlIGluOg0KKwkJCQkJPGJyIC8+DQorCQkJCQkvd2ViYXBwcy9vcGVubWVldGluZ3MvV0VCLUlORi9jbGFzc2VzL01FVEEtSU5GL3Bvc3RncmVzX3BlcnNpc3RlbmNlLnhtbA0KKwkJCQk8L3A+DQorCQkJPC9zdWJzZWN0aW9uPg0KKw0KKw0KKwkJPC9zZWN0aW9uPg0KKw0KKwk8L2JvZHk+DQorDQorPC9kb2N1bWVudD4NCmRpZmYgLS1naXQgYS94ZG9jcy9SVE1QU0FuZEhUVFBTLnhtbCBiL3hkb2NzL1JUTVBTQW5kSFRUUFMueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiNmQyZDAKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9SVE1QU0FuZEhUVFBTLnhtbApAQCAtMCwwICsxLDIwNSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8IS0tDQorICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKw0KKyAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisNCisgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorIC0tPg0KKzxkb2N1bWVudD4NCisNCisJPHByb3BlcnRpZXM+DQorCQk8dGl0bGU+VXNpbmcgT3Blbk1lZXRpbmdzIHdpdGggUlRNUFMgYW5kIEhUVFBTPC90aXRsZT4NCisJCTxhdXRob3IgZW1haWw9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+DQorCQkJT3Blbk1lZXRpbmdzIFRlYW0NCisJCTwvYXV0aG9yPg0KKwk8L3Byb3BlcnRpZXM+DQorDQorCTxib2R5Pg0KKw0KKwkJPHNlY3Rpb24gbmFtZT0iVXNpbmcgT3Blbk1lZXRpbmdzIHdpdGggUlRNUFMgYW5kIEhUVFBTIj4NCisNCisJCQk8cD5UaGVyZSBhcmUgMyB3YXlzIHRoZSBjbGllbnQgY29tbXVuaWNhdGVzIHdpdGggdGhlIHNlcnZlcjogPC9wPg0KKwkJCTx1bD4NCisJCQkJPGxpPlRoZSBmbGFzaC1jbGllbnQgdXNlcyBSVE1QIHByb3RvY29sIHRvIHRyYW5zZmVyIEF1ZGlvL1ZpZGVvIGFuZA0KKwkJCQkJdG8gc2VuZCBhbmQgcmVjZWl2ZSB0aGUgdXNlciBkYXRhIChsb2dpbiBldCBjZXRlcmEpIHRvIHRoZSBzZXJ2ZXINCisJCQkJCWFuZCBiYWNrDQorCQkJCTwvbGk+DQorCQkJCTxsaT5UaGUgYnJvd3NlciB1c2VzIEhUVFAgcHJvdG9jb2wgdG8gbG9hZCB0aGUgU1dGIGFuZCB0byB1cGxvYWQgYW5kDQorCQkJCQlkb3dubG9hZCB0aGUgZmlsZXMgKGRvY3VtZW50cywgcGRmcywgaW1hZ2VzKSB0byB0aGUgc2VydmVyIGFuZA0KKwkJCQkJYmFjay4NCisJCQkJPC9saT4NCisJCQkJPGxpPlRoZSBzY3JlZW5zaGFyaW5nIGNsaWVudCB1c2VzIFJUTVAgcHJvdG9jb2wgdG8gdHJhbnNmZXIgc2NyZWVuDQorCQkJCQlkYXRhIGFuZCByZW1vdGUgY29udHJvbCB0byB0aGUgc2VydmVyIGFuZCBiYWNrDQorCQkJCTwvbGk+DQorCQkJPC91bD4NCisNCisJCTwvc2VjdGlvbj4NCisNCisJCTxzZWN0aW9uIG5hbWU9IlByZXJlcXVpc2l0ZXMiPg0KKw0KKwkJCTx1bD4NCisJCQkJPGxpPllvdSBuZWVkIE9wZW5NZWV0aW5ncyAxLjkueCBmb3IgdGhpcywgT3Blbk1lZXRpbmdzIDEuOC54IGRvZXMNCisJCQkJCW5vdA0KKwkJCQkJaGF2ZSB0aG9zZSBvcHRpb25zLg0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+SW5zdGFsbCBPcGVuTWVldGluZ3MgYWNjb3JkaW5nIHRvIHRoZSBpbnN0YWxsIGluc3RydWN0aW9ucyBhbmQNCisJCQkJCWNoZWNrIHRoYXQgaXQgcnVucyB3aXRob3V0IHByb2JsZW1zDQorCQkJCTwvbGk+DQorCQkJCTxsaT5SZW5hbWUgdGhlIGV4aXN0aW5nIGtleXN0b3JlIGZpbGUgcmVkNS9jb25mL2tleXN0b3JlIHRvDQorCQkJCQlrZXlzdG9yZS5iYWsNCisJCQkJPC9saT4NCisJCQk8L3VsPg0KKw0KKwkJPC9zZWN0aW9uPg0KKw0KKwkJPHNlY3Rpb24gbmFtZT0iQ29uZmlndXJpbmcgUlRNUFMgZm9yIHRoZSBGbGFzaCBDbGllbnQiPg0KKw0KKwkJCTxvbD4NCisJCQkJPGxpPg0KKwkJCQkJQ3JlYXRlIGEgbmV3IGtleXN0b3JlIGFuZCBrZXksIHVzZSB0aGUgc2FtZSBwYXNzd29yZCBmb3IgYm90aDo8YnIvPg0KKwkJCQkJKGNvcGllZCBmcm9tDQorCQkJCQk8YQ0KKwkJCQkJCWhyZWY9Imh0dHA6Ly90cmFjLnJlZDUub3JnL3dpa2kvRG9jdW1lbnRhdGlvbi9UdXRvcmlhbHMvUmVkNURldmVsb3BlclRpcHMvU1NMVExTJTI5OiINCisJCQkJCQlyZWw9Im5vZm9sbG93Ij5odHRwOi8vdHJhYy5yZWQ1Lm9yZy93aWtpL0RvY3VtZW50YXRpb24vVHV0b3JpYWxzL1JlZDVEZXZlbG9wZXJUaXBzL1NTTFRMUyk6PC9hPg0KKwkJCQkJPGRpdiBjbGFzcz0ieG1sY29kZSI+DQorCQkJCQkJa2V5dG9vbCAta2V5c2l6ZSAyMDQ4IC1nZW5rZXkgLWFsaWFzIHJlZDUgLWtleWFsZyBSU0EgLWtleXN0b3JlIHJlZDUvY29uZi9rZXlzdG9yZTxici8+DQorCQkJCQkJRW50ZXIga2V5c3RvcmUgcGFzc3dvcmQ6PGJyLz4NCisJCQkJCQlSZS1lbnRlciBuZXcgcGFzc3dvcmQ6PGJyLz4NCisJCQkJCQlXaGF0IGlzIHlvdXIgZmlyc3QgYW5kIGxhc3QgbmFtZT88YnIvPg0KKwkJCQkJCVtVbmtub3duXTogICZsdDt5b3VyIGhvc3RuYW1lLCBlLmcgZGVtby5vcGVubWVldGluZ3MuZGUmZ3Q7PGJyLz4NCisJCQkJCQlXaGF0IGlzIHRoZSBuYW1lIG9mIHlvdXIgb3JnYW5pemF0aW9uYWwgdW5pdD88YnIvPg0KKwkJCQkJCVtVbmtub3duXTogIERldjxici8+DQorCQkJCQkJV2hhdCBpcyB0aGUgbmFtZSBvZiB5b3VyIG9yZ2FuaXphdGlvbj88YnIvPg0KKwkJCQkJCVtVbmtub3duXTogIE9wZW5NZWV0aW5nczxici8+DQorCQkJCQkJV2hhdCBpcyB0aGUgbmFtZSBvZiB5b3VyIENpdHkgb3IgTG9jYWxpdHk/PGJyLz4NCisJCQkJCQlbVW5rbm93bl06ICBIZW5kZXJzb248YnIvPg0KKwkJCQkJCVdoYXQgaXMgdGhlIG5hbWUgb2YgeW91ciBTdGF0ZSBvciBQcm92aW5jZT88YnIvPg0KKwkJCQkJCVtVbmtub3duXTogIE5ldmFkYTxici8+DQorCQkJCQkJV2hhdCBpcyB0aGUgdHdvLWxldHRlciBjb3VudHJ5IGNvZGUgZm9yIHRoaXMgdW5pdD88YnIvPg0KKwkJCQkJCVtVbmtub3duXTogIFVTPGJyLz4NCisJCQkJCQlJcyBDTj1kZW1vLm9wZW5tZWV0aW5ncy5kZSwgT1U9RGV2LCBPPU9wZW5NZWV0aW5ncywgTD1IZW5kZXJzb24sIFNUPU5ldmFkYSwgQz1VUyBjb3JyZWN0Pzxici8+DQorCQkJCQkJW25vXTogIHllczxici8+DQorCQkJCQkJRW50ZXIga2V5IHBhc3N3b3JkIGZvciAmbHQ7cmVkNSZndDs8YnIvPg0KKwkJCQkJPC9kaXY+DQorCQkJCTwvbGk+DQorCQkNCisJCQkJPGxpPkdlbmVyYXRlIGEgQ1NSOiBrZXl0b29sIC1jZXJ0cmVxIC1rZXlhbGcgUlNBIC1hbGlhcyByZWQ1IC1maWxlDQorCQkJCQlyZWQ1LmNzciAta2V5c3RvcmUgcmVkNS9jb25mL2tleXN0b3JlDQorCQkJCTwvbGk+DQorCQkJCTxsaT5TdWJtaXQgQ1NSIHRvIHlvdXIgQ0Egb2YgY2hvaWNlIGFuZCByZWNlaXZlIGEgc2lnbmVkIGNlcnRpZmljYXRlDQorCQkJCTwvbGk+DQorCQkJCTxsaT5JbXBvcnQgeW91ciBjaG9zZW4gQ0EncyByb290IGNlcnRpZmljYXRlIGludG8gdGhlIGtleXN0b3JlIChtYXkNCisJCQkJCW5lZWQgdG8gZG93bmxvYWQgaXQgZnJvbSB0aGVpciBzaXRlIC0gbWFrZSBzdXJlIHRvIGdldCB0aGUgcm9vdCBDQSBhbmQNCisJCQkJCW5vdCB0aGUgaW50ZXJtZWRpYXRlIG9uZSk6IGtleXRvb2wgLWltcG9ydCAtYWxpYXMgcm9vdCAta2V5c3RvcmUNCisJCQkJCXJlZDUvY29uZi9rZXlzdG9yZQ0KKwkJCQkJLXRydXN0Y2FjZXJ0cyAtZmlsZSByb290LmNydCAobm90ZTogeW91IG1heSByZWNlaXZlIGEgd2FybmluZyB0aGF0DQorCQkJCQl0aGUgY2VydGlmaWNhdGUgYWxyZWFkeSBleGlzdHMgaW4gdGhlIHN5c3RlbSB3aWRlIGtleXN0b3JlIC0gaW1wb3J0DQorCQkJCQlhbnl3YXkpDQorCQkJCTwvbGk+DQorCQkJCTxsaT5JbXBvcnQgdGhlIGludGVybWVkaWF0ZSBjZXJ0aWZpY2F0ZShzKSB5b3Ugbm9ybWFsbHkgcmVjZWl2ZSB3aXRoDQorCQkJCQl0aGUgY2VydGlmaWNhdGU6DQorCQkJCQlrZXl0b29sIC1pbXBvcnQgLWFsaWFzIGludGVybWVkIC1rZXlzdG9yZSByZWQ1L2NvbmYva2V5c3RvcmUgLXRydXN0Y2FjZXJ0cw0KKwkJCQkJLWZpbGUgaW50ZXJtZWRpYXRlLmNydA0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+SW1wb3J0IHRoZSBjZXJ0aWZpY2F0ZSB5b3UgcmVjZWl2ZWQ6IGtleXRvb2wgLWltcG9ydCAtYWxpYXMgcmVkNQ0KKwkJCQkJLWtleXN0b3JlIHJlZDUvY29uZi9rZXlzdG9yZSAtdHJ1c3RjYWNlcnRzIC1maWxlDQorCQkJCQlkZW1vLm9wZW5tZWV0aW5ncy5kZS5jcnQNCisJCQkJPC9saT4NCisgICAgICAgICAgICAgICAgPGxpPg0KKyAgICAgICAgICAgICAgICBDcmVhdGUgYWRkaXRpb25hbCBjZXJ0aWZpY2F0ZSBhcyBkZXNjcmliZWQgYWJvdmUuDQorICAgICAgICAgICAgICAgIEFkZCB0aGlzIGNlcnRpZmljYXRlIHRvIHRoZSBmb2xsb3dpbmcga2V5c3RvcmVzOiA8dHQ+cmVkNS9jb25mL2tleXN0b3JlLnNjcmVlbjwvdHQ+IGFuZCA8dHQ+cmVkNS9jb25mL2tleXN0b3JlPC90dD4uDQorICAgICAgICAgICAgICAgIDwvbGk+DQorCQkJPC9vbD4NCisNCisJCTwvc2VjdGlvbj4NCisJCQ0KKwkJPHNlY3Rpb24gbmFtZT0iU2V0IHVwIFJUTVBTIj4NCisJCQ0KKwkJICA8b2w+DQorCQkgICAgICA8bGk+DQorCQkgICAgICBVbmNvbW1lbnQgPHR0PiZsdDshLS0gUlRNUFMgLS0mZ3Q7PC90dD4gc2VjdGlvbiBpbiA8dHQ+cmVkNS9jb25mL3JlZDUtY29yZS54bWw8L3R0Pg0KKwkJICAgICAgPC9saT4NCisNCisJCQkJPGxpPg0KKwkJCQkJRWRpdCA8dHQ+cmVkNS9jb25mL3JlZDUucHJvcGVydGllczwvdHQ+IGFuZCBzZXQNCisJCQkJCTx0dD5ydG1wcy5wb3J0PTU0NDM8L3R0Pg0KKwkJCQkJYW5kDQorCQkJCQk8dHQ+cnRtcHMua2V5c3RvcmVwYXNzPXBhc3N3b3JkPC90dD4NCisJCQkJCShwYXNzd29yZCA9IHBhc3N3b3JkIHlvdSBzZXQgb24geW91ciBuZXcNCisJCQkJCWtleXN0b3JlKQ0KKwkJCQk8L2xpPg0KKwkJCQ0KKwkJCQk8bGk+DQorCQkJCQlFZGl0IHJlZDUvd2ViYXBwcy9vcGVubWVldGluZ3MvY29uZmlnLnhtbCBhbmQgc2V0DQorCQkJCQk8dHQ+Jmx0O3J0bXBzc2xwb3J0Jmd0OzU0NDMmbHQ7L3J0bXBzc2xwb3J0Jmd0OzwvdHQ+DQorCQkJCQksDQorCQkJCQk8dHQ+Jmx0O3VzZVNTTCZndDt5ZXMmbHQ7L3VzZVNTTCZndDs8L3R0Pg0KKwkJCQkJYW5kDQorCQkJCQk8dHQ+Jmx0O3Byb3h5VHlwZSZndDtiZXN0Jmx0Oy9wcm94eVR5cGUmZ3Q7PC90dD4NCisJCQkJPC9saT4NCisNCisJCQkJPGxpPlJlc3RhcnQgcmVkNSBhbmQgdHJ5IHRvIGNvbm5lY3QgLSB5b3VyIGNvbm5lY3Rpb24gc2hvdWxkIG5vdyBiZQ0KKwkJCQkJbWFkZSB2aWEgUlRNUFMgKGNsb3NlIHBvcnQgMTkzNSB0byBiZSBzdXJlKQ0KKwkJCQk8L2xpPiAgIA0KKwkJCQkJICANCisJCSAgPC9vbD4NCisJCQ0KKwkJPC9zZWN0aW9uPg0KKw0KKwkJPHNlY3Rpb24gbmFtZT0iU1NMIGZvciB0aGUgd2ViIGludGVyZmFjZSI+DQorCQ0KKwkJCTxwPklmIHlvdSB3YW50IHRvIHVzZSBTU0wgZm9yIHRoZSB3ZWIgaW50ZXJmYWNlIGluIGFkZGl0aW9uIHRvIFJUTVBTLA0KKwkJCQl5b3UgbmVlZCB0byBtYWtlIHNvbWUgZnVydGhlciBtb2RpZmljYXRpb25zLiBUaGlzIGlzIG1haW5seSB0byBzZWN1cmUNCisJCQkJdGhlIHNlcnZlciBhZ2FpbnN0IE1JVE0gYXR0YWNrcywgYWRkaXRpb25hbGx5IHNvbWUgb3RoZXIgZmVhdHVyZXMNCisJCQkJbGlrZSBmaWxlIHVwbG9hZHMgYWxzbyB1c2UgYSBwbGFpbiBIVFRQIGNvbm5lY3Rpb24gaWYgdGhpcyBpcyBub3QNCisJCQkJZG9uZS4gVGhlIGZvbGxvd2luZyBpbnN0cnVjdGlvbnMgYXNzdW1lIHRoYXQgeW91IGhhdmUgYWxyZWFkeSBzZXQgdXANCisJCQkJUlRNUFMgc3VjY2Vzc2Z1bGx5LiA8L3A+DQorCQkJPG9sPg0KKwkJCQk8bGk+DQorCQkJCQlDb3B5IHRoaXMgPHR0PnJlZDUvY29uZi9qZWUtY29udGFpbmVyLXNzbC54bWw8L3R0Pg0KKwkJCQkJZmlsZSB0byA8dHQ+cmVkNS9jb25mL2plZS1jb250YWluZXIueG1sPC90dD4NCisJCQkJPC9saT4NCisJCQkJPGxpPg0KKwkJCQkJRWRpdCByZWQ1L3dlYmFwcHMvb3Blbm1lZXRpbmdzL2NvbmZpZy54bWwgYW5kIHNldA0KKwkJCQkJPHR0PiZsdDtwcm90b2NvbCZndDtodHRwcyZsdDsvcHJvdG9jb2wmZ3Q7PC90dD4NCisJCQkJPC9saT4NCisJCQkJPGxpPg0KKwkJCQkJRWRpdCByZWQ1L3dlYmFwcHMvb3Blbm1lZXRpbmdzL2NvbmZpZy54bWwgYW5kIHNldA0KKwkJCQkJPHR0PnJlZDVodHRwcG9ydDwvdHQ+IHRvIDx0dD5odHRwczwvdHQ+IHBvcnQNCisJCQkJPC9saT4NCisJCQkJPGxpPkluIHdlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvY29uZi9heGlzMi54bWwgYWRkIChiZWxvdyB0aGUgZXhpc3RpbmcgaHR0cCB0cmFuc3BvcnRSZWNlaXZlciAoYXJvdW5kIGxpbmUgMjI1KSkNCisJCQkJCTxkaXYgY2xhc3M9InhtbGNvZGUiPiZsdDt0cmFuc3BvcnRSZWNlaXZlciBuYW1lPSJodHRwcyIgY2xhc3M9Im9yZy5hcGFjaGUuYXhpczIudHJhbnNwb3J0Lmh0dHAuQXhpc1NlcnZsZXRMaXN0ZW5lciImZ3Q7PGJyLz4NCisgICAgJiMxNjA7JiMxNjA7JiMxNjA7JiMxNjA7Jmx0O3BhcmFtZXRlciBuYW1lPSJwb3J0IiZndDs0NDMmbHQ7L3BhcmFtZXRlciZndDs8YnIvPg0KKyZsdDsvdHJhbnNwb3J0UmVjZWl2ZXImZ3Q7PC9kaXY+DQorCQkJCTwvbGk+DQorCQkJCTxsaT5FZGl0IHJlZDUvY29uZi9yZWQ1LnByb3BlcnRpZXMgYW5kIHNldCA8dHQ+aHR0cHMucG9ydD00NDM8L3R0PiA8L2xpPg0KKwkJCQk8bGk+DQorCQkJCQlSZXN0YXJ0IHJlZDUgYW5kIHRyeSB0byBjb25uZWN0IHRvDQorCQkJCQk8YSBocmVmPSJodHRwczovL3lvdXIuc2VydmVyIiByZWw9Im5vZm9sbG93Ij5odHRwczovL3lvdXIuc2VydmVyPC9hPg0KKwkJCQkJLSB5b3Ugc2hvdWxkIGJlIHJlZGlyZWN0ZWQgdG8gdGhlIE9wZW5NZWV0aW5ncw0KKwkJCQkJYXBwIGFuZCBhbGwgYWNjZXNzIHNob3VsZCBiZSB2aWEgSFRUUFMgb3IgUlRNUFMgKGNsb3NlIHBvcnQgNTA4MCB0bw0KKwkJCQkJYmUgc3VyZSkuDQorCQkJCTwvbGk+DQorICAgICAgICAgICAgPC9vbD4NCisgICAgICAgICAgICANCisJICAgPC9zZWN0aW9uPg0KKw0KKwkJPHNlY3Rpb24gbmFtZT0iQ3JlZGl0cyI+DQorCQ0KKwkJCTxwPkNyZWRpdHMgZ290bzogTmV4dXMgYW5kIEhvbGdlciBSYWJiYWNoIGZvciB0aGVpciBoZWxwIGFuZA0KKwkJCQljb250cmlidXRpb24gYW5kIGNvbmZpZ3VyYXRpb24gZG9jdW1lbnRpb24hIDwvcD4NCisJDQorCQk8L3NlY3Rpb24+DQorCQ0KKw0KKwk8L2JvZHk+DQorDQorPC9kb2N1bWVudD4NCisNCmRpZmYgLS1naXQgYS94ZG9jcy9SZWNvbW1lbmRlZEhhcmR3YXJlTGlzdC54bWwgYi94ZG9jcy9SZWNvbW1lbmRlZEhhcmR3YXJlTGlzdC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWQ2NmMwNgotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL1JlY29tbWVuZGVkSGFyZHdhcmVMaXN0LnhtbApAQCAtMCwwICsxLDYwIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0NCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorDQorICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKw0KKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgLS0+DQorPGRvY3VtZW50Pg0KKw0KKwk8cHJvcGVydGllcz4NCisJCTx0aXRsZT5Ib21lPC90aXRsZT4NCisJCTxhdXRob3IgZW1haWw9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+DQorCQkJT3Blbk1lZXRpbmdzIFRlYW0NCisJCTwvYXV0aG9yPg0KKwk8L3Byb3BlcnRpZXM+DQorDQorCTxib2R5Pg0KKwkJPHNlY3Rpb24gbmFtZT0iQ2FtZXJhcyI+DQorCQkJV2UgcmVjb21tZW5kIHRoZSBmb2xsb3dpbmcgY2FtZXJhczoNCisJCQk8dWw+DQorCQkJCTxsaT5Mb2dpdGVjaCBRdWlja0NhbSBTcGhlcmUgQUY8L2xpPg0KKwkJCQk8bGk+TG9naXRlY2ggUXVpY2tDYW0gRTM1MDA8L2xpPg0KKwkJCQk8bGk+U2Ftc3VuZyBQbGVvbWF4IFBXQy03MTAwPC9saT4NCisJCQkJPGxpPkdlbml1cyBMb29rMzIwUzwvbGk+DQorCQkJCTxsaT5JbnRlZ3JhdGVkIExlbm92byAzMDAwIG4xMDA8L2xpPg0KKwkJCQk8bGk+U2t5cGVtYXRlIFdDLTEwM008L2xpPg0KKwkJCTwvdWw+DQorCQk8L3NlY3Rpb24+DQorCQk8c2VjdGlvbiBuYW1lPSJIZWFkc2V0cyI+DQorCQkJVGhlIHJlY29tbWVuZGVkIGhlYWRzZXQgbW9kZWwgKGkuZS4gaGVhZHBob25lcyB3aXRoIG1pY3JvcGhvbmUpIGlzOg0KKwkJCTx1bD4NCisJCQkJPGxpPkxvZ2l0ZWNoIENsZWFyIENoYXQgU3R5bGU8L2xpPg0KKwkJCTwvdWw+DQorCQkJQWxzbyB0aGUgZm9sbG93aW5nIGhlYWRzZXRzIHNob3dlZCBnb29kIHJlc3VsdHM6DQorCQkJPHVsPg0KKwkJCQk8bGk+Q2xlYXJDaGF0IFBDIFdpcmVsZXNzIChoZWxwcyB0byBzdXBwcmVzcyBlY2hvKTwvbGk+DQorCQkJCTxsaT5Mb2dpdGVjaCBVU0IgRGVza3RvcCBNaWNyb3Bob25lIC0gTWlrcm9waG9uIChnb29kIHNvdW5kLCBidXQgYmFkIGVjaG8gY2FuY2VsbGF0aW9uKTwvbGk+DQorCQkJPC91bD4NCisJCQk8Yj5Ob3RlIGZvciBNYWMgT1MgWCB1c2Vyczo8L2I+IFRoZSBidWlsZC1pbiBtaWNyb3Bob25lIG5vcm1hbGx5IGhhcyBxdWl0ZSBnb29kIHF1YWxpdHkgYW5kIGVjaG8gY2FuY2VsbGF0aW9uLCBzbyBNYWMgT1MgWCB1c2VycyBvZnRlbiBkbyBub3QgZXZlbiByZXF1aXJlIGEgaGVhZHNldC4NCisJCTwvc2VjdGlvbj4NCisJCTxzZWN0aW9uIG5hbWU9IlNwZWFrZXJwaG9uZXMiPg0KKwkJCVdoZW4gc2V2ZXJhbCBwZW9wbGUgcGFydGljaXBhdGUgZnJvbSB0aGUgc2FtZSBsb2NhdGlvbiwgd2UgcmVjb21tZW5kIHVzaW5nIHRoZSBmb2xsb3dpbmcgc3BlYWtlcnBob25lIG1vZGVsczoNCisJCQk8dWw+DQorCQkJCTxsaT5QaG9lbml4IEF1ZGlvIFF1YXR0cm8yIFVTQiBTcGVha2VycGhvbmUgTVQzMDEgKGEgc2luZ2xlIG1pY3JvcGhvbmUgKyBzcGVha2VycyBjYW4gYmUgdXNlZCBldmVuIHdpdGggMjAtMzAgcGVvcGxlIHNpdHRpbmcgaW4gYSByb29tKTwvbGk+DQorCQkJCTxsaT5QaG9lbml4IERVRVQgRXhlY3V0aXZlPC9saT4NCisJCQkJPGxpPkphYnJhIFNQRUFLNDEwPC9saT4NCisJCQkJPGxpPlBsYW50cm9uaWNzIE1DRCAxMDBNPC9saT4NCisJCQkJPGxpPkludGVncmF0ZWQgTGVub3ZvIDMwMDAgbjEwMDwvbGk+DQorCQkJCTxsaT5Lb25mdGVsIDMwMDwvbGk+DQorCQkJPC91bD4NCisJCTwvc2VjdGlvbj4NCisJPC9ib2R5Pg0KKzwvZG9jdW1lbnQ+DQpkaWZmIC0tZ2l0IGEveGRvY3MvUmVkbWluZVBsdWdpbi54bWwgYi94ZG9jcy9SZWRtaW5lUGx1Z2luLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZjQzNzcxCi0tLSAvZGV2L251bGwKKysrIGIveGRvY3MvUmVkbWluZVBsdWdpbi54bWwKQEAgLTAsMCArMSwzNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8IS0tDQorICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKw0KKyAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisNCisgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorIC0tPg0KKzxkb2N1bWVudD4NCisJPHByb3BlcnRpZXM+DQorCQk8dGl0bGU+UmVkbWluZSBQbHVnaW48L3RpdGxlPg0KKwkJPGF1dGhvciBlbWFpbD0ic29sb21heEBhcGFjaGUub3JnIj4NCisJCQlPcGVuTWVldGluZ3MgVGVhbQ0KKwkJPC9hdXRob3I+DQorCTwvcHJvcGVydGllcz4NCisJPGJvZHk+DQorCQk8c2VjdGlvbiBuYW1lPSJPcGVuTWVldGluZ3MgUGx1Z2luIGZvciBSZWRtaW5lIj4NCisJCQk8cD4NCisJCQkJQ3VycmVudCBEZXZlbG9wbWVudCBTbmFwc2hvdHMgZm9yIHRlc3RpbmcgY2FuIGJlIGNyZWF0ZWQgZnJvbSB0aGUgc291cmNlczoNCisJCQkJPGEgaHJlZj0iaHR0cHM6Ly9zdm4uY29kZXNwb3QuY29tL2EvYXBhY2hlLWV4dHJhcy5vcmcvb3Blbm1lZXRpbmdzLXJlZG1pbmUtcGx1Z2luL3RydW5rIj5oZXJlPC9hPi48YnIvPg0KKwkJCQlUaGUgcGFnZSBhdCByZWRtaW5lIHNpdGUgaXMgPGEgaHJlZj0iaHR0cDovL3d3dy5yZWRtaW5lLm9yZy9wbHVnaW5zL3JlZG1pbmUtb3Blbm1lZXRpbmdzIj5oZXJlPC9hPg0KKwkJCTwvcD4JCQkNCisJCTwvc2VjdGlvbj4NCisJCTxzZWN0aW9uIG5hbWU9IkZlYXR1cmVzIj4NCisJCQk8cD5UQkQ8L3A+DQorCQk8L3NlY3Rpb24+DQorCTwvYm9keT4NCis8L2RvY3VtZW50Pg0KZGlmZiAtLWdpdCBhL3hkb2NzL1JlbGVhc2VHdWlkZS54bWwgYi94ZG9jcy9SZWxlYXNlR3VpZGUueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZkMDkwYWIKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9SZWxlYXNlR3VpZGUueG1sCkBAIC0wLDAgKzEsMjQ5IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0NCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorDQorICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKw0KKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgLS0+DQorPGRvY3VtZW50Pg0KKw0KKwk8cHJvcGVydGllcz4NCisJCTx0aXRsZT5SZWxlYXNlIEd1aWRlPC90aXRsZT4NCisJCTxhdXRob3IgZW1haWw9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+DQorCQkJT3Blbk1lZXRpbmdzIFRlYW0NCisJCTwvYXV0aG9yPg0KKwk8L3Byb3BlcnRpZXM+DQorDQorCTxib2R5Pg0KKw0KKwkJPHNlY3Rpb24gbmFtZT0iSG93IHRvIEJ1aWxkIGEgUmVsZWFzZSBvZiBPcGVuTWVldGluZ3MiPg0KKw0KKwkJCTxzdWJzZWN0aW9uIG5hbWU9IlJlcXVpcmVkIHRvb2xzIj4NCisNCisJCQkJPGRpdj4NCisJCQkJCTxwPlRvIGJ1aWxkIGEgYmluYXJ5IHJlbGVhc2Ugb2YgT3Blbk1lZXRpbmdzIHlvdSBuZWVkOiA8L3A+DQorCQkJCQk8dWw+DQorCQkJCQkJPGxpPlN1biBKREs2PC9saT4NCisJCQkJCQk8bGk+QXBhY2hlIEFOVCAobWluaW11bSkgMS44LjM8L2xpPg0KKwkJCQkJCTxsaT4NCisJCQkJCQkJU1ZOIENvbW1hbmQgbGluZSBjbGllbnQgKFN1YnZlcnNpb24gMS43IHJlcXVpcmVkISkNCisJCQkJCQkJPGEgaHJlZj0iaHR0cDovL3N1YnZlcnNpb24uYXBhY2hlLm9yZy9wYWNrYWdlcy5odG1sIiB0YXJnZXQ9Il9CTEFOSyINCisJCQkJCQkJCXJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9zdWJ2ZXJzaW9uLmFwYWNoZS5vcmcvcGFja2FnZXMuaHRtbDwvYT4NCisJCQkJCQk8L2xpPg0KKwkJCQkJCTxsaT5BIHRleHQgZWRpdG9yPC9saT4NCisJCQkJCQk8bGk+WW91IG5lZWQgdG8gYmUgb25saW5lISBUaGUgYnVpbGQgcHJvY2VzcyBhY3RpdmVseSBkb3dubG9hZHMNCisJCQkJCQkJbmVlZGVkIGxpYnJhcmllcyBhbmQgZGVwZW5kZW5jaWVzLg0KKwkJCQkJCTwvbGk+DQorCQkJCQk8L3VsPg0KKwkJCQk8L2Rpdj4NCisNCisJCQk8L3N1YnNlY3Rpb24+DQorDQorCQkJPHN1YnNlY3Rpb24gbmFtZT0iUHJlcGFyZSB5b3VyIEFwYWNoZSBJRCI+DQorDQorCQkJCTxkaXY+DQorCQkJCQlFdmVyeSByZWxlYXNlIHBhY2thZ2UgbXVzdCBiZSBzaWduZWQgd2l0aCBhIFBHUC9HUEcga2V5Lg0KKwkJCQkJPGJyIC8+DQorCQkJCQlTbyBpZiB5b3Ugd2FudCB0byByZWxlYXNlIGEgcGFja2FnZSB5b3VyIEFwYWNoZSBJZCBtdXN0IGJlDQorCQkJCQljb25uZWN0ZWQgd2l0aCBhIFBHUCBrZXkhDQorCQkJCQk8YnIgLz4NCisJCQkJCTxiciAvPg0KKwkJCQkJWW91IG1pZ2h0IGZvbGxvdzoNCisJCQkJCTxiciAvPg0KKwkJCQkJPGENCisJCQkJCQlocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvZGV2L25ldy1jb21taXR0ZXJzLWd1aWRlLmh0bWwjc2VjdXJpdHktYW5kLXBncCINCisJCQkJCQl0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5hcGFjaGUub3JnL2Rldi9uZXctY29tbWl0dGVycy1ndWlkZS5odG1sI3NlY3VyaXR5LWFuZC1wZ3ANCisJCQkJCTwvYT4NCisJCQkJCTxiciAvPg0KKwkJCQkJPGJyIC8+DQorCQkJCQlJbiBzaG9ydDoNCisJCQkJCTxiciAvPg0KKwkJCQkJQ3JlYXRlIFBHUCBrZXkgcGFpcnMgKHByaXZhdGUgKyBwdWJsaWMpIChhbmQgSSByZWNvbW1lbmQgY3JlYXRpbmcgYQ0KKwkJCQkJUmV2b2tlIENlcnQpDQorCQkJCQk8YnIgLz4NCisJCQkJCVVwbG9hZCB0aGUgcHVibGljIGtleSAoZWl0aGVyIGJlaSB1c2luZyB0aGUgUEdQIFRvb2wgdGhhdCB5b3UgdXNlDQorCQkJCQl0byBjcmVhdGUgdGhlIGtleSkgb3IgYnkgdXNpbmcgdGhlIHdlYiBmb3JtIHRvOg0KKwkJCQkJPGEgaHJlZj0iaHR0cDovL3BncC5taXQuZWR1LyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9wZ3AubWl0LmVkdS8NCisJCQkJCTwvYT4NCisJCQkJCTxiciAvPg0KKwkJCQkJQWRkIHRoZSBmaW5nZXJwcmludCBzdHJpbmcgKHNvbWV0aGluZyBsaWtlICJCRjEzIENGMTEgRjlDOSAwQ0JFDQorCQkJCQk0NDEzIDA5QUIgMDA1NSAxNkJGIDkzQTMgMDM5NSIpIHRvIHlvdXIgcHJvZmlsZSBhdA0KKwkJCQkJPGEgaHJlZj0iaHR0cDovL2lkLmFwY2hlLW9yZyIgdGFyZ2V0PSJfYmxhbmsiIHJlbD0ibm9mb2xsb3ciPmlkLmFwY2hlLW9yZw0KKwkJCQkJPC9hPg0KKwkJCQkJPGJyIC8+DQorCQkJCQlXYWl0IGZvciA2LTggaG91cnMsIHRoZSBzZXJ2ZXIgd2lsbCBzZWFyY2ggZm9yIGEgcHVibGljIGtleSBiYXNlZA0KKwkJCQkJb24geW91ciBmaW5nZXJwcmludCwgaWYgc3VjY2VzcyBpdCB3aWxsIGNyZWF0ZSBhIGZpbGUgd2l0aCB5b3VyDQorCQkJCQluYW1lIGF0Og0KKwkJCQkJPGJyIC8+DQorCQkJCQk8YSBocmVmPSJodHRwczovL3Blb3BsZS5hcGFjaGUub3JnL2tleXMvY29tbWl0dGVyLyI+aHR0cHM6Ly9wZW9wbGUuYXBhY2hlLm9yZy9rZXlzL2NvbW1pdHRlci88L2E+DQorCQkJCQk8YnIgLz4NCisJCQkJCTxiciAvPg0KKwkJCQkJSWYgdGhhdCBpcyAic3VjY2VzcyIgdGhlbiBhZGQgeW91ciBrZXkgdG86DQorCQkJCQk8YnIgLz4NCisJCQkJCTxhDQorCQkJCQkJaHJlZj0iaHR0cHM6Ly9zdm4uYXBhY2hlLm9yZy9yZXBvcy9hc2Yvb3Blbm1lZXRpbmdzL3Byb2plY3QvS0VZUyI+aHR0cHM6Ly9zdm4uYXBhY2hlLm9yZy9yZXBvcy9hc2Yvb3Blbm1lZXRpbmdzL3Byb2plY3QvS0VZUw0KKwkJCQkJPC9hPg0KKwkJCQkJPGJyIC8+DQorCQkJCQlhbmQgZm9sbG93IHRoZSBpbnN0cnVjdGlvbnMgaW4gdGhlIGZpbGUuDQorCQkJCQk8YnIgLz4NCisJCQkJPC9kaXY+DQorDQorCQkJPC9zdWJzZWN0aW9uPg0KKw0KKwkJCTxzdWJzZWN0aW9uIG5hbWU9IlN0ZXAxIC0gUHJlcGFyZSBmaWxlcyI+DQorCQkJCTxwPg0KKwkJCQkJQ2hlY2sgdGhhdCBhbGwgZmlsZXM6DQorCQkJCQk8YnIgLz4NCisJCQkJCUxJQ0VOU0UsIE5PVElDRSwgRElTQ0xBSU1FUiwgQ0hBTkdFTE9HLCBSRUFETUUNCisJCQkJCTxiciAvPg0KKwkJCQkJYXJlIHVwIHRvIGRhdGUgYW5kIHJlZmVyIHRvIHRoZSByaWdodCB2ZXJzaW9uLg0KKwkJCQk8L3A+DQorDQorCQkJCTxwPg0KKwkJCQkJQ3JlYXRlIGEgVEFHIG9mIHRoZSBTVk4gdHJlZSB0aGF0IHlvdSB3b3VsZCBsaWtlIHRvIHJlbGVhc2U8YnIvPg0KKwkJCQkJRXhhbXBsZToNCisJCQkJCTxkaXYgY2xhc3M9InhtbGNvZGUiPg0KKwkJCQkJCXN2biBjb3B5IC1yMTQ1MzE1OCBodHRwczovL3N2bi5hcGFjaGUub3JnL3JlcG9zL2FzZi9vcGVubWVldGluZ3MvdHJ1bmsvc2luZ2xld2ViYXBwIFw8YnIvPg0KKwkJCQkJCQlodHRwczovL3N2bi5hcGFjaGUub3JnL3JlcG9zL2FzZi9vcGVubWVldGluZ3MvdGFncy8yLjFSQzEgXDxici8+DQorCQkJCQkJCS1tICJSZWxlYXNlIGNhbmRpZGF0ZSAxIg0KKwkJCQkJPC9kaXY+DQorCQkJCTwvcD4NCisNCisJCQkJPHA+R2V0IHRoZSBzb3VyY2UgZnJvbSB5b3VyIFRBRzogPC9wPg0KKwkJCQk8ZGl2IGNsYXNzPSJ4bWxjb2RlIj4NCisJCQkJCXN2biBjaGVja291dCBodHRwczovL3N2bi5hcGFjaGUub3JnL3JlcG9zL2FzZi9vcGVubWVldGluZ3MvdGFncy8kQlJBTkNIT1JUQUcvPGJyIC8+DQorCQkJCQkkQlJBTkNIT1JUQUcgc2hvdWxkIGJlIHJlcGxhY2VkIHdpdGggeW91ciBuZXcgVEFHDQorCQkJCTwvZGl2Pg0KKw0KKwkJCQk8cD5FZGl0IHRoZSBmaWxlIGJ1aWxkLnByb3BlcnRpZXMgY2hhbmdlPC9wPg0KKwkJCQk8ZGl2IGNsYXNzPSJ4bWxjb2RlIj4NCisJCQkJCXByb2plY3Quc3RhdHVzPVNOQVBTSE9UDQorCQkJCTwvZGl2Pg0KKwkJCQk8cD50bzwvcD4NCisJCQkJPGRpdiBjbGFzcz0ieG1sY29kZSI+DQorCQkJCQlwcm9qZWN0LnN0YXR1cz1SRUxFQVNFDQorCQkJCTwvZGl2Pg0KKwkJCQk8cD5SdW4gdGhlIGNvbW1hbmQ6IDwvcD4NCisJCQkJPGRpdiBjbGFzcz0ieG1sY29kZSI+DQorCQkJCQlhbnQgZGlzdC1yZWxlYXNlDQorCQkJCTwvZGl2Pg0KKwkJCQk8cD5UZXN0IGJ1aWxkaW5nIHRoZSBzb3VyY2Ugb24gd2luZG93cyBhbmQgT1N4IG9yIExpbnV4PC9wPg0KKwkJCQk8cD5UZXN0IHJ1bm5pbmcgdGhlIGJpbmFyeSdzPC9wPg0KKwkJCQk8cD5DcmVhdGUgTUQ1IGNoZWNrc3VtczwvcD4NCisJCQkJPGRpdiBjbGFzcz0ieG1sY29kZSI+DQorCQkJCQkjT24gT1NYIHlvdSBtaWdodCB1c2UgdGhpcyBjb21tYW5kIHRvIG1ha2UgYSBNRDUgY2hlY2tzdW0gYW5kIHN0b3JlIGl0IHRvIGEgZmlsZTxiciAvPg0KKwkJCQkJbWQ1IC1yIGFwYWNoZS1vcGVubWVldGluZ3MtWFhYLXNyYy56aXAgPmFwYWNoZS1vcGVubWVldGluZ3MtWFhYLXNyYy56aXAubWQ1DQorCQkJCTwvZGl2Pg0KKwkJCQk8ZGl2IGNsYXNzPSJ4bWxjb2RlIj4NCisJCQkJCSNUbyBjcmVhdGUgTUQ1IGhhc2hlcyBPbiBVYnVudHU6PGJyIC8+DQorCQkJCQlmb3IgZiBpbiBgbHMgLTEgKi50YXIuZ3ogKi56aXBgOyBkbyBtZDVzdW0gJGYgPiAkZi5tZDU7IGRvbmU8YnIvPg0KKwkJCQkJPGJyLz4NCisJCQkJCSNUbyBjaGVjayBNRDUgaGFzaGVzIE9uIFVidW50dTo8YnIgLz4NCisJCQkJCWZvciBmIGluIGBscyAtMSAqLnRhci5neiAqLnppcGA7IGRvIG1kNXN1bSAtYyAkZi5tZDU7IGRvbmUNCisJCQkJPC9kaXY+DQorCQkJCTxwPg0KKwkJCQkJQ3JlYXRlIHNpZ25hdHVyZXMgd2l0aCB0aGUgeW91ciBLRVkgZm9yIGV2ZXJ5IGZpbGUsIHRoZSBLRVkgbXVzdCBiZSBhdmFpbGFibGUgYXQ6PGJyIC8+DQorCQkJCQk8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvZGlzdC9pbmN1YmF0b3Ivb3Blbm1lZXRpbmdzL0tFWVMiPg0KKwkJCQkJCWh0dHA6Ly93d3cuYXBhY2hlLm9yZy9kaXN0L2luY3ViYXRvci9vcGVubWVldGluZ3MvS0VZUw0KKwkJCQkJPC9hPg0KKwkJCQk8L3A+DQorCQkJCTxkaXYgY2xhc3M9InhtbGNvZGUiPg0KKwkJCQkJI1RvIGNyZWF0ZSBzaWduYXR1cmVzIE9uIFVidW50dTo8YnIgLz4NCisJCQkJCWZvciBmIGluIGBscyAtMSAqLnRhci5neiAqLnppcGA7IGRvIGdwZyAtLWFybW9yIC0tb3V0cHV0ICRmLmFzYyAtLWRldGFjaC1zaWcgJGY7IGRvbmU8YnIvPg0KKwkJCQkJPGJyLz4NCisJCQkJCSNUbyBjaGVjayBzaWduYXR1cmVzIE9uIFVidW50dTo8YnIgLz4NCisJCQkJCWZvciBmIGluIGBscyAtMSAqLnRhci5neiAqLnppcGA7IGRvIGdwZyAtLXZlcmlmeSAkZi5hc2M7IGRvbmUNCisJCQkJPC9kaXY+DQorCQkJCQ0KKwkJCQk8cD4NCisJCQkJCUNvbW1pdCBhcnRpZmFjdHMgeW91IGhhdmUgY3JlYXRlZCB3aXRoIEtFWVMgZmlsZSB0byB0aGUNCisJCQkJCTx0dD5odHRwczovL2Rpc3QuYXBhY2hlLm9yZy9yZXBvcy9kaXN0L2Rldi9vcGVubWVldGluZ3MvPC90dD4NCisJCQkJCVByb3Bvc2VkIGZpbGUgc3RydWN0dXJlIGZvciAiUmVsZWFzZSBDYW5kaWRhdGUgMSIgb2YgMi4xIHdpbGwgYmU6DQorCQkJCTwvcD4NCisJCQkJPGRpdiBjbGFzcz0ieG1sY29kZSI+DQorCQkJCQkyLjE8YnIgLz4NCisJCQkJCTIuMS9yYzE8YnIgLz4NCisJCQkJCTIuMS9yYzEvc3JjPGJyIC8+DQorCQkJCQkyLjEvcmMxL3NyYy9hcGFjaGUtb3Blbm1lZXRpbmdzLTIuMS4wLXNyYy56aXA8YnIgLz4NCisJCQkJCTIuMS9yYzEvc3JjL2FwYWNoZS1vcGVubWVldGluZ3MtMi4xLjAtc3JjLnRhci5nejxiciAvPg0KKwkJCQkJMi4xL3JjMS9zcmMvYXBhY2hlLW9wZW5tZWV0aW5ncy0yLjEuMC1zcmMuemlwLm1kNTxiciAvPg0KKwkJCQkJMi4xL3JjMS9zcmMvYXBhY2hlLW9wZW5tZWV0aW5ncy0yLjEuMC1zcmMuemlwLmFzYzxiciAvPg0KKwkJCQkJMi4xL3JjMS9zcmMvYXBhY2hlLW9wZW5tZWV0aW5ncy0yLjEuMC1zcmMudGFyLmd6Lm1kNTxiciAvPg0KKwkJCQkJMi4xL3JjMS9zcmMvYXBhY2hlLW9wZW5tZWV0aW5ncy0yLjEuMC1zcmMudGFyLmd6LmFzYzxiciAvPg0KKwkJCQkJMi4xL3JjMS9iaW48YnIgLz4NCisJCQkJCTIuMS9yYzEvYmluL2FwYWNoZS1vcGVubWVldGluZ3MtMi4xLjAuemlwPGJyIC8+DQorCQkJCQkyLjEvcmMxL2Jpbi9hcGFjaGUtb3Blbm1lZXRpbmdzLTIuMS4wLnRhci5nejxiciAvPg0KKwkJCQkJMi4xL3JjMS9iaW4vYXBhY2hlLW9wZW5tZWV0aW5ncy0yLjEuMC56aXAubWQ1PGJyIC8+DQorCQkJCQkyLjEvcmMxL2Jpbi9hcGFjaGUtb3Blbm1lZXRpbmdzLTIuMS4wLnppcC5hc2M8YnIgLz4NCisJCQkJCTIuMS9yYzEvYmluL2FwYWNoZS1vcGVubWVldGluZ3MtMi4xLjAudGFyLmd6Lm1kNTxiciAvPg0KKwkJCQkJMi4xL3JjMS9iaW4vYXBhY2hlLW9wZW5tZWV0aW5ncy0yLjEuMC50YXIuZ3ouYXNjPGJyIC8+DQorCQkJCQkyLjEvcmMxL0tFWVMNCisJCQkJPC9kaXY+DQorCQkJPC9zdWJzZWN0aW9uPg0KKw0KKwkJCTxzdWJzZWN0aW9uIG5hbWU9IlN0ZXAyIC0gVk9URSBhbmQgUkVTVUxUIGVtYWlscyI+DQorCQkJCTxwPg0KKwkJCQkJU2VuZCBhICJWT1RFIiB0byB0aGUgZGV2ZWxvcGVyIG1haWxpbmcgbGlzdCBpbmNsdWRpbmcgbGlua3MgdG8gcmVsZWFzZSBhcnRlZmFjdHMuPGJyIC8+DQorCQkJCQlBIFZPVEUgYWx3YXlzIGNvbnRhaW5zIHR3byBwYXJ0czo8YnIgLz4NCisJCQkJCVNlbmQgYW4gZW1haWwgdG8gdGhlIGRldmVsb3BlciBtYWlsaW5nIGxpc3Qgd2l0aCB0aGUgc3ViamVjdCBsaW5lOjxiciAvPg0KKwkJCQkJW1ZPVEVdIEFwYWNoZSBPcGVuTWVldGluZ3MgeC54eCByZWxlYXNlPGJyIC8+DQorCQkJCQlBbiBleGFtcGxlIGZvciBzdWNoIGFuIGVtYWlsOg0KKwkJCQkJPGEgaHJlZj0iaHR0cDovL3MuYXBhY2hlLm9yZy92b3RlLTIuMS4wUkMxIj5leGFtcGxlIFZvdGUgZW1haWw8L2E+DQorCQkJCQk8YSBocmVmPSJodHRwOi8vcy5hcGFjaGUub3JnL3ZvdGUtMi4wLjBSQzQiPmV4YW1wbGUgVm90ZSBlbWFpbCAoSW5jdWJhdG9yKTwvYT4NCisJCQkJCTxiciAvPg0KKwkJCQkJRm9yd2FyZCAoTm90IENDKSB0aGlzIFZvdGUgZW1haWwgdG86IHByaXZhdGVAb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmc8YnIgLz4NCisJCQkJCTxiciAvPg0KKwkJCQkJQWZ0ZXIgdGhlIHZvdGUgaXMgb3Zlciwgc2VuZCBhICJSRVNVTFQiIGVtYWlsIHRvIHRoZSBsaXN0IHdpdGggdGhlIHN1YmplY3QgbGluZTo8YnIgLz4NCisJCQkJCVtSRVNVTFRdW1ZPVEVdIEFwYWNoZSBPcGVuTWVldGluZ3MgeC54eCByZWxlYXNlPGJyIC8+DQorCQkJCQlBbiBleGFtcGxlIGZvciBzdWNoIGFuIGVtYWlsOg0KKwkJCQkJPGENCisJCQkJCQlocmVmPSJodHRwOi8vbWFpbC1hcmNoaXZlcy5hcGFjaGUub3JnL21vZF9tYm94L2luY3ViYXRvci1vcGVubWVldGluZ3MtZGV2LzIwMTIwNy5tYm94LyUzQ0NBQ2VNaUEtaWJvNmZHQ2JuTGpKWDlINUgya0ZHRFZKUk1meFB5TXR6V3pDV05pJTJCcE9nJTQwbWFpbC5nbWFpbC5jb20lM0UiPmV4YW1wbGUgUmVzdWx0IGVtYWlsPC9hPg0KKwkJCQkJPGJyIC8+DQorCQkJCQlGb3J3YXJkIChOb3QgQ0MpIHRoaXMgUkVTVUxUIFZPVEUgZW1haWwgdG86IHByaXZhdGVAb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmc8YnIgLz4NCisJCQkJCTxiciAvPg0KKwkJCQkJVm90ZXMgb24gd2hldGhlciBhIHBhY2thZ2UgaXMgcmVhZHkgdG8gYmUgcmVsZWFzZWQgdXNlIG1ham9yaXR5IGFwcHJvdmFsIC0tIGkuZS4sIGF0IA0KKwkJCQkJbGVhc3QgdGhyZWUgUE1DIG1lbWJlcnMgbXVzdCB2b3RlIGFmZmlybWF0aXZlbHkgZm9yIHJlbGVhc2UsIGFuZCB0aGVyZSBtdXN0IGJlIG1vcmUgDQorCQkJCQlwb3NpdGl2ZSB0aGFuIG5lZ2F0aXZlIHZvdGVzLiBSZWxlYXNlcyBtYXkgbm90IGJlIHZldG9lZC4gQmVmb3JlIHZvdGluZyArMSBQTUMgbWVtYmVycw0KKwkJCQkJYXJlIHJlcXVpcmVkIHRvIGRvd25sb2FkIHRoZSBzaWduZWQgc291cmNlIGNvZGUgcGFja2FnZSwgY29tcGlsZSBpdCBhcyBwcm92aWRlZCwgYW5kIA0KKwkJCQkJdGVzdCB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUgb24gdGhlaXIgb3duIHBsYXRmb3JtLCBhbG9uZyB3aXRoIGFsc28gdmVyaWZ5aW5nIHRoYXQgDQorCQkJCQl0aGUgcGFja2FnZSBtZWV0cyB0aGUgcmVxdWlyZW1lbnRzIG9mIHRoZSBBU0YgcG9saWN5IG9uIHJlbGVhc2VzLg0KKwkJCQk8L3A+DQorCQkJPC9zdWJzZWN0aW9uPg0KKw0KKwkJCTxzdWJzZWN0aW9uIG5hbWU9IlN0ZXAzIC0gRGlzdHJpYnV0ZSBhbmQgYW5ub3VuY2UiPg0KKwkJCQk8cD5JZiBWT1RFcyBwb3NpdGl2ZTogVXBsb2FkIHRoZSByZWxlYXNlIDwvcD4NCisJCQkJPGRpdiBjbGFzcz0ieG1sY29kZSI+DQorCQkJCQlzdm4gbXYgaHR0cHM6Ly9kaXN0LmFwYWNoZS5vcmcvcmVwb3MvZGlzdC9kZXYvb3Blbm1lZXRpbmdzLzIuMS9yYzMgXDxici8+DQorCQkJCQkJaHR0cHM6Ly9kaXN0LmFwYWNoZS5vcmcvcmVwb3MvZGlzdC9yZWxlYXNlL29wZW5tZWV0aW5ncy8yLjEgXDxici8+DQorCQkJCQkJLW0gIlJDMyBpcyByZWxlYXNlZCBhcyAyLjEiDQorCQkJCTwvZGl2Pg0KKwkJCQk8cD4NCisJCQkJCVdhaXQgMjQgaG91cnMgKHVudGlsIGFsbCBBcGFjaGUgbWlycm9ycyBoYXZlIHN5bmNlZCB0aGUgcGFja2FnZXMpDQorCQkJCQlhbmQgc2VuZCBhbiBhbm5vdW5jZW1lbnQgdG8gdGhlIG1haWxpbmcgbGlzdCArIGJsb2cgYW5kIGFueSBvdGhlcg0KKwkJCQkJY2hhbm5lbC4NCisJCQkJPC9wPg0KKwkJCQk8cD4NCisJCQkJCUVtYWlsIGFubm91bmNlbWVudHMgc2hvdWxkIGhhdmUgdGhlIHN1YmplY3QgbGluZToNCisJCQkJCTxiciAvPg0KKwkJCQkJW0FOTk9VTkNFXSBBcGFjaGUgT3Blbk1lZXRpbmdzIHgueHggcmVsZWFzZWQNCisJCQkJPC9wPg0KKwkJCQk8cD4NCisJCQkJCUFkZCBhIHNlY3Rpb24gdG8gPGEgaHJlZj0iZG93bmxvYWRzLmh0bWwiPmRvd25sb2FkczwvYT4gd2Vic2l0ZS48YnIgLz4NCisJCQkJCU1ha2Ugc3VyZSB0aGF0IHRoZSBiaW5hcnkgcGFja2FnZXMgYXJlIGxpbmtlZCB1c2luZyB0aGUgbWlycm9yIFVSTCBhcyBiYXNlIHBhdGggKA0KKwkJCQkJPGI+bm90PC9iPmh0dHA6Ly93d3cuYXBhY2hlLm9yZy9kaXN0KTo8YnIgLz4NCisJCQkJCU1pcnJvciBVUkw6IA0KKwkJCQkJPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2R5bi9jbG9zZXIuY2dpL29wZW5tZWV0aW5ncy8iPmh0dHA6Ly93d3cuYXBhY2hlLm9yZy9keW4vY2xvc2VyLmNnaS9vcGVubWVldGluZ3MvPC9hPg0KKwkJCQk8L3A+DQorCQkJPC9zdWJzZWN0aW9uPg0KKwkJPC9zZWN0aW9uPg0KKw0KKwk8L2JvZHk+DQorDQorPC9kb2N1bWVudD4NCmRpZmYgLS1naXQgYS94ZG9jcy9SZXN0QVBJU2FtcGxlLnhtbCBiL3hkb2NzL1Jlc3RBUElTYW1wbGUueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxNDY4MjkKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9SZXN0QVBJU2FtcGxlLnhtbApAQCAtMCwwICsxLDg1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0NCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorDQorICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKw0KKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgLS0+DQorPGRvY3VtZW50Pg0KKw0KKwk8cHJvcGVydGllcz4NCisJCTx0aXRsZT5Ib21lPC90aXRsZT4NCisJCTxhdXRob3IgZW1haWw9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+DQorCQkJU2ViYXN0aWFuIFdhZ25lcg0KKwkJPC9hdXRob3I+DQorCTwvcHJvcGVydGllcz4NCisNCisJPGJvZHk+DQorDQorCQk8c2VjdGlvbiBuYW1lPSJJbnRyb2R1Y3Rpb24iPg0KKw0KKwkJCTxwPiBGb3IgYSBkZXRhaWxlZCBpbnN0cnVjdGlvbiB3aGljaCBzZXJ2aWNlcywgbWV0aG9kcyBhbmQgcGFyYW1zIGFyZSBhdmFpbGFibGUgc2VlIHRoZSBsaXN0IGluIHRoZSBTb2FwTWV0aG9kcy4gQUxMIG1ldGhvZHMgdGhhdCBhcmUgaW1wbGVtZW50ZWQgZm9yIHRoZSBTT0FQIEFQSSBhcmUgYWxzbyBhdmFpbGFibGUgdmlhIFJFU1QuIA0KKwkJCTwvcD4NCisNCisJCTwvc2VjdGlvbj4NCisJCQ0KKwkJPHNlY3Rpb24gbmFtZT0iSG93IHRvIGludm9rZSBTZXJ2aWNlcyB2aWEgUkVTVCI+DQorDQorCQkJPHA+Rm9yIGV4YW1wbGUgZm9yIHRoZSBtZXRob2QgZ2V0U2Vzc2lvbiBpbiB0aGUgVXNlclNlcnZpY2UsIHlvdSB3b3VsZCB1c2UgdGhpcyBVUkwgdmlhIFJFU1Q6DQorCQkJPC9wPg0KKwkJCTxwPlNhbXBsZSBVUkw6IDwvcD48YSBocmVmPSJodHRwOi8vZGVtby5vcGVubWVldGluZ3MuZGUvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1VzZXJTZXJ2aWNlL2dldFNlc3Npb24iPmh0dHA6Ly9kZW1vLm9wZW5tZWV0aW5ncy5kZS9vcGVubWVldGluZ3Mvc2VydmljZXMvVXNlclNlcnZpY2UvZ2V0U2Vzc2lvbjwvYT4NCisJCQk8cD5SZXN1bHQ6IDwvcD4NCisJCQk8ZGl2IGNsYXNzPSJ4bWxjb2RlIj4NCisJCQkJJmx0O25zOmdldFNlc3Npb25SZXNwb25zZS8mZ3Q7PGJyLz4NCisJCQkJJmx0O25zOnJldHVybiB0eXBlPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5oaWJlcm5hdGUuYmVhbnMuYmFzaWMuU2Vzc2lvbmRhdGEiLyZndDs8YnIvPg0KKwkJCQk8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDoyMHB4Ij4NCisJCQkJCSZsdDtheDIxOTppZCYjNjI7MTU2OTcxJmx0Oy9heDIxOTppZC8mZ3Q7PGJyLz4NCisJCQkJCSZsdDtheDIxOTpsYW5ndWFnZV9pZCB4c2k6bmlsPSJ0cnVlIi8vJmd0Ozxici8+DQorCQkJCQkmbHQ7YXgyMTk6b3JnYW5pemF0aW9uX2lkIHhzaTpuaWw9InRydWUiLy8mZ3Q7PGJyLz4NCisJCQkJCSZsdDtheDIxOTpyZWZyZXNoX3RpbWUmIzYyOzIwMTEtMDctMDNUMTQ6NDA6NDQuMDAwWiZsdDsvYXgyMTk6cmVmcmVzaF90aW1lLyZndDs8YnIvPg0KKwkJCQkJJmx0O2F4MjE5OnNlc3Npb25YbWwgeHNpOm5pbD0idHJ1ZSIvLyZndDs8YnIvPg0KKwkJCQkJJmx0O2F4MjE5OnNlc3Npb25faWQmIzYyOzI2NTg0NzA1MjAyZDdjMWRlNmNjOGU3ZTI4ODkwZTNkJmx0Oy9heDIxOTpzZXNzaW9uX2lkLyZndDs8YnIvPg0KKwkJCQkJJmx0O2F4MjE5OnN0YXJ0dGVybWluX3RpbWUmIzYyOzIwMTEtMDctMDNUMTQ6NDA6NDQuMDAwWiZsdDsvYXgyMTk6c3RhcnR0ZXJtaW5fdGltZS8mZ3Q7PGJyLz4NCisJCQkJCSZsdDtheDIxOTpzdG9yZVBlcm1hbmVudCB4c2k6bmlsPSJ0cnVlIi8vJmd0Ozxici8+DQorCQkJCQkmbHQ7YXgyMTk6dXNlcl9pZCB4c2k6bmlsPSJ0cnVlIi8vJmd0Ozxici8+DQorCQkJCTwvZGl2Pg0KKwkJCQkmbHQ7L25zOnJldHVybi8mZ3Q7PGJyLz4NCisJCQkJJmx0Oy9uczpnZXRTZXNzaW9uUmVzcG9uc2UvJmd0Ozxici8+DQorCQkJPC9kaXY+DQorCQkJPHA+VG8gbG9naW4gYSB1c2VyIHRoZSBjYWxsIHRvIGF1dGggd291bGQgYmU6PC9wPg0KKwkJCTxwPlNhbXBsZSBVUkw6IDwvcD48YSBocmVmPSJodHRwOi8vZGVtby5vcGVubWVldGluZ3MuZGUvb3Blbm1lZXRpbmdzL3NlcnZpY2VzL1VzZXJTZXJ2aWNlL2xvZ2luVXNlcj9TSUQ9MjY1ODQ3MDUyMDJkN2MxZGU2Y2M4ZTdlMjg4OTBlM2QmIzM4O3VzZXJuYW1lPWhhbnMmIzM4O3VzZXJwYXNzPXRlc3QiPmh0dHA6Ly9kZW1vLm9wZW5tZWV0aW5ncy5kZS9vcGVubWVldGluZ3Mvc2VydmljZXMvVXNlclNlcnZpY2UvbG9naW5Vc2VyP1NJRD0yNjU4NDcwNTIwMmQ3YzFkZTZjYzhlN2UyODg5MGUzZCYjMzg7dXNlcm5hbWU9aGFuJiMzODt1c2VycGFzcz10ZXN0PC9hPg0KKwkJCTxwPlJlc3VsdDogPC9wPg0KKwkJCTxkaXYgY2xhc3M9InhtbGNvZGUiPg0KKwkJCQkmbHQ7bnM6bG9naW5Vc2VyUmVzcG9uc2UvJmd0Ozxici8+DQorCQkJCTxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjIwcHgiPg0KKwkJCQkgICAgJmx0O25zOnJldHVybiYjNjI7LTExJmx0Oy9uczpyZXR1cm4vJmd0Ozxici8+DQorCQkJCTwvZGl2Pg0KKwkJCQkmbHQ7L25zOmxvZ2luVXNlclJlc3BvbnNlLyZndDs8YnIvPg0KKwkJCTwvZGl2Pg0KKwkJCTxwPj0+IEl0IGRvZXMgcmV0dXJuIC0xMCwgd2hpY2ggaXMgdGhlIGVycm9yIGlkIGNhdXNlIHdlIHdpbGwgbm90IHdyaXRlIGRvd24gYSBTT0FQIGxvZ2luIHRvIG91ciBwdWJsaWMgc2VydmVyIGluIHRoaXMgd2lraS4gSG93ZXZlciB0aGUgY29ycmVjdCB3YXkgdG8gY2hlY2sgdGhpcyBlcnJvciB3b3VsZCBiZSB0byBpbnZva2UgdGhlIGNhbGwgdG8gZ2V0IHRoZSBsb2NhbGl6ZWQgZXJyb3IgbWVzc2FnZS4gU28gd2UgaW52b2tlIHRoZSBtZXRob2QgdG8gZ2V0IHRoZSBlcnJvciB2aWEgUkVTVDo8L3A+DQorCQkJPHA+U2FtcGxlIFVSTDogPC9wPjxhIGhyZWY9Imh0dHA6Ly9kZW1vLm9wZW5tZWV0aW5ncy5kZS9vcGVubWVldGluZ3Mvc2VydmljZXMvVXNlclNlcnZpY2UvZ2V0RXJyb3JCeUNvZGU/U0lEPTI2NTg0NzA1MjAyZDdjMWRlNmNjOGU3ZTI4ODkwZTNkJiMzODtlcnJvcmlkPS0xMCYjMzg7bGFuZ3VhZ2VfaWQ9MSI+aHR0cDovL2RlbW8ub3Blbm1lZXRpbmdzLmRlL29wZW5tZWV0aW5ncy9zZXJ2aWNlcy9Vc2VyU2VydmljZS9nZXRFcnJvckJ5Q29kZT9TSUQ9MjY1ODQ3MDUyMDJkN2MxZGU2Y2M4ZTdlMjg4OTBlM2QmIzM4O2Vycm9yaWQ9LTEwJiMzODtsYW5ndWFnZV9pZD0xPC9hPg0KKwkJCTxwPlJlc3VsdDo8L3A+DQorCQkJPGRpdiBjbGFzcz0ieG1sY29kZSI+DQorCQkJCSZsdDtuczpnZXRFcnJvckJ5Q29kZVJlc3BvbnNlLyZndDs8YnIvPg0KKwkJCQkmbHQ7bnM6cmV0dXJuIHR5cGU9Im9yZy5hcGFjaGUub3Blbm1lZXRpbmdzLmRhdGEuYmVhbnMuYmFzaWMuRXJyb3JSZXN1bHQiLyZndDs8YnIvPg0KKwkJCQk8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDoyMHB4Ij4NCisJCQkJCSZsdDtheDIxODplcnJtZXNzYWdlJiM2MjtVc2VybmFtZSBub3QgZm91bmQmbHQ7L2F4MjE4OmVycm1lc3NhZ2UvJmd0Ozxici8+DQorCQkJCQkmbHQ7YXgyMTg6ZXJyb3JJZCYjNjI7LTEwJmx0Oy9heDIxODplcnJvcklkLyZndDs8YnIvPg0KKwkJCQkJJmx0O2F4MjE4OmVycm9ydHlwZSYjNjI7RXJyb3ImbHQ7L2F4MjE4OmVycm9ydHlwZS8mZ3Q7PGJyLz4NCisJCQkJPC9kaXY+DQorCQkJCSZsdDsvbnM6cmV0dXJuLyZndDs8YnIvPg0KKwkJCQkmbHQ7L25zOmdldEVycm9yQnlDb2RlUmVzcG9uc2UvJmd0Ozxici8+DQorCQkJPC9kaXY+DQorCQk8L3NlY3Rpb24+DQorDQorDQorDQorCTwvYm9keT4NCis8L2RvY3VtZW50PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3hkb2NzL1Jlc3RyaWN0ZWRBY2Nlc3MueG1sIGIveGRvY3MvUmVzdHJpY3RlZEFjY2Vzcy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTExNTYwNAotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL1Jlc3RyaWN0ZWRBY2Nlc3MueG1sCkBAIC0wLDAgKzEsODAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPCEtLQ0KKyAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisNCisgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorDQorICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAtLT4NCis8ZG9jdW1lbnQ+DQorDQorCTxwcm9wZXJ0aWVzPg0KKwkJPHRpdGxlPkhvdyB0byByZXN0cmljdCBhY2Nlc3MgdG8geW91ciBPcGVubWVldGluZ3Mgc2VydmVyPC90aXRsZT4NCisJCTxhdXRob3IgZW1haWw9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+DQorCQkJT3Blbk1lZXRpbmdzIFRlYW0NCisJCTwvYXV0aG9yPg0KKwk8L3Byb3BlcnRpZXM+DQorDQorCTxib2R5Pg0KKwkNCisJCTxzZWN0aW9uIG5hbWU9IlNlcnZlciBTaWRlIj4NCisJDQorCQkJPHA+WW91IGNhbiBwcm90ZWN0IHlvdXIgT3Blbk1lZXRpbmdzIGluc3RhbmNlIGZyb20gYmVlaW5nIGFjY2Vzc2VkDQorCQkJCWZyb20gM3RoIHBhcnR5IGJ5IHVzaW5nIHRoZSBmaWxlOg0KKwkJCTwvcD4NCisJCQk8cD4kUkVENV9IT01FL3dlYmFwcHMvb3Blbm1lZXRpbmdzL1dFQi1JTkYvcmVkNS13ZWIucHJvcGVydGllcyA8L3A+DQorCQkJPHA+Q29udGVudDogPC9wPg0KKwkJCTxkaXYgY2xhc3M9InhtbGNvZGUiPg0KKwkJCQl3ZWJhcHAudmlydHVhbEhvc3RzPSosbG9jYWxob3N0LCAxMjcuMC4wLjENCisJCQk8L2Rpdj4NCisJCQlTYW1wbGUgZmlsZToNCisJCQk8YQ0KKwkJCQlocmVmPSJodHRwOi8vc3ZuLmFwYWNoZS5vcmcvdmlld3ZjL29wZW5tZWV0aW5ncy90cnVuay9zaW5nbGV3ZWJhcHAvV2ViQ29udGVudC9XRUItSU5GL3JlZDUtd2ViLnByb3BlcnRpZXMiDQorCQkJCXJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9zdm4uYXBhY2hlLm9yZy92aWV3dmMvb3Blbm1lZXRpbmdzL3RydW5rL3NpbmdsZXdlYmFwcC9XZWJDb250ZW50L1dFQi1JTkYvcmVkNS13ZWIucHJvcGVydGllcw0KKwkJCTwvYT4NCisJCTwvc2VjdGlvbj4NCisNCisJCTxzZWN0aW9uIG5hbWU9IkNsaWVudCBTaWRlIj4NCisNCisJCQk8cD5BbmQgeW91IGNhbiByZXN0cmljdCB0aGUgYWNjZXNzIGFsc28gZm9yIHRoZSBjbGllbnQgc2lkZTogRXZlcnkNCisJCQkJRmxhc2ggUGx1Z2luIHdpbGwgY2hlY2sgYSBmaWxlIGNhbGxlZCAiY3Jvc3Nkb21haW4ueG1sIiBiZWZvcmUgaXQNCisJCQkJdHJpZXMgdG8gYWNjZXNzIHRoZSBzZXJ2ZXIgdXNpbmcgcnRtcC9SUEMuIFRoaXMgZmlsZSBpcyBsb2NhdGVkOiA8L3A+DQorCQkJPHA+JFJFRDVfSE9NRS93ZWJhcHBzL3Jvb3QvY3Jvc3Nkb21haW4ueG1sIDwvcD4NCisJCQk8cD5Db250ZW50OiA8L3A+DQorCQkJPGRpdiBjbGFzcz0ieG1sY29kZSI+DQorCQkJCSZsdDs/eG1sIHZlcnNpb249IjEuMCI/Jmd0Ozxici8+DQorCQkJCSZsdDtjcm9zcy1kb21haW4tcG9saWN5Jmd0Ozxici8+DQorCQkJCSAgICAgICAgJmx0O3NpdGUtY29udHJvbCBwZXJtaXR0ZWQtY3Jvc3MtZG9tYWluLXBvbGljaWVzPSJhbGwiLyZndDs8YnIvPg0KKwkJCQkgICAgICAgICZsdDthbGxvdy1hY2Nlc3MtZnJvbSBkb21haW49ImxvY2FsaG9zdCIgdG8tcG9ydHM9IjIwLTY1NTM1Ii8mZ3Q7PGJyLz4NCisJCQkJICAgICAgICAmbHQ7YWxsb3ctYWNjZXNzLWZyb20gZG9tYWluPSIqLmxvY2FsIiB0by1wb3J0cz0iMjAtNjU1MzUiLyZndDs8YnIvPg0KKwkJCQkmbHQ7L2Nyb3NzLWRvbWFpbi1wb2xpY3kmZ3Q7PGJyLz4NCisJCQk8L2Rpdj4NCisJCQkNCisgICAgICAgICAgICA8cD4NCisJCQkJU2FtcGxlIGZpbGU6DQorCQkJCTxhDQorCQkJCQlocmVmPSJodHRwOi8vY29kZS5nb29nbGUuY29tL3AvcmVkNS9zb3VyY2UvYnJvd3NlL2phdmEvc2VydmVyL3RydW5rL3dlYmFwcHMvcm9vdC9jcm9zc2RvbWFpbi54bWwiDQorCQkJCQlyZWw9Im5vZm9sbG93Ij5odHRwOi8vY29kZS5nb29nbGUuY29tL3AvcmVkNS9zb3VyY2UvYnJvd3NlL2phdmEvc2VydmVyL3RydW5rL3dlYmFwcHMvcm9vdC9jcm9zc2RvbWFpbi54bWwNCisJCQkJPC9hPg0KKwkJCTwvcD4NCisJCQkJPHA+DQorCQkJCQlJZiB5b3UgYWNjZXNzaW5nIHlvdXIgYXBwbGljYXRpb24gYmVoaW5kIGFuIEFwYWNoZSBXZWJzZXJ2cmUgKHVzaW5nDQorCQkJCQltb2RfcHJveHkgb3IgbW9kX2prMikgYmUgY2FyZWZ1bCB0byBtYWtlIHRoZSBjcm9zc2RvbWFpbi54bWwNCisJCQkJCWFjY2Vzc2libGUuIEZsYXNoIHdpbGwgYWx3YXlzIHNlYXJjaCBmb3IgdGhpcyBmaWxlIGluIHRoZSB3d3ctcm9vdA0KKwkJCQkJZGlyZWN0b3J5IG9mIGV2ZXJ5IFVSTCB5b3UgY29ubmVjdCB0by4gWW91IG1pZ2h0IHVzZQ0KKwkJCQkJPGEgaHJlZj0iaHR0cHM6Ly9hZGRvbnMubW96aWxsYS5vcmcvZGUvZmlyZWZveC9hZGRvbi9maXJlYnVnLyIgcmVsPSJub2ZvbGxvdyI+RmlyZUJ1Zw0KKwkJCQkJPC9hPg0KKwkJCQkJZm9yIGV4YW1wbGUgdG8gbG9va3VwIHJlcXVlc3RzLg0KKwkJCQk8L3A+DQorDQorCQk8L3NlY3Rpb24+DQorDQorCTwvYm9keT4NCisNCis8L2RvY3VtZW50PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3hkb2NzL1Nha2FpUGx1Z2luLnhtbCBiL3hkb2NzL1Nha2FpUGx1Z2luLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjM3MWRhCi0tLSAvZGV2L251bGwKKysrIGIveGRvY3MvU2FrYWlQbHVnaW4ueG1sCkBAIC0wLDAgKzEsMTEyIEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0NCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorDQorICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKw0KKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgLS0+DQorPGRvY3VtZW50Pg0KKw0KKwk8cHJvcGVydGllcz4NCisJCTx0aXRsZT5TYWthaSBQbHVnaW48L3RpdGxlPg0KKwkJPGF1dGhvciBlbWFpbD0ic2ViYXdhZ25lckBhcGFjaGUub3JnIj4NCisJCQlPcGVuTWVldGluZ3MgVGVhbQ0KKwkJPC9hdXRob3I+DQorCTwvcHJvcGVydGllcz4NCisNCisJPGJvZHk+DQorDQorCQk8c2VjdGlvbiBuYW1lPSJJbnRyb2R1Y3Rpb24iPg0KKwkJCTxwPg0KKwkJCQlJbiAyMDEwLA0KKwkJCQk8YSByZWw9Im5vZm9sbG93IiBocmVmPSJodHRwOi8vd3d3LnNhbW9vLmVzIiB0YXJnZXQ9Il9ibGFuayI+U2Ftb28gY29tcGFueQ0KKwkJCQk8L2E+DQorCQkJCWhhcyBkZXZlbG9wZWQgYSBwbHVnaW4gdGhhdCBpbnRlZ3JhdGVzIFNha2FpIExNUyBhbmQgT3Blbk1lZXRpbmdzDQorCQkJCS4NCisJCQk8L3A+DQorCQkJPHA+DQorCQkJCVRoZSBwbHVnaW4gd2FzIGRldmVsb3BlZCBmb3Igc29tZSBTcGFuaXNoIFVuaXZlcnNpdGllcyB0aGF0IHVzZQ0KKwkJCQlTYWthaSBhbmQgYmVsb25ncyB0bw0KKwkJCQk8YSByZWw9Im5vZm9sbG93IiB0YXJnZXQ9Il9ibGFuayIgDQorCQkJCQlocmVmPSJodHRwczovL2NvbmZsdWVuY2Uuc2FrYWlwcm9qZWN0Lm9yZy9kaXNwbGF5L1NQQU5JU0gvUzJHKy0rU3BhbmlzaCtTYWthaStHcm91cCI+IlNwYW5pc2ggU2FrYWkgVW5pdmVyc2l0aWVzIjwvYT4NCisJCQkJZ3JvdXA6DQorCQkJPC9wPg0KKwkJCTx1bD4NCisJCQkJPGxpPg0KKwkJCQkJPGEgcmVsPSJub2ZvbGxvdyIgaHJlZj0iaHR0cDovL3d3dy51ZGwuZXMvIiB0YXJnZXQ9Il9ibGFuayI+VW5pdmVyc2l0YXQgZGUgTGxlaWRhIDwvYT4NCisJCQkJPC9saT4NCisJCQkJPGxpPg0KKwkJCQkJPGEgcmVsPSJub2ZvbGxvdyIgaHJlZj0iaHR0cDovL3d3dy51cHYuZXMvIiB0YXJnZXQ9Il9ibGFuayI+VW5pdmVyc2lkYWQgUG9saXQmIzIzMztjbmljYSBkZSBWYWxlbmNpYSA8L2E+DQorCQkJCTwvbGk+DQorCQkJCTxsaT4NCisJCQkJCTxhIHJlbD0ibm9mb2xsb3ciIGhyZWY9Imh0dHA6Ly93d3cudW0uZXMvIiB0YXJnZXQ9Il9ibGFuayI+VW5pdmVyc2lkYWQgZGUgTXVyY2lhPC9hPg0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+DQorCQkJCQk8YSByZWw9Im5vZm9sbG93IiBocmVmPSJodHRwOi8vd3d3LnVuYXZhcnJhLmVzLyIgdGFyZ2V0PSJfYmxhbmsiPlVuaXZlcnNpZGFkIFAmIzI1MDtibGljYSBkZSBOYXZhcnJhPC9hPg0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+DQorCQkJCQk8YSByZWw9Im5vZm9sbG93IiBocmVmPSJodHRwOi8vd3d3LnVjYW0uZWR1LyIgdGFyZ2V0PSJfYmxhbmsiPlVuaXZlcnNpZGFkIENhdCYjMjQzO2xpY2EgU2FuIEFudG9uaW8gZGUgTXVyY2lhDQorCQkJCQk8L2E+DQorCQkJCTwvbGk+DQorCQkJPC91bD4NCisJCTwvc2VjdGlvbj4NCisNCisJCTxzZWN0aW9uIG5hbWU9IkZlYXR1cmVzIj4NCisJCQk8cD5UaGUgcGx1Z2luIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgZmVhdHVyZXM6IDwvcD4NCisJCQk8dWw+DQorCQkJCTxsaT5DcmVhdGUgdmlkZW9jb25mZXJlbmNlIHJvb21zIHRocm91Z2ggU2FrYWk6IDwvbGk+DQorCQkJCTxsaT4NCisJCQkJCTxvbD4NCisJCQkJCQk8bGk+SW50ZWdyYXRlZCB3aXRoIGNhbGVuZGFyIDwvbGk+DQorCQkJCQkJPGxpPkludGVncmF0ZWQgd2l0aCBhbm5vdW5jZW1lbnRzIDwvbGk+DQorCQkJCQkJPGxpPlNlbmRzIGFuIGVtYWlsIHRvIGFsbCBzaXRlIHBhcnRpY2lwYW50cyA8L2xpPg0KKwkJCQkJCTxsaT5Sb29tcyByZXN0cmljdGVkIHRvIHNpdGUgZ3JvdXBzIDwvbGk+DQorCQkJCQkJPGxpPkNvbmZpZ3VyYWJsZSByb29tIHR5cGUgPC9saT4NCisJCQkJCTwvb2w+DQorCQkJCTwvbGk+DQorCQkJPC91bD4NCisJCQk8cCAvPg0KKwkJCTx1bD4NCisJCQkJPGxpPkZ1dHVyZSByZXF1aXJlbWVudHMgPC9saT4NCisJCQkJPGxpPg0KKwkJCQkJPG9sPg0KKwkJCQkJCTxsaT5QdWJsaXNoIHJvb20gcmVjb3JkaW5ncyB0byBzdHVkZW50cyA8L2xpPg0KKwkJCQkJCTxsaT5Sb29tIHJlc2VydmF0aW9uIDwvbGk+DQorCQkJCQk8L29sPg0KKwkJCQk8L2xpPg0KKwkJCTwvdWw+DQorCQk8L3NlY3Rpb24+DQorDQorCQk8c2VjdGlvbiBuYW1lPSJTb3VyY2UiPg0KKwkJCTxwPg0KKwkJCQlZb3UgY2FuIGRvd25sb2FkIGFuZCBidWlsZCB0aGUgc291cmNlIGNvZGUNCisJCQkJPGEgcmVsPSJub2ZvbGxvdyIgdGFyZ2V0PSJfYmxhbmsiIA0KKwkJCQkJaHJlZj0iaHR0cHM6Ly9zb3VyY2Uuc2FrYWlwcm9qZWN0Lm9yZy9jb250cmliL3NhbW9vL2Fkb2JlY29ubmVjdHByby1vcGVubWVldGluZ3MtaW50ZWdyYXRpb24vdHJ1bmsvIj5oZXJlPC9hPg0KKwkJCTwvcD4NCisJCTwvc2VjdGlvbj4NCisNCisJCTxzZWN0aW9uIG5hbWU9Ikluc3RhbGxhdGlvbiBhbmQgZG9jdW1lbnRhdGlvbiI+DQorCQkJPHA+DQorCQkJCVRoZSBkb2N1bWVudGF0aW9uIHJlc2lkZXMgaW4gdGhlDQorCQkJCTxhIHJlbD0ibm9mb2xsb3ciIHRhcmdldD0iX2JsYW5rIiBocmVmPSJodHRwczovL2NvbmZsdWVuY2Uuc2FrYWlwcm9qZWN0Lm9yZy9kaXNwbGF5L09QRU5NVEcvSG9tZSI+U2FrYWkgY29uZmx1ZW5jZSBzcGFjZTwvYT4NCisJCQk8L3A+DQorCQkJPHA+DQorCQkJCVBsZWFzZSBjb250YWN0IHRoZSBtYWlsaW5nIGxpc3QgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24uIEZvcg0KKwkJCQljb21tZXJjaWFsIHN1cHBvcnQgeW91IGNhbiBhbHNvIGNvbnRhY3QNCisJCQkJPGEgcmVsPSJub2ZvbGxvdyIgaHJlZj0iaHR0cDovL3d3dy5zYW1vby5lcyIgdGFyZ2V0PSJfYmxhbmsiPlNhbW9vIGNvbXBhbnk8L2E+DQorCQkJCW9yIG90aGVyIGNvbXBhbmllcyBmcm9tIHRoZSBsaXN0IG9mDQorCQkJCTxhIGhyZWY9ImNvbW1lcmNpYWwtc3VwcG9ydC5odG1sIj5jb21tZXJjaWFsIHN1cHBvcnQ8L2E+DQorCQkJCS4NCisJCQk8L3A+DQorCQk8L3NlY3Rpb24+DQorDQorCTwvYm9keT4NCisNCis8L2RvY3VtZW50PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3hkb2NzL1NvYXBSZXN0QVBJLnhtbCBiL3hkb2NzL1NvYXBSZXN0QVBJLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMWM4ZDM1Ci0tLSAvZGV2L251bGwKKysrIGIveGRvY3MvU29hcFJlc3RBUEkueG1sCkBAIC0wLDAgKzEsMTA1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0NCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorDQorICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKw0KKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgLS0+DQorPGRvY3VtZW50Pg0KKw0KKwk8cHJvcGVydGllcz4NCisJCTx0aXRsZT5Ib21lPC90aXRsZT4NCisJCTxhdXRob3IgZW1haWw9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+DQorCQkJU2ViYXN0aWFuIFdhZ25lcg0KKwkJPC9hdXRob3I+DQorCTwvcHJvcGVydGllcz4NCisNCisJPGJvZHk+DQorDQorCQk8c2VjdGlvbiBuYW1lPSJBdmFpbGFibGUgV2ViU2VydmljZXMiPg0KKw0KKwkJCTxkaXY+DQorCQkJCTxkaXY+DQorCQkJCQk8YSBocmVmPSJVc2VyU2VydmljZS5odG1sIiB0YXJnZXQ9Il9CTEFOSyI+DQorCQkJCQkJPGI+VXNlclNlcnZpY2U8L2I+DQorCQkJCQk8L2E+DQorCQkJCQk8YnIgLz4NCisJCQkJCTxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjIwcHgiPg0KKwkJCQkJCTxpPlRoZSBTZXJ2aWNlIGNvbnRhaW5zIG1ldGhvZHMgdG8gbG9naW4gYW5kIGNyZWF0ZSBoYXNoIHRvDQorCQkJCQkJCWRpcmVjdGx5IGVudGVyDQorCQkJCQkJCWNvbmZlcmVuY2Ugcm9vbXMsIHJlY29yZGluZ3Mgb3IgdGhlIGFwcGxpY2F0aW9uIGluDQorCQkJCQkJCWdlbmVyYWwNCisJCQkJCQk8L2k+DQorCQkJCQk8L2Rpdj4NCisJCQkJPC9kaXY+DQorCQkJCTxkaXY+DQorCQkJCQk8YSBocmVmPSJSb29tU2VydmljZS5odG1sIiB0YXJnZXQ9Il9CTEFOSyI+DQorCQkJCQkJPGI+Um9vbVNlcnZpY2U8L2I+DQorCQkJCQk8L2E+DQorCQkJCQk8YnIgLz4NCisJCQkJCTxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjIwcHgiPg0KKwkJCQkJCTxpPlJvb21TZXJ2aWNlIGNvbnRhaW5zIG1ldGhvZHMgdG8gbWFuaXB1bGF0ZSByb29tcyBhbmQgY3JlYXRlDQorCQkJCQkJCWludml0YXRpb24gaGFzaA0KKwkJCQkJCTwvaT4NCisJCQkJCTwvZGl2Pg0KKwkJCQk8L2Rpdj4NCisJCQkJPGRpdj4NCisJCQkJCTxhIGhyZWY9IkZpbGVTZXJ2aWNlLmh0bWwiIHRhcmdldD0iX0JMQU5LIj4NCisJCQkJCQk8Yj5GaWxlU2VydmljZTwvYj4NCisJCQkJCTwvYT4NCisJCQkJCTxiciAvPg0KKwkJCQkJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6MjBweCI+DQorCQkJCQkJPGk+Q29udGFpbnMgbWV0aG9kcyB0byBpbXBvcnQgYW5kIHVwbG9hZCBmaWxlcyBpbnRvIHRoZSBGaWxlcw0KKwkJCQkJCQlzZWN0aW9uIG9mIHRoZQ0KKwkJCQkJCQljb25mZXJlbmNlIHJvb20gYW5kIHRoZSBwZXJzb25hbCBkcml2ZSBvZiBhbnkgdXNlcg0KKwkJCQkJCTwvaT4NCisJCQkJCTwvZGl2Pg0KKwkJCQk8L2Rpdj4NCisJCQkJPGRpdj4NCisJCQkJCTxhIGhyZWY9IkNhbGVuZGFyU2VydmljZS5odG1sIiB0YXJnZXQ9Il9CTEFOSyI+DQorCQkJCQkJPGI+Q2FsZW5kYXJTZXJ2aWNlPC9iPg0KKwkJCQkJPC9hPg0KKwkJCQkJPGJyIC8+DQorCQkJCQk8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDoyMHB4Ij4NCisJCQkJCQk8aT5DYWxlbmRhclNlcnZpY2UgY29udGFpbnMgbWV0aG9kcyB0byBjcmVhdGUsIGVkaXQgZGVsZXRlDQorCQkJCQkJCWNhbGVuZGFyIG1lZXRpbmdzDQorCQkJCQkJPC9pPg0KKwkJCQkJPC9kaXY+DQorCQkJCTwvZGl2Pg0KKwkJCQk8ZGl2Pg0KKwkJCQkJPGEgaHJlZj0iSmFiYmVyU2VydmljZS5odG1sIiB0YXJnZXQ9Il9CTEFOSyI+DQorCQkJCQkJPGI+SmFiYmVyU2VydmljZTwvYj4NCisJCQkJCTwvYT4NCisJCQkJCTxiciAvPg0KKwkJCQkJPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6MjBweCI+DQorCQkJCQkJPGk+VGhlIFNlcnZpY2UgY29udGFpbnMgbWV0aG9kcyBuZWNlc3NhcnkgZm9yIE9NIHRvIEphYmJlciBpbnRlZ3JhdGlvbi4NCisJCQkJCQlBbGwgbWV0aG9kcyBkb2Vzbid0IHJlcXVpcmUgYWRtaW4gcHJpdmlsZWdlcyB0byBnZXQgY2FsbGVkLg0KKwkJCQkJCTwvaT4NCisJCQkJCTwvZGl2Pg0KKwkJCQk8L2Rpdj4NCisJCQkJPGRpdj4NCisJCQkJCTxhIGhyZWY9IlNlcnZlclNlcnZpY2UuaHRtbCIgdGFyZ2V0PSJfQkxBTksiPg0KKwkJCQkJCTxiPlNlcnZlclNlcnZpY2U8L2I+DQorCQkJCQk8L2E+DQorCQkJCQk8YnIgLz4NCisJCQkJCTxkaXYgc3R5bGU9Im1hcmdpbi1sZWZ0OjIwcHgiPg0KKwkJCQkJCTxpPlRoZSBTZXJ2aWNlIGNvbnRhaW5zIG1ldGhvZHMgbmVjZXNzYXJ5IGZvciBPTSB0byBtYW5hZ2Ugc2VydmVycyANCisJCQkJCQlwYXJ0aWNpcGF0aW5nIGluIGNsdXN0ZXIuDQorCQkJCQkJQWxsIG1ldGhvZHMgZG9lcyByZXF1aXJlIGFkbWluIHByaXZpbGVnZXMgdG8gZ2V0IGNhbGxlZC4NCisJCQkJCQk8L2k+DQorCQkJCQk8L2Rpdj4NCisJCQkJPC9kaXY+DQorCQkJPC9kaXY+DQorDQorCQk8L3NlY3Rpb24+DQorDQorDQorCTwvYm9keT4NCis8L2RvY3VtZW50PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3hkb2NzL1N1Z2FyQ1JNUGx1Z2luLnhtbCBiL3hkb2NzL1N1Z2FyQ1JNUGx1Z2luLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hN2RkZDQwCi0tLSAvZGV2L251bGwKKysrIGIveGRvY3MvU3VnYXJDUk1QbHVnaW4ueG1sCkBAIC0wLDAgKzEsODcgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPCEtLQ0KKyAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisNCisgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorDQorICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAtLT4NCis8ZG9jdW1lbnQ+DQorDQorCTxwcm9wZXJ0aWVzPg0KKwkJPHRpdGxlPlN1Z2FyQ1JNIFBsdWdpbjwvdGl0bGU+DQorCQk8YXV0aG9yIGVtYWlsPSJldWdlbi5zY2h3ZXJ0QGdtYWlsLmNvbSI+DQorCQkJT3Blbk1lZXRpbmdzIFRlYW0NCisJCTwvYXV0aG9yPg0KKwk8L3Byb3BlcnRpZXM+DQorDQorCTxib2R5Pg0KKw0KKwkJPHNlY3Rpb24gbmFtZT0iU3VnYXJDUk0gUGx1Z2luIGZvciBPcGVuTWVldGluZ3MiPg0KKwkJCTxwPg0KKwkJCQlZb3UgY2FuIGdldCB0aGUgbGF0ZXN0IFZlcnNpb24gb2YgdGhlIFBsdWdpbiBmb3IgU3VnYXJDUk0gZnJvbSB0aGUNCisJCQkJPGEgaHJlZj0iZG93bmxvYWRzLmh0bWwiPmRvd25sb2FkczwvYT4NCisJCQkJLg0KKwkJCTwvcD4NCisJCQk8cD4NCisJCQkJWW91IGNhbiBmaW5kIHRoZSBPcGVuTWVldGluZ3MgUGx1Z2luIGFsc28gaW4gdGhlDQorCQkJCTxhIGhyZWY9Imh0dHA6Ly93d3cuc3VnYXJmb3JnZS5vcmcvcHJvamVjdHMvb3Blbm1lZXRpbmdzLyINCisJCQkJCXRhcmdldD0iX0JMQU5LIiByZWw9Im5vZm9sbG93Ij5TdWdhckNSTSBQbHVnaW4gZGF0YWJhc2U8L2E+DQorCQkJCS4NCisJCQk8L3A+DQorCQkJPHA+DQorCQkJCUEgZGVtbyB2ZXJzaW9uIG9mIHRoZSBTdWdhckNSTSBwbHVnaW4gaXMgYXZhaWxhYmxlIGF0DQorCQkJCTxhIGhyZWY9Imh0dHA6Ly9kZW1vLmUtc2Nod2VydC5kZS9zdWdhcmNybS8iIHRhcmdldD0iX0JMQU5LIiByZWw9Im5vZm9sbG93Ij5kZW1vLmUtc2Nod2VydC5kZTwvYT4NCisJCQkJLiBVc2VybmFtZTogZGVtbyBQYXNzd29yZDogRGVtb3VzZXI1NSANCisJCQk8L3A+DQorCQk8L3NlY3Rpb24+DQorCQkNCisJCTxzZWN0aW9uIG5hbWU9IkZlYXR1cmVzIj4NCisJCQk8cD5UaGUgcGx1Z2luIGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcgZmVhdHVyZXM6IDwvcD4NCisJCQk8dWw+DQorCQkJCTxsaT5DcmVhdGUgdmlkZW9jb25mZXJlbmNlIHJvb21zIHRocm91Z2ggU3VnYXJDUk06IDwvbGk+DQorCQkJCTxsaT4NCisJCQkJCTxvbD4NCisJCQkJCQk8bGk+SW50ZWdyYXRlZCB3aXRoIGNhbGVuZGFyIDwvbGk+DQorCQkJCQkJPGxpPkludGVncmF0ZWQgd2l0aCBTdWdhckNSTSBtZWV0aW5ncyA8L2xpPg0KKwkJCQkJCTxsaT5TZW5kcyBpbnZldGF0aW9ucyBlbWFpbHMgdG8gbWVldGluZyBwYXJ0aWNpcGFudHMgPC9saT4JCQkJCQ0KKwkJCQkJCTxsaT5Db25maWd1cmFibGUgcm9vbSB0eXBlIDwvbGk+DQorCQkJCQk8L29sPg0KKwkJCQk8L2xpPg0KKwkJCTwvdWw+CQkJDQorCQk8L3NlY3Rpb24+DQorDQorCQk8c2VjdGlvbiBuYW1lPSJJbnN0YWxsYXRpb24gdGhlIFN1Z2FyQ1JNIFBsdWdpbiBmb3IgT3Blbk1lZXRpbmdzIj4JCQkNCisJCQk8cD5JbiBTdWdhckNSTSdzIGFkbWluaXN0cmF0aW9uIHdlYi1pbnRlcmZhY2UgeW91IHdpbGwgZmluZCB0aGUNCisJCQkJbW9kdWxlIGxvYWRlci4NCisJCQk8L3A+DQorCQkJPGEgY2xhc3M9ImZhbmN5Ym94LWJ1dHRvbnMiIGhyZWY9ImltYWdlcy9tb29kbGVfcGx1Z2luX2NvbmZlcmVuY2UucG5nIj4NCisJCQkJPGltZyBzcmM9ImltYWdlcy9TdWdhckNSTV9JbnN0YWxsYXRpb24ucG5nIiBhbHQ9IiIgd2lkdGg9IjY0MCINCisJCQkJCWhlaWdodD0iMzIwIiAvPg0KKwkJCTwvYT4NCisJCQk8b2w+DQorCQkJCTxsaT5VcGxvYWQgdGhlIG1vZHVsZSB3aXRoIG1vZHVsZSBsb2FkZXIgaW4gYWRtaW5pc3RyYXRpb24gYXJlYS4gPC9saT4NCisJCQkJPGxpPkNvbmZpZ3VyZSBPcGVuTWVldGluZ3Mgc2V0dGluZ3MuIDwvbGk+DQorCQkJCTxsaT5DcmVhdGUgT3Blbk1lZXRpbmdzIHJvb21zLiA8L2xpPgkJCQkNCisJCQk8L29sPg0KKwkJPC9zZWN0aW9uPg0KKwkJDQorCQk8c2VjdGlvbiBuYW1lPSJEZW1vIHZpZGVvIj4JCQkNCisJCQk8cD5UaGUgZGVtbyB2aWRlbyBvZiBTdWdhckNSTSBwbHVnaW4gc2hvdyB5b3UgdGhlIHBsdWdpbiBpbiBhY3Rpb24gPC9wPiAgICAgICAgICAgICAgDQorCQkgICAgICA8b2JqZWN0IHN0eWxlPSJoZWlnaHQ6IDM5MHB4OyB3aWR0aDogNjQwcHgiPg0KKwkJCSAgICAgIDxwYXJhbSBuYW1lPSJtb3ZpZSIgdmFsdWU9Imh0dHA6Ly93d3cueW91dHViZS5jb20vdi94ckRiY1hxeERxOD92ZXJzaW9uPTMmYW1wO2ZlYXR1cmU9cGxheWVyX2RldGFpbHBhZ2UiLz4NCisJCQkgICAgICA8cGFyYW0gbmFtZT0iYWxsb3dGdWxsU2NyZWVuIiB2YWx1ZT0idHJ1ZSIvPg0KKwkJCSAgICAgIDxwYXJhbSBuYW1lPSJhbGxvd1NjcmlwdEFjY2VzcyIgdmFsdWU9ImFsd2F5cyIvPg0KKwkJCSAgICAgIDxlbWJlZCBzcmM9Imh0dHA6Ly93d3cueW91dHViZS5jb20vdi94ckRiY1hxeERxOD92ZXJzaW9uPTMmYW1wO2ZlYXR1cmU9cGxheWVyX2RldGFpbHBhZ2UiIHR5cGU9ImFwcGxpY2F0aW9uL3gtc2hvY2t3YXZlLWZsYXNoIiBhbGxvd2Z1bGxzY3JlZW49InRydWUiIGFsbG93U2NyaXB0QWNjZXNzPSJhbHdheXMiIHdpZHRoPSI2NDAiIGhlaWdodD0iMzYwIi8+DQorCQkgICAgICA8L29iamVjdD4gDQorCQk8L3NlY3Rpb24+DQorDQorCTwvYm9keT4NCisNCis8L2RvY3VtZW50PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3hkb2NzL1RpbWVab25lSGFuZGxpbmcueG1sIGIveGRvY3MvVGltZVpvbmVIYW5kbGluZy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmY4ZTg5ZQotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL1RpbWVab25lSGFuZGxpbmcueG1sCkBAIC0wLDAgKzEsOTYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPCEtLQ0KKyAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisNCisgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorDQorICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAtLT4NCis8ZG9jdW1lbnQ+DQorDQorCTxwcm9wZXJ0aWVzPg0KKwkJPHRpdGxlPlRpbWV6b25lczwvdGl0bGU+DQorCQk8YXV0aG9yIGVtYWlsPSJzZWJhd2FnbmVyQGFwYWNoZS5vcmciPg0KKwkJCU9wZW5NZWV0aW5ncyBUZWFtDQorCQk8L2F1dGhvcj4NCisJPC9wcm9wZXJ0aWVzPg0KKw0KKwk8Ym9keT4NCisNCisJCTxzZWN0aW9uIG5hbWU9IkludHJvZHVjdGlvbiI+DQorCQkJPHA+DQorCQkJCUxpc3Qgb2YgZGVmYXVsdCBUaW1lem9uZXM6DQorCQkJCTxhDQorCQkJCQlocmVmPSJodHRwOi8vb3Blbm1lZXRpbmdzLmdvb2dsZWNvZGUuY29tL3N2bi90cnVuay9zaW5nbGV3ZWJhcHAvV2ViQ29udGVudC9sYW5ndWFnZXMvdGltZXpvbmVzLnhtbCINCisJCQkJCXJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9vcGVubWVldGluZ3MuZ29vZ2xlY29kZS5jb20vc3ZuL3RydW5rL3NpbmdsZXdlYmFwcC9XZWJDb250ZW50L2xhbmd1YWdlcy90aW1lem9uZXMueG1sDQorCQkJCTwvYT4NCisJCQk8L3A+DQorCQkJPHA+DQorCQkJCVRvIGFkZCBhIG5ldyBUaW1lIFpvbmUgeW91IGhhdmUgdG8gbG9va3VwIGl0cyByZXByZXNhbnQgaW4gSmF2YSdzDQorCQkJCVRpbWV6b25lIHJlZ2lzdHJ5LiBZb3UgY2FuIHRoZW4gYWRkIGZyZWVseSBuZXcgdGltZSB6b25lcyB0byB0aGUgWE1MDQorCQkJCWZpbGUuIFRoZSBYTUwgZW50cmllcyBhcmUgaW1wb3J0ZWQgaW50byB0aGUgZGF0YWJhc2UgaW50byB0aGUgdGFibGUNCisJCQkJPHN0cm9uZz5vbV90aW1lem9uZTwvc3Ryb25nPg0KKwkJCQlkdXJpbmcgdGhlIGluc3RhbGxhdGlvbiBvZiBPcGVuTWVldGluZ3MuIChEb24ndCBmb3JnZXQgdG8gc3RvcCB0aGUNCisJCQkJc2VydmVyIGJlZm9yZSB5b3UgY2hhbmdlIGFueXRoaW5nIGluIHRoZSBkYXRhYmFzZSkuDQorCQkJPC9wPg0KKwkJCTxwPg0KKwkJCQlUaGUgU2VydmVycyBkZWZhdWx0IHRpbWV6b25lIGlzIHN0b3JlZCBpbiB0aGUgY29uZmlndXJhdGlvbiB0YWJsZSBpbg0KKwkJCQl0aGUgYXR0cmlidXRlDQorCQkJCTxzdHJvbmc+ZGVmYXVsdC50aW1lem9uZTwvc3Ryb25nPg0KKwkJCQkuIFRoZSBuYW1lIGluIHRoaXMgdmFsdWUgbGlua3MgdG8gYW4gYXR0cmlidXRlIGluIHRoZSB0YWJsZQ0KKwkJCQlvbV90aW1lem9uZSBpbiB0aGUgY29sdW1uDQorCQkJCTxzdHJvbmc+am5hbWU8L3N0cm9uZz4NCisJCQkJLg0KKwkJCTwvcD4NCisJCQk8cD4NCisJCQkJWW91IGNhbiBzZXQgYSBGbGFnDQorCQkJCTxzdHJvbmc+Zm9yY2VUaW1lWm9uZUNoZWNrPC9zdHJvbmc+DQorCQkJCWZvciBlYWNoIHVzZXIgdGhhdCBnaXZlcyBoaW0gYSBQb3AtVXAgbm90aWZpY2F0aW9uIHRvIGNoYW5nZSBoaXMNCisJCQkJdGltZSB6b25lLiBUaGUgRmxhZyBjYW4gYmUgY2hhbmdlZCBpbiB0aGUgdXNlciBhZG1pbmlzdHJhdGlvbiBvZg0KKwkJCQlPcGVuTWVldGluZ3MuIFRoaXMgY2FuIGJlIGhhbmR5IGlmIHlvdSB1cGRhdGUgZnJvbSBhIHByZXZpb3VzDQorCQkJCXZlcnNpb24gb2YgT3Blbk1lZXRpbmdzIHRvIG1ha2Ugc3VyZSB1c2VycyBzZWUgdGhlIG5ldyBmZWF0dXJlIGFuZA0KKwkJCQl1cGRhdGUgdGhlaXIgc2V0dGluZ3MuDQorCQkJPC9wPg0KKwkJCQ0KKwkJCQ0KKwkJCQ0KKwkJPC9zZWN0aW9uPg0KKwkJDQorCQk8c2VjdGlvbiBuYW1lPSJIb3cgdG8gbG9va3VwIHRpbWV6b25lJ3MiPg0KKwkJDQorCQkgIDxkaXYgY2xhc3M9InhtbGNvZGUiPg0KKwkJICANCisgICAgICAgICAgICAgICAgICAgIFN0cmluZ1tdIGlkcyA9IFRpbWVab25lLmdldEF2YWlsYWJsZUlEcygpOzxici8+DQorICAgICAgICAgICAgICAgICAgICBmb3IgKFN0cmluZyBpZCA6IGlkcykgezxici8+DQorICAgICAgICAgICAgICAgICAgICAgICAgDQorICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6MjBweCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgVGltZVpvbmUgdGltZVpvbmUgPSBUaW1lWm9uZS5nZXRUaW1lWm9uZShpZCk7PGJyLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAvL1RpbWVab25lIHRpbWVab25lID0gdGltZVJlZ2lzdHJ5LmdldFRpbWVab25lKGlkKTs8YnIvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxici8+DQorICAgICAgICAgICAgICAgICAgICAgICAgQ2FsZW5kYXIgY2FsID0gQ2FsZW5kYXIuZ2V0SW5zdGFuY2UoKTs8YnIvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBzdHlsZT0ibWFyZ2luLWxlZnQ6MjBweCI+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWwuc2V0VGltZVpvbmUodGltZVpvbmUpOzxici8+DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyArIGNhbC5nZXQoQ2FsZW5kYXIuRFNUX09GRlNFVCk8YnIvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IG9mZnNldCA9IGNhbC5nZXQoQ2FsZW5kYXIuWk9ORV9PRkZTRVQpOzxici8+DQorICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBvZmZzZXRJbk1pbnV0ZXMgPSBvZmZzZXQvMTAwMC82MDs8YnIvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigibmFtZSIgKyBpZCArICJuYW1lIG9mZnNldCAiK29mZnNldEluTWludXRlcysib2Zmc2V0ICIpOw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgICAgICAgICB9DQorCQkgIA0KKwkJICA8L2Rpdj4NCisJCSAgDQorCQkgIA0KKwkJPC9zZWN0aW9uPg0KKw0KKwk8L2JvZHk+DQorDQorPC9kb2N1bWVudD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS94ZG9jcy9VcGdyYWRlLnhtbCBiL3hkb2NzL1VwZ3JhZGUueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5Y2U5OTAKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9VcGdyYWRlLnhtbApAQCAtMCwwICsxLDg3IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0NCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorDQorICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKw0KKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgLS0+DQorPGRvY3VtZW50Pg0KKw0KKwk8cHJvcGVydGllcz4NCisJCTx0aXRsZT5VcGdyYWRlPC90aXRsZT4NCisJCTxhdXRob3IgZW1haWw9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+DQorCQkJT3Blbk1lZXRpbmdzIFRlYW0NCisJCTwvYXV0aG9yPg0KKwk8L3Byb3BlcnRpZXM+DQorDQorCTxib2R5Pg0KKw0KKwkJPHNlY3Rpb24gbmFtZT0iVXBncmFkaW5nIE9wZW5NZWV0aW5ncyB2aWEgdGhlIFdlYi1JbnRlcmZhY2UiPg0KKw0KKwkJCTxwPlRoZXJlIGlzIGEgU3lzdGVtIEJhY2t1cCBhbmQgSW1wb3J0IHRvb2wuIExvZ2luIGFzIEFkbWluaXN0cmF0b3INCisJCQkJYW5kIEdvdG8gPiBCYWNrdXANCisJCQk8L3A+DQorCQkJPGEgY2xhc3M9ImZhbmN5Ym94LWJ1dHRvbnMiIGhyZWY9ImltYWdlcy9iYWNrdXAucG5nIj4NCisJCQkJPGltZyBzcmM9ImltYWdlcy9iYWNrdXAucG5nIiBhbHQ9IiIgd2lkdGg9IjYwMCIgaGVpZ2h0PSIxNDUiIC8+DQorCQkJPC9hPg0KKwkJCTxwPg0KKwkJCQlUaGUgVGV4dCBpbiB0aGUgQWRtaW5pc3RyYXRpb24+QmFja3VwIHNlY3Rpb24gYWN0dWFsbHkganVzdCBzYXlzDQorCQkJCWl0DQorCQkJCWFsbC4gVGhlIGJhY2t1cCBjb250YWlucyB1c2Vycywgcm9vbXMsIG9yZ2FuaXphdGlvbnMgYW5kDQorCQkJCWFwcG9pbnRlbWVudHMgKEludml0YXRpb25zIGFuZCBSZW1pbmRlcnMgYXJlIE5PVCBpbmNsdWRlZCBpbiB0aGUNCisJCQkJQmFja3VwIGFuZCBSZW1pbmRlcnMgd2lsbCBub3QgYmUgc2VuZCBhZ2FpbiEpLiBUaGUgQmFja3VwIGNvbnRhaW5zDQorCQkJCWFsc28gYWxsIHVwbG9hZGVkIEZpbGVzIGFuZCBEb2N1bWVudHMgYW5kIHdpbGwgcmUtaW1wb3J0IHRoZW0gYWdhaW4uDQorDQorCQkJCU1heCBVcGxvYWQgU2l6ZSBpcyAxMDAwIE1CLg0KKwkJCTwvcD4NCisJCTwvc2VjdGlvbj4NCisNCisJCTxzZWN0aW9uIG5hbWU9IlVwZ3JhZGluZyBPcGVuTWVldGluZ3MgZnJvbSBjb21tYW5kIGxpbmUiPg0KKwkJCTxwPg0KKwkJCQk8aT5Zb3UgbmVlZCBPcGVuTWVldGluZ3MgMi54IG9yIGxhdGVyIHRvIGhhdmUgdGhlIGNvbW1hbmQgbGluZSBpbnRlcmZhY2UgKENMSSkgDQorCQkJCQlmZWF0dXJlIGF2YWlsYWJsZQ0KKwkJCQk8L2k+DQorCQkJPC9wPg0KKwkJCTxwPg0KKwkJCQlBbHRlcm5hdGl2ZWx5IHRvIHRoZSBXZWItSW5zdGFsbGVyIHlvdSBjYW4gYWxzbyBleHBvcnQgYW5kIGltcG9ydA0KKwkJCQl2aWEgdGhlIGNvbW1hbmQgbGluZS4gPGJyLz4NCisJCQkJPGI+WW91IHNob3VsZCBzaHV0ZG93biB0aGUgUmVkNS1TZXJ2aWNlIHdoaWxlIGRvaW5nIENMSSBleHBvcnQgb3IgaW1wb3J0IG9wZXJhdGlvbnM8L2I+DQorCQkJCTxiciAvPg0KKwkJCQlDZCB0byB5b3VyIHJlZDUtaG9tZSBkaXJlY3RvcnksIHR5cGUgImFkbWluIiBhbmQgaGl0IGVudGVyLiBZb3Ugd2lsbA0KKwkJCQlnZXQgb3B0aW9ucyBhdmFpbGFibGUuDQorCQkJCTxiciAvPg0KKwkJCQk8YnIgLz4NCisJCQkJQSB0eXBpY2FsIGV4cG9ydCB3b3VsZCBiZToNCisJCQkJPGJyIC8+DQorCQkJCTx0dD5hZG1pbiAtYiAtZmlsZSBiYWNrdXBfdG9kYXkuemlwPC90dD4NCisJCQkJPGJyIC8+DQorCQkJCTxiciAvPg0KKwkJCQlBIHR5cGljYWwgaW1wb3J0IHdvdWxkIGJlOg0KKwkJCQk8YnIgLz4NCisJCQkJPHR0PmFkbWluIC1yIC1maWxlIGJhY2t1cF95ZXN0ZXJkYXkuemlwPC90dD4NCisJCQkJPGJyIC8+DQorCQkJCTxiciAvPg0KKwkJCQlZb3UgY2FuIGFsc28gY29tYmluZSB0aGUgaW5zdGFsbGF0aW9uIHdpdGggYSBiYWNrdXAsIHRoYXQgd2F5IHlvdQ0KKwkJCQl3aWxsIGNyZWF0ZSBleGFjdGx5IHRoZSB1c2VyIHRhYmxlIHRoYXQgZXhpc3RlZCBpbiB0aGUgYmFja3VwLg0KKwkJCQk8YnIgLz4NCisJCQkJQSB0eXBpY2FsIGluc3RhbGwgZnJvbSBiYWNrdXAgd291bGQgYmU6DQorCQkJCTxiciAvPg0KKwkJCQk8dHQ+YWRtaW4gLWkgLWZpbGUgYmFja3VwX3llc3RlcmRheS56aXA8L3R0Pg0KKwkJCQk8YnIvPg0KKwkJCQlwbGVhc2Ugc2VlDQorCQkJCTxhIGhyZWY9IkNvbW1hbmRMaW5lQWRtaW4uaHRtbCIgdGFyZ2V0PSJfQkxBTksiIHJlbD0ibm9mb2xsb3ciPkNvbW1hbmQgTGluZSBBZG1pbg0KKwkJCQk8L2E+DQorCQkJCWZvciBtb3JlIG9wdGlvbnMNCisJCQk8L3A+DQorCQk8L3NlY3Rpb24+DQorDQorCTwvYm9keT4NCisNCis8L2RvY3VtZW50PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3hkb2NzL1dlYmFwcE5hbWVQYXRoLnhtbCBiL3hkb2NzL1dlYmFwcE5hbWVQYXRoLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTAyNDQxCi0tLSAvZGV2L251bGwKKysrIGIveGRvY3MvV2ViYXBwTmFtZVBhdGgueG1sCkBAIC0wLDAgKzEsMTg0IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0NCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorDQorICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKw0KKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgLS0+DQorPGRvY3VtZW50Pg0KKw0KKwk8cHJvcGVydGllcz4NCisJCTx0aXRsZT5XZWJhcHAgTmFtZSAvIFBhdGg8L3RpdGxlPg0KKwkJPGF1dGhvciBlbWFpbD0ic2ViYXdhZ25lckBhcGFjaGUub3JnIj4NCisJCQlPcGVuTWVldGluZ3MgVGVhbQ0KKwkJPC9hdXRob3I+DQorCTwvcHJvcGVydGllcz4NCisNCisJPGJvZHk+DQorDQorCQk8c2VjdGlvbiBuYW1lPSJDdXN0b21pemUgT3Blbm1lZXRpbmdzIGxvZ28iPg0KKwkJCTxwPklmIHlvdSB3YW50IHRvIHNldCB1cCB5b3VyIGxvZ28gaW4gT3Blbm1lZXRpbmdzIGhlYWRlciB5b3UgY2FuIGRvIHRoZSBmb2xsb3dpbmc6PC9wPg0KKwkJCTxvbD4NCisJCQkJPGxpPmNyZWF0ZSB5b3VyIGxvZ28gaW1hZ2UgYXMgUE5HIDQwcHggaGVpZ2h0PC9saT4NCisJCQkJPGxpPnJlcGxhY2UgPHR0Pi9vcHQvcmVkNS93ZWJhcHBzL29wZW5tZWV0aW5ncy9wdWJsaWMvdGhlbWVzL2Jhc2ljLXRoZW1lL2dlbmVyYWwvbG9nby5wbmc8L3R0PiB3aXRoIHlvdXIgbG9nbyBmaWxlPC9saT4NCisJCQkJPGxpPihBZHZhbmNlZCBvcHRpb25hbCkgeW91IGNhbiBtb2RpZnkgPHR0Pi9vcHQvcmVkNS93ZWJhcHBzL29wZW5tZWV0aW5ncy9jb25maWcueG1sPC90dD4gYW5kIG1vZGlmeSA8dHQ+YXBwZGlzcGxheTwvdHQ+IHNlY3Rpb246IHNldCBwb3NpdGlvbiBhbmQgZGlzcGxheSBmb3IgdGhlIGxvZ28gYW5kL29yIG5hbWU8L2xpPg0KKwkJCQk8bGk+KEFkdmFuY2VkIG9wdGlvbmFsKSB5b3UgY2FuIG1vZGlmeSA8dHQ+L29wdC9yZWQ1L3dlYmFwcHMvb3Blbm1lZXRpbmdzL2RlZmF1bHQtdGhlbWUueG1sPC90dD4gKGFyb3VuZCBsaW5lIDU3KSBhbmQgY2hhbmdlIGltYWdlIG5hbWUvcGF0aDwvbGk+DQorCQkJPC9vbD4NCisJCTwvc2VjdGlvbj4NCisJCTxzZWN0aW9uIG5hbWU9IlJlbmFtaW5nIC9vcGVubWVldGluZ3MgY29udGV4dCI+DQorCQkJPHA+DQorCQkJCUlmIHlvdSB3YW50IHRvIGhhdmUNCisJCQkJPHR0Pmh0dHA6Ly95b3VyY29ycC5jb206NTA4MC95b3VybWVldGluZ3M8L3R0Pg0KKwkJCQlpbnN0ZWFkIG9mDQorCQkJCTx0dD5odHRwOi8veW91cmNvcnAuY29tOjUwODAvb3Blbm1lZXRpbmdzPC90dD4NCisJCQkJeW91IG5lZWQgdG8gZG8gdGhlIGZvbGxvd2luZw0KKwkJCTwvcD4NCisJCQk8b2w+DQorCQkJCTxsaT5zdG9wIG9wZW5tbWV0aW5ncyBpZiBpdCBpcyBydW5uaW5nIDwvbGk+DQorCQkJCTxsaT4NCisJCQkJCWdvIHRvIG9wZW5tZWV0aW5ncyBpbnN0YWxsIGRpciAoZm9yIGV4Lg0KKwkJCQkJPHR0Pi9vcHQvcmVkNTwvdHQ+DQorCQkJCQkpDQorCQkJCTwvbGk+DQorCQkJCTxsaT4NCisJCQkJCXJlbmFtZQ0KKwkJCQkJPHR0Pi9vcHQvcmVkNS93ZWJhcHBzL29wZW5tZWV0aW5nczwvdHQ+DQorCQkJCQl0bw0KKwkJCQkJPHR0Pi9vcHQvcmVkNS93ZWJhcHBzL3lvdXJtZWV0aW5nczwvdHQ+DQorCQkJCQkoZm9yIGV4Lg0KKwkJCQkJPHR0Pm12IC9vcHQvcmVkNS93ZWJhcHBzL29wZW5tZWV0aW5ncw0KKwkJCQkJCS9vcHQvcmVkNS93ZWJhcHBzL3lvdXJtZWV0aW5ncw0KKwkJCQkJPC90dD4NCisJCQkJCSkNCisJCQkJPC9saT4NCisJCQkJPGxpPg0KKwkJCQkJb3Blbg0KKwkJCQkJPHR0Pi9vcHQvcmVkNS93ZWJhcHBzL3lvdXJtZWV0aW5ncy9jb25maWcueG1sPC90dD4NCisJCQkJCXVzaW5nIHlvdXIgZmF2b3JpdGUgdGV4dCBlZGl0b3IgKGZvciBleC4NCisJCQkJCTx0dD52aW0gL29wdC9yZWQ1L3dlYmFwcHMveW91cm1lZXRpbmdzL2NvbmZpZy54bWw8L3R0Pg0KKwkJCQkJKQ0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+DQorCQkJCQlmaW5kIGFuZCBtb2RpZnkNCisJCQkJCTx0dD4mbHQ7d2ViQXBwUm9vdEtleSZndDtvcGVubWVldGluZ3MmbHQ7L3dlYkFwcFJvb3RLZXkmZ3Q7PC90dD4NCisJCQkJCXRvIGJlDQorCQkJCQk8dHQ+Jmx0O3dlYkFwcFJvb3RLZXkmZ3Q7PC90dD4NCisJCQkJCTxzdHJvbmc+eW91cm1lZXRpbmdzPC9zdHJvbmc+DQorCQkJCQk8dHQ+Jmx0Oy93ZWJBcHBSb290S2V5Jmd0OzwvdHQ+DQorCQkJCTwvbGk+DQorCQkJCTxsaT4NCisJCQkJCWZpbmQgYW5kIG1vZGlmeQ0KKwkJCQkJPHR0PiZsdDtodHRwUm9vdEtleSZndDsvb3Blbm1lZXRpbmdzLyZsdDsvaHR0cFJvb3RLZXkmZ3Q7PC90dD4NCisJCQkJCXRvIGJlDQorCQkJCQk8dHQ+Jmx0O2h0dHBSb290S2V5Jmd0OzwvdHQ+DQorCQkJCQk8c3Ryb25nPi95b3VybWVldGluZ3MvPC9zdHJvbmc+DQorCQkJCQk8dHQ+Jmx0Oy9odHRwUm9vdEtleSZndDs8L3R0Pg0KKwkJCQk8L2xpPg0KKwkJCTwvb2w+DQorCQkJVGhhdCdzIGl0DQorCQk8L3NlY3Rpb24+DQorDQorCQk8c2VjdGlvbiBuYW1lPSJDaGFuZ2luZyBoYXJkLWNvZGVkIGFwcGxpY2F0aW9uIG5hbWUgaW4gc3RyaW5nIGxhYmVscyI+DQorCQkJPHA+DQorCQkJCVRvIGhhdmUNCisJCQkJPGk+WW91ciBBcHBsaWNhdGlvbiBOYW1lPC9pPg0KKwkJCQlpbnN0ZWFkIG9mDQorCQkJCTxpPk9wZW5tZWV0aW5nczwvaT4NCisJCQkJaW4NCisJCQkJPHN0cm9uZz5hbGw8L3N0cm9uZz4NCisJCQkJdGV4dCBsYWJlbHMgeW91IG5lZWQgdG8gZG8gdGhlIGZvbGxvd2luZw0KKwkJCTwvcD4NCisJCQk8b2w+DQorCQkJCTxsaT4NCisJCQkJCWVuc3VyZQ0KKwkJCQkJPHN0cm9uZz4NCisJCQkJCQk8dHQ+JEFQUF9OQU1FPC90dD4NCisJCQkJCTwvc3Ryb25nPg0KKwkJCQkJcGxhY2Vob2xkZXIgaXMgdXNlZCBpbg0KKwkJCQkJPGk+YWxsPC9pPg0KKwkJCQkJc3RyaW5ncyB5b3UgaGF2ZSBhZGRlZCBhbmQvb3IgbW9kaWZpZWQgKGFsbCBzdHJpbmdzIGJ1bmRsZWQgaW50bw0KKwkJCQkJT3Blbm1lZXRpbmdzIGFscmVhZHkgaGF2ZSB0aGlzIHBsYWNlaG9sZGVyKQ0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+bG9naW4gdG8gT3Blbm1lZXRpbmdzIGFzIHVzZXIgd2l0aCBhZG1pbmlzdHJhdG9yIHByaXZpbGVnZXMgPC9saT4NCisJCQkJPGxpPg0KKwkJCQkJZ28gdG8NCisJCQkJCTx0dD5BZG1pbmlzdHJhdGlvbiAtJmd0OyBDb25maWd1cmF0aW9uPC90dD4NCisJCQkJPC9saT4NCisJCQkJPGxpPg0KKwkJCQkJZmluZCBhbmQgZWRpdCBjb25maWd1cmF0aW9uIHdpdGggbmFtZQ0KKwkJCQkJPHN0cm9uZz4NCisJCQkJCQk8dHQ+YXBwbGljYXRpb24ubmFtZTwvdHQ+DQorCQkJCQk8L3N0cm9uZz4NCisJCQkJPC9saT4NCisJCQkJPGxpPg0KKwkJCQkJU2V0IGl0cyB2YWx1ZSB0byBiZQ0KKwkJCQkJPGk+DQorCQkJCQkJPHR0PllvdXIgQXBwbGljYXRpb24gTmFtZTwvdHQ+DQorCQkJCQk8L2k+DQorCQkJCTwvbGk+DQorCQkJCTxsaT4NCisJCQkJCTx0dD5TYXZlPC90dD4NCisJCQkJPC9saT4NCisJCQkJPGxpPnJlbG9hZCBwYWdlIG9yIHJlbG9naW4gPC9saT4NCisJCQk8L29sPg0KKwkJCTxwPg0KKwkJCUFsbCBzdHJpbmcgd2lsbCBkaXNwbGF5DQorCQkJPGk+DQorCQkJCTx0dD5Zb3VyIEFwcGxpY2F0aW9uIE5hbWU8L3R0Pg0KKwkJCTwvaT4NCisJCQlpbiBwbGFjZSBvZg0KKwkJCTxpPg0KKwkJCQk8dHQ+T3Blbm1lZXRpbmdzPC90dD4NCisJCQk8L2k+DQorCQkJPC9wPg0KKwkJCTxwPg0KKwkJCQlQbGVhc2UNCisJCQkJPGk+Tk9URTwvaT4NCisJCQkJdGhlcmUgYXJlIDMgYWRkaXRpb25hbCBwcm9wZXJ0aWVzIGluIHRoZSBjb25maWcueG1sIGZpbGUgd2hpY2gNCisJCQkJc2hvdWxkIGJlIG1vZGlmaWVkIGZvcg0KKwkJCQk8c3Ryb25nPlRPVEFMPC9zdHJvbmc+DQorCQkJCU9wZW5tZWV0aW5ncyBjbGVhbiB1cDoNCisJCQk8L3A+DQorCQkJPGRpdiBjbGFzcz0ieG1sY29kZSI+DQorCQkJCSZsdDtjdXJyZW50YXBwbmFtZSZndDtPcGVuTWVldGluZ3MmbHQ7L2N1cnJlbnRhcHBuYW1lJmd0Ow0KKwkJCQk8YnIgLz4NCisJCQkJJmx0O2N1cnJlbnRhcHBuYW1ldXJsJmd0O2h0dHA6Ly9vcGVubWVldGluZ3MuYXBhY2hlLm9yZyZsdDsvY3VycmVudGFwcG5hbWV1cmwmZ3Q7DQorCQkJCTxiciAvPg0KKwkJCQkmbHQ7Y3VycmVudGFwcG5hbWVidWd1cmwmZ3Q7aHR0cHM6Ly9pc3N1ZXMuYXBhY2hlLm9yZy9qaXJhL2Jyb3dzZS9PUEVOTUVFVElOR1MmbHQ7L2N1cnJlbnRhcHBuYW1lYnVndXJsJmd0Ow0KKwkJCQk8YnIgLz4NCisJCQk8L2Rpdj4NCisNCisJCTwvc2VjdGlvbj4NCisNCisJCTxzZWN0aW9uIG5hbWU9IlJ1bm5pbmcgbXVsdGlwbGUgT3Blbm1lZXRpbmdzIGluc3RhbmNlcyBvbiB0aGUgc2FtZSBzZXJ2ZXIiPg0KKwkJCTxwPg0KKwkJCQlJZiB5b3Ugd2FudCB0byBydW4gbXVsdGlwbGUgT3Blbm1lZXRpbmdzIGluc3RhbmNlcyBvbiB0aGUgc2FtZSBzZXJ2ZXIgaS5lLiB0byBoYXZlPGJyLz4gIA0KKwkJCQk8dHQ+aHR0cDovL3lvdXJjb3JwLmNvbTo1MDgwL29wZW5tZWV0aW5nczE8L3R0Pjxici8+IA0KKwkJCQk8dHQ+aHR0cDovL3lvdXJjb3JwLmNvbTo1MDgwL29wZW5tZWV0aW5nczI8L3R0Pjxici8+IGV0Yy48YnIvPiB5b3UgbmVlZCB0byBkbyB0aGUgZm9sbG93aW5nOg0KKwkJCTwvcD4NCisJCQk8b2w+DQorCQkJCTxsaT5lZGl0IDx0dD53ZWJhcHBzL29wZW5tZWV0aW5nczEvV0VCLUlORi9yZWQ1LXdlYi5wcm9wZXJ0aWVzPC90dD4gZm9yIDxzdHJvbmc+ZXZlcnk8L3N0cm9uZz4gT3Blbm1lZXRpbmdzIA0KKwkJCQlpbnN0YW5jZSBhbmQgYWRkIHRoZSBmb2xsb3dpbmcgbGluZSA8dHQ+d2ViYXBwLmNvbnRleHRQYXRoPS9vcGVubWVldGluZ3MxPC90dD4gIHRvIGl0IChjb250ZXh0IG9mIA0KKwkJCQk8c3Ryb25nPmV2ZXJ5PC9zdHJvbmc+IGluc3RhbmNlIDxzdHJvbmc+c2hvdWxkPC9zdHJvbmc+IG1hdGNoIHRoZSBmb2xkZXIgbmFtZSBpbiB3ZWJhcHBzIGRpcikNCisJCQkJPC9saT4NCisJCQkJPGxpPmluIGNhc2Ugb2YgamF2YSBtZW1vcnkgcHJvYmxlbXMgbW9kaWZ5IDx0dD5yZWQ1LnNoPC90dD4gYWRkIGZvbGxvd2luZyBsaW5lOjxici8+DQorCQkJCQk8ZGl2IGNsYXNzPSJ4bWxjb2RlIj4NCisJCQkJCWV4cG9ydCBKQVZBX09QVFM9Ii1YWDorQ01TQ2xhc3NVbmxvYWRpbmdFbmFibGVkIC1YWDorQ01TUGVybUdlblN3ZWVwaW5nRW5hYmxlZCAtWFg6TWF4UGVybVNpemU9MTI4TSINCisJCQkJCTwvZGl2Pg0KKwkJCQkJb3IgPHR0PnJlZDUuYmF0PC90dD46PGJyLz4NCisJCQkJCTxkaXYgY2xhc3M9InhtbGNvZGUiPg0KKwkJCQkJc2V0IEpBVkFfT1BUUz0tWFg6K0NNU0NsYXNzVW5sb2FkaW5nRW5hYmxlZCAtWFg6K0NNU1Blcm1HZW5Td2VlcGluZ0VuYWJsZWQgLVhYOk1heFBlcm1TaXplPTEyOE0NCisJCQkJCTwvZGl2Pg0KKwkJCQk8L2xpPg0KKwkJCTwvb2w+DQorCQk8L3NlY3Rpb24+DQorCTwvYm9keT4NCisNCis8L2RvY3VtZW50PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3hkb2NzL1dlYmNhbVJlc29sdXRpb25zLnhtbCBiL3hkb2NzL1dlYmNhbVJlc29sdXRpb25zLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xM2IyNmFhCi0tLSAvZGV2L251bGwKKysrIGIveGRvY3MvV2ViY2FtUmVzb2x1dGlvbnMueG1sCkBAIC0wLDAgKzEsNjEgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPCEtLQ0KKyAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisNCisgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorDQorICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAtLT4NCis8ZG9jdW1lbnQ+DQorDQorCTxwcm9wZXJ0aWVzPg0KKwkJPHRpdGxlPkhvdyB0byBjb25maWd1cmUgQ2FtZXJhIGRlZmF1bHQgcmVzb2x1dGlvbnMgPC90aXRsZT4NCisJCTxhdXRob3IgZW1haWw9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+DQorCQkJT3Blbk1lZXRpbmdzIFRlYW0NCisJCTwvYXV0aG9yPg0KKwk8L3Byb3BlcnRpZXM+DQorDQorCTxib2R5Pg0KKw0KKwkJPHNlY3Rpb24gbmFtZT0iSG93IHRvIGNvbmZpZ3VyZSBDYW1lcmEgZGVmYXVsdCByZXNvbHV0aW9ucyI+DQorDQorCQkJPHA+V2hlbiB5b3UgY2hvb3NlIHRoZSB3ZWJjYW0geW91IGhhdmUgZGlmZmVyZW50IHJlc29sdXRpb25zDQorCQkJCWF2YWlsYWJsZSB0aGUgdXNlciBjYW4gY2hvb3NlIGZyb20uIDwvcD4NCisJCQk8cD5Zb3UgY2FuIGFkZC9yZW1vdmUgcmVzb2x1dGlvbnMgYW5kIGFsc28gY2hhbmdlIHRoZSBkZWZhdWx0DQorCQkJCXNlbGVjdGlvbi4gSW4gdGhlIGNvbmZpZy54bWwgdGhlcmUgaXMgYSBzZWN0aW9uOiA8L3A+DQorCQkJPGRpdiBjbGFzcz0ieG1sY29kZSI+DQorCQkJCSZsdDthdmFpbGFibGVDYW1lcmFSZXNvbHV0aW9ucyZndDs8YnIvPg0KKwkJCQk8ZGl2IHN0eWxlPSJtYXJnaW4tbGVmdDoyMHB4Ij4NCisJCQkJICAgICZsdDtyZXNvbHV0aW9uIHR5cGU9IjQ6MyAofjYgS0J5dGUvc2VjKSIgd2lkdGg9IjQwIiBoZWlnaHQ9IjMwIiBpc0RlZmF1bHQ9ImZhbHNlIiAvJmd0Ozxici8+DQorCQkJCSAgICAmbHQ7cmVzb2x1dGlvbiB0eXBlPSI0OjMgKH4xMiBLQnl0ZS9zZWMpIiB3aWR0aD0iODAiIGhlaWdodD0iNjAiIGlzRGVmYXVsdD0iZmFsc2UiIC8mZ3Q7PGJyLz4NCisJCQkJICAgICZsdDtyZXNvbHV0aW9uIHR5cGU9IjQ6MyAofjIwIEtCeXRlL3NlYykiIHdpZHRoPSIxMjAiIGhlaWdodD0iOTAiIGlzRGVmYXVsdD0idHJ1ZSIgLyZndDs8YnIvPg0KKwkJCQkgICAgJmx0O3Jlc29sdXRpb24gdHlwZT0iUVFWR0EgNDozICh+MzYgS0J5dGUvc2VjKSIgd2lkdGg9IjE2MCIgaGVpZ2h0PSIxMjAiIGlzRGVmYXVsdD0iZmFsc2UiIC8mZ3Q7PGJyLz4NCisJCQkJICAgICZsdDtyZXNvbHV0aW9uIHR5cGU9IjQ6MyAofjQwIEtCeXRlL3NlYykiIHdpZHRoPSIyNDAiIGhlaWdodD0iMTgwIiBpc0RlZmF1bHQ9ImZhbHNlIiAvJmd0Ozxici8+DQorCQkJCSAgICAmbHQ7cmVzb2x1dGlvbiB0eXBlPSJIVkdBIDQ6MyAofjU2IEtCeXRlL3NlYykiIHdpZHRoPSIzMjAiIGhlaWdodD0iMjQwIiBpc0RlZmF1bHQ9ImZhbHNlIiAvJmd0Ozxici8+DQorCQkJCSAgICAmbHQ7cmVzb2x1dGlvbiB0eXBlPSI0OjMgICh+NjAgS0J5dGUvc2VjKSIgd2lkdGg9IjQ4MCIgaGVpZ2h0PSIzNjAiIGlzRGVmYXVsdD0iZmFsc2UiIC8mZ3Q7PGJyLz4NCisJCQkJICAgICZsdDtyZXNvbHV0aW9uIHR5cGU9IjQ6MyAofjY4IEtCeXRlL3NlYykiIHdpZHRoPSI2NDAiIGhlaWdodD0iNDgwIiBpc0RlZmF1bHQ9ImZhbHNlIiAvJmd0Ozxici8+DQorCQkJCSAgICAmbHQ7cmVzb2x1dGlvbiB0eXBlPSJYR0EgNDozIiB3aWR0aD0iMTAyNCIgaGVpZ2h0PSI3NjgiIGlzRGVmYXVsdD0iZmFsc2UiIC8mZ3Q7PGJyLz4NCisJCQkJICAgICZsdDtyZXNvbHV0aW9uIHR5cGU9IjE2OjkiIHdpZHRoPSIyNTYiIGhlaWdodD0iMTUwIiBpc0RlZmF1bHQ9ImZhbHNlIiAvJmd0Ozxici8+DQorCQkJCSAgICAmbHQ7cmVzb2x1dGlvbiB0eXBlPSJXUVZHQSA5OjUiIHdpZHRoPSI0MzIiIGhlaWdodD0iMjQwIiBpc0RlZmF1bHQ9ImZhbHNlIiAvJmd0Ozxici8+DQorCQkJCSAgICAmbHQ7cmVzb2x1dGlvbiB0eXBlPSJwc2V1ZG8gMTY6OSIgd2lkdGg9IjQ4MCIgaGVpZ2h0PSIyMzQiIGlzRGVmYXVsdD0iZmFsc2UiIC8mZ3Q7PGJyLz4NCisJCQkJICAgICZsdDtyZXNvbHV0aW9uIHR5cGU9IjE2OjkiIHdpZHRoPSI1MTIiIGhlaWdodD0iMzAwIiBpc0RlZmF1bHQ9ImZhbHNlIiAvJmd0Ozxici8+DQorCQkJCSAgICAmbHQ7cmVzb2x1dGlvbiB0eXBlPSJuSEQgMTY6OSIgd2lkdGg9IjY0MCIgaGVpZ2h0PSIzNjAiIGlzRGVmYXVsdD0iZmFsc2UiIC8mZ3Q7PGJyLz4NCisJCQkJICAgICZsdDtyZXNvbHV0aW9uIHR5cGU9IjE2OjkiIHdpZHRoPSIxMDI0IiBoZWlnaHQ9IjYwMCIgaXNEZWZhdWx0PSJmYWxzZSIgLyZndDs8YnIvPg0KKwkJCQkgICAgPC9kaXY+DQorCQkJCSZsdDsvYXZhaWxhYmxlQ2FtZXJhUmVzb2x1dGlvbnMmZ3Q7CQkJIA0KKwkJCTwvZGl2PgkNCisJCSAgICAgIA0KKwkJICAgIDxwPlRpcDogWW91IG1pZ2h0IGVkaXQgdGhlIGNvbmZpZy54bWwgd2l0aCBhbiBYTUwgYXdhcmUgZWRpdG9yIHRoYXQgY29ycmVjdGx5IA0KKwkJICAgIGhhbmRsZXMgdGhlIFhTRCBkZWZpbnRpb24gdG8gYXZvaWQgbWlzY29uZmlndXJhdGlvbi4gVGhlIG9wZW5tZWV0aW5ncy1jb25maWcueHNkIA0KKwkJICAgIGlzIGluIHRoZSBzYW1lIGZvbGRlciBsaWtlIHRoZSBjb25maWcueG1sLiA8L3A+DQorCQk8L3NlY3Rpb24+DQorDQorCTwvYm9keT4NCisNCis8L2RvY3VtZW50PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3hkb2NzL1dlYnNpdGVHdWlkZS54bWwgYi94ZG9jcy9XZWJzaXRlR3VpZGUueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1ZWE0OTMKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9XZWJzaXRlR3VpZGUueG1sCkBAIC0wLDAgKzEsMTE4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/Pg0KKzwhLS0NCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCisgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQorICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0DQorDQorICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMA0KKw0KKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUNCisgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLA0KKyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQNCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4NCisgLS0+DQorPGRvY3VtZW50Pg0KKw0KKwk8cHJvcGVydGllcz4NCisJCTx0aXRsZT5SZWxlYXNlIEd1aWRlPC90aXRsZT4NCisJCTxhdXRob3IgZW1haWw9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+DQorCQkJT3Blbk1lZXRpbmdzIFRlYW0NCisJCTwvYXV0aG9yPg0KKwk8L3Byb3BlcnRpZXM+DQorDQorCTxib2R5Pg0KKw0KKwkJPHNlY3Rpb24gbmFtZT0iSG93IHRvIHVwZGF0ZSBBcGFjaGUgT3Blbk1lZXRpbmdzIHdlYnNpdGUiPg0KKw0KKwkJCTxzdWJzZWN0aW9uIG5hbWU9IlJlcXVpcmVkIHRvb2xzIj4NCisJCQkJPGRpdj4NCisJCQkJCTx1bD4NCisJCQkJCQk8bGk+U3VuIEpESzY8L2xpPg0KKwkJCQkJCTxsaT5BcGFjaGUgQU5UICgxLjggb3IgbGF0ZXIpPC9saT4NCisJCQkJCTwvdWw+DQorCQkJCTwvZGl2Pg0KKwkJCTwvc3Vic2VjdGlvbj4NCisJCQkNCisJCQk8c3Vic2VjdGlvbiBuYW1lPSJJbnRyb2R1Y3Rpb24iPg0KKwkJCQk8ZGl2Pg0KKwkJCQkJPHA+DQorCQkJCQkJVGhlIEFwYWNoZSBPcGVuTWVldGluZ3MgSFRNTCB3ZWJzaXRlcyBhcmUgZ2VuZXJhdGVkIGZyb20gWE1MIGZpbGVzLiANCisJCQkJCQlZb3UgZWRpdCB0aGUgWE1MIGZpbGVzLCBydW4gdGhlIEFOVCBjb21tYW5kICJhbnQgYW5ha2lhIiB0aGF0IGdlbmVyYXRlcyB0aGUgSFRNTCBmaWxlcyANCisJCQkJCQlhbmQgdGhlbiB5b3UgY2hlY2tpbiB0byBTVk4gYm90aDogWE1MIGFuZCBIVE1MIGZpbGVzLg0KKwkJCQkJPC9wPg0KKwkJCQkJPHA+DQorCQkJCQkJVGhlIHdlYnNpdGUgaXRzZWxmIHVzZXMgSlF1ZXJ5IHRvIGdlbmVyYXRlIHRoZSBtZW51LCB0aGUgcG9wIGltYWdlcyBhbmQgdGhlIGltYWdlIHNsaWRlciBhdCB0aGUgbGFuZGluZyBwYWdlLg0KKwkJCQkJPC9wPg0KKwkJCQk8L2Rpdj4NCisJCQk8L3N1YnNlY3Rpb24+DQorDQorCQkJPHN1YnNlY3Rpb24gbmFtZT0iRWRpdGluZyB0aGUgd2Vic2l0ZSI+DQorCQkJCTxkaXY+DQorCQkJCQk8cD4NCisJCQkJCQlPcGVuTWVldGluZ3Mgd2Vic2l0ZSAoDQorCQkJCQkJPGEgaHJlZj0iaHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnLyI+aHR0cDovL29wZW5tZWV0aW5ncy5hcGFjaGUub3JnLzwvYT4NCisJCQkJCQkpIGlzIGEgY29weSBmcm9tIHRoZSBTVk4gcmVwb3NpdG9yeS4NCisJCQkJCQk8YnIgLz4NCisJCQkJCQlUaGUgZmlsZSBpbiB0aGUgU1ZOIHRvIGJlIHN5bmNlZCBhcmUgYXQ6DQorCQkJCQkJPGJyIC8+DQorCQkJCQkJPGENCisJCQkJCQkJaHJlZj0iaHR0cDovL3N2bi5hcGFjaGUub3JnL3JlcG9zL2FzZi9vcGVubWVldGluZ3MvdHJ1bmsvc2luZ2xld2ViYXBwL2RvY3MvIj5odHRwOi8vc3ZuLmFwYWNoZS5vcmcvcmVwb3MvYXNmL29wZW5tZWV0aW5ncy90cnVuay9zaW5nbGV3ZWJhcHAvZG9jcy8NCisJCQkJCQk8L2E+DQorCQkJCQkJPGJyLz5hbmQ8YnIvPg0KKwkJCQkJCTxhDQorCQkJCQkJCWhyZWY9Imh0dHA6Ly9zdm4uYXBhY2hlLm9yZy9yZXBvcy9hc2Yvb3Blbm1lZXRpbmdzL3RydW5rL3NpbmdsZXdlYmFwcC94ZG9jcy8iPmh0dHA6Ly9zdm4uYXBhY2hlLm9yZy9yZXBvcy9hc2Yvb3Blbm1lZXRpbmdzL3RydW5rL3NpbmdsZXdlYmFwcC94ZG9jcy8NCisJCQkJCQk8L2E+DQorCQkJCQk8L3A+DQorCQkJCQkNCisJCQkJCTxkaXY+DQorCQkJCQkJVG8gdXBkYXRlIHRoZSB3ZWJzaXRlIHlvdSBjaGVja291dCB0cnVuazoNCisJCQkJCQk8YnIgLz4NCisJCQkJCQk8YQ0KKwkJCQkJCQlocmVmPSJodHRwczovL3N2bi5hcGFjaGUub3JnL3JlcG9zL2FzZi9vcGVubWVldGluZ3MvdHJ1bmsvc2luZ2xld2ViYXBwLyI+aHR0cHM6Ly9zdm4uYXBhY2hlLm9yZy9yZXBvcy9hc2Yvb3Blbm1lZXRpbmdzL3RydW5rL3NpbmdsZXdlYmFwcC8NCisJCQkJCQk8L2E+IDxici8+DQorCQkJCQkJZWRpdCB0aGUgZmlsZXMgaW4gdGhlIGZvbGRlciA8dHQ+eGRvY3M8L3R0Pjxici8+DQorCQkJCQkJdGhlbiB5b3UgcnVuIHRoZSBjb21tYW5kOg0KKwkJCQkJCTxkaXYgY2xhc3M9InhtbGNvZGUiPg0KKwkJCQkJCQlhbnQgYW5ha2lhDQorCQkJCQkJPC9kaXY+DQorCQkJCQkJY29udHJvbCB0aGUgb3V0cHV0IGxvY2FsbHkgaW4gdGhlIGZvbGRlciA8dHQ+ZG9jczwvdHQ+PGJyLz4NCisJCQkJCQlBbmQgdGhlbiBjaGVja2luIGludG8gdGhlIFNWTiA8aT5ib3RoPC9pPiB0aGUgZWRpdGVkIHhtbCBhbmQgZ2VuZXJhdGVkIGh0bWwgZmlsZXMuDQorCQkJCQk8L2Rpdj4NCisJCQkJCQ0KKwkJCQkJPHA+DQorCQkJCQkJVGhlIHB1YmxpYyB3ZWJzaXRlIGlzIGF1dG9tYXRpY2FsbHkgc3luY2VkIHdpdGggdGhlIFNWTiByZXBvc2l0b3J5Ljxici8+DQorCQkJCQkJQ2hhbmdlcyB0byB0aGUgU1ZOIHNob3VsZCBiZSBpbW1lZGlhdGVseSBzeW5jZWQgdG8gdGhlIHByb2R1Y3Rpb24gd2Vic2l0ZS48YnIvPg0KKwkJCQkJCUlmIG5vdCB5b3UgbWlnaHQgbG9naW4gdG8gcGVvcGxlLmFwYWNoZS5vcmcsPGJyLz4NCisJCQkJCQljZCB0byA8dHQ+L3d3dy9vcGVubWVldGluZ3MuYXBhY2hlLm9yZy9jb250ZW50LzwvdHQ+PGJyLz4NCisJCQkJCQlhbmQgcnVuIHRoZSBsaW51eCBjb21tYW5kICJ0b3VjaCIgb24gdGhlIGZpbGVzIHRoYXQgbmVlZCB0byBiZSBzeW5jZWQNCisJCQkJCTwvcD4NCisJCQkJPC9kaXY+DQorCQkJPC9zdWJzZWN0aW9uPg0KKwkJCQ0KKwkJCTxzdWJzZWN0aW9uIG5hbWU9IkFkZGluZyBhIG5ldyBtZW51IGVudHJ5Ij4NCisJCQkJPGRpdj4NCisJCQkJCVRvIGFkZCBhIG5ldyBtZW51IGVudHJ5IGluIHRoZSBsZWZ0IHNpZGUgcGFuZWwgeW91IG5lZWQgdG8gbW9kaWZ5IHRoZSBmaWxlOiANCisJCQkJCTxici8+DQorCQkJCQk8dHQ+eGRvY3Mvc3R5bGVzaGVldHMvcHJvamVjdC54bWw8L3R0Pg0KKwkJCQk8L2Rpdj4NCisJCQk8L3N1YnNlY3Rpb24+DQorCQkJDQorCQkJPHN1YnNlY3Rpb24gbmFtZT0iV3JpdGluZyBhIG5ldyBtYWNybyI+DQorCQkJCTxkaXY+DQorCQkJCQk8cD4NCisJCQkJCQlZb3UgY2FuIHdyaXRlIG1hY3JvcyBpbiBhIHRlbXBsYXRlIGxhbmd1YWdlIHRvIHBhcnNlIGZyb20gdGhlIFhNTCBmaWxlcyBjZXJ0YWluIGFzcGVjdHMuDQorCQkJCQk8L3A+DQorCQkJCQk8cD4NCisJCQkJCQlUbyBhZGQgYSBuZXcgbWFjcm8gc2VlIHRoZSBmaWxlOjxici8+DQorCQkJCQkJPHR0Pnhkb2NzL3N0eWxlc2hlZXRzL3NpdGUudnNsPC90dD4NCisJCQkJCTwvcD4NCisJCQkJPC9kaXY+DQorCQkJCQ0KKwkJCTwvc3Vic2VjdGlvbj4NCisNCisJCTwvc2VjdGlvbj4NCisNCisJPC9ib2R5Pg0KKw0KKzwvZG9jdW1lbnQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEveGRvY3MvY29tbWVyY2lhbC1zdXBwb3J0LnhtbCBiL3hkb2NzL2NvbW1lcmNpYWwtc3VwcG9ydC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWZmZDA2NQotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL2NvbW1lcmNpYWwtc3VwcG9ydC54bWwKQEAgLTAsMCArMSw2MCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8IS0tDQorICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKw0KKyAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisNCisgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorIC0tPg0KKzxkb2N1bWVudD4NCisNCisJPHByb3BlcnRpZXM+DQorCQk8dGl0bGU+Q29tbWVyY2lhbCBTdXBwb3J0PC90aXRsZT4NCisJCTxhdXRob3IgZW1haWw9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+DQorCQkJT3Blbk1lZXRpbmdzIFRlYW0NCisJCTwvYXV0aG9yPg0KKwk8L3Byb3BlcnRpZXM+DQorDQorCTxib2R5Pg0KKw0KKwkJPHNlY3Rpb24gbmFtZT0iQ29tbWVyY2lhbCBTdXBwb3J0IGZvciBPcGVuTWVldGluZ3MiPg0KKw0KKwkJCTxwPlRoZXJlIGFyZSBmZXcgY29tcGFuaWVzIG9mZmVyaW5nIGNvbXBsZXggc2VydmljZXMgZm9yIE9wZW5NZWV0aW5ncywgaW5jbHVkaW5nIGNvZGUgc3VwcG9ydCwNCisJCQlkZXZlbG9wbWVudCwgaW50ZWdyYXRpb24gYW5kIGJ1ZyBmaXhpbmcNCisJCQk8L3A+DQorCQkJPHVsPg0KKwkJCQk8bGk+DQorCQkJCQk8YSBocmVmPSJodHRwOi8vd3d3LndlYmJhc2UtZGVzaWduLmRlLyIgdGFyZ2V0PSJfQkxBTksiPndlYmJhc2UtZGVzaWduLmRlDQorCQkJCQk8L2E+DQorCQkJCQlvd25lZCBieSBTZWJhc3RpYW4gV2FnbmVyDQorCQkJCTwvbGk+DQorCQkJCTxsaT4NCisJCQkJCTxhIGhyZWY9Imh0dHA6Ly93d3cuZGF0YXZlZC5ydSIgdGFyZ2V0PSJfQkxBTksiPmRhdGF2ZWQucnUNCisJCQkJCTwvYT4NCisJCQkJCXJ1biBieSBBbGV4ZWkgRmVkb3RvdiwgTWF4aW0gU29sb2Rvdm5paywgVGltdXIgVGxldWtlbm92LCBJcmluYSBBcmtoaXBldHMsIERlbmlzIEthbmRyb3YsIFZhc2lseSBEZWd0eWFyZXYNCisJCQkJPC9saT4NCisJCQkJPGxpPg0KKyAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5zYW1vby5lcyIgdGFyZ2V0PSJfQkxBTksiIHJlbD0ibm9mb2xsb3ciPnNhbW9vLmVzPC9hPg0KKyAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXMgc3VwcG9ydCBmb3IgdGhlIFNha2FpIFBsdWdpbg0KKyAgICAgICAgICAgICAgICA8L2xpPg0KKwkJCTwvdWw+DQorDQorCQkJPHA+DQorCQkJICAgIFRoZXJlIGFyZSBtb3JlIGNvbXBhbmllcyBvZmZlcmluZyBpbnN0YWxsYXRpb24sIGN1c3RvbWl6YXRpb24sIGhvc3RpbmcsIGNvbmZlcmVuY2luZyBhbmQgc3VwcG9ydCBzZXJ2aWNlcy4gWW91IGNhbiBhZGQgDQorCQkJCXlvdXJzZWxmIHRvIHRoZSA8YSBocmVmPSJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9Db21tZXJjaWFsK1N1cHBvcnQiPndpa2kgcGFnZTwvYT4uDQorCQkJPC9wPg0KKwkJCQ0KKwkJCTxwPg0KKwkJCQlXYW50IHRvIGdldCBsaXN0ZWQgaGVyZT8gQmVjb21lIGEgPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2Rldi9jb21taXR0ZXJzLmh0bWwiPmNvbW1pdHRlcjwvYT4uDQorCQkJPC9wPg0KKwkJPC9zZWN0aW9uPg0KKw0KKwk8L2JvZHk+DQorDQorPC9kb2N1bWVudD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS94ZG9jcy9jc3MvMWIucG5nIGIveGRvY3MvY3NzLzFiLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDcwZDc2Ci0tLSAvZGV2L251bGwKKysrIGIveGRvY3MvY3NzLzFiLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS94ZG9jcy9jc3MvMmIucG5nIGIveGRvY3MvY3NzLzJiLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTNlMTMyCi0tLSAvZGV2L251bGwKKysrIGIveGRvY3MvY3NzLzJiLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS94ZG9jcy9jc3MvM2IucG5nIGIveGRvY3MvY3NzLzNiLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOWQ4YjdhCi0tLSAvZGV2L251bGwKKysrIGIveGRvY3MvY3NzLzNiLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS94ZG9jcy9jc3MvNGIucG5nIGIveGRvY3MvY3NzLzRiLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNmU0MWY0Ci0tLSAvZGV2L251bGwKKysrIGIveGRvY3MvY3NzLzRiLnBuZwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS94ZG9jcy9jc3Mvb3Blbm1lZXRpbmdzLmNzcyBiL3hkb2NzL2Nzcy9vcGVubWVldGluZ3MuY3NzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmODBhZjYKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9jc3Mvb3Blbm1lZXRpbmdzLmNzcwpAQCAtMCwwICsxLDg0IEBACisvKgorKiBMaWNlbnNlZCB0byB0aGUgQXBhY2hlIFNvZnR3YXJlIEZvdW5kYXRpb24gKEFTRikgdW5kZXIgb25lIG9yIG1vcmUKKyogY29udHJpYnV0b3IgbGljZW5zZSBhZ3JlZW1lbnRzLiAgU2VlIHRoZSBOT1RJQ0UgZmlsZSBkaXN0cmlidXRlZCB3aXRoCisqIHRoaXMgd29yayBmb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiByZWdhcmRpbmcgY29weXJpZ2h0IG93bmVyc2hpcC4KKyogVGhlIEFTRiBsaWNlbnNlcyB0aGlzIGZpbGUgdG8gWW91IHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAKKyogKHRoZSAiTGljZW5zZSIpOyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGgKKyogdGhlIExpY2Vuc2UuICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyoKKyogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorKgorKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorKi8KK2JvZHkgeworCWNvbG9yOiAjMDAwMDAwOworCW1hcmdpbjogMDsKKwliYWNrZ3JvdW5kOiAjZmFmYWZhOworCWZvbnQ6IDEwcHQgVmVyZGFuYSwgQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsKKwkgIAorfQorLmFjdGl2ZSB7CisJZm9udC1zdHlsZTogaXRhbGljOworfQorCisubWFpbmJvZHkgeworCW1hcmdpbi1sZWZ0OiA0MHB4OworCW1hcmdpbi1yaWdodDogNDBweDsKKwktbW96LWJveC1zaGFkb3c6IDRweCAwcHggNXB4ICM2NjY2NjY7CisJLXdlYmtpdC1ib3gtc2hhZG93OiA0cHggMHB4IDVweCAjNjY2NjY2OworCWJveC1zaGFkb3c6IDRweCAwcHggNXB4ICM2NjY2NjY7Cit9Cisuc3VwZXJib2R5IHsKKwliYWNrZ3JvdW5kOiAjRkZGRkZGOworCS1tb3otYm94LXNoYWRvdzogLTRweCAwcHggNXB4ICM2NjY2NjY7CisJLXdlYmtpdC1ib3gtc2hhZG93OiAtNHB4IDBweCA1cHggIzY2NjY2NjsKKwlib3gtc2hhZG93OiAtNHB4IDBweCA1cHggIzY2NjY2NjsKK30KKworLyogQm94IENTUyAgKi8KK2RpdiB7CisJbWFyZ2luOiAwOworfQorCisKKy5ybyB7CisJYmFja2dyb3VuZDogdXJsKDJiLnBuZykgdG9wIHJpZ2h0IG5vLXJlcGVhdDsKK30KKworLmxvIHsKKwliYWNrZ3JvdW5kOiB1cmwoMWIucG5nKSB0b3AgbGVmdCBuby1yZXBlYXQ7Cit9CisKKy5ydSB7CisJYmFja2dyb3VuZDogdXJsKDNiLnBuZykgYm90dG9tIHJpZ2h0IG5vLXJlcGVhdDsKK30KKworLmx1IHsKKwliYWNrZ3JvdW5kOiB1cmwoNGIucG5nKSBib3R0b20gbGVmdCBuby1yZXBlYXQ7Cit9CisKK3VsIHsKKwltYXJnaW4tdG9wOiAwZW07CisJcGFkZGluZy1sZWZ0OiAxLjVlbTsKK30KKworLmluaGFsdCB7CisJbWFyZ2luOiAwOworCXBhZGRpbmc6IDAuNWVtIDIuMGVtIDEuNWVtIDEuMGVtOworfQorCisuaW5oYWx0IHAgeworCW1hcmdpbjogMDsKKwlwYWRkaW5nOiAwOworfQorLnhtbGNvZGUgeworCW1hcmdpbi1sZWZ0OiAyMHB4OworCWJhY2tncm91bmQtY29sb3I6ICNlZWVlZWU7CisJY29sb3I6ICMwMDAwZmY7CisJbWFyZ2luLXRvcDogMTBweDsKKwltYXJnaW4tYm90dG9tOiAxMHB4OworfQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3hkb2NzL2RlbW8ueG1sIGIveGRvY3MvZGVtby54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQ3YTcyZgotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL2RlbW8ueG1sCkBAIC0wLDAgKzEsNDMgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorIC0tPgorPGRvY3VtZW50PgorCisJPHByb3BlcnRpZXM+CisJCTx0aXRsZT5NYWlsaW5nIExpc3RzPC90aXRsZT4KKwkJPGF1dGhvciBlbWFpbD0ic2ViYXdhZ25lckBhcGFjaGUub3JnIj4KKwkJCVNlYmFzdGlhbiBXYWduZXIKKwkJPC9hdXRob3I+CisJPC9wcm9wZXJ0aWVzPgorCisJPGJvZHk+CisJCTxzZWN0aW9uIG5hbWU9IkFwYWNoZSBPcGVuTWVldGluZ3MgRGVtbyBTZXJ2ZXJzIj4KKworCQkJPHA+CisJCQkJVGhlcmUgYXJlIGN1cnJlbnRseSBzb21lIHRlY2huaWNhbCBpc3N1ZXMgd2l0aCBkZW1vIHNlcnZlcnMuCisJCQk8L3A+CisJCQk8cD4KKwkJCQlUaGlzIGlzIGEgbGlzdCBvZiBzZXJ2ZXJzIHRoYXQgeW91IGNhbiB1c2UgZm9yIHRlc3RpbmcgT3Blbk1lZXRpbmdzLgorCQkJPC9wPgorCQkJPHA+CisJCQkJPGEgaHJlZj0iaHR0cDovL2RlbW8ub3Blbm1lZXRpbmdzLmRlIiB0YXJnZXQ9Il9CTEFOSyIgcmVsPSJub2ZvbGxvdyI+aHR0cDovL2RlbW8ub3Blbm1lZXRpbmdzLmRlPC9hPgorCQkJPC9wPgorCQkJPHA+CisJCQkJPGEgaHJlZj0iaHR0cDovL2RlbW8uZGF0YXZlZC5ydS9vcGVubWVldGluZ3MiIHRhcmdldD0iX0JMQU5LIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vZGVtby5kYXRhdmVkLnJ1L29wZW5tZWV0aW5nczwvYT4KKwkJCTwvcD4KKworCQk8L3NlY3Rpb24+CisJPC9ib2R5PgorPC9kb2N1bWVudD4KKwpkaWZmIC0tZ2l0IGEveGRvY3MvZGVwZW5kZW5jaWVzLnhtbCBiL3hkb2NzL2RlcGVuZGVuY2llcy54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Y5MjNkNgotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL2RlcGVuZGVuY2llcy54bWwKQEAgLTAsMCArMSw0OSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0KKworICAgIENvcHlyaWdodCAyMDA2IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorCisgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorICAKKyAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAgCisgICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLS0+CisKKzxkb2N1bWVudD4KKworIDxwcm9wZXJ0aWVzPgorPHRpdGxlPlByb2plY3QgRGVwZW5kZW5jaWVzPC90aXRsZT4KKzxhdXRob3IgZW1haWw9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+CisgT3Blbk1lZXRpbmdzIERvY3VtZW50YXRpb24gVGVhbTwvYXV0aG9yPgorPC9wcm9wZXJ0aWVzPgorCis8Ym9keT4KKzxzZWN0aW9uIG5hbWU9IlRoZSBBcGFjaGUgUG9kbGluZyBQcm9qZWN0Ij4KKworPGRpdj4KKzxwPiAKK1RoZSBjb21tb24gZXh0ZXJuYWwgZGVwZW5kZW5jaWVzIG9mIE9wZW5NZWV0aW5ncyBpbmNsdWRlIHRoZSB0b29scyB1c2VkIHRvIGJ1aWxkIAorYW5kIHRlc3QgaXQ6Cis8L3A+CisKKzx1bD4KKzxsaT5TdWJ2ZXJzaW9uPC9saT4KKzxsaT5BbnQ8L2xpPgorPGxpPkpVbml0PC9saT4KKzwvdWw+CisKKzxwPk9wZW5NZWV0aW5ncyB3aWxsIGFjdGl2ZWx5IGRvd25sb2FkIHJlc291cmNlcyBmcm9tIHRoZSBvbmxpbmUgcmVwb3NpdG9yaWVzIHdoaWxlIGJ1aWxkaW5nLjwvcD4KKworPC9kaXY+Cis8L3NlY3Rpb24+CisKKzwvYm9keT4KKzwvZG9jdW1lbnQ+CisgICAKZGlmZiAtLWdpdCBhL3hkb2NzL2RvY3VtZW50YXRpb24ueG1sIGIveGRvY3MvZG9jdW1lbnRhdGlvbi54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2M1MDhiMQotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL2RvY3VtZW50YXRpb24ueG1sCkBAIC0wLDAgKzEsNDYgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+CisKKzwhLS0KKworICAgIENvcHlyaWdodCAyMDA2IFRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbgorCisgICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworCis8ZG9jdW1lbnQ+CisKKzxwcm9wZXJ0aWVzPgorPHRpdGxlPkRvY3VtZW50YXRpb248L3RpdGxlPgorPGF1dGhvciBlbWFpbD0ic2ViYXdhZ25lckBhcGFjaGUub3JnIj4KKyBQb2RsaW5nIERvY3VtZW50YXRpb24gVGVhbTwvYXV0aG9yPgorPC9wcm9wZXJ0aWVzPgorCis8Ym9keT4KKzxzZWN0aW9uIG5hbWU9Ik9wZW5NZWV0aW5ncyBEb2N1bWVudGF0aW9uIj4KKworPHA+CitXaWtpIGlzIHRvIGJlIGxpbmtlZCBoZXJlLCBjb21pbmcgc29vbiAuLi4KKworPCEtLSAqKioqKioqKioqKioqKioqKiBUQkQgKioqKioqKioqKioqKioqKioqKioqKioqKiogIC0tPgorPCEtLSAqKioqKioqKioqKioqKioqKiBUQkQgKioqKioqKioqKioqKioqKioqKioqKioqKiogIC0tPgorPCEtLSAqKioqKioqKioqKioqKioqKiBUQkQgKioqKioqKioqKioqKioqKioqKioqKioqKiogIC0tPgorCis8L3A+CisKKzwvc2VjdGlvbj4KKworPC9ib2R5PgorCis8L2RvY3VtZW50PgorCmRpZmYgLS1naXQgYS94ZG9jcy9kb3dubG9hZHMueG1sIGIveGRvY3MvZG93bmxvYWRzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjkwYzc3Ci0tLSAvZGV2L251bGwKKysrIGIveGRvY3MvZG93bmxvYWRzLnhtbApAQCAtMCwwICsxLDk4IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLQorICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAtLT4KKzxkb2N1bWVudD4KKworCTxwcm9wZXJ0aWVzPgorCQk8dGl0bGU+RG93bmxvYWRzPC90aXRsZT4KKwkJPGF1dGhvciBlbWFpbD0ic2ViYXdhZ25lckBhcGFjaGUub3JnIj4KKwkJCVBvZGxpbmcgRG9jdW1lbnRhdGlvbiBUZWFtCisJCTwvYXV0aG9yPgorCTwvcHJvcGVydGllcz4KKworCTxib2R5PgorCisJCTxzZWN0aW9uIG5hbWU9IkRvd25sb2FkcyI+CisJCQk8ZGl2PgorCQkJCUFsbCBkb3dubG9hZHMgY2FuIGJlIHZlcmlmaWVkIHVzaW5nIHRoZSBBcGFjaGUgT3Blbk1lZXRpbmdzIGNvZGUKKwkJCQlzaWduaW5nIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9keW4vY2xvc2VyLmNnaS9vcGVubWVldGluZ3MvMi4xLjAvS0VZUyI+S0VZUzwvYT4uCisJCQk8L2Rpdj4KKwkJCTxwPgorCQkJCUFsbCBhcmUgYXZhaWxhYmxlIGZvciBkb3dubG9hZCBhcyBzb3VyY2UgYW5kIGJpbmFyeS4KKwkJCTwvcD4KKwkJCQorCQkJPHN1YnNlY3Rpb24gbmFtZT0iTGF0ZXN0IE9mZmljaWFsIFJlbGVhc2UiPgorCQkJCTxwPgorCQkJCQlBcGFjaGUgT3Blbm1lZXRpbmdzIDIuMS4wCisJCQkJPC9wPgorCQkJCTx1bD4KKwkJCQkJPGxpPgorCQkJCQkJQmluYXJpZXM6CisJCQkJCQk8dWw+CisJCQkJCQkJPGxpPgorCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvZHluL2Nsb3Nlci5jZ2kvb3Blbm1lZXRpbmdzLzIuMS4wL2Jpbi9hcGFjaGUtb3Blbm1lZXRpbmdzLTIuMS4wLnppcCI+YXBhY2hlLW9wZW5tZWV0aW5ncy0yLjEuMC56aXA8L2E+CisJCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9kaXN0L29wZW5tZWV0aW5ncy8yLjEuMC9iaW4vYXBhY2hlLW9wZW5tZWV0aW5ncy0yLjEuMC56aXAuYXNjIj5bU0lHXTwvYT4KKwkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2Rpc3Qvb3Blbm1lZXRpbmdzLzIuMS4wL2Jpbi9hcGFjaGUtb3Blbm1lZXRpbmdzLTIuMS4wLnppcC5tZDUiPltNRDVdPC9hPgorCQkJCQkJCTwvbGk+CisJCQkJCQkJPGxpPgorCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvZHluL2Nsb3Nlci5jZ2kvb3Blbm1lZXRpbmdzLzIuMS4wL2Jpbi9hcGFjaGUtb3Blbm1lZXRpbmdzLTIuMS4wLnRhci5neiI+YXBhY2hlLW9wZW5tZWV0aW5ncy0yLjEuMC50YXIuZ3o8L2E+CisJCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9kaXN0L29wZW5tZWV0aW5ncy8yLjEuMC9iaW4vYXBhY2hlLW9wZW5tZWV0aW5ncy0yLjEuMC50YXIuZ3ouYXNjIj5bU0lHXTwvYT4KKwkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2Rpc3Qvb3Blbm1lZXRpbmdzLzIuMS4wL2Jpbi9hcGFjaGUtb3Blbm1lZXRpbmdzLTIuMS4wLnRhci5nei5tZDUiPltNRDVdPC9hPgorCQkJCQkJCTwvbGk+CisJCQkJCQk8L3VsPgorCQkJCQk8L2xpPgorCQkJCQk8bGk+CisJCQkJCQlTb3VyY2VzOgorCQkJCQkJPHVsPgorCQkJCQkJCTxsaT4KKwkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2R5bi9jbG9zZXIuY2dpL29wZW5tZWV0aW5ncy8yLjEuMC9zcmMvYXBhY2hlLW9wZW5tZWV0aW5ncy0yLjEuMC1zcmMuemlwIj5hcGFjaGUtb3Blbm1lZXRpbmdzLTIuMS4wLXNyYy56aXA8L2E+CisJCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9kaXN0L29wZW5tZWV0aW5ncy8yLjEuMC9zcmMvYXBhY2hlLW9wZW5tZWV0aW5ncy0yLjEuMC1zcmMuemlwLmFzYyI+W1NJR108L2E+CisJCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9kaXN0L29wZW5tZWV0aW5ncy8yLjEuMC9zcmMvYXBhY2hlLW9wZW5tZWV0aW5ncy0yLjEuMC1zcmMuemlwLm1kNSI+W01ENV08L2E+CisJCQkJCQkJPC9saT4KKwkJCQkJCQk8bGk+CisJCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly93d3cuYXBhY2hlLm9yZy9keW4vY2xvc2VyLmNnaS9vcGVubWVldGluZ3MvMi4xLjAvc3JjL2FwYWNoZS1vcGVubWVldGluZ3MtMi4xLjAtc3JjLnRhci5neiI+YXBhY2hlLW9wZW5tZWV0aW5ncy0yLjEuMC1zcmMudGFyLmd6PC9hPgorCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvZGlzdC9vcGVubWVldGluZ3MvMi4xLjAvc3JjL2FwYWNoZS1vcGVubWVldGluZ3MtMi4xLjAtc3JjLnRhci5nei5hc2MiPltTSUddPC9hPgorCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvZGlzdC9vcGVubWVldGluZ3MvMi4xLjAvc3JjL2FwYWNoZS1vcGVubWVldGluZ3MtMi4xLjAtc3JjLnRhci5nei5tZDUiPltNRDVdPC9hPgorCQkJCQkJCTwvbGk+CisJCQkJCQk8L3VsPgorCQkJCQk8L2xpPgorCQkJCTwvdWw+CisJCQkJCisJCQk8L3N1YnNlY3Rpb24+CisKKwkJCTxzdWJzZWN0aW9uIG5hbWU9IlByZXZpb3VzIE9mZmljaWFsIFJlbGVhc2VzIj4KKwkJCQk8cD4KKwkJCQkJQXBhY2hlIE9wZW5tZWV0aW5ncyBJbmN1YmF0aW5nIDIuMCBpcyBhdmFpbGFibGUgaGVyZToKKwkJCQkJPGEgaHJlZj0iaHR0cDovL2FyY2hpdmUuYXBhY2hlLm9yZy9kaXN0L2luY3ViYXRvci9vcGVubWVldGluZ3MvMi4wLWluY3ViYXRpbmcvIj5odHRwOi8vYXJjaGl2ZS5hcGFjaGUub3JnL2Rpc3QvaW5jdWJhdG9yL29wZW5tZWV0aW5ncy8yLjAtaW5jdWJhdGluZzwvYT4KKwkJCQk8L3A+CisJCQk8L3N1YnNlY3Rpb24+CisKKwkJCTxzdWJzZWN0aW9uIG5hbWU9IlBsdWdpbnMgLyBOb24gQVNGIGRvd25sb2FkcyI+CisJCQkKKwkJCQk8cD4KKwkJCQkJSWYgeW91IGFyZSBsb29raW5nIGZvciBtb3JlIHBsdWdpbnMgZm9yIDN0aCBwYXJ0eSBhcHBsaWNhdGlvbnMgKE1vb2RsZSwgRHJ1cGFsLCBKb29tbGEsIC4uLikgY2hlY2sgb3V0IDxhIGhyZWY9Imh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vYS9hcGFjaGUtZXh0cmFzLm9yZy9ob3N0aW5nL3NlYXJjaD9xPW9wZW5tZWV0aW5ncyIgdGFyZ2V0PSJfQkxBTksiIHJlbD0ibm9mb2xsb3ciPmFwYWNoZS1leHRyYXMub3JnPC9hPi4KKwkJCQk8L3A+CisJCQkKKwkJCQk8cD4KKwkJCQkJT3Blbk1lZXRpbmdzIHJlbGVhc2VzIHRoYXQgYXJlIG5vdCBwYXJ0IG9mIHRoZSBBU0YgY2FuIGJlIGRvd25sb2FkZWQgZnJvbSB0aGUKKwkJCQkJb2xkCisJCQkJCTxhIGhyZWY9Imh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9vcGVubWVldGluZ3MvZG93bmxvYWRzL2xpc3QiCisJCQkJCQl0YXJnZXQ9Il9CTEFOSyI+R29vZ2xlQ29kZSB3ZWJzaXRlPC9hPgorCQkJCTwvcD4KKwkJCTwvc3Vic2VjdGlvbj4KKworCQk8L3NlY3Rpb24+CisJPC9ib2R5PgorPC9kb2N1bWVudD4KKwpkaWZmIC0tZ2l0IGEveGRvY3MvZ2V0LWludm9sdmVkLnhtbCBiL3hkb2NzL2dldC1pbnZvbHZlZC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTk1MDBkNQotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL2dldC1pbnZvbHZlZC54bWwKQEAgLTAsMCArMSwxNDAgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorIC0tPgorPGRvY3VtZW50PgorCisJPHByb3BlcnRpZXM+CisJCTx0aXRsZT5HZXQgSW52b2x2ZWQ8L3RpdGxlPgorCQk8YXV0aG9yIGVtYWlsPSJkZXZAb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmciPgorCQkJT3Blbk1lZXRpbmdzIERvY3VtZW50YXRpb24gVGVhbQorCQk8L2F1dGhvcj4KKwk8L3Byb3BlcnRpZXM+CisKKwk8Ym9keT4KKworCQk8c2VjdGlvbiBuYW1lPSJIb3cgZG8gSSBjb250cmlidXRlLCBnaXZlIGZlZWRiYWNrLCBmaXggYnVncyBhbmQgc28gb24/Ij4KKworCQkJPHA+CisJCQkJVGhlIEFwYWNoZSBPcGVuTWVldGluZ3MgcHJvamVjdCByZWFsbHkgbmVlZHMgYW5kIGFwcHJlY2lhdGVzIGFueQorCQkJCWNvbnRyaWJ1dGlvbnMsCisJCQkJaW5jbHVkaW5nIGRvY3VtZW50YXRpb24gaGVscCwgc291cmNlIGNvZGUgYW5kCisJCQkJZmVlZGJhY2suIFN1Z2dlc3RlZAorCQkJCWNoYW5nZXMgc2hvdWxkIGNvbWUgaW4gdGhlIGZvcm0gb2Ygc291cmNlIGNvZGUKKwkJCQlhbmQvb3IgdmVyeSBkZXRhaWxlZAorCQkJCWFuZCBjb25zdHJ1Y3RpdmUgZmVlZGJhY2suCisJCQk8L3A+CisKKwkJCTx1bD4KKwkJCQk8bGk+CisJCQkJCURpc2N1c3Npb24gb2NjdXJzIG9uIHRoZQorCQkJCQk8YSBocmVmPSJtYWlsLWxpc3RzLmh0bWwiPk9wZW5NZWV0aW5ncyBtYWlsaW5nIGxpc3RzPC9hPgorCQkJCTwvbGk+CisJCQkJPGxpPgorCQkJCQlJbmZvcm1hdGlvbiBvbiBhY2Nlc3MgdG8gdGhlIHByb2plY3Qgc291cmNlIGNvZGUgaXMKKwkJCQkJYXZhaWxhYmxlCisJCQkJCTxhIGhyZWY9InN2bi5odG1sIj5oZXJlPC9hPgorCQkJCQkuCisJCQkJPC9saT4KKwkJCQk8bGk+CisJCQkJCUJ1Z3MgYW5kIG90aGVyIGlzc3VlcyBjYW4gYmUgcG9zdGVkIG9uIHRoZSBwcm9qZWN0CisJCQkJCTxhIGhyZWY9Imh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9icm93c2UvT1BFTk1FRVRJTkdTIj5KSVJBPC9hPgorCQkJCQkoCisJCQkJCTxhIGhyZWY9Imh0dHBzOi8vaXNzdWVzLmFwYWNoZS5vcmcvamlyYS9zZWN1cmUvU2lnbnVwIWRlZmF1bHQuanNwYSI+c2lnbiB1cDwvYT4KKwkJCQkJKS4KKwkJCQk8L2xpPgorCQkJCTxsaT4KKwkJCQkJQWRkaXRpb25hbCBkb2N1bWVudGF0aW9uIGFuZCBkaXNjdXNzaW9uIGNhbiBiZSBjb250cmlidXRlZCB0byB0aGUKKwkJCQkJcHJvamVjdAorCQkJCQk8YSBocmVmPSJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvT1BFTk1FRVRJTkdTIj5XaWtpPC9hPgorCQkJCQkoCisJCQkJCTxhIGhyZWY9Imh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL3NpZ251cC5hY3Rpb24iPnNpZ24gdXA8L2E+CisJCQkJCSkuCisJCQkJPC9saT4KKwkJCTwvdWw+CisKKwkJPC9zZWN0aW9uPgorCisJCTxzZWN0aW9uIG5hbWU9IldoaWNoIHRha3MgY291bGQgSSBwb3RlbnRpYWxseSB3b3JrIG9uPyI+CisKKwkJCTxwPgorCQkJCU5vIG1hdHRlciBpZiB5b3Ugd2FudCB0byBzaGFyZSB5b3VyIGV4cGVyaWVuY2VzLCBpbXByb3ZlCisJCQkJZG9jdW1lbnRhdGlvbiwgbG9jYWxpemF0aW9uLCBjb2RlIEphdmEsIEFjdGlvblNjcmlwdCBvciBQSFAsIHRoZXJlCisJCQkJYXJlIGRvemVucyBvZiBhcmVhcyB3aGVyZSB5b3UgY2FuIGZpbmQgdGFzayB0byB3b3JrIG9uIGFuZCBzaGFyZQorCQkJCXdpdGggb3RoZXJzLgorCQkJCTxiciAvPgorCQkJCTxiciAvPgorCQkJCVdlIHRyaWVkIHRvIGNvbGxlY3QgYSBsaXN0IG9mIGlkZWFzIGluIG91ciB3aWtpOgorCQkJCTxiciAvPgorCQkJCTxhCisJCQkJCWhyZWY9Imh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL05ldytjb21taXR0ZXJzK2FuZCtkZXZlbG9wZXJzK3Rhc2sraWRlYStsaXN0IgorCQkJCQl0YXJnZXQ9Il9CTEFOSyI+aHR0cHM6Ly9jd2lraS5hcGFjaGUub3JnL2NvbmZsdWVuY2UvZGlzcGxheS9PUEVOTUVFVElOR1MvTmV3K2NvbW1pdHRlcnMrYW5kK2RldmVsb3BlcnMrdGFzaytpZGVhK2xpc3QKKwkJCQk8L2E+CisJCQk8L3A+CisKKwkJPC9zZWN0aW9uPgorCisJCTxzZWN0aW9uIG5hbWU9IkhvdyBkbyBJIGJlY29tZSBhIGNvbW1pdHRlcj8iPgorCQkJPHA+SWYgeW91J3JlIGludGVyZXN0ZWQgaW4gY29tbWl0dGluZyB0byB0aGUgcHJvamVjdDogPC9wPgorCQkJPHVsPgorCQkJCTxsaT4KKwkJCQkJPHA+CisJCQkJCQlZb3UnbGwgbmVlZCB0byBmaWxsIG91dCBzb21lIGxlZ2FsIHBhcGVyd29yayBhbmQgZ28gdGhyb3VnaAorCQkJCQkJYQorCQkJCQkJcHJvY2VzcyB0byBnZXQgYW4gYXBhY2hlIGZvdW5kYXRpb24gY29tbWl0dGVyIGFjY291bnQ6IFNlZQorCQkJCQkJPGEgY2xhc3M9ImV4dGVybmFsIiByZWw9Im5vZm9sbG93IgorCQkJCQkJCWhyZWY9Imh0dHA6Ly9hcGFjaGUub3JnL2Rldi9uZXctY29tbWl0dGVycy1ndWlkZS5odG1sIj4KKwkJCQkJCQlOZXcgQ29tbWl0dGVycyBHdWlkZQorCQkJCQkJPC9hPgorCQkJCQkJLAorCQkJCQkJPGEgY2xhc3M9ImV4dGVybmFsIiByZWw9Im5vZm9sbG93IgorCQkJCQkJCWhyZWY9Imh0dHA6Ly9hcGFjaGUub3JnL2Rldi9jb250cmlidXRvcnMuaHRtbCI+IENvbnRyaWJ1dG9yczwvYT4KKwkJCQkJCSwgYW5kCisJCQkJCQk8YSBjbGFzcz0iZXh0ZXJuYWwiIHJlbD0ibm9mb2xsb3ciIGhyZWY9Imh0dHA6Ly9hcGFjaGUub3JnL2Rldi9jb21taXR0ZXJzLmh0bWwiPiBDb21taXR0ZXJzPC9hPgorCQkJCQkJZm9yIG1vcmUgZGV0YWlscy4KKwkJCQkJPC9wPgorCisJCQkJPC9saT4KKwkJCQk8bGk+CisJCQkJCTxwPgorCQkJCQkJQWZ0ZXIgeW91J3ZlIHJlY2VpdmVkIGFuIGVtYWlsIGZyb20KKwkJCQkJCTxhIGhyZWY9Im1haWx0bzpyb290QGFwYWNoZS5vcmciPnJvb3RAYXBhY2hlLm9yZzwvYT4KKwkJCQkJCXdpdGggeW91ciBjb21taXR0ZXIgYWNjb3VudCBpbmZvcm1hdGlvbiwgY2hhbmdlIHlvdXIgaW5pdGlhbAorCQkJCQkJcGFzc3dvcmQ6CisJCQkJCQlMb2dpbiBieSAnc3NoIC1sICZsdDt1c2VybmFtZSZndDsgcGVvcGxlLmFwYWNoZS5vcmcnOworCQkJCQkJcnVuCisJCQkJCQkncGFzc3dkJzsKKwkJCQkJCXJ1biAnc3ZucGFzc3dkJy4gU2VlCisJCQkJCQk8YSBjbGFzcz0iZXh0ZXJuYWwiIHJlbD0ibm9mb2xsb3ciCisJCQkJCQkJaHJlZj0iaHR0cDovL2FwYWNoZS5vcmcvZGV2L3ZlcnNpb24tY29udHJvbC5odG1sIj5Db21taXR0ZXIgU3VidmVyc2lvbiBBY2Nlc3MKKwkJCQkJCTwvYT4KKwkJCQkJCS4KKwkJCQkJPC9wPgorCQkJCTwvbGk+CisJCQkJPGxpPgorCQkJCQk8cD4KKwkJCQkJCUNoZWNrIG91dCB0aGUgT3Blbk1lZXRpbmdzIHNvdXJjZXMgYW5kIHRlc3QgeW91ciBzdm4gYWNjb3VudDoKKwkJCQkJCTxhIGhyZWY9Imh0dHA6Ly9zdm4uYXBhY2hlLm9yZy92aWV3dmMvb3Blbm1lZXRpbmdzLyI+CisJCQkJCQkJU3VidmVyc2lvblJlcG9zaXRvcnkKKwkJCQkJCTwvYT4KKwkJCQkJCS4KKwkJCQkJPC9wPgorCisJCQkJPC9saT4KKworCQkJPC91bD4KKworCQk8L3NlY3Rpb24+CisKKwk8L2JvZHk+Cis8L2RvY3VtZW50PgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL0FyZ3VtZW50cy5wbmcgYi94ZG9jcy9pbWFnZXMvQXJndW1lbnRzLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NDI3MjM2Ci0tLSAvZGV2L251bGwKKysrIGIveGRvY3MvaW1hZ2VzL0FyZ3VtZW50cy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL0RlYnVnQ29uZmlndXJhdGlvbnMucG5nIGIveGRvY3MvaW1hZ2VzL0RlYnVnQ29uZmlndXJhdGlvbnMucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1NzJkZGEKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9pbWFnZXMvRGVidWdDb25maWd1cmF0aW9ucy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL0ZlYXR1cmVzX1NjcmVlbl9Db25mZXJlbmNlX1Jvb21fVGh1bWIucG5nIGIveGRvY3MvaW1hZ2VzL0ZlYXR1cmVzX1NjcmVlbl9Db25mZXJlbmNlX1Jvb21fVGh1bWIucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5ZGVjZTkKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9pbWFnZXMvRmVhdHVyZXNfU2NyZWVuX0NvbmZlcmVuY2VfUm9vbV9UaHVtYi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL05ld0NvbmZpZ3VyYXRpb24ucG5nIGIveGRvY3MvaW1hZ2VzL05ld0NvbmZpZ3VyYXRpb24ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1ZjNkNjIKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9pbWFnZXMvTmV3Q29uZmlndXJhdGlvbi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL1N1Z2FyQ1JNX0luc3RhbGxhdGlvbi5wbmcgYi94ZG9jcy9pbWFnZXMvU3VnYXJDUk1fSW5zdGFsbGF0aW9uLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjUyYjdiCi0tLSAvZGV2L251bGwKKysrIGIveGRvY3MvaW1hZ2VzL1N1Z2FyQ1JNX0luc3RhbGxhdGlvbi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL2FwYWNoZV9mZWF0aGVyLmdpZiBiL3hkb2NzL2ltYWdlcy9hcGFjaGVfZmVhdGhlci5naWYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWEwYzNlNgotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL2ltYWdlcy9hcGFjaGVfZmVhdGhlci5naWYKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL2F1ZGlvX2FuZF92aWRlby5wbmcgYi94ZG9jcy9pbWFnZXMvYXVkaW9fYW5kX3ZpZGVvLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzViYjEwCi0tLSAvZGV2L251bGwKKysrIGIveGRvY3MvaW1hZ2VzL2F1ZGlvX2FuZF92aWRlby5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL2JhY2t1cC5wbmcgYi94ZG9jcy9pbWFnZXMvYmFja3VwLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYWE0ZThhCi0tLSAvZGV2L251bGwKKysrIGIveGRvY3MvaW1hZ2VzL2JhY2t1cC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL2NhbGVuZGFyLnBuZyBiL3hkb2NzL2ltYWdlcy9jYWxlbmRhci5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTFlOTQ4ZQotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL2ltYWdlcy9jYWxlbmRhci5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL2NoYXQucG5nIGIveGRvY3MvaW1hZ2VzL2NoYXQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlOWMwNDAKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9pbWFnZXMvY2hhdC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL2NoZWNrb3V0XzEucG5nIGIveGRvY3MvaW1hZ2VzL2NoZWNrb3V0XzEucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1MDg5MWEKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9pbWFnZXMvY2hlY2tvdXRfMS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL2NoZWNrb3V0XzIucG5nIGIveGRvY3MvaW1hZ2VzL2NoZWNrb3V0XzIucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzMTA1MGIKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9pbWFnZXMvY2hlY2tvdXRfMi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL2NoZWNrb3V0XzMucG5nIGIveGRvY3MvaW1hZ2VzL2NoZWNrb3V0XzMucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0ZDIxY2UKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9pbWFnZXMvY2hlY2tvdXRfMy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL2NoZWNrb3V0XzQucG5nIGIveGRvY3MvaW1hZ2VzL2NoZWNrb3V0XzQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmY2Y1NzYKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9pbWFnZXMvY2hlY2tvdXRfNC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL2NoZWNrb3V0XzUucG5nIGIveGRvY3MvaW1hZ2VzL2NoZWNrb3V0XzUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxMDI0MjYKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9pbWFnZXMvY2hlY2tvdXRfNS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL2NoZWNrb3V0XzYucG5nIGIveGRvY3MvaW1hZ2VzL2NoZWNrb3V0XzYucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkZDkxODkKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9pbWFnZXMvY2hlY2tvdXRfNi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL2NoZWNrb3V0XzcucG5nIGIveGRvY3MvaW1hZ2VzL2NoZWNrb3V0XzcucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxNjhkOTMKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9pbWFnZXMvY2hlY2tvdXRfNy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL2NoZWNrb3V0XzgucG5nIGIveGRvY3MvaW1hZ2VzL2NoZWNrb3V0XzgucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0OTRiYjUKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9pbWFnZXMvY2hlY2tvdXRfOC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL2NoZWNrb3V0XzkucG5nIGIveGRvY3MvaW1hZ2VzL2NoZWNrb3V0XzkucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwODNkMDAKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9pbWFnZXMvY2hlY2tvdXRfOS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL2Nob29zZV9kaXZpY2UucG5nIGIveGRvY3MvaW1hZ2VzL2Nob29zZV9kaXZpY2UucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllNmUzMWMKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9pbWFnZXMvY2hvb3NlX2RpdmljZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL2NsdXN0ZXIxLnBuZyBiL3hkb2NzL2ltYWdlcy9jbHVzdGVyMS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjcyZmZjNAotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL2ltYWdlcy9jbHVzdGVyMS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL2NsdXN0ZXIyLnBuZyBiL3hkb2NzL2ltYWdlcy9jbHVzdGVyMi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQ0N2UxZAotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL2ltYWdlcy9jbHVzdGVyMi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL2N1dF9hZG1pbmlzdHJhdGlvbl9jb25maWd1cmF0aW9uLnBuZyBiL3hkb2NzL2ltYWdlcy9jdXRfYWRtaW5pc3RyYXRpb25fY29uZmlndXJhdGlvbi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWE5OWM2YwotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL2ltYWdlcy9jdXRfYWRtaW5pc3RyYXRpb25fY29uZmlndXJhdGlvbi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL2N1dF9jb25mZXJlbmNlX3Jvb20ucG5nIGIveGRvY3MvaW1hZ2VzL2N1dF9jb25mZXJlbmNlX3Jvb20ucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhNTBhMjUKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9pbWFnZXMvY3V0X2NvbmZlcmVuY2Vfcm9vbS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL2N1dF9maWxlX2V4cGxvcmVyLnBuZyBiL3hkb2NzL2ltYWdlcy9jdXRfZmlsZV9leHBsb3Jlci5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGU1ZDBjNwotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL2ltYWdlcy9jdXRfZmlsZV9leHBsb3Jlci5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL2N1dF9pbnRlZ3JhdGVkX2NhbGVuZGFyLnBuZyBiL3hkb2NzL2ltYWdlcy9jdXRfaW50ZWdyYXRlZF9jYWxlbmRhci5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmRiMTRkMwotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL2ltYWdlcy9jdXRfaW50ZWdyYXRlZF9jYWxlbmRhci5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL2N1dF9pbnRlZ3JhdGlvbl9hcGkucG5nIGIveGRvY3MvaW1hZ2VzL2N1dF9pbnRlZ3JhdGlvbl9hcGkucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjZjYyNjQKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9pbWFnZXMvY3V0X2ludGVncmF0aW9uX2FwaS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL2N1dF9wcml2YXRlX21lc3NhZ2VzLnBuZyBiL3hkb2NzL2ltYWdlcy9jdXRfcHJpdmF0ZV9tZXNzYWdlcy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWIwMWZmZgotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL2ltYWdlcy9jdXRfcHJpdmF0ZV9tZXNzYWdlcy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL2N1dF9yZWNvcmRpbmdzX3BsYXliYWNrLnBuZyBiL3hkb2NzL2ltYWdlcy9jdXRfcmVjb3JkaW5nc19wbGF5YmFjay5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2U5MTg3ZQotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL2ltYWdlcy9jdXRfcmVjb3JkaW5nc19wbGF5YmFjay5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL2Rhc2hib2FyZC5wbmcgYi94ZG9jcy9pbWFnZXMvZGFzaGJvYXJkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjQzMWYyCi0tLSAvZGV2L251bGwKKysrIGIveGRvY3MvaW1hZ2VzL2Rhc2hib2FyZC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL2Rlc2t0b3BzaGFyaW5nLnBuZyBiL3hkb2NzL2ltYWdlcy9kZXNrdG9wc2hhcmluZy5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2Q3OTc4ZQotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL2ltYWdlcy9kZXNrdG9wc2hhcmluZy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL2ZpbGVfc21hbC5wbmcgYi94ZG9jcy9pbWFnZXMvZmlsZV9zbWFsLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OWRjYzQ2Ci0tLSAvZGV2L251bGwKKysrIGIveGRvY3MvaW1hZ2VzL2ZpbGVfc21hbC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL2luc3RhbGxhdGlvbl9pbnN0cnVjdGlvbnMucG5nIGIveGRvY3MvaW1hZ2VzL2luc3RhbGxhdGlvbl9pbnN0cnVjdGlvbnMucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0YWIwNWEKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9pbWFnZXMvaW5zdGFsbGF0aW9uX2luc3RydWN0aW9ucy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL2xhbmdlZGl0b3Jfc2NyZWVuX3YyLnBuZyBiL3hkb2NzL2ltYWdlcy9sYW5nZWRpdG9yX3NjcmVlbl92Mi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmJhZjQ3ZAotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL2ltYWdlcy9sYW5nZWRpdG9yX3NjcmVlbl92Mi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL2xkYXBfc2NyZWVuLnBuZyBiL3hkb2NzL2ltYWdlcy9sZGFwX3NjcmVlbi5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTI4YmJjMwotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL2ltYWdlcy9sZGFwX3NjcmVlbi5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL2xvZ28tMi5qcGcgYi94ZG9jcy9pbWFnZXMvbG9nby0yLmpwZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xM2MyNTEyCi0tLSAvZGV2L251bGwKKysrIGIveGRvY3MvaW1hZ2VzL2xvZ28tMi5qcGcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL21pY3JvX3NtYWxsLnBuZyBiL3hkb2NzL2ltYWdlcy9taWNyb19zbWFsbC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjE1YzgzMQotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL2ltYWdlcy9taWNyb19zbWFsbC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL21vbml0b3JfYWRkLnBuZyBiL3hkb2NzL2ltYWdlcy9tb25pdG9yX2FkZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTgxODA2NgotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL2ltYWdlcy9tb25pdG9yX2FkZC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL21vdXNlX2FkZC5wbmcgYi94ZG9jcy9pbWFnZXMvbW91c2VfYWRkLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NWJjYWI1Ci0tLSAvZGV2L251bGwKKysrIGIveGRvY3MvaW1hZ2VzL21vdXNlX2FkZC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL3BlbmNpbF9hZGQucG5nIGIveGRvY3MvaW1hZ2VzL3BlbmNpbF9hZGQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwMmJiZTYKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9pbWFnZXMvcGVuY2lsX2FkZC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL3BvbGwucG5nIGIveGRvY3MvaW1hZ2VzL3BvbGwucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViNTFjOWIKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9pbWFnZXMvcG9sbC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL3BvbGxyZXN1bHQucG5nIGIveGRvY3MvaW1hZ2VzL3BvbGxyZXN1bHQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4YzM4ZGYKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9pbWFnZXMvcG9sbHJlc3VsdC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL3ByaXZhdF9tZXNzYWdlcy5wbmcgYi94ZG9jcy9pbWFnZXMvcHJpdmF0X21lc3NhZ2VzLnBuZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMzk5MzY2Ci0tLSAvZGV2L251bGwKKysrIGIveGRvY3MvaW1hZ2VzL3ByaXZhdF9tZXNzYWdlcy5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL3JlY29yZGluZ3NfdGltZWxlaW5lLnBuZyBiL3hkb2NzL2ltYWdlcy9yZWNvcmRpbmdzX3RpbWVsZWluZS5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTNhZTY2MgotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL2ltYWdlcy9yZWNvcmRpbmdzX3RpbWVsZWluZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL3JpZ2h0X21hbmFnZW1lbnQucG5nIGIveGRvY3MvaW1hZ2VzL3JpZ2h0X21hbmFnZW1lbnQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhMjg3YTYKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9pbWFnZXMvcmlnaHRfbWFuYWdlbWVudC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL3N5c3RlbV9iYWNrdXAucG5nIGIveGRvY3MvaW1hZ2VzL3N5c3RlbV9iYWNrdXAucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmYzI5NjQKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9pbWFnZXMvc3lzdGVtX2JhY2t1cC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL3VzZXJfYWRkLnBuZyBiL3hkb2NzL2ltYWdlcy91c2VyX2FkZC5wbmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGVhZTk5YgotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL2ltYWdlcy91c2VyX2FkZC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL3ZvdGUucG5nIGIveGRvY3MvaW1hZ2VzL3ZvdGUucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxNmZmODYKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9pbWFnZXMvdm90ZS5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW1hZ2VzL3doaXRlYm9hcmQucG5nIGIveGRvY3MvaW1hZ2VzL3doaXRlYm9hcmQucG5nCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlNTM5MmYKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9pbWFnZXMvd2hpdGVib2FyZC5wbmcKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEveGRvY3MvaW5kZXgueG1sIGIveGRvY3MvaW5kZXgueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmNmU3M2EKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9pbmRleC54bWwKQEAgLTAsMCArMSw0NTggQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorIC0tPgorPGRvY3VtZW50PgorCisJPHByb3BlcnRpZXM+CisJCTx0aXRsZT5Ib21lPC90aXRsZT4KKwkJPGF1dGhvciBlbWFpbD0ic2ViYXdhZ25lckBhcGFjaGUub3JnIj4KKwkJCVNlYmFzdGlhbiBXYWduZXIKKwkJPC9hdXRob3I+CisJPC9wcm9wZXJ0aWVzPgorCisJPGJvZHk+CisKKwkJPHNlY3Rpb24gbmFtZT0iQXBhY2hlIE9wZW5NZWV0aW5ncyAtIEZlYXR1cmVzIGFuZCBvdmVydmlldyI+CisKKwkJCTxkaXYgaWQ9ImNvaW4tc2xpZGVyIj4KKwkJCQk8YSBocmVmPSIjIj4KKwkJCQkJPGltZyBzcmM9ImltYWdlcy9jdXRfY29uZmVyZW5jZV9yb29tLnBuZyIgYWx0PSJDb25mZXJlbmNlIFJvb20iIC8+CisJCQkJCTxzcGFuPgorCQkJCQkJPGI+QXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nPC9iPgorCQkJCQkJPGJyIC8+CisJCQkJCQlPcGVuTWVldGluZ3MgZW5hYmxlcyB5b3UgdG8gbWFrZSBBdWRpby9WaWRlbyBjb25mZXJlbmNpbmcuCisJCQkJCTwvc3Bhbj4KKwkJCQk8L2E+CisKKwkJCQk8YSBocmVmPSIjIj4KKwkJCQkJPGltZyBzcmM9ImltYWdlcy9jdXRfaW50ZWdyYXRlZF9jYWxlbmRhci5wbmciIGFsdD0iQ2FsZW5kYXIiIC8+CisJCQkJCTxzcGFuPgorCQkJCQkJPGI+Q2FsZW5kYXI8L2I+CisJCQkJCQk8YnIgLz4KKwkJCQkJCVlvdSBjYW4gY3JlYXRlIG1lZXRpbmdzIHdpdGggdGhlIGludGVncmF0ZWQgY2FsZW5kYXIsIGNvbmZlcmVuY2Ugcm9vbXMgYW5kIGludml0YXRpb25zIGFyZSBhdXRvbWF0aWNhbGx5IHNlbmQgdG8gZXZlcnlib2R5CisJCQkJCTwvc3Bhbj4KKwkJCQk8L2E+CisKKwkJCQk8YSBocmVmPSIjIj4KKwkJCQkJPGltZyBzcmM9ImltYWdlcy9jdXRfZmlsZV9leHBsb3Jlci5wbmciIGFsdD0iRmlsZSBFeHBsb3JlciIgLz4KKwkJCQkJPHNwYW4+CisJCQkJCQk8Yj5GaWxlIEV4cGxvcmVyPC9iPgorCQkJCQkJPGJyIC8+CisJCQkJCQlFYWNoIHJvb20gaGFzIGl0cyBvd24gRmlsZS1FeHBsb3Jlci4gRWFjaCB1c2VyIGhhcyBoaXMgb3duIHByaXZhdGUgZHJpdmUgYW5kIGFkZGl0aW9uYWxseSB0aGVyZSBpcyBhIHB1YmxpYyBkcml2ZSB0byBzaGFyZSBmaWxlcyB3aXRoIG90aGVyIHBhcnRpY2lwYW50cworCQkJCQk8L3NwYW4+CisJCQkJPC9hPgorCisJCQkJPGEgaHJlZj0iIyI+CisJCQkJCTxpbWcgc3JjPSJpbWFnZXMvY3V0X2ludGVncmF0aW9uX2FwaS5wbmciIGFsdD0iSW50ZWdyYXRpb24gQVBJIiAvPgorCQkJCQk8c3Bhbj4KKwkJCQkJCTxiPkludGVncmF0aW9uIEFQSTwvYj4KKwkJCQkJCTxiciAvPgorCQkJCQkJVGhlcmUgaXMgYSBTT0FQL1JFU1QgQVBJIHRvIGludGVncmF0ZSBpbnRvIHlvdXIgd2Vic2l0ZSBvciBpbnRyYW5ldCwgYXMgd2VsbAorCQkJCQkJYXMgTERBUC9BRFMgY29ubmVjdG9ycyBhbmQgVm9JUC9Bc3RlcmlzayBpbnRlZ3JhdGlvbiBtb2R1bGVzCisJCQkJCTwvc3Bhbj4KKwkJCQk8L2E+CisKKwkJCQk8YSBocmVmPSIjIj4KKwkJCQkJPGltZyBzcmM9ImltYWdlcy9jdXRfcHJpdmF0ZV9tZXNzYWdlcy5wbmciIGFsdD0iUHJpdmF0ZSBtZXNzYWdlcyIgLz4KKwkJCQkJPHNwYW4+CisJCQkJCQk8Yj5Qcml2YXRlIG1lc3NhZ2VzIGFuZCBjb250YWN0czwvYj4KKwkJCQkJCTxiciAvPgorCQkJCQkJRnJvbSB0aGUgcHJpdmF0ZSBtZXNzYWdlIGNlbnRlciB5b3UgY2FuIHNlbmQgaW52aXRhdGlvbnMgYnkgZW1haWwKKwkJCQkJCWFuZCBhdHRhY2ggbWVldGluZyBpbnZpdGF0aW9ucyB0byBldmVyeSBlbWFpbAorCQkJCQk8L3NwYW4+CisJCQkJPC9hPgorCisJCQkJPGEgaHJlZj0iIyI+CisJCQkJCTxpbWcgc3JjPSJpbWFnZXMvY3V0X2FkbWluaXN0cmF0aW9uX2NvbmZpZ3VyYXRpb24ucG5nIiBhbHQ9IkFkbWluaXN0cmF0aW9uIiAvPgorCQkJCQk8c3Bhbj4KKwkJCQkJCTxiPkFkbWluaXN0cmF0aW9uIGFuZCBDb25maWd1cmF0aW9uPC9iPgorCQkJCQkJPGJyIC8+CisJCQkJCQlZb3UgY2FuIGNvbmZpZ3VyZSB1c2Vycywgcm9vbXMsIHVzZXJncm91cHMsIGNvbmZpZyBzZXR0aW5ncyBvcgorCQkJCQkJZWRpdCBsYWJlbHMgd2l0aCBhIFdlYi1Gcm9udGVuZCBpbnRlZ3JhdGVkIGluIHRoZSBhcHBsaWNhdGlvbgorCQkJCQk8L3NwYW4+CisJCQkJPC9hPgorCisJCQkJPGEgaHJlZj0iIyI+CisJCQkJCTxpbWcgc3JjPSJpbWFnZXMvY3V0X3JlY29yZGluZ3NfcGxheWJhY2sucG5nIiBhbHQ9IlNoYXJlIGFuZCBSZWNvcmQiIC8+CisJCQkJCTxzcGFuPgorCQkJCQkJPGI+U2NyZWVuIHNoYXJpbmcgYW5kIFJlY29yZGluZzwvYj4KKwkJCQkJCTxiciAvPgorCQkJCQkJWW91IGNhbiBkbyBzY3JlZW4gc2hhcmluZyBhcyB3ZWxsIGFzIHJlY29yZGluZyBvZiB3aG9sZSBzZXNzaW9ucworCQkJCQkJaW5jbHVkaW5nIGF1ZGlvL3ZpZGVvLiBSZWNvcmRpbmdzIGNhbiBiZSBkb3dubG9hZGVkIGFzIEFWSS9GTFYgb3IKKwkJCQkJCXdhdGNoZWQgb25saW5lIGluIHRoZSBpbnRlZ3JhdGVkIHBsYXllci4KKwkJCQkJPC9zcGFuPgorCQkJCTwvYT4KKworCQkJPC9kaXY+CisKKworCQkJPHA+IE9wZW5tZWV0aW5ncyBwcm92aWRlcyB2aWRlbyBjb25mZXJlbmNpbmcsIGluc3RhbnQgbWVzc2FnaW5nLAorCQkJCXdoaXRlIGJvYXJkLCBjb2xsYWJvcmF0aXZlIGRvY3VtZW50IGVkaXRpbmcgYW5kIG90aGVyIGdyb3Vwd2FyZQorCQkJCXRvb2xzIHVzaW5nIEFQSSBmdW5jdGlvbnMgb2YgdGhlIFJlZDUgU3RyZWFtaW5nIFNlcnZlciBmb3IgUmVtb3RpbmcKKwkJCQlhbmQgU3RyZWFtaW5nLgorCQkJPC9wPgorCisJCQk8cD4KKwkJCQlPcGVuTWVldGluZ3MgaXMgYSBwcm9qZWN0IG9mIHRoZSBBcGFjaGUsIHRoZSBvbGQgcHJvamVjdAorCQkJCXdlYnNpdGUgYXQKKwkJCQk8YSBocmVmPSJodHRwOi8vY29kZS5nb29nbGUuY29tL3Avb3Blbm1lZXRpbmdzLyIgdGFyZ2V0PSJfQkxBTksiPkdvb2dsZUNvZGUKKwkJCQk8L2E+CisJCQkJd2lsbCByZWNlaXZlIG5vIHVwZGF0ZXMgYW55bW9yZS4gVGhlIHdlYnNpdGUgYXQgQXBhY2hlIGlzIHRoZSBvbmx5CisJCQkJcGxhY2UgdGhhdCByZWNlaXZlcyB1cGRhdGVzLgorCQkJPC9wPgorCisJCTwvc2VjdGlvbj4KKworCQk8c2VjdGlvbiBuYW1lPSJOZXdzIj4KKworCQkJPHA+CisJCQkgICAgPHN0cm9uZz4KKwkJCQkJT3Blbk1lZXRpbmdzIDIuMS4wIGlzIHJlbGVhc2VkISBQbGVhc2UgY2hlY2sgPGEgaHJlZj0iZG93bmxvYWRzLmh0bWwiPkRvd25sb2FkcyBwYWdlPC9hPi4gCisJCQkJCSgyMDEzLTA0LTAxKQorCQkJCTwvc3Ryb25nPgorCQkJCTxiciAvPgorCQkJICAgIDxzdHJvbmc+CisJCQkJCU9wZW5NZWV0aW5ncyBuZXcgVVJMLCB1cGRhdGUgeW91ciBmaWx0ZXJzIQorCQkJCQk8YSBocmVmPSJodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmciPm9wZW5tZWV0aW5ncy5hcGFjaGUub3JnPC9hPiBpcyB0aGUgbmV3IGhvbWUuIAorCQkJCQkoMjAxMy0wMS0yOCkKKwkJCQk8L3N0cm9uZz4KKwkJCQk8YnIgLz4KKwkJCSAgICA8c3Ryb25nPgorCQkJCQlPcGVuTWVldGluZ3Mgb24gdGhlIHJvYWQgdG8gZ3JhZHVhdGUgZnJvbSB0aGUgSW5jdWJhdG9yCisJCQkJCTxhIGhyZWY9Imh0dHBzOi8vYmxvZ3MuYXBhY2hlLm9yZy9vcGVubWVldGluZ3MvZW50cnkvb3Blbm1lZXRpbmdzX29uX3RoZV9yb2FkX3RvIiB0YXJnZXQ9Il9CTEFOSyIgcmVsPSJub2ZvbGxvdyI+YXQgb3VyIGJsb2c8L2E+CisJCQkJCSgyMDEyLTEyLTA3KQorCQkJCTwvc3Ryb25nPgorCQkJCTxiciAvPgorCQkJCTxzdHJvbmc+CisJCQkJCVNvbWUgc2xpZGVzIGZyb20gb3VyIEZhc3QgRmVhdGhlciBUcmFjayBhdCB0aGUgQXBhY2hlQ29uIEV1cm9wZSAyMDEyIAorCQkJCQk8YSBocmVmPSJodHRwczovL2Jsb2dzLmFwYWNoZS5vcmcvb3Blbm1lZXRpbmdzL2VudHJ5L29wZW5tZWV0aW5nc19hcGFjaGVjb25fcHJlc2VudGF0aW9uX3NsaWRlIiB0YXJnZXQ9Il9CTEFOSyIgcmVsPSJub2ZvbGxvdyI+YXQgb3VyIGJsb2c8L2E+CisJCQkJCSgyMDEyLTExLTE4KQorCQkJCTwvc3Ryb25nPgorCQkJCTxiciAvPgorCQkJCTxzdHJvbmc+CisJCQkJCVVwZGF0ZTogQnVpbGRzIGFyZSBhdmFpbGFibGUgYXQKKwkJCQkJPGEgaHJlZj0iaHR0cHM6Ly9idWlsZHMuYXBhY2hlLm9yZy92aWV3L00tUi92aWV3L09wZW5NZWV0aW5ncy8iIHRhcmdldD0iX0JMQU5LIiByZWw9Im5vZm9sbG93Ij5idWlsZHMuYXBhY2hlLm9yZzwvYT4KKwkJCQkJKDIwMTItMDgtMDMpCisJCQkJPC9zdHJvbmc+CisJCQkJPGJyIC8+CisJCQkJPHN0cm9uZz4KKwkJCQkJPGEgaHJlZj0iaHR0cHM6Ly9ibG9ncy5hcGFjaGUub3JnL29wZW5tZWV0aW5ncy9lbnRyeS9hcGFjaGVfb3Blbm1lZXRpbmdzXzJfMF9pbmN1YmF0aW5nIiB0YXJnZXQ9Il9CTEFOSyIgcmVsPSJub2ZvbGxvdyI+VmVyc2lvbiAyLjAgcmVsZWFzZWQ8L2E+CisJCQkJCSgyMDEyLTA3LTI2KQorCQkJCTwvc3Ryb25nPgorCQkJCTxiciAvPgorCQkJCTxzdHJvbmc+TmV3IGNvbW1pdHRlcjogVGltdXIgVGxldWtlbm92ICgyMDEyLTAzLTA2KTwvc3Ryb25nPgorCQkJCTxiciAvPgorCQkJCTxzdHJvbmc+CisJCQkJCTxhIGhyZWY9Imh0dHA6Ly9kZW1vLm9wZW5tZWV0aW5ncy5kZSIgdGFyZ2V0PSJfQkxBTksiIHJlbD0ibm9mb2xsb3ciPkRlbW8KKwkJCQkJCXNlcnZlcjwvYT4KKwkJCQkJdXBkYXRlZCB0byByMTIzNjE3MiAoMjAxMi0wMS0yNikKKwkJCQk8L3N0cm9uZz4KKwkJCQk8YnIgLz4KKwkJCQk8c3Ryb25nPk5ldyBjb21taXR0ZXI6IEdlcm1hbiBHcmVraG92ICgyMDExLTEyLTI2KTwvc3Ryb25nPgorCQkJCTxiciAvPgorCQkJCTxzdHJvbmc+T3Blbk1lZXRpbmdzIGhhcyBiZWVuIGFjY2VwdGVkIGludG8gdGhlIEFwYWNoZSBJbmN1YmF0b3IKKwkJCQkJKDIwMTEtMTEtMTIpLgorCQkJCTwvc3Ryb25nPgorCQkJPC9wPgorCisJCTwvc2VjdGlvbj4KKworCQk8c2VjdGlvbiBuYW1lPSJDb21tdW5pdHkiPgorCQkJPGRpdj4KKwkJCQk8c3Ryb25nPldobyB3ZSBhcmU8L3N0cm9uZz4KKwkJCQk8YmxvY2txdW90ZT4KKwkJCQkJPGEgaHJlZj0idGVhbS1saXN0Lmh0bWwiPkxpc3Qgb2YgY29tbWl0dGVyczwvYT4KKwkJCQkJLgorCQkJCTwvYmxvY2txdW90ZT4KKwkJCTwvZGl2PgorCQkJPGRpdj4KKwkJCQk8c3Ryb25nPlVzZXJzITwvc3Ryb25nPgorCQkJCTxibG9ja3F1b3RlPgorCQkJCQlXZSdkIGxvdmUgdG8gaGF2ZSB5b3UgaW52b2x2ZWQuIENoZWNrIG91dCB0aGUKKwkJCQkJPGEgaHJlZj0iZ2V0LWludm9sdmVkLmh0bWwiPkdldCBpbnZvbHZlZDwvYT4KKwkJCQkJLgorCQkJCTwvYmxvY2txdW90ZT4KKwkJCTwvZGl2PgorCQk8L3NlY3Rpb24+CisKKwkJPHNlY3Rpb24gbmFtZT0iRmVhdHVyZSBkZXRhaWxzIj4KKworCQkJPGZlYXR1cmUgdGl0bGU9IkF1ZGlvIGFuZCBWaWRlbyBDb25mZXJlbmNpbmciPgorCisJCQkJPGltYWdlIGZ1bGxocmVmPSJpbWFnZXMvRmVhdHVyZXNfU2NyZWVuX0NvbmZlcmVuY2VfUm9vbV9UaHVtYi5wbmciCisJCQkJCWhyZWY9ImltYWdlcy9GZWF0dXJlc19TY3JlZW5fQ29uZmVyZW5jZV9Sb29tX1RodW1iLnBuZyIgdGl0bGU9Ik9wZW5NZWV0aW5ncyBDb25mZXJlbmNlIFJvb20iCisJCQkJCXdpZHRoPSIyNTAiIGhlaWdodD0iMTc1IiAvPgorCQkJCTx0ZXh0PgorCQkJCTxkaXY+CisJCQkJCVRoZXJlIGFyZSBmb3VyIG9wdGlvbnMgdG8gdXNlIE9wZW5NZWV0aW5ncyBhdWRpby92aWRlbyBmdW5jdGlvbnMsCisJCQkJCXdoaWNoIHlvdSBjYW4gc2VsZWN0IGR1cmluZyBhIGNvbmZlcmVuY2Ugc2Vzc2lvbi4KKwkJCQkJPHVsPgorCQkJCQkJPGxpPmF1ZGlvICsgdmlkZW88L2xpPgorCQkJCQkJPGxpPmF1ZGlvIG9ubHk8L2xpPgorCQkJCQkJPGxpPnZpZGVvIG9ubHk8L2xpPgorCQkJCQkJPGxpPnBpY3R1cmUgb25seTwvbGk+CisJCQkJCTwvdWw+CisJCQkJCUFkZGl0aW9uYWwgeW91IGNhbiBjaGFuZ2UgdmlkZW8tL2F1ZGlvLXF1YWxpdHksIGNob29zZSBtdWx0aXBsZQorCQkJCQljYW1lcmEgcmVzb2x1dGlvbnMgKDQ6MywgMTY6OSBvciAzOjIpCisJCQkJCWFuZCBjaG9vc2UgeW91ciBpbnB1dCBkZXZpY2VzLgorCQkJCTwvZGl2PgorCQkJCTwvdGV4dD4KKwkJCTwvZmVhdHVyZT4KKworCQkJPGZlYXR1cmUgdGl0bGU9Ik1lZXRpbmcgcmVjb3JkaW5nIGFuZCBTY3JlZW4gc2hhcmluZyI+CisKKwkJCQk8aW1hZ2UgaHJlZj0iaW1hZ2VzL2Rlc2t0b3BzaGFyaW5nLnBuZyIgZnVsbGhyZWY9ImltYWdlcy9kZXNrdG9wc2hhcmluZy5wbmciCisJCQkJCXRpdGxlPSJTY3JlZW5zaGFyaW5nLS9yZWNvcmRpbmciIHdpZHRoPSIxNDAiIGhlaWdodD0iMTUwIiAvPgorCQkJCTxpbWFnZSBocmVmPSJpbWFnZXMvcmVjb3JkaW5nc190aW1lbGVpbmUucG5nIiBmdWxsaHJlZj0iaW1hZ2VzL3JlY29yZGluZ3NfdGltZWxlaW5lLnBuZyIKKwkJCQkJdGl0bGU9IkRldmljZSIgd2lkdGg9IjIwMCIgaGVpZ2h0PSIxMTUiIC8+CisJCQkJCQorCQkJCTx0ZXh0PgorCQkJCTxkaXY+CisJCQkJCTx1bD4KKwkJCQkJCTxsaT5SZWNvcmRlZCBzZXNzaW9ucyBjb250YWluIGV2ZXJ5dGhpbmcgaW5jbHVkaW5nIHNvdW5kIHJlY29yZGVkCisJCQkJCQkJZnJvbSBhbGwgYXVkaW8gc3RyZWFtcyBpbiBleGFjdGx5IHRoZSB3YXkgeW91J3ZlIHNlZW4gaXQgaW4gdGhlCisJCQkJCQkJY29uZmVyZW5jZS4KKwkJCQkJCTwvbGk+CisJCQkJCTwvdWw+CisJCQkJCTx1bD4KKwkJCQkJCTxsaT5SZWNvcmRlZCBzZXNzaW9ucyBjYW4gYmUgZG93bmxvYWRlZCBhcyBBVkkvRkxWIGZpbGVzLjwvbGk+CisJCQkJCTwvdWw+CisJCQkJCTx1bD4KKwkJCQkJCTxsaT5Qb3NzaWJpbGl0eSB0byBzZWxlY3QgYSBzY3JlZW4gYXJlYSBmb3Igc2hhcmluZy48L2xpPgorCQkJCQk8L3VsPgorCQkJCQk8dWw+CisJCQkJCQk8bGk+RGlmZmVyZW50IHF1YWxpdHkgc3RlcHMgZm9yIFNjcmVlbnNoYXJpbmcuPC9saT4KKwkJCQkJPC91bD4KKwkJCQkJPHVsPgorCQkJCQkJPGxpPldhdGNoIGFuZCBvcmdhbml6ZSByZWNvcmRpbmdzIGluIGFuIGludGVncmF0ZWQgRHJhZyBhbmQgRHJvcAorCQkJCQkJCUZpbGUtRXhwbG9yZXIKKwkJCQkJCTwvbGk+CisJCQkJCTwvdWw+CisJCQkJPC9kaXY+CisJCQkJPC90ZXh0PgorCQkJPC9mZWF0dXJlPgorCisJCQk8ZmVhdHVyZSB0aXRsZT0iRmlsZSBFeHBsb3JlciI+CisKKwkJCQk8aW1hZ2UgaHJlZj0iaW1hZ2VzL2ZpbGVfc21hbC5wbmciIHRpdGxlPSJGaWxlIEV4cGxvcmVyIgorCQkJCQlmdWxsaHJlZj0iaW1hZ2VzL2ZpbGVfc21hbC5wbmciIHdpZHRoPSIxMzUiIGhlaWdodD0iMjAwIiAvPgorCQkJCTx0ZXh0PgorCQkJCTxkaXY+CisJCQkJCUFkdmFuY2VkIEZpbGUtRXhwbG9yZXIgaW4gZXZlcnkgY29uZmVyZW5jZSByb29tLCBEcmFnIGFuZCBEcm9wCisJCQkJCWludGVyZmFjZSBmb3IgbWFuYWdpbmcgdXBsb2FkZWQgZmlsZXMsIGluY2x1ZGluZyB0aGUgcG9zc2liaWxpdHkgdG8KKwkJCQkJY3JlYXRlIGEgZG9jdW1lbnQgdHJlZSB3aXRoIGZvbGRlcnMuCisJCQkJCTxiciAvPgorCQkJCQk8YnIgLz4KKwkJCQkJUHJpdmF0ZSBhbmQgUHVibGljIERyaXZlIGluCisJCQkJCUZpbGUtRXhwbG9yZXIuIFRoZSBGaWxlLUV4cGxvcmVyIGhhcyB0d28KKwkJCQkJZGlmZmVyZW50IHZpZXdzLCBvbmUgaXMgdGhlCisJCQkJCTxiPlByaXZhdGUgRHJpdmU8L2I+CisJCQkJCWFuZCB0aGUgb3RoZXIgdGhlCisJCQkJCTxiPlB1YmxpYyBEcml2ZTwvYj4KKwkJCQkJLiBUaGUgUHJpdmF0ZSBEcml2ZQorCQkJCQlhbHdheXMgY29udGFpbnMgdGhlIHNhbWUgZmlsZXMuCisJCQkJCVRob3NlIGZpbGVzIGFyZQorCQkJCQl2aXNpYmxlIG9ubHkgdG8gdGhlCisJCQkJCXVzZXIgY3VycmVudGx5IGxvZ2dlZGluLiBUaGUKKwkJCQkJUHVibGljIERyaXZlIGlzIG5vdAorCQkJCQlib3VuZCB0byB0aGUgdXNlciwKKwkJCQkJYnV0IHRvIHRoZSBjb25mZXJlbmNlIHJvb20KKwkJCQkJaW5zdGVhZC4gQWxsIHVzZXJzIGluCisJCQkJCXRoZSBjb25mZXJlbmNlIHJvb20KKwkJCQkJaGF2ZSBhY2Nlc3MgdG8gdGhlIFB1YmxpYworCQkJCQlEcml2ZS4KKwkJCQk8L2Rpdj4KKwkJCQk8L3RleHQ+CisJCQk8L2ZlYXR1cmU+CisKKwkJCTxmZWF0dXJlIHRpdGxlPSJNb2RlcmF0aW5nIFN5c3RlbSI+CisKKwkJCQk8aW1hZ2UgaHJlZj0iaW1hZ2VzL3JpZ2h0X21hbmFnZW1lbnQucG5nIiB0aXRsZT0iUmlnaHQgbWFuYWdlbWVudCIKKwkJCQkJZnVsbGhyZWY9ImltYWdlcy9yaWdodF9tYW5hZ2VtZW50LnBuZyIgd2lkdGg9IjEzNSIgaGVpZ2h0PSIyMTYiIC8+CisJCQkJPHRleHQ+CisJCQkJPGRpdj4KKwkJCQkJRHVyaW5nIGEgY29uZmVyZW5jZSwgdGhlIG1vZGVyYXRvciBjYW4gYWRqdXN0IHRoZSB1c2VyIHBlcm1pc3Npb24KKwkJCQkJdG8gZXZlcnkgdXNlciBpbmRpdmlkdWFsbHkgLgorCQkJCQk8dWw+CisJCQkJCQk8bGk+CisJCQkJCQkJPGltZyBjbGFzcz0iYWxpZ25ub25lIiB0aXRsZT0iQWxsb3cgbW9kYXJhdGlvbiIgc3JjPSJpbWFnZXMvdXNlcl9hZGQucG5nIgorCQkJCQkJCQlhbHQ9IiIgLz4KKwkJCQkJCQlBbGxvdy9EZW55IG1vZGVyYXRpb24KKwkJCQkJCTwvbGk+CisJCQkJCQk8bGk+CisJCQkJCQkJPGltZyBjbGFzcz0iYWxpZ25ub25lIiB0aXRsZT0iV2hpdGVib2FyZCBBY2Nlc3MiIHNyYz0iaW1hZ2VzL3BlbmNpbF9hZGQucG5nIgorCQkJCQkJCQlhbHQ9IiIgLz4KKwkJCQkJCQlBbGxvdy9EZW55IHRvIGRyYXcgb24gd2hpdGUgYm9hcmQKKwkJCQkJCTwvbGk+CisJCQkJCQk8bGk+CisJCQkJCQkJPGltZyBjbGFzcz0iYWxpZ25ub25lIiB0aXRsZT0iU2NyZWVuc2hhcmUiIHNyYz0iaW1hZ2VzL21vbml0b3JfYWRkLnBuZyIKKwkJCQkJCQkJYWx0PSIiIC8+CisJCQkJCQkJQWxsb3cvRGVueSBzY3JlZW4tc2hhcmluZy9yZWNvcmQgc2NyZWVuCisJCQkJCQk8L2xpPgorCQkJCQkJPGxpPgorCQkJCQkJCTxpbWcgY2xhc3M9ImFsaWdubm9uZSIgdGl0bGU9IlJlbW90ZSBjb250cm9sIiBzcmM9ImltYWdlcy9tb3VzZV9hZGQucG5nIgorCQkJCQkJCQlhbHQ9IiIgLz4KKwkJCQkJCQlBbGxvdy9EZW55IFJlbW90ZSBDb250cm9sIFNjcmVlbgorCQkJCQkJPC9saT4KKwkJCQkJCTxsaT4KKwkJCQkJCQk8aW1nIGNsYXNzPSJhbGlnbm5vbmUiIHRpdGxlPSJSZW1vdGUgY29udHJvbCIgc3JjPSJpbWFnZXMvbWljcm9fc21hbGwucG5nIgorCQkJCQkJCQlhbHQ9IiIgLz4KKwkJCQkJCQlHaXZlIGV4Y2x1c2l2ZSBhdWRpbyB0byBvdGhlcnMgb3Igc2VsZgorCQkJCQkJPC9saT4KKwkJCQkJCTxsaT4KKwkJCQkJCQk8aW1nIGNsYXNzPSJhbGlnbm5vbmUiIHRpdGxlPSJWaWRlbyBBdWRpbyIgc3JjPSJpbWFnZXMvYXVkaW9fYW5kX3ZpZGVvLnBuZyIKKwkJCQkJCQkJYWx0PSIiIC8+CisJCQkJCQkJKFJlLSkgU3RhcnQgQXVkaW8sIFZpZGVvIG9yIERldmljZSBzZXR0aW5ncworCQkJCQkJPC9saT4KKwkJCQkJPC91bD4KKwkJCQk8L2Rpdj4KKwkJCQk8L3RleHQ+CisJCQk8L2ZlYXR1cmU+CisKKworCQkJPGZlYXR1cmUgdGl0bGU9Ik11bHRpLVdoaXRlYm9hcmQgYW5kIENoYXQiPgorCisJCQkJPGltYWdlIGhyZWY9ImltYWdlcy93aGl0ZWJvYXJkLnBuZyIgZnVsbGhyZWY9ImltYWdlcy93aGl0ZWJvYXJkLnBuZyIKKwkJCQkJdGl0bGU9IldoaXRlYm9hcmQiIHdpZHRoPSIyNDAiIGhlaWdodD0iMTY1IiAvPgorCQkJCTxpbWFnZSBocmVmPSJpbWFnZXMvY2hhdC5wbmciIGZ1bGxocmVmPSJpbWFnZXMvY2hhdC5wbmciCisJCQkJCXRpdGxlPSJDaGF0IGluIENvbmZlcmVuY2UgUm9vbSIgd2lkdGg9IjI0MCIgaGVpZ2h0PSI2OCIgLz4KKwkJCQk8dGV4dD4KKwkJCQk8ZGl2PgorCQkJCQlNdWx0aS1XaGl0ZWJvYXJkLCB5b3UgY2FuIGFkZCBuZXcgd2hpdGVib2FyZCBpbnN0YW5jZXMsIGVhY2gKKwkJCQkJd2hpdGUKKwkJCQkJYm9hcmQgY2FuIGhhdmUgdGhlIGZ1bGwgcmFuZ2Ugb2YgdG9vbHMgYW5kIGRvY3VtZW50cyBpbnNpZGUuCisJCQkJCTxiciAvPgorCQkJCQk8YnIgLz4KKwkJCQkJU2F2ZSB3aGl0ZSBib2FyZHMuIFlvdSBjYW4gc2F2ZSBlYWNoIHdoaXRlYm9hcmQgaW5zdGFuY2UgYXMgYSBmaWxlLgorCQkJCQlUaGUgZmlsZSBpcyBsb2NhdGVkIGluIHRoZSBGaWxlLUV4cGxvcmVyIGFuZCBjYW4gYmUgZHJhZyBuJyBkcm9wJ2VkCisJCQkJCXRvIHRoZSB3aGl0ZSBib2FyZCBhZ2FpbiBhbmQgb3JnYW5pemVkIGxpa2UgYW55IG90aGVyIGRvY3VtZW50LAorCQkJCQlpbWFnZSBvciBmb2xkZXIuCisJCQkJCTxiciAvPgorCQkJCQk8YnIgLz4KKwkJCQkJV2hpdGUgYm9hcmQgd2l0aCBkcmF3aW5nLCB3cml0aW5nLCBEcmFnIG4nIERyb3AsIFJlc2l6aW5nLCBJbWFnZXMKKwkJCQkJKERyYWcgbicKKwkJCQkJRHJvcCBmcm9tIEZpbGUtRXhwbG9yZXIpLCBTeW1ib2wocykvQ2xpcGFydHMgLgorCQkJCQk8YnIgLz4KKwkJCQkJPGJyIC8+CisJCQkJCUZ1bGwtZml0IGRvZXMgcmVzY2FsZSB0aGUgZG9jdW1lbnQgb24gdGhlIHNjcmVlbiB0byBiZSAxMDAlIHZpc2libGUKKwkJCQkJb24gYWxsCisJCQkJCXNjcmVlbnMgbm8gbWF0dGVyIHdoYXQga2luZCBvZiBzY3JlZW4gcmVzb2x1dGlvbiBkaWZmZXJlbnQKKwkJCQkJdXNlcnMKKwkJCQkJaGF2ZS4KKwkJCQkJPGJyIC8+CisJCQkJCTxiciAvPgorCQkJCQlZb3UgY2FuIGltcG9ydCBmcm9tIGEgd2lkZSByYW5nZSBvZiBkb2N1bWVudCBmb3JtYXRzIChQREYsIERPQywKKwkJCQkJT0RULCBQUFQsIGV0IGNldGVyYS4uLikKKwkJCQk8L2Rpdj4KKwkJCQk8L3RleHQ+CisJCQk8L2ZlYXR1cmU+CisKKwkJCTxmZWF0dXJlIHRpdGxlPSJVc2VyIGFuZCByb29tIG1hbmFnZW1lbnQiPgorCisJCQkJPGltYWdlIGhyZWY9ImltYWdlcy9kYXNoYm9hcmQucG5nIiBmdWxsaHJlZj0iaW1hZ2VzL2Rhc2hib2FyZC5wbmciCisJCQkJCXRpdGxlPSJEYXNoYm9hcmQgd2l0aCBNeVJvb21zIiB3aWR0aD0iMjUwIiBoZWlnaHQ9IjEzMCIgLz4KKwkJCQk8dGV4dD4KKwkJCQk8ZGl2PgorCQkJCQlZb3UgY2FuIG1hbmFnZSB1c2VycyBhbmQgbXVsdGlwbGUgb3JnYW5pemF0aW9ucyBpbiBhIHNpbmdsZQorCQkJCQlPcGVuTWVldGluZ3MgaW5zdGFuY2UuIFlvdSBjYW4gYWxzbyBjcmVhdGUgdXNlcnMgdGhhdCBvbmx5IGhhdmUKKwkJCQkJYWNjZXNzIHZpYSB0aGUgU09BUC1BUEkuCisJCQkJCTxiciAvPgorCQkJCQk8YnIgLz4KKwkJCQkJTXlSb29tcyBzZWN0aW9uLiBFYWNoIHVzZXIgaGFzIGJ5IGRlZmF1bHQgMiBwZXJzb25hbCByb29tcyB0aGF0CisJCQkJCWFyZQorCQkJCQlhbHdheXMgYWNjZXNzaWJsZSBleGNsdXNpdmVseSBmb3IgdGhhdCB1c2VyLiBUaGVyZSBhcmUgYnV0dG9ucworCQkJCQl0bworCQkJCQllbnRlciB0aG9zZSByb29tcyBmcm9tIHRoZSBEYXNoYm9hcmQuCisJCQkJCTxiciAvPgorCQkJCQk8YnIgLz4KKwkJCQkJWW91IGNhbiBhc3NpZ24gY29uZmVyZW5jZSByb29tIHRvIGFsbCB1c2Vycywgb3IgeW91IGNhbiBhc3NpZ24gdGhlbQorCQkJCQlvbmx5IHRvIHNwZWNpZmljIHVzZXItZ3JvdXBzLgorCQkJCTwvZGl2PgorCQkJCTwvdGV4dD4KKwkJCTwvZmVhdHVyZT4KKworCQkJPGZlYXR1cmUgdGl0bGU9IlByaXZhdGUgbWVzc2FnZSBjZW50ZXIiPgorCQkJCTxpbWFnZSBocmVmPSJpbWFnZXMvcHJpdmF0X21lc3NhZ2VzLnBuZyIgZnVsbGhyZWY9ImltYWdlcy9wcml2YXRfbWVzc2FnZXMucG5nIgorCQkJCQl0aXRsZT0iUHJpdmF0ZSBNZXNzYWdlcyBhbmQgQ29udGFjdCBTZWFyY2giIHdpZHRoPSIyMzAiIGhlaWdodD0iMTI1IiAvPgorCQkJCTx0ZXh0PgorCQkJCTxkaXY+CisJCQkJCVNlbmQgdXNlcnMgbWVzc2FnZXMgYW5kIG9yZ2FuaXplIHRoZW0gaW4gZm9sZGVycy4gWW91IGNhbiBib29rCisJCQkJCWNvbmZlcmVuY2Ugcm9vbXMgYnkgc2VuZGluZyBwcml2YXRlIG1lc3NhZ2VzLiBUaGUgYm9va2VkIGV2ZW50CisJCQkJCWF1dG9tYXRpY2FsbHkgaXMgaW4geW91ciBhbmQgdGhlIHBhcnRpY2lwYW50cyBjYWxlbmRhciwgY2hhbmdlcyB0bworCQkJCQl0aGF0IGV2ZW50IHdpbGwgYmUgcG9wdWxhdGVkIHRvIGFsbCB1c2VycyBib29rZWQgdG8gdGhlIGV2ZW50LgorCQkJCQk8YnIgLz4KKwkJCQkJPGJyIC8+CisJCQkJCVVzZXIgY29udGFjdHMsIHlvdSBjYW4gc2VhcmNoIHVzZXJzIGFuZCBhZGQgdGhlbSB0byB5b3VyIGNvbnRhY3RzLgorCQkJCQlZb3UKKwkJCQkJY2FuIGV2ZW4gZ2l2ZSB0aGVtIHRoZSByaWdodCB0byBzZWUgeW91ciBjYWxlbmRhci4KKwkJCQk8L2Rpdj4KKwkJCQk8L3RleHQ+CisJCQk8L2ZlYXR1cmU+CisKKwkJCTxmZWF0dXJlIHRpdGxlPSJQbGFuIG1lZXRpbmdzIHdpdGggaW50ZWdyYXRlZCBjYWxlbmRhciI+CisJCQkJPGltYWdlIGhyZWY9ImltYWdlcy9jYWxlbmRhci5wbmciIGZ1bGxocmVmPSJpbWFnZXMvY2FsZW5kYXIucG5nIgorCQkJCQl0aXRsZT0iQ2FsZW5kYXIiIHdpZHRoPSIyMDAiIGhlaWdodD0iMTE1IiAvPgorCQkJCTx0ZXh0PgorCQkJCTxkaXY+CisJCQkJCTx1bD4KKwkJCQkJCTxsaT5QbGFuIHlvdXIgY29uZmVyZW5jaW5nIGFuZCBpbnZpdGUgYXR0ZW5kZWVzIGZyb20gT3Blbk1lZXRpbmdzCisJCQkJCQkJb3IgRXh0ZXJuYWwuCisJCQkJCQk8L2xpPgorCQkJCQkJPGxpPlRoZSBpbnZpdGVkIGF0dGVuZGVlcyB3aWxsIHJlY2lldmUgYW4gRS1tYWlsIHdpdGggZGV0YWlscyB0bworCQkJCQkJCXRoZSBtZWV0aW5ncyBhbmQgYSBsaW5rIHdpdGggYSBzZWN1cmUgaGFzaCB0byB0aGUgY29uZmVyZW5jZQorCQkJCQkJCXJvb20uCisJCQkJCQk8L2xpPgorCQkJCQkJPGxpPlNoYXJlIHlvdXIgY2FsZW5kYXIgd2l0aCB5b3VyIGNvbnRhY3RzLjwvbGk+CisJCQkJCTwvdWw+CisJCQkJPC9kaXY+CisJCQkJPC90ZXh0PgorCQkJPC9mZWF0dXJlPgorCisJCQk8ZmVhdHVyZSB0aXRsZT0iUG9sbHMgYW5kIFZvdGVzIj4KKwkJCQk8aW1hZ2UgaHJlZj0iaW1hZ2VzL3BvbGwucG5nIiBmdWxsaHJlZj0iaW1hZ2VzL3BvbGwucG5nIgorCQkJCQl0aXRsZT0iQ3JlYXRlIGEgcG9sbCIgd2lkdGg9IjI1MCIgaGVpZ2h0PSIyNTAiIC8+CisJCQkJPHRleHQ+CisJCQkJPGRpdj4KKwkJCQkJWW91IGNhbiBjcmVhdGUgYSBwb2xsIHdpdGggeWVzL25vIG9yIDEtMTAgcXVlc3Rpb25zLCBsZXQgdGhlCisJCQkJCXVzZXIKKwkJCQkJdm90ZSBhbmQgc2VlIHRoZSB2b3RpbmcgcmVzdWx0cy4KKwkJCQkJPGJyIC8+CisJCQkJCTxiciAvPgorCQkJCQlQb2xscyBjYW4gYmUgc3RvcmVkIGFuZCByZXN1bHRzIHZpZXdlZCBhcyBwaWUtY2hhcnQKKwkJCQk8L2Rpdj4KKwkJCQk8L3RleHQ+CisJCQk8L2ZlYXR1cmU+CisKKwkJCTxmZWF0dXJlIHRpdGxlPSJCYWNrdXAiPgorCQkJCTxpbWFnZSBocmVmPSJpbWFnZXMvYmFja3VwLnBuZyIgZnVsbGhyZWY9ImltYWdlcy9iYWNrdXAucG5nIgorCQkJCQl0aXRsZT0iQmFja3VwIiB3aWR0aD0iMjUwIiBoZWlnaHQ9IjYwIiAvPgorCQkJCTx0ZXh0PgorCQkJCTxkaXY+CisJCQkJCVlvdSBjYW4gYmFja3VwIGFsbCB1c2VyLWdlbmVyYXRlZCBkYXRhIGluY2x1ZGluZyBmaWxlcworCQkJCQl1cGxvYWRlZCBieSB0aGUgdXNlcnMgaW4gYSBzaW5nbGUgWklQIGZpbGUgYW5kIGltcG9ydCB0aGF0IFpJUCBpbnRvCisJCQkJCWEgbmV3IGluc3RhbGxhdGlvbiBvZiBPcGVuTWVldGluZ3MgYWdhaW4uCisJCQkJPC9kaXY+CisJCQkJPC90ZXh0PgorCQkJPC9mZWF0dXJlPgorCisKKwkJPC9zZWN0aW9uPgorCisJPC9ib2R5PgorPC9kb2N1bWVudD4KKworCisKKworCmRpZmYgLS1naXQgYS94ZG9jcy9pbnN0YWxsYXRpb24ueG1sIGIveGRvY3MvaW5zdGFsbGF0aW9uLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDhjYTQ2Ci0tLSAvZGV2L251bGwKKysrIGIveGRvY3MvaW5zdGFsbGF0aW9uLnhtbApAQCAtMCwwICsxLDMzMiBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8IS0tDQorICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKw0KKyAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisNCisgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorIC0tPg0KKzxkb2N1bWVudD4NCisNCisJPHByb3BlcnRpZXM+DQorCQk8dGl0bGU+SG9tZTwvdGl0bGU+DQorCQk8YXV0aG9yIGVtYWlsPSJzZWJhd2FnbmVyQGFwYWNoZS5vcmciPg0KKwkJCU9wZW5NZWV0aW5ncyBUZWFtDQorCQk8L2F1dGhvcj4NCisJPC9wcm9wZXJ0aWVzPg0KKw0KKwk8Ym9keT4NCisNCisJCTxzZWN0aW9uIG5hbWU9Ik9wZW5NZWV0aW5ncyBJbnN0YWxsYXRpb24iPg0KKw0KKwkJCTxwPg0KKwkJCQlUbyB1cGRhdGUgZnJvbSBwYXN0IHZlcnNpb25zIG9yIG1pZ3JhdGUgc2VlDQorCQkJCTxhIGhyZWY9IlVwZ3JhZGUuaHRtbCI+VXBncmFkZTwvYT4NCisJCQkJLg0KKwkJCQlJZiB5b3UgYXJlIGxvb2tpbmcgZm9yIGNvbW1lcmNpYWwgaGVscCBoYXZlIGEgbG9vayBhdA0KKwkJCQk8YSBocmVmPSJjb21tZXJjaWFsLXN1cHBvcnQuaHRtbCIgdGFyZ2V0PSJfQkxBTksiIHJlbD0ibm9mb2xsb3ciPmNvbW1lcmNpYWwNCisJCQkJCXN1cHBvcnQNCisJCQkJPC9hPg0KKwkJCQkuDQorCQkJPC9wPg0KKwkJCTxkaXY+DQorCQkJCTxhIGhyZWY9ImRvd25sb2Fkcy5odG1sIiByZWw9Im5vZm9sbG93Ij4NCisJCQkJCTxpbWcgc3JjPSJpbWFnZXMvaW5zdGFsbGF0aW9uX2luc3RydWN0aW9ucy5wbmciIGFsdD0iR3JhZmlrIiAvPg0KKwkJCQk8L2E+DQorCQkJCTxwPg0KKwkJCQkJPGk+Tm90ZTogT3Blbk1lZXRpbmdzIHJlcXVpcmVzIFNVTi9PcmFjbGUgSlJFIDYsIG5vdCBvcGVuSkRLITwvaT4NCisJCQkJCTxiciAvPg0KKwkJCQkJPGk+DQorCQkJCQkJU2luY2UgVmVyc2lvbiAyLjAgeW91IGNhbiBhbHNvIGluc3RhbGwgT3Blbk1lZXRpbmdzIGZyb20gY29tbWFuZA0KKwkJCQkJCWxpbmUuIEp1c3QgY2QgdG8gdGhlIHVucGFja2VkIGFyY2hpdmUgYW5kIHR5cGUgLi9hZG1pbi5zaCBvcg0KKwkJCQkJCWFkbWluLmJhdCwgcGxlYXNlIHNlZQ0KKwkJCQkJCTxhIGhyZWY9IkNvbW1hbmRMaW5lQWRtaW4uaHRtbCIgdGFyZ2V0PSJfQkxBTksiIHJlbD0ibm9mb2xsb3ciPkNvbW1hbmQgTGluZSBBZG1pbg0KKwkJCQkJCTwvYT4NCisJCQkJCQlmb3IgbW9yZSBvcHRpb25zDQorCQkJCQk8L2k+DQorCQkJCTwvcD4NCisJCQk8L2Rpdj4NCisJCQk8b2w+DQorCQkJCTxsaT4NCisJCQkJCTxiPlJlY29tbWVuZGF0aW9uIGZvciBwcm9kdWN0aW9uIGVudmlyb25tZW50PC9iPg0KKwkJCQkJPGRpdiBzdHlsZT0ibWFyZ2luLXRvcDogMTBweDsgbWFyZ2luLWJvdHRvbToxMHB4Ij4NCisJCQkJCQlCeSBkZWZhdWx0IE9wZW5NZWV0aW5ncyB1c2VzIHRoZSBpbnRlZ3JhdGVkIEFwYWNoZSBEZXJieSBkYXRhYmFzZS4NCisJCQkJCQlGb3IgcHJvZHVjdGlvbiBlbnZpcm9ubWVudCB5b3Ugc2hvdWxkIGNvbnNpZGVyIHVzaW5nDQorCQkJCQkJPGEgaHJlZj0iTXlTUUxDb25maWcuaHRtbCI+TXlTUUw8L2E+DQorCQkJCQkJLA0KKwkJCQkJCTxhIGhyZWY9IlBvc3RncmVzQ29uZmlnLmh0bWwiPlBvc3RncmVzPC9hPg0KKwkJCQkJCSwgb3IgZm9yIGV4YW1wbGUNCisJCQkJCQk8YSBocmVmPSJJQk1EQjJDb25maWcuaHRtbCI+SUJNIERCMjwvYT4NCisJCQkJCQksIG9yDQorCQkJCQkJPGEgaHJlZj0iT3JhY2xlQ29uZmlnLmh0bWwiPk9yYWNsZTwvYT4NCisJCQkJCTwvZGl2Pg0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+DQorCQkJCQk8Yj5FbmFibGluZyBJbWFnZSBVcGxvYWQgYW5kIGltcG9ydCB0byB3aGl0ZWJvYXJkPC9iPg0KKwkJCQkJPGRpdiBzdHlsZT0ibWFyZ2luLXRvcDogMTBweDsgbWFyZ2luLWJvdHRvbToxMHB4Ij4NCisJCQkJCQlJbnN0YWxsDQorCQkJCQkJPGI+SW1hZ2VNYWdpY2s8L2I+DQorCQkJCQkJb24gdGhlIHNlcnZlciwgeW91IGNhbiBnZXQgbW9yZSBpbmZvcm1hdGlvbiBvbg0KKwkJCQkJCTxhIGhyZWY9Imh0dHA6Ly93d3cuaW1hZ2VtYWdpY2sub3JnIiByZWw9Im5vZm9sbG93IiB0YXJnZXQ9Il9CTEFOSyI+aHR0cDovL3d3dy5pbWFnZW1hZ2ljay5vcmcNCisJCQkJCQk8L2E+DQorCQkJCQkJcmVnYXJkaW5nIGluc3RhbGxhdGlvbi4gVGhlIGluc3RydWN0aW9ucw0KKwkJCQkJCWZvciBpbnN0YWxsYXRpb24gY2FuIGJlDQorCQkJCQkJZm91bmQgdGhlcmUNCisJCQkJCQk8YSBocmVmPSJodHRwOi8vd3d3LmltYWdlbWFnaWNrLm9yZy9zY3JpcHQvYmluYXJ5LXJlbGVhc2VzLnBocCINCisJCQkJCQkJdGFyZ2V0PSJfQkxBTksiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly93d3cuaW1hZ2VtYWdpY2sub3JnL3NjcmlwdC9iaW5hcnktcmVsZWFzZXMucGhwDQorCQkJCQkJPC9hPg0KKwkJCQkJCSwNCisJCQkJCQlob3dldmVyIG9uDQorCQkJCQkJbW9zdCBMaW51eCBzeXN0ZW1zIHlvdSBjYW4gZ2V0IGl0IHZpYSB5b3VyIGZhdm9yaXRlDQorCQkJCQkJcGFja2FnZQ0KKwkJCQkJCW1hbmFnZXJzIChhcHQtZ2V0IGl0KQ0KKwkJCQkJPC9kaXY+DQorCQkJCTwvbGk+DQorCQkJCTxsaT4NCisJCQkJCTxiPkVuYWJsaW5nIGltcG9ydCBvZiBQREZzIGludG8gd2hpdGVib2FyZDwvYj4NCisJCQkJCTxkaXYgc3R5bGU9Im1hcmdpbi10b3A6IDEwcHg7IG1hcmdpbi1ib3R0b206MTBweCI+DQorCQkJCQkJPHVsPg0KKwkJCQkJCQk8bGk+DQorCQkJCQkJCQlJbnN0YWxsDQorCQkJCQkJCQk8Yj5HaG9zdFNjcmlwdDwvYj4NCisJCQkJCQkJCW9uIHRoZSBzZXJ2ZXIsIHlvdSBjYW4gZ2V0IG1vcmUNCisJCQkJCQkJCWluZm9ybWF0aW9uIG9uDQorCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vd3d3Lmdob3N0c2NyaXB0LmNvbS9kb3dubG9hZC9nc2RubGQuaHRtbCIgdGFyZ2V0PSJfQkxBTksiDQorCQkJCQkJCQkJcmVsPSJub2ZvbGxvdyI+DQorCQkJCQkJCQkJaHR0cDovL3d3dy5naG9zdHNjcmlwdC5jb20vZG93bmxvYWQvZ3NkbmxkLmh0bWwNCisJCQkJCQkJCTwvYT4NCisJCQkJCQkJCXJlZ2FyZGluZw0KKwkJCQkJCQkJaW5zdGFsbGF0aW9uLiBUaGUgaW5zdHJ1Y3Rpb25zIGZvciBpbnN0YWxsYXRpb24gY2FuIGJlDQorCQkJCQkJCQlmb3VuZA0KKwkJCQkJCQkJdGhlcmUsIGhvd2V2ZXIgb24gbW9zdCBMaW51eCBzeXN0ZW1zIHlvdSBjYW4gZ2V0IGl0IHZpYQ0KKwkJCQkJCQkJeW91cg0KKwkJCQkJCQkJZmF2b3JpdGUgcGFja2FnZSBtYW5hZ2VycyAoYXB0LWdldCBpdCkuDQorCQkJCQkJCTwvbGk+DQorCQkJCQkJCTxsaT4NCisJCQkJCQkJCUluc3RhbGwNCisJCQkJCQkJCTxiPlNXRlRvb2xzPC9iPg0KKwkJCQkJCQkJb24gdGhlIHNlcnZlciwgeW91IGNhbiBnZXQgbW9yZSBpbmZvcm1hdGlvbg0KKwkJCQkJCQkJb24NCisJCQkJCQkJCTxhIGhyZWY9Imh0dHA6Ly93d3cuc3dmdG9vbHMub3JnLyIgdGFyZ2V0PSJfQkxBTksiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly93d3cuc3dmdG9vbHMub3JnLw0KKwkJCQkJCQkJPC9hPg0KKwkJCQkJCQkJcmVnYXJkaW5nIGluc3RhbGxhdGlvbi4gU29tZSBvZiB0aGUNCisJCQkJCQkJCUxpbnV4IGRpc3RyaWJ1dGlvbnMgYWxyZWFkeQ0KKwkJCQkJCQkJaGF2ZSBpdCBpbiB0aGVyZSBwYWNrYWdlIG1hbmFnZXIgKHNlZQ0KKwkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL3BhY2thZ2VzLmRlYmlhbi5vcmcvdW5zdGFibGUvdXRpbHMvc3dmdG9vbHMiDQorCQkJCQkJCQkJdGFyZ2V0PSJfQkxBTksiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9wYWNrYWdlcy5kZWJpYW4ub3JnL3Vuc3RhYmxlL3V0aWxzL3N3ZnRvb2xzDQorCQkJCQkJCQk8L2E+DQorCQkJCQkJCQkpLCB0aGUNCisJCQkJCQkJCXJlY29tbWVuZGVkIHZlcnNpb24gb2YgU1dGVG9vbHMgaXMgMC45IGFzIHByaW9yIHZlcnNpb24NCisJCQkJCQkJCWhhdmUgYQ0KKwkJCQkJCQkJYnVnIHRoYXQgZG9lcyBsZWFkIHRvIHdyb25nIG9iamVjdCBkaW1lbnNpb25zIGF0DQorCQkJCQkJCQl3aGl0ZWJvYXJkDQorCQkJCQkJCTwvbGk+DQorCQkJCQkJPC91bD4NCisJCQkJCTwvZGl2Pg0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+DQorCQkJCQk8Yj5FbmFibGluZyBpbXBvcnQgb2YgLmRvYywgLmRvY3gsIC5wcHQsIC5wcHR4LCAuLi4gYWxsIE9mZmljZQ0KKwkJCQkJCURvY3VtZW50cyBpbnRvIHdoaXRlYmFvcmQNCisJCQkJCTwvYj4NCisJCQkJCTxkaXYgc3R5bGU9Im1hcmdpbi10b3A6IDEwcHg7IG1hcmdpbi1ib3R0b206MTBweCI+DQorCQkJCQkJPHVsPg0KKwkJCQkJCQk8bGk+DQorCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vY29kZS5nb29nbGUuY29tL3Avam9kY29udmVydGVyLyIgdGFyZ2V0PSJfQkxBTksiDQorCQkJCQkJCQkJcmVsPSJub2ZvbGxvdyI+Sk9EQ29udmVydGVyPC9hPg0KKwkJCQkJCQkJaW5zdGFsbGVkIChuZWVkZWQgc2luY2UgdjIueCkNCisJCQkJCQkJPC9saT4NCisJCQkJCQkJPGxpPk9wZW5PZmZpY2Ugb3IgTGlicmUgT2ZmaWNlIEluc3RhbGxlZDwvbGk+DQorCQkJCQkJPC91bD4NCisJCQkJCQlTaW5jZSBWZXJzaW9uIDIueCBvZiBPcGVuTWVldGluZ3MgaXQgaXMgbm8gbW9yZSByZXF1aXJlZCB0byBzdGFydA0KKwkJCQkJCU9wZW5PZmZpY2UgKG9yIExpYnJlb2ZmaWNlKSBzZXJ2aWNlLCBzZWUNCisJCQkJCQk8YSBocmVmPSJPcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiPk9wZW5PZmZpY2VDb252ZXJ0ZXI8L2E+DQorCQkJCQkJZm9yIGRldGFpbHMNCisJCQkJCTwvZGl2Pg0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+DQorCQkJCQk8Yj5FbmFibGluZyBSZWNvcmRpbmcgYW5kIGltcG9ydCBvZiAuYXZpLCAuZmx2LCAubW92IGFuZCAubXA0IGludG8NCisJCQkJCQl3aGl0ZWJvYXJkDQorCQkJCQk8L2I+DQorCQkJCQk8ZGl2IHN0eWxlPSJtYXJnaW4tdG9wOiAxMHB4OyBtYXJnaW4tYm90dG9tOjEwcHgiPg0KKwkJCQkJCTx1bD4NCisJCQkJCQkJPGxpPg0KKwkJCQkJCQkJSW5zdGFsbA0KKwkJCQkJCQkJPGI+RkZNcGVnICh3aXRoIC1lbmFibGVkIGxpYm1wM2xhbWUgYW5kIGxpYngyNjQgb3B0aW9ucyk8L2I+DQorCQkJCQkJCQkuIFlvdSBzaG91bGQgZ2V0IEZGTVBFRyBpbiBhbiB1cCB0byBkYXRlIGNvcHkhIE9wZW5NZWV0aW5ncyBpcw0KKwkJCQkJCQkJdGVzdGVkIHdpdGggRkZNUEVHIFZlcnNpb24gMTAuMyBhbmQgbGF0ZXN0IGJ1aWxkIGZyb20gR0lUDQorCQkJCQkJCQlGb3IgV2luZG93cyB5b3UgY2FuIGRvd25sb2FkIGEgQnVpbGQgZm9yIGV4YW1wbGUgZnJvbQ0KKwkJCQkJCQkJPGEgaHJlZj0iaHR0cDovL2ZmbXBlZy56ZXJhbm9lLmNvbS9idWlsZHMvIiB0YXJnZXQ9Il9CTEFOSyINCisJCQkJCQkJCQlyZWw9Im5vZm9sbG93Ij5odHRwOi8vZmZtcGVnLnplcmFub2UuY29tL2J1aWxkcy8gPC9hPg0KKwkJCQkJCQkJTGludXggb3IgT1N4IFVzZXJzIHNob3VsZCBiZSBhYmxlIHRvIHVzZSBvbmUgb2YgdGhlIHZhcmlvdXMNCisJCQkJCQkJCUluc3RhbGxhdGlvbiBJbnN0cnVjdGlvbnMgb24gdGhlIFdlYi4gWW91IG5lZWQgdG8gZW5hYmxlDQorCQkJCQkJCQlsaWJtcDNsYW1lIGFuZCBsaWJ4MjY0IQ0KKwkJCQkJCQk8L2xpPg0KKwkJCQkJCQk8bGk+DQorCQkJCQkJCQlJbnN0YWxsDQorCQkJCQkJCQk8Yj5Tb1g8L2I+DQorCQkJCQkJCQk8YSBocmVmPSJodHRwOi8vc294LnNvdXJjZWZvcmdlLm5ldC8iIHRhcmdldD0iX0JMQU5LIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vc294LnNvdXJjZWZvcmdlLm5ldC8NCisJCQkJCQkJCTwvYT4NCisJCQkJCQkJCS4gWW91IHNob3VsZCBpbnN0YWxsIFNvWCBpbiBhIHVwDQorCQkJCQkJCQl0byBkYXRlIGNvcHkhIFNvWCAxMi54eCB3aWxsIE5PVA0KKwkJCQkJCQkJd29yayENCisJCQkJCQkJPC9saT4NCisJCQkJCQk8L3VsPg0KKwkJCQkJPC9kaXY+DQorCQkJCTwvbGk+DQorCQkJPC9vbD4NCisNCisJCTwvc2VjdGlvbj4NCisNCisJCTxzZWN0aW9uIG5hbWU9IlBvcnRzLCBOQVQgU2V0dGluZ3MsIEN1c3RvbWl6ZSI+DQorDQorCQkJPHA+DQorCQkJCVNlZQ0KKwkJCQk8YSBocmVmPSJQb3J0U2V0dGluZ3MuaHRtbCI+UG9ydFNldHRpbmdzPC9hPg0KKwkJCTwvcD4NCisJCTwvc2VjdGlvbj4NCisNCisJCTxzZWN0aW9uIG5hbWU9IlZNV2FyZSI+DQorCQkJPHVsPg0KKwkJCQk8bGk+DQorCQkJCQlTZWUNCisJCQkJCTxhIGhyZWY9Imh0dHA6Ly9uaWdodGx5Lm9wZW5tZWV0aW5ncy5kZS9vcGVubWVldGluZ3MvYnVpbGRzL3Ztd2FyZS8iDQorCQkJCQkJcmVsPSJub2ZvbGxvdyI+aHR0cDovL25pZ2h0bHkub3Blbm1lZXRpbmdzLmRlL29wZW5tZWV0aW5ncy9idWlsZHMvdm13YXJlLzwvYT4NCisJCQkJPC9saT4NCisJCQkJPGxpPg0KKwkJCQkJVk1XYXJlIDEuNi4xDQorCQkJCQk8YQ0KKwkJCQkJCWhyZWY9Imh0dHA6Ly9vcGVuc3R1ZGlvLm5vLWlwLmluZm8vMjAxMS8wMS9vcGVubWVldGluZ3MtMS02LXJjMS12bXdhcmUtYXBwbGlhbmNlLXVzaW5nLXVidW50dS1zZXJ2ZXItMTAtMDQtbHRzLyINCisJCQkJCQlyZWw9Im5vZm9sbG93Ij5ibG9nLWVudHJ5PC9hPg0KKwkJCQk8L2xpPg0KKwkJCTwvdWw+DQorCQk8L3NlY3Rpb24+DQorDQorCQk8c2VjdGlvbiBuYW1lPSJIYXJkd2FyZSBSZXF1aXJlbWVudHMiPg0KKwkJCTx1bD4NCisJCQkJPGxpPg0KKwkJCQkJTWluaW1hbGlzdGljIHJlcXVpcmVtZW50ICh3aXRob3V0IERvY3VtZW50IENvbnZlcnRlcnMsIFJlY29yZGVyIGFuZA0KKwkJCQkJVXBsb2FkIGZlYXR1cmUpIDFHSHogQ1BVIDEgR0IgUkFNICgNCisJCQkJCTxpPnNlcnZlci1zaWRlPC9pPg0KKwkJCQkJKQ0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+DQorCQkJCQlSZWNvbW1lbmRlZCByZXF1aXJlbWVudCAyeC80eCAyR0h6ICsrIENQVSAoMzIgb3IgNjRCaXQpIDRHQiBSQU0uIElmDQorCQkJCQl5b3UgaGF2ZSBhIDY0Qml0IE9wZXJhdGluZyBTeXN0ZW0gY2hlY2sgaWYgdGhlcmUgaXMgYSBPcGVuT2ZmaWNlDQorCQkJCQk2NEJpdCBWZXJzaW9uDQorCQkJCQk8YSBocmVmPSJodHRwOi8vZG93bmxvYWQub3Blbm9mZmljZS5vcmcvb3RoZXIuaHRtbCNkZSIgcmVsPSJub2ZvbGxvdyI+YXZhaWxhYmxlDQorCQkJCQkJZm9yIHlvdXIgT1MNCisJCQkJCTwvYT4NCisJCQkJCSgNCisJCQkJCTxpPnNlcnZlci1zaWRlPC9pPg0KKwkJCQkJKQ0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+DQorCQkJCQlIZWFkc2V0L01pY3JvcGhvbmUgcmVjb21tZW5kYXRpb246IExvZ2l0ZWNoIENsZWFyQ2hhdCBQQyBXaXJlbGVzcywNCisJCQkJCWZvciBleGFtcGxlIGZyb20NCisJCQkJCTxhDQorCQkJCQkJaHJlZj0iaHR0cDovL3d3dy5hbWF6b24uZGUvTG9naXRlY2gtQ2xlYXJDaGF0LWthYmVsbG9zZXItS29wZmglQzMlQjZyZXItVHJhbnNtaXR0ZXIvZHAvQjAwMTY2V1NONCINCisJCQkJCQlyZWw9Im5vZm9sbG93Ij5BbWF6b248L2E+DQorCQkJCQlvcg0KKwkJCQkJPGENCisJCQkJCQlocmVmPSJodHRwOi8vc2hvcC5lYmF5LmNvbS9pLmh0bWw/X25rdz1Mb2dpdGVjaCtDbGVhckNoYXQuK1dpcmVsZXNzJmFtcDtfc2FjYXQ9MCZhbXA7X3Rya3NpZD1wMzI4Ni5tMjcwLmwxMzEzJmFtcDtMSF9CSU49MSZhbXA7TEhfSW5jbHVkZVNJRj0xJmFtcDtfb2Rrdz1Mb2dpdGVjaCtDbGVhckNoYXQrUEMmYW1wO19vc2FjYXQ9MCINCisJCQkJCQlyZWw9Im5vZm9sbG93Ij5FQmF5IEF1Y3Rpb25zPC9hPg0KKwkJCQkJKA0KKwkJCQkJPGk+Y2llbnQtc2lkZTwvaT4NCisJCQkJCSkuDQorCQkJCQk8YSBocmVmPSJSZWNvbW1lbmRlZEhhcmR3YXJlTGlzdC5odG1sIj5TZWUgYWxsIHJlY29tbWVuZGF0aW9uczwvYT4NCisJCQkJCWZvciBjYW1lcmFzLCBoZWFkc2V0cyBhbmQgc3BlYWtlcnBob25lcy4NCisJCQkJPC9saT4NCisJCQk8L3VsPg0KKw0KKwkJPC9zZWN0aW9uPg0KKw0KKwkJPHNlY3Rpb24gbmFtZT0iRGViaWFuLCBMaW5rcywgQ2hhbmdlbG9nLCBWb0lQIj4NCisNCisJCQk8dWw+DQorCQkJCTxsaT4NCisJCQkJCWZvciBWb0lQIGFuZCBTSVAgSW50ZWdyYXRpb24gc2VlIGFsc28NCisJCQkJCTxhIGhyZWY9InZvaXAtc2lwLWludGVncmF0aW9uLmh0bWwiPlZvSVBBbmRTSVA8L2E+DQorCQkJCTwvbGk+DQorCQkJCTxsaT4NCisJCQkJCTxhIGhyZWY9Imh0dHA6Ly9tZWV0aW5nc2xpdmUuc291cmNlZm9yZ2UubmV0LyIgcmVsPSJub2ZvbGxvdyI+aHR0cDovL21lZXRpbmdzbGl2ZS5zb3VyY2Vmb3JnZS5uZXQvDQorCQkJCQk8L2E+DQorCQkJCTwvbGk+DQorCQkJCTxsaT4NCisJCQkJCTxhIGhyZWY9Imh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIj5JbnN0YWxsYXRpb24gb2YgT00gMi4wIGZvciBVYnVudHUgMTIuMDQgeDY0LCBVYnVudHUgMTIuMTAgeDY0LCBEZWJpYW4sIFdpbmRvd3MgWFAsIDcsIDIwMDMsIDIwMDg8L2E+DQorCQkJCTwvbGk+DQorCQkJCTxsaT4NCisJCQkJCTxhDQorCQkJCQkJaHJlZj0iaHR0cDovL2xpYmVyYW1lbW9yaWEuYmxvZ3Nwb3QuY29tLzIwMDkvMDIvaW5zdGFsYW5kby1vcGVubWVldGluZ3MtMDctcmMtMi1lbi5odG1sIg0KKwkJCQkJCXJlbD0ibm9mb2xsb3ciPkVzcGFub2wgVmVyc2lvbiBmb3IgRGViaWFuIEluc3RhbGxhdGlvbjwvYT4NCisJCQkJPC9saT4NCisJCQkJPGxpPg0KKwkJCQkJPGENCisJCQkJCQlocmVmPSJodHRwOi8vYWl0aW5ldC5jb20vYmxvZy93cC1jb250ZW50L3VwbG9hZHMvMjAwOS8wOC9UVVRPUklBTC1QQVJBLUlOU1RBTEFDQU8tRE8tUkVENS1FLU9QRU5NRUVUSU5HUy1OTy1MSU5VWC1ERUJJQU4tTEVOTlktNTEucGRmIg0KKwkJCQkJCXJlbD0ibm9mb2xsb3ciPlBvcnR1Z3Vlc2UgVmVyc2lvbiBmb3IgRGViaWFuIEluc3RhbGxhdGlvbiBvZiAwLjkgUkMxPC9hPg0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+DQorCQkJCQk8YQ0KKwkJCQkJCWhyZWY9Imh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL1R1dG9yaWFscytmb3IraW5zdGFsbGluZytPcGVuTWVldGluZ3MrYW5kK1Rvb2xzIg0KKwkJCQkJCXJlbD0ibm9mb2xsb3ciPkF1dG9tYXRpYyBzY3JpcHQgaW5zdGFsbGF0aW9uIGZvciBVYnVudHUvRGViaWFuIChiZXRhKTwvYT4NCisJCQkJPC9saT4NCisJCQkJPGxpPg0KKwkJCQkJRnJlbmNoIHZlcnNpb24gb2YgSW5zdGFsbGF0aW9uIEluc3RydWN0aW9uczoNCisJCQkJCTxhDQorCQkJCQkJaHJlZj0iaHR0cDovL2ZsYXNoLjU0bi5mcmVlLmZyLz8vUm9vdC9EZWJpYW4vT3Blbk1lZXRpbmdzLUluc3RhbGxhdGlvbiINCisJCQkJCQlyZWw9Im5vZm9sbG93Ij5odHRwOi8vZmxhc2guNTRuLmZyZWUuZnIvPy9Sb290L0RlYmlhbi9PcGVuTWVldGluZ3MtSW5zdGFsbGF0aW9uDQorCQkJCQk8L2E+DQorCQkJCTwvbGk+DQorCQkJPC91bD4NCisJCTwvc2VjdGlvbj4NCisNCisJCTxzZWN0aW9uIG5hbWU9IlRpcHMgYW5kIFRyaWNrcyI+DQorCQkJPHVsPg0KKwkJCQk8bGk+DQorCQkJCQlVc2UgdGhlIERlYnVnLUFwcGxpY2F0aW9uOiBFbnRlciBpbiB5b3VyIGJyb3dzZXINCisJCQkJCTxhDQorCQkJCQkJaHJlZj0iaHR0cDovLyRSRUQtSE9TVDokUkVENS1QT1JUL29wZW5tZWV0aW5ncy8/c3dmPW1haW5kZWJ1Zy5hczMuc3dmMTEuc3dmIg0KKwkJCQkJCXJlbD0ibm9mb2xsb3ciPmh0dHA6Ly8kUkVELUhPU1Q6JFJFRDUtUE9SVC9vcGVubWVldGluZ3MvP3N3Zj1tYWluZGVidWcuYXMzLnN3ZjExLnN3Zg0KKwkJCQkJPC9hPg0KKwkJCQkJZm9yIGV4YW1wbGUNCisJCQkJCTxhIGhyZWY9Imh0dHA6Ly9sb2NhbGhvc3Q6NTA4MC9vcGVubWVldGluZ3MvP3N3Zj1tYWluZGVidWcuYXMzLnN3ZjExLnN3ZiINCisJCQkJCQlyZWw9Im5vZm9sbG93Ij5odHRwOi8vbG9jYWxob3N0OjUwODAvb3Blbm1lZXRpbmdzLz9zd2Y9bWFpbmRlYnVnLmFzMy5zd2YxMS5zd2YNCisJCQkJCTwvYT4NCisJCQkJPC9saT4NCisJCQkJPGxpPklmIHlvdSBoYXZlIFByb2JsZW1zIHdpdGggY29udmVyc2lvbi1qb2JzIGNoZWNrIHlvdXIgUmVkNS1Mb2cNCisJCQkJCW91dHB1dC4gVGhlcmUgd2lsbCBiZSBlcnJvciBNZXNzYWdlcyB3aGljaCBoZWxwIHlvdS4gWW91IG11c3QNCisJCQkJCWluc3RhbGwgT3Blbk9mZmljZSwgSW1hZ2VNYWdpY2ssIEdob3N0U2NyaXB0IGFuZCBTV0ZUb29scyB0byBydW4NCisJCQkJCWFsbCBjb252ZXJzaW9uLUpvYnMgY29ycmVjdGx5Lg0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+aWYgeW91IGhhdmUgcHJvYmxlbXMgaW4gY29udmVydGluZyBGaWxlcyBjaGVjayB0aGUgQmF0Y2gtU2NyaXB0cw0KKwkJCQkJaW4gJE9QRU5NRUVUSU5HU19IT01FL2pvZA0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+DQorCQkJCQlJZiB5b3Ugd2FudCB0byB1c2UgcmVkNSBhcyBhIHNlcnZpY2UgKHdpdGhvdXQgcmVkNS5iYXQpLCB5b3UgbmVlZA0KKwkJCQkJdG8gbW92ZSByZWQ1XHdyYXBwZXJcd3JhcHBlci5leGUgdG8gcmVkNVx3cmFwcGVyLmV4ZS4gVGhlbiBjaGFuZ2UNCisJCQkJCXNvbWUgcGF0aCBpbiBjb25mXHdyYXBwZXIuY29uZiAobGlrZSAuLlxsaWJcZm9vLmphciB0bw0KKwkJCQkJbGliXGZvby5qYXIpLiBBbmQgZmluYWxseSBjaGFuZ2UgdGhlIHJlZ2lzdGVyIGtleSBpbg0KKwkJCQkJSEtFWV9MT0NBTF9NQUNISU5FXFNZU1RFTVxDdXJyZW50Q29udHJvbFNldFxTZXJ2aWNlc1xSZWQ1XEltYWdlUGF0aA0KKwkJCQkJdG8gcG9pbnQgdG8gdGhlIG5ldyB3cmFwcGVyLg0KKwkJCQk8L2xpPg0KKwkJCQk8bGk+DQorCQkJCQl5b3UgY2FuIHF1ZXJ5IGEgTXlzcWwgRGF0YWJhc2UgdG8gZ2V0IHRoZSBzY2hlbWFfY29sbGVjdGlvbiBieQ0KKwkJCQkJdXNpbmcgdGhpcyBxdWVyeToNCisJCQkJCTxkaXYgY2xhc3M9InhtbGNvZGUiPg0KKwkJCQkJCVNFTEVDVCBUYWJsZV9uYW1lLCBUQUJMRV9DT0xMQVRJT04gRlJPTQ0KKwkJCQkJCWluZm9ybWF0aW9uX3NjaGVtYS50YWJsZXMgV0hFUkUgdGFibGVfc2NoZW1hID0gJ29wZW5tZWV0aW5ncycNCisJCQkJCQlPUkRFUiBCWSB0YWJsZV9uYW1lIERFU0MNCisJCQkJCTwvZGl2Pg0KKwkJCQk8L2xpPg0KKwkJCTwvdWw+DQorCQk8L3NlY3Rpb24+DQorDQorCTwvYm9keT4NCisNCis8L2RvY3VtZW50Pg0KKw0KZGlmZiAtLWdpdCBhL3hkb2NzL2xpY2Vuc2UueG1sIGIveGRvY3MvbGljZW5zZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGU0NjRkYQotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL2xpY2Vuc2UueG1sCkBAIC0wLDAgKzEsMjI1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiPz4KKworPGRvY3VtZW50PgorPHByb3BlcnRpZXM+Cis8dGl0bGU+TGljZW5zZTwvdGl0bGU+Cis8YXV0aG9yIGVtYWlsPSJzZWJhd2FnbmVyQGFwYWNoZS5vcmciPgorIFBvZGxpbmcgRG9jdW1lbnRhdGlvbiBUZWFtPC9hdXRob3I+Cis8L3Byb3BlcnRpZXM+CisKKzxib2R5PgorPHNlY3Rpb24gbmFtZT0iQXBhY2hlIExpY2Vuc2UgdjIuMCI+CisKKzxzb3VyY2UgdGVzdD0iIj48IVtDREFUQVsKKworCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFwYWNoZSBMaWNlbnNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJzaW9uIDIuMCwgSmFudWFyeSAyMDA0CisgICAgICAgICAgICAgICAgICAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvCisKKyAgIFRFUk1TIEFORCBDT05ESVRJT05TIEZPUiBVU0UsIFJFUFJPRFVDVElPTiwgQU5EIERJU1RSSUJVVElPTgorCisgICAxLiBEZWZpbml0aW9ucy4KKworICAgICAgIkxpY2Vuc2UiIHNoYWxsIG1lYW4gdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIGZvciB1c2UsIHJlcHJvZHVjdGlvbiwKKyAgICAgIGFuZCBkaXN0cmlidXRpb24gYXMgZGVmaW5lZCBieSBTZWN0aW9ucyAxIHRocm91Z2ggOSBvZiB0aGlzIGRvY3VtZW50LgorCisgICAgICAiTGljZW5zb3IiIHNoYWxsIG1lYW4gdGhlIGNvcHlyaWdodCBvd25lciBvciBlbnRpdHkgYXV0aG9yaXplZCBieQorICAgICAgdGhlIGNvcHlyaWdodCBvd25lciB0aGF0IGlzIGdyYW50aW5nIHRoZSBMaWNlbnNlLgorCisgICAgICAiTGVnYWwgRW50aXR5IiBzaGFsbCBtZWFuIHRoZSB1bmlvbiBvZiB0aGUgYWN0aW5nIGVudGl0eSBhbmQgYWxsCisgICAgICBvdGhlciBlbnRpdGllcyB0aGF0IGNvbnRyb2wsIGFyZSBjb250cm9sbGVkIGJ5LCBvciBhcmUgdW5kZXIgY29tbW9uCisgICAgICBjb250cm9sIHdpdGggdGhhdCBlbnRpdHkuIEZvciB0aGUgcHVycG9zZXMgb2YgdGhpcyBkZWZpbml0aW9uLAorICAgICAgImNvbnRyb2wiIG1lYW5zIChpKSB0aGUgcG93ZXIsIGRpcmVjdCBvciBpbmRpcmVjdCwgdG8gY2F1c2UgdGhlCisgICAgICBkaXJlY3Rpb24gb3IgbWFuYWdlbWVudCBvZiBzdWNoIGVudGl0eSwgd2hldGhlciBieSBjb250cmFjdCBvcgorICAgICAgb3RoZXJ3aXNlLCBvciAoaWkpIG93bmVyc2hpcCBvZiBmaWZ0eSBwZXJjZW50ICg1MCUpIG9yIG1vcmUgb2YgdGhlCisgICAgICBvdXRzdGFuZGluZyBzaGFyZXMsIG9yIChpaWkpIGJlbmVmaWNpYWwgb3duZXJzaGlwIG9mIHN1Y2ggZW50aXR5LgorCisgICAgICAiWW91IiAob3IgIllvdXIiKSBzaGFsbCBtZWFuIGFuIGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5CisgICAgICBleGVyY2lzaW5nIHBlcm1pc3Npb25zIGdyYW50ZWQgYnkgdGhpcyBMaWNlbnNlLgorCisgICAgICAiU291cmNlIiBmb3JtIHNoYWxsIG1lYW4gdGhlIHByZWZlcnJlZCBmb3JtIGZvciBtYWtpbmcgbW9kaWZpY2F0aW9ucywKKyAgICAgIGluY2x1ZGluZyBidXQgbm90IGxpbWl0ZWQgdG8gc29mdHdhcmUgc291cmNlIGNvZGUsIGRvY3VtZW50YXRpb24KKyAgICAgIHNvdXJjZSwgYW5kIGNvbmZpZ3VyYXRpb24gZmlsZXMuCisKKyAgICAgICJPYmplY3QiIGZvcm0gc2hhbGwgbWVhbiBhbnkgZm9ybSByZXN1bHRpbmcgZnJvbSBtZWNoYW5pY2FsCisgICAgICB0cmFuc2Zvcm1hdGlvbiBvciB0cmFuc2xhdGlvbiBvZiBhIFNvdXJjZSBmb3JtLCBpbmNsdWRpbmcgYnV0CisgICAgICBub3QgbGltaXRlZCB0byBjb21waWxlZCBvYmplY3QgY29kZSwgZ2VuZXJhdGVkIGRvY3VtZW50YXRpb24sCisgICAgICBhbmQgY29udmVyc2lvbnMgdG8gb3RoZXIgbWVkaWEgdHlwZXMuCisKKyAgICAgICJXb3JrIiBzaGFsbCBtZWFuIHRoZSB3b3JrIG9mIGF1dGhvcnNoaXAsIHdoZXRoZXIgaW4gU291cmNlIG9yCisgICAgICBPYmplY3QgZm9ybSwgbWFkZSBhdmFpbGFibGUgdW5kZXIgdGhlIExpY2Vuc2UsIGFzIGluZGljYXRlZCBieSBhCisgICAgICBjb3B5cmlnaHQgbm90aWNlIHRoYXQgaXMgaW5jbHVkZWQgaW4gb3IgYXR0YWNoZWQgdG8gdGhlIHdvcmsKKyAgICAgIChhbiBleGFtcGxlIGlzIHByb3ZpZGVkIGluIHRoZSBBcHBlbmRpeCBiZWxvdykuCisKKyAgICAgICJEZXJpdmF0aXZlIFdvcmtzIiBzaGFsbCBtZWFuIGFueSB3b3JrLCB3aGV0aGVyIGluIFNvdXJjZSBvciBPYmplY3QKKyAgICAgIGZvcm0sIHRoYXQgaXMgYmFzZWQgb24gKG9yIGRlcml2ZWQgZnJvbSkgdGhlIFdvcmsgYW5kIGZvciB3aGljaCB0aGUKKyAgICAgIGVkaXRvcmlhbCByZXZpc2lvbnMsIGFubm90YXRpb25zLCBlbGFib3JhdGlvbnMsIG9yIG90aGVyIG1vZGlmaWNhdGlvbnMKKyAgICAgIHJlcHJlc2VudCwgYXMgYSB3aG9sZSwgYW4gb3JpZ2luYWwgd29yayBvZiBhdXRob3JzaGlwLiBGb3IgdGhlIHB1cnBvc2VzCisgICAgICBvZiB0aGlzIExpY2Vuc2UsIERlcml2YXRpdmUgV29ya3Mgc2hhbGwgbm90IGluY2x1ZGUgd29ya3MgdGhhdCByZW1haW4KKyAgICAgIHNlcGFyYWJsZSBmcm9tLCBvciBtZXJlbHkgbGluayAob3IgYmluZCBieSBuYW1lKSB0byB0aGUgaW50ZXJmYWNlcyBvZiwKKyAgICAgIHRoZSBXb3JrIGFuZCBEZXJpdmF0aXZlIFdvcmtzIHRoZXJlb2YuCisKKyAgICAgICJDb250cmlidXRpb24iIHNoYWxsIG1lYW4gYW55IHdvcmsgb2YgYXV0aG9yc2hpcCwgaW5jbHVkaW5nCisgICAgICB0aGUgb3JpZ2luYWwgdmVyc2lvbiBvZiB0aGUgV29yayBhbmQgYW55IG1vZGlmaWNhdGlvbnMgb3IgYWRkaXRpb25zCisgICAgICB0byB0aGF0IFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mLCB0aGF0IGlzIGludGVudGlvbmFsbHkKKyAgICAgIHN1Ym1pdHRlZCB0byBMaWNlbnNvciBmb3IgaW5jbHVzaW9uIGluIHRoZSBXb3JrIGJ5IHRoZSBjb3B5cmlnaHQgb3duZXIKKyAgICAgIG9yIGJ5IGFuIGluZGl2aWR1YWwgb3IgTGVnYWwgRW50aXR5IGF1dGhvcml6ZWQgdG8gc3VibWl0IG9uIGJlaGFsZiBvZgorICAgICAgdGhlIGNvcHlyaWdodCBvd25lci4gRm9yIHRoZSBwdXJwb3NlcyBvZiB0aGlzIGRlZmluaXRpb24sICJzdWJtaXR0ZWQiCisgICAgICBtZWFucyBhbnkgZm9ybSBvZiBlbGVjdHJvbmljLCB2ZXJiYWwsIG9yIHdyaXR0ZW4gY29tbXVuaWNhdGlvbiBzZW50CisgICAgICB0byB0aGUgTGljZW5zb3Igb3IgaXRzIHJlcHJlc2VudGF0aXZlcywgaW5jbHVkaW5nIGJ1dCBub3QgbGltaXRlZCB0bworICAgICAgY29tbXVuaWNhdGlvbiBvbiBlbGVjdHJvbmljIG1haWxpbmcgbGlzdHMsIHNvdXJjZSBjb2RlIGNvbnRyb2wgc3lzdGVtcywKKyAgICAgIGFuZCBpc3N1ZSB0cmFja2luZyBzeXN0ZW1zIHRoYXQgYXJlIG1hbmFnZWQgYnksIG9yIG9uIGJlaGFsZiBvZiwgdGhlCisgICAgICBMaWNlbnNvciBmb3IgdGhlIHB1cnBvc2Ugb2YgZGlzY3Vzc2luZyBhbmQgaW1wcm92aW5nIHRoZSBXb3JrLCBidXQKKyAgICAgIGV4Y2x1ZGluZyBjb21tdW5pY2F0aW9uIHRoYXQgaXMgY29uc3BpY3VvdXNseSBtYXJrZWQgb3Igb3RoZXJ3aXNlCisgICAgICBkZXNpZ25hdGVkIGluIHdyaXRpbmcgYnkgdGhlIGNvcHlyaWdodCBvd25lciBhcyAiTm90IGEgQ29udHJpYnV0aW9uLiIKKworICAgICAgIkNvbnRyaWJ1dG9yIiBzaGFsbCBtZWFuIExpY2Vuc29yIGFuZCBhbnkgaW5kaXZpZHVhbCBvciBMZWdhbCBFbnRpdHkKKyAgICAgIG9uIGJlaGFsZiBvZiB3aG9tIGEgQ29udHJpYnV0aW9uIGhhcyBiZWVuIHJlY2VpdmVkIGJ5IExpY2Vuc29yIGFuZAorICAgICAgc3Vic2VxdWVudGx5IGluY29ycG9yYXRlZCB3aXRoaW4gdGhlIFdvcmsuCisKKyAgIDIuIEdyYW50IG9mIENvcHlyaWdodCBMaWNlbnNlLiBTdWJqZWN0IHRvIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgorICAgICAgdGhpcyBMaWNlbnNlLCBlYWNoIENvbnRyaWJ1dG9yIGhlcmVieSBncmFudHMgdG8gWW91IGEgcGVycGV0dWFsLAorICAgICAgd29ybGR3aWRlLCBub24tZXhjbHVzaXZlLCBuby1jaGFyZ2UsIHJveWFsdHktZnJlZSwgaXJyZXZvY2FibGUKKyAgICAgIGNvcHlyaWdodCBsaWNlbnNlIHRvIHJlcHJvZHVjZSwgcHJlcGFyZSBEZXJpdmF0aXZlIFdvcmtzIG9mLAorICAgICAgcHVibGljbHkgZGlzcGxheSwgcHVibGljbHkgcGVyZm9ybSwgc3VibGljZW5zZSwgYW5kIGRpc3RyaWJ1dGUgdGhlCisgICAgICBXb3JrIGFuZCBzdWNoIERlcml2YXRpdmUgV29ya3MgaW4gU291cmNlIG9yIE9iamVjdCBmb3JtLgorCisgICAzLiBHcmFudCBvZiBQYXRlbnQgTGljZW5zZS4gU3ViamVjdCB0byB0aGUgdGVybXMgYW5kIGNvbmRpdGlvbnMgb2YKKyAgICAgIHRoaXMgTGljZW5zZSwgZWFjaCBDb250cmlidXRvciBoZXJlYnkgZ3JhbnRzIHRvIFlvdSBhIHBlcnBldHVhbCwKKyAgICAgIHdvcmxkd2lkZSwgbm9uLWV4Y2x1c2l2ZSwgbm8tY2hhcmdlLCByb3lhbHR5LWZyZWUsIGlycmV2b2NhYmxlCisgICAgICAoZXhjZXB0IGFzIHN0YXRlZCBpbiB0aGlzIHNlY3Rpb24pIHBhdGVudCBsaWNlbnNlIHRvIG1ha2UsIGhhdmUgbWFkZSwKKyAgICAgIHVzZSwgb2ZmZXIgdG8gc2VsbCwgc2VsbCwgaW1wb3J0LCBhbmQgb3RoZXJ3aXNlIHRyYW5zZmVyIHRoZSBXb3JrLAorICAgICAgd2hlcmUgc3VjaCBsaWNlbnNlIGFwcGxpZXMgb25seSB0byB0aG9zZSBwYXRlbnQgY2xhaW1zIGxpY2Vuc2FibGUKKyAgICAgIGJ5IHN1Y2ggQ29udHJpYnV0b3IgdGhhdCBhcmUgbmVjZXNzYXJpbHkgaW5mcmluZ2VkIGJ5IHRoZWlyCisgICAgICBDb250cmlidXRpb24ocykgYWxvbmUgb3IgYnkgY29tYmluYXRpb24gb2YgdGhlaXIgQ29udHJpYnV0aW9uKHMpCisgICAgICB3aXRoIHRoZSBXb3JrIHRvIHdoaWNoIHN1Y2ggQ29udHJpYnV0aW9uKHMpIHdhcyBzdWJtaXR0ZWQuIElmIFlvdQorICAgICAgaW5zdGl0dXRlIHBhdGVudCBsaXRpZ2F0aW9uIGFnYWluc3QgYW55IGVudGl0eSAoaW5jbHVkaW5nIGEKKyAgICAgIGNyb3NzLWNsYWltIG9yIGNvdW50ZXJjbGFpbSBpbiBhIGxhd3N1aXQpIGFsbGVnaW5nIHRoYXQgdGhlIFdvcmsKKyAgICAgIG9yIGEgQ29udHJpYnV0aW9uIGluY29ycG9yYXRlZCB3aXRoaW4gdGhlIFdvcmsgY29uc3RpdHV0ZXMgZGlyZWN0CisgICAgICBvciBjb250cmlidXRvcnkgcGF0ZW50IGluZnJpbmdlbWVudCwgdGhlbiBhbnkgcGF0ZW50IGxpY2Vuc2VzCisgICAgICBncmFudGVkIHRvIFlvdSB1bmRlciB0aGlzIExpY2Vuc2UgZm9yIHRoYXQgV29yayBzaGFsbCB0ZXJtaW5hdGUKKyAgICAgIGFzIG9mIHRoZSBkYXRlIHN1Y2ggbGl0aWdhdGlvbiBpcyBmaWxlZC4KKworICAgNC4gUmVkaXN0cmlidXRpb24uIFlvdSBtYXkgcmVwcm9kdWNlIGFuZCBkaXN0cmlidXRlIGNvcGllcyBvZiB0aGUKKyAgICAgIFdvcmsgb3IgRGVyaXZhdGl2ZSBXb3JrcyB0aGVyZW9mIGluIGFueSBtZWRpdW0sIHdpdGggb3Igd2l0aG91dAorICAgICAgbW9kaWZpY2F0aW9ucywgYW5kIGluIFNvdXJjZSBvciBPYmplY3QgZm9ybSwgcHJvdmlkZWQgdGhhdCBZb3UKKyAgICAgIG1lZXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgorCisgICAgICAoYSkgWW91IG11c3QgZ2l2ZSBhbnkgb3RoZXIgcmVjaXBpZW50cyBvZiB0aGUgV29yayBvcgorICAgICAgICAgIERlcml2YXRpdmUgV29ya3MgYSBjb3B5IG9mIHRoaXMgTGljZW5zZTsgYW5kCisKKyAgICAgIChiKSBZb3UgbXVzdCBjYXVzZSBhbnkgbW9kaWZpZWQgZmlsZXMgdG8gY2FycnkgcHJvbWluZW50IG5vdGljZXMKKyAgICAgICAgICBzdGF0aW5nIHRoYXQgWW91IGNoYW5nZWQgdGhlIGZpbGVzOyBhbmQKKworICAgICAgKGMpIFlvdSBtdXN0IHJldGFpbiwgaW4gdGhlIFNvdXJjZSBmb3JtIG9mIGFueSBEZXJpdmF0aXZlIFdvcmtzCisgICAgICAgICAgdGhhdCBZb3UgZGlzdHJpYnV0ZSwgYWxsIGNvcHlyaWdodCwgcGF0ZW50LCB0cmFkZW1hcmssIGFuZAorICAgICAgICAgIGF0dHJpYnV0aW9uIG5vdGljZXMgZnJvbSB0aGUgU291cmNlIGZvcm0gb2YgdGhlIFdvcmssCisgICAgICAgICAgZXhjbHVkaW5nIHRob3NlIG5vdGljZXMgdGhhdCBkbyBub3QgcGVydGFpbiB0byBhbnkgcGFydCBvZgorICAgICAgICAgIHRoZSBEZXJpdmF0aXZlIFdvcmtzOyBhbmQKKworICAgICAgKGQpIElmIHRoZSBXb3JrIGluY2x1ZGVzIGEgIk5PVElDRSIgdGV4dCBmaWxlIGFzIHBhcnQgb2YgaXRzCisgICAgICAgICAgZGlzdHJpYnV0aW9uLCB0aGVuIGFueSBEZXJpdmF0aXZlIFdvcmtzIHRoYXQgWW91IGRpc3RyaWJ1dGUgbXVzdAorICAgICAgICAgIGluY2x1ZGUgYSByZWFkYWJsZSBjb3B5IG9mIHRoZSBhdHRyaWJ1dGlvbiBub3RpY2VzIGNvbnRhaW5lZAorICAgICAgICAgIHdpdGhpbiBzdWNoIE5PVElDRSBmaWxlLCBleGNsdWRpbmcgdGhvc2Ugbm90aWNlcyB0aGF0IGRvIG5vdAorICAgICAgICAgIHBlcnRhaW4gdG8gYW55IHBhcnQgb2YgdGhlIERlcml2YXRpdmUgV29ya3MsIGluIGF0IGxlYXN0IG9uZQorICAgICAgICAgIG9mIHRoZSBmb2xsb3dpbmcgcGxhY2VzOiB3aXRoaW4gYSBOT1RJQ0UgdGV4dCBmaWxlIGRpc3RyaWJ1dGVkCisgICAgICAgICAgYXMgcGFydCBvZiB0aGUgRGVyaXZhdGl2ZSBXb3Jrczsgd2l0aGluIHRoZSBTb3VyY2UgZm9ybSBvcgorICAgICAgICAgIGRvY3VtZW50YXRpb24sIGlmIHByb3ZpZGVkIGFsb25nIHdpdGggdGhlIERlcml2YXRpdmUgV29ya3M7IG9yLAorICAgICAgICAgIHdpdGhpbiBhIGRpc3BsYXkgZ2VuZXJhdGVkIGJ5IHRoZSBEZXJpdmF0aXZlIFdvcmtzLCBpZiBhbmQKKyAgICAgICAgICB3aGVyZXZlciBzdWNoIHRoaXJkLXBhcnR5IG5vdGljZXMgbm9ybWFsbHkgYXBwZWFyLiBUaGUgY29udGVudHMKKyAgICAgICAgICBvZiB0aGUgTk9USUNFIGZpbGUgYXJlIGZvciBpbmZvcm1hdGlvbmFsIHB1cnBvc2VzIG9ubHkgYW5kCisgICAgICAgICAgZG8gbm90IG1vZGlmeSB0aGUgTGljZW5zZS4gWW91IG1heSBhZGQgWW91ciBvd24gYXR0cmlidXRpb24KKyAgICAgICAgICBub3RpY2VzIHdpdGhpbiBEZXJpdmF0aXZlIFdvcmtzIHRoYXQgWW91IGRpc3RyaWJ1dGUsIGFsb25nc2lkZQorICAgICAgICAgIG9yIGFzIGFuIGFkZGVuZHVtIHRvIHRoZSBOT1RJQ0UgdGV4dCBmcm9tIHRoZSBXb3JrLCBwcm92aWRlZAorICAgICAgICAgIHRoYXQgc3VjaCBhZGRpdGlvbmFsIGF0dHJpYnV0aW9uIG5vdGljZXMgY2Fubm90IGJlIGNvbnN0cnVlZAorICAgICAgICAgIGFzIG1vZGlmeWluZyB0aGUgTGljZW5zZS4KKworICAgICAgWW91IG1heSBhZGQgWW91ciBvd24gY29weXJpZ2h0IHN0YXRlbWVudCB0byBZb3VyIG1vZGlmaWNhdGlvbnMgYW5kCisgICAgICBtYXkgcHJvdmlkZSBhZGRpdGlvbmFsIG9yIGRpZmZlcmVudCBsaWNlbnNlIHRlcm1zIGFuZCBjb25kaXRpb25zCisgICAgICBmb3IgdXNlLCByZXByb2R1Y3Rpb24sIG9yIGRpc3RyaWJ1dGlvbiBvZiBZb3VyIG1vZGlmaWNhdGlvbnMsIG9yCisgICAgICBmb3IgYW55IHN1Y2ggRGVyaXZhdGl2ZSBXb3JrcyBhcyBhIHdob2xlLCBwcm92aWRlZCBZb3VyIHVzZSwKKyAgICAgIHJlcHJvZHVjdGlvbiwgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGUgV29yayBvdGhlcndpc2UgY29tcGxpZXMgd2l0aAorICAgICAgdGhlIGNvbmRpdGlvbnMgc3RhdGVkIGluIHRoaXMgTGljZW5zZS4KKworICAgNS4gU3VibWlzc2lvbiBvZiBDb250cmlidXRpb25zLiBVbmxlc3MgWW91IGV4cGxpY2l0bHkgc3RhdGUgb3RoZXJ3aXNlLAorICAgICAgYW55IENvbnRyaWJ1dGlvbiBpbnRlbnRpb25hbGx5IHN1Ym1pdHRlZCBmb3IgaW5jbHVzaW9uIGluIHRoZSBXb3JrCisgICAgICBieSBZb3UgdG8gdGhlIExpY2Vuc29yIHNoYWxsIGJlIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZgorICAgICAgdGhpcyBMaWNlbnNlLCB3aXRob3V0IGFueSBhZGRpdGlvbmFsIHRlcm1zIG9yIGNvbmRpdGlvbnMuCisgICAgICBOb3R3aXRoc3RhbmRpbmcgdGhlIGFib3ZlLCBub3RoaW5nIGhlcmVpbiBzaGFsbCBzdXBlcnNlZGUgb3IgbW9kaWZ5CisgICAgICB0aGUgdGVybXMgb2YgYW55IHNlcGFyYXRlIGxpY2Vuc2UgYWdyZWVtZW50IHlvdSBtYXkgaGF2ZSBleGVjdXRlZAorICAgICAgd2l0aCBMaWNlbnNvciByZWdhcmRpbmcgc3VjaCBDb250cmlidXRpb25zLgorCisgICA2LiBUcmFkZW1hcmtzLiBUaGlzIExpY2Vuc2UgZG9lcyBub3QgZ3JhbnQgcGVybWlzc2lvbiB0byB1c2UgdGhlIHRyYWRlCisgICAgICBuYW1lcywgdHJhZGVtYXJrcywgc2VydmljZSBtYXJrcywgb3IgcHJvZHVjdCBuYW1lcyBvZiB0aGUgTGljZW5zb3IsCisgICAgICBleGNlcHQgYXMgcmVxdWlyZWQgZm9yIHJlYXNvbmFibGUgYW5kIGN1c3RvbWFyeSB1c2UgaW4gZGVzY3JpYmluZyB0aGUKKyAgICAgIG9yaWdpbiBvZiB0aGUgV29yayBhbmQgcmVwcm9kdWNpbmcgdGhlIGNvbnRlbnQgb2YgdGhlIE5PVElDRSBmaWxlLgorCisgICA3LiBEaXNjbGFpbWVyIG9mIFdhcnJhbnR5LiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IKKyAgICAgIGFncmVlZCB0byBpbiB3cml0aW5nLCBMaWNlbnNvciBwcm92aWRlcyB0aGUgV29yayAoYW5kIGVhY2gKKyAgICAgIENvbnRyaWJ1dG9yIHByb3ZpZGVzIGl0cyBDb250cmlidXRpb25zKSBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yCisgICAgICBpbXBsaWVkLCBpbmNsdWRpbmcsIHdpdGhvdXQgbGltaXRhdGlvbiwgYW55IHdhcnJhbnRpZXMgb3IgY29uZGl0aW9ucworICAgICAgb2YgVElUTEUsIE5PTi1JTkZSSU5HRU1FTlQsIE1FUkNIQU5UQUJJTElUWSwgb3IgRklUTkVTUyBGT1IgQQorICAgICAgUEFSVElDVUxBUiBQVVJQT1NFLiBZb3UgYXJlIHNvbGVseSByZXNwb25zaWJsZSBmb3IgZGV0ZXJtaW5pbmcgdGhlCisgICAgICBhcHByb3ByaWF0ZW5lc3Mgb2YgdXNpbmcgb3IgcmVkaXN0cmlidXRpbmcgdGhlIFdvcmsgYW5kIGFzc3VtZSBhbnkKKyAgICAgIHJpc2tzIGFzc29jaWF0ZWQgd2l0aCBZb3VyIGV4ZXJjaXNlIG9mIHBlcm1pc3Npb25zIHVuZGVyIHRoaXMgTGljZW5zZS4KKworICAgOC4gTGltaXRhdGlvbiBvZiBMaWFiaWxpdHkuIEluIG5vIGV2ZW50IGFuZCB1bmRlciBubyBsZWdhbCB0aGVvcnksCisgICAgICB3aGV0aGVyIGluIHRvcnQgKGluY2x1ZGluZyBuZWdsaWdlbmNlKSwgY29udHJhY3QsIG9yIG90aGVyd2lzZSwKKyAgICAgIHVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyAoc3VjaCBhcyBkZWxpYmVyYXRlIGFuZCBncm9zc2x5CisgICAgICBuZWdsaWdlbnQgYWN0cykgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNoYWxsIGFueSBDb250cmlidXRvciBiZQorICAgICAgbGlhYmxlIHRvIFlvdSBmb3IgZGFtYWdlcywgaW5jbHVkaW5nIGFueSBkaXJlY3QsIGluZGlyZWN0LCBzcGVjaWFsLAorICAgICAgaW5jaWRlbnRhbCwgb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzIG9mIGFueSBjaGFyYWN0ZXIgYXJpc2luZyBhcyBhCisgICAgICByZXN1bHQgb2YgdGhpcyBMaWNlbnNlIG9yIG91dCBvZiB0aGUgdXNlIG9yIGluYWJpbGl0eSB0byB1c2UgdGhlCisgICAgICBXb3JrIChpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIGRhbWFnZXMgZm9yIGxvc3Mgb2YgZ29vZHdpbGwsCisgICAgICB3b3JrIHN0b3BwYWdlLCBjb21wdXRlciBmYWlsdXJlIG9yIG1hbGZ1bmN0aW9uLCBvciBhbnkgYW5kIGFsbAorICAgICAgb3RoZXIgY29tbWVyY2lhbCBkYW1hZ2VzIG9yIGxvc3NlcyksIGV2ZW4gaWYgc3VjaCBDb250cmlidXRvcgorICAgICAgaGFzIGJlZW4gYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2Ygc3VjaCBkYW1hZ2VzLgorCisgICA5LiBBY2NlcHRpbmcgV2FycmFudHkgb3IgQWRkaXRpb25hbCBMaWFiaWxpdHkuIFdoaWxlIHJlZGlzdHJpYnV0aW5nCisgICAgICB0aGUgV29yayBvciBEZXJpdmF0aXZlIFdvcmtzIHRoZXJlb2YsIFlvdSBtYXkgY2hvb3NlIHRvIG9mZmVyLAorICAgICAgYW5kIGNoYXJnZSBhIGZlZSBmb3IsIGFjY2VwdGFuY2Ugb2Ygc3VwcG9ydCwgd2FycmFudHksIGluZGVtbml0eSwKKyAgICAgIG9yIG90aGVyIGxpYWJpbGl0eSBvYmxpZ2F0aW9ucyBhbmQvb3IgcmlnaHRzIGNvbnNpc3RlbnQgd2l0aCB0aGlzCisgICAgICBMaWNlbnNlLiBIb3dldmVyLCBpbiBhY2NlcHRpbmcgc3VjaCBvYmxpZ2F0aW9ucywgWW91IG1heSBhY3Qgb25seQorICAgICAgb24gWW91ciBvd24gYmVoYWxmIGFuZCBvbiBZb3VyIHNvbGUgcmVzcG9uc2liaWxpdHksIG5vdCBvbiBiZWhhbGYKKyAgICAgIG9mIGFueSBvdGhlciBDb250cmlidXRvciwgYW5kIG9ubHkgaWYgWW91IGFncmVlIHRvIGluZGVtbmlmeSwKKyAgICAgIGRlZmVuZCwgYW5kIGhvbGQgZWFjaCBDb250cmlidXRvciBoYXJtbGVzcyBmb3IgYW55IGxpYWJpbGl0eQorICAgICAgaW5jdXJyZWQgYnksIG9yIGNsYWltcyBhc3NlcnRlZCBhZ2FpbnN0LCBzdWNoIENvbnRyaWJ1dG9yIGJ5IHJlYXNvbgorICAgICAgb2YgeW91ciBhY2NlcHRpbmcgYW55IHN1Y2ggd2FycmFudHkgb3IgYWRkaXRpb25hbCBsaWFiaWxpdHkuCisKKyAgIEVORCBPRiBURVJNUyBBTkQgQ09ORElUSU9OUworCisgICBBUFBFTkRJWDogSG93IHRvIGFwcGx5IHRoZSBBcGFjaGUgTGljZW5zZSB0byB5b3VyIHdvcmsuCisKKyAgICAgIFRvIGFwcGx5IHRoZSBBcGFjaGUgTGljZW5zZSB0byB5b3VyIHdvcmssIGF0dGFjaCB0aGUgZm9sbG93aW5nCisgICAgICBib2lsZXJwbGF0ZSBub3RpY2UsIHdpdGggdGhlIGZpZWxkcyBlbmNsb3NlZCBieSBicmFja2V0cyAiW10iCisgICAgICByZXBsYWNlZCB3aXRoIHlvdXIgb3duIGlkZW50aWZ5aW5nIGluZm9ybWF0aW9uLiAoRG9uJ3QgaW5jbHVkZQorICAgICAgdGhlIGJyYWNrZXRzISkgIFRoZSB0ZXh0IHNob3VsZCBiZSBlbmNsb3NlZCBpbiB0aGUgYXBwcm9wcmlhdGUKKyAgICAgIGNvbW1lbnQgc3ludGF4IGZvciB0aGUgZmlsZSBmb3JtYXQuIFdlIGFsc28gcmVjb21tZW5kIHRoYXQgYQorICAgICAgZmlsZSBvciBjbGFzcyBuYW1lIGFuZCBkZXNjcmlwdGlvbiBvZiBwdXJwb3NlIGJlIGluY2x1ZGVkIG9uIHRoZQorICAgICAgc2FtZSAicHJpbnRlZCBwYWdlIiBhcyB0aGUgY29weXJpZ2h0IG5vdGljZSBmb3IgZWFzaWVyCisgICAgICBpZGVudGlmaWNhdGlvbiB3aXRoaW4gdGhpcmQtcGFydHkgYXJjaGl2ZXMuCisKKyAgIENvcHlyaWdodCBbeXl5eV0gW25hbWUgb2YgY29weXJpZ2h0IG93bmVyXQorCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorCisKKyBdXT48L3NvdXJjZT4KKworPC9zZWN0aW9uPgorPC9ib2R5PgorPC9kb2N1bWVudD4KKwpkaWZmIC0tZ2l0IGEveGRvY3MvbWFpbC1saXN0cy54bWwgYi94ZG9jcy9tYWlsLWxpc3RzLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOGY4YWM1Ci0tLSAvZGV2L251bGwKKysrIGIveGRvY3MvbWFpbC1saXN0cy54bWwKQEAgLTAsMCArMSwxOTkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorIC0tPgorPGRvY3VtZW50PgorCisJPHByb3BlcnRpZXM+CisJCTx0aXRsZT5NYWlsaW5nIExpc3RzPC90aXRsZT4KKwkJPGF1dGhvciBlbWFpbD0ic2ViYXdhZ25lckBhcGFjaGUub3JnIj4KKwkJCVNlYmFzdGlhbiBXYWduZXIKKwkJPC9hdXRob3I+CisJPC9wcm9wZXJ0aWVzPgorCisJPGJvZHk+CisJCTxzZWN0aW9uIG5hbWU9IkFwYWNoZSBPcGVuTWVldGluZ3MgTWFpbGluZyBMaXN0cyI+CisKKwkJCTxwPgorCQkJCVRoZXJlIGFyZSBjdXJyZW50bHkgNCBwdWJsaWNseSBhdmFpbGFibGUgbWFpbGluZyBsaXN0cyBmb3IgT3Blbk1lZXRpbmdzLgorCQkJPC9wPgorCQkJPHA+CisJCQkJVGhlIGNvbW1pdHMgbGlzdCBpcyBmb3Igbm90aWZpY2F0aW9uIG9mIGNvbW1pdHMgdG8gdGhlIE9wZW5NZWV0aW5ncworCQkJCXJlcG9zaXRvcnkuCisJCQk8L3A+CisJCQk8cD4KKwkJCQlUaGUgZGV2IGxpc3QgaXMgZm9yIGludGVybmFsIGRpc2N1c3Npb24gYW1vbmcgdGhlIE9wZW5NZWV0aW5ncworCQkJCWRldmVsb3BlcnMuIEl0IGlzCisJCQkJb3BlbiB0byB0aGUgcHVibGljIGlmIHlvdSBhcmUgaW50ZXJlc3RlZCBpbiBzZWVpbmcgaG93IHRoZSBzYXVzYWdlIGlzCisJCQkJbWFkZS4KKwkJCTwvcD4KKwkJCTxwPgorCQkJCTxiPk5vdGU6IDwvYj5JZiB5b3VyIGVtYWlsIGJvdW5jZXMgd2l0aCBzdGF0dXMgbWVzc2FnZXMgbGlrZSAiRGVsaXZlcnkgU3RhdHVzIE5vdGlmaWNhdGlvbiIgaXQgaXMgCisJCQkJbGlrZWx5IHRoYXQgeW91IGhhdmUgc2VuZCB5b3VyIG1haWwgYXMgSFRNTCBtYWlsLiBBcGFjaGUgZG9lcyBub3QgbGlrZSBzZW5kaW5nIEhUTUwgZW1haWxzLCBzZWU6CisJCQkJPGJyLz4gCisJCQkJPGEgaHJlZj0iaHR0cDovL3d3dy5hcGFjaGUub3JnL2Rldi9jb250cmliLWVtYWlsLXRpcHMuaHRtbCNkby1ub3Qtc2VuZC1odG1sLW1haWwiIHRhcmdldD0iX0JMQU5LIiByZWw9Im5vZm9sbG93Ij5odHRwOi8vd3d3LmFwYWNoZS5vcmcvZGV2L2NvbnRyaWItZW1haWwtdGlwcy5odG1sI2RvLW5vdC1zZW5kLWh0bWwtbWFpbDwvYT4KKwkJCTwvcD4KKwkJCQorCQkJPHA+CisJCQkJWW91IGNhbiBzZWFyY2ggdGhlIGVudGlyZSBtYWlsaW5nIGxpc3QgdmVyeSBlYXN5IGJ5IHVzaW5nIG1hcmttYWlsLmNvbSwgYnkgdXNpbmcgdGhlIHRlcm0gCisJCQkJIm9wZW5tZWV0aW5ncyIgcGx1cyB5b3VyIHNlYXJjaC4gVHJ5IHlvdXJzZWxmOiA8YnIvPgorCQkJCTxhIGhyZWY9Imh0dHA6Ly9tYXJrbWFpbC5vcmcvc2VhcmNoLz9xPW9wZW5tZWV0aW5ncyIgdGFyZ2V0PSJfQkxBTksiIHJlbD0ibm9mb2xsb3ciPmh0dHA6Ly9tYXJrbWFpbC5vcmcvc2VhcmNoLz9xPW9wZW5tZWV0aW5nczwvYT4KKwkJCTwvcD4KKworCQkJPHRhYmxlPgorCQkJCTx0cj4KKwkJCQkJPHRkPgorCQkJCQkJPHA+CisJCQkJCQkJPHN0cm9uZz5Vc2VyIExpc3Q8L3N0cm9uZz4KKwkJCQkJCQk6CisJCQkJCQkJPGEgaHJlZj0ibWFpbHRvOnVzZXJAb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmciPgorCQkJCQkJCQl1c2VyQG9wZW5tZWV0aW5ncy5hcGFjaGUub3JnCisJCQkJCQkJPC9hPgorCQkJCQkJPC9wPgorCQkJCQk8L3RkPgorCQkJCQk8dGQ+CisJCQkJCQk8cD4KKwkJCQkJCQk8YSBjbGFzcz0iZXh0ZXJuYWwiIHJlbD0ibm9mb2xsb3ciCisJCQkJCQkJCWhyZWY9Im1haWx0bzp1c2VyLXN1YnNjcmliZUBvcGVubWVldGluZ3MuYXBhY2hlLm9yZyI+CisJCQkJCQkJCVN1YnNjcmliZQorCQkJCQkJCTwvYT4KKwkJCQkJCTwvcD4KKwkJCQkJPC90ZD4KKwkJCQkJPHRkPgorCQkJCQkJPHA+CisJCQkJCQkJPGEgY2xhc3M9ImV4dGVybmFsIiByZWw9Im5vZm9sbG93IgorCQkJCQkJCQlocmVmPSJtYWlsdG86dXNlci11bnN1YnNjcmliZUBvcGVubWVldGluZ3MuYXBhY2hlLm9yZyI+CisJCQkJCQkJCVVuc3Vic2NyaWJlCisJCQkJCQkJPC9hPgorCQkJCQkJPC9wPgorCQkJCQk8L3RkPgorCQkJCQk8dGQ+CisJCQkJCQk8cD4KKwkJCQkJCQk8YQorCQkJCQkJCQlocmVmPSJodHRwOi8vbWFpbC1hcmNoaXZlcy5hcGFjaGUub3JnL21vZF9tYm94L29wZW5tZWV0aW5ncy11c2VyLyI+CisJCQkJCQkJCUFyY2hpdmUKKwkJCQkJCQk8L2E+CisJCQkJCQk8L3A+CisJCQkJCTwvdGQ+CisJCQkJPC90cj4KKwkJCQk8dHI+CisJCQkJCTx0ZD4KKwkJCQkJCTxwPgorCQkJCQkJCTxzdHJvbmc+U3BhbmlzaCBVc2VyIExpc3Q8L3N0cm9uZz4KKwkJCQkJCQk6CisJCQkJCQkJPGEgaHJlZj0ibWFpbHRvOnVzZXItZXNwYW5vbEBvcGVubWVldGluZ3MuYXBhY2hlLm9yZyI+CisJCQkJCQkJCXVzZXItZXNwYW5vbEBvcGVubWVldGluZ3MuYXBhY2hlLm9yZworCQkJCQkJCTwvYT4KKwkJCQkJCTwvcD4KKwkJCQkJPC90ZD4KKwkJCQkJPHRkPgorCQkJCQkJPHA+CisJCQkJCQkJPGEgY2xhc3M9ImV4dGVybmFsIiByZWw9Im5vZm9sbG93IgorCQkJCQkJCQlocmVmPSJtYWlsdG86dXNlci1lc3Bhbm9sLXN1YnNjcmliZUBvcGVubWVldGluZ3MuYXBhY2hlLm9yZyI+CisJCQkJCQkJCVN1YnNjcmliZQorCQkJCQkJCTwvYT4KKwkJCQkJCTwvcD4KKwkJCQkJPC90ZD4KKwkJCQkJPHRkPgorCQkJCQkJPHA+CisJCQkJCQkJPGEgY2xhc3M9ImV4dGVybmFsIiByZWw9Im5vZm9sbG93IgorCQkJCQkJCQlocmVmPSJtYWlsdG86dXNlci1lc3Bhbm9sLXVuc3Vic2NyaWJlQG9wZW5tZWV0aW5ncy5hcGFjaGUub3JnIj4KKwkJCQkJCQkJVW5zdWJzY3JpYmUKKwkJCQkJCQk8L2E+CisJCQkJCQk8L3A+CisJCQkJCTwvdGQ+CisJCQkJCTx0ZD4KKwkJCQkJCTxwPgorCQkJCQkJCTxhCisJCQkJCQkJCWhyZWY9Imh0dHA6Ly9tYWlsLWFyY2hpdmVzLmFwYWNoZS5vcmcvbW9kX21ib3gvb3Blbm1lZXRpbmdzLXVzZXItZXNwYW5vbC8iPgorCQkJCQkJCQlBcmNoaXZlCisJCQkJCQkJPC9hPgorCQkJCQkJPC9wPgorCQkJCQk8L3RkPgorCQkJCTwvdHI+CisJCQkJPHRyPgorCQkJCQk8dGQ+CisJCQkJCQk8cD4KKwkJCQkJCQk8c3Ryb25nPkNvbW1pdHMgTGlzdDwvc3Ryb25nPgorCQkJCQkJCToKKwkJCQkJCQk8YSBocmVmPSJtYWlsdG86Y29tbWl0c0BvcGVubWVldGluZ3MuYXBhY2hlLm9yZyI+CisJCQkJCQkJCWNvbW1pdHNAb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcKKwkJCQkJCQk8L2E+CisJCQkJCQk8L3A+CisJCQkJCTwvdGQ+CisJCQkJCTx0ZD4KKwkJCQkJCTxwPgorCQkJCQkJCTxhIGNsYXNzPSJleHRlcm5hbCIgcmVsPSJub2ZvbGxvdyIKKwkJCQkJCQkJaHJlZj0ibWFpbHRvOmNvbW1pdHMtc3Vic2NyaWJlQG9wZW5tZWV0aW5ncy5hcGFjaGUub3JnIj4KKwkJCQkJCQkJU3Vic2NyaWJlCisJCQkJCQkJPC9hPgorCQkJCQkJPC9wPgorCQkJCQk8L3RkPgorCQkJCQk8dGQ+CisJCQkJCQk8cD4KKwkJCQkJCQk8YSBjbGFzcz0iZXh0ZXJuYWwiIHJlbD0ibm9mb2xsb3ciCisJCQkJCQkJCWhyZWY9Im1haWx0bzpjb21taXRzLXVuc3Vic2NyaWJlQG9wZW5tZWV0aW5ncy5hcGFjaGUub3JnIj4KKwkJCQkJCQkJVW5zdWJzY3JpYmUKKwkJCQkJCQk8L2E+CisJCQkJCQk8L3A+CisJCQkJCTwvdGQ+CisJCQkJCTx0ZD4KKwkJCQkJCTxwPgorCQkJCQkJCTxhCisJCQkJCQkJCWhyZWY9Imh0dHA6Ly9tYWlsLWFyY2hpdmVzLmFwYWNoZS5vcmcvbW9kX21ib3gvb3Blbm1lZXRpbmdzLWNvbW1pdHMvIj4KKwkJCQkJCQkJQXJjaGl2ZQorCQkJCQkJCTwvYT4KKwkJCQkJCTwvcD4KKwkJCQkJPC90ZD4KKwkJCQk8L3RyPgorCQkJCTx0cj4KKwkJCQkJPHRkPgorCQkJCQkJPHA+CisJCQkJCQkJPHN0cm9uZz5EZXZlbG9wZXIgTGlzdDwvc3Ryb25nPgorCQkJCQkJCToKKwkJCQkJCQk8YSBocmVmPSJtYWlsdG86ZGV2QG9wZW5tZWV0aW5ncy5hcGFjaGUub3JnIj4KKwkJCQkJCQkJZGV2QG9wZW5tZWV0aW5ncy5hcGFjaGUub3JnCisJCQkJCQkJPC9hPgorCQkJCQkJPC9wPgorCQkJCQk8L3RkPgorCQkJCQk8dGQ+CisJCQkJCQk8cD4KKwkJCQkJCQk8YSBjbGFzcz0iZXh0ZXJuYWwiIHJlbD0ibm9mb2xsb3ciCisJCQkJCQkJCWhyZWY9Im1haWx0bzpkZXYtc3Vic2NyaWJlQG9wZW5tZWV0aW5ncy5hcGFjaGUub3JnIj4KKwkJCQkJCQkJU3Vic2NyaWJlCisJCQkJCQkJPC9hPgorCQkJCQkJPC9wPgorCQkJCQk8L3RkPgorCQkJCQk8dGQ+CisJCQkJCQk8cD4KKwkJCQkJCQk8YSBjbGFzcz0iZXh0ZXJuYWwiIHJlbD0ibm9mb2xsb3ciCisJCQkJCQkJCWhyZWY9Im1haWx0bzpkZXYtdW5zdWJzY3JpYmVAb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmciPgorCQkJCQkJCQlVbnN1YnNjcmliZQorCQkJCQkJCTwvYT4KKwkJCQkJCTwvcD4KKwkJCQkJPC90ZD4KKwkJCQkJPHRkPgorCQkJCQkJPHA+CisJCQkJCQkJPGEKKwkJCQkJCQkJaHJlZj0iaHR0cDovL21haWwtYXJjaGl2ZXMuYXBhY2hlLm9yZy9tb2RfbWJveC9vcGVubWVldGluZ3MtZGV2Ij4KKwkJCQkJCQkJQXJjaGl2ZQorCQkJCQkJCTwvYT4KKwkJCQkJCTwvcD4KKwkJCQkJPC90ZD4KKwkJCQk8L3RyPgorCQkJPC90YWJsZT4KKworCQk8L3NlY3Rpb24+CisJPC9ib2R5PgorPC9kb2N1bWVudD4KKwpkaWZmIC0tZ2l0IGEveGRvY3MvcmVkNXNpcC1pbnRlZ3JhdGlvbl8yLjAueG1sIGIveGRvY3MvcmVkNXNpcC1pbnRlZ3JhdGlvbl8yLjAueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0MWZjOTgKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9yZWQ1c2lwLWludGVncmF0aW9uXzIuMC54bWwKQEAgLTAsMCArMSwxOTQgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+DQorPCEtLQ0KKyAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KKyAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4NCisgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQNCisNCisgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wDQorDQorICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KKyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsDQorICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuDQorICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZA0KKyAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLg0KKyAtLT4NCis8ZG9jdW1lbnQ+DQorDQorCTxwcm9wZXJ0aWVzPg0KKwkJPHRpdGxlPlNJUC1UcmFuc3BvcnQgSW50ZWdyYXRpb248L3RpdGxlPg0KKwkJPGF1dGhvciBlbWFpbD0idGltdXJAYXBhY2hlLm9yZyI+DQorCQkJT3Blbk1lZXRpbmdzIFRlYW0NCisJCTwvYXV0aG9yPg0KKwk8L3Byb3BlcnRpZXM+DQorDQorCTxib2R5Pg0KKw0KKwkJPHNlY3Rpb24gbmFtZT0iU0lQLVRyYW5zcG9ydCBJbnRlZ3JhdGlvbiI+DQorCQkJPHA+DQorCQkJCVlvdSBuZWVkIG1pbmltdW0gdmVyc2lvbiAyLjAgb2YgQXBhY2hlIE9wZW5NZWV0aW5ncyB0byBhcHBseSB0aGlzIGd1aWRlIQ0KKwkJCTwvcD4NCisJCQk8cD4NCisJCQkJSGVyZSBpcyBpbnN0cnVjdGlvbiBob3ctdG8gc2V0IHVwIHJlZDVzaXAgdHJhbnNwb3J0IGludGVncmF0aW9uIHdpdGggT3Blbk1lZXRpbmdzIG9uIFVidW50dSAxMC4wNC4NCisJCQk8L3A+DQorCQk8L3NlY3Rpb24+DQorDQorICAgICAgICA8c2VjdGlvbiBuYW1lPSJTZXR1cCBBc3RlcmlzayI+DQorCQkJPGRpdj4NCisgICAgICAgICAgICAgICAgUnVuIHRoZSBjb21tYW5kcw0KKyAgICAgICAgICAgICAgICA8YmxvY2txdW90ZT4NCisgICAgICAgICAgICAgICAgICAgIDxpPg0KKyAgICAgICAgICAgICAgICAgICAgc3VkbyBhcHQtZ2V0IHVwZGF0ZTxici8+DQorICAgICAgICAgICAgICAgICAgICBzdWRvIGFwdC1nZXQgaW5zdGFsbCBhc3RlcmlzayBhc3Rlcmlzay1teXNxbA0KKyAgICAgICAgICAgICAgICAgICAgPC9pPg0KKyAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+DQorICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICAgICAgVWJ1bnR1IDEwLjA0IGhhcyBicm9rZW4gYXN0ZXJpc2stbXlzcWwgdmVyc2lvbi4gRm9yIG90aGVyIGRpc3RyaWJ1dGlvbiBuZXh0IGNvbW1hbmRzIG5vdCBuZWVkZWQ6DQorICAgICAgICAgICAgICAgIDxibG9ja3F1b3RlPg0KKyAgICAgICAgICAgICAgICAgICAgPGk+DQorICAgICAgICAgICAgICAgICAgICAgICAgYXB0aXR1ZGUgcHVyZ2UgYXN0ZXJpc2stbXlzcWwNCisgICAgICAgICAgICAgICAgICAgICAgICA8YnIvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGNkIC90bXANCisgICAgICAgICAgICAgICAgICAgICAgICA8YnIvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGFwdC1nZXQgYnVpbGQtZGVwIGFzdGVyaXNrLW15c3FsDQorICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4NCisgICAgICAgICAgICAgICAgICAgICAgICBhcHQtZ2V0IC1iIHNvdXJjZSBhc3Rlcmlzay1teXNxbA0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxici8+DQorICAgICAgICAgICAgICAgICAgICAgICAgZHBrZyAtaSBhc3Rlcmlzay1teXNxbF8xLjYuMi4wLTFfaTM4Ni5kZWINCisgICAgICAgICAgICAgICAgICAgIDwvaT4NCisNCisgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPg0KKyAgICAgICAgICAgIDwvZGl2Pg0KKyAgICAgICAgICAgIDxkaXY+DQorICAgICAgICAgICAgICAgIEVuYWJsZSBhc3RlcmlzayBteXNxbCByZWFsdGltZSBtb2R1bGU6PGJyLz48YnIvPg0KKyAgICAgICAgICAgICAgICBBZGQgc3RyaW5nDQorICAgICAgICAgICAgICAgIDxibG9ja3F1b3RlPg0KKyAgICAgICAgICAgICAgICAgICAgPGk+bG9hZCA9PiByZXNfY29uZmlnX215c3FsLnNvPC9pPg0KKyAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+DQorICAgICAgICAgICAgICAgIHRvIHRoZSAvZXRjL2FzdGVyaXNrL21vZHVsZXMuY29uZiBpbnRvIHRoZSAibW9kdWxlcyIgc2VjdGlvbi4NCisgICAgICAgICAgICA8L2Rpdj4NCisgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICBDb25maWd1cmUgbXlzcWwgcmVhbHRpbWUgbW9kdWxlOjxici8+PGJyLz4NCisNCisgICAgICAgICAgICAgICAgQ3JlYXRlIGZpbGUgL2V0Yy9hc3Rlcmlzay9yZXNfbXlzcWwuY29uZiBhbmQgYWRkIGxpbmVzOg0KKyAgICAgICAgICAgICAgICA8YmxvY2txdW90ZT4NCisgICAgICAgICAgICAgICAgICAgIDxpPltnZW5lcmFsXQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxici8+DQorICAgICAgICAgICAgICAgICAgICAgICAgZGJob3N0PTEyNy4wLjAuMQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxici8+DQorICAgICAgICAgICAgICAgICAgICAgICAgZGJuYW1lPW9wZW5tZWV0aW5ncw0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxici8+DQorICAgICAgICAgICAgICAgICAgICAgICAgZGJ1c2VyPXJvb3QNCisgICAgICAgICAgICAgICAgICAgICAgICA8YnIvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGRicGFzcz0NCisgICAgICAgICAgICAgICAgICAgICAgICA8YnIvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGRicG9ydD0zMzA2DQorICAgICAgICAgICAgICAgICAgICA8L2k+DQorDQorICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4NCisgICAgICAgICAgICA8L2Rpdj4NCisgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICBBZGQgbmV4dCBsaW5lcyBpbnRvIHRoZSAvZXRjL2FzdGVyaXNrL2V4dGNvbmZpZy5jb25mOg0KKyAgICAgICAgICAgICAgICA8YmxvY2txdW90ZT4NCisgICAgICAgICAgICAgICAgICAgIDxpPltzZXR0aW5nc10NCisgICAgICAgICAgICAgICAgICAgICAgICA8YnIvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNpcHVzZXJzID0+IG15c3FsLGdlbmVyYWwsc2lwdXNlcnMNCisgICAgICAgICAgICAgICAgICAgICAgICA8YnIvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNpcHBlZXJzID0+IG15c3FsLGdlbmVyYWwsc2lwdXNlcnMNCisgICAgICAgICAgICAgICAgICAgICAgICA8YnIvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lvbnMgPT4gbXlzcWwsZ2VuZXJhbCxleHRlbnNpb25zDQorICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4NCisgICAgICAgICAgICAgICAgICAgICAgICBtZWV0bWUgPT4gbXlzcWwsZ2VuZXJhbCxtZWV0bWUNCisgICAgICAgICAgICAgICAgICAgIDwvaT4NCisNCisgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPg0KKyAgICAgICAgICAgIDwvZGl2Pg0KKyAgICAgICAgICAgIDxkaXY+DQorICAgICAgICAgICAgICAgIEFkZCBuZXh0IGxpbmVzIGludG8gdGhlIC9ldGMvYXN0ZXJpc2svZXh0ZW5zaW9ucy5jb25mOg0KKyAgICAgICAgICAgICAgICA8YmxvY2txdW90ZT4NCisgICAgICAgICAgICAgICAgICAgIDxpPltyb29tc10NCisgICAgICAgICAgICAgICAgICAgICAgICA8YnIvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCA9PiBSZWFsdGltZS9ADQorICAgICAgICAgICAgICAgICAgICA8L2k+DQorDQorICAgICAgICAgICAgICAgIDwvYmxvY2txdW90ZT4NCisgICAgICAgICAgICA8L2Rpdj4NCisNCisgICAgICAgICAgICA8ZGl2Pg0KKyAgICAgICAgICAgICAgICBSZXN0YXJ0IGFzdGVyaXNrOg0KKyAgICAgICAgICAgICAgICA8YmxvY2txdW90ZT4NCisgICAgICAgICAgICAgICAgICAgIDxpPnNlcnZpY2UgYXN0ZXJpc2sgcmVzdGFydDwvaT4NCisgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPg0KKyAgICAgICAgICAgICAgICBJbnNlcnQsIGZvciBleGFtcGxlLCBTSVAgdXNlciB3aXRoIG5hbWUgJ3Rlc3QnOg0KKyAgICAgICAgICAgICAgICA8YmxvY2txdW90ZT4NCisgICAgICAgICAgICAgICAgICAgIDxpPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIElOU0VSVCBJTlRPIHNpcHVzZXJzIChhbGxvdywgY29udGV4dCwgZGlzYWxsb3csIGhvc3QsIG5hbWUsIHNlY3JldCkgVkFMVUVTICgndWxhdycgLCAncm9vbXMnLCBOVUxMLCAnZHluYW1pYycgLCAndGVzdCcsICcxMjM0NScpOw0KKyAgICAgICAgICAgICAgICAgICAgPC9pPg0KKyAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+DQorICAgICAgICAgICAgPC9kaXY+DQorCQk8L3NlY3Rpb24+DQorDQorICAgICAgICA8c2VjdGlvbiBuYW1lPSJTZXR1cCByZWQ1c2lwIHRyYW5zcG9ydCI+DQorICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICAgICAgRG93bmxvYWQgcmVkNXNpcCBmcm9tPGJsb2NrcXVvdGU+aHR0cDovL3JlZDVwaG9uZS5nb29nbGVjb2RlLmNvbS9zdm4vYnJhbmNoZXMvcmVkNXNpcDwvYmxvY2txdW90ZT4NCisgICAgICAgICAgICA8L2Rpdj4NCisgICAgICAgICAgICA8cD4NCisgICAgICAgICAgICAgICAgQnVpbGQgd2l0aCBBcGFjaGUgQW50DQorICAgICAgICAgICAgPC9wPg0KKyAgICAgICAgICAgIDxkaXY+DQorICAgICAgICAgICAgICAgIEluc3RhbGwganN2YzoNCisgICAgICAgICAgICAgICAgPGJsb2NrcXVvdGU+DQorICAgICAgICAgICAgICAgICAgICA8aT5hcHQtZ2V0IGluc3RhbGwganN2YzwvaT4NCisgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPg0KKyAgICAgICAgICAgIDwvZGl2Pg0KKyAgICAgICAgICAgIDxkaXY+DQorICAgICAgICAgICAgICAgIEluc2VydCBwcm9wZXIgdmFsdWVzIHRvIHRoZSAvb3B0L3JlZDVzaXAvc2V0dGluZ3MucHJvcGVydGllcw0KKw0KKyAgICAgICAgICAgICAgICA8YmxvY2txdW90ZT4NCisgICAgICAgICAgICAgICAgICAgIDxpPnJlZDUuaG9zdCAtIHJlZDUgc2VydmVyIGFkZHJlc3MgKDEyNy4wLjAuMSkNCisgICAgICAgICAgICAgICAgICAgICAgICA8YnIvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNpcC5vYnByb3h5IC0gYXN0ZXJpc2sgYWRkZXJzcyAoMTI3LjAuMC4xKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxici8+DQorICAgICAgICAgICAgICAgICAgICAgICAgc2lwLnBob25lIC0gc2lwIHBob25lIG51bWJlciAodGVzdCkNCisgICAgICAgICAgICAgICAgICAgICAgICA8YnIvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNpcC5hdXRoaWQgLSBzaXAgYXV0aCBpZCAodGVzdCkNCisgICAgICAgICAgICAgICAgICAgICAgICA8YnIvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNpcC5zZWNyZXQgLSBzaXAgcGFzc3dvcmQgKDEyMzQ1KQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxici8+DQorICAgICAgICAgICAgICAgICAgICAgICAgc2lwLnJlYWxtIC0gc2lwIHJlYWxtLCAiYXN0ZXJpc2siIGJ5IGRlZmF1bHQNCisgICAgICAgICAgICAgICAgICAgICAgICA8YnIvPg0KKyAgICAgICAgICAgICAgICAgICAgICAgIHNpcC5wcm94eSAtDQorICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4NCisgICAgICAgICAgICAgICAgICAgICAgICByb29tcyAtIGlkcyBvZiBvcGVubWVldGluZ3Mgcm9vbXMsIGNhbiBiZSwgZm9yIGV4YW1wbGUsIDIsMyw1LDYNCisgICAgICAgICAgICAgICAgICAgIDwvaT4NCisNCisgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPg0KKyAgICAgICAgICAgIDwvZGl2Pg0KKyAgICAgICAgICAgIDxkaXY+DQorICAgICAgICAgICAgICAgIEFkZCByZWQ1c2lwIHRvIGF1dG9zdGFydDoNCisgICAgICAgICAgICAgICAgPGJsb2NrcXVvdGU+DQorICAgICAgICAgICAgICAgICAgICA8aT5sbiAtcyAvb3B0L3JlZDVzaXAvcmVkNXNpcC5zaCAvZXRjL2luaXQuZC9yZWQ1c2lwDQorICAgICAgICAgICAgICAgICAgICAgICAgPGJyLz4NCisgICAgICAgICAgICAgICAgICAgICAgICBjaG1vZCBhK3ggL2V0Yy9pbml0LmQvcmVkNXNpcA0KKyAgICAgICAgICAgICAgICAgICAgICAgIDxici8+DQorICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlLXJjLmQgL2V0Yy9pbml0LmQvcmVkNXNpcCBkZWZhdWx0cw0KKyAgICAgICAgICAgICAgICAgICAgPC9pPg0KKw0KKyAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+DQorICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICAgICAgU3RhcnQgb3Blbm1lZXRpbmdzDQorICAgICAgICAgICAgICAgIDxibG9ja3F1b3RlPg0KKyAgICAgICAgICAgICAgICAgICAgPGk+c2VydmljZSByZWQ1IHN0YXJ0PC9pPg0KKyAgICAgICAgICAgICAgICA8L2Jsb2NrcXVvdGU+DQorICAgICAgICAgICAgPC9kaXY+DQorICAgICAgICAgICAgPGRpdj4NCisgICAgICAgICAgICAgICAgU3RhcnQgcmVkNXNpcA0KKyAgICAgICAgICAgICAgICA8YmxvY2txdW90ZT4NCisgICAgICAgICAgICAgICAgICAgIDxpPnNlcnZpY2UgcmVkNXNpcCBzdGFydDwvaT4NCisgICAgICAgICAgICAgICAgPC9ibG9ja3F1b3RlPg0KKyAgICAgICAgICAgIDwvZGl2Pg0KKyAgICAgICAgPC9zZWN0aW9uPg0KKwk8L2JvZHk+DQorDQorPC9kb2N1bWVudD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS94ZG9jcy9yZWQ1c2lwLWludGVncmF0aW9uXzIuMS54bWwgYi94ZG9jcy9yZWQ1c2lwLWludGVncmF0aW9uXzIuMS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTg2NzJmYQotLS0gL2Rldi9udWxsCisrKyBiL3hkb2NzL3JlZDVzaXAtaW50ZWdyYXRpb25fMi4xLnhtbApAQCAtMCwwICsxLDMwNCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8IS0tDQorICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKw0KKyAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisNCisgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorIC0tPg0KKzxkb2N1bWVudD4NCisJPHByb3BlcnRpZXM+DQorCQk8dGl0bGU+U0lQLVRyYW5zcG9ydCBJbnRlZ3JhdGlvbjwvdGl0bGU+DQorCQk8YXV0aG9yIGVtYWlsPSJzb2xvbWF4QGFwYWNoZS5vcmciPk9wZW5NZWV0aW5ncyBUZWFtPC9hdXRob3I+DQorCTwvcHJvcGVydGllcz4NCisJPGJvZHk+DQorCQk8c2VjdGlvbiBuYW1lPSJTSVAtVHJhbnNwb3J0IEludGVncmF0aW9uIj4NCisJCQk8cD5Zb3UgbmVlZCBBcGFjaGUgT3Blbk1lZXRpbmdzIDxzdHJvbmc+dmVyc2lvbiAyLjE8L3N0cm9uZz4gdG8gYXBwbHkgdGhpcyBndWlkZSE8L3A+DQorCQkJPHA+WW91IG5lZWQgQXN0ZXJpc2sgPHN0cm9uZz52ZXJzaW9uIDExPC9zdHJvbmc+IHRvIGFwcGx5IHRoaXMgZ3VpZGUhPC9wPg0KKwkJCTxwPkhlcmUgaXMgaW5zdHJ1Y3Rpb24gaG93LXRvIHNldCB1cCByZWQ1c2lwIHRyYW5zcG9ydCBpbnRlZ3JhdGlvbiB3aXRoIE9wZW5NZWV0aW5ncyBvbiBVYnVudHUgMTIuMTAuPC9wPg0KKwkJPC9zZWN0aW9uPg0KKwkJPHNlY3Rpb24gbmFtZT0iUHJlcmVxdWlzaXRlcyI+DQorCQkJPGRpdj4NCisJCQkJUnVuIHRoZSBjb21tYW5kcw0KKwkJCQk8YmxvY2txdW90ZT4NCisJCQkJCTxpPg0KKwkJCQkJCXN1ZG8gYXB0LWdldCB1cGRhdGUgJmFtcDsmYW1wOyBzdWRvIGFwdC1nZXQgdXBncmFkZTxiciAvPg0KKwkJCQkJCXN1ZG8gYXB0LWdldCBpbnN0YWxsIGJ1aWxkLWVzc2VudGlhbCBsaW51eC1oZWFkZXJzLWB1bmFtZSAtcmAgbGlieG1sMi1kZXYgbGlibmN1cnNlczUtZGV2IGxpYnNxbGl0ZTMtZGV2IHNxbGl0ZTMgb3BlbnNzbCBsaWJzc2wtZGV2PGJyIC8+DQorCQkJCQk8L2k+DQorCQkJCTwvYmxvY2txdW90ZT4NCisJCQk8L2Rpdj4NCisJCTwvc2VjdGlvbj4NCisJCTxzZWN0aW9uIG5hbWU9Ik9EQkMgU2V0dXAiPg0KKwkJCTxkaXY+DQorCQkJCVJ1biB0aGUgY29tbWFuZHMNCisJCQkJPGJsb2NrcXVvdGU+DQorCQkJCQk8aT4NCisJCQkJCQlzdWRvIGFwdC1nZXQgdXBkYXRlPGJyIC8+DQorCQkJCQkJc3VkbyBhcHQtZ2V0IGluc3RhbGwgdW5peE9EQkMgdW5peE9EQkMtZGV2IGxpYm15b2RiYw0KKwkJCQkJPC9pPg0KKwkJCQk8L2Jsb2NrcXVvdGU+DQorCQkJPC9kaXY+DQorCQkJPGRpdj4NCisJCQkJU2V0IHVwIEFzdGVyaXNrIGNvbm5lY3Rvcjo8YnIgLz48YnIgLz4NCisJCQkJTW9kaWZ5IGZpbGUgPHR0Pi9ldGMvb2RiYy5pbmk8L3R0PiBhcyBmb2xsb3dzOiAocmVwbGFjZSBVU0VSLCBQQVNTV09SRCBhbmQgU29ja2V0IHdpdGggdmFsdWVzIHJlbGF0aXZlIHRvIHlvdXIgc3lzdGVtKQ0KKwkJCQk8YmxvY2txdW90ZT4NCisJCQkJCTxpPg0KKwkJCQkJCVthc3Rlcmlzay1jb25uZWN0b3JdPGJyIC8+DQorCQkJCQkJRGVzY3JpcHRpb24gPSBNeVNRTCBjb25uZWN0aW9uIHRvICdvcGVubWVldGluZ3MnIGRhdGFiYXNlPGJyIC8+DQorCQkJCQkJRHJpdmVyID0gTXlTUUw8YnIgLz4NCisJCQkJCQlEYXRhYmFzZSA9IG9wZW5tZWV0aW5nczxiciAvPg0KKwkJCQkJCVNlcnZlciA9IGxvY2FsaG9zdDxiciAvPg0KKwkJCQkJCVVTRVIgPSByb290PGJyIC8+DQorCQkJCQkJUEFTU1dPUkQgPTxiciAvPg0KKwkJCQkJCVBvcnQgPSAzMzA2PGJyIC8+DQorCQkJCQkJU29ja2V0ID0gL3Zhci9ydW4vbXlzcWxkL215c3FsZC5zb2NrPGJyIC8+DQorCQkJCQk8L2k+DQorCQkJCTwvYmxvY2txdW90ZT48YnIgLz48YnIgLz4NCisJCQkJTW9kaWZ5IGZpbGUgPHR0Pi9ldGMvb2RiY2luc3QuaW5pPC90dD4gYXMgZm9sbG93czogKHJlcGxhY2UgdGhlIHBhdGggdG8gdGhlICouc28gZmlsZXMgYmVsb3cgd2l0aCB0aGUgcmVhbCBwYXRocyBvbiB5b3VyIHN5c3RlbSkNCisJCQkJPGJsb2NrcXVvdGU+DQorCQkJCQkoVGhlIHBhdGggYmVsb3cgaXMgZm9yIHgzMiBzZXJ2ZXIsIHg2NCB2ZXJzaW9uIGlzIG1vc3QgcHJvYmFibHkgbG9jYXRlZCBhdCA8dHQ+L3Vzci9saWIveDg2XzY0LWxpbnV4LWdudS9vZGJjPC90dD4pPGJyLz4NCisJCQkJCTxpPg0KKwkJCQkJCVtNeVNRTF08YnIgLz4NCisJCQkJCQlEZXNjcmlwdGlvbiA9IE9EQkMgZm9yIE15U1FMPGJyIC8+DQorCQkJCQkJRHJpdmVyID0gL3Vzci9saWIvaTM4Ni1saW51eC1nbnUvb2RiYy9saWJteW9kYmMuc288YnIgLz4NCisJCQkJCQlTZXR1cCA9IC91c3IvbGliL2kzODYtbGludXgtZ251L29kYmMvbGlib2RiY215Uy5zbzxiciAvPg0KKwkJCQkJCUZpbGVVc2FnZSA9IDE8YnIgLz4NCisJCQkJCTwvaT4NCisJCQkJPC9ibG9ja3F1b3RlPjxiciAvPjxiciAvPg0KKwkJCQlSdW4gdGhlIGZvbGxvd2luZyBjb21tYW5kIHRvIGVuc3VyZSBldmVyeXRoaW5nIHdvcmtzIGFzIGV4cGVjdGVkOg0KKwkJCQk8YmxvY2txdW90ZT4NCisJCQkJCTxpPmVjaG8gInNlbGVjdCAxIiB8IGlzcWwgLXYgYXN0ZXJpc2stY29ubmVjdG9yPC9pPg0KKwkJCQk8L2Jsb2NrcXVvdGU+DQorCQkJPC9kaXY+DQorCQk8L3NlY3Rpb24+DQorCQk8c2VjdGlvbiBuYW1lPSJCdWlsZGluZyBhbmQgc2V0dGluZyB1cCBBc3RlcmlzayI+DQorCQkJPGRpdj4NCisJCQkJUnVuIHRoZSBjb21tYW5kcw0KKwkJCQk8YmxvY2txdW90ZT4NCisJCQkJCTxpPg0KKwkJCQkJCXN1ZG8gbWtkaXIgL3Vzci9zcmMvYXN0ZXJpc2sgJmFtcDsmYW1wOyBjZCAvdXNyL3NyYy9hc3RlcmlzazxiciAvPg0KKwkJCQkJCXN1ZG8gd2dldCBodHRwOi8vZG93bmxvYWRzLmFzdGVyaXNrLm9yZy9wdWIvdGVsZXBob255L2FzdGVyaXNrL3JlbGVhc2VzL2FzdGVyaXNrLTExLjIuMS50YXIuZ3o8YnIgLz4NCisJCQkJCQlzdWRvIHRhciAteHZ6ZiBhc3Rlcmlzay0xMS4yLjEudGFyLmd6PGJyIC8+DQorCQkJCQkJY2QgLi9hc3Rlcmlzay0xMS4yLjE8YnIgLz4NCisJCQkJCQlzdWRvIG1ha2UgY2xlYW48YnIgLz4NCisJCQkJCQlzdWRvIC4vY29uZmlndXJlPGJyIC8+DQorCQkJCQkJc3VkbyBtYWtlPGJyIC8+DQorCQkJCQkJc3VkbyBtYWtlIGluc3RhbGw8YnIgLz4NCisJCQkJCQlzdWRvIG1ha2Ugc2FtcGxlczxiciAvPg0KKwkJCQkJCXN1ZG8gbWFrZSBjb25maWc8YnIgLz4NCisJCQkJCQlzdWRvIHNlcnZpY2UgYXN0ZXJpc2sgc3RhcnQ8YnIgLz4NCisJCQkJCTwvaT4NCisJCQkJPC9ibG9ja3F1b3RlPg0KKwkJCTwvZGl2Pg0KKwkJPC9zZWN0aW9uPg0KKwkJPHNlY3Rpb24gbmFtZT0iQ29uZmlndXJlIEFzdGVyaXNrIj4NCisJCQk8ZGl2Pg0KKwkJCQlFbmFibGUgYXN0ZXJpc2sgT0RCQyBtb2R1bGU6PGJyIC8+PGJyIC8+DQorCQkJCU1vZGlmeSAiW21vZHVsZXNdIiBzZWN0aW9uIG9mIDx0dD4vZXRjL2FzdGVyaXNrL21vZHVsZXMuY29uZjwvdHQ+IGFzIGZvbGxvd3M6PGJyIC8+DQorCQkJCTxzdHJvbmc+QWRkL3VuY29tbWVudCB0aGUgZm9sbG93aW5nIGxpbmVzPC9zdHJvbmc+DQorCQkJCTxibG9ja3F1b3RlPg0KKwkJCQkJPGk+DQorCQkJCQkJcHJlbG9hZCA9PiByZXNfb2RiYy5zbzxiciAvPg0KKwkJCQkJCXByZWxvYWQgPT4gcmVzX2NvbmZpZ19vZGJjLnNvPGJyIC8+DQorCQkJCQk8L2k+DQorCQkJCTwvYmxvY2txdW90ZT4NCisJCQk8L2Rpdj48YnIgLz4NCisJCQk8ZGl2Pg0KKwkJCQlDcmVhdGUvdXBkYXRlICJbYXN0ZXJpc2tdIiBzZWN0aW9uIGluIDx0dD4vZXRjL2FzdGVyaXNrL3Jlc19vZGJjLmNvbmY8L3R0PjoNCisJCQkJPGJsb2NrcXVvdGU+DQorCQkJCQk8aT4NCisJCQkJCQlbYXN0ZXJpc2tdPGJyIC8+DQorCQkJCQkJZW5hYmxlZCA9PiB5ZXM8YnIgLz4NCisJCQkJCQlkc24gPT4gYXN0ZXJpc2stY29ubmVjdG9yPGJyIC8+DQorCQkJCQkJcHJlLWNvbm5lY3QgPT4geWVzDQorCQkJCQk8L2k+DQorCQkJCTwvYmxvY2txdW90ZT4NCisJCQk8L2Rpdj48YnIgLz4NCisJCQk8ZGl2Pg0KKwkJCQlNb2RpZnkgPHR0Pi9ldGMvYXN0ZXJpc2svc2lwLmNvbmY8L3R0PjxiciAvPg0KKwkJCQk8c3Ryb25nPkFkZC91bmNvbW1lbnQgdGhlIGZvbGxvd2luZyBsaW5lPC9zdHJvbmc+OjxiciAvPg0KKwkJCQk8YmxvY2txdW90ZT4NCisJCQkJCTxpPg0KKwkJCQkJCXZpZGVvc3VwcG9ydD15ZXM8YnIgLz4NCisJCQkJCQlydGNhY2hlZnJpZW5kcz15ZXM8YnIgLz4NCisJCQkJCTwvaT4NCisJCQkJPC9ibG9ja3F1b3RlPg0KKwkJCQk8c3Ryb25nPkFkZCB1c2VyIGZvciB0aGUgIlNJUCBUcmFuc3BvcnQiPC9zdHJvbmc+OjxiciAvPg0KKwkJCQk8YmxvY2txdW90ZT4NCisJCQkJCTxpPg0KKwkJCQkJCVtyZWQ1c2lwX3VzZXJdPGJyIC8+DQorCQkJCQkJdHlwZT1mcmllbmQ8YnIgLz4NCisJCQkJCQlzZWNyZXQ9MTIzNDU8YnIgLz4NCisJCQkJCQlkaXNhbGxvdz1hbGw8YnIgLz4NCisJCQkJCQlhbGxvdz11bGF3PGJyIC8+DQorCQkJCQkJYWxsb3c9aDI2NDxiciAvPg0KKwkJCQkJCWhvc3Q9ZHluYW1pYzxiciAvPg0KKwkJCQkJCW5hdD1mb3JjZV9ycG9ydCxjb21lZGlhPGJyIC8+DQorCQkJCQkJY29udGV4dD1yb29tcy1yZWQ1c2lwPGJyIC8+DQorCQkJCQk8L2k+DQorCQkJCTwvYmxvY2txdW90ZT4NCisJCQk8L2Rpdj48YnIgLz4NCisJCQk8ZGl2Pg0KKwkJCQlBZGQgbmV4dCBsaW5lcyBpbnRvIHRoZSA8dHQ+L2V0Yy9hc3Rlcmlzay9leHRjb25maWcuY29uZjwvdHQ+Og0KKwkJCQk8YmxvY2txdW90ZT4NCisJCQkJCTxpPg0KKwkJCQkJCVtzZXR0aW5nc108YnIgLz4NCisJCQkJCQlzaXBwZWVycyA9PiBvZGJjLGFzdGVyaXNrLHNpcHVzZXJzPGJyIC8+DQorCQkJCQk8L2k+DQorCQkJCTwvYmxvY2txdW90ZT4NCisJCQk8L2Rpdj48YnIgLz4NCisJCQk8ZGl2Pg0KKwkJCQlNb2RpZnkgPHR0Pi9ldGMvYXN0ZXJpc2svZXh0ZW5zaW9ucy5jb25mPC90dD48YnIgLz4NCisJCQkJPHN0cm9uZz5BZGQgdGhlIGZvbGxvd2luZyBzZWN0aW9uPC9zdHJvbmc+OjxiciAvPg0KKwkJCQk8YmxvY2txdW90ZT4NCisJCQkJCTxpPg0KKwkJCQkJCVtyb29tc108YnIgLz4NCisJCQkJCQlleHRlbiA9PiBfNDAwWCEsMSxHb3RvSWYoJFske0RCX0VYSVNUUyhvcGVubWVldGluZ3Mvcm9vbXMvJHtFWFRFTn0pfV0/b2s6bm90YXZhaWwpPGJyIC8+DQorCQkJCQkJZXh0ZW4gPT4gXzQwMFghLG4ob2spLFNFVChQSU49JHtEQihvcGVubWVldGluZ3Mvcm9vbXMvJHtFWFRFTn0pfSk8YnIgLz4NCisJCQkJCQlleHRlbiA9PiBfNDAwWCEsbixTZXQoQ09ORkJSSURHRSh1c2VyLHRlbXBsYXRlKT1zaXBfdXNlcik8YnIgLz4NCisJCQkJCQlleHRlbiA9PiBfNDAwWCEsbixTZXQoQ09ORkJSSURHRSh1c2VyLHBpbik9JHtQSU59KTxiciAvPg0KKwkJCQkJCWV4dGVuID0+IF80MDBYISxuKG9rKSxDb25mYnJpZGdlKCR7RVhURU59LGRlZmF1bHRfYnJpZGdlLCk8YnIgLz4NCisJCQkJCQlleHRlbiA9PiBfNDAwWCEsbixIYW5ndXA8YnIgLz4NCisJCQkJCQlleHRlbiA9PiBfNDAwWCEsbihub3RhdmFpbCksQW5zd2VyKCk8YnIgLz4NCisJCQkJCQlleHRlbiA9PiBfNDAwWCEsbixQbGF5YmFjayhpbnZhbGlkKTxiciAvPg0KKwkJCQkJCWV4dGVuID0+IF80MDBYISxuLEhhbmd1cDxiciAvPg0KKwkJCQkJCTxiciAvPg0KKwkJCQkJCVtyb29tcy1vcmlnaW5hdGVdPGJyIC8+DQorCQkJCQkJZXh0ZW4gPT4gXzQwMFghLDEsQ29uZmJyaWRnZSgke0VYVEVOfSxkZWZhdWx0X2JyaWRnZSxzaXBfdXNlcik8YnIgLz4NCisJCQkJCQlleHRlbiA9PiBfNDAwWCEsbixIYW5ndXA8YnIgLz4NCisJCQkJCQk8YnIgLz4NCisJCQkJCQlbcm9vbXMtb3V0XTxiciAvPg0KKwkJCQkJCTsgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKio8YnIgLz4NCisJCQkJCQk7IEV4dGVuc2lvbnMgZm9yIG91dGdvaW5nIGNhbGxzIGZyb20gT3Blbm1lZXRpbmdzIHJvb20uPGJyIC8+DQorCQkJCQkJOyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKjxiciAvPg0KKwkJCQkJCTxiciAvPg0KKwkJCQkJCVtyb29tcy1yZWQ1c2lwXTxiciAvPg0KKwkJCQkJCWV4dGVuID0+IF80MDBYISwxLEdvdG9JZigkWyR7REJfRVhJU1RTKG9wZW5tZWV0aW5ncy9yb29tcy8ke0VYVEVOfSl9XT9vazpub3RhdmlsKTxiciAvPg0KKwkJCQkJCWV4dGVuID0+IF80MDBYISxuKG9rKSxDb25mYnJpZGdlKCR7RVhURU59LGRlZmF1bHRfYnJpZGdlLHJlZDVzaXBfdXNlcik8YnIgLz4NCisJCQkJCQlleHRlbiA9PiBfNDAwWCEsbihub3RhdmFpbCksSGFuZ3VwIDxiciAvPg0KKwkJCQkJPC9pPg0KKwkJCQk8L2Jsb2NrcXVvdGU+DQorCQkJPC9kaXY+PGJyIC8+DQorCQkJPGRpdj4NCisJCQkJTW9kaWZ5IDx0dD4vZXRjL2FzdGVyaXNrL2NvbmZicmlkZ2UuY29uZjwvdHQ+PGJyIC8+DQorCQkJCTxzdHJvbmc+QWRkL01vZGlmeSB0aGUgZm9sbG93aW5nIHNlY2lvbnM8L3N0cm9uZz46PGJyIC8+DQorCQkJCTxibG9ja3F1b3RlPg0KKwkJCQkJPGk+DQorCQkJCQkJW2dlbmVyYWxdPGJyIC8+DQorCQkJCQkJPGJyIC8+DQorCQkJCQkJW3JlZDVzaXBfdXNlcl08YnIgLz4NCisJCQkJCQl0eXBlPXVzZXI8YnIgLz4NCisJCQkJCQltYXJrZWQ9eWVzPGJyIC8+DQorCQkJCQkJPGJyIC8+DQorCQkJCQkJW3NpcF91c2VyXTxiciAvPg0KKwkJCQkJCXR5cGU9dXNlcjxiciAvPg0KKwkJCQkJCWVuZF9tYXJrZWQ9eWVzPGJyIC8+DQorCQkJCQkJd2FpdF9tYXJrZWQ9eWVzPGJyIC8+DQorCQkJCQkJbXVzaWNfb25faG9sZF93aGVuX2VtcHR5PXllczxiciAvPg0KKwkJCQkJCTxiciAvPg0KKwkJCQkJCVtkZWZhdWx0X2JyaWRnZV08YnIgLz4NCisJCQkJCQl0eXBlPWJyaWRnZTxiciAvPg0KKwkJCQkJCXZpZGVvX21vZGU9Zm9sbG93X3RhbGtlcjxiciAvPiANCisJCQkJCTwvaT4NCisJCQkJPC9ibG9ja3F1b3RlPg0KKwkJCTwvZGl2PjxiciAvPg0KKwkJCTxkaXY+DQorCQkJCVRvIGVuYWJsZSBBc3RlcmlzayBNYW5hZ2VyIEFQSSBtb2RpZnkgPHR0Pi9ldGMvYXN0ZXJpc2svbWFuYWdlci5jb25mPC90dD48YnIgLz4NCisJCQkJPHN0cm9uZz5BZGQvTW9kaWZ5IHRoZSBmb2xsb3dpbmcgc2VjdGlvbnM8L3N0cm9uZz46PGJyIC8+DQorCQkJCTxibG9ja3F1b3RlPg0KKwkJCQkJPGk+DQorCQkJCQkJW2dlbmVyYWxdPGJyIC8+DQorCQkJCQkJZW5hYmxlZCA9IHllczxiciAvPg0KKwkJCQkJCXdlYmVuYWJsZWQgPSBubzxiciAvPg0KKwkJCQkJCXBvcnQgPSA1MDM4PGJyIC8+DQorCQkJCQkJYmluZGFkZHIgPSAxMjcuMC4wLjE8YnIgLz4NCisJCQkJCQk8YnIgLz4NCisJCQkJCQlbb3Blbm1lZXRpbmdzXTxiciAvPg0KKwkJCQkJCXNlY3JldCA9IDEyMzQ1PGJyIC8+DQorCQkJCQkJZGVueT0wLjAuMC4wLzAuMC4wLjA8YnIgLz4NCisJCQkJCQlwZXJtaXQ9MTI3LjAuMC4xLzI1NS4yNTUuMjU1LjA8YnIgLz4NCisJCQkJCQlyZWFkID0gYWxsPGJyIC8+DQorCQkJCQkJd3JpdGUgPSBhbGw8YnIgLz4NCisJCQkJCTwvaT4NCisJCQkJPC9ibG9ja3F1b3RlPg0KKwkJCTwvZGl2PjxiciAvPg0KKwkJCTxkaXY+DQorCQkJCVVwZGF0ZSBPcGVubWVldGluZ3Mgd2l0aCBjcmVhZGVudGlhbHMgZm9yIEFzdGVyaXNrIG1hbmFnZXIuIA0KKwkJCQlNb2RpZnkgPHR0Pi9vcHQvcmVkNS93ZWJhcHBzL29wZW5tZWV0aW5ncy9XRUItSU5GL29wZW5tZWV0aW5ncy1hcHBsaWNhdGlvbkNvbnRleHQueG1sPC90dD48YnIgLz4NCisJCQkJZmluZCA8c3Ryb25nPiZsdDtiZWFuIGlkPSJzaXBEYW8iIGNsYXNzPSJvcmcuYXBhY2hlLm9wZW5tZWV0aW5ncy5kYXRhLmNvbmZlcmVuY2UuZGFvLlNpcERhbyImZ3Q7PC9zdHJvbmc+DQorCQkJCXVuY29tbWVudCBpdHMgcGFyYW1ldGVycyBhbmQgc2V0IGl0IHRvIHlvdXIgY3VzdG9tIHZhbHVlcy4NCisJCQkJPHAgc3R5bGU9ImZvbnQtc2l6ZTogbGFyZ2VyOyBjb2xvcjogYmx1ZTsiPg0KKwkJCQkJSU1QT1JUQU5UOiB0aGlzIHN0ZXAgc2hvdWxkIGJlIGRvbmUgPHN0cm9uZz5CRUZPUkU8L3N0cm9uZz4gc3lzdGVtIGluc3RhbGwvcmVzdG9yZQ0KKwkJCQkJb3RoZXJ3aXNlIGFsbCBTSVAgcmVsYXRlZCByb29tIGluZm9ybWF0aW9uIHdpbGwgYmUgbG9zdA0KKwkJCQk8L3A+ICAgDQorCQkJPC9kaXY+PGJyIC8+DQorCQkJPGRpdj4NCisJCQkJUmVzdGFydCBhc3RlcmlzazoNCisJCQkJPGJsb2NrcXVvdGU+DQorCQkJCQk8aT5zZXJ2aWNlIGFzdGVyaXNrIHJlc3RhcnQ8L2k+DQorCQkJCTwvYmxvY2txdW90ZT4NCisJCQk8L2Rpdj48YnIgLz4NCisJCTwvc2VjdGlvbj4NCisNCisJCTxzZWN0aW9uIG5hbWU9IlNldHVwIHJlZDVzaXAgdHJhbnNwb3J0Ij4NCisJCQk8ZGl2Pg0KKwkJCQlEb3dubG9hZCByZWQ1c2lwIGZyb20NCisJCQkJPGJsb2NrcXVvdGU+aHR0cDovL3JlZDVwaG9uZS5nb29nbGVjb2RlLmNvbS9zdm4vYnJhbmNoZXMvcmVkNXNpcDwvYmxvY2txdW90ZT4NCisJCQk8L2Rpdj4NCisJCQk8ZGl2Pg0KKwkJCQlCdWlsZCB3aXRoIEFwYWNoZSBBbnQNCisJCQkJPGJsb2NrcXVvdGU+DQorCQkJCQk8aT5hbnQ8L2k+DQorCQkJCTwvYmxvY2txdW90ZT4NCisJCQk8L2Rpdj4NCisJCQk8ZGl2Pg0KKwkJCQlJbnNlcnQgcHJvcGVyIHZhbHVlcyB0byB0aGUgPHR0Pi9vcHQvcmVkNXNpcC9zZXR0aW5ncy5wcm9wZXJ0aWVzPC90dD4NCisNCisJCQkJPGJsb2NrcXVvdGU+DQorCQkJCQk8aT4NCisJCQkJCQlyZWQ1Lmhvc3Q9MTI3LjAuMC4xICMgcmVkNSBzZXJ2ZXIgYWRkcmVzczxiciAvPg0KKwkJCQkJCW9tLmNvbnRleHQ9b3Blbm1lZXRpbmdzICMgT3Blbm1lZXRpbmdzIGNvbnRleHQ8YnIgLz4gDQorCQkJCQkJcmVkNS5jb2RlYz1hc2FvPGJyIC8+DQorCQkJCQkJcmVkNS5jb2RlYy5yYXRlPTIyICMgc2hvdWxkIGNvcnJlbGF0ZSB3aXRoIG1pYyBzZXR0aW5ncyBpbiBjb25maWcueG1sPGJyIC8+DQorCQkJCQkJc2lwLm9icHJveHk9MTI3LjAuMC4xICMgYXN0ZXJpc2sgYWRkZXJzczxiciAvPg0KKwkJCQkJCXNpcC5waG9uZT1yZWQ1c2lwX3VzZXIgIyBzaXAgcGhvbmUgbnVtYmVyPGJyIC8+DQorCQkJCQkJc2lwLmF1dGhpZD1yZWQ1c2lwX3VzZXIgIyBzaXAgYXV0aCBpZDxiciAvPg0KKwkJCQkJCXNpcC5zZWNyZXQ9MTIzNDUgIyBzaXAgcGFzc3dvcmQ8YnIgLz4NCisJCQkJCQlzaXAucmVhbG09YXN0ZXJpc2sgIyBzaXAgcmVhbG08YnIgLz4NCisJCQkJCQlzaXAucHJveHk9MTI3LjAuMC4xICMgYWRkcmVzcyBvZiBzaXAgcHJveHkgPGJyIC8+DQorCQkJCQkJcm9vbXMuZm9yY2VTdGFydD1ubyAjIFRCRCA8YnIgLz4NCisJCQkJCQlyb29tcz0xICMgVEJEIChub3QgaW4gdXNlKSA8YnIgLz4NCisJCQkJCTwvaT4NCisJCQkJPC9ibG9ja3F1b3RlPg0KKwkJCTwvZGl2Pg0KKwkJCTxkaXY+DQorCQkJCUFkZCByZWQ1c2lwIHRvIGF1dG9zdGFydDoNCisJCQkJPGJsb2NrcXVvdGU+DQorCQkJCQk8aT4NCisJCQkJCQlzdWRvIGNwIC9vcHQvcmVkNXNpcC9yZWQ1c2lwIC9ldGMvaW5pdC5kLzxiciAvPg0KKwkJCQkJCXN1ZG8gY2htb2QgYSt4IC9ldGMvaW5pdC5kL3JlZDVzaXA8YnIgLz4NCisJCQkJCQlzdWRvIHVwZGF0ZS1yYy5kIHJlZDVzaXAgZGVmYXVsdHMNCisJCQkJCTwvaT4NCisJCQkJPC9ibG9ja3F1b3RlPg0KKwkJCTwvZGl2Pg0KKwkJCTxkaXY+DQorCQkJCVN0YXJ0IG9wZW5tZWV0aW5ncw0KKwkJCQk8YmxvY2txdW90ZT4NCisJCQkJCTxpPnNlcnZpY2UgcmVkNSBzdGFydDwvaT4NCisJCQkJPC9ibG9ja3F1b3RlPg0KKwkJCTwvZGl2Pg0KKwkJCTxkaXY+DQorCQkJCVN0YXJ0IHJlZDVzaXANCisJCQkJPGJsb2NrcXVvdGU+DQorCQkJCQk8aT5zZXJ2aWNlIHJlZDVzaXAgc3RhcnQ8L2k+DQorCQkJCTwvYmxvY2txdW90ZT4NCisJCQk8L2Rpdj4NCisJCTwvc2VjdGlvbj4NCisJPC9ib2R5Pg0KKzwvZG9jdW1lbnQ+DQpkaWZmIC0tZ2l0IGEveGRvY3Mvc3R5bGVzaGVldHMvZXJyb3J0YWJsZS54c2wgYi94ZG9jcy9zdHlsZXNoZWV0cy9lcnJvcnRhYmxlLnhzbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZWQ2NjhmCi0tLSAvZGV2L251bGwKKysrIGIveGRvY3Mvc3R5bGVzaGVldHMvZXJyb3J0YWJsZS54c2wKQEAgLTAsMCArMSw3MSBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8IS0tDQorICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKw0KKyAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisNCisgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorIC0tPg0KKzx4c2w6c3R5bGVzaGVldCB4bWxuczp4c2w9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvWFNML1RyYW5zZm9ybSIgdmVyc2lvbj0iMS4wIj4NCisJPHhzbDpvdXRwdXQgbWV0aG9kPSJ4bWwiLz4NCisJDQorCTx4c2w6dGVtcGxhdGUgbWF0Y2g9IlJPT1QiPg0KKzxkb2N1bWVudD4NCis8eHNsOmNvbW1lbnQ+DQorICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKw0KKyAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisNCisgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorIDwveHNsOmNvbW1lbnQ+DQorCTxwcm9wZXJ0aWVzPg0KKwkJPHRpdGxlPk9wZW5tZWV0aW5ncyBFcnJvcnMgdGFibGU8L3RpdGxlPg0KKwkJPGF1dGhvciBlbWFpbD0ic29sb21heEBhcGFjaGUub3JnIj5BcGFjaGUgT3Blbk1lZXRpbmdzIERvY3VtZW50YXRpb24gUm9ib3Q8L2F1dGhvcj4NCisJPC9wcm9wZXJ0aWVzPg0KKwk8Ym9keT4NCisJCTxzZWN0aW9uIG5hbWU9Ik9wZW5tZWV0aW5ncyBFcnJvcnMgdGFibGUiPg0KKwkJPHRhYmxlPg0KKwkJCTx0cj4NCisJCQkJPHRoPkNvZGU8L3RoPg0KKwkJCQk8dGg+VHlwZTwvdGg+DQorCQkJCTx0aD5EZXNjcmlwdGlvbjwvdGg+DQorCQkJPC90cj4NCisJCQk8eHNsOmFwcGx5LXRlbXBsYXRlcy8+DQorCQk8L3RhYmxlPg0KKwkJPC9zZWN0aW9uPg0KKwk8L2JvZHk+DQorPC9kb2N1bWVudD4NCisJPC94c2w6dGVtcGxhdGU+DQorCQ0KKwk8eHNsOnRlbXBsYXRlIG1hdGNoPSJyb3ciPg0KKwkJCTx0cj4NCisJCQkJPHRkPi08eHNsOnZhbHVlLW9mIHNlbGVjdD0iZmllbGRbQG5hbWU9J2Vycm9ydmFsdWVzX2lkJ10iLz48L3RkPg0KKwkJCQk8dGQ+DQorCQkJCQk8eHNsOnZhcmlhYmxlIG5hbWU9InR5cGVJZCIgc2VsZWN0PSJmaWVsZFtAbmFtZT0nZXJyb3J0eXBlX2lkJ10iLz4NCisJCQkJCTx4c2w6dmFyaWFibGUgbmFtZT0ieCI+DQorCQkJCQkJPHhzbDpjaG9vc2U+DQorCQkJCQkJCTx4c2w6d2hlbiB0ZXN0PSIkdHlwZUlkPScxJyI+MzIyPC94c2w6d2hlbj4NCisJCQkJCQkJPHhzbDpvdGhlcndpc2U+MzIzPC94c2w6b3RoZXJ3aXNlPg0KKwkJCQkJCTwveHNsOmNob29zZT4NCisJCQkJCTwveHNsOnZhcmlhYmxlPg0KKwkJCQkJPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImRvY3VtZW50KCcuLi8uLi9XZWJDb250ZW50L2xhbmd1YWdlcy9lbmdsaXNoLnhtbCcpL2xhbmd1YWdlL3N0cmluZ1tAaWQ9JHhdL3ZhbHVlIiAvPg0KKwkJCQk8L3RkPg0KKwkJCQk8dGQ+DQorCQkJCQk8eHNsOnZhcmlhYmxlIG5hbWU9ImRlc2NJZCIgc2VsZWN0PSJmaWVsZFtAbmFtZT0nZmllbGR2YWx1ZXNfaWQnXSIvPg0KKwkJCQkJPHhzbDp2YWx1ZS1vZiBzZWxlY3Q9ImRvY3VtZW50KCcuLi8uLi9XZWJDb250ZW50L2xhbmd1YWdlcy9lbmdsaXNoLnhtbCcpL2xhbmd1YWdlL3N0cmluZ1tAaWQ9JGRlc2NJZF0vdmFsdWUiIC8+DQorCQkJCTwvdGQ+DQorCQkJPC90cj4NCisJPC94c2w6dGVtcGxhdGU+DQorPC94c2w6c3R5bGVzaGVldD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS94ZG9jcy9zdHlsZXNoZWV0cy9wcm9qZWN0LnhtbCBiL3hkb2NzL3N0eWxlc2hlZXRzL3Byb2plY3QueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkZTcxOGIKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9zdHlsZXNoZWV0cy9wcm9qZWN0LnhtbApAQCAtMCwwICsxLDE0MyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0KKyAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgLS0+Cis8cHJvamVjdCB4bWxuczp4c2k9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlIiANCisgICAgeHNpOm5vTmFtZXNwYWNlU2NoZW1hTG9jYXRpb249InByb2plY3QueHNkIgorCW5hbWU9IkFwYWNoZSBPcGVuTWVldGluZ3MgUHJvamVjdCIKKyAgICBocmVmPSJodHRwOi8vb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcvIj4KKworICAgIDx0aXRsZT5BcGFjaGUgT3Blbk1lZXRpbmdzPC90aXRsZT4KKyAgICA8IS0tICAtLT4KKyAgICA8bG9nbyBocmVmPSIvaW1hZ2VzL2xvZ28tMi5qcGciPkFwYWNoZSBPcGVuTWVldGluZ3M8L2xvZ28+CisJCisgICAgPGJvZHk+CisKKyAgICA8bWVudSBuYW1lPSJHZW5lcmFsIj4KKyAgICAgICAgPGl0ZW0gbmFtZT0iSG9tZSIgICAgICAgICAgICAgICAgICAgaHJlZj0iL2luZGV4Lmh0bWwiLz4KKyAgICAgICAgPGl0ZW0gbmFtZT0iTGljZW5zZSIgICAgICAgICAgICAgICAgaHJlZj0iL2xpY2Vuc2UuaHRtbCIvPgorICAgICAgICA8aXRlbSBuYW1lPSJBU0YiICAgICAgICAgICAgICAgICAgICBocmVmPSJodHRwOi8vd3d3LmFwYWNoZS5vcmcvIi8+CisgICAgICAgIDxpdGVtIG5hbWU9IkRvd25sb2FkcyIgICAgICAgICAgICAgIGhyZWY9Ii9kb3dubG9hZHMuaHRtbCIvPgorICAgICAgICA8aXRlbSBuYW1lPSJDb21tZXJjaWFsIFN1cHBvcnQiICAgICBocmVmPSIvY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiLz4KKyAgICA8L21lbnU+CisgICAgCisgICAgPG1lbnUgbmFtZT0iSW5zdGFsbGF0aW9uIGFuZCBVcGdyYWRlIj4KKyAgICAJPGl0ZW0gbmFtZT0iSW5zdGFsbGF0aW9uIiAgICAgICAgICAgaHJlZj0iL2luc3RhbGxhdGlvbi5odG1sIi8+CisgICAgCTxpdGVtIG5hbWU9IlVwZ3JhZGUiICAgICAgICAgICAJCWhyZWY9Ii9VcGdyYWRlLmh0bWwiLz4KKyAgICAJPGl0ZW0gbmFtZT0iVHV0b3JpYWxzIgkJCQlocmVmPSJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9UdXRvcmlhbHMrZm9yK2luc3RhbGxpbmcrT3Blbk1lZXRpbmdzK2FuZCtUb29scyIgLz4KKyAgICAJPGl0ZW0gbmFtZT0iQ29tbWFuZCBMaW5lIEFkbWluIgkJaHJlZj0iL0NvbW1hbmRMaW5lQWRtaW4uaHRtbCIgLz4KKyAgICA8L21lbnU+CisKKyAgICA8bWVudSBuYW1lPSJDb21tdW5pdHkiPgorICAgICAgICA8aXRlbSBuYW1lPSJHZXQgSW52b2x2ZWQiICAgICAgICAgICBocmVmPSIvZ2V0LWludm9sdmVkLmh0bWwiLz4KKyAgICAgICAgPGl0ZW0gbmFtZT0iQ29tbWl0dGVycyIgICAgICAgICAgICAgaHJlZj0iL3RlYW0tbGlzdC5odG1sIi8+CisgICAgICAgIDxpdGVtIG5hbWU9Ik1haWxpbmcgTGlzdHMiICAgICAgICAgIGhyZWY9Ii9tYWlsLWxpc3RzLmh0bWwiLz4KKyAgICAJPGl0ZW0gbmFtZT0iV2lraSIgICAgICAgICAgICAgICAgICAgaHJlZj0iaHR0cDovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy8iIC8+CisgICAgPC9tZW51PgorCisgICAgPG1lbnUgbmFtZT0iRGV2ZWxvcG1lbnQiPgorICAgICAgICA8aXRlbSBuYW1lPSJTb3VyY2UgQ29kZSIgICAgICAgICAgICBocmVmPSIvc3ZuLmh0bWwiLz4KKyAgICAgICAgPGl0ZW0gbmFtZT0iQnVncyAvIElzc3VlcyAoSklSQSkiICAgaHJlZj0iaHR0cDovL2lzc3Vlcy5hcGFjaGUub3JnL2ppcmEvYnJvd3NlL09QRU5NRUVUSU5HUyIvPgorICAgICAgICA8aXRlbSBuYW1lPSJEZXBlbmRlbmNpZXMiICAgICAgICAgICBocmVmPSIvZGVwZW5kZW5jaWVzLmh0bWwiLz4KKyAgICAgICAgPGl0ZW0gbmFtZT0iQnVpbGQgSW5zdHJ1Y3Rpb25zIiAgICAgaHJlZj0iL0J1aWxkSW5zdHJ1Y3Rpb25zLmh0bWwiLz4KKyAgICAgICAgPGl0ZW0gbmFtZT0iSlVuaXQgVGVzdGluZyIgICAgICAgICAgaHJlZj0iL0pVbml0VGVzdGluZy5odG1sIi8+CisgICAgICAgIDxpdGVtIG5hbWU9Ik1hbnVhbCBUZXN0aW5nIiAgICAgICAgIGhyZWY9Ii9NYW51YWxUZXN0aW5nLmh0bWwiLz4KKyAgICAgICAgPGl0ZW0gbmFtZT0iUmVsZWFzZSBHdWlkZSIgICAgICAgICAgaHJlZj0iL1JlbGVhc2VHdWlkZS5odG1sIi8+CisgICAgICAgIDxpdGVtIG5hbWU9IldlYnNpdGUgR3VpZGUiICAgICAgICAgIGhyZWY9Ii9XZWJzaXRlR3VpZGUuaHRtbCIvPgorICAgIDwvbWVudT4KKyAgICAKKyAgICA8bWVudSBuYW1lPSJJbnRlZ3JhdGlvbiI+CisgICAgICAgIDxpdGVtIG5hbWU9IlNPQVAvUkVTVCBBUEkiICAgICAgICAgIGhyZWY9Ii9Tb2FwUmVzdEFQSS5odG1sIiAvPgorICAgICAgICA8aXRlbSBuYW1lPSJSRVNUIEFQSSBTYW1wbGUiICAgICAgICBocmVmPSIvUmVzdEFQSVNhbXBsZS5odG1sIiAvPgorICAgICAgICA8aXRlbSBuYW1lPSJMZGFwIGFuZCBBRFMiICAgICAgICAgICBocmVmPSIvTGRhcEFuZEFEUy5odG1sIiAvPgorICAgICAgICA8aXRlbSBuYW1lPSJWb0lQIGFuZCBTSVAiICAgICAgICAgICBocmVmPSIvdm9pcC1zaXAtaW50ZWdyYXRpb24uaHRtbCIgLz4KKyAgICAgICAgPGl0ZW0gbmFtZT0iRXJyb3JzIHRhYmxlIiAgICAgICAgICAgaHJlZj0iL0Vycm9yc1RhYmxlLmh0bWwiIC8+CisgICAgPC9tZW51PgorICAgIAorICAgIDxtZW51IG5hbWU9IlBsdWdpbnMiPgorICAgICAgICA8aXRlbSBuYW1lPSJNb29kbGUgUGx1Z2luIiAgICAgICAgICBocmVmPSIvTW9vZGxlUGx1Z2luLmh0bWwiIC8+CisgICAgICAgIDxpdGVtIG5hbWU9IlNha2FpIFBsdWdpbiIgICAgICAgICAgCWhyZWY9Ii9TYWthaVBsdWdpbi5odG1sIiAvPgorICAgICAgICA8aXRlbSBuYW1lPSJKaXJhIFBsdWdpbiIgICAgICAgICAgCWhyZWY9Ii9KaXJhUGx1Z2luLmh0bWwiIC8+CisgICAgICAgIDxpdGVtIG5hbWU9Ikpvb21sYSBQbHVnaW4iICAgICAgICAgIGhyZWY9Ii9Kb29tbGFQbHVnaW4uaHRtbCIgLz4KKyAgICAgICAgPGl0ZW0gbmFtZT0iRHJ1cGFsIFBsdWdpbiIgICAgICAgICAgaHJlZj0iL0RydXBhbFBsdWdpbi5odG1sIiAvPgorCQk8aXRlbSBuYW1lPSJCaXRyaXggUGx1Z2luIgkJCWhyZWY9Ii9CaXRyaXhQbHVnaW4uaHRtbCIgLz4KKyAgICAgICAgPGl0ZW0gbmFtZT0iQ29uZmx1ZW5jZSBQbHVnaW4iICAgICAgaHJlZj0iL0NvbmZsdWVuY2VQbHVnaW4uaHRtbCIgLz4KKyAgICAgICAgPGl0ZW0gbmFtZT0iU3VnYXJDUk0gUGx1Z2luIiAgICAgICAgaHJlZj0iL1N1Z2FyQ1JNUGx1Z2luLmh0bWwiIC8+CisgICAgICAgIDxpdGVtIG5hbWU9IlJlZG1pbmUgUGx1Z2luIiAgICAgICAgIGhyZWY9Ii9SZWRtaW5lUGx1Z2luLmh0bWwiIC8+CisgICAgPC9tZW51PgorICAgIAorICAgIDxtZW51IG5hbWU9IkNvbmZpZ3VyYXRpb24iPgorICAgIAk8aXRlbSBuYW1lPSJEQiBTYW1wbGUgQ29uZmlndXJhdGlvbnMiID4KKyAgICAJCTxzdWJpdGVtIG5hbWU9IkFwYWNoZSBEZXJieSIgaHJlZj0iL0FwYWNoZURlcmJ5Q29uZmlnLmh0bWwiIC8+CisgICAgCQk8c3ViaXRlbSBuYW1lPSJJQk0gREIyIiBocmVmPSIvSUJNREIyQ29uZmlnLmh0bWwiIC8+CisgICAgCQk8c3ViaXRlbSBuYW1lPSJPcmFjbGUiIGhyZWY9Ii9PcmFjbGVDb25maWcuaHRtbCIgLz4KKyAgICAJCTxzdWJpdGVtIG5hbWU9Ik15U1FMIiBocmVmPSIvTXlTUUxDb25maWcuaHRtbCIgLz4KKyAgICAJCTxzdWJpdGVtIG5hbWU9IlBvc3RncmVzIiBocmVmPSIvUG9zdGdyZXNDb25maWcuaHRtbCIgLz4KKyAgICAJPC9pdGVtPgorICAgIAk8aXRlbSBuYW1lPSJMb2NhbGl6YXRpb24gYW5kIGxhbmd1YWdlcyIgPgorICAgIAkJPHN1Yml0ZW0gbmFtZT0iSW50ZXJuYXRpb25hbGlzYXRpb24iIGhyZWY9Ii9JbnRlcm5hdGlvbmFsaXNhdGlvbi5odG1sIiAvPgorICAgIAkJPHN1Yml0ZW0gbmFtZT0iTGFuZ3VhZ2VFZGl0b3IiIGhyZWY9Ii9MYW5ndWFnZUVkaXRvci5odG1sIiAvPgorICAgIAkJPHN1Yml0ZW0gbmFtZT0iVGltZVpvbmVIYW5kbGluZyIgaHJlZj0iL1RpbWVab25lSGFuZGxpbmcuaHRtbCIgLz4KKyAgICAJCTxzdWJpdGVtIG5hbWU9IkVkaXRUZW1wbGF0ZXMiIGhyZWY9Ii9FZGl0VGVtcGxhdGVzLmh0bWwiIC8+CisgICAgCTwvaXRlbT4KKyAgICAJPGl0ZW0gbmFtZT0iTkFUIFBvcnQgU2V0dGluZ3MiID4KKyAgICAJCTxzdWJpdGVtIG5hbWU9IlBvcnQgc2V0dGluZ3MiIGhyZWY9Ii9Qb3J0U2V0dGluZ3MuaHRtbCIgLz4KKyAgICAJPC9pdGVtPgorICAgIAk8aXRlbSBuYW1lPSJQZXJmb3JtYW5jZSIgPgorICAgIAkJPHN1Yml0ZW0gbmFtZT0iSlZNIHBlcmZvcm1hbmNlIHR1bmluZyIgaHJlZj0iL0pWTVBlcmZvcm1hbmNlVHVuaW5nLmh0bWwiIC8+CisgICAgCTwvaXRlbT4KKyAgICAJPGl0ZW0gbmFtZT0iVXNlciBJbnRlcmZhY2UiPgorICAgIAkJPHN1Yml0ZW0gbmFtZT0iVGhlbWVzIiBocmVmPSIvdGhlbWVzLWFuZC1icmFuZGluZy5odG1sIiAvPgorICAgIAkJPHN1Yml0ZW0gbmFtZT0iRGFzaGJvYXJkIiBocmVmPSIvRGFzaGJvYXJkLmh0bWwiIC8+CisgICAgCQk8c3ViaXRlbSBuYW1lPSJXZWJjYW0gcmVzb2x1dGlvbnMiIGhyZWY9Ii9XZWJjYW1SZXNvbHV0aW9ucy5odG1sIiAvPgorICAgIAkJPHN1Yml0ZW0gbmFtZT0iUm9vbSBsYXlvdXQgb3B0aW9ucyIgaHJlZj0iL0NvbmZlcmVuY2VSb29tTGF5b3V0T3B0aW9ucy5odG1sIiAvPgorICAgIAkJPHN1Yml0ZW0gbmFtZT0iSG90IEtleXMiIGhyZWY9Ii9Ib3RLZXlzLmh0bWwiIC8+CisgICAgCTwvaXRlbT4KKyAgICAJPGl0ZW0gbmFtZT0iQ3VzdG9taXphdGlvbiIgPgorICAgIAkJPHN1Yml0ZW0gbmFtZT0iV2ViYXBwIG5hbWUvcGF0aCIgaHJlZj0iL1dlYmFwcE5hbWVQYXRoLmh0bWwiIC8+CisgICAgCQk8c3ViaXRlbSBuYW1lPSJOYXZpZ2F0aW9uIiBocmVmPSIvTmF2aWdhdGlvbi5odG1sIiAvPgorICAgIAkJPHN1Yml0ZW0gbmFtZT0iQ2FsZW5kYXIgYW5kIHRpbWV6b25lIiBocmVmPSIvQ2FsZW5kYXJBbmRUaW1lem9uZS5odG1sIiAvPgorICAgIAkJPHN1Yml0ZW0gbmFtZT0iQ3VzdG9tIHJvb20gdHlwZSIgaHJlZj0iL0N1c3RvbVJvb21UeXBlSG93VG8uaHRtbCIgLz4KKyAgICAJCTxzdWJpdGVtIG5hbWU9IkN1c3RvbSBjdHlwdCBtZWNoYW5pc20iIGhyZWY9Ii9DdXN0b21DcnlwdE1lY2hhbmlzbS5odG1sIiAvPgorICAgIAkJPHN1Yml0ZW0gbmFtZT0iR2VuZXJhbCBDb25maWd1cmF0aW9uIiBocmVmPSIvR2VuZXJhbENvbmZpZ3VyYXRpb24uaHRtbCIgLz4KKyAgICAJPC9pdGVtPgorICAgIAk8aXRlbSBuYW1lPSJTZWN1cml0eSIgPgorICAgIAkJPHN1Yml0ZW0gbmFtZT0iUmVzdHJpY3RlZCBBY2Nlc3MiIGhyZWY9Ii9SZXN0cmljdGVkQWNjZXNzLmh0bWwiIC8+CisgICAgCQk8c3ViaXRlbSBuYW1lPSJSVE1QUyBhbmQgSFRUUFMiIGhyZWY9Ii9SVE1QU0FuZEhUVFBTLmh0bWwiIC8+CisgICAgCTwvaXRlbT4KKyAgICAJPGl0ZW0gbmFtZT0iQ29udmVydGVycyIgPgorICAgIAkJPHN1Yml0ZW0gbmFtZT0iT3Blbk9mZmljZSBDb252ZXJ0ZXIiIGhyZWY9Ii9PcGVuT2ZmaWNlQ29udmVydGVyLmh0bWwiIC8+CisgICAgICAgICAgICA8c3ViaXRlbSBuYW1lPSJGRk1QRUcgVmVyc2lvbiBTd2l0Y2giIGhyZWY9Ii9GRk1QRUdWZXJzaW9uU3dpdGNoLmh0bWwiIC8+CisgICAgICAgIDwvaXRlbT4KKyAgICAJPGl0ZW0gbmFtZT0iQ2x1c3RlcmluZyIgPgorICAgIAkJPHN1Yml0ZW0gbmFtZT0iQ2x1c3RlcmluZyIgaHJlZj0iL0NsdXN0ZXJpbmcuaHRtbCIgLz4KKyAgICAJPC9pdGVtPgorICAgIAk8aXRlbSBuYW1lPSJNaXNjIiA+CisgICAgCQk8c3ViaXRlbSBuYW1lPSJHZXQgdmVyc2lvbiBpbmZvIiBocmVmPSIvR2V0VmVyc2lvbkluZm8uaHRtbCIgLz4KKyAgICAJPC9pdGVtPgorICAgIDwvbWVudT4KKyAgICAKKyAgICA8IS0tIAorICAgIDxtZW51IG5hbWU9IkludGVncmF0aW9uIj4KKyAgICAgICAgPGl0ZW0gbmFtZT0iU09BUC9SRVNUIEFQSSIgICAgICAgICAgaHJlZj0iL2ludGVncmF0aW9uX2FwaS5odG1sIi8+CisgICAgICAgIDxpdGVtIG5hbWU9IkxEQVAgYW5kIEFEUyIgICAgICAgICAgIGhyZWY9Ii9pbnRlZ3JhdGlvbl9sZGFwLmh0bWwiLz4KKyAgICAgICAgPGl0ZW0gbmFtZT0iVm9JUCBhbmQgU0lQIiAgICAgICAgICAgaHJlZj0iL2ludGVncmF0aW9uX3ZvaXAuaHRtbCIvPgorICAgICAgICA8aXRlbSBuYW1lPSJNb29kbGUgUGx1Z2luIiAgICAgICAgICBocmVmPSIvbW9vZGxlX3BsdWdpbi5odG1sIi8+CisgICAgICAgIDxpdGVtIG5hbWU9IlN1Z2FyQ1JNIFBsdWdpbiIgICAgICAgIGhyZWY9Ii9zdWdhcmNybV9wbHVnaW4uaHRtbCIvPgorICAgIDwvbWVudT4KKyAgICAgLS0+CisgICAgIAorICAgIAorCisgICAgPC9ib2R5PgorPC9wcm9qZWN0PgpkaWZmIC0tZ2l0IGEveGRvY3Mvc3R5bGVzaGVldHMvcHJvamVjdC54c2QgYi94ZG9jcy9zdHlsZXNoZWV0cy9wcm9qZWN0LnhzZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMzhiZmE3Ci0tLSAvZGV2L251bGwKKysrIGIveGRvY3Mvc3R5bGVzaGVldHMvcHJvamVjdC54c2QKQEAgLTAsMCArMSw2MyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8IS0tDQorICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKw0KKyAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisNCisgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorIC0tPg0KKzx4czpzY2hlbWEgeG1sbnM6eHM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hIiBlbGVtZW50Rm9ybURlZmF1bHQ9InF1YWxpZmllZCI+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJwcm9qZWN0Ij4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czpzZXF1ZW5jZT4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0idGl0bGUiLz4NCisgICAgICAgIDx4czplbGVtZW50IHJlZj0ibG9nbyIvPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgcmVmPSJib2R5Ii8+DQorICAgICAgPC94czpzZXF1ZW5jZT4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImhyZWYiIHVzZT0icmVxdWlyZWQiIHR5cGU9InhzOmFueVVSSSIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdXNlPSJyZXF1aXJlZCIvPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0idGl0bGUiIHR5cGU9InhzOnN0cmluZyIvPg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0ibG9nbyI+DQorICAgIDx4czpjb21wbGV4VHlwZSBtaXhlZD0idHJ1ZSI+DQorICAgICAgPHhzOmF0dHJpYnV0ZSBuYW1lPSJocmVmIiB1c2U9InJlcXVpcmVkIi8+DQorICAgIDwveHM6Y29tcGxleFR5cGU+DQorICA8L3hzOmVsZW1lbnQ+DQorICA8eHM6ZWxlbWVudCBuYW1lPSJib2R5Ij4NCisgICAgPHhzOmNvbXBsZXhUeXBlPg0KKyAgICAgIDx4czpzZXF1ZW5jZT4NCisgICAgICAgIDx4czplbGVtZW50IG1heE9jY3Vycz0idW5ib3VuZGVkIiByZWY9Im1lbnUiLz4NCisgICAgICA8L3hzOnNlcXVlbmNlPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0ibWVudSI+DQorICAgIDx4czpjb21wbGV4VHlwZT4NCisgICAgICA8eHM6c2VxdWVuY2U+DQorICAgICAgICA8eHM6ZWxlbWVudCBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJpdGVtIi8+DQorICAgICAgPC94czpzZXF1ZW5jZT4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHVzZT0icmVxdWlyZWQiLz4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCisgIDx4czplbGVtZW50IG5hbWU9Iml0ZW0iPg0KKyAgICA8eHM6Y29tcGxleFR5cGU+DQorICAgICAgPHhzOnNlcXVlbmNlPg0KKyAgICAgICAgPHhzOmVsZW1lbnQgbWluT2NjdXJzPSIwIiBtYXhPY2N1cnM9InVuYm91bmRlZCIgcmVmPSJzdWJpdGVtIi8+DQorICAgICAgPC94czpzZXF1ZW5jZT4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImhyZWYiIHR5cGU9InhzOmFueVVSSSIvPg0KKyAgICAgIDx4czphdHRyaWJ1dGUgbmFtZT0ibmFtZSIgdXNlPSJyZXF1aXJlZCIvPg0KKyAgICA8L3hzOmNvbXBsZXhUeXBlPg0KKyAgPC94czplbGVtZW50Pg0KKyAgPHhzOmVsZW1lbnQgbmFtZT0ic3ViaXRlbSI+DQorICAgIDx4czpjb21wbGV4VHlwZT4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9ImhyZWYiIHVzZT0icmVxdWlyZWQiLz4NCisgICAgICA8eHM6YXR0cmlidXRlIG5hbWU9Im5hbWUiIHVzZT0icmVxdWlyZWQiLz4NCisgICAgPC94czpjb21wbGV4VHlwZT4NCisgIDwveHM6ZWxlbWVudD4NCis8L3hzOnNjaGVtYT4NCmRpZmYgLS1naXQgYS94ZG9jcy9zdHlsZXNoZWV0cy9zaXRlLnZzbCBiL3hkb2NzL3N0eWxlc2hlZXRzL3NpdGUudnNsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1MjNjYzUKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9zdHlsZXNoZWV0cy9zaXRlLnZzbApAQCAtMCwwICsxLDQ2NiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+CisKKzwhLS0KK0NvcHlyaWdodCAxOTk5LTIwMDQgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKK3lvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KK1lvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCitodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKK1dJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCistLT4KKworCis8IS0tIENvbnRlbnQgU3R5bGVzaGVldCBmb3IgU2l0ZSAtLT4KKworICAgICMjIERlZmluZWQgdmFyaWFibGVzCisgICAgI3NldCAoJG1lbnV0YWJsZWJnID0gIiNGRkZGRkYiKQorICAgICNzZXQgKCRtZW51dGFibGVmZyA9ICIjMDAwMDAwIikKKyAgICAjc2V0ICgkYm9keWJnID0gIiNmZmZmZmYiKQorICAgICNzZXQgKCRib2R5ZmcgPSAiIzAwMDAwMCIpCisgICAgI3NldCAoJGJvZHlsaW5rID0gIiMxMjM0NjUiKQorICAgICNzZXQgKCRwYWdlYmFubmVyYmcgPSAiIzY2OUFFNiIpCisgICAgI3NldCAoJHBhZ2ViYW5uZXJmZyA9ICIjMDAwMDAwIikKKyAgICAjc2V0ICgkYmFubmVyYmcgPSAiI0VFRUVFRSIpCisgICAgI3NldCAoJGJhbm5lcmZnID0gIiMwMDAwMDAiKQorICAgICNzZXQgKCRzdWJiYW5uZXJiZyA9ICIjRUZFRkVGIikKKyAgICAjc2V0ICgkc3ViYmFubmVyZmcgPSAiIzAwMDAwMCIpCisgICAgI3NldCAoJHRhYmxldGhiZyA9ICIjMDM5YWNjIikKKyAgICAjc2V0ICgkdGFibGV0ZGJnID0gIiNhMGRkZjAiKQorICAgICNzZXQgKCRjb2xvcmhybGluZSA9ICIjOTk5OTk5IikKKyAgICAKKzwhLS0gc3RhcnQgdGhlIHByb2Nlc3NpbmcgLS0+CisjZG9jdW1lbnQoKQorPCEtLSBlbmQgdGhlIHByb2Nlc3NpbmcgLS0+CisKKyMjIFRoaXMgaXMgd2hlcmUgdGhlIG1hY3JvJ3MgbGl2ZQorCisjbWFjcm8gKCBmZWF0dXJlICRmZWF0dXJlKQorCTxoMz4kZmVhdHVyZS5nZXRBdHRyaWJ1dGUoInRpdGxlIikuZ2V0VmFsdWUoKTwvaDM+CisJPHRhYmxlIGJvcmRlcj0iMCI+CisJCTx0Ym9keT4KKwkJCTx0cj4KKwkJCQk8dGQgc3R5bGU9InRleHQtYWxpZ246IGNlbnRlcjsiIHdpZHRoPSIzMDAiPgorCQkJCQkjZm9yZWFjaCAoICRpdGVtcyBpbiAkZmVhdHVyZS5nZXRDaGlsZHJlbigpICkKKwkJCQkJCSNpZiAoJGl0ZW1zLmdldE5hbWUoKS5lcXVhbHMoImltYWdlIikpCisJCQkJCQkJPHA+CisJCQkJCQkJPGEgY2xhc3M9Imdyb3VwMSBmYW5jeWJveC1idXR0b25zIiBocmVmPSIkaXRlbXMuZ2V0QXR0cmlidXRlKCJmdWxsaHJlZiIpLmdldFZhbHVlKCkiPgorCQkJCQkJCQk8aW1nIHNyYz0iJGl0ZW1zLmdldEF0dHJpYnV0ZSgiaHJlZiIpLmdldFZhbHVlKCkiIGFsdD0iIiB3aWR0aD0iJGl0ZW1zLmdldEF0dHJpYnV0ZSgid2lkdGgiKS5nZXRWYWx1ZSgpIiAKKwkJCQkJCQkJCWhlaWdodD0iJGl0ZW1zLmdldEF0dHJpYnV0ZSgiaGVpZ2h0IikuZ2V0VmFsdWUoKSIgLz4KKwkJCQkJCQk8L2E+CisJCQkJCQkjZW5kCisJCQkJCSNlbmQKKwkJCQk8L3RkPgorCQkJCTx0ZD4KKwkJCQkJI2ZvcmVhY2ggKCAkaXRlbXMgaW4gJGZlYXR1cmUuZ2V0Q2hpbGRyZW4oKSApCisJCQkJCQk8ZGl2PgorCQkJCQkJI2lmICgkaXRlbXMuZ2V0TmFtZSgpLmVxdWFscygidGV4dCIpKQorCQkJCQkJCSRpdGVtcy5nZXRDaGlsZHJlbigpCisJCQkJCQkjZW5kCisJCQkJCSNlbmQKKwkJCQk8L3RkPgorCQkJPC90cj4KKwkgICAgPC90Ym9keT4KKwk8L3RhYmxlPgorI2VuZAorCisjbWFjcm8gKCB0YWJsZSAkdGFibGUpCis8dGFibGU+CisgICAgI2ZvcmVhY2ggKCAkaXRlbXMgaW4gJHRhYmxlLmdldENoaWxkcmVuKCkgKQorICAgICAgICAjaWYgKCRpdGVtcy5nZXROYW1lKCkuZXF1YWxzKCJ0ciIpKQorICAgICAgICAgICAgI3RyICgkaXRlbXMpCisgICAgICAgICNlbmQKKyAgICAjZW5kCis8L3RhYmxlPgorI2VuZAorCisjbWFjcm8gKCB0ciAkdHIpCis8dHI+CisgICAgI2ZvcmVhY2ggKCAkaXRlbXMgaW4gJHRyLmdldENoaWxkcmVuKCkgKQorICAgICAgICAjaWYgKCRpdGVtcy5nZXROYW1lKCkuZXF1YWxzKCJ0ZCIpKQorICAgICAgICAgICAgI3RkICgkaXRlbXMpCisgICAgICAgICNlbHNlaWYgKCRpdGVtcy5nZXROYW1lKCkuZXF1YWxzKCJ0aCIpKQorICAgICAgICAgICAgI3RoICgkaXRlbXMpCisgICAgICAgICNlbmQKKyAgICAjZW5kCis8L3RyPgorI2VuZAorCisjbWFjcm8gKCB0ZCAkdmFsdWUpCisjaWYgKCR2YWx1ZS5nZXRBdHRyaWJ1dGVWYWx1ZSgiY29sc3BhbiIpKQorI3NldCAoJGNvbHNwYW4gPSAkdmFsdWUuZ2V0QXR0cmlidXRlVmFsdWUoImNvbHNwYW4iKSkKKyNlbmQKKyNpZiAoJHZhbHVlLmdldEF0dHJpYnV0ZVZhbHVlKCJyb3dzcGFuIikpCisjc2V0ICgkcm93c3BhbiA9ICR2YWx1ZS5nZXRBdHRyaWJ1dGVWYWx1ZSgicm93c3BhbiIpKQorI2VuZAorPHRkIGJnY29sb3I9IiR0YWJsZXRkYmciIGNvbHNwYW49IiQhY29sc3BhbiIgcm93c3Bhbj0iJCFyb3dzcGFuIiB2YWxpZ249InRvcCIgYWxpZ249ImxlZnQiIHN0eWxlPSJjb2xvcjogYmxhY2s7IGZvbnQtc2l6ZTogc21hbGw7IGZvbnQtZmFtaWx5OiBhcmlhbCwgaGVsdmV0aWNhLCBzYW5zZXJpZjsiPgorICAgICNpZiAoJHZhbHVlLmdldFRleHQoKS5sZW5ndGgoKSAhPSAwIHx8ICR2YWx1ZS5oYXNDaGlsZHJlbigpKQorICAgICR2YWx1ZS5nZXRDb250ZW50KCkKKyAgICAjZWxzZQorICAgICZuYnNwOworICAgICNlbmQKKzwvdGQ+CisjZW5kCisKKyNtYWNybyAoIHRoICR2YWx1ZSkKKyNpZiAoJHZhbHVlLmdldEF0dHJpYnV0ZVZhbHVlKCJjb2xzcGFuIikpCisjc2V0ICgkY29sc3BhbiA9ICR2YWx1ZS5nZXRBdHRyaWJ1dGVWYWx1ZSgiY29sc3BhbiIpKQorI2VuZAorI2lmICgkdmFsdWUuZ2V0QXR0cmlidXRlVmFsdWUoInJvd3NwYW4iKSkKKyNzZXQgKCRyb3dzcGFuID0gJHZhbHVlLmdldEF0dHJpYnV0ZVZhbHVlKCJyb3dzcGFuIikpCisjZW5kCis8dGggYmdjb2xvcj0iJHRhYmxldGhiZyIgY29sc3Bhbj0iJCFjb2xzcGFuIiByb3dzcGFuPSIkIXJvd3NwYW4iIHZhbGlnbj0idG9wIiBhbGlnbj0ibGVmdCIgc3R5bGU9ImNvbG9yOiBibGFjazsgZm9udC1zaXplOiBzbWFsbDsgZm9udC1mYW1pbHk6IGFyaWFsLCBoZWx2ZXRpY2EsIHNhbnNlcmlmOyI+CisgICAgI2lmICgkdmFsdWUuZ2V0VGV4dCgpLmxlbmd0aCgpICE9IDAgfHwgJHZhbHVlLmhhc0NoaWxkcmVuKCkpCisgICAgJHZhbHVlLmdldENvbnRlbnQoKQorICAgICNlbHNlCisgICAgJm5ic3A7CisgICAgI2VuZAorPC90aD4KKyNlbmQKKworI21hY3JvICggcHJvamVjdGFuY2hvciAkbmFtZSAkdmFsdWUgKQorI2lmICgkdmFsdWUuc3RhcnRzV2l0aCgiaHR0cDovLyIpKQorICAgIDxhIGhyZWY9IiR2YWx1ZSI+JG5hbWU8L2E+CisjZWxzZWlmICgkdmFsdWUuc3RhcnRzV2l0aCgiL3NpdGUiKSkKKyAgICA8YSBocmVmPSJodHRwOi8vamFrYXJ0YS5hcGFjaGUub3JnJHZhbHVlIj4kbmFtZTwvYT4KKyNlbHNlCisgICAgPGEgaHJlZj0iJHJlbGF0aXZlUGF0aCR2YWx1ZSI+JG5hbWU8L2E+CisjZW5kCisjZW5kCisKKyNtYWNybyAoIG1ldGFhdXRob3IgJGF1dGhvciAkZW1haWwgKQorICAgICAgICAgICAgPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250ZW50PSIkYXV0aG9yIj4KKyAgICAgICAgICAgIDxtZXRhIG5hbWU9ImVtYWlsIiBjb250ZW50PSIkZW1haWwiPgorI2VuZAorCisjbWFjcm8gKCBpbWFnZSAkdmFsdWUgKQorI2lmICgkdmFsdWUuZ2V0QXR0cmlidXRlVmFsdWUoIndpZHRoIikpCisjc2V0ICgkd2lkdGg9JHZhbHVlLmdldEF0dHJpYnV0ZVZhbHVlKCJ3aWR0aCIpKQorI2VuZAorI2lmICgkdmFsdWUuZ2V0QXR0cmlidXRlVmFsdWUoImhlaWdodCIpKQorI3NldCAoJGhlaWdodD0kdmFsdWUuZ2V0QXR0cmlidXRlVmFsdWUoImhlaWdodCIpKQorI2VuZAorI2lmICgkdmFsdWUuZ2V0QXR0cmlidXRlVmFsdWUoImFsaWduIikpCisjc2V0ICgkYWxpZ249JHZhbHVlLmdldEF0dHJpYnV0ZVZhbHVlKCJhbGlnbiIpKQorI2VuZAorPGltZyBzcmM9IiRyZWxhdGl2ZVBhdGgvJHZhbHVlLmdldEF0dHJpYnV0ZVZhbHVlKCJzcmMiKSIgd2lkdGg9IiQhd2lkdGgiIGhlaWdodD0iJCFoZWlnaHQiIGFsaWduPSIkIWFsaWduIj4KKyNlbmQKKworI21hY3JvICggc291cmNlICR2YWx1ZSkKKyAgICA8ZGl2IGFsaWduPSJsZWZ0Ij4KKyAgICA8dGFibGUgc3R5bGU9ImJvcmRlcjogc29saWQgMXB4ICMwMjMyNjQ7IHBhZGRpbmc6IDVweDsiPgorICAgIDx0cj4KKyAgICAgIDx0ZCBiZ2NvbG9yPSIjZmZmZmZmIj48cHJlPiRlc2NhcGUuZ2V0VGV4dCgkdmFsdWUuZ2V0VGV4dCgpKTwvcHJlPjwvdGQ+CisgICAgPC90cj4KKyAgICA8L3RhYmxlPgorICAgIDwvZGl2PgorI2VuZAorCisjbWFjcm8gKCBzdWJzZWN0aW9uICRzdWJzZWN0aW9uKQorICAgIDx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCIgd2lkdGg9IjEwMCUiPgorICAgICAgPHRyPjx0ZCBiZ2NvbG9yPSIkc3ViYmFubmVyYmciPgorICAgICAgICA8Zm9udCBjb2xvcj0iJHN1YmJhbm5lcmZnIiBmYWNlPSJhcmlhbCxoZWx2ZXRpY2Esc2Fuc2VyaWYiPgorICAgICAgICAgIDxhIG5hbWU9IiRzdWJzZWN0aW9uLmdldEF0dHJpYnV0ZVZhbHVlKCJuYW1lIikiPjxzdHJvbmc+JHN1YnNlY3Rpb24uZ2V0QXR0cmlidXRlVmFsdWUoIm5hbWUiKTwvc3Ryb25nPjwvYT4KKyAgICAgICAgPC9mb250PgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICNmb3JlYWNoICggJGl0ZW1zIGluICRzdWJzZWN0aW9uLmdldENoaWxkcmVuKCkgKQorICAgICAgICAgICAgI2lmICgkaXRlbXMuZ2V0TmFtZSgpLmVxdWFscygiaW1nIikpCisgICAgICAgICAgICAgICAgI2ltYWdlICgkaXRlbXMpCisgICAgICAgICAgICAjZWxzZWlmICgkaXRlbXMuZ2V0TmFtZSgpLmVxdWFscygic291cmNlIikpCisgICAgICAgICAgICAgICAgI3NvdXJjZSAoJGl0ZW1zKQorICAgICAgICAgICAgI2Vsc2VpZiAoJGl0ZW1zLmdldE5hbWUoKS5lcXVhbHMoInRhYmxlIikpCisgICAgICAgICAgICAgICAgI3RhYmxlICgkaXRlbXMpCisgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICRpdGVtcworICAgICAgICAgICAgI2VuZAorICAgICAgICAjZW5kCisgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyNlbmQKKworI21hY3JvICggc2VjdGlvbiAkc2VjdGlvbikKKyAgICA8dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIiB3aWR0aD0iMTAwJSI+CisgICAgICA8dHI+PHRkID48IS0tIGJnY29sb3I9IiRiYW5uZXJiZyIgLS0+CisgICAgICAgIDxmb250IGNvbG9yPSIkYmFubmVyZmciIGZhY2U9InZlcmRhbmEsYXJpYWwsaGVsdmV0aWNhLHNhbnNlcmlmIj4KKyAgICAgICAgICA8YSBuYW1lPSIkc2VjdGlvbi5nZXRBdHRyaWJ1dGVWYWx1ZSgibmFtZSIpIj48c3Ryb25nPiRzZWN0aW9uLmdldEF0dHJpYnV0ZVZhbHVlKCJuYW1lIik8L3N0cm9uZz48L2E+CisgICAgICAgIDwvZm9udD4KKyAgICAgICAgPGhyIHN0eWxlPSJ3aWR0aDoxMDAlOyBjb2xvcjokY29sb3JocmxpbmU7IGJhY2tncm91bmQtY29sb3I6JGNvbG9yaHJsaW5lOyBoZWlnaHQ6MXB4OyBib3JkZXI6MHB4OyIvPgorICAgICAgPC90ZD48L3RyPgorICAgICAgPHRyPjx0ZD4KKyAgICAgICAgPGJsb2NrcXVvdGU+CisgICAgICAgICNmb3JlYWNoICggJGl0ZW1zIGluICRzZWN0aW9uLmdldENoaWxkcmVuKCkgKQorICAgICAgICAgICAgI2lmICgkaXRlbXMuZ2V0TmFtZSgpLmVxdWFscygiaW1nIikpCisgICAgICAgICAgICAgICAgI2ltYWdlICgkaXRlbXMpCisgICAgICAgICAgICAjZWxzZWlmICgkaXRlbXMuZ2V0TmFtZSgpLmVxdWFscygic291cmNlIikpCisgICAgICAgICAgICAgICAgI3NvdXJjZSAoJGl0ZW1zKQorICAgICAgICAgICAgI2Vsc2VpZiAoJGl0ZW1zLmdldE5hbWUoKS5lcXVhbHMoInRhYmxlIikpCisgICAgICAgICAgICAgICAgI3RhYmxlICgkaXRlbXMpCisgICAgICAgICAgICAjZWxzZWlmICgkaXRlbXMuZ2V0TmFtZSgpLmVxdWFscygiZmVhdHVyZSIpKQorICAgICAgICAgICAgICAgICNmZWF0dXJlICgkaXRlbXMpCisgICAgICAgICAgICAjZWxzZWlmICgkaXRlbXMuZ2V0TmFtZSgpLmVxdWFscygic3Vic2VjdGlvbiIpKQorICAgICAgICAgICAgICAgICNzdWJzZWN0aW9uICgkaXRlbXMpCisgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICRpdGVtcworICAgICAgICAgICAgI2VuZAorICAgICAgICAjZW5kCisgICAgICAgIDwvYmxvY2txdW90ZT4KKyAgICAgIDwvdGQ+PC90cj4KKyAgICAgIDx0cj48dGQ+PGJyLz48L3RkPjwvdHI+CisgICAgPC90YWJsZT4KKyNlbmQKKworI21hY3JvICggbWFrZVByb2plY3QgKQorCisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPGRpdiBpZD0iYWNjb3JkaW9uIiBzdHlsZT0id2lkdGg6IDEwMCUiPgorICAgIAorICAgICNzZXQgKCRtZW51cyA9ICRwcm9qZWN0LmdldENoaWxkKCJib2R5IikuZ2V0Q2hpbGRyZW4oIm1lbnUiKSkKKyAgICAjZm9yZWFjaCAoICRtZW51IGluICRtZW51cyApCisgICAgCTxoMz48YSBocmVmPSIjJG1lbnUuZ2V0QXR0cmlidXRlVmFsdWUoIm5hbWUiKS5yZXBsYWNlQWxsKCIgIiwiIikiPiRtZW51LmdldEF0dHJpYnV0ZVZhbHVlKCJuYW1lIik8L2E+PC9oMz4KKyAgICAJPGRpdj4KKwkgICAgICAgICNmb3JlYWNoICggJGl0ZW0gaW4gJG1lbnUuZ2V0Q2hpbGRyZW4oKSApCisJICAgICAgICAgICAgI3NldCAoJG5hbWUgPSAkaXRlbS5nZXRBdHRyaWJ1dGVWYWx1ZSgibmFtZSIpKQorCSAgICAgICAgICAgICNpZiAoICRpdGVtLmdldEF0dHJpYnV0ZVZhbHVlKCJocmVmIikubGVuZ3RoKCkgPiAwICkKKwkgICAgICAgICAgICAJI3Byb2plY3RhbmNob3IoJG5hbWUgJGl0ZW0uZ2V0QXR0cmlidXRlVmFsdWUoImhyZWYiKSk8YnIvPgorCSAgICAgICAgCSNlbHNlCisJICAgICAgICAgICAgCTxiPiRuYW1lPC9iPjxici8+CisJICAgICAgICAgICAgCQkjZm9yZWFjaCAoICRzdWJpdGVtIGluICRpdGVtLmdldENoaWxkcmVuKCkgKQorCSAgICAgICAgICAgIAkJCSNzZXQgKCRuYW1lID0gJHN1Yml0ZW0uZ2V0QXR0cmlidXRlVmFsdWUoIm5hbWUiKSkKKwkgICAgICAgICAgICAJCQkjcHJvamVjdGFuY2hvcigkbmFtZSAkc3ViaXRlbS5nZXRBdHRyaWJ1dGVWYWx1ZSgiaHJlZiIpKTxici8+CisJICAgICAgICAgICAgCQkjZW5kCisJICAgICAgICAJI2VuZAorCSAgICAgICAgI2VuZAorICAgIAk8L2Rpdj4KKyAgICAjZW5kCisgICAgCisgICAgPC9kaXY+CisgICAgIAorICAgIDxici8+CisgICAgCisjZW5kCisKKyNtYWNybyAoZ2V0UHJvamVjdEltYWdlKQorI2lmICgkcHJvamVjdC5nZXRDaGlsZCgibG9nbyIpKQorI3NldCAoICRsb2dvU3RyaW5nID0gJHByb2plY3QuZ2V0Q2hpbGQoImxvZ28iKS5nZXRBdHRyaWJ1dGVWYWx1ZSgiaHJlZiIpICkKKzx0ZCBhbGlnbj0ibGVmdCI+CisjaWYgKCAkbG9nb1N0cmluZy5zdGFydHNXaXRoKCIvIikgKQorPGEgaHJlZj0iJHByb2plY3QuZ2V0QXR0cmlidXRlVmFsdWUoImhyZWYiKSI+PGltZyBzcmM9IiRyZWxhdGl2ZVBhdGgkbG9nb1N0cmluZyIgYWx0PSIkcHJvamVjdC5nZXRDaGlsZCgibG9nbyIpLmdldFRleHQoKSIgYm9yZGVyPSIwIi8+PC9hPgorI2Vsc2UKKzxhIGhyZWY9IiRwcm9qZWN0LmdldEF0dHJpYnV0ZVZhbHVlKCJocmVmIikiPjxpbWcgc3JjPSIkcmVsYXRpdmVQYXRoLyRsb2dvU3RyaW5nIiBhbHQ9IiRwcm9qZWN0LmdldENoaWxkKCJsb2dvIikuZ2V0VGV4dCgpIiBib3JkZXI9IjAiLz48L2E+CisjZW5kCis8L3RkPgorI2VuZAorI2VuZAorCisjbWFjcm8gKGdldEJhbm5lclRpdGxlKQorI2lmICggJHJvb3QuZ2V0Q2hpbGQoInByb3BlcnRpZXMiKS5nZXRDaGlsZCgiYmFubmVydGl0bGUiKSApCisgICAgI3NldCAoICRwYWdlQmFubmVyID0gJHJvb3QuZ2V0Q2hpbGQoInByb3BlcnRpZXMiKS5nZXRDaGlsZCgiYmFubmVydGl0bGUiKSApCisjZWxzZQorICAgICNzZXQgKCAkcGFnZUJhbm5lciA9ICRyb290LmdldENoaWxkKCJwcm9wZXJ0aWVzIikuZ2V0Q2hpbGQoInRpdGxlIikuZ2V0VGV4dCgpICkKKyNlbmQKKzx0ZCB3aWR0aD0iODAlIiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIiA+CisJPGEgaHJlZj0iZGVtby5odG1sIj5EZW1vPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9ImRvd25sb2Fkcy5odG1sIiB0YXJnZXQ9Il9QQVJFTlQiPkRvd25sb2FkPC9hPgorCTxzcGFuPnw8L3NwYW4+IAorCTxhIGhyZWY9Imluc3RhbGxhdGlvbi5odG1sIiB0YXJnZXQ9Il9QQVJFTlQiPkluc3RhbGxhdGlvbjwvYT4KKwk8c3Bhbj58PC9zcGFuPiAKKwk8YSBocmVmPSJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUyIgdGFyZ2V0PSJfQkxBTksiPldpa2k8L2E+CisJPHNwYW4+Jm5ic3A7PC9zcGFuPgorPC90ZD4KKyNlbmQKKworI21hY3JvIChwcmludE1ldGEgJG1ldGFFbGVtZW50KQorPG1ldGEgI3NldCAoJGF0dHJpYnMgPSAkbWV0YUVsZW1lbnQuZ2V0QXR0cmlidXRlcygpKQorI2ZvcmVhY2ggKCRhIGluICRhdHRyaWJzKSAkYS5nZXROYW1lKCk9IiRhLmdldFZhbHVlKCkiICNlbmQgLz4KKyNlbmQKKworI21hY3JvIChkb2N1bWVudCkKKyAgICA8IS0tID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0gLS0+CisgICAgPCEtLSBHRU5FUkFURUQgRklMRSwgRE8gTk9UIEVESVQsIEVESVQgVEhFIFhNTCBGSUxFIElOIHhkb2NzIElOU1RFQUQhIC0tPgorICAgIDwhLS0gTWFpbiBQYWdlIFNlY3Rpb24gLS0+CisgICAgPCEtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09IC0tPgorICAgIDxodG1sPgorICAgICAgICA8aGVhZD4KKyAgICAgICAgICAgIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ii8+CisKKyAgICAgICAgICAgICNzZXQgKCRhdXRob3JzID0gJHJvb3QuZ2V0Q2hpbGQoInByb3BlcnRpZXMiKS5nZXRDaGlsZHJlbigiYXV0aG9yIikpCisgICAgICAgICAgICAjZm9yZWFjaCAoICRhdSBpbiAkYXV0aG9ycyApCisgICAgICAgICAgICAgICAgI21ldGFhdXRob3IgKCAkYXUuZ2V0VGV4dCgpICRhdS5nZXRBdHRyaWJ1dGVWYWx1ZSgiZW1haWwiKSApCisgICAgICAgICAgICAjZW5kCisKKyAgICAgICAgICAgI3NldCAoJG1ldGFzID0gJHJvb3QuZ2V0Q2hpbGRyZW4oIm1ldGEiKSkKKworICAgICAgICAgICAgIyMgICAgUGFyc2UgbWV0YSBkaXJlY3RpdmVzIHN1Y2ggYXMKKyAgICAgICAgICAgICMjICAgIDxtZXRhIG5hbWU9ImtleXdvcmQiIGNvbnRlbnQ9Impha2FydGEsIGphdmEiLz4KKyAgICAgICAgICAgICNmb3JlYWNoICgkbWV0YSBpbiAkbWV0YXMpICNwcmludE1ldGEoJG1ldGEpICNlbmQKKworICAgICAgICAgICAgIyMgICAgU3VwcG9ydCBmb3IgPGJhc2U+IHRhZ3MuCisgICAgICAgICAgICAjaWYgKCRyb290LmdldENoaWxkKCJwcm9wZXJ0aWVzIikuZ2V0Q2hpbGQoImJhc2UiKSkKKyAgICAgICAgICAgICAgI3NldCAoJHVybCA9ICRyb290LmdldENoaWxkKCJwcm9wZXJ0aWVzIikuZ2V0Q2hpbGQoImJhc2UiKS5nZXRBdHRyaWJ1dGVWYWx1ZSgiaHJlZiIpKQorICAgICAgICAgICAgICA8YmFzZSBocmVmPSIkdXJsIi8+CisgICAgICAgICAgICAjZW5kCisKKyAgICAgICAgICAgIDx0aXRsZT4kcHJvamVjdC5nZXRDaGlsZCgidGl0bGUiKS5nZXRUZXh0KCkgLSAkcm9vdC5nZXRDaGlsZCgicHJvcGVydGllcyIpLmdldENoaWxkKCJ0aXRsZSIpLmdldFRleHQoKTwvdGl0bGU+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3Mvb3Blbm1lZXRpbmdzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvanF1ZXJ5LXVpLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29pbi1zbGlkZXItc3R5bGVzLmNzcyI+CisgICAgICAgICAgICA8bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJjc3MvY29sb3Jib3guY3NzIiAvPgorICAgICAgICAgICAgCisJCQk8IS0tIEFkZCBqUXVlcnkgbGlicmFyeSAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS0xLjcuMS5taW4uanMiPjwvc2NyaXB0PgorCQkKKwkJCTwhLS0gQWRkIGNvaW5zbGlkZXIgcGx1Z2lucyAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2NvaW4tc2xpZGVyLm1pbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTwhLS0gQWRkIGNvbG9yYm94IHBsdWdpbiAtLT4KKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpzL2pxdWVyeS5jb2xvcmJveC5qcyI+PC9zY3JpcHQ+CisJCQorCQkJPHNjcmlwdCBzcmM9ImpzL2pxdWVyeS51aS5jb3JlLmpzIj48L3NjcmlwdD4KKwkJCTxzY3JpcHQgc3JjPSJqcy9qcXVlcnkudWkud2lkZ2V0LmpzIj48L3NjcmlwdD4KKwkJCisJCQk8c2NyaXB0IHNyYz0ianMvanF1ZXJ5LnVpLmFjY29yZGlvbi5qcyI+PC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQ+CisJCQkkKGZ1bmN0aW9uKCkgeworCQkJCSQoICIjYWNjb3JkaW9uIiApLmFjY29yZGlvbih7CisJCQkJCWF1dG9IZWlnaHQ6IGZhbHNlLAorCQkJCQluYXZpZ2F0aW9uOiB0cnVlLAorCQkJCQluYXZpZ2F0aW9uRmlsdGVyOiBmdW5jdGlvbiAoKSB7CisJCQkJCQl2YXIgc2lkZWJhckhyZWZBcnJheSA9IHRoaXMuaHJlZi5zcGxpdCgiLyIpOworICAgIAkJCQkJdmFyIHNpZGVCYXJMYXN0U3RyaW5nID0gc2lkZWJhckhyZWZBcnJheVtzaWRlYmFySHJlZkFycmF5Lmxlbmd0aCAtIDFdLnRvTG93ZXJDYXNlKCk7CisJCQkJCQkKKwkJCQkJCWlmIChzaWRlQmFyTGFzdFN0cmluZy5pbmRleE9mKCIjIikgPT0gLTEpIHsKKwkJCQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJCQl9CisJCQkJCQkKKwkJCQkJCSNzZXQgKCRtZW51cyA9ICRwcm9qZWN0LmdldENoaWxkKCJib2R5IikuZ2V0Q2hpbGRyZW4oIm1lbnUiKSkKKwkJCQkJCS8qIGRvY3VtZW50LmxvY2F0aW9uLmhyZWYgKi8KKwkJCQkJCXZhciBjdXJyZW50U2VjdGlvbiA9ICIiOworCQkJCQkJCisJCQkJCQl2YXIgY3VycmVudExvY2F0aW9uID0gIiI7CisJCQkJCQl2YXIgY3VycmVudExpbmsgPSAiIjsKKwkJCQkJCWlmIChmYWxzZSkgeworCQkJCQkJCisJCQkJCQl9CisgICAgCQkJCQkjZm9yZWFjaCAoICRtZW51IGluICRtZW51cyApCisJCQkJCSAgICAgICAgI2ZvcmVhY2ggKCAkaXRlbSBpbiAkbWVudS5nZXRDaGlsZHJlbigpICkKKwkJCQkJICAgICAgICAgICAgI3NldCAoJG5hbWUgPSAkaXRlbS5nZXRBdHRyaWJ1dGVWYWx1ZSgibmFtZSIpKQorCQkJCQkgICAgICAgICAgICAjaWYgKCAkaXRlbS5nZXRBdHRyaWJ1dGVWYWx1ZSgiaHJlZiIpLmxlbmd0aCgpID4gMCApCisJCQkJCSAgICAgICAgICAgIAkKKwkJCQkJICAgICAgICAgICAgCWVsc2UgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZigiJGl0ZW0uZ2V0QXR0cmlidXRlVmFsdWUoImhyZWYiKSIpID4gMCkgeworCQkJCQkgICAgICAgICAgICAJCWN1cnJlbnRMb2NhdGlvbiA9ICIkbWVudS5nZXRBdHRyaWJ1dGVWYWx1ZSgibmFtZSIpLnJlcGxhY2VBbGwoIiAiLCIiKSI7CisJCQkJCSAgICAgICAgICAgIAkJY3VycmVudExpbmsgPSAiJGl0ZW0uZ2V0QXR0cmlidXRlVmFsdWUoImhyZWYiKSIuc3Vic3RyKDEsICIkaXRlbS5nZXRBdHRyaWJ1dGVWYWx1ZSgiaHJlZiIpIi5sZW5ndGgpOworCQkJCQkgICAgICAgICAgICAJfSAKKwkJCQkJICAgICAgICAgICAgCQorCQkJCQkgICAgICAgIAkjZWxzZQorCQkJCSAgICAgICAgICAgIAkJI2ZvcmVhY2ggKCAkc3ViaXRlbSBpbiAkaXRlbS5nZXRDaGlsZHJlbigpICkKKwkJCQkgICAgICAgICAgICAJCQkjc2V0ICgkbmFtZSA9ICRzdWJpdGVtLmdldEF0dHJpYnV0ZVZhbHVlKCJuYW1lIikpCisJCQkJICAgICAgICAgICAgCQkJZWxzZSBpZiAoZG9jdW1lbnQubG9jYXRpb24uaHJlZi5pbmRleE9mKCIkc3ViaXRlbS5nZXRBdHRyaWJ1dGVWYWx1ZSgiaHJlZiIpIikgPiAwKSB7CisJCQkJICAgICAgICAgICAgCQkJCWN1cnJlbnRMb2NhdGlvbiA9ICIkbWVudS5nZXRBdHRyaWJ1dGVWYWx1ZSgibmFtZSIpLnJlcGxhY2VBbGwoIiAiLCIiKSI7CisJCQkJCSAgICAgICAgICAgIAkJCWN1cnJlbnRMaW5rID0gIiRzdWJpdGVtLmdldEF0dHJpYnV0ZVZhbHVlKCJocmVmIikiLnN1YnN0cigxLCAiJHN1Yml0ZW0uZ2V0QXR0cmlidXRlVmFsdWUoImhyZWYiKSIubGVuZ3RoKTsKKwkJCQkJCSAgICAgICAgICAgIAl9IAorCQkJCSAgICAgICAgICAgIAkJI2VuZAorCQkJCQkgICAgICAgIAkjZW5kCisJCQkgICAgICAgIAkJI2VuZAorICAgIAkJCQkJI2VuZAorICAgIAkJCQkJCisgICAgCQkJCQljdXJyZW50TGluayA9IGN1cnJlbnRMaW5rLnRvTG93ZXJDYXNlKCk7CisgICAgCQkJCQljdXJyZW50TG9jYXRpb24gPSBjdXJyZW50TG9jYXRpb24udG9Mb3dlckNhc2UoKTsKKyAgICAJCQkJCQorCQkJCQkJcmV0dXJuIHNpZGVCYXJMYXN0U3RyaW5nID09IGN1cnJlbnRMaW5rKyIjIitjdXJyZW50TG9jYXRpb247CisJCQkJCX0KKwkJCQl9KTsKKwkJCX0pOworCQkJPC9zY3JpcHQ+CisJCQkKKwkJCTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKwkJCQkkKGRvY3VtZW50KS5yZWFkeShmdW5jdGlvbigpIHsKKwkJCQkJJCgnLmZhbmN5Ym94LWJ1dHRvbnMnKS5jb2xvcmJveCh7cmVsOidmYW5jeWJveC1idXR0b25zJyx3aWR0aDoiNzUlIiwgaGVpZ2h0OiI3NSUifSk7CisJCQkJCSQoJyNhY2NvcmRpb24gYScpLmVhY2goZnVuY3Rpb24oKSB7CisJCQkJICAgICAgdmFyIGEgPSAkKHRoaXMpOworCQkJCSAgICAgIHZhciBocmVmID0gYS5hdHRyKCJocmVmIik7CisJCQkJICAgICAgaWYgKGhyZWYuaW5kZXhPZigiIyIpID09IC0xKSB7CisJCQkJICAgICAgCSAgdmFyIGNvbXBhcmVJdCA9IGhyZWYuc3Vic3RyKDIsIGhyZWYubGVuZ3RoKTsKKwkJCQkJICAgICAgaWYgKGRvY3VtZW50LmxvY2F0aW9uLmhyZWYuaW5kZXhPZihjb21wYXJlSXQpIT0gLTEpIHsKKwkJCQkJICAgICAgIGEuYWRkQ2xhc3MoJ2FjdGl2ZScpOworCQkJCQkgICAgICB9CisJCQkJICAgICAgfQorCQkJCSAgICB9KTsKKwkJCQkJJCgnI2NvaW4tc2xpZGVyJykuY29pbnNsaWRlcih7IHdpZHRoOiA2NDAsaGVpZ2h0OiA0MDAsIGRlbGF5OiA0MDAwICB9KTsJCQkJCQorCQkJCX0pOworCQkJPC9zY3JpcHQ+CQorCQkJCQkJCisJCQk8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorCQkJCS5mYW5jeWJveC1jdXN0b20gLmZhbmN5Ym94LW91dGVyIHsKKwkJCQkJYm94LXNoYWRvdzogMCAwIDUwcHggIzIyMjsKKwkJCQl9CisJCQk8L3N0eWxlPgorICAgICAgICA8L2hlYWQ+CisKKyAgICAgICAgPGJvZHkgYmdjb2xvcj0iJGJvZHliZyIgdGV4dD0iJGJvZHlmZyIgbGluaz0iJGJvZHlsaW5rIiB2bGluaz0iJGJvZHlsaW5rIiBhbGluaz0iIzAwMDAwMCI+ICAKKyAgICAgICAgCTxkaXYgY2xhc3M9Im1haW5ib2R5IiBzdHlsZT0id2lkdGg6IDEwMCU7Ij4KKyAgICAgICAgCTxkaXYgY2xhc3M9InN1cGVyYm9keSIgc3R5bGU9IndpZHRoOiAxMDAlOyI+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjAiPgorICAgICAgICAgICAgICAgIDwhLS0gVE9QIElNQUdFIC0tPgorICAgICAgICAgICAgICAgIDx0cj4KKyAgICAgICAgICAgICAgICAgICAgI2dldFByb2plY3RJbWFnZSgpCisgICAgICAgICAgICAgICAgICAgICNnZXRCYW5uZXJUaXRsZSgpCisgICAgICAgICAgICAgICAgPC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHNwYWNpbmc9IjQiPgorICAgICAgICAgICAgICAgIDx0cj48dGQgY29sc3Bhbj0iMiI+CisgICAgICAgICAgICAgICAgICAgIDxociBub3NoYWRlPSJub3NoYWRlIiBzaXplPSIxIi8+CisgICAgICAgICAgICAgICAgPC90ZD48L3RyPgorCisgICAgICAgICAgICAgICAgPHRyPgorICAgICAgICAgICAgICAgICAgICA8IS0tIExFRlQgU0lERSBOQVZJR0FUSU9OIC0tPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjIwJSIgdmFsaWduPSJ0b3AiIG5vd3JhcD0ibm93cmFwIj4KKworICAgICAgICAgICAgICAgICAgICA8IS0tIHNwZWNpYWwgQUNvbiBMb2dvIC0gbGVhdmUgaGVyZSBmb3IgbmV4dCB0aW1lCisgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9hcGFjaGVjb24uY29tLzIwMDUvVVMvIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPSJodHRwOi8vYXBhY2hlLm9yZy9pbWFnZXMvYWMyMDA1dXNfYmx1ZV8xMjV4MTI1LmpwZyIgaGVpZ2h0PSIxMjUiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPSIxMjUiIGJvcmRlcj0iMCIgYWx0PSJBcGFjaGVDb24gVVMgMjAwNSIgLz4KKyAgICAgICAgICAgICAgICAgICAgPC9hPiAgLS0+CisKKyAgICAgICAgICAgICAgICAgICA8IS0tIHJlZ3VsYXIgbWVudSAtLT4KKworICAgICAgICAgICAgICAgICAgICAjbWFrZVByb2plY3QoKQorICAgICAgICAgICAgICAgICAgICA8L3RkPgorICAgICAgICAgICAgICAgICAgICA8dGQgd2lkdGg9IjgwJSIgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KKyAgICAgICAgICAgICAgICAgICAgI3NldCAoJGFsbFNlY3Rpb25zID0gJHJvb3QuZ2V0Q2hpbGQoImJvZHkiKS5nZXRDaGlsZHJlbigic2VjdGlvbiIpKQorICAgICAgICAgICAgICAgICAgICAjZm9yZWFjaCAoICRzZWN0aW9uIGluICRhbGxTZWN0aW9ucyApCisgICAgICAgICAgICAgICAgICAgICAgICAjc2VjdGlvbiAoJHNlY3Rpb24pCisgICAgICAgICAgICAgICAgICAgICNlbmQKKyAgICAgICAgICAgICAgICAgICAgPC90ZD4KKyAgICAgICAgICAgICAgICA8L3RyPgorCisgICAgICAgICAgICAgICAgPCEtLSBGT09URVIgLS0+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGhyIG5vc2hhZGU9Im5vc2hhZGUiIHNpemU9IjEiLz4KKyAgICAgICAgICAgICAgICA8L3RkPjwvdHI+CisgICAgICAgICAgICAgICAgPHRyPjx0ZCBjb2xzcGFuPSIyIj4KKyAgICAgICAgICAgICAgICAgICAgPGRpdiBhbGlnbj0iY2VudGVyIj48Zm9udCBjb2xvcj0iJGJvZHlsaW5rIiBzaXplPSItMSI+PGVtPgorICAgICAgICAgICAgICAgICAgICBDb3B5cmlnaHQgJiMxNjk7IDIwMDMtMjAxMywgVGhlIEFwYWNoZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisgICAgICAgICAgICAgICAgICAgIDwvZW0+PC9mb250PjwvZGl2PgorICAgICAgICAgICAgICAgIDwvdGQ+PC90cj4KKyAgICAgICAgICAgIDwvdGFibGU+CisgICAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICAgIDwvZGl2PgorICAgICAgICA8L2JvZHk+CisgICAgPC9odG1sPgorI2VuZAorCisKKworCisKZGlmZiAtLWdpdCBhL3hkb2NzL3N2bi54bWwgYi94ZG9jcy9zdm4ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjZGQ0YWIKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy9zdm4ueG1sCkBAIC0wLDAgKzEsMzQ1IEBACis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgorPCEtLQorICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisgICB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisgICBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKworICAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorCisgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAtLT4KKzxkb2N1bWVudD4KKworCTxwcm9wZXJ0aWVzPgorCQk8dGl0bGU+U291cmNlIENvZGU8L3RpdGxlPgorCQk8YXV0aG9yIGVtYWlsPSJzZWJhd2FnbmVyQGFwYWNoZS5vcmciPgorCQkJU2ViYXN0aWFuIFdhZ25lcgorCQk8L2F1dGhvcj4KKwk8L3Byb3BlcnRpZXM+CisKKwk8Ym9keT4KKworCQk8c2VjdGlvbiBuYW1lPSJPcGVuTWVldGluZ3MgU291cmNlIENvZGUiPgorCisJCQk8cD4KKwkJCQlPcGVuTWVldGluZ3MgdXNlcworCQkJCTxhIGNsYXNzPSJleHRlcm5hbCIgcmVsPSJub2ZvbGxvdyIgaHJlZj0iaHR0cDovL3N1YnZlcnNpb24udGlncmlzLm9yZyI+CisJCQkJCVN1YnZlcnNpb24KKwkJCQk8L2E+CisJCQkJdG8gbWFuYWdlIGl0cyBzb3VyY2UgY29kZS4KKwkJCQlJZiB5b3UncmUgbmV3IHRvIFN1YnZlcnNpb24sIHlvdSBjYW4gY2hlY2sgb3V0IHRoZQorCQkJCTxhIGhyZWY9Imh0dHA6Ly9zdm5ib29rLnJlZC1iZWFuLmNvbS8iPm9ubGluZSBib29rPC9hPgorCQkJCWFib3V0IFN1YnZlcnNpb24uCisJCQkJTm90ZSB0aGF0IHdlIGFyZSBjdXJyZW50bHkgdXNpbmcgU3VidmVyc2lvbiAxLjEueCAodGhlcmUgYXJlIHNlcGFyYXRlCisJCQkJdmVyc2lvbnMgb2YgdGhlIGJvb2sgY292ZXJpbmcgMS4wIGFuZCAxLjEpLgorCQkJPC9wPgorCQkJPHA+CisJCQkJVG8gcmVjZWl2ZSBub3RpY2Ugb2YgY29tbWl0cyB0byB0aGUgcmVwb3NpdG9yeSBzdWJzY3JpYmUgdG8KKwkJCQk8YSBocmVmPSJtYWlsdG86Y29tbWl0c0BvcGVubWVldGluZ3MuYXBhY2hlLm9yZyI+CisJCQkJCWNvbW1pdHNAb3Blbm1lZXRpbmdzLmFwYWNoZS5vcmcKKwkJCQk8L2E+CisJCQkJYnkgc2VuZGluZyBlbWFpbCB0bworCQkJCTxhIGhyZWY9Im1haWx0bzpjb21taXRzLXN1YnNjcmliZUBvcGVubWVldGluZ3MuYXBhY2hlLm9yZyI+CisJCQkJCWNvbW1pdHMtc3Vic2NyaWJlQG9wZW5tZWV0aW5ncy5hcGFjaGUub3JnCisJCQkJPC9hPgorCQkJCS4KKwkJCTwvcD4KKworCQk8L3NlY3Rpb24+CisKKwkJPHNlY3Rpb24gbmFtZT0iV2ViIEFjY2VzcyB0byBTdWJ2ZXJzaW9uIj4KKworCQkJPHA+CisJCQkJSWYgeW91IGp1c3Qgd2FudCB0byBicm93c2UgdGhlIHNvdXJjZSBjb2RlLCB5b3UgY2FuIHVzZSB0aGUKKwkJCQk8YSBjbGFzcz0iZXh0ZXJuYWwiIHJlbD0ibm9mb2xsb3ciCisJCQkJCWhyZWY9Imh0dHA6Ly9zdm4uYXBhY2hlLm9yZy92aWV3Y3ZzL29wZW5tZWV0aW5ncyI+CisJCQkJCVZpZXdDVlMgd2ViIGludGVyZmFjZQorCQkJCTwvYT4KKwkJCQl0byBTdWJ2ZXJzaW9uLiBUaGlzIGlzIGN1cnJlbnQgYXQgYWxsIHRpbWVzLgorCQkJPC9wPgorCisJCTwvc2VjdGlvbj4KKworCQk8c2VjdGlvbiBuYW1lPSJDaGVja2luZyBPdXQgQ29kZSBVc2luZyBTdWJ2ZXJzaW9uIj4KKworCQkJPHA+QW55b25lIGNhbiBjaGVjayBjb2RlIG91dCBvZiBTdWJ2ZXJzaW9uLiBZb3Ugb25seSBuZWVkIHRvIHNwZWNpZnkKKwkJCQlhCisJCQkJdXNlcm5hbWUgYW5kIHBhc3N3b3JkIHRvIHVwZGF0ZSB0aGUgU3VidmVyc2lvbiByZXBvc2l0b3J5LCBhbmQgb25seQorCQkJCU9wZW5NZWV0aW5ncyBjb21taXR0ZXJzIGNhbiBkbyB0aGF0LgorCQkJCUlmIHlvdSBhcmUgYSBjb21taXR0ZXIsIGFyZSB3b3JraW5nIGZyb20gYmVoaW5kIGEgZmlyZXdhbGwsIG9yIGFyZQorCQkJCWNvbm5lY3RlZCB0byB0aGUgaW50ZXJuZXQgdGhyb3VnaCBhIHByb3h5IHNlcnZlciwgcGxlYXNlIHNlZSB0aGUKKwkJCQlzZWN0aW9ucworCQkJCWJlbG93IGZvciBtb3JlIGluZm9ybWF0aW9uLgorCQkJPC9wPgorCisJCQk8c3Vic2VjdGlvbiBuYW1lPSJBbm9ueW1vdXMgY2hlY2sgb3V0IGZyb20gU3VidmVyc2lvbiI+CisJCQkJPHA+VXNlIGEgY29tbWFuZCBsaWtlOjwvcD4KKwkJCQk8cHJlPiUgc3ZuIGNoZWNrb3V0CisJCQkJCWh0dHA6Ly9zdm4uYXBhY2hlLm9yZy9yZXBvcy9hc2Yvb3Blbm1lZXRpbmdzIDwvcHJlPgorCQkJCTxwPk9uY2UgeW91IGhhdmUgT3Blbk1lZXRpbmdzIGNoZWNrZWQgb3V0IHlvdSBjYW4gdXBkYXRlIHRoZSBzb3VyY2UKKwkJCQkJYnkgZXhlY3V0aW5nIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBmcm9tIHdpdGhpbiB0aGUgb3Blbm1lZXRpbmdzCisJCQkJCWRpcmVjdG9yeS4KKwkJCQk8L3A+CisJCQkJPHByZT4KKwkJCQkJJSBzdm4gdXBkYXRlCisJCQkJPC9wcmU+CisJCQk8L3N1YnNlY3Rpb24+CisJCQk8c3Vic2VjdGlvbiBuYW1lPSJBY2Nlc3MgZnJvbSBiZWhpbmQgYSBmaXJld2FsbCI+CisKKwkJCQk8cD5Gb3IgdGhvc2UgdXNlcnMgd2hvIGFyZSBzdHVjayBiZWhpbmQgYSBjb3Jwb3JhdGUgZmlyZXdhbGwgd2hpY2gKKwkJCQkJaXMKKwkJCQkJYmxvY2tpbmcgaHR0cCBhY2Nlc3MgdG8gdGhlIFN1YnZlcnNpb24gcmVwb3NpdG9yeSwgeW91IGNhbiB0cnkgdG8gYWNjZXNzIGl0CisJCQkJCXZpYSBIVFRQUzoKKwkJCQk8L3A+CisJCQkJPHByZT4KKwkJCQkJJSBzdm4gY2hlY2tvdXQKKwkJCQkJaHR0cHM6Ly9zdm4uYXBhY2hlLm9yZy9yZXBvcy9hc2Yvb3Blbm1lZXRpbmdzCisJCQkJPC9wcmU+CisKKwkJCTwvc3Vic2VjdGlvbj4KKwkJCTxzdWJzZWN0aW9uIG5hbWU9IkFjY2VzcyB0aHJvdWdoIGEgcHJveHkiPgorCisJCQkJPHA+VGhlIFN1YnZlcnNpb24gY2xpZW50IGNhbiBnbyB0aHJvdWdoIGEgcHJveHksIGlmIHlvdSBjb25maWd1cmUgaXQKKwkJCQkJdG8gZG8gc28uIEZpcnN0LCBlZGl0IHlvdXIgInNlcnZlcnMiIGNvbmZpZ3VyYXRpb24gZmlsZSB0byBpbmRpY2F0ZQorCQkJCQl3aGljaAorCQkJCQlwcm94eSB0byB1c2UuIFRoZSBmaWxlcyBsb2NhdGlvbiBkZXBlbmRzIG9uIHlvdXIgb3BlcmF0aW5nIHN5c3RlbS4KKwkJCQkJT24gTGludXggb3IgVW5peCBpdCBpcyBsb2NhdGVkIGluIHRoZSBkaXJlY3RvcnkgIn4vLnN1YnZlcnNpb24iLgorCQkJCQlPbiBXaW5kb3dzIGl0IGlzIGluICIlQVBQREFUQSVcU3VidmVyc2lvbiIuIChUcnkgImVjaG8gJUFQUERBVEElIiwKKwkJCQkJbm90ZSB0aGlzIGlzIGEgaGlkZGVuIGRpcmVjdG9yeS4pCisJCQkJPC9wPgorCQkJCTxwPlRoZXJlIGFyZSBjb21tZW50cyBpbiB0aGUgZmlsZSBleHBsYWluaW5nIHdoYXQgdG8gZG8uIElmIHlvdQorCQkJCQlkb24ndCBoYXZlCisJCQkJCXRoYXQgZmlsZSwgZ2V0IHRoZSBsYXRlc3QgU3VidmVyc2lvbiBjbGllbnQgYW5kIHJ1biBhbnkgY29tbWFuZDsgdGhpcworCQkJCQl3aWxsCisJCQkJCWNhdXNlIHRoZSBjb25maWd1cmF0aW9uIGRpcmVjdG9yeSBhbmQgdGVtcGxhdGUgZmlsZXMgdG8gYmUgY3JlYXRlZC4KKwkJCQk8L3A+CisJCQkJPHA+RXhhbXBsZSA6IEVkaXQgdGhlICdzZXJ2ZXJzJyBmaWxlIGFuZCBhZGQgc29tZXRoaW5nIGxpa2UgOgorCQkJCTwvcD4KKwkJCQk8cHJlPgorCQkJCQlbZ2xvYmFsXQorCQkJCQlodHRwLXByb3h5LWhvc3QgPSB5b3VyLnByb3h5Lm5hbWUKKwkJCQkJaHR0cC1wcm94eS1wb3J0ID0gMzEyOAorCQkJCTwvcHJlPgorCisJCQk8L3N1YnNlY3Rpb24+CisKKwkJCTxzdWJzZWN0aW9uIG5hbWU9IkNvbW1pdHRlciBhY2Nlc3MiPgorCisJCQkJPHA+RXZlcnlvbmUgY2FuIGFjY2VzcyB0aGUgQXBhY2hlIFBvZGxpbmcgU3VidmVyc2lvbiByZXBvc2l0b3J5IHZpYQorCQkJCQlIVFRQUywKKwkJCQkJYnV0IE9wZW5NZWV0aW5ncyBDb21taXR0ZXJzIG11c3QgY2hlY2tvdXQgdGhlIFN1YnZlcnNpb24gcmVwb3NpdG9yeQorCQkJCQl2aWEgSFRUUFMuCisJCQkJPC9wPgorCQkJCTxwcmU+CisJCQkJCSUgc3ZuIGNoZWNrb3V0CisJCQkJCWh0dHBzOi8vc3ZuLmFwYWNoZS5vcmcvcmVwb3MvYXNmL29wZW5tZWV0aW5ncworCQkJCTwvcHJlPgorCQkJPC9zdWJzZWN0aW9uPgorCQk8L3NlY3Rpb24+CisKKwkJPHNlY3Rpb24gbmFtZT0iU3VibWl0dGluZyBDb2RlIENoYW5nZXMiPgorCQkJPHN1YnNlY3Rpb24gbmFtZT0iU3VibWl0dGluZyBhIHBhdGNoIj4KKworCQkJCTxwPklmIHlvdSBtYWtlIGNoYW5nZXMgdG8gT3Blbk1lZXRpbmdzLCBhbmQgd291bGQgbGlrZSB0byBjb250cmlidXRlCisJCQkJCWl0IHRvIHRoZSBwcm9qZWN0LCB5b3Ugc2hvdWxkIG9wZW4gYSBKSVJBIGlzc3VlIGFuZCBkaXNjdXNzIHRoZQorCQkJCQltZXJpdHMKKwkJCQkJb2YgdGhlIHByb3Bvc2FsIHdpdGggdGhlIGRldmVsb3BlciBjb21tdW5pdHkuIElmIHRoZXJlIGlzIGFncmVlbWVudCwKKwkJCQkJY3JlYXRlIGEgcGF0Y2ggYW5kIGF0dGFjaCBpdCB0byB0aGUgSklSQSBpc3N1ZS4KKwkJCQk8L3A+CisJCQkJPHA+CisJCQkJCVRvIGNyZWF0ZSBhIHBhdGNoLCBleGVjdXRlIHRoZSBzdm4gZGlmZiBjb21tYW5kLiBUaGlzIGNyZWF0ZXMgYSBwYXRjaAorCQkJCQl0aGF0CisJCQkJCWNhbiBlYXNpbHkgYmUgdXBsb2FkZWQgdG8gYSBKSVJBIGlzc3VlLiBBIGdvb2QgbmFtZSBmb3IgdGhlIHBhdGNoCisJCQkJCWluY2x1ZGVzCisJCQkJCXRoZSBKSVJBIGlzc3VlIG5hbWUsIGUuZy4gT1BFTk1FRVRJTkdTLTEwNC5wYXRjaC4gSWYgdGhlcmUgYXJlIHNldmVyYWwKKwkJCQkJcGF0Y2hlcworCQkJCQlmb3IgdGhlIHNhbWUgSklSQSBpc3N1ZSwgeW91IG1pZ2h0IGluY2x1ZGUgeW91ciBpbml0aWFscywgZS5nLgorCQkJCQlPUEVOTUVFVElOR1MtMTA0LmNsci5wYXRjaAorCQkJCTwvcD4KKwkJCQk8cHJlPgorCQkJCQklIHN2biBkaWZmICZndDsgT1BFTk1FRVRJTkdTLTEwNC5jbHIucGF0Y2gKKwkJCQk8L3ByZT4KKwkJCTwvc3Vic2VjdGlvbj4KKworCQkJPHN1YnNlY3Rpb24gbmFtZT0iQ29tbWl0dGluZyBjaGFuZ2VzIHRvIHN1YnZlcnNpb24iPgorCQkJCTxwPgorCQkJCQlUbyBjb21taXQgY2hhbmdlcyB0byB0aGUgc3VidmVyc2lvbiByZXBvc2l0b3J5LCB5b3UgbXVzdCBiZSBhbgorCQkJCQlPcGVuTWVldGluZ3MgY29tbWl0dGVyLiBTZWUKKwkJCQkJPGEgaHJlZj0iZ2V0LWludm9sdmVkLmh0bWwiPmdldCBpbnZvbHZlZDwvYT4KKwkJCQkJZm9yIGluZm9ybWF0aW9uIG9uIGhvdyB0byBiZWNvbWUgYSBjb21taXR0ZXIgYW5kIGhvdyB0byBzZXQgdXAgeW91cgorCQkJCQlwYXNzd29yZCBvbmNlIHlvdSBiZWNvbWUgYSBjb21taXR0ZXIuCisJCQkJPC9wPgorCisJCQkJPHA+CisJCQkJCU9uY2UgeW91ciBwYXNzd29yZCBpcyBzZXQsIHlvdSBjYW4gdXNlIGEgY29tbWFuZCBsaWtlIHRoaXMgdG8gY29tbWl0OgorCQkJCTwvcD4KKwkJCQk8cHJlPgorCQkJCQkkJmd0OyBzdm4gY29tbWl0IC0tdXNlcm5hbWUgeW91ci11c2VybmFtZQorCQkJCQlBdXRoZW50aWNhdGlvbiByZWFsbTogJmx0O2h0dHBzOi8vc3ZuLmFwYWNoZS5vcmc6NDQzJmd0OyBBU0YgQ29tbWl0dGVycworCQkJCQlQYXNzd29yZCBmb3IgJ3lvdXItdXNlcm5hbWUnOiB5b3VyLXBhc3N3b3JkCisJCQkJPC9wcmU+CisJCQkJPHA+WW91IGNhbiBhbHNvIHBhc3MgeW91ciBwYXNzd29yZCBvbiB0aGUgY29tbWFuZCBsaW5lIGRpcmVjdGx5LCBidXQKKwkJCQkJdGhpcyBpcyBhIHNlY3VyaXR5IHByb2JsZW0gb24gbXVsdGl1c2VyIHVuaXggY29tcHV0ZXJzICh0aGUgY29tbWFuZAorCQkJCQlsaW5lCisJCQkJCWFyZ3VtZW50cyBhcmUgYXZhaWxhYmxlIHZpYSB0aGUgcHMgY29tbWFuZCkuIEhlcmUgaXMgdGhlIGNvbW1hbmQgaWYgeW91CisJCQkJCWFyZSBXaW5kb3dzIG9yIGEgc2luZ2xlIHVzZXIgdW5peCBjb21wdXRlcjoKKwkJCQk8L3A+CisJCQkJPHByZT4KKwkJCQkJJCZndDsgc3ZuIGNvbW1pdCAtLXVzZXJuYW1lIHlvdXItdXNlcm5hbWUgLS1wYXNzd29yZCB5b3VyLXBhc3N3b3JkCisJCQkJPC9wcmU+CisJCQkJPHA+UmVtZW1iZXIgdG8gcmVwbGFjZSAneW91ci11c2VybmFtZScgYW5kICd5b3VyLXBhc3N3b3JkJyB3aXRoCisJCQkJCXlvdXIgYWN0dWFsIHVzZXJuYW1lIGFuZCBwYXNzd29yZCBvbiBzdm4uYXBhY2hlLm9yZy4KKwkJCQk8L3A+CisKKwkJCTwvc3Vic2VjdGlvbj4KKwkJPC9zZWN0aW9uPgorCisJCTxzZWN0aW9uIG5hbWU9IkJ1aWxkaW5nIFBvZGxpbmcgZnJvbSBTb3VyY2UiPgorCQkJPHA+CisJCQkJPCEtLSAqKioqKioqKioqKioqKioqKiBUQkQgKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+CisJCQkJPCEtLSAqKioqKioqKioqKioqKioqKiBUQkQgKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+CisJCQkJPCEtLSAqKioqKioqKioqKioqKioqKiBUQkQgKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+CisJCQkJPCEtLSAqKioqKioqKioqKioqKioqKiBUQkQgKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+CisJCQkJPCEtLSAqKioqKioqKioqKioqKioqKiBUQkQgKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+CisJCQkJPCEtLSAqKioqKioqKioqKioqKioqKiBUQkQgKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+CisJCQkJPCEtLSAqKioqKioqKioqKioqKioqKiBUQkQgKioqKioqKioqKioqKioqKioqKioqKioqKiogLS0+CisJCQk8L3A+CisKKwkJPC9zZWN0aW9uPgorCisJCTxzZWN0aW9uIG5hbWU9IlVzaW5nIFN1YnZlcnNpb24gb24gV2luZG93cyB3aXRoIGN5Z3dpbiI+CisKKwkJCTxwPgorCQkJCUlmIHlvdSB1c2UgU3VidmVyc2lvbiBvbiBXaW5kb3dzIHVuZGVyIGN5Z3dpbiwgeW91IG1heSBmaW5kIHRoYXQgdGhlCisJCQkJU3VidmVyc2lvbiBjbGllbnQgYXV0b21hdGljYWxseSBhc3NpZ25zIHRoZSBleGVjdXRhYmxlIHByb3BlcnR5IHRvCisJCQkJbm9uLWV4ZWN1dGFibGUgZmlsZXMuIEluIHRoYXQgY2FzZSwgeW91IHdvdWxkIHNlZSB0aGlzIGF0IHRoZSBib3R0b20KKwkJCQlvZgorCQkJCWFuCisJCQkJPGVtPnN2biBkaWZmPC9lbT4KKwkJCQlvZiB0aGUgZmlsZToKKwkJCTwvcD4KKwkJCTxwcmU+CisJCQkJUHJvcGVydHkgY2hhbmdlcyBvbjogdGVzdC9zcWwvZGVyYnkvZGF0YXN0b3JlaWRlbnRpdHkvc2NoZW1hMS5zcWwKKwkJCQlfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCisJCQkJTmFtZTogc3ZuOmV4ZWN1dGFibGUKKwkJCQkrICoKKwkJCTwvcHJlPgorCQkJPHA+VGhpcyBzZWN0aW9uIGV4cGxhaW5zIHRoZSBzb3VyY2Ugb2YgdGhlIHByb2JsZW0gYW5kIHN1Z2dlc3RzIHNvbWUKKwkJCQlhY3Rpb25zIHRvIGF2b2lkIGl0LgorCQkJPC9wPgorCisJCQk8c3Vic2VjdGlvbiBuYW1lPSJCYWNrZ3JvdW5kIj4KKworCQkJCTxwPlN1YnZlcnNpb24gY2FycmllcyBleGVjdXRhYmxlIGluZm9ybWF0aW9uIGluIHRoZSBidWlsdC1pbgorCQkJCQlwcm9wZXJ0eQorCQkJCQljYWxsZWQgc3ZuOmV4ZWN1dGFibGUuIFRoaXMgcHJvcGVydHksIHVubGlrZSBvdGhlcnMsIG1heSBiZSBwcmVzZW50CisJCQkJCW9yIGFic2VudCwgYnV0IGl0IGhhcyBubyB2YWx1ZS4gWW91IGNhbiBhZGQgaXQgb3IgZGVsZXRlIGl0LCBidXQgeW91CisJCQkJCWNhbm5vdCBjaGFuZ2UgaXRzIHZhbHVlLgorCQkJCTwvcD4KKwkJCQk8cD5JbiB0aGVvcnksIFN1YnZlcnNpb24gaWdub3JlcyBXaW5kb3dzIGZpbGUgcGVybWlzc2lvbnMgYW5kIGJ5CisJCQkJCWRlZmF1bHQKKwkJCQkJZG9lcyBub3Qgc2V0IHN2bjpleGVjdXRhYmxlLiBIb3dldmVyLCBjeWd3aW4gc3ZuIGFjdHMgbGlrZSBVbml4IHN2biBhbmQKKwkJCQkJZGV0ZXJtaW5lcyB0aGUgc3ZuOmV4ZWN1dGFibGUgcHJvcGVydHkgYmFzZWQgb24gZmlsZSBwZXJtaXNzaW9ucy4KKwkJCQk8L3A+CisJCQkJPHA+CisJCQkJCUlmIHlvdSBjcmVhdGUgYSBmaWxlIGZyb20gdGhlIGN5Z3dpbiBjb21tYW5kIGxpbmUsIGJ5IGRlZmF1bHQgaXQgaXMKKwkJCQkJZXhlY3V0YWJsZSBvbmx5IGlmIHRoZSBmaWxlbmFtZSBlbmRzIHdpdGggLmJhdCwgLmNvbSBvciAuZXhlLCBvciBpZgorCQkJCQlpdHMKKwkJCQkJY29udGVudCBzdGFydHMgd2l0aCAjIS4gW1RoaXMgaXMgd2hhdCB0aGUgZG9jIHNheXMsIGJ1dCB5b3UgbWF5IHNlZSAteAorCQkJCQlmb3IgYWxsIGZpbGVzLl0gSWYgeW91IGNyZWF0ZSBhIGZpbGUgdXNpbmcgYSBXaW5kb3dzIHRvb2wsIGJ5IGRlZmF1bHQKKwkJCQkJaXRzIFdpbmRvd3MgcGVybWlzc2lvbnMgYXJlIGV4ZWN1dGFibGUgYnkgYWxsLiBDeWd3aW4gaW50ZXJwcmV0cworCQkJCQl0aGUKKwkJCQkJVW5peC1zdHlsZSBwZXJtaXNzaW9ucyB0aGlzIHdheSBhcyB3ZWxsLiBJZiB0aGUgZmlsZSBpcyBleGVjdXRhYmxlIGJ5IGFsbCwKKwkJCQkJY3lnd2luIHN2biBzZXRzIHRoZSBzdm46ZXhlY3V0YWJsZSBwcm9wZXJ0eSBvbiB0aGUgZmlsZSB3aGVuIHlvdQorCQkJCQlpbnZva2UKKwkJCQkJPGVtPnN2biBhZGQ8L2VtPgorCQkJCQkuCisJCQkJPC9wPgorCQkJPC9zdWJzZWN0aW9uPgorCQkJPHN1YnNlY3Rpb24KKwkJCQluYW1lPSJSZW1vdmluZyBleGlzdGluZyBleGVjdXRhYmxlIHByb3BlcnRpZXMgZnJvbSB0aGUgcmVwb3NpdG9yeSI+CisKKwkJCQk8cD5Zb3UgY2FuIHVzZSBzdm4gcHJvcGRlbCB0byByZW1vdmUgdGhlIHN2bjpleGVjdXRhYmxlIHByb3BlcnR5CisJCQkJCWZyb20geW91cgorCQkJCQl3b3JraW5nIGNvcHkuCisJCQkJPC9wPgorCQkJCTxwcmU+CisJCQkJCXN2biBwcm9wZGVsIC1SIHN2bjpleGVjdXRhYmxlIC4KKwkJCQk8L3ByZT4KKwkJCQk8cD53aWxsIHJlY3Vyc2l2ZWx5IHJlbW92ZSB0aGUgc3ZuOmV4ZWN1dGFibGUgcHJvcGVydHkgZnJvbSBhbGwgb2YKKwkJCQkJdGhlCisJCQkJCWZpbGVzIGJlbG93IHRoZSBjdXJyZW50IGRpcmVjdG9yeS4gWW91IGNhbiB1c2UgdGhpcyBhbmQgY29tbWl0IHRoZQorCQkJCQlmaWxlcyB0byBjbGVhbiB0aGUgcmVwb3NpdG9yeSBpZiBuZWNlc3NhcnkuCisJCQkJPC9wPgorCisJCQk8L3N1YnNlY3Rpb24+CisJCQk8c3Vic2VjdGlvbgorCQkJCW5hbWU9IlByZXZlbnRpbmcgU3VidmVyc2lvbiBmcm9tIGFkZGluZyB1bndhbnRlZCBleGVjdXRhYmxlIAorcHJvcGVydGllcyI+CisKKwkJCQk8cD4KKwkJCQkJV2luZG93cy9jeWd3aW4gdXNlcnMgd2hvIGRvbid0IHdhbnQgdG8gaGF2ZSB0byB0aGluayBhYm91dCB1c2luZworCQkJCQk8ZW0+c3ZuCisJCQkJCQlwcm9wZGVsCisJCQkJCTwvZW0+CisJCQkJCW9yCisJCQkJCTxlbT5jaG1vZDwvZW0+CisJCQkJCW9uIGVhY2ggYWRkZWQgZmlsZSBjYW4gdXNlIGEgbm9uLWN5Z3dpbgorCQkJCQl2ZXJzaW9uIG9mIHN2bi4gVGhlIFN1YnZlcnNpb24gMS4yLjMgV2luMzIgYmluYXJpZXMsIGRvd25sb2FkYWJsZSBmcm9tIHRoZQorCQkJCQlsaW5rIGF0IHRoZSBib3R0b20gb2YKKwkJCQkJPGEgcmVsPSJub2ZvbGxvdyIgaHJlZj0iaHR0cDovL3N1YnZlcnNpb24udGlncmlzLm9yZy9wcm9qZWN0X3BhY2thZ2VzLmh0bWwiPgorCQkJCQkJaHR0cDovL3N1YnZlcnNpb24udGlncmlzLm9yZy9wcm9qZWN0X3BhY2thZ2VzLmh0bWwKKwkJCQkJPC9hPgorCQkJCQksIGFwcGVhciB0byB3b3JrCisJCQkJCXdlbGwuIEFmdGVyIGluc3RhbGxhdGlvbiBhZGQgdGhlIHN2bi5leGUgbG9jYXRpb24gdG8geW91ciBXaW5kb3dzIFBBVEgKKwkJCQkJdmFyaWFibGUuIElmIHlvdSBhcmUgc3dpdGNoaW5nIGZyb20gY3lnd2luIHN2biB0byBXaW4zMiBzdm4KKwkJCQk8L3A+CisJCQkJPG9sIHR5cGU9IjEiPgorCQkJCQk8bGk+CisJCQkJCQk8cD5SZW1vdmUgdGhlIHN1YnZlcnNpb24gY29tcG9uZW50IGZyb20geW91ciBjeWd3aW4gaW5zdGFsbGF0aW9uCisJCQkJCQkJYmVjYXVzZSB3aGVuIHN2biBpcyBpbnZva2VkIGZyb20gYSBjeWd3aW4gd2luZG93LCB0aGUgY3lnd2luCisJCQkJCQkJdmVyc2lvbiBpcworCQkJCQkJCWZvdW5kIGV2ZW4gaWYgeW91ciBjeWd3aW4vYmluIGRpcmVjdG9yeSBpcyBsYXRlciBvbiB0aGUgcGF0aC4gKEluIHRoZQorCQkJCQkJCVNlbGVjdCBQYWNrYWdlcyB3aW5kb3cgb2YgdGhlIHNldHVwIHdpemFyZCwgbmF2aWdhdGUgdG8gdGhlCisJCQkJCQkJc3VidmVyc2lvbgorCQkJCQkJCXBhY2thZ2UgaW4gdGhlIERldmVsLiBjYXRlZ29yeS4gQ2xpY2sgb24gdGhlIHN0YXR1cyBpY29uIHVudGlsIFVuaW5zdGFsbAorCQkJCQkJCWlzIGRpc3BsYXllZC4gQ2xpY2sgbmV4dCBhbmQgY29udGludWUgdGhyb3VnaCB0aGUgd2l6YXJkIHVudGlsCisJCQkJCQkJaW5zdGFsbGF0aW9uCisJCQkJCQkJaXMgY29tcGxldGUuKQorCQkJCQkJPC9wPgorCQkJCQk8L2xpPgorCQkJCQk8bGk+CisJCQkJCQk8cD5Db3B5IHRoZSBzZXJ2ZXJzIGZpbGUgYW5kIHRoZSBhdXRoIGZvbGRlciBmcm9tIHRoZSBzeWd3aW4KKwkJCQkJCQl+Ly5zdWJ2ZXJzaW9uCisJCQkJCQkJZGlyZWN0b3J5IHRvIEM6XERvY3VtZW50cyBhbmQKKwkJCQkJCQlTZXR0aW5nc1wmbHQ7dXNlciZndDtcQXBwbGljYXRpb24gRGF0YVxTdWJ2ZXJzaW9uIHVzZWQgYnkgV2luMzIKKwkJCQkJCQlzdWJ2ZXJzaW9uLgorCQkJCQkJPC9wPgorCQkJCQk8L2xpPgorCQkJCTwvb2w+CisJCQkJPHA+Tm90ZSB0aGF0IHdpbmRvd3Mgc3ZuIHVzZXMgYmFja3NsYXNoIGFzIHRoZSBwYXRoIHNlcGFyYXRvciB3aGVuCisJCQkJCWRpc3BsYXlpbmcgZmlsZSBuYW1lcy4gWW91IGNhbm5vdCBqdXN0IGNvcHkgYW5kIHBhc3RlIHRoaXMgZmlsZQorCQkJCQluYW1lCisJCQkJCXRvIGFub3RoZXIgc3ZuIGNvbW1hbmQgd2hlbiBydW5uaW5nIGZyb20gd2l0aGluIGEgY3lnd2luIHNoZWxsLgorCQkJCQlZb3UgbmVlZCB0byBlbmNsb3NlIHRoZSBmaWxlIG5hbWUgaW50byBkb3VibGUgcXVvdGVzLgorCQkJCTwvcD4KKwkJCQk8cD5BbHRlcm5hdGl2ZWx5LCBXaW5kb3dzIHVzZXJzIGNhbiBzZXQgZmlsZSBwZXJtaXNzaW9ucyBpbiBXaW5kb3dzCisJCQkJCUV4cGxvcmVyLiAoUmlnaHQtY2xpY2sgb24gdGhlIHRvcC1sZXZlbCBmb2xkZXIgJmFtcDsgc2VsZWN0CisJCQkJCVByb3BlcnRpZXMuCisJCQkJCVNlbGVjdCB0aGUgU2VjdXJpdHkgdGFiLiBDbGljayBBZHZhbmNlZC4gUmVtb3ZlIGFsbCBpbnN0YW5jZXMgb2YKKwkJCQkJUmVhZCAmYW1wOyBFeGVjdXRlIGZyb20gdGhlIFBlcm1pc3Npb24gRW50cmllcy4gQ2xpY2sgIlJlc2V0CisJCQkJCXBlcm1pc3Npb25zCisJCQkJCW9uIGFsbCBjaGlsZCBvYmplY3RzIGFuZCBlbmFibGUgcHJvcG9nYXRpb25zIG9mIGluaGVyaXRhYmxlCisJCQkJCXBlcm1pc3Npb25zIi4KKwkJCQkJQ2xpY2sgQXBwbHkuIE9LLiBPSy4pIFlvdSB3aWxsIGhhdmUgdG8gZG8gdGhpcyBhZ2FpbiB3aGVuIHlvdSBkbyBhIGNsZWFuCisJCQkJCWNoZWNrb3V0IHRvIGEgbmV3IGRpcmVjdG9yeS4KKwkJCQk8L3A+CisKKwkJCTwvc3Vic2VjdGlvbj4KKwkJPC9zZWN0aW9uPgorCTwvYm9keT4KKzwvZG9jdW1lbnQ+CmRpZmYgLS1naXQgYS94ZG9jcy90ZWFtLWxpc3QtcnUueG1sIGIveGRvY3MvdGVhbS1saXN0LXJ1LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YWJiNDg2Ci0tLSAvZGV2L251bGwKKysrIGIveGRvY3MvdGVhbS1saXN0LXJ1LnhtbApAQCAtMCwwICsxLDg5IEBACivvu788P3htbCB2ZXJzaW9uPSIxLjAiPz4KKzwhLS0KKyAgIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisKKyAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKworICAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyAgIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorICAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisgLS0+Cis8ZG9jdW1lbnQ+CisKKwk8cHJvcGVydGllcz4KKwkJPHRpdGxlPtCa0L7QvNCw0L3QtNCwINC/0YDQvtC10LrRgtCwPC90aXRsZT4KKwkJPGF1dGhvciBlbWFpbD0ic2ViYXdhZ25lckBhcGFjaGUub3JnIj4KKwkJCVNlYmFzdGlhbiBXYWduZXIKKwkJPC9hdXRob3I+CisJPC9wcm9wZXJ0aWVzPgorCisJPGJvZHk+CisKKwkJPHNlY3Rpb24gbmFtZT0iT3Blbk1lZXRpbmdzIENvbW1pdHRlcnMiPgorCisJCQk8cD4KKwkJCQnQm9GO0LTQuCwg0L7RgtC80LXRh9C10L3QvdGL0LUg0L3QsCDRjdGC0L7QuSDRgdGC0YDQsNC90LjRhtC1LCDQuNC80LXRjtGCINC00L7RgdGC0YPQvyDQuiDRgNC10L/QvtC30LjRgtC+0YDQuNGOINC40YHRhdC+0LTQvdC+0LPQviDQutC+0LTQsCBBcGFjaGUgT3Blbm1lZXRpbmdzLiAKKwkJCQnQlNCw0L3QvdCw0Y8g0YHRgtGA0LDQvdC40YbQsCDQv9GA0LXQtNC90LDQt9C90LDRh9C10L3QsCDQtNC70Y8g0YLQvtCz0L4sINGH0YLQvtCx0Ysg0YHQu9GD0LbQuNGC0Ywg0L7RgdC90L7QstC+0Lkg0LrQstCw0LvQuNGE0LjQutCw0YbQuNC+0L3QvdC+0LPQviDQvtGC0LHQvtGA0LAKKwkJCQnQv9C+INC/0YDQvtC10LrRgtCw0LwsINGC0YDQtdCx0YPRjtGJ0LjQvCDQvNC+0LTQuNGE0LjQutCw0YbQuNC4INC40YHRhdC+0LTQvdC+0LPQviDQutC+0LTQsCBPcGVubWVldGluZ3MuCisJCQk8L3A+CisKKwkJCQorCQkJPHRhYmxlPgorCQkJCTx0cj4KKwkJCQkJPHRoPtCY0LzRjzwvdGg+CisJCQkJPC90cj4KKwkJCQk8dHI+CisJCQkJCTx0ZD7QodC10LHQsNGB0YLRjNGP0L0g0JLQsNCz0L3QtdGAPC90ZD4KKwkJCQk8L3RyPgorCQkJCTx0cj4KKwkJCQkJPHRkPtCQ0LvQtdC60YHQtdC5INCk0LXQtNC+0YLQvtCyPC90ZD4KKwkJCQk8L3RyPgorCQkJCTx0cj4KKwkJCQkJPHRkPtCV0LLQs9C10L3QuNC5INCg0L7QstC40L3RgdC60LjQuTwvdGQ+CisJCQkJPC90cj4KKwkJCQk8dHI+CisJCQkJCTx0ZD7QnNCw0LrRgdC40Lwg0KHQvtC70L7QtNC+0LLQvdC40Lo8L3RkPgorCQkJCTwvdHI+CisJCQkJPHRyPgorCQkJCQk8dGQ+T2xpdmVyIEJlY2hlcmVyPC90ZD4KKwkJCQk8L3RyPgorCQkJCTx0cj4KKwkJCQkJPHRkPkV1Z2VuIFNjaHdlcnQ8L3RkPgorCQkJCTwvdHI+CisJCQkJPHRyPgorCQkJCQk8dGQ+U2FzY2hhIFhhbmRlcjwvdGQ+CisJCQkJPC90cj4KKwkJCQk8dHI+CisJCQkJCTx0ZD5Kb2hubnkgU3Ryb208L3RkPgorCQkJCTwvdHI+CisJCQkJPHRyPgorCQkJCQk8dGQ+0JPQtdGA0LzQsNC9INCT0YDQtdGF0L7QsjwvdGQ+CisJCQkJPC90cj4KKwkJCQk8dHI+CisJCQkJCTx0ZD7QotC40LzRg9GAINCi0LvQtdGD0LrQtdC90L7QsjwvdGQ+CisJCQkJPC90cj4KKwkJCQk8dHI+CisJCQkJCTx0ZD5BbHZhcm8gQnVzdG9zPC90ZD4KKwkJCQk8L3RyPgorCQkJCTx0cj4KKwkJCQkJPHRkPkdlb3JnZSBLaXJraGFtPC90ZD4KKwkJCQk8L3RyPgorCQkJCTx0cj4KKwkJCQkJPHRkPlN0ZXBoZW4gQ290dGhhbTwvdGQ+CisJCQkJPC90cj4KKwkJCQk8dHI+CisJCQkJCTx0ZD7QmNGA0LjQvdCwINCQ0YDRhdC40L/QtdGGPC90ZD4KKwkJCQk8L3RyPgorCQkJCTx0cj4KKwkJCQkJPHRkPtCS0LDRgdC40LvQuNC5INCU0LXQs9GC0Y/RgNC10LI8L3RkPgorCQkJCTwvdHI+CisJCQk8L3RhYmxlPgorCQkJCisJCTwvc2VjdGlvbj4KKworCTwvYm9keT4KKzwvZG9jdW1lbnQ+CmRpZmYgLS1naXQgYS94ZG9jcy90ZWFtLWxpc3QueG1sIGIveGRvY3MvdGVhbS1saXN0LnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYzJiZTNjCi0tLSAvZGV2L251bGwKKysrIGIveGRvY3MvdGVhbS1saXN0LnhtbApAQCAtMCwwICsxLDE0NCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIj8+Cis8IS0tCisgICBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyAgIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorCisgICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisKKyAgIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyAgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyAgIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorIC0tPgorPGRvY3VtZW50PgorCisJPHByb3BlcnRpZXM+CisJCTx0aXRsZT5Qcm9qZWN0IFRlYW08L3RpdGxlPgorCQk8YXV0aG9yIGVtYWlsPSJzZWJhd2FnbmVyQGFwYWNoZS5vcmciPgorCQkJU2ViYXN0aWFuIFdhZ25lcgorCQk8L2F1dGhvcj4KKwk8L3Byb3BlcnRpZXM+CisKKwk8Ym9keT4KKworCQk8c2VjdGlvbiBuYW1lPSJPcGVuTWVldGluZ3MgQ29tbWl0dGVycyI+CisKKwkJCTxwPgorCQkJCVRoZSBwZW9wbGUgbGlzdGVkIGJlbG93IGhhdmUgbWFkZSBzaWduaWZpY2FudCBjb250cmlidXRpb25zIHRvCisJCQkJUG9kbGluZworCQkJCWJ5CisJCQkJd29ya2luZyBsb25nIGFuZCBoYXJkIHRvIG1ha2UgcXVhbGl0eSBzb2Z0d2FyZSBmb3IgdGhlIHJlc3QKKwkJCQlvZiB0aGUgd29ybGQgdG8KKwkJCQl1c2UuCisJCQk8L3A+CisKKwkJCTxwPgorCQkJCUlmIHlvdSB3b3VsZCBsaWtlIHRvIGNvbnRyaWJ1dGUgdG8gUG9kbGluZywgcGxlYXNlIHNlZSB0aGUKKwkJCQk8YQorCQkJCQlocmVmPSJodHRwczovL2N3aWtpLmFwYWNoZS5vcmcvY29uZmx1ZW5jZS9kaXNwbGF5L09QRU5NRUVUSU5HUy9OZXcrY29tbWl0dGVycythbmQrZGV2ZWxvcGVycyt0YXNrK2lkZWErbGlzdCIKKwkJCQkJdGFyZ2V0PSJfQkxBTksiPmh0dHBzOi8vY3dpa2kuYXBhY2hlLm9yZy9jb25mbHVlbmNlL2Rpc3BsYXkvT1BFTk1FRVRJTkdTL05ldytjb21taXR0ZXJzK2FuZCtkZXZlbG9wZXJzK3Rhc2sraWRlYStsaXN0CisJCQkJPC9hPgorCQkJCXRvIGZpbmQgYXJlYXMgd2hlcmUgeW91IGNhbiBjb250cmlidXRlLgorCQkJCUlmIHRoZXJlIGlzIG5vdGhpbmcgaW4gdGhlcmUKKwkJCQl0aGF0IHN1aXRzIHlvdXIgaW50ZXJlc3QsIGJ1dCB5b3Ugc3RpbGwKKwkJCQloYXZlCisJCQkJaWRlYXMsIHBsZWFzZSBmZWVsIGZyZWUKKwkJCQl0byBzdWdnZXN0IHRoZW0gb24gdGhlIG1haWxpbmcgbGlzdC4KKwkJCTwvcD4KKwkJCTxwPgorCQkJCUlmIHlvdSB3b3VsZCBsaWtlIHRvIGJlY29tZSBhIGNvbW1pdHRlciwgcGxlYXNlIHNlZQorCQkJCTxhIGhyZWY9ImdldC1pbnZvbHZlZC5odG1sIj5HZXQgSW52b2x2ZWQ8L2E+CisJCQkJLgorCQkJPC9wPgorCisJCQk8dGFibGU+CisJCQkJPHRyPgorCQkJCQk8dGg+TmFtZTwvdGg+CisJCQkJCTx0aD5Pcmdhbml6YXRpb248L3RoPgorCQkJCQk8dGg+Q29udGFjdC9XZWJzaXRlPC90aD4KKwkJCQk8L3RyPgorCQkJCTx0cj4KKwkJCQkJPHRkPlNlYmFzdGlhbiBXYWduZXI8L3RkPgorCQkJCQk8dGQ+SW5kZXBlbmRlbnQ8L3RkPgorCQkJCQk8dGQ+CisJCQkJCQk8YSBocmVmPSJodHRwczovL3R3aXR0ZXIuY29tLyMhL2RlYWRfbG9jayIgdGFyZ2V0PSJfQkxBTksiIHJlbD0ibm9mb2xsb3ciPmh0dHBzOi8vdHdpdHRlci5jb20vIyEvZGVhZF9sb2NrCisJCQkJCQk8L2E+CisJCQkJCTwvdGQ+CisJCQkJPC90cj4KKwkJCQk8dHI+CisJCQkJCTx0ZD5BbGV4ZWkgRmVkb3RvdjwvdGQ+CisJCQkJCTx0ZD5JbmRlcGVuZGVudDwvdGQ+CisJCQkJCTx0ZD48L3RkPgorCQkJCTwvdHI+CisJCQkJPHRyPgorCQkJCQk8dGQ+RXZnZW55IFJvdmluc2t5PC90ZD4KKwkJCQkJPHRkPkluZGVwZW5kZW50PC90ZD4KKwkJCQkJPHRkPjwvdGQ+CisJCQkJPC90cj4KKwkJCQk8dHI+CisJCQkJCTx0ZD5NYXhpbSBTb2xvZG92bmlrPC90ZD4KKwkJCQkJPHRkPkluZGVwZW5kZW50PC90ZD4KKwkJCQkJPHRkPjwvdGQ+CisJCQkJPC90cj4KKwkJCQk8dHI+CisJCQkJCTx0ZD5PbGl2ZXIgQmVjaGVyZXI8L3RkPgorCQkJCQk8dGQ+SW5kZXBlbmRlbnQ8L3RkPgorCQkJCQk8dGQ+PC90ZD4KKwkJCQk8L3RyPgorCQkJCTx0cj4KKwkJCQkJPHRkPkV1Z2VuIFNjaHdlcnQ8L3RkPgorCQkJCQk8dGQ+SW5kZXBlbmRlbnQ8L3RkPgorCQkJCQk8dGQ+ZXVnZW4uc2Nod2VydEBnbWFpbC5jb208L3RkPgorCQkJCTwvdHI+CisJCQkJPHRyPgorCQkJCQk8dGQ+U2FzY2hhIFhhbmRlcjwvdGQ+CisJCQkJCTx0ZD5JbmRlcGVuZGVudDwvdGQ+CisJCQkJCTx0ZD48L3RkPgorCQkJCTwvdHI+CisJCQkJPHRyPgorCQkJCQk8dGQ+Sm9obm55IFN0cm9tPC90ZD4KKwkJCQkJPHRkPkluZGVwZW5kZW50PC90ZD4KKwkJCQkJPHRkPjwvdGQ+CisJCQkJPC90cj4KKwkJCQk8dHI+CisJCQkJCTx0ZD5UaW11ciBUbGV1a2Vub3Y8L3RkPgorCQkJCQk8dGQ+SW5kZXBlbmRlbnQ8L3RkPgorCQkJCQk8dGQ+PC90ZD4KKwkJCQk8L3RyPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+CisJCQkJCTx0ZD5BbHZhcm8gQnVzdG9zPC90ZD4KKwkJCQkJPHRkPkluZGVwZW5kZW50PC90ZD4KKwkJCQkJPHRkPjwvdGQ+CisJCQkJPC90cj4KKwkJCQk8dHI+CisJCQkJCTx0ZD5HZW9yZ2UgS2lya2hhbTwvdGQ+CisJCQkJCTx0ZD5JbmRlcGVuZGVudDwvdGQ+CisJCQkJCTx0ZD48L3RkPgorCQkJCTwvdHI+CisJCQkJPHRyPgorCQkJCQk8dGQ+U3RlcGhlbiBDb3R0aGFtPC90ZD4KKwkJCQkJPHRkPkluZGVwZW5kZW50PC90ZD4KKwkJCQkJPHRkPjwvdGQ+CisJCQkJPC90cj4KKwkJCQk8dHI+CisJCQkJCTx0ZD5JcmluYSBBcmtoaXBldHM8L3RkPgorCQkJCQk8dGQ+SW5kZXBlbmRlbnQ8L3RkPgorCQkJCQk8dGQ+PC90ZD4KKwkJCQk8L3RyPgorCQkJCTx0cj4KKwkJCQkJPHRkPlZhc2lsaXkgRGVndHlhcmV2PC90ZD4KKwkJCQkJPHRkPkluZGVwZW5kZW50PC90ZD4KKwkJCQkJPHRkPjwvdGQ+CisJCQkJPC90cj4KKwkJCQkJCQkJCisJCQk8L3RhYmxlPgorCQkJCisJCQk8cD4KKwkJCTxhIGhyZWY9InRlYW0tbGlzdC1ydS54bWwiPkhlcmU8L2E+IGlzIHRoZSBSdXNzaWFuIHZlcnNpb24gb2YgdGhpcyBwYWdlLgorCQkJPC9wPgorCQk8L3NlY3Rpb24+CisKKwk8L2JvZHk+Cis8L2RvY3VtZW50PgpkaWZmIC0tZ2l0IGEveGRvY3MvdGhlbWVzLWFuZC1icmFuZGluZy54bWwgYi94ZG9jcy90aGVtZXMtYW5kLWJyYW5kaW5nLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYmQyZjk2Ci0tLSAvZGV2L251bGwKKysrIGIveGRvY3MvdGhlbWVzLWFuZC1icmFuZGluZy54bWwKQEAgLTAsMCArMSw2NCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8IS0tDQorICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKw0KKyAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisNCisgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorIC0tPg0KKzxkb2N1bWVudD4NCisNCisJPHByb3BlcnRpZXM+DQorCQk8dGl0bGU+VGhlbWUgYW5kIGNvbG9yPC90aXRsZT4NCisJCTxhdXRob3IgZW1haWw9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+DQorCQkJT3Blbk1lZXRpbmdzIFRlYW0NCisJCTwvYXV0aG9yPg0KKwk8L3Byb3BlcnRpZXM+DQorDQorCTxib2R5Pg0KKw0KKwkJPHNlY3Rpb24gbmFtZT0iQXZhaWxhYmxlIHdpdGggQXBhY2hlIE9wZW5NZWV0aW5ncyAyLjAiPg0KKw0KKwkJCTxwPg0KKwkJCQlUaGVtZXMgYXJlIG9ubHkgYXZhaWxhYmxlIHN0YXJ0aW5nIHdpdGggT3Blbm1lZXRpbmdzIDIueC4NCisJCQkJPGJyIC8+DQorCQkJCVRoZXJlIGFyZSBhbHNvIG1vcmUgZ2VuZXJhbCBjbGllbnQgc2lkZSBjb25maWd1cmF0aW9uIGxpa2UgcG9ydA0KKwkJCQljb25maWd1cmF0aW9uLiBUaG9zZSBjb25maWdzIGFyZSBzdG9yZWQgaW4gdGhlIGNvbmZpZy54bWwNCisJCQk8L3A+DQorDQorCQk8L3NlY3Rpb24+DQorDQorCQk8c2VjdGlvbiBuYW1lPSJFZGl0aW5nIHRoZSB0aGVtZSI+DQorDQorCQkJPHA+WW91IGNhbiBmaW5kIHRoZSBkZWZhdWx0IHRoZW1lIGluIHRoZSBTVk46IDwvcD4NCisJCQk8cD4NCisJCQkJPGENCisJCQkJCWhyZWY9Imh0dHBzOi8vc3ZuLmFwYWNoZS5vcmcvcmVwb3MvYXNmL29wZW5tZWV0aW5ncy90cnVuay9zaW5nbGV3ZWJhcHAvV2ViQ29udGVudC9vcGVubWVldGluZ3MvZGVmYXVsdC10aGVtZS54bWwiDQorCQkJCQl0YXJnZXQ9Il9CTEFOSyIgcmVsPSJub2ZvbGxvdyI+aHR0cHM6Ly9zdm4uYXBhY2hlLm9yZy9yZXBvcy9hc2Yvb3Blbm1lZXRpbmdzL3RydW5rL3NpbmdsZXdlYmFwcC9XZWJDb250ZW50L29wZW5tZWV0aW5ncy9kZWZhdWx0LXRoZW1lLnhtbA0KKwkJCQk8L2E+DQorCQkJPC9wPg0KKwkJCTxwPg0KKwkJCQlPciBpZiB5b3UgYWxyZWFkeSBpbnN0YWxsZWQgT3Blbk1lZXRpbmdzIG9uIHlvdXIgbWFjaGluZSBhdDoNCisJCQkJPGJyIC8+DQorCQkJCTx0dD4vd2ViYXBwcy9vcGVubWVldGluZ3MvZGVmYXVsdC10aGVtZS54bWw8L3R0Pg0KKwkJCQk8YnIgLz4NCisJCQkJVGhlIGZpbGUgY29udGFpbnMgYm9yZGVyLCBiYWNrZ3JvdW5kIGFuZCBmb250IGNvbG9yIGRlZmluaXRpb25zIGFzDQorCQkJCXdlbGwgYXMgcGF0aHMgdG8gaWNvbnMgdGhhdCBhcmUgbG9hZGVkIGF0IHJ1bnRpbWUuDQorCQkJCTxiciAvPg0KKwkJCQlZb3UgY2FuIGNoYW5nZSB0aGUgdGhlbWUgYXQgcnVudGltZSBhbmQganVzdCByZWxvYWQgdGhlIGJyb3dzZXINCisJCQkJKGV2ZW50dWFsbHkgY2xlYXIgdGhlIGJyb3dzZXIgY2FjaGUpIHRvIHNlZSB1cGRhdGVzIGJhc2VkIG9uDQorCQkJCW1vZGlmaWNhdGlvbiBpbiB5b3VyIHRoZW1lLg0KKwkJCTwvcD4NCisNCisNCisJCTwvc2VjdGlvbj4NCisNCisJPC9ib2R5Pg0KKw0KKzwvZG9jdW1lbnQ+DQpkaWZmIC0tZ2l0IGEveGRvY3Mvdm9pcC1zaXAtaW50ZWdyYXRpb24ueG1sIGIveGRvY3Mvdm9pcC1zaXAtaW50ZWdyYXRpb24ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxYzY5MWQKLS0tIC9kZXYvbnVsbAorKysgYi94ZG9jcy92b2lwLXNpcC1pbnRlZ3JhdGlvbi54bWwKQEAgLTAsMCArMSw2NCBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4NCis8IS0tDQorICAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7DQorICAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KKyAgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KKw0KKyAgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjANCisNCisgICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlDQorICAgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCisgICBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4NCisgICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kDQorICAgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQorIC0tPg0KKzxkb2N1bWVudD4NCisNCisJPHByb3BlcnRpZXM+DQorCQk8dGl0bGU+Vm9JUCBhbmQgU0lQIEludGVncmF0aW9uPC90aXRsZT4NCisJCTxhdXRob3IgZW1haWw9InNlYmF3YWduZXJAYXBhY2hlLm9yZyI+DQorCQkJT3Blbk1lZXRpbmdzIFRlYW0NCisJCTwvYXV0aG9yPg0KKwk8L3Byb3BlcnRpZXM+DQorDQorCTxib2R5Pg0KKw0KKwkJPHNlY3Rpb24gbmFtZT0iVm9JUCBhbmQgU0lQIEludGVncmF0aW9uIj4NCisNCisJCQk8cD4NCisJCQkJVGhlcmUgYXJlIG11bHRpcGxlIHdheXMgdG8gaW50ZWdyYXRlIHdpdGggVm9JUCBhbmQgb3IgU0lQLg0KKwkJCQlPcGVuTWVldGluZ3MgZG9lcyBub3QgcHJvdmlkZSBvdXQgb2YgdGhlIGJveCBhIHJlYWR5IHRvIHJ1biBWb0lQDQorCQkJCWludGVncmF0aW9uIC8gaW50ZWdyYXRpb24gdG8gY2VsbCBwaG9uZSBvciB1c3VhbCBsYW5kIGxhbmUuDQorCQkJCVRoZQ0KKwkJCQluYXR1cmUgb2Ygc3VjaCBpbnRlZ3JhdGlvbnMgaXMgdGhhdCBpdCBkZXBlbmRzIGhlYXZpbHkgb24gdGhlDQorCQkJCWluZnJhc3RydWN0dXJlIHRoYXQgeW91IGFyZSB1c2luZyBhbmQgd2hlcmUgeW91IHdvdWxkIGxpa2UgdG8NCisJCQkJaW50ZWdyYXRlIE9wZW5NZWV0aW5ncyBpbnRvLg0KKwkJCQk8YnIgLz4NCisJCQkJPGJyIC8+DQorCQkJCUl0IGFsc28gZGVwZW5kcyBvbiBhIG51bWJlciBvZiBmYWN0b3JzIG9mIHdoaWNoIE9wZW5NZWV0aW5ncyBpcw0KKwkJCQlpbXBvc3NpYmxlIHRvIHNldCB1cCBmb3IgeW91LCBmb3IgZXhhbXBsZSBzZXR0aW5nIHVwIHlvdXIgVm9JUA0KKwkJCQlzZXJ2ZXIgb3IgcHJvdmlkZSB5b3Ugd2l0aCBhIHJhbmdlIG9mIHRlbGVwaG9uZSBudW1iZXJzIHJlc2VydmVkIGZvcg0KKwkJCQljb25mZXJlbmNlIGNhbGxzIGluIHlvdXIgbmF0aW9uYWwgcGhvbmUgbmV0d29yay4NCisJCQkJU3VjaCBhbiBpbnRlZ3JhdGlvbg0KKwkJCQlwcm9qZWN0IGlzIGxpa2VseSB0byBiZWNvbWUgYSBjb25zdWx0aW5nIGpvYiBmb3IgYQ0KKwkJCQl0ZWxlY29tbXVuaWNhdGlvbnMgY29uc3VsdGFudC4NCisJCQkJPGJyIC8+DQorCQkJCTxiciAvPg0KKwkJCQlUbyBnZXQgaGVscCBvbiB0aGUgaW50ZWdyYXRpb24geW91IGNhbiBjb250YWN0IHRoZQ0KKwkJCQk8YSBocmVmPSJtYWlsLWxpc3RzLmh0bWwiPm1haWxpbmcgbGlzdHM8L2E+DQorCQkJCW9yIGZvciBleGFtcGxlIHNvbWVib2R5IGZyb20gdGhlIGxpc3Qgb2YNCisJCQkJPGEgaHJlZj0iY29tbWVyY2lhbC1zdXBwb3J0Lmh0bWwiPmNvbW1lcmNpYWwgc3VwcG9ydDwvYT4NCisJCQkJLg0KKyAgICAgICAgICAgICAgICA8YnIvPjxici8+DQorICAgICAgICAgICAgICAgIDxhIGhyZWY9InJlZDVzaXAtaW50ZWdyYXRpb25fMi4wLmh0bWwiPg0KKyAgICAgICAgICAgICAgICBJbnN0cnVjdGlvbiBob3ctdG8gc2V0IHVwIE9wZW5NZWV0aW5ncyBTSVAtVHJhbnNwb3J0IGludGVncmF0aW9uIGZvciBPcGVubWVldGluZ3MgMi4wDQorICAgICAgICAgICAgICAgIDwvYT4uPGJyLz4NCisgICAgICAgICAgICAgICAgPGEgaHJlZj0icmVkNXNpcC1pbnRlZ3JhdGlvbl8yLjEuaHRtbCI+DQorICAgICAgICAgICAgICAgIEluc3RydWN0aW9uIGhvdy10byBzZXQgdXAgT3Blbk1lZXRpbmdzIFNJUC1UcmFuc3BvcnQgaW50ZWdyYXRpb24gZm9yIE9wZW5tZWV0aW5ncyAyLjENCisgICAgICAgICAgICAgICAgPC9hPi48YnIvPg0KKwkJCTwvcD4NCisJCTwvc2VjdGlvbj4NCisNCisJPC9ib2R5Pg0KKw0KKzwvZG9jdW1lbnQ+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=